-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdata_widget.html
More file actions
27 lines (26 loc) · 632 KB
/
data_widget.html
File metadata and controls
27 lines (26 loc) · 632 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>datatables</title>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uIE9yLCBjYW4gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICJjb2RlIiBhbmQgImRhdGEiCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nCiAgLy8gICBvZiBKUyB0aGF0J3MgYW4gZXhwciB0aGF0IHlpZWxkcyBhIGZ1bmN0aW9uLCBhbmQgImRhdGEiIHNob3VsZCBiZQogIC8vICAgYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoZW4gdGhhdAogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLgogIC8vIEBwYXJhbSB0YXJnZXQgVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgInRoaXMiIGZvciBlYWNoIGZ1bmN0aW9uCiAgLy8gICBleGVjdXRpb24uCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlCiAgLy8gICBzYW1lIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byBhbGwgZnVuY3Rpb25zLikKICBmdW5jdGlvbiBldmFsQW5kUnVuKHRhc2tzLCB0YXJnZXQsIGFyZ3MpIHsKICAgIGlmICh0YXNrcykgewogICAgICBmb3JFYWNoKHRhc2tzLCBmdW5jdGlvbih0YXNrKSB7CiAgICAgICAgdmFyIHRoZXNlQXJncyA9IGFyZ3M7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIHRoZXNlQXJncyA9IHRoZXNlQXJncy5jb25jYXQoW3Rhc2suZGF0YV0pOwogICAgICAgICAgdGFzayA9IHRhc2suY29kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRhc2tGdW5jID0gZXZhbCgiKCIgKyB0YXNrICsgIikiKTsKICAgICAgICBpZiAodHlwZW9mKHRhc2tGdW5jKSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOwogICAgICAgIH0KICAgICAgICB0YXNrRnVuYy5hcHBseSh0YXJnZXQsIHRoZXNlQXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gaW5pdFNpemluZyhlbCkgewogICAgdmFyIHNpemluZyA9IHNpemluZ1BvbGljeShlbCk7CiAgICBpZiAoIXNpemluZykKICAgICAgcmV0dXJuOwoKICAgIHZhciBjZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbHdpZGdldF9jb250YWluZXIiKTsKICAgIGlmICghY2VsKQogICAgICByZXR1cm47CgogICAgaWYgKHR5cGVvZihzaXppbmcucGFkZGluZykgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjAiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmcgPSBwYWRkaW5nVG9Dc3ModW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZykpOwogICAgfQoKICAgIGlmIChzaXppbmcuZmlsbCkgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGlmIChjZWwpIHsKICAgICAgICBjZWwuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgICAgIHZhciBwYWQgPSB1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKTsKICAgICAgICBjZWwuc3R5bGUudG9wID0gcGFkLnRvcCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLnJpZ2h0ID0gcGFkLnJpZ2h0ICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUuYm90dG9tID0gcGFkLmJvdHRvbSArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmxlZnQgPSBwYWQubGVmdCArICJweCI7CiAgICAgICAgZWwuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICB9CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLm9mZnNldEhlaWdodDsgfQogICAgICB9OwoKICAgIH0gZWxzZSB7CiAgICAgIGVsLnN0eWxlLndpZHRoID0gcHgoc2l6aW5nLndpZHRoKTsKICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gcHgoc2l6aW5nLmhlaWdodCk7CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKICAgIH0KICB9CgogIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBtZXRob2RzCiAgdmFyIGRlZmF1bHRzID0gewogICAgZmluZDogZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgcmV0dXJuIHF1ZXJ5U2VsZWN0b3JBbGwoc2NvcGUsICIuIiArIHRoaXMubmFtZSk7CiAgICB9LAogICAgcmVuZGVyRXJyb3I6IGZ1bmN0aW9uKGVsLCBlcnIpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwoKICAgICAgdGhpcy5jbGVhckVycm9yKGVsKTsKCiAgICAgIC8vIEFkZCBhbGwgdGhlc2UgZXJyb3IgY2xhc3NlcywgYXMgU2hpbnkgZG9lcwogICAgICB2YXIgZXJyQ2xhc3MgPSAic2hpbnktb3V0cHV0LWVycm9yIjsKICAgICAgaWYgKGVyci50eXBlICE9PSBudWxsKSB7CiAgICAgICAgLy8gdXNlIHRoZSBjbGFzc2VzIG9mIHRoZSBlcnJvciBjb25kaXRpb24gYXMgQ1NTIGNsYXNzIG5hbWVzCiAgICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgIiArICQubWFwKGFzQXJyYXkoZXJyLnR5cGUpLCBmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgICByZXR1cm4gZXJyQ2xhc3MgKyAiLSIgKyB0eXBlOwogICAgICAgIH0pLmpvaW4oIiAiKTsKICAgICAgfQogICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiBodG1sd2lkZ2V0cy1lcnJvciI7CgogICAgICAvLyBJcyBlbCBpbmxpbmUgb3IgYmxvY2s/IElmIGlubGluZSBvciBpbmxpbmUtYmxvY2ssIGp1c3QgZGlzcGxheTpub25lIGl0CiAgICAgIC8vIGFuZCBhZGQgYW4gaW5saW5lIGVycm9yLgogICAgICB2YXIgZGlzcGxheSA9ICRlbC5jc3MoImRpc3BsYXkiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgZGlzcGxheSk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICAkZWwuaGlkZSgpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvclNwYW4gPSAkKCI8c3Bhbj4iKS5hZGRDbGFzcyhlcnJDbGFzcyk7CiAgICAgICAgICBlcnJvclNwYW4udGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JTcGFuKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIikgewogICAgICAgIC8vIElmIGJsb2NrLCBhZGQgYW4gZXJyb3IganVzdCBhZnRlciB0aGUgZWwsIHNldCB2aXNpYmlsaXR5Om5vbmUgb24gdGhlCiAgICAgICAgLy8gZWwsIGFuZCBwb3NpdGlvbiB0aGUgZXJyb3IgdG8gYmUgb24gdG9wIG9mIHRoZSBlbC4KICAgICAgICAvLyBNYXJrIGl0IHdpdGggYSB1bmlxdWUgSUQgYW5kIENTUyBjbGFzcyBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGxhdGVyLgogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yRGl2ID0gJCgiPGRpdj4iKS5hZGRDbGFzcyhlcnJDbGFzcykuY3NzKCJwb3NpdGlvbiIsICJhYnNvbHV0ZSIpCiAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgIC8vIHNldHRpbmcgd2lkdGggY2FuIHB1c2ggb3V0IHRoZSBwYWdlIHNpemUsIGZvcmNpbmcgb3RoZXJ3aXNlCiAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHNjcm9sbGJhcnMgdG8gYXBwZWFyIGFuZCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3IKICAgICAgICAgICAgLy8gdGhlIGVsZW1lbnQgdG8gc2hyaW5rOyBzbyB1c2UgbWF4LXdpZHRoIGluc3RlYWQKICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIGVycm9yRGl2LnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yRGl2KTsKCiAgICAgICAgICAvLyBSZWFsbHkgZHVtYiB3YXkgdG8ga2VlcCB0aGUgc2l6ZS9wb3NpdGlvbiBvZiB0aGUgZXJyb3IgaW4gc3luYyB3aXRoCiAgICAgICAgICAvLyB0aGUgcGFyZW50IGVsZW1lbnQgYXMgdGhlIHdpbmRvdyBpcyByZXNpemVkIG9yIHdoYXRldmVyLgogICAgICAgICAgdmFyIGludElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghZXJyb3JEaXZbMF0ucGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50SWQpOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlcnJvckRpdgogICAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGNsZWFyRXJyb3I6IGZ1bmN0aW9uKGVsKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgbnVsbCk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICBpZiAoZGlzcGxheSkKICAgICAgICAgICRlbC5jc3MoImRpc3BsYXkiLCBkaXNwbGF5KTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpewogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaW5oZXJpdCIpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0KICAgIH0sCiAgICBzaXppbmc6IHt9CiAgfTsKCiAgLy8gQ2FsbGVkIGJ5IHdpZGdldCBiaW5kaW5ncyB0byByZWdpc3RlciBhIG5ldyB0eXBlIG9mIHdpZGdldC4gVGhlIGRlZmluaXRpb24KICAvLyBvYmplY3QgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogIC8vIC0gbmFtZSAocmVxdWlyZWQpIC0gQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgYmluZGluZyBuYW1lLCB3aGljaCB3aWxsIGJlCiAgLy8gICB1c2VkIGJ5IGRlZmF1bHQgYXMgdGhlIENTUyBjbGFzc25hbWUgdG8gbG9vayBmb3IuCiAgLy8gLSBpbml0aWFsaXplIChvcHRpb25hbCkgLSBBIGZ1bmN0aW9uKGVsKSB0aGF0IHdpbGwgYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICB3aWRnZXQgZWxlbWVudDsgaWYgYSB2YWx1ZSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBwYXNzZWQgYXMgdGhlIHRoaXJkCiAgLy8gICB2YWx1ZSB0byByZW5kZXJWYWx1ZS4KICAvLyAtIHJlbmRlclZhbHVlIChyZXF1aXJlZCkgLSBBIGZ1bmN0aW9uKGVsLCBkYXRhLCBpbml0VmFsdWUpIHRoYXQgd2lsbCBiZQogIC8vICAgY2FsbGVkIHdpdGggZGF0YS4gU3RhdGljIGNvbnRleHRzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIGVsZW1lbnQ7IFNoaW55IGFwcHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBwZXIKICAvLyAgIGVsZW1lbnQsIGFzIHRoZSBkYXRhIGNoYW5nZXMuCiAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldCA9IGZ1bmN0aW9uKGRlZmluaXRpb24pIHsKICAgIGlmICghZGVmaW5pdGlvbi5uYW1lKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIG5hbWUiKTsKICAgIH0KICAgIGlmICghZGVmaW5pdGlvbi50eXBlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHR5cGUiKTsKICAgIH0KICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgb3V0cHV0IHdpZGdldHMKICAgIGlmIChkZWZpbml0aW9uLnR5cGUgIT09ICJvdXRwdXQiKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHdpZGdldCB0eXBlICciICsgZGVmaW5pdGlvbi50eXBlICsgIiciKTsKICAgIH0KICAgIC8vIFRPRE86IFZlcmlmeSB0aGF0IC5uYW1lIGlzIGEgdmFsaWQgQ1NTIGNsYXNzbmFtZQoKICAgIC8vIFN1cHBvcnQgbmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb25zLiBPbGQtc3R5bGUgY2xhc3MtYm91bmQKICAgIC8vIGRlZmluaXRpb25zIGhhdmUgb25lIHdpZGdldCAib2JqZWN0IiBwZXIgd2lkZ2V0IHBlciB0eXBlL2NsYXNzIG9mCiAgICAvLyB3aWRnZXQ7IHRoZSByZW5kZXJWYWx1ZSBhbmQgcmVzaXplIG1ldGhvZHMgb24gc3VjaCB3aWRnZXQgb2JqZWN0cwogICAgLy8gdGFrZSBlbCBhbmQgaW5zdGFuY2UgYXJndW1lbnRzLCBiZWNhdXNlIHRoZSB3aWRnZXQgb2JqZWN0IGNhbid0CiAgICAvLyBzdG9yZSB0aGVtLiBOZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbnMgaGF2ZSBvbmUgd2lkZ2V0CiAgICAvLyBvYmplY3QgcGVyIHdpZGdldCBpbnN0YW5jZTsgdGhlIGRlZmluaXRpb24gdGhhdCdzIHBhc3NlZCBpbiBkb2Vzbid0CiAgICAvLyBwcm92aWRlIHJlbmRlclZhbHVlIG9yIHJlc2l6ZSBtZXRob2RzIGF0IGFsbCwganVzdCB0aGUgc2luZ2xlIG1ldGhvZAogICAgLy8gICBmYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KQogICAgLy8gd2hpY2ggcmV0dXJucyBhbiBvYmplY3QgdGhhdCBoYXMgcmVuZGVyVmFsdWUoeCkgYW5kIHJlc2l6ZSh3LCBoKS4KICAgIC8vIFRoaXMgZW5hYmxlcyBhIGZhciBtb3JlIG5hdHVyYWwgcHJvZ3JhbW1pbmcgc3R5bGUgZm9yIHRoZSB3aWRnZXQKICAgIC8vIGF1dGhvciwgd2hvIGNhbiBzdG9yZSBwZXItaW5zdGFuY2Ugc3RhdGUgdXNpbmcgZWl0aGVyIE9PLXN0eWxlCiAgICAvLyBpbnN0YW5jZSBmaWVsZHMgb3IgZnVuY3Rpb25hbC1zdHlsZSBjbG9zdXJlIHZhcmlhYmxlcyAoSSBndWVzcyB0aGlzCiAgICAvLyBpcyBpbiBjb250cmFzdCB0byB3aGF0IGNhbiBvbmx5IGJlIGNhbGxlZCBDLXN0eWxlIHBzZXVkby1PTyB3aGljaCBpcwogICAgLy8gd2hhdCB3ZSByZXF1aXJlZCBiZWZvcmUpLgogICAgaWYgKGRlZmluaXRpb24uZmFjdG9yeSkgewogICAgICBkZWZpbml0aW9uID0gY3JlYXRlTGVnYWN5RGVmaW5pdGlvbkFkYXB0ZXIoZGVmaW5pdGlvbik7CiAgICB9CgogICAgaWYgKCFkZWZpbml0aW9uLnJlbmRlclZhbHVlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHJlbmRlclZhbHVlIGZ1bmN0aW9uIik7CiAgICB9CgogICAgLy8gRm9yIHN0YXRpYyByZW5kZXJpbmcgKG5vbi1TaGlueSksIHVzZSBhIHNpbXBsZSB3aWRnZXQgcmVnaXN0cmF0aW9uCiAgICAvLyBzY2hlbWUuIFdlIGFsc28gdXNlIHRoaXMgc2NoZW1lIGZvciBTaGlueSBhcHBzL2RvY3VtZW50cyB0aGF0IGFsc28KICAgIC8vIGNvbnRhaW4gc3RhdGljIHdpZGdldHMuCiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgLy8gTWVyZ2UgZGVmYXVsdHMgaW50byB0aGUgZGVmaW5pdGlvbjsgZG9uJ3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uLgogICAgdmFyIHN0YXRpY0JpbmRpbmcgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKICAgIG92ZXJyaWRlTWV0aG9kKHN0YXRpY0JpbmRpbmcsICJmaW5kIiwgZnVuY3Rpb24oc3VwZXJmdW5jKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gc3VwZXJmdW5jKHNjb3BlKTsKICAgICAgICAvLyBGaWx0ZXIgb3V0IFNoaW55IG91dHB1dHMsIHdlIG9ubHkgd2FudCB0aGUgc3RhdGljIGtpbmQKICAgICAgICByZXR1cm4gZmlsdGVyQnlDbGFzcyhyZXN1bHRzLCAiaHRtbC13aWRnZXQtb3V0cHV0IiwgZmFsc2UpOwogICAgICB9OwogICAgfSk7CiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cy5wdXNoKHN0YXRpY0JpbmRpbmcpOwoKICAgIGlmIChzaGlueU1vZGUpIHsKICAgICAgLy8gU2hpbnkgaXMgcnVubmluZy4gUmVnaXN0ZXIgdGhlIGRlZmluaXRpb24gd2l0aCBhbiBvdXRwdXQgYmluZGluZy4KICAgICAgLy8gVGhlIGRlZmluaXRpb24gaXRzZWxmIHdpbGwgbm90IGJlIHRoZSBvdXRwdXQgYmluZGluZywgaW5zdGVhZAogICAgICAvLyB3ZSB3aWxsIG1ha2UgYW4gb3V0cHV0IGJpbmRpbmcgb2JqZWN0IHRoYXQgZGVsZWdhdGVzIHRvIHRoZQogICAgICAvLyBkZWZpbml0aW9uLiBUaGlzIGlzIGJlY2F1c2Ugd2UgZm9vbGlzaGx5IHVzZWQgdGhlIHNhbWUgbWV0aG9kCiAgICAgIC8vIG5hbWUgKHJlbmRlclZhbHVlKSBmb3IgaHRtbHdpZGdldHMgZGVmaW5pdGlvbiBhbmQgU2hpbnkgYmluZGluZ3MKICAgICAgLy8gYnV0IHRoZXkgYWN0dWFsbHkgaGF2ZSBxdWl0ZSBkaWZmZXJlbnQgc2VtYW50aWNzICh0aGUgU2hpbnkKICAgICAgLy8gYmluZGluZ3MgcmVjZWl2ZSBkYXRhIHRoYXQgaW5jbHVkZXMgbG90cyBvZiBtZXRhZGF0YSB0aGF0IGl0CiAgICAgIC8vIHN0cmlwcyBvZmYgYmVmb3JlIGNhbGxpbmcgaHRtbHdpZGdldHMgcmVuZGVyVmFsdWUpLiBXZSBjYW4ndAogICAgICAvLyBqdXN0IGlnbm9yZSB0aGUgZGlmZmVyZW5jZSBiZWNhdXNlIGluIHNvbWUgd2lkZ2V0cyBpdCdzIGhlbHBmdWwKICAgICAgLy8gdG8gY2FsbCB0aGlzLnJlbmRlclZhbHVlKCkgZnJvbSBpbnNpZGUgb2YgcmVzaXplKCksIGFuZCBpZgogICAgICAvLyB3ZSdyZSBub3QgZGVsZWdhdGluZywgdGhlbiB0aGF0IGNhbGwgd2lsbCBnbyB0byB0aGUgU2hpbnkKICAgICAgLy8gdmVyc2lvbiBpbnN0ZWFkIG9mIHRoZSBodG1sd2lkZ2V0cyB2ZXJzaW9uLgoKICAgICAgLy8gTWVyZ2UgZGVmYXVsdHMgd2l0aCBkZWZpbml0aW9uLCB3aXRob3V0IG11dGF0aW5nIGVpdGhlci4KICAgICAgdmFyIGJpbmRpbmdEZWYgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKCiAgICAgIC8vIFRoaXMgb2JqZWN0IHdpbGwgYmUgb3VyIGFjdHVhbCBTaGlueSBiaW5kaW5nLgogICAgICB2YXIgc2hpbnlCaW5kaW5nID0gbmV3IFNoaW55Lk91dHB1dEJpbmRpbmcoKTsKCiAgICAgIC8vIFdpdGggYSBmZXcgZXhjZXB0aW9ucywgd2UnbGwgd2FudCB0byBzaW1wbHkgdXNlIHRoZSBiaW5kaW5nRGVmJ3MKICAgICAgLy8gdmVyc2lvbiBvZiBtZXRob2RzIGlmIHRoZXkgYXJlIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwogICAgICAvLyBTaGlueSdzIGRlZmF1bHRzLiBOT1RFOiBJZiBTaGlueSdzIG91dHB1dCBiaW5kaW5ncyBnYWluIGFkZGl0aW9uYWwKICAgICAgLy8gbWV0aG9kcyBpbiB0aGUgZnV0dXJlLCBhbmQgd2Ugd2FudCB0aGVtIHRvIGJlIG92ZXJyaWRlYWJsZSBieQogICAgICAvLyBIVE1MV2lkZ2V0IGJpbmRpbmcgZGVmaW5pdGlvbnMsIHRoZW4gd2UnbGwgbmVlZCB0byBhZGQgdGhlbSB0byB0aGlzCiAgICAgIC8vIGxpc3QuCiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgImdldElkIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgIm9uVmFsdWVDaGFuZ2UiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgInJlbmRlckVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgImNsZWFyRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAic2hvd1Byb2dyZXNzIik7CgogICAgICAvLyBUaGUgZmluZCwgcmVuZGVyVmFsdWUsIGFuZCByZXNpemUgYXJlIGhhbmRsZWQgZGlmZmVyZW50bHksIGJlY2F1c2Ugd2UKICAgICAgLy8gd2FudCB0byBhY3R1YWxseSBkZWNvcmF0ZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGJpbmRpbmdEZWYgbWV0aG9kcy4KCiAgICAgIHNoaW55QmluZGluZy5maW5kID0gZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgICB2YXIgcmVzdWx0cyA9IGJpbmRpbmdEZWYuZmluZChzY29wZSk7CgogICAgICAgIC8vIE9ubHkgcmV0dXJuIGVsZW1lbnRzIHRoYXQgYXJlIFNoaW55IG91dHB1dHMsIG5vdCBzdGF0aWMgb25lcwogICAgICAgIHZhciBkeW5hbWljUmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKCIuaHRtbC13aWRnZXQtb3V0cHV0Iik7CgogICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3aGF0ZXZlciBjYXVzZWQgU2hpbnkgdG8gdGhpbmsgdGhlcmUgbWlnaHQgYmUKICAgICAgICAvLyBuZXcgZHluYW1pYyBvdXRwdXRzLCBhbHNvIGNhdXNlZCB0aGVyZSB0byBiZSBuZXcgc3RhdGljIG91dHB1dHMuCiAgICAgICAgLy8gU2luY2UgdGhlcmUgbWlnaHQgYmUgbG90cyBvZiBkaWZmZXJlbnQgaHRtbHdpZGdldHMgYmluZGluZ3MsIHdlCiAgICAgICAgLy8gc2NoZWR1bGUgZXhlY3V0aW9uIGZvciBsYXRlci0tbm8gbmVlZCB0byBzdGF0aWNSZW5kZXIgbXVsdGlwbGUKICAgICAgICAvLyB0aW1lcy4KICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggIT09IGR5bmFtaWNSZXN1bHRzLmxlbmd0aCkKICAgICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyKCk7CgogICAgICAgIHJldHVybiBkeW5hbWljUmVzdWx0czsKICAgICAgfTsKCiAgICAgIC8vIFdyYXAgcmVuZGVyVmFsdWUgdG8gaGFuZGxlIGluaXRpYWxpemF0aW9uLCB3aGljaCB1bmZvcnR1bmF0ZWx5IGlzbid0CiAgICAgIC8vIHN1cHBvcnRlZCBuYXRpdmVseSBieSBTaGlueSBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcuCgogICAgICBzaGlueUJpbmRpbmcucmVuZGVyVmFsdWUgPSBmdW5jdGlvbihlbCwgZGF0YSkgewogICAgICAgIFNoaW55LnJlbmRlckRlcGVuZGVuY2llcyhkYXRhLmRlcHMpOwogICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzCiAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgZGF0YS5ldmFscyAmJiBpIDwgZGF0YS5ldmFscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1tpXSk7CiAgICAgICAgfQogICAgICAgIGlmICghYmluZGluZ0RlZi5yZW5kZXJPbk51bGxWYWx1ZSkgewogICAgICAgICAgaWYgKGRhdGEueCA9PT0gbnVsbCkgewogICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaW5oZXJpdCI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICBpbml0U2l6aW5nKGVsKTsKCiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIiwgdHJ1ZSk7CiAgICAgICAgICBpZiAoYmluZGluZ0RlZi5pbml0aWFsaXplKSB7CiAgICAgICAgICAgIHZhciByZXN1bHQgPSBiaW5kaW5nRGVmLmluaXRpYWxpemUoZWwsIGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiLCByZXN1bHQpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBiaW5kaW5nRGVmLnJlbmRlclZhbHVlKGVsLCBkYXRhLngsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSk7CiAgICAgICAgZXZhbEFuZFJ1bihkYXRhLmpzSG9va3MucmVuZGVyLCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiksIFtlbCwgZGF0YS54XSk7CiAgICAgIH07CgogICAgICAvLyBPbmx5IG92ZXJyaWRlIHJlc2l6ZSBpZiBiaW5kaW5nRGVmIGltcGxlbWVudHMgaXQKICAgICAgaWYgKGJpbmRpbmdEZWYucmVzaXplKSB7CiAgICAgICAgc2hpbnlCaW5kaW5nLnJlc2l6ZSA9IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgICAgICAvLyBTaGlueSBjYW4gY2FsbCByZXNpemUgYmVmb3JlIGluaXRpYWxpemUvcmVuZGVyVmFsdWUgaGF2ZSBiZWVuCiAgICAgICAgICAvLyBjYWxsZWQsIHdoaWNoIGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3Igd2lkZ2V0cy4KICAgICAgICAgIGlmIChlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIikpIHsKICAgICAgICAgICAgYmluZGluZ0RlZi5yZXNpemUoZWwsIHdpZHRoLCBoZWlnaHQsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSk7CiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgfQoKICAgICAgU2hpbnkub3V0cHV0QmluZGluZ3MucmVnaXN0ZXIoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLm5hbWUpOwogICAgfQogIH07CgogIHZhciBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogIGZ1bmN0aW9uIHNjaGVkdWxlU3RhdGljUmVuZGVyKCkgewogICAgaWYgKCFzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQpIHsKICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgICAgfSwgMSk7CiAgICB9CiAgfQoKICAvLyBSZW5kZXIgc3RhdGljIHdpZGdldHMgYWZ0ZXIgdGhlIGRvY3VtZW50IGZpbmlzaGVzIGxvYWRpbmcKICAvLyBTdGF0aWNhbGx5IHJlbmRlciBhbGwgZWxlbWVudHMgdGhhdCBhcmUgb2YgdGhpcyB3aWRnZXQncyBjbGFzcwogIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgIHZhciBiaW5kaW5ncyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgZm9yRWFjaChiaW5kaW5ncywgZnVuY3Rpb24oYmluZGluZykgewogICAgICB2YXIgbWF0Y2hlcyA9IGJpbmRpbmcuZmluZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwogICAgICBmb3JFYWNoKG1hdGNoZXMsIGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgdmFyIHNpemVPYmogPSBpbml0U2l6aW5nKGVsLCBiaW5kaW5nKTsKCiAgICAgICAgaWYgKGhhc0NsYXNzKGVsLCAiaHRtbC13aWRnZXQtc3RhdGljLWJvdW5kIikpCiAgICAgICAgICByZXR1cm47CiAgICAgICAgZWwuY2xhc3NOYW1lID0gZWwuY2xhc3NOYW1lICsgIiBodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiOwoKICAgICAgICB2YXIgaW5pdFJlc3VsdDsKICAgICAgICBpZiAoYmluZGluZy5pbml0aWFsaXplKSB7CiAgICAgICAgICBpbml0UmVzdWx0ID0gYmluZGluZy5pbml0aWFsaXplKGVsLAogICAgICAgICAgICBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0CiAgICAgICAgICApOwogICAgICAgICAgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIsIGluaXRSZXN1bHQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGJpbmRpbmcucmVzaXplKSB7CiAgICAgICAgICB2YXIgbGFzdFNpemUgPSB7fTsKICAgICAgICAgIHZhciByZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgc2l6ZSA9IHsKICAgICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgaDogc2l6ZU9iaiA/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSBsYXN0U2l6ZS53ICYmIHNpemUuaCA9PT0gbGFzdFNpemUuaCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGxhc3RTaXplID0gc2l6ZTsKICAgICAgICAgICAgYmluZGluZy5yZXNpemUoZWwsIHNpemUudywgc2l6ZS5oLCBpbml0UmVzdWx0KTsKICAgICAgICAgIH07CgogICAgICAgICAgb24od2luZG93LCAicmVzaXplIiwgcmVzaXplSGFuZGxlcik7CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIHJ1bm5pbmcgaW4gYSBTaGlueQogICAgICAgICAgLy8gYXBwLCBidXQgdGhlIHdpZGdldCBpdHNlbGYgaXMgbm90IGEgU2hpbnkgb3V0cHV0LCBidXQKICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzCiAgICAgICAgICAvLyBhbiBybWFya2Rvd24gZG9jdW1lbnQgdGhhdCBoYXMgcnVudGltZTpzaGlueSBhbmQgd2lkZ2V0CiAgICAgICAgICAvLyB0aGF0IGlzbid0IGluIGEgcmVuZGVyIGZ1bmN0aW9uLiBTaGlueSBvbmx5IGtub3dzIHRvCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMKICAgICAgICAgIC8vIHdpZGdldHMsIHNvIHdlIGRvIGl0IG91cnNlbHZlcy4KICAgICAgICAgIGlmICh3aW5kb3cualF1ZXJ5KSB7CiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKAogICAgICAgICAgICAgICJzaG93bi5odG1sd2lkZ2V0cyBzaG93bi5icy50YWIuaHRtbHdpZGdldHMgc2hvd24uYnMuY29sbGFwc2UuaHRtbHdpZGdldHMiLAogICAgICAgICAgICAgIHJlc2l6ZUhhbmRsZXIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oCiAgICAgICAgICAgICAgImhpZGRlbi5odG1sd2lkZ2V0cyBoaWRkZW4uYnMudGFiLmh0bWx3aWRnZXRzIGhpZGRlbi5icy5jb2xsYXBzZS5odG1sd2lkZ2V0cyIsCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcgogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgc3BlY2lmaWMgY2FzZSBvZiBpb3NsaWRlcywgd2hpY2gKICAgICAgICAgIC8vIGZsaXBzIHNsaWRlcyBiZXR3ZWVuIGRpc3BsYXk6bm9uZSBhbmQgZGlzcGxheTpibG9jay4KICAgICAgICAgIC8vIElkZWFsbHkgd2Ugd291bGQgbm90IGhhdmUgdG8gaGF2ZSBpb3NsaWRlLXNwZWNpZmljIGNvZGUKICAgICAgICAgIC8vIGhlcmUsIGJ1dCByYXRoZXIgaGF2ZSBpb3NsaWRlcyByYWlzZSBhIGdlbmVyaWMgZXZlbnQsCiAgICAgICAgICAvLyBidXQgdGhlIHJtYXJrZG93biBwYWNrYWdlIGp1c3Qgd2VudCB0byBDUkFOIHNvIHRoZQogICAgICAgICAgLy8gd2luZG93IHRvIGdldHRpbmcgdGhhdCBmaXhlZCBtYXkgYmUgbG9uZy4KICAgICAgICAgIGlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgICAgICAvLyBJdCdzIE9LIHRvIGxpbWl0IHRoaXMgdG8gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIKICAgICAgICAgICAgLy8gYnJvd3NlcnMgYmVjYXVzZSBpb3NsaWRlcyBpdHNlbGYgb25seSBzdXBwb3J0cwogICAgICAgICAgICAvLyBzdWNoIGJyb3dzZXJzLgogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlZW50ZXIiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgICAgb24oZG9jdW1lbnQsICJzbGlkZWxlYXZlIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc2NyaXB0RGF0YSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2pzb24nXSIpOwogICAgICAgIGlmIChzY3JpcHREYXRhKSB7CiAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc2NyaXB0RGF0YS50ZXh0Q29udGVudCB8fCBzY3JpcHREYXRhLnRleHQpOwogICAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMKICAgICAgICAgIGlmICghKGRhdGEuZXZhbHMgaW5zdGFuY2VvZiBBcnJheSkpIGRhdGEuZXZhbHMgPSBbZGF0YS5ldmFsc107CiAgICAgICAgICBmb3IgKHZhciBrID0gMDsgZGF0YS5ldmFscyAmJiBrIDwgZGF0YS5ldmFscy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2tdKTsKICAgICAgICAgIH0KICAgICAgICAgIGJpbmRpbmcucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgaW5pdFJlc3VsdCk7CiAgICAgICAgICBldmFsQW5kUnVuKGRhdGEuanNIb29rcy5yZW5kZXIsIGluaXRSZXN1bHQsIFtlbCwgZGF0YS54XSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0pOwoKICAgIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpOwogIH0KCiAgLy8gV2FpdCB1bnRpbCBhZnRlciB0aGUgZG9jdW1lbnQgaGFzIGxvYWRlZCB0byByZW5kZXIgdGhlIHdpZGdldHMuCiAgaWYgKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGFyZ3VtZW50cy5jYWxsZWUsIGZhbHNlKTsKICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgfSwgZmFsc2UpOwogIH0gZWxzZSBpZiAoZG9jdW1lbnQuYXR0YWNoRXZlbnQpIHsKICAgIGRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBmdW5jdGlvbigpIHsKICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJjb21wbGV0ZSIpIHsKICAgICAgICBkb2N1bWVudC5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgYXJndW1lbnRzLmNhbGxlZSk7CiAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgICB9CiAgICB9KTsKICB9CgoKICB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0QXR0YWNobWVudFVybCA9IGZ1bmN0aW9uKGRlcG5hbWUsIGtleSkgewogICAgLy8gSWYgbm8ga2V5LCBkZWZhdWx0IHRvIHRoZSBmaXJzdCBpdGVtCiAgICBpZiAodHlwZW9mKGtleSkgPT09ICJ1bmRlZmluZWQiKQogICAgICBrZXkgPSAxOwoKICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGVwbmFtZSArICItIiArIGtleSArICItYXR0YWNobWVudCIpOwogICAgaWYgKCFsaW5rKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiQXR0YWNobWVudCAiICsgZGVwbmFtZSArICIvIiArIGtleSArICIgbm90IGZvdW5kIGluIGRvY3VtZW50Iik7CiAgICB9CiAgICByZXR1cm4gbGluay5nZXRBdHRyaWJ1dGUoImhyZWYiKTsKICB9OwoKICB3aW5kb3cuSFRNTFdpZGdldHMuZGF0YWZyYW1lVG9EMyA9IGZ1bmN0aW9uKGRmKSB7CiAgICB2YXIgbmFtZXMgPSBbXTsKICAgIHZhciBsZW5ndGg7CiAgICBmb3IgKHZhciBuYW1lIGluIGRmKSB7CiAgICAgICAgaWYgKGRmLmhhc093blByb3BlcnR5KG5hbWUpKQogICAgICAgICAgICBuYW1lcy5wdXNoKG5hbWUpOwogICAgICAgIGlmICh0eXBlb2YoZGZbbmFtZV0pICE9PSAib2JqZWN0IiB8fCB0eXBlb2YoZGZbbmFtZV0ubGVuZ3RoKSA9PT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIik7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YobGVuZ3RoKSAhPT0gInVuZGVmaW5lZCIgJiYgbGVuZ3RoICE9PSBkZltuYW1lXS5sZW5ndGgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCIpOwogICAgICAgIH0KICAgICAgICBsZW5ndGggPSBkZltuYW1lXS5sZW5ndGg7CiAgICB9CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdmFyIGl0ZW07CiAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCBsZW5ndGg7IHJvdysrKSB7CiAgICAgICAgaXRlbSA9IHt9OwogICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG5hbWVzLmxlbmd0aDsgY29sKyspIHsKICAgICAgICAgICAgaXRlbVtuYW1lc1tjb2xdXSA9IGRmW25hbWVzW2NvbF1dW3Jvd107CiAgICAgICAgfQogICAgICAgIHJlc3VsdHMucHVzaChpdGVtKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy50cmFuc3Bvc2VBcnJheTJEID0gZnVuY3Rpb24oYXJyYXkpIHsKICAgICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFycmF5OwogICAgICB2YXIgbmV3QXJyYXkgPSBhcnJheVswXS5tYXAoZnVuY3Rpb24oY29sLCBpKSB7CiAgICAgICAgICByZXR1cm4gYXJyYXkubWFwKGZ1bmN0aW9uKHJvdykgewogICAgICAgICAgICAgIHJldHVybiByb3dbaV0KICAgICAgICAgIH0pCiAgICAgIH0pOwogICAgICByZXR1cm4gbmV3QXJyYXk7CiAgfTsKICAvLyBTcGxpdCB2YWx1ZSBhdCBzcGxpdENoYXIsIGJ1dCBhbGxvdyBzcGxpdENoYXIgdG8gYmUgZXNjYXBlZAogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcgogIC8vIHdpbGwgYmUgaW5jbHVkZWQgYXMgdXN1YWwgKGluY2x1ZGluZyBlc2NhcGVDaGFyIGl0c2VsZikuCiAgZnVuY3Rpb24gc3BsaXRXaXRoRXNjYXBlKHZhbHVlLCBzcGxpdENoYXIsIGVzY2FwZUNoYXIpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgdmFyIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsKICAgICAgaWYgKCFlc2NhcGVNb2RlKSB7CiAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT09IHNwbGl0Q2hhcikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgICAgICAgY3VycmVudFJlc3VsdCA9ICIiOwogICAgICAgIH0gZWxzZSBpZiAodmFsdWVbcG9zXSA9PT0gZXNjYXBlQ2hhcikgewogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7CiAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KICAvLyBGdW5jdGlvbiBhdXRob3JlZCBieSBZaWh1aS9KSiBBbGxhaXJlCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7CiAgICB2YXIgcGFydHMgPSBzcGxpdFdpdGhFc2NhcGUobWVtYmVyLCAnLicsICdcXCcpOwogICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsKICAgICAgLy8gcGFydCBtYXkgYmUgYSBjaGFyYWN0ZXIgb3IgJ251bWVyaWMnIG1lbWJlciBuYW1lCiAgICAgIGlmIChvICE9PSBudWxsICYmIHR5cGVvZiBvID09PSAib2JqZWN0IiAmJiBwYXJ0IGluIG8pIHsKICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlCiAgICAgICAgICBpZiAodHlwZW9mIG9bcGFydF0gPT09ICJzdHJpbmciKQogICAgICAgICAgICBvW3BhcnRdID0gZXZhbCgiKCIgKyBvW3BhcnRdICsgIikiKTsKICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QKICAgICAgICAgIG8gPSBvW3BhcnRdOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIC8vIFJldHJpZXZlIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YgYW4KICAvLyBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50LCBvciBudWxsIGlmIG5vbmUuCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlID0gZnVuY3Rpb24oZWwpIHsKICAgIHJldHVybiBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0Iik7CiAgfTsKCiAgLy8gRmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHNjb3BlIHRoYXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IsCiAgLy8gYW5kIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2UgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZgogIC8vIGFuIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoYXQgZWxlbWVudCwgaWYgYW55LiBJZiBubyBlbGVtZW50IG1hdGNoZXMgdGhlCiAgLy8gc2VsZWN0b3IsIG9yIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGhhcyBubyBIVE1MV2lkZ2V0CiAgLy8gaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGl0LCB0aGVuIG51bGwgaXMgcmV0dXJuZWQuCiAgLy8KICAvLyBUaGUgc2NvcGUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB3aW5kb3cuZG9jdW1lbnQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmZpbmQgPSBmdW5jdGlvbihzY29wZSwgc2VsZWN0b3IpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgc2VsZWN0b3IgPSBzY29wZTsKICAgICAgc2NvcGUgPSBkb2N1bWVudDsKICAgIH0KCiAgICB2YXIgZWwgPSBzY29wZS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKICAgIGlmIChlbCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2UoZWwpOwogICAgfQogIH07CgogIC8vIEZpbmRzIGFsbCBlbGVtZW50cyBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IsIGFuZAogIC8vIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2VzIChpLmUuIHRoZSByZXR1cm4gdmFsdWVzIG9mCiAgLy8gYW4gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnRzLCBpbiBhbiBhcnJheS4gSWYgZWxlbWVudHMgdGhhdAogIC8vIG1hdGNoIHRoZSBzZWxlY3RvciBkb24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgSFRNTFdpZGdldAogIC8vIGluc3RhbmNlLCB0aGUgcmV0dXJuZWQgYXJyYXkgd2lsbCBjb250YWluIG51bGxzLgogIC8vCiAgLy8gVGhlIHNjb3BlIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gd2luZG93LmRvY3VtZW50LgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kQWxsID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHNlbGVjdG9yID0gc2NvcGU7CiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7CiAgICB9CgogICAgdmFyIG5vZGVzID0gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewogICAgICByZXN1bHRzLnB1c2god2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlKG5vZGVzW2ldKSk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9OwoKICB2YXIgcG9zdFJlbmRlckhhbmRsZXJzID0gW107CiAgZnVuY3Rpb24gaW52b2tlUG9zdFJlbmRlckhhbmRsZXJzKCkgewogICAgd2hpbGUgKHBvc3RSZW5kZXJIYW5kbGVycy5sZW5ndGgpIHsKICAgICAgdmFyIGhhbmRsZXIgPSBwb3N0UmVuZGVySGFuZGxlcnMuc2hpZnQoKTsKICAgICAgaWYgKGhhbmRsZXIpIHsKICAgICAgICBoYW5kbGVyKCk7CiAgICAgIH0KICAgIH0KICB9CgogIC8vIFJlZ2lzdGVyIHRoZSBnaXZlbiBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIGFmdGVyIHRoZQogIC8vIG5leHQgdGltZSBzdGF0aWMgd2lkZ2V0cyBhcmUgcmVuZGVyZWQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmFkZFBvc3RSZW5kZXJIYW5kbGVyID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIHBvc3RSZW5kZXJIYW5kbGVycy5wdXNoKGNhbGxiYWNrKTsKICB9OwoKICAvLyBUYWtlcyBhIG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9uLCBhbmQgcmV0dXJucyBhbgogIC8vIG9sZC1zdHlsZSBjbGFzcy1ib3VuZCBkZWZpbml0aW9uLiBUaGlzIHNhdmVzIHVzIGZyb20gaGF2aW5nCiAgLy8gdG8gcmV3cml0ZSBhbGwgdGhlIGxvZ2ljIGluIHRoaXMgZmlsZSB0byBhY2NvbW9kYXRlIGJvdGgKICAvLyB0eXBlcyBvZiBkZWZpbml0aW9ucy4KICBmdW5jdGlvbiBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZuKSB7CiAgICB2YXIgcmVzdWx0ID0gewogICAgICBuYW1lOiBkZWZuLm5hbWUsCiAgICAgIHR5cGU6IGRlZm4udHlwZSwKICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICByZXR1cm4gZGVmbi5mYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgfSwKICAgICAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKGVsLCB4LCBpbnN0YW5jZSkgewogICAgICAgIHJldHVybiBpbnN0YW5jZS5yZW5kZXJWYWx1ZSh4KTsKICAgICAgfSwKICAgICAgcmVzaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCwgaW5zdGFuY2UpIHsKICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVzaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICB9CiAgICB9OwoKICAgIGlmIChkZWZuLmZpbmQpCiAgICAgIHJlc3VsdC5maW5kID0gZGVmbi5maW5kOwogICAgaWYgKGRlZm4ucmVuZGVyRXJyb3IpCiAgICAgIHJlc3VsdC5yZW5kZXJFcnJvciA9IGRlZm4ucmVuZGVyRXJyb3I7CiAgICBpZiAoZGVmbi5jbGVhckVycm9yKQogICAgICByZXN1bHQuY2xlYXJFcnJvciA9IGRlZm4uY2xlYXJFcnJvcjsKCiAgICByZXR1cm4gcmVzdWx0OwogIH0KfSkoKTsKCg=="></script>
<script src="data:application/x-javascript;base64,LyohIGpRdWVyeSB2MS4xMi40IHwgKGMpIGpRdWVyeSBGb3VuZGF0aW9uIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbihhLGIpeyJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWEuZG9jdW1lbnQ/YihhLCEwKTpmdW5jdGlvbihhKXtpZighYS5kb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTtyZXR1cm4gYihhKX06YihhKX0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMsZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkPWEuZG9jdW1lbnQsZT1jLnNsaWNlLGY9Yy5jb25jYXQsZz1jLnB1c2gsaD1jLmluZGV4T2YsaT17fSxqPWkudG9TdHJpbmcsaz1pLmhhc093blByb3BlcnR5LGw9e30sbT0iMS4xMi40IixuPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBuLmZuLmluaXQoYSxiKX0sbz0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2cscD0vXi1tcy0vLHE9Ly0oW1xkYS16XSkvZ2kscj1mdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O24uZm49bi5wcm90b3R5cGU9e2pxdWVyeTptLGNvbnN0cnVjdG9yOm4sc2VsZWN0b3I6IiIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT8wPmE/dGhpc1thK3RoaXMubGVuZ3RoXTp0aGlzW2FdOmUuY2FsbCh0aGlzKX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPW4ubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBiLnByZXZPYmplY3Q9dGhpcyxiLmNvbnRleHQ9dGhpcy5jb250ZXh0LGJ9LGVhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZWFjaCh0aGlzLGEpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4ubWFwKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxlcTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmxlbmd0aCxjPSthKygwPmE/YjowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYz49MCYmYj5jP1t0aGlzW2NdXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDpnLHNvcnQ6Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sbi5leHRlbmQ9bi5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09dHlwZW9mIGd8fG4uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5oO2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtkXSxnIT09YyYmKGomJmMmJihuLmlzUGxhaW5PYmplY3QoYyl8fChiPW4uaXNBcnJheShjKSkpPyhiPyhiPSExLGY9YSYmbi5pc0FycmF5KGEpP2E6W10pOmY9YSYmbi5pc1BsYWluT2JqZWN0KGEpP2E6e30sZ1tkXT1uLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30sbi5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKG0rTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PW4udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09bi50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXt2YXIgYj1hJiZhLnRvU3RyaW5nKCk7cmV0dXJuIW4uaXNBcnJheShhKSYmYi1wYXJzZUZsb2F0KGIpKzE+PTB9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGI7Zm9yKGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtpZighYXx8Im9iamVjdCIhPT1uLnR5cGUoYSl8fGEubm9kZVR5cGV8fG4uaXNXaW5kb3coYSkpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFrLmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIWsuY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMpe3JldHVybiExfWlmKCFsLm93bkZpcnN0KWZvcihiIGluIGEpcmV0dXJuIGsuY2FsbChhLGIpO2ZvcihiIGluIGEpO3JldHVybiB2b2lkIDA9PT1ifHxrLmNhbGwoYSxiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9hKyIiOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE/aVtqLmNhbGwoYSldfHwib2JqZWN0Ijp0eXBlb2YgYX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZuLnRyaW0oYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UocCwibXMtIikucmVwbGFjZShxLHIpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTA7aWYocyhhKSl7Zm9yKGM9YS5sZW5ndGg7Yz5kO2QrKylpZihiLmNhbGwoYVtkXSxkLGFbZF0pPT09ITEpYnJlYWt9ZWxzZSBmb3IoZCBpbiBhKWlmKGIuY2FsbChhW2RdLGQsYVtkXSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShvLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEmJihzKE9iamVjdChhKSk/bi5tZXJnZShjLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6Zy5jYWxsKGMsYSkpLGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGIpe2lmKGgpcmV0dXJuIGguY2FsbChiLGEsYyk7Zm9yKGQ9Yi5sZW5ndGgsYz1jPzA+Yz9NYXRoLm1heCgwLGQrYyk6YzowO2Q+YztjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgYz0rYi5sZW5ndGgsZD0wLGU9YS5sZW5ndGg7d2hpbGUoYz5kKWFbZSsrXT1iW2QrK107aWYoYyE9PWMpd2hpbGUodm9pZCAwIT09YltkXSlhW2UrK109YltkKytdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGc9MCxoPVtdO2lmKHMoYSkpZm9yKGQ9YS5sZW5ndGg7ZD5nO2crKyllPWIoYVtnXSxnLGMpLG51bGwhPWUmJmgucHVzaChlKTtlbHNlIGZvcihnIGluIGEpZT1iKGFbZ10sZyxjKSxudWxsIT1lJiZoLnB1c2goZSk7cmV0dXJuIGYuYXBwbHkoW10saCl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihmPWFbYl0sYj1hLGE9Ziksbi5pc0Z1bmN0aW9uKGEpPyhjPWUuY2FsbChhcmd1bWVudHMsMiksZD1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsYy5jb25jYXQoZS5jYWxsKGFyZ3VtZW50cykpKX0sZC5ndWlkPWEuZ3VpZD1hLmd1aWR8fG4uZ3VpZCsrLGQpOnZvaWQgMH0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxzdXBwb3J0Omx9KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYobi5mbltTeW1ib2wuaXRlcmF0b3JdPWNbU3ltYm9sLml0ZXJhdG9yXSksbi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2lbIltvYmplY3QgIitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSk7ZnVuY3Rpb24gcyhhKXt2YXIgYj0hIWEmJiJsZW5ndGgiaW4gYSYmYS5sZW5ndGgsYz1uLnR5cGUoYSk7cmV0dXJuImZ1bmN0aW9uIj09PWN8fG4uaXNXaW5kb3coYSk/ITE6ImFycmF5Ij09PWN8fDA9PT1ifHwibnVtYmVyIj09dHlwZW9mIGImJmI+MCYmYi0xIGluIGF9dmFyIHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdT0ic2l6emxlIisxKm5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9Z2EoKSx6PWdhKCksQT1nYSgpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPTE8PDMxLEQ9e30uaGFzT3duUHJvcGVydHksRT1bXSxGPUUucG9wLEc9RS5wdXNoLEg9RS5wdXNoLEk9RS5zbGljZSxKPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtkPmM7YysrKWlmKGFbY109PT1iKXJldHVybiBjO3JldHVybi0xfSxLPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsTD0iW1xceDIwXFx0XFxyXFxuXFxmXSIsTT0iKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSsiLE49IlxcWyIrTCsiKigiK00rIikoPzoiK0wrIiooWypeJHwhfl0/PSkiK0wrIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitNKyIpKXwpIitMKyIqXFxdIixPPSI6KCIrTSsiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrTisiKSopfC4qKVxcKXwpIixQPW5ldyBSZWdFeHAoTCsiKyIsImciKSxRPW5ldyBSZWdFeHAoIl4iK0wrIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrTCsiKyQiLCJnIiksUj1uZXcgUmVnRXhwKCJeIitMKyIqLCIrTCsiKiIpLFM9bmV3IFJlZ0V4cCgiXiIrTCsiKihbPit+XXwiK0wrIikiK0wrIioiKSxUPW5ldyBSZWdFeHAoIj0iK0wrIiooW15cXF0nXCJdKj8pIitMKyIqXFxdIiwiZyIpLFU9bmV3IFJlZ0V4cChPKSxWPW5ldyBSZWdFeHAoIl4iK00rIiQiKSxXPXtJRDpuZXcgUmVnRXhwKCJeIygiK00rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTSsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK04pLFBTRVVETzpuZXcgUmVnRXhwKCJeIitPKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK0wrIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK0wrIiooPzooWystXXwpIitMKyIqKFxcZCspfCkpIitMKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitLKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrTCsiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitMKyIqKCg/Oi1cXGQpP1xcZCopIitMKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxYPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksWT0vXmhcZCQvaSxaPS9eW157XStce1xzKlxbbmF0aXZlIFx3LywkPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sXz0vWyt+XS8sYWE9Lyd8XFwvZyxiYT1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0wrIj98KCIrTCsiKXwuKSIsImlnIiksY2E9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9LGRhPWZ1bmN0aW9uKCl7bSgpfTt0cnl7SC5hcHBseShFPUkuY2FsbCh2LmNoaWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRVt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChlYSl7SD17YXBwbHk6RS5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtHLmFwcGx5KGEsSS5jYWxsKGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytdPWJbZCsrXSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZmEoYSxiLGQsZSl7dmFyIGYsaCxqLGssbCxvLHIscyx3PWImJmIub3duZXJEb2N1bWVudCx4PWI/Yi5ub2RlVHlwZTo5O2lmKGQ9ZHx8W10sInN0cmluZyIhPXR5cGVvZiBhfHwhYXx8MSE9PXgmJjkhPT14JiYxMSE9PXgpcmV0dXJuIGQ7aWYoIWUmJigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dikhPT1uJiZtKGIpLGI9Ynx8bixwKSl7aWYoMTEhPT14JiYobz0kLmV4ZWMoYSkpKWlmKGY9b1sxXSl7aWYoOT09PXgpe2lmKCEoaj1iLmdldEVsZW1lbnRCeUlkKGYpKSlyZXR1cm4gZDtpZihqLmlkPT09ZilyZXR1cm4gZC5wdXNoKGopLGR9ZWxzZSBpZih3JiYoaj13LmdldEVsZW1lbnRCeUlkKGYpKSYmdChiLGopJiZqLmlkPT09ZilyZXR1cm4gZC5wdXNoKGopLGR9ZWxzZXtpZihvWzJdKXJldHVybiBILmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksZDtpZigoZj1vWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEguYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZikpLGR9aWYoYy5xc2EmJiFBW2ErIiAiXSYmKCFxfHwhcS50ZXN0KGEpKSl7aWYoMSE9PXgpdz1iLHM9YTtlbHNlIGlmKCJvYmplY3QiIT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXsoaz1iLmdldEF0dHJpYnV0ZSgiaWQiKSk/az1rLnJlcGxhY2UoYWEsIlxcJCYiKTpiLnNldEF0dHJpYnV0ZSgiaWQiLGs9dSkscj1nKGEpLGg9ci5sZW5ndGgsbD1WLnRlc3Qoayk/IiMiK2s6IltpZD0nIitrKyInXSI7d2hpbGUoaC0tKXJbaF09bCsiICIrcWEocltoXSk7cz1yLmpvaW4oIiwiKSx3PV8udGVzdChhKSYmb2EoYi5wYXJlbnROb2RlKXx8Yn1pZihzKXRyeXtyZXR1cm4gSC5hcHBseShkLHcucXVlcnlTZWxlY3RvckFsbChzKSksZH1jYXRjaCh5KXt9ZmluYWxseXtrPT09dSYmYi5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gaShhLnJlcGxhY2UoUSwiJDEiKSxiLGQsZSl9ZnVuY3Rpb24gZ2EoKXt2YXIgYT1bXTtmdW5jdGlvbiBiKGMsZSl7cmV0dXJuIGEucHVzaChjKyIgIik+ZC5jYWNoZUxlbmd0aCYmZGVsZXRlIGJbYS5zaGlmdCgpXSxiW2MrIiAiXT1lfXJldHVybiBifWZ1bmN0aW9uIGhhKGEpe3JldHVybiBhW3VdPSEwLGF9ZnVuY3Rpb24gaWEoYSl7dmFyIGI9bi5jcmVhdGVFbGVtZW50KCJkaXYiKTt0cnl7cmV0dXJuISFhKGIpfWNhdGNoKGMpe3JldHVybiExfWZpbmFsbHl7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksYj1udWxsfX1mdW5jdGlvbiBqYShhLGIpe3ZhciBjPWEuc3BsaXQoInwiKSxlPWMubGVuZ3RoO3doaWxlKGUtLSlkLmF0dHJIYW5kbGVbY1tlXV09Yn1mdW5jdGlvbiBrYShhLGIpe3ZhciBjPWImJmEsZD1jJiYxPT09YS5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJih+Yi5zb3VyY2VJbmRleHx8QyktKH5hLnNvdXJjZUluZGV4fHxDKTtpZihkKXJldHVybiBkO2lmKGMpd2hpbGUoYz1jLm5leHRTaWJsaW5nKWlmKGM9PT1iKXJldHVybi0xO3JldHVybiBhPzE6LTF9ZnVuY3Rpb24gbGEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YyYmYi50eXBlPT09YX19ZnVuY3Rpb24gbWEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PWN8fCJidXR0b24iPT09YykmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG5hKGEpe3JldHVybiBoYShmdW5jdGlvbihiKXtyZXR1cm4gYj0rYixoYShmdW5jdGlvbihjLGQpe3ZhciBlLGY9YShbXSxjLmxlbmd0aCxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSljW2U9ZltnXV0mJihjW2VdPSEoZFtlXT1jW2VdKSl9KX0pfWZ1bmN0aW9uIG9hKGEpe3JldHVybiBhJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmF9Yz1mYS5zdXBwb3J0PXt9LGY9ZmEuaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9YSYmKGEub3duZXJEb2N1bWVudHx8YSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiBiPyJIVE1MIiE9PWIubm9kZU5hbWU6ITF9LG09ZmEuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZSxnPWE/YS5vd25lckRvY3VtZW50fHxhOnY7cmV0dXJuIGchPT1uJiY5PT09Zy5ub2RlVHlwZSYmZy5kb2N1bWVudEVsZW1lbnQ/KG49ZyxvPW4uZG9jdW1lbnRFbGVtZW50LHA9IWYobiksKGU9bi5kZWZhdWx0VmlldykmJmUudG9wIT09ZSYmKGUuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsZGEsITEpOmUuYXR0YWNoRXZlbnQmJmUuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixkYSkpLGMuYXR0cmlidXRlcz1pYShmdW5jdGlvbihhKXtyZXR1cm4gYS5jbGFzc05hbWU9ImkiLCFhLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxjLmdldEVsZW1lbnRzQnlUYWdOYW1lPWlhKGZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGVuZENoaWxkKG4uY3JlYXRlQ29tbWVudCgiIikpLCFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPVoudGVzdChuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGMuZ2V0QnlJZD1pYShmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFuLmdldEVsZW1lbnRzQnlOYW1lfHwhbi5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYz9bY106W119fSxkLmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoYmEsY2EpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0pOihkZWxldGUgZC5maW5kLklELGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShiYSxjYSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRBdHRyaWJ1dGVOb2RlJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGMmJmMudmFsdWU9PT1ifX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOmMucXNhP2IucXVlcnlTZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3doaWxlKGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9LGQuZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJnA/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT1aLnRlc3Qobi5xdWVyeVNlbGVjdG9yQWxsKSkmJihpYShmdW5jdGlvbihhKXtvLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD0iPGEgaWQ9JyIrdSsiJz48L2E+PHNlbGVjdCBpZD0nIit1KyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnEucHVzaCgiWypeJF09IitMKyIqKD86Jyd8XCJcIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHEucHVzaCgiXFxbIitMKyIqKD86dmFsdWV8IitLKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrdSsiLV0iKS5sZW5ndGh8fHEucHVzaCgifj0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrdSsiKyoiKS5sZW5ndGh8fHEucHVzaCgiLiMuK1srfl0iKX0pLGlhKGZ1bmN0aW9uKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtiLnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGEuYXBwZW5kQ2hpbGQoYikuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGEucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnEucHVzaCgibmFtZSIrTCsiKlsqXiR8IX5dPz0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RofHxxLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IikscS5wdXNoKCIsLio6Iil9KSksKGMubWF0Y2hlc1NlbGVjdG9yPVoudGVzdChzPW8ubWF0Y2hlc3x8by53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fG8ubW96TWF0Y2hlc1NlbGVjdG9yfHxvLm9NYXRjaGVzU2VsZWN0b3J8fG8ubXNNYXRjaGVzU2VsZWN0b3IpKSYmaWEoZnVuY3Rpb24oYSl7Yy5kaXNjb25uZWN0ZWRNYXRjaD1zLmNhbGwoYSwiZGl2Iikscy5jYWxsKGEsIltzIT0nJ106eCIpLHIucHVzaCgiIT0iLE8pfSkscT1xLmxlbmd0aCYmbmV3IFJlZ0V4cChxLmpvaW4oInwiKSkscj1yLmxlbmd0aCYmbmV3IFJlZ0V4cChyLmpvaW4oInwiKSksYj1aLnRlc3Qoby5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksdD1ifHxaLnRlc3Qoby5jb250YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYz05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVudDphLGQ9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8fCEoYy5jb250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKXdoaWxlKGI9Yi5wYXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxCPWI/ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBkPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBkP2Q6KGQ9KGEub3duZXJEb2N1bWVudHx8YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpOjEsMSZkfHwhYy5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9PT1kP2E9PT1ufHxhLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYSk/LTE6Yj09PW58fGIub3duZXJEb2N1bWVudD09PXYmJnQodixiKT8xOms/SihrLGEpLUooayxiKTowOjQmZD8tMToxKX06ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBjLGQ9MCxlPWEucGFyZW50Tm9kZSxmPWIucGFyZW50Tm9kZSxnPVthXSxoPVtiXTtpZighZXx8IWYpcmV0dXJuIGE9PT1uPy0xOmI9PT1uPzE6ZT8tMTpmPzE6az9KKGssYSktSihrLGIpOjA7aWYoZT09PWYpcmV0dXJuIGthKGEsYik7Yz1hO3doaWxlKGM9Yy5wYXJlbnROb2RlKWcudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaC51bnNoaWZ0KGMpO3doaWxlKGdbZF09PT1oW2RdKWQrKztyZXR1cm4gZD9rYShnW2RdLGhbZF0pOmdbZF09PT12Py0xOmhbZF09PT12PzE6MH0sbik6bn0sZmEubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBmYShhLG51bGwsbnVsbCxiKX0sZmEubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFQsIj0nJDEnXSIpLGMubWF0Y2hlc1NlbGVjdG9yJiZwJiYhQVtiKyIgIl0mJighcnx8IXIudGVzdChiKSkmJighcXx8IXEudGVzdChiKSkpdHJ5e3ZhciBkPXMuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVjdGVkTWF0Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1jYXRjaChlKXt9cmV0dXJuIGZhKGIsbixudWxsLFthXSkubGVuZ3RoPjB9LGZhLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLHQoYSxiKX0sZmEuYXR0cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKTt2YXIgZT1kLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkQuY2FsbChkLmF0dHJIYW5kbGUsYi50b0xvd2VyQ2FzZSgpKT9lKGEsYiwhcCk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5hdHRyaWJ1dGVzfHwhcD9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZmLnNwZWNpZmllZD9mLnZhbHVlOm51bGx9LGZhLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZmEudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYobD0hYy5kZXRlY3REdXBsaWNhdGVzLGs9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoQiksbCl7d2hpbGUoYj1hW2YrK10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dXJuIGs9bnVsbCxhfSxlPWZhLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1hLm5vZGVUeXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlwZW9mIGEudGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1mYS5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzpoYSxtYXRjaDpXLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2UoYmEsY2EpLGFbM109KGFbM118fGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKGJhLGNhKSwifj0iPT09YVsyXSYmKGFbM109IiAiK2FbM10rIiAiKSxhLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWFbMV0uc2xpY2UoMCwzKT8oYVszXXx8ZmEuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MSk6MiooImV2ZW4iPT09YVszXXx8Im9kZCI9PT1hWzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hWzNdKSk6YVszXSYmZmEuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM9IWFbNl0mJmFbMl07cmV0dXJuIFcuQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdP2FbMl09YVs0XXx8YVs1XXx8IiI6YyYmVS50ZXN0KGMpJiYoYj1nKGMsITApKSYmKGI9Yy5pbmRleE9mKCIpIixjLmxlbmd0aC1iKS1jLmxlbmd0aCkmJihhWzBdPWFbMF0uc2xpY2UoMCxiKSxhWzJdPWMuc2xpY2UoMCxiKSksYS5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShiYSxjYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9eVthKyIgIl07cmV0dXJuIGJ8fChiPW5ldyBSZWdFeHAoIihefCIrTCsiKSIrYSsiKCIrTCsifCQpIikpJiZ5KGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9ZmEuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOmI/KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UucmVwbGFjZShQLCIgIikrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iP2U9PT1jfHxlLnNsaWNlKDAsYy5sZW5ndGgrMSk9PT1jKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoLHQ9ITE7aWYocSl7aWYoZil7d2hpbGUocCl7bT1iO3doaWxlKG09bVtwXSlpZihoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXttPXEsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biYmalsyXSxtPW4mJnEuY2hpbGROb2Rlc1tuXTt3aGlsZShtPSsrbiYmbSYmbVtwXXx8KHQ9bj0wKXx8by5wb3AoKSlpZigxPT09bS5ub2RlVHlwZSYmKyt0JiZtPT09Yil7a1thXT1bdyxuLHRdO2JyZWFrfX1lbHNlIGlmKHMmJihtPWIsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biksdD09PSExKXdoaWxlKG09KytuJiZtJiZtW3BdfHwodD1uPTApfHxvLnBvcCgpKWlmKChoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpJiYrK3QmJihzJiYobD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksa1thXT1bdyx0XSksbT09PWIpKWJyZWFrO3JldHVybiB0LT1lLHQ9PT1kfHx0JWQ9PT0wJiZ0L2Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT1kLnBzZXVkb3NbYV18fGQuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxmYS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2EpO3JldHVybiBlW3VdP2UoYik6ZS5sZW5ndGg+MT8oYz1bYSxhLCIiLGJdLGQuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpP2hhKGZ1bmN0aW9uKGEsYyl7dmFyIGQsZj1lKGEsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pZD1KKGEsZltnXSksYVtkXT0hKGNbZF09ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLDAsYyl9KTplfX0scHNldWRvczp7bm90OmhhKGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1oKGEucmVwbGFjZShRLCIkMSIpKTtyZXR1cm4gZFt1XT9oYShmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixnPWQoYSxudWxsLGUsW10pLGg9YS5sZW5ndGg7d2hpbGUoaC0tKShmPWdbaF0pJiYoYVtoXT0hKGJbaF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBiWzBdPWEsZChiLG51bGwsZixjKSxiWzBdPW51bGwsIWMucG9wKCl9fSksaGFzOmhhKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZmEoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczpoYShmdW5jdGlvbihhKXtyZXR1cm4gYT1hLnJlcGxhY2UoYmEsY2EpLGZ1bmN0aW9uKGIpe3JldHVybihiLnRleHRDb250ZW50fHxiLmlubmVyVGV4dHx8ZShiKSkuaW5kZXhPZihhKT4tMX19KSxsYW5nOmhhKGZ1bmN0aW9uKGEpe3JldHVybiBWLnRlc3QoYXx8IiIpfHxmYS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIithKSxhPWEucmVwbGFjZShiYSxjYSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihiKXt2YXIgYztkbyBpZihjPXA/Yi5sYW5nOmIuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxiLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybiBjPWMudG9Mb3dlckNhc2UoKSxjPT09YXx8MD09PWMuaW5kZXhPZihhKyItIik7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmMT09PWIubm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbihiKXt2YXIgYz1hLmxvY2F0aW9uJiZhLmxvY2F0aW9uLmhhc2g7cmV0dXJuIGMmJmMuc2xpY2UoMSk9PT1iLmlkfSxyb290OmZ1bmN0aW9uKGEpe3JldHVybiBhPT09b30sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1uLmFjdGl2ZUVsZW1lbnQmJighbi5oYXNGb2N1c3x8bi5oYXNGb2N1cygpKSYmISEoYS50eXBlfHxhLmhyZWZ8fH5hLnRhYkluZGV4KX0sZW5hYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSExfSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmISFhLmNoZWNrZWR8fCJvcHRpb24iPT09YiYmISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZihhLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hZC5wc2V1ZG9zLmVtcHR5KGEpfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFkudGVzdChhLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFgudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0oYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6bmEoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0Om5hKGZ1bmN0aW9uKGEsYil7cmV0dXJuW2ItMV19KSxlcTpuYShmdW5jdGlvbihhLGIsYyl7cmV0dXJuWzA+Yz9jK2I6Y119KSxldmVuOm5hKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7Yj5jO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksb2RkOm5hKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7Yj5jO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksbHQ6bmEoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7LS1kPj0wOylhLnB1c2goZCk7cmV0dXJuIGF9KSxndDpuYShmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzsrK2Q8YjspYS5wdXNoKGQpO3JldHVybiBhfSl9fSxkLnBzZXVkb3MubnRoPWQucHNldWRvcy5lcTtmb3IoYiBpbntyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSlkLnBzZXVkb3NbYl09bGEoYik7Zm9yKGIgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlkLnBzZXVkb3NbYl09bWEoYik7ZnVuY3Rpb24gcGEoKXt9cGEucHJvdG90eXBlPWQuZmlsdGVycz1kLnBzZXVkb3MsZC5zZXRGaWx0ZXJzPW5ldyBwYSxnPWZhLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz16W2ErIiAiXTtpZihrKXJldHVybiBiPzA6ay5zbGljZSgwKTtoPWEsaT1bXSxqPWQucHJlRmlsdGVyO3doaWxlKGgpe2MmJiEoZT1SLmV4ZWMoaCkpfHwoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksYz0hMSwoZT1TLmV4ZWMoaCkpJiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZVswXS5yZXBsYWNlKFEsIiAiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVyKSEoZT1XW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg/ZmEuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtmdW5jdGlvbiBxYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7Yz5iO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHJhKGEsYixjKXt2YXIgZD1iLmRpcixlPWMmJiJwYXJlbnROb2RlIj09PWQsZj14Kys7cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGYpe3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSlyZXR1cm4gYShiLGMsZil9OmZ1bmN0aW9uKGIsYyxnKXt2YXIgaCxpLGosaz1bdyxmXTtpZihnKXt3aGlsZShiPWJbZF0paWYoKDE9PT1iLm5vZGVUeXBlfHxlKSYmYShiLGMsZykpcmV0dXJuITB9ZWxzZSB3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGUpe2lmKGo9Ylt1XXx8KGJbdV09e30pLGk9altiLnVuaXF1ZUlEXXx8KGpbYi51bmlxdWVJRF09e30pLChoPWlbZF0pJiZoWzBdPT09dyYmaFsxXT09PWYpcmV0dXJuIGtbMl09aFsyXTtpZihpW2RdPWssa1syXT1hKGIsYyxnKSlyZXR1cm4hMH19fWZ1bmN0aW9uIHNhKGEpe3JldHVybiBhLmxlbmd0aD4xP2Z1bmN0aW9uKGIsYyxkKXt2YXIgZT1hLmxlbmd0aDt3aGlsZShlLS0paWYoIWFbZV0oYixjLGQpKXJldHVybiExO3JldHVybiEwfTphWzBdfWZ1bmN0aW9uIHRhKGEsYixjKXtmb3IodmFyIGQ9MCxlPWIubGVuZ3RoO2U+ZDtkKyspZmEoYSxiW2RdLGMpO3JldHVybiBjfWZ1bmN0aW9uIHVhKGEsYixjLGQsZSl7Zm9yKHZhciBmLGc9W10saD0wLGk9YS5sZW5ndGgsaj1udWxsIT1iO2k+aDtoKyspKGY9YVtoXSkmJihjJiYhYyhmLGQsZSl8fChnLnB1c2goZiksaiYmYi5wdXNoKGgpKSk7cmV0dXJuIGd9ZnVuY3Rpb24gdmEoYSxiLGMsZCxlLGYpe3JldHVybiBkJiYhZFt1XSYmKGQ9dmEoZCkpLGUmJiFlW3VdJiYoZT12YShlLGYpKSxoYShmdW5jdGlvbihmLGcsaCxpKXt2YXIgaixrLGwsbT1bXSxuPVtdLG89Zy5sZW5ndGgscD1mfHx0YShifHwiKiIsaC5ub2RlVHlwZT9baF06aCxbXSkscT0hYXx8IWYmJmI/cDp1YShwLG0sYSxoLGkpLHI9Yz9lfHwoZj9hOm98fGQpP1tdOmc6cTtpZihjJiZjKHEscixoLGkpLGQpe2o9dWEocixuKSxkKGosW10saCxpKSxrPWoubGVuZ3RoO3doaWxlKGstLSkobD1qW2tdKSYmKHJbbltrXV09IShxW25ba11dPWwpKX1pZihmKXtpZihlfHxhKXtpZihlKXtqPVtdLGs9ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiZqLnB1c2gocVtrXT1sKTtlKG51bGwscj1bXSxqLGkpfWs9ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiYoaj1lP0ooZixsKTptW2tdKT4tMSYmKGZbal09IShnW2pdPWwpKX19ZWxzZSByPXVhKHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShudWxsLGcscixpKTpILmFwcGx5KGcscil9KX1mdW5jdGlvbiB3YShhKXtmb3IodmFyIGIsYyxlLGY9YS5sZW5ndGgsZz1kLnJlbGF0aXZlW2FbMF0udHlwZV0saD1nfHxkLnJlbGF0aXZlWyIgIl0saT1nPzE6MCxrPXJhKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Yn0saCwhMCksbD1yYShmdW5jdGlvbihhKXtyZXR1cm4gSihiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlvbihhLGMsZCl7dmFyIGU9IWcmJihkfHxjIT09ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTpsKGEsYyxkKSk7cmV0dXJuIGI9bnVsbCxlfV07Zj5pO2krKylpZihjPWQucmVsYXRpdmVbYVtpXS50eXBlXSltPVtyYShzYShtKSxjKV07ZWxzZXtpZihjPWQuZmlsdGVyW2FbaV0udHlwZV0uYXBwbHkobnVsbCxhW2ldLm1hdGNoZXMpLGNbdV0pe2ZvcihlPSsraTtmPmU7ZSsrKWlmKGQucmVsYXRpdmVbYVtlXS50eXBlXSlicmVhaztyZXR1cm4gdmEoaT4xJiZzYShtKSxpPjEmJnFhKGEuc2xpY2UoMCxpLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09YVtpLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoUSwiJDEiKSxjLGU+aSYmd2EoYS5zbGljZShpLGUpKSxmPmUmJndhKGE9YS5zbGljZShlKSksZj5lJiZxYShhKSl9bS5wdXNoKGMpfXJldHVybiBzYShtKX1mdW5jdGlvbiB4YShhLGIpe3ZhciBjPWIubGVuZ3RoPjAsZT1hLmxlbmd0aD4wLGY9ZnVuY3Rpb24oZixnLGgsaSxrKXt2YXIgbCxvLHEscj0wLHM9IjAiLHQ9ZiYmW10sdT1bXSx2PWoseD1mfHxlJiZkLmZpbmQuVEFHKCIqIixrKSx5PXcrPW51bGw9PXY/MTpNYXRoLnJhbmRvbSgpfHwuMSx6PXgubGVuZ3RoO2ZvcihrJiYoaj1nPT09bnx8Z3x8ayk7cyE9PXomJm51bGwhPShsPXhbc10pO3MrKyl7aWYoZSYmbCl7bz0wLGd8fGwub3duZXJEb2N1bWVudD09PW58fChtKGwpLGg9IXApO3doaWxlKHE9YVtvKytdKWlmKHEobCxnfHxuLGgpKXtpLnB1c2gobCk7YnJlYWt9ayYmKHc9eSl9YyYmKChsPSFxJiZsKSYmci0tLGYmJnQucHVzaChsKSl9aWYocis9cyxjJiZzIT09cil7bz0wO3doaWxlKHE9YltvKytdKXEodCx1LGcsaCk7aWYoZil7aWYocj4wKXdoaWxlKHMtLSl0W3NdfHx1W3NdfHwodVtzXT1GLmNhbGwoaSkpO3U9dWEodSl9SC5hcHBseShpLHUpLGsmJiFmJiZ1Lmxlbmd0aD4wJiZyK2IubGVuZ3RoPjEmJmZhLnVuaXF1ZVNvcnQoaSl9cmV0dXJuIGsmJih3PXksaj12KSx0fTtyZXR1cm4gYz9oYShmKTpmfXJldHVybiBoPWZhLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9W10sZj1BW2ErIiAiXTtpZighZil7Ynx8KGI9ZyhhKSksYz1iLmxlbmd0aDt3aGlsZShjLS0pZj13YShiW2NdKSxmW3VdP2QucHVzaChmKTplLnB1c2goZik7Zj1BKGEseGEoZSxkKSksZi5zZWxlY3Rvcj1hfXJldHVybiBmfSxpPWZhLnNlbGVjdD1mdW5jdGlvbihhLGIsZSxmKXt2YXIgaSxqLGssbCxtLG49ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEsbz0hZiYmZyhhPW4uc2VsZWN0b3J8fGEpO2lmKGU9ZXx8W10sMT09PW8ubGVuZ3RoKXtpZihqPW9bMF09b1swXS5zbGljZSgwKSxqLmxlbmd0aD4yJiYiSUQiPT09KGs9alswXSkudHlwZSYmYy5nZXRCeUlkJiY5PT09Yi5ub2RlVHlwZSYmcCYmZC5yZWxhdGl2ZVtqWzFdLnR5cGVdKXtpZihiPShkLmZpbmQuSUQoay5tYXRjaGVzWzBdLnJlcGxhY2UoYmEsY2EpLGIpfHxbXSlbMF0sIWIpcmV0dXJuIGU7biYmKGI9Yi5wYXJlbnROb2RlKSxhPWEuc2xpY2Uoai5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9aT1XLm5lZWRzQ29udGV4dC50ZXN0KGEpPzA6ai5sZW5ndGg7d2hpbGUoaS0tKXtpZihrPWpbaV0sZC5yZWxhdGl2ZVtsPWsudHlwZV0pYnJlYWs7aWYoKG09ZC5maW5kW2xdKSYmKGY9bShrLm1hdGNoZXNbMF0ucmVwbGFjZShiYSxjYSksXy50ZXN0KGpbMF0udHlwZSkmJm9hKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoai5zcGxpY2UoaSwxKSxhPWYubGVuZ3RoJiZxYShqKSwhYSlyZXR1cm4gSC5hcHBseShlLGYpLGU7YnJlYWt9fX1yZXR1cm4obnx8aChhLG8pKShmLGIsIXAsZSwhYnx8Xy50ZXN0KGEpJiZvYShiLnBhcmVudE5vZGUpfHxiKSxlfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9aWEoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImRpdiIpKX0pLGlhKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGphKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmlhKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGphKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjfHwiaW5wdXQiIT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMDphLmRlZmF1bHRWYWx1ZX0pLGlhKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxqYShLLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxmYX0oYSk7bi5maW5kPXQsbi5leHByPXQuc2VsZWN0b3JzLG4uZXhwclsiOiJdPW4uZXhwci5wc2V1ZG9zLG4udW5pcXVlU29ydD1uLnVuaXF1ZT10LnVuaXF1ZVNvcnQsbi50ZXh0PXQuZ2V0VGV4dCxuLmlzWE1MRG9jPXQuaXNYTUwsbi5jb250YWlucz10LmNvbnRhaW5zO3ZhciB1PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPXZvaWQgMCE9PWM7d2hpbGUoKGE9YVtiXSkmJjkhPT1hLm5vZGVUeXBlKWlmKDE9PT1hLm5vZGVUeXBlKXtpZihlJiZuKGEpLmlzKGMpKWJyZWFrO2QucHVzaChhKX1yZXR1cm4gZH0sdj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXTthO2E9YS5uZXh0U2libGluZykxPT09YS5ub2RlVHlwZSYmYSE9PWImJmMucHVzaChhKTtyZXR1cm4gY30sdz1uLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LHg9L148KFtcdy1dKylccypcLz8+KD86PFwvXDE+fCkkLyx5PS9eLlteOiNcW1wuLF0qJC87ZnVuY3Rpb24geihhLGIsYyl7aWYobi5pc0Z1bmN0aW9uKGIpKXJldHVybiBuLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiEhYi5jYWxsKGEsZCxhKSE9PWN9KTtpZihiLm5vZGVUeXBlKXJldHVybiBuLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYT09PWIhPT1jfSk7aWYoInN0cmluZyI9PXR5cGVvZiBiKXtpZih5LnRlc3QoYikpcmV0dXJuIG4uZmlsdGVyKGIsYSxjKTtiPW4uZmlsdGVyKGIsYSl9cmV0dXJuIG4uZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBuLmluQXJyYXkoYSxiKT4tMSE9PWN9KX1uLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9uLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQsYSk/W2RdOltdOm4uZmluZC5tYXRjaGVzKGEsbi5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfSxuLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjPVtdLGQ9dGhpcyxlPWQubGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2sobihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2U+YjtiKyspaWYobi5jb250YWlucyhkW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihiPTA7ZT5iO2IrKyluLmZpbmQoYSxkW2JdLGMpO3JldHVybiBjPXRoaXMucHVzaFN0YWNrKGU+MT9uLnVuaXF1ZShjKTpjKSxjLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3I/dGhpcy5zZWxlY3RvcisiICIrYTphLGN9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soeih0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soeih0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEheih0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmdy50ZXN0KGEpP24oYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgQSxCPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKikpJC8sQz1uLmZuLmluaXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYz1jfHxBLCJzdHJpbmciPT10eXBlb2YgYSl7aWYoZT0iPCI9PT1hLmNoYXJBdCgwKSYmIj4iPT09YS5jaGFyQXQoYS5sZW5ndGgtMSkmJmEubGVuZ3RoPj0zP1tudWxsLGEsbnVsbF06Qi5leGVjKGEpLCFlfHwhZVsxXSYmYilyZXR1cm4hYnx8Yi5qcXVlcnk/KGJ8fGMpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihiKS5maW5kKGEpO2lmKGVbMV0pe2lmKGI9YiBpbnN0YW5jZW9mIG4/YlswXTpiLG4ubWVyZ2UodGhpcyxuLnBhcnNlSFRNTChlWzFdLGImJmIubm9kZVR5cGU/Yi5vd25lckRvY3VtZW50fHxiOmQsITApKSx4LnRlc3QoZVsxXSkmJm4uaXNQbGFpbk9iamVjdChiKSlmb3IoZSBpbiBiKW4uaXNGdW5jdGlvbih0aGlzW2VdKT90aGlzW2VdKGJbZV0pOnRoaXMuYXR0cihlLGJbZV0pO3JldHVybiB0aGlzfWlmKGY9ZC5nZXRFbGVtZW50QnlJZChlWzJdKSxmJiZmLnBhcmVudE5vZGUpe2lmKGYuaWQhPT1lWzJdKXJldHVybiBBLmZpbmQoYSk7dGhpcy5sZW5ndGg9MSx0aGlzWzBdPWZ9cmV0dXJuIHRoaXMuY29udGV4dD1kLHRoaXMuc2VsZWN0b3I9YSx0aGlzfXJldHVybiBhLm5vZGVUeXBlPyh0aGlzLmNvbnRleHQ9dGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6bi5pc0Z1bmN0aW9uKGEpPyJ1bmRlZmluZWQiIT10eXBlb2YgYy5yZWFkeT9jLnJlYWR5KGEpOmEobik6KHZvaWQgMCE9PWEuc2VsZWN0b3ImJih0aGlzLnNlbGVjdG9yPWEuc2VsZWN0b3IsdGhpcy5jb250ZXh0PWEuY29udGV4dCksbi5tYWtlQXJyYXkoYSx0aGlzKSl9O0MucHJvdG90eXBlPW4uZm4sQT1uKGQpO3ZhciBEPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLEU9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07bi5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYixjPW4oYSx0aGlzKSxkPWMubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7ZD5iO2IrKylpZihuLmNvbnRhaW5zKHRoaXMsY1tiXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPTAsZT10aGlzLmxlbmd0aCxmPVtdLGc9dy50ZXN0KGEpfHwic3RyaW5nIiE9dHlwZW9mIGE/bihhLGJ8fHRoaXMuY29udGV4dCk6MDtlPmQ7ZCsrKWZvcihjPXRoaXNbZF07YyYmYyE9PWI7Yz1jLnBhcmVudE5vZGUpaWYoYy5ub2RlVHlwZTwxMSYmKGc/Zy5pbmRleChjKT4tMToxPT09Yy5ub2RlVHlwZSYmbi5maW5kLm1hdGNoZXNTZWxlY3RvcihjLGEpKSl7Zi5wdXNoKGMpO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjayhmLmxlbmd0aD4xP24udW5pcXVlU29ydChmKTpmKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP24uaW5BcnJheSh0aGlzWzBdLG4oYSkpOm4uaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobi51bmlxdWVTb3J0KG4ubWVyZ2UodGhpcy5nZXQoKSxuKGEsYikpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWE/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoYSkpfX0pO2Z1bmN0aW9uIEYoYSxiKXtkbyBhPWFbYl07d2hpbGUoYSYmMSE9PWEubm9kZVR5cGUpO3JldHVybiBhfW4uZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmMTEhPT1iLm5vZGVUeXBlP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gdShhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHUoYSwicGFyZW50Tm9kZSIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEYoYSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gRihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gdShhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiB1KGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB1KGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdShhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gdigoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG4ubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDpuLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe24uZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1uLm1hcCh0aGlzLGIsYyk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZD1jKSxkJiYic3RyaW5nIj09dHlwZW9mIGQmJihlPW4uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjEmJihFW2FdfHwoZT1uLnVuaXF1ZVNvcnQoZSkpLEQudGVzdChhKSYmKGU9ZS5yZXZlcnNlKCkpKSx0aGlzLnB1c2hTdGFjayhlKX19KTt2YXIgRz0vXFMrL2c7ZnVuY3Rpb24gSChhKXt2YXIgYj17fTtyZXR1cm4gbi5lYWNoKGEubWF0Y2goRyl8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9bi5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/SChhKTpuLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQsZSxmPVtdLGc9W10saD0tMSxpPWZ1bmN0aW9uKCl7Zm9yKGU9YS5vbmNlLGQ9Yj0hMDtnLmxlbmd0aDtoPS0xKXtjPWcuc2hpZnQoKTt3aGlsZSgrK2g8Zi5sZW5ndGgpZltoXS5hcHBseShjWzBdLGNbMV0pPT09ITEmJmEuc3RvcE9uRmFsc2UmJihoPWYubGVuZ3RoLGM9ITEpfWEubWVtb3J5fHwoYz0hMSksYj0hMSxlJiYoZj1jP1tdOiIiKX0saj17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIGYmJihjJiYhYiYmKGg9Zi5sZW5ndGgtMSxnLnB1c2goYykpLGZ1bmN0aW9uIGQoYil7bi5lYWNoKGIsZnVuY3Rpb24oYixjKXtuLmlzRnVuY3Rpb24oYyk/YS51bmlxdWUmJmouaGFzKGMpfHxmLnB1c2goYyk6YyYmYy5sZW5ndGgmJiJzdHJpbmciIT09bi50eXBlKGMpJiZkKGMpfSl9KGFyZ3VtZW50cyksYyYmIWImJmkoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIG4uZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oYSxiKXt2YXIgYzt3aGlsZSgoYz1uLmluQXJyYXkoYixmLGMpKT4tMSlmLnNwbGljZShjLDEpLGg+PWMmJmgtLX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT9uLmluQXJyYXkoYSxmKT4tMTpmLmxlbmd0aD4wfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBmJiYoZj1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBlPWc9W10sZj1jPSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIWZ9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZT0hMCxjfHxqLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWV9LGZpcmVXaXRoOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGV8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sZy5wdXNoKGMpLGJ8fGkoKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBqLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBqfSxuLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRvbmUiLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsbi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsbi5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBuLkRlZmVycmVkKGZ1bmN0aW9uKGMpe24uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9bi5pc0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZuLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5wcm9ncmVzcyhjLm5vdGlmeSkuZG9uZShjLnJlc29sdmUpLmZhaWwoYy5yZWplY3QpOmNbZlswXSsiV2l0aCJdKHRoaXM9PT1kP2MucHJvbWlzZSgpOnRoaXMsZz9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP24uZXh0ZW5kKGEsZCk6ZH19LGU9e307cmV0dXJuIGQucGlwZT1kLnRoZW4sbi5lYWNoKGIsZnVuY3Rpb24oYSxmKXt2YXIgZz1mWzJdLGg9ZlszXTtkW2ZbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7Yz1ofSxiWzFeYV1bMl0uZGlzYWJsZSxiWzJdWzJdLmxvY2spLGVbZlswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZVtmWzBdKyJXaXRoIl0odGhpcz09PWU/ZDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZVtmWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGwoZSxlKSxlfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1lLmNhbGwoYXJndW1lbnRzKSxkPWMubGVuZ3RoLGY9MSE9PWR8fGEmJm4uaXNGdW5jdGlvbihhLnByb21pc2UpP2Q6MCxnPTE9PT1mP2E6bi5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihkKXtiW2FdPXRoaXMsY1thXT1hcmd1bWVudHMubGVuZ3RoPjE/ZS5jYWxsKGFyZ3VtZW50cyk6ZCxjPT09aT9nLm5vdGlmeVdpdGgoYixjKTotLWZ8fGcucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGQ+MSlmb3IoaT1uZXcgQXJyYXkoZCksaj1uZXcgQXJyYXkoZCksaz1uZXcgQXJyYXkoZCk7ZD5iO2IrKyljW2JdJiZuLmlzRnVuY3Rpb24oY1tiXS5wcm9taXNlKT9jW2JdLnByb21pc2UoKS5wcm9ncmVzcyhoKGIsaixpKSkuZG9uZShoKGIsayxjKSkuZmFpbChnLnJlamVjdCk6LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRoKGssYyksZy5wcm9taXNlKCl9fSk7dmFyIEk7bi5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gbi5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxuLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9uLnJlYWR5V2FpdCsrOm4ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0tbi5yZWFkeVdhaXQ6bi5pc1JlYWR5KXx8KG4uaXNSZWFkeT0hMCxhIT09ITAmJi0tbi5yZWFkeVdhaXQ+MHx8KEkucmVzb2x2ZVdpdGgoZCxbbl0pLG4uZm4udHJpZ2dlckhhbmRsZXImJihuKGQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpLG4oZCkub2ZmKCJyZWFkeSIpKSkpfX0pO2Z1bmN0aW9uIEooKXtkLmFkZEV2ZW50TGlzdGVuZXI/KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSyksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixLKSk6KGQuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsSyksYS5kZXRhY2hFdmVudCgib25sb2FkIixLKSl9ZnVuY3Rpb24gSygpeyhkLmFkZEV2ZW50TGlzdGVuZXJ8fCJsb2FkIj09PWEuZXZlbnQudHlwZXx8ImNvbXBsZXRlIj09PWQucmVhZHlTdGF0ZSkmJihKKCksbi5yZWFkeSgpKX1uLnJlYWR5LnByb21pc2U9ZnVuY3Rpb24oYil7aWYoIUkpaWYoST1uLkRlZmVycmVkKCksImNvbXBsZXRlIj09PWQucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09ZC5yZWFkeVN0YXRlJiYhZC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwpYS5zZXRUaW1lb3V0KG4ucmVhZHkpO2Vsc2UgaWYoZC5hZGRFdmVudExpc3RlbmVyKWQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSyksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixLKTtlbHNle2QuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsSyksYS5hdHRhY2hFdmVudCgib25sb2FkIixLKTt2YXIgYz0hMTt0cnl7Yz1udWxsPT1hLmZyYW1lRWxlbWVudCYmZC5kb2N1bWVudEVsZW1lbnR9Y2F0Y2goZSl7fWMmJmMuZG9TY3JvbGwmJiFmdW5jdGlvbiBmKCl7aWYoIW4uaXNSZWFkeSl7dHJ5e2MuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChiKXtyZXR1cm4gYS5zZXRUaW1lb3V0KGYsNTApfUooKSxuLnJlYWR5KCl9fSgpfXJldHVybiBJLnByb21pc2UoYil9LG4ucmVhZHkucHJvbWlzZSgpO3ZhciBMO2ZvcihMIGluIG4obCkpYnJlYWs7bC5vd25GaXJzdD0iMCI9PT1MLGwuaW5saW5lQmxvY2tOZWVkc0xheW91dD0hMSxuKGZ1bmN0aW9uKCl7dmFyIGEsYixjLGU7Yz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sYyYmYy5zdHlsZSYmKGI9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsYy5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZChiKSwidW5kZWZpbmVkIiE9dHlwZW9mIGIuc3R5bGUuem9vbSYmKGIuc3R5bGUuY3NzVGV4dD0iZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MSIsbC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWE9Mz09PWIub2Zmc2V0V2lkdGgsYSYmKGMuc3R5bGUuem9vbT0xKSksYy5yZW1vdmVDaGlsZChlKSl9KSxmdW5jdGlvbigpe3ZhciBhPWQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5kZWxldGVFeHBhbmRvPSEwO3RyeXtkZWxldGUgYS50ZXN0fWNhdGNoKGIpe2wuZGVsZXRlRXhwYW5kbz0hMX1hPW51bGx9KCk7dmFyIE09ZnVuY3Rpb24oYSl7dmFyIGI9bi5ub0RhdGFbKGEubm9kZU5hbWUrIiAiKS50b0xvd2VyQ2FzZSgpXSxjPSthLm5vZGVUeXBlfHwxO3JldHVybiAxIT09YyYmOSE9PWM/ITE6IWJ8fGIhPT0hMCYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzaWQiKT09PWJ9LE49L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxPPS8oW0EtWl0pL2c7ZnVuY3Rpb24gUChhLGIsYyl7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpe3ZhciBkPSJkYXRhLSIrYi5yZXBsYWNlKE8sIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpOLnRlc3QoYyk/bi5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9bi5kYXRhKGEsYixjKX1lbHNlIGM9dm9pZCAwOwp9cmV0dXJuIGN9ZnVuY3Rpb24gUShhKXt2YXIgYjtmb3IoYiBpbiBhKWlmKCgiZGF0YSIhPT1ifHwhbi5pc0VtcHR5T2JqZWN0KGFbYl0pKSYmInRvSlNPTiIhPT1iKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIFIoYSxiLGQsZSl7aWYoTShhKSl7dmFyIGYsZyxoPW4uZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP24uY2FjaGU6YSxrPWk/YVtoXTphW2hdJiZoO2lmKGsmJmpba10mJihlfHxqW2tdLmRhdGEpfHx2b2lkIDAhPT1kfHwic3RyaW5nIiE9dHlwZW9mIGIpcmV0dXJuIGt8fChrPWk/YVtoXT1jLnBvcCgpfHxuLmd1aWQrKzpoKSxqW2tdfHwoaltrXT1pP3t9Ont0b0pTT046bi5ub29wfSksIm9iamVjdCIhPXR5cGVvZiBiJiYiZnVuY3Rpb24iIT10eXBlb2YgYnx8KGU/altrXT1uLmV4dGVuZChqW2tdLGIpOmpba10uZGF0YT1uLmV4dGVuZChqW2tdLmRhdGEsYikpLGc9altrXSxlfHwoZy5kYXRhfHwoZy5kYXRhPXt9KSxnPWcuZGF0YSksdm9pZCAwIT09ZCYmKGdbbi5jYW1lbENhc2UoYildPWQpLCJzdHJpbmciPT10eXBlb2YgYj8oZj1nW2JdLG51bGw9PWYmJihmPWdbbi5jYW1lbENhc2UoYildKSk6Zj1nLGZ9fWZ1bmN0aW9uIFMoYSxiLGMpe2lmKE0oYSkpe3ZhciBkLGUsZj1hLm5vZGVUeXBlLGc9Zj9uLmNhY2hlOmEsaD1mP2Fbbi5leHBhbmRvXTpuLmV4cGFuZG87aWYoZ1toXSl7aWYoYiYmKGQ9Yz9nW2hdOmdbaF0uZGF0YSkpe24uaXNBcnJheShiKT9iPWIuY29uY2F0KG4ubWFwKGIsbi5jYW1lbENhc2UpKTpiIGluIGQ/Yj1bYl06KGI9bi5jYW1lbENhc2UoYiksYj1iIGluIGQ/W2JdOmIuc3BsaXQoIiAiKSksZT1iLmxlbmd0aDt3aGlsZShlLS0pZGVsZXRlIGRbYltlXV07aWYoYz8hUShkKTohbi5pc0VtcHR5T2JqZWN0KGQpKXJldHVybn0oY3x8KGRlbGV0ZSBnW2hdLmRhdGEsUShnW2hdKSkpJiYoZj9uLmNsZWFuRGF0YShbYV0sITApOmwuZGVsZXRlRXhwYW5kb3x8ZyE9Zy53aW5kb3c/ZGVsZXRlIGdbaF06Z1toXT12b2lkIDApfX19bi5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP24uY2FjaGVbYVtuLmV4cGFuZG9dXTphW24uZXhwYW5kb10sISFhJiYhUShhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFIoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFMoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBSKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUyhhLGIsITApfX0pLG4uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bi5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbi5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW4uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLFAoZixkLGVbZF0pKSk7bi5fZGF0YShmLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXtuLmRhdGEodGhpcyxhKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rpb24oKXtuLmRhdGEodGhpcyxhLGIpfSk6Zj9QKGYsYSxuLmRhdGEoZixhKSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLG4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGE/KGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1uLl9kYXRhKGEsYiksYyYmKCFkfHxuLmlzQXJyYXkoYyk/ZD1uLl9kYXRhKGEsYixuLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXSk6dm9pZCAwfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPW4ucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9bi5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXtuLmRlcXVldWUoYSxiKX07ImlucHJvZ3Jlc3MiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gbi5fZGF0YShhLGMpfHxuLl9kYXRhKGEsYyx7ZW1wdHk6bi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7bi5fcmVtb3ZlRGF0YShhLGIrInF1ZXVlIiksbi5fcmVtb3ZlRGF0YShhLGMpfSl9KX19KSxuLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM/bi5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1uLnF1ZXVlKHRoaXMsYSxiKTtuLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWNbMF0mJm4uZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe24uZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTEsZT1uLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgsaD1mdW5jdGlvbigpey0tZHx8ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO3doaWxlKGctLSljPW4uX2RhdGEoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSksZnVuY3Rpb24oKXt2YXIgYTtsLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1hKXJldHVybiBhO2E9ITE7dmFyIGIsYyxlO3JldHVybiBjPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlPyhiPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksZT1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQoYiksInVuZGVmaW5lZCIhPXR5cGVvZiBiLnN0eWxlLnpvb20mJihiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGIuYXBwZW5kQ2hpbGQoZC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUud2lkdGg9IjVweCIsYT0zIT09Yi5vZmZzZXRXaWR0aCksYy5yZW1vdmVDaGlsZChlKSxhKTp2b2lkIDB9fSgpO3ZhciBUPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLFU9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK1QrIikoW2EteiVdKikkIiwiaSIpLFY9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxXPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9Ynx8YSwibm9uZSI9PT1uLmNzcyhhLCJkaXNwbGF5Iil8fCFuLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKX07ZnVuY3Rpb24gWChhLGIsYyxkKXt2YXIgZSxmPTEsZz0yMCxoPWQ/ZnVuY3Rpb24oKXtyZXR1cm4gZC5jdXIoKX06ZnVuY3Rpb24oKXtyZXR1cm4gbi5jc3MoYSxiLCIiKX0saT1oKCksaj1jJiZjWzNdfHwobi5jc3NOdW1iZXJbYl0/IiI6InB4Iiksaz0obi5jc3NOdW1iZXJbYl18fCJweCIhPT1qJiYraSkmJlUuZXhlYyhuLmNzcyhhLGIpKTtpZihrJiZrWzNdIT09ail7aj1qfHxrWzNdLGM9Y3x8W10saz0raXx8MTtkbyBmPWZ8fCIuNSIsay89ZixuLnN0eWxlKGEsYixrK2opO3doaWxlKGYhPT0oZj1oKCkvaSkmJjEhPT1mJiYtLWcpfXJldHVybiBjJiYoaz0ra3x8K2l8fDAsZT1jWzFdP2srKGNbMV0rMSkqY1syXTorY1syXSxkJiYoZC51bml0PWosZC5zdGFydD1rLGQuZW5kPWUpKSxlfXZhciBZPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1uLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYylZKGEsYixoLGNbaF0sITAsZixnKX1lbHNlIGlmKHZvaWQgMCE9PWQmJihlPSEwLG4uaXNGdW5jdGlvbihkKXx8KGc9ITApLGomJihnPyhiLmNhbGwoYSxkKSxiPW51bGwpOihqPWIsYj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGouY2FsbChuKGEpLGMpfSkpLGIpKWZvcig7aT5oO2grKyliKGFbaF0sYyxnP2Q6ZC5jYWxsKGFbaF0saCxiKGFbaF0sYykpKTtyZXR1cm4gZT9hOmo/Yi5jYWxsKGEpOmk/YihhWzBdLGMpOmZ9LFo9L14oPzpjaGVja2JveHxyYWRpbykkL2ksJD0vPChbXHc6LV0rKS8sXz0vXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksYWE9L15ccysvLGJhPSJhYmJyfGFydGljbGV8YXNpZGV8YXVkaW98YmRpfGNhbnZhc3xkYXRhfGRhdGFsaXN0fGRldGFpbHN8ZGlhbG9nfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1haW58bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHBpY3R1cmV8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5fHRlbXBsYXRlfHRpbWV8dmlkZW8iO2Z1bmN0aW9uIGNhKGEpe3ZhciBiPWJhLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfSFmdW5jdGlvbigpe3ZhciBhPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksYj1kLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxjPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTthLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixsLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUsbC50Ym9keT0hYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsbC5odG1sU2VyaWFsaXplPSEhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxsLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09ZC5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxjLnR5cGU9ImNoZWNrYm94IixjLmNoZWNrZWQ9ITAsYi5hcHBlbmRDaGlsZChjKSxsLmFwcGVuZENoZWNrZWQ9Yy5jaGVja2VkLGEuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixsLm5vQ2xvbmVDaGVja2VkPSEhYS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYi5hcHBlbmRDaGlsZChhKSxjPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxjLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIiksYy5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksYy5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IiksYS5hcHBlbmRDaGlsZChjKSxsLmNoZWNrQ2xvbmU9YS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsbC5ub0Nsb25lRXZlbnQ9ISFhLmFkZEV2ZW50TGlzdGVuZXIsYVtuLmV4cGFuZG9dPTEsbC5hdHRyaWJ1dGVzPSFhLmdldEF0dHJpYnV0ZShuLmV4cGFuZG8pfSgpO3ZhciBkYT17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLHBhcmFtOlsxLCI8b2JqZWN0PiIsIjwvb2JqZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6bC5odG1sU2VyaWFsaXplP1swLCIiLCIiXTpbMSwiWDxkaXY+IiwiPC9kaXY+Il19O2RhLm9wdGdyb3VwPWRhLm9wdGlvbixkYS50Ym9keT1kYS50Zm9vdD1kYS5jb2xncm91cD1kYS5jYXB0aW9uPWRhLnRoZWFkLGRhLnRoPWRhLnRkO2Z1bmN0aW9uIGVhKGEsYil7dmFyIGMsZCxlPTAsZj0idW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWU/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOiJ1bmRlZmluZWQiIT10eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxsP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOnZvaWQgMDtpZighZilmb3IoZj1bXSxjPWEuY2hpbGROb2Rlc3x8YTtudWxsIT0oZD1jW2VdKTtlKyspIWJ8fG4ubm9kZU5hbWUoZCxiKT9mLnB1c2goZCk6bi5tZXJnZShmLGVhKGQsYikpO3JldHVybiB2b2lkIDA9PT1ifHxiJiZuLm5vZGVOYW1lKGEsYik/bi5tZXJnZShbYV0sZik6Zn1mdW5jdGlvbiBmYShhLGIpe2Zvcih2YXIgYyxkPTA7bnVsbCE9KGM9YVtkXSk7ZCsrKW4uX2RhdGEoYywiZ2xvYmFsRXZhbCIsIWJ8fG4uX2RhdGEoYltkXSwiZ2xvYmFsRXZhbCIpKX12YXIgZ2E9Lzx8JiM/XHcrOy8saGE9Lzx0Ym9keS9pO2Z1bmN0aW9uIGlhKGEpe1oudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIGphKGEsYixjLGQsZSl7Zm9yKHZhciBmLGcsaCxpLGosayxtLG89YS5sZW5ndGgscD1jYShiKSxxPVtdLHI9MDtvPnI7cisrKWlmKGc9YVtyXSxnfHwwPT09ZylpZigib2JqZWN0Ij09PW4udHlwZShnKSluLm1lcmdlKHEsZy5ub2RlVHlwZT9bZ106Zyk7ZWxzZSBpZihnYS50ZXN0KGcpKXtpPWl8fHAuYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaj0oJC5leGVjKGcpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLG09ZGFbal18fGRhLl9kZWZhdWx0LGkuaW5uZXJIVE1MPW1bMV0rbi5odG1sUHJlZmlsdGVyKGcpK21bMl0sZj1tWzBdO3doaWxlKGYtLSlpPWkubGFzdENoaWxkO2lmKCFsLmxlYWRpbmdXaGl0ZXNwYWNlJiZhYS50ZXN0KGcpJiZxLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShhYS5leGVjKGcpWzBdKSksIWwudGJvZHkpe2c9InRhYmxlIiE9PWp8fGhhLnRlc3QoZyk/Ijx0YWJsZT4iIT09bVsxXXx8aGEudGVzdChnKT8wOmk6aS5maXJzdENoaWxkLGY9ZyYmZy5jaGlsZE5vZGVzLmxlbmd0aDt3aGlsZShmLS0pbi5ub2RlTmFtZShrPWcuY2hpbGROb2Rlc1tmXSwidGJvZHkiKSYmIWsuY2hpbGROb2Rlcy5sZW5ndGgmJmcucmVtb3ZlQ2hpbGQoayl9bi5tZXJnZShxLGkuY2hpbGROb2RlcyksaS50ZXh0Q29udGVudD0iIjt3aGlsZShpLmZpcnN0Q2hpbGQpaS5yZW1vdmVDaGlsZChpLmZpcnN0Q2hpbGQpO2k9cC5sYXN0Q2hpbGR9ZWxzZSBxLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShnKSk7aSYmcC5yZW1vdmVDaGlsZChpKSxsLmFwcGVuZENoZWNrZWR8fG4uZ3JlcChlYShxLCJpbnB1dCIpLGlhKSxyPTA7d2hpbGUoZz1xW3IrK10paWYoZCYmbi5pbkFycmF5KGcsZCk+LTEpZSYmZS5wdXNoKGcpO2Vsc2UgaWYoaD1uLmNvbnRhaW5zKGcub3duZXJEb2N1bWVudCxnKSxpPWVhKHAuYXBwZW5kQ2hpbGQoZyksInNjcmlwdCIpLGgmJmZhKGkpLGMpe2Y9MDt3aGlsZShnPWlbZisrXSlfLnRlc3QoZy50eXBlfHwiIikmJmMucHVzaChnKX1yZXR1cm4gaT1udWxsLHB9IWZ1bmN0aW9uKCl7dmFyIGIsYyxlPWQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zm9yKGIgaW57c3VibWl0OiEwLGNoYW5nZTohMCxmb2N1c2luOiEwfSljPSJvbiIrYiwobFtiXT1jIGluIGEpfHwoZS5zZXRBdHRyaWJ1dGUoYywidCIpLGxbYl09ZS5hdHRyaWJ1dGVzW2NdLmV4cGFuZG89PT0hMSk7ZT1udWxsfSgpO3ZhciBrYT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksbGE9L15rZXkvLG1hPS9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLyxuYT0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sb2E9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIHBhKCl7cmV0dXJuITB9ZnVuY3Rpb24gcWEoKXtyZXR1cm4hMX1mdW5jdGlvbiByYSgpe3RyeXtyZXR1cm4gZC5hY3RpdmVFbGVtZW50fWNhdGNoKGEpe319ZnVuY3Rpb24gc2EoYSxiLGMsZCxlLGYpe3ZhciBnLGg7aWYoIm9iamVjdCI9PXR5cGVvZiBiKXsic3RyaW5nIiE9dHlwZW9mIGMmJihkPWR8fGMsYz12b2lkIDApO2ZvcihoIGluIGIpc2EoYSxoLGMsZCxiW2hdLGYpO3JldHVybiBhfWlmKG51bGw9PWQmJm51bGw9PWU/KGU9YyxkPWM9dm9pZCAwKTpudWxsPT1lJiYoInN0cmluZyI9PXR5cGVvZiBjPyhlPWQsZD12b2lkIDApOihlPWQsZD1jLGM9dm9pZCAwKSksZT09PSExKWU9cWE7ZWxzZSBpZighZSlyZXR1cm4gYTtyZXR1cm4gMT09PWYmJihnPWUsZT1mdW5jdGlvbihhKXtyZXR1cm4gbigpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZS5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1uLmd1aWQrKykpLGEuZWFjaChmdW5jdGlvbigpe24uZXZlbnQuYWRkKHRoaXMsYixlLGQsYyl9KX1uLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxvLHAscSxyPW4uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW4uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2Ygbnx8YSYmbi5ldmVudC50cmlnZ2VyZWQ9PT1hLnR5cGU/dm9pZCAwOm4uZXZlbnQuZGlzcGF0Y2guYXBwbHkoay5lbGVtLGFyZ3VtZW50cyl9LGsuZWxlbT1hKSxiPShifHwiIikubWF0Y2goRyl8fFsiIl0saD1iLmxlbmd0aDt3aGlsZShoLS0pZj1vYS5leGVjKGJbaF0pfHxbXSxvPXE9ZlsxXSxwPShmWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyYmKGo9bi5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShlP2ouZGVsZWdhdGVUeXBlOmouYmluZFR5cGUpfHxvLGo9bi5ldmVudC5zcGVjaWFsW29dfHx7fSxsPW4uZXh0ZW5kKHt0eXBlOm8sb3JpZ1R5cGU6cSxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJm4uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6cC5qb2luKCIuIil9LGkpLChtPWdbb10pfHwobT1nW29dPVtdLG0uZGVsZWdhdGVDb3VudD0wLGouc2V0dXAmJmouc2V0dXAuY2FsbChhLGQscCxrKSE9PSExfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihvLGssITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIitvLGspKSksai5hZGQmJihqLmFkZC5jYWxsKGEsbCksbC5oYW5kbGVyLmd1aWR8fChsLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP20uc3BsaWNlKG0uZGVsZWdhdGVDb3VudCsrLDAsbCk6bS5wdXNoKGwpLG4uZXZlbnQuZ2xvYmFsW29dPSEwKTthPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG8scCxxLHI9bi5oYXNEYXRhKGEpJiZuLl9kYXRhKGEpO2lmKHImJihrPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEcpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9b2EuZXhlYyhiW2pdKXx8W10sbz1xPWhbMV0scD0oaFsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG8pe2w9bi5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShkP2wuZGVsZWdhdGVUeXBlOmwuYmluZFR5cGUpfHxvLG09a1tvXXx8W10saD1oWzJdJiZuZXcgUmVnRXhwKCIoXnxcXC4pIitwLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpLGk9Zj1tLmxlbmd0aDt3aGlsZShmLS0pZz1tW2ZdLCFlJiZxIT09Zy5vcmlnVHlwZXx8YyYmYy5ndWlkIT09Zy5ndWlkfHxoJiYhaC50ZXN0KGcubmFtZXNwYWNlKXx8ZCYmZCE9PWcuc2VsZWN0b3ImJigiKioiIT09ZHx8IWcuc2VsZWN0b3IpfHwobS5zcGxpY2UoZiwxKSxnLnNlbGVjdG9yJiZtLmRlbGVnYXRlQ291bnQtLSxsLnJlbW92ZSYmbC5yZW1vdmUuY2FsbChhLGcpKTtpJiYhbS5sZW5ndGgmJihsLnRlYXJkb3duJiZsLnRlYXJkb3duLmNhbGwoYSxwLHIuaGFuZGxlKSE9PSExfHxuLnJlbW92ZUV2ZW50KGEsbyxyLmhhbmRsZSksZGVsZXRlIGtbb10pfWVsc2UgZm9yKG8gaW4gayluLmV2ZW50LnJlbW92ZShhLG8rYltqXSxjLGQsITApO24uaXNFbXB0eU9iamVjdChrKSYmKGRlbGV0ZSByLmhhbmRsZSxuLl9yZW1vdmVEYXRhKGEsImV2ZW50cyIpKX19LHRyaWdnZXI6ZnVuY3Rpb24oYixjLGUsZil7dmFyIGcsaCxpLGosbCxtLG8scD1bZXx8ZF0scT1rLmNhbGwoYiwidHlwZSIpP2IudHlwZTpiLHI9ay5jYWxsKGIsIm5hbWVzcGFjZSIpP2IubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYoaT1tPWU9ZXx8ZCwzIT09ZS5ub2RlVHlwZSYmOCE9PWUubm9kZVR5cGUmJiFuYS50ZXN0KHErbi5ldmVudC50cmlnZ2VyZWQpJiYocS5pbmRleE9mKCIuIik+LTEmJihyPXEuc3BsaXQoIi4iKSxxPXIuc2hpZnQoKSxyLnNvcnQoKSksaD1xLmluZGV4T2YoIjoiKTwwJiYib24iK3EsYj1iW24uZXhwYW5kb10/YjpuZXcgbi5FdmVudChxLCJvYmplY3QiPT10eXBlb2YgYiYmYiksYi5pc1RyaWdnZXI9Zj8yOjMsYi5uYW1lc3BhY2U9ci5qb2luKCIuIiksYi5ybmFtZXNwYWNlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Iuam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1lKSxjPW51bGw9PWM/W2JdOm4ubWFrZUFycmF5KGMsW2JdKSxsPW4uZXZlbnQuc3BlY2lhbFtxXXx8e30sZnx8IWwudHJpZ2dlcnx8bC50cmlnZ2VyLmFwcGx5KGUsYykhPT0hMSkpe2lmKCFmJiYhbC5ub0J1YmJsZSYmIW4uaXNXaW5kb3coZSkpe2ZvcihqPWwuZGVsZWdhdGVUeXBlfHxxLG5hLnRlc3QoaitxKXx8KGk9aS5wYXJlbnROb2RlKTtpO2k9aS5wYXJlbnROb2RlKXAucHVzaChpKSxtPWk7bT09PShlLm93bmVyRG9jdW1lbnR8fGQpJiZwLnB1c2gobS5kZWZhdWx0Vmlld3x8bS5wYXJlbnRXaW5kb3d8fGEpfW89MDt3aGlsZSgoaT1wW28rK10pJiYhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWIudHlwZT1vPjE/ajpsLmJpbmRUeXBlfHxxLGc9KG4uX2RhdGEoaSwiZXZlbnRzIil8fHt9KVtiLnR5cGVdJiZuLl9kYXRhKGksImhhbmRsZSIpLGcmJmcuYXBwbHkoaSxjKSxnPWgmJmlbaF0sZyYmZy5hcHBseSYmTShpKSYmKGIucmVzdWx0PWcuYXBwbHkoaSxjKSxiLnJlc3VsdD09PSExJiZiLnByZXZlbnREZWZhdWx0KCkpO2lmKGIudHlwZT1xLCFmJiYhYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKCFsLl9kZWZhdWx0fHxsLl9kZWZhdWx0LmFwcGx5KHAucG9wKCksYyk9PT0hMSkmJk0oZSkmJmgmJmVbcV0mJiFuLmlzV2luZG93KGUpKXttPWVbaF0sbSYmKGVbaF09bnVsbCksbi5ldmVudC50cmlnZ2VyZWQ9cTt0cnl7ZVtxXSgpfWNhdGNoKHMpe31uLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbSYmKGVbaF09bSl9cmV0dXJuIGIucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YT1uLmV2ZW50LmZpeChhKTt2YXIgYixjLGQsZixnLGg9W10saT1lLmNhbGwoYXJndW1lbnRzKSxqPShuLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saz1uLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaVswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7aD1uLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGopLGI9MDt3aGlsZSgoZj1oW2IrK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXthLmN1cnJlbnRUYXJnZXQ9Zi5lbGVtLGM9MDt3aGlsZSgoZz1mLmhhbmRsZXJzW2MrK10pJiYhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKWEucm5hbWVzcGFjZSYmIWEucm5hbWVzcGFjZS50ZXN0KGcubmFtZXNwYWNlKXx8KGEuaGFuZGxlT2JqPWcsYS5kYXRhPWcuZGF0YSxkPSgobi5ldmVudC5zcGVjaWFsW2cub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxnLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSxpKSx2b2lkIDAhPT1kJiYoYS5yZXN1bHQ9ZCk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGsucG9zdERpc3BhdGNoJiZrLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoImNsaWNrIiE9PWEudHlwZXx8aXNOYU4oYS5idXR0b24pfHxhLmJ1dHRvbjwxKSlmb3IoO2khPXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWkubm9kZVR5cGUmJihpLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1hLnR5cGUpKXtmb3IoZD1bXSxjPTA7aD5jO2MrKylmPWJbY10sZT1mLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1kW2VdJiYoZFtlXT1mLm5lZWRzQ29udGV4dD9uKGUsdGhpcykuaW5kZXgoaSk+LTE6bi5maW5kKGUsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxkW2VdJiZkLnB1c2goZik7ZC5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmR9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGZpeDpmdW5jdGlvbihhKXtpZihhW24uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxlLGY9YS50eXBlLGc9YSxoPXRoaXMuZml4SG9va3NbZl07aHx8KHRoaXMuZml4SG9va3NbZl09aD1tYS50ZXN0KGYpP3RoaXMubW91c2VIb29rczpsYS50ZXN0KGYpP3RoaXMua2V5SG9va3M6e30pLGU9aC5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChoLnByb3BzKTp0aGlzLnByb3BzLGE9bmV3IG4uRXZlbnQoZyksYj1lLmxlbmd0aDt3aGlsZShiLS0pYz1lW2JdLGFbY109Z1tjXTtyZXR1cm4gYS50YXJnZXR8fChhLnRhcmdldD1nLnNyY0VsZW1lbnR8fGQpLDM9PT1hLnRhcmdldC5ub2RlVHlwZSYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGEubWV0YUtleT0hIWEubWV0YUtleSxoLmZpbHRlcj9oLmZpbHRlcihhLGcpOmF9LHByb3BzOiJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBkZXRhaWwgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGc9Yi5idXR0b24saD1iLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1hLnBhZ2VYJiZudWxsIT1iLmNsaWVudFgmJihlPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fGQsZj1lLmRvY3VtZW50RWxlbWVudCxjPWUuYm9keSxhLnBhZ2VYPWIuY2xpZW50WCsoZiYmZi5zY3JvbGxMZWZ0fHxjJiZjLnNjcm9sbExlZnR8fDApLShmJiZmLmNsaWVudExlZnR8fGMmJmMuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1iLmNsaWVudFkrKGYmJmYuc2Nyb2xsVG9wfHxjJiZjLnNjcm9sbFRvcHx8MCktKGYmJmYuY2xpZW50VG9wfHxjJiZjLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmgmJihhLnJlbGF0ZWRUYXJnZXQ9aD09PWEudGFyZ2V0P2IudG9FbGVtZW50OmgpLGEud2hpY2h8fHZvaWQgMD09PWd8fChhLndoaWNoPTEmZz8xOjImZz8zOjQmZz8yOjApLGF9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09cmEoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChhKXt9fSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1yYSgpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBuLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2s/KHRoaXMuY2xpY2soKSwhMSk6dm9pZCAwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtyZXR1cm4gbi5ub2RlTmFtZShhLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW4uZXh0ZW5kKG5ldyBuLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMH0pO24uZXZlbnQudHJpZ2dlcihkLG51bGwsYiksZC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbi5yZW1vdmVFdmVudD1kLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYyl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgYVtkXSYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbi5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygbi5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09ITE/cGE6cWEpOnRoaXMudHlwZT1hLGImJm4uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG4ubm93KCksdm9pZCh0aGlzW24uZXhwYW5kb109ITApKTpuZXcgbi5FdmVudChhLGIpfSxuLkV2ZW50LnByb3RvdHlwZT17Y29uc3RydWN0b3I6bi5FdmVudCxpc0RlZmF1bHRQcmV2ZW50ZWQ6cWEsaXNQcm9wYWdhdGlvblN0b3BwZWQ6cWEsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6cWEscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9cGEsYSYmKGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOmEucmV0dXJuVmFsdWU9ITEpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1wYSxhJiYhdGhpcy5pc1NpbXVsYXRlZCYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9cGEsYSYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG4uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXtuLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybiBlJiYoZT09PWR8fG4uY29udGFpbnMoZCxlKSl8fChhLnR5cGU9Zi5vcmlnVHlwZSxjPWYuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYS50eXBlPWIpLGN9fX0pLGwuc3VibWl0fHwobi5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gbi5ub2RlTmFtZSh0aGlzLCJmb3JtIik/ITE6dm9pZCBuLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLGZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0LGM9bi5ub2RlTmFtZShiLCJpbnB1dCIpfHxuLm5vZGVOYW1lKGIsImJ1dHRvbiIpP24ucHJvcChiLCJmb3JtIik6dm9pZCAwO2MmJiFuLl9kYXRhKGMsInN1Ym1pdCIpJiYobi5ldmVudC5hZGQoYywic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGEpe2EuX3N1Ym1pdEJ1YmJsZT0hMH0pLG4uX2RhdGEoYywic3VibWl0IiwhMCkpfSl9LHBvc3REaXNwYXRjaDpmdW5jdGlvbihhKXthLl9zdWJtaXRCdWJibGUmJihkZWxldGUgYS5fc3VibWl0QnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZuLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG4ubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgbi5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxsLmNoYW5nZXx8KG4uZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIGthLnRlc3QodGhpcy5ub2RlTmFtZSk/KCJjaGVja2JveCIhPT10aGlzLnR5cGUmJiJyYWRpbyIhPT10aGlzLnR5cGV8fChuLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXsiY2hlY2tlZCI9PT1hLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lJiYodGhpcy5fanVzdENoYW5nZWQ9ITApfSksbi5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdENoYW5nZWQmJiFhLmlzVHJpZ2dlciYmKHRoaXMuX2p1c3RDaGFuZ2VkPSExKSxuLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSl9KSksITEpOnZvaWQgbi5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7a2EudGVzdChiLm5vZGVOYW1lKSYmIW4uX2RhdGEoYiwiY2hhbmdlIikmJihuLmV2ZW50LmFkZChiLCJjaGFuZ2UuX2NoYW5nZSIsZnVuY3Rpb24oYSl7IXRoaXMucGFyZW50Tm9kZXx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fG4uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEpfSksbi5fZGF0YShiLCJjaGFuZ2UiLCEwKSl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3JldHVybiB0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1iLnR5cGUmJiJjaGVja2JveCIhPT1iLnR5cGU/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBuLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFrYS50ZXN0KHRoaXMubm9kZU5hbWUpfX0pLGwuZm9jdXNpbnx8bi5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe24uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxuLmV2ZW50LmZpeChhKSl9O24uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1uLl9kYXRhKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksbi5fZGF0YShkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPW4uX2RhdGEoZCxiKS0xO2U/bi5fZGF0YShkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLG4uX3JlbW92ZURhdGEoZCxiKSl9fX0pLG4uZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gc2EodGhpcyxhLGIsYyxkKX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBzYSh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixuKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuIGIhPT0hMSYmImZ1bmN0aW9uIiE9dHlwZW9mIGJ8fChjPWIsYj12b2lkIDApLGM9PT0hMSYmKGM9cWEpLHRoaXMuZWFjaChmdW5jdGlvbigpe24uZXZlbnQucmVtb3ZlKHRoaXMsYSxjLGIpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXNbMF07cmV0dXJuIGM/bi5ldmVudC50cmlnZ2VyKGEsYixjLCEwKTp2b2lkIDB9fSk7dmFyIHRhPS8galF1ZXJ5XGQrPSIoPzpudWxsfFxkKykiL2csdWE9bmV3IFJlZ0V4cCgiPCg/OiIrYmErIilbXFxzLz5dIiwiaSIpLHZhPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzotXSspW14+XSopXC8+L2dpLHdhPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLHhhPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLHlhPS9edHJ1ZVwvKC4qKS8semE9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLEFhPWNhKGQpLEJhPUFhLmFwcGVuZENoaWxkKGQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2Z1bmN0aW9uIENhKGEsYil7cmV0dXJuIG4ubm9kZU5hbWUoYSwidGFibGUiKSYmbi5ub2RlTmFtZSgxMSE9PWIubm9kZVR5cGU/YjpiLmZpcnN0Q2hpbGQsInRyIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiBEYShhKXtyZXR1cm4gYS50eXBlPShudWxsIT09bi5maW5kLmF0dHIoYSwidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24gRWEoYSl7dmFyIGI9eWEuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiBGYShhLGIpe2lmKDE9PT1iLm5vZGVUeXBlJiZuLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxmPW4uX2RhdGEoYSksZz1uLl9kYXRhKGIsZiksaD1mLmV2ZW50cztpZihoKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGMgaW4gaClmb3IoZD0wLGU9aFtjXS5sZW5ndGg7ZT5kO2QrKyluLmV2ZW50LmFkZChiLGMsaFtjXVtkXSl9Zy5kYXRhJiYoZy5kYXRhPW4uZXh0ZW5kKHt9LGcuZGF0YSkpfX1mdW5jdGlvbiBHYShhLGIpe3ZhciBjLGQsZTtpZigxPT09Yi5ub2RlVHlwZSl7aWYoYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWwubm9DbG9uZUV2ZW50JiZiW24uZXhwYW5kb10pe2U9bi5fZGF0YShiKTtmb3IoZCBpbiBlLmV2ZW50cyluLnJlbW92ZUV2ZW50KGIsZCxlLmhhbmRsZSk7Yi5yZW1vdmVBdHRyaWJ1dGUobi5leHBhbmRvKX0ic2NyaXB0Ij09PWMmJmIudGV4dCE9PWEudGV4dD8oRGEoYikudGV4dD1hLnRleHQsRWEoYikpOiJvYmplY3QiPT09Yz8oYi5wYXJlbnROb2RlJiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLGwuaHRtbDVDbG9uZSYmYS5pbm5lckhUTUwmJiFuLnRyaW0oYi5pbm5lckhUTUwpJiYoYi5pbm5lckhUTUw9YS5pbm5lckhUTUwpKToiaW5wdXQiPT09YyYmWi50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOiJvcHRpb24iPT09Yz9iLmRlZmF1bHRTZWxlY3RlZD1iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOiJpbnB1dCIhPT1jJiYidGV4dGFyZWEiIT09Y3x8KGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX19ZnVuY3Rpb24gSGEoYSxiLGMsZCl7Yj1mLmFwcGx5KFtdLGIpO3ZhciBlLGcsaCxpLGosayxtPTAsbz1hLmxlbmd0aCxwPW8tMSxxPWJbMF0scj1uLmlzRnVuY3Rpb24ocSk7aWYocnx8bz4xJiYic3RyaW5nIj09dHlwZW9mIHEmJiFsLmNoZWNrQ2xvbmUmJnhhLnRlc3QocSkpcmV0dXJuIGEuZWFjaChmdW5jdGlvbihlKXt2YXIgZj1hLmVxKGUpO3ImJihiWzBdPXEuY2FsbCh0aGlzLGUsZi5odG1sKCkpKSxIYShmLGIsYyxkKX0pO2lmKG8mJihrPWphKGIsYVswXS5vd25lckRvY3VtZW50LCExLGEsZCksZT1rLmZpcnN0Q2hpbGQsMT09PWsuY2hpbGROb2Rlcy5sZW5ndGgmJihrPWUpLGV8fGQpKXtmb3IoaT1uLm1hcChlYShrLCJzY3JpcHQiKSxEYSksaD1pLmxlbmd0aDtvPm07bSsrKWc9ayxtIT09cCYmKGc9bi5jbG9uZShnLCEwLCEwKSxoJiZuLm1lcmdlKGksZWEoZywic2NyaXB0IikpKSxjLmNhbGwoYVttXSxnLG0pO2lmKGgpZm9yKGo9aVtpLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG4ubWFwKGksRWEpLG09MDtoPm07bSsrKWc9aVttXSxfLnRlc3QoZy50eXBlfHwiIikmJiFuLl9kYXRhKGcsImdsb2JhbEV2YWwiKSYmbi5jb250YWlucyhqLGcpJiYoZy5zcmM/bi5fZXZhbFVybCYmbi5fZXZhbFVybChnLnNyYyk6bi5nbG9iYWxFdmFsKChnLnRleHR8fGcudGV4dENvbnRlbnR8fGcuaW5uZXJIVE1MfHwiIikucmVwbGFjZSh6YSwiIikpKTtrPWU9bnVsbH1yZXR1cm4gYX1mdW5jdGlvbiBJYShhLGIsYyl7Zm9yKHZhciBkLGU9Yj9uLmZpbHRlcihiLGEpOmEsZj0wO251bGwhPShkPWVbZl0pO2YrKyljfHwxIT09ZC5ub2RlVHlwZXx8bi5jbGVhbkRhdGEoZWEoZCkpLGQucGFyZW50Tm9kZSYmKGMmJm4uY29udGFpbnMoZC5vd25lckRvY3VtZW50LGQpJiZmYShlYShkLCJzY3JpcHQiKSksZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQpKTtyZXR1cm4gYX1uLmV4dGVuZCh7aHRtbFByZWZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHZhLCI8JDE+PC8kMj4iKX0sY2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaT1uLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihsLmh0bWw1Q2xvbmV8fG4uaXNYTUxEb2MoYSl8fCF1YS50ZXN0KCI8IithLm5vZGVOYW1lKyI+Iik/Zj1hLmNsb25lTm9kZSghMCk6KEJhLmlubmVySFRNTD1hLm91dGVySFRNTCxCYS5yZW1vdmVDaGlsZChmPUJhLmZpcnN0Q2hpbGQpKSwhKGwubm9DbG9uZUV2ZW50JiZsLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxuLmlzWE1MRG9jKGEpKSlmb3IoZD1lYShmKSxoPWVhKGEpLGc9MDtudWxsIT0oZT1oW2ddKTsrK2cpZFtnXSYmR2EoZSxkW2ddKTtpZihiKWlmKGMpZm9yKGg9aHx8ZWEoYSksZD1kfHxlYShmKSxnPTA7bnVsbCE9KGU9aFtnXSk7ZysrKUZhKGUsZFtnXSk7ZWxzZSBGYShhLGYpO3JldHVybiBkPWVhKGYsInNjcmlwdCIpLGQubGVuZ3RoPjAmJmZhKGQsIWkmJmVhKGEsInNjcmlwdCIpKSxkPWg9ZT1udWxsLGZ9LGNsZWFuRGF0YTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgZCxlLGYsZyxoPTAsaT1uLmV4cGFuZG8saj1uLmNhY2hlLGs9bC5hdHRyaWJ1dGVzLG09bi5ldmVudC5zcGVjaWFsO251bGwhPShkPWFbaF0pO2grKylpZigoYnx8TShkKSkmJihmPWRbaV0sZz1mJiZqW2ZdKSl7aWYoZy5ldmVudHMpZm9yKGUgaW4gZy5ldmVudHMpbVtlXT9uLmV2ZW50LnJlbW92ZShkLGUpOm4ucmVtb3ZlRXZlbnQoZCxlLGcuaGFuZGxlKTtqW2ZdJiYoZGVsZXRlIGpbZl0sa3x8InVuZGVmaW5lZCI9PXR5cGVvZiBkLnJlbW92ZUF0dHJpYnV0ZT9kW2ldPXZvaWQgMDpkLnJlbW92ZUF0dHJpYnV0ZShpKSxjLnB1c2goZikpfX19KSxuLmZuLmV4dGVuZCh7ZG9tTWFuaXA6SGEsZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiBJYSh0aGlzLGEsITApfSxyZW1vdmU6ZnVuY3Rpb24oYSl7cmV0dXJuIElhKHRoaXMsYSl9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9uLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxkKS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEhhKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj1DYSh0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPUNhKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKyl7MT09PWEubm9kZVR5cGUmJm4uY2xlYW5EYXRhKGVhKGEsITEpKTt3aGlsZShhLmZpcnN0Q2hpbGQpYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Eub3B0aW9ucyYmbi5ub2RlTmFtZShhLCJzZWxlY3QiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbD09YT8hMTphLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbi5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT1iLm5vZGVUeXBlP2IuaW5uZXJIVE1MLnJlcGxhY2UodGEsIiIpOnZvaWQgMDtpZigic3RyaW5nIj09dHlwZW9mIGEmJiF3YS50ZXN0KGEpJiYobC5odG1sU2VyaWFsaXplfHwhdWEudGVzdChhKSkmJihsLmxlYWRpbmdXaGl0ZXNwYWNlfHwhYWEudGVzdChhKSkmJiFkYVsoJC5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7YT1uLmh0bWxQcmVmaWx0ZXIoYSk7dHJ5e2Zvcig7ZD5jO2MrKyliPXRoaXNbY118fHt9LDE9PT1iLm5vZGVUeXBlJiYobi5jbGVhbkRhdGEoZWEoYiwhMSkpLGIuaW5uZXJIVE1MPWEpO2I9MH1jYXRjaChlKXt9fWImJnRoaXMuZW1wdHkoKS5hcHBlbmQoYSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgYT1bXTtyZXR1cm4gSGEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wYXJlbnROb2RlO24uaW5BcnJheSh0aGlzLGEpPDAmJihuLmNsZWFuRGF0YShlYSh0aGlzKSksYyYmYy5yZXBsYWNlQ2hpbGQoYix0aGlzKSl9LGEpfX0pLG4uZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7bi5mblthXT1mdW5jdGlvbihhKXtmb3IodmFyIGMsZD0wLGU9W10sZj1uKGEpLGg9Zi5sZW5ndGgtMTtoPj1kO2QrKyljPWQ9PT1oP3RoaXM6dGhpcy5jbG9uZSghMCksbihmW2RdKVtiXShjKSxnLmFwcGx5KGUsYy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBKYSxLYT17SFRNTDoiYmxvY2siLEJPRFk6ImJsb2NrIn07ZnVuY3Rpb24gTGEoYSxiKXt2YXIgYz1uKGIuY3JlYXRlRWxlbWVudChhKSkuYXBwZW5kVG8oYi5ib2R5KSxkPW4uY3NzKGNbMF0sImRpc3BsYXkiKTtyZXR1cm4gYy5kZXRhY2goKSxkfWZ1bmN0aW9uIE1hKGEpe3ZhciBiPWQsYz1LYVthXTtyZXR1cm4gY3x8KGM9TGEoYSxiKSwibm9uZSIhPT1jJiZjfHwoSmE9KEphfHxuKCI8aWZyYW1lIGZyYW1lYm9yZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0PScwJy8+IikpLmFwcGVuZFRvKGIuZG9jdW1lbnRFbGVtZW50KSxiPShKYVswXS5jb250ZW50V2luZG93fHxKYVswXS5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50LGIud3JpdGUoKSxiLmNsb3NlKCksYz1MYShhLGIpLEphLmRldGFjaCgpKSxLYVthXT1jKSxjfXZhciBOYT0vXm1hcmdpbi8sT2E9bmV3IFJlZ0V4cCgiXigiK1QrIikoPyFweClbYS16JV0rJCIsImkiKSxQYT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGc9e307Zm9yKGYgaW4gYilnW2ZdPWEuc3R5bGVbZl0sYS5zdHlsZVtmXT1iW2ZdO2U9Yy5hcHBseShhLGR8fFtdKTtmb3IoZiBpbiBiKWEuc3R5bGVbZl09Z1tmXTtyZXR1cm4gZX0sUWE9ZC5kb2N1bWVudEVsZW1lbnQ7IWZ1bmN0aW9uKCl7dmFyIGIsYyxlLGYsZyxoLGk9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKSxqPWQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYoai5zdHlsZSl7ai5zdHlsZS5jc3NUZXh0PSJmbG9hdDpsZWZ0O29wYWNpdHk6LjUiLGwub3BhY2l0eT0iMC41Ij09PWouc3R5bGUub3BhY2l0eSxsLmNzc0Zsb2F0PSEhai5zdHlsZS5jc3NGbG9hdCxqLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsai5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLGwuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1qLnN0eWxlLmJhY2tncm91bmRDbGlwLGk9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKSxpLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dpZHRoOjhweDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7cGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIixqLmlubmVySFRNTD0iIixpLmFwcGVuZENoaWxkKGopLGwuYm94U2l6aW5nPSIiPT09ai5zdHlsZS5ib3hTaXppbmd8fCIiPT09ai5zdHlsZS5Nb3pCb3hTaXppbmd8fCIiPT09ai5zdHlsZS5XZWJraXRCb3hTaXppbmcsbi5leHRlbmQobCx7cmVsaWFibGVIaWRkZW5PZmZzZXRzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWImJmsoKSxmfSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT1iJiZrKCksZX0scGl4ZWxNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1iJiZrKCksY30scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBudWxsPT1iJiZrKCksYn0scmVsaWFibGVNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1iJiZrKCksZ30scmVsaWFibGVNYXJnaW5MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWImJmsoKSxofX0pO2Z1bmN0aW9uIGsoKXt2YXIgayxsLG09ZC5kb2N1bWVudEVsZW1lbnQ7bS5hcHBlbmRDaGlsZChpKSxqLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7dG9wOjElO3dpZHRoOjUwJSIsYj1lPWg9ITEsYz1nPSEwLGEuZ2V0Q29tcHV0ZWRTdHlsZSYmKGw9YS5nZXRDb21wdXRlZFN0eWxlKGopLGI9IjElIiE9PShsfHx7fSkudG9wLGg9IjJweCI9PT0obHx8e30pLm1hcmdpbkxlZnQsZT0iNHB4Ij09PShsfHx7d2lkdGg6IjRweCJ9KS53aWR0aCxqLnN0eWxlLm1hcmdpblJpZ2h0PSI1MCUiLGM9IjRweCI9PT0obHx8e21hcmdpblJpZ2h0OiI0cHgifSkubWFyZ2luUmlnaHQsaz1qLmFwcGVuZENoaWxkKGQuY3JlYXRlRWxlbWVudCgiZGl2IikpLGsuc3R5bGUuY3NzVGV4dD1qLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MCIsay5zdHlsZS5tYXJnaW5SaWdodD1rLnN0eWxlLndpZHRoPSIwIixqLnN0eWxlLndpZHRoPSIxcHgiLGc9IXBhcnNlRmxvYXQoKGEuZ2V0Q29tcHV0ZWRTdHlsZShrKXx8e30pLm1hcmdpblJpZ2h0KSxqLnJlbW92ZUNoaWxkKGspKSxqLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGY9MD09PWouZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgsZiYmKGouc3R5bGUuZGlzcGxheT0iIixqLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIsai5jaGlsZE5vZGVzWzBdLnN0eWxlLmJvcmRlckNvbGxhcHNlPSJzZXBhcmF0ZSIsaz1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLGtbMF0uc3R5bGUuY3NzVGV4dD0ibWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowO2Rpc3BsYXk6bm9uZSIsZj0wPT09a1swXS5vZmZzZXRIZWlnaHQsZiYmKGtbMF0uc3R5bGUuZGlzcGxheT0iIixrWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGY9MD09PWtbMF0ub2Zmc2V0SGVpZ2h0KSksbS5yZW1vdmVDaGlsZChpKX19fSgpO3ZhciBSYSxTYSxUYT0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhSYT1mdW5jdGlvbihiKXt2YXIgYz1iLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7cmV0dXJuIGMmJmMub3BlbmVyfHwoYz1hKSxjLmdldENvbXB1dGVkU3R5bGUoYil9LFNhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7cmV0dXJuIGM9Y3x8UmEoYSksZz1jP2MuZ2V0UHJvcGVydHlWYWx1ZShiKXx8Y1tiXTp2b2lkIDAsIiIhPT1nJiZ2b2lkIDAhPT1nfHxuLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KGc9bi5zdHlsZShhLGIpKSxjJiYhbC5waXhlbE1hcmdpblJpZ2h0KCkmJk9hLnRlc3QoZykmJk5hLnRlc3QoYikmJihkPWgud2lkdGgsZT1oLm1pbldpZHRoLGY9aC5tYXhXaWR0aCxoLm1pbldpZHRoPWgubWF4V2lkdGg9aC53aWR0aD1nLGc9Yy53aWR0aCxoLndpZHRoPWQsaC5taW5XaWR0aD1lLGgubWF4V2lkdGg9Ziksdm9pZCAwPT09Zz9nOmcrIiJ9KTpRYS5jdXJyZW50U3R5bGUmJihSYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5jdXJyZW50U3R5bGV9LFNhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7cmV0dXJuIGM9Y3x8UmEoYSksZz1jP2NbYl06dm9pZCAwLG51bGw9PWcmJmgmJmhbYl0mJihnPWhbYl0pLE9hLnRlc3QoZykmJiFUYS50ZXN0KGIpJiYoZD1oLmxlZnQsZT1hLnJ1bnRpbWVTdHlsZSxmPWUmJmUubGVmdCxmJiYoZS5sZWZ0PWEuY3VycmVudFN0eWxlLmxlZnQpLGgubGVmdD0iZm9udFNpemUiPT09Yj8iMWVtIjpnLGc9aC5waXhlbExlZnQrInB4IixoLmxlZnQ9ZCxmJiYoZS5sZWZ0PWYpKSx2b2lkIDA9PT1nP2c6ZysiInx8ImF1dG8ifSk7ZnVuY3Rpb24gVWEoYSxiKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEoKT92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19dmFyIFZhPS9hbHBoYVwoW14pXSpcKS9pLFdhPS9vcGFjaXR5XHMqPVxzKihbXildKikvaSxYYT0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sWWE9bmV3IFJlZ0V4cCgiXigiK1QrIikoLiopJCIsImkiKSxaYT17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sJGE9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9LF9hPVsiV2Via2l0IiwiTyIsIk1veiIsIm1zIl0sYWI9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZTtmdW5jdGlvbiBiYihhKXtpZihhIGluIGFiKXJldHVybiBhO3ZhciBiPWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zbGljZSgxKSxjPV9hLmxlbmd0aDt3aGlsZShjLS0paWYoYT1fYVtjXStiLGEgaW4gYWIpcmV0dXJuIGF9ZnVuY3Rpb24gY2IoYSxiKXtmb3IodmFyIGMsZCxlLGY9W10sZz0wLGg9YS5sZW5ndGg7aD5nO2crKylkPWFbZ10sZC5zdHlsZSYmKGZbZ109bi5fZGF0YShkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJlcoZCkmJihmW2ddPW4uX2RhdGEoZCwib2xkZGlzcGxheSIsTWEoZC5ub2RlTmFtZSkpKSk6KGU9VyhkKSwoYyYmIm5vbmUiIT09Y3x8IWUpJiZuLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGU/YzpuLmNzcyhkLCJkaXNwbGF5IikpKSk7Zm9yKGc9MDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoYiYmIm5vbmUiIT09ZC5zdHlsZS5kaXNwbGF5JiYiIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxheT1iP2ZbZ118fCIiOiJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIGRiKGEsYixjKXt2YXIgZD1ZYS5leGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpifWZ1bmN0aW9uIGViKGEsYixjLGQsZSl7Zm9yKHZhciBmPWM9PT0oZD8iYm9yZGVyIjoiY29udGVudCIpPzQ6IndpZHRoIj09PWI/MTowLGc9MDs0PmY7Zis9MikibWFyZ2luIj09PWMmJihnKz1uLmNzcyhhLGMrVltmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09YyYmKGctPW4uY3NzKGEsInBhZGRpbmciK1ZbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPW4uY3NzKGEsImJvcmRlciIrVltmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPW4uY3NzKGEsInBhZGRpbmciK1ZbZl0sITAsZSksInBhZGRpbmciIT09YyYmKGcrPW4uY3NzKGEsImJvcmRlciIrVltmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJuIGd9ZnVuY3Rpb24gZmIoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxmPVJhKGEpLGc9bC5ib3hTaXppbmcmJiJib3JkZXItYm94Ij09PW4uY3NzKGEsImJveFNpemluZyIsITEsZik7aWYoMD49ZXx8bnVsbD09ZSl7aWYoZT1TYShhLGIsZiksKDA+ZXx8bnVsbD09ZSkmJihlPWEuc3R5bGVbYl0pLE9hLnRlc3QoZSkpcmV0dXJuIGU7ZD1nJiYobC5ib3hTaXppbmdSZWxpYWJsZSgpfHxlPT09YS5zdHlsZVtiXSksZT1wYXJzZUZsb2F0KGUpfHwwfXJldHVybiBlK2ViKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZikrInB4In1uLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3ZhciBjPVNhKGEsIm9wYWNpdHkiKTtyZXR1cm4iIj09PWM/IjEiOmN9fX19LGNzc051bWJlcjp7YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6bC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1uLmNhbWVsQ2FzZShiKSxpPWEuc3R5bGU7aWYoYj1uLmNzc1Byb3BzW2hdfHwobi5jc3NQcm9wc1toXT1iYihoKXx8aCksZz1uLmNzc0hvb2tzW2JdfHxuLmNzc0hvb2tzW2hdLHZvaWQgMD09PWMpcmV0dXJuIGcmJiJnZXQiaW4gZyYmdm9pZCAwIT09KGU9Zy5nZXQoYSwhMSxkKSk/ZTppW2JdO2lmKGY9dHlwZW9mIGMsInN0cmluZyI9PT1mJiYoZT1VLmV4ZWMoYykpJiZlWzFdJiYoYz1YKGEsYixlKSxmPSJudW1iZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiPT09ZiYmKGMrPWUmJmVbM118fChuLmNzc051bWJlcltoXT8iIjoicHgiKSksbC5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLCEoZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0oYz1nLnNldChhLGMsZCkpKSkpdHJ5e2lbYl09Y31jYXRjaChqKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZyxoPW4uY2FtZWxDYXNlKGIpO3JldHVybiBiPW4uY3NzUHJvcHNbaF18fChuLmNzc1Byb3BzW2hdPWJiKGgpfHxoKSxnPW4uY3NzSG9va3NbYl18fG4uY3NzSG9va3NbaF0sZyYmImdldCJpbiBnJiYoZj1nLmdldChhLCEwLGMpKSx2b2lkIDA9PT1mJiYoZj1TYShhLGIsZCkpLCJub3JtYWwiPT09ZiYmYiBpbiAkYSYmKGY9JGFbYl0pLCIiPT09Y3x8Yz8oZT1wYXJzZUZsb2F0KGYpLGM9PT0hMHx8aXNGaW5pdGUoZSk/ZXx8MDpmKTpmfX0pLG4uZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXtuLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBjP1hhLnRlc3Qobi5jc3MoYSwiZGlzcGxheSIpKSYmMD09PWEub2Zmc2V0V2lkdGg/UGEoYSxaYSxmdW5jdGlvbigpe3JldHVybiBmYihhLGIsZCl9KTpmYihhLGIsZCk6dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPWQmJlJhKGEpO3JldHVybiBkYihhLGMsZD9lYihhLGIsZCxsLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bi5jc3MoYSwiYm94U2l6aW5nIiwhMSxlKSxlKTowKX19fSksbC5vcGFjaXR5fHwobi5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gV2EudGVzdCgoYiYmYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGUuZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrIiI6Yj8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGUsZD1hLmN1cnJlbnRTdHlsZSxlPW4uaXNOdW1lcmljKGIpPyJhbHBoYShvcGFjaXR5PSIrMTAwKmIrIikiOiIiLGY9ZCYmZC5maWx0ZXJ8fGMuZmlsdGVyfHwiIjtjLnpvb209MSwoYj49MXx8IiI9PT1iKSYmIiI9PT1uLnRyaW0oZi5yZXBsYWNlKFZhLCIiKSkmJmMucmVtb3ZlQXR0cmlidXRlJiYoYy5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpLCIiPT09Ynx8ZCYmIWQuZmlsdGVyKXx8KGMuZmlsdGVyPVZhLnRlc3QoZik/Zi5yZXBsYWNlKFZhLGUpOmYrIiAiK2UpfX0pLG4uY3NzSG9va3MubWFyZ2luUmlnaHQ9VWEobC5yZWxpYWJsZU1hcmdpblJpZ2h0LGZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/UGEoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sU2EsW2EsIm1hcmdpblJpZ2h0Il0pOnZvaWQgMH0pLG4uY3NzSG9va3MubWFyZ2luTGVmdD1VYShsLnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihhLGIpe3JldHVybiBiPyhwYXJzZUZsb2F0KFNhKGEsIm1hcmdpbkxlZnQiKSl8fChuLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKT9hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtUGEoYSx7Cm1hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSk6MCkpKyJweCI6dm9pZCAwfSksbi5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtuLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPXt9LGY9InN0cmluZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ND5kO2QrKyllW2ErVltkXStiXT1mW2RdfHxmW2QtMl18fGZbMF07cmV0dXJuIGV9fSxOYS50ZXN0KGEpfHwobi5jc3NIb29rc1thK2JdLnNldD1kYil9KSxuLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPXt9LGc9MDtpZihuLmlzQXJyYXkoYikpe2ZvcihkPVJhKGEpLGU9Yi5sZW5ndGg7ZT5nO2crKylmW2JbZ11dPW4uY3NzKGEsYltnXSwhMSxkKTtyZXR1cm4gZn1yZXR1cm4gdm9pZCAwIT09Yz9uLnN0eWxlKGEsYixjKTpuLmNzcyhhLGIpfSxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0sc2hvdzpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGE/YT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtXKHRoaXMpP24odGhpcykuc2hvdygpOm4odGhpcykuaGlkZSgpfSl9fSk7ZnVuY3Rpb24gZ2IoYSxiLGMsZCxlKXtyZXR1cm4gbmV3IGdiLnByb3RvdHlwZS5pbml0KGEsYixjLGQsZSl9bi5Ud2Vlbj1nYixnYi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmdiLGluaXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuZWxlbT1hLHRoaXMucHJvcD1jLHRoaXMuZWFzaW5nPWV8fG4uZWFzaW5nLl9kZWZhdWx0LHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwobi5jc3NOdW1iZXJbY10/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPWdiLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTpnYi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz1nYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPWI9bi5lYXNpbmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9Yj1hLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSpiK3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLGMmJmMuc2V0P2Muc2V0KHRoaXMpOmdiLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319LGdiLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1nYi5wcm90b3R5cGUsZ2IucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiAxIT09YS5lbGVtLm5vZGVUeXBlfHxudWxsIT1hLmVsZW1bYS5wcm9wXSYmbnVsbD09YS5lbGVtLnN0eWxlW2EucHJvcF0/YS5lbGVtW2EucHJvcF06KGI9bi5jc3MoYS5lbGVtLGEucHJvcCwiIiksYiYmImF1dG8iIT09Yj9iOjApfSxzZXQ6ZnVuY3Rpb24oYSl7bi5meC5zdGVwW2EucHJvcF0/bi5meC5zdGVwW2EucHJvcF0oYSk6MSE9PWEuZWxlbS5ub2RlVHlwZXx8bnVsbD09YS5lbGVtLnN0eWxlW24uY3NzUHJvcHNbYS5wcm9wXV0mJiFuLmNzc0hvb2tzW2EucHJvcF0/YS5lbGVtW2EucHJvcF09YS5ub3c6bi5zdHlsZShhLmVsZW0sYS5wcm9wLGEubm93K2EudW5pdCl9fX0sZ2IucHJvcEhvb2tzLnNjcm9sbFRvcD1nYi5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGEpe2EuZWxlbS5ub2RlVHlwZSYmYS5lbGVtLnBhcmVudE5vZGUmJihhLmVsZW1bYS5wcm9wXT1hLm5vdyl9fSxuLmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxzd2luZzpmdW5jdGlvbihhKXtyZXR1cm4uNS1NYXRoLmNvcyhhKk1hdGguUEkpLzJ9LF9kZWZhdWx0OiJzd2luZyJ9LG4uZng9Z2IucHJvdG90eXBlLmluaXQsbi5meC5zdGVwPXt9O3ZhciBoYixpYixqYj0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sa2I9L3F1ZXVlSG9va3MkLztmdW5jdGlvbiBsYigpe3JldHVybiBhLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtoYj12b2lkIDB9KSxoYj1uLm5vdygpfWZ1bmN0aW9uIG1iKGEsYil7dmFyIGMsZD17aGVpZ2h0OmF9LGU9MDtmb3IoYj1iPzE6MDs0PmU7ZSs9Mi1iKWM9VltlXSxkWyJtYXJnaW4iK2NdPWRbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihkLm9wYWNpdHk9ZC53aWR0aD1hKSxkfWZ1bmN0aW9uIG5iKGEsYixjKXtmb3IodmFyIGQsZT0ocWIudHdlZW5lcnNbYl18fFtdKS5jb25jYXQocWIudHdlZW5lcnNbIioiXSksZj0wLGc9ZS5sZW5ndGg7Zz5mO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcmV0dXJuIGR9ZnVuY3Rpb24gb2IoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbT10aGlzLG89e30scD1hLnN0eWxlLHE9YS5ub2RlVHlwZSYmVyhhKSxyPW4uX2RhdGEoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGg9bi5fcXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWgudW5xdWV1ZWQmJihoLnVucXVldWVkPTAsaT1oLmVtcHR5LmZpcmUsaC5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7aC51bnF1ZXVlZHx8aSgpfSksaC51bnF1ZXVlZCsrLG0uYWx3YXlzKGZ1bmN0aW9uKCl7bS5hbHdheXMoZnVuY3Rpb24oKXtoLnVucXVldWVkLS0sbi5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8aC5lbXB0eS5maXJlKCl9KX0pKSwxPT09YS5ub2RlVHlwZSYmKCJoZWlnaHQiaW4gYnx8IndpZHRoImluIGIpJiYoYy5vdmVyZmxvdz1bcC5vdmVyZmxvdyxwLm92ZXJmbG93WCxwLm92ZXJmbG93WV0saj1uLmNzcyhhLCJkaXNwbGF5Iiksaz0ibm9uZSI9PT1qP24uX2RhdGEoYSwib2xkZGlzcGxheSIpfHxNYShhLm5vZGVOYW1lKTpqLCJpbmxpbmUiPT09ayYmIm5vbmUiPT09bi5jc3MoYSwiZmxvYXQiKSYmKGwuaW5saW5lQmxvY2tOZWVkc0xheW91dCYmImlubGluZSIhPT1NYShhLm5vZGVOYW1lKT9wLnpvb209MTpwLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxjLm92ZXJmbG93JiYocC5vdmVyZmxvdz0iaGlkZGVuIixsLnNocmlua1dyYXBCbG9ja3MoKXx8bS5hbHdheXMoZnVuY3Rpb24oKXtwLm92ZXJmbG93PWMub3ZlcmZsb3dbMF0scC5vdmVyZmxvd1g9Yy5vdmVyZmxvd1sxXSxwLm92ZXJmbG93WT1jLm92ZXJmbG93WzJdfSkpO2ZvcihkIGluIGIpaWYoZT1iW2RdLGpiLmV4ZWMoZSkpe2lmKGRlbGV0ZSBiW2RdLGY9Znx8InRvZ2dsZSI9PT1lLGU9PT0ocT8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09ZXx8IXJ8fHZvaWQgMD09PXJbZF0pY29udGludWU7cT0hMH1vW2RdPXImJnJbZF18fG4uc3R5bGUoYSxkKX1lbHNlIGo9dm9pZCAwO2lmKG4uaXNFbXB0eU9iamVjdChvKSkiaW5saW5lIj09PSgibm9uZSI9PT1qP01hKGEubm9kZU5hbWUpOmopJiYocC5kaXNwbGF5PWopO2Vsc2V7cj8iaGlkZGVuImluIHImJihxPXIuaGlkZGVuKTpyPW4uX2RhdGEoYSwiZnhzaG93Iix7fSksZiYmKHIuaGlkZGVuPSFxKSxxP24oYSkuc2hvdygpOm0uZG9uZShmdW5jdGlvbigpe24oYSkuaGlkZSgpfSksbS5kb25lKGZ1bmN0aW9uKCl7dmFyIGI7bi5fcmVtb3ZlRGF0YShhLCJmeHNob3ciKTtmb3IoYiBpbiBvKW4uc3R5bGUoYSxiLG9bYl0pfSk7Zm9yKGQgaW4gbylnPW5iKHE/cltkXTowLGQsbSksZCBpbiByfHwocltkXT1nLnN0YXJ0LHEmJihnLmVuZD1nLnN0YXJ0LGcuc3RhcnQ9IndpZHRoIj09PWR8fCJoZWlnaHQiPT09ZD8xOjApKX19ZnVuY3Rpb24gcGIoYSxiKXt2YXIgYyxkLGUsZixnO2ZvcihjIGluIGEpaWYoZD1uLmNhbWVsQ2FzZShjKSxlPWJbZF0sZj1hW2NdLG4uaXNBcnJheShmKSYmKGU9ZlsxXSxmPWFbY109ZlswXSksYyE9PWQmJihhW2RdPWYsZGVsZXRlIGFbY10pLGc9bi5jc3NIb29rc1tkXSxnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZiljIGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1lbHNlIGJbZF09ZX1mdW5jdGlvbiBxYihhLGIsYyl7dmFyIGQsZSxmPTAsZz1xYi5wcmVmaWx0ZXJzLmxlbmd0aCxoPW4uRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9yKHZhciBiPWhifHxsYigpLGM9TWF0aC5tYXgoMCxqLnN0YXJ0VGltZStqLmR1cmF0aW9uLWIpLGQ9Yy9qLmR1cmF0aW9ufHwwLGY9MS1kLGc9MCxpPWoudHdlZW5zLmxlbmd0aDtpPmc7ZysrKWoudHdlZW5zW2ddLnJ1bihmKTtyZXR1cm4gaC5ub3RpZnlXaXRoKGEsW2osZixjXSksMT5mJiZpP2M6KGgucmVzb2x2ZVdpdGgoYSxbal0pLCExKX0saj1oLnByb21pc2Uoe2VsZW06YSxwcm9wczpuLmV4dGVuZCh7fSxiKSxvcHRzOm4uZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpuLmVhc2luZy5fZGVmYXVsdH0sYyksb3JpZ2luYWxQcm9wZXJ0aWVzOmIsb3JpZ2luYWxPcHRpb25zOmMsc3RhcnRUaW1lOmhifHxsYigpLGR1cmF0aW9uOmMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9bi5Ud2VlbihhLGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdbYl18fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVucy5wdXNoKGQpLGR9LHN0b3A6ZnVuY3Rpb24oYil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3IoZT0hMDtkPmM7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj8oaC5ub3RpZnlXaXRoKGEsW2osMSwwXSksaC5yZXNvbHZlV2l0aChhLFtqLGJdKSk6aC5yZWplY3RXaXRoKGEsW2osYl0pLHRoaXN9fSksaz1qLnByb3BzO2ZvcihwYihrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtnPmY7ZisrKWlmKGQ9cWIucHJlZmlsdGVyc1tmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIG4uaXNGdW5jdGlvbihkLnN0b3ApJiYobi5fcXVldWVIb29rcyhqLmVsZW0sai5vcHRzLnF1ZXVlKS5zdG9wPW4ucHJveHkoZC5zdG9wLGQpKSxkO3JldHVybiBuLm1hcChrLG5iLGopLG4uaXNGdW5jdGlvbihqLm9wdHMuc3RhcnQpJiZqLm9wdHMuc3RhcnQuY2FsbChhLGopLG4uZngudGltZXIobi5leHRlbmQoaSx7ZWxlbTphLGFuaW06aixxdWV1ZTpqLm9wdHMucXVldWV9KSksai5wcm9ncmVzcyhqLm9wdHMucHJvZ3Jlc3MpLmRvbmUoai5vcHRzLmRvbmUsai5vcHRzLmNvbXBsZXRlKS5mYWlsKGoub3B0cy5mYWlsKS5hbHdheXMoai5vcHRzLmFsd2F5cyl9bi5BbmltYXRpb249bi5leHRlbmQocWIse3R3ZWVuZXJzOnsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpO3JldHVybiBYKGMuZWxlbSxhLFUuZXhlYyhiKSxjKSxjfV19LHR3ZWVuZXI6ZnVuY3Rpb24oYSxiKXtuLmlzRnVuY3Rpb24oYSk/KGI9YSxhPVsiKiJdKTphPWEubWF0Y2goRyk7Zm9yKHZhciBjLGQ9MCxlPWEubGVuZ3RoO2U+ZDtkKyspYz1hW2RdLHFiLnR3ZWVuZXJzW2NdPXFiLnR3ZWVuZXJzW2NdfHxbXSxxYi50d2VlbmVyc1tjXS51bnNoaWZ0KGIpfSxwcmVmaWx0ZXJzOltvYl0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9xYi5wcmVmaWx0ZXJzLnVuc2hpZnQoYSk6cWIucHJlZmlsdGVycy5wdXNoKGEpfX0pLG4uc3BlZWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEmJiJvYmplY3QiPT10eXBlb2YgYT9uLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8IWMmJmJ8fG4uaXNGdW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiZifHxiJiYhbi5pc0Z1bmN0aW9uKGIpJiZifTtyZXR1cm4gZC5kdXJhdGlvbj1uLmZ4Lm9mZj8wOiJudW1iZXIiPT10eXBlb2YgZC5kdXJhdGlvbj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gbi5meC5zcGVlZHM/bi5meC5zcGVlZHNbZC5kdXJhdGlvbl06bi5meC5zcGVlZHMuX2RlZmF1bHQsbnVsbCE9ZC5xdWV1ZSYmZC5xdWV1ZSE9PSEwfHwoZC5xdWV1ZT0iZngiKSxkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oKXtuLmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9sZC5jYWxsKHRoaXMpLGQucXVldWUmJm4uZGVxdWV1ZSh0aGlzLGQucXVldWUpfSxkfSxuLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcihXKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9LGEsYyxkKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1uLmlzRW1wdHlPYmplY3QoYSksZj1uLnNwZWVkKGIsYyxkKSxnPWZ1bmN0aW9uKCl7dmFyIGI9cWIodGhpcyxuLmV4dGVuZCh7fSxhKSxmKTsoZXx8bi5fZGF0YSh0aGlzLCJmaW5pc2giKSkmJmIuc3RvcCghMCl9O3JldHVybiBnLmZpbmlzaD1nLGV8fGYucXVldWU9PT0hMT90aGlzLmVhY2goZyk6dGhpcy5xdWV1ZShmLnF1ZXVlLGcpfSxzdG9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbihhKXt2YXIgYj1hLnN0b3A7ZGVsZXRlIGEuc3RvcCxiKGMpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihjPWIsYj1hLGE9dm9pZCAwKSxiJiZhIT09ITEmJnRoaXMucXVldWUoYXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ITAsZT1udWxsIT1hJiZhKyJxdWV1ZUhvb2tzIixmPW4udGltZXJzLGc9bi5fZGF0YSh0aGlzKTtpZihlKWdbZV0mJmdbZV0uc3RvcCYmZChnW2VdKTtlbHNlIGZvcihlIGluIGcpZ1tlXSYmZ1tlXS5zdG9wJiZrYi50ZXN0KGUpJiZkKGdbZV0pO2ZvcihlPWYubGVuZ3RoO2UtLTspZltlXS5lbGVtIT09dGhpc3x8bnVsbCE9YSYmZltlXS5xdWV1ZSE9PWF8fChmW2VdLmFuaW0uc3RvcChjKSxiPSExLGYuc3BsaWNlKGUsMSkpOyFiJiZjfHxuLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1uLl9kYXRhKHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1thKyJxdWV1ZUhvb2tzIl0sZj1uLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbi5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxuLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bi5mbltiXTtuLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUobWIoYiwhMCksYSxkLGUpfX0pLG4uZWFjaCh7c2xpZGVEb3duOm1iKCJzaG93Iiksc2xpZGVVcDptYigiaGlkZSIpLHNsaWRlVG9nZ2xlOm1iKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7bi5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxuLnRpbWVycz1bXSxuLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPW4udGltZXJzLGM9MDtmb3IoaGI9bi5ub3coKTtjPGIubGVuZ3RoO2MrKylhPWJbY10sYSgpfHxiW2NdIT09YXx8Yi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxuLmZ4LnN0b3AoKSxoYj12b2lkIDB9LG4uZngudGltZXI9ZnVuY3Rpb24oYSl7bi50aW1lcnMucHVzaChhKSxhKCk/bi5meC5zdGFydCgpOm4udGltZXJzLnBvcCgpfSxuLmZ4LmludGVydmFsPTEzLG4uZnguc3RhcnQ9ZnVuY3Rpb24oKXtpYnx8KGliPWEuc2V0SW50ZXJ2YWwobi5meC50aWNrLG4uZnguaW50ZXJ2YWwpKX0sbi5meC5zdG9wPWZ1bmN0aW9uKCl7YS5jbGVhckludGVydmFsKGliKSxpYj1udWxsfSxuLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxuLmZuLmRlbGF5PWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGI9bi5meD9uLmZ4LnNwZWVkc1tiXXx8YjpiLGM9Y3x8ImZ4Iix0aGlzLnF1ZXVlKGMsZnVuY3Rpb24oYyxkKXt2YXIgZT1hLnNldFRpbWVvdXQoYyxiKTtkLnN0b3A9ZnVuY3Rpb24oKXthLmNsZWFyVGltZW91dChlKX19KX0sZnVuY3Rpb24oKXt2YXIgYSxiPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxjPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksZT1kLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGY9ZS5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTtjPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksYy5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxjLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixhPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxiLnNldEF0dHJpYnV0ZSgidHlwZSIsImNoZWNrYm94IiksYy5hcHBlbmRDaGlsZChiKSxhPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxhLnN0eWxlLmNzc1RleHQ9InRvcDoxcHgiLGwuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWMuY2xhc3NOYW1lLGwuc3R5bGU9L3RvcC8udGVzdChhLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksbC5ocmVmTm9ybWFsaXplZD0iL2EiPT09YS5nZXRBdHRyaWJ1dGUoImhyZWYiKSxsLmNoZWNrT249ISFiLnZhbHVlLGwub3B0U2VsZWN0ZWQ9Zi5zZWxlY3RlZCxsLmVuY3R5cGU9ISFkLmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGUuZGlzYWJsZWQ9ITAsbC5vcHREaXNhYmxlZD0hZi5kaXNhYmxlZCxiPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxiLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSxsLmlucHV0PSIiPT09Yi5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYi52YWx1ZT0idCIsYi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGwucmFkaW9WYWx1ZT0idCI9PT1iLnZhbHVlfSgpO3ZhciByYj0vXHIvZyxzYj0vW1x4MjBcdFxyXG5cZl0rL2c7bi5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT10aGlzWzBdO3tpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPW4uaXNGdW5jdGlvbihhKSx0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGU7MT09PXRoaXMubm9kZVR5cGUmJihlPWQ/YS5jYWxsKHRoaXMsYyxuKHRoaXMpLnZhbCgpKTphLG51bGw9PWU/ZT0iIjoibnVtYmVyIj09dHlwZW9mIGU/ZSs9IiI6bi5pc0FycmF5KGUpJiYoZT1uLm1hcChlLGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOmErIiJ9KSksYj1uLnZhbEhvb2tzW3RoaXMudHlwZV18fG4udmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxiJiYic2V0ImluIGImJnZvaWQgMCE9PWIuc2V0KHRoaXMsZSwidmFsdWUiKXx8KHRoaXMudmFsdWU9ZSkpfSk7aWYoZSlyZXR1cm4gYj1uLnZhbEhvb2tzW2UudHlwZV18fG4udmFsSG9va3NbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxiJiYiZ2V0ImluIGImJnZvaWQgMCE9PShjPWIuZ2V0KGUsInZhbHVlIikpP2M6KGM9ZS52YWx1ZSwic3RyaW5nIj09dHlwZW9mIGM/Yy5yZXBsYWNlKHJiLCIiKTpudWxsPT1jPyIiOmMpfX19KSxuLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW4uZmluZC5hdHRyKGEsInZhbHVlIik7cmV0dXJuIG51bGwhPWI/YjpuLnRyaW0obi50ZXh0KGEpKS5yZXBsYWNlKHNiLCIgIil9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXtmb3IodmFyIGIsYyxkPWEub3B0aW9ucyxlPWEuc2VsZWN0ZWRJbmRleCxmPSJzZWxlY3Qtb25lIj09PWEudHlwZXx8MD5lLGc9Zj9udWxsOltdLGg9Zj9lKzE6ZC5sZW5ndGgsaT0wPmU/aDpmP2U6MDtoPmk7aSsrKWlmKGM9ZFtpXSwoYy5zZWxlY3RlZHx8aT09PWUpJiYobC5vcHREaXNhYmxlZD8hYy5kaXNhYmxlZDpudWxsPT09Yy5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikpJiYoIWMucGFyZW50Tm9kZS5kaXNhYmxlZHx8IW4ubm9kZU5hbWUoYy5wYXJlbnROb2RlLCJvcHRncm91cCIpKSl7aWYoYj1uKGMpLnZhbCgpLGYpcmV0dXJuIGI7Zy5wdXNoKGIpfXJldHVybiBnfSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9YS5vcHRpb25zLGY9bi5tYWtlQXJyYXkoYiksZz1lLmxlbmd0aDt3aGlsZShnLS0paWYoZD1lW2ddLG4uaW5BcnJheShuLnZhbEhvb2tzLm9wdGlvbi5nZXQoZCksZik+LTEpdHJ5e2Quc2VsZWN0ZWQ9Yz0hMH1jYXRjaChoKXtkLnNjcm9sbEhlaWdodH1lbHNlIGQuc2VsZWN0ZWQ9ITE7cmV0dXJuIGN8fChhLnNlbGVjdGVkSW5kZXg9LTEpLGV9fX19KSxuLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtuLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbi5pc0FycmF5KGIpP2EuY2hlY2tlZD1uLmluQXJyYXkobihhKS52YWwoKSxiKT4tMTp2b2lkIDB9fSxsLmNoZWNrT258fChuLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6YS52YWx1ZX0pfSk7dmFyIHRiLHViLHZiPW4uZXhwci5hdHRySGFuZGxlLHdiPS9eKD86Y2hlY2tlZHxzZWxlY3RlZCkkL2kseGI9bC5nZXRTZXRBdHRyaWJ1dGUseWI9bC5pbnB1dDtuLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiBZKHRoaXMsbi5hdHRyLGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLnJlbW92ZUF0dHIodGhpcyxhKX0pfX0pLG4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9YS5ub2RlVHlwZTtpZigzIT09ZiYmOCE9PWYmJjIhPT1mKXJldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgYS5nZXRBdHRyaWJ1dGU/bi5wcm9wKGEsYixjKTooMT09PWYmJm4uaXNYTUxEb2MoYSl8fChiPWIudG9Mb3dlckNhc2UoKSxlPW4uYXR0ckhvb2tzW2JdfHwobi5leHByLm1hdGNoLmJvb2wudGVzdChiKT91Yjp0YikpLHZvaWQgMCE9PWM/bnVsbD09PWM/dm9pZCBuLnJlbW92ZUF0dHIoYSxiKTplJiYic2V0ImluIGUmJnZvaWQgMCE9PShkPWUuc2V0KGEsYyxiKSk/ZDooYS5zZXRBdHRyaWJ1dGUoYixjKyIiKSxjKTplJiYiZ2V0ImluIGUmJm51bGwhPT0oZD1lLmdldChhLGIpKT9kOihkPW4uZmluZC5hdHRyKGEsYiksbnVsbD09ZD92b2lkIDA6ZCkpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihhLGIpe2lmKCFsLnJhZGlvVmFsdWUmJiJyYWRpbyI9PT1iJiZuLm5vZGVOYW1lKGEsImlucHV0Iikpe3ZhciBjPWEudmFsdWU7cmV0dXJuIGEuc2V0QXR0cmlidXRlKCJ0eXBlIixiKSxjJiYoYS52YWx1ZT1jKSxifX19fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPTAsZj1iJiZiLm1hdGNoKEcpO2lmKGYmJjE9PT1hLm5vZGVUeXBlKXdoaWxlKGM9ZltlKytdKWQ9bi5wcm9wRml4W2NdfHxjLG4uZXhwci5tYXRjaC5ib29sLnRlc3QoYyk/eWImJnhifHwhd2IudGVzdChjKT9hW2RdPSExOmFbbi5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtkXT0hMTpuLmF0dHIoYSxjLCIiKSxhLnJlbW92ZUF0dHJpYnV0ZSh4Yj9jOmQpfX0pLHViPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPT09ITE/bi5yZW1vdmVBdHRyKGEsYyk6eWImJnhifHwhd2IudGVzdChjKT9hLnNldEF0dHJpYnV0ZSgheGImJm4ucHJvcEZpeFtjXXx8YyxjKTphW24uY2FtZWxDYXNlKCJkZWZhdWx0LSIrYyldPWFbY109ITAsY319LG4uZWFjaChuLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihhLGIpe3ZhciBjPXZiW2JdfHxuLmZpbmQuYXR0cjt5YiYmeGJ8fCF3Yi50ZXN0KGIpP3ZiW2JdPWZ1bmN0aW9uKGEsYixkKXt2YXIgZSxmO3JldHVybiBkfHwoZj12YltiXSx2YltiXT1lLGU9bnVsbCE9YyhhLGIsZCk/Yi50b0xvd2VyQ2FzZSgpOm51bGwsdmJbYl09ZiksZX06dmJbYl09ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjP3ZvaWQgMDphW24uY2FtZWxDYXNlKCJkZWZhdWx0LSIrYildP2IudG9Mb3dlckNhc2UoKTpudWxsfX0pLHliJiZ4Ynx8KG4uYXR0ckhvb2tzLnZhbHVlPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuLm5vZGVOYW1lKGEsImlucHV0Iik/dm9pZChhLmRlZmF1bHRWYWx1ZT1iKTp0YiYmdGIuc2V0KGEsYixjKX19KSx4Ynx8KHRiPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0QXR0cmlidXRlTm9kZShjKTtyZXR1cm4gZHx8YS5zZXRBdHRyaWJ1dGVOb2RlKGQ9YS5vd25lckRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZShjKSksZC52YWx1ZT1iKz0iIiwidmFsdWUiPT09Y3x8Yj09PWEuZ2V0QXR0cmlidXRlKGMpP2I6dm9pZCAwfX0sdmIuaWQ9dmIubmFtZT12Yi5jb29yZHM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBjP3ZvaWQgMDooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiYiIiE9PWQudmFsdWU/ZC52YWx1ZTpudWxsfSxuLnZhbEhvb2tzLmJ1dHRvbj17Z2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpO3JldHVybiBjJiZjLnNwZWNpZmllZD9jLnZhbHVlOnZvaWQgMH0sc2V0OnRiLnNldH0sbi5hdHRySG9va3MuY29udGVudGVkaXRhYmxlPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3RiLnNldChhLCIiPT09Yj8hMTpiLGMpfX0sbi5lYWNoKFsid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihhLGIpe24uYXR0ckhvb2tzW2JdPXtzZXQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4iIj09PWM/KGEuc2V0QXR0cmlidXRlKGIsImF1dG8iKSxjKTp2b2lkIDB9fX0pKSxsLnN0eWxlfHwobi5hdHRySG9va3Muc3R5bGU9e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0fHx2b2lkIDB9LHNldDpmdW5jdGlvbihhLGIpe3JldHVybiBhLnN0eWxlLmNzc1RleHQ9YisiIn19KTt2YXIgemI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdCkkL2ksQWI9L14oPzphfGFyZWEpJC9pO24uZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFkodGhpcyxuLnByb3AsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9bi5wcm9wRml4W2FdfHxhLHRoaXMuZWFjaChmdW5jdGlvbigpe3RyeXt0aGlzW2FdPXZvaWQgMCxkZWxldGUgdGhpc1thXX1jYXRjaChiKXt9fSl9fSksbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1hLm5vZGVUeXBlO2lmKDMhPT1mJiY4IT09ZiYmMiE9PWYpcmV0dXJuIDE9PT1mJiZuLmlzWE1MRG9jKGEpfHwoYj1uLnByb3BGaXhbYl18fGIsZT1uLnByb3BIb29rc1tiXSksdm9pZCAwIT09Yz9lJiYic2V0ImluIGUmJnZvaWQgMCE9PShkPWUuc2V0KGEsYyxiKSk/ZDphW2JdPWM6ZSYmImdldCJpbiBlJiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDphW2JdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bi5maW5kLmF0dHIoYSwidGFiaW5kZXgiKTtyZXR1cm4gYj9wYXJzZUludChiLDEwKTp6Yi50ZXN0KGEubm9kZU5hbWUpfHxBYi50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY/MDotMX19fSxwcm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn19KSxsLmhyZWZOb3JtYWxpemVkfHxuLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXtuLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxsLm9wdFNlbGVjdGVkfHwobi5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH0sc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtiJiYoYi5zZWxlY3RlZEluZGV4LGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgpfX0pLG4uZWFjaChbInRhYkluZGV4IiwicmVhZE9ubHkiLCJtYXhMZW5ndGgiLCJjZWxsU3BhY2luZyIsImNlbGxQYWRkaW5nIiwicm93U3BhbiIsImNvbFNwYW4iLCJ1c2VNYXAiLCJmcmFtZUJvcmRlciIsImNvbnRlbnRFZGl0YWJsZSJdLGZ1bmN0aW9uKCl7bi5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pLGwuZW5jdHlwZXx8KG4ucHJvcEZpeC5lbmN0eXBlPSJlbmNvZGluZyIpO3ZhciBCYj0vW1x0XHJcblxmXS9nO2Z1bmN0aW9uIENiKGEpe3JldHVybiBuLmF0dHIoYSwiY2xhc3MiKXx8IiJ9bi5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk9MDtpZihuLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtuKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLGIsQ2IodGhpcykpKX0pO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmYSl7Yj1hLm1hdGNoKEcpfHxbXTt3aGlsZShjPXRoaXNbaSsrXSlpZihlPUNiKGMpLGQ9MT09PWMubm9kZVR5cGUmJigiICIrZSsiICIpLnJlcGxhY2UoQmIsIiAiKSl7Zz0wO3doaWxlKGY9YltnKytdKWQuaW5kZXhPZigiICIrZisiICIpPDAmJihkKz1mKyIgIik7aD1uLnRyaW0oZCksZSE9PWgmJm4uYXR0cihjLCJjbGFzcyIsaCl9fXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpPTA7aWYobi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bih0aGlzKS5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcyxiLENiKHRoaXMpKSl9KTtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5hdHRyKCJjbGFzcyIsIiIpO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmYSl7Yj1hLm1hdGNoKEcpfHxbXTt3aGlsZShjPXRoaXNbaSsrXSlpZihlPUNiKGMpLGQ9MT09PWMubm9kZVR5cGUmJigiICIrZSsiICIpLnJlcGxhY2UoQmIsIiAiKSl7Zz0wO3doaWxlKGY9YltnKytdKXdoaWxlKGQuaW5kZXhPZigiICIrZisiICIpPi0xKWQ9ZC5yZXBsYWNlKCIgIitmKyIgIiwiICIpO2g9bi50cmltKGQpLGUhPT1oJiZuLmF0dHIoYywiY2xhc3MiLGgpfX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6bi5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihjKXtuKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsQ2IodGhpcyksYiksYil9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYixkLGUsZjtpZigic3RyaW5nIj09PWMpe2Q9MCxlPW4odGhpcyksZj1hLm1hdGNoKEcpfHxbXTt3aGlsZShiPWZbZCsrXSllLmhhc0NsYXNzKGIpP2UucmVtb3ZlQ2xhc3MoYik6ZS5hZGRDbGFzcyhiKX1lbHNlIHZvaWQgMCE9PWEmJiJib29sZWFuIiE9PWN8fChiPUNiKHRoaXMpLGImJm4uX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIsYiksbi5hdHRyKHRoaXMsImNsYXNzIixifHxhPT09ITE/IiI6bi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKSl9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPTA7Yj0iICIrYSsiICI7d2hpbGUoYz10aGlzW2QrK10paWYoMT09PWMubm9kZVR5cGUmJigiICIrQ2IoYykrIiAiKS5yZXBsYWNlKEJiLCIgIikuaW5kZXhPZihiKT4tMSlyZXR1cm4hMDtyZXR1cm4hMX19KSxuLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IgY29udGV4dG1lbnUiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtuLmZuW2JdPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLm9uKGIsbnVsbCxhLGMpOnRoaXMudHJpZ2dlcihiKX19KSxuLmZuLmV4dGVuZCh7aG92ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGEpLm1vdXNlbGVhdmUoYnx8YSl9fSk7dmFyIERiPWEubG9jYXRpb24sRWI9bi5ub3coKSxGYj0vXD8vLEdiPS8oLCl8KFxbfHspfCh9fF0pfCIoPzpbXiJcXFxyXG5dfFxcWyJcXFwvYmZucnRdfFxcdVtcZGEtZkEtRl17NH0pKiJccyo6P3x0cnVlfGZhbHNlfG51bGx8LT8oPyEwXGQpXGQrKD86XC5cZCt8KSg/OltlRV1bKy1dP1xkK3wpL2c7bi5wYXJzZUpTT049ZnVuY3Rpb24oYil7aWYoYS5KU09OJiZhLkpTT04ucGFyc2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKyIiKTt2YXIgYyxkPW51bGwsZT1uLnRyaW0oYisiIik7cmV0dXJuIGUmJiFuLnRyaW0oZS5yZXBsYWNlKEdiLGZ1bmN0aW9uKGEsYixlLGYpe3JldHVybiBjJiZiJiYoZD0wKSwwPT09ZD9hOihjPWV8fGIsZCs9IWYtIWUsIiIpfSkpP0Z1bmN0aW9uKCJyZXR1cm4gIitlKSgpOm4uZXJyb3IoIkludmFsaWQgSlNPTjogIitiKX0sbi5wYXJzZVhNTD1mdW5jdGlvbihiKXt2YXIgYyxkO2lmKCFifHwic3RyaW5nIiE9dHlwZW9mIGIpcmV0dXJuIG51bGw7dHJ5e2EuRE9NUGFyc2VyPyhkPW5ldyBhLkRPTVBhcnNlcixjPWQucGFyc2VGcm9tU3RyaW5nKGIsInRleHQveG1sIikpOihjPW5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bi5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIEhiPS8jLiokLyxJYj0vKFs/Jl0pXz1bXiZdKi8sSmI9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxLYj0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxMYj0vXig/OkdFVHxIRUFEKSQvLE1iPS9eXC9cLy8sTmI9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sT2I9e30sUGI9e30sUWI9IiovIi5jb25jYXQoIioiKSxSYj1EYi5ocmVmLFNiPU5iLmV4ZWMoUmIudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIFRiKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEcpfHxbXTtpZihuLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gVWIoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09UGI7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxuLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBWYihhLGIpe3ZhciBjLGQsZT1uLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZuLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gV2IoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gWGIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1uLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6UmIsdHlwZToiR0VUIixpc0xvY2FsOktiLnRlc3QoU2JbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6UWIsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L1xieG1sXGIvLGh0bWw6L1xiaHRtbC8sanNvbjovXGJqc29uXGIvfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0Iixqc29uOiJyZXNwb25zZUpTT04ifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjpTdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6bi5wYXJzZUpTT04sInRleHQgeG1sIjpuLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9WYihWYihhLG4uYWpheFNldHRpbmdzKSxiKTpWYihuLmFqYXhTZXR0aW5ncyxhKX0sYWpheFByZWZpbHRlcjpUYihPYiksYWpheFRyYW5zcG9ydDpUYihQYiksYWpheDpmdW5jdGlvbihiLGMpeyJvYmplY3QiPT10eXBlb2YgYiYmKGM9YixiPXZvaWQgMCksYz1jfHx7fTt2YXIgZCxlLGYsZyxoLGksaixrLGw9bi5hamF4U2V0dXAoe30sYyksbT1sLmNvbnRleHR8fGwsbz1sLmNvbnRleHQmJihtLm5vZGVUeXBlfHxtLmpxdWVyeSk/bihtKTpuLmV2ZW50LHA9bi5EZWZlcnJlZCgpLHE9bi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iikscj1sLnN0YXR1c0NvZGV8fHt9LHM9e30sdD17fSx1PTAsdj0iY2FuY2VsZWQiLHc9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYjtpZigyPT09dSl7aWYoIWspe2s9e307d2hpbGUoYj1KYi5leGVjKGcpKWtbYlsxXS50b0xvd2VyQ2FzZSgpXT1iWzJdfWI9a1thLnRvTG93ZXJDYXNlKCldfXJldHVybiBudWxsPT1iP251bGw6Yn0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIDI9PT11P2c6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihhLGIpe3ZhciBjPWEudG9Mb3dlckNhc2UoKTtyZXR1cm4gdXx8KGE9dFtjXT10W2NdfHxhLHNbYV09YiksdGhpc30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gdXx8KGwubWltZVR5cGU9YSksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihhKXt2YXIgYjtpZihhKWlmKDI+dSlmb3IoYiBpbiBhKXJbYl09W3JbYl0sYVtiXV07ZWxzZSB3LmFsd2F5cyhhW3cuc3RhdHVzXSk7cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe3ZhciBiPWF8fHY7cmV0dXJuIGomJmouYWJvcnQoYikseSgwLGIpLHRoaXN9fTtpZihwLnByb21pc2UodykuY29tcGxldGU9cS5hZGQsdy5zdWNjZXNzPXcuZG9uZSx3LmVycm9yPXcuZmFpbCxsLnVybD0oKGJ8fGwudXJsfHxSYikrIiIpLnJlcGxhY2UoSGIsIiIpLnJlcGxhY2UoTWIsU2JbMV0rIi8vIiksbC50eXBlPWMubWV0aG9kfHxjLnR5cGV8fGwubWV0aG9kfHxsLnR5cGUsbC5kYXRhVHlwZXM9bi50cmltKGwuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChHKXx8WyIiXSxudWxsPT1sLmNyb3NzRG9tYWluJiYoZD1OYi5leGVjKGwudXJsLnRvTG93ZXJDYXNlKCkpLGwuY3Jvc3NEb21haW49ISghZHx8ZFsxXT09PVNiWzFdJiZkWzJdPT09U2JbMl0mJihkWzNdfHwoImh0dHA6Ij09PWRbMV0/IjgwIjoiNDQzIikpPT09KFNiWzNdfHwoImh0dHA6Ij09PVNiWzFdPyI4MCI6IjQ0MyIpKSkpLGwuZGF0YSYmbC5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiBsLmRhdGEmJihsLmRhdGE9bi5wYXJhbShsLmRhdGEsbC50cmFkaXRpb25hbCkpLFViKE9iLGwsYyx3KSwyPT09dSlyZXR1cm4gdztpPW4uZXZlbnQmJmwuZ2xvYmFsLGkmJjA9PT1uLmFjdGl2ZSsrJiZuLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLGwudHlwZT1sLnR5cGUudG9VcHBlckNhc2UoKSxsLmhhc0NvbnRlbnQ9IUxiLnRlc3QobC50eXBlKSxmPWwudXJsLGwuaGFzQ29udGVudHx8KGwuZGF0YSYmKGY9bC51cmwrPShGYi50ZXN0KGYpPyImIjoiPyIpK2wuZGF0YSxkZWxldGUgbC5kYXRhKSxsLmNhY2hlPT09ITEmJihsLnVybD1JYi50ZXN0KGYpP2YucmVwbGFjZShJYiwiJDFfPSIrRWIrKyk6ZisoRmIudGVzdChmKT8iJiI6Ij8iKSsiXz0iK0ViKyspKSxsLmlmTW9kaWZpZWQmJihuLmxhc3RNb2RpZmllZFtmXSYmdy5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsbi5sYXN0TW9kaWZpZWRbZl0pLG4uZXRhZ1tmXSYmdy5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixuLmV0YWdbZl0pKSwobC5kYXRhJiZsLmhhc0NvbnRlbnQmJmwuY29udGVudFR5cGUhPT0hMXx8Yy5jb250ZW50VHlwZSkmJncuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixsLmNvbnRlbnRUeXBlKSx3LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsbC5kYXRhVHlwZXNbMF0mJmwuYWNjZXB0c1tsLmRhdGFUeXBlc1swXV0/bC5hY2NlcHRzW2wuZGF0YVR5cGVzWzBdXSsoIioiIT09bC5kYXRhVHlwZXNbMF0/IiwgIitRYisiOyBxPTAuMDEiOiIiKTpsLmFjY2VwdHNbIioiXSk7Zm9yKGUgaW4gbC5oZWFkZXJzKXcuc2V0UmVxdWVzdEhlYWRlcihlLGwuaGVhZGVyc1tlXSk7aWYobC5iZWZvcmVTZW5kJiYobC5iZWZvcmVTZW5kLmNhbGwobSx3LGwpPT09ITF8fDI9PT11KSlyZXR1cm4gdy5hYm9ydCgpO3Y9ImFib3J0Ijtmb3IoZSBpbntzdWNjZXNzOjEsZXJyb3I6MSxjb21wbGV0ZToxfSl3W2VdKGxbZV0pO2lmKGo9VWIoUGIsbCxjLHcpKXtpZih3LnJlYWR5U3RhdGU9MSxpJiZvLnRyaWdnZXIoImFqYXhTZW5kIixbdyxsXSksMj09PXUpcmV0dXJuIHc7bC5hc3luYyYmbC50aW1lb3V0PjAmJihoPWEuc2V0VGltZW91dChmdW5jdGlvbigpe3cuYWJvcnQoInRpbWVvdXQiKX0sbC50aW1lb3V0KSk7dHJ5e3U9MSxqLnNlbmQocyx5KX1jYXRjaCh4KXtpZighKDI+dSkpdGhyb3cgeDt5KC0xLHgpfX1lbHNlIHkoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHkoYixjLGQsZSl7dmFyIGsscyx0LHYseCx5PWM7MiE9PXUmJih1PTIsaCYmYS5jbGVhclRpbWVvdXQoaCksaj12b2lkIDAsZz1lfHwiIix3LnJlYWR5U3RhdGU9Yj4wPzQ6MCxrPWI+PTIwMCYmMzAwPmJ8fDMwND09PWIsZCYmKHY9V2IobCx3LGQpKSx2PVhiKGwsdix3LGspLGs/KGwuaWZNb2RpZmllZCYmKHg9dy5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLHgmJihuLmxhc3RNb2RpZmllZFtmXT14KSx4PXcuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSx4JiYobi5ldGFnW2ZdPXgpKSwyMDQ9PT1ifHwiSEVBRCI9PT1sLnR5cGU/eT0ibm9jb250ZW50IjozMDQ9PT1iP3k9Im5vdG1vZGlmaWVkIjooeT12LnN0YXRlLHM9di5kYXRhLHQ9di5lcnJvcixrPSF0KSk6KHQ9eSwhYiYmeXx8KHk9ImVycm9yIiwwPmImJihiPTApKSksdy5zdGF0dXM9Yix3LnN0YXR1c1RleHQ9KGN8fHkpKyIiLGs/cC5yZXNvbHZlV2l0aChtLFtzLHksd10pOnAucmVqZWN0V2l0aChtLFt3LHksdF0pLHcuc3RhdHVzQ29kZShyKSxyPXZvaWQgMCxpJiZvLnRyaWdnZXIoaz8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt3LGwsaz9zOnRdKSxxLmZpcmVXaXRoKG0sW3cseV0pLGkmJihvLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3csbF0pLC0tbi5hY3RpdmV8fG4uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB3fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbi5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG4uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG4uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe25bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG4uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG4uYWpheChuLmV4dGVuZCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0sbi5pc1BsYWluT2JqZWN0KGEpJiZhKSl9fSksbi5fZXZhbFVybD1mdW5jdGlvbihhKXtyZXR1cm4gbi5hamF4KHt1cmw6YSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGNhY2hlOiEwLGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pfSxuLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihhKXtpZihuLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtuKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk7aWYodGhpc1swXSl7dmFyIGI9bihhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RDaGlsZCYmMT09PWEuZmlyc3RDaGlsZC5ub2RlVHlwZSlhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiBuLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe24odGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPW4odGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9bi5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7bih0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMsYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe24ubm9kZU5hbWUodGhpcywiYm9keSIpfHxuKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX19KTtmdW5jdGlvbiBZYihhKXtyZXR1cm4gYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxuLmNzcyhhLCJkaXNwbGF5Iil9ZnVuY3Rpb24gWmIoYSl7aWYoIW4uY29udGFpbnMoYS5vd25lckRvY3VtZW50fHxkLGEpKXJldHVybiEwO3doaWxlKGEmJjE9PT1hLm5vZGVUeXBlKXtpZigibm9uZSI9PT1ZYihhKXx8ImhpZGRlbiI9PT1hLnR5cGUpcmV0dXJuITA7YT1hLnBhcmVudE5vZGV9cmV0dXJuITF9bi5leHByLmZpbHRlcnMuaGlkZGVuPWZ1bmN0aW9uKGEpe3JldHVybiBsLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpP2Eub2Zmc2V0V2lkdGg8PTAmJmEub2Zmc2V0SGVpZ2h0PD0wJiYhYS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aDpaYihhKX0sbi5leHByLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihhKXtyZXR1cm4hbi5leHByLmZpbHRlcnMuaGlkZGVuKGEpfTt2YXIgJGI9LyUyMC9nLF9iPS9cW1xdJC8sYWM9L1xyP1xuL2csYmM9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLGNjPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtmdW5jdGlvbiBkYyhhLGIsYyxkKXt2YXIgZTtpZihuLmlzQXJyYXkoYikpbi5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHxfYi50ZXN0KGEpP2QoYSxlKTpkYyhhKyJbIisoIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKGN8fCJvYmplY3QiIT09bi50eXBlKGIpKWQoYSxiKTtlbHNlIGZvcihlIGluIGIpZGMoYSsiWyIrZSsiXSIsYltlXSxjLGQpfW4ucGFyYW09ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9ZnVuY3Rpb24oYSxiKXtiPW4uaXNGdW5jdGlvbihiKT9iKCk6bnVsbD09Yj8iIjpiLGRbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGIpfTtpZih2b2lkIDA9PT1iJiYoYj1uLmFqYXhTZXR0aW5ncyYmbi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpLG4uaXNBcnJheShhKXx8YS5qcXVlcnkmJiFuLmlzUGxhaW5PYmplY3QoYSkpbi5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKGMgaW4gYSlkYyhjLGFbY10sYixlKTtyZXR1cm4gZC5qb2luKCImIikucmVwbGFjZSgkYiwiKyIpfSxuLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIG4ucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT1uLnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gYT9uLm1ha2VBcnJheShhKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFuKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYmY2MudGVzdCh0aGlzLm5vZGVOYW1lKSYmIWJjLnRlc3QoYSkmJih0aGlzLmNoZWNrZWR8fCFaLnRlc3QoYSkpfSkubWFwKGZ1bmN0aW9uKGEsYil7dmFyIGM9bih0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09Yz9udWxsOm4uaXNBcnJheShjKT9uLm1hcChjLGZ1bmN0aW9uKGEpe3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTphLnJlcGxhY2UoYWMsIlxyXG4iKX19KTp7bmFtZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKGFjLCJcclxuIil9fSkuZ2V0KCl9fSksbi5hamF4U2V0dGluZ3MueGhyPXZvaWQgMCE9PWEuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzTG9jYWw/aWMoKTpkLmRvY3VtZW50TW9kZT44P2hjKCk6L14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmaGMoKXx8aWMoKX06aGM7dmFyIGVjPTAsZmM9e30sZ2M9bi5hamF4U2V0dGluZ3MueGhyKCk7YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib251bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIGZjKWZjW2FdKHZvaWQgMCwhMCl9KSxsLmNvcnM9ISFnYyYmIndpdGhDcmVkZW50aWFscyJpbiBnYyxnYz1sLmFqYXg9ISFnYyxnYyYmbi5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGIpe2lmKCFiLmNyb3NzRG9tYWlufHxsLmNvcnMpe3ZhciBjO3JldHVybntzZW5kOmZ1bmN0aW9uKGQsZSl7dmFyIGYsZz1iLnhocigpLGg9KytlYztpZihnLm9wZW4oYi50eXBlLGIudXJsLGIuYXN5bmMsYi51c2VybmFtZSxiLnBhc3N3b3JkKSxiLnhockZpZWxkcylmb3IoZiBpbiBiLnhockZpZWxkcylnW2ZdPWIueGhyRmllbGRzW2ZdO2IubWltZVR5cGUmJmcub3ZlcnJpZGVNaW1lVHlwZSYmZy5vdmVycmlkZU1pbWVUeXBlKGIubWltZVR5cGUpLGIuY3Jvc3NEb21haW58fGRbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGRbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZiBpbiBkKXZvaWQgMCE9PWRbZl0mJmcuc2V0UmVxdWVzdEhlYWRlcihmLGRbZl0rIiIpO2cuc2VuZChiLmhhc0NvbnRlbnQmJmIuZGF0YXx8bnVsbCksYz1mdW5jdGlvbihhLGQpe3ZhciBmLGksajtpZihjJiYoZHx8ND09PWcucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIGZjW2hdLGM9dm9pZCAwLGcub25yZWFkeXN0YXRlY2hhbmdlPW4ubm9vcCxkKTQhPT1nLnJlYWR5U3RhdGUmJmcuYWJvcnQoKTtlbHNle2o9e30sZj1nLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGcucmVzcG9uc2VUZXh0JiYoai50ZXh0PWcucmVzcG9uc2VUZXh0KTt0cnl7aT1nLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1mfHwhYi5pc0xvY2FsfHxiLmNyb3NzRG9tYWluPzEyMjM9PT1mJiYoZj0yMDQpOmY9ai50ZXh0PzIwMDo0MDR9aiYmZShmLGksaixnLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYi5hc3luYz80PT09Zy5yZWFkeVN0YXRlP2Euc2V0VGltZW91dChjKTpnLm9ucmVhZHlzdGF0ZWNoYW5nZT1mY1toXT1jOmMoKX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKHZvaWQgMCwhMCl9fX19KTtmdW5jdGlvbiBoYygpe3RyeXtyZXR1cm4gbmV3IGEuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYil7fX1mdW5jdGlvbiBpYygpe3RyeXtyZXR1cm4gbmV3IGEuQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKX1jYXRjaChiKXt9fW4uYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBuLmdsb2JhbEV2YWwoYSksYX19fSksbi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG4uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPWQuaGVhZHx8bigiaGVhZCIpWzBdfHxkLmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihlLGYpe2I9ZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxmKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgamM9W10sa2M9Lyg9KVw/KD89JnwkKXxcP1w/LztuLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9amMucG9wKCl8fG4uZXhwYW5kbysiXyIrRWIrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG4uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGtjLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYwPT09KGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYma2MudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW4uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGtjLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPShGYi50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bi5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXt2b2lkIDA9PT1mP24oYSkucmVtb3ZlUHJvcChlKTphW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssamMucHVzaChlKSksZyYmbi5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbi5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fGQ7dmFyIGU9eC5leGVjKGEpLGY9IWMmJltdO3JldHVybiBlP1tiLmNyZWF0ZUVsZW1lbnQoZVsxXSldOihlPWphKFthXSxiLGYpLGYmJmYubGVuZ3RoJiZuKGYpLnJlbW92ZSgpLG4ubWVyZ2UoW10sZS5jaGlsZE5vZGVzKSl9O3ZhciBsYz1uLmZuLmxvYWQ7bi5mbi5sb2FkPWZ1bmN0aW9uKGEsYixjKXtpZigic3RyaW5nIiE9dHlwZW9mIGEmJmxjKXJldHVybiBsYy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGQsZSxmLGc9dGhpcyxoPWEuaW5kZXhPZigiICIpO3JldHVybiBoPi0xJiYoZD1uLnRyaW0oYS5zbGljZShoLGEubGVuZ3RoKSksYT1hLnNsaWNlKDAsaCkpLG4uaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0Ij09dHlwZW9mIGImJihlPSJQT1NUIiksZy5sZW5ndGg+MCYmbi5hamF4KHt1cmw6YSx0eXBlOmV8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2Y9YXJndW1lbnRzLGcuaHRtbChkP24oIjxkaXY+IikuYXBwZW5kKG4ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuYWx3YXlzKGMmJmZ1bmN0aW9uKGEsYil7Zy5lYWNoKGZ1bmN0aW9uKCl7Yy5hcHBseSh0aGlzLGZ8fFthLnJlc3BvbnNlVGV4dCxiLGFdKX0pfSksdGhpc30sbi5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oYSxiKXtuLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9uKGIsYSl9fSksbi5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZ3JlcChuLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH07ZnVuY3Rpb24gbWMoYSl7cmV0dXJuIG4uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1uLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW4uY3NzKGEsInBvc2l0aW9uIiksbD1uKGEpLG09e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1uLmNzcyhhLCJ0b3AiKSxpPW4uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiZuLmluQXJyYXkoImF1dG8iLFtmLGldKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksbi5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLG4uZXh0ZW5kKHt9LGgpKSksbnVsbCE9Yi50b3AmJihtLnRvcD1iLnRvcC1oLnRvcCtnKSxudWxsIT1iLmxlZnQmJihtLmxlZnQ9Yi5sZWZ0LWgubGVmdCtlKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxtKTpsLmNzcyhtKX19LG4uZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtuLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGIsYyxkPXt0b3A6MCxsZWZ0OjB9LGU9dGhpc1swXSxmPWUmJmUub3duZXJEb2N1bWVudDtpZihmKXJldHVybiBiPWYuZG9jdW1lbnRFbGVtZW50LG4uY29udGFpbnMoYixlKT8oInVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCYmKGQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksYz1tYyhmKSx7dG9wOmQudG9wKyhjLnBhZ2VZT2Zmc2V0fHxiLnNjcm9sbFRvcCktKGIuY2xpZW50VG9wfHwwKSxsZWZ0OmQubGVmdCsoYy5wYWdlWE9mZnNldHx8Yi5zY3JvbGxMZWZ0KS0oYi5jbGllbnRMZWZ0fHwwKX0pOmR9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGEsYixjPXt0b3A6MCxsZWZ0OjB9LGQ9dGhpc1swXTtyZXR1cm4iZml4ZWQiPT09bi5jc3MoZCwicG9zaXRpb24iKT9iPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6KGE9dGhpcy5vZmZzZXRQYXJlbnQoKSxiPXRoaXMub2Zmc2V0KCksbi5ub2RlTmFtZShhWzBdLCJodG1sIil8fChjPWEub2Zmc2V0KCkpLGMudG9wKz1uLmNzcyhhWzBdLCJib3JkZXJUb3BXaWR0aCIsITApLGMubGVmdCs9bi5jc3MoYVswXSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpLHt0b3A6Yi50b3AtYy50b3Atbi5jc3MoZCwibWFyZ2luVG9wIiwhMCksbGVmdDpiLmxlZnQtYy5sZWZ0LW4uY3NzKGQsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShhJiYhbi5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09bi5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxRYX0pfX0pLG4uZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO24uZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9bWMoYSk7cmV0dXJuIHZvaWQgMD09PWU/Zj9iIGluIGY/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/bihmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6bihmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbi5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bi5jc3NIb29rc1tiXT1VYShsLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz1TYShhLGIpLE9hLnRlc3QoYyk/bihhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxuLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe24uZWFjaCh7CnBhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKGMsZCl7bi5mbltkXT1mdW5jdGlvbihkLGUpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBkKSxnPWN8fChkPT09ITB8fGU9PT0hMD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihiLGMsZCl7dmFyIGU7cmV0dXJuIG4uaXNXaW5kb3coYik/Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGU9Yi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGVbInNjcm9sbCIrYV0sYi5ib2R5WyJvZmZzZXQiK2FdLGVbIm9mZnNldCIrYV0sZVsiY2xpZW50IithXSkpOnZvaWQgMD09PWQ/bi5jc3MoYixjLGcpOm4uc3R5bGUoYixjLGQsZyl9LGIsZj9kOnZvaWQgMCxmLG51bGwpfX0pfSksbi5mbi5leHRlbmQoe2JpbmQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLm9uKGEsbnVsbCxiLGMpfSx1bmJpbmQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5vZmYoYSxudWxsLGIpfSxkZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihiLGEsYyxkKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMub2ZmKGEsIioqIik6dGhpcy5vZmYoYixhfHwiKioiLGMpfX0pLG4uZm4uc2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sbi5mbi5hbmRTZWxmPW4uZm4uYWRkQmFjaywiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gbn0pO3ZhciBuYz1hLmpRdWVyeSxvYz1hLiQ7cmV0dXJuIG4ubm9Db25mbGljdD1mdW5jdGlvbihiKXtyZXR1cm4gYS4kPT09biYmKGEuJD1vYyksYiYmYS5qUXVlcnk9PT1uJiYoYS5qUXVlcnk9bmMpLG59LGJ8fChhLmpRdWVyeT1hLiQ9biksbn0pOwo="></script>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgewoKLy8gc29tZSBoZWxwZXIgZnVuY3Rpb25zOiB1c2luZyBhIGdsb2JhbCBvYmplY3QgRFRXaWRnZXQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZAovLyBpbiBKUygpIGNvZGUsIGUuZy4gZGF0YXRhYmxlKG9wdGlvbnMgPSBsaXN0KGZvbyA9IEpTKCdjb2RlJykpKTsgdW5saWtlIFIncwovLyBkeW5hbWljIHNjb3BpbmcsIHdoZW4gJ2NvZGUnIGlzIGV2YWwoKSdlZCwgSmF2YVNjcmlwdCBkb2VzIG5vdCBrbm93IG9iamVjdHMKLy8gZnJvbSB0aGUgInBhcmVudCBmcmFtZSIsIGUuZy4gSlMoJ0RUV2lkZ2V0Jykgd2lsbCBub3Qgd29yayB1bmxlc3MgaXQgd2FzIG1hZGUKLy8gYSBnbG9iYWwgb2JqZWN0CnZhciBEVFdpZGdldCA9IHt9OwoKRFRXaWRnZXQuZm9ybWF0Q3VycmVuY3kgPSBmdW5jdGlvbih0aGl6LCByb3csIGRhdGEsIGNvbCwgY3VycmVuY3ksIGRpZ2l0cywgaW50ZXJ2YWwsIG1hcmssIGRlY01hcmssIGJlZm9yZSkgewogIHZhciBkID0gcGFyc2VGbG9hdChkYXRhW2NvbF0pOwogIGlmIChpc05hTihkKSkgcmV0dXJuOwogIC8vIDEyMzQ1NjY2Ni43ODkwIC0+IDEyMyw0NTYsNjY2Ljc4OTAKICB2YXIgbWFya0ludGVydmFsID0gZnVuY3Rpb24oeCwgaW50ZXJ2YWwsIG1hcmspIHsKICAgIGlmICghL14tP1tcZC5dKyQvLnRlc3QoeCkpIHJldHVybiB4OwogICAgdmFyIHh2ID0geC5zcGxpdCgnLicpOwogICAgaWYgKHh2Lmxlbmd0aCA+IDIpIHJldHVybiB4OyAgLy8gc2hvdWxkIGhhdmUgYXQgbW9zdCBvbmUgZGVjaW1hbCBwb2ludAogICAgeHZbMF0gPSB4dlswXS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcQig/PShcXGR7JyArIGludGVydmFsICsgJ30pKyg/IVxcZCkpJywgJ2cnKSwgbWFyayk7CiAgICByZXR1cm4geHYuam9pbihkZWNNYXJrKTsKICB9OwogIGQgPSBkLnRvRml4ZWQoZGlnaXRzKTsKICB2YXIgcmVzID0gbWFya0ludGVydmFsKGQsIGludGVydmFsLCBtYXJrKTsKICByZXMgPSBiZWZvcmUgPyAoL14tLy50ZXN0KHJlcykgPyAnLScgKyBjdXJyZW5jeSArIHJlcy5yZXBsYWNlKC9eLS8sICcnKSA6IGN1cnJlbmN5ICsgcmVzKSA6CiAgICByZXMgKyBjdXJyZW5jeTsKICAkKHRoaXouYXBpKCkuY2VsbChyb3csIGNvbCkubm9kZSgpKS5odG1sKHJlcyk7Cn07CgpEVFdpZGdldC5mb3JtYXRTdHJpbmcgPSBmdW5jdGlvbih0aGl6LCByb3csIGRhdGEsIGNvbCwgcHJlZml4LCBzdWZmaXgpIHsKICB2YXIgZCA9IGRhdGFbY29sXTsKICBpZiAoZCA9PT0gbnVsbCkgcmV0dXJuOwogICQodGhpei5hcGkoKS5jZWxsKHJvdywgY29sKS5ub2RlKCkpLmh0bWwocHJlZml4ICsgZCArIHN1ZmZpeCk7Cn07CgpEVFdpZGdldC5mb3JtYXRQZXJjZW50YWdlID0gZnVuY3Rpb24odGhpeiwgcm93LCBkYXRhLCBjb2wsIGRpZ2l0cykgewogIHZhciBkID0gcGFyc2VGbG9hdChkYXRhW2NvbF0pOwogIGlmIChpc05hTihkKSkgcmV0dXJuOwogICQodGhpei5hcGkoKS5jZWxsKHJvdywgY29sKS5ub2RlKCkpLmh0bWwoKGQgKiAxMDApLnRvRml4ZWQoZGlnaXRzKSArICclJyk7Cn07CgpEVFdpZGdldC5mb3JtYXRSb3VuZCA9IGZ1bmN0aW9uKHRoaXosIHJvdywgZGF0YSwgY29sLCBkaWdpdHMpIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YVtjb2xdKTsKICBpZiAoaXNOYU4oZCkpIHJldHVybjsKICAkKHRoaXouYXBpKCkuY2VsbChyb3csIGNvbCkubm9kZSgpKS5odG1sKGQudG9GaXhlZChkaWdpdHMpKTsKfTsKCkRUV2lkZ2V0LmZvcm1hdFNpZ25pZiA9IGZ1bmN0aW9uKHRoaXosIHJvdywgZGF0YSwgY29sLCBkaWdpdHMpIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YVtjb2xdKTsKICBpZiAoaXNOYU4oZCkpIHJldHVybjsKICAkKHRoaXouYXBpKCkuY2VsbChyb3csIGNvbCkubm9kZSgpKS5odG1sKGQudG9QcmVjaXNpb24oZGlnaXRzKSk7Cn07CgpEVFdpZGdldC5mb3JtYXREYXRlID0gZnVuY3Rpb24odGhpeiwgcm93LCBkYXRhLCBjb2wsIG1ldGhvZCkgewogIHZhciBkID0gZGF0YVtjb2xdOwogIGlmIChkID09PSBudWxsKSByZXR1cm47CiAgZCA9IG5ldyBEYXRlKGQpOwogICQodGhpei5hcGkoKS5jZWxsKHJvdywgY29sKS5ub2RlKCkpLmh0bWwoZFttZXRob2RdKCkpOwp9OwoKd2luZG93LkRUV2lkZ2V0ID0gRFRXaWRnZXQ7Cgp2YXIgdHJhbnNwb3NlQXJyYXkyRCA9IGZ1bmN0aW9uKGEpIHsKICByZXR1cm4gYS5sZW5ndGggPT09IDAgPyBhIDogSFRNTFdpZGdldHMudHJhbnNwb3NlQXJyYXkyRChhKTsKfTsKCkhUTUxXaWRnZXRzLndpZGdldCh7CiAgbmFtZTogImRhdGF0YWJsZXMiLAogIHR5cGU6ICJvdXRwdXQiLAogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAkKGVsKS5odG1sKCcmbmJzcDsnKTsKICAgIHJldHVybiB7IGRhdGE6IG51bGwgfTsKICB9LAogIHJlbmRlclZhbHVlOiBmdW5jdGlvbihlbCwgZGF0YSwgaW5zdGFuY2UpIHsKICAgIGlmIChlbC5vZmZzZXRXaWR0aCA9PT0gMCB8fCBlbC5vZmZzZXRIZWlnaHQgPT09IDApIHsKICAgICAgaW5zdGFuY2UuZGF0YSA9IGRhdGE7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGluc3RhbmNlLmRhdGEgPSBudWxsOwogICAgdmFyICRlbCA9ICQoZWwpOwogICAgJGVsLmVtcHR5KCk7CgogICAgaWYgKGRhdGEgPT09IG51bGwpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIC8vIElmIHdlIGFyZSBpbiBhIGZsZXhkYXNoYm9hcmQgc2Nyb2xsIGxheW91dCB0aGVuIHdlOgogICAgLy8gIChhKSBBbHdheXMgd2FudCB0byB1c2UgcGFnaW5hdGlvbiAob3RoZXJ3aXNlIHdlJ2xsIGhhdmUKICAgIC8vICAgICAgYSAiZG91YmxlIHNjcm9sbCBiYXIiIGVmZmVjdCBvbiB0aGUgcGhvbmUpOyBhbmQKICAgIC8vICAoYikgTmV2ZXIgd2FudCB0byBmaWxsIHRoZSBjb250YWluZXIgKHdlIHdhbnQgdGhlIHBhZ2luYXRpb24KICAgIC8vICAgICAgbGV2ZWwgdG8gZGV0ZXJtaW5lIHRoZSBzaXplIG9mIHRoZSBjb250YWluZXIpCiAgICBpZiAod2luZG93LkZsZXhEYXNoYm9hcmQgJiYgIXdpbmRvdy5GbGV4RGFzaGJvYXJkLmlzRmlsbFBhZ2UoKSkgewogICAgICBkYXRhLm9wdGlvbnMuYlBhZ2luYXRlID0gdHJ1ZTsKICAgICAgZGF0YS5maWxsQ29udGFpbmVyID0gZmFsc2U7CiAgICB9CgogICAgLy8gaWYgd2UgYXJlIGluIHRoZSB2aWV3ZXIgdGhlbiB3ZSBhbHdheXMgd2FudCB0byBmaWxsQ29udGFpbmVyIGFuZAogICAgLy8gYW5kIGF1dG9IaWRlTmF2aWdhdGlvbiAodW5sZXNzIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5IHNldCB0aGVzZSkKICAgIGlmICh3aW5kb3cuSFRNTFdpZGdldHMudmlld2VyTW9kZSkgewogICAgICBpZiAoIWRhdGEuaGFzT3duUHJvcGVydHkoImZpbGxDb250YWluZXIiKSkKICAgICAgICBkYXRhLmZpbGxDb250YWluZXIgPSB0cnVlOwogICAgICBpZiAoIWRhdGEuaGFzT3duUHJvcGVydHkoImF1dG9IaWRlTmF2aWdhdGlvbiIpKQogICAgICAgIGRhdGEuYXV0b0hpZGVOYXZpZ2F0aW9uID0gdHJ1ZTsKICAgIH0KCiAgICAvLyBwcm9wYWdhdGUgZmlsbENvbnRhaW5lciB0byBpbnN0YW5jZSAoc28gd2UgaGF2ZSBpdCBpbiByZXNpemUpCiAgICBpbnN0YW5jZS5maWxsQ29udGFpbmVyID0gZGF0YS5maWxsQ29udGFpbmVyOwoKICAgIHZhciBjZWxscyA9IGRhdGEuZGF0YTsKCiAgICBpZiAoY2VsbHMgaW5zdGFuY2VvZiBBcnJheSkgY2VsbHMgPSB0cmFuc3Bvc2VBcnJheTJEKGNlbGxzKTsKCiAgICAkZWwuYXBwZW5kKGRhdGEuY29udGFpbmVyKTsKICAgIHZhciAkdGFibGUgPSAkZWwuZmluZCgndGFibGUnKTsKICAgIGlmIChkYXRhLmNsYXNzKSAkdGFibGUuYWRkQ2xhc3MoZGF0YS5jbGFzcyk7CiAgICBpZiAoZGF0YS5jYXB0aW9uKSAkdGFibGUucHJlcGVuZChkYXRhLmNhcHRpb24pOwoKICAgIGlmIChIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgZGF0YS5zZWxlY3Rpb24ubW9kZSAhPT0gJ25vbmUnICYmCiAgICAgICAgZGF0YS5zZWxlY3Rpb24udGFyZ2V0ID09PSAncm93K2NvbHVtbicpIHsKICAgICAgaWYgKCR0YWJsZS5jaGlsZHJlbigndGZvb3QnKS5sZW5ndGggPT09IDApIHsKICAgICAgICAkdGFibGUuYXBwZW5kKCQoJzx0Zm9vdD4nKSk7CiAgICAgICAgJHRhYmxlLmZpbmQoJ3RoZWFkIHRyJykuY2xvbmUoKS5hcHBlbmRUbygkdGFibGUuZmluZCgndGZvb3QnKSk7CiAgICAgIH0KICAgIH0KCiAgICAvLyBjb2x1bW4gZmlsdGVycwogICAgdmFyIGZpbHRlclJvdzsKICAgIHN3aXRjaCAoZGF0YS5maWx0ZXIpIHsKICAgICAgY2FzZSAndG9wJzoKICAgICAgICAkdGFibGUuY2hpbGRyZW4oJ3RoZWFkJykuYXBwZW5kKGRhdGEuZmlsdGVySFRNTCk7CiAgICAgICAgZmlsdGVyUm93ID0gJHRhYmxlLmZpbmQoJ3RoZWFkIHRyOmxhc3QgdGQnKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnYm90dG9tJzoKICAgICAgICBpZiAoJHRhYmxlLmNoaWxkcmVuKCd0Zm9vdCcpLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgJHRhYmxlLmFwcGVuZCgkKCc8dGZvb3Q+JykpOwogICAgICAgIH0KICAgICAgICAkdGFibGUuY2hpbGRyZW4oJ3Rmb290JykucHJlcGVuZChkYXRhLmZpbHRlckhUTUwpOwogICAgICAgIGZpbHRlclJvdyA9ICR0YWJsZS5maW5kKCd0Zm9vdCB0cjpmaXJzdCB0ZCcpOwogICAgICAgIGJyZWFrOwogICAgfQoKICAgIHZhciBvcHRpb25zID0geyBzZWFyY2hEZWxheTogMTAwMCB9OwogICAgaWYgKGNlbGxzICE9PSBudWxsKSAkLmV4dGVuZChvcHRpb25zLCB7CiAgICAgIGRhdGE6IGNlbGxzCiAgICB9KTsKCiAgICAvLyBvcHRpb25zIGZvciBmaWxsQ29udGFpbmVyCiAgICB2YXIgYm9vdHN0cmFwQWN0aXZlID0gdHlwZW9mKCQuZm4ucG9wb3ZlcikgIT0gJ3VuZGVmaW5lZCc7CiAgICBpZiAoaW5zdGFuY2UuZmlsbENvbnRhaW5lcikgewoKICAgICAgLy8gZm9yY2Ugc2Nyb2xsWC9zY3JvbGxZIGFuZCB0dXJuIG9mZiBhdXRvV2lkdGgKICAgICAgb3B0aW9ucy5zY3JvbGxYID0gdHJ1ZTsKICAgICAgb3B0aW9ucy5zY3JvbGxZID0gIjEwMHB4IjsgLy8gY2FuIGJlIGFueSB2YWx1ZSwgd2UnbGwgYWRqdXN0IGJlbG93CgogICAgICAvLyBpZiB3ZSBhcmVuJ3QgcGFnaW5hdGluZyB0aGVuIG1vdmUgYXJvdW5kIHRoZSBpbmZvL2ZpbHRlciBjb250cm9scwogICAgICAvLyB0byBzYXZlIHNwYWNlIGF0IHRoZSBib3R0b20gYW5kIHJlcGhyYXNlIHRoZSBpbmZvIGNhbGxiYWNrCiAgICAgIGlmIChkYXRhLm9wdGlvbnMuYlBhZ2luYXRlID09PSBmYWxzZSkgewoKICAgICAgICAvLyB3ZSBrbm93IGhvdyB0byBkbyB0aGlzIGNsZWFubHkgZm9yIGJvb3RzdHJhcCwgbm90IHNvIG11Y2gKICAgICAgICAvLyBmb3Igb3RoZXIgdGhlbWVzL2xheW91dHMKICAgICAgICBpZiAoYm9vdHN0cmFwQWN0aXZlKSB7CiAgICAgICAgICBvcHRpb25zLmRvbSA9ICI8J3Jvdyc8J2NvbC1zbS00J2k+PCdjb2wtc20tOCdmPj4iICsKICAgICAgICAgICAgICAgICAgICAgICAgIjwncm93JzwnY29sLXNtLTEyJ3RyPj4iOwogICAgICAgIH0KCiAgICAgICAgb3B0aW9ucy5mbkluZm9DYWxsYmFjayA9IGZ1bmN0aW9uKG9TZXR0aW5ncywgaVN0YXJ0LCBpRW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaU1heCwgaVRvdGFsLCBzUHJlKSB7CiAgICAgICAgICByZXR1cm4gTnVtYmVyKGlUb3RhbCkudG9Mb2NhbGVTdHJpbmcoKSArICIgcmVjb3JkcyI7CiAgICAgICAgfTsKICAgICAgfQogICAgfQoKICAgIC8vIGF1dG8gaGlkZSBuYXZpZ2F0aW9uIGlmIHJlcXVlc3RlZAogICAgaWYgKGRhdGEuYXV0b0hpZGVOYXZpZ2F0aW9uID09PSB0cnVlKSB7CiAgICAgIGlmIChib290c3RyYXBBY3RpdmUgJiYgZGF0YS5vcHRpb25zLmJQYWdpbmF0ZSAhPT0gZmFsc2UpIHsKICAgICAgICAvLyBzdHJpcCBhbGwgbmF2IGlmIGxlbmd0aCA+PSBjZWxscwogICAgICAgIGlmICgoY2VsbHMgaW5zdGFuY2VvZiBBcnJheSkgJiYgZGF0YS5vcHRpb25zLmlEaXNwbGF5TGVuZ3RoID49IGNlbGxzLmxlbmd0aCkKICAgICAgICAgIG9wdGlvbnMuZG9tID0gIjwncm93JzwnY29sLXNtLTEyJ3RyPj4iOwogICAgICAgIC8vIGFsdGVybmF0aXZlbHkgbGVhbiB0aGluZ3Mgb3V0IGZvciBmbGV4ZGFzaGJvYXJkIG1vYmlsZSBwb3J0cmFpdAogICAgICAgIGVsc2UgaWYgKHdpbmRvdy5GbGV4RGFzaGJvYXJkICYmIHdpbmRvdy5GbGV4RGFzaGJvYXJkLmlzTW9iaWxlUGhvbmUoKSkKICAgICAgICAgIG9wdGlvbnMuZG9tID0gIjwncm93JzwnY29sLXNtLTEyJ2Y+PiIgKwogICAgICAgICAgICAgICAgICAgICAgICAiPCdyb3cnPCdjb2wtc20tMTIndHI+PiIgICsKICAgICAgICAgICAgICAgICAgICAgICAgIjwncm93JzwnY29sLXNtLTEyJ3A+PiI7CiAgICAgIH0KICAgIH0KCiAgICAkLmV4dGVuZCh0cnVlLCBvcHRpb25zLCBkYXRhLm9wdGlvbnMgfHwge30pOwoKICAgIHZhciBzZWFyY2hDb2xzID0gb3B0aW9ucy5zZWFyY2hDb2xzOwogICAgaWYgKHNlYXJjaENvbHMpIHsKICAgICAgc2VhcmNoQ29scyA9IHNlYXJjaENvbHMubWFwKGZ1bmN0aW9uKHgpIHsKICAgICAgICByZXR1cm4geCA9PT0gbnVsbCA/ICcnIDogeC5zZWFyY2g7CiAgICAgIH0pOwogICAgICAvLyBGSVhNRTogdGhpcyBtZWFucyBJIGRvbid0IHJlc3BlY3QgdGhlIGVzY2FwZVJlZ2V4IHNldHRpbmcKICAgICAgZGVsZXRlIG9wdGlvbnMuc2VhcmNoQ29sczsKICAgIH0KCiAgICAvLyBzZXJ2ZXItc2lkZSBwcm9jZXNzaW5nPwogICAgdmFyIHNlcnZlciA9IG9wdGlvbnMuc2VydmVyU2lkZSA9PT0gdHJ1ZTsKCiAgICAvLyB1c2UgdGhlIGRhdGFTcmMgZnVuY3Rpb24gdG8gcHJlLXByb2Nlc3MgSlNPTiBkYXRhIHJldHVybmVkIGZyb20gUgogICAgdmFyIERUX3Jvd3NfYWxsID0gW10sIERUX3Jvd3NfY3VycmVudCA9IFtdOwogICAgaWYgKHNlcnZlciAmJiBIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgdHlwZW9mIG9wdGlvbnMuYWpheCA9PT0gJ29iamVjdCcgJiYKICAgICAgICAvXnNlc3Npb25cL1tcZGEtel0rXC9kYXRhb2JqLy50ZXN0KG9wdGlvbnMuYWpheC51cmwpICYmICFvcHRpb25zLmFqYXguZGF0YVNyYykgewogICAgICBvcHRpb25zLmFqYXguZGF0YVNyYyA9IGZ1bmN0aW9uKGpzb24pIHsKICAgICAgICBEVF9yb3dzX2FsbCA9ICQubWFrZUFycmF5KGpzb24uRFRfcm93c19hbGwpOwogICAgICAgIERUX3Jvd3NfY3VycmVudCA9ICQubWFrZUFycmF5KGpzb24uRFRfcm93c19jdXJyZW50KTsKICAgICAgICByZXR1cm4ganNvbi5kYXRhOwogICAgICB9OwogICAgfQoKICAgIHZhciB0YWJsZSA9ICR0YWJsZS5EYXRhVGFibGUob3B0aW9ucyk7CiAgICAkZWwuZGF0YSgnZGF0YXRhYmxlJywgdGFibGUpOwoKICAgIHZhciBpbkFycmF5ID0gZnVuY3Rpb24odmFsLCBhcnJheSkgewogICAgICByZXR1cm4gJC5pbkFycmF5KHZhbCwgJC5tYWtlQXJyYXkoYXJyYXkpKSA+IC0xOwogICAgfTsKCiAgICAvLyBlbmNvZGUgKyB0byAlMkIgd2hlbiBzZWFyY2hpbmcgaW4gdGhlIHRhYmxlIG9uIHNlcnZlciBzaWRlLCBiZWNhdXNlCiAgICAvLyBzaGlueTo6cGFyc2VRdWVyeVN0cmluZygpIHRyZWF0cyArIGFzIHNwYWNlcywgYW5kIERhdGFUYWJsZXMgZG9lcyBub3QKICAgIC8vIGVuY29kZSArIHRvICUyQiAob3IgJSB0byAlMjUpIHdoZW4gc2VuZGluZyB0aGUgcmVxdWVzdAogICAgdmFyIGVuY29kZV9wbHVzID0gZnVuY3Rpb24oeCkgewogICAgICByZXR1cm4gc2VydmVyID8geC5yZXBsYWNlKC8lL2csICclMjUnKS5yZXBsYWNlKC9cKy9nLCAnJTJCJykgOiB4OwogICAgfTsKCiAgICBpZiAoZGF0YS5maWx0ZXIgIT09ICdub25lJykgewoKICAgICAgZmlsdGVyUm93LmVhY2goZnVuY3Rpb24oaSwgdGQpIHsKCiAgICAgICAgdmFyICR0ZCA9ICQodGQpLCB0eXBlID0gJHRkLmRhdGEoJ3R5cGUnKSwgZmlsdGVyOwogICAgICAgIHZhciAkaW5wdXQgPSAkdGQuY2hpbGRyZW4oJ2RpdicpLmZpcnN0KCkuY2hpbGRyZW4oJ2lucHV0Jyk7CiAgICAgICAgJGlucHV0LnByb3AoJ2Rpc2FibGVkJywgIXRhYmxlLnNldHRpbmdzKClbMF0uYW9Db2x1bW5zW2ldLmJTZWFyY2hhYmxlIHx8IHR5cGUgPT09ICdkaXNhYmxlZCcpOwogICAgICAgICRpbnB1dC5vbignaW5wdXQgYmx1cicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgJGlucHV0Lm5leHQoJ3NwYW4nKS50b2dnbGUoQm9vbGVhbigkaW5wdXQudmFsKCkpKTsKICAgICAgICB9KTsKICAgICAgICAvLyBCb290c3RyYXAgc2V0cyBwb2ludGVyLWV2ZW50cyB0byBub25lIGFuZCB3ZSB3b24ndCBiZSBhYmxlIHRvIGNsaWNrCiAgICAgICAgLy8gdGhlIGNsZWFyIGJ1dHRvbgogICAgICAgICRpbnB1dC5uZXh0KCdzcGFuJykuY3NzKCdwb2ludGVyLWV2ZW50cycsICdhdXRvJykuaGlkZSgpLmNsaWNrKGZ1bmN0aW9uKCkgewogICAgICAgICAgJCh0aGlzKS5oaWRlKCkucHJldignaW5wdXQnKS52YWwoJycpLnRyaWdnZXIoJ2lucHV0JykuZm9jdXMoKTsKICAgICAgICB9KTsKICAgICAgICB2YXIgc2VhcmNoQ29sOyAgLy8gc2VhcmNoIHN0cmluZyBmb3IgdGhpcyBjb2x1bW4KICAgICAgICBpZiAoc2VhcmNoQ29scyAmJiBzZWFyY2hDb2xzW2ldKSB7CiAgICAgICAgICBzZWFyY2hDb2wgPSBzZWFyY2hDb2xzW2ldOwogICAgICAgICAgJGlucHV0LnZhbChzZWFyY2hDb2wpLnRyaWdnZXIoJ2lucHV0Jyk7CiAgICAgICAgfQogICAgICAgIHZhciAkeCA9ICR0ZC5jaGlsZHJlbignZGl2JykubGFzdCgpOwoKICAgICAgICAvLyByZW1vdmUgdGhlIG92ZXJmbG93OiBoaWRkZW4gYXR0cmlidXRlIG9mIHRoZSBzY3JvbGxIZWFkCiAgICAgICAgLy8gKG90aGVyd2lzZSB0aGUgc2Nyb2xsaW5nIHRhYmxlIGJvZHkgb2JzY3VyZXMgdGhlIGZpbHRlcnMpCiAgICAgICAgdmFyIHNjcm9sbEhlYWQgPSAkKGVsKS5maW5kKCcuZGF0YVRhYmxlc19zY3JvbGxIZWFkLC5kYXRhVGFibGVzX3Njcm9sbEZvb3QnKTsKICAgICAgICB2YXIgY3NzT3ZlcmZsb3cgPSBzY3JvbGxIZWFkLmNzcygnb3ZlcmZsb3cnKTsKICAgICAgICBpZiAoY3NzT3ZlcmZsb3cgPT09ICdoaWRkZW4nKSB7CiAgICAgICAgICAkeC5vbignc2hvdyBoaWRlJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBzY3JvbGxIZWFkLmNzcygnb3ZlcmZsb3cnLCBlLnR5cGUgPT09ICdzaG93JyA/ICcnIDogY3NzT3ZlcmZsb3cpOwogICAgICAgICAgfSk7CiAgICAgICAgICAkeC5jc3MoJ3otaW5kZXgnLCAyNSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaW5BcnJheSh0eXBlLCBbJ2ZhY3RvcicsICdsb2dpY2FsJ10pKSB7CiAgICAgICAgICAkaW5wdXQub24oewogICAgICAgICAgICBjbGljazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgJGlucHV0LnBhcmVudCgpLmhpZGUoKTsgJHguc2hvdygpLnRyaWdnZXIoJ3Nob3cnKTsgZmlsdGVyWzBdLnNlbGVjdGl6ZS5mb2N1cygpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgaWYgKCRpbnB1dC52YWwoKSA9PT0gJycpIGZpbHRlclswXS5zZWxlY3RpemUuc2V0VmFsdWUoW10pOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHZhciAkaW5wdXQyID0gJHguY2hpbGRyZW4oJ3NlbGVjdCcpOwogICAgICAgICAgZmlsdGVyID0gJGlucHV0Mi5zZWxlY3RpemUoewogICAgICAgICAgICBvcHRpb25zOiAkaW5wdXQyLmRhdGEoJ29wdGlvbnMnKS5tYXAoZnVuY3Rpb24odiwgaSkgewogICAgICAgICAgICAgIHJldHVybiAoe3RleHQ6IHYsIHZhbHVlOiB2fSk7CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBwbHVnaW5zOiBbJ3JlbW92ZV9idXR0b24nXSwKICAgICAgICAgICAgaGlkZVNlbGVjdGVkOiB0cnVlLAogICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHZhbHVlID0gW107IC8vIGNvbXBhdGliaWxpdHkgd2l0aCBqUXVlcnkgMy4wCiAgICAgICAgICAgICAgJGlucHV0LnZhbCh2YWx1ZS5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiAnJyk7CiAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCkgJGlucHV0LnRyaWdnZXIoJ2lucHV0Jyk7CiAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3RpdGxlJywgJGlucHV0LnZhbCgpKTsKICAgICAgICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAgICAgICB0YWJsZS5jb2x1bW4oaSkuc2VhcmNoKHZhbHVlLmxlbmd0aCA/IGVuY29kZV9wbHVzKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkgOiAnJykuZHJhdygpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyB0dXJuIG9mZiBmaWx0ZXIgaWYgbm90aGluZyBzZWxlY3RlZAogICAgICAgICAgICAgICR0ZC5kYXRhKCdmaWx0ZXInLCB2YWx1ZS5sZW5ndGggPiAwKTsKICAgICAgICAgICAgICB0YWJsZS5kcmF3KCk7ICAvLyByZWRyYXcgdGFibGUsIGFuZCBmaWx0ZXJzIHdpbGwgYmUgYXBwbGllZAogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIGlmIChzZWFyY2hDb2wpIGZpbHRlclswXS5zZWxlY3RpemUuc2V0VmFsdWUoSlNPTi5wYXJzZShzZWFyY2hDb2wpKTsKICAgICAgICAgIC8vIGFuIHVnbHkgaGFjayB0byBkZWFsIHdpdGggc2hpbnk6IGZvciBzb21lIHJlYXNvbiwgdGhlIG9uQmx1ciBldmVudAogICAgICAgICAgLy8gb2Ygc2VsZWN0aXplIGRvZXMgbm90IHdvcmsgaW4gc2hpbnkKICAgICAgICAgICR4LmZpbmQoJ2RpdiA+IGRpdi5zZWxlY3RpemUtaW5wdXQgPiBpbnB1dCcpLm9uKCdibHVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICR4LmhpZGUoKS50cmlnZ2VyKCdoaWRlJyk7ICRpbnB1dC5wYXJlbnQoKS5zaG93KCk7ICRpbnB1dC50cmlnZ2VyKCdibHVyJyk7CiAgICAgICAgICB9KTsKICAgICAgICAgIGZpbHRlci5uZXh0KCdkaXYnKS5jc3MoJ21hcmdpbi1ib3R0b20nLCAnYXV0bycpOwogICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2NoYXJhY3RlcicpIHsKICAgICAgICAgIHZhciBmdW4gPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHJlZ2V4ID0gZmFsc2UsIGNpID0gdHJ1ZTsKICAgICAgICAgICAgaWYgKG9wdGlvbnMuc2VhcmNoKSB7CiAgICAgICAgICAgICAgcmVnZXggPSBvcHRpb25zLnNlYXJjaC5yZWdleCwKICAgICAgICAgICAgICBjaSA9IG9wdGlvbnMuc2VhcmNoLmNhc2VJbnNlbnNpdGl2ZSAhPT0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGFibGUuY29sdW1uKGkpLnNlYXJjaChlbmNvZGVfcGx1cygkaW5wdXQudmFsKCkpLCByZWdleCwgIXJlZ2V4LCBjaSkuZHJhdygpOwogICAgICAgICAgfTsKICAgICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgICAgZnVuID0gJC5mbi5kYXRhVGFibGUudXRpbC50aHJvdHRsZShmdW4sIG9wdGlvbnMuc2VhcmNoRGVsYXkpOwogICAgICAgICAgfQogICAgICAgICAgJGlucHV0Lm9uKCdpbnB1dCcsIGZ1bik7CiAgICAgICAgfSBlbHNlIGlmIChpbkFycmF5KHR5cGUsIFsnbnVtYmVyJywgJ2ludGVnZXInLCAnZGF0ZScsICd0aW1lJ10pKSB7CiAgICAgICAgICB2YXIgJHgwID0gJHg7CiAgICAgICAgICAkeCA9ICR4MC5jaGlsZHJlbignZGl2JykuZmlyc3QoKTsKICAgICAgICAgICR4MC5jc3MoewogICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjZmZmJywKICAgICAgICAgICAgJ2JvcmRlcic6ICcxcHggI2RkZCBzb2xpZCcsCiAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzRweCcsCiAgICAgICAgICAgICdwYWRkaW5nJzogJzIwcHggMjBweCAxMHB4IDIwcHgnCiAgICAgICAgICB9KTsKICAgICAgICAgIHZhciAkc3BhbnMgPSAkeDAuY2hpbGRyZW4oJ3NwYW4nKS5jc3MoewogICAgICAgICAgICAnbWFyZ2luLXRvcCc6ICcxMHB4JywKICAgICAgICAgICAgJ3doaXRlLXNwYWNlJzogJ25vd3JhcCcKICAgICAgICAgIH0pOwogICAgICAgICAgdmFyICRzcGFuMSA9ICRzcGFucy5maXJzdCgpLCAkc3BhbjIgPSAkc3BhbnMubGFzdCgpOwogICAgICAgICAgdmFyIHIxID0gKyR4LmRhdGEoJ21pbicpLCByMiA9ICskeC5kYXRhKCdtYXgnKTsKICAgICAgICAgIC8vIHdoZW4gdGhlIG51bWJlcnMgYXJlIHRvbyBzbWFsbCBvciBoYXZlIG1hbnkgZGVjaW1hbCBwbGFjZXMsIHRoZQogICAgICAgICAgLy8gc2xpZGVyIG1heSBoYXZlIG51bWVyaWMgcHJlY2lzaW9uIHByb2JsZW1zICgjMTUwKQogICAgICAgICAgdmFyIHNjYWxlID0gTWF0aC5wb3coMTAsIE1hdGgubWF4KDAsICskeC5kYXRhKCdzY2FsZScpIHx8IDApKTsKICAgICAgICAgIHIxID0gTWF0aC5yb3VuZChyMSAqIHNjYWxlKTsgcjIgPSBNYXRoLnJvdW5kKHIyICogc2NhbGUpOwogICAgICAgICAgdmFyIHNjYWxlQmFjayA9IGZ1bmN0aW9uKHgsIHNjYWxlKSB7CiAgICAgICAgICAgIGlmIChzY2FsZSA9PT0gMSkgcmV0dXJuIHg7CiAgICAgICAgICAgIHZhciBkID0gTWF0aC5yb3VuZChNYXRoLmxvZyhzY2FsZSkgLyBNYXRoLmxvZygxMCkpOwogICAgICAgICAgICAvLyB0byBhdm9pZCBwcm9ibGVtcyBsaWtlIDMuNDIzLzEwMCAtPiAwLjAzNDIzMDAwMDAwMDAwMDAwMwogICAgICAgICAgICByZXR1cm4gKHggLyBzY2FsZSkudG9GaXhlZChkKTsKICAgICAgICAgIH07CiAgICAgICAgICAkaW5wdXQub24oewogICAgICAgICAgICBmb2N1czogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgJHgwLnNob3coKS50cmlnZ2VyKCdzaG93Jyk7CiAgICAgICAgICAgICAgLy8gZmlyc3QsIG1ha2Ugc3VyZSB0aGUgc2xpZGVyIGRpdiBsZWF2ZXMgYXQgbGVhc3QgMjBweCBiZXR3ZWVuCiAgICAgICAgICAgICAgLy8gdGhlIHR3byAoc2xpZGVyIHZhbHVlKSBzcGFuJ3MKICAgICAgICAgICAgICAkeDAud2lkdGgoTWF0aC5tYXgoMTYwLCAkc3BhbjEub3V0ZXJXaWR0aCgpICsgJHNwYW4yLm91dGVyV2lkdGgoKSArIDIwKSk7CiAgICAgICAgICAgICAgLy8gdGhlbiwgaWYgdGhlIGlucHV0IGlzIHJlYWxseSB3aWRlLCBtYWtlIHRoZSBzbGlkZXIgdGhlIHNhbWUKICAgICAgICAgICAgICAvLyB3aWR0aCBhcyB0aGUgaW5wdXQKICAgICAgICAgICAgICBpZiAoJHgwLm91dGVyV2lkdGgoKSA8ICRpbnB1dC5vdXRlcldpZHRoKCkpIHsKICAgICAgICAgICAgICAgICR4MC5vdXRlcldpZHRoKCRpbnB1dC5vdXRlcldpZHRoKCkpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIHNsaWRlciBkaXYgZG9lcyBub3QgcmVhY2ggYmV5b25kIHRoZSByaWdodCBtYXJnaW4KICAgICAgICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoKCkgPCAkeDAub2Zmc2V0KCkubGVmdCArICR4MC53aWR0aCgpKSB7CiAgICAgICAgICAgICAgICAkeDAub2Zmc2V0KHsKICAgICAgICAgICAgICAgICAgJ2xlZnQnOiAkaW5wdXQub2Zmc2V0KCkubGVmdCArICRpbnB1dC5vdXRlcldpZHRoKCkgLSAkeDAub3V0ZXJXaWR0aCgpCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGJsdXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICR4MC5oaWRlKCkudHJpZ2dlcignaGlkZScpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgaWYgKCRpbnB1dC52YWwoKSA9PT0gJycpIGZpbHRlci52YWwoW3IxLCByMl0pOwogICAgICAgICAgICB9LAogICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhciB2ID0gJGlucHV0LnZhbCgpLnJlcGxhY2UoL1xzL2csICcnKTsKICAgICAgICAgICAgICBpZiAodiA9PT0gJycpIHJldHVybjsKICAgICAgICAgICAgICB2ID0gdi5zcGxpdCgnLi4uJyk7CiAgICAgICAgICAgICAgaWYgKHYubGVuZ3RoICE9PSAyKSB7CiAgICAgICAgICAgICAgICAkaW5wdXQucGFyZW50KCkuYWRkQ2xhc3MoJ2hhcy1lcnJvcicpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAodlswXSA9PT0gJycpIHZbMF0gPSByMTsKICAgICAgICAgICAgICBpZiAodlsxXSA9PT0gJycpIHZbMV0gPSByMjsKICAgICAgICAgICAgICAkaW5wdXQucGFyZW50KCkucmVtb3ZlQ2xhc3MoJ2hhcy1lcnJvcicpOwogICAgICAgICAgICAgIC8vIHRyZWF0IGRhdGUgYXMgVVRDIHRpbWUgYXQgbWlkbmlnaHQKICAgICAgICAgICAgICB2YXIgc3RyVGltZSA9IGZ1bmN0aW9uKHgpIHsKICAgICAgICAgICAgICAgIHZhciBzID0gdHlwZSA9PT0gJ2RhdGUnID8gJ1QwMDowMDowMFonIDogJyc7CiAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyBEYXRlKHggKyBzKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAvLyBhZGQgMTAgbWludXRlcyB0byBkYXRlIHNpbmNlIGl0IGRvZXMgbm90IGh1cnQgdGhlIGRhdGUsIGFuZAogICAgICAgICAgICAgICAgLy8gaXQgaGVscHMgYXZvaWQgdGhlIHRyaWNreSBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIHByb2JsZW1zLAogICAgICAgICAgICAgICAgLy8gZS5nLiBzb21ldGltZXMgdGhlIGRhdGUgbWF5IGJlIGEgZmV3IG1pbGxpc2Vjb25kcyBlYXJsaWVyCiAgICAgICAgICAgICAgICAvLyB0aGFuIHRoZSBtaWRuaWdodCBkdWUgdG8gcHJlY2lzaW9uIHByb2JsZW1zIGluIG5vVWlTbGlkZXIKICAgICAgICAgICAgICAgIHJldHVybiB0eXBlID09PSAnZGF0ZScgPyB0ICsgMzYwMDAwMCA6IHQ7CiAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICBpZiAoaW5BcnJheSh0eXBlLCBbJ2RhdGUnLCAndGltZSddKSkgewogICAgICAgICAgICAgICAgdlswXSA9IHN0clRpbWUodlswXSk7CiAgICAgICAgICAgICAgICB2WzFdID0gc3RyVGltZSh2WzFdKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHZbMF0gIT0gcjEpIHZbMF0gKj0gc2NhbGU7CiAgICAgICAgICAgICAgaWYgKHZbMV0gIT0gcjIpIHZbMV0gKj0gc2NhbGU7CiAgICAgICAgICAgICAgZmlsdGVyLnZhbCh2KTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgICB2YXIgZm9ybWF0RGF0ZSA9IGZ1bmN0aW9uKGQpIHsKICAgICAgICAgICAgZCA9IHNjYWxlQmFjayhkLCBzY2FsZSk7CiAgICAgICAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykgcmV0dXJuIGQ7CiAgICAgICAgICAgIGlmICh0eXBlID09PSAnaW50ZWdlcicpIHJldHVybiBwYXJzZUludChkKTsKICAgICAgICAgICAgdmFyIHggPSBuZXcgRGF0ZSgrZCk7CiAgICAgICAgICAgIGlmICh0eXBlID09PSAnZGF0ZScpIHsKICAgICAgICAgICAgICB2YXIgcGFkMCA9IGZ1bmN0aW9uKHgpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoJzAnICsgeCkuc3Vic3RyKC0yLCAyKTsKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIHJldHVybiB4LmdldFVUQ0Z1bGxZZWFyKCkgKyAnLScgKyBwYWQwKDEgKyB4LmdldFVUQ01vbnRoKCkpCiAgICAgICAgICAgICAgICAgICAgICArICctJyArIHBhZDAoeC5nZXRVVENEYXRlKCkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHJldHVybiB4LnRvSVNPU3RyaW5nKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH07CiAgICAgICAgICB2YXIgb3B0cyA9IHR5cGUgPT09ICdkYXRlJyA/IHsgc3RlcDogNjAgKiA2MCAqIDEwMDAgfSA6CiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICdpbnRlZ2VyJyA/IHsgc3RlcDogMSB9IDoge307CiAgICAgICAgICBmaWx0ZXIgPSAkeC5ub1VpU2xpZGVyKCQuZXh0ZW5kKHsKICAgICAgICAgICAgc3RhcnQ6IFtyMSwgcjJdLAogICAgICAgICAgICByYW5nZToge21pbjogcjEsIG1heDogcjJ9LAogICAgICAgICAgICBjb25uZWN0OiB0cnVlCiAgICAgICAgICB9LCBvcHRzKSk7CiAgICAgICAgICBpZiAoc2NhbGUgPiAxKSAoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciB0MSA9IHIxLCB0MiA9IHIyOwogICAgICAgICAgICB2YXIgdmFsID0gZmlsdGVyLnZhbCgpOwogICAgICAgICAgICB3aGlsZSAodmFsWzBdID4gcjEgfHwgdmFsWzFdIDwgcjIpIHsKICAgICAgICAgICAgICBpZiAodmFsWzBdID4gcjEpIHsKICAgICAgICAgICAgICAgIHQxIC09IHZhbFswXSAtIHIxOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAodmFsWzFdIDwgcjIpIHsKICAgICAgICAgICAgICAgIHQyICs9IHIyIC0gdmFsWzFdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBmaWx0ZXIgPSAkeC5ub1VpU2xpZGVyKCQuZXh0ZW5kKHsKICAgICAgICAgICAgICAgIHN0YXJ0OiBbdDEsIHQyXSwKICAgICAgICAgICAgICAgIHJhbmdlOiB7bWluOiB0MSwgbWF4OiB0Mn0sCiAgICAgICAgICAgICAgICBjb25uZWN0OiB0cnVlCiAgICAgICAgICAgICAgfSwgb3B0cyksIHRydWUpOwogICAgICAgICAgICAgIHZhbCA9IGZpbHRlci52YWwoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByMSAgPSB0MTsgcjIgPSB0MjsKICAgICAgICAgIH0pKCk7CiAgICAgICAgICAkc3BhbjEudGV4dChmb3JtYXREYXRlKHIxKSk7ICRzcGFuMi50ZXh0KGZvcm1hdERhdGUocjIpKTsKICAgICAgICAgIHZhciB1cGRhdGVTbGlkZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB2YWwgPSBmaWx0ZXIudmFsKCk7CiAgICAgICAgICAgIC8vIHR1cm4gb2ZmIGZpbHRlciBpZiBpbiBmdWxsIHJhbmdlCiAgICAgICAgICAgICR0ZC5kYXRhKCdmaWx0ZXInLCB2YWxbMF0gPiByMSB8fCB2YWxbMV0gPCByMik7CiAgICAgICAgICAgIHZhciB2MSA9IGZvcm1hdERhdGUodmFsWzBdKSwgdjIgPSBmb3JtYXREYXRlKHZhbFsxXSksIGl2YWw7CiAgICAgICAgICAgIGlmICgkdGQuZGF0YSgnZmlsdGVyJykpIHsKICAgICAgICAgICAgICBpdmFsID0gdjEgKyAnIC4uLiAnICsgdjI7CiAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3RpdGxlJywgaXZhbCkudmFsKGl2YWwpLnRyaWdnZXIoJ2lucHV0Jyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3RpdGxlJywgJycpLnZhbCgnJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNwYW4xLnRleHQodjEpOyAkc3BhbjIudGV4dCh2Mik7CiAgICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdzbGlkZScpIHJldHVybjsgIC8vIG5vIHNlYXJjaGluZyB3aGVuIHNsaWRpbmcgb25seQogICAgICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAgICAgdGFibGUuY29sdW1uKGkpLnNlYXJjaCgkdGQuZGF0YSgnZmlsdGVyJykgPyBpdmFsIDogJycpLmRyYXcoKTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGFibGUuZHJhdygpOwogICAgICAgICAgfTsKICAgICAgICAgIGZpbHRlci5vbih7CiAgICAgICAgICAgIHNldDogdXBkYXRlU2xpZGVyLAogICAgICAgICAgICBzbGlkZTogdXBkYXRlU2xpZGVyCiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIHNlcnZlci1zaWRlIHByb2Nlc3Npbmcgd2lsbCBiZSBoYW5kbGVkIGJ5IFIgKG9yIHdoYXRldmVyIHNlcnZlcgogICAgICAgIC8vIGxhbmd1YWdlIHlvdSB1c2UpOyB0aGUgZm9sbG93aW5nIGNvZGUgaXMgb25seSBuZWVkZWQgZm9yIGNsaWVudC1zaWRlCiAgICAgICAgLy8gcHJvY2Vzc2luZwogICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgIC8vIGlmIGEgc2VhcmNoIHN0cmluZyBoYXMgYmVlbiBwcmUtc2V0LCBzZWFyY2ggbm93CiAgICAgICAgICBpZiAoc2VhcmNoQ29sKSB0YWJsZS5jb2x1bW4oaSkuc2VhcmNoKGVuY29kZV9wbHVzKHNlYXJjaENvbCkpLmRyYXcoKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBjdXN0b21GaWx0ZXIgPSBmdW5jdGlvbihzZXR0aW5ncywgZGF0YSwgZGF0YUluZGV4KSB7CiAgICAgICAgICAvLyB0aGVyZSBpcyBubyB3YXkgdG8gYXR0YWNoIGEgc2VhcmNoIGZ1bmN0aW9uIHRvIGEgc3BlY2lmaWMgdGFibGUsCiAgICAgICAgICAvLyBhbmQgd2UgbmVlZCB0byBtYWtlIHN1cmUgYSBnbG9iYWwgc2VhcmNoIGZ1bmN0aW9uIGlzIG5vdCBhcHBsaWVkIHRvCiAgICAgICAgICAvLyBhbGwgdGFibGVzIChpLmUuIGEgcmFuZ2UgZmlsdGVyIGluIGEgcHJldmlvdXMgdGFibGUgc2hvdWxkIG5vdCBiZQogICAgICAgICAgLy8gYXBwbGllZCB0byB0aGUgY3VycmVudCB0YWJsZSk7IHdlIHVzZSB0aGUgc2V0dGluZ3Mgb2JqZWN0IHRvCiAgICAgICAgICAvLyBkZXRlcm1pbmUgaWYgd2Ugd2FudCB0byBwZXJmb3JtIHNlYXJjaGluZyBvbiB0aGUgY3VycmVudCB0YWJsZSwKICAgICAgICAgIC8vIHNpbmNlIHNldHRpbmdzLnNUYWJsZUlkIHdpbGwgYmUgZGlmZmVyZW50IHRvIGRpZmZlcmVudCB0YWJsZXMKICAgICAgICAgIGlmICh0YWJsZS5zZXR0aW5ncygpWzBdICE9PSBzZXR0aW5ncykgcmV0dXJuIHRydWU7CiAgICAgICAgICAvLyBubyBmaWx0ZXIgb24gdGhpcyBjb2x1bW4gb3Igbm8gbmVlZCB0byBmaWx0ZXIgdGhpcyBjb2x1bW4KICAgICAgICAgIGlmICh0eXBlb2YgZmlsdGVyID09PSAndW5kZWZpbmVkJyB8fCAhJHRkLmRhdGEoJ2ZpbHRlcicpKSByZXR1cm4gdHJ1ZTsKCiAgICAgICAgICB2YXIgciA9IGZpbHRlci52YWwoKSwgdiwgcjAsIHIxOwogICAgICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInIHx8IHR5cGUgPT09ICdpbnRlZ2VyJykgewogICAgICAgICAgICB2ID0gcGFyc2VGbG9hdChkYXRhW2ldKTsKICAgICAgICAgICAgLy8gaG93IHRvIGhhbmRsZSBOYU4/IGN1cnJlbnRseSBleGNsdWRlIHRoZXNlIHJvd3MKICAgICAgICAgICAgaWYgKGlzTmFOKHYpKSByZXR1cm4oZmFsc2UpOwogICAgICAgICAgICByMCA9IHBhcnNlRmxvYXQoc2NhbGVCYWNrKHJbMF0sIHNjYWxlKSkKICAgICAgICAgICAgcjEgPSBwYXJzZUZsb2F0KHNjYWxlQmFjayhyWzFdLCBzY2FsZSkpOwogICAgICAgICAgICBpZiAodiA+PSByMCAmJiB2IDw9IHIxKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUnIHx8IHR5cGUgPT09ICd0aW1lJykgewogICAgICAgICAgICB2ID0gbmV3IERhdGUoZGF0YVtpXSk7CiAgICAgICAgICAgIHIwID0gbmV3IERhdGUoclswXSAvIHNjYWxlKTsgcjEgPSBuZXcgRGF0ZShyWzFdIC8gc2NhbGUpOwogICAgICAgICAgICBpZiAodiA+PSByMCAmJiB2IDw9IHIxKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2ZhY3RvcicpIHsKICAgICAgICAgICAgaWYgKHIubGVuZ3RoID09PSAwIHx8IGluQXJyYXkoZGF0YVtpXSwgcikpIHJldHVybiB0cnVlOwogICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbG9naWNhbCcpIHsKICAgICAgICAgICAgaWYgKHIubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgaWYgKGluQXJyYXkoZGF0YVtpXSA9PT0gJycgPyAnbmEnIDogZGF0YVtpXSwgcikpIHJldHVybiB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH07CgogICAgICAgICQuZm4uZGF0YVRhYmxlLmV4dC5zZWFyY2gucHVzaChjdXN0b21GaWx0ZXIpOwoKICAgICAgICAvLyBzZWFyY2ggZm9yIHRoZSBwcmVzZXQgc2VhcmNoIHN0cmluZ3MgaWYgaXQgaXMgbm9uLWVtcHR5CiAgICAgICAgaWYgKHNlYXJjaENvbCkgewogICAgICAgICAgaWYgKGluQXJyYXkodHlwZSwgWydmYWN0b3InLCAnbG9naWNhbCddKSkgewogICAgICAgICAgICBmaWx0ZXJbMF0uc2VsZWN0aXplLnNldFZhbHVlKEpTT04ucGFyc2Uoc2VhcmNoQ29sKSk7CiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjaGFyYWN0ZXInKSB7CiAgICAgICAgICAgICRpbnB1dC50cmlnZ2VyKCdpbnB1dCcpOwogICAgICAgICAgfSBlbHNlIGlmIChpbkFycmF5KHR5cGUsIFsnbnVtYmVyJywgJ2ludGVnZXInLCAnZGF0ZScsICd0aW1lJ10pKSB7CiAgICAgICAgICAgICRpbnB1dC50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICB9KTsKCiAgICB9CgogICAgLy8gaGlnaGxpZ2h0IHNlYXJjaCBrZXl3b3JkcwogICAgdmFyIGhpZ2hsaWdodCA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgYm9keSA9ICQodGFibGUudGFibGUoKS5ib2R5KCkpOwogICAgICAvLyByZW1vdmluZyB0aGUgb2xkIGhpZ2hsaWdodGluZyBmaXJzdAogICAgICBib2R5LnVuaGlnaGxpZ2h0KCk7CgogICAgICAvLyBkb24ndCBoaWdobGlnaHQgdGhlICJub3QgZm91bmQiIHJvdywgc28gd2UgZ2V0IHRoZSByb3dzIHVzaW5nIHRoZSBhcGkKICAgICAgaWYgKHRhYmxlLnJvd3MoeyBmaWx0ZXI6ICdhcHBsaWVkJyB9KS5kYXRhKCkubGVuZ3RoID09PSAwKSByZXR1cm47CiAgICAgIC8vIGhpZ2hsaWdodCBnbG9hbCBzZWFyY2gga2V5d29yZHMKICAgICAgYm9keS5oaWdobGlnaHQoJC50cmltKHRhYmxlLnNlYXJjaCgpKS5zcGxpdCgvXHMrLykpOwogICAgICAvLyB0aGVuIGhpZ2hsaWdodCBrZXl3b3JkcyBmcm9tIGluZGl2aWR1YWwgY29sdW1uIGZpbHRlcnMKICAgICAgaWYgKGZpbHRlclJvdykgZmlsdGVyUm93LmVhY2goZnVuY3Rpb24oaSwgdGQpIHsKICAgICAgICB2YXIgJHRkID0gJCh0ZCksIHR5cGUgPSAkdGQuZGF0YSgndHlwZScpOwogICAgICAgIGlmICh0eXBlICE9PSAnY2hhcmFjdGVyJykgcmV0dXJuOwogICAgICAgIHZhciAkaW5wdXQgPSAkdGQuY2hpbGRyZW4oJ2RpdicpLmZpcnN0KCkuY2hpbGRyZW4oJ2lucHV0Jyk7CiAgICAgICAgdmFyIGNvbHVtbiA9IHRhYmxlLmNvbHVtbihpKS5ub2RlcygpLnRvJCgpLAogICAgICAgICAgICB2YWwgPSAkLnRyaW0oJGlucHV0LnZhbCgpKTsKICAgICAgICBpZiAodHlwZSAhPT0gJ2NoYXJhY3RlcicgfHwgdmFsID09PSAnJykgcmV0dXJuOwogICAgICAgIGNvbHVtbi5oaWdobGlnaHQodmFsLnNwbGl0KC9ccysvKSk7CiAgICAgIH0pOwogICAgfTsKCiAgICBpZiAob3B0aW9ucy5zZWFyY2hIaWdobGlnaHQpIHsKICAgICAgdGFibGUKICAgICAgLm9uKCdkcmF3LmR0LmR0aCBjb2x1bW4tdmlzaWJpbGl0eS5kdC5kdGggY29sdW1uLXJlb3JkZXIuZHQuZHRoJywgaGlnaGxpZ2h0KQogICAgICAub24oJ2Rlc3Ryb3knLCBmdW5jdGlvbigpIHsKICAgICAgICAvLyByZW1vdmUgZXZlbnQgaGFuZGxlcgogICAgICAgIHRhYmxlLm9mZiggJ2RyYXcuZHQuZHRoIGNvbHVtbi12aXNpYmlsaXR5LmR0LmR0aCBjb2x1bW4tcmVvcmRlci5kdC5kdGgnICk7CiAgICAgIH0pOwoKICAgICAgLy8gaW5pdGlhbCBoaWdobGlnaHQgZm9yIHN0YXRlIHNhdmVkIGNvbmRpdGlvbnMgYW5kIGluaXRpYWwgc3RhdGVzCiAgICAgIGhpZ2hsaWdodCgpOwogICAgfQoKICAgIC8vIHJ1biB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gb24gdGhlIHRhYmxlIGluc3RhbmNlCiAgICBpZiAodHlwZW9mIGRhdGEuY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIGRhdGEuY2FsbGJhY2sodGFibGUpOwogICAgdGhpcy5hZGp1c3RXaWR0aChlbCk7CgogICAgIC8vIGZpbGxDb250YWluZXIgPSBUUlVFIGJlaGF2aW9yCiAgICBpZiAoaW5zdGFuY2UuZmlsbENvbnRhaW5lcikgewoKICAgICAgLy8gd2UgbmVlZCB0byB3YWl0IGp1c3QgYSBiaXQgdG8gZG8gdGhpcyBzbyBEVCBjYW4gY29tcGxldGVseQogICAgICAvLyBmaW5pc2ggbGF5aW5nIGl0c2VsZiBvdXQKICAgICAgdmFyIHRoaXogPSB0aGlzOwogICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoKICAgICAgICAvLyBjYWxjdWxhdGUgY29ycmVjdCBoZWlnaHQKICAgICAgICB0aGl6LmZpbGxBdmFpbGFibGVIZWlnaHQoZWwsICQoZWwpLmlubmVySGVpZ2h0KCkpOwoKICAgICAgICAvLyB3ZSBuZWVkIHRvIGZvcmNlIERUIHRvIHJlY2FsY3VsYXRlIGNvbHVtbiB3aWR0aHMKICAgICAgICAvLyAob3RoZXJ3aXNlIGFsbCB0aGUgY29sdW1ucyBhcmUgdGhlIHNhbWUgc2l6ZSkKICAgICAgICB0YWJsZS5jb2x1bW5zLmFkanVzdCgpOwogICAgICB9LCAyMDApOwogICAgfQoKICAgIC8vIGludGVyYWN0aW9uIHdpdGggc2hpbnkKICAgIGlmICghSFRNTFdpZGdldHMuc2hpbnlNb2RlKSByZXR1cm47CgogICAgdmFyIG1ldGhvZHMgPSB7fTsKICAgIHZhciBzaGlueURhdGEgPSB7fTsKCiAgICBtZXRob2RzLnVwZGF0ZUNhcHRpb24gPSBmdW5jdGlvbihjYXB0aW9uKSB7CiAgICAgIGlmICghY2FwdGlvbikgcmV0dXJuOwogICAgICAkdGFibGUuY2hpbGRyZW4oJ2NhcHRpb24nKS5yZXBsYWNlV2l0aChjYXB0aW9uKTsKICAgIH0KCiAgICB2YXIgY2hhbmdlSW5wdXQgPSBmdW5jdGlvbihpZCwgZGF0YSwgdHlwZSkgewogICAgICBpZCA9IGVsLmlkICsgJ18nICsgaWQ7CiAgICAgIGlmICh0eXBlKSBpZCA9IGlkICsgJzonICsgdHlwZTsKICAgICAgLy8gZG8gbm90IHVwZGF0ZSBpZiB0aGUgbmV3IGRhdGEgaXMgdGhlIHNhbWUgYXMgb2xkIGRhdGEKICAgICAgaWYgKHNoaW55RGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkgJiYgc2hpbnlEYXRhW2lkXSA9PT0gSlNPTi5zdHJpbmdpZnkoZGF0YSkpCiAgICAgICAgcmV0dXJuOwogICAgICBzaGlueURhdGFbaWRdID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7CiAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UoaWQsIGRhdGEpOwogICAgfTsKCiAgICB2YXIgYWRkT25lID0gZnVuY3Rpb24oeCkgewogICAgICByZXR1cm4geC5tYXAoZnVuY3Rpb24oaSkgeyByZXR1cm4gMSArIGk7IH0pOwogICAgfTsKCiAgICB2YXIgdW5pcXVlID0gZnVuY3Rpb24oeCkgewogICAgICB2YXIgdXggPSBbXTsKICAgICAgJC5lYWNoKHgsIGZ1bmN0aW9uKGksIGVsKXsKICAgICAgICBpZiAoJC5pbkFycmF5KGVsLCB1eCkgPT09IC0xKSB1eC5wdXNoKGVsKTsKICAgICAgfSk7CiAgICAgIHJldHVybiB1eDsKICAgIH0KCiAgICAvLyBjaGFuZ2UgdGhlIHJvdyBpbmRleCBvZiBhIGNlbGwKICAgIHZhciB0d2Vha0NlbGxJbmRleCA9IGZ1bmN0aW9uKGNlbGwpIHsKICAgICAgdmFyIGluZm8gPSBjZWxsLmluZGV4KCk7CiAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICBpbmZvLnJvdyA9IERUX3Jvd3NfY3VycmVudFtpbmZvLnJvd107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaW5mby5yb3cgKz0gMTsKICAgICAgfQogICAgICByZXR1cm4ge3JvdzogaW5mby5yb3csIGNvbDogaW5mby5jb2x1bW59OwogICAgfQoKICAgIHZhciBzZWxNb2RlID0gZGF0YS5zZWxlY3Rpb24ubW9kZSwgc2VsVGFyZ2V0ID0gZGF0YS5zZWxlY3Rpb24udGFyZ2V0OwogICAgaWYgKGluQXJyYXkoc2VsTW9kZSwgWydzaW5nbGUnLCAnbXVsdGlwbGUnXSkpIHsKICAgICAgdmFyIHNlbENsYXNzID0gZGF0YS5zdHlsZSA9PT0gJ2Jvb3RzdHJhcCcgPyAnYWN0aXZlJyA6ICdzZWxlY3RlZCc7CiAgICAgIHZhciBzZWxlY3RlZCA9IGRhdGEuc2VsZWN0aW9uLnNlbGVjdGVkLCBzZWxlY3RlZDEsIHNlbGVjdGVkMjsKICAgICAgaWYgKHNlbGVjdGVkID09PSBudWxsKSB7CiAgICAgICAgc2VsZWN0ZWQxID0gc2VsZWN0ZWQyID0gW107CiAgICAgIH0gZWxzZSBpZiAoc2VsVGFyZ2V0ID09PSAncm93JykgewogICAgICAgIHNlbGVjdGVkMSA9ICQubWFrZUFycmF5KHNlbGVjdGVkKTsKICAgICAgfSBlbHNlIGlmIChzZWxUYXJnZXQgPT09ICdjb2x1bW4nKSB7CiAgICAgICAgc2VsZWN0ZWQyID0gJC5tYWtlQXJyYXkoc2VsZWN0ZWQpOwogICAgICB9IGVsc2UgaWYgKHNlbFRhcmdldCA9PT0gJ3Jvdytjb2x1bW4nKSB7CiAgICAgICAgc2VsZWN0ZWQxID0gJC5tYWtlQXJyYXkoc2VsZWN0ZWQucm93cyk7CiAgICAgICAgc2VsZWN0ZWQyID0gJC5tYWtlQXJyYXkoc2VsZWN0ZWQuY29scyk7CiAgICAgIH0KICAgICAgLy8gcm93LCBjb2x1bW4sIG9yIGNlbGwgc2VsZWN0aW9uCiAgICAgIGlmIChpbkFycmF5KHNlbFRhcmdldCwgWydyb3cnLCAncm93K2NvbHVtbiddKSkgewogICAgICAgIHZhciBzZWxlY3RlZFJvd3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciByb3dzID0gdGFibGUucm93cygnLicgKyBzZWxDbGFzcywge3NlYXJjaDogJ2FwcGxpZWQnfSk7CiAgICAgICAgICB2YXIgaWR4ID0gcm93cy5pbmRleGVzKCkudG9BcnJheSgpOwogICAgICAgICAgaWYgKCFzZXJ2ZXIpIHJldHVybiBhZGRPbmUoaWR4KTsKICAgICAgICAgIGlkeCA9IGlkeC5tYXAoZnVuY3Rpb24oaSkgewogICAgICAgICAgICByZXR1cm4gRFRfcm93c19jdXJyZW50W2ldOwogICAgICAgICAgfSk7CiAgICAgICAgICBzZWxlY3RlZDEgPSBzZWxNb2RlID09PSAnbXVsdGlwbGUnID8gdW5pcXVlKHNlbGVjdGVkMS5jb25jYXQoaWR4KSkgOiBpZHg7CiAgICAgICAgICByZXR1cm4gc2VsZWN0ZWQxOwogICAgICAgIH0KICAgICAgICB0YWJsZS5vbignY2xpY2suZHQnLCAndGJvZHkgdHInLCBmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyksIHRoaXNSb3cgPSB0YWJsZS5yb3codGhpcyk7CiAgICAgICAgICBpZiAoc2VsTW9kZSA9PT0gJ211bHRpcGxlJykgewogICAgICAgICAgICAkdGhpcy50b2dnbGVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoJHRoaXMuaGFzQ2xhc3Moc2VsQ2xhc3MpKSB7CiAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRhYmxlLiQoJ3RyLicgKyBzZWxDbGFzcykucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKHNlcnZlciAmJiAhJHRoaXMuaGFzQ2xhc3Moc2VsQ2xhc3MpKSB7CiAgICAgICAgICAgIHZhciBpZCA9IERUX3Jvd3NfY3VycmVudFt0aGlzUm93LmluZGV4KCldOwogICAgICAgICAgICAvLyByZW1vdmUgaWQgZnJvbSBzZWxlY3RlZDEgc2luY2UgaXRzIGNsYXNzIC5zZWxlY3RlZCBoYXMgYmVlbiByZW1vdmVkCiAgICAgICAgICAgIHNlbGVjdGVkMS5zcGxpY2UoJC5pbkFycmF5KGlkLCBzZWxlY3RlZDEpLCAxKTsKICAgICAgICAgIH0KICAgICAgICAgIGNoYW5nZUlucHV0KCdyb3dzX3NlbGVjdGVkJywgc2VsZWN0ZWRSb3dzKCkpOwogICAgICAgICAgY2hhbmdlSW5wdXQoJ3Jvd19sYXN0X2NsaWNrZWQnLCBzZXJ2ZXIgPwogICAgICAgICAgICAgICAgICAgICAgRFRfcm93c19jdXJyZW50W3RoaXNSb3cuaW5kZXgoKV0gOiB0aGlzUm93LmluZGV4KCkgKyAxKTsKICAgICAgICB9KTsKICAgICAgICBjaGFuZ2VJbnB1dCgncm93c19zZWxlY3RlZCcsIHNlbGVjdGVkMSk7CiAgICAgICAgdmFyIHNlbGVjdFJvd3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHRhYmxlLiQoJ3RyLicgKyBzZWxDbGFzcykucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgaWYgKHNlbGVjdGVkMS5sZW5ndGggPT09IDApIHJldHVybjsKICAgICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgICAgdGFibGUucm93cyh7cGFnZTogJ2N1cnJlbnQnfSkuZXZlcnkoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgaWYgKGluQXJyYXkoRFRfcm93c19jdXJyZW50W3RoaXMuaW5kZXgoKV0sIHNlbGVjdGVkMSkpIHsKICAgICAgICAgICAgICAgICQodGhpcy5ub2RlKCkpLmFkZENsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIHNlbGVjdGVkMCA9IHNlbGVjdGVkMS5tYXAoZnVuY3Rpb24oaSkgeyByZXR1cm4gaSAtIDE7IH0pOwogICAgICAgICAgICAkKHRhYmxlLnJvd3Moc2VsZWN0ZWQwKS5ub2RlcygpKS5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHNlbGVjdFJvd3MoKTsgIC8vIGluIGNhc2UgdXNlcnMgaGF2ZSBzcGVjaWZpZWQgcHJlLXNlbGVjdGVkIHJvd3MKICAgICAgICAvLyByZXN0b3JlIHNlbGVjdGVkIHJvd3MgYWZ0ZXIgdGhlIHRhYmxlIGlzIHJlZHJhd24gKGUuZy4gc29ydC9zZWFyY2gvcGFnZSk7CiAgICAgICAgLy8gY2xpZW50LXNpZGUgdGFibGVzIHdpbGwgcHJlc2VydmUgdGhlIHNlbGVjdGlvbnMgYXV0b21hdGljYWxseTsgZm9yCiAgICAgICAgLy8gc2VydmVyLXNpZGUgdGFibGVzLCB3ZSBoYXZlIHRvICpyZWFsKiByb3cgaW5kaWNlcyBhcmUgaW4gYHNlbGVjdGVkMWAKICAgICAgICBpZiAoc2VydmVyKSB0YWJsZS5vbignZHJhdy5kdCcsIHNlbGVjdFJvd3MpOwogICAgICAgIG1ldGhvZHMuc2VsZWN0Um93cyA9IGZ1bmN0aW9uKHNlbGVjdGVkKSB7CiAgICAgICAgICBzZWxlY3RlZDEgPSBzZWxlY3RlZCA/IHNlbGVjdGVkIDogW107CiAgICAgICAgICBzZWxlY3RSb3dzKCk7CiAgICAgICAgICBjaGFuZ2VJbnB1dCgncm93c19zZWxlY3RlZCcsIHNlbGVjdGVkMSk7CiAgICAgICAgfQogICAgICB9CgogICAgICBpZiAoaW5BcnJheShzZWxUYXJnZXQsIFsnY29sdW1uJywgJ3Jvdytjb2x1bW4nXSkpIHsKICAgICAgICBpZiAoc2VsVGFyZ2V0ID09PSAncm93K2NvbHVtbicpIHsKICAgICAgICAgICQodGFibGUuY29sdW1ucygpLmZvb3RlcigpKS5jc3MoJ2N1cnNvcicsICdwb2ludGVyJyk7CiAgICAgICAgfQogICAgICAgIHRhYmxlLm9uKCdjbGljay5kdCcsIHNlbFRhcmdldCA9PT0gJ2NvbHVtbicgPyAndGJvZHkgdGQnIDogJ3Rmb290IHRyIHRoJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgY29sSWR4ID0gc2VsVGFyZ2V0ID09PSAnY29sdW1uJyA/IHRhYmxlLmNlbGwodGhpcykuaW5kZXgoKS5jb2x1bW4gOgogICAgICAgICAgICAgICQuaW5BcnJheSh0aGlzLCB0YWJsZS5jb2x1bW5zKCkuZm9vdGVyKCkpLAogICAgICAgICAgICAgIHRoaXNDb2wgPSAkKHRhYmxlLmNvbHVtbihjb2xJZHgpLm5vZGVzKCkpOwogICAgICAgICAgaWYgKGNvbElkeCA9PT0gLTEpIHJldHVybjsKICAgICAgICAgIGlmICh0aGlzQ29sLmhhc0NsYXNzKHNlbENsYXNzKSkgewogICAgICAgICAgICB0aGlzQ29sLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgc2VsZWN0ZWQyLnNwbGljZSgkLmluQXJyYXkoY29sSWR4LCBzZWxlY3RlZDIpLCAxKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChzZWxNb2RlID09PSAnc2luZ2xlJykgJCh0YWJsZS5jZWxscygpLm5vZGVzKCkpLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgdGhpc0NvbC5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIHNlbGVjdGVkMiA9IHNlbE1vZGUgPT09ICdzaW5nbGUnID8gW2NvbElkeF0gOiB1bmlxdWUoc2VsZWN0ZWQyLmNvbmNhdChbY29sSWR4XSkpOwogICAgICAgICAgfQogICAgICAgICAgY2hhbmdlSW5wdXQoJ2NvbHVtbnNfc2VsZWN0ZWQnLCBzZWxlY3RlZDIpOwogICAgICAgIH0pOwogICAgICAgIGNoYW5nZUlucHV0KCdjb2x1bW5zX3NlbGVjdGVkJywgc2VsZWN0ZWQyKTsKICAgICAgICB2YXIgc2VsZWN0Q29scyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgdGFibGUuY29sdW1ucygpLm5vZGVzKCkuZmxhdHRlbigpLnRvJCgpLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgIGlmIChzZWxlY3RlZDIubGVuZ3RoID4gMCkKICAgICAgICAgICAgdGFibGUuY29sdW1ucyhzZWxlY3RlZDIpLm5vZGVzKCkuZmxhdHRlbigpLnRvJCgpLmFkZENsYXNzKHNlbENsYXNzKTsKICAgICAgICB9CiAgICAgICAgc2VsZWN0Q29scygpOyAgLy8gaW4gY2FzZSB1c2VycyBoYXZlIHNwZWNpZmllZCBwcmUtc2VsZWN0ZWQgY29sdW1ucwogICAgICAgIGlmIChzZXJ2ZXIpIHRhYmxlLm9uKCdkcmF3LmR0Jywgc2VsZWN0Q29scyk7CiAgICAgICAgbWV0aG9kcy5zZWxlY3RDb2x1bW5zID0gZnVuY3Rpb24oc2VsZWN0ZWQpIHsKICAgICAgICAgIHNlbGVjdGVkMiA9IHNlbGVjdGVkID8gc2VsZWN0ZWQgOiBbXTsKICAgICAgICAgIHNlbGVjdENvbHMoKTsKICAgICAgICAgIGNoYW5nZUlucHV0KCdjb2x1bW5zX3NlbGVjdGVkJywgc2VsZWN0ZWQyKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChzZWxUYXJnZXQgPT09ICdjZWxsJykgewogICAgICAgIHZhciBzZWxlY3RlZDM7CiAgICAgICAgaWYgKHNlbGVjdGVkID09PSBudWxsKSB7CiAgICAgICAgICBzZWxlY3RlZDMgPSBbXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgc2VsZWN0ZWQzID0gc2VsZWN0ZWQ7CiAgICAgICAgfQogICAgICAgIHZhciBmaW5kSW5kZXggPSBmdW5jdGlvbihpaikgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3RlZDMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGlqWzBdID09PSBzZWxlY3RlZDNbaV1bMF0gJiYgaWpbMV0gPT09IHNlbGVjdGVkM1tpXVsxXSkgcmV0dXJuIGk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfQogICAgICAgIHRhYmxlLm9uKCdjbGljay5kdCcsICd0Ym9keSB0ZCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyICR0aGlzID0gJCh0aGlzKSwgaW5mbyA9IHR3ZWFrQ2VsbEluZGV4KHRhYmxlLmNlbGwodGhpcykpOwogICAgICAgICAgaWYgKCR0aGlzLmhhc0NsYXNzKHNlbENsYXNzKSkgewogICAgICAgICAgICAkdGhpcy5yZW1vdmVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIHNlbGVjdGVkMy5zcGxpY2UoZmluZEluZGV4KFtpbmZvLnJvdywgaW5mby5jb2xdKSwgMSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoc2VsTW9kZSA9PT0gJ3NpbmdsZScpICQodGFibGUuY2VsbHMoKS5ub2RlcygpKS5yZW1vdmVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgc2VsZWN0ZWQzID0gc2VsTW9kZSA9PT0gJ3NpbmdsZScgPyBbW2luZm8ucm93LCBpbmZvLmNvbF1dIDoKICAgICAgICAgICAgICB1bmlxdWUoc2VsZWN0ZWQzLmNvbmNhdChbW2luZm8ucm93LCBpbmZvLmNvbF1dKSk7CiAgICAgICAgICB9CiAgICAgICAgICBjaGFuZ2VJbnB1dCgnY2VsbHNfc2VsZWN0ZWQnLCB0cmFuc3Bvc2VBcnJheTJEKHNlbGVjdGVkMyksICdzaGlueS5tYXRyaXgnKTsKICAgICAgICB9KTsKICAgICAgICBjaGFuZ2VJbnB1dCgnY2VsbHNfc2VsZWN0ZWQnLCB0cmFuc3Bvc2VBcnJheTJEKHNlbGVjdGVkMyksICdzaGlueS5tYXRyaXgnKTsKICAgICAgICB2YXIgc2VsZWN0Q2VsbHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHRhYmxlLiQoJ3RkLicgKyBzZWxDbGFzcykucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgaWYgKHNlbGVjdGVkMy5sZW5ndGggPT09IDApIHJldHVybjsKICAgICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgICAgdGFibGUuY2VsbHMoe3BhZ2U6ICdjdXJyZW50J30pLmV2ZXJ5KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhciBpbmZvID0gdHdlYWtDZWxsSW5kZXgodGhpcyk7CiAgICAgICAgICAgICAgaWYgKGZpbmRJbmRleChbaW5mby5yb3csIGluZm8uY29sXSwgc2VsZWN0ZWQzKSA+IC0xKQogICAgICAgICAgICAgICAgJCh0aGlzLm5vZGUoKSkuYWRkQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlbGVjdGVkMy5tYXAoZnVuY3Rpb24oaWopIHsKICAgICAgICAgICAgICAkKHRhYmxlLmNlbGwoaWpbMF0gLSAxLCBpalsxXSkubm9kZSgpKS5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgc2VsZWN0Q2VsbHMoKTsgIC8vIGluIGNhc2UgdXNlcnMgaGF2ZSBzcGVjaWZpZWQgcHJlLXNlbGVjdGVkIGNvbHVtbnMKICAgICAgICBpZiAoc2VydmVyKSB0YWJsZS5vbignZHJhdy5kdCcsIHNlbGVjdENlbGxzKTsKICAgICAgICBtZXRob2RzLnNlbGVjdENlbGxzID0gZnVuY3Rpb24oc2VsZWN0ZWQpIHsKICAgICAgICAgIHNlbGVjdGVkMyA9IHNlbGVjdGVkID8gc2VsZWN0ZWQgOiBbXTsKICAgICAgICAgIHNlbGVjdENlbGxzKCk7CiAgICAgICAgICBjaGFuZ2VJbnB1dCgnY2VsbHNfc2VsZWN0ZWQnLCB0cmFuc3Bvc2VBcnJheTJEKHNlbGVjdGVkMyksICdzaGlueS5tYXRyaXgnKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyBleHBvc2Ugc29tZSB0YWJsZSBpbmZvIHRvIFNoaW55CiAgICB2YXIgdXBkYXRlVGFibGVJbmZvID0gZnVuY3Rpb24oZSwgc2V0dGluZ3MpIHsKICAgICAgLy8gVE9ETzogaXMgYW55b25lIGludGVyZXN0ZWQgaW4gdGhlIHBhZ2UgaW5mbz8KICAgICAgLy8gY2hhbmdlSW5wdXQoJ3BhZ2VfaW5mbycsIHRhYmxlLnBhZ2UuaW5mbygpKTsKICAgICAgdmFyIHVwZGF0ZVJvd0luZm8gPSBmdW5jdGlvbihpZCwgbW9kaWZpZXIpIHsKICAgICAgICB2YXIgaWR4OwogICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgIGlkeCA9IG1vZGlmaWVyLnBhZ2UgPT09ICdjdXJyZW50JyA/IERUX3Jvd3NfY3VycmVudCA6IERUX3Jvd3NfYWxsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgcm93cyA9IHRhYmxlLnJvd3MoJC5leHRlbmQoewogICAgICAgICAgICBzZWFyY2g6ICdhcHBsaWVkJywKICAgICAgICAgICAgcGFnZTogJ2FsbCcKICAgICAgICAgIH0sIG1vZGlmaWVyKSk7CiAgICAgICAgICBpZHggPSBhZGRPbmUocm93cy5pbmRleGVzKCkudG9BcnJheSgpKTsKICAgICAgICB9CiAgICAgICAgY2hhbmdlSW5wdXQoJ3Jvd3MnICsgJ18nICsgaWQsIGlkeCk7CiAgICAgIH07CiAgICAgIHVwZGF0ZVJvd0luZm8oJ2N1cnJlbnQnLCB7cGFnZTogJ2N1cnJlbnQnfSk7CiAgICAgIHVwZGF0ZVJvd0luZm8oJ2FsbCcsIHt9KTsKICAgIH0KICAgIHRhYmxlLm9uKCdkcmF3LmR0JywgdXBkYXRlVGFibGVJbmZvKTsKICAgIHVwZGF0ZVRhYmxlSW5mbygpOwoKICAgIC8vIHN0YXRlIGluZm8KICAgIHRhYmxlLm9uKCdkcmF3LmR0IGNvbHVtbi12aXNpYmlsaXR5LmR0JywgZnVuY3Rpb24oKSB7CiAgICAgIGNoYW5nZUlucHV0KCdzdGF0ZScsIHRhYmxlLnN0YXRlKCkpOwogICAgfSk7CiAgICBjaGFuZ2VJbnB1dCgnc3RhdGUnLCB0YWJsZS5zdGF0ZSgpKTsKCiAgICAvLyBzZWFyY2ggaW5mbwogICAgdmFyIHVwZGF0ZVNlYXJjaEluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgY2hhbmdlSW5wdXQoJ3NlYXJjaCcsIHRhYmxlLnNlYXJjaCgpKTsKICAgICAgaWYgKGZpbHRlclJvdykgY2hhbmdlSW5wdXQoJ3NlYXJjaF9jb2x1bW5zJywgZmlsdGVyUm93LnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24odGQpIHsKICAgICAgICByZXR1cm4gJCh0ZCkuZmluZCgnaW5wdXQnKS5maXJzdCgpLnZhbCgpOwogICAgICB9KSk7CiAgICB9CiAgICB0YWJsZS5vbignZHJhdy5kdCcsIHVwZGF0ZVNlYXJjaEluZm8pOwogICAgdXBkYXRlU2VhcmNoSW5mbygpOwoKICAgIC8vIHRoZSBjdXJyZW50IGNlbGwgY2xpY2tlZCBvbgogICAgdGFibGUub24oJ2NsaWNrLmR0JywgJ3Rib2R5IHRkJywgZnVuY3Rpb24oKSB7CiAgICAgIHZhciBpbmZvID0gdHdlYWtDZWxsSW5kZXgodGFibGUuY2VsbCh0aGlzKSk7CiAgICAgIGluZm8udmFsdWUgPSB0YWJsZS5jZWxsKHRoaXMpLmRhdGEoKTsKICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxfY2xpY2tlZCcsIGluZm8pOwogICAgfSkKICAgIGNoYW5nZUlucHV0KCdjZWxsX2NsaWNrZWQnLCB7fSk7CgogICAgLy8gZG8gbm90IHRyaWdnZXIgdGFibGUgc2VsZWN0aW9uIHdoZW4gY2xpY2tpbmcgb24gbGlua3MgdW5sZXNzIHRoZXkgaGF2ZSBjbGFzc2VzCiAgICB0YWJsZS5vbignY2xpY2suZHQnLCAndGJvZHkgdGQgYScsIGZ1bmN0aW9uKGUpIHsKICAgICAgaWYgKHRoaXMuY2xhc3NOYW1lID09PSAnJykgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgIH0pOwoKICAgIG1ldGhvZHMuYWRkUm93ID0gZnVuY3Rpb24oZGF0YSwgcm93bmFtZSkgewogICAgICB2YXIgZGF0YTAgPSB0YWJsZS5yb3coMCkuZGF0YSgpLCBuID0gZGF0YTAubGVuZ3RoLCBkID0gbiAtIGRhdGEubGVuZ3RoOwogICAgICBpZiAoZCA9PT0gMSkgewogICAgICAgIGRhdGEgPSByb3duYW1lLmNvbmNhdChkYXRhKQogICAgICB9IGVsc2UgaWYgKGQgIT09IDApIHsKICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTsKICAgICAgICBjb25zb2xlLmxvZyhkYXRhMCk7CiAgICAgICAgdGhyb3cgJ05ldyBkYXRhIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoIGFzIGN1cnJlbnQgZGF0YSAoJyArIG4gKyAnKSc7CiAgICAgIH07CiAgICAgIHRhYmxlLnJvdy5hZGQoZGF0YSkuZHJhdygpOwogICAgfQoKICAgIG1ldGhvZHMudXBkYXRlU2VhcmNoID0gZnVuY3Rpb24oa2V5d29yZHMpIHsKICAgICAgaWYgKGtleXdvcmRzLmdsb2JhbCAhPT0gbnVsbCkKICAgICAgICAkKHRhYmxlLnRhYmxlKCkuY29udGFpbmVyKCkpLmZpbmQoJ2lucHV0W3R5cGU9c2VhcmNoXScpLmZpcnN0KCkKICAgICAgICAgICAgIC52YWwoa2V5d29yZHMuZ2xvYmFsKS50cmlnZ2VyKCdpbnB1dCcpOwogICAgICB2YXIgY29sdW1ucyA9IGtleXdvcmRzLmNvbHVtbnM7CiAgICAgIGlmICghZmlsdGVyUm93IHx8IGNvbHVtbnMgPT09IG51bGwpIHJldHVybjsKICAgICAgZmlsdGVyUm93LnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24odGQsIGkpIHsKICAgICAgICB2YXIgdiA9IHR5cGVvZiBjb2x1bW5zID09PSAnc3RyaW5nJyA/IGNvbHVtbnMgOiBjb2x1bW5zW2ldOwogICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKCdUaGUgc2VhcmNoIGtleXdvcmQgZm9yIGNvbHVtbiAnICsgaSArICcgaXMgdW5kZWZpbmVkJykKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJCh0ZCkuZmluZCgnaW5wdXQnKS5maXJzdCgpLnZhbCh2KTsKICAgICAgICB0YWJsZS5jb2x1bW4oaSkuc2VhcmNoKHYpOwogICAgICB9KTsKICAgICAgdGFibGUuZHJhdygpOwogICAgfQoKICAgIG1ldGhvZHMuc2VsZWN0UGFnZSA9IGZ1bmN0aW9uKHBhZ2UpIHsKICAgICAgaWYgKHRhYmxlLnBhZ2UuaW5mbygpLnBhZ2VzIDwgcGFnZSB8fCBwYWdlIDwgMSkgewogICAgICAgIHRocm93ICdTZWxlY3RlZCBwYWdlIGlzIG91dCBvZiByYW5nZSc7CiAgICAgIH07CiAgICAgIHRhYmxlLnBhZ2UocGFnZSAtIDEpLmRyYXcoZmFsc2UpOwogICAgfQoKICAgIG1ldGhvZHMucmVsb2FkRGF0YSA9IGZ1bmN0aW9uKHJlc2V0UGFnaW5nLCBjbGVhclNlbGVjdGlvbikgewogICAgICAvLyBlbXB0eSBzZWxlY3Rpb25zIGZpcnN0IGlmIG5lY2Vzc2FyeQogICAgICBpZiAobWV0aG9kcy5zZWxlY3RSb3dzICYmIGluQXJyYXkoJ3JvdycsIGNsZWFyU2VsZWN0aW9uKSkgbWV0aG9kcy5zZWxlY3RSb3dzKFtdKTsKICAgICAgaWYgKG1ldGhvZHMuc2VsZWN0Q29sdW1ucyAmJiBpbkFycmF5KCdjb2x1bW4nLCBjbGVhclNlbGVjdGlvbikpIG1ldGhvZHMuc2VsZWN0Q29sdW1ucyhbXSk7CiAgICAgIGlmIChtZXRob2RzLnNlbGVjdENlbGxzICYmIGluQXJyYXkoJ2NlbGwnLCBjbGVhclNlbGVjdGlvbikpIG1ldGhvZHMuc2VsZWN0Q2VsbHMoW10pOwogICAgICB0YWJsZS5hamF4LnJlbG9hZChudWxsLCByZXNldFBhZ2luZyk7CiAgICB9CgogICAgdGFibGUuc2hpbnlNZXRob2RzID0gbWV0aG9kczsKICB9LAogIHJlc2l6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQsIGluc3RhbmNlKSB7CiAgICBpZiAoaW5zdGFuY2UuZGF0YSkgdGhpcy5yZW5kZXJWYWx1ZShlbCwgaW5zdGFuY2UuZGF0YSwgaW5zdGFuY2UpOwoKICAgIC8vIGR5bmFtaWNhbGx5IGFkanVzdCBoZWlnaHQgaWYgZmlsbENvbnRhaW5lciA9IFRSVUUKICAgIGlmIChpbnN0YW5jZS5maWxsQ29udGFpbmVyKQogICAgICB0aGlzLmZpbGxBdmFpbGFibGVIZWlnaHQoZWwsIGhlaWdodCk7CgogICAgdGhpcy5hZGp1c3RXaWR0aChlbCk7CiAgfSwKCiAgLy8gZHluYW1pY2FsbHkgc2V0IHRoZSBzY3JvbGwgYm9keSB0byBmaWxsIGF2YWlsYWJsZSBoZWlnaHQKICAvLyAodXNlZCB3aXRoIGZpbGxDb250YWluZXIgPSBUUlVFKQogIGZpbGxBdmFpbGFibGVIZWlnaHQ6IGZ1bmN0aW9uKGVsLCBhdmFpbGFibGVIZWlnaHQpIHsKCiAgICAvLyBzZWUgaG93IG11Y2ggb2YgdGhlIHRhYmxlIGlzIG9jY3VwaWVkIGJ5IGhlYWRlci9mb290ZXIgZWxlbWVudHMKICAgIC8vIGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIGEgdGFyZ2V0IHNjcm9sbCBib2R5IGhlaWdodAogICAgdmFyIGR0V3JhcHBlciA9ICQoZWwpLmZpbmQoJ2Rpdi5kYXRhVGFibGVzX3dyYXBwZXInKTsKICAgIHZhciBkdFNjcm9sbEJvZHkgPSAkKGVsKS5maW5kKCQoJ2Rpdi5kYXRhVGFibGVzX3Njcm9sbEJvZHknKSk7CiAgICB2YXIgZnJhbWluZ0hlaWdodCA9IGR0V3JhcHBlci5pbm5lckhlaWdodCgpIC0gZHRTY3JvbGxCb2R5LmlubmVySGVpZ2h0KCk7CiAgICB2YXIgc2Nyb2xsQm9keUhlaWdodCA9IGF2YWlsYWJsZUhlaWdodCAtIGZyYW1pbmdIZWlnaHQ7CgogICAgLy8gc2V0IHRoZSBoZWlnaHQKICAgIGR0U2Nyb2xsQm9keS5oZWlnaHQoc2Nyb2xsQm9keUhlaWdodCArICdweCcpOwogIH0sCgogIC8vIGFkanVzdCB0aGUgd2lkdGggb2YgY29sdW1uczsgcmVtb3ZlIHRoZSBoYXJkLWNvZGVkIHdpZHRocyBvbiB0YWJsZSBhbmQgdGhlCiAgLy8gc2Nyb2xsIGhlYWRlciB3aGVuIHNjcm9sbFgvWSBhcmUgZW5hYmxlZAogIGFkanVzdFdpZHRoOiBmdW5jdGlvbihlbCkgewogICAgdmFyICRlbCA9ICQoZWwpLCB0YWJsZSA9ICRlbC5kYXRhKCdkYXRhdGFibGUnKTsKICAgIGlmICh0YWJsZSkgdGFibGUuY29sdW1ucy5hZGp1c3QoKTsKICAgICRlbC5maW5kKCcuZGF0YVRhYmxlc19zY3JvbGxIZWFkSW5uZXInKS5jc3MoJ3dpZHRoJywgJycpCiAgICAgICAgLmNoaWxkcmVuKCd0YWJsZScpLmNzcygnbWFyZ2luLWxlZnQnLCAnJyk7CiAgfQp9KTsKCiAgaWYgKCFIVE1MV2lkZ2V0cy5zaGlueU1vZGUpIHJldHVybjsKCiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoJ2RhdGF0YWJsZS1jYWxscycsIGZ1bmN0aW9uKGRhdGEpIHsKICAgIHZhciBpZCA9IGRhdGEuaWQ7CiAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICB2YXIgdGFibGUgPSBlbCA/ICQoZWwpLmRhdGEoJ2RhdGF0YWJsZScpIDogbnVsbDsKICAgIGlmICghdGFibGUpIHsKICAgICAgY29uc29sZS5sb2coIkNvdWxkbid0IGZpbmQgdGFibGUgd2l0aCBpZCAiICsgaWQpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIG1ldGhvZHMgPSB0YWJsZS5zaGlueU1ldGhvZHMsIGNhbGwgPSBkYXRhLmNhbGw7CiAgICBpZiAobWV0aG9kc1tjYWxsLm1ldGhvZF0pIHsKICAgICAgbWV0aG9kc1tjYWxsLm1ldGhvZF0uYXBwbHkodGFibGUsIGNhbGwuYXJncyk7CiAgICB9IGVsc2UgewogICAgICBjb25zb2xlLmxvZygiVW5rbm93biBtZXRob2QgIiArIGNhbGwubWV0aG9kKTsKICAgIH0KICB9KTsKCn0pKCk7Cg=="></script>
<link href="data:text/css;charset=utf-8,table%2EdataTable%7Bwidth%3A100%25%3Bmargin%3A0%20auto%3Bclear%3Aboth%3Bborder%2Dcollapse%3Aseparate%3Bborder%2Dspacing%3A0%7Dtable%2EdataTable%20thead%20th%2Ctable%2EdataTable%20tfoot%20th%7Bfont%2Dweight%3Abold%7Dtable%2EdataTable%20thead%20th%2Ctable%2EdataTable%20thead%20td%7Bpadding%3A10px%2018px%3Bborder%2Dbottom%3A1px%20solid%20%23111%7Dtable%2EdataTable%20thead%20th%3Aactive%2Ctable%2EdataTable%20thead%20td%3Aactive%7Boutline%3Anone%7Dtable%2EdataTable%20tfoot%20th%2Ctable%2EdataTable%20tfoot%20td%7Bpadding%3A10px%2018px%206px%2018px%3Bborder%2Dtop%3A1px%20solid%20%23111%7Dtable%2EdataTable%20thead%20%2Esorting%2Ctable%2EdataTable%20thead%20%2Esorting%5Fasc%2Ctable%2EdataTable%20thead%20%2Esorting%5Fdesc%7Bcursor%3Apointer%3B%2Acursor%3Ahand%7Dtable%2EdataTable%20thead%20%2Esorting%2Ctable%2EdataTable%20thead%20%2Esorting%5Fasc%2Ctable%2EdataTable%20thead%20%2Esorting%5Fdesc%2Ctable%2EdataTable%20thead%20%2Esorting%5Fasc%5Fdisabled%2Ctable%2EdataTable%20thead%20%2Esorting%5Fdesc%5Fdisabled%7Bbackground%2Drepeat%3Ano%2Drepeat%3Bbackground%2Dposition%3Acenter%20right%7Dtable%2EdataTable%20thead%20%2Esorting%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7XQMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL%2BTq%2FQCM1oNiJidwox0355mXnG%2FDrEtIQ6azioNZQxI0ykPhTQIwhCR%2BBmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P%2BGtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC%29%7Dtable%2EdataTable%20thead%20%2Esorting%5Fasc%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS%2FgDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM%2BwTENuQahAvEO9DMwiGdwAxOymGJQLxTyD%2BjgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg%3D%3D%29%7Dtable%2EdataTable%20thead%20%2Esorting%5Fdesc%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA%2FBOIv2PBIPFEUgxjB%2BIdQPwfC94HxLykus4GiD%2BhGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL%2BAuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII%3D%29%7Dtable%2EdataTable%20thead%20%2Esorting%5Fasc%5Fdisabled%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAW0lEQVQoz2NgoCm4w3Vnwh02wspK7%2Fy6k01Ikdadx3f%2B37l9RxmfIsY7c4GKQHDiHUbcyhzvvIMq%2B3THBpci3jv7oIpAcMcdduzKEu%2F8vPMdDn%2FeiWQYBYMKAAC3ykIEuYQJUgAAAABJRU5ErkJggg%3D%3D%29%7Dtable%2EdataTable%20thead%20%2Esorting%5Fdesc%5Fdisabled%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAWUlEQVQoz2NgGAWDCtyJvPPzznc4%2FHknEbsy9js77vyHw313eHGZZ3PnE1TRuzuOuK1lvDMRqmzuHUZ87lO%2Bcxuo6PEdLUIeyb7z604pYf%2By3Zlwh4u2YQoAc7ZCBHH4jigAAAAASUVORK5CYII%3D%29%7Dtable%2EdataTable%20tbody%20tr%7Bbackground%2Dcolor%3A%23ffffff%7Dtable%2EdataTable%20tbody%20tr%2Eselected%7Bbackground%2Dcolor%3A%23B0BED9%7Dtable%2EdataTable%20tbody%20th%2Ctable%2EdataTable%20tbody%20td%7Bpadding%3A8px%2010px%7Dtable%2EdataTable%2Erow%2Dborder%20tbody%20th%2Ctable%2EdataTable%2Erow%2Dborder%20tbody%20td%2Ctable%2EdataTable%2Edisplay%20tbody%20th%2Ctable%2EdataTable%2Edisplay%20tbody%20td%7Bborder%2Dtop%3A1px%20solid%20%23ddd%7Dtable%2EdataTable%2Erow%2Dborder%20tbody%20tr%3Afirst%2Dchild%20th%2Ctable%2EdataTable%2Erow%2Dborder%20tbody%20tr%3Afirst%2Dchild%20td%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3Afirst%2Dchild%20th%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3Afirst%2Dchild%20td%7Bborder%2Dtop%3Anone%7Dtable%2EdataTable%2Ecell%2Dborder%20tbody%20th%2Ctable%2EdataTable%2Ecell%2Dborder%20tbody%20td%7Bborder%2Dtop%3A1px%20solid%20%23ddd%3Bborder%2Dright%3A1px%20solid%20%23ddd%7Dtable%2EdataTable%2Ecell%2Dborder%20tbody%20tr%20th%3Afirst%2Dchild%2Ctable%2EdataTable%2Ecell%2Dborder%20tbody%20tr%20td%3Afirst%2Dchild%7Bborder%2Dleft%3A1px%20solid%20%23ddd%7Dtable%2EdataTable%2Ecell%2Dborder%20tbody%20tr%3Afirst%2Dchild%20th%2Ctable%2EdataTable%2Ecell%2Dborder%20tbody%20tr%3Afirst%2Dchild%20td%7Bborder%2Dtop%3Anone%7Dtable%2EdataTable%2Estripe%20tbody%20tr%2Eodd%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%7Bbackground%2Dcolor%3A%23f9f9f9%7Dtable%2EdataTable%2Estripe%20tbody%20tr%2Eodd%2Eselected%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%2Eselected%7Bbackground%2Dcolor%3A%23acbad4%7Dtable%2EdataTable%2Ehover%20tbody%20tr%3Ahover%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%7Bbackground%2Dcolor%3A%23f6f6f6%7Dtable%2EdataTable%2Ehover%20tbody%20tr%3Ahover%2Eselected%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%7Bbackground%2Dcolor%3A%23aab7d1%7Dtable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%3E%2Esorting%5F3%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3E%2Esorting%5F1%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3E%2Esorting%5F2%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23fafafa%7Dtable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eselected%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23acbad5%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23f1f1f1%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23f3f3f3%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%3E%2Esorting%5F3%7Bbackground%2Dcolor%3Awhitesmoke%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23a6b4cd%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23a8b5cf%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23a9b7d1%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23fafafa%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23fcfcfc%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23fefefe%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23acbad5%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23aebcd6%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23afbdd8%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23eaeaea%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23ececec%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23efefef%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23a2aec7%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23a3b0c9%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23a5b2cb%7Dtable%2EdataTable%2Eno%2Dfooter%7Bborder%2Dbottom%3A1px%20solid%20%23111%7Dtable%2EdataTable%2Enowrap%20th%2Ctable%2EdataTable%2Enowrap%20td%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%2Ecompact%20thead%20th%2Ctable%2EdataTable%2Ecompact%20thead%20td%7Bpadding%3A4px%2017px%204px%204px%7Dtable%2EdataTable%2Ecompact%20tfoot%20th%2Ctable%2EdataTable%2Ecompact%20tfoot%20td%7Bpadding%3A4px%7Dtable%2EdataTable%2Ecompact%20tbody%20th%2Ctable%2EdataTable%2Ecompact%20tbody%20td%7Bpadding%3A4px%7Dtable%2EdataTable%20th%2Edt%2Dleft%2Ctable%2EdataTable%20td%2Edt%2Dleft%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20th%2Edt%2Dcenter%2Ctable%2EdataTable%20td%2Edt%2Dcenter%2Ctable%2EdataTable%20td%2EdataTables%5Fempty%7Btext%2Dalign%3Acenter%7Dtable%2EdataTable%20th%2Edt%2Dright%2Ctable%2EdataTable%20td%2Edt%2Dright%7Btext%2Dalign%3Aright%7Dtable%2EdataTable%20th%2Edt%2Djustify%2Ctable%2EdataTable%20td%2Edt%2Djustify%7Btext%2Dalign%3Ajustify%7Dtable%2EdataTable%20th%2Edt%2Dnowrap%2Ctable%2EdataTable%20td%2Edt%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dleft%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dleft%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dleft%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dleft%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dcenter%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dcenter%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dcenter%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dcenter%7Btext%2Dalign%3Acenter%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dright%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dright%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dright%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dright%7Btext%2Dalign%3Aright%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Djustify%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Djustify%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Djustify%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Djustify%7Btext%2Dalign%3Ajustify%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dnowrap%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dnowrap%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dnowrap%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dleft%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dleft%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dcenter%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dcenter%7Btext%2Dalign%3Acenter%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dright%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dright%7Btext%2Dalign%3Aright%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Djustify%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Djustify%7Btext%2Dalign%3Ajustify%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dnowrap%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%2Ctable%2EdataTable%20th%2Ctable%2EdataTable%20td%7B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%7D%2EdataTables%5Fwrapper%7Bposition%3Arelative%3Bclear%3Aboth%3B%2Azoom%3A1%3Bzoom%3A1%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%7Bfloat%3Aleft%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%7Bfloat%3Aright%3Btext%2Dalign%3Aright%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%20input%7Bmargin%2Dleft%3A0%2E5em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Finfo%7Bclear%3Aboth%3Bfloat%3Aleft%3Bpadding%2Dtop%3A0%2E755em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bfloat%3Aright%3Btext%2Dalign%3Aright%3Bpadding%2Dtop%3A0%2E25em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%7Bbox%2Dsizing%3Aborder%2Dbox%3Bdisplay%3Ainline%2Dblock%3Bmin%2Dwidth%3A1%2E5em%3Bpadding%3A0%2E5em%201em%3Bmargin%2Dleft%3A2px%3Btext%2Dalign%3Acenter%3Btext%2Ddecoration%3Anone%20%21important%3Bcursor%3Apointer%3B%2Acursor%3Ahand%3Bcolor%3A%23333%20%21important%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A2px%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Ecurrent%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Ecurrent%3Ahover%7Bcolor%3A%23333%20%21important%3Bborder%3A1px%20solid%20%23979797%3Bbackground%2Dcolor%3Awhite%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%20%23fff%29%2C%20color%2Dstop%28100%25%2C%20%23dcdcdc%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%3Ahover%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%3Aactive%7Bcursor%3Adefault%3Bcolor%3A%23666%20%21important%3Bborder%3A1px%20solid%20transparent%3Bbackground%3Atransparent%3Bbox%2Dshadow%3Anone%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%3Ahover%7Bcolor%3Awhite%20%21important%3Bborder%3A1px%20solid%20%23111%3Bbackground%2Dcolor%3A%23585858%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%20%23585858%29%2C%20color%2Dstop%28100%25%2C%20%23111%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%20%23585858%200%25%2C%20%23111%20100%25%29%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%3Aactive%7Boutline%3Anone%3Bbackground%2Dcolor%3A%232b2b2b%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%20%232b2b2b%29%2C%20color%2Dstop%28100%25%2C%20%230c0c0c%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbox%2Dshadow%3Ainset%200%200%203px%20%23111%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Eellipsis%7Bpadding%3A0%201em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fprocessing%7Bposition%3Aabsolute%3Btop%3A50%25%3Bleft%3A50%25%3Bwidth%3A100%25%3Bheight%3A40px%3Bmargin%2Dleft%3A%2D50%25%3Bmargin%2Dtop%3A%2D25px%3Bpadding%2Dtop%3A20px%3Btext%2Dalign%3Acenter%3Bfont%2Dsize%3A1%2E2em%3Bbackground%2Dcolor%3Awhite%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20right%20top%2C%20color%2Dstop%280%25%2C%20rgba%28255%2C255%2C255%2C0%29%29%2C%20color%2Dstop%2825%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%29%2C%20color%2Dstop%2875%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%29%2C%20color%2Dstop%28100%25%2C%20rgba%28255%2C255%2C255%2C0%29%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28left%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28left%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28left%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20right%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Finfo%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fprocessing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bcolor%3A%23333%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%7Bclear%3Aboth%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%7B%2Amargin%2Dtop%3A%2D1px%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%20th%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%20td%7Bvertical%2Dalign%3Amiddle%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%20th%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%20td%3Ediv%2EdataTables%5Fsizing%7Bheight%3A0%3Boverflow%3Ahidden%3Bmargin%3A0%20%21important%3Bpadding%3A0%20%21important%7D%2EdataTables%5Fwrapper%2Eno%2Dfooter%20%2EdataTables%5FscrollBody%7Bborder%2Dbottom%3A1px%20solid%20%23111%7D%2EdataTables%5Fwrapper%2Eno%2Dfooter%20div%2EdataTables%5FscrollHead%20table%2C%2EdataTables%5Fwrapper%2Eno%2Dfooter%20div%2EdataTables%5FscrollBody%20table%7Bborder%2Dbottom%3Anone%7D%2EdataTables%5Fwrapper%3Aafter%7Bvisibility%3Ahidden%3Bdisplay%3Ablock%3Bcontent%3A%22%22%3Bclear%3Aboth%3Bheight%3A0%7D%40media%20screen%20and%20%28max%2Dwidth%3A%20767px%29%7B%2EdataTables%5Fwrapper%20%2EdataTables%5Finfo%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bfloat%3Anone%3Btext%2Dalign%3Acenter%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bmargin%2Dtop%3A0%2E5em%7D%7D%40media%20screen%20and%20%28max%2Dwidth%3A%20640px%29%7B%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%7Bfloat%3Anone%3Btext%2Dalign%3Acenter%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%7Bmargin%2Dtop%3A0%2E5em%7D%7D%0A" rel="stylesheet" /> <link href="data:text/css;charset=utf-8,%0Atable%2EdataTable%20tr%2Eselected%20td%2C%20table%2EdataTable%20td%2Eselected%20%7B%0Abackground%2Dcolor%3A%20%23b0bed9%20%21important%3B%0A%7D%0A%0A%2EdataTables%5FscrollBody%20%2EdataTables%5Fsizing%20%7B%0Avisibility%3A%20hidden%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,LyohCiBEYXRhVGFibGVzIDEuMTAuMTIKIMKpMjAwOC0yMDE1IFNwcnlNZWRpYSBMdGQgLSBkYXRhdGFibGVzLm5ldC9saWNlbnNlCiovCihmdW5jdGlvbihoKXsiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxmdW5jdGlvbihEKXtyZXR1cm4gaChELHdpbmRvdyxkb2N1bWVudCl9KToib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKEQsSSl7RHx8KEQ9d2luZG93KTtJfHwoST0idW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3c/cmVxdWlyZSgianF1ZXJ5Iik6cmVxdWlyZSgianF1ZXJ5IikoRCkpO3JldHVybiBoKEksRCxELmRvY3VtZW50KX06aChqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGgsRCxJLGspe2Z1bmN0aW9uIFgoYSl7dmFyIGIsYyxkPXt9O2guZWFjaChhLGZ1bmN0aW9uKGUpe2lmKChiPWUubWF0Y2goL14oW15BLVpdKz8pKFtBLVpdKS8pKSYmLTEhPT0iYSBhYSBhaSBhbyBhcyBiIGZuIGkgbSBvIHMgIi5pbmRleE9mKGJbMV0rIiAiKSljPWUucmVwbGFjZShiWzBdLGJbMl0udG9Mb3dlckNhc2UoKSksCmRbY109ZSwibyI9PT1iWzFdJiZYKGFbZV0pfSk7YS5faHVuZ2FyaWFuTWFwPWR9ZnVuY3Rpb24gSyhhLGIsYyl7YS5faHVuZ2FyaWFuTWFwfHxYKGEpO3ZhciBkO2guZWFjaChiLGZ1bmN0aW9uKGUpe2Q9YS5faHVuZ2FyaWFuTWFwW2VdO2lmKGQhPT1rJiYoY3x8YltkXT09PWspKSJvIj09PWQuY2hhckF0KDApPyhiW2RdfHwoYltkXT17fSksaC5leHRlbmQoITAsYltkXSxiW2VdKSxLKGFbZF0sYltkXSxjKSk6YltkXT1iW2VdfSl9ZnVuY3Rpb24gRGEoYSl7dmFyIGI9bS5kZWZhdWx0cy5vTGFuZ3VhZ2UsYz1hLnNaZXJvUmVjb3JkczshYS5zRW1wdHlUYWJsZSYmKGMmJiJObyBkYXRhIGF2YWlsYWJsZSBpbiB0YWJsZSI9PT1iLnNFbXB0eVRhYmxlKSYmRShhLGEsInNaZXJvUmVjb3JkcyIsInNFbXB0eVRhYmxlIik7IWEuc0xvYWRpbmdSZWNvcmRzJiYoYyYmIkxvYWRpbmcuLi4iPT09Yi5zTG9hZGluZ1JlY29yZHMpJiZFKGEsYSwic1plcm9SZWNvcmRzIiwic0xvYWRpbmdSZWNvcmRzIik7CmEuc0luZm9UaG91c2FuZHMmJihhLnNUaG91c2FuZHM9YS5zSW5mb1Rob3VzYW5kcyk7KGE9YS5zRGVjaW1hbCkmJmRiKGEpfWZ1bmN0aW9uIGViKGEpe0EoYSwib3JkZXJpbmciLCJiU29ydCIpO0EoYSwib3JkZXJNdWx0aSIsImJTb3J0TXVsdGkiKTtBKGEsIm9yZGVyQ2xhc3NlcyIsImJTb3J0Q2xhc3NlcyIpO0EoYSwib3JkZXJDZWxsc1RvcCIsImJTb3J0Q2VsbHNUb3AiKTtBKGEsIm9yZGVyIiwiYWFTb3J0aW5nIik7QShhLCJvcmRlckZpeGVkIiwiYWFTb3J0aW5nRml4ZWQiKTtBKGEsInBhZ2luZyIsImJQYWdpbmF0ZSIpO0EoYSwicGFnaW5nVHlwZSIsInNQYWdpbmF0aW9uVHlwZSIpO0EoYSwicGFnZUxlbmd0aCIsImlEaXNwbGF5TGVuZ3RoIik7QShhLCJzZWFyY2hpbmciLCJiRmlsdGVyIik7ImJvb2xlYW4iPT09dHlwZW9mIGEuc1Njcm9sbFgmJihhLnNTY3JvbGxYPWEuc1Njcm9sbFg/IjEwMCUiOiIiKTsiYm9vbGVhbiI9PT10eXBlb2YgYS5zY3JvbGxYJiYoYS5zY3JvbGxYPQphLnNjcm9sbFg/IjEwMCUiOiIiKTtpZihhPWEuYW9TZWFyY2hDb2xzKWZvcih2YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2IrKylhW2JdJiZLKG0ubW9kZWxzLm9TZWFyY2gsYVtiXSl9ZnVuY3Rpb24gZmIoYSl7QShhLCJvcmRlcmFibGUiLCJiU29ydGFibGUiKTtBKGEsIm9yZGVyRGF0YSIsImFEYXRhU29ydCIpO0EoYSwib3JkZXJTZXF1ZW5jZSIsImFzU29ydGluZyIpO0EoYSwib3JkZXJEYXRhVHlwZSIsInNvcnREYXRhVHlwZSIpO3ZhciBiPWEuYURhdGFTb3J0O2ImJiFoLmlzQXJyYXkoYikmJihhLmFEYXRhU29ydD1bYl0pfWZ1bmN0aW9uIGdiKGEpe2lmKCFtLl9fYnJvd3Nlcil7dmFyIGI9e307bS5fX2Jyb3dzZXI9Yjt2YXIgYz1oKCI8ZGl2Lz4iKS5jc3Moe3Bvc2l0aW9uOiJmaXhlZCIsdG9wOjAsbGVmdDowLGhlaWdodDoxLHdpZHRoOjEsb3ZlcmZsb3c6ImhpZGRlbiJ9KS5hcHBlbmQoaCgiPGRpdi8+IikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoxLGxlZnQ6MSwKd2lkdGg6MTAwLG92ZXJmbG93OiJzY3JvbGwifSkuYXBwZW5kKGgoIjxkaXYvPiIpLmNzcyh7d2lkdGg6IjEwMCUiLGhlaWdodDoxMH0pKSkuYXBwZW5kVG8oImJvZHkiKSxkPWMuY2hpbGRyZW4oKSxlPWQuY2hpbGRyZW4oKTtiLmJhcldpZHRoPWRbMF0ub2Zmc2V0V2lkdGgtZFswXS5jbGllbnRXaWR0aDtiLmJTY3JvbGxPdmVyc2l6ZT0xMDA9PT1lWzBdLm9mZnNldFdpZHRoJiYxMDAhPT1kWzBdLmNsaWVudFdpZHRoO2IuYlNjcm9sbGJhckxlZnQ9MSE9PU1hdGgucm91bmQoZS5vZmZzZXQoKS5sZWZ0KTtiLmJCb3VuZGluZz1jWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoPyEwOiExO2MucmVtb3ZlKCl9aC5leHRlbmQoYS5vQnJvd3NlcixtLl9fYnJvd3Nlcik7YS5vU2Nyb2xsLmlCYXJXaWR0aD1tLl9fYnJvd3Nlci5iYXJXaWR0aH1mdW5jdGlvbiBoYihhLGIsYyxkLGUsZil7dmFyIGcsaj0hMTtjIT09ayYmKGc9YyxqPSEwKTtmb3IoO2QhPT1lOylhLmhhc093blByb3BlcnR5KGQpJiYKKGc9aj9iKGcsYVtkXSxkLGEpOmFbZF0saj0hMCxkKz1mKTtyZXR1cm4gZ31mdW5jdGlvbiBFYShhLGIpe3ZhciBjPW0uZGVmYXVsdHMuY29sdW1uLGQ9YS5hb0NvbHVtbnMubGVuZ3RoLGM9aC5leHRlbmQoe30sbS5tb2RlbHMub0NvbHVtbixjLHtuVGg6Yj9iOkkuY3JlYXRlRWxlbWVudCgidGgiKSxzVGl0bGU6Yy5zVGl0bGU/Yy5zVGl0bGU6Yj9iLmlubmVySFRNTDoiIixhRGF0YVNvcnQ6Yy5hRGF0YVNvcnQ/Yy5hRGF0YVNvcnQ6W2RdLG1EYXRhOmMubURhdGE/Yy5tRGF0YTpkLGlkeDpkfSk7YS5hb0NvbHVtbnMucHVzaChjKTtjPWEuYW9QcmVTZWFyY2hDb2xzO2NbZF09aC5leHRlbmQoe30sbS5tb2RlbHMub1NlYXJjaCxjW2RdKTtqYShhLGQsaChiKS5kYXRhKCkpfWZ1bmN0aW9uIGphKGEsYixjKXt2YXIgYj1hLmFvQ29sdW1uc1tiXSxkPWEub0NsYXNzZXMsZT1oKGIublRoKTtpZighYi5zV2lkdGhPcmlnKXtiLnNXaWR0aE9yaWc9ZS5hdHRyKCJ3aWR0aCIpfHxudWxsO3ZhciBmPQooZS5hdHRyKCJzdHlsZSIpfHwiIikubWF0Y2goL3dpZHRoOlxzKihcZCtbcHhlbSVdKykvKTtmJiYoYi5zV2lkdGhPcmlnPWZbMV0pfWMhPT1rJiZudWxsIT09YyYmKGZiKGMpLEsobS5kZWZhdWx0cy5jb2x1bW4sYyksYy5tRGF0YVByb3AhPT1rJiYhYy5tRGF0YSYmKGMubURhdGE9Yy5tRGF0YVByb3ApLGMuc1R5cGUmJihiLl9zTWFudWFsVHlwZT1jLnNUeXBlKSxjLmNsYXNzTmFtZSYmIWMuc0NsYXNzJiYoYy5zQ2xhc3M9Yy5jbGFzc05hbWUpLGguZXh0ZW5kKGIsYyksRShiLGMsInNXaWR0aCIsInNXaWR0aE9yaWciKSxjLmlEYXRhU29ydCE9PWsmJihiLmFEYXRhU29ydD1bYy5pRGF0YVNvcnRdKSxFKGIsYywiYURhdGFTb3J0IikpO3ZhciBnPWIubURhdGEsaj1RKGcpLGk9Yi5tUmVuZGVyP1EoYi5tUmVuZGVyKTpudWxsLGM9ZnVuY3Rpb24oYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYSYmLTEhPT1hLmluZGV4T2YoIkAiKX07Yi5fYkF0dHJTcmM9aC5pc1BsYWluT2JqZWN0KGcpJiYKKGMoZy5zb3J0KXx8YyhnLnR5cGUpfHxjKGcuZmlsdGVyKSk7Yi5fc2V0dGVyPW51bGw7Yi5mbkdldERhdGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWooYSxiLGssYyk7cmV0dXJuIGkmJmI/aShkLGIsYSxjKTpkfTtiLmZuU2V0RGF0YT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIFIoZykoYSxiLGMpfTsibnVtYmVyIiE9PXR5cGVvZiBnJiYoYS5fcm93UmVhZE9iamVjdD0hMCk7YS5vRmVhdHVyZXMuYlNvcnR8fChiLmJTb3J0YWJsZT0hMSxlLmFkZENsYXNzKGQuc1NvcnRhYmxlTm9uZSkpO2E9LTEhPT1oLmluQXJyYXkoImFzYyIsYi5hc1NvcnRpbmcpO2M9LTEhPT1oLmluQXJyYXkoImRlc2MiLGIuYXNTb3J0aW5nKTshYi5iU29ydGFibGV8fCFhJiYhYz8oYi5zU29ydGluZ0NsYXNzPWQuc1NvcnRhYmxlTm9uZSxiLnNTb3J0aW5nQ2xhc3NKVUk9IiIpOmEmJiFjPyhiLnNTb3J0aW5nQ2xhc3M9ZC5zU29ydGFibGVBc2MsYi5zU29ydGluZ0NsYXNzSlVJPWQuc1NvcnRKVUlBc2NBbGxvd2VkKToKIWEmJmM/KGIuc1NvcnRpbmdDbGFzcz1kLnNTb3J0YWJsZURlc2MsYi5zU29ydGluZ0NsYXNzSlVJPWQuc1NvcnRKVUlEZXNjQWxsb3dlZCk6KGIuc1NvcnRpbmdDbGFzcz1kLnNTb3J0YWJsZSxiLnNTb3J0aW5nQ2xhc3NKVUk9ZC5zU29ydEpVSSl9ZnVuY3Rpb24gWShhKXtpZighMSE9PWEub0ZlYXR1cmVzLmJBdXRvV2lkdGgpe3ZhciBiPWEuYW9Db2x1bW5zO0ZhKGEpO2Zvcih2YXIgYz0wLGQ9Yi5sZW5ndGg7YzxkO2MrKyliW2NdLm5UaC5zdHlsZS53aWR0aD1iW2NdLnNXaWR0aH1iPWEub1Njcm9sbDsoIiIhPT1iLnNZfHwiIiE9PWIuc1gpJiZrYShhKTt1KGEsbnVsbCwiY29sdW1uLXNpemluZyIsW2FdKX1mdW5jdGlvbiBaKGEsYil7dmFyIGM9bGEoYSwiYlZpc2libGUiKTtyZXR1cm4ibnVtYmVyIj09PXR5cGVvZiBjW2JdP2NbYl06bnVsbH1mdW5jdGlvbiAkKGEsYil7dmFyIGM9bGEoYSwiYlZpc2libGUiKSxjPWguaW5BcnJheShiLGMpO3JldHVybi0xIT09Yz9jOm51bGx9CmZ1bmN0aW9uIGFhKGEpe3ZhciBiPTA7aC5lYWNoKGEuYW9Db2x1bW5zLGZ1bmN0aW9uKGEsZCl7ZC5iVmlzaWJsZSYmIm5vbmUiIT09aChkLm5UaCkuY3NzKCJkaXNwbGF5IikmJmIrK30pO3JldHVybiBifWZ1bmN0aW9uIGxhKGEsYil7dmFyIGM9W107aC5tYXAoYS5hb0NvbHVtbnMsZnVuY3Rpb24oYSxlKXthW2JdJiZjLnB1c2goZSl9KTtyZXR1cm4gY31mdW5jdGlvbiBHYShhKXt2YXIgYj1hLmFvQ29sdW1ucyxjPWEuYW9EYXRhLGQ9bS5leHQudHlwZS5kZXRlY3QsZSxmLGcsaixpLGgsbCxxLHQ7ZT0wO2ZvcihmPWIubGVuZ3RoO2U8ZjtlKyspaWYobD1iW2VdLHQ9W10sIWwuc1R5cGUmJmwuX3NNYW51YWxUeXBlKWwuc1R5cGU9bC5fc01hbnVhbFR5cGU7ZWxzZSBpZighbC5zVHlwZSl7Zz0wO2ZvcihqPWQubGVuZ3RoO2c8ajtnKyspe2k9MDtmb3IoaD1jLmxlbmd0aDtpPGg7aSsrKXt0W2ldPT09ayYmKHRbaV09QihhLGksZSwidHlwZSIpKTtxPWRbZ10odFtpXSxhKTtpZighcSYmCmchPT1kLmxlbmd0aC0xKWJyZWFrO2lmKCJodG1sIj09PXEpYnJlYWt9aWYocSl7bC5zVHlwZT1xO2JyZWFrfX1sLnNUeXBlfHwobC5zVHlwZT0ic3RyaW5nIil9fWZ1bmN0aW9uIGliKGEsYixjLGQpe3ZhciBlLGYsZyxqLGksbixsPWEuYW9Db2x1bW5zO2lmKGIpZm9yKGU9Yi5sZW5ndGgtMTswPD1lO2UtLSl7bj1iW2VdO3ZhciBxPW4udGFyZ2V0cyE9PWs/bi50YXJnZXRzOm4uYVRhcmdldHM7aC5pc0FycmF5KHEpfHwocT1bcV0pO2Y9MDtmb3IoZz1xLmxlbmd0aDtmPGc7ZisrKWlmKCJudW1iZXIiPT09dHlwZW9mIHFbZl0mJjA8PXFbZl0pe2Zvcig7bC5sZW5ndGg8PXFbZl07KUVhKGEpO2QocVtmXSxuKX1lbHNlIGlmKCJudW1iZXIiPT09dHlwZW9mIHFbZl0mJjA+cVtmXSlkKGwubGVuZ3RoK3FbZl0sbik7ZWxzZSBpZigic3RyaW5nIj09PXR5cGVvZiBxW2ZdKXtqPTA7Zm9yKGk9bC5sZW5ndGg7ajxpO2orKykoIl9hbGwiPT1xW2ZdfHxoKGxbal0ublRoKS5oYXNDbGFzcyhxW2ZdKSkmJgpkKGosbil9fWlmKGMpe2U9MDtmb3IoYT1jLmxlbmd0aDtlPGE7ZSsrKWQoZSxjW2VdKX19ZnVuY3Rpb24gTihhLGIsYyxkKXt2YXIgZT1hLmFvRGF0YS5sZW5ndGgsZj1oLmV4dGVuZCghMCx7fSxtLm1vZGVscy5vUm93LHtzcmM6Yz8iZG9tIjoiZGF0YSIsaWR4OmV9KTtmLl9hRGF0YT1iO2EuYW9EYXRhLnB1c2goZik7Zm9yKHZhciBnPWEuYW9Db2x1bW5zLGo9MCxpPWcubGVuZ3RoO2o8aTtqKyspZ1tqXS5zVHlwZT1udWxsO2EuYWlEaXNwbGF5TWFzdGVyLnB1c2goZSk7Yj1hLnJvd0lkRm4oYik7YiE9PWsmJihhLmFJZHNbYl09Zik7KGN8fCFhLm9GZWF0dXJlcy5iRGVmZXJSZW5kZXIpJiZIYShhLGUsYyxkKTtyZXR1cm4gZX1mdW5jdGlvbiBtYShhLGIpe3ZhciBjO2IgaW5zdGFuY2VvZiBofHwoYj1oKGIpKTtyZXR1cm4gYi5tYXAoZnVuY3Rpb24oYixlKXtjPUlhKGEsZSk7cmV0dXJuIE4oYSxjLmRhdGEsZSxjLmNlbGxzKX0pfWZ1bmN0aW9uIEIoYSxiLGMsZCl7dmFyIGU9YS5pRHJhdywKZj1hLmFvQ29sdW1uc1tjXSxnPWEuYW9EYXRhW2JdLl9hRGF0YSxqPWYuc0RlZmF1bHRDb250ZW50LGk9Zi5mbkdldERhdGEoZyxkLHtzZXR0aW5nczphLHJvdzpiLGNvbDpjfSk7aWYoaT09PWspcmV0dXJuIGEuaURyYXdFcnJvciE9ZSYmbnVsbD09PWomJihMKGEsMCwiUmVxdWVzdGVkIHVua25vd24gcGFyYW1ldGVyICIrKCJmdW5jdGlvbiI9PXR5cGVvZiBmLm1EYXRhPyJ7ZnVuY3Rpb259IjoiJyIrZi5tRGF0YSsiJyIpKyIgZm9yIHJvdyAiK2IrIiwgY29sdW1uICIrYyw0KSxhLmlEcmF3RXJyb3I9ZSksajtpZigoaT09PWd8fG51bGw9PT1pKSYmbnVsbCE9PWomJmQhPT1rKWk9ajtlbHNlIGlmKCJmdW5jdGlvbiI9PT10eXBlb2YgaSlyZXR1cm4gaS5jYWxsKGcpO3JldHVybiBudWxsPT09aSYmImRpc3BsYXkiPT1kPyIiOml9ZnVuY3Rpb24gamIoYSxiLGMsZCl7YS5hb0NvbHVtbnNbY10uZm5TZXREYXRhKGEuYW9EYXRhW2JdLl9hRGF0YSxkLHtzZXR0aW5nczphLHJvdzpiLGNvbDpjfSl9CmZ1bmN0aW9uIEphKGEpe3JldHVybiBoLm1hcChhLm1hdGNoKC8oXFwufFteXC5dKSsvZyl8fFsiIl0sZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXFwuL2csIi4iKX0pfWZ1bmN0aW9uIFEoYSl7aWYoaC5pc1BsYWluT2JqZWN0KGEpKXt2YXIgYj17fTtoLmVhY2goYSxmdW5jdGlvbihhLGMpe2MmJihiW2FdPVEoYykpfSk7cmV0dXJuIGZ1bmN0aW9uKGEsYyxmLGcpe3ZhciBqPWJbY118fGIuXztyZXR1cm4gaiE9PWs/aihhLGMsZixnKTphfX1pZihudWxsPT09YSlyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGF9O2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSlyZXR1cm4gZnVuY3Rpb24oYixjLGYsZyl7cmV0dXJuIGEoYixjLGYsZyl9O2lmKCJzdHJpbmciPT09dHlwZW9mIGEmJigtMSE9PWEuaW5kZXhPZigiLiIpfHwtMSE9PWEuaW5kZXhPZigiWyIpfHwtMSE9PWEuaW5kZXhPZigiKCIpKSl7dmFyIGM9ZnVuY3Rpb24oYSxiLGYpe3ZhciBnLGo7aWYoIiIhPT1mKXtqPUphKGYpOwpmb3IodmFyIGk9MCxuPWoubGVuZ3RoO2k8bjtpKyspe2Y9altpXS5tYXRjaChiYSk7Zz1qW2ldLm1hdGNoKFUpO2lmKGYpe2pbaV09altpXS5yZXBsYWNlKGJhLCIiKTsiIiE9PWpbaV0mJihhPWFbaltpXV0pO2c9W107ai5zcGxpY2UoMCxpKzEpO2o9ai5qb2luKCIuIik7aWYoaC5pc0FycmF5KGEpKXtpPTA7Zm9yKG49YS5sZW5ndGg7aTxuO2krKylnLnB1c2goYyhhW2ldLGIsaikpfWE9ZlswXS5zdWJzdHJpbmcoMSxmWzBdLmxlbmd0aC0xKTthPSIiPT09YT9nOmcuam9pbihhKTticmVha31lbHNlIGlmKGcpe2pbaV09altpXS5yZXBsYWNlKFUsIiIpO2E9YVtqW2ldXSgpO2NvbnRpbnVlfWlmKG51bGw9PT1hfHxhW2pbaV1dPT09aylyZXR1cm4gazthPWFbaltpXV19fXJldHVybiBhfTtyZXR1cm4gZnVuY3Rpb24oYixlKXtyZXR1cm4gYyhiLGUsYSl9fXJldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gYlthXX19ZnVuY3Rpb24gUihhKXtpZihoLmlzUGxhaW5PYmplY3QoYSkpcmV0dXJuIFIoYS5fKTsKaWYobnVsbD09PWEpcmV0dXJuIGZ1bmN0aW9uKCl7fTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpcmV0dXJuIGZ1bmN0aW9uKGIsZCxlKXthKGIsInNldCIsZCxlKX07aWYoInN0cmluZyI9PT10eXBlb2YgYSYmKC0xIT09YS5pbmRleE9mKCIuIil8fC0xIT09YS5pbmRleE9mKCJbIil8fC0xIT09YS5pbmRleE9mKCIoIikpKXt2YXIgYj1mdW5jdGlvbihhLGQsZSl7dmFyIGU9SmEoZSksZjtmPWVbZS5sZW5ndGgtMV07Zm9yKHZhciBnLGosaT0wLG49ZS5sZW5ndGgtMTtpPG47aSsrKXtnPWVbaV0ubWF0Y2goYmEpO2o9ZVtpXS5tYXRjaChVKTtpZihnKXtlW2ldPWVbaV0ucmVwbGFjZShiYSwiIik7YVtlW2ldXT1bXTtmPWUuc2xpY2UoKTtmLnNwbGljZSgwLGkrMSk7Zz1mLmpvaW4oIi4iKTtpZihoLmlzQXJyYXkoZCkpe2o9MDtmb3Iobj1kLmxlbmd0aDtqPG47aisrKWY9e30sYihmLGRbal0sZyksYVtlW2ldXS5wdXNoKGYpfWVsc2UgYVtlW2ldXT1kO3JldHVybn1qJiYoZVtpXT1lW2ldLnJlcGxhY2UoVSwKIiIpLGE9YVtlW2ldXShkKSk7aWYobnVsbD09PWFbZVtpXV18fGFbZVtpXV09PT1rKWFbZVtpXV09e307YT1hW2VbaV1dfWlmKGYubWF0Y2goVSkpYVtmLnJlcGxhY2UoVSwiIildKGQpO2Vsc2UgYVtmLnJlcGxhY2UoYmEsIiIpXT1kfTtyZXR1cm4gZnVuY3Rpb24oYyxkKXtyZXR1cm4gYihjLGQsYSl9fXJldHVybiBmdW5jdGlvbihiLGQpe2JbYV09ZH19ZnVuY3Rpb24gS2EoYSl7cmV0dXJuIEcoYS5hb0RhdGEsIl9hRGF0YSIpfWZ1bmN0aW9uIG5hKGEpe2EuYW9EYXRhLmxlbmd0aD0wO2EuYWlEaXNwbGF5TWFzdGVyLmxlbmd0aD0wO2EuYWlEaXNwbGF5Lmxlbmd0aD0wO2EuYUlkcz17fX1mdW5jdGlvbiBvYShhLGIsYyl7Zm9yKHZhciBkPS0xLGU9MCxmPWEubGVuZ3RoO2U8ZjtlKyspYVtlXT09Yj9kPWU6YVtlXT5iJiZhW2VdLS07IC0xIT1kJiZjPT09ayYmYS5zcGxpY2UoZCwxKX1mdW5jdGlvbiBjYShhLGIsYyxkKXt2YXIgZT1hLmFvRGF0YVtiXSxmLGc9ZnVuY3Rpb24oYyxkKXtmb3IoO2MuY2hpbGROb2Rlcy5sZW5ndGg7KWMucmVtb3ZlQ2hpbGQoYy5maXJzdENoaWxkKTsKYy5pbm5lckhUTUw9QihhLGIsZCwiZGlzcGxheSIpfTtpZigiZG9tIj09PWN8fCghY3x8ImF1dG8iPT09YykmJiJkb20iPT09ZS5zcmMpZS5fYURhdGE9SWEoYSxlLGQsZD09PWs/azplLl9hRGF0YSkuZGF0YTtlbHNle3ZhciBqPWUuYW5DZWxscztpZihqKWlmKGQhPT1rKWcoaltkXSxkKTtlbHNle2M9MDtmb3IoZj1qLmxlbmd0aDtjPGY7YysrKWcoaltjXSxjKX19ZS5fYVNvcnREYXRhPW51bGw7ZS5fYUZpbHRlckRhdGE9bnVsbDtnPWEuYW9Db2x1bW5zO2lmKGQhPT1rKWdbZF0uc1R5cGU9bnVsbDtlbHNle2M9MDtmb3IoZj1nLmxlbmd0aDtjPGY7YysrKWdbY10uc1R5cGU9bnVsbDtMYShhLGUpfX1mdW5jdGlvbiBJYShhLGIsYyxkKXt2YXIgZT1bXSxmPWIuZmlyc3RDaGlsZCxnLGosaT0wLG4sbD1hLmFvQ29sdW1ucyxxPWEuX3Jvd1JlYWRPYmplY3QsZD1kIT09az9kOnE/e306W10sdD1mdW5jdGlvbihhLGIpe2lmKCJzdHJpbmciPT09dHlwZW9mIGEpe3ZhciBjPWEuaW5kZXhPZigiQCIpOwotMSE9PWMmJihjPWEuc3Vic3RyaW5nKGMrMSksUihhKShkLGIuZ2V0QXR0cmlidXRlKGMpKSl9fSxTPWZ1bmN0aW9uKGEpe2lmKGM9PT1rfHxjPT09aSlqPWxbaV0sbj1oLnRyaW0oYS5pbm5lckhUTUwpLGomJmouX2JBdHRyU3JjPyhSKGoubURhdGEuXykoZCxuKSx0KGoubURhdGEuc29ydCxhKSx0KGoubURhdGEudHlwZSxhKSx0KGoubURhdGEuZmlsdGVyLGEpKTpxPyhqLl9zZXR0ZXJ8fChqLl9zZXR0ZXI9UihqLm1EYXRhKSksai5fc2V0dGVyKGQsbikpOmRbaV09bjtpKyt9O2lmKGYpZm9yKDtmOyl7Zz1mLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk7aWYoIlREIj09Z3x8IlRIIj09ZylTKGYpLGUucHVzaChmKTtmPWYubmV4dFNpYmxpbmd9ZWxzZXtlPWIuYW5DZWxscztmPTA7Zm9yKGc9ZS5sZW5ndGg7ZjxnO2YrKylTKGVbZl0pfWlmKGI9Yi5maXJzdENoaWxkP2I6Yi5uVHIpKGI9Yi5nZXRBdHRyaWJ1dGUoImlkIikpJiZSKGEucm93SWQpKGQsYik7cmV0dXJue2RhdGE6ZCxjZWxsczplfX0KZnVuY3Rpb24gSGEoYSxiLGMsZCl7dmFyIGU9YS5hb0RhdGFbYl0sZj1lLl9hRGF0YSxnPVtdLGosaSxuLGwscTtpZihudWxsPT09ZS5uVHIpe2o9Y3x8SS5jcmVhdGVFbGVtZW50KCJ0ciIpO2UublRyPWo7ZS5hbkNlbGxzPWc7ai5fRFRfUm93SW5kZXg9YjtMYShhLGUpO2w9MDtmb3IocT1hLmFvQ29sdW1ucy5sZW5ndGg7bDxxO2wrKyl7bj1hLmFvQ29sdW1uc1tsXTtpPWM/ZFtsXTpJLmNyZWF0ZUVsZW1lbnQobi5zQ2VsbFR5cGUpO2kuX0RUX0NlbGxJbmRleD17cm93OmIsY29sdW1uOmx9O2cucHVzaChpKTtpZigoIWN8fG4ubVJlbmRlcnx8bi5tRGF0YSE9PWwpJiYoIWguaXNQbGFpbk9iamVjdChuLm1EYXRhKXx8bi5tRGF0YS5fIT09bCsiLmRpc3BsYXkiKSlpLmlubmVySFRNTD1CKGEsYixsLCJkaXNwbGF5Iik7bi5zQ2xhc3MmJihpLmNsYXNzTmFtZSs9IiAiK24uc0NsYXNzKTtuLmJWaXNpYmxlJiYhYz9qLmFwcGVuZENoaWxkKGkpOiFuLmJWaXNpYmxlJiZjJiZpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaSk7Cm4uZm5DcmVhdGVkQ2VsbCYmbi5mbkNyZWF0ZWRDZWxsLmNhbGwoYS5vSW5zdGFuY2UsaSxCKGEsYixsKSxmLGIsbCl9dShhLCJhb1Jvd0NyZWF0ZWRDYWxsYmFjayIsbnVsbCxbaixmLGJdKX1lLm5Uci5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKX1mdW5jdGlvbiBMYShhLGIpe3ZhciBjPWIublRyLGQ9Yi5fYURhdGE7aWYoYyl7dmFyIGU9YS5yb3dJZEZuKGQpO2UmJihjLmlkPWUpO2QuRFRfUm93Q2xhc3MmJihlPWQuRFRfUm93Q2xhc3Muc3BsaXQoIiAiKSxiLl9fcm93Yz1iLl9fcm93Yz9wYShiLl9fcm93Yy5jb25jYXQoZSkpOmUsaChjKS5yZW1vdmVDbGFzcyhiLl9fcm93Yy5qb2luKCIgIikpLmFkZENsYXNzKGQuRFRfUm93Q2xhc3MpKTtkLkRUX1Jvd0F0dHImJmgoYykuYXR0cihkLkRUX1Jvd0F0dHIpO2QuRFRfUm93RGF0YSYmaChjKS5kYXRhKGQuRFRfUm93RGF0YSl9fWZ1bmN0aW9uIGtiKGEpe3ZhciBiLGMsZCxlLGYsZz1hLm5USGVhZCxqPWEublRGb290LGk9MD09PQpoKCJ0aCwgdGQiLGcpLmxlbmd0aCxuPWEub0NsYXNzZXMsbD1hLmFvQ29sdW1ucztpJiYoZT1oKCI8dHIvPiIpLmFwcGVuZFRvKGcpKTtiPTA7Zm9yKGM9bC5sZW5ndGg7YjxjO2IrKylmPWxbYl0sZD1oKGYublRoKS5hZGRDbGFzcyhmLnNDbGFzcyksaSYmZC5hcHBlbmRUbyhlKSxhLm9GZWF0dXJlcy5iU29ydCYmKGQuYWRkQ2xhc3MoZi5zU29ydGluZ0NsYXNzKSwhMSE9PWYuYlNvcnRhYmxlJiYoZC5hdHRyKCJ0YWJpbmRleCIsYS5pVGFiSW5kZXgpLmF0dHIoImFyaWEtY29udHJvbHMiLGEuc1RhYmxlSWQpLE1hKGEsZi5uVGgsYikpKSxmLnNUaXRsZSE9ZFswXS5pbm5lckhUTUwmJmQuaHRtbChmLnNUaXRsZSksTmEoYSwiaGVhZGVyIikoYSxkLGYsbik7aSYmZGEoYS5hb0hlYWRlcixnKTtoKGcpLmZpbmQoIj50ciIpLmF0dHIoInJvbGUiLCJyb3ciKTtoKGcpLmZpbmQoIj50cj50aCwgPnRyPnRkIikuYWRkQ2xhc3Mobi5zSGVhZGVyVEgpO2goaikuZmluZCgiPnRyPnRoLCA+dHI+dGQiKS5hZGRDbGFzcyhuLnNGb290ZXJUSCk7CmlmKG51bGwhPT1qKXthPWEuYW9Gb290ZXJbMF07Yj0wO2ZvcihjPWEubGVuZ3RoO2I8YztiKyspZj1sW2JdLGYublRmPWFbYl0uY2VsbCxmLnNDbGFzcyYmaChmLm5UZikuYWRkQ2xhc3MoZi5zQ2xhc3MpfX1mdW5jdGlvbiBlYShhLGIsYyl7dmFyIGQsZSxmLGc9W10saj1bXSxpPWEuYW9Db2x1bW5zLmxlbmd0aCxuO2lmKGIpe2M9PT1rJiYoYz0hMSk7ZD0wO2ZvcihlPWIubGVuZ3RoO2Q8ZTtkKyspe2dbZF09YltkXS5zbGljZSgpO2dbZF0ublRyPWJbZF0ublRyO2ZvcihmPWktMTswPD1mO2YtLSkhYS5hb0NvbHVtbnNbZl0uYlZpc2libGUmJiFjJiZnW2RdLnNwbGljZShmLDEpO2oucHVzaChbXSl9ZD0wO2ZvcihlPWcubGVuZ3RoO2Q8ZTtkKyspe2lmKGE9Z1tkXS5uVHIpZm9yKDtmPWEuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChmKTtmPTA7Zm9yKGI9Z1tkXS5sZW5ndGg7ZjxiO2YrKylpZihuPWk9MSxqW2RdW2ZdPT09ayl7YS5hcHBlbmRDaGlsZChnW2RdW2ZdLmNlbGwpOwpmb3IoaltkXVtmXT0xO2dbZCtpXSE9PWsmJmdbZF1bZl0uY2VsbD09Z1tkK2ldW2ZdLmNlbGw7KWpbZCtpXVtmXT0xLGkrKztmb3IoO2dbZF1bZituXSE9PWsmJmdbZF1bZl0uY2VsbD09Z1tkXVtmK25dLmNlbGw7KXtmb3IoYz0wO2M8aTtjKyspaltkK2NdW2Yrbl09MTtuKyt9aChnW2RdW2ZdLmNlbGwpLmF0dHIoInJvd3NwYW4iLGkpLmF0dHIoImNvbHNwYW4iLG4pfX19fWZ1bmN0aW9uIE8oYSl7dmFyIGI9dShhLCJhb1ByZURyYXdDYWxsYmFjayIsInByZURyYXciLFthXSk7aWYoLTEhPT1oLmluQXJyYXkoITEsYikpQyhhLCExKTtlbHNle3ZhciBiPVtdLGM9MCxkPWEuYXNTdHJpcGVDbGFzc2VzLGU9ZC5sZW5ndGgsZj1hLm9MYW5ndWFnZSxnPWEuaUluaXREaXNwbGF5U3RhcnQsaj0ic3NwIj09eShhKSxpPWEuYWlEaXNwbGF5O2EuYkRyYXdpbmc9ITA7ZyE9PWsmJi0xIT09ZyYmKGEuX2lEaXNwbGF5U3RhcnQ9aj9nOmc+PWEuZm5SZWNvcmRzRGlzcGxheSgpPzA6ZyxhLmlJbml0RGlzcGxheVN0YXJ0PQotMSk7dmFyIGc9YS5faURpc3BsYXlTdGFydCxuPWEuZm5EaXNwbGF5RW5kKCk7aWYoYS5iRGVmZXJMb2FkaW5nKWEuYkRlZmVyTG9hZGluZz0hMSxhLmlEcmF3KyssQyhhLCExKTtlbHNlIGlmKGope2lmKCFhLmJEZXN0cm95aW5nJiYhbGIoYSkpcmV0dXJufWVsc2UgYS5pRHJhdysrO2lmKDAhPT1pLmxlbmd0aCl7Zj1qP2EuYW9EYXRhLmxlbmd0aDpuO2ZvcihqPWo/MDpnO2o8ZjtqKyspe3ZhciBsPWlbal0scT1hLmFvRGF0YVtsXTtudWxsPT09cS5uVHImJkhhKGEsbCk7bD1xLm5UcjtpZigwIT09ZSl7dmFyIHQ9ZFtjJWVdO3EuX3NSb3dTdHJpcGUhPXQmJihoKGwpLnJlbW92ZUNsYXNzKHEuX3NSb3dTdHJpcGUpLmFkZENsYXNzKHQpLHEuX3NSb3dTdHJpcGU9dCl9dShhLCJhb1Jvd0NhbGxiYWNrIixudWxsLFtsLHEuX2FEYXRhLGMsal0pO2IucHVzaChsKTtjKyt9fWVsc2UgYz1mLnNaZXJvUmVjb3JkcywxPT1hLmlEcmF3JiYiYWpheCI9PXkoYSk/Yz1mLnNMb2FkaW5nUmVjb3JkczoKZi5zRW1wdHlUYWJsZSYmMD09PWEuZm5SZWNvcmRzVG90YWwoKSYmKGM9Zi5zRW1wdHlUYWJsZSksYlswXT1oKCI8dHIvPiIseyJjbGFzcyI6ZT9kWzBdOiIifSkuYXBwZW5kKGgoIjx0ZCAvPiIse3ZhbGlnbjoidG9wIixjb2xTcGFuOmFhKGEpLCJjbGFzcyI6YS5vQ2xhc3Nlcy5zUm93RW1wdHl9KS5odG1sKGMpKVswXTt1KGEsImFvSGVhZGVyQ2FsbGJhY2siLCJoZWFkZXIiLFtoKGEublRIZWFkKS5jaGlsZHJlbigidHIiKVswXSxLYShhKSxnLG4saV0pO3UoYSwiYW9Gb290ZXJDYWxsYmFjayIsImZvb3RlciIsW2goYS5uVEZvb3QpLmNoaWxkcmVuKCJ0ciIpWzBdLEthKGEpLGcsbixpXSk7ZD1oKGEublRCb2R5KTtkLmNoaWxkcmVuKCkuZGV0YWNoKCk7ZC5hcHBlbmQoaChiKSk7dShhLCJhb0RyYXdDYWxsYmFjayIsImRyYXciLFthXSk7YS5iU29ydGVkPSExO2EuYkZpbHRlcmVkPSExO2EuYkRyYXdpbmc9ITF9fWZ1bmN0aW9uIFQoYSxiKXt2YXIgYz1hLm9GZWF0dXJlcyxkPWMuYkZpbHRlcjsKYy5iU29ydCYmbWIoYSk7ZD9mYShhLGEub1ByZXZpb3VzU2VhcmNoKTphLmFpRGlzcGxheT1hLmFpRGlzcGxheU1hc3Rlci5zbGljZSgpOyEwIT09YiYmKGEuX2lEaXNwbGF5U3RhcnQ9MCk7YS5fZHJhd0hvbGQ9YjtPKGEpO2EuX2RyYXdIb2xkPSExfWZ1bmN0aW9uIG5iKGEpe3ZhciBiPWEub0NsYXNzZXMsYz1oKGEublRhYmxlKSxjPWgoIjxkaXYvPiIpLmluc2VydEJlZm9yZShjKSxkPWEub0ZlYXR1cmVzLGU9aCgiPGRpdi8+Iix7aWQ6YS5zVGFibGVJZCsiX3dyYXBwZXIiLCJjbGFzcyI6Yi5zV3JhcHBlcisoYS5uVEZvb3Q/IiI6IiAiK2Iuc05vRm9vdGVyKX0pO2EubkhvbGRpbmc9Y1swXTthLm5UYWJsZVdyYXBwZXI9ZVswXTthLm5UYWJsZVJlaW5zZXJ0QmVmb3JlPWEublRhYmxlLm5leHRTaWJsaW5nO2Zvcih2YXIgZj1hLnNEb20uc3BsaXQoIiIpLGcsaixpLG4sbCxxLHQ9MDt0PGYubGVuZ3RoO3QrKyl7Zz1udWxsO2o9Zlt0XTtpZigiPCI9PWope2k9aCgiPGRpdi8+IilbMF07Cm49Zlt0KzFdO2lmKCInIj09bnx8JyInPT1uKXtsPSIiO2ZvcihxPTI7Zlt0K3FdIT1uOylsKz1mW3QrcV0scSsrOyJIIj09bD9sPWIuc0pVSUhlYWRlcjoiRiI9PWwmJihsPWIuc0pVSUZvb3Rlcik7LTEhPWwuaW5kZXhPZigiLiIpPyhuPWwuc3BsaXQoIi4iKSxpLmlkPW5bMF0uc3Vic3RyKDEsblswXS5sZW5ndGgtMSksaS5jbGFzc05hbWU9blsxXSk6IiMiPT1sLmNoYXJBdCgwKT9pLmlkPWwuc3Vic3RyKDEsbC5sZW5ndGgtMSk6aS5jbGFzc05hbWU9bDt0Kz1xfWUuYXBwZW5kKGkpO2U9aChpKX1lbHNlIGlmKCI+Ij09aillPWUucGFyZW50KCk7ZWxzZSBpZigibCI9PWomJmQuYlBhZ2luYXRlJiZkLmJMZW5ndGhDaGFuZ2UpZz1vYihhKTtlbHNlIGlmKCJmIj09aiYmZC5iRmlsdGVyKWc9cGIoYSk7ZWxzZSBpZigiciI9PWomJmQuYlByb2Nlc3NpbmcpZz1xYihhKTtlbHNlIGlmKCJ0Ij09ailnPXJiKGEpO2Vsc2UgaWYoImkiPT1qJiZkLmJJbmZvKWc9c2IoYSk7ZWxzZSBpZigicCI9PQpqJiZkLmJQYWdpbmF0ZSlnPXRiKGEpO2Vsc2UgaWYoMCE9PW0uZXh0LmZlYXR1cmUubGVuZ3RoKXtpPW0uZXh0LmZlYXR1cmU7cT0wO2ZvcihuPWkubGVuZ3RoO3E8bjtxKyspaWYoaj09aVtxXS5jRmVhdHVyZSl7Zz1pW3FdLmZuSW5pdChhKTticmVha319ZyYmKGk9YS5hYW5GZWF0dXJlcyxpW2pdfHwoaVtqXT1bXSksaVtqXS5wdXNoKGcpLGUuYXBwZW5kKGcpKX1jLnJlcGxhY2VXaXRoKGUpO2EubkhvbGRpbmc9bnVsbH1mdW5jdGlvbiBkYShhLGIpe3ZhciBjPWgoYikuY2hpbGRyZW4oInRyIiksZCxlLGYsZyxqLGksbixsLHEsdDthLnNwbGljZSgwLGEubGVuZ3RoKTtmPTA7Zm9yKGk9Yy5sZW5ndGg7ZjxpO2YrKylhLnB1c2goW10pO2Y9MDtmb3IoaT1jLmxlbmd0aDtmPGk7ZisrKXtkPWNbZl07Zm9yKGU9ZC5maXJzdENoaWxkO2U7KXtpZigiVEQiPT1lLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCl8fCJUSCI9PWUubm9kZU5hbWUudG9VcHBlckNhc2UoKSl7bD0xKmUuZ2V0QXR0cmlidXRlKCJjb2xzcGFuIik7CnE9MSplLmdldEF0dHJpYnV0ZSgicm93c3BhbiIpO2w9IWx8fDA9PT1sfHwxPT09bD8xOmw7cT0hcXx8MD09PXF8fDE9PT1xPzE6cTtnPTA7Zm9yKGo9YVtmXTtqW2ddOylnKys7bj1nO3Q9MT09PWw/ITA6ITE7Zm9yKGo9MDtqPGw7aisrKWZvcihnPTA7ZzxxO2crKylhW2YrZ11bbitqXT17Y2VsbDplLHVuaXF1ZTp0fSxhW2YrZ10ublRyPWR9ZT1lLm5leHRTaWJsaW5nfX19ZnVuY3Rpb24gcWEoYSxiLGMpe3ZhciBkPVtdO2N8fChjPWEuYW9IZWFkZXIsYiYmKGM9W10sZGEoYyxiKSkpO2Zvcih2YXIgYj0wLGU9Yy5sZW5ndGg7YjxlO2IrKylmb3IodmFyIGY9MCxnPWNbYl0ubGVuZ3RoO2Y8ZztmKyspaWYoY1tiXVtmXS51bmlxdWUmJighZFtmXXx8IWEuYlNvcnRDZWxsc1RvcCkpZFtmXT1jW2JdW2ZdLmNlbGw7cmV0dXJuIGR9ZnVuY3Rpb24gcmEoYSxiLGMpe3UoYSwiYW9TZXJ2ZXJQYXJhbXMiLCJzZXJ2ZXJQYXJhbXMiLFtiXSk7aWYoYiYmaC5pc0FycmF5KGIpKXt2YXIgZD17fSwKZT0vKC4qPylcW1xdJC87aC5lYWNoKGIsZnVuY3Rpb24oYSxiKXt2YXIgYz1iLm5hbWUubWF0Y2goZSk7Yz8oYz1jWzBdLGRbY118fChkW2NdPVtdKSxkW2NdLnB1c2goYi52YWx1ZSkpOmRbYi5uYW1lXT1iLnZhbHVlfSk7Yj1kfXZhciBmLGc9YS5hamF4LGo9YS5vSW5zdGFuY2UsaT1mdW5jdGlvbihiKXt1KGEsbnVsbCwieGhyIixbYSxiLGEuanFYSFJdKTtjKGIpfTtpZihoLmlzUGxhaW5PYmplY3QoZykmJmcuZGF0YSl7Zj1nLmRhdGE7dmFyIG49aC5pc0Z1bmN0aW9uKGYpP2YoYixhKTpmLGI9aC5pc0Z1bmN0aW9uKGYpJiZuP246aC5leHRlbmQoITAsYixuKTtkZWxldGUgZy5kYXRhfW49e2RhdGE6YixzdWNjZXNzOmZ1bmN0aW9uKGIpe3ZhciBjPWIuZXJyb3J8fGIuc0Vycm9yO2MmJkwoYSwwLGMpO2EuanNvbj1iO2koYil9LGRhdGFUeXBlOiJqc29uIixjYWNoZTohMSx0eXBlOmEuc1NlcnZlck1ldGhvZCxlcnJvcjpmdW5jdGlvbihiLGMpe3ZhciBkPXUoYSxudWxsLCJ4aHIiLApbYSxudWxsLGEuanFYSFJdKTstMT09PWguaW5BcnJheSghMCxkKSYmKCJwYXJzZXJlcnJvciI9PWM/TChhLDAsIkludmFsaWQgSlNPTiByZXNwb25zZSIsMSk6ND09PWIucmVhZHlTdGF0ZSYmTChhLDAsIkFqYXggZXJyb3IiLDcpKTtDKGEsITEpfX07YS5vQWpheERhdGE9Yjt1KGEsbnVsbCwicHJlWGhyIixbYSxiXSk7YS5mblNlcnZlckRhdGE/YS5mblNlcnZlckRhdGEuY2FsbChqLGEuc0FqYXhTb3VyY2UsaC5tYXAoYixmdW5jdGlvbihhLGIpe3JldHVybntuYW1lOmIsdmFsdWU6YX19KSxpLGEpOmEuc0FqYXhTb3VyY2V8fCJzdHJpbmciPT09dHlwZW9mIGc/YS5qcVhIUj1oLmFqYXgoaC5leHRlbmQobix7dXJsOmd8fGEuc0FqYXhTb3VyY2V9KSk6aC5pc0Z1bmN0aW9uKGcpP2EuanFYSFI9Zy5jYWxsKGosYixpLGEpOihhLmpxWEhSPWguYWpheChoLmV4dGVuZChuLGcpKSxnLmRhdGE9Zil9ZnVuY3Rpb24gbGIoYSl7cmV0dXJuIGEuYkFqYXhEYXRhR2V0PyhhLmlEcmF3KyssQyhhLAohMCkscmEoYSx1YihhKSxmdW5jdGlvbihiKXt2YihhLGIpfSksITEpOiEwfWZ1bmN0aW9uIHViKGEpe3ZhciBiPWEuYW9Db2x1bW5zLGM9Yi5sZW5ndGgsZD1hLm9GZWF0dXJlcyxlPWEub1ByZXZpb3VzU2VhcmNoLGY9YS5hb1ByZVNlYXJjaENvbHMsZyxqPVtdLGksbixsLHE9VihhKTtnPWEuX2lEaXNwbGF5U3RhcnQ7aT0hMSE9PWQuYlBhZ2luYXRlP2EuX2lEaXNwbGF5TGVuZ3RoOi0xO3ZhciBrPWZ1bmN0aW9uKGEsYil7ai5wdXNoKHtuYW1lOmEsdmFsdWU6Yn0pfTtrKCJzRWNobyIsYS5pRHJhdyk7aygiaUNvbHVtbnMiLGMpO2soInNDb2x1bW5zIixHKGIsInNOYW1lIikuam9pbigiLCIpKTtrKCJpRGlzcGxheVN0YXJ0IixnKTtrKCJpRGlzcGxheUxlbmd0aCIsaSk7dmFyIFM9e2RyYXc6YS5pRHJhdyxjb2x1bW5zOltdLG9yZGVyOltdLHN0YXJ0OmcsbGVuZ3RoOmksc2VhcmNoOnt2YWx1ZTplLnNTZWFyY2gscmVnZXg6ZS5iUmVnZXh9fTtmb3IoZz0wO2c8YztnKyspbj1iW2ddLApsPWZbZ10saT0iZnVuY3Rpb24iPT10eXBlb2Ygbi5tRGF0YT8iZnVuY3Rpb24iOm4ubURhdGEsUy5jb2x1bW5zLnB1c2goe2RhdGE6aSxuYW1lOm4uc05hbWUsc2VhcmNoYWJsZTpuLmJTZWFyY2hhYmxlLG9yZGVyYWJsZTpuLmJTb3J0YWJsZSxzZWFyY2g6e3ZhbHVlOmwuc1NlYXJjaCxyZWdleDpsLmJSZWdleH19KSxrKCJtRGF0YVByb3BfIitnLGkpLGQuYkZpbHRlciYmKGsoInNTZWFyY2hfIitnLGwuc1NlYXJjaCksaygiYlJlZ2V4XyIrZyxsLmJSZWdleCksaygiYlNlYXJjaGFibGVfIitnLG4uYlNlYXJjaGFibGUpKSxkLmJTb3J0JiZrKCJiU29ydGFibGVfIitnLG4uYlNvcnRhYmxlKTtkLmJGaWx0ZXImJihrKCJzU2VhcmNoIixlLnNTZWFyY2gpLGsoImJSZWdleCIsZS5iUmVnZXgpKTtkLmJTb3J0JiYoaC5lYWNoKHEsZnVuY3Rpb24oYSxiKXtTLm9yZGVyLnB1c2goe2NvbHVtbjpiLmNvbCxkaXI6Yi5kaXJ9KTtrKCJpU29ydENvbF8iK2EsYi5jb2wpO2soInNTb3J0RGlyXyIrCmEsYi5kaXIpfSksaygiaVNvcnRpbmdDb2xzIixxLmxlbmd0aCkpO2I9bS5leHQubGVnYWN5LmFqYXg7cmV0dXJuIG51bGw9PT1iP2Euc0FqYXhTb3VyY2U/ajpTOmI/ajpTfWZ1bmN0aW9uIHZiKGEsYil7dmFyIGM9c2EoYSxiKSxkPWIuc0VjaG8hPT1rP2Iuc0VjaG86Yi5kcmF3LGU9Yi5pVG90YWxSZWNvcmRzIT09az9iLmlUb3RhbFJlY29yZHM6Yi5yZWNvcmRzVG90YWwsZj1iLmlUb3RhbERpc3BsYXlSZWNvcmRzIT09az9iLmlUb3RhbERpc3BsYXlSZWNvcmRzOmIucmVjb3Jkc0ZpbHRlcmVkO2lmKGQpe2lmKDEqZDxhLmlEcmF3KXJldHVybjthLmlEcmF3PTEqZH1uYShhKTthLl9pUmVjb3Jkc1RvdGFsPXBhcnNlSW50KGUsMTApO2EuX2lSZWNvcmRzRGlzcGxheT1wYXJzZUludChmLDEwKTtkPTA7Zm9yKGU9Yy5sZW5ndGg7ZDxlO2QrKylOKGEsY1tkXSk7YS5haURpc3BsYXk9YS5haURpc3BsYXlNYXN0ZXIuc2xpY2UoKTthLmJBamF4RGF0YUdldD0hMTtPKGEpO2EuX2JJbml0Q29tcGxldGV8fAp0YShhLGIpO2EuYkFqYXhEYXRhR2V0PSEwO0MoYSwhMSl9ZnVuY3Rpb24gc2EoYSxiKXt2YXIgYz1oLmlzUGxhaW5PYmplY3QoYS5hamF4KSYmYS5hamF4LmRhdGFTcmMhPT1rP2EuYWpheC5kYXRhU3JjOmEuc0FqYXhEYXRhUHJvcDtyZXR1cm4iZGF0YSI9PT1jP2IuYWFEYXRhfHxiW2NdOiIiIT09Yz9RKGMpKGIpOmJ9ZnVuY3Rpb24gcGIoYSl7dmFyIGI9YS5vQ2xhc3NlcyxjPWEuc1RhYmxlSWQsZD1hLm9MYW5ndWFnZSxlPWEub1ByZXZpb3VzU2VhcmNoLGY9YS5hYW5GZWF0dXJlcyxnPSc8aW5wdXQgdHlwZT0ic2VhcmNoIiBjbGFzcz0iJytiLnNGaWx0ZXJJbnB1dCsnIi8+JyxqPWQuc1NlYXJjaCxqPWoubWF0Y2goL19JTlBVVF8vKT9qLnJlcGxhY2UoIl9JTlBVVF8iLGcpOmorZyxiPWgoIjxkaXYvPiIse2lkOiFmLmY/YysiX2ZpbHRlciI6bnVsbCwiY2xhc3MiOmIuc0ZpbHRlcn0pLmFwcGVuZChoKCI8bGFiZWwvPiIpLmFwcGVuZChqKSksZj1mdW5jdGlvbigpe3ZhciBiPSF0aGlzLnZhbHVlPwoiIjp0aGlzLnZhbHVlO2IhPWUuc1NlYXJjaCYmKGZhKGEse3NTZWFyY2g6YixiUmVnZXg6ZS5iUmVnZXgsYlNtYXJ0OmUuYlNtYXJ0LGJDYXNlSW5zZW5zaXRpdmU6ZS5iQ2FzZUluc2Vuc2l0aXZlfSksYS5faURpc3BsYXlTdGFydD0wLE8oYSkpfSxnPW51bGwhPT1hLnNlYXJjaERlbGF5P2Euc2VhcmNoRGVsYXk6InNzcCI9PT15KGEpPzQwMDowLGk9aCgiaW5wdXQiLGIpLnZhbChlLnNTZWFyY2gpLmF0dHIoInBsYWNlaG9sZGVyIixkLnNTZWFyY2hQbGFjZWhvbGRlcikuYmluZCgia2V5dXAuRFQgc2VhcmNoLkRUIGlucHV0LkRUIHBhc3RlLkRUIGN1dC5EVCIsZz9PYShmLGcpOmYpLmJpbmQoImtleXByZXNzLkRUIixmdW5jdGlvbihhKXtpZigxMz09YS5rZXlDb2RlKXJldHVybiExfSkuYXR0cigiYXJpYS1jb250cm9scyIsYyk7aChhLm5UYWJsZSkub24oInNlYXJjaC5kdC5EVCIsZnVuY3Rpb24oYixjKXtpZihhPT09Yyl0cnl7aVswXSE9PUkuYWN0aXZlRWxlbWVudCYmaS52YWwoZS5zU2VhcmNoKX1jYXRjaChkKXt9fSk7CnJldHVybiBiWzBdfWZ1bmN0aW9uIGZhKGEsYixjKXt2YXIgZD1hLm9QcmV2aW91c1NlYXJjaCxlPWEuYW9QcmVTZWFyY2hDb2xzLGY9ZnVuY3Rpb24oYSl7ZC5zU2VhcmNoPWEuc1NlYXJjaDtkLmJSZWdleD1hLmJSZWdleDtkLmJTbWFydD1hLmJTbWFydDtkLmJDYXNlSW5zZW5zaXRpdmU9YS5iQ2FzZUluc2Vuc2l0aXZlfTtHYShhKTtpZigic3NwIiE9eShhKSl7d2IoYSxiLnNTZWFyY2gsYyxiLmJFc2NhcGVSZWdleCE9PWs/IWIuYkVzY2FwZVJlZ2V4OmIuYlJlZ2V4LGIuYlNtYXJ0LGIuYkNhc2VJbnNlbnNpdGl2ZSk7ZihiKTtmb3IoYj0wO2I8ZS5sZW5ndGg7YisrKXhiKGEsZVtiXS5zU2VhcmNoLGIsZVtiXS5iRXNjYXBlUmVnZXghPT1rPyFlW2JdLmJFc2NhcGVSZWdleDplW2JdLmJSZWdleCxlW2JdLmJTbWFydCxlW2JdLmJDYXNlSW5zZW5zaXRpdmUpO3liKGEpfWVsc2UgZihiKTthLmJGaWx0ZXJlZD0hMDt1KGEsbnVsbCwic2VhcmNoIixbYV0pfWZ1bmN0aW9uIHliKGEpe2Zvcih2YXIgYj0KbS5leHQuc2VhcmNoLGM9YS5haURpc3BsYXksZCxlLGY9MCxnPWIubGVuZ3RoO2Y8ZztmKyspe2Zvcih2YXIgaj1bXSxpPTAsbj1jLmxlbmd0aDtpPG47aSsrKWU9Y1tpXSxkPWEuYW9EYXRhW2VdLGJbZl0oYSxkLl9hRmlsdGVyRGF0YSxlLGQuX2FEYXRhLGkpJiZqLnB1c2goZSk7Yy5sZW5ndGg9MDtoLm1lcmdlKGMsail9fWZ1bmN0aW9uIHhiKGEsYixjLGQsZSxmKXtpZigiIiE9PWIpZm9yKHZhciBnPWEuYWlEaXNwbGF5LGQ9UGEoYixkLGUsZiksZT1nLmxlbmd0aC0xOzA8PWU7ZS0tKWI9YS5hb0RhdGFbZ1tlXV0uX2FGaWx0ZXJEYXRhW2NdLGQudGVzdChiKXx8Zy5zcGxpY2UoZSwxKX1mdW5jdGlvbiB3YihhLGIsYyxkLGUsZil7dmFyIGQ9UGEoYixkLGUsZiksZT1hLm9QcmV2aW91c1NlYXJjaC5zU2VhcmNoLGY9YS5haURpc3BsYXlNYXN0ZXIsZzswIT09bS5leHQuc2VhcmNoLmxlbmd0aCYmKGM9ITApO2c9emIoYSk7aWYoMD49Yi5sZW5ndGgpYS5haURpc3BsYXk9Zi5zbGljZSgpOwplbHNle2lmKGd8fGN8fGUubGVuZ3RoPmIubGVuZ3RofHwwIT09Yi5pbmRleE9mKGUpfHxhLmJTb3J0ZWQpYS5haURpc3BsYXk9Zi5zbGljZSgpO2I9YS5haURpc3BsYXk7Zm9yKGM9Yi5sZW5ndGgtMTswPD1jO2MtLSlkLnRlc3QoYS5hb0RhdGFbYltjXV0uX3NGaWx0ZXJSb3cpfHxiLnNwbGljZShjLDEpfX1mdW5jdGlvbiBQYShhLGIsYyxkKXthPWI/YTpRYShhKTtjJiYoYT0iXig/PS4qPyIraC5tYXAoYS5tYXRjaCgvIlteIl0rInxbXiBdKy9nKXx8WyIiXSxmdW5jdGlvbihhKXtpZignIic9PT1hLmNoYXJBdCgwKSl2YXIgYj1hLm1hdGNoKC9eIiguKikiJC8pLGE9Yj9iWzFdOmE7cmV0dXJuIGEucmVwbGFjZSgnIicsIiIpfSkuam9pbigiKSg/PS4qPyIpKyIpLiokIik7cmV0dXJuIFJlZ0V4cChhLGQ/ImkiOiIiKX1mdW5jdGlvbiB6YihhKXt2YXIgYj1hLmFvQ29sdW1ucyxjLGQsZSxmLGcsaixpLGgsbD1tLmV4dC50eXBlLnNlYXJjaDtjPSExO2Q9MDtmb3IoZj1hLmFvRGF0YS5sZW5ndGg7ZDwKZjtkKyspaWYoaD1hLmFvRGF0YVtkXSwhaC5fYUZpbHRlckRhdGEpe2o9W107ZT0wO2ZvcihnPWIubGVuZ3RoO2U8ZztlKyspYz1iW2VdLGMuYlNlYXJjaGFibGU/KGk9QihhLGQsZSwiZmlsdGVyIiksbFtjLnNUeXBlXSYmKGk9bFtjLnNUeXBlXShpKSksbnVsbD09PWkmJihpPSIiKSwic3RyaW5nIiE9PXR5cGVvZiBpJiZpLnRvU3RyaW5nJiYoaT1pLnRvU3RyaW5nKCkpKTppPSIiLGkuaW5kZXhPZiYmLTEhPT1pLmluZGV4T2YoIiYiKSYmKHVhLmlubmVySFRNTD1pLGk9WmI/dWEudGV4dENvbnRlbnQ6dWEuaW5uZXJUZXh0KSxpLnJlcGxhY2UmJihpPWkucmVwbGFjZSgvW1xyXG5dL2csIiIpKSxqLnB1c2goaSk7aC5fYUZpbHRlckRhdGE9ajtoLl9zRmlsdGVyUm93PWouam9pbigiICAiKTtjPSEwfXJldHVybiBjfWZ1bmN0aW9uIEFiKGEpe3JldHVybntzZWFyY2g6YS5zU2VhcmNoLHNtYXJ0OmEuYlNtYXJ0LHJlZ2V4OmEuYlJlZ2V4LGNhc2VJbnNlbnNpdGl2ZTphLmJDYXNlSW5zZW5zaXRpdmV9fQpmdW5jdGlvbiBCYihhKXtyZXR1cm57c1NlYXJjaDphLnNlYXJjaCxiU21hcnQ6YS5zbWFydCxiUmVnZXg6YS5yZWdleCxiQ2FzZUluc2Vuc2l0aXZlOmEuY2FzZUluc2Vuc2l0aXZlfX1mdW5jdGlvbiBzYihhKXt2YXIgYj1hLnNUYWJsZUlkLGM9YS5hYW5GZWF0dXJlcy5pLGQ9aCgiPGRpdi8+Iix7ImNsYXNzIjphLm9DbGFzc2VzLnNJbmZvLGlkOiFjP2IrIl9pbmZvIjpudWxsfSk7Y3x8KGEuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46Q2Isc05hbWU6ImluZm9ybWF0aW9uIn0pLGQuYXR0cigicm9sZSIsInN0YXR1cyIpLmF0dHIoImFyaWEtbGl2ZSIsInBvbGl0ZSIpLGgoYS5uVGFibGUpLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLGIrIl9pbmZvIikpO3JldHVybiBkWzBdfWZ1bmN0aW9uIENiKGEpe3ZhciBiPWEuYWFuRmVhdHVyZXMuaTtpZigwIT09Yi5sZW5ndGgpe3ZhciBjPWEub0xhbmd1YWdlLGQ9YS5faURpc3BsYXlTdGFydCsxLGU9YS5mbkRpc3BsYXlFbmQoKSxmPWEuZm5SZWNvcmRzVG90YWwoKSwKZz1hLmZuUmVjb3Jkc0Rpc3BsYXkoKSxqPWc/Yy5zSW5mbzpjLnNJbmZvRW1wdHk7ZyE9PWYmJihqKz0iICIrYy5zSW5mb0ZpbHRlcmVkKTtqKz1jLnNJbmZvUG9zdEZpeDtqPURiKGEsaik7Yz1jLmZuSW5mb0NhbGxiYWNrO251bGwhPT1jJiYoaj1jLmNhbGwoYS5vSW5zdGFuY2UsYSxkLGUsZixnLGopKTtoKGIpLmh0bWwoail9fWZ1bmN0aW9uIERiKGEsYil7dmFyIGM9YS5mbkZvcm1hdE51bWJlcixkPWEuX2lEaXNwbGF5U3RhcnQrMSxlPWEuX2lEaXNwbGF5TGVuZ3RoLGY9YS5mblJlY29yZHNEaXNwbGF5KCksZz0tMT09PWU7cmV0dXJuIGIucmVwbGFjZSgvX1NUQVJUXy9nLGMuY2FsbChhLGQpKS5yZXBsYWNlKC9fRU5EXy9nLGMuY2FsbChhLGEuZm5EaXNwbGF5RW5kKCkpKS5yZXBsYWNlKC9fTUFYXy9nLGMuY2FsbChhLGEuZm5SZWNvcmRzVG90YWwoKSkpLnJlcGxhY2UoL19UT1RBTF8vZyxjLmNhbGwoYSxmKSkucmVwbGFjZSgvX1BBR0VfL2csYy5jYWxsKGEsZz8xOk1hdGguY2VpbChkLwplKSkpLnJlcGxhY2UoL19QQUdFU18vZyxjLmNhbGwoYSxnPzE6TWF0aC5jZWlsKGYvZSkpKX1mdW5jdGlvbiBnYShhKXt2YXIgYixjLGQ9YS5pSW5pdERpc3BsYXlTdGFydCxlPWEuYW9Db2x1bW5zLGY7Yz1hLm9GZWF0dXJlczt2YXIgZz1hLmJEZWZlckxvYWRpbmc7aWYoYS5iSW5pdGlhbGlzZWQpe25iKGEpO2tiKGEpO2VhKGEsYS5hb0hlYWRlcik7ZWEoYSxhLmFvRm9vdGVyKTtDKGEsITApO2MuYkF1dG9XaWR0aCYmRmEoYSk7Yj0wO2ZvcihjPWUubGVuZ3RoO2I8YztiKyspZj1lW2JdLGYuc1dpZHRoJiYoZi5uVGguc3R5bGUud2lkdGg9eChmLnNXaWR0aCkpO3UoYSxudWxsLCJwcmVJbml0IixbYV0pO1QoYSk7ZT15KGEpO2lmKCJzc3AiIT1lfHxnKSJhamF4Ij09ZT9yYShhLFtdLGZ1bmN0aW9uKGMpe3ZhciBmPXNhKGEsYyk7Zm9yKGI9MDtiPGYubGVuZ3RoO2IrKylOKGEsZltiXSk7YS5pSW5pdERpc3BsYXlTdGFydD1kO1QoYSk7QyhhLCExKTt0YShhLGMpfSxhKTooQyhhLCExKSwKdGEoYSkpfWVsc2Ugc2V0VGltZW91dChmdW5jdGlvbigpe2dhKGEpfSwyMDApfWZ1bmN0aW9uIHRhKGEsYil7YS5fYkluaXRDb21wbGV0ZT0hMDsoYnx8YS5vSW5pdC5hYURhdGEpJiZZKGEpO3UoYSxudWxsLCJwbHVnaW4taW5pdCIsW2EsYl0pO3UoYSwiYW9Jbml0Q29tcGxldGUiLCJpbml0IixbYSxiXSl9ZnVuY3Rpb24gUmEoYSxiKXt2YXIgYz1wYXJzZUludChiLDEwKTthLl9pRGlzcGxheUxlbmd0aD1jO1NhKGEpO3UoYSxudWxsLCJsZW5ndGgiLFthLGNdKX1mdW5jdGlvbiBvYihhKXtmb3IodmFyIGI9YS5vQ2xhc3NlcyxjPWEuc1RhYmxlSWQsZD1hLmFMZW5ndGhNZW51LGU9aC5pc0FycmF5KGRbMF0pLGY9ZT9kWzBdOmQsZD1lP2RbMV06ZCxlPWgoIjxzZWxlY3QvPiIse25hbWU6YysiX2xlbmd0aCIsImFyaWEtY29udHJvbHMiOmMsImNsYXNzIjpiLnNMZW5ndGhTZWxlY3R9KSxnPTAsaj1mLmxlbmd0aDtnPGo7ZysrKWVbMF1bZ109bmV3IE9wdGlvbihkW2ddLGZbZ10pO3ZhciBpPQpoKCI8ZGl2PjxsYWJlbC8+PC9kaXY+IikuYWRkQ2xhc3MoYi5zTGVuZ3RoKTthLmFhbkZlYXR1cmVzLmx8fChpWzBdLmlkPWMrIl9sZW5ndGgiKTtpLmNoaWxkcmVuKCkuYXBwZW5kKGEub0xhbmd1YWdlLnNMZW5ndGhNZW51LnJlcGxhY2UoIl9NRU5VXyIsZVswXS5vdXRlckhUTUwpKTtoKCJzZWxlY3QiLGkpLnZhbChhLl9pRGlzcGxheUxlbmd0aCkuYmluZCgiY2hhbmdlLkRUIixmdW5jdGlvbigpe1JhKGEsaCh0aGlzKS52YWwoKSk7TyhhKX0pO2goYS5uVGFibGUpLmJpbmQoImxlbmd0aC5kdC5EVCIsZnVuY3Rpb24oYixjLGQpe2E9PT1jJiZoKCJzZWxlY3QiLGkpLnZhbChkKX0pO3JldHVybiBpWzBdfWZ1bmN0aW9uIHRiKGEpe3ZhciBiPWEuc1BhZ2luYXRpb25UeXBlLGM9bS5leHQucGFnZXJbYl0sZD0iZnVuY3Rpb24iPT09dHlwZW9mIGMsZT1mdW5jdGlvbihhKXtPKGEpfSxiPWgoIjxkaXYvPiIpLmFkZENsYXNzKGEub0NsYXNzZXMuc1BhZ2luZytiKVswXSxmPWEuYWFuRmVhdHVyZXM7CmR8fGMuZm5Jbml0KGEsYixlKTtmLnB8fChiLmlkPWEuc1RhYmxlSWQrIl9wYWdpbmF0ZSIsYS5hb0RyYXdDYWxsYmFjay5wdXNoKHtmbjpmdW5jdGlvbihhKXtpZihkKXt2YXIgYj1hLl9pRGlzcGxheVN0YXJ0LGk9YS5faURpc3BsYXlMZW5ndGgsaD1hLmZuUmVjb3Jkc0Rpc3BsYXkoKSxsPS0xPT09aSxiPWw/MDpNYXRoLmNlaWwoYi9pKSxpPWw/MTpNYXRoLmNlaWwoaC9pKSxoPWMoYixpKSxrLGw9MDtmb3Ioaz1mLnAubGVuZ3RoO2w8aztsKyspTmEoYSwicGFnZUJ1dHRvbiIpKGEsZi5wW2xdLGwsaCxiLGkpfWVsc2UgYy5mblVwZGF0ZShhLGUpfSxzTmFtZToicGFnaW5hdGlvbiJ9KSk7cmV0dXJuIGJ9ZnVuY3Rpb24gVGEoYSxiLGMpe3ZhciBkPWEuX2lEaXNwbGF5U3RhcnQsZT1hLl9pRGlzcGxheUxlbmd0aCxmPWEuZm5SZWNvcmRzRGlzcGxheSgpOzA9PT1mfHwtMT09PWU/ZD0wOiJudW1iZXIiPT09dHlwZW9mIGI/KGQ9YiplLGQ+ZiYmKGQ9MCkpOiJmaXJzdCI9PWI/ZD0wOgoicHJldmlvdXMiPT1iPyhkPTA8PWU/ZC1lOjAsMD5kJiYoZD0wKSk6Im5leHQiPT1iP2QrZTxmJiYoZCs9ZSk6Imxhc3QiPT1iP2Q9TWF0aC5mbG9vcigoZi0xKS9lKSplOkwoYSwwLCJVbmtub3duIHBhZ2luZyBhY3Rpb246ICIrYiw1KTtiPWEuX2lEaXNwbGF5U3RhcnQhPT1kO2EuX2lEaXNwbGF5U3RhcnQ9ZDtiJiYodShhLG51bGwsInBhZ2UiLFthXSksYyYmTyhhKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gcWIoYSl7cmV0dXJuIGgoIjxkaXYvPiIse2lkOiFhLmFhbkZlYXR1cmVzLnI/YS5zVGFibGVJZCsiX3Byb2Nlc3NpbmciOm51bGwsImNsYXNzIjphLm9DbGFzc2VzLnNQcm9jZXNzaW5nfSkuaHRtbChhLm9MYW5ndWFnZS5zUHJvY2Vzc2luZykuaW5zZXJ0QmVmb3JlKGEublRhYmxlKVswXX1mdW5jdGlvbiBDKGEsYil7YS5vRmVhdHVyZXMuYlByb2Nlc3NpbmcmJmgoYS5hYW5GZWF0dXJlcy5yKS5jc3MoImRpc3BsYXkiLGI/ImJsb2NrIjoibm9uZSIpO3UoYSxudWxsLCJwcm9jZXNzaW5nIiwKW2EsYl0pfWZ1bmN0aW9uIHJiKGEpe3ZhciBiPWgoYS5uVGFibGUpO2IuYXR0cigicm9sZSIsImdyaWQiKTt2YXIgYz1hLm9TY3JvbGw7aWYoIiI9PT1jLnNYJiYiIj09PWMuc1kpcmV0dXJuIGEublRhYmxlO3ZhciBkPWMuc1gsZT1jLnNZLGY9YS5vQ2xhc3NlcyxnPWIuY2hpbGRyZW4oImNhcHRpb24iKSxqPWcubGVuZ3RoP2dbMF0uX2NhcHRpb25TaWRlOm51bGwsaT1oKGJbMF0uY2xvbmVOb2RlKCExKSksbj1oKGJbMF0uY2xvbmVOb2RlKCExKSksbD1iLmNoaWxkcmVuKCJ0Zm9vdCIpO2wubGVuZ3RofHwobD1udWxsKTtpPWgoIjxkaXYvPiIseyJjbGFzcyI6Zi5zU2Nyb2xsV3JhcHBlcn0pLmFwcGVuZChoKCI8ZGl2Lz4iLHsiY2xhc3MiOmYuc1Njcm9sbEhlYWR9KS5jc3Moe292ZXJmbG93OiJoaWRkZW4iLHBvc2l0aW9uOiJyZWxhdGl2ZSIsYm9yZGVyOjAsd2lkdGg6ZD8hZD9udWxsOngoZCk6IjEwMCUifSkuYXBwZW5kKGgoIjxkaXYvPiIseyJjbGFzcyI6Zi5zU2Nyb2xsSGVhZElubmVyfSkuY3NzKHsiYm94LXNpemluZyI6ImNvbnRlbnQtYm94IiwKd2lkdGg6Yy5zWElubmVyfHwiMTAwJSJ9KS5hcHBlbmQoaS5yZW1vdmVBdHRyKCJpZCIpLmNzcygibWFyZ2luLWxlZnQiLDApLmFwcGVuZCgidG9wIj09PWo/ZzpudWxsKS5hcHBlbmQoYi5jaGlsZHJlbigidGhlYWQiKSkpKSkuYXBwZW5kKGgoIjxkaXYvPiIseyJjbGFzcyI6Zi5zU2Nyb2xsQm9keX0pLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIixvdmVyZmxvdzoiYXV0byIsd2lkdGg6IWQ/bnVsbDp4KGQpfSkuYXBwZW5kKGIpKTtsJiZpLmFwcGVuZChoKCI8ZGl2Lz4iLHsiY2xhc3MiOmYuc1Njcm9sbEZvb3R9KS5jc3Moe292ZXJmbG93OiJoaWRkZW4iLGJvcmRlcjowLHdpZHRoOmQ/IWQ/bnVsbDp4KGQpOiIxMDAlIn0pLmFwcGVuZChoKCI8ZGl2Lz4iLHsiY2xhc3MiOmYuc1Njcm9sbEZvb3RJbm5lcn0pLmFwcGVuZChuLnJlbW92ZUF0dHIoImlkIikuY3NzKCJtYXJnaW4tbGVmdCIsMCkuYXBwZW5kKCJib3R0b20iPT09aj9nOm51bGwpLmFwcGVuZChiLmNoaWxkcmVuKCJ0Zm9vdCIpKSkpKTsKdmFyIGI9aS5jaGlsZHJlbigpLGs9YlswXSxmPWJbMV0sdD1sP2JbMl06bnVsbDtpZihkKWgoZikub24oInNjcm9sbC5EVCIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNjcm9sbExlZnQ7ay5zY3JvbGxMZWZ0PWE7bCYmKHQuc2Nyb2xsTGVmdD1hKX0pO2goZikuY3NzKGUmJmMuYkNvbGxhcHNlPyJtYXgtaGVpZ2h0IjoiaGVpZ2h0IixlKTthLm5TY3JvbGxIZWFkPWs7YS5uU2Nyb2xsQm9keT1mO2EublNjcm9sbEZvb3Q9dDthLmFvRHJhd0NhbGxiYWNrLnB1c2goe2ZuOmthLHNOYW1lOiJzY3JvbGxpbmcifSk7cmV0dXJuIGlbMF19ZnVuY3Rpb24ga2EoYSl7dmFyIGI9YS5vU2Nyb2xsLGM9Yi5zWCxkPWIuc1hJbm5lcixlPWIuc1ksYj1iLmlCYXJXaWR0aCxmPWgoYS5uU2Nyb2xsSGVhZCksZz1mWzBdLnN0eWxlLGo9Zi5jaGlsZHJlbigiZGl2IiksaT1qWzBdLnN0eWxlLG49ai5jaGlsZHJlbigidGFibGUiKSxqPWEublNjcm9sbEJvZHksbD1oKGopLHE9ai5zdHlsZSx0PWgoYS5uU2Nyb2xsRm9vdCkuY2hpbGRyZW4oImRpdiIpLAptPXQuY2hpbGRyZW4oInRhYmxlIiksbz1oKGEublRIZWFkKSxGPWgoYS5uVGFibGUpLHA9RlswXSxyPXAuc3R5bGUsdT1hLm5URm9vdD9oKGEublRGb290KTpudWxsLEViPWEub0Jyb3dzZXIsVWE9RWIuYlNjcm9sbE92ZXJzaXplLHM9RyhhLmFvQ29sdW1ucywiblRoIiksUCx2LHcseSx6PVtdLEE9W10sQj1bXSxDPVtdLEQsRT1mdW5jdGlvbihhKXthPWEuc3R5bGU7YS5wYWRkaW5nVG9wPSIwIjthLnBhZGRpbmdCb3R0b209IjAiO2EuYm9yZGVyVG9wV2lkdGg9IjAiO2EuYm9yZGVyQm90dG9tV2lkdGg9IjAiO2EuaGVpZ2h0PTB9O3Y9ai5zY3JvbGxIZWlnaHQ+ai5jbGllbnRIZWlnaHQ7aWYoYS5zY3JvbGxCYXJWaXMhPT12JiZhLnNjcm9sbEJhclZpcyE9PWspYS5zY3JvbGxCYXJWaXM9dixZKGEpO2Vsc2V7YS5zY3JvbGxCYXJWaXM9djtGLmNoaWxkcmVuKCJ0aGVhZCwgdGZvb3QiKS5yZW1vdmUoKTt1JiYodz11LmNsb25lKCkucHJlcGVuZFRvKEYpLFA9dS5maW5kKCJ0ciIpLHc9CncuZmluZCgidHIiKSk7eT1vLmNsb25lKCkucHJlcGVuZFRvKEYpO289by5maW5kKCJ0ciIpO3Y9eS5maW5kKCJ0ciIpO3kuZmluZCgidGgsIHRkIikucmVtb3ZlQXR0cigidGFiaW5kZXgiKTtjfHwocS53aWR0aD0iMTAwJSIsZlswXS5zdHlsZS53aWR0aD0iMTAwJSIpO2guZWFjaChxYShhLHkpLGZ1bmN0aW9uKGIsYyl7RD1aKGEsYik7Yy5zdHlsZS53aWR0aD1hLmFvQ29sdW1uc1tEXS5zV2lkdGh9KTt1JiZKKGZ1bmN0aW9uKGEpe2Euc3R5bGUud2lkdGg9IiJ9LHcpO2Y9Ri5vdXRlcldpZHRoKCk7aWYoIiI9PT1jKXtyLndpZHRoPSIxMDAlIjtpZihVYSYmKEYuZmluZCgidGJvZHkiKS5oZWlnaHQoKT5qLm9mZnNldEhlaWdodHx8InNjcm9sbCI9PWwuY3NzKCJvdmVyZmxvdy15IikpKXIud2lkdGg9eChGLm91dGVyV2lkdGgoKS1iKTtmPUYub3V0ZXJXaWR0aCgpfWVsc2UiIiE9PWQmJihyLndpZHRoPXgoZCksZj1GLm91dGVyV2lkdGgoKSk7SihFLHYpO0ooZnVuY3Rpb24oYSl7Qi5wdXNoKGEuaW5uZXJIVE1MKTsKei5wdXNoKHgoaChhKS5jc3MoIndpZHRoIikpKX0sdik7SihmdW5jdGlvbihhLGIpe2lmKGguaW5BcnJheShhLHMpIT09LTEpYS5zdHlsZS53aWR0aD16W2JdfSxvKTtoKHYpLmhlaWdodCgwKTt1JiYoSihFLHcpLEooZnVuY3Rpb24oYSl7Qy5wdXNoKGEuaW5uZXJIVE1MKTtBLnB1c2goeChoKGEpLmNzcygid2lkdGgiKSkpfSx3KSxKKGZ1bmN0aW9uKGEsYil7YS5zdHlsZS53aWR0aD1BW2JdfSxQKSxoKHcpLmhlaWdodCgwKSk7SihmdW5jdGlvbihhLGIpe2EuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJkYXRhVGFibGVzX3NpemluZyIgc3R5bGU9ImhlaWdodDowO292ZXJmbG93OmhpZGRlbjsiPicrQltiXSsiPC9kaXY+IjthLnN0eWxlLndpZHRoPXpbYl19LHYpO3UmJkooZnVuY3Rpb24oYSxiKXthLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iZGF0YVRhYmxlc19zaXppbmciIHN0eWxlPSJoZWlnaHQ6MDtvdmVyZmxvdzpoaWRkZW47Ij4nK0NbYl0rIjwvZGl2PiI7YS5zdHlsZS53aWR0aD0KQVtiXX0sdyk7aWYoRi5vdXRlcldpZHRoKCk8Zil7UD1qLnNjcm9sbEhlaWdodD5qLm9mZnNldEhlaWdodHx8InNjcm9sbCI9PWwuY3NzKCJvdmVyZmxvdy15Iik/ZitiOmY7aWYoVWEmJihqLnNjcm9sbEhlaWdodD5qLm9mZnNldEhlaWdodHx8InNjcm9sbCI9PWwuY3NzKCJvdmVyZmxvdy15IikpKXIud2lkdGg9eChQLWIpOygiIj09PWN8fCIiIT09ZCkmJkwoYSwxLCJQb3NzaWJsZSBjb2x1bW4gbWlzYWxpZ25tZW50Iiw2KX1lbHNlIFA9IjEwMCUiO3Eud2lkdGg9eChQKTtnLndpZHRoPXgoUCk7dSYmKGEublNjcm9sbEZvb3Quc3R5bGUud2lkdGg9eChQKSk7IWUmJlVhJiYocS5oZWlnaHQ9eChwLm9mZnNldEhlaWdodCtiKSk7Yz1GLm91dGVyV2lkdGgoKTtuWzBdLnN0eWxlLndpZHRoPXgoYyk7aS53aWR0aD14KGMpO2Q9Ri5oZWlnaHQoKT5qLmNsaWVudEhlaWdodHx8InNjcm9sbCI9PWwuY3NzKCJvdmVyZmxvdy15Iik7ZT0icGFkZGluZyIrKEViLmJTY3JvbGxiYXJMZWZ0PyJMZWZ0IjoKIlJpZ2h0Iik7aVtlXT1kP2IrInB4IjoiMHB4Ijt1JiYobVswXS5zdHlsZS53aWR0aD14KGMpLHRbMF0uc3R5bGUud2lkdGg9eChjKSx0WzBdLnN0eWxlW2VdPWQ/YisicHgiOiIwcHgiKTtGLmNoaWxkcmVuKCJjb2xncm91cCIpLmluc2VydEJlZm9yZShGLmNoaWxkcmVuKCJ0aGVhZCIpKTtsLnNjcm9sbCgpO2lmKChhLmJTb3J0ZWR8fGEuYkZpbHRlcmVkKSYmIWEuX2RyYXdIb2xkKWouc2Nyb2xsVG9wPTB9fWZ1bmN0aW9uIEooYSxiLGMpe2Zvcih2YXIgZD0wLGU9MCxmPWIubGVuZ3RoLGcsajtlPGY7KXtnPWJbZV0uZmlyc3RDaGlsZDtmb3Ioaj1jP2NbZV0uZmlyc3RDaGlsZDpudWxsO2c7KTE9PT1nLm5vZGVUeXBlJiYoYz9hKGcsaixkKTphKGcsZCksZCsrKSxnPWcubmV4dFNpYmxpbmcsaj1jP2oubmV4dFNpYmxpbmc6bnVsbDtlKyt9fWZ1bmN0aW9uIEZhKGEpe3ZhciBiPWEublRhYmxlLGM9YS5hb0NvbHVtbnMsZD1hLm9TY3JvbGwsZT1kLnNZLGY9ZC5zWCxnPWQuc1hJbm5lciwKaj1jLmxlbmd0aCxpPWxhKGEsImJWaXNpYmxlIiksbj1oKCJ0aCIsYS5uVEhlYWQpLGw9Yi5nZXRBdHRyaWJ1dGUoIndpZHRoIiksaz1iLnBhcmVudE5vZGUsdD0hMSxtLG8scD1hLm9Ccm93c2VyLGQ9cC5iU2Nyb2xsT3ZlcnNpemU7KG09Yi5zdHlsZS53aWR0aCkmJi0xIT09bS5pbmRleE9mKCIlIikmJihsPW0pO2ZvcihtPTA7bTxpLmxlbmd0aDttKyspbz1jW2lbbV1dLG51bGwhPT1vLnNXaWR0aCYmKG8uc1dpZHRoPUZiKG8uc1dpZHRoT3JpZyxrKSx0PSEwKTtpZihkfHwhdCYmIWYmJiFlJiZqPT1hYShhKSYmaj09bi5sZW5ndGgpZm9yKG09MDttPGo7bSsrKWk9WihhLG0pLG51bGwhPT1pJiYoY1tpXS5zV2lkdGg9eChuLmVxKG0pLndpZHRoKCkpKTtlbHNle2o9aChiKS5jbG9uZSgpLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLnJlbW92ZUF0dHIoImlkIik7ai5maW5kKCJ0Ym9keSB0ciIpLnJlbW92ZSgpO3ZhciByPWgoIjx0ci8+IikuYXBwZW5kVG8oai5maW5kKCJ0Ym9keSIpKTsKai5maW5kKCJ0aGVhZCwgdGZvb3QiKS5yZW1vdmUoKTtqLmFwcGVuZChoKGEublRIZWFkKS5jbG9uZSgpKS5hcHBlbmQoaChhLm5URm9vdCkuY2xvbmUoKSk7ai5maW5kKCJ0Zm9vdCB0aCwgdGZvb3QgdGQiKS5jc3MoIndpZHRoIiwiIik7bj1xYShhLGouZmluZCgidGhlYWQiKVswXSk7Zm9yKG09MDttPGkubGVuZ3RoO20rKylvPWNbaVttXV0sblttXS5zdHlsZS53aWR0aD1udWxsIT09by5zV2lkdGhPcmlnJiYiIiE9PW8uc1dpZHRoT3JpZz94KG8uc1dpZHRoT3JpZyk6IiIsby5zV2lkdGhPcmlnJiZmJiZoKG5bbV0pLmFwcGVuZChoKCI8ZGl2Lz4iKS5jc3Moe3dpZHRoOm8uc1dpZHRoT3JpZyxtYXJnaW46MCxwYWRkaW5nOjAsYm9yZGVyOjAsaGVpZ2h0OjF9KSk7aWYoYS5hb0RhdGEubGVuZ3RoKWZvcihtPTA7bTxpLmxlbmd0aDttKyspdD1pW21dLG89Y1t0XSxoKEdiKGEsdCkpLmNsb25lKCExKS5hcHBlbmQoby5zQ29udGVudFBhZGRpbmcpLmFwcGVuZFRvKHIpO2goIltuYW1lXSIsCmopLnJlbW92ZUF0dHIoIm5hbWUiKTtvPWgoIjxkaXYvPiIpLmNzcyhmfHxlP3twb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCxoZWlnaHQ6MSxyaWdodDowLG92ZXJmbG93OiJoaWRkZW4ifTp7fSkuYXBwZW5kKGopLmFwcGVuZFRvKGspO2YmJmc/ai53aWR0aChnKTpmPyhqLmNzcygid2lkdGgiLCJhdXRvIiksai5yZW1vdmVBdHRyKCJ3aWR0aCIpLGoud2lkdGgoKTxrLmNsaWVudFdpZHRoJiZsJiZqLndpZHRoKGsuY2xpZW50V2lkdGgpKTplP2oud2lkdGgoay5jbGllbnRXaWR0aCk6bCYmai53aWR0aChsKTtmb3IobT1lPTA7bTxpLmxlbmd0aDttKyspaz1oKG5bbV0pLGc9ay5vdXRlcldpZHRoKCktay53aWR0aCgpLGs9cC5iQm91bmRpbmc/TWF0aC5jZWlsKG5bbV0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpOmsub3V0ZXJXaWR0aCgpLGUrPWssY1tpW21dXS5zV2lkdGg9eChrLWcpO2Iuc3R5bGUud2lkdGg9eChlKTtvLnJlbW92ZSgpfWwmJihiLnN0eWxlLndpZHRoPQp4KGwpKTtpZigobHx8ZikmJiFhLl9yZXN6RXZ0KWI9ZnVuY3Rpb24oKXtoKEQpLmJpbmQoInJlc2l6ZS5EVC0iK2Euc0luc3RhbmNlLE9hKGZ1bmN0aW9uKCl7WShhKX0pKX0sZD9zZXRUaW1lb3V0KGIsMUUzKTpiKCksYS5fcmVzekV2dD0hMH1mdW5jdGlvbiBGYihhLGIpe2lmKCFhKXJldHVybiAwO3ZhciBjPWgoIjxkaXYvPiIpLmNzcygid2lkdGgiLHgoYSkpLmFwcGVuZFRvKGJ8fEkuYm9keSksZD1jWzBdLm9mZnNldFdpZHRoO2MucmVtb3ZlKCk7cmV0dXJuIGR9ZnVuY3Rpb24gR2IoYSxiKXt2YXIgYz1IYihhLGIpO2lmKDA+YylyZXR1cm4gbnVsbDt2YXIgZD1hLmFvRGF0YVtjXTtyZXR1cm4hZC5uVHI/aCgiPHRkLz4iKS5odG1sKEIoYSxjLGIsImRpc3BsYXkiKSlbMF06ZC5hbkNlbGxzW2JdfWZ1bmN0aW9uIEhiKGEsYil7Zm9yKHZhciBjLGQ9LTEsZT0tMSxmPTAsZz1hLmFvRGF0YS5sZW5ndGg7ZjxnO2YrKyljPUIoYSxmLGIsImRpc3BsYXkiKSsiIixjPWMucmVwbGFjZSgkYiwKIiIpLGM9Yy5yZXBsYWNlKC8mbmJzcDsvZywiICIpLGMubGVuZ3RoPmQmJihkPWMubGVuZ3RoLGU9Zik7cmV0dXJuIGV9ZnVuY3Rpb24geChhKXtyZXR1cm4gbnVsbD09PWE/IjBweCI6Im51bWJlciI9PXR5cGVvZiBhPzA+YT8iMHB4IjphKyJweCI6YS5tYXRjaCgvXGQkLyk/YSsicHgiOmF9ZnVuY3Rpb24gVihhKXt2YXIgYixjLGQ9W10sZT1hLmFvQ29sdW1ucyxmLGcsaixpO2I9YS5hYVNvcnRpbmdGaXhlZDtjPWguaXNQbGFpbk9iamVjdChiKTt2YXIgbj1bXTtmPWZ1bmN0aW9uKGEpe2EubGVuZ3RoJiYhaC5pc0FycmF5KGFbMF0pP24ucHVzaChhKTpoLm1lcmdlKG4sYSl9O2guaXNBcnJheShiKSYmZihiKTtjJiZiLnByZSYmZihiLnByZSk7ZihhLmFhU29ydGluZyk7YyYmYi5wb3N0JiZmKGIucG9zdCk7Zm9yKGE9MDthPG4ubGVuZ3RoO2ErKyl7aT1uW2FdWzBdO2Y9ZVtpXS5hRGF0YVNvcnQ7Yj0wO2ZvcihjPWYubGVuZ3RoO2I8YztiKyspZz1mW2JdLGo9ZVtnXS5zVHlwZXx8CiJzdHJpbmciLG5bYV0uX2lkeD09PWsmJihuW2FdLl9pZHg9aC5pbkFycmF5KG5bYV1bMV0sZVtnXS5hc1NvcnRpbmcpKSxkLnB1c2goe3NyYzppLGNvbDpnLGRpcjpuW2FdWzFdLGluZGV4Om5bYV0uX2lkeCx0eXBlOmosZm9ybWF0dGVyOm0uZXh0LnR5cGUub3JkZXJbaisiLXByZSJdfSl9cmV0dXJuIGR9ZnVuY3Rpb24gbWIoYSl7dmFyIGIsYyxkPVtdLGU9bS5leHQudHlwZS5vcmRlcixmPWEuYW9EYXRhLGc9MCxqLGk9YS5haURpc3BsYXlNYXN0ZXIsaDtHYShhKTtoPVYoYSk7Yj0wO2ZvcihjPWgubGVuZ3RoO2I8YztiKyspaj1oW2JdLGouZm9ybWF0dGVyJiZnKyssSWIoYSxqLmNvbCk7aWYoInNzcCIhPXkoYSkmJjAhPT1oLmxlbmd0aCl7Yj0wO2ZvcihjPWkubGVuZ3RoO2I8YztiKyspZFtpW2JdXT1iO2c9PT1oLmxlbmd0aD9pLnNvcnQoZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGcsaixpPWgubGVuZ3RoLGs9ZlthXS5fYVNvcnREYXRhLG09ZltiXS5fYVNvcnREYXRhO2ZvcihnPQowO2c8aTtnKyspaWYoaj1oW2ddLGM9a1tqLmNvbF0sZT1tW2ouY29sXSxjPWM8ZT8tMTpjPmU/MTowLDAhPT1jKXJldHVybiJhc2MiPT09ai5kaXI/YzotYztjPWRbYV07ZT1kW2JdO3JldHVybiBjPGU/LTE6Yz5lPzE6MH0pOmkuc29ydChmdW5jdGlvbihhLGIpe3ZhciBjLGcsaixpLGs9aC5sZW5ndGgsbT1mW2FdLl9hU29ydERhdGEscD1mW2JdLl9hU29ydERhdGE7Zm9yKGo9MDtqPGs7aisrKWlmKGk9aFtqXSxjPW1baS5jb2xdLGc9cFtpLmNvbF0saT1lW2kudHlwZSsiLSIraS5kaXJdfHxlWyJzdHJpbmctIitpLmRpcl0sYz1pKGMsZyksMCE9PWMpcmV0dXJuIGM7Yz1kW2FdO2c9ZFtiXTtyZXR1cm4gYzxnPy0xOmM+Zz8xOjB9KX1hLmJTb3J0ZWQ9ITB9ZnVuY3Rpb24gSmIoYSl7Zm9yKHZhciBiLGMsZD1hLmFvQ29sdW1ucyxlPVYoYSksYT1hLm9MYW5ndWFnZS5vQXJpYSxmPTAsZz1kLmxlbmd0aDtmPGc7ZisrKXtjPWRbZl07dmFyIGo9Yy5hc1NvcnRpbmc7Yj1jLnNUaXRsZS5yZXBsYWNlKC88Lio/Pi9nLAoiIik7dmFyIGk9Yy5uVGg7aS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtc29ydCIpO2MuYlNvcnRhYmxlJiYoMDxlLmxlbmd0aCYmZVswXS5jb2w9PWY/KGkuc2V0QXR0cmlidXRlKCJhcmlhLXNvcnQiLCJhc2MiPT1lWzBdLmRpcj8iYXNjZW5kaW5nIjoiZGVzY2VuZGluZyIpLGM9altlWzBdLmluZGV4KzFdfHxqWzBdKTpjPWpbMF0sYis9ImFzYyI9PT1jP2Euc1NvcnRBc2NlbmRpbmc6YS5zU29ydERlc2NlbmRpbmcpO2kuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixiKX19ZnVuY3Rpb24gVmEoYSxiLGMsZCl7dmFyIGU9YS5hYVNvcnRpbmcsZj1hLmFvQ29sdW1uc1tiXS5hc1NvcnRpbmcsZz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuX2lkeDtjPT09ayYmKGM9aC5pbkFycmF5KGFbMV0sZikpO3JldHVybiBjKzE8Zi5sZW5ndGg/YysxOmI/bnVsbDowfTsibnVtYmVyIj09PXR5cGVvZiBlWzBdJiYoZT1hLmFhU29ydGluZz1bZV0pO2MmJmEub0ZlYXR1cmVzLmJTb3J0TXVsdGk/KGM9aC5pbkFycmF5KGIsCkcoZSwiMCIpKSwtMSE9PWM/KGI9ZyhlW2NdLCEwKSxudWxsPT09YiYmMT09PWUubGVuZ3RoJiYoYj0wKSxudWxsPT09Yj9lLnNwbGljZShjLDEpOihlW2NdWzFdPWZbYl0sZVtjXS5faWR4PWIpKTooZS5wdXNoKFtiLGZbMF0sMF0pLGVbZS5sZW5ndGgtMV0uX2lkeD0wKSk6ZS5sZW5ndGgmJmVbMF1bMF09PWI/KGI9ZyhlWzBdKSxlLmxlbmd0aD0xLGVbMF1bMV09ZltiXSxlWzBdLl9pZHg9Yik6KGUubGVuZ3RoPTAsZS5wdXNoKFtiLGZbMF1dKSxlWzBdLl9pZHg9MCk7VChhKTsiZnVuY3Rpb24iPT10eXBlb2YgZCYmZChhKX1mdW5jdGlvbiBNYShhLGIsYyxkKXt2YXIgZT1hLmFvQ29sdW1uc1tjXTtXYShiLHt9LGZ1bmN0aW9uKGIpeyExIT09ZS5iU29ydGFibGUmJihhLm9GZWF0dXJlcy5iUHJvY2Vzc2luZz8oQyhhLCEwKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VmEoYSxjLGIuc2hpZnRLZXksZCk7InNzcCIhPT15KGEpJiZDKGEsITEpfSwwKSk6VmEoYSxjLGIuc2hpZnRLZXksZCkpfSl9CmZ1bmN0aW9uIHZhKGEpe3ZhciBiPWEuYUxhc3RTb3J0LGM9YS5vQ2xhc3Nlcy5zU29ydENvbHVtbixkPVYoYSksZT1hLm9GZWF0dXJlcyxmLGc7aWYoZS5iU29ydCYmZS5iU29ydENsYXNzZXMpe2U9MDtmb3IoZj1iLmxlbmd0aDtlPGY7ZSsrKWc9YltlXS5zcmMsaChHKGEuYW9EYXRhLCJhbkNlbGxzIixnKSkucmVtb3ZlQ2xhc3MoYysoMj5lP2UrMTozKSk7ZT0wO2ZvcihmPWQubGVuZ3RoO2U8ZjtlKyspZz1kW2VdLnNyYyxoKEcoYS5hb0RhdGEsImFuQ2VsbHMiLGcpKS5hZGRDbGFzcyhjKygyPmU/ZSsxOjMpKX1hLmFMYXN0U29ydD1kfWZ1bmN0aW9uIEliKGEsYil7dmFyIGM9YS5hb0NvbHVtbnNbYl0sZD1tLmV4dC5vcmRlcltjLnNTb3J0RGF0YVR5cGVdLGU7ZCYmKGU9ZC5jYWxsKGEub0luc3RhbmNlLGEsYiwkKGEsYikpKTtmb3IodmFyIGYsZz1tLmV4dC50eXBlLm9yZGVyW2Muc1R5cGUrIi1wcmUiXSxqPTAsaT1hLmFvRGF0YS5sZW5ndGg7ajxpO2orKylpZihjPWEuYW9EYXRhW2pdLApjLl9hU29ydERhdGF8fChjLl9hU29ydERhdGE9W10pLCFjLl9hU29ydERhdGFbYl18fGQpZj1kP2Vbal06QihhLGosYiwic29ydCIpLGMuX2FTb3J0RGF0YVtiXT1nP2coZik6Zn1mdW5jdGlvbiB3YShhKXtpZihhLm9GZWF0dXJlcy5iU3RhdGVTYXZlJiYhYS5iRGVzdHJveWluZyl7dmFyIGI9e3RpbWU6K25ldyBEYXRlLHN0YXJ0OmEuX2lEaXNwbGF5U3RhcnQsbGVuZ3RoOmEuX2lEaXNwbGF5TGVuZ3RoLG9yZGVyOmguZXh0ZW5kKCEwLFtdLGEuYWFTb3J0aW5nKSxzZWFyY2g6QWIoYS5vUHJldmlvdXNTZWFyY2gpLGNvbHVtbnM6aC5tYXAoYS5hb0NvbHVtbnMsZnVuY3Rpb24oYixkKXtyZXR1cm57dmlzaWJsZTpiLmJWaXNpYmxlLHNlYXJjaDpBYihhLmFvUHJlU2VhcmNoQ29sc1tkXSl9fSl9O3UoYSwiYW9TdGF0ZVNhdmVQYXJhbXMiLCJzdGF0ZVNhdmVQYXJhbXMiLFthLGJdKTthLm9TYXZlZFN0YXRlPWI7YS5mblN0YXRlU2F2ZUNhbGxiYWNrLmNhbGwoYS5vSW5zdGFuY2UsYSwKYil9fWZ1bmN0aW9uIEtiKGEpe3ZhciBiLGMsZD1hLmFvQ29sdW1ucztpZihhLm9GZWF0dXJlcy5iU3RhdGVTYXZlKXt2YXIgZT1hLmZuU3RhdGVMb2FkQ2FsbGJhY2suY2FsbChhLm9JbnN0YW5jZSxhKTtpZihlJiZlLnRpbWUmJihiPXUoYSwiYW9TdGF0ZUxvYWRQYXJhbXMiLCJzdGF0ZUxvYWRQYXJhbXMiLFthLGVdKSwtMT09PWguaW5BcnJheSghMSxiKSYmKGI9YS5pU3RhdGVEdXJhdGlvbiwhKDA8YiYmZS50aW1lPCtuZXcgRGF0ZS0xRTMqYikmJmQubGVuZ3RoPT09ZS5jb2x1bW5zLmxlbmd0aCkpKXthLm9Mb2FkZWRTdGF0ZT1oLmV4dGVuZCghMCx7fSxlKTtlLnN0YXJ0IT09ayYmKGEuX2lEaXNwbGF5U3RhcnQ9ZS5zdGFydCxhLmlJbml0RGlzcGxheVN0YXJ0PWUuc3RhcnQpO2UubGVuZ3RoIT09ayYmKGEuX2lEaXNwbGF5TGVuZ3RoPWUubGVuZ3RoKTtlLm9yZGVyIT09ayYmKGEuYWFTb3J0aW5nPVtdLGguZWFjaChlLm9yZGVyLGZ1bmN0aW9uKGIsYyl7YS5hYVNvcnRpbmcucHVzaChjWzBdPj0KZC5sZW5ndGg/WzAsY1sxXV06Yyl9KSk7ZS5zZWFyY2ghPT1rJiZoLmV4dGVuZChhLm9QcmV2aW91c1NlYXJjaCxCYihlLnNlYXJjaCkpO2I9MDtmb3IoYz1lLmNvbHVtbnMubGVuZ3RoO2I8YztiKyspe3ZhciBmPWUuY29sdW1uc1tiXTtmLnZpc2libGUhPT1rJiYoZFtiXS5iVmlzaWJsZT1mLnZpc2libGUpO2Yuc2VhcmNoIT09ayYmaC5leHRlbmQoYS5hb1ByZVNlYXJjaENvbHNbYl0sQmIoZi5zZWFyY2gpKX11KGEsImFvU3RhdGVMb2FkZWQiLCJzdGF0ZUxvYWRlZCIsW2EsZV0pfX19ZnVuY3Rpb24geGEoYSl7dmFyIGI9bS5zZXR0aW5ncyxhPWguaW5BcnJheShhLEcoYiwiblRhYmxlIikpO3JldHVybi0xIT09YT9iW2FdOm51bGx9ZnVuY3Rpb24gTChhLGIsYyxkKXtjPSJEYXRhVGFibGVzIHdhcm5pbmc6ICIrKGE/InRhYmxlIGlkPSIrYS5zVGFibGVJZCsiIC0gIjoiIikrYztkJiYoYys9Ii4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBlcnJvciwgcGxlYXNlIHNlZSBodHRwOi8vZGF0YXRhYmxlcy5uZXQvdG4vIisKZCk7aWYoYilELmNvbnNvbGUmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZyhjKTtlbHNlIGlmKGI9bS5leHQsYj1iLnNFcnJNb2RlfHxiLmVyck1vZGUsYSYmdShhLG51bGwsImVycm9yIixbYSxkLGNdKSwiYWxlcnQiPT1iKWFsZXJ0KGMpO2Vsc2V7aWYoInRocm93Ij09Yil0aHJvdyBFcnJvcihjKTsiZnVuY3Rpb24iPT10eXBlb2YgYiYmYihhLGQsYyl9fWZ1bmN0aW9uIEUoYSxiLGMsZCl7aC5pc0FycmF5KGMpP2guZWFjaChjLGZ1bmN0aW9uKGMsZCl7aC5pc0FycmF5KGQpP0UoYSxiLGRbMF0sZFsxXSk6RShhLGIsZCl9KTooZD09PWsmJihkPWMpLGJbY10hPT1rJiYoYVtkXT1iW2NdKSl9ZnVuY3Rpb24gTGIoYSxiLGMpe3ZhciBkLGU7Zm9yKGUgaW4gYiliLmhhc093blByb3BlcnR5KGUpJiYoZD1iW2VdLGguaXNQbGFpbk9iamVjdChkKT8oaC5pc1BsYWluT2JqZWN0KGFbZV0pfHwoYVtlXT17fSksaC5leHRlbmQoITAsYVtlXSxkKSk6YVtlXT1jJiYiZGF0YSIhPT1lJiYiYWFEYXRhIiE9PQplJiZoLmlzQXJyYXkoZCk/ZC5zbGljZSgpOmQpO3JldHVybiBhfWZ1bmN0aW9uIFdhKGEsYixjKXtoKGEpLmJpbmQoImNsaWNrLkRUIixiLGZ1bmN0aW9uKGIpe2EuYmx1cigpO2MoYil9KS5iaW5kKCJrZXlwcmVzcy5EVCIsYixmdW5jdGlvbihhKXsxMz09PWEud2hpY2gmJihhLnByZXZlbnREZWZhdWx0KCksYyhhKSl9KS5iaW5kKCJzZWxlY3RzdGFydC5EVCIsZnVuY3Rpb24oKXtyZXR1cm4hMX0pfWZ1bmN0aW9uIHooYSxiLGMsZCl7YyYmYVtiXS5wdXNoKHtmbjpjLHNOYW1lOmR9KX1mdW5jdGlvbiB1KGEsYixjLGQpe3ZhciBlPVtdO2ImJihlPWgubWFwKGFbYl0uc2xpY2UoKS5yZXZlcnNlKCksZnVuY3Rpb24oYil7cmV0dXJuIGIuZm4uYXBwbHkoYS5vSW5zdGFuY2UsZCl9KSk7bnVsbCE9PWMmJihiPWguRXZlbnQoYysiLmR0IiksaChhLm5UYWJsZSkudHJpZ2dlcihiLGQpLGUucHVzaChiLnJlc3VsdCkpO3JldHVybiBlfWZ1bmN0aW9uIFNhKGEpe3ZhciBiPWEuX2lEaXNwbGF5U3RhcnQsCmM9YS5mbkRpc3BsYXlFbmQoKSxkPWEuX2lEaXNwbGF5TGVuZ3RoO2I+PWMmJihiPWMtZCk7Yi09YiVkO2lmKC0xPT09ZHx8MD5iKWI9MDthLl9pRGlzcGxheVN0YXJ0PWJ9ZnVuY3Rpb24gTmEoYSxiKXt2YXIgYz1hLnJlbmRlcmVyLGQ9bS5leHQucmVuZGVyZXJbYl07cmV0dXJuIGguaXNQbGFpbk9iamVjdChjKSYmY1tiXT9kW2NbYl1dfHxkLl86InN0cmluZyI9PT10eXBlb2YgYz9kW2NdfHxkLl86ZC5ffWZ1bmN0aW9uIHkoYSl7cmV0dXJuIGEub0ZlYXR1cmVzLmJTZXJ2ZXJTaWRlPyJzc3AiOmEuYWpheHx8YS5zQWpheFNvdXJjZT8iYWpheCI6ImRvbSJ9ZnVuY3Rpb24geWEoYSxiKXt2YXIgYz1bXSxjPU1iLm51bWJlcnNfbGVuZ3RoLGQ9TWF0aC5mbG9vcihjLzIpO2I8PWM/Yz1XKDAsYik6YTw9ZD8oYz1XKDAsYy0yKSxjLnB1c2goImVsbGlwc2lzIiksYy5wdXNoKGItMSkpOihhPj1iLTEtZD9jPVcoYi0oYy0yKSxiKTooYz1XKGEtZCsyLGErZC0xKSxjLnB1c2goImVsbGlwc2lzIiksCmMucHVzaChiLTEpKSxjLnNwbGljZSgwLDAsImVsbGlwc2lzIiksYy5zcGxpY2UoMCwwLDApKTtjLkRUX2VsPSJzcGFuIjtyZXR1cm4gY31mdW5jdGlvbiBkYihhKXtoLmVhY2goe251bTpmdW5jdGlvbihiKXtyZXR1cm4gemEoYixhKX0sIm51bS1mbXQiOmZ1bmN0aW9uKGIpe3JldHVybiB6YShiLGEsWGEpfSwiaHRtbC1udW0iOmZ1bmN0aW9uKGIpe3JldHVybiB6YShiLGEsQWEpfSwiaHRtbC1udW0tZm10IjpmdW5jdGlvbihiKXtyZXR1cm4gemEoYixhLEFhLFhhKX19LGZ1bmN0aW9uKGIsYyl7di50eXBlLm9yZGVyW2IrYSsiLXByZSJdPWM7Yi5tYXRjaCgvXmh0bWxcLS8pJiYodi50eXBlLnNlYXJjaFtiK2FdPXYudHlwZS5zZWFyY2guaHRtbCl9KX1mdW5jdGlvbiBOYihhKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYj1beGEodGhpc1ttLmV4dC5pQXBpSW5kZXhdKV0uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO3JldHVybiBtLmV4dC5pbnRlcm5hbFthXS5hcHBseSh0aGlzLApiKX19dmFyIG09ZnVuY3Rpb24oYSl7dGhpcy4kPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuYXBpKCEwKS4kKGEsYil9O3RoaXMuXz1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmFwaSghMCkucm93cyhhLGIpLmRhdGEoKX07dGhpcy5hcGk9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bmV3IHIoeGEodGhpc1t2LmlBcGlJbmRleF0pKTpuZXcgcih0aGlzKX07dGhpcy5mbkFkZERhdGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmFwaSghMCksZD1oLmlzQXJyYXkoYSkmJihoLmlzQXJyYXkoYVswXSl8fGguaXNQbGFpbk9iamVjdChhWzBdKSk/Yy5yb3dzLmFkZChhKTpjLnJvdy5hZGQoYSk7KGI9PT1rfHxiKSYmYy5kcmF3KCk7cmV0dXJuIGQuZmxhdHRlbigpLnRvQXJyYXkoKX07dGhpcy5mbkFkanVzdENvbHVtblNpemluZz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmFwaSghMCkuY29sdW1ucy5hZGp1c3QoKSxjPWIuc2V0dGluZ3MoKVswXSxkPWMub1Njcm9sbDthPT09a3x8YT9iLmRyYXcoITEpOgooIiIhPT1kLnNYfHwiIiE9PWQuc1kpJiZrYShjKX07dGhpcy5mbkNsZWFyVGFibGU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5hcGkoITApLmNsZWFyKCk7KGE9PT1rfHxhKSYmYi5kcmF3KCl9O3RoaXMuZm5DbG9zZT1mdW5jdGlvbihhKXt0aGlzLmFwaSghMCkucm93KGEpLmNoaWxkLmhpZGUoKX07dGhpcy5mbkRlbGV0ZVJvdz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5hcGkoITApLGE9ZC5yb3dzKGEpLGU9YS5zZXR0aW5ncygpWzBdLGg9ZS5hb0RhdGFbYVswXVswXV07YS5yZW1vdmUoKTtiJiZiLmNhbGwodGhpcyxlLGgpOyhjPT09a3x8YykmJmQuZHJhdygpO3JldHVybiBofTt0aGlzLmZuRGVzdHJveT1mdW5jdGlvbihhKXt0aGlzLmFwaSghMCkuZGVzdHJveShhKX07dGhpcy5mbkRyYXc9ZnVuY3Rpb24oYSl7dGhpcy5hcGkoITApLmRyYXcoYSl9O3RoaXMuZm5GaWx0ZXI9ZnVuY3Rpb24oYSxiLGMsZCxlLGgpe2U9dGhpcy5hcGkoITApO251bGw9PT1ifHxiPT09az9lLnNlYXJjaChhLApjLGQsaCk6ZS5jb2x1bW4oYikuc2VhcmNoKGEsYyxkLGgpO2UuZHJhdygpfTt0aGlzLmZuR2V0RGF0YT1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuYXBpKCEwKTtpZihhIT09ayl7dmFyIGQ9YS5ub2RlTmFtZT9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk6IiI7cmV0dXJuIGIhPT1rfHwidGQiPT1kfHwidGgiPT1kP2MuY2VsbChhLGIpLmRhdGEoKTpjLnJvdyhhKS5kYXRhKCl8fG51bGx9cmV0dXJuIGMuZGF0YSgpLnRvQXJyYXkoKX07dGhpcy5mbkdldE5vZGVzPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYXBpKCEwKTtyZXR1cm4gYSE9PWs/Yi5yb3coYSkubm9kZSgpOmIucm93cygpLm5vZGVzKCkuZmxhdHRlbigpLnRvQXJyYXkoKX07dGhpcy5mbkdldFBvc2l0aW9uPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYXBpKCEwKSxjPWEubm9kZU5hbWUudG9VcHBlckNhc2UoKTtyZXR1cm4iVFIiPT1jP2Iucm93KGEpLmluZGV4KCk6IlREIj09Y3x8IlRIIj09Yz8oYT1iLmNlbGwoYSkuaW5kZXgoKSwKW2Eucm93LGEuY29sdW1uVmlzaWJsZSxhLmNvbHVtbl0pOm51bGx9O3RoaXMuZm5Jc09wZW49ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYXBpKCEwKS5yb3coYSkuY2hpbGQuaXNTaG93bigpfTt0aGlzLmZuT3Blbj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMuYXBpKCEwKS5yb3coYSkuY2hpbGQoYixjKS5zaG93KCkuY2hpbGQoKVswXX07dGhpcy5mblBhZ2VDaGFuZ2U9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmFwaSghMCkucGFnZShhKTsoYj09PWt8fGIpJiZjLmRyYXcoITEpfTt0aGlzLmZuU2V0Q29sdW1uVmlzPWZ1bmN0aW9uKGEsYixjKXthPXRoaXMuYXBpKCEwKS5jb2x1bW4oYSkudmlzaWJsZShiKTsoYz09PWt8fGMpJiZhLmNvbHVtbnMuYWRqdXN0KCkuZHJhdygpfTt0aGlzLmZuU2V0dGluZ3M9ZnVuY3Rpb24oKXtyZXR1cm4geGEodGhpc1t2LmlBcGlJbmRleF0pfTt0aGlzLmZuU29ydD1mdW5jdGlvbihhKXt0aGlzLmFwaSghMCkub3JkZXIoYSkuZHJhdygpfTt0aGlzLmZuU29ydExpc3RlbmVyPQpmdW5jdGlvbihhLGIsYyl7dGhpcy5hcGkoITApLm9yZGVyLmxpc3RlbmVyKGEsYixjKX07dGhpcy5mblVwZGF0ZT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBoPXRoaXMuYXBpKCEwKTtjPT09a3x8bnVsbD09PWM/aC5yb3coYikuZGF0YShhKTpoLmNlbGwoYixjKS5kYXRhKGEpOyhlPT09a3x8ZSkmJmguY29sdW1ucy5hZGp1c3QoKTsoZD09PWt8fGQpJiZoLmRyYXcoKTtyZXR1cm4gMH07dGhpcy5mblZlcnNpb25DaGVjaz12LmZuVmVyc2lvbkNoZWNrO3ZhciBiPXRoaXMsYz1hPT09ayxkPXRoaXMubGVuZ3RoO2MmJihhPXt9KTt0aGlzLm9BcGk9dGhpcy5pbnRlcm5hbD12LmludGVybmFsO2Zvcih2YXIgZSBpbiBtLmV4dC5pbnRlcm5hbCllJiYodGhpc1tlXT1OYihlKSk7dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9e30sZT0xPGQ/TGIoZSxhLCEwKTphLGc9MCxqLGk9dGhpcy5nZXRBdHRyaWJ1dGUoImlkIiksbj0hMSxsPW0uZGVmYXVsdHMscT1oKHRoaXMpO2lmKCJ0YWJsZSIhPQp0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpTChudWxsLDAsIk5vbi10YWJsZSBub2RlIGluaXRpYWxpc2F0aW9uICgiK3RoaXMubm9kZU5hbWUrIikiLDIpO2Vsc2V7ZWIobCk7ZmIobC5jb2x1bW4pO0sobCxsLCEwKTtLKGwuY29sdW1uLGwuY29sdW1uLCEwKTtLKGwsaC5leHRlbmQoZSxxLmRhdGEoKSkpO3ZhciB0PW0uc2V0dGluZ3MsZz0wO2ZvcihqPXQubGVuZ3RoO2c8ajtnKyspe3ZhciBwPXRbZ107aWYocC5uVGFibGU9PXRoaXN8fHAublRIZWFkLnBhcmVudE5vZGU9PXRoaXN8fHAublRGb290JiZwLm5URm9vdC5wYXJlbnROb2RlPT10aGlzKXtnPWUuYlJldHJpZXZlIT09az9lLmJSZXRyaWV2ZTpsLmJSZXRyaWV2ZTtpZihjfHxnKXJldHVybiBwLm9JbnN0YW5jZTtpZihlLmJEZXN0cm95IT09az9lLmJEZXN0cm95OmwuYkRlc3Ryb3kpe3Aub0luc3RhbmNlLmZuRGVzdHJveSgpO2JyZWFrfWVsc2V7TChwLDAsIkNhbm5vdCByZWluaXRpYWxpc2UgRGF0YVRhYmxlIiwzKTsKcmV0dXJufX1pZihwLnNUYWJsZUlkPT10aGlzLmlkKXt0LnNwbGljZShnLDEpO2JyZWFrfX1pZihudWxsPT09aXx8IiI9PT1pKXRoaXMuaWQ9aT0iRGF0YVRhYmxlc19UYWJsZV8iK20uZXh0Ll91bmlxdWUrKzt2YXIgbz1oLmV4dGVuZCghMCx7fSxtLm1vZGVscy5vU2V0dGluZ3Mse3NEZXN0cm95V2lkdGg6cVswXS5zdHlsZS53aWR0aCxzSW5zdGFuY2U6aSxzVGFibGVJZDppfSk7by5uVGFibGU9dGhpcztvLm9BcGk9Yi5pbnRlcm5hbDtvLm9Jbml0PWU7dC5wdXNoKG8pO28ub0luc3RhbmNlPTE9PT1iLmxlbmd0aD9iOnEuZGF0YVRhYmxlKCk7ZWIoZSk7ZS5vTGFuZ3VhZ2UmJkRhKGUub0xhbmd1YWdlKTtlLmFMZW5ndGhNZW51JiYhZS5pRGlzcGxheUxlbmd0aCYmKGUuaURpc3BsYXlMZW5ndGg9aC5pc0FycmF5KGUuYUxlbmd0aE1lbnVbMF0pP2UuYUxlbmd0aE1lbnVbMF1bMF06ZS5hTGVuZ3RoTWVudVswXSk7ZT1MYihoLmV4dGVuZCghMCx7fSxsKSxlKTtFKG8ub0ZlYXR1cmVzLAplLCJiUGFnaW5hdGUgYkxlbmd0aENoYW5nZSBiRmlsdGVyIGJTb3J0IGJTb3J0TXVsdGkgYkluZm8gYlByb2Nlc3NpbmcgYkF1dG9XaWR0aCBiU29ydENsYXNzZXMgYlNlcnZlclNpZGUgYkRlZmVyUmVuZGVyIi5zcGxpdCgiICIpKTtFKG8sZSxbImFzU3RyaXBlQ2xhc3NlcyIsImFqYXgiLCJmblNlcnZlckRhdGEiLCJmbkZvcm1hdE51bWJlciIsInNTZXJ2ZXJNZXRob2QiLCJhYVNvcnRpbmciLCJhYVNvcnRpbmdGaXhlZCIsImFMZW5ndGhNZW51Iiwic1BhZ2luYXRpb25UeXBlIiwic0FqYXhTb3VyY2UiLCJzQWpheERhdGFQcm9wIiwiaVN0YXRlRHVyYXRpb24iLCJzRG9tIiwiYlNvcnRDZWxsc1RvcCIsImlUYWJJbmRleCIsImZuU3RhdGVMb2FkQ2FsbGJhY2siLCJmblN0YXRlU2F2ZUNhbGxiYWNrIiwicmVuZGVyZXIiLCJzZWFyY2hEZWxheSIsInJvd0lkIixbImlDb29raWVEdXJhdGlvbiIsImlTdGF0ZUR1cmF0aW9uIl0sWyJvU2VhcmNoIiwib1ByZXZpb3VzU2VhcmNoIl0sWyJhb1NlYXJjaENvbHMiLAoiYW9QcmVTZWFyY2hDb2xzIl0sWyJpRGlzcGxheUxlbmd0aCIsIl9pRGlzcGxheUxlbmd0aCJdLFsiYkpRdWVyeVVJIiwiYkpVSSJdXSk7RShvLm9TY3JvbGwsZSxbWyJzU2Nyb2xsWCIsInNYIl0sWyJzU2Nyb2xsWElubmVyIiwic1hJbm5lciJdLFsic1Njcm9sbFkiLCJzWSJdLFsiYlNjcm9sbENvbGxhcHNlIiwiYkNvbGxhcHNlIl1dKTtFKG8ub0xhbmd1YWdlLGUsImZuSW5mb0NhbGxiYWNrIik7eihvLCJhb0RyYXdDYWxsYmFjayIsZS5mbkRyYXdDYWxsYmFjaywidXNlciIpO3oobywiYW9TZXJ2ZXJQYXJhbXMiLGUuZm5TZXJ2ZXJQYXJhbXMsInVzZXIiKTt6KG8sImFvU3RhdGVTYXZlUGFyYW1zIixlLmZuU3RhdGVTYXZlUGFyYW1zLCJ1c2VyIik7eihvLCJhb1N0YXRlTG9hZFBhcmFtcyIsZS5mblN0YXRlTG9hZFBhcmFtcywidXNlciIpO3oobywiYW9TdGF0ZUxvYWRlZCIsZS5mblN0YXRlTG9hZGVkLCJ1c2VyIik7eihvLCJhb1Jvd0NhbGxiYWNrIixlLmZuUm93Q2FsbGJhY2ssCiJ1c2VyIik7eihvLCJhb1Jvd0NyZWF0ZWRDYWxsYmFjayIsZS5mbkNyZWF0ZWRSb3csInVzZXIiKTt6KG8sImFvSGVhZGVyQ2FsbGJhY2siLGUuZm5IZWFkZXJDYWxsYmFjaywidXNlciIpO3oobywiYW9Gb290ZXJDYWxsYmFjayIsZS5mbkZvb3RlckNhbGxiYWNrLCJ1c2VyIik7eihvLCJhb0luaXRDb21wbGV0ZSIsZS5mbkluaXRDb21wbGV0ZSwidXNlciIpO3oobywiYW9QcmVEcmF3Q2FsbGJhY2siLGUuZm5QcmVEcmF3Q2FsbGJhY2ssInVzZXIiKTtvLnJvd0lkRm49UShlLnJvd0lkKTtnYihvKTtpPW8ub0NsYXNzZXM7ZS5iSlF1ZXJ5VUk/KGguZXh0ZW5kKGksbS5leHQub0pVSUNsYXNzZXMsZS5vQ2xhc3NlcyksZS5zRG9tPT09bC5zRG9tJiYibGZydGlwIj09PWwuc0RvbSYmKG8uc0RvbT0nPCJIImxmcj50PCJGImlwPicpLG8ucmVuZGVyZXIpP2guaXNQbGFpbk9iamVjdChvLnJlbmRlcmVyKSYmIW8ucmVuZGVyZXIuaGVhZGVyJiYoby5yZW5kZXJlci5oZWFkZXI9ImpxdWVyeXVpIik6Cm8ucmVuZGVyZXI9ImpxdWVyeXVpIjpoLmV4dGVuZChpLG0uZXh0LmNsYXNzZXMsZS5vQ2xhc3Nlcyk7cS5hZGRDbGFzcyhpLnNUYWJsZSk7by5pSW5pdERpc3BsYXlTdGFydD09PWsmJihvLmlJbml0RGlzcGxheVN0YXJ0PWUuaURpc3BsYXlTdGFydCxvLl9pRGlzcGxheVN0YXJ0PWUuaURpc3BsYXlTdGFydCk7bnVsbCE9PWUuaURlZmVyTG9hZGluZyYmKG8uYkRlZmVyTG9hZGluZz0hMCxnPWguaXNBcnJheShlLmlEZWZlckxvYWRpbmcpLG8uX2lSZWNvcmRzRGlzcGxheT1nP2UuaURlZmVyTG9hZGluZ1swXTplLmlEZWZlckxvYWRpbmcsby5faVJlY29yZHNUb3RhbD1nP2UuaURlZmVyTG9hZGluZ1sxXTplLmlEZWZlckxvYWRpbmcpO3ZhciByPW8ub0xhbmd1YWdlO2guZXh0ZW5kKCEwLHIsZS5vTGFuZ3VhZ2UpOyIiIT09ci5zVXJsJiYoaC5hamF4KHtkYXRhVHlwZToianNvbiIsdXJsOnIuc1VybCxzdWNjZXNzOmZ1bmN0aW9uKGEpe0RhKGEpO0sobC5vTGFuZ3VhZ2UsYSk7aC5leHRlbmQodHJ1ZSwKcixhKTtnYShvKX0sZXJyb3I6ZnVuY3Rpb24oKXtnYShvKX19KSxuPSEwKTtudWxsPT09ZS5hc1N0cmlwZUNsYXNzZXMmJihvLmFzU3RyaXBlQ2xhc3Nlcz1baS5zU3RyaXBlT2RkLGkuc1N0cmlwZUV2ZW5dKTt2YXIgZz1vLmFzU3RyaXBlQ2xhc3Nlcyx2PXEuY2hpbGRyZW4oInRib2R5IikuZmluZCgidHIiKS5lcSgwKTstMSE9PWguaW5BcnJheSghMCxoLm1hcChnLGZ1bmN0aW9uKGEpe3JldHVybiB2Lmhhc0NsYXNzKGEpfSkpJiYoaCgidGJvZHkgdHIiLHRoaXMpLnJlbW92ZUNsYXNzKGcuam9pbigiICIpKSxvLmFzRGVzdHJveVN0cmlwZXM9Zy5zbGljZSgpKTt0PVtdO2c9dGhpcy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGhlYWQiKTswIT09Zy5sZW5ndGgmJihkYShvLmFvSGVhZGVyLGdbMF0pLHQ9cWEobykpO2lmKG51bGw9PT1lLmFvQ29sdW1ucyl7cD1bXTtnPTA7Zm9yKGo9dC5sZW5ndGg7ZzxqO2crKylwLnB1c2gobnVsbCl9ZWxzZSBwPWUuYW9Db2x1bW5zO2c9MDtmb3Ioaj0KcC5sZW5ndGg7ZzxqO2crKylFYShvLHQ/dFtnXTpudWxsKTtpYihvLGUuYW9Db2x1bW5EZWZzLHAsZnVuY3Rpb24oYSxiKXtqYShvLGEsYil9KTtpZih2Lmxlbmd0aCl7dmFyIHM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImRhdGEtIitiKSE9PW51bGw/YjpudWxsfTtoKHZbMF0pLmNoaWxkcmVuKCJ0aCwgdGQiKS5lYWNoKGZ1bmN0aW9uKGEsYil7dmFyIGM9by5hb0NvbHVtbnNbYV07aWYoYy5tRGF0YT09PWEpe3ZhciBkPXMoYiwic29ydCIpfHxzKGIsIm9yZGVyIiksZT1zKGIsImZpbHRlciIpfHxzKGIsInNlYXJjaCIpO2lmKGQhPT1udWxsfHxlIT09bnVsbCl7Yy5tRGF0YT17XzphKyIuZGlzcGxheSIsc29ydDpkIT09bnVsbD9hKyIuQGRhdGEtIitkOmssdHlwZTpkIT09bnVsbD9hKyIuQGRhdGEtIitkOmssZmlsdGVyOmUhPT1udWxsP2ErIi5AZGF0YS0iK2U6a307amEobyxhKX19fSl9dmFyIHc9by5vRmVhdHVyZXM7ZS5iU3RhdGVTYXZlJiYody5iU3RhdGVTYXZlPQohMCxLYihvLGUpLHoobywiYW9EcmF3Q2FsbGJhY2siLHdhLCJzdGF0ZV9zYXZlIikpO2lmKGUuYWFTb3J0aW5nPT09ayl7dD1vLmFhU29ydGluZztnPTA7Zm9yKGo9dC5sZW5ndGg7ZzxqO2crKyl0W2ddWzFdPW8uYW9Db2x1bW5zW2ddLmFzU29ydGluZ1swXX12YShvKTt3LmJTb3J0JiZ6KG8sImFvRHJhd0NhbGxiYWNrIixmdW5jdGlvbigpe2lmKG8uYlNvcnRlZCl7dmFyIGE9VihvKSxiPXt9O2guZWFjaChhLGZ1bmN0aW9uKGEsYyl7YltjLnNyY109Yy5kaXJ9KTt1KG8sbnVsbCwib3JkZXIiLFtvLGEsYl0pO0piKG8pfX0pO3oobywiYW9EcmF3Q2FsbGJhY2siLGZ1bmN0aW9uKCl7KG8uYlNvcnRlZHx8eShvKT09PSJzc3AifHx3LmJEZWZlclJlbmRlcikmJnZhKG8pfSwic2MiKTtnPXEuY2hpbGRyZW4oImNhcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5fY2FwdGlvblNpZGU9cS5jc3MoImNhcHRpb24tc2lkZSIpfSk7aj1xLmNoaWxkcmVuKCJ0aGVhZCIpOzA9PT1qLmxlbmd0aCYmCihqPWgoIjx0aGVhZC8+IikuYXBwZW5kVG8odGhpcykpO28ublRIZWFkPWpbMF07aj1xLmNoaWxkcmVuKCJ0Ym9keSIpOzA9PT1qLmxlbmd0aCYmKGo9aCgiPHRib2R5Lz4iKS5hcHBlbmRUbyh0aGlzKSk7by5uVEJvZHk9alswXTtqPXEuY2hpbGRyZW4oInRmb290Iik7aWYoMD09PWoubGVuZ3RoJiYwPGcubGVuZ3RoJiYoIiIhPT1vLm9TY3JvbGwuc1h8fCIiIT09by5vU2Nyb2xsLnNZKSlqPWgoIjx0Zm9vdC8+IikuYXBwZW5kVG8odGhpcyk7MD09PWoubGVuZ3RofHwwPT09ai5jaGlsZHJlbigpLmxlbmd0aD9xLmFkZENsYXNzKGkuc05vRm9vdGVyKTowPGoubGVuZ3RoJiYoby5uVEZvb3Q9alswXSxkYShvLmFvRm9vdGVyLG8ublRGb290KSk7aWYoZS5hYURhdGEpZm9yKGc9MDtnPGUuYWFEYXRhLmxlbmd0aDtnKyspTihvLGUuYWFEYXRhW2ddKTtlbHNlKG8uYkRlZmVyTG9hZGluZ3x8ImRvbSI9PXkobykpJiZtYShvLGgoby5uVEJvZHkpLmNoaWxkcmVuKCJ0ciIpKTtvLmFpRGlzcGxheT0Kby5haURpc3BsYXlNYXN0ZXIuc2xpY2UoKTtvLmJJbml0aWFsaXNlZD0hMDshMT09PW4mJmdhKG8pfX0pO2I9bnVsbDtyZXR1cm4gdGhpc30sdixyLHAscyxZYT17fSxPYj0vW1xyXG5dL2csQWE9LzwuKj8+L2csYWM9L15bXHdcK1wtXS8sYmM9L1tcd1wrXC1dJC8sY2M9UmVnRXhwKCIoXFwvfFxcLnxcXCp8XFwrfFxcP3xcXHx8XFwofFxcKXxcXFt8XFxdfFxce3xcXH18XFxcXHxcXCR8XFxefFxcLSkiLCJnIiksWGE9L1snLCTCo+KCrMKlJVx1MjAwOVx1MjAyRlx1MjBCRFx1MjBhOVx1MjBCQXJma10vZ2ksTT1mdW5jdGlvbihhKXtyZXR1cm4hYXx8ITA9PT1hfHwiLSI9PT1hPyEwOiExfSxQYj1mdW5jdGlvbihhKXt2YXIgYj1wYXJzZUludChhLDEwKTtyZXR1cm4haXNOYU4oYikmJmlzRmluaXRlKGEpP2I6bnVsbH0sUWI9ZnVuY3Rpb24oYSxiKXtZYVtiXXx8KFlhW2JdPVJlZ0V4cChRYShiKSwiZyIpKTtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBhJiYiLiIhPT1iP2EucmVwbGFjZSgvXC4vZywKIiIpLnJlcGxhY2UoWWFbYl0sIi4iKTphfSxaYT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9InN0cmluZyI9PT10eXBlb2YgYTtpZihNKGEpKXJldHVybiEwO2ImJmQmJihhPVFiKGEsYikpO2MmJmQmJihhPWEucmVwbGFjZShYYSwiIikpO3JldHVybiFpc05hTihwYXJzZUZsb2F0KGEpKSYmaXNGaW5pdGUoYSl9LFJiPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gTShhKT8hMDohKE0oYSl8fCJzdHJpbmciPT09dHlwZW9mIGEpP251bGw6WmEoYS5yZXBsYWNlKEFhLCIiKSxiLGMpPyEwOm51bGx9LEc9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9MCxmPWEubGVuZ3RoO2lmKGMhPT1rKWZvcig7ZTxmO2UrKylhW2VdJiZhW2VdW2JdJiZkLnB1c2goYVtlXVtiXVtjXSk7ZWxzZSBmb3IoO2U8ZjtlKyspYVtlXSYmZC5wdXNoKGFbZV1bYl0pO3JldHVybiBkfSxoYT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1bXSxmPTAsZz1iLmxlbmd0aDtpZihkIT09aylmb3IoO2Y8ZztmKyspYVtiW2ZdXVtjXSYmCmUucHVzaChhW2JbZl1dW2NdW2RdKTtlbHNlIGZvcig7ZjxnO2YrKyllLnB1c2goYVtiW2ZdXVtjXSk7cmV0dXJuIGV9LFc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkO2I9PT1rPyhiPTAsZD1hKTooZD1iLGI9YSk7Zm9yKHZhciBlPWI7ZTxkO2UrKyljLnB1c2goZSk7cmV0dXJuIGN9LFNiPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWFbY10mJmIucHVzaChhW2NdKTtyZXR1cm4gYn0scGE9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYyxkLGU9YS5sZW5ndGgsZixnPTA7ZD0wO2E6Zm9yKDtkPGU7ZCsrKXtjPWFbZF07Zm9yKGY9MDtmPGc7ZisrKWlmKGJbZl09PT1jKWNvbnRpbnVlIGE7Yi5wdXNoKGMpO2crK31yZXR1cm4gYn07bS51dGlsPXt0aHJvdHRsZTpmdW5jdGlvbihhLGIpe3ZhciBjPWIhPT1rP2I6MjAwLGQsZTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYj10aGlzLGc9K25ldyBEYXRlLGg9YXJndW1lbnRzO2QmJmc8ZCtjPyhjbGVhclRpbWVvdXQoZSksCmU9c2V0VGltZW91dChmdW5jdGlvbigpe2Q9azthLmFwcGx5KGIsaCl9LGMpKTooZD1nLGEuYXBwbHkoYixoKSl9fSxlc2NhcGVSZWdleDpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGNjLCJcXCQxIil9fTt2YXIgQT1mdW5jdGlvbihhLGIsYyl7YVtiXSE9PWsmJihhW2NdPWFbYl0pfSxiYT0vXFsuKj9cXSQvLFU9L1woXCkkLyxRYT1tLnV0aWwuZXNjYXBlUmVnZXgsdWE9aCgiPGRpdj4iKVswXSxaYj11YS50ZXh0Q29udGVudCE9PWssJGI9LzwuKj8+L2csT2E9bS51dGlsLnRocm90dGxlLFRiPVtdLHc9QXJyYXkucHJvdG90eXBlLGRjPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1tLnNldHRpbmdzLGU9aC5tYXAoZCxmdW5jdGlvbihhKXtyZXR1cm4gYS5uVGFibGV9KTtpZihhKXtpZihhLm5UYWJsZSYmYS5vQXBpKXJldHVyblthXTtpZihhLm5vZGVOYW1lJiYidGFibGUiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXJldHVybiBiPWguaW5BcnJheShhLGUpLC0xIT09Yj9bZFtiXV06Cm51bGw7aWYoYSYmImZ1bmN0aW9uIj09PXR5cGVvZiBhLnNldHRpbmdzKXJldHVybiBhLnNldHRpbmdzKCkudG9BcnJheSgpOyJzdHJpbmciPT09dHlwZW9mIGE/Yz1oKGEpOmEgaW5zdGFuY2VvZiBoJiYoYz1hKX1lbHNlIHJldHVybltdO2lmKGMpcmV0dXJuIGMubWFwKGZ1bmN0aW9uKCl7Yj1oLmluQXJyYXkodGhpcyxlKTtyZXR1cm4tMSE9PWI/ZFtiXTpudWxsfSkudG9BcnJheSgpfTtyPWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YgcikpcmV0dXJuIG5ldyByKGEsYik7dmFyIGM9W10sZD1mdW5jdGlvbihhKXsoYT1kYyhhKSkmJihjPWMuY29uY2F0KGEpKX07aWYoaC5pc0FycmF5KGEpKWZvcih2YXIgZT0wLGY9YS5sZW5ndGg7ZTxmO2UrKylkKGFbZV0pO2Vsc2UgZChhKTt0aGlzLmNvbnRleHQ9cGEoYyk7YiYmaC5tZXJnZSh0aGlzLGIpO3RoaXMuc2VsZWN0b3I9e3Jvd3M6bnVsbCxjb2xzOm51bGwsb3B0czpudWxsfTtyLmV4dGVuZCh0aGlzLHRoaXMsVGIpfTsKbS5BcGk9cjtoLmV4dGVuZChyLnByb3RvdHlwZSx7YW55OmZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLmNvdW50KCl9LGNvbmNhdDp3LmNvbmNhdCxjb250ZXh0OltdLGNvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmxhdHRlbigpLmxlbmd0aH0sZWFjaDpmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2I8YztiKyspYS5jYWxsKHRoaXMsdGhpc1tiXSxiLHRoaXMpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbnRleHQ7cmV0dXJuIGIubGVuZ3RoPmE/bmV3IHIoYlthXSx0aGlzW2FdKTpudWxsfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7dmFyIGI9W107aWYody5maWx0ZXIpYj13LmZpbHRlci5jYWxsKHRoaXMsYSx0aGlzKTtlbHNlIGZvcih2YXIgYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKylhLmNhbGwodGhpcyx0aGlzW2NdLGMsdGhpcykmJmIucHVzaCh0aGlzW2NdKTtyZXR1cm4gbmV3IHIodGhpcy5jb250ZXh0LGIpfSxmbGF0dGVuOmZ1bmN0aW9uKCl7dmFyIGE9CltdO3JldHVybiBuZXcgcih0aGlzLmNvbnRleHQsYS5jb25jYXQuYXBwbHkoYSx0aGlzLnRvQXJyYXkoKSkpfSxqb2luOncuam9pbixpbmRleE9mOncuaW5kZXhPZnx8ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9Ynx8MCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspaWYodGhpc1tjXT09PWEpcmV0dXJuIGM7cmV0dXJuLTF9LGl0ZXJhdG9yOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPVtdLGYsZyxoLGksbixsPXRoaXMuY29udGV4dCxtLHQscD10aGlzLnNlbGVjdG9yOyJzdHJpbmciPT09dHlwZW9mIGEmJihkPWMsYz1iLGI9YSxhPSExKTtnPTA7Zm9yKGg9bC5sZW5ndGg7ZzxoO2crKyl7dmFyIG89bmV3IHIobFtnXSk7aWYoInRhYmxlIj09PWIpZj1jLmNhbGwobyxsW2ddLGcpLGYhPT1rJiZlLnB1c2goZik7ZWxzZSBpZigiY29sdW1ucyI9PT1ifHwicm93cyI9PT1iKWY9Yy5jYWxsKG8sbFtnXSx0aGlzW2ddLGcpLGYhPT1rJiZlLnB1c2goZik7ZWxzZSBpZigiY29sdW1uIj09PWJ8fCJjb2x1bW4tcm93cyI9PT0KYnx8InJvdyI9PT1ifHwiY2VsbCI9PT1iKXt0PXRoaXNbZ107ImNvbHVtbi1yb3dzIj09PWImJihtPUJhKGxbZ10scC5vcHRzKSk7aT0wO2ZvcihuPXQubGVuZ3RoO2k8bjtpKyspZj10W2ldLGY9ImNlbGwiPT09Yj9jLmNhbGwobyxsW2ddLGYucm93LGYuY29sdW1uLGcsaSk6Yy5jYWxsKG8sbFtnXSxmLGcsaSxtKSxmIT09ayYmZS5wdXNoKGYpfX1yZXR1cm4gZS5sZW5ndGh8fGQ/KGE9bmV3IHIobCxhP2UuY29uY2F0LmFwcGx5KFtdLGUpOmUpLGI9YS5zZWxlY3RvcixiLnJvd3M9cC5yb3dzLGIuY29scz1wLmNvbHMsYi5vcHRzPXAub3B0cyxhKTp0aGlzfSxsYXN0SW5kZXhPZjp3Lmxhc3RJbmRleE9mfHxmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmluZGV4T2YuYXBwbHkodGhpcy50b0FycmF5LnJldmVyc2UoKSxhcmd1bWVudHMpfSxsZW5ndGg6MCxtYXA6ZnVuY3Rpb24oYSl7dmFyIGI9W107aWYody5tYXApYj13Lm1hcC5jYWxsKHRoaXMsYSx0aGlzKTtlbHNlIGZvcih2YXIgYz0KMCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspYi5wdXNoKGEuY2FsbCh0aGlzLHRoaXNbY10sYykpO3JldHVybiBuZXcgcih0aGlzLmNvbnRleHQsYil9LHBsdWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYlthXX0pfSxwb3A6dy5wb3AscHVzaDp3LnB1c2gscmVkdWNlOncucmVkdWNlfHxmdW5jdGlvbihhLGIpe3JldHVybiBoYih0aGlzLGEsYiwwLHRoaXMubGVuZ3RoLDEpfSxyZWR1Y2VSaWdodDp3LnJlZHVjZVJpZ2h0fHxmdW5jdGlvbihhLGIpe3JldHVybiBoYih0aGlzLGEsYix0aGlzLmxlbmd0aC0xLC0xLC0xKX0scmV2ZXJzZTp3LnJldmVyc2Usc2VsZWN0b3I6bnVsbCxzaGlmdDp3LnNoaWZ0LHNvcnQ6dy5zb3J0LHNwbGljZTp3LnNwbGljZSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHcuc2xpY2UuY2FsbCh0aGlzKX0sdG8kOmZ1bmN0aW9uKCl7cmV0dXJuIGgodGhpcyl9LHRvSlF1ZXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIGgodGhpcyl9LAp1bmlxdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHIodGhpcy5jb250ZXh0LHBhKHRoaXMpKX0sdW5zaGlmdDp3LnVuc2hpZnR9KTtyLmV4dGVuZD1mdW5jdGlvbihhLGIsYyl7aWYoYy5sZW5ndGgmJmImJihiIGluc3RhbmNlb2Ygcnx8Yi5fX2R0X3dyYXBwZXIpKXt2YXIgZCxlLGYsZz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQ9Yi5hcHBseShhLGFyZ3VtZW50cyk7ci5leHRlbmQoZCxkLGMubWV0aG9kRXh0KTtyZXR1cm4gZH19O2Q9MDtmb3IoZT1jLmxlbmd0aDtkPGU7ZCsrKWY9Y1tkXSxiW2YubmFtZV09ImZ1bmN0aW9uIj09PXR5cGVvZiBmLnZhbD9nKGEsZi52YWwsZik6aC5pc1BsYWluT2JqZWN0KGYudmFsKT97fTpmLnZhbCxiW2YubmFtZV0uX19kdF93cmFwcGVyPSEwLHIuZXh0ZW5kKGEsYltmLm5hbWVdLGYucHJvcEV4dCl9fTtyLnJlZ2lzdGVyPXA9ZnVuY3Rpb24oYSxiKXtpZihoLmlzQXJyYXkoYSkpZm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPApkO2MrKylyLnJlZ2lzdGVyKGFbY10sYik7ZWxzZSBmb3IodmFyIGU9YS5zcGxpdCgiLiIpLGY9VGIsZyxqLGM9MCxkPWUubGVuZ3RoO2M8ZDtjKyspe2c9KGo9LTEhPT1lW2NdLmluZGV4T2YoIigpIikpP2VbY10ucmVwbGFjZSgiKCkiLCIiKTplW2NdO3ZhciBpO2E6e2k9MDtmb3IodmFyIG49Zi5sZW5ndGg7aTxuO2krKylpZihmW2ldLm5hbWU9PT1nKXtpPWZbaV07YnJlYWsgYX1pPW51bGx9aXx8KGk9e25hbWU6Zyx2YWw6e30sbWV0aG9kRXh0OltdLHByb3BFeHQ6W119LGYucHVzaChpKSk7Yz09PWQtMT9pLnZhbD1iOmY9aj9pLm1ldGhvZEV4dDppLnByb3BFeHR9fTtyLnJlZ2lzdGVyUGx1cmFsPXM9ZnVuY3Rpb24oYSxiLGMpe3IucmVnaXN0ZXIoYSxjKTtyLnJlZ2lzdGVyKGIsZnVuY3Rpb24oKXt2YXIgYT1jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYT09PXRoaXM/dGhpczphIGluc3RhbmNlb2Ygcj9hLmxlbmd0aD9oLmlzQXJyYXkoYVswXSk/bmV3IHIoYS5jb250ZXh0LAphWzBdKTphWzBdOms6YX0pfTtwKCJ0YWJsZXMoKSIsZnVuY3Rpb24oYSl7dmFyIGI7aWYoYSl7Yj1yO3ZhciBjPXRoaXMuY29udGV4dDtpZigibnVtYmVyIj09PXR5cGVvZiBhKWE9W2NbYV1dO2Vsc2UgdmFyIGQ9aC5tYXAoYyxmdW5jdGlvbihhKXtyZXR1cm4gYS5uVGFibGV9KSxhPWgoZCkuZmlsdGVyKGEpLm1hcChmdW5jdGlvbigpe3ZhciBhPWguaW5BcnJheSh0aGlzLGQpO3JldHVybiBjW2FdfSkudG9BcnJheSgpO2I9bmV3IGIoYSl9ZWxzZSBiPXRoaXM7cmV0dXJuIGJ9KTtwKCJ0YWJsZSgpIixmdW5jdGlvbihhKXt2YXIgYT10aGlzLnRhYmxlcyhhKSxiPWEuY29udGV4dDtyZXR1cm4gYi5sZW5ndGg/bmV3IHIoYlswXSk6YX0pO3MoInRhYmxlcygpLm5vZGVzKCkiLCJ0YWJsZSgpLm5vZGUoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5UYWJsZX0sMSl9KTtzKCJ0YWJsZXMoKS5ib2R5KCkiLCJ0YWJsZSgpLmJvZHkoKSIsCmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhKXtyZXR1cm4gYS5uVEJvZHl9LDEpfSk7cygidGFibGVzKCkuaGVhZGVyKCkiLCJ0YWJsZSgpLmhlYWRlcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRIZWFkfSwxKX0pO3MoInRhYmxlcygpLmZvb3RlcigpIiwidGFibGUoKS5mb290ZXIoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5URm9vdH0sMSl9KTtzKCJ0YWJsZXMoKS5jb250YWluZXJzKCkiLCJ0YWJsZSgpLmNvbnRhaW5lcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRhYmxlV3JhcHBlcn0sMSl9KTtwKCJkcmF3KCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7InBhZ2UiPT09CmE/TyhiKTooInN0cmluZyI9PT10eXBlb2YgYSYmKGE9ImZ1bGwtaG9sZCI9PT1hPyExOiEwKSxUKGIsITE9PT1hKSl9KX0pO3AoInBhZ2UoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1rP3RoaXMucGFnZS5pbmZvKCkucGFnZTp0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7VGEoYixhKX0pfSk7cCgicGFnZS5pbmZvKCkiLGZ1bmN0aW9uKCl7aWYoMD09PXRoaXMuY29udGV4dC5sZW5ndGgpcmV0dXJuIGs7dmFyIGE9dGhpcy5jb250ZXh0WzBdLGI9YS5faURpc3BsYXlTdGFydCxjPWEub0ZlYXR1cmVzLmJQYWdpbmF0ZT9hLl9pRGlzcGxheUxlbmd0aDotMSxkPWEuZm5SZWNvcmRzRGlzcGxheSgpLGU9LTE9PT1jO3JldHVybntwYWdlOmU/MDpNYXRoLmZsb29yKGIvYykscGFnZXM6ZT8xOk1hdGguY2VpbChkL2MpLHN0YXJ0OmIsZW5kOmEuZm5EaXNwbGF5RW5kKCksbGVuZ3RoOmMscmVjb3Jkc1RvdGFsOmEuZm5SZWNvcmRzVG90YWwoKSxyZWNvcmRzRGlzcGxheTpkLApzZXJ2ZXJTaWRlOiJzc3AiPT09eShhKX19KTtwKCJwYWdlLmxlbigpIixmdW5jdGlvbihhKXtyZXR1cm4gYT09PWs/MCE9PXRoaXMuY29udGV4dC5sZW5ndGg/dGhpcy5jb250ZXh0WzBdLl9pRGlzcGxheUxlbmd0aDprOnRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXtSYShiLGEpfSl9KTt2YXIgVWI9ZnVuY3Rpb24oYSxiLGMpe2lmKGMpe3ZhciBkPW5ldyByKGEpO2Qub25lKCJkcmF3IixmdW5jdGlvbigpe2MoZC5hamF4Lmpzb24oKSl9KX1pZigic3NwIj09eShhKSlUKGEsYik7ZWxzZXtDKGEsITApO3ZhciBlPWEuanFYSFI7ZSYmNCE9PWUucmVhZHlTdGF0ZSYmZS5hYm9ydCgpO3JhKGEsW10sZnVuY3Rpb24oYyl7bmEoYSk7Zm9yKHZhciBjPXNhKGEsYyksZD0wLGU9Yy5sZW5ndGg7ZDxlO2QrKylOKGEsY1tkXSk7VChhLGIpO0MoYSwhMSl9KX19O3AoImFqYXguanNvbigpIixmdW5jdGlvbigpe3ZhciBhPXRoaXMuY29udGV4dDtpZigwPGEubGVuZ3RoKXJldHVybiBhWzBdLmpzb259KTsKcCgiYWpheC5wYXJhbXMoKSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRleHQ7aWYoMDxhLmxlbmd0aClyZXR1cm4gYVswXS5vQWpheERhdGF9KTtwKCJhamF4LnJlbG9hZCgpIixmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYyl7VWIoYywhMT09PWIsYSl9KX0pO3AoImFqYXgudXJsKCkiLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY29udGV4dDtpZihhPT09ayl7aWYoMD09PWIubGVuZ3RoKXJldHVybiBrO2I9YlswXTtyZXR1cm4gYi5hamF4P2guaXNQbGFpbk9iamVjdChiLmFqYXgpP2IuYWpheC51cmw6Yi5hamF4OmIuc0FqYXhTb3VyY2V9cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXtoLmlzUGxhaW5PYmplY3QoYi5hamF4KT9iLmFqYXgudXJsPWE6Yi5hamF4PWF9KX0pO3AoImFqYXgudXJsKCkubG9hZCgpIixmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYyl7VWIoYywKITE9PT1iLGEpfSl9KTt2YXIgJGE9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1bXSxnLGosaSxuLGwsbTtpPXR5cGVvZiBiO2lmKCFifHwic3RyaW5nIj09PWl8fCJmdW5jdGlvbiI9PT1pfHxiLmxlbmd0aD09PWspYj1bYl07aT0wO2ZvcihuPWIubGVuZ3RoO2k8bjtpKyspe2o9YltpXSYmYltpXS5zcGxpdD9iW2ldLnNwbGl0KCIsIik6W2JbaV1dO2w9MDtmb3IobT1qLmxlbmd0aDtsPG07bCsrKShnPWMoInN0cmluZyI9PT10eXBlb2YgaltsXT9oLnRyaW0oaltsXSk6altsXSkpJiZnLmxlbmd0aCYmKGY9Zi5jb25jYXQoZykpfWE9di5zZWxlY3RvclthXTtpZihhLmxlbmd0aCl7aT0wO2ZvcihuPWEubGVuZ3RoO2k8bjtpKyspZj1hW2ldKGQsZSxmKX1yZXR1cm4gcGEoZil9LGFiPWZ1bmN0aW9uKGEpe2F8fChhPXt9KTthLmZpbHRlciYmYS5zZWFyY2g9PT1rJiYoYS5zZWFyY2g9YS5maWx0ZXIpO3JldHVybiBoLmV4dGVuZCh7c2VhcmNoOiJub25lIixvcmRlcjoiY3VycmVudCIsCnBhZ2U6ImFsbCJ9LGEpfSxiYj1mdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoO2I8YztiKyspaWYoMDxhW2JdLmxlbmd0aClyZXR1cm4gYVswXT1hW2JdLGFbMF0ubGVuZ3RoPTEsYS5sZW5ndGg9MSxhLmNvbnRleHQ9W2EuY29udGV4dFtiXV0sYTthLmxlbmd0aD0wO3JldHVybiBhfSxCYT1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPVtdLGc9YS5haURpc3BsYXk7Yz1hLmFpRGlzcGxheU1hc3Rlcjt2YXIgaj1iLnNlYXJjaDtkPWIub3JkZXI7ZT1iLnBhZ2U7aWYoInNzcCI9PXkoYSkpcmV0dXJuInJlbW92ZWQiPT09aj9bXTpXKDAsYy5sZW5ndGgpO2lmKCJjdXJyZW50Ij09ZSl7Yz1hLl9pRGlzcGxheVN0YXJ0O2ZvcihkPWEuZm5EaXNwbGF5RW5kKCk7YzxkO2MrKylmLnB1c2goZ1tjXSl9ZWxzZSBpZigiY3VycmVudCI9PWR8fCJhcHBsaWVkIj09ZClmPSJub25lIj09aj9jLnNsaWNlKCk6ImFwcGxpZWQiPT1qP2cuc2xpY2UoKTpoLm1hcChjLGZ1bmN0aW9uKGEpe3JldHVybi0xPT09CmguaW5BcnJheShhLGcpP2E6bnVsbH0pO2Vsc2UgaWYoImluZGV4Ij09ZHx8Im9yaWdpbmFsIj09ZCl7Yz0wO2ZvcihkPWEuYW9EYXRhLmxlbmd0aDtjPGQ7YysrKSJub25lIj09aj9mLnB1c2goYyk6KGU9aC5pbkFycmF5KGMsZyksKC0xPT09ZSYmInJlbW92ZWQiPT1qfHwwPD1lJiYiYXBwbGllZCI9PWopJiZmLnB1c2goYykpfXJldHVybiBmfTtwKCJyb3dzKCkiLGZ1bmN0aW9uKGEsYil7YT09PWs/YT0iIjpoLmlzUGxhaW5PYmplY3QoYSkmJihiPWEsYT0iIik7dmFyIGI9YWIoYiksYz10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYyl7dmFyIGU9YjtyZXR1cm4gJGEoInJvdyIsYSxmdW5jdGlvbihhKXt2YXIgYj1QYihhKTtpZihiIT09bnVsbCYmIWUpcmV0dXJuW2JdO3ZhciBqPUJhKGMsZSk7aWYoYiE9PW51bGwmJmguaW5BcnJheShiLGopIT09LTEpcmV0dXJuW2JdO2lmKCFhKXJldHVybiBqO2lmKHR5cGVvZiBhPT09ImZ1bmN0aW9uIilyZXR1cm4gaC5tYXAoaixmdW5jdGlvbihiKXt2YXIgZT0KYy5hb0RhdGFbYl07cmV0dXJuIGEoYixlLl9hRGF0YSxlLm5Ucik/YjpudWxsfSk7Yj1TYihoYShjLmFvRGF0YSxqLCJuVHIiKSk7aWYoYS5ub2RlTmFtZSl7aWYoYS5fRFRfUm93SW5kZXghPT1rKXJldHVyblthLl9EVF9Sb3dJbmRleF07aWYoYS5fRFRfQ2VsbEluZGV4KXJldHVyblthLl9EVF9DZWxsSW5kZXgucm93XTtiPWgoYSkuY2xvc2VzdCgiKltkYXRhLWR0LXJvd10iKTtyZXR1cm4gYi5sZW5ndGg/W2IuZGF0YSgiZHQtcm93IildOltdfWlmKHR5cGVvZiBhPT09InN0cmluZyImJmEuY2hhckF0KDApPT09IiMiKXtqPWMuYUlkc1thLnJlcGxhY2UoL14jLywiIildO2lmKGohPT1rKXJldHVybltqLmlkeF19cmV0dXJuIGgoYikuZmlsdGVyKGEpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLl9EVF9Sb3dJbmRleH0pLnRvQXJyYXkoKX0sYyxlKX0sMSk7Yy5zZWxlY3Rvci5yb3dzPWE7Yy5zZWxlY3Rvci5vcHRzPWI7cmV0dXJuIGN9KTtwKCJyb3dzKCkubm9kZXMoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IiwKZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5hb0RhdGFbYl0ublRyfHxrfSwxKX0pO3AoInJvd3MoKS5kYXRhKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoITAsInJvd3MiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGhhKGEuYW9EYXRhLGIsIl9hRGF0YSIpfSwxKX0pO3MoInJvd3MoKS5jYWNoZSgpIiwicm93KCkuY2FjaGUoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInJvdyIsZnVuY3Rpb24oYixjKXt2YXIgZD1iLmFvRGF0YVtjXTtyZXR1cm4ic2VhcmNoIj09PWE/ZC5fYUZpbHRlckRhdGE6ZC5fYVNvcnREYXRhfSwxKX0pO3MoInJvd3MoKS5pbnZhbGlkYXRlKCkiLCJyb3coKS5pbnZhbGlkYXRlKCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJyb3ciLGZ1bmN0aW9uKGIsYyl7Y2EoYixjLGEpfSl9KTtzKCJyb3dzKCkuaW5kZXhlcygpIiwicm93KCkuaW5kZXgoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IiwKZnVuY3Rpb24oYSxiKXtyZXR1cm4gYn0sMSl9KTtzKCJyb3dzKCkuaWRzKCkiLCJyb3coKS5pZCgpIixmdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz10aGlzLmNvbnRleHQsZD0wLGU9Yy5sZW5ndGg7ZDxlO2QrKylmb3IodmFyIGY9MCxnPXRoaXNbZF0ubGVuZ3RoO2Y8ZztmKyspe3ZhciBoPWNbZF0ucm93SWRGbihjW2RdLmFvRGF0YVt0aGlzW2RdW2ZdXS5fYURhdGEpO2IucHVzaCgoITA9PT1hPyIjIjoiIikraCl9cmV0dXJuIG5ldyByKGMsYil9KTtzKCJyb3dzKCkucmVtb3ZlKCkiLCJyb3coKS5yZW1vdmUoKSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuaXRlcmF0b3IoInJvdyIsZnVuY3Rpb24oYixjLGQpe3ZhciBlPWIuYW9EYXRhLGY9ZVtjXSxnLGgsaSxuLGw7ZS5zcGxpY2UoYywxKTtnPTA7Zm9yKGg9ZS5sZW5ndGg7ZzxoO2crKylpZihpPWVbZ10sbD1pLmFuQ2VsbHMsbnVsbCE9PWkublRyJiYoaS5uVHIuX0RUX1Jvd0luZGV4PWcpLG51bGwhPT1sKXtpPTA7Zm9yKG49CmwubGVuZ3RoO2k8bjtpKyspbFtpXS5fRFRfQ2VsbEluZGV4LnJvdz1nfW9hKGIuYWlEaXNwbGF5TWFzdGVyLGMpO29hKGIuYWlEaXNwbGF5LGMpO29hKGFbZF0sYywhMSk7U2EoYik7Yz1iLnJvd0lkRm4oZi5fYURhdGEpO2MhPT1rJiZkZWxldGUgYi5hSWRzW2NdfSk7dGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe2Zvcih2YXIgYz0wLGQ9YS5hb0RhdGEubGVuZ3RoO2M8ZDtjKyspYS5hb0RhdGFbY10uaWR4PWN9KTtyZXR1cm4gdGhpc30pO3AoInJvd3MuYWRkKCkiLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXt2YXIgYyxmLGcsaD1bXTtmPTA7Zm9yKGc9YS5sZW5ndGg7ZjxnO2YrKyljPWFbZl0sYy5ub2RlTmFtZSYmIlRSIj09PWMubm9kZU5hbWUudG9VcHBlckNhc2UoKT9oLnB1c2gobWEoYixjKVswXSk6aC5wdXNoKE4oYixjKSk7cmV0dXJuIGh9LDEpLGM9dGhpcy5yb3dzKC0xKTtjLnBvcCgpO2gubWVyZ2UoYyxiKTsKcmV0dXJuIGN9KTtwKCJyb3coKSIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYmIodGhpcy5yb3dzKGEsYikpfSk7cCgicm93KCkuZGF0YSgpIixmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbnRleHQ7aWYoYT09PWspcmV0dXJuIGIubGVuZ3RoJiZ0aGlzLmxlbmd0aD9iWzBdLmFvRGF0YVt0aGlzWzBdXS5fYURhdGE6aztiWzBdLmFvRGF0YVt0aGlzWzBdXS5fYURhdGE9YTtjYShiWzBdLHRoaXNbMF0sImRhdGEiKTtyZXR1cm4gdGhpc30pO3AoInJvdygpLm5vZGUoKSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRleHQ7cmV0dXJuIGEubGVuZ3RoJiZ0aGlzLmxlbmd0aD9hWzBdLmFvRGF0YVt0aGlzWzBdXS5uVHJ8fG51bGw6bnVsbH0pO3AoInJvdy5hZGQoKSIsZnVuY3Rpb24oYSl7YSBpbnN0YW5jZW9mIGgmJmEubGVuZ3RoJiYoYT1hWzBdKTt2YXIgYj10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7cmV0dXJuIGEubm9kZU5hbWUmJiJUUiI9PT1hLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk/Cm1hKGIsYSlbMF06TihiLGEpfSk7cmV0dXJuIHRoaXMucm93KGJbMF0pfSk7dmFyIGNiPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5jb250ZXh0O2lmKGMubGVuZ3RoJiYoYz1jWzBdLmFvRGF0YVtiIT09az9iOmFbMF1dKSYmYy5fZGV0YWlscyljLl9kZXRhaWxzLnJlbW92ZSgpLGMuX2RldGFpbHNTaG93PWssYy5fZGV0YWlscz1rfSxWYj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuY29udGV4dDtpZihjLmxlbmd0aCYmYS5sZW5ndGgpe3ZhciBkPWNbMF0uYW9EYXRhW2FbMF1dO2lmKGQuX2RldGFpbHMpeyhkLl9kZXRhaWxzU2hvdz1iKT9kLl9kZXRhaWxzLmluc2VydEFmdGVyKGQublRyKTpkLl9kZXRhaWxzLmRldGFjaCgpO3ZhciBlPWNbMF0sZj1uZXcgcihlKSxnPWUuYW9EYXRhO2Yub2ZmKCJkcmF3LmR0LkRUX2RldGFpbHMgY29sdW1uLXZpc2liaWxpdHkuZHQuRFRfZGV0YWlscyBkZXN0cm95LmR0LkRUX2RldGFpbHMiKTswPEcoZywiX2RldGFpbHMiKS5sZW5ndGgmJihmLm9uKCJkcmF3LmR0LkRUX2RldGFpbHMiLApmdW5jdGlvbihhLGIpe2U9PT1iJiZmLnJvd3Moe3BhZ2U6ImN1cnJlbnQifSkuZXEoMCkuZWFjaChmdW5jdGlvbihhKXthPWdbYV07YS5fZGV0YWlsc1Nob3cmJmEuX2RldGFpbHMuaW5zZXJ0QWZ0ZXIoYS5uVHIpfSl9KSxmLm9uKCJjb2x1bW4tdmlzaWJpbGl0eS5kdC5EVF9kZXRhaWxzIixmdW5jdGlvbihhLGIpe2lmKGU9PT1iKWZvcih2YXIgYyxkPWFhKGIpLGY9MCxoPWcubGVuZ3RoO2Y8aDtmKyspYz1nW2ZdLGMuX2RldGFpbHMmJmMuX2RldGFpbHMuY2hpbGRyZW4oInRkW2NvbHNwYW5dIikuYXR0cigiY29sc3BhbiIsZCl9KSxmLm9uKCJkZXN0cm95LmR0LkRUX2RldGFpbHMiLGZ1bmN0aW9uKGEsYil7aWYoZT09PWIpZm9yKHZhciBjPTAsZD1nLmxlbmd0aDtjPGQ7YysrKWdbY10uX2RldGFpbHMmJmNiKGYsYyl9KSl9fX07cCgicm93KCkuY2hpbGQoKSIsZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNvbnRleHQ7aWYoYT09PWspcmV0dXJuIGMubGVuZ3RoJiZ0aGlzLmxlbmd0aD8KY1swXS5hb0RhdGFbdGhpc1swXV0uX2RldGFpbHM6aztpZighMD09PWEpdGhpcy5jaGlsZC5zaG93KCk7ZWxzZSBpZighMT09PWEpY2IodGhpcyk7ZWxzZSBpZihjLmxlbmd0aCYmdGhpcy5sZW5ndGgpe3ZhciBkPWNbMF0sYz1jWzBdLmFvRGF0YVt0aGlzWzBdXSxlPVtdLGY9ZnVuY3Rpb24oYSxiKXtpZihoLmlzQXJyYXkoYSl8fGEgaW5zdGFuY2VvZiBoKWZvcih2YXIgYz0wLGs9YS5sZW5ndGg7YzxrO2MrKylmKGFbY10sYik7ZWxzZSBhLm5vZGVOYW1lJiYidHIiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP2UucHVzaChhKTooYz1oKCI8dHI+PHRkLz48L3RyPiIpLmFkZENsYXNzKGIpLGgoInRkIixjKS5hZGRDbGFzcyhiKS5odG1sKGEpWzBdLmNvbFNwYW49YWEoZCksZS5wdXNoKGNbMF0pKX07ZihhLGIpO2MuX2RldGFpbHMmJmMuX2RldGFpbHMucmVtb3ZlKCk7Yy5fZGV0YWlscz1oKGUpO2MuX2RldGFpbHNTaG93JiZjLl9kZXRhaWxzLmluc2VydEFmdGVyKGMublRyKX1yZXR1cm4gdGhpc30pOwpwKFsicm93KCkuY2hpbGQuc2hvdygpIiwicm93KCkuY2hpbGQoKS5zaG93KCkiXSxmdW5jdGlvbigpe1ZiKHRoaXMsITApO3JldHVybiB0aGlzfSk7cChbInJvdygpLmNoaWxkLmhpZGUoKSIsInJvdygpLmNoaWxkKCkuaGlkZSgpIl0sZnVuY3Rpb24oKXtWYih0aGlzLCExKTtyZXR1cm4gdGhpc30pO3AoWyJyb3coKS5jaGlsZC5yZW1vdmUoKSIsInJvdygpLmNoaWxkKCkucmVtb3ZlKCkiXSxmdW5jdGlvbigpe2NiKHRoaXMpO3JldHVybiB0aGlzfSk7cCgicm93KCkuY2hpbGQuaXNTaG93bigpIixmdW5jdGlvbigpe3ZhciBhPXRoaXMuY29udGV4dDtyZXR1cm4gYS5sZW5ndGgmJnRoaXMubGVuZ3RoP2FbMF0uYW9EYXRhW3RoaXNbMF1dLl9kZXRhaWxzU2hvd3x8ITE6ITF9KTt2YXIgZWM9L14oLispOihuYW1lfHZpc0lkeHx2aXNpYmxlKSQvLFdiPWZ1bmN0aW9uKGEsYixjLGQsZSl7Zm9yKHZhciBjPVtdLGQ9MCxmPWUubGVuZ3RoO2Q8ZjtkKyspYy5wdXNoKEIoYSxlW2RdLGIpKTsKcmV0dXJuIGN9O3AoImNvbHVtbnMoKSIsZnVuY3Rpb24oYSxiKXthPT09az9hPSIiOmguaXNQbGFpbk9iamVjdChhKSYmKGI9YSxhPSIiKTt2YXIgYj1hYihiKSxjPXRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihjKXt2YXIgZT1hLGY9YixnPWMuYW9Db2x1bW5zLGo9RyhnLCJzTmFtZSIpLGk9RyhnLCJuVGgiKTtyZXR1cm4gJGEoImNvbHVtbiIsZSxmdW5jdGlvbihhKXt2YXIgYj1QYihhKTtpZihhPT09IiIpcmV0dXJuIFcoZy5sZW5ndGgpO2lmKGIhPT1udWxsKXJldHVybltiPj0wP2I6Zy5sZW5ndGgrYl07aWYodHlwZW9mIGE9PT0iZnVuY3Rpb24iKXt2YXIgZT1CYShjLGYpO3JldHVybiBoLm1hcChnLGZ1bmN0aW9uKGIsZil7cmV0dXJuIGEoZixXYihjLGYsMCwwLGUpLGlbZl0pP2Y6bnVsbH0pfXZhciBrPXR5cGVvZiBhPT09InN0cmluZyI/YS5tYXRjaChlYyk6IiI7aWYoaylzd2l0Y2goa1syXSl7Y2FzZSAidmlzSWR4IjpjYXNlICJ2aXNpYmxlIjpiPXBhcnNlSW50KGtbMV0sCjEwKTtpZihiPDApe3ZhciBtPWgubWFwKGcsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5iVmlzaWJsZT9iOm51bGx9KTtyZXR1cm5bbVttLmxlbmd0aCtiXV19cmV0dXJuW1ooYyxiKV07Y2FzZSAibmFtZSI6cmV0dXJuIGgubWFwKGosZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWtbMV0/YjpudWxsfSk7ZGVmYXVsdDpyZXR1cm5bXX1pZihhLm5vZGVOYW1lJiZhLl9EVF9DZWxsSW5kZXgpcmV0dXJuW2EuX0RUX0NlbGxJbmRleC5jb2x1bW5dO2I9aChpKS5maWx0ZXIoYSkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGguaW5BcnJheSh0aGlzLGkpfSkudG9BcnJheSgpO2lmKGIubGVuZ3RofHwhYS5ub2RlTmFtZSlyZXR1cm4gYjtiPWgoYSkuY2xvc2VzdCgiKltkYXRhLWR0LWNvbHVtbl0iKTtyZXR1cm4gYi5sZW5ndGg/W2IuZGF0YSgiZHQtY29sdW1uIildOltdfSxjLGYpfSwxKTtjLnNlbGVjdG9yLmNvbHM9YTtjLnNlbGVjdG9yLm9wdHM9YjtyZXR1cm4gY30pO3MoImNvbHVtbnMoKS5oZWFkZXIoKSIsCiJjb2x1bW4oKS5oZWFkZXIoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uIixmdW5jdGlvbihhLGIpe3JldHVybiBhLmFvQ29sdW1uc1tiXS5uVGh9LDEpfSk7cygiY29sdW1ucygpLmZvb3RlcigpIiwiY29sdW1uKCkuZm9vdGVyKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbiIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5hb0NvbHVtbnNbYl0ublRmfSwxKX0pO3MoImNvbHVtbnMoKS5kYXRhKCkiLCJjb2x1bW4oKS5kYXRhKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbi1yb3dzIixXYiwxKX0pO3MoImNvbHVtbnMoKS5kYXRhU3JjKCkiLCJjb2x1bW4oKS5kYXRhU3JjKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbiIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5hb0NvbHVtbnNbYl0ubURhdGF9LDEpfSk7cygiY29sdW1ucygpLmNhY2hlKCkiLCJjb2x1bW4oKS5jYWNoZSgpIiwKZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbi1yb3dzIixmdW5jdGlvbihiLGMsZCxlLGYpe3JldHVybiBoYShiLmFvRGF0YSxmLCJzZWFyY2giPT09YT8iX2FGaWx0ZXJEYXRhIjoiX2FTb3J0RGF0YSIsYyl9LDEpfSk7cygiY29sdW1ucygpLm5vZGVzKCkiLCJjb2x1bW4oKS5ub2RlcygpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4tcm93cyIsZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gaGEoYS5hb0RhdGEsZSwiYW5DZWxscyIsYil9LDEpfSk7cygiY29sdW1ucygpLnZpc2libGUoKSIsImNvbHVtbigpLnZpc2libGUoKSIsZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKGIsYyl7aWYoYT09PWspcmV0dXJuIGIuYW9Db2x1bW5zW2NdLmJWaXNpYmxlO3ZhciBmPWIuYW9Db2x1bW5zLGc9ZltjXSxqPWIuYW9EYXRhLGksbixsO2lmKGEhPT1rJiZnLmJWaXNpYmxlIT09YSl7aWYoYSl7dmFyIG09CmguaW5BcnJheSghMCxHKGYsImJWaXNpYmxlIiksYysxKTtpPTA7Zm9yKG49ai5sZW5ndGg7aTxuO2krKylsPWpbaV0ublRyLGY9altpXS5hbkNlbGxzLGwmJmwuaW5zZXJ0QmVmb3JlKGZbY10sZlttXXx8bnVsbCl9ZWxzZSBoKEcoYi5hb0RhdGEsImFuQ2VsbHMiLGMpKS5kZXRhY2goKTtnLmJWaXNpYmxlPWE7ZWEoYixiLmFvSGVhZGVyKTtlYShiLGIuYW9Gb290ZXIpO3dhKGIpfX0pO2EhPT1rJiYodGhpcy5pdGVyYXRvcigiY29sdW1uIixmdW5jdGlvbihjLGUpe3UoYyxudWxsLCJjb2x1bW4tdmlzaWJpbGl0eSIsW2MsZSxhLGJdKX0pLChiPT09a3x8YikmJnRoaXMuY29sdW1ucy5hZGp1c3QoKSk7cmV0dXJuIGN9KTtzKCJjb2x1bW5zKCkuaW5kZXhlcygpIiwiY29sdW1uKCkuaW5kZXgoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbiIsZnVuY3Rpb24oYixjKXtyZXR1cm4idmlzaWJsZSI9PT1hPyQoYixjKTpjfSwxKX0pO3AoImNvbHVtbnMuYWRqdXN0KCkiLApmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7WShhKX0sMSl9KTtwKCJjb2x1bW4uaW5kZXgoKSIsZnVuY3Rpb24oYSxiKXtpZigwIT09dGhpcy5jb250ZXh0Lmxlbmd0aCl7dmFyIGM9dGhpcy5jb250ZXh0WzBdO2lmKCJmcm9tVmlzaWJsZSI9PT1hfHwidG9EYXRhIj09PWEpcmV0dXJuIFooYyxiKTtpZigiZnJvbURhdGEiPT09YXx8InRvVmlzaWJsZSI9PT1hKXJldHVybiAkKGMsYil9fSk7cCgiY29sdW1uKCkiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGJiKHRoaXMuY29sdW1ucyhhLGIpKX0pO3AoImNlbGxzKCkiLGZ1bmN0aW9uKGEsYixjKXtoLmlzUGxhaW5PYmplY3QoYSkmJihhLnJvdz09PWs/KGM9YSxhPW51bGwpOihjPWIsYj1udWxsKSk7aC5pc1BsYWluT2JqZWN0KGIpJiYoYz1iLGI9bnVsbCk7aWYobnVsbD09PWJ8fGI9PT1rKXJldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7dmFyIGQ9YSxlPWFiKGMpLGY9CmIuYW9EYXRhLGc9QmEoYixlKSxqPVNiKGhhKGYsZywiYW5DZWxscyIpKSxpPWgoW10uY29uY2F0LmFwcGx5KFtdLGopKSxsLG49Yi5hb0NvbHVtbnMubGVuZ3RoLG0scCxyLHUsdixzO3JldHVybiAkYSgiY2VsbCIsZCxmdW5jdGlvbihhKXt2YXIgYz10eXBlb2YgYT09PSJmdW5jdGlvbiI7aWYoYT09PW51bGx8fGE9PT1rfHxjKXttPVtdO3A9MDtmb3Iocj1nLmxlbmd0aDtwPHI7cCsrKXtsPWdbcF07Zm9yKHU9MDt1PG47dSsrKXt2PXtyb3c6bCxjb2x1bW46dX07aWYoYyl7cz1mW2xdO2EodixCKGIsbCx1KSxzLmFuQ2VsbHM/cy5hbkNlbGxzW3VdOm51bGwpJiZtLnB1c2godil9ZWxzZSBtLnB1c2godil9fXJldHVybiBtfWlmKGguaXNQbGFpbk9iamVjdChhKSlyZXR1cm5bYV07Yz1pLmZpbHRlcihhKS5tYXAoZnVuY3Rpb24oYSxiKXtyZXR1cm57cm93OmIuX0RUX0NlbGxJbmRleC5yb3csY29sdW1uOmIuX0RUX0NlbGxJbmRleC5jb2x1bW59fSkudG9BcnJheSgpO2lmKGMubGVuZ3RofHwKIWEubm9kZU5hbWUpcmV0dXJuIGM7cz1oKGEpLmNsb3Nlc3QoIipbZGF0YS1kdC1yb3ddIik7cmV0dXJuIHMubGVuZ3RoP1t7cm93OnMuZGF0YSgiZHQtcm93IiksY29sdW1uOnMuZGF0YSgiZHQtY29sdW1uIil9XTpbXX0sYixlKX0pO3ZhciBkPXRoaXMuY29sdW1ucyhiLGMpLGU9dGhpcy5yb3dzKGEsYyksZixnLGosaSxuLGw9dGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEsYil7Zj1bXTtnPTA7Zm9yKGo9ZVtiXS5sZW5ndGg7ZzxqO2crKyl7aT0wO2ZvcihuPWRbYl0ubGVuZ3RoO2k8bjtpKyspZi5wdXNoKHtyb3c6ZVtiXVtnXSxjb2x1bW46ZFtiXVtpXX0pfXJldHVybiBmfSwxKTtoLmV4dGVuZChsLnNlbGVjdG9yLHtjb2xzOmIscm93czphLG9wdHM6Y30pO3JldHVybiBsfSk7cygiY2VsbHMoKS5ub2RlcygpIiwiY2VsbCgpLm5vZGUoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY2VsbCIsZnVuY3Rpb24oYSxiLGMpe3JldHVybihhPWEuYW9EYXRhW2JdKSYmCmEuYW5DZWxscz9hLmFuQ2VsbHNbY106a30sMSl9KTtwKCJjZWxscygpLmRhdGEoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY2VsbCIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBCKGEsYixjKX0sMSl9KTtzKCJjZWxscygpLmNhY2hlKCkiLCJjZWxsKCkuY2FjaGUoKSIsZnVuY3Rpb24oYSl7YT0ic2VhcmNoIj09PWE/Il9hRmlsdGVyRGF0YSI6Il9hU29ydERhdGEiO3JldHVybiB0aGlzLml0ZXJhdG9yKCJjZWxsIixmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGIuYW9EYXRhW2NdW2FdW2RdfSwxKX0pO3MoImNlbGxzKCkucmVuZGVyKCkiLCJjZWxsKCkucmVuZGVyKCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjZWxsIixmdW5jdGlvbihiLGMsZCl7cmV0dXJuIEIoYixjLGQsYSl9LDEpfSk7cygiY2VsbHMoKS5pbmRleGVzKCkiLCJjZWxsKCkuaW5kZXgoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY2VsbCIsZnVuY3Rpb24oYSwKYixjKXtyZXR1cm57cm93OmIsY29sdW1uOmMsY29sdW1uVmlzaWJsZTokKGEsYyl9fSwxKX0pO3MoImNlbGxzKCkuaW52YWxpZGF0ZSgpIiwiY2VsbCgpLmludmFsaWRhdGUoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNlbGwiLGZ1bmN0aW9uKGIsYyxkKXtjYShiLGMsYSxkKX0pfSk7cCgiY2VsbCgpIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGJiKHRoaXMuY2VsbHMoYSxiLGMpKX0pO3AoImNlbGwoKS5kYXRhKCkiLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY29udGV4dCxjPXRoaXNbMF07aWYoYT09PWspcmV0dXJuIGIubGVuZ3RoJiZjLmxlbmd0aD9CKGJbMF0sY1swXS5yb3csY1swXS5jb2x1bW4pOms7amIoYlswXSxjWzBdLnJvdyxjWzBdLmNvbHVtbixhKTtjYShiWzBdLGNbMF0ucm93LCJkYXRhIixjWzBdLmNvbHVtbik7cmV0dXJuIHRoaXN9KTtwKCJvcmRlcigpIixmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuY29udGV4dDtpZihhPT09aylyZXR1cm4gMCE9PQpjLmxlbmd0aD9jWzBdLmFhU29ydGluZzprOyJudW1iZXIiPT09dHlwZW9mIGE/YT1bW2EsYl1dOmEubGVuZ3RoJiYhaC5pc0FycmF5KGFbMF0pJiYoYT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKTtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGIpe2IuYWFTb3J0aW5nPWEuc2xpY2UoKX0pfSk7cCgib3JkZXIubGlzdGVuZXIoKSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oZCl7TWEoZCxhLGIsYyl9KX0pO3AoIm9yZGVyLmZpeGVkKCkiLGZ1bmN0aW9uKGEpe2lmKCFhKXt2YXIgYj10aGlzLmNvbnRleHQsYj1iLmxlbmd0aD9iWzBdLmFhU29ydGluZ0ZpeGVkOms7cmV0dXJuIGguaXNBcnJheShiKT97cHJlOmJ9OmJ9cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXtiLmFhU29ydGluZ0ZpeGVkPWguZXh0ZW5kKCEwLHt9LGEpfSl9KTtwKFsiY29sdW1ucygpLm9yZGVyKCkiLAoiY29sdW1uKCkub3JkZXIoKSJdLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihjLGQpe3ZhciBlPVtdO2guZWFjaChiW2RdLGZ1bmN0aW9uKGIsYyl7ZS5wdXNoKFtjLGFdKX0pO2MuYWFTb3J0aW5nPWV9KX0pO3AoInNlYXJjaCgpIixmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT10aGlzLmNvbnRleHQ7cmV0dXJuIGE9PT1rPzAhPT1lLmxlbmd0aD9lWzBdLm9QcmV2aW91c1NlYXJjaC5zU2VhcmNoOms6dGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGUpe2Uub0ZlYXR1cmVzLmJGaWx0ZXImJmZhKGUsaC5leHRlbmQoe30sZS5vUHJldmlvdXNTZWFyY2gse3NTZWFyY2g6YSsiIixiUmVnZXg6bnVsbD09PWI/ITE6YixiU21hcnQ6bnVsbD09PWM/ITA6YyxiQ2FzZUluc2Vuc2l0aXZlOm51bGw9PT1kPyEwOmR9KSwxKX0pfSk7cygiY29sdW1ucygpLnNlYXJjaCgpIiwiY29sdW1uKCkuc2VhcmNoKCkiLGZ1bmN0aW9uKGEsCmIsYyxkKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uIixmdW5jdGlvbihlLGYpe3ZhciBnPWUuYW9QcmVTZWFyY2hDb2xzO2lmKGE9PT1rKXJldHVybiBnW2ZdLnNTZWFyY2g7ZS5vRmVhdHVyZXMuYkZpbHRlciYmKGguZXh0ZW5kKGdbZl0se3NTZWFyY2g6YSsiIixiUmVnZXg6bnVsbD09PWI/ITE6YixiU21hcnQ6bnVsbD09PWM/ITA6YyxiQ2FzZUluc2Vuc2l0aXZlOm51bGw9PT1kPyEwOmR9KSxmYShlLGUub1ByZXZpb3VzU2VhcmNoLDEpKX0pfSk7cCgic3RhdGUoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZXh0Lmxlbmd0aD90aGlzLmNvbnRleHRbMF0ub1NhdmVkU3RhdGU6bnVsbH0pO3AoInN0YXRlLmNsZWFyKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhKXthLmZuU3RhdGVTYXZlQ2FsbGJhY2suY2FsbChhLm9JbnN0YW5jZSxhLHt9KX0pfSk7cCgic3RhdGUubG9hZGVkKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGV4dC5sZW5ndGg/CnRoaXMuY29udGV4dFswXS5vTG9hZGVkU3RhdGU6bnVsbH0pO3AoInN0YXRlLnNhdmUoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe3dhKGEpfSl9KTttLnZlcnNpb25DaGVjaz1tLmZuVmVyc2lvbkNoZWNrPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1tLnZlcnNpb24uc3BsaXQoIi4iKSxhPWEuc3BsaXQoIi4iKSxjLGQsZT0wLGY9YS5sZW5ndGg7ZTxmO2UrKylpZihjPXBhcnNlSW50KGJbZV0sMTApfHwwLGQ9cGFyc2VJbnQoYVtlXSwxMCl8fDAsYyE9PWQpcmV0dXJuIGM+ZDtyZXR1cm4hMH07bS5pc0RhdGFUYWJsZT1tLmZuSXNEYXRhVGFibGU9ZnVuY3Rpb24oYSl7dmFyIGI9aChhKS5nZXQoMCksYz0hMTtoLmVhY2gobS5zZXR0aW5ncyxmdW5jdGlvbihhLGUpe3ZhciBmPWUublNjcm9sbEhlYWQ/aCgidGFibGUiLGUublNjcm9sbEhlYWQpWzBdOm51bGwsZz1lLm5TY3JvbGxGb290P2goInRhYmxlIixlLm5TY3JvbGxGb290KVswXToKbnVsbDtpZihlLm5UYWJsZT09PWJ8fGY9PT1ifHxnPT09YiljPSEwfSk7cmV0dXJuIGN9O20udGFibGVzPW0uZm5UYWJsZXM9ZnVuY3Rpb24oYSl7dmFyIGI9ITE7aC5pc1BsYWluT2JqZWN0KGEpJiYoYj1hLmFwaSxhPWEudmlzaWJsZSk7dmFyIGM9aC5tYXAobS5zZXR0aW5ncyxmdW5jdGlvbihiKXtpZighYXx8YSYmaChiLm5UYWJsZSkuaXMoIjp2aXNpYmxlIikpcmV0dXJuIGIublRhYmxlfSk7cmV0dXJuIGI/bmV3IHIoYyk6Y307bS5jYW1lbFRvSHVuZ2FyaWFuPUs7cCgiJCgpIixmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMucm93cyhiKS5ub2RlcygpLGM9aChjKTtyZXR1cm4gaChbXS5jb25jYXQoYy5maWx0ZXIoYSkudG9BcnJheSgpLGMuZmluZChhKS50b0FycmF5KCkpKX0pO2guZWFjaChbIm9uIiwib25lIiwib2ZmIl0sZnVuY3Rpb24oYSxiKXtwKGIrIigpIixmdW5jdGlvbigpe3ZhciBhPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7YVswXS5tYXRjaCgvXC5kdFxiLyl8fAooYVswXSs9Ii5kdCIpO3ZhciBkPWgodGhpcy50YWJsZXMoKS5ub2RlcygpKTtkW2JdLmFwcGx5KGQsYSk7cmV0dXJuIHRoaXN9KX0pO3AoImNsZWFyKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhKXtuYShhKX0pfSk7cCgic2V0dGluZ3MoKSIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHIodGhpcy5jb250ZXh0LHRoaXMuY29udGV4dCl9KTtwKCJpbml0KCkiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jb250ZXh0O3JldHVybiBhLmxlbmd0aD9hWzBdLm9Jbml0Om51bGx9KTtwKCJkYXRhKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhKXtyZXR1cm4gRyhhLmFvRGF0YSwiX2FEYXRhIil9KS5mbGF0dGVuKCl9KTtwKCJkZXN0cm95KCkiLGZ1bmN0aW9uKGEpe2E9YXx8ITE7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXt2YXIgYz1iLm5UYWJsZVdyYXBwZXIucGFyZW50Tm9kZSwKZD1iLm9DbGFzc2VzLGU9Yi5uVGFibGUsZj1iLm5UQm9keSxnPWIublRIZWFkLGo9Yi5uVEZvb3QsaT1oKGUpLGY9aChmKSxrPWgoYi5uVGFibGVXcmFwcGVyKSxsPWgubWFwKGIuYW9EYXRhLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5Ucn0pLHA7Yi5iRGVzdHJveWluZz0hMDt1KGIsImFvRGVzdHJveUNhbGxiYWNrIiwiZGVzdHJveSIsW2JdKTthfHwobmV3IHIoYikpLmNvbHVtbnMoKS52aXNpYmxlKCEwKTtrLnVuYmluZCgiLkRUIikuZmluZCgiOm5vdCh0Ym9keSAqKSIpLnVuYmluZCgiLkRUIik7aChEKS51bmJpbmQoIi5EVC0iK2Iuc0luc3RhbmNlKTtlIT1nLnBhcmVudE5vZGUmJihpLmNoaWxkcmVuKCJ0aGVhZCIpLmRldGFjaCgpLGkuYXBwZW5kKGcpKTtqJiZlIT1qLnBhcmVudE5vZGUmJihpLmNoaWxkcmVuKCJ0Zm9vdCIpLmRldGFjaCgpLGkuYXBwZW5kKGopKTtiLmFhU29ydGluZz1bXTtiLmFhU29ydGluZ0ZpeGVkPVtdO3ZhKGIpO2gobCkucmVtb3ZlQ2xhc3MoYi5hc1N0cmlwZUNsYXNzZXMuam9pbigiICIpKTsKaCgidGgsIHRkIixnKS5yZW1vdmVDbGFzcyhkLnNTb3J0YWJsZSsiICIrZC5zU29ydGFibGVBc2MrIiAiK2Quc1NvcnRhYmxlRGVzYysiICIrZC5zU29ydGFibGVOb25lKTtiLmJKVUkmJihoKCJ0aCBzcGFuLiIrZC5zU29ydEljb24rIiwgdGQgc3Bhbi4iK2Quc1NvcnRJY29uLGcpLmRldGFjaCgpLGgoInRoLCB0ZCIsZykuZWFjaChmdW5jdGlvbigpe3ZhciBhPWgoImRpdi4iK2Quc1NvcnRKVUlXcmFwcGVyLHRoaXMpO2godGhpcykuYXBwZW5kKGEuY29udGVudHMoKSk7YS5kZXRhY2goKX0pKTtmLmNoaWxkcmVuKCkuZGV0YWNoKCk7Zi5hcHBlbmQobCk7Zz1hPyJyZW1vdmUiOiJkZXRhY2giO2lbZ10oKTtrW2ddKCk7IWEmJmMmJihjLmluc2VydEJlZm9yZShlLGIublRhYmxlUmVpbnNlcnRCZWZvcmUpLGkuY3NzKCJ3aWR0aCIsYi5zRGVzdHJveVdpZHRoKS5yZW1vdmVDbGFzcyhkLnNUYWJsZSksKHA9Yi5hc0Rlc3Ryb3lTdHJpcGVzLmxlbmd0aCkmJmYuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKGEpe2godGhpcykuYWRkQ2xhc3MoYi5hc0Rlc3Ryb3lTdHJpcGVzW2ElCnBdKX0pKTtjPWguaW5BcnJheShiLG0uc2V0dGluZ3MpOy0xIT09YyYmbS5zZXR0aW5ncy5zcGxpY2UoYywxKX0pfSk7aC5lYWNoKFsiY29sdW1uIiwicm93IiwiY2VsbCJdLGZ1bmN0aW9uKGEsYil7cChiKyJzKCkuZXZlcnkoKSIsZnVuY3Rpb24oYSl7dmFyIGQ9dGhpcy5zZWxlY3Rvci5vcHRzLGU9dGhpcztyZXR1cm4gdGhpcy5pdGVyYXRvcihiLGZ1bmN0aW9uKGYsZyxoLGksbil7YS5jYWxsKGVbYl0oZywiY2VsbCI9PT1iP2g6ZCwiY2VsbCI9PT1iP2Q6ayksZyxoLGksbil9KX0pfSk7cCgiaTE4bigpIixmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5jb250ZXh0WzBdLGE9UShhKShkLm9MYW5ndWFnZSk7YT09PWsmJihhPWIpO2MhPT1rJiZoLmlzUGxhaW5PYmplY3QoYSkmJihhPWFbY10hPT1rP2FbY106YS5fKTtyZXR1cm4gYS5yZXBsYWNlKCIlZCIsYyl9KTttLnZlcnNpb249IjEuMTAuMTIiO20uc2V0dGluZ3M9W107bS5tb2RlbHM9e307bS5tb2RlbHMub1NlYXJjaD17YkNhc2VJbnNlbnNpdGl2ZTohMCwKc1NlYXJjaDoiIixiUmVnZXg6ITEsYlNtYXJ0OiEwfTttLm1vZGVscy5vUm93PXtuVHI6bnVsbCxhbkNlbGxzOm51bGwsX2FEYXRhOltdLF9hU29ydERhdGE6bnVsbCxfYUZpbHRlckRhdGE6bnVsbCxfc0ZpbHRlclJvdzpudWxsLF9zUm93U3RyaXBlOiIiLHNyYzpudWxsLGlkeDotMX07bS5tb2RlbHMub0NvbHVtbj17aWR4Om51bGwsYURhdGFTb3J0Om51bGwsYXNTb3J0aW5nOm51bGwsYlNlYXJjaGFibGU6bnVsbCxiU29ydGFibGU6bnVsbCxiVmlzaWJsZTpudWxsLF9zTWFudWFsVHlwZTpudWxsLF9iQXR0clNyYzohMSxmbkNyZWF0ZWRDZWxsOm51bGwsZm5HZXREYXRhOm51bGwsZm5TZXREYXRhOm51bGwsbURhdGE6bnVsbCxtUmVuZGVyOm51bGwsblRoOm51bGwsblRmOm51bGwsc0NsYXNzOm51bGwsc0NvbnRlbnRQYWRkaW5nOm51bGwsc0RlZmF1bHRDb250ZW50Om51bGwsc05hbWU6bnVsbCxzU29ydERhdGFUeXBlOiJzdGQiLHNTb3J0aW5nQ2xhc3M6bnVsbCxzU29ydGluZ0NsYXNzSlVJOm51bGwsCnNUaXRsZTpudWxsLHNUeXBlOm51bGwsc1dpZHRoOm51bGwsc1dpZHRoT3JpZzpudWxsfTttLmRlZmF1bHRzPXthYURhdGE6bnVsbCxhYVNvcnRpbmc6W1swLCJhc2MiXV0sYWFTb3J0aW5nRml4ZWQ6W10sYWpheDpudWxsLGFMZW5ndGhNZW51OlsxMCwyNSw1MCwxMDBdLGFvQ29sdW1uczpudWxsLGFvQ29sdW1uRGVmczpudWxsLGFvU2VhcmNoQ29sczpbXSxhc1N0cmlwZUNsYXNzZXM6bnVsbCxiQXV0b1dpZHRoOiEwLGJEZWZlclJlbmRlcjohMSxiRGVzdHJveTohMSxiRmlsdGVyOiEwLGJJbmZvOiEwLGJKUXVlcnlVSTohMSxiTGVuZ3RoQ2hhbmdlOiEwLGJQYWdpbmF0ZTohMCxiUHJvY2Vzc2luZzohMSxiUmV0cmlldmU6ITEsYlNjcm9sbENvbGxhcHNlOiExLGJTZXJ2ZXJTaWRlOiExLGJTb3J0OiEwLGJTb3J0TXVsdGk6ITAsYlNvcnRDZWxsc1RvcDohMSxiU29ydENsYXNzZXM6ITAsYlN0YXRlU2F2ZTohMSxmbkNyZWF0ZWRSb3c6bnVsbCxmbkRyYXdDYWxsYmFjazpudWxsLGZuRm9vdGVyQ2FsbGJhY2s6bnVsbCwKZm5Gb3JtYXROdW1iZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudG9TdHJpbmcoKS5yZXBsYWNlKC9cQig/PShcZHszfSkrKD8hXGQpKS9nLHRoaXMub0xhbmd1YWdlLnNUaG91c2FuZHMpfSxmbkhlYWRlckNhbGxiYWNrOm51bGwsZm5JbmZvQ2FsbGJhY2s6bnVsbCxmbkluaXRDb21wbGV0ZTpudWxsLGZuUHJlRHJhd0NhbGxiYWNrOm51bGwsZm5Sb3dDYWxsYmFjazpudWxsLGZuU2VydmVyRGF0YTpudWxsLGZuU2VydmVyUGFyYW1zOm51bGwsZm5TdGF0ZUxvYWRDYWxsYmFjazpmdW5jdGlvbihhKXt0cnl7cmV0dXJuIEpTT04ucGFyc2UoKC0xPT09YS5pU3RhdGVEdXJhdGlvbj9zZXNzaW9uU3RvcmFnZTpsb2NhbFN0b3JhZ2UpLmdldEl0ZW0oIkRhdGFUYWJsZXNfIithLnNJbnN0YW5jZSsiXyIrbG9jYXRpb24ucGF0aG5hbWUpKX1jYXRjaChiKXt9fSxmblN0YXRlTG9hZFBhcmFtczpudWxsLGZuU3RhdGVMb2FkZWQ6bnVsbCxmblN0YXRlU2F2ZUNhbGxiYWNrOmZ1bmN0aW9uKGEsYil7dHJ5eygtMT09PQphLmlTdGF0ZUR1cmF0aW9uP3Nlc3Npb25TdG9yYWdlOmxvY2FsU3RvcmFnZSkuc2V0SXRlbSgiRGF0YVRhYmxlc18iK2Euc0luc3RhbmNlKyJfIitsb2NhdGlvbi5wYXRobmFtZSxKU09OLnN0cmluZ2lmeShiKSl9Y2F0Y2goYyl7fX0sZm5TdGF0ZVNhdmVQYXJhbXM6bnVsbCxpU3RhdGVEdXJhdGlvbjo3MjAwLGlEZWZlckxvYWRpbmc6bnVsbCxpRGlzcGxheUxlbmd0aDoxMCxpRGlzcGxheVN0YXJ0OjAsaVRhYkluZGV4OjAsb0NsYXNzZXM6e30sb0xhbmd1YWdlOntvQXJpYTp7c1NvcnRBc2NlbmRpbmc6IjogYWN0aXZhdGUgdG8gc29ydCBjb2x1bW4gYXNjZW5kaW5nIixzU29ydERlc2NlbmRpbmc6IjogYWN0aXZhdGUgdG8gc29ydCBjb2x1bW4gZGVzY2VuZGluZyJ9LG9QYWdpbmF0ZTp7c0ZpcnN0OiJGaXJzdCIsc0xhc3Q6Ikxhc3QiLHNOZXh0OiJOZXh0IixzUHJldmlvdXM6IlByZXZpb3VzIn0sc0VtcHR5VGFibGU6Ik5vIGRhdGEgYXZhaWxhYmxlIGluIHRhYmxlIixzSW5mbzoiU2hvd2luZyBfU1RBUlRfIHRvIF9FTkRfIG9mIF9UT1RBTF8gZW50cmllcyIsCnNJbmZvRW1wdHk6IlNob3dpbmcgMCB0byAwIG9mIDAgZW50cmllcyIsc0luZm9GaWx0ZXJlZDoiKGZpbHRlcmVkIGZyb20gX01BWF8gdG90YWwgZW50cmllcykiLHNJbmZvUG9zdEZpeDoiIixzRGVjaW1hbDoiIixzVGhvdXNhbmRzOiIsIixzTGVuZ3RoTWVudToiU2hvdyBfTUVOVV8gZW50cmllcyIsc0xvYWRpbmdSZWNvcmRzOiJMb2FkaW5nLi4uIixzUHJvY2Vzc2luZzoiUHJvY2Vzc2luZy4uLiIsc1NlYXJjaDoiU2VhcmNoOiIsc1NlYXJjaFBsYWNlaG9sZGVyOiIiLHNVcmw6IiIsc1plcm9SZWNvcmRzOiJObyBtYXRjaGluZyByZWNvcmRzIGZvdW5kIn0sb1NlYXJjaDpoLmV4dGVuZCh7fSxtLm1vZGVscy5vU2VhcmNoKSxzQWpheERhdGFQcm9wOiJkYXRhIixzQWpheFNvdXJjZTpudWxsLHNEb206ImxmcnRpcCIsc2VhcmNoRGVsYXk6bnVsbCxzUGFnaW5hdGlvblR5cGU6InNpbXBsZV9udW1iZXJzIixzU2Nyb2xsWDoiIixzU2Nyb2xsWElubmVyOiIiLHNTY3JvbGxZOiIiLHNTZXJ2ZXJNZXRob2Q6IkdFVCIsCnJlbmRlcmVyOm51bGwscm93SWQ6IkRUX1Jvd0lkIn07WChtLmRlZmF1bHRzKTttLmRlZmF1bHRzLmNvbHVtbj17YURhdGFTb3J0Om51bGwsaURhdGFTb3J0Oi0xLGFzU29ydGluZzpbImFzYyIsImRlc2MiXSxiU2VhcmNoYWJsZTohMCxiU29ydGFibGU6ITAsYlZpc2libGU6ITAsZm5DcmVhdGVkQ2VsbDpudWxsLG1EYXRhOm51bGwsbVJlbmRlcjpudWxsLHNDZWxsVHlwZToidGQiLHNDbGFzczoiIixzQ29udGVudFBhZGRpbmc6IiIsc0RlZmF1bHRDb250ZW50Om51bGwsc05hbWU6IiIsc1NvcnREYXRhVHlwZToic3RkIixzVGl0bGU6bnVsbCxzVHlwZTpudWxsLHNXaWR0aDpudWxsfTtYKG0uZGVmYXVsdHMuY29sdW1uKTttLm1vZGVscy5vU2V0dGluZ3M9e29GZWF0dXJlczp7YkF1dG9XaWR0aDpudWxsLGJEZWZlclJlbmRlcjpudWxsLGJGaWx0ZXI6bnVsbCxiSW5mbzpudWxsLGJMZW5ndGhDaGFuZ2U6bnVsbCxiUGFnaW5hdGU6bnVsbCxiUHJvY2Vzc2luZzpudWxsLGJTZXJ2ZXJTaWRlOm51bGwsCmJTb3J0Om51bGwsYlNvcnRNdWx0aTpudWxsLGJTb3J0Q2xhc3NlczpudWxsLGJTdGF0ZVNhdmU6bnVsbH0sb1Njcm9sbDp7YkNvbGxhcHNlOm51bGwsaUJhcldpZHRoOjAsc1g6bnVsbCxzWElubmVyOm51bGwsc1k6bnVsbH0sb0xhbmd1YWdlOntmbkluZm9DYWxsYmFjazpudWxsfSxvQnJvd3Nlcjp7YlNjcm9sbE92ZXJzaXplOiExLGJTY3JvbGxiYXJMZWZ0OiExLGJCb3VuZGluZzohMSxiYXJXaWR0aDowfSxhamF4Om51bGwsYWFuRmVhdHVyZXM6W10sYW9EYXRhOltdLGFpRGlzcGxheTpbXSxhaURpc3BsYXlNYXN0ZXI6W10sYUlkczp7fSxhb0NvbHVtbnM6W10sYW9IZWFkZXI6W10sYW9Gb290ZXI6W10sb1ByZXZpb3VzU2VhcmNoOnt9LGFvUHJlU2VhcmNoQ29sczpbXSxhYVNvcnRpbmc6bnVsbCxhYVNvcnRpbmdGaXhlZDpbXSxhc1N0cmlwZUNsYXNzZXM6bnVsbCxhc0Rlc3Ryb3lTdHJpcGVzOltdLHNEZXN0cm95V2lkdGg6MCxhb1Jvd0NhbGxiYWNrOltdLGFvSGVhZGVyQ2FsbGJhY2s6W10sCmFvRm9vdGVyQ2FsbGJhY2s6W10sYW9EcmF3Q2FsbGJhY2s6W10sYW9Sb3dDcmVhdGVkQ2FsbGJhY2s6W10sYW9QcmVEcmF3Q2FsbGJhY2s6W10sYW9Jbml0Q29tcGxldGU6W10sYW9TdGF0ZVNhdmVQYXJhbXM6W10sYW9TdGF0ZUxvYWRQYXJhbXM6W10sYW9TdGF0ZUxvYWRlZDpbXSxzVGFibGVJZDoiIixuVGFibGU6bnVsbCxuVEhlYWQ6bnVsbCxuVEZvb3Q6bnVsbCxuVEJvZHk6bnVsbCxuVGFibGVXcmFwcGVyOm51bGwsYkRlZmVyTG9hZGluZzohMSxiSW5pdGlhbGlzZWQ6ITEsYW9PcGVuUm93czpbXSxzRG9tOm51bGwsc2VhcmNoRGVsYXk6bnVsbCxzUGFnaW5hdGlvblR5cGU6InR3b19idXR0b24iLGlTdGF0ZUR1cmF0aW9uOjAsYW9TdGF0ZVNhdmU6W10sYW9TdGF0ZUxvYWQ6W10sb1NhdmVkU3RhdGU6bnVsbCxvTG9hZGVkU3RhdGU6bnVsbCxzQWpheFNvdXJjZTpudWxsLHNBamF4RGF0YVByb3A6bnVsbCxiQWpheERhdGFHZXQ6ITAsanFYSFI6bnVsbCxqc29uOmssb0FqYXhEYXRhOmssCmZuU2VydmVyRGF0YTpudWxsLGFvU2VydmVyUGFyYW1zOltdLHNTZXJ2ZXJNZXRob2Q6bnVsbCxmbkZvcm1hdE51bWJlcjpudWxsLGFMZW5ndGhNZW51Om51bGwsaURyYXc6MCxiRHJhd2luZzohMSxpRHJhd0Vycm9yOi0xLF9pRGlzcGxheUxlbmd0aDoxMCxfaURpc3BsYXlTdGFydDowLF9pUmVjb3Jkc1RvdGFsOjAsX2lSZWNvcmRzRGlzcGxheTowLGJKVUk6bnVsbCxvQ2xhc3Nlczp7fSxiRmlsdGVyZWQ6ITEsYlNvcnRlZDohMSxiU29ydENlbGxzVG9wOm51bGwsb0luaXQ6bnVsbCxhb0Rlc3Ryb3lDYWxsYmFjazpbXSxmblJlY29yZHNUb3RhbDpmdW5jdGlvbigpe3JldHVybiJzc3AiPT15KHRoaXMpPzEqdGhpcy5faVJlY29yZHNUb3RhbDp0aGlzLmFpRGlzcGxheU1hc3Rlci5sZW5ndGh9LGZuUmVjb3Jkc0Rpc3BsYXk6ZnVuY3Rpb24oKXtyZXR1cm4ic3NwIj09eSh0aGlzKT8xKnRoaXMuX2lSZWNvcmRzRGlzcGxheTp0aGlzLmFpRGlzcGxheS5sZW5ndGh9LGZuRGlzcGxheUVuZDpmdW5jdGlvbigpe3ZhciBhPQp0aGlzLl9pRGlzcGxheUxlbmd0aCxiPXRoaXMuX2lEaXNwbGF5U3RhcnQsYz1iK2EsZD10aGlzLmFpRGlzcGxheS5sZW5ndGgsZT10aGlzLm9GZWF0dXJlcyxmPWUuYlBhZ2luYXRlO3JldHVybiBlLmJTZXJ2ZXJTaWRlPyExPT09Znx8LTE9PT1hP2IrZDpNYXRoLm1pbihiK2EsdGhpcy5faVJlY29yZHNEaXNwbGF5KTohZnx8Yz5kfHwtMT09PWE/ZDpjfSxvSW5zdGFuY2U6bnVsbCxzSW5zdGFuY2U6bnVsbCxpVGFiSW5kZXg6MCxuU2Nyb2xsSGVhZDpudWxsLG5TY3JvbGxGb290Om51bGwsYUxhc3RTb3J0OltdLG9QbHVnaW5zOnt9LHJvd0lkRm46bnVsbCxyb3dJZDpudWxsfTttLmV4dD12PXtidXR0b25zOnt9LGNsYXNzZXM6e30sYnVpbGRlcjoiLXNvdXJjZS0iLGVyck1vZGU6ImFsZXJ0IixmZWF0dXJlOltdLHNlYXJjaDpbXSxzZWxlY3Rvcjp7Y2VsbDpbXSxjb2x1bW46W10scm93OltdfSxpbnRlcm5hbDp7fSxsZWdhY3k6e2FqYXg6bnVsbH0scGFnZXI6e30scmVuZGVyZXI6e3BhZ2VCdXR0b246e30sCmhlYWRlcjp7fX0sb3JkZXI6e30sdHlwZTp7ZGV0ZWN0OltdLHNlYXJjaDp7fSxvcmRlcjp7fX0sX3VuaXF1ZTowLGZuVmVyc2lvbkNoZWNrOm0uZm5WZXJzaW9uQ2hlY2ssaUFwaUluZGV4OjAsb0pVSUNsYXNzZXM6e30sc1ZlcnNpb246bS52ZXJzaW9ufTtoLmV4dGVuZCh2LHthZm5GaWx0ZXJpbmc6di5zZWFyY2gsYVR5cGVzOnYudHlwZS5kZXRlY3Qsb2ZuU2VhcmNoOnYudHlwZS5zZWFyY2gsb1NvcnQ6di50eXBlLm9yZGVyLGFmblNvcnREYXRhOnYub3JkZXIsYW9GZWF0dXJlczp2LmZlYXR1cmUsb0FwaTp2LmludGVybmFsLG9TdGRDbGFzc2VzOnYuY2xhc3NlcyxvUGFnaW5hdGlvbjp2LnBhZ2VyfSk7aC5leHRlbmQobS5leHQuY2xhc3Nlcyx7c1RhYmxlOiJkYXRhVGFibGUiLHNOb0Zvb3Rlcjoibm8tZm9vdGVyIixzUGFnZUJ1dHRvbjoicGFnaW5hdGVfYnV0dG9uIixzUGFnZUJ1dHRvbkFjdGl2ZToiY3VycmVudCIsc1BhZ2VCdXR0b25EaXNhYmxlZDoiZGlzYWJsZWQiLHNTdHJpcGVPZGQ6Im9kZCIsCnNTdHJpcGVFdmVuOiJldmVuIixzUm93RW1wdHk6ImRhdGFUYWJsZXNfZW1wdHkiLHNXcmFwcGVyOiJkYXRhVGFibGVzX3dyYXBwZXIiLHNGaWx0ZXI6ImRhdGFUYWJsZXNfZmlsdGVyIixzSW5mbzoiZGF0YVRhYmxlc19pbmZvIixzUGFnaW5nOiJkYXRhVGFibGVzX3BhZ2luYXRlIHBhZ2luZ18iLHNMZW5ndGg6ImRhdGFUYWJsZXNfbGVuZ3RoIixzUHJvY2Vzc2luZzoiZGF0YVRhYmxlc19wcm9jZXNzaW5nIixzU29ydEFzYzoic29ydGluZ19hc2MiLHNTb3J0RGVzYzoic29ydGluZ19kZXNjIixzU29ydGFibGU6InNvcnRpbmciLHNTb3J0YWJsZUFzYzoic29ydGluZ19hc2NfZGlzYWJsZWQiLHNTb3J0YWJsZURlc2M6InNvcnRpbmdfZGVzY19kaXNhYmxlZCIsc1NvcnRhYmxlTm9uZToic29ydGluZ19kaXNhYmxlZCIsc1NvcnRDb2x1bW46InNvcnRpbmdfIixzRmlsdGVySW5wdXQ6IiIsc0xlbmd0aFNlbGVjdDoiIixzU2Nyb2xsV3JhcHBlcjoiZGF0YVRhYmxlc19zY3JvbGwiLHNTY3JvbGxIZWFkOiJkYXRhVGFibGVzX3Njcm9sbEhlYWQiLApzU2Nyb2xsSGVhZElubmVyOiJkYXRhVGFibGVzX3Njcm9sbEhlYWRJbm5lciIsc1Njcm9sbEJvZHk6ImRhdGFUYWJsZXNfc2Nyb2xsQm9keSIsc1Njcm9sbEZvb3Q6ImRhdGFUYWJsZXNfc2Nyb2xsRm9vdCIsc1Njcm9sbEZvb3RJbm5lcjoiZGF0YVRhYmxlc19zY3JvbGxGb290SW5uZXIiLHNIZWFkZXJUSDoiIixzRm9vdGVyVEg6IiIsc1NvcnRKVUlBc2M6IiIsc1NvcnRKVUlEZXNjOiIiLHNTb3J0SlVJOiIiLHNTb3J0SlVJQXNjQWxsb3dlZDoiIixzU29ydEpVSURlc2NBbGxvd2VkOiIiLHNTb3J0SlVJV3JhcHBlcjoiIixzU29ydEljb246IiIsc0pVSUhlYWRlcjoiIixzSlVJRm9vdGVyOiIifSk7dmFyIENhPSIiLENhPSIiLEg9Q2ErInVpLXN0YXRlLWRlZmF1bHQiLGlhPUNhKyJjc3NfcmlnaHQgdWktaWNvbiB1aS1pY29uLSIsWGI9Q2ErImZnLXRvb2xiYXIgdWktdG9vbGJhciB1aS13aWRnZXQtaGVhZGVyIHVpLWhlbHBlci1jbGVhcmZpeCI7aC5leHRlbmQobS5leHQub0pVSUNsYXNzZXMsCm0uZXh0LmNsYXNzZXMse3NQYWdlQnV0dG9uOiJmZy1idXR0b24gdWktYnV0dG9uICIrSCxzUGFnZUJ1dHRvbkFjdGl2ZToidWktc3RhdGUtZGlzYWJsZWQiLHNQYWdlQnV0dG9uRGlzYWJsZWQ6InVpLXN0YXRlLWRpc2FibGVkIixzUGFnaW5nOiJkYXRhVGFibGVzX3BhZ2luYXRlIGZnLWJ1dHRvbnNldCB1aS1idXR0b25zZXQgZmctYnV0dG9uc2V0LW11bHRpIHVpLWJ1dHRvbnNldC1tdWx0aSBwYWdpbmdfIixzU29ydEFzYzpIKyIgc29ydGluZ19hc2MiLHNTb3J0RGVzYzpIKyIgc29ydGluZ19kZXNjIixzU29ydGFibGU6SCsiIHNvcnRpbmciLHNTb3J0YWJsZUFzYzpIKyIgc29ydGluZ19hc2NfZGlzYWJsZWQiLHNTb3J0YWJsZURlc2M6SCsiIHNvcnRpbmdfZGVzY19kaXNhYmxlZCIsc1NvcnRhYmxlTm9uZTpIKyIgc29ydGluZ19kaXNhYmxlZCIsc1NvcnRKVUlBc2M6aWErInRyaWFuZ2xlLTEtbiIsc1NvcnRKVUlEZXNjOmlhKyJ0cmlhbmdsZS0xLXMiLHNTb3J0SlVJOmlhKyJjYXJhdC0yLW4tcyIsCnNTb3J0SlVJQXNjQWxsb3dlZDppYSsiY2FyYXQtMS1uIixzU29ydEpVSURlc2NBbGxvd2VkOmlhKyJjYXJhdC0xLXMiLHNTb3J0SlVJV3JhcHBlcjoiRGF0YVRhYmxlc19zb3J0X3dyYXBwZXIiLHNTb3J0SWNvbjoiRGF0YVRhYmxlc19zb3J0X2ljb24iLHNTY3JvbGxIZWFkOiJkYXRhVGFibGVzX3Njcm9sbEhlYWQgIitILHNTY3JvbGxGb290OiJkYXRhVGFibGVzX3Njcm9sbEZvb3QgIitILHNIZWFkZXJUSDpILHNGb290ZXJUSDpILHNKVUlIZWFkZXI6WGIrIiB1aS1jb3JuZXItdGwgdWktY29ybmVyLXRyIixzSlVJRm9vdGVyOlhiKyIgdWktY29ybmVyLWJsIHVpLWNvcm5lci1iciJ9KTt2YXIgTWI9bS5leHQucGFnZXI7aC5leHRlbmQoTWIse3NpbXBsZTpmdW5jdGlvbigpe3JldHVyblsicHJldmlvdXMiLCJuZXh0Il19LGZ1bGw6ZnVuY3Rpb24oKXtyZXR1cm5bImZpcnN0IiwicHJldmlvdXMiLCJuZXh0IiwibGFzdCJdfSxudW1iZXJzOmZ1bmN0aW9uKGEsYil7cmV0dXJuW3lhKGEsCmIpXX0sc2ltcGxlX251bWJlcnM6ZnVuY3Rpb24oYSxiKXtyZXR1cm5bInByZXZpb3VzIix5YShhLGIpLCJuZXh0Il19LGZ1bGxfbnVtYmVyczpmdW5jdGlvbihhLGIpe3JldHVyblsiZmlyc3QiLCJwcmV2aW91cyIseWEoYSxiKSwibmV4dCIsImxhc3QiXX0sX251bWJlcnM6eWEsbnVtYmVyc19sZW5ndGg6N30pO2guZXh0ZW5kKCEwLG0uZXh0LnJlbmRlcmVyLHtwYWdlQnV0dG9uOntfOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1hLm9DbGFzc2VzLGo9YS5vTGFuZ3VhZ2Uub1BhZ2luYXRlLGk9YS5vTGFuZ3VhZ2Uub0FyaWEucGFnaW5hdGV8fHt9LGssbCxtPTAscD1mdW5jdGlvbihiLGQpe3ZhciBvLHIsdSxzLHY9ZnVuY3Rpb24oYil7VGEoYSxiLmRhdGEuYWN0aW9uLHRydWUpfTtvPTA7Zm9yKHI9ZC5sZW5ndGg7bzxyO28rKyl7cz1kW29dO2lmKGguaXNBcnJheShzKSl7dT1oKCI8Iisocy5EVF9lbHx8ImRpdiIpKyIvPiIpLmFwcGVuZFRvKGIpO3AodSxzKX1lbHNle2s9bnVsbDsKbD0iIjtzd2l0Y2gocyl7Y2FzZSAiZWxsaXBzaXMiOmIuYXBwZW5kKCc8c3BhbiBjbGFzcz0iZWxsaXBzaXMiPiYjeDIwMjY7PC9zcGFuPicpO2JyZWFrO2Nhc2UgImZpcnN0IjprPWouc0ZpcnN0O2w9cysoZT4wPyIiOiIgIitnLnNQYWdlQnV0dG9uRGlzYWJsZWQpO2JyZWFrO2Nhc2UgInByZXZpb3VzIjprPWouc1ByZXZpb3VzO2w9cysoZT4wPyIiOiIgIitnLnNQYWdlQnV0dG9uRGlzYWJsZWQpO2JyZWFrO2Nhc2UgIm5leHQiOms9ai5zTmV4dDtsPXMrKGU8Zi0xPyIiOiIgIitnLnNQYWdlQnV0dG9uRGlzYWJsZWQpO2JyZWFrO2Nhc2UgImxhc3QiOms9ai5zTGFzdDtsPXMrKGU8Zi0xPyIiOiIgIitnLnNQYWdlQnV0dG9uRGlzYWJsZWQpO2JyZWFrO2RlZmF1bHQ6az1zKzE7bD1lPT09cz9nLnNQYWdlQnV0dG9uQWN0aXZlOiIifWlmKGshPT1udWxsKXt1PWgoIjxhPiIseyJjbGFzcyI6Zy5zUGFnZUJ1dHRvbisiICIrbCwiYXJpYS1jb250cm9scyI6YS5zVGFibGVJZCwiYXJpYS1sYWJlbCI6aVtzXSwKImRhdGEtZHQtaWR4IjptLHRhYmluZGV4OmEuaVRhYkluZGV4LGlkOmM9PT0wJiZ0eXBlb2Ygcz09PSJzdHJpbmciP2Euc1RhYmxlSWQrIl8iK3M6bnVsbH0pLmh0bWwoaykuYXBwZW5kVG8oYik7V2EodSx7YWN0aW9uOnN9LHYpO20rK319fX0scjt0cnl7cj1oKGIpLmZpbmQoSS5hY3RpdmVFbGVtZW50KS5kYXRhKCJkdC1pZHgiKX1jYXRjaChvKXt9cChoKGIpLmVtcHR5KCksZCk7ciYmaChiKS5maW5kKCJbZGF0YS1kdC1pZHg9IityKyJdIikuZm9jdXMoKX19fSk7aC5leHRlbmQobS5leHQudHlwZS5kZXRlY3QsW2Z1bmN0aW9uKGEsYil7dmFyIGM9Yi5vTGFuZ3VhZ2Uuc0RlY2ltYWw7cmV0dXJuIFphKGEsYyk/Im51bSIrYzpudWxsfSxmdW5jdGlvbihhKXtpZihhJiYhKGEgaW5zdGFuY2VvZiBEYXRlKSYmKCFhYy50ZXN0KGEpfHwhYmMudGVzdChhKSkpcmV0dXJuIG51bGw7dmFyIGI9RGF0ZS5wYXJzZShhKTtyZXR1cm4gbnVsbCE9PWImJiFpc05hTihiKXx8TShhKT8iZGF0ZSI6Cm51bGx9LGZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5vTGFuZ3VhZ2Uuc0RlY2ltYWw7cmV0dXJuIFphKGEsYywhMCk/Im51bS1mbXQiK2M6bnVsbH0sZnVuY3Rpb24oYSxiKXt2YXIgYz1iLm9MYW5ndWFnZS5zRGVjaW1hbDtyZXR1cm4gUmIoYSxjKT8iaHRtbC1udW0iK2M6bnVsbH0sZnVuY3Rpb24oYSxiKXt2YXIgYz1iLm9MYW5ndWFnZS5zRGVjaW1hbDtyZXR1cm4gUmIoYSxjLCEwKT8iaHRtbC1udW0tZm10IitjOm51bGx9LGZ1bmN0aW9uKGEpe3JldHVybiBNKGEpfHwic3RyaW5nIj09PXR5cGVvZiBhJiYtMSE9PWEuaW5kZXhPZigiPCIpPyJodG1sIjpudWxsfV0pO2guZXh0ZW5kKG0uZXh0LnR5cGUuc2VhcmNoLHtodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBNKGEpP2E6InN0cmluZyI9PT10eXBlb2YgYT9hLnJlcGxhY2UoT2IsIiAiKS5yZXBsYWNlKEFhLCIiKToiIn0sc3RyaW5nOmZ1bmN0aW9uKGEpe3JldHVybiBNKGEpP2E6InN0cmluZyI9PT10eXBlb2YgYT9hLnJlcGxhY2UoT2IsCiIgIik6YX19KTt2YXIgemE9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoMCE9PWEmJighYXx8Ii0iPT09YSkpcmV0dXJuLUluZmluaXR5O2ImJihhPVFiKGEsYikpO2EucmVwbGFjZSYmKGMmJihhPWEucmVwbGFjZShjLCIiKSksZCYmKGE9YS5yZXBsYWNlKGQsIiIpKSk7cmV0dXJuIDEqYX07aC5leHRlbmQodi50eXBlLm9yZGVyLHsiZGF0ZS1wcmUiOmZ1bmN0aW9uKGEpe3JldHVybiBEYXRlLnBhcnNlKGEpfHwwfSwiaHRtbC1wcmUiOmZ1bmN0aW9uKGEpe3JldHVybiBNKGEpPyIiOmEucmVwbGFjZT9hLnJlcGxhY2UoLzwuKj8+L2csIiIpLnRvTG93ZXJDYXNlKCk6YSsiIn0sInN0cmluZy1wcmUiOmZ1bmN0aW9uKGEpe3JldHVybiBNKGEpPyIiOiJzdHJpbmciPT09dHlwZW9mIGE/YS50b0xvd2VyQ2FzZSgpOiFhLnRvU3RyaW5nPyIiOmEudG9TdHJpbmcoKX0sInN0cmluZy1hc2MiOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE8Yj8tMTphPmI/MTowfSwic3RyaW5nLWRlc2MiOmZ1bmN0aW9uKGEsCmIpe3JldHVybiBhPGI/MTphPmI/LTE6MH19KTtkYigiIik7aC5leHRlbmQoITAsbS5leHQucmVuZGVyZXIse2hlYWRlcjp7XzpmdW5jdGlvbihhLGIsYyxkKXtoKGEublRhYmxlKS5vbigib3JkZXIuZHQuRFQiLGZ1bmN0aW9uKGUsZixnLGgpe2lmKGE9PT1mKXtlPWMuaWR4O2IucmVtb3ZlQ2xhc3MoYy5zU29ydGluZ0NsYXNzKyIgIitkLnNTb3J0QXNjKyIgIitkLnNTb3J0RGVzYykuYWRkQ2xhc3MoaFtlXT09ImFzYyI/ZC5zU29ydEFzYzpoW2VdPT0iZGVzYyI/ZC5zU29ydERlc2M6Yy5zU29ydGluZ0NsYXNzKX19KX0sanF1ZXJ5dWk6ZnVuY3Rpb24oYSxiLGMsZCl7aCgiPGRpdi8+IikuYWRkQ2xhc3MoZC5zU29ydEpVSVdyYXBwZXIpLmFwcGVuZChiLmNvbnRlbnRzKCkpLmFwcGVuZChoKCI8c3Bhbi8+IikuYWRkQ2xhc3MoZC5zU29ydEljb24rIiAiK2Muc1NvcnRpbmdDbGFzc0pVSSkpLmFwcGVuZFRvKGIpO2goYS5uVGFibGUpLm9uKCJvcmRlci5kdC5EVCIsZnVuY3Rpb24oZSwKZixnLGgpe2lmKGE9PT1mKXtlPWMuaWR4O2IucmVtb3ZlQ2xhc3MoZC5zU29ydEFzYysiICIrZC5zU29ydERlc2MpLmFkZENsYXNzKGhbZV09PSJhc2MiP2Quc1NvcnRBc2M6aFtlXT09ImRlc2MiP2Quc1NvcnREZXNjOmMuc1NvcnRpbmdDbGFzcyk7Yi5maW5kKCJzcGFuLiIrZC5zU29ydEljb24pLnJlbW92ZUNsYXNzKGQuc1NvcnRKVUlBc2MrIiAiK2Quc1NvcnRKVUlEZXNjKyIgIitkLnNTb3J0SlVJKyIgIitkLnNTb3J0SlVJQXNjQWxsb3dlZCsiICIrZC5zU29ydEpVSURlc2NBbGxvd2VkKS5hZGRDbGFzcyhoW2VdPT0iYXNjIj9kLnNTb3J0SlVJQXNjOmhbZV09PSJkZXNjIj9kLnNTb3J0SlVJRGVzYzpjLnNTb3J0aW5nQ2xhc3NKVUkpfX0pfX19KTt2YXIgWWI9ZnVuY3Rpb24oYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT9hLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iik6YX07bS5yZW5kZXI9e251bWJlcjpmdW5jdGlvbihhLApiLGMsZCxlKXtyZXR1cm57ZGlzcGxheTpmdW5jdGlvbihmKXtpZigibnVtYmVyIiE9PXR5cGVvZiBmJiYic3RyaW5nIiE9PXR5cGVvZiBmKXJldHVybiBmO3ZhciBnPTA+Zj8iLSI6IiIsaD1wYXJzZUZsb2F0KGYpO2lmKGlzTmFOKGgpKXJldHVybiBZYihmKTtmPU1hdGguYWJzKGgpO2g9cGFyc2VJbnQoZiwxMCk7Zj1jP2IrKGYtaCkudG9GaXhlZChjKS5zdWJzdHJpbmcoMik6IiI7cmV0dXJuIGcrKGR8fCIiKStoLnRvU3RyaW5nKCkucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg/IVxkKSkvZyxhKStmKyhlfHwiIil9fX0sdGV4dDpmdW5jdGlvbigpe3JldHVybntkaXNwbGF5OllifX19O2guZXh0ZW5kKG0uZXh0LmludGVybmFsLHtfZm5FeHRlcm5BcGlGdW5jOk5iLF9mbkJ1aWxkQWpheDpyYSxfZm5BamF4VXBkYXRlOmxiLF9mbkFqYXhQYXJhbWV0ZXJzOnViLF9mbkFqYXhVcGRhdGVEcmF3OnZiLF9mbkFqYXhEYXRhU3JjOnNhLF9mbkFkZENvbHVtbjpFYSxfZm5Db2x1bW5PcHRpb25zOmphLApfZm5BZGp1c3RDb2x1bW5TaXppbmc6WSxfZm5WaXNpYmxlVG9Db2x1bW5JbmRleDpaLF9mbkNvbHVtbkluZGV4VG9WaXNpYmxlOiQsX2ZuVmlzYmxlQ29sdW1uczphYSxfZm5HZXRDb2x1bW5zOmxhLF9mbkNvbHVtblR5cGVzOkdhLF9mbkFwcGx5Q29sdW1uRGVmczppYixfZm5IdW5nYXJpYW5NYXA6WCxfZm5DYW1lbFRvSHVuZ2FyaWFuOkssX2ZuTGFuZ3VhZ2VDb21wYXQ6RGEsX2ZuQnJvd3NlckRldGVjdDpnYixfZm5BZGREYXRhOk4sX2ZuQWRkVHI6bWEsX2ZuTm9kZVRvRGF0YUluZGV4OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIuX0RUX1Jvd0luZGV4IT09az9iLl9EVF9Sb3dJbmRleDpudWxsfSxfZm5Ob2RlVG9Db2x1bW5JbmRleDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGguaW5BcnJheShjLGEuYW9EYXRhW2JdLmFuQ2VsbHMpfSxfZm5HZXRDZWxsRGF0YTpCLF9mblNldENlbGxEYXRhOmpiLF9mblNwbGl0T2JqTm90YXRpb246SmEsX2ZuR2V0T2JqZWN0RGF0YUZuOlEsX2ZuU2V0T2JqZWN0RGF0YUZuOlIsCl9mbkdldERhdGFNYXN0ZXI6S2EsX2ZuQ2xlYXJUYWJsZTpuYSxfZm5EZWxldGVJbmRleDpvYSxfZm5JbnZhbGlkYXRlOmNhLF9mbkdldFJvd0VsZW1lbnRzOklhLF9mbkNyZWF0ZVRyOkhhLF9mbkJ1aWxkSGVhZDprYixfZm5EcmF3SGVhZDplYSxfZm5EcmF3Ok8sX2ZuUmVEcmF3OlQsX2ZuQWRkT3B0aW9uc0h0bWw6bmIsX2ZuRGV0ZWN0SGVhZGVyOmRhLF9mbkdldFVuaXF1ZVRoczpxYSxfZm5GZWF0dXJlSHRtbEZpbHRlcjpwYixfZm5GaWx0ZXJDb21wbGV0ZTpmYSxfZm5GaWx0ZXJDdXN0b206eWIsX2ZuRmlsdGVyQ29sdW1uOnhiLF9mbkZpbHRlcjp3YixfZm5GaWx0ZXJDcmVhdGVTZWFyY2g6UGEsX2ZuRXNjYXBlUmVnZXg6UWEsX2ZuRmlsdGVyRGF0YTp6YixfZm5GZWF0dXJlSHRtbEluZm86c2IsX2ZuVXBkYXRlSW5mbzpDYixfZm5JbmZvTWFjcm9zOkRiLF9mbkluaXRpYWxpc2U6Z2EsX2ZuSW5pdENvbXBsZXRlOnRhLF9mbkxlbmd0aENoYW5nZTpSYSxfZm5GZWF0dXJlSHRtbExlbmd0aDpvYiwKX2ZuRmVhdHVyZUh0bWxQYWdpbmF0ZTp0YixfZm5QYWdlQ2hhbmdlOlRhLF9mbkZlYXR1cmVIdG1sUHJvY2Vzc2luZzpxYixfZm5Qcm9jZXNzaW5nRGlzcGxheTpDLF9mbkZlYXR1cmVIdG1sVGFibGU6cmIsX2ZuU2Nyb2xsRHJhdzprYSxfZm5BcHBseVRvQ2hpbGRyZW46SixfZm5DYWxjdWxhdGVDb2x1bW5XaWR0aHM6RmEsX2ZuVGhyb3R0bGU6T2EsX2ZuQ29udmVydFRvV2lkdGg6RmIsX2ZuR2V0V2lkZXN0Tm9kZTpHYixfZm5HZXRNYXhMZW5TdHJpbmc6SGIsX2ZuU3RyaW5nVG9Dc3M6eCxfZm5Tb3J0RmxhdHRlbjpWLF9mblNvcnQ6bWIsX2ZuU29ydEFyaWE6SmIsX2ZuU29ydExpc3RlbmVyOlZhLF9mblNvcnRBdHRhY2hMaXN0ZW5lcjpNYSxfZm5Tb3J0aW5nQ2xhc3Nlczp2YSxfZm5Tb3J0RGF0YTpJYixfZm5TYXZlU3RhdGU6d2EsX2ZuTG9hZFN0YXRlOktiLF9mblNldHRpbmdzRnJvbU5vZGU6eGEsX2ZuTG9nOkwsX2ZuTWFwOkUsX2ZuQmluZEFjdGlvbjpXYSxfZm5DYWxsYmFja1JlZzp6LApfZm5DYWxsYmFja0ZpcmU6dSxfZm5MZW5ndGhPdmVyZmxvdzpTYSxfZm5SZW5kZXJlcjpOYSxfZm5EYXRhU291cmNlOnksX2ZuUm93QXR0cmlidXRlczpMYSxfZm5DYWxjdWxhdGVFbmQ6ZnVuY3Rpb24oKXt9fSk7aC5mbi5kYXRhVGFibGU9bTttLiQ9aDtoLmZuLmRhdGFUYWJsZVNldHRpbmdzPW0uc2V0dGluZ3M7aC5mbi5kYXRhVGFibGVFeHQ9bS5leHQ7aC5mbi5EYXRhVGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGgodGhpcykuZGF0YVRhYmxlKGEpLmFwaSgpfTtoLmVhY2gobSxmdW5jdGlvbihhLGIpe2guZm4uRGF0YVRhYmxlW2FdPWJ9KTtyZXR1cm4gaC5mbi5kYXRhVGFibGV9KTsK"></script>
<link href="data:text/css;charset=utf-8,div%2Edt%2Dbutton%2Dinfo%7Bposition%3Afixed%3Btop%3A50%25%3Bleft%3A50%25%3Bwidth%3A400px%3Bmargin%2Dtop%3A%2D100px%3Bmargin%2Dleft%3A%2D200px%3Bbackground%2Dcolor%3Awhite%3Bborder%3A2px%20solid%20%23111%3Bbox%2Dshadow%3A3px%203px%208px%20rgba%280%2C0%2C0%2C0%2E3%29%3Bborder%2Dradius%3A3px%3Btext%2Dalign%3Acenter%3Bz%2Dindex%3A21%7Ddiv%2Edt%2Dbutton%2Dinfo%20h2%7Bpadding%3A0%2E5em%3Bmargin%3A0%3Bfont%2Dweight%3Anormal%3Bborder%2Dbottom%3A1px%20solid%20%23ddd%3Bbackground%2Dcolor%3A%23f3f3f3%7Ddiv%2Edt%2Dbutton%2Dinfo%3Ediv%7Bpadding%3A1em%7Dbutton%2Edt%2Dbutton%2Cdiv%2Edt%2Dbutton%2Ca%2Edt%2Dbutton%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bbox%2Dsizing%3Aborder%2Dbox%3Bmargin%2Dright%3A0%2E333em%3Bpadding%3A0%2E5em%201em%3Bborder%3A1px%20solid%20%23999%3Bborder%2Dradius%3A2px%3Bcursor%3Apointer%3Bfont%2Dsize%3A0%2E88em%3Bcolor%3Ablack%3Bwhite%2Dspace%3Anowrap%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23e9e9e9%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23e9e9e9%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23e9e9e9%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23e9e9e9%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23e9e9e9%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23fff%200%25%2C%20%23e9e9e9%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27white%27%2C%20EndColorStr%3D%27%23e9e9e9%27%29%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3Buser%2Dselect%3Anone%3Btext%2Ddecoration%3Anone%3Boutline%3Anone%7Dbutton%2Edt%2Dbutton%2Edisabled%2Cdiv%2Edt%2Dbutton%2Edisabled%2Ca%2Edt%2Dbutton%2Edisabled%7Bcolor%3A%23999%3Bborder%3A1px%20solid%20%23d0d0d0%3Bcursor%3Adefault%3Bbackground%2Dcolor%3A%23f9f9f9%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23f9f9f9%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23f9f9f9%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23f9f9f9%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23f9f9f9%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23fff%200%25%2C%20%23f9f9f9%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27%23ffffff%27%2C%20EndColorStr%3D%27%23f9f9f9%27%29%7Dbutton%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%2Cbutton%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%2Ca%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%2Ca%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%7Bbackground%2Dcolor%3A%23e2e2e2%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23f3f3f3%200%25%2C%20%23e2e2e2%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23f3f3f3%200%25%2C%20%23e2e2e2%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23f3f3f3%200%25%2C%20%23e2e2e2%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23f3f3f3%200%25%2C%20%23e2e2e2%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23f3f3f3%200%25%2C%20%23e2e2e2%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27%23f3f3f3%27%2C%20EndColorStr%3D%27%23e2e2e2%27%29%3Bbox%2Dshadow%3Ainset%201px%201px%203px%20%23999999%7Dbutton%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%3Ahover%3Anot%28%2Edisabled%29%2Cbutton%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%3Ahover%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%3Ahover%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%3Ahover%3Anot%28%2Edisabled%29%2Ca%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%3Ahover%3Anot%28%2Edisabled%29%2Ca%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%3Ahover%3Anot%28%2Edisabled%29%7Bbox%2Dshadow%3Ainset%201px%201px%203px%20%23999999%3Bbackground%2Dcolor%3A%23cccccc%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23eaeaea%200%25%2C%20%23ccc%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23eaeaea%200%25%2C%20%23ccc%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23eaeaea%200%25%2C%20%23ccc%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23eaeaea%200%25%2C%20%23ccc%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23eaeaea%200%25%2C%20%23ccc%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27%23eaeaea%27%2C%20EndColorStr%3D%27%23cccccc%27%29%7Dbutton%2Edt%2Dbutton%3Ahover%2Cdiv%2Edt%2Dbutton%3Ahover%2Ca%2Edt%2Dbutton%3Ahover%7Btext%2Ddecoration%3Anone%7Dbutton%2Edt%2Dbutton%3Ahover%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%3Ahover%3Anot%28%2Edisabled%29%2Ca%2Edt%2Dbutton%3Ahover%3Anot%28%2Edisabled%29%7Bborder%3A1px%20solid%20%23666%3Bbackground%2Dcolor%3A%23e0e0e0%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23f9f9f9%200%25%2C%20%23e0e0e0%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23f9f9f9%200%25%2C%20%23e0e0e0%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23f9f9f9%200%25%2C%20%23e0e0e0%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23f9f9f9%200%25%2C%20%23e0e0e0%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23f9f9f9%200%25%2C%20%23e0e0e0%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27%23f9f9f9%27%2C%20EndColorStr%3D%27%23e0e0e0%27%29%7Dbutton%2Edt%2Dbutton%3Afocus%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%3Afocus%3Anot%28%2Edisabled%29%2Ca%2Edt%2Dbutton%3Afocus%3Anot%28%2Edisabled%29%7Bborder%3A1px%20solid%20%23426c9e%3Btext%2Dshadow%3A0%201px%200%20%23c4def1%3Boutline%3Anone%3Bbackground%2Dcolor%3A%2379ace9%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23bddef4%200%25%2C%20%2379ace9%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23bddef4%200%25%2C%20%2379ace9%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23bddef4%200%25%2C%20%2379ace9%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23bddef4%200%25%2C%20%2379ace9%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23bddef4%200%25%2C%20%2379ace9%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27%23bddef4%27%2C%20EndColorStr%3D%27%2379ace9%27%29%7D%2Edt%2Dbutton%20embed%7Boutline%3Anone%7Ddiv%2Edt%2Dbuttons%7Bposition%3Arelative%3Bfloat%3Aleft%7Ddiv%2Edt%2Dbuttons%2Ebuttons%2Dright%7Bfloat%3Aright%7Ddiv%2Edt%2Dbutton%2Dcollection%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bwidth%3A150px%3Bmargin%2Dtop%3A3px%3Bpadding%3A8px%208px%204px%208px%3Bborder%3A1px%20solid%20%23ccc%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C0%2E4%29%3Bbackground%2Dcolor%3Awhite%3Boverflow%3Ahidden%3Bz%2Dindex%3A2002%3Bborder%2Dradius%3A5px%3Bbox%2Dshadow%3A3px%203px%205px%20rgba%280%2C0%2C0%2C0%2E3%29%3Bz%2Dindex%3A2002%3B%2Dwebkit%2Dcolumn%2Dgap%3A8px%3B%2Dmoz%2Dcolumn%2Dgap%3A8px%3B%2Dms%2Dcolumn%2Dgap%3A8px%3B%2Do%2Dcolumn%2Dgap%3A8px%3Bcolumn%2Dgap%3A8px%7Ddiv%2Edt%2Dbutton%2Dcollection%20button%2Edt%2Dbutton%2Cdiv%2Edt%2Dbutton%2Dcollection%20div%2Edt%2Dbutton%2Cdiv%2Edt%2Dbutton%2Dcollection%20a%2Edt%2Dbutton%7Bposition%3Arelative%3Bleft%3A0%3Bright%3A0%3Bdisplay%3Ablock%3Bfloat%3Anone%3Bmargin%2Dbottom%3A4px%3Bmargin%2Dright%3A0%7Ddiv%2Edt%2Dbutton%2Dcollection%20button%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Dcollection%20button%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Dcollection%20div%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Dcollection%20div%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Dcollection%20a%2Edt%2Dbutton%3Aactive%3Anot%28%2Edisabled%29%2Cdiv%2Edt%2Dbutton%2Dcollection%20a%2Edt%2Dbutton%2Eactive%3Anot%28%2Edisabled%29%7Bbackground%2Dcolor%3A%23dadada%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23f0f0f0%200%25%2C%20%23dadada%20100%25%29%3Bbackground%2Dimage%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23f0f0f0%200%25%2C%20%23dadada%20100%25%29%3Bbackground%2Dimage%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23f0f0f0%200%25%2C%20%23dadada%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23f0f0f0%200%25%2C%20%23dadada%20100%25%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20bottom%2C%20%23f0f0f0%200%25%2C%20%23dadada%20100%25%29%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28GradientType%3D0%2CStartColorStr%3D%27%23f0f0f0%27%2C%20EndColorStr%3D%27%23dadada%27%29%3Bbox%2Dshadow%3Ainset%201px%201px%203px%20%23666%7Ddiv%2Edt%2Dbutton%2Dcollection%2Efixed%7Bposition%3Afixed%3Btop%3A50%25%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D75px%3Bborder%2Dradius%3A0%7Ddiv%2Edt%2Dbutton%2Dcollection%2Efixed%2Etwo%2Dcolumn%7Bmargin%2Dleft%3A%2D150px%7Ddiv%2Edt%2Dbutton%2Dcollection%2Efixed%2Ethree%2Dcolumn%7Bmargin%2Dleft%3A%2D225px%7Ddiv%2Edt%2Dbutton%2Dcollection%2Efixed%2Efour%2Dcolumn%7Bmargin%2Dleft%3A%2D300px%7Ddiv%2Edt%2Dbutton%2Dcollection%3E%2A%7B%2Dwebkit%2Dcolumn%2Dbreak%2Dinside%3Aavoid%3Bbreak%2Dinside%3Aavoid%7Ddiv%2Edt%2Dbutton%2Dcollection%2Etwo%2Dcolumn%7Bwidth%3A300px%3Bpadding%2Dbottom%3A1px%3B%2Dwebkit%2Dcolumn%2Dcount%3A2%3B%2Dmoz%2Dcolumn%2Dcount%3A2%3B%2Dms%2Dcolumn%2Dcount%3A2%3B%2Do%2Dcolumn%2Dcount%3A2%3Bcolumn%2Dcount%3A2%7Ddiv%2Edt%2Dbutton%2Dcollection%2Ethree%2Dcolumn%7Bwidth%3A450px%3Bpadding%2Dbottom%3A1px%3B%2Dwebkit%2Dcolumn%2Dcount%3A3%3B%2Dmoz%2Dcolumn%2Dcount%3A3%3B%2Dms%2Dcolumn%2Dcount%3A3%3B%2Do%2Dcolumn%2Dcount%3A3%3Bcolumn%2Dcount%3A3%7Ddiv%2Edt%2Dbutton%2Dcollection%2Efour%2Dcolumn%7Bwidth%3A600px%3Bpadding%2Dbottom%3A1px%3B%2Dwebkit%2Dcolumn%2Dcount%3A4%3B%2Dmoz%2Dcolumn%2Dcount%3A4%3B%2Dms%2Dcolumn%2Dcount%3A4%3B%2Do%2Dcolumn%2Dcount%3A4%3Bcolumn%2Dcount%3A4%7Ddiv%2Edt%2Dbutton%2Dbackground%7Bposition%3Afixed%3Btop%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%3Bbackground%3Argba%280%2C0%2C0%2C0%2E7%29%3Bbackground%3A%2Dms%2Dradial%2Dgradient%28center%2C%20ellipse%20farthest%2Dcorner%2C%20rgba%280%2C0%2C0%2C0%2E3%29%200%25%2C%20rgba%280%2C0%2C0%2C0%2E7%29%20100%25%29%3Bbackground%3A%2Dmoz%2Dradial%2Dgradient%28center%2C%20ellipse%20farthest%2Dcorner%2C%20rgba%280%2C0%2C0%2C0%2E3%29%200%25%2C%20rgba%280%2C0%2C0%2C0%2E7%29%20100%25%29%3Bbackground%3A%2Do%2Dradial%2Dgradient%28center%2C%20ellipse%20farthest%2Dcorner%2C%20rgba%280%2C0%2C0%2C0%2E3%29%200%25%2C%20rgba%280%2C0%2C0%2C0%2E7%29%20100%25%29%3Bbackground%3A%2Dwebkit%2Dgradient%28radial%2C%20center%20center%2C%200%2C%20center%20center%2C%20497%2C%20color%2Dstop%280%2C%20rgba%280%2C0%2C0%2C0%2E3%29%29%2C%20color%2Dstop%281%2C%20rgba%280%2C0%2C0%2C0%2E7%29%29%29%3Bbackground%3A%2Dwebkit%2Dradial%2Dgradient%28center%2C%20ellipse%20farthest%2Dcorner%2C%20rgba%280%2C0%2C0%2C0%2E3%29%200%25%2C%20rgba%280%2C0%2C0%2C0%2E7%29%20100%25%29%3Bbackground%3Aradial%2Dgradient%28ellipse%20farthest%2Dcorner%20at%20center%2C%20rgba%280%2C0%2C0%2C0%2E3%29%200%25%2C%20rgba%280%2C0%2C0%2C0%2E7%29%20100%25%29%3Bz%2Dindex%3A2001%7D%40media%20screen%20and%20%28max%2Dwidth%3A%20640px%29%7Bdiv%2Edt%2Dbuttons%7Bfloat%3Anone%20%21important%3Btext%2Dalign%3Acenter%7D%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,LyohCiBCdXR0b25zIGZvciBEYXRhVGFibGVzIDEuMi4wCiDCqTIwMTYgU3ByeU1lZGlhIEx0ZCAtIGRhdGF0YWJsZXMubmV0L2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGQpeyJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSIsImRhdGF0YWJsZXMubmV0Il0sZnVuY3Rpb24obyl7cmV0dXJuIGQobyx3aW5kb3csZG9jdW1lbnQpfSk6Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihvLG4pe298fChvPXdpbmRvdyk7aWYoIW58fCFuLmZuLmRhdGFUYWJsZSluPXJlcXVpcmUoImRhdGF0YWJsZXMubmV0IikobyxuKS4kO3JldHVybiBkKG4sbyxvLmRvY3VtZW50KX06ZChqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGQsbyxuLGwpe3ZhciBpPWQuZm4uZGF0YVRhYmxlLHU9MCx2PTAsaz1pLmV4dC5idXR0b25zLG09ZnVuY3Rpb24oYSxiKXshMD09PWImJihiPXt9KTtkLmlzQXJyYXkoYikmJihiPXtidXR0b25zOmJ9KTt0aGlzLmM9ZC5leHRlbmQoITAse30sbS5kZWZhdWx0cyxiKTtiLmJ1dHRvbnMmJih0aGlzLmMuYnV0dG9ucz1iLmJ1dHRvbnMpOwp0aGlzLnM9e2R0Om5ldyBpLkFwaShhKSxidXR0b25zOltdLGxpc3RlbktleXM6IiIsbmFtZXNwYWNlOiJkdGIiK3UrK307dGhpcy5kb209e2NvbnRhaW5lcjpkKCI8Iit0aGlzLmMuZG9tLmNvbnRhaW5lci50YWcrIi8+IikuYWRkQ2xhc3ModGhpcy5jLmRvbS5jb250YWluZXIuY2xhc3NOYW1lKX07dGhpcy5fY29uc3RydWN0b3IoKX07ZC5leHRlbmQobS5wcm90b3R5cGUse2FjdGlvbjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX25vZGVUb0J1dHRvbihhKTtpZihiPT09bClyZXR1cm4gYy5jb25mLmFjdGlvbjtjLmNvbmYuYWN0aW9uPWI7cmV0dXJuIHRoaXN9LGFjdGl2ZTpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX25vZGVUb0J1dHRvbihhKSxlPXRoaXMuYy5kb20uYnV0dG9uLmFjdGl2ZSxjPWQoYy5ub2RlKTtpZihiPT09bClyZXR1cm4gYy5oYXNDbGFzcyhlKTtjLnRvZ2dsZUNsYXNzKGUsYj09PWw/ITA6Yik7cmV0dXJuIHRoaXN9LGFkZDpmdW5jdGlvbihhLGIpe3ZhciBjPQp0aGlzLnMuYnV0dG9ucztpZigic3RyaW5nIj09PXR5cGVvZiBiKXtmb3IodmFyIGU9Yi5zcGxpdCgiLSIpLGM9dGhpcy5zLGQ9MCxoPWUubGVuZ3RoLTE7ZDxoO2QrKyljPWMuYnV0dG9uc1sxKmVbZF1dO2M9Yy5idXR0b25zO2I9MSplW2UubGVuZ3RoLTFdfXRoaXMuX2V4cGFuZEJ1dHRvbihjLGEsITEsYik7dGhpcy5fZHJhdygpO3JldHVybiB0aGlzfSxjb250YWluZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb20uY29udGFpbmVyfSxkaXNhYmxlOmZ1bmN0aW9uKGEpe2E9dGhpcy5fbm9kZVRvQnV0dG9uKGEpO2QoYS5ub2RlKS5hZGRDbGFzcyh0aGlzLmMuZG9tLmJ1dHRvbi5kaXNhYmxlZCk7cmV0dXJuIHRoaXN9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtkKCJib2R5Iikub2ZmKCJrZXl1cC4iK3RoaXMucy5uYW1lc3BhY2UpO3ZhciBhPXRoaXMucy5idXR0b25zLGIsYztiPTA7Zm9yKGM9YS5sZW5ndGg7YjxjO2IrKyl0aGlzLnJlbW92ZShhW2JdLm5vZGUpO3RoaXMuZG9tLmNvbnRhaW5lci5yZW1vdmUoKTsKYT10aGlzLnMuZHQuc2V0dGluZ3MoKVswXTtiPTA7Zm9yKGM9YS5sZW5ndGg7YjxjO2IrKylpZihhLmluc3Q9PT10aGlzKXthLnNwbGljZShiLDEpO2JyZWFrfXJldHVybiB0aGlzfSxlbmFibGU6ZnVuY3Rpb24oYSxiKXtpZighMT09PWIpcmV0dXJuIHRoaXMuZGlzYWJsZShhKTt2YXIgYz10aGlzLl9ub2RlVG9CdXR0b24oYSk7ZChjLm5vZGUpLnJlbW92ZUNsYXNzKHRoaXMuYy5kb20uYnV0dG9uLmRpc2FibGVkKTtyZXR1cm4gdGhpc30sbmFtZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmMubmFtZX0sbm9kZTpmdW5jdGlvbihhKXthPXRoaXMuX25vZGVUb0J1dHRvbihhKTtyZXR1cm4gZChhLm5vZGUpfSxyZW1vdmU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5fbm9kZVRvQnV0dG9uKGEpLGM9dGhpcy5fbm9kZVRvSG9zdChhKSxlPXRoaXMucy5kdDtpZihiLmJ1dHRvbnMubGVuZ3RoKWZvcih2YXIgZz1iLmJ1dHRvbnMubGVuZ3RoLTE7MDw9ZztnLS0pdGhpcy5yZW1vdmUoYi5idXR0b25zW2ddLm5vZGUpOwpiLmNvbmYuZGVzdHJveSYmYi5jb25mLmRlc3Ryb3kuY2FsbChlLmJ1dHRvbihhKSxlLGQoYSksYi5jb25mKTt0aGlzLl9yZW1vdmVLZXkoYi5jb25mKTtkKGIubm9kZSkucmVtb3ZlKCk7YT1kLmluQXJyYXkoYixjKTtjLnNwbGljZShhLDEpO3JldHVybiB0aGlzfSx0ZXh0OmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5fbm9kZVRvQnV0dG9uKGEpLGU9dGhpcy5jLmRvbS5jb2xsZWN0aW9uLmJ1dHRvbkxpbmVyLGU9Yy5pbkNvbGxlY3Rpb24mJmUmJmUudGFnP2UudGFnOnRoaXMuYy5kb20uYnV0dG9uTGluZXIudGFnLGc9dGhpcy5zLmR0LGg9ZChjLm5vZGUpLGY9ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBhP2EoZyxoLGMuY29uZik6YX07aWYoYj09PWwpcmV0dXJuIGYoYy5jb25mLnRleHQpO2MuY29uZi50ZXh0PWI7ZT9oLmNoaWxkcmVuKGUpLmh0bWwoZihiKSk6aC5odG1sKGYoYikpO3JldHVybiB0aGlzfSxfY29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgYT0KdGhpcyxiPXRoaXMucy5kdCxjPWIuc2V0dGluZ3MoKVswXSxlPXRoaXMuYy5idXR0b25zO2MuX2J1dHRvbnN8fChjLl9idXR0b25zPVtdKTtjLl9idXR0b25zLnB1c2goe2luc3Q6dGhpcyxuYW1lOnRoaXMuYy5uYW1lfSk7Zm9yKHZhciBjPTAsZz1lLmxlbmd0aDtjPGc7YysrKXRoaXMuYWRkKGVbY10pO2Iub24oImRlc3Ryb3kiLGZ1bmN0aW9uKCl7YS5kZXN0cm95KCl9KTtkKCJib2R5Iikub24oImtleXVwLiIrdGhpcy5zLm5hbWVzcGFjZSxmdW5jdGlvbihiKXtpZighbi5hY3RpdmVFbGVtZW50fHxuLmFjdGl2ZUVsZW1lbnQ9PT1uLmJvZHkpe3ZhciBjPVN0cmluZy5mcm9tQ2hhckNvZGUoYi5rZXlDb2RlKS50b0xvd2VyQ2FzZSgpO2Eucy5saXN0ZW5LZXlzLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihjKSE9PS0xJiZhLl9rZXlwcmVzcyhjLGIpfX0pfSxfYWRkS2V5OmZ1bmN0aW9uKGEpe2Eua2V5JiYodGhpcy5zLmxpc3RlbktleXMrPWQuaXNQbGFpbk9iamVjdChhLmtleSk/YS5rZXkua2V5OgphLmtleSl9LF9kcmF3OmZ1bmN0aW9uKGEsYil7YXx8KGE9dGhpcy5kb20uY29udGFpbmVyLGI9dGhpcy5zLmJ1dHRvbnMpO2EuY2hpbGRyZW4oKS5kZXRhY2goKTtmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspYS5hcHBlbmQoYltjXS5pbnNlcnRlciksYltjXS5idXR0b25zJiZiW2NdLmJ1dHRvbnMubGVuZ3RoJiZ0aGlzLl9kcmF3KGJbY10uY29sbGVjdGlvbixiW2NdLmJ1dHRvbnMpfSxfZXhwYW5kQnV0dG9uOmZ1bmN0aW9uKGEsYixjLGUpe2Zvcih2YXIgZz10aGlzLnMuZHQsaD0wLGI9IWQuaXNBcnJheShiKT9bYl06YixmPTAscT1iLmxlbmd0aDtmPHE7ZisrKXt2YXIgaj10aGlzLl9yZXNvbHZlRXh0ZW5kcyhiW2ZdKTtpZihqKWlmKGQuaXNBcnJheShqKSl0aGlzLl9leHBhbmRCdXR0b24oYSxqLGMsZSk7ZWxzZXt2YXIgcD10aGlzLl9idWlsZEJ1dHRvbihqLGMpO2lmKHApe2UhPT1sPyhhLnNwbGljZShlLDAscCksZSsrKTphLnB1c2gocCk7aWYocC5jb25mLmJ1dHRvbnMpe3ZhciBzPQp0aGlzLmMuZG9tLmNvbGxlY3Rpb247cC5jb2xsZWN0aW9uPWQoIjwiK3MudGFnKyIvPiIpLmFkZENsYXNzKHMuY2xhc3NOYW1lKTtwLmNvbmYuX2NvbGxlY3Rpb249cC5jb2xsZWN0aW9uO3RoaXMuX2V4cGFuZEJ1dHRvbihwLmJ1dHRvbnMscC5jb25mLmJ1dHRvbnMsITAsZSl9ai5pbml0JiZqLmluaXQuY2FsbChnLmJ1dHRvbihwLm5vZGUpLGcsZChwLm5vZGUpLGopO2grK319fX0sX2J1aWxkQnV0dG9uOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jLmRvbS5idXR0b24sZT10aGlzLmMuZG9tLmJ1dHRvbkxpbmVyLGc9dGhpcy5jLmRvbS5jb2xsZWN0aW9uLGg9dGhpcy5zLmR0LGY9ZnVuY3Rpb24oYil7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiBiP2IoaCxqLGEpOmJ9O2ImJmcuYnV0dG9uJiYoYz1nLmJ1dHRvbik7YiYmZy5idXR0b25MaW5lciYmKGU9Zy5idXR0b25MaW5lcik7aWYoYS5hdmFpbGFibGUmJiFhLmF2YWlsYWJsZShoLGEpKXJldHVybiExO3ZhciBxPWZ1bmN0aW9uKGEsCmIsYyxlKXtlLmFjdGlvbi5jYWxsKGIuYnV0dG9uKGMpLGEsYixjLGUpO2QoYi50YWJsZSgpLm5vZGUoKSkudHJpZ2dlckhhbmRsZXIoImJ1dHRvbnMtYWN0aW9uLmR0IixbYi5idXR0b24oYyksYixjLGVdKX0saj1kKCI8IitjLnRhZysiLz4iKS5hZGRDbGFzcyhjLmNsYXNzTmFtZSkuYXR0cigidGFiaW5kZXgiLHRoaXMucy5kdC5zZXR0aW5ncygpWzBdLmlUYWJJbmRleCkuYXR0cigiYXJpYS1jb250cm9scyIsdGhpcy5zLmR0LnRhYmxlKCkubm9kZSgpLmlkKS5vbigiY2xpY2suZHRiIixmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCk7IWouaGFzQ2xhc3MoYy5kaXNhYmxlZCkmJmEuYWN0aW9uJiZxKGIsaCxqLGEpO2ouYmx1cigpfSkub24oImtleXVwLmR0YiIsZnVuY3Rpb24oYil7Yi5rZXlDb2RlPT09MTMmJiFqLmhhc0NsYXNzKGMuZGlzYWJsZWQpJiZhLmFjdGlvbiYmcShiLGgsaixhKX0pOyJhIj09PWMudGFnLnRvTG93ZXJDYXNlKCkmJmouYXR0cigiaHJlZiIsIiMiKTsKZS50YWc/KGc9ZCgiPCIrZS50YWcrIi8+IikuaHRtbChmKGEudGV4dCkpLmFkZENsYXNzKGUuY2xhc3NOYW1lKSwiYSI9PT1lLnRhZy50b0xvd2VyQ2FzZSgpJiZnLmF0dHIoImhyZWYiLCIjIiksai5hcHBlbmQoZykpOmouaHRtbChmKGEudGV4dCkpOyExPT09YS5lbmFibGVkJiZqLmFkZENsYXNzKGMuZGlzYWJsZWQpO2EuY2xhc3NOYW1lJiZqLmFkZENsYXNzKGEuY2xhc3NOYW1lKTthLnRpdGxlQXR0ciYmai5hdHRyKCJ0aXRsZSIsYS50aXRsZUF0dHIpO2EubmFtZXNwYWNlfHwoYS5uYW1lc3BhY2U9Ii5kdC1idXR0b24tIit2KyspO2U9KGU9dGhpcy5jLmRvbS5idXR0b25Db250YWluZXIpJiZlLnRhZz9kKCI8IitlLnRhZysiLz4iKS5hZGRDbGFzcyhlLmNsYXNzTmFtZSkuYXBwZW5kKGopOmo7dGhpcy5fYWRkS2V5KGEpO3JldHVybntjb25mOmEsbm9kZTpqLmdldCgwKSxpbnNlcnRlcjplLGJ1dHRvbnM6W10saW5Db2xsZWN0aW9uOmIsY29sbGVjdGlvbjpudWxsfX0sX25vZGVUb0J1dHRvbjpmdW5jdGlvbihhLApiKXtifHwoYj10aGlzLnMuYnV0dG9ucyk7Zm9yKHZhciBjPTAsZD1iLmxlbmd0aDtjPGQ7YysrKXtpZihiW2NdLm5vZGU9PT1hKXJldHVybiBiW2NdO2lmKGJbY10uYnV0dG9ucy5sZW5ndGgpe3ZhciBnPXRoaXMuX25vZGVUb0J1dHRvbihhLGJbY10uYnV0dG9ucyk7aWYoZylyZXR1cm4gZ319fSxfbm9kZVRvSG9zdDpmdW5jdGlvbihhLGIpe2J8fChiPXRoaXMucy5idXR0b25zKTtmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspe2lmKGJbY10ubm9kZT09PWEpcmV0dXJuIGI7aWYoYltjXS5idXR0b25zLmxlbmd0aCl7dmFyIGc9dGhpcy5fbm9kZVRvSG9zdChhLGJbY10uYnV0dG9ucyk7aWYoZylyZXR1cm4gZ319fSxfa2V5cHJlc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1mdW5jdGlvbihlKXtmb3IodmFyIGc9MCxoPWUubGVuZ3RoO2c8aDtnKyspe3ZhciBmPWVbZ10uY29uZixxPWVbZ10ubm9kZTtpZihmLmtleSlpZihmLmtleT09PWEpZChxKS5jbGljaygpO2Vsc2UgaWYoZC5pc1BsYWluT2JqZWN0KGYua2V5KSYmCmYua2V5LmtleT09PWEmJighZi5rZXkuc2hpZnRLZXl8fGIuc2hpZnRLZXkpKWlmKCFmLmtleS5hbHRLZXl8fGIuYWx0S2V5KWlmKCFmLmtleS5jdHJsS2V5fHxiLmN0cmxLZXkpKCFmLmtleS5tZXRhS2V5fHxiLm1ldGFLZXkpJiZkKHEpLmNsaWNrKCk7ZVtnXS5idXR0b25zLmxlbmd0aCYmYyhlW2ddLmJ1dHRvbnMpfX07Yyh0aGlzLnMuYnV0dG9ucyl9LF9yZW1vdmVLZXk6ZnVuY3Rpb24oYSl7aWYoYS5rZXkpe3ZhciBiPWQuaXNQbGFpbk9iamVjdChhLmtleSk/YS5rZXkua2V5OmEua2V5LGE9dGhpcy5zLmxpc3RlbktleXMuc3BsaXQoIiIpLGI9ZC5pbkFycmF5KGIsYSk7YS5zcGxpY2UoYiwxKTt0aGlzLnMubGlzdGVuS2V5cz1hLmpvaW4oIiIpfX0sX3Jlc29sdmVFeHRlbmRzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj10aGlzLnMuZHQsYyxlLGc9ZnVuY3Rpb24oYyl7Zm9yKHZhciBlPTA7IWQuaXNQbGFpbk9iamVjdChjKSYmIWQuaXNBcnJheShjKTspe2lmKGM9PT1sKXJldHVybjsKaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBjKXtpZihjPWMoYixhKSwhYylyZXR1cm4hMX1lbHNlIGlmKCJzdHJpbmciPT09dHlwZW9mIGMpe2lmKCFrW2NdKXRocm93IlVua25vd24gYnV0dG9uIHR5cGU6ICIrYztjPWtbY119ZSsrO2lmKDMwPGUpdGhyb3ciQnV0dG9uczogVG9vIG1hbnkgaXRlcmF0aW9ucyI7fXJldHVybiBkLmlzQXJyYXkoYyk/YzpkLmV4dGVuZCh7fSxjKX0sYT1nKGEpO2EmJmEuZXh0ZW5kOyl7aWYoIWtbYS5leHRlbmRdKXRocm93IkNhbm5vdCBleHRlbmQgdW5rbm93biBidXR0b24gdHlwZTogIithLmV4dGVuZDt2YXIgaD1nKGtbYS5leHRlbmRdKTtpZihkLmlzQXJyYXkoaCkpcmV0dXJuIGg7aWYoIWgpcmV0dXJuITE7Yz1oLmNsYXNzTmFtZTthPWQuZXh0ZW5kKHt9LGgsYSk7YyYmYS5jbGFzc05hbWUhPT1jJiYoYS5jbGFzc05hbWU9YysiICIrYS5jbGFzc05hbWUpO3ZhciBmPWEucG9zdGZpeEJ1dHRvbnM7aWYoZil7YS5idXR0b25zfHwoYS5idXR0b25zPVtdKTsKYz0wO2ZvcihlPWYubGVuZ3RoO2M8ZTtjKyspYS5idXR0b25zLnB1c2goZltjXSk7YS5wb3N0Zml4QnV0dG9ucz1udWxsfWlmKGY9YS5wcmVmaXhCdXR0b25zKXthLmJ1dHRvbnN8fChhLmJ1dHRvbnM9W10pO2M9MDtmb3IoZT1mLmxlbmd0aDtjPGU7YysrKWEuYnV0dG9ucy5zcGxpY2UoYywwLGZbY10pO2EucHJlZml4QnV0dG9ucz1udWxsfWEuZXh0ZW5kPWguZXh0ZW5kfXJldHVybiBhfX0pO20uYmFja2dyb3VuZD1mdW5jdGlvbihhLGIsYyl7Yz09PWwmJihjPTQwMCk7YT9kKCI8ZGl2Lz4iKS5hZGRDbGFzcyhiKS5jc3MoImRpc3BsYXkiLCJub25lIikuYXBwZW5kVG8oImJvZHkiKS5mYWRlSW4oYyk6ZCgiYm9keSA+IGRpdi4iK2IpLmZhZGVPdXQoYyxmdW5jdGlvbigpe2QodGhpcykucmVtb3ZlKCl9KX07bS5pbnN0YW5jZVNlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoIWEpcmV0dXJuIGQubWFwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5zdH0pO3ZhciBjPVtdLGU9ZC5tYXAoYiwKZnVuY3Rpb24oYSl7cmV0dXJuIGEubmFtZX0pLGc9ZnVuY3Rpb24oYSl7aWYoZC5pc0FycmF5KGEpKWZvcih2YXIgZj0wLHE9YS5sZW5ndGg7ZjxxO2YrKylnKGFbZl0pO2Vsc2Uic3RyaW5nIj09PXR5cGVvZiBhPy0xIT09YS5pbmRleE9mKCIsIik/ZyhhLnNwbGl0KCIsIikpOihhPWQuaW5BcnJheShkLnRyaW0oYSksZSksLTEhPT1hJiZjLnB1c2goYlthXS5pbnN0KSk6Im51bWJlciI9PT10eXBlb2YgYSYmYy5wdXNoKGJbYV0uaW5zdCl9O2coYSk7cmV0dXJuIGN9O20uYnV0dG9uU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZT1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkLGcsZj0wLGg9Yi5sZW5ndGg7ZjxoO2YrKylpZihkPWJbZl0pZz1jIT09bD9jK2Y6ZisiIixhLnB1c2goe25vZGU6ZC5ub2RlLG5hbWU6ZC5jb25mLm5hbWUsaWR4Omd9KSxkLmJ1dHRvbnMmJmUoYSxkLmJ1dHRvbnMsZysiLSIpfSxnPWZ1bmN0aW9uKGEsYil7dmFyIGYsaCxpPVtdO2UoaSxiLnMuYnV0dG9ucyk7CmY9ZC5tYXAoaSxmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlfSk7aWYoZC5pc0FycmF5KGEpfHxhIGluc3RhbmNlb2YgZCl7Zj0wO2ZvcihoPWEubGVuZ3RoO2Y8aDtmKyspZyhhW2ZdLGIpfWVsc2UgaWYobnVsbD09PWF8fGE9PT1sfHwiKiI9PT1hKXtmPTA7Zm9yKGg9aS5sZW5ndGg7ZjxoO2YrKyljLnB1c2goe2luc3Q6Yixub2RlOmlbZl0ubm9kZX0pfWVsc2UgaWYoIm51bWJlciI9PT10eXBlb2YgYSljLnB1c2goe2luc3Q6Yixub2RlOmIucy5idXR0b25zW2FdLm5vZGV9KTtlbHNlIGlmKCJzdHJpbmciPT09dHlwZW9mIGEpaWYoLTEhPT1hLmluZGV4T2YoIiwiKSl7aT1hLnNwbGl0KCIsIik7Zj0wO2ZvcihoPWkubGVuZ3RoO2Y8aDtmKyspZyhkLnRyaW0oaVtmXSksYil9ZWxzZSBpZihhLm1hdGNoKC9eXGQrKFwtXGQrKSokLykpZj1kLm1hcChpLGZ1bmN0aW9uKGEpe3JldHVybiBhLmlkeH0pLGMucHVzaCh7aW5zdDpiLG5vZGU6aVtkLmluQXJyYXkoYSxmKV0ubm9kZX0pO2Vsc2UgaWYoLTEhPT0KYS5pbmRleE9mKCI6bmFtZSIpKXt2YXIgaz1hLnJlcGxhY2UoIjpuYW1lIiwiIik7Zj0wO2ZvcihoPWkubGVuZ3RoO2Y8aDtmKyspaVtmXS5uYW1lPT09ayYmYy5wdXNoKHtpbnN0OmIsbm9kZTppW2ZdLm5vZGV9KX1lbHNlIGQoZikuZmlsdGVyKGEpLmVhY2goZnVuY3Rpb24oKXtjLnB1c2goe2luc3Q6Yixub2RlOnRoaXN9KX0pO2Vsc2Uib2JqZWN0Ij09PXR5cGVvZiBhJiZhLm5vZGVOYW1lJiYoaT1kLmluQXJyYXkoYSxmKSwtMSE9PWkmJmMucHVzaCh7aW5zdDpiLG5vZGU6ZltpXX0pKX0saD0wLGY9YS5sZW5ndGg7aDxmO2grKylnKGIsYVtoXSk7cmV0dXJuIGN9O20uZGVmYXVsdHM9e2J1dHRvbnM6WyJjb3B5IiwiZXhjZWwiLCJjc3YiLCJwZGYiLCJwcmludCJdLG5hbWU6Im1haW4iLHRhYkluZGV4OjAsZG9tOntjb250YWluZXI6e3RhZzoiZGl2IixjbGFzc05hbWU6ImR0LWJ1dHRvbnMifSxjb2xsZWN0aW9uOnt0YWc6ImRpdiIsY2xhc3NOYW1lOiJkdC1idXR0b24tY29sbGVjdGlvbiJ9LApidXR0b246e3RhZzoiYSIsY2xhc3NOYW1lOiJkdC1idXR0b24iLGFjdGl2ZToiYWN0aXZlIixkaXNhYmxlZDoiZGlzYWJsZWQifSxidXR0b25MaW5lcjp7dGFnOiJzcGFuIixjbGFzc05hbWU6IiJ9fX07bS52ZXJzaW9uPSIxLjIuMCI7ZC5leHRlbmQoayx7Y29sbGVjdGlvbjp7dGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5pMThuKCJidXR0b25zLmNvbGxlY3Rpb24iLCJDb2xsZWN0aW9uIil9LGNsYXNzTmFtZToiYnV0dG9ucy1jb2xsZWN0aW9uIixhY3Rpb246ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGE9Yy5vZmZzZXQoKSxnPWQoYi50YWJsZSgpLmNvbnRhaW5lcigpKSxoPSExO2QoImRpdi5kdC1idXR0b24tYmFja2dyb3VuZCIpLmxlbmd0aCYmKGg9ZCgiZGl2LmR0LWJ1dHRvbi1jb2xsZWN0aW9uIikub2Zmc2V0KCksZCgiYm9keSIpLnRyaWdnZXIoImNsaWNrLmR0Yi1jb2xsZWN0aW9uIikpO2UuX2NvbGxlY3Rpb24uYWRkQ2xhc3MoZS5jb2xsZWN0aW9uTGF5b3V0KS5jc3MoImRpc3BsYXkiLAoibm9uZSIpLmFwcGVuZFRvKCJib2R5IikuZmFkZUluKGUuZmFkZSk7dmFyIGY9ZS5fY29sbGVjdGlvbi5jc3MoInBvc2l0aW9uIik7aCYmImFic29sdXRlIj09PWY/ZS5fY29sbGVjdGlvbi5jc3Moe3RvcDpoLnRvcCs1LGxlZnQ6aC5sZWZ0KzV9KToiYWJzb2x1dGUiPT09Zj8oZS5fY29sbGVjdGlvbi5jc3Moe3RvcDphLnRvcCtjLm91dGVySGVpZ2h0KCksbGVmdDphLmxlZnR9KSxjPWEubGVmdCtlLl9jb2xsZWN0aW9uLm91dGVyV2lkdGgoKSxnPWcub2Zmc2V0KCkubGVmdCtnLndpZHRoKCksYz5nJiZlLl9jb2xsZWN0aW9uLmNzcygibGVmdCIsYS5sZWZ0LShjLWcpKSk6KGE9ZS5fY29sbGVjdGlvbi5oZWlnaHQoKS8yLGE+ZChvKS5oZWlnaHQoKS8yJiYoYT1kKG8pLmhlaWdodCgpLzIpLGUuX2NvbGxlY3Rpb24uY3NzKCJtYXJnaW5Ub3AiLC0xKmEpKTtlLmJhY2tncm91bmQmJm0uYmFja2dyb3VuZCghMCxlLmJhY2tncm91bmRDbGFzc05hbWUsZS5mYWRlKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZCgiZGl2LmR0LWJ1dHRvbi1iYWNrZ3JvdW5kIikub24oImNsaWNrLmR0Yi1jb2xsZWN0aW9uIiwKZnVuY3Rpb24oKXt9KTtkKCJib2R5Iikub24oImNsaWNrLmR0Yi1jb2xsZWN0aW9uIixmdW5jdGlvbihhKXtpZighZChhLnRhcmdldCkucGFyZW50cygpLmFuZFNlbGYoKS5maWx0ZXIoZS5fY29sbGVjdGlvbikubGVuZ3RoKXtlLl9jb2xsZWN0aW9uLmZhZGVPdXQoZS5mYWRlLGZ1bmN0aW9uKCl7ZS5fY29sbGVjdGlvbi5kZXRhY2goKX0pO2QoImRpdi5kdC1idXR0b24tYmFja2dyb3VuZCIpLm9mZigiY2xpY2suZHRiLWNvbGxlY3Rpb24iKTttLmJhY2tncm91bmQoZmFsc2UsZS5iYWNrZ3JvdW5kQ2xhc3NOYW1lLGUuZmFkZSk7ZCgiYm9keSIpLm9mZigiY2xpY2suZHRiLWNvbGxlY3Rpb24iKTtiLm9mZigiYnV0dG9ucy1hY3Rpb24uYi1pbnRlcm5hbCIpfX0pfSwxMCk7aWYoZS5hdXRvQ2xvc2UpYi5vbigiYnV0dG9ucy1hY3Rpb24uYi1pbnRlcm5hbCIsZnVuY3Rpb24oKXtkKCJkaXYuZHQtYnV0dG9uLWJhY2tncm91bmQiKS5jbGljaygpfSl9LGJhY2tncm91bmQ6ITAsY29sbGVjdGlvbkxheW91dDoiIiwKYmFja2dyb3VuZENsYXNzTmFtZToiZHQtYnV0dG9uLWJhY2tncm91bmQiLGF1dG9DbG9zZTohMSxmYWRlOjQwMH0sY29weTpmdW5jdGlvbihhLGIpe2lmKGsuY29weUh0bWw1KXJldHVybiJjb3B5SHRtbDUiO2lmKGsuY29weUZsYXNoJiZrLmNvcHlGbGFzaC5hdmFpbGFibGUoYSxiKSlyZXR1cm4iY29weUZsYXNoIn0sY3N2OmZ1bmN0aW9uKGEsYil7aWYoay5jc3ZIdG1sNSYmay5jc3ZIdG1sNS5hdmFpbGFibGUoYSxiKSlyZXR1cm4iY3N2SHRtbDUiO2lmKGsuY3N2Rmxhc2gmJmsuY3N2Rmxhc2guYXZhaWxhYmxlKGEsYikpcmV0dXJuImNzdkZsYXNoIn0sZXhjZWw6ZnVuY3Rpb24oYSxiKXtpZihrLmV4Y2VsSHRtbDUmJmsuZXhjZWxIdG1sNS5hdmFpbGFibGUoYSxiKSlyZXR1cm4iZXhjZWxIdG1sNSI7aWYoay5leGNlbEZsYXNoJiZrLmV4Y2VsRmxhc2guYXZhaWxhYmxlKGEsYikpcmV0dXJuImV4Y2VsRmxhc2gifSxwZGY6ZnVuY3Rpb24oYSxiKXtpZihrLnBkZkh0bWw1JiZrLnBkZkh0bWw1LmF2YWlsYWJsZShhLApiKSlyZXR1cm4icGRmSHRtbDUiO2lmKGsucGRmRmxhc2gmJmsucGRmRmxhc2guYXZhaWxhYmxlKGEsYikpcmV0dXJuInBkZkZsYXNoIn0scGFnZUxlbmd0aDpmdW5jdGlvbihhKXt2YXIgYT1hLnNldHRpbmdzKClbMF0uYUxlbmd0aE1lbnUsYj1kLmlzQXJyYXkoYVswXSk/YVswXTphLGM9ZC5pc0FycmF5KGFbMF0pP2FbMV06YSxlPWZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMucGFnZUxlbmd0aCIseyItMSI6IlNob3cgYWxsIHJvd3MiLF86IlNob3cgJWQgcm93cyJ9LGEucGFnZS5sZW4oKSl9O3JldHVybntleHRlbmQ6ImNvbGxlY3Rpb24iLHRleHQ6ZSxjbGFzc05hbWU6ImJ1dHRvbnMtcGFnZS1sZW5ndGgiLGF1dG9DbG9zZTohMCxidXR0b25zOmQubWFwKGIsZnVuY3Rpb24oYSxiKXtyZXR1cm57dGV4dDpjW2JdLGFjdGlvbjpmdW5jdGlvbihiLGMpe2MucGFnZS5sZW4oYSkuZHJhdygpfSxpbml0OmZ1bmN0aW9uKGIsYyxkKXt2YXIgZT10aGlzLGM9ZnVuY3Rpb24oKXtlLmFjdGl2ZShiLnBhZ2UubGVuKCk9PT0KYSl9O2Iub24oImxlbmd0aC5kdCIrZC5uYW1lc3BhY2UsYyk7YygpfSxkZXN0cm95OmZ1bmN0aW9uKGEsYixjKXthLm9mZigibGVuZ3RoLmR0IitjLm5hbWVzcGFjZSl9fX0pLGluaXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXM7YS5vbigibGVuZ3RoLmR0IitjLm5hbWVzcGFjZSxmdW5jdGlvbigpe2QudGV4dChlKGEpKX0pfSxkZXN0cm95OmZ1bmN0aW9uKGEsYixjKXthLm9mZigibGVuZ3RoLmR0IitjLm5hbWVzcGFjZSl9fX19KTtpLkFwaS5yZWdpc3RlcigiYnV0dG9ucygpIixmdW5jdGlvbihhLGIpe2I9PT1sJiYoYj1hLGE9bCk7cmV0dXJuIHRoaXMuaXRlcmF0b3IoITAsInRhYmxlIixmdW5jdGlvbihjKXtpZihjLl9idXR0b25zKXJldHVybiBtLmJ1dHRvblNlbGVjdG9yKG0uaW5zdGFuY2VTZWxlY3RvcihhLGMuX2J1dHRvbnMpLGIpfSwhMCl9KTtpLkFwaS5yZWdpc3RlcigiYnV0dG9uKCkiLGZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5idXR0b25zKGEsYik7MTxjLmxlbmd0aCYmCmMuc3BsaWNlKDEsYy5sZW5ndGgpO3JldHVybiBjfSk7aS5BcGkucmVnaXN0ZXJQbHVyYWwoImJ1dHRvbnMoKS5hY3RpdmUoKSIsImJ1dHRvbigpLmFjdGl2ZSgpIixmdW5jdGlvbihhKXtyZXR1cm4gYT09PWw/dGhpcy5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5zdC5hY3RpdmUoYS5ub2RlKX0pOnRoaXMuZWFjaChmdW5jdGlvbihiKXtiLmluc3QuYWN0aXZlKGIubm9kZSxhKX0pfSk7aS5BcGkucmVnaXN0ZXJQbHVyYWwoImJ1dHRvbnMoKS5hY3Rpb24oKSIsImJ1dHRvbigpLmFjdGlvbigpIixmdW5jdGlvbihhKXtyZXR1cm4gYT09PWw/dGhpcy5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5zdC5hY3Rpb24oYS5ub2RlKX0pOnRoaXMuZWFjaChmdW5jdGlvbihiKXtiLmluc3QuYWN0aW9uKGIubm9kZSxhKX0pfSk7aS5BcGkucmVnaXN0ZXIoWyJidXR0b25zKCkuZW5hYmxlKCkiLCJidXR0b24oKS5lbmFibGUoKSJdLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Yi5pbnN0LmVuYWJsZShiLm5vZGUsCmEpfSl9KTtpLkFwaS5yZWdpc3RlcihbImJ1dHRvbnMoKS5kaXNhYmxlKCkiLCJidXR0b24oKS5kaXNhYmxlKCkiXSxmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYSl7YS5pbnN0LmRpc2FibGUoYS5ub2RlKX0pfSk7aS5BcGkucmVnaXN0ZXJQbHVyYWwoImJ1dHRvbnMoKS5ub2RlcygpIiwiYnV0dG9uKCkubm9kZSgpIixmdW5jdGlvbigpe3ZhciBhPWQoKTtkKHRoaXMuZWFjaChmdW5jdGlvbihiKXthPWEuYWRkKGIuaW5zdC5ub2RlKGIubm9kZSkpfSkpO3JldHVybiBhfSk7aS5BcGkucmVnaXN0ZXJQbHVyYWwoImJ1dHRvbnMoKS50ZXh0KCkiLCJidXR0b24oKS50ZXh0KCkiLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09bD90aGlzLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS5pbnN0LnRleHQoYS5ub2RlKX0pOnRoaXMuZWFjaChmdW5jdGlvbihiKXtiLmluc3QudGV4dChiLm5vZGUsYSl9KX0pO2kuQXBpLnJlZ2lzdGVyUGx1cmFsKCJidXR0b25zKCkudHJpZ2dlcigpIiwKImJ1dHRvbigpLnRyaWdnZXIoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGEpe2EuaW5zdC5ub2RlKGEubm9kZSkudHJpZ2dlcigiY2xpY2siKX0pfSk7aS5BcGkucmVnaXN0ZXJQbHVyYWwoImJ1dHRvbnMoKS5jb250YWluZXJzKCkiLCJidXR0b25zKCkuY29udGFpbmVyKCkiLGZ1bmN0aW9uKCl7dmFyIGE9ZCgpO2QodGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2E9YS5hZGQoYi5pbnN0LmNvbnRhaW5lcigpKX0pKTtyZXR1cm4gYX0pO2kuQXBpLnJlZ2lzdGVyKCJidXR0b24oKS5hZGQoKSIsZnVuY3Rpb24oYSxiKXsxPT09dGhpcy5sZW5ndGgmJnRoaXNbMF0uaW5zdC5hZGQoYixhKTtyZXR1cm4gdGhpcy5idXR0b24oYSl9KTtpLkFwaS5yZWdpc3RlcigiYnV0dG9ucygpLmRlc3Ryb3koKSIsZnVuY3Rpb24oKXt0aGlzLnBsdWNrKCJpbnN0IikudW5pcXVlKCkuZWFjaChmdW5jdGlvbihhKXthLmRlc3Ryb3koKX0pO3JldHVybiB0aGlzfSk7aS5BcGkucmVnaXN0ZXJQbHVyYWwoImJ1dHRvbnMoKS5yZW1vdmUoKSIsCiJidXR0b25zKCkucmVtb3ZlKCkiLGZ1bmN0aW9uKCl7dGhpcy5lYWNoKGZ1bmN0aW9uKGEpe2EuaW5zdC5yZW1vdmUoYS5ub2RlKX0pO3JldHVybiB0aGlzfSk7dmFyIHI7aS5BcGkucmVnaXN0ZXIoImJ1dHRvbnMuaW5mbygpIixmdW5jdGlvbihhLGIsYyl7dmFyIGU9dGhpcztpZighMT09PWEpcmV0dXJuIGQoIiNkYXRhdGFibGVzX2J1dHRvbnNfaW5mbyIpLmZhZGVPdXQoZnVuY3Rpb24oKXtkKHRoaXMpLnJlbW92ZSgpfSksY2xlYXJUaW1lb3V0KHIpLHI9bnVsbCx0aGlzO3ImJmNsZWFyVGltZW91dChyKTtkKCIjZGF0YXRhYmxlc19idXR0b25zX2luZm8iKS5sZW5ndGgmJmQoIiNkYXRhdGFibGVzX2J1dHRvbnNfaW5mbyIpLnJlbW92ZSgpO2QoJzxkaXYgaWQ9ImRhdGF0YWJsZXNfYnV0dG9uc19pbmZvIiBjbGFzcz0iZHQtYnV0dG9uLWluZm8iLz4nKS5odG1sKGE/IjxoMj4iK2ErIjwvaDI+IjoiIikuYXBwZW5kKGQoIjxkaXYvPiIpWyJzdHJpbmciPT09dHlwZW9mIGI/Imh0bWwiOgoiYXBwZW5kIl0oYikpLmNzcygiZGlzcGxheSIsIm5vbmUiKS5hcHBlbmRUbygiYm9keSIpLmZhZGVJbigpO2MhPT1sJiYwIT09YyYmKHI9c2V0VGltZW91dChmdW5jdGlvbigpe2UuYnV0dG9ucy5pbmZvKCExKX0sYykpO3JldHVybiB0aGlzfSk7aS5BcGkucmVnaXN0ZXIoImJ1dHRvbnMuZXhwb3J0RGF0YSgpIixmdW5jdGlvbihhKXtpZih0aGlzLmNvbnRleHQubGVuZ3RoKXtmb3IodmFyIGI9bmV3IGkuQXBpKHRoaXMuY29udGV4dFswXSksYz1kLmV4dGVuZCghMCx7fSx7cm93czpudWxsLGNvbHVtbnM6IiIsbW9kaWZpZXI6e3NlYXJjaDoiYXBwbGllZCIsb3JkZXI6ImFwcGxpZWQifSxvcnRob2dvbmFsOiJkaXNwbGF5IixzdHJpcEh0bWw6ITAsc3RyaXBOZXdsaW5lczohMCxkZWNvZGVFbnRpdGllczohMCx0cmltOiEwLGZvcm1hdDp7aGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBlKGEpfSxmb290ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSl9LGJvZHk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSl9fX0sCmEpLGU9ZnVuY3Rpb24oYSl7aWYoInN0cmluZyIhPT10eXBlb2YgYSlyZXR1cm4gYTtjLnN0cmlwSHRtbCYmKGE9YS5yZXBsYWNlKC88W14+XSo+L2csIiIpKTtjLnRyaW0mJihhPWEucmVwbGFjZSgvXlxzK3xccyskL2csIiIpKTtjLnN0cmlwTmV3bGluZXMmJihhPWEucmVwbGFjZSgvXG4vZywiICIpKTtjLmRlY29kZUVudGl0aWVzJiYodC5pbm5lckhUTUw9YSxhPXQudmFsdWUpO3JldHVybiBhfSxhPWIuY29sdW1ucyhjLmNvbHVtbnMpLmluZGV4ZXMoKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGMuZm9ybWF0LmhlYWRlcihiLmNvbHVtbihhKS5oZWFkZXIoKS5pbm5lckhUTUwsYSl9KS50b0FycmF5KCksZz1iLnRhYmxlKCkuZm9vdGVyKCk/Yi5jb2x1bW5zKGMuY29sdW1ucykuaW5kZXhlcygpLm1hcChmdW5jdGlvbihhKXt2YXIgZD1iLmNvbHVtbihhKS5mb290ZXIoKTtyZXR1cm4gYy5mb3JtYXQuZm9vdGVyKGQ/ZC5pbm5lckhUTUw6IiIsYSl9KS50b0FycmF5KCk6bnVsbCxoPQpiLnJvd3MoYy5yb3dzLGMubW9kaWZpZXIpLmluZGV4ZXMoKS50b0FycmF5KCksaD1iLmNlbGxzKGgsYy5jb2x1bW5zKS5yZW5kZXIoYy5vcnRob2dvbmFsKS50b0FycmF5KCksZj1hLmxlbmd0aCxrPTA8Zj9oLmxlbmd0aC9mOjAsaj1BcnJheShrKSxtPTAsbD0wO2w8aztsKyspe2Zvcih2YXIgbz1BcnJheShmKSxuPTA7bjxmO24rKylvW25dPWMuZm9ybWF0LmJvZHkoaFttXSxuLGwpLG0rKztqW2xdPW99cmV0dXJue2hlYWRlcjphLGZvb3RlcjpnLGJvZHk6an19fSk7dmFyIHQ9ZCgiPHRleHRhcmVhLz4iKVswXTtkLmZuLmRhdGFUYWJsZS5CdXR0b25zPW07ZC5mbi5EYXRhVGFibGUuQnV0dG9ucz1tO2Qobikub24oImluaXQuZHQgcGx1Z2luLWluaXQuZHQiLGZ1bmN0aW9uKGEsYil7aWYoImR0Ij09PWEubmFtZXNwYWNlKXt2YXIgYz1iLm9Jbml0LmJ1dHRvbnN8fGkuZGVmYXVsdHMuYnV0dG9ucztjJiYhYi5fYnV0dG9ucyYmKG5ldyBtKGIsYykpLmNvbnRhaW5lcigpfX0pO2kuZXh0LmZlYXR1cmUucHVzaCh7Zm5Jbml0OmZ1bmN0aW9uKGEpe3ZhciBhPQpuZXcgaS5BcGkoYSksYj1hLmluaXQoKS5idXR0b25zfHxpLmRlZmF1bHRzLmJ1dHRvbnM7cmV0dXJuKG5ldyBtKGEsYikpLmNvbnRhaW5lcigpfSxjRmVhdHVyZToiQiJ9KTtyZXR1cm4gbX0pOwo="></script>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKGcpeyJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSIsImRhdGF0YWJsZXMubmV0IiwiZGF0YXRhYmxlcy5uZXQtYnV0dG9ucyJdLGZ1bmN0aW9uKGkpe3JldHVybiBnKGksd2luZG93LGRvY3VtZW50KX0pOiJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24oaSxrKXtpfHwoaT13aW5kb3cpO2lmKCFrfHwhay5mbi5kYXRhVGFibGUpaz1yZXF1aXJlKCJkYXRhdGFibGVzLm5ldCIpKGksaykuJDtrLmZuLmRhdGFUYWJsZS5CdXR0b25zfHxyZXF1aXJlKCJkYXRhdGFibGVzLm5ldC1idXR0b25zIikoaSxrKTtyZXR1cm4gZyhrLGksaS5kb2N1bWVudCl9OmcoalF1ZXJ5LHdpbmRvdyxkb2N1bWVudCl9KShmdW5jdGlvbihnLGksayxvKXtmdW5jdGlvbiBsKGEsYixkKXt2YXIgYz1hLmNyZWF0ZUVsZW1lbnQoYik7ZCYmKGQuYXR0ciYmZyhjKS5hdHRyKGQuYXR0ciksZC5jaGlsZHJlbiYmCmcuZWFjaChkLmNoaWxkcmVuLGZ1bmN0aW9uKGEsYil7Yy5hcHBlbmRDaGlsZChiKX0pLGQudGV4dCYmYy5hcHBlbmRDaGlsZChhLmNyZWF0ZVRleHROb2RlKGQudGV4dCkpKTtyZXR1cm4gY31mdW5jdGlvbiB5KGEsYil7dmFyIGQ9YS5oZWFkZXJbYl0ubGVuZ3RoLGM7YS5mb290ZXImJmEuZm9vdGVyW2JdLmxlbmd0aD5kJiYoZD1hLmZvb3RlcltiXS5sZW5ndGgpO2Zvcih2YXIgZT0wLGY9YS5ib2R5Lmxlbmd0aDtlPGYmJiEoYz1hLmJvZHlbZV1bYl0udG9TdHJpbmcoKS5sZW5ndGgsYz5kJiYoZD1jKSw0MDxkKTtlKyspO3JldHVybiA1PGQ/ZDo1fWZ1bmN0aW9uIHUoYSl7bj09PW8mJihuPS0xPT09di5zZXJpYWxpemVUb1N0cmluZyhnLnBhcnNlWE1MKHBbInhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbCJdKSkuaW5kZXhPZigieG1sbnM6ciIpKTtnLmVhY2goYSxmdW5jdGlvbihiLGQpe2lmKGcuaXNQbGFpbk9iamVjdChkKSl1KGQpO2Vsc2V7aWYobil7dmFyIGM9ZC5jaGlsZE5vZGVzWzBdLAplLGYsaD1bXTtmb3IoZT1jLmF0dHJpYnV0ZXMubGVuZ3RoLTE7MDw9ZTtlLS0pe2Y9Yy5hdHRyaWJ1dGVzW2VdLm5vZGVOYW1lO3ZhciBpPWMuYXR0cmlidXRlc1tlXS5ub2RlVmFsdWU7LTEhPT1mLmluZGV4T2YoIjoiKSYmKGgucHVzaCh7bmFtZTpmLHZhbHVlOml9KSxjLnJlbW92ZUF0dHJpYnV0ZShmKSl9ZT0wO2ZvcihmPWgubGVuZ3RoO2U8ZjtlKyspaT1kLmNyZWF0ZUF0dHJpYnV0ZShoW2VdLm5hbWUucmVwbGFjZSgiOiIsIl9kdF9iX25hbWVzcGFjZV90b2tlbl8iKSksaS52YWx1ZT1oW2VdLnZhbHVlLGMuc2V0QXR0cmlidXRlTm9kZShpKX1jPXYuc2VyaWFsaXplVG9TdHJpbmcoZCk7biYmKC0xPT09Yy5pbmRleE9mKCI8P3htbCIpJiYoYz0nPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PicrYyksYz1jLnJlcGxhY2UoL19kdF9iX25hbWVzcGFjZV90b2tlbl8vZywiOiIpKTtjPWMucmVwbGFjZSgvPHJvdyB4bWxucz0iIiAvZywKIjxyb3cgIikucmVwbGFjZSgvPGNvbHMgeG1sbnM9IiI+L2csIjxjb2xzPiIpO2FbYl09Y319KX12YXIgaj1nLmZuLmRhdGFUYWJsZSxoPXt2ZXJzaW9uOiIxLjAuNC1UYWJsZVRvb2xzMiIsY2xpZW50czp7fSxtb3ZpZVBhdGg6IiIsbmV4dElkOjEsJDpmdW5jdGlvbihhKXsic3RyaW5nIj09dHlwZW9mIGEmJihhPWsuZ2V0RWxlbWVudEJ5SWQoYSkpO2EuYWRkQ2xhc3N8fChhLmhpZGU9ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9Im5vbmUifSxhLnNob3c9ZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9IiJ9LGEuYWRkQ2xhc3M9ZnVuY3Rpb24oYSl7dGhpcy5yZW1vdmVDbGFzcyhhKTt0aGlzLmNsYXNzTmFtZSs9IiAiK2F9LGEucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24oYSl7dGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWUucmVwbGFjZShSZWdFeHAoIlxccyoiK2ErIlxccyoiKSwiICIpLnJlcGxhY2UoL15ccysvLCIiKS5yZXBsYWNlKC9ccyskLywiIil9LGEuaGFzQ2xhc3M9CmZ1bmN0aW9uKGEpe3JldHVybiEhdGhpcy5jbGFzc05hbWUubWF0Y2goUmVnRXhwKCJcXHMqIithKyJcXHMqIikpfSk7cmV0dXJuIGF9LHNldE1vdmllUGF0aDpmdW5jdGlvbihhKXt0aGlzLm1vdmllUGF0aD1hfSxkaXNwYXRjaDpmdW5jdGlvbihhLGIsZCl7KGE9dGhpcy5jbGllbnRzW2FdKSYmYS5yZWNlaXZlRXZlbnQoYixkKX0sbG9nOmZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKCJGbGFzaDogIithKX0scmVnaXN0ZXI6ZnVuY3Rpb24oYSxiKXt0aGlzLmNsaWVudHNbYV09Yn0sZ2V0RE9NT2JqZWN0UG9zaXRpb246ZnVuY3Rpb24oYSl7dmFyIGI9e2xlZnQ6MCx0b3A6MCx3aWR0aDphLndpZHRoP2Eud2lkdGg6YS5vZmZzZXRXaWR0aCxoZWlnaHQ6YS5oZWlnaHQ/YS5oZWlnaHQ6YS5vZmZzZXRIZWlnaHR9OyIiIT09YS5zdHlsZS53aWR0aCYmKGIud2lkdGg9YS5zdHlsZS53aWR0aC5yZXBsYWNlKCJweCIsIiIpKTsiIiE9PWEuc3R5bGUuaGVpZ2h0JiYoYi5oZWlnaHQ9YS5zdHlsZS5oZWlnaHQucmVwbGFjZSgicHgiLAoiIikpO2Zvcig7YTspYi5sZWZ0Kz1hLm9mZnNldExlZnQsYi50b3ArPWEub2Zmc2V0VG9wLGE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGJ9LENsaWVudDpmdW5jdGlvbihhKXt0aGlzLmhhbmRsZXJzPXt9O3RoaXMuaWQ9aC5uZXh0SWQrKzt0aGlzLm1vdmllSWQ9Ilplcm9DbGlwYm9hcmRfVGFibGVUb29sc01vdmllXyIrdGhpcy5pZDtoLnJlZ2lzdGVyKHRoaXMuaWQsdGhpcyk7YSYmdGhpcy5nbHVlKGEpfX07aC5DbGllbnQucHJvdG90eXBlPXtpZDowLHJlYWR5OiExLG1vdmllOm51bGwsY2xpcFRleHQ6IiIsZmlsZU5hbWU6IiIsYWN0aW9uOiJjb3B5IixoYW5kQ3Vyc29yRW5hYmxlZDohMCxjc3NFZmZlY3RzOiEwLGhhbmRsZXJzOm51bGwsc2l6ZWQ6ITEsc2hlZXROYW1lOiIiLGdsdWU6ZnVuY3Rpb24oYSxiKXt0aGlzLmRvbUVsZW1lbnQ9aC4kKGEpO3ZhciBkPTk5O3RoaXMuZG9tRWxlbWVudC5zdHlsZS56SW5kZXgmJihkPXBhcnNlSW50KHRoaXMuZG9tRWxlbWVudC5zdHlsZS56SW5kZXgsCjEwKSsxKTt2YXIgYz1oLmdldERPTU9iamVjdFBvc2l0aW9uKHRoaXMuZG9tRWxlbWVudCk7dGhpcy5kaXY9ay5jcmVhdGVFbGVtZW50KCJkaXYiKTt2YXIgZT10aGlzLmRpdi5zdHlsZTtlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7ZS5sZWZ0PSIwcHgiO2UudG9wPSIwcHgiO2Uud2lkdGg9Yy53aWR0aCsicHgiO2UuaGVpZ2h0PWMuaGVpZ2h0KyJweCI7ZS56SW5kZXg9ZDsidW5kZWZpbmVkIiE9dHlwZW9mIGImJiIiIT09YiYmKHRoaXMuZGl2LnRpdGxlPWIpOzAhPT1jLndpZHRoJiYwIT09Yy5oZWlnaHQmJih0aGlzLnNpemVkPSEwKTt0aGlzLmRvbUVsZW1lbnQmJih0aGlzLmRvbUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5kaXYpLHRoaXMuZGl2LmlubmVySFRNTD10aGlzLmdldEhUTUwoYy53aWR0aCxjLmhlaWdodCkucmVwbGFjZSgvJi9nLCImYW1wOyIpKX0scG9zaXRpb25FbGVtZW50OmZ1bmN0aW9uKCl7dmFyIGE9aC5nZXRET01PYmplY3RQb3NpdGlvbih0aGlzLmRvbUVsZW1lbnQpLApiPXRoaXMuZGl2LnN0eWxlO2IucG9zaXRpb249ImFic29sdXRlIjtiLndpZHRoPWEud2lkdGgrInB4IjtiLmhlaWdodD1hLmhlaWdodCsicHgiOzAhPT1hLndpZHRoJiYwIT09YS5oZWlnaHQmJih0aGlzLnNpemVkPSEwLGI9dGhpcy5kaXYuY2hpbGROb2Rlc1swXSxiLndpZHRoPWEud2lkdGgsYi5oZWlnaHQ9YS5oZWlnaHQpfSxnZXRIVE1MOmZ1bmN0aW9uKGEsYil7dmFyIGQ9IiIsYz0iaWQ9Iit0aGlzLmlkKyImd2lkdGg9IithKyImaGVpZ2h0PSIrYjtpZihuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9NU0lFLykpdmFyIGU9bG9jYXRpb24uaHJlZi5tYXRjaCgvXmh0dHBzL2kpPyJodHRwczovLyI6Imh0dHA6Ly8iLGQ9ZCsoJzxvYmplY3QgY2xhc3NpZD0iY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIiBjb2RlYmFzZT0iJytlKydkb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj0xMCwwLDAsMCIgd2lkdGg9IicrCmErJyIgaGVpZ2h0PSInK2IrJyIgaWQ9IicrdGhpcy5tb3ZpZUlkKyciIGFsaWduPSJtaWRkbGUiPjxwYXJhbSBuYW1lPSJhbGxvd1NjcmlwdEFjY2VzcyIgdmFsdWU9ImFsd2F5cyIgLz48cGFyYW0gbmFtZT0iYWxsb3dGdWxsU2NyZWVuIiB2YWx1ZT0iZmFsc2UiIC8+PHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0iJytoLm1vdmllUGF0aCsnIiAvPjxwYXJhbSBuYW1lPSJsb29wIiB2YWx1ZT0iZmFsc2UiIC8+PHBhcmFtIG5hbWU9Im1lbnUiIHZhbHVlPSJmYWxzZSIgLz48cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImJlc3QiIC8+PHBhcmFtIG5hbWU9ImJnY29sb3IiIHZhbHVlPSIjZmZmZmZmIiAvPjxwYXJhbSBuYW1lPSJmbGFzaHZhcnMiIHZhbHVlPSInK2MrJyIvPjxwYXJhbSBuYW1lPSJ3bW9kZSIgdmFsdWU9InRyYW5zcGFyZW50Ii8+PC9vYmplY3Q+Jyk7ZWxzZSBkKz0nPGVtYmVkIGlkPSInK3RoaXMubW92aWVJZCsnIiBzcmM9IicraC5tb3ZpZVBhdGgrJyIgbG9vcD0iZmFsc2UiIG1lbnU9ImZhbHNlIiBxdWFsaXR5PSJiZXN0IiBiZ2NvbG9yPSIjZmZmZmZmIiB3aWR0aD0iJysKYSsnIiBoZWlnaHQ9IicrYisnIiBuYW1lPSInK3RoaXMubW92aWVJZCsnIiBhbGlnbj0ibWlkZGxlIiBhbGxvd1NjcmlwdEFjY2Vzcz0iYWx3YXlzIiBhbGxvd0Z1bGxTY3JlZW49ImZhbHNlIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgcGx1Z2luc3BhZ2U9Imh0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXIiIGZsYXNodmFycz0iJytjKyciIHdtb2RlPSJ0cmFuc3BhcmVudCIgLz4nO3JldHVybiBkfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy5kaXYmJih0aGlzLmRpdi5zdHlsZS5sZWZ0PSItMjAwMHB4Iil9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLnJlcG9zaXRpb24oKX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5kb21FbGVtZW50JiZ0aGlzLmRpdiYmKGcodGhpcy5kaXYpLnJlbW92ZSgpLHRoaXMuZGl2PXRoaXMuZG9tRWxlbWVudD1udWxsLGcuZWFjaChoLmNsaWVudHMsZnVuY3Rpb24oYixkKXtkPT09YSYmZGVsZXRlIGguY2xpZW50c1tiXX0pKX0sCnJlcG9zaXRpb246ZnVuY3Rpb24oYSl7YSYmKCh0aGlzLmRvbUVsZW1lbnQ9aC4kKGEpKXx8dGhpcy5oaWRlKCkpO2lmKHRoaXMuZG9tRWxlbWVudCYmdGhpcy5kaXYpe3ZhciBhPWguZ2V0RE9NT2JqZWN0UG9zaXRpb24odGhpcy5kb21FbGVtZW50KSxiPXRoaXMuZGl2LnN0eWxlO2IubGVmdD0iIithLmxlZnQrInB4IjtiLnRvcD0iIithLnRvcCsicHgifX0sY2xlYXJUZXh0OmZ1bmN0aW9uKCl7dGhpcy5jbGlwVGV4dD0iIjt0aGlzLnJlYWR5JiZ0aGlzLm1vdmllLmNsZWFyVGV4dCgpfSxhcHBlbmRUZXh0OmZ1bmN0aW9uKGEpe3RoaXMuY2xpcFRleHQrPWE7dGhpcy5yZWFkeSYmdGhpcy5tb3ZpZS5hcHBlbmRUZXh0KGEpfSxzZXRUZXh0OmZ1bmN0aW9uKGEpe3RoaXMuY2xpcFRleHQ9YTt0aGlzLnJlYWR5JiZ0aGlzLm1vdmllLnNldFRleHQoYSl9LHNldEZpbGVOYW1lOmZ1bmN0aW9uKGEpe3RoaXMuZmlsZU5hbWU9YTt0aGlzLnJlYWR5JiZ0aGlzLm1vdmllLnNldEZpbGVOYW1lKGEpfSwKc2V0U2hlZXREYXRhOmZ1bmN0aW9uKGEpe3RoaXMucmVhZHkmJnRoaXMubW92aWUuc2V0U2hlZXREYXRhKEpTT04uc3RyaW5naWZ5KGEpKX0sc2V0QWN0aW9uOmZ1bmN0aW9uKGEpe3RoaXMuYWN0aW9uPWE7dGhpcy5yZWFkeSYmdGhpcy5tb3ZpZS5zZXRBY3Rpb24oYSl9LGFkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oYSxiKXthPWEudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL15vbi8sIiIpO3RoaXMuaGFuZGxlcnNbYV18fCh0aGlzLmhhbmRsZXJzW2FdPVtdKTt0aGlzLmhhbmRsZXJzW2FdLnB1c2goYil9LHNldEhhbmRDdXJzb3I6ZnVuY3Rpb24oYSl7dGhpcy5oYW5kQ3Vyc29yRW5hYmxlZD1hO3RoaXMucmVhZHkmJnRoaXMubW92aWUuc2V0SGFuZEN1cnNvcihhKX0sc2V0Q1NTRWZmZWN0czpmdW5jdGlvbihhKXt0aGlzLmNzc0VmZmVjdHM9ISFhfSxyZWNlaXZlRXZlbnQ6ZnVuY3Rpb24oYSxiKXt2YXIgZCxhPWEudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL15vbi8sCiIiKTtzd2l0Y2goYSl7Y2FzZSAibG9hZCI6dGhpcy5tb3ZpZT1rLmdldEVsZW1lbnRCeUlkKHRoaXMubW92aWVJZCk7aWYoIXRoaXMubW92aWUpe2Q9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZC5yZWNlaXZlRXZlbnQoImxvYWQiLG51bGwpfSwxKTtyZXR1cm59aWYoIXRoaXMucmVhZHkmJm5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0ZpcmVmb3gvKSYmbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvV2luZG93cy8pKXtkPXRoaXM7c2V0VGltZW91dChmdW5jdGlvbigpe2QucmVjZWl2ZUV2ZW50KCJsb2FkIixudWxsKX0sMTAwKTt0aGlzLnJlYWR5PSEwO3JldHVybn10aGlzLnJlYWR5PSEwO3RoaXMubW92aWUuY2xlYXJUZXh0KCk7dGhpcy5tb3ZpZS5hcHBlbmRUZXh0KHRoaXMuY2xpcFRleHQpO3RoaXMubW92aWUuc2V0RmlsZU5hbWUodGhpcy5maWxlTmFtZSk7dGhpcy5tb3ZpZS5zZXRBY3Rpb24odGhpcy5hY3Rpb24pO3RoaXMubW92aWUuc2V0SGFuZEN1cnNvcih0aGlzLmhhbmRDdXJzb3JFbmFibGVkKTsKYnJlYWs7Y2FzZSAibW91c2VvdmVyIjp0aGlzLmRvbUVsZW1lbnQmJnRoaXMuY3NzRWZmZWN0cyYmdGhpcy5yZWNvdmVyQWN0aXZlJiZ0aGlzLmRvbUVsZW1lbnQuYWRkQ2xhc3MoImFjdGl2ZSIpO2JyZWFrO2Nhc2UgIm1vdXNlb3V0Ijp0aGlzLmRvbUVsZW1lbnQmJnRoaXMuY3NzRWZmZWN0cyYmKHRoaXMucmVjb3ZlckFjdGl2ZT0hMSx0aGlzLmRvbUVsZW1lbnQuaGFzQ2xhc3MoImFjdGl2ZSIpJiYodGhpcy5kb21FbGVtZW50LnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx0aGlzLnJlY292ZXJBY3RpdmU9ITApKTticmVhaztjYXNlICJtb3VzZWRvd24iOnRoaXMuZG9tRWxlbWVudCYmdGhpcy5jc3NFZmZlY3RzJiZ0aGlzLmRvbUVsZW1lbnQuYWRkQ2xhc3MoImFjdGl2ZSIpO2JyZWFrO2Nhc2UgIm1vdXNldXAiOnRoaXMuZG9tRWxlbWVudCYmdGhpcy5jc3NFZmZlY3RzJiYodGhpcy5kb21FbGVtZW50LnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx0aGlzLnJlY292ZXJBY3RpdmU9ITEpfWlmKHRoaXMuaGFuZGxlcnNbYV0pZm9yKHZhciBjPQowLGU9dGhpcy5oYW5kbGVyc1thXS5sZW5ndGg7YzxlO2MrKyl7dmFyIGY9dGhpcy5oYW5kbGVyc1thXVtjXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZilmKHRoaXMsYik7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGYmJjI9PWYubGVuZ3RoKWZbMF1bZlsxXV0odGhpcyxiKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgZilpW2ZdKHRoaXMsYil9fX07aC5oYXNGbGFzaD1mdW5jdGlvbigpe3RyeXtpZihuZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2giKSlyZXR1cm4hMH1jYXRjaChhKXtpZihuYXZpZ2F0b3IubWltZVR5cGVzJiZuYXZpZ2F0b3IubWltZVR5cGVzWyJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCJdIT09byYmbmF2aWdhdG9yLm1pbWVUeXBlc1siYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giXS5lbmFibGVkUGx1Z2luKXJldHVybiEwfXJldHVybiExfTtpLlplcm9DbGlwYm9hcmRfVGFibGVUb29scz1oO3ZhciB3PWZ1bmN0aW9uKGEsCmIpe2IuYXR0cigiaWQiKTtiLnBhcmVudHMoImh0bWwiKS5sZW5ndGg/YS5nbHVlKGJbMF0sIiIpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXt3KGEsYil9LDUwMCl9LHE9ZnVuY3Rpb24oYSxiKXt2YXIgZD0iKiI9PT1hLmZpbGVuYW1lJiYiKiIhPT1hLnRpdGxlJiZhLnRpdGxlIT09bz9hLnRpdGxlOmEuZmlsZW5hbWU7ImZ1bmN0aW9uIj09PXR5cGVvZiBkJiYoZD1kKCkpOy0xIT09ZC5pbmRleE9mKCIqIikmJihkPWcudHJpbShkLnJlcGxhY2UoIioiLGcoInRpdGxlIikudGV4dCgpKSkpO2Q9ZC5yZXBsYWNlKC9bXmEtekEtWjAtOV9cdTAwQTEtXHVGRkZGXC4sXC1fICFcKFwpXS9nLCIiKTtyZXR1cm4gYj09PW98fCEwPT09Yj9kK2EuZXh0ZW5zaW9uOmR9LHo9ZnVuY3Rpb24oYSl7dmFyIGI9IlNoZWV0MSI7YS5zaGVldE5hbWUmJihiPWEuc2hlZXROYW1lLnJlcGxhY2UoL1tcW1xdXCpcL1xcXD9cOl0vZywiIikpO3JldHVybiBifSxyPWZ1bmN0aW9uKGEsYil7dmFyIGQ9Yi5tYXRjaCgvW1xzXFNdezEsODE5Mn0vZyl8fApbXTthLmNsZWFyVGV4dCgpO2Zvcih2YXIgYz0wLGU9ZC5sZW5ndGg7YzxlO2MrKylhLmFwcGVuZFRleHQoZFtjXSl9LHg9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGQ9Yi5uZXdsaW5lP2IubmV3bGluZTpuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9XaW5kb3dzLyk/IlxyXG4iOiJcbiIsYz1hLmJ1dHRvbnMuZXhwb3J0RGF0YShiLmV4cG9ydE9wdGlvbnMpLGU9Yi5maWVsZEJvdW5kYXJ5LGY9Yi5maWVsZFNlcGFyYXRvcixnPVJlZ0V4cChlLCJnIiksaD1iLmVzY2FwZUNoYXIhPT1vP2IuZXNjYXBlQ2hhcjoiXFwiLGk9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspMDxjJiYoYis9ZiksYis9ZT9lKygiIithW2NdKS5yZXBsYWNlKGcsaCtlKStlOmFbY107cmV0dXJuIGJ9LGs9Yi5oZWFkZXI/aShjLmhlYWRlcikrZDoiIixtPWIuZm9vdGVyJiZjLmZvb3Rlcj9kK2koYy5mb290ZXIpOiIiLGw9W10sdD0wLEE9Yy5ib2R5Lmxlbmd0aDt0PEE7dCsrKWwucHVzaChpKGMuYm9keVt0XSkpOwpyZXR1cm57c3RyOmsrbC5qb2luKGQpK20scm93czpsLmxlbmd0aH19LHM9e2F2YWlsYWJsZTpmdW5jdGlvbigpe3JldHVybiBoLmhhc0ZsYXNoKCl9LGluaXQ6ZnVuY3Rpb24oYSxiLGQpe2gubW92aWVQYXRoPWouQnV0dG9ucy5zd2ZQYXRoO3ZhciBjPW5ldyBoLkNsaWVudDtjLnNldEhhbmRDdXJzb3IoITApO2MuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VEb3duIixmdW5jdGlvbigpe2QuX2Zyb21GbGFzaD0hMDthLmJ1dHRvbihiWzBdKS50cmlnZ2VyKCk7ZC5fZnJvbUZsYXNoPSExfSk7dyhjLGIpO2QuX2ZsYXNoPWN9LGRlc3Ryb3k6ZnVuY3Rpb24oYSxiLGQpe2QuX2ZsYXNoLmRlc3Ryb3koKX0sZmllbGRTZXBhcmF0b3I6IiwiLGZpZWxkQm91bmRhcnk6JyInLGV4cG9ydE9wdGlvbnM6e30sdGl0bGU6IioiLGZpbGVuYW1lOiIqIixleHRlbnNpb246Ii5jc3YiLGhlYWRlcjohMCxmb290ZXI6ITF9O3RyeXt2YXIgdj1uZXcgWE1MU2VyaWFsaXplcixufWNhdGNoKEIpe312YXIgcD0KeyJfcmVscy8ucmVscyI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48UmVsYXRpb25zaGlwcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzIj48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL29mZmljZURvY3VtZW50IiBUYXJnZXQ9InhsL3dvcmtib29rLnhtbCIvPjwvUmVsYXRpb25zaGlwcz4nLCJ4bC9fcmVscy93b3JrYm9vay54bWwucmVscyI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48UmVsYXRpb25zaGlwcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzIj48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0MS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQyIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3N0eWxlcyIgVGFyZ2V0PSJzdHlsZXMueG1sIi8+PC9SZWxhdGlvbnNoaXBzPicsCiJbQ29udGVudF9UeXBlc10ueG1sIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PjxUeXBlcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9jb250ZW50LXR5cGVzIj48RGVmYXVsdCBFeHRlbnNpb249InhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3htbCIgLz48RGVmYXVsdCBFeHRlbnNpb249InJlbHMiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCIgLz48RGVmYXVsdCBFeHRlbnNpb249ImpwZWciIENvbnRlbnRUeXBlPSJpbWFnZS9qcGVnIiAvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3dvcmtib29rLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sIiAvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3dvcmtzaGVldHMvc2hlZXQxLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLndvcmtzaGVldCt4bWwiIC8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvc3R5bGVzLnhtbCIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnN0eWxlcyt4bWwiIC8+PC9UeXBlcz4nLAoieGwvd29ya2Jvb2sueG1sIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pjx3b3JrYm9vayB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIj48ZmlsZVZlcnNpb24gYXBwTmFtZT0ieGwiIGxhc3RFZGl0ZWQ9IjUiIGxvd2VzdEVkaXRlZD0iNSIgcnVwQnVpbGQ9IjI0ODE2Ii8+PHdvcmtib29rUHIgc2hvd0lua0Fubm90YXRpb249IjAiIGF1dG9Db21wcmVzc1BpY3R1cmVzPSIwIi8+PGJvb2tWaWV3cz48d29ya2Jvb2tWaWV3IHhXaW5kb3c9IjAiIHlXaW5kb3c9IjAiIHdpbmRvd1dpZHRoPSIyNTYwMCIgd2luZG93SGVpZ2h0PSIxOTAyMCIgdGFiUmF0aW89IjUwMCIvPjwvYm9va1ZpZXdzPjxzaGVldHM+PHNoZWV0IG5hbWU9IiIgc2hlZXRJZD0iMSIgcjppZD0icklkMSIvPjwvc2hlZXRzPjwvd29ya2Jvb2s+JywKInhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbCI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48d29ya3NoZWV0IHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4iIHhtbG5zOnI9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMiIHhtbG5zOm1jPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvbWFya3VwLWNvbXBhdGliaWxpdHkvMjAwNiIgbWM6SWdub3JhYmxlPSJ4MTRhYyIgeG1sbnM6eDE0YWM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L2FjIj48c2hlZXREYXRhLz48L3dvcmtzaGVldD4nLCJ4bC9zdHlsZXMueG1sIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3R5bGVTaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE0YWMiIHhtbG5zOngxNGFjPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMDkvOS9hYyI+PGZvbnRzIGNvdW50PSI1IiB4MTRhYzprbm93bkZvbnRzPSIxIj48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PC9mb250Pjxmb250PjxzeiB2YWw9IjExIiAvPjxuYW1lIHZhbD0iQ2FsaWJyaSIgLz48Y29sb3IgcmdiPSJGRkZGRkZGRiIgLz48L2ZvbnQ+PGZvbnQ+PHN6IHZhbD0iMTEiIC8+PG5hbWUgdmFsPSJDYWxpYnJpIiAvPjxiIC8+PC9mb250Pjxmb250PjxzeiB2YWw9IjExIiAvPjxuYW1lIHZhbD0iQ2FsaWJyaSIgLz48aSAvPjwvZm9udD48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PHUgLz48L2ZvbnQ+PC9mb250cz48ZmlsbHMgY291bnQ9IjYiPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ibm9uZSIgLz48L2ZpbGw+PGZpbGwvPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ic29saWQiPjxmZ0NvbG9yIHJnYj0iRkZEOUQ5RDkiIC8+PGJnQ29sb3IgaW5kZXhlZD0iNjQiIC8+PC9wYXR0ZXJuRmlsbD48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJzb2xpZCI+PGZnQ29sb3IgcmdiPSJGRkQ5OTc5NSIgLz48YmdDb2xvciBpbmRleGVkPSI2NCIgLz48L3BhdHRlcm5GaWxsPjwvZmlsbD48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9InNvbGlkIj48ZmdDb2xvciByZ2I9ImZmYzZlZmNlIiAvPjxiZ0NvbG9yIGluZGV4ZWQ9IjY0IiAvPjwvcGF0dGVybkZpbGw+PC9maWxsPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ic29saWQiPjxmZ0NvbG9yIHJnYj0iZmZjNmNmZWYiIC8+PGJnQ29sb3IgaW5kZXhlZD0iNjQiIC8+PC9wYXR0ZXJuRmlsbD48L2ZpbGw+PC9maWxscz48Ym9yZGVycyBjb3VudD0iMiI+PGJvcmRlcj48bGVmdCAvPjxyaWdodCAvPjx0b3AgLz48Ym90dG9tIC8+PGRpYWdvbmFsIC8+PC9ib3JkZXI+PGJvcmRlciBkaWFnb25hbFVwPSJmYWxzZSIgZGlhZ29uYWxEb3duPSJmYWxzZSI+PGxlZnQgc3R5bGU9InRoaW4iPjxjb2xvciBhdXRvPSIxIiAvPjwvbGVmdD48cmlnaHQgc3R5bGU9InRoaW4iPjxjb2xvciBhdXRvPSIxIiAvPjwvcmlnaHQ+PHRvcCBzdHlsZT0idGhpbiI+PGNvbG9yIGF1dG89IjEiIC8+PC90b3A+PGJvdHRvbSBzdHlsZT0idGhpbiI+PGNvbG9yIGF1dG89IjEiIC8+PC9ib3R0b20+PGRpYWdvbmFsIC8+PC9ib3JkZXI+PC9ib3JkZXJzPjxjZWxsU3R5bGVYZnMgY291bnQ9IjEiPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiAvPjwvY2VsbFN0eWxlWGZzPjxjZWxsWGZzIGNvdW50PSIyIj48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIyIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIyIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSI1IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSI1IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIwIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIzIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIzIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSI0IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjwvY2VsbFhmcz48Y2VsbFN0eWxlcyBjb3VudD0iMSI+PGNlbGxTdHlsZSBuYW1lPSJOb3JtYWwiIHhmSWQ9IjAiIGJ1aWx0aW5JZD0iMCIgLz48L2NlbGxTdHlsZXM+PGR4ZnMgY291bnQ9IjAiIC8+PHRhYmxlU3R5bGVzIGNvdW50PSIwIiBkZWZhdWx0VGFibGVTdHlsZT0iVGFibGVTdHlsZU1lZGl1bTkiIGRlZmF1bHRQaXZvdFN0eWxlPSJQaXZvdFN0eWxlTWVkaXVtNCIgLz48L3N0eWxlU2hlZXQ+J307CmouQnV0dG9ucy5zd2ZQYXRoPSIvL2Nkbi5kYXRhdGFibGVzLm5ldC9idXR0b25zLzEuMi4wL3N3Zi9mbGFzaEV4cG9ydC5zd2YiO2ouQXBpLnJlZ2lzdGVyKCJidXR0b25zLnJlc2l6ZSgpIixmdW5jdGlvbigpe2cuZWFjaChoLmNsaWVudHMsZnVuY3Rpb24oYSxiKXtiLmRvbUVsZW1lbnQhPT1vJiZiLmRvbUVsZW1lbnQucGFyZW50Tm9kZSYmYi5wb3NpdGlvbkVsZW1lbnQoKX0pfSk7ai5leHQuYnV0dG9ucy5jb3B5Rmxhc2g9Zy5leHRlbmQoe30scyx7Y2xhc3NOYW1lOiJidXR0b25zLWNvcHkgYnV0dG9ucy1mbGFzaCIsdGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5pMThuKCJidXR0b25zLmNvcHkiLCJDb3B5Iil9LGFjdGlvbjpmdW5jdGlvbihhLGIsZCxjKXtjLl9mcm9tRmxhc2gmJihhPWMuX2ZsYXNoLGQ9eChiLGMpLGM9Yy5jdXN0b21pemU/Yy5jdXN0b21pemUoZC5zdHIsYyk6ZC5zdHIsYS5zZXRBY3Rpb24oImNvcHkiKSxyKGEsYyksYi5idXR0b25zLmluZm8oYi5pMThuKCJidXR0b25zLmNvcHlUaXRsZSIsCiJDb3B5IHRvIGNsaXBib2FyZCIpLGIuaTE4bigiYnV0dG9ucy5jb3B5U3VjY2VzcyIse186IkNvcGllZCAlZCByb3dzIHRvIGNsaXBib2FyZCIsMToiQ29waWVkIDEgcm93IHRvIGNsaXBib2FyZCJ9LGQucm93cyksM0UzKSl9LGZpZWxkU2VwYXJhdG9yOiJcdCIsZmllbGRCb3VuZGFyeToiIn0pO2ouZXh0LmJ1dHRvbnMuY3N2Rmxhc2g9Zy5leHRlbmQoe30scyx7Y2xhc3NOYW1lOiJidXR0b25zLWNzdiBidXR0b25zLWZsYXNoIix0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMuY3N2IiwiQ1NWIil9LGFjdGlvbjpmdW5jdGlvbihhLGIsZCxjKXthPWMuX2ZsYXNoO2I9eChiLGMpO2I9Yy5jdXN0b21pemU/Yy5jdXN0b21pemUoYi5zdHIsYyk6Yi5zdHI7YS5zZXRBY3Rpb24oImNzdiIpO2Euc2V0RmlsZU5hbWUocShjKSk7cihhLGIpfSxlc2NhcGVDaGFyOiciJ30pO2ouZXh0LmJ1dHRvbnMuZXhjZWxGbGFzaD1nLmV4dGVuZCh7fSxzLHtjbGFzc05hbWU6ImJ1dHRvbnMtZXhjZWwgYnV0dG9ucy1mbGFzaCIsCnRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5leGNlbCIsIkV4Y2VsIil9LGFjdGlvbjpmdW5jdGlvbihhLGIsZCxjKXt2YXIgYT1jLl9mbGFzaCxlPTAsZj1nLnBhcnNlWE1MKHBbInhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbCJdKSxoPWYuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNoZWV0RGF0YSIpWzBdLGQ9e19yZWxzOnsiLnJlbHMiOmcucGFyc2VYTUwocFsiX3JlbHMvLnJlbHMiXSl9LHhsOntfcmVsczp7Indvcmtib29rLnhtbC5yZWxzIjpnLnBhcnNlWE1MKHBbInhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzIl0pfSwid29ya2Jvb2sueG1sIjpnLnBhcnNlWE1MKHBbInhsL3dvcmtib29rLnhtbCJdKSwic3R5bGVzLnhtbCI6Zy5wYXJzZVhNTChwWyJ4bC9zdHlsZXMueG1sIl0pLHdvcmtzaGVldHM6eyJzaGVldDEueG1sIjpmfX0sIltDb250ZW50X1R5cGVzXS54bWwiOmcucGFyc2VYTUwocFsiW0NvbnRlbnRfVHlwZXNdLnhtbCJdKX0sYj1iLmJ1dHRvbnMuZXhwb3J0RGF0YShjLmV4cG9ydE9wdGlvbnMpLAppLGssaj1mdW5jdGlvbihhKXtpPWUrMTtrPWwoZiwicm93Iix7YXR0cjp7cjppfX0pO2Zvcih2YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2IrKyl7Zm9yKHZhciBkPWIsaj0iIjswPD1kOylqPVN0cmluZy5mcm9tQ2hhckNvZGUoZCUyNis2NSkraixkPU1hdGguZmxvb3IoZC8yNiktMTtkPWorIiIraTtpZihudWxsPT09YVtiXXx8YVtiXT09PW8pYVtiXT0iIjsibnVtYmVyIj09PXR5cGVvZiBhW2JdfHxhW2JdLm1hdGNoJiZnLnRyaW0oYVtiXSkubWF0Y2goL14tP1xkKyhcLlxkKyk/JC8pJiYhZy50cmltKGFbYl0pLm1hdGNoKC9eMFxkKy8pP2Q9bChmLCJjIix7YXR0cjp7dDoibiIscjpkfSxjaGlsZHJlbjpbbChmLCJ2Iix7dGV4dDphW2JdfSldfSk6KGo9IWFbYl0ucmVwbGFjZT9hW2JdOmFbYl0ucmVwbGFjZSgvJig/IWFtcDspL2csIiZhbXA7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvW1x4MDAtXHgwOVx4MEJceDBDXHgwRS1ceDFGXHg3Ri1ceDlGXS9nLAoiIiksZD1sKGYsImMiLHthdHRyOnt0OiJpbmxpbmVTdHIiLHI6ZH0sY2hpbGRyZW46e3JvdzpsKGYsImlzIix7Y2hpbGRyZW46e3JvdzpsKGYsInQiLHt0ZXh0Omp9KX19KX19KSk7ay5hcHBlbmRDaGlsZChkKX1oLmFwcGVuZENoaWxkKGspO2UrK307Zygic2hlZXRzIHNoZWV0IixkLnhsWyJ3b3JrYm9vay54bWwiXSkuYXR0cigibmFtZSIseihjKSk7Yy5jdXN0b21pemVEYXRhJiZjLmN1c3RvbWl6ZURhdGEoYik7Yy5oZWFkZXImJihqKGIuaGVhZGVyLGUpLGcoInJvdyBjIixmKS5hdHRyKCJzIiwiMiIpKTtmb3IodmFyIG09MCxuPWIuYm9keS5sZW5ndGg7bTxuO20rKylqKGIuYm9keVttXSxlKTtjLmZvb3RlciYmYi5mb290ZXImJihqKGIuZm9vdGVyLGUpLGcoInJvdzpsYXN0IGMiLGYpLmF0dHIoInMiLCIyIikpO2o9bChmLCJjb2xzIik7Zygid29ya3NoZWV0IixmKS5wcmVwZW5kKGopO209MDtmb3Iobj1iLmhlYWRlci5sZW5ndGg7bTxuO20rKylqLmFwcGVuZENoaWxkKGwoZiwKImNvbCIse2F0dHI6e21pbjptKzEsbWF4Om0rMSx3aWR0aDp5KGIsbSksY3VzdG9tV2lkdGg6MX19KSk7Yy5jdXN0b21pemUmJmMuY3VzdG9taXplKGQpO3UoZCk7YS5zZXRBY3Rpb24oImV4Y2VsIik7YS5zZXRGaWxlTmFtZShxKGMpKTthLnNldFNoZWV0RGF0YShkKTtyKGEsIiIpfSxleHRlbnNpb246Ii54bHN4In0pO2ouZXh0LmJ1dHRvbnMucGRmRmxhc2g9Zy5leHRlbmQoe30scyx7Y2xhc3NOYW1lOiJidXR0b25zLXBkZiBidXR0b25zLWZsYXNoIix0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMucGRmIiwiUERGIil9LGFjdGlvbjpmdW5jdGlvbihhLGIsZCxjKXt2YXIgYT1jLl9mbGFzaCxkPWIuYnV0dG9ucy5leHBvcnREYXRhKGMuZXhwb3J0T3B0aW9ucyksZT1iLnRhYmxlKCkubm9kZSgpLm9mZnNldFdpZHRoLGY9Yi5jb2x1bW5zKGMuY29sdW1ucykuaW5kZXhlcygpLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYi5jb2x1bW4oYSkuaGVhZGVyKCkub2Zmc2V0V2lkdGgvCmV9KTthLnNldEFjdGlvbigicGRmIik7YS5zZXRGaWxlTmFtZShxKGMpKTtyKGEsSlNPTi5zdHJpbmdpZnkoe3RpdGxlOnEoYywhMSksbWVzc2FnZTpjLm1lc3NhZ2UsY29sV2lkdGg6Zi50b0FycmF5KCksb3JpZW50YXRpb246Yy5vcmllbnRhdGlvbixzaXplOmMucGFnZVNpemUsaGVhZGVyOmMuaGVhZGVyP2QuaGVhZGVyOm51bGwsZm9vdGVyOmMuZm9vdGVyP2QuZm9vdGVyOm51bGwsYm9keTpkLmJvZHl9KSl9LGV4dGVuc2lvbjoiLnBkZiIsb3JpZW50YXRpb246InBvcnRyYWl0IixwYWdlU2l6ZToiQTQiLG1lc3NhZ2U6IiIsbmV3bGluZToiXG4ifSk7cmV0dXJuIGouQnV0dG9uc30pOwo="></script>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKGcpeyJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSIsImRhdGF0YWJsZXMubmV0IiwiZGF0YXRhYmxlcy5uZXQtYnV0dG9ucyJdLGZ1bmN0aW9uKGope3JldHVybiBnKGosd2luZG93LGRvY3VtZW50KX0pOiJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24oaixpLHEscil7anx8KGo9d2luZG93KTtpZighaXx8IWkuZm4uZGF0YVRhYmxlKWk9cmVxdWlyZSgiZGF0YXRhYmxlcy5uZXQiKShqLGkpLiQ7aS5mbi5kYXRhVGFibGUuQnV0dG9uc3x8cmVxdWlyZSgiZGF0YXRhYmxlcy5uZXQtYnV0dG9ucyIpKGosaSk7cmV0dXJuIGcoaSxqLGouZG9jdW1lbnQscSxyKX06ZyhqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGcsaixpLHEscixtKXtmdW5jdGlvbiBFKGEsYil7dj09PW0mJih2PS0xPT09eS5zZXJpYWxpemVUb1N0cmluZyhnLnBhcnNlWE1MKEZbInhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbCJdKSkuaW5kZXhPZigieG1sbnM6ciIpKTsKZy5lYWNoKGIsZnVuY3Rpb24oYixjKXtpZihnLmlzUGxhaW5PYmplY3QoYykpe3ZhciBlPWEuZm9sZGVyKGIpO0UoZSxjKX1lbHNle2lmKHYpe3ZhciBlPWMuY2hpbGROb2Rlc1swXSxmLGgsbj1bXTtmb3IoZj1lLmF0dHJpYnV0ZXMubGVuZ3RoLTE7MDw9ZjtmLS0pe2g9ZS5hdHRyaWJ1dGVzW2ZdLm5vZGVOYW1lO3ZhciBrPWUuYXR0cmlidXRlc1tmXS5ub2RlVmFsdWU7LTEhPT1oLmluZGV4T2YoIjoiKSYmKG4ucHVzaCh7bmFtZTpoLHZhbHVlOmt9KSxlLnJlbW92ZUF0dHJpYnV0ZShoKSl9Zj0wO2ZvcihoPW4ubGVuZ3RoO2Y8aDtmKyspaz1jLmNyZWF0ZUF0dHJpYnV0ZShuW2ZdLm5hbWUucmVwbGFjZSgiOiIsIl9kdF9iX25hbWVzcGFjZV90b2tlbl8iKSksay52YWx1ZT1uW2ZdLnZhbHVlLGUuc2V0QXR0cmlidXRlTm9kZShrKX1lPXkuc2VyaWFsaXplVG9TdHJpbmcoYyk7diYmKC0xPT09ZS5pbmRleE9mKCI8P3htbCIpJiYoZT0nPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PicrCmUpLGU9ZS5yZXBsYWNlKC9fZHRfYl9uYW1lc3BhY2VfdG9rZW5fL2csIjoiKSk7ZT1lLnJlcGxhY2UoLzxyb3cgeG1sbnM9IiIgL2csIjxyb3cgIikucmVwbGFjZSgvPGNvbHMgeG1sbnM9IiI+L2csIjxjb2xzPiIpO2EuZmlsZShiLGUpfX0pfWZ1bmN0aW9uIG8oYSxiLGQpe3ZhciBjPWEuY3JlYXRlRWxlbWVudChiKTtkJiYoZC5hdHRyJiZnKGMpLmF0dHIoZC5hdHRyKSxkLmNoaWxkcmVuJiZnLmVhY2goZC5jaGlsZHJlbixmdW5jdGlvbihhLGIpe2MuYXBwZW5kQ2hpbGQoYil9KSxkLnRleHQmJmMuYXBwZW5kQ2hpbGQoYS5jcmVhdGVUZXh0Tm9kZShkLnRleHQpKSk7cmV0dXJuIGN9ZnVuY3Rpb24gTihhLGIpe3ZhciBkPWEuaGVhZGVyW2JdLmxlbmd0aCxjO2EuZm9vdGVyJiZhLmZvb3RlcltiXS5sZW5ndGg+ZCYmKGQ9YS5mb290ZXJbYl0ubGVuZ3RoKTtmb3IodmFyIGU9MCxmPWEuYm9keS5sZW5ndGg7ZTxmJiYhKGM9YS5ib2R5W2VdW2JdLnRvU3RyaW5nKCkubGVuZ3RoLGM+ZCYmCihkPWMpLDQwPGQpO2UrKyk7cmV0dXJuIDU8ZD9kOjV9dmFyIHM9Zy5mbi5kYXRhVGFibGU7cT09PW0mJihxPWouSlNaaXApO3I9PT1tJiYocj1qLnBkZk1ha2UpO3ZhciBwO3ZhciBoPSJ1bmRlZmluZWQiIT09dHlwZW9mIHNlbGYmJnNlbGZ8fCJ1bmRlZmluZWQiIT09dHlwZW9mIGomJmp8fHRoaXMuY29udGVudDtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBuYXZpZ2F0b3ImJi9NU0lFIFsxLTldXC4vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpcD12b2lkIDA7ZWxzZXt2YXIgdz1oLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImEiKSxPPSJkb3dubG9hZCJpbiB3LEc9L1ZlcnNpb25cL1tcZFwuXSsuKlNhZmFyaS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSx6PWgud2Via2l0UmVxdWVzdEZpbGVTeXN0ZW0sSD1oLnJlcXVlc3RGaWxlU3lzdGVtfHx6fHxoLm1velJlcXVlc3RGaWxlU3lzdGVtLFA9ZnVuY3Rpb24oYSl7KGguc2V0SW1tZWRpYXRlfHwKaC5zZXRUaW1lb3V0KShmdW5jdGlvbigpe3Rocm93IGE7fSwwKX0sQT0wLEI9ZnVuY3Rpb24oYSl7c2V0VGltZW91dChmdW5jdGlvbigpe3R5cGVvZiBhPT09InN0cmluZyI/KGguVVJMfHxoLndlYmtpdFVSTHx8aCkucmV2b2tlT2JqZWN0VVJMKGEpOmEucmVtb3ZlKCl9LDRFNCl9LEM9ZnVuY3Rpb24oYSxiLGQpe2Zvcih2YXIgYj1bXS5jb25jYXQoYiksYz1iLmxlbmd0aDtjLS07KXt2YXIgZT1hWyJvbiIrYltjXV07aWYodHlwZW9mIGU9PT0iZnVuY3Rpb24iKXRyeXtlLmNhbGwoYSxkfHxhKX1jYXRjaChmKXtQKGYpfX19LEk9ZnVuY3Rpb24oYSl7cmV0dXJuL15ccyooPzp0ZXh0XC9cUyp8YXBwbGljYXRpb25cL3htbHxcUypcL1xTKlwreG1sKVxzKjsuKmNoYXJzZXRccyo9XHMqdXRmLTgvaS50ZXN0KGEudHlwZSk/bmV3IEJsb2IoWyLvu78iLGFdLHt0eXBlOmEudHlwZX0pOmF9LEo9ZnVuY3Rpb24oYSxiLGQpe2R8fChhPUkoYSkpO3ZhciBjPXRoaXMsZD1hLnR5cGUsZT1mYWxzZSwKZixnLG49ZnVuY3Rpb24oKXtDKGMsWyJ3cml0ZXN0YXJ0IiwicHJvZ3Jlc3MiLCJ3cml0ZSIsIndyaXRlZW5kIl0pfSxrPWZ1bmN0aW9uKCl7aWYoZyYmRyYmdHlwZW9mIEZpbGVSZWFkZXIhPT0idW5kZWZpbmVkIil7dmFyIGI9bmV3IEZpbGVSZWFkZXI7Yi5vbmxvYWRlbmQ9ZnVuY3Rpb24oKXt2YXIgYT1iLnJlc3VsdDtnLmxvY2F0aW9uLmhyZWY9ImRhdGE6YXR0YWNobWVudC9maWxlIithLnNsaWNlKGEuc2VhcmNoKC9bLDtdLykpO2MucmVhZHlTdGF0ZT1jLkRPTkU7bigpfTtiLnJlYWRBc0RhdGFVUkwoYSk7Yy5yZWFkeVN0YXRlPWMuSU5JVH1lbHNle2lmKGV8fCFmKWY9KGguVVJMfHxoLndlYmtpdFVSTHx8aCkuY3JlYXRlT2JqZWN0VVJMKGEpO2lmKGcpZy5sb2NhdGlvbi5ocmVmPWY7ZWxzZSBpZihoLm9wZW4oZiwiX2JsYW5rIik9PT1tJiZHKWgubG9jYXRpb24uaHJlZj1mO2MucmVhZHlTdGF0ZT1jLkRPTkU7bigpO0IoZil9fSx0PWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe2lmKGMucmVhZHlTdGF0ZSE9PQpjLkRPTkUpcmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0saj17Y3JlYXRlOnRydWUsZXhjbHVzaXZlOmZhbHNlfSx1O2MucmVhZHlTdGF0ZT1jLklOSVQ7Ynx8KGI9ImRvd25sb2FkIik7aWYoTyl7Zj0oaC5VUkx8fGgud2Via2l0VVJMfHxoKS5jcmVhdGVPYmplY3RVUkwoYSk7c2V0VGltZW91dChmdW5jdGlvbigpe3cuaHJlZj1mO3cuZG93bmxvYWQ9Yjt2YXIgYT1uZXcgTW91c2VFdmVudCgiY2xpY2siKTt3LmRpc3BhdGNoRXZlbnQoYSk7bigpO0IoZik7Yy5yZWFkeVN0YXRlPWMuRE9ORX0pfWVsc2V7aWYoaC5jaHJvbWUmJmQmJmQhPT0iYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIil7dT1hLnNsaWNlfHxhLndlYmtpdFNsaWNlO2E9dS5jYWxsKGEsMCxhLnNpemUsImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpO2U9dHJ1ZX16JiZiIT09ImRvd25sb2FkIiYmKGI9YisiLmRvd25sb2FkIik7aWYoZD09PSJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0ifHx6KWc9aDtpZihIKXtBPQpBK2Euc2l6ZTtIKGguVEVNUE9SQVJZLEEsdChmdW5jdGlvbihkKXtkLnJvb3QuZ2V0RGlyZWN0b3J5KCJzYXZlZCIsaix0KGZ1bmN0aW9uKGQpe3ZhciBmPWZ1bmN0aW9uKCl7ZC5nZXRGaWxlKGIsaix0KGZ1bmN0aW9uKGIpe2IuY3JlYXRlV3JpdGVyKHQoZnVuY3Rpb24oZCl7ZC5vbndyaXRlZW5kPWZ1bmN0aW9uKGEpe2cubG9jYXRpb24uaHJlZj1iLnRvVVJMKCk7Yy5yZWFkeVN0YXRlPWMuRE9ORTtDKGMsIndyaXRlZW5kIixhKTtCKGIpfTtkLm9uZXJyb3I9ZnVuY3Rpb24oKXt2YXIgYT1kLmVycm9yO2EuY29kZSE9PWEuQUJPUlRfRVJSJiZrKCl9O1sid3JpdGVzdGFydCIsInByb2dyZXNzIiwid3JpdGUiLCJhYm9ydCJdLmZvckVhY2goZnVuY3Rpb24oYSl7ZFsib24iK2FdPWNbIm9uIithXX0pO2Qud3JpdGUoYSk7Yy5hYm9ydD1mdW5jdGlvbigpe2QuYWJvcnQoKTtjLnJlYWR5U3RhdGU9Yy5ET05FfTtjLnJlYWR5U3RhdGU9Yy5XUklUSU5HfSksayl9KSxrKX07ZC5nZXRGaWxlKGIsCntjcmVhdGU6ZmFsc2V9LHQoZnVuY3Rpb24oYSl7YS5yZW1vdmUoKTtmKCl9KSx0KGZ1bmN0aW9uKGEpe2EuY29kZT09PWEuTk9UX0ZPVU5EX0VSUj9mKCk6aygpfSkpfSksayl9KSxrKX1lbHNlIGsoKX19LGw9Si5wcm90b3R5cGU7InVuZGVmaW5lZCIhPT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYj9wPWZ1bmN0aW9uKGEsYixkKXtkfHwoYT1JKGEpKTtyZXR1cm4gbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoYSxifHwiZG93bmxvYWQiKX06KGwuYWJvcnQ9ZnVuY3Rpb24oKXt0aGlzLnJlYWR5U3RhdGU9dGhpcy5ET05FO0ModGhpcywiYWJvcnQiKX0sbC5yZWFkeVN0YXRlPWwuSU5JVD0wLGwuV1JJVElORz0xLGwuRE9ORT0yLGwuZXJyb3I9bC5vbndyaXRlc3RhcnQ9bC5vbnByb2dyZXNzPWwub253cml0ZT1sLm9uYWJvcnQ9bC5vbmVycm9yPWwub253cml0ZWVuZD1udWxsLHA9ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBuZXcgSihhLGIsZCl9KX1zLmZpbGVTYXZlPQpwO3ZhciB4PWZ1bmN0aW9uKGEsYil7dmFyIGQ9YS5maWxlbmFtZT09PSIqIiYmYS50aXRsZSE9PSIqIiYmYS50aXRsZSE9PW0/YS50aXRsZTphLmZpbGVuYW1lO3R5cGVvZiBkPT09ImZ1bmN0aW9uIiYmKGQ9ZCgpKTtkLmluZGV4T2YoIioiKSE9PS0xJiYoZD1nLnRyaW0oZC5yZXBsYWNlKCIqIixnKCJ0aXRsZSIpLnRleHQoKSkpKTtkPWQucmVwbGFjZSgvW15hLXpBLVowLTlfXHUwMEExLVx1RkZGRlwuLFwtXyAhXChcKV0vZywiIik7cmV0dXJuIGI9PT1tfHxiPT09dHJ1ZT9kK2EuZXh0ZW5zaW9uOmR9LFE9ZnVuY3Rpb24oYSl7dmFyIGI9IlNoZWV0MSI7YS5zaGVldE5hbWUmJihiPWEuc2hlZXROYW1lLnJlcGxhY2UoL1tcW1xdXCpcL1xcXD9cOl0vZywiIikpO3JldHVybiBifSxSPWZ1bmN0aW9uKGEpe2E9YS50aXRsZTt0eXBlb2YgYT09PSJmdW5jdGlvbiImJihhPWEoKSk7cmV0dXJuIGEuaW5kZXhPZigiKiIpIT09LTE/YS5yZXBsYWNlKCIqIixnKCJ0aXRsZSIpLnRleHQoKXx8CiJFeHBvcnRlZCBkYXRhIik6YX0sSz1mdW5jdGlvbihhKXtyZXR1cm4gYS5uZXdsaW5lP2EubmV3bGluZTpuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9XaW5kb3dzLyk/IlxyXG4iOiJcbiJ9LEw9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGQ9SyhiKSxjPWEuYnV0dG9ucy5leHBvcnREYXRhKGIuZXhwb3J0T3B0aW9ucyksZT1iLmZpZWxkQm91bmRhcnksZj1iLmZpZWxkU2VwYXJhdG9yLGc9UmVnRXhwKGUsImciKSxoPWIuZXNjYXBlQ2hhciE9PW0/Yi5lc2NhcGVDaGFyOiJcXCIsaz1mdW5jdGlvbihhKXtmb3IodmFyIGI9IiIsYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKyl7Yz4wJiYoYj1iK2YpO2I9YisoZT9lKygiIithW2NdKS5yZXBsYWNlKGcsaCtlKStlOmFbY10pfXJldHVybiBifSxqPWIuaGVhZGVyP2soYy5oZWFkZXIpK2Q6IiIsaT1iLmZvb3RlciYmYy5mb290ZXI/ZCtrKGMuZm9vdGVyKToiIix1PVtdLEQ9MCxsPWMuYm9keS5sZW5ndGg7RDxsO0QrKyl1LnB1c2goayhjLmJvZHlbRF0pKTsKcmV0dXJue3N0cjpqK3Uuam9pbihkKStpLHJvd3M6dS5sZW5ndGh9fSxNPWZ1bmN0aW9uKCl7cmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiU2FmYXJpIikhPT0tMSYmbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJDaHJvbWUiKT09PS0xJiZuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk9wZXJhIik9PT0tMX07dHJ5e3ZhciB5PW5ldyBYTUxTZXJpYWxpemVyLHZ9Y2F0Y2goUyl7fXZhciBGPXsiX3JlbHMvLnJlbHMiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PFJlbGF0aW9uc2hpcHMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcyI+PFJlbGF0aW9uc2hpcCBJZD0icklkMSIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudCIgVGFyZ2V0PSJ4bC93b3JrYm9vay54bWwiLz48L1JlbGF0aW9uc2hpcHM+JywKInhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvd29ya3NoZWV0IiBUYXJnZXQ9IndvcmtzaGVldHMvc2hlZXQxLnhtbCIvPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDIiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc3R5bGVzIiBUYXJnZXQ9InN0eWxlcy54bWwiLz48L1JlbGF0aW9uc2hpcHM+JywiW0NvbnRlbnRfVHlwZXNdLnhtbCI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48VHlwZXMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvY29udGVudC10eXBlcyI+PERlZmF1bHQgRXh0ZW5zaW9uPSJ4bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94bWwiIC8+PERlZmF1bHQgRXh0ZW5zaW9uPSJyZWxzIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWwiIC8+PERlZmF1bHQgRXh0ZW5zaW9uPSJqcGVnIiBDb250ZW50VHlwZT0iaW1hZ2UvanBlZyIgLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3JrYm9vay54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbCIgLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIiAvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3N0eWxlcy54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zdHlsZXMreG1sIiAvPjwvVHlwZXM+JywKInhsL3dvcmtib29rLnhtbCI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48d29ya2Jvb2sgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6cj0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcyI+PGZpbGVWZXJzaW9uIGFwcE5hbWU9InhsIiBsYXN0RWRpdGVkPSI1IiBsb3dlc3RFZGl0ZWQ9IjUiIHJ1cEJ1aWxkPSIyNDgxNiIvPjx3b3JrYm9va1ByIHNob3dJbmtBbm5vdGF0aW9uPSIwIiBhdXRvQ29tcHJlc3NQaWN0dXJlcz0iMCIvPjxib29rVmlld3M+PHdvcmtib29rVmlldyB4V2luZG93PSIwIiB5V2luZG93PSIwIiB3aW5kb3dXaWR0aD0iMjU2MDAiIHdpbmRvd0hlaWdodD0iMTkwMjAiIHRhYlJhdGlvPSI1MDAiLz48L2Jvb2tWaWV3cz48c2hlZXRzPjxzaGVldCBuYW1lPSIiIHNoZWV0SWQ9IjEiIHI6aWQ9InJJZDEiLz48L3NoZWV0cz48L3dvcmtib29rPicsCiJ4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE0YWMiIHhtbG5zOngxNGFjPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMDkvOS9hYyI+PHNoZWV0RGF0YS8+PC93b3Jrc2hlZXQ+JywieGwvc3R5bGVzLnhtbCI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PHN0eWxlU2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2IiBtYzpJZ25vcmFibGU9IngxNGFjIiB4bWxuczp4MTRhYz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWMiPjxmb250cyBjb3VudD0iNSIgeDE0YWM6a25vd25Gb250cz0iMSI+PGZvbnQ+PHN6IHZhbD0iMTEiIC8+PG5hbWUgdmFsPSJDYWxpYnJpIiAvPjwvZm9udD48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PGNvbG9yIHJnYj0iRkZGRkZGRkYiIC8+PC9mb250Pjxmb250PjxzeiB2YWw9IjExIiAvPjxuYW1lIHZhbD0iQ2FsaWJyaSIgLz48YiAvPjwvZm9udD48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PGkgLz48L2ZvbnQ+PGZvbnQ+PHN6IHZhbD0iMTEiIC8+PG5hbWUgdmFsPSJDYWxpYnJpIiAvPjx1IC8+PC9mb250PjwvZm9udHM+PGZpbGxzIGNvdW50PSI2Ij48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9Im5vbmUiIC8+PC9maWxsPjxmaWxsLz48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9InNvbGlkIj48ZmdDb2xvciByZ2I9IkZGRDlEOUQ5IiAvPjxiZ0NvbG9yIGluZGV4ZWQ9IjY0IiAvPjwvcGF0dGVybkZpbGw+PC9maWxsPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ic29saWQiPjxmZ0NvbG9yIHJnYj0iRkZEOTk3OTUiIC8+PGJnQ29sb3IgaW5kZXhlZD0iNjQiIC8+PC9wYXR0ZXJuRmlsbD48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJzb2xpZCI+PGZnQ29sb3IgcmdiPSJmZmM2ZWZjZSIgLz48YmdDb2xvciBpbmRleGVkPSI2NCIgLz48L3BhdHRlcm5GaWxsPjwvZmlsbD48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9InNvbGlkIj48ZmdDb2xvciByZ2I9ImZmYzZjZmVmIiAvPjxiZ0NvbG9yIGluZGV4ZWQ9IjY0IiAvPjwvcGF0dGVybkZpbGw+PC9maWxsPjwvZmlsbHM+PGJvcmRlcnMgY291bnQ9IjIiPjxib3JkZXI+PGxlZnQgLz48cmlnaHQgLz48dG9wIC8+PGJvdHRvbSAvPjxkaWFnb25hbCAvPjwvYm9yZGVyPjxib3JkZXIgZGlhZ29uYWxVcD0iZmFsc2UiIGRpYWdvbmFsRG93bj0iZmFsc2UiPjxsZWZ0IHN0eWxlPSJ0aGluIj48Y29sb3IgYXV0bz0iMSIgLz48L2xlZnQ+PHJpZ2h0IHN0eWxlPSJ0aGluIj48Y29sb3IgYXV0bz0iMSIgLz48L3JpZ2h0Pjx0b3Agc3R5bGU9InRoaW4iPjxjb2xvciBhdXRvPSIxIiAvPjwvdG9wPjxib3R0b20gc3R5bGU9InRoaW4iPjxjb2xvciBhdXRvPSIxIiAvPjwvYm90dG9tPjxkaWFnb25hbCAvPjwvYm9yZGVyPjwvYm9yZGVycz48Y2VsbFN0eWxlWGZzIGNvdW50PSIxIj48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgLz48L2NlbGxTdHlsZVhmcz48Y2VsbFhmcyBjb3VudD0iMiI+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIyIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIyIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSI1IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSI1IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIwIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIzIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIzIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSI0IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSI0IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48L2NlbGxYZnM+PGNlbGxTdHlsZXMgY291bnQ9IjEiPjxjZWxsU3R5bGUgbmFtZT0iTm9ybWFsIiB4ZklkPSIwIiBidWlsdGluSWQ9IjAiIC8+PC9jZWxsU3R5bGVzPjxkeGZzIGNvdW50PSIwIiAvPjx0YWJsZVN0eWxlcyBjb3VudD0iMCIgZGVmYXVsdFRhYmxlU3R5bGU9IlRhYmxlU3R5bGVNZWRpdW05IiBkZWZhdWx0UGl2b3RTdHlsZT0iUGl2b3RTdHlsZU1lZGl1bTQiIC8+PC9zdHlsZVNoZWV0Pid9OwpzLmV4dC5idXR0b25zLmNvcHlIdG1sNT17Y2xhc3NOYW1lOiJidXR0b25zLWNvcHkgYnV0dG9ucy1odG1sNSIsdGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5pMThuKCJidXR0b25zLmNvcHkiLCJDb3B5Iil9LGFjdGlvbjpmdW5jdGlvbihhLGIsZCxjKXt2YXIgYT1MKGIsYyksZT1hLnN0cixkPWcoIjxkaXYvPiIpLmNzcyh7aGVpZ2h0OjEsd2lkdGg6MSxvdmVyZmxvdzoiaGlkZGVuIixwb3NpdGlvbjoiZml4ZWQiLHRvcDowLGxlZnQ6MH0pO2MuY3VzdG9taXplJiYoZT1jLmN1c3RvbWl6ZShlLGMpKTtjPWcoIjx0ZXh0YXJlYSByZWFkb25seS8+IikudmFsKGUpLmFwcGVuZFRvKGQpO2lmKGkucXVlcnlDb21tYW5kU3VwcG9ydGVkKCJjb3B5Iikpe2QuYXBwZW5kVG8oYi50YWJsZSgpLmNvbnRhaW5lcigpKTtjWzBdLmZvY3VzKCk7Y1swXS5zZWxlY3QoKTt0cnl7aS5leGVjQ29tbWFuZCgiY29weSIpO2QucmVtb3ZlKCk7Yi5idXR0b25zLmluZm8oYi5pMThuKCJidXR0b25zLmNvcHlUaXRsZSIsCiJDb3B5IHRvIGNsaXBib2FyZCIpLGIuaTE4bigiYnV0dG9ucy5jb3B5U3VjY2VzcyIsezE6IkNvcGllZCBvbmUgcm93IHRvIGNsaXBib2FyZCIsXzoiQ29waWVkICVkIHJvd3MgdG8gY2xpcGJvYXJkIn0sYS5yb3dzKSwyRTMpO3JldHVybn1jYXRjaChmKXt9fWE9ZygiPHNwYW4+IitiLmkxOG4oImJ1dHRvbnMuY29weUtleXMiLCJQcmVzcyA8aT5jdHJsPC9pPiBvciA8aT7ijJg8L2k+ICsgPGk+QzwvaT4gdG8gY29weSB0aGUgdGFibGUgZGF0YTxicj50byB5b3VyIHN5c3RlbSBjbGlwYm9hcmQuPGJyPjxicj5UbyBjYW5jZWwsIGNsaWNrIHRoaXMgbWVzc2FnZSBvciBwcmVzcyBlc2NhcGUuIikrIjwvc3Bhbj4iKS5hcHBlbmQoZCk7Yi5idXR0b25zLmluZm8oYi5pMThuKCJidXR0b25zLmNvcHlUaXRsZSIsIkNvcHkgdG8gY2xpcGJvYXJkIiksYSwwKTtjWzBdLmZvY3VzKCk7Y1swXS5zZWxlY3QoKTt2YXIgaD1nKGEpLmNsb3Nlc3QoIi5kdC1idXR0b24taW5mbyIpLGo9ZnVuY3Rpb24oKXtoLm9mZigiY2xpY2suYnV0dG9ucy1jb3B5Iik7CmcoaSkub2ZmKCIuYnV0dG9ucy1jb3B5Iik7Yi5idXR0b25zLmluZm8oZmFsc2UpfTtoLm9uKCJjbGljay5idXR0b25zLWNvcHkiLGopO2coaSkub24oImtleWRvd24uYnV0dG9ucy1jb3B5IixmdW5jdGlvbihhKXthLmtleUNvZGU9PT0yNyYmaigpfSkub24oImNvcHkuYnV0dG9ucy1jb3B5IGN1dC5idXR0b25zLWNvcHkiLGZ1bmN0aW9uKCl7aigpfSl9LGV4cG9ydE9wdGlvbnM6e30sZmllbGRTZXBhcmF0b3I6Ilx0IixmaWVsZEJvdW5kYXJ5OiIiLGhlYWRlcjohMCxmb290ZXI6ITF9O3MuZXh0LmJ1dHRvbnMuY3N2SHRtbDU9e2NsYXNzTmFtZToiYnV0dG9ucy1jc3YgYnV0dG9ucy1odG1sNSIsYXZhaWxhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGouRmlsZVJlYWRlciE9PW0mJmouQmxvYn0sdGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5pMThuKCJidXR0b25zLmNzdiIsIkNTViIpfSxhY3Rpb246ZnVuY3Rpb24oYSxiLGQsYyl7YT1MKGIsYykuc3RyO2I9Yy5jaGFyc2V0O2MuY3VzdG9taXplJiYKKGE9Yy5jdXN0b21pemUoYSxjKSk7aWYoYiE9PWZhbHNlKXtifHwoYj1pLmNoYXJhY3RlclNldHx8aS5jaGFyc2V0KTtiJiYoYj0iO2NoYXJzZXQ9IitiKX1lbHNlIGI9IiI7cChuZXcgQmxvYihbYV0se3R5cGU6InRleHQvY3N2IitifSkseChjKSl9LGZpbGVuYW1lOiIqIixleHRlbnNpb246Ii5jc3YiLGV4cG9ydE9wdGlvbnM6e30sZmllbGRTZXBhcmF0b3I6IiwiLGZpZWxkQm91bmRhcnk6JyInLGVzY2FwZUNoYXI6JyInLGNoYXJzZXQ6bnVsbCxoZWFkZXI6ITAsZm9vdGVyOiExfTtzLmV4dC5idXR0b25zLmV4Y2VsSHRtbDU9e2NsYXNzTmFtZToiYnV0dG9ucy1leGNlbCBidXR0b25zLWh0bWw1IixhdmFpbGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gai5GaWxlUmVhZGVyIT09bSYmcSE9PW0mJiFNKCkmJnl9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5leGNlbCIsIkV4Y2VsIil9LGFjdGlvbjpmdW5jdGlvbihhLGIsZCxjKXt2YXIgZT0wLGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGcucGFyc2VYTUwoRlthXSl9LApmPWEoInhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbCIpLGg9Zi5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2hlZXREYXRhIilbMF0sYT17X3JlbHM6eyIucmVscyI6YSgiX3JlbHMvLnJlbHMiKX0seGw6e19yZWxzOnsid29ya2Jvb2sueG1sLnJlbHMiOmEoInhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzIil9LCJ3b3JrYm9vay54bWwiOmEoInhsL3dvcmtib29rLnhtbCIpLCJzdHlsZXMueG1sIjphKCJ4bC9zdHlsZXMueG1sIiksd29ya3NoZWV0czp7InNoZWV0MS54bWwiOmZ9fSwiW0NvbnRlbnRfVHlwZXNdLnhtbCI6YSgiW0NvbnRlbnRfVHlwZXNdLnhtbCIpfSxiPWIuYnV0dG9ucy5leHBvcnREYXRhKGMuZXhwb3J0T3B0aW9ucyksaixrLGQ9ZnVuY3Rpb24oYSl7aj1lKzE7az1vKGYsInJvdyIse2F0dHI6e3I6an19KTtmb3IodmFyIGI9MCxjPWEubGVuZ3RoO2I8YztiKyspe2Zvcih2YXIgZD1iLGk9IiI7ZD49MDspe2k9U3RyaW5nLmZyb21DaGFyQ29kZShkJTI2KzY1KStpO2Q9TWF0aC5mbG9vcihkLwoyNiktMX1kPWkrIiIrajtpZihhW2JdPT09bnVsbHx8YVtiXT09PW0pYVtiXT0iIjtpZih0eXBlb2YgYVtiXT09PSJudW1iZXIifHxhW2JdLm1hdGNoJiZnLnRyaW0oYVtiXSkubWF0Y2goL14tP1xkKyhcLlxkKyk/JC8pJiYhZy50cmltKGFbYl0pLm1hdGNoKC9eMFxkKy8pKWQ9byhmLCJjIix7YXR0cjp7dDoibiIscjpkfSxjaGlsZHJlbjpbbyhmLCJ2Iix7dGV4dDphW2JdfSldfSk7ZWxzZXtpPSFhW2JdLnJlcGxhY2U/YVtiXTphW2JdLnJlcGxhY2UoLyYoPyFhbXA7KS9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoL1tceDAwLVx4MDlceDBCXHgwQ1x4MEUtXHgxRlx4N0YtXHg5Rl0vZywiIik7ZD1vKGYsImMiLHthdHRyOnt0OiJpbmxpbmVTdHIiLHI6ZH0sY2hpbGRyZW46e3JvdzpvKGYsImlzIix7Y2hpbGRyZW46e3JvdzpvKGYsInQiLHt0ZXh0Oml9KX19KX19KX1rLmFwcGVuZENoaWxkKGQpfWguYXBwZW5kQ2hpbGQoayk7CmUrK307Zygic2hlZXRzIHNoZWV0IixhLnhsWyJ3b3JrYm9vay54bWwiXSkuYXR0cigibmFtZSIsUShjKSk7Yy5jdXN0b21pemVEYXRhJiZjLmN1c3RvbWl6ZURhdGEoYik7aWYoYy5oZWFkZXIpe2QoYi5oZWFkZXIsZSk7Zygicm93IGMiLGYpLmF0dHIoInMiLCIyIil9Zm9yKHZhciBpPTAsbD1iLmJvZHkubGVuZ3RoO2k8bDtpKyspZChiLmJvZHlbaV0sZSk7aWYoYy5mb290ZXImJmIuZm9vdGVyKXtkKGIuZm9vdGVyLGUpO2coInJvdzpsYXN0IGMiLGYpLmF0dHIoInMiLCIyIil9ZD1vKGYsImNvbHMiKTtnKCJ3b3Jrc2hlZXQiLGYpLnByZXBlbmQoZCk7aT0wO2ZvcihsPWIuaGVhZGVyLmxlbmd0aDtpPGw7aSsrKWQuYXBwZW5kQ2hpbGQobyhmLCJjb2wiLHthdHRyOnttaW46aSsxLG1heDppKzEsd2lkdGg6TihiLGkpLGN1c3RvbVdpZHRoOjF9fSkpO2MuY3VzdG9taXplJiZjLmN1c3RvbWl6ZShhKTtiPW5ldyBxO2Q9e3R5cGU6ImJsb2IiLG1pbWVUeXBlOiJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCJ9OwpFKGIsYSk7Yi5nZW5lcmF0ZUFzeW5jP2IuZ2VuZXJhdGVBc3luYyhkKS50aGVuKGZ1bmN0aW9uKGEpe3AoYSx4KGMpKX0pOnAoYi5nZW5lcmF0ZShkKSx4KGMpKX0sZmlsZW5hbWU6IioiLGV4dGVuc2lvbjoiLnhsc3giLGV4cG9ydE9wdGlvbnM6e30saGVhZGVyOiEwLGZvb3RlcjohMX07cy5leHQuYnV0dG9ucy5wZGZIdG1sNT17Y2xhc3NOYW1lOiJidXR0b25zLXBkZiBidXR0b25zLWh0bWw1IixhdmFpbGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gai5GaWxlUmVhZGVyIT09bSYmcn0sdGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5pMThuKCJidXR0b25zLnBkZiIsIlBERiIpfSxhY3Rpb246ZnVuY3Rpb24oYSxiLGQsYyl7SyhjKTthPWIuYnV0dG9ucy5leHBvcnREYXRhKGMuZXhwb3J0T3B0aW9ucyk7Yj1bXTtjLmhlYWRlciYmYi5wdXNoKGcubWFwKGEuaGVhZGVyLGZ1bmN0aW9uKGEpe3JldHVybnt0ZXh0OnR5cGVvZiBhPT09InN0cmluZyI/YTphKyIiLHN0eWxlOiJ0YWJsZUhlYWRlciJ9fSkpOwpmb3IodmFyIGU9MCxkPWEuYm9keS5sZW5ndGg7ZTxkO2UrKyliLnB1c2goZy5tYXAoYS5ib2R5W2VdLGZ1bmN0aW9uKGEpe3JldHVybnt0ZXh0OnR5cGVvZiBhPT09InN0cmluZyI/YTphKyIiLHN0eWxlOmUlMj8idGFibGVCb2R5RXZlbiI6InRhYmxlQm9keU9kZCJ9fSkpO2MuZm9vdGVyJiZhLmZvb3RlciYmYi5wdXNoKGcubWFwKGEuZm9vdGVyLGZ1bmN0aW9uKGEpe3JldHVybnt0ZXh0OnR5cGVvZiBhPT09InN0cmluZyI/YTphKyIiLHN0eWxlOiJ0YWJsZUZvb3RlciJ9fSkpO2E9e3BhZ2VTaXplOmMucGFnZVNpemUscGFnZU9yaWVudGF0aW9uOmMub3JpZW50YXRpb24sY29udGVudDpbe3RhYmxlOntoZWFkZXJSb3dzOjEsYm9keTpifSxsYXlvdXQ6Im5vQm9yZGVycyJ9XSxzdHlsZXM6e3RhYmxlSGVhZGVyOntib2xkOnRydWUsZm9udFNpemU6MTEsY29sb3I6IndoaXRlIixmaWxsQ29sb3I6IiMyZDQxNTQiLGFsaWdubWVudDoiY2VudGVyIn0sdGFibGVCb2R5RXZlbjp7fSx0YWJsZUJvZHlPZGQ6e2ZpbGxDb2xvcjoiI2YzZjNmMyJ9LAp0YWJsZUZvb3Rlcjp7Ym9sZDp0cnVlLGZvbnRTaXplOjExLGNvbG9yOiJ3aGl0ZSIsZmlsbENvbG9yOiIjMmQ0MTU0In0sdGl0bGU6e2FsaWdubWVudDoiY2VudGVyIixmb250U2l6ZToxNX0sbWVzc2FnZTp7fX0sZGVmYXVsdFN0eWxlOntmb250U2l6ZToxMH19O2MubWVzc2FnZSYmYS5jb250ZW50LnVuc2hpZnQoe3RleHQ6Yy5tZXNzYWdlLHN0eWxlOiJtZXNzYWdlIixtYXJnaW46WzAsMCwwLDEyXX0pO2MudGl0bGUmJmEuY29udGVudC51bnNoaWZ0KHt0ZXh0OlIoYyxmYWxzZSksc3R5bGU6InRpdGxlIixtYXJnaW46WzAsMCwwLDEyXX0pO2MuY3VzdG9taXplJiZjLmN1c3RvbWl6ZShhLGMpO2E9ci5jcmVhdGVQZGYoYSk7Yy5kb3dubG9hZD09PSJvcGVuIiYmIU0oKT9hLm9wZW4oKTphLmdldEJ1ZmZlcihmdW5jdGlvbihhKXthPW5ldyBCbG9iKFthXSx7dHlwZToiYXBwbGljYXRpb24vcGRmIn0pO3AoYSx4KGMpKX0pfSx0aXRsZToiKiIsZmlsZW5hbWU6IioiLGV4dGVuc2lvbjoiLnBkZiIsCmV4cG9ydE9wdGlvbnM6e30sb3JpZW50YXRpb246InBvcnRyYWl0IixwYWdlU2l6ZToiQTQiLGhlYWRlcjohMCxmb290ZXI6ITEsbWVzc2FnZTpudWxsLGN1c3RvbWl6ZTpudWxsLGRvd25sb2FkOiJkb3dubG9hZCJ9O3JldHVybiBzLkJ1dHRvbnN9KTsK"></script>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKGcpeyJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSIsImRhdGF0YWJsZXMubmV0IiwiZGF0YXRhYmxlcy5uZXQtYnV0dG9ucyJdLGZ1bmN0aW9uKGQpe3JldHVybiBnKGQsd2luZG93LGRvY3VtZW50KX0pOiJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24oZCxlKXtkfHwoZD13aW5kb3cpO2lmKCFlfHwhZS5mbi5kYXRhVGFibGUpZT1yZXF1aXJlKCJkYXRhdGFibGVzLm5ldCIpKGQsZSkuJDtlLmZuLmRhdGFUYWJsZS5CdXR0b25zfHxyZXF1aXJlKCJkYXRhdGFibGVzLm5ldC1idXR0b25zIikoZCxlKTtyZXR1cm4gZyhlLGQsZC5kb2N1bWVudCl9OmcoalF1ZXJ5LHdpbmRvdyxkb2N1bWVudCl9KShmdW5jdGlvbihnLGQsZSxoKXtkPWcuZm4uZGF0YVRhYmxlO2cuZXh0ZW5kKGQuZXh0LmJ1dHRvbnMse2NvbHZpczpmdW5jdGlvbihhLGIpe3JldHVybntleHRlbmQ6ImNvbGxlY3Rpb24iLAp0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMuY29sdmlzIiwiQ29sdW1uIHZpc2liaWxpdHkiKX0sY2xhc3NOYW1lOiJidXR0b25zLWNvbHZpcyIsYnV0dG9uczpbe2V4dGVuZDoiY29sdW1uc1RvZ2dsZSIsY29sdW1uczpiLmNvbHVtbnN9XX19LGNvbHVtbnNUb2dnbGU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5jb2x1bW5zKGIuY29sdW1ucykuaW5kZXhlcygpLm1hcChmdW5jdGlvbihhKXtyZXR1cm57ZXh0ZW5kOiJjb2x1bW5Ub2dnbGUiLGNvbHVtbnM6YX19KS50b0FycmF5KCl9LGNvbHVtblRvZ2dsZTpmdW5jdGlvbihhLGIpe3JldHVybntleHRlbmQ6ImNvbHVtblZpc2liaWxpdHkiLGNvbHVtbnM6Yi5jb2x1bW5zfX0sY29sdW1uc1Zpc2liaWxpdHk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5jb2x1bW5zKGIuY29sdW1ucykuaW5kZXhlcygpLm1hcChmdW5jdGlvbihhKXtyZXR1cm57ZXh0ZW5kOiJjb2x1bW5WaXNpYmlsaXR5Iixjb2x1bW5zOmEsdmlzaWJpbGl0eTpiLnZpc2liaWxpdHl9fSkudG9BcnJheSgpfSwKY29sdW1uVmlzaWJpbGl0eTp7Y29sdW1uczpoLHRleHQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjLl9jb2x1bW5UZXh0KGEsYy5jb2x1bW5zKX0sY2xhc3NOYW1lOiJidXR0b25zLWNvbHVtblZpc2liaWxpdHkiLGFjdGlvbjpmdW5jdGlvbihhLGIsYyxmKXthPWIuY29sdW1ucyhmLmNvbHVtbnMpO2I9YS52aXNpYmxlKCk7YS52aXNpYmxlKGYudmlzaWJpbGl0eSE9PWg/Zi52aXNpYmlsaXR5OiEoYi5sZW5ndGgmJmJbMF0pKX0saW5pdDpmdW5jdGlvbihhLGIsYyl7dmFyIGY9dGhpcyxkPWEuY29sdW1uKGMuY29sdW1ucyk7YS5vbigiY29sdW1uLXZpc2liaWxpdHkuZHQiK2MubmFtZXNwYWNlLGZ1bmN0aW9uKGEsYil7Yi5iRGVzdHJveWluZ3x8Zi5hY3RpdmUoZC52aXNpYmxlKCkpfSkub24oImNvbHVtbi1yZW9yZGVyLmR0IitjLm5hbWVzcGFjZSxmdW5jdGlvbihiLGQsZSl7MT09PWEuY29sdW1ucyhjLmNvbHVtbnMpLmNvdW50KCkmJigibnVtYmVyIj09PXR5cGVvZiBjLmNvbHVtbnMmJgooYy5jb2x1bW5zPWUubWFwcGluZ1tjLmNvbHVtbnNdKSxiPWEuY29sdW1uKGMuY29sdW1ucyksZi50ZXh0KGMuX2NvbHVtblRleHQoYSxjLmNvbHVtbnMpKSxmLmFjdGl2ZShiLnZpc2libGUoKSkpfSk7dGhpcy5hY3RpdmUoZC52aXNpYmxlKCkpfSxkZXN0cm95OmZ1bmN0aW9uKGEsYixjKXthLm9mZigiY29sdW1uLXZpc2liaWxpdHkuZHQiK2MubmFtZXNwYWNlKS5vZmYoImNvbHVtbi1yZW9yZGVyLmR0IitjLm5hbWVzcGFjZSl9LF9jb2x1bW5UZXh0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5jb2x1bW4oYikuaW5kZXgoKTtyZXR1cm4gYS5zZXR0aW5ncygpWzBdLmFvQ29sdW1uc1tjXS5zVGl0bGUucmVwbGFjZSgvXG4vZywiICIpLnJlcGxhY2UoLzwuKj8+L2csIiIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX19LGNvbHZpc1Jlc3RvcmU6e2NsYXNzTmFtZToiYnV0dG9ucy1jb2x2aXNSZXN0b3JlIix0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMuY29sdmlzUmVzdG9yZSIsCiJSZXN0b3JlIHZpc2liaWxpdHkiKX0saW5pdDpmdW5jdGlvbihhLGIsYyl7Yy5fdmlzT3JpZ2luYWw9YS5jb2x1bW5zKCkuaW5kZXhlcygpLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYS5jb2x1bW4oYikudmlzaWJsZSgpfSkudG9BcnJheSgpfSxhY3Rpb246ZnVuY3Rpb24oYSxiLGMsZCl7Yi5jb2x1bW5zKCkuZXZlcnkoZnVuY3Rpb24oYSl7YT1iLmNvbFJlb3JkZXImJmIuY29sUmVvcmRlci50cmFuc3Bvc2U/Yi5jb2xSZW9yZGVyLnRyYW5zcG9zZShhLCJ0b09yaWdpbmFsIik6YTt0aGlzLnZpc2libGUoZC5fdmlzT3JpZ2luYWxbYV0pfSl9fSxjb2x2aXNHcm91cDp7Y2xhc3NOYW1lOiJidXR0b25zLWNvbHZpc0dyb3VwIixhY3Rpb246ZnVuY3Rpb24oYSxiLGMsZCl7Yi5jb2x1bW5zKGQuc2hvdykudmlzaWJsZSghMCwhMSk7Yi5jb2x1bW5zKGQuaGlkZSkudmlzaWJsZSghMSwhMSk7Yi5jb2x1bW5zLmFkanVzdCgpfSxzaG93OltdLGhpZGU6W119fSk7cmV0dXJuIGQuQnV0dG9uc30pOwo="></script>
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSIsImRhdGF0YWJsZXMubmV0IiwiZGF0YXRhYmxlcy5uZXQtYnV0dG9ucyJdLGZ1bmN0aW9uKGQpe3JldHVybiBlKGQsd2luZG93LGRvY3VtZW50KX0pOiJvYmplY3QiPT09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24oZCxhKXtkfHwoZD13aW5kb3cpO2lmKCFhfHwhYS5mbi5kYXRhVGFibGUpYT1yZXF1aXJlKCJkYXRhdGFibGVzLm5ldCIpKGQsYSkuJDthLmZuLmRhdGFUYWJsZS5CdXR0b25zfHxyZXF1aXJlKCJkYXRhdGFibGVzLm5ldC1idXR0b25zIikoZCxhKTtyZXR1cm4gZShhLGQsZC5kb2N1bWVudCl9OmUoalF1ZXJ5LHdpbmRvdyxkb2N1bWVudCl9KShmdW5jdGlvbihlLGQsYSl7dmFyIGk9ZS5mbi5kYXRhVGFibGUsZz1hLmNyZWF0ZUVsZW1lbnQoImEiKTtpLmV4dC5idXR0b25zLnByaW50PXtjbGFzc05hbWU6ImJ1dHRvbnMtcHJpbnQiLAp0ZXh0OmZ1bmN0aW9uKGMpe3JldHVybiBjLmkxOG4oImJ1dHRvbnMucHJpbnQiLCJQcmludCIpfSxhY3Rpb246ZnVuY3Rpb24oYyxiLGEsZil7Yz1iLmJ1dHRvbnMuZXhwb3J0RGF0YShmLmV4cG9ydE9wdGlvbnMpO2E9ZnVuY3Rpb24oYyxhKXtmb3IodmFyIGI9Ijx0cj4iLGQ9MCxlPWMubGVuZ3RoO2Q8ZTtkKyspYis9IjwiK2ErIj4iK2NbZF0rIjwvIithKyI+IjtyZXR1cm4gYisiPC90cj4ifTtiPSc8dGFibGUgY2xhc3M9IicrYi50YWJsZSgpLm5vZGUoKS5jbGFzc05hbWUrJyI+JztmLmhlYWRlciYmKGIrPSI8dGhlYWQ+IithKGMuaGVhZGVyLCJ0aCIpKyI8L3RoZWFkPiIpO2Zvcih2YXIgYj1iKyI8dGJvZHk+IixqPTAsaT1jLmJvZHkubGVuZ3RoO2o8aTtqKyspYis9YShjLmJvZHlbal0sInRkIik7Yis9IjwvdGJvZHk+IjtmLmZvb3RlciYmYy5mb290ZXImJihiKz0iPHRmb290PiIrYShjLmZvb3RlciwidGgiKSsiPC90Zm9vdD4iKTt2YXIgaD1kLm9wZW4oIiIsIiIpLGM9Zi50aXRsZTsKImZ1bmN0aW9uIj09PXR5cGVvZiBjJiYoYz1jKCkpOy0xIT09Yy5pbmRleE9mKCIqIikmJihjPWMucmVwbGFjZSgiKiIsZSgidGl0bGUiKS50ZXh0KCkpKTtoLmRvY3VtZW50LmNsb3NlKCk7dmFyIGs9Ijx0aXRsZT4iK2MrIjwvdGl0bGU+IjtlKCJzdHlsZSwgbGluayIpLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1rLGI9ZSh0aGlzKS5jbG9uZSgpWzBdLGE7ImxpbmsiPT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYoZy5ocmVmPWIuaHJlZixhPWcuaG9zdCwtMT09PWEuaW5kZXhPZigiLyIpJiYwIT09Zy5wYXRobmFtZS5pbmRleE9mKCIvIikmJihhKz0iLyIpLGIuaHJlZj1nLnByb3RvY29sKyIvLyIrYStnLnBhdGhuYW1lK2cuc2VhcmNoKTtrPWMrYi5vdXRlckhUTUx9KTtoLmRvY3VtZW50LmhlYWQuaW5uZXJIVE1MPWs7aC5kb2N1bWVudC5ib2R5LmlubmVySFRNTD0iPGgxPiIrYysiPC9oMT48ZGl2PiIrZi5tZXNzYWdlKyI8L2Rpdj4iK2I7Zi5jdXN0b21pemUmJmYuY3VzdG9taXplKGgpOwpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zi5hdXRvUHJpbnQmJihoLnByaW50KCksaC5jbG9zZSgpKX0sMjUwKX0sdGl0bGU6IioiLG1lc3NhZ2U6IiIsZXhwb3J0T3B0aW9uczp7fSxoZWFkZXI6ITAsZm9vdGVyOiExLGF1dG9QcmludDohMCxjdXN0b21pemU6bnVsbH07cmV0dXJuIGkuQnV0dG9uc30pOwo="></script>
</head>
<body style="background-color: white;">
<div id="htmlwidget_container">
<div id="htmlwidget-cf76c4cbb57815ece1ca" class="datatables html-widget" style="width:960px;height:500px;">
</div>
</div>
<script type="application/json" data-for="htmlwidget-cf76c4cbb57815ece1ca">{"x":{"filter":"none","extensions":["Buttons"],"data":[["Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Antigua and Barbuda","Argentina","Armenia","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia Plurinational State of","Bosnia and Herzegovina","Botswana","Brazil","Brunei Darussalam","Bulgaria","Burkina Faso","Burundi","Cambodia","Cameroon","Canada","Cape Verde","Central African Republic","Chad","Chile","China","Colombia","Comoros","Congo","Costa Rica","Côte d'Ivoire","Croatia","Cuba","Cyprus","Czech Republic","Dem. Rep. Congo","Denmark","Djibouti","Dominica","Dominican Republic","Ecuador","Egypt","El Salvador","Equatorial Guinea","Eritrea","Estonia","Ethiopia","Federated States of Micronesia","Fiji","Finland","France","Gabon","Gambia","Georgia","Germany","Ghana","Greece","Greenland","Grenada","Guam","Guatemala","Guinea","Guinea-Bissau","Guyana","Haiti","Honduras","Hungary","Iceland","India","Indonesia","Iran Islamic Republic of","Iraq","Ireland","Israel","Italy","Jamaica","Japan","Jordan","Kazakhstan","Kenya","Kiribati","Korea Republic of","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Lithuania","Luxembourg","Macedonia the former Yugoslav Republic of","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Marshall Islands","Mauritania","Mauritius","Mexico","Micronesia Federated States of","Moldova Republic of","Mongolia","Montenegro","Morocco","Mozambique","Myanmar","Namibia","Nepal","Netherlands","New Zealand","Nicaragua","Niger","Nigeria","Northern Mariana Islands","North Korea","Norway","Oman","Pakistan","Palestinian Territory Occupied","Panama","Papua New Guinea","Paraguay","Peru","Philippines","Poland","Portugal","Puerto Rico","Qatar","Romania","Russian Federation","Rwanda","Saint Lucia","Saint Vincent and the Grenadines","Samoa","Sao Tome and Principe","Saudi Arabia","Senegal","Serbia","Seychelles","Sierra Leone","Singapore","Slovakia","Slovenia","Solomon Islands","Somalia","South Africa","South Sudan","Spain","Sri Lanka","Sudan","Suriname","Swaziland","Sweden","Switzerland","Syrian Arab Republic","Tajikistan","Tanzania","Thailand","Timor-Leste","Togo","Tonga","Trinidad and Tobago","Tunisia","Turkey","Turkmenistan","Uganda","Ukraine","United Arab Emirates","United Kingdom","United States","Uruguay","Uzbekistan","Vanuatu","Venezuela Bolivarian Republic of","Viet Nam","Virgin Islands U.S.","Yemen","Zambia","Zimbabwe"],[160,43,139,298,74,168,105,97,33,71,75,34,106,140,161,107,57,76,108,200,305,162,121,44,193,135,66,45,201,175,10,202,101,203,169,204,98,6,125,176,170,126,205,46,109,77,47,171,78,177,110,111,122,141,127,172,178,58,179,25,22,79,80,173,206,35,81,207,82,349,112,351,128,208,209,113,114,129,48,83,163,11,142,143,84,85,86,115,67,144,36,180,23,68,145,37,12,59,146,194,210,147,60,87,49,181,182,13,14,211,88,24,212,183,130,78,61,38,50,148,184,15,195,164,89,72,131,213,214,376,7,90,150,165,149,132,26,136,123,16,51,91,385,151,52,62,185,116,117,27,215,152,216,53,186,217,69,54,55,28,187,196,435,92,17,522,118,197,93,94,153,39,189,18,19,218,29,119,154,155,40,190,63,156,95,102,99,41,30,133,20,422,157,191,198],["AFG","ALB","DZA","ASM","AND","AGO","ATG","ARG","ARM","AUS","AUT","AZE","BHS","BHR","BGD","BRB","BLR","BEL","BLZ","BEN","BMU","BTN","BOL","BIH","BWA","BRA","BRN","BGR","BFA","BDI","KHM","CMR","CAN","CPV","CAF","TCD","CHL","CHN","COL","COM","COG","CRI","CIV","HRV","CUB","CYP","CZE","COD","DNK","DJI","DMA","DOM","ECU","EGY","SLV","GNQ","ERI","EST","ETH","FSM","FJI","FIN","FRA","GAB","GMB","GEO","DEU","GHA","GRC","GRL","GRD","GUM","GTM","GIN","GNB","GUY","HTI","HND","HUN","ISL","IND","IDN","IRN","IRQ","IRL","ISR","ITA","JAM","JPN","JOR","KAZ","KEN","KIR","KOR","KWT","KGZ","LAO","LVA","LBN","LSO","LBR","LBY","LTU","LUX","MKD","MDG","MWI","MYS","MDV","MLI","MLT","MHL","MRT","MUS","MEX","FSM","MDA","MNG","MNE","MAR","MOZ","MMR","NAM","NPL","NLD","NZL","NIC","NER","NGA","MNP","PRK","NOR","OMN","PAK","PSE","PAN","PNG","PRY","PER","PHL","POL","PRT","PRI","QAT","ROU","RUS","RWA","LCA","VCT","WSM","STP","SAU","SEN","SRB","SYC","SLE","SGP","SVK","SVN","SLB","SOM","ZAF","SSD","ESP","LKA","SDN","SUR","SWZ","SWE","CHE","SYR","TJK","TZA","THA","TLS","TGO","TON","TTO","TUN","TUR","TKM","UGA","UKR","ARE","GBR","USA","URY","UZB","VUT","VEN","VNM","VIR","YEM","ZMB","ZWE"],["EMR","EUR","AFR","WPR","EUR","AFR","AMR","AMR","EUR","WPR","EUR","EUR","AMR","EMR","SEA","AMR","EUR","EUR","AMR","AFR","AMR","SEA","AMR","EUR","AFR","AMR","WPR","EUR","AFR","AFR","WPR","AFR","AMR","AFR","AFR","AFR","AMR","WPR","AMR","AFR","AFR","AMR","AFR","EUR","AMR","EUR","EUR","AFR","EUR","EMR","AMR","AMR","AMR","EMR","AMR","AFR","AFR","EUR","AFR","WPR","WPR","EUR","EUR","AFR","AFR","EUR","EUR","AFR","EUR","EUR","AMR","WPR","AMR","AFR","AFR","AMR","AMR","AMR","EUR","EUR","SEA","SEA","EMR","EMR","EUR","EUR","EUR","AMR","WPR","EMR","EUR","AFR","WPR","WPR","EMR","EUR","WPR","EUR","EMR","AFR","AFR","EMR","EUR","EUR","EUR","AFR","AFR","WPR","SEA","AFR","EUR","WPR","AFR","AFR","AMR","WPR","EUR","WPR","EUR","EMR","AFR","SEA","AFR","SEA","EUR","WPR","AMR","AFR","AFR","WPR","SEA","EUR","EMR","EMR","EMR","AMR","WPR","AMR","AMR","WPR","EUR","EUR","AMR","EMR","EUR","EUR","AFR","AMR","AMR","WPR","AFR","EMR","AFR","EUR","AFR","AFR","WPR","EUR","EUR","WPR","EMR","AFR","AFR","EUR","SEA","EMR","AMR","AFR","EUR","EUR","EMR","EUR","AFR","SEA","SEA","AFR","WPR","AMR","EMR","EUR","EUR","AFR","EUR","EMR","EUR","AMR","AMR","EUR","WPR","AMR","WPR","AMR","EMR","AFR","AFR"],[2,5,58,10,6,3,11,8,9,12,13,14,23,22,20,30,25,16,26,17,27,32,28,24,33,29,31,21,19,15,102,40,35,46,34,188,37,38,44,45,42,47,39,85,48,51,52,41,56,54,55,57,59,60,173,76,61,63,64,68,66,65,67,69,74,71,53,72,77,79,78,81,80,73,75,82,86,84,87,93,89,88,91,92,90,94,95,96,98,97,99,100,103,105,106,101,107,116,108,113,109,110,114,115,125,121,136,137,122,126,127,124,133,135,123,68,120,130,129,118,132,128,138,146,144,148,142,140,141,131,158,145,149,150,161,151,155,160,152,153,156,159,157,163,164,165,166,111,206,213,178,167,169,176,185,172,170,180,181,171,175,215,177,62,112,168,179,183,182,36,186,191,200,190,194,189,195,196,197,198,193,201,202,7,70,204,203,205,211,207,210,209,214,216,217],[173.07,1.53,34.59,0,0,7220.36,0.26,104.61,13.91,3.81,2.12,20.01,3.62,1.54,232.57,0,71.91,11.12,3.07,291.5,0,23.89,170.51,0.74,1435.64,2200.53,0,0.32,272.71,659.24,439.78,6199.6,19.31,36.64,2713.5,2466.34,19.63,2575.89,417.44,2.98,2449.7,7.21,2501.81,0.85,10.08,0.18,0.79,16414.83,1.4,35.48,0,378.71,302.32,17.68,24.08,121.19,52.92,3.29,3929.11,0,1.49,0.82,55.86,54.42,149.86,54.82,25.95,5100.07,2.6,0,0.31,0.02,50.14,1937.8,948.8,33.48,663.7,67.32,1.55,0,36733.74,26493,70.52,5.54,2.48,2.48,27.74,5.95,11.89,0.12,69.14,7164.77,0.53,46.16,0.25,44.17,245.62,27.45,1.42,4769.49,844.41,22.05,7.78,0.39,0.07,1519.31,6557.4,232.7,0.04,442.05,0.99,0.07,141.44,12.98,513.02,0,181.64,1.91,0.3,143.83,33578.95,4846.41,880.67,497.32,9.48,0.2,28,368.62,57354.11,0,36.75,1.06,0.49,1576.68,0.01,39.14,666.75,35.16,491.95,439.5,18.81,46.21,1.5,0.09,62.69,1502.8,276.24,0.41,0.15,0,2.52,18.08,406.75,4.91,0,817,6.04,0.06,0.02,0,212.85,72537.06,756.89,53.66,11.42,635.46,10.78,1547.81,3.47,4.34,0,34.49,25001.43,5426.71,3.75,200.9,0,6.22,5.49,14.63,0,6360.94,2119.01,2.04,38.12,76.92,25.62,322.89,0,178.88,1069.91,0,50.5,12406.34,6318.17],[36.95,0.45,8.85,0,0,2791.19,0,20.55,0.9,0.28,0.32,5.93,1.13,0,67.02,0,26.34,2.87,1.28,136.78,0,2,40.19,0.24,443.96,705.43,0,0.06,97.86,227.71,178.54,2774.32,3.36,17.75,1436.77,1059.95,0.54,428.17,116,0,1088.24,3.48,1032.32,0.02,3.33,0.03,0.1,7052.4,0.34,16.33,0,141.62,49.67,4.33,4.54,41.03,32.2,0.91,2142.86,0,0.14,0.18,15.11,29.39,63.92,8.82,3.97,2274.94,0.56,0,0,0,14.61,908.14,376.3,13.5,320.21,23.98,0.11,0,8425.74,7525.36,23.42,0,0.6,0.68,6.3,1.32,1.53,0,7.18,2064.82,0,10.01,0,9.42,32.71,8.11,0.17,2168.1,363.55,0,0.19,0.11,0.01,607.8,2631.13,13.52,0.02,189.51,0.26,0,63.14,2.69,83.93,0,32.54,0.46,0.08,36.86,12369.6,1100.46,357.28,119.18,0.41,0.06,6.79,111.81,23854.11,0,8.6,0.25,0.05,385.89,0,12.35,241.06,7.9,156.13,118.66,3.98,13.15,0,0,26.33,341.1,117.7,0,0,0,0,0,158.55,1.23,0,316.77,2.27,0,0,0,83.4,31745.38,357.18,11.11,2.74,244.25,5.19,662.92,0.8,1.02,0,8.92,7713.44,1393.15,0.63,84.94,0,2.91,0.9,3.2,0,2080.39,750.39,0,9.49,13.69,3.46,28.1,0,60.27,197.98,0,14.39,4765.05,2806.92],[120.67,1.08,19.59,0,0,2918.4,0,82.56,13.01,3.53,1.8,13.53,2.49,0,159.31,0,43.5,8.25,1.79,114.27,0,20.7,123.65,0.5,878.5,1445.78,0,0.26,141.63,351.02,248.52,2863.16,15.71,17.02,1022.97,955.81,19.1,2108.78,276.44,0,1022.18,3.73,1250.02,0.83,6.71,0.15,0.69,7310.82,1.06,15.17,0,224.25,243.08,11.39,18.53,65.02,9.88,2.38,1190.49,0,1.35,0.64,37.61,16.96,62.58,45.46,21.34,2244.1,2.04,0,0,0,30.43,888.47,443.61,18.23,299.56,40.98,1.44,0,24112.49,17293.23,44.27,0,1.88,1.8,17.47,4.63,10.36,0,59.12,4091.36,0,35.77,0,33.65,198.53,19.21,1.24,2242.03,354.69,0,7.59,0.28,0.06,729.51,3050.27,218.86,0.02,184.84,0.73,0,60.66,10.23,418.23,0,146.35,1.45,0.22,102.8,16951.31,3531.82,450.75,361.02,9.07,0.13,20.7,196.65,24972.93,0,25.1,0.81,0.44,1043.38,0,26.1,264,26.31,318.31,294.96,14.59,33.06,0,0,36.36,1159.34,123.57,0,0,0,0,0,169.72,3.68,0,390.01,3.77,0.06,0.02,0,92.3,37647.34,304.68,42.56,7.97,299.61,5.44,763.64,2.67,3.32,0,24.68,13666.16,4013.35,3.12,97.29,0,3.31,4.6,9.77,0,3201.94,1346.05,0,28.56,62.4,21.95,293.63,0,107.59,855.1,0,29.06,5335.48,2790.76],[15.45,0,6.15,0,0,1510.77,0,1.5,0,0,0,0.55,0,0,6.23,0,2.07,0,0,40.45,0,1.2,6.68,0,113.18,49.32,0,0,33.21,80.51,12.71,562.12,0.25,1.88,253.76,450.59,0,38.93,25,0,339.27,0,219.47,0,0.05,0,0,2051.61,0,3.99,0,12.84,9.57,1.96,1.02,15.13,10.84,0,595.76,0,0,0,3.14,8.06,23.36,0.54,0.64,581.02,0,0,0,0,5.1,141.19,128.89,1.76,43.93,2.36,0,0,4195.51,1674.41,2.83,0,0,0,3.97,0,0,0,2.84,1008.59,0,0.39,0,1.1,14.39,0.13,0,359.36,126.18,0,0,0,0,182.01,875.99,0.33,0,67.71,0,0,17.64,0.06,10.85,0,2.75,0,0,4.17,4258.04,214.13,72.64,17.12,0,0,0.51,60.16,8527.08,0,3.05,0,0,147.41,0,0.7,161.69,0.95,17.51,25.88,0.24,0,0,0,0,2.36,34.97,0,0,0,0,0,78.48,0,0,110.23,0,0,0,0,37.14,3144.35,95.03,0,0.72,91.61,0.15,121.24,0,0,0,0.89,3621.84,20.21,0,18.67,0,0,0,1.66,0,1078.6,22.57,0,0.07,0.83,0.21,1.16,0,11.02,16.83,0,7.04,2305.81,720.49],[0.53,0.05,0.09,0,0,28.86,0.28,0.24,0.46,0.02,0.02,0.21,0.93,0.11,0.14,0,0.76,0.1,0.85,2.68,0,3.08,1.59,0.02,63.45,1.06,0,0,1.51,5.9,2.82,26.56,0.05,7.04,55.37,17.57,0.11,0.19,0.87,0.38,53.02,0.15,11.02,0.02,0.09,0.02,0.01,21.24,0.02,4,0,3.6,1.87,0.02,0.39,14.34,1.01,0.25,3.95,0,0.17,0.01,0.09,3.15,7.53,1.37,0.03,18.61,0.02,0,0.29,0.01,0.31,15.37,51.44,4.36,6.2,0.83,0.02,0,2.8,10.29,0.09,0.02,0.05,0.03,0.05,0.21,0.01,0,0.39,15.56,0.47,0.09,0.01,0.74,3.61,1.39,0.02,223.39,18.75,0.35,0.27,0.07,0,6.27,38.09,0.77,0.01,2.51,0.24,0.13,3.48,1.02,0.4,0,4.46,0.06,0.05,0.42,120.02,8.99,35.82,1.74,0.06,0,0.46,1.85,31.48,0.01,0.15,0.02,0.01,0.83,0,1,8.75,0.53,1.57,0.44,0.05,0.45,0.04,0,0.32,1.05,2.38,0.22,0.14,0,1.33,0.06,2.69,0.06,0,12.66,0.11,0,0,0,1.97,133.12,6.13,0.12,0.06,1.58,1.99,120.27,0.04,0.05,0,0.41,46.76,7.99,0.32,2.75,0,0.46,0.05,0.02,0,16.3,4.73,0.02,0.06,0.02,0.75,1.08,0,0.58,1.14,0,0.19,76.53,40.49],[0.11,0,0.05,0,0,12.67,0,0.01,0,0,0,0.03,0,0,0.01,0,0.14,0,0,0.88,0,0.58,0.19,0,15.63,0.1,0,0,0.4,1.61,0.26,5.66,0,1.22,13.26,6.73,0,0.02,0.21,0,17.22,0,2.28,0,0,0,0,5.77,0,1.37,0,0.41,0.2,0.01,0.06,4.56,0.48,0,1.45,0,0,0,0.03,1.26,2.54,0.08,0.01,5.46,0,0,0,0,0.09,2.63,17.13,0.8,1.22,0.09,0,0,1.11,2.35,0.02,0,0,0,0.05,0,0,0,0.06,5.23,0,0.01,0,0.06,0.61,0.05,0,46.66,6.62,0,0,0,0,1.8,11.27,0,0,0.81,0,0,1.08,0.02,0.03,0,0.43,0,0,0.04,33.59,1.44,8.05,0.18,0,0,0.03,0.6,10.64,0,0.06,0,0,0.22,0,0.07,5.71,0.05,0.2,0.08,0,0,0,0,0,0.01,0.73,0,0,0,0,0,1.19,0,0,4.03,0,0,0,0,0.74,19.74,1.83,0,0.01,0.56,0.1,25.22,0,0,0,0.03,14.99,0.17,0,0.61,0,0,0,0.01,0,5.75,0.34,0,0,0,0.03,0.01,0,0.13,0.08,0,0.07,30.98,11.1],[0.42,0.04,0.06,0,0,41.86,0,0.12,0.07,0,0.01,0.15,0.71,0,0.12,0,0.61,0.06,1.05,4.3,0,0.78,1.1,0.01,57.4,0.86,0,0,1.94,7.23,3.21,41.14,0.02,9.47,94.26,28.73,0.01,0.08,0.62,0,81.74,0.19,16.22,0,0.07,0.01,0,33.41,0.01,5.47,0,3.79,0.86,0.01,0.19,16.59,2.13,0.15,7.28,0,0.05,0.01,0.06,5.49,11.62,0.5,0.01,26.55,0.01,0,0,0,0.27,25.04,68.09,4.96,8.8,0.86,0,0,1.86,8.08,0.08,0,0.03,0.02,0.02,0.12,0,0,0.11,15.35,0,0.05,0,0.45,1.45,0.88,0.01,311.42,27.95,0,0.01,0.04,0,8.52,55.26,0.12,0.02,4.11,0.15,0,5.18,0.51,0.18,0,1.81,0.04,0.03,0.29,154.57,5.45,43.94,1.17,0.01,0,0.31,2.26,47.4,0,0.08,0.01,0,0.64,0,0.86,10.17,0.34,1.37,0.35,0.02,0.28,0,0,0.31,0.52,3.21,0,0,0,0,0,3.58,0.03,0,16.75,0.09,0,0,0,2.86,160.27,9.93,0.06,0.03,2.03,2.59,160.99,0.02,0.03,0,0.32,51.85,4.87,0.19,3.94,0,0.53,0.02,0.01,0,20.36,3.6,0,0.03,0.01,0.24,0.25,0,0.53,0.54,0,0.18,107.74,60.02],[1.28,0.09,0.14,0,0,45.38,0,0.53,1.17,0.04,0.05,0.36,1.68,0,0.28,0,1.2,0.18,1.49,3.68,0,6.66,3.44,0.03,114.82,1.86,0,0.01,2.94,11.62,4.88,42.9,0.11,9.52,69.96,26.2,0.27,0.36,1.56,0,77.48,0.2,18.67,0.05,0.14,0.03,0.02,35.45,0.05,5.08,0,6.16,4.28,0.04,0.91,24.45,0.67,0.47,4.14,0,0.42,0.03,0.15,3.09,12,2.95,0.06,27.36,0.05,0,0,0,0.62,24.55,82.25,6.66,8.66,1.5,0.04,0,5.02,18.58,0.15,0,0.1,0.06,0.07,0.44,0.02,0,0.97,30.76,0,0.17,0,1.69,9.11,2.55,0.06,335.3,27.33,0,0.68,0.12,0.01,10.44,65.18,1.93,0.02,4,0.41,0,4.97,2.03,0.92,0,9,0.14,0.09,0.84,232.19,18.73,60.62,3.99,0.13,0.01,1,4.01,48.28,0,0.26,0.04,0.02,1.66,0,1.83,10.91,1.12,2.84,0.86,0.09,0.8,0,0,0.46,2.13,3.89,0,0,0,0,0,4.16,0.1,0,21.34,0.16,0,0,0,3.26,200.78,8.58,0.22,0.11,2.51,2.76,193.6,0.07,0.1,0,0.89,94.73,14.68,0.9,4.72,0,0.63,0.11,0.03,0,31.87,7.77,0,0.11,0.05,1.71,2.84,0,0.98,2.45,0,0.36,122.78,62.92],[11957.22,10.14,3237.32,0.38,0.38,11161.88,1.19,701.47,91.73,44.24,77.81,38.42,1.9,6.01,72821.73,0.95,454.87,53.62,8.66,1037.32,0,120.69,344.41,115.92,591.15,5530.19,22.63,90.11,1628.8,2675.22,8612.6,6935.23,105.61,27.4,2224.7,3196.33,467.44,35409.54,1012.82,61.11,2271.04,49.17,4985.27,33.06,46.98,1.13,38.95,50710.56,19.95,347.55,3.39,489.56,493.39,218.39,116.47,63.37,603.1,25.11,25441.16,14.3,63.72,37.19,517.18,1121.06,395.11,157.33,317.85,10148.44,91.87,7.56,1.03,7.17,324.38,3558.29,1559.18,105.3,1967.69,85.14,76.19,6.82,477571,102934.86,1366.56,858.16,16.89,15.64,326.24,6.68,3150.59,26.69,1374.82,9038.39,29.97,2567.9,5.46,684.14,3345.21,62.76,61.25,1179.09,3172.28,677.12,227.24,0.91,8.47,11972.49,2316.14,2401.74,19.51,1655.59,1.01,23.1,837.08,19.12,2621.88,14.3,312.74,643.07,2.57,3227.79,20824.22,26651.34,783.41,5575.31,34.11,10.15,152.23,3797.88,180240.87,2.64,15466.39,10.92,23.56,44186.44,2,237.8,3082.45,262.28,1960.24,13590.31,543.88,212.32,9.94,7.11,1075.98,15107.97,440.6,1.37,1.64,1.8,6.91,661.59,3442.46,107.62,0,3259.89,69.9,31.83,15.53,57.2,6990.63,24828,3439.08,264.24,1167.69,7336.14,14.34,395.69,27.4,16.35,20.65,220.11,29905.65,8360.95,1185.58,464.29,1.32,20.67,236.75,736.87,456.67,5540.16,4983.33,42.6,297.6,585.41,69.1,2619.41,16.86,725.65,16076.99,0,1569.97,5023,1675.17],[2900.63,2.16,838.72,0.11,0.11,2837.09,0.37,175.52,42.12,8.71,16.63,14.26,0.49,0.85,18757.53,0.28,207.43,15.12,3.27,265.46,0,28.32,89.29,34.37,153.35,1802.06,5.99,33.95,418.25,687.41,2322.3,1761.18,16.51,7.35,577.88,802.01,150.99,9139.48,261.68,15.48,576.49,15.45,1225.59,9.19,16.37,0.17,11.29,12861.81,4.98,89.5,0.41,106.72,117.27,29.58,38.13,15.54,154.32,10.84,6510.13,3.6,10.59,8.78,76.12,283.15,101.59,65.22,68.49,2646.3,27.98,2.26,0,2.09,68.8,900.54,400.27,35.82,139.37,16.28,27,2.01,120146.27,26744.96,356.29,144.49,3.5,4.06,61.56,2.72,815.15,4.6,524.91,2298.93,1.55,652.26,0,253.78,874.29,25.91,15.86,308.53,802.93,175.05,100.09,0,2.89,3061.86,586.91,841.48,5.36,413.24,0.25,5.96,212.61,7.14,695.72,3.6,135.52,170.03,0.93,1004.04,5474.17,7159.72,209.59,1519.09,7.53,3.2,33.08,947.17,44782.14,0.78,4194.74,2.41,1.63,11091.96,0.58,47.35,779.26,76.69,432.89,3485.2,209.18,81.32,3.09,0,432.44,6797.45,119.74,0.57,0,0.51,2.06,0,904.54,30.85,0,837.6,24.94,10.26,4.46,14.47,1772.89,3192.66,876.54,72.61,384.83,1868.12,3.92,103.37,4.64,3.99,3.28,38.86,7626.97,2256.98,296.39,120.15,0.4,8.21,71.51,189.38,121.99,1392.41,2276.52,0,55,114.03,22.97,742.75,4.33,176.28,4320.45,0,397.09,1270.24,435.15],[7307.67,5.99,2017.33,0.27,0.26,6622.45,0.82,473.36,46.88,33.5,59.21,21.96,1.41,5.16,45280.24,0.67,246.2,34.97,5.39,625.17,0,78.26,212.09,79.04,364.69,3495.1,16.63,53.89,969.18,1599.08,5229.18,4188.33,86.73,20.05,1344.43,1905.96,312.57,22576.34,630.14,37.22,1372.56,31.3,3051.25,23.62,29.11,0.96,27.67,30304.98,14.97,214.53,2.98,346.43,348.85,88.04,70.62,39.26,362.92,14.27,15350.53,8.86,44.91,26.96,438.53,689.99,234.63,87.94,246.35,6134.04,63.23,5.3,1.03,5.08,225.29,2152.76,942.75,63.28,658.83,61.35,48.67,4.81,300358.36,64073.37,857.62,633.76,13.39,11.59,255.89,3.96,2333.52,21.17,821.4,5467.46,18.63,1898.5,5.46,413.65,2041.06,35.72,38.56,716.25,1919.22,420.44,126.43,0.91,5.58,7229.38,1388.6,1490.32,13.07,990.57,0.75,14.35,509.59,11.59,1812.4,8.86,172.48,397.54,1.65,2014.86,12274.1,16347.69,471.02,3352.92,25.51,6.5,106.4,2251.69,109373.72,1.87,9581.36,7.65,15.9,27420.11,1.42,145.09,1894.83,154.62,1377.61,9403.5,331.54,129.04,6.85,7.11,604.44,8192.29,259.38,0.81,1.64,1.28,4.85,617.38,2043.1,75.19,0,1958.72,44.95,20.14,11.07,34.91,4161.59,19385.79,2079.29,182.83,752.16,4451.65,8.37,239.68,22.76,12,10.8,170.1,17890.18,5955.18,721.67,278.53,0.93,11.11,123,440.5,280.66,3296.78,2673.72,37.15,233.43,452,45.31,1838.34,10.32,496.58,9968.61,0,956.23,3005.98,1005.66],[1748.92,2,381.27,0,0,1702.33,0,52.59,2.73,2.03,1.97,2.2,0,0,8783.96,0,1.24,3.53,0,146.7,0,14.11,43.04,2.52,73.11,233.03,0,2.26,241.37,388.73,1061.12,985.72,2.37,0,302.39,488.36,3.89,3693.72,120.99,8.41,321.99,2.42,708.42,0.25,1.5,0,0,7543.77,0,43.53,0,36.41,27.27,100.77,7.73,8.58,85.86,0,3580.5,1.84,8.22,1.45,2.53,147.92,58.89,4.17,3.02,1368.1,0.66,0,0,0,30.29,504.99,216.16,6.19,1169.49,7.51,0.52,0,57066.37,12116.53,152.64,79.91,0,0,8.8,0,1.92,0.92,28.51,1272,9.78,17.13,0,16.71,429.87,1.12,6.83,154.31,450.13,81.63,0.72,0,0,1681.24,340.63,69.94,1.08,251.78,0,2.8,114.87,0.39,113.76,1.84,4.74,75.51,0,208.88,3075.95,3143.93,102.81,703.3,1.07,0.44,12.75,599.01,26085.02,0,1690.3,0.86,6.02,5674.37,0,45.36,408.36,30.97,149.75,701.61,3.17,1.96,0,0,39.1,118.23,61.49,0,0,0,0,44.21,494.82,1.58,0,463.57,0,1.43,0,7.82,1056.15,2249.55,483.26,8.8,30.7,1016.37,2.04,52.64,0,0.36,6.58,11.15,4388.49,148.79,167.51,65.62,0,1.35,42.24,106.98,54.02,850.98,33.08,5.45,9.17,19.38,0.83,38.32,2.21,52.78,1787.93,0,216.65,746.78,234.36],[12.32,0.37,3.47,0,0,14.68,0,0.48,0.49,0.05,0.16,0.1,0,0,18.42,0,0.08,0.19,0,3.26,0,6.72,1.24,0.48,10.23,0.48,0,0.22,3,8.05,21.77,10.12,0.04,0,15.98,7.49,0.11,1.57,1.02,2.7,16.77,0.22,7.48,0.04,0.08,0,0,21.82,0,15.05,0,1.16,0.58,0.34,0.46,2.65,3.93,0,8.78,5.1,3.22,0.16,0.02,23.5,6.59,0.6,0.03,13.12,0.04,0,0,0,0.51,9.62,29.3,2.72,32.39,0.29,0.04,0,15.08,17.02,0.83,0.55,0,0,0.11,0,0.01,0.03,0.63,6.73,25.3,0.24,0,0.92,18.31,0.39,0.51,20.14,24.03,4.4,0.17,0,0,16.97,4.5,0.94,1.09,3.1,0,17.64,7.19,0.16,0.32,5.1,0.74,9.3,0,2.25,24.83,20.97,11.59,7.45,0.04,0.05,0.69,6.22,33.35,0,31.5,0.09,0.67,8.71,0,4.27,14.58,1.55,1.72,2.2,0.06,0.13,0,0,1.28,0.5,1.31,0,0,0,0,0.5,7.7,0.11,0,17.21,0,0.17,0,3.43,21.41,14.12,9.57,0.13,0.6,6.32,1.4,11.03,0,0.03,0.1,0.38,18.72,1.22,34.23,2.17,0,0.48,1.63,0.53,3.58,4.66,0.5,0.43,0.08,0.03,0.11,0.46,2.32,0.61,8.37,0,2.03,10.31,3.7],[34.47,0.18,6.02,0.57,0.36,44.09,1.03,1.06,3.19,0.09,0.44,0.37,0.31,0.23,33.85,0.23,4.76,0.32,2.75,8.6,0,11.3,2.5,2.06,20.27,2.23,3.88,1.06,8.57,22.48,42.54,26.88,0.11,3.98,38.87,22.56,2.09,1.65,1.42,6.77,44.39,0.84,19.84,0.49,0.34,0.04,0.25,63.06,0.21,30.5,1.49,2.91,2.07,0.1,1.58,6.49,10.42,1.81,22.92,10.78,3.4,0.37,0.28,54.14,19.13,3.66,0.19,31.6,0.58,9.75,0,3.4,1.31,25.58,74.42,13.38,3.9,0.6,0.6,1.54,27,29.18,1.2,1.39,0.19,0.14,0.23,0.25,1.43,0.2,7.75,17.61,4.18,3,0,12.29,39.54,2.77,0.75,44.93,63.53,7.97,7.32,0,0.33,44.36,12.75,7.45,4.11,9.22,0.14,32.27,17.93,1.38,1.52,10.78,7.52,15.93,0.36,7.93,70.48,36.01,26.44,15.32,0.11,0.17,1.53,19.87,91.45,4.08,41.26,0.11,0.16,18.91,0.04,3.36,33.78,3.42,3.85,10.37,1.22,1.71,0.2,0,5.01,10.39,3.36,0.79,0,0.88,3.82,0,21.05,0.8,0,45.47,1.06,0.43,0.5,8.44,62.57,16.3,25.37,0.36,4.73,15.99,1.99,25.5,0.11,0.11,0.06,1.44,52.95,7.95,89.75,5.73,1.17,1.5,1.64,0.64,6.24,14.14,10.85,0,0.2,0.09,1.63,6.84,5.27,1.58,11.84,0,5.13,29.71,9.53],[81,0.52,14.4,1.36,0.88,106.83,2.55,3.06,4.17,0.35,1.67,0.6,0.96,0.74,80.89,0.62,6.75,0.77,4.62,20.76,0,25.69,6.02,4.84,48.72,4.56,10.1,1.81,20.83,54.56,104.71,64.61,0.59,11.43,94.32,54.26,4.52,3.9,3.6,16.2,106.67,1.71,46.84,1.37,0.61,0.2,0.63,152.19,0.65,73.08,11.24,9.67,6.26,0.29,3.51,15.23,25.16,2.81,55.3,25.57,14.06,1.2,1.74,128.88,46.56,5.65,0.72,76.79,1.39,23.58,2.66,8.1,4.69,61.36,179.63,23.57,19.42,2.31,1.23,3.7,63.64,69.95,2.86,6.1,0.74,0.41,1.03,0.38,4.38,0.87,13.56,42.34,53.81,8.96,0.33,21.06,95.81,4.68,1.79,109.12,152.41,19.07,11.22,0.39,0.66,106.96,30.72,13.39,10.18,22.1,0.42,77.19,42.97,2.32,4.08,25.57,10.6,38.57,0.66,16.8,173.82,88.08,65.14,38.05,0.37,0.38,5.26,47.78,217.48,9.75,100.92,0.36,0.68,44.75,0.1,10.38,80.47,6.71,12.51,28.01,2.11,3.09,0.49,0.5,7.6,15.01,8.42,1.18,3.94,2.08,9.24,4.78,51.74,2.09,0,110.09,1.98,0.91,1.27,20.18,151.27,105.08,61.06,0.95,10.2,38.41,4.3,61.98,0.57,0.35,0.18,6.29,128.03,21.92,213.7,13.93,2.83,2.11,2.95,1.58,15.21,34.06,15.32,0.61,0.9,0.36,3.56,18.03,12.66,4.58,28.83,0,12.27,71.58,23.18],[1769.66,8.25,995.21,0.31,0.29,3967.41,0.55,393.7,91.39,38.34,34.21,578.6,6.69,7.64,19808.66,2.05,398.98,49.66,11.69,1695.7,0.1,105.32,507.05,102.88,1093.61,4184.64,8.08,89.87,3079.11,2893.01,1934.68,2135.21,68.35,16.32,2705.73,2431.87,323.79,35936.72,588.42,127.01,472.31,35.59,3491.1,42.9,31.48,2.55,32.73,21656.51,18.49,181.18,2.43,342.67,599.04,606.6,68.68,76.75,1196.83,22.87,27441.23,2.68,21.13,27.77,541.28,145.36,204.03,170.85,258.06,2429.6,97.25,1.1,0.89,2.71,209.23,2282.96,402.83,51.49,537.55,267.72,50.07,0.45,306744.49,63721.21,1030.33,781.05,16.22,17.22,266.96,14.23,2338.72,12.91,1220.04,4821.45,27.19,2067.83,11.12,428.51,594.2,44.47,32.42,1733.94,1240.04,53.62,152.82,0.66,36.74,2610.08,2692.38,947.45,5.41,2008.03,0.49,1.9,332.45,10.82,1756.44,18.49,187.81,222.51,3.17,2118.13,6636.4,15817.59,818.07,6697.9,43,8.54,121.02,4556.28,10441.88,0.64,1268.06,16.39,20.76,20226.79,1.75,133.1,259.42,189.92,1273.62,16286.06,461.22,162.29,15.05,4.76,846.38,8988.32,1638.61,4.46,2.42,3.39,13.83,337.3,3389.12,110.94,1.18,1007.31,46.21,22.57,8.93,32.89,4340.71,17334.62,3325.4,246.25,539.57,933.08,6.18,557.78,30.77,18.83,36.58,334.15,6850.61,4978.84,100.7,1000.02,1.48,14.65,247.34,633.56,251.48,5191.29,3411.53,56.34,209.48,515.13,29.71,1432.01,13,432.53,10823.31,0.49,760.34,2443.98,4774.89],[10.52,0.57,4.99,0.75,0.76,31.63,1.25,1.85,6.54,0.32,0.81,11.9,3.53,0.9,24.38,1.51,8.97,0.89,6.54,31.13,0.3,25.29,9.4,5.42,96.85,4.09,3.71,2.53,34.26,52.01,25.44,18.24,0.38,6.36,111.83,34.54,3.66,5.04,2.48,31.79,20.39,1.48,30.25,2.1,0.55,0.59,0.62,56.09,0.65,40.53,6.84,6.53,7.42,1.32,2.38,17.72,45.58,3.67,55.29,4.97,4.66,1.02,1.71,16.65,20.6,8.93,0.63,17.81,1.83,3.81,1.66,3.15,2.61,36.23,43.86,13.31,10.14,6.61,1.04,0.28,45.12,49.11,2.59,4.24,0.69,0.43,0.88,1.01,3.74,0.33,14.41,20.87,48.92,8.27,0.51,14.7,17.57,4.35,1.12,164.53,54.57,1.69,10.49,0.24,3.55,21.65,31.34,6.31,2.97,22.63,0.23,5.16,16.17,1.72,2.78,0.65,9.61,15.22,1.02,12.47,48.51,59.9,68.49,48.41,0.5,0.38,4.03,45.52,11.23,1.1,10.31,0.63,0.7,20.83,0.07,6.76,6.66,5.62,8.12,32.01,2.46,3.11,0.85,0.29,8.95,13.19,29.41,4.91,4.36,3.39,14.53,1.9,45.68,2.57,2.4,31.5,2.4,0.83,0.87,11.05,80.39,65.67,54.04,1.02,5.4,4.6,2.27,87.48,0.63,0.46,0.39,7.77,25.83,14.88,16.67,27.71,2.77,2.18,4.45,1.64,9.51,26.53,16,0.84,0.66,0.32,1.79,9.72,9.77,2.79,23.41,0.96,5.59,30.12,62.22],[4.26,0.31,48.3,0.02,0.04,708.31,0.09,482.67,5.26,2.63,1.66,9.55,1.69,0.57,80.04,0.29,21.01,5.69,4.44,207.25,0.02,0.46,31.47,0.73,1737.01,1455.58,0.14,0.61,541.24,747.01,382.43,1419.19,18.46,2.87,1029.89,576.26,171.67,1850.32,129.65,3.6,155.9,5.74,1197.4,1.1,4.17,0.07,1.42,3390.58,1.45,26.21,0.33,99.09,212.77,8.08,15.88,32.62,80.68,4.27,4110.77,0.16,0.78,0.94,116.19,89.63,41.96,6.62,13.98,705.78,6.63,0.02,0.17,0.05,46.1,660.88,275.59,23.72,148.79,35.74,2.52,0.04,10612.86,4965.67,228.15,0.57,3.06,1.61,18.82,6.45,37.6,0.02,18.79,2952.21,0.15,54.89,0.06,18.68,59.24,5.04,2.52,2803.44,105.69,5.73,2.03,0.05,0.37,11.88,3740.64,173.4,0.01,452.06,0.07,0.01,26.96,1.64,372.51,1.45,8.44,0.55,0.03,88.13,8638.32,2604.79,1101.91,240.03,8.03,0.7,8.17,389.72,2470.5,0.01,96.07,0.69,1.27,250.52,0.07,38.19,67.48,59.4,145.78,60.44,15.91,51.69,5.68,0.01,17.45,649.81,525.79,0.61,0.48,0.28,0.12,20.61,302.42,13.48,0.16,122.55,4.33,0.04,0.13,1.74,234.55,23612.13,532,51.95,4.07,139.38,3.4,1253.39,1.11,1.05,0.29,5.37,3428.96,1612.54,1.4,248.64,0.04,4.97,9.7,7.5,38.02,5377.2,596.96,2.7,19.67,87.75,9.68,32.33,0.72,101.49,1825.66,0.1,33.49,2602.47,7364.46],[0.03,0.02,0.24,0.05,0.09,5.65,0.2,2.27,0.38,0.02,0.04,0.2,0.89,0.07,0.1,0.21,0.47,0.1,2.48,3.81,0.06,0.11,0.58,0.04,153.83,1.42,0.06,0.02,6.02,13.43,5.03,12.13,0.1,1.12,42.57,8.19,1.94,0.26,0.55,0.9,6.73,0.24,10.38,0.05,0.07,0.02,0.03,8.78,0.05,5.86,0.94,1.89,2.63,0.02,0.55,7.53,3.07,0.68,8.28,0.3,0.17,0.03,0.37,10.27,4.24,0.35,0.03,5.17,0.12,0.05,0.31,0.05,0.58,10.49,30,6.13,2.81,0.88,0.05,0.02,1.56,3.83,0.57,0,0.13,0.04,0.06,0.46,0.06,0,0.22,12.78,0.27,0.22,0,0.64,1.75,0.49,0.09,266.01,4.65,0.18,0.14,0.02,0.04,0.1,43.54,1.16,0.01,5.1,0.03,0.03,1.31,0.26,0.59,0.05,0.43,0.04,0.01,0.52,63.14,9.86,92.25,1.73,0.09,0.03,0.27,3.89,2.66,0.02,0.78,0.03,0.04,0.26,0,1.94,1.73,1.76,0.93,0.12,0.08,0.99,0.32,0,0.18,0.95,9.44,0.67,0.86,0.28,0.13,0.12,4.08,0.31,0.32,3.83,0.22,0,0.01,0.58,4.34,89.45,8.65,0.22,0.04,0.69,1.25,196.58,0.02,0.03,0,0.12,12.93,4.82,0.23,6.89,0.08,0.74,0.17,0.02,1.44,27.48,2.8,0.04,0.06,0.06,0.58,0.22,0.54,0.66,3.95,0.2,0.25,32.08,95.96],[2765.87,3.7,828.63,0.21,0.15,2955.17,0.18,209.88,14.13,27.97,19.69,113.29,2.34,2.57,3261.32,0.84,62.06,31.03,3.62,980.47,0.05,43.66,377.51,32.18,405.85,1577.9,4.43,24.92,2647.7,1800.5,1200.63,1158.61,54.79,8.01,1423.22,1470.87,194.88,12985.59,271.08,71.07,470.29,13.84,1670.07,24.67,10.36,0.76,17.59,12541.25,12.2,80.11,0.9,185.38,283.63,277.71,31.74,47.92,843.14,6.4,16311.66,1.41,14.97,29.76,519.38,84.46,108.27,30.91,162.44,1676.67,75.4,0.43,0.54,1.54,124.42,1374.22,276.11,14.86,353.24,180.83,30.99,0.97,160092.15,32572.82,572.92,538.15,11.9,12.15,202.21,3.57,1631.86,7.04,298.63,2532.69,17.76,1155.72,7.87,117.95,288.66,13.09,23.31,594.93,859.9,34.17,32.79,0.72,13.91,1337.84,1407.88,300.33,2.52,1621.39,0.28,1.07,233.89,1.78,840.3,12.2,27.43,99.72,1.05,1068.33,3148.71,4731.8,338.89,4544.15,32.31,6.96,62.67,2510.85,5983,0.41,877.18,17.83,8.13,26185.99,0.93,66.32,171.73,63.69,667.13,7092.29,124.55,60.16,7.98,1.32,173.17,2031.92,981.99,2.07,0.67,1.65,7.19,237.36,2941.02,51.43,0.19,655.07,17.13,9.25,7.82,23.7,2837.2,7978.81,2269.75,161.73,189.1,941.85,2.15,239.07,39.39,15.07,23.21,167.26,3562.13,2428.84,51.66,518.32,0.02,3.2,58.49,243.51,81.68,2711.98,646.29,5.26,149.55,337.68,16.19,513.92,8.48,194.85,7585.2,0.5,949.94,1128.96,1550.6],[17.52,0.25,4.21,0.52,0.36,23.26,0.38,0.95,0.88,0.23,0.44,2.3,1.18,0.49,4.09,0.57,1.2,0.54,2.01,17.93,0.16,12.18,7.03,1.68,35.91,1.49,2.16,0.67,29.08,31.68,15.03,9.91,0.3,3.04,57.3,20.94,2.14,1.94,1.11,18.11,20.34,0.58,14.98,1.12,0.18,0.17,0.32,32.32,0.42,18.08,2.48,3.51,3.51,0.62,0.97,11.63,32.22,0.87,32.76,2.75,3.41,1.06,1.54,9.9,10.72,1.48,0.38,12.17,1.35,1.7,1.02,1.84,1.49,21.91,29.69,3.88,6.52,4.47,0.58,0.59,25.34,25.47,1.46,2.99,0.49,0.3,0.62,0.25,2.48,0.19,3.29,10.97,31.16,4.57,0.46,3.96,8.45,1.1,0.81,55.33,38.46,1.09,1.93,0.26,1.33,11.03,16.33,1.96,1.39,18.64,0.13,3.01,11.53,0.28,1.32,0.42,1.3,6.69,0.33,6.15,22,17.13,26.93,30.88,0.37,0.3,2.03,25.5,6.68,0.7,6.82,0.69,0.54,28.48,0.04,3.39,4.59,1.94,4.25,14.2,0.62,1.08,0.42,0.22,1.72,2.54,16.2,2.19,1.23,1.75,7.5,1.74,38.24,1.13,0.39,20.07,0.86,0.32,0.75,8.22,52.06,29.2,37,0.66,1.76,4.68,0.79,36.72,0.8,0.36,0.25,3.98,13.27,7.05,8.82,14.03,0.04,0.46,1.03,0.61,2.99,13.85,2.57,0.22,0.46,0.21,0.91,3.38,6.54,1.25,16.06,0.9,7.13,13.88,19.63],[1.69,0.1,31,0.01,0.01,841.23,0.04,209.56,0.82,0.75,0.44,1.97,0.69,0.07,41.05,0.14,2.72,2.74,1.74,224.38,0.01,0.36,9.72,0.65,1162.21,505.31,0.05,0.19,470.44,552.52,147.44,1215.97,5.58,0.58,1197.72,621.8,35.63,751.21,40.58,1.08,166.38,1.71,900.82,0.38,1.23,0.04,0.75,3526.64,0.35,24.59,0.14,32.46,46.18,5.92,4.3,24.27,96.71,1.06,4156.7,0.19,0.8,0.28,39.35,19.04,36.55,2.4,3.49,653.97,1.7,0.01,0.08,0.02,23.04,610.78,270.45,9.47,142.12,37.74,0.63,0.02,16158.84,2046.72,17.57,0.31,1.19,0.67,5.65,2.25,21.57,0.02,7.51,2168.41,0.07,6.91,0.06,2.62,19.71,3.56,1.22,2573.87,111.52,3.99,3.02,0.02,0.22,13.29,2744.04,17.48,0.04,429.57,0.02,0.01,44.84,0.34,112.83,0.35,2.2,0.19,0.02,68.31,7070.58,295.26,722.95,67.52,2.48,0.21,2.26,467.6,2078.3,0,43.36,0.2,0.15,93.9,0.03,9.46,14.68,16.77,47.16,26.62,4.95,12.97,2.21,0,10.14,252.95,499.37,0.37,0.25,0.28,0.05,8.3,363.85,4.77,0.08,122.53,0.45,0.01,0.04,2.02,268.64,19331.28,579.47,13.06,2.57,55.71,1.57,1038.75,0.58,0.49,0.28,6.11,2793.06,438.72,0.8,198.44,0.05,2.81,2.69,2.96,9.99,3701.32,289.57,0.32,10.12,33.18,2.23,7.58,0.84,35.79,164.4,0.03,10.38,2305.86,5385.73],[0.01,0.01,0.16,0.02,0.02,6.62,0.09,0.95,0.05,0.01,0.01,0.04,0.35,0.01,0.05,0.1,0.05,0.05,0.97,4.1,0.02,0.1,0.18,0.03,102.83,0.48,0.02,0.01,5.17,9.72,1.85,10.4,0.03,0.22,48.22,8.85,0.39,0.11,0.17,0.28,7.19,0.07,8.08,0.02,0.02,0.01,0.01,9.09,0.01,5.55,0.39,0.61,0.57,0.01,0.13,5.89,3.7,0.14,8.35,0.37,0.18,0.01,0.12,2.23,3.62,0.11,0.01,4.75,0.03,0.02,0.14,0.02,0.28,9.74,29.08,2.47,2.62,0.93,0.01,0.01,2.56,1.6,0.04,0,0.05,0.02,0.02,0.16,0.03,0,0.08,9.39,0.13,0.03,0,0.09,0.58,0.3,0.04,239.37,4.99,0.13,0.18,0.01,0.02,0.11,31.82,0.11,0.02,4.94,0.01,0.03,2.21,0.05,0.18,0.01,0.1,0.01,0.01,0.39,49.41,1.07,57.45,0.46,0.03,0.01,0.07,4.75,2.32,0.01,0.34,0.01,0.01,0.1,0,0.48,0.39,0.51,0.3,0.05,0.02,0.23,0.12,0,0.1,0.32,8.24,0.39,0.46,0.3,0.05,0.06,4.73,0.11,0.18,3.75,0.02,0,0,0.7,4.93,70.74,9.45,0.05,0.02,0.28,0.58,159.56,0.01,0.01,0,0.15,10.4,1.27,0.14,5.37,0.09,0.41,0.05,0.01,0.37,18.9,1.15,0.01,0.03,0.02,0.13,0.05,0.65,0.23,0.35,0.06,0.08,28.34,68.18],[4535.53,11.95,1823.83,0.53,0.44,6922.58,0.73,603.58,105.52,66.32,53.9,691.88,9.03,10.21,23069.99,2.89,461.04,80.69,15.31,2676.17,0.15,148.98,884.57,135.06,1499.45,5762.54,12.51,114.79,5726.81,4693.52,3135.31,3293.82,123.14,24.32,4128.94,3902.75,518.67,48922.31,859.5,198.08,942.6,49.43,5161.17,67.57,41.84,3.31,50.33,34197.76,30.69,261.29,3.33,528.05,882.67,884.31,100.41,124.67,2039.97,29.27,43752.88,4.08,36.11,57.53,1060.67,229.81,312.29,201.76,420.51,4106.27,172.65,1.53,1.43,4.25,333.66,3657.18,678.94,66.35,890.78,448.54,81.06,1.42,466836.64,96294.04,1603.25,1319.2,28.13,29.37,469.17,17.8,3970.58,19.95,1518.68,7354.14,44.95,3223.55,18.98,546.47,882.86,57.56,55.73,2328.87,2099.95,87.79,185.62,1.38,50.65,3947.92,4100.26,1247.78,7.94,3629.42,0.76,2.97,566.34,12.6,2596.74,30.69,215.24,322.24,4.22,3186.46,9785.11,20549.38,1156.96,11242.05,75.3,15.5,183.69,7067.14,16424.88,1.04,2145.24,34.22,28.88,46412.78,2.68,199.42,431.15,253.61,1940.74,23378.35,585.77,222.45,23.03,6.09,1019.55,11020.24,2620.6,6.52,3.09,5.03,21.02,574.66,6330.14,162.37,1.36,1662.38,63.34,31.82,16.74,56.59,7177.91,25313.43,5595.15,407.98,728.66,1874.93,8.33,796.86,70.16,33.9,59.79,501.41,10412.74,7407.68,152.37,1518.34,1.5,17.86,305.83,877.07,333.16,7903.27,4057.82,61.61,359.02,852.81,45.9,1945.93,21.48,627.38,18408.5,0.99,1710.28,3572.94,6325.49],[13.91,0.41,4.6,0.64,0.56,27.41,0.8,1.39,3.51,0.27,0.62,7.07,2.33,0.75,14.33,1.02,4.8,0.71,4.27,24.52,0.23,19.22,8.22,3.54,66.37,2.77,2.96,1.58,31.65,41.73,20.11,14.08,0.34,4.67,84.21,27.75,2.89,3.54,1.78,25.01,20.36,1.03,22.75,1.59,0.37,0.37,0.47,44.17,0.54,29.35,4.65,5.01,5.46,0.97,1.64,14.75,38.91,2.16,44,3.89,4.05,1.04,1.63,13.31,15.61,5.04,0.5,14.98,1.58,2.83,1.34,2.5,2.04,29.09,36.73,8.62,8.31,5.54,0.8,0.43,35.59,37.38,2.03,3.62,0.59,0.36,0.75,0.63,3.09,0.26,8.66,15.92,39.93,6.41,0.49,9.27,12.98,2.6,0.97,109.38,46.58,1.39,5.89,0.25,2.44,16.32,23.82,4.12,2.19,20.66,0.18,4.1,13.86,0.99,2.04,0.54,5.29,10.91,0.67,9.27,34.96,38.04,47.17,39.38,0.44,0.34,3.02,35.6,9,0.9,8.53,0.66,0.64,24.55,0.06,5.08,5.65,3.81,6.18,23.19,1.51,2.06,0.63,0.27,5.22,7.44,22.53,3.52,2.81,2.6,11,1.83,41.9,1.83,1.41,25.72,1.61,0.57,0.81,9.66,66.16,47.12,45.53,0.84,3.51,4.64,1.54,61.84,0.72,0.41,0.32,5.9,19.51,10.91,12.81,20.79,1.41,1.31,2.72,1.12,6.19,20.19,8.72,0.67,0.56,0.26,1.34,6.5,8.18,2.02,19.69,0.92,6.36,21.99,40.62],[5.95,0.41,79.3,0.03,0.04,1549.53,0.13,692.23,6.08,3.38,2.1,11.52,2.38,0.64,121.09,0.43,23.73,8.43,6.18,431.63,0.03,0.82,41.19,1.38,2899.22,1960.89,0.18,0.8,1011.68,1299.53,529.88,2635.16,24.05,3.45,2227.62,1198.06,207.3,2601.53,170.23,4.69,322.27,7.45,2098.22,1.48,5.39,0.12,2.16,6917.22,1.8,50.8,0.47,131.55,258.95,14,20.18,56.89,177.38,5.32,8267.46,0.35,1.58,1.22,155.54,108.66,78.51,9.02,17.47,1359.75,8.33,0.02,0.25,0.06,69.14,1271.67,546.04,33.19,290.92,73.48,3.15,0.05,26771.7,7012.39,245.72,0.88,4.24,2.28,24.47,8.69,59.17,0.04,26.3,5120.62,0.22,61.79,0.12,21.31,78.95,8.6,3.74,5377.31,217.21,9.72,5.05,0.06,0.59,25.16,6484.68,190.88,0.05,881.63,0.09,0.02,71.8,1.98,485.34,1.8,10.64,0.74,0.05,156.45,15708.91,2900.05,1824.86,307.56,10.51,0.91,10.43,857.33,4548.8,0.01,139.43,0.9,1.43,344.42,0.1,47.65,82.15,76.18,192.94,87.06,20.86,64.66,7.89,0.01,27.58,902.76,1025.16,0.98,0.73,0.56,0.17,28.92,666.27,18.26,0.24,245.08,4.78,0.05,0.17,3.76,503.19,42943.42,1111.46,65.01,6.64,195.09,4.97,2292.13,1.7,1.54,0.57,11.48,6222.02,2051.26,2.2,447.08,0.09,7.78,12.39,10.45,48,9078.52,886.53,3.02,29.79,120.93,11.9,39.91,1.56,137.28,1990.05,0.14,43.87,4908.33,12750.19],[0.02,0.01,0.2,0.03,0.06,6.14,0.14,1.59,0.2,0.01,0.02,0.12,0.61,0.05,0.08,0.15,0.25,0.07,1.72,3.95,0.04,0.11,0.38,0.04,128.32,0.94,0.04,0.01,5.59,11.55,3.4,11.26,0.07,0.66,45.43,8.52,1.15,0.19,0.35,0.59,6.96,0.15,9.25,0.04,0.05,0.01,0.02,8.94,0.03,5.71,0.66,1.25,1.6,0.02,0.33,6.73,3.38,0.39,8.31,0.33,0.18,0.02,0.24,6.3,3.92,0.23,0.02,4.96,0.08,0.04,0.23,0.04,0.42,10.11,29.54,4.31,2.71,0.91,0.03,0.02,2.04,2.72,0.31,0,0.09,0.03,0.04,0.31,0.05,0,0.15,11.09,0.2,0.12,0,0.36,1.16,0.39,0.06,252.56,4.82,0.15,0.16,0.01,0.03,0.1,37.67,0.63,0.01,5.02,0.02,0.03,1.76,0.16,0.38,0.03,0.26,0.03,0.01,0.46,56.12,5.37,74.4,1.08,0.06,0.02,0.17,4.32,2.49,0.01,0.55,0.02,0.03,0.18,0,1.21,1.08,1.14,0.61,0.09,0.05,0.6,0.21,0,0.14,0.61,8.81,0.53,0.66,0.29,0.09,0.09,4.41,0.21,0.25,3.79,0.12,0,0.01,0.64,4.64,79.93,9.05,0.13,0.03,0.48,0.92,177.88,0.02,0.02,0,0.14,11.66,3.02,0.18,6.12,0.09,0.57,0.11,0.01,0.89,23.19,1.91,0.03,0.05,0.04,0.35,0.13,0.59,0.44,2.13,0.13,0.16,30.21,81.87],[9261.55,240.01,10781.67,21.33,6.14,27323.63,13.12,4850.43,816.51,897.63,521.76,8496.52,69,227.01,117767.01,33.49,4248.65,692.66,104.41,5908.76,9.36,883.23,3892.42,777.95,16323.34,50314.34,153.61,1524.83,11555.44,9042.04,9801.22,13980.99,1052.45,162.81,6859.06,10493.13,3180.81,953530.87,7588.89,399.12,3585.36,456.91,17431.4,607.62,785.95,35.59,679.29,89123.61,279.25,999.98,17.32,3883.1,5191.74,8097.68,665.18,1058.34,3879.25,476.03,88169.82,29.87,183.34,282.66,4346.67,2541.56,998.66,1637.17,3641.24,15145.7,655.33,21.94,11.91,44.67,2690.25,8274.96,1536.06,455.06,2885.74,1794.1,974.4,35.65,1811236.24,503084.12,9622.83,9031.52,267.2,452.58,2658.05,136.96,19213.96,311.58,22948.01,33599.69,105.04,26636.75,565.69,2985.13,2962.26,852.19,450.44,9775.2,4714.95,872.68,2384.36,34.67,314.72,15982.98,16349.81,15601.34,75.63,8029.08,26.18,19.17,2046.19,308.43,16767.83,279.25,2570.66,2720.28,51.67,15515.52,37809.78,51796.05,11869.8,30508.02,667.81,177.74,830.09,13853.5,119271.99,37.45,9272.93,276.64,649.36,136032.59,431.82,1325.85,2664.88,1705.88,15330.61,126767.44,7233.55,1910.19,245.5,684.01,13950.46,153289.65,6789.61,50.1,30.86,30.55,70.55,4705.58,13497.22,1061.03,21.84,4431.65,1250.6,421.73,177.2,157.44,12174.51,318894.8,17218.47,3566.77,8706.92,8147.24,83.67,7752.19,494.62,378.09,1432.97,3018.23,58347.64,42607.46,999.69,3462.69,13.11,261.99,2203.07,10295.52,3420.52,36044.54,47430.66,1711.45,5159.95,7326.48,449.65,14371.41,60.29,5169.1,53213.91,11.95,5413.36,20522.52,39571.84],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01],[20,6.65,317.54,1.07,0.65,4609.85,2.01,5410.94,36.23,47.15,15.43,94.12,13.3,11.7,2800.32,4.14,173.62,46.69,26.01,605.92,1.76,2.94,198.86,5.6,13885.45,11068.5,2.04,7.9,1304.48,1526.13,1500.91,6020.92,186.31,16.4,2670.94,2025.08,1484.09,34518.89,1217.33,10.63,867.78,55.14,4274.73,8.96,82.55,1.07,21.58,8511.51,14.95,124.2,1.81,607.16,1259.83,74.71,96.45,312.08,223.46,53.97,11022.92,1.55,4.42,5.38,496.08,909.33,120.52,44.44,136.43,2995.8,55.18,0.2,1.71,0.58,410.14,1665.48,869.77,112.71,495.28,134.45,30.08,1.03,52277.61,54563.56,4481.74,4.61,36.14,16.72,106.69,50.06,190.86,0.4,291.52,10360.09,0.61,481.98,2.17,83.29,874.22,59.22,26.83,14447.16,244.73,76.85,20.13,0.85,2.21,49.9,10965.72,1995.69,0.12,1033.68,3.44,0.07,189.93,40.81,2741.07,14.95,89.32,4.4,0.43,513.41,23986.6,12772.72,6826.85,712.66,88.57,10.62,35.43,798.47,15725.65,0.42,751.19,4.73,23.72,1231.88,16.58,244.99,387.27,338.59,1185.17,350.09,168.21,397.95,63.57,0.83,194.98,8323.02,1423.93,4.85,4.49,2.03,5.54,165.86,918.59,112.16,2.68,388.2,59.07,0.5,1.63,9.89,499.41,190686.19,1919.1,464.26,46.54,914.64,32.05,9511.45,11.77,13.43,8.36,35.7,18551.24,8493.55,11.95,571.52,0.61,65.47,59.75,85.72,339.62,20403.15,5427.06,72.68,386.17,853.22,86.66,180.85,4.02,888.47,7974.54,2.01,242.4,15477.45,35698.72],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[15251.49,206.88,9667.06,24.25,8.06,27740.32,13.82,5240.89,341.52,868.18,374.87,2628.98,41.31,123.5,33036.84,31.96,1449.13,475.27,53.47,4284.6,11.29,626.33,2867.16,505.5,8460.48,24224.23,123.87,846.7,9416.76,5689.77,8216.11,8551.23,941.34,97.16,5659.61,8560.18,1581.84,559727.89,5496.73,238.47,3433.62,307.24,10776.68,433.39,541.51,40.34,568.34,50856.55,193.18,574.63,9.62,2395.14,3080.73,5745.91,503.41,911.17,3000.21,178.68,89184.6,22.26,155.22,269.36,3484.86,1254.22,568.19,613.86,2883.53,11623.04,456.42,7.42,11.44,38.82,2332.17,5826.25,1130.2,179.89,2349.75,1234.46,746.01,31.64,855904.93,311738.39,9724.1,8161.09,246.89,316.6,2166.57,92.44,12514.75,366.38,10317.29,13952.42,72.57,15524.55,493.75,1436.99,1954.17,382.24,551.78,7657,3142.29,665.81,748.34,39.52,207.88,9994.15,9535.73,8617.64,72.3,5985.33,35.08,16.8,1346.66,207.73,11356.79,193.18,1019.35,1642.28,50.34,9725.68,19264.77,10378.52,6041.61,19573.7,592.1,189.68,593.51,9441.19,80771.99,41.44,8164.81,267.14,314.39,160769.22,645.33,775.21,2086.55,791.25,10000.57,72952,3438.01,983.15,175.76,174.56,5260.88,55336.82,3972.95,30.22,16.49,21.42,39.66,3940.06,11058.42,801.24,18.71,3556.87,731.94,403.86,162.28,144.56,8885.56,164621.05,13434.56,2635.19,4212.4,9041.7,47.87,5192.97,470.09,348.73,1539.36,2064.67,32278.92,22088.74,573.95,2219.46,19.81,119.29,1186.69,7093.42,1605.28,18542.52,15917.65,485.94,4123.5,5189.14,247.24,7850.74,55.93,3370.75,28157.16,17.08,7276.91,12934.67,21433.09],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[8.12,2.88,301.35,0.5,0.15,6424.25,1.1,2404.71,11.64,6.05,4.04,28.8,7.82,1.86,1740.34,2.23,46.98,20.53,17.87,821.93,0.83,3.25,90.04,6.71,13671.12,5769.52,0.66,2.19,1888.28,2119.41,689.5,8099.87,36.25,8.34,3528.2,2794.32,259.14,15652.55,400.91,5.12,1169.12,16.21,5719.05,5.15,27.21,0.55,10.28,11641,2.99,158.95,1.16,490.08,491.86,61.48,51.58,402.44,303.28,16.66,15139.94,2.24,5.74,1.45,137.81,489.79,184.88,23.7,31.03,4397.83,20.15,0.06,1.11,0.24,271.07,2318.74,1212,76.3,741.36,195.02,8.43,0.27,67887.8,28043.55,624.89,3.13,16.21,18.89,31.18,30.77,69.56,0.45,98.63,12424.63,0.35,248.52,1.74,27.98,412.54,54.43,10.1,14527.12,337.3,70.34,33.97,0.89,1.74,63.79,11306.07,394.88,0.43,1432.32,0.9,0.1,234.2,10.64,681.08,2.99,23.01,2.69,0.32,477.16,28358.07,3238.61,7639.28,301.33,19.53,2.13,15.13,1304.27,21032.33,0.18,371.41,4.12,6.73,503.2,10,89.91,186.82,153.71,479.19,144.81,61.95,88.33,33.48,0.17,138.04,2101.85,2218.83,3.14,2.7,2.57,2.66,89.86,1455.61,41.1,1.97,566.34,25.72,0.21,0.33,14.44,662.07,217510.7,2583.94,108.83,30.36,428.83,20.48,9529.07,3.65,6.19,11.41,39.81,25813.55,4469.77,8.62,839.35,0.88,44.31,26.73,43.4,151.73,22937.15,3149.26,11.58,140.83,252.1,32,114.56,5.82,295.58,1359.09,1,113.03,15897.49,35728.9],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[24513.04,446.89,20448.73,45.58,14.2,55063.95,26.94,10091.32,1158.03,1765.81,896.63,11125.51,110.31,350.52,150803.85,65.45,5697.77,1167.94,157.88,10193.36,20.65,1509.56,6759.58,1283.45,24783.82,74538.57,277.48,2371.53,20972.2,14731.8,18017.33,22532.22,1993.78,259.97,12518.67,19053.32,4762.65,1513258.69,13085.62,637.59,7018.98,764.15,28208.08,1041,1327.46,75.93,1247.63,139980.15,472.43,1574.61,26.94,6278.24,8272.47,13843.6,1168.59,1969.51,6879.46,654.71,177354.42,52.12,338.56,552.02,7831.53,3795.79,1566.85,2251.03,6524.77,26768.74,1111.75,29.36,23.35,83.49,5022.42,14101.21,2666.26,634.96,5235.49,3028.56,1720.41,67.29,2667141.18,814822.52,19346.93,17192.61,514.09,769.18,4824.62,229.4,31728.72,677.96,33265.3,47552.11,177.61,42161.3,1059.43,4422.12,4916.44,1234.42,1002.22,17432.19,7857.24,1538.49,3132.7,74.19,522.6,25977.12,25885.54,24218.99,147.93,14014.41,61.26,35.97,3392.86,516.16,28124.62,472.43,3590.01,4362.56,102.01,25241.21,57074.55,62174.57,17911.41,50081.72,1259.92,367.42,1423.59,23294.69,200043.98,78.89,17437.74,543.78,963.75,296801.83,1077.15,2101.07,4751.43,2497.14,25331.17,199719.44,10671.56,2893.34,421.26,858.57,19211.34,208626.47,10762.56,80.33,47.35,51.96,110.21,8645.65,24555.64,1862.27,40.55,7988.52,1982.54,825.6,339.48,302,21060.06,483515.84,30653.03,6201.96,12919.32,17188.94,131.54,12945.16,964.71,726.82,2972.33,5082.9,90626.56,64696.21,1573.65,5682.15,32.92,381.27,3389.76,17388.94,5025.81,54587.06,63348.31,2197.39,9283.45,12515.62,696.89,22222.15,116.21,8539.84,81371.07,29.03,12690.27,33457.19,61004.93],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[28.12,9.53,618.89,1.57,0.79,11034.1,3.11,7815.66,47.87,53.21,19.48,122.92,21.12,13.56,4540.66,6.37,220.6,67.22,43.88,1427.85,2.59,6.19,288.9,12.31,27556.57,16838.02,2.7,10.09,3192.76,3645.54,2190.41,14120.79,222.55,24.74,6199.14,4819.4,1743.23,50171.44,1618.23,15.75,2036.9,71.36,9993.78,14.11,109.77,1.62,31.87,20152.51,17.94,283.15,2.97,1097.25,1751.69,136.18,148.03,714.52,526.74,70.63,26162.86,3.79,10.17,6.83,633.89,1399.12,305.4,68.14,167.47,7393.63,75.33,0.26,2.82,0.82,681.22,3984.22,2081.77,189.01,1236.63,329.47,38.51,1.3,120165.42,82607.11,5106.62,7.74,52.35,35.61,137.87,80.83,260.42,0.85,390.16,22784.72,0.95,730.5,3.91,111.27,1286.76,113.65,36.92,28974.28,582.03,147.19,54.1,1.74,3.95,113.69,22271.79,2390.57,0.55,2466,4.35,0.18,424.13,51.45,3422.15,17.94,112.33,7.09,0.74,990.56,52344.67,16011.33,14466.14,1013.99,108.1,12.75,50.56,2102.75,36757.97,0.6,1122.61,8.84,30.46,1735.08,26.58,334.9,574.09,492.3,1664.36,494.9,230.16,486.27,97.05,1,333.02,10424.87,3642.76,7.99,7.2,4.6,8.2,255.71,2374.2,153.27,4.65,954.54,84.8,0.72,1.96,24.33,1161.48,408196.88,4503.03,573.09,76.9,1343.46,52.53,19040.51,15.41,19.62,19.78,75.51,44364.79,12963.32,20.57,1410.87,1.49,109.79,86.49,129.12,491.35,43340.3,8576.33,84.26,526.99,1105.32,118.66,295.41,9.84,1184.05,9333.64,3.01,355.43,31374.94,71427.62],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[105.85,0.07,9.71,0,0,446.45,0.01,7.2,0.31,0.21,0.06,5.27,0.05,0.04,111.88,0.01,0.22,0.09,0.2,69.17,0,3.95,17.92,0.07,19.86,47.5,0.01,0.1,288.7,241.84,29.92,98.35,0.31,0.19,108.55,209.25,0.87,276.93,13.96,5.13,28.84,0.27,117,0.03,0.1,0.01,0.07,1597.64,0.05,6.1,0.03,11.28,13.44,9.78,0.99,5.23,72.69,0.01,1464.17,0.05,0.44,0.05,0.66,4.64,9.74,0.7,0.52,107.72,0.11,0.01,0.01,0.03,8.85,98.29,22.94,0.69,18.31,6.87,0.07,0,4949.65,453.98,7.28,27.73,0.06,0.11,0.4,0.23,0.95,0.28,6.58,200.9,0.92,3.35,0.14,2.43,13.26,0.03,0.19,60.41,88.26,0.84,0.06,0,0.12,165.4,246.87,3.33,0.03,36.69,0,0.05,15.35,0.04,21.42,0.05,0.41,1.45,0.01,34.07,424.97,118.28,36.14,178.1,0.17,0.06,2.56,311.01,771.65,0.01,14.46,0.04,0.17,1105.9,0.11,5.02,5.85,4.18,32.86,304.64,0.26,0.23,0.05,0.03,2.26,11.34,134.46,0.04,0.02,0.05,0.43,3.78,158.31,0.16,0,52.38,0.03,0.06,0.02,0.77,351.48,464.35,222.63,0.44,1.49,60.77,0.11,22.12,0.08,0.06,1.29,6.94,531.81,3.09,2.03,33.88,0.03,0.06,3.21,14.12,3.54,438.92,3.11,0.09,0.73,3.47,0.2,6.58,0.3,6.7,31.79,0,34.98,108.97,293.69],[1663.81,8.17,985.49,0.31,0.29,3520.96,0.54,386.49,91.08,38.13,34.15,573.32,6.64,7.6,19696.78,2.04,398.76,49.57,11.49,1626.53,0.1,101.37,489.13,102.81,1073.75,4137.15,8.07,89.78,2790.41,2651.17,1904.76,2036.86,68.04,16.12,2597.18,2222.62,322.93,35659.79,574.46,121.87,443.47,35.32,3374.1,42.87,31.38,2.54,32.67,20058.87,18.44,175.08,2.4,331.39,585.59,596.82,67.69,71.52,1124.14,22.87,25977.06,2.63,20.7,27.73,540.63,140.72,194.29,170.15,257.54,2321.88,97.14,1.1,0.88,2.68,200.38,2184.67,379.89,50.8,519.24,260.84,50.01,0.44,301794.84,63267.23,1023.05,753.31,16.16,17.11,266.56,13.99,2337.78,12.63,1213.46,4620.55,26.27,2064.47,10.98,426.09,580.93,44.44,32.22,1673.53,1151.79,52.78,152.77,0.65,36.62,2444.68,2445.51,944.12,5.39,1971.34,0.48,1.85,317.1,10.78,1735.02,18.44,187.4,221.06,3.16,2084.06,6211.43,15699.31,781.93,6519.8,42.83,8.48,118.46,4245.27,9670.23,0.63,1253.59,16.34,20.59,19120.89,1.64,128.07,253.57,185.74,1240.76,15981.42,460.96,162.07,15,4.73,844.12,8976.98,1504.15,4.42,2.39,3.34,13.4,333.52,3230.8,110.78,1.17,954.94,46.18,22.51,8.91,32.12,3989.23,16870.27,3102.76,245.81,538.08,872.31,6.07,535.66,30.69,18.77,35.29,327.2,6318.81,4975.75,98.68,966.14,1.45,14.6,244.13,619.44,247.94,4752.37,3408.42,56.26,208.75,511.66,29.51,1425.43,12.69,425.83,10791.52,0.48,725.36,2335.01,4481.19],[1.43,0.03,0.17,0.03,0.01,7.3,0.05,0.13,0.11,0.01,0.01,0.46,0.12,0.03,0.46,0.03,0.03,0.01,0.34,2.96,0.01,3.73,1,0.03,5.45,0.19,0.02,0.02,6.92,9.51,1.19,1.96,0.01,0.25,null,6.17,0.05,0.22,0.23,3.14,2.89,0.05,2.41,0.01,0.01,0.01,0.01,8.88,0.01,4.11,0.36,0.7,0.56,0.06,0.12,3.13,6.32,0.01,7.02,0.24,0.33,0.01,0.01,1.43,2.08,0.19,0.01,1.98,0.01,0.07,0.06,0.13,0.29,3.66,6.05,0.61,0.99,0.52,0.01,0.01,2.48,1.24,0.08,0.36,0.01,0.01,0.01,0.07,0.01,0.02,0.28,2.05,4.53,0.09,0.03,0.26,1.1,0.02,0.03,15.68,9.05,0.09,0.03,0.01,0.07,3.26,6.31,0.09,0.06,0.86,0.01,0.36,1.84,0.03,0.12,0.01,0.13,0.35,0.01,0.71,6.66,1.57,8.01,3.71,0.01,0.01,0.27,6.09,1.87,0.04,0.53,0.01,0.04,3.22,0.01,0.92,0.4,0.41,0.73,1.83,0.01,0.03,0.01,0.02,0.14,0.1,5.62,0.2,0.17,0.13,1.04,0.08,4.74,0.02,0.02,3.82,0.01,0.01,0.01,0.64,13.69,6.26,8.55,0.01,0.06,0.73,0.15,9.1,0.01,0.01,0.04,0.45,4.4,0.05,0.78,2.19,0.14,0.04,0.24,0.14,0.46,4.61,0.1,0.01,0.01,0.01,0.05,0.15,0.61,0.15,0.28,null,0.63,2.89,9.07],[17.65,0.71,6.94,1.26,0.9,54.75,1.66,2.46,8.19,0.38,0.94,15.45,4.47,1.08,34.51,1.89,10.67,1.07,9.57,52.31,0.39,32.63,13.59,6.3,140.34,5.32,4.81,2.94,57.92,87.79,37.41,30.52,0.45,9.03,null,60.91,4.6,6.1,3.23,51.62,33.62,1.9,50.4,2.49,0.66,0.7,0.73,97.27,0.79,58.63,9.08,9.1,10.31,1.95,3.34,26.89,76.13,4.4,90.28,7.5,6.44,1.21,2.12,25.63,37.25,11.02,0.72,28.31,2.15,5.16,2.26,4.19,4.05,60.37,70.43,18.56,15.01,9.55,1.21,0.35,62.8,67.88,3.38,7,0.88,0.6,1.02,1.33,4.32,0.5,19.92,34.73,74.39,9.67,0.63,21.45,26.66,5.09,1.44,250.28,88.76,2.4,12.34,0.28,4.29,34.98,52.26,8.32,4.12,42.66,0.27,7.9,25.98,2.14,3.83,0.79,11.53,21.21,1.27,17.1,85.08,83.24,105.16,72.14,0.61,0.47,5.75,86.62,18.7,1.39,13.09,0.77,0.82,30.48,0.12,8.99,10.48,7.91,11.07,46.69,2.87,3.66,1.06,0.33,10.69,15.88,47.34,6.39,5.74,5.35,24.88,2.52,79.23,3.09,3.14,52.24,2.87,0.97,1.03,18.1,140.81,88.88,87.42,1.2,7.26,7.32,3.07,135.8,0.75,0.54,0.6,11.82,43.8,18.21,28.6,46.86,4.4,2.77,5.79,2.18,13.25,47.31,18.69,0.93,0.8,0.4,2.3,13.78,15.17,3.86,30.86,null,9.02,53.73,101.03],[0.27,0,0.73,0,0,154.51,0,12.12,0.01,0.02,0.02,0.03,0,0.01,3.23,0.01,0.01,0.12,0.15,42.58,0,0.07,0.04,0.01,107.63,28.89,0,0.01,109.84,132.31,12.12,199.41,0.12,0.07,123.42,130.4,2.16,49.96,2.88,0.18,32.31,0.17,186.66,0.04,0.09,0,0.06,708.35,0.01,3.27,0.01,3.1,0.49,0.79,0.18,4.89,19.37,0.02,773.9,0.02,0.05,0.02,0.95,2.43,9.21,0.02,0.12,98.28,0.11,0,0,0,4.43,82.18,43.96,0.86,13.82,3.72,0.01,0,1280.49,176.43,0.05,0.06,0.07,0.08,0.13,0.01,1.77,0,0.51,575.16,0.01,1.12,0.01,0.05,2.06,0.02,0.05,420.09,13.84,0.34,0.03,0,0,1.69,932.29,0.95,0,96.99,0,0,5.1,0.03,8.47,0.01,0.02,0.01,0,2.39,2643.8,19,145.84,6.16,0.1,0.01,0.07,98.67,606.58,0,2.67,0.01,0.01,14.54,0.01,0.14,2.29,0.91,0.59,9.2,0.58,0.17,0.04,0,1.01,13.18,116.39,0.02,0.01,0.03,0,0.82,60.1,0.15,0,14.85,0.05,0,0.01,0.23,64.77,3261.09,83.23,0.35,0.14,6.41,0.04,185.24,0.02,0.01,0.03,0.3,537.48,0.92,0.11,33.82,0.01,0.09,0.15,0.4,0.62,826.35,2.58,0.02,0.52,0.63,0.09,0.04,0.08,2,4.53,0,1.17,899.39,1394.32],[3.99,0.31,47.57,0.02,0.04,553.8,0.09,470.55,5.25,2.6,1.64,9.52,1.69,0.57,76.8,0.28,21,5.57,4.29,164.67,0.02,0.39,31.43,0.72,1629.38,1426.69,0.13,0.6,431.4,614.69,370.32,1219.78,18.34,2.79,906.48,445.86,169.52,1800.36,126.78,3.42,123.59,5.57,1010.74,1.06,4.08,0.07,1.35,2682.22,1.44,22.94,0.33,96,212.28,7.29,15.7,27.73,61.31,4.24,3336.87,0.14,0.73,0.92,115.23,87.2,32.75,6.6,13.86,607.5,6.52,0.01,0.17,0.05,41.67,578.7,231.63,22.85,134.98,32.02,2.51,0.03,9332.37,4789.24,228.09,0.51,2.98,1.53,18.69,6.44,35.83,0.02,18.27,2377.05,0.14,53.76,0.05,18.63,57.18,5.02,2.48,2383.35,91.86,5.39,2,0.05,0.36,10.18,2808.35,172.45,0.01,355.07,0.07,0.01,21.86,1.61,364.04,1.44,8.42,0.54,0.03,85.74,5994.53,2585.79,956.07,233.87,7.92,0.7,8.1,291.05,1863.92,0.01,93.4,0.69,1.27,235.97,0.06,38.05,65.18,58.49,145.19,51.23,15.33,51.51,5.65,0.01,16.44,636.62,409.41,0.59,0.46,0.25,0.12,19.79,242.32,13.33,0.15,107.7,4.28,0.04,0.12,1.51,169.78,20351.04,448.76,51.6,3.93,132.97,3.37,1068.15,1.1,1.04,0.26,5.08,2891.48,1611.62,1.29,214.83,0.04,4.88,9.56,7.1,37.39,4550.85,594.38,2.68,19.15,87.12,9.59,32.29,0.64,99.49,1821.12,0.1,32.32,1703.08,5970.15],[0,0,0.01,0,0,2.53,0.02,0.22,0,0,0,0,0.01,0,0.01,0.03,0,0.01,0.25,1.82,0,0.06,0,0,29.57,0.12,0.01,0,2.63,5.2,0.48,3.96,0,0.09,null,3.85,0.12,0.04,0.05,0.11,3.24,0.03,3.85,0.01,0.01,0,0.01,3.94,0,2.2,0.06,0.19,0.02,0.01,0.02,2.92,1.69,0.02,3.71,0.1,0.04,0.01,0.02,0.75,1.96,0,0,1.81,0.01,0,0.02,0,0.15,3.06,11.59,0.76,0.75,0.28,0,0,0.64,0.48,0,0,0.01,0.01,0,0,0.02,0,0.02,5.87,0.03,0.03,0,0.01,0.17,0.01,0.01,109.06,1.42,0.04,0.01,0,0,0.03,23.83,0.03,0.01,2.28,0,0.01,0.61,0.03,0.05,0,0.01,0,0,0.05,41.44,0.25,32.34,0.13,0.01,0,0.01,1.93,1.47,0,0.1,0,0,0.04,0,0.03,0.16,0.09,0.01,0.06,0.02,0.02,0.01,0,0.06,0.11,4.86,0.07,0.1,0.08,0.01,0.02,1.8,0.02,0.04,1.08,0.02,0,0,0.19,2.52,43.98,3.2,0.01,0.01,0.08,0.05,76.18,0,0,0,0.02,4.44,0.01,0.04,2.19,0.03,0.06,0.01,0,0.08,8.68,0.08,0,0.01,0,0.02,0,0.16,0.04,0.04,null,0.02,23.87,43.05],[0.04,0.03,0.33,0.08,0.11,8.61,0.26,3,0.47,0.03,0.05,0.26,1.14,0.08,0.13,0.26,0.56,0.12,3.57,5.3,0.08,0.13,0.87,0.04,212.96,1.83,0.08,0.02,8.96,20.36,7.27,18.28,0.12,1.56,null,12.22,2.42,0.31,0.71,1.45,9.37,0.3,15.1,0.06,0.09,0.02,0.03,13.01,0.06,7.68,1.24,2.64,3.74,0.02,0.77,10.43,4.15,0.82,11.6,0.41,0.23,0.04,0.45,15.88,6.28,0.43,0.04,7.41,0.14,0.07,0.42,0.07,0.84,15.99,42.95,8.35,3.9,1.17,0.06,0.03,1.94,5.14,0.75,0,0.16,0.05,0.07,0.61,0.07,0,0.3,17.87,0.4,0.25,0,0.94,2.62,0.57,0.11,356.43,7.08,0.25,0.16,0.02,0.04,0.15,60.01,1.52,0.01,7.68,0.04,0.04,1.79,0.32,0.8,0.06,0.52,0.05,0.01,0.7,82.11,13.71,128.59,2.59,0.11,0.04,0.39,5.94,3.6,0.02,0.97,0.03,0.05,0.38,0,2.67,2.69,2.49,1.3,0.15,0.1,1.16,0.4,0,0.21,1.13,12.89,0.85,1.11,0.4,0.22,0.15,5.94,0.37,0.41,5.89,0.27,0,0.01,0.85,5.99,107.22,12.64,0.25,0.05,1.12,1.7,270.8,0.03,0.03,0,0.18,20.04,5.9,0.37,10.42,0.11,0.93,0.23,0.02,2,45.3,3.26,0.04,0.07,0.07,0.75,0.31,0.77,0.9,5.21,null,0.4,39.19,134.6],[198.16,0.06,18.71,0.01,0,372.07,0,7.66,0.25,0.23,0.05,3.25,0.03,0.04,55.22,0.01,0.12,0.12,0.13,57.88,0,3.52,12.35,0.04,13.81,37.63,0.01,0.06,270.09,244.14,13.33,78.77,0.29,0.15,106.09,180.75,1.03,147.89,10.83,4.13,26.75,0.17,92.53,0.03,0.1,0.01,0.06,1456.07,0.05,5.19,0.03,10.28,9.97,8.99,0.74,4.62,66.86,0.01,1357.05,0.04,0.57,0.04,0.84,3.83,8.23,0.6,0.51,71.8,0.19,0,0.01,0.03,6.52,83.65,20.36,0.5,18.22,6.33,0.07,0.01,4352.31,239.62,8.6,23.47,0.06,0.13,0.61,0.1,1.27,0.24,5.76,165.47,0.93,3.71,0.26,2.49,8.88,0.02,0.26,41.06,69.93,1.07,0.06,0,0.13,154.29,197.08,3.17,0.02,67.04,0,0.05,12.67,0.02,18.82,0.05,0.37,4.87,0.01,31.68,334.82,32.68,27.33,147.81,0.16,0.06,1.98,296.4,663.31,0.01,8.77,0.04,0.37,2353.35,0.14,4.62,2.72,2.7,26.93,188.04,0.24,0.22,0.04,0.06,1.83,8.52,113.45,0.04,0.02,0.04,0.26,6.68,153.51,0.18,0,44.3,0.03,0.04,0.02,0.88,317.82,339.08,217.76,0.64,1.42,94.18,0.08,16.12,0.08,0.06,1.65,5.91,439.79,2.29,1.41,28.47,0,0.04,1.5,12.96,2.97,393.14,2.78,0.13,0.95,3.32,0.2,6.09,0.36,5.79,16.57,0,64.97,92.3,204.74],[2567.72,3.64,809.92,0.21,0.15,2583.1,0.18,202.22,13.87,27.74,19.64,110.03,2.31,2.53,3206.1,0.83,61.94,30.9,3.49,922.59,0.05,40.14,365.17,32.15,392.03,1540.27,4.42,24.86,2377.61,1556.36,1187.3,1079.84,54.5,7.86,1317.13,1290.12,193.85,12837.7,260.26,66.94,443.54,13.67,1577.54,24.64,10.27,0.76,17.53,11085.18,12.15,74.92,0.87,175.1,273.66,268.72,31,43.3,776.28,6.39,14954.61,1.37,14.4,29.72,518.54,80.62,100.04,30.31,161.93,1604.87,75.22,0.42,0.53,1.51,117.9,1290.57,255.75,14.36,335.02,174.5,30.92,0.96,155739.84,32333.2,564.32,514.68,11.85,12.01,201.6,3.47,1630.58,6.8,292.87,2367.22,16.83,1152.02,7.61,115.46,279.78,13.07,23.06,553.88,789.98,33.1,32.74,0.72,13.79,1183.55,1210.8,297.16,2.5,1554.35,0.28,1.02,221.22,1.76,821.48,12.15,27.06,94.86,1.05,1036.65,2813.9,4699.12,311.55,4396.34,32.15,6.91,60.68,2214.45,5319.69,0.4,868.41,17.79,7.76,23832.64,0.79,61.7,169.01,60.99,640.2,6904.26,124.31,59.93,7.95,1.26,171.34,2023.4,868.54,2.03,0.65,1.61,6.93,230.68,2787.51,51.25,0.18,610.77,17.1,9.22,7.8,22.81,2519.38,7639.74,2051.99,161.1,187.68,847.68,2.07,222.95,39.31,15.01,21.56,161.35,3122.34,2426.55,50.26,489.85,0.02,3.17,56.98,230.55,78.71,2318.84,643.51,5.14,148.59,334.36,15.99,507.83,8.12,189.05,7568.63,0.5,884.97,1036.66,1345.86],[2.82,0.02,0.34,0.03,0.01,6.16,0.03,0.14,0.1,0.01,0.01,0.32,0.07,0.03,0.24,0.03,0.02,0.01,0.23,2.53,0.01,3.44,0.71,0.02,3.87,0.16,0.02,0.01,6.64,9.64,0.55,1.59,0.01,0.19,null,5.42,0.06,0.13,0.19,2.62,2.73,0.03,1.93,0.01,0.01,0.01,0.01,8.23,0.01,3.6,0.33,0.66,0.43,0.06,0.09,2.81,6.07,0.01,6.66,0.23,0.46,0.01,0.01,1.21,1.79,0.18,0.01,1.38,0.02,0.05,0.07,0.15,0.22,3.16,5.4,0.45,1.02,0.5,0.01,0.02,2.43,0.69,0.09,0.32,0.01,0.01,0.01,0.03,0.02,0.02,0.26,1.72,4.87,0.11,0.06,0.28,0.77,0.01,0.04,10.83,7.48,0.12,0.03,0.01,0.07,3.09,5.1,0.08,0.04,1.64,0.01,0.37,1.57,0.01,0.11,0.01,0.12,1.19,0.01,0.7,5.31,0.44,6.14,3.25,0.01,0.01,0.22,6.06,1.69,0.07,0.34,0.01,0.08,7.38,0.01,0.89,0.2,0.27,0.63,1.2,0.01,0.03,0.01,0.04,0.12,0.08,4.74,0.18,0.11,0.11,0.64,0.15,4.71,0.03,0.01,3.23,0.01,0.01,0.01,0.78,12.54,4.76,8.58,0.02,0.06,1.16,0.11,6.74,0.01,0.01,0.05,0.41,3.67,0.04,0.57,1.85,0.01,0.03,0.12,0.13,0.4,4.2,0.1,0.02,0.02,0.01,0.05,0.15,0.8,0.14,0.16,null,1.22,2.49,6.35],[29.26,0.3,5.73,0.84,0.42,38.74,0.49,1.2,1.03,0.28,0.51,2.82,1.46,0.67,5.67,0.69,1.38,0.63,2.85,28.98,0.21,15.68,10.02,1.93,50.69,1.87,2.81,0.76,47.2,49.39,21.34,16.01,0.35,4.19,null,34.96,2.65,2.29,1.39,28.51,33.31,0.73,24.78,1.3,0.22,0.19,0.37,52.52,0.5,25.09,3.17,4.69,4.73,0.88,1.27,17.51,51.26,1.01,50.82,4.05,4.58,1.24,1.86,15.05,18.19,1.72,0.43,18.73,1.56,2.38,1.35,2.4,2.18,35.58,46.28,5.27,9.21,6.28,0.66,0.72,34.38,34.68,1.87,4.79,0.61,0.4,0.71,0.32,2.82,0.29,4.29,17.6,44.5,5.26,0.59,5.53,12.39,1.25,1.04,79.56,60.74,1.5,2.2,0.31,1.58,16.58,25.43,2.57,1.88,33.68,0.15,4.46,18.14,0.34,1.76,0.5,1.5,8.77,0.4,8.08,35.16,23.28,38.31,43.26,0.44,0.36,2.76,44.68,10.57,0.86,8.47,0.84,0.73,39.68,0.06,4.29,7.13,2.66,5.61,20.13,0.71,1.24,0.5,0.28,2,2.93,23.69,2.78,1.6,2.74,12.53,2.48,62.91,1.34,0.51,32.29,1.01,0.37,0.87,12.99,86.4,37.81,57.04,0.76,2.29,7.05,1.03,54.14,0.95,0.42,0.37,5.85,20.99,8.49,14.9,22.71,0.06,0.58,1.29,0.76,3.97,22.7,2.89,0.28,0.54,0.25,1.13,4.61,9.63,1.67,20.51,null,11.08,23.44,28.78],[0.25,0,0.7,0,0,150.68,0,10.38,0,0.05,0.01,0.03,0,0,3.09,0.01,0.01,0.15,0.14,41.05,0,0.06,0.03,0.01,97,27.17,0,0.01,105.89,130.2,11.57,190.85,0.16,0.07,121.16,126.37,1.51,43.47,2.42,0.17,31.27,0.12,179.05,0.02,0.05,0,0.04,685.94,0.01,3.1,0.01,2.94,0.47,0.75,0.18,4.66,18.46,0.02,728.65,0.02,0.04,0.01,1.26,2.35,8.89,0.01,0.1,91.35,0.09,0,0,0,3.86,79.93,43.02,0.81,13.01,3.55,0.01,0,1170.59,168.48,0.05,0.05,0.05,0.07,0.16,0.01,1.21,0,0.41,530.02,0.01,0.56,0.02,0.05,1.98,0.03,0.05,407.28,13.04,0.32,0.01,0,0,1.64,862.74,0.96,0,92.82,0,0,4.87,0.02,7.47,0.01,0.03,0.01,0,2.27,2480.24,18.63,136.26,5.82,0.16,0.02,0.07,93.47,566.6,0,2.55,0.01,0.01,13.46,0.01,0.14,2.13,0.87,0.56,5.46,0.45,0.15,0.04,0,1.1,10.5,111.07,0.02,0.01,0.03,0,0.78,58.12,0.14,0,14.74,0.03,0,0,0.21,63.81,2854.38,80.7,0.29,0.19,6.21,0.03,173.7,0.02,0.02,0.03,0.28,508.63,0.87,0.1,32.17,0,0.11,0.14,0.38,0.6,775.7,3.35,0.02,0.59,0.53,0.04,0.04,0.07,2.19,4.09,0,1.12,820.45,1253.7],[1.43,0.1,30.3,0.01,0.01,690.55,0.04,199.18,0.82,0.7,0.43,1.94,0.68,0.07,37.96,0.14,2.71,2.59,1.6,183.33,0.01,0.3,9.68,0.64,1065.21,478.14,0.04,0.18,364.56,422.32,135.87,1025.11,5.42,0.51,1076.56,495.43,34.12,707.74,38.15,0.91,135.11,1.59,721.77,0.36,1.17,0.04,0.71,2840.7,0.34,21.48,0.14,29.52,45.71,5.17,4.13,19.61,78.25,1.04,3428.05,0.17,0.76,0.27,38.09,16.68,27.66,2.38,3.38,562.62,1.61,0,0.07,0.01,19.18,530.85,227.43,8.67,129.11,34.18,0.62,0.02,14988.25,1878.25,17.52,0.26,1.14,0.59,5.49,2.24,20.36,0.02,7.09,1638.39,0.07,6.34,0.03,2.58,17.73,3.53,1.17,2166.59,98.48,3.67,3.01,0.02,0.22,11.64,1881.29,16.52,0.04,336.75,0.02,0.01,39.98,0.32,105.36,0.34,2.18,0.18,0.02,66.05,4590.34,276.63,586.69,61.71,2.32,0.19,2.19,374.13,1511.7,0,40.81,0.19,0.14,80.44,0.03,9.32,12.55,15.91,46.6,21.16,4.5,12.82,2.17,0,9.04,242.45,388.3,0.35,0.24,0.26,0.04,7.52,305.73,4.63,0.08,107.79,0.42,0.01,0.04,1.81,204.83,16476.9,498.76,12.78,2.37,49.51,1.54,865.05,0.56,0.48,0.25,5.83,2284.43,437.85,0.69,166.27,0.04,2.7,2.55,2.57,9.39,2925.62,286.22,0.3,9.52,32.65,2.18,7.54,0.77,33.61,160.3,0.03,9.26,1485.41,4132.04],[0,0,0.01,0,0,2.5,0.02,0.19,0,0,0,0,0.01,0,0.01,0.02,0,0.02,0.25,1.8,0,0.06,0,0,27.19,0.12,0.01,0,2.6,5.14,0.48,3.85,0.01,0.09,null,3.79,0.08,0.04,0.04,0.11,3.19,0.02,3.74,0.01,0.01,0,0.01,3.88,0,2.15,0.06,0.19,0.02,0.01,0.02,2.83,1.68,0.02,3.58,0.1,0.04,0,0.02,0.74,1.93,0,0,1.75,0.01,0,0.02,0,0.13,3.02,11.4,0.73,0.73,0.28,0,0,0.65,0.49,0,0,0.01,0.01,0,0,0.02,0,0.02,5.5,0.03,0.02,0.01,0.01,0.17,0.02,0.01,107.45,1.39,0.04,0,0,0,0.03,22.34,0.03,0.01,2.27,0,0.01,0.6,0.01,0.04,0,0.01,0,0,0.05,39.32,0.25,30.61,0.13,0.01,0,0.01,1.91,1.45,0,0.1,0,0,0.04,0,0.03,0.16,0.09,0.01,0.03,0.02,0.02,0.01,0,0.07,0.1,4.64,0.1,0.1,0.08,0.01,0.02,1.78,0.02,0.04,1.07,0.01,0,0,0.19,2.52,40.07,3.18,0.01,0.01,0.08,0.05,72.61,0,0,0,0.02,4.25,0.01,0.04,2.09,0.03,0.08,0.01,0,0.08,8.28,0.12,0,0.01,0,0.01,0,0.16,0.05,0.04,null,0.02,22.1,38.9],[0.02,0.01,0.21,0.03,0.02,10.36,0.11,1.19,0.06,0.01,0.01,0.05,0.43,0.02,0.07,0.12,0.06,0.05,1.3,5.76,0.03,0.12,0.27,0.04,137.73,0.58,0.03,0.01,7.24,13.4,2.44,15.2,0.03,0.27,null,13.43,0.47,0.13,0.2,0.39,10.15,0.08,11.34,0.02,0.02,0.01,0.02,13.46,0.01,7.2,0.49,0.79,0.79,0.02,0.17,7.93,5.17,0.16,11.65,0.5,0.24,0.01,0.14,3.11,5.03,0.14,0.01,6.57,0.03,0.03,0.19,0.02,0.35,14.64,41.16,3.18,3.55,1.23,0.01,0.01,3.31,2.01,0.06,0,0.06,0.02,0.02,0.21,0.04,0,0.1,12.18,0.18,0.03,0,0.12,0.79,0.34,0.05,311.2,7.57,0.17,0.2,0.01,0.02,0.16,39.51,0.14,0.03,7.3,0.01,0.04,3.28,0.06,0.23,0.01,0.12,0.02,0.01,0.51,57.36,1.37,72.15,0.61,0.03,0.01,0.1,7.55,3,0.01,0.4,0.01,0.01,0.13,0,0.65,0.53,0.69,0.41,0.06,0.03,0.27,0.14,0,0.11,0.35,10.59,0.48,0.58,0.43,0.08,0.08,6.9,0.12,0.22,5.7,0.02,0,0,1.03,7.02,81.55,13.87,0.06,0.03,0.41,0.77,210.07,0.01,0.01,0,0.21,15.36,1.53,0.21,7.71,0.13,0.49,0.06,0.01,0.47,28.64,1.28,0.02,0.03,0.02,0.15,0.07,0.91,0.3,0.43,null,0.12,33.59,88.36],[304,0.13,28.42,0.01,0,818.52,0.01,14.86,0.56,0.44,0.11,8.53,0.08,0.08,167.11,0.02,0.34,0.22,0.33,127.05,0,7.47,30.27,0.11,33.67,85.12,0.02,0.15,558.79,485.98,43.25,177.12,0.6,0.34,214.64,390,1.9,424.82,24.79,9.26,55.59,0.44,209.53,0.06,0.2,0.01,0.13,3053.71,0.1,11.29,0.06,21.56,23.41,18.77,1.72,9.85,139.55,0.02,2821.22,0.09,1.01,0.09,1.5,8.47,17.96,1.3,1.03,179.52,0.3,0.01,0.02,0.06,15.37,181.94,43.3,1.2,36.53,13.21,0.13,0.01,9301.96,693.61,15.88,51.21,0.12,0.24,1.01,0.33,2.22,0.52,12.34,366.37,1.85,7.06,0.4,4.92,22.15,0.05,0.45,101.47,158.19,1.91,0.11,0.01,0.24,319.69,443.95,6.5,0.05,103.73,0.01,0.09,28.01,0.06,40.24,0.1,0.78,6.32,0.01,65.75,759.79,150.96,63.48,325.91,0.33,0.11,4.54,607.41,1434.96,0.01,23.23,0.08,0.54,3459.25,0.25,9.65,8.57,6.87,59.79,492.68,0.49,0.45,0.09,0.1,4.09,19.85,247.92,0.08,0.04,0.09,0.69,10.46,311.82,0.34,0,96.67,0.06,0.09,0.03,1.65,669.3,803.42,440.4,1.08,2.91,154.94,0.19,38.24,0.16,0.12,2.94,12.85,971.59,5.38,3.43,62.35,0.03,0.09,4.71,27.08,6.51,832.06,5.89,0.22,1.68,6.79,0.4,12.67,0.66,12.5,48.36,0,99.95,201.28,498.44],[4231.53,11.82,1795.41,0.52,0.44,6104.06,0.72,588.71,104.95,65.88,53.79,683.36,8.95,10.13,22902.88,2.87,460.7,80.47,14.98,2549.12,0.15,141.51,854.3,134.96,1465.78,5677.41,12.49,114.64,5168.02,4207.53,3092.06,3116.7,122.54,23.98,3914.31,3512.74,516.77,48497.48,834.71,188.82,887.01,48.99,4951.64,67.51,41.64,3.3,50.2,31144.05,30.59,250,3.27,506.49,859.25,865.54,98.69,114.82,1900.42,29.25,40931.66,4,35.1,57.44,1059.17,221.34,294.33,200.46,419.48,3926.75,172.35,1.52,1.42,4.19,318.28,3475.24,635.64,65.16,854.26,435.34,80.93,1.41,457534.68,95600.43,1587.37,1267.99,28.01,29.13,468.15,17.47,3968.36,19.43,1506.33,6987.77,43.1,3216.49,18.59,541.55,860.71,57.51,55.28,2227.4,1941.76,85.88,185.5,1.37,50.41,3628.23,3656.31,1241.28,7.89,3525.69,0.76,2.87,538.32,12.55,2556.5,30.59,214.46,315.92,4.21,3120.72,9025.32,20398.43,1093.48,10916.14,74.98,15.38,179.15,6459.73,14989.92,1.03,2122.01,34.14,28.34,42953.53,2.43,189.77,422.58,246.73,1880.95,22885.68,585.28,222,22.95,5.99,1015.46,11000.38,2372.69,6.44,3.05,4.95,20.34,564.2,6018.32,162.03,1.36,1565.71,63.28,31.73,16.71,54.93,6508.62,24510.01,5154.75,406.91,725.75,1719.99,8.14,758.61,70,33.78,56.85,488.56,9441.15,7402.3,148.93,1455.99,1.47,17.76,301.12,849.99,326.65,7071.21,4051.93,61.39,357.34,846.02,45.5,1933.26,20.81,614.88,18360.15,0.98,1610.33,3371.67,5827.05],[2.11,0.02,0.25,0.03,0.01,6.74,0.04,0.14,0.1,0.01,0.01,0.39,0.1,0.03,0.35,0.03,0.02,0.01,0.29,2.75,0.01,3.59,0.86,0.02,4.67,0.18,0.02,0.02,6.78,9.57,0.88,1.77,0.01,0.22,null,5.8,0.05,0.18,0.21,2.88,2.81,0.04,2.18,0.01,0.01,0.01,0.01,8.56,0.01,3.86,0.35,0.68,0.5,0.06,0.1,2.97,6.2,0.01,6.84,0.24,0.39,0.01,0.01,1.32,1.93,0.19,0.01,1.69,0.02,0.06,0.06,0.14,0.26,3.41,5.72,0.53,1.01,0.51,0.01,0.01,2.46,0.97,0.09,0.34,0.01,0.01,0.01,0.05,0.01,0.02,0.27,1.88,4.7,0.1,0.05,0.27,0.94,0.02,0.03,13.28,8.28,0.1,0.03,0.01,0.07,3.18,5.71,0.09,0.05,1.24,0.01,0.36,1.7,0.02,0.11,0.01,0.12,0.76,0.01,0.7,5.99,1.01,7.08,3.49,0.01,0.01,0.25,6.08,1.78,0.06,0.44,0.01,0.06,5.22,0.01,0.9,0.3,0.34,0.68,1.53,0.01,0.03,0.01,0.03,0.13,0.09,5.18,0.19,0.14,0.12,0.84,0.12,4.72,0.02,0.01,3.52,0.01,0.01,0.01,0.71,13.12,5.53,8.57,0.02,0.06,0.94,0.13,7.93,0.01,0.01,0.04,0.43,4.04,0.04,0.68,2.02,0.08,0.03,0.18,0.14,0.43,4.4,0.1,0.02,0.02,0.01,0.05,0.15,0.7,0.14,0.22,null,0.92,2.69,7.71],[23.25,0.5,6.33,1.05,0.65,46.6,1.04,1.81,4.26,0.33,0.72,8.97,2.92,0.94,20.16,1.25,5.6,0.85,6.17,40.51,0.3,24.97,11.79,4.09,95.27,3.55,3.84,1.82,52.44,68.19,29.02,23.23,0.4,6.55,null,47.87,3.61,4.23,2.29,40.09,33.46,1.31,37.92,1.87,0.44,0.43,0.55,74.63,0.64,41.86,6.07,6.87,7.5,1.42,2.21,22.37,63.54,2.54,70.33,5.81,5.52,1.22,1.98,20.4,27.47,6.06,0.57,23.42,1.84,3.89,1.8,3.31,3.07,47.96,58.21,11.93,12.04,7.9,0.92,0.54,49.01,51.28,2.63,5.9,0.74,0.5,0.86,0.82,3.54,0.4,11.66,26.12,58.93,7.44,0.61,13.29,19.4,2.99,1.24,163.2,74.73,1.95,6.81,0.3,2.92,25.68,38.73,5.42,2.99,38.18,0.21,6.2,22.06,1.22,2.78,0.64,6.25,14.87,0.83,12.47,58.98,52.24,70.24,56.86,0.52,0.42,4.21,65.53,14.69,1.12,10.7,0.8,0.79,34.98,0.09,6.63,8.82,5.32,8.31,33.4,1.74,2.4,0.77,0.32,6.16,8.76,34.67,4.53,3.69,4.08,18.62,2.5,70.73,2.19,1.84,42.1,1.92,0.66,0.95,15.56,113.21,62.55,72.13,0.97,4.64,7.19,2.05,94.09,0.85,0.48,0.49,8.84,32.22,13.24,21.83,34.51,2.2,1.65,3.49,1.45,8.47,34.9,10,0.78,0.67,0.32,1.69,9.05,12.39,2.75,25.55,null,10.05,38.45,63.95],[0.52,0,1.43,0,0,305.19,0,22.5,0.01,0.08,0.03,0.06,0.01,0.01,6.32,0.01,0.02,0.27,0.29,83.63,0,0.13,0.07,0.02,204.64,56.06,0,0.02,215.73,262.51,23.68,390.26,0.28,0.14,244.58,256.77,3.66,93.43,5.3,0.35,63.58,0.29,365.71,0.06,0.14,0,0.1,1394.3,0.02,6.37,0.01,6.04,0.96,1.54,0.36,9.55,37.83,0.04,1502.54,0.04,0.09,0.04,2.21,4.79,18.1,0.03,0.22,189.63,0.2,0,0.01,0,8.3,162.11,86.98,1.67,26.83,7.28,0.02,0,2451.08,344.91,0.11,0.11,0.12,0.16,0.29,0.02,2.97,0,0.93,1105.18,0.01,1.69,0.04,0.1,4.04,0.05,0.09,827.37,26.87,0.67,0.04,0,0.01,3.34,1795.04,1.91,0.01,189.81,0,0,9.97,0.05,15.94,0.02,0.05,0.02,0,4.66,5124.04,37.63,282.09,11.97,0.26,0.02,0.13,192.15,1173.18,0,5.22,0.02,0.02,28,0.01,0.28,4.42,1.78,1.15,14.66,1.03,0.33,0.08,0,2.11,23.69,227.45,0.04,0.03,0.06,0.01,1.6,118.22,0.29,0.01,29.59,0.08,0,0.01,0.44,128.59,6115.47,163.94,0.64,0.34,12.62,0.07,358.94,0.04,0.03,0.06,0.58,1046.12,1.79,0.21,65.98,0.01,0.2,0.29,0.79,1.22,1602.05,5.93,0.04,1.11,1.16,0.13,0.08,0.15,4.18,8.63,0,2.29,1719.84,2648.01],[5.42,0.41,77.87,0.03,0.04,1244.35,0.13,669.74,6.07,3.3,2.07,11.46,2.37,0.63,114.76,0.42,23.7,8.16,5.89,348,0.03,0.69,41.12,1.36,2694.59,1904.83,0.18,0.78,795.95,1037.01,506.19,2244.89,23.77,3.3,1983.04,941.29,203.63,2508.1,164.93,4.34,258.7,7.16,1732.51,1.43,5.25,0.12,2.06,5522.92,1.78,44.43,0.46,125.51,258,12.46,19.82,47.34,139.55,5.28,6764.92,0.31,1.49,1.18,153.32,103.88,60.41,8.99,17.24,1170.12,8.13,0.02,0.24,0.06,60.84,1109.56,459.06,31.52,264.09,66.2,3.13,0.05,24320.62,6667.48,245.61,0.77,4.12,2.12,24.18,8.68,56.19,0.04,25.37,4015.44,0.21,60.11,0.08,21.21,74.91,8.55,3.65,4549.93,190.34,9.05,5.01,0.06,0.58,21.83,4689.64,188.97,0.04,691.82,0.09,0.02,61.84,1.93,469.4,1.78,10.6,0.72,0.05,151.79,10584.87,2862.42,1542.76,295.58,10.25,0.89,10.29,665.18,3375.62,0.01,134.21,0.88,1.41,316.42,0.09,47.37,77.73,74.39,191.79,72.4,19.83,64.34,7.82,0.01,25.47,879.07,797.71,0.94,0.7,0.5,0.16,27.31,548.05,17.97,0.23,215.49,4.7,0.05,0.16,3.32,374.61,36827.95,947.53,64.37,6.3,182.47,4.9,1933.2,1.66,1.51,0.51,10.9,5175.91,2049.48,1.99,381.1,0.08,7.58,12.11,9.67,46.78,7476.47,880.6,2.98,28.68,119.77,11.77,39.83,1.41,133.09,1981.43,0.13,41.58,3188.49,10102.18],[0,0,0.01,0,0,2.51,0.02,0.21,0,0,0,0,0.01,0,0.01,0.02,0,0.01,0.25,1.81,0,0.06,0,0,28.39,0.12,0.01,0,2.62,5.17,0.48,3.91,0.01,0.09,null,3.82,0.1,0.04,0.05,0.11,3.21,0.03,3.8,0.01,0.01,0,0.01,3.91,0,2.17,0.06,0.19,0.02,0.01,0.02,2.88,1.68,0.02,3.64,0.1,0.04,0,0.02,0.75,1.95,0,0,1.78,0.01,0,0.02,0,0.14,3.04,11.5,0.75,0.74,0.28,0,0,0.65,0.48,0,0,0.01,0.01,0,0,0.02,0,0.02,5.69,0.03,0.02,0,0.01,0.17,0.02,0.01,108.26,1.41,0.04,0.01,0,0,0.03,23.09,0.03,0.01,2.28,0,0.01,0.61,0.02,0.05,0,0.01,0,0,0.05,40.38,0.25,31.48,0.13,0.01,0,0.01,1.92,1.46,0,0.1,0,0,0.04,0,0.03,0.16,0.09,0.01,0.05,0.02,0.02,0.01,0,0.07,0.1,4.75,0.09,0.1,0.08,0.01,0.02,1.79,0.02,0.04,1.08,0.01,0,0,0.19,2.52,42.06,3.19,0.01,0.01,0.08,0.05,74.41,0,0,0,0.02,4.35,0.01,0.04,2.14,0.03,0.07,0.01,0,0.08,8.48,0.1,0,0.01,0,0.02,0,0.16,0.05,0.04,null,0.02,22.99,40.98],[0.03,0.02,0.27,0.05,0.07,9.5,0.18,2.06,0.25,0.02,0.03,0.15,0.77,0.06,0.1,0.18,0.29,0.09,2.43,5.53,0.05,0.12,0.57,0.04,175.14,1.19,0.05,0.01,8.08,16.81,4.75,16.73,0.08,0.9,null,12.83,1.42,0.22,0.45,0.92,9.76,0.19,13.27,0.04,0.06,0.02,0.02,13.24,0.04,7.44,0.86,1.7,2.25,0.02,0.44,9.22,4.67,0.46,11.62,0.46,0.23,0.03,0.29,9.58,5.64,0.27,0.02,6.98,0.09,0.05,0.3,0.05,0.59,15.31,42.04,5.77,3.72,1.2,0.04,0.02,2.6,3.58,0.41,0,0.11,0.04,0.04,0.41,0.05,0,0.2,15.01,0.29,0.14,0,0.52,1.69,0.44,0.08,333.36,7.33,0.21,0.18,0.01,0.03,0.15,49.67,0.83,0.02,7.49,0.02,0.04,2.53,0.19,0.51,0.04,0.31,0.03,0.01,0.61,69.17,7.33,99.11,1.54,0.07,0.02,0.24,6.75,3.31,0.01,0.68,0.02,0.04,0.26,0,1.66,1.62,1.6,0.85,0.11,0.06,0.7,0.26,0,0.15,0.7,11.66,0.66,0.85,0.42,0.15,0.12,6.44,0.24,0.32,5.79,0.14,0,0.01,0.94,6.52,93.98,13.26,0.15,0.04,0.76,1.23,239.78,0.02,0.02,0,0.2,17.66,3.66,0.29,9.03,0.12,0.7,0.14,0.02,1.21,36.9,2.17,0.04,0.05,0.05,0.44,0.19,0.84,0.6,2.76,null,0.26,36.36,110.87],[671.69,11.78,348.57,2.37,0.41,1621.56,0.92,250.95,17.55,83.88,21.29,117.01,1.67,6.95,2590.63,1.57,33.19,33.58,3.67,253.59,0.72,24.32,153.25,16.83,573.34,994.28,4.3,44.1,825.04,480.69,211.68,712.79,34.1,5.46,null,615.33,63.73,7183.95,300.95,11.22,192.19,16.75,806.93,14.07,34.01,1.66,23.2,2647.73,17.07,30.48,0.56,124.58,113.37,425,44.06,64.62,153.43,5.46,4812.9,2.67,8.88,16.95,195.95,72.6,40.53,35.75,162.22,718.14,23.2,0.4,0.72,2.45,242.14,388.45,100.75,14.25,172.37,67.2,31.91,3.16,46747.19,7452.13,369.25,437.14,14.21,43.27,113.84,7.5,279.51,23.17,209.64,2458.66,3.92,164.23,18.15,87.8,73.54,12.76,17.96,914.54,161.92,46.43,16.01,2.15,7.94,543.92,1541.76,212.49,2.27,279.1,1.57,1.83,75.94,4.6,616.39,17.07,34.91,40.58,2.34,454.88,3611.5,666.06,736.76,1104.31,35.66,13.5,44.99,694.98,5319.24,1.72,269.82,11.78,13.32,5315.09,58.69,52.59,184.23,58.86,423.87,3430.26,95.86,40.77,8.65,9.01,205.59,1038.1,448.36,1.37,1.3,2.22,2.77,177.95,495.17,24.74,0.57,176.07,13.95,12.15,4.8,9.5,617.36,22558.66,659.77,141.53,112.72,723.07,5.62,657.14,29.44,20.46,128.51,105.25,4104.08,309.72,25.38,145.13,1.44,5.93,77.53,381.34,57.65,2957.58,150.28,17.52,259,351.16,15,413.37,3.71,181.59,553.99,null,292.27,2124.92,4681.36],[5524.46,109.49,6018.15,10.92,2.41,17600.21,6.41,2570.67,415.9,354.1,198.94,5174.53,34.78,155.62,58270.94,14.06,2048.62,264.11,61.22,3658.88,4.96,538.74,2068.64,289,12532.86,26841.86,70.77,600.84,7318.28,5795.47,4965.27,9180.74,414.91,103.76,null,6661.13,1509.33,411518.48,3538.58,258.85,2240.78,204.25,10763.2,223.21,340.26,16.07,264.63,54208.72,106.08,660.89,8.31,2121.25,2751.54,4380.42,320.1,629.71,2653.9,220.4,54514.39,14.45,90.4,91.71,1557.63,1710.15,632.13,856.51,1320.11,9332.75,216.52,10.19,6.5,20.61,1471.97,5002.94,940.91,247.37,1551.77,921.42,367.46,15.64,961793.4,264144.55,4869.46,5629.58,114.37,207.99,992.25,65.85,5485.08,185.25,14217.1,21846.4,57.92,9766.45,376.14,1885.86,1364.81,386.48,220.34,6726.39,2798.3,517.76,1073.86,15.66,127.92,10771.95,10751.57,7905.57,41.28,5087.82,11.82,9.78,1290.83,149.15,8163.99,106.08,1340.67,1913.55,22.17,7903.61,23466.98,25901.96,8353.31,15750.08,264.93,69.48,426.09,7486.51,75397.48,25.24,4142.5,115.77,469,79316.92,248.32,672.13,1613.35,895.76,8555.38,65465.6,2824.74,813.86,105.67,559.88,6352.85,76315.69,4521.93,24.78,14.7,14.62,44.55,2821.98,9092.94,429.1,11.27,2780.32,491.67,185.82,67.48,83.63,7576.48,203632.18,11574.84,1501.3,3704.8,4574.6,42.84,5467.19,197.11,154.18,803.36,2049.44,36520.02,18235.54,497.65,2180.55,6.36,121.93,1090.88,5265.01,2357.73,25512.35,23959.72,1300.74,2326.17,2787.74,204.76,9346.28,31.17,2446.51,26753.7,null,3250.22,14037.39,25724.14],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.02,0,0,0,0,0,0,0,0,0,null,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0.01],[0.24,0.02,5.87,0.02,0,294.37,0.01,52.69,0.07,0,0.02,0.22,0.03,0.03,37.14,0.01,0.24,0.02,0.39,35.52,0.01,0.09,1.34,0.03,219.55,53.15,0.01,0.02,105.75,116.86,9.98,296.65,0.08,0.19,null,176.64,1.93,257.12,3.46,0.2,66.19,0.19,228.81,0.04,0.17,0,0.01,919.33,0,6.25,0.01,9.15,6.66,1.22,0.65,18.07,16.13,0.07,956.53,0.09,0.13,0,0.23,9.91,8.84,0.18,0.04,177.52,0.01,0,0.01,0,7.07,92.61,59.91,1.2,22.49,5.03,0.02,0,2243.8,437.3,4.47,0.08,0.02,0.04,0.03,0.17,0.04,0.01,1.26,661.26,0.01,0.37,0.03,0.74,12.68,0.19,0.19,720.06,17.25,1.54,0.45,0,0.01,4.87,811.44,10.75,0.01,77.77,0,0,15.64,0.05,7.74,0,0.17,0.06,0,11.08,1593.78,135.79,310.8,12.76,0.03,0,0.13,111.37,877.47,0,6.2,0,0.09,9.69,0.3,0.79,6.97,1.57,9.87,2.4,0.05,0.07,0.3,0,0.89,15.62,107.12,0.03,0.03,0.11,0.12,2.12,59.45,0.95,0.03,20.01,0.51,0,0,0.64,62.49,5800.5,125.3,0.07,0.5,21.17,0.21,414.41,0,0,0.22,1.61,1145.09,23.5,0.41,47.24,0.02,0.38,0.26,0.49,3.05,1144.37,19.83,0.19,0.16,0.61,0.1,2.02,0.23,4.3,26.63,null,3.97,1129.2,2119.1],[14.98,3.11,199.81,0.72,0.24,2989.16,1.14,2865.34,19.36,18.76,6.44,55.55,7.3,8.93,1871.74,1.93,89.17,18.66,16.7,377.56,0.95,1.93,126.66,2.57,9548.51,6282.32,1.21,3.67,753.67,849.88,994.91,3920.14,73.22,11.63,null,1208.21,739.17,18937.37,732.85,7.58,509.18,30.14,2627.3,3.92,40.79,0.48,10.19,4712.9,5.97,74.93,0.99,351.52,783.57,48.2,55.4,177.49,139.14,27.24,6062.09,0.89,2.56,2.17,180.78,583.2,76.04,23.49,51.01,1847.85,22.02,0.09,1.03,0.31,265.8,1039.9,541.78,63.71,298.23,83.06,13.68,0.45,29740.4,35490.26,3037.62,3.4,16.03,7.67,39.61,27.52,75.27,0.27,177.79,6335.66,0.39,224.98,1.64,54.35,603.59,29.63,13.76,10163.16,151,50.99,9.45,0.37,1.12,28.85,6710.34,1226.34,0.06,655.04,1.43,0.04,103.98,22.75,1719.5,5.97,49.02,2.89,0.2,297.87,14958.91,7705.11,4342.81,426,34.07,4.3,24.59,370.27,10141.78,0.33,441.31,1.92,18.57,852.76,12.05,144.41,268.33,216.98,719.12,234.32,77.19,163.66,29.46,0.68,92.9,4310.79,826.67,2.68,2.51,1.13,3.98,115.53,587.09,52.27,1.56,257.71,25.67,0.26,0.71,5.9,275.3,120191.8,1219.23,177.05,25.01,635.09,18.25,6718.85,4.65,5.12,5.3,22.28,11430.29,4280.78,7.07,344.67,0.37,34,35.29,52.63,228.21,13583.04,2687.85,58.04,171.34,343.93,42.4,112.81,2.32,541.84,4985.64,null,174.87,9921.04,23849.07],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.02,0,0,0,0,0,0,0,0,0,null,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0.01],[1177.97,14.12,495.34,3.45,0.76,2018.21,1.28,292.49,18.67,110.55,23.87,124.07,2.51,9.01,3363.34,2.25,54.55,34.5,5.54,295.99,0.98,32.48,172.03,25.49,605.77,997.95,5.77,52.11,900.51,526.46,293.24,790.8,37.83,7.79,null,696.57,73.33,11032.68,291.33,11.15,242.99,16.33,927.66,20.14,30.55,3.21,43.44,3116.37,15.34,30.64,0.8,190.63,124.43,422.07,48.81,71.75,162.12,6.41,6883.8,3.6,12.39,20.88,243.04,76.46,45,42.61,210.43,780.98,28.92,0.47,1.09,3.3,300.6,433.03,106.49,16.68,211.79,66.39,52.71,4.05,44807.83,7351.04,552.24,561.36,24.56,52.23,136.05,8.46,293.29,33.66,275.51,1887.7,4.74,213.06,16.2,119.08,91.94,19.31,26.9,950.9,177.27,54.79,23.8,3.87,12.24,650.45,1601.15,283.29,3.43,416.64,3.98,2.45,76.63,8.33,594.56,15.34,54.53,72.29,3.84,519.72,3379.49,462.31,674.5,1167.68,43.96,18.1,53.59,760.42,6280.25,2.42,372.23,17.92,19.04,12563.04,86.34,39.37,271.95,61.75,525.54,3118.42,128.41,44.79,9.96,11,272,1309.6,452.87,1.86,1.69,2.78,3.47,238.79,625.69,43.42,0.93,219.68,12.85,20.31,10.5,13.1,634.48,20011.37,762.05,166.63,131.3,899.28,5.74,608.62,33.12,30.15,166.22,148.26,3769.61,465,37.07,162.75,2.1,7.38,71.96,444.84,94.57,2876.19,203.38,27.72,262.11,250.47,13.37,548.59,5.52,195.06,584.6,null,450.05,1869.35,3730.8],[9761.79,90.06,5208.12,12.72,2.95,18154.95,7.08,2689.07,164.31,332.15,140.37,1463.41,19.85,77.27,17742.95,13.27,593.63,173.76,30.96,2641.84,5.62,395.64,1392.67,185.98,5912.92,12240.05,65,298.36,5482.55,3479.34,4437.03,5499.07,380.98,54.47,null,5499.94,611.37,258594.35,2643.24,146.18,2130.71,144.15,6937.67,143.36,224.19,18.82,194.83,30153,71.06,371.55,4.38,1221.44,1581.46,3139.07,244.26,574.42,1958.27,69.83,55120.36,10.36,75.8,83.44,1128.89,788.21,354.59,271.28,989.22,7187.83,142.55,3.31,5.76,18.16,1153.84,3578.95,710.72,93.44,1284.33,623.07,242.73,11.8,450547.56,167369.46,5243.87,5037.37,100.03,113.96,763.66,46.46,3716.28,217.66,5945.83,7889.5,37.03,5715.31,342.92,813.73,1079.38,146.36,317.84,4530.62,1844.1,382.2,294.63,16.47,81.06,6466.35,5305.72,4638.84,44.45,3467.85,12.93,8.26,818.37,100.48,5263.74,71.06,490.71,1053.2,20.32,5011.94,9807.51,4947.72,3744.74,10515.22,224.81,75.4,292.87,5454.34,49692.24,32.1,3363.26,104.11,204.43,92544.42,367.87,378.19,1122.23,405.41,5112.3,39432.95,1233.46,389.57,75.4,128.65,2130.26,24021.07,2387.6,14.12,7.75,10.12,21.32,2406.34,6662.43,296.52,10.2,2300.04,346.16,163.24,51.97,80.49,5303.61,93093.08,8824,1046.66,1893.71,5009.47,22.76,3244.59,172.27,134.43,851.73,1287.52,19686.43,9261.74,281.95,1374.56,9.72,56.17,596.45,3612.62,975.64,10961.02,7103.72,365.72,1750.33,2037.81,103.15,4549.26,29.7,1572.42,12346.17,null,4503.89,7786.32,11927.87],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,null,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0],[0.23,0.02,5.66,0.02,0,290.47,0.01,50.9,0.06,0,0.02,0.2,0.03,0.03,35.57,0.01,0.23,0.02,0.39,34.72,0.01,0.09,1.3,0.03,217.44,51.02,0.01,0.01,103.32,117.16,9.58,293.18,0.08,0.19,null,172.93,1.86,223.05,3.31,0.19,65.26,0.18,228.59,0.03,0.16,0,0.01,903.53,0,6.08,0.01,8.84,6.38,1.15,0.62,17.75,15.42,0.06,933.79,0.08,0.13,0,0.21,9.7,8.65,0.16,0.03,169.78,0.01,0,0.01,0,6.82,90.78,61.8,1.19,21.69,4.85,0.02,0,2020.36,414.74,4.29,0.08,0.02,0.04,0.03,0.16,0.04,0.01,1.19,644.02,0.01,0.34,0.03,0.7,12.13,0.18,0.2,688.81,16.49,1.46,0.43,0,0.01,4.8,785.32,11.43,0.01,74.24,0,0,15.17,0.05,7.4,0,0.16,0.06,0,10.51,1540.03,133.82,309.79,12.14,0.03,0,0.12,106.08,829.2,0,5.93,0,0.09,8.96,0.29,0.76,6.47,1.51,9.45,2.26,0.04,0.06,0.27,0,0.84,14.8,107.45,0.03,0.03,0.1,0.12,2.01,57.88,0.91,0.03,20.03,0.49,0,0,0.6,61.56,5408.35,121.7,0.07,0.49,20.48,0.2,410.33,0,0,0.19,1.51,1139.01,22.46,0.39,46.85,0.02,0.37,0.25,0.47,2.95,1118.87,18.66,0.18,0.15,0.59,0.09,1.93,0.21,4.12,24.26,null,3.79,1119.2,2108.57],[5.88,1.37,192.95,0.33,0.05,4334.34,0.62,1173.39,5.92,2.5,1.64,16.36,4.17,1.32,1188.89,1.01,20.46,8.04,11.81,533.8,0.44,2.23,56.69,2.94,10028.71,3152.34,0.4,0.91,1141.71,1307.31,430.2,5487.47,14.33,5.26,null,1769.76,124.74,8469.8,233.68,3.45,723.46,8.74,3821.05,2.07,13.16,0.27,4.51,6994.94,1.2,101.43,0.63,282.74,298.61,39.58,29.3,246.2,198.05,7.05,8874.25,1.32,3.36,0.57,50.02,298.57,127.93,11.35,11.43,2852.71,7.86,0.03,0.63,0.13,171.96,1505.03,785.75,42.37,460.55,126.48,3.42,0.12,40654.45,18017.27,425.73,2.22,7.46,8.93,11.47,16.87,26.36,0.31,54.26,7919.33,0.21,114.96,1.32,16.82,273.93,23.37,5.67,9969.36,216.82,46.78,14.28,0.39,0.85,39.62,7257.65,227.05,0.29,932.72,0.37,0.06,135.15,5.7,421.27,1.2,11.37,1.66,0.15,286.08,17893.18,1794.19,5087.43,184.2,7.52,0.9,10.17,774.86,14077.12,0.15,197.37,1.68,4.96,348.39,7.11,52.3,121.68,98.79,280.94,93.86,26.23,35.16,14.78,0.13,60.26,920.76,1350.7,1.72,1.5,1.44,1.76,63.09,957.45,17.7,1.08,392.83,11.56,0.1,0.13,9.33,397.41,135132.28,1715.46,41.3,15.91,282.98,11.3,6755.2,1.46,2.36,7.95,25.95,16902.66,2186.51,5.03,532.16,0.54,22.3,15.72,25.37,95.18,16128.83,1334.32,9.51,62.28,103.96,14.59,69.44,3.56,172.05,779.42,null,76.93,10667.71,25423.34],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.02,0,0,0,0,0,0,0,0,0,null,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0.01],[1849.59,25.9,843.69,5.81,1.17,3638.18,2.2,543.41,36.21,194.41,45.16,241.02,4.18,15.96,5953.7,3.82,87.74,68.07,9.21,549.46,1.7,56.79,325.22,42.32,1179.01,1992.04,10.08,96.19,1725.3,1006.92,504.83,1503.44,71.95,13.26,null,1311.88,137.05,18216.48,592.25,22.37,435.09,33.08,1734.56,34.21,64.56,4.87,66.64,5763.16,32.4,61.12,1.35,315.13,237.78,847.06,92.86,136.37,315.55,11.88,11694.24,6.27,21.28,37.82,438.97,149.05,85.52,78.37,372.61,1499.1,52.11,0.86,1.81,5.75,542.62,821.52,207.2,30.92,384.12,133.58,84.6,7.22,91561.08,14804.85,921.41,998.48,38.75,95.51,249.86,15.96,572.77,56.81,485.13,4346.76,8.65,377.3,34.33,206.84,165.48,32.06,44.79,1865.43,339.18,101.21,39.82,6.02,20.18,1194.14,3142.62,494.36,5.7,695.93,5.54,4.28,152.55,12.93,1210.89,32.4,89.45,112.86,6.18,974.54,6990.84,1128.65,1411.44,2271.84,79.62,31.6,98.6,1455.5,11600.28,4.14,642.02,29.7,32.34,17875.53,145.02,91.97,456.2,120.6,949.34,6548.59,224.29,85.56,18.62,20.03,477.57,2347.68,901.15,3.24,2.99,5,6.24,416.89,1120.76,68.16,1.49,395.64,26.79,32.46,15.3,22.59,1251.72,42568.15,1421.62,308.14,243.95,1622.34,11.36,1265.73,62.56,50.6,294.73,253.67,7873.42,774.45,62.45,307.88,3.54,13.31,149.5,826.1,152.17,5833.6,353.65,45.25,521.07,601.55,28.38,961.88,9.24,376.63,1138.38,null,742.26,3994.52,8413.1],[15321.19,199.43,11224.05,23.62,5.39,35765.99,13.49,5266.45,573.18,686.74,338.63,6570.77,54.4,232.86,76081.59,27.35,2553.15,436.28,92.24,6293.1,10.59,934.43,3455.8,474.74,18360.42,38836.85,135.84,891.81,12767.21,9272.51,9412.23,14656.76,796.66,156.84,null,12156.01,2097.27,669955.58,6176.76,404.26,4371.58,348.2,17727.18,363.88,563,34.9,457.89,84203.54,176.74,1030.96,12.65,3338.44,4323.48,7509.97,563.3,1203.54,4603.85,279.89,109676.82,24.8,166.21,175.12,2672.17,2488.34,987.64,1099.46,2305.14,16506.16,358.73,13.49,12.25,38.78,2621.29,8575.48,1650.52,339.46,2834.85,1543.53,605.8,27.39,1409258.18,430961.6,10112.33,10665.67,214.27,319.63,1751.37,112.24,9247.93,403.19,19858.36,29600.82,94.65,15458.26,718.89,2677.51,2446.36,517.56,535.86,11176.48,4636.54,899.33,1326.09,32.14,208.61,17210.31,15987.02,12540.33,85.72,8538.14,24.76,18.04,2104.63,249.13,13402.81,176.74,1804.24,2950.62,42.49,12907.06,33041.97,30629.82,12001.08,26285.33,489.44,144.98,717.47,12943.1,124969.33,57.11,7481.25,219.77,673.86,171883.89,616.96,1047.88,2730.9,1299.07,13621.29,104711.98,4024.56,1191.38,180.73,688.32,8333.6,96987.6,6861.75,38.8,22.41,24.72,65.5,5223.16,15711.51,723.09,21.51,5079.61,837.38,348.74,118.41,164.11,12863.2,293515.5,20380.08,2538.93,5590.35,9587.71,65.31,8657.4,368.63,288.47,1656.2,3334.03,56144.13,27424.41,778.75,3548.19,16.17,177.35,1684.33,8855.32,3303.45,36305.24,29903.31,1666.48,4064.53,4820.56,304.19,13806.07,60.88,4012.25,38749.01,null,7770.13,21741.13,37542.53],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,null,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0],[0.48,0.04,11.53,0.03,0,584.83,0.02,103.59,0.13,0.01,0.03,0.42,0.05,0.06,72.71,0.02,0.46,0.03,0.78,70.24,0.02,0.18,2.64,0.06,436.99,104.16,0.01,0.03,209.06,234.01,19.56,589.82,0.16,0.38,null,349.56,3.8,480.17,6.77,0.4,131.45,0.38,457.4,0.07,0.33,0,0.01,1822.86,0.01,12.34,0.03,17.98,13.04,2.38,1.27,35.82,31.55,0.13,1890.33,0.17,0.26,0,0.44,19.61,17.49,0.35,0.07,347.29,0.02,0,0.03,0.01,13.89,183.39,121.73,2.39,44.18,9.87,0.04,0,4264.16,852.01,8.76,0.16,0.04,0.08,0.06,0.33,0.08,0.03,2.45,1305.27,0.02,0.71,0.06,1.44,24.81,0.37,0.39,1408.87,33.74,3,0.87,0,0.02,9.67,1596.69,22.17,0.02,152,0,0.01,30.8,0.1,15.14,0.01,0.33,0.13,0,21.59,3133.6,269.62,620.59,24.9,0.07,0,0.24,217.45,1706.67,0,12.13,0.01,0.17,18.65,0.59,1.56,13.44,3.08,19.32,4.66,0.09,0.13,0.58,0.01,1.73,30.43,214.57,0.06,0.06,0.22,0.23,4.13,117.33,1.86,0.06,40.04,1.01,0,0.01,1.25,124.05,11209.37,246.99,0.14,0.99,41.65,0.41,824.75,0.01,0.01,0.41,3.11,2284.06,45.97,0.8,94.09,0.05,0.74,0.51,0.96,6,2263.23,38.48,0.37,0.31,1.2,0.19,3.95,0.44,8.42,50.88,null,7.76,2248.41,4227.67],[20.81,4.47,392.75,1.04,0.29,7334.24,1.75,3988.78,24.88,21.13,7.97,71.24,11.41,10.17,3063.03,2.92,104.82,26.48,28.53,912.94,1.39,4.15,182.78,5.52,19594.91,9378.03,1.61,4.44,1902.42,2157.45,1411.2,9419.8,86.97,16.69,null,2982.86,850.28,27317.28,959.03,11,1234.59,38.67,6432.97,5.92,53.53,0.75,14.51,11726.58,7.11,176.52,1.61,633.92,1077.33,87.71,84.3,423.11,337.96,32.68,14961.33,2.22,5.94,2.7,228.71,878.82,203.8,34.24,61.76,4708.51,29.63,0.12,1.65,0.44,436.57,2548.56,1329.48,105.89,760.18,209.72,16.62,0.56,70536.82,53379.85,3468.37,5.61,23.42,16.64,50.57,44.33,100.28,0.58,227.42,14273.26,0.6,337.63,2.96,70.36,873.86,52.44,19.46,20161.43,368.47,97.76,24.01,0.77,1.97,68.54,13981.19,1448.18,0.35,1591.74,1.79,0.11,239.52,28.11,2126.77,7.11,58.84,4.53,0.35,583.86,32887.16,9412.09,9447.76,611.54,41.22,5.18,34.52,1139.21,24249.62,0.49,629.26,3.6,23.46,1200.75,19.13,195.87,388.24,315.19,994.04,326.25,101.55,195.72,43.88,0.81,151.82,4987.62,2185.12,4.39,4.01,2.58,5.7,178.65,1549.1,68.92,2.63,650.94,37.05,0.35,0.82,15.23,673.72,255866.27,2938.73,216.26,40.79,915.77,29.44,13484.73,6.07,7.44,13.29,48.25,28354.02,6438.79,12.09,878.7,0.92,56.11,50.86,77.38,320.61,29751.55,3918.35,67.73,231.71,445.53,55.94,181.52,5.88,709.32,5645.04,null,250.81,20607.69,49289.14],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.02,0,0,0,0,0,0,0,0,0,null,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0,0,0,0,0,0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,null,0,0,0.01],[24541.16,456.43,21067.62,47.15,14.99,66098.04,30.05,17906.97,1205.9,1819.02,916.11,11248.42,131.43,364.08,155344.5,71.82,5918.37,1235.16,201.76,11621.21,23.24,1515.75,7048.48,1295.77,52340.39,91376.59,280.17,2381.63,24164.97,18377.35,20207.75,36653.01,2216.34,284.72,18717.82,23872.72,6505.88,1563430.13,14703.85,653.33,9055.88,835.51,38201.86,1055.12,1437.23,77.56,1279.49,160132.66,490.37,1857.77,29.91,7375.49,10024.16,13979.78,1316.62,2684.03,7406.2,725.34,203517.28,55.92,348.72,558.85,8465.42,5194.91,1872.25,2319.17,6692.24,34162.37,1187.08,29.62,26.17,84.31,5703.63,18085.43,4748.03,823.96,6472.12,3358.03,1758.92,68.59,2787306.6,897429.63,24453.56,17200.35,566.44,804.79,4962.49,310.23,31989.13,678.81,33655.45,70336.82,178.57,42891.8,1063.34,4533.39,6203.2,1348.07,1039.14,46406.47,8439.27,1685.68,3186.8,75.93,526.54,26090.82,48157.33,26609.55,148.48,16480.41,65.61,36.15,3816.98,567.61,31546.78,490.37,3702.34,4369.65,102.75,26231.77,109419.22,78185.91,32377.55,51095.71,1368.02,380.17,1474.15,25397.44,236801.96,79.49,18560.34,552.62,994.21,298536.91,1103.74,2435.96,5325.52,2989.44,26995.54,200214.34,10901.72,3379.62,518.31,859.57,19544.36,219051.34,14405.32,88.32,54.54,56.56,118.41,8901.36,26929.84,2015.54,45.2,8943.06,2067.33,826.31,341.44,326.33,22221.54,891712.71,35156.06,6775.05,12996.21,18532.4,184.07,31985.67,980.12,746.44,2992.11,5158.41,134991.35,77659.53,1594.21,7093.02,34.41,491.06,3476.25,17518.05,5517.15,97927.36,71924.64,2281.65,9810.44,13620.94,815.55,22517.56,126.05,9723.89,90704.7,32.04,13045.7,64832.12,132432.55],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1],[0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1],[0,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0,1,0,1,0,0,1,0,0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,1,0,0,0,1],[12130.29,11.67,3271.91,0.38,0.38,18382.24,1.45,806.08,105.64,48.05,79.93,58.44,5.52,7.56,73054.3,0.95,526.78,64.74,11.73,1328.82,0,144.58,514.93,116.66,2026.79,7730.72,22.63,90.42,1901.51,3334.46,9052.38,13134.82,124.92,64.04,4938.2,5662.67,487.08,37985.43,1430.26,64.09,4720.73,56.38,7487.08,33.91,57.07,1.32,39.74,67125.39,21.35,383.04,3.39,868.27,795.72,236.07,140.56,184.56,656.01,28.4,29370.26,14.3,65.2,38.01,573.04,1175.48,544.97,212.15,343.8,15248.5,94.47,7.56,1.34,7.19,374.52,5496.08,2507.97,138.78,2631.39,152.46,77.74,6.82,514304.74,129427.86,1437.08,863.71,19.37,18.12,353.99,12.63,3162.48,26.81,1443.95,16203.16,30.5,2614.06,5.71,728.31,3590.84,90.21,62.66,5948.58,4016.69,699.17,235.02,1.29,8.53,13491.8,8873.54,2634.43,19.55,2097.64,2,23.17,978.52,32.11,3134.9,14.3,494.38,644.99,2.87,3371.62,54403.17,31497.75,1664.08,6072.63,43.59,10.34,180.23,4166.5,237594.99,2.65,15503.14,11.98,24.05,45763.11,2.01,276.94,3749.2,297.44,2452.19,14029.81,562.69,258.53,11.44,7.2,1138.67,16610.76,716.84,1.79,1.79,1.8,9.44,679.67,3849.21,112.52,0,4076.89,75.94,31.89,15.55,57.2,7203.49,97365.06,4195.97,317.91,1179.12,7971.6,25.12,1943.49,30.87,20.7,20.65,254.61,54907.08,13787.66,1189.33,665.19,1.32,26.89,242.24,751.51,456.67,11901.1,7102.33,44.64,335.72,662.33,94.72,2942.3,16.86,904.53,17146.9,0,1620.47,17429.34,7993.34],[1764.37,2,387.42,0,0,3213.1,0,54.08,2.73,2.03,1.97,2.75,0,0,8790.19,0,3.31,3.53,0,187.15,0,15.31,49.72,2.52,186.29,282.35,0,2.26,274.59,469.24,1073.83,1547.84,2.62,1.88,556.15,938.94,3.89,3732.66,145.99,8.41,661.27,2.42,927.89,0.25,1.55,0,0,9595.37,0,47.52,0,49.25,36.84,102.74,8.74,23.71,96.7,0,4176.26,1.84,8.22,1.45,5.68,155.99,82.25,4.71,3.65,1949.12,0.66,0,0,0,35.38,646.18,345.05,7.95,1213.42,9.88,0.52,0,61261.88,13790.94,155.47,79.91,0,0,12.77,0,1.92,0.92,31.35,2280.59,9.78,17.52,0,17.82,444.25,1.25,6.83,513.67,576.31,81.63,0.72,0,0,1863.25,1216.63,70.26,1.08,319.49,0,2.8,132.51,0.45,124.61,1.84,7.49,75.51,0,213.06,7333.99,3358.06,175.45,720.42,1.07,0.44,13.26,659.18,34612.09,0,1693.34,0.86,6.02,5821.78,0,46.05,570.05,31.92,167.26,727.49,3.41,1.96,0,0,39.1,120.59,96.46,0,0,0,0,44.21,573.3,1.58,0,573.8,0,1.43,0,7.82,1093.29,5393.9,578.28,8.8,31.42,1107.97,2.19,173.88,0,0.36,6.58,12.04,8010.33,169,167.51,84.29,0,1.35,42.24,108.65,54.02,1929.58,55.65,5.45,9.24,20.21,1.03,39.49,2.21,63.8,1804.76,0,223.69,3052.59,954.85],[4541.47,12.36,1903.13,0.55,0.49,8472.11,0.86,1295.81,111.6,69.7,56,703.4,11.4,10.85,23191.07,3.32,484.76,89.12,21.49,3107.8,0.18,149.8,925.75,136.44,4398.68,7723.43,12.7,115.59,6738.49,5993.04,3665.19,5928.98,147.19,27.77,6356.56,5100.8,725.97,51523.84,1029.73,202.76,1264.87,56.88,7259.39,69.05,47.24,3.43,52.49,41114.97,32.5,312.09,3.8,659.6,1141.62,898.31,120.6,181.56,2217.35,34.59,52020.34,4.43,37.69,58.75,1216.21,338.48,390.8,210.78,437.98,5466.02,180.98,1.55,1.68,4.31,402.8,4928.84,1224.98,99.55,1181.7,522.02,84.21,1.47,493608.34,103306.43,1848.97,1320.08,32.37,31.65,493.64,26.49,4029.74,19.99,1544.97,12474.75,45.18,3285.34,19.1,567.77,961.81,66.16,59.47,7706.18,2317.16,97.51,190.67,1.44,51.24,3973.08,10584.93,1438.67,7.99,4511.05,0.85,2.98,638.14,14.58,3082.07,32.5,225.88,322.98,4.27,3342.91,25494.02,23449.43,2981.82,11549.61,85.81,16.41,194.12,7924.47,20973.68,1.06,2284.66,35.12,30.31,46757.2,2.78,247.07,513.3,329.78,2133.68,23465.41,606.63,287.11,30.93,6.1,1047.13,11923,3645.76,7.5,3.81,5.59,21.19,603.58,6996.41,180.63,1.6,1907.46,68.13,31.87,16.91,60.35,7681.11,68256.85,6706.61,472.99,735.3,2070.03,13.3,3088.99,71.85,35.44,60.36,512.89,16634.77,9458.94,154.56,1965.42,1.59,25.64,318.22,887.53,381.16,16981.79,4944.35,64.63,388.81,973.74,57.8,1985.84,23.04,764.66,20398.56,1.12,1754.16,8481.27,19075.68],[304.53,0.13,29.85,0.01,0,1123.71,0.01,37.36,0.57,0.52,0.14,8.59,0.09,0.09,173.43,0.03,0.36,0.49,0.62,210.68,0,7.6,30.34,0.12,238.31,141.18,0.03,0.17,774.52,748.5,66.93,567.38,0.88,0.48,459.21,646.77,5.56,518.25,30.09,9.61,119.16,0.73,575.24,0.12,0.34,0.01,0.23,4448.01,0.12,17.66,0.07,27.6,24.37,20.31,2.08,19.39,177.38,0.06,4323.76,0.12,1.1,0.12,3.71,13.26,36.06,1.34,1.26,369.15,0.5,0.01,0.02,0.06,23.67,344.05,130.27,2.87,63.36,20.48,0.15,0.01,11753.04,1038.52,15.99,51.32,0.24,0.4,1.31,0.35,5.19,0.53,13.27,1471.55,1.87,8.75,0.43,5.02,26.18,0.1,0.54,928.84,185.06,2.57,0.15,0.01,0.25,323.02,2238.99,8.41,0.05,293.53,0.01,0.1,37.98,0.1,56.18,0.12,0.83,6.34,0.01,70.4,5883.83,188.58,345.57,337.88,0.59,0.14,4.68,799.56,2608.14,0.01,28.44,0.1,0.56,3487.25,0.26,9.93,12.99,8.66,60.94,507.34,1.53,0.77,0.16,0.1,6.2,43.54,475.37,0.12,0.07,0.14,0.69,12.06,430.04,0.63,0.01,126.26,0.14,0.09,0.04,2.09,797.88,6918.9,604.33,1.71,3.25,167.56,0.26,397.18,0.2,0.15,3,13.43,2017.71,7.17,3.64,128.33,0.04,0.29,5,27.87,7.73,2434.1,11.82,0.26,2.79,7.94,0.53,12.75,0.82,16.68,56.99,0.01,102.24,1921.12,3146.45],[32526562,2896679,39666519,55538,70473,25021974,91818,43416755,3017712,23968973,8544586,9753968,388019,1377237,160995642,284215,9495826,11299192,359287,10879829,62004,774830,10724705,3810416,2262485,207847528,423188,7149787,18105570,11178921,15577899,23344179,35939927,520502,4900274,14037472,17948141,1376048943,48228704,788474,4620330,4807850,22701556,4240317,11389562,1165300,10543186,77266814,5669081,887861,72680,10528391,16144363,91508084,6126583,845060,5227791,1312558,99390750,104460,892145,5503457,64395345,1725292,1990924,3999812,80688545,27409893,10954617,56186,106825,169885,16342897,12608590,1844325,767085,10711067,8075060,9855023,329425,1311050527,257563815,79109272,36423395,4688465,8064036,59797685,2793335,126573481,7594547,17625226,46050302,112423,50293439,3892115,5939962,6802023,1970503,5850743,2135022,4503438,6278438,2878405,567110,2078453,24235390,17215232,30331007,363657,17599694,418670,52993,4067564,1273212,127017224,104460,4068897,2959134,625781,34377511,27977863,53897154,2458830,28513700,16924929,4528526,6082032,19899120,182201962,55070,25155317,5210967,4490541,188924874,4668466,3929141,7619321,6639123,31376670,100699395,38611794,10349803,3683238,2235355,19511324,143456918,11609666,184999,109462,193228,190344,31540372,15129273,8850975,96471,6453184,5603740,5426258,2067526,583591,10787104,54490406,12339812,46121699,20715010,40234882,542975,1286970,9779426,8298663,18502413,8481855,53470420,67959359,1184765,7304578,106170,1360088,11253554,78665830,5373502,39032383,44823765,9156963,64715810,321773631,3431555,29893488,264652,31108083,93447601,106291,26832215,16211767,15602751],["189","19","75","8.3","6.5","370","7.5","25","41","6","7.6","69","18","18","225","0","55","9.4","25","60","0","155","117","37","356","41","58","24","52","122","380","212","5.1","139","391","152","16","67","31","35","379","11","159","13","7","6.2","5.2","324","6","378","11","60","52","15","43","172","65","18","192","124","51","5.6","8.2","465","174","99","8.1","160","4.5","164","5.4","51","25","177","373","93","194","43","9.3","2.4","217","395","16","43","7.2","4","5.8","4.6","17","7","89","233","551","80","22","144","182","41","13","788","308","40","56","6.1","13","236","193","89","53","57","8.8","344","107","22","21","124","152","428","21","107","551","365","489","156","5.8","7.4","51","95","322","58","561","6.3","8.4","270","1.1","50","432","41","119","322","19","23","1.6","34","84","80","56","8.8","7.4","11","97","12","139","21","9.5","307","44","6.5","7.2","89","274","834","146","12","65","88","33","565","9.2","7.4","20","87","306","172","498","52","15","17","37","18","70","202","91","1.6","10","3.2","30","79","63","29","137","7.7","48","391","242"],[61000,550,30000,5,5,93000,7,11000,1200,1400,650,6800,71,250,362000,0,5200,1100,90,6600,0,1200,13000,1400,8000,84000,240,1700,9400,14000,59000,49000,1800,720,19000,21000,3000,918000,15000,270,18000,530,36000,560,800,72,550,250000,340,3400,8,6300,8400,13000,2700,1500,3400,240,191000,130,450,310,5300,8000,3500,4000,6500,44000,490,92,6,87,4200,22000,6900,710,21000,3500,920,8,2840000,1020000,13000,16000,340,320,3500,130,21000,530,16000,107000,620,40000,860,8500,12000,800,750,17000,14000,2500,1600,34,270,57000,33000,27000,190,10000,37,180,4300,280,27000,130,6200,13000,130,37000,154000,197000,12000,44000,980,340,3100,19000,586000,32,141000,330,380,510000,51,2000,33000,2700,37000,324000,7200,2400,60,760,16000,115000,6600,16,8,22,180,3800,21000,1900,9,20000,2500,350,150,520,30000,454000,18000,5500,13000,35000,180,7300,900,610,3600,7400,164000,117000,5900,3800,16,230,4200,14000,3800,79000,41000,140,6600,10000,1000,24000,170,8900,128000,8,13000,63000,38000],["Expert opinion","Expert opinion","Standard adjustment","Standard adjustment","Standard adjustment","Expert opinion","Standard adjustment","Standard adjustment","Expert opinion","Standard adjustment","Standard adjustment","Expert opinion","Standard adjustment","Standard adjustment","Expert opinion","Standard adjustment","Expert opinion","Standard adjustment","Standard adjustment","Expert opinion","Standard adjustment","Standard adjustment","Expert opinion","Expert opinion","Expert opinion","Standard adjustment","Standard adjustment","Expert opinion","Expert opinion","Expert opinion","Prevalence","Expert opinion","Standard adjustment","Expert opinion","Expert opinion","Expert opinion","Standard adjustment","Standard adjustment","Standard adjustment","Expert opinion","Expert opinion","Standard adjustment","Expert opinion","Standard adjustment","Standard adjustment","Standard adjustment","Standard adjustment","Expert opinion","Standard adjustment","Standard adjustment","Standard adjustment","Expert opinion","Expert opinion","Recapture","Expert opinion","Expert opinion","Inventory","Standard adjustment","Prevalence","Standard adjustment","Standard adjustment","Standard adjustment","Inventory","Expert opinion","Prevalence","Expert opinion","Standard adjustment","Prevalence","Standard adjustment","Standard adjustment","Standard adjustment","Standard adjustment","Standard adjustment","Expert opinion","Expert opinion","Standard adjustment","Expert opinion","Expert opinion","Standard adjustment","Standard adjustment","Prevalence","Prevalence","Standard adjustment","Recapture","Standard adjustment","Standard adjustment","Standard adjustment","Standard adjustment","Standard adjustment","Standard adjustment","Expert opinion","Expert opinion","Standard adjustment","Inventory","Standard adjustment","Expert opinion","Prevalence","Standard adjustment","Standard adjustment","Expert opinion","Expert opinion","Expert opinion","Standard adjustment","Standard adjustment","Expert opinion","Expert opinion","Prevalence","Standard adjustment","Standard adjustment","Expert opinion","Standard adjustment","Expert opinion","Expert opinion","Expert opinion","Expert opinion","Standard adjustment","Expert opinion","Prevalence","Expert opinion","Expert opinion","Expert opinion","Prevalence","Standard adjustment","Expert opinion","Recapture","Standard adjustment","Standard adjustment","Expert opinion","Prevalence","Standard adjustment","Standard adjustment","Standard adjustment","Standard adjustment","Prevalence","Standard adjustment","Standard adjustment","Expert opinion","Standard adjustment","Standard adjustment","Prevalence","Standard adjustment","Standard adjustment","Standard adjustment","Standard adjustment","Standard adjustment","Standard adjustment","Prevalence","Expert opinion","Standard adjustment","Standard adjustment","Expert opinion","Standard adjustment","Expert opinion","Expert opinion","Standard adjustment","Expert opinion","Standard adjustment","Standard adjustment","Standard adjustment","Standard adjustment","Expert opinion","Expert opinion","Expert opinion","Standard adjustment","Expert opinion","Prevalence","Standard adjustment","Expert opinion","Standard adjustment","Standard adjustment","Standard adjustment","Standard adjustment","Prevalence","Prevalence","Expert opinion","Expert opinion","Standard adjustment","Standard adjustment","Standard adjustment","Inventory","Standard adjustment","Prevalence","Expert opinion","Expert opinion","Recapture","Standard adjustment","Standard adjustment","Expert opinion","Expert opinion","Standard adjustment","Prevalence","Expert opinion","Recapture","Prevalence","Prevalence"],[3800,18,2000,0,0,5700,0,440,54,50,30,240,3,4,20000,0,110,28,8,410,0,61,710,44,320,3800,1,74,610,750,2600,3800,58,0,1300,1300,130,37000,730,35,1000,16,2100,19,17,3,14,18000,10,170,0,230,380,580,150,99,300,16,7300,8,22,16,200,450,140,140,180,2100,21,0,0,0,330,1200,380,30,1100,220,31,0,136000,36000,640,1000,11,4,100,6,600,26,630,6100,29,1500,14,390,690,36,31,540,1100,130,76,1,11,3900,2000,1500,5,600,2,0,230,21,1200,8,170,440,0,2000,7400,6000,570,2400,35,8,150,1200,33000,1,4900,9,13,25000,1,83,2000,150,1700,14000,280,74,1,47,690,4600,410,1,0,2,12,170,1300,61,0,1200,120,15,0,1,2200,16000,1,180,660,1900,10,260,27,22,200,1,8400,3900,430,230,1,9,230,640,180,3200,1200,6,250,370,41,950,18,440,5500,0,750,2800,2400],[30000,150,11000,5,2,34000,7,4400,270,640,200,1900,32,80,131000,0,1300,350,19,2000,0,570,4200,560,3200,24000,97,520,2200,4100,26000,18000,740,160,7200,6200,980,258000,4900,91,6900,170,12000,200,170,42,160,91000,130,1100,1,2000,2700,4400,740,560,1300,51,77000,54,150,100,1800,2700,1100,1100,1800,13000,130,33,1,45,1500,6000,2300,160,8600,1200,330,3,860000,384000,5600,7100,130,94,1400,34,7700,340,5600,35000,260,15000,320,3200,3700,210,390,5900,3800,890,420,5,93,20000,11000,8700,51,3100,11,86,1200,86,9000,54,1500,5100,36,13000,56000,66000,4400,14000,360,150,1100,4200,198000,11,49000,110,150,231000,17,590,14000,710,13000,100000,2000,730,24,120,4800,31000,1900,4,1,8,56,1100,7300,740,2,6300,870,130,53,260,9300,175000,5400,2000,4200,8800,53,2800,340,220,1100,3400,56000,32000,2200,1200,6,66,1100,5700,1100,23000,11000,52,2500,3900,310,9000,58,3100,28000,8,5800,21000,14000],[33000,170,13000,5,2,40000,7,4900,320,690,230,2100,35,84,151000,0,1400,380,27,2400,0,630,4900,600,3500,28000,98,590,2800,4900,28000,21000,800,160,8400,7400,1100,296000,5600,130,7900,180,15000,210,180,45,170,109000,140,1200,1,2300,3100,5000,890,660,1600,67,85000,62,170,120,2000,3200,1300,1300,2000,15000,150,34,1,45,1800,7300,2700,190,9700,1400,360,3,995000,420000,6200,8100,140,98,1500,40,8300,370,6300,41000,280,16000,330,3600,4400,250,420,6500,4900,1000,500,6,100,24000,13000,10000,56,3700,13,87,1400,110,10000,62,1700,5500,36,15000,64000,72000,5000,16000,400,150,1200,5400,231000,12,54000,120,160,255000,18,670,16000,860,15000,114000,2300,810,25,170,5500,36000,2300,5,1,9,68,1300,8600,800,2,7500,1000,140,53,260,12000,191000,5400,2200,4800,11000,63,3100,360,250,1300,3400,64000,36000,2700,1500,7,75,1300,6400,1300,27000,12000,58,2700,4200,350,9900,76,3500,34000,8,6500,24000,16000],[4000,32,900,0,0,4400,0,440,54,46,11,360,2,16,17000,0,220,41,3,320,0,47,830,44,300,4300,0,62,440,970,3500,2500,55,84,1000,1400,120,38000,580,0,920,23,2100,17,38,0,22,15000,13,200,0,330,340,770,120,66,330,0,11000,7,30,6,200,620,150,210,220,2100,5,1,0,1,290,1700,460,30,1100,160,31,0,119000,39000,420,810,15,20,110,6,790,22,570,6800,34,2300,57,480,1500,39,24,630,910,120,76,1,11,4000,2200,1300,11,500,0,1,310,0,1300,7,170,410,10,2000,7400,7700,630,2900,29,16,140,1600,34000,0,6000,16,13,21000,0,79,1600,150,1700,17000,260,110,0,9,700,4400,430,0,0,1,7,130,1600,74,0,1300,62,9,10,1,3100,17000,1,210,590,2500,8,260,46,19,220,1,9500,2700,490,230,1,9,85,600,190,3800,1300,3,300,350,39,1400,0,490,5800,0,790,3200,2600],[24000,340,16000,0,3,49000,0,5700,850,710,410,4300,35,150,194000,0,3600,650,60,3800,0,530,6900,780,4200,52000,150,1000,6100,7800,27000,26000,970,480,9700,12000,1700,585000,8700,150,8700,320,19000,330,580,28,350,126000,190,1900,7,3800,5000,7600,1600,720,1500,170,95000,61,250,180,3000,4200,2000,2500,4300,26000,330,58,5,42,2100,13000,3800,490,9900,1900,530,5,1730000,559000,6100,6800,180,200,1800,83,12000,140,8800,59000,300,22000,470,4500,6600,510,310,9700,8100,1400,1000,28,160,29000,18000,16000,120,5900,24,95,2600,170,15000,61,4300,6700,84,20000,83000,117000,6400,25000,550,170,1700,12000,322000,20,81000,190,200,234000,33,1200,15000,1700,21000,194000,4600,1500,35,580,10000,74000,3800,11,7,11,110,2500,11000,1000,7,11000,1400,200,85,260,15000,246000,13000,3100,8100,22000,110,3900,490,350,2100,4000,90000,78000,2700,2100,8,140,2800,7500,2300,48000,27000,83,3600,5800,650,12000,89,4900,88000,0,5500,36000,19000],[28000,370,17000,0,3,53000,0,6200,910,750,420,4700,37,160,211000,0,3800,690,63,4100,0,580,7700,820,4500,57000,150,1100,6600,8800,31000,28000,1000,560,11000,14000,1900,622000,9300,150,9600,350,22000,340,620,28,370,142000,200,2100,7,4100,5300,8400,1800,790,1800,170,106000,68,280,190,3200,4800,2200,2700,4500,29000,340,58,5,42,2300,15000,4200,520,11000,2100,560,5,1850000,597000,6500,7600,200,220,2000,89,13000,160,9400,66000,340,24000,530,5000,8000,550,340,10000,9000,1500,1100,29,170,33000,20000,17000,130,6400,24,95,2900,170,16000,68,4500,7100,94,22000,90000,125000,7100,28000,580,180,1800,14000,355000,20,87000,200,210,255000,33,1300,17000,1900,23000,211000,4800,1600,35,590,11000,79000,4300,11,7,12,120,2600,12000,1100,7,12000,1500,210,95,260,18000,263000,13000,3300,8700,25000,120,4200,540,370,2300,4000,100000,81000,3200,2300,9,150,2900,8100,2500,52000,29000,86,3900,6200,690,14000,89,5400,94000,0,6300,39000,22000],[7800,50,2900,0,0,10000,0,880,110,96,41,610,4,20,37000,0,330,70,10,740,0,110,1500,88,620,8100,1,140,1000,1700,6100,6200,110,84,2300,2700,250,75000,1300,35,1900,40,4200,36,55,3,36,33000,23,370,0,560,720,1400,280,170,630,16,18000,15,52,21,400,1100,280,340,400,4200,27,1,0,1,620,2900,830,61,2300,380,62,0,255000,75000,1100,1800,26,24,210,11,1400,47,1200,13000,62,3800,71,880,2100,75,56,1200,2000,250,150,2,22,7900,4100,2800,16,1100,2,1,550,21,2400,15,350,850,10,4000,15000,14000,1200,5200,64,25,300,2800,67000,1,11000,25,26,46000,1,160,3600,300,3400,31000,550,190,1,56,1400,9000,840,1,0,3,19,300,2900,130,0,2500,180,24,10,1,5300,33000,1,390,1200,4400,18,520,73,41,420,1,18000,6600,920,460,2,18,310,1200,370,7000,2500,9,550,720,80,2300,18,940,11000,0,1500,6000,5000],[54000,500,27000,5,5,83000,7,10000,1100,1300,610,6200,67,230,325000,0,4900,1000,79,5800,0,1100,11000,1300,7400,76000,240,1600,8300,12000,53000,43000,1700,640,17000,19000,2700,843000,14000,240,16000,490,32000,520,750,69,510,217000,320,3000,8,5800,7700,12000,2400,1300,2800,220,173000,120,400,290,4900,6900,3200,3600,6100,40000,460,91,6,86,3500,19000,6000,650,18000,3100,850,8,2590000,942000,12000,14000,310,300,3300,120,20000,480,14000,94000,560,36000,790,7700,10000,730,700,16000,12000,2300,1500,33,250,49000,29000,24000,180,8900,35,180,3800,260,24000,120,5800,12000,120,33000,139000,183000,11000,39000,910,310,2800,16000,519000,31,130000,300,350,465000,50,1800,29000,2400,34000,294000,6600,2200,59,700,15000,106000,5700,15,8,19,170,3500,18000,1700,9,17000,2300,330,140,520,24000,422000,18000,5100,12000,31000,160,6800,830,570,3200,7400,146000,110000,5000,3300,14,210,3900,13000,3400,72000,38000,130,6000,9700,950,21000,150,8000,116000,8,11000,57000,33000],["37","0.4","8.2","0.68","0.54","73","1.6","1.9","3.5","0.2","0.94","0.6","1.4","0.55","45","0.33","5.5","0.57","3.3","12","0","19","4.8","3.1","90","3.7","5.3","1.3","11","30","58","56","0.35","12","101","40","2.7","2.8","3","8.1","102","1.2","33","0.8","0.5","0.11","0.38","87","0.38","43","4.7","8.2","4.9","0.26","2.3","22","13","2.2","30","14","7.3","0.69","0.89","68","27","5.3","0.43","56","0.86","13","1.3","4.2","2.3","44","136","18","25","1.9","0.79","2.1","39","50","1.8","2.4","0.41","0.22","0.59","0.45","2.5","0.35","8.2","35","27","5.2","0.15","12","53","4.6","1.1","279","89","11","8.2","0.23","0.41","56","52","8.7","5.4","12","0.48","44","24","2.5","2.5","14","12","22","0.46","9.8","194","58","68","21","0.26","0.23","3","21","130","4.8","62","0.23","0.54","24","0.04","7","49","4.5","7.8","14","1.5","2.5","0.31","0.32","5.8","12","6.2","0.97","1.6","0.93","5","2.2","25","1.3","0","63","1.4","0.59","0.75","9.8","67","179","34","0.69","5.7","20","4.6","151","0.32","0.25","0.11","3","103","20","100","9.1","1.2","2","2.2","0.96","8.5","30","16","0.49","0.52","0.21","2.8","9.8","6.4","2.9","18","0","6","108","51"],["12000","12","3300","0.38","0.38","18000","1.5","810","110","48","80","58","5.5","7.6","73000","0.95","530","65","12","1300","0","140","510","120","2000","7700","23","90","1900","3300","9100","13000","120","64","4900","5700","490","38000","1400","64","4700","56","7500","34","57","1.3","40","67000","21","380","3.4","870","800","240","140","180","660","28","29000","14","65","38","570","1200","540","210","340","15000","94","7.6","1.3","7.2","370","5500","2500","140","2600","150","78","6.8","510000","130000","1400","860","19","18","350","13","3200","27","1400","16000","30","2600","5.7","730","3600","90","63","5900","4000","700","240","1.3","8.5","13000","8900","2600","20","2100","2","23","980","32","3100","14","490","640","2.9","3400","54000","31000","1700","6100","44","10","180","4200","240000","2.6","16000","12","24","46000","2","280","3700","300","2500","14000","560","260","11","7.2","1100","17000","720","1.8","1.8","1.8","9.4","680","3800","110","0","4100","76","32","16","57","7200","97000","4200","320","1200","8000","25","1900","31","21","21","250","55000","14000","1200","670","1.3","27","240","750","460","12000","7100","45","340","660","95","2900","17","900","17000","0","1600","17000","8000"],["indirect","imputed","indirect","indirect","indirect","indirect","imputed","imputed","imputed","imputed","imputed","imputed","imputed","imputed","indirect","imputed","imputed","imputed","imputed","indirect","indirect","indirect","imputed","imputed","indirect","imputed","imputed","imputed","indirect","indirect","indirect","indirect","imputed","imputed","indirect","indirect","imputed","imputed","imputed","indirect","indirect","imputed","indirect","imputed","imputed","imputed","imputed","indirect","imputed","indirect","imputed","imputed","imputed","imputed","imputed","indirect","indirect","imputed","indirect","indirect","imputed","imputed","imputed","indirect","indirect","imputed","imputed","indirect","imputed","indirect","imputed","indirect","imputed","indirect","indirect","imputed","indirect","imputed","imputed","imputed","VA","imputed","indirect","imputed","imputed","imputed","imputed","imputed","imputed","imputed","VR","indirect","imputed","imputed","imputed","imputed","indirect","imputed","indirect","indirect","indirect","indirect","imputed","imputed","imputed","indirect","indirect","imputed","imputed","indirect","imputed","indirect","indirect","imputed","imputed","indirect","imputed","indirect","imputed","imputed","indirect","indirect","indirect","indirect","imputed","imputed","imputed","indirect","indirect","indirect","indirect","imputed","imputed","indirect","imputed","imputed","indirect","imputed","imputed","imputed","imputed","imputed","imputed","imputed","imputed","imputed","indirect","imputed","imputed","indirect","indirect","imputed","indirect","imputed","imputed","indirect","imputed","imputed","imputed","indirect","indirect","VR imputed","indirect","imputed","imputed","indirect","imputed","indirect","imputed","imputed","imputed","imputed","indirect","imputed","indirect","indirect","indirect","imputed","imputed","imputed","imputed","indirect","imputed","imputed","imputed","imputed","imputed","imputed","indirect","imputed","imputed","indirect","indirect","indirect","indirect"],[0.21,0.02,0.11,0.08,0.08,0.21,0.21,0.07,0.09,0.03,0.12,0.01,0.08,0.03,0.21,null,0.1,0.06,0.13,0.21,null,0.12,0.04,0.08,0.26,0.09,0.09,0.05,0.21,0.25,0.16,0.28,0.07,0.09,0.27,0.28,0.17,0.04,0.1,0.25,0.28,0.11,0.22,0.06,0.07,0.02,0.07,0.28,0.06,0.12,0.42,0.14,0.1,0.02,0.05,0.13,0.22,0.12,0.16,0.11,0.15,0.12,0.11,0.15,0.16,0.05,0.05,0.39,0.19,0.08,0.23,0.08,0.09,0.26,0.38,0.2,0.13,0.04,0.09,0.85,0.2,0.13,0.11,0.06,0.06,0.06,0.1,0.1,0.15,0.05,0.09,0.15,0.05,0.07,0.01,0.09,0.3,0.11,0.08,0.37,0.3,0.29,0.15,0.04,0.03,0.25,0.29,0.1,0.1,0.22,0.06,0.13,0.24,0.12,0.12,0.11,0.08,0.06,0.02,0.09,0.37,0.16,0.14,0.14,0.05,0.03,0.06,0.23,0.43,0.08,0.11,0.04,0.06,0.09,0.04,0.14,0.11,0.11,0.07,0.04,0.08,0.11,0.19,0.01,0.07,0.15,0.11,0.11,0.22,0.08,0.05,0.18,0.19,0.06,0,0.21,0.03,0.09,0.11,0.11,0.25,0.22,0.24,0.06,0.09,0.24,0.14,0.28,0.04,0.03,0.01,0.04,0.37,0.12,0.21,0.18,0.08,0.12,0.06,0.05,0.12,0.16,0.18,0.32,0.05,0.06,0.09,0.13,0.1,0.1,0.14,0,0.13,0.29,0.22],["110","14","60","7.2","5.7","239",null,"22","36","5.2","6.6","56","16",null,"129","0","40","8.2","22","37","0","124","73","29","220","35","50","23","31","62","226","112","4.6","52","213","82","14","58","25",null,"215","8.8","99","11","6.1","5.4","4.8","154","5.6","303","9.6","43","32","8.6","40","147","39","16","137","100","41","4.9","7","332","127","79","7","53","4","142","4.7","45","20","96","116","74","153","36","8.7","2.1","127","128","13","22","6.3","3.5","5.8","3.7","14","5.6","79","177","441","75","19","118","67","35","11","356","129","15","48","5.3","14","122","91","78","42","34","7.6","260","57","10","17","100","89","158","13","89","209","257","391","116","5","6.4","41","52","48","51","449","5.5","7.3","171","0.88","40","346","36","95","275","16","20","1.4",null,"73","69","48","7.6","6.4","9.8","94","11","88","19","8.3","184","39","5.7","6.2","71","130","527","78","8.7","45","47","27","331","8","6.4","16","69","114","91","282","36","13","14","30","16",null,"107","67","0.69","9","2.8","26","55","51","23","108",null,"29","227","173"],[58,76,80,87,87,64,null,87,89,87,87,81,87,null,57,null,72,87,87,61,null,80,62,77,62,87,87,96,60,51,59,53,90,37,55,54,87,87,80,null,57,80,62,87,87,87,93,48,95,80,87,71,60,59,92,86,61,87,71,80,80,87,85,71,73,80,87,33,90,87,87,87,80,55,31,80,79,83,94,87,59,32,80,52,87,87,100,80,87,80,89,76,80,94,87,82,37,87,87,45,42,39,87,87,100,52,47,87,80,60,87,76,54,46,81,80,58,37,62,83,38,70,80,75,87,87,80,55,15,87,80,87,87,63,80,80,80,87,80,85,87,87,87,null,87,87,84,86,87,87,96,87,63,88,87,60,87,87,87,80,47,63,54,73,69,53,80,59,87,87,80,80,37,53,57,69,87,87,80,87,null,53,74,44,89,87,87,69,82,80,79,null,60,58,72],[35878,415,23705,4,4,59705,null,9601,1090,1254,564,5456,62,null,206915,0,3765,928,78,3985,0,963,7789,1092,4972,73221,212,1619,5594,6892,35169,26117,1640,269,10459,11471,2569,798439,11895,null,9937,424,22458,484,698,63,508,119213,320,2686,7,4504,5097,7860,2452,1242,2060,206,135951,104,363,267,4494,5727,2531,3152,5671,14460,438,80,5,76,3325,12154,2133,571,16431,2906,858,7,1667136,328895,10215,8183,295,280,3476,103,18280,424,14006,81292,496,37541,748,7027,4534,697,656,7594,5814,966,1395,30,282,29464,15737,23565,153,5998,32,138,2329,128,21600,104,3608,4685,80,30636,58344,138447,9614,33199,850,292,2465,10383,87211,28,112840,286,328,323856,41,1566,26347,2358,29833,276672,6237,2087,52,null,14225,99590,5534,14,7,19,178,3346,13300,1649,8,11861,2166,308,129,416,13982,287224,9657,4026,9305,18800,144,4266,782,531,2908,5894,60895,62135,3337,2613,14,196,3357,12550,null,41912,30151,63,5854,9058,900,16315,136,7136,100780,null,7654,36741,26990],[3,6,null,null,0,1558,0,606,99,21,null,112,16,null,92,0,206,30,14,613,0,6,281,null,2693,9069,1,null,504,907,740,8606,58,31,1963,1752,213,10034,1587,null,479,31,5025,null,67,null,2,7154,null,142,0,843,545,14,182,452,111,23,8625,0,6,4,null,795,395,79,null,2662,null,0,2,0,195,2332,390,117,2426,267,null,null,44652,3523,296,0,7,14,null,15,40,0,376,26288,1,null,3,206,310,72,4,5258,548,21,37,null,0,89,8408,1157,0,544,4,1,null,14,2188,0,300,6,1,316,29827,7918,3796,179,36,1,117,414,14846,0,0,11,4,59,0,195,758,178,1459,255,null,213,9,null,273,6407,1450,2,1,0,24,69,763,4,0,1573,34,0,0,1,195,157505,878,null,25,284,42,3401,null,null,3,152,20117,7819,24,561,0,32,15,59,null,17642,6637,2,null,465,131,841,0,589,3428,null,26,20967,18072],[14010,183,null,null,0,13469,2,1803,1090,986,null,6964,56,null,581,0,3740,423,70,4017,0,649,6426,209,4515,60239,212,null,5424,6534,29500,24014,715,268,5071,7919,1626,373083,11065,null,1262,415,21236,null,698,null,183,59027,null,2409,7,3542,4757,1814,2369,903,2053,197,104126,69,327,null,null,2779,2274,2809,null,12016,null,36,5,71,3063,9604,1503,483,14817,2554,null,null,1124539,35236,3817,4202,73,280,null,66,1514,360,13838,79113,208,null,748,6745,4081,436,177,7297,4231,966,984,null,185,9701,15828,23168,153,4035,26,29,null,124,19152,69,3439,3729,73,14459,57981,89350,9456,2177,494,240,2326,7648,86985,25,0,null,328,12535,41,1389,9363,2035,24116,37118,20,1513,50,null,10605,65585,5334,14,7,1,178,1696,11072,91,8,11475,1874,null,107,85,10908,277840,7598,null,7827,8018,140,4720,null,null,15,5627,56602,60804,2779,2611,14,196,2669,8759,null,41912,29749,57,4763,8441,835,13058,51,5451,79979,null,1147,34991,25962],[1123,0,174,0,0,1355,null,905,14,0,19,2045,0,null,2523,0,412,60,6,107,0,12,104,3,101,7916,0,41,214,77,469,453,null,3,340,555,88,5724,854,null,182,0,421,2,55,0,10,1295,37,6,0,186,118,295,9,44,34,11,2009,4,8,4,294,566,20,459,194,539,44,null,0,0,56,88,8,97,null,13,48,0,73299,1834,184,72,17,0,293,0,null,13,625,226,20,3306,0,806,104,24,10,298,35,48,112,0,2,475,1367,655,0,1017,0,0,23,1,694,4,603,250,0,767,3215,2253,330,923,17,5,240,242,3373,0,7882,32,0,7953,0,92,2349,178,1155,9872,193,37,0,null,970,31314,103,null,0,0,29,118,299,9,0,242,5,9,1,1,221,7379,593,165,270,1206,6,301,39,33,84,338,1285,4044,195,58,0,22,0,222,null,1824,5153,1,386,493,9,2740,0,142,1896,null,45,4847,1235],[81,4,63,null,0,227,null,120,101,37,13,1171,3,null,954,0,1340,17,1,23,0,49,79,3,57,1197,0,null,54,44,77,122,19,0,62,33,30,9662,194,null,41,0,480,null,9,null,10,499,null,85,0,104,635,210,25,39,32,43,597,1,0,8,96,15,24,418,null,72,null,0,0,2,27,123,17,6,102,16,null,null,28876,2135,58,93,1,15,81,0,78,4,6497,368,0,961,10,1116,33,63,2,332,0,null,248,0,5,41,93,223,1,30,1,1,24,2,158,1,1042,243,1,164,646,2793,320,451,12,null,36,45,1241,0,209,6,3,3059,0,34,254,13,1534,3788,44,19,1,null,576,17132,94,0,0,null,0,45,78,5,0,null,13,7,0,1,75,19613,20,null,15,152,8,256,26,16,4,675,178,466,4,8,0,2,13,304,null,252,9397,0,57,109,3,2149,0,43,2602,null,23,196,468],[2414,4,45,null,1,null,null,481,12,24,14,72,7,null,4406,0,6,28,3,84,0,25,194,7,152,1027,2,64,35,146,2963,null,47,0,133,375,28,2098,268,null,413,5,501,7,5,0,2,1652,7,24,0,69,100,266,101,21,154,2,7345,11,27,8,135,202,null,55,86,364,9,2,0,6,195,81,49,9,802,71,5,0,52766,13747,201,355,6,1,96,3,22,13,207,3215,79,66,3,241,16,12,28,113,null,24,18,1,7,1187,741,397,3,98,0,9,72,1,379,11,57,220,0,1025,null,15222,392,956,23,3,16,235,2367,2,2947,7,6,18552,0,73,96,77,764,14855,42,13,0,null,324,1566,163,0,0,null,8,57,110,13,0,null,8,41,0,27,1330,14369,71,123,162,1057,5,146,17,17,166,156,2676,64,192,38,1,1,16,326,null,1349,262,4,105,222,27,737,1,207,60,null,null,1057,863],[2537,7,20,null,0,null,null,487,12,22,5,107,5,null,3667,0,12,41,1,65,0,19,229,7,144,1147,0,54,25,188,3922,null,51,1,107,428,27,2100,213,null,370,7,491,6,11,0,3,1410,7,27,0,97,90,353,80,14,167,0,11099,10,36,3,130,281,null,84,108,355,2,4,0,10,172,112,60,9,792,52,4,0,46367,14665,132,280,8,5,72,3,29,11,185,3544,92,105,12,296,34,13,22,131,null,22,18,1,7,1207,821,345,7,82,0,20,97,0,407,10,57,204,1,1000,null,19708,431,1150,19,6,15,302,2406,0,3592,12,6,15818,0,69,77,76,795,17958,39,20,0,null,331,1495,168,0,0,null,5,43,132,16,0,null,4,24,1,21,1826,14768,67,142,146,1412,4,151,29,15,184,172,3027,45,221,38,1,1,6,307,null,1566,306,2,125,215,26,1058,0,231,64,null,null,1219,957],[405,11,115,null,0,1417,null,499,69,49,47,55,5,null,7252,0,143,50,15,219,0,44,430,113,562,5767,14,136,507,422,805,1924,119,6,543,392,200,8225,1234,null,64,33,2237,81,68,3,66,4695,2,27,0,134,251,260,123,18,111,24,3812,6,26,27,null,72,90,93,383,1504,null,3,0,2,157,600,188,53,747,102,89,0,56674,7390,761,243,10,12,null,10,2567,15,643,5666,29,3324,6,245,309,59,18,1081,206,6,138,null,20,737,1414,2216,5,419,null,12,70,6,1747,6,394,97,5,624,3410,6399,505,931,24,11,79,722,4701,4,3203,4,14,4435,4,124,144,229,537,4891,569,154,9,null,1078,7358,456,null,null,5,19,204,579,115,1,391,175,22,24,16,557,21460,363,271,612,184,20,557,15,null,63,241,3547,4332,92,156,0,38,65,666,null,3280,2324,3,338,465,123,751,2,383,2514,null,147,2058,2667],[13,0,9,null,0,172,null,45,2,0,0,104,0,null,273,0,24,2,null,30,0,4,7,null,14,657,0,5,42,7,null,46,null,2,32,56,5,145,70,null,2,0,71,0,0,0,7,78,1,null,0,14,10,16,0,4,4,0,null,0,1,1,null,24,null,32,5,57,null,0,0,0,2,12,0,13,14,20,9,0,6575,87,21,3,2,0,null,0,null,2,39,6,1,274,0,55,4,2,0,154,5,0,7,null,0,141,152,70,0,76,null,1,1,0,73,0,37,14,0,27,18,333,191,47,0,2,3,32,327,0,538,1,0,240,0,11,46,20,112,271,17,5,0,null,78,839,7,null,null,1,2,8,7,1,0,18,0,1,0,1,14,387,21,19,12,null,3,61,0,null,2,28,135,134,3,20,0,7,0,7,null,260,868,1,45,31,1,215,0,43,70,null,2,389,176],[966,0,167,null,0,1654,null,1107,14,13,12,2374,1,null,5497,0,249,70,null,223,0,71,122,null,103,7532,0,39,456,83,null,489,null,19,476,705,57,6679,684,null,182,0,556,0,13,2,37,1099,27,null,0,200,176,290,14,78,34,1,null,8,8,5,null,479,null,509,143,614,null,0,0,0,55,270,1,103,157,180,52,0,74368,1733,202,73,21,0,null,0,null,20,330,227,17,2841,0,915,23,15,10,936,37,33,46,null,1,1949,1456,637,0,789,null,1,13,1,685,8,292,288,0,881,2567,3677,2068,1286,10,6,77,251,4890,0,7245,20,0,8005,0,97,728,164,2363,6062,149,52,0,null,752,5790,94,null,null,1,9,88,264,14,0,227,0,14,2,1,227,4652,521,228,168,null,12,381,31,null,95,355,1578,1433,121,162,0,42,39,192,null,2438,5269,1,450,397,26,3947,1,223,1738,null,65,4786,2363],[31746,406,6765,null,6,53552,null,9441,1228,1343,553,1623,50,null,191141,5,2706,867,72,3749,0,1066,8079,1196,6439,74117,198,1789,5322,7309,43139,26022,1612,276,9209,11600,2353,817318,11631,null,4108,455,21495,496,729,39,467,112969,291,1240,1,2770,5072,7177,2206,551,2389,194,121563,166,315,250,null,4843,1475,2862,4283,14662,null,99,0,56,2756,11117,2234,545,15779,1810,795,9,1609547,322806,10172,8268,288,322,null,89,15130,385,12473,89294,415,38654,734,5731,4198,675,671,9000,4998,1153,1282,null,281,18822,16267,23982,126,5177,null,152,2420,126,21193,166,3459,4483,113,29992,55703,135984,7981,34764,796,296,1577,10815,86464,26,103045,293,358,308327,43,1483,4077,2240,15171,219737,6500,2198,44,null,14525,77136,5846,null,null,23,149,3248,13226,1281,13,12191,2143,318,142,345,12903,319752,8335,4689,8980,5769,146,5455,610,null,3390,5149,61573,58774,3657,2415,13,251,3134,12933,null,43628,22294,40,6512,8237,843,16328,39,6353,100349,null,9437,37930,29653],[403.33,10,138,null,0.33,882.33,1,424.67,72.67,48.67,50.33,95.67,3.67,10,7109.33,0,187,54.33,18,208,0,42,396.33,103,594,5711.67,16.67,154.33,498.33,465,766.67,1634,118.67,10.67,414.67,363.33,187.67,8529,1082.67,5,70,34.67,2311,62.67,66,3,85.67,4582.33,8,29.33,0,126.33,250.33,258,102.67,46.5,147,25.67,2087.33,5.5,19.67,28.67,null,49.33,89,89.33,422,1489.33,null,3,0,3,168,480,192.67,86.33,829.33,105,114,0.33,52528.67,7425.33,799.33,269,12.67,20.33,null,8.67,2638.33,11,758.67,5272,28,3073.33,6,245,279.33,64.33,11.67,1260.33,249.33,14.33,137.67,1,23.33,1023.33,1713,2156,5.33,386.33,0.5,11.33,59,6.33,1704.67,5.5,389.67,88.67,7.67,590.33,2101.33,5851.67,425,993,28.33,14.67,57,687,5109.67,2.33,2660.67,8,13,3538,2.5,113.67,146.67,196.33,524,4777,583.33,158.33,12.67,1,1132,7221.33,515,0,null,3.67,16.33,203.67,599.33,116.67,2,277.67,177.33,20.67,24.67,15.33,552.33,23793.67,324.67,276.67,538,362.67,18,848.33,21,null,50.33,252,3525,4374,78.67,156.67,0.33,40.67,66,611,97.5,2657.33,2872,5.67,350,511.67,115.33,761.33,5.67,384.33,2787.33,null,188.33,2110.33,3252],[12.67,0,5.33,null,0,187,0,36,1.67,0.67,0,103.67,0,0,317.33,0,22.33,5.33,0,20.67,0,1.67,21.67,6.5,11.33,622,0,4.67,39.33,6.33,32.5,200.33,12,2.33,38.67,49,3.67,169.67,70.33,0.5,11.5,0.67,139,0,2.67,0.33,5,189.67,2.33,null,0,15.67,11.33,23.67,0,6,9.67,1.67,21,0.5,1,0.33,null,12,25,33.67,11,60.33,null,0,0,0,3,4,1.33,20.67,22.67,12.33,4.67,0,10661.67,95.67,20.33,14.33,2.33,0,null,0,158,2.33,132.33,414,0.67,284.67,0,82,9,1,0,216.33,4,1,9.67,0,0,118.67,144,70.67,0,33.33,0,0.33,21.67,0,64,0.5,43.33,15,0,24.33,18,825,170,37,0.33,0.67,4,52.67,202,0,486,2.33,0,309,0,8.33,44.67,17.33,121,181.5,19,4.67,0,0,108.67,1046.33,29.33,0,null,0.33,1.33,9.33,12.67,1,0,15.67,7.67,0.33,0,0.67,16.67,1749.67,17.67,20.33,14.67,29,1.67,93,1,null,1.67,64.33,153.67,145,2.33,12,0,6.67,0.33,31.33,29,218,1075.33,1,42,31,1,229,0,27,70,null,4,390.67,176],[993.33,3,131.33,null,0,18541.33,0,903.33,15.67,11,12.67,2635,0.33,0,5574.33,0,219.67,71,1.5,246.33,0,41,411.67,59.5,120.33,6990.33,0,30.67,414,86,1306,1246.33,95,14,475.67,736.33,46.67,8116,759.67,1.5,342.5,4.67,1153,14,13.67,2,34.67,2478,27.33,null,0.33,208.67,201.67,299,13.67,68.5,96.67,5.33,379,6.5,9.67,7.33,null,372.67,157,724.67,148,543.67,null,0,0,0,78,90,6.67,128.33,339,123.67,32.33,0,141258.33,1951.33,302.67,279,21,0,null,0,1048,22,1321.67,4662.67,15.33,3554.67,0,1022.5,91.67,16.67,3.33,1250,30,61.67,51.33,0,5,1498.33,1474.5,627,1.67,373,0,1,730,1,658.67,6.5,368,335,0.33,781.67,2826.5,7453.67,2178.67,729,14.67,5.33,74.5,483.67,6947.33,10,7335.33,30,0.33,8982,0,98.33,613.33,156,2582.5,4493,199.33,49.33,0,0,919.33,6895,231,0,null,0.33,7,121.33,299,33.33,0,262,54,6,1,6.67,283,16287.33,533,286,174.33,603,8.33,495.33,31.67,null,121,761.67,1664.67,1561.33,57,131,0,38.33,27.33,529,623.5,2148,6668,3.33,484,440.67,17,3640,0.67,247.33,1738,null,63,4766.33,2363],[30310.67,428.33,7179.67,null,6.67,45161,6.5,8792.67,1276.33,1290.67,593.33,3511,38.33,234,179935,4.33,3055,876.67,92.33,3591.33,1,1095.67,7849,1252.67,7089.67,75211,217.67,1957.33,5156.67,7290.67,38990,21913.67,1614.33,328.33,7151.67,9495.67,2383.67,848184.67,11744,91.5,4046,446,22704.33,516.67,736,48,497,110138.33,326,2064.33,3.67,2706.33,5219.67,7824,2145,851.5,2759,214,70290.67,147.5,258,259,null,3574,1497.67,3199.33,4119.67,14819.33,null,99,1,57.33,2983.67,9665.33,2150.67,672.67,16353,1897,999,10,1380531,325737.33,10685.67,8495.33,324,378.67,null,95.67,15827.33,347.67,14401.33,89664,385.67,40678.67,718.5,5694.5,4010,783.67,663.33,9631.67,5554.67,1362.67,1377.67,38,314.67,23088.33,17802.33,23114.33,116,5529.67,45,150.67,2002.33,128,20854,147.5,3850.33,4250.67,113,29280.33,33242,136167.67,8422.67,34330.33,845.33,284.33,1511.33,10750.67,89588.67,30.33,97531.67,328.67,356.67,236068.33,38,1503.67,3573.67,2324.33,16696.33,216671.67,6924,2357.67,54.67,469,15379.33,83367.67,5811.67,13.5,null,22.67,140.67,3471,12915,1519.67,19,9405.33,2153.33,352,139.67,355.67,12624,323077.33,8000.33,5239,8914,10095.33,136.67,6602.67,595.33,null,3076,5407.67,62701,60942,2940,2610.67,11.33,259.67,3141.33,13212.67,2925,38161,27649.33,66.67,7315.33,8766,845.33,15944.33,95.67,6443,102150.33,null,9877.33,39628.33,34358.67],[0.01,0.03,0.02,null,0,0.03,null,0.05,0.06,0.04,0.08,0.04,0.1,null,0.04,0,0.06,0.06,null,0.06,null,0.04,0.05,null,0.09,0.08,0.07,0.08,0.1,0.06,null,0.07,null,0.03,0.06,0.04,0.09,0.01,0.11,null,0.02,0.07,0.1,0.16,0.09,0.07,0.14,0.04,0.01,null,0,0.05,0.05,0.04,0.06,0.03,0.05,0.12,null,0.03,0.08,0.11,null,0.02,null,0.04,0.09,0.1,null,0.03,null,0.04,0.06,0.05,0.08,0.1,0.05,0.06,0.12,0,0.04,0.02,0.08,0.03,0.04,0.04,null,0.11,null,0.04,0.05,0.06,0.07,0.09,0.01,0.05,0.07,0.09,0.03,0.12,0.04,0.01,0.11,null,0.07,0.04,0.09,0.09,0.04,0.08,null,0.08,0.03,0.05,0.08,0.03,0.11,0.02,0.04,0.02,0.06,0.05,0.07,0.03,0.03,0.04,0.05,0.07,0.06,0.15,0.03,0.02,0.04,0.01,0.09,0.09,0.04,0.1,0.04,0.02,0.09,0.07,0.2,null,0.08,0.1,0.08,null,null,0.25,0.13,0.06,0.04,0.09,0.08,0.03,0.08,0.07,0.17,0.05,0.04,0.07,0.04,0.06,0.07,null,0.15,0.11,0.02,null,0.02,0.05,0.06,0.07,0.03,0.07,0,0.15,0.02,0.05,null,0.08,0.12,0.1,0.06,0.06,0.14,0.05,0.05,0.06,0.03,null,0.02,0.06,0.09],[0.01,0.02,0.02,null,0.05,0.02,0.15,0.05,0.06,0.04,0.08,0.03,0.09,0.04,0.04,0,0.06,0.06,0.19,0.06,0,0.04,0.05,0.08,0.08,0.08,0.08,0.08,0.1,0.06,0.02,0.08,0.08,0.04,0.06,0.04,0.08,0.01,0.09,0.06,0.02,0.08,0.1,0.12,0.09,0.07,0.17,0.04,0.03,null,0,0.05,0.05,0.03,0.05,0.06,0.05,0.12,0.03,0.04,0.08,0.11,null,0.02,0.07,0.03,0.1,0.1,null,0.03,0,0.05,0.06,0.05,0.09,0.13,0.05,0.06,0.12,0.03,0.04,0.02,0.07,0.03,0.04,0.05,null,0.09,0.17,0.04,0.06,0.06,0.07,0.08,0.01,0.05,0.07,0.08,0.02,0.14,0.05,0.01,0.1,0.03,0.07,0.05,0.1,0.09,0.05,0.07,0.01,0.08,0.03,0.05,0.08,0.04,0.1,0.02,0.07,0.02,0.06,0.05,0.06,0.03,0.03,0.05,0.04,0.07,0.06,0.06,0.03,0.03,0.04,0.02,0.07,0.08,0.05,0.09,0.03,0.02,0.08,0.07,0.23,0,0.08,0.09,0.09,0,null,0.17,0.12,0.06,0.05,0.08,0.11,0.03,0.08,0.06,0.18,0.04,0.04,0.08,0.04,0.05,0.06,0.04,0.14,0.13,0.04,null,0.02,0.05,0.06,0.07,0.03,0.06,0.03,0.16,0.02,0.05,0.04,0.07,0.12,0.1,0.05,0.06,0.13,0.05,0.06,0.06,0.03,null,0.02,0.06,0.09],[0.01,0.03,0.02,null,0.05,0.02,null,0.05,0.06,0.04,0.08,0.04,0.1,null,0.04,0,0.06,0.06,null,0.06,null,0.04,0.05,null,0.09,0.08,0.07,0.08,0.1,0.06,null,0.07,null,0.04,0.06,0.04,0.09,0.01,0.09,null,0.02,0.07,0.1,0.12,0.09,0.07,0.17,0.04,0.03,null,0,0.05,0.05,0.04,0.06,0.06,0.05,0.12,null,0.03,0.08,0.11,null,0.02,null,0.04,0.1,0.1,null,0.03,null,0.05,0.06,0.05,0.08,0.13,0.05,0.06,0.12,0.03,0.04,0.02,0.08,0.03,0.04,0.05,null,0.09,null,0.04,0.05,0.06,0.07,0.08,0.01,0.05,0.07,0.09,0.03,0.14,0.04,0.01,0.11,null,0.07,0.04,0.09,0.09,0.04,0.07,null,0.08,0.03,0.05,0.08,0.03,0.1,0.02,0.07,0.02,0.06,0.05,0.06,0.03,0.03,0.04,0.04,0.07,0.06,0.06,0.03,0.03,0.04,0.01,0.07,0.09,0.04,0.09,0.04,0.02,0.09,0.07,0.23,null,0.08,0.1,0.09,null,null,0.17,0.12,0.06,0.04,0.08,0.11,0.03,0.08,0.06,0.17,0.05,0.04,0.07,0.04,0.06,0.07,null,0.15,0.13,0.04,null,0.02,0.05,0.06,0.07,0.03,0.07,0.03,0.15,0.02,0.05,null,0.08,0.12,0.1,0.06,0.06,0.14,0.05,0.05,0.06,0.03,null,0.02,0.06,0.09],[0.01,0.03,0.02,null,0,0.03,null,0.05,0.06,0.04,0.08,0.03,0.1,null,0.04,0,0.05,0.06,0.21,0.06,null,0.04,0.05,0.09,0.09,0.08,0.07,0.08,0.1,0.06,0.02,0.07,0.07,0.02,0.06,0.03,0.08,0.01,0.11,null,0.02,0.07,0.1,0.16,0.09,0.08,0.14,0.04,0.01,0.02,0,0.05,0.05,0.04,0.06,0.03,0.05,0.12,0.03,0.04,0.08,0.11,null,0.01,0.06,0.03,0.09,0.1,null,0.03,null,0.04,0.06,0.05,0.08,0.1,0.05,0.06,0.11,0,0.04,0.02,0.07,0.03,0.03,0.04,null,0.11,0.17,0.04,0.05,0.06,0.07,0.09,0.01,0.04,0.07,0.09,0.03,0.12,0.04,0.01,0.11,null,0.07,0.04,0.09,0.09,0.04,0.08,null,0.08,0.03,0.05,0.08,0.04,0.11,0.02,0.04,0.02,0.06,0.05,0.06,0.03,0.03,0.04,0.05,0.07,0.05,0.15,0.03,0.01,0.04,0.01,0.09,0.08,0.04,0.1,0.04,0.02,0.09,0.07,0.2,null,0.07,0.1,0.08,null,null,0.22,0.13,0.06,0.04,0.09,0.08,0.03,0.08,0.07,0.17,0.05,0.04,0.07,0.04,0.06,0.07,0.03,0.14,0.1,0.02,null,0.02,0.05,0.06,0.07,0.03,0.06,0,0.15,0.02,0.05,null,0.08,0.1,0.08,0.05,0.06,0.15,0.05,0.05,0.06,0.03,null,0.02,0.05,0.09],[0.01,0.02,0.02,null,0.05,0.02,0.15,0.05,0.06,0.04,0.08,0.03,0.1,0.04,0.04,0,0.06,0.06,0.19,0.06,0,0.04,0.05,0.08,0.08,0.08,0.08,0.08,0.1,0.06,0.02,0.07,0.07,0.03,0.06,0.04,0.08,0.01,0.09,0.05,0.02,0.08,0.1,0.12,0.09,0.06,0.17,0.04,0.02,0.01,0,0.05,0.05,0.03,0.05,0.05,0.05,0.12,0.03,0.04,0.08,0.11,null,0.01,0.06,0.03,0.1,0.1,null,0.03,0,0.05,0.06,0.05,0.09,0.13,0.05,0.06,0.11,0.03,0.04,0.02,0.07,0.03,0.04,0.05,null,0.09,0.17,0.03,0.05,0.06,0.07,0.08,0.01,0.04,0.07,0.08,0.02,0.13,0.04,0.01,0.1,0.03,0.07,0.04,0.1,0.09,0.05,0.07,0.01,0.08,0.03,0.05,0.08,0.04,0.1,0.02,0.07,0.02,0.06,0.04,0.05,0.03,0.03,0.05,0.04,0.06,0.06,0.08,0.03,0.02,0.04,0.01,0.07,0.08,0.04,0.08,0.03,0.02,0.08,0.07,0.23,0,0.07,0.09,0.09,0,null,0.16,0.12,0.06,0.05,0.08,0.11,0.03,0.08,0.06,0.18,0.04,0.04,0.07,0.04,0.05,0.06,0.04,0.13,0.13,0.04,null,0.02,0.05,0.06,0.07,0.03,0.06,0.03,0.16,0.02,0.05,0.03,0.07,0.1,0.08,0.05,0.06,0.14,0.05,0.06,0.06,0.03,null,0.02,0.05,0.09],[0.01,0.03,0.02,null,0.05,0.03,null,0.05,0.06,0.04,0.08,0.03,0.1,null,0.04,0,0.05,0.06,0.19,0.06,null,0.04,0.05,0.08,0.09,0.08,0.07,0.08,0.1,0.06,0.02,0.07,0.07,0.03,0.06,0.03,0.08,0.01,0.09,null,0.02,0.07,0.1,0.12,0.09,0.06,0.17,0.04,0.02,0.02,0,0.05,0.05,0.04,0.06,0.05,0.05,0.12,0.03,0.04,0.08,0.11,null,0.01,0.06,0.03,0.1,0.1,null,0.03,null,0.05,0.06,0.05,0.08,0.13,0.05,0.06,0.11,0.03,0.04,0.02,0.07,0.03,0.03,0.05,null,0.09,0.17,0.04,0.05,0.06,0.07,0.08,0.01,0.04,0.07,0.09,0.03,0.13,0.04,0.01,0.11,null,0.07,0.04,0.09,0.09,0.04,0.07,null,0.08,0.03,0.05,0.08,0.04,0.1,0.02,0.07,0.02,0.06,0.05,0.05,0.03,0.03,0.05,0.04,0.07,0.05,0.08,0.03,0.02,0.04,0.01,0.07,0.08,0.04,0.08,0.04,0.02,0.09,0.07,0.23,null,0.07,0.1,0.09,null,null,0.16,0.12,0.06,0.04,0.08,0.11,0.03,0.08,0.06,0.17,0.05,0.04,0.07,0.04,0.06,0.07,0.03,0.14,0.13,0.04,null,0.02,0.05,0.06,0.07,0.03,0.06,0.03,0.15,0.02,0.05,null,0.08,0.1,0.08,0.05,0.06,0.15,0.05,0.05,0.06,0.03,null,0.02,0.05,0.09],[0.01,0.03,0.02,null,0.05,0.02,null,0.05,0.06,0.04,0.08,0.04,0.1,null,0.04,0,0.06,0.06,0.2,0.06,null,0.04,0.05,0.08,0.09,0.08,0.07,0.08,0.1,0.06,0.02,0.07,0.08,0.04,0.06,0.04,0.09,0.01,0.09,null,0.02,0.07,0.1,0.12,0.09,0.07,0.17,0.04,0.03,0.02,0,0.05,0.05,0.04,0.06,0.06,0.05,0.12,0.03,0.03,0.08,0.11,null,0.02,0.06,0.04,0.1,0.1,null,0.03,null,0.05,0.06,0.05,0.08,0.13,0.05,0.06,0.12,0.03,0.04,0.02,0.08,0.03,0.04,0.05,null,0.09,0.17,0.04,0.05,0.06,0.07,0.08,0.01,0.05,0.07,0.09,0.03,0.14,0.04,0.01,0.11,null,0.07,0.04,0.09,0.09,0.04,0.07,null,0.08,0.03,0.05,0.08,0.03,0.1,0.02,0.07,0.02,0.06,0.05,0.06,0.03,0.03,0.04,0.04,0.07,0.06,0.06,0.03,0.03,0.04,0.01,0.07,0.09,0.04,0.09,0.04,0.02,0.09,0.07,0.23,null,0.08,0.1,0.09,null,null,0.17,0.12,0.06,0.04,0.08,0.11,0.03,0.08,0.06,0.17,0.05,0.04,0.07,0.04,0.06,0.07,0.03,0.15,0.13,0.04,null,0.02,0.05,0.06,0.07,0.03,0.07,0.03,0.15,0.02,0.05,null,0.08,0.12,0.1,0.06,0.06,0.14,0.05,0.05,0.06,0.03,null,0.02,0.06,0.09],[3.9,2.3,1.4,5.2,0,2.8,2.3,2.3,11,3.6,2.3,13,11,1.9,1.6,0,37,1.6,3,1.2,0,2.6,3,0.51,3.6,1.5,0,3.3,2.8,3.2,1.8,3.2,1.4,2.8,0.4,2.8,1.5,6.6,2.4,2.8,3.2,1.9,3.1,0,2.2,0,1.7,3.2,0.51,4.3,0,3,7.3,14,1.1,2.8,2.8,16,2.7,5.2,0,5.1,1,3.2,2.8,12,2.2,2.8,1.5,2.3,3,0,4.2,2.8,2.8,3,3,2.2,2.9,0,2.5,2.8,1.3,6.1,1.1,8.8,2.8,1.7,1,6.3,25,1.3,5.2,3.7,1.7,32,5.2,7.9,2.6,4.8,2.8,3.9,12,0,2.4,0.49,0.75,1.5,2.6,2.8,0,0,2.8,1.7,2.6,5.2,32,2.2,1.9,1,3.7,5.1,5,2.2,1.6,2.6,0.94,2.8,4.3,5.3,2.2,2.6,3.5,4.2,3.9,3,3.4,0.9,5.9,2.6,0.66,0.98,0,1.3,3,22,1.5,0,3,0,2.8,2.6,0.9,1.1,0,2.8,1,0,0,5.2,8.7,3.5,3.2,0.44,0.54,2.8,9.9,8,4,3.2,8,14,1.3,2.2,2.6,2.8,5.2,2.3,0.54,3.6,14,1.6,25,2.3,1.4,1.5,0.55,24,0,3,4.1,2.3,2.3,1.1,3.2],[472.81,11.24,427.15,null,0.2,1024.98,null,541.83,63.11,45.31,48.5,298.39,6.08,null,8014.83,0,236.06,54.83,16.64,256.52,null,41.16,420.59,91.5,446.66,6383.72,14.99,128.04,551.85,404.45,675.81,1974.38,null,10.33,641.14,437.84,226.01,8168.53,1175.62,null,155.68,30.75,2394.66,57.39,69.01,4.61,88.34,5042.47,10.44,59.57,0,233.71,259.36,301.43,136.35,73.39,99.39,26.71,4396.34,3.72,31.01,29.76,null,113.52,158.18,133.9,595.07,1532.69,null,null,null,3.98,191.24,657.95,180.09,89.23,null,178.95,104.83,0.23,65371.93,7619.61,783.88,243.46,12.12,15.04,null,9.33,null,18.34,779.38,5164.93,35.83,3100.92,6.11,353.58,343.92,63.74,17.6,1070.96,245.11,5.13,164.54,null,20.14,1265.54,1511.31,2248.95,6.07,498.75,null,11.73,68.64,6.09,1854.61,3.72,432.25,114.82,5.41,662.18,3621.49,6782.08,558.11,925.7,25.82,12.78,104.05,723.95,4985.62,1.62,4094.85,9.16,12.83,4903.73,2.7,141.66,1134.7,218.46,1146.98,6550.69,566.7,150.1,12.05,null,1149.8,12939.49,507.79,null,null,3.3,24.77,220.13,590.73,125.62,0.84,398.63,177.29,18.59,21.67,20.49,617.66,19840.05,444.44,247.18,653.13,648.43,21.84,605.67,28.81,null,55.8,304.58,3625.39,4908.99,88.81,182.42,0.41,33.48,68.77,654.9,null,3360.95,4088.47,6.24,343.28,548.68,129.71,907.87,6.8,471.48,2598.91,null,120.73,2382.38,2506.36],[491.71,9.62,468.15,null,0.2,1024.98,null,499.15,63.52,47.53,48.42,243.28,5.88,null,8384.63,0,267.02,62.21,16.11,243.82,0,37.46,399.4,91.38,425.92,6251.66,16.23,132.77,560.57,445.29,706.79,2104.41,null,10.33,641.84,484.63,209.18,8169.03,1175.62,null,187.92,33.24,2349.53,57.39,68.97,4.2,88.34,5106.4,10.44,null,0,228.47,251.71,282.78,117.05,73.39,114.88,27.04,4115.85,4.21,28.65,29.51,null,97.8,175.75,113.19,595.07,1512.95,null,null,0,3.98,188.84,607.37,192.53,89.23,null,169.5,104.25,0.23,72269.31,7590.78,775.71,266.56,13.57,15.04,null,9.33,null,15.76,829.12,4913.9,36.89,3100.92,6.25,381.33,326.04,58.86,11.65,1070.96,265.32,10.92,155.38,0.79,20.73,1390.6,1647.68,2271.56,6.93,498.75,0.36,10.62,69.44,6.33,1832.9,4.21,432.25,111.56,5.41,642.09,3617.12,6540.86,558.11,1002.46,28.9,15.72,104.05,699.55,4984.17,1.62,3622.42,9.16,11.94,5209.01,2.7,126.26,1311.32,218.46,1036.75,6424.3,543.71,143.84,12.05,null,1156.65,11990.24,507.79,null,null,3.3,24.77,205.39,629.83,125.62,0.84,367.24,181.95,18.59,22.8,18.41,626.13,22174.21,411.2,225.29,582.26,732.42,20.34,605.67,28.81,null,48.67,319.55,3553.75,4784.75,95.46,164.32,0.41,34.63,70.28,597.01,null,3119.79,4060.82,6.1,313.63,562.96,122.63,963.57,8,447.46,2823.99,null,148.97,2342.88,2634.83],[0.02,3.28,null,null,null,11.57,0,33.61,9.08,2.13,null,1.61,28.57,null,15.83,null,5.51,7.09,20,15.26,null,0.92,4.37,null,59.65,15.06,0.47,null,9.29,13.88,2.51,35.84,8.11,11.57,38.71,22.12,13.1,2.69,14.34,null,37.96,7.47,23.66,null,9.6,null,1.09,12.12,null,5.89,0,23.8,11.46,0.77,7.68,50.06,5.41,11.68,8.28,0,1.83,null,null,28.61,17.37,2.81,null,22.15,null,0,40,0,6.37,24.28,25.95,24.22,16.37,10.45,null,null,3.97,10,7.75,0,9.59,5,null,22.73,2.64,0,2.72,33.23,0.48,null,0.4,3.05,7.6,16.51,2.26,72.06,12.95,2.17,3.76,null,0,0.92,53.12,4.99,0,13.48,15.38,3.45,null,11.29,11.42,0,8.72,0.16,1.37,2.19,51.44,8.86,40.14,8.22,7.29,0.42,5.03,5.41,17.07,0,null,null,1.22,0.47,0,14.04,8.1,8.75,6.05,0.69,null,14.08,18,null,2.57,9.77,27.18,14.29,14.29,0,13.48,4.07,6.89,4.4,0,13.71,1.81,null,0,1.18,1.79,56.69,11.56,null,0.32,3.54,30,72.06,null,null,20,2.7,35.54,12.86,0.86,21.49,0,16.33,0.56,0.67,null,42.09,22.31,3.51,null,5.51,15.69,6.44,0,10.81,4.29,null,2.27,59.92,69.61],[3.9,2.3,1.4,5.2,0,2.8,2.3,2.3,11,3.6,2.3,13,11,1.9,1.6,0,37,1.6,3,1.2,0,2.6,3,0.51,3.6,1.5,0,3.3,2.8,3.2,1.8,3.2,1.4,2.8,0.4,2.8,1.5,6.6,2.4,2.8,3.2,1.9,3.1,0,2.2,0,1.7,3.2,0.51,4.3,0,3,7.3,14,1.1,2.8,2.8,16,2.7,5.2,0,5.1,1,3.2,2.8,12,2.2,2.8,1.5,2.3,3,0,4.2,2.8,2.8,3,3,2.2,2.9,0,2.5,2.8,1.3,6.1,1.1,8.8,2.8,1.7,1,6.3,25,1.3,5.2,3.7,1.7,32,5.2,7.9,2.6,4.8,2.8,3.9,12,0,2.4,0.49,0.75,1.5,2.6,2.8,0,0,2.8,1.7,2.6,5.2,32,2.2,1.9,1,3.7,5.1,5,2.2,1.6,2.6,0.94,2.8,4.3,5.3,2.2,2.6,3.5,4.2,3.9,3,3.4,0.9,5.9,2.6,0.66,0.98,0,1.3,3,22,1.5,0,3,0,2.8,2.6,0.9,1.1,0,2.8,1,0,0,5.2,8.7,3.5,3.2,0.44,0.54,2.8,9.9,8,4,3.2,8,14,1.3,2.2,2.6,2.8,5.2,2.3,0.54,3.6,14,1.6,25,2.3,1.4,1.5,0.55,24,0,3,4.1,2.3,2.3,1.1,3.2],[7588.81,0.69,1368.77,0.18,0.11,9910.12,0.59,489.74,5.95,21.65,23.93,644.96,5.89,3.29,49863.22,2.37,42.01,24.39,9.76,1778.98,0.18,5.22,410.83,19.78,2371.89,7.29,9.93,25.17,4836.98,2658.59,5387.19,7205.85,22.27,36.27,1418.36,561.87,238.89,13538.41,400.54,138.67,3455.86,0.5,227.69,35.14,9.83,2.11,12.75,26010.41,11.14,70.95,0.42,208.67,345.9,662.24,19.96,3,1561.34,6.19,22650.08,9.87,27.52,20.74,643.16,837,154.17,1.36,94.18,9782.49,86.51,6.01,0.34,2.88,28.27,567.24,1283,39.24,1449.69,369.56,6.47,5.36,20696.4,26121.43,411.89,456.37,13,13.53,139.66,13.86,867.27,6.82,101.02,3728.41,14.68,671.28,13.39,160.53,2629.03,24.05,3.19,1757.6,1699.53,601.66,44.36,0.15,42.7,9518.72,1711.4,1195.77,11.57,2413.4,1.15,20.18,340.38,17.52,52.82,18.2,268.49,322.01,1.4,28.72,28909.15,8048.31,1317.73,5476.98,42.23,6.06,13.89,3757.96,216621.31,1.59,13218.48,23.14,6.26,994.08,0.77,29.88,3235.9,32.34,318.51,9435.61,43.94,28.57,19.49,1.1,91.54,4687.76,2928.92,5.72,2.02,3.8,11.75,76.09,3147.2,68.1,1.6,2169.43,7.82,0.02,1.36,3.15,477.62,29108.21,2510.64,155.09,443.82,5901.57,11.82,1145.5,40.99,14.74,39.71,258.28,38272.32,4328.71,1034.76,1300.23,0.27,1.26,75.97,136.02,75.51,5080.69,2157.99,19.99,53.09,311.41,36.92,956.46,6.18,139.87,3251.65,1.12,133.69,8948.07,11082.35],[12130.29,12.36,3271.91,0.55,0.49,18382.24,1.45,1295.81,111.6,69.7,79.93,703.4,11.4,10.85,73054.3,3.32,526.78,89.12,21.49,3107.8,0.18,149.8,925.75,136.44,4398.68,7730.72,22.63,115.59,6738.49,5993.04,9052.38,13134.82,147.19,64.04,6356.56,5662.67,725.97,51523.84,1430.26,202.76,4720.73,56.88,7487.08,69.05,57.07,3.43,52.49,67125.39,32.5,383.04,3.8,868.27,1141.62,898.31,140.56,184.56,2217.35,34.59,52020.34,14.3,65.2,58.75,1216.21,1175.48,544.97,212.15,437.98,15248.5,180.98,7.56,1.68,7.19,402.8,5496.08,2507.97,138.78,2631.39,522.02,84.21,6.82,514304.74,129427.86,1848.97,1320.08,32.37,31.65,493.64,26.49,4029.74,26.81,1544.97,16203.16,45.18,3285.34,19.1,728.31,3590.84,90.21,62.66,7706.18,4016.69,699.17,235.02,1.44,51.24,13491.8,10584.93,2634.43,19.55,4511.05,2,23.17,978.52,32.11,3134.9,32.5,494.38,644.99,4.27,3371.62,54403.17,31497.75,2981.82,11549.61,85.81,16.41,194.12,7924.47,237594.99,2.65,15503.14,35.12,30.31,46757.2,2.78,276.94,3749.2,329.78,2452.19,23465.41,606.63,287.11,30.93,7.2,1138.67,16610.76,3645.76,7.5,3.81,5.59,21.19,679.67,6996.41,180.63,1.6,4076.89,75.94,31.89,16.91,60.35,7681.11,97365.06,6706.61,472.99,1179.12,7971.6,25.12,3088.99,71.85,35.44,60.36,512.89,54907.08,13787.66,1189.33,1965.42,1.59,26.89,318.22,887.53,456.67,16981.79,7102.33,64.63,388.81,973.74,94.72,2942.3,23.04,904.53,20398.56,1.12,1754.16,17429.34,19075.68],[0.63,0.06,0.42,0.32,0.22,0.54,0.4,0.38,0.05,0.31,0.3,0.92,0.52,0.3,0.68,0.71,0.08,0.27,0.45,0.57,1,0.03,0.44,0.14,0.54,0,0.44,0.22,0.72,0.44,0.6,0.55,0.15,0.57,0.22,0.1,0.33,0.26,0.28,0.68,0.73,0.01,0.03,0.51,0.17,0.62,0.24,0.39,0.34,0.19,0.11,0.24,0.3,0.74,0.14,0.02,0.7,0.18,0.44,0.69,0.42,0.35,0.53,0.71,0.28,0.01,0.22,0.64,0.48,0.8,0.2,0.4,0.07,0.1,0.51,0.28,0.55,0.71,0.08,0.79,0.04,0.2,0.22,0.35,0.4,0.43,0.28,0.52,0.22,0.25,0.07,0.23,0.32,0.2,0.7,0.22,0.73,0.27,0.05,0.23,0.42,0.86,0.19,0.1,0.83,0.71,0.16,0.45,0.59,0.53,0.57,0.87,0.35,0.55,0.02,0.56,0.54,0.5,0.33,0.01,0.53,0.26,0.44,0.47,0.49,0.37,0.07,0.47,0.91,0.6,0.85,0.66,0.21,0.02,0.28,0.11,0.86,0.1,0.13,0.4,0.07,0.1,0.63,0.15,0.08,0.28,0.8,0.76,0.53,0.68,0.55,0.11,0.45,0.38,1,0.53,0.1,0,0.08,0.05,0.06,0.3,0.37,0.33,0.38,0.74,0.47,0.37,0.57,0.42,0.66,0.5,0.7,0.31,0.87,0.66,0.17,0.05,0.24,0.15,0.17,0.3,0.3,0.31,0.14,0.32,0.39,0.33,0.27,0.15,0.16,1,0.08,0.51,0.58],[0.37,1.06,0.58,1.47,1.28,0.46,0.6,1.61,1.06,1.45,0.7,12.04,2.07,1.44,0.32,3.5,0.92,1.38,1.83,2.34,null,1.04,1.8,1.17,2.17,1,0.56,1.28,3.54,1.8,0.4,0.45,1.18,0.43,1.29,0.9,1.49,1.36,0.72,3.16,0.27,1.01,0.97,2.04,0.83,2.6,1.32,0.61,1.52,0.81,1.12,0.76,1.43,3.81,0.86,0.98,3.38,1.22,1.77,0.31,0.58,1.55,2.12,0.29,0.72,0.99,1.27,0.36,1.92,0.2,1.25,0.6,1.08,0.9,0.49,0.72,0.45,3.42,1.08,0.21,0.96,0.8,1.29,1.53,1.67,1.75,1.39,2.1,1.27,0.75,1.07,0.77,1.48,1.26,3.35,0.78,0.27,0.73,0.95,1.3,0.58,0.14,0.81,1.11,6,0.29,1.19,0.55,0.41,2.15,0.43,0.13,0.65,0.45,0.98,2.27,0.46,0.5,1.49,0.99,0.47,0.74,1.79,1.9,1.97,1.59,1.08,1.9,0.09,0.4,0.15,2.93,1.26,1.02,1.39,0.89,0.14,1.11,0.87,1.67,1.08,1.11,2.7,0.85,0.92,0.72,5.09,4.2,2.13,3.11,2.25,0.89,1.82,1.61,632.31,0.47,0.9,1,1.09,1.05,1.07,0.7,1.6,1.49,0.62,0.26,0.53,1.59,2.33,1.71,2.92,2.01,0.3,0.69,0.13,2.95,1.2,0.95,1.31,1.18,0.83,1.43,0.7,1.45,1.16,1.47,0.61,0.67,1.37,0.85,1.19,null,1.08,0.49,2.39],[2.67,0.94,1.72,0.68,0.78,2.17,1.68,0.62,0.95,0.69,1.43,0.08,0.48,0.7,3.15,0.29,1.09,0.73,0.55,0.43,0,0.97,0.56,0.86,0.46,1,1.78,0.78,0.28,0.56,2.47,2.22,0.85,2.31,0.78,1.11,0.67,0.74,1.39,0.32,3.73,0.99,1.03,0.49,1.21,0.38,0.76,1.63,0.66,1.23,0.89,1.32,0.7,0.26,1.17,1.02,0.3,0.82,0.56,3.22,1.73,0.65,0.47,3.47,1.39,1.01,0.78,2.79,0.52,4.88,0.8,1.67,0.93,1.12,2.05,1.39,2.23,0.29,0.92,4.65,1.04,1.25,0.78,0.65,0.6,0.57,0.72,0.48,0.78,1.34,0.93,1.3,0.68,0.8,0.3,1.28,3.73,1.36,1.05,0.77,1.73,7.17,1.23,0.9,0.17,3.4,0.84,1.83,2.45,0.47,2.34,7.76,1.53,2.2,1.02,0.44,2.19,2,0.67,1.01,2.13,1.34,0.56,0.53,0.51,0.63,0.93,0.53,11.33,2.51,6.79,0.34,0.79,0.98,0.72,1.12,7.3,0.9,1.15,0.6,0.93,0.9,0.37,1.18,1.09,1.39,0.2,0.24,0.47,0.32,0.45,1.13,0.55,0.62,0,2.14,1.11,1,0.92,0.95,0.94,1.43,0.63,0.67,1.6,3.85,1.89,0.63,0.43,0.58,0.34,0.5,3.3,1.46,7.69,0.34,0.83,1.05,0.76,0.85,1.2,0.7,1.44,0.69,0.86,0.68,1.64,1.48,0.73,1.18,0.84,0,0.92,2.06,0.42],[7588.81,-0.69,1368.77,-0.18,-0.11,9910.12,0.59,-489.74,-5.95,-21.65,23.93,-644.96,-5.89,-3.29,49863.22,-2.37,42.01,-24.39,-9.76,-1778.98,-0.18,-5.22,-410.83,-19.78,-2371.89,7.29,9.93,-25.17,-4836.98,-2658.59,5387.19,7205.85,-22.27,36.27,-1418.36,561.87,-238.89,-13538.41,400.54,-138.67,3455.86,-0.5,227.69,-35.14,9.83,-2.11,-12.75,26010.41,-11.14,70.95,-0.42,208.67,-345.9,-662.24,19.96,3,-1561.34,-6.19,-22650.08,9.87,27.52,-20.74,-643.16,837,154.17,1.36,-94.18,9782.49,-86.51,6.01,-0.34,2.88,-28.27,567.24,1283,39.24,1449.69,-369.56,-6.47,5.36,20696.4,26121.43,-411.89,-456.37,-13,-13.53,-139.66,-13.86,-867.27,6.82,-101.02,3728.41,-14.68,-671.28,-13.39,160.53,2629.03,24.05,3.19,-1757.6,1699.53,601.66,44.36,-0.15,-42.7,9518.72,-1711.4,1195.77,11.57,-2413.4,1.15,20.18,340.38,17.52,52.82,-18.2,268.49,322.01,-1.4,28.72,28909.15,8048.31,-1317.73,-5476.98,-42.23,-6.06,-13.89,-3757.96,216621.31,1.59,13218.48,-23.14,-6.26,-994.08,-0.77,29.88,3235.9,-32.34,318.51,-9435.61,-43.94,-28.57,-19.49,1.1,91.54,4687.76,-2928.92,-5.72,-2.02,-3.8,-11.75,76.09,-3147.2,-68.1,-1.6,2169.43,7.82,0.02,-1.36,-3.15,-477.62,29108.21,-2510.64,-155.09,443.82,5901.57,11.82,-1145.5,-40.99,-14.74,-39.71,-258.28,38272.32,4328.71,1034.76,-1300.23,-0.27,1.26,-75.97,-136.02,75.51,-5080.69,2157.99,-19.99,-53.09,-311.41,36.92,956.46,-6.18,139.87,-3251.65,-1.12,-133.69,8948.07,-11082.35],[-7588.81,0.69,-1368.77,0.18,0.11,-9910.12,-0.59,489.74,5.95,21.65,-23.93,644.96,5.89,3.29,-49863.22,2.37,-42.01,24.39,9.76,1778.98,0.18,5.22,410.83,19.78,2371.89,-7.29,-9.93,25.17,4836.98,2658.59,-5387.19,-7205.85,22.27,-36.27,1418.36,-561.87,238.89,13538.41,-400.54,138.67,-3455.86,0.5,-227.69,35.14,-9.83,2.11,12.75,-26010.41,11.14,-70.95,0.42,-208.67,345.9,662.24,-19.96,-3,1561.34,6.19,22650.08,-9.87,-27.52,20.74,643.16,-837,-154.17,-1.36,94.18,-9782.49,86.51,-6.01,0.34,-2.88,28.27,-567.24,-1283,-39.24,-1449.69,369.56,6.47,-5.36,-20696.4,-26121.43,411.89,456.37,13,13.53,139.66,13.86,867.27,-6.82,101.02,-3728.41,14.68,671.28,13.39,-160.53,-2629.03,-24.05,-3.19,1757.6,-1699.53,-601.66,-44.36,0.15,42.7,-9518.72,1711.4,-1195.77,-11.57,2413.4,-1.15,-20.18,-340.38,-17.52,-52.82,18.2,-268.49,-322.01,1.4,-28.72,-28909.15,-8048.31,1317.73,5476.98,42.23,6.06,13.89,3757.96,-216621.31,-1.59,-13218.48,23.14,6.26,994.08,0.77,-29.88,-3235.9,32.34,-318.51,9435.61,43.94,28.57,19.49,-1.1,-91.54,-4687.76,2928.92,5.72,2.02,3.8,11.75,-76.09,3147.2,68.1,1.6,-2169.43,-7.82,-0.02,1.36,3.15,477.62,-29108.21,2510.64,155.09,-443.82,-5901.57,-11.82,1145.5,40.99,14.74,39.71,258.28,-38272.32,-4328.71,-1034.76,1300.23,0.27,-1.26,75.97,136.02,-75.51,5080.69,-2157.99,19.99,53.09,311.41,-36.92,-956.46,6.18,-139.87,3251.65,1.12,133.69,-8948.07,11082.35],[7.9,33.58,12.46,7.21,8.24,7.05,null,7.41,9.77,17.99,10.07,7.76,5.44,null,8.92,0,7.77,10.41,3.63,1.28,0,6.43,8.41,8,1.13,9.48,16.7,14.01,0.83,1.15,9.6,4.4,11.14,9.69,1.65,2.25,3.54,15.5,11.55,null,7.86,7.45,3.09,7.01,14.78,18.39,9.68,2.9,9.85,8.61,1.84,6.83,4.46,8.75,20.33,6.84,0.93,5.95,2.61,23.45,9.63,4.54,3.7,16.92,6.48,14.95,12.95,2.65,2.42,51.67,2.98,17.64,8.25,2.47,1.74,5.74,13.9,5.57,10.19,4.77,3.38,3.18,5.52,6.2,9.11,8.85,7.04,3.89,4.54,21.21,9.07,6.52,10.98,11.43,39.15,12.38,4.71,10.54,11.03,0.99,2.51,9.91,7.32,20.84,5.5,7.42,1.49,16.38,19.16,1.33,37.49,46.23,3.65,8.78,7.01,3.2,15.97,14.51,18.73,9.16,2.29,5.9,3.22,2.87,9.91,17.8,12.7,1.31,4.16,26.53,49.39,8.14,10.82,6.93,14.72,6.34,51.33,7.15,13.98,11.79,10.28,7.27,1.68,null,13.58,8.35,1.52,1.87,1.84,3.4,8.4,5.54,1.9,9.13,4.99,6.22,31.79,9.66,7.63,6.89,1.82,4.21,1.44,8.51,12.65,9.08,10.83,1.38,10.88,14.98,48.18,11.49,3.66,6.57,21.59,1.33,8.78,7.65,10.55,14.14,null,2.47,6.1,0.97,15.06,9.3,15.57,8.22,5.9,9.33,4.94,null,4.36,4.33,1.41],[2.96,35.56,7.25,10.58,10.58,3.25,null,11.91,10.32,26.1,7.06,93.36,11.24,null,2.83,0,7.15,14.34,6.65,3,null,6.66,15.13,9.36,2.45,9.47,9.37,17.9,2.94,2.07,3.89,1.99,13.13,4.2,2.12,2.03,5.27,21.02,8.32,null,2.1,7.52,3,14.27,12.23,47.76,12.78,1.78,14.99,7.01,2.07,5.19,6.41,33.3,17.44,6.73,3.14,7.25,4.63,7.27,5.57,7.02,7.84,4.87,4.64,14.86,16.5,0.95,4.64,10.58,3.73,10.57,8.88,2.21,0.85,4.11,6.24,19.06,11.04,1.03,3.24,2.54,7.11,9.47,15.23,15.45,9.82,8.15,5.78,15.81,9.7,5.02,16.26,14.36,131.01,9.65,1.26,7.73,10.47,1.28,1.45,1.38,5.94,23.18,33.05,2.18,1.77,8.94,7.83,2.86,15.99,5.96,2.38,3.99,6.89,7.27,7.3,7.26,27.85,9.09,1.07,4.4,5.78,5.47,19.5,28.23,13.68,2.49,0.37,10.57,7.28,23.88,13.64,7.08,20.4,5.65,7.03,7.93,12.17,19.72,11.08,8.07,4.54,null,12.49,6,7.72,7.83,3.91,10.58,18.86,4.92,3.46,14.65,3153.5,2.91,28.52,9.66,8.3,7.27,1.94,2.95,2.3,12.66,7.89,2.36,5.73,2.2,25.33,25.66,140.82,23.15,1.11,4.51,2.81,3.93,10.57,7.29,13.86,16.7,null,3.52,4.25,1.41,17.44,13.68,9.5,5.54,8.07,7.89,5.88,null,4.72,2.11,3.38],[25.66,1.04,7.66,null,1.89,17.93,null,1.49,1.67,1.06,1.65,0.2,0.91,null,9.11,null,2.23,1.18,0.7,5.18,null,3.51,1.22,1.28,4.54,1.21,1.51,0.71,3.45,8.24,13.39,6.65,null,6.2,7.7,12.93,2.16,4.65,1.22,null,30.32,1.83,3.13,0.59,0.83,0.29,0.45,13.31,2.05,6.43,null,3.72,3.07,0.78,1.03,2.51,6.6,1.06,6.68,3.84,2.1,1.28,null,10.36,3.45,1.58,0.58,9.95,null,null,null,1.81,1.96,8.35,13.93,1.56,null,0.85,0.74,29.25,7.87,16.99,1.83,3.55,1.6,1.21,null,1.35,null,1.46,1.85,3.14,0.85,0.84,0.93,2.06,10.44,1.42,3.56,5.55,16.39,136.29,1.43,null,0.42,10.66,5.87,1.17,3.22,4.21,null,1.98,14.26,5.27,1.69,3.84,1.14,5.62,0.53,5.09,15.02,4.64,2.98,6.56,1.69,0.81,1.73,5.76,47.66,1.64,3.79,1.31,1.87,9.33,0.75,1.95,3.3,1.36,2.14,2.14,0.99,1.72,0.95,null,0.99,1.28,1.41,null,null,0.54,0.38,3.09,6.52,0.9,0,10.23,0.43,1.72,0.72,2.79,11.66,4.91,9.44,1.29,1.81,12.29,1.15,3.21,1.07,null,0.37,0.84,15.15,2.81,13.39,3.65,3.22,0.8,3.52,1.15,null,3.54,1.74,7.15,0.98,1.21,0.73,3.24,2.48,1.92,6.6,null,13.42,7.32,3.19],[9.61,1.1,4.46,null,2.43,8.27,null,2.39,1.77,1.54,1.15,2.36,1.88,null,2.89,null,2.05,1.63,1.29,12.12,null,3.64,2.2,1.49,9.85,1.21,0.85,0.9,12.21,14.82,5.42,3,null,2.69,9.91,11.65,3.21,6.31,0.88,null,8.12,1.85,3.03,1.2,0.68,0.74,0.59,8.15,3.11,5.24,null,2.82,4.4,2.98,0.88,2.47,22.31,1.3,11.83,1.19,1.22,1.97,null,2.98,2.47,1.57,0.74,3.57,null,null,null,1.08,2.11,7.49,6.8,1.12,null,2.92,0.8,6.29,7.55,13.56,2.36,5.42,2.67,2.1,null,2.84,null,1.09,1.98,2.42,1.26,1.06,3.12,1.61,2.8,1.04,3.38,7.2,9.45,19.01,1.16,null,2.54,3.14,7,0.64,1.32,9.04,null,0.25,9.3,2.39,1.66,8.73,0.52,2.81,0.79,5.05,7.04,3.46,5.34,12.48,3.32,1.28,1.87,10.95,4.21,0.65,0.56,3.83,2.36,9.54,1.03,1.74,0.45,1.51,1.86,3.58,1.07,1.91,2.57,null,0.91,0.92,7.18,null,null,1.69,0.86,2.74,11.84,1.44,1.9,4.79,0.38,1.71,0.78,2.95,12.44,3.44,15.09,1.91,1.13,3.19,0.61,5.1,2.49,null,1.08,1.68,4.59,1.93,1.74,10.77,3.87,0.77,4.63,1.36,null,5.05,1.21,10.35,1.13,1.77,0.45,2.19,3.39,1.62,7.85,null,14.53,3.56,7.61],[0.91,-0.06,0.53,-0.38,-0.25,0.74,0.51,-0.47,-0.05,-0.37,0.35,-1.69,-0.7,-0.36,1.04,-1.11,0.08,-0.32,-0.59,-0.8,-2,-0.04,-0.57,-0.16,-0.74,0,0.56,-0.24,-1.12,-0.57,0.85,0.76,-0.16,0.79,-0.25,0.1,-0.39,-0.3,0.33,-1.04,1.15,-0.01,0.03,-0.68,0.19,-0.89,-0.28,0.48,-0.41,0.2,-0.12,0.27,-0.36,-1.17,0.15,0.02,-1.09,-0.2,-0.56,1.05,0.53,-0.43,-0.72,1.11,0.33,0.01,-0.24,0.94,-0.63,1.32,-0.23,0.5,-0.07,0.11,0.69,0.33,0.76,-1.1,-0.08,1.29,0.04,0.22,-0.25,-0.42,-0.5,-0.54,-0.33,-0.71,-0.24,0.29,-0.07,0.26,-0.39,-0.23,-1.08,0.25,1.15,0.31,0.05,-0.26,0.54,1.51,0.21,-0.11,-1.43,1.09,-0.18,0.59,0.84,-0.73,0.8,1.54,0.42,0.75,0.02,-0.78,0.75,0.67,-0.39,0.01,0.72,0.29,-0.57,-0.62,-0.65,-0.45,-0.07,-0.62,1.68,0.86,1.49,-0.98,-0.23,-0.02,-0.32,0.11,1.52,-0.1,0.14,-0.5,-0.08,-0.1,-0.92,0.17,0.08,0.33,-1.34,-1.23,-0.72,-1.03,-0.77,0.12,-0.58,-0.46,-1.99,0.73,0.11,0,-0.08,-0.05,-0.06,0.35,-0.46,-0.39,0.46,1.18,0.62,-0.46,-0.8,-0.53,-0.98,-0.67,1.07,0.37,1.54,-0.99,-0.19,0.05,-0.27,-0.17,0.18,-0.35,0.36,-0.37,-0.15,-0.38,0.48,0.39,-0.31,0.17,-0.17,-2,-0.08,0.69,-0.82],[3.73,0.18,0.91,null,0,3.13,null,0.1,0.04,0.04,0.04,0.01,0,null,1.1,null,0.01,0.06,0,0.73,null,0.37,0.12,0.03,0.42,0.04,0,0.02,0.5,1.16,1.59,0.78,null,0.18,0.87,2.14,0.02,0.46,0.12,null,4.25,0.08,0.39,0,0.02,0,0,1.9,0,0.8,null,0.21,0.14,0.34,0.06,0.32,0.97,0,0.95,0.49,0.27,0.05,null,1.37,0.52,0.04,0.01,1.27,null,null,null,0,0.19,0.98,1.92,0.09,null,0.06,0,0,0.94,1.81,0.2,0.33,0,0,null,0,null,0.05,0.04,0.44,0.27,0.01,0,0.05,1.29,0.02,0.39,0.48,2.35,15.91,0,null,0,1.47,0.81,0.03,0.18,0.64,null,0.24,1.93,0.07,0.07,0.49,0.02,0.66,0,0.32,2.03,0.5,0.31,0.78,0.04,0.03,0.13,0.91,6.94,0,0.41,0.09,0.47,1.19,0,0.33,0.5,0.15,0.15,0.11,0.01,0.01,0,null,0.03,0.01,0.19,null,null,0,0,0.2,0.97,0.01,0,1.44,0,0.08,0,0.38,1.77,0.27,1.3,0.04,0.05,1.71,0.1,0.29,0,null,0.12,0.04,2.21,0.03,1.89,0.46,0,0.04,0.61,0.17,null,0.57,0.01,0.87,0.03,0.04,0.01,0.04,0.32,0.14,0.69,null,1.85,1.28,0.38],[0.64,0.01,0.07,null,0,1.1,null,0.07,0.01,0.01,0,0.03,0.01,null,0.02,null,0,0.01,0.04,0.82,null,0.18,0.07,0,0.53,0.02,0,0,1.4,1.85,0.1,0.29,null,0.05,0.72,1.48,0.02,0.06,0.03,null,0.77,0.02,0.24,0,0,0,0,0.88,0.01,0.3,null,0.12,0.09,0.07,0.02,0.26,1.78,0,0.98,0.03,0.04,0,null,0.12,0.23,0.01,0,0.24,null,null,null,0.02,0.12,0.52,0.72,0.03,null,0.11,0,0.04,0.18,0.14,0.02,0.21,0.02,0.03,null,0.04,null,0.03,0.02,0.28,0.05,0,0.07,0.01,0.08,0,0.03,0.87,0.75,0.5,0,null,0.01,0.26,1.48,0,0.01,0.59,null,0.01,0.55,0.02,0.03,0.03,0,0.06,0,0.11,1.62,0.03,0.62,0.37,0.02,0.01,0.04,1.1,0.52,0.01,0.01,0.01,0.04,0.71,0.1,0.07,0.01,0.04,0.05,0.08,0,0.01,0.01,null,0.01,0,0.94,null,null,0.04,0.03,0.05,0.73,0,0.01,0.32,0,0,0,0.1,1.29,0.35,1.36,0.01,0,0.26,0.01,0.66,0.01,null,0.05,0.04,0.56,0,0.04,0.7,0.1,0.01,0.07,0.04,null,0.72,0,0.04,0.01,0.01,0,0.01,0.12,0.04,0.02,null,0.85,0.81,1.26],[1.41,1.75,1.71,-2,-2,0.96,-2,0.37,1.3,1.19,1.74,-1.03,-2,-2,1.92,-2,1.61,1.51,-2,-0.12,-2,0.67,0.48,1.82,-0.25,0.67,-2,1.72,-0.95,-0.46,1.77,0.93,0.99,1.18,0.19,0.37,-0.35,1.51,1.32,-0.13,1.39,1.08,0.47,0.71,1.28,-2,-2,0.73,-2,0.92,-2,0.56,0.41,1.34,1.23,0.2,-0.59,-2,-0.03,1.75,1.53,1.69,0.42,1.69,0.78,1.12,0.98,1.36,0.29,-2,-2,-2,0.4,0.61,0.9,0.94,1.8,-0.7,1.08,-2,1.36,1.72,1.63,0.44,-2,-2,1.63,-2,-0.92,0.54,0.81,0.43,1.36,0.67,-2,1.12,1.78,1.7,1.71,-0.58,1.03,1.88,1.32,-2,-2,1.41,-0.59,1.57,1.81,0.08,-2,1.87,1.11,1.25,0.76,1.75,1.6,1.69,-2,1.01,0.22,1.79,-0.65,0.72,0.57,1.04,0.96,-0.19,1.72,-2,1.93,1.58,1.66,0.5,-2,1.29,1.91,1.15,0.93,0.36,0.76,0.87,-2,-2,1.45,0.94,-1.33,-2,-2,-2,-2,1.14,0.29,0.87,-2,1.28,-2,1.76,-2,1.16,0.31,-0.25,-0.04,1.35,1.63,1.47,1.58,-0.78,-2,0.82,0.75,-0.11,1.2,1.84,1.91,-0.41,-2,1.29,1.58,1.18,1.5,-0.23,1.3,1.82,1.07,0.87,0.65,1.02,0.92,1.17,1.88,-2,0.75,0.45,-1.07],[0.03,0,0.01,null,0,1.47,null,0,0,0,0,0,0,null,0,null,0.01,0,0,0.16,null,0.03,0.02,0,0.25,0.01,0,0,0.06,0.2,0.02,0.28,null,0.18,0.4,1.03,0,0,0.02,null,2.18,0,0.09,0,0,0,0,0.41,0,0.07,null,0.05,0.04,0.01,0.01,0.21,0.11,0,0.14,0,0,0,null,0.07,0.15,0,0,0.38,null,null,null,0,0.03,0.21,0.72,0.02,null,0.01,0,0,0.06,0.22,0,0,0,0,null,0,null,0,0,0.2,0,0,0,0,0.04,0,0,0.34,0.51,0,0,null,0,0.14,0.58,0,0,0.14,null,0,0.26,0.01,0.01,0,0.01,0,0,0.01,1.18,0.03,0.13,0.02,0,0,0,0.08,1.71,0,0,0,0,0.03,0,0,0.14,0,0.02,0,0,0,0,null,0,0,0.07,null,null,0,0,0,0.13,0,0,0.28,0,0,0,0,0.06,0.16,0.21,0,0,0.14,0.01,0.2,0,null,0,0,1,0,0,0.1,0,0,0,0,null,0.32,0.01,0,0,0,0,0,0,0.02,0.01,null,0.06,0.97,0.29],[0,0,0,null,0,0.3,null,0.04,0,0,0,0,0,null,0,null,0,0,0.02,0.33,null,0,0,0,0.46,0.01,0,0,0.39,0.65,0.04,0.2,null,0.01,0.38,0.59,0.02,0.01,0,null,0.41,0.01,0.15,0,0,0,0,0.28,0,0.11,null,0.03,0,0.01,0,0.13,0.38,0,0.34,0.01,0,0,null,0.04,0.11,0,0,0.12,null,null,null,0,0.04,0.25,0.48,0.02,null,0.04,0,0,0.04,0.05,0,0,0.01,0.01,null,0,null,0,0,0.21,0,0,0.01,0,0.01,0,0.01,0.77,0.11,0.13,0,null,0,0,1.19,0,0,0.38,null,0,0.15,0.01,0.01,0.01,0,0,0,0.01,1.41,0.01,0.51,0.01,0.01,0,0,0.27,0.24,0,0,0,0,0.01,0,0,0,0.01,0,0,0,0,0.01,null,0,0,0.45,null,null,0.02,0,0.01,0.2,0,0.01,0.07,0,0,0,0.02,0.21,0.31,0.37,0,0,0.02,0,0.59,0,null,0,0,0.29,0,0,0.36,0.02,0.01,0,0,null,0.48,0,0.01,0,0,0,0,0.02,0.01,0,null,0.02,0.72,1.06],[1.87,-2,1.24,-2,-2,1.33,-2,-1.75,-2,-2,-2,1.61,-2,-2,-0.01,-2,1.96,-2,-2,-0.7,-2,1.61,1.96,-2,-0.58,-0.13,-2,-2,-1.47,-1.06,-0.6,0.36,-0.13,1.72,0.04,0.55,-2,-0.82,1.3,-2,1.37,-2,-0.5,-2,-0.99,-2,-2,0.38,-2,-0.46,-2,0.72,1.64,0.24,0.95,0.45,-1.11,-2,-0.86,-2,-2,-2,0.35,0.51,0.25,1.78,0.96,1.02,-2,-2,-2,-2,-0.48,-0.14,0.39,0.05,0.48,-1.02,-2,-2,0.52,1.32,1.85,-2,-2,-2,1.72,-2,-2,-2,1.02,-0.09,-2,-1.25,-2,1.67,1.12,0.92,-2,-0.79,1.3,-2,-2,-2,-2,1.93,-0.69,-1.42,-2,-0.95,-2,-2,0.56,0.23,-0.38,-2,1.93,-2,-2,-0.11,-0.18,1.4,-1.18,0.35,-2,-2,1.17,-1.05,1.52,-2,-0.53,-2,-2,1.36,-2,0.85,1.89,-0.61,1.75,0.55,-1.25,-2,-2,-2,-2,-1.64,-1.47,-2,-2,-2,-2,-2,-0.4,-2,-2,1.15,-2,-2,-2,-2,-1.1,-0.64,-0.53,-2,0.72,1.52,0.75,-0.99,-2,-2,-2,0.42,1.1,1.68,-2,-1.12,-2,-2,-2,0.71,-2,-0.39,1.17,-2,-1.76,-0.33,0.44,1.74,-2,0.9,0.64,-2,1.02,0.29,-1.14],[0.37,0.14,0.08,null,0,7.04,null,0.19,0.22,0.08,0.04,0.07,0.6,null,0.03,null,0.3,0.2,0.18,1.14,null,0.58,0.41,0.01,3.21,0.34,0,0,0.49,1.63,0.65,3.14,null,3.55,4.23,5.63,0.09,0.32,0.36,null,15.74,0.23,1.04,0.01,0.15,0.04,0.01,3.26,0.13,0.6,null,1.62,1.17,0.06,0.18,1.65,0.53,0.12,0.89,0,0.05,0.03,null,0.48,0.95,0.41,0.04,3.33,null,null,null,0,0.26,2.95,5.27,0.38,null,0.38,0.01,0,0.56,3.48,0.09,0.02,0.2,0.16,null,0.64,null,0.01,0.09,1.39,0.01,0.01,0.04,0.12,0.71,0.43,0.08,4.45,3.44,4.3,0.05,null,0,1.2,4.34,0.1,0.01,0.89,null,0.01,2.06,2.13,0.28,0,0.42,0.02,0.06,0.22,9.27,0.71,1.58,0.54,0.37,0.02,0.27,0.51,11.5,0,0.01,0.12,0.04,0.32,0,0.28,0.59,0.16,0.43,0.07,0.03,0.31,0.12,null,0.05,0.12,0.54,null,null,0,0.1,0.08,0.69,0.04,0,2.05,0.03,0,0,0,0.34,3.66,1.7,0.22,0.02,0.98,0.49,2.56,0.12,null,0,0.11,6.9,1.11,0.04,1.1,0.01,0.19,0.08,0.02,null,1.89,0.52,0.33,0.11,0.14,0.2,0.36,0,0.38,0.41,null,0.42,5.21,2.52],[0.01,0.04,0.19,null,0.22,1.51,null,1.28,0.1,0.07,0.04,0.04,0.39,null,0.02,null,0.1,0.15,0.37,1.68,null,0.02,0.1,0.02,6.49,0.31,0.01,0.01,1.83,3.21,0.78,1.33,null,0.33,3.47,2.74,0.92,0.32,0.14,null,2.07,0.24,0.88,0.03,0.08,0.03,0.02,1.37,0.17,0.85,null,0.56,1,0.05,0.15,0.78,1.78,0.2,1.88,0.09,0.05,0.04,null,0.96,0.5,0.07,0.03,0.89,null,null,null,0.02,0.36,1.93,3.03,0.37,null,0.41,0.03,0.22,0.41,0.92,0.31,0,0.35,0.15,null,0.93,null,0,0.03,0.99,0.01,0.02,0.02,0.06,0.23,0.13,0.21,5.02,0.89,1.9,0.03,null,0.03,0.02,4.29,0.08,0.01,1.77,null,0,1.05,0.32,0.26,0.48,0.02,0.01,0.01,0.24,4.34,0.43,3.27,0.33,0.41,0.07,0.1,1.18,0.91,0.01,0.03,0.1,0.11,0.07,0.04,0.34,0.07,0.35,0.17,0.01,0.04,0.43,0.66,null,0.02,0.07,2.02,null,null,0.17,0.01,0.13,1.13,0.15,0.29,0.61,0.03,0,0.01,0.18,0.81,2.16,2.5,0.26,0.01,0.3,0.23,3.78,0.06,null,0.01,0.04,1.72,0.42,0.02,2.45,0.22,0.23,0.18,0.02,null,2.7,0.22,0.48,0.09,0.22,0.09,0.04,0.23,0.29,0.77,null,0.36,2.06,5.09],[1.87,1.15,-0.79,-1.91,-2,1.29,0.64,-1.47,0.78,0.12,0.01,0.54,0.41,0.82,0.63,-2,1.01,0.27,-0.67,-0.39,-2,1.87,1.22,-0.61,-0.68,0.12,-2,-0.87,-1.15,-0.65,-0.19,0.81,-0.22,1.66,0.2,0.69,-1.65,-0.01,0.84,-0.44,1.53,-0.03,0.18,-0.54,0.61,0.46,-0.93,0.81,-0.25,-0.35,-1.99,0.97,0.15,0.23,0.18,0.72,-1.08,-0.47,-0.71,-2,-0.06,-0.39,-0.94,-0.67,0.62,1.43,0.39,1.16,-1.05,-2,0.22,-1.18,-0.32,0.42,0.54,0.01,0.78,-0.09,-0.68,-1.92,0.31,1.16,-1.11,1.45,-0.53,0.08,0.13,-0.37,-1.33,0.97,0.9,0.33,0.82,-0.29,0.69,0.7,1.03,1.05,-0.9,-0.12,1.18,0.78,0.43,1.43,-1.59,1.93,0.01,0.2,-0.13,-0.66,1.67,1.11,0.65,1.47,0.06,-2,1.78,0.88,1.43,-0.08,0.73,0.5,-0.7,0.47,-0.1,-1.28,0.91,-0.8,1.71,-0.94,-1.17,0.16,-0.97,1.28,-1.59,-0.2,1.56,-0.74,0.87,1.34,-0.1,-0.33,-1.36,1.57,0.78,0.5,-1.15,-0.81,-1.3,-2,1.75,-0.46,-0.48,-1.15,-1.96,1.08,0.23,0.27,-1.55,-2,-0.81,0.51,-0.38,-0.19,0.53,1.06,0.74,-0.39,0.69,0.95,-2,1,1.2,0.9,0.52,-0.76,-1.88,-0.22,-0.77,0.33,-2,-0.35,0.82,-0.39,0.25,-0.44,0.73,1.56,-2,0.26,-0.6,-2,0.14,0.87,-0.67],[16.05,-0.06,3.2,null,-0.54,9.67,null,-0.9,-0.09,-0.48,0.49,-2.16,-0.97,null,6.22,null,0.18,-0.44,-0.59,-6.93,null,-0.13,-0.98,-0.22,-5.31,0,0.66,-0.2,-8.77,-6.57,7.97,3.65,null,3.51,-2.21,1.28,-1.06,-1.66,0.34,null,22.2,-0.02,0.1,-0.61,0.14,-0.46,-0.14,5.16,-1.07,1.19,null,0.89,-1.33,-2.2,0.15,0.04,-15.71,-0.23,-5.15,2.65,0.89,-0.7,null,7.37,0.97,0.01,-0.16,6.38,null,null,null,0.72,-0.15,0.86,7.12,0.44,null,-2.07,-0.06,22.96,0.32,3.43,-0.53,-1.87,-1.07,-0.9,null,-1.48,null,0.37,-0.13,0.72,-0.41,-0.22,-2.19,0.45,7.64,0.38,0.18,-1.64,6.93,117.29,0.27,null,-2.12,7.52,-1.13,0.53,1.91,-4.84,null,1.72,4.96,2.88,0.03,-4.89,0.62,2.8,-0.26,0.04,7.98,1.19,-2.36,-5.92,-1.64,-0.47,-0.13,-5.19,43.45,0.98,3.23,-2.53,-0.49,-0.2,-0.29,0.21,2.85,-0.15,0.28,-1.44,-0.08,-0.19,-1.62,null,0.08,0.36,-5.77,null,null,-1.15,-0.47,0.35,-5.33,-0.54,-1.9,5.44,0.04,0,-0.06,-0.15,-0.77,1.47,-5.65,-0.63,0.68,9.1,0.54,-1.89,-1.42,null,-0.71,-0.85,10.56,0.88,11.65,-7.13,-0.66,0.04,-1.1,-0.21,null,-1.51,0.53,-3.2,-0.15,-0.57,0.28,1.05,-0.91,0.3,-1.25,null,-1.11,3.76,-4.42],[3.09,0.17,0.84,null,-0,2.04,null,0.03,0.03,0.03,0.04,-0.02,-0.01,null,1.08,null,0.01,0.06,-0.04,-0.09,null,0.19,0.05,0.03,-0.12,0.02,-0,0.02,-0.91,-0.69,1.49,0.5,null,0.14,0.15,0.67,-0.01,0.39,0.1,null,3.48,0.06,0.15,0,0.02,-0,-0,1.02,-0.01,0.5,null,0.09,0.05,0.27,0.05,0.06,-0.81,-0,-0.03,0.46,0.23,0.04,null,1.26,0.29,0.03,0,1.03,null,null,null,-0.02,0.06,0.46,1.19,0.06,null,-0.06,0,-0.04,0.76,1.67,0.18,0.12,-0.02,-0.03,null,-0.04,null,0.02,0.02,0.16,0.22,0,-0.07,0.04,1.22,0.02,0.36,-0.39,1.6,15.41,0,null,-0.01,1.22,-0.68,0.03,0.17,0.05,null,0.23,1.38,0.06,0.04,0.46,0.02,0.6,-0,0.22,0.4,0.47,-0.3,0.41,0.02,0.02,0.08,-0.19,6.42,-0.01,0.41,0.08,0.43,0.48,-0.1,0.26,0.49,0.11,0.09,0.03,0,0.01,-0.01,null,0.03,0.01,-0.75,null,null,-0.04,-0.03,0.15,0.24,0.01,-0.01,1.12,-0,0.07,-0,0.28,0.48,-0.08,-0.06,0.03,0.04,1.45,0.09,-0.37,-0.01,null,0.06,-0,1.65,0.03,1.85,-0.24,-0.1,0.03,0.54,0.12,null,-0.15,0.01,0.83,0.02,0.02,0,0.03,0.2,0.1,0.67,null,1.01,0.47,-0.87],[0.03,-0,0.01,null,-0,1.18,null,-0.04,-0,-0,-0,0,-0,null,-0,null,0.01,-0,-0.02,-0.17,null,0.03,0.02,-0,-0.2,-0,-0,-0,-0.33,-0.45,-0.02,0.09,null,0.17,0.01,0.44,-0.02,-0.01,0.02,null,1.77,-0.01,-0.06,-0,-0,-0,-0,0.13,-0,-0.04,null,0.03,0.03,0,0,0.08,-0.27,-0,-0.21,-0.01,-0,-0,null,0.03,0.03,0,0,0.26,null,null,null,-0,-0.02,-0.03,0.23,0,null,-0.03,-0,-0,0.03,0.17,0,-0,-0.01,-0.01,null,-0,null,-0,0,-0.02,-0,-0,-0.01,0,0.03,0,-0.01,-0.44,0.41,-0.13,-0,null,-0,0.14,-0.61,-0,-0,-0.24,null,-0,0.11,0,-0,-0.01,0.01,-0,-0,-0,-0.24,0.03,-0.38,0.01,-0.01,-0,0,-0.18,1.48,-0,-0,-0,-0,0.02,-0,0,0.14,-0,0.01,0,-0,-0,-0.01,null,-0,-0,-0.38,null,null,-0.02,-0,-0.01,-0.07,-0,-0.01,0.2,-0,-0,-0,-0.02,-0.15,-0.15,-0.16,-0,0,0.12,0,-0.39,-0,null,-0,0,0.71,0,-0,-0.26,-0.02,-0.01,-0,0,null,-0.16,0,-0.01,-0,-0,0,0,-0.02,0.01,0,null,0.04,0.25,-0.77],[0.35,0.1,-0.1,null,-0.22,5.53,null,-1.08,0.12,0.01,0,0.03,0.2,null,0.01,null,0.2,0.05,-0.19,-0.55,null,0.56,0.31,-0.01,-3.28,0.04,-0.01,-0,-1.34,-1.58,-0.13,1.81,null,3.21,0.76,2.9,-0.83,-0,0.21,null,13.67,-0.01,0.17,-0.01,0.07,0.01,-0.02,1.88,-0.04,-0.26,null,1.06,0.17,0.01,0.03,0.88,-1.25,-0.08,-0.99,-0.09,-0,-0.01,null,-0.48,0.45,0.34,0.01,2.44,null,null,null,-0.01,-0.1,1.01,2.24,0,null,-0.03,-0.02,-0.22,0.15,2.56,-0.22,0.02,-0.15,0.01,null,-0.29,null,0,0.05,0.4,0.01,-0.01,0.02,0.06,0.48,0.3,-0.13,-0.57,2.56,2.4,0.02,null,-0.03,1.18,0.05,0.02,-0,-0.88,null,0,1.01,1.81,0.01,-0.48,0.4,0.01,0.05,-0.02,4.93,0.29,-1.69,0.2,-0.04,-0.06,0.17,-0.68,10.59,-0,-0.03,0.02,-0.07,0.25,-0.03,-0.06,0.52,-0.19,0.26,0.05,-0,-0.12,-0.53,null,0.03,0.05,-1.47,null,null,-0.17,0.1,-0.05,-0.44,-0.11,-0.29,1.43,0.01,0,-0.01,-0.18,-0.47,1.49,-0.8,-0.05,0.01,0.68,0.27,-1.23,0.06,null,-0.01,0.08,5.18,0.69,0.02,-1.35,-0.21,-0.05,-0.1,0.01,null,-0.81,0.3,-0.16,0.02,-0.08,0.11,0.31,-0.23,0.09,-0.35,null,0.05,3.15,-2.57],[46,18,24,157,156,84,158,124,56,65,20,153,160,159,2,163,34,42,161,136,162,106,115,10,140,108,164,23,152,144,15,89,82,67,131,123,142,41,54,137,48,76,116,105,61,165,166,103,168,91,167,112,121,53,63,130,146,169,133,17,40,28,120,29,98,73,83,49,127,171,170,172,122,110,92,86,12,149,75,174,51,21,32,118,173,175,31,176,151,113,97,119,50,107,177,72,14,26,25,145,79,5,55,179,180,47,147,39,11,132,181,7,74,62,100,19,35,27,182,81,129,13,148,104,111,78,85,138,22,183,1,38,30,114,185,59,4,70,88,125,99,94,184,186,45,87,155,178,193,195,188,71,128,95,191,60,187,16,189,69,126,141,134,52,33,44,37,150,190,96,101,135,64,8,3,143,192,58,36,66,43,139,57,9,77,93,109,80,90,68,6,194,102,117,154],[18,92,39,135,119,28,40,148,91,134,49,192,165,132,16,186,76,127,158,174,194,89,156,106,170,85,36,118,187,155,20,25,107,23,121,74,140,125,54,182,11,87,80,164,64,176,124,43,141,63,104,58,131,188,68,82,184,112,153,15,38,143,167,12,51,84,116,17,161,7,113,41,95,72,32,52,24,185,99,8,79,61,120,142,149,152,129,166,117,57,94,59,137,114,183,60,10,55,77,122,37,5,62,103,191,13,110,35,21,169,22,2,45,26,81,172,27,33,138,83,30,56,154,159,162,144,96,160,1,19,6,179,115,88,128,71,4,101,69,150,97,102,177,67,75,53,190,189,168,181,171,70,157,147,193,29,73,86,100,90,93,50,146,139,44,9,34,145,173,151,178,163,14,47,3,180,111,78,123,108,65,130,48,133,105,136,42,46,126,66,109,195,98,31,175],[91.24,53.09,80.41,30.93,39.18,86.08,79.9,24.23,53.61,31.44,75.26,1.55,15.46,32.47,92.27,4.64,61.34,35.05,19.07,10.82,0,54.64,20.1,45.88,12.89,56.7,81.96,39.69,4.12,20.62,90.21,87.63,45.36,88.66,38.14,62.37,28.35,36.08,72.68,6.7,94.85,55.67,59.28,15.98,67.53,9.79,36.6,78.35,27.84,68.04,46.91,70.62,32.99,3.61,65.46,58.25,5.67,42.78,21.65,92.78,80.93,26.8,14.43,94.33,74.23,57.22,40.72,91.75,17.53,96.91,42.27,79.38,51.55,63.4,84.02,73.71,88.14,5.15,49.48,96.39,59.79,69.07,38.66,27.32,23.71,22.16,34.02,14.95,40.21,71.13,52.06,70.1,29.9,41.75,6.19,69.59,95.36,72.16,60.82,37.63,81.44,97.94,68.56,47.42,2.06,93.81,43.81,82.47,89.69,13.4,89.18,99.48,77.32,87.11,58.76,11.86,86.6,83.51,29.38,57.73,85.05,71.65,21.13,18.56,17.01,26.29,51.03,18.04,100,90.72,97.42,8.25,41.24,55.15,34.54,63.92,98.45,48.45,64.95,23.2,50.52,47.94,9.28,65.98,61.86,73.2,2.58,3.09,13.92,7.22,12.37,64.43,19.59,24.74,1.03,85.57,62.89,56.19,48.97,54.12,52.58,74.74,25.26,28.87,77.84,95.88,82.99,25.77,11.34,22.68,8.76,16.49,93.3,76.29,98.97,7.73,43.3,60.31,37.11,44.85,67.01,33.51,75.77,31.96,46.39,30.41,78.87,76.8,35.57,66.49,44.33,0,50,84.54,10.31],[76.8,91.24,88.14,0,0,57.22,0,36.6,71.65,67.01,90.21,21.65,0,0,99.48,0,82.99,78.87,0,30.41,0,45.88,41.24,95.36,28.35,44.85,0,88.66,22.16,26.29,92.78,54.64,58.25,65.98,32.99,37.11,27.32,79.38,72.68,29.9,75.77,61.34,40.72,46.39,69.07,0,0,47.42,0,53.61,0,42.78,38.14,73.2,68.04,33.51,25.26,0,31.96,91.75,79.9,86.08,38.66,85.57,50,62.89,57.73,75.26,35.05,0,0,0,37.63,43.81,53.09,56.19,94.33,23.71,61.86,0,74.23,89.69,84.02,39.69,0,0,84.54,0,22.68,42.27,50.52,39.18,74.74,45.36,0,63.4,93.3,87.11,87.63,25.77,59.79,97.94,72.16,0,0,76.29,24.74,80.41,94.85,32.47,0,96.91,62.37,68.56,48.97,90.72,82.47,86.6,0,58.76,34.02,93.81,24.23,46.91,43.3,60.31,56.7,29.38,89.18,0,100,80.93,85.05,41.75,0,70.1,98.45,64.43,55.15,36.08,49.48,52.06,0,0,77.32,55.67,20.62,0,0,0,0,63.92,34.54,51.55,0,69.59,0,92.27,0,64.95,35.57,27.84,31.44,73.71,83.51,77.84,81.44,23.2,0,51.03,48.45,30.93,67.53,96.39,98.97,26.8,0,70.62,81.96,66.49,78.35,28.87,71.13,95.88,60.82,52.58,44.33,59.28,54.12,65.46,97.42,0,47.94,40.21,21.13],[-0.09,null,-0.64,null,null,-0.3,-0.68,null,null,null,-1.04,null,null,null,0.04,null,-2.49,null,null,null,null,null,null,null,null,-6.97,-0.58,null,null,null,-0.17,-0.28,null,-0.24,null,-2.26,null,null,-1.12,null,0.14,null,-3.48,null,-1.67,null,null,-0.73,null,-1.59,null,-1.3,null,null,-1.88,-4.11,null,null,null,0.05,-0.63,null,null,0.1,-1.11,-5.04,null,-0.06,null,0.28,null,-0.69,null,-2.22,-0.37,-1.11,-0.27,null,null,0.26,-3.19,-1.49,null,null,null,null,null,null,null,-1.23,null,-1.35,null,null,null,-1.4,0.14,-1.18,-2.95,null,-0.62,0.41,-1.57,null,null,0.09,null,-0.53,-0.17,null,-0.22,0.43,-0.86,-0.29,-4.07,null,-0.29,-0.41,null,-4.76,-0.32,-1.23,null,null,null,null,null,null,0.52,-0.15,0.4,null,null,null,null,-2.17,0.42,null,-1.97,null,null,null,null,-1.8,-2.48,-1.11,null,null,null,null,null,-2.13,null,null,null,-0.32,-2.22,-7.26,null,null,null,-1.05,null,null,-0.77,0.16,-0.49,null,null,null,null,null,0.07,-0.99,0.43,null,null,-3.04,null,null,-1.71,null,-1.03,null,null,null,-0.73,-0.95,null,-1.79,null,null,null,-0.37,null],[0.34,0.56,0.54,null,null,-0.04,null,-1.01,0.27,0.17,0.55,null,null,null,0.65,null,0.47,0.41,null,null,null,-0.4,-0.73,0.6,null,-0.41,null,0.54,null,null,0.57,-0.08,-0.01,0.17,-1.66,-1,null,0.41,0.27,null,0.33,0.08,-0.76,-0.34,0.25,null,null,-0.31,null,-0.09,null,-0.57,-0.9,0.29,0.21,-1.61,null,null,null,0.56,0.42,0.52,-0.87,0.52,-0.25,0.11,-0.02,0.31,-1.25,null,null,null,-0.92,-0.49,-0.1,-0.06,0.59,null,0.08,null,0.3,0.54,0.49,-0.83,null,null,0.49,null,null,-0.62,-0.21,-0.84,0.31,-0.4,null,0.11,0.58,0.53,0.53,null,0.03,0.63,0.27,null,null,0.34,null,0.45,0.59,-2.47,null,0.62,0.1,0.22,-0.28,0.56,0.47,0.52,null,0.01,-1.52,0.58,null,-0.32,-0.55,0.04,-0.04,null,0.54,null,0.66,0.45,0.51,-0.69,null,0.26,0.65,0.14,-0.07,-1.03,-0.27,-0.14,null,null,0.37,-0.06,null,null,null,null,null,0.13,-1.25,-0.14,null,0.25,null,0.57,null,0.14,-1.16,null,null,0.3,0.49,0.39,0.45,null,null,-0.19,-0.29,null,0.18,0.61,0.65,null,null,0.26,0.46,0.17,0.4,null,0.26,0.6,0.07,-0.14,-0.44,0.02,-0.08,0.16,0.63,null,-0.29,-0.79,null],[45.52,-2.86,26.45,-18.94,-12.47,36.9,25.3,-23.3,-2.74,-18.39,17.61,-84.66,-34.79,-17.9,51.81,-55.57,4.15,-15.85,-29.4,-40.1,-100,-1.77,-28.52,-7.81,-36.91,0.05,28.11,-12.22,-55.98,-28.5,42.36,37.8,-8.18,39.51,-12.56,5.22,-19.69,-15.13,16.28,-51.96,57.74,-0.44,1.54,-34.13,9.43,-44.41,-13.82,24.03,-20.69,10.21,-5.78,13.66,-17.85,-58.38,7.64,0.82,-54.34,-9.83,-27.83,52.66,26.75,-21.43,-35.95,55.29,16.48,0.32,-12.05,47.23,-31.41,66,-11.28,25.06,-3.64,5.44,34.37,16.46,38.02,-54.79,-3.99,64.61,2.05,11.22,-12.53,-20.9,-25.13,-27.18,-16.48,-35.42,-12.06,14.57,-3.38,13,-19.4,-11.38,-53.98,12.39,57.75,15.38,2.62,-12.87,26.83,75.52,10.42,-5.31,-71.45,54.5,-8.8,29.36,42,-36.52,40.21,77.17,21.05,37.54,0.85,-38.89,37.28,33.27,-19.57,0.43,36.18,14.65,-28.36,-31.08,-32.63,-22.67,-3.71,-31.08,83.78,43.01,74.31,-49.14,-11.52,-1.07,-16.16,5.7,75.92,-5.16,6.95,-25.16,-3.76,-5.24,-45.99,8.29,4.19,16.43,-67.14,-61.53,-36.14,-51.4,-38.38,5.93,-29.02,-23.23,-99.68,36.25,5.42,0.04,-4.19,-2.68,-3.21,17.58,-23.03,-19.61,23.18,58.77,30.76,-22.76,-39.9,-26.26,-49.02,-33.65,53.5,18.62,77,-49.43,-9.26,2.39,-13.56,-8.3,9.01,-17.59,17.91,-18.29,-7.33,-19.03,24.2,19.41,-15.49,8.38,-8.66,-100,-3.96,34.53,-40.94],[70.56,87.38,85.69,-100,-100,48.18,-100,18.29,65.23,59.32,86.75,-51.48,-100,-100,96.13,-100,80.36,75.61,-100,-5.92,-100,33.62,24.21,90.78,-12.25,33.33,-100,85.92,-47.65,-22.93,88.27,46.35,49.65,59.13,9.55,18.43,-17.72,75.62,65.83,-6.63,69.46,53.93,23.46,35.52,63.9,-100,-100,36.65,-100,45.8,-100,28.18,20.38,66.99,61.5,10.01,-29.44,-100,-1.74,87.5,76.4,84.44,20.9,84.33,39.04,55.82,48.84,68.15,14.3,-100,-100,-100,19.84,30.51,45.18,46.99,90.08,-34.94,53.99,-100,67.81,85.99,81.35,21.79,-100,-100,81.42,-100,-46.07,26.97,40.51,21.56,67.97,33.41,-100,56.06,88.87,85.24,85.26,-28.78,51.39,93.89,65.82,-100,-100,70.45,-29.59,78.61,90.36,4.23,-100,93.35,55.45,62.35,37.85,87.26,80.14,84.51,-100,50.33,10.97,89.37,-32.65,36.15,28.75,51.88,47.86,-9.62,85.99,-100,96.7,78.79,82.98,25.08,-100,64.53,95.54,57.33,46.59,17.83,38.12,43.36,-100,-100,72.64,46.94,-66.26,-100,-100,-100,-100,57.13,14.28,43.26,-100,63.93,-100,88.08,-100,57.76,15.62,-12.39,-2.2,67.4,81.26,73.73,78.79,-39.1,-100,41.15,37.29,-5.44,59.76,91.86,95.74,-20.72,-100,64.57,78.84,59.17,74.96,-11.56,64.97,91.02,53.57,43.57,32.35,51.19,46.05,58.55,93.88,-100,37.26,22.75,-53.44],[0.95,-0.24,0.73,-0.62,-0.5,0.86,0.71,-0.68,-0.23,-0.61,0.59,-1.3,-0.83,-0.6,1.02,-1.05,0.29,-0.56,-0.77,-0.9,-1.41,-0.19,-0.76,-0.4,-0.86,0.03,0.75,-0.49,-1.06,-0.76,0.92,0.87,-0.4,0.89,-0.5,0.32,-0.63,-0.55,0.57,-1.02,1.07,-0.09,0.18,-0.83,0.43,-0.94,-0.53,0.69,-0.64,0.45,-0.34,0.52,-0.6,-1.08,0.39,0.13,-1.04,-0.44,-0.75,1.03,0.73,-0.65,-0.85,1.05,0.57,0.08,-0.49,0.97,-0.79,1.15,-0.48,0.71,-0.27,0.33,0.83,0.57,0.87,-1.05,-0.28,1.14,0.2,0.47,-0.5,-0.65,-0.71,-0.74,-0.57,-0.84,-0.49,0.54,-0.26,0.51,-0.62,-0.48,-1.04,0.5,1.07,0.55,0.23,-0.51,0.73,1.23,0.46,-0.33,-1.2,1.04,-0.42,0.77,0.92,-0.85,0.9,1.24,0.65,0.87,0.13,-0.88,0.86,0.82,-0.63,0.09,0.85,0.54,-0.75,-0.79,-0.81,-0.67,-0.27,-0.79,1.29,0.93,1.22,-0.99,-0.48,-0.15,-0.57,0.34,1.23,-0.32,0.37,-0.71,-0.27,-0.32,-0.96,0.41,0.29,0.57,-1.16,-1.11,-0.85,-1.01,-0.88,0.34,-0.76,-0.68,-1.41,0.85,0.33,0.03,-0.29,-0.23,-0.25,0.59,-0.68,-0.63,0.68,1.08,0.78,-0.67,-0.89,-0.72,-0.99,-0.82,1.03,0.61,1.24,-0.99,-0.43,0.22,-0.52,-0.41,0.42,-0.59,0.6,-0.6,-0.38,-0.62,0.7,0.62,-0.56,0.41,-0.42,-1.41,-0.28,0.83,-0.9],[1.19,1.32,1.31,-1.41,-1.41,0.98,-1.41,0.6,1.14,1.09,1.32,-1.01,-1.41,-1.41,1.39,-1.41,1.27,1.23,-1.41,-0.34,-1.41,0.82,0.7,1.35,-0.5,0.82,-1.41,1.31,-0.98,-0.68,1.33,0.96,1,1.09,0.44,0.61,-0.6,1.23,1.15,-0.36,1.18,1.04,0.68,0.84,1.13,-1.41,-1.41,0.86,-1.41,0.96,-1.41,0.75,0.64,1.16,1.11,0.45,-0.77,-1.41,-0.19,1.32,1.24,1.3,0.65,1.3,0.88,1.06,0.99,1.17,0.53,-1.41,-1.41,-1.41,0.63,0.78,0.95,0.97,1.34,-0.84,1.04,-1.41,1.16,1.31,1.28,0.66,-1.41,-1.41,1.28,-1.41,-0.96,0.73,0.9,0.66,1.17,0.82,-1.41,1.06,1.33,1.31,1.31,-0.76,1.01,1.37,1.15,-1.41,-1.41,1.19,-0.77,1.25,1.34,0.29,-1.41,1.37,1.05,1.12,0.87,1.32,1.27,1.3,-1.41,1,0.47,1.34,-0.81,0.85,0.76,1.02,0.98,-0.44,1.31,-1.41,1.39,1.26,1.29,0.71,-1.41,1.14,1.38,1.07,0.97,0.6,0.87,0.93,-1.41,-1.41,1.21,0.97,-1.15,-1.41,-1.41,-1.41,-1.41,1.07,0.53,0.93,-1.41,1.13,-1.41,1.33,-1.41,1.07,0.56,-0.5,-0.21,1.16,1.27,1.21,1.26,-0.88,-1.41,0.91,0.86,-0.33,1.09,1.36,1.38,-0.64,-1.41,1.14,1.26,1.09,1.22,-0.48,1.14,1.35,1.04,0.93,0.8,1.01,0.96,1.08,1.37,-1.41,0.86,0.67,-1.03],[157.62,1.53,28.44,0,0,5709.59,0.26,103.11,13.91,3.81,2.12,19.46,3.62,1.54,226.33,0,69.84,11.12,3.07,251.05,0,22.69,163.83,0.74,1322.46,2151.21,0,0.32,239.5,578.73,427.07,5637.48,19.06,34.77,2459.74,2015.76,19.63,2536.95,392.45,2.98,2110.42,7.21,2282.34,0.85,10.04,0.18,0.79,14363.22,1.4,31.5,0,365.87,292.75,15.72,23.07,106.06,42.07,3.29,3333.34,0,1.49,0.82,52.72,46.35,126.5,54.28,25.31,4519.05,2.6,0,0.31,0.02,45.05,1796.61,819.91,31.72,619.77,64.96,1.55,0,32538.22,24818.59,67.69,5.54,2.48,2.48,23.77,5.95,11.89,0.12,66.29,6156.18,0.53,45.77,0.25,43.07,231.24,27.32,1.42,4410.13,718.23,22.05,7.78,0.39,0.07,1337.31,5681.4,232.37,0.04,374.35,0.99,0.07,123.8,12.92,502.17,0,178.89,1.91,0.3,139.66,29320.91,4632.28,808.03,480.2,9.48,0.2,27.49,308.46,48827.04,0,33.7,1.06,0.49,1429.27,0.01,38.44,505.06,34.21,474.44,413.62,18.57,46.21,1.5,0.09,62.69,1500.43,241.27,0.41,0.15,0,2.52,18.08,328.27,4.91,0,706.78,6.04,0.06,0.02,0,175.71,69392.72,661.86,53.66,10.71,543.86,10.63,1426.56,3.47,4.34,0,33.6,21379.59,5406.5,3.75,182.23,0,6.22,5.49,12.97,0,5282.34,2096.44,2.04,38.05,76.09,25.41,321.72,0,167.86,1053.08,0,43.46,10100.53,5597.68],[10208.3,8.14,2856.04,0.38,0.38,9459.55,1.19,648.88,89,42.21,75.84,36.22,1.9,6.01,64037.78,0.95,453.63,50.09,8.66,890.63,0,106.58,301.38,113.41,518.03,5297.15,22.63,87.85,1387.42,2286.49,7551.48,5949.51,103.24,27.4,1922.3,2707.97,463.56,31715.82,891.83,52.69,1949.04,46.75,4276.84,32.81,45.48,1.13,38.95,43166.8,19.95,304.02,3.39,453.15,466.12,117.62,108.75,54.8,517.24,25.11,21860.66,12.46,55.5,35.74,514.65,973.14,336.22,153.15,314.84,8780.33,91.21,7.56,1.03,7.17,294.09,3053.3,1343.01,99.11,798.2,77.62,75.68,6.82,420504.63,90818.33,1213.92,778.25,16.89,15.64,317.45,6.68,3148.67,25.77,1346.31,7766.4,20.19,2550.76,5.46,667.43,2915.35,61.64,54.42,1024.78,2722.15,595.48,226.52,0.91,8.47,10291.25,1975.51,2331.8,18.43,1403.8,1.01,20.3,722.21,18.73,2508.12,12.46,308,567.57,2.57,3018.9,17748.27,23507.41,680.61,4872.01,33.04,9.71,139.48,3198.86,154155.86,2.64,13776.09,10.06,17.54,38512.07,2,192.44,2674.09,231.31,1810.49,12888.7,540.71,210.36,9.94,7.11,1036.88,14989.74,379.12,1.37,1.64,1.8,6.91,617.38,2947.64,106.04,0,2796.32,69.9,30.4,15.53,49.38,5934.48,22578.45,2955.82,255.44,1136.99,6319.77,12.3,343.05,27.4,15.99,14.07,208.96,25517.16,8212.16,1018.07,398.67,1.32,19.32,194.51,629.89,402.65,4689.19,4950.25,37.15,288.43,566.03,68.27,2581.09,14.65,672.87,14289.06,0,1353.32,4276.22,1440.81],[2569.15,3.74,840.22,0.22,0.15,3273.65,0.22,401.4,14.69,28.45,20.06,111.97,2.99,2.6,3244.06,0.97,64.64,33.49,5.09,1105.92,0.06,40.43,374.85,32.79,1457.24,2018.41,4.47,25.04,2742.17,1978.68,1323.18,2104.95,59.92,8.37,2393.69,1785.55,227.97,13545.44,298.41,67.86,578.65,15.26,2299.31,25,11.44,0.8,18.24,13925.88,12.49,96.4,1,204.62,319.37,273.89,35.13,62.92,854.52,7.43,18382.66,1.54,15.16,29.98,556.63,97.3,127.7,32.7,165.32,2167.48,76.83,0.43,0.61,1.52,137.08,1821.42,483.19,23.02,464.13,208.68,31.55,0.98,170728.09,34211.45,581.84,514.93,12.99,12.61,207.09,5.71,1650.94,6.81,299.96,4005.61,16.9,1158.36,7.64,118.04,297.51,16.59,24.23,2720.46,888.46,36.77,35.75,0.73,14,1195.19,3092.09,313.68,2.54,1891.1,0.3,1.03,261.2,2.09,926.84,12.49,29.24,95.04,1.07,1102.7,7404.24,4975.75,898.24,4458.05,34.47,7.1,62.87,2588.58,6831.39,0.4,909.23,17.98,7.9,23913.08,0.82,71.02,181.56,76.9,686.8,6925.42,128.81,72.75,10.12,1.26,180.38,2265.85,1256.84,2.38,0.89,1.86,6.97,238.2,3093.24,55.89,0.27,718.56,17.52,9.23,7.84,24.62,2724.21,24116.64,2550.75,173.87,190.05,897.19,3.61,1088,39.87,15.48,21.81,167.18,5406.77,2864.4,50.95,656.13,0.06,5.87,59.53,233.12,88.1,5244.46,929.73,5.43,158.12,367.01,18.18,515.37,8.89,222.66,7728.93,0.53,894.24,2522.06,5477.89],[2937.58,2.6,847.57,0.11,0.11,5628.29,0.37,196.07,43.01,8.99,16.94,20.19,1.61,0.85,18824.55,0.28,233.76,17.99,4.55,402.24,0,30.32,129.48,34.61,597.31,2507.49,5.99,34.01,516.11,915.12,2500.84,4535.5,19.86,25.1,2014.65,1861.96,151.52,9567.66,377.68,15.48,1664.73,18.93,2257.91,9.21,19.7,0.2,11.38,19914.21,5.33,105.83,0.41,248.34,166.94,33.91,42.66,56.57,186.51,11.74,8652.99,3.6,10.73,8.96,91.23,312.54,165.51,74.04,72.46,4921.24,28.53,2.26,0,2.09,83.41,1808.68,776.57,49.32,459.58,40.25,27.11,2.01,128572.01,34270.32,379.72,144.49,4.1,4.73,67.86,4.04,816.67,4.6,532.08,4363.76,1.55,662.27,0,263.2,907,34.03,16.04,2476.64,1166.47,175.05,100.28,0.11,2.9,3669.66,3218.04,854.99,5.39,602.74,0.52,5.96,275.75,9.83,779.65,3.6,168.06,170.49,1.01,1040.9,17843.77,8260.18,566.87,1638.27,7.94,3.27,39.87,1058.99,68636.25,0.78,4203.34,2.65,1.68,11477.85,0.58,59.7,1020.32,84.59,589.01,3603.86,213.15,94.47,3.09,0,458.77,7138.54,237.44,0.57,0,0.51,2.06,0,1063.09,32.08,0,1154.37,27.22,10.27,4.46,14.47,1856.29,34938.03,1233.71,83.71,387.57,2112.37,9.11,766.29,5.45,5.01,3.28,47.79,15340.41,3650.13,297.02,205.08,0.4,11.12,72.41,192.58,121.99,3472.81,3026.91,0,64.49,127.72,26.43,770.84,4.33,236.56,4518.43,0,411.49,6035.29,3242.07],[0.21,-0,0.06,-0.04,-0.03,0.17,null,-0.05,-0.01,-0.02,0.04,-0.12,-0.09,null,0.24,null,0.01,-0.03,-0.13,-0.45,null,-0.01,-0.05,-0.02,-0.48,0,0.05,-0.02,-0.86,-0.39,0.15,0.28,-0.01,0.13,-0.14,0.05,-0.09,-0.02,0.03,null,0.35,-0,0.01,-0.07,0.01,-0.03,-0.03,0.22,-0.03,0.03,-0.06,0.05,-0.07,-0.08,0.01,0,-0.76,-0.03,-0.17,0.09,0.08,-0.08,-0.14,0.15,0.06,0,-0.02,0.68,-0.2,0.08,-0.07,0.04,-0.01,0.05,0.6,0.07,0.09,-0.13,-0.01,0.77,0.01,0.08,-0.04,-0.06,-0.04,-0.05,-0.04,-0.13,-0.05,0.02,-0.01,0.05,-0.03,-0.02,-0.02,0.02,0.58,0.03,0,-0.23,0.29,0.62,0.03,-0,-0.15,0.32,-0.11,0.05,0.08,-0.4,0.04,0.15,0.15,0.14,0,-0.17,0.07,0.07,-0.02,0,0.5,0.06,-0.14,-0.16,-0.05,-0.02,-0.01,-0.36,2.48,0.06,0.12,-0.08,-0.02,-0,-0.02,0.02,0.12,-0.01,0.01,-0.03,-0.01,-0.01,-0.37,null,0.01,0.05,-0.53,-0.41,-0.29,-0.2,-0.07,0.02,-0.24,-0.04,-0.2,0.18,0,0,-0.01,-0.01,-0.03,0.1,-0.26,-0.04,0.05,0.31,0.08,-0.27,-0.05,-0.03,-0.01,-0.04,0.63,0.07,0.31,-0.5,-0.02,0.01,-0.02,-0.01,null,-0.12,0.07,-0.32,-0.01,-0.03,0.04,0.06,-0.05,0.02,-0.03,null,-0.02,0.24,-0.41],[8.52,-0.07,2.32,-1.78,-1.08,6.68,null,-2.05,-0.22,-0.7,1.71,-4.76,-3.82,null,9.7,null,0.45,-1.06,-5.04,-17.97,null,-0.22,-2.12,-0.73,-19.21,0,1.89,-0.63,-34.81,-15.53,6.17,11.11,-0.55,5.43,-5.46,1.97,-3.74,-0.68,1.36,null,14,-0.05,0.41,-2.92,0.57,-1.35,-1.01,8.78,-1.4,1.06,-2.39,1.87,-2.73,-3.39,0.33,0.1,-30.51,-1.21,-6.71,3.82,3.05,-3.13,-5.76,5.88,2.45,0.02,-0.67,27.24,-7.95,3.03,-2.74,1.53,-0.34,1.88,24.22,2.77,3.55,-5.12,-0.3,30.81,0.5,3.2,-1.62,-2.25,-1.77,-1.95,-1.62,-5.42,-1.91,0.65,-0.29,1.85,-1.19,-0.72,-0.72,0.92,23.34,1.39,0.2,-9.32,11.77,25.08,1.28,-0.19,-6.1,13.01,-4.38,2.04,3.04,-16.2,1.44,5.89,5.88,5.51,0.1,-7.04,3,2.77,-0.7,0.04,19.95,2.34,-5.52,-6.64,-2,-0.84,-0.23,-14.57,100,2.29,4.72,-3.26,-0.77,-0.12,-0.76,0.77,4.94,-0.55,0.43,-1.37,-0.28,-0.55,-15.09,null,0.26,1.9,-21.31,-16.44,-11.64,-8.05,-2.66,0.92,-9.53,-1.66,-8.06,7.36,0.15,0,-0.42,-0.3,-1.38,4.08,-10.47,-1.55,1.92,12.64,3.3,-10.81,-2.11,-1.12,-0.55,-1.76,25.3,2.8,12.48,-20.03,-0.78,0.26,-0.91,-0.44,null,-4.88,2.88,-12.77,-0.37,-1.38,1.65,2.36,-1.83,0.79,-1.3,null,-0.7,9.81,-16.53],[0.46,-0.03,0.26,-0.19,-0.12,0.37,0.25,-0.23,-0.03,-0.18,0.18,-0.85,-0.35,-0.18,0.52,-0.56,0.04,-0.16,-0.29,-0.4,-1,-0.02,-0.29,-0.08,-0.37,0,0.28,-0.12,-0.56,-0.29,0.42,0.38,-0.08,0.4,-0.13,0.05,-0.2,-0.15,0.16,-0.52,0.58,-0,0.02,-0.34,0.09,-0.44,-0.14,0.24,-0.21,0.1,-0.06,0.14,-0.18,-0.58,0.08,0.01,-0.54,-0.1,-0.28,0.53,0.27,-0.21,-0.36,0.55,0.16,0,-0.12,0.47,-0.31,0.66,-0.11,0.25,-0.04,0.05,0.34,0.16,0.38,-0.55,-0.04,0.65,0.02,0.11,-0.13,-0.21,-0.25,-0.27,-0.16,-0.35,-0.12,0.15,-0.03,0.13,-0.19,-0.11,-0.54,0.12,0.58,0.15,0.03,-0.13,0.27,0.76,0.1,-0.05,-0.71,0.55,-0.09,0.29,0.42,-0.37,0.4,0.77,0.21,0.38,0.01,-0.39,0.37,0.33,-0.2,0,0.36,0.15,-0.28,-0.31,-0.33,-0.23,-0.04,-0.31,0.84,0.43,0.74,-0.49,-0.12,-0.01,-0.16,0.06,0.76,-0.05,0.07,-0.25,-0.04,-0.05,-0.46,0.08,0.04,0.16,-0.67,-0.62,-0.36,-0.51,-0.38,0.06,-0.29,-0.23,-1,0.36,0.05,0,-0.04,-0.03,-0.03,0.18,-0.23,-0.2,0.23,0.59,0.31,-0.23,-0.4,-0.26,-0.49,-0.34,0.53,0.19,0.77,-0.49,-0.09,0.02,-0.14,-0.08,0.09,-0.18,0.18,-0.18,-0.07,-0.19,0.24,0.19,-0.15,0.08,-0.09,-1,-0.04,0.35,-0.41],[18,92,39,135,119,28,40,148,91,134,49,192,165,132,16,186,76,127,158,174,194,89,156,106,170,85,36,118,187,155,20,25,107,23,121,74,140,125,54,182,11,87,80,164,64,176,124,43,141,63,104,58,131,188,68,82,184,112,153,15,38,143,167,12,51,84,116,17,161,7,113,41,95,72,32,52,24,185,99,8,79,61,120,142,149,152,129,166,117,57,94,59,137,114,183,60,10,55,77,122,37,5,62,103,191,13,110,35,21,169,22,2,45,26,81,172,27,33,138,83,30,56,154,159,162,144,96,160,1,19,6,179,115,88,128,71,4,101,69,150,97,102,177,67,75,53,190,189,168,181,171,70,157,147,193,29,73,86,100,90,93,50,146,139,44,9,34,145,173,151,178,163,14,47,3,180,111,78,123,108,65,130,48,133,105,136,42,46,126,66,109,195,98,31,175],[91.24,53.09,80.41,30.93,39.18,86.08,79.9,24.23,53.61,31.44,75.26,1.55,15.46,32.47,92.27,4.64,61.34,35.05,19.07,10.82,0,54.64,20.1,45.88,12.89,56.7,81.96,39.69,4.12,20.62,90.21,87.63,45.36,88.66,38.14,62.37,28.35,36.08,72.68,6.7,94.85,55.67,59.28,15.98,67.53,9.79,36.6,78.35,27.84,68.04,46.91,70.62,32.99,3.61,65.46,58.25,5.67,42.78,21.65,92.78,80.93,26.8,14.43,94.33,74.23,57.22,40.72,91.75,17.53,96.91,42.27,79.38,51.55,63.4,84.02,73.71,88.14,5.15,49.48,96.39,59.79,69.07,38.66,27.32,23.71,22.16,34.02,14.95,40.21,71.13,52.06,70.1,29.9,41.75,6.19,69.59,95.36,72.16,60.82,37.63,81.44,97.94,68.56,47.42,2.06,93.81,43.81,82.47,89.69,13.4,89.18,99.48,77.32,87.11,58.76,11.86,86.6,83.51,29.38,57.73,85.05,71.65,21.13,18.56,17.01,26.29,51.03,18.04,100,90.72,97.42,8.25,41.24,55.15,34.54,63.92,98.45,48.45,64.95,23.2,50.52,47.94,9.28,65.98,61.86,73.2,2.58,3.09,13.92,7.22,12.37,64.43,19.59,24.74,1.03,85.57,62.89,56.19,48.97,54.12,52.58,74.74,25.26,28.87,77.84,95.88,82.99,25.77,11.34,22.68,8.76,16.49,93.3,76.29,98.97,7.73,43.3,60.31,37.11,44.85,67.01,33.51,75.77,31.96,46.39,30.41,78.87,76.8,35.57,66.49,44.33,0,50,84.54,10.31],[-0.79,null,-1.33,null,null,-1,-1.37,null,null,null,-1.74,null,null,null,-0.66,null,-3.18,null,null,null,null,null,null,null,null,-7.66,-1.27,null,null,null,-0.86,-0.97,null,-0.93,null,-2.95,null,null,-1.82,null,-0.55,null,-4.17,null,-2.36,null,null,-1.43,null,-2.28,null,-1.99,null,null,-2.57,-4.81,null,null,null,-0.64,-1.32,null,null,-0.59,-1.8,-5.74,null,-0.75,null,-0.42,null,-1.38,null,-2.91,-1.07,-1.8,-0.97,null,null,-0.44,-3.89,-2.19,null,null,null,null,null,null,null,-1.93,null,-2.04,null,null,null,-2.09,-0.55,-1.87,-3.64,null,-1.32,-0.28,-2.26,null,null,-0.61,null,-1.23,-0.87,null,-0.91,-0.26,-1.56,-0.98,-4.77,null,-0.99,-1.1,null,-5.45,-1.02,-1.92,null,null,null,null,null,null,-0.18,-0.84,-0.3,null,null,null,null,-2.86,-0.28,null,-2.67,null,null,null,null,-2.49,-3.17,-1.81,null,null,null,null,null,-2.83,null,null,null,-1.01,-2.91,-7.95,null,null,null,-1.74,null,null,-1.46,-0.53,-1.18,null,null,null,null,null,-0.63,-1.68,-0.26,null,null,-3.73,null,null,-2.41,null,-1.72,null,null,null,-1.42,-1.64,null,-2.48,null,null,null,-1.06,null],[54.33,-3.41,31.57,-22.6,-14.89,44.05,30.2,-27.81,-3.27,-21.95,21.02,-101.05,-41.52,-21.36,61.84,-66.33,4.96,-18.92,-35.09,-47.86,-119.36,-2.12,-34.04,-9.33,-44.06,0.06,33.56,-14.58,-66.82,-34.02,50.56,45.12,-9.77,47.16,-14.99,6.23,-23.51,-18.05,19.43,-62.03,68.92,-0.53,1.84,-40.74,11.25,-53.01,-16.5,28.68,-24.7,12.18,-6.9,16.3,-21.31,-69.68,9.12,0.98,-64.86,-11.73,-33.22,62.86,31.93,-25.58,-42.91,65.99,19.67,0.38,-14.38,56.37,-37.49,78.78,-13.47,29.91,-4.34,6.49,41.02,19.65,45.38,-65.4,-4.77,77.12,2.45,13.4,-14.96,-24.95,-29.99,-32.45,-19.67,-42.27,-14.39,17.39,-4.03,15.52,-23.15,-13.58,-64.44,14.78,68.93,18.36,3.12,-15.36,32.03,90.15,12.44,-6.34,-85.28,65.06,-10.5,35.04,50.14,-43.59,47.99,92.12,25.13,44.81,1.01,-46.42,44.5,39.71,-23.37,0.51,43.19,17.48,-33.86,-37.1,-38.95,-27.06,-4.43,-37.1,100,51.34,88.7,-58.65,-13.75,-1.28,-19.29,6.81,90.62,-6.16,8.29,-30.04,-4.49,-6.25,-54.9,9.9,5,19.61,-80.14,-73.44,-43.14,-61.35,-45.81,7.08,-34.64,-27.73,-118.99,43.27,6.48,0.04,-5,-3.19,-3.83,20.98,-27.49,-23.41,27.67,70.15,36.72,-27.17,-47.62,-31.35,-58.51,-40.17,63.86,22.23,91.91,-59,-11.05,2.86,-16.18,-9.91,10.76,-21,21.38,-21.83,-8.75,-22.72,28.89,23.17,-18.49,10,-10.34,-119.36,-4.73,41.22,-48.87],[0.67,-0.17,0.51,-0.44,-0.35,0.61,0.5,-0.48,-0.17,-0.43,0.42,-0.92,-0.59,-0.42,0.72,-0.75,0.2,-0.4,-0.54,-0.63,-1,-0.13,-0.53,-0.28,-0.61,0.02,0.53,-0.35,-0.75,-0.53,0.65,0.61,-0.29,0.63,-0.35,0.23,-0.44,-0.39,0.4,-0.72,0.76,-0.07,0.12,-0.58,0.31,-0.67,-0.37,0.49,-0.45,0.32,-0.24,0.37,-0.42,-0.76,0.28,0.09,-0.74,-0.31,-0.53,0.73,0.52,-0.46,-0.6,0.74,0.41,0.06,-0.35,0.69,-0.56,0.81,-0.34,0.5,-0.19,0.23,0.59,0.41,0.62,-0.74,-0.2,0.8,0.14,0.34,-0.35,-0.46,-0.5,-0.52,-0.41,-0.6,-0.35,0.38,-0.18,0.36,-0.44,-0.34,-0.73,0.35,0.76,0.39,0.16,-0.36,0.52,0.87,0.32,-0.23,-0.85,0.74,-0.3,0.54,0.65,-0.6,0.63,0.88,0.46,0.61,0.09,-0.62,0.61,0.58,-0.44,0.07,0.6,0.38,-0.53,-0.56,-0.57,-0.48,-0.19,-0.56,0.92,0.66,0.86,-0.7,-0.34,-0.1,-0.4,0.24,0.87,-0.23,0.26,-0.5,-0.19,-0.23,-0.68,0.29,0.2,0.41,-0.82,-0.78,-0.6,-0.72,-0.62,0.24,-0.54,-0.48,-1,0.6,0.23,0.02,-0.2,-0.16,-0.18,0.42,-0.48,-0.44,0.48,0.77,0.55,-0.48,-0.63,-0.51,-0.7,-0.58,0.73,0.43,0.88,-0.7,-0.3,0.15,-0.37,-0.29,0.3,-0.42,0.42,-0.43,-0.27,-0.44,0.49,0.44,-0.39,0.29,-0.29,-1,-0.2,0.59,-0.64],[0.23,0.96,0.27,null,0,0.38,null,1.25,9.27,2.95,2.3,21.46,4.84,null,0.46,null,35.59,1.83,1.28,0.58,null,5.09,1.01,0.27,1.15,1.63,0,null,0.97,0.64,0.22,0.47,1.16,0,0.59,0.29,1.17,1.21,1.63,null,0.41,0,2.14,null,1.29,null,1.97,0.42,null,3.16,0,2.31,12.46,2.67,1.02,3.14,1.55,20.87,0.44,0.96,0,3,2.14,0.26,0.95,13.26,null,0.5,null,0,0,2.63,0.81,1.01,0.8,1.05,0.62,0.55,null,null,1.73,0.65,0.57,1.14,0.34,5.36,2.33,0,0.43,0.94,46.39,0.45,0,2.56,1.34,15.88,0.73,9.04,0.3,4.37,0,null,17.78,0,1.77,0.14,0.59,0.95,0.65,0.5,3.12,0.72,1.03,1.56,0.73,0.96,28.88,5.19,1.25,0.54,1.11,2.02,3.33,1.36,1.41,null,1.46,0.43,1.42,0,0.19,2.1,0.91,0.94,0,2.17,0.96,0.55,5.14,1.37,0.71,0.91,1.92,null,4.05,17.2,1.7,0,0,null,0,1.34,0.59,0.3,0,null,0.6,2.27,0,0.24,0.54,6.83,0.21,null,0.16,0.81,5.56,6,3.32,3.01,0.14,11.45,0.29,0.75,0.12,0.31,0,1.02,0.39,2.42,null,0.6,31.17,0,0.97,1.2,0.33,13.17,0,0.6,2.58,null,0.3,0.53,1.73],[100,90.92,100,8.48,26.68,90.33,null,53.62,90.39,68.94,61.56,48.5,47.18,null,100,0,63.62,75.13,38.66,34.29,0,63.53,100,84.27,9.5,80.13,75.67,67.98,23.15,37.5,100,71.25,74,94.48,55.88,48.05,39.49,51.07,80.9,null,100,50.75,58.79,45.87,48.57,81.23,39.7,74.45,65.26,100,23.4,61.07,50.85,56.22,100,46.27,27.81,28.4,66.8,100,100,47.78,53.09,100,100,100,84.74,42.33,36.9,100,19.11,90.14,58.3,67.2,44.92,69.3,100,86.54,48.78,10.21,59.81,36.65,41.77,47.57,52.08,34.79,70.05,33.2,57.14,62.46,41.62,100,100,87.52,70.34,100,73.09,51.7,63.13,16.36,68.89,57.31,43.77,39.51,53.56,100,32.68,88.56,100,36.39,48.78,100,61.02,22.55,68.47,21.21,97.45,100,77.86,100,53.32,100,29.69,64.97,62.13,76.81,100,40.88,36.83,35.22,100,51.75,32.99,100,3.71,64.29,100,78.88,100,100,57.21,61.75,10.03,null,72.78,45.46,38.42,15.85,12.83,33.59,100,37.59,49.39,81.81,17.7,100,100,37.27,37.78,100,62.92,32.21,27.47,59.42,71.6,100,78.23,13.34,79.79,71.14,97.19,100,45.11,80.01,100,36.84,40.69,39.91,96.57,71.64,null,42.8,41.92,2.76,59.67,66.5,100,72.45,100,73.39,100,null,58.67,56.67,20.38]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th>country<\/th>\n <th>country_number<\/th>\n <th>iso3<\/th>\n <th>who_region<\/th>\n <th>w_both_all_tb_mr<\/th>\n <th>w_both_all_htb_nd<\/th>\n <th>w_f_15plus_htb_nd<\/th>\n <th>w_m_15plus_htb_nd<\/th>\n <th>w_both_014_htb_nd<\/th>\n <th>w_both_all_htb_mr<\/th>\n <th>w_both_014_htb_mr<\/th>\n <th>w_f_15plus_htb_mr<\/th>\n <th>w_m_15plus_htb_mr<\/th>\n <th>w_both_all_tb_nd<\/th>\n <th>w_f_15plus_tb_nd<\/th>\n <th>w_m_15plus_tb_nd<\/th>\n <th>w_both_014_tb_nd<\/th>\n <th>w_both_014_tb_mr<\/th>\n <th>w_f_15plus_tb_mr<\/th>\n <th>w_m_15plus_tb_mr<\/th>\n <th>i_m_all_tb_nd<\/th>\n <th>i_m_all_tb_mr<\/th>\n <th>i_m_all_htb_nd<\/th>\n <th>i_m_all_htb_mr<\/th>\n <th>i_f_all_tb_nd<\/th>\n <th>i_f_all_tb_mr<\/th>\n <th>i_f_all_htb_nd<\/th>\n <th>i_f_all_htb_mr<\/th>\n <th>i_both_all_tb_nd<\/th>\n <th>i_both_all_tb_mr<\/th>\n <th>i_both_all_htb_nd<\/th>\n <th>i_both_all_htb_mr<\/th>\n <th>i_m_all_tb_incidence_number<\/th>\n <th>i_m_all_tb_incidence_rate<\/th>\n <th>i_m_all_htb_incidence_number<\/th>\n <th>i_m_all_htb_incidence_rate<\/th>\n <th>i_f_all_tb_incidence_number<\/th>\n <th>i_f_all_tb_incidence_rate<\/th>\n <th>i_f_all_htb_incidence_number<\/th>\n <th>i_f_all_htb_incidence_rate<\/th>\n <th>i_both_all_tb_incidence_number<\/th>\n <th>i_both_all_tb_incidence_rate<\/th>\n <th>i_both_all_htb_incidence_number<\/th>\n <th>i_both_all_htb_incidence_rate<\/th>\n <th>i_m_014_tb_nd<\/th>\n <th>i_m_15plus_tb_nd<\/th>\n <th>i_m_014_tb_mr<\/th>\n <th>i_m_15plus_tb_mr<\/th>\n <th>i_m_014_htb_nd<\/th>\n <th>i_m_15plus_htb_nd<\/th>\n <th>i_m_014_htb_mr<\/th>\n <th>i_m_15plus_htb_mr<\/th>\n <th>i_f_014_tb_nd<\/th>\n <th>i_f_15plus_tb_nd<\/th>\n <th>i_f_014_tb_mr<\/th>\n <th>i_f_15plus_tb_mr<\/th>\n <th>i_f_014_htb_nd<\/th>\n <th>i_f_15plus_htb_nd<\/th>\n <th>i_f_014_htb_mr<\/th>\n <th>i_f_15plus_htb_mr<\/th>\n <th>i_both_014_tb_nd<\/th>\n <th>i_both_15plus_tb_nd<\/th>\n <th>i_both_014_tb_mr<\/th>\n <th>i_both_15plus_tb_mr<\/th>\n <th>i_both_014_htb_nd<\/th>\n <th>i_both_15plus_htb_nd<\/th>\n <th>i_both_014_htb_mr<\/th>\n <th>i_both_15plus_htb_mr<\/th>\n <th>i_m_014_tb_incidence_number<\/th>\n <th>i_m_15plus_tb_incidence_number<\/th>\n <th>i_m_014_tb_incidence_rate<\/th>\n <th>i_m_15plus_tb_incidence_rate<\/th>\n <th>i_m_014_htb_incidence_number<\/th>\n <th>i_m_15plus_htb_incidence_number<\/th>\n <th>i_m_014_htb_incidence_rate<\/th>\n <th>i_m_15plus_htb_incidence_rate<\/th>\n <th>i_f_014_tb_incidence_number<\/th>\n <th>i_f_15plus_tb_incidence_number<\/th>\n <th>i_f_014_tb_incidence_rate<\/th>\n <th>i_f_15plus_tb_incidence_rate<\/th>\n <th>i_f_014_htb_incidence_number<\/th>\n <th>i_f_15plus_htb_incidence_number<\/th>\n <th>i_f_014_htb_incidence_rate<\/th>\n <th>i_f_15plus_htb_incidence_rate<\/th>\n <th>i_both_014_tb_incidence_number<\/th>\n <th>i_both_15plus_tb_incidence_number<\/th>\n <th>i_both_014_tb_incidence_rate<\/th>\n <th>i_both_15plus_tb_incidence_rate<\/th>\n <th>i_both_014_htb_incidence_number<\/th>\n <th>i_both_15plus_htb_incidence_number<\/th>\n <th>i_both_014_htb_incidence_rate<\/th>\n <th>i_both_15plus_htb_incidence_rate<\/th>\n <th>ihme_incidence_both_allages_totaltb_number<\/th>\n <th>have_who<\/th>\n <th>have_ihme<\/th>\n <th>have_both<\/th>\n <th>prevsurvey<\/th>\n <th>hightb<\/th>\n <th>highmdr<\/th>\n <th>w_both_all_tbtotal_nd<\/th>\n <th>w_both_014_tbtotal_nd<\/th>\n <th>i_both_all_tbtotal_nd<\/th>\n <th>i_both_014_tbtotal_nd<\/th>\n <th>gb_e_pop_num<\/th>\n <th>gb_e_inc_100k<\/th>\n <th>gb_e_inc_num<\/th>\n <th>gb_source_inc<\/th>\n <th>gb_e_inc_num_f014<\/th>\n <th>gb_e_inc_num_f15plus<\/th>\n <th>gb_e_inc_num_f<\/th>\n <th>gb_e_inc_num_m014<\/th>\n <th>gb_e_inc_num_m15plus<\/th>\n <th>gb_e_inc_num_m<\/th>\n <th>gb_e_inc_num_014<\/th>\n <th>gb_e_inc_num_15plus<\/th>\n <th>gb_e_mort_100k<\/th>\n <th>gb_e_mort_num<\/th>\n <th>gb_source_mort<\/th>\n <th>gb_cfr<\/th>\n <th>gb_c_newinc_100k<\/th>\n <th>gb_c_cdr<\/th>\n <th>c_newinc<\/th>\n <th>newrel_hivpos<\/th>\n <th>newrel_hivtest<\/th>\n <th>ret_nrel<\/th>\n <th>mdr_rr<\/th>\n <th>newrel_f014<\/th>\n <th>newrel_m014<\/th>\n <th>newrel_died<\/th>\n <th>ret_nrel_died<\/th>\n <th>ret_nrel_coh<\/th>\n <th>newrel_coh<\/th>\n <th>newrel_died_avg_2012_to_2014<\/th>\n <th>ret_nrel_died_avg_2012_to_2014<\/th>\n <th>ret_nrel_coh_avg_2012_to_2014<\/th>\n <th>newrel_coh_avg_2012_to_2014<\/th>\n <th>case_fatality_rate_2014<\/th>\n <th>case_fatality_rate_2012_to_2014<\/th>\n <th>case_fatality_rate_2015<\/th>\n <th>case_fatality_rate_2014_new<\/th>\n <th>case_fatality_rate_2012_to_2014_new<\/th>\n <th>case_fatality_rate_2015_new<\/th>\n <th>case_fatality_rate_2015_adjusted<\/th>\n <th>e_rr_pct_new<\/th>\n <th>estimated_fatalities_2015<\/th>\n <th>estimated_fatalities_2015_using_2012_to_2014_data<\/th>\n <th>p_hiv_of_tb<\/th>\n <th>p_mdr_new<\/th>\n <th>absolute_difference<\/th>\n <th>max_deaths<\/th>\n <th>relative_difference<\/th>\n <th>i_over_w<\/th>\n <th>w_over_i<\/th>\n <th>w_minus_i<\/th>\n <th>i_minus_w<\/th>\n <th>i_cases_over_deaths<\/th>\n <th>w_cases_over_deaths<\/th>\n <th>stand_w<\/th>\n <th>stand_i<\/th>\n <th>stand_dif<\/th>\n <th>stand_child_w<\/th>\n <th>stand_child_i<\/th>\n <th>stand_dif_child<\/th>\n <th>stand_child_h_w<\/th>\n <th>stand_child_h_i<\/th>\n <th>stand_dif_child_h<\/th>\n <th>stand_h_w<\/th>\n <th>stand_h_i<\/th>\n <th>stand_dif_h<\/th>\n <th>original_stand_dif<\/th>\n <th>original_stand_dif_child<\/th>\n <th>original_stand_dif_child_h<\/th>\n <th>original_stand_dif_h<\/th>\n <th>rank_stand_dif_child<\/th>\n <th>rank_stand_dif<\/th>\n <th>percentile_stand_dif<\/th>\n <th>percentile_stand_dif_child<\/th>\n <th>log_stand_dif<\/th>\n <th>log_stand_dif_child<\/th>\n <th>adjusted_stand_dif<\/th>\n <th>adjusted_stand_dif_child<\/th>\n <th>stand_dif_sqrt_directional<\/th>\n <th>stand_dif_child_sqrt_directional<\/th>\n <th>w_both_15plus_htb_nd<\/th>\n <th>w_both_15plus_tb_nd<\/th>\n <th>i_f_15plus_tbtotal_nd<\/th>\n <th>w_f_15plus_tbtotal_nd<\/th>\n <th>stand_dif_inc<\/th>\n <th>stand_dif_inc_adj<\/th>\n <th>ab<\/th>\n <th>rank_ab<\/th>\n <th>percentile_ab<\/th>\n <th>log_ab<\/th>\n <th>adjusted_ab<\/th>\n <th>ab_sqrt_directional<\/th>\n <th>reported_mdr<\/th>\n <th>cdr_ihme<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"pageLength":195,"dom":"Bfrtip","buttons":["copy","print",{"extend":"collection","buttons":"csv","text":"Download"}],"columnDefs":[{"className":"dt-right","targets":[1,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,96,97,98,99,100,101,102,103,105,107,108,109,110,111,112,113,114,118,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196]}],"order":[],"autoWidth":false,"orderClasses":false,"lengthMenu":[10,25,50,100,195]},"selection":{"mode":"multiple","selected":null,"target":"row"}},"evals":[],"jsHooks":[]}</script>
<script type="application/htmlwidget-sizing" data-for="htmlwidget-cf76c4cbb57815ece1ca">{"viewer":{"width":450,"height":350,"padding":15,"fill":true},"browser":{"width":960,"height":500,"padding":40,"fill":false}}</script>
</body>
</html>