You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
563 lines
6.6 MiB
563 lines
6.6 MiB
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta charset="utf-8" />
|
|
<meta name="generator" content="pandoc" />
|
|
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
|
|
|
|
|
|
<meta name="author" content="Data Science Team, LaNubia" />
|
|
|
|
|
|
<title>Report</title>
|
|
|
|
<script src="data:application/javascript;base64,Ly8gUGFuZG9jIDIuOSBhZGRzIGF0dHJpYnV0ZXMgb24gYm90aCBoZWFkZXIgYW5kIGRpdi4gV2UgcmVtb3ZlIHRoZSBmb3JtZXIgKHRvCi8vIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgYmVoYXZpb3Igb2YgUGFuZG9jIDwgMi44KS4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKGUpIHsKICB2YXIgaHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXYuc2VjdGlvbltjbGFzcyo9J2xldmVsJ10gPiA6Zmlyc3QtY2hpbGQiKTsKICB2YXIgaSwgaCwgYTsKICBmb3IgKGkgPSAwOyBpIDwgaHMubGVuZ3RoOyBpKyspIHsKICAgIGggPSBoc1tpXTsKICAgIGlmICghL15oWzEtNl0kL2kudGVzdChoLnRhZ05hbWUpKSBjb250aW51ZTsgIC8vIGl0IHNob3VsZCBiZSBhIGhlYWRlciBoMS1oNgogICAgYSA9IGguYXR0cmlidXRlczsKICAgIHdoaWxlIChhLmxlbmd0aCA+IDApIGgucmVtb3ZlQXR0cmlidXRlKGFbMF0ubmFtZSk7CiAgfQp9KTsK"></script>
|
|
<script src="data:application/javascript;base64,LyohIGpRdWVyeSB2My42LjAgfCAoYykgT3BlbkpTIEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwohZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZS5kb2N1bWVudD90KGUsITApOmZ1bmN0aW9uKGUpe2lmKCFlLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiB0KGUpfTp0KGUpfSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihDLGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1bXSxyPU9iamVjdC5nZXRQcm90b3R5cGVPZixzPXQuc2xpY2UsZz10LmZsYXQ/ZnVuY3Rpb24oZSl7cmV0dXJuIHQuZmxhdC5jYWxsKGUpfTpmdW5jdGlvbihlKXtyZXR1cm4gdC5jb25jYXQuYXBwbHkoW10sZSl9LHU9dC5wdXNoLGk9dC5pbmRleE9mLG49e30sbz1uLnRvU3RyaW5nLHY9bi5oYXNPd25Qcm9wZXJ0eSxhPXYudG9TdHJpbmcsbD1hLmNhbGwoT2JqZWN0KSx5PXt9LG09ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUmJiJudW1iZXIiIT10eXBlb2YgZS5ub2RlVHlwZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUuaXRlbX0seD1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbCE9ZSYmZT09PWUud2luZG93fSxFPUMuZG9jdW1lbnQsYz17dHlwZTohMCxzcmM6ITAsbm9uY2U6ITAsbm9Nb2R1bGU6ITB9O2Z1bmN0aW9uIGIoZSx0LG4pe3ZhciByLGksbz0obj1ufHxFKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtpZihvLnRleHQ9ZSx0KWZvcihyIGluIGMpKGk9dFtyXXx8dC5nZXRBdHRyaWJ1dGUmJnQuZ2V0QXR0cmlidXRlKHIpKSYmby5zZXRBdHRyaWJ1dGUocixpKTtuLmhlYWQuYXBwZW5kQ2hpbGQobykucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKX1mdW5jdGlvbiB3KGUpe3JldHVybiBudWxsPT1lP2UrIiI6Im9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZT9uW28uY2FsbChlKV18fCJvYmplY3QiOnR5cGVvZiBlfXZhciBmPSIzLjYuMCIsUz1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUy5mbi5pbml0KGUsdCl9O2Z1bmN0aW9uIHAoZSl7dmFyIHQ9ISFlJiYibGVuZ3RoImluIGUmJmUubGVuZ3RoLG49dyhlKTtyZXR1cm4hbShlKSYmIXgoZSkmJigiYXJyYXkiPT09bnx8MD09PXR8fCJudW1iZXIiPT10eXBlb2YgdCYmMDx0JiZ0LTEgaW4gZSl9Uy5mbj1TLnByb3RvdHlwZT17anF1ZXJ5OmYsY29uc3RydWN0b3I6UyxsZW5ndGg6MCx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lP3MuY2FsbCh0aGlzKTplPDA/dGhpc1tlK3RoaXMubGVuZ3RoXTp0aGlzW2VdfSxwdXNoU3RhY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Uy5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksZSk7cmV0dXJuIHQucHJldk9iamVjdD10aGlzLHR9LGVhY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIFMuZWFjaCh0aGlzLGUpfSxtYXA6ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMubWFwKHRoaXMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbi5jYWxsKGUsdCxlKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2socy5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxldmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKHQrMSklMn0pKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMuZ3JlcCh0aGlzLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQlMn0pKX0sZXE6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5sZW5ndGgsbj0rZSsoZTwwP3Q6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKDA8PW4mJm48dD9bdGhpc1tuXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6dSxzb3J0OnQuc29ydCxzcGxpY2U6dC5zcGxpY2V9LFMuZXh0ZW5kPVMuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGUsdCxuLHIsaSxvLGE9YXJndW1lbnRzWzBdfHx7fSxzPTEsdT1hcmd1bWVudHMubGVuZ3RoLGw9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGEmJihsPWEsYT1hcmd1bWVudHNbc118fHt9LHMrKyksIm9iamVjdCI9PXR5cGVvZiBhfHxtKGEpfHwoYT17fSkscz09PXUmJihhPXRoaXMscy0tKTtzPHU7cysrKWlmKG51bGwhPShlPWFyZ3VtZW50c1tzXSkpZm9yKHQgaW4gZSlyPWVbdF0sIl9fcHJvdG9fXyIhPT10JiZhIT09ciYmKGwmJnImJihTLmlzUGxhaW5PYmplY3Qocil8fChpPUFycmF5LmlzQXJyYXkocikpKT8obj1hW3RdLG89aSYmIUFycmF5LmlzQXJyYXkobik/W106aXx8Uy5pc1BsYWluT2JqZWN0KG4pP246e30saT0hMSxhW3RdPVMuZXh0ZW5kKGwsbyxyKSk6dm9pZCAwIT09ciYmKGFbdF09cikpO3JldHVybiBhfSxTLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoZitNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcihlKX0sbm9vcDpmdW5jdGlvbigpe30saXNQbGFpbk9iamVjdDpmdW5jdGlvbihlKXt2YXIgdCxuO3JldHVybiEoIWV8fCJbb2JqZWN0IE9iamVjdF0iIT09by5jYWxsKGUpKSYmKCEodD1yKGUpKXx8ImZ1bmN0aW9uIj09dHlwZW9mKG49di5jYWxsKHQsImNvbnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3IpJiZhLmNhbGwobik9PT1sKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXJldHVybiExO3JldHVybiEwfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGUsdCxuKXtiKGUse25vbmNlOnQmJnQubm9uY2V9LG4pfSxlYWNoOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0wO2lmKHAoZSkpe2ZvcihuPWUubGVuZ3RoO3I8bjtyKyspaWYoITE9PT10LmNhbGwoZVtyXSxyLGVbcl0pKWJyZWFrfWVsc2UgZm9yKHIgaW4gZSlpZighMT09PXQuY2FsbChlW3JdLHIsZVtyXSkpYnJlYWs7cmV0dXJuIGV9LG1ha2VBcnJheTpmdW5jdGlvbihlLHQpe3ZhciBuPXR8fFtdO3JldHVybiBudWxsIT1lJiYocChPYmplY3QoZSkpP1MubWVyZ2Uobiwic3RyaW5nIj09dHlwZW9mIGU/W2VdOmUpOnUuY2FsbChuLGUpKSxufSxpbkFycmF5OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09dD8tMTppLmNhbGwodCxlLG4pfSxtZXJnZTpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0rdC5sZW5ndGgscj0wLGk9ZS5sZW5ndGg7cjxuO3IrKyllW2krK109dFtyXTtyZXR1cm4gZS5sZW5ndGg9aSxlfSxncmVwOmZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9W10saT0wLG89ZS5sZW5ndGgsYT0hbjtpPG87aSsrKSF0KGVbaV0saSkhPT1hJiZyLnB1c2goZVtpXSk7cmV0dXJuIHJ9LG1hcDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPTAsYT1bXTtpZihwKGUpKWZvcihyPWUubGVuZ3RoO288cjtvKyspbnVsbCE9KGk9dChlW29dLG8sbikpJiZhLnB1c2goaSk7ZWxzZSBmb3IobyBpbiBlKW51bGwhPShpPXQoZVtvXSxvLG4pKSYmYS5wdXNoKGkpO3JldHVybiBnKGEpfSxndWlkOjEsc3VwcG9ydDp5fSksImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmKFMuZm5bU3ltYm9sLml0ZXJhdG9yXT10W1N5bWJvbC5pdGVyYXRvcl0pLFMuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciBTeW1ib2wiLnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXtuWyJbb2JqZWN0ICIrdCsiXSJdPXQudG9Mb3dlckNhc2UoKX0pO3ZhciBkPWZ1bmN0aW9uKG4pe3ZhciBlLGQsYixvLGksaCxmLGcsdyx1LGwsVCxDLGEsRSx2LHMsYyx5LFM9InNpenpsZSIrMSpuZXcgRGF0ZSxwPW4uZG9jdW1lbnQsaz0wLHI9MCxtPXVlKCkseD11ZSgpLEE9dWUoKSxOPXVlKCksaj1mdW5jdGlvbihlLHQpe3JldHVybiBlPT09dCYmKGw9ITApLDB9LEQ9e30uaGFzT3duUHJvcGVydHksdD1bXSxxPXQucG9wLEw9dC5wdXNoLEg9dC5wdXNoLE89dC5zbGljZSxQPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPTAscj1lLmxlbmd0aDtuPHI7bisrKWlmKGVbbl09PT10KXJldHVybiBuO3JldHVybi0xfSxSPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsTT0iW1xceDIwXFx0XFxyXFxuXFxmXSIsST0iKD86XFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXFteXFxyXFxuXFxmXXxbXFx3LV18W15cMC1cXHg3Zl0pKyIsVz0iXFxbIitNKyIqKCIrSSsiKSg/OiIrTSsiKihbKl4kfCF+XT89KSIrTSsiKig/OicoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwifCgiK0krIikpfCkiK00rIipcXF0iLEY9IjooIitJKyIpKD86XFwoKCgnKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcIil8KCg/OlxcXFwufFteXFxcXCgpW1xcXV18IitXKyIpKil8LiopXFwpfCkiLEI9bmV3IFJlZ0V4cChNKyIrIiwiZyIpLCQ9bmV3IFJlZ0V4cCgiXiIrTSsiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitNKyIrJCIsImciKSxfPW5ldyBSZWdFeHAoIl4iK00rIiosIitNKyIqIiksej1uZXcgUmVnRXhwKCJeIitNKyIqKFs+K35dfCIrTSsiKSIrTSsiKiIpLFU9bmV3IFJlZ0V4cChNKyJ8PiIpLFg9bmV3IFJlZ0V4cChGKSxWPW5ldyBSZWdFeHAoIl4iK0krIiQiKSxHPXtJRDpuZXcgUmVnRXhwKCJeIygiK0krIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrSSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrSSsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK1cpLFBTRVVETzpuZXcgUmVnRXhwKCJeIitGKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK00rIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK00rIiooPzooWystXXwpIitNKyIqKFxcZCspfCkpIitNKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitSKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrTSsiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitNKyIqKCg/Oi1cXGQpP1xcZCopIitNKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxZPS9IVE1MJC9pLFE9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxKPS9eaFxkJC9pLEs9L15bXntdK1x7XHMqXFtuYXRpdmUgXHcvLFo9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxlZT0vWyt+XS8sdGU9bmV3IFJlZ0V4cCgiXFxcXFtcXGRhLWZBLUZdezEsNn0iK00rIj98XFxcXChbXlxcclxcblxcZl0pIiwiZyIpLG5lPWZ1bmN0aW9uKGUsdCl7dmFyIG49IjB4IitlLnNsaWNlKDEpLTY1NTM2O3JldHVybiB0fHwobjwwP1N0cmluZy5mcm9tQ2hhckNvZGUobis2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShuPj4xMHw1NTI5NiwxMDIzJm58NTYzMjApKX0scmU9LyhbXDAtXHgxZlx4N2ZdfF4tP1xkKXxeLSR8W15cMC1ceDFmXHg3Zi1cdUZGRkZcdy1dL2csaWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8iXDAiPT09ZT8iXHVmZmZkIjplLnNsaWNlKDAsLTEpKyJcXCIrZS5jaGFyQ29kZUF0KGUubGVuZ3RoLTEpLnRvU3RyaW5nKDE2KSsiICI6IlxcIitlfSxvZT1mdW5jdGlvbigpe1QoKX0sYWU9YmUoZnVuY3Rpb24oZSl7cmV0dXJuITA9PT1lLmRpc2FibGVkJiYiZmllbGRzZXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0guYXBwbHkodD1PLmNhbGwocC5jaGlsZE5vZGVzKSxwLmNoaWxkTm9kZXMpLHRbcC5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7SD17YXBwbHk6dC5sZW5ndGg/ZnVuY3Rpb24oZSx0KXtMLmFwcGx5KGUsTy5jYWxsKHQpKX06ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLmxlbmd0aCxyPTA7d2hpbGUoZVtuKytdPXRbcisrXSk7ZS5sZW5ndGg9bi0xfX19ZnVuY3Rpb24gc2UodCxlLG4scil7dmFyIGksbyxhLHMsdSxsLGMsZj1lJiZlLm93bmVyRG9jdW1lbnQscD1lP2Uubm9kZVR5cGU6OTtpZihuPW58fFtdLCJzdHJpbmciIT10eXBlb2YgdHx8IXR8fDEhPT1wJiY5IT09cCYmMTEhPT1wKXJldHVybiBuO2lmKCFyJiYoVChlKSxlPWV8fEMsRSkpe2lmKDExIT09cCYmKHU9Wi5leGVjKHQpKSlpZihpPXVbMV0pe2lmKDk9PT1wKXtpZighKGE9ZS5nZXRFbGVtZW50QnlJZChpKSkpcmV0dXJuIG47aWYoYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2UgaWYoZiYmKGE9Zi5nZXRFbGVtZW50QnlJZChpKSkmJnkoZSxhKSYmYS5pZD09PWkpcmV0dXJuIG4ucHVzaChhKSxufWVsc2V7aWYodVsyXSlyZXR1cm4gSC5hcHBseShuLGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCkpLG47aWYoKGk9dVszXSkmJmQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBILmFwcGx5KG4sZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGkpKSxufWlmKGQucXNhJiYhTlt0KyIgIl0mJighdnx8IXYudGVzdCh0KSkmJigxIT09cHx8Im9iamVjdCIhPT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpKXtpZihjPXQsZj1lLDE9PT1wJiYoVS50ZXN0KHQpfHx6LnRlc3QodCkpKXsoZj1lZS50ZXN0KHQpJiZ5ZShlLnBhcmVudE5vZGUpfHxlKT09PWUmJmQuc2NvcGV8fCgocz1lLmdldEF0dHJpYnV0ZSgiaWQiKSk/cz1zLnJlcGxhY2UocmUsaWUpOmUuc2V0QXR0cmlidXRlKCJpZCIscz1TKSksbz0obD1oKHQpKS5sZW5ndGg7d2hpbGUoby0tKWxbb109KHM/IiMiK3M6IjpzY29wZSIpKyIgIit4ZShsW29dKTtjPWwuam9pbigiLCIpfXRyeXtyZXR1cm4gSC5hcHBseShuLGYucXVlcnlTZWxlY3RvckFsbChjKSksbn1jYXRjaChlKXtOKHQsITApfWZpbmFsbHl7cz09PVMmJmUucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGcodC5yZXBsYWNlKCQsIiQxIiksZSxuLHIpfWZ1bmN0aW9uIHVlKCl7dmFyIHI9W107cmV0dXJuIGZ1bmN0aW9uIGUodCxuKXtyZXR1cm4gci5wdXNoKHQrIiAiKT5iLmNhY2hlTGVuZ3RoJiZkZWxldGUgZVtyLnNoaWZ0KCldLGVbdCsiICJdPW59fWZ1bmN0aW9uIGxlKGUpe3JldHVybiBlW1NdPSEwLGV9ZnVuY3Rpb24gY2UoZSl7dmFyIHQ9Qy5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpO3RyeXtyZXR1cm4hIWUodCl9Y2F0Y2goZSl7cmV0dXJuITF9ZmluYWxseXt0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KSx0PW51bGx9fWZ1bmN0aW9uIGZlKGUsdCl7dmFyIG49ZS5zcGxpdCgifCIpLHI9bi5sZW5ndGg7d2hpbGUoci0tKWIuYXR0ckhhbmRsZVtuW3JdXT10fWZ1bmN0aW9uIHBlKGUsdCl7dmFyIG49dCYmZSxyPW4mJjE9PT1lLm5vZGVUeXBlJiYxPT09dC5ub2RlVHlwZSYmZS5zb3VyY2VJbmRleC10LnNvdXJjZUluZGV4O2lmKHIpcmV0dXJuIHI7aWYobil3aGlsZShuPW4ubmV4dFNpYmxpbmcpaWYobj09PXQpcmV0dXJuLTE7cmV0dXJuIGU/MTotMX1mdW5jdGlvbiBkZSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZS50eXBlPT09dH19ZnVuY3Rpb24gaGUobil7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PXR8fCJidXR0b24iPT09dCkmJmUudHlwZT09PW59fWZ1bmN0aW9uIGdlKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iZm9ybSJpbiBlP2UucGFyZW50Tm9kZSYmITE9PT1lLmRpc2FibGVkPyJsYWJlbCJpbiBlPyJsYWJlbCJpbiBlLnBhcmVudE5vZGU/ZS5wYXJlbnROb2RlLmRpc2FibGVkPT09dDplLmRpc2FibGVkPT09dDplLmlzRGlzYWJsZWQ9PT10fHxlLmlzRGlzYWJsZWQhPT0hdCYmYWUoZSk9PT10OmUuZGlzYWJsZWQ9PT10OiJsYWJlbCJpbiBlJiZlLmRpc2FibGVkPT09dH19ZnVuY3Rpb24gdmUoYSl7cmV0dXJuIGxlKGZ1bmN0aW9uKG8pe3JldHVybiBvPStvLGxlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKFtdLGUubGVuZ3RoLG8pLGk9ci5sZW5ndGg7d2hpbGUoaS0tKWVbbj1yW2ldXSYmKGVbbl09ISh0W25dPWVbbl0pKX0pfSl9ZnVuY3Rpb24geWUoZSl7cmV0dXJuIGUmJiJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmZX1mb3IoZSBpbiBkPXNlLnN1cHBvcnQ9e30saT1zZS5pc1hNTD1mdW5jdGlvbihlKXt2YXIgdD1lJiZlLm5hbWVzcGFjZVVSSSxuPWUmJihlLm93bmVyRG9jdW1lbnR8fGUpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4hWS50ZXN0KHR8fG4mJm4ubm9kZU5hbWV8fCJIVE1MIil9LFQ9c2Uuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbixyPWU/ZS5vd25lckRvY3VtZW50fHxlOnA7cmV0dXJuIHIhPUMmJjk9PT1yLm5vZGVUeXBlJiZyLmRvY3VtZW50RWxlbWVudCYmKGE9KEM9cikuZG9jdW1lbnRFbGVtZW50LEU9IWkoQykscCE9QyYmKG49Qy5kZWZhdWx0VmlldykmJm4udG9wIT09biYmKG4uYWRkRXZlbnRMaXN0ZW5lcj9uLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsb2UsITEpOm4uYXR0YWNoRXZlbnQmJm4uYXR0YWNoRXZlbnQoIm9udW5sb2FkIixvZSkpLGQuc2NvcGU9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQoQy5jcmVhdGVFbGVtZW50KCJkaXYiKSksInVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGwmJiFlLnF1ZXJ5U2VsZWN0b3JBbGwoIjpzY29wZSBmaWVsZHNldCBkaXYiKS5sZW5ndGh9KSxkLmF0dHJpYnV0ZXM9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xhc3NOYW1lPSJpIiwhZS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksZC5nZXRFbGVtZW50c0J5VGFnTmFtZT1jZShmdW5jdGlvbihlKXtyZXR1cm4gZS5hcHBlbmRDaGlsZChDLmNyZWF0ZUNvbW1lbnQoIiIpKSwhZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1LLnRlc3QoQy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSxkLmdldEJ5SWQ9Y2UoZnVuY3Rpb24oZSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZSkuaWQ9UywhQy5nZXRFbGVtZW50c0J5TmFtZXx8IUMuZ2V0RWxlbWVudHNCeU5hbWUoUykubGVuZ3RofSksZC5nZXRCeUlkPyhiLmZpbHRlci5JRD1mdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UodGUsbmUpO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUoImlkIik9PT10fX0sYi5maW5kLklEPWZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRCeUlkJiZFKXt2YXIgbj10LmdldEVsZW1lbnRCeUlkKGUpO3JldHVybiBuP1tuXTpbXX19KTooYi5maWx0ZXIuSUQ9ZnVuY3Rpb24oZSl7dmFyIG49ZS5yZXBsYWNlKHRlLG5lKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEF0dHJpYnV0ZU5vZGUmJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gdCYmdC52YWx1ZT09PW59fSxiLmZpbmQuSUQ9ZnVuY3Rpb24oZSx0KXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHQuZ2V0RWxlbWVudEJ5SWQmJkUpe3ZhciBuLHIsaSxvPXQuZ2V0RWxlbWVudEJ5SWQoZSk7aWYobyl7aWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dO2k9dC5nZXRFbGVtZW50c0J5TmFtZShlKSxyPTA7d2hpbGUobz1pW3IrK10paWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PWUpcmV0dXJuW29dfXJldHVybltdfX0pLGIuZmluZC5UQUc9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihlLHQpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdC5nZXRFbGVtZW50c0J5VGFnTmFtZT90LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpOmQucXNhP3QucXVlcnlTZWxlY3RvckFsbChlKTp2b2lkIDB9OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPTAsbz10LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpO2lmKCIqIj09PWUpe3doaWxlKG49b1tpKytdKTE9PT1uLm5vZGVUeXBlJiZyLnB1c2gobik7cmV0dXJuIHJ9cmV0dXJuIG99LGIuZmluZC5DTEFTUz1kLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGUsdCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiB0LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJkUpcmV0dXJuIHQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlKX0scz1bXSx2PVtdLChkLnFzYT1LLnRlc3QoQy5xdWVyeVNlbGVjdG9yQWxsKSkmJihjZShmdW5jdGlvbihlKXt2YXIgdDthLmFwcGVuZENoaWxkKGUpLmlubmVySFRNTD0iPGEgaWQ9JyIrUysiJz48L2E+PHNlbGVjdCBpZD0nIitTKyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGUucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnYucHVzaCgiWypeJF09IitNKyIqKD86Jyd8XCJcIikiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHYucHVzaCgiXFxbIitNKyIqKD86dmFsdWV8IitSKyIpIiksZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrUysiLV0iKS5sZW5ndGh8fHYucHVzaCgifj0iKSwodD1DLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnNldEF0dHJpYnV0ZSgibmFtZSIsIiIpLGUuYXBwZW5kQ2hpbGQodCksZS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT0nJ10iKS5sZW5ndGh8fHYucHVzaCgiXFxbIitNKyIqbmFtZSIrTSsiKj0iK00rIiooPzonJ3xcIlwiKSIpLGUucXVlcnlTZWxlY3RvckFsbCgiOmNoZWNrZWQiKS5sZW5ndGh8fHYucHVzaCgiOmNoZWNrZWQiKSxlLnF1ZXJ5U2VsZWN0b3JBbGwoImEjIitTKyIrKiIpLmxlbmd0aHx8di5wdXNoKCIuIy4rWyt+XSIpLGUucXVlcnlTZWxlY3RvckFsbCgiXFxcZiIpLHYucHVzaCgiW1xcclxcblxcZl0iKX0pLGNlKGZ1bmN0aW9uKGUpe2UuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciB0PUMuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTt0LnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGUuYXBwZW5kQ2hpbGQodCkuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGUucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnYucHVzaCgibmFtZSIrTSsiKlsqXiR8IX5dPz0iKSwyIT09ZS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmdi5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLGEuYXBwZW5kQ2hpbGQoZSkuZGlzYWJsZWQ9ITAsMiE9PWUucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZ2LnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksZS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4Iiksdi5wdXNoKCIsLio6Iil9KSksKGQubWF0Y2hlc1NlbGVjdG9yPUsudGVzdChjPWEubWF0Y2hlc3x8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLm9NYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3IpKSYmY2UoZnVuY3Rpb24oZSl7ZC5kaXNjb25uZWN0ZWRNYXRjaD1jLmNhbGwoZSwiKiIpLGMuY2FsbChlLCJbcyE9JyddOngiKSxzLnB1c2goIiE9IixGKX0pLHY9di5sZW5ndGgmJm5ldyBSZWdFeHAodi5qb2luKCJ8IikpLHM9cy5sZW5ndGgmJm5ldyBSZWdFeHAocy5qb2luKCJ8IikpLHQ9Sy50ZXN0KGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHk9dHx8Sy50ZXN0KGEuY29udGFpbnMpP2Z1bmN0aW9uKGUsdCl7dmFyIG49OT09PWUubm9kZVR5cGU/ZS5kb2N1bWVudEVsZW1lbnQ6ZSxyPXQmJnQucGFyZW50Tm9kZTtyZXR1cm4gZT09PXJ8fCEoIXJ8fDEhPT1yLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhyKTplLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHIpKSl9OmZ1bmN0aW9uKGUsdCl7aWYodCl3aGlsZSh0PXQucGFyZW50Tm9kZSlpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0saj10P2Z1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbj0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gbnx8KDEmKG49KGUub3duZXJEb2N1bWVudHx8ZSk9PSh0Lm93bmVyRG9jdW1lbnR8fHQpP2UuY29tcGFyZURvY3VtZW50UG9zaXRpb24odCk6MSl8fCFkLnNvcnREZXRhY2hlZCYmdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKT09PW4/ZT09Q3x8ZS5vd25lckRvY3VtZW50PT1wJiZ5KHAsZSk/LTE6dD09Q3x8dC5vd25lckRvY3VtZW50PT1wJiZ5KHAsdCk/MTp1P1AodSxlKS1QKHUsdCk6MDo0Jm4/LTE6MSl9OmZ1bmN0aW9uKGUsdCl7aWYoZT09PXQpcmV0dXJuIGw9ITAsMDt2YXIgbixyPTAsaT1lLnBhcmVudE5vZGUsbz10LnBhcmVudE5vZGUsYT1bZV0scz1bdF07aWYoIWl8fCFvKXJldHVybiBlPT1DPy0xOnQ9PUM/MTppPy0xOm8/MTp1P1AodSxlKS1QKHUsdCk6MDtpZihpPT09bylyZXR1cm4gcGUoZSx0KTtuPWU7d2hpbGUobj1uLnBhcmVudE5vZGUpYS51bnNoaWZ0KG4pO249dDt3aGlsZShuPW4ucGFyZW50Tm9kZSlzLnVuc2hpZnQobik7d2hpbGUoYVtyXT09PXNbcl0pcisrO3JldHVybiByP3BlKGFbcl0sc1tyXSk6YVtyXT09cD8tMTpzW3JdPT1wPzE6MH0pLEN9LHNlLm1hdGNoZXM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gc2UoZSxudWxsLG51bGwsdCl9LHNlLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihlLHQpe2lmKFQoZSksZC5tYXRjaGVzU2VsZWN0b3ImJkUmJiFOW3QrIiAiXSYmKCFzfHwhcy50ZXN0KHQpKSYmKCF2fHwhdi50ZXN0KHQpKSl0cnl7dmFyIG49Yy5jYWxsKGUsdCk7aWYobnx8ZC5kaXNjb25uZWN0ZWRNYXRjaHx8ZS5kb2N1bWVudCYmMTEhPT1lLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBufWNhdGNoKGUpe04odCwhMCl9cmV0dXJuIDA8c2UodCxDLG51bGwsW2VdKS5sZW5ndGh9LHNlLmNvbnRhaW5zPWZ1bmN0aW9uKGUsdCl7cmV0dXJuKGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSkseShlLHQpfSxzZS5hdHRyPWZ1bmN0aW9uKGUsdCl7KGUub3duZXJEb2N1bWVudHx8ZSkhPUMmJlQoZSk7dmFyIG49Yi5hdHRySGFuZGxlW3QudG9Mb3dlckNhc2UoKV0scj1uJiZELmNhbGwoYi5hdHRySGFuZGxlLHQudG9Mb3dlckNhc2UoKSk/bihlLHQsIUUpOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09cj9yOmQuYXR0cmlidXRlc3x8IUU/ZS5nZXRBdHRyaWJ1dGUodCk6KHI9ZS5nZXRBdHRyaWJ1dGVOb2RlKHQpKSYmci5zcGVjaWZpZWQ/ci52YWx1ZTpudWxsfSxzZS5lc2NhcGU9ZnVuY3Rpb24oZSl7cmV0dXJuKGUrIiIpLnJlcGxhY2UocmUsaWUpfSxzZS5lcnJvcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrZSl9LHNlLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oZSl7dmFyIHQsbj1bXSxyPTAsaT0wO2lmKGw9IWQuZGV0ZWN0RHVwbGljYXRlcyx1PSFkLnNvcnRTdGFibGUmJmUuc2xpY2UoMCksZS5zb3J0KGopLGwpe3doaWxlKHQ9ZVtpKytdKXQ9PT1lW2ldJiYocj1uLnB1c2goaSkpO3doaWxlKHItLSllLnNwbGljZShuW3JdLDEpfXJldHVybiB1PW51bGwsZX0sbz1zZS5nZXRUZXh0PWZ1bmN0aW9uKGUpe3ZhciB0LG49IiIscj0wLGk9ZS5ub2RlVHlwZTtpZihpKXtpZigxPT09aXx8OT09PWl8fDExPT09aSl7aWYoInN0cmluZyI9PXR5cGVvZiBlLnRleHRDb250ZW50KXJldHVybiBlLnRleHRDb250ZW50O2ZvcihlPWUuZmlyc3RDaGlsZDtlO2U9ZS5uZXh0U2libGluZyluKz1vKGUpfWVsc2UgaWYoMz09PWl8fDQ9PT1pKXJldHVybiBlLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKHQ9ZVtyKytdKW4rPW8odCk7cmV0dXJuIG59LChiPXNlLnNlbGVjdG9ycz17Y2FjaGVMZW5ndGg6NTAsY3JlYXRlUHNldWRvOmxlLG1hdGNoOkcsYXR0ckhhbmRsZTp7fSxmaW5kOnt9LHJlbGF0aXZlOnsiPiI6e2RpcjoicGFyZW50Tm9kZSIsZmlyc3Q6ITB9LCIgIjp7ZGlyOiJwYXJlbnROb2RlIn0sIisiOntkaXI6InByZXZpb3VzU2libGluZyIsZmlyc3Q6ITB9LCJ+Ijp7ZGlyOiJwcmV2aW91c1NpYmxpbmcifX0scHJlRmlsdGVyOntBVFRSOmZ1bmN0aW9uKGUpe3JldHVybiBlWzFdPWVbMV0ucmVwbGFjZSh0ZSxuZSksZVszXT0oZVszXXx8ZVs0XXx8ZVs1XXx8IiIpLnJlcGxhY2UodGUsbmUpLCJ+PSI9PT1lWzJdJiYoZVszXT0iICIrZVszXSsiICIpLGUuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV09ZVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09ZVsxXS5zbGljZSgwLDMpPyhlWzNdfHxzZS5lcnJvcihlWzBdKSxlWzRdPSsoZVs0XT9lWzVdKyhlWzZdfHwxKToyKigiZXZlbiI9PT1lWzNdfHwib2RkIj09PWVbM10pKSxlWzVdPSsoZVs3XStlWzhdfHwib2RkIj09PWVbM10pKTplWzNdJiZzZS5lcnJvcihlWzBdKSxlfSxQU0VVRE86ZnVuY3Rpb24oZSl7dmFyIHQsbj0hZVs2XSYmZVsyXTtyZXR1cm4gRy5DSElMRC50ZXN0KGVbMF0pP251bGw6KGVbM10/ZVsyXT1lWzRdfHxlWzVdfHwiIjpuJiZYLnRlc3QobikmJih0PWgobiwhMCkpJiYodD1uLmluZGV4T2YoIikiLG4ubGVuZ3RoLXQpLW4ubGVuZ3RoKSYmKGVbMF09ZVswXS5zbGljZSgwLHQpLGVbMl09bi5zbGljZSgwLHQpKSxlLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKHRlLG5lKS50b0xvd2VyQ2FzZSgpO3JldHVybiIqIj09PWU/ZnVuY3Rpb24oKXtyZXR1cm4hMH06ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXR9fSxDTEFTUzpmdW5jdGlvbihlKXt2YXIgdD1tW2UrIiAiXTtyZXR1cm4gdHx8KHQ9bmV3IFJlZ0V4cCgiKF58IitNKyIpIitlKyIoIitNKyJ8JCkiKSkmJm0oZSxmdW5jdGlvbihlKXtyZXR1cm4gdC50ZXN0KCJzdHJpbmciPT10eXBlb2YgZS5jbGFzc05hbWUmJmUuY2xhc3NOYW1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIGUuZ2V0QXR0cmlidXRlJiZlLmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSl9LEFUVFI6ZnVuY3Rpb24obixyLGkpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgdD1zZS5hdHRyKGUsbik7cmV0dXJuIG51bGw9PXQ/IiE9Ij09PXI6IXJ8fCh0Kz0iIiwiPSI9PT1yP3Q9PT1pOiIhPSI9PT1yP3QhPT1pOiJePSI9PT1yP2kmJjA9PT10LmluZGV4T2YoaSk6Iio9Ij09PXI/aSYmLTE8dC5pbmRleE9mKGkpOiIkPSI9PT1yP2kmJnQuc2xpY2UoLWkubGVuZ3RoKT09PWk6In49Ij09PXI/LTE8KCIgIit0LnJlcGxhY2UoQiwiICIpKyIgIikuaW5kZXhPZihpKToifD0iPT09ciYmKHQ9PT1pfHx0LnNsaWNlKDAsaS5sZW5ndGgrMSk9PT1pKyItIikpfX0sQ0hJTEQ6ZnVuY3Rpb24oaCxlLHQsZyx2KXt2YXIgeT0ibnRoIiE9PWguc2xpY2UoMCwzKSxtPSJsYXN0IiE9PWguc2xpY2UoLTQpLHg9Im9mLXR5cGUiPT09ZTtyZXR1cm4gMT09PWcmJjA9PT12P2Z1bmN0aW9uKGUpe3JldHVybiEhZS5wYXJlbnROb2RlfTpmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGEscyx1LGw9eSE9PW0/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixjPWUucGFyZW50Tm9kZSxmPXgmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxwPSFuJiYheCxkPSExO2lmKGMpe2lmKHkpe3doaWxlKGwpe2E9ZTt3aGlsZShhPWFbbF0paWYoeD9hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1mOjE9PT1hLm5vZGVUeXBlKXJldHVybiExO3U9bD0ib25seSI9PT1oJiYhdSYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZih1PVttP2MuZmlyc3RDaGlsZDpjLmxhc3RDaGlsZF0sbSYmcCl7ZD0ocz0ocj0oaT0obz0oYT1jKVtTXXx8KGFbU109e30pKVthLnVuaXF1ZUlEXXx8KG9bYS51bmlxdWVJRF09e30pKVtoXXx8W10pWzBdPT09ayYmclsxXSkmJnJbMl0sYT1zJiZjLmNoaWxkTm9kZXNbc107d2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoMT09PWEubm9kZVR5cGUmJisrZCYmYT09PWUpe2lbaF09W2sscyxkXTticmVha319ZWxzZSBpZihwJiYoZD1zPShyPShpPShvPShhPWUpW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdfHxbXSlbMF09PT1rJiZyWzFdKSwhMT09PWQpd2hpbGUoYT0rK3MmJmEmJmFbbF18fChkPXM9MCl8fHUucG9wKCkpaWYoKHg/YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ZjoxPT09YS5ub2RlVHlwZSkmJisrZCYmKHAmJigoaT0obz1hW1NdfHwoYVtTXT17fSkpW2EudW5pcXVlSURdfHwob1thLnVuaXF1ZUlEXT17fSkpW2hdPVtrLGRdKSxhPT09ZSkpYnJlYWs7cmV0dXJuKGQtPXYpPT09Z3x8ZCVnPT0wJiYwPD1kL2d9fX0sUFNFVURPOmZ1bmN0aW9uKGUsbyl7dmFyIHQsYT1iLnBzZXVkb3NbZV18fGIuc2V0RmlsdGVyc1tlLnRvTG93ZXJDYXNlKCldfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2UpO3JldHVybiBhW1NdP2Eobyk6MTxhLmxlbmd0aD8odD1bZSxlLCIiLG9dLGIuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShlLnRvTG93ZXJDYXNlKCkpP2xlKGZ1bmN0aW9uKGUsdCl7dmFyIG4scj1hKGUsbyksaT1yLmxlbmd0aDt3aGlsZShpLS0pZVtuPVAoZSxyW2ldKV09ISh0W25dPXJbaV0pfSk6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSwwLHQpfSk6YX19LHBzZXVkb3M6e25vdDpsZShmdW5jdGlvbihlKXt2YXIgcj1bXSxpPVtdLHM9ZihlLnJlcGxhY2UoJCwiJDEiKSk7cmV0dXJuIHNbU10/bGUoZnVuY3Rpb24oZSx0LG4scil7dmFyIGksbz1zKGUsbnVsbCxyLFtdKSxhPWUubGVuZ3RoO3doaWxlKGEtLSkoaT1vW2FdKSYmKGVbYV09ISh0W2FdPWkpKX0pOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gclswXT1lLHMocixudWxsLG4saSksclswXT1udWxsLCFpLnBvcCgpfX0pLGhhczpsZShmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIDA8c2UodCxlKS5sZW5ndGh9fSksY29udGFpbnM6bGUoZnVuY3Rpb24odCl7cmV0dXJuIHQ9dC5yZXBsYWNlKHRlLG5lKSxmdW5jdGlvbihlKXtyZXR1cm4tMTwoZS50ZXh0Q29udGVudHx8byhlKSkuaW5kZXhPZih0KX19KSxsYW5nOmxlKGZ1bmN0aW9uKG4pe3JldHVybiBWLnRlc3Qobnx8IiIpfHxzZS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIituKSxuPW4ucmVwbGFjZSh0ZSxuZSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgdDtkb3tpZih0PUU/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybih0PXQudG9Mb3dlckNhc2UoKSk9PT1ufHwwPT09dC5pbmRleE9mKG4rIi0iKX13aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9uKGUpe3ZhciB0PW4ubG9jYXRpb24mJm4ubG9jYXRpb24uaGFzaDtyZXR1cm4gdCYmdC5zbGljZSgxKT09PWUuaWR9LHJvb3Q6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT1hfSxmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZT09PUMuYWN0aXZlRWxlbWVudCYmKCFDLmhhc0ZvY3VzfHxDLmhhc0ZvY3VzKCkpJiYhIShlLnR5cGV8fGUuaHJlZnx8fmUudGFiSW5kZXgpfSxlbmFibGVkOmdlKCExKSxkaXNhYmxlZDpnZSghMCksY2hlY2tlZDpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiEhZS5jaGVja2VkfHwib3B0aW9uIj09PXQmJiEhZS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsITA9PT1lLnNlbGVjdGVkfSxlbXB0eTpmdW5jdGlvbihlKXtmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTtlPWUubmV4dFNpYmxpbmcpaWYoZS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIWIucHNldWRvcy5lbXB0eShlKX0saGVhZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBKLnRlc3QoZS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBRLnRlc3QoZS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQmJiJidXR0b24iPT09ZS50eXBlfHwiYnV0dG9uIj09PXR9LHRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmInRleHQiPT09ZS50eXBlJiYobnVsbD09KHQ9ZS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0ZXh0Ij09PXQudG9Mb3dlckNhc2UoKSl9LGZpcnN0OnZlKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDp2ZShmdW5jdGlvbihlLHQpe3JldHVyblt0LTFdfSksZXE6dmUoZnVuY3Rpb24oZSx0LG4pe3JldHVybltuPDA/bit0Om5dfSksZXZlbjp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLG9kZDp2ZShmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0xO248dDtuKz0yKWUucHVzaChuKTtyZXR1cm4gZX0pLGx0OnZlKGZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIHI9bjwwP24rdDp0PG4/dDpuOzA8PS0tcjspZS5wdXNoKHIpO3JldHVybiBlfSksZ3Q6dmUoZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgcj1uPDA/bit0Om47KytyPHQ7KWUucHVzaChyKTtyZXR1cm4gZX0pfX0pLnBzZXVkb3MubnRoPWIucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pYi5wc2V1ZG9zW2VdPWRlKGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0pYi5wc2V1ZG9zW2VdPWhlKGUpO2Z1bmN0aW9uIG1lKCl7fWZ1bmN0aW9uIHhlKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGgscj0iIjt0PG47dCsrKXIrPWVbdF0udmFsdWU7cmV0dXJuIHJ9ZnVuY3Rpb24gYmUocyxlLHQpe3ZhciB1PWUuZGlyLGw9ZS5uZXh0LGM9bHx8dSxmPXQmJiJwYXJlbnROb2RlIj09PWMscD1yKys7cmV0dXJuIGUuZmlyc3Q/ZnVuY3Rpb24oZSx0LG4pe3doaWxlKGU9ZVt1XSlpZigxPT09ZS5ub2RlVHlwZXx8ZilyZXR1cm4gcyhlLHQsbik7cmV0dXJuITF9OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYT1bayxwXTtpZihuKXt3aGlsZShlPWVbdV0paWYoKDE9PT1lLm5vZGVUeXBlfHxmKSYmcyhlLHQsbikpcmV0dXJuITB9ZWxzZSB3aGlsZShlPWVbdV0paWYoMT09PWUubm9kZVR5cGV8fGYpaWYoaT0obz1lW1NdfHwoZVtTXT17fSkpW2UudW5pcXVlSURdfHwob1tlLnVuaXF1ZUlEXT17fSksbCYmbD09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSllPWVbdV18fGU7ZWxzZXtpZigocj1pW2NdKSYmclswXT09PWsmJnJbMV09PT1wKXJldHVybiBhWzJdPXJbMl07aWYoKGlbY109YSlbMl09cyhlLHQsbikpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHdlKGkpe3JldHVybiAxPGkubGVuZ3RoP2Z1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLmxlbmd0aDt3aGlsZShyLS0paWYoIWlbcl0oZSx0LG4pKXJldHVybiExO3JldHVybiEwfTppWzBdfWZ1bmN0aW9uIFRlKGUsdCxuLHIsaSl7Zm9yKHZhciBvLGE9W10scz0wLHU9ZS5sZW5ndGgsbD1udWxsIT10O3M8dTtzKyspKG89ZVtzXSkmJihuJiYhbihvLHIsaSl8fChhLnB1c2gobyksbCYmdC5wdXNoKHMpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQ2UoZCxoLGcsdix5LGUpe3JldHVybiB2JiYhdltTXSYmKHY9Q2UodikpLHkmJiF5W1NdJiYoeT1DZSh5LGUpKSxsZShmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscz1bXSx1PVtdLGw9dC5sZW5ndGgsYz1lfHxmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByPTAsaT10Lmxlbmd0aDtyPGk7cisrKXNlKGUsdFtyXSxuKTtyZXR1cm4gbn0oaHx8IioiLG4ubm9kZVR5cGU/W25dOm4sW10pLGY9IWR8fCFlJiZoP2M6VGUoYyxzLGQsbixyKSxwPWc/eXx8KGU/ZDpsfHx2KT9bXTp0OmY7aWYoZyYmZyhmLHAsbixyKSx2KXtpPVRlKHAsdSksdihpLFtdLG4sciksbz1pLmxlbmd0aDt3aGlsZShvLS0pKGE9aVtvXSkmJihwW3Vbb11dPSEoZlt1W29dXT1hKSl9aWYoZSl7aWYoeXx8ZCl7aWYoeSl7aT1bXSxvPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmaS5wdXNoKGZbb109YSk7eShudWxsLHA9W10saSxyKX1vPXAubGVuZ3RoO3doaWxlKG8tLSkoYT1wW29dKSYmLTE8KGk9eT9QKGUsYSk6c1tvXSkmJihlW2ldPSEodFtpXT1hKSl9fWVsc2UgcD1UZShwPT09dD9wLnNwbGljZShsLHAubGVuZ3RoKTpwKSx5P3kobnVsbCx0LHAscik6SC5hcHBseSh0LHApfSl9ZnVuY3Rpb24gRWUoZSl7Zm9yKHZhciBpLHQsbixyPWUubGVuZ3RoLG89Yi5yZWxhdGl2ZVtlWzBdLnR5cGVdLGE9b3x8Yi5yZWxhdGl2ZVsiICJdLHM9bz8xOjAsdT1iZShmdW5jdGlvbihlKXtyZXR1cm4gZT09PWl9LGEsITApLGw9YmUoZnVuY3Rpb24oZSl7cmV0dXJuLTE8UChpLGUpfSxhLCEwKSxjPVtmdW5jdGlvbihlLHQsbil7dmFyIHI9IW8mJihufHx0IT09dyl8fCgoaT10KS5ub2RlVHlwZT91KGUsdCxuKTpsKGUsdCxuKSk7cmV0dXJuIGk9bnVsbCxyfV07czxyO3MrKylpZih0PWIucmVsYXRpdmVbZVtzXS50eXBlXSljPVtiZSh3ZShjKSx0KV07ZWxzZXtpZigodD1iLmZpbHRlcltlW3NdLnR5cGVdLmFwcGx5KG51bGwsZVtzXS5tYXRjaGVzKSlbU10pe2ZvcihuPSsrcztuPHI7bisrKWlmKGIucmVsYXRpdmVbZVtuXS50eXBlXSlicmVhaztyZXR1cm4gQ2UoMTxzJiZ3ZShjKSwxPHMmJnhlKGUuc2xpY2UoMCxzLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09ZVtzLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoJCwiJDEiKSx0LHM8biYmRWUoZS5zbGljZShzLG4pKSxuPHImJkVlKGU9ZS5zbGljZShuKSksbjxyJiZ4ZShlKSl9Yy5wdXNoKHQpfXJldHVybiB3ZShjKX1yZXR1cm4gbWUucHJvdG90eXBlPWIuZmlsdGVycz1iLnBzZXVkb3MsYi5zZXRGaWx0ZXJzPW5ldyBtZSxoPXNlLnRva2VuaXplPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYSxzLHUsbD14W2UrIiAiXTtpZihsKXJldHVybiB0PzA6bC5zbGljZSgwKTthPWUscz1bXSx1PWIucHJlRmlsdGVyO3doaWxlKGEpe2ZvcihvIGluIG4mJiEocj1fLmV4ZWMoYSkpfHwociYmKGE9YS5zbGljZShyWzBdLmxlbmd0aCl8fGEpLHMucHVzaChpPVtdKSksbj0hMSwocj16LmV4ZWMoYSkpJiYobj1yLnNoaWZ0KCksaS5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKCQsIiAiKX0pLGE9YS5zbGljZShuLmxlbmd0aCkpLGIuZmlsdGVyKSEocj1HW29dLmV4ZWMoYSkpfHx1W29dJiYhKHI9dVtvXShyKSl8fChuPXIuc2hpZnQoKSxpLnB1c2goe3ZhbHVlOm4sdHlwZTpvLG1hdGNoZXM6cn0pLGE9YS5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiB0P2EubGVuZ3RoOmE/c2UuZXJyb3IoZSk6eChlLHMpLnNsaWNlKDApfSxmPXNlLmNvbXBpbGU9ZnVuY3Rpb24oZSx0KXt2YXIgbix2LHksbSx4LHIsaT1bXSxvPVtdLGE9QVtlKyIgIl07aWYoIWEpe3R8fCh0PWgoZSkpLG49dC5sZW5ndGg7d2hpbGUobi0tKShhPUVlKHRbbl0pKVtTXT9pLnB1c2goYSk6by5wdXNoKGEpOyhhPUEoZSwodj1vLG09MDwoeT1pKS5sZW5ndGgseD0wPHYubGVuZ3RoLHI9ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdT0wLGw9IjAiLGM9ZSYmW10sZj1bXSxwPXcsZD1lfHx4JiZiLmZpbmQuVEFHKCIqIixpKSxoPWsrPW51bGw9PXA/MTpNYXRoLnJhbmRvbSgpfHwuMSxnPWQubGVuZ3RoO2ZvcihpJiYodz10PT1DfHx0fHxpKTtsIT09ZyYmbnVsbCE9KG89ZFtsXSk7bCsrKXtpZih4JiZvKXthPTAsdHx8by5vd25lckRvY3VtZW50PT1DfHwoVChvKSxuPSFFKTt3aGlsZShzPXZbYSsrXSlpZihzKG8sdHx8QyxuKSl7ci5wdXNoKG8pO2JyZWFrfWkmJihrPWgpfW0mJigobz0hcyYmbykmJnUtLSxlJiZjLnB1c2gobykpfWlmKHUrPWwsbSYmbCE9PXUpe2E9MDt3aGlsZShzPXlbYSsrXSlzKGMsZix0LG4pO2lmKGUpe2lmKDA8dSl3aGlsZShsLS0pY1tsXXx8ZltsXXx8KGZbbF09cS5jYWxsKHIpKTtmPVRlKGYpfUguYXBwbHkocixmKSxpJiYhZSYmMDxmLmxlbmd0aCYmMTx1K3kubGVuZ3RoJiZzZS51bmlxdWVTb3J0KHIpfXJldHVybiBpJiYoaz1oLHc9cCksY30sbT9sZShyKTpyKSkpLnNlbGVjdG9yPWV9cmV0dXJuIGF9LGc9c2Uuc2VsZWN0PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZSxjPSFyJiZoKGU9bC5zZWxlY3Rvcnx8ZSk7aWYobj1ufHxbXSwxPT09Yy5sZW5ndGgpe2lmKDI8KG89Y1swXT1jWzBdLnNsaWNlKDApKS5sZW5ndGgmJiJJRCI9PT0oYT1vWzBdKS50eXBlJiY5PT09dC5ub2RlVHlwZSYmRSYmYi5yZWxhdGl2ZVtvWzFdLnR5cGVdKXtpZighKHQ9KGIuZmluZC5JRChhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksdCl8fFtdKVswXSkpcmV0dXJuIG47bCYmKHQ9dC5wYXJlbnROb2RlKSxlPWUuc2xpY2Uoby5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9aT1HLm5lZWRzQ29udGV4dC50ZXN0KGUpPzA6by5sZW5ndGg7d2hpbGUoaS0tKXtpZihhPW9baV0sYi5yZWxhdGl2ZVtzPWEudHlwZV0pYnJlYWs7aWYoKHU9Yi5maW5kW3NdKSYmKHI9dShhLm1hdGNoZXNbMF0ucmVwbGFjZSh0ZSxuZSksZWUudGVzdChvWzBdLnR5cGUpJiZ5ZSh0LnBhcmVudE5vZGUpfHx0KSkpe2lmKG8uc3BsaWNlKGksMSksIShlPXIubGVuZ3RoJiZ4ZShvKSkpcmV0dXJuIEguYXBwbHkobixyKSxuO2JyZWFrfX19cmV0dXJuKGx8fGYoZSxjKSkocix0LCFFLG4sIXR8fGVlLnRlc3QoZSkmJnllKHQucGFyZW50Tm9kZSl8fHQpLG59LGQuc29ydFN0YWJsZT1TLnNwbGl0KCIiKS5zb3J0KGopLmpvaW4oIiIpPT09UyxkLmRldGVjdER1cGxpY2F0ZXM9ISFsLFQoKSxkLnNvcnREZXRhY2hlZD1jZShmdW5jdGlvbihlKXtyZXR1cm4gMSZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKEMuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKSl9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWUuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxmZSgidHlwZXxocmVmfGhlaWdodHx3aWR0aCIsZnVuY3Rpb24oZSx0LG4pe2lmKCFuKXJldHVybiBlLmdldEF0dHJpYnV0ZSh0LCJ0eXBlIj09PXQudG9Mb3dlckNhc2UoKT8xOjIpfSksZC5hdHRyaWJ1dGVzJiZjZShmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9IjxpbnB1dC8+IixlLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLCIiPT09ZS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgidmFsdWUiKX0pfHxmZSgidmFsdWUiLGZ1bmN0aW9uKGUsdCxuKXtpZighbiYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gZS5kZWZhdWx0VmFsdWV9KSxjZShmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9KXx8ZmUoUixmdW5jdGlvbihlLHQsbil7dmFyIHI7aWYoIW4pcmV0dXJuITA9PT1lW3RdP3QudG9Mb3dlckNhc2UoKToocj1lLmdldEF0dHJpYnV0ZU5vZGUodCkpJiZyLnNwZWNpZmllZD9yLnZhbHVlOm51bGx9KSxzZX0oQyk7Uy5maW5kPWQsUy5leHByPWQuc2VsZWN0b3JzLFMuZXhwclsiOiJdPVMuZXhwci5wc2V1ZG9zLFMudW5pcXVlU29ydD1TLnVuaXF1ZT1kLnVuaXF1ZVNvcnQsUy50ZXh0PWQuZ2V0VGV4dCxTLmlzWE1MRG9jPWQuaXNYTUwsUy5jb250YWlucz1kLmNvbnRhaW5zLFMuZXNjYXBlU2VsZWN0b3I9ZC5lc2NhcGU7dmFyIGg9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPVtdLGk9dm9pZCAwIT09bjt3aGlsZSgoZT1lW3RdKSYmOSE9PWUubm9kZVR5cGUpaWYoMT09PWUubm9kZVR5cGUpe2lmKGkmJlMoZSkuaXMobikpYnJlYWs7ci5wdXNoKGUpfXJldHVybiByfSxUPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPVtdO2U7ZT1lLm5leHRTaWJsaW5nKTE9PT1lLm5vZGVUeXBlJiZlIT09dCYmbi5wdXNoKGUpO3JldHVybiBufSxrPVMuZXhwci5tYXRjaC5uZWVkc0NvbnRleHQ7ZnVuY3Rpb24gQShlLHQpe3JldHVybiBlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT10LnRvTG93ZXJDYXNlKCl9dmFyIE49L148KFthLXpdW15cL1wwPjpceDIwXHRcclxuXGZdKilbXHgyMFx0XHJcblxmXSpcLz8+KD86PFwvXDE+fCkkL2k7ZnVuY3Rpb24gaihlLG4scil7cmV0dXJuIG0obik/Uy5ncmVwKGUsZnVuY3Rpb24oZSx0KXtyZXR1cm4hIW4uY2FsbChlLHQsZSkhPT1yfSk6bi5ub2RlVHlwZT9TLmdyZXAoZSxmdW5jdGlvbihlKXtyZXR1cm4gZT09PW4hPT1yfSk6InN0cmluZyIhPXR5cGVvZiBuP1MuZ3JlcChlLGZ1bmN0aW9uKGUpe3JldHVybi0xPGkuY2FsbChuLGUpIT09cn0pOlMuZmlsdGVyKG4sZSxyKX1TLmZpbHRlcj1mdW5jdGlvbihlLHQsbil7dmFyIHI9dFswXTtyZXR1cm4gbiYmKGU9Ijpub3QoIitlKyIpIiksMT09PXQubGVuZ3RoJiYxPT09ci5ub2RlVHlwZT9TLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHIsZSk/W3JdOltdOlMuZmluZC5tYXRjaGVzKGUsUy5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIDE9PT1lLm5vZGVUeXBlfSkpfSxTLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihlKXt2YXIgdCxuLHI9dGhpcy5sZW5ndGgsaT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5wdXNoU3RhY2soUyhlKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodD0wO3Q8cjt0KyspaWYoUy5jb250YWlucyhpW3RdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihuPXRoaXMucHVzaFN0YWNrKFtdKSx0PTA7dDxyO3QrKylTLmZpbmQoZSxpW3RdLG4pO3JldHVybiAxPHI/Uy51bmlxdWVTb3J0KG4pOm59LGZpbHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soaih0aGlzLGV8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGUpe3JldHVybiEhaih0aGlzLCJzdHJpbmciPT10eXBlb2YgZSYmay50ZXN0KGUpP1MoZSk6ZXx8W10sITEpLmxlbmd0aH19KTt2YXIgRCxxPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87KFMuZm4uaW5pdD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaTtpZighZSlyZXR1cm4gdGhpcztpZihuPW58fEQsInN0cmluZyI9PXR5cGVvZiBlKXtpZighKHI9IjwiPT09ZVswXSYmIj4iPT09ZVtlLmxlbmd0aC0xXSYmMzw9ZS5sZW5ndGg/W251bGwsZSxudWxsXTpxLmV4ZWMoZSkpfHwhclsxXSYmdClyZXR1cm4hdHx8dC5qcXVlcnk/KHR8fG4pLmZpbmQoZSk6dGhpcy5jb25zdHJ1Y3Rvcih0KS5maW5kKGUpO2lmKHJbMV0pe2lmKHQ9dCBpbnN0YW5jZW9mIFM/dFswXTp0LFMubWVyZ2UodGhpcyxTLnBhcnNlSFRNTChyWzFdLHQmJnQubm9kZVR5cGU/dC5vd25lckRvY3VtZW50fHx0OkUsITApKSxOLnRlc3QoclsxXSkmJlMuaXNQbGFpbk9iamVjdCh0KSlmb3IociBpbiB0KW0odGhpc1tyXSk/dGhpc1tyXSh0W3JdKTp0aGlzLmF0dHIocix0W3JdKTtyZXR1cm4gdGhpc31yZXR1cm4oaT1FLmdldEVsZW1lbnRCeUlkKHJbMl0pKSYmKHRoaXNbMF09aSx0aGlzLmxlbmd0aD0xKSx0aGlzfXJldHVybiBlLm5vZGVUeXBlPyh0aGlzWzBdPWUsdGhpcy5sZW5ndGg9MSx0aGlzKTptKGUpP3ZvaWQgMCE9PW4ucmVhZHk/bi5yZWFkeShlKTplKFMpOlMubWFrZUFycmF5KGUsdGhpcyl9KS5wcm90b3R5cGU9Uy5mbixEPVMoRSk7dmFyIEw9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sSD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmdW5jdGlvbiBPKGUsdCl7d2hpbGUoKGU9ZVt0XSkmJjEhPT1lLm5vZGVUeXBlKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKGUpe3ZhciB0PVMoZSx0aGlzKSxuPXQubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2Zvcih2YXIgZT0wO2U8bjtlKyspaWYoUy5jb250YWlucyh0aGlzLHRbZV0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPTAsaT10aGlzLmxlbmd0aCxvPVtdLGE9InN0cmluZyIhPXR5cGVvZiBlJiZTKGUpO2lmKCFrLnRlc3QoZSkpZm9yKDtyPGk7cisrKWZvcihuPXRoaXNbcl07biYmbiE9PXQ7bj1uLnBhcmVudE5vZGUpaWYobi5ub2RlVHlwZTwxMSYmKGE/LTE8YS5pbmRleChuKToxPT09bi5ub2RlVHlwZSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihuLGUpKSl7by5wdXNoKG4pO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjaygxPG8ubGVuZ3RoP1MudW5pcXVlU29ydChvKTpvKX0saW5kZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/InN0cmluZyI9PXR5cGVvZiBlP2kuY2FsbChTKGUpLHRoaXNbMF0pOmkuY2FsbCh0aGlzLGUuanF1ZXJ5P2VbMF06ZSk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUy51bmlxdWVTb3J0KFMubWVyZ2UodGhpcy5nZXQoKSxTKGUsdCkpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWU/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoZSkpfX0pLFMuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUucGFyZW50Tm9kZTtyZXR1cm4gdCYmMTEhPT10Lm5vZGVUeXBlP3Q6bnVsbH0scGFyZW50czpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGgoZSwicGFyZW50Tm9kZSIsbil9LG5leHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIE8oZSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihlKXtyZXR1cm4gTyhlLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihlKXtyZXR1cm4gaChlLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGUpe3JldHVybiBoKGUsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBoKGUsIm5leHRTaWJsaW5nIixuKX0scHJldlVudGlsOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaChlLCJwcmV2aW91c1NpYmxpbmciLG4pfSxzaWJsaW5nczpmdW5jdGlvbihlKXtyZXR1cm4gVCgoZS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxlKX0sY2hpbGRyZW46ZnVuY3Rpb24oZSl7cmV0dXJuIFQoZS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWUuY29udGVudERvY3VtZW50JiZyKGUuY29udGVudERvY3VtZW50KT9lLmNvbnRlbnREb2N1bWVudDooQShlLCJ0ZW1wbGF0ZSIpJiYoZT1lLmNvbnRlbnR8fGUpLFMubWVyZ2UoW10sZS5jaGlsZE5vZGVzKSl9fSxmdW5jdGlvbihyLGkpe1MuZm5bcl09ZnVuY3Rpb24oZSx0KXt2YXIgbj1TLm1hcCh0aGlzLGksZSk7cmV0dXJuIlVudGlsIiE9PXIuc2xpY2UoLTUpJiYodD1lKSx0JiYic3RyaW5nIj09dHlwZW9mIHQmJihuPVMuZmlsdGVyKHQsbikpLDE8dGhpcy5sZW5ndGgmJihIW3JdfHxTLnVuaXF1ZVNvcnQobiksTC50ZXN0KHIpJiZuLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2sobil9fSk7dmFyIFA9L1teXHgyMFx0XHJcblxmXSsvZztmdW5jdGlvbiBSKGUpe3JldHVybiBlfWZ1bmN0aW9uIE0oZSl7dGhyb3cgZX1mdW5jdGlvbiBJKGUsdCxuLHIpe3ZhciBpO3RyeXtlJiZtKGk9ZS5wcm9taXNlKT9pLmNhbGwoZSkuZG9uZSh0KS5mYWlsKG4pOmUmJm0oaT1lLnRoZW4pP2kuY2FsbChlLHQsbik6dC5hcHBseSh2b2lkIDAsW2VdLnNsaWNlKHIpKX1jYXRjaChlKXtuLmFwcGx5KHZvaWQgMCxbZV0pfX1TLkNhbGxiYWNrcz1mdW5jdGlvbihyKXt2YXIgZSxuO3I9InN0cmluZyI9PXR5cGVvZiByPyhlPXIsbj17fSxTLmVhY2goZS5tYXRjaChQKXx8W10sZnVuY3Rpb24oZSx0KXtuW3RdPSEwfSksbik6Uy5leHRlbmQoe30scik7dmFyIGksdCxvLGEscz1bXSx1PVtdLGw9LTEsYz1mdW5jdGlvbigpe2ZvcihhPWF8fHIub25jZSxvPWk9ITA7dS5sZW5ndGg7bD0tMSl7dD11LnNoaWZ0KCk7d2hpbGUoKytsPHMubGVuZ3RoKSExPT09c1tsXS5hcHBseSh0WzBdLHRbMV0pJiZyLnN0b3BPbkZhbHNlJiYobD1zLmxlbmd0aCx0PSExKX1yLm1lbW9yeXx8KHQ9ITEpLGk9ITEsYSYmKHM9dD9bXToiIil9LGY9e2FkZDpmdW5jdGlvbigpe3JldHVybiBzJiYodCYmIWkmJihsPXMubGVuZ3RoLTEsdS5wdXNoKHQpKSxmdW5jdGlvbiBuKGUpe1MuZWFjaChlLGZ1bmN0aW9uKGUsdCl7bSh0KT9yLnVuaXF1ZSYmZi5oYXModCl8fHMucHVzaCh0KTp0JiZ0Lmxlbmd0aCYmInN0cmluZyIhPT13KHQpJiZuKHQpfSl9KGFyZ3VtZW50cyksdCYmIWkmJmMoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIFMuZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oZSx0KXt2YXIgbjt3aGlsZSgtMTwobj1TLmluQXJyYXkodCxzLG4pKSlzLnNwbGljZShuLDEpLG48PWwmJmwtLX0pLHRoaXN9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gZT8tMTxTLmluQXJyYXkoZSxzKTowPHMubGVuZ3RofSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBzJiYocz1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBhPXU9W10scz10PSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXN9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gYT11PVtdLHR8fGl8fChzPXQ9IiIpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiEhYX0sZmlyZVdpdGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gYXx8KHQ9W2UsKHQ9dHx8W10pLnNsaWNlP3Quc2xpY2UoKTp0XSx1LnB1c2godCksaXx8YygpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGYuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFvfX07cmV0dXJuIGZ9LFMuZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihlKXt2YXIgbz1bWyJub3RpZnkiLCJwcm9ncmVzcyIsUy5DYWxsYmFja3MoIm1lbW9yeSIpLFMuQ2FsbGJhY2tzKCJtZW1vcnkiKSwyXSxbInJlc29sdmUiLCJkb25lIixTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxTLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwwLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksUy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMSwicmVqZWN0ZWQiXV0saT0icGVuZGluZyIsYT17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIHMuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSwiY2F0Y2giOmZ1bmN0aW9uKGUpe3JldHVybiBhLnRoZW4obnVsbCxlKX0scGlwZTpmdW5jdGlvbigpe3ZhciBpPWFyZ3VtZW50cztyZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihyKXtTLmVhY2gobyxmdW5jdGlvbihlLHQpe3ZhciBuPW0oaVt0WzRdXSkmJmlbdFs0XV07c1t0WzFdXShmdW5jdGlvbigpe3ZhciBlPW4mJm4uYXBwbHkodGhpcyxhcmd1bWVudHMpO2UmJm0oZS5wcm9taXNlKT9lLnByb21pc2UoKS5wcm9ncmVzcyhyLm5vdGlmeSkuZG9uZShyLnJlc29sdmUpLmZhaWwoci5yZWplY3QpOnJbdFswXSsiV2l0aCJdKHRoaXMsbj9bZV06YXJndW1lbnRzKX0pfSksaT1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKHQsbixyKXt2YXIgdT0wO2Z1bmN0aW9uIGwoaSxvLGEscyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dGhpcyxyPWFyZ3VtZW50cyxlPWZ1bmN0aW9uKCl7dmFyIGUsdDtpZighKGk8dSkpe2lmKChlPWEuYXBwbHkobixyKSk9PT1vLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTt0PWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmZS50aGVuLG0odCk/cz90LmNhbGwoZSxsKHUsbyxSLHMpLGwodSxvLE0scykpOih1KyssdC5jYWxsKGUsbCh1LG8sUixzKSxsKHUsbyxNLHMpLGwodSxvLFIsby5ub3RpZnlXaXRoKSkpOihhIT09UiYmKG49dm9pZCAwLHI9W2VdKSwoc3x8by5yZXNvbHZlV2l0aCkobixyKSl9fSx0PXM/ZTpmdW5jdGlvbigpe3RyeXtlKCl9Y2F0Y2goZSl7Uy5EZWZlcnJlZC5leGNlcHRpb25Ib29rJiZTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2soZSx0LnN0YWNrVHJhY2UpLHU8PWkrMSYmKGEhPT1NJiYobj12b2lkIDAscj1bZV0pLG8ucmVqZWN0V2l0aChuLHIpKX19O2k/dCgpOihTLkRlZmVycmVkLmdldFN0YWNrSG9vayYmKHQuc3RhY2tUcmFjZT1TLkRlZmVycmVkLmdldFN0YWNrSG9vaygpKSxDLnNldFRpbWVvdXQodCkpfX1yZXR1cm4gUy5EZWZlcnJlZChmdW5jdGlvbihlKXtvWzBdWzNdLmFkZChsKDAsZSxtKHIpP3I6UixlLm5vdGlmeVdpdGgpKSxvWzFdWzNdLmFkZChsKDAsZSxtKHQpP3Q6UikpLG9bMl1bM10uYWRkKGwoMCxlLG0obik/bjpNKSl9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPWU/Uy5leHRlbmQoZSxhKTphfX0scz17fTtyZXR1cm4gUy5lYWNoKG8sZnVuY3Rpb24oZSx0KXt2YXIgbj10WzJdLHI9dFs1XTthW3RbMV1dPW4uYWRkLHImJm4uYWRkKGZ1bmN0aW9uKCl7aT1yfSxvWzMtZV1bMl0uZGlzYWJsZSxvWzMtZV1bM10uZGlzYWJsZSxvWzBdWzJdLmxvY2ssb1swXVszXS5sb2NrKSxuLmFkZCh0WzNdLmZpcmUpLHNbdFswXV09ZnVuY3Rpb24oKXtyZXR1cm4gc1t0WzBdKyJXaXRoIl0odGhpcz09PXM/dm9pZCAwOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxzW3RbMF0rIldpdGgiXT1uLmZpcmVXaXRofSksYS5wcm9taXNlKHMpLGUmJmUuY2FsbChzLHMpLHN9LHdoZW46ZnVuY3Rpb24oZSl7dmFyIG49YXJndW1lbnRzLmxlbmd0aCx0PW4scj1BcnJheSh0KSxpPXMuY2FsbChhcmd1bWVudHMpLG89Uy5EZWZlcnJlZCgpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JbdF09dGhpcyxpW3RdPTE8YXJndW1lbnRzLmxlbmd0aD9zLmNhbGwoYXJndW1lbnRzKTplLC0tbnx8by5yZXNvbHZlV2l0aChyLGkpfX07aWYobjw9MSYmKEkoZSxvLmRvbmUoYSh0KSkucmVzb2x2ZSxvLnJlamVjdCwhbiksInBlbmRpbmciPT09by5zdGF0ZSgpfHxtKGlbdF0mJmlbdF0udGhlbikpKXJldHVybiBvLnRoZW4oKTt3aGlsZSh0LS0pSShpW3RdLGEodCksby5yZWplY3QpO3JldHVybiBvLnByb21pc2UoKX19KTt2YXIgVz0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztTLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oZSx0KXtDLmNvbnNvbGUmJkMuY29uc29sZS53YXJuJiZlJiZXLnRlc3QoZS5uYW1lKSYmQy5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrZS5tZXNzYWdlLGUuc3RhY2ssdCl9LFMucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oZSl7Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfTt2YXIgRj1TLkRlZmVycmVkKCk7ZnVuY3Rpb24gQigpe0UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiksQy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixCKSxTLnJlYWR5KCl9Uy5mbi5yZWFkeT1mdW5jdGlvbihlKXtyZXR1cm4gRi50aGVuKGUpWyJjYXRjaCJdKGZ1bmN0aW9uKGUpe1MucmVhZHlFeGNlcHRpb24oZSl9KSx0aGlzfSxTLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihlKXsoITA9PT1lPy0tUy5yZWFkeVdhaXQ6Uy5pc1JlYWR5KXx8KFMuaXNSZWFkeT0hMCkhPT1lJiYwPC0tUy5yZWFkeVdhaXR8fEYucmVzb2x2ZVdpdGgoRSxbU10pfX0pLFMucmVhZHkudGhlbj1GLnRoZW4sImNvbXBsZXRlIj09PUUucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09RS5yZWFkeVN0YXRlJiYhRS5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/Qy5zZXRUaW1lb3V0KFMucmVhZHkpOihFLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEIpLEMuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsQikpO3ZhciAkPWZ1bmN0aW9uKGUsdCxuLHIsaSxvLGEpe3ZhciBzPTAsdT1lLmxlbmd0aCxsPW51bGw9PW47aWYoIm9iamVjdCI9PT13KG4pKWZvcihzIGluIGk9ITAsbikkKGUsdCxzLG5bc10sITAsbyxhKTtlbHNlIGlmKHZvaWQgMCE9PXImJihpPSEwLG0ocil8fChhPSEwKSxsJiYoYT8odC5jYWxsKGUsciksdD1udWxsKToobD10LHQ9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBsLmNhbGwoUyhlKSxuKX0pKSx0KSlmb3IoO3M8dTtzKyspdChlW3NdLG4sYT9yOnIuY2FsbChlW3NdLHMsdChlW3NdLG4pKSk7cmV0dXJuIGk/ZTpsP3QuY2FsbChlKTp1P3QoZVswXSxuKTpvfSxfPS9eLW1zLS8sej0vLShbYS16XSkvZztmdW5jdGlvbiBVKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBYKGUpe3JldHVybiBlLnJlcGxhY2UoXywibXMtIikucmVwbGFjZSh6LFUpfXZhciBWPWZ1bmN0aW9uKGUpe3JldHVybiAxPT09ZS5ub2RlVHlwZXx8OT09PWUubm9kZVR5cGV8fCErZS5ub2RlVHlwZX07ZnVuY3Rpb24gRygpe3RoaXMuZXhwYW5kbz1TLmV4cGFuZG8rRy51aWQrK31HLnVpZD0xLEcucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHR8fCh0PXt9LFYoZSkmJihlLm5vZGVUeXBlP2VbdGhpcy5leHBhbmRvXT10Ok9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHRoaXMuZXhwYW5kbyx7dmFsdWU6dCxjb25maWd1cmFibGU6ITB9KSkpLHR9LHNldDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT10aGlzLmNhY2hlKGUpO2lmKCJzdHJpbmciPT10eXBlb2YgdClpW1godCldPW47ZWxzZSBmb3IociBpbiB0KWlbWChyKV09dFtyXTtyZXR1cm4gaX0sZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/dGhpcy5jYWNoZShlKTplW3RoaXMuZXhwYW5kb10mJmVbdGhpcy5leHBhbmRvXVtYKHQpXX0sYWNjZXNzOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdm9pZCAwPT09dHx8dCYmInN0cmluZyI9PXR5cGVvZiB0JiZ2b2lkIDA9PT1uP3RoaXMuZ2V0KGUsdCk6KHRoaXMuc2V0KGUsdCxuKSx2b2lkIDAhPT1uP246dCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI9ZVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PXIpe2lmKHZvaWQgMCE9PXQpe249KHQ9QXJyYXkuaXNBcnJheSh0KT90Lm1hcChYKToodD1YKHQpKWluIHI/W3RdOnQubWF0Y2goUCl8fFtdKS5sZW5ndGg7d2hpbGUobi0tKWRlbGV0ZSByW3Rbbl1dfSh2b2lkIDA9PT10fHxTLmlzRW1wdHlPYmplY3QocikpJiYoZS5ub2RlVHlwZT9lW3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSBlW3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbihlKXt2YXIgdD1lW3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQgMCE9PXQmJiFTLmlzRW1wdHlPYmplY3QodCl9fTt2YXIgWT1uZXcgRyxRPW5ldyBHLEo9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxLPS9bQS1aXS9nO2Z1bmN0aW9uIFooZSx0LG4pe3ZhciByLGk7aWYodm9pZCAwPT09biYmMT09PWUubm9kZVR5cGUpaWYocj0iZGF0YS0iK3QucmVwbGFjZShLLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2Yobj1lLmdldEF0dHJpYnV0ZShyKSkpe3RyeXtuPSJ0cnVlIj09PShpPW4pfHwiZmFsc2UiIT09aSYmKCJudWxsIj09PWk/bnVsbDppPT09K2krIiI/K2k6Si50ZXN0KGkpP0pTT04ucGFyc2UoaSk6aSl9Y2F0Y2goZSl7fVEuc2V0KGUsdCxuKX1lbHNlIG49dm9pZCAwO3JldHVybiBufVMuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiBRLmhhc0RhdGEoZSl8fFkuaGFzRGF0YShlKX0sZGF0YTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFEuYWNjZXNzKGUsdCxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1EucmVtb3ZlKGUsdCl9LF9kYXRhOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gWS5hY2Nlc3MoZSx0LG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihlLHQpe1kucmVtb3ZlKGUsdCl9fSksUy5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24obixlKXt2YXIgdCxyLGksbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PW4pe2lmKHRoaXMubGVuZ3RoJiYoaT1RLmdldChvKSwxPT09by5ub2RlVHlwZSYmIVkuZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7dD1hLmxlbmd0aDt3aGlsZSh0LS0pYVt0XSYmMD09PShyPWFbdF0ubmFtZSkuaW5kZXhPZigiZGF0YS0iKSYmKHI9WChyLnNsaWNlKDUpKSxaKG8scixpW3JdKSk7WS5zZXQobywiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGl9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBuP3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbil9KTokKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ7aWYobyYmdm9pZCAwPT09ZSlyZXR1cm4gdm9pZCAwIT09KHQ9US5nZXQobyxuKSk/dDp2b2lkIDAhPT0odD1aKG8sbikpP3Q6dm9pZCAwO3RoaXMuZWFjaChmdW5jdGlvbigpe1Euc2V0KHRoaXMsbixlKX0pfSxudWxsLGUsMTxhcmd1bWVudHMubGVuZ3RoLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtRLnJlbW92ZSh0aGlzLGUpfSl9fSksUy5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZihlKXJldHVybiB0PSh0fHwiZngiKSsicXVldWUiLHI9WS5nZXQoZSx0KSxuJiYoIXJ8fEFycmF5LmlzQXJyYXkobik/cj1ZLmFjY2VzcyhlLHQsUy5tYWtlQXJyYXkobikpOnIucHVzaChuKSkscnx8W119LGRlcXVldWU6ZnVuY3Rpb24oZSx0KXt0PXR8fCJmeCI7dmFyIG49Uy5xdWV1ZShlLHQpLHI9bi5sZW5ndGgsaT1uLnNoaWZ0KCksbz1TLl9xdWV1ZUhvb2tzKGUsdCk7ImlucHJvZ3Jlc3MiPT09aSYmKGk9bi5zaGlmdCgpLHItLSksaSYmKCJmeCI9PT10JiZuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgby5zdG9wLGkuY2FsbChlLGZ1bmN0aW9uKCl7Uy5kZXF1ZXVlKGUsdCl9LG8pKSwhciYmbyYmby5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGUsdCl7dmFyIG49dCsicXVldWVIb29rcyI7cmV0dXJuIFkuZ2V0KGUsbil8fFkuYWNjZXNzKGUsbix7ZW1wdHk6Uy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7WS5yZW1vdmUoZSxbdCsicXVldWUiLG5dKX0pfSl9fSksUy5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKHQsbil7dmFyIGU9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHQmJihuPXQsdD0iZngiLGUtLSksYXJndW1lbnRzLmxlbmd0aDxlP1MucXVldWUodGhpc1swXSx0KTp2b2lkIDA9PT1uP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9Uy5xdWV1ZSh0aGlzLHQsbik7Uy5fcXVldWVIb29rcyh0aGlzLHQpLCJmeCI9PT10JiYiaW5wcm9ncmVzcyIhPT1lWzBdJiZTLmRlcXVldWUodGhpcyx0KX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLmRlcXVldWUodGhpcyxlKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnF1ZXVlKGV8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGUsdCl7dmFyIG4scj0xLGk9Uy5EZWZlcnJlZCgpLG89dGhpcyxhPXRoaXMubGVuZ3RoLHM9ZnVuY3Rpb24oKXstLXJ8fGkucmVzb2x2ZVdpdGgobyxbb10pfTsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLGU9ZXx8ImZ4Ijt3aGlsZShhLS0pKG49WS5nZXQob1thXSxlKyJxdWV1ZUhvb2tzIikpJiZuLmVtcHR5JiYocisrLG4uZW1wdHkuYWRkKHMpKTtyZXR1cm4gcygpLGkucHJvbWlzZSh0KX19KTt2YXIgZWU9L1srLV0/KD86XGQqXC58KVxkKyg/OltlRV1bKy1dP1xkK3wpLy5zb3VyY2UsdGU9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK2VlKyIpKFthLXolXSopJCIsImkiKSxuZT1bIlRvcCIsIlJpZ2h0IiwiQm90dG9tIiwiTGVmdCJdLHJlPUUuZG9jdW1lbnRFbGVtZW50LGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKX0sb2U9e2NvbXBvc2VkOiEwfTtyZS5nZXRSb290Tm9kZSYmKGllPWZ1bmN0aW9uKGUpe3JldHVybiBTLmNvbnRhaW5zKGUub3duZXJEb2N1bWVudCxlKXx8ZS5nZXRSb290Tm9kZShvZSk9PT1lLm93bmVyRG9jdW1lbnR9KTt2YXIgYWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4ibm9uZSI9PT0oZT10fHxlKS5zdHlsZS5kaXNwbGF5fHwiIj09PWUuc3R5bGUuZGlzcGxheSYmaWUoZSkmJiJub25lIj09PVMuY3NzKGUsImRpc3BsYXkiKX07ZnVuY3Rpb24gc2UoZSx0LG4scil7dmFyIGksbyxhPTIwLHM9cj9mdW5jdGlvbigpe3JldHVybiByLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiBTLmNzcyhlLHQsIiIpfSx1PXMoKSxsPW4mJm5bM118fChTLmNzc051bWJlclt0XT8iIjoicHgiKSxjPWUubm9kZVR5cGUmJihTLmNzc051bWJlclt0XXx8InB4IiE9PWwmJit1KSYmdGUuZXhlYyhTLmNzcyhlLHQpKTtpZihjJiZjWzNdIT09bCl7dS89MixsPWx8fGNbM10sYz0rdXx8MTt3aGlsZShhLS0pUy5zdHlsZShlLHQsYytsKSwoMS1vKSooMS0obz1zKCkvdXx8LjUpKTw9MCYmKGE9MCksYy89bztjKj0yLFMuc3R5bGUoZSx0LGMrbCksbj1ufHxbXX1yZXR1cm4gbiYmKGM9K2N8fCt1fHwwLGk9blsxXT9jKyhuWzFdKzEpKm5bMl06K25bMl0sciYmKHIudW5pdD1sLHIuc3RhcnQ9YyxyLmVuZD1pKSksaX12YXIgdWU9e307ZnVuY3Rpb24gbGUoZSx0KXtmb3IodmFyIG4scixpLG8sYSxzLHUsbD1bXSxjPTAsZj1lLmxlbmd0aDtjPGY7YysrKShyPWVbY10pLnN0eWxlJiYobj1yLnN0eWxlLmRpc3BsYXksdD8oIm5vbmUiPT09biYmKGxbY109WS5nZXQociwiZGlzcGxheSIpfHxudWxsLGxbY118fChyLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PXIuc3R5bGUuZGlzcGxheSYmYWUocikmJihsW2NdPSh1PWE9bz12b2lkIDAsYT0oaT1yKS5vd25lckRvY3VtZW50LHM9aS5ub2RlTmFtZSwodT11ZVtzXSl8fChvPWEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLHU9Uy5jc3MobywiZGlzcGxheSIpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwibm9uZSI9PT11JiYodT0iYmxvY2siKSx1ZVtzXT11KSkpKToibm9uZSIhPT1uJiYobFtjXT0ibm9uZSIsWS5zZXQociwiZGlzcGxheSIsbikpKTtmb3IoYz0wO2M8ZjtjKyspbnVsbCE9bFtjXSYmKGVbY10uc3R5bGUuZGlzcGxheT1sW2NdKTtyZXR1cm4gZX1TLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBsZSh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGU/ZT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXthZSh0aGlzKT9TKHRoaXMpLnNob3coKTpTKHRoaXMpLmhpZGUoKX0pfX0pO3ZhciBjZSxmZSxwZT0vXig/OmNoZWNrYm94fHJhZGlvKSQvaSxkZT0vPChbYS16XVteXC9cMD5ceDIwXHRcclxuXGZdKikvaSxoZT0vXiR8Xm1vZHVsZSR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2k7Y2U9RS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkuYXBwZW5kQ2hpbGQoRS5jcmVhdGVFbGVtZW50KCJkaXYiKSksKGZlPUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxmZS5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksZmUuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLGNlLmFwcGVuZENoaWxkKGZlKSx5LmNoZWNrQ2xvbmU9Y2UuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGNlLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIseS5ub0Nsb25lQ2hlY2tlZD0hIWNlLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmRlZmF1bHRWYWx1ZSxjZS5pbm5lckhUTUw9IjxvcHRpb24+PC9vcHRpb24+Iix5Lm9wdGlvbj0hIWNlLmxhc3RDaGlsZDt2YXIgZ2U9e3RoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtmdW5jdGlvbiB2ZShlLHQpe3ZhciBuO3JldHVybiBuPSJ1bmRlZmluZWQiIT10eXBlb2YgZS5nZXRFbGVtZW50c0J5VGFnTmFtZT9lLmdldEVsZW1lbnRzQnlUYWdOYW1lKHR8fCIqIik6InVuZGVmaW5lZCIhPXR5cGVvZiBlLnF1ZXJ5U2VsZWN0b3JBbGw/ZS5xdWVyeVNlbGVjdG9yQWxsKHR8fCIqIik6W10sdm9pZCAwPT09dHx8dCYmQShlLHQpP1MubWVyZ2UoW2VdLG4pOm59ZnVuY3Rpb24geWUoZSx0KXtmb3IodmFyIG49MCxyPWUubGVuZ3RoO248cjtuKyspWS5zZXQoZVtuXSwiZ2xvYmFsRXZhbCIsIXR8fFkuZ2V0KHRbbl0sImdsb2JhbEV2YWwiKSl9Z2UudGJvZHk9Z2UudGZvb3Q9Z2UuY29sZ3JvdXA9Z2UuY2FwdGlvbj1nZS50aGVhZCxnZS50aD1nZS50ZCx5Lm9wdGlvbnx8KGdlLm9wdGdyb3VwPWdlLm9wdGlvbj1bMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdKTt2YXIgbWU9Lzx8JiM/XHcrOy87ZnVuY3Rpb24geGUoZSx0LG4scixpKXtmb3IodmFyIG8sYSxzLHUsbCxjLGY9dC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkscD1bXSxkPTAsaD1lLmxlbmd0aDtkPGg7ZCsrKWlmKChvPWVbZF0pfHwwPT09bylpZigib2JqZWN0Ij09PXcobykpUy5tZXJnZShwLG8ubm9kZVR5cGU/W29dOm8pO2Vsc2UgaWYobWUudGVzdChvKSl7YT1hfHxmLmFwcGVuZENoaWxkKHQuY3JlYXRlRWxlbWVudCgiZGl2IikpLHM9KGRlLmV4ZWMobyl8fFsiIiwiIl0pWzFdLnRvTG93ZXJDYXNlKCksdT1nZVtzXXx8Z2UuX2RlZmF1bHQsYS5pbm5lckhUTUw9dVsxXStTLmh0bWxQcmVmaWx0ZXIobykrdVsyXSxjPXVbMF07d2hpbGUoYy0tKWE9YS5sYXN0Q2hpbGQ7Uy5tZXJnZShwLGEuY2hpbGROb2RlcyksKGE9Zi5maXJzdENoaWxkKS50ZXh0Q29udGVudD0iIn1lbHNlIHAucHVzaCh0LmNyZWF0ZVRleHROb2RlKG8pKTtmLnRleHRDb250ZW50PSIiLGQ9MDt3aGlsZShvPXBbZCsrXSlpZihyJiYtMTxTLmluQXJyYXkobyxyKSlpJiZpLnB1c2gobyk7ZWxzZSBpZihsPWllKG8pLGE9dmUoZi5hcHBlbmRDaGlsZChvKSwic2NyaXB0IiksbCYmeWUoYSksbil7Yz0wO3doaWxlKG89YVtjKytdKWhlLnRlc3Qoby50eXBlfHwiIikmJm4ucHVzaChvKX1yZXR1cm4gZn12YXIgYmU9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIHdlKCl7cmV0dXJuITB9ZnVuY3Rpb24gVGUoKXtyZXR1cm4hMX1mdW5jdGlvbiBDZShlLHQpe3JldHVybiBlPT09ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIEUuYWN0aXZlRWxlbWVudH1jYXRjaChlKXt9fSgpPT0oImZvY3VzIj09PXQpfWZ1bmN0aW9uIEVlKGUsdCxuLHIsaSxvKXt2YXIgYSxzO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7Zm9yKHMgaW4ic3RyaW5nIiE9dHlwZW9mIG4mJihyPXJ8fG4sbj12b2lkIDApLHQpRWUoZSxzLG4scix0W3NdLG8pO3JldHVybiBlfWlmKG51bGw9PXImJm51bGw9PWk/KGk9bixyPW49dm9pZCAwKTpudWxsPT1pJiYoInN0cmluZyI9PXR5cGVvZiBuPyhpPXIscj12b2lkIDApOihpPXIscj1uLG49dm9pZCAwKSksITE9PT1pKWk9VGU7ZWxzZSBpZighaSlyZXR1cm4gZTtyZXR1cm4gMT09PW8mJihhPWksKGk9ZnVuY3Rpb24oZSl7cmV0dXJuIFMoKS5vZmYoZSksYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KS5ndWlkPWEuZ3VpZHx8KGEuZ3VpZD1TLmd1aWQrKykpLGUuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQuYWRkKHRoaXMsdCxpLHIsbil9KX1mdW5jdGlvbiBTZShlLGksbyl7bz8oWS5zZXQoZSxpLCExKSxTLmV2ZW50LmFkZChlLGkse25hbWVzcGFjZTohMSxoYW5kbGVyOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj1ZLmdldCh0aGlzLGkpO2lmKDEmZS5pc1RyaWdnZXImJnRoaXNbaV0pe2lmKHIubGVuZ3RoKShTLmV2ZW50LnNwZWNpYWxbaV18fHt9KS5kZWxlZ2F0ZVR5cGUmJmUuc3RvcFByb3BhZ2F0aW9uKCk7ZWxzZSBpZihyPXMuY2FsbChhcmd1bWVudHMpLFkuc2V0KHRoaXMsaSxyKSx0PW8odGhpcyxpKSx0aGlzW2ldKCksciE9PShuPVkuZ2V0KHRoaXMsaSkpfHx0P1kuc2V0KHRoaXMsaSwhMSk6bj17fSxyIT09bilyZXR1cm4gZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSxlLnByZXZlbnREZWZhdWx0KCksbiYmbi52YWx1ZX1lbHNlIHIubGVuZ3RoJiYoWS5zZXQodGhpcyxpLHt2YWx1ZTpTLmV2ZW50LnRyaWdnZXIoUy5leHRlbmQoclswXSxTLkV2ZW50LnByb3RvdHlwZSksci5zbGljZSgxKSx0aGlzKX0pLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfX0pKTp2b2lkIDA9PT1ZLmdldChlLGkpJiZTLmV2ZW50LmFkZChlLGksd2UpfVMuZXZlbnQ9e2dsb2JhbDp7fSxhZGQ6ZnVuY3Rpb24odCxlLG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9WS5nZXQodCk7aWYoVih0KSl7bi5oYW5kbGVyJiYobj0obz1uKS5oYW5kbGVyLGk9by5zZWxlY3RvciksaSYmUy5maW5kLm1hdGNoZXNTZWxlY3RvcihyZSxpKSxuLmd1aWR8fChuLmd1aWQ9Uy5ndWlkKyspLCh1PXYuZXZlbnRzKXx8KHU9di5ldmVudHM9T2JqZWN0LmNyZWF0ZShudWxsKSksKGE9di5oYW5kbGUpfHwoYT12LmhhbmRsZT1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIFMmJlMuZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP1MuZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGw9KGU9KGV8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlkPWc9KHM9YmUuZXhlYyhlW2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkJiYoZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGQ9KGk/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGQsZj1TLmV2ZW50LnNwZWNpYWxbZF18fHt9LGM9Uy5leHRlbmQoe3R5cGU6ZCxvcmlnVHlwZTpnLGRhdGE6cixoYW5kbGVyOm4sZ3VpZDpuLmd1aWQsc2VsZWN0b3I6aSxuZWVkc0NvbnRleHQ6aSYmUy5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGkpLG5hbWVzcGFjZTpoLmpvaW4oIi4iKX0sbyksKHA9dVtkXSl8fCgocD11W2RdPVtdKS5kZWxlZ2F0ZUNvdW50PTAsZi5zZXR1cCYmITEhPT1mLnNldHVwLmNhbGwodCxyLGgsYSl8fHQuYWRkRXZlbnRMaXN0ZW5lciYmdC5hZGRFdmVudExpc3RlbmVyKGQsYSkpLGYuYWRkJiYoZi5hZGQuY2FsbCh0LGMpLGMuaGFuZGxlci5ndWlkfHwoYy5oYW5kbGVyLmd1aWQ9bi5ndWlkKSksaT9wLnNwbGljZShwLmRlbGVnYXRlQ291bnQrKywwLGMpOnAucHVzaChjKSxTLmV2ZW50Lmdsb2JhbFtkXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oZSx0LG4scixpKXt2YXIgbyxhLHMsdSxsLGMsZixwLGQsaCxnLHY9WS5oYXNEYXRhKGUpJiZZLmdldChlKTtpZih2JiYodT12LmV2ZW50cykpe2w9KHQ9KHR8fCIiKS5tYXRjaChQKXx8WyIiXSkubGVuZ3RoO3doaWxlKGwtLSlpZihkPWc9KHM9YmUuZXhlYyh0W2xdKXx8W10pWzFdLGg9KHNbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxkKXtmPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scD11W2Q9KHI/Zi5kZWxlZ2F0ZVR5cGU6Zi5iaW5kVHlwZSl8fGRdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPXAubGVuZ3RoO3doaWxlKG8tLSljPXBbb10sIWkmJmchPT1jLm9yaWdUeXBlfHxuJiZuLmd1aWQhPT1jLmd1aWR8fHMmJiFzLnRlc3QoYy5uYW1lc3BhY2UpfHxyJiZyIT09Yy5zZWxlY3RvciYmKCIqKiIhPT1yfHwhYy5zZWxlY3Rvcil8fChwLnNwbGljZShvLDEpLGMuc2VsZWN0b3ImJnAuZGVsZWdhdGVDb3VudC0tLGYucmVtb3ZlJiZmLnJlbW92ZS5jYWxsKGUsYykpO2EmJiFwLmxlbmd0aCYmKGYudGVhcmRvd24mJiExIT09Zi50ZWFyZG93bi5jYWxsKGUsaCx2LmhhbmRsZSl8fFMucmVtb3ZlRXZlbnQoZSxkLHYuaGFuZGxlKSxkZWxldGUgdVtkXSl9ZWxzZSBmb3IoZCBpbiB1KVMuZXZlbnQucmVtb3ZlKGUsZCt0W2xdLG4sciwhMCk7Uy5pc0VtcHR5T2JqZWN0KHUpJiZZLnJlbW92ZShlLCJoYW5kbGUgZXZlbnRzIil9fSxkaXNwYXRjaDpmdW5jdGlvbihlKXt2YXIgdCxuLHIsaSxvLGEscz1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCksdT1TLmV2ZW50LmZpeChlKSxsPShZLmdldCh0aGlzLCJldmVudHMiKXx8T2JqZWN0LmNyZWF0ZShudWxsKSlbdS50eXBlXXx8W10sYz1TLmV2ZW50LnNwZWNpYWxbdS50eXBlXXx8e307Zm9yKHNbMF09dSx0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKylzW3RdPWFyZ3VtZW50c1t0XTtpZih1LmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWMucHJlRGlzcGF0Y2h8fCExIT09Yy5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsdSkpe2E9Uy5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsdSxsKSx0PTA7d2hpbGUoKGk9YVt0KytdKSYmIXUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7dS5jdXJyZW50VGFyZ2V0PWkuZWxlbSxuPTA7d2hpbGUoKG89aS5oYW5kbGVyc1tuKytdKSYmIXUuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl1LnJuYW1lc3BhY2UmJiExIT09by5uYW1lc3BhY2UmJiF1LnJuYW1lc3BhY2UudGVzdChvLm5hbWVzcGFjZSl8fCh1LmhhbmRsZU9iaj1vLHUuZGF0YT1vLmRhdGEsdm9pZCAwIT09KHI9KChTLmV2ZW50LnNwZWNpYWxbby5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fG8uaGFuZGxlcikuYXBwbHkoaS5lbGVtLHMpKSYmITE9PT0odS5yZXN1bHQ9cikmJih1LnByZXZlbnREZWZhdWx0KCksdS5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBjLnBvc3REaXNwYXRjaCYmYy5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLHUpLHUucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhLHM9W10sdT10LmRlbGVnYXRlQ291bnQsbD1lLnRhcmdldDtpZih1JiZsLm5vZGVUeXBlJiYhKCJjbGljayI9PT1lLnR5cGUmJjE8PWUuYnV0dG9uKSlmb3IoO2whPT10aGlzO2w9bC5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1sLm5vZGVUeXBlJiYoImNsaWNrIiE9PWUudHlwZXx8ITAhPT1sLmRpc2FibGVkKSl7Zm9yKG89W10sYT17fSxuPTA7bjx1O24rKyl2b2lkIDA9PT1hW2k9KHI9dFtuXSkuc2VsZWN0b3IrIiAiXSYmKGFbaV09ci5uZWVkc0NvbnRleHQ/LTE8UyhpLHRoaXMpLmluZGV4KGwpOlMuZmluZChpLHRoaXMsbnVsbCxbbF0pLmxlbmd0aCksYVtpXSYmby5wdXNoKHIpO28ubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczpvfSl9cmV0dXJuIGw9dGhpcyx1PHQubGVuZ3RoJiZzLnB1c2goe2VsZW06bCxoYW5kbGVyczp0LnNsaWNlKHUpfSksc30sYWRkUHJvcDpmdW5jdGlvbih0LGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShTLkV2ZW50LnByb3RvdHlwZSx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6bShlKT9mdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gZSh0aGlzLm9yaWdpbmFsRXZlbnQpfTpmdW5jdGlvbigpe2lmKHRoaXMub3JpZ2luYWxFdmVudClyZXR1cm4gdGhpcy5vcmlnaW5hbEV2ZW50W3RdfSxzZXQ6ZnVuY3Rpb24oZSl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6ZX0pfX0pfSxmaXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGVbUy5leHBhbmRvXT9lOm5ldyBTLkV2ZW50KGUpfSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sY2xpY2s6e3NldHVwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIsd2UpLCExfSx0cmlnZ2VyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXN8fGU7cmV0dXJuIHBlLnRlc3QodC50eXBlKSYmdC5jbGljayYmQSh0LCJpbnB1dCIpJiZTZSh0LCJjbGljayIpLCEwfSxfZGVmYXVsdDpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDtyZXR1cm4gcGUudGVzdCh0LnR5cGUpJiZ0LmNsaWNrJiZBKHQsImlucHV0IikmJlkuZ2V0KHQsImNsaWNrIil8fEEodCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5yZXN1bHQmJmUub3JpZ2luYWxFdmVudCYmKGUub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1lLnJlc3VsdCl9fX19LFMucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oZSx0LG4pe2UucmVtb3ZlRXZlbnRMaXN0ZW5lciYmZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbil9LFMuRXZlbnQ9ZnVuY3Rpb24oZSx0KXtpZighKHRoaXMgaW5zdGFuY2VvZiBTLkV2ZW50KSlyZXR1cm4gbmV3IFMuRXZlbnQoZSx0KTtlJiZlLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1lLHRoaXMudHlwZT1lLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9ZS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1lLmRlZmF1bHRQcmV2ZW50ZWQmJiExPT09ZS5yZXR1cm5WYWx1ZT93ZTpUZSx0aGlzLnRhcmdldD1lLnRhcmdldCYmMz09PWUudGFyZ2V0Lm5vZGVUeXBlP2UudGFyZ2V0LnBhcmVudE5vZGU6ZS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWUuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9ZS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9ZSx0JiZTLmV4dGVuZCh0aGlzLHQpLHRoaXMudGltZVN0YW1wPWUmJmUudGltZVN0YW1wfHxEYXRlLm5vdygpLHRoaXNbUy5leHBhbmRvXT0hMH0sUy5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOlMuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOlRlLGlzUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOlRlLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXdlLGUmJiF0aGlzLmlzU2ltdWxhdGVkJiZlLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD13ZSxlJiYhdGhpcy5pc1NpbXVsYXRlZCYmZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sUy5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjb2RlOiEwLGNoYXJDb2RlOiEwLGtleTohMCxrZXlDb2RlOiEwLGJ1dHRvbjohMCxidXR0b25zOiEwLGNsaWVudFg6ITAsY2xpZW50WTohMCxvZmZzZXRYOiEwLG9mZnNldFk6ITAscG9pbnRlcklkOiEwLHBvaW50ZXJUeXBlOiEwLHNjcmVlblg6ITAsc2NyZWVuWTohMCx0YXJnZXRUb3VjaGVzOiEwLHRvRWxlbWVudDohMCx0b3VjaGVzOiEwLHdoaWNoOiEwfSxTLmV2ZW50LmFkZFByb3ApLFMuZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oZSx0KXtTLmV2ZW50LnNwZWNpYWxbZV09e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIFNlKHRoaXMsZSxDZSksITF9LHRyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gU2UodGhpcyxlKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZGVsZWdhdGVUeXBlOnR9fSksUy5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSxmdW5jdGlvbihlLGkpe1MuZXZlbnQuc3BlY2lhbFtlXT17ZGVsZWdhdGVUeXBlOmksYmluZFR5cGU6aSxoYW5kbGU6ZnVuY3Rpb24oZSl7dmFyIHQsbj1lLnJlbGF0ZWRUYXJnZXQscj1lLmhhbmRsZU9iajtyZXR1cm4gbiYmKG49PT10aGlzfHxTLmNvbnRhaW5zKHRoaXMsbikpfHwoZS50eXBlPXIub3JpZ1R5cGUsdD1yLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudHlwZT1pKSx0fX19KSxTLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIEVlKHRoaXMsZSx0LG4scil9LG9uZTpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gRWUodGhpcyxlLHQsbixyLDEpfSxvZmY6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk7aWYoZSYmZS5wcmV2ZW50RGVmYXVsdCYmZS5oYW5kbGVPYmopcmV0dXJuIHI9ZS5oYW5kbGVPYmosUyhlLmRlbGVnYXRlVGFyZ2V0KS5vZmYoci5uYW1lc3BhY2U/ci5vcmlnVHlwZSsiLiIrci5uYW1lc3BhY2U6ci5vcmlnVHlwZSxyLnNlbGVjdG9yLHIuaGFuZGxlciksdGhpcztpZigib2JqZWN0Ij09dHlwZW9mIGUpe2ZvcihpIGluIGUpdGhpcy5vZmYoaSx0LGVbaV0pO3JldHVybiB0aGlzfXJldHVybiExIT09dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHR8fChuPXQsdD12b2lkIDApLCExPT09biYmKG49VGUpLHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQucmVtb3ZlKHRoaXMsZSxuLHQpfSl9fSk7dmFyIGtlPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLEFlPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLE5lPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBqZShlLHQpe3JldHVybiBBKGUsInRhYmxlIikmJkEoMTEhPT10Lm5vZGVUeXBlP3Q6dC5maXJzdENoaWxkLCJ0ciIpJiZTKGUpLmNoaWxkcmVuKCJ0Ym9keSIpWzBdfHxlfWZ1bmN0aW9uIERlKGUpe3JldHVybiBlLnR5cGU9KG51bGwhPT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpKSsiLyIrZS50eXBlLGV9ZnVuY3Rpb24gcWUoZSl7cmV0dXJuInRydWUvIj09PShlLnR5cGV8fCIiKS5zbGljZSgwLDUpP2UudHlwZT1lLnR5cGUuc2xpY2UoNSk6ZS5yZW1vdmVBdHRyaWJ1dGUoInR5cGUiKSxlfWZ1bmN0aW9uIExlKGUsdCl7dmFyIG4scixpLG8sYSxzO2lmKDE9PT10Lm5vZGVUeXBlKXtpZihZLmhhc0RhdGEoZSkmJihzPVkuZ2V0KGUpLmV2ZW50cykpZm9yKGkgaW4gWS5yZW1vdmUodCwiaGFuZGxlIGV2ZW50cyIpLHMpZm9yKG49MCxyPXNbaV0ubGVuZ3RoO248cjtuKyspUy5ldmVudC5hZGQodCxpLHNbaV1bbl0pO1EuaGFzRGF0YShlKSYmKG89US5hY2Nlc3MoZSksYT1TLmV4dGVuZCh7fSxvKSxRLnNldCh0LGEpKX19ZnVuY3Rpb24gSGUobixyLGksbyl7cj1nKHIpO3ZhciBlLHQsYSxzLHUsbCxjPTAsZj1uLmxlbmd0aCxwPWYtMSxkPXJbMF0saD1tKGQpO2lmKGh8fDE8ZiYmInN0cmluZyI9PXR5cGVvZiBkJiYheS5jaGVja0Nsb25lJiZBZS50ZXN0KGQpKXJldHVybiBuLmVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9bi5lcShlKTtoJiYoclswXT1kLmNhbGwodGhpcyxlLHQuaHRtbCgpKSksSGUodCxyLGksbyl9KTtpZihmJiYodD0oZT14ZShyLG5bMF0ub3duZXJEb2N1bWVudCwhMSxuLG8pKS5maXJzdENoaWxkLDE9PT1lLmNoaWxkTm9kZXMubGVuZ3RoJiYoZT10KSx0fHxvKSl7Zm9yKHM9KGE9Uy5tYXAodmUoZSwic2NyaXB0IiksRGUpKS5sZW5ndGg7YzxmO2MrKyl1PWUsYyE9PXAmJih1PVMuY2xvbmUodSwhMCwhMCkscyYmUy5tZXJnZShhLHZlKHUsInNjcmlwdCIpKSksaS5jYWxsKG5bY10sdSxjKTtpZihzKWZvcihsPWFbYS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxTLm1hcChhLHFlKSxjPTA7YzxzO2MrKyl1PWFbY10saGUudGVzdCh1LnR5cGV8fCIiKSYmIVkuYWNjZXNzKHUsImdsb2JhbEV2YWwiKSYmUy5jb250YWlucyhsLHUpJiYodS5zcmMmJiJtb2R1bGUiIT09KHUudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk/Uy5fZXZhbFVybCYmIXUubm9Nb2R1bGUmJlMuX2V2YWxVcmwodS5zcmMse25vbmNlOnUubm9uY2V8fHUuZ2V0QXR0cmlidXRlKCJub25jZSIpfSxsKTpiKHUudGV4dENvbnRlbnQucmVwbGFjZShOZSwiIiksdSxsKSl9cmV0dXJuIG59ZnVuY3Rpb24gT2UoZSx0LG4pe2Zvcih2YXIgcixpPXQ/Uy5maWx0ZXIodCxlKTplLG89MDtudWxsIT0ocj1pW29dKTtvKyspbnx8MSE9PXIubm9kZVR5cGV8fFMuY2xlYW5EYXRhKHZlKHIpKSxyLnBhcmVudE5vZGUmJihuJiZpZShyKSYmeWUodmUociwic2NyaXB0IikpLHIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChyKSk7cmV0dXJuIGV9Uy5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGNsb25lOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjPWUuY2xvbmVOb2RlKCEwKSxmPWllKGUpO2lmKCEoeS5ub0Nsb25lQ2hlY2tlZHx8MSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZXx8Uy5pc1hNTERvYyhlKSkpZm9yKGE9dmUoYykscj0wLGk9KG89dmUoZSkpLmxlbmd0aDtyPGk7cisrKXM9b1tyXSx1PWFbcl0sdm9pZCAwLCJpbnB1dCI9PT0obD11Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpJiZwZS50ZXN0KHMudHlwZSk/dS5jaGVja2VkPXMuY2hlY2tlZDoiaW5wdXQiIT09bCYmInRleHRhcmVhIiE9PWx8fCh1LmRlZmF1bHRWYWx1ZT1zLmRlZmF1bHRWYWx1ZSk7aWYodClpZihuKWZvcihvPW98fHZlKGUpLGE9YXx8dmUoYykscj0wLGk9by5sZW5ndGg7cjxpO3IrKylMZShvW3JdLGFbcl0pO2Vsc2UgTGUoZSxjKTtyZXR1cm4gMDwoYT12ZShjLCJzY3JpcHQiKSkubGVuZ3RoJiZ5ZShhLCFmJiZ2ZShlLCJzY3JpcHQiKSksY30sY2xlYW5EYXRhOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdCxuLHIsaT1TLmV2ZW50LnNwZWNpYWwsbz0wO3ZvaWQgMCE9PShuPWVbb10pO28rKylpZihWKG4pKXtpZih0PW5bWS5leHBhbmRvXSl7aWYodC5ldmVudHMpZm9yKHIgaW4gdC5ldmVudHMpaVtyXT9TLmV2ZW50LnJlbW92ZShuLHIpOlMucmVtb3ZlRXZlbnQobixyLHQuaGFuZGxlKTtuW1kuZXhwYW5kb109dm9pZCAwfW5bUS5leHBhbmRvXSYmKG5bUS5leHBhbmRvXT12b2lkIDApfX19KSxTLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGUpe3JldHVybiBPZSh0aGlzLGUsITApfSxyZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIE9lKHRoaXMsZSl9LHRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuICQodGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZT9TLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9ZSl9KX0sbnVsbCxlLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGUodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oZSl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fGplKHRoaXMsZSkuYXBwZW5kQ2hpbGQoZSl9KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIHQ9amUodGhpcyxlKTt0Lmluc2VydEJlZm9yZShlLHQuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBIZSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihlKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgZSx0PTA7bnVsbCE9KGU9dGhpc1t0XSk7dCsrKTE9PT1lLm5vZGVUeXBlJiYoUy5jbGVhbkRhdGEodmUoZSwhMSkpLGUudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGwhPWUmJmUsdD1udWxsPT10P2U6dCx0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBTLmNsb25lKHRoaXMsZSx0KX0pfSxodG1sOmZ1bmN0aW9uKGUpe3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSl7dmFyIHQ9dGhpc1swXXx8e30sbj0wLHI9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09ZSYmMT09PXQubm9kZVR5cGUpcmV0dXJuIHQuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIWtlLnRlc3QoZSkmJiFnZVsoZGUuZXhlYyhlKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2U9Uy5odG1sUHJlZmlsdGVyKGUpO3RyeXtmb3IoO248cjtuKyspMT09PSh0PXRoaXNbbl18fHt9KS5ub2RlVHlwZSYmKFMuY2xlYW5EYXRhKHZlKHQsITEpKSx0LmlubmVySFRNTD1lKTt0PTB9Y2F0Y2goZSl7fX10JiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGUpfSxudWxsLGUsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIG49W107cmV0dXJuIEhlKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucGFyZW50Tm9kZTtTLmluQXJyYXkodGhpcyxuKTwwJiYoUy5jbGVhbkRhdGEodmUodGhpcykpLHQmJnQucmVwbGFjZUNoaWxkKGUsdGhpcykpfSxuKX19KSxTLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihlLGEpe1MuZm5bZV09ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LG49W10scj1TKGUpLGk9ci5sZW5ndGgtMSxvPTA7bzw9aTtvKyspdD1vPT09aT90aGlzOnRoaXMuY2xvbmUoITApLFMocltvXSlbYV0odCksdS5hcHBseShuLHQuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhuKX19KTt2YXIgUGU9bmV3IFJlZ0V4cCgiXigiK2VlKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksUmU9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O3JldHVybiB0JiZ0Lm9wZW5lcnx8KHQ9QyksdC5nZXRDb21wdXRlZFN0eWxlKGUpfSxNZT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXt9O2ZvcihpIGluIHQpb1tpXT1lLnN0eWxlW2ldLGUuc3R5bGVbaV09dFtpXTtmb3IoaSBpbiByPW4uY2FsbChlKSx0KWUuc3R5bGVbaV09b1tpXTtyZXR1cm4gcn0sSWU9bmV3IFJlZ0V4cChuZS5qb2luKCJ8IiksImkiKTtmdW5jdGlvbiBXZShlLHQsbil7dmFyIHIsaSxvLGEscz1lLnN0eWxlO3JldHVybihuPW58fFJlKGUpKSYmKCIiIT09KGE9bi5nZXRQcm9wZXJ0eVZhbHVlKHQpfHxuW3RdKXx8aWUoZSl8fChhPVMuc3R5bGUoZSx0KSksIXkucGl4ZWxCb3hTdHlsZXMoKSYmUGUudGVzdChhKSYmSWUudGVzdCh0KSYmKHI9cy53aWR0aCxpPXMubWluV2lkdGgsbz1zLm1heFdpZHRoLHMubWluV2lkdGg9cy5tYXhXaWR0aD1zLndpZHRoPWEsYT1uLndpZHRoLHMud2lkdGg9cixzLm1pbldpZHRoPWkscy5tYXhXaWR0aD1vKSksdm9pZCAwIT09YT9hKyIiOmF9ZnVuY3Rpb24gRmUoZSx0KXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7aWYoIWUoKSlyZXR1cm4odGhpcy5nZXQ9dCkuYXBwbHkodGhpcyxhcmd1bWVudHMpO2RlbGV0ZSB0aGlzLmdldH19fSFmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXtpZihsKXt1LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTExMTExcHg7d2lkdGg6NjBweDttYXJnaW4tdG9wOjFweDtwYWRkaW5nOjA7Ym9yZGVyOjAiLGwuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTpibG9jaztib3gtc2l6aW5nOmJvcmRlci1ib3g7b3ZlcmZsb3c6c2Nyb2xsO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NjAlO3RvcDoxJSIscmUuYXBwZW5kQ2hpbGQodSkuYXBwZW5kQ2hpbGQobCk7dmFyIGU9Qy5nZXRDb21wdXRlZFN0eWxlKGwpO249IjElIiE9PWUudG9wLHM9MTI9PT10KGUubWFyZ2luTGVmdCksbC5zdHlsZS5yaWdodD0iNjAlIixvPTM2PT09dChlLnJpZ2h0KSxyPTM2PT09dChlLndpZHRoKSxsLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsaT0xMj09PXQobC5vZmZzZXRXaWR0aC8zKSxyZS5yZW1vdmVDaGlsZCh1KSxsPW51bGx9fWZ1bmN0aW9uIHQoZSl7cmV0dXJuIE1hdGgucm91bmQocGFyc2VGbG9hdChlKSl9dmFyIG4scixpLG8sYSxzLHU9RS5jcmVhdGVFbGVtZW50KCJkaXYiKSxsPUUuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5zdHlsZSYmKGwuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixsLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIseS5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWwuc3R5bGUuYmFja2dyb3VuZENsaXAsUy5leHRlbmQoeSx7Ym94U2l6aW5nUmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHJ9LHBpeGVsQm94U3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxvfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxufSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLHN9LHNjcm9sbGJveFNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZSgpLGl9LHJlbGlhYmxlVHJEaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIGUsdCxuLHI7cmV0dXJuIG51bGw9PWEmJihlPUUuY3JlYXRlRWxlbWVudCgidGFibGUiKSx0PUUuY3JlYXRlRWxlbWVudCgidHIiKSxuPUUuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O2JvcmRlci1jb2xsYXBzZTpzZXBhcmF0ZSIsdC5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MXB4IHNvbGlkIix0LnN0eWxlLmhlaWdodD0iMXB4IixuLnN0eWxlLmhlaWdodD0iOXB4IixuLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixyZS5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZCh0KS5hcHBlbmRDaGlsZChuKSxyPUMuZ2V0Q29tcHV0ZWRTdHlsZSh0KSxhPXBhcnNlSW50KHIuaGVpZ2h0LDEwKStwYXJzZUludChyLmJvcmRlclRvcFdpZHRoLDEwKStwYXJzZUludChyLmJvcmRlckJvdHRvbVdpZHRoLDEwKT09PXQub2Zmc2V0SGVpZ2h0LHJlLnJlbW92ZUNoaWxkKGUpKSxhfX0pKX0oKTt2YXIgQmU9WyJXZWJraXQiLCJNb3oiLCJtcyJdLCRlPUUuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsX2U9e307ZnVuY3Rpb24gemUoZSl7dmFyIHQ9Uy5jc3NQcm9wc1tlXXx8X2VbZV07cmV0dXJuIHR8fChlIGluICRlP2U6X2VbZV09ZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSksbj1CZS5sZW5ndGg7d2hpbGUobi0tKWlmKChlPUJlW25dK3QpaW4gJGUpcmV0dXJuIGV9KGUpfHxlKX12YXIgVWU9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFhlPS9eLS0vLFZlPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxHZT17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn07ZnVuY3Rpb24gWWUoZSx0LG4pe3ZhciByPXRlLmV4ZWModCk7cmV0dXJuIHI/TWF0aC5tYXgoMCxyWzJdLShufHwwKSkrKHJbM118fCJweCIpOnR9ZnVuY3Rpb24gUWUoZSx0LG4scixpLG8pe3ZhciBhPSJ3aWR0aCI9PT10PzE6MCxzPTAsdT0wO2lmKG49PT0ocj8iYm9yZGVyIjoiY29udGVudCIpKXJldHVybiAwO2Zvcig7YTw0O2ErPTIpIm1hcmdpbiI9PT1uJiYodSs9Uy5jc3MoZSxuK25lW2FdLCEwLGkpKSxyPygiY29udGVudCI9PT1uJiYodS09Uy5jc3MoZSwicGFkZGluZyIrbmVbYV0sITAsaSkpLCJtYXJnaW4iIT09biYmKHUtPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKSkpOih1Kz1TLmNzcyhlLCJwYWRkaW5nIituZVthXSwhMCxpKSwicGFkZGluZyIhPT1uP3UrPVMuY3NzKGUsImJvcmRlciIrbmVbYV0rIldpZHRoIiwhMCxpKTpzKz1TLmNzcyhlLCJib3JkZXIiK25lW2FdKyJXaWR0aCIsITAsaSkpO3JldHVybiFyJiYwPD1vJiYodSs9TWF0aC5tYXgoMCxNYXRoLmNlaWwoZVsib2Zmc2V0Iit0WzBdLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKV0tby11LXMtLjUpKXx8MCksdX1mdW5jdGlvbiBKZShlLHQsbil7dmFyIHI9UmUoZSksaT0oIXkuYm94U2l6aW5nUmVsaWFibGUoKXx8bikmJiJib3JkZXItYm94Ij09PVMuY3NzKGUsImJveFNpemluZyIsITEsciksbz1pLGE9V2UoZSx0LHIpLHM9Im9mZnNldCIrdFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSk7aWYoUGUudGVzdChhKSl7aWYoIW4pcmV0dXJuIGE7YT0iYXV0byJ9cmV0dXJuKCF5LmJveFNpemluZ1JlbGlhYmxlKCkmJml8fCF5LnJlbGlhYmxlVHJEaW1lbnNpb25zKCkmJkEoZSwidHIiKXx8ImF1dG8iPT09YXx8IXBhcnNlRmxvYXQoYSkmJiJpbmxpbmUiPT09Uy5jc3MoZSwiZGlzcGxheSIsITEscikpJiZlLmdldENsaWVudFJlY3RzKCkubGVuZ3RoJiYoaT0iYm9yZGVyLWJveCI9PT1TLmNzcyhlLCJib3hTaXppbmciLCExLHIpLChvPXMgaW4gZSkmJihhPWVbc10pKSwoYT1wYXJzZUZsb2F0KGEpfHwwKStRZShlLHQsbnx8KGk/ImJvcmRlciI6ImNvbnRlbnQiKSxvLHIsYSkrInB4In1mdW5jdGlvbiBLZShlLHQsbixyLGkpe3JldHVybiBuZXcgS2UucHJvdG90eXBlLmluaXQoZSx0LG4scixpKX1TLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPVdlKGUsIm9wYWNpdHkiKTtyZXR1cm4iIj09PW4/IjEiOm59fX19LGNzc051bWJlcjp7YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGdyaWRBcmVhOiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3RhcnQ6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdyaWRSb3dTdGFydDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnt9LHN0eWxlOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGUmJjMhPT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmZS5zdHlsZSl7dmFyIGksbyxhLHM9WCh0KSx1PVhlLnRlc3QodCksbD1lLnN0eWxlO2lmKHV8fCh0PXplKHMpKSxhPVMuY3NzSG9va3NbdF18fFMuY3NzSG9va3Nbc10sdm9pZCAwPT09bilyZXR1cm4gYSYmImdldCJpbiBhJiZ2b2lkIDAhPT0oaT1hLmdldChlLCExLHIpKT9pOmxbdF07InN0cmluZyI9PT0obz10eXBlb2YgbikmJihpPXRlLmV4ZWMobikpJiZpWzFdJiYobj1zZShlLHQsaSksbz0ibnVtYmVyIiksbnVsbCE9biYmbj09biYmKCJudW1iZXIiIT09b3x8dXx8KG4rPWkmJmlbM118fChTLmNzc051bWJlcltzXT8iIjoicHgiKSkseS5jbGVhckNsb25lU3R5bGV8fCIiIT09bnx8MCE9PXQuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwobFt0XT0iaW5oZXJpdCIpLGEmJiJzZXQiaW4gYSYmdm9pZCAwPT09KG49YS5zZXQoZSxuLHIpKXx8KHU/bC5zZXRQcm9wZXJ0eSh0LG4pOmxbdF09bikpfX0sY3NzOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpLG8sYSxzPVgodCk7cmV0dXJuIFhlLnRlc3QodCl8fCh0PXplKHMpKSwoYT1TLmNzc0hvb2tzW3RdfHxTLmNzc0hvb2tzW3NdKSYmImdldCJpbiBhJiYoaT1hLmdldChlLCEwLG4pKSx2b2lkIDA9PT1pJiYoaT1XZShlLHQscikpLCJub3JtYWwiPT09aSYmdCBpbiBHZSYmKGk9R2VbdF0pLCIiPT09bnx8bj8obz1wYXJzZUZsb2F0KGkpLCEwPT09bnx8aXNGaW5pdGUobyk/b3x8MDppKTppfX0pLFMuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oZSx1KXtTLmNzc0hvb2tzW3VdPXtnZXQ6ZnVuY3Rpb24oZSx0LG4pe2lmKHQpcmV0dXJuIVVlLnRlc3QoUy5jc3MoZSwiZGlzcGxheSIpKXx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aD9KZShlLHUsbik6TWUoZSxWZSxmdW5jdGlvbigpe3JldHVybiBKZShlLHUsbil9KX0sc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPVJlKGUpLG89IXkuc2Nyb2xsYm94U2l6ZSgpJiYiYWJzb2x1dGUiPT09aS5wb3NpdGlvbixhPShvfHxuKSYmImJvcmRlci1ib3giPT09Uy5jc3MoZSwiYm94U2l6aW5nIiwhMSxpKSxzPW4/UWUoZSx1LG4sYSxpKTowO3JldHVybiBhJiZvJiYocy09TWF0aC5jZWlsKGVbIm9mZnNldCIrdVswXS50b1VwcGVyQ2FzZSgpK3Uuc2xpY2UoMSldLXBhcnNlRmxvYXQoaVt1XSktUWUoZSx1LCJib3JkZXIiLCExLGkpLS41KSkscyYmKHI9dGUuZXhlYyh0KSkmJiJweCIhPT0oclszXXx8InB4IikmJihlLnN0eWxlW3VdPXQsdD1TLmNzcyhlLHUpKSxZZSgwLHQscyl9fX0pLFMuY3NzSG9va3MubWFyZ2luTGVmdD1GZSh5LnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuKHBhcnNlRmxvYXQoV2UoZSwibWFyZ2luTGVmdCIpKXx8ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0LU1lKGUse21hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSkpKyJweCJ9KSxTLmVhY2goe21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihpLG8pe1MuY3NzSG9va3NbaStvXT17ZXhwYW5kOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49e30scj0ic3RyaW5nIj09dHlwZW9mIGU/ZS5zcGxpdCgiICIpOltlXTt0PDQ7dCsrKW5baStuZVt0XStvXT1yW3RdfHxyW3QtMl18fHJbMF07cmV0dXJuIG59fSwibWFyZ2luIiE9PWkmJihTLmNzc0hvb2tzW2krb10uc2V0PVllKX0pLFMuZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89e30sYT0wO2lmKEFycmF5LmlzQXJyYXkodCkpe2ZvcihyPVJlKGUpLGk9dC5sZW5ndGg7YTxpO2ErKylvW3RbYV1dPVMuY3NzKGUsdFthXSwhMSxyKTtyZXR1cm4gb31yZXR1cm4gdm9pZCAwIT09bj9TLnN0eWxlKGUsdCxuKTpTLmNzcyhlLHQpfSxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX19KSwoKFMuVHdlZW49S2UpLnByb3RvdHlwZT17Y29uc3RydWN0b3I6S2UsaW5pdDpmdW5jdGlvbihlLHQsbixyLGksbyl7dGhpcy5lbGVtPWUsdGhpcy5wcm9wPW4sdGhpcy5lYXNpbmc9aXx8Uy5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPXQsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPXIsdGhpcy51bml0PW98fChTLmNzc051bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGU9S2UucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIGUmJmUuZ2V0P2UuZ2V0KHRoaXMpOktlLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbihlKXt2YXIgdCxuPUtlLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9dD1TLmVhc2luZ1t0aGlzLmVhc2luZ10oZSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qZSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz10PWUsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKnQrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksbiYmbi5zZXQ/bi5zZXQodGhpcyk6S2UucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0pLmluaXQucHJvdG90eXBlPUtlLnByb3RvdHlwZSwoS2UucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiAxIT09ZS5lbGVtLm5vZGVUeXBlfHxudWxsIT1lLmVsZW1bZS5wcm9wXSYmbnVsbD09ZS5lbGVtLnN0eWxlW2UucHJvcF0/ZS5lbGVtW2UucHJvcF06KHQ9Uy5jc3MoZS5lbGVtLGUucHJvcCwiIikpJiYiYXV0byIhPT10P3Q6MH0sc2V0OmZ1bmN0aW9uKGUpe1MuZnguc3RlcFtlLnByb3BdP1MuZnguc3RlcFtlLnByb3BdKGUpOjEhPT1lLmVsZW0ubm9kZVR5cGV8fCFTLmNzc0hvb2tzW2UucHJvcF0mJm51bGw9PWUuZWxlbS5zdHlsZVt6ZShlLnByb3ApXT9lLmVsZW1bZS5wcm9wXT1lLm5vdzpTLnN0eWxlKGUuZWxlbSxlLnByb3AsZS5ub3crZS51bml0KX19fSkuc2Nyb2xsVG9wPUtlLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oZSl7ZS5lbGVtLm5vZGVUeXBlJiZlLmVsZW0ucGFyZW50Tm9kZSYmKGUuZWxlbVtlLnByb3BdPWUubm93KX19LFMuZWFzaW5nPXtsaW5lYXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHN3aW5nOmZ1bmN0aW9uKGUpe3JldHVybi41LU1hdGguY29zKGUqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn0sUy5meD1LZS5wcm90b3R5cGUuaW5pdCxTLmZ4LnN0ZXA9e307dmFyIFplLGV0LHR0LG50LHJ0PS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxpdD0vcXVldWVIb29rcyQvO2Z1bmN0aW9uIG90KCl7ZXQmJighMT09PUUuaGlkZGVuJiZDLnJlcXVlc3RBbmltYXRpb25GcmFtZT9DLnJlcXVlc3RBbmltYXRpb25GcmFtZShvdCk6Qy5zZXRUaW1lb3V0KG90LFMuZnguaW50ZXJ2YWwpLFMuZngudGljaygpKX1mdW5jdGlvbiBhdCgpe3JldHVybiBDLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtaZT12b2lkIDB9KSxaZT1EYXRlLm5vdygpfWZ1bmN0aW9uIHN0KGUsdCl7dmFyIG4scj0wLGk9e2hlaWdodDplfTtmb3IodD10PzE6MDtyPDQ7cis9Mi10KWlbIm1hcmdpbiIrKG49bmVbcl0pXT1pWyJwYWRkaW5nIituXT1lO3JldHVybiB0JiYoaS5vcGFjaXR5PWkud2lkdGg9ZSksaX1mdW5jdGlvbiB1dChlLHQsbil7Zm9yKHZhciByLGk9KGx0LnR3ZWVuZXJzW3RdfHxbXSkuY29uY2F0KGx0LnR3ZWVuZXJzWyIqIl0pLG89MCxhPWkubGVuZ3RoO288YTtvKyspaWYocj1pW29dLmNhbGwobix0LGUpKXJldHVybiByfWZ1bmN0aW9uIGx0KG8sZSx0KXt2YXIgbixhLHI9MCxpPWx0LnByZWZpbHRlcnMubGVuZ3RoLHM9Uy5EZWZlcnJlZCgpLmFsd2F5cyhmdW5jdGlvbigpe2RlbGV0ZSB1LmVsZW19KSx1PWZ1bmN0aW9uKCl7aWYoYSlyZXR1cm4hMTtmb3IodmFyIGU9WmV8fGF0KCksdD1NYXRoLm1heCgwLGwuc3RhcnRUaW1lK2wuZHVyYXRpb24tZSksbj0xLSh0L2wuZHVyYXRpb258fDApLHI9MCxpPWwudHdlZW5zLmxlbmd0aDtyPGk7cisrKWwudHdlZW5zW3JdLnJ1bihuKTtyZXR1cm4gcy5ub3RpZnlXaXRoKG8sW2wsbix0XSksbjwxJiZpP3Q6KGl8fHMubm90aWZ5V2l0aChvLFtsLDEsMF0pLHMucmVzb2x2ZVdpdGgobyxbbF0pLCExKX0sbD1zLnByb21pc2Uoe2VsZW06byxwcm9wczpTLmV4dGVuZCh7fSxlKSxvcHRzOlMuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpTLmVhc2luZy5fZGVmYXVsdH0sdCksb3JpZ2luYWxQcm9wZXJ0aWVzOmUsb3JpZ2luYWxPcHRpb25zOnQsc3RhcnRUaW1lOlplfHxhdCgpLGR1cmF0aW9uOnQuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGUsdCl7dmFyIG49Uy5Ud2VlbihvLGwub3B0cyxlLHQsbC5vcHRzLnNwZWNpYWxFYXNpbmdbZV18fGwub3B0cy5lYXNpbmcpO3JldHVybiBsLnR3ZWVucy5wdXNoKG4pLG59LHN0b3A6ZnVuY3Rpb24oZSl7dmFyIHQ9MCxuPWU/bC50d2VlbnMubGVuZ3RoOjA7aWYoYSlyZXR1cm4gdGhpcztmb3IoYT0hMDt0PG47dCsrKWwudHdlZW5zW3RdLnJ1bigxKTtyZXR1cm4gZT8ocy5ub3RpZnlXaXRoKG8sW2wsMSwwXSkscy5yZXNvbHZlV2l0aChvLFtsLGVdKSk6cy5yZWplY3RXaXRoKG8sW2wsZV0pLHRoaXN9fSksYz1sLnByb3BzO2ZvcighZnVuY3Rpb24oZSx0KXt2YXIgbixyLGksbyxhO2ZvcihuIGluIGUpaWYoaT10W3I9WChuKV0sbz1lW25dLEFycmF5LmlzQXJyYXkobykmJihpPW9bMV0sbz1lW25dPW9bMF0pLG4hPT1yJiYoZVtyXT1vLGRlbGV0ZSBlW25dKSwoYT1TLmNzc0hvb2tzW3JdKSYmImV4cGFuZCJpbiBhKWZvcihuIGluIG89YS5leHBhbmQobyksZGVsZXRlIGVbcl0sbyluIGluIGV8fChlW25dPW9bbl0sdFtuXT1pKTtlbHNlIHRbcl09aX0oYyxsLm9wdHMuc3BlY2lhbEVhc2luZyk7cjxpO3IrKylpZihuPWx0LnByZWZpbHRlcnNbcl0uY2FsbChsLG8sYyxsLm9wdHMpKXJldHVybiBtKG4uc3RvcCkmJihTLl9xdWV1ZUhvb2tzKGwuZWxlbSxsLm9wdHMucXVldWUpLnN0b3A9bi5zdG9wLmJpbmQobikpLG47cmV0dXJuIFMubWFwKGMsdXQsbCksbShsLm9wdHMuc3RhcnQpJiZsLm9wdHMuc3RhcnQuY2FsbChvLGwpLGwucHJvZ3Jlc3MobC5vcHRzLnByb2dyZXNzKS5kb25lKGwub3B0cy5kb25lLGwub3B0cy5jb21wbGV0ZSkuZmFpbChsLm9wdHMuZmFpbCkuYWx3YXlzKGwub3B0cy5hbHdheXMpLFMuZngudGltZXIoUy5leHRlbmQodSx7ZWxlbTpvLGFuaW06bCxxdWV1ZTpsLm9wdHMucXVldWV9KSksbH1TLkFuaW1hdGlvbj1TLmV4dGVuZChsdCx7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmNyZWF0ZVR3ZWVuKGUsdCk7cmV0dXJuIHNlKG4uZWxlbSxlLHRlLmV4ZWModCksbiksbn1dfSx0d2VlbmVyOmZ1bmN0aW9uKGUsdCl7bShlKT8odD1lLGU9WyIqIl0pOmU9ZS5tYXRjaChQKTtmb3IodmFyIG4scj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluPWVbcl0sbHQudHdlZW5lcnNbbl09bHQudHdlZW5lcnNbbl18fFtdLGx0LnR3ZWVuZXJzW25dLnVuc2hpZnQodCl9LHByZWZpbHRlcnM6W2Z1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbCxjLGY9IndpZHRoImluIHR8fCJoZWlnaHQiaW4gdCxwPXRoaXMsZD17fSxoPWUuc3R5bGUsZz1lLm5vZGVUeXBlJiZhZShlKSx2PVkuZ2V0KGUsImZ4c2hvdyIpO2ZvcihyIGluIG4ucXVldWV8fChudWxsPT0oYT1TLl9xdWV1ZUhvb2tzKGUsImZ4IikpLnVucXVldWVkJiYoYS51bnF1ZXVlZD0wLHM9YS5lbXB0eS5maXJlLGEuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2EudW5xdWV1ZWR8fHMoKX0pLGEudW5xdWV1ZWQrKyxwLmFsd2F5cyhmdW5jdGlvbigpe3AuYWx3YXlzKGZ1bmN0aW9uKCl7YS51bnF1ZXVlZC0tLFMucXVldWUoZSwiZngiKS5sZW5ndGh8fGEuZW1wdHkuZmlyZSgpfSl9KSksdClpZihpPXRbcl0scnQudGVzdChpKSl7aWYoZGVsZXRlIHRbcl0sbz1vfHwidG9nZ2xlIj09PWksaT09PShnPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1pfHwhdnx8dm9pZCAwPT09dltyXSljb250aW51ZTtnPSEwfWRbcl09diYmdltyXXx8Uy5zdHlsZShlLHIpfWlmKCh1PSFTLmlzRW1wdHlPYmplY3QodCkpfHwhUy5pc0VtcHR5T2JqZWN0KGQpKWZvcihyIGluIGYmJjE9PT1lLm5vZGVUeXBlJiYobi5vdmVyZmxvdz1baC5vdmVyZmxvdyxoLm92ZXJmbG93WCxoLm92ZXJmbG93WV0sbnVsbD09KGw9diYmdi5kaXNwbGF5KSYmKGw9WS5nZXQoZSwiZGlzcGxheSIpKSwibm9uZSI9PT0oYz1TLmNzcyhlLCJkaXNwbGF5IikpJiYobD9jPWw6KGxlKFtlXSwhMCksbD1lLnN0eWxlLmRpc3BsYXl8fGwsYz1TLmNzcyhlLCJkaXNwbGF5IiksbGUoW2VdKSkpLCgiaW5saW5lIj09PWN8fCJpbmxpbmUtYmxvY2siPT09YyYmbnVsbCE9bCkmJiJub25lIj09PVMuY3NzKGUsImZsb2F0IikmJih1fHwocC5kb25lKGZ1bmN0aW9uKCl7aC5kaXNwbGF5PWx9KSxudWxsPT1sJiYoYz1oLmRpc3BsYXksbD0ibm9uZSI9PT1jPyIiOmMpKSxoLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxuLm92ZXJmbG93JiYoaC5vdmVyZmxvdz0iaGlkZGVuIixwLmFsd2F5cyhmdW5jdGlvbigpe2gub3ZlcmZsb3c9bi5vdmVyZmxvd1swXSxoLm92ZXJmbG93WD1uLm92ZXJmbG93WzFdLGgub3ZlcmZsb3dZPW4ub3ZlcmZsb3dbMl19KSksdT0hMSxkKXV8fCh2PyJoaWRkZW4iaW4gdiYmKGc9di5oaWRkZW4pOnY9WS5hY2Nlc3MoZSwiZnhzaG93Iix7ZGlzcGxheTpsfSksbyYmKHYuaGlkZGVuPSFnKSxnJiZsZShbZV0sITApLHAuZG9uZShmdW5jdGlvbigpe2ZvcihyIGluIGd8fGxlKFtlXSksWS5yZW1vdmUoZSwiZnhzaG93IiksZClTLnN0eWxlKGUscixkW3JdKX0pKSx1PXV0KGc/dltyXTowLHIscCksciBpbiB2fHwodltyXT11LnN0YXJ0LGcmJih1LmVuZD11LnN0YXJ0LHUuc3RhcnQ9MCkpfV0scHJlZmlsdGVyOmZ1bmN0aW9uKGUsdCl7dD9sdC5wcmVmaWx0ZXJzLnVuc2hpZnQoZSk6bHQucHJlZmlsdGVycy5wdXNoKGUpfX0pLFMuc3BlZWQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUmJiJvYmplY3QiPT10eXBlb2YgZT9TLmV4dGVuZCh7fSxlKTp7Y29tcGxldGU6bnx8IW4mJnR8fG0oZSkmJmUsZHVyYXRpb246ZSxlYXNpbmc6biYmdHx8dCYmIW0odCkmJnR9O3JldHVybiBTLmZ4Lm9mZj9yLmR1cmF0aW9uPTA6Im51bWJlciIhPXR5cGVvZiByLmR1cmF0aW9uJiYoci5kdXJhdGlvbiBpbiBTLmZ4LnNwZWVkcz9yLmR1cmF0aW9uPVMuZnguc3BlZWRzW3IuZHVyYXRpb25dOnIuZHVyYXRpb249Uy5meC5zcGVlZHMuX2RlZmF1bHQpLG51bGwhPXIucXVldWUmJiEwIT09ci5xdWV1ZXx8KHIucXVldWU9ImZ4Iiksci5vbGQ9ci5jb21wbGV0ZSxyLmNvbXBsZXRlPWZ1bmN0aW9uKCl7bShyLm9sZCkmJnIub2xkLmNhbGwodGhpcyksci5xdWV1ZSYmUy5kZXF1ZXVlKHRoaXMsci5xdWV1ZSl9LHJ9LFMuZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuZmlsdGVyKGFlKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OnR9LGUsbixyKX0sYW5pbWF0ZTpmdW5jdGlvbih0LGUsbixyKXt2YXIgaT1TLmlzRW1wdHlPYmplY3QodCksbz1TLnNwZWVkKGUsbixyKSxhPWZ1bmN0aW9uKCl7dmFyIGU9bHQodGhpcyxTLmV4dGVuZCh7fSx0KSxvKTsoaXx8WS5nZXQodGhpcywiZmluaXNoIikpJiZlLnN0b3AoITApfTtyZXR1cm4gYS5maW5pc2g9YSxpfHwhMT09PW8ucXVldWU/dGhpcy5lYWNoKGEpOnRoaXMucXVldWUoby5xdWV1ZSxhKX0sc3RvcDpmdW5jdGlvbihpLGUsbyl7dmFyIGE9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zdG9wO2RlbGV0ZSBlLnN0b3AsdChvKX07cmV0dXJuInN0cmluZyIhPXR5cGVvZiBpJiYobz1lLGU9aSxpPXZvaWQgMCksZSYmdGhpcy5xdWV1ZShpfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0hMCx0PW51bGwhPWkmJmkrInF1ZXVlSG9va3MiLG49Uy50aW1lcnMscj1ZLmdldCh0aGlzKTtpZih0KXJbdF0mJnJbdF0uc3RvcCYmYShyW3RdKTtlbHNlIGZvcih0IGluIHIpclt0XSYmclt0XS5zdG9wJiZpdC50ZXN0KHQpJiZhKHJbdF0pO2Zvcih0PW4ubGVuZ3RoO3QtLTspblt0XS5lbGVtIT09dGhpc3x8bnVsbCE9aSYmblt0XS5xdWV1ZSE9PWl8fChuW3RdLmFuaW0uc3RvcChvKSxlPSExLG4uc3BsaWNlKHQsMSkpOyFlJiZvfHxTLmRlcXVldWUodGhpcyxpKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuITEhPT1hJiYoYT1hfHwiZngiKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0PVkuZ2V0KHRoaXMpLG49dFthKyJxdWV1ZSJdLHI9dFthKyJxdWV1ZUhvb2tzIl0saT1TLnRpbWVycyxvPW4/bi5sZW5ndGg6MDtmb3IodC5maW5pc2g9ITAsUy5xdWV1ZSh0aGlzLGEsW10pLHImJnIuc3RvcCYmci5zdG9wLmNhbGwodGhpcywhMCksZT1pLmxlbmd0aDtlLS07KWlbZV0uZWxlbT09PXRoaXMmJmlbZV0ucXVldWU9PT1hJiYoaVtlXS5hbmltLnN0b3AoITApLGkuc3BsaWNlKGUsMSkpO2ZvcihlPTA7ZTxvO2UrKyluW2VdJiZuW2VdLmZpbmlzaCYmbltlXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgdC5maW5pc2h9KX19KSxTLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGUscil7dmFyIGk9Uy5mbltyXTtTLmZuW3JdPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbnVsbD09ZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoc3QociwhMCksZSx0LG4pfX0pLFMuZWFjaCh7c2xpZGVEb3duOnN0KCJzaG93Iiksc2xpZGVVcDpzdCgiaGlkZSIpLHNsaWRlVG9nZ2xlOnN0KCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGUscil7Uy5mbltlXT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMuYW5pbWF0ZShyLGUsdCxuKX19KSxTLnRpbWVycz1bXSxTLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgZSx0PTAsbj1TLnRpbWVycztmb3IoWmU9RGF0ZS5ub3coKTt0PG4ubGVuZ3RoO3QrKykoZT1uW3RdKSgpfHxuW3RdIT09ZXx8bi5zcGxpY2UodC0tLDEpO24ubGVuZ3RofHxTLmZ4LnN0b3AoKSxaZT12b2lkIDB9LFMuZngudGltZXI9ZnVuY3Rpb24oZSl7Uy50aW1lcnMucHVzaChlKSxTLmZ4LnN0YXJ0KCl9LFMuZnguaW50ZXJ2YWw9MTMsUy5meC5zdGFydD1mdW5jdGlvbigpe2V0fHwoZXQ9ITAsb3QoKSl9LFMuZnguc3RvcD1mdW5jdGlvbigpe2V0PW51bGx9LFMuZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LFMuZm4uZGVsYXk9ZnVuY3Rpb24ocixlKXtyZXR1cm4gcj1TLmZ4JiZTLmZ4LnNwZWVkc1tyXXx8cixlPWV8fCJmeCIsdGhpcy5xdWV1ZShlLGZ1bmN0aW9uKGUsdCl7dmFyIG49Qy5zZXRUaW1lb3V0KGUscik7dC5zdG9wPWZ1bmN0aW9uKCl7Qy5jbGVhclRpbWVvdXQobil9fSl9LHR0PUUuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxudD1FLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLmFwcGVuZENoaWxkKEUuY3JlYXRlRWxlbWVudCgib3B0aW9uIikpLHR0LnR5cGU9ImNoZWNrYm94Iix5LmNoZWNrT249IiIhPT10dC52YWx1ZSx5Lm9wdFNlbGVjdGVkPW50LnNlbGVjdGVkLCh0dD1FLmNyZWF0ZUVsZW1lbnQoImlucHV0IikpLnZhbHVlPSJ0Iix0dC50eXBlPSJyYWRpbyIseS5yYWRpb1ZhbHVlPSJ0Ij09PXR0LnZhbHVlO3ZhciBjdCxmdD1TLmV4cHIuYXR0ckhhbmRsZTtTLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihlLHQpe3JldHVybiAkKHRoaXMsUy5hdHRyLGUsdCwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtTLnJlbW92ZUF0dHIodGhpcyxlKX0pfX0pLFMuZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgZS5nZXRBdHRyaWJ1dGU/Uy5wcm9wKGUsdCxuKTooMT09PW8mJlMuaXNYTUxEb2MoZSl8fChpPVMuYXR0ckhvb2tzW3QudG9Mb3dlckNhc2UoKV18fChTLmV4cHIubWF0Y2guYm9vbC50ZXN0KHQpP2N0OnZvaWQgMCkpLHZvaWQgMCE9PW4/bnVsbD09PW4/dm9pZCBTLnJlbW92ZUF0dHIoZSx0KTppJiYic2V0ImluIGkmJnZvaWQgMCE9PShyPWkuc2V0KGUsbix0KSk/cjooZS5zZXRBdHRyaWJ1dGUodCxuKyIiKSxuKTppJiYiZ2V0ImluIGkmJm51bGwhPT0ocj1pLmdldChlLHQpKT9yOm51bGw9PShyPVMuZmluZC5hdHRyKGUsdCkpP3ZvaWQgMDpyKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oZSx0KXtpZigheS5yYWRpb1ZhbHVlJiYicmFkaW8iPT09dCYmQShlLCJpbnB1dCIpKXt2YXIgbj1lLnZhbHVlO3JldHVybiBlLnNldEF0dHJpYnV0ZSgidHlwZSIsdCksbiYmKGUudmFsdWU9biksdH19fX0scmVtb3ZlQXR0cjpmdW5jdGlvbihlLHQpe3ZhciBuLHI9MCxpPXQmJnQubWF0Y2goUCk7aWYoaSYmMT09PWUubm9kZVR5cGUpd2hpbGUobj1pW3IrK10pZS5yZW1vdmVBdHRyaWJ1dGUobil9fSksY3Q9e3NldDpmdW5jdGlvbihlLHQsbil7cmV0dXJuITE9PT10P1MucmVtb3ZlQXR0cihlLG4pOmUuc2V0QXR0cmlidXRlKG4sbiksbn19LFMuZWFjaChTLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihlLHQpe3ZhciBhPWZ0W3RdfHxTLmZpbmQuYXR0cjtmdFt0XT1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvPXQudG9Mb3dlckNhc2UoKTtyZXR1cm4gbnx8KGk9ZnRbb10sZnRbb109cixyPW51bGwhPWEoZSx0LG4pP286bnVsbCxmdFtvXT1pKSxyfX0pO3ZhciBwdD0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLGR0PS9eKD86YXxhcmVhKSQvaTtmdW5jdGlvbiBodChlKXtyZXR1cm4oZS5tYXRjaChQKXx8W10pLmpvaW4oIiAiKX1mdW5jdGlvbiBndChlKXtyZXR1cm4gZS5nZXRBdHRyaWJ1dGUmJmUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn1mdW5jdGlvbiB2dChlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT9lOiJzdHJpbmciPT10eXBlb2YgZSYmZS5tYXRjaChQKXx8W119Uy5mbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gJCh0aGlzLFMucHJvcCxlLHQsMTxhcmd1bWVudHMubGVuZ3RoKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbUy5wcm9wRml4W2VdfHxlXX0pfX0pLFMuZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG89ZS5ub2RlVHlwZTtpZigzIT09byYmOCE9PW8mJjIhPT1vKXJldHVybiAxPT09byYmUy5pc1hNTERvYyhlKXx8KHQ9Uy5wcm9wRml4W3RdfHx0LGk9Uy5wcm9wSG9va3NbdF0pLHZvaWQgMCE9PW4/aSYmInNldCJpbiBpJiZ2b2lkIDAhPT0ocj1pLnNldChlLG4sdCkpP3I6ZVt0XT1uOmkmJiJnZXQiaW4gaSYmbnVsbCE9PShyPWkuZ2V0KGUsdCkpP3I6ZVt0XX0scHJvcEhvb2tzOnt0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInRhYmluZGV4Iik7cmV0dXJuIHQ/cGFyc2VJbnQodCwxMCk6cHQudGVzdChlLm5vZGVOYW1lKXx8ZHQudGVzdChlLm5vZGVOYW1lKSYmZS5ocmVmPzA6LTF9fX0scHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9fSkseS5vcHRTZWxlY3RlZHx8KFMucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5wYXJlbnROb2RlO3JldHVybiB0JiZ0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9LHNldDpmdW5jdGlvbihlKXt2YXIgdD1lLnBhcmVudE5vZGU7dCYmKHQuc2VsZWN0ZWRJbmRleCx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSxTLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe1MucHJvcEZpeFt0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxTLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24odCl7dmFyIGUsbixyLGksbyxhLHMsdT0wO2lmKG0odCkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLmFkZENsYXNzKHQuY2FsbCh0aGlzLGUsZ3QodGhpcykpKX0pO2lmKChlPXZ0KHQpKS5sZW5ndGgpd2hpbGUobj10aGlzW3UrK10paWYoaT1ndChuKSxyPTE9PT1uLm5vZGVUeXBlJiYiICIraHQoaSkrIiAiKXthPTA7d2hpbGUobz1lW2ErK10pci5pbmRleE9mKCIgIitvKyIgIik8MCYmKHIrPW8rIiAiKTtpIT09KHM9aHQocikpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbih0KXt2YXIgZSxuLHIsaSxvLGEscyx1PTA7aWYobSh0KSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1ModGhpcykucmVtb3ZlQ2xhc3ModC5jYWxsKHRoaXMsZSxndCh0aGlzKSkpfSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtpZigoZT12dCh0KSkubGVuZ3RoKXdoaWxlKG49dGhpc1t1KytdKWlmKGk9Z3Qobikscj0xPT09bi5ub2RlVHlwZSYmIiAiK2h0KGkpKyIgIil7YT0wO3doaWxlKG89ZVthKytdKXdoaWxlKC0xPHIuaW5kZXhPZigiICIrbysiICIpKXI9ci5yZXBsYWNlKCIgIitvKyIgIiwiICIpO2khPT0ocz1odChyKSkmJm4uc2V0QXR0cmlidXRlKCJjbGFzcyIscyl9cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGksdCl7dmFyIG89dHlwZW9mIGksYT0ic3RyaW5nIj09PW98fEFycmF5LmlzQXJyYXkoaSk7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgdCYmYT90P3RoaXMuYWRkQ2xhc3MoaSk6dGhpcy5yZW1vdmVDbGFzcyhpKTptKGkpP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLnRvZ2dsZUNsYXNzKGkuY2FsbCh0aGlzLGUsZ3QodGhpcyksdCksdCl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZSx0LG4scjtpZihhKXt0PTAsbj1TKHRoaXMpLHI9dnQoaSk7d2hpbGUoZT1yW3QrK10pbi5oYXNDbGFzcyhlKT9uLnJlbW92ZUNsYXNzKGUpOm4uYWRkQ2xhc3MoZSl9ZWxzZSB2b2lkIDAhPT1pJiYiYm9vbGVhbiIhPT1vfHwoKGU9Z3QodGhpcykpJiZZLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixlKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixlfHwhMT09PWk/IiI6WS5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj0wO3Q9IiAiK2UrIiAiO3doaWxlKG49dGhpc1tyKytdKWlmKDE9PT1uLm5vZGVUeXBlJiYtMTwoIiAiK2h0KGd0KG4pKSsiICIpLmluZGV4T2YodCkpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIHl0PS9cci9nO1MuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24obil7dmFyIHIsZSxpLHQ9dGhpc1swXTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1tKG4pLHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgdDsxPT09dGhpcy5ub2RlVHlwZSYmKG51bGw9PSh0PWk/bi5jYWxsKHRoaXMsZSxTKHRoaXMpLnZhbCgpKTpuKT90PSIiOiJudW1iZXIiPT10eXBlb2YgdD90Kz0iIjpBcnJheS5pc0FycmF5KHQpJiYodD1TLm1hcCh0LGZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOmUrIiJ9KSksKHI9Uy52YWxIb29rc1t0aGlzLnR5cGVdfHxTLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYic2V0ImluIHImJnZvaWQgMCE9PXIuc2V0KHRoaXMsdCwidmFsdWUiKXx8KHRoaXMudmFsdWU9dCkpfSkpOnQ/KHI9Uy52YWxIb29rc1t0LnR5cGVdfHxTLnZhbEhvb2tzW3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYiZ2V0ImluIHImJnZvaWQgMCE9PShlPXIuZ2V0KHQsInZhbHVlIikpP2U6InN0cmluZyI9PXR5cGVvZihlPXQudmFsdWUpP2UucmVwbGFjZSh5dCwiIik6bnVsbD09ZT8iIjplOnZvaWQgMH19KSxTLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGUpe3ZhciB0PVMuZmluZC5hdHRyKGUsInZhbHVlIik7cmV0dXJuIG51bGwhPXQ/dDpodChTLnRleHQoZSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oZSl7dmFyIHQsbixyLGk9ZS5vcHRpb25zLG89ZS5zZWxlY3RlZEluZGV4LGE9InNlbGVjdC1vbmUiPT09ZS50eXBlLHM9YT9udWxsOltdLHU9YT9vKzE6aS5sZW5ndGg7Zm9yKHI9bzwwP3U6YT9vOjA7cjx1O3IrKylpZigoKG49aVtyXSkuc2VsZWN0ZWR8fHI9PT1vKSYmIW4uZGlzYWJsZWQmJighbi5wYXJlbnROb2RlLmRpc2FibGVkfHwhQShuLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZih0PVMobikudmFsKCksYSlyZXR1cm4gdDtzLnB1c2godCl9cmV0dXJuIHN9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBuLHIsaT1lLm9wdGlvbnMsbz1TLm1ha2VBcnJheSh0KSxhPWkubGVuZ3RoO3doaWxlKGEtLSkoKHI9aVthXSkuc2VsZWN0ZWQ9LTE8Uy5pbkFycmF5KFMudmFsSG9va3Mub3B0aW9uLmdldChyKSxvKSkmJihuPSEwKTtyZXR1cm4gbnx8KGUuc2VsZWN0ZWRJbmRleD0tMSksb319fX0pLFMuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe1MudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIGUuY2hlY2tlZD0tMTxTLmluQXJyYXkoUyhlKS52YWwoKSx0KX19LHkuY2hlY2tPbnx8KFMudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZS5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjplLnZhbHVlfSl9KSx5LmZvY3VzaW49Im9uZm9jdXNpbiJpbiBDO3ZhciBtdD0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8seHQ9ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKX07Uy5leHRlbmQoUy5ldmVudCx7dHJpZ2dlcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGwsYyxmLHA9W258fEVdLGQ9di5jYWxsKGUsInR5cGUiKT9lLnR5cGU6ZSxoPXYuY2FsbChlLCJuYW1lc3BhY2UiKT9lLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKG89Zj1hPW49bnx8RSwzIT09bi5ub2RlVHlwZSYmOCE9PW4ubm9kZVR5cGUmJiFtdC50ZXN0KGQrUy5ldmVudC50cmlnZ2VyZWQpJiYoLTE8ZC5pbmRleE9mKCIuIikmJihkPShoPWQuc3BsaXQoIi4iKSkuc2hpZnQoKSxoLnNvcnQoKSksdT1kLmluZGV4T2YoIjoiKTwwJiYib24iK2QsKGU9ZVtTLmV4cGFuZG9dP2U6bmV3IFMuRXZlbnQoZCwib2JqZWN0Ij09dHlwZW9mIGUmJmUpKS5pc1RyaWdnZXI9cj8yOjMsZS5uYW1lc3BhY2U9aC5qb2luKCIuIiksZS5ybmFtZXNwYWNlPWUubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK2guam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxlLnJlc3VsdD12b2lkIDAsZS50YXJnZXR8fChlLnRhcmdldD1uKSx0PW51bGw9PXQ/W2VdOlMubWFrZUFycmF5KHQsW2VdKSxjPVMuZXZlbnQuc3BlY2lhbFtkXXx8e30scnx8IWMudHJpZ2dlcnx8ITEhPT1jLnRyaWdnZXIuYXBwbHkobix0KSkpe2lmKCFyJiYhYy5ub0J1YmJsZSYmIXgobikpe2ZvcihzPWMuZGVsZWdhdGVUeXBlfHxkLG10LnRlc3QocytkKXx8KG89by5wYXJlbnROb2RlKTtvO289by5wYXJlbnROb2RlKXAucHVzaChvKSxhPW87YT09PShuLm93bmVyRG9jdW1lbnR8fEUpJiZwLnB1c2goYS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3d8fEMpfWk9MDt3aGlsZSgobz1wW2krK10pJiYhZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWY9byxlLnR5cGU9MTxpP3M6Yy5iaW5kVHlwZXx8ZCwobD0oWS5nZXQobywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2UudHlwZV0mJlkuZ2V0KG8sImhhbmRsZSIpKSYmbC5hcHBseShvLHQpLChsPXUmJm9bdV0pJiZsLmFwcGx5JiZWKG8pJiYoZS5yZXN1bHQ9bC5hcHBseShvLHQpLCExPT09ZS5yZXN1bHQmJmUucHJldmVudERlZmF1bHQoKSk7cmV0dXJuIGUudHlwZT1kLHJ8fGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fGMuX2RlZmF1bHQmJiExIT09Yy5fZGVmYXVsdC5hcHBseShwLnBvcCgpLHQpfHwhVihuKXx8dSYmbShuW2RdKSYmIXgobikmJigoYT1uW3VdKSYmKG5bdV09bnVsbCksUy5ldmVudC50cmlnZ2VyZWQ9ZCxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYuYWRkRXZlbnRMaXN0ZW5lcihkLHh0KSxuW2RdKCksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZmLnJlbW92ZUV2ZW50TGlzdGVuZXIoZCx4dCksUy5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGEmJihuW3VdPWEpKSxlLnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1TLmV4dGVuZChuZXcgUy5FdmVudCxuLHt0eXBlOmUsaXNTaW11bGF0ZWQ6ITB9KTtTLmV2ZW50LnRyaWdnZXIocixudWxsLHQpfX0pLFMuZm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe1MuZXZlbnQudHJpZ2dlcihlLHQsdGhpcyl9KX0sdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzWzBdO2lmKG4pcmV0dXJuIFMuZXZlbnQudHJpZ2dlcihlLHQsbiwhMCl9fSkseS5mb2N1c2lufHxTLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKG4scil7dmFyIGk9ZnVuY3Rpb24oZSl7Uy5ldmVudC5zaW11bGF0ZShyLGUudGFyZ2V0LFMuZXZlbnQuZml4KGUpKX07Uy5ldmVudC5zcGVjaWFsW3JdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyx0PVkuYWNjZXNzKGUscik7dHx8ZS5hZGRFdmVudExpc3RlbmVyKG4saSwhMCksWS5hY2Nlc3MoZSxyLCh0fHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMsdD1ZLmFjY2VzcyhlLHIpLTE7dD9ZLmFjY2VzcyhlLHIsdCk6KGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLGksITApLFkucmVtb3ZlKGUscikpfX19KTt2YXIgYnQ9Qy5sb2NhdGlvbix3dD17Z3VpZDpEYXRlLm5vdygpfSxUdD0vXD8vO1MucGFyc2VYTUw9ZnVuY3Rpb24oZSl7dmFyIHQsbjtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXJldHVybiBudWxsO3RyeXt0PShuZXcgQy5ET01QYXJzZXIpLnBhcnNlRnJvbVN0cmluZyhlLCJ0ZXh0L3htbCIpfWNhdGNoKGUpe31yZXR1cm4gbj10JiZ0LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpWzBdLHQmJiFufHxTLmVycm9yKCJJbnZhbGlkIFhNTDogIisobj9TLm1hcChuLmNoaWxkTm9kZXMsZnVuY3Rpb24oZSl7cmV0dXJuIGUudGV4dENvbnRlbnR9KS5qb2luKCJcbiIpOmUpKSx0fTt2YXIgQ3Q9L1xbXF0kLyxFdD0vXHI/XG4vZyxTdD0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksa3Q9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIEF0KG4sZSxyLGkpe3ZhciB0O2lmKEFycmF5LmlzQXJyYXkoZSkpUy5lYWNoKGUsZnVuY3Rpb24oZSx0KXtyfHxDdC50ZXN0KG4pP2kobix0KTpBdChuKyJbIisoIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT10P2U6IiIpKyJdIix0LHIsaSl9KTtlbHNlIGlmKHJ8fCJvYmplY3QiIT09dyhlKSlpKG4sZSk7ZWxzZSBmb3IodCBpbiBlKUF0KG4rIlsiK3QrIl0iLGVbdF0scixpKX1TLnBhcmFtPWZ1bmN0aW9uKGUsdCl7dmFyIG4scj1bXSxpPWZ1bmN0aW9uKGUsdCl7dmFyIG49bSh0KT90KCk6dDtyW3IubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQoZSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1uPyIiOm4pfTtpZihudWxsPT1lKXJldHVybiIiO2lmKEFycmF5LmlzQXJyYXkoZSl8fGUuanF1ZXJ5JiYhUy5pc1BsYWluT2JqZWN0KGUpKVMuZWFjaChlLGZ1bmN0aW9uKCl7aSh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihuIGluIGUpQXQobixlW25dLHQsaSk7cmV0dXJuIHIuam9pbigiJiIpfSxTLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIFMucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgZT1TLnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gZT9TLm1ha2VBcnJheShlKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFTKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYma3QudGVzdCh0aGlzLm5vZGVOYW1lKSYmIVN0LnRlc3QoZSkmJih0aGlzLmNoZWNrZWR8fCFwZS50ZXN0KGUpKX0pLm1hcChmdW5jdGlvbihlLHQpe3ZhciBuPVModGhpcykudmFsKCk7cmV0dXJuIG51bGw9PW4/bnVsbDpBcnJheS5pc0FycmF5KG4pP1MubWFwKG4sZnVuY3Rpb24oZSl7cmV0dXJue25hbWU6dC5uYW1lLHZhbHVlOmUucmVwbGFjZShFdCwiXHJcbiIpfX0pOntuYW1lOnQubmFtZSx2YWx1ZTpuLnJlcGxhY2UoRXQsIlxyXG4iKX19KS5nZXQoKX19KTt2YXIgTnQ9LyUyMC9nLGp0PS8jLiokLyxEdD0vKFs/Jl0pXz1bXiZdKi8scXQ9L14oLio/KTpbIFx0XSooW15cclxuXSopJC9nbSxMdD0vXig/OkdFVHxIRUFEKSQvLEh0PS9eXC9cLy8sT3Q9e30sUHQ9e30sUnQ9IiovIi5jb25jYXQoIioiKSxNdD1FLmNyZWF0ZUVsZW1lbnQoImEiKTtmdW5jdGlvbiBJdChvKXtyZXR1cm4gZnVuY3Rpb24oZSx0KXsic3RyaW5nIiE9dHlwZW9mIGUmJih0PWUsZT0iKiIpO3ZhciBuLHI9MCxpPWUudG9Mb3dlckNhc2UoKS5tYXRjaChQKXx8W107aWYobSh0KSl3aGlsZShuPWlbcisrXSkiKyI9PT1uWzBdPyhuPW4uc2xpY2UoMSl8fCIqIiwob1tuXT1vW25dfHxbXSkudW5zaGlmdCh0KSk6KG9bbl09b1tuXXx8W10pLnB1c2godCl9fWZ1bmN0aW9uIFd0KHQsaSxvLGEpe3ZhciBzPXt9LHU9dD09PVB0O2Z1bmN0aW9uIGwoZSl7dmFyIHI7cmV0dXJuIHNbZV09ITAsUy5lYWNoKHRbZV18fFtdLGZ1bmN0aW9uKGUsdCl7dmFyIG49dChpLG8sYSk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBufHx1fHxzW25dP3U/IShyPW4pOnZvaWQgMDooaS5kYXRhVHlwZXMudW5zaGlmdChuKSxsKG4pLCExKX0pLHJ9cmV0dXJuIGwoaS5kYXRhVHlwZXNbMF0pfHwhc1siKiJdJiZsKCIqIil9ZnVuY3Rpb24gRnQoZSx0KXt2YXIgbixyLGk9Uy5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihuIGluIHQpdm9pZCAwIT09dFtuXSYmKChpW25dP2U6cnx8KHI9e30pKVtuXT10W25dKTtyZXR1cm4gciYmUy5leHRlbmQoITAsZSxyKSxlfU10LmhyZWY9YnQuaHJlZixTLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6YnQuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8udGVzdChidC5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpSdCx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6Uy5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/RnQoRnQoZSxTLmFqYXhTZXR0aW5ncyksdCk6RnQoUy5hamF4U2V0dGluZ3MsZSl9LGFqYXhQcmVmaWx0ZXI6SXQoT3QpLGFqYXhUcmFuc3BvcnQ6SXQoUHQpLGFqYXg6ZnVuY3Rpb24oZSx0KXsib2JqZWN0Ij09dHlwZW9mIGUmJih0PWUsZT12b2lkIDApLHQ9dHx8e307dmFyIGMsZixwLG4sZCxyLGgsZyxpLG8sdj1TLmFqYXhTZXR1cCh7fSx0KSx5PXYuY29udGV4dHx8dixtPXYuY29udGV4dCYmKHkubm9kZVR5cGV8fHkuanF1ZXJ5KT9TKHkpOlMuZXZlbnQseD1TLkRlZmVycmVkKCksYj1TLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx3PXYuc3RhdHVzQ29kZXx8e30sYT17fSxzPXt9LHU9ImNhbmNlbGVkIixUPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoaCl7aWYoIW4pe249e307d2hpbGUodD1xdC5leGVjKHApKW5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl09KG5bdFsxXS50b0xvd2VyQ2FzZSgpKyIgIl18fFtdKS5jb25jYXQodFsyXSl9dD1uW2UudG9Mb3dlckNhc2UoKSsiICJdfXJldHVybiBudWxsPT10P251bGw6dC5qb2luKCIsICIpfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaD9wOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09aCYmKGU9c1tlLnRvTG93ZXJDYXNlKCldPXNbZS50b0xvd2VyQ2FzZSgpXXx8ZSxhW2VdPXQpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PWgmJih2Lm1pbWVUeXBlPWUpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoZSlpZihoKVQuYWx3YXlzKGVbVC5zdGF0dXNdKTtlbHNlIGZvcih0IGluIGUpd1t0XT1bd1t0XSxlW3RdXTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZXx8dTtyZXR1cm4gYyYmYy5hYm9ydCh0KSxsKDAsdCksdGhpc319O2lmKHgucHJvbWlzZShUKSx2LnVybD0oKGV8fHYudXJsfHxidC5ocmVmKSsiIikucmVwbGFjZShIdCxidC5wcm90b2NvbCsiLy8iKSx2LnR5cGU9dC5tZXRob2R8fHQudHlwZXx8di5tZXRob2R8fHYudHlwZSx2LmRhdGFUeXBlcz0odi5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKFApfHxbIiJdLG51bGw9PXYuY3Jvc3NEb21haW4pe3I9RS5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e3IuaHJlZj12LnVybCxyLmhyZWY9ci5ocmVmLHYuY3Jvc3NEb21haW49TXQucHJvdG9jb2wrIi8vIitNdC5ob3N0IT1yLnByb3RvY29sKyIvLyIrci5ob3N0fWNhdGNoKGUpe3YuY3Jvc3NEb21haW49ITB9fWlmKHYuZGF0YSYmdi5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiB2LmRhdGEmJih2LmRhdGE9Uy5wYXJhbSh2LmRhdGEsdi50cmFkaXRpb25hbCkpLFd0KE90LHYsdCxUKSxoKXJldHVybiBUO2ZvcihpIGluKGc9Uy5ldmVudCYmdi5nbG9iYWwpJiYwPT1TLmFjdGl2ZSsrJiZTLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLHYudHlwZT12LnR5cGUudG9VcHBlckNhc2UoKSx2Lmhhc0NvbnRlbnQ9IUx0LnRlc3Qodi50eXBlKSxmPXYudXJsLnJlcGxhY2UoanQsIiIpLHYuaGFzQ29udGVudD92LmRhdGEmJnYucHJvY2Vzc0RhdGEmJjA9PT0odi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYodi5kYXRhPXYuZGF0YS5yZXBsYWNlKE50LCIrIikpOihvPXYudXJsLnNsaWNlKGYubGVuZ3RoKSx2LmRhdGEmJih2LnByb2Nlc3NEYXRhfHwic3RyaW5nIj09dHlwZW9mIHYuZGF0YSkmJihmKz0oVHQudGVzdChmKT8iJiI6Ij8iKSt2LmRhdGEsZGVsZXRlIHYuZGF0YSksITE9PT12LmNhY2hlJiYoZj1mLnJlcGxhY2UoRHQsIiQxIiksbz0oVHQudGVzdChmKT8iJiI6Ij8iKSsiXz0iK3d0Lmd1aWQrKytvKSx2LnVybD1mK28pLHYuaWZNb2RpZmllZCYmKFMubGFzdE1vZGlmaWVkW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixTLmxhc3RNb2RpZmllZFtmXSksUy5ldGFnW2ZdJiZULnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLFMuZXRhZ1tmXSkpLCh2LmRhdGEmJnYuaGFzQ29udGVudCYmITEhPT12LmNvbnRlbnRUeXBlfHx0LmNvbnRlbnRUeXBlKSYmVC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLHYuY29udGVudFR5cGUpLFQuc2V0UmVxdWVzdEhlYWRlcigiQWNjZXB0Iix2LmRhdGFUeXBlc1swXSYmdi5hY2NlcHRzW3YuZGF0YVR5cGVzWzBdXT92LmFjY2VwdHNbdi5kYXRhVHlwZXNbMF1dKygiKiIhPT12LmRhdGFUeXBlc1swXT8iLCAiK1J0KyI7IHE9MC4wMSI6IiIpOnYuYWNjZXB0c1siKiJdKSx2LmhlYWRlcnMpVC5zZXRSZXF1ZXN0SGVhZGVyKGksdi5oZWFkZXJzW2ldKTtpZih2LmJlZm9yZVNlbmQmJighMT09PXYuYmVmb3JlU2VuZC5jYWxsKHksVCx2KXx8aCkpcmV0dXJuIFQuYWJvcnQoKTtpZih1PSJhYm9ydCIsYi5hZGQodi5jb21wbGV0ZSksVC5kb25lKHYuc3VjY2VzcyksVC5mYWlsKHYuZXJyb3IpLGM9V3QoUHQsdix0LFQpKXtpZihULnJlYWR5U3RhdGU9MSxnJiZtLnRyaWdnZXIoImFqYXhTZW5kIixbVCx2XSksaClyZXR1cm4gVDt2LmFzeW5jJiYwPHYudGltZW91dCYmKGQ9Qy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VC5hYm9ydCgidGltZW91dCIpfSx2LnRpbWVvdXQpKTt0cnl7aD0hMSxjLnNlbmQoYSxsKX1jYXRjaChlKXtpZihoKXRocm93IGU7bCgtMSxlKX19ZWxzZSBsKC0xLCJObyBUcmFuc3BvcnQiKTtmdW5jdGlvbiBsKGUsdCxuLHIpe3ZhciBpLG8sYSxzLHUsbD10O2h8fChoPSEwLGQmJkMuY2xlYXJUaW1lb3V0KGQpLGM9dm9pZCAwLHA9cnx8IiIsVC5yZWFkeVN0YXRlPTA8ZT80OjAsaT0yMDA8PWUmJmU8MzAwfHwzMDQ9PT1lLG4mJihzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzPWUuY29udGVudHMsdT1lLmRhdGFUeXBlczt3aGlsZSgiKiI9PT11WzBdKXUuc2hpZnQoKSx2b2lkIDA9PT1yJiYocj1lLm1pbWVUeXBlfHx0LmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYocilmb3IoaSBpbiBzKWlmKHNbaV0mJnNbaV0udGVzdChyKSl7dS51bnNoaWZ0KGkpO2JyZWFrfWlmKHVbMF1pbiBuKW89dVswXTtlbHNle2ZvcihpIGluIG4pe2lmKCF1WzBdfHxlLmNvbnZlcnRlcnNbaSsiICIrdVswXV0pe289aTticmVha31hfHwoYT1pKX1vPW98fGF9aWYobylyZXR1cm4gbyE9PXVbMF0mJnUudW5zaGlmdChvKSxuW29dfSh2LFQsbikpLCFpJiYtMTxTLmluQXJyYXkoInNjcmlwdCIsdi5kYXRhVHlwZXMpJiZTLmluQXJyYXkoImpzb24iLHYuZGF0YVR5cGVzKTwwJiYodi5jb252ZXJ0ZXJzWyJ0ZXh0IHNjcmlwdCJdPWZ1bmN0aW9uKCl7fSkscz1mdW5jdGlvbihlLHQsbixyKXt2YXIgaSxvLGEscyx1LGw9e30sYz1lLmRhdGFUeXBlcy5zbGljZSgpO2lmKGNbMV0pZm9yKGEgaW4gZS5jb252ZXJ0ZXJzKWxbYS50b0xvd2VyQ2FzZSgpXT1lLmNvbnZlcnRlcnNbYV07bz1jLnNoaWZ0KCk7d2hpbGUobylpZihlLnJlc3BvbnNlRmllbGRzW29dJiYobltlLnJlc3BvbnNlRmllbGRzW29dXT10KSwhdSYmciYmZS5kYXRhRmlsdGVyJiYodD1lLmRhdGFGaWx0ZXIodCxlLmRhdGFUeXBlKSksdT1vLG89Yy5zaGlmdCgpKWlmKCIqIj09PW8pbz11O2Vsc2UgaWYoIioiIT09dSYmdSE9PW8pe2lmKCEoYT1sW3UrIiAiK29dfHxsWyIqICIrb10pKWZvcihpIGluIGwpaWYoKHM9aS5zcGxpdCgiICIpKVsxXT09PW8mJihhPWxbdSsiICIrc1swXV18fGxbIiogIitzWzBdXSkpeyEwPT09YT9hPWxbaV06ITAhPT1sW2ldJiYobz1zWzBdLGMudW5zaGlmdChzWzFdKSk7YnJlYWt9aWYoITAhPT1hKWlmKGEmJmVbInRocm93cyJdKXQ9YSh0KTtlbHNlIHRyeXt0PWEodCl9Y2F0Y2goZSl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJvciIsZXJyb3I6YT9lOiJObyBjb252ZXJzaW9uIGZyb20gIit1KyIgdG8gIitvfX19cmV0dXJue3N0YXRlOiJzdWNjZXNzIixkYXRhOnR9fSh2LHMsVCxpKSxpPyh2LmlmTW9kaWZpZWQmJigodT1ULmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIikpJiYoUy5sYXN0TW9kaWZpZWRbZl09dSksKHU9VC5nZXRSZXNwb25zZUhlYWRlcigiZXRhZyIpKSYmKFMuZXRhZ1tmXT11KSksMjA0PT09ZXx8IkhFQUQiPT09di50eXBlP2w9Im5vY29udGVudCI6MzA0PT09ZT9sPSJub3Rtb2RpZmllZCI6KGw9cy5zdGF0ZSxvPXMuZGF0YSxpPSEoYT1zLmVycm9yKSkpOihhPWwsIWUmJmx8fChsPSJlcnJvciIsZTwwJiYoZT0wKSkpLFQuc3RhdHVzPWUsVC5zdGF0dXNUZXh0PSh0fHxsKSsiIixpP3gucmVzb2x2ZVdpdGgoeSxbbyxsLFRdKTp4LnJlamVjdFdpdGgoeSxbVCxsLGFdKSxULnN0YXR1c0NvZGUodyksdz12b2lkIDAsZyYmbS50cmlnZ2VyKGk/ImFqYXhTdWNjZXNzIjoiYWpheEVycm9yIixbVCx2LGk/bzphXSksYi5maXJlV2l0aCh5LFtULGxdKSxnJiYobS50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFtULHZdKSwtLVMuYWN0aXZlfHxTLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpKX1yZXR1cm4gVH0sZ2V0SlNPTjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIFMuZ2V0KGUsdCxuLCJqc29uIil9LGdldFNjcmlwdDpmdW5jdGlvbihlLHQpe3JldHVybiBTLmdldChlLHZvaWQgMCx0LCJzY3JpcHQiKX19KSxTLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oZSxpKXtTW2ldPWZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBtKHQpJiYocj1yfHxuLG49dCx0PXZvaWQgMCksUy5hamF4KFMuZXh0ZW5kKHt1cmw6ZSx0eXBlOmksZGF0YVR5cGU6cixkYXRhOnQsc3VjY2VzczpufSxTLmlzUGxhaW5PYmplY3QoZSkmJmUpKX19KSxTLmFqYXhQcmVmaWx0ZXIoZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZS5oZWFkZXJzKSJjb250ZW50LXR5cGUiPT09dC50b0xvd2VyQ2FzZSgpJiYoZS5jb250ZW50VHlwZT1lLmhlYWRlcnNbdF18fCIiKX0pLFMuX2V2YWxVcmw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBTLmFqYXgoe3VybDplLHR5cGU6IkdFVCIsZGF0YVR5cGU6InNjcmlwdCIsY2FjaGU6ITAsYXN5bmM6ITEsZ2xvYmFsOiExLGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oKXt9fSxkYXRhRmlsdGVyOmZ1bmN0aW9uKGUpe1MuZ2xvYmFsRXZhbChlLHQsbil9fSl9LFMuZm4uZXh0ZW5kKHt3cmFwQWxsOmZ1bmN0aW9uKGUpe3ZhciB0O3JldHVybiB0aGlzWzBdJiYobShlKSYmKGU9ZS5jYWxsKHRoaXNbMF0pKSx0PVMoZSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJnQuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLHQubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt3aGlsZShlLmZpcnN0RWxlbWVudENoaWxkKWU9ZS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gZX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKG4pe3JldHVybiBtKG4pP3RoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBJbm5lcihuLmNhbGwodGhpcyxlKSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1TKHRoaXMpLHQ9ZS5jb250ZW50cygpO3QubGVuZ3RoP3Qud3JhcEFsbChuKTplLmFwcGVuZChuKX0pfSx3cmFwOmZ1bmN0aW9uKHQpe3ZhciBuPW0odCk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXtTKHRoaXMpLndyYXBBbGwobj90LmNhbGwodGhpcyxlKTp0KX0pfSx1bndyYXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucGFyZW50KGUpLm5vdCgiYm9keSIpLmVhY2goZnVuY3Rpb24oKXtTKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KSx0aGlzfX0pLFMuZXhwci5wc2V1ZG9zLmhpZGRlbj1mdW5jdGlvbihlKXtyZXR1cm4hUy5leHByLnBzZXVkb3MudmlzaWJsZShlKX0sUy5leHByLnBzZXVkb3MudmlzaWJsZT1mdW5jdGlvbihlKXtyZXR1cm4hIShlLm9mZnNldFdpZHRofHxlLm9mZnNldEhlaWdodHx8ZS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCl9LFMuYWpheFNldHRpbmdzLnhocj1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IEMuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goZSl7fX07dmFyIEJ0PXswOjIwMCwxMjIzOjIwNH0sJHQ9Uy5hamF4U2V0dGluZ3MueGhyKCk7eS5jb3JzPSEhJHQmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gJHQseS5hamF4PSR0PSEhJHQsUy5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGkpe3ZhciBvLGE7aWYoeS5jb3JzfHwkdCYmIWkuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixyPWkueGhyKCk7aWYoci5vcGVuKGkudHlwZSxpLnVybCxpLmFzeW5jLGkudXNlcm5hbWUsaS5wYXNzd29yZCksaS54aHJGaWVsZHMpZm9yKG4gaW4gaS54aHJGaWVsZHMpcltuXT1pLnhockZpZWxkc1tuXTtmb3IobiBpbiBpLm1pbWVUeXBlJiZyLm92ZXJyaWRlTWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZShpLm1pbWVUeXBlKSxpLmNyb3NzRG9tYWlufHxlWyJYLVJlcXVlc3RlZC1XaXRoIl18fChlWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IiksZSlyLnNldFJlcXVlc3RIZWFkZXIobixlW25dKTtvPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe28mJihvPWE9ci5vbmxvYWQ9ci5vbmVycm9yPXIub25hYm9ydD1yLm9udGltZW91dD1yLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT1lP3IuYWJvcnQoKToiZXJyb3IiPT09ZT8ibnVtYmVyIiE9dHlwZW9mIHIuc3RhdHVzP3QoMCwiZXJyb3IiKTp0KHIuc3RhdHVzLHIuc3RhdHVzVGV4dCk6dChCdFtyLnN0YXR1c118fHIuc3RhdHVzLHIuc3RhdHVzVGV4dCwidGV4dCIhPT0oci5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Ygci5yZXNwb25zZVRleHQ/e2JpbmFyeTpyLnJlc3BvbnNlfTp7dGV4dDpyLnJlc3BvbnNlVGV4dH0sci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0sci5vbmxvYWQ9bygpLGE9ci5vbmVycm9yPXIub250aW1lb3V0PW8oImVycm9yIiksdm9pZCAwIT09ci5vbmFib3J0P3Iub25hYm9ydD1hOnIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PXIucmVhZHlTdGF0ZSYmQy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7byYmYSgpfSl9LG89bygiYWJvcnQiKTt0cnl7ci5zZW5kKGkuaGFzQ29udGVudCYmaS5kYXRhfHxudWxsKX1jYXRjaChlKXtpZihvKXRocm93IGV9fSxhYm9ydDpmdW5jdGlvbigpe28mJm8oKX19fSksUy5hamF4UHJlZmlsdGVyKGZ1bmN0aW9uKGUpe2UuY3Jvc3NEb21haW4mJihlLmNvbnRlbnRzLnNjcmlwdD0hMSl9KSxTLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6L1xiKD86amF2YXxlY21hKXNjcmlwdFxiL30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihlKXtyZXR1cm4gUy5nbG9iYWxFdmFsKGUpLGV9fX0pLFMuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihlKXt2b2lkIDA9PT1lLmNhY2hlJiYoZS5jYWNoZT0hMSksZS5jcm9zc0RvbWFpbiYmKGUudHlwZT0iR0VUIil9KSxTLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24obil7dmFyIHIsaTtpZihuLmNyb3NzRG9tYWlufHxuLnNjcmlwdEF0dHJzKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsdCl7cj1TKCI8c2NyaXB0PiIpLmF0dHIobi5zY3JpcHRBdHRyc3x8e30pLnByb3Aoe2NoYXJzZXQ6bi5zY3JpcHRDaGFyc2V0LHNyYzpuLnVybH0pLm9uKCJsb2FkIGVycm9yIixpPWZ1bmN0aW9uKGUpe3IucmVtb3ZlKCksaT1udWxsLGUmJnQoImVycm9yIj09PWUudHlwZT80MDQ6MjAwLGUudHlwZSl9KSxFLmhlYWQuYXBwZW5kQ2hpbGQoclswXSl9LGFib3J0OmZ1bmN0aW9uKCl7aSYmaSgpfX19KTt2YXIgX3QsenQ9W10sVXQ9Lyg9KVw/KD89JnwkKXxcP1w/LztTLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGU9enQucG9wKCl8fFMuZXhwYW5kbysiXyIrd3QuZ3VpZCsrO3JldHVybiB0aGlzW2VdPSEwLGV9fSksUy5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9ITEhPT1lLmpzb25wJiYoVXQudGVzdChlLnVybCk/InVybCI6InN0cmluZyI9PXR5cGVvZiBlLmRhdGEmJjA9PT0oZS5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZVdC50ZXN0KGUuZGF0YSkmJiJkYXRhIik7aWYoYXx8Impzb25wIj09PWUuZGF0YVR5cGVzWzBdKXJldHVybiByPWUuanNvbnBDYWxsYmFjaz1tKGUuanNvbnBDYWxsYmFjayk/ZS5qc29ucENhbGxiYWNrKCk6ZS5qc29ucENhbGxiYWNrLGE/ZVthXT1lW2FdLnJlcGxhY2UoVXQsIiQxIityKTohMSE9PWUuanNvbnAmJihlLnVybCs9KFR0LnRlc3QoZS51cmwpPyImIjoiPyIpK2UuanNvbnArIj0iK3IpLGUuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBvfHxTLmVycm9yKHIrIiB3YXMgbm90IGNhbGxlZCIpLG9bMF19LGUuZGF0YVR5cGVzWzBdPSJqc29uIixpPUNbcl0sQ1tyXT1mdW5jdGlvbigpe289YXJndW1lbnRzfSxuLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWk/UyhDKS5yZW1vdmVQcm9wKHIpOkNbcl09aSxlW3JdJiYoZS5qc29ucENhbGxiYWNrPXQuanNvbnBDYWxsYmFjayx6dC5wdXNoKHIpKSxvJiZtKGkpJiZpKG9bMF0pLG89aT12b2lkIDB9KSwic2NyaXB0In0pLHkuY3JlYXRlSFRNTERvY3VtZW50PSgoX3Q9RS5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLmJvZHkpLmlubmVySFRNTD0iPGZvcm0+PC9mb3JtPjxmb3JtPjwvZm9ybT4iLDI9PT1fdC5jaGlsZE5vZGVzLmxlbmd0aCksUy5wYXJzZUhUTUw9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiJzdHJpbmciIT10eXBlb2YgZT9bXTooImJvb2xlYW4iPT10eXBlb2YgdCYmKG49dCx0PSExKSx0fHwoeS5jcmVhdGVIVE1MRG9jdW1lbnQ/KChyPSh0PUUuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKSkuY3JlYXRlRWxlbWVudCgiYmFzZSIpKS5ocmVmPUUubG9jYXRpb24uaHJlZix0LmhlYWQuYXBwZW5kQ2hpbGQocikpOnQ9RSksbz0hbiYmW10sKGk9Ti5leGVjKGUpKT9bdC5jcmVhdGVFbGVtZW50KGlbMV0pXTooaT14ZShbZV0sdCxvKSxvJiZvLmxlbmd0aCYmUyhvKS5yZW1vdmUoKSxTLm1lcmdlKFtdLGkuY2hpbGROb2RlcykpKTt2YXIgcixpLG99LFMuZm4ubG9hZD1mdW5jdGlvbihlLHQsbil7dmFyIHIsaSxvLGE9dGhpcyxzPWUuaW5kZXhPZigiICIpO3JldHVybi0xPHMmJihyPWh0KGUuc2xpY2UocykpLGU9ZS5zbGljZSgwLHMpKSxtKHQpPyhuPXQsdD12b2lkIDApOnQmJiJvYmplY3QiPT10eXBlb2YgdCYmKGk9IlBPU1QiKSwwPGEubGVuZ3RoJiZTLmFqYXgoe3VybDplLHR5cGU6aXx8IkdFVCIsZGF0YVR5cGU6Imh0bWwiLGRhdGE6dH0pLmRvbmUoZnVuY3Rpb24oZSl7bz1hcmd1bWVudHMsYS5odG1sKHI/UygiPGRpdj4iKS5hcHBlbmQoUy5wYXJzZUhUTUwoZSkpLmZpbmQocik6ZSl9KS5hbHdheXMobiYmZnVuY3Rpb24oZSx0KXthLmVhY2goZnVuY3Rpb24oKXtuLmFwcGx5KHRoaXMsb3x8W2UucmVzcG9uc2VUZXh0LHQsZV0pfSl9KSx0aGlzfSxTLmV4cHIucHNldWRvcy5hbmltYXRlZD1mdW5jdGlvbih0KXtyZXR1cm4gUy5ncmVwKFMudGltZXJzLGZ1bmN0aW9uKGUpe3JldHVybiB0PT09ZS5lbGVtfSkubGVuZ3RofSxTLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLG8sYSxzLHUsbD1TLmNzcyhlLCJwb3NpdGlvbiIpLGM9UyhlKSxmPXt9OyJzdGF0aWMiPT09bCYmKGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIikscz1jLm9mZnNldCgpLG89Uy5jc3MoZSwidG9wIiksdT1TLmNzcyhlLCJsZWZ0IiksKCJhYnNvbHV0ZSI9PT1sfHwiZml4ZWQiPT09bCkmJi0xPChvK3UpLmluZGV4T2YoImF1dG8iKT8oYT0ocj1jLnBvc2l0aW9uKCkpLnRvcCxpPXIubGVmdCk6KGE9cGFyc2VGbG9hdChvKXx8MCxpPXBhcnNlRmxvYXQodSl8fDApLG0odCkmJih0PXQuY2FsbChlLG4sUy5leHRlbmQoe30scykpKSxudWxsIT10LnRvcCYmKGYudG9wPXQudG9wLXMudG9wK2EpLG51bGwhPXQubGVmdCYmKGYubGVmdD10LmxlZnQtcy5sZWZ0K2kpLCJ1c2luZyJpbiB0P3QudXNpbmcuY2FsbChlLGYpOmMuY3NzKGYpfX0sUy5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbih0KXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT10P3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGUpe1Mub2Zmc2V0LnNldE9mZnNldCh0aGlzLHQsZSl9KTt2YXIgZSxuLHI9dGhpc1swXTtyZXR1cm4gcj9yLmdldENsaWVudFJlY3RzKCkubGVuZ3RoPyhlPXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbj1yLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcse3RvcDplLnRvcCtuLnBhZ2VZT2Zmc2V0LGxlZnQ6ZS5sZWZ0K24ucGFnZVhPZmZzZXR9KTp7dG9wOjAsbGVmdDowfTp2b2lkIDB9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGUsdCxuLHI9dGhpc1swXSxpPXt0b3A6MCxsZWZ0OjB9O2lmKCJmaXhlZCI9PT1TLmNzcyhyLCJwb3NpdGlvbiIpKXQ9ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlbHNle3Q9dGhpcy5vZmZzZXQoKSxuPXIub3duZXJEb2N1bWVudCxlPXIub2Zmc2V0UGFyZW50fHxuLmRvY3VtZW50RWxlbWVudDt3aGlsZShlJiYoZT09PW4uYm9keXx8ZT09PW4uZG9jdW1lbnRFbGVtZW50KSYmInN0YXRpYyI9PT1TLmNzcyhlLCJwb3NpdGlvbiIpKWU9ZS5wYXJlbnROb2RlO2UmJmUhPT1yJiYxPT09ZS5ub2RlVHlwZSYmKChpPVMoZSkub2Zmc2V0KCkpLnRvcCs9Uy5jc3MoZSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxpLmxlZnQrPVMuY3NzKGUsImJvcmRlckxlZnRXaWR0aCIsITApKX1yZXR1cm57dG9wOnQudG9wLWkudG9wLVMuY3NzKHIsIm1hcmdpblRvcCIsITApLGxlZnQ6dC5sZWZ0LWkubGVmdC1TLmNzcyhyLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vZmZzZXRQYXJlbnQ7d2hpbGUoZSYmInN0YXRpYyI9PT1TLmNzcyhlLCJwb3NpdGlvbiIpKWU9ZS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGV8fHJlfSl9fSksUy5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKHQsaSl7dmFyIG89InBhZ2VZT2Zmc2V0Ij09PWk7Uy5mblt0XT1mdW5jdGlvbihlKXtyZXR1cm4gJCh0aGlzLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtpZih4KGUpP3I9ZTo5PT09ZS5ub2RlVHlwZSYmKHI9ZS5kZWZhdWx0Vmlldyksdm9pZCAwPT09bilyZXR1cm4gcj9yW2ldOmVbdF07cj9yLnNjcm9sbFRvKG8/ci5wYWdlWE9mZnNldDpuLG8/bjpyLnBhZ2VZT2Zmc2V0KTplW3RdPW59LHQsZSxhcmd1bWVudHMubGVuZ3RoKX19KSxTLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oZSxuKXtTLmNzc0hvb2tzW25dPUZlKHkucGl4ZWxQb3NpdGlvbixmdW5jdGlvbihlLHQpe2lmKHQpcmV0dXJuIHQ9V2UoZSxuKSxQZS50ZXN0KHQpP1MoZSkucG9zaXRpb24oKVtuXSsicHgiOnR9KX0pLFMuZWFjaCh7SGVpZ2h0OiJoZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEscyl7Uy5lYWNoKHtwYWRkaW5nOiJpbm5lciIrYSxjb250ZW50OnMsIiI6Im91dGVyIithfSxmdW5jdGlvbihyLG8pe1MuZm5bb109ZnVuY3Rpb24oZSx0KXt2YXIgbj1hcmd1bWVudHMubGVuZ3RoJiYocnx8ImJvb2xlYW4iIT10eXBlb2YgZSksaT1yfHwoITA9PT1lfHwhMD09PXQ/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiAkKHRoaXMsZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiB4KGUpPzA9PT1vLmluZGV4T2YoIm91dGVyIik/ZVsiaW5uZXIiK2FdOmUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK2FdOjk9PT1lLm5vZGVUeXBlPyhyPWUuZG9jdW1lbnRFbGVtZW50LE1hdGgubWF4KGUuYm9keVsic2Nyb2xsIithXSxyWyJzY3JvbGwiK2FdLGUuYm9keVsib2Zmc2V0IithXSxyWyJvZmZzZXQiK2FdLHJbImNsaWVudCIrYV0pKTp2b2lkIDA9PT1uP1MuY3NzKGUsdCxpKTpTLnN0eWxlKGUsdCxuLGkpfSxzLG4/ZTp2b2lkIDAsbil9fSl9KSxTLmVhY2goWyJhamF4U3RhcnQiLCJhamF4U3RvcCIsImFqYXhDb21wbGV0ZSIsImFqYXhFcnJvciIsImFqYXhTdWNjZXNzIiwiYWpheFNlbmQiXSxmdW5jdGlvbihlLHQpe1MuZm5bdF09ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub24odCxlKX19KSxTLmZuLmV4dGVuZCh7YmluZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHRoaXMub24oZSxudWxsLHQsbil9LHVuYmluZDpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9mZihlLG51bGwsdCl9LGRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiB0aGlzLm9uKHQsZSxuLHIpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoZSwiKioiKTp0aGlzLm9mZih0LGV8fCIqKiIsbil9LGhvdmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubW91c2VlbnRlcihlKS5tb3VzZWxlYXZlKHR8fGUpfX0pLFMuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihlLG4pe1MuZm5bbl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMDxhcmd1bWVudHMubGVuZ3RoP3RoaXMub24obixudWxsLGUsdCk6dGhpcy50cmlnZ2VyKG4pfX0pO3ZhciBYdD0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2c7Uy5wcm94eT1mdW5jdGlvbihlLHQpe3ZhciBuLHIsaTtpZigic3RyaW5nIj09dHlwZW9mIHQmJihuPWVbdF0sdD1lLGU9biksbShlKSlyZXR1cm4gcj1zLmNhbGwoYXJndW1lbnRzLDIpLChpPWZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodHx8dGhpcyxyLmNvbmNhdChzLmNhbGwoYXJndW1lbnRzKSkpfSkuZ3VpZD1lLmd1aWQ9ZS5ndWlkfHxTLmd1aWQrKyxpfSxTLmhvbGRSZWFkeT1mdW5jdGlvbihlKXtlP1MucmVhZHlXYWl0Kys6Uy5yZWFkeSghMCl9LFMuaXNBcnJheT1BcnJheS5pc0FycmF5LFMucGFyc2VKU09OPUpTT04ucGFyc2UsUy5ub2RlTmFtZT1BLFMuaXNGdW5jdGlvbj1tLFMuaXNXaW5kb3c9eCxTLmNhbWVsQ2FzZT1YLFMudHlwZT13LFMubm93PURhdGUubm93LFMuaXNOdW1lcmljPWZ1bmN0aW9uKGUpe3ZhciB0PVMudHlwZShlKTtyZXR1cm4oIm51bWJlciI9PT10fHwic3RyaW5nIj09PXQpJiYhaXNOYU4oZS1wYXJzZUZsb2F0KGUpKX0sUy50cmltPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOihlKyIiKS5yZXBsYWNlKFh0LCIiKX0sImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIFN9KTt2YXIgVnQ9Qy5qUXVlcnksR3Q9Qy4kO3JldHVybiBTLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIEMuJD09PVMmJihDLiQ9R3QpLGUmJkMualF1ZXJ5PT09UyYmKEMualF1ZXJ5PVZ0KSxTfSwidW5kZWZpbmVkIj09dHlwZW9mIGUmJihDLmpRdWVyeT1DLiQ9UyksU30pOwo="></script>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<link href="data:text/css,%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Sans%20Pro%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20300%3B%0Asrc%3A%20url%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAARAQAABAAQR0RFRgNEA3IAAG%2BkAAAAQEdQT1PXveeXAABv5AAAGWRHU1VC8WfWVwAAiUgAAADgT1MvMlpQkwsAAGZkAAAAYGNtYXDzMPm1AABmxAAAAeZjdnQgDXMAuAAAamwAAAAoZnBnbQZZnDcAAGisAAABc2dhc3D%2F%2FwADAABvnAAAAAhnbHlm4G%2FpBAAAARwAAF8kaGVhZP4Fs%2FYAAGJEAAAANmhoZWEHlAOiAABmQAAAACRobXR4l6Yq6AAAYnwAAAPEbG9jYV5idvoAAGBgAAAB5G1heHADCwJJAABgQAAAACBuYW1lIvc8kwAAapQAAAHKcG9zdGxQSG8AAGxgAAADOXByZXAtaIB5AABqIAAAAEsABQBeAAACGgKUAAMABgAJAA8AFQBnALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAUAAgAAERI5ugAGAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugANAAIAABESObgAABC5ABIAAfQwMRMhESETAxEhEQMTLwEjDwETPwEhHwFeAbz%2BRMCTAWCRfF07BD1foDVW%2FuRXNgKU%2FWwBVAEE%2FfwCBP78%2FtOkaWmkAU1cm5tcAAIACAAAAgYCkwAJABEAVAC4AABFWLgADi8buQAOABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4ABEvG7kAEQAEPlm6AAUADAAOERI5ugALAAwADhESObgACy%2B5AAkAAfQwMQEnLgEnIw4BDwEXIQcjEzMTIwF8KhQkEQQRJBQq9%2F77Ti7oLugwAQl7O2w9PWw7eyfiApP9bQAAAAMAYQAAAhUCkwARABoAIwBbALgAAEVYuAAALxu5AAAAED5ZuAAARVi4ABEvG7kAEQAEPlm6ACEAAAARERI5uAAhL7oACAAhABIREjm4AAAQuQAZAAH0uAAhELkAGgAB9LgAERC5ACMAAfQwMRMzMhYVFAYHFR4BFRQOAisBEzI2NTQmKwEVEzI2NTQmKwERYbJkdjs6SVQjQFo4v6BmWF5bd4VjcW5mhQKTTVM0TQ8EC09FMEgwGAFxQUJAOfz%2BtUpQR0X%2B2gAAAQA3%2F%2FQCDwKfACEAOQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAdLxu5AB0ABD5ZuAAFELkADAAB9LgAHRC5ABYAAfQwMRM0PgIzMhYXBy4BIyIOAhUUHgIzMjY3Fw4BIyIuAjcpSmg%2FOVgaHBpILTZXPSAgPFU1M08kHCZeQD1mSSgBS05%2BWS8wHx4eJSpNbkVFb04rKCkdLDIwWX8AAAIAYQAAAiUCkwAMABkANQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuQANAAH0uAAAELkAFwAB9DAxEzMyHgIVFA4CKwE3Mj4CNTQuAisBEWGZTHFKJCRKcEyalENhPh4ePmFDZgKTLlZ4S0t7Vy8nK05rQUBqTCr9uwAAAAABAGEAAAHUApMACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQADAAH0ugAHAAAACxESObgABy%2B5AAUAAfS4AAsQuQAIAAH0MDETIRUhFSEVIREhFSFhAWn%2BxQEI%2FvgBRf6NApMo%2BSj%2B3igAAQBhAAAByAKTAAkAQwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAJLxu5AAkABD5ZuAAAELkAAwAB9LoABwAAAAkREjm4AAcvuQAFAAH0MDETIRUhESEVIREjYQFn%2FscBCf73LgKTKP76KP7DAAAAAAEAN%2F%2F0AhUCnwAnAE0AuAAARVi4AAUvG7kABQAQPlm4AABFWLgAIy8buQAjAAQ%2BWbgABRC5AA4AAfS4ACMQuQAYAAH0ugAfAAUAIxESObgAHy%2B5AB0AAfQwMRM0PgIzMh4CFwcuASMiDgIVFB4CMzI2NzUjNTMRDgEjIi4CNypNa0IhNiwjDRsaSDY5Wj8iID1ZOC1PGJ7KH2NCP2hKKQFLTn5ZLw4XHA4eHCcqTW5FRW9OKxoYzSf%2B%2ByEqMFl%2FAAEAYQAAAh4CkwALAEkAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACy8buQALAAQ%2BWboACQAAAAsREjm4AAkvuQADAAH0uAAAELgABNC4AAsQuAAH0DAxEzMRIREzESMRIREjYS4BYS4u%2Fp8uApP%2B3wEh%2FW0BSv62AAEAYQAAAI8CkwADACUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAAy8buQADAAQ%2BWTAxEzMRI2EuLgKT%2FW0AAAABACn%2F9AFvApMAEQArALgAAEVYuAAHLxu5AAcAED5ZuAAARVi4AA4vG7kADgAEPlm5AAMAAfQwMTceATMyNjURMxEUDgIjIiYnTBg9Kjw6LhInPi03UhlsKiRJUQHb%2FiAoRTQeMi8AAAEAYQAAAiQCkwAMAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABC8buQAEABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIAAAAMERI5ugAJAAQACBESOTAxEzMRMwEzBxMjAwcVI2EuAgE%2FN9LvNdqGLgKT%2FpIBbvT%2BYQF8meMAAAEAYQAAAb8CkwAFACsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABS8buQAFAAQ%2BWbkAAgAB9DAxEzMRIRUhYS4BMP6iApP9lSgAAAABAGEAAAJhApMAGQBvALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAYvG7kABgAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAJLxu5AAkABD5ZugADAAYACRESOboADgAGAAkREjm6ABEAGQAGERI5ugAUAAAAGRESOTAxEzMTFzM3EzMRIxE0NjcjBwMjAycjHgEVESNhQYo0BDKKQS0EAgQ0jSmONAQCBCsCk%2F59kpIBg%2F1tAbEpXyqR%2FnYBipEqXyn%2BTwAAAAEAYQAAAhsCkwATAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACC8buQAIABA%2BWbgAAEVYuAATLxu5ABMABD5ZuAAARVi4AAsvG7kACwAEPlm6AAQACwAIERI5ugAOAAAAExESOTAxEzMBFzMuATURMxEjAScjHgEVESNhMAEWSgQCBCww%2FupKBAIELAKT%2Fi%2BDMGAwAZT9bQHRgzBbMP5nAAAAAgA3%2F%2FQCVgKfABMAJwA1ALgAAEVYuAAKLxu5AAoAED5ZuAAARVi4AAAvG7kAAAAEPlm5ABQAAfS4AAoQuQAeAAH0MDEFIi4CNTQ%2BAjMyHgIVFA4CJzI%2BAjU0LgIjIg4CFRQeAgFGO2RIKChIZDs8ZEgoKEhkPDJSOyAgO1IyMlM6ICA6UwwxWn9OTn1ZLy9ZfU5Of1oxKitPb0VEbk0qKk1uREVvTysAAgBhAAACAAKTAAwAFwBDALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAwvG7kADAAEPlm6AAoAAAAMERI5uAAKL7kADQAB9LgAABC5ABYAAfQwMRMzMh4CFRQGKwERIxMyNjU0LgIrARFhtDdXPSB8b4YuqWViGTFLMnsCkxMsRjNhX%2F7lAUJIUSo3Ig7%2B1gAAAgA3%2F2UCWAKfABMANABLALgAAEVYuAAkLxu5ACQAED5ZuAAARVi4ABovG7kAGgAEPlm7ADEAAQAXAAQruAAaELkABQAB9LgAJBC5AA8AAfS4ABoQuAAu0DAxExQeAjMyPgI1NC4CIyIOAgEOASMiJicuAzU0PgIzMh4CFRQOAgceATMyNjdnIDpTMjJSOyAgO1IyMlM6IAHxDSsZU28ZNlpBJChIZDs8ZEgoJEFbNxdXPhcfDQFMRXFPLCxPcUVEbk0qKk1u%2FeAEB1I%2BBTVZekpOfVkvL1l9Tkp6WTUFMjQFBAAAAgBhAAACAwKTAAgAGABUALgAAEVYuAAOLxu5AA4AED5ZuAAARVi4AAwvG7kADAAEPlm4AABFWLgACS8buQAJAAQ%2BWbsAAAABAAoABCu4AA4QuQAGAAH0ugAXAAAAChESOTAxATI2NTQmKwERAQMjESMRMzIeAhUUBgcTARJYXV5XgwE%2Fs4wuvTFQOB9bTrYBVUdJSj3%2B6f6rAS%2F%2B0QKTEypCL09aCv7OAAAAAAEALv%2F0AeACnwAzAEkAuAAARVi4ABYvG7kAFgAQPlm4AABFWLgAMC8buQAwAAQ%2BWbkAAwAB9LoACwAWADAREjm4ABYQuQAdAAH0ugAlADAAFhESOTAxNx4BMzI2NTQuAi8BLgM1ND4CMzIWFwcuASMiBhUUHgIfAR4DFRQOAiMiJidMJGQ5TFgTICsYZBYvJxodM0cpPF0eGh1OMkJQFiIoEmQcMiYXHjdOMEhwJ3cpMEk7HyofFwstCRonNSUkOysYLyAfHyVANh0oHRUILAweKDcmJkEvGzcsAAABAB0AAAHvApMABwAzALgAAEVYuAACLxu5AAIAED5ZuAAARVi4AAcvG7kABwAEPlm4AAIQuQAAAAH0uAAF0DAxEyM1IRUjESPv0gHS0i4Caygo%2FZUAAAAAAQBf%2F%2FQCGwKTABkAPAC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAANLxu5AA0AED5ZuAAARVi4ABQvG7kAFAAEPlm5AAcAAfQwMRMzERQeAjMyPgI1ETMRFA4CIyIuAjVfLh0wPyMkQTEeKyY%2BUCsqUD4lApP%2Bb0JXNRYWNVdCAZH%2Bak1mPRkZPWZNAAABAAQAAAHnApMADwBAALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAwvG7kADAAQPlm4AABFWLgADy8buQAPAAQ%2BWboABQAAAA8REjkwMRMzEx4BFzM%2BAzcTMwMjBDF6Ex8UBAoREBEJei%2FYMQKT%2Fn88ZTweNjU2HgGB%2FW0AAQAcAAAC5AKTACEAdgC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAKLxu5AAoAED5ZuAAARVi4ABQvG7kAFAAQPlm4AABFWLgAIS8buQAhAAQ%2BWbgAAEVYuAAXLxu5ABcABD5ZugAFAAAAIRESOboADwAUABcREjm6ABwAIQAKERI5MDETMxMeARczPgE3EzMTHgEXMz4BNxMzAyMDLgEnIw4BBwMjHDBTCxcLBAwZDmcvZw4ZDgQLFQtTLZMzeAkSCAQIFAl2MgKT%2Fnw2azY2azYBhP58Nms2Nms2AYT9bQHEJ0cnJ0cn%2FjwAAAABABEAAAHRApMAGQBbALgAAEVYuAABLxu5AAEAED5ZuAAARVi4AAsvG7kACwAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAPLxu5AA8ABD5ZugAGAAEAGRESOboAEwAPAAsREjkwMRMDMxceARczPgE%2FATMDEyMnLgEnIw4BDwEj17gybA4XEQQOFQ5sL7jGMnMOHRIEEBoOcy8BVQE%2BwhcoGxsoF8L%2BwP6tyhkyHh4yGcoAAAAAAQADAAABvAKTAA8AQAC4AABFWLgAAS8buQABABA%2BWbgAAEVYuAALLxu5AAsAED5ZuAAARVi4AA8vG7kADwAEPlm6AAYAAQAPERI5MDETAzMXHgEXMz4BPwEzAxEjyMUxZBEhFAQTJBBkL8YuAQsBiM4kRiQkRiTO%2Fnj%2B9QAAAAABADIAAAHqApMACQA9ALgAAEVYuAADLxu5AAMAED5ZuAAARVi4AAgvG7kACAAEPlm5AAYAAfS4AADQuAADELkAAQAB9LgABdAwMTcBITUhFQEhFSEyAXv%2BpgGU%2FoQBf%2F5IGwJQKBv9sCgAAAACAEH%2F9AGjAewAIQAtAHYAuAAARVi4ABEvG7kAEQAIPlm4AABFWLgAHS8buQAdAAQ%2BWbgAAEVYuAAYLxu5ABgABD5ZugADABEAHRESObgAAy%2B4ABEQuQAIAAH0ugAZABgAERESObgAHRC5ACUAAfS4ABkQuQAoAAH0uAADELkAKQAB9DAxNzQ2NzYuAiMiBgcnPgMzMh4CFREjJyMOASMiLgI3FBYzMjY3NQ4DQZagAQkZLSMxUBgUDSUtNh0rOiQPJQUCJVUwHTInFi48KSpMLUplPht4T1QSGzcrGyYSIQkWEg0dMkMn%2Fs0%2BHS0QIDIkNCwoJqMJGiQuAAACAFz%2F9AHsAs8AFAAlAIMAuAAARVi4AAAvG7kAAAASPlm4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAOLxu5AA4ABD5ZuAAARVi4ABQvG7kAFAAEPlm6AAMABgAOERI5ugARAA4ABhESObgAERC5ABUAAfS4AA4QuQAYAAH0uAAGELkAIgAB9LgAAxC5ACUAAfQwMRMzFQc%2BATMyFhUUDgIjIiYnIwcjNx4BMzI%2BAjU0LgIjIgYHXCwCJVQtYGAiO00qI0siAgUlLChKHCQ%2BLBkRJDopJE4rAs%2FQXh8shXA9YEMjHxotWSIcIDpRMSxMNx8pJgAAAQA0%2F%2FQBpwHsACEAOQC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAdLxu5AB0ABD5ZuAAFELkADAAB9LgAHRC5ABYAAfQwMTc0PgIzMhYXBy4BIyIOAhUUHgIzMjY3Fw4BIyIuAjQkPE8sMkMYGhc4IyU%2FLxsZLUEnJkEZFx9MLi9POyHvPF9AIiQXHxYdHzlOMC9OOB8gFx4cJCJAXQAAAAIANP%2F0AcQCzwAUACUAgwC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAKLxu5AAoAEj5ZuAAARVi4ABIvG7kAEgAEPlm4AABFWLgADS8buQANAAQ%2BWboACAASAAUREjm6AA4ABQASERI5uAASELkAGgAB9LgADhC5AB0AAfS4AAgQuQAeAAH0uAAFELkAIQAB9DAxNzQ%2BAjMyFhcnNTMRIycjDgEjIiY3FB4CMzI2NxEuASMiDgI0IjtNKyxBJAIsJgQDHU8wW2wvFSg7JihJJiZDIyQ%2BLRrvOl5CIx8cWMb9MT4dLYF6ME43HykmAR0iHCE5TwACADT%2F9AG9AewAHAAlAFEAuAAARVi4AAUvG7kABQAIPlm4AABFWLgAGC8buQAYAAQ%2BWboACwAFABgREjm4AAsvuAAYELkAEQAB9LgABRC5ACAAAfS4AAsQuQAlAAH0MDE3ND4CMzIWFRwBByEeAzMyNjcXDgEjIi4CJTQmIyIOAgc0IztLKFZiAv6mARovQiknPxsSHUU1LlE8IwFfTEEfOC0dBO87XkEjdGoJEgktTTcfFxQiER4iQV1YXV0aMEUrAAAAAQAhAAABIALbABYAVgC4AABFWLgABy8buQAHAAg%2BWbgAAEVYuAAULxu5ABQAEj5ZuAAARVi4AAsvG7kACwAEPlm4ABQQuQADAAH0uAAHELkACgAB9LgADdC4AAcQuAAQ0DAxAS4BIyIGHQEzFSMRIxEjNTc1NDYzMhcBFA8dDiYlb28sQkI%2BOSMjAqcIBjk0aCb%2BRgG6IgRrSEgQAAAAAAMANP8ZAdwB7AARAEcAWwBtALgAAEVYuAAlLxu5ACUACD5ZuAAARVi4AEUvG7kARQAGPlm5AAMAAfS6ADwAJQBFERI5uAA8L7kACwAB9LgAJRC4ACnQuAApL7kAKgAB9LgAPBC4ADPQuAAzL7kASAAB9LgAJRC5AFIAAfQwMRcUFjMyPgI1NCYrASImJw4BBzQ2NzUuATU0Njc1LgE1ND4CMzIWFzMVIx4BFRQOAiMiJicOARUUFjsBMhYVFA4CIyImEzI%2BAjU0LgIjIg4CFRQeAl5TTShCLhk5NmcIIRMhHiomIRIYJBAXJRouPiMUIAujcBceGi09IxQrERAXJjZnUU0gO1Q0W2q%2BGS0iFBQhLhkaLSIUFCMtXi04FSIrFyghAwUXNB4gPBgECyYcIC0LBBRELCU%2BLRkHBSUUPyYlPi0ZCgoNIBgaJTU5HzstG0gBWxMkMh4eMiITEyIxHx4yJBMAAQBcAAABvwLPABQAWAC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAAEj5ZuAAARVi4ABQvG7kAFAAEPlm6AAMABgAUERI5uAAL0LgABhC5AA8AAfS4AAMQuQASAAH0MDETMx0BPgEzMhYVESMRNCYjIgYHESNcLCZOMktGLDM7K0YsLALP0GomMVpe%2FswBLk1JLS3%2BlgAAAgBLAAAAmwKjAAsADwAtALgAAEVYuAAMLxu5AAwACD5ZuAAARVi4AA4vG7kADgAEPlm6AAYAAAADKzAxEyImNTQ2MzIWFRQGBzMRI3MRFxcRERcXKCwsAlQWERMVFRMRFnT%2BIAAAAAAC%2F9%2F%2FGwCcAqMADwAbADcAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgABS8buQAFAAY%2BWboAFgAQAAMruAAFELkADAAB9DAxEzMRFAYjIiYnNx4BMzI2NRMiJjU0NjMyFhUUBlwtNDgRIgsLCRsOKBgXEBgYEBEYGAHg%2FcdHRQcFJAMHOy4CqhYRExUVExEWAAABAFwAAAHEAs8ADABbALgAAEVYuAAELxu5AAQACD5ZuAAARVi4AAAvG7kAAAASPlm4AABFWLgADC8buQAMAAQ%2BWbgAAEVYuAAILxu5AAgABD5ZugACAAAADBESOboACQAAAAgREjkwMRMzETMTMwcTIwMHFSNcLALtM5y2MZ9sLALP%2Fe4BI77%2B3gEBfoMAAAABAFz%2F9AC3As8ADgArALgAAEVYuAAALxu5AAAAEj5ZuAAARVi4AAwvG7kADAAEPlm5AAUAAfQwMRMzERQWMzoBNxcOASMiNVwsDAkDBwgIBw4LOwLP%2FWsQDwIkAgNMAAABAFwAAALYAewAIACYALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAIC8buQAgAAQ%2BWbgAAEVYuAAYLxu5ABgABD5ZuAAARVi4ABAvG7kAEAAEPlm6AAIAAAAgERI5ugAJAAAAIBESObgABhC4AAzQuQAUAAH0uAAJELkAFgAB9LgABhC5ABwAAfS4AAIQuQAeAAH0MDETMxczPgEzMhYXPgEzMhURIxE0JiMiBxEjETQmIyIHESNcJgQDIE8oOj4NKk8qkC00N0FPLDQ4QU8sAeBKJTE1LS01uP7MAS5NSVr%2BlgEuTUla%2FpYAAAABAFwAAAG%2FAewAFABlALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAFC8buQAUAAQ%2BWbgAAEVYuAALLxu5AAsABD5ZugACAAAAFBESObgABhC5AA8AAfS4AAIQuQASAAH0MDETMxczPgEzMhYVESMRNCYjIgYHESNcJgQDJU4yS0YsMzsrRiwsAeBKJTFaXv7MAS5NSS0t%2FpYAAAAAAgA0%2F%2FQB4wHsABMAJwA1ALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4AA8vG7kADwAEPlm5ABkAAfS4AAUQuQAjAAH0MDE3ND4CMzIeAhUUDgIjIi4CNxQeAjMyPgI1NC4CIyIOAjQjO04rK087IyM7TysrTjsjLhotPiQkPy0aGi0%2FJCQ%2BLRrvPF9AIiJAXzw8XUAiIkBdPC9OOB8fOE4vME45Hx85TgAAAgBc%2FycB7AHsABQAJQCDALgAAEVYuAAJLxu5AAkACD5ZuAAARVi4AAMvG7kAAwAIPlm4AABFWLgAAi8buQACAAY%2BWbgAAEVYuAARLxu5ABEABD5ZugAFAAkAERESOboAFAARAAkREjm4ABQQuQAVAAH0uAARELkAGAAB9LgACRC5ACIAAfS4AAUQuQAlAAH0MDEXFSMRMxczPgEzMhYVFA4CIyImJzUeATMyPgI1NC4CIyIGB4gsJgQDI1MtYGAiO00qIkgmKkgcJD4sGREkOikkTSwqrwK5PBwshXA9YEMjHxwqIhwgOlExLEw3HykmAAAAAAIANP8nAcQB7AAUACUAfwC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAALLxu5AAsACD5ZuAAARVi4AA0vG7kADQAGPlm4AABFWLgAEi8buQASAAQ%2BWboACAAFABIREjm6AA8AEgAFERI5uQAaAAH0uAAPELkAHQAB9LgACBC5AB4AAfS4AAUQuQAhAAH0MDE3ND4CMzIWFzM3MxEjNTcOASMiJjcUHgIzMjY3ES4BIyIOAjQiO00rLEEiAgUlLAIgTzBbbC8VKDsmKEkmJkMjJD4tGu86XkIjHhos%2FUe5XR0sgXowTjcfKSYBHSIcITlPAAEAXAAAAUEB7AASAFIAuAAARVi4AAYvG7kABgAIPlm4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAASLxu5ABIABD5ZugACAAAAEhESObgABhC4AA3cuAACELkAEAAB9DAxEzMXMz4BMzIWFwcuASMiBgcRI1wmBAMYRSsOFgwKDBIOIEccLAHgWS04BAYoBQM3RP65AAABACD%2F9AFyAewAMwBJALgAAEVYuAAVLxu5ABUACD5ZuAAARVi4ADAvG7kAMAAEPlm5AAMAAfS6AAsAMAAVERI5uAAVELkAHAAB9LoAJgAVADAREjkwMTceATMyNjU0LgInLgM1ND4CMzIWFwcuASMiDgIVFB4CFx4DFRQOAiMiJic6H0Y0OTkVIikVGzcsGxQoOSYmSRoYGDYlHCgbDRMgKRUcOC0cFSo8JzZaIFcaIzkmFiIYEggKFh8rHxovIxQcFh8SGQ8YIBAVHRYRCAsWIC8jGzElFicbAAAAAQAc%2F%2FQBLQJrABsARQC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAWLxu5ABYABD5ZuAAGELkACQAB9LgAANC4AAYQuAAD0LgAFhC5AA8AAfQwMRMjNT8BMxUzFSMRFB4CMzI2NxcOASMiLgI1Z0tMBiaLiwcSHxkOIQ0MFSoPIy4cCwG6IgSLiyb%2BxxclGw8JBiQIChUmNiAAAAAAAQBV%2F%2FQBtQHgABQAZQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAJLxu5AAkACD5ZuAAARVi4ABEvG7kAEQAEPlm4AABFWLgADC8buQAMAAQ%2BWbgAERC5AAUAAfS6AA0ACQAMERI5uAANELkACAAB9DAxEzMRFBYzMjY3ETMRIycjDgEjIiY1VSwzOitGKiwlBQIjTjJLRgHg%2FtJNSS8zAWL%2BIFAqMlpeAAAAAAEADAAAAaYB4AANAEAAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAANLxu5AA0ABD5ZugAFAAAADRESOTAxEzMTHgEXMz4BNxMzAyMMMGwLGgsEDBkMbC2yNAHg%2FtMjRiEhRiMBLf4gAAEAGAAAApUB4AAhAHYAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAAULxu5ABQACD5ZuAAARVi4ACEvG7kAIQAEPlm4AABFWLgAFy8buQAXAAQ%2BWboABQAhAAAREjm6AA8AFwAUERI5ugAcAAAAIBESOTAxEzMTHgEXMz4BNxMzEx4BFzM%2BATcTMwMjAy4BJyMOAQcDIxgwVgkQCAQIEglXNVcJEgkECBIIVS2KOlQLDwsECBMLUzUB4P7JIT8gID8hATf%2BySE%2FICA%2FIQE3%2FiABKiNDIyNFI%2F7YAAAAAQAOAAABiQHgABkAWwC4AABFWLgAAS8buQABAAg%2BWbgAAEVYuAALLxu5AAsACD5ZuAAARVi4ABkvG7kAGQAEPlm4AABFWLgADy8buQAPAAQ%2BWboABgALAA8REjm6ABQAAQAZERI5MDE3JzMXHgEXMz4BPwEzBxcjJy4BJyMOAQ8BI7GWMU4MGQ4EDRcNSy6VozFVDhwPBA4bDlIv%2B%2BV6FCcUFCcUeun3gxcsFRUsF4MAAAAAAQAM%2FyUBqAHgABwARgC4AABFWLgACC8buQAIAAg%2BWbgAAEVYuAASLxu5ABIACD5ZuAAARVi4ABkvG7kAGQAGPlm5AAMAAfS6AA0ACAAZERI5MDEXHgEzMjY%2FAQMzEx4BFzM%2BATcTMwMOAyMiJzciCBQLLTwSDcUwdAsbDgQLFwpnLb4KHSczIBsWCqoDBUg3KgHp%2FtIeSCAgSB4BLv3kHjktGwonAAAAAQAbAAABegHgAAkAPQC4AABFWLgAAy8buQADAAg%2BWbgAAEVYuAAILxu5AAgABD5ZuQAGAAH0uAAA0LgAAxC5AAEAAfS4AAXQMDE3ASM1IRUBIRUhGwEc%2FQE2%2FuUBJf6hGAGiJhf%2BXicAAAD%2F%2FwAIAAACBgMvAiYABAAAAAcA4QEHAAD%2F%2FwAIAAACBgMvAiYABAAAAAcA4wEHAAD%2F%2FwAIAAACBgMvAiYABAAAAAcA5QEHAAD%2F%2FwAIAAACBgMoAiYABAAAAAcA5wEHAAD%2F%2FwAIAAACBgMeAiYABAAAAAcA6gEHAAD%2F%2FwAIAAACBgNgAiYABAAAAAcA7AEHAAAAAgAVAAAC%2BgKTAAYAFgB8ALgAAEVYuAAOLxu5AA4AED5ZuAAARVi4AA0vG7kADQAEPlm4AABFWLgACS8buQAJAAQ%2BWboAAgAOAA0REjm6AAoADgANERI5uAAKL7kABgAB9LgACRC5AAcAAfS4AA4QuQAQAAH0ugAVAA4ACRESObgAFS%2B5ABMAAfQwMSURIw4BDwEFFSE1IwcjASEVIRUzFSMRAZsEHz0gSQIo%2FqHedzEBbQFu%2Ftn19f8BbDhzPIXXKNnZApMo%2BSj%2B3gD%2F%2FwA3%2FzACDwKfAiYABgAAAAcA7gFTAAD%2F%2FwBhAAAB1AMvAiYACAAAAAcA4QEaAAD%2F%2FwBhAAAB1AMvAiYACAAAAAcA4wEaAAD%2F%2FwBhAAAB1AMvAiYACAAAAAcA5QEaAAD%2F%2FwBhAAAB1AMeAiYACAAAAAcA6gEaAAD%2F%2FwAHAAAAnQMvAiYADAAAAAYA4XgAAAD%2F%2FwBTAAAA6QMvAiYADAAAAAYA43gAAAD%2F%2FwADAAAA7QMvAiYADAAAAAYA5XgAAAD%2F%2FwAFAAAA6wMeAiYADAAAAAYA6ngAAAD%2F%2FwBhAAACGwMoAiYAEQAAAAcA5wFDAAD%2F%2FwA3%2F%2FQCVgMvAiYAEgAAAAcA4QFGAAD%2F%2FwA3%2F%2FQCVgMvAiYAEgAAAAcA4wFGAAD%2F%2FwA3%2F%2FQCVgMvAiYAEgAAAAcA5QFGAAD%2F%2FwA3%2F%2FQCVgMoAiYAEgAAAAcA5wFGAAD%2F%2FwA3%2F%2FQCVgMeAiYAEgAAAAcA6gFGAAAAAwA4%2F%2BkCWQKqAAsAFwAzAIUAuAAARVi4AC4vG7kALgAQPlm4AABFWLgAIC8buQAgAAQ%2BWboAAAAgAC4REjm5AAMAAfS6AAsALgAgERI5ugAMAC4AIBESObgALhC5AA8AAfS6ABcAIAAuERI5ugAYAC4AIBESOboAIwAgAC4REjm6ACYAIAAuERI5ugAxAC4AIBESOTAxNx4BMzI%2BAjU0Ji8BLgEjIg4CFRQWFwEeARUUDgIjIiYnByc3LgE1ND4CMzIWFzcXsR1NLzJSOyAbGRcdSi0yUzogGRcBdyIlKEhkOzZcI0EcRiAkKEhkPDRYIz0dZSIlK09vRT9mJh4fISpNbkQ9ZSYBuSx6S05%2FWjEnJVcWXi14Sk59WS8kIlEWAAAAAAIANwAAAxICkwAUACEAVQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAQLxu5ABAABD5ZuAAFELkAHAAB9LgAB9C6AAwABQAQERI5uAAML7kACgAB9LgAEBC5ABsAAfS4AA7QMDETND4CMyEVIRUzFSMRIRUhIi4CNxQeAjsBESMiDgI3J091TgGY%2Ftn19QEx%2Fl1OdU4nMCBDZUU%2FP0VlQyABTEt4Vi4o%2BSj%2B3igvV3tLQWtOKwJFKktrAAD%2F%2FwBf%2F%2FQCGwMvAiYAGAAAAAcA4QE9AAD%2F%2FwBf%2F%2FQCGwMvAiYAGAAAAAcA4wE9AAD%2F%2FwBf%2F%2FQCGwMvAiYAGAAAAAcA5QE9AAD%2F%2FwBf%2F%2FQCGwMeAiYAGAAAAAcA6gE9AAD%2F%2FwADAAABvAMvAiYAHAAAAAcA4wDfAAAAAgAlAAACOgKTABAAIQBZALgAAEVYuAAhLxu5ACEAED5ZuAAARVi4ABwvG7kAHAAEPlm5AAAAAfS4ACEQuQAKAAH0ugAOACEAHBESObgADi%2B5AA0AAfS4AA4QuAAe0LgADRC4AB%2FQMDElMj4CNTQuAisBFTMVIxETMh4CFRQOAisBESM1NxEBCkNgPx4eP2BDZqOjakxxSyQkSnFMmVFRJytOa0FAakwq%2FyH%2B2wJsLlZ4S0t7Vy8BTB8CASYAAAAAAgBhAAACAAKTAA4AFwA5ALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AA4vG7kADgAEPlm7ABcAAQAMAAQruwACAAEAFgAEKzAxEzMVMzIeAhUUBisBFSM3MjY1NCYrARFhLoY3Vz0gfG%2BGLqllYmNkewKTdRQrRjNhX6bNSFFSP%2F7WAAD%2F%2FwBB%2F%2FQBowLEAiYAHgAAAAcA4AEGAAD%2F%2FwBB%2F%2FQBowLEAiYAHgAAAAcA4gEGAAD%2F%2FwBB%2F%2FQBowLEAiYAHgAAAAcA5AEGAAD%2F%2FwBB%2F%2FQBowKeAiYAHgAAAAcA5gEGAAD%2F%2FwBB%2F%2FQBowKfAiYAHgAAAAcA6QEGAAD%2F%2FwBB%2F%2FQBowLIAiYAHgAAAAcA6wEGAAAAAwBB%2F%2FQC6gHsABAASQBSAJsAuAAARVi4ABYvG7kAFgAIPlm4AABFWLgAHC8buQAcAAg%2BWbgAAEVYuAA5Lxu5ADkABD5ZuAAARVi4ADEvG7kAMQAEPlm4ADkQuQADAAH0ugBBADkAFhESObgAQS%2B5AAwAAfS6ACIAHAAxERI5uAAiL7gAMRC5ACgAAfS4ABYQuQBGAAH0uAAcELkATQAB9LgAIhC5AFIAAfQwMTcUFjMyPgI3LgE1Jw4DAz4DMzIWFz4BMzIWFRwBByEUHgIzMjY3Fw4DIyIuAicOASMiLgI1NDY3NC4CIyIGBwU0JiMiDgIHbzwpEy4vLhULCgFGYj4cFg0kLTMbO0UMGlc2VV0C%2FrQaLj8kJzsbEw4eJCoaIDQqIQ0wbS0dMicWlpsIGS0jLU8YAlRJQR41KRsEejQsDBgjFhZBIhsJGiQuARgJFhINQTc3QXRqCRIJLUw3HxcUIwkQDggRHCMTLjUQIDEiUFQSGzcrGyYSgV1dGzFFKQAA%2F%2F8ANP8wAacB7AImACAAAAAHAO0BCQAA%2F%2F8ANP%2F0Ab0CxAImACIAAAAHAOABBQAA%2F%2F8ANP%2F0Ab0CxAImACIAAAAHAOIBBQAA%2F%2F8ANP%2F0Ab0CxAImACIAAAAHAOQBBQAA%2F%2F8ANP%2F0Ab0CnwImACIAAAAHAOkBBQAA%2F%2F8AGgAAAKoCxAImAGcAAAAGAOByAAAA%2F%2F8AOgAAAMoCxAImAGcAAAAGAOJyAAAA%2F%2F8AAAAAAOQCxAImAGcAAAAGAORyAAAA%2F%2F%2F%2F%2FwAAAOUCnwImAGcAAAAGAOlyAAAAAAEAXAAAAIgB4AADACUAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAAi8buQACAAQ%2BWTAxEzMRI1wsLAHg%2FiAAAP%2F%2FAFwAAAG%2FAp4CJgArAAAABwDmARsAAP%2F%2FADT%2F9AHjAsQCJgAsAAAABwDgAQsAAP%2F%2FADT%2F9AHjAsQCJgAsAAAABwDiAQsAAP%2F%2FADT%2F9AHjAsQCJgAsAAAABwDkAQsAAP%2F%2FADT%2F9AHjAp4CJgAsAAAABwDmAQsAAP%2F%2FADT%2F9AHjAp8CJgAsAAAABwDpAQsAAAADAC7%2F6gHpAfUACQATAC4ASQC4AABFWLgAKS8buQApAAg%2BWbgAAEVYuAAcLxu5ABwABD5ZugAAABwAKRESObkAAgAB9LoACgApABwREjm4ACkQuQAMAAH0MDE3FjMyPgI1NC8BJiMiDgIVFBcBHgEVFA4CIyInByc3LgE1ND4CMzIWFzcXmS9DJD8uGiQULkUkPy0aJAEqGBwjO08rUjs2GjoYHCM7TisoSR02GkwyHzhOL1I4GzMfOU8vUTgBNCBWNjxdQCI4QhVGIFQ2PF9AIhwcQRUAAAADADT%2F9AMrAewAEwA7AEQAcQC4AABFWLgAGS8buQAZAAg%2BWbgAAEVYuAA3Lxu5ADcABD5ZuQAFAAH0uAAZELkADwAB9LgAGRC4AB%2FQuAA3ELgAMdC6ACQAHwAxERI5uAAkL7gAMRC5ACoAAfS4AB8QuQA%2FAAH0uAAkELkARAAB9DAxNxQeAjMyPgI1NC4CIyIOAgc0PgIzMhYXPgEzMhYVFAchFB4CMzI2NxcOASMiJicOASMiLgIlNCYjIg4CB2IZLD0jJD0rGRkrPSQjPSwZLiI7TCo6ZhoaXzpVYgP%2BrxsuQCQnPhsTHUU2P2QaHGA%2FKkw7IgLNTUAeNiobBO8vTjgfHzhOLzBOOR8fOU4wPF9AIkdHQkx0ahISLUw3HxcUIxEeTEFGRyJAXVldXRsxRSkAAAEAXP%2F0AgEC2QA5AGQAuAAARVi4AAMvG7kAAwASPlm4AABFWLgAOS8buQA5AAQ%2BWbgAAEVYuAAZLxu5ABkABD5ZugANABkAAxESObkAIAAB9LoAJQAZAAMREjm6ADEAGQADERI5uAADELkANAAB9DAxEzQ2MzIeAhUUDgIVFB4EFRQOAiMiJic3HgEzMj4CNTQuBDU0PgI1NCYjIgYVESNcXU4hMyQTHyUfHy82Lx8WJzUgJ0QdFh01IBkmGQ0fLjcuHx8kHy8wOUUsAhRdaBUkMRwnNy8vHh0kGxokNioeMiYVHBchFxcRGyQTIywfGSAtJCQ0LzEiLDhUWv37AP%2F%2FAFX%2F9AG1AsQCJgAyAAAABwDgAQgAAP%2F%2FAFX%2F9AG1AsQCJgAyAAAABwDiAQgAAP%2F%2FAFX%2F9AG1AsQCJgAyAAAABwDkAQgAAP%2F%2FAFX%2F9AG1Ap8CJgAyAAAABwDpAQgAAP%2F%2FAAz%2FJQGoAsQCJgA2AAAABwDiAOUAAP%2F%2FAAz%2FJQGoAp8CJgA2AAAABwDpAOUAAAACADz%2F9AHWAtQAFQA8AFkAuAAARVi4ADcvG7kANwASPlm4AABFWLgAIC8buQAgAAQ%2BWbsAKgABAAwABCu6ADMAMAADK7gAIBC5AAAAAfS4ADAQuAAW0LgAMxC4ADfcuAAzELgAOtAwMSUyPgI1NCcuAyMiDgIVFB4CEx4DFRQOAiMiLgI1ND4CMzIWFy4BJwcnNy4BJzceARc3FwELKTsnEwMTJyYmEyk9KhUaLDxlHjEkFB41Sy0oSzkjHjdMLitMHQ48Ko4PhBw%2BIRYlRSCODxsjPFIvIB4cJBQHHjNDJSpHMxwCRB5JV2g9PGJFJSA7VjYxUzohJiZKaipKHEQYKRMeFC4dShsAAAAAAgBc%2FycB7ALPABYAJwBXALgAAEVYuAAILxu5AAgACD5ZuAAARVi4AAIvG7kAAgASPlm4AABFWLgAAS8buQABAAY%2BWbgAAEVYuAASLxu5ABIABD5ZuQAaAAH0uAAIELkAJAAB9DAxFyMRMx0BPgEzMh4CFRQOAiMiJicVNR4BMzI%2BAjU0LgIjIgYHiCwsJFItMEkwGCI7TSojRyYqSBwkPiwZESQ6KSRNLNkDqM9bHCsjQFo4PWBDIx4cWIMiHCA6UTEsTDcfKSYAAAAAAQAiAAACKgLbACoAfAC4AABFWLgAFC8buQAUAAg%2BWbgAAEVYuAAoLxu5ACgAEj5ZuAAARVi4ABAvG7kAEAAEPlm4ACgQuQADAAH0uAAUELgAJNC4AAjQuAAUELkAEQAB9LgADdC4AAnQuAAQELgADNC4ABQQuAAT0LgAKBC4ABjQuQAfAAH0MDEBLgEjIgYdATMVIxEjESMRIxEjNTc1NDYzMhYXBy4BIyIGHQEzNTQ2MzIXAh4PHQ4mJW9vLN4sQUFEPhQpFAwSIhErK94%2BOSMjAqcIBjk0aCb%2BRgG6%2FkYBuiIEWUtNCQkkCQc9OFZrSEgQAAEAIf%2F0AhAC2wAuAIkAuAAARVi4ABAvG7kAEAAIPlm4AABFWLgAFC8buQAUABI%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAMvG7kAAwAEPlm4ABAQuQANAAH0uAAJ0LgAEBC4AA%2FQuAAPL7gAFBC5ABoAAfS4ABAQuAAf0LgAI9C4AAkQuAAk0LgAAxC5ACsAAfQwMSUOASMiLgI1ESMRIxEjNTc1NDYzMhcHLgEjIgYdATM3MxUzFSMRFB4CMzI2NwIQFSsPIy0cC7ssQkI%2BOSMjDA8dDiYlvAYljIwHEiAZDiENBggKFSY2IAE1%2FkYBuiIEa0hIECQIBjk0aIuLJv7HFyUbDwkGAAADACT%2F9AIyAp8ADwAfAEwAjAC4AABFWLgANy8buQA3ABA%2BWbgAAEVYuAAlLxu5ACUABD5ZuAAARVi4ACAvG7kAIAAEPlm6AEIAIgADK7gAJRC5AAMAAfS6AAYAIgBCERI5ugALACUANxESObgACy%2B4ABPcuAA3ELkAHQAB9LoALwALABMREjm6AD8ACwATERI5ugBJACIAQhESOTAxNzI2Ny4BJw4DFRQeAgMUFhc%2BAzU0LgIjIgYBJicOASMiLgI1ND4CNy4BNTQ%2BAjMyFhUUDgIHHgEXPgE3Mw4BBx4BF%2BYpSh81YyMWJx4RGCg3IBQRGS4kFQgRGxQsMQF7QUwkWDgnRjMeFyUxGhQYFCQyHjY4Gis3HCNhMyM0ESsUOSgjQB0aJyAweEARJCcrGCE1JRUB9CFHJBIkKCsaEB8YD0D9uRc8JS4ZL0IpITYvKRMqUyYgNicWRDQgNi8rFT92LS1tP0R7MxwlCwAAAgAw%2F%2FQBrgKLAAsAFwA1ALgAAEVYuAAGLxu5AAYADj5ZuAAARVi4AAAvG7kAAAAEPlm5AAwAAfS4AAYQuQASAAH0MDEXIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBbvXGNjXFxjY1xDT09DQlBQDK2hoKmpoKGtJpWTk5CQk5OVAAABAFQAAAGiAn8ADABDALgAAEVYuAAHLxu5AAcADj5ZuAAARVi4AAwvG7kADAAEPlm5AAEAAfS4AAcQuQAEAAH0uQACAAH0uAABELgACdAwMTczESM1PgE3MxEzFSFUlnInPRcki%2F6yJwISHgcUDf2oJwAAAAEAJwAAAbECiwAdAD0AuAAARVi4AA8vG7kADwAOPlm4AABFWLgAHC8buQAcAAQ%2BWbkAGgAB9LgAF9C4AADQuAAPELkACAAB9DAxNz4DNTQmIyIGByc%2BATMyFhUUDgIHPgE7ARUhKU92TydDSCxMHR0kVztWXipMbUIaNxra%2FngcUH9pWSo8UjAkHCg2YlEwX2l3RgIDKAAAAQAd%2F%2FQBqwKLADcAUwC4AABFWLgAHy8buQAfAA4%2BWbgAAEVYuAAyLxu5ADIABD5ZuQAFAAH0ugAPAB8AMhESObgADy%2B5ABAAAfS4AB8QuQAYAAH0ugAoABAADxESOTAxNx4DMzI%2BAjU0LgIjNTI%2BAjU0JiMiBgcnPgEzMh4CFRQGBxUeAxUUDgIjIi4CJzcOIis1ISA3KBYZNlQ8N00vFUY7LUocGiFUOCVALxtFNR40KBceNUcpJj4xJw9tEB0XDhQlNCAhNicWJxYlMx02QSkdHiAuFSc5JT9NEgQGHSo3IipDLxkQGiAQAAACABAAAAHAAn8ACQAUAFcAuAAARVi4ABIvG7kAEgAOPlm4AABFWLgADS8buQANAAQ%2BWbsADgABAAAABCu4ABIQuAAE3LgAABC4AAnQuAAOELgAC9C4AAkQuAAQ0LgAABC4ABPQMDElNTQ2NyMOAQcDBSMVIzUhNQEzETMBNgICBAwaDrwBel8r%2FtoBKShf5eoWQhYUJhb%2B%2BCa%2FvxoBpv5mAAAAAAEAGv%2F0Aa8CfwAoAEcAuAAARVi4ABIvG7kAEgAOPlm4AABFWLgAIy8buQAjAAQ%2BWbkABQAB9LoAGQASACMREjm4ABkvuAAN3LgAEhC5ABQAAfQwMTceAzMyPgI1NCYjIgYHJxMhFSMHPgEzMh4CFRQOAiMiLgInMw4iKjQhIDorGlRIJTUdHxcBJ%2F8UGTYjKEg0HyM5SScmPTEmD2kPHBYNGS0%2FJ05XFxQTASsn5w8TGDFNNDNPNxwPGR8PAAAAAAIANP%2F0AbQCiwARADAAQwC4AABFWLgALS8buQAtAA4%2BWbgAAEVYuAAlLxu5ACUABD5ZuwAdAAEACgAEK7gAJRC5AAAAAfS4AC0QuQAVAAH0MDElMj4CNTQuAiMiBgceAxMuASMiDgIHPgEzMhYVFA4CIyImNTQ%2BAjMyFhcBBhwvIhQQITUkIlInAxcoO6wVOB8mRDQfASFTLVVdHDA%2FJGFwJ0FVLi1BGRoZLDsiIjsrGCs1M1M7IQIVGhsgSnlYKTBlYSxJNR6ckmSKViUiHAABACwAAAG1An8ADwAzALgAAEVYuAAHLxu5AAcADj5ZuAAARVi4AAAvG7kAAAAEPlm4AAcQuQAFAAH0uAAJ0DAxMz4DNyE1IRUOAwcjvAQZLkYw%2Fq8BiTlLLRQEMGGhj4NEJxpMjJGeXgAAAAADACj%2F9AG1AosAEQAjAE0AVwC4AABFWLgANC8buQA0AA4%2BWbgAAEVYuABJLxu5AEkABD5ZuQAFAAH0ugAPAEkANBESObgADy%2B4ABLQuAA0ELkAGgAB9LgADxC4ACncuAASELgAPtwwMTcUHgIzMj4CNTQuAicOATc%2BATU0LgIjIg4CFRQeAgc0PgI3NS4DNTQ%2BAjMyHgIVFA4CBxUeAxUUDgIjIi4CVBgqOiMiNycVITdGJTFAzikrEiExHxstIRIdMD3aFyUtFxIhGRAaLT0jKUAtFxIbIA4VKB8UHDNIKyxKNh%2BmHjMmFhQkMBslMycdDx1PdCFJKhsvJBUSHywaIjElHLcgOC0jDAQMHSUrGiI6KRcZLT0kGjEqIgsEDR4mMiAjPS0aGy9AAAACACv%2F9AGqAosAEQAwAEMAuAAARVi4ACUvG7kAJQAOPlm4AABFWLgALS8buQAtAAQ%2BWbsAAAABAB0ABCu4ACUQuQAIAAH0uAAtELkAFQAB9DAxEzI2Ny4DIyIOAhUUHgIHHgEzMj4CNw4BIyImNTQ%2BAjMyFhUUDgIjIiYn4iJSJwMXKTsnGzAiFBAiNGoVOCAmRDQfASFULVRdHDA%2FJGBwJ0BWLi1CGAEjLTQzUzsgGSs7IiM7KxjTGhsgSnlYKDBlYStKNB6bkmWKVSYiHAAAAQBD%2F%2FQAmABPAAsAGAC4AABFWLgACS8buQAJAAQ%2BWbgAA9wwMTc0NjMyFhUUBiMiJkMaEREZGRERGiEWGBgWFRgYAAABADD%2FZQClAE8AEQAYALgAAEVYuAAFLxu5AAUABD5ZuAAL3DAxFz4BNwYjIiY1NDYzMhYVFAYHMCIqAQQIERkaERccOi19Ej0qARYUFBYmITdUGP%2F%2FAEP%2F9ACYAc0CJwCGAAABfgAGAIYAAP%2F%2FADD%2FZQClAc0CJwCGAAABfgAGAIcAAAACAFf%2F9ACsAp4ABQARACkAuAAARVi4AAEvG7kAAQAQPlm4AABFWLgADy8buQAPAAQ%2BWbgACdwwMRM1MwcDIwc0NjMyFhUUBiMiJmsuAQYhGhoRERkZEREaAldHR%2F5ckhYYGBYVGBgAAAIAV%2F9CAKwB7AAFABEAGAC4AABFWLgADy8buQAPAAg%2BWbgACdwwMR8BIzUTMzcUBiMiJjU0NjMyFpgBLgYhGhkRERoaEREZd0dHAaSTFxgYFxQYGAAAAAACACX%2F9AFgAqoAHwArACYAuAAARVi4ACkvG7kAKQAEPlm7ABMAAQAMAAQruAApELgAI9wwMTcmPgQ1NC4CIyIGByc%2BATMyHgIVFA4EFwc0NjMyFhUUBiMiJqMGESAoJBgNHCsdJUMZGx1ONCU6KBUZJCkhEwU7GRERGhoRERmzKUM5MjE0HxcrIBMhHxkhLRcpOCEiOTQzNz8mkhYYGBYVGBgAAAIAM%2F82AW4B7AAfACsAJgC4AABFWLgAKS8buQApAAg%2BWbsADAABABMABCu4ACkQuAAj3DAxExYOBBUUHgIzMjY3Fw4BIyIuAjU0PgQnNxQGIyImNTQ2MzIW8AURICgkGA0cKx4kQxkcHU8zJTooFRkkKSESBTsZEREZGRERGQEtKUM5MjE0HxcqIRMiHhkgLhcpOCEiOTUyNz8mkxcYGBcUGBgAAQBTAd0AhgK1AAUACwC6AAIABAADKzAxEyczFQcjVAEzCSECcEVFkwAAAP%2F%2FAFMB3QETArUAJgCOAAAABwCOAI0AAAABADoB4AChAr8AEQANALsABQABAAsABCswMRMOARU2MzIWFRQGIyImNTQ2N6EhIgIGDxkXERQYLSgCqBs2KwESExMVIyA2TBoAAAAAAQA6Ad0AogK8ABEADQC7AAsAAQAFAAQrMDETPgE1BiMiJjU0NjMyFhUUBgc6ISICBg4ZFhEUGS0pAfQbNisBEhMTFSMgNkwaAAAA%2F%2F8AOgHgAS4CvwAmAJAAAAAHAJAAjQAA%2F%2F8AOgHdAS8CvAAmAJEAAAAHAJEAjQAA%2F%2F8AOv9%2BAKIAXQIHAJEAAP2hAAD%2F%2FwA6%2F34BLwBdACcAkQAA%2FaEABwCRAI39oQAAAAEAKwBIAM0BsAAGAAsAugACAAYAAyswMTc1NxcHFwcriRl7exnpJqEVn6ETAAAAAAEANgBIANgBsAAGAAsAugACAAUAAyswMTcnNxcVByewehiKihj8nxWhJqETAAAA%2F%2F8AKwBIAVoBsAAmAJYAAAAHAJYAjQAA%2F%2F8ANgBIAWUBsAAmAJcAAAAHAJcAjQAAAAEAKADmAQQBDQADAA0AuwABAAEAAgAEKzAxEzMVIyjc3AENJwAAAP%2F%2FACgA5gEEAQ0CBgCaAAAAAQAoAOgBuAEMAAMADQC7AAEAAQACAAQrMDETIRUhKAGQ%2FnABDCQAAAEAKADoAvgBDAADAA0AuwABAAEAAgAEKzAxEyEVISgC0P0wAQwkAP%2F%2FAEMBFQCYAXACBwCGAAABIQAAAAEAKACaAPEBdgATAAsAugAKAAAAAyswMTciLgI1ND4CMzIeAhUUDgKMEyQcEREcJBMTJRwRERwlmg8dKBoZKRwQEBwpGRooHQ8AAAABAAz%2FiwHo%2F7EAAwANALsAAAABAAEABCswMQUVITUB6P4kTyYmAAAAAQBY%2F1EA9wLbAA4ACwC6AAYAAAADKzAxFy4BNTQ2NxcOARUUFhcH3D5GRj4bPDw8PBuvZN2EhN1kEF%2Ffd3ffXxAAAAABACD%2FUQC%2FAtsADgALALoABwANAAMrMDEXPgE1NCYnNx4BFRQGBycgPDw8PBs9R0c9G59f33d3318QZN2EhN1kEAAAAAEAYv9oAQICxAAHABcAuwAFAAEABgAEK7sAAQABAAIABCswMRMzFSMRMxUjYqB9faACxB383h0AAQAV%2F2gAtQLEAAcAFwC7AAAAAQAFAAQruwAEAAEAAQAEKzAxFxEjNTMRIzWSfaCgewMiHfykHQABACP%2FaAECAsQAMwArALsAAAABAAEABCu7AB4AAQAfAAQruwAQAAEADwAEK7oAKgAPABAREjkwMQUVIyIuAjU0NjU0LgIjNTI%2BAjU0JjU0PgI7ARUjIgYVFBYVFAYHFR4BFRQGFRQWMwECIhwpHA4IBxMiGhoiEwcIDhwpHCIfLh8GFR4eFQYfLnsdDB0xJjhhNA8eFg4gDhYcDzZhOCYxHQwdMjUxWTYtMgkECTQrNlkxNTIAAAAAAQAV%2F2gA9ALEADMAKwC7AAAAAQAxAAQruwAWAAEAEwAEK7sAIwABACQABCu6AAoAJAAjERI5MDEXMjY1NCY1NDY3NS4BNTQ2NTQmKwE1MzIeAhUUBhUUHgIzFSIOAhUUFhUUDgIrATU0Lh8GFh0dFgYfLh8iHCkcDggHEyIaGiITBwgOHCkcInsyNTFZNis0CQQJMi02WTE1Mh0MHTEmOGE2DxwWDiAOFh4PNGE4JjEdDB0AAQAJ%2F2ABYALGAAMAGAC4AABFWLgAAC8buQAAABI%2BWbgAAtwwMQEzASMBOib%2BzyYCxvyaAAEAX%2F8GAIMC7gADAAsAugABAAIAAyswMRMzESNfJCQC7vwYAAEABf9gAV0CxgADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDETMwEjBSYBMiYCxvyaAAACAF%2F%2FBgCDAu4AAwAHAAsAugABAAUAAyswMRMzESMXESMRXyQkJCQC7v4pO%2F4qAdYAAAAAAQBGAc4BRQLIAA4AFAC4AABFWLgABS8buQAFABI%2BWTAxEzcnNxc3Mxc3FwcXBycHaTdaCV8HIAdfClo2G0BCAeJYJB4aZmUZHiRYFFNTAAACADL%2FzAGtAqkADwBJABcAuwAxAAEAKgAEK7sARgABABMABCswMSU%2BATU0LgInDgEVFB4CEy4BIyIOAhUUHgQVFAYHHgEVFA4CIyImJzceATMyNjU0LgQ1NDY3LgE1ND4CMzIWFwE4JCctQ0wfIiotQ0xNGDUmGSQWCyo%2BST4qMSYQEhcnNB00UB0eGjsuLjYqP0k%2FKjMmDxIQIjIjKkYctREqKSgzJB8UFC4mJzEjHgGLFBoNFRwOISkhHSk8LjI5FRApGxsuIRIjHBwYHjIjIisgHSg6LjA%2FFA8oGhUqIRUeFwACACr%2FsAGjApMAAwAQACUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADi8buQAOABA%2BWTAxATMRIwMiLgI1ND4COwERAXUuLlI3XEIkIj5WMywCk%2F0dAUQXMU84OE8yF%2F5hAAAAAwAz%2F%2FQCsgKMABMAJwBFADMAuwA6AAEAQQAEK7sALQABADQABCu4AC0QuAAj3LkABQAB9LgAQRC4ABncuQAPAAH0MDETND4CMzIeAhUUDgIjIi4CNxQeAjMyPgI1NC4CIyIOAhc0PgIzMhYXBy4BIyIGFRQWMzI2NxcOASMiLgIzM1h0QUB0WDMzWHRAQXRYMyMuTmc6OWdOLi5OZzk6Z04ucx4xQSQoOBgXFy0ePExJPSQ4FxQbPjAkPzAcAUJLelYvL1Z6S0x7VzAwV3tMRHBPLCxPcERDb08rK09vQytGMBofGBoWFlJES1YdFRwYIxszSQAAAAAEABIBRAF%2BAsgAEwAnADcAQABXALgANi%2B4ACkvuAA2ELgAFNy5AAAAAfS4ACkQuAAe3LkACgAB9LoANAA2ACkREjm4ADQvuQA4AAH0ugAxADgANBESObgANhC4ADPQuAApELkAPgAB9DAxEyIuAjU0PgIzMh4CFRQOAicyPgI1NC4CIyIOAhUUHgIDMzIeAhUUBgcXIycjFSM3MjY1NCYrARXIJUIyHR0yQiUlQzEdHTFDJR84KBgYKDgfIDcoGBgoNyRFDxsWDRcRMSUnLyA9FxwVGyABRBwyRywsSDMcHDNILCxHMhwdGSs8JCQ9LRkZLT0kJDwrGQEPBg8YExMgBVZMTGcRFBEVSwAAAgA0%2F24C%2BwJ5AEYAVAA%2FALsAPAABAEIABCu7ACgAAQAPAAQruwBKAAEAFgAEK7sAIAABAFAABCu7AAUAAQAyAAQrugAjAFAAIBESOTAxNzQ%2BAjMyHgIVFA4CIyImJyMOASMiLgI1ND4CMzIXMzczBwYzMj4CNTQuAiMiDgIVFB4CMzI2NxcGIyIuAjcUFjMyPwEuASMiDgI0QW2QT0h1USwiNkEfKDUEAho9IxcqHxIZMEUsNR4CCSIkIl4YMykbJ0hnQUWAYzwsT29DMlIkEFZlSHtaM%2BguIjI6HxIhFyI2JRTKYp9xPS5TdUdAYUIhJScdKREiMyIkUEIrMCi9hx45UjVAakopOGeRWUl1USwaFh42L1mBUjkuQ60cFSM2QgAAAAIAJAAAAcECigAbAB8AmwC4AABFWLgACC8buQAIAA4%2BWbgAAEVYuAAMLxu5AAwADj5ZuAAARVi4ABYvG7kAFgAEPlm4AABFWLgAGi8buQAaAAQ%2BWbsAAwABAAAABCu7AAcAAQAEAAQruAAHELgACtC4AAcQuAAO0LgABBC4ABDQuAADELgAEtC4AAAQuAAU0LgAABC4ABjQuAADELgAHNC4AAQQuAAd0DAxNyM1MzcjNTM3MwczNzMHMxUjBzMVIwcjNyMHIz8BIwd3U1cVWFwZIxmVGiIZUlUVVlsZIxmVGiPXFZYV1iSqJMLCwsIkqiTW1tb6qqr%2F%2FwBeAbgA1gM%2BAgcAtwAAAbgAAP%2F%2FAC8BuAE3A0oCBwC4AAABuAAA%2F%2F8AKAGsATQDSgIHALkAAAG4AAD%2F%2FwAuAbgBPQM%2BAgcAugAAAbgAAAACACj%2F9AFCAZIACwAXACgAuAAGL7gAAEVYuAAALxu5AAAABD5ZuQAMAAH0uAAGELkAEgAB9DAxFyImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWtUJLS0JCS0tCLzc3Ly83NwxrZWRqamRlayFbVFRZWVRUWwAAAAEAXgAAANYBhgAIACIAuAAGL7gAAEVYuAAILxu5AAgABD5ZuAAGELkAAAAB9DAxEyM1PgE3MxEjsFIdKREhJgFEGwYTDv56AAEALwAAATcBkgAaACwAuAAPL7gAAEVYuAAZLxu5ABkABD5ZuQAXAAH0uAAA0LgADxC5AAgAAfQwMTc%2BAzU0JiMiBgcnPgEzMhYVFA4CBzMVIzgySS8XLycbLxEZEkElNkMZLD8lwP8ZLkg6MRkrMiQaFx4rPT4fODo%2FJSIAAAAAAQAo%2F%2FQBNAGSACoAPgC4ABcvuAAARVi4ACcvG7kAJwAEPlm6AAoACQADK7gAJxC5AAMAAfS4ABcQuQAQAAH0ugAdAAkAChESOTAxNx4BMzI2NTQmIzUyNjU0JiMiBgcnPgEzMhYVFAYHHgMVFA4CIyImJ0USOSIlNkpAOz8tJhcvExkVOyYxRSsgEiAaDxQkMBsuRxRVHSMrKCYqHDIiICkdFxYbJDYxJTENAxAYIRUbKx0QLR4AAAIALgAAAT0BhgAFABAATAC4AA4vuAAARVi4AAkvG7kACQAEPlm7AAAAAQAKAAQruAAOELkAAgAB9LgAABC4AAXQuAAKELgAB9C4AAUQuAAM0LgAABC4AA%2FQMDE3NTcjDwEXIxUjNSM1NzMVM98EBDhJ3zoksbEkOpJXaFNsIHJyFf%2F0%2F%2F8AKgEFAR0CUwIGAL0AAP%2F%2FACEBBQFFAlMCBgC%2BAAAAAgAqAQUBHQJTABsAJAA7ALgAAC%2B4ABIvuwAGAAEAHwAEK7gAEhC5AAsAAfS4AAAQuAAX0LgAABC5ABwAAfS6ABkAAAAcERI5MDETIiY1NDY3NC4CIyIGByc%2BATMyFh0BIycjDgEnMjc1DgEVFBaLKzZibAcQGhUePBEPFEMnOi0eBgQVNRcvNV1KJAEFMCs1NwoTIhkOGQwbDh1FOcgnEh0gMWYKLSIgHgAAAAIAIQEFAUUCUwATAB8AGwC4AAovuAAAL7kAFAAB9LgAChC5ABoAAfQwMRMiLgI1ND4CMzIeAhUUDgInMjY1NCYjIgYVFBazHjYnFxcnNh4eNicXFyc2HjA7OzAwOzsBBRcrPicoPisWFis%2BKCc%2BKxchSjw8Sko8PEoAAAACACoBvwEOAqwAEwAfABcAuwAUAAEAAAAEK7sACgABABoABCswMRMiLgI1ND4CMzIeAhUUDgInMjY1NCYjIgYVFBacFikgExMgKRYWKSATEyApFiMtLSMjLS0BvxAeLBwcLB8QEB8sHBwsHhAgMSUmMjImJTEAAAACAB4AcgHAAiIAIgA2AEoAuAAARVi4AAgvG7kACAAKPlm4AABFWLgADS8buQANAAo%2BWbgAAEVYuAASLxu5ABIACj5ZuwAoAAEAHwAEK7gADRC5ADIAAfQwMT8BLgE1NDY3JzcXPgEzMhYXNxcHHgEVFAYHFwcnDgEjIicHNxQeAjMyPgI1NC4CIyIOAh5CEhQUEkIbQhc9ICA9F0MaQhIUFBFBGkMXPSBCMkItFiUyHBwyJRYWJTIcHDIlFo5DGDwjJD4YRBxFFRcXFUUcRBg%2BJCM8GEMcRBYXLUTWIjkoFxcoOSIiOikXFyk6AAEAO%2F%2BSAaMC7QAxAF0AuAAARVi4ACsvG7kAKwAOPlm4AABFWLgAFS8buQAVAAQ%2BWbgAKxC5AAUAAfS6AAgAFQArERI5uAAVELgAEtC4ABUQuQAcAAH0ugAfACsAFRESObgAKxC4AC7QMDEBLgMjIgYVFB4EFRQGBxUjNS4BJzceATMyNjU0LgQ1ND4CNzUzFR4BFwF4DhseJBc0QCtAS0ArV0MnNFYdGB1QND9DK0BLQCsVJTQfJzE%2BGgIoDhYQCEEyLDUnIS9HOUhWBmNjBC0cHxosRDcxPSsiLD8zHzYpGgNjYwMoGwABADYAAAGsAosALABZALgAAEVYuAATLxu5ABMADj5ZuAAARVi4AAIvG7kAAgAEPlm5AAAAAfS6ACQAEwACERI5uAAkL7gACtC4ACQQuQAjAAH0uAAL0LgACy%2B4ABMQuQAaAAH0MDElFSE1PgE1NCYnIzU3My4BNTQ2MzIWFwcuASMiDgIVFBYXMxUjHgEVFAYHFQGs%2Fo04MgUEZEIYCxVbTzRFFx0VNigfLx8QFQulnQQEJiIoKBsgaDoTJBEhAyZLJ09bKh0bGSIUJDAbKEknJBEjFD5SIQQAAAAAAQAeAAABwQJ%2FAB0AhAC4AABFWLgAHS8buQAdAA4%2BWbgAAEVYuAAJLxu5AAkADj5ZuAAARVi4ABQvG7kAFAAEPlm6AAQAHQAUERI5ugAZAB0AFBESObgAGS%2B5AAwAAfS4ABkQuAAN0LgAGRC4ABjQuAAYL7gAENC4ABgQuQAVAAH0uAAR0LgAGRC5ABsAAfQwMRMXHgEXMz4BPwEzAzMVIxUzFSMVIzUjNTM1IzUzA05eECASBBMfEV4urpqoqKgtpqammKwCf8EhQyUlQyHB%2FrAhRyKlpSJHIQFQAAEAGP%2F0AdoCiwA1AG0AuAAARVi4ABkvG7kAGQAOPlm4AABFWLgAAy8buQADAAQ%2BWbsALQABAC4ABCu4AC4QuAAJ0LgALRC4AArQuAAtELgAJdy4ABLQuAAlELkAJAAB9LgAE9C4ABkQuQAgAAH0uAADELkAMgAB9DAxJQ4BIyIuAicjNTcmNDU8ATcjNTc%2BAzMyFhcHLgEjIgYHIRUhBhQVHAEXMxUjHgEzMjY3AdogTjgsSjgmB0E%2BAQE%2BQQcmPFEwLUoWHRY3I1BgCwEW%2FucBAfHuDVpIKj8dUiwyJENfPB0ECxQLCRIIHQQ9YUQkLiAbHiV3aSEIEQkLFQshZnYoKQAAAgA%2B%2F%2BQBswKMAAgAJwA3ALsAJAABAAwABCu7ABwAAQAjAAQruAAjELgAANC4ACQQuAAI0LgADBC4AA%2FQuAAcELgAGdAwMRMOAxUUFhc3DgEHFSM1LgM1ND4CNzUzFR4BFwcuAScRPgE3%2FyA3JxZPRbQdSSwiKkczHR41RigiMEAXGBc2IiU%2BGAH2BSAxQidOZgoXGyMCbG0EIjtSMzRROyIEb20CIxccFBsC%2Fn8CHhYAAAAAAf9b%2F%2FQA8QKfAAMAGAC4AABFWLgAAC8buQAAAAQ%2BWbgAAdwwMQcBMwGlAXAm%2FpEMAqv9VQAAAP%2F%2F%2F1v%2F9ADxAp8CBgDGAAD%2F%2FwAo%2F%2FQC%2FQKfACcAtgAAAQ0AJwDGAWsAAAAHALYBuwAAAAD%2F%2FwBK%2F%2FQCzwKfACcAt%2F%2FsAQ0AJwDGAVYAAAAHALoBkgAAAAD%2F%2FwBK%2F%2FQC3wKfACcAt%2F%2FsAQ0AJwDGAT8AAAAHALgBqAAAAAD%2F%2FwAo%2F%2FQC4gKfACcAuQAAAQ0AJwDGAYUAAAAHALoBpQAAAAAAAQAiAG4BvQImAAsAHQC7AAMAAQAAAAQruAADELgABtC4AAAQuAAI0DAxEyM1MzUzFTMVIxUj27m5Kbm5KQE3JsnJJskAAAAAAQAiATcBvQFdAAMADQC7AAEAAQACAAQrMDETIRUhIgGb%2FmUBXSYAAAEAMwCHAasCDQALACUAuAAARVi4AAMvG7kAAwAKPlm4AABFWLgABS8buQAFAAo%2BWTAxPwEnNxc3FwcXBycHM6KiG6GiGqGhGqKho6enHKmpHKenHKioAAADACIAbQG9AiUACwAXABsAIQC7AA8AAQAVAAQruwAGAAEAAAAEK7sAGQABABoABCswMRMiJjU0NjMyFhUUBgM0NjMyFhUUBiMiJichFSHvEBYWEBEVFTcWEBEVFREQFqcBm%2F5lAdUWExEWFhETFv7BERYWERMWFtomAAD%2F%2FwAiANIBvQHDAiYAzQBmAAYAzQCbAAAAAQAiAJIBvQIGAAkAFAC4AABFWLgAAS8buQABAAo%2BWTAxEyUVDwEVHwEVJSIBm%2BiFhej%2BZQFipCtaMwQzWiukAAEAIgCSAb0CBgAJABQAuAAARVi4AAgvG7kACAAKPlkwMQEFNT8BNS8BNQUBvf5l6IWF6AGbATakK1ozBDNaK6QAAAAAAgAiAAABvQImAAsADwA4ALgAAEVYuAAOLxu5AA4ABD5ZuwADAAEAAAAEK7gAAxC4AAbQuAAAELgACNC4AA4QuQAMAAH0MDETIzUzNTMVMxUjFSMHIRUh27m5Kbm5KbkBm%2F5lATYly8slyUglAAAAAAEAQgEiAZ0CngAJABoAuAAARVi4AAAvG7kAAAAQPlm5AAUAAfQwMRMzEyMvASMPASPYLpcrTTQEM00rAp7%2BhMuFhcsAAQAoAQoBtgGKABcAJwC7AAgAAQAPAAQruAAPELgAFNy5AAMAAfS4AAvQuAAPELgAF9AwMRM%2BATMyHgIzMjY3Fw4BIyIuAiMiBgcoFjsdHS8rKBYXJhIcFTsdHS8rKBYXJhIBNyopHCIcHCMUKSgcIhwcIwABACIAbgG9AV0ABQANALsAAQABAAQABCswMRMhFSM1ISIBmyn%2BjgFd78kAAAEAXP84Ab0B4AAXABoAuAAARVi4ABEvG7kAEQAEPlm5AAUAAfQwMRMzERQWMzI2NxEzESMnIw4BIyImJxcVI1wsNDorRSssJgQDIkswJTQUAiwB4P7STUkvMwFi%2FiBQKjEWIVqaAAD%2F%2FwCzAjwBQwLEAAcA4AELAAAAAP%2F%2FANMCPAFjAsQABwDiAQsAAAAA%2F%2F8AmQI8AX0CxAAHAOQBCwAAAAD%2F%2FwCPAkUBhwKeAAcA5gELAAAAAP%2F%2FAJgCVgF%2BAp8ABwDpAQsAAAAA%2F%2F8AmgJeAXwCggAHAOgBCwAAAAD%2F%2FwC5AhsBXQLIAAcA6wELAAAAAP%2F%2FAMr%2FMAFOAAIABwDtARQAAAAAAAH%2FqAI8ADgCxAADABgAuAAARVi4AAMvG7kAAwAMPlm4AAHcMDEDMxcjWDRcJgLEiAAAAAAB%2F48CxQAlAy8AAwALALoAAQADAAMrMDEDMxcjcTpcKAMvagAB%2F8gCPABYAsQAAwAYALgAAEVYuAAALxu5AAAADD5ZuAAC3DAxAyM3MxImXDQCPIgAAAAAAf%2FbAsUAcQMvAAMACwC6AAIAAAADKzAxEyM3MwMoXDoCxWoAAf%2BOAjwAcgLEAAcANwC4AABFWLgABi8buQAGAAw%2BWbgAAEVYuAADLxu5AAMADD5ZuAAGELgAANy6AAUAAAAGERI5MDEDMxcjJyMHIxMmXyVLBEslAsSIY2MAAAAB%2F4sCxQB1Ay8ABwAXALoABgABAAMruAAGELgAB9y4AAPQMDEDNzMXIycjB3VgKmAoSwRLAsVqakhIAAAB%2F4QCRQB8Ap4AGwBBALgAAEVYuAAALxu5AAAADD5ZuAAARVi4ABMvG7kAEwAMPlm7ABgAAQAFAAQruAATELkACgAB9LgABRC4AA7QMDEDPgMzMh4CMzI2NzMOAyMiLgIjIgcjfAEIERkSEh4aGA0QEgQeAQgRGRISHhkZDR4IHgJFECAZEBEVER0aECAZEBEVETcAAf9%2BAswAggMoABsAIwC6AAAAEwADK7oABQAOAAMruAAAELgACNC4AA4QuAAW0DAxEyIuAiMiBgcjPgMzMh4CMzI2NzMOAzsUHxsaDxAWAx0BChIZERQeGxsPEBYDHQEKEhkCzBIVEh8aESEaEBIVER4aESAbEAAAAf%2BPAl4AcQKCAAMACwC4AAMvuAAB3DAxAzMVI3Hi4gKCJAAAAv%2BNAlYAcwKfAAsAFwAoALgAAEVYuAAALxu5AAAADD5ZuAAG3LgAABC4AAzQuAAGELgAEtAwMQMiJjU0NjMyFhUUBjMiJjU0NjMyFhUUBk8QFBQQEBUVjhAVFRAQFBQCVhUQDxUVDxAVFRAPFRUPEBUAAAAC%2F40C1QBzAx4ACwAXABsAugAGAAAAAyu4AAAQuAAM0LgABhC4ABLQMDEDIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAZPEBQUEBAVFY4QFRUQEBQUAtUTEREUFBERExMRERQUERETAAAAAAL%2FrgIbAFICyAALABcAEwC6AAwAAAADK7oABgASAAMrMDERIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBYjLy8jIy8vIxYeHhYWHh4CGzAmJzAwJyYwGiEbHCEhHBshAAAAAAL%2FrgK8AFIDYAALABcAEwC6AAwAAAADK7oABgASAAMrMDERIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBYjLy8jIjAwIhQfHxQWHh4CvCwmJS0tJSYsGhwcGh4eGhwcAAAAAAH%2Ftv8wADoAAgARABMAugACABEAAyu6AAsACgADKzAxJzMHHgEVFA4CByc%2BATU0JicIIx0YJBUjLRgHKjMmHQI4CB8eFB0UDQMeBhgVFxYIAAAAAAH%2Ftv8wADoAAgARABMAugARAAIAAyu6AAoACwADKzAxJzMHHgEVFA4CByc%2BATU0JicIIx0YJBUjLRgHKjMmHQI4CB8eFB0UDQMeBhgVFxYIAAAA%2F%2F8ASwAAAJsCowIGACYAAAABAAAA8QBcAAcAeAAFAAEAAAAAAAoAAAIAAXMAAwABAAAAYgBiAGIAYgCwARQBZAGoAeYCHgJ%2BAroC2gMOA1YDfAPgBDIEhgTOBUAFlgYEBjAGdga0ByoHhgfGB%2FwIegj0CUQJvgogCnALIgtwC6QL7Aw0DGQM4g04DYwOBg5%2BDsgPNg%2BED9oQFhCMEOYROhFwEXwRiBGUEaARrBG4Eh4SKhI2EkISThJaEmYSchJ%2BEooSlhKiEq4SuhLGEtITZBPCE84T2hPmE%2FIT%2FhReFKAUrBS4FMQU0BTcFOgVqhW2FcIVzhXaFeYV8hX%2BFgoWFhY2FkIWThZaFmYWchZ%2BFuoXhBgEGBAYHBgoGDQYQBhMGNIZOBmyGjga7hsuG2gbtBwqHHwc3B1EHXoeEB54HpoexB7QHtwfEB88H44f4B%2F2IAIgKCBOIFogZiBwIH4gliCuILogxiDaIOIg9iEKIRQhOiFOIXAhkiGuIcoiJiKAIpoirCLGIuAjCCN6I6wkKCSuJUAlvCXGJdAl2iXkJh4mQiaCJt4nICcoJzAnhifEKAAodijqKVgpxipIKqIqvirGKtgq6ir8Kw4rMitGK3IrsCu8K9wr%2Fiw2LFgskiyoLNws5izwLPotBC0OLRgtIi0sLUYtWC1yLYQtsi3QLhouVi5oLqIu1i8GLzYvYC%2BKL4ovkgABAAAAAQzMmt50Tl8PPPUACQPoAAAAAM2XgKMAAAAAzZfjFP9X%2FuIEYgOrAAAACQACAAAAAAAAAngAXgAAAAAAxwAAAMcAAAIOAAgCQgBhAjQANwJcAGECAwBhAd0AYQJdADcCfwBhAPAAYQHOACkCLgBhAdMAYQLCAGECfABhAowANwIvAGECjAA3AjAAYQIJAC4CDAAdAnoAXwHrAAQDAgAcAeIAEQG%2FAAMCGgAyAfMAQQIgAFwBwQA0AiAANAHjADQBBwAhAecANAIQAFwA5QBLAOX%2F3wHQAFwA7QBcAywAXAIUAFwCFwA0AiAAXAIZADQBPQBcAZUAIAE4ABwCEQBVAbIADAKtABgBlwAOAbQADAGUABsCDgAIAg4ACAIOAAgCDgAIAg4ACAIOAAgDKQAVAjQANwIDAGECAwBhAgMAYQIDAGEA8AAHAPAAUwDwAAMA8AAFAnwAYQKMADcCjAA3AowANwKMADcCjAA3AowAOANBADcCegBfAnoAXwJ6AF8CegBfAb8AAwJxACUCMwBhAfMAQQHzAEEB8wBBAfMAQQHzAEEB8wBBAxAAQQHBADQB4wA0AeMANAHjADQB4wA0AOUAGgDlADoA5QAAAOX%2F%2FwDlAFwCFABcAhcANAIXADQCFwA0AhcANAIXADQCFwAuA1AANAIeAFwCEQBVAhEAVQIRAFUCEQBVAbQADAG0AAwCFwA8AiAAXAIOACICGwAhAj8AJAHfADAB3wBUAd8AJwHfAB0B3wAQAd8AGgHfADQB3wAsAd8AKAHfACsA2wBDANsAMADbAEMA2wAwAQMAVwEDAFcBkgAlAZIAMwDbAFMBaABTANsAOgDbADoBaAA6AWgAOgDbADoBaAA6AQMAKwEDADYBkAArAZAANgErACgBKwAoAeAAKAMgACgA2wBDARkAKAH0AAwBFwBYARcAIAEXAGIBFwAVARcAIwEXABUBZQAJAOIAXwFlAAUA4gBfAYsARgHfADICAwAqAuUAMwGRABIDLgA0Ad8AJAFqAF4BagAvAWoAKAFqAC4BagAoAWoAXgFqAC8BagAoAWoALgFRACoBaAAhAVEAKgFoACEBNwAqAd8AHgHfADsB3wA2Ad8AHgHfABgB3wA%2BAFD%2FWwBQ%2F1sDJQAoAvwASgMSAEoDDwAoAd8AIgHfACIB3wAzAd8AIgHfACIB3wAiAd8AIgHfACIB3wBCAd8AKAHfACICGQBcAhcAswIXANMCFwCZAhcAjwIXAJgCFwCaAhcAuQIXAMoAAP%2BoAAD%2FjwAA%2F8gAAP%2FbAAD%2FjgAA%2F4sAAP%2BEAAD%2FfgAA%2F48AAP%2BNAAD%2FjQAA%2F64AAP%2BuAAD%2FtgAA%2F7YAxwAAAOUASwABAAAD2P7vAAAEiv9X%2FzcEYgABAAAAAAAAAAAAAAAAAAAA8QADAbcBLAAFAAACigJYAAAASwKKAlgAAAFeADIBIAAAAgsEAwMEAwICBCAAAAcAAAABAAAAAAAAAABBREJFAAAAAP7%2FAu7%2FBgAAA9gBESAAAZMAAAAAAeAClAAAACAAAwAAAAIAAAADAAAAFAADAAEAAAAUAAQB0gAAADwAIAAEABwAAAANAC8AOQBAAFoAYAB6AH4AvwDPAN8A7wD%2FATEBUwLGAtoC3CAUIBogHiAiIDogRCB0IKwiEiIV%2F%2F8AAAAAAA0AIAAwADoAQQBbAGEAewCgAMAA0ADgAPABMQFSAsYC2gLcIBMgGCAcICIgOSBEIHQgrCISIhX%2F%2FwAB%2F%2FUAAABMAAD%2FwwAA%2F70AAAAA%2F3gAAP93AAD%2FNgAA%2FhT%2BBP3%2F4IkAAAAA4H3gXeCC4EHgGN673rIAAQAAAAAAOAAAAFQAAABeAAAAZgBsAAAAqAAAAMQAAADgAAAAAAAAAAAA2gDeAAAAAAAAAAAAAAAAAAAAAAADAIoAjwCxAMEAyAB7AI4AoQCiAKsAzACHAJoAhgCnAIgAiQDRANAA0gCMALAAowCpAKQA1ACgANgApQCoAKYA1QDvAIsAxQDCAMAAwwCqAKwA3ACuALsAmADWAJsArwDdAL8A0wCzALQA2QDXAK0AngDfALIAvACZAMkAygDLAI0AVQBIAEkASgBLAEwATQDOAE4AUABRAFIAUwBUAFYAcAB3AGgAaQBqAGsAbABtAM8AbgBxAHIAcwB0AHUAeAB2AE8AbwCQAJEAlACSAJMAlQAAuAAALEu4AAlQWLEBAY5ZuAH%2FhbgARB25AAkAA19eLbgAASwgIEVpRLABYC24AAIsuAABKiEtuAADLCBGsAMlRlJYI1kgiiCKSWSKIEYgaGFksAQlRiBoYWRSWCNlilkvILAAU1hpILAAVFghsEBZG2kgsABUWCGwQGVZWTotuAAELCBGsAQlRlJYI4pZIEYgamFksAQlRiBqYWRSWCOKWS%2F9LbgABSxLILADJlBYUViwgEQbsEBEWRshISBFsMBQWLDARBshWVktuAAGLCAgRWlEsAFgICBFfWkYRLABYC24AAcsuAAGKi24AAgsSyCwAyZTWLBAG7AAWYqKILADJlNYIyGwgIqKG4ojWSCwAyZTWCMhuADAioobiiNZILADJlNYIyG4AQCKihuKI1kgsAMmU1gjIbgBQIqKG4ojWSC4AAMmU1iwAyVFuAGAUFgjIbgBgCMhG7ADJUUjISMhWRshWUQtuAAJLEtTWEVEGyEhWS0AsAArALIBAQIrAbICAgIrAbcCfWNROiMACCu3A3NjUTojAAgrALcBinFROiYACCsAsgQIByuwACBFfWkYREuwYFJYsAEbsABZsAGOAAAUACgALAAwAAAADP8zAAwB5gAMAgYADAI%2BAAwCfgAMApAADALIAAwAAAAHAFoAAwABBAkAAQAqAAAAAwABBAkAAgAOACoAAwABBAkAAwBIADgAAwABBAkABAAqAAAAAwABBAkABQCCAIAAAwABBAkABgAmAQIAAwABBAkADgBIASgAUwBvAHUAcgBjAGUAIABTAGEAbgBzACAAUAByAG8AIABMAGkAZwBoAHQAUgBlAGcAdQBsAGEAcgAxAC4AMAA1ADAAOwBBAEQAQgBFADsAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAEwAaQBnAGgAdAA7AEEARABPAEIARQBWAGUAcgBzAGkAbwBuACAAMQAuADAANQAwADsAUABTACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMAA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOQAwADAAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAEwAaQBnAGgAdABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBkAG8AYgBlAC4AYwBvAG0ALwB0AHkAcABlAC8AbABlAGcAYQBsAC4AaAB0AG0AbAAAAAIAAAAAAAD%2FtQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAA8QAAAQIBAwADACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0ArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgBmANMA0ADRAK8AZwCRALAA1gDUANUAaADrAOkA7QBqAGkAawBtAGwAbgCgAG8AcQBwAHIAcwB1AHQAdgB3ANcAeAB6AHkAewB9AHwAoQCxAIkAfwB%2BAIAAgQDsALoA6gDuAQQBBQAJABMAFAAVABYAFwAYABkAGgAbABwAEQAPAB0AHgAEAKMAIgCiAAoABQC2ALcAtAC1AMQAxQC%2BAL8AqQCqABABBgCyALMAwwCHAEIACwAMAD4AQABeAGAAEgBfAD8A6AANAIYAiACLAIoAIwAGAQcBCAEJAQoBCwEMAQ0BDgEPAJ0AngEQAREAgwC9AAcAhQCWARIAhAC8ARMACAD1APQA9gAOAO8A8AC4ACAAHwAhAJMAQQBhAKQBFABDAI0A2ADZAI4A2gDdAN4BFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElBE5VTEwCQ1IDZl9mA2ZfdAd1bmkwMEFECG9uZS5zdXBzCHR3by5zdXBzCnRocmVlLnN1cHMJZm91ci5zdXBzCXplcm8uZG5vbQhvbmUuZG5vbQh0d28uZG5vbQp0aHJlZS5kbm9tCWZvdXIuZG5vbQZhLnN1cHMGby5zdXBzBEV1cm8HdW5pMjIxNQd1bmkwMEI1B3VuaTAzMDALdW5pMDMwMC5jYXAHdW5pMDMwMQt1bmkwMzAxLmNhcAd1bmkwMzAyC3VuaTAzMDIuY2FwB3VuaTAzMDMLdW5pMDMwMy5jYXAHdW5pMDMwNAd1bmkwMzA4C3VuaTAzMDguY2FwB3VuaTAzMEELdW5pMDMwQS5jYXAHdW5pMDMyNwt1bmkwMzI3LmNhcAd1bmkwMEEwBWkudHJrAAAAAAAAAf%2F%2FAAIAAQAAAAwAAAAAAAAAAgAIAAQANwABAD4APgABAE4ATwABAGcAZwABAG4AbwABAHgAeAABAHkAegACANoA2gABAAEAAAAKADAARAACREZMVAAObGF0bgAaAAQAAAAA%2F%2F8AAQAAAAQAAAAA%2F%2F8AAQABAAJrZXJuAA5rZXJuAA4AAAABAAAAAQAEAAIAAAACAAoBPAABACYABAAAAA4ARgBsAIIApAC6AMgA2gDoAPoBAAEKARgBHgEoAAEADgAJABMAGQAbADMANQBWAHAAiwCNAJ4ApwCpAMIACQAZAAoAG%2F%2FrADP%2F9QA1%2F%2BwAZQAVAGYAJwCe%2F%2FUAp%2F%2BvAK8AHQAFABv%2F6wA1%2F%2FUAnv%2F1AKf%2FpgCvACcACAAz%2F%2FgANf%2FzAGMABgBlACgAZgArAJ7%2F8ACn%2F8YArwA2AAUAM%2F%2F2ADX%2F9gCe%2F9gAq%2F%2F2AK8AFAADAKf%2F7ACr%2F%2FUArwA4AAQAG%2F%2F2AJ7%2F7ACr%2F%2BoArwA2AAMAp%2F%2B2AKn%2F2ACr%2F7UABAAz%2F%2FYANQAJAKn%2F7ACv%2F%2BgAAQAZ%2F%2BwAAgAZ%2F9cAG%2F%2FmAAMAGf%2FsABv%2F7AA1%2F%2BwAAQDwACQAAgAZ%2F8YAM%2F%2FsAAIAf%2F%2F3AIH%2F9wACFIwABAAAFN4WLAA5AC4AAP%2Fc%2F6D%2F2%2F%2Fc%2F7IAJgBO%2F%2FcAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9v%2FiAAAAJgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8MAAAAA%2F9cAAAAAAAAAAAAAAAD%2F6%2F%2Fr%2F9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Frv%2Fh%2F%2BH%2FvAAAAEMAAAAAAAAAAP%2FS%2F%2BwAAP%2Fr%2F%2Bj%2F0v%2FzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FYAJAAAAAAAAAAA%2F9gAAAAAAAD%2F6wAA%2F9f%2FsAAkABH%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9j%2F7wAA%2F%2FUAAAAAAAD%2F9f%2FYAAAAAAAA%2F%2FX%2F9gAA%2F%2FYAAAAAAAD%2F9f%2F3%2F5z%2F2P%2Fr%2F7kAAAAAAAAAAP%2F1AAr%2F7P%2FY%2F9P%2F9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6wAAAAD%2F9QAAAAD%2F9v%2F1AAAAAAAA%2F%2FUAAAAAAAAAAAAA%2F%2FEAAP%2F2AAD%2F4gAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F1%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fr%2F%2FUAAAAA%2F%2BwAAP%2F2%2F%2FUAAAAAAAD%2F6%2F%2F2%2F%2BgAAAAAAAD%2F9gAA%2F%2FX%2F9gAAAAD%2F2AAUAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FUAAP%2Fs%2F%2FUAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BEAAAAAABQAAAAAAAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9v%2F1%2F%2Fb%2F9gAA%2F%2Fb%2F9v%2F1AAAAAP%2F2%2F%2FYAAP%2FtAAAAAAAAAAAAAP%2Fs%2F%2FH%2F9QAA%2F9gAEwAAAAAAAAAA%2F%2FcAAAAA%2F%2FUAAP%2F1%2F%2Fb%2F7%2F%2F2AAAAAP%2F1AAAAAAAAAAAAAP%2BI%2F%2Bj%2Fyf%2B6AAAAAP%2Fh%2F%2Bb%2FwwAAAAj%2F7QAA%2F%2BwAAP%2F1%2F%2FUAAAAA%2F%2FD%2F9v90%2F7D%2FsP%2BwAAAAAAAAAAD%2FtQAA%2F%2Bz%2Fxf%2FD%2F%2BYAAP%2FE%2F9gAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAP%2F3%2F%2BwAAAAAAAAAAAAAAAD%2F9gAA%2F%2BwAAAAAAAAAAP%2FhAAAAAAAA%2F9gAAAAAAAn%2F7AAAAAAAAP%2F2%2F%2FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAD%2F9f%2F2AAAAAAAAAAAAAP%2F2%2F%2FL%2F9gAA%2F%2FYAAP%2F2%2F%2BsAAAAAAAD%2F9gAA%2F%2FYAFAAAAAAAAAAA%2F%2FX%2F9gAAAAAAAAAA%2F%2FX%2F1%2F%2FiAAAAAP%2F1%2F%2FUAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9QAAAAAAAAAAAAD%2F9QAAAAAAAP%2FrAAD%2F9QAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAA%2F%2FX%2FsgAA%2F9j%2F2gAA%2F5z%2F2P%2FR%2F8T%2F6%2F%2By%2F%2Bv%2FxP9%2FAAD%2F6%2F%2FPAAAAAP%2FDABT%2FmwAAAAAAAAAA%2F%2BwAAAAAAAD%2F2v%2FR%2F7D%2F1v%2FP%2F8b%2Frv%2FYAAAAAAAAAAAAAAAAAAD%2F9f%2F2AAAAAAAAAAD%2F9v%2Fr%2F%2FYAAAAAAAAAAAAA%2F9YAAAAAAAAAAAAAAAAAAP%2FXAAAAAAAA%2F%2Fb%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B4AAAAAAAAAAP%2FhAAD%2F9%2F%2F3%2F%2Ff%2F7QAAAAD%2FtAAAAAAAAAAAAAAAAAAv%2F9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FYAAAAA%2F%2Fb%2F9gAAAAAAAAAA%2F%2FX%2F9gAAAAD%2FxAAA%2F%2Bv%2F9QAR%2F7H%2F9f%2Fx%2F%2BP%2F9f%2FCAAD%2F3%2F%2BcAAD%2F9f%2FhAAAAAP%2FYACb%2FsgAAAAAAAAAAAAAAAAAAAAD%2F9f%2Fh%2F8T%2F1P%2FY%2F9%2F%2F1v%2Fi%2F%2B4AAAAAAAAAAP%2F2%2F%2Ff%2F9f%2FxAAD%2F7f%2FtAAAAAP%2F3%2F%2BL%2F9v%2Fs%2F%2B3%2F7P%2Fm%2F9oAAP%2F1%2F%2BQAAAAA%2F8QAFAAAAAAAAAAA%2F%2FcAAAAAAAAAAP%2FtAAD%2F2P%2FYAAAAAAAAAAAAAAAAAAAAAP%2FrAAAAAP%2FrAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FEAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAA%2F%2Bv%2F9gAAAAkACQAAAAAAAAAAAAAAAP%2F2AAD%2F7wAAAAAAAAAAAAAAAP%2F1AB0AAAAAAAAAAP%2F1AAAAAAAAAAAACQAP%2F%2FUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Bc%2F%2FD%2F4f%2BwAAAAFP%2Fx%2F%2Bz%2FrwAAAAAAAAAAAAAAAAAA%2F%2FUAAAAA%2F%2BEAAP%2BHAAAAAAAAAAAAAAAAAAD%2FxAAAAAD%2Fs%2F%2FD%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BsAAP%2F2%2F%2Bz%2F9gAAAAwADP%2F2AAAAAP%2FsAAAAAP%2FxAAAAAP%2FsAAD%2F9QAA%2F9j%2F9QAAAAcAAAAAAAAAAP%2F2AAAAAAAAAAAADAAAAAkABwAAAAAABQAAAAAAAAAAAAAAMQAAADEAMf%2Fx%2F%2FYAAAAAACj%2F1wAAAAAAAAAA%2F%2BwAAP%2F2AAAAAAAA%2F%2BoAAABP%2F%2BwAWv%2FsABQAAAAAADMAJgAdACgAKAASAAD%2F9QAAAAAAAP%2F1AAAAAAA5AAAAAP%2FsAAAAAP%2F1AAAAIAAAAAAAAAAAAAAAAAAAAAD%2F8QAA%2F%2FUAAAAAAAAAAP%2FYAAD%2F9QAUADwAAAAAAAAAAAAA%2F%2BIAAAAAAAAAAAAAAAAAAAAA%2F%2FUAAAAAABQAAAAA%2F%2FoAAAAA%2F%2Fn%2F9v%2F2AAAAAP%2FsABQAAAAAAAAAAP%2F2AAD%2F9AAAAAD%2F9f%2F1%2F%2BwAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bv%2F7AAAAAAAAAAAAAAAAAAAAAD%2F6wAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F2AAAAAAAAAAAAAAAAAAA%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FIAAAAAP%2FYAAAAAAAAAAD%2F7P%2F2AAAAAAAAAAD%2F8QAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAD%2F7gAAAAAAAP%2FsAAD%2F9AAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH%2F2gAAAAAAAAAA%2F8X%2F2AAAAAAAAP%2FQ%2F%2FX%2F2gAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8b%2FdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F2%2F%2FcAEgAbAAD%2F2f%2FuAAD%2F9gAA%2F%2BkAAP%2F2%2F9QAAAAAAAAAAAAS%2F%2B0AT%2F%2FYAAAAAAAAAAAAAAAAAAAAKAAbAAD%2F6%2F%2FsAAD%2F9v%2F2AAAAAAAAAAAAAP%2FrAAAAAP%2FsAAAAAAAAAAD%2F%2FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FDAAAAAAAAAAAAAAAAAAD%2F9gAA%2F%2F0AAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FUAAAAAAAD%2F9gAAAAAAAAAAABQAAAAAAAAAAP%2FrAAD%2F9gAAAAAAAP%2F3AAAAAP%2FsACgAFAAAAAAAAAAAAAD%2F7AAAAAAAAAAA%2F%2Bz%2F6wAAAAAAAAAAABQAAAAAAAD%2F7AAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F4gAAAAAAAAAAAAAAAAAA%2F%2FUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FrAAAAAP%2F9AAD%2F9gAAAAAAAP%2FxAAAAAAAAAAD%2F9gAAAAD%2F4gAAAAAAAP%2F1AAAAAAA2%2F%2FUAAAAAAAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAA%2F%2FQAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAP%2F2AAAAAAAA%2F%2BwAAAAAAAAAAP%2FsAAAAAP%2FYAAAAAAAAAAAAAAAAADj%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6wAAAAAAAAAAAAD%2F4wAAAAAAAP%2F3AAAAAAAAAAAAAAAAAAAAAAAA%2F%2BQAAP%2F2AAAAAAAA%2F%2FYAAAAA%2F%2FUAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAv%2F6wAA%2F%2Fb%2F9gAA%2F8T%2F3P%2Fw%2F%2BL%2F9v%2FhAAD%2F9f9zAAD%2F9v%2FxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7P%2Fs%2F%2FD%2F7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BsAAAAAAAAAAAAAAAAAAP%2FaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F4gAAAAD%2F9v%2FZAAAAAAAAAAD%2FnP%2FO%2F%2Fb%2FogAA%2F9AAAP%2Fn%2F2sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3P%2FsAAD%2F9v%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAD%2F6gAA%2F%2Fj%2F%2BAAA%2F8b%2F9f%2Ft%2F%2B7%2F9v%2FxAAD%2F8%2F%2By%2F%2FwAAP%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B7%2F6v%2Fs%2F%2Ff%2F5f%2FyAAAAAAAAAAD%2F7P%2F2AAAAAAAAAAD%2F9f%2F2AAAAAAAI%2F%2FUAAP%2F0%2F%2Fb%2F9gAAAAAAAP%2F2%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6v%2F1AAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9wAAAAA%2F8QAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fs%2F%2BwAAAAAAAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9f%2F2%2F9sAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F2%2F8L%2F3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FYAAD%2F9P%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9AAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9gAAP%2F2%2F9QAAAAAAAAAAAAAAAAAAP%2Fi%2F%2BsAAAAAAAAAAP%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fq%2F%2FUAAAAAAAAAAP%2FrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2BY%2F9QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F2gAAAAAAAAAA%2F4j%2F0wAAAAAAAP%2Fh%2F%2B3%2F2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8cAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAA%2F%2FYAAAAAAAD%2F7P%2F2AAAAAAAA%2F%2BwAAAAA%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FrAAAAAAAAAAAAAP%2FaAAAAAP%2F8AAAAAAAA%2F%2FUAAAAAAAAAAAAA%2F%2Fb%2F9gAA%2F%2FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F1%2F%2BsAAAAAAAD%2F7AAAAAAAAgANAAQAIAAAACIAJQAdACgAKAAhACoAYgAiAGcAdgBbAHgAegBrAIYAkwBuAJYAngB8AKEAoQCFAKMAowCGAKUApQCHAKcApwCIAKkAqQCJAAEABACkAAYABwAIAAwAJgAnAAkAKAApACoACgALACgAKAAMACsADAANAA4ADwAQAC0AEQAuABIAEwAUAB0AFQAAABgAGQAaABwAAAAAABsAAAAcABwAHQAdACIAHwAgACEAIgA3ACMAOAAkACUABgAGAAYABgAGAAYAJgAIACYAJgAmACYAKQApACkAKQAoAAwADAAMAAwADAAMACYAEAAQABAAEAASAAwALAAUABQAFAAUABQAFAAYABUAGAAYABgAGAAAAAAAAAAAACIAHAAdAB0AHQAdAB0AHQAYADEAIgAiACIAIgAkACQAAAAdABkAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAXABYAFgABAAIANAAEADUANQAeADYAHgA2AAAAAAAyADMAMgAzADAAMAAwADAAAwAAAAAALwAAAC8AAAAvAAAABQACAEgABAAEAAwABgAGAA8ACgAKAA8ADQANABMAEgASAA8AFAAUAA8AFgAWAA0AFwAXAAIAGAAYAAMAGQAZAB8AGgAaAAQAGwAbACAAHAAcAAUAHQAdAA4AHgAeABAAIAAiABIAIwAjABEAJAAkAAYAJgAmABQAJwAnAAcAKgArACgALAAsABIALQAtACgALgAuABIALwAvACgAMAAwACkAMQAxABUAMgAyABYAMwAzACQANAA0AAgANQA1ACUANgA2AAkANwA3ACoAOAA9AAwAPwA%2FAA8ASQBPAA8AUABTAAMAVABUAAUAVQBVAAEAVwBdABAAXgBiABIAYwBmABQAZwBoACgAaQBvABIAcQB0ABYAdQB2AAkAeQB6ABEAhgCHAAsAiACJACwAigCKABwAiwCLAB0AjACMACEAjQCNAB4AjgCPACIAkACQACMAkQCRAAoAkgCSACMAkwCTAAoAlgCWACcAlwCXACsAmACYACcAmQCZACsAmgCdACYAngCeABkAogCiAC0ApACkAC0ApgCmAC0ApwCnABsAqQCpABgAqwCrABcArwCvABoA8ADwABQAAQAAAAoAYACeAAJERkxUAA5sYXRuABoABAAAAAD%2F%2FwABAAAAFgADQVpFIAAeQ1JUIAAoVFJLIAAyAAD%2F%2FwABAAEAAP%2F%2FAAIAAgAFAAD%2F%2FwACAAMABgAA%2F%2F8AAgAEAAcACGxpZ2EAMmxpZ2EAMmxpZ2EAMmxpZ2EAMmxpZ2EAMmxvY2wAOGxvY2wAOGxvY2wAOAAAAAEAAQAAAAEAAAACAAYAGgABAAAAAQAIAAEABgDKAAEAAQAmAAQAAAABAAgAAQAaAAEACAACAAYADAB5AAIAIwB6AAIAMQABAAEAIw%3D%3D%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Sans%20Pro%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20400%3B%0Asrc%3A%20url%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAARAQAABAAQR0RFRgNEA3IAAG5oAAAAQEdQT1PUveN5AABuqAAAGXBHU1VC8WfWVwAAiBgAAADgT1MvMlq0lFsAAGUsAAAAYGNtYXDzMPm1AABljAAAAeZjdnQgDZkA%2BgAAaTQAAAAoZnBnbQZZnDcAAGd0AAABc2dhc3D%2F%2FwADAABuYAAAAAhnbHlmIymUiAAAARwAAF3saGVhZP4Us%2BIAAGEMAAAANmhoZWEHowOhAABlCAAAACRobXR4pqgmOgAAYUQAAAPEbG9jYTiIUNQAAF8oAAAB5G1heHADCwJAAABfCAAAACBuYW1lIro8MAAAaVwAAAHGcG9zdGxQSG8AAGskAAADOXByZXCWBPrrAABo6AAAAEsABQBZAAACNQKUAAMABgAJAA8AFQBnALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAUAAgAAERI5ugAGAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugANAAIAABESObgAABC5ABIAAfQwMRMhESETJxEhEQcTLwEjDwETPwEjHwFZAdz%2BJMB%2FAVh%2BUkk0BDZKhDFC60IyApT9bAFU6P4yAc7o%2FuaEZ2eEAUled3deAAAAAAIAAwAAAh0CkAAJABEAVAC4AABFWLgADi8buQAOABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4ABEvG7kAEQAEPlm6AAUADAAOERI5ugALAAwADhESObgACy%2B5AAkAAfQwMQEnLgEnIw4BDwEXIwcjEzMTIwFxHxIgEAQPIBIf2u8%2FVd5e3lkBC2Q3bTk5bTdkQ8gCkP1wAAAAAAMAWgAAAiQCkAATABwAJQBbALgAAEVYuAAALxu5AAAAED5ZuAAARVi4ABMvG7kAEwAEPlm6ACMAAAATERI5uAAjL7oACgAjABQREjm4AAAQuQAbAAH0uAAjELkAHAAB9LgAExC5ACUAAfQwMRMzMh4CFRQGBxUeARUUDgIrARMyNjU0JisBFRMyNjU0JisBFVrDMlM7ITg6SFAkQlw30bRVSU1NZXJVXlxXcgKQEiY9KzFPDwQLTkQwSDAYAXg6NzYv1v7KP0M9OfgAAAEANP%2F0AhsCnAAhADkAuAAARVi4AAUvG7kABQAQPlm4AABFWLgAHS8buQAdAAQ%2BWbgABRC5AAwAAfS4AB0QuQAWAAH0MDETND4CMzIWFwcuASMiDgIVFB4CMzI2NxcOASMiLgI0LE5rPzxaHS8aPyovTDYeHTRLLzBHIC8nYj8%2BaU0rAUhPflgvMSA1HCElRWI9PmNGJiYjMy0yLld%2FAAACAFoAAAI0ApAACgATADUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACi8buQAKAAQ%2BWbkACwAB9LgAABC5ABEAAfQwMRMzMhYVFA4CKwE3MjY1NCYrARFapJieKE5ySqiec3Nzc0sCkKidTntVLUSKfX2E%2FfgAAAABAFoAAAHeApAACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQADAAH0ugAHAAAACxESObgABy%2B5AAUAAfS4AAsQuQAIAAH0MDETIRUhFTMVIxUhFSFaAXr%2B2fn5ATH%2BfAKQRs5H7kcAAAAAAQBaAAAB1AKQAAkAQwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAJLxu5AAkABD5ZuAAAELkAAwAB9LoABwAAAAkREjm4AAcvuQAFAAH0MDETIRUhFTMVIxEjWgF6%2Ftn6%2BlMCkEbeRv7aAAAAAQA0%2F%2FQCJgKcACUATQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAhLxu5ACEABD5ZuAAFELkADAAB9LgAIRC5ABYAAfS6AB0ABQAhERI5uAAdL7kAGwAB9DAxEzQ%2BAjMyFhcHLgEjIg4CFRQeAjMyNjc1IzUzEQ4BIyIuAjQtUW5CRFsdLxlBMjJQOB8dN1E1Iz8Ui9cgaUJBbE4sAUhPflgvMx41GiMlRWI9PmNGJhUSq0X%2B7CErLld%2FAAABAFoAAAIyApAACwBJALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm6AAkAAAALERI5uAAJL7kAAwAB9LgAABC4AATQuAALELgAB9AwMRMzESERMxEjESERI1pTATFUVP7PUwKQ%2Fu0BE%2F1wATX%2BywABAFoAAACtApAAAwAlALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAMvG7kAAwAEPlkwMRMzESNaU1MCkP1wAAAAAQAf%2F%2FQBiQKQABAAKwC4AABFWLgABy8buQAHABA%2BWbgAAEVYuAAOLxu5AA4ABD5ZuQADAAH0MDE3HgEzMjY1ETMRFA4CIyInWxY4IzU0VBUrRTB7OocnI0FLAcf%2BMSpLOCBpAAEAWgAAAj8CkAAMAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABC8buQAEABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIAAAAMERI5ugAJAAQACBESOTAxEzMRMwEzBxMjAwcVI1pTAwERXs3tXcRxUwKQ%2FrcBSfr%2BagFVhdAAAAEAWgAAAcwCkAAFACsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABS8buQAFAAQ%2BWbkAAgAB9DAxEzMRIRUhWlMBH%2F6OApD9t0cAAAABAFoAAAJ9ApAAGQBvALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAYvG7kABgAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAJLxu5AAkABD5ZugADAAYACRESOboADgAGAAkREjm6ABEAGQAGERI5ugAUAAAAGRESOTAxEzMTFzM3EzMRIxE0NjcjBwMjAycjHgEVESNaYn8wBC5%2BYk8HBAQ1fi9%2FNAQDCE0CkP6ghoYBYP1wAWksaiyS%2FqkBV5Isaiz%2BlwAAAAEAWgAAAi0CkAATAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACC8buQAIABA%2BWbgAAEVYuAATLxu5ABMABD5ZuAAARVi4AAsvG7kACwAEPlm6AAQACwAIERI5ugAOAAAAExESOTAxEzMTFzMuATURMxEjAycjHgEVESNaVu1HBAMHT1buRwQEB08CkP5kiDJrNAFT%2FXABnYcyZzT%2BqQACADT%2F9AJlApwAEwAnADUAuAAARVi4AAovG7kACgAQPlm4AABFWLgAAC8buQAAAAQ%2BWbkAFAAB9LgAChC5AB4AAfQwMQUiLgI1ND4CMzIeAhUUDgInMj4CNTQuAiMiDgIVFB4CAUw%2BZ0opKUpnPj5nSykpS2c%2BLEczHBwzRywsRzMcHDNHDDBZf09PfVcuL1d9Tk9%2FWTBJJkdjPj1iRCUlRGI9PmNHJgACAFoAAAIVApAADgAXAEMAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADi8buQAOAAQ%2BWboADAAAAA4REjm4AAwvuQAPAAH0uAAAELkAFgAB9DAxEzMyHgIVFA4CKwERIxMyNjU0JisBEVrJNlo%2FIyNAWTZ2U79WU1RVbAKQFC1KNjRMMhn%2B%2FAFIQUZHN%2F77AAACADT%2FXAJzApwAEwA0AEsAuAAARVi4ACQvG7kAJAAQPlm4AABFWLgAGi8buQAaAAQ%2BWbsAMQABABcABCu4ABoQuQAFAAH0uAAkELkADwAB9LgAGhC4AC7QMDETFB4CMzI%2BAjU0LgIjIg4CAQ4BIyImJy4DNTQ%2BAjMyHgIVFA4CBx4BMzI2N4ocM0csLEczHBwzRywsRzMcAekPMh1beh02WD8iKUpnPj5nSykhPVY0F1Q2FiEOAUs%2FZUgmJkhlPz1iRCUlRGL94wUKV0QHNlh3SE99Vy4vV31OR3VXNwksKgYEAAACAFoAAAIgApAACAAYAFQAuAAARVi4AA4vG7kADgAQPlm4AABFWLgADC8buQAMAAQ%2BWbgAAEVYuAAJLxu5AAkABD5ZuwABAAEACgAEK7gADhC5AAgAAfS6ABcAAQAKERI5MDETMzI2NTQmKwEBAyMRIxEzMh4CFRQGBxOtbk1SUk1uARWed1PNMlU9IlBDpgFZP0BBNP2zARX%2B6wKQEyxGM01cEf7iAAABACr%2F9AHvApwAMwBJALgAAEVYuAAWLxu5ABYAED5ZuAAARVi4ADAvG7kAMAAEPlm5AAMAAfS6AAsAFgAwERI5uAAWELkAHQAB9LoAJQAwABYREjkwMTceATMyNjU0LgIvAS4DNTQ%2BAjMyFhcHLgEjIgYVFB4CHwEeAxUUDgIjIiYnXCNfM0FIER0oF14XMCYYHzdLLTtkIy0eSS43QxMgJhRdHDIkFR86UjRFdiuPJS07MBkjGRQLKQocKDckJUAvGi0kNh0hMy0YIRkTCCgMHyk3JCdEMx00LQAAAQAcAAAB%2FAKQAAcAMwC4AABFWLgAAi8buQACABA%2BWbgAAEVYuAAHLxu5AAcABD5ZuAACELkAAAAB9LgABdAwMRMjNSEVIxEj4sYB4MZUAkpGRv22AAAAAAEAV%2F%2F0Ai4CkAAZADwAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADS8buQANABA%2BWbgAAEVYuAAULxu5ABQABD5ZuQAHAAH0MDETMxEUHgIzMj4CNREzERQOAiMiLgI1V1MYKTggITgqGFAkP1YyMlc%2FJAKQ%2Fn07UDAVFTBQOwGD%2Fn9PbEMdHUNsTwAAAQAAAAACAwKQAA0AQAC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAKLxu5AAoAED5ZuAAARVi4AA0vG7kADQAEPlm6AAUAAAANERI5MDERMxMeARczPgE3EzMDI1lpEhsTBBIcEWlV0GECkP6eO2Q6OmQ7AWL9cAAAAQAXAAAC%2BgKQACEAdgC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAKLxu5AAoAED5ZuAAARVi4ABQvG7kAFAAQPlm4AABFWLgAIS8buQAhAAQ%2BWbgAAEVYuAAXLxu5ABcABD5ZugAFAAAAIRESOboADwAUABcREjm6ABwAIQAKERI5MDETMxMeARczPgE3EzMTHgEXMz4BNxMzAyMDLgEnIw4BBwMjF1ZFCRQJBAsYC1tMWwwYDAQJEgpFUIhkYwkPCAQIEQhhYwKQ%2Fps2aDY2aTUBZf6bNGo2Nmk1AWX9cAGLJkkmJkkm%2FnUAAAABAA8AAAHyApAAGQBbALgAAEVYuAABLxu5AAEAED5ZuAAARVi4AAsvG7kACwAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAPLxu5AA8ABD5ZugAGAAEAGRESOboAEwAPAAsREjkwMRMDMxceARczPgE%2FATMDEyMnLgEnIw4BDwEjzrJcWQ0XDwQOFQxXWLO%2FXGANGxAEDhoMX1gBUwE9qBcrHR0rF6j%2Bv%2F6xsRgzHh4zGLEAAAAAAf%2F%2FAAAB3QKQAA8AQAC4AABFWLgAAS8buQABABA%2BWbgAAEVYuAALLxu5AAsAED5ZuAAARVi4AA8vG7kADwAEPlm6AAYAAQAPERI5MDE3AzMXHgEXMz4BPwEzAxUjxMVZVRAeEQQRIg9UV8VU%2FgGSuSRGJSVGJLn%2Bbv4AAAEALQAAAfECkAAJAD0AuAAARVi4AAMvG7kAAwAQPlm4AABFWLgACC8buQAIAAQ%2BWbkABgAB9LgAANC4AAMQuQABAAH0uAAF0DAxNwEhNSEVASEVIS0BWf7GAaL%2BpgFd%2FjwyAhhGMf3oRwAAAAIAOv%2F0AbcB8gAbACcAdgC4AABFWLgADy8buQAPAAg%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAARVi4ABQvG7kAFAAEPlm6AAMADwAZERI5uAADL7gADxC5AAgAAfS6ABUAFAAPERI5uAAZELkAHwAB9LgAFRC5ACIAAfS4AAMQuQAjAAH0MDE3NDY3NC4CIyIGByc%2BATMyFhURIycjDgEjIiY3FBYzMjY3NQ4DOo%2BcCRcmHitJHSEiYjtZUEQHAiNRLT5RUTEkIz8jPVQzFn5QVREXLCIVIBQ5FiltW%2F7WOh0pSEgqJCEghwgWHicAAgBS%2F%2FQB%2BwLIABYAJgCDALgAAEVYuAAALxu5AAAAEj5ZuAAARVi4AAYvG7kABgAIPlm4AABFWLgAEC8buQAQAAQ%2BWbgAAEVYuAAWLxu5ABYABD5ZugADAAYAEBESOboAEwAQAAYREjm4ABMQuQAXAAH0uAAQELkAGgAB9LgABhC5ACQAAfS4AAMQuQAmAAH0MDETMxUHPgEzMh4CFRQOAiMiJicjByM3HgEzMj4CNTQuAiMiB1JSAiFOKS9IMRkiOkwqIkkgAwdCUiA%2FGB4zJRUOHzEiO0cCyMJYHScjQVs4PmJEIx8dMGwcFxsxSC0oQi8aQgAAAAABAC7%2F9AGwAfIAIQA5ALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4AB0vG7kAHQAEPlm4AAUQuQAMAAH0uAAdELkAFgAB9DAxNzQ%2BAjMyFhcHLgEjIg4CFRQeAjMyNjcXDgEjIi4CLiZAVS8wRRkpFi8dITgoFxYnOCEjORYlIVEsMFQ9I%2FI9X0IiIxc1ExgbMkUqKkQxGx0UNh0iIkFfAAAAAgAv%2F%2FQB2QLIABQAIwCDALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4AAovG7kACgASPlm4AABFWLgAEi8buQASAAQ%2BWbgAAEVYuAANLxu5AA0ABD5ZugAIABIABRESOboADgAFABIREjm4ABIQuQAYAAH0uAAOELkAGwAB9LgACBC5ABwAAfS4AAUQuQAfAAH0MDE3ND4CMzIWFyc1MxEjJyMOASMiJjcUFjMyNjc1LgEjIg4CLyM6TCoqPiAEU0QHAx1LK1xtVUZAIjweHzkeHTMmFvI7X0IkHhpTu%2F04ORwphHtYYiEi%2FhwXGzFEAAAAAgAu%2F%2FQBygHyABsAJABRALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4ABcvG7kAFwAEPlm6AAwABQAXERI5uAAML7gAFxC5ABAAAfS4AAUQuQAfAAH0uAAMELkAJAAB9DAxNzQ%2BAjMyHgIVFAchHgEzMjY3Fw4BIyIuAiU0JiMiDgIHLiU9TiouSTEaA%2F64BVdGIzsbHSBOMjFVPyQBVD85Gi8mGQTyPF9CIyA8VDQbEk9cFRE2FB4jQV5hS08VJzklAAAAAAEAHgAAAT8C1AAVAFYAuAAARVi4AAUvG7kABQAIPlm4AABFWLgAEi8buQASABI%2BWbgAAEVYuAAJLxu5AAkABD5ZuAASELkAAgAB9LgABRC5AAgAAfS4AAvQuAAFELgADtAwMQEmIyIdATMVIxEjESM1NzU0NjMyFhcBLRscRGdnUkJCRUkXKREChQxeTUP%2BXQGjPgVNS1YJBwAAAAMALf8gAewB8gARAEkAWQBtALgAAEVYuAAlLxu5ACUACD5ZuAAARVi4AEUvG7kARQAGPlm5AAMAAfS6ADwAJQBFERI5uAA8L7kACwAB9LgAJRC4ACnQuAApL7kAKgAB9LgAPBC4ADPQuAAzL7kASgAB9LgAJRC5AFIAAfQwMRcUFjMyPgI1NCYrASImJw4BBzQ2NzUuATU0Njc1LgE1ND4CMzIWFzMVIx4BFRQOAiMiJicOARUUFjsBMhYVFA4CIyIuAhMyPgI1NCYjIgYVFB4CdUtCIzkoFjIwVA4hEBoYSCYhEhkiExgnHTJDJRQjDqlkERccMEElEiYRDRIkMl5VVSJAWzktSjUdyRUlHRA8Kys8EB0lUicuERskEyIaAwUTKiAfOBcECycdHy4NBBRDLChALRgHBT8RNB8nPysYCQgLGxQXHjc9Ij0uGxEiMAFOEB4rGzY7OzYbKx4QAAABAFIAAAHXAsgAFABYALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAASPlm4AABFWLgAFC8buQAUAAQ%2BWboAAwAGABQREjm4AAvQuAAGELkADwAB9LgAAxC5ABIAAfQwMRMzFQc%2BATMyFhURIxE0JiMiBgcRI1JSAyNMM01HUiwwJjolUgLIwmQhL2Be%2FswBKUU9JiX%2BoAACAEMAAAC1ArQACwAPAC0AuAAARVi4AAwvG7kADAAIPlm4AABFWLgADi8buQAOAAQ%2BWboABgAAAAMrMDETIiY1NDYzMhYVFAYHMxEjfBghIRgYISFCUlICSh4XGB0dGBceZP4aAAAAAAL%2F2P8nALUCtAAPABsANwC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAFLxu5AAUABj5ZugAWABAAAyu4AAUQuQAMAAH0MDETMxEUBiMiJic3HgEzMjY1EyImNTQ2MzIWFRQGU1I8SRckDREJGA0kGCoYISEYFyEhAeb940pYCAU%2BAwUyLQKBHhcYHR0YFx4AAAEAUgAAAeYCyAAMAFsAuAAARVi4AAQvG7kABAAIPlm4AABFWLgAAC8buQAAABI%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIAAAAMERI5ugAJAAAACBESOTAxEzMRMxMzBxMjJwcVI1JRA89bo7lajltRAsj%2BHgEAw%2F7d6mqAAAAAAAEAUv%2F0ANgCyAAPACsAuAAARVi4AAAvG7kAAAASPlm4AABFWLgADC8buQAMAAQ%2BWbkABQAB9DAxEzMRFBYzOgE3Fw4BIyImNVJSDgkEBwcLCBYRLygCyP2UFBACPgQEODYAAAABAFIAAALxAfIAIQCYALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAIS8buQAhAAQ%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAARVi4ABEvG7kAEQAEPlm6AAIAAAAhERI5ugAJAAAAIRESObgABhC4AAzQuQAVAAH0uAAJELkAFwAB9LgABhC5AB0AAfS4AAIQuQAfAAH0MDETMxczPgEzMhYXPgEzMhYVESMRNCYjIgcRIxE0JiMiBxEjUkQHAyBLLDg%2FDyZNLUtJUiwuN0NSLC83Q1IB5kYjLzEsKjNgXv7MASlFPUv%2BoAEpRT1L%2FqAAAAAAAQBSAAAB1wHyABQAZQC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAACD5ZuAAARVi4ABQvG7kAFAAEPlm4AABFWLgACy8buQALAAQ%2BWboAAgAAABQREjm4AAYQuQAPAAH0uAACELkAEgAB9DAxEzMXMz4BMzIWFREjETQmIyIGBxEjUkQHAyNNM01HUiwwJjolUgHmRiMvYF7%2BzAEpRT0mJf6gAAAAAAIALv%2F0AfAB8gATACcANQC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAPLxu5AA8ABD5ZuQAZAAH0uAAFELkAIwAB9DAxNzQ%2BAjMyHgIVFA4CIyIuAjcUHgIzMj4CNTQuAiMiDgIuJT5RLS1RPiUlPlEtLVE%2BJVUUJTQfHzQlFBQlNB8fNCUU8j1fQiIiQl89PF9BIiJBXzwqRDEbGzFEKipFMhsbMkUAAAIAUv8zAfsB8gAWACcAgwC4AABFWLgACS8buQAJAAg%2BWbgAAEVYuAADLxu5AAMACD5ZuAAARVi4AAIvG7kAAgAGPlm4AABFWLgAEy8buQATAAQ%2BWboABQAJABMREjm6ABYAEwAJERI5uAAWELkAFwAB9LgAExC5ABoAAfS4AAkQuQAkAAH0uAAFELkAJwAB9DAxFxUjETMXMz4BMzIeAhUUDgIjIiYnNx4BMzI%2BAjU0LgIjIgYHpFJEBwMhTysvSDAZIjpMKiJDIgIhPhgeMyUVDh8xIh8%2FJCmkArM4HCgjQVs5PmFEIx4aQBwXGzFILShCLxoiIAAAAgAv%2FzMB2QHyABQAIwB%2FALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4AAsvG7kACwAIPlm4AABFWLgADS8buQANAAY%2BWbgAAEVYuAASLxu5ABIABD5ZugAIAAUAEhESOboADwASAAUREjm5ABgAAfS4AA8QuQAbAAH0uAAIELkAHAAB9LgABRC5AB8AAfQwMTc0PgIzMhYXMzczESM1Nw4BIyImNxQWMzI2NzUuASMiDgIvIzpMKipAIQIIQlMEHUsqXG1VRkAiPB4fOR4dMyYW8jtfQiQdHS79Ta1WGyeEe1hiISL%2BHBcbMUQAAAABAFIAAAFeAfIAEQBSALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAES8buQARAAQ%2BWboAAgAAABEREjm4AAYQuAAM3LgAAhC5AA8AAfQwMRMzFzM%2BATMyFwcuASMiBgcRI1JEBwMZRyodFxAMFA8fQxlSAeZYLjYKSAQEMj7%2ByAABABz%2F9AGDAfIAMQBJALgAAEVYuAAVLxu5ABUACD5ZuAAARVi4AC4vG7kALgAEPlm5AAMAAfS6AAsALgAVERI5uAAVELkAHAAB9LoAJAAVAC4REjkwMTceATMyNjU0LgInLgM1ND4CMzIWFwcuASMiBhUUHgIXHgMVFA4CIyImJ0UgQywwMBQfKBQaNCkaFys%2BJy5NHCcZNiAuKxIeJxUaNSobFy1DKzReI24aICwgExwVEAgJFyEsHx0zJRUgFzQTGCocERkTDwgKFiEwIh40KBcmHQAAAAABABj%2F9AFFAm4AGQBFALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4ABQvG7kAFAAEPlm4AAYQuQAJAAH0uAAA0LgABhC4AAPQuAAUELkADQAB9DAxEyM1PwEzFTMVIxEUFjMyNjcXDgEjIi4CNWBITApFg4MhKg0eDBAULxcnNSEOAaM%2BBYiIQ%2F7yLTEIBT4HCxgqPCQAAQBL%2F%2FQBzgHmABQAZQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAJLxu5AAkACD5ZuAAARVi4ABEvG7kAEQAEPlm4AABFWLgADC8buQAMAAQ%2BWbgAERC5AAUAAfS6AA0ACQAMERI5uAANELkACAAB9DAxEzMRFBYzMjY3ETMRIycjDgEjIiY1S1MrMCY6I1JEBwMiSzNORwHm%2FtdFPScrAVn%2BGkwoMGBeAAAAAAEADAAAAccB5gANAEAAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAANLxu5AA0ABD5ZugAFAAAADRESOTAxEzMTHgEXMz4BNxMzAyMMVVwLFwsECxYLXFGsYAHm%2FuwkSCMjSCQBFP4aAAEAGAAAArYB5gAhAHYAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAAULxu5ABQACD5ZuAAARVi4ACEvG7kAIQAEPlm4AABFWLgAFy8buQAXAAQ%2BWboABQAhAAAREjm6AA8AFwAUERI5ugAcAAAAIBESOTAxEzMTHgEXMz4BNxMzEx4BFzM%2BATcTMwMjAy4BJyMOAQcDIxhUSAgOBwQIEAlLUEwJEQgECA4IR06CZEYJDwkECBAKRGAB5v7nI0IiIkMiARn%2B5yNCIiJCIwEZ%2FhoBBSNEJSVFI%2F78AAAAAQAOAAABsAHmABkAWwC4AABFWLgAAS8buQABAAg%2BWbgAAEVYuAALLxu5AAsACD5ZuAAARVi4ABkvG7kAGQAEPlm4AABFWLgADy8buQAPAAQ%2BWboABgALAA8REjm6ABQAAQAZERI5MDE3JzMXHgEXMz4BPwEzBxcjJy4BJyMOAQ8BI62TWUELGA0ECxYLO1aTnllHDRoOBA0YDEJW%2FuhrFCkUFCkUa%2FH1cRYsFRUrF3EAAAAAAQAM%2Fy8BxwHmAB0ARgC4AABFWLgACC8buQAIAAg%2BWbgAAEVYuAASLxu5ABIACD5ZuAAARVi4ABkvG7kAGQAGPlm5AAMAAfS6AA0ACAAZERI5MDEXHgEzMjY%2FAQMzEx4BFzM%2BATcTMwMOAyMiJic3MQgUCSo1DwvDVWMLGQsECxQKV1C3DSAsOCURHAwQhgIFOy0kAef%2B8yBHIiFIIAEN%2FfIkPi0aBQVBAAAAAAEAHwAAAY8B5gAJAD0AuAAARVi4AAMvG7kAAwAIPlm4AABFWLgACC8buQAIAAQ%2BWbkABgAB9LgAANC4AAMQuQABAAH0uAAF0DAxNwEjNSEVASEVIR8BAOQBTP8AAQj%2BkCwBd0Ms%2FolDAAAA%2F%2F8AAwAAAh0DMgImAAQAAAAHAOEBDwAA%2F%2F8AAwAAAh0DMgImAAQAAAAHAOMBDwAA%2F%2F8AAwAAAh0DMgImAAQAAAAHAOUBDwAA%2F%2F8AAwAAAh0DMwImAAQAAAAHAOcBDwAA%2F%2F8AAwAAAh0DLQImAAQAAAAHAOoBDwAA%2F%2F8AAwAAAh0DawImAAQAAAAHAOwBDwAAAAIACAAAAwUCkAAFABUAfAC4AABFWLgADS8buQANABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAgvG7kACAAEPlm6AAIADQAMERI5ugAJAA0ADBESObgACS%2B5AAUAAfS4AAgQuQAGAAH0uAANELkADwAB9LoAFAANAAgREjm4ABQvuQASAAH0MDEBESMGDwEFFSE1IwcjASEVIRUzFSMVAZEENTY9AiD%2BjM5jWAFYAZv%2B6ujoAQIBTGtrdrtHv78CkEbOR%2B7%2F%2FwA0%2FysCGwKcAiYABgAAAAcA7gFXAAD%2F%2FwBaAAAB3gMyAiYACAAAAAcA4QEcAAD%2F%2FwBaAAAB3gMyAiYACAAAAAcA4wEcAAD%2F%2FwBaAAAB3gMyAiYACAAAAAcA5QEcAAD%2F%2FwBaAAAB3gMtAiYACAAAAAcA6gEcAAD%2F%2FwAAAAAAtgMyAiYADAAAAAcA4QCDAAD%2F%2FwBQAAABBgMyAiYADAAAAAcA4wCDAAD%2F%2F%2F%2F7AAABCwMyAiYADAAAAAcA5QCDAAD%2F%2F%2F%2F8AAABCgMtAiYADAAAAAcA6gCDAAD%2F%2FwBaAAACLQMzAiYAEQAAAAcA5wFGAAD%2F%2FwA0%2F%2FQCZQMyAiYAEgAAAAcA4QFMAAD%2F%2FwA0%2F%2FQCZQMyAiYAEgAAAAcA4wFMAAD%2F%2FwA0%2F%2FQCZQMyAiYAEgAAAAcA5QFMAAD%2F%2FwA0%2F%2FQCZQMzAiYAEgAAAAcA5wFMAAD%2F%2FwA0%2F%2FQCZQMtAiYAEgAAAAcA6gFMAAAAAwAy%2F%2BICawKuAAsAFQAwAIUAuAAARVi4ACwvG7kALAAQPlm4AABFWLgAHi8buQAeAAQ%2BWboAAAAeACwREjm5AAMAAfS6AAsALAAeERI5ugAMACwAHhESObgALBC5AA4AAfS6ABUAHgAsERI5ugAWACwAHhESOboAIQAeACwREjm6ACQAHgAsERI5ugAuACwAHhESOTAxNx4BMzI%2BAjU0Ji8BJiMiDgIVFBcBHgEVFA4CIyImJwcnNy4BNTQ%2BAjMyFzcX0BlAJixHMxwRECIzTCxIMxwiAXgfIilLZz00WSM%2FLkYgIilLZz5oRz8udBodJkdjPjBQIDI2JURiPWBEAYorc0hPf1kwISBTJFssdkhPfVcuP1EjAAIANAAAAx4CkAASABsAVQC4AABFWLgAAy8buQADABA%2BWbgAAEVYuAAOLxu5AA4ABD5ZuAADELkAGAAB9LgABdC6AAoAAwAOERI5uAAKL7kACAAB9LgADhC5ABcAAfS4AAzQMDETNDYzIRUhFTMVIxUhFSEiLgI3FBY7AREjIgY0qJkBn%2F7q6OgBIP5TS3VSK1Z6dzAwd3oBS52oRs5H7kctVXtOfokCCIQAAP%2F%2FAFf%2F9AIuAzICJgAYAAAABwDhAUIAAP%2F%2FAFf%2F9AIuAzICJgAYAAAABwDjAUIAAP%2F%2FAFf%2F9AIuAzICJgAYAAAABwDlAUIAAP%2F%2FAFf%2F9AIuAy0CJgAYAAAABwDqAUIAAP%2F%2F%2F%2F8AAAHdAzICJgAcAAAABwDjAO4AAAACACEAAAJKApAADAAbAFkAuAAARVi4ABsvG7kAGwAQPlm4AABFWLgAFi8buQAWAAQ%2BWbkAAAAB9LgAGxC5AAYAAfS6AAoAGwAWERI5uAAKL7kACQAB9LgAChC4ABjQuAAJELgAGdAwMSUyNjU0JisBFTMVIxUTMhYVFA4CKwERIzU3EQEOc3Nzc0uVlVGYnihOckqoT09Ein19hNwv%2FQJMqJ1Oe1UtAUErBAEgAAAAAAIAWgAAAhUCkAAQABkAOQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAQLxu5ABAABD5ZuwAZAAEADgAEK7sAAgABABgABCswMRMzFTMyHgIVFA4CKwEVIzcyNjU0JisBEVpTdjZaPyMjQFk2dlO%2FVlNUVWwCkG4ULkk2NE0yGJbaQEdHNv78AP%2F%2FADr%2F9AG3AsoCJgAeAAAABwDgAQ0AAP%2F%2FADr%2F9AG3AsoCJgAeAAAABwDiAQ0AAP%2F%2FADr%2F9AG3AsoCJgAeAAAABwDkAQ0AAP%2F%2FADr%2F9AG3Aq0CJgAeAAAABwDmAQ0AAP%2F%2FADr%2F9AG3Aq4CJgAeAAAABwDpAQ0AAP%2F%2FADr%2F9AG3AtcCJgAeAAAABwDrAQ0AAAADADr%2F9ALrAfIADgBAAEcAmwC4AABFWLgAEi8buQASAAg%2BWbgAAEVYuAAYLxu5ABgACD5ZuAAARVi4ADIvG7kAMgAEPlm4AABFWLgALC8buQAsAAQ%2BWbgAMhC5AAMAAfS6ADgAMgASERI5uAA4L7kACgAB9LoAHwAYACwREjm4AB8vuAAsELkAJQAB9LgAEhC5AD0AAfS4ABgQuQBEAAH0uAAfELkARwAB9DAxNxQWMzI2Ny4BJzUOAwM%2BATMyFhc%2BATMyHgIVFAchHgMzMjY3Fw4BIyImJw4BIyImNTQ2NzQuAiMiBgcFNCYjIgYHizEkIlAhCAoBOlEzFzwiYDY2Rg8dUTItRS8YA%2F7FARkoNh8jOBseIEwyPVIcMmUvPlGOmAgXJh4oSB0CMzs4M0kHhCokJyQTNRwZCBYeJwEYFik3MDA3IDxVNBwSJj4sGBcRORQeNyQtLkhCUFURFywiFSAUZEtQU0gAAAD%2F%2FwAu%2FysBsAHyAiYAIAAAAAcA7QEQAAD%2F%2FwAu%2F%2FQBygLKAiYAIgAAAAcA4AEJAAD%2F%2FwAu%2F%2FQBygLKAiYAIgAAAAcA4gEJAAD%2F%2FwAu%2F%2FQBygLKAiYAIgAAAAcA5AEJAAD%2F%2FwAu%2F%2FQBygKuAiYAIgAAAAcA6QEJAAD%2F%2FwAMAAAAvALKAiYAZwAAAAYA4HsAAAD%2F%2FwA6AAAA6gLKAiYAZwAAAAYA4nsAAAD%2F%2F%2F%2F6AAAA%2FALKAiYAZwAAAAYA5HsAAAD%2F%2F%2F%2F0AAABAgKuAiYAZwAAAAYA6XsAAAAAAQBSAAAApAHmAAMAJQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAACLxu5AAIABD5ZMDETMxEjUlJSAeb%2BGgAA%2F%2F8AUgAAAdcCrQImACsAAAAHAOYBJAAA%2F%2F8ALv%2F0AfACygImACwAAAAHAOABDwAA%2F%2F8ALv%2F0AfACygImACwAAAAHAOIBDwAA%2F%2F8ALv%2F0AfACygImACwAAAAHAOQBDwAA%2F%2F8ALv%2F0AfACrQImACwAAAAHAOYBDwAA%2F%2F8ALv%2F0AfACrgImACwAAAAHAOkBDwAAAAMALv%2FpAfAB%2FQAJABMALgBJALgAAEVYuAApLxu5ACkACD5ZuAAARVi4ABwvG7kAHAAEPlm6AAAAHAApERI5uQACAAH0ugAKACkAHBESObgAKRC5AAwAAfQwMTcWMzI%2BAjU0LwEmIyIOAhUUFwEeARUUDgIjIicHJzcuATU0PgIzMhYXNxeyJzYfNScVGBslOB81JhYXASQZHSU%2BUS1PPDElNhkdJT5RLSZIHTIkXScbMUQpQy8nKBsxRSlDLgEaIFc2PF9BIjE8HUEgVTY9X0IiGRk9HQAAAAMALv%2F0AyEB8gATADwAQwBxALgAAEVYuAAZLxu5ABkACD5ZuAAARVi4ADgvG7kAOAAEPlm5AAUAAfS4ABkQuQAPAAH0uAAZELgAH9C4ADgQuAAz0LoAJgAfADMREjm4ACYvuAAzELkALAAB9LgAHxC5AEAAAfS4ACYQuQBDAAH0MDE3FB4CMzI%2BAjU0LgIjIg4CBzQ%2BAjMyFhc%2BATMyHgIVFAchHgMzMjY3Fw4BIyImJwYjIi4CJTQmIyIGB4IUJDIeHjIkFBQkMh4eMiQUVCQ8UCw4XhocWTYtRjAZA%2F7BARkpNx8jOhseIE4yOV4cOXosTzwjAqs%2BODNKB%2FIqRDEbGzFEKipFMhsbMkUqPV9CIj48OUEgPFU0HBImPiwYFxE5FB5AOXkiQV9gS1BTSAABAFL%2F9AIjAtIANwBkALgAAEVYuAADLxu5AAMAEj5ZuAAARVi4ADcvG7kANwAEPlm4AABFWLgAGS8buQAZAAQ%2BWboADQAZAAMREjm5ACAAAfS6ACMAGQADERI5ugAvABkAAxESObgAAxC5ADIAAfQwMRM0NjMyHgIVFA4CFRQeBBUUDgIjIiYnNx4BMzI2NTQuBDU0PgI1NCYjIgYVESNSZl4nPSoVHCMcHSwzLB0WKjslKkQfIRozHSoqHSwzLB0bIRwpKjY7UgIDXnEXKDUeJjUsKRoYIBkaJDYoIDYoFxoXOhYVMCAdJhwZIC0jIjAsLiAmMU1O%2FgwAAP%2F%2FAEv%2F9AHOAsoCJgAyAAAABwDgARAAAP%2F%2FAEv%2F9AHOAsoCJgAyAAAABwDiARAAAP%2F%2FAEv%2F9AHOAsoCJgAyAAAABwDkARAAAP%2F%2FAEv%2F9AHOAq4CJgAyAAAABwDpARAAAP%2F%2FAAz%2FLwHHAsoCJgA2AAAABwDiAPIAAP%2F%2FAAz%2FLwHHAq4CJgA2AAAABwDpAPIAAAACADX%2F9AHlAtoAFAA4AFkAuAAARVi4ADMvG7kAMwASPlm4AABFWLgAHS8buQAdAAQ%2BWbsAJwABAAsABCu6ADAALQADK7gAHRC5AAAAAfS4AC0QuAAV0LgAMBC4ADPcuAAwELgANtAwMSUyPgI1NCYnLgEjIg4CFRQeAhMeARUUDgIjIi4CNTQ%2BAjMyFhcuAScHJzcmJzceARc3FwEPIjIiEQEBIUIiITQkExYnMms8TB85TzEqTjwkIDdLLCZGGg43Jo0YfzQ8JiRGII4YOB00SSwOHA0sHhgsOyImPSsYAiU9qHc8Y0cnID1XNjNTOyAgIj5cJkkpQSggNBQsG0kpAAAAAAIAUv8zAfsCyAAWACcAVwC4AABFWLgACC8buQAIAAg%2BWbgAAEVYuAACLxu5AAIAEj5ZuAAARVi4AAEvG7kAAQAGPlm4AABFWLgAEi8buQASAAQ%2BWbkAGgAB9LgACBC5ACQAAfQwMRcjETMVBz4BMzIeAhUUDgIjIiYnFzUeATMyPgI1NC4CIyIGB6RSUgEgTCgwSTIZIjpMKiNCIQEhPhgeMyUVDh8xIh8%2FJM0DlcJTGiUjQVs5PmFEIxwaU5UcFxsxSC0oQi8aIiAAAAEAHgAAAlsC1AAoAHwAuAAARVi4ABIvG7kAEgAIPlm4AABFWLgAJS8buQAlABI%2BWbgAAEVYuAAOLxu5AA4ABD5ZuAAlELkAAgAB9LgAEhC4ACHQuAAG0LgAEhC5AA8AAfS4AAvQuAAH0LgADhC4AArQuAASELgAEdC4ACUQuAAW0LkAHAAB9DAxASYjIh0BMxUjESMRIxEjESM1NzU0NjMyFhcHJiMiBh0BMzU0NjMyFhcCSh0aRWdnUspSQkJLTBgvEhEeIyQoykVJFykRAoUMXk1D%2Fl0Bo%2F5dAaM%2BBUBMWAoIPg0zMD5NS1YJBwAAAAEAHv%2F0AkUC1AArAIkAuAAARVi4ABAvG7kAEAAIPlm4AABFWLgAFC8buQAUABI%2BWbgAAEVYuAAMLxu5AAwABD5ZuAAARVi4AAMvG7kAAwAEPlm4ABAQuQANAAH0uAAJ0LgAEBC4AA%2FQuAAPL7gAFBC5ABoAAfS4ABAQuAAe0LgAItC4AAkQuAAj0LgAAxC5ACgAAfQwMSUOASMiLgI1ESMRIxEjNTc1NDYzMhYXByYjIh0BMzczFTMVIxEUFjMyNjcCRRQvFyc1IQ6uUkJCRUkXKRESGxxEsgpEhIQiKg0eDAYHCxgqPCQBDf5dAaM%2BBU1LVgkHPwxeTYiIQ%2F7yLTEIBQAAAwAg%2F%2FQCUgKcAA0AGwBJAIwAuAAARVi4ADQvG7kANAAQPlm4AABFWLgAIi8buQAiAAQ%2BWbgAAEVYuAAcLxu5ABwABD5ZugA%2FAB8AAyu4ACIQuQAFAAH0ugAIAB8APxESOboACwAiADQREjm4AAsvuAAR3LgANBC5ABkAAfS6ACwACwARERI5ugA8AAsAERESOboARgAfAD8REjkwMTcUHgIzMjY3LgEnDgETFBYXPgM1NCYjIgYBLgEnDgEjIi4CNTQ%2BAjcuATU0PgIzMhYVFA4CBx4BFz4BNzMOAQceARdwFCMvGyI%2BHTBZIyMvTREOFikfEh0hJSwBfyNMKCZdOi1JNR0VJC8ZFBcWKDgiPUQaKjUbIFcvHi8PTRQ4JyI%2BG68bLSARHBkqZDUcPQEtGzoeDx8hJRYdKzb9yQolHCIpGzBDKCE2LicRKU0kITgqGEg6IDYvKRQzXicpYDlBdjQXIAgAAAAAAgAs%2F%2FQBxQKKAAsAHQA1ALgAAEVYuAAGLxu5AAYADj5ZuAAARVi4AAAvG7kAAAAEPlm5AAwAAfS4AAYQuQAWAAH0MDEXIiY1NDYzMhYVFAYnMj4CNTQuAiMiDgIVFBb5YWxsYWBsbGAcLSESEiEtHBwuIRJFDKyhoaiooaGsQh9BZUZGZD8eHj9kRox%2FAAAAAQBPAAABtwJ%2BAAwAQwC4AABFWLgABy8buQAHAA4%2BWbgAAEVYuAAMLxu5AAwABD5ZuQABAAH0uAAHELkABAAB9LkAAgAB9LgAARC4AAnQMDE3MxEjNT4BNzMRMxUhT5J0LEEaP4T%2BmEQB1jUIFxD9xkQAAAABACQAAAHEAooAHQA9ALgAAEVYuAAPLxu5AA8ADj5ZuAAARVi4ABwvG7kAHAAEPlm5ABoAAfS4ABfQuAAA0LgADxC5AAgAAfQwMTc%2BAzU0JiMiBgcnPgEzMhYVFA4CBz4BOwEVIShIcEwoPD0oRBwvKFo%2FWWYnRV85GjgZuf5kMUh0Y1MnN0YtIC8sNWdVLVthaTsCBEcAAAEAGv%2F0Ab4CigAzAFMAuAAARVi4ABsvG7kAGwAOPlm4AABFWLgALi8buQAuAAQ%2BWbkAAwAB9LoACwAbAC4REjm4AAsvuQAMAAH0uAAbELkAFAAB9LoAJAAMAAsREjkwMTceATMyNjU0LgIjNTI%2BAjU0JiMiBgcnPgEzMh4CFRQGBxUeAxUUDgIjIi4CJ0QdTTk6ShUwTjkzRSsSOzMoQx0sJVk5KkYzHEA0HTImFSE5TCwmPzQpEIQeLj82HC8iEj8SICwZLzYkHTQjLRYpPCc6ShQEBxspNiEqRC8ZDxkgEgAAAAIAEQAAAdUCfgAJABQAVwC4AABFWLgAEi8buQASAA4%2BWbgAAEVYuAANLxu5AA0ABD5ZuwAOAAEAAAAEK7gAEhC4AATcuAAAELgACdC4AA4QuAAL0LgACRC4ABDQuAAAELgAE9AwMSU1NDY3Iw4BDwEFIxUjNSE1ATMRMwEwAwIEDBoOlQFtV07%2B4QERXFfyuRpHGhcsF9pCsLA2AZj%2BdAABABn%2F9AHBAn4AJgBHALgAAEVYuAAQLxu5ABAADj5ZuAAARVi4ACEvG7kAIQAEPlm5AAMAAfS6ABcAEAAhERI5uAAXL7gAC9y4ABAQuQASAAH0MDE3HgEzMj4CNTQmIyIGBycTIRUjBz4BMzIeAhUUDgIjIi4CJ0EcTTgdMyYWSj4hLx0sFQE%2F9xEXLh0pSDYfJDxNKiY%2FMykQgR0sFSY2IUJKFBMcATNHvQwOGDFLNDRQNx0PGB8RAAAAAAIAMP%2F0AckCigANAC4AQwC4AABFWLgAKy8buQArAA4%2BWbgAAEVYuAAhLxu5ACEABD5ZuwAZAAEACAAEK7gAIRC5AAAAAfS4ACsQuQARAAH0MDElMj4CNTQmIyIGBx4BEy4BIyIOAgc%2BATMyFhUUDgIjIi4CNTQ%2BAjMyFhcBDBgoHhE6PB5HIAhHwBQ3HiE8LhwBHlAnU2MeNEQnL1A7IihEVzA0Sxs1FCUzID9IJy1eYQHeFxscQGdMJStiYy5LNh4mTXNNYIdVJycdAAEALAAAAccCfgAPADMAuAAARVi4AAcvG7kABwAOPlm4AABFWLgAAC8buQAAAAQ%2BWbgABxC5AAUAAfS4AAnQMDEzPgM3ITUhFQ4DByOxBBgrQy%2F%2BwgGbOUcqEwRVWpaHfkJHM0iEiZldAAAAAAMAKf%2F0AcgCigAPAB0ARQBXALgAAEVYuAAsLxu5ACwADj5ZuAAARVi4AEEvG7kAQQAEPlm5AAUAAfS6AA0AQQAsERI5uAANL7gAENC4ACwQuQAWAAH0uAANELgAI9y4ABAQuAA23DAxNxQeAjMyNjU0LgInDgE3PgE1NCYjIgYVFB4CBzQ%2BAjc1LgE1ND4CMzIeAhUUDgIHFR4DFRQOAiMiLgJzFSUyHThFHDA%2FIiYztCAjOjUtOhgpNeEVISsXIzYcMEInKkIvGREZHw8VKB8THjZMLi1NNyCrGywhEj4yHywhGw4aRYUdQCMwQTgvHSkgGcQfNSshDAQZRzMlPCsYGS0%2FJRkuKCALBAwfJzIgJD4uGhovQAACACj%2F9AHAAooADQAuAEMAuAAARVi4ACEvG7kAIQAOPlm4AABFWLgAKy8buQArAAQ%2BWbsAAAABABkABCu4ACEQuQAGAAH0uAArELkAEQAB9DAxEzI2Ny4BIyIOAhUUFgceATMyPgI3DgEjIiY1ND4CMzIeAhUUDgIjIiYn6x9HIAhIPRcpHhE6ThQ3HiI8LhwBHlAoU2IeM0UmL1E7IShEVzAzTRoBNicuXmAUJTQfP0jLFxwcQWhNJixiYy5LNh4mTXNNYIdVJyYdAAABAEH%2F9AC4AHIACwAYALgAAEVYuAAJLxu5AAkABD5ZuAAD3DAxNzQ2MzIWFRQGIyImQSMZGCMjGBkjMh0jIx0bIyMAAAEAL%2F9WAMYAcgARABgAuAAARVi4AAUvG7kABQAEPlm4AAvcMDEXPgE1BiMiJjU0NjMyFhUUBgcvKjADBxgjJBkgJUY9ehM%2BKQEdHBsfNC1BYBoA%2F%2F8AQf%2F0ALgB2wInAIYAAAFpAAYAhgAA%2F%2F8AL%2F9WAMYB2wInAIYAAAFpAAYAhwAAAAIAVf%2F0AMwCngAFABEAGgC4AABFWLgADy8buQAPAAQ%2BWbkACQAB9DAxEyczBwMjBzQ2MzIWFRQGIyImaQJTAgs5HyMZGCMjGBkjAkBeXv6GlB0jIx0bIyMAAAAAAgBV%2F0gAzAHyAAUAEQAaALgAAEVYuAAPLxu5AA8ACD5ZuQAJAAH0MDEfASM3EzM3FAYjIiY1NDYzMha4AlMCCzkfIxgZIyMZGCNaXl4BepQdIyMdGyMjAAIAJv%2F0AXkCqgAbACcAKAC4AABFWLgAJS8buQAlAAQ%2BWbsAEQABAAoABCu4ACUQuQAfAAH0MDE3Jj4ENTQmIyIGByc%2BATMyFhUUDgQXBzQ2MzIWFRQGIyImoAYRHiciFzEwITsXLyBSNk5dGCMnIRIEXSIZGSMjGRkixic%2FNS4tLhsoOR8bKyQvVUshNjAvMjkjlB0jIx0bIyMAAAIAMP88AYMB8gAbACcAKAC4AABFWLgAJS8buQAlAAg%2BWbsACgABABEABCu4ACUQuQAfAAH0MDEBFg4EFRQWMzI2NxcOASMiJjU0PgQnNxQGIyImNTQ2MzIWAQkFEB4nIhcwMSE6FzAgUjZOXRgjJyASBF4jGBkjIxkYIwEgJz81Li0vGig4HhsrIzBVSyE2MC8yOSOUHSMjHRsjIwAAAAABAFABrwCoArIABQALALoAAgAEAAMrMDETJzMPASNTA1gDEDICVlxcpwAA%2F%2F8AUAGvAVgCsgAmAI4AAAAHAI4AsAAAAAEAOQGsALsCuAARAA0AuwAFAAEACwAEKzAxEw4BFTYzMhYVFAYjIiY1NDY3uyYmAwYUIR4XHiE2NAKRGTgrARoZGh0uLDxYHgAAAAABAD8BrwDBArsAEQANALsACwABAAUABCswMRM%2BATUGIyImNTQ2MzIWFRQGBz8mJQMFFSAeFx0iNzQB1Rk4LAEaGBoeLyw8Vx4AAAD%2F%2FwA5AawBawK4ACYAkAAAAAcAkACwAAD%2F%2FwA%2FAa8BcQK7ACYAkQAAAAcAkQCwAAD%2F%2FwA%2F%2F3AAwQB8AgcAkQAA%2FcEAAP%2F%2FAD%2F%2FcAFxAHwAJwCRAAD9wQAHAJEAsP3BAAAAAQAtAEIA2QG2AAYACwC6AAIABgADKzAxNzU3FwcXBy2IJHZ2JN0%2Bmx6cnhwAAAAAAQA2AEIA4gG2AAYACwC6AAIABQADKzAxNyc3FxUHJ6x2I4mJI%2FycHps%2BmxwAAAD%2F%2FwAtAEIBdwG2ACYAlgAAAAcAlgCeAAD%2F%2FwA2AEIBgAG2ACYAlwAAAAcAlwCeAAAAAQApANsBDwEaAAMADQC7AAEAAQACAAQrMDETMxUjKebmARo%2FAAAA%2F%2F8AKQDbAQ8BGgIGAJoAAAABACkA3wG3ARgAAwANALsAAQABAAIABCswMRMhFSEpAY7%2BcgEYOQAAAQApAN8C9wEYAAMADQC7AAEAAQACAAQrMDETIRUhKQLO%2FTIBGDkA%2F%2F8AQQEDALgBgQIHAIYAAAEPAAAAAQAoAI8BCAGAABMACwC6AAoAAAADKzAxNyIuAjU0PgIzMh4CFRQOApgXKB8SEh8oFxYpHxISHymPESAsGxstHxISHy0bGywgEQAAAAEADP%2BCAej%2FuQADAA0AuwAAAAEAAQAEKzAxBRUhNQHo%2FiRHNzcAAAABAFL%2FUAEJAtwADgALALoABgAAAAMrMDEXLgE1NDY3Fw4BFRQWFwfWPkZGPjM6OTk6M7Bk3oSE3WUYYNtzc9tgGAAAAAEAJv9QAN0C3AAOAAsAugAHAA0AAyswMRc%2BATU0Jic3HgEVFAYHJyY6OTk6Mz5GRj4zmGDbc3PbYBhl3YSE3mQYAAAAAQBe%2F2gBEQLEAAcAFwC7AAUAAQAGAAQruwABAAEAAgAEKzAxEzMVIxEzFSNes3V1swLEL%2F0CLwABAB%2F%2FaADRAsQABwAXALsAAAABAAUABCu7AAQAAQABAAQrMDEXESM1MxEjNZN0srJpAv4v%2FKQvAAEAIv9oARECxAAxACsAuwAAAAEAAQAEK7sAHAABAB0ABCu7ABAAAQAPAAQrugAoAA8AEBESOTAxBRUjIiY1ND4CNTQuAiM1Mj4CNTQmNTQ2OwEVIyIGFRQWFRQGBxUeARUUBhUUFjMBES07OgMDAwgTIhkZIhMICTo7LRspGwYcICAcBhspaS84TRsxLi4ZDxsWDjQOFRwOM1g3TTgvKjEuVDMxMwkECTQwM1QuMSoAAQAf%2F2gBDQLEADMAKwC7AAAAAQAxAAQruwAWAAEAEwAEK7sAIQABACIABCu6AAoAIgAhERI5MDEXMjY1NCY1NDY3NS4BNTQ2NTQmKwE1MzIeAhUUBhUUFhcVIg4CFRQeAhUUDgIrATU5KRsFGyAgGwUbKRosHiwdDgkkMhkhFAgDAwMOHSweLGkqMS5UMzA0CQQJMzEzVC4xKi8NHjMnN1gzHS8BNA4WGw8ZLi4xGyczHg0vAAAAAAEACv9gAVECxgADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDEBMwEjARU8%2FvU8Asb8mgABAFz%2FBgCWAu4AAwALALoAAQACAAMrMDETMxEjXDo6Au78GAABAA7%2FYAFUAsYAAwAYALgAAEVYuAAALxu5AAAAEj5ZuAAC3DAxEzMBIw47AQs7Asb8mgAAAgBc%2FwYAlgLuAAMABwALALoAAQAFAAMrMDETMxEjFxEjEVw6Ojo6Au7%2BNU3%2BMAHQAAAAAAEAOgGkAWgCyAAOABQAuAAARVi4AAUvG7kABQASPlkwMRM3JzcXNzMXNxcHFwcnB2I5YQ9mCTEJZw9hOCdHRwHBXiguGWxrGC4oXh1WVgAAAgAt%2F8ABxAKsAA8ARwAXALsALwABACgABCu7AEQAAQATAAQrMDElPgE1NC4CJw4BFRQeAhMuASMiBhUUHgQVFAYHHgEVFA4CIyImJzceATMyNjU0LgQ1NDY3LgE1ND4CMzIWFwFAHR8oPEcfHSAoPUdMGDYhKiUpPkc%2BKS8mDhAYKzsjNlgfMhk6KCgtKT1IPSkwJg8REyc4JjBNHcEOJiEiLCEcEhAoHyErIB0BaxQaJRobJB4eKz0uMDsWEScaHjIkFSYhLRgcKB0cJh4dKj0uLEAVECgaGi8kFSIXAAACACn%2FsAHQApAAAwAQACUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADi8buQAOABA%2BWTAxATMRIwMiLgI1ND4COwERAXxUVFc2XUMmJEFYNCwCkP0gATIZNVI5O1EzFv5SAAAAAwAx%2F%2FUCtwKNABMAJwBFADMAuwA6AAEAQQAEK7sALQABADQABCu4AC0QuAAj3LkABQAB9LgAQRC4ABncuQAPAAH0MDETND4CMzIeAhUUDgIjIi4CNxQeAjMyPgI1NC4CIyIOAhc0PgIzMhYXBy4BIyIGFRQWMzI2NxcOASMiLgIxNFh2QUF1WTQ0WXVBQXZYNC8sS2Q5OWRLLCxLZDk5ZEssZh8zQyQqOxgjFCkaN0NBNiAwFh4cPi0mQjIcAUNMelYuLlZ6TE17Vy8vV3tNQmtNKipNa0JBa0wpKUxrQStGMhohGCcUFUs7Qk0ZEyoYIRszSQAAAAAEABcBPwGQAskAEwAnADUAPQBXALgANC%2B4ACkvuAA0ELgAFNy5AAAAAfS4ACkQuAAe3LkACgAB9LoAMgA0ACkREjm4ADIvuQA2AAH0ugAvADYAMhESObgANBC4ADHQuAApELkAOwAB9DAxEyIuAjU0PgIzMh4CFRQOAicyPgI1NC4CIyIOAhUUHgIDMzIWFRQGBxcjJyMVIzcyNTQmKwEV0ydEMx4eM0QnJ0UzHh4zRScfNygXFyg3HyA2JxcXJzYoTCAuFBEuLiMpKUMrEhccAT8dNEgsLEg0HR00SCwsSDQdJRcqOyQjOysYGCs7IyQ7KhcBCB0kEh8GU0ZGZiIPEkMAAAIAM%2F9lAxwChgBFAFQAPwC7ADsAAQBBAAQruwAnAAEADwAEK7sASQABABYABCu7AB4AAQBQAAQruwAFAAEAMQAEK7oAIgBQAB4REjkwMTc0PgIzMh4CFRQOAiMiJicjDgEjIiY1ND4CMzIWFzM3MwcGMzI%2BAjU0LgIjIg4CFRQeAjMyNjcXBiMiLgIlFBYzMjY%2FAS4BIyIOAjNDc5dUTHlVLiU6RyIpOQUCGUAhM0UbMkcsGigOAgs3Jx5UGC8nGCNGaERDfmI7LVBtQC5SIhZVaUqAXzcBCCgeFS0aHQ4eFB4vIRHLZKR0PzBXekpCY0MiJiYdJ0hFKFNDKhcZKMh1HDVNMTxnSio3ZI5YSXJOKRkUMTMuW4ZXMCocH58XEyAyPAACACMAAAHTAooAGwAfAJsAuAAARVi4AAgvG7kACAAOPlm4AABFWLgADC8buQAMAA4%2BWbgAAEVYuAAWLxu5ABYABD5ZuAAARVi4ABovG7kAGgAEPlm7AAMAAQAAAAQruwAHAAEABAAEK7gABxC4AArQuAAHELgADtC4AAQQuAAQ0LgAAxC4ABLQuAAAELgAFNC4AAAQuAAY0LgAAxC4ABzQuAAEELgAHdAwMTcjNTM3IzUzNzMHMzczBzMVIwczFSMHIzcjByMTNyMHc1BXElVcFzUXhRg1GFFXElVcGTUYhBk22hKEEsw5lDq3t7e3OpQ5zMzMAQWUlAAAAP%2F%2FAFcBuADsAz4CBwC3AAABuAAA%2F%2F8AKAG4AUADSgIHALgAAAG4AAD%2F%2FwAjAawBPwNKAgcAuQAAAbgAAP%2F%2FACoBuAFQAz4CBwC6AAABuAAAAAIAI%2F%2F0AU0BkgALABcAKAC4AAYvuAAARVi4AAAvG7kAAAAEPlm5AAwAAfS4AAYQuQASAAH0MDEXIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBa4RFFRRENSUkMmMDAmJzAwDGxkY2trY2RsM09OTk1NTk5PAAAAAQBXAAAA7AGGAAgAIgC4AAYvuAAARVi4AAgvG7kACAAEPlm4AAYQuQAAAAH0MDETIzU%2BATczESOsVSEsFDRAATQqBhMP%2FnoAAQAoAAABQAGSABoALAC4AA8vuAAARVi4ABkvG7kAGQAEPlm5ABcAAfS4AADQuAAPELkACAAB9DAxNz4DNTQmIyIGByc%2BATMyFhUUDgIHMxUhNC1GLhgoIxkqESYXQyg7RxYnNR%2Bl%2FvQlKUE2LxYmLCEYIyIqQD4cNDU4IDcAAAABACP%2F9AE%2FAZIAKgA%2BALgAFy%2B4AABFWLgAJy8buQAnAAQ%2BWboACgAJAAMruAAnELkAAwAB9LgAFxC5ABAAAfS6AB8ACQAKERI5MDE3HgEzMjY1NCYjNTI2NTQmIyIGByc%2BATMyHgIVFAYHHgEVFA4CIyImJ04SMh8gLkA5MzcnIBYoEScaPSkZLSIUJh4hMxYmMxwwShdhGx8kIiIjKSgeHCIbFCIdIw4bJxkjLw4IMScbKx8QKyEAAgAqAAABUAGGAAUAEABMALgADi%2B4AABFWLgACS8buQAJAAQ%2BWbsAAAABAAoABCu4AA4QuQACAAH0uAAAELgABdC4AAoQuAAH0LgABRC4AAzQuAAAELgAD9AwMTc1NyMPARcjFSM1IzU3MxUz3AQEMj3jOjqypEg6lkZtUWIuaGgh%2FfD%2F%2FwAlAQIBKgJUAgYAvQAA%2F%2F8AHgECAU4CVAIGAL4AAAACACUBAgEqAlQAGQAiADsAuAAAL7gAEC%2B7AAYAAQAdAAQruAAQELkACQAB9LgAABC4ABXQuAAAELkAGgAB9LoAFwAAABoREjkwMRMiJjU0NjcuASMiBgcnPgEzMhYdASMnIw4BJzI3NQ4BFRQWiC02X2gBGiMaNxQXGUUnPDcyBwQUMg0nK009HgECNCs1NwogKhUNKhAbRkDEJRIbMihVCSYcGhgAAAACAB4BAgFOAlQAEwAfABsAuAAKL7gAAC%2B5ABQAAfS4AAoQuQAaAAH0MDETIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWth83KhgYKjcfHzcqGBgqNx8qLi4qKi8vAQIXKz8oKD8rFxcrPygoPysXM0E1NkBANjVBAAAAAgApAa0BIwKtABMAHwAXALsAFAABAAAABCu7AAoAAQAaAAQrMDETIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWphktIxQUIy0ZGS0jFBQjLRkhKiohISoqAa0SIS8dHi8iEhIiLx4dLyESLi4jJS4uJSMuAAAAAgAaAGcB1wItACEANQAoALgAAEVYuAAMLxu5AAwACj5ZuwAnAAEAHgAEK7gADBC5ADEAAfQwMT8BLgE1NDY3JzcXNjMyFhc3FwceARUUBgcXBycOASMiJwc3FB4CMzI%2BAjU0LgIjIg4CGkARExMRQCxEMD8dOhdELEERFBQRQSxEFzodQC9EPBMgLBgYKyATEyArGBgsIBOUQRc6IyM7F0ItRiUTEkYtQhc7IyM6F0EtRRMTJkXiHjEkExMkMR4eMSQTEyQxAAABADT%2FkgG1AuwALQBdALgAAEVYuAAnLxu5ACcADj5ZuAAARVi4ABMvG7kAEwAEPlm4ACcQuQADAAH0ugAGABMAJxESObgAExC4ABDQuAATELkAGgAB9LoAHQAnABMREjm4ACcQuAAq0DAxAS4BIyIGFRQeBBUUBgcVIzUuASc3HgEzMjY1NC4ENTQ2NzUzFR4BFwF8HDUpLjYpPkk%2BKVNIPDBaICYgTS44Nyk%2BST4pT0I8MEMbAgwbHjQsJC4jIS9FNkhcCmVjBSsdORwnOC8oNSciLD8xQ1kLZGMFKh0AAAEANQAAAcUCigAsAFkAuAAARVi4ABUvG7kAFQAOPlm4AABFWLgAAi8buQACAAQ%2BWbkAAAAB9LoAJAAVAAIREjm4ACQvuAAK0LgAJBC5ACMAAfS4AAvQuAALL7gAFRC5ABwAAfQwMSUVITU%2BATU0JicjNTczLgE1ND4CMzIWFwcuASMiBhUUFhczFSMeARUUBgcVAcX%2BcTM3BANkQxIKERsxRCo2SxowEzAiNjkPCZ%2BSAgMgHkdHMhxfOQ4bDjQEID0gKkQwGisgLxceQTQgOyA4DhsPNUYfBAAAAAABABcAAAHaAn4AHQCEALgAAEVYuAAdLxu5AB0ADj5ZuAAARVi4AAkvG7kACQAOPlm4AABFWLgAFC8buQAUAAQ%2BWboABAAdABQREjm6ABkAHQAUERI5uAAZL7kADAAB9LgAGRC4AA3QuAAZELgAGNC4ABgvuAAQ0LgAGBC5ABUAAfS4ABHQuAAZELkAGwAB9DAxExceARczPgE%2FATMDMxUjFTMVIxUjNSM1MzUjNTMDbU4PHRAEER0PTlSkjqOjo1KioqKNowJ%2BqyFDIyNDIav%2BwC9BMJ6eMEEvAUAAAQAX%2F%2FQB6wKKADUAbQC4AABFWLgAGS8buQAZAA4%2BWbgAAEVYuAADLxu5AAMABD5ZuwAtAAEALgAEK7gALhC4AAnQuAAtELgACtC4AC0QuAAl3LgAEtC4ACUQuQAkAAH0uAAT0LgAGRC5ACAAAfS4AAMQuQAyAAH0MDElDgEjIi4CJyM1NyY0NTwBNyM1Nz4DMzIWFwcuASMiBgczFSEGFBUcARczFSMeATMyNjcB6yFUNy1NPCkJQDsBATtACSo%2FUzEtThoxFTIgQlEM%2Fv7%2BAQHa1Q1NPiU3GlEsMSFAWzsrBAkSCQgQCCwFO11BIi0hLxohYlcxBw4IChMJMFVgJCMAAAACAD3%2F3wHGAo0ABgAlADcAuwAiAAEACgAEK7sAGgABACEABCu4ACEQuAAA0LgAIhC4AAbQuAAKELgADdC4ABoQuAAX0DAxAQ4BFRQWHwEOAQcVIzUuAzU0PgI3NTMVHgEXBy4BJxE%2BATcBBjdAPjnAHUgnNC1KNR0fNkoqNCxAFygULRogNBQB3Q1YQkNYDQkaIgNnaAUlPFQ1NFI8JQZqZwIiFjQSFgL%2BqAIbEgAAAAH%2FWf%2F0APsCnAADABgAuAAARVi4AAAvG7kAAAAEPlm4AAHcMDEHATMBpwFqOP6WDAKo%2FVgAAAD%2F%2F%2F9Z%2F%2FQA%2BwKcAgYAxgAA%2F%2F8AI%2F%2F0AxYCnAAnALYAAAEKACcAxgFxAAAABwC2AckAAAAA%2F%2F8AQP%2F0Au0CnAAnALf%2F6QEKACcAxgFbAAAABwC6AZ0AAAAA%2F%2F8AQP%2F0AvkCnAAnALf%2F6QEKACcAxgFGAAAABwC4AbkAAAAA%2F%2F8AI%2F%2F0AvwCnAAnALkAAAEKACcAxgGAAAAABwC6AawAAAAAAAEAIgBoAc8CLAALAB0AuwADAAEAAAAEK7gAAxC4AAbQuAAAELgACNAwMRMjNTM1MxUzFSMVI9i2tkG2tkEBKz7Dwz7DAAAAAAEAIgErAc8BaQADAA0AuwABAAEAAgAEKzAxEyEVISIBrf5TAWk%2BAAABADIAfgG%2FAhUACwALALoABQAJAAMrMDE%2FASc3FzcXBxcHJwcym5ssm5osm5ssmpurn54tn58tnp8toKAAAAAAAwAiAGABzwIzAAsAFwAbACEAuwAPAAEAFQAEK7sABgABAAAABCu7ABkAAQAaAAQrMDETIiY1NDYzMhYVFAYDNDYzMhYVFAYjIiYnIRUh%2BRcgIBcXHx9OIBcXHx8XFyCgAa3%2BUwHIHhgXHh4XGB7%2BzhceHhcYHh7rPgAA%2F%2F8AIgDBAc8B1AImAM0AawAGAM0AlgAAAAEAIgCDAc8CFQAJABUAugABAAgAAyu6AAUACAABERI5MDETJRUPARUfARUlIgGt04aG0%2F5TAW2oR04yBDJOR6gAAAAAAQAiAIMBzwIVAAkAFQC6AAgAAQADK7oABQABAAgREjkwMQEFNT8BNS8BNQUBz%2F5T04aG0wGtASuoR04yBDJOR6gAAAACACIAAAHPAiwACwAPADgAuAAARVi4AA4vG7kADgAEPlm7AAMAAQAAAAQruAADELgABtC4AAAQuAAI0LgADhC5AAwAAfQwMRMjNTM1MxUzFSMVIwchFSHYtrZBtrZBtgGt%2FlMBMD6%2Bvj6xQT4AAAAAAQA8ARwBtQKeAAkAGgC4AABFWLgAAC8buQAAABA%2BWbkABQAB9DAxEzMTIy8BIw8BI9RJmEhBMQQyQUgCnv5%2BsIWFsAABACQBAQHNAZMAFwAnALsACAABAA8ABCu4AA8QuAAU3LkAAwAB9LgAC9C4AA8QuAAX0DAxEz4BMzIeAjMyNjcXDgEjIi4CIyIGByQbQiAeLykmFRYmES4bQiAeLykmFRYmEQE5MCoaIBodICIwKRogGh0gAAEAIgBoAc8BaQAFAA0AuwABAAEABAAEKzAxEyERIzUhIgGtQv6VAWn%2B%2F8MAAQBS%2FzgB1AHmABcAJAC4AABFWLgAES8buQARAAQ%2BWbkABQAB9LoAFAARAAUREjkwMRMzERQWMzI2NxEzESMnIw4BIyImJxcVI1JSLDAmOSNSRAcCHUUqHS4RBVIB5v7XRT0nKwFZ%2FhpMJy0RGlqR%2F%2F8AoAI9AVACygAHAOABDwAAAAD%2F%2FwDOAj0BfgLKAAcA4gEPAAAAAP%2F%2FAI4CPQGQAsoABwDkAQ8AAAAA%2F%2F8AhAJDAZoCrQAHAOYBDwAAAAD%2F%2FwCIAkwBlgKuAAcA6QEPAAAAAP%2F%2FAJQCWQGKApIABwDoAQ8AAAAA%2F%2F8AsgIeAWwC1wAHAOsBDwAAAAD%2F%2FwDA%2FysBWQADAAcA7QEVAAAAAAAB%2F5ECPQBBAsoAAwAYALgAAEVYuAADLxu5AAMADD5ZuAAB3DAxAzMXI29WWj8Cyo0AAAAAAf99AsIAMwMyAAMACwC6AAEAAwADKzAxAzMXI4NeWEUDMnAAAf%2B%2FAj0AbwLKAAMAGAC4AABFWLgAAC8buQAAAAw%2BWbgAAtwwMQMjNzMCP1pWAj2NAAAAAAH%2FzQLCAIMDMgADAAsAugACAAAAAyswMRMjNzMSRVheAsJwAAH%2FfwI9AIECygAHADcAuAAARVi4AAYvG7kABgAMPlm4AABFWLgAAy8buQADAAw%2BWbgABhC4AADcugAFAAAABhESOTAxAzMXIycjByMiRF88QwRDPALKjVtbAAAAAf94AsIAiAMyAAcAFwC6AAYAAQADK7gABhC4AAfcuAAD0DAxAzczFyMnIweIYFBgQ0MEQwLCcHBERAAAAf91AkMAiwKtABYAQQC4AABFWLgAAC8buQAAAAw%2BWbgAAEVYuAAOLxu5AA4ADD5ZuwATAAEAAwAEK7gADhC5AAgAAfS4AAMQuAAL0DAxAz4BMzIeAjMyNzMOASMiLgIjIgcjiwQoJRMgGxgMHAkuBCglEx8bGA0cCS4CQy09EBMQMy09EBMQMwAAAAAB%2F28CxwCRAzMAFwAjALoAAAARAAMrugAFAAwAAyu4AAAQuAAI0LgADBC4ABTQMDETIi4CIyIGByM%2BATMyHgIzMjY3Mw4BPBQgGxoODhYELgUsJBQgGxoODhYELgUsAscQFBAaGi89EBQQGxkuPgAAAf%2BFAlkAewKSAAMACwC4AAMvuAAB3DAxAzMVI3v29gKSOQAAAv95AkwAhwKuAAsAFwAoALgAAEVYuAAALxu5AAAADD5ZuAAG3LgAABC4AAzQuAAGELgAEtAwMQMiJjU0NjMyFhUUBjMiJjU0NjMyFhUUBlYWGxsWFRwclxUcHBUWGxsCTBwVFRwcFRUcHBUVHBwVFRwAAAAC%2F3kCywCHAy0ACwAXABsAugAGAAAAAyu4AAAQuAAM0LgABhC4ABLQMDEDIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAZWFhsbFhUcHJcVHBwVFhsbAsscFRYbGxYVHBwVFhsbFhUcAAAAAAL%2FowIeAF0C1wALABcAEwC6AAwAAAADK7oABgASAAMrMDERIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBYpNDQpKTQ0KRQcHBQUHBwCHjMqKjIyKiozJR4aGR4eGRoeAAAAAAL%2FowK7AF0DawALABcAEwC6AAwAAAADK7oABgASAAMrMDERIiY1NDYzMhYVFAYnMjY1NCYjIgYVFBYpNDQpKDU1KBMcHBMUHBwCuy8pKDAwKCkvJBsZFxwcFxkbAAAAAAH%2Fq%2F8rAEQAAwARABMAugACABEAAyu6AAsACgADKzAxJzMHHgEVFA4CByc%2BATU0JicTNRkYIxgoNRwIKDEhHgM1CCAfFiAWDQMpBRcUFBUIAAAAAAH%2Fq%2F8rAEQAAwARABMAugARAAIAAyu6AAoACwADKzAxJzMHHgEVFA4CByc%2BATU0JicTNRkYIxgoNRwIKDEhHgM1CCAfFiAWDQMpBRcUFBUIAAAA%2F%2F8AQwAAALUCtAIGACYAAAABAAAA8QBaAAcAcQAFAAEAAAAAAAoAAAIAAXMAAwABAAAAYgBiAGIAYgCwARYBZgGiAeACFgJ0ArAC0AMCA0oDcAPUBCQEeATABTIFhgX0BiAGZgaiBxgHdAeyB%2BgIXgjaCSoJogoEClILAgtQC4QLzAwUDEYMxg0cDXAN7A5iDqoPFg9gD7YP8hBoEMIRGBFOEVoRZhFyEX4RihGWEfoSBhISEh4SKhI2EkISThJaEmYSchJ%2BEooSlhKiEq4TOhOQE5wTqBO0E8ATzBQkFGgUdBSAFIwUmBSkFLAVZhVyFX4VihWWFaIVrhW6FcYV0hXyFf4WChYWFiIWLhY6FqYXPhe8F8gX1BfgF%2BwX%2BBgEGIYY7BlkGeYamhriGxwbaBvaHCociBzuHSQdsB4WHjgeYh5uHnoeqB7UHyIfch%2BIH5Qfuh%2FgH%2Bwf%2BCACIBAgKCBAIEwgWCBsIHQgiCCcIKYgzCDgIQIhJCFAIVwhtCIQIioiPCJWInAimCMIIzojtiQ4JMolSCVSJVwlZiVwJaolziYOJmomrCa0JrwnECdOJ4on7iheKMwpOim8KhQqMCo4KkoqXCpuKoAqpCq4KtgrFisiK0QrZiueK8Ar%2BiwQLEgsUixcLGYscCx6LIQsjiyYLLIsxCzeLPAtHi08LYItui3MLgYuOi5qLpouxC7uLu4u9gABAAAAAQzMdwyY3F8PPPUACQPoAAAAAM2XgKUAAAAAzZfjFv9A%2Fr0EiAO4AAAACQACAAAAAAAAAo0AWQAAAAAAygAAAMoAAAIgAAMCTABaAjsANAJnAFoCDwBaAe4AWgJpADQCjABaAQcAWgHgAB8CQwBaAeYAWgLXAFoChwBaApgANAJAAFoCmAA0AkUAWgIWACoCGAAcAoUAVwIDAAADEgAXAgEADwHc%2F%2F8CGwAtAgAAOgIrAFIByAAuAisALwHwAC4BJAAeAfgALQIgAFIA9gBDAPf%2F2AHvAFIA%2FwBSAz0AUgIjAFICHgAuAisAUgImAC8BWwBSAaMAHAFSABgCIABLAdMADALOABgBvgAOAdMADAGpAB8CIAADAiAAAwIgAAMCIAADAiAAAwIgAAMDNgAIAjsANAIPAFoCDwBaAg8AWgIPAFoBBwAAAQcAUAEH%2F%2FsBB%2F%2F8AocAWgKYADQCmAA0ApgANAKYADQCmAA0ApgAMgNPADQChQBXAoUAVwKFAFcChQBXAdz%2F%2FwJ%2BACECRwBaAgAAOgIAADoCAAA6AgAAOgIAADoCAAA6AxEAOgHIAC4B8AAuAfAALgHwAC4B8AAuAPYADAD2ADoA9v%2F6APb%2F9AD2AFICIwBSAh4ALgIeAC4CHgAuAh4ALgIeAC4CHgAuA0cALgJAAFICIABLAiAASwIgAEsCIABLAdMADAHTAAwCIQA1AisAUgI%2BAB4CUgAeAmEAIAHxACwB8QBPAfEAJAHxABoB8QARAfEAGQHxADAB8QAsAfEAKQHxACgA%2BQBBAPkALwD5AEEA%2BQAvASEAVQEhAFUBqQAmAakAMAD5AFABqQBQAPkAOQD5AD8BqQA5AakAPwD5AD8BqQA%2FAQ8ALQEPADYBrQAtAa0ANgE3ACkBNwApAeAAKQMgACkA%2BQBBATAAKAH0AAwBLwBSAS8AJgEvAF4BLwAfAS8AIgEvAB8BXgAKAPEAXAFeAA4A8QBcAaIAOgHxAC0CMAApAugAMQGnABcDTwAzAfEAIwFvAFcBbwAoAW8AIwFvACoBbwAjAW8AVwFvACgBbwAjAW8AKgFZACUBbQAeAVkAJQFtAB4BSwApAfEAGgHxADQB8QA1AfEAFwHxABcB8QA9AFb%2FWQBW%2F1kDOAAjAw0AQAMoAEADHAAjAfEAIgHxACIB8QAyAfEAIgHxACIB8QAiAfEAIgHxACIB8QA8AfEAJAHxACICJgBSAh4AoAIeAM4CHgCOAh4AhAIeAIgCHgCUAh4AsgIeAMAAAP%2BRAAD%2FfQAA%2F78AAP%2FNAAD%2FfwAA%2F3gAAP91AAD%2FbwAA%2F4UAAP95AAD%2FeQAA%2F6MAAP%2BjAAD%2FqwAA%2F6sAygAAAPYAQwABAAAD2P7vAAAEqv9A%2FxYEiAABAAAAAAAAAAAAAAAAAAAA8QADAccBkAAFAAACigJYAAAASwKKAlgAAAFeADIBIAAAAgsFAwMEAwICBCAAAAcAAAABAAAAAAAAAABBREJFAEAAAP7%2FAu7%2FBgAAA9gBESAAAZMAAAAAAeAClAAAACAAAwAAAAIAAAADAAAAFAADAAEAAAAUAAQB0gAAADwAIAAEABwAAAANAC8AOQBAAFoAYAB6AH4AvwDPAN8A7wD%2FATEBUwLGAtoC3CAUIBogHiAiIDogRCB0IKwiEiIV%2F%2F8AAAAAAA0AIAAwADoAQQBbAGEAewCgAMAA0ADgAPABMQFSAsYC2gLcIBMgGCAcICIgOSBEIHQgrCISIhX%2F%2FwAB%2F%2FUAAABMAAD%2FwwAA%2F70AAAAA%2F3gAAP93AAD%2FNgAA%2FhT%2BBP3%2F4IkAAAAA4H3gXeCC4EHgGN673rIAAQAAAAAAOAAAAFQAAABeAAAAZgBsAAAAqAAAAMQAAADgAAAAAAAAAAAA2gDeAAAAAAAAAAAAAAAAAAAAAAADAIoAjwCxAMEAyAB7AI4AoQCiAKsAzACHAJoAhgCnAIgAiQDRANAA0gCMALAAowCpAKQA1ACgANgApQCoAKYA1QDvAIsAxQDCAMAAwwCqAKwA3ACuALsAmADWAJsArwDdAL8A0wCzALQA2QDXAK0AngDfALIAvACZAMkAygDLAI0AVQBIAEkASgBLAEwATQDOAE4AUABRAFIAUwBUAFYAcAB3AGgAaQBqAGsAbABtAM8AbgBxAHIAcwB0AHUAeAB2AE8AbwCQAJEAlACSAJMAlQAAuAAALEu4AAlQWLEBAY5ZuAH%2FhbgARB25AAkAA19eLbgAASwgIEVpRLABYC24AAIsuAABKiEtuAADLCBGsAMlRlJYI1kgiiCKSWSKIEYgaGFksAQlRiBoYWRSWCNlilkvILAAU1hpILAAVFghsEBZG2kgsABUWCGwQGVZWTotuAAELCBGsAQlRlJYI4pZIEYgamFksAQlRiBqYWRSWCOKWS%2F9LbgABSxLILADJlBYUViwgEQbsEBEWRshISBFsMBQWLDARBshWVktuAAGLCAgRWlEsAFgICBFfWkYRLABYC24AAcsuAAGKi24AAgsSyCwAyZTWLBAG7AAWYqKILADJlNYIyGwgIqKG4ojWSCwAyZTWCMhuADAioobiiNZILADJlNYIyG4AQCKihuKI1kgsAMmU1gjIbgBQIqKG4ojWSC4AAMmU1iwAyVFuAGAUFgjIbgBgCMhG7ADJUUjISMhWRshWUQtuAAJLEtTWEVEGyEhWS0AsAArALIBAQIrAbICAgIrAbcCRDYqIRQACCu3A0A2KiEUAAgrALcBUUM0JBcACCsAsgQIByuwACBFfWkYREuwYFJYsAEbsABZsAGOAAAUAEQAUgBWAAAADP8zAAwB5gAMAgYADAI%2BAAwCfgAMApAADALIAAwAAAAHAFoAAwABBAkAAQAeAAAAAwABBAkAAgAOAB4AAwABBAkAAwBMACwAAwABBAkABAAeAAAAAwABBAkABQCCAHgAAwABBAkABgAqAPoAAwABBAkADgBIASQAUwBvAHUAcgBjAGUAIABTAGEAbgBzACAAUAByAG8AUgBlAGcAdQBsAGEAcgAxAC4AMAA1ADAAOwBBAEQAQgBFADsAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAFIAZQBnAHUAbABhAHIAOwBBAEQATwBCAEUAVgBlAHIAcwBpAG8AbgAgADEALgAwADUAMAA7AFAAUwAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADAAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADkAMAAwAFMAbwB1AHIAYwBlAFMAYQBuAHMAUAByAG8ALQBSAGUAZwB1AGwAYQByAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAGQAbwBiAGUALgBjAG8AbQAvAHQAeQBwAGUALwBsAGUAZwBhAGwALgBoAHQAbQBsAAAAAgAAAAAAAP%2B1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADxAAABAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAGYA0wDQANEArwBnAJEAsADWANQA1QBoAOsA6QDtAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA1wB4AHoAeQB7AH0AfAChALEAiQB%2FAH4AgACBAOwAugDqAO4BBAEFAAkAEwAUABUAFgAXABgAGQAaABsAHAARAA8AHQAeAAQAowAiAKIACgAFALYAtwC0ALUAxADFAL4AvwCpAKoAEAEGALIAswDDAIcAQgALAAwAPgBAAF4AYAASAF8APwDoAA0AhgCIAIsAigAjAAYBBwEIAQkBCgELAQwBDQEOAQ8AnQCeARABEQCDAL0ABwCFAJYBEgCEALwBEwAIAPUA9AD2AA4A7wDwALgAIAAfACEAkwBBAGEApAEUAEMAjQDYANkAjgDaAN0A3gEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUETlVMTAJDUgNmX2YDZl90B3VuaTAwQUQIb25lLnN1cHMIdHdvLnN1cHMKdGhyZWUuc3Vwcwlmb3VyLnN1cHMJemVyby5kbm9tCG9uZS5kbm9tCHR3by5kbm9tCnRocmVlLmRub20JZm91ci5kbm9tBmEuc3VwcwZvLnN1cHMERXVybwd1bmkyMjE1B3VuaTAwQjUHdW5pMDMwMAt1bmkwMzAwLmNhcAd1bmkwMzAxC3VuaTAzMDEuY2FwB3VuaTAzMDILdW5pMDMwMi5jYXAHdW5pMDMwMwt1bmkwMzAzLmNhcAd1bmkwMzA0B3VuaTAzMDgLdW5pMDMwOC5jYXAHdW5pMDMwQQt1bmkwMzBBLmNhcAd1bmkwMzI3C3VuaTAzMjcuY2FwB3VuaTAwQTAFaS50cmsAAAAAAAAB%2F%2F8AAgABAAAADAAAAAAAAAACAAgABAA3AAEAPgA%2BAAEATgBPAAEAZwBnAAEAbgBvAAEAeAB4AAEAeQB6AAIA2gDaAAEAAQAAAAoAMABEAAJERkxUAA5sYXRuABoABAAAAAD%2F%2FwABAAAABAAAAAD%2F%2FwABAAEAAmtlcm4ADmtlcm4ADgAAAAEAAAABAAQAAgAAAAIACgFIAAEAJgAEAAAADgBGAGwAggCkALoAzADiAPABAgEIARIBIAEqATQAAQAOAAkAEwAZABsAMwA1AFYAcACLAI0AngCnAKkAwgAJABkABAAb%2F%2BgAM%2F%2FsADX%2F5gBlABIAZgAkAJ7%2F8gCn%2F7sArwAUAAUAG%2F%2FoADX%2F8gCe%2F%2FgAp%2F%2B1AK8AHgAIADP%2F9wA1%2F%2FEAYwAKAGUAKABmADMAnv%2F1AKf%2F0QCvADUABQAz%2F%2FAANf%2F2AJ7%2F2ACr%2F%2FYArwAIAAQAGf%2F8AKf%2F7ACr%2F%2FgArwAtAAUAGf%2F5ABv%2F9gCe%2F%2BwAq%2F%2FxAK8AJgADAKf%2FxgCp%2F9gAq%2F%2FCAAQAM%2F%2FwADUABgCp%2F%2BYAr%2F%2FdAAEAGf%2FgAAIAGf%2FGABv%2F1gADABn%2F5gAb%2F%2BYANf%2FsAAIAZgAHAPAAGQACABn%2FywAz%2F%2BwAAgB%2F%2F%2FoAgf%2F6AAIUjAAEAAAU3hYsADkALgAA%2F%2Bf%2Fq%2F%2Fj%2F%2Bf%2FtwAhAEn%2F%2BgANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fw%2F9MAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FwAAAAAD%2FxgAAAAAAAAAAAAAAAP%2Fo%2F%2Bj%2F2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Bp%2F9j%2F2P%2BnAAAAOwAAAAAAAAAA%2F8L%2F3QAA%2F9T%2F3f%2FC%2F%2BsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAZAAAAAAAAAAD%2F2AAAAAAAAP%2FoAAD%2F4f%2BwABkACf%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F2P%2FxAAD%2F8gAAAAD%2F%2FP%2Fy%2F8kAAAAAAAD%2F%2BP%2F2AAD%2F9gAAAAAAAP%2Fy%2F%2Fr%2Fov%2FY%2F%2Bj%2FsAAAAAAAAAAA%2F%2FIABP%2Fm%2F8z%2Fxv%2FyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAD%2F%2FP%2FyAAAAAP%2F2%2F%2FIAAAAAAAD%2F8v%2F8AAAAAAAAAAD%2F8AAA%2F%2FYAAP%2FiAAD%2F7AAAAAAAAAAAAAD%2F%2Bv%2F8AAAAAAAA%2F%2FL%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B7%2F8v%2F8%2F%2Fn%2F7AAA%2F%2Fb%2F8gAAAAAAAP%2Fo%2F%2Fb%2F4wAAAAAAAP%2F2AAD%2F8v%2F2AAAAAP%2FMAA4AAAAAAAAAAP%2F8%2F%2FwAAAAAAAD%2F8gAA%2F%2Bb%2F8gAAAAAAAAAAAAAAAAAAAAD%2F7AAA%2F%2FwAAAAAAAAAAAAAAAAAAP%2F8AAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5AAAAAAACAAAAAAAAAAA%2F%2FIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fw%2F%2FL%2F9v%2FwAAD%2F9v%2Fw%2F%2Bz%2F7gAA%2F%2Fb%2F8gAA%2F%2BoAAAAA%2F%2FkAAAAA%2F%2Bb%2F8v%2FsAAD%2F0gAAAAAAAAAAAAD%2F9AAA%2F%2Fn%2F7P%2Fu%2F%2Bz%2F8P%2Fi%2F%2FYAAAAA%2F%2FIAAAAAAAAAAAAA%2F4j%2F4%2F%2FI%2F7T%2F%2FAAA%2F97%2F3P%2ByAAAAA%2F%2FqAAD%2F5gAA%2F%2FL%2F9AAAAAD%2F7P%2F2%2F2j%2FsP%2Bk%2F6QAAAAAAAAAAP%2B0AAD%2F4P%2Bn%2F7L%2F3AAA%2F8r%2F3gAAAAAAAAAAAAAAAAAAAAD%2F7AAA%2F%2Fr%2F7AAAAAAAAAAAAAAAAP%2F2AAD%2F7AAAAAAAAAAA%2F9gAAAAAAAD%2F3gAAAAAABv%2FyAAAAAAAA%2F%2Fb%2F7wAAAAAAAAAAAAAAAAAAAAAAAP%2F5AAAAAAAAAAAAAP%2FsAAAAAP%2Fy%2F%2FYAAAAAAAAAAAAA%2F%2Fb%2F8v%2F2AAD%2F9gAA%2F%2Fb%2F7gAAAAAAAP%2F2AAD%2F9gAOAAAAAAAAAAD%2F8v%2F2AAAAAAAAAAD%2F8v%2Fa%2F%2BIAAAAA%2F%2FL%2F8gAAAAAAAAAA%2F%2BwAAAAA%2F%2FkAAAAAAAAAAAAAAAAAAP%2FyAAAAAAAAAAAAAP%2FyAAAAAAAA%2F%2B4AAP%2F4AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8v%2B3AAD%2F3v%2FfAAD%2Flv%2FY%2F9n%2Fyv%2Fo%2F7f%2F7v%2B%2B%2F4IAAP%2Fu%2F9IAAAAA%2F8AAFP%2BnAAAAAAAAAAD%2F7AAAAAAAAP%2Ff%2F9n%2FsP%2FR%2F9L%2Fxf%2B1%2F9gAAAAAAAAAAAAAAAAAAP%2Fy%2F%2FYAAAAAAAAAAP%2Fw%2F%2B7%2F9gAAAAD%2F%2FAAAAAD%2F0QAAAAAAAAAAAAAAAAAA%2F%2BEAAAAAAAD%2F9v%2F2AAAAAAAAAAD%2F%2BQAAAAAAAP%2F8AAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8wAAAAAAAAAA%2F94AAP%2F6%2F%2Fr%2F%2Bv%2FwAAAAAP%2B%2FAAAAAAAAAAAAAAAAACf%2F4wAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Fz%2F9gAAAAD%2F9v%2FwAAAAAAAAAAD%2F8v%2F2AAAAAP%2FEAAD%2F6P%2FyAAn%2Fpf%2Fy%2F%2FD%2F5v%2Fy%2F70AAP%2FX%2F5wAAP%2Fy%2F94AAAAA%2F9IAIf%2B9AAAAAAAAAAAAAP%2F5AAAAAP%2Fy%2F97%2Fvv%2FJ%2F9j%2F1%2F%2FR%2F9P%2F5wAAAAAAAAAA%2F%2Fb%2F%2Bv%2Fy%2F%2FIAAP%2Fw%2F%2FAAAAAA%2F%2Fr%2F4v%2F2%2F%2Bz%2F8P%2Fs%2F%2Bv%2F3wAA%2F%2FL%2F6QAAAAD%2FxAAUAAAAAAAAAAD%2F%2BgAAAAAAAAAA%2F%2FAAAP%2Fe%2F94AAAAAAAAAAAAAAAAAAAAA%2F%2BgAAP%2F8%2F%2BgAAAAAAAAAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8oAAAAAAAAAAAAAAAAAAP%2FwAAD%2F9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAD%2F6P%2F2AAAABgAGAAAAAAAAAAAAAAAA%2F%2FYAAP%2FrAAAAAAAAAAAAAAAA%2F%2FIAFAAAAAAAAAAA%2F%2FIAAAAAAAAAAAAGAAj%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FmAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F5b%2F7P%2Fe%2F6QAAAAa%2F%2Br%2F7P%2BYAAAAAAAAAAAAAAAAAAD%2F%2BAAAAAD%2F5AAA%2F3YAAAAAAAAAAAAAAAAAAP%2B4AAAAAP%2Bg%2F6z%2F3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6AAA%2F%2Fb%2F5v%2F2AAAABQAF%2F%2FYAAAAA%2F%2BwAAAAA%2F%2FIAAAAA%2F%2BwAAP%2FyAAD%2F3v%2Fs%2F%2FwAAAAAAAAAAAAA%2F%2FAAAP%2F5AAAAAAAF%2F%2FkABgAAAAAAAAAEAAAAAAAAAAAAAAAuAAAALgAu%2F%2FL%2F9gAAAAAAIv%2FOAAAAAAAAAAD%2F7AAA%2F%2FYAAAAAAAD%2F8QAAAD7%2F7ABL%2F%2FIADgAAAAAANgAhABoAKAAiAA3%2F%2FP%2FyAAAAAP%2F8%2F%2FIAAAAAADEAAAAA%2F%2BYAAAAA%2F%2FIAAAAl%2F%2Fz%2F%2FAAAAAAAAAAAAAAAAP%2FwAAD%2F8gAAAAAAAAAA%2F94AAP%2F4AA4AMAAAAAAAAAAAAAD%2F3AAAAAD%2F%2FAAAAAAAAAAAAAD%2F8gAAAAAADgAAAAD%2F6gAAAAD%2F9f%2F2%2F%2FYAAAAA%2F%2BYADgAAAAAAAAAA%2F%2FYAAP%2FuAAAAAP%2Fy%2F%2FL%2F8gAA%2F%2Bb%2F%2BQAAAAAAAAAAAAAAAP%2F0AAAAAAAA%2F%2Fz%2F1P%2FmAAAAAP%2F5%2F%2FkAAAAAAAAAAP%2FoAAAAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FeAAAAAAAAAAAAAAAAAAD%2F9gAA%2F%2FkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8cAAAAA%2F9IAAAAA%2F%2Fz%2F%2FP%2Fm%2F%2FYAAAAAAAAAAP%2FyAAAAAAAAAAAAAAAAAAD%2F5gAA%2F%2FkAAAAAAAAAAP%2Ft%2F%2Fz%2F9AAA%2F%2FL%2F%2FP%2FvAAYAAAAAAAD%2F%2BgAAAAAAAAAAAAAAAAAAAAAACf%2FfAAAAAAAAAAD%2Frf%2FJAAAAAAAA%2F9X%2F8v%2FfAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Fy%2F97AAD%2F%2BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Fb%2F%2BgANABP%2F%2Bf%2FH%2F%2B0AAP%2F2AAD%2F5wAA%2F%2Fb%2FyQAAAAAAAAAAAA3%2F8AA%2B%2F94AAAAAAAAAAAAAAAAAAAAiABMAAP%2Fo%2F%2BwAAP%2F2%2F%2FYAAAAAAAAAAAAA%2F%2BgAAAAA%2F%2BwAAAAAAAAAAP%2F1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F88AAAAAAAAAAAAAAAAAAP%2F2AAD%2F9QAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAD%2F8gAAAAD%2F%2FP%2F2AAAAAAAAAAAADgAAAAAAAAAA%2F%2B4AAP%2F2AAAAAAAA%2F%2FoAAAAA%2F%2BwAIgAOAAAAAAAAAAAAAP%2FmAAAAAAAAAAD%2F5v%2FuAAAAAAAAAAAADgAAAAAAAP%2FsAAAAAP%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAAAAAAAAAAAAAAAAAD%2F8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BgAAAAA%2F%2FUAAP%2F2AAAAAAAA%2F9f%2F%2FAAAAAAAAP%2F2AAD%2F%2FP%2FiAAAAAAAA%2F%2FgAAAAAACb%2F%2BAAAAAAAAP%2F8%2F%2FIAAAAAAAAAAAAAAAAAAAAAAAD%2F7wAAAAAAAAAAAAD%2F7AAAAAD%2F%2BQAA%2F%2FYAAAAAAAD%2F3QAAAAAAAAAA%2F%2BwAAP%2F8%2F9gAAAAAAAAAAAAAAAAALf%2FyAAAAAAAA%2F%2Fz%2F%2FAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAAAAAAAAAAAAP%2FmAAAAAP%2F8%2F%2FoAAAAA%2F%2FwAAAAAAAAAAAAAAAD%2F6QAA%2F%2FYAAAAAAAD%2F9gAAAAD%2F%2BAAZAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FwAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAP%2FoAAD%2F8P%2FwAAD%2FuP%2Fb%2F%2Bz%2F4v%2F2%2F94AAP%2Fy%2F3YAAP%2F2%2F%2FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fs%2F%2Bz%2F7P%2FiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6AAAAAAAAAAAAAAAAAAA%2F9kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAAAAP%2F2%2F%2BIAAAAAAAAAAP%2BQ%2F87%2F9v%2ByAAD%2F1QAA%2F%2Bj%2FbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fn%2F%2BwAAP%2F2%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F2AAAAAP%2FrAAD%2F9%2F%2F3AAD%2Fv%2F%2Fy%2F%2FD%2F7f%2F2%2F%2BoAAP%2Fx%2F7f%2F%2FQAA%2F%2BIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7f%2Fr%2F%2Bz%2F9P%2Fn%2F%2B0AAAAAAAAAAP%2Fs%2F%2FYAAAAAAAAAAP%2Fy%2F%2FD%2F%2BQAAAAP%2F8gAA%2F%2B%2F%2F9v%2Fw%2F%2Fn%2F%2BwAA%2F%2FD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2FP%2F5AAAAAP%2Fl%2F%2FIAAAAA%2F%2FL%2F%2BQAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5wAA%2F%2Fz%2FvgAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bb%2F5gAAAAAAAP%2F8%2F%2FIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fy%2F%2FD%2FyAAAAAAAAAAAAAAAAP%2F8AAAAAAAA%2F%2FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FD%2Fvf%2FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9gAAP%2Fv%2F9MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fv%2F%2FkAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F0gAA%2F%2Fb%2FyQAAAAAAAAAAAAAAAAAA%2F%2BL%2F7gAAAAAAAAAA%2F%2BIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bv%2F8gAAAAAAAAAA%2F%2BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F43%2FyQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FwAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FfAAAAAAAAAAD%2FfP%2FGAAAAAAAA%2F97%2F8P%2FfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2BQAAAAAAAAAAAAAAAAAAAAD%2FzwAAAAAAAAAAAAAAAP%2FsAAAAAP%2F5AAD%2F9gAAAAAAAP%2Fd%2F%2FUAAP%2F8AAD%2F7AAA%2F%2Fz%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F5AAAAAAAA%2F%2BgAAAAAAAAAAAAA%2F98AAAAA%2F%2FEAAAAAAAD%2F8gAAAAAAAP%2F8AAD%2F9v%2F2AAD%2F7wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FL%2F6AAAAAAAAP%2FsAAAAAAACAA0ABAAgAAAAIgAlAB0AKAAoACEAKgBiACIAZwB2AFsAeAB6AGsAhgCTAG4AlgCeAHwAoQChAIUAowCjAIYApQClAIcApwCnAIgAqQCpAIkAAQAEAKQABgAHAAgADAAmACcACQAoACkAKgAKAAsAKAAoAAwAKwAMAA0ADgAPABAALQARAC4AEgATABQAHQAVAAAAGAAZABoAHAAAAAAAGwAAABwAHAAdAB0AIgAfACAAIQAiADcAIwA4ACQAJQAGAAYABgAGAAYABgAmAAgAJgAmACYAJgApACkAKQApACgADAAMAAwADAAMAAwAJgAQABAAEAAQABIADAAsABQAFAAUABQAFAAUABgAFQAYABgAGAAYAAAAAAAAAAAAIgAcAB0AHQAdAB0AHQAdABgAMQAiACIAIgAiACQAJAAAAB0AGQAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXABcAFgAWAAEAAgA0AAQANQA1AB4ANgAeADYAAAAAADIAMwAyADMAMAAwADAAMAADAAAAAAAvAAAALwAAAC8AAAAFAAIASAAEAAQADAAGAAYADwAKAAoADwANAA0AEwASABIADwAUABQADwAWABYADQAXABcAAgAYABgAAwAZABkAHwAaABoABAAbABsAIAAcABwABQAdAB0ADgAeAB4AEAAgACIAEgAjACMAEQAkACQABgAmACYAFAAnACcABwAqACsAKAAsACwAEgAtAC0AKAAuAC4AEgAvAC8AKAAwADAAKQAxADEAFQAyADIAFgAzADMAJAA0ADQACAA1ADUAJQA2ADYACQA3ADcAKgA4AD0ADAA%2FAD8ADwBJAE8ADwBQAFMAAwBUAFQABQBVAFUAAQBXAF0AEABeAGIAEgBjAGYAFABnAGgAKABpAG8AEgBxAHQAFgB1AHYACQB5AHoAEQCGAIcACwCIAIkALACKAIoAHACLAIsAHQCMAIwAIQCNAI0AHgCOAI8AIgCQAJAAIwCRAJEACgCSAJIAIwCTAJMACgCWAJYAJwCXAJcAKwCYAJgAJwCZAJkAKwCaAJ0AJgCeAJ4AGQCiAKIALQCkAKQALQCmAKYALQCnAKcAGwCpAKkAGACrAKsAFwCvAK8AGgDwAPAAFAABAAAACgBgAJ4AAkRGTFQADmxhdG4AGgAEAAAAAP%2F%2FAAEAAAAWAANBWkUgAB5DUlQgAChUUksgADIAAP%2F%2FAAEAAQAA%2F%2F8AAgACAAUAAP%2F%2FAAIAAwAGAAD%2F%2FwACAAQABwAIbGlnYQAybGlnYQAybGlnYQAybGlnYQAybGlnYQAybG9jbAA4bG9jbAA4bG9jbAA4AAAAAQABAAAAAQAAAAIABgAaAAEAAAABAAgAAQAGAMoAAQABACYABAAAAAEACAABABoAAQAIAAIABgAMAHkAAgAjAHoAAgAxAAEAAQAj%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Sans%20Pro%27%3B%0Afont%2Dstyle%3A%20normal%3B%0Afont%2Dweight%3A%20700%3B%0Asrc%3A%20url%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAARAQAABAAQR0RFRgNEA3IAAG3kAAAAQEdQT1Pl%2B8B5AABuJAAAGVZHU1VC8WfWVwAAh3wAAADgT1MvMlvgllUAAGSUAAAAYGNtYXDzMPm1AABk9AAAAeZjdnQgDdkBaQAAaJwAAAAoZnBnbQZZnDcAAGbcAAABc2dhc3D%2F%2FwADAABt3AAAAAhnbHlm8iwszwAAARwAAF1UaGVhZP4ts7AAAGB0AAAANmhoZWEHuwObAABkcAAAACRobXR4wFMeHQAAYKwAAAPEbG9jYRMoKywAAF6QAAAB5G1heHADCwJCAABecAAAACBuYW1lJBs%2BoAAAaMQAAAHccG9zdGxQSG8AAGqgAAADOXByZXBFzLadAABoUAAAAEsABQBQAAACYgKUAAMABgAJAA8AFQBnALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAUAAgAAERI5ugAGAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugANAAIAABESObgAABC5ABIAAfQwMRMhESETJxEhEQcXLwEjDwETPwEjHwFQAhL97sFfAU1eCicpBCknVCogmB8rApT9bAFUuv6NAXO6%2BU1iYk0BQ187O18AAv%2F6AAACQwKMAAkAEQBUALgAAEVYuAAOLxu5AA4AED5ZuAAARVi4AAwvG7kADAAEPlm4AABFWLgAES8buQARAAQ%2BWboABQAMAA4REjm6AAsADAAOERI5uAALL7kACQAB9DAxAScuAScjDgEPARcjByMTMxMjAWEPDhoNBAwZDhCpxyiWzLHMnAEOPDFuMzRtMTxzmwKM%2FXQAAAAAAwBNAAACPAKMABUAHgAmAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAFS8buQAVAAQ%2BWboAJAAAABUREjm4ACQvugAMACQAFhESObgAABC5AB0AAfS4ACQQuQAeAAH0uAAVELkAJgAB9DAxEzMyHgIVFA4CBxUeARUUDgIrARMyNjU0JisBFRMyNTQmKwEVTd8zV0ElDRoqHEZHJ0VcNfLYNjEyNEZTeTw9UwKMDyY%2BLxYsJh4HBA1KQjJILxcBhSslJSCV%2Fu1ZKyerAAAAAAEALv%2F0AjACmAAfADkAuAAARVi4AAUvG7kABQAQPlm4AABFWLgAGy8buQAbAAQ%2BWbgABRC5AAwAAfS4ABsQuQAUAAH0MDETND4CMzIWFwcuASMiDgIVFBYzMjY3Fw4BIyIuAi4yVXE%2FPWMhURkzIiI7LBlWSCg8GFEpaT0%2FcFQwAUJRf1guMyJbFxodNk4xZW8gGlkwMCtUfQAAAAIATQAAAkwCjAAMABkANQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAMLxu5AAwABD5ZuQANAAH0uAAAELkAFwAB9DAxEzMyHgIVFA4CKwE3Mj4CNTQuAisBEU24S3hWLi5UdUjArypEMBsbMEQqHAKMJk96VFR8USh3FjFQOzpPLxT%2BYgAAAAABAE0AAAHvAowACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQADAAH0ugAHAAAACxESObgABy%2B5AAUAAfS4AAsQuQAIAAH0MDETIRUhFTMVIxUhFSFNAZj%2B%2B97eAQ%2F%2BXgKMfIN7lnwAAAAAAQBNAAAB6AKMAAkAQwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAJLxu5AAkABD5ZuAAAELkAAwAB9LoABwAAAAkREjm4AAcvuQAFAAH0MDETIRUhFTMVIxUjTQGb%2Fvji4pMCjHyXfP0AAAAAAQAu%2F%2FQCRAKYACMATQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAfLxu5AB8ABD5ZuAAFELkADAAB9LgAHxC5ABQAAfS6ABsABQAfERI5uAAbL7kAGQAB9DAxEzQ%2BAjMyFhcHLgEjIg4CFRQWMzI2NzUjNTMRDgEjIi4CLjNXdUJFZSBRGDUqJj8uGVtcFCYMbO4jckVCc1YxAUJRf1guNCFbFxodNk4xZW8KCnB4%2FtQhLitUfQAAAAEATQAAAlUCjAALAEkAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACy8buQALAAQ%2BWboACQAAAAsREjm4AAkvuQADAAH0uAAAELgABNC4AAsQuAAH0DAxEzMVMzUzESMRIxEjTZPhlJThkwKM%2B%2Fv9dAEQ%2FvAAAQBNAAAA4AKMAAMAJQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAADLxu5AAMABD5ZMDETMxEjTZOTAoz9dAAAAAEAEP%2F0AbMCjAARACsAuAAARVi4AAcvG7kABwAQPlm4AABFWLgADi8buQAOAAQ%2BWbkAAwAB9DAxNx4BMzI2NREzERQOAiMiJid0EjAZKCmTGTNPNktlIrQhIDFBAaf%2BTS9UPiQ6PAAAAQBNAAACbAKMAAwAWwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAELxu5AAQAED5ZuAAARVi4AAwvG7kADAAEPlm4AABFWLgACC8buQAIAAQ%2BWboAAgAAAAwREjm6AAkABAAIERI5MDETMxEzEzMDEyMDBxUjTZMEwqLF6aGfTJMCjP71AQv%2B%2FP54ARNkrwAAAQBNAAAB4gKMAAUAKwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAFLxu5AAUABD5ZuQACAAH0MDETMxEhFSFNkwEC%2FmsCjP3wfAAAAAEATQAAAq0CjAAdAG8AuAAARVi4AAAvG7kAAAAQPlm4AABFWLgABi8buQAGABA%2BWbgAAEVYuAAdLxu5AB0ABD5ZuAAARVi4AAkvG7kACQAEPlm6AAMABgAJERI5ugAQAAYACRESOboAEwAdAAYREjm6ABYAAAAdERI5MDETMxMXMzcTMxEjNTQ%2BAjcjDwEjLwEjHgMdASNNnG0nBCdqm4kEBgYDBDZkO2Q0BAMGBQSHAoz%2B23JyASX9dO8YOjs5GJf9%2FZcYOTs6GO8AAAEATQAAAkwCjAATAFsAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACC8buQAIABA%2BWbgAAEVYuAATLxu5ABMABD5ZuAAARVi4AAsvG7kACwAEPlm6AAQACwAIERI5ugAOAAAAExESOTAxEzMTFzMuAT0BMxEjAycjHgEdASNNl6pABAUNjJeqQAQFDYwCjP68kDSAOub9dAFFjjZ8OucAAAACAC7%2F9AJ%2BApgAEwAfADUAuAAARVi4AAovG7kACgAQPlm4AABFWLgAAC8buQAAAAQ%2BWbkAFAAB9LgAChC5ABoAAfQwMQUiLgI1ND4CMzIeAhUUDgInMjY1NCYjIgYVFBYBVkJtTisrTm1CQm1OKytObUJDTk5DQ05ODC9YflBQfVUtLVZ9T1B%2BWC9%2Fc2Nibm5iY3MAAgBNAAACOgKMAA4AFgBDALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AA4vG7kADgAEPlm6AAwAAAAOERI5uAAML7kADwAB9LgAABC5ABUAAfQwMRMzMh4CFRQOAisBFSMTMjU0JisBFU3uNV1FKClGXDRbk%2BV4PTtSAowVMVE7OVQ2Gt0BUmgzKsUAAAACAC7%2FTgKgApgACwAqAEsAuAAARVi4ABwvG7kAHAAQPlm4AABFWLgAEi8buQASAAQ%2BWbsAJwABAA8ABCu4ABIQuQADAAH0uAAcELkACQAB9LgAEhC4ACTQMDETFBYzMjY1NCYjIgYBDgEjIiYnLgM1ND4CMzIeAhUUBgceATMyNjfFTkNDTk5DQ04B2xI7JmiPIzRVPCArTm1CQm1OK3BfF04qFSUOAUlpdHRpYm5u%2FbgJDGBNCzdWcUVQfVUtLVZ9T4SqGyIbBwUAAAACAE0AAAJTAowACAAYAFQAuAAARVi4AA4vG7kADgAQPlm4AABFWLgADC8buQAMAAQ%2BWbgAAEVYuAAJLxu5AAkABD5ZuwABAAEACgAEK7gADhC5AAgAAfS6ABcAAQAKERI5MDETMzI2NTQmKwETJyMVIxEzMh4CFRQGBxPgTDo9PTpMzn1Rk%2Bs0W0QoPzWUAWAxMDAm%2Fenr6wKMFC9OOkhdF%2F77AAEAI%2F%2F0AgoCmAAxAEkAuAAARVi4ABYvG7kAFgAQPlm4AABFWLgALi8buQAuAAQ%2BWbkAAwAB9LoACwAWAC4REjm4ABYQuQAdAAH0ugAlAC4AFhESOTAxNx4BMzI2NTQuAi8BLgM1ND4CMzIWFwcuASMiBhUUHgIfAR4BFRQOAiMiJid3I1UpLi0NGSMVVRkvJRYiPlUzOW8qSyBAJyYtDxskFVQ8RSE%2FXDpAfzK3HiYiHQ8WEQ8JJAogKzkkKEc1HiwqXRkbHxwPFREPCSIYVEUpSTchLy8AAAEAGQAAAhMCjAAHADMAuAAARVi4AAIvG7kAAgAQPlm4AABFWLgABy8buQAHAAQ%2BWbgAAhC5AAAAAfS4AAXQMDETIzUhFSMRI8yzAfqzlAIQfHz98AAAAAABAEn%2F9AJPAowAEQA8ALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAkvG7kACQAQPlm4AABFWLgADi8buQAOAAQ%2BWbkABQAB9DAxEzMRFBYzMjY1ETMRFAYjIiY1SZQ6Nzc8joN%2Bf4YCjP6TYExMYAFt%2FqKklpakAAAB%2F%2FkAAAIzAowADQBAALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAovG7kACgAQPlm4AABFWLgADS8buQANAAQ%2BWboABQAAAA0REjkwMQMzEx4BFzM%2BATcTMwMjB5xODxcPBA4YDk2WxLECjP7QNmU2NmU2ATD9dAABAA4AAAMgAowAIQB2ALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAovG7kACgAQPlm4AABFWLgAFC8buQAUABA%2BWbgAAEVYuAAhLxu5ACEABD5ZuAAARVi4ABcvG7kAFwAEPlm6AAUAAAAhERI5ugAPABQAFxESOboAHAAhAAoREjkwMRMzEx4BFzM%2BATcTMxMeARczPgE3EzMDIwMuAScjDgEHAyMOly0GDgYEChMKRn1GChMKBAcNBy2NdLlACA0FBAYNCD22Aoz%2BzzNnNDRnMwEx%2Fs8yZzU1ZjMBMf10ASgmTSQkTSb%2B2AAAAAEACwAAAiwCjAAZAFsAuAAARVi4AAEvG7kAAQAQPlm4AABFWLgACy8buQALABA%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAARVi4AA8vG7kADwAEPlm6AAYAAQAZERI5ugATAA8ACxESOTAxEwMzFx4BFzM%2BAT8BMwMTIycuAScjDgEPASPAqqQ5CxYOBAsVCjSdqbSkQQwXDgQLFgs9ngFPAT17FzMfHzMXe%2F68%2FriFGjMeHjMahQAAAAAB%2F%2FgAAAIVAowADwBAALgAAEVYuAABLxu5AAEAED5ZuAAARVi4AAsvG7kACwAQPlm4AABFWLgADy8buQAPAAQ%2BWboABgABAA8REjkwMTcDMxceARczPgE%2FATMDFSO9xZ46DhkOBA4bDjuaxZPoAaSWJUUmJkUllv5c6AAAAQAkAAAB%2FAKMAAkAPQC4AABFWLgAAy8buQADABA%2BWbgAAEVYuAAILxu5AAgABD5ZuQAGAAH0uAAA0LgAAxC5AAEAAfS4AAXQMDE3ASE1IRUBIRUhJAEg%2FvsBuv7gASP%2BKFkBt3xZ%2Fkl8AAAAAgAv%2F%2FQB2QH8ABsAJQB2ALgAAEVYuAANLxu5AA0ACD5ZuAAARVi4ABcvG7kAFwAEPlm4AABFWLgAEi8buQASAAQ%2BWboAAwANABcREjm4AAMvuAANELkABgAB9LoAEwASAA0REjm4ABcQuQAfAAH0uAATELkAIgAB9LgAAxC5ACMAAfQwMTc0NjcuASMiBgcnPgEzMhYVESMnIw4BIyIuAjcUFjMyNjc1DgEvhJMCJCggQCQ0MGk7YGV4CwMgRyoiNiYVjB8aGiQUTzyKTlgPIScYFWEdJG1z%2FuQzHCMXKTYrGBcWFFcLKgAAAAACAEH%2F9AIWAr0AFgAhAIMAuAAARVi4AAAvG7kAAAASPlm4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAQLxu5ABAABD5ZuAAARVi4ABYvG7kAFgAEPlm6AAMABgAQERI5ugATABAABhESObgAExC5ABcAAfS4ABAQuQAaAAH0uAAGELkAHwAB9LgAAxC5ACEAAfQwMRMzFQc%2BATMyHgIVFA4CIyImJyMHIzceATMyNjU0IyIHQZMEHUMjLUgzGyM7SyghQx0EDHOTFCgTJjZWLCkCvaxMGh0kQV05QGRFJCAgNIwSDkVNhi0AAQAk%2F%2FQBvgH8ABwAOQC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAYLxu5ABgABD5ZuAAFELkACwAB9LgAGBC5ABEAAfQwMTc0PgIzMhYXByYjIgYVFBYzMjY3Fw4BIyIuAiQqR14zLkoZQyMiNj4%2FMBssEjskWCk0WUIm%2BD5hQiMfGlsdTEFBTBYOXSAeI0JhAAAAAAIAJ%2F%2F0AfwCvQAWACMAgwC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAKLxu5AAoAEj5ZuAAARVi4ABIvG7kAEgAEPlm4AABFWLgADS8buQANAAQ%2BWboACAASAAUREjm6AA4ABQASERI5uAASELkAGgAB9LgADhC5AB0AAfS4AAgQuQAeAAH0uAAFELkAIQAB9DAxNzQ%2BAjMyFhcnNTMRIycjDgEjIi4CNxQWMzI2NzUuASMiBicjOUsnKjYaBpN4CgQaRiQuSzUdly8rGCcSFCoUIzb4PWBDJBwYTKn9QzEaIyRDYD9KRBQZyxIOQwAAAAIAJP%2F0AeEB%2FAAbACIAUQC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAAXLxu5ABcABD5ZugANAAUAFxESObgADS%2B4ABcQuQARAAH0uAAFELkAHwAB9LgADRC5ACIAAfQwMTc0PgIzMh4CFRQGByEeATMyNxcOASMiLgIlNCYjIgYHJChBVC01TzUaBAL%2B1wpFMjU2MSZdLTVcRCYBQCYtIzUI%2BDxhQyQkQFczFCEJOTMhWRoeI0NgcSs2LzIAAQAYAAABdALJABgAVgC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAVLxu5ABUAEj5ZuAAARVi4AAovG7kACgAEPlm4ABUQuQACAAH0uAAGELkACQAB9LgADNC4AAYQuAAP0DAxASYjIgYdATMVIxEjESM1NzU0PgIzMhYXAVkcFxseWVmTQkITLEYyHzMRAksKISYec%2F6DAX1tBRsnRjQeDAYAAAADACL%2FLQIHAfwADgBDAE8AbQC4AABFWLgAIS8buQAhAAg%2BWbgAAEVYuAA%2FLxu5AD8ABj5ZuQADAAH0ugA2ACEAPxESObgANi%2B5AAkAAfS4ACEQuAAk0LgAJC%2B5ACUAAfS4ADYQuAAu0LgALi%2B5AEQAAfS4ACEQuQBKAAH0MDEXFBYzMjY1NCYrASImJwYHNDc1LgE1NDY3NS4BNTQ%2BAjMyFzMVIx4BFRQOAiMiJw4BFRQWOwEyFhUUDgIjIi4CEzI2NTQmIyIGFRQWmzwyMkAnJTMaIAwbeUcUGiAYGikiOUooLCG1TwcJHjVHKR0fCgghKlBcYSdIZkAsSzkg2x0nJx0dJyc%2BHB0jGhcQAwMYMDwoBA0oHxsxEQQSQywtQy0WDGsLIhQrPykUCggQDRMSO0MnQS8bDx4wAWwpKicpKCgqKQABAEEAAAIAAr0AFABYALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4AAAvG7kAAAASPlm4AABFWLgAFC8buQAUAAQ%2BWboAAwAGABQREjm4AAvQuAAGELkADwAB9LgAAxC5ABIAAfQwMRMzFQc%2BATMyFhURIxE0JiMiBgcRI0GTBxxKM1FJkx0gHCgYkwK9rFkZK2pe%2FswBITYoGRf%2BsQACADUAAADfAtIACwAPAC0AuAAARVi4AAwvG7kADAAIPlm4AABFWLgADi8buQAOAAQ%2BWboABgAAAAMrMDETIiY1NDYzMhYVFAYHMxEjiiUwMCUmLy9vk5MCOSsiIioqIiIrSf4QAAAAAAL%2Fzf88AOEC0gARAB0ANwC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAHLxu5AAcABj5ZugAYABIAAyu4AAcQuQAOAAH0MDETMxEUDgIjIiYnNx4BMzI2NRMiJjU0NjMyFhUUBkKTESlEMx8pDxoKEgsdF0olMDAlJTAwAfD%2BEylINiAIBmwDBCYqAjorIiIqKiIiKwABAEEAAAIeAr0ADABbALgAAEVYuAAELxu5AAQACD5ZuAAARVi4AAAvG7kAAAASPlm4AABFWLgADC8buQAMAAQ%2BWbgAAEVYuAAILxu5AAgABD5ZugACAAAADBESOboACQAAAAgREjkwMRMzETM3MwcTIycHFSNBjwSdoK67n3A%2FjwK9%2Fm7FzP7cwUd6AAEAQf%2F0ARICvQARACsAuAAARVi4AAAvG7kAAAASPlm4AABFWLgADC8buQAMAAQ%2BWbkABQAB9DAxEzMRFBYzOgE3Fw4BIyIuAjVBkxEJBQcGEgwlGSY0Hw4Cvf3XFxICbQUHGCs9JgAAAQBBAAADHQH8ACEAmAC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAACD5ZuAAARVi4ACEvG7kAIQAEPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAARLxu5ABEABD5ZugACAAAAIRESOboACQAAACEREjm4AAYQuAAM0LkAFQAB9LgACRC5ABcAAfS4AAYQuQAdAAH0uAACELkAHwAB9DAxEzMXMz4BMzIWFz4BMzIWFREjETQmIyIHESMRNCYjIgcRI0F4CgQfRjE1QRMhSTJQS5MdICUwkx0gJi6TAfBAHy0rKCIxa13%2BzAEhNigw%2FrEBITYoMP6xAAAAAAEAQQAAAgAB%2FAAUAGUAuAAARVi4AAYvG7kABgAIPlm4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAULxu5ABQABD5ZuAAARVi4AAsvG7kACwAEPlm6AAIAAAAUERI5uAAGELkADwAB9LgAAhC5ABIAAfQwMRMzFzM%2BATMyFhURIxE0JiMiBgcRI0F4CgQgTDNRSZMdIBwoGJMB8D8eLWpe%2FswBITYoGRf%2BsQAAAAACACT%2F9AIHAfwAEwAfADUAuAAARVi4AAUvG7kABQAIPlm4AABFWLgADy8buQAPAAQ%2BWbkAFwAB9LgABRC5AB0AAfQwMTc0PgIzMh4CFRQOAiMiLgI3FBYzMjY1NCYjIgYkKENYLy9XQygoQ1cvL1hDKJctLi0uLi0uLfg%2BYUIjI0JhPj5hQiMjQmE%2BQUxMQUFMTAAAAgBB%2F0gCFgH8ABYAIQCDALgAAEVYuAAJLxu5AAkACD5ZuAAARVi4AAMvG7kAAwAIPlm4AABFWLgAAi8buQACAAY%2BWbgAAEVYuAATLxu5ABMABD5ZugAFAAkAExESOboAFgATAAkREjm4ABYQuQAXAAH0uAATELkAGgAB9LgACRC5AB8AAfS4AAUQuQAhAAH0MDEXFSMRMxczPgEzMh4CFRQOAiMiJic3HgEzMjY1NCMiB9STeAoEHUknLUgyGyM7SyggPBoFFCgTJjZWKyonkQKoMRojJEJdOUBjRSQbGWQSDkVNhi0AAAIAJ%2F9IAfwB%2FAAWACMAfwC4AABFWLgABS8buQAFAAg%2BWbgAAEVYuAALLxu5AAsACD5ZuAAARVi4AA0vG7kADQAGPlm4AABFWLgAEi8buQASAAQ%2BWboACAAFABIREjm6AA8AEgAFERI5uQAaAAH0uAAPELkAHQAB9LgACBC5AB4AAfS4AAUQuQAhAAH0MDE3ND4CMzIWFzM3MxEjNTcOASMiLgI3FBYzMjY3NS4BIyIGJyM5SycpPh0EDHOTBhlCIi5LNR2XLysYJxIUKhQjNvg9YEMkHSAx%2FViXTBgfJENgP0pEFBnLEg5DAAAAAQBBAAABjwH8ABIAUgC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAACD5ZuAAARVi4ABIvG7kAEgAEPlm6AAIAAAASERI5uAAGELgADdy4AAIQuQAQAAH0MDETMxczPgEzMhYXBy4BIyIGBxEjQXgKBBtMJhUbCxgOGBAcPRSTAfBXMzAFBX8EBCgz%2FuAAAAEAFf%2F0AZ8B%2FAAwAEkAuAAARVi4ABUvG7kAFQAIPlm4AABFWLgALS8buQAtAAQ%2BWbkAAwAB9LoACwAtABUREjm4ABUQuQAcAAH0ugAjABUALRESOTAxNx4BMzI2NTQuAicuAzU0PgIzMhYXBy4BIyIVFB4CFx4DFRQOAiMiJidXIj4gIR4RHSQTFy4mGBsyRis5ViBCGzQaOBAbIxMYLycYGjRMMjFnJpUaGhYUDBMQDQgJGCMvHyI6KBcnGFgUFicMEQ4NBwkXIjEiIjorGSYfAAAAAQAR%2F%2FQBbgJ0ABkARQC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAULxu5ABQABD5ZuAAGELkACQAB9LgAANC4AAYQuAAD0LgAFBC5AA0AAfQwMRMjNT8BMxUzFSMVFBYzMjY3Fw4BIyIuAjVVREwRend3Ix0MGQoXFDYkLkEpEwF9bQaEhHPHKiUGBGsGDBwyRysAAAEAPP%2F0AfgB8AAUAGUAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACS8buQAJAAg%2BWbgAAEVYuAARLxu5ABEABD5ZuAAARVi4AAwvG7kADAAEPlm4ABEQuQAFAAH0ugANAAkADBESObgADRC5AAgAAfQwMRMzERQWMzI2NxEzESMnIw4BIyImNTyTHiAcJhaTeAsDIEkzUUkB8P7fNigaHQFI%2FhBFJitqXgAAAAABAAwAAAH%2FAfAADQBAALgAAEVYuAAALxu5AAAACD5ZuAAARVi4AAovG7kACgAIPlm4AABFWLgADS8buQANAAQ%2BWboABQAAAA0REjkwMRMzFx4BFzM%2BAT8BMwMjDJRAChMKBAkTCkGNoqoB8OolTScnTSXq%2FhAAAAABABgAAALwAfAAIQB2ALgAAEVYuAAALxu5AAAACD5ZuAAARVi4AAovG7kACgAIPlm4AABFWLgAFC8buQAUAAg%2BWbgAAEVYuAAhLxu5ACEABD5ZuAAARVi4ABcvG7kAFwAEPlm6AAUAIQAAERI5ugAPABcAFBESOboAHAAAACAREjkwMRMzFx4BFzM%2BAT8BMxceARczPgE%2FATMDIycuAScjDgEPASMYkjAGCgYEBw0JN384CQ4IBAcJBy%2BId6wtCAwHBAcLByyoAfDmJUgmJkoj5uYlSCYmSCXm%2FhDGI0YoKEYjxgABAA4AAAH0AfAAGQBbALgAAEVYuAABLxu5AAEACD5ZuAAARVi4AAsvG7kACwAIPlm4AABFWLgAGS8buQAZAAQ%2BWbgAAEVYuAAPLxu5AA8ABD5ZugAGAAsADxESOboAFAABABkREjkwMRMnMxceARczPgE%2FATMHFyMnLgEnIw4BDwEjpo%2BeLAoVCwQIEggimJCZnjAMFwwECRQJJ5gBAu5QFSsVFSsVUP%2FxUhUsFRUrFlIAAAABAAz%2FPgH9AfAAHQBGALgAAEVYuAAILxu5AAgACD5ZuAAARVi4ABIvG7kAEgAIPlm4AABFWLgAGS8buQAZAAY%2BWbkAAwAB9LoADQAIABkREjkwMRceATMyNj8BAzMXHgEXMz4BPwEzAw4DIyImJzdMBxIIJSgKB7%2BURwsSCgQIEQk8jawSJzNBLBcgDxpIAgQkHRoB49UiRiUjRyPV%2FgsvRy8YBQVwAAABACYAAAG0AfAACQA9ALgAAEVYuAADLxu5AAMACD5ZuAAARVi4AAgvG7kACAAEPlm5AAYAAfS4AADQuAADELkAAQAB9LgABdAwMTcTIzUhFQMzFSEm0LkBcNDX%2FnJPAS5zTv7RcwAA%2F%2F%2F%2F%2BgAAAkMDNgImAAQAAAAHAOEBGwAA%2F%2F%2F%2F%2BgAAAkMDNgImAAQAAAAHAOMBGwAA%2F%2F%2F%2F%2BgAAAkMDNgImAAQAAAAHAOUBGwAA%2F%2F%2F%2F%2BgAAAkMDRwImAAQAAAAHAOcBGwAA%2F%2F%2F%2F%2BgAAAkMDSAImAAQAAAAHAOoBGwAA%2F%2F%2F%2F%2BgAAAkMDfQImAAQAAAAHAOwBGwAAAAL%2F8gAAAxkCjAAGABYAfAC4AABFWLgADi8buQAOABA%2BWbgAAEVYuAANLxu5AA0ABD5ZuAAARVi4AAkvG7kACQAEPlm6AAIADgANERI5ugAKAA4ADRESObgACi%2B5AAYAAfS4AAkQuQAHAAH0uAAOELkAEAAB9LoAFQAOAAkREjm4ABUvuQATAAH0MDEBESMOAQ8BBRUhNSMHIwEhFSMVMxUjFQGCBBQnFCoCFP5psUSbATYB5%2FrT0wEHARYwXitdi3yVlQKMfIN7lgAA%2F%2F8ALv8jAjACmAImAAYAAAAHAO4BXgAA%2F%2F8ATQAAAe8DNgImAAgAAAAHAOEBIAAA%2F%2F8ATQAAAe8DNgImAAgAAAAHAOMBIAAA%2F%2F8ATQAAAe8DNgImAAgAAAAHAOUBIAAA%2F%2F8ATQAAAe8DSAImAAgAAAAHAOoBIAAA%2F%2F%2F%2F9AAAAOEDNgImAAwAAAAHAOEAlgAA%2F%2F8ASwAAATgDNgImAAwAAAAHAOMAlgAA%2F%2F%2F%2F7gAAAT4DNgImAAwAAAAHAOUAlgAA%2F%2F%2F%2F7QAAAT8DSAImAAwAAAAHAOoAlgAA%2F%2F8ATQAAAkwDRwImABEAAAAHAOcBTQAA%2F%2F8ALv%2F0An4DNgImABIAAAAHAOEBVgAA%2F%2F8ALv%2F0An4DNgImABIAAAAHAOMBVgAA%2F%2F8ALv%2F0An4DNgImABIAAAAHAOUBVgAA%2F%2F8ALv%2F0An4DRwImABIAAAAHAOcBVgAA%2F%2F8ALv%2F0An4DSAImABIAAAAHAOoBVgAAAAMAKP%2FXApQCtQAHABAAKgCFALgAAEVYuAAmLxu5ACYAED5ZuAAARVi4ABkvG7kAGQAEPlm6AAAAGQAmERI5uQACAAH0ugAHACYAGRESOboACAAmABkREjm4ACYQuQAKAAH0ugAQABkAJhESOboAEQAmABkREjm6ABsAGQAmERI5ugAeABkAJhESOboAKAAmABkREjkwMSUWMzI2NTQvASYjIgYVFBYXAR4BFRQOAiMiJwcnNy4BNTQ%2BAjMyFzcXAQgiLUNOCTAkNENOBwYBdRodK05tQl5HPkxFHSErTm1CZklCTI8cc2MtJF0ibmIcMhUBNilpQVB%2BWC8wTTpWK3JFUH1VLTVSOwAAAAACAC4AAAMyAowAFAAhAFUAuAAARVi4AAUvG7kABQAQPlm4AABFWLgAEC8buQAQAAQ%2BWbgABRC5ABwAAfS4AAfQugAMAAUAEBESObgADC%2B5AAoAAfS4ABAQuQAbAAH0uAAO0DAxEzQ%2BAjMhFSMVMxUjFSEVISIuAjcUHgI7AREjIg4CLjJZe0kBq%2FfQ0AEB%2FkNGd1gylxwzRysXFytHMxwBSVR6TyZ8g3uWfChRfFQ7UTEVAZ4UL07%2F%2FwBJ%2F%2FQCTwM2AiYAGAAAAAcA4QFMAAD%2F%2FwBJ%2F%2FQCTwM2AiYAGAAAAAcA4wFMAAD%2F%2FwBJ%2F%2FQCTwM2AiYAGAAAAAcA5QFMAAD%2F%2FwBJ%2F%2FQCTwNIAiYAGAAAAAcA6gFMAAD%2F%2F%2F%2F4AAACFQM2AiYAHAAAAAcA4wEGAAAAAgAaAAACZQKMABAAIQBZALgAAEVYuAAhLxu5ACEAED5ZuAAARVi4ABwvG7kAHAAEPlm5AAAAAfS4ACEQuQAKAAH0ugAOACEAHBESObgADi%2B5AA0AAfS4AA4QuAAe0LgADRC4AB%2FQMDElMj4CNTQuAisBFTMVIxUTMh4CFRQOAisBESM1NxEBFSpEMBsbMEQqHH19JUt4Vi4uVHVIwExMdxYxUDs6Ty8UoUe2AhUmT3pUVHxRKAEtQgUBGAACAE0AAAI6AowAEAAYADkAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAEC8buQAQAAQ%2BWbsAGAABAA4ABCu7AAIAAQAXAAQrMDETMxUzMh4CFRQOAisBFSM3MjU0JisBFU2TWzVdRSgpRlw0W5PleD07UgKMYxUxUDs6UzYae%2FBoMynEAP%2F%2FAC%2F%2F9AHZAtQCJgAeAAAABwDgARkAAP%2F%2FAC%2F%2F9AHZAtQCJgAeAAAABwDiARkAAP%2F%2FAC%2F%2F9AHZAtQCJgAeAAAABwDkARkAAP%2F%2FAC%2F%2F9AHZAsYCJgAeAAAABwDmARkAAP%2F%2FAC%2F%2F9AHZAsYCJgAeAAAABwDpARkAAP%2F%2FAC%2F%2F9AHZAvACJgAeAAAABwDrARkAAAADAC%2F%2F9ALtAfwACwA8AEMAmwC4AABFWLgADy8buQAPAAg%2BWbgAAEVYuAAVLxu5ABUACD5ZuAAARVi4AC4vG7kALgAEPlm4AABFWLgAKC8buQAoAAQ%2BWbgALhC5AAMAAfS6ADYALgAPERI5uAA2L7kACQAB9LoAHQAVACgREjm4AB0vuAAoELkAIQAB9LgADxC5ADkAAfS4ABUQuQBAAAH0uAAdELkAQwAB9DAxNxQWMzI2NyYvAQ4BAz4BMzIWFz4BMzIeAhUUBgchHgEzMjY3Fw4BIyImJw4BIyIuAjU0NjcuASMiBgcFNCYjIgYHux8aGi8UCwMBST57MGU2LkYWIEYtMUoxGQQC%2FuIIQi0cMhsyJl0sOFMgNVgyIjYmFYKSAiEqHkAkAfwkKSMxBpUYFxYUHyMVCyoBCR0kKCMkJyVBWDMUIQk0MhQQXxoeKiMqIxcpNh9PWQ8gJxgVMy04MTQA%2F%2F8AJP8jAb4B%2FAImACAAAAAHAO0BGgAA%2F%2F8AJP%2F0AeEC1AImACIAAAAHAOABDgAA%2F%2F8AJP%2F0AeEC1AImACIAAAAHAOIBDgAA%2F%2F8AJP%2F0AeEC1AImACIAAAAHAOQBDgAA%2F%2F8AJP%2F0AeECxgImACIAAAAHAOkBDgAA%2F%2F%2F%2F9QAAANwC1AImAGcAAAAHAOAAigAA%2F%2F8AOAAAAR8C1AImAGcAAAAHAOIAigAA%2F%2F%2F%2F8AAAASQC1AImAGcAAAAHAOQAigAA%2F%2F%2F%2F4QAAATMCxgImAGcAAAAHAOkAigAAAAEAQQAAANQB8AADACUAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgAAi8buQACAAQ%2BWTAxEzMRI0GTkwHw%2FhAAAP%2F%2FAEEAAAIAAsYCJgArAAAABwDmATQAAP%2F%2FACT%2F9AIHAtQCJgAsAAAABwDgARUAAP%2F%2FACT%2F9AIHAtQCJgAsAAAABwDiARUAAP%2F%2FACT%2F9AIHAtQCJgAsAAAABwDkARUAAP%2F%2FACT%2F9AIHAsYCJgAsAAAABwDmARUAAP%2F%2FACT%2F9AIHAsYCJgAsAAAABwDpARUAAAADACT%2F5wIHAgsABwAPACoASQC4AABFWLgAJS8buQAlAAg%2BWbgAAEVYuAAYLxu5ABgABD5ZugAAABgAJRESObkAAgAB9LoACAAlABgREjm4ACUQuQAKAAH0MDE3FjMyNjU0LwEmIyIGFRQXJR4BFRQOAiMiJwcnNy4BNTQ%2BAjMyFhc3F9wXIy02ByQWIi42BwEVGh8oQ1cvSjwrNy8aHyhDWC8jRB0sN3oUSz8pG0MTSz8oG%2BkhVzY%2BYUIjKDUqOiBXNj5hQiMUEzYrAAADACT%2F9AMSAfwACwA0ADsAcQC4AABFWLgAES8buQARAAg%2BWbgAAEVYuAAwLxu5ADAABD5ZuQADAAH0uAARELkACQAB9LgAERC4ABfQuAAwELgAKtC6AB8AFwAqERI5uAAfL7gAKhC5ACMAAfS4ABcQuQA4AAH0uAAfELkAOwAB9DAxNxQWMzI2NTQmIyIGBzQ%2BAjMyFhc%2BATMyHgIVFAYHIR4BMzI2NxcOASMiJicOASMiLgIlNCYjIgYHuSwpKS4uKSkslSZAVS81Tx0eUi0xSjIZBAL%2B4QhCLRwyGzMmXiwtVB8fTzcwVD8kAnAkKSMxBvhBTExBQUxMQT5hQiMuKSotJUFYMxQhCTQyFBBfGh4tKissI0JhbS04MTQAAAABAEH%2F9AJdAscAOABkALgAAEVYuAAFLxu5AAUAEj5ZuAAARVi4ADgvG7kAOAAEPlm4AABFWLgAGy8buQAbAAQ%2BWboADwAbAAUREjm5ACEAAfS6ACQAGwAFERI5ugAwABsABRESObgABRC5ADMAAfQwMRM0PgIzMh4CFRQOAhUUHgQVFA4CIyImJzcWMzI2NTQuBDU0PgI1NCYjIgYVESNBHTpaPDNNMxoYHhgaJy4nGhcvRS0tRiQzMS4aHRonLicaFhsWIR8uLpEB5zBSPCIcLzwgJDEnIRMRFxYaJTUmIjwsGhgVZCQbFRMbFxkhLSEdKiYpGx0nQzr%2BKv%2F%2FADz%2F9AH4AtQCJgAyAAAABwDgAR0AAP%2F%2FADz%2F9AH4AtQCJgAyAAAABwDiAR0AAP%2F%2FADz%2F9AH4AtQCJgAyAAAABwDkAR0AAP%2F%2FADz%2F9AH4AsYCJgAyAAAABwDpAR0AAP%2F%2FAAz%2FPgH9AtQCJgA2AAAABwDiAQoAAP%2F%2FAAz%2FPgH9AsYCJgA2AAAABwDpAQoAAAACACr%2F9AH%2BAuQADgAyAFkAuAAARVi4AC0vG7kALQASPlm4AABFWLgAFy8buQAXAAQ%2BWbsAIQABAAkABCu6ACkAJgADK7gAFxC5AAAAAfS4ACYQuAAP0LgAKRC4AC3cuAApELgAMNAwMSUyNjU8AScuASMiBhUUFhMeARUUDgIjIi4CNTQ%2BAjMyFhcmJwcnNy4BJzceARc3FwEWKjUBFzAaLDc9ijtMIT1YNy9TQCUiOUknHTgVGjuOJnQULRlAI0YhjyZrSU4MFgsZEjo8Oz4B7jyjcDxmSioiPlk3NlQ6HxMXTThHQToOGg1ZEioZSEEAAAAAAgBB%2F0gCFgK9ABYAIQBXALgAAEVYuAAILxu5AAgACD5ZuAAARVi4AAIvG7kAAgASPlm4AABFWLgAAS8buQABAAY%2BWbgAAEVYuAASLxu5ABIABD5ZuQAaAAH0uAAIELkAHwAB9DAxFyMRMxUHPgEzMh4CFRQOAiMiJicXNR4BMzI2NTQjIgfUk5MEGkAiL0s0HCM7SygkNxoEFCgTJjZWKyq4A3WsRhcaJEJdOUBjRSQYF0qzEg5FTYYtAAABABgAAAKvAskALgB8ALgAAEVYuAATLxu5ABMACD5ZuAAARVi4ACsvG7kAKwASPlm4AABFWLgADy8buQAPAAQ%2BWbgAKxC5AAIAAfS4ABMQuAAl0LgAB9C4ABMQuQAQAAH0uAAM0LgACNC4AA8QuAAL0LgAExC4ABLQuAArELgAGdC5ACAAAfQwMQEmIyIGHQEzFSMRIxEjESMRIzU3NTQ%2BAjMyFhcHLgEjIgYdATM1ND4CMzIWFwKVHBcbHllZk6mTQkIVLUczIDYRGwwaFBohqRMsRTIgMhECSwohJh5z%2FoMBff6DAX1tBRcmRDIdCwdtBQYhIxcaJ0Y0HgwGAAAAAQAY%2F%2FQCnwLJAC4AiQC4AABFWLgAEC8buQAQAAg%2BWbgAAEVYuAAWLxu5ABYAEj5ZuAAARVi4AAwvG7kADAAEPlm4AABFWLgAAy8buQADAAQ%2BWbgAEBC5AA0AAfS4AAnQuAAQELgAD9C4AA8vuAAWELkAHAAB9LgAEBC4ACHQuAAl0LgACRC4ACbQuAADELkAKwAB9DAxJQ4BIyIuAj0BIxEjESM1NzU0PgIzMhYXByYjIgYdATM3MxUzFSMVFBYzMjY3Ap8UNiQuQSkTmZNCQhMsRjIfMxEbHBcbHqERend3Ix0MGQoGBgwcMkcryf6DAX1tBRsnRjQeDAZsCiEmHoSEc8cqJQYEAAAAAAMAGf%2F0AokCmAAKABYARACMALgAAEVYuAAvLxu5AC8AED5ZuAAARVi4AB0vG7kAHQAEPlm4AABFWLgAFy8buQAXAAQ%2BWboAOgAaAAMruAAdELkAAwAB9LoABQAaADoREjm6AAgAHQAvERI5uAAIL7gADty4AC8QuQAUAAH0ugAnAAgADhESOboANwAIAA4REjm6AEEAGgA6ERI5MDE3FBYzMjcuAScOARMUFhc%2BATU0JiMiBgEuAScOASMiLgI1ND4CNy4BNTQ%2BAjMyFhUUDgIHHgEXPgE3Mw4BBx4BF6Q1LCgrJkUdFBg9CwojMBYXGSIBhSlUKiplPjVRNxwTISsYExUZLkEpSlYXJzEZHEMkGSYMhhI1Jh85GbclLhofRCQRJgEgEigUFS4hFxwn%2FeQIIhgfIx4zQyYiNywkDyNFHyM%2BLxtQRCA1LSYRID0aIE4uPG0zEBUEAAAAAAIAJf%2F0AesChwATACcANQC4AABFWLgACi8buQAKAA4%2BWbgAAEVYuAAALxu5AAAABD5ZuQAUAAH0uAAKELkAHgAB9DAxBSIuAjU0PgIzMh4CFRQOAicyPgI1NC4CIyIOAhUUHgIBCDNUOyEhO1QzM1Q7ISE7VDMTIBgNDRggExIgGA4OGCAMK1R8UVF6UykpU3pRUXxUK3ITMlRBQVMvEhIvU0FBVDITAAEARgAAAdoCewAMAEMAuAAARVi4AAcvG7kABwAOPlm4AABFWLgADC8buQAMAAQ%2BWbkAAQAB9LgABxC5AAQAAfS5AAIAAfS4AAEQuAAJ0DAxNzMRIzU%2BATczETMVIUaKdzRIImx3%2Fmx3AW9bChwU%2Ffx3AAAAAQAeAAAB5AKHAB8APQC4AABFWLgADy8buQAPAA4%2BWbgAAEVYuAAeLxu5AB4ABD5ZuQAcAAH0uAAZ0LgAANC4AA8QuQAIAAH0MDE3PgM1NCYjIgYHJz4BMzIeAhUUDgIHPgE7ARUhJT1lSSkwKiM2GFAvYkQvTTgeIjlJJxg7F4D%2BQVQ5Y1dLIi8xJxpPMjMdNUouKFNTUygDBXwAAQAW%2F%2FQB3wKHAC8AUwC4AABFWLgAGy8buQAbAA4%2BWbgAAEVYuAAsLxu5ACwABD5ZuQADAAH0ugALABsALBESObgACy%2B5AAwAAfS4ABsQuQAUAAH0ugAkAAwACxESOTAxNx4BMzI2NTQuAiM1Mj4CNTQmIyIGByc%2BATMyHgIVFAYHFR4BFRQOAiMiJidaHUUpLzgPJkI0KzkjDygmIjceSixhOzFROSA3MzdHJkBWME5sI6scJCckFSIXDWgMFx8TISUeGlomKxctQCoyRRYEEE0%2BLEUvGTEpAAAAAAIAEwAAAfgCewAJABQAVwC4AABFWLgAEi8buQASAA4%2BWbgAAEVYuAANLxu5AA0ABD5ZuwAOAAEAAAAEK7gAEhC4AATcuAAAELgACdC4AA4QuAAL0LgACRC4ABDQuAAAELgAE9AwMQE1NDY3Iw4BDwEFIxUjNSE1EzMRMwEmBAIEDBoOVAFYSYn%2B7ei0SQEIZx9RHho2G4pwmJhlAX7%2BjQABABf%2F9AHgAnsAJABHALgAAEVYuAAQLxu5ABAADj5ZuAAARVi4ACEvG7kAIQAEPlm5AAMAAfS6ABcAEAAhERI5uAAXL7gACdy4ABAQuQASAAH0MDE3HgEzMjY1NCYjIg4CBycTIRUjBz4BMzIeAhUUDgIjIiYnWR1DKTE6Ny0OFhUXDkISAWjpCxIhFClJOCAmQFUuTmwmqholMjEwMgMIDAkqAUF8dwgHGDBKMzVSOR4zJgACACn%2F9AHsAocADQAyAEMAuAAARVi4AC8vG7kALwAOPlm4AABFWLgAJS8buQAlAAQ%2BWbsAGwABAAYABCu4ACUQuQAAAAH0uAAvELkAEQAB9DAxJTI2NTQmIyIGBx4DEy4BIyIOAgc%2BAzMyHgIVFA4CIyIuAjU0PgIzMhYXARYhLy8kGDIWBRQaH5ERNhwaLiMWAgwgIiIPKUUzHCI5TSsuV0MoK0ddMj9cHmIxNjMpHCMmMh8NAYESGxQvTDcQGREJGDBKMjJOOB0kTHdUWYJUKS0fAAEALAAAAeYCewAPADMAuAAARVi4AAcvG7kABwAOPlm4AABFWLgAAC8buQAAAAQ%2BWbgABxC5AAUAAfS4AAnQMDEzPgM3ITUhFQ4DByOfBBUnPS3%2B4wG6N0MlEASUT4V5dD58WkN1fY9dAAAAAAMAKv%2F0AegChwANABgAOgBXALgAAEVYuAAlLxu5ACUADj5ZuAAARVi4ADYvG7kANgAEPlm5AAMAAfS6AAsANgAlERI5uAALL7gADtC4ACUQuQATAAH0uAALELgAHNy4AA4QuAAt3DAxNxQWMzI2NTQuAicOATc2NTQmIyIGFRQWBzQ2NzUuATU0PgIzMh4CFRQGBxUeARUUDgIjIi4CqDooJTATJDEeFRyHJykkHSo81D8tJTAeNkssK0gyHDIhLkAgO1MzMFE7IbMqLycoFR4ZFg0UNKItMCUtJCUnLOM6ShgEHEczKEEuGBktQScuRxYEGU4%2FJkAvGxkuQAAAAAACACL%2F9AHmAocACwAwAEMAuAAARVi4ACMvG7kAIwAOPlm4AABFWLgALS8buQAtAAQ%2BWbsAAAABABkABCu4ACMQuQAGAAH0uAAtELkADwAB9DAxEzI2Ny4BIyIGFRQWBx4BMzI%2BAjcOAyMiLgI1ND4CMzIeAhUUDgIjIiYn%2FBgyFQo3IiAwMF8QNhwbLiMVAgwgIiIPKUUyHSI5TSsuV0MpK0ddMj9dHgFWHCNLOTE2Mym%2BEhsUL0s4EBkRCRgwSjIxTzgdJEx3VFmCVCkuHgAAAQA9%2F%2FQA7wCtAAsAGAC4AABFWLgACS8buQAJAAQ%2BWbgAA9wwMTc0NjMyFhUUBiMiJj0zJiYzMyYmM1AoNTUoJzU1AAABAC7%2FPgEAAK0AEAAYALgAAEVYuAAELxu5AAQABD5ZuAAK3DAxFz4BNSMiJjU0NjMyFhUUBgcuNzoIIzY2JjI0XFh0FEAmKygmLklCU3ca%2F%2F8APf%2F0AO8B8QInAIYAAAFEAAYAhgAA%2F%2F8ALv8%2BAQAB8QInAIYAAAFEAAYAhwAAAAIAUf%2F0AQMCngAFABEAGgC4AABFWLgADy8buQAPAAQ%2BWbkACQAB9DAxEyczBwMjBzQ2MzIWFRQGIyImZQWUBRVgKTMmJjMzJiYzAhmFhf7Olyg1NSgnNTUAAAAAAgBR%2F1IBAwH8AAUAEQANALgADy%2B5AAkAAfQwMR8BIzcTMzcUBiMiJjU0NjMyFu8FlAUVYCkzJiYzMyYmMymFhQEylyg1NSgnNTUAAAIAKf%2F0AaUCqgAdACkAKAC4AABFWLgAJy8buQAnAAQ%2BWbsAEQABAAoABCu4ACcQuQAhAAH0MDE3Jj4ENTQmIyIGByc%2BATMyHgIVFA4EFwc0NjMyFhUUBiMiJpoFDxwjIBUlHhwrFFEiXDgqSTUeFiElHxIDmTImJjMzJiYy5yI4MCglIxMfIBoUSikyFCpBLB8xKicqLx6XKDU1KCc1NQACACr%2FRgGmAfwAHQApABsAuAAnL7sACgABABEABCu4ACcQuQAhAAH0MDEBFg4EFRQWMzI2NxcOASMiLgI1ND4EJzcUBiMiJjU0NjMyFgE1BQ8cIyAVJh0cKxRRIlw4Kkk1HhYhJR8TA5kzJiYzMyYmMwEJIjgwKCUjEx8gGhRKKTIUKkEtHzEqJykvHpcoNTUoJzU1AAAAAAEATAFiAOACrgAFAAsAugACAAQAAyswMRMnMw8BI1EFlAUdUAIphYXHAAD%2F%2FwBMAWIBzAKuACYAjgAAAAcAjgDsAAAAAQA3AVIA5QKrABEAKwC4AABFWLgAAy8buQADAAg%2BWbgAAEVYuAAFLxu5AAUACD5ZuQALAAH0MDETDgEVNjMyFhUUBiMiJjU0NjflLS0DByAtLCEvL0ZIAmsXOy0BJyImLEU%2BR2wjAAABAEcBYAD2ArkAEQANALsACwABAAUABCswMRM%2BATUGIyImNTQ2MzIWFRQGB0ctLQMGIC0rIi4wR0gBoBc7LQEnIiYsRD9HbCMAAAD%2F%2FwA3AVIB0QKrACYAkAAAAAcAkADsAAD%2F%2FwBHAWAB4gK5ACYAkQAAAAcAkQDsAAD%2F%2FwBH%2F1gA9gCxAgcAkQAA%2FfgAAP%2F%2FAEf%2FWAHiALEAJwCRAAD9%2BAAHAJEA7P34AAAAAQAxADgA7gHAAAYACwC6AAIABgADKzAxNzU3FwcXBzGGN29vN8hokCyYmCwAAAAAAQA2ADgA8wHAAAYACwC6AAIABQADKzAxNyc3FxUHJ6VvN4aGN%2FyYLJBokCwAAAD%2F%2FwAxADgBqgHAACYAlgAAAAcAlgC8AAD%2F%2FwA2ADgBrwHAACYAlwAAAAcAlwC8AAAAAQArAMkBIQExAAMADQC7AAEAAQACAAQrMDETMxUjK%2Fb2ATFoAAAA%2F%2F8AKwDJASEBMQIGAJoAAAABACsAzgG1ASwAAwANALsAAQABAAIABCswMRMhFSErAYr%2BdgEsXgAAAQArAM4C9QEsAAMADQC7AAEAAQACAAQrMDETIRUhKwLK%2FTYBLF4A%2F%2F8APQDkAO8BnQIHAIYAAADwAAAAAQAoAHsBMQGRABMACwC6AAoAAAADKzAxNyIuAjU0PgIzMh4CFRQOAqwcMCQUFCQwHBwxJBQUJDF7FSYyHh4zJRUVJTMeHjImFQAAAAEADP90Aej%2FxwADAA0AuwAAAAEAAQAEKzAxBRUhNQHo%2FiQ5U1MAAAABAEj%2FTQEoAt8ADgALALoABgAAAAMrMDEXLgE1NDY3Fw4BFRQWFwfMP0VFP1w3MjI3XLNn3oSE3mcmYtZra9ZiJgAAAAEAMP9NARAC3wAOAAsAugAHAA0AAyswMRc%2BATU0Jic3HgEVFAYHJzA4MjI4XD9FRT9cjWLWa2vWYiZn3oSE3mcmAAAAAQBX%2F2gBKgLEAAcAFwC7AAUAAQAGAAQruwABAAEAAgAEKzAxEzMVIxEzFSNX02Vl0wLETv1ATgABAC7%2FaAEBAsQABwAXALsAAAABAAYABCu7AAMAAQACAAQrMDEXESM1MxEjNZRm09NKAsBO%2FKROAAEAH%2F9oASoCxAAzACsAuwAAAAEAAQAEK7sAHgABAB8ABCu7ABAAAQAPAAQrugAqAA8AEBESOTAxBRUjIiY1ND4CNTQuAic1PgM1NC4CNTQ2OwEVIyIGFRQWFRQGBxUeARUUBhUUFjMBKj9CPgMEAwkUIRgYIRQJAwQDPkI%2FEx8WBCQmJiQEFh9KTj1RGyonJxgNGhUNAVYBDRUaDRgnJyobUT1OHSkpTC45MwkECTM5LkwpKR0AAAABAC7%2FaAE5AsQAMwArALsAAAABADIABCu7ABUAAQAUAAQruwAjAAEAJAAEK7oACgAkACMREjkwMRcyNjU0JjU0Njc1LgE1NDY1NCYrATUzMhYVFA4CFRQeAhcVDgMVFB4CFRQGKwE1QR8WBCQmJiQEFh8TP0I%2BAwQDCRQhGBghFAkDBAM%2BQj9KHSkpTC45MwkECTM5LkwpKR1OPVEbKicnGA0aFQ0BVgENFRoNGCcnKhtRPU4AAAAAAQAN%2F2ABNgLGAAMAGAC4AABFWLgAAC8buQAAABI%2BWbgAAtwwMRMzAyPWYMlgAsb8mgAAAAEAVv8GALYC7gADAAsAugABAAIAAyswMRMzESNWYGAC7vwYAAEAHP9gAUYCxgADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDETMxMjHGDKYALG%2FJoAAAACAFb%2FBgC2Au4AAwAHAAsAugABAAUAAyswMRMzESMXESMRVmBgYGAC7v5KbP46AcYAAAAAAQAmAV0BowLIAA4AFAC4AABFWLgABS8buQAFABI%2BWTAxEzcnNxc3Mxc3FwcXBycHVztsF3QNTQ1zGGw7PVBRAYloMUgYdncZSDFoLFlZAAACACX%2FrAHrArIADQBBACgAuAAARVi4ACgvG7kAKAAEPlm7ACsAAQAlAAQruwA%2BAAEAEQAEKzAxExQeAhc2NTQuAicGNy4BIyIVFB4EFRQGBx4BFRQOAiMiJic3FjMyNjU0LgQ1NDY3LgE1NDYzMhYXoSAyPR0iIDE9HSPaFzgaNig8RzwoKycLDBkwSC83aSJVMTwfHSc6RTonKyUOD11VOlsfAVEYIRsZDxUmGCEbGA8XoRQcJxIbGyAtQC0sQRgQJhciOioYKStLMxgTExwaHi1ALyZDFxApGkRVKRgAAAIAJ%2F%2BwAhwCjAADABAAJQC4AABFWLgAAC8buQAAAA4%2BWbgAAEVYuAAOLxu5AA4ADj5ZMDEBMxEjAyIuAjU0PgI7AREBiZOTYDVeRikoRV00LAKM%2FSQBFR07Vzk%2FVTUW%2FjkAAAADAC3%2F9wLAAo8AEwAnAEUAMwC7ADoAAQBBAAQruwAtAAEANAAEK7gALRC4ACPcuQAFAAH0uABBELgAGdy5AA8AAfQwMRM0PgIzMh4CFRQOAiMiLgI3FB4CMzI%2BAjU0LgIjIg4CFzQ%2BAjMyFhcHLgEjIgYVFBYzMjY3Fw4BIyIuAi01W3hCQnhaNTVaeEJCeFs1RClGYDc3YEYpKUZgNzdgRilRIDVGJi4%2BGDcQIBQwMTIqGSQTMB1AJypHMx0BRU56VS0tVXtNTntXLi5Xe04%2BZEgnJ0hkPj1kRyYmR2Q%2BLEcyGyMYPRERPS0zPBMPRBcdHDNJAAAAAAQAIAE3Aa0CywATACMAMAA5AFcAuAAvL7gAJS%2B4AC8QuAAU3LkAAAAB9LgAJRC4ABrcuQAKAAH0ugAtAC8AJRESObgALS%2B5ADEAAfS6ACoAMQAtERI5uAAvELgALNC4ACUQuQA3AAH0MDETIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIOAhUUHgInMzIWFRQHFyMnIxUjNzI2NTQmKwEV5ylJNh8fNkkpKUg2Hx82SCk%2FUFA%2FIDQnFRUnNDFZIy4jKTweHTlODw8PDxUBNx42SiwsSjYeHjZKLCxKNh4xU0ZGUxYoOCMjOCgW%2FSAiJRFNPDxkEQsLDzYAAgAx%2F1QDVgKdAEYAUwA%2FALsAOwABAEIABCu7ACcAAQAPAAQruwBJAAEAFgAEK7sAHgABAE8ABCu7AAUAAQAxAAQrugAiAE8AHhESOTAxNzQ%2BAjMyHgIVFA4CIyImJyMOASMiJjU0PgIzMhYXMzczBwYzMj4CNTQuAiMiDgIVFB4CMzI2NxcOASMiLgIlFDMyNj8BJiMiDgIxSHukXFGDXDIqQlEnK0AIAhVEHzxIHzZKKxkmDQIOWy4VQxYrIhQeQmhJQHpgOi9RaTsnUSAgLmA2S4lpPgE%2FNBAfExgPHxcjGQ3Naat6QjRfg05FZ0UiKCQdJVFFLlhFKhcbKtxWGS9DKTZiSyw1YYlUSm5IJBYRUBkXLl6NYkMUGYcdHCoyAAAAAAIAIgAAAfICigAbAB8AoAC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAKLxu5AAoACD5ZuAAARVi4AA4vG7kADgAIPlm4AABFWLgAFi8buQAWAAQ%2BWbgAAEVYuAAaLxu5ABoABD5ZuwADAAEAAAAEK7gABhC5AAQAAfS4ABDQuAAR0LgAAxC4ABLQuAAAELgAFNC4AAAQuAAY0LgAAxC4ABzQuAARELgAHdC4AB7QMDE3IzUzNyM1MzczBzM3MwczFSMHMxUjByM3IwcjEzcjB2xKVQ5PWxVUFGgVVBRPWw1UXxdVFmcXVd4OaA27Xm5epaWlpV5uXru7uwEZbm4AAP%2F%2FAEwBuAESAz4CBwC3AAABuAAA%2F%2F8AGwG4AU4DSgIHALgAAAG4AAD%2F%2FwAbAawBUQNKAgcAuQAAAbgAAP%2F%2FACMBuAFwAz4CBwC6AAABuAAAAAIAGv%2F0AV8BkgATAB8AKAC4AAovuAAARVi4AAAvG7kAAAAEPlm5ABQAAfS4AAoQuQAaAAH0MDEXIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWvCM8KxgYKzwjIzwrGRkrPCMZIyMZGSMjDBw2TTExTDUcHDVMMTFNNhxSOEZGNjZGRjgAAAABAEwAAAESAYYACgAiALgACC%2B4AABFWLgACi8buQAKAAQ%2BWbgACBC5AAAAAfQwMRMjNT4DNzMRI6VZFB8aFwxWbQEZQgMICg0J%2FnoAAQAbAAABTgGSABcALAC4AAwvuAAARVi4ABYvG7kAFgAEPlm5ABQAAfS4AADQuAAMELkABgAB9DAxNz4BNTQmIyIGByc2MzIWFRQOAgczFSEtS2AeGxQiET08WUFPER0lFXb%2B3zo%2BXyUdIBkWOFBFPxgtLCwXWgAAAQAb%2F%2FQBUQGSACgAPgC4ABUvuAAARVi4ACUvG7kAJQAEPlm6AAgABwADK7gAJRC5AAIAAfS4ABUQuQAOAAH0ugAdAAcACBESOTAxNxYzMjY1NCM1MjY1NCYjIgYHJz4BMzIeAhUUBgceARUUDgIjIiYnXCMwFyFdJCsaFxMfDj0gQi4bMSYWHhseKRkpNx4zUhp2MBgXMz4XGRQWFhE2IyAPHCkZHysQDC8jGy0fEikmAAAAAgAjAAABcAGGAAUAEABMALgADi%2B4AABFWLgACS8buQAJAAQ%2BWbsAAAABAAoABCu4AA4QuQACAAH0uAAAELgABdC4AAoQuAAH0LgABRC4AAzQuAAAELgAD9AwMTc1NyMPARcjFSM1IzU3MxUz1gYEKCrqOmCzjYY6nSl1TVFGV1c2%2Ben%2F%2FwAdAP4BQAJXAgYAvQAA%2F%2F8AGAD%2BAVwCVwIGAL4AAAACAB0A%2FgFAAlcAGQAiADsAuAAAL7gAEC%2B7AAYAAQAeAAQruAAQELkACQAB9LgAABC4ABXQuAAAELkAGgAB9LoAFwAAABoREjkwMTciJjU0NjcuASMiBgcnPgEzMhYdASMnIw4BNzI2NzUOARUUgi82WGMCFxgULhglIUknQEdTCgQSLgYPFw0yJv46KjU5CRYWEA5EFBhJS70hEhdODgw3BRwSHgAAAAACABgA%2FgFcAlcAEwAfABsAuAAKL7gAAC%2B5ABQAAfS4AAoQuQAaAAH0MDE3Ii4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWuiA6LRsbLTogIDotGxstOiAdHBwdHRsb%2FhcsQCkpQC0XFy1AKSlALBdSMSkqMTEqKTEAAAAAAgAnAY4BSAKuABMAHwAXALsAFAABAAAABCu7AAoAAQAaAAQrMDETIi4CNTQ%2BAjMyHgIVFA4CJzI2NTQmIyIGFRQWtx41JxYWJzUeHjUnFxcnNR4eJSUeHSYmAY4VJzQgHzUnFRUnNR8gNCcVRikhICkpICEpAAAAAgAUAFMB%2FAI%2FAB4AKgAoALgAAEVYuAALLxu5AAsACj5ZuwAiAAEAGwAEK7gACxC5ACgAAfQwMT8BJjU0NjcnNxc2MzIXNxcHFhUUBgcXBycOASMiJwc3FBYzMjY1NCYjIgYUPSIREDxJRTA2NDJFST0iEhA9SUYXNBo3LkZVMiQkMjIkJDKdPi5BIDcWPkpGGRlGSj4tQCE3Fz5KRwwMGEf3LTU1LS01NQAAAAEAJ%2F%2BSAdQC6QAtAF0AuAAARVi4ACcvG7kAJwAOPlm4AABFWLgAEy8buQATAAQ%2BWbgAJxC5AAMAAfS6AAYAEwAnERI5uAATELgAENC4ABMQuQAaAAH0ugAdACcAExESObgAJxC4ACrQMDEBLgEjIgYVFB4EFRQGBxUjNS4BJzceATMyNjU0LgQ1NDY3NTMVHgEXAYMbMiAkJic7RDsnTk5hLGEjQCZFJConJztEOydRR2EwSB0B3hkZHiIYIR4gLkEwSGcRaGQFJyBjHR0iIxokISEuPi1KYQ5nZQcsHwAAAQAwAAAB8QKHACwAVwC4AABFWLgAFi8buQAWAA4%2BWbgAAEVYuAADLxu5AAMABD5ZuwAkAAEAJQAEK7gAAxC5AAEAAfS4AATQuAAlELgAC9C4ACQQuAAM0LgAFhC5AB0AAfQwMTchFSE1PgE1NCYnIzU3My4BNTQ%2BAjMyFhcHLgEjIgYVFBYXMxUjHgEVFAYH7gED%2Fj8tPQEBZEQGBwkgOU4vOFMiUBEmGCgvBgWUgQEBFRh8fFsUTzYHDQdWBRQoFC9MNR0qJ1AVFS4wEiQSWwcOByQ0GwAAAQAMAAACBAJ7AB0AhAC4AABFWLgAHS8buQAdAA4%2BWbgAAEVYuAAJLxu5AAkADj5ZuAAARVi4ABQvG7kAFAAEPlm6AAQAHQAUERI5ugAZAB0AFBESObgAGS%2B5AAwAAfS4ABkQuAAN0LgAGRC4ABjQuAAYL7gAENC4ABgQuQAVAAH0uAAR0LgAGRC5ABsAAfQwMRMXHgEXMz4BPwEzAzMVIxUzFSMVIzUjNTM1IzUzA6MzDBgOBA0YDTKUk3qampqTmZmZepMCe4UhQiAhQiCF%2FttGN0aTk0Y3RgElAAEAFf%2F0AgcChwAxAG0AuAAARVi4ABcvG7kAFwAOPlm4AABFWLgAAy8buQADAAQ%2BWbsAKQABACoABCu4ACoQuAAH0LgAKRC4AAjQuAApELgAI9y4ABDQuAAjELkAIgAB9LgAEdC4ABcQuQAeAAH0uAADELkALgAB9DAxJQ4BIyImJyM1NyY0NTwBNyM1Nz4DMzIWFwcuASMiBgczFSMVHAEXMxUjHgEzMjY3AgckXDZeiRc%2BNgEBNj4MMEVWMi1WIFITKRorOQzW3wG2rA45Kh0rFFAtL3NwRQQHDAcHDAdEBThXPB8oJk8TGD45ShUIDgdLNzocGgAAAgA8%2F9cB5wKPAAYAJAA3ALsAIQABAAoABCu7ABoAAQAgAAQruAAgELgAANC4ACEQuAAG0LgAChC4AA3QuAAaELgAF9AwMQEOARUUFh8BDgEHFSM1LgM1ND4CNzUzFR4BFwcmJxE%2BATcBEyQkJSPUHUQiUTFPOB8gOk4vUSc%2FFkMeGxUkDwGwEEAtLUEPRRkdBV9fBihBWDY1Vj8pCGFdBB0XWhgD%2FvAEEwwAAAH%2FVf%2F0AQoCmAADABgAuAAARVi4AAAvG7kAAAAEPlm4AAHcMDEHATMBqwFgVf6gDAKk%2FVwAAAD%2F%2F%2F9V%2F%2FQBCgKYAgYAxgAA%2F%2F8AGv%2F0A0ACmAAnALYAAAEGACcAxgF9AAAABwC2AeEAAAAA%2F%2F8AL%2F%2F0AyECmAAnALf%2F4wEGACcAxgFkAAAABwC6AbEAAAAA%2F%2F8AL%2F%2F0AyMCmAAnALf%2F4wEGACcAxgFVAAAABwC4AdUAAAAA%2F%2F8AGf%2F0AykCmAAnALn%2F%2FgEGACcAxgF6AAAABwC6AbkAAAAAAAEAIgBeAe4CNgALAB0AuwADAAEAAAAEK7gAAxC4AAbQuAAAELgACNAwMRMjNTM1MxUzFSMVI9KwsGywsGwBFmi4uGi4AAAAAAEAIgEWAe4BfgADAA0AuwABAAEAAgAEKzAxEyEVISIBzP40AX5oAAABADAAcAHgAiMACwALALoABQAJAAMrMDE%2FASc3FzcXBxcHJwcwjo5Jj49Jjo5Jj4%2B6j5BKkJBKkI9KkJAAAAAAAwAiAEkB7gJLAAsAFwAbADIAuAAARVi4AAYvG7kABgAMPlm7AA8AAQAVAAQruwAZAAEAGgAEK7gABhC5AAAAAfQwMQEiJjU0NjMyFhUUBgM0NjMyFhUUBiMiJgMhFSEBCCMuLiMjLi50LiMjLi4jIy6VAcz%2BNAGxKyIiKysiIiv%2B5SIrKyIiKysBCmgAAAD%2F%2FwAiAKMB7gHyAiYAzQB0AAYAzQCNAAAAAQAiAGgB7gIwAAkAFQC6AAEACAADK7oABQAIAAEREjkwMRMlFQ8BFR8BFSUiAcywh4ew%2FjQBf7F5Oi8ELzp5sQAAAAABACIAaAHuAjAACQAVALoACAABAAMrugAFAAEACBESOTAxAQU1PwE1LwE1BQHu%2FjSwh4ewAcwBGbF5Oi8ELzp5sQAAAAIAIgAAAe4CNgALAA8AOAC4AABFWLgADi8buQAOAAQ%2BWbsAAwABAAAABCu4AAMQuAAG0LgAABC4AAjQuAAOELkADAAB9DAxEyM1MzUzFTMVIxUjByEVIdKwsGywsGywAcz%2BNAEmaKioaIg2aAAAAAABADIBEgHeAp4ACQA4ALgAAEVYuAAALxu5AAAAED5ZuAAC3LgAABC5AAUAAfS6AAYAAAACERI5uAACELgACNC4AAnQMDETMxMjLwEjDwEjzXabeS4tBC0ueQKe%2FnSAh4eAAAAAAQAdAPAB8wGkABcAJwC7AAgAAQAPAAQruAAPELgAFNy5AAMAAfS4AAvQuAAPELgAF9AwMRM%2BATMyHgIzMjY3Fw4BIyIuAiMiBgcdJUsmHy4nIxUVIxBMJUsmHy4nIxUUJBABPTkuGBwYHhw7OS4YHBgeHAABACIAXgHuAX4ABQANALsAAQABAAQABCswMRMhESM1ISIBzGz%2BoAF%2B%2FuC4AAEAQf84Af0B8AAXAD8AuAAARVi4AAsvG7kACwAEPlm4AABFWLgAES8buQARAAQ%2BWbkABQAB9LoADgARAAUREjm6ABQAEQAFERI5MDETMxEUFjMyNjcRMxEjJyMOASMiJicXFSNBkx0gHCcWk3gLBBM5IRIfDQmTAfD%2B3zYoGh0BSP4QRSQlCA5agAD%2F%2FwCBAj4BaALUAAcA4AEWAAAAAP%2F%2FAMQCPgGrAtQABwDiARYAAAAA%2F%2F8AfAI%2BAbAC1AAHAOQBFgAAAAD%2F%2FwBwAj8BvALGAAcA5gEWAAAAAP%2F%2FAG0COwG%2FAsYABwDpARYAAAAA%2F%2F8AjAJQAaACrQAHAOgBFgAAAAD%2F%2FwClAiQBhwLwAAcA6wEWAAAAAP%2F%2FALD%2FIwFsAAQABwDtARcAAAAAAAH%2FawI%2BAFIC1AADABgAuAAARVi4AAMvG7kAAwAMPlm4AAHcMDEDMxcjlY5ZawLUlgAAAAAB%2F14CvgBLAzYAAwALALoAAQADAAMrMDEDMxcjopxRdQM2eAAB%2F64CPgCVAtQAAwAYALgAAEVYuAAALxu5AAAADD5ZuAAC3DAxEyM3MxlrWY4CPpYAAAAAAf%2B1Ar4AogM2AAMACwC6AAIAAAADKzAxEyM3Myp1UZwCvngAAf9mAj4AmgLUAAcANwC4AABFWLgABi8buQAGAAw%2BWbgAAEVYuAADLxu5AAMADD5ZuAAGELgAANy6AAUAAAAGERI5MDEDMxcjJyMHIzp0YGM1BDVjAtSWT08AAAAB%2F1gCvgCoAzYABwAXALoABgABAAMruAAGELgAB9y4AAPQMDEDNzMXIycjB6hgkGBxNQQ1Ar54eD09AAAB%2F1oCPwCmAsYAGABBALgAAEVYuAAALxu5AAAADD5ZuAAARVi4AA8vG7kADwAMPlm7ABQAAQADAAQruAAPELkACAAB9LgAAxC4AAzQMDEDPgEzMh4CMzI2NzMOASMiLgIjIgYHI6YIOCgUIhwZCw0QBksIOCgUIR0ZCw0QBksCP0VCDhAOFBhEQw4RDhQZAAAB%2F1YCvwCqA0cAFwAjALoAAAARAAMrugAFAAwAAyu4AAAQuAAI0LgADBC4ABTQMDETIi4CIyIGByM%2BATMyHgIzMjY3Mw4BPxQiHRkMDRQFSwg8JxQiHRkMDRQFSwg8Ar8OEQ4UGUVDDhEOFBlFQwAAAf92AlAAigKtAAMACwC4AAMvuAAB3DAxAyEVIYoBFP7sAq1dAAAAAAL%2FVwI7AKkCxgALABcAKAC4AABFWLgAAC8buQAAAAw%2BWbgABty4AAAQuAAM0LgABhC4ABLQMDEDIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAZjHycnHx8nJ6cfJycfHycnAjsoHh0oKB0eKCgeHSgoHR4oAAAAAv9XArwAqQNIAAsAFwAbALoABgAAAAMruAAAELgADNC4AAYQuAAS0DAxAyImNTQ2MzIWFRQGMyImNTQ2MzIWFRQGYx8nJx8fJyenHycnHx8nJwK8KB4eKCgeHigoHh4oKB4eKAAAAAAC%2F48CJABxAvAACwAXABMAugAMAAAAAyu6AAYAEgADKzAxESImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWMz4%2BMzM%2BPjMRGBgRERgYAiQ3Ly83Ny8vNzcaFRUaGhUVGgAAAAAC%2F48CuQBxA30ACwAXABMAugAMAAAAAyu6AAYAEgADKzAxESImNTQ2MzIWFRQGJzI2NTQmIyIGFRQWMz4%2BMzM%2BPjMRFxcRERgYArk1LS01NS0tNTcXFBQXFxQUFwAAAAAB%2F5n%2FIwBVAAQAEQATALoAAgARAAMrugALAAoAAyswMSczBx4BFRQOAgcnPgE1NCYnJ1YUGiAdMEAkCyQvGSIELwgjHxolGg0COwQUFA0VCAAAAAAB%2F5n%2FIwBVAAQAEQATALoAEQACAAMrugAKAAsAAyswMSczBx4BFRQOAgcnPgE1NCYnJ1YUGiAdMEAkCyQvGSIELwgjHxolGg0COwQUFA0VCAAAAP%2F%2FADUAAADfAtICBgAmAAAAAQAAAPEAZAAHAGkABQABAAAAAAAKAAACAAFzAAMAAQAAAGAAYABgAGAArgEWAWQBqAHmAhwCeAKyAtIDBgNOA3QD2gQqBHQEugUgBXIF3gYKBkYGggb4B1QHkgfICD4Isgj8CXQJ0gokCsYLFAtIC5IL2AwMDIwM4g0sDaAOFg5gDsoPFA9qD6YQGBByEMYQ%2BhEGERIRHhEqETYRQhGoEbQRwBHMEdgR5BHwEfwSCBIUEiASLBI4EkQSUBJcEuITPhNKE1YTYhNuE3oT2BQaFCYUMhQ%2BFEoUVhRiFRQVIBUsFTgVRBVQFVwVaBV0FYAVoBWsFbgVxBXQFdwV6BZOFt4XXBdoF3QXgBeMF5gXpBgeGHwY%2FBmCGjAahBq%2BGwwbehvKHCQcjhzEHUQdrB3OHfYeAh4OHjweYh6yHv4fFB8gH1Qfeh%2BGH5IfnB%2BqH8If2h%2FmH%2FIgBiAOICIgNiBAIGYgeiCcIL4g2iD2IVIhriHIIdoh9CIOIjYipiLYI1Qj0CRiJOIk7CT2JQAlCiVOJXQlsCYKJkwmVCZcJrAm7icqJ4An8ChcKMopRimcKbgpwCnSKeQp9ioIKiwqQCpgKqgqtCrWKvgrMCtiK5wrsiv4LAIsDCwWLCAsKiw0LD4sSCxiLHQsjiygLM4s7C00LWwtgC26Le4uHi5OLnguoi6iLqoAAQAAAAEMzGhqkv5fDzz1AAkD6AAAAADNl4CfAAAAAM2X4xD%2FGf6BBMcDzgABAAkAAgAAAAAAAAKyAFAAAAAAANAAAADQAAACPf%2F6Al0ATQJGAC4CewBNAiQATQIMAE0CfgAuAqIATQEtAE0B%2FQAQAmYATQIGAE0C%2BgBNApkATQKsAC4CXgBNAqwALgJoAE0CLAAjAiwAGQKZAEkCLP%2F5Ay0ADgI3AAsCDf%2F4Ah0AJAIWAC8CPQBBAdMAJAI9ACcCBgAkAVUAGAIWACICOwBBARQANQEW%2F80CJABBAR4AQQNZAEECPABBAisAJAI9AEECPAAnAY4AQQG7ABUBfwARAjgAPAILAAwDCAAYAgIADgIJAAwBzAAmAj3%2F%2BgI9%2F%2FoCPf%2F6Aj3%2F%2BgI9%2F%2FoCPf%2F6A03%2F8gJGAC4CJABNAiQATQIkAE0CJABNAS3%2F9AEtAEsBLf%2FuAS3%2F7QKZAE0CrAAuAqwALgKsAC4CrAAuAqwALgKsACgDZwAuApkASQKZAEkCmQBJApkASQIN%2F%2FgClAAaAmkATQIWAC8CFgAvAhYALwIWAC8CFgAvAhYALwMSAC8B0wAkAgYAJAIGACQCBgAkAgYAJAEU%2F%2FUBFAA4ART%2F8AEU%2F%2BEBFABBAjwAQQIrACQCKwAkAisAJAIrACQCKwAkAisAJAM2ACQCeABBAjgAPAI4ADwCOAA8AjgAPAIJAAwCCQAMAjAAKgI9AEECkAAYArAAGAKbABkCEAAlAhAARgIQAB4CEAAWAhAAEwIQABcCEAApAhAALAIQACoCEAAiASwAPQEsAC4BLAA9ASwALgFUAFEBVABRAc8AKQHPACoBLABMAhgATAEsADcBLABHAhgANwIYAEcBLABHAhgARwEkADEBJAA2AeAAMQHgADYBTAArAUwAKwHgACsDIAArASwAPQFZACgB9AAMAVgASAFYADABWABXAVgALgFYAB8BWAAuAVMADQEMAFYBUwAcAQwAVgHJACYCEAAlAnwAJwLuAC0BzgAgA4cAMQIQACIBeABMAXgAGwF4ABsBeAAjAXgAGgF4AEwBeAAbAXgAGwF4ACMBZwAdAXUAGAFnAB0BdQAYAW0AJwIQABQCEAAnAhAAMAIQAAwCEAAVAhAAPABg%2F1UAYP9VA1kAGgMpAC8DTgAvAzIAGQIQACICEAAiAhAAMAIQACICEAAiAhAAIgIQACICEAAiAhAAMgIQAB0CEAAiAj0AQQIrAIECKwDEAisAfAIrAHACKwBtAisAjAIrAKUCKwCwAAD%2FawAA%2F14AAP%2BuAAD%2FtQAA%2F2YAAP9YAAD%2FWgAA%2F1YAAP92AAD%2FVwAA%2F1cAAP%2BPAAD%2FjwAA%2F5kAAP%2BZANAAAAEUADUAAQAAA9j%2B7wAABOH%2FGf7ZBMcAAQAAAAAAAAAAAAAAAAAAAPEAAwHhArwABQAAAooCWAAAAEsCigJYAAABXgAyASAAAAILBwMDBAMCAgQgAAAHAAAAAQAAAAAAAAAAQURCRQAgAAD%2B%2FwLu%2FwYAAAPYAREgAAGTAAAAAAHgApQAAAAgAAMAAAACAAAAAwAAABQAAwABAAAAFAAEAdIAAAA8ACAABAAcAAAADQAvADkAQABaAGAAegB%2BAL8AzwDfAO8A%2FwExAVMCxgLaAtwgFCAaIB4gIiA6IEQgdCCsIhIiFf%2F%2FAAAAAAANACAAMAA6AEEAWwBhAHsAoADAANAA4ADwATEBUgLGAtoC3CATIBggHCAiIDkgRCB0IKwiEiIV%2F%2F8AAf%2F1AAAATAAA%2F8MAAP%2B9AAAAAP94AAD%2FdwAA%2FzYAAP4U%2FgT9%2F%2BCJAAAAAOB94F3gguBB4Bjeu96yAAEAAAAAADgAAABUAAAAXgAAAGYAbAAAAKgAAADEAAAA4AAAAAAAAAAAANoA3gAAAAAAAAAAAAAAAAAAAAAAAwCKAI8AsQDBAMgAewCOAKEAogCrAMwAhwCaAIYApwCIAIkA0QDQANIAjACwAKMAqQCkANQAoADYAKUAqACmANUA7wCLAMUAwgDAAMMAqgCsANwArgC7AJgA1gCbAK8A3QC%2FANMAswC0ANkA1wCtAJ4A3wCyALwAmQDJAMoAywCNAFUASABJAEoASwBMAE0AzgBOAFAAUQBSAFMAVABWAHAAdwBoAGkAagBrAGwAbQDPAG4AcQByAHMAdAB1AHgAdgBPAG8AkACRAJQAkgCTAJUAALgAACxLuAAJUFixAQGOWbgB%2F4W4AEQduQAJAANfXi24AAEsICBFaUSwAWAtuAACLLgAASohLbgAAywgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbgABCwgRrAEJUZSWCOKWSBGIGphZLAEJUYgamFkUlgjilkv%2FS24AAUsSyCwAyZQWFFYsIBEG7BARFkbISEgRbDAUFiwwEQbIVlZLbgABiwgIEVpRLABYCAgRX1pGESwAWAtuAAHLLgABiotuAAILEsgsAMmU1iwQBuwAFmKiiCwAyZTWCMhsICKihuKI1kgsAMmU1gjIbgAwIqKG4ojWSCwAyZTWCMhuAEAioobiiNZILADJlNYIyG4AUCKihuKI1kguAADJlNYsAMlRbgBgFBYIyG4AYAjIRuwAyVFIyEjIVkbIVlELbgACSxLU1hFRBshIVktALAAKwCyAQECKwGyAgICKwG3AiYeGBMMAAgrtwMlHhgTDAAIKwC3ATAoIhgQAAgrALIECAcrsAAgRX1pGERLsGBSWLABG7AAWbABjgAAFABzAJIAlgAAAAz%2FMwAMAeYADAIGAAwCPgAMAn4ADAKQAAwCyAAMAAAABwBaAAMAAQQJAAEAHgAAAAMAAQQJAAIACAAeAAMAAQQJAAMARgAmAAMAAQQJAAQAKABsAAMAAQQJAAUAggCUAAMAAQQJAAYAJAEWAAMAAQQJAA4ASAE6AFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvAEIAbwBsAGQAMQAuADAANQAwADsAQQBEAEIARQA7AFMAbwB1AHIAYwBlAFMAYQBuAHMAUAByAG8ALQBCAG8AbABkADsAQQBEAE8AQgBFAFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvACAAQgBvAGwAZABWAGUAcgBzAGkAbwBuACAAMQAuADAANQAwADsAUABTACAAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAMAA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOQAwADAAUwBvAHUAcgBjAGUAUwBhAG4AcwBQAHIAbwAtAEIAbwBsAGQAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAZABvAGIAZQAuAGMAbwBtAC8AdAB5AHAAZQAvAGwAZQBnAGEAbAAuAGgAdABtAGwAAgAAAAAAAP%2B1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADxAAABAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAGYA0wDQANEArwBnAJEAsADWANQA1QBoAOsA6QDtAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA1wB4AHoAeQB7AH0AfAChALEAiQB%2FAH4AgACBAOwAugDqAO4BBAEFAAkAEwAUABUAFgAXABgAGQAaABsAHAARAA8AHQAeAAQAowAiAKIACgAFALYAtwC0ALUAxADFAL4AvwCpAKoAEAEGALIAswDDAIcAQgALAAwAPgBAAF4AYAASAF8APwDoAA0AhgCIAIsAigAjAAYBBwEIAQkBCgELAQwBDQEOAQ8AnQCeARABEQCDAL0ABwCFAJYBEgCEALwBEwAIAPUA9AD2AA4A7wDwALgAIAAfACEAkwBBAGEApAEUAEMAjQDYANkAjgDaAN0A3gEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUETlVMTAJDUgNmX2YDZl90B3VuaTAwQUQIb25lLnN1cHMIdHdvLnN1cHMKdGhyZWUuc3Vwcwlmb3VyLnN1cHMJemVyby5kbm9tCG9uZS5kbm9tCHR3by5kbm9tCnRocmVlLmRub20JZm91ci5kbm9tBmEuc3VwcwZvLnN1cHMERXVybwd1bmkyMjE1B3VuaTAwQjUHdW5pMDMwMAt1bmkwMzAwLmNhcAd1bmkwMzAxC3VuaTAzMDEuY2FwB3VuaTAzMDILdW5pMDMwMi5jYXAHdW5pMDMwMwt1bmkwMzAzLmNhcAd1bmkwMzA0B3VuaTAzMDgLdW5pMDMwOC5jYXAHdW5pMDMwQQt1bmkwMzBBLmNhcAd1bmkwMzI3C3VuaTAzMjcuY2FwB3VuaTAwQTAFaS50cmsAAAAAAAAB%2F%2F8AAgABAAAADAAAAAAAAAACAAgABAA3AAEAPgA%2BAAEATgBPAAEAZwBnAAEAbgBvAAEAeAB4AAEAeQB6AAIA2gDaAAEAAQAAAAoAMABEAAJERkxUAA5sYXRuABoABAAAAAD%2F%2FwABAAAABAAAAAD%2F%2FwABAAEAAmtlcm4ADmtlcm4ADgAAAAEAAAABAAQAAgAAAAIACgEuAAEAJAAEAAAADQBCAGgAegCcALIAwADWAOQA8gD4AQIBEAEaAAEADQAJABMAGQAbADMANQBWAHAAiwCNAJ4ApwCpAAkAGf%2F6ABv%2F5AAz%2F94ANf%2FcAGUADABmACAAnv%2FuAKf%2F0ACvAAYABAAb%2F%2BQANf%2FuAKf%2FzgCvABAACAAz%2F%2FYANf%2FtAGMAEQBlACgAZgBBAJ7%2F%2FQCn%2F%2BUArwAzAAUAM%2F%2FmADX%2F9gCe%2F9gAq%2F%2F2AK%2F%2F9AADABn%2F%2BACn%2F%2BwArwAbAAUAGf%2FwABv%2F9gCe%2F%2BwAq%2F%2F8AK8ACwADAKf%2F4QCp%2F9gAq%2F%2FZAAMAM%2F%2FmAKn%2F3ACv%2F8sAAQAZ%2F8wAAgAZ%2F6gAG%2F%2B7AAMAGf%2FcABv%2F3AA1%2F%2BwAAgBmABAA8AAHAAIAGf%2FUADP%2F7AACFIwABAAAFN4WLAA5AC4AAP%2F5%2F73%2F8f%2F5%2F8AAGABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5v%2B6AAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7wAAAAA%2F6gAAAAAAAAAAAAA%2F%2BT%2F5P%2FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FoP%2FK%2F8r%2FggAAAC0AAAAAAAD%2Fp%2F%2FEAAD%2Fq%2F%2FL%2F6f%2F3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FYABwAAAAAAAP%2FYAAAAAAAA%2F%2BQAAP%2Fw%2F7AAB%2F%2F7%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9j%2F9QAA%2F%2B4AAAAA%2F%2B7%2FsAAAAAAAAAAA%2F%2FYAAP%2F2AAAAAAAA%2F%2B4AAP%2Bs%2F9j%2F5P%2BiAAAAAAAAAAD%2F7v%2F6%2F9z%2FuP%2Bv%2F%2B7%2F%2BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5AAA%2F%2Fj%2F7gAAAAD%2F7gAAAAAAAP%2Fu%2F%2FgAAAAAAAAAAP%2FtAAD%2F9gAA%2F%2BIAAP%2FsAAAAAAAAAAAAAP%2Fz%2F%2FgAAAAAAAD%2F7v%2F2%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F0%2F%2B7%2F%2BP%2Fw%2F%2BwAAP%2FuAAAAAAAA%2F%2BT%2F9v%2FbAAAAAAAA%2F%2FYAAP%2Fu%2F%2FYAAAAA%2F7gABAAAAAAAAAAA%2F%2Fj%2F%2BAAAAAAAAP%2Fu%2F%2FYAAP%2Fc%2F%2B4AAAAAAAAAAAAAAAAAAAAA%2F%2BwAAP%2F4AAAAAAAAAAAAAAAA%2F%2FgAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FqAAAAAP%2F0AAAAAAAAAAD%2F7gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5v%2Fu%2F%2Fb%2F5gAA%2F%2Fb%2F3v%2FQAAD%2F9v%2FrAAD%2F5AAAAAD%2F8AAAAAD%2F3P%2F1%2F94AAP%2FI%2F%2BQAAAAAAAAAAP%2FuAAD%2F8P%2Fe%2F9D%2F3v%2Fm%2F%2Bb%2FzP%2F2AAAAAP%2FuAAAAAAAAAAAAAP%2BI%2F9v%2Fxf%2Bq%2F%2FgAAP%2FL%2F5QAAP%2F6%2F%2BQAAP%2FcAAD%2F7v%2FyAAAAAP%2Fl%2F%2Fb%2FVP%2Bw%2F5D%2FkAAAAAAAAAAA%2F7EAAP%2FM%2F3T%2FlP%2FL%2F9oAAP%2FU%2F%2BgAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAA%2F%2BwAAAAAAAAAAAAA%2F%2FYAAP%2FsAAAAAAAAAAD%2FygAAAAAAAP%2FoAAAAAAAA%2F%2FwAAAAAAAD%2F9v%2FmAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8AAAAAAAAAAAAAD%2F7AAAAAD%2F7v%2F2AAAAAAAAAAD%2F9v%2Fy%2F%2FYAAP%2F2AAD%2F9v%2F0AAAAAAAA%2F%2FYAAP%2F2AAQAAAAAAAAAAP%2Fu%2F%2FYAAAAAAAAAAAAA%2F%2B7%2F4P%2FiAAAAAP%2Fu%2F%2B4AAAAAAAAAAP%2FsAAAAAP%2FwAAAAAAAAAAAAAAAA%2F%2B4AAAAAAAAAAAAA%2F%2B4AAAAAAAD%2F9AAAAAD%2F%2BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FIAAAAAAAAAAAAAAAAAAAAA%2F%2B7%2FwAAA%2F%2BgAAP%2BM%2F9j%2F5%2F%2FU%2F%2BT%2FwP%2F0%2F7T%2FhgAA%2F%2FT%2F1gAAAAD%2FvAAU%2F7wAAAAAAAAAAP%2FsAAAAAAAA%2F%2Bj%2F6P%2Fn%2F7D%2FyP%2FW%2F8T%2FwP%2FYAAAAAAAAAAAAAAAAAAD%2F7v%2F2AAAAAAAA%2F%2Bb%2F9P%2F2AAAAAP%2F4AAAAAP%2FIAAAAAAAAAAAAAAAAAAD%2F8AAAAAAAAP%2F2%2F%2FYAAAAAAAAAAAAA%2F%2FAAAAAAAAD%2F%2BAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FwAAAAAAAD%2F2gAAAAAAAAAA%2F%2FQAAAAA%2F9EAAAAAAAAAAAAAAAAAGf%2F4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F4%2F%2FYAAAAA%2F%2Fb%2F5gAAAAAAAAAA%2F%2B7%2F9gAAAAD%2FxAAA%2F%2B7%2F%2B%2F%2BQ%2F%2B7%2F7f%2Fq%2F%2B7%2FtAAA%2F8n%2FnAAA%2F%2B7%2F2gAAAAD%2FyAAY%2F9EAAAAAAAAAAAAA%2F%2FAAAAAA%2F%2B7%2F5P%2Fa%2F7T%2Ft%2F%2FY%2F8n%2FyP%2B6%2F9wAAAAAAAAAAP%2F2AAD%2F7v%2F1AAD%2F9AAAAAAAAP%2Fi%2F%2Fb%2F7P%2F0%2F%2Bz%2F8%2F%2FoAAD%2F7v%2FyAAAAAP%2FEABQAAAAAAAAAAAAAAAAAAAAAAAD%2F9P%2F0AAD%2F6P%2FoAAAAAAAAAAAAAAAAAAAAAP%2FkAAD%2F%2BP%2FkAAAAAAAA%2F%2BYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F1AAAAAAAAAAAAAAAAAAA%2F%2BYAAP%2FgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAA%2F%2BT%2F9gAAAAAAAAAAAAAAAAAAAAD%2F9gAA%2F%2BQAAAAAAAAAAAAAAAD%2F7gAGAAAAAAAAAAD%2F7gAAAAAAAAAAAAAAAP%2F7%2F94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2BM%2F%2BX%2F2v%2BQAAAAJP%2Fs%2F28AAAAAAAAAAAAAAAAAAAAAAAAAAP%2FqAAD%2FWAAAAAAAAAAAAAAAAAAA%2F6QAAAAA%2F4D%2Fg%2F%2FE%2F90AAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BQAAP%2F2%2F9z%2F9gAA%2F%2Fr%2F9gAAAAD%2F7AAAAAD%2F9f%2F7AAD%2F7AAA%2F%2B4AAP%2Fo%2F97%2F%2BP%2FxAAAAAAAAAAD%2F5gAA%2F%2FAAAAAA%2F%2Fr%2F%2Bv%2FwAAD%2F8QAAAAAAAAAAAAAAAAAAAAAAKgAAACoAKv%2F1%2F%2FYAAAAY%2F8AAAAAAAAAAAP%2FsAAD%2F9gAAAAAAAP%2F8AAAAIP%2FsADL%2F%2FAAEAAAAAAA6ABgAFgAoABgABAAA%2F%2Fj%2F7gAAAAD%2F%2BP%2FuAAAAAAAjAAAAAP%2FcAAAAAP%2FuAAAALv%2F4AAAAAAAAAAAAAAAA%2F%2B0AAP%2FuAAAAAAAAAAD%2F6AAAAAAABAAcAAAAAAAAAAAAAP%2FSAAAAAP%2F4%2F%2FgAAAAAAAAAAAAA%2F%2B4AAAAAAAQAAAAA%2F88AAAAA%2F%2B7%2F9v%2F2AAD%2F3AAEAAAAAAAAAAD%2F9gAA%2F%2BQAAAAA%2F%2B7%2F7v%2F8AAD%2F3P%2FwAAAAAAAAAAAAAAAA%2F%2BAAAAAAAAAAAP%2F4%2F6v%2F3AAAAAD%2F8P%2FwAAAAAAAAAAD%2F5AAAAAD%2F5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BgAAAAAAAAAAAAAAAAAAP%2F2AAD%2F8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FFAAAAAP%2FIAAAAAP%2F4%2F9z%2F9gAAAAAAAAAA%2F%2FX%2F%2BwAAAAAAAAAAAAAAAP%2FcAAD%2F8AAAAAAAAAAA%2F%2Bz%2F%2BP%2FgAAD%2F%2FP%2F4%2F%2Fj%2F5gAAAAAAAP%2F7%2F%2FMAAAAAAAAAAAAAAAAAAAAA%2F%2Fv%2F6AAAAAAAAP%2BE%2F7AAAAAAAAD%2F3v%2Fu%2F%2BgAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FU%2F4QAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F2AAAABf%2Fw%2F6j%2F7AAA%2F%2FYAAP%2FjAAD%2F9v%2B3AAAAAAAAAAAABP%2F0ACD%2F6AAAAAAAAAAAAAAAAAAAABgABQAEAAD%2F5P%2FsAAD%2F9v%2F2AAAAAAAAAAAAAP%2FkAAAAAP%2FsAAAAAAAA%2F%2BcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5AAAAAAAAAAAAAAAAAAA%2F%2FYAAP%2FnAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B4AAAAA%2F%2Fj%2F9gAAAAAAAAAEAAAAAAAAAAD%2F9AAA%2F%2FYAAAAAAAAAAAAAAAD%2F7AAYAAQAAAAAAAAAAAAA%2F9wAAAAAAAAAAAAA%2F9z%2F9AAAAAAAAAAAAAQAAAAAAAD%2F7AAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FIAAAAAAAAAAAAAAAAAAP%2FuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FkAAAAAP%2FnAAD%2F9gAAAAD%2Frf%2F4AAAAAAAA%2F%2FYAAP%2F4%2F%2BIAAAAAAAAAAAAAAAAACwAAAAAAAAAA%2F%2Fj%2F7gAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BYAAAAAAAAAAAAA%2F%2BwAAAAA%2F%2FAAAP%2F2AAAAAP%2FEAAAAAAAAAAD%2F7AAA%2F%2Fj%2F2AAAAAAAAAAAAAAAAAAb%2F%2FwAAAAAAAD%2F%2BP%2F4AAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5AAAAAAAAAAAAAD%2F6gAAAAD%2F%2BAAAAAD%2F%2BAAAAAAAAAAAAAAAAP%2FyAAD%2F9gAAAAAAAP%2F2AAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAD%2F%2BAAAAAD%2F5gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F6%2F%2FL%2F5AAA%2F%2BYAAP%2Bk%2F9n%2F5f%2Fi%2F%2Fb%2F2gAA%2F%2B7%2FegAA%2F%2Fb%2F7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5gAAAAD%2F7P%2Fs%2F%2BX%2FzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FkAAAAAAAAAAAAAAAAAAD%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8gAAAAD%2F9v%2FwAAAAAAAA%2F3z%2Fzv%2F2%2F80AAP%2FeAAD%2F6%2F9yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2Bf%2FsAAD%2F9v%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAD%2F7AAA%2F%2FYAAP%2B0%2F%2B7%2F9P%2Fs%2F%2Fb%2F3QAA%2F%2B3%2FwAAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAA%2F%2Bz%2F7P%2Fs%2F%2B7%2F6%2F%2FlAAAAAAAAAAD%2F7P%2F2AAAAAAAAAAD%2F5v%2FwAAD%2F%2Bv%2FuAAD%2F5v%2F2%2F%2Bb%2F8P%2FwAAD%2F5v%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F4%2F%2FAAAP%2FuAAD%2F3P%2FuAAAAAP%2Fu%2F%2FAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FkAAP%2F4%2F7QAAAAAAAAAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3P%2FcAAAAAAAA%2F%2FgAAP%2FuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5v%2BoAAAAAAAAAAAAAAAA%2F%2FgAAAAAAAD%2F7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F5v%2B0%2F7kAAP%2FuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FYAAD%2F5v%2B6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bb%2F8AAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8gAAP%2F2%2F7cAAAAAAAAAAAAAAAD%2F4v%2F0AAAAAAAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7P%2FuAAAAAAAAAAAAAP%2FkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Fe%2F%2B3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2BAAAAAAAAAAAAAAAAAAAAAAAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F6AAAAAAAAP9o%2F68AAAAAAAD%2F2v%2F0%2F%2BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FwAAAAAAAAAAAAAAAAAAAAAAAA%2F90AAAAAAAAAAAAAAAD%2F7AAAAAD%2F8AAA%2F%2FYAAAAA%2F8T%2F8wAA%2F%2FgAAP%2FsAAD%2F%2BP%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8AAAAAAAAP%2FkAAAAAAAAAAAAAP%2FoAAAAAP%2FfAAAAAP%2FuAAAAAAAA%2F%2FgAAP%2F2%2F%2FYAAP%2FmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fu%2F%2BQAAAAAAAD%2F7AAAAAAAAgANAAQAIAAAACIAJQAdACgAKAAhACoAYgAiAGcAdgBbAHgAegBrAIYAkwBuAJYAngB8AKEAoQCFAKMAowCGAKUApQCHAKcApwCIAKkAqQCJAAEABACkAAYABwAIAAwAJgAnAAkAKAApACoACgALACgAKAAMACsADAANAA4ADwAQAC0AEQAuABIAEwAUAB0AFQAAABgAGQAaABwAAAAAABsAAAAcABwAHQAdACIAHwAgACEAIgA3ACMAOAAkACUABgAGAAYABgAGAAYAJgAIACYAJgAmACYAKQApACkAKQAoAAwADAAMAAwADAAMACYAEAAQABAAEAASAAwALAAUABQAFAAUABQAFAAYABUAGAAYABgAGAAAAAAAAAAAACIAHAAdAB0AHQAdAB0AHQAYADEAIgAiACIAIgAkACQAAAAdABkAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAXABYAFgABAAIANAAEADUANQAeADYAHgA2AAAAAAAyADMAMgAzADAAMAAwADAAAwAAAAAALwAAAC8AAAAvAAAABQACAEgABAAEAAsABgAGAA4ACgAKAA4ADQANABIAEgASAA4AFAAUAA4AFgAWAAwAFwAXAAIAGAAYAAMAGQAZAB4AGgAaAAQAGwAbAB8AHAAcAAUAHQAdAA0AHgAeAA8AIAAiABEAIwAjABAAJAAkAAYAJgAmABMAJwAnAAcAKgArACgALAAsABEALQAtACgALgAuABEALwAvACgAMAAwACkAMQAxABQAMgAyABUAMwAzACMANAA0ACQANQA1ACUANgA2AAgANwA3ACoAOAA9AAsAPwA%2FAA4ASQBPAA4AUABTAAMAVABUAAUAVQBVAAEAVwBdAA8AXgBiABEAYwBmABMAZwBoACgAaQBvABEAcQB0ABUAdQB2AAgAeQB6ABAAhgCHAAoAiACJACwAigCKABsAiwCLABwAjACMACAAjQCNAB0AjgCPACEAkACQACIAkQCRAAkAkgCSACIAkwCTAAkAlgCWACcAlwCXACsAmACYACcAmQCZACsAmgCdACYAngCeABgAogCiAC0ApACkAC0ApgCmAC0ApwCnABoAqQCpABcAqwCrABYArwCvABkA8ADwABMAAAABAAAACgBgAJ4AAkRGTFQADmxhdG4AGgAEAAAAAP%2F%2FAAEAAAAWAANBWkUgAB5DUlQgAChUUksgADIAAP%2F%2FAAEAAQAA%2F%2F8AAgACAAUAAP%2F%2FAAIAAwAGAAD%2F%2FwACAAQABwAIbGlnYQAybGlnYQAybGlnYQAybGlnYQAybGlnYQAybG9jbAA4bG9jbAA4bG9jbAA4AAAAAQABAAAAAQAAAAIABgAaAAEAAAABAAgAAQAGAMoAAQABACYABAAAAAEACAABABoAAQAIAAIABgAMAHkAAgAjAHoAAgAxAAEAAQAj%29%20format%28%27truetype%27%29%3B%0A%7D%0A%40font%2Dface%20%7B%0Afont%2Dfamily%3A%20%27Source%20Sans%20Pro%27%3B%0Afont%2Dstyle%3A%20italic%3B%0Afont%2Dweight%3A%20400%3B%0Asrc%3A%20url%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAARAQAABAAQR0RFRgNEA3IAAG18AAAAQEdQT1Oz7r2nAABtvAAAFhxHU1VCjb2NzgAAg9gAAABwT1MvMlq1lDoAAGQ0AAAAYGNtYXDzMPm1AABklAAAAeZjdnQgDZkA%2BgAAaDwAAAAoZnBnbQZZnDcAAGZ8AAABc2dhc3D%2F%2FwADAABtdAAAAAhnbHlmQB3ERQAAARwAAFz4aGVhZP3Ms%2BoAAGAYAAAANmhoZWEIGwb0AABkEAAAACRobXR4lfkiLwAAYFAAAAPAbG9jYezv1iYAAF40AAAB4m1heHADCgJaAABeFAAAACBuYW1lJDg%2BsQAAaGQAAAHccG9zdNT1lfMAAGpAAAADMXByZXCXBvrrAABn8AAAAEsABQAkAAACbgKUAAMABgAJAA8AFQBxALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAIvG7kAAgAEPlm6AAQAAgAAERI5ugAFAAIAABESOboABwACAAAREjm6AAgAAgAAERI5uQAKAAH0ugAOAAIAABESObgAABC5ABEAAfS6ABUAAgAAERI5MDETIQMhEwM3FxMHAzMvASMHEzcjHwEzpgHIgv44sl6poWCr4fksHwRHoFrlKBwEApT9bAI%2F%2Firr6wHW6%2F7kiGVlAR1%2Ff10AAv%2FLAAAB1QKQAAkAEQBUALgAAEVYuAAOLxu5AA4AED5ZuAAARVi4ABEvG7kAEQAEPlm4AABFWLgADC8buQAMAAQ%2BWboABQAMAA4REjm6AAsADAAOERI5uAALL7kACQAB9DAxAScuAScjDgEPARcjByMBMxMjAWwKBQkEBBozHDrJ6GlWAWRaTFEBCXA0aTk5ZzZwPM0CkP1wAAAAAwAjAAACIAKQABMAHAAlAFcAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAEy8buQATAAQ%2BWboAIwAAABMREjm4ACMvuQAcAAH0ugAJABwAIxESObgAABC5ABoAAfS4ABMQuQAdAAH0MDETMzIWFRQOAg8BHgEVFA4CKwETMjY1NCYrAQcTMjY1NCYrAQOmr19sGSo0GwEzRilKZDrS9l5aREtbLDNebk1JdDQCkElIITcqHAYEDEE4N08zGQF2RjgtMt3%2Bx0RNMj3%2FAAAAAQA5%2F%2FQCLQKcACEAOQC4AABFWLgABS8buQAFABA%2BWbgAAEVYuAAdLxu5AB0ABD5ZuAAFELkADAAB9LgAHRC5ABYAAfQwMTc0PgIzMhYXBy4BIyIOAhUUHgIzMjY3Fw4BIyIuAjkxWX1MOVAYNhQ1JjteQiQTKEAsKEMgIyRcPDhXOx%2F9TZV1SDcqKSAnPmJ5PC1LNh8gGzIgLCdGYQAAAAIAIwAAAjYCkAAKABUANQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAKLxu5AAoABD5ZuQALAAH0uAAAELkAEwAB9DAxEzMyFhUUDgIrATcyPgI1NCYrAQOmeomNMVuEU7CwQGZIJmZkNmoCkId5WZRpOkAxV3pJXmj97wABACMAAAIQApAACwBNALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm4AAAQuQACAAH0ugAGAAsAABESObgABi%2B5AAQAAfS4AAsQuQAJAAH0MDETIQchBzMHIwchByGmAWoN%2FuMq8Q7vMwEmDv6OApBB1UL2QgAAAAEAIwAAAhACkAAJAEMAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgACS8buQAJAAQ%2BWbgAABC5AAIAAfS6AAYAAAAJERI5uAAGL7kABAAB9DAxEyEHIQczByMDI6YBag3%2B4y3xDfA8TgKQQeRC%2FtcAAAABADn%2F9AI7ApwAJQBNALgAAEVYuAAFLxu5AAUAED5ZuAAARVi4ACEvG7kAIQAEPlm4AAUQuQAMAAH0uAAhELkAFgAB9LoAGgAFACEREjm4ABovuQAcAAH0MDE3ND4CMzIWFwcuASMiDgIVFB4CMzI2PwEjNzMDDgEjIi4COTFagVE7URk3EzcoPmJFJBMqQi8kOBQliA3OOSRdOTtbPh%2F9TpV1RzcqKSAnPmJ5PCxLOB8XEbVA%2FuQeJSZFYgAAAAABACMAAAJpApAACwBJALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAsvG7kACwAEPlm6AAgAAAALERI5uAAIL7kAAgAB9LgAABC4AATQuAALELgAB9AwMRMzAyETMwMjEyEDI6ZOOAEoOE2DTj%2F%2B2D5OApD%2B6wEV%2FXABOP7IAAAAAAEAIwAAAPQCkAADACUAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAAi8buQACAAQ%2BWTAxEzMDI6ZOg04CkP1wAAAB%2F%2F7%2F9AHIApAAEgArALgAAEVYuAAQLxu5ABAAED5ZuAAARVi4AAUvG7kABQAEPlm5AAwAAfQwMSUOAyMiJic3HgEzMjY3EzMDAWoIIjJEKztRFTMOOCoyPg1cTl64Kkg1HTcuKyQpSkIBzf4oAAAAAQAjAAACVwKQAAwASQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAMLxu5AAwABD5ZugACAAAADBESObgAABC4AATQuAAMELgACNC6AAkABAAIERI5MDETMwMzATMHEyMDDwEjpk5BAwFJWPaVUX6JLU4CkP68AUT8%2FmwBYobcAAABACMAAAGSApAABQArALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AAQvG7kABAAEPlm5AAIAAfQwMRMzAyEHIaZOdgEUDf6eApD9skIAAQAjAAACvAKQABkAXQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAAELgABtC4ABkQuAAJ0LoAAwAGAAkREjm6AA0ACQAGERI5ugARABkAABESOboAFAAAABkREjkwMRMzExczNxMzAyMTPgE3IwcDIwMnIw4BBwMjpl05FgRGw12DS0wJGgwET8EsPRYEBg4ISkkCkP6eiIgBYv1wAXItaSuS%2FqQBXJItZy3%2BjgAAAAABACMAAAJmApAAEwBFALgAAEVYuAAALxu5AAAAED5ZuAAARVi4ABMvG7kAEwAEPlm4AAvQuAAAELgACNC6AAQACwAIERI5ugAOAAAAExESOTAxEzMTFzM%2BATcTMwMjAycjDgEHAyOmTpYqBAYNC0VLg02UKwQGDwpGSwKQ%2FlyJMW0zAVz9cAGjjTNqMv6fAAACADz%2F9AJeApwAEwAlADkAuAAARVi4AAovG7kACgAQPlm4AABFWLgAAC8buQAAAAQ%2BWbgAChC5ABQAAfS4AAAQuQAeAAH0MDEFIi4CNTQ%2BAjMyHgIVFA4CEyIOAhUUHgIzMj4CNTQmAR83VTkeL1R1RzdVOR4vVHYSNVc%2BIhIlOic1Vz4iSgwnSGY%2BS5FzRidIZT5LknNGAmU8YHY6ME84Hz1gdjlhdQACACMAAAItApAADgAXAEcAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgADS8buQANAAQ%2BWboACwAAAA0REjm4AAsvuAAAELkAFQAB9LgACxC5ABcAAfQwMRMzMh4CFRQOAisBAyMTMjY1NCYrAQOmuS5MNh4rTGk%2FaTRO7mZpTEhlNQKQEic8KzxYORv%2B%2BAFHUE85M%2F71AAAAAAIAPP9eAl4CnAARAC8ASwC4AABFWLgAHy8buQAfABA%2BWbgAAEVYuAAXLxu5ABcABD5ZuwAUAAEALAAEK7gAFxC5AAUAAfS4AB8QuQANAAH0uAAXELgAKdAwMRMUHgIzMj4CNTQmIyIOAgEGIyImJy4BNTQ%2BAjMyHgIVFA4CBx4BMzI2N4sSJTonNVc%2BIkpONVc%2BIgGBISBUeBlUVi9UdUc3VTkeK05tQhFUNQ8aDgENME84Hz1gdjlhdTxgdv4iC0tRE45sS5FzRidIZT5IjXBKBiwqBAMAAAIAIwAAAicCkAAIABoAVAC4AABFWLgAGi8buQAaABA%2BWbgAAEVYuAAYLxu5ABgABD5ZuAAARVi4ABUvG7kAFQAEPlm7AAAAAQAWAAQruAAaELkABwAB9LoAEwAWAAAREjkwMQEyNjU0JisBBxMyHgIVFA4CBxMjAyMDIxMBGF5kS0hgMqUuSzYeHTRGKnNTbHI3ToMBVVJGNi%2F9ATsRJTopLUo3JAj%2B4wEW%2FuoCkAAAAQAM%2F%2FQB%2FgKcAC8ASQC4AABFWLgAFC8buQAUABA%2BWbgAAEVYuAAsLxu5ACwABD5ZuQADAAH0ugALACwAFBESObgAFBC5ABsAAfS6ACMAFAAsERI5MDE3HgEzMj4CNTQmLwEuATU0PgIzMhYXBy4BIyIOAhUUFh8BHgEVFA4CIyImJ0UdVTceNCUWLSVMKjsfNkssO2AfMxpFLhwsHxAxJEwwMyI8VDJEbyiTLDESIC4cJDEXLhpIOCVCMh00KC4eKRIeJhQmLxYtHEc3LEo1Hjk7AAABAF0AAAI1ApAABwAzALgAAEVYuAACLxu5AAIAED5ZuAAARVi4AAcvG7kABwAEPlm4AAIQuQAAAAH0uAAE0DAxASM3IQcjAyMBG74NAcsNv3VOAk1DQ%2F2zAAAAAAEAT%2F%2F0AmYCkAAaADMAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAFC8buQAUAAQ%2BWbkABwAB9LgAABC4AA3QMDETMwMGFRQWMzI%2BAjcTMwMOAyMiJjU0NjejTksJQEUcMywhC1FMUg4vQE0sZGsFBQKQ%2FoktIkdMFjBLNgGS%2FmtHZD8daGcVLxkAAAAAAQBSAAACQQKQAA0ANwC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAANLxu5AA0ABD5ZugAFAAAADRESObgAABC4AArQMDETMxMeARczPgE3EzMBI1JPGwUIAwQZNRq1VP6pXQKQ%2FpQ2bDY1bjUBbP1wAAEAXwAAAywCkAAhAFcAuAAARVi4AAAvG7kAAAAQPlm4AABFWLgAIS8buQAhAAQ%2BWboABQAAACEREjm4AAAQuAAK0LgAFNC4ACEQuAAX0LoAEAAUABcREjm6ABsAIQAKERI5MDETMwMOAQczPgE3EzMTFhQVMz4BNxMzASMDNDY3Iw4BBwMjaFAKAwMEBBcwFqRHCQEEFCsUjk3%2B8mMHAQIEDiERs2ECkP6XNWo2Nmo1AWn%2BlzRrNjZqNQFp%2FXABkSRPJydMJ%2F5vAAAAAAH%2F3AAAAiICkAAZAEUAuAAARVi4AAEvG7kAAQAQPlm4AABFWLgAGS8buQAZAAQ%2BWbgAD9C4AAEQuAAL0LoABwAPAAsREjm6ABQAAQAZERI5MDETAzMXHgEXMz4BPwEzAxMjJy4BJyMOAQ8BI9hsVDgHDAgDESIPeFLtdVQ8CA8IAxQkEYBTAVQBPK4XKxoYMBer%2Fr7%2BsrgZMxoaNxm0AAABAFMAAAIeApAADwA3ALgAAEVYuAABLxu5AAEAED5ZuAAARVi4AA8vG7kADwAEPlm6AAYAAQAPERI5uAABELgAC9AwMRMDMxceARczPgE%2FATMBAyO%2Ba1AtCQ8JBBcrGHxT%2Fu40TQEAAZC9JEQmJUYkvP5w%2FwAAAAAB%2F%2F8AAAIdApAACQBFALgAAEVYuAADLxu5AAMAED5ZuAAARVi4AAgvG7kACAAEPlm5AAYAAfS4AADQuAAAL7gAAxC5AAEAAfS4AAXQuAAFLzAxNwEhNyEHASEHIQkBqf7UDgGJCv5aAUsP%2FlYvAiBBLv3gQgAAAAACACf%2F9AH4AfIAFAAjAFsAuAAARVi4AAUvG7kABQAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAASLxu5ABIABD5ZuAAARVi4AA0vG7kADQAEPlm4ABIQuQAVAAH0uAAFELkAHAAB9DAxNzQ%2BAjMyFhczNzMDIzcjDgEjIiYXMjY%2FAS4BIyIOAhUUFicsSl4zJz0RBBM%2BYT8IBCNYLkBMqCZPJCwVMhwkRDQfMKRGelo0KCE9%2FhpIJi5aGi0w2SYiK0hdMj89AAIAH%2F%2F0AfACyAAVACQAWwC4AABFWLgAAS8buQABABI%2BWbgAAEVYuAAILxu5AAgACD5ZuAAARVi4AAAvG7kAAAAEPlm4AABFWLgAEC8buQAQAAQ%2BWbgACBC5ABYAAfS4ABAQuQAdAAH0MDEzEzMPATM%2BATMyFhUUDgIjIiYnIwcTIgYPAR4BMzI%2BAjU0Jh%2BOTScWAiRULUBMLElfMic9EQMU6iJRIy4UMh0kRDMfLwLIvmAdK1pWRnpaNCghPQGyKiXnJiIrSF0zPj0AAAEAJf%2F0AbIB8gAdADkAuAAARVi4AAUvG7kABQAIPlm4AABFWLgAGy8buQAbAAQ%2BWbgABRC5AAwAAfS4ABsQuQAUAAH0MDE3ND4CMzIWFwcuASMiDgIVFBYzMjY3Fw4BIyImJS1LYjUsPBYtEyYdJEQ1Hzk6IDUXIhpMNlBjt0RzVDAiGTAXFShDWjJCRhoRMhQlZQACACf%2F9AInAsgAFQAkAFsAuAAARVi4ABEvG7kAEQAIPlm4AABFWLgAAS8buQABABI%2BWbgAAEVYuAAJLxu5AAkABD5ZuAAARVi4AAQvG7kABAAEPlm4AAkQuQAWAAH0uAARELkAHQAB9DAxATczAyM3Iw4BIyImNTQ%2BAjMyFhczAzI2PwEuASMiDgIVFBYBtCZNkD8IBCNYLkBMLEpeMyc6EgPVJk4lLBUyHCRENB8wAgq%2B%2FThIJi5aVkZ6WjQnIP6JLTDZJiIrSF0yPz0AAAAAAgAl%2F%2FQBvwHyABwAKgBRALgAAEVYuAAFLxu5AAUACD5ZuAAARVi4ABovG7kAGgAEPlm6AA0ABQAaERI5uAANL7gAGhC5ABMAAfS4AAUQuQAlAAH0uAANELkAKgAB9DAxNzQ%2BAjMyHgIVFAYHIQYeAjMyNjcXDgEjIiYlPgE1NC4CIyIOAgclLkldMCk5JBAMBf7EBxAlNiAdORceHVAwV2gBVAIDChYkGhszLCMJv0VxUSwbL0ElHTQOL0MsFBkRMxUfaboMGA4VJx4SFio6JAAAAAABACsAAAGNAtQAFwBWALgAAEVYuAAQLxu5ABAACD5ZuAAARVi4AAUvG7kABQASPlm4AABFWLgAFS8buQAVAAQ%2BWbgAEBC4AADQuAAFELkADAAB9LgAEBC5ABMAAfS4ABfQMDETPwE%2BATMyFhcHLgEjIgYPATMHIwMjEyNMQRAPTT4aKhIbCxoRISkIEWIMY1VMVT8B4QVRSlMNCzcHCjIrUz7%2BWAGoAAAC%2F%2F7%2FIAHyAfIAIAAvAFQAuAAARVi4ABsvG7kAGwAIPlm4AABFWLgAIC8buQAgAAg%2BWbgAAEVYuAAELxu5AAQABj5ZuwAhAAEAEwAEK7gABBC5AAsAAfS4ABsQuQAoAAH0MDEBAw4BIyImJzceATMyNj8BIw4BIyImNTQ%2BAjMyFhczNwMyNj8BLgEjIg4CFRQWAfJmFHRcMVYjJBxEKT9KEBgDJFIvPk8rSF0xJj4RAxPmI1AjKxcwHCNCMh4uAeb%2BA2FoJh01GCJPQmQjK1ZVQ3VXMyghPf5fKyrQJiIpRVkwPDoAAAAAAQAfAAAB2ALIABsARAC4AABFWLgABy8buQAHAAg%2BWbgAAEVYuAAALxu5AAAAEj5ZuAAARVi4ABovG7kAGgAEPlm4AA%2FQuAAHELkAFgAB9DAxEzMPATM%2BATMyFhUUBgcDIxM%2BATU0JiMiBgcDI61NMBAEKlAtPjUDBT5MPAQEIiYdRy5FTALI6z0jL0A5ER4U%2FsoBLBQYDSUmKi7%2BqAAAAAIAHwAAAPsCsgADAA8ALQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAACLxu5AAIABD5ZugAKAAQAAyswMRMzAyMTIiY1NDYzMhYVFAaATWJMohQdIxcUHSMB5v4aAksXFhkhGBYZIAAAAv%2BE%2FycA%2BwKyAA8AGwA3ALgAAEVYuAAOLxu5AA4ACD5ZuAAARVi4AAMvG7kAAwAGPlm6ABYAEAADK7gAAxC5AAoAAfQwMRcOASMiJic3HgEzMjY3EzMnIiY1NDYzMhYVFAZfDkM%2FFyMRGQoUEBwhCm9NDRMdIhgTHSM9RlYKCTkGBzAsAiRlFxYZIRgWGSAAAQAfAAAB7QLIAAwATgC4AABFWLgAAC8buQAAABI%2BWbgAAEVYuAAELxu5AAQACD5ZuAAARVi4AAwvG7kADAAEPlm6AAIAAAAMERI5uAAI0LoACQAEAAgREjkwMRMzAzMTMwcTIycPASOtTWAC%2BVjCdU5dcBpMAsj%2BHQEBy%2F7l7XJ7AAAAAQAs%2F%2FQA%2BgLIABMAKwC4AABFWLgAAC8buQAAABI%2BWbgAAEVYuAAOLxu5AA4ABD5ZuQAHAAH0MDETMwMGFBUUMzI2NxcOASMiJjU0N61NfQIRAwYHAQoWECAhBgLI%2FZEICAMSAQI7BAQhHhAaAAAAAAEAHwAAAuoB8gAsAFgAuAAARVi4AAYvG7kABgAIPlm4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAAsLxu5ACwABD5ZuAAGELgADtC4ACwQuAAh0LgAFtC4AAYQuQAnAAH0uAAc0DAxEzMHMz4BMzIeAhc%2BATMyFhUUBgcDIxM%2BATU0IyIGBwMjEz4BNTQjIgYHAyN%2FPwcEJlQmHSgaDgMvVyY9NgQEPk09BARHFUgsRUw8BARGFkgrRUwB5kkkMQ8ZIxQtMkA5ER4U%2FsoBLBQYDUsqLv6oASwUGA1LKi7%2BqAAAAQAfAAAB2AHyABoARAC4AABFWLgABi8buQAGAAg%2BWbgAAEVYuAAALxu5AAAACD5ZuAAARVi4ABovG7kAGgAEPlm4AA7QuAAGELkAFQAB9DAxEzMHMz4BMzIWFRQGBwMjEz4BNTQmIyIGBwMjfz8HBCpSLj41AwU%2BTDwEBCImHUcuRUwB5kkkMUA5ER4U%2FsoBLBQYDSUmKi7%2BqAAAAgAn%2F%2FQB2wHyAA8AHwA5ALgAAEVYuAAILxu5AAgACD5ZuAAARVi4AAAvG7kAAAAEPlm4AAgQuQAQAAH0uAAAELkAGAAB9DAxFyImNTQ%2BAjMyFhUUDgITIg4CFRQWMzI%2BAjU0JtRPXixKXjJPXy1JXx8hQDIeNTMiPzIeNQxoW0V0Uy9oW0V0Uy8BvydDWjNCRidCWjNCRwAC%2F%2Fb%2FMwHwAfIAFQAkAFIAuAAARVi4AAMvG7kAAwAIPlm4AABFWLgAES8buQARAAQ%2BWbgAAEVYuAACLxu5AAIABj5ZuAADELgACdC4AAkvuQAWAAH0uAARELkAHQAB9DAxFwcjEzMHMz4BMzIWFRQOAiMiJicjEyIGDwEeATMyPgI1NCZhH0yKPwYDJVUuQEwsSV8yJjwTAtUiUSMuFDIdJEQzHy8unwKzQB8tW1VGelo0Jx8BeCom6CYgK0hdMz49AAAAAgAn%2FzMB%2BAHyABUAJABWALgAAEVYuAAMLxu5AAwACD5ZuAAARVi4ABQvG7kAFAAGPlm4AABFWLgABC8buQAEAAQ%2BWbgADBC4ABHQuAARL7gABBC5ABYAAfS4AAwQuQAdAAH0MDElIw4BIyImNTQ%2BAjMyFhczNzMDIzcnMjY%2FAS4BIyIOAhUUFgFgAiRZLkBMLEpeMyc9EQQTPopNIXMiUiUsFTIcJEQ0HzBJJTBaVkZ6WjQoIT39TZ9iLTDZJiIrSF0yPz0AAAABAB8AAAF8AfIAEAA1ALgAAEVYuAAALxu5AAAACD5ZuAAARVi4ABAvG7kAEAAEPlm4AAAQuAAG0LgABi%2B4AAvcMDETMwczPgEzMhcHJiMiBgcDI38%2FCwQdTS0ZFRsQGiRMHz1MAeZdLTwJRAg%2BPP7NAAAAAAH%2F%2FP%2F0AX4B8gAzAEkAuAAARVi4ABUvG7kAFQAIPlm4AABFWLgALi8buQAuAAQ%2BWbkAAwAB9LoADQAuABUREjm4ABUQuQAcAAH0ugAkABUALhESOTAxNx4BMzI%2BAjU0LgInLgE1ND4CMzIWFwcuASMiBhUUHgIXHgMVFA4CIyIuAicsF0AmFSUdEAkUIxk5NhstPSItRxssFDAhJzUOGB8RISsbCxsxQycYMS0lDHYgJw0WHRENFhUWDh88KiA2JhUkHSsUHC0fDxgUEgkSISEiFCI4JxUOGSITAAABADz%2F9AFYAmwAHgBFALgAAEVYuAAGLxu5AAYACD5ZuAAARVi4ABYvG7kAFgAEPlm4AAYQuQAJAAH0uAAA0LgABhC4AAPQuAAWELkADwAB9DAxEyM%2FAjMHMwcjAwYVFBYzMjY3Fw4BIyIuAjU0NjeDRwtMJEEbewx9OQMbIw4aCxERLh0gLBwMAwIBqDkFhoY%2B%2FuoSEh4eCgU3CA4RHScXDxkOAAEAOP%2F0Ae8B5gAaAFEAuAAARVi4AA0vG7kADQAIPlm4AABFWLgAGS8buQAZAAg%2BWbgAAEVYuAAGLxu5AAYABD5ZuAAARVi4AAEvG7kAAQAEPlm4AAYQuQAVAAH0MDEhIzcjDgEjIiY1NDY3EzMDDgEVFBYzMjY3EzMBjj8IBChTLT41AwU%2BTT0EBCImHUYtRUxKIzNBOBEeFAE2%2FtQUGA0lJiouAVgAAAEAOwAAAeEB5gANAEAAuAAARVi4AAAvG7kAAAAIPlm4AABFWLgACi8buQAKAAg%2BWbgAAEVYuAANLxu5AA0ABD5ZugAGAAAADRESOTAxEzMTHgEXMz4BNxMzASM7TCQEBgQEESQTj03%2B%2FVwB5v7nI0sjJEkkARn%2BGgAAAAABAEYAAALHAeYAIQBbALgAAEVYuAAALxu5AAAACD5ZuAAARVi4ACEvG7kAIQAEPlm6AAUAAAAhERI5uAAAELgACtC4ACEQuAAX0LgAChC4ABTQugAPABcAFBESOboAHAAhAAoREjkwMRMzEx4BFzM%2BATcTMxMeARczPgE3EzMDIwMuAScjDgEHAyNGTBABAQEEDxsQgEsRAgECBA4aEH9I3V8OAQEBBA8dD3ZcAeb%2B4iNDIiJDIwEe%2FuIjQyIiQyMBHv4aAQojSCQkSCP%2B9gAAAf%2FUAAAB0gHmABkARQC4AABFWLgAAS8buQABAAg%2BWbgAAEVYuAAZLxu5ABkABD5ZuAAP0LgAARC4AAvQugAHAA8ACxESOboAFAABABkREjkwMRMnMxceARczPgE%2FATMHFyMnLgEnIw4BDwEjrltOKggNCAQPIA9VU8hjTywIEQoEECITXlQBAuRsFicVFCkVbPXxchYtFxcrF3MAAf%2FC%2Fy8B4wHmABwAPQC4AABFWLgABy8buQAHAAg%2BWbgAAEVYuAAYLxu5ABgABj5ZuQACAAH0ugAMABgABxESObgABxC4ABHQMDEHFjMyNj8BAzMTHgEXMz4BNxMzAQ4DIyImJzclEhIlQRkSU0wmBQgDBBElEoxM%2FuITKjE6IwsfDhmKCTwzIwHn%2Fu8hTSMjSyMBEf3xJD0tGgYIOQAAAAH%2F9gAAAa4B5gAJAEUAuAAARVi4AAMvG7kAAwAIPlm4AABFWLgACC8buQAIAAQ%2BWbkABgAB9LgAANC4AAAvuAADELkAAQAB9LgABdC4AAUvMDEnASM3IQcBMwchAgFD3Q0BPQj%2Bvf4M%2FqEsAXw%2BLf6FPgD%2F%2F%2F%2FLAAAB1QMwAiYABAAAAAcA4QDdAAD%2F%2F%2F%2FLAAAB6AMwAiYABAAAAAcA4wDdAAD%2F%2F%2F%2FLAAAB2AMwAiYABAAAAAcA5QDdAAD%2F%2F%2F%2FLAAAB9gMwAiYABAAAAAcA5wDdAAD%2F%2F%2F%2FLAAAB4wMqAiYABAAAAAcA6gDdAAD%2F%2F%2F%2FLAAAB1QNrAiYABAAAAAcA7ADdAAAAAv%2FfAAADPAKQAAYAFgBoALgAAEVYuAAULxu5ABQAED5ZuAAARVi4AA4vG7kADgAEPlm4AABFWLgAEi8buQASAAQ%2BWbsABgABABAABCu7AAkAAQAKAAQruAAUELkABwAB9LoAAQAUAAcREjm4AA4QuQAMAAH0MDEBIw4BDwEzEwczByMHIQchNyMHIwEhBwHRAyZJJlSokCrlDeQzARoN%2FpknxoNZAcsBkg4CVThqN3wBT9VC9kLCwgKQQf%2F%2FADn%2FKwItApwCJgAGAAAABwDuARkAAP%2F%2FACMAAAIQAzACJgAIAAAABwDhAOgAAP%2F%2FACMAAAIQAzACJgAIAAAABwDjAOgAAP%2F%2FACMAAAIQAzACJgAIAAAABwDlAOgAAP%2F%2FACMAAAIQAyoCJgAIAAAABwDqAOgAAP%2F%2FACMAAAD9AzACJgAMAAAABgDhUwAAAP%2F%2FACMAAAFeAzACJgAMAAAABgDjUwAAAP%2F%2FACMAAAFOAzACJgAMAAAABgDlUwAAAP%2F%2FACMAAAFZAyoCJgAMAAAABgDqUwAAAP%2F%2FACMAAAJmAzACJgARAAAABwDnAREAAP%2F%2FADz%2F9AJeAzACJgASAAAABwDhARgAAP%2F%2FADz%2F9AJeAzACJgASAAAABwDjARgAAP%2F%2FADz%2F9AJeAzACJgASAAAABwDlARgAAP%2F%2FADz%2F9AJeAzACJgASAAAABwDnARgAAP%2F%2FADz%2F9AJeAyoCJgASAAAABwDqARgAAAAD%2F%2F3%2F4gKhAq8ACgAVAC8ASQC4AABFWLgAKi8buQAqABA%2BWbgAAEVYuAAdLxu5AB0ABD5ZuQADAAH0ugAKAB0AKhESObgAKhC5AA4AAfS6ABUAHQAqERI5MDE3HgEzMj4CNTQvAS4BIyIOAhUUFwEWFRQOAiMiJicHJzcmNTQ%2BAjMyFhc3F64TOSk1Vz4iCxUTOyo1Vz4iDAGpHi9UdkY2Ux1UKF8gL1R1RzhUHVkkdR0hPWB2OTQsNCAiPGB2OjkrAXtBWUuSc0YlI1ojZUJbS5FzRiclXyMAAAAAAgA8AAADSQKQABIAHQBvALgAAEVYuAAFLxu5AAUAED5ZuAAARVi4AA8vG7kADwAEPlm7AAoAAQALAAQruAAFELkABwAB9LgADxC5AA0AAfS4AAcQuAAT0LgAEy%2B4AA0QuAAb0LgAGy%2B4ABzQuAAcL7gAExC4AB3QuAAdLzAxEzQ%2BAjMhByEHMwcjByEHISImASIOAhUUFjsBEzwwXIRTAaoO%2Fvcr3w7dMwEUDv6EiY0BY0BmSCZmZCdqAQBak2k6QdVC9kKHAcoxV3tJXmcCEQAAAP%2F%2FAE%2F%2F9AJmAzACJgAYAAAABwDhAQ4AAP%2F%2FAE%2F%2F9AJmAzACJgAYAAAABwDjAQ4AAP%2F%2FAE%2F%2F9AJmAzACJgAYAAAABwDlAQ4AAP%2F%2FAE%2F%2F9AJmAyoCJgAYAAAABwDqAQ4AAP%2F%2FAFMAAAIeAzACJgAcAAAABwDjALgAAAACAC8AAAJIApAADgAdAFcAuAAARVi4AA8vG7kADwAQPlm4AABFWLgAFy8buQAXAAQ%2BWbsACwABAAwABCu4ABcQuQAAAAH0uAAPELkACAAB9LgADBC4ABnQuAALELgAG9C4ABsvMDE3Mj4CNTQmKwEHMwcjAxMyFhUUDgIrARMjPwET5UBmSCZmZDYtlgqVNKOJjTFbhFOwQUcJRjpAMVd6SV5o4Sz%2B%2FAJQh3lZlGk6AUQpAwEgAAAAAgAjAAACFwKUABAAGQA9ALgAAEVYuAAALxu5AAAAED5ZuAAARVi4AA8vG7kADwAEPlm7ABEAAQANAAQruAAAELgAF9y5AAMAAfQwMRMzBzMyHgIVFA4CKwEHIzcyNjU0JisBA6ZOF3MtSTQdK0xpP2oeTddnaUpHaTQClHMSJz0qPFg5HJjXUU45M%2F71AAD%2F%2FwAn%2F%2FQB%2BALIAiYAHgAAAAcA4ADVAAD%2F%2FwAn%2F%2FQB%2BALIAiYAHgAAAAcA4gDVAAD%2F%2FwAn%2F%2FQB%2BALIAiYAHgAAAAcA5ADVAAD%2F%2FwAn%2F%2FQB%2BAKqAiYAHgAAAAcA5gDVAAD%2F%2FwAn%2F%2FQB%2BAKsAiYAHgAAAAcA6QDVAAD%2F%2FwAn%2F%2FQB%2BALUAiYAHgAAAAcA6wDVAAEAAwAg%2F%2FQC2AHyADcARQBRAJMAuAAARVi4ABIvG7kAEgAIPlm4AABFWLgAGC8buQAYAAg%2BWbgAAEVYuAAtLxu5AC0ABD5ZuAAARVi4ADMvG7kAMwAEPlm7ADgAAQAgAAQruwAFAAEARgAEK7gAEhC5AAsAAfS6ABUALQASERI5uAAtELkAJgAB9LoAMAAtABIREjm4AAsQuABA0LgAJhC4AEzQMDE3ND4CNz4BNTQmIyIGByc%2BATMyFhc%2BATMyHgIVFAYHIQYeAjMyNjcXDgEjIiYnDgEjIi4CJT4BNTQuAiMiDgIPAQ4BFRQWMzI2NyY2IC9UdUYDAictIEUjFSZaLTJBCCJXLik5JBENBf7RBgwgMSAdORceHU4vNVMRMGM2Gi0iFAJxAgMKFiQaFy8pIQlLbXwsIh9QKgQBajRILhcCDhMLLS4YFDgVHS8wLTIbL0ElHTQOKEIuGhkRMxUfNyktMw8eLMoOFg4VJx4SFio6JB0DQD0jJiosIDMAAAD%2F%2FwAl%2FysBsgHyAiYAIAAAAAcA7QDOAAD%2F%2FwAl%2F%2FQBvwLIAiYAIgAAAAcA4ADGAAD%2F%2FwAl%2F%2FQBvwLIAiYAIgAAAAcA4gDGAAD%2F%2FwAl%2F%2FQBvwLIAiYAIgAAAAcA5ADGAAD%2F%2FwAl%2F%2FQBxAKsAiYAIgAAAAcA6QDGAAD%2F%2FwAfAAAA8gLIAiYAZwAAAAYA4EYAAAD%2F%2FwAfAAABOwLIAiYAZwAAAAYA4kYAAAD%2F%2FwAfAAABMQLIAiYAZwAAAAYA5EYAAAD%2F%2FwAfAAABRAKsAiYAZwAAAAYA6UYAAAAAAQAfAAAAzQHmAAMAJQC4AABFWLgAAC8buQAAAAg%2BWbgAAEVYuAACLxu5AAIABD5ZMDETMwMjgE1iTAHm%2FhoA%2F%2F8AHwAAAfUCqgImACsAAAAHAOYA5QAA%2F%2F8AJ%2F%2F0AdsCyAImACwAAAAHAOAA2AAA%2F%2F8AJ%2F%2F0AdsCyAImACwAAAAHAOIA2AAA%2F%2F8AJ%2F%2F0AdsCyAImACwAAAAHAOQA2AAA%2F%2F8AJ%2F%2F0AegCqgImACwAAAAHAOYA2AAA%2F%2F8AJ%2F%2F0AdsCrAImACwAAAAHAOkA2AAAAAMAAP%2FpAgcB%2FAAJABMAKwBJALgAAEVYuAAnLxu5ACcACD5ZuAAARVi4ABsvG7kAGwAEPlm5AAIAAfS6AAkAGwAnERI5uAAnELkADAAB9LoAEwAbACcREjkwMTcWMzI%2BAjU0LwEmIyIOAhUUFwEWFRQOAiMiJwcnNyY1ND4CMzIXNxeJGzYlQzMdBhIcNyVDMh0HAU0XLUlfMk0vOx1AGSxKXjJQLz0eWCYqRVkvIBgpKipFWi8kGAEbLj5FdFQuMj0cQi9BRXRTLzU%2FHAAAAAADACf%2F9AMLAfIAKgA6AEcAjQC4AABFWLgACC8buQAIAAg%2BWbgAAEVYuAAQLxu5ABAACD5ZuAAARVi4AAAvG7kAAAAEPlm4AABFWLgAJS8buQAlAAQ%2BWbsAOwABABgABCu6AAsAAAAIERI5uAAlELkAHgAB9LoAKAAAAAgREjm4AAgQuQArAAH0uAAeELgAM9C4ACsQuABC0LgAQi8wMRciJjU0PgIzMhYXPgMzMh4CFRQGByEGHgIzMjY3Fw4BIyImJw4BEyIOAhUUFjMyPgI1NCYFNjU0LgIjIg4CB9BNXCxIXTE9Sw4QKjAyGSk6JBANBf7UBg8hLxwdORcdHVAwOlAOImoXID8xHjUzIT4xHjUBbwYKFiQaGC8oHwkMaFtFdFMvQT0eLyARGy9BJR00Di9DLBQZETMVH0NCP0YBvydDWjNCRidCWjNCR5wYGhUnHhIWKjokAAEAH%2F%2F0AfkC1AA%2FAEYAuAAARVi4AAUvG7kABQASPlm4AABFWLgAPi8buQA%2BAAQ%2BWbgAAEVYuAAdLxu5AB0ABD5ZuQAkAAH0uAAFELkAOAAB9DAxEz4DMzIeAhUUDgQVFB4EFRQOAiMiJic3HgEzMjY1NC4ENTQ%2BBDU0JiMiDgIHAyOICSQ1RioeNCcXFB0iHRQWICcgFhktPCQlSB8jFzMfJzcWIiYiFhQdIx0UIicaKyIYB2ZMAg0pSDYgECEyIR8vJh8eIBQUHhwdIy0fITkqGRkZMxMWMSYYJB4cICYaGikiICMoGyIsGSo4IP4F%2F%2F8AOP%2F0Ae8CyAImADIAAAAHAOAA0QAA%2F%2F8AOP%2F0Ae8CyAImADIAAAAHAOIA0QAA%2F%2F8AOP%2F0Ae8CyAImADIAAAAHAOQA0QAA%2F%2F8AOP%2F0Ae8CrAImADIAAAAHAOkA0QAA%2F%2F%2F%2Fwv8vAeMCyAImADYAAAAHAOIAogAA%2F%2F%2F%2Fwv8vAeMCrAImADYAAAAHAOkAogAAAAIAK%2F%2F0AhIC2gARADUAKAC4AABFWLgAGi8buQAaAAQ%2BWbsAJAABAAgABCu4ABoQuQAAAAH0MDE3Mj4CNy4BIyIOAhUUHgITHgEVFA4CIyIuAjU0PgIzMhYXLgEnByc3Jic3HgEXNxfhJDwsGwMUNycnPisYDxwqxyImIkFePCU%2FLxogPFU2JD8WBB4bkxCHJTokIz0akRA0KUZdNR4vJDpKJxouIxQCHzJ6TEeCYzscMUMoNGNNLyYhPF4nPSk4KiUuFDIdPCkAAv%2F2%2FzMB8ALIABYAJQBvALgAAEVYuAAILxu5AAgAEj5ZuAAARVi4AA8vG7kADwAIPlm4AABFWLgABi8buQAGAAY%2BWbgAAEVYuAAALxu5AAAABD5ZugAEAAYACBESOboADAAGAAgREjm4AA8QuQAXAAH0uAAAELkAHgAB9DAxFyImJyMPASMTMw8BMz4BMzIWFRQOAhMiBg8BHgEzMj4CNTQm6iY7FAISH0y3TScWAiRULUBMLElfLCJRIy4UMh0kRDMfLwwnH2ifA5W%2BYB0rW1VGelo0Ab4qJekmICtIXTM%2BPQAAAQArAAACnALUACsAqAC4AABFWLgAAy8buQADABI%2BWbgAAEVYuAAfLxu5AB8AEj5ZuAAARVi4AA4vG7kADgAIPlm4AABFWLgAGi8buQAaAAg%2BWbgAAEVYuAAqLxu5ACoACD5ZuAAARVi4ABIvG7kAEgAEPlm4AABFWLgAFi8buQAWAAQ%2BWbgAAxC5AAoAAfS4AA4QuQAQAAH0uAAU0LgAFdC4ABjQuAAZ0LgAHxC5ACYAAfQwMQE%2BATMyFhcHLgEjIgYPATMHIwMjEyMDIxMjPwI%2BATMyFhcHLgEjIgYPATMBqw9OPRopFBwKGhEhKggRYw1iVU1VwVZMVT8LQQ4QUT8dLBQbDBwUIy4ID8ICN0pTDQo4BwoyK1M%2B%2FlgBqP5YAag5BUdKUw0KOAcKMitJAAEAK%2F%2F0AkUC1AAyAJsAuAAARVi4ACAvG7kAIAASPlm4AABFWLgAGy8buQAbAAg%2BWbgAAEVYuAArLxu5ACsACD5ZuAAARVi4AC8vG7kALwAIPlm4AABFWLgAFy8buQAXAAQ%2BWbgAAEVYuAAMLxu5AAwABD5ZuQAFAAH0uAAvELkAFQAB9LgAFtC4ABnQuAAa0LgAIBC5ACcAAfS4ABoQuAAx0LgAMtAwMSUGFRQWMzI2NxcOASMiLgI1NDY3EyMDIxMjPwI%2BATMyFhcHLgEjIgYPATM3MwczByMBgwMbIw4aCxAQLh0gLBwMAgM5o1ZMVT8LQRAPTT4aKRMbCxoRISkIEackQRt7DH2SEhIeHgoFNwgOER0nFw8ZDgES%2FlgBqDkFUUpTDQo4BwoyK1OGhj4AAAAAAwAP%2F%2FQCRAKcAAsAGgBDAIwAuAAARVi4ADUvG7kANQAQPlm4AABFWLgAJi8buQAmAAQ%2BWbgAAEVYuAAhLxu5ACEABD5ZugBAACMAAyu4ACYQuQADAAH0ugAGACMAQBESOboACQAmADUREjm4AAkvuAAO3LgANRC5ABYAAfS6AB4AIwBAERI5ugAuAAkADhESOboAPQAJAA4REjkwMTcUFjMyNjcuAScOARMUFz4DNTQmIyIOAgUOAQcWFwcmJw4BIyImNTQ%2BAjcmNTQ%2BAjMyFhUUDgIHHgEXPgE3WzkuI0UgJ0IXL0CKCxwzJhcYGhUlGxABXx9MMDcvID0%2BKmA2S1ocLjwgEhwvPiM2NiA0QiIVQCYpPRqXLjgcGStnOCBIARgmLBEiJiwbFyEUJDGdQns0LBE%2BFDUiJ1NGKEE2KxQ6NypGMx09LiY%2BNS0VNWIoK2Q6AAIAKv%2F0Ac4CigATACUAOQC4AABFWLgACi8buQAKAA4%2BWbgAAEVYuAAALxu5AAAABD5ZuAAKELkAFAAB9LgAABC5AB4AAfQwMRciLgI1ND4CMzIeAhUUDgITIg4CFRQeAjMyPgI1NCbIJjsoFStIYDUlOycVKkhfMCdEMx0LFiIXJ0QzHSwMITpPL1miekgiOlEuWqB6RwJYRm%2BKQyE4KRdFb4lEQ1cAAAEAGgAAAYACfgALAEMAuAAARVi4AAYvG7kABgAOPlm4AABFWLgACy8buQALAAQ%2BWbkAAQAB9LgABhC4AALcuAAGELgABNy4AAEQuAAI0DAxNzMTIzc2NzMDMwchJ4tgcQpVNzt0ggz%2BpkAB3jIMIv3CQAAAAf%2F2AAABxAKKABwAOQC4AABFWLgADy8buQAPAA4%2BWbgAAEVYuAAbLxu5ABsABD5ZuQAZAAH0uAAA0LgADxC5AAgAAfQwMSc%2BAzU0JiMiBgcnPgEzMh4CFRQOAgchByECYI5eLzM1IEEiJyxXMCk%2FLBYqUn1SARQM%2FnUuUXpkVy8sPCEfMCYpFyo6IjVdYm9IQgAAAAH%2F9%2F%2F0AckCigAuAFMAuAAARVi4ABwvG7kAHAAOPlm4AABFWLgAKy8buQArAAQ%2BWbkAAwAB9LoADQAcACsREjm4AA0vuQAOAAH0uAAcELkAFgAB9LoAIgANAA4REjkwMTceATMyPgI1NC4CIzcyPgI1NCYjIgYHJzYzMhYVFAYHFR4BFRQOAiMiJicqF0kyIjkpFxQsRjMMO1AxFTIzHUMdJ1NdUVZKSzU7Iz5WMkJkHooiNBQjMB0ZKyAROhgmLxcqNhwXMz9QQj1cFQQRSDIuSTQcQS0AAAIACAAAAb8CfgAKABQAUwC4AABFWLgABS8buQAFAA4%2BWbgAAEVYuAAALxu5AAAABD5ZuwALAAEAAQAEK7gACxC4ABTQuAAD0LgACxC4AAbQuAABELgACdC4AAUQuAAP3DAxMzchNwEzAzMHIwcnNz4BNyMOAQ8B9CT%2B8AkBVlRQVA1TIxglBhEIBBQnErGwNAGa%2FnA%2BsO69HUEhHDUX1AAB%2F%2Fz%2F9AHXAn4AJgBJALgAAEVYuAASLxu5ABIADj5ZuAAARVi4ACMvG7kAIwAEPlm5AAUAAfS6ABkAEgAjERI5uAAZL7kADQAB9LgAEhC5ABQAAfQwMTceAzMyPgI1NCYjIgYHJxMhByMHPgEzMh4CFRQOAiMiJicuCxoiLBwfOSwaPzQfLCAhUAErDek0ESoZJD0tGShCVy9CXR2JER4YDhgtPic%2BPBARGgEtQrwIDBUqPyo5XEAjPy0AAAIAM%2F%2F0AegCigASADMAQwC4AABFWLgAMC8buQAwAA4%2BWbgAAEVYuAAmLxu5ACYABD5ZuwAeAAEAAAAEK7gAJhC5AAsAAfS4ADAQuQAWAAH0MDEBIg4CBwYUFRQWMzI%2BAjU0JjcuASMiDgIHPgEzMhYVFA4CIyIuAjU0PgIzMhYXAQUMHyQnEwE6MxswJBQzfBErHyZEOSkKIVIhR1QfOEssKUEuGS1QbUA0QxQBSQgSHxgLFwxFVRwtOh43QcccHidHZT8mJFhOL1RAJSA5UC9hpHdCMSAAAAEAawAAAgMCfgAPADMAuAAARVi4AAcvG7kABwAOPlm4AABFWLgAAC8buQAAAAQ%2BWbgABxC5AAUAAfS4AAnQMDEzPgM3ITchBw4DByN4FTRFWj3%2Bzg4BigpKZUUsEVBam4x%2FPEIyRoyQmFIAAAMAI%2F%2F0AdcCigARACEARwBbALgAAEVYuAAwLxu5ADAADj5ZuAAARVi4AEMvG7kAQwAEPlm6AAAAMABDERI5uAAAL7gAQxC5AAgAAfS4AAAQuAAn3LgAEtC4ADAQuQAaAAH0uAASELgAOdwwMRMOARUUHgIzMj4CNTQuAjc%2BAzU0JiMiDgIVFBYHND4CNzUuATU0PgIzMh4CFRQGBxUeAxUUDgIjIi4C3DNAEyEsGRoxJxcXKDQ8EiMbEDcpFigfEjrcGSk2HRwdHjRDJh45LBpENg4fGRAjOk0rI0M0IQFAHEo4HCseEBEfLx4cKiMeKAweJSsZMDQPHSoaMjzYJDwvJA0EHDsnKUAtGBIlOCVAVh4EChwkLRkrRTAaFCk%2FAAIAEv%2F0AccCigASADMAQwC4AABFWLgAJi8buQAmAA4%2BWbgAAEVYuAAwLxu5ADAABD5ZuwAAAAEAHgAEK7gAJhC5AAsAAfS4ADAQuQAWAAH0MDETMj4CNzY0NTQmIyIOAhUUFgceATMyPgI3DgEjIiY1ND4CMzIeAhUUDgIjIiYn9QwfJCcTATozGzAjFDN9ESsgJUQ4KQohUSBIVB84SywpQi4YLVBtQDRDFAE1CBIfGAsXDEVVHC06HjhAxxweJ0dkPiUjWE4vVEAlIDlQL2Kjd0IxIAAAAAEAF%2F%2F0AIgAbAALABoAuAAARVi4AAAvG7kAAAAEPlm5AAYAAfQwMRciJjU0NjMyFhUUBkYWGSYdFhglDBwWGiwdFhorAAAAAAH%2F4f9cAJAAbAAQAB4AuAAARVi4AAMvG7kAAwAEPlm5AAoAAfS4ABDcMDEHPgE3IyImNTQ2MzIWFRQGBx8vOAgCFx0jHRocWkp2EjslGRcZJyQeSm8VAP%2F%2FABf%2F9ADIAd0CJwCGAEABcQAGAIYAAP%2F%2F%2F%2BH%2FXADIAd0CJwCGAEABcQAGAIcAAAACACv%2F9AEFAp8ABQARABoAuAAARVi4AAYvG7kABgAEPlm5AAwAAfQwMRM3MwcDIwciJjU0NjMyFhUUBqkPTRNWNgsWGiYdFxckAkNcXP6B0BwWGiwdFhorAAAAAAIAFf9HAO4B8gAFABMAGgC4AABFWLgABi8buQAGAAg%2BWbkADgAB9DAxFwcjNxMzNzIWFRQOAiMiJjU0NnEPTRNWNgsWGQoSGA8WFyRdXFwBf9AcFg0ZFAwdFhorAAAAAAIAXv%2F0AaICqgALACcAKAC4AABFWLgAAC8buQAAAAQ%2BWbsAHQABABYABCu4AAAQuQAGAAH0MDEXIiY1NDYzMhYVFAYnPgU1NCYjIgYHJz4BMzIWFRQOBAeNFhkmHRYYJRkCICwyKhwuKB02FikdUS1GUh0sNC4hAwwcFhosHRYaK9UqQTUtLTEfKi0cFy4eJ0lBKT40LzI7JgAAAAL%2F%2FP89AUAB8wALACcAKAC4AABFWLgAAC8buQAAAAg%2BWbsAFgABAB0ABCu4AAAQuQAGAAH0MDEBMhYVFAYjIiY1NDYXDgUVFBYzMjY3Fw4BIyImNTQ%2BBDcBEBYaJh0XFyQaAx8sMiocLSgdNxYoHVAtRlIdKzQuIQQB8xwWGS0dFhor1SpANS0uMR8pLhwYLh8nSUIoPjQvMzomAAEAgAGqAPECnwAFAAsAugABAAQAAyswMRM3Mw8BI5cPSxMqNAJDXFyZAAD%2F%2FwCAAaoBlwKfACYAjgAAAAcAjgCmAAAAAQBuAbIBAgKzABIADQC7AAMAAQAKAAQrMDEBDgEHMzIWFRQGIyImNTQ%2BAjcBAi0xAQUVHB4YFx4UJDAcAo0XQh0XFRciJCAiOzAkDAAAAAABAG8BuwEEArwAEgANALsACgABAAMABCswMRM%2BATcjIiY1NDYzMhYVFA4CB28uMQEFFhweGRceFCQxHAHgF0McFxYXIiQgIzowJAz%2F%2FwBuAbIBqAKzACYAkAAAAAcAkACmAAD%2F%2FwBvAbsBqgK8ACYAkQAAAAcAkQCmAAD%2F%2F%2F%2F4%2F20AjQBuAgcAkf%2BJ%2FbIAAP%2F%2F%2F%2Fj%2FbQEyAG4AJwCR%2F4n9sgAHAJEALv2yAAAAAQAoAEMA6wGzAAYACwC6AAIABgADKzAxPwIXBxcHKAucHI5VI%2BE%2BlB2coRYAAAAAAQAXAEMA2gGzAAYACwC6AAYAAgADKzAxEw8BJzcnN9oLnByNVSQBFT6UHZyhFgD%2F%2FwAoAEMBigGzACYAlgAAAAcAlgCfAAD%2F%2FwAXAEMBeQGzACYAlwAAAAcAlwCfAAAAAQAjAN4BCgEZAAMADQC7AAEAAQACAAQrMDETMwcjL9sN2gEZOwAA%2F%2F8AJADeAQsBGQIGAJoBAAABACMA4QGrARcAAwANALsAAQABAAIABCswMRMhByEuAX0M%2FoQBFzYAAQAjAOEC3gEXAAMADQC7AAEAAQACAAQrMDETIQchLgKwC%2F1QARc2%2F%2F8ATwEMAMABhAIHAIYAOAEYAAAAAQApAJEBAgF%2FAA8ACwC6AAgAAAADKzAxNyImNTQ%2BAjMyFhUUDgKLKzcRHywcKjcRHyyROi8YMCUYOy4ZMCUXAAH%2F3P%2BEAbD%2FtgADAA0AuwAAAAEAAQAEKzAxBQchNwGwCv42C0oyMgABAEH%2FUAFXAtsAEgALALoACAAAAAMrMDEXLgE1ND4CNxcGAhUUHgIXB3oYIR88VjgtamwFCxALMrBAolNXnJKLRhmH%2FuCeI0tKRhwTAAAAAAH%2F1P9QAOoC2wARAAsAugAAAAgAAyswMRMeARUUDgIHJxIRNC4CJzexGCEfPFc3LdUFChALMgLbQKJSWJySi0YaAQ0BNyNMSkQdEwABAAj%2FaAFdAsQABwAXALsAAAABAAEABCu7AAQAAQAFAAQrMDEXByMTMwcjA7wLqaypB3GZay0DXC38%2FgAB%2F8%2F%2FaAEmAsQABwAXALsAAAABAAUABCu7AAQAAQABAAQrMDEXEyM3MwMjN0ibcAirrKsKawMCLfykLQABACD%2FaAFgAsQANQArALsAMQABADIABCu7ABkAAQAaAAQruwALAAEACgAEK7oAJQAKAAsREjkwMRc0PgI1NC4CIzcyPgI3PgE3PgM7AQcjIgYHDgEHDgEHFR4BFRQOAhUUFjsBByMiJi8RFREGDxwVCxkjFwwDCQsLBxYfLB4uChooIgoIDQkKJyMYFBAUEBcgGAosLylIHEpNRBYKFQ8KMg4XHA4wXDMnNB8NLS4wK1suMTYJBAgfFhpJTUYYGRgtJgAAAf%2FM%2F2gBDALEADUAKwC7ABsAAQAYAAQruwAyAAEAMQAEK7sACgABAAsABCu6ACUACwAKERI5MDETFA4CFRQeAjMHIg4CBw4BBw4DKwE3MzI2Nz4BNz4BNzUuATU0PgI1NCYrATczMhb9ERURBg8bFgsaIxcLAwkLCwgWHywdLgkaKCMJCA4ICyYjGRMQFBAWIBkKLDApAnQcS0xGFgoTDwoyDhccDjBdNCczHg0tLDErWi8yNgkECB8WGklMRhgaGC0nAAH%2FuP9gAaICxgADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDEBMwEjAWo4%2Fk03Asb8mgABAF%2F%2FBgCTAu4AAwALALoAAQACAAMrMDETMxEjXzQ0Au78GAABAFj%2FYAEBAsYAAwAYALgAAEVYuAAALxu5AAAAEj5ZuAAC3DAxEzMTI1g0dTYCxvyaAAAAAgBf%2FwYAkwLuAAMABwALALoAAQAFAAMrMDETMxEjFxEjEV80NDQ0Au7%2BM0z%2BMQHPAAAAAAEAfQGmAZ0CyQAOABQAuAAARVi4AAUvG7kABQASPlkwMRM3JzcXNxcHNxcHFwcnB5BFWBJjGSwIZwdnJig0UAHPWDEoIWoEaw4rH2EXWEwAAgAP%2F8QBwgKsAA8ARQAXALsALgABACcABCu7AEIAAQATAAQrMDElPgE1NC4CJw4BFRQeAhMuASMiBhUUHgQVFAYHFhUUDgIjIiYnNx4BMzI2NTQuBDU0NjcmNTQ%2BAjMyFhcBKiMlIzQ7GSEqJDU9hRU4IB8wIDE5MSA4Mg0YLDskLVcjKRpEJCYzIDE5MSA8MBAXKDchLU0dug0rKB0rJCIUDjAmHikiIAFnGCInIxgkISEpNiU6QhcaHSA3KBcoIzIcJSwjGiYgHic0JTZLFBsfITUlFSkgAAAAAAIASf%2BwAgsCkAADABAAJQC4AABFWLgAAC8buQAAABA%2BWbgAAEVYuAAOLxu5AA4AED5ZMDEBMwMjAyIuAjU0PgI7AQMBvk2TTActUDwjLkxjNTBXApD9IAEzFyxCK0BgPh%2F%2BUwADACT%2F9QKVAo0AHQAxAEUAPAC4AABFWLgAHi8buQAeAAQ%2BWbsAKAABADIABCu7ABQAAQAbAAQruwAFAAEADAAEK7gAHhC5ADwAAfQwMRM0PgIzMhYXBy4BIyIOAhUUFjMyNjcXDgEjIiYXIi4CNTQ%2BAjMyHgIVFA4CEyIOAhUUHgIzMj4CNTQuArQmPEokIy4RJQ4fFxgyKho1LRwtGRkfPyhBUXY6YUUmNF%2BGUTphRSc0YIYQRnRULh45UzRGdVQuHjpTARQ3Vz0hHhUiERIaL0EnNjcXECcXHE3VKUlmPUqLbEIpSWU9SoxsQgJwO2F7PzVYQCQ7YXs%2FNVhAJAAABABJAUMBswLGAA0AFQApADsASQC4AABFWLgAIC8buQAgABI%2BWbgAAEVYuAAOLxu5AA4ACj5ZuwA0AAEAFgAEK7oAAQATAAMruAAOELgACty4ACAQuQAqAAH0MDETMzIWFRQGBxcjJyMHIzcyNjU0KwEHFyIuAjU0PgIzMh4CFRQOAgMiDgIVFB4CMzI%2BAjU0JtJCHSIaFxwoFiIPJlEXGiEZDQchOywaHjVJKyE7LBseNkkJIjorGBEhMB4hOysZRQJrHhwXIghPRkZkFhIeRsIZLD4mKk49JRktPiUqTz0kAWAdMUEkHjImFR0xQiQ8TgAAAAIALf9lAwkChABGAFQAUAC4AABFWLgAIy8buQAjAA4%2BWbsAFAABABkABCu7AAAAAQAtAAQruwBKAAEANAAEK7sAPgABAFAABCu4ACMQuQAKAAH0ugBBAFAAPhESOTAxJTI%2BAjU0LgIjIg4CFRQeAjMyNxcGIyIuAjU0PgIzMh4CFRQOAiMiJicjDgEjIi4CNTQ%2BAjMyFzM3MwcGFicUFjMyPwEuASMiDgICRRgzKBodPl5ARIVpQSlFXTVLPBdQVEFwUjBJeZ1UR25MKCM7TCgjMAcDFzshFyofEx81RykvGgINMzILF%2BwnHS0tJA4cER4xJBRkHz1ZOTZeRCdAcZlZQ2dHJCUuKytRdkxnsIFJLE9tQElwTScpIx0mEiIzICxWQykzK9kvOWItLD2hGhMiND8AAgAYAAAB6wKKABsAHwClALgAAEVYuAAILxu5AAgADj5ZuAAARVi4AAwvG7kADAAOPlm4AABFWLgAFi8buQAWAAQ%2BWbgAAEVYuAAaLxu5ABoABD5ZuwADAAEAAAAEK7sABwABAAQABCu4AAcQuAAK0LgABxC4AA7QuAAEELgAENC4AAMQuAAS0LgAABC4ABTQuAAAELgAGNC4AAMQuAAc0LgABBC4AB3QugAfABYACBESOTAxNyM3MzcjNzM3MwczNzMHMwcjBzMHIwcjNyMHIwE3IwdnTw1SLlAOVDszOn07MzpPDlIuUQ5VQDRBfkA0AQQufy7NN5Y3ubm5uTeWN83NzQEElpb%2F%2FwCyAbgBVwM%2BAgcAtwBWAbgAAP%2F%2FAFcBuAGCA0oCBwC4AFYBuAAA%2F%2F8AVgGsAYADSgIHALkAVgG4AAD%2F%2FwBfAbgBhgM%2BAgcAugBWAbgAAAACAA%2F%2F9AFAAZMAEwAjACgAuAAARVi4AAAvG7kAAAAEPlm7AAoAAQAUAAQruAAAELkAHAAB9DAxFyIuAjU0PgIzMh4CFRQOAhMiDgIVFBYzMj4CNTQmih0uHxEYL0MsHS4fERgvRAscLB4QICUcLB4QIAwXKTchLl5MLxcpNyEvXksvAW0mPUokLjwmPEokLj0AAAAAAQBcAAABAQGGAAgADQC7AAUAAQAAAAQrMDETIzc%2BATczAyO2WggnLxgvTTwBOCcGERD%2BegAAAAABAAEAAAEsAZIAGgAoALgAAEVYuAAZLxu5ABkABD5ZuwAPAAEACAAEK7gAGRC5ABcAAfQwMTc%2BAzU0JiMiBgcnPgEzMhYVFA4CBzMHIQg9WDgaICAVKRMjHDsmNj4ZMUkwowr%2B%2FyYrRTo1Gx0hGxQkGyQ4MR86Oj8kMwAAAQAA%2F%2FQBKgGSACkAPAC4AABFWLgAJi8buQAmAAQ%2BWbsAGAABABIABCu7AAoAAQAJAAQruAAmELkAAwAB9LoAHgAJAAoREjkwMTceATMyNjU0JiM3Mj4CNTQmIyIHJz4BMzIWFRQGBx4BFRQOAiMiJicpDishIzIyOQkiLhwMIB0pKhsdOyExPS8sIiIXJjQcMUQRYRoiJSMdKikOFhwOGR4hKRUTMi0lOg4MMhodLSAQMCAAAgAJAAABMAGGAAUAEAAnALsADQABAAMABCu7ABAAAQAGAAQruAAQELgAANC4AAYQuAAK0DAxPwIjDwEXIwcjNyM%2FATMHM8IPGgRDVtk4FTYVsAfWQTA5lUxsVGQramoh%2B%2FEA%2F%2F8APAECAXYCVAIGAL0AAP%2F%2FADsBAgFkAlQCBgC%2BAAAAAgA8AQIBdgJUABQAIwA5ALsAFQABABIABCu7AAUAAQAcAAQruAAcELgACNC4AAgvugAJABwABRESObgAFRC4AA7QuAAOLzAxEzQ%2BAjMyFhczNzMDIzcjDgEjIiYXMjY%2FAS4BIyIOAhUUFjweMT8iFygLBA4uQC8GBBc6HiszcRc2FxoNHxEXKyEVHwF5LlA7IhcYJ%2F6%2BMBoePQwhHYUaFBstPCAoJQAAAgA7AQIBZAJUAA8AHwAXALsAGAABAAAABCu7AAgAAQAQAAQrMDETIiY1ND4CMzIWFRQOAhMiDgIVFBYzMj4CNTQmsTZAHzJAITZBHzJBFxgqIBMiIBcqIBMhAQJEPi9NNh5EPTBNNh4BIxksOSApLBkrOiAoLQAAAgBlAbABUgKtAA8AHwAXALsAGAABAAAABCu7AAgAAQAQAAQrMDETIiY1ND4CMzIWFRQOAiciDgIVFBYzMj4CNTQm0C88FSMwGy48FSMvBxIeFQshHhIdFQwhAbA9Mh0zJxc9Mh0zJxfSERsjEh0oEBsjEh0pAAAAAgALAHEB7wIlACEAMQAoALgAAEVYuAAULxu5ABQACj5ZuwAqAAEAAwAEK7gAFBC5ACIAAfQwMSUOASMiJwcnNy4BNTQ2Nyc3Fz4BMzIWFzcXBxYVFAYHFwcDIg4CFRQWMzI%2BAjU0JgFRGj0gQCRII0cHCCAcLywwGjofHzITSSNJEB8aNStwGjIoGC0qGjIoGC21FBYnPyo%2BECUXLVAePSU%2FEhQUET8qPyIqLU0dRCQBYRksPCIzNxkrPCMzNwAAAQAR%2F5IB0ALvADEAZQC4AABFWLgAKy8buQArAA4%2BWbgAAEVYuAAVLxu5ABUABD5ZuAArELkAAwAB9LoABgArABUREjm4ABUQuAAS0LgAEi%2B4ABUQuQAcAAH0ugAfABUAKxESObgAKxC4AC7QuAAuLzAxAS4BIyIGFRQeBBUUDgIPASM3LgEnNx4BMzI2NTQuBDU0PgI%2FATMHHgEXAZ4UOiMwPiAvNy8gGjFFKhQ4FC1KGjEXRi03RiAvOC8gGi9AJxQ4FSM9FgIJHSg5LR8tJycwPysnRDMfA2JmCTIfMB4wQDQkNSsnLTgmJT4uHAJiZwksHQAAAAABAAQAAAHrAo0AJgBCALgAAEVYuAAeLxu5AB4ABD5ZuwAIAAEADwAEK7sAFgABABcABCu4ABYQuAAA0LgAHhC5ABwAAfS4ABcQuAAk0DAxEy4BNTQ%2BAjMyFhcHLgEjIgYVFBYXMwcjDgEPASEHITc%2BAT0BIzeZAgQfNkssM0QVNBEtHjdJBAKbDIwBKi0BAQMM%2FoIJSEhgCwFWGC8UM1E5HzEiKRsiVkwUKxc7RWUrBEIuI3pICDYAAQAcAAACDwJ%2BAB0AigC4AABFWLgAAC8buQAAAA4%2BWbgAAEVYuAAJLxu5AAkADj5ZuAAARVi4ABMvG7kAEwAEPlm7ABAAAQARAAQruwAMAAEADQAEK7oABQATAAAREjm4ABMQuAAP3LgAERC4ABXQuAAPELgAF9C4ABjQuAANELgAGdC4AAwQuAAb0LoAHAATAAAREjkwMRMXHgEXMz4BPwEzAzMHIwczByMHIzcjNzM3IzczA7YpBw8IAxcpFmxN2IgKmw2cCpwgTCGcCZwMmwmIWwJ%2BsCFDJCVDILD%2BvStFKqGhKkUrAUMAAAABABT%2F9AIIAo0ALwCBALgAAEVYuAAsLxu5ACwADj5ZuAAARVi4ABsvG7kAGwAEPlm4ACwQuQADAAH0ugAKACwAGxESObgACi%2B5AAkAAfS6AA8AGwAsERI5uAAPL7kAEAAB9LgAGxC5ABQAAfS4ABAQuAAf0LgADxC4ACDQuAAKELgAJdC4AAkQuAAm0DAxAS4BIyIOAgczByMOAQczByMUFjMyNjcXDgEjIiY1Iz8BPgE3Iz8BPgMzMhYXAc4PKiMfOTAnDfoJ%2FAQEAtIKykM7IzsZJiVUMlhlPgo2AgQEMwk1EThHUy03QxUCCB8nHDNGKiwRIxItW2EhGC8jJ4F7KAQTIxEoAzleQyU4KAAAAAIATv%2FyAd4CngAIACUAPAC4AABFWLgAFS8buQAVAAQ%2BWbsADQABABQABCu4ABUQuAAg3LoAAAAVACAREjm4ABQQuAAX0LgAFy8wMQEOAxUUFhcTLgEnAz4BNxcOAQ8BIzcuATU0PgI%2FATMHHgEXATIeNyoZKSrCESMYRSA2FxsgRi4VMhVETipFViwUMRQlNRQB9wUiNUYpOUoLASoUGAT%2BowIYETQUIANpagpkVT5lSCoEZmcFJhcAAAAAAf8t%2F%2FQBRQKgAAMAGAC4AABFWLgAAC8buQAAAAQ%2BWbgAAdwwMQcBMwHTAeQ0%2FhwMAqz9VAAAAP%2F%2F%2Fy3%2F9AFFAqACBgDGAAD%2F%2FwA9%2F%2FQC8AKhACcAtgAuAQ4AJwDGAVkAAAAHALYBsAAAAAD%2F%2FwB3%2F%2FQCuAKgACcAtwAbAQ4AJwDGAUwAAAAHALoBiAAAAAD%2F%2FwBj%2F%2FQCzwKgACcAtwAXAQ4AJwDGATYAAAAHALgBowAAAAD%2F%2FwAu%2F%2FQCygKgACcAuQAuAQ4AJwDGAW4AAAAHALoBmgAAAAAAAQAwAGcBygIqAAsAHQC7AAMAAQAAAAQruAADELgABtC4AAAQuAAI0DAxEyM1MzUzFTMVIxUj3q6vPK%2BwPAEuOcPDOccAAAAAAQAwAS4BygFnAAMADQC7AAEAAQAAAAQrMDETNSEVMAGaAS45OQAAAAEAQQCHAboCDgALACUAuAAARVi4AAQvG7kABAAKPlm4AABFWLgABi8buQAGAAo%2BWTAxNyc3JzcXNxcHFwcnaSiUlCiUlCmVlSmUhymbmyibmyibmymcAAADADAAYQHKAjIACwAXABsAIQC7ABIAAQAMAAQruwAGAAEAAAAEK7sAGQABABgABCswMRMiJjU0NjMyFhUUBgMiJjU0NjMyFhUUBic1IRX9Fh0dFhYdHRYWHR0WFh0d4wGaAcweFhUdHRUWHv6VHRYVHR0VFh3NOTkAAAD%2F%2FwAwAMQBygHRAiYAzQBqAAYAzQCWAAAAAQAuAIcBygIOAAkAFAC4AABFWLgAAS8buQABAAo%2BWTAxEyUVDwEVHwEVJS4BnMt9fcv%2BZAFnp0FQMAQxT0KmAAEAMACHAcwCDgAJABQAuAAARVi4AAYvG7kABgAKPlkwMT8CNS8BNQUVBTDMfHzMAZz%2BZMlPMQQwUEGnOqYAAAACADAAAAHKAioACwAPADgAuAAARVi4AAwvG7kADAAEPlm7AAMAAQAAAAQruAADELgABtC4AAAQuAAI0LgADBC5AA0AAfQwMRMjNTM1MxUzFSMVIwc1IRXerq88r7A8rgGaATs6tbU6uYI6OgABAFMBGwG1Ap4ACQAUALgAAEVYuAAALxu5AAAAED5ZMDETMxMjLwEjDwEj5T6SQEEtAy9AQgKe%2Fn2yhYWyAAAAAQAtAQQBwwGSABcAFwC7AAgAAQAPAAQruwADAAEAFAAEKzAxEz4BMzIeAjMyNjcXDgEjIi4CIyIGBy0ZPx8bLSklFBYjESsZPx8bLSklFBYjEQE5LyobIBsdIBwvKhsgGx0gAAEAMABnAcoBZwAFAA0AuwABAAEABAAEKzAxEyERIzUhMAGaPP6iAWf%2FAMcAAf%2F2%2F0EB7QHmABoAJAC4AABFWLgAEi8buQASAAQ%2BWbkABgAB9LoAFQASAAYREjkwMTcOARUUFjMyNjcTMwMjNyMOASMiJicPASMTM40EBCImHUYtRUtgPwgEI0gmHS0LDR1Mh026FBgNJSYqLgFY%2FhpKIzAWHVOWAqUA%2F%2F8A%2FgI7AYQCyAAHAOAA2AAAAAD%2F%2FwEHAjsBzQLIAAcA4gDYAAAAAP%2F%2FAM4COwHDAsgABwDkANgAAAAA%2F%2F8AxQJCAegCqgAHAOYA2AAAAAD%2F%2FwDVAk0B1gKsAAcA6QDYAAAAAP%2F%2FANkCWQHNAo8ABwDoANgAAAAA%2F%2F8A%2BgIbAa8C0wAHAOsA2AAAAAD%2F%2FwBh%2FysA%2BwADAAcA7QDYAAAAAAABACYCOwCsAsgAAwAYALgAAEVYuAAALxu5AAAAEj5ZuAAC3DAxEzMXIyZLOzgCyI0AAAAAAQAUAsIAqgMwAAMADQC7AAEAAQADAAQrMDETMxcjFFJEPQMwbgAAAAEALwI7APUCyAADABgAuAAARVi4AAAvG7kAAAASPlm4AALcMDETMwcjo1KIPgLIjQAAAAABAEkCwgELAzAAAwANALsAAAABAAIABCswMRMzByO0V4BCAzBuAAAAAf%2F2AjsA6wLIAAcAKgC4AABFWLgAAC8buQAAABI%2BWbgAAty6AAUAAAACERI5uAAG0LgAB9AwMRMzFyMnIwcjcDlCNS8EUzoCyI1cXAAAAAAB%2F%2FoCwgD7AzAABwAVALsAAQABAAMABCu4AAMQuAAG0DAxEzMXIycjByNsSEc7MwNOQgMwbkZGAAH%2F7QJCARACqgAXAD0AuwAIAAEADwAEK7gADxC4AADQuAAAL7gACBC4ABTQuAAUL7kAAwAB9LgAC9C4AAsvugAMABQAAxESOTAxAz4BMzIeAjMyNjczDgEjIi4CIyIGBxMNMSAVHBYVEA0WCiwNMSAWGxYWEAwWCgJELTkRExEcFy05ERMRHBcAAAAAAf%2FxAsUBGQMwABkAMwC7AAoAAQARAAQruAARELgAANC4AAAvuAAKELgAFtC4ABYvuQAFAAH0uAAN0LgADS8wMQM%2BAzMyHgIzMjY3Mw4BIyIuAiMiBgcPBRQaHhETGhcWDxAYCSwLNiITGhYWDxAYCQLHFiYdEBEVERwZLTwRFRIdGQAAAQABAlkA9QKPAAMAGgC4AABFWLgAAC8buQAAABA%2BWbkAAgAB9DAxEzMHIwvqCesCjzYAAAL%2F%2FQJNAP4CrAALABcAHQC7AAYAAQAAAAQruAAAELgADNC4AAYQuAAS0DAxEyImNTQ2MzIWFRQGMyImNTQ2MzIWFRQGJREXHhUSFx%2BRERceFRIWHgJNFRMXIBYUFx4VExcgFhQXHgAAAgAGAssBBgMqAAsAFwAdALsABgABAAAABCu4AAAQuAAM0LgABhC4ABLQMDETIiY1NDYzMhYVFAYzIiY1NDYzMhYVFAYuERceFREXHpERFx4VERYdAssVExYhFRQVIRUTFiEVFBUhAAACACICGwDXAtMADwAbADkAuAAARVi4ABYvG7kAFgAMPlm4AABFWLgACC8buQAIABI%2BWbgAFhC5AAAAAfS4AAgQuQAQAAH0MDETIiY1ND4CMzIWFRQOAiciBhUUFjMyNjU0JnYkMA8bJBQkLw8aJAgVHxYUFR8WAhsqKBUlHBAqKBUlHBCUJRoWGyYaFRsAAAACAC4CuQDlA2sADwAbABcAuwAWAAEAAAAEK7sACAABABAABCswMRMiJjU0PgIzMhYVFA4CJyIGFRQWMzI2NTQmgiMxEBskFCMxEBskBxYgFxQWIBcCuSYpFSQbDyYpFSQbD44iGRUaIhoVGQAB%2F4n%2FKwAjAAMAEQANALsAAAABAAIABCswMSczBx4BFRQOAgcnPgE1NCYnGDQmEhsZKjYdBCg2GB0DOAcbFxgkGQ8DIwccGRESCAAAAf%2BJ%2FysAIwADABEADQC7AAAAAQACAAQrMDEnMwceARUUDgIHJz4BNTQmJxg0JhIbGSo2HQQoNhgdAzgHGxcYJBkPAyMHHBkREggAAAEAAADwAHAABwB1AAUAAQAAAAAACgAAAgABcwADAAEAAABmAGYAZgBmALQBGgFqAagB6AIgAoACwALgAxgDWAN%2BA9wEJAR4BMQFMAWIBfIGIAZmBp4HBAdUB5AHzAgwCJYI4AlICbIKBgp6CsoK%2FgtGC4gLwAwwDH4Myg0sDZANyg44DooO3g8cD4QP0hAiEFwQaBB0EIAQjBCYEKQRAhEOERoRJhEyET4RShFWEWIRbhF6EYYRkhGeEaoRthIkEo4SmhKmErISvhLKEyYTbhN6E4YTkhOeE6oTthR2FIIUjhSaFKYUshS%2BFMoU1hTiFQIVDhUaFSYVMhU%2BFUoVshZeFtYW4hbuFvoXBhcSFx4Xghf0GIwZJhnQGiQaXhqoGxQbZBvCHC4cZBz0HWAdhB2wHbwdyB32HiYedB7CHtge5B8MHzIfPh9KH1QfYh96H5Ifnh%2BqH74fxh%2FaH%2B4f%2BCAYICwgVCB6IJggtiEYIXohlCGmIcAh2iICInAioiMiI5wkNiS6JMQkziTYJOIlLCVIJYYl4CYSJhomIiZ2JrIm7idOJ8ooJiicKSQpgimeKaYpuCnKKdwp7ioSKiYqUiqQKpwqvCrcKxIrMitkK3oruCvCK8wr1ivgK%2Bor9Cv%2BLAgsIiw2LFAsZCyMLKgs7i0wLUotfi2yLfouMC5WLnwufAAAAAEAAAABDMwn%2B4QIXw889QAJA%2BgAAAAAzZeAlwAAAADNl%2BMI%2Fy3%2B5QRRA7QAAgAJAAIAAAAAAAACdAAkAAAAAADAAAAAwAAAAf7%2FywJHACMCJgA5AlAAIwH3ACMB2QAjAkwAOQJuACMA%2FAAjAcj%2F%2FgIvACMBzgAjAsEAIwJrACMCeQA8AiYAIwJ5ADwCKwAjAfoADAH%2BAF0CaABPAfAAUgL0AF8B7v%2FcAc0AUwIA%2F%2F8CGQAnAhgAHwGzACUCFwAnAeEAJQEaACsCE%2F%2F%2BAgcAHwDtAB8A7v%2BEAdwAHwD4ACwDHwAfAg0AHwIDACcCF%2F%2F2AhkAJwFWAB8Bkv%2F8AUUAPAIQADgBwAA7AsMARgGt%2F9QBwP%2FCAZr%2F9gH%2B%2F8sB%2Fv%2FLAf7%2FywH%2B%2F8sB%2Fv%2FLAf7%2FywMj%2F98CJgA5AfcAIwH3ACMB9wAjAfcAIwD8ACMA%2FAAjAPwAIwD8ACMCawAjAnkAPAJ5ADwCeQA8AnkAPAJ5ADwCef%2F9AzAAPAJoAE8CaABPAmgATwJoAE8BzQBTAmIALwIyACMCGQAnAhkAJwIZACcCGQAnAhkAJwIZACcC%2BQAgAbMAJQHhACUB4QAlAeEAJQHhACUA7QAfAO0AHwDtAB8A7QAfAO0AHwINAB8CAwAnAgMAJwIDACcCAwAnAgMAJwIDAAADLAAnAisAHwIQADgCEAA4AhAAOAIQADgBwP%2FCAcD%2FwgIMACsCF%2F%2F2AigAKwIxACsCRgAPAeAAKgHgABoB4P%2F2AeD%2F9wHgAAgB4P%2F8AeAAMwHgAGsB4AAjAeAAEgDyABcA8v%2FhAPIAFwDy%2F%2BEBGgArARoAFQGZAF4Bmf%2F8APIAgAGYAIAA8gBuAPIAbwGYAG4BmABvAPL%2F%2BAEg%2F%2FgA%2FAAoAPwAFwGbACgBmwAXASsAIwErACQBzwAjAwEAIwDyAE8BJwApAeP%2F3AEjAEEBJf%2FUASQACAEl%2F88BIgAgASX%2FzAFU%2F7gA5wBfAVQAWADnAF8BkwB9Ad0ADwIXAEkCmQAkAZYASQMuAC0B3wAYAWQAsgFhAFcBXwBWAWIAXwFlAA8BZABcAWEAAQFfAAABYgAJAWIAPAFcADsBYgA8AVwAOwE5AGUB4AALAeAAEQHgAAQB4AAcAeAAFAHgAE4AVP8tAFT%2FLQMXAD0C7AB3AwQAYwL8AC4B4AAwAeAAMAHgAEEB4AAwAeAAMAHgAC4B4AAwAeAAMAHfAFMB4AAtAeAAMAIO%2F%2FYCBQD%2BAgUBBwIFAM4CBQDFAgUA1QIFANkCBQD6AgUAYQAAACYAAAAUAAAALwAAAEkAAP%2F2AAD%2F%2BgAA%2F%2B0AAP%2FxAAAAAQAA%2F%2F0AAAAGAAAAIgAAAC4AAP%2BJAAD%2FiQDAAAAAAQAAA9j%2B7wAABHj%2FLf61BFED6ADCAAAAAAAAAAAAAAAAAPAAAwGpAZAABQAAAooCWP%2FxAEsCigJYAEQBXgAyASAAAAILBQMDBAMJAgQgAAAHAAAAAQAAAAAAAAAAQURCRQABAAD%2B%2FwLu%2FwYAAAPYAREgAAGTAAAAAAHgApQAAAAgAAMAAAACAAAAAwAAABQAAwABAAAAFAAEAdIAAAA8ACAABAAcAAAADQAvADkAQABaAGAAegB%2BAL8AzwDfAO8A%2FwExAVMCxgLaAtwgFCAaIB4gIiA6IEQgdCCsIhIiFf%2F%2FAAAAAAANACAAMAA6AEEAWwBhAHsAoADAANAA4ADwATEBUgLGAtoC3CATIBggHCAiIDkgRCB0IKwiEiIV%2F%2F8AAf%2F1AAAATAAA%2F8MAAP%2B9AAAAAP94AAD%2FdwAA%2FzYAAP4U%2FgT9%2F%2BCJAAAAAOB94F3gguBB4Bjeu96yAAEAAAAAADgAAABUAAAAXgAAAGYAbAAAAKgAAADEAAAA4AAAAAAAAAAAANoA3gAAAAAAAAAAAAAAAAAAAAAAAwCKAI8AsQDBAMgAewCOAKEAogCrAMwAhwCaAIYApwCIAIkA0QDQANIAjACwAKMAqQCkANQAoADYAKUAqACmANUA7wCLAMUAwgDAAMMAqgCsANwArgC7AJgA1gCbAK8A3QC%2FANMAswC0ANkA1wCtAJ4A3wCyALwAmQDJAMoAywCNAFUASABJAEoASwBMAE0AzgBOAFAAUQBSAFMAVABWAHAAdwBoAGkAagBrAGwAbQDPAG4AcQByAHMAdAB1AHgAdgBPAG8AkACRAJQAkgCTAJUAALgAACxLuAAJUFixAQGOWbgB%2F4W4AEQduQAJAANfXi24AAEsICBFaUSwAWAtuAACLLgAASohLbgAAywgRrADJUZSWCNZIIogiklkiiBGIGhhZLAEJUYgaGFkUlgjZYpZLyCwAFNYaSCwAFRYIbBAWRtpILAAVFghsEBlWVk6LbgABCwgRrAEJUZSWCOKWSBGIGphZLAEJUYgamFkUlgjilkv%2FS24AAUsSyCwAyZQWFFYsIBEG7BARFkbISEgRbDAUFiwwEQbIVlZLbgABiwgIEVpRLABYCAgRX1pGESwAWAtuAAHLLgABiotuAAILEsgsAMmU1iwQBuwAFmKiiCwAyZTWCMhsICKihuKI1kgsAMmU1gjIbgAwIqKG4ojWSCwAyZTWCMhuAEAioobiiNZILADJlNYIyG4AUCKihuKI1kguAADJlNYsAMlRbgBgFBYIyG4AYAjIRuwAyVFIyEjIVkbIVlELbgACSxLU1hFRBshIVktALAAKwCyAQECKwGyAgICKwG3AkQ2KiEUAAgrtwNANiohFAAIKwC3AVJENiQWAAgrALIECAcrsAAgRX1pGERLsGBSWLABG7AAWbABjgAAFABEAFIAVgAAAAz%2FMwAMAeYADAIGAAwCPgAMAn4ADAKQAAwCyAAMAAAABwBaAAMAAQQJAAEAHgAAAAMAAQQJAAIADAAeAAMAAQQJAAMAQgAqAAMAAQQJAAQALABsAAMAAQQJAAUAggCYAAMAAQQJAAYAIAEaAAMAAQQJAA4ASAE6AFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvAEkAdABhAGwAaQBjADEALgAwADUAMAA7AEEARABCAEUAOwBTAG8AdQByAGMAZQBTAGEAbgBzAFAAcgBvAC0ASQB0ADsAQQBEAE8AQgBFAFMAbwB1AHIAYwBlACAAUwBhAG4AcwAgAFAAcgBvACAASQB0AGEAbABpAGMAVgBlAHIAcwBpAG8AbgAgADEALgAwADUAMAA7AFAAUwAgAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADAAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADkAMAAwAFMAbwB1AHIAYwBlAFMAYQBuAHMAUAByAG8ALQBJAHQAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAGEAZABvAGIAZQAuAGMAbwBtAC8AdAB5AHAAZQAvAGwAZQBnAGEAbAAuAGgAdABtAGwAAgAA%2F%2FUAAP%2B1ADIAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAABAgEDAAMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQCtAMkAxwCuAGIAYwCQAGQAywBlAMgAygDPAMwAzQDOAGYA0wDQANEArwBnAJEAsADWANQA1QBoAOsA6QDtAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA1wB4AHoAeQB7AH0AfAChALEAiQB%2FAH4AgACBAOwAugDqAO4BBAEFAAkAEwAUABUAFgAXABgAGQAaABsAHAARAA8AHQAeAAQAowAiAKIACgAFALYAtwC0ALUAxADFAL4AvwCpAKoAEAEGALIAswDDAIcAQgALAAwAPgBAAF4AYAASAF8APwDoAA0AhgCIAIsAigAjAAYBBwEIAQkBCgELAQwBDQEOAQ8AnQCeARABEQCDAL0ABwCFAJYBEgCEALwBEwAIAPUA9AD2AA4A7wDwALgAIAAfACEAkwBBAGEApAEUAEMAjQDYANkAjgDaAN0A3gEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkBE5VTEwCQ1IDZl9mA2ZfdAd1bmkwMEFECG9uZS5zdXBzCHR3by5zdXBzCnRocmVlLnN1cHMJZm91ci5zdXBzCXplcm8uZG5vbQhvbmUuZG5vbQh0d28uZG5vbQp0aHJlZS5kbm9tCWZvdXIuZG5vbQZhLnN1cHMGby5zdXBzBEV1cm8HdW5pMjIxNQd1bmkwMEI1B3VuaTAzMDALdW5pMDMwMC5jYXAHdW5pMDMwMQt1bmkwMzAxLmNhcAd1bmkwMzAyC3VuaTAzMDIuY2FwB3VuaTAzMDMLdW5pMDMwMy5jYXAHdW5pMDMwNAd1bmkwMzA4C3VuaTAzMDguY2FwB3VuaTAzMEELdW5pMDMwQS5jYXAHdW5pMDMyNwt1bmkwMzI3LmNhcAd1bmkwMEEwAAAAAAAAAf%2F%2FAAIAAQAAAAwAAAAAAAAAAgAIAAQANwABAD4APgABAE4ATwABAGcAZwABAG4AbwABAHgAeAABAHkAegACANoA2gABAAEAAAAKADAARAACREZMVAAObGF0bgAaAAQAAAAA%2F%2F8AAQAAAAQAAAAA%2F%2F8AAQABAAJrZXJuAA5rZXJuAA4AAAABAAAAAQAEAAIAAAACAAoBFAABACYABAAAAA4ARgBgAHIAhACSAKAAsgDAANYA3ADiAOgA8gEAAAEADgAJABMAGQAbADMANQBWAHAAhgCJAIsAjQCeAKkABgAZ%2F%2FkAM%2F%2F2ADX%2F7ACe%2F%2FYAp%2F%2BwAK8AKwAEABv%2F6AA1%2F%2FYAp%2F%2BiAK8AIAAEADX%2F5QCe%2F%2BwAp%2F%2FEAK8AKwADAJ7%2FwgCr%2F%2F0ArwA1AAMAp%2F%2FsAKv%2F5gCvACYABAAZ%2F%2FYAnv%2FsAKv%2F2ACvACYAAwCn%2F8sAqf%2FYAKv%2FqwAFADP%2F6AA1ABAAjP%2FrAKn%2F7ACv%2F9YAAQAnAAMAAQAnAB8AAQAZ%2F%2BUAAgAZ%2F9EAG%2F%2FlAAMAGf%2FsABv%2F5QA1%2F%2BwAAgAZ%2F8QAM%2F%2FsAAIRmAAEAAASFBNiADMALAAA%2F%2BL%2FnP%2FY%2F9j%2FsABk%2F%2FYAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F8v%2FXADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FvQAAAAD%2FzQAAAAAAAAAA%2F%2BX%2F7P%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Bp%2F8j%2F3v%2B9AEYAAAAAAAD%2FyP%2FdAAD%2F5f%2Fv%2F%2B%2F%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AAAAAAAA%2F9gAAAAAAAD%2F7P%2FsAAD%2FsAAU%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F6v%2F3v%2Fv%2F9H%2F9v%2F2%2F%2FL%2FqAAA%2F%2Fb%2F9v%2FrAAAAAP%2FvAAD%2F7%2F%2F2%2F4j%2F2P%2Fl%2F8%2F%2FqQAAAAAAAAAA%2F88ABv%2Bp%2F7n%2F8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FYAAAAAP%2FlAAD%2F9v%2FyAAAAAP%2FyAAAAAAAAAAAAAP%2F2%2F%2FYAAP%2BiAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FL%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7P%2FyAAAAAAAA%2F%2B%2F%2F7wAAAAD%2F7P%2F2%2F88AAAAAAAD%2F9v%2Fy%2F%2FYAAAAA%2F6cAAAATAAAAAAAAAAAAAAAAAAAAAP%2FvAAD%2Fz%2F%2FrAAAAAAAAAAAAAAAAAAAAAAAA%2F%2BIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8sAAAAAAAAABQAAAAAAAAAA%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fv%2F%2FL%2F9v%2Fv%2F%2FYAAAAAAAAAAP%2F2AAD%2F5QAAAAAAAAAA%2F%2Bj%2F8f%2FsAAD%2FyQAAAAAAAAAAAAAAAP%2F2AAD%2F1QAAAAAAAP%2Fa%2F9UAAAAAAAAAAAAAAAAAAAAAAAD%2FiP%2FX%2F9H%2FqwAA%2F8L%2F0f%2BaAAP%2F5QAA%2F9P%2F8gAA%2F%2B8AAP%2Fq%2F%2Fb%2FWf%2Bc%2F43%2F0f%2BNAAAAAAAAAAD%2FowAA%2F3L%2Fmv%2BnAAD%2FsP%2FYAAAAAAAAAAAAAAAAAAAAAAAA%2F94AAAAA%2F%2BgAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAA%2F%2BwAAAAA%2F7cAAAAAAAAAA%2F%2FsAAAAAAAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FcAAAAAP%2FsAAAAAAAAAAD%2F9v%2Fy%2F%2FYAAP%2F2%2F%2FYAAP%2FsAAAAAP%2FyAAAAAAAAABkAAAAAAAAAAP%2F2%2F%2FYAAAAAAAD%2F9v%2FY%2F%2BgAAAAAAAD%2F9gAAAAAAAAAAAAD%2F4gAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAD%2F9gAAAAD%2F4gAA%2F%2FYAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2FYAAP%2FY%2F9gAAP%2Br%2F7L%2Fy%2F%2Fs%2F7D%2FsP%2Ff%2F4L%2F7P%2BcAAAAAP%2FEAAAAK%2F%2BjAAAAAAAAAAD%2F7AAAAAD%2F2P%2FY%2F5z%2FwP%2BV%2F7D%2FxP%2Bc%2F5z%2FvQAAAAAAAAAAAAAAAP%2FyAAAAAAAAAAD%2F9v%2F2AAAAAAAAAAAAAP%2B2AAAAAAAAAAAAAAAAAAD%2F2AAAAAAAAP%2F2%2F%2FYAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2B%2F%2F9v%2F2AAD%2F%2Bf%2FsAAb%2FnAAAAAAAAAAAAAAAAAAn%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fv%2F8gAAAAA%2F%2B8AAP%2FvAAAAAAAA%2F%2FYAAAAAAAAAAP%2Fo%2F%2BgAAP%2FG%2F%2Fb%2F6P%2Fy%2F9f%2F2AAA%2F6IAAP%2FiAAAAAP%2FYAA0AK%2F%2BwAAAAAAAAAAAAAAAAAAD%2F6P%2Fe%2F73%2Ftv%2Bp%2F97%2Fwv%2FA%2F%2FL%2F0AAAAAAAAAAA%2F%2Fb%2F9v%2FyAAD%2F6P%2FoAAD%2F7P%2Fi%2F%2Fb%2F7P%2Fn%2F%2FEAAP%2Fi%2F%2FL%2F3QAAAAD%2FxAAAABcAAAAAAAAAAP%2F2AAAAAAAA%2F%2BgAAP%2FC%2F80AAAAAAAAAAAAAAAAAAAAAAAD%2F3gAAAAD%2F3gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FnAAAAAAAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F94AAAAA%2F%2BgAAAAGAAYAAAAAAAAAAAAA%2F%2FH%2F9gAAAAAAAAAAAAAAAP%2F2AAAAEwAAAAAAAAAA%2F%2FIAAAAAAAAABgAG%2F%2B8AAAAAAAAAAAAAAAAAAAAAAAAAAP%2BrAAAAAP%2FeAAoAAAAA%2F%2BUAAAAAAAAAAAAAAAAAAAAAAAAAAP%2B3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Flf%2Br%2F%2BL%2FrAAf%2F%2B3%2F7P%2BGAAAAAAAAAAD%2F9gAAAAAAAP%2FiAAD%2FZQAAAAAAAAAAAAAAAAAAAAD%2FrAAA%2F4b%2Fmv%2FdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F88AAP%2F2%2F%2BUAAP%2Fy%2F%2FL%2F4AAA%2F%2BwAAP%2FyAAD%2F8QAA%2F%2Bz%2F7wAA%2F7P%2F9v%2FlAAD%2F8wAAAAAAAAAA%2F%2FIAAAAAAAD%2F8gAAAA3%2F6AAAAAAAAAAAAAAAAAAAAAAAAAAyAAAAMgAyAAAAAAAAACEAAAAAAAAAAP%2F2%2F%2BwAAAAAAAAAAAAAAFD%2F8wAeAEv%2F7AAeAAAAAAAyACgAKAAhAAAAAP%2F2AAD%2Fwv%2F6AAAAAAAAAAAANQAAAAD%2F7wAAAAD%2F7%2F%2F2AAAAAP%2FdAAAAAAAAAAD%2F7%2F%2F2AAAAAP%2F2%2F%2Fb%2FxAAA%2F%2BwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F3f%2FlAA0AAAAAAAAAAAAAAAAAAAAA%2F%2BgAAAAA%2F94AAAAAAAD%2FxAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7AAAAAAAAAAAAAAAAAAAAAA%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FAAAAAAP%2FCAAD%2F%2Bf%2F1%2F70AAAAAAAAAAAAA%2F%2FEAAAAAAAAAAAAA%2F9gAAAAAAAAAAAAAAAAAAP%2FoAAAAAP%2FY%2F%2FX%2F7wAUAAD%2F9gAAAAD%2F8gAAAAD%2F%2BQAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7kAAAAAAAD%2F2P%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FE%2F3QAAAAAAAAAAAAAAAAAAAAA%2F64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F%2BgAGAAYADQAAAAD%2F7AAA%2F%2Fb%2F6QAA%2F6sAAAAAAAAAFAAAAAAAOv%2FYAAAAAAAAAAAAAAAAACEABgAA%2F%2Bz%2F7P%2FNAAD%2F%2Bv%2F2AAAAAAAAAAAAAP%2FeAAAAAP%2FoAAAAAP%2F8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2B3AAAAAAAAAAAAAAAAAAAAAP%2FyAAAAAAAA%2F%2FwAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9f%2FsAAAAAAAA%2F%2FYAAAAA%2F%2BwAAAAtABQAAAAAAAAAAAAAAAAAAAAAAAD%2F5f%2FsAA0AAAAAAAAAFAAAAAAAAAAA%2F9gAAAAA%2F%2Bz%2F9gAAAAAAAP%2F5AAAAAAAA%2F%2Fz%2F9gAA%2F%2BIAAAAA%2F%2BIAAAAAAAAAM%2F%2F2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FoAAAAAP%2FyAAAAAAAAAAAAAP%2FYAAAAAP%2Fl%2F%2FYAAAAAAAAAAAAAAAAAAP%2F8%2F%2BwAAP%2FeAAAAAAAAAAAAAAAAADP%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3QAAAAD%2F9gAAAAAAAAAAAAD%2F4gAAAAD%2F6AAAAAAAAAAAAAAAAAAAAAD%2F9v%2FpAAAAAAAA%2F%2BwAAAAA%2F%2FYAAAAmAAAAAAAAAAD%2F9gAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2F8%2F%2FkAAP%2F2%2F%2FYAAP%2FY%2F%2FD%2F7P%2F2%2F%2Fb%2F4gAA%2F3T%2F9v%2FxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7P%2B9%2F%2Bz%2F8f%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAD%2F4gAAAAD%2F8gAAAAAAAAAA%2F8L%2F9v%2BcAAD%2F7P%2FiAAD%2FeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9v%2F2%2F4YAAAAA%2F%2BwAAAAAAAAAAAAAAAD%2F9gAAAAAAAAAAAAAAAP%2FP%2F%2Bz%2F7AAA%2F%2BX%2FyAAA%2F6wAAP%2FsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F8%2F%2Fzf%2B5%2F%2Bz%2F7P%2FIAAD%2FzQAAAAAAAP%2FyAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAA%2F%2FAAAAAAAAD%2F8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FP%2F9gAAAAAAAAAAAAA%2F%2BUAAAAAAAAAAAAAAAAAAABJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7kAAAAAAAAAAAAAAAD%2F7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F%2Bj%2F7AAAAAAAAP%2FvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F9P%2Fo%2F5UAAAAAAAAAAAAAAAAAAAAA%2F%2B0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2Fr%2F%2FJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FoAAA%2F%2FL%2FyQAAAAAAAAAAAAAAAP%2F5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2F3f%2F5AAAAAAAA%2F%2FwAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F6MAAP%2Fy%2F70AAAAAAAAAAAAA%2F%2BL%2F7AAAAAAAAAAA%2F%2BIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F9EAAAAAAAAAAP%2FyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FvQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD%2FmgAA%2F%2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F7MAAAAAAAD%2F6P%2FcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2F20AAP%2FYAAAAAAAAAAAAAAAA%2F9gAAAAA%2F%2Bz%2F9gAAAAAAAP%2FyAAAAAAAA%2F%2Fz%2F7AAA%2F94AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2FdAAAAAP%2FyAAAAAAAAAAAAAP%2FCAAAAAP%2FoAAAAAAAAAAAAAAAAAAAAAP%2Fv%2F%2FYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP%2Fr%2F%2FIAAAAAAAAAAAAA%2F%2FkAAAACABQABAAHAAAACQAKAAQADQAPAAYAEgAgAAkAIgAlABgAKAAoABwAKgA9AB0APwA%2FADEASQBOADIAUABVADgAVwBiAD4AZwB2AEoAeAB6AFoAhgCTAF0AlgCeAGsAoQChAHQAowCjAHUApQClAHYApwCnAHcAqQCpAHgAAQAEAKQABwAIAAkADQAAACUACgAAAAAAJgALAAwAAAAAAA0AJwANAA4ADwAQABEAKAASACkAEwAUABUAHQAWAAAAGQAaABUAHAAAAAAAGwAAABwAHAAdAB0AFQAfACAAIQAVADEAIgAyACMAJAAHAAcABwAHAAcABwAAAAkAAAAAAAAAAAAAAAAAAAAAAAAADQANAA0ADQANAA0AAAARABEAEQARABMADQAAABUAFQAVABUAFQAVABkAFgAZABkAGQAZAAAAAAAAAAAAFQAcAB0AHQAdAB0AHQAdABkALAAVABUAFQAVACMAIwAAAB0AGgAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABgAFwAXAAEAAgAEAAUALwAvAB4AMAAeADAAAAAAAC0ALgAtAC4AKwArACsAKwADAAAAAAAqAAAAKgAAACoAAAAGAAEABACsAAoAAAANAAAAAAAAAA0AAAAAABEAAAAAAAAAAAANAAAADQAAAAsAAgADAB0ABAAeAAUADAAOAAAADgAOAA4AEAAOAAAAAAAGAAAAAAAmACYADgAmAA4AJgAnABIAEwAhAAcAIgAIACgACgAKAAoACgAKAAoAAAANAAAAAAAAAAAAAAAAAAAAAAAAAA0ADQANAA0ADQANAA0AAwADAAMAAwAFAAEAAAAOAA4ADgAOAA4ADgAPAA4ADgAOAA4ADgAAAAAAAAAAACYAJgAOAA4ADgAOAA4ADgAOAAAAEwATABMAEwAIAAgAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAlACkAKQAaABsAFwAcAB8AHwAgAAkAIAAJAAAAAAAkACoAJAAqACMAIwAjACMAFgAAAAAAAAArAAAAKwAAACsAGQAAABUAAAAUAAAAAAAAABgAAQAAAAoAMABEAAJERkxUAA5sYXRuABoABAAAAAD%2F%2FwABAAAABAAAAAD%2F%2FwABAAEAAmxpZ2EADmxpZ2EADgAAAAEAAAABAAQABAAAAAEACAABABoAAQAIAAIABgAMAHkAAgAjAHoAAgAxAAEAAQAj%29%20format%28%27truetype%27%29%3B%0A%7D%0Ahtml%7Bfont%2Dfamily%3Asans%2Dserif%3B%2Dms%2Dtext%2Dsize%2Dadjust%3A100%25%3B%2Dwebkit%2Dtext%2Dsize%2Dadjust%3A100%25%7Dbody%7Bmargin%3A0%7Darticle%2Caside%2Cdetails%2Cfigcaption%2Cfigure%2Cfooter%2Cheader%2Chgroup%2Cmain%2Cmenu%2Cnav%2Csection%2Csummary%7Bdisplay%3Ablock%7Daudio%2Ccanvas%2Cprogress%2Cvideo%7Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Abaseline%7Daudio%3Anot%28%5Bcontrols%5D%29%7Bdisplay%3Anone%3Bheight%3A0%7D%5Bhidden%5D%2Ctemplate%7Bdisplay%3Anone%7Da%7Bbackground%2Dcolor%3Atransparent%7Da%3Aactive%2Ca%3Ahover%7Boutline%3A0%7Dabbr%5Btitle%5D%7Bborder%2Dbottom%3A1px%20dotted%7Db%2Cstrong%7Bfont%2Dweight%3Abold%7Ddfn%7Bfont%2Dstyle%3Aitalic%7Dh1%7Bfont%2Dsize%3A2em%3Bmargin%3A0%2E67em%200%7Dmark%7Bbackground%3A%23ff0%3Bcolor%3A%23000%7Dsmall%7Bfont%2Dsize%3A80%25%7Dsub%2Csup%7Bfont%2Dsize%3A75%25%3Bline%2Dheight%3A0%3Bposition%3Arelative%3Bvertical%2Dalign%3Abaseline%7Dsup%7Btop%3A%2D0%2E5em%7Dsub%7Bbottom%3A%2D0%2E25em%7Dimg%7Bborder%3A0%7Dsvg%3Anot%28%3Aroot%29%7Boverflow%3Ahidden%7Dfigure%7Bmargin%3A1em%2040px%7Dhr%7B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%3Bheight%3A0%7Dpre%7Boverflow%3Aauto%7Dcode%2Ckbd%2Cpre%2Csamp%7Bfont%2Dfamily%3Amonospace%2C%20monospace%3Bfont%2Dsize%3A1em%7Dbutton%2Cinput%2Coptgroup%2Cselect%2Ctextarea%7Bcolor%3Ainherit%3Bfont%3Ainherit%3Bmargin%3A0%7Dbutton%7Boverflow%3Avisible%7Dbutton%2Cselect%7Btext%2Dtransform%3Anone%7Dbutton%2Chtml%20input%5Btype%3D%22button%22%5D%2Cinput%5Btype%3D%22reset%22%5D%2Cinput%5Btype%3D%22submit%22%5D%7B%2Dwebkit%2Dappearance%3Abutton%3Bcursor%3Apointer%7Dbutton%5Bdisabled%5D%2Chtml%20input%5Bdisabled%5D%7Bcursor%3Adefault%7Dbutton%3A%3A%2Dmoz%2Dfocus%2Dinner%2Cinput%3A%3A%2Dmoz%2Dfocus%2Dinner%7Bborder%3A0%3Bpadding%3A0%7Dinput%7Bline%2Dheight%3Anormal%7Dinput%5Btype%3D%22checkbox%22%5D%2Cinput%5Btype%3D%22radio%22%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%3A0%7Dinput%5Btype%3D%22number%22%5D%3A%3A%2Dwebkit%2Dinner%2Dspin%2Dbutton%2Cinput%5Btype%3D%22number%22%5D%3A%3A%2Dwebkit%2Douter%2Dspin%2Dbutton%7Bheight%3Aauto%7Dinput%5Btype%3D%22search%22%5D%7B%2Dwebkit%2Dappearance%3Atextfield%3B%2Dwebkit%2Dbox%2Dsizing%3Acontent%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Acontent%2Dbox%3Bbox%2Dsizing%3Acontent%2Dbox%7Dinput%5Btype%3D%22search%22%5D%3A%3A%2Dwebkit%2Dsearch%2Dcancel%2Dbutton%2Cinput%5Btype%3D%22search%22%5D%3A%3A%2Dwebkit%2Dsearch%2Ddecoration%7B%2Dwebkit%2Dappearance%3Anone%7Dfieldset%7Bborder%3A1px%20solid%20%23c0c0c0%3Bmargin%3A0%202px%3Bpadding%3A0%2E35em%200%2E625em%200%2E75em%7Dlegend%7Bborder%3A0%3Bpadding%3A0%7Dtextarea%7Boverflow%3Aauto%7Doptgroup%7Bfont%2Dweight%3Abold%7Dtable%7Bborder%2Dcollapse%3Acollapse%3Bborder%2Dspacing%3A0%7Dtd%2Cth%7Bpadding%3A0%7D%40media%20print%7B%2A%2C%2A%3Abefore%2C%2A%3Aafter%7Bbackground%3Atransparent%20%21important%3Bcolor%3A%23000%20%21important%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%20%21important%3Bbox%2Dshadow%3Anone%20%21important%3Btext%2Dshadow%3Anone%20%21important%7Da%2Ca%3Avisited%7Btext%2Ddecoration%3Aunderline%7Da%5Bhref%5D%3Aafter%7Bcontent%3A%22%20%28%22%20attr%28href%29%20%22%29%22%7Dabbr%5Btitle%5D%3Aafter%7Bcontent%3A%22%20%28%22%20attr%28title%29%20%22%29%22%7Da%5Bhref%5E%3D%22%23%22%5D%3Aafter%2Ca%5Bhref%5E%3D%22javascript%3A%22%5D%3Aafter%7Bcontent%3A%22%22%7Dpre%2Cblockquote%7Bborder%3A1px%20solid%20%23999%3Bpage%2Dbreak%2Dinside%3Aavoid%7Dthead%7Bdisplay%3Atable%2Dheader%2Dgroup%7Dtr%2Cimg%7Bpage%2Dbreak%2Dinside%3Aavoid%7Dimg%7Bmax%2Dwidth%3A100%25%20%21important%7Dp%2Ch2%2Ch3%7Borphans%3A3%3Bwidows%3A3%7Dh2%2Ch3%7Bpage%2Dbreak%2Dafter%3Aavoid%7D%2Enavbar%7Bdisplay%3Anone%7D%2Ebtn%3E%2Ecaret%2C%2Edropup%3E%2Ebtn%3E%2Ecaret%7Bborder%2Dtop%2Dcolor%3A%23000%20%21important%7D%2Elabel%7Bborder%3A1px%20solid%20%23000%7D%2Etable%7Bborder%2Dcollapse%3Acollapse%20%21important%7D%2Etable%20td%2C%2Etable%20th%7Bbackground%2Dcolor%3A%23fff%20%21important%7D%2Etable%2Dbordered%20th%2C%2Etable%2Dbordered%20td%7Bborder%3A1px%20solid%20%23ddd%20%21important%7D%7D%40font%2Dface%7Bfont%2Dfamily%3A%27Glyphicons%20Halflings%27%3Bsrc%3Aurl%28data%3Aapplication%2Fvnd%2Ems%2Dfontobject%3Bbase64%2Cn04AAEFNAAACAAIABAAAAAAABQAAAAAAAAABAJABAAAEAExQAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAJxJ%2FLAAAAAAAAAAAAAAAAAAAAAAAACgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAAAADgBSAGUAZwB1AGwAYQByAAAAeABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAA5ADsAUABTACAAMAAwADEALgAwADAAOQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOAAzADIAOQAAADgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzACAAUgBlAGcAdQBsAGEAcgAAAAAAQlNHUAAAAAAAAAAAAAAAAAAAAAADAKncAE0TAE0ZAEbuFM3pjM%2FSEdmjKHUbyow8ATBE40IvWA3vTu8LiABDQ%2BpexwUMcm1SMnNryctQSiI1K5ZnbOlXKmnVV5YvRe6RnNMFNCOs1KNVpn6yZhCJkRtVRNzEufeIq7HgSrcx4S8h%2Fv4vnrrKc6oCNxmSk2uKlZQHBii6iKFoH0746ThvkO1kJHlxjrkxs%2BLWORaDQBEtiYJIR5IB9Bi1UyL4Rmr0BNigNkMzlKQmnofBHviqVzUxwdMb3NdCn69hy%2BpRYVKGVS%2F1tnsqv4LL7wCCPZZAZPT4aCShHjHJVNuXbmMrY5LeQaGnvAkXlVrJgKRAUdFjrWEah9XebPeQMj7KS7DIBAFt8ycgC5PLGUOHSE3ErGZCiViNLL5ZARfywnCoZaKQCu6NuFX42AEeKtKUGnr%2FCm2Cy8tpFhBPMW5Fxi4Qm4TkDWh4IWFDClhU2hRWosUWqcKLlgyXB%2BlSHaWaHiWlBAR8SeSgSPCQxdVQgzUixWKSTrIQEbU94viDctkvX%2BVSjJuUmV8L4CXShI11esnp0pjWNZIyxKHS4wVQ2ime1P4RnhvGw0aDN1OLAXGERsB7buFpFGGBAre4QEQR0HOIO5oYH305G%2BKspT%2FFupEGGafCCwxSe6ZUa%2B073rXHnNdVXE6eWvibUS27XtRzkH838mYLMBmYysZTM0EM3A1fbpCBYFccN1B%2FEnCYu%2FTgCGmr7bMh8GfYL%2BBfcLvB0gRagC09w9elfldaIy%2FhNCBLRgBgtCC7jAF63wLSMAfbfAlEggYU0bUA7ACCJmTDpEmJtI78w4%2FBO7dN7JR7J7ZvbYaUbaILSQsRBiF3HGk5fEg6p9unwLvn98r%2BvnsV%2B372uf1xBLq4qU%2F45fTuqaAP%2BpssmCCCTF0mhEow8ZXZOS8D7Q85JsxZ%2BAzok7B7O%2Ff6J8AzYBySZQB%2FQHYUSA%2BEeQhEWiS6AIQzgcsDiER4MjgMBAWDV4AgQ3g1eBgIdweCQmCjJEMkJ%2BPKRWyFHHmg1Wi%2F6xzUgA0LREoKJChwnQa9B%2B5RQZRB3IlBlkAnxyQNaANwHMowzlYSMCBgnbpzvqpl0iTJNCQidDI9ZrSYNIRBhHtUa5YHMHxyGEik9hDE0AKj72AbTCaxtHPUaKZdAZSnQTyjGqGLsmBStCejApUhg4uBMU6mATujEl%2BKdDPbI6Ag4vLr%2BhjY6lbjBeoLKnZl0UZgRX8gTySOeynZVz1wOq7e1hFGYIq%2BMhrGxDLak0PrwYzSXtcuyhXEhwOYofiW%2BEcI%2Fjw8P6IY6ed%2BetAbuqKp5QIapT77LnAe505lMuqL79a0ut4rWexzFttsOsLDy7zvtQzcq3U1qabe7tB0wHWVXji%2BzDbo8x8HyIRUbXnwUcklFv51fvTymiV%2BMXLSmGH9d9%2BaXpD5X6lao41anWGig7IwIdnoBY2ht%2FpO9mClLo4NdXHAsefqWUKlXJkbqPOFhMoR4aiA1BXqhRNbB2Xwi%2B7u%2FjpAoOpKJ0UX24EsrzMfHXViakCNcKjBxuQX8BO0ZqjJ3xXzf%2B61t2VXOSgJ8xu65QKgtN6FibPmPYsXbJRHHqbgATcSZxBqGiDiU4NNNsYBsKD0MIP%2FOfKnlk%2FLkaid%2FO2NbKeuQrwOB2Gq3YHyr6ALgzym5wIBnsdC1ZkoBFZSQXChZvlesPqvK2c5oHHT3Q65jYpNxnQcGF0EHbvYqoFw60WNlXIHQF2HQB7zD6lWjZ9rVqUKBXUT6hrkZOle0RFYII0V5ZYGl1JAP0Ud1fZZMvSomBzJ710j4Me8mjQDwEre5Uv2wQfk1ifDwb5ksuJQQ3xt423lbuQjvoIQByQrNDh1JxGFkOdlJvu%2FgFtuW0wR4cgd%2BZKesSV7QkNE2kw6AV4hoIuC02LGmTomyf8PiO6CZzOTLTPQ%2BHW06H%2Btx%2BbQ8LmDYg1pTFrp2oJXgkZTyeRJZM0C8aE2LpFrNVDuhARsN543%2FFV6klQ6Tv1OoZGXLv0igKrl%2FCmJxRmX7JJbJ998VSIPQRyDBICzl4JJlYHbdql30NvYcOuZ7a10uWRrgoieOdgIm4rlq6vNOQBuqESLbXG5lzdJGHw2m0sDYmODXbYGTfSTGRKpssTO95fothJCjUGQgEL4yKoGAF%2F0SrpUDNn8CBgBcSDQByAeNkCXp4S4Ro2Xh4OeaGRgR66PVOsU8bc6TR5%2FxTcn4IVMLOkXSWiXxkZQCbvKfmoAvQaKjO3EDKwkwqHChCDEM5loQRPd5ACBki1TjF772oaQhQbQ5C0lcWXPFOzrfsDGUXGrpxasbG4iab6eByaQkQfm0VFlP0ZsDkvvqCL6QXMUwCjdMx1ZOyKhTJ7a1GWAdOUcJ8RSejxNVyGs31OKMyRyBVoZFjqIkmKlLQ5eHMeEL4MkUf23cQ%2F1SgRCJ1dk4UdBT7OoyuNgLs0oCd8RnrEIb6QdMxT2QjD4zMrJkfgx5aDMcA4orsTtKCqWb%2FVeyceqa5OGSmB28YwH4rFbkQaLoUN8OQQYnD3w2eXpI4ScQfbCUZiJ4yMOIKLyyTc7BQ4uXUw6Ee6%2FxM%2B4Y67ngNBknxIPwuppgIhFcwJyr6EIj%2BLzNj%2FmfR2vhhRlx0BILZoAYruF0caWQ7YxO66UmeguDREAFHYuC7HJviRgVO6ruJH59h%2FC%2FPkgSle8xNzZJULLWq9JMDTE2fjGE146a1Us6PZDGYle6ldWRqn%2FpdpgHKNGrGIdkRK%2BKPETT9nKT6kLyDI8xd9A1FgWmXWRAIHwZ37WyZHOVyCadJEmMVz0MadMjDrPho%2BEIochkVC2xgGiwwsQ6DMv2P7UXqT4x7CdcYGId2BJQQa85EQKmCmwcRejQ9Bm4oATENFPkxPXILHpMPUyWTI5rjNOsIlmEeMbcOCEqInpXACYQ9DDxmFo9vcmsDblcMtg4tqBerNngkIKaFJmrQAPnq1dEzsMXcwjcHdfdCibcAxxA%2Bq%2Fj9m3LM%2FO7WJka4tSidVCjsvo2lQ%2F2ewyoYyXwAYyr2PlRoR5MpgVmSUIrM3PQxXPbgjBOaDQFIyFMJvx3Pc5RSYj12ySVF9fwFPQu2e2KWVoL9q3Ayv3IzpGHUdvdPdrNUdicjsTQ2ISy7QU3DrEytIjvbzJnAkmANXjAFERA0MUoPF3%2F5KFmW14bBNOhwircYgMqoDpUMcDtCmBE82QM2YtdjVLB4kBuKho%2FbcwQdeboqfQartuU3CsCf%2BcXkgYAqp%2F0Ee3RorAZt0AvvOCSI4JICIlGlsV0bsSid%2FNIEALAAzb6HAgyWHBps6xAOwkJIGcB82CxRQq4sJf3FzA70A%2BTRqcqjEMETCoez3mkPcpnoALs0ugJY8kQwrC%2BJE5ik3w9rzrvDRjAQnqgEVvdGrNwlanR0SOKWzxOJOvLJhcd8Cl4AshACUkv9czdMkJCVQSQhp6kp7StAlpVRpK0t0SW6LHeBJnE2QchB5Ccu8kxRghZXGIgZIiSj7gEKMJDClcnX6hgoqJMwiQDigIXg3ioFLCgDgjPtYHYpsF5EiA4kcnN18MZtOrY866dEQAb0FB34OGKHGZQjwW%2FWDHA60cYFaI%2FPjpzquUqdaYGcIq%2BmLez3WLFFCtNBN2QJcrlcoELgiPku5R5dSlJFaCEqEZle1AQzAKC%2B1SotMcBNyQUFuRHRF6OlimSBgjZeTBCwLyc6A%2BP%2FoFRchXTz5ADknYJHxzrJ5pGuIKRQISU6WyKTBBjD8WozmVYWIsto1AS5rxzKlvJu4E%2FvwOiKxRtCWsDM%2BeTHUrmwrCK5BIfMzGkD%2B0Fk5LzBs0jMYXktNDblB06LMNJ09U8pzSLmo14MS0OMjcdrZ31pyQqxJJpRImlSvfYAK8inkYU52QY2FPEVsjoWewpwhRp5yAuNpkqhdb7ku9Seefl2D0B8SMTFD90xi4CSOwwZy9IKkpMtI3FmFUg3%2FkFutpQGNc3pCR7gvC4sgwbupDu3DyEN%2BW6YGLNM21jpB49irxy9BSlHrVDlnihGKHwPrbVFtc%2Bh1rVQKZduxIyojccZIIcOCmhEnC7UkY68WXKQgLi2JCDQkQWJRQuk60hZp0D3rtCTINSeY9Ej2kIKYfGxwOs4j9qMM7fYZiipzgcf7TamnehqdhsiMiCawXnz4xAbyCkLAx5EGbo3Ax1u3dUIKnTxIaxwQTHehPl3V491H0%2BbC5zgpGz7Io%2BmjdhKlPJ01EeMpM7UsRJMi1nGjmJg35i6bQBAAxjO%2FENJubU2mg3ONySEoWklCwdABETcs7ck3jgiuU9pcKKpbgn%2B3YlzV1FzIkB6pmEDOSSyDfPPlQskznctFji0kpgZjW5RZe6x9kYT4KJcXg0bNiCyif%2BpZACCyRMmYsfiKmN9tSO65F0R2OO6ytlEhY5Sj6uRKfFxw0ijJaAx%2Fk3QgnAFSq27%2F2i4GEBA%2BUvTJKK%2F9eISNvG46Em5RZfjTYLdeD8kdXHyrwId%2FDQZUaMCY4gGbke2C8vfjgV%2FY9kkRQOJIn%2FxM9INZSpiBnqX0Q9GlQPpPKAyO5y%2BW5NMPSRdBCUlmuxl40ZfMCnf2Cp044uI9WLFtCi4YVxKjuRCOBWIb4XbIsGdbo4qtMQnNOQz4XDSui7W%2FN6l54qOynCqD3DpWQ%2BmpD7C40D8BZEWGJX3tlAaZBMj1yjvDYKwCJBa201u6nBKE5UE%2B7QSEhCwrXfbRZylAaAkplhBWX50dumrElePyNMRYUrC99UmcSSNgImhFhDI4BXjMtiqkgizUGCrZ8iwFxU6fQ8GEHCFdLewwxYWxgScAYMdMLmcZR6b7rZl95eQVDGVoUKcRMM1ixXQtXNkBETZkVVPg8LoSrdetHzkuM7DjZRHP02tCxA1fmkXKF3VzfN1pc1cv%2F8lbTIkkYpqKM9VOhp65ktYk%2BQ46myFWBapDfyWUCnsnI00QTBQmuFjMZTcd0V2NQ768Fhpby04k2IzNR1wKabuGJqYWwSly6ocMFGTeeI%2BejsWDYgEvr66QgqdcIbFYDNgsm0x9UHY6SCd5%2B7tpsLpKdvhahIDyYmEJQCqMqtCF6UlrE5GXRmbu%2Bvtm3BFSxI6ND6UxIE7GsGMgWqghXxSnaRJuGFveTcK5ZVSPJyjUxe1dKgI6kNF7EZhIZs8y8FVqwEfbM0Xk2ltORVDKZZM40SD3qQoQe0orJEKwPfZwm3YPqwixhUMOndis6MhbmfvLBKjC8sKKIZKbJk8L11oNkCQzCgvjhyyEiQSuJcgCQSG4Mocfgc0Hkwcjal1UNgP0CBPikYqBIk9tONv4kLtBswH07vUCjEaHiFGlLf8MgXKzSgjp2HolRRccAOh0ILHz9qlGgIFkwAnzHJRjWFhlA7ROwINyB5HFj59PRZHFor6voq7l23EPNRwdWhgawqbivLSjRA4htEYUFkjESu67icTg5S0aW1sOkCiIysfJ9UnIWevOOLGpepcBxy1wEhd2WI3AZg7sr9WBmHWyasxMcvY%2FiOmsLtHSWNUWEGk9hScMPShasUA1AcHOtRZlqMeQ0OzYS9vQvYUjOLrzP07BUAFikcJNMi7gIxEw4pL1G54TcmmmoAQ5s7TGWErJZ2Io4yQ0ljRYhL8H5e62oDtLF8aDpnIvZ5R3GWJyAugdiiJW9hQAVTsnCBHhwu7rkBlBX6r3b7ejEY0k5GGeyKv66v%2B6dg7mcJTrWHbtMywbedYqCQ0FPwoytmSWsL8WTtChZCKKzEF7vP6De4x2BJkkniMgSdWhbeBSLtJZR9CTHetK1xb34AYIJ37OegYIoPVbXgJ%2FqDQK%2BbfCtxQRVKQu77WzOoM6SGL7MaZwCGJVk46aImai9fmam%2BWpHG%2B0BtQPWUgZ7RIAlPq6lkECUhZQ2gqWkMYKcYMYaIc4gYCDFHYa2d1nzp3%2BJ1eCBay8IYZ0wQRKGAqvCuZ%2FUgbQPyllosq%2BXtfKIZOzmeJqRazpmmoP%2F76YfkjzV2NlXTDSBYB04SVlNQsFTbGPk1t%2FI4Jktu0XSgifO2ozFOiwd%2F0SssJDn0dn4xqk4GDTTKX73%2FwQyBLdqgJ%2BWx6AQaba3BA9CKEzjtQYIfAsiYamapq80LAamYjinlKXUkxdpIDk0puXUEYzSalfRibAeDAKpNiqQ0FTwoxuGYzRnisyTotdVTclis1LHRQCy%2FqqL8oUaQzWRxilq5Mi0IJGtMY02cGLD69vGjkj3p6pGePKI8bkBv5evq8SjjyU04vJR2cQXQwSJyoinDsUJHCQ50jrFTT7yRdbdYQMB3MYCb6uBzJ9ewhXYPAIZSXfeEQBZZ3GPN3Nbhh%2FwkvAJLXnQMdi5NYYZ5GHE400GS5rXkOZSQsdZgIbzRnF9ueLnsfQ47wHAsirITnTlkCcuWWIUhJSbpM3wWhXNHvt2xUsKKMpdBSbJnBMcihkoDqAd1Zml%2FR4yrzow1Q2A5G%2Bkzo%2FRhRxQS2lCSDRV8LlYLBOOoo1bF4jwJAwKMK1tWLHlu9i0j4Ig8qVm6wE1DxXwAwQwsaBWUg2pOOol2dHxyt6npwJEdLDDVYyRc2D0HbcbLUJQj8gPevQBUBOUHXPrsAPBERICpnYESeu2OHotpXQxRGlCCtLdIsu23MhZVEoJg8Qumj%2FUMMc34IBqTKLDTp76WzL%2FdMjCxK7MjhiGjeYAC%2Fkj%2FjY%2FRde7hpSM1xChrog6yZ7OWTuD56xBJnGFE%2BpT2ElSyCnJcwVzCjkqeNLfMEJqKW0G7OFIp0G%2B9mh50I9o8k1tpCY0xYqFNIALgIfc2me4n1bmJnRZ89oepgLPT0NTMLNZsvSCZAc3TXaNB07vail36%2FdBySis4m9%2FDR8izaLJW6bWCkVgm5T%2Bius3ZXq4xI%2BGnbveLbdRwF2mNtsrE0JjYc1AXknCOrLSu7Te%2Fr4dPYMCl5qtiHNTn%2BTPbh1jCBHH%2BdMJNhwNgs3nT%2BOhQoQ0vYif56BMG6WowAcHR3DjQolxLzyVekHj00PBAaW7IIAF1EF%2BuRIWyXjQMAs2chdpaKPNaB%2BkSezYt0%2BCA04sOg5vx8Fr7Ofa9sUv87h7SLAUFSzbetCCZ9pmyLt6l6%2FTzoA1%2FZBG9bIUVHLAbi%2FkdBFgYGyGwRQGBpkqCEg2ah9UD6EedEcEL3j4y0BQQCiExEnocA3SZboh%2Bepgd3YsOkHskZwPuQ5OoyA0fTA5AXrHcUOQF%2BzkJHIA7PwCDk1gGVmGUZSSoPhNf%2BTklauz98QofOlCIQ%2FtCD4dosHYPqtPCXB3agggQQIqQJsSkB%2Bqn0rkQ1toJjON%2FOtCIB9RYv3PqRA4C4U68ZMlZn6BdgEvi2ziU%2BTQ6NIw3ej%2BAtDwMGEZk7e2IjxUWKdAxyaw9OCwSmeADTPPleyk6UhGDNXQb%2B%2BW6Uk4q6F7%2Frg6WVTo82IoCxSIsFDrav4EPHphD3u4hR53WKVvYZUwNCCeM4PMBWzK%2BEfIthZOkuAwPo5C5jgoZgn6dUdvx5rIDmd58cXXdKNfw3l%2BwM2UjgrDJeQHhbD7HW2QDoZMCujgIUkk5Fg8VCsdyjOtnGRx8wgKRPZN5dR0zPUyfGZFVihbFRniXZFOZGKPnEQzU3AnD1KfR6weHW2XS6KbPJxUkOTZsAB9vTVp3Le1F8q5l%2BDMcLiIq78jxAImD2pGFw0VHfRatScGlK6SMu8leTmhUSMy8Uhdd6xBiH3Gdman4tjQGLboJfqz6fL2WKHTmrfsKZRYX6BTDjDldKMosaSTLdQS7oDisJNqAUhw1PfTlnacCO8vl8706Km1FROgLDmudzxg%2BEWTiArtHgLsRrAXYWdB0NmToNCJdKm0KWycZQqb%2BMw76Qy29iQ5up%2FX7oyw8QZ75kP5F6iJAJz6KCmqxz8fEa%2FxnsMYcIO%2FvEkGRuMckhr4rIeLrKaXnmIzlNLxbFspOphkcnJdnz%2FChp%2FVlpj2P7jJQmQRwGnltkTV5dbF9fE3%2FfxoSqTROgq9wFUlbuYzYcasE0ouzBo%2BdDCDzxKAfhbAZYxQiHrLzV2iVexnDX%2FQnT1fsT%2Fxuhu1ui5qIytgbGmRoQkeQooO8eJNNZsf0iALur8QxZFH0nCMnjerYQqG1pIfjyVZWxhVRznmmfLG00BcBWJE6hzQWRyFknuJnXuk8A5FRDCulwrWASSNoBtR%2BCtGdkPwYN2o7DOw%2FVGlCZPusRBFXODQdUM5zeHDIVuAJBLqbO%2Ff9Qua%2BpDqEPk230Sob9lEZ8BHiCorjVghuI0lI4JDgHGRDD%2FprQ84B1pVGkIpVUAHCG%2Biz3Bn3qm2AVrYcYWhock4jso5%2BJ7HfHVj4WMIQdGctq3psBCVVzupQOEioBGA2Bk%2BUILT7%2BVoX5mdxxA5fS42gISQVi%2FHTzrgMxu0fY6hE1ocUwwbsbWcezrY2n6S8%2F6cxXkOH4prpmPuFoikTzY7T85C4T2XYlbxLglSv2uLCgFv8Quk%2FwdesUdWPeHYIH0R729JIisN9Apdd4eB10aqwXrPt%2BSu9mA8k8n1sjMwnfsfF2j3jMUzXepSHmZ%2FBfqXvzgUNQQWOXO8YEuFBh4QTYCkOAPxywpYu1VxiDyJmKVcmJPGWk%2Fgc3Pov02StyYDahwmzw3E1gYC9wkupyWfDqDSUMpCTH5e5N8B%2F%2FlHiMuIkTNw4USHrJU67bjXGqNav6PBuQSoqTxc8avHoGmvqNtXzIaoyMIQIiiUHIM64cXieouplhNYln7qgc4wBVAYR104kO%2BCvKqsg4yIUlFNThVUAKZxZt1XA34h3TCUUiXVkZ0w8Hh2R0Z5L0b4LZvPd%2Fp1gi%2F07h8qfwHrByuSxglc9cI4QIg2oqvC%2Fqm0i7tjPLTgDhoWTAKDO2ONW5oe%2B%2FeKB9vZB8K6C25yCZ9RFVMnb6NRdRjyVK57CHHSkJBfnM2%2Fj4ODUwRkqrtBBCrDsDpt8jhZdXoy%2F1BCqw3sSGhgGGy0a5Jw6BP%2FTExoCmNFYjZl248A0osgPyGEmRA%2BfAsqPVaNAfytu0vuQJ7rk3J4kTDTR2AlCHJ5cls26opZM4w3jMULh2YXKpcqGBtuleAlOZnaZGbD6DHzMd6i2oFeJ8z9XYmalg1Szd%2FocZDc1C7Y6vcALJz2lYnTXiWEr2wawtoR4g3jvWUU2Ngjd1cewtFzEvM1NiHZPeLlIXFbBPawxNgMwwAlyNSuGF3zizVeOoC9bag1qRAQKQE%2FEZBWC2J8mnXAN2aTBboZ7HewnObE8CwROudZHmUM5oZ%2FUgd%2FJZQK8lvAm43uDRAbyW8gZ%2BZGq0EVerVGUKUSm%2FIdn8AQHdR4m7bue88WBwft9mSCeMOt1ncBwziOmJYI2ZR7ewNMPiCugmSsE4EyQ%2BQATJG6qORMGd4snEzc6B4shPIo4G1T7PgSm8PY5eUkPdF8JZ0VBtadbHXoJgnEhZQaODPj2gpODKJY5Yp4DOsLBFxWbvXN755KWylJm%2BoOd4zEL9Hpubuy2gyyfxh8oEfFutnYWdfB8PdESLWYvSqbElP9qo3u6KTmkhoacDauMNNjj0oy40DFV7Ql0aZj77xfGl7TJNHnIwgqOkenruYYNo6h724%2BzUQ7%2BvkCpZB%2BpGA562hYQiDxHVWOq0oDQl%2FQsoiY%2BcuI7iWq%2FZIBtHcXJ7kks%2Bh2fCNUPA82BzjnqktNts%2BRLdk1VSu%2BtqEn7QZCCsvEqk6FkfiOYkrsw092J8jsfIuEKypNjLxrKA9kiA19mxBD2suxQKCzwXGws7kEJvlhUiV9tArLIdZW0IORcxEzdzKmjtFhsjKy%2F44XYXdI5noQoRcvjZ1RMPACRqYg2V1%2BOwOepcOknRLLFdYgTkT5UApt%2FJhLM3jeFYprZV%2BZow2g8fP%2BU68hkKFWJj2yBbKqsrp25xkZX1DAjUw52IMYWaOhab8Kp05VrdNftqwRrymWF4OQSjbdfzmRZirK8FMJELEgER2PHjEAN9pGfLhCUiTJFbd5LBkOBMaxLr%2FA1SY9dXFz4RjzoU9ExfJCmx%2FI9FKEGT3n2cmzl2X42L3Jh%2BAbQq6sA%2BSs1kitoa4TAYgKHaoybHUDJ51oETdeI%2F9ThSmjWGkyLi5QAGWhL0BG1UsTyRGRJOldKBrYJeB8ljLJHfATWTEQBXBDnQexOHTB%2BUn44zExFE4vLytcu5NwpWrUxO%2F0ZICUGM7hGABXym0V6ZvDST0E370St9MIWQOTWngeoQHUTdCJUP04spMBMS8LSker9cReVQkULFDIZDFPrhTzBl6sed9wcZQTbL%2BBDqMyaN3RJPh%2Fanbx%2BIv%2BqgQdAa3M9Z5JmvYlh4qop%2BHo1F1W5gbOE9YKLgAnWytXElU4G8GtW47lhgFE6gaSs%2Bgs37sFvi0PPVvA5dnCBgILTwoKd%2F%2BDoL9F6inlM7H4rOTzD79KJgKlZO%2FZgt22UsKhrAaXU5ZcLrAglTVKJEmNJvORGN1vqrcfSMizfpsgbIe9zno%2BgBoKVXgIL%2FVI8dB1O5o%2FR3Suez%2FgD7M781ShjKpIIORM%2FnxG%2BjjhhgPwsn2IoXsPGPqYHXA63zJ07M2GPEykQwJBYLK808qYxuIew4frk52nhCsnCYmXiR6CuapvE1IwRB4%2FQftDbEn%2BAucIr1oxrLabRj9q4ae0%2BfXkHnteAJwXRbVkR0mctVSwEbqhJiMSZUp9DNbEDMmjX22m3ABpkrPQQTP3S1sib5pD2VRKRd%2BeNAjLYyT0hGrdjWJZy24OYXRoWQAIhGBZRxuBFMjjZQhpgrWo8SiFYbojcHO8V5DyscJpLTHyx9Fimassyo5U6WNtquUMYgccaHY5amgR3PQzq3ToNM5ABnoB9kuxsebqmYZm0R9qxJbFXCQ1UPyFIbxoUraTJFDpCk0Wk9GaYJKz%2F6oHwEP0Q14lMtlddQsOAU9zlYdMVHiT7RQP3XCmWYDcHCGbVRHGnHuwzScA0BaSBOGkz3lM8CArjrBsyEoV6Ys4qgDK3ykQQPZ3hCRGNXQTNNXbEb6tDiTDLKOyMzRhCFT%2BmAUmiYbV3YQVqFVp9dorv%2BTsLeCykS2b5yyu8AV7IS9cxcL8z4Kfwp%2BxJyYLv1OsxQCZwTB4a8BZ%2F5EdxTBJthApqyfd9u3ifr%2FWILTqq5VqgwMT9SOxbSGWLQJUUWCVi4k9tho9nEsbUh7U6NUsLmkYFXOhZ0kmamaJLRNJzSj%2Fqn4Mso6zb6iLLBXoaZ6AqeWCjHQm2lztnejYYM2eubnpBdKVLORZhudH3JF1waBJKA9%2BW8EhMj3Kzf0L4vi4k6RoHh3Z5YgmSZmk6ns4fjScjAoL8GoOECgqgYEBYUGFVO4FUv4%2FYtowhEmTs0vrvlD%2FCrisnoBNDAcUi%2FteY7OctFlmARQzjOItrrlKuPO6E2Ox93L4O%2F4DcgV%2FdZ7qR3VBwVQxP1GCieA4RIpweYJ5FoYrHxqRBdJjnqbsikA2Ictbb8vE1GYIo9dacK0REgDX4smy6GAkxlH1yCGGsk%2BtgiDhNKuKu3yNrMdxafmKTF632F8Vx4BNK57GvlFisrkjN9WDAtjsWA0ENT2e2nETUb%2Fn7qwhvGnrHuf5bX6Vh%2Fn3xffU3PeHdR%2BFA92i6ufT3AlyAREoNDh6chiMWTvjKjHDeRhOa9YkOQRq1vQXEMppAQVwHCuIcV2g5rBn6GmZZpTR7vnSD6ZmhdSl176gqKTXu5E%2BYbfL0adwNtHP7dT7t7b46DVZIkzaRJOM%2BS6KcrzYVg%2BT3wSRFRQashjfU18NutrKa%2F7PXbtuJvpIjbgPeqd%2BpjmRw6YKpnANFSQcpzTZgpSNJ6J7uiagAbir%2F8tNXJ%2FOsOnRh6iuIexxrmkIneAgz8QoLmiaJ8sLQrELVK2yn3wOHp57BAZJhDZjTBzyoRAuuZ4eoxHruY1pSb7qq79cIeAdOwin4GdgMeIMHeG%2BFZWYaiUQQyC5b50zKjYw97dFjAeY2I4Bnl105Iku1y0lMA1ZHolLx19uZnRdILcXKlZGQx%2FGdEqSsMRU1BIrFqRcV1qQOOHyxOLXEGcbRtAEsuAC2V4K3p5mFJ22IDWaEkk9ttf5Izb2LkD1MnrSwztXmmD%2FQi%2FEmVEFBfiKGmftsPwVaIoZanlKndMZsIBOskFYpDOq3QUs9aSbAAtL5Dbokus2G4%2FasthNMK5UQKCOhU97oaOYNGsTah%2BjfCKsZnTRn5TbhFX8ghg8CBYt%2FBjeYYYUrtUZ5jVij%2Fop7V5SsbA4mYTOwZ46hqdpbB6Qvq3AS2HHNkC15pTDIcDNGsMPXaBidXYPHc6PJAkRh29Vx8KcgX46LoUQBhRM%2B3SW6Opll%2FwgxxsPgKJKzr5QCmwkUxNbeg6Wj34SUnEzOemSuvS2OetRCO8Tyy%2BQbSKVJcqkia%2BGvDefFwMOmgnD7h81TUtMn%2BmRpyJJ349HhAnoWFTejhpYTL9G8N2nVg1qkXBeoS9Nw2fB27t7trm7d%2FQK7Cr4uoCeOQ7%2F8JfKT77KiDzLImESHw%2F0wf73QeHu74hxv7uihi4fTX%2BXEwAyQG3264dwv17aJ5N335Vt9sdrAXhPOAv8JFvzqyYXwfx8WYJaef1gMl98JRFyl5Mv5Uo%2FoVH5ww5OzLFsiTPDns7fS6EURSSWd%2F92BxMYQ8sBaH%2Bj%2BwthQPdVgDGpTfi%2BJQIWMD8xKqULliRH01rTeyF8x8q%2FGBEEEBrAJMPf25UQwi0b8tmqRXY7kIvNkzrkvRWLnxoGYEJsz8u4oOyMp8cHyaybb1HdMCaLApUE%2B%2F7xLIZGP6H9xuSEXp1zLIdjk5nBaMuV%2FyTDRRP8Y2ww5RO6d2D94o%2B6ucWIqUAvgHIHXhZsmDhjVLczmZ3ca0Cb3PpKwt2UtHVQ0BgFJsqqTsnzZPlKahRUkEu4qmkJt%2Bkqdae76ViWe3STan69yaF9%2BfESD2lcQshLHWVu4ovItXxO69bqC5p1nZLvI8NdQB9s9UNaJGlQ5mG947ipdDA0eTIw%2FA1zEdjWquIsQXXGIVEH0thC5M%2BW9pZe7IhAVnPJkYCCXN5a32HjN6nsvokEqRS44tGIs7s2LVTvcrHAF%2BRVmI8L4HUYk4x%2B67AxSMJKqCg8zrGOgvK9kNMdDrNiUtSWuHFpC8%2Fp5qIQrEo%2FH%2B1l%2F0cAwQ2nKmpWxKcMIuHY44Y6DlkpO48tRuUGBWT0FyHwSKO72Ud%2BtJUfdaZ4CWNijzZtlRa8%2BCkmO%2FEwHYfPZFU%2FhzjFWH7vnzHRMo%2BaF9u8qHSAiEkA2HjoNQPEwHsDKOt6hOoK3Ce%2F%2B%2F9boMWDa44I6FrQhdgS7OnNaSzwxWKZMcyHi6LN4WC6sSj0qm2PSOGBTvDs%2FGWJS6SwEN%2FULwpb4LQo9fYjUfSXRwZkynUazlSpvX9e%2BG2zor8l%2BYaMxSEomDdLHGcD6YVQPegTaA74H8%2BV4WvJkFUrjMLGLlvSZQWvi8%2FQA7yzQ8GPno%2F%2F5SJHRP%2FOqKObPCo81s%2F%2B6WgLqykYpGAgQZhVDEBPXWgU%2FWzFZjKUhSFInufPRiMAUULC6T11yL45ZrRoB4DzOyJShKXaAJIBS9wzLYIoCEcJKQW8GVCx4fihqJ6mshBUXSw3wWVj3grrHQlGNGhIDNNzsxQ3M%2BGWn6ASobIWC%2BLbYOC6UpahVO13Zs2zOzZC8z7FmA05JhUGyBsF4tsG0drcggIFzgg%2Fkpf3%2BCnAXKiMgIE8Jk%2FMhpkc8DUJEUzDSnWlQFme3d0sHZDrg7LavtsEX3cHwjCYA17pMTfx8Ajw9hHscN67hyo%2BRJQ4458RmPywXykkVcW688oVUrQhahpPRvTWPnuI0B%2BSkQu7dCyvLRyFYlC1LG1gRCIvn3rwQeINzZQC2KXq31FaR9UmVV2QeGVqBHjmE%2BVMd3b1fhCynD0pQNhCG6%2FWCDbKPyE7NRQzL3BzQAJ0g09aUzcQA6mUp9iZFK6Sbp%2FYbHjo%2B%2B7%2FWj8S4YNa%2BZdqAw1hDrKWFXv9%2BzaXpf8ZTDSbiqsxnwN%2FCzK5tPkOr4tRh2kY3Bn9JtalbIOI4b3F7F1vPQMfoDcdxMS8CW9m%2FNCW%2FHILTUVWQIPiD0j1A6bo8vsv6P1hCESl2abrSJWDrq5sSzUpwoxaCU9FtJyYH4QFMxDBpkkBR6kn0LMPO%2B5EJ7Z6bCiRoPedRZ%2FP0SSdii7ZnPAtVwwHUidcdyspwncz5uq6vvm4IEDbJVLUFCn%2FLvIHfooUBTkFO130FC7CmmcrKdgDJcid9mvVzsDSibOoXtIf9k6ABle3PmIxejodc4aob0QKS432srrCMndbfD454q52V01G4q913mC5HOsTzWF4h2No1av1VbcUgWAqyoZl%2B11PoFYnNv2HwAODeNRkHj%2B8SF1fcvVBu6MrehHAZK1Gm69ICcTKizykHgGFx7QdowTVAsYEF2tVc0Z6wLryz2FI1sc5By2znJAAmINndoJiB4sfPdPrTC8RnkW7KRCwxC6YvXg5ahMlQuMpoCSXjOlBy0Kij%2BbsCYPbGp8BdCBiLmLSAkEQRaieWo1SYvZIKJGj9Ur%2FeWHjiB7SOVdqMAVmpBvfRiebsFjger7DC%2B8kRFGtNrTrnnGD2GAJb8rQCWkUPYHhwXsjNBSkE6lGWUj5QNhK0DMNM2l%2BkXRZ0KLZaGsFSIdQz%2FHXDxf3%2FTE30%2BDgBKWGWdxElyLccJfEpjsnszECNoDGZpdwdRgCixeg9L4EPhH%2BRptvRMVRaahu4cySjS3P5wxAUCPkmn%2BrhyASpmiTaiDeggaIxYBmtLZDDhiWIJaBgzfCsAGUF1Q1SFZYyXDt9skCaxJsxK2Ms65dmdp5WAZyxik%2FzbrTQk5KmgxCg%2Ff45L0jywebOWUYFJQAJia7XzCV0x89rpp%2Ff3AVWhSPyTanqmik2SkD8A3Ml4NhIGLAjBXtPShwKYfi2eXtrDuKLk4QlSyTw1ftXgwqA2jUuopDl%2B5tfUWZNwBpEPXghzbBggYCw%2Fdhy0ntds2yeHCDKkF%2FYxQjNIL%2FF%2F37jLPHCKBO9ibwYCmuxImIo0ijV2Wbg3kSN2psoe8IsABv3RNFaF9uMyCtCYtqcD%2BqNOhwMlfARQUdJ2tUX%2BMNJqOwIciWalZsmEjt07tfa8ma4cji9sqz%2BQ9hWfmMoKEbIHPOQORbhQRHIsrTYlnVTNvcq1imqmmPDdVDkJgRcTgB8Sb6epCQVmFZe%2BjGDiNJQLWnfx%2BdrTKYjm0G8yH0ZAGMWzEJhUEQ4Maimgf%2Fbkvo8PLVBsZl152y5S8%2BHRDfZIMCbYZ1WDp4yrdchOJw8k6R%2B%2F2pHmydK4NIK2PHdFPHtoLmHxRDwLFb7eB%2BM4zNZcB9NrAgjVyzLM7xyYSY13ykWfIEEd2n5%2FiYp3ZdrCf7fL%2Ben%2BsIJu2W7E30MrAgZBD1rAAbZHPgeAMtKCg3NpSpYQUDWJu9bT3V7tOKv%2BNRiJc8JAKqqgCA%2FPNRBR7ChpiEulyQApMK1AyqcWnpSOmYh6yLiWkGJ2mklCSPIqN7UypWj3dGi5MvsHQ87MrB4VFgypJaFriaHivwcHIpmyi5LhNqtem4q0n8awM19Qk8BOS0EsqGscuuydYsIGsbT5GHnERUiMpKJl4ON7qjB4fEqlGN%2FhCky89232UQCiaeWpDYCJINXjT6xl4Gc7DxRCtgV0i1ma4RgWLsNtnEBRQFqZggCLiuyEydmFd7WlogpkCw5G1x4ft2psm3KAREwVwr1Gzl6RT7FDAqpVal34ewVm3VH4qn5mjGj%2BbYL1NgfLNeXDwtmYSpwzbruDKpTjOdgiIHDVQSb5%2FzBgSMbHLkxWWgghIh9QTFSDILixVwg0Eg1puooBiHAt7DzwJ7m8i8%2Fi%2BjHvKf0QDnnHVkVTIqMvIQImOrzCJwhSR7qYB5gSwL6aWL9hERHCZc4G2%2BJrpgHNB8eCCmcIWIQ6rSdyPCyftXkDlErUkHafHRlkOIjxGbAktz75bnh50dU7YHk%2BMz7wwstg6RFZb%2BTZuSOx1qqP5C66c0mptQmzIC2dlpte7vZrauAMm%2F7RfBYkGtXWGiaWTtwvAQiq2oD4YixPLXE2khB2FRaNRDTk%2B9sZ6K74Ia9VntCpN4BhJGJMT4Z5c5FhSepRCRWmBXqx%2BwhVZC4me4saDs2iNqXMuCl6iAZflH8fscC1sTsy4PHeC%2BXYuqMBMUun5YezKbRKmEPwuK%2BCLzijPEQgfhahQswBBLfg%2FGBgBiI4QwAqzJkkyYAWtjzSg2ILgMAgqxYfwERRo3zruBL9WOryUArSD8sQOcD7fvIODJxKFS615KFPsb68USBEPPj1orNzFY2xoTtNBVTyzBhPbhFH0PI5AtlJBl2aSgNPYzxYLw7XTDBDinmVoENwiGzmngrMo8OmnRP0Z0i0Zrln9DDFcnmOoBZjABaQIbPOJYZGqX%2BRCMlDDbElcjaROLDoualmUIQ88Kekk3iM4OQrADcxi3rJguS4MOIBIgKgXrjd1WkbCdqxJk%2F4efRIFsavZA7KvvJQqp3Iid5Z0NFc5aiMRzGN3vrpBzaMy4JYde3wr96PjN90AYOIbyp6T4zj8LoE66OGcX1Ef4Z3KoWLAUF4BTg7ug%2FAbkG5UNQXAMkQezujSHeir2uTThgd3gpyzDrbnEdDRH2W7U6PeRvBX1ZFMP5RM%2BZu6UUZZD8hDPHldVWntTCNk7To8IeOW9yn2wx0gmurwqC60AOde4r3ETi5pVMSDK8wxhoGAoEX9NLWHIR33VbrbMveii2jAJlrxwytTHbWNu8Y4N8vCCyZjAX%2FpcsfwXbLze2%2BD%2Bu33OGBoJyAAL3jn3RuEcdp5If8O%2Ba4NKWvxOTyDltG0IWoHhwVGe7dKkCWFT%2B%2Btm%2BhaBCikRUUMrMhYKZJKYoVuv%2FbsJzO8DwfVIInQq3g3BYypiz8baogH3r3GwqCwFtZnz4xMjAVOYnyOi5HWbFA8n0qz1OjSpHWFzpQOpvkNETZBGpxN8ybhtqV%2FDMUxd9uFZmBfKXMCn%2FSqkWJyKPnT6lq%2B4zBZni6fYRByJn6OK%2BOgPBGRAJluwGSk4wxjOOzyce%2FPKODwRlsgrVkdcsEiYrqYdXo0Er2GXi2GQZd0tNJT6c9pK1EEJG1zgDJBoTVuCXGAU8BKTvCO%2FcEQ1Wjk3Zzuy90JX4m3O5IlxVFhYkSUwuQB2up7jhvkm%2BbddRQu5F9s0XftGEJ9JSuSk%2BZachCbdU45fEqbugzTIUokwoAKvpUQF%2FCvLbWW5BNQFqFkJg2f30E%2F48StNe5QwBg8zz3YAJ82FZoXBxXSv4QDooDo79NixyglO9AembuBcx5Re3CwOKTHebOPhkmFC7wNaWtoBhFuV4AkEuJ0J%2B1pT0tLkvFVZaNzfhs%2FKd3%2BA9YsImlO4XK4vpCo%2FelHQi%2F9gkFg07xxnuXLt21unCIpDV%2BbbRxb7FC6nWYTsMFF8%2B1LUg4JFjVt3vqbuhHmDKbgQ4e%2BRGizRiO8ky05LQGMdL2IKLSNar0kNG7lHJMaXr5mLdG3nykgj6vB%2FKVijd1ARWkFEf3yiUw1v%2FWaQivVUpIDdSNrrKbjO5NPnxz6qTTGgYg03HgPhDrCFyYZTi3XQw3HXCva39mpLNFtz8AiEhxAJHpWX13gCTAwgm9YTvMeiqetdNQv6IU0hH0G%2BZManTqDLPjyrOse7WiiwOJCG%2BJ0pZYULhN8NILulmYYvmVcV2MjAfA39sGKqGdjpiPo86fecg65UPyXDIAOyOkCx5NQsLeD4gGVjTVDwOHWkbbBW0GeNjDkcSOn2Nq4cEssP54t9D749A7M1AIOBl0Fi0sSO5v3P7LCBrM6ZwFY6kp2FX6AcbGUdybnfChHPyu6WlRZ2Fwv9YM0RMI7kISRgR8HpQSJJOyTfXj%2F6gQKuihPtiUtlCQVPohUgzfezTg8o1b3n9pNZeco1QucaoXe40Fa5JYhqdTspFmxGtW9h5ezLFZs3j%2FN46f%2BS2rjYNC2JySXrnSAFhvAkz9a5L3pza8eYKHNoPrvBRESpxYPJdKVUxBE39nJ1chrAFpy4MMkf0qKgYALctGg1DQI1kIymyeS2AJNT4X240d3IFQb%2F0jQbaHJ2YRK8A%2Bls6WMhWmpCXYG5jqapGs5%2FeOJErxi2%2F2KWVHiPellTgh%2FfNl%2F2KYPKb7DUcAg%2BmCOPQFCiU9Mq%2FWLcU1xxC8aLePFZZlE%2BPCLzf7ey46INWRw2kcXySR9FDgByXzfxiNKwDFbUSMMhALPFSedyjEVM5442GZ4hTrsAEvZxIieSHGSgkwFh%2FnFNdrrFD4tBH4Il7fW6ur4J8Xaz7RW9jgtuPEXQsYk7gcMs2neu3zJwTyUerHKSh1iTBkj2YJh1SSOZL5pLuQbFFAvyO4k1Hxg2h99MTC6cTUkbONQIAnEfGsGkNFWRbuRyyaEZInM5pij73EA9rPIUfU4XoqQpHT9THZkW%2BoKFLvpyvTBMM69tN1Ydwv1LIEhHsC%2BueVG%2Bw%2BkyCPsvV3erRikcscHjZCkccx6VrBkBRusTDDd8847GA7p2Ucy0y0HdSRN6YIBciYa4vuXcAZbQAuSEmzw%2BH%2FAuOx%2BaH%2BtBL88H57D0MsqyiZxhOEQkF%2F8DR1d2hSPMj%2FsNOa5rxcUnBgH8ictv2J%2Bcb4BA4v3MCShdZ2vtK30vAwkobnEWh7rsSyhmos3WC93Gn9C4nnAd%2FPjMMtQfyDNZsOPd6XcAsnBE%2FmRHtHEyJMzJfZFLE9OvQa0i9kUmToJ0ZxknTgdl%2FXPV8xoh0K7wNHHsnBdvFH3sv52lU7UFteseLG%2FVanIvcwycVA7%2BBE1Ulyb20BvwUWZcMTKhaCcmY3ROpvonVMV4N7yBXTL7IDtHzQ4CCcqF66LjF3xUqgErKzolLyCG6Kb7irP%2FMVTCCwGRxfrPGpMMGvPLgJ881PHMNMIO09T5ig7AzZTX%2F5PLlwnJLDAPfuHynSGhV4tPqR3gJ4kg4c06c%2FF1AcjGytKm2Yb5jwMotF7vro4YDLWlnMIpmPg36NgAZsGA0W1spfLSue4xxat0Gdwd0lqDBOgIaMANykwwDKejt5YaNtJYIkrSgu0KjIg0pznY0SCd1qlC6R19g97UrWDoYJGlrvCE05J%2F5wkjpkre727p5PTRX5FGrSBIfJqhJE%2FIS876PaHFkx9pGTH3oaY3jJRvLX9Iy3Edoar7cFvJqyUlOhAEiOSAyYgVEGkzHdug%2BoRHIEOXAExMiTSKU9A6nmRC8mp8iYhwWdP2U%2F5EkFAdPrZw03YA3gSyNUtMZeh7dDCu8pF5x0VORCTgKp07ehy7NZqKTpIC4UJJ89lnboyAfy5OyXzXtuDRbtAFjZRSyGFTpFrXwkpjSLIQIG3N0Vj4BtzK3wdlkBJrO18MNsgseR4BysJilI0wI6ZahLhBFA0XBmV8d4LUzEcNVb0xbLjLTETYN8OEVqNxkt10W614dd1FlFFVTIgB7%2FBQQp1sWlNolpIu4ekxUTBV7NmxOFKEBmmN%2BnA7pvF78%2FRII5ZHA09OAiE%2F66MF6HQ%2BqVEJCHxwymukkNvzqHEh52dULPbVasfQMgTDyBZzx4007YiKdBuUauQOt27Gmy8ISclPmEUCIcuLbkb1mzQSqIa3iE0PJh7UMYQbkpe%2BhXjTJKdldyt2mVPwywoODGJtBV1lJTgMsuSQBlDMwhEKIfrvsxGQjHPCEfNfMAY2oxvyKcKPUbQySkKG6tj9AQyEW3Q5rpaDJ5Sns9ScLKeizPRbvWYAw4bXkrZdmB7CQopCH8NAmqbuciZChHN8lVGaDbCnmddnqO1PQ4ieMYfcSiBE5zzMz%2BJV%2F4eyzrzTEShvqSGzgWimkNxLvUj86iAwcZuIkqdB0VaIB7wncLRmzHkiUQpPBIXbDDLHBlq7vp9xwuC9AiNkIptAYlG7Biyuk8ILdynuUM1cHWJgeB%2BK3wBP%2FineogxkvBNNQ4AkW0hvpBOQGFfeptF2YTR75MexYDUy7Q%2F9uocGsx41O4IZhViw%2F2FvAEuGO5g2kyXBUijAggWM08bRhXg5ijgMwDJy40QeY%2FcQpUDZiIzmvskQpO5G1zyGZA8WByjIQU4jRoFJt56behxtHUUE%2Fom7Rj2psYXGmq3llVOCgGYKNMo4pzwntITtapDqjvQtqpjaJwjHmDzSVGLxMt12gEXAdLi%2FcaHSM3FPRGRf7dB7YC%2BcD2ho6oL2zGDCkjlf%2FDFoQVl8GS%2F56wur3rdV6ggtzZW60MRB3g%2BU1W8o8cvqIpMkctiGVMzXUFI7FacFLrgtdz4mTEr4aRAaQ2AFQaNeG7GX0yOJgMRYFziXdJf24kg%2FgBQIZMG%2FYcPEllRTVNoDYR6oSJ8wQNLuihfw81UpiKPm714bZX1KYjcXJdfclCUOOpvTxr9AAJevTY4HK%2FG7F3mUc3GOAKqh60zM0v34v%2BELyhJZqhkaMA8UMMOU90f8RKEJFj7EqepBVwsRiLbwMo1J2zrE2UYJnsgIAscDmjPjnzI8a719Wxp757wqmSJBjXowhc46QN4RwKIxqEE6E5218OeK7RfcpGjWG1jD7qND%2B%2FGTk6M56Ig4yMsU6LUW1EWE%2BfIYycVV1thldSlbP6ltdC01y3KUfkobkt2q01YYMmxpKRvh1Z48uNKzP%2FIoRIZ%2FF6buOymSnW8gICitpJjKWBscSb9JJKaWkvEkqinAJ2kowKoqkqZftRqfRQlLtKoqvTRDi2vg%2FRrPD%2Fd3a09J8JhGZlEkOM6znTsoMCsuvTmywxTCDhw5dd0GJOHCMPbsj3QLkTE3MInsZsimDQ3HkvthT7U9VA4s6G07sID0FW4SHJmRGwCl%2BMu4xf0ezqeXD2PtPDnwMPo86sbwDV%2B9PWcgFcARUVYm3hrFQrHcgMElFGbSM2A1zUYA3baWfheJp2AINmTJLuoyYD%2FOwA4a6V0ChBN97E8YtDBerUECv0u0TlxR5yhJCXvJxgyM73Bb6pyq0jTFJDZ4p1Am1SA6sh8nADd1hAcGBMfq4d%2FUfwnmBqe0Jun1n1LzrgKuZMAnxA3NtCN7Klf4BH%2B14B7ibBmgt0TGUafVzI4uKlpF7v8NmgNjg90D6QE3tbx8AjSAC%2BOA1YJvclyPKgT27QpIEgVYpbPYGBsnyCNrGz9XUsCHkW1QAHgL2STZk12QGqmvAB0NFteERkvBIH7INDsNW9KKaAYyDMdBEMzJiWaJHZALqDxQDWRntumSDPcplyFiI1oDpT8wbwe01AHhW6%2BvAUUBoGhY3CT2tgwehdPqU%2F4Q7ZLYvhRl%2FogOvR9O2%2BwkkPKW5vCTjD2fHRYXONCoIl4Jh1bZY0ZE1O94mMGn%2FdFSWBWzQ%2FVYk%2BGezi46RgiDv3EshoTmMSlioUK6MQEN8qeyK6FRninyX8ZPeUWjjbMJChn0n%2FyJvrq5bh5UcCAcBYSafTFg7p0jDgrXo2QWLb3WpSOET%2FHh4oSadBTvyDo10IufLzxiMLAnbZ1vcUmj3w7BQuIXjEZXifwukVxrGa9j%2BDXfpi12m1RbzYLg9J2wFergEwOxFyD0%2FJstNK06ZN2XdZSGWxcJODpQHOq4iKqjqkJUmPu1VczL5xTGUfCgLEYyNBCCbMBFT%2FcUP6pE%2FmujnHsSDeWxMbhrNilS5MyYR0nJyzanWXBeVcEQrRIhQeJA6Xt4f2eQESNeLwmC10WJVHqwx8SSyrtAAjpGjidcj1E2FYN0LObUcFQhafUKTiGmHWRHGsFCB%2BHEXgrzJEB5bp0QiF8ZHh11nFX8AboTD0PS4O1LqF8XBks2MpjsQnwKHF6HgaKCVLJtcr0XjqFMRGfKv8tmmykhLRzu%2BvqQ02%2BKpJBjaLt9ye1Ab%2BBbEBhy4EVdIJDrL2naV0o4wU8YZ2Lq04FG1mWCKC%2BUwkXOoAjneU%2FxHplMQo2cXUlrVNqJYczgYlaOEczVCs%2FOCgkyvLmTmdaBJc1iBLuKwmr6qtRnhowngsDxhzKFAi02tf8bmET8BO27ovJKF1plJwm3b0JpMh38%2BxsrXXg7U74QUM8ZCIMOpXujHntKdaRtsgyEZl5MClMVMMMZkZLNxH9%2Bb8fH6%2Bb8Lev30A9TuEVj9CqAdmwAAHBPbfOBFEATAPZ2CS0OH1Pj%2F0Q7PFUcC8hDrxESWdfgFRm%2B7vvWbkEppHB4T%2F1ApWnlTIqQwjcPl0VgS1yHSmD0OdsCVST8CQVwuiew1Y%2Bg3QGFjNMzwRB2DSsAk26cmA8lp2wIU4p93AUBiUHFGOxOajAqD7Gm6NezNDjYzwLOaSXRBYcWipTSONHjUDXCY4mMI8XoVCR%2FRrs%2FJLKXgEx%2BqkmeDlFOD1%2FyTQNDClRuiUyKYCllfMiQiyFkmuTz2vLsBNyRW%2Bxz%2B5FElFxWB28VjYIGZ0Yd%2B5wIjkcoMaggxswbT0pCmckRAErbRlIlcOGdBo4djTNO8FAgQ%2BlT6vPS60BwTRSUAM3ddkEAZiwtEyArrkiDRnS7LJ%2B2hwbzd2YDQagSgACpsovmjil5wfPuXq3GuH0CyE7FK3M4FgRaFoIkaodORrPx1%2BJpI9psyNYIFuJogZa0%2F1AhOWdlHQxdAgbwacsHqPZo8u%2FngAH2GmaTdhYnBfSDbBfh8CHq6Bx5bttP2%2BRdM%2BMAaYaZ0Y%2FADkbNCZuAyAVQa2OcXOeICmDn9Q%2FeFkDeFQg5MgHEDXq%2FtVjj%2Bjtd26nhaaolWxs1ixSUgOBwrDhRIGOLyOVk2%2FBc0UxvseQCO2pQ2i%2BKrfhu%2FWeBovNb5dJxQtJRUDv2mCwYVpNl2efQM9xQHnK0JwLYt%2FU0Wf%2BphiA4uw8G91slC832pmOTCAoZXohg1fewCZqLBhkOUBofBWpMPsqg7XEXgPfAlDo2U5WXjtFdS87PIqClCK5nW6adCeXPkUiTGx0emOIDQqw1yFYGHEVx20xKjJVYe0O8iLmnQr3FA9nSIQilUKtJ4ZAdcTm7%2BExseJauyqo30hs%2B1qSW211A1SFAOUgDlCGq7eTIcMAeyZkV1SQJ4j%2Fe1Smbq4HcjqgFbLAGLyKxlMDMgZavK5NAYH19Olz3la%2FQCTiVelFnU6O%2FGCvykqS%2FwZJDhKN9gBtSOp%2F1SP5VRgJcoVj%2Bkmf2wBgv4gjrgARBWiURYx8xENV3bEVUAAWWD3dYDKAIWk5opaCFCMR5ZjJExiCAw7gYiSZ2rkyTce4eNMY3lfGn%2B8p6%2BvBckGlKEXnA6Eota69OxDO9oOsJoy28BXOR0UoXNRaJD5ceKdlWMJlOFzDdZNpc05tkMGQtqeNF2lttZqNco1VtwXgRstLSQ6tSPChgqtGV5h2DcDReIQadaNRR6AsAYKL5gSFsCJMgfsaZ7DpKh8mg8Wz8V7H%2BgDnLuMxaWEIUPevIbClgap4dqmVWSrPgVYCzAoZHIa5z2Ocx1D%2FGvDOEqMOKLrMefWIbSWHZ6jbgA8qVBhYNHpx0P%2BjAgN5TB3haSifDcApp6yymEi6Ij%2FGsEpDYUgcHATJUYDUAmC1SCkJ4cuZXSAP2DEpQsGUjQmKJfJOvlC2x%2FpChkOyLW7KEoMYc5FDC4v2FGqSoRWiLsbPCiyg1U5yiHZVm1XLkHMMZL11%2Fyxyw0UnGig3MFdZklN5FI%2FqiT65T%2BjOXOdO7XbgWurOAZR6Cv9uu1cm5LjkXX4xi6mWn5r5NjBS0gTliHhMZI2WNqSiSphEtiCAwnafS11JhseDGHYQ5%2BbqWiAYiAv6Jsf79%2FVUs4cIl%2Bn6%2BWOjcgB%2F2l5TreoAV2717JzZbQIR0W1cl%2FdEqCy5kJ3ZSIHuU0vBoHooEpiHeQWVkkkOqRX27eD1FWw4BfO9CJDdKoSogQi3hAAwsPRFrN5RbX7bqLdBJ9JYMohWrgJKHSjVl1sy2xAG0E3sNyO0oCbSGOxCNBRRXTXenYKuwAoDLfnDcQaCwehUOIDiHAu5m5hMpKeKM4sIo3vxACakIxKoH2YWF2QM84e6F5C5hJU4g8uxuFOlAYnqtwxmHyNEawLW%2FPhoawJDrGAP0JYWHgAVUByo%2FbGdiv2T2EMg8gsS14%2FrAdzlOYazFE7w4OzxeKiWdm3nSOnQRRKXSlVo8HEAbBfyJMKqoq%2BSCcTSx5NDtbFwNlh8VhjGGDu7JG5%2FTAGAvniQSSUog0pNzTim8Owc6QTuSKSTXlQqwV3eiEnklS3LeSXYPXGK2VgeZBqNcHG6tZHvA3vTINhV0ELuQdp3t1y9%2BogD8Kk%2FW7QoRN1UWPqM4%2BxdygkFDPLoTaumKReKiLWoPHOfY54m3qPx4c%2B4pgY3MRKKbljG8w4wvz8pxk3AqKsy4GMAkAtmRjRMsCxbb4Q2Ds0Ia9ci8cMT6DmsJG00XaHCIS%2Bo3F8YVVeikw13w%2BOEDaCYYhC0ZE54kA4jpjruBr5STWeqQG6M74HHL6TZ3lXrd99ZX%2B%2B7LhNatQaZosuxEf5yRA15S9gPeHskBIq3Gcw81AGb9%2FO53DYi%2F5CsQ51EmEh8Rkg4vOciClpy4d04eYsfr6fyQkBmtD%2BP8sNh6e%2BXYHJXT%2FlkXxT4KXU5F2sGxYyzfniMMQkb9OjDN2C8tRRgTyL7GwozH14PrEUZc6oz05Emne3Ts5EG7WolDmU8OB1LDG3VrpQxp%2BpT0KYV5dGtknU64JhabdqcVQbGZiAxQAnvN1u70y1AnmvOSPgLI6uB4AuDGhmAu3ATkJSw7OtS%2F2ToPjqkaq62%2F7WFG8advGlRRqxB9diP07JrXowKR9tpRa%2BjGJ91zxNTT1h8I2PcSfoUPtd7NejVoH03EUcqSBuFZPkMZhegHyo2ZAITovmm3zAIdGFWxoNNORiMRShgwdYwFzkPw5PA4a5MIIQpmq%2Bnsp3YMuXt%2FGkXxLx%2FP6%2BZJS0lFyz4MunC3eWSGE8xlCQrKvhKUPXr0hjpAN9ZK4PfEDrPMfMbGNWcHDzjA7ngMxTPnT7GMHar%2BgMQQ3NwHCv4zH4BIMYvzsdiERi6gebRmerTsVwZJTRsL8dkZgxgRxmpbgRcud%2BYlCIRpPwHShlUSwuipZnx9QCsEWziVazdDeKSYU5CF7UVPAhLer3CgJOQXl%2Fzh575R5rsrmRnKAzq4POFdgbYBuEviM4%2BLVC15ssLNFghbTtHWerS1hDt5s4qkLUha%2FqpZXhWh1C6lTQAqCNQnaDjS7UGFBC6wTu8yFnKJnExCnAs3Ok9yj5KpfZESQ4lTy5pTGTnkAUpxI%2ByjEldJfSo4y0QhG4i4IwkRFGcjWY8%2BEzgYYJUK7BXQksLxAww%2FYYWBMhJILB9e8ePEJ4OP7z%2B4%2FwOQDl64iOYDp26DaONPxpKtBxq%2FaTzRGarm3VkPYTLJKx6Z%2FMw2YbBGseJhPMwhhNswrIkyvV2BYzrvZbxLpKwcWJhYmFtVZ%2BlPEq91FzVp1HlQY1bZVLqeNR9SAUn6n0E28k%2FUuGkNpP1DBI5ch%2FEehZfjUQ9aE41NhETExoPT2gGQz0IhWJbEOvTQ4wgcXCHHFBhewYUiFHuhRSAUVmEHeCRQHQkXGFwkAgyzREJCVN7TRnTon36Zw3tPhx4EALwNdwDv%2BJ41YSP4B2CQqz0EFgARZ4ESgBHQgROwAVn9GTI%2BHYexTUevLUeta4%2FDqKrbMVS%2BYqb8hUwYCrlgKtmAq1YCrFgKrd4qpXiqZcKn1oqdWipjYKpWwVPVYqW6xUpVipKqFR3QKjagVEtAqHpxUMTitsnFaJOKx2cVhswq35RVpyiq9lFVNIKnOQVMkgqtYxVNxiqQjFS7GKlSIVIsQqPIhUWwioigFQ%2B%2BKkN8VHr49HDw9Ebo9EDo9DTo9Crg9BDg9%2FWx7gWx7YWwlobYrOGxWPNisAaAHEyALpkAVDIAeWAArsABVXACYuAD5cAF6wAKFQAQqgAbVAAsoAAlQAUaYAfkwAvogBWQACOgAD9AAHSAAKT4GUdMiOvFngBTwCn2AZ7Dv6B6k%2F90B8%2ByRnkV144AIBoAMTQATGgAjNAA4YABgwABZgB%2FmQCwyAVlwCguASlwCEuAQFwB4uAMlwBYuAJlQAUVAAhUD2KgdpUDaJgaRMDFJgX5MC1JgWJEAokQCWRAHxEAWkQBMRADpEAMkQAYROAEecC484DRpwBDTnwNOdw05tjTmiNOYwtswhYFwLA7BYG4LA2BYGOLAwRYFuLAsxYFQJAohIEyJAMwkAwiQC0JAJgkAeiQBkJAFokAPCQA0JABwcD4Dgc4cDdDgaYcDIDgYgUC6CgWgUClCgUYUAVBQBOFAEYMALgwAgDA9QYAdIn8AZzeBB2L5EcWrenUT1KXienEsuJJ7x5U8XlTjc1NVzUyXFTGb1LlpUtWlTDIjqwE4LsagowoCi2gJLKAkpoBgJQNpAIhNqaEoneI6kiiqQ6Go%2Fn6j0cS%2Ba2gEU8gIHJ%2BBwfgZX4GL%2BBd%2FgW34FZ%2BBS%2FgUH4FN6BTegTvoEv6BJegRnYEF2A79gOvYDl2BdEjCkqkGtwXp0LNToIskOTXzh%2FF062yJ7AAAAEDAWAAABWhJ%2BKPEIJgBFxMVP7w2QJBGHASQnOBKXKFIdUK4igKA9IEaYJg%29%3Bsrc%3Aurl%28data%3Aapplication%2Fvnd%2Ems%2Dfontobject%3Bbase64%2Cn04AAEFNAAACAAIABAAAAAAABQAAAAAAAAABAJABAAAEAExQAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAJxJ%2FLAAAAAAAAAAAAAAAAAAAAAAAACgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAAAADgBSAGUAZwB1AGwAYQByAAAAeABWAGUAcgBzAGkAbwBuACAAMQAuADAAMAA5ADsAUABTACAAMAAwADEALgAwADAAOQA7AGgAbwB0AGMAbwBuAHYAIAAxAC4AMAAuADcAMAA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4ANQAuADUAOAAzADIAOQAAADgARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzACAAUgBlAGcAdQBsAGEAcgAAAAAAQlNHUAAAAAAAAAAAAAAAAAAAAAADAKncAE0TAE0ZAEbuFM3pjM%2FSEdmjKHUbyow8ATBE40IvWA3vTu8LiABDQ%2BpexwUMcm1SMnNryctQSiI1K5ZnbOlXKmnVV5YvRe6RnNMFNCOs1KNVpn6yZhCJkRtVRNzEufeIq7HgSrcx4S8h%2Fv4vnrrKc6oCNxmSk2uKlZQHBii6iKFoH0746ThvkO1kJHlxjrkxs%2BLWORaDQBEtiYJIR5IB9Bi1UyL4Rmr0BNigNkMzlKQmnofBHviqVzUxwdMb3NdCn69hy%2BpRYVKGVS%2F1tnsqv4LL7wCCPZZAZPT4aCShHjHJVNuXbmMrY5LeQaGnvAkXlVrJgKRAUdFjrWEah9XebPeQMj7KS7DIBAFt8ycgC5PLGUOHSE3ErGZCiViNLL5ZARfywnCoZaKQCu6NuFX42AEeKtKUGnr%2FCm2Cy8tpFhBPMW5Fxi4Qm4TkDWh4IWFDClhU2hRWosUWqcKLlgyXB%2BlSHaWaHiWlBAR8SeSgSPCQxdVQgzUixWKSTrIQEbU94viDctkvX%2BVSjJuUmV8L4CXShI11esnp0pjWNZIyxKHS4wVQ2ime1P4RnhvGw0aDN1OLAXGERsB7buFpFGGBAre4QEQR0HOIO5oYH305G%2BKspT%2FFupEGGafCCwxSe6ZUa%2B073rXHnNdVXE6eWvibUS27XtRzkH838mYLMBmYysZTM0EM3A1fbpCBYFccN1B%2FEnCYu%2FTgCGmr7bMh8GfYL%2BBfcLvB0gRagC09w9elfldaIy%2FhNCBLRgBgtCC7jAF63wLSMAfbfAlEggYU0bUA7ACCJmTDpEmJtI78w4%2FBO7dN7JR7J7ZvbYaUbaILSQsRBiF3HGk5fEg6p9unwLvn98r%2BvnsV%2B372uf1xBLq4qU%2F45fTuqaAP%2BpssmCCCTF0mhEow8ZXZOS8D7Q85JsxZ%2BAzok7B7O%2Ff6J8AzYBySZQB%2FQHYUSA%2BEeQhEWiS6AIQzgcsDiER4MjgMBAWDV4AgQ3g1eBgIdweCQmCjJEMkJ%2BPKRWyFHHmg1Wi%2F6xzUgA0LREoKJChwnQa9B%2B5RQZRB3IlBlkAnxyQNaANwHMowzlYSMCBgnbpzvqpl0iTJNCQidDI9ZrSYNIRBhHtUa5YHMHxyGEik9hDE0AKj72AbTCaxtHPUaKZdAZSnQTyjGqGLsmBStCejApUhg4uBMU6mATujEl%2BKdDPbI6Ag4vLr%2BhjY6lbjBeoLKnZl0UZgRX8gTySOeynZVz1wOq7e1hFGYIq%2BMhrGxDLak0PrwYzSXtcuyhXEhwOYofiW%2BEcI%2Fjw8P6IY6ed%2BetAbuqKp5QIapT77LnAe505lMuqL79a0ut4rWexzFttsOsLDy7zvtQzcq3U1qabe7tB0wHWVXji%2BzDbo8x8HyIRUbXnwUcklFv51fvTymiV%2BMXLSmGH9d9%2BaXpD5X6lao41anWGig7IwIdnoBY2ht%2FpO9mClLo4NdXHAsefqWUKlXJkbqPOFhMoR4aiA1BXqhRNbB2Xwi%2B7u%2FjpAoOpKJ0UX24EsrzMfHXViakCNcKjBxuQX8BO0ZqjJ3xXzf%2B61t2VXOSgJ8xu65QKgtN6FibPmPYsXbJRHHqbgATcSZxBqGiDiU4NNNsYBsKD0MIP%2FOfKnlk%2FLkaid%2FO2NbKeuQrwOB2Gq3YHyr6ALgzym5wIBnsdC1ZkoBFZSQXChZvlesPqvK2c5oHHT3Q65jYpNxnQcGF0EHbvYqoFw60WNlXIHQF2HQB7zD6lWjZ9rVqUKBXUT6hrkZOle0RFYII0V5ZYGl1JAP0Ud1fZZMvSomBzJ710j4Me8mjQDwEre5Uv2wQfk1ifDwb5ksuJQQ3xt423lbuQjvoIQByQrNDh1JxGFkOdlJvu%2FgFtuW0wR4cgd%2BZKesSV7QkNE2kw6AV4hoIuC02LGmTomyf8PiO6CZzOTLTPQ%2BHW06H%2Btx%2BbQ8LmDYg1pTFrp2oJXgkZTyeRJZM0C8aE2LpFrNVDuhARsN543%2FFV6klQ6Tv1OoZGXLv0igKrl%2FCmJxRmX7JJbJ998VSIPQRyDBICzl4JJlYHbdql30NvYcOuZ7a10uWRrgoieOdgIm4rlq6vNOQBuqESLbXG5lzdJGHw2m0sDYmODXbYGTfSTGRKpssTO95fothJCjUGQgEL4yKoGAF%2F0SrpUDNn8CBgBcSDQByAeNkCXp4S4Ro2Xh4OeaGRgR66PVOsU8bc6TR5%2FxTcn4IVMLOkXSWiXxkZQCbvKfmoAvQaKjO3EDKwkwqHChCDEM5loQRPd5ACBki1TjF772oaQhQbQ5C0lcWXPFOzrfsDGUXGrpxasbG4iab6eByaQkQfm0VFlP0ZsDkvvqCL6QXMUwCjdMx1ZOyKhTJ7a1GWAdOUcJ8RSejxNVyGs31OKMyRyBVoZFjqIkmKlLQ5eHMeEL4MkUf23cQ%2F1SgRCJ1dk4UdBT7OoyuNgLs0oCd8RnrEIb6QdMxT2QjD4zMrJkfgx5aDMcA4orsTtKCqWb%2FVeyceqa5OGSmB28YwH4rFbkQaLoUN8OQQYnD3w2eXpI4ScQfbCUZiJ4yMOIKLyyTc7BQ4uXUw6Ee6%2FxM%2B4Y67ngNBknxIPwuppgIhFcwJyr6EIj%2BLzNj%2FmfR2vhhRlx0BILZoAYruF0caWQ7YxO66UmeguDREAFHYuC7HJviRgVO6ruJH59h%2FC%2FPkgSle8xNzZJULLWq9JMDTE2fjGE146a1Us6PZDGYle6ldWRqn%2FpdpgHKNGrGIdkRK%2BKPETT9nKT6kLyDI8xd9A1FgWmXWRAIHwZ37WyZHOVyCadJEmMVz0MadMjDrPho%2BEIochkVC2xgGiwwsQ6DMv2P7UXqT4x7CdcYGId2BJQQa85EQKmCmwcRejQ9Bm4oATENFPkxPXILHpMPUyWTI5rjNOsIlmEeMbcOCEqInpXACYQ9DDxmFo9vcmsDblcMtg4tqBerNngkIKaFJmrQAPnq1dEzsMXcwjcHdfdCibcAxxA%2Bq%2Fj9m3LM%2FO7WJka4tSidVCjsvo2lQ%2F2ewyoYyXwAYyr2PlRoR5MpgVmSUIrM3PQxXPbgjBOaDQFIyFMJvx3Pc5RSYj12ySVF9fwFPQu2e2KWVoL9q3Ayv3IzpGHUdvdPdrNUdicjsTQ2ISy7QU3DrEytIjvbzJnAkmANXjAFERA0MUoPF3%2F5KFmW14bBNOhwircYgMqoDpUMcDtCmBE82QM2YtdjVLB4kBuKho%2FbcwQdeboqfQartuU3CsCf%2BcXkgYAqp%2F0Ee3RorAZt0AvvOCSI4JICIlGlsV0bsSid%2FNIEALAAzb6HAgyWHBps6xAOwkJIGcB82CxRQq4sJf3FzA70A%2BTRqcqjEMETCoez3mkPcpnoALs0ugJY8kQwrC%2BJE5ik3w9rzrvDRjAQnqgEVvdGrNwlanR0SOKWzxOJOvLJhcd8Cl4AshACUkv9czdMkJCVQSQhp6kp7StAlpVRpK0t0SW6LHeBJnE2QchB5Ccu8kxRghZXGIgZIiSj7gEKMJDClcnX6hgoqJMwiQDigIXg3ioFLCgDgjPtYHYpsF5EiA4kcnN18MZtOrY866dEQAb0FB34OGKHGZQjwW%2FWDHA60cYFaI%2FPjpzquUqdaYGcIq%2BmLez3WLFFCtNBN2QJcrlcoELgiPku5R5dSlJFaCEqEZle1AQzAKC%2B1SotMcBNyQUFuRHRF6OlimSBgjZeTBCwLyc6A%2BP%2FoFRchXTz5ADknYJHxzrJ5pGuIKRQISU6WyKTBBjD8WozmVYWIsto1AS5rxzKlvJu4E%2FvwOiKxRtCWsDM%2BeTHUrmwrCK5BIfMzGkD%2B0Fk5LzBs0jMYXktNDblB06LMNJ09U8pzSLmo14MS0OMjcdrZ31pyQqxJJpRImlSvfYAK8inkYU52QY2FPEVsjoWewpwhRp5yAuNpkqhdb7ku9Seefl2D0B8SMTFD90xi4CSOwwZy9IKkpMtI3FmFUg3%2FkFutpQGNc3pCR7gvC4sgwbupDu3DyEN%2BW6YGLNM21jpB49irxy9BSlHrVDlnihGKHwPrbVFtc%2Bh1rVQKZduxIyojccZIIcOCmhEnC7UkY68WXKQgLi2JCDQkQWJRQuk60hZp0D3rtCTINSeY9Ej2kIKYfGxwOs4j9qMM7fYZiipzgcf7TamnehqdhsiMiCawXnz4xAbyCkLAx5EGbo3Ax1u3dUIKnTxIaxwQTHehPl3V491H0%2BbC5zgpGz7Io%2BmjdhKlPJ01EeMpM7UsRJMi1nGjmJg35i6bQBAAxjO%2FENJubU2mg3ONySEoWklCwdABETcs7ck3jgiuU9pcKKpbgn%2B3YlzV1FzIkB6pmEDOSSyDfPPlQskznctFji0kpgZjW5RZe6x9kYT4KJcXg0bNiCyif%2BpZACCyRMmYsfiKmN9tSO65F0R2OO6ytlEhY5Sj6uRKfFxw0ijJaAx%2Fk3QgnAFSq27%2F2i4GEBA%2BUvTJKK%2F9eISNvG46Em5RZfjTYLdeD8kdXHyrwId%2FDQZUaMCY4gGbke2C8vfjgV%2FY9kkRQOJIn%2FxM9INZSpiBnqX0Q9GlQPpPKAyO5y%2BW5NMPSRdBCUlmuxl40ZfMCnf2Cp044uI9WLFtCi4YVxKjuRCOBWIb4XbIsGdbo4qtMQnNOQz4XDSui7W%2FN6l54qOynCqD3DpWQ%2BmpD7C40D8BZEWGJX3tlAaZBMj1yjvDYKwCJBa201u6nBKE5UE%2B7QSEhCwrXfbRZylAaAkplhBWX50dumrElePyNMRYUrC99UmcSSNgImhFhDI4BXjMtiqkgizUGCrZ8iwFxU6fQ8GEHCFdLewwxYWxgScAYMdMLmcZR6b7rZl95eQVDGVoUKcRMM1ixXQtXNkBETZkVVPg8LoSrdetHzkuM7DjZRHP02tCxA1fmkXKF3VzfN1pc1cv%2F8lbTIkkYpqKM9VOhp65ktYk%2BQ46myFWBapDfyWUCnsnI00QTBQmuFjMZTcd0V2NQ768Fhpby04k2IzNR1wKabuGJqYWwSly6ocMFGTeeI%2BejsWDYgEvr66QgqdcIbFYDNgsm0x9UHY6SCd5%2B7tpsLpKdvhahIDyYmEJQCqMqtCF6UlrE5GXRmbu%2Bvtm3BFSxI6ND6UxIE7GsGMgWqghXxSnaRJuGFveTcK5ZVSPJyjUxe1dKgI6kNF7EZhIZs8y8FVqwEfbM0Xk2ltORVDKZZM40SD3qQoQe0orJEKwPfZwm3YPqwixhUMOndis6MhbmfvLBKjC8sKKIZKbJk8L11oNkCQzCgvjhyyEiQSuJcgCQSG4Mocfgc0Hkwcjal1UNgP0CBPikYqBIk9tONv4kLtBswH07vUCjEaHiFGlLf8MgXKzSgjp2HolRRccAOh0ILHz9qlGgIFkwAnzHJRjWFhlA7ROwINyB5HFj59PRZHFor6voq7l23EPNRwdWhgawqbivLSjRA4htEYUFkjESu67icTg5S0aW1sOkCiIysfJ9UnIWevOOLGpepcBxy1wEhd2WI3AZg7sr9WBmHWyasxMcvY%2FiOmsLtHSWNUWEGk9hScMPShasUA1AcHOtRZlqMeQ0OzYS9vQvYUjOLrzP07BUAFikcJNMi7gIxEw4pL1G54TcmmmoAQ5s7TGWErJZ2Io4yQ0ljRYhL8H5e62oDtLF8aDpnIvZ5R3GWJyAugdiiJW9hQAVTsnCBHhwu7rkBlBX6r3b7ejEY0k5GGeyKv66v%2B6dg7mcJTrWHbtMywbedYqCQ0FPwoytmSWsL8WTtChZCKKzEF7vP6De4x2BJkkniMgSdWhbeBSLtJZR9CTHetK1xb34AYIJ37OegYIoPVbXgJ%2FqDQK%2BbfCtxQRVKQu77WzOoM6SGL7MaZwCGJVk46aImai9fmam%2BWpHG%2B0BtQPWUgZ7RIAlPq6lkECUhZQ2gqWkMYKcYMYaIc4gYCDFHYa2d1nzp3%2BJ1eCBay8IYZ0wQRKGAqvCuZ%2FUgbQPyllosq%2BXtfKIZOzmeJqRazpmmoP%2F76YfkjzV2NlXTDSBYB04SVlNQsFTbGPk1t%2FI4Jktu0XSgifO2ozFOiwd%2F0SssJDn0dn4xqk4GDTTKX73%2FwQyBLdqgJ%2BWx6AQaba3BA9CKEzjtQYIfAsiYamapq80LAamYjinlKXUkxdpIDk0puXUEYzSalfRibAeDAKpNiqQ0FTwoxuGYzRnisyTotdVTclis1LHRQCy%2FqqL8oUaQzWRxilq5Mi0IJGtMY02cGLD69vGjkj3p6pGePKI8bkBv5evq8SjjyU04vJR2cQXQwSJyoinDsUJHCQ50jrFTT7yRdbdYQMB3MYCb6uBzJ9ewhXYPAIZSXfeEQBZZ3GPN3Nbhh%2FwkvAJLXnQMdi5NYYZ5GHE400GS5rXkOZSQsdZgIbzRnF9ueLnsfQ47wHAsirITnTlkCcuWWIUhJSbpM3wWhXNHvt2xUsKKMpdBSbJnBMcihkoDqAd1Zml%2FR4yrzow1Q2A5G%2Bkzo%2FRhRxQS2lCSDRV8LlYLBOOoo1bF4jwJAwKMK1tWLHlu9i0j4Ig8qVm6wE1DxXwAwQwsaBWUg2pOOol2dHxyt6npwJEdLDDVYyRc2D0HbcbLUJQj8gPevQBUBOUHXPrsAPBERICpnYESeu2OHotpXQxRGlCCtLdIsu23MhZVEoJg8Qumj%2FUMMc34IBqTKLDTp76WzL%2FdMjCxK7MjhiGjeYAC%2Fkj%2FjY%2FRde7hpSM1xChrog6yZ7OWTuD56xBJnGFE%2BpT2ElSyCnJcwVzCjkqeNLfMEJqKW0G7OFIp0G%2B9mh50I9o8k1tpCY0xYqFNIALgIfc2me4n1bmJnRZ89oepgLPT0NTMLNZsvSCZAc3TXaNB07vail36%2FdBySis4m9%2FDR8izaLJW6bWCkVgm5T%2Bius3ZXq4xI%2BGnbveLbdRwF2mNtsrE0JjYc1AXknCOrLSu7Te%2Fr4dPYMCl5qtiHNTn%2BTPbh1jCBHH%2BdMJNhwNgs3nT%2BOhQoQ0vYif56BMG6WowAcHR3DjQolxLzyVekHj00PBAaW7IIAF1EF%2BuRIWyXjQMAs2chdpaKPNaB%2BkSezYt0%2BCA04sOg5vx8Fr7Ofa9sUv87h7SLAUFSzbetCCZ9pmyLt6l6%2FTzoA1%2FZBG9bIUVHLAbi%2FkdBFgYGyGwRQGBpkqCEg2ah9UD6EedEcEL3j4y0BQQCiExEnocA3SZboh%2Bepgd3YsOkHskZwPuQ5OoyA0fTA5AXrHcUOQF%2BzkJHIA7PwCDk1gGVmGUZSSoPhNf%2BTklauz98QofOlCIQ%2FtCD4dosHYPqtPCXB3agggQQIqQJsSkB%2Bqn0rkQ1toJjON%2FOtCIB9RYv3PqRA4C4U68ZMlZn6BdgEvi2ziU%2BTQ6NIw3ej%2BAtDwMGEZk7e2IjxUWKdAxyaw9OCwSmeADTPPleyk6UhGDNXQb%2B%2BW6Uk4q6F7%2Frg6WVTo82IoCxSIsFDrav4EPHphD3u4hR53WKVvYZUwNCCeM4PMBWzK%2BEfIthZOkuAwPo5C5jgoZgn6dUdvx5rIDmd58cXXdKNfw3l%2BwM2UjgrDJeQHhbD7HW2QDoZMCujgIUkk5Fg8VCsdyjOtnGRx8wgKRPZN5dR0zPUyfGZFVihbFRniXZFOZGKPnEQzU3AnD1KfR6weHW2XS6KbPJxUkOTZsAB9vTVp3Le1F8q5l%2BDMcLiIq78jxAImD2pGFw0VHfRatScGlK6SMu8leTmhUSMy8Uhdd6xBiH3Gdman4tjQGLboJfqz6fL2WKHTmrfsKZRYX6BTDjDldKMosaSTLdQS7oDisJNqAUhw1PfTlnacCO8vl8706Km1FROgLDmudzxg%2BEWTiArtHgLsRrAXYWdB0NmToNCJdKm0KWycZQqb%2BMw76Qy29iQ5up%2FX7oyw8QZ75kP5F6iJAJz6KCmqxz8fEa%2FxnsMYcIO%2FvEkGRuMckhr4rIeLrKaXnmIzlNLxbFspOphkcnJdnz%2FChp%2FVlpj2P7jJQmQRwGnltkTV5dbF9fE3%2FfxoSqTROgq9wFUlbuYzYcasE0ouzBo%2BdDCDzxKAfhbAZYxQiHrLzV2iVexnDX%2FQnT1fsT%2Fxuhu1ui5qIytgbGmRoQkeQooO8eJNNZsf0iALur8QxZFH0nCMnjerYQqG1pIfjyVZWxhVRznmmfLG00BcBWJE6hzQWRyFknuJnXuk8A5FRDCulwrWASSNoBtR%2BCtGdkPwYN2o7DOw%2FVGlCZPusRBFXODQdUM5zeHDIVuAJBLqbO%2Ff9Qua%2BpDqEPk230Sob9lEZ8BHiCorjVghuI0lI4JDgHGRDD%2FprQ84B1pVGkIpVUAHCG%2Biz3Bn3qm2AVrYcYWhock4jso5%2BJ7HfHVj4WMIQdGctq3psBCVVzupQOEioBGA2Bk%2BUILT7%2BVoX5mdxxA5fS42gISQVi%2FHTzrgMxu0fY6hE1ocUwwbsbWcezrY2n6S8%2F6cxXkOH4prpmPuFoikTzY7T85C4T2XYlbxLglSv2uLCgFv8Quk%2FwdesUdWPeHYIH0R729JIisN9Apdd4eB10aqwXrPt%2BSu9mA8k8n1sjMwnfsfF2j3jMUzXepSHmZ%2FBfqXvzgUNQQWOXO8YEuFBh4QTYCkOAPxywpYu1VxiDyJmKVcmJPGWk%2Fgc3Pov02StyYDahwmzw3E1gYC9wkupyWfDqDSUMpCTH5e5N8B%2F%2FlHiMuIkTNw4USHrJU67bjXGqNav6PBuQSoqTxc8avHoGmvqNtXzIaoyMIQIiiUHIM64cXieouplhNYln7qgc4wBVAYR104kO%2BCvKqsg4yIUlFNThVUAKZxZt1XA34h3TCUUiXVkZ0w8Hh2R0Z5L0b4LZvPd%2Fp1gi%2F07h8qfwHrByuSxglc9cI4QIg2oqvC%2Fqm0i7tjPLTgDhoWTAKDO2ONW5oe%2B%2FeKB9vZB8K6C25yCZ9RFVMnb6NRdRjyVK57CHHSkJBfnM2%2Fj4ODUwRkqrtBBCrDsDpt8jhZdXoy%2F1BCqw3sSGhgGGy0a5Jw6BP%2FTExoCmNFYjZl248A0osgPyGEmRA%2BfAsqPVaNAfytu0vuQJ7rk3J4kTDTR2AlCHJ5cls26opZM4w3jMULh2YXKpcqGBtuleAlOZnaZGbD6DHzMd6i2oFeJ8z9XYmalg1Szd%2FocZDc1C7Y6vcALJz2lYnTXiWEr2wawtoR4g3jvWUU2Ngjd1cewtFzEvM1NiHZPeLlIXFbBPawxNgMwwAlyNSuGF3zizVeOoC9bag1qRAQKQE%2FEZBWC2J8mnXAN2aTBboZ7HewnObE8CwROudZHmUM5oZ%2FUgd%2FJZQK8lvAm43uDRAbyW8gZ%2BZGq0EVerVGUKUSm%2FIdn8AQHdR4m7bue88WBwft9mSCeMOt1ncBwziOmJYI2ZR7ewNMPiCugmSsE4EyQ%2BQATJG6qORMGd4snEzc6B4shPIo4G1T7PgSm8PY5eUkPdF8JZ0VBtadbHXoJgnEhZQaODPj2gpODKJY5Yp4DOsLBFxWbvXN755KWylJm%2BoOd4zEL9Hpubuy2gyyfxh8oEfFutnYWdfB8PdESLWYvSqbElP9qo3u6KTmkhoacDauMNNjj0oy40DFV7Ql0aZj77xfGl7TJNHnIwgqOkenruYYNo6h724%2BzUQ7%2BvkCpZB%2BpGA562hYQiDxHVWOq0oDQl%2FQsoiY%2BcuI7iWq%2FZIBtHcXJ7kks%2Bh2fCNUPA82BzjnqktNts%2BRLdk1VSu%2BtqEn7QZCCsvEqk6FkfiOYkrsw092J8jsfIuEKypNjLxrKA9kiA19mxBD2suxQKCzwXGws7kEJvlhUiV9tArLIdZW0IORcxEzdzKmjtFhsjKy%2F44XYXdI5noQoRcvjZ1RMPACRqYg2V1%2BOwOepcOknRLLFdYgTkT5UApt%2FJhLM3jeFYprZV%2BZow2g8fP%2BU68hkKFWJj2yBbKqsrp25xkZX1DAjUw52IMYWaOhab8Kp05VrdNftqwRrymWF4OQSjbdfzmRZirK8FMJELEgER2PHjEAN9pGfLhCUiTJFbd5LBkOBMaxLr%2FA1SY9dXFz4RjzoU9ExfJCmx%2FI9FKEGT3n2cmzl2X42L3Jh%2BAbQq6sA%2BSs1kitoa4TAYgKHaoybHUDJ51oETdeI%2F9ThSmjWGkyLi5QAGWhL0BG1UsTyRGRJOldKBrYJeB8ljLJHfATWTEQBXBDnQexOHTB%2BUn44zExFE4vLytcu5NwpWrUxO%2F0ZICUGM7hGABXym0V6ZvDST0E370St9MIWQOTWngeoQHUTdCJUP04spMBMS8LSker9cReVQkULFDIZDFPrhTzBl6sed9wcZQTbL%2BBDqMyaN3RJPh%2Fanbx%2BIv%2BqgQdAa3M9Z5JmvYlh4qop%2BHo1F1W5gbOE9YKLgAnWytXElU4G8GtW47lhgFE6gaSs%2Bgs37sFvi0PPVvA5dnCBgILTwoKd%2F%2BDoL9F6inlM7H4rOTzD79KJgKlZO%2FZgt22UsKhrAaXU5ZcLrAglTVKJEmNJvORGN1vqrcfSMizfpsgbIe9zno%2BgBoKVXgIL%2FVI8dB1O5o%2FR3Suez%2FgD7M781ShjKpIIORM%2FnxG%2BjjhhgPwsn2IoXsPGPqYHXA63zJ07M2GPEykQwJBYLK808qYxuIew4frk52nhCsnCYmXiR6CuapvE1IwRB4%2FQftDbEn%2BAucIr1oxrLabRj9q4ae0%2BfXkHnteAJwXRbVkR0mctVSwEbqhJiMSZUp9DNbEDMmjX22m3ABpkrPQQTP3S1sib5pD2VRKRd%2BeNAjLYyT0hGrdjWJZy24OYXRoWQAIhGBZRxuBFMjjZQhpgrWo8SiFYbojcHO8V5DyscJpLTHyx9Fimassyo5U6WNtquUMYgccaHY5amgR3PQzq3ToNM5ABnoB9kuxsebqmYZm0R9qxJbFXCQ1UPyFIbxoUraTJFDpCk0Wk9GaYJKz%2F6oHwEP0Q14lMtlddQsOAU9zlYdMVHiT7RQP3XCmWYDcHCGbVRHGnHuwzScA0BaSBOGkz3lM8CArjrBsyEoV6Ys4qgDK3ykQQPZ3hCRGNXQTNNXbEb6tDiTDLKOyMzRhCFT%2BmAUmiYbV3YQVqFVp9dorv%2BTsLeCykS2b5yyu8AV7IS9cxcL8z4Kfwp%2BxJyYLv1OsxQCZwTB4a8BZ%2F5EdxTBJthApqyfd9u3ifr%2FWILTqq5VqgwMT9SOxbSGWLQJUUWCVi4k9tho9nEsbUh7U6NUsLmkYFXOhZ0kmamaJLRNJzSj%2Fqn4Mso6zb6iLLBXoaZ6AqeWCjHQm2lztnejYYM2eubnpBdKVLORZhudH3JF1waBJKA9%2BW8EhMj3Kzf0L4vi4k6RoHh3Z5YgmSZmk6ns4fjScjAoL8GoOECgqgYEBYUGFVO4FUv4%2FYtowhEmTs0vrvlD%2FCrisnoBNDAcUi%2FteY7OctFlmARQzjOItrrlKuPO6E2Ox93L4O%2F4DcgV%2FdZ7qR3VBwVQxP1GCieA4RIpweYJ5FoYrHxqRBdJjnqbsikA2Ictbb8vE1GYIo9dacK0REgDX4smy6GAkxlH1yCGGsk%2BtgiDhNKuKu3yNrMdxafmKTF632F8Vx4BNK57GvlFisrkjN9WDAtjsWA0ENT2e2nETUb%2Fn7qwhvGnrHuf5bX6Vh%2Fn3xffU3PeHdR%2BFA92i6ufT3AlyAREoNDh6chiMWTvjKjHDeRhOa9YkOQRq1vQXEMppAQVwHCuIcV2g5rBn6GmZZpTR7vnSD6ZmhdSl176gqKTXu5E%2BYbfL0adwNtHP7dT7t7b46DVZIkzaRJOM%2BS6KcrzYVg%2BT3wSRFRQashjfU18NutrKa%2F7PXbtuJvpIjbgPeqd%2BpjmRw6YKpnANFSQcpzTZgpSNJ6J7uiagAbir%2F8tNXJ%2FOsOnRh6iuIexxrmkIneAgz8QoLmiaJ8sLQrELVK2yn3wOHp57BAZJhDZjTBzyoRAuuZ4eoxHruY1pSb7qq79cIeAdOwin4GdgMeIMHeG%2BFZWYaiUQQyC5b50zKjYw97dFjAeY2I4Bnl105Iku1y0lMA1ZHolLx19uZnRdILcXKlZGQx%2FGdEqSsMRU1BIrFqRcV1qQOOHyxOLXEGcbRtAEsuAC2V4K3p5mFJ22IDWaEkk9ttf5Izb2LkD1MnrSwztXmmD%2FQi%2FEmVEFBfiKGmftsPwVaIoZanlKndMZsIBOskFYpDOq3QUs9aSbAAtL5Dbokus2G4%2FasthNMK5UQKCOhU97oaOYNGsTah%2BjfCKsZnTRn5TbhFX8ghg8CBYt%2FBjeYYYUrtUZ5jVij%2Fop7V5SsbA4mYTOwZ46hqdpbB6Qvq3AS2HHNkC15pTDIcDNGsMPXaBidXYPHc6PJAkRh29Vx8KcgX46LoUQBhRM%2B3SW6Opll%2FwgxxsPgKJKzr5QCmwkUxNbeg6Wj34SUnEzOemSuvS2OetRCO8Tyy%2BQbSKVJcqkia%2BGvDefFwMOmgnD7h81TUtMn%2BmRpyJJ349HhAnoWFTejhpYTL9G8N2nVg1qkXBeoS9Nw2fB27t7trm7d%2FQK7Cr4uoCeOQ7%2F8JfKT77KiDzLImESHw%2F0wf73QeHu74hxv7uihi4fTX%2BXEwAyQG3264dwv17aJ5N335Vt9sdrAXhPOAv8JFvzqyYXwfx8WYJaef1gMl98JRFyl5Mv5Uo%2FoVH5ww5OzLFsiTPDns7fS6EURSSWd%2F92BxMYQ8sBaH%2Bj%2BwthQPdVgDGpTfi%2BJQIWMD8xKqULliRH01rTeyF8x8q%2FGBEEEBrAJMPf25UQwi0b8tmqRXY7kIvNkzrkvRWLnxoGYEJsz8u4oOyMp8cHyaybb1HdMCaLApUE%2B%2F7xLIZGP6H9xuSEXp1zLIdjk5nBaMuV%2FyTDRRP8Y2ww5RO6d2D94o%2B6ucWIqUAvgHIHXhZsmDhjVLczmZ3ca0Cb3PpKwt2UtHVQ0BgFJsqqTsnzZPlKahRUkEu4qmkJt%2Bkqdae76ViWe3STan69yaF9%2BfESD2lcQshLHWVu4ovItXxO69bqC5p1nZLvI8NdQB9s9UNaJGlQ5mG947ipdDA0eTIw%2FA1zEdjWquIsQXXGIVEH0thC5M%2BW9pZe7IhAVnPJkYCCXN5a32HjN6nsvokEqRS44tGIs7s2LVTvcrHAF%2BRVmI8L4HUYk4x%2B67AxSMJKqCg8zrGOgvK9kNMdDrNiUtSWuHFpC8%2Fp5qIQrEo%2FH%2B1l%2F0cAwQ2nKmpWxKcMIuHY44Y6DlkpO48tRuUGBWT0FyHwSKO72Ud%2BtJUfdaZ4CWNijzZtlRa8%2BCkmO%2FEwHYfPZFU%2FhzjFWH7vnzHRMo%2BaF9u8qHSAiEkA2HjoNQPEwHsDKOt6hOoK3Ce%2F%2B%2F9boMWDa44I6FrQhdgS7OnNaSzwxWKZMcyHi6LN4WC6sSj0qm2PSOGBTvDs%2FGWJS6SwEN%2FULwpb4LQo9fYjUfSXRwZkynUazlSpvX9e%2BG2zor8l%2BYaMxSEomDdLHGcD6YVQPegTaA74H8%2BV4WvJkFUrjMLGLlvSZQWvi8%2FQA7yzQ8GPno%2F%2F5SJHRP%2FOqKObPCo81s%2F%2B6WgLqykYpGAgQZhVDEBPXWgU%2FWzFZjKUhSFInufPRiMAUULC6T11yL45ZrRoB4DzOyJShKXaAJIBS9wzLYIoCEcJKQW8GVCx4fihqJ6mshBUXSw3wWVj3grrHQlGNGhIDNNzsxQ3M%2BGWn6ASobIWC%2BLbYOC6UpahVO13Zs2zOzZC8z7FmA05JhUGyBsF4tsG0drcggIFzgg%2Fkpf3%2BCnAXKiMgIE8Jk%2FMhpkc8DUJEUzDSnWlQFme3d0sHZDrg7LavtsEX3cHwjCYA17pMTfx8Ajw9hHscN67hyo%2BRJQ4458RmPywXykkVcW688oVUrQhahpPRvTWPnuI0B%2BSkQu7dCyvLRyFYlC1LG1gRCIvn3rwQeINzZQC2KXq31FaR9UmVV2QeGVqBHjmE%2BVMd3b1fhCynD0pQNhCG6%2FWCDbKPyE7NRQzL3BzQAJ0g09aUzcQA6mUp9iZFK6Sbp%2FYbHjo%2B%2B7%2FWj8S4YNa%2BZdqAw1hDrKWFXv9%2BzaXpf8ZTDSbiqsxnwN%2FCzK5tPkOr4tRh2kY3Bn9JtalbIOI4b3F7F1vPQMfoDcdxMS8CW9m%2FNCW%2FHILTUVWQIPiD0j1A6bo8vsv6P1hCESl2abrSJWDrq5sSzUpwoxaCU9FtJyYH4QFMxDBpkkBR6kn0LMPO%2B5EJ7Z6bCiRoPedRZ%2FP0SSdii7ZnPAtVwwHUidcdyspwncz5uq6vvm4IEDbJVLUFCn%2FLvIHfooUBTkFO130FC7CmmcrKdgDJcid9mvVzsDSibOoXtIf9k6ABle3PmIxejodc4aob0QKS432srrCMndbfD454q52V01G4q913mC5HOsTzWF4h2No1av1VbcUgWAqyoZl%2B11PoFYnNv2HwAODeNRkHj%2B8SF1fcvVBu6MrehHAZK1Gm69ICcTKizykHgGFx7QdowTVAsYEF2tVc0Z6wLryz2FI1sc5By2znJAAmINndoJiB4sfPdPrTC8RnkW7KRCwxC6YvXg5ahMlQuMpoCSXjOlBy0Kij%2BbsCYPbGp8BdCBiLmLSAkEQRaieWo1SYvZIKJGj9Ur%2FeWHjiB7SOVdqMAVmpBvfRiebsFjger7DC%2B8kRFGtNrTrnnGD2GAJb8rQCWkUPYHhwXsjNBSkE6lGWUj5QNhK0DMNM2l%2BkXRZ0KLZaGsFSIdQz%2FHXDxf3%2FTE30%2BDgBKWGWdxElyLccJfEpjsnszECNoDGZpdwdRgCixeg9L4EPhH%2BRptvRMVRaahu4cySjS3P5wxAUCPkmn%2BrhyASpmiTaiDeggaIxYBmtLZDDhiWIJaBgzfCsAGUF1Q1SFZYyXDt9skCaxJsxK2Ms65dmdp5WAZyxik%2FzbrTQk5KmgxCg%2Ff45L0jywebOWUYFJQAJia7XzCV0x89rpp%2Ff3AVWhSPyTanqmik2SkD8A3Ml4NhIGLAjBXtPShwKYfi2eXtrDuKLk4QlSyTw1ftXgwqA2jUuopDl%2B5tfUWZNwBpEPXghzbBggYCw%2Fdhy0ntds2yeHCDKkF%2FYxQjNIL%2FF%2F37jLPHCKBO9ibwYCmuxImIo0ijV2Wbg3kSN2psoe8IsABv3RNFaF9uMyCtCYtqcD%2BqNOhwMlfARQUdJ2tUX%2BMNJqOwIciWalZsmEjt07tfa8ma4cji9sqz%2BQ9hWfmMoKEbIHPOQORbhQRHIsrTYlnVTNvcq1imqmmPDdVDkJgRcTgB8Sb6epCQVmFZe%2BjGDiNJQLWnfx%2BdrTKYjm0G8yH0ZAGMWzEJhUEQ4Maimgf%2Fbkvo8PLVBsZl152y5S8%2BHRDfZIMCbYZ1WDp4yrdchOJw8k6R%2B%2F2pHmydK4NIK2PHdFPHtoLmHxRDwLFb7eB%2BM4zNZcB9NrAgjVyzLM7xyYSY13ykWfIEEd2n5%2FiYp3ZdrCf7fL%2Ben%2BsIJu2W7E30MrAgZBD1rAAbZHPgeAMtKCg3NpSpYQUDWJu9bT3V7tOKv%2BNRiJc8JAKqqgCA%2FPNRBR7ChpiEulyQApMK1AyqcWnpSOmYh6yLiWkGJ2mklCSPIqN7UypWj3dGi5MvsHQ87MrB4VFgypJaFriaHivwcHIpmyi5LhNqtem4q0n8awM19Qk8BOS0EsqGscuuydYsIGsbT5GHnERUiMpKJl4ON7qjB4fEqlGN%2FhCky89232UQCiaeWpDYCJINXjT6xl4Gc7DxRCtgV0i1ma4RgWLsNtnEBRQFqZggCLiuyEydmFd7WlogpkCw5G1x4ft2psm3KAREwVwr1Gzl6RT7FDAqpVal34ewVm3VH4qn5mjGj%2BbYL1NgfLNeXDwtmYSpwzbruDKpTjOdgiIHDVQSb5%2FzBgSMbHLkxWWgghIh9QTFSDILixVwg0Eg1puooBiHAt7DzwJ7m8i8%2Fi%2BjHvKf0QDnnHVkVTIqMvIQImOrzCJwhSR7qYB5gSwL6aWL9hERHCZc4G2%2BJrpgHNB8eCCmcIWIQ6rSdyPCyftXkDlErUkHafHRlkOIjxGbAktz75bnh50dU7YHk%2BMz7wwstg6RFZb%2BTZuSOx1qqP5C66c0mptQmzIC2dlpte7vZrauAMm%2F7RfBYkGtXWGiaWTtwvAQiq2oD4YixPLXE2khB2FRaNRDTk%2B9sZ6K74Ia9VntCpN4BhJGJMT4Z5c5FhSepRCRWmBXqx%2BwhVZC4me4saDs2iNqXMuCl6iAZflH8fscC1sTsy4PHeC%2BXYuqMBMUun5YezKbRKmEPwuK%2BCLzijPEQgfhahQswBBLfg%2FGBgBiI4QwAqzJkkyYAWtjzSg2ILgMAgqxYfwERRo3zruBL9WOryUArSD8sQOcD7fvIODJxKFS615KFPsb68USBEPPj1orNzFY2xoTtNBVTyzBhPbhFH0PI5AtlJBl2aSgNPYzxYLw7XTDBDinmVoENwiGzmngrMo8OmnRP0Z0i0Zrln9DDFcnmOoBZjABaQIbPOJYZGqX%2BRCMlDDbElcjaROLDoualmUIQ88Kekk3iM4OQrADcxi3rJguS4MOIBIgKgXrjd1WkbCdqxJk%2F4efRIFsavZA7KvvJQqp3Iid5Z0NFc5aiMRzGN3vrpBzaMy4JYde3wr96PjN90AYOIbyp6T4zj8LoE66OGcX1Ef4Z3KoWLAUF4BTg7ug%2FAbkG5UNQXAMkQezujSHeir2uTThgd3gpyzDrbnEdDRH2W7U6PeRvBX1ZFMP5RM%2BZu6UUZZD8hDPHldVWntTCNk7To8IeOW9yn2wx0gmurwqC60AOde4r3ETi5pVMSDK8wxhoGAoEX9NLWHIR33VbrbMveii2jAJlrxwytTHbWNu8Y4N8vCCyZjAX%2FpcsfwXbLze2%2BD%2Bu33OGBoJyAAL3jn3RuEcdp5If8O%2Ba4NKWvxOTyDltG0IWoHhwVGe7dKkCWFT%2B%2Btm%2BhaBCikRUUMrMhYKZJKYoVuv%2FbsJzO8DwfVIInQq3g3BYypiz8baogH3r3GwqCwFtZnz4xMjAVOYnyOi5HWbFA8n0qz1OjSpHWFzpQOpvkNETZBGpxN8ybhtqV%2FDMUxd9uFZmBfKXMCn%2FSqkWJyKPnT6lq%2B4zBZni6fYRByJn6OK%2BOgPBGRAJluwGSk4wxjOOzyce%2FPKODwRlsgrVkdcsEiYrqYdXo0Er2GXi2GQZd0tNJT6c9pK1EEJG1zgDJBoTVuCXGAU8BKTvCO%2FcEQ1Wjk3Zzuy90JX4m3O5IlxVFhYkSUwuQB2up7jhvkm%2BbddRQu5F9s0XftGEJ9JSuSk%2BZachCbdU45fEqbugzTIUokwoAKvpUQF%2FCvLbWW5BNQFqFkJg2f30E%2F48StNe5QwBg8zz3YAJ82FZoXBxXSv4QDooDo79NixyglO9AembuBcx5Re3CwOKTHebOPhkmFC7wNaWtoBhFuV4AkEuJ0J%2B1pT0tLkvFVZaNzfhs%2FKd3%2BA9YsImlO4XK4vpCo%2FelHQi%2F9gkFg07xxnuXLt21unCIpDV%2BbbRxb7FC6nWYTsMFF8%2B1LUg4JFjVt3vqbuhHmDKbgQ4e%2BRGizRiO8ky05LQGMdL2IKLSNar0kNG7lHJMaXr5mLdG3nykgj6vB%2FKVijd1ARWkFEf3yiUw1v%2FWaQivVUpIDdSNrrKbjO5NPnxz6qTTGgYg03HgPhDrCFyYZTi3XQw3HXCva39mpLNFtz8AiEhxAJHpWX13gCTAwgm9YTvMeiqetdNQv6IU0hH0G%2BZManTqDLPjyrOse7WiiwOJCG%2BJ0pZYULhN8NILulmYYvmVcV2MjAfA39sGKqGdjpiPo86fecg65UPyXDIAOyOkCx5NQsLeD4gGVjTVDwOHWkbbBW0GeNjDkcSOn2Nq4cEssP54t9D749A7M1AIOBl0Fi0sSO5v3P7LCBrM6ZwFY6kp2FX6AcbGUdybnfChHPyu6WlRZ2Fwv9YM0RMI7kISRgR8HpQSJJOyTfXj%2F6gQKuihPtiUtlCQVPohUgzfezTg8o1b3n9pNZeco1QucaoXe40Fa5JYhqdTspFmxGtW9h5ezLFZs3j%2FN46f%2BS2rjYNC2JySXrnSAFhvAkz9a5L3pza8eYKHNoPrvBRESpxYPJdKVUxBE39nJ1chrAFpy4MMkf0qKgYALctGg1DQI1kIymyeS2AJNT4X240d3IFQb%2F0jQbaHJ2YRK8A%2Bls6WMhWmpCXYG5jqapGs5%2FeOJErxi2%2F2KWVHiPellTgh%2FfNl%2F2KYPKb7DUcAg%2BmCOPQFCiU9Mq%2FWLcU1xxC8aLePFZZlE%2BPCLzf7ey46INWRw2kcXySR9FDgByXzfxiNKwDFbUSMMhALPFSedyjEVM5442GZ4hTrsAEvZxIieSHGSgkwFh%2FnFNdrrFD4tBH4Il7fW6ur4J8Xaz7RW9jgtuPEXQsYk7gcMs2neu3zJwTyUerHKSh1iTBkj2YJh1SSOZL5pLuQbFFAvyO4k1Hxg2h99MTC6cTUkbONQIAnEfGsGkNFWRbuRyyaEZInM5pij73EA9rPIUfU4XoqQpHT9THZkW%2BoKFLvpyvTBMM69tN1Ydwv1LIEhHsC%2BueVG%2Bw%2BkyCPsvV3erRikcscHjZCkccx6VrBkBRusTDDd8847GA7p2Ucy0y0HdSRN6YIBciYa4vuXcAZbQAuSEmzw%2BH%2FAuOx%2BaH%2BtBL88H57D0MsqyiZxhOEQkF%2F8DR1d2hSPMj%2FsNOa5rxcUnBgH8ictv2J%2Bcb4BA4v3MCShdZ2vtK30vAwkobnEWh7rsSyhmos3WC93Gn9C4nnAd%2FPjMMtQfyDNZsOPd6XcAsnBE%2FmRHtHEyJMzJfZFLE9OvQa0i9kUmToJ0ZxknTgdl%2FXPV8xoh0K7wNHHsnBdvFH3sv52lU7UFteseLG%2FVanIvcwycVA7%2BBE1Ulyb20BvwUWZcMTKhaCcmY3ROpvonVMV4N7yBXTL7IDtHzQ4CCcqF66LjF3xUqgErKzolLyCG6Kb7irP%2FMVTCCwGRxfrPGpMMGvPLgJ881PHMNMIO09T5ig7AzZTX%2F5PLlwnJLDAPfuHynSGhV4tPqR3gJ4kg4c06c%2FF1AcjGytKm2Yb5jwMotF7vro4YDLWlnMIpmPg36NgAZsGA0W1spfLSue4xxat0Gdwd0lqDBOgIaMANykwwDKejt5YaNtJYIkrSgu0KjIg0pznY0SCd1qlC6R19g97UrWDoYJGlrvCE05J%2F5wkjpkre727p5PTRX5FGrSBIfJqhJE%2FIS876PaHFkx9pGTH3oaY3jJRvLX9Iy3Edoar7cFvJqyUlOhAEiOSAyYgVEGkzHdug%2BoRHIEOXAExMiTSKU9A6nmRC8mp8iYhwWdP2U%2F5EkFAdPrZw03YA3gSyNUtMZeh7dDCu8pF5x0VORCTgKp07ehy7NZqKTpIC4UJJ89lnboyAfy5OyXzXtuDRbtAFjZRSyGFTpFrXwkpjSLIQIG3N0Vj4BtzK3wdlkBJrO18MNsgseR4BysJilI0wI6ZahLhBFA0XBmV8d4LUzEcNVb0xbLjLTETYN8OEVqNxkt10W614dd1FlFFVTIgB7%2FBQQp1sWlNolpIu4ekxUTBV7NmxOFKEBmmN%2BnA7pvF78%2FRII5ZHA09OAiE%2F66MF6HQ%2BqVEJCHxwymukkNvzqHEh52dULPbVasfQMgTDyBZzx4007YiKdBuUauQOt27Gmy8ISclPmEUCIcuLbkb1mzQSqIa3iE0PJh7UMYQbkpe%2BhXjTJKdldyt2mVPwywoODGJtBV1lJTgMsuSQBlDMwhEKIfrvsxGQjHPCEfNfMAY2oxvyKcKPUbQySkKG6tj9AQyEW3Q5rpaDJ5Sns9ScLKeizPRbvWYAw4bXkrZdmB7CQopCH8NAmqbuciZChHN8lVGaDbCnmddnqO1PQ4ieMYfcSiBE5zzMz%2BJV%2F4eyzrzTEShvqSGzgWimkNxLvUj86iAwcZuIkqdB0VaIB7wncLRmzHkiUQpPBIXbDDLHBlq7vp9xwuC9AiNkIptAYlG7Biyuk8ILdynuUM1cHWJgeB%2BK3wBP%2FineogxkvBNNQ4AkW0hvpBOQGFfeptF2YTR75MexYDUy7Q%2F9uocGsx41O4IZhViw%2F2FvAEuGO5g2kyXBUijAggWM08bRhXg5ijgMwDJy40QeY%2FcQpUDZiIzmvskQpO5G1zyGZA8WByjIQU4jRoFJt56behxtHUUE%2Fom7Rj2psYXGmq3llVOCgGYKNMo4pzwntITtapDqjvQtqpjaJwjHmDzSVGLxMt12gEXAdLi%2FcaHSM3FPRGRf7dB7YC%2BcD2ho6oL2zGDCkjlf%2FDFoQVl8GS%2F56wur3rdV6ggtzZW60MRB3g%2BU1W8o8cvqIpMkctiGVMzXUFI7FacFLrgtdz4mTEr4aRAaQ2AFQaNeG7GX0yOJgMRYFziXdJf24kg%2FgBQIZMG%2FYcPEllRTVNoDYR6oSJ8wQNLuihfw81UpiKPm714bZX1KYjcXJdfclCUOOpvTxr9AAJevTY4HK%2FG7F3mUc3GOAKqh60zM0v34v%2BELyhJZqhkaMA8UMMOU90f8RKEJFj7EqepBVwsRiLbwMo1J2zrE2UYJnsgIAscDmjPjnzI8a719Wxp757wqmSJBjXowhc46QN4RwKIxqEE6E5218OeK7RfcpGjWG1jD7qND%2B%2FGTk6M56Ig4yMsU6LUW1EWE%2BfIYycVV1thldSlbP6ltdC01y3KUfkobkt2q01YYMmxpKRvh1Z48uNKzP%2FIoRIZ%2FF6buOymSnW8gICitpJjKWBscSb9JJKaWkvEkqinAJ2kowKoqkqZftRqfRQlLtKoqvTRDi2vg%2FRrPD%2Fd3a09J8JhGZlEkOM6znTsoMCsuvTmywxTCDhw5dd0GJOHCMPbsj3QLkTE3MInsZsimDQ3HkvthT7U9VA4s6G07sID0FW4SHJmRGwCl%2BMu4xf0ezqeXD2PtPDnwMPo86sbwDV%2B9PWcgFcARUVYm3hrFQrHcgMElFGbSM2A1zUYA3baWfheJp2AINmTJLuoyYD%2FOwA4a6V0ChBN97E8YtDBerUECv0u0TlxR5yhJCXvJxgyM73Bb6pyq0jTFJDZ4p1Am1SA6sh8nADd1hAcGBMfq4d%2FUfwnmBqe0Jun1n1LzrgKuZMAnxA3NtCN7Klf4BH%2B14B7ibBmgt0TGUafVzI4uKlpF7v8NmgNjg90D6QE3tbx8AjSAC%2BOA1YJvclyPKgT27QpIEgVYpbPYGBsnyCNrGz9XUsCHkW1QAHgL2STZk12QGqmvAB0NFteERkvBIH7INDsNW9KKaAYyDMdBEMzJiWaJHZALqDxQDWRntumSDPcplyFiI1oDpT8wbwe01AHhW6%2BvAUUBoGhY3CT2tgwehdPqU%2F4Q7ZLYvhRl%2FogOvR9O2%2BwkkPKW5vCTjD2fHRYXONCoIl4Jh1bZY0ZE1O94mMGn%2FdFSWBWzQ%2FVYk%2BGezi46RgiDv3EshoTmMSlioUK6MQEN8qeyK6FRninyX8ZPeUWjjbMJChn0n%2FyJvrq5bh5UcCAcBYSafTFg7p0jDgrXo2QWLb3WpSOET%2FHh4oSadBTvyDo10IufLzxiMLAnbZ1vcUmj3w7BQuIXjEZXifwukVxrGa9j%2BDXfpi12m1RbzYLg9J2wFergEwOxFyD0%2FJstNK06ZN2XdZSGWxcJODpQHOq4iKqjqkJUmPu1VczL5xTGUfCgLEYyNBCCbMBFT%2FcUP6pE%2FmujnHsSDeWxMbhrNilS5MyYR0nJyzanWXBeVcEQrRIhQeJA6Xt4f2eQESNeLwmC10WJVHqwx8SSyrtAAjpGjidcj1E2FYN0LObUcFQhafUKTiGmHWRHGsFCB%2BHEXgrzJEB5bp0QiF8ZHh11nFX8AboTD0PS4O1LqF8XBks2MpjsQnwKHF6HgaKCVLJtcr0XjqFMRGfKv8tmmykhLRzu%2BvqQ02%2BKpJBjaLt9ye1Ab%2BBbEBhy4EVdIJDrL2naV0o4wU8YZ2Lq04FG1mWCKC%2BUwkXOoAjneU%2FxHplMQo2cXUlrVNqJYczgYlaOEczVCs%2FOCgkyvLmTmdaBJc1iBLuKwmr6qtRnhowngsDxhzKFAi02tf8bmET8BO27ovJKF1plJwm3b0JpMh38%2BxsrXXg7U74QUM8ZCIMOpXujHntKdaRtsgyEZl5MClMVMMMZkZLNxH9%2Bb8fH6%2Bb8Lev30A9TuEVj9CqAdmwAAHBPbfOBFEATAPZ2CS0OH1Pj%2F0Q7PFUcC8hDrxESWdfgFRm%2B7vvWbkEppHB4T%2F1ApWnlTIqQwjcPl0VgS1yHSmD0OdsCVST8CQVwuiew1Y%2Bg3QGFjNMzwRB2DSsAk26cmA8lp2wIU4p93AUBiUHFGOxOajAqD7Gm6NezNDjYzwLOaSXRBYcWipTSONHjUDXCY4mMI8XoVCR%2FRrs%2FJLKXgEx%2BqkmeDlFOD1%2FyTQNDClRuiUyKYCllfMiQiyFkmuTz2vLsBNyRW%2Bxz%2B5FElFxWB28VjYIGZ0Yd%2B5wIjkcoMaggxswbT0pCmckRAErbRlIlcOGdBo4djTNO8FAgQ%2BlT6vPS60BwTRSUAM3ddkEAZiwtEyArrkiDRnS7LJ%2B2hwbzd2YDQagSgACpsovmjil5wfPuXq3GuH0CyE7FK3M4FgRaFoIkaodORrPx1%2BJpI9psyNYIFuJogZa0%2F1AhOWdlHQxdAgbwacsHqPZo8u%2FngAH2GmaTdhYnBfSDbBfh8CHq6Bx5bttP2%2BRdM%2BMAaYaZ0Y%2FADkbNCZuAyAVQa2OcXOeICmDn9Q%2FeFkDeFQg5MgHEDXq%2FtVjj%2Bjtd26nhaaolWxs1ixSUgOBwrDhRIGOLyOVk2%2FBc0UxvseQCO2pQ2i%2BKrfhu%2FWeBovNb5dJxQtJRUDv2mCwYVpNl2efQM9xQHnK0JwLYt%2FU0Wf%2BphiA4uw8G91slC832pmOTCAoZXohg1fewCZqLBhkOUBofBWpMPsqg7XEXgPfAlDo2U5WXjtFdS87PIqClCK5nW6adCeXPkUiTGx0emOIDQqw1yFYGHEVx20xKjJVYe0O8iLmnQr3FA9nSIQilUKtJ4ZAdcTm7%2BExseJauyqo30hs%2B1qSW211A1SFAOUgDlCGq7eTIcMAeyZkV1SQJ4j%2Fe1Smbq4HcjqgFbLAGLyKxlMDMgZavK5NAYH19Olz3la%2FQCTiVelFnU6O%2FGCvykqS%2FwZJDhKN9gBtSOp%2F1SP5VRgJcoVj%2Bkmf2wBgv4gjrgARBWiURYx8xENV3bEVUAAWWD3dYDKAIWk5opaCFCMR5ZjJExiCAw7gYiSZ2rkyTce4eNMY3lfGn%2B8p6%2BvBckGlKEXnA6Eota69OxDO9oOsJoy28BXOR0UoXNRaJD5ceKdlWMJlOFzDdZNpc05tkMGQtqeNF2lttZqNco1VtwXgRstLSQ6tSPChgqtGV5h2DcDReIQadaNRR6AsAYKL5gSFsCJMgfsaZ7DpKh8mg8Wz8V7H%2BgDnLuMxaWEIUPevIbClgap4dqmVWSrPgVYCzAoZHIa5z2Ocx1D%2FGvDOEqMOKLrMefWIbSWHZ6jbgA8qVBhYNHpx0P%2BjAgN5TB3haSifDcApp6yymEi6Ij%2FGsEpDYUgcHATJUYDUAmC1SCkJ4cuZXSAP2DEpQsGUjQmKJfJOvlC2x%2FpChkOyLW7KEoMYc5FDC4v2FGqSoRWiLsbPCiyg1U5yiHZVm1XLkHMMZL11%2Fyxyw0UnGig3MFdZklN5FI%2FqiT65T%2BjOXOdO7XbgWurOAZR6Cv9uu1cm5LjkXX4xi6mWn5r5NjBS0gTliHhMZI2WNqSiSphEtiCAwnafS11JhseDGHYQ5%2BbqWiAYiAv6Jsf79%2FVUs4cIl%2Bn6%2BWOjcgB%2F2l5TreoAV2717JzZbQIR0W1cl%2FdEqCy5kJ3ZSIHuU0vBoHooEpiHeQWVkkkOqRX27eD1FWw4BfO9CJDdKoSogQi3hAAwsPRFrN5RbX7bqLdBJ9JYMohWrgJKHSjVl1sy2xAG0E3sNyO0oCbSGOxCNBRRXTXenYKuwAoDLfnDcQaCwehUOIDiHAu5m5hMpKeKM4sIo3vxACakIxKoH2YWF2QM84e6F5C5hJU4g8uxuFOlAYnqtwxmHyNEawLW%2FPhoawJDrGAP0JYWHgAVUByo%2FbGdiv2T2EMg8gsS14%2FrAdzlOYazFE7w4OzxeKiWdm3nSOnQRRKXSlVo8HEAbBfyJMKqoq%2BSCcTSx5NDtbFwNlh8VhjGGDu7JG5%2FTAGAvniQSSUog0pNzTim8Owc6QTuSKSTXlQqwV3eiEnklS3LeSXYPXGK2VgeZBqNcHG6tZHvA3vTINhV0ELuQdp3t1y9%2BogD8Kk%2FW7QoRN1UWPqM4%2BxdygkFDPLoTaumKReKiLWoPHOfY54m3qPx4c%2B4pgY3MRKKbljG8w4wvz8pxk3AqKsy4GMAkAtmRjRMsCxbb4Q2Ds0Ia9ci8cMT6DmsJG00XaHCIS%2Bo3F8YVVeikw13w%2BOEDaCYYhC0ZE54kA4jpjruBr5STWeqQG6M74HHL6TZ3lXrd99ZX%2B%2B7LhNatQaZosuxEf5yRA15S9gPeHskBIq3Gcw81AGb9%2FO53DYi%2F5CsQ51EmEh8Rkg4vOciClpy4d04eYsfr6fyQkBmtD%2BP8sNh6e%2BXYHJXT%2FlkXxT4KXU5F2sGxYyzfniMMQkb9OjDN2C8tRRgTyL7GwozH14PrEUZc6oz05Emne3Ts5EG7WolDmU8OB1LDG3VrpQxp%2BpT0KYV5dGtknU64JhabdqcVQbGZiAxQAnvN1u70y1AnmvOSPgLI6uB4AuDGhmAu3ATkJSw7OtS%2F2ToPjqkaq62%2F7WFG8advGlRRqxB9diP07JrXowKR9tpRa%2BjGJ91zxNTT1h8I2PcSfoUPtd7NejVoH03EUcqSBuFZPkMZhegHyo2ZAITovmm3zAIdGFWxoNNORiMRShgwdYwFzkPw5PA4a5MIIQpmq%2Bnsp3YMuXt%2FGkXxLx%2FP6%2BZJS0lFyz4MunC3eWSGE8xlCQrKvhKUPXr0hjpAN9ZK4PfEDrPMfMbGNWcHDzjA7ngMxTPnT7GMHar%2BgMQQ3NwHCv4zH4BIMYvzsdiERi6gebRmerTsVwZJTRsL8dkZgxgRxmpbgRcud%2BYlCIRpPwHShlUSwuipZnx9QCsEWziVazdDeKSYU5CF7UVPAhLer3CgJOQXl%2Fzh575R5rsrmRnKAzq4POFdgbYBuEviM4%2BLVC15ssLNFghbTtHWerS1hDt5s4qkLUha%2FqpZXhWh1C6lTQAqCNQnaDjS7UGFBC6wTu8yFnKJnExCnAs3Ok9yj5KpfZESQ4lTy5pTGTnkAUpxI%2ByjEldJfSo4y0QhG4i4IwkRFGcjWY8%2BEzgYYJUK7BXQksLxAww%2FYYWBMhJILB9e8ePEJ4OP7z%2B4%2FwOQDl64iOYDp26DaONPxpKtBxq%2FaTzRGarm3VkPYTLJKx6Z%2FMw2YbBGseJhPMwhhNswrIkyvV2BYzrvZbxLpKwcWJhYmFtVZ%2BlPEq91FzVp1HlQY1bZVLqeNR9SAUn6n0E28k%2FUuGkNpP1DBI5ch%2FEehZfjUQ9aE41NhETExoPT2gGQz0IhWJbEOvTQ4wgcXCHHFBhewYUiFHuhRSAUVmEHeCRQHQkXGFwkAgyzREJCVN7TRnTon36Zw3tPhx4EALwNdwDv%2BJ41YSP4B2CQqz0EFgARZ4ESgBHQgROwAVn9GTI%2BHYexTUevLUeta4%2FDqKrbMVS%2BYqb8hUwYCrlgKtmAq1YCrFgKrd4qpXiqZcKn1oqdWipjYKpWwVPVYqW6xUpVipKqFR3QKjagVEtAqHpxUMTitsnFaJOKx2cVhswq35RVpyiq9lFVNIKnOQVMkgqtYxVNxiqQjFS7GKlSIVIsQqPIhUWwioigFQ%2B%2BKkN8VHr49HDw9Ebo9EDo9DTo9Crg9BDg9%2FWx7gWx7YWwlobYrOGxWPNisAaAHEyALpkAVDIAeWAArsABVXACYuAD5cAF6wAKFQAQqgAbVAAsoAAlQAUaYAfkwAvogBWQACOgAD9AAHSAAKT4GUdMiOvFngBTwCn2AZ7Dv6B6k%2F90B8%2ByRnkV144AIBoAMTQATGgAjNAA4YABgwABZgB%2FmQCwyAVlwCguASlwCEuAQFwB4uAMlwBYuAJlQAUVAAhUD2KgdpUDaJgaRMDFJgX5MC1JgWJEAokQCWRAHxEAWkQBMRADpEAMkQAYROAEecC484DRpwBDTnwNOdw05tjTmiNOYwtswhYFwLA7BYG4LA2BYGOLAwRYFuLAsxYFQJAohIEyJAMwkAwiQC0JAJgkAeiQBkJAFokAPCQA0JABwcD4Dgc4cDdDgaYcDIDgYgUC6CgWgUClCgUYUAVBQBOFAEYMALgwAgDA9QYAdIn8AZzeBB2L5EcWrenUT1KXienEsuJJ7x5U8XlTjc1NVzUyXFTGb1LlpUtWlTDIjqwE4LsagowoCi2gJLKAkpoBgJQNpAIhNqaEoneI6kiiqQ6Go%2Fn6j0cS%2Ba2gEU8gIHJ%2BBwfgZX4GL%2BBd%2FgW34FZ%2BBS%2FgUH4FN6BTegTvoEv6BJegRnYEF2A79gOvYDl2BdEjCkqkGtwXp0LNToIskOTXzh%2FF062yJ7AAAAEDAWAAABWhJ%2BKPEIJgBFxMVP7w2QJBGHASQnOBKXKFIdUK4igKA9IEaYJg%29%20format%28%27embedded%2Dopentype%27%29%2Curl%28data%3Aapplication%2Ffont%2Dwoff%3Bbase64%2Cd09GRgABAAAAAFuAAA8AAAAAsVwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABWAAAABwAAAAcbSqX3EdERUYAAAF0AAAAHwAAACABRAAET1MvMgAAAZQAAABFAAAAYGe5a4ljbWFwAAAB3AAAAsAAAAZy2q3jgWN2dCAAAAScAAAABAAAAAQAKAL4Z2FzcAAABKAAAAAIAAAACP%2F%2FAANnbHlmAAAEqAAATRcAAJSkfV3Cb2hlYWQAAFHAAAAANAAAADYFTS%2FYaGhlYQAAUfQAAAAcAAAAJApEBBFobXR4AABSEAAAAU8AAAN00scgYGxvY2EAAFNgAAACJwAAAjBv%2B5XObWF4cAAAVYgAAAAgAAAAIAFqANhuYW1lAABVqAAAAZ4AAAOisyygm3Bvc3QAAFdIAAAELQAACtG6o%2BU1d2ViZgAAW3gAAAAGAAAABsMYVFAAAAABAAAAAMw9os8AAAAA0HaBdQAAAADQdnOXeNpjYGRgYOADYgkGEGBiYGRgZBQDkixgHgMABUgASgB42mNgZulmnMDAysDCzMN0gYGBIQpCMy5hMGLaAeQDpRCACYkd6h3ux%2BDAoPD%2FP%2FOB%2FwJAdSIM1UBhRiQlCgyMADGWCwwAAAB42u2UP2hTQRzHf5ekaVPExv6JjW3fvTQ0sa3QLA5xylBLgyBx0gzSWEUaXbIoBBQyCQGHLqXUqYNdtIIgIg5FHJxEtwqtpbnfaV1E1KFaSvX5vVwGEbW6OPngk8%2FvvXfv7pt3v4SImojIDw6BViKxRgIVBaZwVdSv%2BxvXA%2BIuzqcog2cOkkvDNE8Lbqs74k64i%2B5Sf3u8Z2AnIRLbyVCyTflVSEXVoEqrrMqrgiqqsqqqWQ5xlAc5zWOc5TwXucxVnuE5HdQhHdFRHdNJndZZndeFLc%2FzsKJLQ%2FWV6BcrCdWkwspVKZVROaw0qUqqoqZZcJhdTnGGxznHBS5xhad5VhNWCuturBTXKZ3RObuS98pb9c57k6ql9rp2v1as5deb1r6s9q1GV2IrHSt73T631424YXzjgPwqt%2BRn%2BVG%2BlRvyirwsS%2FKCPCfPytPypDwhj8mjctRZd9acF86y89x55jxxHjkPnXstXfbt%2FpNjj%2FnwXW%2BcHa6%2FSYvZ7yEwbDYazDcIgoUGzY3h2HtqgUcs1AFPWKgTXrRQF7xkoQhRf7uF9hPFeyzUTTSwY6EoUUJY6AC8bSGMS4Ys1Au3WaiPSGGsMtkdGH2rzJgYHAaYjxIwQqtB1CnYkEZ9BM6ALOpROAfyqI%2FDBQudgidBETXuqRIooz4DV0AV9UV4GsyivkTEyMMmw1UYGdhkuAYjA5sMGMvIwCbDDRgZeAz1TXgcmDy3YeRhk%2BcOjCxsMjyAkYFNhscwMrDJ8BQ2886gXoaRhedQvyTSkDZ7uA6HLLQBI5vGntAbGHugTc53cMxC7%2BE4SKL%2BACOzNpk3YWTWJid%2BiRo5NXIKM3fBItAPW55FdJLY3FeHBDr90606JCIU9Jk%2BMs3%2FY%2F8L8jUq3y79bJ%2F0%2F%2BROoP4v9v%2F4%2Fmj%2Bi7HBXUd0%2FelU6IHfHt8Aj9EPGAAoAvgAAAAB%2F%2F8AAnjaxb0JfBvVtTA%2BdxaN1hltI1m2ZVuSJVneLVlSHCdy9oTEWchqtrBEJRAgCYEsQNhC2EsbWmpI2dqkQBoSYgKlpaQthVL0yusrpW77aEubfq%2Fly%2BujvJampSTW5Dvnzmi1E%2Bjr%2F%2F3%2BXmbu3Llz77nnbuece865DMu0MAy5jGtiOEZkOp8lTNeUwyLP%2FDH%2BrEH41ZTDHAtB5lkOowWMPiwayNiUwwTjE46AI5xwhFrINPXYn%2F7ENY0dbWHfZAiTZbL8ID%2FInAd5xz2NpIH4STpDGonHIJNE3OP1KG4ISaSNeBuITAyRLgIxoiEUhFAnmUpEiXSRSGqAQEw0kuyFUIb0k2gnGSApyBFi0il2SI5YLGb5MdFjXCey4mNHzQ7WwLGEdZiPPgYR64we8THZHAt%2BwnT84D%2Fx8YTpGPgheKH4CMEDVF9xBOIeP3EbQgGH29BGgpGkIxCMTCW9qUTA0Zsir%2BQUP1mt%2BP2KusevwIO6Bx%2FIaj8%2FOD5O0VNrZW2EsqZBWbO1skRiEKE0DdlKKaSVO5VAuRpqk8VQJAqY7ydxaK44YJvrO2EWjOoDBoFYzQbDNkON%2BUbiKoRkywMWWf1j4bEY2iIY1AeMgvmEz%2FkVo9v4FSc%2FaMZMrFbjl4zWLL0%2BY5FlyzNlEVYDudJohg8gPUP7kcB%2Fmn%2BG6cd%2B5PV4Q72dXCgocWJADBgUuDTwiXiGSyZo14HOEQ2lE6k0XDIEusexDzZOMXwt1Dutz%2BtqmxTvlskNWXXUQIbhaurum9GrePqm9Yaeabjkiqf%2BbUvzDOvb2Y1E%2BEX2DnemcTP%2FzLcuu7xjQXdAtjR0Lo5n4%2FHs%2FGtntMlysHt%2B29NXbH6se%2F%2FWbFcyu%2Br28H0MwzI30DYeYTLMXIA2EG8QlHpAsyS0EfEToR0a3utIxFPJ3kiIHCCrZ66b0e2xEmL1dM9YN%2FMwS5p01N5jMX%2FBLKt%2F1R83l0LyC29M6%2BiYxo%2FUNg%2FEF7c2WyyW5tYl8WnhWg2%2FhyySbD5UhnDyS7OcU0dnrFw%2BDfGdI7v4QfYIIzOMq9hFtY55gmvC7jZ2FK7sEdrn6IXBuucYhjsGdQ8z0yEbWkkczjjsE5hNAIZrPx2zOLZDmKNXcXtg7EMqidAEEWg%2BSJCBBNwxvxJfc%2FbZa%2BKKf%2BxoKZybnq5vaqpPTye7CiF%2BZFjxZ8%2F7Qij0hfOG%2FcowPA1rT1l4ymWnrKmxxqfErTVrpgwPlz1kC%2BOy8NMDz6c%2BIO38K%2Fx0xkPnLW8Kx6qGAoQdL%2BTD9V9rb%2B%2Fctn%2F%2Ftrxz8dUrZrD%2Fzk%2FferF0cNt1BzctmX2FZPXt%2FjnFCQNz4Ah%2FiKllGiCMs1w5Lkg0kiEwj6VTXCDKsX9rMpnvIj9pcDecXAIXMnqn2dTUbN6w0XQ9ue6FV%2FnnXCH7S3lPWGltVcLsH75ub3ab7A8M28caNrIeOr3o5Q0yFsYL80xaa0EY%2FUEczV7icUMY5pnelAkmUAXmHYjvFWFGxuqlSaow3OM%2B%2FiYY7%2Fl%2FhVELF4EjRqNR%2FbvRbOY%2BDUGzGR%2FOh3EqmE%2FugIQQguGt%2FeMYz%2F%2BL0cimjeZfQDI3phXMbMQsqH%2BCjwVz%2Fhf4idHovgVmB8gLvjbicDcC%2FNypP536E%2F9N%2FpuMibExdohBmNwyiaZdJGoigos7GpF222xrfnZhML%2F7Z%2BylaqP63Hr%2Bm7bdUkQ6%2F2cXqdfmvwixY%2Bs2ksXFeXcE%2BiX0Z%2BIow76DBNgjJ7TOdUK18iPsPflfQD%2BDPsZG2Aj9VmKMMJ4fYRrhIaxhTDR0Elh2vA6h%2FAE6xUb29mj3sjmL72petXjejPy%2Boel60M99tFduCI59N3221xe7apOvxs6aHs7vab1IqY2tv7q2xsHeHGml%2FcV06u%2F8S%2FxTjJ%2BJYc0bWEX0ukW6YmIbGkJRMdjJ9mYIH5QIdJF4hvRGyK7cC7ctImQRcUET99fGXOoft35GYLMQu%2Bg2smnkgZUrH8AL%2F9Si217IssJ916nv14ZrJrvdxLkQvrvtBcjgPC0NXOicO8Qf4mcxPqh3hgUw3DDfdvLJXngg7N3dN2zbPJSaed3OfZnMU7dvmznp3C3bruO%2BNmue0LFsy7S%2B6265%2BfCKFYdvvuW6vmlblnUI8xCXp37CrOZv4B9gauDBlYp7adcUXB5DNCwYImlXOJJKkAdvExXxVvKEYnCo%2B3eIskP9qrrfIYs71CccBjfXRC52udTHHdaP1A1ui%2FVvH1otbrLrpNXBsGX5B89QghDyimlvNB2KfkxZ5C9%2Fem3%2Bd1%2Bd%2F%2FIfFp2%2B2Oxn%2Fs%2B9n%2F79p39S3s8idN6g0yZObwJOgKUpNB3GyU0Ls0PbRzIRq4lcarLKOJBkLRzJQD4j2090XrbA7DW8K3jNF5hlGS5e4V2D17zgss4T20egOJte5iD0bReM9yjTxnQxCRj3c5kFzGJmGbNKmwGw39IJDJcXJZGMkaAB4jyJAKw0jt5IAuIE%2BA%2BU3cVAZZrq9zhDyBrU8oosuxcGNTzCKJfla7JjNVmuSb%2F%2BtuzN2H%2BX4vlB%2BPpdfMXXmuVsNiub1T34SFbjYw5itEvVi0K0Nt9pNJUMI7SLGRhf2xipfCYf8z5OdlGKayOucFeVPeS%2Fdbo3lBrbSMmwUiQN5%2Fed7g0Ds1s17IuZC5kNzM3MZ6EWCa0DtekdJfAxz%2BR%2FOX28sND7yRMTBcf%2B%2Bs8mQCQWHya4qBv%2FufeMoWyslPA9DtMxUknxkH%2FyfTnm2CMYzs%2BCq3r7PxY%2FMXomrvTEsRpfEGHa%2BWN8E1AHjElb7d06ddA7oK%2F%2B5Mdsv9EtPms0jv0Z5kf1FqPxWdFtfFr0kHfgDX0Y%2B5PRSG7RUj0tQr7rmfX8DH4G5W28kKeJLtmQsQkuwMP1pk16EV4sl7vrMJATfyUWo%2FGwEco4rh4XFQgaiUX9qxZHrMQqKnz%2Fc2d8b9TysYrAuXpP%2FRf%2FGr8b1qwwc5a%2BeuLa6S6sneNXToG2XrEJi4R5SGs8Sq2S3d97bsfCRaTdaLwKClRHt37mkudvXbjwVrLhuYeGhh56bvfQkHpk2CwvwClqgWwuBfndC3c8dwmstj81KkagcUgbfPY8Zje0W%2F82VPWJHmSq6pP8hPWpotc%2FEexDOK3qU%2BwngPhOCiO9MJRm8TJefjelrzoKnG2Bn%2B1NCUmPE4gHFmBN9jrTigRIpsACrc9Gstg58ULkp9467%2BGf%2FeFnD5%2F31lNrt2967dhrm7bzI%2BVT5m%2BfzKhvf2MzpICEm79Bopkn07lt1762adNr127LwVqQLdJ5%2BlpQDcvHPQtVY5knhYrK6q8%2FJsiP6EuhGZdFdaNszjvpqvc%2BPI0CdjN0AXsFOC3ZfALDJwr4q2Xq%2BGF%2BGNbsxUg5NLLIEXi8otcDQcUts0D8eQ1iVDRAMBTsYiNdRIxE09EIBJO9A2xqgERTaW86BUFn0OD2xFO97FAgFhF6OoQ7prYt4XwSeUgQHiJyDbeke9IdQntciLQ1FlJMaYcUNvZBg%2BFB1ubjlnRNvl3o6IEU2w7fdNPhm%2Fhh%2BFLysUu6%2B%2BDLHkOkrSHYEjH0tEPe7WdD3uyDgvAgK%2Fm4szFFR7ch0toUgBTdWHr7EpaWru6%2B6dmbbnqWEbV2EtxAsXiZAPTtGPSbHsotI2leoM8TePEqgSQprs7AGFf8kuOkPdZPXGb55POAW1d%2FjLST9v5YflasP6v%2FCO7%2BGNAPC2BMZWmsOjp2NNbfHwMCJD%2BLPVL%2BD%2FOYlWEEI%2F9jpPddOFkB5d1GSuKZYggmCCd7JUxD7EXAzxyirYnNDLdDZoFdx14kivkvGc3579Jm36reTTvDgBnaO6vzyQ6chQmlsMoIkIQ2%2BbBDWBud1Va4pcCn8CPqxlh%2FfgtG8IPaPH8C5wk6%2FnZDv69jurV5QhtwE0x2iqOsj9Mx8B9%2F0EaUdiPfOYYDCi%2Fq9jhWRuupMDEU0%2BCtX0sDFxv07T%2FK5niBPqN9%2BtQjgEc31NGCXFeMcCEuQBIc%2FBK4CO78u7EPYvl3yaEfK3vcb6qP1R2tI7vUjVDDUdKubsSrNjYKY1qBEa2P50SJoaXiksIoLiCwnxS6EBuBde87botNfdEWwYvF%2FR0%2Fu5yCqhGeEOR2ynSeyXjt6ka7neyye8kryBSWE52y%2BRBgogrXPZ8E1yIHoHIFUM%2BAbJhE7lbMtt8ApL%2BxmZW7PwbjAO0fAVoXQOuiSP%2FksIVdFZ0aulsamKUzwPZ%2FNYDMJRBPCxsBqLzqHyneXF6Ej9HlIFo7%2Bpg%2BjUb3unRmGpstGkm6etOuDBGA5wCMefp1gTHcdZlvPBXlOslvYTp1cd8UjYLVd%2FJ5awNrIOKLnIt9MD9qdrKrWCvA6ALm3QV9VrsPm60Q7%2BRHJHP%2B2hqfugo%2FMvI2H%2Fmqr4b9tFnKSRY1Y5Ek80Nm%2FWIhr1ikKnxGz9TWXrokf9xwujfvcOTtNTWnxd0F37Y2W79tteBqZ4G5qLCuomw%2BnSr28QESCRVLTyYKILGJOPfcnaIFOsewhRdvv%2BrWa%2FWih0vlbX6Zb75T5C0qNKVFvH1QL%2FvazSWgC2s6oWXXIuUxQelKiJbowuJDQViatLmLijg9CQBMg8WiPgiw3LEeYRmm5f%2BXdnvkDnxLLjMLxtvX74C3OlwPQqx4xwIdpPx38LrlDphiyWUWHWKAzzxurS%2FxTo%2BP5wGFak62ap1PVFFN4v%2Fy%2BxuR39WnIO7lsWfwgVsK17wxrs9K8ltIKuhkw7f%2F6dhK6gQokFKhWX3urrjk%2FrnI0pgfpGMeuQIUaEM7%2BGF5q2iMkCaMQwxxOzcvU0eXbsnS9XknXvP7Gtw5dwPXlFu2ecvSHEZgNDsU6x%2FGdXBYXyOQjzZReSedeEPY6nEv9gJR4oBQJtFO6Kd0fwC6BO4LNHDeBujB6dSNcUQC9zIv2LnAzGk99bUDrdFY%2B9yGFQtEo0GQPNv6vS2drj4%2B1jHbv3aJSMUWP%2BQTZrmbNTjU8wyG%2FiXNNpskybLcJ3CiTF5Ir%2BJYzmJwE0mSVhlxbtbmvweB3ulB6Til5UuUZydpgiFVeobhU0WaBqpJ198d%2B%2FXeNRTZ9%2F1OPfG7%2B2hwzd5W3D%2BhmyjsRcUg%2F%2BCavb%2B%2BVh2ls3L7zT%2FetOnHNxeerv313vzLVqPai4nJv%2BK1FC6040%2F4udw7sAb3laSg0XCkAAs0npBO6VJabS4Elk%2FU%2BD4gTXW%2Bj0wnrMlqNamq4tMIYB87tE10i0FR3LZNhJsb7%2FR561btmes8YBCRkhYNByRtKd55mqTas9FYhJnbRGHuOh3M4QTdgQSqmgRxuzGdSvZGcbMxNQGk5C3ebLjoXIOFM4l%2BWKHmLTJwRv9E8GWJ6dYvf%2FFmEyEGr%2Bgyrr1p5zrgkz0Cw2j94Hv8Jdx7dIVegBSNtgsqGsRQEYiIBoXwD0LNvQ5d7s5Z00QzwNhqZA0b%2BtMG1tQq5nd84uq8R0zPvX35G8uRaze4jcOHzz0w1%2BQ2BIRvf6J6Kgatnrbiem%2BCFvAxfkrndzD9MFPP1GWTUHclpASUkCNAQkpCCcCgDSUDAhDZ%2BCuEkgn8J7i9nMA7pA4lISappxILKfAeSAbIcSDuN2bJcfZILqeO5rLs0MnngSHYRdrHjmaz7JEsEPw51ZqDJDmUIOZIe34WaQeegNsJn1qz8AIpT3yCjyEih%2FxELkuJ0lEMYTLVCiWpo5oYMleMH6USyYJcD%2BuOe%2BkWKpn1Qns34iyYDjkSLvgnZXcgVQNeqINXr48m3iS7cjm8tedyY0f1QvTnHHdsrKby%2F%2BSSbPY8%2FNH6vpl%2FEsq3Ae4ZU1HC44KFiI9o7CEgab%2FRqHbj7s5KAg06s39ZP%2FzxI%2FmVuF%2FTbTSy%2B3Fb8If9%2Fcv7%2Bwt91yy8RfP1QXtW5RzQn7qIiZyuFM5QfJ5E9uVnqT85TanFx0lkP3ukBAMprvsRyi%2FC8NAJL1xbIIirSvnSj4O5netb4JxmNANHPssHAcHMHsFRgEug816gDBeMbdfiuRcghqYcm0%2BXxx%2F5IAEtN3fqFF3LzAXqwoT0PN0OVTNqxo8sxMkd5Ig6k79Zk7VxxX6gMLOZFQgvpW2RrMW1D0BDihaXQ9wVRoBxPLfpknmkeMtoB%2FqM9cRc9IqmMD2XUmdZ7GSRKPUZvChf8BoykriM2MnKYbOHX8R7cLdNCxSFFVQqoYswnlWtlFS2mNkhswVpZiQW1J%2FUKFfipHGlUkM6UKBhMz1istELIHJLMSctu3ugzfaVSOjKvUgc%2FTHK4Sdg2Wscz69leKIkkrwuuWiOe9yGYKQXRumkC3qbRcMwrvhjNXgdZk3RxAUEhuSPvn3nnd%2B%2BU%2F3vlVOmrJzCD8JLxV1OHRjrZifbcFDOuRNTGqdgQm1tSNJ2OcQ04YiEXuxtII1ECSQRoQGYioEsgCfchB4ghAtw7FfJre4WZ9hkVi9MtjuWqtdNDlpMrfEG9fOT6q21okg%2Be4As38MfGquNt7oUws6Ysarj1%2FefE%2Byst86YUVNvDdts3Pv5c8m%2FaP0C%2Bf8%2FQb%2BIMnGq09BgwN01oIOAnAdagI8mBSrqk1gxTDUBOtk2ousEtBH2z4Ir2d3f6k8PXXVlt2qN9RODxRuoJT%2Fv27wm09jRYVc%2Fe%2B%2Biyx2tyzJb%2Fn3J0htXP87eSsQaf2Ly0s6Zmxela88REy1cf4273mI3iXNJ7KxrZibOm9xm6rl4fqy%2Ft27smU8tOfdW2ucBzg2UfmOIVyLIl3kpYlwphDISTXJXsctmiDtN7fNV6zelgxwnWxsVr83Aj%2FS5ki1jL%2Fa0GC6%2B2L6Um%2BaoddlNFuj%2BbJ8mH%2FiaLh8I0%2FU51NspIEfq0dohwyFXKgm4NggwQ4rRhCOUFtxxo8XnitT4cnGfT93IS8FaT85XE3H5LMY4zIEPL1hw443wz%2B1UmhTJyJGxZzw%2BwsKkKZgUiVtKOKMEb2AKHTv61FNc01PQFwKnvsZ%2F9pPA4RKTASWahmh%2B8MxwzHxKy74IRn5LGRjsPUUwTu64UYNY38caqd7HKucZ%2FtHnODtENw%2F2UfHRMaq1UUPDJQ0OKkWCeet5fYOhII1VRz8%2B%2FElg5j4Gxur3J8o2PJ4rg%2B2d08T%2FfwEzSVbyZ9XPro95T477lRKqUSRXQnauHNsISAl27oWi6Fv9z48JMv8r%2FaMMj8onCP%2FDuDZOuN%2BGPPr%2F%2Bp7bx%2B7JlbYdppcNhzKU%2F1Px5aiaGDn%2Fs1iGMaBcleKUo%2Fv9rcxkZj7DBEKOfrayytXNLYiUdBY%2BpleQXdnscKlQcpzuWluxsieeyuXIK6SdxozitWyGOV3vOHHjguyCQ6fpIYy2JwvrQEF%2FQa9Pdf%2FQqOSqCiE%2FEE1%2FXIVKTc2tzWbHnimrEd%2BVyz311Ml3P0GVTj7PD5aDnsvCvH36alEaPMePcMegXs7x8igTu4B9v7G9vTHvhCu%2FkzIdx%2BBxC0ay9zRSvoS0F2lIxI%2BX7klU63I40gLQ3w5ep5na%2BSFnba3z5D64zv%2BQtM4n4ffG3tq4aNHGRfxgrXPMim%2B5487abL7xhdseIRn1KDl%2B7aINixdv0OD%2BJSPwKf5%2BxoP6aiTeQIDVlIhMcL1H5R9PYXvprs3fv2bO7MOplCmweuiq2JRZ1zz%2B9a%2Fv2PH1Hfz9236w%2BZrPXvWfAxlj4NLLHpq3c%2FPQ3uvmvbrjG7fe%2Bo2y%2FcLdtE6VUlXi0ASb1VLUBVSUWSU4HdvAraTyS8xzM8NxvxFkXV6pUVRiJwcgC5zEeht4rwcp7ki0k41G0qlQhG1Vzlq8alEmnFi58caB5Q9vn988MLhqyVlHvLEWjtQFeupdiocF%2FtkkOGPW2ibWaBTkeZ%2FdvPWazXfOnnvL6jkRXpi85sFzZt%2B55ZptW3bl1cCCHZPD06MhySha7UFzjcjbp8fOecFCirzAG%2FyVjBX6OFIaadSjQq1nNhyIe8tVbaaSdHlXIWKacMeuZA1uxS95zILhyrxAdsXTL6m7kNQlx2P9uZf2qhufePFFbpI6%2FOU0WcP99RrCsrwseVot5mtytpf6Y0gm9sdeyKnPQ7onyK4nXlR%2Frg7H95M1upzu89DH6pgUcikoiihJ6NJKmRxV1x%2BMJiOA3YwhDRQrWU0u%2F0rvq0VYXnyCwsLeTJYBq3dAtJDavuzyoVpzZ99Z0%2Ba0uoiFH%2FxcqgDR7rUFeOrUn6Cywb8ZeNMbhLV5ugP9l0zv9UN5b5mFkjzxUcpPJCn3V402pRxtJd2GrnLdhtVk9ZSZh9W91fCSH5B7ofxPiWL%2Bj3D%2FuwhBRdyAyozeZwvQzs79soi%2BBKSnafLviZCcfrpBpLyimfLfTyJtbyruIQKD01tUwJyKEo%2FybaxkSNFUMdMkhQoJyRBQFhnUkDQSXhTM%2B3NmY0EDM7ffLIjqWEGt8lCO6mLia3PukFnghosJD5p5SIho%2FVDkzQfLE%2BIrYoJXkD19pdP7OwG%2FvoIUtagiWiZ4PAFTHHlTVhRZ7dYmPar%2BNJ%2B8JhmR6DFK5DV1foHoLNO%2FpHrvZfmWZ15RQlwvoVDKhCWNK3CCch9lfFBuAqUgpFSShmNaPj%2Bi5%2B%2BWZfKeViJfW5HnUakVL4UCNVkA4%2BETfIqx4B5xSaP2L1yn0zn2ltPn4%2BOqZGmwwEVCaCSqG53ldtL1oLGAhdMLd09MpCCF6tD6ZnAZBY9hDaYsP0jzZ0j5ZjKsF4i1UmLuhbJMCnYJPt5VwFNvmZawXjEvLJqIH8STonZjq7BZ8gKgR20C9MDFqJAX1H64QW2NEup6qgzLP8cvppL%2FNNTOBTCJABOHeWoXzLhw4Wuy7gaBtjKr9kgKq8ZlRYBS32Lpxc8vIhpNDTfyNXWybMJbn2RyQ5EmWc2QF9wmSZ0KYCE%2BcPuYO6b15Uotj2Kd4MItLS7gtFbkTdrFND6pvEZqv5Yv7jXAus7Pg7avo7KDot50NX3CPkP%2BKps8J9%2F3mGQIteY%2FLGPC%2BL7872SPR2br5fy8MtKBMHedGuM28%2FMZmPJMrGgi3Gb1S%2BSi1%2FL%2FzrZwO9XH1ce%2Fz7ZQ1WSoY%2F%2BpMb5FT4ua0Wm%2BJf%2F298nFmChEQ%2BTi71est4mq9VYI6RsymoRJKYidElT2FGnDTZvqtfhGAFTbeqEw68GqtfmbVa%2F1IFO1%2FjdWr%2F8BDRRtQh9XNjubEm4aWVpVonpTGR7PVGc%2BKJNoBIWF7kYi4gUV3r1U6723i6TxUl3n3%2FtM27aZfKb7THiHW9VzFSwHJ05VfK6Ar7kaB0XgPPE0BSkSFKsBUpaLihEWoA9wBt8qirh2VSOkZwXEwyrxZ5jyt2rJmSo9gX7cg6jsEUGJU9z9xJPOEM3uQQxKgkh35DNATnVyrmJ3mbCNyIB%2Fyox4wH1bg2DwN7q9kov4pFqny8oSm3RQbGgJ1QQTs6ZMLilOVYJ9v6Wha3HcJ9jddsXp9YhGUXLXt%2FqMDnvLpPNTXfNa60z5%2FyjXQOMq%2BlNmwh5egpYrdfZQZV9rI47xlRkuyTjpzsmCBSWNkAXVoK8sgYWqQJWbo1RLo6QH0YW6pxqfCnRgkd%2BRiFjUQUQ7poIaYoakgXxwFd9BuuI38H1xBxXSFb%2FpBDIKQFn7YB3dB36l7sG1FLaKiBdp1KxLvfswap%2F30lnVESgNnvjbUoT6w9N%2BXoio0qcYOIM%2Bheg940YimsucQVvli9NEcft2UZwGQwLuilj1fFr1i3NP94X%2BPE7Hpvtj6lBJfJ4R6NvWiaL6MgzWHxiN66DExa%2BdAdAbMYX6HVF8A%2B7rjEZIXAVbDe7PVI9rmN69JOLV1DOSvRPxWNPZBZf%2FNf%2BNy65BhYxxxV%2B77XJ2wfQ389%2FIQPgajXbwMsuAz%2F0IaQcXJavKbRqR2IqyZruXjVC2%2Bhdee%2F5vdnYOedpmVtR3NGXldxSzDSIiBVpkGb9by89UpEPKrSLZmyFDzMab%2FwXl2CNe7s%2FqCtTvWgG5kpBmCBlSzDS%2Fr8N4uwBwohRW63JTS1y32f0TQsPfXVGEHQrV8%2FNCfiOUVirYcBbIeA2%2BiF68rQIo3B%2FS628vYESr79ehzS7Q9LEL9UXmik9XVHb1yBO3Ngvt5935%2Bk1efkV51mzzrM0LL3%2F20avnwMeKuWyOUZg2TasSqZ%2BKcZQiOn1Iu2Vh497ALUVZiCKt%2Fgh6IvTIj1ZLRjWAkpHKOKovNwp00eqPROiAbiNEKieXwMLcXhVJ1%2FuzmLP4tfxaHR59cBdJVG1kTAgl9ze9QKUEQ946Hkb%2BokJ5JRDyf54Axur1D%2BWS49cLr0tTPEu7UmXrxcSr3XNvumv4yXzInXKH4F7Tc7p17Zt%2Bt%2FqW2%2B93k063X7VW6lALxTY7i1nBXMxcxmzQbabxz%2BtJo%2BwijYaIGMNS8AoSMgAPt84DdHOoMPfjXhF%2BkuH1tZvuFQrRCN07xGcXRX9MYxYchDe5BcHj%2BZ4i%2B42WyPc8Xofi7bbZJN5nJLJ5qr6IqRtzqNlM17SpFsnkEyTWoABEjz4JXOQvzWYuwdnV5LNGOwTM5v9r4RpQ8ZXsYodks3o31JBlzbYtNotisnm22MxiwGFXam5oN1n0TA%2FhRvshvTSDwHff4nNzRo9Dum6PaJbMXzDz%2Bx%2BFkj4L4bFNBb1asqsgH7Dyh4DvbkPtf5yMDKzEwyoaESMSNS9P9gJVA3%2FRTlwoMwZvxECFWxIPNw9gi01nOHjP32esZTtmXHnxvZd8ZtakqQ7ekajbXetpNa6ocTVxJtY%2BuSe69OLz77zh5bDR3xjZMzUz6fxrz1nqrZGcHQHfPVefN%2BfiK86LeXj%2BSc5lPKy%2Bk%2FvCUI%2FDaLFYCWHr6nbXuILTIsb5imNKY%2FrCm28fSMxPhkN1XbNMNZGuqwOBhtTSxWuTk6bw0ZaG86b1hKddePOKuBvmiguYBn4T%2FyOqOyGRBt7bKUI1GjioBC8aUKwF7Q319UgcmtFGIzCJGBqwQij0ynDsfdFGc3TS3BlNfJ25xmzniMkpXXTPvCaD3ZaZvyzjmZdudBostmhb0ORZNN2sJBeed1HXkrUsywueQH%2BL0eCPxmsa5ZpgRJSDZ11yDv%2Bjmbd86vxZfc1WcZJ3UkMq1BOOOVtvu%2F%2BpB%2Ben186d3GTwWAw2jheaJs09%2F%2BLNfZft37DALyrNj1wABMuUKbODyTVnT%2FKYbJ3Tpq8IrNh92dkxOj5P%2FYpZx4%2FycyiVcDYdn4JbEoKdQi9054iBKsygLW46FRGxAb0NPNCm8BSNCPjoKcj6EAus4SuP3rB%2BcV99%2FeTF6294dA8%2BTK6v74MHVpYNRt%2FI30e8QGTOOdfGWzzxcy%2B87a7bLjw37rHw1nPzp0KyyRSeZO%2BQQhInt3dYgvycjrPOv%2BT8s1rptaP84VeywdWX2T4ysr0%2F7TLIs6%2Bx9zib56ye1dM9e%2FXsZmePY3NDs9zlnNVt4%2BWgHJbbz3Livg4P9WWgviOMm4kCRT6I8vw0NbUUEnFvOuFKoxQW1gTsvFirsF5pb7qTUCx4i7VmtToveaDxvK9uOaedVvPRpVOnNz0Q6bry7uiSdQ8t7Vy4JQKVS%2BXPplV2ts4bvCwZu%2BKzgITtxepaPRzWdpv74muvv6RO0SorX6cu%2FdqKn%2FXWnrtp%2FZragz13DUCl5myiFW2Ycvb0PtsXnU%2Btx8pvLFbUspLX68mdegwmOif%2FNPDONajTGoUh6tU56HBJCTBASVvNUB5VIiKpc9kd7kludodSFz7xQbiOmMk5dOYk56gzL6uaf7N8a6MQOHm0ae6snZpFDfuT3%2FjdYzjzwkXXIVHoXNuCfQslQZqBZjTsoHMqrkE4jaYdgkGz2ATOgB3cPkSukD01DnV3ttb1wx%2B6arPqbkcNAHoFPzKUUQ%2BqL0k97pjbZv1I%2FegC9zTFbrrlFpNdmea%2BgIgfWW3wqkcis8ky5FAcRd1If5nNZrl2FFpungc8wpoCl1BpQV%2FScS%2BzjlASyUTVv%2FAJ46gkJI4bHX4lTnloctxPZE1ckS3%2BjG2fKIjkQFyzuo8jvYQG1OrGvJPSTu%2FnSp9PHNTl4z5hK%2F8gtXVKF6gEKiglgcKiRlCESsQCV5QIlKWKpr34lt%2FwkSx%2FJCmP5%2FcBKQfl%2F5gd%2BrOS%2F%2Bp91%2F%2BYCg5CXK2W4M9fu%2B%2F6xxX%2BvnelVuldIDCG0VQTpU9Dw4pRfei%2B6zWx0MLie0gPbyrkmRU7OwT16JGeyXLHqOLqAfVN1GPlBzWtFNzj0TRTCjogtP1NjIvu5habN5Aoa1k66wGpqriVetJgiGdwDZtKhnN0y4n9sXYnsqGmZfDSR15%2B5NLBlhoDaedEm7sxmpqRija6ZEEg2EAnTiAC8IrmFbGz1q08P9PSkjl%2F5bqzYqT9hMmptEXDgTqP3Wiye%2BsD4Wir4jCeoHbbp5hRfpB7BakUIppIlPCD30dR1GtslDz8OsqbXmejFC%2Fv8wu5X2myq7SJ8Avzv9DFUJySf5uNvq4%2BTi7W9D%2FOZrLChdwxmPNiBRqVjnpK%2FaGxRCDspVYKAW9AN1JANoo8wP4BJUlGqdgw6m1qPQ2QW3%2BOfU5%2FieLS%2FNuKpDU3uf8bcAXyBal5jMR2NEAbPAZt0K3hvxHBEDlUxfIGcD%2BN2gNSNx36nfqlAYow0puatNpRz0e4W2oahKzQHsjf2c16ad%2F3t2KTtPobnX6D8C8pd0MDP%2BKx7wnXqGGlLQcvikMErm6TmfsuxJXbSAxqNjOogJLQBLiKEHAE%2BJGTS3JoEhTrz8%2FCB%2B5YlupJ58aOat8Kv4JvregxwcU5Cp8GFAFm1FyOfto6GS2m1NGTS6CPNKkbsTdCBlnN9onMho55BX8IJZtEQ35lk%2BhtwN5A0V3RCPoD%2FyXAcv6pAtbZczRUA64JmcUf4q7Q89ZHLeJVZ5D1Ps%2Ft%2B0iCT3AHVtZC7JDCXfR7OSb%2FXja5H3zQbZL1B%2BULX1BMTEk3AseSpmnKEK4T9ekMIidUCRQFfcbj7z8gNLvzF7mbhQN8h6ZbRset%2BnQWdS%2FZX3k7WpS8P9sfo0iGS64wV516pOhjI6TZ2dApgI5%2BLhxywYoWxKUrykKJsIoDsR4mSrCTg0egMPnLW%2F3Q5Nn8BZEuzqEI7HK3n0%2BzFmuO3TtWQ5WJoG9YqCD6Gc32SxnbnVPfsxvrFXK2dILl7bLthDp6glhcsfp4bYvbSmj%2FmQ94uBTw0E73x2jbNRCvC6VL6GCFDwU7eWQDcC5FY5s0slieRDwtAbRsbLXbaXAuu14e2OJw1dc6jQ3ZdY8v7rv2%2FBWZLqvFWVvvcmwZkK9f5jS4muO9yR5res4kfkRxhV03L1RfPOiPtYi8pd7jNEsOpyTwxpaY%2FyCZu%2FAmd5Or9uS3DYaeqVOhH7gZN%2F8I%2Fwi1fEuLXvyNivibjuKvN%2B1Nc01HF%2F3h%2Bef%2FsOhox8MPd5SFucPjorQwXT%2BytA8EmA5mamHNFDVhBI5pjZbQpugBNkO8MvRub8KVDKST1Wag7D3xlin1ZF7LFP%2F79nbvCXFOY%2BPUjrT7%2FotsPXXZ4exdPzuhZuL5LUXVAn7k7PbhG89uz3b41X01gbjP1xwlu5rrvvf9%2Bpbs6E%2FVu7Nk642%2FPYRaAiUBdrmO6CDTBLPQFA1ur0uXoBR1INDMkypKpoTqnSMx5GiEdTEaSHLs0Alvu%2F19%2F5QW9Rv1U1ridT22i%2B53pzumbs%2BXFFXYC%2B%2BCGsTj5JUT%2FGCgRt3n78i2n71FHG4%2Fu6X%2B%2B9%2Braya7os3ZbDmgWfXun44e%2Bu2NZKuGZ0HiF8M4TlMPR%2BEU6rPKRJ8wOU2RFUFLex3egEsz3YqEAq0cqhAAW19dBZIlVzR61tuIdTnpXH7l%2BuXrbjPUyep%2B8cl6aXKWhPHpDcXl9KiTWDNr4mBQc8Tq%2BNzK%2FOKSbsfl79o9G20R%2BbrBXYvUg0rLHhtrc4TN81TTOWSZ0gL1ZVlOYH2ery%2F7XVUjFMbzYpg7UswcqJPQwBd0LKLabJ8IaCr2otcjSkIrGwootKECaUd4XH1%2BSdazRrfddkBU98t1htvWrbjqSqjaCguxrffM%2F5zDCpBALUycmajhd%2BR6ww4SWafuZ5eU%2BtPid4lgd3gt%2Bb%2FY9rQoZNmiXYPXyRHbRs8zX%2Ff4WIFjWZJtUdSD55AP3xtXH%2BZipC0EqdBGDA4CoYEU6gRLGPU11QhkLTBiEYPiqOeQgwTCl9aok1Qr5pFf71qEeNxjy%2F8F0GoqYPv75Yh9j3x4DuJ%2BuEzHRpAq2lMqb%2BqfTdiq6kGtzfOWsv0c7lSeMXDHBDe1MT%2BLUgx0Pg%2Fp87u2UicdIvqQi8DkxhcUwUXCedMpb4NQjwY3npTmgsURJavLwCRyEcN2HfWsDVGfv%2Fu9ZUWUx%2BPYFueUKwaNvbtu%2BXps3eVWbN1GcgVrdMnWJ7WmJz9SD66EBidag0NF1Ukep0t5A7sFCWdhzvYwHv6L%2FBehXuHqfaBwBEU7hfVLcXvS4VQv%2BT%2FvaSIl7cbeMc7ekv9i8S3e1L5xxpvMGcu1EYPbKyCiijjGXcDKckm43PqU2qNWlXusZMiqF82cuVzolUHN9NNR0HZPxFPV9V0wLtvq%2Bk4DqOwVWDlzuQLVdqFiP08cRX7aRlBVfR8cb55bWe5LExnlcsDp1vAP8Q9BucPMk1Ulh4GnN0SAdxcNHv3q9ohx1Ati4S%2FtkWjIDe3hQdkUGrGRaFBiUdiTSkI41UkMuuQHP%2BEaSQYlPQTFWJF03BNPpTu5KFAdkWgDukzsZKMG0Q1TAQQglScOaP%2FdsZ8%2BfP75D%2F9Uu5Gs3FY%2F2SxPld0DHOciXI9gqjcEidXjE%2B3BLosy0OcX3T7O5g65ROGyzQ2BZs7WbZVnO5ydLe32hMwTQ4wnnKXW6XW5LAa7oaXOIHoUl0FgLQLH2by8wSTWeAx2Y5PDazK3BqZbeJZwXGPaYhX87ZNszoDdaRxotXO1nNlpdvAPFWHDm8PqEE0sZxDEqGzxisFNnuCWetPcGrObN0p23tTZwMuRVodSV8%2BLTrOV3eRvzjQZiSjaLYS1WEJe0kNsJlZu9LFun7%2B%2BwW4gRDRbaxw2nrOGm%2BxOj9cmtbp9ZqeTM1m8UXfQQCSTVSQox6pvtjot%2FFpHvIUjJovFEoYvHYV9C5Y%2FxN9OfcalvII37UEhTbTg%2FAQIaPb4Vz6j5u8%2FaViycMod%2FfkDcpu8QZbZoeBi%2FvbzP3XPsZvOubMtaPHkD9jt6%2BU2O7vqU%2F9C9SMvgrXpQNG%2FE0oJxun%2BCiElUa0IKQSUwERxOntKSV7ekcuh9VBZBBo3VUcB58ofKBHCwLyf9qFosz9Ibf8dGqwaBMjRig4SGOZ2UkWI7UiO9OfUPdxOYFApUZyfpY7mgEc5rtNGGk2H1lPhAk1Hp%2FVAMqQEHEUfEYkkUQq1JMdzsX7kklRrTrUi1wMcDjmu1YYfATj7Y%2BpGpPEBXuoQIj8rR9mgCl4C9yqmF7xnVWxGVniNqtpVmXBvQ6iwni5YQ8a1jYrXtc2J13HvgkvqWxuva1sbr%2BP2S5ceKGyBwDv2DbrToe1u6BkAJV7xnVLUaq0sJB8pFqcUIPi3yuwxi4JuLr%2BP30f3OkPQ72aO0xYo3%2FEsmO3QO5qEF8S0qQH0UsKXv0brnl9%2B8M7jF174%2BDsfvPOl1au%2FRL5%2F9DsbNnwHL2pHR1NTRxMZhJtHktOOxLxErPF6YlLvpC9YP73x%2B4ofw%2B3xVdrHcDE0dQQCmCRgvt9b35xINDf1CDcRSfJ%2BpYl%2BSf8YcurfmXP5F%2Fkj6J82jNsrkWiEuhVlgFfyNkB3S5MUzLhoNiwSCYcxQ7Ui4J0Xh7fmqRbaPa1tzujxkBRlsEHy0%2FOM4pYLPb7g9O6BQJN6l9zQ0OGyCaZz0vMTbHOzXfQ7a2tsterTcqxeInODoemdktw%2B1SbVhKwtW9ffe8VKadK0OVuC3bWzyKm5LeddsWTeorWyY9IMtUFutdu5g%2BRn533qkocdvLs2HmhU75br%2FMmWtD8zA3OP2t1ea636jEzqYxJZGAwFiDEd61oTsrRuW3%2F3pYNi3bS%2BRd%2BGjOfVpAPNd6y64Gsz1GaZleWIPoYL%2Fv9mTeQBENVEguiF1aC4YeXxFETw6QyPfn0m9g8IrMFAvKM1EI11DARnbqibHk%2FIojy5rSdgCyZi06y8sS024PeuO4MfwQ5Y9yKRZCqyYaF30vzeHlmUprR21tR0t0yz8KZY66zWuGvxVQB%2F36kP%2BK38t2Hu6NQ9SFJfw0AdpqPEK2qTMpf2VCqJwqPoJezTL824b8akoL%2Bx03nhh%2BoNo5e77psxg9Q5LzebIKD%2BfsY34f2MtB9fk9v5b8PT6tYrgv4kRPwd0q9z3gdJSJ0653KjCYPwCaR5aUY63eW48O%2Fkdo33yxX9wCiMv2QTrk8eGSI6Ag6moG9t2P%2FF7GRNlDjl0gw7pJ5aOXXqyqn8SENnXBmbSwUYLyqJjv3UmY1nKr4t80no0faXsaIEiF%2FBRaIBnItSce4OUif7W6Vm9T9H1X9Vj71BEm%2BRdmIJQST%2FZfVdudUvh9S%2FqqNvqT98g9SQ3lHibZY0mRVHooyDN%2FFHmTgzjdozKw28NwQ0hwN6BCoPKaEk3YtKwNhwRLXuk076CGoZNXDQcRwZvreTZY9EZi%2Bd0s4%2Bztv8iei04JQl6ZbDD2eHV7X4uHuFVfPrOmcs6m6Kr7hssr%2B1VZFcEZ%2FPdJkn1hOs8SXS%2FNFFgqt94PIZzZ3tdaL6Q5vo6piSzdy737pwsX1VyxUrF15iJ4uNkq%2Brbyg1Z%2BO8VsNC1UmcvORPRfxtPrfRwL2p%2FoA1eZp6Z%2FaGffoewaXcA%2FxBlKlQLfhQL%2FoPgBGP3qsA7IQS8qDVNswHKRSheDUvA3Q7MZoRcJMxlEygujn1QdyzfPfq3dEp%2FbXh5e5YXW2Ngfvza0ZF6UgFL%2FE0fTq4LBlvTE2qb%2FKuuzYSXVnjTfM1osvqMHVbm9950quIZlbqaL6YP7jk3kUtA0GnX2nvq53f3WoSsvEdDRnULgo2fN7lNZJgI8%2FVWi33c3bBZnGY05%2Bdm%2B3qc7fNmj4YGKLj2nfqFP%2Bg7jdDlxEV5XsJQZP6hYrS1l0VQr4c69Xueixp90gnZPmE5OF22j%2BSYEWHlZ0K%2FHgsh%2FZtsbh6h2DNRlvv6jJh9XaJaHCZDiUDKNTMkvb8vsqCyf3ZNdSmO0fa0Y4baJTtpbKzuVzeeSI7fCKr2Z0WypapnXJ4gnoWy3PoUIlIQ1TXdqhQJIXp9Wx5fYdpeWh2TY5D%2BYVyKd0jw3iumwi%2FBC3cEy4o83QlZnW79MrCgCjbhWXBlRZVVZZv4rIKpXC01HFlHdHLoeWVl6UVc%2FJ5uGm6CViW5mulYMk%2BHqNYr0AyUPivLg2oMs2MPqtuhHyRyiwvNJej1Br%2BfcLyoAyu8D9B7bgmzUqfFobF5nKnK4%2Bt8MPJkI%2FxHUNWk117jugWF%2BxazTAALQn6%2BUE9lhoI5ApGA%2FiuJOsrlNP28SVVuBVajXmircLel46w2bJS1Q0Ft0KDuikDFL%2F3pYrid1Q4FvofwRIo4R9h2ftSwc6jHAMqLcCql8YPHtlzGoByNXYN6v8hXnRaOhUvx0sVLCexwupGDR4NOYC7PePa5keIPACnuAdD7dEadRuTIiS6Lb7uskb381My5yjzF8lGCjBRqdwrWJCagfB3yCy7XT1i92hbcZ5Ci1FJkgYMDf6n%2BjspIsHFjJrTOdzSMuOa9DbDcj%2FnH9N9bIoGVgzHPWIQuFuYtaMRaq8eCKI0gEF6lPOZjBz3EEvaaxwSUT9U%2F8JbJZPJJLBLolH1La%2FRbF9AbC8JJjv%2FmMnssKjLRBJyqj9QXxNko0Ux%2FX79epfiXkm6fmKwF%2Fen1HLc6LxloXWKvGa5rVCVL83VuiPcDEX%2FK5pTXOxHfx6HHB0t2FI0qI2rCZFTrvPWU67zVuS%2FkTsLnc7IKhFg30e4FOkqNSfH5PtkmUy6Cpiv%2F36k2sbqCeCFNa%2BURpoY0sZoYmCgCr3qgZz6s8I0gP1bYiR%2BD79H56NOz0EVWCTy2%2FfffvSCCx59W7uRV9995eqrX8GLesOXNm360iZ%2BT%2FEl3uZqL%2BFyzSZ8XxpTiI%2FG0nkT4zznFZ0t4ipMz5v4q9ssqbdKUZt6u82knPCrt6PZwsnn0XySVnyPR1ZXAn72yx48bWJsu7apnI3Hy8bygUK5Js32qcytapqgmn95uexccj205vGgJ%2BeuOeG2SORmKZr%2FqKzcx9SFctMJdwMUFZDJITs7dnOp1EKZCxg304Cevyfya%2BvlKqv6aXK1qIj3imL%2BL6hL%2ByvUlFfE0VKZ7E8gBY3M%2F8VoJCFgizH1W6VyC76nH6b7jiibYVxUmVIEspry%2FLgZIlCeP11Z4zs%2FAwvVwtGFEut5S1JY4lfyT0N%2FevOLo%2BrUEgjcqc9IkGpQbv3iW7Co5b%2BKgjvpzYdH85PLcc4X21ouwEGl%2FS4qnUAvoSlXUUhR1eKr2VWFTB%2BGMl6FsiQsVD1R3urlAAIoSn7JQkmiVVCHSpCwDH%2FqPepXQ0Db77CJOAImohB%2BRPWr31ev5g%2FkE%2BzTa4lbvZo8xdWPffQu9yJTPCNB66s%2BzXoJt%2F0L6hSoCuBIoK8fnBGG87OoRckJpLqyWe4YbpGi50g0%2B3I3UD85Oa0fzubfoXxPLbW3FDWzigmyJeM0tQkax7PqTy80%2BUxfUHPlBZIRVNQ%2Bv0xRm8REKPoLmNr0%2BUo48v9GFbXPKylqQ2IKm00QddgyWGMROCTxdLB9nCY8P7j2DjlsV%2F%2Bmfr0C0r%2FNkeXbbpPlOTBBwT0mVz1zx9S%2FwJecBF9Wgv3p032iP2v4VSgfgW2G%2BHUEdEXU6iq4CtpLJfIN9XQG8dwa1VoO8XC2SrPDDyCOQptXgbcPvlAgBfxBoGwftQKeKFrNTASPt3pGGqDt%2FQRasn2kri%2BH6L80MJRsmVYJrAKyDItpJUy3%2F15WYIJqcJ9Q5N%2FLFJ4c3dc1URpWl9hW6mu50MUIelg4ucTPf15zs5DFo1c0VSp1tKB9jkwIyuM45kb%2BIP8gHed%2B6jO3v0KbIknzLy636E8KPTdCuUpB0wLo9JKnAO6pv0vS31EtBha%2FfJemkgLVVnd8KCk4qBTpQ5m7FbifBKrPJcq0pZAFVG%2FXbOFz%2BTcq2MLrcmV28Nmi%2FOHskh82bau0k8eWCaPijQPWQ5lUvslwVCfHkXBMIehqUgtDNLeauH1huvZTbYmw%2BluPjyWoNGEuxRLR7LK5fSyXFUyK7PURQv2v8D3XOt2NJ6liBbmPGOsakw1kbeOs%2B31Wm5qpH%2BiJWSzqdPr2O7zc2TmtnrzCig6bBd%2FvgQmzOlz0STWIlmZEQfupogOZFHUZ7EkUnMn0RrpIMqAgHRJAOjIJ3yGw1I%2FMAp9q9S3Q%2FclADNm1wEeO%2Bxbwg5OIYHZLY3ehG5lJk2xhco%2B6JWybpEVz2wrR6hZyD0QXZbeDVB%2BonmlimpkWprdAs4WEZDSQppsDlcdCBJJESIYFuAtUnC4GIF2C3Uu2Kv7L1bdz6FxtqxpG4TqQOqOUNAJ2HLvPWA2GgDy4O4vaDrtyl6P%2B1fAll%2BSyFcQ28GHqh7fvvf37udylf0fNwhzgz87Y%2Bcf5x9GnF6ygHu18sAbipWeF0YPBgp2GaKeQduxxdEr3SgbH1kvH7tvqSLhedomOvZyts2dw8acu3dY%2Ff%2BucuMtCuP%2Fe4zC4XnH3OLZ8ZuxTWxy8dJfU5dhDeKPSlJy5pn%2F%2B7u3XrJhmr9C5CuleGflGQocKnlAUaRKp0BAHV0ZwUt9VCqk6zYOgRIuMfePJzdmBdpPJ7%2F6B23%2Bf%2Bsp9NMDZevovvfYHG5dGPISQq1DojqNckchVrCcCYz%2FQ0hI0m3NKDRfkgsrnamo%2Bp0CAq1FyvC3a3Nak%2Fs5VX282x9Ufy3E39VAx6o7LpCvO2wK%2Bch9jNqpJCutcIOooKnYWtDK8gTRVYygRQfwgzKM5%2BjP2jOZdx3r32Py7rQUPOzAnoRs95NvRAR0qLGU11Taqu1bUYSzMcWjMEir067JQQHfIrLBHsrgv00%2FWavd8HRLMEEYFSW3HCSNQehnrHztKqHcDyo4VfZ6gPKCR%2BgufwA8GegxUEo4A%2Bgd0BASHiH6jYMLIsUdQJTs%2FC641KN4oCHWolCMLlMfIdtWKScjx7SM5LD9HnfmhrGI0S139UWfUnxgOXdJFW%2BAMcGjKr6eHAttHF5sUoeArYKDcxMSYcKA%2FxUDhPiEOEAPafSIUFArN0r24ynI91EPARDXvIDYyvqZaWeroBOUABQA%2FE%2BDXC7PWafDLQY2oiwpUEyj4RQtVlUp1GrM7In2p2A7VuiOW6otMiGOo5Mrp05ejVuTy6dNX%2Fk%2F7mybZQ0nUmfrbx3U4KueDnlHm5wdh8FFeKnoaKKh%2FTK18StOPhwG9Xo5mqXAxvw%2F79YQwwDR%2BnAKQQ4izVXioB84qcppWB7IqjU45z4CE17OvF1Dw%2BoTFqxtz8dxwtogBnF9MjIl%2Fin%2BK8s3hM9laIn0TiCbTAXL0T798bPXqx36p3chrv0O%2BGC9Xaj48Ecv8U8UEeBvUEsDlTepiU5OvlpeNGvpnKF0RvUooWhIjnx6GeBapXCQYTw9DNg6%2FOC3gZjp76oNTj9Kz6Jqobxb9NDqc08vcKReOpcsQV2K8InXFaXW3aI6Ofr1k48rp7CX7rx%2Bv1UKPsfvzQU0Kc83i2VdILmd2%2FyX55zT9luN2%2BCu4nKfwPcK%2FCvDVU%2BpHh8%2BLaldIf1fA5h3ndT6Fln9%2FW%2F9Ce1vndfvJtnPVO2xhm3qbafHVCN1X363UXHq9xuVD8OSD29Z8pZ5cZrern9cAdGW%2Fuib%2Fud%2BVK0L9a42r6C90kL8KzxwLQw9NkIQJL0ASU8M%2BVG0KsUdgdvpgP%2F6NqqP0%2FgHZFUfGEijZLHpiIgvV5%2FBltrj8Qd7XQd5p4P%2B7tJo30NMO6VGBwahSPMYiaaBYoLY6uEnciyhhh1Z%2FvvacG%2Frjpsvnpzs0B1Id6fmX8119l88XnOxe%2FuGrzzHcdu7UtY3%2B2vmXN5zUyj3ZcPl8p1sZSs6%2FnGXtwrV7Ka0XZdz83fwjjINpZWYw85lL8BRK4nGyIir2RiOsEyipuEcIakpGjWgBjLiHWOgj0Yi34gW1kKPxHt2Na5q%2Blwg1RdRSpFDNzosb44YJXnAfoEOpZW%2F%2F6u1lhYA6leevezbI26zNHO811M2dc5HFxpk4i1jPC0s21%2FBWW5DnPQbn2X1WK43%2FaM2n18DfSoybbNHijFpamzXI31eRibGUOxSu%2FlT96YZlq1Yt20DaSBuG6knw2eusHs5EPBfNmVvHKdaQzcDfz9ZsXmLDWGXy2U5OsYSsIn8CS12jQIyD12KKqZrLPy7mSPdICmd6WGHG8NDZkkHuE4h9TU8FpmUO%2FVjC%2FEinToFyoNDz2p9XD6g78WgQdPG7Z3R0T%2FZ5dTM9lsL8Ktek7szl2L%2BgQwGgwkZHc2g5Su7NvVqwGy2Ua4KSXUwt1X4PaM5paaEu6jQ5zVFyNabxvUksVt2T%2F4VeamYPlLtffdQsk%2B2sUTY%2FzDXl%2F05W53%2FBz9UK3p7LjapZ2ZxOm%2BUlZXrL3HHGqO8%2BwVroDaCTTnTxitMxmiAAYQzVJQH%2Bnj3oIHnPaN6Zq6sNSLjBl8tKgVr2mj%2F9CWi9dnKca8rBQBsd5R1tzVlgrl5pbnPw6kZclCr2CHxMnHohLz%2B3KRQokzALyeIKFU1TNCiayJdoHvDYe7K6mZLm8S3uJ9dojuaJ62%2FqN%2FtjQxnSnhnKPw%2BLNrLi8ZKyJ3x1YhiI1aNAtP6NzCGzYv3DmaGh%2FLvQZnt0evgIhTFV0kE%2FPYxAnOHhCQUZdCWY5JWJwMzlAGl1mpNbDU7yyGnhRMILsYhH3VRAijrPcBU8%2FCj1Y9NY6cnGVW0CjTLaz7E3epvaT%2FLtTV72Rs%2B0WVVmd0dz%2FMGTI5F0OsIviaqDlbbO5X6xT3PeXbXHRtf%2Fz%2Bfdka%2BeKPr8KF7IF4vBsT9MFPuPJMBTBMq9hQxXelQ%2Bbewnf18ap4Ib%2BmSMrtDU5zqlD8QANa5MBGh%2FOwOvSDfcV2d66mfEWsbGWmIz6nsyZDWQSmqmxDneYyvjHPmRXHZxeueyRGLZzvRioKnGto9nIPkibAJA16adcOZRQr1iAP3bUyBR7T4RgAWTKxhkCYFwshq%2B7iV9r0whk50cmRcTg4fy5x4OmmNkHndIA2%2BYuMbmE9dwGYB4KFTsvnDE6Ah47r%2FfE3AYI%2BoXADpkdlENcZ8OZEEf8FFGZNxMs6ZLpG3SUFLL7Q2kcFU%2FA%2FJsw%2BvWDa%2F7emewLaoeibaF1B9qUNnuqWK3%2BUfXYVL1v%2FomD15xxeDkPnXTOKSVcCbDGtOu0YQNpGAP7U1HU58UrqGu8xIbHtkQ3LVhb7Dx46ET3Ffcm1q0YcOizNmf3bC3VjWfAcpSv3MyTlgJ23FHQgmgvk%2Bgk8pL0mcCDOn08MDAQlf%2B%2FSlTZ1z12fnqntOhbOTL9%2FZdevbAPN%2Byby1f%2FuUtC%2Fixm8ZBo59LTXEW060hGrTDplNprWd58fwB%2Fb%2FE27BdS%2Fs7U%2BrGVCeQ46nzaw9QccnmZerGZZs3Yw9aVHt%2BKh6HN4ti6lxIhT%2FwahnZtWwzlY9QHQ2c79C%2BdxzvVDKy8GqKWQERO9YAKbpsDUTLdWV5dE8PVPjvj9pqw7ah%2FPFVtkit7aj6G5xY9mfJrCz1j1e0BcnPol4UjtrCdbahIVtd2HaURujnFJR8CuOuUUfhrGhgKKgjCYNSvCc1WKlEp8wHUaAYynFNyzZn%2B2MnYv36dbMDBTonl%2FT%2Fma5IKAyEGz%2B4eRnVtaX6tss2o34u8mWorFtuFgm4A6qK%2Fyp%2FgLEBVat5WnPDdKA574ubuFJ%2FIUfZ%2FY2Nt6mN%2BZNNTSTaeI56gKwkXerTe9DDHUw8%2FH35FY3nNN7GGuBKWhrV9ep%2B0k1WjNWVaHkW1yA%2BQHWNu8rtBw2a5YXuE40rs7%2FGA%2Bj09V3hA98yRnFPOGr8ltGlsFdD%2F7tRce3LH6Trcneuiy7K7J3khKu%2B3qUaXPWaX7T6%2FKfj9BX2eZq2XAcZT79u1ClJzUtHUqfqSMWBcZS43Ena0cUGLgpkKxB1QM%2B0Fxz10wgg6r5rltnFpH05pepUq3Y2HfYqeKRntmUFNz%2BXmcOs1H31U6cC6RTVLfCg7RNBF1UF2%2FwBgu0fFQtPEU1sSg3VcNsR7dWq3af87tUFn1l3ltXpaJxpNvtcZkH2WmMst3JqRpxUH%2BWC0E1qOGtP66s1MYv%2BVLu8%2FXFXvV%2FZbunYYBeVN64ls0ur6NzpV9xzlmQwB5qC4Tq70WC0tk8dWJXeHvkD0h9zJOM0vD86%2F1NJMaIAolctvlByferCsqOKDKceOfUu1PsmoFCamV5mCrMUOCi6V6FJosMF22AcrKJgQDVhfYh6tepp%2FlYgvnCEAbJQ1L0rOpajEmRcasMiPfxhgGoVo4rwreQpV6fUJHH2e8fa1s2c13Apl1b89a58ozdoap2sjgLN9uISl7P1DrulyeIkt0zr6JjWocoPOZsaXPb6jtqBblsgsaRre2xHi4nELm0MhG1%2Bx1SXwLpFi53b%2BaHRYo%2FIrbZtuWAKu5cSEXfybnnmUCaXGTpQr0xK2O2WWY76f%2BnAjNVf7nCZHU5XqIkTnpt6VtvsFlPXg1031g%2FVRdpkkyVpD7jnmax88QwDvg%2F66NnMRdRXTcGTmQc3cuINwN5IQqi0yzb%2BYFVHuVqI5s4ADfg5oE4ybDLd28mFSFmYvRoomsWXEdLU2Wl3GJy93ZNb%2Fd5gqmNaqJZSO1l6PVRy0nZIj%2F45EetjLguh1rLqR%2BSK0hO6NrsqcNX8zoUdjQYDJ7tb4os6%2Bi%2BY0qpY2AWlnLRDWdGFTfGY1gV0zNAtJ7pdo24se0D88AwLY%2FgZmE9iuP4V5v7CSR%2FRThaHLh%2BUeBkXwU6BC7lGOevK65udTv%2BtS%2FPfW7qj3ljTcj3b9OkbV85t8xsMj7Ddj7DGpthZKwKPvso%2Fc%2F1K9aLE12fMWLV1y1D9ua8lyJdWXr%2FbG%2BnoCFutf%2FmLILe39ITUV4igr3876fpX5g2zeB52sWnIL4fXHlgeUzOx5QfIvJQyrKQE9wHUqVq%2BPEaOrz0wVvNbJZVSfsuMzxN4l9PkedFzw9V5Dj%2BnzpgoT4ZxCxJfC5RWLc74YVHxKlExCYt0JAOMatREhHBSCAtSfod6x6Ls8HCWECLwXZ9nd5Dz1T24JUdWs6fU3%2B%2BfcnT49Qe%2BkBs%2BwdsMZgPXMp3U5S958snPP%2FEE7bvkOPCuTUDTUQ%2FUzirLhML9yPahoe1D5Fj5jWsaoveyP00PehdUAHk%2FseDVWsvDWXXXsyn%2F4wfpXc2V3%2FQxli3jl%2F5hj%2F83avSCfpTNxOEKLmTjxOEKuxgNlsQn0xgct724mhynupNW1Ph6o3RYS3%2F%2B2TJrzLlkFz%2Bip3qCHKf6eqW02QJLjBYuuj4sobhCWqa%2FYHGEHpcnumuWSOhxeaL7sOakNR6vvmo%2BYcfFA8UFXEPZf9UjyudIOyNwx%2Fi90DdsujS%2FFX2UAwvWSVK4NxaMhAGw3oowp%2Fuc8CTi7D2rBgZWwb%2F60faR7SPsEbjkXy4G0XaqhXPwe2cePjxjxuHD6ssQuR1fq6PF0E%2Bo2t1nePTn8TUmxz%2FA3crMoCc7egESuoTHYc7mYdg6etORoOhR7BBGD%2BqJopELrl4S6cJNRtEAsLP%2FOdvnJq0Wo0GolY2Et9VFB2Kf%2B4bZvVyxfOMz3WdFfSIryj6DwWghre7aQbdiDrkTL3A3vNDuDpk93HqXwam%2BbWmUJZfNn5ozKV5Pmmq8PF%2FjVY%2B2Tlk2M2RzSXKjmbQ4RZcQavEYrN%2F9rlXwtIQqzxQNMzPPfHYLvuPoO9TbT8bpGw5CQPGd%2BSyX%2FCyf0Vxjd2R9NmsunnXYa8xGHzn%2BsSfM5J0y0DZEXWWxkXjcR75KBLNLHi7XvX2G8VOrf4Ykg0AMdBESIpo7MgAfyakA6rkqpI6UjNs0px7cMV%2BD5BF49Tez1VGnYmq0WIijp985m4Sn2gJR9b07riPPFo97OYbUZbxJCpot7H%2FlpZBicglCPN7WOfJkcHqc3ElWqvvz%2F1E6bIQrG%2Btz6WkM1SM9FBTR7FSs8KyBBytSmNEoquJNFN5EQyTiCrnKDx1h58yxCepPHU5nxGoxEQeeOZi2m80DxNxncVhr6BmEfUarxejw%2BWSiHhWk19bSY7aKR5MsteblJpfTLtjimBouXsm3d3djjYM%2BwEW0El9dM%2FueVRWIsXwe43R7SgbVZqrnqoJ1X%2FkuF7pcgf8duv4q6vayV5U9zMV91GxO59UUjW8rHV6u799WzKMT7umRCXbYUKM%2BfoaCcwgaoqZUtmodV3p%2BX7akb4dnU9B9La38RPFUG2SCC90tVA4XwEFhyOpZZrUCsgWYHsczLFBBVGNtstoN1bw0Z%2BO4fYIbvZVt4EUcJEKOhHeincWqONw%2Bq6w5Go%2BWGOSR7LhKV%2BKBqbBPpfUvOf9QqkpDyVhBeyyZQGMsdA5FBUqvFMtUyGq9vjnsAJU4UcrxldP1CCaofyDkSAifoP5QwWx%2BSyUGxp75BzGAvtG7uQ38LehlyEQMeh0TeE6Bm7tYdXqdkt0uOb3kfYlNwmOdDyacOq%2FqlFo1v%2BPTmTi3E%2FglC9W11b34A22zmLzvb231Q0L2Bgg60OTW4YdstO%2BYOJnO38TtpH7zy9ymokWyA79qlVSn38HtpFlImFnhu3b4boNWXklOXV0Iwo7lQ1hrZyPFcwtjwFP7iEKSHSSJw509kh8kj6pr%2BH1jR7km9vcvqN9657vffefkv%2BfKxge1X%2B7RdjYUPIESN7gTvRkB%2FRMYtEkaVkdHApmdBPpnKmz0n1xSWFOyVIuLrinZwpoCRe6kyiVZoHX088F%2BUX4%2BWKS4iBTP0IWxGtZgOdMaV4KTayqHQF%2FVihBwTbgDXTCmKoOBJeNhwJMzEVjtjIFLuU38fPR7hqNG1JS7g%2FqRCuy3vmQ3W9Vu8qbVbP%2BSzazGRJH83MzP90Ck2m31mMjP8TiLn5uwD2Ugr2PFvPQjB5BnSJvQxGQZZEB%2BLopqzGzDbMmbkAPkZVJjeO5FzOSBKCgJze2ZS4Gemc9twrwY6u9H61iUQTcRvtdT9RW3tRxAWwFs2tcuJRnI6xjmBdWjbgFNRHMHiF1uHYBfUR%2Fut5Ug2jXAaT96%2B9RH%2FFToRwIzGbKmVJ1AZQnoabSB1yyIg7ByAridHApPMjyw0OiV6RjSbCuzwLAvFizBliWJua1tsuAgvNPbmljYbpt8lkWam7b3XZiOiKJskMOtmfScnsbPW208knwjuXrXK4Q1iKIgNyYXXDVT9C2Ye%2F78GQ5BEEXfFdde2RwauOysdJNL5AzCy84ard%2FnGAVN8alecnFdgu5Gbd5DJTL%2BhHZK0vApVy3OfU8XTSJg1TlssivsPYUlIqvn66PzrVTymCc4wgF6SDNR0pDf%2B9Gp%2BVnsUH5WtpHYsuhOaey8zdwLN47V8MTbm78g687%2BP3cx6tcAeNpjYGRgYGBk8s0%2FzBIfz2%2FzlUGeZQNQhOFCWfF0GP0%2F8P8c1jusIkAuBwMTSBQAYwQM6HjaY2BkYGAV%2Bd8KJgP%2FXWG9wwAUQQGLAYqPBl942n1TvUoDQRCe1VM8kWARjNrZGIurBAsRBIuA2vkAFsJiKTYW4guIjT5ARMgTxCLoA1hcb5OgDyGHrY7f7M65e8fpLF%2B%2B2W%2FnZ2eTmGfaIJi5I0qGDlZZcD51QzTTJirZPAI9JIwVA%2BwT8L5nOdMaV0AuMJ%2BicRHq8of6LSD18fzq8ds7xjpwBnQiSI9V5QVl6NwPvgM15NXn%2FAtWZyj3W0HjEXitOc%2FdIdbetPdFTZ%2BP6t%2BX7xU0%2Fk6GJtOe1%2FB3arN0%2Fpmz1J4UZc%2BD6ExwjD7vioeGd5HvhvU%2BR%2BDZcGZ6YBPNfAi0G97iBPwFXqph2cW8%2BD7kjMfwtinHb6kLb6Wygk3cZytSEoptGrlScdHtLPeri1JKueACMZfU1ViJG1Sq5E43dIt7SZZFl1zuRhb%2FGOs44xFVDbrJzB5tYs35OmaXTrEmkv0DajnMWQB42mNgYNCCwk0MLxheMPrhgUuY2JiUmOqY2pjWMD1hdmPOY%2B5hPsLCwWLEksSyiOUOawzrLrYiti%2FsCuxJ7Kc45DiSOPZxmnG2cG7jvMelweXDNYXrEbcBdxf3KR4OngheLd443g18fHwZfFv4NfiX8T8TEBIIEZggsEpQS7BMcJsQl5CFUI3QAWEp4RLhCyJaIldEbURXiJ4RYxEzE0sQ2yD2TzxIfJkEk4SeRJbENIkNEg8k%2FklqSGZITpE8InlL8p2UmVSG1A6pb9Jx0ltkjGSmyDySlZF1kc2RnSK7R%2FaZnJ5cmdwB%2BST5SwpuCvsUjRTLFHcoOShNU9qhzKespGyhXKV8SPmBCpOKgUqcyjSVR6omqgmqe9RE1OrUnqkHqO9R%2F6FholGgsUZzgeYZLTUtL60WbS7tKh0OnQydXTpvdGV0O3S%2F6Gnopekt0ruhz6fvpl%2Bnv0n%2Fh4GdQYvBJUMhwwTDdYYvjFSM4oxmGd0zVjK2M84w3mYiYZJgssLkkqmO6TzTF2Z2ZjVmd8ylzP3MJ5lfsRCwcLJoszhhyWXpZdlhecZKxirHapbVPesF1ndsJGwCbBbZ%2FLA1sn1jZ2XXY3fFXsM%2Bz36V%2FS8HD4cGh2OOTI51ThJOK5zeOUs4OzmXOS9wPuUi4JLgss7lm2uU6zY3NrcSty1u39zN3Mvct7l%2F8xDzMPLw88jyaPM44ynkaeEZ59niucqLyUvPKwgAn3OqOQAAAQAAARcApwARAAAAAAACAAAAAQABAAAAQAAuAAAAAHjarZK9TgJBEMf%2Fd6CRaAyRhMLqCgsbL4ciglTGRPEjSiSKlnLycXJ86CEniU%2FhM9jYWPgIFkYfwd6nsDD%2Bd1mBIIUx3mZnfzs3MzszuwDCeIYG8UUwQxmAFgxxPeeuyxrmcaNYxzTuFAewi0fFQSTxqXgM11pC8TgS2oPiCUS1d8Uh8ofiSczpYcVT5LjiCPlY8Qui%2BncOr7D02y6%2FBTCrP%2Fm%2Bb5bdTrPi2I26Z9qNGtbRQBMdXMJBGRW0YOCecxEWYoiTCvxrYBunqHPdoX2bLOyrMKlZg8thDETw5K7Itci1TXlGy0124QRZZLDFU%2FexhxztMozlosTpMH6ZPge0L%2BOKGnFKjJ4WRwppHPL0PP3SI2P9jLQwFOu3GRhDfkeyDo%2F%2FG7IHgzllZQxLdquvrdCyBVvat3seJlYo06gxapUxhU2JWnFygR03sSxnEkvcpf5Y5eibGq315TDp7fKWm8zbUVl71Aqq%2FZtNnlkWmLnQtno9ycvXYbA6W2pF3aKfCayyC0Ja7Fr%2FPW70%2FHO4YM0OKxFvzf0C1MyPjwAAeNpt1VWUU2cYRuHsgxenQt1d8%2F3JOUnqAyR1d%2FcCLQVKO22pu7tQd3d3d3d3d3cXmGzumrWy3pWLs%2FNdPDMpZaWu1783l1Lpf14MnfzO6FbqVupfGkD30iR60JNe9KYP09CXfvRnAAMZxGCGMG3pW6ZjemZgKDMyEzMzC7MyG7MzB3MyF3MzD%2FMyH%2FOzAAuyEAuzCIuyGIuzBGWCRIUqOQU16jRYkqVYmmVYluVYng6GMZwRNGmxAiuyEiuzCquyGquzBmuyFmuzDuuyHuuzARuyERuzCZuyGZuzBVuyFVuzDduyHdszklGMZgd2ZAw7MZZxjGdnJrALu9LJbuzOHkxkT%2FZib%2FZhX%2FZjfw7gQA7iYA7hUA7jcI7gSI7iaI7hWI7jeE7gRE7iZE5hEqdyGqdzBmdyFmdzDudyHudzARdyERdzCZdyGZdzBVdyFVdzDddyHddzAzdyEzdzC7dyG7dzB3dyF3dzD%2FdyH%2FfzAA%2FyEA%2FzCI%2FyGI%2FzBE%2FyFE%2FzDM%2FyHM%2FzAi%2FyEi%2FzCq%2FyGq%2FzBm%2FyFm%2FzDu%2FyHu%2FzAR%2FyER%2FzCZ%2FyGZ%2FzBV%2FyFV%2FzDd%2FyHd%2FzAz%2FyEz%2FzC7%2FyG7%2FzB3%2FyF3%2FzD%2F9mpYwsy7pl3bMeWc%2BsV9Y765NNk%2FXN%2BmX9swHZwGxQNjgb0nPkmInjR0V7Uq%2FOsaPL5Y7ylE3l8tQNN7kVt%2BrmbuHW3LrbcDvam1rtzVvdm50TxrU%2FDBvRtZUY1rV5a3jXFn550Wo%2FXDNWK3dFmh7X9LimxzU9qulRTY9qelTTo5rlKLt2wk7YiaprL%2ByFvbAX9pK9ZC%2FZS%2FaSvWQv2Uv2kr1kr2KvYq9ir2KvYq9ir2KvYq9ir2Kvaq9qr2qvaq9qr2qvaq9qr2qvai%2B3l9vL7eX2cnu5vdxebi%2B3l9sr7BV2CjuFncJOYaewU9gp7NTs1LyrZq9mr2avZq9mr2avZq9mr26vbq9ur26vbq9ur26vbq9ur26vYa9hr2GvYa9hr2GvYa%2FR7oXuQ%2Feh%2B2j%2FUU7e3C3cqc%2FV3fYdof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D92H7kP3ofvQfeg%2BdB%2B6D92H7kP3ofvQfRT29B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6D%2F2H%2FkP%2Fof%2FQf%2Bg%2F9B%2F6j6nuG3Ya7U5q%2F0hN3nCTW3Grbu4Wrs%2FrP%2Bk%2F6T%2FpP%2Bk%2F6T%2FpP%2Bk%2B6T7pPek86TzpPOk86TzpOuk66TrpOuk66TrpOlWmPu%2F36zrpOuk66TrpOuk66TrpOvl%2FPek76TvpO%2Bk76TvpO%2Bk76TvpO%2Bk76TvpO7V9t%2BqtVs%2FOaOURU6bo6PgPt6rZbwAAAAABVFDDFwAA%29%20format%28%27woff%27%29%2Curl%28data%3Aapplication%2Ffont%2Dsfnt%3Bbase64%2CAAEAAAAPAIAAAwBwRkZUTW0ql9wAAAD8AAAAHEdERUYBRAAEAAABGAAAACBPUy8yZ7lriQAAATgAAABgY21hcNqt44EAAAGYAAAGcmN2dCAAKAL4AAAIDAAAAARnYXNw%2F%2F8AAwAACBAAAAAIZ2x5Zn1dwm8AAAgYAACUpGhlYWQFTS%2FYAACcvAAAADZoaGVhCkQEEQAAnPQAAAAkaG10eNLHIGAAAJ0YAAADdGxvY2Fv%2B5XOAACgjAAAAjBtYXhwAWoA2AAAorwAAAAgbmFtZbMsoJsAAKLcAAADonBvc3S6o%2BU1AACmgAAACtF3ZWJmwxhUUAAAsVQAAAAGAAAAAQAAAADMPaLPAAAAANB2gXUAAAAA0HZzlwABAAAADgAAABgAAAAAAAIAAQABARYAAQAEAAAAAgAAAAMEiwGQAAUABAMMAtAAAABaAwwC0AAAAaQAMgK4AAAAAAUAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAFVLV04AQAAg%2F%2F8DwP8QAAAFFAB7AAAAAQAAAAAAAAAAAAAAIAABAAAABQAAAAMAAAAsAAAACgAAAdwAAQAAAAAEaAADAAEAAAAsAAMACgAAAdwABAGwAAAAaABAAAUAKAAgACsAoAClIAogLyBfIKwgvSISIxsl%2FCYBJvonCScP4APgCeAZ4CngOeBJ4FngYOBp4HngieCX4QnhGeEp4TnhRuFJ4VnhaeF54YnhleGZ4gbiCeIW4hniIeIn4jniSeJZ4mD4%2F%2F%2F%2FAAAAIAAqAKAApSAAIC8gXyCsIL0iEiMbJfwmASb6JwknD%2BAB4AXgEOAg4DDgQOBQ4GDgYuBw4IDgkOEB4RDhIOEw4UDhSOFQ4WDhcOGA4ZDhl%2BIA4gniEOIY4iHiI%2BIw4kDiUOJg%2BP%2F%2F%2F%2F%2Fj%2F9r%2FZv9i4Ajf5N%2B132nfWd4F3P3aHdoZ2SHZE9kOIB0gHCAWIBAgCiAEH%2F4f%2BB%2F3H%2FEf6x%2FlH3wfdh9wH2ofZB9jH10fVx9RH0sfRR9EHt4e3B7WHtUezh7NHsUevx65HrMIFQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAACjAAAAAAAAAA1AAAAIAAAACAAAAADAAAAKgAAACsAAAAEAAAAoAAAAKAAAAAGAAAApQAAAKUAAAAHAAAgAAAAIAoAAAAIAAAgLwAAIC8AAAATAAAgXwAAIF8AAAAUAAAgrAAAIKwAAAAVAAAgvQAAIL0AAAAWAAAiEgAAIhIAAAAXAAAjGwAAIxsAAAAYAAAl%2FAAAJfwAAAAZAAAmAQAAJgEAAAAaAAAm%2BgAAJvoAAAAbAAAnCQAAJwkAAAAcAAAnDwAAJw8AAAAdAADgAQAA4AMAAAAeAADgBQAA4AkAAAAhAADgEAAA4BkAAAAmAADgIAAA4CkAAAAwAADgMAAA4DkAAAA6AADgQAAA4EkAAABEAADgUAAA4FkAAABOAADgYAAA4GAAAABYAADgYgAA4GkAAABZAADgcAAA4HkAAABhAADggAAA4IkAAABrAADgkAAA4JcAAAB1AADhAQAA4QkAAAB9AADhEAAA4RkAAACGAADhIAAA4SkAAACQAADhMAAA4TkAAACaAADhQAAA4UYAAACkAADhSAAA4UkAAACrAADhUAAA4VkAAACtAADhYAAA4WkAAAC3AADhcAAA4XkAAADBAADhgAAA4YkAAADLAADhkAAA4ZUAAADVAADhlwAA4ZkAAADbAADiAAAA4gYAAADeAADiCQAA4gkAAADlAADiEAAA4hYAAADmAADiGAAA4hkAAADtAADiIQAA4iEAAADvAADiIwAA4icAAADwAADiMAAA4jkAAAD1AADiQAAA4kkAAAD%2FAADiUAAA4lkAAAEJAADiYAAA4mAAAAETAAD4%2FwAA%2BP8AAAEUAAH1EQAB9REAAAEVAAH2qgAB9qoAAAEWAAYCCgAAAAABAAABAAAAAAAAAAAAAAAAAAAAAQACAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAEAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAL4AAAAAf%2F%2FAAIAAgAoAAABaAMgAAMABwAusQEALzyyBwQA7TKxBgXcPLIDAgDtMgCxAwAvPLIFBADtMrIHBgH8PLIBAgDtMjMRIRElMxEjKAFA%2Fujw8AMg%2FOAoAtAAAQBkAGQETARMAFsAAAEyFh8BHgEdATc%2BAR8BFgYPATMyFhcWFRQGDwEOASsBFx4BDwEGJi8BFRQGBwYjIiYvAS4BPQEHDgEvASY2PwEjIiYnJjU0Nj8BPgE7AScuAT8BNhYfATU0Njc2AlgPJgsLCg%2BeBxYIagcCB57gChECBgMCAQIRCuCeBwIHaggWB54PCikiDyYLCwoPngcWCGoHAgee4AoRAgYDAgECEQrgngcCB2oIFgeeDwopBEwDAgECEQrgngcCB2oIFgeeDwopIg8mCwsKD54HFghqBwIHnuAKEQIGAwIBAhEK4J4HAgdqCBYHng8KKSIPJgsLCg%2BeBxYIagcCB57gChECBgAAAAABAAAAAARMBEwAIwAAATMyFhURITIWHQEUBiMhERQGKwEiJjURISImPQE0NjMhETQ2AcLIFR0BXhUdHRX%2Boh0VyBUd%2FqIVHR0VAV4dBEwdFf6iHRXIFR3%2BohUdHRUBXh0VyBUdAV4VHQAAAAABAHAAAARABEwARQAAATMyFgcBBgchMhYPAQ4BKwEVITIWDwEOASsBFRQGKwEiJj0BISImPwE%2BATsBNSEiJj8BPgE7ASYnASY2OwEyHwEWMj8BNgM5%2BgoFCP6UBgUBDAoGBngGGAp9ARMKBgZ4BhgKfQ8LlAsP%2Fu0KBgZ4BhgKff7tCgYGeAYYCnYFBv6UCAUK%2BhkSpAgUCKQSBEwKCP6UBgwMCKAIDGQMCKAIDK4LDw8LrgwIoAgMZAwIoAgMDAYBbAgKEqQICKQSAAABAGQABQSMBK4AOwAAATIXFhcjNC4DIyIOAwchByEGFSEHIR4EMzI%2BAzUzBgcGIyInLgEnIzczNjcjNzM%2BATc2AujycDwGtSM0QDkXEys4MjAPAXtk%2FtQGAZZk%2FtQJMDlCNBUWOUA0I64eYmunznYkQgzZZHABBdpkhhQ%2BH3UErr1oaS1LMCEPCx4uTzJkMjJkSnRCKw8PIjBKK6trdZ4wqndkLzVkV4UljQAAAgB7AAAETASwAD4ARwAAASEyHgUVHAEVFA4FKwEHITIWDwEOASsBFRQGKwEiJj0BISImPwE%2BATsBNSEiJj8BPgE7ARE0NhcRMzI2NTQmIwGsAV5DakIwFgwBAQwWMEJqQ7ICASAKBgZ4BhgKigsKlQoP%2FvUKBgZ4BhgKdf71CgYGeAYYCnUPtstALS1ABLAaJD8yTyokCwsLJCpQMkAlGmQMCKAIDK8LDg8KrwwIoAgMZAwIoAgMAdsKD8j%2B1EJWVEAAAAEAyAGQBEwCvAAPAAATITIWHQEUBiMhIiY9ATQ2%2BgMgFR0dFfzgFR0dArwdFcgVHR0VyBUdAAAAAgDIAAAD6ASwACUAQQAAARUUBisBFRQGBx4BHQEzMhYdASE1NDY7ATU0NjcuAT0BIyImPQEXFRQWFx4BFAYHDgEdASE1NCYnLgE0Njc%2BAT0BA%2BgdFTJjUVFjMhUd%2FOAdFTJjUVFjMhUdyEE3HCAgHDdBAZBBNxwgIBw3QQSwlhUdZFuVIyOVW5YdFZaWFR2WW5UjI5VbZB0VlshkPGMYDDI8MgwYYzyWljxjGAwyPDIMGGM8ZAAAAAEAAAAAAAAAAAAAAAAxAAAB%2F%2FIBLATCBEEAFgAAATIWFzYzMhYVFAYjISImNTQ2NyY1NDYB9261LCwueKqqeP0ST3FVQgLYBEF3YQ6teHmtclBFaw4MGZnXAAAAAgAAAGQEsASvABoAHgAAAB4BDwEBMzIWHQEhNTQ2OwEBJyY%2BARYfATc2AyEnAwL2IAkKiAHTHhQe%2B1AeFB4B1IcKCSAkCm9wCXoBebbDBLMTIxC7%2FRYlFSoqFSUC6rcQJBQJEJSWEPwecAIWAAAAAAQAAABkBLAETAALABcAIwA3AAATITIWBwEGIicBJjYXARYUBwEGJjURNDYJATYWFREUBicBJjQHARYGIyEiJjcBNjIfARYyPwE2MhkEfgoFCP3MCBQI%2FcwIBQMBCAgI%2FvgICgoDjAEICAoKCP74CFwBbAgFCvuCCgUIAWwIFAikCBQIpAgUBEwKCP3JCAgCNwgK2v74CBQI%2FvgIBQoCJgoF%2FvABCAgFCv3aCgUIAQgIFID%2BlAgKCggBbAgIpAgIpAgAAAAD%2F%2FD%2F8AS6BLoACQANABAAAAAyHwEWFA8BJzcTAScJAQUTA%2BAmDpkNDWPWXyL9mdYCZv4f%2FrNuBLoNmQ4mDlzWYP50%2FZrWAmb8anABTwAAAAEAAAAABLAEsAAPAAABETMyFh0BITU0NjsBEQEhArz6FR384B0V%2Bv4MBLACiv3aHRUyMhUdAiYCJgAAAAEADgAIBEwEnAAfAAABJTYWFREUBgcGLgE2NzYXEQURFAYHBi4BNjc2FxE0NgFwAoUnMFNGT4gkV09IQv2oWEFPiCRXT0hCHQP5ow8eIvzBN1EXGSltchkYEAIJm%2F2iKmAVGilucRoYEQJ%2FJioAAAACAAn%2F%2BAS7BKcAHQApAAAAMh4CFQcXFAcBFgYPAQYiJwEGIycHIi4CND4BBCIOARQeATI%2BATQmAZDItoNOAQFOARMXARY7GikT%2Fu13jgUCZLaDTk6DAXKwlFZWlLCUVlYEp06DtmQCBY15%2Fu4aJRg6FBQBEk0BAU6Dtsi2g1tWlLCUVlaUsJQAAQBkAFgErwREABkAAAE%2BAh4CFRQOAwcuBDU0PgIeAQKJMHt4dVg2Q3mEqD4%2Bp4V4Qzhadnh5A7VESAUtU3ZAOXmAf7JVVbJ%2FgHk5QHZTLQVIAAAAAf%2FTAF4EewSUABgAAAETNjIXEyEyFgcFExYGJyUFBiY3EyUmNjMBl4MHFQeBAaUVBhH%2BqoIHDxH%2Bqf6qEQ8Hgv6lEQYUAyABYRMT%2Fp8RDPn%2BbxQLDPb3DAsUAZD7DBEAAv%2FTAF4EewSUABgAIgAAARM2MhcTITIWBwUTFgYnJQUGJjcTJSY2MwUjFwc3Fyc3IycBl4MHFQeBAaUVBhH%2BqoIHDxH%2Bqf6qEQ8Hgv6lEQYUAfPwxUrBw0rA6k4DIAFhExP%2BnxEM%2Bf5vFAsM9vcMCxQBkPsMEWSO4ouM5YzTAAABAAAAAASwBLAAJgAAATIWHQEUBiMVFBYXBR4BHQEUBiMhIiY9ATQ2NyU%2BAT0BIiY9ATQ2Alh8sD4mDAkBZgkMDwr7ggoPDAkBZgkMJj6wBLCwfPouaEsKFwbmBRcKXQoPDwpdChcF5gYXCktoLvp8sAAAAA0AAAAABLAETAAPABMAIwAnACsALwAzADcARwBLAE8AUwBXAAATITIWFREUBiMhIiY1ETQ2FxUzNSkBIgYVERQWMyEyNjURNCYzFTM1BRUzNSEVMzUFFTM1IRUzNQchIgYVERQWMyEyNjURNCYFFTM1IRUzNQUVMzUhFTM1GQR%2BCg8PCvuCCg8PVWQCo%2F3aCg8PCgImCg8Pc2T8GGQDIGT8GGQDIGTh%2FdoKDw8KAiYKDw%2F872QDIGT8GGQDIGQETA8K%2B%2BYKDw8KBBoKD2RkZA8K%2FqIKDw8KAV4KD2RkyGRkZGTIZGRkZGQPCv6iCg8PCgFeCg9kZGRkZMhkZGRkAAAEAAAAAARMBEwADwAfAC8APwAAEyEyFhURFAYjISImNRE0NikBMhYVERQGIyEiJjURNDYBITIWFREUBiMhIiY1ETQ2KQEyFhURFAYjISImNRE0NjIBkBUdHRX%2BcBUdHQJtAZAVHR0V%2FnAVHR39vQGQFR0dFf5wFR0dAm0BkBUdHRX%2BcBUdHQRMHRX%2BcBUdHRUBkBUdHRX%2BcBUdHRUBkBUd%2FagdFf5wFR0dFQGQFR0dFf5wFR0dFQGQFR0AAAkAAAAABEwETAAPAB8ALwA%2FAE8AXwBvAH8AjwAAEzMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2ATMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2ATMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYhMzIWHQEUBisBIiY9ATQ2MsgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR389cgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR389cgVHR0VyBUdHQGlyBUdHRXIFR0dAaXIFR0dFcgVHR0ETB0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHf5wHRXIFR0dFcgVHR0VyBUdHRXIFR0dFcgVHR0VyBUd%2FnAdFcgVHR0VyBUdHRXIFR0dFcgVHR0VyBUdHRXIFR0ABgAAAAAEsARMAA8AHwAvAD8ATwBfAAATMzIWHQEUBisBIiY9ATQ2KQEyFh0BFAYjISImPQE0NgEzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2ATMyFh0BFAYrASImPQE0NikBMhYdARQGIyEiJj0BNDYyyBUdHRXIFR0dAaUCvBUdHRX9RBUdHf6FyBUdHRXIFR0dAaUCvBUdHRX9RBUdHf6FyBUdHRXIFR0dAaUCvBUdHRX9RBUdHQRMHRXIFR0dFcgVHR0VyBUdHRXIFR3%2BcB0VyBUdHRXIFR0dFcgVHR0VyBUd%2FnAdFcgVHR0VyBUdHRXIFR0dFcgVHQAAAAABACYALAToBCAAFwAACQE2Mh8BFhQHAQYiJwEmND8BNjIfARYyAdECOwgUB7EICPzxBxUH%2FoAICLEHFAirBxYB3QI7CAixBxQI%2FPAICAGACBQHsQgIqwcAAQBuAG4EQgRCACMAAAEXFhQHCQEWFA8BBiInCQEGIi8BJjQ3CQEmND8BNjIXCQE2MgOIsggI%2FvUBCwgIsggVB%2F70%2FvQHFQiyCAgBC%2F71CAiyCBUHAQwBDAcVBDuzCBUH%2FvT%2B9AcVCLIICAEL%2FvUICLIIFQcBDAEMBxUIsggI%2FvUBDAcAAwAX%2F%2BsExQSZABkAJQBJAAAAMh4CFRQHARYUDwEGIicBBiMiLgI0PgEEIg4BFB4BMj4BNCYFMzIWHQEzMhYdARQGKwEVFAYrASImPQEjIiY9ATQ2OwE1NDYBmcSzgk1OASwICG0HFQj%2B1HeOYrSBTU2BAW%2BzmFhYmLOZWFj%2BvJYKD0sKDw8KSw8KlgoPSwoPDwpLDwSZTYKzYo15%2FtUIFQhsCAgBK01NgbTEs4JNWJmzmFhYmLOZIw8KSw8KlgoPSwoPDwpLDwqWCg9LCg8AAAMAF%2F%2FrBMUEmQAZACUANQAAADIeAhUUBwEWFA8BBiInAQYjIi4CND4BBCIOARQeATI%2BATQmBSEyFh0BFAYjISImPQE0NgGZxLOCTU4BLAgIbQcVCP7Ud45itIFNTYEBb7OYWFiYs5lYWP5YAV4KDw8K%2FqIKDw8EmU2Cs2KNef7VCBUIbAgIAStNTYG0xLOCTViZs5hYWJizmYcPCpYKDw8KlgoPAAAAAAIAFwAXBJkEsAAPAC0AAAEzMhYVERQGKwEiJjURNDYFNRYSFRQOAiIuAjU0EjcVDgEVFB4BMj4BNTQmAiZkFR0dFWQVHR0BD6fSW5vW6tabW9KnZ3xyxejFcnwEsB0V%2FnAVHR0VAZAVHeGmPv7ZuHXWm1tbm9Z1uAEnPqY3yHh0xXJyxXR4yAAEAGQAAASwBLAADwAfAC8APwAAATMyFhURFAYrASImNRE0NgEzMhYVERQGKwEiJjURNDYBMzIWFREUBisBIiY1ETQ2BTMyFh0BFAYrASImPQE0NgQBlgoPDwqWCg8P%2Ft6WCg8PCpYKDw%2F%2B3pYKDw8KlgoPD%2F7elgoPDwqWCg8PBLAPCvuCCg8PCgR%2BCg%2F%2BcA8K%2FRIKDw8KAu4KD%2F7UDwr%2BPgoPDwoBwgoPyA8K%2BgoPDwr6Cg8AAAAAAgAaABsElgSWAEcATwAAATIfAhYfATcWFwcXFh8CFhUUDwIGDwEXBgcnBwYPAgYjIi8CJi8BByYnNycmLwImNTQ%2FAjY%2FASc2Nxc3Nj8CNhIiBhQWMjY0AlghKSYFMS0Fhj0rUAMZDgGYBQWYAQ8YA1AwOIYFLDIFJisfISkmBTEtBYY8LFADGQ0ClwYGlwINGQNQLzqFBS0xBSYreLJ%2BfrJ%2BBJYFmAEOGQJQMDmGBSwxBiYrHiIoJgYxLAWGPSxRAxkOApcFBZcCDhkDUTA5hgUtMAYmKiAhKCYGMC0Fhj0sUAIZDgGYBf6ZfrF%2BfrEABwBkAAAEsAUUABMAFwAhACUAKQAtADEAAAEhMhYdASEyFh0BITU0NjMhNTQ2FxUhNQERFAYjISImNREXETMRMxEzETMRMxEzETMRAfQBLCk7ARMKD%2Fu0DwoBEzspASwBLDsp%2FUQpO2RkZGRkZGRkBRQ7KWQPCktLCg9kKTtkZGT%2B1PzgKTs7KQMgZP1EArz9RAK8%2FUQCvP1EArwAAQAMAAAFCATRAB8AABMBNjIXARYGKwERFAYrASImNREhERQGKwEiJjURIyImEgJsCBUHAmAIBQqvDwr6Cg%2F%2B1A8K%2BgoPrwoFAmoCYAcH%2FaAICv3BCg8PCgF3%2FokKDw8KAj8KAAIAZAAAA%2BgEsAARABcAAAERFBYzIREUBiMhIiY1ETQ2MwEjIiY9AQJYOykBLB0V%2FOAVHR0VA1L6FR0EsP5wKTv9dhUdHRUETBUd%2FnAdFfoAAwAXABcEmQSZAA8AGwAwAAAAMh4CFA4CIi4CND4BBCIOARQeATI%2BATQmBTMyFhURMzIWHQEUBisBIiY1ETQ2AePq1ptbW5vW6tabW1ubAb%2FoxXJyxejFcnL%2BfDIKD68KDw8K%2BgoPDwSZW5vW6tabW1ub1urWmztyxejFcnLF6MUNDwr%2B7Q8KMgoPDwoBXgoPAAAAAAL%2FnAAABRQEsAALAA8AACkBAyMDIQEzAzMDMwEDMwMFFP3mKfIp%2FeYBr9EVohTQ%2Fp4b4BsBkP5wBLD%2B1AEs%2FnD%2B1AEsAAAAAAIAZAAABLAEsAAVAC8AAAEzMhYVETMyFgcBBiInASY2OwERNDYBMzIWFREUBiMhIiY1ETQ2OwEyFh0BITU0NgImyBUdvxQLDf65DSYN%2FrkNCxS%2FHQJUMgoPDwr75goPDwoyCg8DhA8EsB0V%2Fj4XEP5wEBABkBAXAcIVHfzgDwr%2BogoPDwoBXgoPDwqvrwoPAAMAFwAXBJkEmQAPABsAMQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgUzMhYVETMyFgcDBiInAyY2OwERNDYB4%2BrWm1tbm9bq1ptbW5sBv%2BjFcnLF6MVycv58lgoPiRUKDd8NJg3fDQoViQ8EmVub1urWm1tbm9bq1ps7csXoxXJyxejFDQ8K%2Fu0XEP7tEBABExAXARMKDwAAAAMAFwAXBJkEmQAPABsAMQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JiUTFgYrAREUBisBIiY1ESMiJjcTNjIB4%2BrWm1tbm9bq1ptbW5sBv%2BjFcnLF6MVycv7n3w0KFYkPCpYKD4kVCg3fDSYEmVub1urWm1tbm9bq1ps7csXoxXJyxejFAf7tEBf%2B7QoPDwoBExcQARMQAAAAAAIAAAAABLAEsAAZADkAABMhMhYXExYVERQGBwYjISImJyY1EzQ3Ez4BBSEiBgcDBhY7ATIWHwEeATsBMjY%2FAT4BOwEyNicDLgHhAu4KEwO6BwgFDBn7tAweAgYBB7kDEwKX%2FdQKEgJXAgwKlgoTAiYCEwr6ChMCJgITCpYKDAJXAhIEsA4K%2FXQYGf5XDB4CBggEDRkBqRkYAowKDsgOC%2F4%2BCw4OCpgKDg4KmAoODgsBwgsOAAMAFwAXBJkEmQAPABsAJwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgUXFhQPAQYmNRE0NgHj6tabW1ub1urWm1tbmwG%2F6MVycsXoxXJy%2Fov9ERH9EBgYBJlbm9bq1ptbW5vW6tabO3LF6MVycsXoxV2%2BDCQMvgwLFQGQFQsAAQAXABcEmQSwACgAAAE3NhYVERQGIyEiJj8BJiMiDgEUHgEyPgE1MxQOAiIuAjQ%2BAjMyA7OHBwsPCv6WCwQHhW2BdMVycsXoxXKWW5vW6tabW1ub1nXABCSHBwQL%2FpYKDwsHhUxyxejFcnLFdHXWm1tbm9bq1ptbAAAAAAIAFwABBJkEsAAaADUAAAE3NhYVERQGIyEiJj8BJiMiDgEVIzQ%2BAjMyEzMUDgIjIicHBiY1ETQ2MyEyFg8BFjMyPgEDs4cHCw8L%2FpcLBAeGboF0xXKWW5vWdcDrllub1nXAnIYHCw8LAWgKBQiFboJ0xXIEJIcHBAv%2BlwsPCweGS3LFdHXWm1v9v3XWm1t2hggFCgFoCw8LB4VMcsUAAAAKAGQAAASwBLAADwAfAC8APwBPAF8AbwB%2FAI8AnwAAEyEyFhURFAYjISImNRE0NgUhIgYVERQWMyEyNjURNCYFMzIWHQEUBisBIiY9ATQ2MyEyFh0BFAYjISImPQE0NgczMhYdARQGKwEiJj0BNDYzITIWHQEUBiMhIiY9ATQ2BzMyFh0BFAYrASImPQE0NjMhMhYdARQGIyEiJj0BNDYHMzIWHQEUBisBIiY9ATQ2MyEyFh0BFAYjISImPQE0Nn0EGgoPDwr75goPDwPA%2FK4KDw8KA1IKDw%2F9CDIKDw8KMgoPD9IBwgoPDwr%2BPgoPD74yCg8PCjIKDw%2FSAcIKDw8K%2Fj4KDw%2B%2BMgoPDwoyCg8P0gHCCg8PCv4%2BCg8PvjIKDw8KMgoPD9IBwgoPDwr%2BPgoPDwSwDwr7ggoPDwoEfgoPyA8K%2FK4KDw8KA1IKD2QPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKD8gPCjIKDw8KMgoPDwoyCg8PCjIKDwAAAAACAAAAAARMBLAAGQAjAAABNTQmIyEiBh0BIyIGFREUFjMhMjY1ETQmIyE1NDY7ATIWHQEDhHVT%2FtRSdmQpOzspA4QpOzsp%2FageFMgUHgMgyFN1dlLIOyn9qCk7OykCWCk7lhUdHRWWAAIAZAAABEwETAAJADcAABMzMhYVESMRNDYFMhcWFREUBw4DIyIuAScuAiMiBwYjIicmNRE%2BATc2HgMXHgIzMjc2fTIKD2QPA8AEBRADIUNAMRwaPyonKSxHHlVLBwgGBQ4WeDsXKC4TOQQpLUUdZ1AHBEwPCvvNBDMKDzACBhH%2BWwYGO1AkDQ0ODg8PDzkFAwcPAbY3VwMCAwsGFAEODg5XCAAAAwAAAAAEsASXACEAMQBBAAAAMh4CFREUBisBIiY1ETQuASAOARURFAYrASImNRE0PgEDMzIWFREUBisBIiY1ETQ2ITMyFhURFAYrASImNRE0NgHk6N6jYw8KMgoPjeT%2B%2BuSNDwoyCg9joyqgCAwMCKAIDAwCYKAIDAwIoAgMDASXY6PedP7UCg8PCgEsf9FyctF%2F%2FtQKDw8KASx03qP9wAwI%2FjQIDAwIAcwIDAwI%2FjQIDAwIAcwIDAAAAAACAAAA0wRHA90AFQA5AAABJTYWFREUBiclJisBIiY1ETQ2OwEyBTc2Mh8BFhQPARcWFA8BBiIvAQcGIi8BJjQ%2FAScmND8BNjIXAUEBAgkMDAn%2B%2FhUZ%2BgoPDwr6GQJYeAcUByIHB3h4BwciBxQHeHgHFAciBwd3dwcHIgcUBwMurAYHCv0SCgcGrA4PCgFeCg%2BEeAcHIgcUB3h4BxQHIgcHd3cHByIHFAd4eAcUByIICAAAAAACAAAA0wNyA90AFQAvAAABJTYWFREUBiclJisBIiY1ETQ2OwEyJTMWFxYVFAcGDwEiLwEuATc2NTQnJjY%2FATYBQQECCQwMCf7%2BFRn6Cg8PCvoZAdIECgZgWgYLAwkHHQcDBkhOBgMIHQcDLqwGBwr9EgoHBqwODwoBXgoPZAEJgaGafwkBAQYXBxMIZ36EaggUBxYFAAAAAAMAAADEBGID7AAbADEASwAAATMWFxYVFAYHBgcjIi8BLgE3NjU0JicmNj8BNgUlNhYVERQGJyUmKwEiJjURNDY7ATIlMxYXFhUUBwYPASIvAS4BNzY1NCcmNj8BNgPHAwsGh0RABwoDCQcqCAIGbzs3BgIJKgf9ggECCQwMCf7%2BFRn6Cg8PCvoZAdIECgZgWgYLAwkHHQcDBkhOBgMIHQcD7AEJs9lpy1QJAQYiBhQIlrJarEcJFAYhBb6sBgcK%2FRIKBwasDg8KAV4KD2QBCYGhmn8JAQEGFwcTCGd%2BhGoIFQYWBQAAAAANAAAAAASwBLAACQAVABkAHQAhACUALQA7AD8AQwBHAEsATwAAATMVIxUhFSMRIQEjFTMVIREjESM1IQURIREhESERBSM1MwUjNTMBMxEhETM1MwEzFSMVIzUjNTM1IzUhBREhEQcjNTMFIzUzASM1MwUhNSEB9GRk%2FnBkAfQCvMjI%2FtTIZAJY%2B7QBLAGQASz84GRkArxkZP1EyP4MyGQB9MhkyGRkyAEs%2FUQBLGRkZAOEZGT%2BDGRkAfT%2B1AEsA4RkZGQCWP4MZMgBLAEsyGT%2B1AEs%2FtQBLMhkZGT%2BDP4MAfRk%2FtRkZGRkyGTI%2FtQBLMhkZGT%2B1GRkZAAAAAAJAAAAAASwBLAAAwAHAAsADwATABcAGwAfACMAADcjETMTIxEzASMRMxMjETMBIxEzASE1IRcjNTMXIzUzBSM1M2RkZMhkZAGQyMjIZGQBLMjI%2FOD%2B1AEsyGRkyGRkASzIyMgD6PwYA%2Bj8GAPo%2FBgD6PwYA%2Bj7UGRkW1tbW1sAAAIAAAAKBKYEsAANABUAAAkBFhQHAQYiJwETNDYzBCYiBhQWMjYB9AKqCAj%2BMAgUCP1WAQ8KAUM7Uzs7UzsEsP1WCBQI%2FjAICAKqAdsKD807O1Q7OwAAAAADAAAACgXSBLAADQAZACEAAAkBFhQHAQYiJwETNDYzIQEWFAcBBiIvAQkBBCYiBhQWMjYB9AKqCAj%2BMAgUCP1WAQ8KAwYCqggI%2FjAIFAg4Aaj9RP7TO1M7O1M7BLD9VggUCP4wCAgCqgHbCg%2F9VggUCP4wCAg4AaoCvM07O1Q7OwAAAAABAGQAAASwBLAAJgAAASEyFREUDwEGJjURNCYjISIPAQYWMyEyFhURFAYjISImNRE0PwE2ASwDOUsSQAgKDwr9RBkSQAgFCgK8Cg8PCvyuCg8SixIEsEv8fBkSQAgFCgO2Cg8SQAgKDwr8SgoPDwoDzxkSixIAAAABAMj%2F%2FwRMBLAACgAAEyEyFhURCQERNDb6AyAVHf4%2B%2Fj4dBLAdFfuCAbz%2BQwR%2FFR0AAAAAAwAAAAAEsASwABUARQBVAAABISIGBwMGHwEeATMhMjY%2FATYnAy4BASMiBg8BDgEjISImLwEuASsBIgYVERQWOwEyNj0BNDYzITIWHQEUFjsBMjY1ETQmASEiBg8BBhYzITI2LwEuAQM2%2FkQLEAFOBw45BhcKAcIKFwY%2BDgdTARABVpYKFgROBBYK%2FdoKFgROBBYKlgoPDwqWCg8PCgLuCg8PCpYKDw%2F%2Bsf4MChMCJgILCgJYCgsCJgITBLAPCv7TGBVsCQwMCWwVGAEtCg%2F%2BcA0JnAkNDQmcCQ0PCv12Cg8PCpYKDw8KlgoPDwoCigoP%2FagOCpgKDg4KmAoOAAAAAAQAAABkBLAETAAdACEAKQAxAAABMzIeAh8BMzIWFREUBiMhIiY1ETQ2OwE%2BBAEVMzUEIgYUFjI2NCQyFhQGIiY0AfTIOF00JAcGlik7Oyn8GCk7OymWAgknM10ByGT%2Bz76Hh76H%2Fu9WPDxWPARMKTs7FRQ7Kf2oKTs7KQJYKTsIG0U1K%2F7UZGRGh76Hh74IPFY8PFYAAAAAAgA1AAAEsASvACAAIwAACQEWFx4BHwEVITUyNi8BIQYHBh4CMxUhNTY3PgE%2FAQEDIQMCqQGBFCgSJQkK%2Fl81LBFS%2Fnk6IgsJKjIe%2FpM4HAwaBwcBj6wBVKIEr%2FwaMioTFQECQkJXLd6RWSIuHAxCQhgcDCUNDQPu%2FVoByQAAAAADAGQAAAPwBLAAJwAyADsAAAEeBhUUDgMjITU%2BATURNC4EJzUFMh4CFRQOAgclMzI2NTQuAisBETMyNjU0JisBAvEFEzUwOyodN1htbDD%2BDCk7AQYLFyEaAdc5dWM%2BHy0tEP6Pi05pESpTPnbYUFJ9Xp8CgQEHGB0zOlIuQ3VONxpZBzMoAzsYFBwLEAkHRwEpSXNDM1s6KwkxYUopOzQb%2FK5lUFqBAAABAMgAAANvBLAAGQAAARcOAQcDBhYXFSE1NjcTNjQuBCcmJzUDbQJTQgeECSxK%2Fgy6Dq0DAw8MHxUXDQYEsDkTNSj8uTEoBmFhEFIDQBEaExAJCwYHAwI5AAAAAAL%2FtQAABRQEsAAlAC8AAAEjNC4FKwERFBYfARUhNTI%2BAzURIyIOBRUjESEFIxEzByczESM3BRQyCAsZEyYYGcgyGRn%2BcAQOIhoWyBkYJhMZCwgyA%2Bj7m0tLfX1LS30DhBUgFQ4IAwH8rhYZAQJkZAEFCRUOA1IBAwgOFSAVASzI%2FOCnpwMgpwACACH%2FtQSPBLAAJQAvAAABIzQuBSsBERQWHwEVITUyPgM1ESMiDgUVIxEhEwc1IRUnNxUhNQRMMggLGRMmGBnIMhkZ%2FnAEDiIaFsgZGCYTGQsIMgPoQ6f84KenAyADhBUgFQ4IAwH9dhYZAQJkZAEFCRUOAooBAwgOFSAVASz7gn1LS319S0sABAAAAAAEsARMAA8AHwAvAD8AABMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYyAlgVHR0V%2FagVHR0VA%2BgVHR0V%2FBgVHR0VAyAVHR0V%2FOAVHR0VBEwVHR0V%2B7QVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0ABAAAAAAEsARMAA8AHwAvAD8AABMhMhYdARQGIyEiJj0BNDYDITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NgMhMhYdARQGIyEiJj0BNDb6ArwVHR0V%2FUQVHR2zBEwVHR0V%2B7QVHR3dArwVHR0V%2FUQVHR2zBEwVHR0V%2B7QVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0ABAAAAAAEsARMAA8AHwAvAD8AAAE1NDYzITIWHQEUBiMhIiYBNTQ2MyEyFh0BFAYjISImEzU0NjMhMhYdARQGIyEiJgE1NDYzITIWHQEUBiMhIiYB9B0VAlgVHR0V%2FagVHf5wHRUD6BUdHRX8GBUdyB0VAyAVHR0V%2FOAVHf7UHRUETBUdHRX7tBUdA7ZkFR0dFWQVHR3%2B6WQVHR0VZBUdHf7pZBUdHRVkFR0d%2FulkFR0dFWQVHR0AAAQAAAAABLAETAAPAB8ALwA%2FAAATITIWHQEUBiMhIiY9ATQ2EyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2MgRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dFQRMFR0dFfu0FR0dBEwdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdAAgAAAAABLAETAAPAB8ALwA%2FAE8AXwBvAH8AABMzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2ATMyFh0BFAYrASImPQE0NikBMhYdARQGIyEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2KQEyFh0BFAYjISImPQE0NgEzMhYdARQGKwEiJj0BNDYpATIWHQEUBiMhIiY9ATQ2MmQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR3%2B6WQVHR0VZBUdHQFBAyAVHR0V%2FOAVHR0ETB0VZBUdHRVkFR0dFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdHRVkFR0dFWQVHf7UHRVkFR0dFWQVHR0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0dFWQVHR0VZBUdAAAG%2F5wAAASwBEwAAwATACMAKgA6AEoAACEjETsCMhYdARQGKwEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2BQc1IzUzNQUhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2AZBkZJZkFR0dFWQVHR0VAfQVHR0V%2FgwVHR3%2B%2BqfIyAHCASwVHR0V%2FtQVHR0VAlgVHR0V%2FagVHR0ETB0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR36fUtkS68dFWQVHR0VZBUd%2FtQdFWQVHR0VZBUdAAAABgAAAAAFFARMAA8AEwAjACoAOgBKAAATMzIWHQEUBisBIiY9ATQ2ASMRMwEhMhYdARQGIyEiJj0BNDYFMxUjFSc3BSEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYyZBUdHRVkFR0dA2dkZPyuAfQVHR0V%2FgwVHR0EL8jIp6f75gEsFR0dFf7UFR0dFQJYFR0dFf2oFR0dBEwdFWQVHR0VZBUd%2B7QETP7UHRVkFR0dFWQVHchkS319rx0VZBUdHRVkFR3%2B1B0VZBUdHRVkFR0AAAAAAgAAAMgEsAPoAA8AEgAAEyEyFhURFAYjISImNRE0NgkCSwLuHywsH%2F0SHywsBIT%2B1AEsA%2BgsH%2F12HywsHwKKHyz9RAEsASwAAwAAAAAEsARMAA8AFwAfAAATITIWFREUBiMhIiY1ETQ2FxE3BScBExEEMhYUBiImNCwEWBIaGhL7qBIaGkr3ASpKASXs%2FNJwTk5wTgRMGhL8DBIaGhID9BIaZP0ftoOcAT7%2B4AH0dE5vT09vAAAAAAIA2wAFBDYEkQAWAB4AAAEyHgEVFAcOAQ8BLgQnJjU0PgIWIgYUFjI2NAKIdcZzRkWyNjYJIV5YbSk8RHOft7eCgreCBJF4ynVzj23pPz4IIWZomEiEdVijeUjDgriBgbgAAAACABcAFwSZBJkADwAXAAAAMh4CFA4CIi4CND4BAREiDgEUHgEB4%2BrWm1tbm9bq1ptbW5sBS3TFcnLFBJlbm9bq1ptbW5vW6tab%2FG8DVnLF6MVyAAACAHUAAwPfBQ8AGgA1AAABHgYVFA4DBy4DNTQ%2BBQMOAhceBBcWNj8BNiYnLgInJjc2IyYCKhVJT1dOPiUzVnB9P1SbfEokP0xXUEm8FykoAwEbITEcExUWAgYCCQkFEikMGiACCAgFD0iPdXdzdYdFR4BeRiYEBTpjl1lFh3ZzeHaQ%2Ff4hS4I6JUEnIw4IBwwQIgoYBwQQQSlZtgsBAAAAAwAAAAAEywRsAAwAKgAvAAABNz4CHgEXHgEPAiUhMhcHISIGFREUFjMhMjY9ATcRFAYjISImNRE0NgkBBzcBA%2BhsAgYUFR0OFgoFBmz9BQGQMje7%2FpApOzspAfQpO8i7o%2F5wpbm5Azj%2BlqE3AWMD9XMBAgIEDw4WKgsKc8gNuzsp%2FgwpOzsptsj%2BtKW5uaUBkKW5%2Ftf%2BljKqAWMAAgAAAAAEkwRMABsANgAAASEGByMiBhURFBYzITI2NTcVFAYjISImNRE0NgUBFhQHAQYmJzUmDgMHPgY3NT4BAV4BaaQ0wyk7OykB9Ck7yLml%2FnClubkCfwFTCAj%2BrAcLARo5ZFRYGgouOUlARioTAQsETJI2Oyn%2BDCk7OymZZ6W5uaUBkKW5G%2F7TBxUH%2Fs4GBAnLAQINFjAhO2JBNB0UBwHSCgUAAAAAAgAAAAAEnQRMAB0ANQAAASEyFwchIgYVERQWMyEyNj0BNxUUBiMhIiY1ETQ2CQE2Mh8BFhQHAQYiLwEmND8BNjIfARYyAV4BXjxDsv6jKTs7KQH0KTvIuaX%2BcKW5uQHKAYsHFQdlBwf97QcVB%2FgHB2UHFQdvCBQETBexOyn%2BDCk7OylFyNulubmlAZCluf4zAYsHB2UHFQf97AcH%2BAcVB2UHB28HAAAAAQAKAAoEpgSmADsAAAkBNjIXARYGKwEVMzU0NhcBFhQHAQYmPQEjFTMyFgcBBiInASY2OwE1IxUUBicBJjQ3ATYWHQEzNSMiJgE%2BAQgIFAgBBAcFCqrICggBCAgI%2FvgICsiqCgUH%2FvwIFAj%2B%2BAgFCq%2FICgj%2B%2BAgIAQgICsivCgUDlgEICAj%2B%2BAgKyK0KBAf%2B%2FAcVB%2F73BwQKrcgKCP74CAgBCAgKyK0KBAcBCQcVBwEEBwQKrcgKAAEAyAAAA4QETAAZAAATMzIWFREBNhYVERQGJwERFAYrASImNRE0NvpkFR0B0A8VFQ%2F%2BMB0VZBUdHQRMHRX%2BSgHFDggV%2FBgVCA4Bxf5KFR0dFQPoFR0AAAABAAAAAASwBEwAIwAAEzMyFhURATYWFREBNhYVERQGJwERFAYnAREUBisBIiY1ETQ2MmQVHQHQDxUB0A8VFQ%2F%2BMBUP%2FjAdFWQVHR0ETB0V%2FkoBxQ4IFf5KAcUOCBX8GBUIDgHF%2FkoVCA4Bxf5KFR0dFQPoFR0AAAABAJ0AGQSwBDMAFQAAAREUBicBERQGJwEmNDcBNhYVEQE2FgSwFQ%2F%2BMBUP%2FhQPDwHsDxUB0A8VBBr8GBUIDgHF%2FkoVCA4B4A4qDgHgDggV%2FkoBxQ4IAAAAAQDIABYEMwQ2AAsAABMBFhQHAQYmNRE0NvMDLhIS%2FNISGRkEMv4OCx4L%2Fg4LDhUD6BUOAAIAyABkA4QD6AAPAB8AABMzMhYVERQGKwEiJjURNDYhMzIWFREUBisBIiY1ETQ2%2BsgVHR0VyBUdHQGlyBUdHRXIFR0dA%2BgdFfzgFR0dFQMgFR0dFfzgFR0dFQMgFR0AAAEAyABkBEwD6AAPAAABERQGIyEiJjURNDYzITIWBEwdFfzgFR0dFQMgFR0DtvzgFR0dFQMgFR0dAAAAAAEAAAAZBBMEMwAVAAABETQ2FwEWFAcBBiY1EQEGJjURNDYXAfQVDwHsDw%2F%2BFA8V%2FjAPFRUPAmQBthUIDv4gDioO%2FiAOCBUBtv47DggVA%2BgVCA4AAAH%2F%2FgACBLMETwAjAAABNzIWFRMUBiMHIiY1AwEGJjUDAQYmNQM0NhcBAzQ2FwEDNDYEGGQUHgUdFWQVHQL%2BMQ4VAv4yDxUFFQ8B0gIVDwHSAh0ETgEdFfwYFR0BHRUBtf46DwkVAbX%2BOQ4JFAPoFQkP%2Fj4BthQJDv49AbYVHQAAAQEsAAAD6ARMABkAAAEzMhYVERQGKwEiJjURAQYmNRE0NhcBETQ2A1JkFR0dFWQVHf4wDxUVDwHQHQRMHRX8GBUdHRUBtv47DggVA%2BgVCA7%2BOwG2FR0AAAIAZADIBLAESAALABsAAAkBFgYjISImNwE2MgEhMhYdARQGIyEiJj0BNDYCrgH1DwkW%2B%2B4WCQ8B9Q8q%2FfcD6BUdHRX8GBUdHQQ5%2FeQPFhYPAhwP%2FUgdFWQVHR0VZBUdAAEAiP%2F8A3UESgAFAAAJAgcJAQN1%2FqABYMX92AIoA4T%2Bn%2F6fxgIoAiYAAAAAAQE7%2F%2FwEKARKAAUAAAkBJwkBNwQo%2FdnGAWH%2Bn8YCI%2F3ZxgFhAWHGAAIAFwAXBJkEmQAPADMAAAAyHgIUDgIiLgI0PgEFIyIGHQEjIgYdARQWOwEVFBY7ATI2PQEzMjY9ATQmKwE1NCYB4%2BrWm1tbm9bq1ptbW5sBfWQVHZYVHR0Vlh0VZBUdlhUdHRWWHQSZW5vW6tabW1ub1urWm7odFZYdFWQVHZYVHR0Vlh0VZBUdlhUdAAAAAAIAFwAXBJkEmQAPAB8AAAAyHgIUDgIiLgI0PgEBISIGHQEUFjMhMjY9ATQmAePq1ptbW5vW6tabW1ubAkX%2BDBUdHRUB9BUdHQSZW5vW6tabW1ub1urWm%2F5%2BHRVkFR0dFWQVHQACABcAFwSZBJkADwAzAAAAMh4CFA4CIi4CND4BBCIPAScmIg8BBhQfAQcGFB8BFjI%2FARcWMj8BNjQvATc2NC8BAePq1ptbW5vW6tabW1ubAeUZCXh4CRkJjQkJeHgJCY0JGQl4eAkZCY0JCXh4CQmNBJlbm9bq1ptbW5vW6tabrQl4eAkJjQkZCXh4CRkJjQkJeHgJCY0JGQl4eAkZCY0AAgAXABcEmQSZAA8AJAAAADIeAhQOAiIuAjQ%2BAQEnJiIPAQYUHwEWMjcBNjQvASYiBwHj6tabW1ub1urWm1tbmwEVVAcVCIsHB%2FIHFQcBdwcHiwcVBwSZW5vW6tabW1ub1urWm%2F4xVQcHiwgUCPEICAF3BxUIiwcHAAAAAAMAFwAXBJkEmQAPADsASwAAADIeAhQOAiIuAjQ%2BAQUiDgMVFDsBFjc%2BATMyFhUUBgciDgUHBhY7ATI%2BAzU0LgMTIyIGHQEUFjsBMjY9ATQmAePq1ptbW5vW6tabW1ubAT8dPEIyIRSDHgUGHR8UFw4TARkOGhITDAIBDQ6tBx4oIxgiM0Q8OpYKDw8KlgoPDwSZW5vW6tabW1ub1urWm5ELHi9PMhkFEBQQFRIXFgcIBw4UHCoZCBEQKDhcNi9IKhsJ%2FeMPCpYKDw8KlgoPAAADABcAFwSZBJkADwAfAD4AAAAyHgIUDgIiLgI0PgEFIyIGHQEUFjsBMjY9ATQmAyMiBh0BFBY7ARUjIgYdARQWMyEyNj0BNCYrARE0JgHj6tabW1ub1urWm1tbmwGWlgoPDwqWCg8PCvoKDw8KS0sKDw8KAV4KDw8KSw8EmVub1urWm1tbm9bq1ptWDwqWCg8PCpYKD%2F7UDwoyCg%2FIDwoyCg8PCjIKDwETCg8AAgAAAAAEsASwAC8AXwAAATMyFh0BHgEXMzIWHQEUBisBDgEHFRQGKwEiJj0BLgEnIyImPQE0NjsBPgE3NTQ2ExUUBisBIiY9AQ4BBzMyFh0BFAYrAR4BFzU0NjsBMhYdAT4BNyMiJj0BNDY7AS4BAg2WCg9nlxvCCg8PCsIbl2cPCpYKD2eXG8IKDw8KwhuXZw%2B5DwqWCg9EZheoCg8PCqgXZkQPCpYKD0RmF6gKDw8KqBdmBLAPCsIbl2cPCpYKD2eXG8IKDw8KwhuXZw8KlgoPZ5cbwgoP%2Fs2oCg8PCqgXZkQPCpYKD0RmF6gKDw8KqBdmRA8KlgoPRGYAAwAXABcEmQSZAA8AGwA%2FAAAAMh4CFA4CIi4CND4BBCIOARQeATI%2BATQmBxcWFA8BFxYUDwEGIi8BBwYiLwEmND8BJyY0PwE2Mh8BNzYyAePq1ptbW5vW6tabW1ubAb%2FoxXJyxejFcnKaQAcHfHwHB0AHFQd8fAcVB0AHB3x8BwdABxUHfHwHFQSZW5vW6tabW1ub1urWmztyxejFcnLF6MVaQAcVB3x8BxUHQAcHfHwHB0AHFQd8fAcVB0AHB3x8BwAAAAMAFwAXBJkEmQAPABsAMAAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgcXFhQHAQYiLwEmND8BNjIfATc2MgHj6tabW1ub1urWm1tbmwG%2F6MVycsXoxXJyg2oHB%2F7ACBQIyggIagcVB0%2FFBxUEmVub1urWm1tbm9bq1ps7csXoxXJyxejFfWoHFQf%2BvwcHywcVB2oICE%2FFBwAAAAMAFwAXBJkEmQAPABgAIQAAADIeAhQOAiIuAjQ%2BAQUiDgEVFBcBJhcBFjMyPgE1NAHj6tabW1ub1urWm1tbmwFLdMVyQQJLafX9uGhzdMVyBJlbm9bq1ptbW5vW6tabO3LFdHhpAktB0P24PnLFdHMAAAAAAQAXAFMEsAP5ABUAABMBNhYVESEyFh0BFAYjIREUBicBJjQnAgoQFwImFR0dFf3aFxD99hACRgGrDQoV%2Ft0dFcgVHf7dFQoNAasNJgAAAAABAAAAUwSZA%2FkAFQAACQEWFAcBBiY1ESEiJj0BNDYzIRE0NgJ%2FAgoQEP32EBf92hUdHRUCJhcD8f5VDSYN%2FlUNChUBIx0VyBUdASMVCgAAAAEAtwAABF0EmQAVAAAJARYGIyERFAYrASImNREhIiY3ATYyAqoBqw0KFf7dHRXIFR3%2B3RUKDQGrDSYEif32EBf92hUdHRUCJhcQAgoQAAAAAQC3ABcEXQSwABUAAAEzMhYVESEyFgcBBiInASY2MyERNDYCJsgVHQEjFQoN%2FlUNJg3%2BVQ0KFQEjHQSwHRX92hcQ%2FfYQEAIKEBcCJhUdAAABAAAAtwSZBF0AFwAACQEWFAcBBiY1EQ4DBz4ENxE0NgJ%2FAgoQEP32EBdesKWBJAUsW4fHfhcEVf5VDSYN%2FlUNChUBIwIkRHVNabGdcUYHAQYVCgACAAAAAASwBLAAFQArAAABITIWFREUBi8BBwYiLwEmND8BJyY2ASEiJjURNDYfATc2Mh8BFhQPARcWBgNSASwVHRUOXvkIFAhqBwf5Xg4I%2FiH%2B1BUdFQ5e%2BQgUCGoHB%2FleDggEsB0V%2FtQVCA5e%2BQcHaggUCPleDhX7UB0VASwVCA5e%2BQcHaggUCPleDhUAAAACAEkASQRnBGcAFQArAAABFxYUDwEXFgYjISImNRE0Nh8BNzYyASEyFhURFAYvAQcGIi8BJjQ%2FAScmNgP2agcH%2BV4OCBX%2B1BUdFQ5e%2BQgU%2FQwBLBUdFQ5e%2BQgUCGoHB%2FleDggEYGoIFAj5Xg4VHRUBLBUIDl75B%2F3xHRX%2B1BUIDl75BwdqCBQI%2BV4OFQAAAAADABcAFwSZBJkADwAfAC8AAAAyHgIUDgIiLgI0PgEFIyIGFxMeATsBMjY3EzYmAyMiBh0BFBY7ATI2PQE0JgHj6tabW1ub1urWm1tbmwGz0BQYBDoEIxQ2FCMEOgQYMZYKDw8KlgoPDwSZW5vW6tabW1ub1urWm7odFP7SFB0dFAEuFB3%2BDA8KlgoPDwqWCg8AAAAABQAAAAAEsASwAEkAVQBhAGgAbwAAATIWHwEWHwEWFxY3Nj8BNjc2MzIWHwEWHwIeATsBMhYdARQGKwEiBh0BIREjESE1NCYrASImPQE0NjsBMjY1ND8BNjc%2BBAUHBhY7ATI2LwEuAQUnJgYPAQYWOwEyNhMhIiY1ESkBERQGIyERAQQJFAUFFhbEFQ8dCAsmxBYXERUXMA0NDgQZCAEPCj0KDw8KMgoP%2FnDI%2FnAPCjIKDw8KPQsOCRkFDgIGFRYfAp2mBwQK2woKAzMDEP41sQgQAzMDCgrnCwMe%2FokKDwGQAlgPCv6JBLAEAgIKDXYNCxUJDRZ2DQoHIREQFRh7LAkLDwoyCg8PCq8BLP7UrwoPDwoyCg8GBQQwgBkUAwgWEQ55ogcKDgqVCgSqnQcECo8KDgr8cg8KAXf%2BiQoPAZAAAAAAAgAAAAwErwSmACsASQAAATYWFQYCDgQuAScmByYOAQ8BBiY1NDc%2BATc%2BAScuAT4BNz4GFyYGBw4BDwEOBAcOARY2Nz4CNz4DNz4BBI0IGgItQmxhi2KORDg9EQQRMxuZGhYqCFUYEyADCQIQOjEnUmFch3vAJQgdHyaiPT44XHRZUhcYDhItIRmKcVtGYWtbKRYEBKYDEwiy%2Ft3IlVgxEQgLCwwBAQIbG5kYEyJAJghKFRE8Hzdff4U%2FM0o1JSMbL0QJGCYvcSEhHjZST2c1ODwEJygeW0AxJUBff1UyFAABAF0AHgRyBM8ATwAAAQ4BHgQXLgc%2BATceAwYHDgQHBicmNzY3PgQuAScWDgMmJy4BJyY%2BBDcGHgM3PgEuAicmPgMCjScfCic4R0IgBBsKGAoQAwEJEg5gikggBhANPkpTPhZINx8SBgsNJysiCRZOQQoVNU1bYC9QZwICBAUWITsoCAYdJzIYHw8YIiYHDyJJYlkEz0OAZVxEOSQMBzgXOB42IzElKRIqg5Gnl0o3Z0c6IAYWCwYNAwQFIDhHXGF1OWiqb0sdBxUknF0XNTQ8PEUiNWNROBYJDS5AQVUhVZloUSkAAAAAA%2F%2FcAGoE1ARGABsAPwBRAAAAMh4FFA4FIi4FND4EBSYGFxYVFAYiJjU0NzYmBwYHDgEXHgQyPgM3NiYnJgUHDgEXFhcWNj8BNiYnJicuAQIGpJ17bk85HBw6T257naKde25POhwcOU9uewIPDwYIGbD4sBcIBw5GWg0ECxYyWl%2BDiINfWjIWCwQMWv3%2FIw8JCSU4EC0OIw4DDywtCyIERi1JXGJcSSpJXGJcSS0tSVxiXEkqSVxiXEncDwYTOT58sLB8OzcTBg9FcxAxEiRGXkQxMEVeRSQSMRF1HiQPLxJEMA0EDyIPJQ8sSRIEAAAABP%2FcAAAE1ASwABQAJwA7AEwAACEjNy4ENTQ%2BBTMyFzczEzceARUUDgMHNz4BNzYmJyYlBgcOARceBBc3LgE1NDc2JhcHDgEXFhcWNj8CJyYnLgECUJQfW6l2WSwcOU9ue51SPUEglCYvbIknUGqYUi5NdiYLBAw2%2FVFGWg0ECxIqSExoNSlrjxcIB3wjDwkJJTgQLQ4MFgMsLQsieBRhdHpiGxVJXGJcSS0Pef5StVXWNBpacm5jGq0xiD8SMRFGckVzEDESHjxRQTkNmhKnbjs3EwZwJA8vEkQwDQQPC1YELEkSBAAAAAP%2FngAABRIEqwALABgAKAAAJwE2FhcBFgYjISImJSE1NDY7ATIWHQEhAQczMhYPAQ4BKwEiJi8BJjZaAoIUOBQCghUbJfryJRsBCgFZDwqWCg8BWf5DaNAUGAQ6BCMUNhQjBDoEGGQEKh8FIfvgIEdEhEsKDw8KSwLT3x0U%2FBQdHRT8FB0AAAABAGQAFQSwBLAAKAAAADIWFREBHgEdARQGJyURFh0BFAYvAQcGJj0BNDcRBQYmPQE0NjcBETQCTHxYAWsPFhgR%2FplkGhPNzRMaZP6ZERgWDwFrBLBYPv6t%2FrsOMRQpFA0M%2Bf75XRRAFRAJgIAJEBVAFF0BB%2FkMDRQpFDEOAUUBUz4AAAARAAAAAARMBLAAHQAnACsALwAzADcAOwA%2FAEMARwBLAE8AUwBXAFsAXwBjAAABMzIWHQEzMhYdASE1NDY7ATU0NjsBMhYdASE1NDYBERQGIyEiJjURFxUzNTMVMzUzFTM1MxUzNTMVMzUFFTM1MxUzNTMVMzUzFTM1MxUzNQUVMzUzFTM1MxUzNTMVMzUzFTM1A1JkFR0yFR37tB0VMh0VZBUdAfQdAQ8dFfwYFR1kZGRkZGRkZGRk%2FHxkZGRkZGRkZGT8fGRkZGRkZGRkZASwHRUyHRWWlhUdMhUdHRUyMhUd%2FnD9EhUdHRUC7shkZGRkZGRkZGRkyGRkZGRkZGRkZGTIZGRkZGRkZGRkZAAAAAMAAAAZBXcElwAZACUANwAAARcWFA8BBiY9ASMBISImPQE0NjsBATM1NDYBBycjIiY9ATQ2MyEBFxYUDwEGJj0BIyc3FzM1NDYEb%2FkPD%2FkOFZ%2F9qP7dFR0dFdECWPEV%2FamNetEVHR0VASMDGvkPD%2FkOFfG1jXqfFQSN5g4qDuYOCBWW%2FagdFWQVHQJYlhUI%2FpiNeh0VZBUd%2Fk3mDioO5g4IFZa1jXqWFQgAAAABAAAAAASwBEwAEgAAEyEyFhURFAYjIQERIyImNRE0NmQD6Ck7Oyn9rP7QZCk7OwRMOyn9qCk7%2FtQBLDspAlgpOwAAAAMAZAAABEwEsAAJABMAPwAAEzMyFh0BITU0NiEzMhYdASE1NDYBERQOBSIuBTURIRUUFRwBHgYyPgYmNTQ9AZbIFR3%2B1B0C0cgVHf7UHQEPBhgoTGacwJxmTCgYBgEsAwcNFB8nNkI2Jx8TDwUFAQSwHRX6%2BhUdHRX6%2BhUd%2FnD%2B1ClJalZcPigoPlxWakkpASz6CRIVKyclIRsWEAgJEBccISUnKhURCPoAAAAB%2F%2F8A1ARMA8IABQAAAQcJAScBBEzG%2Fp%2F%2Bn8UCJwGbxwFh%2Fp%2FHAicAAQAAAO4ETQPcAAUAAAkCNwkBBE392v3ZxgFhAWEDFf3ZAifH%2Fp8BYQAAAAAC%2F1EAZAVfA%2BgAFAApAAABITIWFREzMhYPAQYiLwEmNjsBESElFxYGKwERIRchIiY1ESMiJj8BNjIBlALqFR2WFQgO5g4qDuYOCBWW%2FoP%2BHOYOCBWWAYHX%2FRIVHZYVCA7mDioD6B0V%2FdkVDvkPD%2FkOFQGRuPkOFf5wyB0VAiYVDvkPAAABAAYAAASeBLAAMAAAEzMyFh8BITIWBwMOASMhFyEyFhQGKwEVFAYiJj0BIRUUBiImPQEjIiYvAQMjIiY0NjheERwEJgOAGB4FZAUsIf2HMAIXFR0dFTIdKh3%2B1B0qHR8SHQYFyTYUHh4EsBYQoiUY%2FiUVK8gdKh0yFR0dFTIyFR0dFTIUCQoDwR0qHQAAAAACAAAAAASwBEwACwAPAAABFSE1MzQ2MyEyFhUFIREhBLD7UMg7KQEsKTv9RASw%2B1AD6GRkKTs7Kcj84AACAAAAAAXcBEwADAAQAAATAxEzNDYzITIWFSEVBQEhAcjIyDspASwqOgH0ASz%2B1PtQASwDIP5wAlgpOzspyGT9RAK8AAEBRQAAA2sErwAbAAABFxYGKwERMzIWDwEGIi8BJjY7AREjIiY%2FATYyAnvmDggVlpYVCA7mDioO5g4IFZaWFQgO5g4qBKD5DhX9pxUO%2BQ8P%2BQ4VAlkVDvkPAAAAAQABAUQErwNrABsAAAEXFhQPAQYmPQEhFRQGLwEmND8BNhYdASE1NDYDqPkODvkPFf2oFQ%2F5Dg75DxUCWBUDYOUPKQ%2FlDwkUl5cUCQ%2FlDykP5Q8JFZWVFQkAAAAEAAAAAASwBLAACQAZAB0AIQAAAQMuASMhIgYHAwUhIgYdARQWMyEyNj0BNCYFNTMVMzUzFQSRrAUkFP1gFCQFrAQt%2FBgpOzspA%2BgpOzv%2Bq2RkZAGQAtwXLSgV%2FR1kOylkKTs7KWQpO8hkZGRkAAAAA%2F%2BcAGQEsARMAAsAIwAxAAAAMhYVERQGIiY1ETQDJSMTFgYjIisBIiYnAj0BNDU0PgE7ASUBFSIuAz0BND4CNwRpKh0dKh1k%2FV0mLwMRFQUCVBQdBDcCCwzIAqP8GAQOIhoWFR0dCwRMHRX8rhUdHRUDUhX8mcj%2B7BAIHBUBUQ76AgQQDw36%2FtT6AQsTKRwyGigUDAEAAAACAEoAAARmBLAALAA1AAABMzIWDwEeARcTFzMyFhQGBw4EIyIuBC8BLgE0NjsBNxM%2BATcnJjYDFjMyNw4BIiYCKV4UEgYSU3oPP3YRExwaEggeZGqfTzl0XFU%2BLwwLEhocExF2Pw96UxIGEyQyNDUxDDdGOASwFRMlE39N%2FrmtHSkoBwQLHBYSCg4REg4FBAgoKR2tAUdNfhQgExr7vgYGMT09AAEAFAAUBJwEnAAXAAABNwcXBxcHFycHJwcnBzcnNyc3Jxc3FzcDIOBO6rS06k7gLZubLeBO6rS06k7gLZubA7JO4C2bmy3gTuq0tOpO4C2bmy3gTuq0tAADAAAAZASwBLAAIQAtAD0AAAEzMhYdAQchMhYdARQHAw4BKwEiJi8BIyImNRE0PwI%2BARcPAREzFzMTNSE3NQEzMhYVERQGKwEiJjURNDYCijIoPBwBSCg8He4QLBf6B0YfHz0tNxSRYA0xG2SWZIjW%2Bv4%2BMv12ZBUdHRVkFR0dBLBRLJZ9USxkLR3%2BqBghMhkZJCcBkCQbxMYcKGTU1f6JZAF3feGv%2FtQdFf4MFR0dFQH0FR0AAAAAAwAAAAAEsARMACAAMAA8AAABMzIWFxMWHQEUBiMhFh0BFAYrASImLwImNRE0NjsBNgUzMhYVERQGKwEiJjURNDYhByMRHwEzNSchNQMCWPoXLBDuHTwo%2FrgcPCgyGzENYJEUNy09fP3pZBUdHRVkFR0dAl%2BIZJZkMjIBwvoETCEY%2FqgdLWQsUXYHlixRKBzGxBskAZAnJGRkHRX%2BDBUdHRUB9BUdZP6J1dSv4X0BdwADAAAAZAUOBE8AGwA3AEcAAAElNh8BHgEPASEyFhQGKwEDDgEjISImNRE0NjcXERchEz4BOwEyNiYjISoDLgQnJj8BJwUzMhYVERQGKwEiJjURNDYBZAFrHxZuDQEMVAEuVGxuVGqDBhsP%2FqoHphwOOmQBJYMGGw%2FLFRMSFv44AgoCCQMHAwUDAQwRklb9T2QVHR0VZBUdHQNp5hAWcA0mD3lMkE7%2BrRUoog0CDRElCkj%2BCVkBUxUoMjIBAgIDBQIZFrdT5B0V%2FgwVHR0VAfQVHQAAAAP%2FnABkBLAETwAdADYARgAAAQUeBBURFAYjISImJwMjIiY0NjMhJyY2PwE2BxcWBw4FKgIjIRUzMhYXEyE3ESUFMzIWFREUBisBIiY1ETQ2AdsBbgIIFBANrAf%2Bqg8bBoNqVW1sVAEuVQsBDW4WSpIRDAIDBQMHAwkDCgH%2BJd0PHAaCASZq%2FqoCUGQVHR0VZBUdHQRP5gEFEBEXC%2F3zDaIoFQFTTpBMeQ8mDXAWrrcWGQIFAwICAWQoFf6tWQH37OQdFf4MFR0dFQH0FR0AAAADAGEAAARMBQ4AGwA3AEcAAAAyFh0BBR4BFREUBiMhIiYvAQMmPwE%2BAR8BETQXNTQmBhURHAMOBAcGLwEHEyE3ESUuAQMhMhYdARQGIyEiJj0BNDYB3pBOAVMVKKIN%2FfMRJQoJ5hAWcA0mD3nGMjIBAgIDBQIZFrdT7AH3Wf6tFSiWAfQVHR0V%2FgwVHR0FDm5UaoMGGw%2F%2BqgemHA4OAWsfFm4NAQxUAS5U1ssVExIW%2FjgCCgIJAwcDBQMBDBGSVv6tZAElgwYb%2FQsdFWQVHR0VZBUdAAP%2F%2FQAGA%2BgFFAAPAC0ASQAAASEyNj0BNCYjISIGHQEUFgEVFAYiJjURBwYmLwEmNxM%2BBDMhMhYVERQGBwEDFzc2Fx4FHAIVERQWNj0BNDY3JREnAV4B9BUdHRX%2BDBUdHQEPTpBMeQ8mDXAWEOYBBRARFwsCDQ2iKBX9iexTtxYZAgUDAgIBMjIoFQFTWQRMHRVkFR0dFWQVHfzmalRubFQBLlQMAQ1uFh8BawIIEw8Mpgf%2Bqg8bBgHP%2Fq1WkhEMAQMFAwcDCQIKAv44FhITFcsPGwaDASVkAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEBJSYGHQEhIgYdARQWMyEVFBY3JTY0AeLs1ptbW5vW7NabW1ubAob%2B7RAX%2Fu0KDw8KARMXEAETEASaW5vW7NabW1ub1uzWm%2F453w0KFYkPCpYKD4kVCg3fDSYAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgENAQYUFwUWNj0BITI2PQE0JiMhNTQmAeLs1ptbW5vW7NabW1ubASX%2B7RAQARMQFwETCg8PCv7tFwSaW5vW7NabW1ub1uzWm%2BjfDSYN3w0KFYkPCpYKD4kVCgAAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEBAyYiBwMGFjsBERQWOwEyNjURMzI2AeLs1ptbW5vW7NabW1ubAkvfDSYN3w0KFYkPCpYKD4kVCgSaW5vW7NabW1ub1uzWm%2F5AARMQEP7tEBf%2B7QoPDwoBExcAAAIAFgAWBJoEmgAPACUAAAAyHgIUDgIiLgI0PgEFIyIGFREjIgYXExYyNxM2JisBETQmAeLs1ptbW5vW7NabW1ubAZeWCg%2BJFQoN3w0mDd8NChWJDwSaW5vW7NabW1ub1uzWm7sPCv7tFxD%2B7RAQARMQFwETCg8AAAMAGAAYBJgEmAAPAJYApgAAADIeAhQOAiIuAjQ%2BASUOAwcGJgcOAQcGFgcOAQcGFgcUFgcyHgEXHgIXHgI3Fg4BFx4CFxQGFBcWNz4CNy4BJy4BJyIOAgcGJyY2NS4BJzYuAQYHBicmNzY3HgIXHgMfAT4CJyY%2BATc%2BAzcmNzIWMjY3LgMnND4CJiceAT8BNi4CJwYHFB4BFS4CJz4BNxYyPgEB5OjVm1xcm9Xo1ZtcXJsBZA8rHDoKDz0PFD8DAxMBAzEFCRwGIgEMFhkHECIvCxU%2FOR0HFBkDDRQjEwcFaHUeISQDDTAMD0UREi4oLBAzDwQBBikEAQMLGhIXExMLBhAGKBsGBxYVEwYFAgsFAwMNFwQGCQcYFgYQCCARFwkKKiFBCwQCAQMDHzcLDAUdLDgNEiEQEgg%2FKhADGgMKEgoRBJhcm9Xo1ZtcXJvV6NWbEQwRBwkCAwYFBycPCxcHInIWInYcCUcYChQECA4QBAkuHgQPJioRFRscBAcSCgwCch0kPiAIAQcHEAsBAgsLIxcBMQENCQIPHxkCFBkdHB4QBgEBBwoMGBENBAMMJSAQEhYXDQ4qFBkKEhIDCQsXJxQiBgEOCQwHAQ0DBAUcJAwSCwRnETIoAwEJCwsLJQcKDBEAAAAAAQAAAAIErwSFABYAAAE2FwUXNxYGBw4BJwEGIi8BJjQ3ASY2AvSkjv79kfsGUE08hjv9rA8rD28PDwJYIk8EhVxliuh%2BWYcrIgsW%2FawQEG4PKxACV2XJAAYAAABgBLAErAAPABMAIwAnADcAOwAAEyEyFh0BFAYjISImPQE0NgUjFTMFITIWHQEUBiMhIiY9ATQ2BSEVIQUhMhYdARQGIyEiJj0BNDYFIRUhZAPoKTs7KfwYKTs7BBHIyPwYA%2BgpOzsp%2FBgpOzsEEf4MAfT8GAPoKTs7KfwYKTs7BBH%2B1AEsBKw7KWQpOzspZCk7ZGTIOylkKTs7KWQpO2RkyDspZCk7OylkKTtkZAAAAAIAZAAABEwEsAALABEAABMhMhYUBiMhIiY0NgERBxEBIZYDhBUdHRX8fBUdHQI7yP6iA4QEsB0qHR0qHf1E%2FtTIAfQB9AAAAAMAAABkBLAEsAAXABsAJQAAATMyFh0BITIWFREhNSMVIRE0NjMhNTQ2FxUzNQEVFAYjISImPQEB9MgpOwEsKTv%2BDMj%2BDDspASw7KcgB9Dsp%2FBgpOwSwOylkOyn%2BcGRkAZApO2QpO2RkZP1EyCk7OynIAAAABAAAAAAEsASwABUAKwBBAFcAABMhMhYPARcWFA8BBiIvAQcGJjURNDYpATIWFREUBi8BBwYiLwEmND8BJyY2ARcWFA8BFxYGIyEiJjURNDYfATc2MgU3NhYVERQGIyEiJj8BJyY0PwE2MhcyASwVCA5exwcHaggUCMdeDhUdAzUBLBUdFQ5exwgUCGoHB8deDgj%2BL2oHB8deDggV%2FtQVHRUOXscIFALLXg4VHRX%2B1BUIDl7HBwdqCBQIBLAVDl7HCBQIagcHx14OCBUBLBUdHRX%2B1BUIDl7HBwdqCBQIx14OFf0maggUCMdeDhUdFQEsFQgOXscHzl4OCBX%2B1BUdFQ5exwgUCGoHBwAAAAYAAAAABKgEqAAPABsAIwA7AEMASwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JiQyFhQGIiY0JDIWFAYjIicHFhUUBiImNTQ2PwImNTQEMhYUBiImNCQyFhQGIiY0Advy3Z9fX5%2Fd8t2gXl6gAcbgv29vv%2BC%2Fb2%2F%2BLS0gIC0gAUwtICAWDg83ETNIMykfegEJ%2FoctICAtIAIdLSAgLSAEqF%2Bf3fLdoF5eoN3y3Z9Xb7%2Fgv29vv%2BC%2FBiAtISEtICAtIQqRFxwkMzMkIDEFfgEODhekIC0gIC0gIC0gIC0AAf%2FYAFoEuQS8AFsAACUBNjc2JicmIyIOAwcABw4EFx4BMzI3ATYnLgEjIgcGBwEOASY0NwA3PgEzMhceARcWBgcOBgcGIyImJyY2NwE2NzYzMhceARcWBgcBDgEnLgECIgHVWwgHdl8WGSJBMD8hIP6IDx4eLRMNBQlZN0ozAiQkEAcdEhoYDRr%2Bqw8pHA4BRyIjQS4ODyw9DQ4YIwwod26La1YOOEBGdiIwGkQB%2F0coW2tQSE5nDxE4Qv4eDyoQEAOtAdZbZWKbEQQUGjIhH%2F6JDxsdNSg3HT5CMwIkJCcQFBcMGv6uDwEcKQ4BTSIjIQEINykvYyMLKnhuiWZMBxtAOU6%2BRAH%2FSBg3ISSGV121Qv4kDwIPDyYAAAACAGQAWASvBEQAGQBEAAABPgIeAhUUDgMHLgQ1ND4CHgEFIg4DIi4DIyIGFRQeAhcWFx4EMj4DNzY3PgQ1NCYCiTB7eHVYNkN5hKg%2BPqeFeEM4WnZ4eQEjIT8yLSohJyktPyJDbxtBMjMPBw86KzEhDSIzKUAMBAgrKT8dF2oDtURIBS1TdkA5eYB%2FslVVsn%2BAeTlAdlMtBUgtJjY1JiY1NiZvTRc4SjQxDwcOPCouGBgwKEALBAkpKkQqMhNPbQACADn%2F8gR3BL4AFwAuAAAAMh8BFhUUBg8BJi8BNycBFwcvASY0NwEDNxYfARYUBwEGIi8BJjQ%2FARYfAQcXAQKru0KNQjgiHR8uEl%2F3%2FnvUaRONQkIBGxJpCgmNQkL%2B5UK6Qo1CQjcdLhJf9wGFBL5CjUJeKmsiHTUuEl%2F4%2FnvUahKNQrpCARv%2BRmkICY1CukL%2B5UJCjUK7Qjc3LxFf%2BAGFAAAAAAMAyAAAA%2BgEsAARABUAHQAAADIeAhURFAYjISImNRE0PgEHESERACIGFBYyNjQCBqqaZDo7Kf2oKTs8Zj4CWP7%2FVj09Vj0EsB4uMhX8Ryk7OykDuRUzLar9RAK8%2FRY9Vj09VgABAAAAAASwBLAAFgAACQEWFAYiLwEBEScBBRMBJyEBJyY0NjIDhgEbDx0qDiT%2B6dT%2BzP7oywEz0gEsAQsjDx0qBKH%2B5g8qHQ8j%2FvX%2B1NL%2BzcsBGAE01AEXJA4qHQAAAAADAScAEQQJBOAAMgBAAEsAAAEVHgQXIy4DJxEXHgQVFAYHFSM1JicuASczHgEXEScuBDU0PgI3NRkBDgMVFB4DFxYXET4ENC4CArwmRVI8LAKfBA0dMydAIjxQNyiym2SWVygZA4sFV0obLkJOMCAyVWg6HSoqFQ4TJhkZCWgWKTEiGBkzNwTgTgUTLD9pQiQuLBsH%2Fs0NBxMtPGQ%2Bi6oMTU8QVyhrVk1iEAFPCA4ZLzlYNkZwSCoGTf4SARIEDh02Jh0rGRQIBgPQ%2FsoCCRYgNEM0JRkAAAABAGQAZgOUBK0ASgAAATIeARUjNC4CIyIGBwYVFB4BFxYXMxUjFgYHBgc%2BATM2FjMyNxcOAyMiLgEHDgEPASc%2BBTc%2BAScjNTMmJy4CPgE3NgIxVJlemSc8OxolVBQpGxoYBgPxxQgVFS02ImIWIIwiUzUyHzY4HCAXanQmJ1YYFzcEGAcTDBEJMAwk3aYXFQcKAg4tJGEErVCLTig%2FIhIdFSw5GkowKgkFZDKCHj4yCg8BIh6TExcIASIfBAMaDAuRAxAFDQsRCjePR2QvORQrREFMIVgAAAACABn%2F%2FwSXBLAADwAfAAABMzIWDwEGIi8BJjY7AREzBRcWBisBESMRIyImPwE2MgGQlhUIDuYOKg7mDggVlsgCF%2BYOCBWWyJYVCA7mDioBLBYO%2Bg8P%2Bg4WA4QQ%2BQ4V%2FHwDhBUO%2BQ8AAAQAGf%2F%2FA%2BgEsAAHABcAGwAlAAABIzUjFSMRIQEzMhYPAQYiLwEmNjsBETMFFTM1EwczFSE1NyM1IQPoZGRkASz9qJYVCA7mDioO5g4IFZbIAZFkY8jI%2FtTIyAEsArxkZAH0%2FHwWDvoPD%2FoOFgOEZMjI%2FRL6ZJb6ZAAAAAAEABn%2F%2FwPoBLAADwAZACEAJQAAATMyFg8BBiIvASY2OwERMwUHMxUhNTcjNSERIzUjFSMRIQcVMzUBkJYVCA7mDioO5g4IFZbIAljIyP7UyMgBLGRkZAEsx2QBLBYO%2Bg8P%2Bg4WA4SW%2BmSW%2BmT7UGRkAfRkyMgAAAAEABn%2F%2FwRMBLAADwAVABsAHwAAATMyFg8BBiIvASY2OwERMwEjESM1MxMjNSMRIQcVMzUBkJYVCA7mDioO5g4IFZbIAlhkZMhkZMgBLMdkASwWDvoPD%2FoOFgOE%2FgwBkGT7UGQBkGTIyAAAAAAEABn%2F%2FwRMBLAADwAVABkAHwAAATMyFg8BBiIvASY2OwERMwEjNSMRIQcVMzUDIxEjNTMBkJYVCA7mDioO5g4IFZbIArxkyAEsx2QBZGTIASwWDvoPD%2FoOFgOE%2FgxkAZBkyMj7tAGQZAAAAAAFABn%2F%2FwSwBLAADwATABcAGwAfAAABMzIWDwEGIi8BJjY7AREzBSM1MxMhNSETITUhEyE1IQGQlhUIDuYOKg7mDggVlsgB9MjIZP7UASxk%2FnABkGT%2BDAH0ASwWDvoPD%2FoOFgOEyMj%2BDMj%2BDMj%2BDMgABQAZ%2F%2F8EsASwAA8AEwAXABsAHwAAATMyFg8BBiIvASY2OwERMwUhNSEDITUhAyE1IQMjNTMBkJYVCA7mDioO5g4IFZbIAyD%2BDAH0ZP5wAZBk%2FtQBLGTIyAEsFg76Dw%2F6DhYDhMjI%2FgzI%2FgzI%2FgzIAAIAAAAABEwETAAPAB8AAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmAV4BkKK8u6P%2BcKW5uQJn%2FgwpOzspAfQpOzsETLuj%2FnClubmlAZClucg7Kf4MKTs7KQH0KTsAAAAAAwAAAAAETARMAA8AHwArAAABITIWFREUBiMhIiY1ETQ2BSEiBhURFBYzITI2NRE0JgUXFhQPAQYmNRE0NgFeAZClubml%2FnCju7wCZP4MKTs7KQH0KTs7%2Fm%2F9ERH9EBgYBEy5pf5wpbm5pQGQo7vIOyn%2BDCk7OykB9Ck7gr4MJAy%2BDAsVAZAVCwAAAAADAAAAAARMBEwADwAfACsAAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmBSEyFg8BBiIvASY2AV4BkKO7uaX%2BcKW5uQJn%2FgwpOzspAfQpOzv%2BFQGQFQsMvgwkDL4MCwRMvKL%2BcKW5uaUBkKO7yDsp%2FgwpOzspAfQpO8gYEP0REf0QGAAAAAMAAAAABEwETAAPAB8AKwAAASEyFhURFAYjISImNRE0NgUhIgYVERQWMyEyNjURNCYFFxYGIyEiJj8BNjIBXgGQpbm5pf5wo7u5Amf%2BDCk7OykB9Ck7O%2F77vgwLFf5wFQsMvgwkBEy5pf5wo7u8ogGQpbnIOyn%2BDCk7OykB9Ck7z%2F0QGBgQ%2FREAAAAAAgAAAAAFFARMAB8ANQAAASEyFhURFAYjISImPQE0NjMhMjY1ETQmIyEiJj0BNDYHARYUBwEGJj0BIyImPQE0NjsBNTQ2AiYBkKW5uaX%2BcBUdHRUBwik7Oyn%2BPhUdHb8BRBAQ%2FrwQFvoVHR0V%2BhYETLml%2FnCluR0VZBUdOykB9Ck7HRVkFR3p%2FuQOJg7%2B5A4KFZYdFcgVHZYVCgAAAQDZAAID1wSeACMAAAEXFgcGAgclMhYHIggBBwYrAScmNz4BPwEhIicmNzYANjc2MwMZCQgDA5gCASwYEQ4B%2Fvf%2B8wQMDgkJCQUCUCcn%2FtIXCAoQSwENuwUJEASeCQoRC%2F5TBwEjEv7K%2FsUFDwgLFQnlbm4TFRRWAS%2FTBhAAAAACAAAAAAT%2BBEwAHwA1AAABITIWHQEUBiMhIgYVERQWMyEyFh0BFAYjISImNRE0NgUBFhQHAQYmPQEjIiY9ATQ2OwE1NDYBXgGQFR0dFf4%2BKTs7KQHCFR0dFf5wpbm5AvEBRBAQ%2FrwQFvoVHR0V%2BhYETB0VZBUdOyn%2BDCk7HRVkFR25pQGQpbnp%2FuQOJg7%2B5A4KFZYdFcgVHZYVCgACAAAAAASwBLAAFQAxAAABITIWFREUBi8BAQYiLwEmNDcBJyY2ASMiBhURFBYzITI2PQE3ERQGIyEiJjURNDYzIQLuAZAVHRUObf7IDykPjQ8PAThtDgj%2B75wpOzspAfQpO8i7o%2F5wpbm5pQEsBLAdFf5wFQgObf7IDw%2BNDykPAThtDhX%2B1Dsp%2FgwpOzsplMj%2B1qW5uaUBkKW5AAADAA4ADgSiBKIADwAbACMAAAAyHgIUDgIiLgI0PgEEIg4BFB4BMj4BNCYEMhYUBiImNAHh7tmdXV2d2e7ZnV1dnQHD5sJxccLmwnFx%2FnugcnKgcgSiXZ3Z7tmdXV2d2e7ZnUdxwubCcXHC5sJzcqBycqAAAAMAAAAABEwEsAAVAB8AIwAAATMyFhURMzIWBwEGIicBJjY7ARE0NgEhMhYdASE1NDYFFTM1AcLIFR31FAoO%2FoEOJw3%2BhQ0JFfod%2FoUD6BUd%2B7QdA2dkBLAdFf6iFg%2F%2BVg8PAaoPFgFeFR38fB0V%2BvoVHWQyMgAAAAMAAAAABEwErAAVAB8AIwAACQEWBisBFRQGKwEiJj0BIyImNwE%2BAQEhMhYdASE1NDYFFTM1AkcBeg4KFfQiFsgUGPoUCw4Bfw4n%2FfkD6BUd%2B7QdA2dkBJ7%2BTQ8g%2BhQeHRX6IQ8BrxAC%2FH8dFfr6FR1kMjIAAwAAAAAETARLABQAHgAiAAAJATYyHwEWFAcBBiInASY0PwE2MhcDITIWHQEhNTQ2BRUzNQGMAXEHFQeLBwf98wcVB%2F7cBweLCBUH1APoFR37tB0DZ2QC0wFxBweLCBUH%2FfMICAEjCBQIiwcH%2FdIdFfr6FR1kMjIABAAAAAAETASbAAkAGQAjACcAABM3NjIfAQcnJjQFNzYWFQMOASMFIiY%2FASc3ASEyFh0BITU0NgUVMzWHjg4qDk3UTQ4CFtIOFQIBHRX9qxUIDtCa1P49A%2BgVHfu0HQNnZAP%2Fjg4OTdRMDyqa0g4IFf2pFB4BFQ7Qm9T9Oh0V%2BvoVHWQyMgAAAAQAAAAABEwEsAAPABkAIwAnAAABBR4BFRMUBi8BByc3JyY2EwcGIi8BJjQ%2FAQEhMhYdASE1NDYFFTM1AV4CVxQeARUO0JvUm9IOCMNMDyoOjg4OTf76A%2BgVHfu0HQNnZASwAgEdFf2rFQgO0JrUmtIOFf1QTQ4Ojg4qDk3%2BWB0V%2BvoVHWQyMgACAAT%2F7ASwBK8ABQAIAAAlCQERIQkBFQEEsP4d%2Fsb%2BcQSs%2FTMCq2cBFP5xAacDHPz55gO5AAAAAAIAAABkBEwEsAAVABkAAAERFAYrAREhESMiJjURNDY7AREhETMHIzUzBEwdFZb9RJYVHR0V%2BgH0ZMhkZAPo%2FK4VHQGQ%2FnAdFQPoFB7%2B1AEsyMgAAAMAAABFBN0EsAAWABoALwAAAQcBJyYiDwEhESMiJjURNDY7AREhETMHIzUzARcWFAcBBiIvASY0PwE2Mh8BATYyBEwC%2FtVfCRkJlf7IlhUdHRX6AfRkyGRkAbBqBwf%2BXAgUCMoICGoHFQdPASkHFQPolf7VXwkJk%2F5wHRUD6BQe%2FtQBLMjI%2Fc5qBxUH%2FlsHB8sHFQdqCAhPASkHAAMAAAANBQcEsAAWABoAPgAAAREHJy4BBwEhESMiJjURNDY7AREhETMHIzUzARcWFA8BFxYUDwEGIi8BBwYiLwEmND8BJyY0PwE2Mh8BNzYyBExnhg8lEP72%2FreWFR0dFfoB9GTIZGQB9kYPD4ODDw9GDykPg4MPKQ9GDw%2BDgw8PRg8pD4ODDykD6P7zZ4YPAw7%2B9v5wHRUD6BQe%2FtQBLMjI%2FYxGDykPg4MPKQ9GDw%2BDgw8PRg8pD4ODDykPRg8Pg4MPAAADAAAAFQSXBLAAFQAZAC8AAAERISIGHQEhESMiJjURNDY7AREhETMHIzUzEzMyFh0BMzIWDwEGIi8BJjY7ATU0NgRM%2FqIVHf4MlhUdHRX6AfRkyGRklmQVHZYVCA7mDioO5g4IFZYdA%2Bj%2B1B0Vlv5wHRUD6BQe%2FtQBLMjI%2FagdFfoVDuYODuYOFfoVHQAAAAADAAAAAASXBLAAFQAZAC8AAAERJyYiBwEhESMiJjURNDY7AREhETMHIzUzExcWBisBFRQGKwEiJj0BIyImPwE2MgRMpQ4qDv75%2Fm6WFR0dFfoB9GTIZGTr5g4IFZYdFWQVHZYVCA7mDioD6P5wpQ8P%2Fvf%2BcB0VA%2BgUHv7UASzIyP2F5Q8V%2BhQeHhT6FQ%2FlDwADAAAAyASwBEwACQATABcAABMhMhYdASE1NDYBERQGIyEiJjURExUhNTIETBUd%2B1AdBJMdFfu0FR1kAZAETB0VlpYVHf7U%2FdoVHR0VAib%2B1MjIAAAGAAMAfQStBJcADwAZAB0ALQAxADsAAAEXFhQPAQYmPQEhNSE1NDYBIyImPQE0NjsBFyM1MwE3NhYdASEVIRUUBi8BJjQFIzU7AjIWHQEUBisBA6f4Dg74DhX%2BcAGQFf0vMhUdHRUyyGRk%2FoL3DhUBkP5wFQ73DwOBZGRkMxQdHRQzBI3mDioO5g4IFZbIlhUI%2FoUdFWQVHcjI%2FcvmDggVlsiWFQgO5g4qecgdFWQVHQAAAAACAGQAAASwBLAAFgBRAAABJTYWFREUBisBIiY1ES4ENRE0NiUyFh8BERQOAg8BERQGKwEiJjURLgQ1ETQ%2BAzMyFh8BETMRPAE%2BAjMyFh8BETMRND4DA14BFBklHRXIFR0EDiIaFiX%2B4RYZAgEVHR0LCh0VyBUdBA4iGhYBBwoTDRQZAgNkBQkVDxcZAQFkAQUJFQQxdBIUH%2FuuFR0dFQGNAQgbHzUeAWcfRJEZDA3%2BPhw%2FMSkLC%2F5BFR0dFQG%2FBA8uLkAcAcICBxENCxkMDf6iAV4CBxENCxkMDf6iAV4CBxENCwABAGQAAASwBEwAMwAAARUiDgMVERQWHwEVITUyNjURIREUFjMVITUyPgM1ETQmLwE1IRUiBhURIRE0JiM1BLAEDiIaFjIZGf5wSxn%2BDBlL%2FnAEDiIaFjIZGQGQSxkB9BlLBEw4AQUKFA78iBYZAQI4OA0lAYr%2BdiUNODgBBQoUDgN4FhkBAjg4DSX%2BdgGKJQ04AAAABgAAAAAETARMAAwAHAAgACQAKAA0AAABITIWHQEjBTUnITchBSEyFhURFAYjISImNRE0NhcVITUBBTUlBRUhNQUVFAYjIQchJyE3MwKjAXcVHWn%2B2cj%2BcGQBd%2F4lASwpOzsp%2FtQpOzspASwCvP5wAZD8GAEsArwdFf6JZP6JZAGQyGkD6B0VlmJiyGTIOyn%2BDCk7OykB9Ck7ZMjI%2FveFo4XGyMhm%2BBUdZGTIAAEAEAAQBJ8EnwAmAAATNzYWHwEWBg8BHgEXNz4BHwEeAQ8BBiIuBicuBTcRohEuDosOBhF3ZvyNdxEzE8ATBxGjAw0uMUxPZWZ4O0p3RjITCwED76IRBhPCFDERdo78ZXYRBA6IDi8RogEECBUgNUNjO0qZfHNVQBAAAAACAAAAAASwBEwAIwBBAAAAMh4EHwEVFAYvAS4BPQEmIAcVFAYPAQYmPQE%2BBRIyHgIfARUBHgEdARQGIyEiJj0BNDY3ATU0PgIB%2FLimdWQ%2FLAkJHRTKFB2N%2FsKNHRTKFB0DDTE7ZnTKcFImFgEBAW0OFR0V%2B7QVHRUOAW0CFiYETBUhKCgiCgrIFRgDIgMiFZIYGJIVIgMiAxgVyAQNJyQrIP7kExwcCgoy%2FtEPMhTUFR0dFdQUMg8BLzIEDSEZAAADAAAAAASwBLAADQAdACcAAAEHIScRMxUzNTMVMzUzASEyFhQGKwEXITcjIiY0NgMhMhYdASE1NDYETMj9qMjIyMjIyPyuArwVHR0VDIn8SokMFR0dswRMFR37UB0CvMjIAfTIyMjI%2FOAdKh1kZB0qHf7UHRUyMhUdAAAAAwBkAAAEsARMAAkAEwAdAAABIyIGFREhETQmASMiBhURIRE0JgEhETQ2OwEyFhUCvGQpOwEsOwFnZCk7ASw7%2FRv%2B1DspZCk7BEw7KfwYA%2BgpO%2F7UOyn9RAK8KTv84AGQKTs7KQAAAAAF%2F5wAAASwBEwADwATAB8AJQApAAATITIWFREUBiMhIiY1ETQ2FxEhEQUjFTMRITUzNSMRIQURByMRMwcRMxHIArx8sLB8%2FUR8sLAYA4T%2BDMjI%2FtTIyAEsAZBkyMhkZARMsHz%2BDHywsHwB9HywyP1EArzIZP7UZGQBLGT%2B1GQB9GT%2B1AEsAAAABf%2BcAAAEsARMAA8AEwAfACUAKQAAEyEyFhURFAYjISImNRE0NhcRIREBIzUjFSMRMxUzNTMFEQcjETMHETMRyAK8fLCwfP1EfLCwGAOE%2FgxkZGRkZGQBkGTIyGRkBEywfP4MfLCwfAH0fLDI%2FUQCvP2oyMgB9MjIZP7UZAH0ZP7UASwABP%2BcAAAEsARMAA8AEwAbACMAABMhMhYVERQGIyEiJjURNDYXESERBSMRMxUhESEFIxEzFSERIcgCvHywsHz9RHywsBgDhP4MyMj%2B1AEsAZDIyP7UASwETLB8%2Fgx8sLB8AfR8sMj9RAK8yP7UZAH0ZP7UZAH0AAAABP%2BcAAAEsARMAA8AEwAWABkAABMhMhYVERQGIyEiJjURNDYXESERAS0BDQERyAK8fLCwfP1EfLCwGAOE%2Fgz%2B1AEsAZD%2B1ARMsHz%2BDHywsHwB9HywyP1EArz%2BDJaWlpYBLAAAAAX%2FnAAABLAETAAPABMAFwAgACkAABMhMhYVERQGIyEiJjURNDYXESERAyERIQcjIgYVFBY7AQERMzI2NTQmI8gCvHywsHz9RHywsBgDhGT9RAK8ZIImOTYpgv4Mgik2OSYETLB8%2Fgx8sLB8AfR8sMj9RAK8%2FagB9GRWQUFUASz%2B1FRBQVYAAAAF%2F5wAAASwBEwADwATAB8AJQApAAATITIWFREUBiMhIiY1ETQ2FxEhEQUjFTMRITUzNSMRIQEjESM1MwMjNTPIArx8sLB8%2FUR8sLAYA4T%2BDMjI%2FtTIyAEsAZBkZMjIZGQETLB8%2Fgx8sLB8AfR8sMj9RAK8yGT%2B1GRkASz%2BDAGQZP4MZAAG%2F5wAAASwBEwADwATABkAHwAjACcAABMhMhYVERQGIyEiJjURNDYXESERBTMRIREzASMRIzUzBRUzNQEjNTPIArx8sLB8%2FUR8sLAYA4T9RMj%2B1GQCWGRkyP2oZAEsZGQETLB8%2Fgx8sLB8AfR8sMj9RAK8yP5wAfT%2BDAGQZMjIyP7UZAAF%2F5wAAASwBEwADwATABwAIgAmAAATITIWFREUBiMhIiY1ETQ2FxEhEQEHIzU3NSM1IQEjESM1MwMjNTPIArx8sLB8%2FUR8sLAYA4T%2BDMdkx8gBLAGQZGTIx2RkBEywfP4MfLCwfAH0fLDI%2FUQCvP5wyDLIlmT%2BDAGQZP4MZAAAAAMACQAJBKcEpwAPABsAJQAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgchFSEVISc1NyEB4PDbnl5entvw255eXp4BxeTCcXHC5MJxcWz%2B1AEs%2FtRkZAEsBKdentvw255eXp7b8NueTHHC5MJxccLkwtDIZGTIZAAAAAAEAAkACQSnBKcADwAbACcAKwAAADIeAhQOAiIuAjQ%2BAQQiDgEUHgEyPgE0JgcVBxcVIycjFSMRIQcVMzUB4PDbnl5entvw255eXp4BxeTCcXHC5MJxcWwyZGRklmQBLMjIBKdentvw255eXp7b8NueTHHC5MJxccLkwtBkMmQyZGQBkGRkZAAAAv%2Fy%2F50EwgRBACAANgAAATIWFzYzMhYUBisBNTQmIyEiBh0BIyImNTQ2NyY1ND4BEzMyFhURMzIWDwEGIi8BJjY7ARE0NgH3brUsLC54qqp4gB0V%2FtQVHd5QcFZBAmKqepYKD4kVCg3fDSYN3w0KFYkPBEF3YQ6t8a36FR0dFfpzT0VrDhMSZKpi%2FbMPCv7tFxD0EBD0EBcBEwoPAAAAAAL%2F8v%2BcBMMEQQAcADMAAAEyFhc2MzIWFxQGBwEmIgcBIyImNTQ2NyY1ND4BExcWBisBERQGKwEiJjURIyImNzY3NjIB9m62LCsueaoBeFr%2Bhg0lDf6DCU9xVkECYqnm3w0KFYkPCpYKD4kVCg3HGBMZBEF3YQ%2BteGOkHAFoEBD%2Bk3NPRWsOExNkqWP9kuQQF%2F7tCg8PCgETFxDMGBMAAAABAGQAAARMBG0AGAAAJTUhATMBMwkBMwEzASEVIyIGHQEhNTQmIwK8AZD%2B8qr%2B8qr%2B1P7Uqv7yqv7yAZAyFR0BkB0VZGQBLAEsAU3%2Bs%2F7U%2FtRkHRUyMhUdAAAAAAEAeQAABDcEmwAvAAABMhYXHgEVFAYHFhUUBiMiJxUyFh0BITU0NjM1BiMiJjU0Ny4BNTQ2MzIXNCY1NDYCWF6TGll7OzIJaUo3LRUd%2FtQdFS03SmkELzlpSgUSAqMEm3FZBoNaPWcfHRpKaR77HRUyMhUd%2Bx5pShIUFVg1SmkCAhAFdKMAAAAGACcAFASJBJwAEQAqAEIASgBiAHsAAAEWEgIHDgEiJicmAhI3PgEyFgUiBw4BBwYWHwEWMzI3Njc2Nz4BLwEmJyYXIgcOAQcGFh8BFjMyNz4BNz4BLwEmJyYWJiIGFBYyNjciBw4BBw4BHwEWFxYzMjc%2BATc2Ji8BJhciBwYHBgcOAR8BFhcWMzI3PgE3NiYvASYD8m9PT29T2dzZU29PT29T2dzZ%2Fj0EBHmxIgQNDCQDBBcGG0dGYAsNAwkDCwccBAVQdRgEDA0iBAQWBhJROQwMAwkDCwf5Y4xjY4xjVhYGElE6CwwDCQMLBwgEBVB1GAQNDCIEjRcGG0dGYAsNAwkDCwcIBAR5sSIEDQwkAwPyb%2F7V%2FtVvU1dXU28BKwErb1NXVxwBIrF5DBYDCQEWYEZHGwMVDCMNBgSRAhh1UA0WAwkBFTpREgMVCyMMBwT6Y2OMY2MVFTpREQQVCyMMBwQCGHVQDRYDCQEkFmBGRxsDFQwjDQYEASKxeQwWAwkBAAAABQBkAAAD6ASwAAwADwAWABwAIgAAASERIzUhFSERNDYzIQEjNQMzByczNTMDISImNREFFRQGKwECvAEstP6s%2FoQPCgI%2FASzIZKLU1KJktP51Cg8DhA8KwwMg%2FoTIyALzCg%2F%2B1Mj84NTUyP4MDwoBi8jDCg8AAAAABQBkAAAD6ASwAAkADAATABoAIQAAASERCQERNDYzIQEjNRMjFSM1IzcDISImPQEpARUUBisBNQK8ASz%2Bov3aDwoCPwEsyD6iZKLUqv6dCg8BfAIIDwqbAyD9%2BAFe%2FdoERwoP%2FtTI%2FHzIyNT%2BZA8KNzcKD1AAAAAAAwAAAAAEsAP0AAgAGQAfAAABIxUzFyERIzcFMzIeAhUhFSEDETM0PgIBMwMhASEEiqJkZP7UotT9EsgbGiEOASz9qMhkDiEaAnPw8PzgASwB9AMgyGQBLNTUBBErJGT%2BogHCJCsRBP5w%2FnAB9AAAAAMAAAAABEwETAAZADIAOQAAATMyFh0BMzIWHQEUBiMhIiY9ATQ2OwE1NDYFNTIWFREUBiMhIic3ARE0NjMVFBYzITI2AQc1IzUzNQKKZBUdMhUdHRX%2B1BUdHRUyHQFzKTs7Kf2oARP2%2Fro7KVg%2BASw%2BWP201MjIBEwdFTIdFWQVHR0VZBUdMhUd%2BpY7KfzgKTsE9gFGAUQpO5Y%2BWFj95tSiZKIAAwBkAAAEvARMABkANgA9AAABMzIWHQEzMhYdARQGIyEiJj0BNDY7ATU0NgU1MhYVESMRMxQOAiMhIiY1ETQ2MxUUFjMhMjYBBzUjNTM1AcJkFR0yFR0dFf7UFR0dFTIdAXMpO8jIDiEaG%2F2oKTs7KVg%2BASw%2BWAGc1MjIBEwdFTIdFWQVHR0VZBUdMhUd%2BpY7Kf4M%2FtQkKxEEOykDICk7lj5YWP3m1KJkogAAAAP%2FogAABRYE1AALABsAHwAACQEWBiMhIiY3ATYyEyMiBhcTHgE7ATI2NxM2JgMVMzUCkgJ9FyAs%2BwQsIBcCfRZARNAUGAQ6BCMUNhQjBDoEGODIBK37sCY3NyYEUCf%2BTB0U%2FtIUHR0UAS4UHf4MZGQAAAAACQAAAAAETARMAA8AHwAvAD8ATwBfAG8AfwCPAAABMzIWHQEUBisBIiY9ATQ2EzMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2ITMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBMzIWHQEUBisBIiY9ATQ2ITMyFh0BFAYrASImPQE0NiEzMhYdARQGKwEiJj0BNDYBqfoKDw8K%2BgoPDwr6Cg8PCvoKDw8BmvoKDw8K%2BgoPD%2Fzq%2BgoPDwr6Cg8PAZr6Cg8PCvoKDw8BmvoKDw8K%2BgoPD%2Fzq%2BgoPDwr6Cg8PAZr6Cg8PCvoKDw8BmvoKDw8K%2BgoPDwRMDwqWCg8PCpYKD%2F7UDwqWCg8PCpYKDw8KlgoPDwqWCg%2F%2B1A8KlgoPDwqWCg8PCpYKDw8KlgoPDwqWCg8PCpYKD%2F7UDwqWCg8PCpYKDw8KlgoPDwqWCg8PCpYKDw8KlgoPAAAAAwAAAAAEsAUUABkAKQAzAAABMxUjFSEyFg8BBgchJi8BJjYzITUjNTM1MwEhMhYUBisBFyE3IyImNDYDITIWHQEhNTQ2ArxkZAFePjEcQiko%2FPwoKUIcMT4BXmRkyP4%2BArwVHR0VDIn8SooNFR0dswRMFR37UB0EsMhkTzeEUzMzU4Q3T2TIZPx8HSodZGQdKh3%2B1B0VMjIVHQAABAAAAAAEsAUUAAUAGQArADUAAAAyFhUjNAchFhUUByEyFg8BIScmNjMhJjU0AyEyFhQGKwEVBSElNSMiJjQ2AyEyFh0BITU0NgIwUDnCPAE6EgMBSCkHIq%2F9WrIiCikBSAOvArwVHR0VlgET%2FEoBE5YVHR2zBEwVHftQHQUUOykpjSUmCBEhFpGRFiERCCb%2BlR0qHcjIyMgdKh39qB0VMjIVHQAEAAAAAASwBJ0ABwAUACQALgAAADIWFAYiJjQTMzIWFRQXITY1NDYzASEyFhQGKwEXITcjIiY0NgMhMhYdASE1NDYCDZZqapZqty4iKyf%2BvCcrI%2F7NArwVHR0VDYr8SokMFR0dswRMFR37UB0EnWqWamqW%2Fus5Okxra0w6Of5yHSodZGQdKh3%2B1B0VMjIVHQAEAAAAAASwBRQADwAcACwANgAAATIeARUUBiImNTQ3FzcnNhMzMhYVFBchNjU0NjMBITIWFAYrARchNyMiJjQ2AyEyFh0BITU0NgJYL1szb5xvIpBvoyIfLiIrJ%2F68Jysj%2Fs0CvBUdHRUNivxKiQwVHR2zBEwVHftQHQUUa4s2Tm9vTj5Rj2%2BjGv4KOTpMa2tMOjn%2Bch0qHWRkHSod%2FtQdFTIyFR0AAAADAAAAAASwBRIAEgAiACwAAAEFFSEUHgMXIS4BNTQ%2BAjcBITIWFAYrARchNyMiJjQ2AyEyFh0BITU0NgJYASz%2B1CU%2FP00T%2Fe48PUJtj0r%2BogK8FR0dFQ2K%2FEqJDBUdHbMETBUd%2B1AdBLChizlmUT9IGVO9VFShdksE%2FH4dKh1kZB0qHf7UHRUyMhUdAAIAyAAAA%2BgFFAAPACkAAAAyFh0BHgEdASE1NDY3NTQDITIWFyMVMxUjFTMVIxUzFAYjISImNRE0NgIvUjsuNv5wNi5kAZA2XBqsyMjIyMh1U%2F5wU3V1BRQ7KU4aXDYyMjZcGk4p%2Fkc2LmRkZGRkU3V1UwGQU3UAAAMAZP%2F%2FBEwETAAPAC8AMwAAEyEyFhURFAYjISImNRE0NgMhMhYdARQGIyEXFhQGIi8BIQcGIiY0PwEhIiY9ATQ2BQchJ5YDhBUdHRX8fBUdHQQDtgoPDwr%2B5eANGiUNWP30Vw0mGg3g%2Ft8KDw8BqmQBRGQETB0V%2FgwVHR0VAfQVHf1EDwoyCg%2FgDSUbDVhYDRslDeAPCjIKD2RkZAAAAAAEAAAAAASwBEwAGQAjAC0ANwAAEyEyFh0BIzQmKwEiBhUjNCYrASIGFSM1NDYDITIWFREhETQ2ExUUBisBIiY9ASEVFAYrASImPQHIAyBTdWQ7KfopO2Q7KfopO2R1EQPoKTv7UDvxHRVkFR0D6B0VZBUdBEx1U8gpOzspKTs7KchTdf4MOyn%2B1AEsKTv%2BDDIVHR0VMjIVHR0VMgADAAEAAASpBKwADQARABsAAAkBFhQPASEBJjQ3ATYyCQMDITIWHQEhNTQ2AeACqh8fg%2F4f%2FfsgIAEnH1n%2BrAFWAS%2F%2Bq6IDIBUd%2FHwdBI39VR9ZH4MCBh9ZHwEoH%2F5u%2FqoBMAFV%2FBsdFTIyFR0AAAAAAgCPAAAEIQSwABcALwAAAQMuASMhIgYHAwYWMyEVFBYyNj0BMzI2AyE1NDY7ATU0NjsBETMRMzIWHQEzMhYVBCG9CCcV%2FnAVJwi9CBMVAnEdKh19FROo%2Fa0dFTIdFTDILxUdMhUdAocB%2BhMcHBP%2BBhMclhUdHRWWHP2MMhUdMhUdASz%2B1B0VMh0VAAAEAAAAAASwBLAADQAQAB8AIgAAASERFAYjIREBNTQ2MyEBIzUBIREUBiMhIiY1ETQ2MyEBIzUDhAEsDwr%2Bif7UDwoBdwEsyP2oASwPCv12Cg8PCgF3ASzIAyD9wQoPAk8BLFQKD%2F7UyP4M%2FcEKDw8KA7YKD%2F7UyAAC%2F5wAZAUUBEcARgBWAAABMzIeAhcWFxY2NzYnJjc%2BARYXFgcOASsBDgEPAQ4BKwEiJj8BBisBIicHDgErASImPwEmLwEuAT0BNDY7ATY3JyY2OwE2BSMiBh0BFBY7ATI2PQE0JgHkw0uOakkMEhEfQwoKGRMKBQ8XDCkCA1Y9Pgc4HCcDIhVkFRgDDDEqwxgpCwMiFWQVGAMaVCyfExwdFXwLLW8QBxXLdAFF%2BgoPDwr6Cg8PBEdBa4pJDgYKISAiJRsQCAYIDCw9P1c3fCbqFB0dFEYOCEAUHR0UnUplNQcmFTIVHVdPXw4TZV8PCjIKDw8KMgoPAAb%2FnP%2FmBRQEfgAJACQANAA8AFIAYgAAASU2Fh8BFgYPASUzMhYfASEyFh0BFAYHBQYmJyYjISImPQE0NhcjIgYdARQ7ATI2NTQmJyYEIgYUFjI2NAE3PgEeARceAT8BFxYGDwEGJi8BJjYlBwYfAR4BPwE2Jy4BJy4BAoEBpxMuDiAOAxCL%2FCtqQ0geZgM3FR0cE%2F0fFyIJKjr%2B1D5YWLlQExIqhhALIAsSAYBALS1ALf4PmBIgHhMQHC0aPzANITNQL3wpgigJASlmHyElDR0RPRMFAhQHCxADhPcICxAmDyoNeMgiNtQdFTIVJgeEBBQPQ1g%2ByD5YrBwVODMQEAtEERzJLUAtLUD%2B24ITChESEyMgAwWzPUkrRSgJL5cvfRxYGyYrDwkLNRAhFEgJDAQAAAAAAwBkAAAEOQSwAFEAYABvAAABMzIWHQEeARcWDgIPATIeBRUUDgUjFRQGKwEiJj0BIxUUBisBIiY9ASMiJj0BNDY7AREjIiY9ATQ2OwE1NDY7ATIWHQEzNTQ2AxUhMj4CNTc0LgMjARUhMj4CNTc0LgMjAnGWCg9PaAEBIC4uEBEGEjQwOiodFyI2LUAjGg8KlgoPZA8KlgoPrwoPDwpLSwoPDwqvDwqWCg9kD9cBBxwpEwsBAQsTKRz%2B%2BQFrHCkTCwEBCxMpHASwDwptIW1KLk0tHwYGAw8UKDJOLTtdPCoVCwJLCg8PCktLCg8PCksPCpYKDwJYDwqWCg9LCg8PCktLCg%2F%2B1MgVHR0LCgQOIhoW%2FnDIFR0dCwoEDiIaFgAAAwAEAAIEsASuABcAKQAsAAATITIWFREUBg8BDgEjISImJy4CNRE0NgQiDgQPARchNy4FAyMT1AMMVnokEhIdgVL9xFKCHAgYKHoCIIx9VkcrHQYGnAIwnAIIIClJVSGdwwSuelb%2BYDO3QkJXd3ZYHFrFMwGgVnqZFyYtLSUMDPPzBQ8sKDEj%2FsIBBQACAMgAAAOEBRQADwAZAAABMzIWFREUBiMhIiY1ETQ2ARUUBisBIiY9AQHblmesVCn%2BPilUrAFINhWWFTYFFKxn%2FgwpVFQpAfRnrPwY4RU2NhXhAAACAMgAAAOEBRQADwAZAAABMxQWMxEUBiMhIiY1ETQ2ARUUBisBIiY9AQHbYLOWVCn%2BPilUrAFINhWWFTYFFJaz%2FkIpVFQpAfRnrPwY4RU2NhXhAAACAAAAFAUOBBoAFAAaAAAJASUHFRcVJwc1NzU0Jj4CPwEnCQEFJTUFJQUO%2FYL%2Bhk5klpZkAQEBBQQvkwKCAVz%2Bov6iAV4BXgL%2F%2FuWqPOCWx5SVyJb6BA0GCgYDKEEBG%2F1ipqaTpaUAAAMAZAH0BLADIAAHAA8AFwAAEjIWFAYiJjQkMhYUBiImNCQyFhQGIiY0vHxYWHxYAeh8WFh8WAHofFhYfFgDIFh8WFh8WFh8WFh8WFh8WFh8AAAAAAMBkAAAArwETAAHAA8AFwAAADIWFAYiJjQSMhYUBiImNBIyFhQGIiY0Aeh8WFh8WFh8WFh8WFh8WFh8WARMWHxYWHz%2ByFh8WFh8%2FshYfFhYfAAAAAMAZABkBEwETAAPAB8ALwAAEyEyFh0BFAYjISImPQE0NhMhMhYdARQGIyEiJj0BNDYTITIWHQEUBiMhIiY9ATQ2fQO2Cg8PCvxKCg8PCgO2Cg8PCvxKCg8PCgO2Cg8PCvxKCg8PBEwPCpYKDw8KlgoP%2FnAPCpYKDw8KlgoP%2FnAPCpYKDw8KlgoPAAAABAAAAAAEsASwAA8AHwAvADMAAAEhMhYVERQGIyEiJjURNDYFISIGFREUFjMhMjY1ETQmBSEyFhURFAYjISImNRE0NhcVITUBXgH0ory7o%2F4Mpbm5Asv9qCk7OykCWCk7O%2F2xAfQVHR0V%2FgwVHR1HAZAEsLuj%2FgylubmlAfSlucg7Kf2oKTs7KQJYKTtkHRX%2B1BUdHRUBLBUdZMjIAAAAAAEAZABkBLAETAA7AAATITIWFAYrARUzMhYUBisBFTMyFhQGKwEVMzIWFAYjISImNDY7ATUjIiY0NjsBNSMiJjQ2OwE1IyImNDaWA%2BgVHR0VMjIVHR0VMjIVHR0VMjIVHR0V%2FBgVHR0VMjIVHR0VMjIVHR0VMjIVHR0ETB0qHcgdKh3IHSodyB0qHR0qHcgdKh3IHSodyB0qHQAAAAYBLAAFA%2BgEowAHAA0AEwAZAB8AKgAAAR4BBgcuATYBMhYVIiYlFAYjNDYBMhYVIiYlFAYjNDYDFRQGIiY9ARYzMgKKVz8%2FV1c%2FP%2F75fLB8sAK8sHyw%2FcB8sHywArywfLCwHSodKAMRBKNDsrJCQrKy%2FsCwfLB8fLB8sP7UsHywfHywfLD%2B05AVHR0VjgQAAAH%2FtQDIBJQDgQBCAAABNzYXAR4BBw4BKwEyFRQOBCsBIhE0NyYiBxYVECsBIi4DNTQzIyImJyY2NwE2HwEeAQ4BLwEHIScHBi4BNgLpRRkUASoLCAYFGg8IAQQNGyc%2FKZK4ChRUFQu4jjBJJxkHAgcPGQYGCAsBKhQaTBQVCiMUM7YDe7YsFCMKFgNuEwYS%2FtkLHw8OEw0dNkY4MhwBIBgXBAQYF%2F7gKjxTQyMNEw4PHwoBKBIHEwUjKBYGDMHBDAUWKCMAAAAAAgAAAAAEsASwACUAQwAAASM0LgUrAREUFh8BFSE1Mj4DNREjIg4FFSMRIQEjNC4DKwERFBYXMxUjNTI1ESMiDgMVIzUhBLAyCAsZEyYYGcgyGRn%2BcAQOIhoWyBkYJhMZCwgyA%2Bj9RBkIChgQEWQZDQzIMmQREBgKCBkB9AOEFSAVDggDAfyuFhkBAmRkAQUJFQ4DUgEDCA4VIBUBLP0SDxMKBQH%2BVwsNATIyGQGpAQUKEw%2BWAAAAAAMAAAAABEwErgAdACAAMAAAATUiJy4BLwEBIwEGBw4BDwEVITUiJj8BIRcWBiMVARsBARUUBiMhIiY9ATQ2MyEyFgPoGR4OFgUE%2Ft9F%2FtQSFQkfCwsBETE7EkUBJT0NISf%2B7IZ5AbEdFfwYFR0dFQPoFR0BLDIgDiIKCwLr%2FQ4jFQkTBQUyMisusKYiQTIBhwFW%2Fqr942QVHR0VZBUdHQADAAAAAASwBLAADwBHAEoAABMhMhYVERQGIyEiJjURNDYFIyIHAQYHBgcGHQEUFjMhMjY9ATQmIyInJj8BIRcWBwYjIgYdARQWMyEyNj0BNCYnIicmJyMBJhMjEzIETBUdHRX7tBUdHQJGRg0F%2FtUREhImDAsJAREIDAwINxAKCj8BCjkLEQwYCAwMCAE5CAwLCBEZGQ8B%2FuAFDsVnBLAdFfu0FR0dFQRMFR1SDP0PIBMSEAUNMggMDAgyCAwXDhmjmR8YEQwIMggMDAgyBwwBGRskAuwM%2FgUBCAAABAAAAAAEsASwAAMAEwAjACcAAAEhNSEFITIWFREUBiMhIiY1ETQ2KQEyFhURFAYjISImNRE0NhcRIREEsPtQBLD7ggGQFR0dFf5wFR0dAm0BkBUdHRX%2BcBUdHUcBLARMZMgdFfx8FR0dFQOEFR0dFf5wFR0dFQGQFR1k%2FtQBLAAEAAAAAASwBLAADwAfACMAJwAAEyEyFhURFAYjISImNRE0NgEhMhYVERQGIyEiJjURNDYXESEREyE1ITIBkBUdHRX%2BcBUdHQJtAZAVHR0V%2FnAVHR1HASzI%2B1AEsASwHRX8fBUdHRUDhBUd%2FgwdFf5wFR0dFQGQFR1k%2FtQBLP2oZAAAAAACAAAAZASwA%2BgAJwArAAATITIWFREzNTQ2MyEyFh0BMxUjFRQGIyEiJj0BIxEUBiMhIiY1ETQ2AREhETIBkBUdZB0VAZAVHWRkHRX%2BcBUdZB0V%2FnAVHR0CnwEsA%2BgdFf6ilhUdHRWWZJYVHR0Vlv6iFR0dFQMgFR3%2B1P7UASwAAAQAAAAABLAEsAADABMAFwAnAAAzIxEzFyEyFhURFAYjISImNRE0NhcRIREBITIWFREUBiMhIiY1ETQ2ZGRklgGQFR0dFf5wFR0dRwEs%2FqIDhBUdHRX8fBUdHQSwZB0V%2FnAVHR0VAZAVHWT%2B1AEs%2FgwdFf5wFR0dFQGQFR0AAAAAAgBkAAAETASwACcAKwAAATMyFhURFAYrARUhMhYVERQGIyEiJjURNDYzITUjIiY1ETQ2OwE1MwcRIRECWJYVHR0VlgHCFR0dFfx8FR0dFQFelhUdHRWWZMgBLARMHRX%2BcBUdZB0V%2FnAVHR0VAZAVHWQdFQGQFR1kyP7UASwAAAAEAAAAAASwBLAAAwATABcAJwAAISMRMwUhMhYVERQGIyEiJjURNDYXESERASEyFhURFAYjISImNRE0NgSwZGT9dgGQFR0dFf5wFR0dRwEs%2FK4DhBUdHRX8fBUdHQSwZB0V%2FnAVHR0VAZAVHWT%2B1AEs%2FgwdFf5wFR0dFQGQFR0AAAEBLAAwA28EgAAPAAAJAQYjIiY1ETQ2MzIXARYUA2H%2BEhcSDhAQDhIXAe4OAjX%2BEhcbGQPoGRsX%2FhIOKgAAAAABAUEAMgOEBH4ACwAACQE2FhURFAYnASY0AU8B7h0qKh3%2BEg4CewHuHREp%2FBgpER0B7g4qAAAAAAEAMgFBBH4DhAALAAATITIWBwEGIicBJjZkA%2BgpER3%2BEg4qDv4SHREDhCod%2FhIODgHuHSoAAAAAAQAyASwEfgNvAAsAAAkBFgYjISImNwE2MgJ7Ae4dESn8GCkRHQHuDioDYf4SHSoqHQHuDgAAAAACAAgAAASwBCgABgAKAAABFQE1LQE1ASE1IQK8%2FUwBnf5jBKj84AMgAuW2%2Fr3dwcHd%2B9jIAAAAAAIAAABkBLAEsAALADEAAAEjFTMVIREzNSM1IQEzND4FOwERFAYPARUhNSIuAzURMzIeBRUzESEEsMjI%2FtTIyAEs%2B1AyCAsZEyYYGWQyGRkBkAQOIhoWZBkYJhMZCwgy%2FOADhGRkASxkZP4MFSAVDggDAf3aFhkBAmRkAQUJFQ4CJgEDCA4VIBUBLAAAAgAAAAAETAPoACUAMQAAASM0LgUrAREUFh8BFSE1Mj4DNREjIg4FFSMRIQEjFTMVIREzNSM1IQMgMggLGRMmGBlkMhkZ%2FnAEDiIaFmQZGCYTGQsIMgMgASzIyP7UyMgBLAK8FSAVDggDAf3aFhkCAWRkAQUJFQ4CJgEDCA4VIBUBLPzgZGQBLGRkAAABAMgAZgNyBEoAEgAAATMyFgcJARYGKwEiJwEmNDcBNgK9oBAKDP4wAdAMChCgDQr%2BKQcHAdcKBEoWDP4w%2FjAMFgkB1wgUCAHXCQAAAQE%2BAGYD6ARKABIAAAEzMhcBFhQHAQYrASImNwkBJjYBU6ANCgHXBwf%2BKQoNoBAKDAHQ%2FjAMCgRKCf4pCBQI%2FikJFgwB0AHQDBYAAAEAZgDIBEoDcgASAAAAFh0BFAcBBiInASY9ATQ2FwkBBDQWCf4pCBQI%2FikJFgwB0AHQA3cKEKANCv4pBwcB1woNoBAKDP4wAdAAAAABAGYBPgRKA%2BgAEgAACQEWHQEUBicJAQYmPQE0NwE2MgJqAdcJFgz%2BMP4wDBYJAdcIFAPh%2FikKDaAQCgwB0P4wDAoQoA0KAdcHAAAAAgDZ%2F%2FkEPQSwAAUAOgAAARQGIzQ2BTMyFh8BNjc%2BAh4EBgcOBgcGIiYjIgYiJy4DLwEuAT4EHgEXJyY2A%2BiwfLD%2BVmQVJgdPBQsiKFAzRyorDwURAQQSFyozTSwNOkkLDkc3EDlfNyYHBw8GDyUqPjdGMR%2BTDA0EsHywfLDIHBPCAQIGBwcFDx81S21DBxlLR1xKQhEFBQcHGWt0bCQjP2hJNyATBwMGBcASGAAAAAACAMgAFQOEBLAAFgAaAAATITIWFREUBisBEQcGJjURIyImNRE0NhcVITX6AlgVHR0Vlv8TGpYVHR2rASwEsB0V%2FnAVHf4MsgkQFQKKHRUBkBUdZGRkAAAAAgDIABkETASwAA4AEgAAEyEyFhURBRElIREjETQ2ARU3NfoC7ic9%2FUQCWP1EZB8BDWQEsFEs%2FFt1A7Z9%2FBgEARc0%2FV1kFGQAAQAAAAECTW%2FDBF9fDzz1AB8EsAAAAADQdnOXAAAAANB2c5f%2FUf%2BcBdwFFAAAAAgAAgAAAAAAAAABAAAFFP%2BFAAAFFP9R%2FtQF3AABAAAAAAAAAAAAAAAAAAAAowG4ACgAAAAAAZAAAASwAAAEsABkBLAAAASwAAAEsABwAooAAAUUAAACigAABRQAAAGxAAABRQAAANgAAADYAAAAogAAAQQAAABIAAABBAAAAUUAAASwAGQEsAB7BLAAyASwAMgB9AAABLD%2F8gSwAAAEsAAABLD%2F8ASwAAAEsAAOBLAACQSwAGQEsP%2FTBLD%2F0wSwAAAEsAAABLAAAASwAAAEsAAABLAAJgSwAG4EsAAXBLAAFwSwABcEsABkBLAAGgSwAGQEsAAMBLAAZASwABcEsP%2BcBLAAZASwABcEsAAXBLAAAASwABcEsAAXBLAAFwSwAGQEsAAABLAAZASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAZASwAMgEsAAABLAAAASwADUEsABkBLAAyASw%2F7UEsAAhBLAAAASwAAAEsAAABLAAAASwAAAEsP%2BcBLAAAASwAAAEsAAABLAA2wSwABcEsAB1BLAAAASwAAAEsAAABLAACgSwAMgEsAAABLAAnQSwAMgEsADIBLAAyASwAAAEsP%2F%2BBLABLASwAGQEsACIBLABOwSwABcEsAAXBLAAFwSwABcEsAAXBLAAFwSwAAAEsAAXBLAAFwSwABcEsAAXBLAAAASwALcEsAC3BLAAAASwAAAEsABJBLAAFwSwAAAEsAAABLAAXQSw%2F9wEsP%2FcBLD%2FnwSwAGQEsAAABLAAAASwAAAEsABkBLD%2F%2FwSwAAAEsP9RBLAABgSwAAAEsAAABLABRQSwAAEEsAAABLD%2FnASwAEoEsAAUBLAAAASwAAAEsAAABLD%2FnASwAGEEsP%2F9BLAAFgSwABYEsAAWBLAAFgSwABgEsAAABMQAAASwAGQAAAAAAAD%2F2ABkADkAyAAAAScAZAAZABkAGQAZABkAGQAZAAAAAAAAAAAAAADZAAAAAAAOAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAMAZABkAAAAEAAAAAAAZP%2Bc%2F5z%2FnP%2Bc%2F5z%2FnP%2Bc%2F5wACQAJ%2F%2FL%2F8gBkAHkAJwBkAGQAAAAAAGT%2FogAAAAAAAAAAAAAAAADIAGQAAAABAI8AAP%2Bc%2F5wAZAAEAMgAyAAAAGQBkABkAAAAZAEs%2F7UAAAAAAAAAAAAAAAAAAABkAAABLAFBADIAMgAIAAAAAADIAT4AZgBmANkAyADIAAAAKgAqACoAKgCyAOgA6AFOAU4BTgFOAU4BTgFOAU4BTgFOAU4BTgFOAU4BpAIGAiICfgKGAqwC5ANGA24DjAPEBAgEMgRiBKIE3AVcBboGcgb0ByAHYgfKCB4IYgi%2BCTYJhAm2Cd4KKApMCpQK4gswC4oLygwIDFgNKg1eDbAODg5oDrQPKA%2BmD%2BYQEhBUEJAQqhEqEXYRthIKEjgSfBLAExoTdBPQFCoU1BU8FagVzBYEFjYWYBawFv4XUhemGAIYLhhqGJYYsBjgGP4ZKBloGZQZxBnaGe4aNhpoGrga9hteG7QcMhyUHOIdHB1EHWwdlB28HeYeLh52HsAfYh%2FSIEYgviEyIXYhuCJAIpYiuCMOIyIjOCN6I8Ij4CQCJDAkXiSWJOIlNCVgJbwmFCZ%2BJuYnUCe8J%2FgoNChwKKwpoCnMKiYqSiqEKworeiwILGgsuizsLRwtiC30LiguZi6iLtgvDi9GL34vsi%2F4MD4whDDSMRIxYDGuMegyJDJeMpoy3jMiMz4zaDO2NBg0YDSoNNI1LDWeNeg2PjZ8Ntw3GjdON5I31DgQOEI4hjjIOQo5SjmIOcw6HDpsOpo63jugO9w8GDxQPKI8%2BD0yPew%2BOj6MPtQ%2FKD9uP6o%2F%2BkBIQIBAxkECQX5CGEKoQu5DGENCQ3ZDoEPKRBBEYESuRPZFWkW2RgZGdEa0RvZHNkd2R7ZH9kgWSDJITkhqSIZIzEkSSThJXkmESapKAkouSlIAAQAAARcApwARAAAAAAACAAAAAQABAAAAQAAuAAAAAAAAABAAxgABAAAAAAATABIAAAADAAEECQAAAGoAEgADAAEECQABACgAfAADAAEECQACAA4ApAADAAEECQADAEwAsgADAAEECQAEADgA%2FgADAAEECQAFAHgBNgADAAEECQAGADYBrgADAAEECQAIABYB5AADAAEECQAJABYB%2BgADAAEECQALACQCEAADAAEECQAMACQCNAADAAEECQATACQCWAADAAEECQDIABYCfAADAAEECQDJADACkgADAAEECdkDABoCwnd3dy5nbHlwaGljb25zLmNvbQBDAG8AcAB5AHIAaQBnAGgAdAAgAKkAIAAyADAAMQA0ACAAYgB5ACAASgBhAG4AIABLAG8AdgBhAHIAaQBrAC4AIABBAGwAbAAgAHIAaQBnAGgAdABzACAAcgBlAHMAZQByAHYAZQBkAC4ARwBMAFkAUABIAEkAQwBPAE4AUwAgAEgAYQBsAGYAbABpAG4AZwBzAFIAZQBnAHUAbABhAHIAMQAuADAAMAA5ADsAVQBLAFcATgA7AEcATABZAFAASABJAEMATwBOAFMASABhAGwAZgBsAGkAbgBnAHMALQBSAGUAZwB1AGwAYQByAEcATABZAFAASABJAEMATwBOAFMAIABIAGEAbABmAGwAaQBuAGcAcwAgAFIAZQBnAHUAbABhAHIAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAOQA7AFAAUwAgADAAMAAxAC4AMAAwADkAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA3ADAAOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADUALgA1ADgAMwAyADkARwBMAFkAUABIAEkAQwBPAE4AUwBIAGEAbABmAGwAaQBuAGcAcwAtAFIAZQBnAHUAbABhAHIASgBhAG4AIABLAG8AdgBhAHIAaQBrAEoAYQBuACAASwBvAHYAYQByAGkAawB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQB3AHcAdwAuAGcAbAB5AHAAaABpAGMAbwBuAHMALgBjAG8AbQBXAGUAYgBmAG8AbgB0ACAAMQAuADAAVwBlAGQAIABPAGMAdAAgADIAOQAgADAANgA6ADMANgA6ADAANwAgADIAMAAxADQARgBvAG4AdAAgAFMAcQB1AGkAcgByAGUAbAAAAAIAAAAAAAD%2FtQAyAAAAAAAAAAAAAAAAAAAAAAAAAAABFwAAAQIBAwADAA0ADgEEAJYBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMA7wEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE%2BAT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG%2FAcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB8QHyAfMB9AH1AfYB9wH4AfkB%2BgH7AfwB%2FQH%2BAf8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAINAg4CDwIQAhECEgZnbHlwaDEGZ2x5cGgyB3VuaTAwQTAHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMkYHdW5pMjA1RgRFdXJvB3VuaTIwQkQHdW5pMjMxQgd1bmkyNUZDB3VuaTI2MDEHdW5pMjZGQQd1bmkyNzA5B3VuaTI3MEYHdW5pRTAwMQd1bmlFMDAyB3VuaUUwMDMHdW5pRTAwNQd1bmlFMDA2B3VuaUUwMDcHdW5pRTAwOAd1bmlFMDA5B3VuaUUwMTAHdW5pRTAxMQd1bmlFMDEyB3VuaUUwMTMHdW5pRTAxNAd1bmlFMDE1B3VuaUUwMTYHdW5pRTAxNwd1bmlFMDE4B3VuaUUwMTkHdW5pRTAyMAd1bmlFMDIxB3VuaUUwMjIHdW5pRTAyMwd1bmlFMDI0B3VuaUUwMjUHdW5pRTAyNgd1bmlFMDI3B3VuaUUwMjgHdW5pRTAyOQd1bmlFMDMwB3VuaUUwMzEHdW5pRTAzMgd1bmlFMDMzB3VuaUUwMzQHdW5pRTAzNQd1bmlFMDM2B3VuaUUwMzcHdW5pRTAzOAd1bmlFMDM5B3VuaUUwNDAHdW5pRTA0MQd1bmlFMDQyB3VuaUUwNDMHdW5pRTA0NAd1bmlFMDQ1B3VuaUUwNDYHdW5pRTA0Nwd1bmlFMDQ4B3VuaUUwNDkHdW5pRTA1MAd1bmlFMDUxB3VuaUUwNTIHdW5pRTA1Mwd1bmlFMDU0B3VuaUUwNTUHdW5pRTA1Ngd1bmlFMDU3B3VuaUUwNTgHdW5pRTA1OQd1bmlFMDYwB3VuaUUwNjIHdW5pRTA2Mwd1bmlFMDY0B3VuaUUwNjUHdW5pRTA2Ngd1bmlFMDY3B3VuaUUwNjgHdW5pRTA2OQd1bmlFMDcwB3VuaUUwNzEHdW5pRTA3Mgd1bmlFMDczB3VuaUUwNzQHdW5pRTA3NQd1bmlFMDc2B3VuaUUwNzcHdW5pRTA3OAd1bmlFMDc5B3VuaUUwODAHdW5pRTA4MQd1bmlFMDgyB3VuaUUwODMHdW5pRTA4NAd1bmlFMDg1B3VuaUUwODYHdW5pRTA4Nwd1bmlFMDg4B3VuaUUwODkHdW5pRTA5MAd1bmlFMDkxB3VuaUUwOTIHdW5pRTA5Mwd1bmlFMDk0B3VuaUUwOTUHdW5pRTA5Ngd1bmlFMDk3B3VuaUUxMDEHdW5pRTEwMgd1bmlFMTAzB3VuaUUxMDQHdW5pRTEwNQd1bmlFMTA2B3VuaUUxMDcHdW5pRTEwOAd1bmlFMTA5B3VuaUUxMTAHdW5pRTExMQd1bmlFMTEyB3VuaUUxMTMHdW5pRTExNAd1bmlFMTE1B3VuaUUxMTYHdW5pRTExNwd1bmlFMTE4B3VuaUUxMTkHdW5pRTEyMAd1bmlFMTIxB3VuaUUxMjIHdW5pRTEyMwd1bmlFMTI0B3VuaUUxMjUHdW5pRTEyNgd1bmlFMTI3B3VuaUUxMjgHdW5pRTEyOQd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMTMzB3VuaUUxMzQHdW5pRTEzNQd1bmlFMTM2B3VuaUUxMzcHdW5pRTEzOAd1bmlFMTM5B3VuaUUxNDAHdW5pRTE0MQd1bmlFMTQyB3VuaUUxNDMHdW5pRTE0NAd1bmlFMTQ1B3VuaUUxNDYHdW5pRTE0OAd1bmlFMTQ5B3VuaUUxNTAHdW5pRTE1MQd1bmlFMTUyB3VuaUUxNTMHdW5pRTE1NAd1bmlFMTU1B3VuaUUxNTYHdW5pRTE1Nwd1bmlFMTU4B3VuaUUxNTkHdW5pRTE2MAd1bmlFMTYxB3VuaUUxNjIHdW5pRTE2Mwd1bmlFMTY0B3VuaUUxNjUHdW5pRTE2Ngd1bmlFMTY3B3VuaUUxNjgHdW5pRTE2OQd1bmlFMTcwB3VuaUUxNzEHdW5pRTE3Mgd1bmlFMTczB3VuaUUxNzQHdW5pRTE3NQd1bmlFMTc2B3VuaUUxNzcHdW5pRTE3OAd1bmlFMTc5B3VuaUUxODAHdW5pRTE4MQd1bmlFMTgyB3VuaUUxODMHdW5pRTE4NAd1bmlFMTg1B3VuaUUxODYHdW5pRTE4Nwd1bmlFMTg4B3VuaUUxODkHdW5pRTE5MAd1bmlFMTkxB3VuaUUxOTIHdW5pRTE5Mwd1bmlFMTk0B3VuaUUxOTUHdW5pRTE5Nwd1bmlFMTk4B3VuaUUxOTkHdW5pRTIwMAd1bmlFMjAxB3VuaUUyMDIHdW5pRTIwMwd1bmlFMjA0B3VuaUUyMDUHdW5pRTIwNgd1bmlFMjA5B3VuaUUyMTAHdW5pRTIxMQd1bmlFMjEyB3VuaUUyMTMHdW5pRTIxNAd1bmlFMjE1B3VuaUUyMTYHdW5pRTIxOAd1bmlFMjE5B3VuaUUyMjEHdW5pRTIyMwd1bmlFMjI0B3VuaUUyMjUHdW5pRTIyNgd1bmlFMjI3B3VuaUUyMzAHdW5pRTIzMQd1bmlFMjMyB3VuaUUyMzMHdW5pRTIzNAd1bmlFMjM1B3VuaUUyMzYHdW5pRTIzNwd1bmlFMjM4B3VuaUUyMzkHdW5pRTI0MAd1bmlFMjQxB3VuaUUyNDIHdW5pRTI0Mwd1bmlFMjQ0B3VuaUUyNDUHdW5pRTI0Ngd1bmlFMjQ3B3VuaUUyNDgHdW5pRTI0OQd1bmlFMjUwB3VuaUUyNTEHdW5pRTI1Mgd1bmlFMjUzB3VuaUUyNTQHdW5pRTI1NQd1bmlFMjU2B3VuaUUyNTcHdW5pRTI1OAd1bmlFMjU5B3VuaUUyNjAHdW5pRjhGRgZ1MUY1MTEGdTFGNkFBAAAAAAFUUMMXAAA%3D%29%20format%28%27truetype%27%29%2Curl%28data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI%2FPgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE%2BPC9tZXRhZGF0YT4KPGRlZnM%2BCjxmb250IGlkPSJnbHlwaGljb25zX2hhbGZsaW5nc3JlZ3VsYXIiIGhvcml6LWFkdi14PSIxMjAwIiA%2BCjxmb250LWZhY2UgdW5pdHMtcGVyLWVtPSIxMjAwIiBhc2NlbnQ9Ijk2MCIgZGVzY2VudD0iLTI0MCIgLz4KPG1pc3NpbmctZ2x5cGggaG9yaXotYWR2LXg9IjUwMCIgLz4KPGdseXBoIGhvcml6LWFkdi14PSIwIiAvPgo8Z2x5cGggaG9yaXotYWR2LXg9IjQwMCIgLz4KPGdseXBoIHVuaWNvZGU9IiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSIqIiBkPSJNNjAwIDExMDBxMTUgMCAzNCAtMS41dDMwIC0zLjVsMTEgLTFxMTAgLTIgMTcuNSAtMTAuNXQ3LjUgLTE4LjV2LTIyNGwxNTggMTU4cTcgNyAxOCA4dDE5IC02bDEwNiAtMTA2cTcgLTggNiAtMTl0LTggLTE4bC0xNTggLTE1OGgyMjRxMTAgMCAxOC41IC03LjV0MTAuNSAtMTcuNXE2IC00MSA2IC03NXEwIC0xNSAtMS41IC0zNHQtMy41IC0zMGwtMSAtMTFxLTIgLTEwIC0xMC41IC0xNy41dC0xOC41IC03LjVoLTIyNGwxNTggLTE1OCBxNyAtNyA4IC0xOHQtNiAtMTlsLTEwNiAtMTA2cS04IC03IC0xOSAtNnQtMTggOGwtMTU4IDE1OHYtMjI0cTAgLTEwIC03LjUgLTE4LjV0LTE3LjUgLTEwLjVxLTQxIC02IC03NSAtNnEtMTUgMCAtMzQgMS41dC0zMCAzLjVsLTExIDFxLTEwIDIgLTE3LjUgMTAuNXQtNy41IDE4LjV2MjI0bC0xNTggLTE1OHEtNyAtNyAtMTggLTh0LTE5IDZsLTEwNiAxMDZxLTcgOCAtNiAxOXQ4IDE4bDE1OCAxNThoLTIyNHEtMTAgMCAtMTguNSA3LjUgdC0xMC41IDE3LjVxLTYgNDEgLTYgNzVxMCAxNSAxLjUgMzR0My41IDMwbDEgMTFxMiAxMCAxMC41IDE3LjV0MTguNSA3LjVoMjI0bC0xNTggMTU4cS03IDcgLTggMTh0NiAxOWwxMDYgMTA2cTggNyAxOSA2dDE4IC04bDE1OCAtMTU4djIyNHEwIDEwIDcuNSAxOC41dDE3LjUgMTAuNXE0MSA2IDc1IDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iKyIgZD0iTTQ1MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMzUwaDM1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zNTB2LTM1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYzNTBoLTM1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNSBoMzUwdjM1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4YTA7IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4YTU7IiBkPSJNODI1IDExMDBoMjUwcTEwIDAgMTIuNSAtNXQtNS41IC0xM2wtMzY0IC0zNjRxLTYgLTYgLTExIC0xOGgyNjhxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMjV2LTEwMGgyNzVxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMjV2LTE3NHEwIC0xMSAtNy41IC0xOC41dC0xOC41IC03LjVoLTE0OHEtMTEgMCAtMTguNSA3LjV0LTcuNSAxOC41djE3NCBoLTI3NXEtMTAgMCAtMTMgNnQzIDE0bDEyMCAxNjBxNiA4IDE4IDE0dDIyIDZoMTI1djEwMGgtMjc1cS0xMCAwIC0xMyA2dDMgMTRsMTIwIDE2MHE2IDggMTggMTR0MjIgNmgxMThxLTUgMTIgLTExIDE4bC0zNjQgMzY0cS04IDggLTUuNSAxM3QxMi41IDVoMjUwcTI1IDAgNDMgLTE4bDE2NCAtMTY0cTggLTggMTggLTh0MTggOGwxNjQgMTY0cTE4IDE4IDQzIDE4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDA7IiBob3Jpei1hZHYteD0iNjUwIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMTsiIGhvcml6LWFkdi14PSIxMzAwIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwMjsiIGhvcml6LWFkdi14PSI2NTAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDAzOyIgaG9yaXotYWR2LXg9IjEzMDAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDA0OyIgaG9yaXotYWR2LXg9IjQzMyIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDU7IiBob3Jpei1hZHYteD0iMzI1IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwNjsiIGhvcml6LWFkdi14PSIyMTYiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDA3OyIgaG9yaXotYWR2LXg9IjIxNiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwMDg7IiBob3Jpei1hZHYteD0iMTYyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAwOTsiIGhvcml6LWFkdi14PSIyNjAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDBhOyIgaG9yaXotYWR2LXg9IjcyIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjAyZjsiIGhvcml6LWFkdi14PSIyNjAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMDVmOyIgaG9yaXotYWR2LXg9IjMyNSIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDIwYWM7IiBkPSJNNzQ0IDExOThxMjQyIDAgMzU0IC0xODlxNjAgLTEwNCA2NiAtMjA5aC0xODFxMCA0NSAtMTcuNSA4Mi41dC00My41IDYxLjV0LTU4IDQwLjV0LTYwLjUgMjR0LTUxLjUgNy41cS0xOSAwIC00MC41IC01LjV0LTQ5LjUgLTIwLjV0LTUzIC0zOHQtNDkgLTYyLjV0LTM5IC04OS41aDM3OWwtMTAwIC0xMDBoLTMwMHEtNiAtNTAgLTYgLTEwMGg0MDZsLTEwMCAtMTAwaC0zMDBxOSAtNzQgMzMgLTEzMnQ1Mi41IC05MXQ2MS41IC01NC41dDU5IC0yOSB0NDcgLTcuNXEyMiAwIDUwLjUgNy41dDYwLjUgMjQuNXQ1OCA0MXQ0My41IDYxdDE3LjUgODBoMTc0cS0zMCAtMTcxIC0xMjggLTI3OHEtMTA3IC0xMTcgLTI3NCAtMTE3cS0yMDYgMCAtMzI0IDE1OHEtMzYgNDggLTY5IDEzM3QtNDUgMjA0aC0yMTdsMTAwIDEwMGgxMTJxMSA0NyA2IDEwMGgtMjE4bDEwMCAxMDBoMTM0cTIwIDg3IDUxIDE1My41dDYyIDEwMy41cTExNyAxNDEgMjk3IDE0MXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyMGJkOyIgZD0iTTQyOCAxMjAwaDM1MHE2NyAwIDEyMCAtMTN0ODYgLTMxdDU3IC00OS41dDM1IC01Ni41dDE3IC02NC41dDYuNSAtNjAuNXQwLjUgLTU3di0xNi41di0xNi41cTAgLTM2IC0wLjUgLTU3dC02LjUgLTYxdC0xNyAtNjV0LTM1IC01N3QtNTcgLTUwLjV0LTg2IC0zMS41dC0xMjAgLTEzaC0xNzhsLTIgLTEwMGgyODhxMTAgMCAxMyAtNnQtMyAtMTRsLTEyMCAtMTYwcS02IC04IC0xOCAtMTR0LTIyIC02aC0xMzh2LTE3NXEwIC0xMSAtNS41IC0xOCB0LTE1LjUgLTdoLTE0OXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE3NWgtMjY3cS0xMCAwIC0xMyA2dDMgMTRsMTIwIDE2MHE2IDggMTggMTR0MjIgNmgxMTd2MTAwaC0yNjdxLTEwIDAgLTEzIDZ0MyAxNGwxMjAgMTYwcTYgOCAxOCAxNHQyMiA2aDExN3Y0NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNjAwIDEwMDB2LTMwMGgyMDNxNjQgMCA4Ni41IDMzdDIyLjUgMTE5cTAgODQgLTIyLjUgMTE2dC04Ni41IDMyaC0yMDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjIxMjsiIGQ9Ik0yNTAgNzAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjMxYjsiIGQ9Ik0xMDAwIDEyMDB2LTE1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTEwMHEwIC05MSAtNDkuNSAtMTY1LjV0LTEzMC41IC0xMDkuNXE4MSAtMzUgMTMwLjUgLTEwOS41dDQ5LjUgLTE2NS41di0xNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTE1MGgtODAwdjE1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2MTUwcTAgOTEgNDkuNSAxNjUuNXQxMzAuNSAxMDkuNXEtODEgMzUgLTEzMC41IDEwOS41IHQtNDkuNSAxNjUuNXYxMDBoLTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxNTBoODAwek00MDAgMTAwMHYtMTAwcTAgLTYwIDMyLjUgLTEwOS41dDg3LjUgLTczLjVxMjggLTEyIDQ0IC0zN3QxNiAtNTV0LTE2IC01NXQtNDQgLTM3cS01NSAtMjQgLTg3LjUgLTczLjV0LTMyLjUgLTEwOS41di0xNTBoNDAwdjE1MHEwIDYwIC0zMi41IDEwOS41dC04Ny41IDczLjVxLTI4IDEyIC00NCAzN3QtMTYgNTV0MTYgNTV0NDQgMzcgcTU1IDI0IDg3LjUgNzMuNXQzMi41IDEwOS41djEwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDI1ZmM7IiBob3Jpei1hZHYteD0iNTAwIiBkPSJNMCAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDI2MDE7IiBkPSJNNTAzIDEwODlxMTEwIDAgMjAwLjUgLTU5LjV0MTM0LjUgLTE1Ni41cTQ0IDE0IDkwIDE0cTEyMCAwIDIwNSAtODYuNXQ4NSAtMjA2LjVxMCAtMTIxIC04NSAtMjA3LjV0LTIwNSAtODYuNWgtNzUwcS03OSAwIC0xMzUuNSA1N3QtNTYuNSAxMzdxMCA2OSA0Mi41IDEyMi41dDEwOC41IDY3LjVxLTIgMTIgLTIgMzdxMCAxNTMgMTA4IDI2MC41dDI2MCAxMDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyNmZhOyIgZD0iTTc3NCAxMTkzLjVxMTYgLTkuNSAyMC41IC0yN3QtNS41IC0zMy41bC0xMzYgLTE4N2w0NjcgLTc0NmgzMHEyMCAwIDM1IC0xOC41dDE1IC0zOS41di00MmgtMTIwMHY0MnEwIDIxIDE1IDM5LjV0MzUgMTguNWgzMGw0NjggNzQ2bC0xMzUgMTgzcS0xMCAxNiAtNS41IDM0dDIwLjUgMjh0MzQgNS41dDI4IC0yMC41bDExMSAtMTQ4bDExMiAxNTBxOSAxNiAyNyAyMC41dDM0IC01ek02MDAgMjAwaDM3N2wtMTgyIDExMmwtMTk1IDUzNHYtNjQ2eiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3gyNzA5OyIgZD0iTTI1IDExMDBoMTE1MHExMCAwIDEyLjUgLTV0LTUuNSAtMTNsLTU2NCAtNTY3cS04IC04IC0xOCAtOHQtMTggOGwtNTY0IDU2N3EtOCA4IC01LjUgMTN0MTIuNSA1ek0xOCA4ODJsMjY0IC0yNjRxOCAtOCA4IC0xOHQtOCAtMThsLTI2NCAtMjY0cS04IC04IC0xMyAtNS41dC01IDEyLjV2NTUwcTAgMTAgNSAxMi41dDEzIC01LjV6TTkxOCA2MThsMjY0IDI2NHE4IDggMTMgNS41dDUgLTEyLjV2LTU1MHEwIC0xMCAtNSAtMTIuNXQtMTMgNS41IGwtMjY0IDI2NHEtOCA4IC04IDE4dDggMTh6TTgxOCA0ODJsMzY0IC0zNjRxOCAtOCA1LjUgLTEzdC0xMi41IC01aC0xMTUwcS0xMCAwIC0xMi41IDV0NS41IDEzbDM2NCAzNjRxOCA4IDE4IDh0MTggLThsMTY0IC0xNjRxOCAtOCAxOCAtOHQxOCA4bDE2NCAxNjRxOCA4IDE4IDh0MTggLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4MjcwZjsiIGQ9Ik0xMDExIDEyMTBxMTkgMCAzMyAtMTNsMTUzIC0xNTNxMTMgLTE0IDEzIC0zM3QtMTMgLTMzbC05OSAtOTJsLTIxNCAyMTRsOTUgOTZxMTMgMTQgMzIgMTR6TTEwMTMgODAwbC02MTUgLTYxNGwtMjE0IDIxNGw2MTQgNjE0ek0zMTcgOTZsLTMzMyAtMTEybDExMCAzMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMTsiIGQ9Ik03MDAgNjUwdi01NTBoMjUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtODAwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgyNTB2NTUwbC01MDAgNTUwaDEyMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwMjsiIGQ9Ik0zNjggMTAxN2w2NDUgMTYzcTM5IDE1IDYzIDB0MjQgLTQ5di04MzFxMCAtNTUgLTQxLjUgLTk1LjV0LTExMS41IC02My41cS03OSAtMjUgLTE0NyAtNC41dC04NiA3NXQyNS41IDExMS41dDEyMi41IDgycTcyIDI0IDEzOCA4djUyMWwtNjAwIC0xNTV2LTYwNnEwIC00MiAtNDQgLTkwdC0xMDkgLTY5cS03OSAtMjYgLTE0NyAtNS41dC04NiA3NS41dDI1LjUgMTExLjV0MTIyLjUgODIuNXE3MiAyNCAxMzggN3Y2MzlxMCAzOCAxNC41IDU5IHQ1My41IDM0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDM7IiBkPSJNNTAwIDExOTFxMTAwIDAgMTkxIC0zOXQxNTYuNSAtMTA0LjV0MTA0LjUgLTE1Ni41dDM5IC0xOTFsLTEgLTJsMSAtNXEwIC0xNDEgLTc4IC0yNjJsMjc1IC0yNzRxMjMgLTI2IDIyLjUgLTQ0LjV0LTIyLjUgLTQyLjVsLTU5IC01OHEtMjYgLTIwIC00Ni41IC0yMHQtMzkuNSAyMGwtMjc1IDI3NHEtMTE5IC03NyAtMjYxIC03N2wtNSAxbC0yIC0xcS0xMDAgMCAtMTkxIDM5dC0xNTYuNSAxMDQuNXQtMTA0LjUgMTU2LjV0LTM5IDE5MSB0MzkgMTkxdDEwNC41IDE1Ni41dDE1Ni41IDEwNC41dDE5MSAzOXpNNTAwIDEwMjJxLTg4IDAgLTE2MiAtNDN0LTExNyAtMTE3dC00MyAtMTYydDQzIC0xNjJ0MTE3IC0xMTd0MTYyIC00M3QxNjIgNDN0MTE3IDExN3Q0MyAxNjJ0LTQzIDE2MnQtMTE3IDExN3QtMTYyIDQzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDU7IiBkPSJNNjQ5IDk0OXE0OCA2OCAxMDkuNSAxMDR0MTIxLjUgMzguNXQxMTguNSAtMjB0MTAyLjUgLTY0dDcxIC0xMDAuNXQyNyAtMTIzcTAgLTU3IC0zMy41IC0xMTcuNXQtOTQgLTEyNC41dC0xMjYuNSAtMTI3LjV0LTE1MCAtMTUyLjV0LTE0NiAtMTc0cS02MiA4NSAtMTQ1LjUgMTc0dC0xNTAgMTUyLjV0LTEyNi41IDEyNy41dC05My41IDEyNC41dC0zMy41IDExNy41cTAgNjQgMjggMTIzdDczIDEwMC41dDEwNCA2NHQxMTkgMjAgdDEyMC41IC0zOC41dDEwNC41IC0xMDR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwNjsiIGQ9Ik00MDcgODAwbDEzMSAzNTNxNyAxOSAxNy41IDE5dDE3LjUgLTE5bDEyOSAtMzUzaDQyMXEyMSAwIDI0IC04LjV0LTE0IC0yMC41bC0zNDIgLTI0OWwxMzAgLTQwMXE3IC0yMCAtMC41IC0yNS41dC0yNC41IDYuNWwtMzQzIDI0NmwtMzQyIC0yNDdxLTE3IC0xMiAtMjQuNSAtNi41dC0wLjUgMjUuNWwxMzAgNDAwbC0zNDcgMjUxcS0xNyAxMiAtMTQgMjAuNXQyMyA4LjVoNDI5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDc7IiBkPSJNNDA3IDgwMGwxMzEgMzUzcTcgMTkgMTcuNSAxOXQxNy41IC0xOWwxMjkgLTM1M2g0MjFxMjEgMCAyNCAtOC41dC0xNCAtMjAuNWwtMzQyIC0yNDlsMTMwIC00MDFxNyAtMjAgLTAuNSAtMjUuNXQtMjQuNSA2LjVsLTM0MyAyNDZsLTM0MiAtMjQ3cS0xNyAtMTIgLTI0LjUgLTYuNXQtMC41IDI1LjVsMTMwIDQwMGwtMzQ3IDI1MXEtMTcgMTIgLTE0IDIwLjV0MjMgOC41aDQyOXpNNDc3IDcwMGgtMjQwbDE5NyAtMTQybC03NCAtMjI2IGwxOTMgMTM5bDE5NSAtMTQwbC03NCAyMjlsMTkyIDE0MGgtMjM0bC03OCAyMTF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAwODsiIGQ9Ik02MDAgMTIwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTI1MHEwIC00NiAtMzEgLTk4dC02OSAtNTJ2LTc1cTAgLTEwIDYgLTIxLjV0MTUgLTE3LjVsMzU4IC0yMzBxOSAtNSAxNSAtMTYuNXQ2IC0yMS41di05M3EwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTExNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5M3EwIDEwIDYgMjEuNXQxNSAxNi41bDM1OCAyMzBxOSA2IDE1IDE3LjV0NiAyMS41djc1cS0zOCAwIC02OSA1MiB0LTMxIDk4djI1MHEwIDEyNCA4OCAyMTJ0MjEyIDg4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMDk7IiBkPSJNMjUgMTEwMGgxMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTA1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTExNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxMDUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEwMCAxMDAwdi0xMDBoMTAwdjEwMGgtMTAwek04NzUgMTAwMGgtNTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMzUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoNTUwIHExMCAwIDE3LjUgNy41dDcuNSAxNy41djM1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6TTEwMDAgMTAwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwIDgwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwMCA4MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMDAgNjAwdi0xMDBoMTAwdjEwMGgtMTAwek04NzUgNTAwaC01NTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di0zNTBxMCAtMTAgNy41IC0xNy41IHQxNy41IC03LjVoNTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MzUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXpNMTAwIDQwMHYtMTAwaDEwMHYxMDBoLTEwMHpNMTAwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCAyMDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTA7IiBkPSJNNTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek02NTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCA1MDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMTsiIGQ9Ik01MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTEwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNODUwIDcwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAzMDBoMjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTg1MCAzMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41IHQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMjsiIGQ9Ik01MCAxMTAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAxMTAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC03MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA3MDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNDUwIDcwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTIwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQ1MCAzMDBoNzAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC03MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxMzsiIGQ9Ik00NjUgNDc3bDU3MSA1NzFxOCA4IDE4IDh0MTcgLThsMTc3IC0xNzdxOCAtNyA4IC0xN3QtOCAtMThsLTc4MyAtNzg0cS03IC04IC0xNy41IC04dC0xNy41IDhsLTM4NCAzODRxLTggOCAtOCAxOHQ4IDE3bDE3NyAxNzdxNyA4IDE3IDh0MTggLThsMTcxIC0xNzFxNyAtNyAxOCAtN3QxOCA3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTQ7IiBkPSJNOTA0IDEwODNsMTc4IC0xNzlxOCAtOCA4IC0xOC41dC04IC0xNy41bC0yNjcgLTI2OGwyNjcgLTI2OHE4IC03IDggLTE3LjV0LTggLTE4LjVsLTE3OCAtMTc4cS04IC04IC0xOC41IC04dC0xNy41IDhsLTI2OCAyNjdsLTI2OCAtMjY3cS03IC04IC0xNy41IC04dC0xOC41IDhsLTE3OCAxNzhxLTggOCAtOCAxOC41dDggMTcuNWwyNjcgMjY4bC0yNjcgMjY4cS04IDcgLTggMTcuNXQ4IDE4LjVsMTc4IDE3OHE4IDggMTguNSA4dDE3LjUgLTggbDI2OCAtMjY3bDI2OCAyNjhxNyA3IDE3LjUgN3QxOC41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTU7IiBkPSJNNTA3IDExNzdxOTggMCAxODcuNSAtMzguNXQxNTQuNSAtMTAzLjV0MTAzLjUgLTE1NC41dDM4LjUgLTE4Ny41cTAgLTE0MSAtNzggLTI2MmwzMDAgLTI5OXE4IC04IDggLTE4LjV0LTggLTE4LjVsLTEwOSAtMTA4cS03IC04IC0xNy41IC04dC0xOC41IDhsLTMwMCAyOTlxLTExOSAtNzcgLTI2MSAtNzdxLTk4IDAgLTE4OCAzOC41dC0xNTQuNSAxMDN0LTEwMyAxNTQuNXQtMzguNSAxODh0MzguNSAxODcuNXQxMDMgMTU0LjUgdDE1NC41IDEwMy41dDE4OCAzOC41ek01MDYuNSAxMDIzcS04OS41IDAgLTE2NS41IC00NHQtMTIwIC0xMjAuNXQtNDQgLTE2NnQ0NCAtMTY1LjV0MTIwIC0xMjB0MTY1LjUgLTQ0dDE2NiA0NHQxMjAuNSAxMjB0NDQgMTY1LjV0LTQ0IDE2NnQtMTIwLjUgMTIwLjV0LTE2NiA0NHpNNDI1IDkwMGgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di03NWg3NXExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41IHQtMTcuNSAtNy41aC03NXYtNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY3NWgtNzVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWg3NXY3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTY7IiBkPSJNNTA3IDExNzdxOTggMCAxODcuNSAtMzguNXQxNTQuNSAtMTAzLjV0MTAzLjUgLTE1NC41dDM4LjUgLTE4Ny41cTAgLTE0MSAtNzggLTI2MmwzMDAgLTI5OXE4IC04IDggLTE4LjV0LTggLTE4LjVsLTEwOSAtMTA4cS03IC04IC0xNy41IC04dC0xOC41IDhsLTMwMCAyOTlxLTExOSAtNzcgLTI2MSAtNzdxLTk4IDAgLTE4OCAzOC41dC0xNTQuNSAxMDN0LTEwMyAxNTQuNXQtMzguNSAxODh0MzguNSAxODcuNXQxMDMgMTU0LjUgdDE1NC41IDEwMy41dDE4OCAzOC41ek01MDYuNSAxMDIzcS04OS41IDAgLTE2NS41IC00NHQtMTIwIC0xMjAuNXQtNDQgLTE2NnQ0NCAtMTY1LjV0MTIwIC0xMjB0MTY1LjUgLTQ0dDE2NiA0NHQxMjAuNSAxMjB0NDQgMTY1LjV0LTQ0IDE2NnQtMTIwLjUgMTIwLjV0LTE2NiA0NHpNMzI1IDgwMGgzNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0zNTBxLTEwIDAgLTE3LjUgNy41IHQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAxNzsiIGQ9Ik01NTAgMTIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04MDAgOTc1djE2NnExNjcgLTYyIDI3MiAtMjA5LjV0MTA1IC0zMzEuNXEwIC0xMTcgLTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNSB0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHEwIDE4NCAxMDUgMzMxLjV0MjcyIDIwOS41di0xNjZxLTEwMyAtNTUgLTE2NSAtMTU1dC02MiAtMjIwcTAgLTExNiA1NyAtMjE0LjV0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXEwIDEyMCAtNjIgMjIwdC0xNjUgMTU1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMTg7IiBkPSJNMTAyNSAxMjAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTExNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxMTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTcyNSA4MDBoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NzUwIHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek00MjUgNTAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTQ1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djQ1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek0xMjUgMzAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTI1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41IHYyNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDE5OyIgZD0iTTYwMCAxMTc0cTMzIDAgNzQgLTVsMzggLTE1Mmw1IC0xcTQ5IC0xNCA5NCAtMzlsNSAtMmwxMzQgODBxNjEgLTQ4IDEwNCAtMTA1bC04MCAtMTM0bDMgLTVxMjUgLTQ0IDM5IC05M2wxIC02bDE1MiAtMzhxNSAtNDMgNSAtNzNxMCAtMzQgLTUgLTc0bC0xNTIgLTM4bC0xIC02cS0xNSAtNDkgLTM5IC05M2wtMyAtNWw4MCAtMTM0cS00OCAtNjEgLTEwNCAtMTA1bC0xMzQgODFsLTUgLTNxLTQ0IC0yNSAtOTQgLTM5bC01IC0ybC0zOCAtMTUxIHEtNDMgLTUgLTc0IC01cS0zMyAwIC03NCA1bC0zOCAxNTFsLTUgMnEtNDkgMTQgLTk0IDM5bC01IDNsLTEzNCAtODFxLTYwIDQ4IC0xMDQgMTA1bDgwIDEzNGwtMyA1cS0yNSA0NSAtMzggOTNsLTIgNmwtMTUxIDM4cS02IDQyIC02IDc0cTAgMzMgNiA3M2wxNTEgMzhsMiA2cTEzIDQ4IDM4IDkzbDMgNWwtODAgMTM0cTQ3IDYxIDEwNSAxMDVsMTMzIC04MGw1IDJxNDUgMjUgOTQgMzlsNSAxbDM4IDE1MnE0MyA1IDc0IDV6TTYwMCA4MTUgcS04OSAwIC0xNTIgLTYzdC02MyAtMTUxLjV0NjMgLTE1MS41dDE1MiAtNjN0MTUyIDYzdDYzIDE1MS41dC02MyAxNTEuNXQtMTUyIDYzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjA7IiBkPSJNNTAwIDEzMDBoMzAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di0xMDBoMjc1cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzVoLTExMDB2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNzV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNNTAwIDEyMDB2LTEwMGgzMDB2MTAwaC0zMDB6TTExMDAgOTAwdi04MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTcwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjUgdjgwMGg5MDB6TTMwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTUwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTcwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6TTkwMCA4MDB2LTcwMGgxMDB2NzAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyMTsiIGQ9Ik0xOCA2MThsNjIwIDYwOHE4IDcgMTguNSA3dDE3LjUgLTdsNjA4IC02MDhxOCAtOCA1LjUgLTEzdC0xMi41IC01aC0xNzV2LTU3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM3NWgtMzAwdi0zNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1NzVoLTE3NXEtMTAgMCAtMTIuNSA1dDUuNSAxM3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDIyOyIgZD0iTTYwMCAxMjAwdi00MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDMwMHYtNjUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djExMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ1MHpNMTAwMCA4MDBoLTI1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MjUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMjM7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTYwMCAxMDI3cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjUgdDE1NS41IC0xNTUuNXQyMTQuNSAtNTd0MjE0LjUgNTd0MTU1LjUgMTU1LjV0NTcgMjE0LjV0LTU3IDIxNC41dC0xNTUuNSAxNTUuNXQtMjE0LjUgNTd6TTUyNSA5MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0yNzVoMTc1cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI0OyIgZD0iTTEzMDAgMGgtNTM4bC00MSA0MDBoLTI0MmwtNDEgLTQwMGgtNTM4bDQzMSAxMjAwaDIwOWwtMjEgLTMwMGgxNjJsLTIwIDMwMGgyMDh6TTUxNSA4MDBsLTI3IC0zMDBoMjI0bC0yNyAzMDBoLTE3MHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI1OyIgZD0iTTU1MCAxMjAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDUwaDE5MXEyMCAwIDI1LjUgLTExLjV0LTcuNSAtMjcuNWwtMzI3IC00MDBxLTEzIC0xNiAtMzIgLTE2dC0zMiAxNmwtMzI3IDQwMHEtMTMgMTYgLTcuNSAyNy41dDI1LjUgMTEuNWgxOTF2NDUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTEyNSA0MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0zNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41IGgtMTA1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTc1aDkwMHYxNzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI2OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek01MjUgOTAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTI3NWgxMzdxMjEgMCAyNiAtMTEuNXQtOCAtMjcuNWwtMjIzIC0yNzVxLTEzIC0xNiAtMzIgLTE2dC0zMiAxNmwtMjIzIDI3NXEtMTMgMTYgLTggMjcuNXQyNiAxMS41aDEzN3YyNzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAyNzsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNjAwIDEwMjdxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41dDU3IC0yMTQuNSB0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXQtNTcgMjE0LjV0LTE1NS41IDE1NS41dC0yMTQuNSA1N3pNNjMyIDkxNGwyMjMgLTI3NXExMyAtMTYgOCAtMjcuNXQtMjYgLTExLjVoLTEzN3YtMjc1cTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2Mjc1aC0xMzdxLTIxIDAgLTI2IDExLjV0OCAyNy41bDIyMyAyNzVxMTMgMTYgMzIgMTYgdDMyIC0xNnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI4OyIgZD0iTTIyNSAxMjAwaDc1MHExMCAwIDE5LjUgLTd0MTIuNSAtMTdsMTg2IC02NTJxNyAtMjQgNyAtNDl2LTQyNXEwIC0xMiAtNCAtMjd0LTkgLTE3cS0xMiAtNiAtMzcgLTZoLTExMDBxLTEyIDAgLTI3IDR0LTE3IDhxLTYgMTMgLTYgMzhsMSA0MjVxMCAyNSA3IDQ5bDE4NSA2NTJxMyAxMCAxMi41IDE3dDE5LjUgN3pNODc4IDEwMDBoLTU1NnEtMTAgMCAtMTkgLTd0LTExIC0xOGwtODcgLTQ1MHEtMiAtMTEgNCAtMTh0MTYgLTdoMTUwIHExMCAwIDE5LjUgLTd0MTEuNSAtMTdsMzggLTE1MnEyIC0xMCAxMS41IC0xN3QxOS41IC03aDI1MHExMCAwIDE5LjUgN3QxMS41IDE3bDM4IDE1MnEyIDEwIDExLjUgMTd0MTkuNSA3aDE1MHExMCAwIDE2IDd0NCAxOGwtODcgNDUwcS0yIDExIC0xMSAxOHQtMTkgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDI5OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek01NDAgODIwbDI1MyAtMTkwcTE3IC0xMiAxNyAtMzB0LTE3IC0zMGwtMjUzIC0xOTBxLTE2IC0xMiAtMjggLTYuNXQtMTIgMjYuNXY0MDBxMCAyMSAxMiAyNi41dDI4IC02LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzMDsiIGQ9Ik05NDcgMTA2MGwxMzUgMTM1cTcgNyAxMi41IDV0NS41IC0xM3YtMzYycTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMzYycS0xMSAwIC0xMyA1LjV0NSAxMi41bDEzMyAxMzNxLTEwOSA3NiAtMjM4IDc2cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjV0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNWgxNTBxMCAtMTE3IC00NS41IC0yMjQgdC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXExOTIgMCAzNDcgLTExN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDMxOyIgZD0iTTk0NyAxMDYwbDEzNSAxMzVxNyA3IDEyLjUgNXQ1LjUgLTEzdi0zNjFxMCAtMTEgLTcuNSAtMTguNXQtMTguNSAtNy41aC0zNjFxLTExIDAgLTEzIDUuNXQ1IDEyLjVsMTM0IDEzNHEtMTEwIDc1IC0yMzkgNzVxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41aC0xNTBxMCAxMTcgNDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXExOTIgMCAzNDcgLTExN3pNMTAyNyA2MDBoMTUwIHEwIC0xMTcgLTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41cS0xOTIgMCAtMzQ4IDExOGwtMTM0IC0xMzRxLTcgLTggLTEyLjUgLTUuNXQtNS41IDEyLjV2MzYwcTAgMTEgNy41IDE4LjV0MTguNSA3LjVoMzYwcTEwIDAgMTIuNSAtNS41dC01LjUgLTEyLjVsLTEzMyAtMTMzcTExMCAtNzYgMjQwIC03NnExMTYgMCAyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDMyOyIgZD0iTTEyNSAxMjAwaDEwNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTA1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djExNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMTA3NSAxMDAwaC04NTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di04NTBxMCAtMTAgNy41IC0xNy41dDE3LjUgLTcuNWg4NTBxMTAgMCAxNy41IDcuNXQ3LjUgMTcuNXY4NTAgcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXpNMzI1IDkwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01MjUgOTAwaDQ1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNDUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTAgcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTMyNSA3MDBoNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNTI1IDcwMGg0NTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTQ1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwIHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek0zMjUgNTAwaDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTUyNSA1MDBoNDUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC00NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMzI1IDMwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01MjUgMzAwaDQ1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNDUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NTAgcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzMzsiIGQ9Ik05MDAgODAwdjIwMHEwIDgzIC01OC41IDE0MS41dC0xNDEuNSA1OC41aC0zMDBxLTgyIDAgLTE0MSAtNTl0LTU5IC0xNDF2LTIwMGgtMTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di02MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDkwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NjAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC0xMDB6TTQwMCA4MDB2MTUwcTAgMjEgMTUgMzUuNXQzNSAxNC41aDIwMCBxMjAgMCAzNSAtMTQuNXQxNSAtMzUuNXYtMTUwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNDsiIGQ9Ik0xMjUgMTEwMGg1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTEwNzVoLTEwMHYxMDc1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEwNzUgMTA1MnE0IDAgOSAtMnExNiAtNiAxNiAtMjN2LTQyMXEwIC02IC0zIC0xMnEtMzMgLTU5IC02Ni41IC05OXQtNjUuNSAtNTh0LTU2LjUgLTI0LjV0LTUyLjUgLTYuNXEtMjYgMCAtNTcuNSA2LjV0LTUyLjUgMTMuNXQtNjAgMjFxLTQxIDE1IC02MyAyMi41dC01Ny41IDE1dC02NS41IDcuNSBxLTg1IDAgLTE2MCAtNTdxLTcgLTUgLTE1IC01cS02IDAgLTExIDNxLTE0IDcgLTE0IDIydjQzOHEyMiA1NSA4MiA5OC41dDExOSA0Ni41cTIzIDIgNDMgMC41dDQzIC03dDMyLjUgLTguNXQzOCAtMTN0MzIuNSAtMTFxNDEgLTE0IDYzLjUgLTIxdDU3IC0xNHQ2My41IC03cTEwMyAwIDE4MyA4N3E3IDggMTggOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDM1OyIgZD0iTTYwMCAxMTc1cTExNiAwIDIyNyAtNDkuNXQxOTIuNSAtMTMxdDEzMSAtMTkyLjV0NDkuNSAtMjI3di0zMDBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djMwMHEwIDEyNyAtNzAuNSAyMzEuNXQtMTg0LjUgMTYxLjV0LTI0NSA1N3QtMjQ1IC01N3QtMTg0LjUgLTE2MS41dC03MC41IC0yMzEuNXYtMzAwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtNTAgcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MzAwcTAgMTE2IDQ5LjUgMjI3dDEzMSAxOTIuNXQxOTIuNSAxMzF0MjI3IDQ5LjV6TTIyMCA1MDBoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR2NDYwcTAgOCA2IDE0dDE0IDZ6TTgyMCA1MDBoMTYwcTggMCAxNCAtNnQ2IC0xNHYtNDYwcTAgLTggLTYgLTE0dC0xNCAtNmgtMTYwcS04IDAgLTE0IDZ0LTYgMTR2NDYwIHEwIDggNiAxNHQxNCA2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzY7IiBkPSJNMzIxIDgxNGwyNTggMTcycTkgNiAxNSAyLjV0NiAtMTMuNXYtNzUwcTAgLTEwIC02IC0xMy41dC0xNSAyLjVsLTI1OCAxNzJxLTIxIDE0IC00NiAxNGgtMjUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MzUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMjUwcTI1IDAgNDYgMTR6TTkwMCA2NjhsMTIwIDEyMHE3IDcgMTcgN3QxNyAtN2wzNCAtMzRxNyAtNyA3IC0xN3QtNyAtMTdsLTEyMCAtMTIwbDEyMCAtMTIwcTcgLTcgNyAtMTcgdC03IC0xN2wtMzQgLTM0cS03IC03IC0xNyAtN3QtMTcgN2wtMTIwIDExOWwtMTIwIC0xMTlxLTcgLTcgLTE3IC03dC0xNyA3bC0zNCAzNHEtNyA3IC03IDE3dDcgMTdsMTE5IDEyMGwtMTE5IDEyMHEtNyA3IC03IDE3dDcgMTdsMzQgMzRxNyA4IDE3IDh0MTcgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTAzNzsiIGQ9Ik0zMjEgODE0bDI1OCAxNzJxOSA2IDE1IDIuNXQ2IC0xMy41di03NTBxMCAtMTAgLTYgLTEzLjV0LTE1IDIuNWwtMjU4IDE3MnEtMjEgMTQgLTQ2IDE0aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNTBxMjUgMCA0NiAxNHpNNzY2IDkwMGg0cTEwIC0xIDE2IC0xMHE5NiAtMTI5IDk2IC0yOTBxMCAtMTU0IC05MCAtMjgxcS02IC05IC0xNyAtMTBsLTMgLTFxLTkgMCAtMTYgNiBsLTI5IDIzcS03IDcgLTguNSAxNi41dDQuNSAxNy41cTcyIDEwMyA3MiAyMjlxMCAxMzIgLTc4IDIzOHEtNiA4IC00LjUgMTh0OS41IDE3bDI5IDIycTcgNSAxNSA1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwMzg7IiBkPSJNOTY3IDEwMDRoM3ExMSAtMSAxNyAtMTBxMTM1IC0xNzkgMTM1IC0zOTZxMCAtMTA1IC0zNCAtMjA2LjV0LTk4IC0xODUuNXEtNyAtOSAtMTcgLTEwaC0zcS05IDAgLTE2IDZsLTQyIDM0cS04IDYgLTkgMTZ0NSAxOHExMTEgMTUwIDExMSAzMjhxMCA5MCAtMjkuNSAxNzZ0LTg0LjUgMTU3cS02IDkgLTUgMTl0MTAgMTZsNDIgMzNxNyA1IDE1IDV6TTMyMSA4MTRsMjU4IDE3MnE5IDYgMTUgMi41dDYgLTEzLjV2LTc1MHEwIC0xMCAtNiAtMTMuNSB0LTE1IDIuNWwtMjU4IDE3MnEtMjEgMTQgLTQ2IDE0aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgyNTBxMjUgMCA0NiAxNHpNNzY2IDkwMGg0cTEwIC0xIDE2IC0xMHE5NiAtMTI5IDk2IC0yOTBxMCAtMTU0IC05MCAtMjgxcS02IC05IC0xNyAtMTBsLTMgLTFxLTkgMCAtMTYgNmwtMjkgMjNxLTcgNyAtOC41IDE2LjV0NC41IDE3LjVxNzIgMTAzIDcyIDIyOXEwIDEzMiAtNzggMjM4IHEtNiA4IC00LjUgMTguNXQ5LjUgMTYuNWwyOSAyMnE3IDUgMTUgNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDM5OyIgZD0iTTUwMCA5MDBoMTAwdi0xMDBoLTEwMHYtMTAwaC00MDB2LTEwMGgtMTAwdjYwMGg1MDB2LTMwMHpNMTIwMCA3MDBoLTIwMHYtMTAwaDIwMHYtMjAwaC0zMDB2MzAwaC0yMDB2MzAwaC0xMDB2MjAwaDYwMHYtNTAwek0xMDAgMTEwMHYtMzAwaDMwMHYzMDBoLTMwMHpNODAwIDExMDB2LTMwMGgzMDB2MzAwaC0zMDB6TTMwMCA5MDBoLTEwMHYxMDBoMTAwdi0xMDB6TTEwMDAgOTAwaC0xMDB2MTAwaDEwMHYtMTAwek0zMDAgNTAwaDIwMHYtNTAwIGgtNTAwdjUwMGgyMDB2MTAwaDEwMHYtMTAwek04MDAgMzAwaDIwMHYtMTAwaC0xMDB2LTEwMGgtMjAwdjEwMGgtMTAwdjEwMGgxMDB2MjAwaC0yMDB2MTAwaDMwMHYtMzAwek0xMDAgNDAwdi0zMDBoMzAwdjMwMGgtMzAwek0zMDAgMjAwaC0xMDB2MTAwaDEwMHYtMTAwek0xMjAwIDIwMGgtMTAwdjEwMGgxMDB2LTEwMHpNNzAwIDBoLTEwMHYxMDBoMTAwdi0xMDB6TTEyMDAgMGgtMzAwdjEwMGgzMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQwOyIgZD0iTTEwMCAyMDBoLTEwMHYxMDAwaDEwMHYtMTAwMHpNMzAwIDIwMGgtMTAwdjEwMDBoMTAwdi0xMDAwek03MDAgMjAwaC0yMDB2MTAwMGgyMDB2LTEwMDB6TTkwMCAyMDBoLTEwMHYxMDAwaDEwMHYtMTAwMHpNMTIwMCAyMDBoLTIwMHYxMDAwaDIwMHYtMTAwMHpNNDAwIDBoLTMwMHYxMDBoMzAwdi0xMDB6TTYwMCAwaC0xMDB2OTFoMTAwdi05MXpNODAwIDBoLTEwMHY5MWgxMDB2LTkxek0xMTAwIDBoLTIwMHY5MWgyMDB2LTkxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNDE7IiBkPSJNNTAwIDEyMDBsNjgyIC02ODJxOCAtOCA4IC0xOHQtOCAtMThsLTQ2NCAtNDY0cS04IC04IC0xOCAtOHQtMTggOGwtNjgyIDY4MmwxIDQ3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDQ3NHpNMzE5LjUgMTAyNC41cS0yOS41IDI5LjUgLTcxIDI5LjV0LTcxIC0yOS41dC0yOS41IC03MS41dDI5LjUgLTcxLjV0NzEgLTI5LjV0NzEgMjkuNXQyOS41IDcxLjV0LTI5LjUgNzEuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQyOyIgZD0iTTUwMCAxMjAwbDY4MiAtNjgycTggLTggOCAtMTh0LTggLTE4bC00NjQgLTQ2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTY4MiA2ODJsMSA0NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWg0NzR6TTgwMCAxMjAwbDY4MiAtNjgycTggLTggOCAtMTh0LTggLTE4bC00NjQgLTQ2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTU2IDU2bDQyNCA0MjZsLTcwMCA3MDBoMTUwek0zMTkuNSAxMDI0LjVxLTI5LjUgMjkuNSAtNzEgMjkuNXQtNzEgLTI5LjUgdC0yOS41IC03MS41dDI5LjUgLTcxLjV0NzEgLTI5LjV0NzEgMjkuNXQyOS41IDcxLjV0LTI5LjUgNzEuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQzOyIgZD0iTTMwMCAxMjAwaDgyNXE3NSAwIDc1IC03NXYtOTAwcTAgLTI1IC0xOCAtNDNsLTY0IC02NHEtOCAtOCAtMTMgLTUuNXQtNSAxMi41djk1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjVoLTcwMHEtMjUgMCAtNDMgLTE4bC02NCAtNjRxLTggLTggLTUuNSAtMTN0MTIuNSAtNWg3MDBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di05NTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC04NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5NzUgcTAgMjUgMTggNDNsMTM5IDEzOXExOCAxOCA0MyAxOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ0OyIgZD0iTTI1MCAxMjAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTE1MGwtNDUwIDQ0NGwtNDUwIC00NDV2MTE1MXEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NTsiIGQ9Ik04MjIgMTIwMGgtNDQ0cS0xMSAwIC0xOSAtNy41dC05IC0xNy41bC03OCAtMzAxcS03IC0yNCA3IC00NWw1NyAtMTA4cTYgLTkgMTcuNSAtMTV0MjEuNSAtNmg0NTBxMTAgMCAyMS41IDZ0MTcuNSAxNWw2MiAxMDhxMTQgMjEgNyA0NWwtODMgMzAxcS0xIDEwIC05IDE3LjV0LTE5IDcuNXpNMTE3NSA4MDBoLTE1MHEtMTAgMCAtMjEgLTYuNXQtMTUgLTE1LjVsLTc4IC0xNTZxLTQgLTkgLTE1IC0xNS41dC0yMSAtNi41aC01NTAgcS0xMCAwIC0yMSA2LjV0LTE1IDE1LjVsLTc4IDE1NnEtNCA5IC0xNSAxNS41dC0yMSA2LjVoLTE1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTY1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDc1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41IHQ3LjUgMTcuNXY2NTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41ek04NTAgMjAwaC01MDBxLTEwIDAgLTE5LjUgLTd0LTExLjUgLTE3bC0zOCAtMTUycS0yIC0xMCAzLjUgLTE3dDE1LjUgLTdoNjAwcTEwIDAgMTUuNSA3dDMuNSAxN2wtMzggMTUycS0yIDEwIC0xMS41IDE3dC0xOS41IDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NjsiIGQ9Ik01MDAgMTEwMGgyMDBxNTYgMCAxMDIuNSAtMjAuNXQ3Mi41IC01MHQ0NCAtNTl0MjUgLTUwLjVsNiAtMjBoMTUwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41di02MDBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTEwMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djYwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMTUwcTIgOCA2LjUgMjEuNXQyNCA0OHQ0NSA2MXQ3MiA0OHQxMDIuNSAyMS41ek05MDAgODAwdi0xMDAgaDEwMHYxMDBoLTEwMHpNNjAwIDczMHEtOTUgMCAtMTYyLjUgLTY3LjV0LTY3LjUgLTE2Mi41dDY3LjUgLTE2Mi41dDE2Mi41IC02Ny41dDE2Mi41IDY3LjV0NjcuNSAxNjIuNXQtNjcuNSAxNjIuNXQtMTYyLjUgNjcuNXpNNjAwIDYwM3E0MyAwIDczIC0zMHQzMCAtNzN0LTMwIC03M3QtNzMgLTMwdC03MyAzMHQtMzAgNzN0MzAgNzN0NzMgMzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA0NzsiIGQ9Ik02ODEgMTE5OWwzODUgLTk5OHEyMCAtNTAgNjAgLTkycTE4IC0xOSAzNi41IC0yOS41dDI3LjUgLTExLjVsMTAgLTJ2LTY2aC00MTd2NjZxNTMgMCA3NSA0My41dDUgODguNWwtODIgMjIyaC0zOTFxLTU4IC0xNDUgLTkyIC0yMzRxLTExIC0zNCAtNi41IC01N3QyNS41IC0zN3Q0NiAtMjB0NTUgLTZ2LTY2aC0zNjV2NjZxNTYgMjQgODQgNTJxMTIgMTIgMjUgMzAuNXQyMCAzMS41bDcgMTNsMzk5IDEwMDZoOTN6TTQxNiA1MjFoMzQwIGwtMTYyIDQ1N3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ4OyIgZD0iTTc1MyA2NDFxNSAtMSAxNC41IC00LjV0MzYgLTE1LjV0NTAuNSAtMjYuNXQ1My41IC00MHQ1MC41IC01NC41dDM1LjUgLTcwdDE0LjUgLTg3cTAgLTY3IC0yNy41IC0xMjUuNXQtNzEuNSAtOTcuNXQtOTguNSAtNjYuNXQtMTA4LjUgLTQwLjV0LTEwMiAtMTNoLTUwMHY4OXE0MSA3IDcwLjUgMzIuNXQyOS41IDY1LjV2ODI3cTAgMjQgLTAuNSAzNHQtMy41IDI0dC04LjUgMTkuNXQtMTcgMTMuNXQtMjggMTIuNXQtNDIuNSAxMS41djcxIGw0NzEgLTFxNTcgMCAxMTUuNSAtMjAuNXQxMDggLTU3dDgwLjUgLTk0dDMxIC0xMjQuNXEwIC01MSAtMTUuNSAtOTYuNXQtMzggLTc0LjV0LTQ1IC01MC41dC0zOC41IC0zMC41ek00MDAgNzAwaDEzOXE3OCAwIDEzMC41IDQ4LjV0NTIuNSAxMjIuNXEwIDQxIC04LjUgNzAuNXQtMjkuNSA1NS41dC02Mi41IDM5LjV0LTEwMy41IDEzLjVoLTExOHYtMzUwek00MDAgMjAwaDIxNnE4MCAwIDEyMSA1MC41dDQxIDEzMC41cTAgOTAgLTYyLjUgMTU0LjUgdC0xNTYuNSA2NC41aC0xNTl2LTQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDQ5OyIgZD0iTTg3NyAxMjAwbDIgLTU3cS04MyAtMTkgLTExNiAtNDUuNXQtNDAgLTY2LjVsLTEzMiAtODM5cS05IC00OSAxMyAtNjl0OTYgLTI2di05N2gtNTAwdjk3cTE4NiAxNiAyMDAgOThsMTczIDgzMnEzIDE3IDMgMzB0LTEuNSAyMi41dC05IDE3LjV0LTEzLjUgMTIuNXQtMjEuNSAxMHQtMjYgOC41dC0zMy41IDEwcS0xMyAzIC0xOSA1djU3aDQyNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDUwOyIgZD0iTTEzMDAgOTAwaC01MHEwIDIxIC00IDM3dC05LjUgMjYuNXQtMTggMTcuNXQtMjIgMTF0LTI4LjUgNS41dC0zMSAydC0zNyAwLjVoLTIwMHYtODUwcTAgLTIyIDI1IC0zNC41dDUwIC0xMy41bDI1IC0ydi0xMDBoLTQwMHYxMDBxNCAwIDExIDAuNXQyNCAzdDMwIDd0MjQgMTV0MTEgMjQuNXY4NTBoLTIwMHEtMjUgMCAtMzcgLTAuNXQtMzEgLTJ0LTI4LjUgLTUuNXQtMjIgLTExdC0xOCAtMTcuNXQtOS41IC0yNi41dC00IC0zN2gtNTB2MzAwIGgxMDAwdi0zMDB6TTE3NSAxMDAwaC03NXYtODAwaDc1bC0xMjUgLTE2N2wtMTI1IDE2N2g3NXY4MDBoLTc1bDEyNSAxNjd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MTsiIGQ9Ik0xMTAwIDkwMGgtNTBxMCAyMSAtNCAzN3QtOS41IDI2LjV0LTE4IDE3LjV0LTIyIDExdC0yOC41IDUuNXQtMzEgMnQtMzcgMC41aC0yMDB2LTY1MHEwIC0yMiAyNSAtMzQuNXQ1MCAtMTMuNWwyNSAtMnYtMTAwaC00MDB2MTAwcTQgMCAxMSAwLjV0MjQgM3QzMCA3dDI0IDE1dDExIDI0LjV2NjUwaC0yMDBxLTI1IDAgLTM3IC0wLjV0LTMxIC0ydC0yOC41IC01LjV0LTIyIC0xMXQtMTggLTE3LjV0LTkuNSAtMjYuNXQtNCAtMzdoLTUwdjMwMCBoMTAwMHYtMzAwek0xMTY3IDUwbC0xNjcgLTEyNXY3NWgtODAwdi03NWwtMTY3IDEyNWwxNjcgMTI1di03NWg4MDB2NzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MjsiIGQ9Ik01MCAxMTAwaDYwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDgwMGgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA1MDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTgwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMjAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1MzsiIGQ9Ik0yNTAgMTEwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMjUwIDUwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCAyMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDU0OyIgZD0iTTUwMCA5NTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg2MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNjAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXpNMTAwIDY1MHYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41ek0zMDAgMzUwdjEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTgwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV6TTAgNTB2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDU1OyIgZD0iTTUwIDExMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAgcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMjAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTEwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1NjsiIGQ9Ik01MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTM1MCAxMTAwaDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMzUwIDgwMGg4MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgNTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTM1MCA1MDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDAgcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC04MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zNTAgMjAwaDgwMCBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNTc7IiBkPSJNNDAwIDBoLTEwMHYxMTAwaDEwMHYtMTEwMHpNNTUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTUwIDgwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMjY3IDU1MGwtMTY3IC0xMjV2NzVoLTIwMHYxMDBoMjAwdjc1ek01NTAgNTAwaDMwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTU1MCAyMDBoNjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1ODsiIGQ9Ik01MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTkwMCAwaC0xMDB2MTEwMGgxMDB2LTExMDB6TTUwIDgwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwIHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTEwMCA2MDBoMjAwdi0xMDBoLTIwMHYtNzVsLTE2NyAxMjVsMTY3IDEyNXYtNzV6TTUwIDUwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek01MCAyMDBoNjAwIHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC02MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA1OTsiIGQ9Ik03NSAxMDAwaDc1MHEzMSAwIDUzIC0yMnQyMiAtNTN2LTY1MHEwIC0zMSAtMjIgLTUzdC01MyAtMjJoLTc1MHEtMzEgMCAtNTMgMjJ0LTIyIDUzdjY1MHEwIDMxIDIyIDUzdDUzIDIyek0xMjAwIDMwMGwtMzAwIDMwMGwzMDAgMzAwdi02MDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2MDsiIGQ9Ik00NCAxMTAwaDExMTJxMTggMCAzMSAtMTN0MTMgLTMxdi0xMDEycTAgLTE4IC0xMyAtMzF0LTMxIC0xM2gtMTExMnEtMTggMCAtMzEgMTN0LTEzIDMxdjEwMTJxMCAxOCAxMyAzMXQzMSAxM3pNMTAwIDEwMDB2LTczN2wyNDcgMTgybDI5OCAtMTMxbC03NCAxNTZsMjkzIDMxOGwyMzYgLTI4OHY1MDBoLTEwMDB6TTM0MiA4ODRxNTYgMCA5NSAtMzl0MzkgLTk0LjV0LTM5IC05NXQtOTUgLTM5LjV0LTk1IDM5LjV0LTM5IDk1dDM5IDk0LjUgdDk1IDM5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjI7IiBkPSJNNjQ4IDExNjlxMTE3IDAgMjE2IC02MHQxNTYuNSAtMTYxdDU3LjUgLTIxOHEwIC0xMTUgLTcwIC0yNThxLTY5IC0xMDkgLTE1OCAtMjI1LjV0LTE0MyAtMTc5LjVsLTU0IC02MnEtOSA4IC0yNS41IDI0LjV0LTYzLjUgNjcuNXQtOTEgMTAzdC05OC41IDEyOHQtOTUuNSAxNDhxLTYwIDEzMiAtNjAgMjQ5cTAgODggMzQgMTY5LjV0OTEuNSAxNDJ0MTM3IDk2LjV0MTY2LjUgMzZ6TTY1Mi41IDk3NHEtOTEuNSAwIC0xNTYuNSAtNjUgdC02NSAtMTU3dDY1IC0xNTYuNXQxNTYuNSAtNjQuNXQxNTYuNSA2NC41dDY1IDE1Ni41dC02NSAxNTd0LTE1Ni41IDY1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjM7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTYwMCAxNzN2ODU0cS0xMTYgMCAtMjE0LjUgLTU3dC0xNTUuNSAtMTU1LjV0LTU3IC0yMTQuNXQ1NyAtMjE0LjUgdDE1NS41IC0xNTUuNXQyMTQuNSAtNTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA2NDsiIGQ9Ik01NTQgMTI5NXEyMSAtNzIgNTcuNSAtMTQzLjV0NzYgLTEzMHQ4MyAtMTE4dDgyLjUgLTExN3Q3MCAtMTE2dDQ5LjUgLTEyNnQxOC41IC0xMzYuNXEwIC03MSAtMjUuNSAtMTM1dC02OC41IC0xMTF0LTk5IC04MnQtMTE4LjUgLTU0dC0xMjUuNSAtMjNxLTg0IDUgLTE2MS41IDM0dC0xMzkuNSA3OC41dC05OSAxMjV0LTM3IDE2NC41cTAgNjkgMTggMTM2LjV0NDkuNSAxMjYuNXQ2OS41IDExNi41dDgxLjUgMTE3LjV0ODMuNSAxMTkgdDc2LjUgMTMxdDU4LjUgMTQzek0zNDQgNzEwcS0yMyAtMzMgLTQzLjUgLTcwLjV0LTQwLjUgLTEwMi41dC0xNyAtMTIzcTEgLTM3IDE0LjUgLTY5LjV0MzAgLTUydDQxIC0zN3QzOC41IC0yNC41dDMzIC0xNXEyMSAtNyAzMiAtMXQxMyAyMmw2IDM0cTIgMTAgLTIuNSAyMnQtMTMuNSAxOXEtNSA0IC0xNCAxMnQtMjkuNSA0MC41dC0zMi41IDczLjVxLTI2IDg5IDYgMjcxcTIgMTEgLTYgMTFxLTggMSAtMTUgLTEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjU7IiBkPSJNMTAwMCAxMDEzbDEwOCAxMTVxMiAxIDUgMnQxMyAydDIwLjUgLTF0MjUgLTkuNXQyOC41IC0yMS41cTIyIC0yMiAyNyAtNDN0MCAtMzJsLTYgLTEwbC0xMDggLTExNXpNMzUwIDExMDBoNDAwcTUwIDAgMTA1IC0xM2wtMTg3IC0xODdoLTM2OHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNTAwcTAgLTQxIDI5LjUgLTcwLjV0NzAuNSAtMjkuNWg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41djE4MmwyMDAgMjAwdi0zMzIgcTAgLTE2NSAtOTMuNSAtMjU3LjV0LTI1Ni41IC05Mi41aC00MDBxLTE2NSAwIC0yNTcuNSA5Mi41dC05Mi41IDI1Ny41djQwMHEwIDE2NSA5Mi41IDI1Ny41dDI1Ny41IDkyLjV6TTEwMDkgODAzbC0zNjIgLTM2MmwtMTYxIC01MGw1NSAxNzBsMzU1IDM1NXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY2OyIgZD0iTTM1MCAxMTAwaDM2MXEtMTY0IC0xNDYgLTIxNiAtMjAwaC0xOTVxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNWwyMDAgMTUzdi0xMDNxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXogTTgyNCAxMDczbDMzOSAtMzAxcTggLTcgOCAtMTcuNXQtOCAtMTcuNWwtMzQwIC0zMDZxLTcgLTYgLTEyLjUgLTR0LTYuNSAxMXYyMDNxLTI2IDEgLTU0LjUgMHQtNzguNSAtNy41dC05MiAtMTcuNXQtODYgLTM1dC03MCAtNTdxMTAgNTkgMzMgMTA4dDUxLjUgODEuNXQ2NSA1OC41dDY4LjUgNDAuNXQ2NyAyNC41dDU2IDEzLjV0NDAgNC41djIxMHExIDEwIDYuNSAxMi41dDEzLjUgLTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY3OyIgZD0iTTM1MCAxMTAwaDM1MHE2MCAwIDEyNyAtMjNsLTE3OCAtMTc3aC0zNDlxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNXY2OWwyMDAgMjAwdi0yMTlxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXogTTY0MyA2MzlsMzk1IDM5NXE3IDcgMTcuNSA3dDE3LjUgLTdsMTAxIC0xMDFxNyAtNyA3IC0xNy41dC03IC0xNy41bC01MzEgLTUzMnEtNyAtNyAtMTcuNSAtN3QtMTcuNSA3bC0yNDggMjQ4cS03IDcgLTcgMTcuNXQ3IDE3LjVsMTAxIDEwMXE3IDcgMTcuNSA3dDE3LjUgLTdsMTExIC0xMTFxOCAtNyAxOCAtN3QxOCA3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNjg7IiBkPSJNMzE4IDkxOGwyNjQgMjY0cTggOCAxOCA4dDE4IC04bDI2MCAtMjY0cTcgLTggNC41IC0xM3QtMTIuNSAtNWgtMTcwdi0yMDBoMjAwdjE3M3EwIDEwIDUgMTJ0MTMgLTVsMjY0IC0yNjBxOCAtNyA4IC0xNy41dC04IC0xNy41bC0yNjQgLTI2NXEtOCAtNyAtMTMgLTV0LTUgMTJ2MTczaC0yMDB2LTIwMGgxNzBxMTAgMCAxMi41IC01dC00LjUgLTEzbC0yNjAgLTI2NHEtOCAtOCAtMTggLTh0LTE4IDhsLTI2NCAyNjRxLTggOCAtNS41IDEzIHQxMi41IDVoMTc1djIwMGgtMjAwdi0xNzNxMCAtMTAgLTUgLTEydC0xMyA1bC0yNjQgMjY1cS04IDcgLTggMTcuNXQ4IDE3LjVsMjY0IDI2MHE4IDcgMTMgNXQ1IC0xMnYtMTczaDIwMHYyMDBoLTE3NXEtMTAgMCAtMTIuNSA1dDUuNSAxM3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDY5OyIgZD0iTTI1MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDM4bDQ2NCA0NTNxMTUgMTQgMjUuNSAxMHQxMC41IC0yNXYtMTAwMHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ2NCA0NTN2LTQzOHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDcwOyIgZD0iTTUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MzhsNDY0IDQ1M3ExNSAxNCAyNS41IDEwdDEwLjUgLTI1di00MzhsNDY0IDQ1M3ExNSAxNCAyNS41IDEwdDEwLjUgLTI1di0xMDAwcTAgLTIxIC0xMC41IC0yNXQtMjUuNSAxMGwtNDY0IDQ1M3YtNDM4cTAgLTIxIC0xMC41IC0yNXQtMjUuNSAxMGwtNDY0IDQ1M3YtNDM4cTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXYxMDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDcxOyIgZD0iTTEyMDAgMTA1MHYtMTAwMHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ2NCA0NTN2LTQzOHEwIC0yMSAtMTAuNSAtMjV0LTI1LjUgMTBsLTQ5MiA0ODBxLTE1IDE0IC0xNSAzNXQxNSAzNWw0OTIgNDgwcTE1IDE0IDI1LjUgMTB0MTAuNSAtMjV2LTQzOGw0NjQgNDUzcTE1IDE0IDI1LjUgMTB0MTAuNSAtMjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3MjsiIGQ9Ik0yNDMgMTA3NGw4MTQgLTQ5OHExOCAtMTEgMTggLTI2dC0xOCAtMjZsLTgxNCAtNDk4cS0xOCAtMTEgLTMwLjUgLTR0LTEyLjUgMjh2MTAwMHEwIDIxIDEyLjUgMjh0MzAuNSAtNHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDczOyIgZD0iTTI1MCAxMDAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtODAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCAxMDAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtODAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzQ7IiBkPSJNMTEwMCA5NTB2LTgwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtODAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY4MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDgwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDc1OyIgZD0iTTUwMCA2MTJ2NDM4cTAgMjEgMTAuNSAyNXQyNS41IC0xMGw0OTIgLTQ4MHExNSAtMTQgMTUgLTM1dC0xNSAtMzVsLTQ5MiAtNDgwcS0xNSAtMTQgLTI1LjUgLTEwdC0xMC41IDI1djQzOGwtNDY0IC00NTNxLTE1IC0xNCAtMjUuNSAtMTB0LTEwLjUgMjV2MTAwMHEwIDIxIDEwLjUgMjV0MjUuNSAtMTB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NjsiIGQ9Ik0xMDQ4IDExMDJsMTAwIDFxMjAgMCAzNSAtMTQuNXQxNSAtMzUuNWw1IC0xMDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41bC0xMDAgLTFxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41bC0yIDQzN2wtNDYzIC00NTRxLTE0IC0xNSAtMjQuNSAtMTAuNXQtMTAuNSAyNS41bC0yIDQzN2wtNDYyIC00NTVxLTE1IC0xNCAtMjUuNSAtOS41dC0xMC41IDI0LjVsLTUgMTAwMHEwIDIxIDEwLjUgMjUuNXQyNS41IC0xMC41bDQ2NiAtNDUwIGwtMiA0MzhxMCAyMCAxMC41IDI0LjV0MjUuNSAtOS41bDQ2NiAtNDUxbC0yIDQzOHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA3NzsiIGQ9Ik04NTAgMTEwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDM4bC00NjQgLTQ1M3EtMTUgLTE0IC0yNS41IC0xMHQtMTAuNSAyNXYxMDAwcTAgMjEgMTAuNSAyNXQyNS41IC0xMGw0NjQgLTQ1M3Y0MzhxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwNzg7IiBkPSJNNjg2IDEwODFsNTAxIC01NDBxMTUgLTE1IDEwLjUgLTI2dC0yNi41IC0xMWgtMTA0MnEtMjIgMCAtMjYuNSAxMXQxMC41IDI2bDUwMSA1NDBxMTUgMTUgMzYgMTV0MzYgLTE1ek0xNTAgNDAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDc5OyIgZD0iTTg4NSA5MDBsLTM1MiAtMzUzbDM1MiAtMzUzbC0xOTcgLTE5OGwtNTUyIDU1Mmw1NTIgNTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODA7IiBkPSJNMTA2NCA1NDdsLTU1MSAtNTUxbC0xOTggMTk4bDM1MyAzNTNsLTM1MyAzNTNsMTk4IDE5OHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDgxOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02NTAgOTAwaC0xMDBxLTIxIDAgLTM1LjUgLTE0LjV0LTE0LjUgLTM1LjV2LTE1MGgtMTUwIHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMTAwcTAgLTIxIDE0LjUgLTM1LjV0MzUuNSAtMTQuNWgxNTB2LTE1MHEwIC0yMSAxNC41IC0zNS41dDM1LjUgLTE0LjVoMTAwcTIxIDAgMzUuNSAxNC41dDE0LjUgMzUuNXYxNTBoMTUwcTIxIDAgMzUuNSAxNC41dDE0LjUgMzUuNXYxMDBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTE1MHYxNTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4MjsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNODUwIDcwMGgtNTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDBxMCAtMjEgMTQuNSAtMzUuNSB0MzUuNSAtMTQuNWg1MDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDgzOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek03NDEuNSA5MTNxLTEyLjUgMCAtMjEuNSAtOWwtMTIwIC0xMjBsLTEyMCAxMjBxLTkgOSAtMjEuNSA5IHQtMjEuNSAtOWwtMTQxIC0xNDFxLTkgLTkgLTkgLTIxLjV0OSAtMjEuNWwxMjAgLTEyMGwtMTIwIC0xMjBxLTkgLTkgLTkgLTIxLjV0OSAtMjEuNWwxNDEgLTE0MXE5IC05IDIxLjUgLTl0MjEuNSA5bDEyMCAxMjBsMTIwIC0xMjBxOSAtOSAyMS41IC05dDIxLjUgOWwxNDEgMTQxcTkgOSA5IDIxLjV0LTkgMjEuNWwtMTIwIDEyMGwxMjAgMTIwcTkgOSA5IDIxLjV0LTkgMjEuNWwtMTQxIDE0MXEtOSA5IC0yMS41IDl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NDsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNTQ2IDYyM2wtODQgODVxLTcgNyAtMTcuNSA3dC0xOC41IC03bC0xMzkgLTEzOXEtNyAtOCAtNyAtMTh0NyAtMTggbDI0MiAtMjQxcTcgLTggMTcuNSAtOHQxNy41IDhsMzc1IDM3NXE3IDcgNyAxNy41dC03IDE4LjVsLTEzOSAxMzlxLTcgNyAtMTcuNSA3dC0xNy41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwODU7IiBkPSJNNjAwIDExNzdxMTE3IDAgMjI0IC00NS41dDE4NC41IC0xMjN0MTIzIC0xODQuNXQ0NS41IC0yMjR0LTQ1LjUgLTIyNHQtMTIzIC0xODQuNXQtMTg0LjUgLTEyM3QtMjI0IC00NS41dC0yMjQgNDUuNXQtMTg0LjUgMTIzdC0xMjMgMTg0LjV0LTQ1LjUgMjI0dDQ1LjUgMjI0dDEyMyAxODQuNXQxODQuNSAxMjN0MjI0IDQ1LjV6TTU4OCA5NDFxLTI5IDAgLTU5IC01LjV0LTYzIC0yMC41dC01OCAtMzguNXQtNDEuNSAtNjN0LTE2LjUgLTg5LjUgcTAgLTI1IDIwIC0yNWgxMzFxMzAgLTUgMzUgMTFxNiAyMCAyMC41IDI4dDQ1LjUgOHEyMCAwIDMxLjUgLTEwLjV0MTEuNSAtMjguNXEwIC0yMyAtNyAtMzR0LTI2IC0xOHEtMSAwIC0xMy41IC00dC0xOS41IC03LjV0LTIwIC0xMC41dC0yMiAtMTd0LTE4LjUgLTI0dC0xNS41IC0zNXQtOCAtNDZxLTEgLTggNS41IC0xNi41dDIwLjUgLTguNWgxNzNxNyAwIDIyIDh0MzUgMjh0MzcuNSA0OHQyOS41IDc0dDEyIDEwMHEwIDQ3IC0xNyA4MyB0LTQyLjUgNTd0LTU5LjUgMzQuNXQtNjQgMTh0LTU5IDQuNXpNNjc1IDQwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MTUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDg2OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02NzUgMTAwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNSB0MTcuNSAtNy41aDE1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djE1MHEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6TTY3NSA3MDBoLTI1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoNzV2LTIwMGgtNzVxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di01MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDM1MHExMCAwIDE3LjUgNy41dDcuNSAxNy41djUwcTAgMTAgLTcuNSAxNy41IHQtMTcuNSA3LjVoLTc1djI3NXEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4NzsiIGQ9Ik01MjUgMTIwMGgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xOTRxMTAzIC0yNyAxNzguNSAtMTAyLjV0MTAyLjUgLTE3OC41aDE5NHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE5NHEtMjcgLTEwMyAtMTAyLjUgLTE3OC41dC0xNzguNSAtMTAyLjV2LTE5NHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE5NCBxLTEwMyAyNyAtMTc4LjUgMTAyLjV0LTEwMi41IDE3OC41aC0xOTRxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxOTRxMjcgMTAzIDEwMi41IDE3OC41dDE3OC41IDEwMi41djE5NHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek03MDAgODkzdi0xNjhxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNjhxLTY4IC0yMyAtMTE5IC03NCB0LTc0IC0xMTloMTY4cTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTY4cTIzIC02OCA3NCAtMTE5dDExOSAtNzR2MTY4cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTY4cTY4IDIzIDExOSA3NHQ3NCAxMTloLTE2OHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDE2OCBxLTIzIDY4IC03NCAxMTl0LTExOSA3NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDg4OyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjV0NTcgLTIxNC41IHQxNTUuNSAtMTU1LjV0MjE0LjUgLTU3dDIxNC41IDU3dDE1NS41IDE1NS41dDU3IDIxNC41dC01NyAyMTQuNXQtMTU1LjUgMTU1LjV0LTIxNC41IDU3ek03NTkgODIzbDY0IC02NHE3IC03IDcgLTE3LjV0LTcgLTE3LjVsLTEyNCAtMTI0bDEyNCAtMTI0cTcgLTcgNyAtMTcuNXQtNyAtMTcuNWwtNjQgLTY0cS03IC03IC0xNy41IC03dC0xNy41IDdsLTEyNCAxMjRsLTEyNCAtMTI0cS03IC03IC0xNy41IC03dC0xNy41IDdsLTY0IDY0IHEtNyA3IC03IDE3LjV0NyAxNy41bDEyNCAxMjRsLTEyNCAxMjRxLTcgNyAtNyAxNy41dDcgMTcuNWw2NCA2NHE3IDcgMTcuNSA3dDE3LjUgLTdsMTI0IC0xMjRsMTI0IDEyNHE3IDcgMTcuNSA3dDE3LjUgLTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA4OTsiIGQ9Ik02MDAgMTE3N3ExMTcgMCAyMjQgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNHQtNDUuNSAtMjI0dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjQgLTQ1LjV0LTIyNCA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjR0NDUuNSAyMjR0MTIzIDE4NC41dDE4NC41IDEyM3QyMjQgNDUuNXpNNjAwIDEwMjdxLTExNiAwIC0yMTQuNSAtNTd0LTE1NS41IC0xNTUuNXQtNTcgLTIxNC41dDU3IC0yMTQuNSB0MTU1LjUgLTE1NS41dDIxNC41IC01N3QyMTQuNSA1N3QxNTUuNSAxNTUuNXQ1NyAyMTQuNXQtNTcgMjE0LjV0LTE1NS41IDE1NS41dC0yMTQuNSA1N3pNNzgyIDc4OGwxMDYgLTEwNnE3IC03IDcgLTE3LjV0LTcgLTE3LjVsLTMyMCAtMzIxcS04IC03IC0xOCAtN3QtMTggN2wtMjAyIDIwM3EtOCA3IC04IDE3LjV0OCAxNy41bDEwNiAxMDZxNyA4IDE3LjUgOHQxNy41IC04bDc5IC03OWwxOTcgMTk3cTcgNyAxNy41IDd0MTcuNSAtN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDkwOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek02MDAgMTAyN3EtMTE2IDAgLTIxNC41IC01N3QtMTU1LjUgLTE1NS41dC01NyAtMjE0LjVxMCAtMTIwIDY1IC0yMjUgbDU4NyA1ODdxLTEwNSA2NSAtMjI1IDY1ek05NjUgODE5bC01ODQgLTU4NHExMDQgLTYyIDIxOSAtNjJxMTE2IDAgMjE0LjUgNTd0MTU1LjUgMTU1LjV0NTcgMjE0LjVxMCAxMTUgLTYyIDIxOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDkxOyIgZD0iTTM5IDU4Mmw1MjIgNDI3cTE2IDEzIDI3LjUgOHQxMS41IC0yNnYtMjkxaDU1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC01NTB2LTI5MXEwIC0yMSAtMTEuNSAtMjZ0LTI3LjUgOGwtNTIyIDQyN3EtMTYgMTMgLTE2IDMydDE2IDMyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUwOTI7IiBkPSJNNjM5IDEwMDlsNTIyIC00MjdxMTYgLTEzIDE2IC0zMnQtMTYgLTMybC01MjIgLTQyN3EtMTYgLTEzIC0yNy41IC04dC0xMS41IDI2djI5MWgtNTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDU1MHYyOTFxMCAyMSAxMS41IDI2dDI3LjUgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5MzsiIGQ9Ik02ODIgMTE2MWw0MjcgLTUyMnExMyAtMTYgOCAtMjcuNXQtMjYgLTExLjVoLTI5MXYtNTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0yMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djU1MGgtMjkxcS0yMSAwIC0yNiAxMS41dDggMjcuNWw0MjcgNTIycTEzIDE2IDMyIDE2dDMyIC0xNnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk0OyIgZD0iTTU1MCAxMjAwaDIwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTUwaDI5MXEyMSAwIDI2IC0xMS41dC04IC0yNy41bC00MjcgLTUyMnEtMTMgLTE2IC0zMiAtMTZ0LTMyIDE2bC00MjcgNTIycS0xMyAxNiAtOCAyNy41dDI2IDExLjVoMjkxdjU1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTA5NTsiIGQ9Ik02MzkgMTEwOWw1MjIgLTQyN3ExNiAtMTMgMTYgLTMydC0xNiAtMzJsLTUyMiAtNDI3cS0xNiAtMTMgLTI3LjUgLTh0LTExLjUgMjZ2MjkxcS05NCAtMiAtMTgyIC0yMHQtMTcwLjUgLTUydC0xNDcgLTkyLjV0LTEwMC41IC0xMzUuNXE1IDEwNSAyNyAxOTMuNXQ2Ny41IDE2N3QxMTMgMTM1dDE2NyA5MS41dDIyNS41IDQydjI2MnEwIDIxIDExLjUgMjZ0MjcuNSAtOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk2OyIgZD0iTTg1MCAxMjAwaDMwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMzAwcTAgLTIxIC0xMC41IC0yNXQtMjQuNSAxMGwtOTQgOTRsLTI0OSAtMjQ5cS04IC03IC0xOCAtN3QtMTggN2wtMTA2IDEwNnEtNyA4IC03IDE4dDcgMThsMjQ5IDI0OWwtOTQgOTRxLTE0IDE0IC0xMCAyNC41dDI1IDEwLjV6TTM1MCAwaC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djMwMHEwIDIxIDEwLjUgMjV0MjQuNSAtMTBsOTQgLTk0bDI0OSAyNDkgcTggNyAxOCA3dDE4IC03bDEwNiAtMTA2cTcgLTggNyAtMTh0LTcgLTE4bC0yNDkgLTI0OWw5NCAtOTRxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMDk3OyIgZD0iTTEwMTQgMTEyMGwxMDYgLTEwNnE3IC04IDcgLTE4dC03IC0xOGwtMjQ5IC0yNDlsOTQgLTk0cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTMwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MzAwcTAgMjEgMTAuNSAyNXQyNC41IC0xMGw5NCAtOTRsMjQ5IDI0OXE4IDcgMTggN3QxOCAtN3pNMjUwIDYwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTk0IDk0IGwtMjQ5IC0yNDlxLTggLTcgLTE4IC03dC0xOCA3bC0xMDYgMTA2cS03IDggLTcgMTh0NyAxOGwyNDkgMjQ5bC05NCA5NHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAxOyIgZD0iTTYwMCAxMTc3cTExNyAwIDIyNCAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI0dC00NS41IC0yMjR0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNCAtNDUuNXQtMjI0IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNHQ0NS41IDIyNHQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNCA0NS41ek03MDQgOTAwaC0yMDhxLTIwIDAgLTMyIC0xNC41dC04IC0zNC41bDU4IC0zMDJxNCAtMjAgMjEuNSAtMzQuNSB0MzcuNSAtMTQuNWg1NHEyMCAwIDM3LjUgMTQuNXQyMS41IDM0LjVsNTggMzAycTQgMjAgLTggMzQuNXQtMzIgMTQuNXpNNjc1IDQwMGgtMTUwcS0xMCAwIC0xNy41IC03LjV0LTcuNSAtMTcuNXYtMTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2MTUwcTAgMTAgLTcuNSAxNy41dC0xNy41IDcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAyOyIgZD0iTTI2MCAxMjAwcTkgMCAxOSAtMnQxNSAtNGw1IC0ycTIyIC0xMCA0NCAtMjNsMTk2IC0xMThxMjEgLTEzIDM2IC0yNHEyOSAtMjEgMzcgLTEycTExIDEzIDQ5IDM1bDE5NiAxMThxMjIgMTMgNDUgMjNxMTcgNyAzOCA3cTIzIDAgNDcgLTE2LjV0MzcgLTMzLjVsMTMgLTE2cTE0IC0yMSAxOCAtNDVsMjUgLTEyM2w4IC00NHExIC05IDguNSAtMTQuNXQxNy41IC01LjVoNjFxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di01MCBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC01MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTE3NWgtNDAwdjMwMGgtMjAwdi0zMDBoLTQwMHYxNzVxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41aC01MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNjFxMTEgMCAxOCAzdDcgOHEwIDQgOSA1MmwyNSAxMjhxNSAyNSAxOSA0NXEyIDMgNSA3dDEzLjUgMTV0MjEuNSAxOS41dDI2LjUgMTUuNSB0MjkuNSA3ek05MTUgMTA3OWwtMTY2IC0xNjJxLTcgLTcgLTUgLTEydDEyIC01aDIxOXExMCAwIDE1IDd0MiAxN2wtNTEgMTQ5cS0zIDEwIC0xMSAxMnQtMTUgLTZ6TTQ2MyA5MTdsLTE3NyAxNTdxLTggNyAtMTYgNXQtMTEgLTEybC01MSAtMTQzcS0zIC0xMCAyIC0xN3QxNSAtN2gyMzFxMTEgMCAxMi41IDV0LTUuNSAxMnpNNTAwIDBoLTM3NXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djM3NWg0MDB2LTQwMHpNMTEwMCA0MDB2LTM3NSBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0zNzV2NDAwaDQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTAzOyIgZD0iTTExNjUgMTE5MHE4IDMgMjEgLTYuNXQxMyAtMTcuNXEtMiAtMTc4IC0yNC41IC0zMjMuNXQtNTUuNSAtMjQ1LjV0LTg3IC0xNzQuNXQtMTAyLjUgLTExOC41dC0xMTggLTY4LjV0LTExOC41IC0zM3QtMTIwIC00LjV0LTEwNSA5LjV0LTkwIDE2LjVxLTYxIDEyIC03OCAxMXEtNCAxIC0xMi41IDB0LTM0IC0xNC41dC01Mi41IC00MC41bC0xNTMgLTE1M3EtMjYgLTI0IC0zNyAtMTQuNXQtMTEgNDMuNXEwIDY0IDQyIDEwMnE4IDggNTAuNSA0NSB0NjYuNSA1OHExOSAxNyAzNSA0N3QxMyA2MXEtOSA1NSAtMTAgMTAyLjV0NyAxMTF0MzcgMTMwdDc4IDEyOS41cTM5IDUxIDgwIDg4dDg5LjUgNjMuNXQ5NC41IDQ1dDExMy41IDM2dDEyOSAzMXQxNTcuNSAzN3QxODIgNDcuNXpNMTExNiAxMDk4cS04IDkgLTIyLjUgLTN0LTQ1LjUgLTUwcS0zOCAtNDcgLTExOSAtMTAzLjV0LTE0MiAtODkuNWwtNjIgLTMzcS01NiAtMzAgLTEwMiAtNTd0LTEwNCAtNjh0LTEwMi41IC04MC41dC04NS41IC05MSB0LTY0IC0xMDQuNXEtMjQgLTU2IC0zMSAtODZ0MiAtMzJ0MzEuNSAxNy41dDU1LjUgNTkuNXEyNSAzMCA5NCA3NS41dDEyNS41IDc3LjV0MTQ3LjUgODFxNzAgMzcgMTE4LjUgNjl0MTAyIDc5LjV0OTkgMTExdDg2LjUgMTQ4LjVxMjIgNTAgMjQgNjB0LTYgMTl6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNDsiIGQ9Ik02NTMgMTIzMXEtMzkgLTY3IC01NC41IC0xMzF0LTEwLjUgLTExNC41dDI0LjUgLTk2LjV0NDcuNSAtODB0NjMuNSAtNjIuNXQ2OC41IC00Ni41dDY1IC0zMHEtNCA3IC0xNy41IDM1dC0xOC41IDM5LjV0LTE3IDM5LjV0LTE3IDQzdC0xMyA0MnQtOS41IDQ0LjV0LTIgNDJ0NCA0M3QxMy41IDM5dDIzIDM4LjVxOTYgLTQyIDE2NSAtMTA3LjV0MTA1IC0xMzh0NTIgLTE1NnQxMyAtMTU5dC0xOSAtMTQ5LjVxLTEzIC01NSAtNDQgLTEwNi41IHQtNjggLTg3dC03OC41IC02NC41dC03Mi41IC00NXQtNTMgLTIycS03MiAtMjIgLTEyNyAtMTFxLTMxIDYgLTEzIDE5cTYgMyAxNyA3cTEzIDUgMzIuNSAyMXQ0MSA0NHQzOC41IDYzLjV0MjEuNSA4MS41dC02LjUgOTQuNXQtNTAgMTA3dC0xMDQgMTE1LjVxMTAgLTEwNCAtMC41IC0xODl0LTM3IC0xNDAuNXQtNjUgLTkzdC04NCAtNTJ0LTkzLjUgLTExdC05NSAyNC41cS04MCAzNiAtMTMxLjUgMTE0dC01My41IDE3MXEtMiAyMyAwIDQ5LjUgdDQuNSA1Mi41dDEzLjUgNTZ0MjcuNSA2MHQ0NiA2NC41dDY5LjUgNjguNXEtOCAtNTMgLTUgLTEwMi41dDE3LjUgLTkwdDM0IC02OC41dDQ0LjUgLTM5dDQ5IC0ycTMxIDEzIDM4LjUgMzZ0LTQuNSA1NXQtMjkgNjQuNXQtMzYgNzV0LTI2IDc1LjVxLTE1IDg1IDIgMTYxLjV0NTMuNSAxMjguNXQ4NS41IDkyLjV0OTMuNSA2MXQ4MS41IDI1LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNTsiIGQ9Ik02MDAgMTA5NHE4MiAwIDE2MC41IC0yMi41dDE0MCAtNTl0MTE2LjUgLTgyLjV0OTQuNSAtOTV0NjggLTk1dDQyLjUgLTgyLjV0MTQgLTU3LjV0LTE0IC01Ny41dC00MyAtODIuNXQtNjguNSAtOTV0LTk0LjUgLTk1dC0xMTYuNSAtODIuNXQtMTQwIC01OXQtMTU5LjUgLTIyLjV0LTE1OS41IDIyLjV0LTE0MCA1OXQtMTE2LjUgODIuNXQtOTQuNSA5NXQtNjguNSA5NXQtNDMgODIuNXQtMTQgNTcuNXQxNCA1Ny41dDQyLjUgODIuNXQ2OCA5NSB0OTQuNSA5NXQxMTYuNSA4Mi41dDE0MCA1OXQxNjAuNSAyMi41ek04ODggODI5cS0xNSAxNSAtMTggMTJ0NSAtMjJxMjUgLTU3IDI1IC0xMTlxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4dC0yMTIgODh0LTg4IDIxMnEwIDU5IDIzIDExNHE4IDE5IDQuNSAyMnQtMTcuNSAtMTJxLTcwIC02OSAtMTYwIC0xODRxLTEzIC0xNiAtMTUgLTQwLjV0OSAtNDIuNXEyMiAtMzYgNDcgLTcxdDcwIC04MnQ5Mi41IC04MXQxMTMgLTU4LjV0MTMzLjUgLTI0LjUgdDEzMy41IDI0dDExMyA1OC41dDkyLjUgODEuNXQ3MCA4MS41dDQ3IDcwLjVxMTEgMTggOSA0Mi41dC0xNCA0MS41cS05MCAxMTcgLTE2MyAxODl6TTQ0OCA3MjdsLTM1IC0zNnEtMTUgLTE1IC0xOS41IC0zOC41dDQuNSAtNDEuNXEzNyAtNjggOTMgLTExNnExNiAtMTMgMzguNSAtMTF0MzYuNSAxN2wzNSAzNHExNCAxNSAxMi41IDMzLjV0LTE2LjUgMzMuNXEtNDQgNDQgLTg5IDExN3EtMTEgMTggLTI4IDIwdC0zMiAtMTJ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwNjsiIGQ9Ik01OTIgMGgtMTQ4bDMxIDEyMHEtOTEgMjAgLTE3NS41IDY4LjV0LTE0My41IDEwNi41dC0xMDMuNSAxMTl0LTY2LjUgMTEwdC0yMiA3NnEwIDIxIDE0IDU3LjV0NDIuNSA4Mi41dDY4IDk1dDk0LjUgOTV0MTE2LjUgODIuNXQxNDAgNTl0MTYwLjUgMjIuNXE2MSAwIDEyNiAtMTVsMzIgMTIxaDE0OHpNOTQ0IDc3MGw0NyAxODFxMTA4IC04NSAxNzYuNSAtMTkydDY4LjUgLTE1OXEwIC0yNiAtMTkuNSAtNzF0LTU5LjUgLTEwMnQtOTMgLTExMiB0LTEyOSAtMTA0LjV0LTE1OCAtNzUuNWw0NiAxNzNxNzcgNDkgMTM2IDExN3Q5NyAxMzFxMTEgMTggOSA0Mi41dC0xNCA0MS41cS01NCA3MCAtMTA3IDEzMHpNMzEwIDgyNHEtNzAgLTY5IC0xNjAgLTE4NHEtMTMgLTE2IC0xNSAtNDAuNXQ5IC00Mi41cTE4IC0zMCAzOSAtNjB0NTcgLTcwLjV0NzQgLTczdDkwIC02MXQxMDUgLTQxLjVsNDEgMTU0cS0xMDcgMTggLTE3OC41IDEwMS41dC03MS41IDE5My41cTAgNTkgMjMgMTE0cTggMTkgNC41IDIyIHQtMTcuNSAtMTJ6TTQ0OCA3MjdsLTM1IC0zNnEtMTUgLTE1IC0xOS41IC0zOC41dDQuNSAtNDEuNXEzNyAtNjggOTMgLTExNnExNiAtMTMgMzguNSAtMTF0MzYuNSAxN2wxMiAxMWwyMiA4NmwtMyA0cS00NCA0NCAtODkgMTE3cS0xMSAxOCAtMjggMjB0LTMyIC0xMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTA3OyIgZD0iTS05MCAxMDBsNjQyIDEwNjZxMjAgMzEgNDggMjguNXQ0OCAtMzUuNWw2NDIgLTEwNTZxMjEgLTMyIDcuNSAtNjcuNXQtNTAuNSAtMzUuNWgtMTI5NHEtMzcgMCAtNTAuNSAzNHQ3LjUgNjZ6TTE1NSAyMDBoMzQ1djc1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtNzVoMzQ1bC00NDUgNzIzek00OTYgNzAwaDIwOHEyMCAwIDMyIC0xNC41dDggLTM0LjVsLTU4IC0yNTIgcS00IC0yMCAtMjEuNSAtMzQuNXQtMzcuNSAtMTQuNWgtNTRxLTIwIDAgLTM3LjUgMTQuNXQtMjEuNSAzNC41bC01OCAyNTJxLTQgMjAgOCAzNC41dDMyIDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwODsiIGQ9Ik02NTAgMTIwMHE2MiAwIDEwNiAtNDR0NDQgLTEwNnYtMzM5bDM2MyAtMzI1cTE1IC0xNCAyNiAtMzguNXQxMSAtNDQuNXYtNDFxMCAtMjAgLTEyIC0yNi41dC0yOSA1LjVsLTM1OSAyNDl2LTI2M3ExMDAgLTkzIDEwMCAtMTEzdi02NHEwIC0yMSAtMTMgLTI5dC0zMiAxbC0yMDUgMTI4bC0yMDUgLTEyOHEtMTkgLTkgLTMyIC0xdC0xMyAyOXY2NHEwIDIwIDEwMCAxMTN2MjYzbC0zNTkgLTI0OXEtMTcgLTEyIC0yOSAtNS41dC0xMiAyNi41djQxIHEwIDIwIDExIDQ0LjV0MjYgMzguNWwzNjMgMzI1djMzOXEwIDYyIDQ0IDEwNnQxMDYgNDR6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEwOTsiIGQ9Ik04NTAgMTIwMGgxMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwaDUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoLTExMDB2MTUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGg1MDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMTAwIDgwMHYtNzUwcTAgLTIxIC0xNC41IC0zNS41IHQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NzUwaDExMDB6TTEwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTMwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTUwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTcwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTkwMCA2MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTEwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTMwMCA0MDB2LTEwMGgxMDB2MTAwaC0xMDB6TTUwMCA0MDAgdi0xMDBoMTAwdjEwMGgtMTAwek03MDAgNDAwdi0xMDBoMTAwdjEwMGgtMTAwek05MDAgNDAwdi0xMDBoMTAwdjEwMGgtMTAwek0xMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek0zMDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek01MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek03MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAwek05MDAgMjAwdi0xMDBoMTAwdjEwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTA7IiBkPSJNMTEzNSAxMTY1bDI0OSAtMjMwcTE1IC0xNCAxNSAtMzV0LTE1IC0zNWwtMjQ5IC0yMzBxLTE0IC0xNCAtMjQuNSAtMTB0LTEwLjUgMjV2MTUwaC0xNTlsLTYwMCAtNjAwaC0yOTFxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjA5bDYwMCA2MDBoMjQxdjE1MHEwIDIxIDEwLjUgMjV0MjQuNSAtMTB6TTUyMiA4MTlsLTE0MSAtMTQxbC0xMjIgMTIyaC0yMDlxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDI5MXpNMTEzNSA1NjVsMjQ5IC0yMzBxMTUgLTE0IDE1IC0zNXQtMTUgLTM1bC0yNDkgLTIzMHEtMTQgLTE0IC0yNC41IC0xMHQtMTAuNSAyNXYxNTBoLTI0MWwtMTgxIDE4MWwxNDEgMTQxbDEyMiAtMTIyaDE1OXYxNTBxMCAyMSAxMC41IDI1dDI0LjUgLTEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTE7IiBkPSJNMTAwIDExMDBoMTAwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC01OTZsLTMwNCAtMzAwdjMwMGgtMTAwcS00MSAwIC03MC41IDI5LjV0LTI5LjUgNzAuNXY2MDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTI7IiBkPSJNMTUwIDEyMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yNTBoLTMwMHYyNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTIwMGgyMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTI1MGgtMzAwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTExMDAgODAwdi0zMDBxMCAtNDEgLTMgLTc3LjV0LTE1IC04OS41dC0zMiAtOTZ0LTU4IC04OXQtODkgLTc3dC0xMjkgLTUxdC0xNzQgLTIwdC0xNzQgMjAgdC0xMjkgNTF0LTg5IDc3dC01OCA4OXQtMzIgOTZ0LTE1IDg5LjV0LTMgNzcuNXYzMDBoMzAwdi0yNTB2LTI3di00Mi41dDEuNSAtNDF0NSAtMzh0MTAgLTM1dDE2LjUgLTMwdDI1LjUgLTI0LjV0MzUgLTE5dDQ2LjUgLTEydDYwIC00dDYwIDQuNXQ0Ni41IDEyLjV0MzUgMTkuNXQyNSAyNS41dDE3IDMwLjV0MTAgMzV0NSAzOHQyIDQwLjV0LTAuNSA0MnYyNXYyNTBoMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTM7IiBkPSJNMTEwMCA0MTFsLTE5OCAtMTk5bC0zNTMgMzUzbC0zNTMgLTM1M2wtMTk3IDE5OWw1NTEgNTUxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTQ7IiBkPSJNMTEwMSA3ODlsLTU1MCAtNTUxbC01NTEgNTUxbDE5OCAxOTlsMzUzIC0zNTNsMzUzIDM1M3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTE1OyIgZD0iTTQwNCAxMDAwaDc0NnEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTUxaDE1MHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNWwtMjMwIC0yNDlxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI0OXEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNWgxNTB2NDAxaC0zODF6TTEzNSA5ODRsMjMwIC0yNDlxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNWgtMTUwdi00MDBoMzg1bDIxNSAtMjAwaC03NTBxLTIxIDAgLTM1LjUgMTQuNSB0LTE0LjUgMzUuNXY1NTBoLTE1MHEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIzMCAyNDlxMTQgMTUgMzUgMTV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTY7IiBkPSJNNTYgMTIwMGg5NHExNyAwIDMxIC0xMXQxOCAtMjdsMzggLTE2Mmg4OTZxMjQgMCAzOSAtMTguNXQxMCAtNDIuNWwtMTAwIC00NzVxLTUgLTIxIC0yNyAtNDIuNXQtNTUgLTIxLjVoLTYzM2w0OCAtMjAwaDUzNXEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41dC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1MGgtMzAwdi01MCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjV0LTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaC0zMXEtMTggMCAtMzIuNSAxMHQtMjAuNSAxOWwtNSAxMGwtMjAxIDk2MWgtNTRxLTIwIDAgLTM1IDE0LjV0LTE1IDM1LjV0MTUgMzUuNXQzNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTc7IiBkPSJNMTIwMCAxMDAwdi0xMDBoLTEyMDB2MTAwaDIwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMzAwcTQxIDAgNzAuNSAtMjkuNXQyOS41IC03MC41aDUwMHpNMCA4MDBoMTIwMHYtODAwaC0xMjAwdjgwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTE4OyIgZD0iTTIwMCA4MDBsLTIwMCAtNDAwdjYwMGgyMDBxMCA0MSAyOS41IDcwLjV0NzAuNSAyOS41aDMwMHE0MiAwIDcxIC0yOS41dDI5IC03MC41aDUwMHYtMjAwaC0xMDAwek0xNTAwIDcwMGwtMzAwIC03MDBoLTEyMDBsMzAwIDcwMGgxMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMTk7IiBkPSJNNjM1IDExODRsMjMwIC0yNDlxMTQgLTE0IDEwIC0yNC41dC0yNSAtMTAuNWgtMTUwdi02MDFoMTUwcTIxIDAgMjUgLTEwLjV0LTEwIC0yNC41bC0yMzAgLTI0OXEtMTQgLTE1IC0zNSAtMTV0LTM1IDE1bC0yMzAgMjQ5cS0xNCAxNCAtMTAgMjQuNXQyNSAxMC41aDE1MHY2MDFoLTE1MHEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIzMCAyNDlxMTQgMTUgMzUgMTV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjA7IiBkPSJNOTM2IDg2NGwyNDkgLTIyOXExNCAtMTUgMTQgLTM1LjV0LTE0IC0zNS41bC0yNDkgLTIyOXEtMTUgLTE1IC0yNS41IC0xMC41dC0xMC41IDI0LjV2MTUxaC02MDB2LTE1MXEwIC0yMCAtMTAuNSAtMjQuNXQtMjUuNSAxMC41bC0yNDkgMjI5cS0xNCAxNSAtMTQgMzUuNXQxNCAzNS41bDI0OSAyMjlxMTUgMTUgMjUuNSAxMC41dDEwLjUgLTI1LjV2LTE0OWg2MDB2MTQ5cTAgMjEgMTAuNSAyNS41dDI1LjUgLTEwLjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMTsiIGQ9Ik0xMTY5IDQwMGwtMTcyIDczMnEtNSAyMyAtMjMgNDUuNXQtMzggMjIuNWgtNjcycS0yMCAwIC0zOCAtMjB0LTIzIC00MWwtMTcyIC03MzloMTEzOHpNMTEwMCAzMDBoLTEwMDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTEwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoMTAwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2MTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41ek04MDAgMTAwdjEwMGgxMDB2LTEwMGgtMTAwIHpNMTAwMCAxMDB2MTAwaDEwMHYtMTAwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyMjsiIGQ9Ik0xMTUwIDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTg1MHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNXQtMzUuNSAxNC41dC0xNC41IDM1LjV2ODUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNMTAwMCAyMDBsLTY3NSAyMDBoLTM4bDQ3IC0yNzZxMyAtMTYgLTUuNSAtMjB0LTI5LjUgLTRoLTdoLTg0cS0yMCAwIC0zNC41IDE0dC0xOC41IDM1cS01NSAzMzcgLTU1IDM1MXYyNTB2NnEwIDE2IDEgMjMuNXQ2LjUgMTQgdDE3LjUgNi41aDIwMGw2NzUgMjUwdi04NTB6TTAgNzUwdi0yNTBxLTQgMCAtMTEgMC41dC0yNCA2dC0zMCAxNXQtMjQgMzB0LTExIDQ4LjV2NTBxMCAyNiAxMC41IDQ2dDI1IDMwdDI5IDE2dDI1LjUgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTIzOyIgZD0iTTU1MyAxMjAwaDk0cTIwIDAgMjkgLTEwLjV0MyAtMjkuNWwtMTggLTM3cTgzIC0xOSAxNDQgLTgyLjV0NzYgLTE0MC41bDYzIC0zMjdsMTE4IC0xNzNoMTdxMTkgMCAzMyAtMTQuNXQxNCAtMzV0LTEzIC00MC41dC0zMSAtMjdxLTggLTQgLTIzIC05LjV0LTY1IC0xOS41dC0xMDMgLTI1dC0xMzIuNSAtMjB0LTE1OC41IC05cS01NyAwIC0xMTUgNXQtMTA0IDEydC04OC41IDE1LjV0LTczLjUgMTcuNXQtNTQuNSAxNnQtMzUuNSAxMmwtMTEgNCBxLTE4IDggLTMxIDI4dC0xMyA0MC41dDE0IDM1dDMzIDE0LjVoMTdsMTE4IDE3M2w2MyAzMjdxMTUgNzcgNzYgMTQwdDE0NCA4M2wtMTggMzJxLTYgMTkgMy41IDMydDI4LjUgMTN6TTQ5OCAxMTBxNTAgLTYgMTAyIC02cTUzIDAgMTAyIDZxLTEyIC00OSAtMzkuNSAtNzkuNXQtNjIuNSAtMzAuNXQtNjMgMzAuNXQtMzkgNzkuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTI0OyIgZD0iTTgwMCA5NDZsMjI0IDc4bC03OCAtMjI0bDIzNCAtNDVsLTE4MCAtMTU1bDE4MCAtMTU1bC0yMzQgLTQ1bDc4IC0yMjRsLTIyNCA3OGwtNDUgLTIzNGwtMTU1IDE4MGwtMTU1IC0xODBsLTQ1IDIzNGwtMjI0IC03OGw3OCAyMjRsLTIzNCA0NWwxODAgMTU1bC0xODAgMTU1bDIzNCA0NWwtNzggMjI0bDIyNCAtNzhsNDUgMjM0bDE1NSAtMTgwbDE1NSAxODB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyNTsiIGQ9Ik02NTAgMTIwMGg1MHE0MCAwIDcwIC00MC41dDMwIC04NC41di0xNTBsLTI4IC0xMjVoMzI4cTQwIDAgNzAgLTQwLjV0MzAgLTg0LjV2LTEwMHEwIC00NSAtMjkgLTc0bC0yMzggLTM0NHEtMTYgLTI0IC0zOCAtNDAuNXQtNDUgLTE2LjVoLTI1MHEtNyAwIC00MiAyNXQtNjYgNTBsLTMxIDI1aC02MXEtNDUgMCAtNzIuNSAxOHQtMjcuNSA1N3Y0MDBxMCAzNiAyMCA2M2wxNDUgMTk2bDk2IDE5OHExMyAyOCAzNy41IDQ4dDUxLjUgMjB6IE02NTAgMTEwMGwtMTAwIC0yMTJsLTE1MCAtMjEzdi0zNzVoMTAwbDEzNiAtMTAwaDIxNGwyNTAgMzc1djEyNWgtNDUwbDUwIDIyNXYxNzVoLTUwek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTI2OyIgZD0iTTYwMCAxMTAwaDI1MHEyMyAwIDQ1IC0xNi41dDM4IC00MC41bDIzOCAtMzQ0cTI5IC0yOSAyOSAtNzR2LTEwMHEwIC00NCAtMzAgLTg0LjV0LTcwIC00MC41aC0zMjhxMjggLTExOCAyOCAtMTI1di0xNTBxMCAtNDQgLTMwIC04NC41dC03MCAtNDAuNWgtNTBxLTI3IDAgLTUxLjUgMjB0LTM3LjUgNDhsLTk2IDE5OGwtMTQ1IDE5NnEtMjAgMjcgLTIwIDYzdjQwMHEwIDM5IDI3LjUgNTd0NzIuNSAxOGg2MXExMjQgMTAwIDEzOSAxMDB6IE01MCAxMDAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTYzNiAxMDAwbC0xMzYgLTEwMGgtMTAwdi0zNzVsMTUwIC0yMTNsMTAwIC0yMTJoNTB2MTc1bC01MCAyMjVoNDUwdjEyNWwtMjUwIDM3NWgtMjE0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMjc7IiBkPSJNMzU2IDg3M2wzNjMgMjMwcTMxIDE2IDUzIC02bDExMCAtMTEycTEzIC0xMyAxMy41IC0zMnQtMTEuNSAtMzRsLTg0IC0xMjFoMzAycTg0IDAgMTM4IC0zOHQ1NCAtMTEwdC01NSAtMTExdC0xMzkgLTM5aC0xMDZsLTEzMSAtMzM5cS02IC0yMSAtMTkuNSAtNDF0LTI4LjUgLTIwaC0zNDJxLTcgMCAtOTAgODF0LTgzIDk0djUyNXEwIDE3IDE0IDM1LjV0MjggMjguNXpNNDAwIDc5MnYtNTAzbDEwMCAtODloMjkzbDEzMSAzMzkgcTYgMjEgMTkuNSA0MXQyOC41IDIwaDIwM3EyMSAwIDMwLjUgMjV0MC41IDUwdC0zMSAyNWgtNDU2aC03aC02aC01LjV0LTYgMC41dC01IDEuNXQtNSAydC00IDIuNXQtNCA0dC0yLjUgNC41cS0xMiAyNSA1IDQ3bDE0NiAxODNsLTg2IDgzek01MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NTAwIHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyODsiIGQ9Ik00NzUgMTEwM2wzNjYgLTIzMHEyIC0xIDYgLTMuNXQxNCAtMTAuNXQxOCAtMTYuNXQxNC41IC0yMHQ2LjUgLTIyLjV2LTUyNXEwIC0xMyAtODYgLTk0dC05MyAtODFoLTM0MnEtMTUgMCAtMjguNSAyMHQtMTkuNSA0MWwtMTMxIDMzOWgtMTA2cS04NSAwIC0xMzkuNSAzOXQtNTQuNSAxMTF0NTQgMTEwdDEzOCAzOGgzMDJsLTg1IDEyMXEtMTEgMTUgLTEwLjUgMzR0MTMuNSAzMmwxMTAgMTEycTIyIDIyIDUzIDZ6TTM3MCA5NDVsMTQ2IC0xODMgcTE3IC0yMiA1IC00N3EtMiAtMiAtMy41IC00LjV0LTQgLTR0LTQgLTIuNXQtNSAtMnQtNSAtMS41dC02IC0wLjVoLTZoLTYuNWgtNmgtNDc1di0xMDBoMjIxcTE1IDAgMjkgLTIwdDIwIC00MWwxMzAgLTMzOWgyOTRsMTA2IDg5djUwM2wtMzQyIDIzNnpNMTA1MCA4MDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjUgdjUwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEyOTsiIGQ9Ik01NTAgMTI5NHE3MiAwIDExMSAtNTV0MzkgLTEzOXYtMTA2bDMzOSAtMTMxcTIxIC02IDQxIC0xOS41dDIwIC0yOC41di0zNDJxMCAtNyAtODEgLTkwdC05NCAtODNoLTUyNXEtMTcgMCAtMzUuNSAxNHQtMjguNSAyOGwtOSAxNGwtMjMwIDM2M3EtMTYgMzEgNiA1M2wxMTIgMTEwcTEzIDEzIDMyIDEzLjV0MzQgLTExLjVsMTIxIC04NHYzMDJxMCA4NCAzOCAxMzh0MTEwIDU0ek02MDAgOTcydjIwM3EwIDIxIC0yNSAzMC41dC01MCAwLjUgdC0yNSAtMzF2LTQ1NnYtN3YtNnYtNS41dC0wLjUgLTZ0LTEuNSAtNXQtMiAtNXQtMi41IC00dC00IC00dC00LjUgLTIuNXEtMjUgLTEyIC00NyA1bC0xODMgMTQ2bC04MyAtODZsMjM2IC0zMzloNTAzbDg5IDEwMHYyOTNsLTMzOSAxMzFxLTIxIDYgLTQxIDE5LjV0LTIwIDI4LjV6TTQ1MCAyMDBoNTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTUwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMDsiIGQ9Ik0zNTAgMTEwMGg1MDBxMjEgMCAzNS41IDE0LjV0MTQuNSAzNS41djEwMHEwIDIxIC0xNC41IDM1LjV0LTM1LjUgMTQuNWgtNTAwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xMDBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41ek02MDAgMzA2di0xMDZxMCAtODQgLTM5IC0xMzl0LTExMSAtNTV0LTExMCA1NHQtMzggMTM4djMwMmwtMTIxIC04NHEtMTUgLTEyIC0zNCAtMTEuNXQtMzIgMTMuNWwtMTEyIDExMCBxLTIyIDIyIC02IDUzbDIzMCAzNjNxMSAyIDMuNSA2dDEwLjUgMTMuNXQxNi41IDE3dDIwIDEzLjV0MjIuNSA2aDUyNXExMyAwIDk0IC04M3Q4MSAtOTB2LTM0MnEwIC0xNSAtMjAgLTI4LjV0LTQxIC0xOS41ek0zMDggOTAwbC0yMzYgLTMzOWw4MyAtODZsMTgzIDE0NnEyMiAxNyA0NyA1cTIgLTEgNC41IC0yLjV0NCAtNHQyLjUgLTR0MiAtNXQxLjUgLTV0MC41IC02di01LjV2LTZ2LTd2LTQ1NnEwIC0yMiAyNSAtMzF0NTAgMC41dDI1IDMwLjUgdjIwM3EwIDE1IDIwIDI4LjV0NDEgMTkuNWwzMzkgMTMxdjI5M2wtODkgMTAwaC01MDN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMTsiIGQ9Ik02MDAgMTE3OHExMTggMCAyMjUgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNXQtNDUuNSAtMjI1dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjUgLTQ1LjV0LTIyNSA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjV0NDUuNSAyMjV0MTIzIDE4NC41dDE4NC41IDEyM3QyMjUgNDUuNXpNOTE0IDYzMmwtMjc1IDIyM3EtMTYgMTMgLTI3LjUgOHQtMTEuNSAtMjZ2LTEzN2gtMjc1IHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTE1MHEwIC0xMCA3LjUgLTE3LjV0MTcuNSAtNy41aDI3NXYtMTM3cTAgLTIxIDExLjUgLTI2dDI3LjUgOGwyNzUgMjIzcTE2IDEzIDE2IDMydC0xNiAzMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTMyOyIgZD0iTTYwMCAxMTc4cTExOCAwIDIyNSAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI1dC00NS41IC0yMjV0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNSAtNDUuNXQtMjI1IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNXQ0NS41IDIyNXQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNSA0NS41ek01NjEgODU1bC0yNzUgLTIyM3EtMTYgLTEzIC0xNiAtMzJ0MTYgLTMybDI3NSAtMjIzcTE2IC0xMyAyNy41IC04IHQxMS41IDI2djEzN2gyNzVxMTAgMCAxNy41IDcuNXQ3LjUgMTcuNXYxNTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41aC0yNzV2MTM3cTAgMjEgLTExLjUgMjZ0LTI3LjUgLTh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzMzsiIGQ9Ik02MDAgMTE3OHExMTggMCAyMjUgLTQ1LjV0MTg0LjUgLTEyM3QxMjMgLTE4NC41dDQ1LjUgLTIyNXQtNDUuNSAtMjI1dC0xMjMgLTE4NC41dC0xODQuNSAtMTIzdC0yMjUgLTQ1LjV0LTIyNSA0NS41dC0xODQuNSAxMjN0LTEyMyAxODQuNXQtNDUuNSAyMjV0NDUuNSAyMjV0MTIzIDE4NC41dDE4NC41IDEyM3QyMjUgNDUuNXpNODU1IDYzOWwtMjIzIDI3NXEtMTMgMTYgLTMyIDE2dC0zMiAtMTZsLTIyMyAtMjc1cS0xMyAtMTYgLTggLTI3LjUgdDI2IC0xMS41aDEzN3YtMjc1cTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMTUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2Mjc1aDEzN3EyMSAwIDI2IDExLjV0LTggMjcuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM0OyIgZD0iTTYwMCAxMTc4cTExOCAwIDIyNSAtNDUuNXQxODQuNSAtMTIzdDEyMyAtMTg0LjV0NDUuNSAtMjI1dC00NS41IC0yMjV0LTEyMyAtMTg0LjV0LTE4NC41IC0xMjN0LTIyNSAtNDUuNXQtMjI1IDQ1LjV0LTE4NC41IDEyM3QtMTIzIDE4NC41dC00NS41IDIyNXQ0NS41IDIyNXQxMjMgMTg0LjV0MTg0LjUgMTIzdDIyNSA0NS41ek02NzUgOTAwaC0xNTBxLTEwIDAgLTE3LjUgLTcuNXQtNy41IC0xNy41di0yNzVoLTEzN3EtMjEgMCAtMjYgLTExLjUgdDggLTI3LjVsMjIzIC0yNzVxMTMgLTE2IDMyIC0xNnQzMiAxNmwyMjMgMjc1cTEzIDE2IDggMjcuNXQtMjYgMTEuNWgtMTM3djI3NXEwIDEwIC03LjUgMTcuNXQtMTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTEzNTsiIGQ9Ik02MDAgMTE3NnExMTYgMCAyMjIuNSAtNDZ0MTg0IC0xMjMuNXQxMjMuNSAtMTg0dDQ2IC0yMjIuNXQtNDYgLTIyMi41dC0xMjMuNSAtMTg0dC0xODQgLTEyMy41dC0yMjIuNSAtNDZ0LTIyMi41IDQ2dC0xODQgMTIzLjV0LTEyMy41IDE4NHQtNDYgMjIyLjV0NDYgMjIyLjV0MTIzLjUgMTg0dDE4NCAxMjMuNXQyMjIuNSA0NnpNNjI3IDExMDFxLTE1IC0xMiAtMzYuNSAtMjAuNXQtMzUuNSAtMTJ0LTQzIC04dC0zOSAtNi41IHEtMTUgLTMgLTQ1LjUgMHQtNDUuNSAtMnEtMjAgLTcgLTUxLjUgLTI2LjV0LTM0LjUgLTM0LjVxLTMgLTExIDYuNSAtMjIuNXQ4LjUgLTE4LjVxLTMgLTM0IC0yNy41IC05MXQtMjkuNSAtNzlxLTkgLTM0IDUgLTkzdDggLTg3cTAgLTkgMTcgLTQ0LjV0MTYgLTU5LjVxMTIgMCAyMyAtNXQyMy41IC0xNXQxOS41IC0xNHExNiAtOCAzMyAtMTV0NDAuNSAtMTV0MzQuNSAtMTJxMjEgLTkgNTIuNSAtMzJ0NjAgLTM4dDU3LjUgLTExIHE3IC0xNSAtMyAtMzR0LTIyLjUgLTQwdC05LjUgLTM4cTEzIC0yMSAyMyAtMzQuNXQyNy41IC0yNy41dDM2LjUgLTE4cTAgLTcgLTMuNSAtMTZ0LTMuNSAtMTR0NSAtMTdxMTA0IC0yIDIyMSAxMTJxMzAgMjkgNDYuNSA0N3QzNC41IDQ5dDIxIDYzcS0xMyA4IC0zNyA4LjV0LTM2IDcuNXEtMTUgNyAtNDkuNSAxNXQtNTEuNSAxOXEtMTggMCAtNDEgLTAuNXQtNDMgLTEuNXQtNDIgLTYuNXQtMzggLTE2LjVxLTUxIC0zNSAtNjYgLTEyIHEtNCAxIC0zLjUgMjUuNXQwLjUgMjUuNXEtNiAxMyAtMjYuNSAxNy41dC0yNC41IDYuNXExIDE1IC0wLjUgMzAuNXQtNyAyOHQtMTguNSAxMS41dC0zMSAtMjFxLTIzIC0yNSAtNDIgNHEtMTkgMjggLTggNThxNiAxNiAyMiAyMnE2IC0xIDI2IC0xLjV0MzMuNSAtNHQxOS41IC0xMy41cTcgLTEyIDE4IC0yNHQyMS41IC0yMC41dDIwIC0xNXQxNS41IC0xMC41bDUgLTNxMiAxMiA3LjUgMzAuNXQ4IDM0LjV0LTAuNSAzMnEtMyAxOCAzLjUgMjkgdDE4IDIyLjV0MTUuNSAyNC41cTYgMTQgMTAuNSAzNXQ4IDMxdDE1LjUgMjIuNXQzNCAyMi41cS02IDE4IDEwIDM2cTggMCAyNCAtMS41dDI0LjUgLTEuNXQyMCA0LjV0MjAuNSAxNS41cS0xMCAyMyAtMzEgNDIuNXQtMzcuNSAyOS41dC00OSAyN3QtNDMuNSAyM3EwIDEgMiA4dDMgMTEuNXQxLjUgMTAuNXQtMSA5LjV0LTQuNSA0LjVxMzEgLTEzIDU4LjUgLTE0LjV0MzguNSAyLjVsMTIgNXE1IDI4IC05LjUgNDZ0LTM2LjUgMjR0LTUwIDE1IHQtNDEgMjBxLTE4IC00IC0zNyAwek02MTMgOTk0cTAgLTE3IDggLTQydDE3IC00NXQ5IC0yM3EtOCAxIC0zOS41IDUuNXQtNTIuNSAxMHQtMzcgMTYuNXEzIDExIDE2IDI5LjV0MTYgMjUuNXExMCAtMTAgMTkgLTEwdDE0IDZ0MTMuNSAxNC41dDE2LjUgMTIuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM2OyIgZD0iTTc1NiAxMTU3cTE2NCA5MiAzMDYgLTlsLTI1OSAtMTM4bDE0NSAtMjMybDI1MSAxMjZxNiAtODkgLTM0IC0xNTYuNXQtMTE3IC0xMTAuNXEtNjAgLTM0IC0xMjcgLTM5LjV0LTEyNiAxNi41bC01OTYgLTU5NnEtMTUgLTE2IC0zNi41IC0xNnQtMzYuNSAxNmwtMTExIDExMHEtMTUgMTUgLTE1IDM2LjV0MTUgMzcuNWw2MDAgNTk5cS0zNCAxMDEgNS41IDIwMS41dDEzNS41IDE1NC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzc7IiBob3Jpei1hZHYteD0iMTIyMCIgZD0iTTEwMCAxMTk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNMTEwMCAxMDk2aC0yMDB2LTEwMGgyMDB2MTAwek0xMDAgNzk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMCBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djEwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTExMDAgNjk2aC01MDB2LTEwMGg1MDB2MTAwek0xMDAgMzk2aDEwMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTEwMHEwIC00MSAtMjkuNSAtNzAuNXQtNzAuNSAtMjkuNWgtMTAwMHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MTAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNMTEwMCAyOTZoLTMwMHYtMTAwaDMwMHYxMDB6ICIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxMzg7IiBkPSJNMTUwIDEyMDBoOTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41dC0xNC41IC0zNS41dC0zNS41IC0xNC41aC05MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTcwMCA1MDB2LTMwMGwtMjAwIC0yMDB2NTAwbC0zNTAgNTAwaDkwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTM5OyIgZD0iTTUwMCAxMjAwaDIwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtMTAwaDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNDAwaC01MDB2MTAwaC0yMDB2LTEwMGgtNTAwdjQwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjVoMzAwdjEwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTUwMCAxMTAwdi0xMDBoMjAwdjEwMGgtMjAwek0xMjAwIDQwMHYtMjAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC0xMDAwIHEtNDEgMCAtNzAuNSAyOS41dC0yOS41IDcwLjV2MjAwaDEyMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MDsiIGQ9Ik01MCAxMjAwaDMwMHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNWwtOTQgLTk0bDE5OSAtMTk5cTcgLTggNyAtMTh0LTcgLTE4bC0xMDYgLTEwNnEtOCAtNyAtMTggLTd0LTE4IDdsLTE5OSAxOTlsLTk0IC05NHEtMTQgLTE0IC0yNC41IC0xMHQtMTAuNSAyNXYzMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek04NTAgMTIwMGgzMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTk0IDk0IGwtMTk5IC0xOTlxLTggLTcgLTE4IC03dC0xOCA3bC0xMDYgMTA2cS03IDggLTcgMTh0NyAxOGwxOTkgMTk5bC05NCA5NHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXpNMzY0IDQ3MGwxMDYgLTEwNnE3IC04IDcgLTE4dC03IC0xOGwtMTk5IC0xOTlsOTQgLTk0cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTMwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MzAwcTAgMjEgMTAuNSAyNXQyNC41IC0xMGw5NCAtOTRsMTk5IDE5OSBxOCA3IDE4IDd0MTggLTd6TTEwNzEgMjcxbDk0IDk0cTE0IDE0IDI0LjUgMTB0MTAuNSAtMjV2LTMwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0yNSAxMC41dDEwIDI0LjVsOTQgOTRsLTE5OSAxOTlxLTcgOCAtNyAxOHQ3IDE4bDEwNiAxMDZxOCA3IDE4IDd0MTggLTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0MTsiIGQ9Ik01OTYgMTE5MnExMjEgMCAyMzEuNSAtNDcuNXQxOTAgLTEyN3QxMjcgLTE5MHQ0Ny41IC0yMzEuNXQtNDcuNSAtMjMxLjV0LTEyNyAtMTkwLjV0LTE5MCAtMTI3dC0yMzEuNSAtNDd0LTIzMS41IDQ3dC0xOTAuNSAxMjd0LTEyNyAxOTAuNXQtNDcgMjMxLjV0NDcgMjMxLjV0MTI3IDE5MHQxOTAuNSAxMjd0MjMxLjUgNDcuNXpNNTk2IDEwMTBxLTExMiAwIC0yMDcuNSAtNTUuNXQtMTUxIC0xNTF0LTU1LjUgLTIwNy41dDU1LjUgLTIwNy41IHQxNTEgLTE1MXQyMDcuNSAtNTUuNXQyMDcuNSA1NS41dDE1MSAxNTF0NTUuNSAyMDcuNXQtNTUuNSAyMDcuNXQtMTUxIDE1MXQtMjA3LjUgNTUuNXpNNDU0LjUgOTA1cTIyLjUgMCAzOC41IC0xNnQxNiAtMzguNXQtMTYgLTM5dC0zOC41IC0xNi41dC0zOC41IDE2LjV0LTE2IDM5dDE2IDM4LjV0MzguNSAxNnpNNzU0LjUgOTA1cTIyLjUgMCAzOC41IC0xNnQxNiAtMzguNXQtMTYgLTM5dC0zOCAtMTYuNXEtMTQgMCAtMjkgMTBsLTU1IC0xNDUgcTE3IC0yMyAxNyAtNTFxMCAtMzYgLTI1LjUgLTYxLjV0LTYxLjUgLTI1LjV0LTYxLjUgMjUuNXQtMjUuNSA2MS41cTAgMzIgMjAuNSA1Ni41dDUxLjUgMjkuNWwxMjIgMTI2bDEgMXEtOSAxNCAtOSAyOHEwIDIzIDE2IDM5dDM4LjUgMTZ6TTM0NS41IDcwOXEyMi41IDAgMzguNSAtMTZ0MTYgLTM4LjV0LTE2IC0zOC41dC0zOC41IC0xNnQtMzguNSAxNnQtMTYgMzguNXQxNiAzOC41dDM4LjUgMTZ6TTg1NC41IDcwOXEyMi41IDAgMzguNSAtMTYgdDE2IC0zOC41dC0xNiAtMzguNXQtMzguNSAtMTZ0LTM4LjUgMTZ0LTE2IDM4LjV0MTYgMzguNXQzOC41IDE2eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDI7IiBkPSJNNTQ2IDE3M2w0NjkgNDcwcTkxIDkxIDk5IDE5MnE3IDk4IC01MiAxNzUuNXQtMTU0IDk0LjVxLTIyIDQgLTQ3IDRxLTM0IDAgLTY2LjUgLTEwdC01Ni41IC0yM3QtNTUuNSAtMzh0LTQ4IC00MS41dC00OC41IC00Ny41cS0zNzYgLTM3NSAtMzkxIC0zOTBxLTMwIC0yNyAtNDUgLTQxLjV0LTM3LjUgLTQxdC0zMiAtNDYuNXQtMTYgLTQ3LjV0LTEuNSAtNTYuNXE5IC02MiA1My41IC05NXQ5OS41IC0zM3E3NCAwIDEyNSA1MWw1NDggNTQ4IHEzNiAzNiAyMCA3NXEtNyAxNiAtMjEuNSAyNnQtMzIuNSAxMHEtMjYgMCAtNTAgLTIzcS0xMyAtMTIgLTM5IC0zOGwtMzQxIC0zMzhxLTE1IC0xNSAtMzUuNSAtMTUuNXQtMzQuNSAxMy41dC0xNCAzNC41dDE0IDM0LjVxMzI3IDMzMyAzNjEgMzY3cTM1IDM1IDY3LjUgNTEuNXQ3OC41IDE2LjVxMTQgMCAyOSAtMXE0NCAtOCA3NC41IC0zNS41dDQzLjUgLTY4LjVxMTQgLTQ3IDIgLTk2LjV0LTQ3IC04NC41cS0xMiAtMTEgLTMyIC0zMiB0LTc5LjUgLTgxdC0xMTQuNSAtMTE1dC0xMjQuNSAtMTIzLjV0LTEyMyAtMTE5LjV0LTk2LjUgLTg5dC01NyAtNDVxLTU2IC0yNyAtMTIwIC0yN3EtNzAgMCAtMTI5IDMydC05MyA4OXEtNDggNzggLTM1IDE3M3Q4MSAxNjNsNTExIDUxMXE3MSA3MiAxMTEgOTZxOTEgNTUgMTk4IDU1cTgwIDAgMTUyIC0zM3E3OCAtMzYgMTI5LjUgLTEwM3Q2Ni41IC0xNTRxMTcgLTkzIC0xMSAtMTgzLjV0LTk0IC0xNTYuNWwtNDgyIC00NzYgcS0xNSAtMTUgLTM2IC0xNnQtMzcgMTR0LTE3LjUgMzR0MTQuNSAzNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTQzOyIgZD0iTTY0OSA5NDlxNDggNjggMTA5LjUgMTA0dDEyMS41IDM4LjV0MTE4LjUgLTIwdDEwMi41IC02NHQ3MSAtMTAwLjV0MjcgLTEyM3EwIC01NyAtMzMuNSAtMTE3LjV0LTk0IC0xMjQuNXQtMTI2LjUgLTEyNy41dC0xNTAgLTE1Mi41dC0xNDYgLTE3NHEtNjIgODUgLTE0NS41IDE3NHQtMTUwIDE1Mi41dC0xMjYuNSAxMjcuNXQtOTMuNSAxMjQuNXQtMzMuNSAxMTcuNXEwIDY0IDI4IDEyM3Q3MyAxMDAuNXQxMDQgNjR0MTE5IDIwIHQxMjAuNSAtMzguNXQxMDQuNSAtMTA0ek04OTYgOTcycS0zMyAwIC02NC41IC0xOXQtNTYuNSAtNDZ0LTQ3LjUgLTUzLjV0LTQzLjUgLTQ1LjV0LTM3LjUgLTE5dC0zNiAxOXQtNDAgNDUuNXQtNDMgNTMuNXQtNTQgNDZ0LTY1LjUgMTlxLTY3IDAgLTEyMi41IC01NS41dC01NS41IC0xMzIuNXEwIC0yMyAxMy41IC01MXQ0NiAtNjV0NTcuNSAtNjN0NzYgLTc1bDIyIC0yMnExNSAtMTQgNDQgLTQ0dDUwLjUgLTUxdDQ2IC00NHQ0MSAtMzV0MjMgLTEyIHQyMy41IDEydDQyLjUgMzZ0NDYgNDR0NTIuNSA1MnQ0NCA0M3E0IDQgMTIgMTNxNDMgNDEgNjMuNSA2MnQ1MiA1NXQ0NiA1NXQyNiA0NnQxMS41IDQ0cTAgNzkgLTUzIDEzMy41dC0xMjAgNTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTQ0OyIgZD0iTTc3Ni41IDEyMTRxOTMuNSAwIDE1OS41IC02NmwxNDEgLTE0MXE2NiAtNjYgNjYgLTE2MHEwIC00MiAtMjggLTk1LjV0LTYyIC04Ny41bC0yOSAtMjlxLTMxIDUzIC03NyA5OWwtMTggMThsOTUgOTVsLTI0NyAyNDhsLTM4OSAtMzg5bDIxMiAtMjEybC0xMDUgLTEwNmwtMTkgMThsLTE0MSAxNDFxLTY2IDY2IC02NiAxNTl0NjYgMTU5bDI4MyAyODNxNjUgNjYgMTU4LjUgNjZ6TTYwMCA3MDZsMTA1IDEwNXExMCAtOCAxOSAtMTdsMTQxIC0xNDEgcTY2IC02NiA2NiAtMTU5dC02NiAtMTU5bC0yODMgLTI4M3EtNjYgLTY2IC0xNTkgLTY2dC0xNTkgNjZsLTE0MSAxNDFxLTY2IDY2IC02NiAxNTkuNXQ2NiAxNTkuNWw1NSA1NXEyOSAtNTUgNzUgLTEwMmwxOCAtMTdsLTk1IC05NWwyNDcgLTI0OGwzODkgMzg5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDU7IiBkPSJNNjAzIDEyMDBxODUgMCAxNjIgLTE1dDEyNyAtMzh0NzkgLTQ4dDI5IC00NnYtOTUzcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC02MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djk1M3EwIDIxIDMwIDQ2LjV0ODEgNDh0MTI5IDM3LjV0MTYzIDE1ek0zMDAgMTAwMHYtNzAwaDYwMHY3MDBoLTYwMHpNNjAwIDI1NHEtNDMgMCAtNzMuNSAtMzAuNXQtMzAuNSAtNzMuNXQzMC41IC03My41dDczLjUgLTMwLjV0NzMuNSAzMC41IHQzMC41IDczLjV0LTMwLjUgNzMuNXQtNzMuNSAzMC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDY7IiBkPSJNOTAyIDExODVsMjgzIC0yODJxMTUgLTE1IDE1IC0zNnQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNXQtMzUgMTVsLTM2IDM1bC0yNzkgLTI2N3YtMzAwbC0yMTIgMjEwbC0zMDggLTMwN2wtMjgwIC0yMDNsMjAzIDI4MGwzMDcgMzA4bC0yMTAgMjEyaDMwMGwyNjcgMjc5bC0zNSAzNnEtMTUgMTQgLTE1IDM1dDE0LjUgMzUuNXQzNS41IDE0LjV0MzUgLTE1eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNDg7IiBkPSJNNzAwIDEyNDh2LTc4cTM4IC01IDcyLjUgLTE0LjV0NzUuNSAtMzEuNXQ3MSAtNTMuNXQ1MiAtODR0MjQgLTExOC41aC0xNTlxLTQgMzYgLTEwLjUgNTl0LTIxIDQ1dC00MCAzNS41dC02NC41IDIwLjV2LTMwN2w2NCAtMTNxMzQgLTcgNjQgLTE2LjV0NzAgLTMydDY3LjUgLTUyLjV0NDcuNSAtODB0MjAgLTExMnEwIC0xMzkgLTg5IC0yMjR0LTI0NCAtOTd2LTc3aC0xMDB2NzlxLTE1MCAxNiAtMjM3IDEwM3EtNDAgNDAgLTUyLjUgOTMuNSB0LTE1LjUgMTM5LjVoMTM5cTUgLTc3IDQ4LjUgLTEyNnQxMTcuNSAtNjV2MzM1bC0yNyA4cS00NiAxNCAtNzkgMjYuNXQtNzIgMzZ0LTYzIDUydC00MCA3Mi41dC0xNiA5OHEwIDcwIDI1IDEyNnQ2Ny41IDkydDk0LjUgNTd0MTEwIDI3djc3aDEwMHpNNjAwIDc1NHYyNzRxLTI5IC00IC01MCAtMTF0LTQyIC0yMS41dC0zMS41IC00MS41dC0xMC41IC02NXEwIC0yOSA3IC01MC41dDE2LjUgLTM0dDI4LjUgLTIyLjV0MzEuNSAtMTR0MzcuNSAtMTAgcTkgLTMgMTMgLTR6TTcwMCA1NDd2LTMxMHEyMiAyIDQyLjUgNi41dDQ1IDE1LjV0NDEuNSAyN3QyOSA0MnQxMiA1OS41dC0xMi41IDU5LjV0LTM4IDQ0LjV0LTUzIDMxdC02Ni41IDI0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE0OTsiIGQ9Ik01NjEgMTE5N3E4NCAwIDE2MC41IC00MHQxMjMuNSAtMTA5LjV0NDcgLTE0Ny41aC0xNTNxMCA0MCAtMTkuNSA3MS41dC00OS41IDQ4LjV0LTU5LjUgMjZ0LTU1LjUgOXEtMzcgMCAtNzkgLTE0LjV0LTYyIC0zNS41cS00MSAtNDQgLTQxIC0xMDFxMCAtMjYgMTMuNSAtNjN0MjYuNSAtNjF0MzcgLTY2cTYgLTkgOSAtMTRoMjQxdi0xMDBoLTE5N3E4IC01MCAtMi41IC0xMTV0LTMxLjUgLTk1cS00NSAtNjIgLTk5IC0xMTIgcTM0IDEwIDgzIDE3LjV0NzEgNy41cTMyIDEgMTAyIC0xNnQxMDQgLTE3cTgzIDAgMTM2IDMwbDUwIC0xNDdxLTMxIC0xOSAtNTggLTMwLjV0LTU1IC0xNS41dC00MiAtNC41dC00NiAtMC41cS0yMyAwIC03NiAxN3QtMTExIDMyLjV0LTk2IDExLjVxLTM5IC0zIC04MiAtMTZ0LTY3IC0yNWwtMjMgLTExbC01NSAxNDVxNCAzIDE2IDExdDE1LjUgMTAuNXQxMyA5dDE1LjUgMTJ0MTQuNSAxNHQxNy41IDE4LjVxNDggNTUgNTQgMTI2LjUgdC0zMCAxNDIuNWgtMjIxdjEwMGgxNjZxLTIzIDQ3IC00NCAxMDRxLTcgMjAgLTEyIDQxLjV0LTYgNTUuNXQ2IDY2LjV0MjkuNSA3MC41dDU4LjUgNzFxOTcgODggMjYzIDg4eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTA7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTkzNSAxMTg0bDIzMCAtMjQ5cTE0IC0xNCAxMCAtMjQuNXQtMjUgLTEwLjVoLTE1MHYtOTAwaC0yMDB2OTAwaC0xNTBxLTIxIDAgLTI1IDEwLjV0MTAgMjQuNWwyMzAgMjQ5cTE0IDE1IDM1IDE1dDM1IC0xNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTUxOyIgZD0iTTEwMDAgNzAwaC0xMDB2MTAwaC0xMDB2LTEwMGgtMTAwdjUwMGgzMDB2LTUwMHpNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTgwMSAxMTAwdi0yMDBoMTAwdjIwMGgtMTAwek0xMDAwIDM1MGwtMjAwIC0yNTBoMjAwdi0xMDBoLTMwMHYxNTBsMjAwIDI1MGgtMjAwdjEwMGgzMDB2LTE1MHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1MjsiIGQ9Ik00MDAgMzAwaDE1MHEyMSAwIDI1IC0xMXQtMTAgLTI1bC0yMzAgLTI1MHEtMTQgLTE1IC0zNSAtMTV0LTM1IDE1bC0yMzAgMjUwcS0xNCAxNCAtMTAgMjV0MjUgMTFoMTUwdjkwMGgyMDB2LTkwMHpNMTAwMCAxMDUwbC0yMDAgLTI1MGgyMDB2LTEwMGgtMzAwdjE1MGwyMDAgMjUwaC0yMDB2MTAwaDMwMHYtMTUwek0xMDAwIDBoLTEwMHYxMDBoLTEwMHYtMTAwaC0xMDB2NTAwaDMwMHYtNTAwek04MDEgNDAwdi0yMDBoMTAwdjIwMGgtMTAweiAiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTUzOyIgZD0iTTQwMCAzMDBoMTUwcTIxIDAgMjUgLTExdC0xMCAtMjVsLTIzMCAtMjUwcS0xNCAtMTUgLTM1IC0xNXQtMzUgMTVsLTIzMCAyNTBxLTE0IDE0IC0xMCAyNXQyNSAxMWgxNTB2OTAwaDIwMHYtOTAwek0xMDAwIDcwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNMTEwMCAwaC0xMDB2MTAwaC0yMDB2NDAwaDMwMHYtNTAwek05MDEgNDAwdi0yMDBoMTAwdjIwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTQ7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTExMDAgNzAwaC0xMDB2MTAwaC0yMDB2NDAwaDMwMHYtNTAwek05MDEgMTEwMHYtMjAwaDEwMHYyMDBoLTEwMHpNMTAwMCAwaC0xMDB2NDAwaC0xMDB2MTAwaDIwMHYtNTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTU7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTkwMCAxMDAwaC0yMDB2MjAwaDIwMHYtMjAwek0xMDAwIDcwMGgtMzAwdjIwMGgzMDB2LTIwMHpNMTEwMCA0MDBoLTQwMHYyMDBoNDAwdi0yMDB6TTEyMDAgMTAwaC01MDB2MjAwaDUwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTY7IiBkPSJNNDAwIDMwMGgxNTBxMjEgMCAyNSAtMTF0LTEwIC0yNWwtMjMwIC0yNTBxLTE0IC0xNSAtMzUgLTE1dC0zNSAxNWwtMjMwIDI1MHEtMTQgMTQgLTEwIDI1dDI1IDExaDE1MHY5MDBoMjAwdi05MDB6TTEyMDAgMTAwMGgtNTAwdjIwMGg1MDB2LTIwMHpNMTEwMCA3MDBoLTQwMHYyMDBoNDAwdi0yMDB6TTEwMDAgNDAwaC0zMDB2MjAwaDMwMHYtMjAwek05MDAgMTAwaC0yMDB2MjAwaDIwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTc7IiBkPSJNMzUwIDExMDBoNDAwcTE2MiAwIDI1NiAtOTMuNXQ5NCAtMjU2LjV2LTQwMHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNDAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY0MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41ek04MDAgOTAwaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNSB2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNTg7IiBkPSJNMzUwIDExMDBoNDAwcTE2NSAwIDI1Ny41IC05Mi41dDkyLjUgLTI1Ny41di00MDBxMCAtMTY1IC05Mi41IC0yNTcuNXQtMjU3LjUgLTkyLjVoLTQwMHEtMTYzIDAgLTI1Ni41IDkyLjV0LTkzLjUgMjU3LjV2NDAwcTAgMTYzIDk0IDI1Ni41dDI1NiA5My41ek04MDAgOTAwaC01MDBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNTAwcTQxIDAgNzAuNSAyOS41dDI5LjUgNzAuNSB2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41ek00NDAgNzcwbDI1MyAtMTkwcTE3IC0xMiAxNyAtMzB0LTE3IC0zMGwtMjUzIC0xOTBxLTE2IC0xMiAtMjggLTYuNXQtMTIgMjYuNXY0MDBxMCAyMSAxMiAyNi41dDI4IC02LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE1OTsiIGQ9Ik0zNTAgMTEwMGg0MDBxMTYzIDAgMjU2LjUgLTk0dDkzLjUgLTI1NnYtNDAwcTAgLTE2NSAtOTIuNSAtMjU3LjV0LTI1Ny41IC05Mi41aC00MDBxLTE2NSAwIC0yNTcuNSA5Mi41dC05Mi41IDI1Ny41djQwMHEwIDE2MyA5Mi41IDI1Ni41dDI1Ny41IDkzLjV6TTgwMCA5MDBoLTUwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNTAwcTAgLTQxIDI5LjUgLTcwLjV0NzAuNSAtMjkuNWg1MDBxNDEgMCA3MC41IDI5LjV0MjkuNSA3MC41IHY1MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjV6TTM1MCA3MDBoNDAwcTIxIDAgMjYuNSAtMTJ0LTYuNSAtMjhsLTE5MCAtMjUzcS0xMiAtMTcgLTMwIC0xN3QtMzAgMTdsLTE5MCAyNTNxLTEyIDE2IC02LjUgMjh0MjYuNSAxMnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYwOyIgZD0iTTM1MCAxMTAwaDQwMHExNjUgMCAyNTcuNSAtOTIuNXQ5Mi41IC0yNTcuNXYtNDAwcTAgLTE2MyAtOTIuNSAtMjU2LjV0LTI1Ny41IC05My41aC00MDBxLTE2MyAwIC0yNTYuNSA5NHQtOTMuNSAyNTZ2NDAwcTAgMTY1IDkyLjUgMjU3LjV0MjU3LjUgOTIuNXpNODAwIDkwMGgtNTAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di01MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjUgdjUwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNNTgwIDY5M2wxOTAgLTI1M3ExMiAtMTYgNi41IC0yOHQtMjYuNSAtMTJoLTQwMHEtMjEgMCAtMjYuNSAxMnQ2LjUgMjhsMTkwIDI1M3ExMiAxNyAzMCAxN3QzMCAtMTd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2MTsiIGQ9Ik01NTAgMTEwMGg0MDBxMTY1IDAgMjU3LjUgLTkyLjV0OTIuNSAtMjU3LjV2LTQwMHEwIC0xNjUgLTkyLjUgLTI1Ny41dC0yNTcuNSAtOTIuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ1MHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2NTAwcTAgNDEgLTI5LjUgNzAuNXQtNzAuNSAyOS41aC00NTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zMzggODY3bDMyNCAtMjg0cTE2IC0xNCAxNiAtMzN0LTE2IC0zM2wtMzI0IC0yODRxLTE2IC0xNCAtMjcgLTl0LTExIDI2djE1MGgtMjUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDI1MHYxNTBxMCAyMSAxMSAyNnQyNyAtOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYyOyIgZD0iTTc5MyAxMTgybDkgLTlxOCAtMTAgNSAtMjdxLTMgLTExIC03OSAtMjI1LjV0LTc4IC0yMjEuNWwzMDAgMXEyNCAwIDMyLjUgLTE3LjV0LTUuNSAtMzUuNXEtMSAwIC0xMzMuNSAtMTU1dC0yNjcgLTMxMi41dC0xMzguNSAtMTYyLjVxLTEyIC0xNSAtMjYgLTE1aC05bC05IDhxLTkgMTEgLTQgMzJxMiA5IDQyIDEyMy41dDc5IDIyNC41bDM5IDExMGgtMzAycS0yMyAwIC0zMSAxOXEtMTAgMjEgNiA0MXE3NSA4NiAyMDkuNSAyMzcuNSB0MjI4IDI1N3Q5OC41IDExMS41cTkgMTYgMjUgMTZoOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTYzOyIgZD0iTTM1MCAxMTAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00NTBxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMHEwIC00MSAyOS41IC03MC41dDcwLjUgLTI5LjVoNDUwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMHEtMTY1IDAgLTI1Ny41IDkyLjV0LTkyLjUgMjU3LjV2NDAwIHEwIDE2NSA5Mi41IDI1Ny41dDI1Ny41IDkyLjV6TTkzOCA4NjdsMzI0IC0yODRxMTYgLTE0IDE2IC0zM3QtMTYgLTMzbC0zMjQgLTI4NHEtMTYgLTE0IC0yNyAtOXQtMTEgMjZ2MTUwaC0yNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djIwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMjUwdjE1MHEwIDIxIDExIDI2dDI3IC05eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjQ7IiBkPSJNNzUwIDEyMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTEwLjUgLTI1dC0yNC41IDEwbC0xMDkgMTA5bC0zMTIgLTMxMnEtMTUgLTE1IC0zNS41IC0xNXQtMzUuNSAxNWwtMTQxIDE0MXEtMTUgMTUgLTE1IDM1LjV0MTUgMzUuNWwzMTIgMzEybC0xMDkgMTA5cS0xNCAxNCAtMTAgMjQuNXQyNSAxMC41ek00NTYgOTAwaC0xNTZxLTQxIDAgLTcwLjUgLTI5LjV0LTI5LjUgLTcwLjV2LTUwMCBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDUwMHE0MSAwIDcwLjUgMjkuNXQyOS41IDcwLjV2MTQ4bDIwMCAyMDB2LTI5OHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNDAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY0MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41aDMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTY1OyIgZD0iTTYwMCAxMTg2cTExOSAwIDIyNy41IC00Ni41dDE4NyAtMTI1dDEyNSAtMTg3dDQ2LjUgLTIyNy41dC00Ni41IC0yMjcuNXQtMTI1IC0xODd0LTE4NyAtMTI1dC0yMjcuNSAtNDYuNXQtMjI3LjUgNDYuNXQtMTg3IDEyNXQtMTI1IDE4N3QtNDYuNSAyMjcuNXQ0Ni41IDIyNy41dDEyNSAxODd0MTg3IDEyNXQyMjcuNSA0Ni41ek02MDAgMTAyMnEtMTE1IDAgLTIxMiAtNTYuNXQtMTUzLjUgLTE1My41dC01Ni41IC0yMTJ0NTYuNSAtMjEyIHQxNTMuNSAtMTUzLjV0MjEyIC01Ni41dDIxMiA1Ni41dDE1My41IDE1My41dDU2LjUgMjEydC01Ni41IDIxMnQtMTUzLjUgMTUzLjV0LTIxMiA1Ni41ek02MDAgNzk0cTgwIDAgMTM3IC01N3Q1NyAtMTM3dC01NyAtMTM3dC0xMzcgLTU3dC0xMzcgNTd0LTU3IDEzN3Q1NyAxMzd0MTM3IDU3eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjY7IiBkPSJNNDUwIDEyMDBoMjAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0zNTBoMjQ1cTIwIDAgMjUgLTExdC05IC0yNmwtMzgzIC00MjZxLTE0IC0xNSAtMzMuNSAtMTV0LTMyLjUgMTVsLTM3OSA0MjZxLTEzIDE1IC04LjUgMjZ0MjUuNSAxMWgyNTB2MzUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTI1MGgtMTEwMHYyNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiBNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE2NzsiIGQ9Ik01ODMgMTE4MmwzNzggLTQzNXExNCAtMTUgOSAtMzF0LTI2IC0xNmgtMjQ0di0yNTBxMCAtMjAgLTE3IC0zNXQtMzkgLTE1aC0yMDBxLTIwIDAgLTMyIDE0LjV0LTEyIDM1LjV2MjUwaC0yNTBxLTIwIDAgLTI1LjUgMTYuNXQ4LjUgMzEuNWwzODMgNDMxcTE0IDE2IDMzLjUgMTd0MzMuNSAtMTR6TTUwIDMwMGgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXogTTkwMCAyMDB2LTUwaDEwMHY1MGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNjg7IiBkPSJNMzk2IDcyM2wzNjkgMzY5cTcgNyAxNy41IDd0MTcuNSAtN2wxMzkgLTEzOXE3IC04IDcgLTE4LjV0LTcgLTE3LjVsLTUyNSAtNTI1cS03IC04IC0xNy41IC04dC0xNy41IDhsLTI5MiAyOTFxLTcgOCAtNyAxOHQ3IDE4bDEzOSAxMzlxOCA3IDE4LjUgN3QxNy41IC03ek01MCAzMDBoMTAwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjUwaC0xMTAwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTkwMCAyMDB2LTUwaDEwMHY1MCBoLTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTY5OyIgZD0iTTEzNSAxMDIzbDE0MiAxNDJxMTQgMTQgMzUgMTR0MzUgLTE0bDc3IC03N2wtMjEyIC0yMTJsLTc3IDc2cS0xNCAxNSAtMTQgMzZ0MTQgMzV6TTY1NSA4NTVsMjEwIDIxMHExNCAxNCAyNC41IDEwdDEwLjUgLTI1bC0yIC01OTlxLTEgLTIwIC0xNS41IC0zNXQtMzUuNSAtMTVsLTU5NyAtMXEtMjEgMCAtMjUgMTAuNXQxMCAyNC41bDIwOCAyMDhsLTE1NCAxNTVsMjEyIDIxMnpNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjUgdi0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3MDsiIGQ9Ik0zNTAgMTIwMGw1OTkgLTJxMjAgLTEgMzUgLTE1LjV0MTUgLTM1LjVsMSAtNTk3cTAgLTIxIC0xMC41IC0yNXQtMjQuNSAxMGwtMjA4IDIwOGwtMTU1IC0xNTRsLTIxMiAyMTJsMTU1IDE1NGwtMjEwIDIxMHEtMTQgMTQgLTEwIDI0LjV0MjUgMTAuNXpNNTI0IDUxMmwtNzYgLTc3cS0xNSAtMTQgLTM2IC0xNHQtMzUgMTRsLTE0MiAxNDJxLTE0IDE0IC0xNCAzNXQxNCAzNWw3NyA3N3pNNTAgMzAwaDEwMDBxMjEgMCAzNS41IC0xNC41IHQxNC41IC0zNS41di0yNTBoLTExMDB2MjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNOTAwIDIwMHYtNTBoMTAwdjUwaC0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3MTsiIGQ9Ik0xMjAwIDEwM2wtNDgzIDI3NmwtMzE0IC0zOTl2NDIzaC0zOTlsMTE5NiA3OTZ2LTEwOTZ6TTQ4MyA0MjR2LTIzMGw2ODMgOTUzeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzI7IiBkPSJNMTEwMCAxMDAwdi04NTBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTE1MHY0MDBoLTcwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDB6TTcwMCAxMDAwaC0xMDB2MjAwaDEwMHYtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzM7IiBkPSJNMTEwMCAxMDAwbC0yIC0xNDlsLTI5OSAtMjk5bC05NSA5NXEtOSA5IC0yMS41IDl0LTIxLjUgLTlsLTE0OSAtMTQ3aC0zMTJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwek03MDAgMTAwMGgtMTAwdjIwMGgxMDB2LTIwMHpNMTEzMiA2MzhsMTA2IC0xMDZxNyAtNyA3IC0xNy41dC03IC0xNy41bC00MjAgLTQyMXEtOCAtNyAtMTggLTcgdC0xOCA3bC0yMDIgMjAzcS04IDcgLTggMTcuNXQ4IDE3LjVsMTA2IDEwNnE3IDggMTcuNSA4dDE3LjUgLThsNzkgLTc5bDI5NyAyOTdxNyA3IDE3LjUgN3QxNy41IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzQ7IiBkPSJNMTEwMCAxMDAwdi0yNjlsLTEwMyAtMTAzbC0xMzQgMTM0cS0xNSAxNSAtMzMuNSAxNi41dC0zNC41IC0xMi41bC0yNjYgLTI2NmgtMzI5di00MDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwMHEwIDIwIDE0LjUgMzV0MzUuNSAxNWgyNTB2LTMwMGg1MDB2MzAwaDEwMHpNNzAwIDEwMDBoLTEwMHYyMDBoMTAwdi0yMDB6TTEyMDIgNTcybDcwIC03MHExNSAtMTUgMTUgLTM1LjV0LTE1IC0zNS41bC0xMzEgLTEzMSBsMTMxIC0xMzFxMTUgLTE1IDE1IC0zNS41dC0xNSAtMzUuNWwtNzAgLTcwcS0xNSAtMTUgLTM1LjUgLTE1dC0zNS41IDE1bC0xMzEgMTMxbC0xMzEgLTEzMXEtMTUgLTE1IC0zNS41IC0xNXQtMzUuNSAxNWwtNzAgNzBxLTE1IDE1IC0xNSAzNS41dDE1IDM1LjVsMTMxIDEzMWwtMTMxIDEzMXEtMTUgMTUgLTE1IDM1LjV0MTUgMzUuNWw3MCA3MHExNSAxNSAzNS41IDE1dDM1LjUgLTE1bDEzMSAtMTMxbDEzMSAxMzFxMTUgMTUgMzUuNSAxNSB0MzUuNSAtMTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NTsiIGQ9Ik0xMTAwIDEwMDB2LTMwMGgtMzUwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di0xNTBoLTUwMHYtNDAwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMDBxMCAyMCAxNC41IDM1dDM1LjUgMTVoMjUwdi0zMDBoNTAwdjMwMGgxMDB6TTcwMCAxMDAwaC0xMDB2MjAwaDEwMHYtMjAwek04NTAgNjAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMjUwaDE1MHEyMSAwIDI1IC0xMC41dC0xMCAtMjQuNSBsLTIzMCAtMjMwcS0xNCAtMTQgLTM1IC0xNHQtMzUgMTRsLTIzMCAyMzBxLTE0IDE0IC0xMCAyNC41dDI1IDEwLjVoMTUwdjI1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NjsiIGQ9Ik0xMTAwIDEwMDB2LTQwMGwtMTY1IDE2NXEtMTQgMTUgLTM1IDE1dC0zNSAtMTVsLTI2MyAtMjY1aC00MDJ2LTQwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDAwcTAgMjAgMTQuNSAzNXQzNS41IDE1aDI1MHYtMzAwaDUwMHYzMDBoMTAwek03MDAgMTAwMGgtMTAwdjIwMGgxMDB2LTIwMHpNOTM1IDU2NWwyMzAgLTIyOXExNCAtMTUgMTAgLTI1LjV0LTI1IC0xMC41aC0xNTB2LTI1MHEwIC0yMCAtMTQuNSAtMzUgdC0zNS41IC0xNWgtMTAwcS0yMSAwIC0zNS41IDE1dC0xNC41IDM1djI1MGgtMTUwcS0yMSAwIC0yNSAxMC41dDEwIDI1LjVsMjMwIDIyOXExNCAxNSAzNSAxNXQzNSAtMTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE3NzsiIGQ9Ik01MCAxMTAwaDExMDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTE1MGgtMTIwMHYxNTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMjAwIDgwMHYtNTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1NTBoMTIwMHpNMTAwIDUwMHYtMjAwaDQwMHYyMDBoLTQwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTc4OyIgZD0iTTkzNSAxMTY1bDI0OCAtMjMwcTE0IC0xNCAxNCAtMzV0LTE0IC0zNWwtMjQ4IC0yMzBxLTE0IC0xNCAtMjQuNSAtMTB0LTEwLjUgMjV2MTUwaC00MDB2MjAwaDQwMHYxNTBxMCAyMSAxMC41IDI1dDI0LjUgLTEwek0yMDAgODAwaC01MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHYtMjAwek00MDAgODAwaC0xMDB2MjAwaDEwMHYtMjAwek0xOCA0MzVsMjQ3IDIzMCBxMTQgMTQgMjQuNSAxMHQxMC41IC0yNXYtMTUwaDQwMHYtMjAwaC00MDB2LTE1MHEwIC0yMSAtMTAuNSAtMjV0LTI0LjUgMTBsLTI0NyAyMzBxLTE1IDE0IC0xNSAzNXQxNSAzNXpNOTAwIDMwMGgtMTAwdjIwMGgxMDB2LTIwMHpNMTAwMCA1MDBoNTFxMjAgMCAzNC41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzQuNSAtMTQuNWgtNTF2MjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxNzk7IiBkPSJNODYyIDEwNzNsMjc2IDExNnEyNSAxOCA0My41IDh0MTguNSAtNDF2LTExMDZxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2Mzk3cS00IDEgLTExIDV0LTI0IDE3LjV0LTMwIDI5dC0yNCA0MnQtMTEgNTYuNXYzNTlxMCAzMSAxOC41IDY1dDQzLjUgNTJ6TTU1MCAxMjAwcTIyIDAgMzQuNSAtMTIuNXQxNC41IC0yNC41bDEgLTEzdi00NTBxMCAtMjggLTEwLjUgLTU5LjUgdC0yNSAtNTZ0LTI5IC00NXQtMjUuNSAtMzEuNWwtMTAgLTExdi00NDdxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTIwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDQ3cS00IDQgLTExIDExLjV0LTI0IDMwLjV0LTMwIDQ2dC0yNCA1NXQtMTEgNjB2NDUwcTAgMiAwLjUgNS41dDQgMTJ0OC41IDE1dDE0LjUgMTJ0MjIuNSA1LjVxMjAgMCAzMi41IC0xMi41dDE0LjUgLTI0LjVsMyAtMTN2LTM1MGgxMDB2MzUwdjUuNXQyLjUgMTIgdDcgMTV0MTUgMTJ0MjUuNSA1LjVxMjMgMCAzNS41IC0xMi41dDEzLjUgLTI0LjVsMSAtMTN2LTM1MGgxMDB2MzUwcTAgMiAwLjUgNS41dDMgMTJ0NyAxNXQxNSAxMnQyNC41IDUuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTgwOyIgZD0iTTEyMDAgMTEwMHYtNTZxLTQgMCAtMTEgLTAuNXQtMjQgLTN0LTMwIC03LjV0LTI0IC0xNXQtMTEgLTI0di04ODhxMCAtMjIgMjUgLTM0LjV0NTAgLTEzLjVsMjUgLTJ2LTU2aC00MDB2NTZxNzUgMCA4Ny41IDYuNXQxMi41IDQzLjV2Mzk0aC01MDB2LTM5NHEwIC0zNyAxMi41IC00My41dDg3LjUgLTYuNXYtNTZoLTQwMHY1NnE0IDAgMTEgMC41dDI0IDN0MzAgNy41dDI0IDE1dDExIDI0djg4OHEwIDIyIC0yNSAzNC41dC01MCAxMy41IGwtMjUgMnY1Nmg0MDB2LTU2cS03NSAwIC04Ny41IC02LjV0LTEyLjUgLTQzLjV2LTM5NGg1MDB2Mzk0cTAgMzcgLTEyLjUgNDMuNXQtODcuNSA2LjV2NTZoNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODE7IiBkPSJNNjc1IDEwMDBoMzc1cTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoLTEwNWwtMjk1IC05OHY5OGwtMjAwIDIwMGgtNDAwbDEwMCAxMDBoMzc1ek0xMDAgOTAwaDMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNTAwcTAgLTQxIC0yOS41IC03MC41dC03MC41IC0yOS41aC0zMDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djUwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTEwMCA4MDB2LTIwMGgzMDB2MjAwIGgtMzAwek0xMTAwIDUzNWwtNDAwIC0xMzN2MTYzbDQwMCAxMzN2LTE2M3pNMTAwIDUwMHYtMjAwaDMwMHYyMDBoLTMwMHpNMTEwMCAzOTh2LTI0OHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzc1bC0xMDAgLTEwMGgtMzc1bC0xMDAgMTAwaDQwMGwyMDAgMjAwaDEwNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTgyOyIgZD0iTTE3IDEwMDdsMTYyIDE2MnExNyAxNyA0MCAxNHQzNyAtMjJsMTM5IC0xOTRxMTQgLTIwIDExIC00NC41dC0yMCAtNDEuNWwtMTE5IC0xMThxMTAyIC0xNDIgMjI4IC0yNjh0MjY3IC0yMjdsMTE5IDExOHExNyAxNyA0Mi41IDE5dDQ0LjUgLTEybDE5MiAtMTM2cTE5IC0xNCAyMi41IC0zNy41dC0xMy41IC00MC41bC0xNjMgLTE2MnEtMyAtMSAtOS41IC0xdC0yOS41IDJ0LTQ3LjUgNnQtNjIuNSAxNC41dC03Ny41IDI2LjV0LTkwIDQyLjUgdC0xMDEuNSA2MHQtMTExIDgzdC0xMTkgMTA4LjVxLTc0IDc0IC0xMzMuNSAxNTAuNXQtOTQuNSAxMzguNXQtNjAgMTE5LjV0LTM0LjUgMTAwdC0xNSA3NC41dC00LjUgNDh6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4MzsiIGQ9Ik02MDAgMTEwMHE5MiAwIDE3NSAtMTAuNXQxNDEuNSAtMjd0MTA4LjUgLTM2LjV0ODEuNSAtNDB0NTMuNSAtMzd0MzEgLTI3bDkgLTEwdi0yMDBxMCAtMjEgLTE0LjUgLTMzdC0zNC41IC05bC0yMDIgMzRxLTIwIDMgLTM0LjUgMjB0LTE0LjUgMzh2MTQ2cS0xNDEgMjQgLTMwMCAyNHQtMzAwIC0yNHYtMTQ2cTAgLTIxIC0xNC41IC0zOHQtMzQuNSAtMjBsLTIwMiAtMzRxLTIwIC0zIC0zNC41IDl0LTE0LjUgMzN2MjAwcTMgNCA5LjUgMTAuNSB0MzEgMjZ0NTQgMzcuNXQ4MC41IDM5LjV0MTA5IDM3LjV0MTQxIDI2LjV0MTc1IDEwLjV6TTYwMCA3OTVxNTYgMCA5NyAtOS41dDYwIC0yMy41dDMwIC0yOHQxMiAtMjRsMSAtMTB2LTUwbDM2NSAtMzAzcTE0IC0xNSAyNC41IC00MHQxMC41IC00NXYtMjEycTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYyMTJxMCAyMCAxMC41IDQ1dDI0LjUgNDBsMzY1IDMwM3Y1MCBxMCA0IDEgMTAuNXQxMiAyM3QzMCAyOXQ2MCAyMi41dDk3IDEweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODQ7IiBkPSJNMTEwMCA3MDBsLTIwMCAtMjAwaC02MDBsLTIwMCAyMDB2NTAwaDIwMHYtMjAwaDIwMHYyMDBoMjAwdi0yMDBoMjAwdjIwMGgyMDB2LTUwMHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEybDEzNyAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNSB0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODU7IiBkPSJNNzAwIDExMDBoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtMTAwMGgzMDB2MTAwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNMTEwMCA4MDBoLTEwMHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNXYtNzAwaDMwMHY3MDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjV6TTQwMCAwaC0zMDB2NDAwcTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNWgxMDBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTQwMHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4NjsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDcwMGgtMjAwdi0xMDBoMjAwdi0zMDBoLTMwMHYxMDBoMjAwdjEwMGgtMjAwdjMwMGgzMDB2LTEwMHpNOTAwIDcwMHYtMzAwbC0xMDAgLTEwMGgtMjAwdjUwMGgyMDB6IE03MDAgNzAwdi0zMDBoMTAwdjMwMGgtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxODc7IiBkPSJNMjAwIDExMDBoNzAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnYtNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OGgtNzAwcS0xMjQgMCAtMjEyIDg4dC04OCAyMTJ2NTAwcTAgMTI0IDg4IDIxMnQyMTIgODh6TTEwMCA5MDB2LTcwMGg5MDB2NzAwaC05MDB6TTUwMCAzMDBoLTEwMHYyMDBoLTEwMHYtMjAwaC0xMDB2NTAwaDEwMHYtMjAwaDEwMHYyMDBoMTAwdi01MDB6TTkwMCA3MDB2LTMwMGwtMTAwIC0xMDBoLTIwMHY1MDBoMjAweiBNNzAwIDcwMHYtMzAwaDEwMHYzMDBoLTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTg4OyIgZD0iTTIwMCAxMTAwaDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEydjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek0xMDAgOTAwdi03MDBoOTAwdjcwMGgtOTAwek01MDAgNzAwaC0yMDB2LTMwMGgyMDB2LTEwMGgtMzAwdjUwMGgzMDB2LTEwMHpNOTAwIDcwMGgtMjAwdi0zMDBoMjAwdi0xMDBoLTMwMHY1MDBoMzAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE4OTsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDQwMGwtMzAwIDE1MGwzMDAgMTUwdi0zMDB6TTkwMCA1NTBsLTMwMCAtMTUwdjMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTkwOyIgZD0iTTIwMCAxMTAwaDcwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJ2LTUwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhoLTcwMHEtMTI0IDAgLTIxMiA4OHQtODggMjEydjUwMHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek0xMDAgOTAwdi03MDBoOTAwdjcwMGgtOTAwek05MDAgMzAwaC03MDB2NTAwaDcwMHYtNTAwek04MDAgNzAwaC0xMzBxLTM4IDAgLTY2LjUgLTQzdC0yOC41IC0xMDh0MjcgLTEwN3Q2OCAtNDJoMTMwdjMwMHpNMzAwIDcwMHYtMzAwIGgxMzBxNDEgMCA2OCA0MnQyNyAxMDd0LTI4LjUgMTA4dC02Ni41IDQzaC0xMzB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MTsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDcwMGgtMjAwdi0xMDBoMjAwdi0zMDBoLTMwMHYxMDBoMjAwdjEwMGgtMjAwdjMwMGgzMDB2LTEwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHogTTcwMCAzMDBoLTEwMHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MjsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNMzAwIDcwMGgyMDB2LTQwMGgtMzAwdjUwMGgxMDB2LTEwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNMzAwIDYwMHYtMjAwaDEwMHYyMDBoLTEwMHogTTcwMCAzMDBoLTEwMHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5MzsiIGQ9Ik0yMDAgMTEwMGg3MDBxMTI0IDAgMjEyIC04OHQ4OCAtMjEydi01MDBxMCAtMTI0IC04OCAtMjEydC0yMTIgLTg4aC03MDBxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnY1MDBxMCAxMjQgODggMjEydDIxMiA4OHpNMTAwIDkwMHYtNzAwaDkwMHY3MDBoLTkwMHpNNTAwIDUwMGwtMTk5IC0yMDBoLTEwMHY1MGwxOTkgMjAwdjE1MGgtMjAwdjEwMGgzMDB2LTMwMHpNOTAwIDMwMGgtMTAwdjQwMGgtMTAwdjEwMGgyMDB2LTUwMHpNNzAxIDMwMGgtMTAwIHYxMDBoMTAwdi0xMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTE5NDsiIGQ9Ik02MDAgMTE5MXExMjAgMCAyMjkuNSAtNDd0MTg4LjUgLTEyNnQxMjYgLTE4OC41dDQ3IC0yMjkuNXQtNDcgLTIyOS41dC0xMjYgLTE4OC41dC0xODguNSAtMTI2dC0yMjkuNSAtNDd0LTIyOS41IDQ3dC0xODguNSAxMjZ0LTEyNiAxODguNXQtNDcgMjI5LjV0NDcgMjI5LjV0MTI2IDE4OC41dDE4OC41IDEyNnQyMjkuNSA0N3pNNjAwIDEwMjFxLTExNCAwIC0yMTEgLTU2LjV0LTE1My41IC0xNTMuNXQtNTYuNSAtMjExdDU2LjUgLTIxMSB0MTUzLjUgLTE1My41dDIxMSAtNTYuNXQyMTEgNTYuNXQxNTMuNSAxNTMuNXQ1Ni41IDIxMXQtNTYuNSAyMTF0LTE1My41IDE1My41dC0yMTEgNTYuNXpNODAwIDcwMGgtMzAwdi0yMDBoMzAwdi0xMDBoLTMwMGwtMTAwIDEwMHYyMDBsMTAwIDEwMGgzMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTk1OyIgZD0iTTYwMCAxMTkxcTEyMCAwIDIyOS41IC00N3QxODguNSAtMTI2dDEyNiAtMTg4LjV0NDcgLTIyOS41dC00NyAtMjI5LjV0LTEyNiAtMTg4LjV0LTE4OC41IC0xMjZ0LTIyOS41IC00N3QtMjI5LjUgNDd0LTE4OC41IDEyNnQtMTI2IDE4OC41dC00NyAyMjkuNXQ0NyAyMjkuNXQxMjYgMTg4LjV0MTg4LjUgMTI2dDIyOS41IDQ3ek02MDAgMTAyMXEtMTE0IDAgLTIxMSAtNTYuNXQtMTUzLjUgLTE1My41dC01Ni41IC0yMTF0NTYuNSAtMjExIHQxNTMuNSAtMTUzLjV0MjExIC01Ni41dDIxMSA1Ni41dDE1My41IDE1My41dDU2LjUgMjExdC01Ni41IDIxMXQtMTUzLjUgMTUzLjV0LTIxMSA1Ni41ek04MDAgNzAwdi0xMDBsLTUwIC01MGwxMDAgLTEwMHYtNTBoLTEwMGwtMTAwIDEwMGgtMTUwdi0xMDBoLTEwMHY0MDBoMzAwek01MDAgNzAwdi0xMDBoMjAwdjEwMGgtMjAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTc7IiBkPSJNNTAzIDEwODlxMTEwIDAgMjAwLjUgLTU5LjV0MTM0LjUgLTE1Ni41cTQ0IDE0IDkwIDE0cTEyMCAwIDIwNSAtODYuNXQ4NSAtMjA3dC04NSAtMjA3dC0yMDUgLTg2LjVoLTEyOHYyNTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTMwMHEtMjEgMCAtMzUuNSAtMTQuNXQtMTQuNSAtMzUuNXYtMjUwaC0yMjJxLTgwIDAgLTEzNiA1Ny41dC01NiAxMzYuNXEwIDY5IDQzIDEyMi41dDEwOCA2Ny41cS0yIDE5IC0yIDM3cTAgMTAwIDQ5IDE4NSB0MTM0IDEzNHQxODUgNDl6TTUyNSA1MDBoMTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMjc1aDEzN3EyMSAwIDI2IC0xMS41dC04IC0yNy41bC0yMjMgLTI0NHEtMTMgLTE2IC0zMiAtMTZ0LTMyIDE2bC0yMjMgMjQ0cS0xMyAxNiAtOCAyNy41dDI2IDExLjVoMTM3djI3NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUxOTg7IiBkPSJNNTAyIDEwODlxMTEwIDAgMjAxIC01OS41dDEzNSAtMTU2LjVxNDMgMTUgODkgMTVxMTIxIDAgMjA2IC04Ni41dDg2IC0yMDYuNXEwIC05OSAtNjAgLTE4MXQtMTUwIC0xMTBsLTM3OCAzNjBxLTEzIDE2IC0zMS41IDE2dC0zMS41IC0xNmwtMzgxIC0zNjVoLTlxLTc5IDAgLTEzNS41IDU3LjV0LTU2LjUgMTM2LjVxMCA2OSA0MyAxMjIuNXQxMDggNjcuNXEtMiAxOSAtMiAzOHEwIDEwMCA0OSAxODQuNXQxMzMuNSAxMzR0MTg0LjUgNDkuNXogTTYzMiA0NjdsMjIzIC0yMjhxMTMgLTE2IDggLTI3LjV0LTI2IC0xMS41aC0xMzd2LTI3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djI3NWgtMTM3cS0yMSAwIC0yNiAxMS41dDggMjcuNXExOTkgMjA0IDIyMyAyMjhxMTkgMTkgMzEuNSAxOXQzMi41IC0xOXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMTk5OyIgZD0iTTcwMCAxMDB2MTAwaDQwMGwtMjcwIDMwMGgxNzBsLTI3MCAzMDBoMTcwbC0zMDAgMzMzbC0zMDAgLTMzM2gxNzBsLTI3MCAtMzAwaDE3MGwtMjcwIC0zMDBoNDAwdi0xMDBoLTUwcS0yMSAwIC0zNS41IC0xNC41dC0xNC41IC0zNS41di01MGg0MDB2NTBxMCAyMSAtMTQuNSAzNS41dC0zNS41IDE0LjVoLTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDA7IiBkPSJNNjAwIDExNzlxOTQgMCAxNjcuNSAtNTYuNXQ5OS41IC0xNDUuNXE4OSAtNiAxNTAuNSAtNzEuNXQ2MS41IC0xNTUuNXEwIC02MSAtMjkuNSAtMTEyLjV0LTc5LjUgLTgyLjVxOSAtMjkgOSAtNTVxMCAtNzQgLTUyLjUgLTEyNi41dC0xMjYuNSAtNTIuNXEtNTUgMCAtMTAwIDMwdi0yNTFxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwaC0zMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41djI1MXEtNDUgLTMwIC0xMDAgLTMwIHEtNzQgMCAtMTI2LjUgNTIuNXQtNTIuNSAxMjYuNXEwIDE4IDQgMzhxLTQ3IDIxIC03NS41IDY1dC0yOC41IDk3cTAgNzQgNTIuNSAxMjYuNXQxMjYuNSA1Mi41cTUgMCAyMyAtMnEwIDIgLTEgMTB0LTEgMTNxMCAxMTYgODEuNSAxOTcuNXQxOTcuNSA4MS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDE7IiBkPSJNMTAxMCAxMDEwcTExMSAtMTExIDE1MC41IC0yNjAuNXQwIC0yOTl0LTE1MC41IC0yNjAuNXEtODMgLTgzIC0xOTEuNSAtMTI2LjV0LTIxOC41IC00My41dC0yMTguNSA0My41dC0xOTEuNSAxMjYuNXEtMTExIDExMSAtMTUwLjUgMjYwLjV0MCAyOTl0MTUwLjUgMjYwLjVxODMgODMgMTkxLjUgMTI2LjV0MjE4LjUgNDMuNXQyMTguNSAtNDMuNXQxOTEuNSAtMTI2LjV6TTQ3NiAxMDY1cS00IDAgLTggLTFxLTEyMSAtMzQgLTIwOS41IC0xMjIuNSB0LTEyMi41IC0yMDkuNXEtNCAtMTIgMi41IC0yM3QxOC41IC0xNGwzNiAtOXEzIC0xIDcgLTFxMjMgMCAyOSAyMnEyNyA5NiA5OCAxNjZxNzAgNzEgMTY2IDk4cTExIDMgMTcuNSAxMy41dDMuNSAyMi41bC05IDM1cS0zIDEzIC0xNCAxOXEtNyA0IC0xNSA0ek01MTIgOTIwcS00IDAgLTkgLTJxLTgwIC0yNCAtMTM4LjUgLTgyLjV0LTgyLjUgLTEzOC41cS00IC0xMyAyIC0yNHQxOSAtMTRsMzQgLTlxNCAtMSA4IC0xcTIyIDAgMjggMjEgcTE4IDU4IDU4LjUgOTguNXQ5Ny41IDU4LjVxMTIgMyAxOCAxMy41dDMgMjEuNWwtOSAzNXEtMyAxMiAtMTQgMTlxLTcgNCAtMTUgNHpNNzE5LjUgNzE5LjVxLTQ5LjUgNDkuNSAtMTE5LjUgNDkuNXQtMTE5LjUgLTQ5LjV0LTQ5LjUgLTExOS41dDQ5LjUgLTExOS41dDExOS41IC00OS41dDExOS41IDQ5LjV0NDkuNSAxMTkuNXQtNDkuNSAxMTkuNXpNODU1IDU1MXEtMjIgMCAtMjggLTIxcS0xOCAtNTggLTU4LjUgLTk4LjV0LTk4LjUgLTU3LjUgcS0xMSAtNCAtMTcgLTE0LjV0LTMgLTIxLjVsOSAtMzVxMyAtMTIgMTQgLTE5cTcgLTQgMTUgLTRxNCAwIDkgMnE4MCAyNCAxMzguNSA4Mi41dDgyLjUgMTM4LjVxNCAxMyAtMi41IDI0dC0xOC41IDE0bC0zNCA5cS00IDEgLTggMXpNMTAwMCA1MTVxLTIzIDAgLTI5IC0yMnEtMjcgLTk2IC05OCAtMTY2cS03MCAtNzEgLTE2NiAtOThxLTExIC0zIC0xNy41IC0xMy41dC0zLjUgLTIyLjVsOSAtMzVxMyAtMTMgMTQgLTE5cTcgLTQgMTUgLTQgcTQgMCA4IDFxMTIxIDM0IDIwOS41IDEyMi41dDEyMi41IDIwOS41cTQgMTIgLTIuNSAyM3QtMTguNSAxNGwtMzYgOXEtMyAxIC03IDF6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwMjsiIGQ9Ik03MDAgODAwaDMwMHYtMzgwaC0xODB2MjAwaC0zNDB2LTIwMGgtMzgwdjc1NXEwIDEwIDcuNSAxNy41dDE3LjUgNy41aDU3NXYtNDAwek0xMDAwIDkwMGgtMjAwdjIwMHpNNzAwIDMwMGgxNjJsLTIxMiAtMjEybC0yMTIgMjEyaDE2MnYyMDBoMTAwdi0yMDB6TTUyMCAwaC0zOTVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYzOTV6TTEwMDAgMjIwdi0xOTVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xOTV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwMzsiIGQ9Ik03MDAgODAwaDMwMHYtNTIwbC0zNTAgMzUwbC01NTAgLTU1MHYxMDk1cTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNTc1di00MDB6TTEwMDAgOTAwaC0yMDB2MjAwek04NjIgMjAwaC0xNjJ2LTIwMGgtMTAwdjIwMGgtMTYybDIxMiAyMTJ6TTQ4MCAwaC0zNTVxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1NWgzODB2LTgwek0xMDAwIDgwdi01NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTE1NXY4MGgxODB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIwNDsiIGQ9Ik0xMTYyIDgwMGgtMTYydi0yMDBoMTAwbDEwMCAtMTAwaC0zMDB2MzAwaC0xNjJsMjEyIDIxMnpNMjAwIDgwMGgyMDBxMjcgMCA0MCAtMnQyOS41IC0xMC41dDIzLjUgLTMwdDcgLTU3LjVoMzAwdi0xMDBoLTYwMGwtMjAwIC0zNTB2NDUwaDEwMHEwIDM2IDcgNTcuNXQyMy41IDMwdDI5LjUgMTAuNXQ0MCAyek04MDAgNDAwaDI0MGwtMjQwIC00MDBoLTgwMGwzMDAgNTAwaDUwMHYtMTAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDU7IiBkPSJNNjUwIDExMDBoMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0zMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djEwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMDAwIDg1MHYxNTBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTgwMCBxMCAtNDEgLTI5LjUgLTcwLjV0LTcwLjUgLTI5LjVoLTYwMHEtMSAwIC0yMCA0bDI0NiAyNDZsLTMyNiAzMjZ2MzI0cTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXYtMTUwcTAgLTYyIDQ0IC0xMDZ0MTA2IC00NGgzMDBxNjIgMCAxMDYgNDR0NDQgMTA2ek00MTIgMjUwbC0yMTIgLTIxMnYxNjJoLTIwMHYxMDBoMjAwdjE2MnoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjA2OyIgZD0iTTQ1MCAxMTAwaDEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMzAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDUwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNODAwIDg1MHYxNTBxNDEgMCA3MC41IC0yOS41dDI5LjUgLTcwLjV2LTUwMCBoLTIwMHYtMzAwaDIwMHEwIC0zNiAtNyAtNTcuNXQtMjMuNSAtMzB0LTI5LjUgLTEwLjV0LTQwIC0yaC02MDBxLTQxIDAgLTcwLjUgMjkuNXQtMjkuNSA3MC41djgwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV2LTE1MHEwIC02MiA0NCAtMTA2dDEwNiAtNDRoMzAwcTYyIDAgMTA2IDQ0dDQ0IDEwNnpNMTIxMiAyNTBsLTIxMiAtMjEydjE2MmgtMjAwdjEwMGgyMDB2MTYyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMDk7IiBkPSJNNjU4IDExOTdsNjM3IC0xMTA0cTIzIC0zOCA3IC02NS41dC02MCAtMjcuNWgtMTI3NnEtNDQgMCAtNjAgMjcuNXQ3IDY1LjVsNjM3IDExMDRxMjIgMzkgNTQgMzl0NTQgLTM5ek03MDQgODAwaC0yMDhxLTIwIDAgLTMyIC0xNC41dC04IC0zNC41bDU4IC0zMDJxNCAtMjAgMjEuNSAtMzQuNXQzNy41IC0xNC41aDU0cTIwIDAgMzcuNSAxNC41dDIxLjUgMzQuNWw1OCAzMDJxNCAyMCAtOCAzNC41dC0zMiAxNC41ek01MDAgMzAwdi0xMDBoMjAwIHYxMDBoLTIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjEwOyIgZD0iTTQyNSAxMTAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek00MjUgODAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41IHQxNy41IDcuNXpNODI1IDgwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNMjUgNTAwaDI1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTI1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDI1IDUwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNODI1IDUwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNSB2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTI1IDIwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXYxNTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDI1IDIwMGgyNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di0xNTBxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0yNTBxLTEwIDAgLTE3LjUgNy41IHQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTgyNSAyMDBoMjUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMjUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxMTsiIGQ9Ik03MDAgMTIwMGgxMDB2LTIwMGgtMTAwdi0xMDBoMzUwcTYyIDAgODYuNSAtMzkuNXQtMy41IC05NC41bC02NiAtMTMycS00MSAtODMgLTgxIC0xMzRoLTc3MnEtNDAgNTEgLTgxIDEzNGwtNjYgMTMycS0yOCA1NSAtMy41IDk0LjV0ODYuNSAzOS41aDM1MHYxMDBoLTEwMHYyMDBoMTAwdjEwMGgyMDB2LTEwMHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEybDEzNyAtMTAwIGgtOTUwbDEzOCAxMDBoLTEzcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41ek01MCAxMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMTI7IiBkPSJNNjAwIDEzMDBxNDAgMCA2OC41IC0yOS41dDI4LjUgLTcwLjVoLTE5NHEwIDQxIDI4LjUgNzAuNXQ2OC41IDI5LjV6TTQ0MyAxMTAwaDMxNHExOCAtMzcgMTggLTc1cTAgLTggLTMgLTI1aDMyOHE0MSAwIDQ0LjUgLTE2LjV0LTMwLjUgLTM4LjVsLTE3NSAtMTQ1aC02NzhsLTE3OCAxNDVxLTM0IDIyIC0yOSAzOC41dDQ2IDE2LjVoMzI4cS0zIDE3IC0zIDI1cTAgMzggMTggNzV6TTI1MCA3MDBoNzAwcTIxIDAgMzUuNSAtMTQuNSB0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTUwdi0yMDBsMjc1IC0yMDBoLTk1MGwyNzUgMjAwdjIwMGgtMTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41ek01MCAxMDBoMTEwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoLTEyMDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMTM7IiBkPSJNNjAwIDExODFxNzUgMCAxMjggLTUzdDUzIC0xMjh0LTUzIC0xMjh0LTEyOCAtNTN0LTEyOCA1M3QtNTMgMTI4dDUzIDEyOHQxMjggNTN6TTYwMiA3OThoNDZxMzQgMCA1NS41IC0yOC41dDIxLjUgLTg2LjVxMCAtNzYgMzkgLTE4M2gtMzI0cTM5IDEwNyAzOSAxODNxMCA1OCAyMS41IDg2LjV0NTYuNSAyOC41aDQ1ek0yNTAgNDAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTMgbDEzOCAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNDsiIGQ9Ik02MDAgMTMwMHE0NyAwIDkyLjUgLTUzLjV0NzEgLTEyM3QyNS41IC0xMjMuNXEwIC03OCAtNTUuNSAtMTMzLjV0LTEzMy41IC01NS41dC0xMzMuNSA1NS41dC01NS41IDEzMy41cTAgNjIgMzQgMTQzbDE0NCAtMTQzbDExMSAxMTFsLTE2MyAxNjNxMzQgMjYgNjMgMjZ6TTYwMiA3OThoNDZxMzQgMCA1NS41IC0yOC41dDIxLjUgLTg2LjVxMCAtNzYgMzkgLTE4M2gtMzI0cTM5IDEwNyAzOSAxODNxMCA1OCAyMS41IDg2LjV0NTYuNSAyOC41aDQ1IHpNMjUwIDQwMGg3MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV0LTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTEzbDEzOCAtMTAwaC05NTBsMTM3IDEwMGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNTsiIGQ9Ik02MDAgMTIwMGwzMDAgLTE2MXYtMTM5aC0zMDBxMCAtNTcgMTguNSAtMTA4dDUwIC05MS41dDYzIC03MnQ3MCAtNjcuNXQ1Ny41IC02MWgtNTMwcS02MCA4MyAtOTAuNSAxNzcuNXQtMzAuNSAxNzguNXQzMyAxNjQuNXQ4Ny41IDEzOS41dDEyNiA5Ni41dDE0NS41IDQxLjV2LTk4ek0yNTAgNDAwaDcwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTNsMTM4IC0xMDBoLTk1MGwxMzcgMTAwIGgtMTJxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6TTUwIDEwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtMTIwMHY1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxNjsiIGQ9Ik02MDAgMTMwMHE0MSAwIDcwLjUgLTI5LjV0MjkuNSAtNzAuNXYtNzhxNDYgLTI2IDczIC03MnQyNyAtMTAwdi01MGgtNDAwdjUwcTAgNTQgMjcgMTAwdDczIDcydjc4cTAgNDEgMjkuNSA3MC41dDcwLjUgMjkuNXpNNDAwIDgwMGg0MDBxNTQgMCAxMDAgLTI3dDcyIC03M2gtMTcydi0xMDBoMjAwdi0xMDBoLTIwMHYtMTAwaDIwMHYtMTAwaC0yMDB2LTEwMGgyMDBxMCAtODMgLTU4LjUgLTE0MS41dC0xNDEuNSAtNTguNWgtNDAwIHEtODMgMCAtMTQxLjUgNTguNXQtNTguNSAxNDEuNXY0MDBxMCA4MyA1OC41IDE0MS41dDE0MS41IDU4LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIxODsiIGQ9Ik0xNTAgMTEwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtOTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY1MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0xMjUgNDAwaDk1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMjgzbDIyNCAtMjI0cTEzIC0xMyAxMyAtMzEuNXQtMTMgLTMyIHQtMzEuNSAtMTMuNXQtMzEuNSAxM2wtODggODhoLTUyNGwtODcgLTg4cS0xMyAtMTMgLTMyIC0xM3QtMzIgMTMuNXQtMTMgMzJ0MTMgMzEuNWwyMjQgMjI0aC0yODlxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41ek01NDEgMzAwbC0xMDAgLTEwMGgzMjRsLTEwMCAxMDBoLTEyNHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjE5OyIgZD0iTTIwMCAxMTAwaDgwMHE4MyAwIDE0MS41IC01OC41dDU4LjUgLTE0MS41di0yMDBoLTEwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNWgtMjUwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41aC0xMDBxMCA0MSAtMjkuNSA3MC41dC03MC41IDI5LjVoLTI1MHEtNDEgMCAtNzAuNSAtMjkuNXQtMjkuNSAtNzAuNWgtMTAwdjIwMHEwIDgzIDU4LjUgMTQxLjV0MTQxLjUgNTguNXpNMTAwIDYwMGgxMDAwcTQxIDAgNzAuNSAtMjkuNSB0MjkuNSAtNzAuNXYtMzAwaC0xMjAwdjMwMHEwIDQxIDI5LjUgNzAuNXQ3MC41IDI5LjV6TTMwMCAxMDB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaDIwMHpNMTEwMCAxMDB2LTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djUwaDIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjIxOyIgZD0iTTQ4MCAxMTY1bDY4MiAtNjgzcTMxIC0zMSAzMSAtNzUuNXQtMzEgLTc1LjVsLTEzMSAtMTMxaC00ODFsLTUxNyA1MThxLTMyIDMxIC0zMiA3NS41dDMyIDc1LjVsMjk1IDI5NnEzMSAzMSA3NS41IDMxdDc2LjUgLTMxek0xMDggNzk0bDM0MiAtMzQybDMwMyAzMDRsLTM0MSAzNDF6TTI1MCAxMDBoODAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di01MGgtOTAwdjUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjIzOyIgZD0iTTEwNTcgNjQ3bC0xODkgNTA2cS04IDE5IC0yNy41IDMzdC00MC41IDE0aC00MDBxLTIxIDAgLTQwLjUgLTE0dC0yNy41IC0zM2wtMTg5IC01MDZxLTggLTE5IDEuNSAtMzN0MzAuNSAtMTRoNjI1di0xNTBxMCAtMjEgMTQuNSAtMzUuNXQzNS41IC0xNC41dDM1LjUgMTQuNXQxNC41IDM1LjV2MTUwaDEyNXEyMSAwIDMwLjUgMTR0MS41IDMzek04OTcgMGgtNTk1djUwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWg1MHY1MCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDQ4djMwMGgyMDB2LTMwMGg0N3EyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBoNTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTUweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMjQ7IiBkPSJNOTAwIDgwMGgzMDB2LTU3NXEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTM3NXY1OTFsLTMwMCAzMDB2ODRxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgzNzV2LTQwMHpNMTIwMCA5MDBoLTIwMHYyMDB6TTQwMCA2MDBoMzAwdi01NzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC02NTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY5NTBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgzNzV2LTQwMHpNNzAwIDcwMGgtMjAwdjIwMHogIiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIyNTsiIGQ9Ik00ODQgMTA5NWgxOTVxNzUgMCAxNDYgLTMyLjV0MTI0IC04NnQ4OS41IC0xMjIuNXQ0OC41IC0xNDJxMTggLTE0IDM1IC0yMHEzMSAtMTAgNjQuNSA2LjV0NDMuNSA0OC41cTEwIDM0IC0xNSA3MXEtMTkgMjcgLTkgNDNxNSA4IDEyLjUgMTF0MTkgLTF0MjMuNSAtMTZxNDEgLTQ0IDM5IC0xMDVxLTMgLTYzIC00NiAtMTA2LjV0LTEwNCAtNDMuNWgtNjJxLTcgLTU1IC0zNSAtMTE3dC01NiAtMTAwbC0zOSAtMjM0cS0zIC0yMCAtMjAgLTM0LjUgdC0zOCAtMTQuNWgtMTAwcS0yMSAwIC0zMyAxNC41dC05IDM0LjVsMTIgNzBxLTQ5IC0xNCAtOTEgLTE0aC0xOTVxLTI0IDAgLTY1IDhsLTExIC02NHEtMyAtMjAgLTIwIC0zNC41dC0zOCAtMTQuNWgtMTAwcS0yMSAwIC0zMyAxNC41dC05IDM0LjVsMjYgMTU3cS04NCA3NCAtMTI4IDE3NWwtMTU5IDUzcS0xOSA3IC0zMyAyNnQtMTQgNDB2NTBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDEyNHExMSA4NyA1NiAxNjZsLTExMSA5NSBxLTE2IDE0IC0xMi41IDIzLjV0MjQuNSA5LjVoMjAzcTExNiAxMDEgMjUwIDEwMXpNNjc1IDEwMDBoLTI1MHEtMTAgMCAtMTcuNSAtNy41dC03LjUgLTE3LjV2LTUwcTAgLTEwIDcuNSAtMTcuNXQxNy41IC03LjVoMjUwcTEwIDAgMTcuNSA3LjV0Ny41IDE3LjV2NTBxMCAxMCAtNy41IDE3LjV0LTE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMjY7IiBkPSJNNjQxIDkwMGw0MjMgMjQ3cTE5IDggNDIgMi41dDM3IC0yMS41bDMyIC0zOHExNCAtMTUgMTIuNSAtMzZ0LTE3LjUgLTM0bC0xMzkgLTEyMGgtMzkwek01MCAxMTAwaDEwNnE2NyAwIDEwMyAtMTd0NjYgLTcxbDEwMiAtMjEyaDgyM3EyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNTBxMCAtMjEgLTE0IC00MHQtMzMgLTI2bC03MzcgLTEzMnEtMjMgLTQgLTQwIDZ0LTI2IDI1cS00MiA2NyAtMTAwIDY3aC0zMDBxLTYyIDAgLTEwNiA0NCB0LTQ0IDEwNnYyMDBxMCA2MiA0NCAxMDZ0MTA2IDQ0ek0xNzMgOTI4aC04MHEtMTkgMCAtMjggLTE0dC05IC0zNXYtNTZxMCAtNTEgNDIgLTUxaDEzNHExNiAwIDIxLjUgOHQ1LjUgMjRxMCAxMSAtMTYgNDV0LTI3IDUxcS0xOCAyOCAtNDMgMjh6TTU1MCA3MjdxLTMyIDAgLTU0LjUgLTIyLjV0LTIyLjUgLTU0LjV0MjIuNSAtNTQuNXQ1NC41IC0yMi41dDU0LjUgMjIuNXQyMi41IDU0LjV0LTIyLjUgNTQuNXQtNTQuNSAyMi41ek0xMzAgMzg5IGwxNTIgMTMwcTE4IDE5IDM0IDI0dDMxIC0zLjV0MjQuNSAtMTcuNXQyNS41IC0yOHEyOCAtMzUgNTAuNSAtNTF0NDguNSAtMTNsNjMgNWw0OCAtMTc5cTEzIC02MSAtMy41IC05Ny41dC02Ny41IC03OS41bC04MCAtNjlxLTQ3IC00MCAtMTA5IC0zNS41dC0xMDMgNTEuNWwtMTMwIDE1MXEtNDAgNDcgLTM1LjUgMTA5LjV0NTEuNSAxMDIuNXpNMzgwIDM3N2wtMTAyIC04OHEtMzEgLTI3IDIgLTY1bDM3IC00M3ExMyAtMTUgMjcuNSAtMTkuNSB0MzEuNSA2LjVsNjEgNTNxMTkgMTYgMTQgNDlxLTIgMjAgLTEyIDU2dC0xNyA0NXEtMTEgMTIgLTE5IDE0dC0yMyAtOHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjI3OyIgZD0iTTYyNSAxMjAwaDE1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTEwOXE3OSAtMzMgMTMxIC04Ny41dDUzIC0xMjguNXExIC00NiAtMTUgLTg0LjV0LTM5IC02MXQtNDYgLTM4dC0zOSAtMjEuNWwtMTcgLTZxNiAwIDE1IC0xLjV0MzUgLTl0NTAgLTE3LjV0NTMgLTMwdDUwIC00NXQzNS41IC02NHQxNC41IC04NHEwIC01OSAtMTEuNSAtMTA1LjV0LTI4LjUgLTc2LjV0LTQ0IC01MXQtNDkuNSAtMzEuNXQtNTQuNSAtMTZ0LTQ5LjUgLTYuNSB0LTQzLjUgLTF2LTc1cTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtMTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2NzVoLTEwMHYtNzVxMCAtMTAgLTcuNSAtMTcuNXQtMTcuNSAtNy41aC0xNTBxLTEwIDAgLTE3LjUgNy41dC03LjUgMTcuNXY3NWgtMTc1cS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjVoNzV2NjAwaC03NXEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MCBxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxNzV2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWgxNTBxMTAgMCAxNy41IC03LjV0Ny41IC0xNy41di03NWgxMDB2NzVxMCAxMCA3LjUgMTcuNXQxNy41IDcuNXpNNDAwIDkwMHYtMjAwaDI2M3EyOCAwIDQ4LjUgMTAuNXQzMCAyNXQxNSAyOXQ1LjUgMjUuNWwxIDEwcTAgNCAtMC41IDExdC02IDI0dC0xNSAzMHQtMzAgMjR0LTQ4LjUgMTFoLTI2M3pNNDAwIDUwMHYtMjAwaDM2M3EyOCAwIDQ4LjUgMTAuNSB0MzAgMjV0MTUgMjl0NS41IDI1LjVsMSAxMHEwIDQgLTAuNSAxMXQtNiAyNHQtMTUgMzB0LTMwIDI0dC00OC41IDExaC0zNjN6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzMDsiIGQ9Ik0yMTIgMTE5OGg3ODBxODYgMCAxNDcgLTYxdDYxIC0xNDd2LTQxNnEwIC01MSAtMTggLTE0Mi41dC0zNiAtMTU3LjVsLTE4IC02NnEtMjkgLTg3IC05My41IC0xNDYuNXQtMTQ2LjUgLTU5LjVoLTU3MnEtODIgMCAtMTQ3IDU5dC05MyAxNDdxLTggMjggLTIwIDczdC0zMiAxNDMuNXQtMjAgMTQ5LjV2NDE2cTAgODYgNjEgMTQ3dDE0NyA2MXpNNjAwIDEwNDVxLTcwIDAgLTEzMi41IC0xMS41dC0xMDUuNSAtMzAuNXQtNzguNSAtNDEuNSB0LTU3IC00NXQtMzYgLTQxdC0yMC41IC0zMC41bC02IC0xMmwxNTYgLTI0M2g1NjBsMTU2IDI0M3EtMiA1IC02IDEyLjV0LTIwIDI5LjV0LTM2LjUgNDJ0LTU3IDQ0LjV0LTc5IDQydC0xMDUgMjkuNXQtMTMyLjUgMTJ6TTc2MiA3MDNoLTE1N2wxOTUgMjYxeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzE7IiBkPSJNNDc1IDEzMDBoMTUwcTEwMyAwIDE4OSAtODZ0ODYgLTE4OXYtNTAwcTAgLTQxIC00MiAtODN0LTgzIC00MmgtNDUwcS00MSAwIC04MyA0MnQtNDIgODN2NTAwcTAgMTAzIDg2IDE4OXQxODkgODZ6TTcwMCAzMDB2LTIyNXEwIC0yMSAtMjcgLTQ4dC00OCAtMjdoLTE1MHEtMjEgMCAtNDggMjd0LTI3IDQ4djIyNWgzMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzMjsiIGQ9Ik00NzUgMTMwMGg5NnEwIC0xNTAgODkuNSAtMjM5LjV0MjM5LjUgLTg5LjV2LTQ0NnEwIC00MSAtNDIgLTgzdC04MyAtNDJoLTQ1MHEtNDEgMCAtODMgNDJ0LTQyIDgzdjUwMHEwIDEwMyA4NiAxODl0MTg5IDg2ek03MDAgMzAwdi0yMjVxMCAtMjEgLTI3IC00OHQtNDggLTI3aC0xNTBxLTIxIDAgLTQ4IDI3dC0yNyA0OHYyMjVoMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzM7IiBkPSJNMTI5NCA3NjdsLTYzOCAtMjgzbC0zNzggMTcwbC03OCAtNjB2LTIyNGwxMDAgLTE1MHYtMTk5bC0xNTAgMTQ4bC0xNTAgLTE0OXYyMDBsMTAwIDE1MHYyNTBxMCA0IC0wLjUgMTAuNXQwIDkuNXQxIDh0MyA4dDYuNSA2bDQ3IDQwbC0xNDcgNjVsNjQyIDI4M3pNMTAwMCAzODBsLTM1MCAtMTY2bC0zNTAgMTY2djE0N2wzNTAgLTE2NWwzNTAgMTY1di0xNDd6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzNDsiIGQ9Ik0yNTAgODAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek02NTAgODAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek0xMDUwIDgwMHE2MiAwIDEwNiAtNDR0NDQgLTEwNnQtNDQgLTEwNnQtMTA2IC00NHQtMTA2IDQ0dC00NCAxMDZ0NDQgMTA2dDEwNiA0NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjM1OyIgZD0iTTU1MCAxMTAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek01NTAgNzAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0ek01NTAgMzAwcTYyIDAgMTA2IC00NHQ0NCAtMTA2dC00NCAtMTA2dC0xMDYgLTQ0dC0xMDYgNDR0LTQ0IDEwNnQ0NCAxMDZ0MTA2IDQ0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzY7IiBkPSJNMTI1IDExMDBoOTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtOTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjV0MTcuNSA3LjV6TTEyNSA3MDBoOTUwcTEwIDAgMTcuNSAtNy41dDcuNSAtMTcuNXYtMTUwcTAgLTEwIC03LjUgLTE3LjV0LTE3LjUgLTcuNWgtOTUwcS0xMCAwIC0xNy41IDcuNXQtNy41IDE3LjV2MTUwcTAgMTAgNy41IDE3LjUgdDE3LjUgNy41ek0xMjUgMzAwaDk1MHExMCAwIDE3LjUgLTcuNXQ3LjUgLTE3LjV2LTE1MHEwIC0xMCAtNy41IC0xNy41dC0xNy41IC03LjVoLTk1MHEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djE1MHEwIDEwIDcuNSAxNy41dDE3LjUgNy41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzc7IiBkPSJNMzUwIDEyMDBoNTAwcTE2MiAwIDI1NiAtOTMuNXQ5NCAtMjU2LjV2LTUwMHEwIC0xNjUgLTkzLjUgLTI1Ny41dC0yNTYuNSAtOTIuNWgtNTAwcS0xNjUgMCAtMjU3LjUgOTIuNXQtOTIuNSAyNTcuNXY1MDBxMCAxNjUgOTIuNSAyNTcuNXQyNTcuNSA5Mi41ek05MDAgMTAwMGgtNjAwcS00MSAwIC03MC41IC0yOS41dC0yOS41IC03MC41di02MDBxMCAtNDEgMjkuNSAtNzAuNXQ3MC41IC0yOS41aDYwMHE0MSAwIDcwLjUgMjkuNSB0MjkuNSA3MC41djYwMHEwIDQxIC0yOS41IDcwLjV0LTcwLjUgMjkuNXpNMzUwIDkwMGg1MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTMwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYzMDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek00MDAgODAwdi0yMDBoNDAwdjIwMGgtNDAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyMzg7IiBkPSJNMTUwIDExMDBoMTAwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNTB2LTIwMGg1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXQtMTQuNSAtMzUuNSB0LTM1LjUgLTE0LjVoLTEwMDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjVoNTB2MjAwaC01MHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV0MTQuNSAzNS41dDM1LjUgMTQuNWg1MHYyMDBoLTUwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXQxNC41IDM1LjV0MzUuNSAxNC41aDUwdjIwMGgtNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41dDE0LjUgMzUuNXQzNS41IDE0LjV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTIzOTsiIGQ9Ik02NTAgMTE4N3E4NyAtNjcgMTE4LjUgLTE1NnQwIC0xNzh0LTExOC41IC0xNTVxLTg3IDY2IC0xMTguNSAxNTV0MCAxNzh0MTE4LjUgMTU2ek0zMDAgODAwcTEyNCAwIDIxMiAtODh0ODggLTIxMnEtMTI0IDAgLTIxMiA4OHQtODggMjEyek0xMDAwIDgwMHEwIC0xMjQgLTg4IC0yMTJ0LTIxMiAtODhxMCAxMjQgODggMjEydDIxMiA4OHpNMzAwIDUwMHExMjQgMCAyMTIgLTg4dDg4IC0yMTJxLTEyNCAwIC0yMTIgODh0LTg4IDIxMnogTTEwMDAgNTAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek03MDAgMTk5di0xNDRxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjV0LTM1LjUgMTQuNXQtMTQuNSAzNS41djE0MnE0MCAtNCA0MyAtNHExNyAwIDU3IDZ6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0MDsiIGQ9Ik03NDUgODc4bDY5IDE5cTI1IDYgNDUgLTEybDI5OCAtMjk1cTExIC0xMSAxNSAtMjYuNXQtMiAtMzAuNXEtNSAtMTQgLTE4IC0yMy41dC0yOCAtOS41aC04cTEgMCAxIC0xM3EwIC0yOSAtMiAtNTZ0LTguNSAtNjJ0LTIwIC02M3QtMzMgLTUzdC01MSAtMzl0LTcyLjUgLTE0aC0xNDZxLTE4NCAwIC0xODQgMjg4cTAgMjQgMTAgNDdxLTIwIDQgLTYyIDR0LTYzIC00cTExIC0yNCAxMSAtNDdxMCAtMjg4IC0xODQgLTI4OGgtMTQyIHEtNDggMCAtODQuNSAyMXQtNTYgNTF0LTMyIDcxLjV0LTE2IDc1dC0zLjUgNjguNXEwIDEzIDIgMTNoLTdxLTE1IDAgLTI3LjUgOS41dC0xOC41IDIzLjVxLTYgMTUgLTIgMzAuNXQxNSAyNS41bDI5OCAyOTZxMjAgMTggNDYgMTFsNzYgLTE5cTIwIC01IDMwLjUgLTIyLjV0NS41IC0zNy41dC0yMi41IC0zMXQtMzcuNSAtNWwtNTEgMTJsLTE4MiAtMTkzaDg5MWwtMTgyIDE5M2wtNDQgLTEycS0yMCAtNSAtMzcuNSA2dC0yMi41IDMxdDYgMzcuNSB0MzEgMjIuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQxOyIgZD0iTTEyMDAgOTAwaC01MHEwIDIxIC00IDM3dC05LjUgMjYuNXQtMTggMTcuNXQtMjIgMTF0LTI4LjUgNS41dC0zMSAydC0zNyAwLjVoLTIwMHYtODUwcTAgLTIyIDI1IC0zNC41dDUwIC0xMy41bDI1IC0ydi0xMDBoLTQwMHYxMDBxNCAwIDExIDAuNXQyNCAzdDMwIDd0MjQgMTV0MTEgMjQuNXY4NTBoLTIwMHEtMjUgMCAtMzcgLTAuNXQtMzEgLTJ0LTI4LjUgLTUuNXQtMjIgLTExdC0xOCAtMTcuNXQtOS41IC0yNi41dC00IC0zN2gtNTB2MzAwIGgxMDAwdi0zMDB6TTUwMCA0NTBoLTI1cTAgMTUgLTQgMjQuNXQtOSAxNC41dC0xNyA3LjV0LTIwIDN0LTI1IDAuNWgtMTAwdi00MjVxMCAtMTEgMTIuNSAtMTcuNXQyNS41IC03LjVoMTJ2LTUwaC0yMDB2NTBxNTAgMCA1MCAyNXY0MjVoLTEwMHEtMTcgMCAtMjUgLTAuNXQtMjAgLTN0LTE3IC03LjV0LTkgLTE0LjV0LTQgLTI0LjVoLTI1djE1MGg1MDB2LTE1MHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQyOyIgZD0iTTEwMDAgMzAwdjUwcS0yNSAwIC01NSAzMnEtMTQgMTQgLTI1IDMxdC0xNiAyN2wtNCAxMWwtMjg5IDc0N2gtNjlsLTMwMCAtNzU0cS0xOCAtMzUgLTM5IC01NnEtOSAtOSAtMjQuNSAtMTguNXQtMjYuNSAtMTQuNWwtMTEgLTV2LTUwaDI3M3Y1MHEtNDkgMCAtNzguNSAyMS41dC0xMS41IDY3LjVsNjkgMTc2aDI5M2w2MSAtMTY2cTEzIC0zNCAtMy41IC02Ni41dC01NS41IC0zMi41di01MGgzMTJ6TTQxMiA2OTFsMTM0IDM0MmwxMjEgLTM0MiBoLTI1NXpNMTEwMCAxNTB2LTEwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtMTAwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2MTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNWgxMDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNDM7IiBkPSJNNTAgMTIwMGgxMTAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xMTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xMTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXYxMTAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNjExIDExMThoLTcwcS0xMyAwIC0xOCAtMTJsLTI5OSAtNzUzcS0xNyAtMzIgLTM1IC01MXEtMTggLTE4IC01NiAtMzRxLTEyIC01IC0xMiAtMTh2LTUwcTAgLTggNS41IC0xNHQxNC41IC02IGgyNzNxOCAwIDE0IDZ0NiAxNHY1MHEwIDggLTYgMTR0LTE0IDZxLTU1IDAgLTcxIDIzcS0xMCAxNCAwIDM5bDYzIDE2M2gyNjZsNTcgLTE1M3ExMSAtMzEgLTYgLTU1cS0xMiAtMTcgLTM2IC0xN3EtOCAwIC0xNCAtNnQtNiAtMTR2LTUwcTAgLTggNiAtMTR0MTQgLTZoMzEzcTggMCAxNCA2dDYgMTR2NTBxMCA3IC01LjUgMTN0LTEzLjUgN3EtMTcgMCAtNDIgMjVxLTI1IDI3IC00MCA2M2gtMWwtMjg4IDc0OHEtNSAxMiAtMTkgMTJ6TTYzOSA2MTEgaC0xOTdsMTAzIDI2NHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ0OyIgZD0iTTEyMDAgMTEwMGgtMTIwMHYxMDBoMTIwMHYtMTAwek01MCAxMDAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtOTAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djkwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTY1MCAxMDAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDAgcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek03MDAgOTAwdi0zMDBoMzAwdjMwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNDU7IiBkPSJNNTAgMTIwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTkwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY5MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek02NTAgNzAwaDQwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMCBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek03MDAgNjAwdi0zMDBoMzAwdjMwMGgtMzAwek0xMjAwIDBoLTEyMDB2MTAwaDEyMDB2LTEwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ2OyIgZD0iTTUwIDEwMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0zNTBoMTAwdjE1MHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di0xNTBoMTAwdi0xMDBoLTEwMHYtMTUwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC00MDBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djE1MGgtMTAwdi0zNTBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMCBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djgwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTcwMCA3MDB2LTMwMGgzMDB2MzAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0NzsiIGQ9Ik0xMDAgMGgtMTAwdjEyMDBoMTAwdi0xMjAwek0yNTAgMTEwMGg0MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtNDAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41ek0zMDAgMTAwMHYtMzAwaDMwMHYzMDBoLTMwMHpNMjUwIDUwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTkwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjQ4OyIgZD0iTTYwMCAxMTAwaDE1MHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xNTB2LTEwMGg0NTBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMHEwIC0yMSAtMTQuNSAtMzUuNXQtMzUuNSAtMTQuNWgtOTAwcS0yMSAwIC0zNS41IDE0LjV0LTE0LjUgMzUuNXY0MDBxMCAyMSAxNC41IDM1LjV0MzUuNSAxNC41aDM1MHYxMDBoLTE1MHEtMjEgMCAtMzUuNSAxNC41IHQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjVoMTUwdjEwMGgxMDB2LTEwMHpNNDAwIDEwMDB2LTMwMGgzMDB2MzAwaC0zMDB6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI0OTsiIGQ9Ik0xMjAwIDBoLTEwMHYxMjAwaDEwMHYtMTIwMHpNNTUwIDExMDBoNDAwcTIxIDAgMzUuNSAtMTQuNXQxNC41IC0zNS41di00MDBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTQwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXpNNjAwIDEwMDB2LTMwMGgzMDB2MzAwaC0zMDB6TTUwIDUwMGg5MDBxMjEgMCAzNS41IC0xNC41dDE0LjUgLTM1LjV2LTQwMCBxMCAtMjEgLTE0LjUgLTM1LjV0LTM1LjUgLTE0LjVoLTkwMHEtMjEgMCAtMzUuNSAxNC41dC0xNC41IDM1LjV2NDAwcTAgMjEgMTQuNSAzNS41dDM1LjUgMTQuNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUwOyIgZD0iTTg2NSA1NjVsLTQ5NCAtNDk0cS0yMyAtMjMgLTQxIC0yM3EtMTQgMCAtMjIgMTMuNXQtOCAzOC41djEwMDBxMCAyNSA4IDM4LjV0MjIgMTMuNXExOCAwIDQxIC0yM2w0OTQgLTQ5NHExNCAtMTQgMTQgLTM1dC0xNCAtMzV6IiAvPgo8Z2x5cGggdW5pY29kZT0iJiN4ZTI1MTsiIGQ9Ik0zMzUgNjM1bDQ5NCA0OTRxMjkgMjkgNTAgMjAuNXQyMSAtNDkuNXYtMTAwMHEwIC00MSAtMjEgLTQ5LjV0LTUwIDIwLjVsLTQ5NCA0OTRxLTE0IDE0IC0xNCAzNXQxNCAzNXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUyOyIgZD0iTTEwMCA5MDBoMTAwMHE0MSAwIDQ5LjUgLTIxdC0yMC41IC01MGwtNDk0IC00OTRxLTE0IC0xNCAtMzUgLTE0dC0zNSAxNGwtNDk0IDQ5NHEtMjkgMjkgLTIwLjUgNTB0NDkuNSAyMXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjUzOyIgZD0iTTYzNSA4NjVsNDk0IC00OTRxMjkgLTI5IDIwLjUgLTUwdC00OS41IC0yMWgtMTAwMHEtNDEgMCAtNDkuNSAyMXQyMC41IDUwbDQ5NCA0OTRxMTQgMTQgMzUgMTR0MzUgLTE0eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNTQ7IiBkPSJNNzAwIDc0MXYtMTgybC02OTIgLTMyM3YyMjFsNDEzIDE5M2wtNDEzIDE5M3YyMjF6TTEyMDAgMGgtODAwdjIwMGg4MDB2LTIwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU1OyIgZD0iTTEyMDAgOTAwaC0yMDB2LTEwMGgyMDB2LTEwMGgtMzAwdjMwMGgyMDB2MTAwaC0yMDB2MTAwaDMwMHYtMzAwek0wIDcwMGg1MHEwIDIxIDQgMzd0OS41IDI2LjV0MTggMTcuNXQyMiAxMXQyOC41IDUuNXQzMSAydDM3IDAuNWgxMDB2LTU1MHEwIC0yMiAtMjUgLTM0LjV0LTUwIC0xMy41bC0yNSAtMnYtMTAwaDQwMHYxMDBxLTQgMCAtMTEgMC41dC0yNCAzdC0zMCA3dC0yNCAxNXQtMTEgMjQuNXY1NTBoMTAwcTI1IDAgMzcgLTAuNXQzMSAtMiB0MjguNSAtNS41dDIyIC0xMXQxOCAtMTcuNXQ5LjUgLTI2LjV0NCAtMzdoNTB2MzAwaC04MDB2LTMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU2OyIgZD0iTTgwMCA3MDBoLTUwcTAgMjEgLTQgMzd0LTkuNSAyNi41dC0xOCAxNy41dC0yMiAxMXQtMjguNSA1LjV0LTMxIDJ0LTM3IDAuNWgtMTAwdi01NTBxMCAtMjIgMjUgLTM0LjV0NTAgLTE0LjVsMjUgLTF2LTEwMGgtNDAwdjEwMHE0IDAgMTEgMC41dDI0IDN0MzAgN3QyNCAxNXQxMSAyNC41djU1MGgtMTAwcS0yNSAwIC0zNyAtMC41dC0zMSAtMnQtMjguNSAtNS41dC0yMiAtMTF0LTE4IC0xNy41dC05LjUgLTI2LjV0LTQgLTM3aC01MHYzMDAgaDgwMHYtMzAwek0xMTAwIDIwMGgtMjAwdi0xMDBoMjAwdi0xMDBoLTMwMHYzMDBoMjAwdjEwMGgtMjAwdjEwMGgzMDB2LTMwMHoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU3OyIgZD0iTTcwMSAxMDk4aDE2MHExNiAwIDIxIC0xMXQtNyAtMjNsLTQ2NCAtNDY0bDQ2NCAtNDY0cTEyIC0xMiA3IC0yM3QtMjEgLTExaC0xNjBxLTEzIDAgLTIzIDlsLTQ3MSA0NzFxLTcgOCAtNyAxOHQ3IDE4bDQ3MSA0NzFxMTAgOSAyMyA5eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGUyNTg7IiBkPSJNMzM5IDEwOThoMTYwcTEzIDAgMjMgLTlsNDcxIC00NzFxNyAtOCA3IC0xOHQtNyAtMThsLTQ3MSAtNDcxcS0xMCAtOSAtMjMgLTloLTE2MHEtMTYgMCAtMjEgMTF0NyAyM2w0NjQgNDY0bC00NjQgNDY0cS0xMiAxMiAtNyAyM3QyMSAxMXoiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjU5OyIgZD0iTTEwODcgODgycTExIC01IDExIC0yMXYtMTYwcTAgLTEzIC05IC0yM2wtNDcxIC00NzFxLTggLTcgLTE4IC03dC0xOCA3bC00NzEgNDcxcS05IDEwIC05IDIzdjE2MHEwIDE2IDExIDIxdDIzIC03bDQ2NCAtNDY0bDQ2NCA0NjRxMTIgMTIgMjMgN3oiIC8%2BCjxnbHlwaCB1bmljb2RlPSImI3hlMjYwOyIgZD0iTTYxOCA5OTNsNDcxIC00NzFxOSAtMTAgOSAtMjN2LTE2MHEwIC0xNiAtMTEgLTIxdC0yMyA3bC00NjQgNDY0bC00NjQgLTQ2NHEtMTIgLTEyIC0yMyAtN3QtMTEgMjF2MTYwcTAgMTMgOSAyM2w0NzEgNDcxcTggNyAxOCA3dDE4IC03eiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeGY4ZmY7IiBkPSJNMTAwMCAxMjAwcTAgLTEyNCAtODggLTIxMnQtMjEyIC04OHEwIDEyNCA4OCAyMTJ0MjEyIDg4ek00NTAgMTAwMGgxMDBxMjEgMCA0MCAtMTR0MjYgLTMzbDc5IC0xOTRxNSAxIDE2IDNxMzQgNiA1NCA5LjV0NjAgN3Q2NS41IDF0NjEgLTEwdDU2LjUgLTIzdDQyLjUgLTQydDI5IC02NHQ1IC05MnQtMTkuNSAtMTIxLjVxLTEgLTcgLTMgLTE5LjV0LTExIC01MHQtMjAuNSAtNzN0LTMyLjUgLTgxLjV0LTQ2LjUgLTgzdC02NCAtNzAgdC04Mi41IC01MHEtMTMgLTUgLTQyIC01dC02NS41IDIuNXQtNDcuNSAyLjVxLTE0IDAgLTQ5LjUgLTMuNXQtNjMgLTMuNXQtNDMuNSA3cS01NyAyNSAtMTA0LjUgNzguNXQtNzUgMTExLjV0LTQ2LjUgMTEydC0yNiA5MGwtNyAzNXEtMTUgNjMgLTE4IDExNXQ0LjUgODguNXQyNiA2NHQzOS41IDQzLjV0NTIgMjUuNXQ1OC41IDEzdDYyLjUgMnQ1OS41IC00LjV0NTUuNSAtOGwtMTQ3IDE5MnEtMTIgMTggLTUuNSAzMHQyNy41IDEyeiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDFmNTExOyIgZD0iTTI1MCAxMjAwaDYwMHEyMSAwIDM1LjUgLTE0LjV0MTQuNSAtMzUuNXYtNDAwcTAgLTIxIC0xNC41IC0zNS41dC0zNS41IC0xNC41aC0xNTB2LTUwMGwtMjU1IC0xNzhxLTE5IC05IC0zMiAtMXQtMTMgMjl2NjUwaC0xNTBxLTIxIDAgLTM1LjUgMTQuNXQtMTQuNSAzNS41djQwMHEwIDIxIDE0LjUgMzUuNXQzNS41IDE0LjV6TTQwMCAxMTAwdi0xMDBoMzAwdjEwMGgtMzAweiIgLz4KPGdseXBoIHVuaWNvZGU9IiYjeDFmNmFhOyIgZD0iTTI1MCAxMjAwaDc1MHEzOSAwIDY5LjUgLTQwLjV0MzAuNSAtODQuNXYtOTMzbC03MDAgLTExN3Y5NTBsNjAwIDEyNWgtNzAwdi0xMDAwaC0xMDB2MTAyNXEwIDIzIDE1LjUgNDl0MzQuNSAyNnpNNTAwIDUyNXYtMTAwbDEwMCAyMHYxMDB6IiAvPgo8L2ZvbnQ%2BCjwvZGVmcz48L3N2Zz4g%29%20format%28%27svg%27%29%7D%2Eglyphicon%7Bposition%3Arelative%3Btop%3A1px%3Bdisplay%3Ainline%2Dblock%3Bfont%2Dfamily%3A%27Glyphicons%20Halflings%27%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3Anormal%3Bline%2Dheight%3A1%3B%2Dwebkit%2Dfont%2Dsmoothing%3Aantialiased%3B%2Dmoz%2Dosx%2Dfont%2Dsmoothing%3Agrayscale%7D%2Eglyphicon%2Dasterisk%3Abefore%7Bcontent%3A%22%5C002a%22%7D%2Eglyphicon%2Dplus%3Abefore%7Bcontent%3A%22%5C002b%22%7D%2Eglyphicon%2Deuro%3Abefore%2C%2Eglyphicon%2Deur%3Abefore%7Bcontent%3A%22%5C20ac%22%7D%2Eglyphicon%2Dminus%3Abefore%7Bcontent%3A%22%5C2212%22%7D%2Eglyphicon%2Dcloud%3Abefore%7Bcontent%3A%22%5C2601%22%7D%2Eglyphicon%2Denvelope%3Abefore%7Bcontent%3A%22%5C2709%22%7D%2Eglyphicon%2Dpencil%3Abefore%7Bcontent%3A%22%5C270f%22%7D%2Eglyphicon%2Dglass%3Abefore%7Bcontent%3A%22%5Ce001%22%7D%2Eglyphicon%2Dmusic%3Abefore%7Bcontent%3A%22%5Ce002%22%7D%2Eglyphicon%2Dsearch%3Abefore%7Bcontent%3A%22%5Ce003%22%7D%2Eglyphicon%2Dheart%3Abefore%7Bcontent%3A%22%5Ce005%22%7D%2Eglyphicon%2Dstar%3Abefore%7Bcontent%3A%22%5Ce006%22%7D%2Eglyphicon%2Dstar%2Dempty%3Abefore%7Bcontent%3A%22%5Ce007%22%7D%2Eglyphicon%2Duser%3Abefore%7Bcontent%3A%22%5Ce008%22%7D%2Eglyphicon%2Dfilm%3Abefore%7Bcontent%3A%22%5Ce009%22%7D%2Eglyphicon%2Dth%2Dlarge%3Abefore%7Bcontent%3A%22%5Ce010%22%7D%2Eglyphicon%2Dth%3Abefore%7Bcontent%3A%22%5Ce011%22%7D%2Eglyphicon%2Dth%2Dlist%3Abefore%7Bcontent%3A%22%5Ce012%22%7D%2Eglyphicon%2Dok%3Abefore%7Bcontent%3A%22%5Ce013%22%7D%2Eglyphicon%2Dremove%3Abefore%7Bcontent%3A%22%5Ce014%22%7D%2Eglyphicon%2Dzoom%2Din%3Abefore%7Bcontent%3A%22%5Ce015%22%7D%2Eglyphicon%2Dzoom%2Dout%3Abefore%7Bcontent%3A%22%5Ce016%22%7D%2Eglyphicon%2Doff%3Abefore%7Bcontent%3A%22%5Ce017%22%7D%2Eglyphicon%2Dsignal%3Abefore%7Bcontent%3A%22%5Ce018%22%7D%2Eglyphicon%2Dcog%3Abefore%7Bcontent%3A%22%5Ce019%22%7D%2Eglyphicon%2Dtrash%3Abefore%7Bcontent%3A%22%5Ce020%22%7D%2Eglyphicon%2Dhome%3Abefore%7Bcontent%3A%22%5Ce021%22%7D%2Eglyphicon%2Dfile%3Abefore%7Bcontent%3A%22%5Ce022%22%7D%2Eglyphicon%2Dtime%3Abefore%7Bcontent%3A%22%5Ce023%22%7D%2Eglyphicon%2Droad%3Abefore%7Bcontent%3A%22%5Ce024%22%7D%2Eglyphicon%2Ddownload%2Dalt%3Abefore%7Bcontent%3A%22%5Ce025%22%7D%2Eglyphicon%2Ddownload%3Abefore%7Bcontent%3A%22%5Ce026%22%7D%2Eglyphicon%2Dupload%3Abefore%7Bcontent%3A%22%5Ce027%22%7D%2Eglyphicon%2Dinbox%3Abefore%7Bcontent%3A%22%5Ce028%22%7D%2Eglyphicon%2Dplay%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce029%22%7D%2Eglyphicon%2Drepeat%3Abefore%7Bcontent%3A%22%5Ce030%22%7D%2Eglyphicon%2Drefresh%3Abefore%7Bcontent%3A%22%5Ce031%22%7D%2Eglyphicon%2Dlist%2Dalt%3Abefore%7Bcontent%3A%22%5Ce032%22%7D%2Eglyphicon%2Dlock%3Abefore%7Bcontent%3A%22%5Ce033%22%7D%2Eglyphicon%2Dflag%3Abefore%7Bcontent%3A%22%5Ce034%22%7D%2Eglyphicon%2Dheadphones%3Abefore%7Bcontent%3A%22%5Ce035%22%7D%2Eglyphicon%2Dvolume%2Doff%3Abefore%7Bcontent%3A%22%5Ce036%22%7D%2Eglyphicon%2Dvolume%2Ddown%3Abefore%7Bcontent%3A%22%5Ce037%22%7D%2Eglyphicon%2Dvolume%2Dup%3Abefore%7Bcontent%3A%22%5Ce038%22%7D%2Eglyphicon%2Dqrcode%3Abefore%7Bcontent%3A%22%5Ce039%22%7D%2Eglyphicon%2Dbarcode%3Abefore%7Bcontent%3A%22%5Ce040%22%7D%2Eglyphicon%2Dtag%3Abefore%7Bcontent%3A%22%5Ce041%22%7D%2Eglyphicon%2Dtags%3Abefore%7Bcontent%3A%22%5Ce042%22%7D%2Eglyphicon%2Dbook%3Abefore%7Bcontent%3A%22%5Ce043%22%7D%2Eglyphicon%2Dbookmark%3Abefore%7Bcontent%3A%22%5Ce044%22%7D%2Eglyphicon%2Dprint%3Abefore%7Bcontent%3A%22%5Ce045%22%7D%2Eglyphicon%2Dcamera%3Abefore%7Bcontent%3A%22%5Ce046%22%7D%2Eglyphicon%2Dfont%3Abefore%7Bcontent%3A%22%5Ce047%22%7D%2Eglyphicon%2Dbold%3Abefore%7Bcontent%3A%22%5Ce048%22%7D%2Eglyphicon%2Ditalic%3Abefore%7Bcontent%3A%22%5Ce049%22%7D%2Eglyphicon%2Dtext%2Dheight%3Abefore%7Bcontent%3A%22%5Ce050%22%7D%2Eglyphicon%2Dtext%2Dwidth%3Abefore%7Bcontent%3A%22%5Ce051%22%7D%2Eglyphicon%2Dalign%2Dleft%3Abefore%7Bcontent%3A%22%5Ce052%22%7D%2Eglyphicon%2Dalign%2Dcenter%3Abefore%7Bcontent%3A%22%5Ce053%22%7D%2Eglyphicon%2Dalign%2Dright%3Abefore%7Bcontent%3A%22%5Ce054%22%7D%2Eglyphicon%2Dalign%2Djustify%3Abefore%7Bcontent%3A%22%5Ce055%22%7D%2Eglyphicon%2Dlist%3Abefore%7Bcontent%3A%22%5Ce056%22%7D%2Eglyphicon%2Dindent%2Dleft%3Abefore%7Bcontent%3A%22%5Ce057%22%7D%2Eglyphicon%2Dindent%2Dright%3Abefore%7Bcontent%3A%22%5Ce058%22%7D%2Eglyphicon%2Dfacetime%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce059%22%7D%2Eglyphicon%2Dpicture%3Abefore%7Bcontent%3A%22%5Ce060%22%7D%2Eglyphicon%2Dmap%2Dmarker%3Abefore%7Bcontent%3A%22%5Ce062%22%7D%2Eglyphicon%2Dadjust%3Abefore%7Bcontent%3A%22%5Ce063%22%7D%2Eglyphicon%2Dtint%3Abefore%7Bcontent%3A%22%5Ce064%22%7D%2Eglyphicon%2Dedit%3Abefore%7Bcontent%3A%22%5Ce065%22%7D%2Eglyphicon%2Dshare%3Abefore%7Bcontent%3A%22%5Ce066%22%7D%2Eglyphicon%2Dcheck%3Abefore%7Bcontent%3A%22%5Ce067%22%7D%2Eglyphicon%2Dmove%3Abefore%7Bcontent%3A%22%5Ce068%22%7D%2Eglyphicon%2Dstep%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce069%22%7D%2Eglyphicon%2Dfast%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce070%22%7D%2Eglyphicon%2Dbackward%3Abefore%7Bcontent%3A%22%5Ce071%22%7D%2Eglyphicon%2Dplay%3Abefore%7Bcontent%3A%22%5Ce072%22%7D%2Eglyphicon%2Dpause%3Abefore%7Bcontent%3A%22%5Ce073%22%7D%2Eglyphicon%2Dstop%3Abefore%7Bcontent%3A%22%5Ce074%22%7D%2Eglyphicon%2Dforward%3Abefore%7Bcontent%3A%22%5Ce075%22%7D%2Eglyphicon%2Dfast%2Dforward%3Abefore%7Bcontent%3A%22%5Ce076%22%7D%2Eglyphicon%2Dstep%2Dforward%3Abefore%7Bcontent%3A%22%5Ce077%22%7D%2Eglyphicon%2Deject%3Abefore%7Bcontent%3A%22%5Ce078%22%7D%2Eglyphicon%2Dchevron%2Dleft%3Abefore%7Bcontent%3A%22%5Ce079%22%7D%2Eglyphicon%2Dchevron%2Dright%3Abefore%7Bcontent%3A%22%5Ce080%22%7D%2Eglyphicon%2Dplus%2Dsign%3Abefore%7Bcontent%3A%22%5Ce081%22%7D%2Eglyphicon%2Dminus%2Dsign%3Abefore%7Bcontent%3A%22%5Ce082%22%7D%2Eglyphicon%2Dremove%2Dsign%3Abefore%7Bcontent%3A%22%5Ce083%22%7D%2Eglyphicon%2Dok%2Dsign%3Abefore%7Bcontent%3A%22%5Ce084%22%7D%2Eglyphicon%2Dquestion%2Dsign%3Abefore%7Bcontent%3A%22%5Ce085%22%7D%2Eglyphicon%2Dinfo%2Dsign%3Abefore%7Bcontent%3A%22%5Ce086%22%7D%2Eglyphicon%2Dscreenshot%3Abefore%7Bcontent%3A%22%5Ce087%22%7D%2Eglyphicon%2Dremove%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce088%22%7D%2Eglyphicon%2Dok%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce089%22%7D%2Eglyphicon%2Dban%2Dcircle%3Abefore%7Bcontent%3A%22%5Ce090%22%7D%2Eglyphicon%2Darrow%2Dleft%3Abefore%7Bcontent%3A%22%5Ce091%22%7D%2Eglyphicon%2Darrow%2Dright%3Abefore%7Bcontent%3A%22%5Ce092%22%7D%2Eglyphicon%2Darrow%2Dup%3Abefore%7Bcontent%3A%22%5Ce093%22%7D%2Eglyphicon%2Darrow%2Ddown%3Abefore%7Bcontent%3A%22%5Ce094%22%7D%2Eglyphicon%2Dshare%2Dalt%3Abefore%7Bcontent%3A%22%5Ce095%22%7D%2Eglyphicon%2Dresize%2Dfull%3Abefore%7Bcontent%3A%22%5Ce096%22%7D%2Eglyphicon%2Dresize%2Dsmall%3Abefore%7Bcontent%3A%22%5Ce097%22%7D%2Eglyphicon%2Dexclamation%2Dsign%3Abefore%7Bcontent%3A%22%5Ce101%22%7D%2Eglyphicon%2Dgift%3Abefore%7Bcontent%3A%22%5Ce102%22%7D%2Eglyphicon%2Dleaf%3Abefore%7Bcontent%3A%22%5Ce103%22%7D%2Eglyphicon%2Dfire%3Abefore%7Bcontent%3A%22%5Ce104%22%7D%2Eglyphicon%2Deye%2Dopen%3Abefore%7Bcontent%3A%22%5Ce105%22%7D%2Eglyphicon%2Deye%2Dclose%3Abefore%7Bcontent%3A%22%5Ce106%22%7D%2Eglyphicon%2Dwarning%2Dsign%3Abefore%7Bcontent%3A%22%5Ce107%22%7D%2Eglyphicon%2Dplane%3Abefore%7Bcontent%3A%22%5Ce108%22%7D%2Eglyphicon%2Dcalendar%3Abefore%7Bcontent%3A%22%5Ce109%22%7D%2Eglyphicon%2Drandom%3Abefore%7Bcontent%3A%22%5Ce110%22%7D%2Eglyphicon%2Dcomment%3Abefore%7Bcontent%3A%22%5Ce111%22%7D%2Eglyphicon%2Dmagnet%3Abefore%7Bcontent%3A%22%5Ce112%22%7D%2Eglyphicon%2Dchevron%2Dup%3Abefore%7Bcontent%3A%22%5Ce113%22%7D%2Eglyphicon%2Dchevron%2Ddown%3Abefore%7Bcontent%3A%22%5Ce114%22%7D%2Eglyphicon%2Dretweet%3Abefore%7Bcontent%3A%22%5Ce115%22%7D%2Eglyphicon%2Dshopping%2Dcart%3Abefore%7Bcontent%3A%22%5Ce116%22%7D%2Eglyphicon%2Dfolder%2Dclose%3Abefore%7Bcontent%3A%22%5Ce117%22%7D%2Eglyphicon%2Dfolder%2Dopen%3Abefore%7Bcontent%3A%22%5Ce118%22%7D%2Eglyphicon%2Dresize%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce119%22%7D%2Eglyphicon%2Dresize%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce120%22%7D%2Eglyphicon%2Dhdd%3Abefore%7Bcontent%3A%22%5Ce121%22%7D%2Eglyphicon%2Dbullhorn%3Abefore%7Bcontent%3A%22%5Ce122%22%7D%2Eglyphicon%2Dbell%3Abefore%7Bcontent%3A%22%5Ce123%22%7D%2Eglyphicon%2Dcertificate%3Abefore%7Bcontent%3A%22%5Ce124%22%7D%2Eglyphicon%2Dthumbs%2Dup%3Abefore%7Bcontent%3A%22%5Ce125%22%7D%2Eglyphicon%2Dthumbs%2Ddown%3Abefore%7Bcontent%3A%22%5Ce126%22%7D%2Eglyphicon%2Dhand%2Dright%3Abefore%7Bcontent%3A%22%5Ce127%22%7D%2Eglyphicon%2Dhand%2Dleft%3Abefore%7Bcontent%3A%22%5Ce128%22%7D%2Eglyphicon%2Dhand%2Dup%3Abefore%7Bcontent%3A%22%5Ce129%22%7D%2Eglyphicon%2Dhand%2Ddown%3Abefore%7Bcontent%3A%22%5Ce130%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dright%3Abefore%7Bcontent%3A%22%5Ce131%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dleft%3Abefore%7Bcontent%3A%22%5Ce132%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Dup%3Abefore%7Bcontent%3A%22%5Ce133%22%7D%2Eglyphicon%2Dcircle%2Darrow%2Ddown%3Abefore%7Bcontent%3A%22%5Ce134%22%7D%2Eglyphicon%2Dglobe%3Abefore%7Bcontent%3A%22%5Ce135%22%7D%2Eglyphicon%2Dwrench%3Abefore%7Bcontent%3A%22%5Ce136%22%7D%2Eglyphicon%2Dtasks%3Abefore%7Bcontent%3A%22%5Ce137%22%7D%2Eglyphicon%2Dfilter%3Abefore%7Bcontent%3A%22%5Ce138%22%7D%2Eglyphicon%2Dbriefcase%3Abefore%7Bcontent%3A%22%5Ce139%22%7D%2Eglyphicon%2Dfullscreen%3Abefore%7Bcontent%3A%22%5Ce140%22%7D%2Eglyphicon%2Ddashboard%3Abefore%7Bcontent%3A%22%5Ce141%22%7D%2Eglyphicon%2Dpaperclip%3Abefore%7Bcontent%3A%22%5Ce142%22%7D%2Eglyphicon%2Dheart%2Dempty%3Abefore%7Bcontent%3A%22%5Ce143%22%7D%2Eglyphicon%2Dlink%3Abefore%7Bcontent%3A%22%5Ce144%22%7D%2Eglyphicon%2Dphone%3Abefore%7Bcontent%3A%22%5Ce145%22%7D%2Eglyphicon%2Dpushpin%3Abefore%7Bcontent%3A%22%5Ce146%22%7D%2Eglyphicon%2Dusd%3Abefore%7Bcontent%3A%22%5Ce148%22%7D%2Eglyphicon%2Dgbp%3Abefore%7Bcontent%3A%22%5Ce149%22%7D%2Eglyphicon%2Dsort%3Abefore%7Bcontent%3A%22%5Ce150%22%7D%2Eglyphicon%2Dsort%2Dby%2Dalphabet%3Abefore%7Bcontent%3A%22%5Ce151%22%7D%2Eglyphicon%2Dsort%2Dby%2Dalphabet%2Dalt%3Abefore%7Bcontent%3A%22%5Ce152%22%7D%2Eglyphicon%2Dsort%2Dby%2Dorder%3Abefore%7Bcontent%3A%22%5Ce153%22%7D%2Eglyphicon%2Dsort%2Dby%2Dorder%2Dalt%3Abefore%7Bcontent%3A%22%5Ce154%22%7D%2Eglyphicon%2Dsort%2Dby%2Dattributes%3Abefore%7Bcontent%3A%22%5Ce155%22%7D%2Eglyphicon%2Dsort%2Dby%2Dattributes%2Dalt%3Abefore%7Bcontent%3A%22%5Ce156%22%7D%2Eglyphicon%2Dunchecked%3Abefore%7Bcontent%3A%22%5Ce157%22%7D%2Eglyphicon%2Dexpand%3Abefore%7Bcontent%3A%22%5Ce158%22%7D%2Eglyphicon%2Dcollapse%2Ddown%3Abefore%7Bcontent%3A%22%5Ce159%22%7D%2Eglyphicon%2Dcollapse%2Dup%3Abefore%7Bcontent%3A%22%5Ce160%22%7D%2Eglyphicon%2Dlog%2Din%3Abefore%7Bcontent%3A%22%5Ce161%22%7D%2Eglyphicon%2Dflash%3Abefore%7Bcontent%3A%22%5Ce162%22%7D%2Eglyphicon%2Dlog%2Dout%3Abefore%7Bcontent%3A%22%5Ce163%22%7D%2Eglyphicon%2Dnew%2Dwindow%3Abefore%7Bcontent%3A%22%5Ce164%22%7D%2Eglyphicon%2Drecord%3Abefore%7Bcontent%3A%22%5Ce165%22%7D%2Eglyphicon%2Dsave%3Abefore%7Bcontent%3A%22%5Ce166%22%7D%2Eglyphicon%2Dopen%3Abefore%7Bcontent%3A%22%5Ce167%22%7D%2Eglyphicon%2Dsaved%3Abefore%7Bcontent%3A%22%5Ce168%22%7D%2Eglyphicon%2Dimport%3Abefore%7Bcontent%3A%22%5Ce169%22%7D%2Eglyphicon%2Dexport%3Abefore%7Bcontent%3A%22%5Ce170%22%7D%2Eglyphicon%2Dsend%3Abefore%7Bcontent%3A%22%5Ce171%22%7D%2Eglyphicon%2Dfloppy%2Ddisk%3Abefore%7Bcontent%3A%22%5Ce172%22%7D%2Eglyphicon%2Dfloppy%2Dsaved%3Abefore%7Bcontent%3A%22%5Ce173%22%7D%2Eglyphicon%2Dfloppy%2Dremove%3Abefore%7Bcontent%3A%22%5Ce174%22%7D%2Eglyphicon%2Dfloppy%2Dsave%3Abefore%7Bcontent%3A%22%5Ce175%22%7D%2Eglyphicon%2Dfloppy%2Dopen%3Abefore%7Bcontent%3A%22%5Ce176%22%7D%2Eglyphicon%2Dcredit%2Dcard%3Abefore%7Bcontent%3A%22%5Ce177%22%7D%2Eglyphicon%2Dtransfer%3Abefore%7Bcontent%3A%22%5Ce178%22%7D%2Eglyphicon%2Dcutlery%3Abefore%7Bcontent%3A%22%5Ce179%22%7D%2Eglyphicon%2Dheader%3Abefore%7Bcontent%3A%22%5Ce180%22%7D%2Eglyphicon%2Dcompressed%3Abefore%7Bcontent%3A%22%5Ce181%22%7D%2Eglyphicon%2Dearphone%3Abefore%7Bcontent%3A%22%5Ce182%22%7D%2Eglyphicon%2Dphone%2Dalt%3Abefore%7Bcontent%3A%22%5Ce183%22%7D%2Eglyphicon%2Dtower%3Abefore%7Bcontent%3A%22%5Ce184%22%7D%2Eglyphicon%2Dstats%3Abefore%7Bcontent%3A%22%5Ce185%22%7D%2Eglyphicon%2Dsd%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce186%22%7D%2Eglyphicon%2Dhd%2Dvideo%3Abefore%7Bcontent%3A%22%5Ce187%22%7D%2Eglyphicon%2Dsubtitles%3Abefore%7Bcontent%3A%22%5Ce188%22%7D%2Eglyphicon%2Dsound%2Dstereo%3Abefore%7Bcontent%3A%22%5Ce189%22%7D%2Eglyphicon%2Dsound%2Ddolby%3Abefore%7Bcontent%3A%22%5Ce190%22%7D%2Eglyphicon%2Dsound%2D5%2D1%3Abefore%7Bcontent%3A%22%5Ce191%22%7D%2Eglyphicon%2Dsound%2D6%2D1%3Abefore%7Bcontent%3A%22%5Ce192%22%7D%2Eglyphicon%2Dsound%2D7%2D1%3Abefore%7Bcontent%3A%22%5Ce193%22%7D%2Eglyphicon%2Dcopyright%2Dmark%3Abefore%7Bcontent%3A%22%5Ce194%22%7D%2Eglyphicon%2Dregistration%2Dmark%3Abefore%7Bcontent%3A%22%5Ce195%22%7D%2Eglyphicon%2Dcloud%2Ddownload%3Abefore%7Bcontent%3A%22%5Ce197%22%7D%2Eglyphicon%2Dcloud%2Dupload%3Abefore%7Bcontent%3A%22%5Ce198%22%7D%2Eglyphicon%2Dtree%2Dconifer%3Abefore%7Bcontent%3A%22%5Ce199%22%7D%2Eglyphicon%2Dtree%2Ddeciduous%3Abefore%7Bcontent%3A%22%5Ce200%22%7D%2Eglyphicon%2Dcd%3Abefore%7Bcontent%3A%22%5Ce201%22%7D%2Eglyphicon%2Dsave%2Dfile%3Abefore%7Bcontent%3A%22%5Ce202%22%7D%2Eglyphicon%2Dopen%2Dfile%3Abefore%7Bcontent%3A%22%5Ce203%22%7D%2Eglyphicon%2Dlevel%2Dup%3Abefore%7Bcontent%3A%22%5Ce204%22%7D%2Eglyphicon%2Dcopy%3Abefore%7Bcontent%3A%22%5Ce205%22%7D%2Eglyphicon%2Dpaste%3Abefore%7Bcontent%3A%22%5Ce206%22%7D%2Eglyphicon%2Dalert%3Abefore%7Bcontent%3A%22%5Ce209%22%7D%2Eglyphicon%2Dequalizer%3Abefore%7Bcontent%3A%22%5Ce210%22%7D%2Eglyphicon%2Dking%3Abefore%7Bcontent%3A%22%5Ce211%22%7D%2Eglyphicon%2Dqueen%3Abefore%7Bcontent%3A%22%5Ce212%22%7D%2Eglyphicon%2Dpawn%3Abefore%7Bcontent%3A%22%5Ce213%22%7D%2Eglyphicon%2Dbishop%3Abefore%7Bcontent%3A%22%5Ce214%22%7D%2Eglyphicon%2Dknight%3Abefore%7Bcontent%3A%22%5Ce215%22%7D%2Eglyphicon%2Dbaby%2Dformula%3Abefore%7Bcontent%3A%22%5Ce216%22%7D%2Eglyphicon%2Dtent%3Abefore%7Bcontent%3A%22%5C26fa%22%7D%2Eglyphicon%2Dblackboard%3Abefore%7Bcontent%3A%22%5Ce218%22%7D%2Eglyphicon%2Dbed%3Abefore%7Bcontent%3A%22%5Ce219%22%7D%2Eglyphicon%2Dapple%3Abefore%7Bcontent%3A%22%5Cf8ff%22%7D%2Eglyphicon%2Derase%3Abefore%7Bcontent%3A%22%5Ce221%22%7D%2Eglyphicon%2Dhourglass%3Abefore%7Bcontent%3A%22%5C231b%22%7D%2Eglyphicon%2Dlamp%3Abefore%7Bcontent%3A%22%5Ce223%22%7D%2Eglyphicon%2Dduplicate%3Abefore%7Bcontent%3A%22%5Ce224%22%7D%2Eglyphicon%2Dpiggy%2Dbank%3Abefore%7Bcontent%3A%22%5Ce225%22%7D%2Eglyphicon%2Dscissors%3Abefore%7Bcontent%3A%22%5Ce226%22%7D%2Eglyphicon%2Dbitcoin%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dbtc%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dxbt%3Abefore%7Bcontent%3A%22%5Ce227%22%7D%2Eglyphicon%2Dyen%3Abefore%7Bcontent%3A%22%5C00a5%22%7D%2Eglyphicon%2Djpy%3Abefore%7Bcontent%3A%22%5C00a5%22%7D%2Eglyphicon%2Druble%3Abefore%7Bcontent%3A%22%5C20bd%22%7D%2Eglyphicon%2Drub%3Abefore%7Bcontent%3A%22%5C20bd%22%7D%2Eglyphicon%2Dscale%3Abefore%7Bcontent%3A%22%5Ce230%22%7D%2Eglyphicon%2Dice%2Dlolly%3Abefore%7Bcontent%3A%22%5Ce231%22%7D%2Eglyphicon%2Dice%2Dlolly%2Dtasted%3Abefore%7Bcontent%3A%22%5Ce232%22%7D%2Eglyphicon%2Deducation%3Abefore%7Bcontent%3A%22%5Ce233%22%7D%2Eglyphicon%2Doption%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce234%22%7D%2Eglyphicon%2Doption%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce235%22%7D%2Eglyphicon%2Dmenu%2Dhamburger%3Abefore%7Bcontent%3A%22%5Ce236%22%7D%2Eglyphicon%2Dmodal%2Dwindow%3Abefore%7Bcontent%3A%22%5Ce237%22%7D%2Eglyphicon%2Doil%3Abefore%7Bcontent%3A%22%5Ce238%22%7D%2Eglyphicon%2Dgrain%3Abefore%7Bcontent%3A%22%5Ce239%22%7D%2Eglyphicon%2Dsunglasses%3Abefore%7Bcontent%3A%22%5Ce240%22%7D%2Eglyphicon%2Dtext%2Dsize%3Abefore%7Bcontent%3A%22%5Ce241%22%7D%2Eglyphicon%2Dtext%2Dcolor%3Abefore%7Bcontent%3A%22%5Ce242%22%7D%2Eglyphicon%2Dtext%2Dbackground%3Abefore%7Bcontent%3A%22%5Ce243%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dtop%3Abefore%7Bcontent%3A%22%5Ce244%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dbottom%3Abefore%7Bcontent%3A%22%5Ce245%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dhorizontal%3Abefore%7Bcontent%3A%22%5Ce246%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dleft%3Abefore%7Bcontent%3A%22%5Ce247%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dvertical%3Abefore%7Bcontent%3A%22%5Ce248%22%7D%2Eglyphicon%2Dobject%2Dalign%2Dright%3Abefore%7Bcontent%3A%22%5Ce249%22%7D%2Eglyphicon%2Dtriangle%2Dright%3Abefore%7Bcontent%3A%22%5Ce250%22%7D%2Eglyphicon%2Dtriangle%2Dleft%3Abefore%7Bcontent%3A%22%5Ce251%22%7D%2Eglyphicon%2Dtriangle%2Dbottom%3Abefore%7Bcontent%3A%22%5Ce252%22%7D%2Eglyphicon%2Dtriangle%2Dtop%3Abefore%7Bcontent%3A%22%5Ce253%22%7D%2Eglyphicon%2Dconsole%3Abefore%7Bcontent%3A%22%5Ce254%22%7D%2Eglyphicon%2Dsuperscript%3Abefore%7Bcontent%3A%22%5Ce255%22%7D%2Eglyphicon%2Dsubscript%3Abefore%7Bcontent%3A%22%5Ce256%22%7D%2Eglyphicon%2Dmenu%2Dleft%3Abefore%7Bcontent%3A%22%5Ce257%22%7D%2Eglyphicon%2Dmenu%2Dright%3Abefore%7Bcontent%3A%22%5Ce258%22%7D%2Eglyphicon%2Dmenu%2Ddown%3Abefore%7Bcontent%3A%22%5Ce259%22%7D%2Eglyphicon%2Dmenu%2Dup%3Abefore%7Bcontent%3A%22%5Ce260%22%7D%2A%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2A%3Abefore%2C%2A%3Aafter%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7Dhtml%7Bfont%2Dsize%3A10px%3B%2Dwebkit%2Dtap%2Dhighlight%2Dcolor%3Argba%280%2C0%2C0%2C0%29%7Dbody%7Bfont%2Dfamily%3A%22Source%20Sans%20Pro%22%2C%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23ffffff%7Dinput%2Cbutton%2Cselect%2Ctextarea%7Bfont%2Dfamily%3Ainherit%3Bfont%2Dsize%3Ainherit%3Bline%2Dheight%3Ainherit%7Da%7Bcolor%3A%23158cba%3Btext%2Ddecoration%3Anone%7Da%3Ahover%2Ca%3Afocus%7Bcolor%3A%23158cba%3Btext%2Ddecoration%3Aunderline%7Da%3Afocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7Dfigure%7Bmargin%3A0%7Dimg%7Bvertical%2Dalign%3Amiddle%7D%2Eimg%2Dresponsive%2C%2Ethumbnail%3Eimg%2C%2Ethumbnail%20a%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Ea%3Eimg%7Bdisplay%3Ablock%3Bmax%2Dwidth%3A100%25%3Bheight%3Aauto%7D%2Eimg%2Drounded%7Bborder%2Dradius%3A5px%7D%2Eimg%2Dthumbnail%7Bpadding%3A4px%3Bline%2Dheight%3A1%2E42857143%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23eeeeee%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aall%20%2E2s%20ease%2Din%2Dout%3Bdisplay%3Ainline%2Dblock%3Bmax%2Dwidth%3A100%25%3Bheight%3Aauto%7D%2Eimg%2Dcircle%7Bborder%2Dradius%3A50%25%7Dhr%7Bmargin%2Dtop%3A20px%3Bmargin%2Dbottom%3A20px%3Bborder%3A0%3Bborder%2Dtop%3A1px%20solid%20%23eeeeee%7D%2Esr%2Donly%7Bposition%3Aabsolute%3Bwidth%3A1px%3Bheight%3A1px%3Bmargin%3A%2D1px%3Bpadding%3A0%3Boverflow%3Ahidden%3Bclip%3Arect%280%2C%200%2C%200%2C%200%29%3Bborder%3A0%7D%2Esr%2Donly%2Dfocusable%3Aactive%2C%2Esr%2Donly%2Dfocusable%3Afocus%7Bposition%3Astatic%3Bwidth%3Aauto%3Bheight%3Aauto%3Bmargin%3A0%3Boverflow%3Avisible%3Bclip%3Aauto%7D%5Brole%3D%22button%22%5D%7Bcursor%3Apointer%7Dh1%2Ch2%2Ch3%2Ch4%2Ch5%2Ch6%2C%2Eh1%2C%2Eh2%2C%2Eh3%2C%2Eh4%2C%2Eh5%2C%2Eh6%7Bfont%2Dfamily%3Ainherit%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A1%2E1%3Bcolor%3A%23333333%7Dh1%20small%2Ch2%20small%2Ch3%20small%2Ch4%20small%2Ch5%20small%2Ch6%20small%2C%2Eh1%20small%2C%2Eh2%20small%2C%2Eh3%20small%2C%2Eh4%20small%2C%2Eh5%20small%2C%2Eh6%20small%2Ch1%20%2Esmall%2Ch2%20%2Esmall%2Ch3%20%2Esmall%2Ch4%20%2Esmall%2Ch5%20%2Esmall%2Ch6%20%2Esmall%2C%2Eh1%20%2Esmall%2C%2Eh2%20%2Esmall%2C%2Eh3%20%2Esmall%2C%2Eh4%20%2Esmall%2C%2Eh5%20%2Esmall%2C%2Eh6%20%2Esmall%7Bfont%2Dweight%3Anormal%3Bline%2Dheight%3A1%3Bcolor%3A%23999999%7Dh1%2C%2Eh1%2Ch2%2C%2Eh2%2Ch3%2C%2Eh3%7Bmargin%2Dtop%3A20px%3Bmargin%2Dbottom%3A10px%7Dh1%20small%2C%2Eh1%20small%2Ch2%20small%2C%2Eh2%20small%2Ch3%20small%2C%2Eh3%20small%2Ch1%20%2Esmall%2C%2Eh1%20%2Esmall%2Ch2%20%2Esmall%2C%2Eh2%20%2Esmall%2Ch3%20%2Esmall%2C%2Eh3%20%2Esmall%7Bfont%2Dsize%3A65%25%7Dh4%2C%2Eh4%2Ch5%2C%2Eh5%2Ch6%2C%2Eh6%7Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7Dh4%20small%2C%2Eh4%20small%2Ch5%20small%2C%2Eh5%20small%2Ch6%20small%2C%2Eh6%20small%2Ch4%20%2Esmall%2C%2Eh4%20%2Esmall%2Ch5%20%2Esmall%2C%2Eh5%20%2Esmall%2Ch6%20%2Esmall%2C%2Eh6%20%2Esmall%7Bfont%2Dsize%3A75%25%7Dh1%2C%2Eh1%7Bfont%2Dsize%3A36px%7Dh2%2C%2Eh2%7Bfont%2Dsize%3A30px%7Dh3%2C%2Eh3%7Bfont%2Dsize%3A24px%7Dh4%2C%2Eh4%7Bfont%2Dsize%3A18px%7Dh5%2C%2Eh5%7Bfont%2Dsize%3A14px%7Dh6%2C%2Eh6%7Bfont%2Dsize%3A12px%7Dp%7Bmargin%3A0%200%2010px%7D%2Elead%7Bmargin%2Dbottom%3A20px%3Bfont%2Dsize%3A16px%3Bfont%2Dweight%3A300%3Bline%2Dheight%3A1%2E4%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Elead%7Bfont%2Dsize%3A21px%7D%7Dsmall%2C%2Esmall%7Bfont%2Dsize%3A85%25%7Dmark%2C%2Emark%7Bbackground%2Dcolor%3A%23ff851b%3Bpadding%3A%2E2em%7D%2Etext%2Dleft%7Btext%2Dalign%3Aleft%7D%2Etext%2Dright%7Btext%2Dalign%3Aright%7D%2Etext%2Dcenter%7Btext%2Dalign%3Acenter%7D%2Etext%2Djustify%7Btext%2Dalign%3Ajustify%7D%2Etext%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7D%2Etext%2Dlowercase%7Btext%2Dtransform%3Alowercase%7D%2Etext%2Duppercase%7Btext%2Dtransform%3Auppercase%7D%2Etext%2Dcapitalize%7Btext%2Dtransform%3Acapitalize%7D%2Etext%2Dmuted%7Bcolor%3A%23999999%7D%2Etext%2Dprimary%7Bcolor%3A%23158cba%7Da%2Etext%2Dprimary%3Ahover%2Ca%2Etext%2Dprimary%3Afocus%7Bcolor%3A%23106a8c%7D%2Etext%2Dsuccess%7Bcolor%3A%23ffffff%7Da%2Etext%2Dsuccess%3Ahover%2Ca%2Etext%2Dsuccess%3Afocus%7Bcolor%3A%23e6e6e6%7D%2Etext%2Dinfo%7Bcolor%3A%23ffffff%7Da%2Etext%2Dinfo%3Ahover%2Ca%2Etext%2Dinfo%3Afocus%7Bcolor%3A%23e6e6e6%7D%2Etext%2Dwarning%7Bcolor%3A%23ffffff%7Da%2Etext%2Dwarning%3Ahover%2Ca%2Etext%2Dwarning%3Afocus%7Bcolor%3A%23e6e6e6%7D%2Etext%2Ddanger%7Bcolor%3A%23ffffff%7Da%2Etext%2Ddanger%3Ahover%2Ca%2Etext%2Ddanger%3Afocus%7Bcolor%3A%23e6e6e6%7D%2Ebg%2Dprimary%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23158cba%7Da%2Ebg%2Dprimary%3Ahover%2Ca%2Ebg%2Dprimary%3Afocus%7Bbackground%2Dcolor%3A%23106a8c%7D%2Ebg%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%7Da%2Ebg%2Dsuccess%3Ahover%2Ca%2Ebg%2Dsuccess%3Afocus%7Bbackground%2Dcolor%3A%231f8c22%7D%2Ebg%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%7Da%2Ebg%2Dinfo%3Ahover%2Ca%2Ebg%2Dinfo%3Afocus%7Bbackground%2Dcolor%3A%2348b9e5%7D%2Ebg%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%7Da%2Ebg%2Dwarning%3Ahover%2Ca%2Ebg%2Dwarning%3Afocus%7Bbackground%2Dcolor%3A%23e76b00%7D%2Ebg%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%7Da%2Ebg%2Ddanger%3Ahover%2Ca%2Ebg%2Ddanger%3Afocus%7Bbackground%2Dcolor%3A%23ff1103%7D%2Epage%2Dheader%7Bpadding%2Dbottom%3A9px%3Bmargin%3A40px%200%2020px%3Bborder%2Dbottom%3A1px%20solid%20%23eeeeee%7Dul%2Col%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A10px%7Dul%20ul%2Col%20ul%2Cul%20ol%2Col%20ol%7Bmargin%2Dbottom%3A0%7D%2Elist%2Dunstyled%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Elist%2Dinline%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%3Bmargin%2Dleft%3A%2D5px%7D%2Elist%2Dinline%3Eli%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A5px%3Bpadding%2Dright%3A5px%7Ddl%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A20px%7Ddt%2Cdd%7Bline%2Dheight%3A1%2E42857143%7Ddt%7Bfont%2Dweight%3Abold%7Ddd%7Bmargin%2Dleft%3A0%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Edl%2Dhorizontal%20dt%7Bfloat%3Aleft%3Bwidth%3A160px%3Bclear%3Aleft%3Btext%2Dalign%3Aright%3Boverflow%3Ahidden%3Btext%2Doverflow%3Aellipsis%3Bwhite%2Dspace%3Anowrap%7D%2Edl%2Dhorizontal%20dd%7Bmargin%2Dleft%3A180px%7D%7Dabbr%5Btitle%5D%2Cabbr%5Bdata%2Doriginal%2Dtitle%5D%7Bcursor%3Ahelp%3Bborder%2Dbottom%3A1px%20dotted%20%23999999%7D%2Einitialism%7Bfont%2Dsize%3A90%25%3Btext%2Dtransform%3Auppercase%7Dblockquote%7Bpadding%3A10px%2020px%3Bmargin%3A0%200%2020px%3Bfont%2Dsize%3A17%2E5px%3Bborder%2Dleft%3A5px%20solid%20%23eeeeee%7Dblockquote%20p%3Alast%2Dchild%2Cblockquote%20ul%3Alast%2Dchild%2Cblockquote%20ol%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7Dblockquote%20footer%2Cblockquote%20small%2Cblockquote%20%2Esmall%7Bdisplay%3Ablock%3Bfont%2Dsize%3A80%25%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23999999%7Dblockquote%20footer%3Abefore%2Cblockquote%20small%3Abefore%2Cblockquote%20%2Esmall%3Abefore%7Bcontent%3A%27%5C2014%20%5C00A0%27%7D%2Eblockquote%2Dreverse%2Cblockquote%2Epull%2Dright%7Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A0%3Bborder%2Dright%3A5px%20solid%20%23eeeeee%3Bborder%2Dleft%3A0%3Btext%2Dalign%3Aright%7D%2Eblockquote%2Dreverse%20footer%3Abefore%2Cblockquote%2Epull%2Dright%20footer%3Abefore%2C%2Eblockquote%2Dreverse%20small%3Abefore%2Cblockquote%2Epull%2Dright%20small%3Abefore%2C%2Eblockquote%2Dreverse%20%2Esmall%3Abefore%2Cblockquote%2Epull%2Dright%20%2Esmall%3Abefore%7Bcontent%3A%27%27%7D%2Eblockquote%2Dreverse%20footer%3Aafter%2Cblockquote%2Epull%2Dright%20footer%3Aafter%2C%2Eblockquote%2Dreverse%20small%3Aafter%2Cblockquote%2Epull%2Dright%20small%3Aafter%2C%2Eblockquote%2Dreverse%20%2Esmall%3Aafter%2Cblockquote%2Epull%2Dright%20%2Esmall%3Aafter%7Bcontent%3A%27%5C00A0%20%5C2014%27%7Daddress%7Bmargin%2Dbottom%3A20px%3Bfont%2Dstyle%3Anormal%3Bline%2Dheight%3A1%2E42857143%7Dcode%2Ckbd%2Cpre%2Csamp%7Bfont%2Dfamily%3Amonospace%7Dcode%7Bpadding%3A2px%204px%3Bfont%2Dsize%3A90%25%3Bcolor%3A%23c7254e%3Bbackground%2Dcolor%3A%23f9f2f4%3Bborder%2Dradius%3A4px%7Dkbd%7Bpadding%3A2px%204px%3Bfont%2Dsize%3A90%25%3Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23333333%3Bborder%2Dradius%3A2px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C0%2E25%29%3Bbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C0%2E25%29%7Dkbd%20kbd%7Bpadding%3A0%3Bfont%2Dsize%3A100%25%3Bfont%2Dweight%3Abold%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7Dpre%7Bdisplay%3Ablock%3Bpadding%3A9%2E5px%3Bmargin%3A0%200%2010px%3Bfont%2Dsize%3A13px%3Bline%2Dheight%3A1%2E42857143%3Bword%2Dbreak%3Abreak%2Dall%3Bword%2Dwrap%3Abreak%2Dword%3Bcolor%3A%23333333%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%3A1px%20solid%20%23cccccc%3Bborder%2Dradius%3A4px%7Dpre%20code%7Bpadding%3A0%3Bfont%2Dsize%3Ainherit%3Bcolor%3Ainherit%3Bwhite%2Dspace%3Apre%2Dwrap%3Bbackground%2Dcolor%3Atransparent%3Bborder%2Dradius%3A0%7D%2Epre%2Dscrollable%7Bmax%2Dheight%3A340px%3Boverflow%2Dy%3Ascroll%7D%2Econtainer%7Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%3Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Econtainer%7Bwidth%3A750px%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Econtainer%7Bwidth%3A970px%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Econtainer%7Bwidth%3A1170px%7D%7D%2Econtainer%2Dfluid%7Bmargin%2Dright%3Aauto%3Bmargin%2Dleft%3Aauto%3Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%2Erow%7Bmargin%2Dleft%3A%2D15px%3Bmargin%2Dright%3A%2D15px%7D%2Ecol%2Dxs%2D1%2C%2Ecol%2Dsm%2D1%2C%2Ecol%2Dmd%2D1%2C%2Ecol%2Dlg%2D1%2C%2Ecol%2Dxs%2D2%2C%2Ecol%2Dsm%2D2%2C%2Ecol%2Dmd%2D2%2C%2Ecol%2Dlg%2D2%2C%2Ecol%2Dxs%2D3%2C%2Ecol%2Dsm%2D3%2C%2Ecol%2Dmd%2D3%2C%2Ecol%2Dlg%2D3%2C%2Ecol%2Dxs%2D4%2C%2Ecol%2Dsm%2D4%2C%2Ecol%2Dmd%2D4%2C%2Ecol%2Dlg%2D4%2C%2Ecol%2Dxs%2D5%2C%2Ecol%2Dsm%2D5%2C%2Ecol%2Dmd%2D5%2C%2Ecol%2Dlg%2D5%2C%2Ecol%2Dxs%2D6%2C%2Ecol%2Dsm%2D6%2C%2Ecol%2Dmd%2D6%2C%2Ecol%2Dlg%2D6%2C%2Ecol%2Dxs%2D7%2C%2Ecol%2Dsm%2D7%2C%2Ecol%2Dmd%2D7%2C%2Ecol%2Dlg%2D7%2C%2Ecol%2Dxs%2D8%2C%2Ecol%2Dsm%2D8%2C%2Ecol%2Dmd%2D8%2C%2Ecol%2Dlg%2D8%2C%2Ecol%2Dxs%2D9%2C%2Ecol%2Dsm%2D9%2C%2Ecol%2Dmd%2D9%2C%2Ecol%2Dlg%2D9%2C%2Ecol%2Dxs%2D10%2C%2Ecol%2Dsm%2D10%2C%2Ecol%2Dmd%2D10%2C%2Ecol%2Dlg%2D10%2C%2Ecol%2Dxs%2D11%2C%2Ecol%2Dsm%2D11%2C%2Ecol%2Dmd%2D11%2C%2Ecol%2Dlg%2D11%2C%2Ecol%2Dxs%2D12%2C%2Ecol%2Dsm%2D12%2C%2Ecol%2Dmd%2D12%2C%2Ecol%2Dlg%2D12%7Bposition%3Arelative%3Bmin%2Dheight%3A1px%3Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%2Ecol%2Dxs%2D1%2C%2Ecol%2Dxs%2D2%2C%2Ecol%2Dxs%2D3%2C%2Ecol%2Dxs%2D4%2C%2Ecol%2Dxs%2D5%2C%2Ecol%2Dxs%2D6%2C%2Ecol%2Dxs%2D7%2C%2Ecol%2Dxs%2D8%2C%2Ecol%2Dxs%2D9%2C%2Ecol%2Dxs%2D10%2C%2Ecol%2Dxs%2D11%2C%2Ecol%2Dxs%2D12%7Bfloat%3Aleft%7D%2Ecol%2Dxs%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dxs%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dxs%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dxs%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dxs%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dxs%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dxs%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dxs%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dxs%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dxs%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dxs%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dxs%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dxs%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dxs%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dxs%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dxs%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dxs%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dxs%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dxs%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dxs%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dxs%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dxs%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dxs%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dxs%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dxs%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dxs%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dxs%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dxs%2Doffset%2D0%7Bmargin%2Dleft%3A0%25%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Ecol%2Dsm%2D1%2C%2Ecol%2Dsm%2D2%2C%2Ecol%2Dsm%2D3%2C%2Ecol%2Dsm%2D4%2C%2Ecol%2Dsm%2D5%2C%2Ecol%2Dsm%2D6%2C%2Ecol%2Dsm%2D7%2C%2Ecol%2Dsm%2D8%2C%2Ecol%2Dsm%2D9%2C%2Ecol%2Dsm%2D10%2C%2Ecol%2Dsm%2D11%2C%2Ecol%2Dsm%2D12%7Bfloat%3Aleft%7D%2Ecol%2Dsm%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dsm%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dsm%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dsm%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dsm%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dsm%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dsm%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dsm%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dsm%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dsm%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dsm%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dsm%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dsm%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dsm%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dsm%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dsm%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dsm%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dsm%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dsm%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dsm%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dsm%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dsm%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dsm%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dsm%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dsm%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dsm%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dsm%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dsm%2Doffset%2D0%7Bmargin%2Dleft%3A0%25%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Ecol%2Dmd%2D1%2C%2Ecol%2Dmd%2D2%2C%2Ecol%2Dmd%2D3%2C%2Ecol%2Dmd%2D4%2C%2Ecol%2Dmd%2D5%2C%2Ecol%2Dmd%2D6%2C%2Ecol%2Dmd%2D7%2C%2Ecol%2Dmd%2D8%2C%2Ecol%2Dmd%2D9%2C%2Ecol%2Dmd%2D10%2C%2Ecol%2Dmd%2D11%2C%2Ecol%2Dmd%2D12%7Bfloat%3Aleft%7D%2Ecol%2Dmd%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dmd%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dmd%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dmd%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dmd%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dmd%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dmd%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dmd%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dmd%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dmd%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dmd%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dmd%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dmd%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dmd%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dmd%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dmd%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dmd%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dmd%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dmd%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dmd%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dmd%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dmd%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dmd%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dmd%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dmd%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dmd%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dmd%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dmd%2Doffset%2D0%7Bmargin%2Dleft%3A0%25%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Ecol%2Dlg%2D1%2C%2Ecol%2Dlg%2D2%2C%2Ecol%2Dlg%2D3%2C%2Ecol%2Dlg%2D4%2C%2Ecol%2Dlg%2D5%2C%2Ecol%2Dlg%2D6%2C%2Ecol%2Dlg%2D7%2C%2Ecol%2Dlg%2D8%2C%2Ecol%2Dlg%2D9%2C%2Ecol%2Dlg%2D10%2C%2Ecol%2Dlg%2D11%2C%2Ecol%2Dlg%2D12%7Bfloat%3Aleft%7D%2Ecol%2Dlg%2D12%7Bwidth%3A100%25%7D%2Ecol%2Dlg%2D11%7Bwidth%3A91%2E66666667%25%7D%2Ecol%2Dlg%2D10%7Bwidth%3A83%2E33333333%25%7D%2Ecol%2Dlg%2D9%7Bwidth%3A75%25%7D%2Ecol%2Dlg%2D8%7Bwidth%3A66%2E66666667%25%7D%2Ecol%2Dlg%2D7%7Bwidth%3A58%2E33333333%25%7D%2Ecol%2Dlg%2D6%7Bwidth%3A50%25%7D%2Ecol%2Dlg%2D5%7Bwidth%3A41%2E66666667%25%7D%2Ecol%2Dlg%2D4%7Bwidth%3A33%2E33333333%25%7D%2Ecol%2Dlg%2D3%7Bwidth%3A25%25%7D%2Ecol%2Dlg%2D2%7Bwidth%3A16%2E66666667%25%7D%2Ecol%2Dlg%2D1%7Bwidth%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D12%7Bright%3A100%25%7D%2Ecol%2Dlg%2Dpull%2D11%7Bright%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D10%7Bright%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D9%7Bright%3A75%25%7D%2Ecol%2Dlg%2Dpull%2D8%7Bright%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D7%7Bright%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D6%7Bright%3A50%25%7D%2Ecol%2Dlg%2Dpull%2D5%7Bright%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D4%7Bright%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D3%7Bright%3A25%25%7D%2Ecol%2Dlg%2Dpull%2D2%7Bright%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Dpull%2D1%7Bright%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpull%2D0%7Bright%3Aauto%7D%2Ecol%2Dlg%2Dpush%2D12%7Bleft%3A100%25%7D%2Ecol%2Dlg%2Dpush%2D11%7Bleft%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D10%7Bleft%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D9%7Bleft%3A75%25%7D%2Ecol%2Dlg%2Dpush%2D8%7Bleft%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D7%7Bleft%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D6%7Bleft%3A50%25%7D%2Ecol%2Dlg%2Dpush%2D5%7Bleft%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D4%7Bleft%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D3%7Bleft%3A25%25%7D%2Ecol%2Dlg%2Dpush%2D2%7Bleft%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Dpush%2D1%7Bleft%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Dpush%2D0%7Bleft%3Aauto%7D%2Ecol%2Dlg%2Doffset%2D12%7Bmargin%2Dleft%3A100%25%7D%2Ecol%2Dlg%2Doffset%2D11%7Bmargin%2Dleft%3A91%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D10%7Bmargin%2Dleft%3A83%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D9%7Bmargin%2Dleft%3A75%25%7D%2Ecol%2Dlg%2Doffset%2D8%7Bmargin%2Dleft%3A66%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D7%7Bmargin%2Dleft%3A58%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D6%7Bmargin%2Dleft%3A50%25%7D%2Ecol%2Dlg%2Doffset%2D5%7Bmargin%2Dleft%3A41%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D4%7Bmargin%2Dleft%3A33%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D3%7Bmargin%2Dleft%3A25%25%7D%2Ecol%2Dlg%2Doffset%2D2%7Bmargin%2Dleft%3A16%2E66666667%25%7D%2Ecol%2Dlg%2Doffset%2D1%7Bmargin%2Dleft%3A8%2E33333333%25%7D%2Ecol%2Dlg%2Doffset%2D0%7Bmargin%2Dleft%3A0%25%7D%7Dtable%7Bbackground%2Dcolor%3Atransparent%7Dcaption%7Bpadding%2Dtop%3A8px%3Bpadding%2Dbottom%3A8px%3Bcolor%3A%23999999%3Btext%2Dalign%3Aleft%7Dth%7B%7D%2Etable%7Bwidth%3A100%25%3Bmax%2Dwidth%3A100%25%3Bmargin%2Dbottom%3A20px%7D%2Etable%3Ethead%3Etr%3Eth%2C%2Etable%3Etbody%3Etr%3Eth%2C%2Etable%3Etfoot%3Etr%3Eth%2C%2Etable%3Ethead%3Etr%3Etd%2C%2Etable%3Etbody%3Etr%3Etd%2C%2Etable%3Etfoot%3Etr%3Etd%7Bpadding%3A8px%3Bline%2Dheight%3A1%2E42857143%3Bvertical%2Dalign%3Atop%3Bborder%2Dtop%3A1px%20solid%20%23eeeeee%7D%2Etable%3Ethead%3Etr%3Eth%7Bvertical%2Dalign%3Abottom%3Bborder%2Dbottom%3A2px%20solid%20%23eeeeee%7D%2Etable%3Ecaption%2Bthead%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ecolgroup%2Bthead%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%3Eth%2C%2Etable%3Ecaption%2Bthead%3Etr%3Afirst%2Dchild%3Etd%2C%2Etable%3Ecolgroup%2Bthead%3Etr%3Afirst%2Dchild%3Etd%2C%2Etable%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%3Etd%7Bborder%2Dtop%3A0%7D%2Etable%3Etbody%2Btbody%7Bborder%2Dtop%3A2px%20solid%20%23eeeeee%7D%2Etable%20%2Etable%7Bbackground%2Dcolor%3A%23ffffff%7D%2Etable%2Dcondensed%3Ethead%3Etr%3Eth%2C%2Etable%2Dcondensed%3Etbody%3Etr%3Eth%2C%2Etable%2Dcondensed%3Etfoot%3Etr%3Eth%2C%2Etable%2Dcondensed%3Ethead%3Etr%3Etd%2C%2Etable%2Dcondensed%3Etbody%3Etr%3Etd%2C%2Etable%2Dcondensed%3Etfoot%3Etr%3Etd%7Bpadding%3A5px%7D%2Etable%2Dbordered%7Bborder%3A1px%20solid%20%23eeeeee%7D%2Etable%2Dbordered%3Ethead%3Etr%3Eth%2C%2Etable%2Dbordered%3Etbody%3Etr%3Eth%2C%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%2C%2Etable%2Dbordered%3Ethead%3Etr%3Etd%2C%2Etable%2Dbordered%3Etbody%3Etr%3Etd%2C%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%7Bborder%3A1px%20solid%20%23eeeeee%7D%2Etable%2Dbordered%3Ethead%3Etr%3Eth%2C%2Etable%2Dbordered%3Ethead%3Etr%3Etd%7Bborder%2Dbottom%2Dwidth%3A2px%7D%2Etable%2Dstriped%3Etbody%3Etr%3Anth%2Dof%2Dtype%28odd%29%7Bbackground%2Dcolor%3A%23f9f9f9%7D%2Etable%2Dhover%3Etbody%3Etr%3Ahover%7Bbackground%2Dcolor%3A%23f5f5f5%7Dtable%20col%5Bclass%2A%3D%22col%2D%22%5D%7Bposition%3Astatic%3Bfloat%3Anone%3Bdisplay%3Atable%2Dcolumn%7Dtable%20td%5Bclass%2A%3D%22col%2D%22%5D%2Ctable%20th%5Bclass%2A%3D%22col%2D%22%5D%7Bposition%3Astatic%3Bfloat%3Anone%3Bdisplay%3Atable%2Dcell%7D%2Etable%3Ethead%3Etr%3Etd%2Eactive%2C%2Etable%3Etbody%3Etr%3Etd%2Eactive%2C%2Etable%3Etfoot%3Etr%3Etd%2Eactive%2C%2Etable%3Ethead%3Etr%3Eth%2Eactive%2C%2Etable%3Etbody%3Etr%3Eth%2Eactive%2C%2Etable%3Etfoot%3Etr%3Eth%2Eactive%2C%2Etable%3Ethead%3Etr%2Eactive%3Etd%2C%2Etable%3Etbody%3Etr%2Eactive%3Etd%2C%2Etable%3Etfoot%3Etr%2Eactive%3Etd%2C%2Etable%3Ethead%3Etr%2Eactive%3Eth%2C%2Etable%3Etbody%3Etr%2Eactive%3Eth%2C%2Etable%3Etfoot%3Etr%2Eactive%3Eth%7Bbackground%2Dcolor%3A%23f5f5f5%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Eactive%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Eactive%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Eactive%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Eactive%2C%2Etable%2Dhover%3Etbody%3Etr%2Eactive%3Ahover%3Eth%7Bbackground%2Dcolor%3A%23e8e8e8%7D%2Etable%3Ethead%3Etr%3Etd%2Esuccess%2C%2Etable%3Etbody%3Etr%3Etd%2Esuccess%2C%2Etable%3Etfoot%3Etr%3Etd%2Esuccess%2C%2Etable%3Ethead%3Etr%3Eth%2Esuccess%2C%2Etable%3Etbody%3Etr%3Eth%2Esuccess%2C%2Etable%3Etfoot%3Etr%3Eth%2Esuccess%2C%2Etable%3Ethead%3Etr%2Esuccess%3Etd%2C%2Etable%3Etbody%3Etr%2Esuccess%3Etd%2C%2Etable%3Etfoot%3Etr%2Esuccess%3Etd%2C%2Etable%3Ethead%3Etr%2Esuccess%3Eth%2C%2Etable%3Etbody%3Etr%2Esuccess%3Eth%2C%2Etable%3Etfoot%3Etr%2Esuccess%3Eth%7Bbackground%2Dcolor%3A%2328b62c%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Esuccess%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Esuccess%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Esuccess%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Esuccess%2C%2Etable%2Dhover%3Etbody%3Etr%2Esuccess%3Ahover%3Eth%7Bbackground%2Dcolor%3A%2323a127%7D%2Etable%3Ethead%3Etr%3Etd%2Einfo%2C%2Etable%3Etbody%3Etr%3Etd%2Einfo%2C%2Etable%3Etfoot%3Etr%3Etd%2Einfo%2C%2Etable%3Ethead%3Etr%3Eth%2Einfo%2C%2Etable%3Etbody%3Etr%3Eth%2Einfo%2C%2Etable%3Etfoot%3Etr%3Eth%2Einfo%2C%2Etable%3Ethead%3Etr%2Einfo%3Etd%2C%2Etable%3Etbody%3Etr%2Einfo%3Etd%2C%2Etable%3Etfoot%3Etr%2Einfo%3Etd%2C%2Etable%3Ethead%3Etr%2Einfo%3Eth%2C%2Etable%3Etbody%3Etr%2Einfo%3Eth%2C%2Etable%3Etfoot%3Etr%2Einfo%3Eth%7Bbackground%2Dcolor%3A%2375caeb%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Einfo%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Einfo%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Einfo%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Einfo%2C%2Etable%2Dhover%3Etbody%3Etr%2Einfo%3Ahover%3Eth%7Bbackground%2Dcolor%3A%235fc1e8%7D%2Etable%3Ethead%3Etr%3Etd%2Ewarning%2C%2Etable%3Etbody%3Etr%3Etd%2Ewarning%2C%2Etable%3Etfoot%3Etr%3Etd%2Ewarning%2C%2Etable%3Ethead%3Etr%3Eth%2Ewarning%2C%2Etable%3Etbody%3Etr%3Eth%2Ewarning%2C%2Etable%3Etfoot%3Etr%3Eth%2Ewarning%2C%2Etable%3Ethead%3Etr%2Ewarning%3Etd%2C%2Etable%3Etbody%3Etr%2Ewarning%3Etd%2C%2Etable%3Etfoot%3Etr%2Ewarning%3Etd%2C%2Etable%3Ethead%3Etr%2Ewarning%3Eth%2C%2Etable%3Etbody%3Etr%2Ewarning%3Eth%2C%2Etable%3Etfoot%3Etr%2Ewarning%3Eth%7Bbackground%2Dcolor%3A%23ff851b%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Ewarning%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Ewarning%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Ewarning%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Ewarning%2C%2Etable%2Dhover%3Etbody%3Etr%2Ewarning%3Ahover%3Eth%7Bbackground%2Dcolor%3A%23ff7701%7D%2Etable%3Ethead%3Etr%3Etd%2Edanger%2C%2Etable%3Etbody%3Etr%3Etd%2Edanger%2C%2Etable%3Etfoot%3Etr%3Etd%2Edanger%2C%2Etable%3Ethead%3Etr%3Eth%2Edanger%2C%2Etable%3Etbody%3Etr%3Eth%2Edanger%2C%2Etable%3Etfoot%3Etr%3Eth%2Edanger%2C%2Etable%3Ethead%3Etr%2Edanger%3Etd%2C%2Etable%3Etbody%3Etr%2Edanger%3Etd%2C%2Etable%3Etfoot%3Etr%2Edanger%3Etd%2C%2Etable%3Ethead%3Etr%2Edanger%3Eth%2C%2Etable%3Etbody%3Etr%2Edanger%3Eth%2C%2Etable%3Etfoot%3Etr%2Edanger%3Eth%7Bbackground%2Dcolor%3A%23ff4136%7D%2Etable%2Dhover%3Etbody%3Etr%3Etd%2Edanger%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%3Eth%2Edanger%3Ahover%2C%2Etable%2Dhover%3Etbody%3Etr%2Edanger%3Ahover%3Etd%2C%2Etable%2Dhover%3Etbody%3Etr%3Ahover%3E%2Edanger%2C%2Etable%2Dhover%3Etbody%3Etr%2Edanger%3Ahover%3Eth%7Bbackground%2Dcolor%3A%23ff291c%7D%2Etable%2Dresponsive%7Boverflow%2Dx%3Aauto%3Bmin%2Dheight%3A0%2E01%25%7D%40media%20screen%20and%20%28max%2Dwidth%3A767px%29%7B%2Etable%2Dresponsive%7Bwidth%3A100%25%3Bmargin%2Dbottom%3A15px%3Boverflow%2Dy%3Ahidden%3B%2Dms%2Doverflow%2Dstyle%3A%2Dms%2Dautohiding%2Dscrollbar%3Bborder%3A1px%20solid%20%23eeeeee%7D%2Etable%2Dresponsive%3E%2Etable%7Bmargin%2Dbottom%3A0%7D%2Etable%2Dresponsive%3E%2Etable%3Ethead%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Etbody%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Etfoot%3Etr%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%3Ethead%3Etr%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%3Etbody%3Etr%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%3Etfoot%3Etr%3Etd%7Bwhite%2Dspace%3Anowrap%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%7Bborder%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%7Bborder%2Dleft%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%7Bborder%2Dright%3A0%7D%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%7Bborder%2Dbottom%3A0%7D%7Dfieldset%7Bpadding%3A0%3Bmargin%3A0%3Bborder%3A0%3Bmin%2Dwidth%3A0%7Dlegend%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bpadding%3A0%3Bmargin%2Dbottom%3A20px%3Bfont%2Dsize%3A21px%3Bline%2Dheight%3Ainherit%3Bcolor%3A%23333333%3Bborder%3A0%3Bborder%2Dbottom%3A1px%20solid%20%23e5e5e5%7Dlabel%7Bdisplay%3Ainline%2Dblock%3Bmax%2Dwidth%3A100%25%3Bmargin%2Dbottom%3A5px%3Bfont%2Dweight%3Abold%7Dinput%5Btype%3D%22search%22%5D%7B%2Dwebkit%2Dbox%2Dsizing%3Aborder%2Dbox%3B%2Dmoz%2Dbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dsizing%3Aborder%2Dbox%7Dinput%5Btype%3D%22radio%22%5D%2Cinput%5Btype%3D%22checkbox%22%5D%7Bmargin%3A4px%200%200%3Bmargin%2Dtop%3A1px%20%5C9%3Bline%2Dheight%3Anormal%7Dinput%5Btype%3D%22file%22%5D%7Bdisplay%3Ablock%7Dinput%5Btype%3D%22range%22%5D%7Bdisplay%3Ablock%3Bwidth%3A100%25%7Dselect%5Bmultiple%5D%2Cselect%5Bsize%5D%7Bheight%3Aauto%7Dinput%5Btype%3D%22file%22%5D%3Afocus%2Cinput%5Btype%3D%22radio%22%5D%3Afocus%2Cinput%5Btype%3D%22checkbox%22%5D%3Afocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7Doutput%7Bdisplay%3Ablock%3Bpadding%2Dtop%3A8px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555555%7D%2Eform%2Dcontrol%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bheight%3A38px%3Bpadding%3A7px%2012px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23ffffff%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3B%2Dwebkit%2Dtransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2C%2Dwebkit%2Dbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%3B%2Do%2Dtransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2Cbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%3Btransition%3Aborder%2Dcolor%20ease%2Din%2Dout%20%2E15s%2Cbox%2Dshadow%20ease%2Din%2Dout%20%2E15s%7D%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%2366afe9%3Boutline%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%208px%20rgba%28102%2C175%2C233%2C0%2E6%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%208px%20rgba%28102%2C175%2C233%2C0%2E6%29%7D%2Eform%2Dcontrol%3A%3A%2Dmoz%2Dplaceholder%7Bcolor%3A%23999999%3Bopacity%3A1%7D%2Eform%2Dcontrol%3A%2Dms%2Dinput%2Dplaceholder%7Bcolor%3A%23999999%7D%2Eform%2Dcontrol%3A%3A%2Dwebkit%2Dinput%2Dplaceholder%7Bcolor%3A%23999999%7D%2Eform%2Dcontrol%3A%3A%2Dms%2Dexpand%7Bborder%3A0%3Bbackground%2Dcolor%3Atransparent%7D%2Eform%2Dcontrol%5Bdisabled%5D%2C%2Eform%2Dcontrol%5Breadonly%5D%2Cfieldset%5Bdisabled%5D%20%2Eform%2Dcontrol%7Bbackground%2Dcolor%3A%23eeeeee%3Bopacity%3A1%7D%2Eform%2Dcontrol%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Eform%2Dcontrol%7Bcursor%3Anot%2Dallowed%7Dtextarea%2Eform%2Dcontrol%7Bheight%3Aauto%7Dinput%5Btype%3D%22search%22%5D%7B%2Dwebkit%2Dappearance%3Anone%7D%40media%20screen%20and%20%28%2Dwebkit%2Dmin%2Ddevice%2Dpixel%2Dratio%3A0%29%7Binput%5Btype%3D%22date%22%5D%2Eform%2Dcontrol%2Cinput%5Btype%3D%22time%22%5D%2Eform%2Dcontrol%2Cinput%5Btype%3D%22datetime%2Dlocal%22%5D%2Eform%2Dcontrol%2Cinput%5Btype%3D%22month%22%5D%2Eform%2Dcontrol%7Bline%2Dheight%3A38px%7Dinput%5Btype%3D%22date%22%5D%2Einput%2Dsm%2Cinput%5Btype%3D%22time%22%5D%2Einput%2Dsm%2Cinput%5Btype%3D%22datetime%2Dlocal%22%5D%2Einput%2Dsm%2Cinput%5Btype%3D%22month%22%5D%2Einput%2Dsm%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3D%22date%22%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3D%22time%22%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3D%22datetime%2Dlocal%22%5D%2C%2Einput%2Dgroup%2Dsm%20input%5Btype%3D%22month%22%5D%7Bline%2Dheight%3A28px%7Dinput%5Btype%3D%22date%22%5D%2Einput%2Dlg%2Cinput%5Btype%3D%22time%22%5D%2Einput%2Dlg%2Cinput%5Btype%3D%22datetime%2Dlocal%22%5D%2Einput%2Dlg%2Cinput%5Btype%3D%22month%22%5D%2Einput%2Dlg%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3D%22date%22%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3D%22time%22%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3D%22datetime%2Dlocal%22%5D%2C%2Einput%2Dgroup%2Dlg%20input%5Btype%3D%22month%22%5D%7Bline%2Dheight%3A52px%7D%7D%2Eform%2Dgroup%7Bmargin%2Dbottom%3A15px%7D%2Eradio%2C%2Echeckbox%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7D%2Eradio%20label%2C%2Echeckbox%20label%7Bmin%2Dheight%3A20px%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3Anormal%3Bcursor%3Apointer%7D%2Eradio%20input%5Btype%3D%22radio%22%5D%2C%2Eradio%2Dinline%20input%5Btype%3D%22radio%22%5D%2C%2Echeckbox%20input%5Btype%3D%22checkbox%22%5D%2C%2Echeckbox%2Dinline%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Aabsolute%3Bmargin%2Dleft%3A%2D20px%3Bmargin%2Dtop%3A4px%20%5C9%7D%2Eradio%2B%2Eradio%2C%2Echeckbox%2B%2Echeckbox%7Bmargin%2Dtop%3A%2D5px%7D%2Eradio%2Dinline%2C%2Echeckbox%2Dinline%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%3Bfont%2Dweight%3Anormal%3Bcursor%3Apointer%7D%2Eradio%2Dinline%2B%2Eradio%2Dinline%2C%2Echeckbox%2Dinline%2B%2Echeckbox%2Dinline%7Bmargin%2Dtop%3A0%3Bmargin%2Dleft%3A10px%7Dinput%5Btype%3D%22radio%22%5D%5Bdisabled%5D%2Cinput%5Btype%3D%22checkbox%22%5D%5Bdisabled%5D%2Cinput%5Btype%3D%22radio%22%5D%2Edisabled%2Cinput%5Btype%3D%22checkbox%22%5D%2Edisabled%2Cfieldset%5Bdisabled%5D%20input%5Btype%3D%22radio%22%5D%2Cfieldset%5Bdisabled%5D%20input%5Btype%3D%22checkbox%22%5D%7Bcursor%3Anot%2Dallowed%7D%2Eradio%2Dinline%2Edisabled%2C%2Echeckbox%2Dinline%2Edisabled%2Cfieldset%5Bdisabled%5D%20%2Eradio%2Dinline%2Cfieldset%5Bdisabled%5D%20%2Echeckbox%2Dinline%7Bcursor%3Anot%2Dallowed%7D%2Eradio%2Edisabled%20label%2C%2Echeckbox%2Edisabled%20label%2Cfieldset%5Bdisabled%5D%20%2Eradio%20label%2Cfieldset%5Bdisabled%5D%20%2Echeckbox%20label%7Bcursor%3Anot%2Dallowed%7D%2Eform%2Dcontrol%2Dstatic%7Bpadding%2Dtop%3A8px%3Bpadding%2Dbottom%3A8px%3Bmargin%2Dbottom%3A0%3Bmin%2Dheight%3A34px%7D%2Eform%2Dcontrol%2Dstatic%2Einput%2Dlg%2C%2Eform%2Dcontrol%2Dstatic%2Einput%2Dsm%7Bpadding%2Dleft%3A0%3Bpadding%2Dright%3A0%7D%2Einput%2Dsm%7Bheight%3A28px%3Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7Dselect%2Einput%2Dsm%7Bheight%3A28px%3Bline%2Dheight%3A28px%7Dtextarea%2Einput%2Dsm%2Cselect%5Bmultiple%5D%2Einput%2Dsm%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%7Bheight%3A28px%3Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7D%2Eform%2Dgroup%2Dsm%20select%2Eform%2Dcontrol%7Bheight%3A28px%3Bline%2Dheight%3A28px%7D%2Eform%2Dgroup%2Dsm%20textarea%2Eform%2Dcontrol%2C%2Eform%2Dgroup%2Dsm%20select%5Bmultiple%5D%2Eform%2Dcontrol%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%2Dstatic%7Bheight%3A28px%3Bmin%2Dheight%3A32px%3Bpadding%3A5px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%7D%2Einput%2Dlg%7Bheight%3A52px%3Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A5px%7Dselect%2Einput%2Dlg%7Bheight%3A52px%3Bline%2Dheight%3A52px%7Dtextarea%2Einput%2Dlg%2Cselect%5Bmultiple%5D%2Einput%2Dlg%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%7Bheight%3A52px%3Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A5px%7D%2Eform%2Dgroup%2Dlg%20select%2Eform%2Dcontrol%7Bheight%3A52px%3Bline%2Dheight%3A52px%7D%2Eform%2Dgroup%2Dlg%20textarea%2Eform%2Dcontrol%2C%2Eform%2Dgroup%2Dlg%20select%5Bmultiple%5D%2Eform%2Dcontrol%7Bheight%3Aauto%7D%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%2Dstatic%7Bheight%3A52px%3Bmin%2Dheight%3A38px%3Bpadding%3A14px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%7D%2Ehas%2Dfeedback%7Bposition%3Arelative%7D%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%7Bpadding%2Dright%3A47%2E5px%7D%2Eform%2Dcontrol%2Dfeedback%7Bposition%3Aabsolute%3Btop%3A0%3Bright%3A0%3Bz%2Dindex%3A2%3Bdisplay%3Ablock%3Bwidth%3A38px%3Bheight%3A38px%3Bline%2Dheight%3A38px%3Btext%2Dalign%3Acenter%3Bpointer%2Devents%3Anone%7D%2Einput%2Dlg%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dgroup%2Dlg%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Eform%2Dgroup%2Dlg%20%2Eform%2Dcontrol%2B%2Eform%2Dcontrol%2Dfeedback%7Bwidth%3A52px%3Bheight%3A52px%3Bline%2Dheight%3A52px%7D%2Einput%2Dsm%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Einput%2Dgroup%2Dsm%2B%2Eform%2Dcontrol%2Dfeedback%2C%2Eform%2Dgroup%2Dsm%20%2Eform%2Dcontrol%2B%2Eform%2Dcontrol%2Dfeedback%7Bwidth%3A28px%3Bheight%3A28px%3Bline%2Dheight%3A28px%7D%2Ehas%2Dsuccess%20%2Ehelp%2Dblock%2C%2Ehas%2Dsuccess%20%2Econtrol%2Dlabel%2C%2Ehas%2Dsuccess%20%2Eradio%2C%2Ehas%2Dsuccess%20%2Echeckbox%2C%2Ehas%2Dsuccess%20%2Eradio%2Dinline%2C%2Ehas%2Dsuccess%20%2Echeckbox%2Dinline%2C%2Ehas%2Dsuccess%2Eradio%20label%2C%2Ehas%2Dsuccess%2Echeckbox%20label%2C%2Ehas%2Dsuccess%2Eradio%2Dinline%20label%2C%2Ehas%2Dsuccess%2Echeckbox%2Dinline%20label%7Bcolor%3A%23ffffff%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%23ffffff%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%23e6e6e6%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%7D%2Ehas%2Dsuccess%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2328b62c%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ffffff%7D%2Ehas%2Dwarning%20%2Ehelp%2Dblock%2C%2Ehas%2Dwarning%20%2Econtrol%2Dlabel%2C%2Ehas%2Dwarning%20%2Eradio%2C%2Ehas%2Dwarning%20%2Echeckbox%2C%2Ehas%2Dwarning%20%2Eradio%2Dinline%2C%2Ehas%2Dwarning%20%2Echeckbox%2Dinline%2C%2Ehas%2Dwarning%2Eradio%20label%2C%2Ehas%2Dwarning%2Echeckbox%20label%2C%2Ehas%2Dwarning%2Eradio%2Dinline%20label%2C%2Ehas%2Dwarning%2Echeckbox%2Dinline%20label%7Bcolor%3A%23ffffff%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%23ffffff%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%23e6e6e6%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%7D%2Ehas%2Dwarning%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff851b%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ffffff%7D%2Ehas%2Derror%20%2Ehelp%2Dblock%2C%2Ehas%2Derror%20%2Econtrol%2Dlabel%2C%2Ehas%2Derror%20%2Eradio%2C%2Ehas%2Derror%20%2Echeckbox%2C%2Ehas%2Derror%20%2Eradio%2Dinline%2C%2Ehas%2Derror%20%2Echeckbox%2Dinline%2C%2Ehas%2Derror%2Eradio%20label%2C%2Ehas%2Derror%2Echeckbox%20label%2C%2Ehas%2Derror%2Eradio%2Dinline%20label%2C%2Ehas%2Derror%2Echeckbox%2Dinline%20label%7Bcolor%3A%23ffffff%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%7Bborder%2Dcolor%3A%23ffffff%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%3Afocus%7Bborder%2Dcolor%3A%23e6e6e6%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E075%29%2C0%200%206px%20%23fff%7D%2Ehas%2Derror%20%2Einput%2Dgroup%2Daddon%7Bcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff4136%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ffffff%7D%2Ehas%2Dfeedback%20label%7E%2Eform%2Dcontrol%2Dfeedback%7Btop%3A25px%7D%2Ehas%2Dfeedback%20label%2Esr%2Donly%7E%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%2Ehelp%2Dblock%7Bdisplay%3Ablock%3Bmargin%2Dtop%3A5px%3Bmargin%2Dbottom%3A10px%3Bcolor%3A%23959595%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dinline%20%2Eform%2Dgroup%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eform%2Dcontrol%7Bdisplay%3Ainline%2Dblock%3Bwidth%3Aauto%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eform%2Dcontrol%2Dstatic%7Bdisplay%3Ainline%2Dblock%7D%2Eform%2Dinline%20%2Einput%2Dgroup%7Bdisplay%3Ainline%2Dtable%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Daddon%2C%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Dbtn%2C%2Eform%2Dinline%20%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bwidth%3Aauto%7D%2Eform%2Dinline%20%2Einput%2Dgroup%3E%2Eform%2Dcontrol%7Bwidth%3A100%25%7D%2Eform%2Dinline%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eradio%2C%2Eform%2Dinline%20%2Echeckbox%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eform%2Dinline%20%2Eradio%20label%2C%2Eform%2Dinline%20%2Echeckbox%20label%7Bpadding%2Dleft%3A0%7D%2Eform%2Dinline%20%2Eradio%20input%5Btype%3D%22radio%22%5D%2C%2Eform%2Dinline%20%2Echeckbox%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Arelative%3Bmargin%2Dleft%3A0%7D%2Eform%2Dinline%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%7D%2Eform%2Dhorizontal%20%2Eradio%2C%2Eform%2Dhorizontal%20%2Echeckbox%2C%2Eform%2Dhorizontal%20%2Eradio%2Dinline%2C%2Eform%2Dhorizontal%20%2Echeckbox%2Dinline%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bpadding%2Dtop%3A8px%7D%2Eform%2Dhorizontal%20%2Eradio%2C%2Eform%2Dhorizontal%20%2Echeckbox%7Bmin%2Dheight%3A28px%7D%2Eform%2Dhorizontal%20%2Eform%2Dgroup%7Bmargin%2Dleft%3A%2D15px%3Bmargin%2Dright%3A%2D15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Econtrol%2Dlabel%7Btext%2Dalign%3Aright%3Bmargin%2Dbottom%3A0%3Bpadding%2Dtop%3A8px%7D%7D%2Eform%2Dhorizontal%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Bright%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Eform%2Dgroup%2Dlg%20%2Econtrol%2Dlabel%7Bpadding%2Dtop%3A14px%3Bfont%2Dsize%3A18px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eform%2Dhorizontal%20%2Eform%2Dgroup%2Dsm%20%2Econtrol%2Dlabel%7Bpadding%2Dtop%3A5px%3Bfont%2Dsize%3A12px%7D%7D%2Ebtn%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3Anormal%3Btext%2Dalign%3Acenter%3Bvertical%2Dalign%3Amiddle%3B%2Dms%2Dtouch%2Daction%3Amanipulation%3Btouch%2Daction%3Amanipulation%3Bcursor%3Apointer%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20transparent%3Bwhite%2Dspace%3Anowrap%3Bpadding%3A7px%2012px%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A1%2E42857143%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3Buser%2Dselect%3Anone%7D%2Ebtn%3Afocus%2C%2Ebtn%3Aactive%3Afocus%2C%2Ebtn%2Eactive%3Afocus%2C%2Ebtn%2Efocus%2C%2Ebtn%3Aactive%2Efocus%2C%2Ebtn%2Eactive%2Efocus%7Boutline%3Athin%20dotted%3Boutline%3A5px%20auto%20%2Dwebkit%2Dfocus%2Dring%2Dcolor%3Boutline%2Doffset%3A%2D2px%7D%2Ebtn%3Ahover%2C%2Ebtn%3Afocus%2C%2Ebtn%2Efocus%7Bcolor%3A%23555555%3Btext%2Ddecoration%3Anone%7D%2Ebtn%3Aactive%2C%2Ebtn%2Eactive%7Boutline%3A0%3Bbackground%2Dimage%3Anone%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C0%2E125%29%3Bbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C0%2E125%29%7D%2Ebtn%2Edisabled%2C%2Ebtn%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Ebtn%7Bcursor%3Anot%2Dallowed%3Bopacity%3A0%2E65%3Bfilter%3Aalpha%28opacity%3D65%29%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7Da%2Ebtn%2Edisabled%2Cfieldset%5Bdisabled%5D%20a%2Ebtn%7Bpointer%2Devents%3Anone%7D%2Ebtn%2Ddefault%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%7D%2Ebtn%2Ddefault%3Afocus%2C%2Ebtn%2Ddefault%2Efocus%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23d5d5d5%3Bborder%2Dcolor%3A%23a2a2a2%7D%2Ebtn%2Ddefault%3Ahover%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23d5d5d5%3Bborder%2Dcolor%3A%23c3c3c3%7D%2Ebtn%2Ddefault%3Aactive%2C%2Ebtn%2Ddefault%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23d5d5d5%3Bborder%2Dcolor%3A%23c3c3c3%7D%2Ebtn%2Ddefault%3Aactive%3Ahover%2C%2Ebtn%2Ddefault%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%3Ahover%2C%2Ebtn%2Ddefault%3Aactive%3Afocus%2C%2Ebtn%2Ddefault%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%3Afocus%2C%2Ebtn%2Ddefault%3Aactive%2Efocus%2C%2Ebtn%2Ddefault%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%2Efocus%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23c3c3c3%3Bborder%2Dcolor%3A%23a2a2a2%7D%2Ebtn%2Ddefault%3Aactive%2C%2Ebtn%2Ddefault%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Ddefault%2Edisabled%3Ahover%2C%2Ebtn%2Ddefault%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%3Ahover%2C%2Ebtn%2Ddefault%2Edisabled%3Afocus%2C%2Ebtn%2Ddefault%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%3Afocus%2C%2Ebtn%2Ddefault%2Edisabled%2Efocus%2C%2Ebtn%2Ddefault%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddefault%2Efocus%7Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%7D%2Ebtn%2Ddefault%20%2Ebadge%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3A%23555555%7D%2Ebtn%2Dprimary%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23127ba3%7D%2Ebtn%2Dprimary%3Afocus%2C%2Ebtn%2Dprimary%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23106a8c%3Bborder%2Dcolor%3A%23052531%7D%2Ebtn%2Dprimary%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23106a8c%3Bborder%2Dcolor%3A%230c516c%7D%2Ebtn%2Dprimary%3Aactive%2C%2Ebtn%2Dprimary%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23106a8c%3Bborder%2Dcolor%3A%230c516c%7D%2Ebtn%2Dprimary%3Aactive%3Ahover%2C%2Ebtn%2Dprimary%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%3Ahover%2C%2Ebtn%2Dprimary%3Aactive%3Afocus%2C%2Ebtn%2Dprimary%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%3Afocus%2C%2Ebtn%2Dprimary%3Aactive%2Efocus%2C%2Ebtn%2Dprimary%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%230c516c%3Bborder%2Dcolor%3A%23052531%7D%2Ebtn%2Dprimary%3Aactive%2C%2Ebtn%2Dprimary%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dprimary%2Edisabled%3Ahover%2C%2Ebtn%2Dprimary%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%3Ahover%2C%2Ebtn%2Dprimary%2Edisabled%3Afocus%2C%2Ebtn%2Dprimary%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%3Afocus%2C%2Ebtn%2Dprimary%2Edisabled%2Efocus%2C%2Ebtn%2Dprimary%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dprimary%2Efocus%7Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23127ba3%7D%2Ebtn%2Dprimary%20%2Ebadge%7Bcolor%3A%23158cba%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Dsuccess%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3A%2323a127%7D%2Ebtn%2Dsuccess%3Afocus%2C%2Ebtn%2Dsuccess%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%231f8c22%3Bborder%2Dcolor%3A%230c390e%7D%2Ebtn%2Dsuccess%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%231f8c22%3Bborder%2Dcolor%3A%23186f1b%7D%2Ebtn%2Dsuccess%3Aactive%2C%2Ebtn%2Dsuccess%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%231f8c22%3Bborder%2Dcolor%3A%23186f1b%7D%2Ebtn%2Dsuccess%3Aactive%3Ahover%2C%2Ebtn%2Dsuccess%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%3Ahover%2C%2Ebtn%2Dsuccess%3Aactive%3Afocus%2C%2Ebtn%2Dsuccess%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%3Afocus%2C%2Ebtn%2Dsuccess%3Aactive%2Efocus%2C%2Ebtn%2Dsuccess%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23186f1b%3Bborder%2Dcolor%3A%230c390e%7D%2Ebtn%2Dsuccess%3Aactive%2C%2Ebtn%2Dsuccess%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dsuccess%2Edisabled%3Ahover%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%3Ahover%2C%2Ebtn%2Dsuccess%2Edisabled%3Afocus%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%3Afocus%2C%2Ebtn%2Dsuccess%2Edisabled%2Efocus%2C%2Ebtn%2Dsuccess%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dsuccess%2Efocus%7Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3A%2323a127%7D%2Ebtn%2Dsuccess%20%2Ebadge%7Bcolor%3A%2328b62c%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Dinfo%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3A%235fc1e8%7D%2Ebtn%2Dinfo%3Afocus%2C%2Ebtn%2Dinfo%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2348b9e5%3Bborder%2Dcolor%3A%231984ae%7D%2Ebtn%2Dinfo%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2348b9e5%3Bborder%2Dcolor%3A%2329ade0%7D%2Ebtn%2Dinfo%3Aactive%2C%2Ebtn%2Dinfo%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2348b9e5%3Bborder%2Dcolor%3A%2329ade0%7D%2Ebtn%2Dinfo%3Aactive%3Ahover%2C%2Ebtn%2Dinfo%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%3Ahover%2C%2Ebtn%2Dinfo%3Aactive%3Afocus%2C%2Ebtn%2Dinfo%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%3Afocus%2C%2Ebtn%2Dinfo%3Aactive%2Efocus%2C%2Ebtn%2Dinfo%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2329ade0%3Bborder%2Dcolor%3A%231984ae%7D%2Ebtn%2Dinfo%3Aactive%2C%2Ebtn%2Dinfo%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dinfo%2Edisabled%3Ahover%2C%2Ebtn%2Dinfo%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%3Ahover%2C%2Ebtn%2Dinfo%2Edisabled%3Afocus%2C%2Ebtn%2Dinfo%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%3Afocus%2C%2Ebtn%2Dinfo%2Edisabled%2Efocus%2C%2Ebtn%2Dinfo%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dinfo%2Efocus%7Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3A%235fc1e8%7D%2Ebtn%2Dinfo%20%2Ebadge%7Bcolor%3A%2375caeb%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Dwarning%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3A%23ff7701%7D%2Ebtn%2Dwarning%3Afocus%2C%2Ebtn%2Dwarning%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23e76b00%3Bborder%2Dcolor%3A%23813c00%7D%2Ebtn%2Dwarning%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23e76b00%3Bborder%2Dcolor%3A%23c35b00%7D%2Ebtn%2Dwarning%3Aactive%2C%2Ebtn%2Dwarning%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23e76b00%3Bborder%2Dcolor%3A%23c35b00%7D%2Ebtn%2Dwarning%3Aactive%3Ahover%2C%2Ebtn%2Dwarning%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%3Ahover%2C%2Ebtn%2Dwarning%3Aactive%3Afocus%2C%2Ebtn%2Dwarning%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%3Afocus%2C%2Ebtn%2Dwarning%3Aactive%2Efocus%2C%2Ebtn%2Dwarning%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23c35b00%3Bborder%2Dcolor%3A%23813c00%7D%2Ebtn%2Dwarning%3Aactive%2C%2Ebtn%2Dwarning%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Dwarning%2Edisabled%3Ahover%2C%2Ebtn%2Dwarning%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%3Ahover%2C%2Ebtn%2Dwarning%2Edisabled%3Afocus%2C%2Ebtn%2Dwarning%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%3Afocus%2C%2Ebtn%2Dwarning%2Edisabled%2Efocus%2C%2Ebtn%2Dwarning%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dwarning%2Efocus%7Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3A%23ff7701%7D%2Ebtn%2Dwarning%20%2Ebadge%7Bcolor%3A%23ff851b%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Ddanger%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3A%23ff291c%7D%2Ebtn%2Ddanger%3Afocus%2C%2Ebtn%2Ddanger%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff1103%3Bborder%2Dcolor%3A%239c0900%7D%2Ebtn%2Ddanger%3Ahover%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff1103%3Bborder%2Dcolor%3A%23de0c00%7D%2Ebtn%2Ddanger%3Aactive%2C%2Ebtn%2Ddanger%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff1103%3Bborder%2Dcolor%3A%23de0c00%7D%2Ebtn%2Ddanger%3Aactive%3Ahover%2C%2Ebtn%2Ddanger%2Eactive%3Ahover%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%3Ahover%2C%2Ebtn%2Ddanger%3Aactive%3Afocus%2C%2Ebtn%2Ddanger%2Eactive%3Afocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%3Afocus%2C%2Ebtn%2Ddanger%3Aactive%2Efocus%2C%2Ebtn%2Ddanger%2Eactive%2Efocus%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%2Efocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23de0c00%3Bborder%2Dcolor%3A%239c0900%7D%2Ebtn%2Ddanger%3Aactive%2C%2Ebtn%2Ddanger%2Eactive%2C%2Eopen%3E%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bbackground%2Dimage%3Anone%7D%2Ebtn%2Ddanger%2Edisabled%3Ahover%2C%2Ebtn%2Ddanger%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%3Ahover%2C%2Ebtn%2Ddanger%2Edisabled%3Afocus%2C%2Ebtn%2Ddanger%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%3Afocus%2C%2Ebtn%2Ddanger%2Edisabled%2Efocus%2C%2Ebtn%2Ddanger%5Bdisabled%5D%2Efocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Ddanger%2Efocus%7Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3A%23ff291c%7D%2Ebtn%2Ddanger%20%2Ebadge%7Bcolor%3A%23ff4136%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ebtn%2Dlink%7Bcolor%3A%23158cba%3Bfont%2Dweight%3Anormal%3Bborder%2Dradius%3A0%7D%2Ebtn%2Dlink%2C%2Ebtn%2Dlink%3Aactive%2C%2Ebtn%2Dlink%2Eactive%2C%2Ebtn%2Dlink%5Bdisabled%5D%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%7Bbackground%2Dcolor%3Atransparent%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%2Dlink%2C%2Ebtn%2Dlink%3Ahover%2C%2Ebtn%2Dlink%3Afocus%2C%2Ebtn%2Dlink%3Aactive%7Bborder%2Dcolor%3Atransparent%7D%2Ebtn%2Dlink%3Ahover%2C%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23158cba%3Btext%2Ddecoration%3Aunderline%3Bbackground%2Dcolor%3Atransparent%7D%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%3Ahover%2C%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23999999%3Btext%2Ddecoration%3Anone%7D%2Ebtn%2Dlg%2C%2Ebtn%2Dgroup%2Dlg%3E%2Ebtn%7Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A5px%7D%2Ebtn%2Dsm%2C%2Ebtn%2Dgroup%2Dsm%3E%2Ebtn%7Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7D%2Ebtn%2Dxs%2C%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%7Bpadding%3A1px%205px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7D%2Ebtn%2Dblock%7Bdisplay%3Ablock%3Bwidth%3A100%25%7D%2Ebtn%2Dblock%2B%2Ebtn%2Dblock%7Bmargin%2Dtop%3A5px%7Dinput%5Btype%3D%22submit%22%5D%2Ebtn%2Dblock%2Cinput%5Btype%3D%22reset%22%5D%2Ebtn%2Dblock%2Cinput%5Btype%3D%22button%22%5D%2Ebtn%2Dblock%7Bwidth%3A100%25%7D%2Efade%7Bopacity%3A0%3B%2Dwebkit%2Dtransition%3Aopacity%200%2E15s%20linear%3B%2Do%2Dtransition%3Aopacity%200%2E15s%20linear%3Btransition%3Aopacity%200%2E15s%20linear%7D%2Efade%2Ein%7Bopacity%3A1%7D%2Ecollapse%7Bdisplay%3Anone%7D%2Ecollapse%2Ein%7Bdisplay%3Ablock%7Dtr%2Ecollapse%2Ein%7Bdisplay%3Atable%2Drow%7Dtbody%2Ecollapse%2Ein%7Bdisplay%3Atable%2Drow%2Dgroup%7D%2Ecollapsing%7Bposition%3Arelative%3Bheight%3A0%3Boverflow%3Ahidden%3B%2Dwebkit%2Dtransition%2Dproperty%3Aheight%2C%20visibility%3B%2Do%2Dtransition%2Dproperty%3Aheight%2C%20visibility%3Btransition%2Dproperty%3Aheight%2C%20visibility%3B%2Dwebkit%2Dtransition%2Dduration%3A0%2E35s%3B%2Do%2Dtransition%2Dduration%3A0%2E35s%3Btransition%2Dduration%3A0%2E35s%3B%2Dwebkit%2Dtransition%2Dtiming%2Dfunction%3Aease%3B%2Do%2Dtransition%2Dtiming%2Dfunction%3Aease%3Btransition%2Dtiming%2Dfunction%3Aease%7D%2Ecaret%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A0%3Bheight%3A0%3Bmargin%2Dleft%3A2px%3Bvertical%2Dalign%3Amiddle%3Bborder%2Dtop%3A4px%20dashed%3Bborder%2Dtop%3A4px%20solid%20%5C9%3Bborder%2Dright%3A4px%20solid%20transparent%3Bborder%2Dleft%3A4px%20solid%20transparent%7D%2Edropup%2C%2Edropdown%7Bposition%3Arelative%7D%2Edropdown%2Dtoggle%3Afocus%7Boutline%3A0%7D%2Edropdown%2Dmenu%7Bposition%3Aabsolute%3Btop%3A100%25%3Bleft%3A0%3Bz%2Dindex%3A1000%3Bdisplay%3Anone%3Bfloat%3Aleft%3Bmin%2Dwidth%3A160px%3Bpadding%3A5px%200%3Bmargin%3A2px%200%200%3Blist%2Dstyle%3Anone%3Bfont%2Dsize%3A14px%3Btext%2Dalign%3Aleft%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23cccccc%3Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%206px%2012px%20rgba%280%2C0%2C0%2C0%2E175%29%3Bbox%2Dshadow%3A0%206px%2012px%20rgba%280%2C0%2C0%2C0%2E175%29%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%7D%2Edropdown%2Dmenu%2Epull%2Dright%7Bright%3A0%3Bleft%3Aauto%7D%2Edropdown%2Dmenu%20%2Edivider%7Bheight%3A1px%3Bmargin%3A9px%200%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23eeeeee%7D%2Edropdown%2Dmenu%3Eli%3Ea%7Bdisplay%3Ablock%3Bpadding%3A3px%2020px%3Bclear%3Aboth%3Bfont%2Dweight%3Anormal%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23999999%3Bwhite%2Dspace%3Anowrap%7D%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%2C%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%7Btext%2Ddecoration%3Anone%3Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%2C%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Boutline%3A0%3Bbackground%2Dcolor%3A%23158cba%7D%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%7D%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%2C%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3Atransparent%3Bbackground%2Dimage%3Anone%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28enabled%3Dfalse%29%3Bcursor%3Anot%2Dallowed%7D%2Eopen%3E%2Edropdown%2Dmenu%7Bdisplay%3Ablock%7D%2Eopen%3Ea%7Boutline%3A0%7D%2Edropdown%2Dmenu%2Dright%7Bleft%3Aauto%3Bright%3A0%7D%2Edropdown%2Dmenu%2Dleft%7Bleft%3A0%3Bright%3Aauto%7D%2Edropdown%2Dheader%7Bdisplay%3Ablock%3Bpadding%3A3px%2020px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E42857143%3Bcolor%3A%23999999%3Bwhite%2Dspace%3Anowrap%7D%2Edropdown%2Dbackdrop%7Bposition%3Afixed%3Bleft%3A0%3Bright%3A0%3Bbottom%3A0%3Btop%3A0%3Bz%2Dindex%3A990%7D%2Epull%2Dright%3E%2Edropdown%2Dmenu%7Bright%3A0%3Bleft%3Aauto%7D%2Edropup%20%2Ecaret%2C%2Enavbar%2Dfixed%2Dbottom%20%2Edropdown%20%2Ecaret%7Bborder%2Dtop%3A0%3Bborder%2Dbottom%3A4px%20dashed%3Bborder%2Dbottom%3A4px%20solid%20%5C9%3Bcontent%3A%22%22%7D%2Edropup%20%2Edropdown%2Dmenu%2C%2Enavbar%2Dfixed%2Dbottom%20%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bbottom%3A100%25%3Bmargin%2Dbottom%3A2px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dright%20%2Edropdown%2Dmenu%7Bleft%3Aauto%3Bright%3A0%7D%2Enavbar%2Dright%20%2Edropdown%2Dmenu%2Dleft%7Bleft%3A0%3Bright%3Aauto%7D%7D%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%7D%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%7Bposition%3Arelative%3Bfloat%3Aleft%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Ahover%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Ahover%2C%2Ebtn%2Dgroup%3E%2Ebtn%3Afocus%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Afocus%2C%2Ebtn%2Dgroup%3E%2Ebtn%3Aactive%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Aactive%2C%2Ebtn%2Dgroup%3E%2Ebtn%2Eactive%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Eactive%7Bz%2Dindex%3A2%7D%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%2C%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%20%2Ebtn%2Dgroup%2B%2Ebtn%2C%2Ebtn%2Dgroup%20%2Ebtn%2Dgroup%2B%2Ebtn%2Dgroup%7Bmargin%2Dleft%3A%2D1px%7D%2Ebtn%2Dtoolbar%7Bmargin%2Dleft%3A%2D5px%7D%2Ebtn%2Dtoolbar%20%2Ebtn%2C%2Ebtn%2Dtoolbar%20%2Ebtn%2Dgroup%2C%2Ebtn%2Dtoolbar%20%2Einput%2Dgroup%7Bfloat%3Aleft%7D%2Ebtn%2Dtoolbar%3E%2Ebtn%2C%2Ebtn%2Dtoolbar%3E%2Ebtn%2Dgroup%2C%2Ebtn%2Dtoolbar%3E%2Einput%2Dgroup%7Bmargin%2Dleft%3A5px%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Afirst%2Dchild%7Bmargin%2Dleft%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%2C%2Ebtn%2Dgroup%3E%2Edropdown%2Dtoggle%3Anot%28%3Afirst%2Dchild%29%7Bborder%2Dbottom%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%7Bfloat%3Aleft%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%3Alast%2Dchild%2C%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Edropdown%2Dtoggle%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dgroup%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%3Afirst%2Dchild%7Bborder%2Dbottom%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%20%2Edropdown%2Dtoggle%3Aactive%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7Boutline%3A0%7D%2Ebtn%2Dgroup%3E%2Ebtn%2B%2Edropdown%2Dtoggle%7Bpadding%2Dleft%3A8px%3Bpadding%2Dright%3A8px%7D%2Ebtn%2Dgroup%3E%2Ebtn%2Dlg%2B%2Edropdown%2Dtoggle%7Bpadding%2Dleft%3A12px%3Bpadding%2Dright%3A12px%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C0%2E125%29%3Bbox%2Dshadow%3Ainset%200%203px%205px%20rgba%280%2C0%2C0%2C0%2E125%29%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dlink%7B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%20%2Ecaret%7Bmargin%2Dleft%3A0%7D%2Ebtn%2Dlg%20%2Ecaret%7Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Edropup%20%2Ebtn%2Dlg%20%2Ecaret%7Bborder%2Dwidth%3A0%205px%205px%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3E%2Ebtn%7Bdisplay%3Ablock%3Bfloat%3Anone%3Bwidth%3A100%25%3Bmax%2Dwidth%3A100%25%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3E%2Ebtn%7Bfloat%3Anone%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2B%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2B%2Ebtn%2Dgroup%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2B%2Ebtn%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%2B%2Ebtn%2Dgroup%7Bmargin%2Dtop%3A%2D1px%3Bmargin%2Dleft%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%3Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%3Alast%2Dchild%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Afirst%2Dchild%3Anot%28%3Alast%2Dchild%29%3E%2Edropdown%2Dtoggle%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Alast%2Dchild%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Ebtn%2Dgroup%2Djustified%7Bdisplay%3Atable%3Bwidth%3A100%25%3Btable%2Dlayout%3Afixed%3Bborder%2Dcollapse%3Aseparate%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2C%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%7Bfloat%3Anone%3Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%20%2Ebtn%7Bwidth%3A100%25%7D%2Ebtn%2Dgroup%2Djustified%3E%2Ebtn%2Dgroup%20%2Edropdown%2Dmenu%7Bleft%3Aauto%7D%5Bdata%2Dtoggle%3D%22buttons%22%5D%3E%2Ebtn%20input%5Btype%3D%22radio%22%5D%2C%5Bdata%2Dtoggle%3D%22buttons%22%5D%3E%2Ebtn%2Dgroup%3E%2Ebtn%20input%5Btype%3D%22radio%22%5D%2C%5Bdata%2Dtoggle%3D%22buttons%22%5D%3E%2Ebtn%20input%5Btype%3D%22checkbox%22%5D%2C%5Bdata%2Dtoggle%3D%22buttons%22%5D%3E%2Ebtn%2Dgroup%3E%2Ebtn%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Aabsolute%3Bclip%3Arect%280%2C%200%2C%200%2C%200%29%3Bpointer%2Devents%3Anone%7D%2Einput%2Dgroup%7Bposition%3Arelative%3Bdisplay%3Atable%3Bborder%2Dcollapse%3Aseparate%7D%2Einput%2Dgroup%5Bclass%2A%3D%22col%2D%22%5D%7Bfloat%3Anone%3Bpadding%2Dleft%3A0%3Bpadding%2Dright%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bposition%3Arelative%3Bz%2Dindex%3A2%3Bfloat%3Aleft%3Bwidth%3A100%25%3Bmargin%2Dbottom%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Afocus%7Bz%2Dindex%3A3%7D%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2C%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A52px%3Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%3Bborder%2Dradius%3A5px%7Dselect%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Cselect%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Cselect%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A52px%3Bline%2Dheight%3A52px%7Dtextarea%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Ctextarea%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Ctextarea%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Eform%2Dcontrol%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Daddon%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dlg%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3Aauto%7D%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2C%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A28px%3Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%3Bborder%2Dradius%3A2px%7Dselect%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Cselect%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Cselect%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3A28px%3Bline%2Dheight%3A28px%7Dtextarea%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Ctextarea%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Ctextarea%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Eform%2Dcontrol%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Daddon%2Cselect%5Bmultiple%5D%2Einput%2Dgroup%2Dsm%3E%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bheight%3Aauto%7D%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dbtn%2C%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bdisplay%3Atable%2Dcell%7D%2Einput%2Dgroup%2Daddon%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%2C%2Einput%2Dgroup%2Dbtn%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%2C%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%2C%2Einput%2Dgroup%2Dbtn%7Bwidth%3A1%25%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Amiddle%7D%2Einput%2Dgroup%2Daddon%7Bpadding%3A7px%2012px%3Bfont%2Dsize%3A14px%3Bfont%2Dweight%3Anormal%3Bline%2Dheight%3A1%3Bcolor%3A%23555555%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%7D%2Einput%2Dgroup%2Daddon%2Einput%2Dsm%7Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bborder%2Dradius%3A2px%7D%2Einput%2Dgroup%2Daddon%2Einput%2Dlg%7Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bborder%2Dradius%3A5px%7D%2Einput%2Dgroup%2Daddon%20input%5Btype%3D%22radio%22%5D%2C%2Einput%2Dgroup%2Daddon%20input%5Btype%3D%22checkbox%22%5D%7Bmargin%2Dtop%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Afirst%2Dchild%2C%2Einput%2Dgroup%2Daddon%3Afirst%2Dchild%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Edropdown%2Dtoggle%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%3Anot%28%3Alast%2Dchild%29%3Anot%28%2Edropdown%2Dtoggle%29%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%3Anot%28%3Alast%2Dchild%29%3E%2Ebtn%7Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%3Afirst%2Dchild%7Bborder%2Dright%3A0%7D%2Einput%2Dgroup%20%2Eform%2Dcontrol%3Alast%2Dchild%2C%2Einput%2Dgroup%2Daddon%3Alast%2Dchild%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Edropdown%2Dtoggle%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%3Anot%28%3Afirst%2Dchild%29%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%3Anot%28%3Afirst%2Dchild%29%3E%2Ebtn%7Bborder%2Dbottom%2Dleft%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Einput%2Dgroup%2Daddon%3Alast%2Dchild%7Bborder%2Dleft%3A0%7D%2Einput%2Dgroup%2Dbtn%7Bposition%3Arelative%3Bfont%2Dsize%3A0%3Bwhite%2Dspace%3Anowrap%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%7Bposition%3Arelative%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A%2D1px%7D%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Ahover%2C%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Afocus%2C%2Einput%2Dgroup%2Dbtn%3E%2Ebtn%3Aactive%7Bz%2Dindex%3A2%7D%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Afirst%2Dchild%3E%2Ebtn%2Dgroup%7Bmargin%2Dright%3A%2D1px%7D%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2C%2Einput%2Dgroup%2Dbtn%3Alast%2Dchild%3E%2Ebtn%2Dgroup%7Bz%2Dindex%3A2%3Bmargin%2Dleft%3A%2D1px%7D%2Enav%7Bmargin%2Dbottom%3A0%3Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Enav%3Eli%7Bposition%3Arelative%3Bdisplay%3Ablock%7D%2Enav%3Eli%3Ea%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bpadding%3A10px%2015px%7D%2Enav%3Eli%3Ea%3Ahover%2C%2Enav%3Eli%3Ea%3Afocus%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23ffffff%7D%2Enav%3Eli%2Edisabled%3Ea%7Bcolor%3A%23999999%7D%2Enav%3Eli%2Edisabled%3Ea%3Ahover%2C%2Enav%3Eli%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23999999%3Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3Atransparent%3Bcursor%3Anot%2Dallowed%7D%2Enav%20%2Eopen%3Ea%2C%2Enav%20%2Eopen%3Ea%3Ahover%2C%2Enav%20%2Eopen%3Ea%3Afocus%7Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23158cba%7D%2Enav%20%2Enav%2Ddivider%7Bheight%3A1px%3Bmargin%3A9px%200%3Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23e5e5e5%7D%2Enav%3Eli%3Ea%3Eimg%7Bmax%2Dwidth%3Anone%7D%2Enav%2Dtabs%7Bborder%2Dbottom%3A1px%20solid%20%23e7e7e7%7D%2Enav%2Dtabs%3Eli%7Bfloat%3Aleft%3Bmargin%2Dbottom%3A%2D1px%7D%2Enav%2Dtabs%3Eli%3Ea%7Bmargin%2Dright%3A2px%3Bline%2Dheight%3A1%2E42857143%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%3Eli%3Ea%3Ahover%7Bborder%2Dcolor%3A%23eeeeee%20%23eeeeee%20%23e7e7e7%7D%2Enav%2Dtabs%3Eli%2Eactive%3Ea%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Afocus%7Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dbottom%2Dcolor%3Atransparent%3Bcursor%3Adefault%7D%2Enav%2Dtabs%2Enav%2Djustified%7Bwidth%3A100%25%3Bborder%2Dbottom%3A0%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bfloat%3Anone%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Btext%2Dalign%3Acenter%3Bmargin%2Dbottom%3A5px%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bleft%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A0%7D%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dright%3A0%3Bborder%2Dradius%3A4px%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Afocus%7Bborder%3A1px%20solid%20%23e7e7e7%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Enav%2Djustified%3Eli%3Ea%7Bborder%2Dbottom%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%2Enav%2Djustified%3E%2Eactive%3Ea%3Afocus%7Bborder%2Dbottom%2Dcolor%3A%23ffffff%7D%7D%2Enav%2Dpills%3Eli%7Bfloat%3Aleft%7D%2Enav%2Dpills%3Eli%3Ea%7Bborder%2Dradius%3A4px%7D%2Enav%2Dpills%3Eli%2Bli%7Bmargin%2Dleft%3A2px%7D%2Enav%2Dpills%3Eli%2Eactive%3Ea%2C%2Enav%2Dpills%3Eli%2Eactive%3Ea%3Ahover%2C%2Enav%2Dpills%3Eli%2Eactive%3Ea%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%7D%2Enav%2Dstacked%3Eli%7Bfloat%3Anone%7D%2Enav%2Dstacked%3Eli%2Bli%7Bmargin%2Dtop%3A2px%3Bmargin%2Dleft%3A0%7D%2Enav%2Djustified%7Bwidth%3A100%25%7D%2Enav%2Djustified%3Eli%7Bfloat%3Anone%7D%2Enav%2Djustified%3Eli%3Ea%7Btext%2Dalign%3Acenter%3Bmargin%2Dbottom%3A5px%7D%2Enav%2Djustified%3E%2Edropdown%20%2Edropdown%2Dmenu%7Btop%3Aauto%3Bleft%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Djustified%3Eli%7Bdisplay%3Atable%2Dcell%3Bwidth%3A1%25%7D%2Enav%2Djustified%3Eli%3Ea%7Bmargin%2Dbottom%3A0%7D%7D%2Enav%2Dtabs%2Djustified%7Bborder%2Dbottom%3A0%7D%2Enav%2Dtabs%2Djustified%3Eli%3Ea%7Bmargin%2Dright%3A0%3Bborder%2Dradius%3A4px%7D%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Afocus%7Bborder%3A1px%20solid%20%23e7e7e7%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enav%2Dtabs%2Djustified%3Eli%3Ea%7Bborder%2Dbottom%3A1px%20solid%20%23e7e7e7%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%2Djustified%3E%2Eactive%3Ea%3Afocus%7Bborder%2Dbottom%2Dcolor%3A%23ffffff%7D%7D%2Etab%2Dcontent%3E%2Etab%2Dpane%7Bdisplay%3Anone%7D%2Etab%2Dcontent%3E%2Eactive%7Bdisplay%3Ablock%7D%2Enav%2Dtabs%20%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A%2D1px%3Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Enavbar%7Bposition%3Arelative%3Bmin%2Dheight%3A50px%3Bmargin%2Dbottom%3A20px%3Bborder%3A1px%20solid%20transparent%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%7Bborder%2Dradius%3A4px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dheader%7Bfloat%3Aleft%7D%7D%2Enavbar%2Dcollapse%7Boverflow%2Dx%3Avisible%3Bpadding%2Dright%3A15px%3Bpadding%2Dleft%3A15px%3Bborder%2Dtop%3A1px%20solid%20transparent%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%7D%2Enavbar%2Dcollapse%2Ein%7Boverflow%2Dy%3Aauto%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dcollapse%7Bwidth%3Aauto%3Bborder%2Dtop%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dcollapse%2Ecollapse%7Bdisplay%3Ablock%20%21important%3Bheight%3Aauto%20%21important%3Bpadding%2Dbottom%3A0%3Boverflow%3Avisible%20%21important%7D%2Enavbar%2Dcollapse%2Ein%7Boverflow%2Dy%3Avisible%7D%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dstatic%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%7Bpadding%2Dleft%3A0%3Bpadding%2Dright%3A0%7D%7D%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%7Bmax%2Dheight%3A340px%7D%40media%20%28max%2Ddevice%2Dwidth%3A480px%29%20and%20%28orientation%3Alandscape%29%7B%2Enavbar%2Dfixed%2Dtop%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dcollapse%7Bmax%2Dheight%3A200px%7D%7D%2Econtainer%3E%2Enavbar%2Dheader%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dheader%2C%2Econtainer%3E%2Enavbar%2Dcollapse%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dcollapse%7Bmargin%2Dright%3A%2D15px%3Bmargin%2Dleft%3A%2D15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Econtainer%3E%2Enavbar%2Dheader%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dheader%2C%2Econtainer%3E%2Enavbar%2Dcollapse%2C%2Econtainer%2Dfluid%3E%2Enavbar%2Dcollapse%7Bmargin%2Dright%3A0%3Bmargin%2Dleft%3A0%7D%7D%2Enavbar%2Dstatic%2Dtop%7Bz%2Dindex%3A1000%3Bborder%2Dwidth%3A0%200%201px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dstatic%2Dtop%7Bborder%2Dradius%3A0%7D%7D%2Enavbar%2Dfixed%2Dtop%2C%2Enavbar%2Dfixed%2Dbottom%7Bposition%3Afixed%3Bright%3A0%3Bleft%3A0%3Bz%2Dindex%3A1030%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dfixed%2Dtop%2C%2Enavbar%2Dfixed%2Dbottom%7Bborder%2Dradius%3A0%7D%7D%2Enavbar%2Dfixed%2Dtop%7Btop%3A0%3Bborder%2Dwidth%3A0%200%201px%7D%2Enavbar%2Dfixed%2Dbottom%7Bbottom%3A0%3Bmargin%2Dbottom%3A0%3Bborder%2Dwidth%3A1px%200%200%7D%2Enavbar%2Dbrand%7Bfloat%3Aleft%3Bpadding%3A15px%2015px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A20px%3Bheight%3A50px%7D%2Enavbar%2Dbrand%3Ahover%2C%2Enavbar%2Dbrand%3Afocus%7Btext%2Ddecoration%3Anone%7D%2Enavbar%2Dbrand%3Eimg%7Bdisplay%3Ablock%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%3E%2Econtainer%20%2Enavbar%2Dbrand%2C%2Enavbar%3E%2Econtainer%2Dfluid%20%2Enavbar%2Dbrand%7Bmargin%2Dleft%3A%2D15px%7D%7D%2Enavbar%2Dtoggle%7Bposition%3Arelative%3Bfloat%3Aright%3Bmargin%2Dright%3A15px%3Bpadding%3A9px%2010px%3Bmargin%2Dtop%3A8px%3Bmargin%2Dbottom%3A8px%3Bbackground%2Dcolor%3Atransparent%3Bbackground%2Dimage%3Anone%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%7D%2Enavbar%2Dtoggle%3Afocus%7Boutline%3A0%7D%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bdisplay%3Ablock%3Bwidth%3A22px%3Bheight%3A2px%3Bborder%2Dradius%3A1px%7D%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%2B%2Eicon%2Dbar%7Bmargin%2Dtop%3A4px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dtoggle%7Bdisplay%3Anone%7D%7D%2Enavbar%2Dnav%7Bmargin%3A7%2E5px%20%2D15px%7D%2Enavbar%2Dnav%3Eli%3Ea%7Bpadding%2Dtop%3A10px%3Bpadding%2Dbottom%3A10px%3Bline%2Dheight%3A20px%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%7Bposition%3Astatic%3Bfloat%3Anone%3Bwidth%3Aauto%3Bmargin%2Dtop%3A0%3Bbackground%2Dcolor%3Atransparent%3Bborder%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%2C%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%20%2Edropdown%2Dheader%7Bpadding%3A5px%2015px%205px%2025px%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bline%2Dheight%3A20px%7D%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%2C%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%7Bbackground%2Dimage%3Anone%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dnav%7Bfloat%3Aleft%3Bmargin%3A0%7D%2Enavbar%2Dnav%3Eli%7Bfloat%3Aleft%7D%2Enavbar%2Dnav%3Eli%3Ea%7Bpadding%2Dtop%3A15px%3Bpadding%2Dbottom%3A15px%7D%7D%2Enavbar%2Dform%7Bmargin%2Dleft%3A%2D15px%3Bmargin%2Dright%3A%2D15px%3Bpadding%3A10px%2015px%3Bborder%2Dtop%3A1px%20solid%20transparent%3Bborder%2Dbottom%3A1px%20solid%20transparent%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%2C0%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%2C0%201px%200%20rgba%28255%2C255%2C255%2C0%2E1%29%3Bmargin%2Dtop%3A6px%3Bmargin%2Dbottom%3A6px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dform%20%2Eform%2Dgroup%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eform%2Dcontrol%7Bdisplay%3Ainline%2Dblock%3Bwidth%3Aauto%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eform%2Dcontrol%2Dstatic%7Bdisplay%3Ainline%2Dblock%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%7Bdisplay%3Ainline%2Dtable%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Daddon%2C%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Einput%2Dgroup%2Dbtn%2C%2Enavbar%2Dform%20%2Einput%2Dgroup%20%2Eform%2Dcontrol%7Bwidth%3Aauto%7D%2Enavbar%2Dform%20%2Einput%2Dgroup%3E%2Eform%2Dcontrol%7Bwidth%3A100%25%7D%2Enavbar%2Dform%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eradio%2C%2Enavbar%2Dform%20%2Echeckbox%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Enavbar%2Dform%20%2Eradio%20label%2C%2Enavbar%2Dform%20%2Echeckbox%20label%7Bpadding%2Dleft%3A0%7D%2Enavbar%2Dform%20%2Eradio%20input%5Btype%3D%22radio%22%5D%2C%2Enavbar%2Dform%20%2Echeckbox%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Arelative%3Bmargin%2Dleft%3A0%7D%2Enavbar%2Dform%20%2Ehas%2Dfeedback%20%2Eform%2Dcontrol%2Dfeedback%7Btop%3A0%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dform%20%2Eform%2Dgroup%7Bmargin%2Dbottom%3A5px%7D%2Enavbar%2Dform%20%2Eform%2Dgroup%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dform%7Bwidth%3Aauto%3Bborder%3A0%3Bmargin%2Dleft%3A0%3Bmargin%2Dright%3A0%3Bpadding%2Dtop%3A0%3Bpadding%2Dbottom%3A0%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%7D%2Enavbar%2Dnav%3Eli%3E%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Enavbar%2Dfixed%2Dbottom%20%2Enavbar%2Dnav%3Eli%3E%2Edropdown%2Dmenu%7Bmargin%2Dbottom%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%3Bborder%2Dbottom%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Enavbar%2Dbtn%7Bmargin%2Dtop%3A6px%3Bmargin%2Dbottom%3A6px%7D%2Enavbar%2Dbtn%2Ebtn%2Dsm%7Bmargin%2Dtop%3A11px%3Bmargin%2Dbottom%3A11px%7D%2Enavbar%2Dbtn%2Ebtn%2Dxs%7Bmargin%2Dtop%3A14px%3Bmargin%2Dbottom%3A14px%7D%2Enavbar%2Dtext%7Bmargin%2Dtop%3A15px%3Bmargin%2Dbottom%3A15px%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dtext%7Bfloat%3Aleft%3Bmargin%2Dleft%3A15px%3Bmargin%2Dright%3A15px%7D%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Enavbar%2Dleft%7Bfloat%3Aleft%20%21important%7D%2Enavbar%2Dright%7Bfloat%3Aright%20%21important%3Bmargin%2Dright%3A%2D15px%7D%2Enavbar%2Dright%7E%2Enavbar%2Dright%7Bmargin%2Dright%3A0%7D%7D%2Enavbar%2Ddefault%7Bbackground%2Dcolor%3A%23f8f8f8%3Bborder%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%7Bcolor%3A%23333333%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dbrand%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtext%7Bcolor%3A%23555555%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%7Bcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3Eli%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%7Bborder%2Dcolor%3A%23eeeeee%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%3Afocus%7Bbackground%2Dcolor%3A%23ffffff%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bbackground%2Dcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dform%7Bborder%2Dcolor%3A%23e7e7e7%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Afocus%7Bbackground%2Dcolor%3Atransparent%3Bcolor%3A%23333333%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%2C%2Enavbar%2Ddefault%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3Atransparent%7D%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dlink%7Bcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Enavbar%2Dlink%3Ahover%7Bcolor%3A%23333333%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%7Bcolor%3A%23999999%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Ahover%2C%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23333333%7D%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Ahover%2C%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Ddefault%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23eeeeee%7D%2Enavbar%2Dinverse%7Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23e6e6e6%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dbrand%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtext%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3Eli%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%7Bborder%2Dcolor%3A%23eeeeee%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%3Afocus%7Bbackground%2Dcolor%3A%23eeeeee%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dtoggle%20%2Eicon%2Dbar%7Bbackground%2Dcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dcollapse%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dform%7Bborder%2Dcolor%3A%23ededed%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%3E%2Eopen%3Ea%3Afocus%7Bbackground%2Dcolor%3Atransparent%3Bcolor%3A%23333333%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edropdown%2Dheader%7Bborder%2Dcolor%3A%23e6e6e6%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%20%2Edivider%7Bbackground%2Dcolor%3A%23e6e6e6%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3Eli%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Eactive%3Ea%3Afocus%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3Atransparent%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Ahover%2C%2Enavbar%2Dinverse%20%2Enavbar%2Dnav%20%2Eopen%20%2Edropdown%2Dmenu%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23eeeeee%3Bbackground%2Dcolor%3Atransparent%7D%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dlink%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Enavbar%2Dlink%3Ahover%7Bcolor%3A%23333333%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%7Bcolor%3A%23999999%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Ahover%2C%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23333333%7D%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%5Bdisabled%5D%3Ahover%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Ahover%2C%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%5Bdisabled%5D%3Afocus%2Cfieldset%5Bdisabled%5D%20%2Enavbar%2Dinverse%20%2Ebtn%2Dlink%3Afocus%7Bcolor%3A%23eeeeee%7D%2Ebreadcrumb%7Bpadding%3A8px%2015px%3Bmargin%2Dbottom%3A20px%3Blist%2Dstyle%3Anone%3Bbackground%2Dcolor%3A%23fafafa%3Bborder%2Dradius%3A4px%7D%2Ebreadcrumb%3Eli%7Bdisplay%3Ainline%2Dblock%7D%2Ebreadcrumb%3Eli%2Bli%3Abefore%7Bcontent%3A%22%3E%5C00a0%22%3Bpadding%3A0%205px%3Bcolor%3A%23999999%7D%2Ebreadcrumb%3E%2Eactive%7Bcolor%3A%23999999%7D%2Epagination%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A0%3Bmargin%3A20px%200%3Bborder%2Dradius%3A4px%7D%2Epagination%3Eli%7Bdisplay%3Ainline%7D%2Epagination%3Eli%3Ea%2C%2Epagination%3Eli%3Espan%7Bposition%3Arelative%3Bfloat%3Aleft%3Bpadding%3A7px%2012px%3Bline%2Dheight%3A1%2E42857143%3Btext%2Ddecoration%3Anone%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%3A1px%20solid%20%23e2e2e2%3Bmargin%2Dleft%3A%2D1px%7D%2Epagination%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%3Eli%3Afirst%2Dchild%3Espan%7Bmargin%2Dleft%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%7D%2Epagination%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dbottom%2Dright%2Dradius%3A4px%3Bborder%2Dtop%2Dright%2Dradius%3A4px%7D%2Epagination%3Eli%3Ea%3Ahover%2C%2Epagination%3Eli%3Espan%3Ahover%2C%2Epagination%3Eli%3Ea%3Afocus%2C%2Epagination%3Eli%3Espan%3Afocus%7Bz%2Dindex%3A2%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%7D%2Epagination%3E%2Eactive%3Ea%2C%2Epagination%3E%2Eactive%3Espan%2C%2Epagination%3E%2Eactive%3Ea%3Ahover%2C%2Epagination%3E%2Eactive%3Espan%3Ahover%2C%2Epagination%3E%2Eactive%3Ea%3Afocus%2C%2Epagination%3E%2Eactive%3Espan%3Afocus%7Bz%2Dindex%3A3%3Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23127ba3%3Bcursor%3Adefault%7D%2Epagination%3E%2Edisabled%3Espan%2C%2Epagination%3E%2Edisabled%3Espan%3Ahover%2C%2Epagination%3E%2Edisabled%3Espan%3Afocus%2C%2Epagination%3E%2Edisabled%3Ea%2C%2Epagination%3E%2Edisabled%3Ea%3Ahover%2C%2Epagination%3E%2Edisabled%3Ea%3Afocus%7Bcolor%3A%23999999%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%3Bcursor%3Anot%2Dallowed%7D%2Epagination%2Dlg%3Eli%3Ea%2C%2Epagination%2Dlg%3Eli%3Espan%7Bpadding%3A13px%2016px%3Bfont%2Dsize%3A18px%3Bline%2Dheight%3A1%2E3333333%7D%2Epagination%2Dlg%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%2Dlg%3Eli%3Afirst%2Dchild%3Espan%7Bborder%2Dbottom%2Dleft%2Dradius%3A5px%3Bborder%2Dtop%2Dleft%2Dradius%3A5px%7D%2Epagination%2Dlg%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%2Dlg%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dbottom%2Dright%2Dradius%3A5px%3Bborder%2Dtop%2Dright%2Dradius%3A5px%7D%2Epagination%2Dsm%3Eli%3Ea%2C%2Epagination%2Dsm%3Eli%3Espan%7Bpadding%3A4px%2010px%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E5%7D%2Epagination%2Dsm%3Eli%3Afirst%2Dchild%3Ea%2C%2Epagination%2Dsm%3Eli%3Afirst%2Dchild%3Espan%7Bborder%2Dbottom%2Dleft%2Dradius%3A2px%3Bborder%2Dtop%2Dleft%2Dradius%3A2px%7D%2Epagination%2Dsm%3Eli%3Alast%2Dchild%3Ea%2C%2Epagination%2Dsm%3Eli%3Alast%2Dchild%3Espan%7Bborder%2Dbottom%2Dright%2Dradius%3A2px%3Bborder%2Dtop%2Dright%2Dradius%3A2px%7D%2Epager%7Bpadding%2Dleft%3A0%3Bmargin%3A20px%200%3Blist%2Dstyle%3Anone%3Btext%2Dalign%3Acenter%7D%2Epager%20li%7Bdisplay%3Ainline%7D%2Epager%20li%3Ea%2C%2Epager%20li%3Espan%7Bdisplay%3Ainline%2Dblock%3Bpadding%3A5px%2014px%3Bbackground%2Dcolor%3A%23eeeeee%3Bborder%3A1px%20solid%20%23e2e2e2%3Bborder%2Dradius%3A15px%7D%2Epager%20li%3Ea%3Ahover%2C%2Epager%20li%3Ea%3Afocus%7Btext%2Ddecoration%3Anone%3Bbackground%2Dcolor%3A%23eeeeee%7D%2Epager%20%2Enext%3Ea%2C%2Epager%20%2Enext%3Espan%7Bfloat%3Aright%7D%2Epager%20%2Eprevious%3Ea%2C%2Epager%20%2Eprevious%3Espan%7Bfloat%3Aleft%7D%2Epager%20%2Edisabled%3Ea%2C%2Epager%20%2Edisabled%3Ea%3Ahover%2C%2Epager%20%2Edisabled%3Ea%3Afocus%2C%2Epager%20%2Edisabled%3Espan%7Bcolor%3A%23999999%3Bbackground%2Dcolor%3A%23eeeeee%3Bcursor%3Anot%2Dallowed%7D%2Elabel%7Bdisplay%3Ainline%3Bpadding%3A%2E2em%20%2E6em%20%2E3em%3Bfont%2Dsize%3A75%25%3Bfont%2Dweight%3Abold%3Bline%2Dheight%3A1%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Bwhite%2Dspace%3Anowrap%3Bvertical%2Dalign%3Abaseline%3Bborder%2Dradius%3A%2E25em%7Da%2Elabel%3Ahover%2Ca%2Elabel%3Afocus%7Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%7D%2Elabel%3Aempty%7Bdisplay%3Anone%7D%2Ebtn%20%2Elabel%7Bposition%3Arelative%3Btop%3A%2D1px%7D%2Elabel%2Ddefault%7Bbackground%2Dcolor%3A%23999999%7D%2Elabel%2Ddefault%5Bhref%5D%3Ahover%2C%2Elabel%2Ddefault%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%23808080%7D%2Elabel%2Dprimary%7Bbackground%2Dcolor%3A%23158cba%7D%2Elabel%2Dprimary%5Bhref%5D%3Ahover%2C%2Elabel%2Dprimary%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%23106a8c%7D%2Elabel%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%7D%2Elabel%2Dsuccess%5Bhref%5D%3Ahover%2C%2Elabel%2Dsuccess%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%231f8c22%7D%2Elabel%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%7D%2Elabel%2Dinfo%5Bhref%5D%3Ahover%2C%2Elabel%2Dinfo%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%2348b9e5%7D%2Elabel%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%7D%2Elabel%2Dwarning%5Bhref%5D%3Ahover%2C%2Elabel%2Dwarning%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%23e76b00%7D%2Elabel%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%7D%2Elabel%2Ddanger%5Bhref%5D%3Ahover%2C%2Elabel%2Ddanger%5Bhref%5D%3Afocus%7Bbackground%2Dcolor%3A%23ff1103%7D%2Ebadge%7Bdisplay%3Ainline%2Dblock%3Bmin%2Dwidth%3A10px%3Bpadding%3A3px%207px%3Bfont%2Dsize%3A12px%3Bfont%2Dweight%3Anormal%3Bcolor%3A%23ffffff%3Bline%2Dheight%3A1%3Bvertical%2Dalign%3Amiddle%3Bwhite%2Dspace%3Anowrap%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dradius%3A10px%7D%2Ebadge%3Aempty%7Bdisplay%3Anone%7D%2Ebtn%20%2Ebadge%7Bposition%3Arelative%3Btop%3A%2D1px%7D%2Ebtn%2Dxs%20%2Ebadge%2C%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%20%2Ebadge%7Btop%3A0%3Bpadding%3A1px%205px%7Da%2Ebadge%3Ahover%2Ca%2Ebadge%3Afocus%7Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%7D%2Elist%2Dgroup%2Ditem%2Eactive%3E%2Ebadge%2C%2Enav%2Dpills%3E%2Eactive%3Ea%3E%2Ebadge%7Bcolor%3A%23158cba%3Bbackground%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%3E%2Ebadge%7Bfloat%3Aright%7D%2Elist%2Dgroup%2Ditem%3E%2Ebadge%2B%2Ebadge%7Bmargin%2Dright%3A5px%7D%2Enav%2Dpills%3Eli%3Ea%3E%2Ebadge%7Bmargin%2Dleft%3A3px%7D%2Ejumbotron%7Bpadding%2Dtop%3A30px%3Bpadding%2Dbottom%3A30px%3Bmargin%2Dbottom%3A30px%3Bcolor%3Ainherit%3Bbackground%2Dcolor%3A%23fafafa%7D%2Ejumbotron%20h1%2C%2Ejumbotron%20%2Eh1%7Bcolor%3Ainherit%7D%2Ejumbotron%20p%7Bmargin%2Dbottom%3A15px%3Bfont%2Dsize%3A21px%3Bfont%2Dweight%3A200%7D%2Ejumbotron%3Ehr%7Bborder%2Dtop%2Dcolor%3A%23e1e1e1%7D%2Econtainer%20%2Ejumbotron%2C%2Econtainer%2Dfluid%20%2Ejumbotron%7Bborder%2Dradius%3A5px%3Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%2Ejumbotron%20%2Econtainer%7Bmax%2Dwidth%3A100%25%7D%40media%20screen%20and%20%28min%2Dwidth%3A768px%29%7B%2Ejumbotron%7Bpadding%2Dtop%3A48px%3Bpadding%2Dbottom%3A48px%7D%2Econtainer%20%2Ejumbotron%2C%2Econtainer%2Dfluid%20%2Ejumbotron%7Bpadding%2Dleft%3A60px%3Bpadding%2Dright%3A60px%7D%2Ejumbotron%20h1%2C%2Ejumbotron%20%2Eh1%7Bfont%2Dsize%3A63px%7D%7D%2Ethumbnail%7Bdisplay%3Ablock%3Bpadding%3A4px%3Bmargin%2Dbottom%3A20px%3Bline%2Dheight%3A1%2E42857143%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23eeeeee%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dtransition%3Aborder%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aborder%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aborder%20%2E2s%20ease%2Din%2Dout%7D%2Ethumbnail%3Eimg%2C%2Ethumbnail%20a%3Eimg%7Bmargin%2Dleft%3Aauto%3Bmargin%2Dright%3Aauto%7Da%2Ethumbnail%3Ahover%2Ca%2Ethumbnail%3Afocus%2Ca%2Ethumbnail%2Eactive%7Bborder%2Dcolor%3A%23158cba%7D%2Ethumbnail%20%2Ecaption%7Bpadding%3A9px%3Bcolor%3A%23555555%7D%2Ealert%7Bpadding%3A15px%3Bmargin%2Dbottom%3A20px%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%7D%2Ealert%20h4%7Bmargin%2Dtop%3A0%3Bcolor%3Ainherit%7D%2Ealert%20%2Ealert%2Dlink%7Bfont%2Dweight%3Abold%7D%2Ealert%3Ep%2C%2Ealert%3Eul%7Bmargin%2Dbottom%3A0%7D%2Ealert%3Ep%2Bp%7Bmargin%2Dtop%3A5px%7D%2Ealert%2Ddismissable%2C%2Ealert%2Ddismissible%7Bpadding%2Dright%3A35px%7D%2Ealert%2Ddismissable%20%2Eclose%2C%2Ealert%2Ddismissible%20%2Eclose%7Bposition%3Arelative%3Btop%3A%2D2px%3Bright%3A%2D21px%3Bcolor%3Ainherit%7D%2Ealert%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3A%2324a528%3Bcolor%3A%23ffffff%7D%2Ealert%2Dsuccess%20hr%7Bborder%2Dtop%2Dcolor%3A%23209023%7D%2Ealert%2Dsuccess%20%2Ealert%2Dlink%7Bcolor%3A%23e6e6e6%7D%2Ealert%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3A%2340b5e3%3Bcolor%3A%23ffffff%7D%2Ealert%2Dinfo%20hr%7Bborder%2Dtop%2Dcolor%3A%2329ade0%7D%2Ealert%2Dinfo%20%2Ealert%2Dlink%7Bcolor%3A%23e6e6e6%7D%2Ealert%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3A%23ff7701%3Bcolor%3A%23ffffff%7D%2Ealert%2Dwarning%20hr%7Bborder%2Dtop%2Dcolor%3A%23e76b00%7D%2Ealert%2Dwarning%20%2Ealert%2Dlink%7Bcolor%3A%23e6e6e6%7D%2Ealert%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3A%23ff1103%3Bcolor%3A%23ffffff%7D%2Ealert%2Ddanger%20hr%7Bborder%2Dtop%2Dcolor%3A%23e90d00%7D%2Ealert%2Ddanger%20%2Ealert%2Dlink%7Bcolor%3A%23e6e6e6%7D%40%2Dwebkit%2Dkeyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%40%2Do%2Dkeyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%40keyframes%20progress%2Dbar%2Dstripes%7Bfrom%7Bbackground%2Dposition%3A40px%200%7Dto%7Bbackground%2Dposition%3A0%200%7D%7D%2Eprogress%7Boverflow%3Ahidden%3Bheight%3A20px%3Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23fafafa%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%202px%20rgba%280%2C0%2C0%2C0%2E1%29%3Bbox%2Dshadow%3Ainset%200%201px%202px%20rgba%280%2C0%2C0%2C0%2E1%29%7D%2Eprogress%2Dbar%7Bfloat%3Aleft%3Bwidth%3A0%25%3Bheight%3A100%25%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A20px%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23158cba%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C0%2E15%29%3Bbox%2Dshadow%3Ainset%200%20%2D1px%200%20rgba%280%2C0%2C0%2C0%2E15%29%3B%2Dwebkit%2Dtransition%3Awidth%200%2E6s%20ease%3B%2Do%2Dtransition%3Awidth%200%2E6s%20ease%3Btransition%3Awidth%200%2E6s%20ease%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2C%2Eprogress%2Dbar%2Dstriped%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3B%2Dwebkit%2Dbackground%2Dsize%3A40px%2040px%3Bbackground%2Dsize%3A40px%2040px%7D%2Eprogress%2Eactive%20%2Eprogress%2Dbar%2C%2Eprogress%2Dbar%2Eactive%7B%2Dwebkit%2Danimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%3B%2Do%2Danimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%3Banimation%3Aprogress%2Dbar%2Dstripes%202s%20linear%20infinite%7D%2Eprogress%2Dbar%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dsuccess%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%7D%2Eprogress%2Dbar%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dinfo%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%7D%2Eprogress%2Dbar%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Dwarning%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%7D%2Eprogress%2Dbar%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%7D%2Eprogress%2Dstriped%20%2Eprogress%2Dbar%2Ddanger%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%3Bbackground%2Dimage%3Alinear%2Dgradient%2845deg%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2025%25%2C%20transparent%2025%25%2C%20transparent%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2050%25%2C%20rgba%28255%2C255%2C255%2C0%2E15%29%2075%25%2C%20transparent%2075%25%2C%20transparent%29%7D%2Emedia%7Bmargin%2Dtop%3A15px%7D%2Emedia%3Afirst%2Dchild%7Bmargin%2Dtop%3A0%7D%2Emedia%2C%2Emedia%2Dbody%7Bzoom%3A1%3Boverflow%3Ahidden%7D%2Emedia%2Dbody%7Bwidth%3A10000px%7D%2Emedia%2Dobject%7Bdisplay%3Ablock%7D%2Emedia%2Dobject%2Eimg%2Dthumbnail%7Bmax%2Dwidth%3Anone%7D%2Emedia%2Dright%2C%2Emedia%3E%2Epull%2Dright%7Bpadding%2Dleft%3A10px%7D%2Emedia%2Dleft%2C%2Emedia%3E%2Epull%2Dleft%7Bpadding%2Dright%3A10px%7D%2Emedia%2Dleft%2C%2Emedia%2Dright%2C%2Emedia%2Dbody%7Bdisplay%3Atable%2Dcell%3Bvertical%2Dalign%3Atop%7D%2Emedia%2Dmiddle%7Bvertical%2Dalign%3Amiddle%7D%2Emedia%2Dbottom%7Bvertical%2Dalign%3Abottom%7D%2Emedia%2Dheading%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A5px%7D%2Emedia%2Dlist%7Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%7D%2Elist%2Dgroup%7Bmargin%2Dbottom%3A20px%3Bpadding%2Dleft%3A0%7D%2Elist%2Dgroup%2Ditem%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bpadding%3A10px%2015px%3Bmargin%2Dbottom%3A%2D1px%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23eeeeee%7D%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A4px%3Bborder%2Dtop%2Dleft%2Dradius%3A4px%7D%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A4px%3Bborder%2Dbottom%2Dleft%2Dradius%3A4px%7Da%2Elist%2Dgroup%2Ditem%2Cbutton%2Elist%2Dgroup%2Ditem%7Bcolor%3A%23555555%7Da%2Elist%2Dgroup%2Ditem%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3A%23333333%7Da%2Elist%2Dgroup%2Ditem%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%3Afocus%7Btext%2Ddecoration%3Anone%3Bcolor%3A%23555555%3Bbackground%2Dcolor%3A%23f5f5f5%7Dbutton%2Elist%2Dgroup%2Ditem%7Bwidth%3A100%25%3Btext%2Dalign%3Aleft%7D%2Elist%2Dgroup%2Ditem%2Edisabled%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%7Bbackground%2Dcolor%3A%23eeeeee%3Bcolor%3A%23999999%3Bcursor%3Anot%2Dallowed%7D%2Elist%2Dgroup%2Ditem%2Edisabled%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7D%2Elist%2Dgroup%2Ditem%2Edisabled%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Edisabled%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dtext%7Bcolor%3A%23999999%7D%2Elist%2Dgroup%2Ditem%2Eactive%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%7Bz%2Dindex%3A2%3Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23158cba%7D%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%2C%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%3Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dheading%3E%2Esmall%7Bcolor%3Ainherit%7D%2Elist%2Dgroup%2Ditem%2Eactive%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%20%2Elist%2Dgroup%2Ditem%2Dtext%2C%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%20%2Elist%2Dgroup%2Ditem%2Dtext%7Bcolor%3A%23a6dff5%7D%2Elist%2Dgroup%2Ditem%2Dsuccess%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2328b62c%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%7Bcolor%3A%23ffffff%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2323a127%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%2Dinfo%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2375caeb%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%7Bcolor%3A%23ffffff%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%235fc1e8%7Da%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dinfo%2Eactive%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%2Dwarning%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff851b%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%7Bcolor%3A%23ffffff%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff7701%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%2Ddanger%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff4136%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%7Bcolor%3A%23ffffff%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%20%2Elist%2Dgroup%2Ditem%2Dheading%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%20%2Elist%2Dgroup%2Ditem%2Dheading%7Bcolor%3Ainherit%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%3Afocus%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff291c%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%2Cbutton%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%2Dcolor%3A%23ffffff%7D%2Elist%2Dgroup%2Ditem%2Dheading%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A5px%7D%2Elist%2Dgroup%2Ditem%2Dtext%7Bmargin%2Dbottom%3A0%3Bline%2Dheight%3A1%2E3%7D%2Epanel%7Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%201px%201px%20rgba%280%2C0%2C0%2C0%2E05%29%3Bbox%2Dshadow%3A0%201px%201px%20rgba%280%2C0%2C0%2C0%2E05%29%7D%2Epanel%2Dbody%7Bpadding%3A15px%7D%2Epanel%2Dheading%7Bpadding%3A10px%2015px%3Bborder%2Dbottom%3A1px%20solid%20transparent%3Bborder%2Dtop%2Dright%2Dradius%3A3px%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%2Dheading%3E%2Edropdown%20%2Edropdown%2Dtoggle%7Bcolor%3Ainherit%7D%2Epanel%2Dtitle%7Bmargin%2Dtop%3A0%3Bmargin%2Dbottom%3A0%3Bfont%2Dsize%3A16px%3Bcolor%3Ainherit%7D%2Epanel%2Dtitle%3Ea%2C%2Epanel%2Dtitle%3Esmall%2C%2Epanel%2Dtitle%3E%2Esmall%2C%2Epanel%2Dtitle%3Esmall%3Ea%2C%2Epanel%2Dtitle%3E%2Esmall%3Ea%7Bcolor%3Ainherit%7D%2Epanel%2Dfooter%7Bpadding%3A10px%2015px%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dtop%3A1px%20solid%20transparent%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Elist%2Dgroup%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%7Bmargin%2Dbottom%3A0%7D%2Epanel%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%7Bborder%2Dwidth%3A1px%200%3Bborder%2Dradius%3A0%7D%2Epanel%3E%2Elist%2Dgroup%3Afirst%2Dchild%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%3Afirst%2Dchild%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%3A0%3Bborder%2Dtop%2Dright%2Dradius%3A3px%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Elist%2Dgroup%3Alast%2Dchild%20%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%3Alast%2Dchild%20%2Elist%2Dgroup%2Ditem%3Alast%2Dchild%7Bborder%2Dbottom%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dtop%2Dleft%2Dradius%3A0%7D%2Epanel%2Dheading%2B%2Elist%2Dgroup%20%2Elist%2Dgroup%2Ditem%3Afirst%2Dchild%7Bborder%2Dtop%2Dwidth%3A0%7D%2Elist%2Dgroup%2B%2Epanel%2Dfooter%7Bborder%2Dtop%2Dwidth%3A0%7D%2Epanel%3E%2Etable%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Etable%7Bmargin%2Dbottom%3A0%7D%2Epanel%3E%2Etable%20caption%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%20caption%2C%2Epanel%3E%2Epanel%2Dcollapse%3E%2Etable%20caption%7Bpadding%2Dleft%3A15px%3Bpadding%2Dright%3A15px%7D%2Epanel%3E%2Etable%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A3px%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Afirst%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Ethead%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Afirst%2Dchild%3E%2Etable%3Afirst%2Dchild%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%3Alast%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%7Bborder%2Dbottom%2Dright%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%7Bborder%2Dbottom%2Dleft%2Dradius%3A3px%3Bborder%2Dbottom%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Afirst%2Dchild%7Bborder%2Dbottom%2Dleft%2Dradius%3A3px%7D%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20td%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etbody%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3Alast%2Dchild%3E%2Etable%3Alast%2Dchild%3Etfoot%3Alast%2Dchild%3Etr%3Alast%2Dchild%20th%3Alast%2Dchild%7Bborder%2Dbottom%2Dright%2Dradius%3A3px%7D%2Epanel%3E%2Epanel%2Dbody%2B%2Etable%2C%2Epanel%3E%2Epanel%2Dbody%2B%2Etable%2Dresponsive%2C%2Epanel%3E%2Etable%2B%2Epanel%2Dbody%2C%2Epanel%3E%2Etable%2Dresponsive%2B%2Epanel%2Dbody%7Bborder%2Dtop%3A1px%20solid%20%23eeeeee%7D%2Epanel%3E%2Etable%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20th%2C%2Epanel%3E%2Etable%3Etbody%3Afirst%2Dchild%3Etr%3Afirst%2Dchild%20td%7Bborder%2Dtop%3A0%7D%2Epanel%3E%2Etable%2Dbordered%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%7Bborder%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Afirst%2Dchild%7Bborder%2Dleft%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Eth%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Etd%3Alast%2Dchild%7Bborder%2Dright%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Ethead%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Afirst%2Dchild%3Eth%7Bborder%2Dbottom%3A0%7D%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Etd%2C%2Epanel%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etbody%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%2C%2Epanel%3E%2Etable%2Dresponsive%3E%2Etable%2Dbordered%3Etfoot%3Etr%3Alast%2Dchild%3Eth%7Bborder%2Dbottom%3A0%7D%2Epanel%3E%2Etable%2Dresponsive%7Bborder%3A0%3Bmargin%2Dbottom%3A0%7D%2Epanel%2Dgroup%7Bmargin%2Dbottom%3A20px%7D%2Epanel%2Dgroup%20%2Epanel%7Bmargin%2Dbottom%3A0%3Bborder%2Dradius%3A4px%7D%2Epanel%2Dgroup%20%2Epanel%2B%2Epanel%7Bmargin%2Dtop%3A5px%7D%2Epanel%2Dgroup%20%2Epanel%2Dheading%7Bborder%2Dbottom%3A0%7D%2Epanel%2Dgroup%20%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%2C%2Epanel%2Dgroup%20%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Elist%2Dgroup%7Bborder%2Dtop%3A1px%20solid%20transparent%7D%2Epanel%2Dgroup%20%2Epanel%2Dfooter%7Bborder%2Dtop%3A0%7D%2Epanel%2Dgroup%20%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%20%2Epanel%2Dbody%7Bborder%2Dbottom%3A1px%20solid%20transparent%7D%2Epanel%2Ddefault%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%7Bcolor%3A%23333333%3Bbackground%2Dcolor%3A%23f5f5f5%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Ddefault%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23f5f5f5%3Bbackground%2Dcolor%3A%23333333%7D%2Epanel%2Ddefault%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Dprimary%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Dprimary%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23158cba%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Dprimary%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Dsuccess%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%2328b62c%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Dsuccess%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Dinfo%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Dinfo%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%2375caeb%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Dinfo%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Dwarning%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Dwarning%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23ff851b%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Dwarning%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Epanel%2Ddanger%7Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%7Bcolor%3A%23ffffff%3Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3Atransparent%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dtop%2Dcolor%3Atransparent%7D%2Epanel%2Ddanger%3E%2Epanel%2Dheading%20%2Ebadge%7Bcolor%3A%23ff4136%3Bbackground%2Dcolor%3A%23ffffff%7D%2Epanel%2Ddanger%3E%2Epanel%2Dfooter%2B%2Epanel%2Dcollapse%3E%2Epanel%2Dbody%7Bborder%2Dbottom%2Dcolor%3Atransparent%7D%2Eembed%2Dresponsive%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bheight%3A0%3Bpadding%3A0%3Boverflow%3Ahidden%7D%2Eembed%2Dresponsive%20%2Eembed%2Dresponsive%2Ditem%2C%2Eembed%2Dresponsive%20iframe%2C%2Eembed%2Dresponsive%20embed%2C%2Eembed%2Dresponsive%20object%2C%2Eembed%2Dresponsive%20video%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bbottom%3A0%3Bheight%3A100%25%3Bwidth%3A100%25%3Bborder%3A0%7D%2Eembed%2Dresponsive%2D16by9%7Bpadding%2Dbottom%3A56%2E25%25%7D%2Eembed%2Dresponsive%2D4by3%7Bpadding%2Dbottom%3A75%25%7D%2Ewell%7Bmin%2Dheight%3A20px%3Bpadding%3A19px%3Bmargin%2Dbottom%3A20px%3Bbackground%2Dcolor%3A%23fafafa%3Bborder%3A1px%20solid%20%23e8e8e8%3Bborder%2Dradius%3A4px%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E05%29%3Bbox%2Dshadow%3Ainset%200%201px%201px%20rgba%280%2C0%2C0%2C0%2E05%29%7D%2Ewell%20blockquote%7Bborder%2Dcolor%3A%23ddd%3Bborder%2Dcolor%3Argba%280%2C0%2C0%2C0%2E15%29%7D%2Ewell%2Dlg%7Bpadding%3A24px%3Bborder%2Dradius%3A5px%7D%2Ewell%2Dsm%7Bpadding%3A9px%3Bborder%2Dradius%3A2px%7D%2Eclose%7Bfloat%3Aright%3Bfont%2Dsize%3A21px%3Bfont%2Dweight%3Abold%3Bline%2Dheight%3A1%3Bcolor%3A%23ffffff%3Btext%2Dshadow%3A0%201px%200%20%23ffffff%3Bopacity%3A0%2E2%3Bfilter%3Aalpha%28opacity%3D20%29%7D%2Eclose%3Ahover%2C%2Eclose%3Afocus%7Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Bcursor%3Apointer%3Bopacity%3A0%2E5%3Bfilter%3Aalpha%28opacity%3D50%29%7Dbutton%2Eclose%7Bpadding%3A0%3Bcursor%3Apointer%3Bbackground%3Atransparent%3Bborder%3A0%3B%2Dwebkit%2Dappearance%3Anone%7D%2Emodal%2Dopen%7Boverflow%3Ahidden%7D%2Emodal%7Bdisplay%3Anone%3Boverflow%3Ahidden%3Bposition%3Afixed%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bz%2Dindex%3A1050%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%3Boutline%3A0%7D%2Emodal%2Efade%20%2Emodal%2Ddialog%7B%2Dwebkit%2Dtransform%3Atranslate%280%2C%20%2D25%25%29%3B%2Dms%2Dtransform%3Atranslate%280%2C%20%2D25%25%29%3B%2Do%2Dtransform%3Atranslate%280%2C%20%2D25%25%29%3Btransform%3Atranslate%280%2C%20%2D25%25%29%3B%2Dwebkit%2Dtransition%3A%2Dwebkit%2Dtransform%20%2E3s%20ease%2Dout%3B%2Do%2Dtransition%3A%2Do%2Dtransform%20%2E3s%20ease%2Dout%3Btransition%3Atransform%20%2E3s%20ease%2Dout%7D%2Emodal%2Ein%20%2Emodal%2Ddialog%7B%2Dwebkit%2Dtransform%3Atranslate%280%2C%200%29%3B%2Dms%2Dtransform%3Atranslate%280%2C%200%29%3B%2Do%2Dtransform%3Atranslate%280%2C%200%29%3Btransform%3Atranslate%280%2C%200%29%7D%2Emodal%2Dopen%20%2Emodal%7Boverflow%2Dx%3Ahidden%3Boverflow%2Dy%3Aauto%7D%2Emodal%2Ddialog%7Bposition%3Arelative%3Bwidth%3Aauto%3Bmargin%3A10px%7D%2Emodal%2Dcontent%7Bposition%3Arelative%3Bbackground%2Dcolor%3A%23ffffff%3Bborder%3A1px%20solid%20%23eeeeee%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C0%2E05%29%3Bborder%2Dradius%3A5px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%203px%209px%20rgba%280%2C0%2C0%2C0%2E5%29%3Bbox%2Dshadow%3A0%203px%209px%20rgba%280%2C0%2C0%2C0%2E5%29%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%3Boutline%3A0%7D%2Emodal%2Dbackdrop%7Bposition%3Afixed%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bz%2Dindex%3A1040%3Bbackground%2Dcolor%3A%23000000%7D%2Emodal%2Dbackdrop%2Efade%7Bopacity%3A0%3Bfilter%3Aalpha%28opacity%3D0%29%7D%2Emodal%2Dbackdrop%2Ein%7Bopacity%3A0%2E5%3Bfilter%3Aalpha%28opacity%3D50%29%7D%2Emodal%2Dheader%7Bpadding%3A15px%3Bborder%2Dbottom%3A1px%20solid%20%23e5e5e5%7D%2Emodal%2Dheader%20%2Eclose%7Bmargin%2Dtop%3A%2D2px%7D%2Emodal%2Dtitle%7Bmargin%3A0%3Bline%2Dheight%3A1%2E42857143%7D%2Emodal%2Dbody%7Bposition%3Arelative%3Bpadding%3A20px%7D%2Emodal%2Dfooter%7Bpadding%3A20px%3Btext%2Dalign%3Aright%3Bborder%2Dtop%3A1px%20solid%20%23e5e5e5%7D%2Emodal%2Dfooter%20%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A5px%3Bmargin%2Dbottom%3A0%7D%2Emodal%2Dfooter%20%2Ebtn%2Dgroup%20%2Ebtn%2B%2Ebtn%7Bmargin%2Dleft%3A%2D1px%7D%2Emodal%2Dfooter%20%2Ebtn%2Dblock%2B%2Ebtn%2Dblock%7Bmargin%2Dleft%3A0%7D%2Emodal%2Dscrollbar%2Dmeasure%7Bposition%3Aabsolute%3Btop%3A%2D9999px%3Bwidth%3A50px%3Bheight%3A50px%3Boverflow%3Ascroll%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Emodal%2Ddialog%7Bwidth%3A600px%3Bmargin%3A30px%20auto%7D%2Emodal%2Dcontent%7B%2Dwebkit%2Dbox%2Dshadow%3A0%205px%2015px%20rgba%280%2C0%2C0%2C0%2E5%29%3Bbox%2Dshadow%3A0%205px%2015px%20rgba%280%2C0%2C0%2C0%2E5%29%7D%2Emodal%2Dsm%7Bwidth%3A300px%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Emodal%2Dlg%7Bwidth%3A900px%7D%7D%2Etooltip%7Bposition%3Aabsolute%3Bz%2Dindex%3A1070%3Bdisplay%3Ablock%3Bfont%2Dfamily%3A%22Source%20Sans%20Pro%22%2C%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3Anormal%3Bletter%2Dspacing%3Anormal%3Bline%2Dbreak%3Aauto%3Bline%2Dheight%3A1%2E42857143%3Btext%2Dalign%3Aleft%3Btext%2Dalign%3Astart%3Btext%2Ddecoration%3Anone%3Btext%2Dshadow%3Anone%3Btext%2Dtransform%3Anone%3Bwhite%2Dspace%3Anormal%3Bword%2Dbreak%3Anormal%3Bword%2Dspacing%3Anormal%3Bword%2Dwrap%3Anormal%3Bfont%2Dsize%3A12px%3Bopacity%3A0%3Bfilter%3Aalpha%28opacity%3D0%29%7D%2Etooltip%2Ein%7Bopacity%3A0%2E9%3Bfilter%3Aalpha%28opacity%3D90%29%7D%2Etooltip%2Etop%7Bmargin%2Dtop%3A%2D3px%3Bpadding%3A5px%200%7D%2Etooltip%2Eright%7Bmargin%2Dleft%3A3px%3Bpadding%3A0%205px%7D%2Etooltip%2Ebottom%7Bmargin%2Dtop%3A3px%3Bpadding%3A5px%200%7D%2Etooltip%2Eleft%7Bmargin%2Dleft%3A%2D3px%3Bpadding%3A0%205px%7D%2Etooltip%2Dinner%7Bmax%2Dwidth%3A200px%3Bpadding%3A3px%208px%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Bbackground%2Dcolor%3A%23000000%3Bborder%2Dradius%3A4px%7D%2Etooltip%2Darrow%7Bposition%3Aabsolute%3Bwidth%3A0%3Bheight%3A0%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dstyle%3Asolid%7D%2Etooltip%2Etop%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000000%7D%2Etooltip%2Etop%2Dleft%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bright%3A5px%3Bmargin%2Dbottom%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000000%7D%2Etooltip%2Etop%2Dright%20%2Etooltip%2Darrow%7Bbottom%3A0%3Bleft%3A5px%3Bmargin%2Dbottom%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%200%3Bborder%2Dtop%2Dcolor%3A%23000000%7D%2Etooltip%2Eright%20%2Etooltip%2Darrow%7Btop%3A50%25%3Bleft%3A0%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A5px%205px%205px%200%3Bborder%2Dright%2Dcolor%3A%23000000%7D%2Etooltip%2Eleft%20%2Etooltip%2Darrow%7Btop%3A50%25%3Bright%3A0%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A5px%200%205px%205px%3Bborder%2Dleft%2Dcolor%3A%23000000%7D%2Etooltip%2Ebottom%20%2Etooltip%2Darrow%7Btop%3A0%3Bleft%3A50%25%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000000%7D%2Etooltip%2Ebottom%2Dleft%20%2Etooltip%2Darrow%7Btop%3A0%3Bright%3A5px%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000000%7D%2Etooltip%2Ebottom%2Dright%20%2Etooltip%2Darrow%7Btop%3A0%3Bleft%3A5px%3Bmargin%2Dtop%3A%2D5px%3Bborder%2Dwidth%3A0%205px%205px%3Bborder%2Dbottom%2Dcolor%3A%23000000%7D%2Epopover%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bz%2Dindex%3A1060%3Bdisplay%3Anone%3Bmax%2Dwidth%3A276px%3Bpadding%3A1px%3Bfont%2Dfamily%3A%22Source%20Sans%20Pro%22%2C%22Helvetica%20Neue%22%2CHelvetica%2CArial%2Csans%2Dserif%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3Anormal%3Bletter%2Dspacing%3Anormal%3Bline%2Dbreak%3Aauto%3Bline%2Dheight%3A1%2E42857143%3Btext%2Dalign%3Aleft%3Btext%2Dalign%3Astart%3Btext%2Ddecoration%3Anone%3Btext%2Dshadow%3Anone%3Btext%2Dtransform%3Anone%3Bwhite%2Dspace%3Anormal%3Bword%2Dbreak%3Anormal%3Bword%2Dspacing%3Anormal%3Bword%2Dwrap%3Anormal%3Bfont%2Dsize%3A14px%3Bbackground%2Dcolor%3A%23ffffff%3B%2Dwebkit%2Dbackground%2Dclip%3Apadding%2Dbox%3Bbackground%2Dclip%3Apadding%2Dbox%3Bborder%3A1px%20solid%20%23cccccc%3Bborder%3A1px%20solid%20rgba%280%2C0%2C0%2C0%2E2%29%3Bborder%2Dradius%3A5px%3B%2Dwebkit%2Dbox%2Dshadow%3A0%205px%2010px%20rgba%280%2C0%2C0%2C0%2E2%29%3Bbox%2Dshadow%3A0%205px%2010px%20rgba%280%2C0%2C0%2C0%2E2%29%7D%2Epopover%2Etop%7Bmargin%2Dtop%3A%2D10px%7D%2Epopover%2Eright%7Bmargin%2Dleft%3A10px%7D%2Epopover%2Ebottom%7Bmargin%2Dtop%3A10px%7D%2Epopover%2Eleft%7Bmargin%2Dleft%3A%2D10px%7D%2Epopover%2Dtitle%7Bmargin%3A0%3Bpadding%3A8px%2014px%3Bfont%2Dsize%3A14px%3Bbackground%2Dcolor%3A%23f7f7f7%3Bborder%2Dbottom%3A1px%20solid%20%23ebebeb%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Epopover%2Dcontent%7Bpadding%3A9px%2014px%7D%2Epopover%3E%2Earrow%2C%2Epopover%3E%2Earrow%3Aafter%7Bposition%3Aabsolute%3Bdisplay%3Ablock%3Bwidth%3A0%3Bheight%3A0%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dstyle%3Asolid%7D%2Epopover%3E%2Earrow%7Bborder%2Dwidth%3A11px%7D%2Epopover%3E%2Earrow%3Aafter%7Bborder%2Dwidth%3A10px%3Bcontent%3A%22%22%7D%2Epopover%2Etop%3E%2Earrow%7Bleft%3A50%25%3Bmargin%2Dleft%3A%2D11px%3Bborder%2Dbottom%2Dwidth%3A0%3Bborder%2Dtop%2Dcolor%3A%23999999%3Bborder%2Dtop%2Dcolor%3Argba%280%2C0%2C0%2C0%2E25%29%3Bbottom%3A%2D11px%7D%2Epopover%2Etop%3E%2Earrow%3Aafter%7Bcontent%3A%22%20%22%3Bbottom%3A1px%3Bmargin%2Dleft%3A%2D10px%3Bborder%2Dbottom%2Dwidth%3A0%3Bborder%2Dtop%2Dcolor%3A%23ffffff%7D%2Epopover%2Eright%3E%2Earrow%7Btop%3A50%25%3Bleft%3A%2D11px%3Bmargin%2Dtop%3A%2D11px%3Bborder%2Dleft%2Dwidth%3A0%3Bborder%2Dright%2Dcolor%3A%23999999%3Bborder%2Dright%2Dcolor%3Argba%280%2C0%2C0%2C0%2E25%29%7D%2Epopover%2Eright%3E%2Earrow%3Aafter%7Bcontent%3A%22%20%22%3Bleft%3A1px%3Bbottom%3A%2D10px%3Bborder%2Dleft%2Dwidth%3A0%3Bborder%2Dright%2Dcolor%3A%23ffffff%7D%2Epopover%2Ebottom%3E%2Earrow%7Bleft%3A50%25%3Bmargin%2Dleft%3A%2D11px%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%23999999%3Bborder%2Dbottom%2Dcolor%3Argba%280%2C0%2C0%2C0%2E25%29%3Btop%3A%2D11px%7D%2Epopover%2Ebottom%3E%2Earrow%3Aafter%7Bcontent%3A%22%20%22%3Btop%3A1px%3Bmargin%2Dleft%3A%2D10px%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%23ffffff%7D%2Epopover%2Eleft%3E%2Earrow%7Btop%3A50%25%3Bright%3A%2D11px%3Bmargin%2Dtop%3A%2D11px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%23999999%3Bborder%2Dleft%2Dcolor%3Argba%280%2C0%2C0%2C0%2E25%29%7D%2Epopover%2Eleft%3E%2Earrow%3Aafter%7Bcontent%3A%22%20%22%3Bright%3A1px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%23ffffff%3Bbottom%3A%2D10px%7D%2Ecarousel%7Bposition%3Arelative%7D%2Ecarousel%2Dinner%7Bposition%3Arelative%3Boverflow%3Ahidden%3Bwidth%3A100%25%7D%2Ecarousel%2Dinner%3E%2Eitem%7Bdisplay%3Anone%3Bposition%3Arelative%3B%2Dwebkit%2Dtransition%3A%2E6s%20ease%2Din%2Dout%20left%3B%2Do%2Dtransition%3A%2E6s%20ease%2Din%2Dout%20left%3Btransition%3A%2E6s%20ease%2Din%2Dout%20left%7D%2Ecarousel%2Dinner%3E%2Eitem%3Eimg%2C%2Ecarousel%2Dinner%3E%2Eitem%3Ea%3Eimg%7Bline%2Dheight%3A1%7D%40media%20all%20and%20%28transform%2D3d%29%2C%28%2Dwebkit%2Dtransform%2D3d%29%7B%2Ecarousel%2Dinner%3E%2Eitem%7B%2Dwebkit%2Dtransition%3A%2Dwebkit%2Dtransform%20%2E6s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3A%2Do%2Dtransform%20%2E6s%20ease%2Din%2Dout%3Btransition%3Atransform%20%2E6s%20ease%2Din%2Dout%3B%2Dwebkit%2Dbackface%2Dvisibility%3Ahidden%3Bbackface%2Dvisibility%3Ahidden%3B%2Dwebkit%2Dperspective%3A1000px%3Bperspective%3A1000px%7D%2Ecarousel%2Dinner%3E%2Eitem%2Enext%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%2Eright%7B%2Dwebkit%2Dtransform%3Atranslate3d%28100%25%2C%200%2C%200%29%3Btransform%3Atranslate3d%28100%25%2C%200%2C%200%29%3Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Eitem%2Eprev%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%2Eleft%7B%2Dwebkit%2Dtransform%3Atranslate3d%28%2D100%25%2C%200%2C%200%29%3Btransform%3Atranslate3d%28%2D100%25%2C%200%2C%200%29%3Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Eitem%2Enext%2Eleft%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eprev%2Eright%2C%2Ecarousel%2Dinner%3E%2Eitem%2Eactive%7B%2Dwebkit%2Dtransform%3Atranslate3d%280%2C%200%2C%200%29%3Btransform%3Atranslate3d%280%2C%200%2C%200%29%3Bleft%3A0%7D%7D%2Ecarousel%2Dinner%3E%2Eactive%2C%2Ecarousel%2Dinner%3E%2Enext%2C%2Ecarousel%2Dinner%3E%2Eprev%7Bdisplay%3Ablock%7D%2Ecarousel%2Dinner%3E%2Eactive%7Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Enext%2C%2Ecarousel%2Dinner%3E%2Eprev%7Bposition%3Aabsolute%3Btop%3A0%3Bwidth%3A100%25%7D%2Ecarousel%2Dinner%3E%2Enext%7Bleft%3A100%25%7D%2Ecarousel%2Dinner%3E%2Eprev%7Bleft%3A%2D100%25%7D%2Ecarousel%2Dinner%3E%2Enext%2Eleft%2C%2Ecarousel%2Dinner%3E%2Eprev%2Eright%7Bleft%3A0%7D%2Ecarousel%2Dinner%3E%2Eactive%2Eleft%7Bleft%3A%2D100%25%7D%2Ecarousel%2Dinner%3E%2Eactive%2Eright%7Bleft%3A100%25%7D%2Ecarousel%2Dcontrol%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bbottom%3A0%3Bwidth%3A15%25%3Bopacity%3A0%2E5%3Bfilter%3Aalpha%28opacity%3D50%29%3Bfont%2Dsize%3A20px%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Btext%2Dshadow%3A0%201px%202px%20rgba%280%2C0%2C0%2C0%2E6%29%3Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C0%29%7D%2Ecarousel%2Dcontrol%2Eleft%7Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2C%20rgba%280%2C0%2C0%2C0%2E5%29%200%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28left%2C%20rgba%280%2C0%2C0%2C0%2E5%29%200%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%20100%25%29%3Bbackground%2Dimage%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20right%20top%2C%20from%28rgba%280%2C0%2C0%2C0%2E5%29%29%2C%20to%28rgba%280%2C0%2C0%2C0%2E0001%29%29%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20right%2C%20rgba%280%2C0%2C0%2C0%2E5%29%200%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%20100%25%29%3Bbackground%2Drepeat%3Arepeat%2Dx%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28startColorstr%3D%27%2380000000%27%2C%20endColorstr%3D%27%2300000000%27%2C%20GradientType%3D1%29%7D%2Ecarousel%2Dcontrol%2Eright%7Bleft%3Aauto%3Bright%3A0%3Bbackground%2Dimage%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%200%2C%20rgba%280%2C0%2C0%2C0%2E5%29%20100%25%29%3Bbackground%2Dimage%3A%2Do%2Dlinear%2Dgradient%28left%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%200%2C%20rgba%280%2C0%2C0%2C0%2E5%29%20100%25%29%3Bbackground%2Dimage%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20right%20top%2C%20from%28rgba%280%2C0%2C0%2C0%2E0001%29%29%2C%20to%28rgba%280%2C0%2C0%2C0%2E5%29%29%29%3Bbackground%2Dimage%3Alinear%2Dgradient%28to%20right%2C%20rgba%280%2C0%2C0%2C0%2E0001%29%200%2C%20rgba%280%2C0%2C0%2C0%2E5%29%20100%25%29%3Bbackground%2Drepeat%3Arepeat%2Dx%3Bfilter%3Aprogid%3ADXImageTransform%2EMicrosoft%2Egradient%28startColorstr%3D%27%2300000000%27%2C%20endColorstr%3D%27%2380000000%27%2C%20GradientType%3D1%29%7D%2Ecarousel%2Dcontrol%3Ahover%2C%2Ecarousel%2Dcontrol%3Afocus%7Boutline%3A0%3Bcolor%3A%23ffffff%3Btext%2Ddecoration%3Anone%3Bopacity%3A0%2E9%3Bfilter%3Aalpha%28opacity%3D90%29%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%7Bposition%3Aabsolute%3Btop%3A50%25%3Bmargin%2Dtop%3A%2D10px%3Bz%2Dindex%3A5%3Bdisplay%3Ainline%2Dblock%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%7Bleft%3A50%25%3Bmargin%2Dleft%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%7Bright%3A50%25%3Bmargin%2Dright%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bwidth%3A20px%3Bheight%3A20px%3Bline%2Dheight%3A1%3Bfont%2Dfamily%3Aserif%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%3Abefore%7Bcontent%3A%27%5C2039%27%7D%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%3Abefore%7Bcontent%3A%27%5C203a%27%7D%2Ecarousel%2Dindicators%7Bposition%3Aabsolute%3Bbottom%3A10px%3Bleft%3A50%25%3Bz%2Dindex%3A15%3Bwidth%3A60%25%3Bmargin%2Dleft%3A%2D30%25%3Bpadding%2Dleft%3A0%3Blist%2Dstyle%3Anone%3Btext%2Dalign%3Acenter%7D%2Ecarousel%2Dindicators%20li%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A10px%3Bheight%3A10px%3Bmargin%3A1px%3Btext%2Dindent%3A%2D999px%3Bborder%3A1px%20solid%20%23ffffff%3Bborder%2Dradius%3A10px%3Bcursor%3Apointer%3Bbackground%2Dcolor%3A%23000%20%5C9%3Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C0%29%7D%2Ecarousel%2Dindicators%20%2Eactive%7Bmargin%3A0%3Bwidth%3A12px%3Bheight%3A12px%3Bbackground%2Dcolor%3A%23ffffff%7D%2Ecarousel%2Dcaption%7Bposition%3Aabsolute%3Bleft%3A15%25%3Bright%3A15%25%3Bbottom%3A20px%3Bz%2Dindex%3A10%3Bpadding%2Dtop%3A20px%3Bpadding%2Dbottom%3A20px%3Bcolor%3A%23ffffff%3Btext%2Dalign%3Acenter%3Btext%2Dshadow%3A0%201px%202px%20rgba%280%2C0%2C0%2C0%2E6%29%7D%2Ecarousel%2Dcaption%20%2Ebtn%7Btext%2Dshadow%3Anone%7D%40media%20screen%20and%20%28min%2Dwidth%3A768px%29%7B%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bwidth%3A30px%3Bheight%3A30px%3Bmargin%2Dtop%3A%2D10px%3Bfont%2Dsize%3A30px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dleft%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dprev%7Bmargin%2Dleft%3A%2D10px%7D%2Ecarousel%2Dcontrol%20%2Eglyphicon%2Dchevron%2Dright%2C%2Ecarousel%2Dcontrol%20%2Eicon%2Dnext%7Bmargin%2Dright%3A%2D10px%7D%2Ecarousel%2Dcaption%7Bleft%3A20%25%3Bright%3A20%25%3Bpadding%2Dbottom%3A30px%7D%2Ecarousel%2Dindicators%7Bbottom%3A20px%7D%7D%2Eclearfix%3Abefore%2C%2Eclearfix%3Aafter%2C%2Edl%2Dhorizontal%20dd%3Abefore%2C%2Edl%2Dhorizontal%20dd%3Aafter%2C%2Econtainer%3Abefore%2C%2Econtainer%3Aafter%2C%2Econtainer%2Dfluid%3Abefore%2C%2Econtainer%2Dfluid%3Aafter%2C%2Erow%3Abefore%2C%2Erow%3Aafter%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Abefore%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Aafter%2C%2Ebtn%2Dtoolbar%3Abefore%2C%2Ebtn%2Dtoolbar%3Aafter%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Abefore%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Aafter%2C%2Enav%3Abefore%2C%2Enav%3Aafter%2C%2Enavbar%3Abefore%2C%2Enavbar%3Aafter%2C%2Enavbar%2Dheader%3Abefore%2C%2Enavbar%2Dheader%3Aafter%2C%2Enavbar%2Dcollapse%3Abefore%2C%2Enavbar%2Dcollapse%3Aafter%2C%2Epager%3Abefore%2C%2Epager%3Aafter%2C%2Epanel%2Dbody%3Abefore%2C%2Epanel%2Dbody%3Aafter%2C%2Emodal%2Dheader%3Abefore%2C%2Emodal%2Dheader%3Aafter%2C%2Emodal%2Dfooter%3Abefore%2C%2Emodal%2Dfooter%3Aafter%7Bcontent%3A%22%20%22%3Bdisplay%3Atable%7D%2Eclearfix%3Aafter%2C%2Edl%2Dhorizontal%20dd%3Aafter%2C%2Econtainer%3Aafter%2C%2Econtainer%2Dfluid%3Aafter%2C%2Erow%3Aafter%2C%2Eform%2Dhorizontal%20%2Eform%2Dgroup%3Aafter%2C%2Ebtn%2Dtoolbar%3Aafter%2C%2Ebtn%2Dgroup%2Dvertical%3E%2Ebtn%2Dgroup%3Aafter%2C%2Enav%3Aafter%2C%2Enavbar%3Aafter%2C%2Enavbar%2Dheader%3Aafter%2C%2Enavbar%2Dcollapse%3Aafter%2C%2Epager%3Aafter%2C%2Epanel%2Dbody%3Aafter%2C%2Emodal%2Dheader%3Aafter%2C%2Emodal%2Dfooter%3Aafter%7Bclear%3Aboth%7D%2Ecenter%2Dblock%7Bdisplay%3Ablock%3Bmargin%2Dleft%3Aauto%3Bmargin%2Dright%3Aauto%7D%2Epull%2Dright%7Bfloat%3Aright%20%21important%7D%2Epull%2Dleft%7Bfloat%3Aleft%20%21important%7D%2Ehide%7Bdisplay%3Anone%20%21important%7D%2Eshow%7Bdisplay%3Ablock%20%21important%7D%2Einvisible%7Bvisibility%3Ahidden%7D%2Etext%2Dhide%7Bfont%3A0%2F0%20a%3Bcolor%3Atransparent%3Btext%2Dshadow%3Anone%3Bbackground%2Dcolor%3Atransparent%3Bborder%3A0%7D%2Ehidden%7Bdisplay%3Anone%20%21important%7D%2Eaffix%7Bposition%3Afixed%7D%40%2Dms%2Dviewport%7Bwidth%3Adevice%2Dwidth%7D%2Evisible%2Dxs%2C%2Evisible%2Dsm%2C%2Evisible%2Dmd%2C%2Evisible%2Dlg%7Bdisplay%3Anone%20%21important%7D%2Evisible%2Dxs%2Dblock%2C%2Evisible%2Dxs%2Dinline%2C%2Evisible%2Dxs%2Dinline%2Dblock%2C%2Evisible%2Dsm%2Dblock%2C%2Evisible%2Dsm%2Dinline%2C%2Evisible%2Dsm%2Dinline%2Dblock%2C%2Evisible%2Dmd%2Dblock%2C%2Evisible%2Dmd%2Dinline%2C%2Evisible%2Dmd%2Dinline%2Dblock%2C%2Evisible%2Dlg%2Dblock%2C%2Evisible%2Dlg%2Dinline%2C%2Evisible%2Dlg%2Dinline%2Dblock%7Bdisplay%3Anone%20%21important%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dxs%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dxs%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dxs%2Ctd%2Evisible%2Dxs%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Evisible%2Dxs%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dsm%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dsm%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dsm%2Ctd%2Evisible%2Dsm%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Evisible%2Dsm%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dmd%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dmd%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dmd%2Ctd%2Evisible%2Dmd%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Evisible%2Dmd%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dlg%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dlg%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dlg%2Ctd%2Evisible%2Dlg%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Evisible%2Dlg%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20%28max%2Dwidth%3A767px%29%7B%2Ehidden%2Dxs%7Bdisplay%3Anone%20%21important%7D%7D%40media%20%28min%2Dwidth%3A768px%29%20and%20%28max%2Dwidth%3A991px%29%7B%2Ehidden%2Dsm%7Bdisplay%3Anone%20%21important%7D%7D%40media%20%28min%2Dwidth%3A992px%29%20and%20%28max%2Dwidth%3A1199px%29%7B%2Ehidden%2Dmd%7Bdisplay%3Anone%20%21important%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Ehidden%2Dlg%7Bdisplay%3Anone%20%21important%7D%7D%2Evisible%2Dprint%7Bdisplay%3Anone%20%21important%7D%40media%20print%7B%2Evisible%2Dprint%7Bdisplay%3Ablock%20%21important%7Dtable%2Evisible%2Dprint%7Bdisplay%3Atable%20%21important%7Dtr%2Evisible%2Dprint%7Bdisplay%3Atable%2Drow%20%21important%7Dth%2Evisible%2Dprint%2Ctd%2Evisible%2Dprint%7Bdisplay%3Atable%2Dcell%20%21important%7D%7D%2Evisible%2Dprint%2Dblock%7Bdisplay%3Anone%20%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dblock%7Bdisplay%3Ablock%20%21important%7D%7D%2Evisible%2Dprint%2Dinline%7Bdisplay%3Anone%20%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dinline%7Bdisplay%3Ainline%20%21important%7D%7D%2Evisible%2Dprint%2Dinline%2Dblock%7Bdisplay%3Anone%20%21important%7D%40media%20print%7B%2Evisible%2Dprint%2Dinline%2Dblock%7Bdisplay%3Ainline%2Dblock%20%21important%7D%7D%40media%20print%7B%2Ehidden%2Dprint%7Bdisplay%3Anone%20%21important%7D%7D%2Enavbar%7Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Ebtn%7Bpadding%3A9px%2012px%207px%3Bborder%2Dwidth%3A0%201px%204px%201px%3Bfont%2Dsize%3A12px%3Bfont%2Dweight%3Abold%3Btext%2Dtransform%3Auppercase%7D%2Ebtn%3Ahover%7Bmargin%2Dtop%3A1px%3Bborder%2Dbottom%2Dwidth%3A3px%7D%2Ebtn%3Aactive%7Bmargin%2Dtop%3A2px%3Bborder%2Dbottom%2Dwidth%3A2px%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebtn%2Dlg%2C%2Ebtn%2Dgroup%2Dlg%3E%2Ebtn%7Bpadding%3A15px%2016px%2013px%3Bline%2Dheight%3A15px%7D%2Ebtn%2Dsm%2C%2Ebtn%2Dgroup%2Dsm%3E%2Ebtn%7Bpadding%3A6px%2010px%204px%7D%2Ebtn%2Dxs%2C%2Ebtn%2Dgroup%2Dxs%3E%2Ebtn%7Bpadding%3A3px%205px%201px%7D%2Ebtn%2Ddefault%3Ahover%2C%2Ebtn%2Ddefault%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Ddefault%7Bbackground%2Dcolor%3A%23eeeeee%3Bborder%2Dcolor%3A%23e2e2e2%7D%2Ebtn%2Dprimary%3Ahover%2C%2Ebtn%2Dprimary%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dprimary%7Bbackground%2Dcolor%3A%23158cba%3Bborder%2Dcolor%3A%23127ba3%7D%2Ebtn%2Dsuccess%3Ahover%2C%2Ebtn%2Dsuccess%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dsuccess%7Bbackground%2Dcolor%3A%2328b62c%3Bborder%2Dcolor%3A%2323a127%7D%2Ebtn%2Dinfo%3Ahover%2C%2Ebtn%2Dinfo%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dinfo%7Bbackground%2Dcolor%3A%2375caeb%3Bborder%2Dcolor%3A%235fc1e8%7D%2Ebtn%2Dwarning%3Ahover%2C%2Ebtn%2Dwarning%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Dwarning%7Bbackground%2Dcolor%3A%23ff851b%3Bborder%2Dcolor%3A%23ff7701%7D%2Ebtn%2Ddanger%3Ahover%2C%2Ebtn%2Ddanger%3Afocus%2C%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%2Ebtn%2Ddanger%7Bbackground%2Dcolor%3A%23ff4136%3Bborder%2Dcolor%3A%23ff291c%7D%2Ebtn%2Dgroup%2Eopen%20%2Edropdown%2Dtoggle%7B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Enavbar%2Dbtn%3Ahover%7Bmargin%2Dtop%3A8px%7D%2Enavbar%2Dbtn%3Aactive%7Bmargin%2Dtop%3A9px%7D%2Enavbar%2Dbtn%2Ebtn%2Dsm%3Ahover%7Bmargin%2Dtop%3A11px%7D%2Enavbar%2Dbtn%2Ebtn%2Dsm%3Aactive%7Bmargin%2Dtop%3A12px%7D%2Enavbar%2Dbtn%2Ebtn%2Dxs%3Ahover%7Bmargin%2Dtop%3A15px%7D%2Enavbar%2Dbtn%2Ebtn%2Dxs%3Aactive%7Bmargin%2Dtop%3A16px%7D%2Ebtn%2Dgroup%2Dvertical%20%2Ebtn%2B%2Ebtn%3Ahover%7Bborder%2Dtop%2Dwidth%3A1px%7D%2Ebtn%2Dgroup%2Dvertical%20%2Ebtn%2B%2Ebtn%3Aactive%7Bborder%2Dtop%2Dwidth%3A2px%7D%2Etext%2Dprimary%2C%2Etext%2Dprimary%3Ahover%7Bcolor%3A%23158cba%7D%2Etext%2Dsuccess%2C%2Etext%2Dsuccess%3Ahover%7Bcolor%3A%2328b62c%7D%2Etext%2Ddanger%2C%2Etext%2Ddanger%3Ahover%7Bcolor%3A%23ff4136%7D%2Etext%2Dwarning%2C%2Etext%2Dwarning%3Ahover%7Bcolor%3A%23ff851b%7D%2Etext%2Dinfo%2C%2Etext%2Dinfo%3Ahover%7Bcolor%3A%2375caeb%7Dtable%20a%3Anot%28%2Ebtn%29%2C%2Etable%20a%3Anot%28%2Ebtn%29%7Btext%2Ddecoration%3Aunderline%7Dtable%20%2Edropdown%2Dmenu%20a%2C%2Etable%20%2Edropdown%2Dmenu%20a%7Btext%2Ddecoration%3Anone%7Dtable%20%2Esuccess%2C%2Etable%20%2Esuccess%2Ctable%20%2Ewarning%2C%2Etable%20%2Ewarning%2Ctable%20%2Edanger%2C%2Etable%20%2Edanger%2Ctable%20%2Einfo%2C%2Etable%20%2Einfo%7Bcolor%3A%23fff%7Dtable%20%2Esuccess%20a%3Anot%28%2Ebtn%29%2C%2Etable%20%2Esuccess%20a%3Anot%28%2Ebtn%29%2Ctable%20%2Ewarning%20a%3Anot%28%2Ebtn%29%2C%2Etable%20%2Ewarning%20a%3Anot%28%2Ebtn%29%2Ctable%20%2Edanger%20a%3Anot%28%2Ebtn%29%2C%2Etable%20%2Edanger%20a%3Anot%28%2Ebtn%29%2Ctable%20%2Einfo%20a%3Anot%28%2Ebtn%29%2C%2Etable%20%2Einfo%20a%3Anot%28%2Ebtn%29%7Bcolor%3A%23fff%7Dtable%3Anot%28%2Etable%2Dbordered%29%3Ethead%3Etr%3Eth%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Ethead%3Etr%3Eth%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Etbody%3Etr%3Eth%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Etbody%3Etr%3Eth%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Etfoot%3Etr%3Eth%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Etfoot%3Etr%3Eth%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Ethead%3Etr%3Etd%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Ethead%3Etr%3Etd%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Etbody%3Etr%3Etd%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Etbody%3Etr%3Etd%2Ctable%3Anot%28%2Etable%2Dbordered%29%3Etfoot%3Etr%3Etd%2C%2Etable%3Anot%28%2Etable%2Dbordered%29%3Etfoot%3Etr%3Etd%7Bborder%2Dcolor%3Atransparent%7D%2Eform%2Dcontrol%7B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%7Dlabel%7Bfont%2Dweight%3Anormal%7D%2Ehas%2Dwarning%20%2Ehelp%2Dblock%2C%2Ehas%2Dwarning%20%2Econtrol%2Dlabel%2C%2Ehas%2Dwarning%20%2Eradio%2C%2Ehas%2Dwarning%20%2Echeckbox%2C%2Ehas%2Dwarning%20%2Eradio%2Dinline%2C%2Ehas%2Dwarning%20%2Echeckbox%2Dinline%2C%2Ehas%2Dwarning%2Eradio%20label%2C%2Ehas%2Dwarning%2Echeckbox%20label%2C%2Ehas%2Dwarning%2Eradio%2Dinline%20label%2C%2Ehas%2Dwarning%2Echeckbox%2Dinline%20label%2C%2Ehas%2Dwarning%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ff851b%7D%2Ehas%2Dwarning%20%2Eform%2Dcontrol%2C%2Ehas%2Dwarning%20%2Eform%2Dcontrol%3Afocus%7Bborder%3A1px%20solid%20%23ff851b%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Dwarning%20%2Einput%2Dgroup%2Daddon%7Bborder%3A1px%20solid%20%23ff851b%7D%2Ehas%2Derror%20%2Ehelp%2Dblock%2C%2Ehas%2Derror%20%2Econtrol%2Dlabel%2C%2Ehas%2Derror%20%2Eradio%2C%2Ehas%2Derror%20%2Echeckbox%2C%2Ehas%2Derror%20%2Eradio%2Dinline%2C%2Ehas%2Derror%20%2Echeckbox%2Dinline%2C%2Ehas%2Derror%2Eradio%20label%2C%2Ehas%2Derror%2Echeckbox%20label%2C%2Ehas%2Derror%2Eradio%2Dinline%20label%2C%2Ehas%2Derror%2Echeckbox%2Dinline%20label%2C%2Ehas%2Derror%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%23ff4136%7D%2Ehas%2Derror%20%2Eform%2Dcontrol%2C%2Ehas%2Derror%20%2Eform%2Dcontrol%3Afocus%7Bborder%3A1px%20solid%20%23ff4136%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Derror%20%2Einput%2Dgroup%2Daddon%7Bborder%3A1px%20solid%20%23ff4136%7D%2Ehas%2Dsuccess%20%2Ehelp%2Dblock%2C%2Ehas%2Dsuccess%20%2Econtrol%2Dlabel%2C%2Ehas%2Dsuccess%20%2Eradio%2C%2Ehas%2Dsuccess%20%2Echeckbox%2C%2Ehas%2Dsuccess%20%2Eradio%2Dinline%2C%2Ehas%2Dsuccess%20%2Echeckbox%2Dinline%2C%2Ehas%2Dsuccess%2Eradio%20label%2C%2Ehas%2Dsuccess%2Echeckbox%20label%2C%2Ehas%2Dsuccess%2Eradio%2Dinline%20label%2C%2Ehas%2Dsuccess%2Echeckbox%2Dinline%20label%2C%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%2Dfeedback%7Bcolor%3A%2328b62c%7D%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%2C%2Ehas%2Dsuccess%20%2Eform%2Dcontrol%3Afocus%7Bborder%3A1px%20solid%20%2328b62c%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E075%29%7D%2Ehas%2Dsuccess%20%2Einput%2Dgroup%2Daddon%7Bborder%3A1px%20solid%20%2328b62c%7D%2Enav%20%2Eopen%3Ea%2C%2Enav%20%2Eopen%3Ea%3Ahover%2C%2Enav%20%2Eopen%3Ea%3Afocus%7Bborder%2Dcolor%3Atransparent%7D%2Enav%2Dtabs%3Eli%3Ea%7Bmargin%2Dtop%3A6px%3Bborder%2Dcolor%3A%23e7e7e7%3Bcolor%3A%23333333%3B%2Dwebkit%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3B%2Do%2Dtransition%3Aall%20%2E2s%20ease%2Din%2Dout%3Btransition%3Aall%20%2E2s%20ease%2Din%2Dout%7D%2Enav%2Dtabs%3Eli%3Ea%3Ahover%2C%2Enav%2Dtabs%3Eli%3Ea%3Afocus%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Ahover%2C%2Enav%2Dtabs%3Eli%2Eactive%3Ea%3Afocus%2C%2Enav%2Dtabs%20%2Eopen%3Ea%2C%2Enav%2Dtabs%20%2Eopen%3Ea%3Ahover%2C%2Enav%2Dtabs%20%2Eopen%3Ea%3Afocus%7Bpadding%2Dbottom%3A16px%3Bmargin%2Dtop%3A0%7D%2Enav%2Dtabs%20%2Eopen%3Ea%2C%2Enav%2Dtabs%20%2Eopen%3Ea%3Ahover%2C%2Enav%2Dtabs%20%2Eopen%3Ea%3Afocus%7Bborder%2Dcolor%3A%23e7e7e7%7D%2Enav%2Dtabs%3Eli%2Edisabled%3Ea%3Ahover%2C%2Enav%2Dtabs%3Eli%2Edisabled%3Ea%3Afocus%7Bpadding%2Dtop%3A10px%3Bpadding%2Dbottom%3A10px%3Bmargin%2Dtop%3A6px%7D%2Enav%2Dtabs%2Enav%2Djustified%3Eli%7Bvertical%2Dalign%3Abottom%7D%2Edropdown%2Dmenu%7Bmargin%2Dtop%3A0%3Bborder%2Dwidth%3A0%201px%204px%201px%3Bborder%2Dtop%2Dwidth%3A1px%3B%2Dwebkit%2Dbox%2Dshadow%3Anone%3Bbox%2Dshadow%3Anone%7D%2Ebreadcrumb%7Bborder%2Dcolor%3A%23ededed%3Bborder%2Dstyle%3Asolid%3Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Epagination%3Eli%3Ea%2C%2Epager%3Eli%3Ea%2C%2Epagination%3Eli%3Espan%2C%2Epager%3Eli%3Espan%7Bposition%3Arelative%3Btop%3A0%3Bborder%2Dwidth%3A0%201px%204px%201px%3Bcolor%3A%23555555%3Bfont%2Dsize%3A12px%3Bfont%2Dweight%3Abold%3Btext%2Dtransform%3Auppercase%7D%2Epagination%3Eli%3Ea%3Ahover%2C%2Epager%3Eli%3Ea%3Ahover%2C%2Epagination%3Eli%3Espan%3Ahover%2C%2Epager%3Eli%3Espan%3Ahover%7Btop%3A1px%3Bborder%2Dbottom%2Dwidth%3A3px%7D%2Epagination%3Eli%3Ea%3Aactive%2C%2Epager%3Eli%3Ea%3Aactive%2C%2Epagination%3Eli%3Espan%3Aactive%2C%2Epager%3Eli%3Espan%3Aactive%7Btop%3A2px%3Bborder%2Dbottom%2Dwidth%3A2px%7D%2Epagination%3E%2Edisabled%3Ea%3Ahover%2C%2Epager%3E%2Edisabled%3Ea%3Ahover%2C%2Epagination%3E%2Edisabled%3Espan%3Ahover%2C%2Epager%3E%2Edisabled%3Espan%3Ahover%7Btop%3A0%3Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Epagination%3E%2Edisabled%3Ea%3Aactive%2C%2Epager%3E%2Edisabled%3Ea%3Aactive%2C%2Epagination%3E%2Edisabled%3Espan%3Aactive%2C%2Epager%3E%2Edisabled%3Espan%3Aactive%7Btop%3A0%3Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Epager%3Eli%3Ea%2C%2Epager%3Eli%3Espan%2C%2Epager%3E%2Edisabled%3Ea%2C%2Epager%3E%2Edisabled%3Espan%2C%2Epager%3Eli%3Ea%3Ahover%2C%2Epager%3Eli%3Espan%3Ahover%2C%2Epager%3E%2Edisabled%3Ea%3Ahover%2C%2Epager%3E%2Edisabled%3Espan%3Ahover%2C%2Epager%3Eli%3Ea%3Aactive%2C%2Epager%3Eli%3Espan%3Aactive%2C%2Epager%3E%2Edisabled%3Ea%3Aactive%2C%2Epager%3E%2Edisabled%3Espan%3Aactive%7Bborder%2Dleft%2Dwidth%3A2px%3Bborder%2Dright%2Dwidth%3A2px%7D%2Eclose%7Bcolor%3A%23fff%3Btext%2Ddecoration%3Anone%3Bopacity%3A0%2E4%7D%2Eclose%3Ahover%2C%2Eclose%3Afocus%7Bcolor%3A%23fff%3Bopacity%3A1%7D%2Ealert%7Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Ealert%20%2Ealert%2Dlink%7Bfont%2Dweight%3Anormal%3Bcolor%3A%23fff%3Btext%2Ddecoration%3Aunderline%7D%2Elabel%7Bfont%2Dweight%3Anormal%7D%2Eprogress%7Bborder%3A1px%20solid%20%23e7e7e7%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E1%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E1%29%7D%2Eprogress%2Dbar%7B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%20%2D4px%200%20rgba%280%2C0%2C0%2C0%2E15%29%3Bbox%2Dshadow%3Ainset%200%20%2D4px%200%20rgba%280%2C0%2C0%2C0%2E15%29%7D%2Ewell%7Bborder%3A1px%20solid%20%23e7e7e7%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E05%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E05%29%7Da%2Elist%2Dgroup%2Ditem%2Eactive%2Ca%2Elist%2Dgroup%2Ditem%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Eactive%3Afocus%7Bborder%2Dcolor%3A%23eeeeee%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%7Bbackground%2Dcolor%3A%2328b62c%7Da%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dsuccess%2Eactive%3Afocus%7Bbackground%2Dcolor%3A%2323a127%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%7Bbackground%2Dcolor%3A%23ff851b%7Da%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Dwarning%2Eactive%3Afocus%7Bbackground%2Dcolor%3A%23ff7701%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%7Bbackground%2Dcolor%3A%23ff4136%7Da%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Ahover%2Ca%2Elist%2Dgroup%2Ditem%2Ddanger%2Eactive%3Afocus%7Bbackground%2Dcolor%3A%23ff291c%7D%2Ejumbotron%7Bborder%3A1px%20solid%20%23e7e7e7%3B%2Dwebkit%2Dbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E05%29%3Bbox%2Dshadow%3Ainset%200%202px%200%20rgba%280%2C0%2C0%2C0%2E05%29%7D%2Epanel%7Bborder%3A1px%20solid%20%23e7e7e7%3Bborder%2Dwidth%3A0%201px%204px%201px%7D%2Epanel%2Ddefault%20%2Eclose%7Bcolor%3A%23555555%7D%2Emodal%20%2Eclose%7Bcolor%3A%23555555%7D%2Epopover%7Bcolor%3A%23555555%7D%0A" rel="stylesheet" />
|
|
<script src="data:application/javascript;base64,LyohCiAqIEJvb3RzdHJhcCB2My4zLjUgKGh0dHA6Ly9nZXRib290c3RyYXAuY29tKQogKiBDb3B5cmlnaHQgMjAxMS0yMDE1IFR3aXR0ZXIsIEluYy4KICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlCiAqLwppZigidW5kZWZpbmVkIj09dHlwZW9mIGpRdWVyeSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5Iik7K2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0Ijt2YXIgYj1hLmZuLmpxdWVyeS5zcGxpdCgiICIpWzBdLnNwbGl0KCIuIik7aWYoYlswXTwyJiZiWzFdPDl8fDE9PWJbMF0mJjk9PWJbMV0mJmJbMl08MSl0aHJvdyBuZXcgRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5IHZlcnNpb24gMS45LjEgb3IgaGlnaGVyIil9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYm9vdHN0cmFwIiksYj17V2Via2l0VHJhbnNpdGlvbjoid2Via2l0VHJhbnNpdGlvbkVuZCIsTW96VHJhbnNpdGlvbjoidHJhbnNpdGlvbmVuZCIsT1RyYW5zaXRpb246Im9UcmFuc2l0aW9uRW5kIG90cmFuc2l0aW9uZW5kIix0cmFuc2l0aW9uOiJ0cmFuc2l0aW9uZW5kIn07Zm9yKHZhciBjIGluIGIpaWYodm9pZCAwIT09YS5zdHlsZVtjXSlyZXR1cm57ZW5kOmJbY119O3JldHVybiExfWEuZm4uZW11bGF0ZVRyYW5zaXRpb25FbmQ9ZnVuY3Rpb24oYil7dmFyIGM9ITEsZD10aGlzO2EodGhpcykub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Yz0hMH0pO3ZhciBlPWZ1bmN0aW9uKCl7Y3x8YShkKS50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCl9O3JldHVybiBzZXRUaW1lb3V0KGUsYiksdGhpc30sYShmdW5jdGlvbigpe2Euc3VwcG9ydC50cmFuc2l0aW9uPWIoKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGEuZXZlbnQuc3BlY2lhbC5ic1RyYW5zaXRpb25FbmQ9e2JpbmRUeXBlOmEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCxkZWxlZ2F0ZVR5cGU6YS5zdXBwb3J0LnRyYW5zaXRpb24uZW5kLGhhbmRsZTpmdW5jdGlvbihiKXtyZXR1cm4gYShiLnRhcmdldCkuaXModGhpcyk/Yi5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1hKHRoaXMpLGU9Yy5kYXRhKCJicy5hbGVydCIpO2V8fGMuZGF0YSgiYnMuYWxlcnQiLGU9bmV3IGQodGhpcykpLCJzdHJpbmciPT10eXBlb2YgYiYmZVtiXS5jYWxsKGMpfSl9dmFyIGM9J1tkYXRhLWRpc21pc3M9ImFsZXJ0Il0nLGQ9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2siLGMsdGhpcy5jbG9zZSl9O2QuVkVSU0lPTj0iMy4zLjUiLGQuVFJBTlNJVElPTl9EVVJBVElPTj0xNTAsZC5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gYygpe2cuZGV0YWNoKCkudHJpZ2dlcigiY2xvc2VkLmJzLmFsZXJ0IikucmVtb3ZlKCl9dmFyIGU9YSh0aGlzKSxmPWUuYXR0cigiZGF0YS10YXJnZXQiKTtmfHwoZj1lLmF0dHIoImhyZWYiKSxmPWYmJmYucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGc9YShmKTtiJiZiLnByZXZlbnREZWZhdWx0KCksZy5sZW5ndGh8fChnPWUuY2xvc2VzdCgiLmFsZXJ0IikpLGcudHJpZ2dlcihiPWEuRXZlbnQoImNsb3NlLmJzLmFsZXJ0IikpLGIuaXNEZWZhdWx0UHJldmVudGVkKCl8fChnLnJlbW92ZUNsYXNzKCJpbiIpLGEuc3VwcG9ydC50cmFuc2l0aW9uJiZnLmhhc0NsYXNzKCJmYWRlIik/Zy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYykuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKTpjKCkpfTt2YXIgZT1hLmZuLmFsZXJ0O2EuZm4uYWxlcnQ9YixhLmZuLmFsZXJ0LkNvbnN0cnVjdG9yPWQsYS5mbi5hbGVydC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWxlcnQ9ZSx0aGlzfSxhKGRvY3VtZW50KS5vbigiY2xpY2suYnMuYWxlcnQuZGF0YS1hcGkiLGMsZC5wcm90b3R5cGUuY2xvc2UpfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMuYnV0dG9uIiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5idXR0b24iLGU9bmV3IGModGhpcyxmKSksInRvZ2dsZSI9PWI/ZS50b2dnbGUoKTpiJiZlLnNldFN0YXRlKGIpfSl9dmFyIGM9ZnVuY3Rpb24oYixkKXt0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy5pc0xvYWRpbmc9ITF9O2MuVkVSU0lPTj0iMy4zLjUiLGMuREVGQVVMVFM9e2xvYWRpbmdUZXh0OiJsb2FkaW5nLi4uIn0sYy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYil7dmFyIGM9ImRpc2FibGVkIixkPXRoaXMuJGVsZW1lbnQsZT1kLmlzKCJpbnB1dCIpPyJ2YWwiOiJodG1sIixmPWQuZGF0YSgpO2IrPSJUZXh0IixudWxsPT1mLnJlc2V0VGV4dCYmZC5kYXRhKCJyZXNldFRleHQiLGRbZV0oKSksc2V0VGltZW91dChhLnByb3h5KGZ1bmN0aW9uKCl7ZFtlXShudWxsPT1mW2JdP3RoaXMub3B0aW9uc1tiXTpmW2JdKSwibG9hZGluZ1RleHQiPT1iPyh0aGlzLmlzTG9hZGluZz0hMCxkLmFkZENsYXNzKGMpLmF0dHIoYyxjKSk6dGhpcy5pc0xvYWRpbmcmJih0aGlzLmlzTG9hZGluZz0hMSxkLnJlbW92ZUNsYXNzKGMpLnJlbW92ZUF0dHIoYykpfSx0aGlzKSwwKX0sYy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKCl7dmFyIGE9ITAsYj10aGlzLiRlbGVtZW50LmNsb3Nlc3QoJ1tkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdJyk7aWYoYi5sZW5ndGgpe3ZhciBjPXRoaXMuJGVsZW1lbnQuZmluZCgiaW5wdXQiKTsicmFkaW8iPT1jLnByb3AoInR5cGUiKT8oYy5wcm9wKCJjaGVja2VkIikmJihhPSExKSxiLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWxlbWVudC5hZGRDbGFzcygiYWN0aXZlIikpOiJjaGVja2JveCI9PWMucHJvcCgidHlwZSIpJiYoYy5wcm9wKCJjaGVja2VkIikhPT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSYmKGE9ITEpLHRoaXMuJGVsZW1lbnQudG9nZ2xlQ2xhc3MoImFjdGl2ZSIpKSxjLnByb3AoImNoZWNrZWQiLHRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImFjdGl2ZSIpKSxhJiZjLnRyaWdnZXIoImNoYW5nZSIpfWVsc2UgdGhpcy4kZWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLCF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJhY3RpdmUiKSksdGhpcy4kZWxlbWVudC50b2dnbGVDbGFzcygiYWN0aXZlIil9O3ZhciBkPWEuZm4uYnV0dG9uO2EuZm4uYnV0dG9uPWIsYS5mbi5idXR0b24uQ29uc3RydWN0b3I9YyxhLmZuLmJ1dHRvbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYnV0dG9uPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmJ1dHRvbi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZV49ImJ1dHRvbiJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKGMudGFyZ2V0KTtkLmhhc0NsYXNzKCJidG4iKXx8KGQ9ZC5jbG9zZXN0KCIuYnRuIikpLGIuY2FsbChkLCJ0b2dnbGUiKSxhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0icmFkaW8iXScpfHxhKGMudGFyZ2V0KS5pcygnaW5wdXRbdHlwZT0iY2hlY2tib3giXScpfHxjLnByZXZlbnREZWZhdWx0KCl9KS5vbigiZm9jdXMuYnMuYnV0dG9uLmRhdGEtYXBpIGJsdXIuYnMuYnV0dG9uLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlXj0iYnV0dG9uIl0nLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmNsb3Nlc3QoIi5idG4iKS50b2dnbGVDbGFzcygiZm9jdXMiLC9eZm9jdXMoaW4pPyQvLnRlc3QoYi50eXBlKSl9KX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmNhcm91c2VsIiksZj1hLmV4dGVuZCh7fSxjLkRFRkFVTFRTLGQuZGF0YSgpLCJvYmplY3QiPT10eXBlb2YgYiYmYiksZz0ic3RyaW5nIj09dHlwZW9mIGI/YjpmLnNsaWRlO2V8fGQuZGF0YSgiYnMuY2Fyb3VzZWwiLGU9bmV3IGModGhpcyxmKSksIm51bWJlciI9PXR5cGVvZiBiP2UudG8oYik6Zz9lW2ddKCk6Zi5pbnRlcnZhbCYmZS5wYXVzZSgpLmN5Y2xlKCl9KX12YXIgYz1mdW5jdGlvbihiLGMpe3RoaXMuJGVsZW1lbnQ9YShiKSx0aGlzLiRpbmRpY2F0b3JzPXRoaXMuJGVsZW1lbnQuZmluZCgiLmNhcm91c2VsLWluZGljYXRvcnMiKSx0aGlzLm9wdGlvbnM9Yyx0aGlzLnBhdXNlZD1udWxsLHRoaXMuc2xpZGluZz1udWxsLHRoaXMuaW50ZXJ2YWw9bnVsbCx0aGlzLiRhY3RpdmU9bnVsbCx0aGlzLiRpdGVtcz1udWxsLHRoaXMub3B0aW9ucy5rZXlib2FyZCYmdGhpcy4kZWxlbWVudC5vbigia2V5ZG93bi5icy5jYXJvdXNlbCIsYS5wcm94eSh0aGlzLmtleWRvd24sdGhpcykpLCJob3ZlciI9PXRoaXMub3B0aW9ucy5wYXVzZSYmISgib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkmJnRoaXMuJGVsZW1lbnQub24oIm1vdXNlZW50ZXIuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5wYXVzZSx0aGlzKSkub24oIm1vdXNlbGVhdmUuYnMuY2Fyb3VzZWwiLGEucHJveHkodGhpcy5jeWNsZSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuVFJBTlNJVElPTl9EVVJBVElPTj02MDAsYy5ERUZBVUxUUz17aW50ZXJ2YWw6NWUzLHBhdXNlOiJob3ZlciIsd3JhcDohMCxrZXlib2FyZDohMH0sYy5wcm90b3R5cGUua2V5ZG93bj1mdW5jdGlvbihhKXtpZighL2lucHV0fHRleHRhcmVhL2kudGVzdChhLnRhcmdldC50YWdOYW1lKSl7c3dpdGNoKGEud2hpY2gpe2Nhc2UgMzc6dGhpcy5wcmV2KCk7YnJlYWs7Y2FzZSAzOTp0aGlzLm5leHQoKTticmVhaztkZWZhdWx0OnJldHVybn1hLnByZXZlbnREZWZhdWx0KCl9fSxjLnByb3RvdHlwZS5jeWNsZT1mdW5jdGlvbihiKXtyZXR1cm4gYnx8KHRoaXMucGF1c2VkPSExKSx0aGlzLmludGVydmFsJiZjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpLHRoaXMub3B0aW9ucy5pbnRlcnZhbCYmIXRoaXMucGF1c2VkJiYodGhpcy5pbnRlcnZhbD1zZXRJbnRlcnZhbChhLnByb3h5KHRoaXMubmV4dCx0aGlzKSx0aGlzLm9wdGlvbnMuaW50ZXJ2YWwpKSx0aGlzfSxjLnByb3RvdHlwZS5nZXRJdGVtSW5kZXg9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJGl0ZW1zPWEucGFyZW50KCkuY2hpbGRyZW4oIi5pdGVtIiksdGhpcy4kaXRlbXMuaW5kZXgoYXx8dGhpcy4kYWN0aXZlKX0sYy5wcm90b3R5cGUuZ2V0SXRlbUZvckRpcmVjdGlvbj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZ2V0SXRlbUluZGV4KGIpLGQ9InByZXYiPT1hJiYwPT09Y3x8Im5leHQiPT1hJiZjPT10aGlzLiRpdGVtcy5sZW5ndGgtMTtpZihkJiYhdGhpcy5vcHRpb25zLndyYXApcmV0dXJuIGI7dmFyIGU9InByZXYiPT1hPy0xOjEsZj0oYytlKSV0aGlzLiRpdGVtcy5sZW5ndGg7cmV0dXJuIHRoaXMuJGl0ZW1zLmVxKGYpfSxjLnByb3RvdHlwZS50bz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9dGhpcy5nZXRJdGVtSW5kZXgodGhpcy4kYWN0aXZlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIikpO3JldHVybiBhPnRoaXMuJGl0ZW1zLmxlbmd0aC0xfHwwPmE/dm9pZCAwOnRoaXMuc2xpZGluZz90aGlzLiRlbGVtZW50Lm9uZSgic2xpZC5icy5jYXJvdXNlbCIsZnVuY3Rpb24oKXtiLnRvKGEpfSk6Yz09YT90aGlzLnBhdXNlKCkuY3ljbGUoKTp0aGlzLnNsaWRlKGE+Yz8ibmV4dCI6InByZXYiLHRoaXMuJGl0ZW1zLmVxKGEpKX0sYy5wcm90b3R5cGUucGF1c2U9ZnVuY3Rpb24oYil7cmV0dXJuIGJ8fCh0aGlzLnBhdXNlZD0hMCksdGhpcy4kZWxlbWVudC5maW5kKCIubmV4dCwgLnByZXYiKS5sZW5ndGgmJmEuc3VwcG9ydC50cmFuc2l0aW9uJiYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGEuc3VwcG9ydC50cmFuc2l0aW9uLmVuZCksdGhpcy5jeWNsZSghMCkpLHRoaXMuaW50ZXJ2YWw9Y2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKSx0aGlzfSxjLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgibmV4dCIpfSxjLnByb3RvdHlwZS5wcmV2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2xpZGluZz92b2lkIDA6dGhpcy5zbGlkZSgicHJldiIpfSxjLnByb3RvdHlwZS5zbGlkZT1mdW5jdGlvbihiLGQpe3ZhciBlPXRoaXMuJGVsZW1lbnQuZmluZCgiLml0ZW0uYWN0aXZlIiksZj1kfHx0aGlzLmdldEl0ZW1Gb3JEaXJlY3Rpb24oYixlKSxnPXRoaXMuaW50ZXJ2YWwsaD0ibmV4dCI9PWI/ImxlZnQiOiJyaWdodCIsaT10aGlzO2lmKGYuaGFzQ2xhc3MoImFjdGl2ZSIpKXJldHVybiB0aGlzLnNsaWRpbmc9ITE7dmFyIGo9ZlswXSxrPWEuRXZlbnQoInNsaWRlLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDpqLGRpcmVjdGlvbjpofSk7aWYodGhpcy4kZWxlbWVudC50cmlnZ2VyKGspLCFrLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtpZih0aGlzLnNsaWRpbmc9ITAsZyYmdGhpcy5wYXVzZSgpLHRoaXMuJGluZGljYXRvcnMubGVuZ3RoKXt0aGlzLiRpbmRpY2F0b3JzLmZpbmQoIi5hY3RpdmUiKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7dmFyIGw9YSh0aGlzLiRpbmRpY2F0b3JzLmNoaWxkcmVuKClbdGhpcy5nZXRJdGVtSW5kZXgoZildKTtsJiZsLmFkZENsYXNzKCJhY3RpdmUiKX12YXIgbT1hLkV2ZW50KCJzbGlkLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDpqLGRpcmVjdGlvbjpofSk7cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uJiZ0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJzbGlkZSIpPyhmLmFkZENsYXNzKGIpLGZbMF0ub2Zmc2V0V2lkdGgsZS5hZGRDbGFzcyhoKSxmLmFkZENsYXNzKGgpLGUub25lKCJic1RyYW5zaXRpb25FbmQiLGZ1bmN0aW9uKCl7Zi5yZW1vdmVDbGFzcyhbYixoXS5qb2luKCIgIikpLmFkZENsYXNzKCJhY3RpdmUiKSxlLnJlbW92ZUNsYXNzKFsiYWN0aXZlIixoXS5qb2luKCIgIikpLGkuc2xpZGluZz0hMSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS4kZWxlbWVudC50cmlnZ2VyKG0pfSwwKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTikpOihlLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxmLmFkZENsYXNzKCJhY3RpdmUiKSx0aGlzLnNsaWRpbmc9ITEsdGhpcy4kZWxlbWVudC50cmlnZ2VyKG0pKSxnJiZ0aGlzLmN5Y2xlKCksdGhpc319O3ZhciBkPWEuZm4uY2Fyb3VzZWw7YS5mbi5jYXJvdXNlbD1iLGEuZm4uY2Fyb3VzZWwuQ29uc3RydWN0b3I9YyxhLmZuLmNhcm91c2VsLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5jYXJvdXNlbD1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe3ZhciBkLGU9YSh0aGlzKSxmPWEoZS5hdHRyKCJkYXRhLXRhcmdldCIpfHwoZD1lLmF0dHIoImhyZWYiKSkmJmQucmVwbGFjZSgvLiooPz0jW15cc10rJCkvLCIiKSk7aWYoZi5oYXNDbGFzcygiY2Fyb3VzZWwiKSl7dmFyIGc9YS5leHRlbmQoe30sZi5kYXRhKCksZS5kYXRhKCkpLGg9ZS5hdHRyKCJkYXRhLXNsaWRlLXRvIik7aCYmKGcuaW50ZXJ2YWw9ITEpLGIuY2FsbChmLGcpLGgmJmYuZGF0YSgiYnMuY2Fyb3VzZWwiKS50byhoKSxjLnByZXZlbnREZWZhdWx0KCl9fTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMuY2Fyb3VzZWwuZGF0YS1hcGkiLCJbZGF0YS1zbGlkZV0iLGUpLm9uKCJjbGljay5icy5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlLXRvXSIsZSksYSh3aW5kb3cpLm9uKCJsb2FkIixmdW5jdGlvbigpe2EoJ1tkYXRhLXJpZGU9ImNhcm91c2VsIl0nKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKTtiLmNhbGwoYyxjLmRhdGEoKSl9KX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXt2YXIgYyxkPWIuYXR0cigiZGF0YS10YXJnZXQiKXx8KGM9Yi5hdHRyKCJocmVmIikpJiZjLnJlcGxhY2UoLy4qKD89I1teXHNdKyQpLywiIik7cmV0dXJuIGEoZCl9ZnVuY3Rpb24gYyhiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9YSh0aGlzKSxlPWMuZGF0YSgiYnMuY29sbGFwc2UiKSxmPWEuZXh0ZW5kKHt9LGQuREVGQVVMVFMsYy5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBiJiZiKTshZSYmZi50b2dnbGUmJi9zaG93fGhpZGUvLnRlc3QoYikmJihmLnRvZ2dsZT0hMSksZXx8Yy5kYXRhKCJicy5jb2xsYXBzZSIsZT1uZXcgZCh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBkPWZ1bmN0aW9uKGIsYyl7dGhpcy4kZWxlbWVudD1hKGIpLHRoaXMub3B0aW9ucz1hLmV4dGVuZCh7fSxkLkRFRkFVTFRTLGMpLHRoaXMuJHRyaWdnZXI9YSgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2hyZWY9IiMnK2IuaWQrJyJdLFtkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXRhcmdldD0iIycrYi5pZCsnIl0nKSx0aGlzLnRyYW5zaXRpb25pbmc9bnVsbCx0aGlzLm9wdGlvbnMucGFyZW50P3RoaXMuJHBhcmVudD10aGlzLmdldFBhcmVudCgpOnRoaXMuYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuJGVsZW1lbnQsdGhpcy4kdHJpZ2dlciksdGhpcy5vcHRpb25zLnRvZ2dsZSYmdGhpcy50b2dnbGUoKX07ZC5WRVJTSU9OPSIzLjMuNSIsZC5UUkFOU0lUSU9OX0RVUkFUSU9OPTM1MCxkLkRFRkFVTFRTPXt0b2dnbGU6ITB9LGQucHJvdG90eXBlLmRpbWVuc2lvbj1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoIndpZHRoIik7cmV0dXJuIGE/IndpZHRoIjoiaGVpZ2h0In0sZC5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJiF0aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJpbiIpKXt2YXIgYixlPXRoaXMuJHBhcmVudCYmdGhpcy4kcGFyZW50LmNoaWxkcmVuKCIucGFuZWwiKS5jaGlsZHJlbigiLmluLCAuY29sbGFwc2luZyIpO2lmKCEoZSYmZS5sZW5ndGgmJihiPWUuZGF0YSgiYnMuY29sbGFwc2UiKSxiJiZiLnRyYW5zaXRpb25pbmcpKSl7dmFyIGY9YS5FdmVudCgic2hvdy5icy5jb2xsYXBzZSIpO2lmKHRoaXMuJGVsZW1lbnQudHJpZ2dlcihmKSwhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7ZSYmZS5sZW5ndGgmJihjLmNhbGwoZSwiaGlkZSIpLGJ8fGUuZGF0YSgiYnMuY29sbGFwc2UiLG51bGwpKTt2YXIgZz10aGlzLmRpbWVuc2lvbigpO3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIikuYWRkQ2xhc3MoImNvbGxhcHNpbmciKVtnXSgwKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksdGhpcy4kdHJpZ2dlci5yZW1vdmVDbGFzcygiY29sbGFwc2VkIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITApLHRoaXMudHJhbnNpdGlvbmluZz0xO3ZhciBoPWZ1bmN0aW9uKCl7dGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygiY29sbGFwc2luZyIpLmFkZENsYXNzKCJjb2xsYXBzZSBpbiIpW2ddKCIiKSx0aGlzLnRyYW5zaXRpb25pbmc9MCx0aGlzLiRlbGVtZW50LnRyaWdnZXIoInNob3duLmJzLmNvbGxhcHNlIil9O2lmKCFhLnN1cHBvcnQudHJhbnNpdGlvbilyZXR1cm4gaC5jYWxsKHRoaXMpO3ZhciBpPWEuY2FtZWxDYXNlKFsic2Nyb2xsIixnXS5qb2luKCItIikpO3RoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkoaCx0aGlzKSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoZC5UUkFOU0lUSU9OX0RVUkFUSU9OKVtnXSh0aGlzLiRlbGVtZW50WzBdW2ldKX19fX0sZC5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe2lmKCF0aGlzLnRyYW5zaXRpb25pbmcmJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIikpe3ZhciBiPWEuRXZlbnQoImhpZGUuYnMuY29sbGFwc2UiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoYiksIWIuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBjPXRoaXMuZGltZW5zaW9uKCk7dGhpcy4kZWxlbWVudFtjXSh0aGlzLiRlbGVtZW50W2NdKCkpWzBdLm9mZnNldEhlaWdodCx0aGlzLiRlbGVtZW50LmFkZENsYXNzKCJjb2xsYXBzaW5nIikucmVtb3ZlQ2xhc3MoImNvbGxhcHNlIGluIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLHRoaXMuJHRyaWdnZXIuYWRkQ2xhc3MoImNvbGxhcHNlZCIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCExKSx0aGlzLnRyYW5zaXRpb25pbmc9MTt2YXIgZT1mdW5jdGlvbigpe3RoaXMudHJhbnNpdGlvbmluZz0wLHRoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoImNvbGxhcHNpbmciKS5hZGRDbGFzcygiY29sbGFwc2UiKS50cmlnZ2VyKCJoaWRkZW4uYnMuY29sbGFwc2UiKX07cmV0dXJuIGEuc3VwcG9ydC50cmFuc2l0aW9uP3ZvaWQgdGhpcy4kZWxlbWVudFtjXSgwKS5vbmUoImJzVHJhbnNpdGlvbkVuZCIsYS5wcm94eShlLHRoaXMpKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChkLlRSQU5TSVRJT05fRFVSQVRJT04pOmUuY2FsbCh0aGlzKX19fSxkLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oKXt0aGlzW3RoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImluIik/ImhpZGUiOiJzaG93Il0oKX0sZC5wcm90b3R5cGUuZ2V0UGFyZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGEodGhpcy5vcHRpb25zLnBhcmVudCkuZmluZCgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2RhdGEtcGFyZW50PSInK3RoaXMub3B0aW9ucy5wYXJlbnQrJyJdJykuZWFjaChhLnByb3h5KGZ1bmN0aW9uKGMsZCl7dmFyIGU9YShkKTt0aGlzLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyhiKGUpLGUpfSx0aGlzKSkuZW5kKCl9LGQucHJvdG90eXBlLmFkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuaGFzQ2xhc3MoImluIik7YS5hdHRyKCJhcmlhLWV4cGFuZGVkIixjKSxiLnRvZ2dsZUNsYXNzKCJjb2xsYXBzZWQiLCFjKS5hdHRyKCJhcmlhLWV4cGFuZGVkIixjKX07dmFyIGU9YS5mbi5jb2xsYXBzZTthLmZuLmNvbGxhcHNlPWMsYS5mbi5jb2xsYXBzZS5Db25zdHJ1Y3Rvcj1kLGEuZm4uY29sbGFwc2Uubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLmNvbGxhcHNlPWUsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLmNvbGxhcHNlLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdJyxmdW5jdGlvbihkKXt2YXIgZT1hKHRoaXMpO2UuYXR0cigiZGF0YS10YXJnZXQiKXx8ZC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBmPWIoZSksZz1mLmRhdGEoImJzLmNvbGxhcHNlIiksaD1nPyJ0b2dnbGUiOmUuZGF0YSgpO2MuY2FsbChmLGgpfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3ZhciBjPWIuYXR0cigiZGF0YS10YXJnZXQiKTtjfHwoYz1iLmF0dHIoImhyZWYiKSxjPWMmJi8jW0EtWmEtel0vLnRlc3QoYykmJmMucmVwbGFjZSgvLiooPz0jW15cc10qJCkvLCIiKSk7dmFyIGQ9YyYmYShjKTtyZXR1cm4gZCYmZC5sZW5ndGg/ZDpiLnBhcmVudCgpfWZ1bmN0aW9uIGMoYyl7YyYmMz09PWMud2hpY2h8fChhKGUpLnJlbW92ZSgpLGEoZikuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1iKGQpLGY9e3JlbGF0ZWRUYXJnZXQ6dGhpc307ZS5oYXNDbGFzcygib3BlbiIpJiYoYyYmImNsaWNrIj09Yy50eXBlJiYvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGMudGFyZ2V0LnRhZ05hbWUpJiZhLmNvbnRhaW5zKGVbMF0sYy50YXJnZXQpfHwoZS50cmlnZ2VyKGM9YS5FdmVudCgiaGlkZS5icy5kcm9wZG93biIsZikpLGMuaXNEZWZhdWx0UHJldmVudGVkKCl8fChkLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLGUucmVtb3ZlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJoaWRkZW4uYnMuZHJvcGRvd24iLGYpKSkpfSkpfWZ1bmN0aW9uIGQoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoImJzLmRyb3Bkb3duIik7ZHx8Yy5kYXRhKCJicy5kcm9wZG93biIsZD1uZXcgZyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZkW2JdLmNhbGwoYyl9KX12YXIgZT0iLmRyb3Bkb3duLWJhY2tkcm9wIixmPSdbZGF0YS10b2dnbGU9ImRyb3Bkb3duIl0nLGc9ZnVuY3Rpb24oYil7YShiKS5vbigiY2xpY2suYnMuZHJvcGRvd24iLHRoaXMudG9nZ2xlKX07Zy5WRVJTSU9OPSIzLjMuNSIsZy5wcm90b3R5cGUudG9nZ2xlPWZ1bmN0aW9uKGQpe3ZhciBlPWEodGhpcyk7aWYoIWUuaXMoIi5kaXNhYmxlZCwgOmRpc2FibGVkIikpe3ZhciBmPWIoZSksZz1mLmhhc0NsYXNzKCJvcGVuIik7aWYoYygpLCFnKXsib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmIWYuY2xvc2VzdCgiLm5hdmJhci1uYXYiKS5sZW5ndGgmJmEoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmFkZENsYXNzKCJkcm9wZG93bi1iYWNrZHJvcCIpLmluc2VydEFmdGVyKGEodGhpcykpLm9uKCJjbGljayIsYyk7dmFyIGg9e3JlbGF0ZWRUYXJnZXQ6dGhpc307aWYoZi50cmlnZ2VyKGQ9YS5FdmVudCgic2hvdy5icy5kcm9wZG93biIsaCkpLGQuaXNEZWZhdWx0UHJldmVudGVkKCkpcmV0dXJuO2UudHJpZ2dlcigiZm9jdXMiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLGYudG9nZ2xlQ2xhc3MoIm9wZW4iKS50cmlnZ2VyKCJzaG93bi5icy5kcm9wZG93biIsaCl9cmV0dXJuITF9fSxnLnByb3RvdHlwZS5rZXlkb3duPWZ1bmN0aW9uKGMpe2lmKC8oMzh8NDB8Mjd8MzIpLy50ZXN0KGMud2hpY2gpJiYhL2lucHV0fHRleHRhcmVhL2kudGVzdChjLnRhcmdldC50YWdOYW1lKSl7dmFyIGQ9YSh0aGlzKTtpZihjLnByZXZlbnREZWZhdWx0KCksYy5zdG9wUHJvcGFnYXRpb24oKSwhZC5pcygiLmRpc2FibGVkLCA6ZGlzYWJsZWQiKSl7dmFyIGU9YihkKSxnPWUuaGFzQ2xhc3MoIm9wZW4iKTtpZighZyYmMjchPWMud2hpY2h8fGcmJjI3PT1jLndoaWNoKXJldHVybiAyNz09Yy53aGljaCYmZS5maW5kKGYpLnRyaWdnZXIoImZvY3VzIiksZC50cmlnZ2VyKCJjbGljayIpO3ZhciBoPSIgbGk6bm90KC5kaXNhYmxlZCk6dmlzaWJsZSBhIixpPWUuZmluZCgiLmRyb3Bkb3duLW1lbnUiK2gpO2lmKGkubGVuZ3RoKXt2YXIgaj1pLmluZGV4KGMudGFyZ2V0KTszOD09Yy53aGljaCYmaj4wJiZqLS0sNDA9PWMud2hpY2gmJmo8aS5sZW5ndGgtMSYmaisrLH5qfHwoaj0wKSxpLmVxKGopLnRyaWdnZXIoImZvY3VzIil9fX19O3ZhciBoPWEuZm4uZHJvcGRvd247YS5mbi5kcm9wZG93bj1kLGEuZm4uZHJvcGRvd24uQ29uc3RydWN0b3I9ZyxhLmZuLmRyb3Bkb3duLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5kcm9wZG93bj1oLHRoaXN9LGEoZG9jdW1lbnQpLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsYykub24oImNsaWNrLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwiLmRyb3Bkb3duIGZvcm0iLGZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiY2xpY2suYnMuZHJvcGRvd24uZGF0YS1hcGkiLGYsZy5wcm90b3R5cGUudG9nZ2xlKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsZixnLnByb3RvdHlwZS5rZXlkb3duKS5vbigia2V5ZG93bi5icy5kcm9wZG93bi5kYXRhLWFwaSIsIi5kcm9wZG93bi1tZW51IixnLnByb3RvdHlwZS5rZXlkb3duKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYixkKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9YSh0aGlzKSxmPWUuZGF0YSgiYnMubW9kYWwiKSxnPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZS5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBiJiZiKTtmfHxlLmRhdGEoImJzLm1vZGFsIixmPW5ldyBjKHRoaXMsZykpLCJzdHJpbmciPT10eXBlb2YgYj9mW2JdKGQpOmcuc2hvdyYmZi5zaG93KGQpfSl9dmFyIGM9ZnVuY3Rpb24oYixjKXt0aGlzLm9wdGlvbnM9Yyx0aGlzLiRib2R5PWEoZG9jdW1lbnQuYm9keSksdGhpcy4kZWxlbWVudD1hKGIpLHRoaXMuJGRpYWxvZz10aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1kaWFsb2ciKSx0aGlzLiRiYWNrZHJvcD1udWxsLHRoaXMuaXNTaG93bj1udWxsLHRoaXMub3JpZ2luYWxCb2R5UGFkPW51bGwsdGhpcy5zY3JvbGxiYXJXaWR0aD0wLHRoaXMuaWdub3JlQmFja2Ryb3BDbGljaz0hMSx0aGlzLm9wdGlvbnMucmVtb3RlJiZ0aGlzLiRlbGVtZW50LmZpbmQoIi5tb2RhbC1jb250ZW50IikubG9hZCh0aGlzLm9wdGlvbnMucmVtb3RlLGEucHJveHkoZnVuY3Rpb24oKXt0aGlzLiRlbGVtZW50LnRyaWdnZXIoImxvYWRlZC5icy5tb2RhbCIpfSx0aGlzKSl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuVFJBTlNJVElPTl9EVVJBVElPTj0zMDAsYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLkRFRkFVTFRTPXtiYWNrZHJvcDohMCxrZXlib2FyZDohMCxzaG93OiEwfSxjLnByb3RvdHlwZS50b2dnbGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXNTaG93bj90aGlzLmhpZGUoKTp0aGlzLnNob3coYSl9LGMucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcyxlPWEuRXZlbnQoInNob3cuYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OmJ9KTt0aGlzLiRlbGVtZW50LnRyaWdnZXIoZSksdGhpcy5pc1Nob3dufHxlLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwodGhpcy5pc1Nob3duPSEwLHRoaXMuY2hlY2tTY3JvbGxiYXIoKSx0aGlzLnNldFNjcm9sbGJhcigpLHRoaXMuJGJvZHkuYWRkQ2xhc3MoIm1vZGFsLW9wZW4iKSx0aGlzLmVzY2FwZSgpLHRoaXMucmVzaXplKCksdGhpcy4kZWxlbWVudC5vbigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIsJ1tkYXRhLWRpc21pc3M9Im1vZGFsIl0nLGEucHJveHkodGhpcy5oaWRlLHRoaXMpKSx0aGlzLiRkaWFsb2cub24oIm1vdXNlZG93bi5kaXNtaXNzLmJzLm1vZGFsIixmdW5jdGlvbigpe2QuJGVsZW1lbnQub25lKCJtb3VzZXVwLmRpc21pc3MuYnMubW9kYWwiLGZ1bmN0aW9uKGIpe2EoYi50YXJnZXQpLmlzKGQuJGVsZW1lbnQpJiYoZC5pZ25vcmVCYWNrZHJvcENsaWNrPSEwKX0pfSksdGhpcy5iYWNrZHJvcChmdW5jdGlvbigpe3ZhciBlPWEuc3VwcG9ydC50cmFuc2l0aW9uJiZkLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik7ZC4kZWxlbWVudC5wYXJlbnQoKS5sZW5ndGh8fGQuJGVsZW1lbnQuYXBwZW5kVG8oZC4kYm9keSksZC4kZWxlbWVudC5zaG93KCkuc2Nyb2xsVG9wKDApLGQuYWRqdXN0RGlhbG9nKCksZSYmZC4kZWxlbWVudFswXS5vZmZzZXRXaWR0aCxkLiRlbGVtZW50LmFkZENsYXNzKCJpbiIpLGQuZW5mb3JjZUZvY3VzKCk7dmFyIGY9YS5FdmVudCgic2hvd24uYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OmJ9KTtlP2QuJGRpYWxvZy5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZnVuY3Rpb24oKXtkLiRlbGVtZW50LnRyaWdnZXIoImZvY3VzIikudHJpZ2dlcihmKX0pLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZC4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpLnRyaWdnZXIoZil9KSl9LGMucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oYil7YiYmYi5wcmV2ZW50RGVmYXVsdCgpLGI9YS5FdmVudCgiaGlkZS5icy5tb2RhbCIpLHRoaXMuJGVsZW1lbnQudHJpZ2dlcihiKSx0aGlzLmlzU2hvd24mJiFiLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYodGhpcy5pc1Nob3duPSExLHRoaXMuZXNjYXBlKCksdGhpcy5yZXNpemUoKSxhKGRvY3VtZW50KS5vZmYoImZvY3VzaW4uYnMubW9kYWwiKSx0aGlzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJpbiIpLm9mZigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIpLm9mZigibW91c2V1cC5kaXNtaXNzLmJzLm1vZGFsIiksdGhpcy4kZGlhbG9nLm9mZigibW91c2Vkb3duLmRpc21pc3MuYnMubW9kYWwiKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kZWxlbWVudC5oYXNDbGFzcygiZmFkZSIpP3RoaXMuJGVsZW1lbnQub25lKCJic1RyYW5zaXRpb25FbmQiLGEucHJveHkodGhpcy5oaWRlTW9kYWwsdGhpcykpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6dGhpcy5oaWRlTW9kYWwoKSl9LGMucHJvdG90eXBlLmVuZm9yY2VGb2N1cz1mdW5jdGlvbigpe2EoZG9jdW1lbnQpLm9mZigiZm9jdXNpbi5icy5tb2RhbCIpLm9uKCJmb2N1c2luLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpe3RoaXMuJGVsZW1lbnRbMF09PT1hLnRhcmdldHx8dGhpcy4kZWxlbWVudC5oYXMoYS50YXJnZXQpLmxlbmd0aHx8dGhpcy4kZWxlbWVudC50cmlnZ2VyKCJmb2N1cyIpfSx0aGlzKSl9LGMucHJvdG90eXBlLmVzY2FwZT1mdW5jdGlvbigpe3RoaXMuaXNTaG93biYmdGhpcy5vcHRpb25zLmtleWJvYXJkP3RoaXMuJGVsZW1lbnQub24oImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIsYS5wcm94eShmdW5jdGlvbihhKXsyNz09YS53aGljaCYmdGhpcy5oaWRlKCl9LHRoaXMpKTp0aGlzLmlzU2hvd258fHRoaXMuJGVsZW1lbnQub2ZmKCJrZXlkb3duLmRpc21pc3MuYnMubW9kYWwiKX0sYy5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKCl7dGhpcy5pc1Nob3duP2Eod2luZG93KS5vbigicmVzaXplLmJzLm1vZGFsIixhLnByb3h5KHRoaXMuaGFuZGxlVXBkYXRlLHRoaXMpKTphKHdpbmRvdykub2ZmKCJyZXNpemUuYnMubW9kYWwiKX0sYy5wcm90b3R5cGUuaGlkZU1vZGFsPWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLiRlbGVtZW50LmhpZGUoKSx0aGlzLmJhY2tkcm9wKGZ1bmN0aW9uKCl7YS4kYm9keS5yZW1vdmVDbGFzcygibW9kYWwtb3BlbiIpLGEucmVzZXRBZGp1c3RtZW50cygpLGEucmVzZXRTY3JvbGxiYXIoKSxhLiRlbGVtZW50LnRyaWdnZXIoImhpZGRlbi5icy5tb2RhbCIpfSl9LGMucHJvdG90eXBlLnJlbW92ZUJhY2tkcm9wPWZ1bmN0aW9uKCl7dGhpcy4kYmFja2Ryb3AmJnRoaXMuJGJhY2tkcm9wLnJlbW92ZSgpLHRoaXMuJGJhY2tkcm9wPW51bGx9LGMucHJvdG90eXBlLmJhY2tkcm9wPWZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMsZT10aGlzLiRlbGVtZW50Lmhhc0NsYXNzKCJmYWRlIik/ImZhZGUiOiIiO2lmKHRoaXMuaXNTaG93biYmdGhpcy5vcHRpb25zLmJhY2tkcm9wKXt2YXIgZj1hLnN1cHBvcnQudHJhbnNpdGlvbiYmZTtpZih0aGlzLiRiYWNrZHJvcD1hKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5hZGRDbGFzcygibW9kYWwtYmFja2Ryb3AgIitlKS5hcHBlbmRUbyh0aGlzLiRib2R5KSx0aGlzLiRlbGVtZW50Lm9uKCJjbGljay5kaXNtaXNzLmJzLm1vZGFsIixhLnByb3h5KGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2s/dm9pZCh0aGlzLmlnbm9yZUJhY2tkcm9wQ2xpY2s9ITEpOnZvaWQoYS50YXJnZXQ9PT1hLmN1cnJlbnRUYXJnZXQmJigic3RhdGljIj09dGhpcy5vcHRpb25zLmJhY2tkcm9wP3RoaXMuJGVsZW1lbnRbMF0uZm9jdXMoKTp0aGlzLmhpZGUoKSkpfSx0aGlzKSksZiYmdGhpcy4kYmFja2Ryb3BbMF0ub2Zmc2V0V2lkdGgsdGhpcy4kYmFja2Ryb3AuYWRkQ2xhc3MoImluIiksIWIpcmV0dXJuO2Y/dGhpcy4kYmFja2Ryb3Aub25lKCJic1RyYW5zaXRpb25FbmQiLGIpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuQkFDS0RST1BfVFJBTlNJVElPTl9EVVJBVElPTik6YigpfWVsc2UgaWYoIXRoaXMuaXNTaG93biYmdGhpcy4kYmFja2Ryb3Ape3RoaXMuJGJhY2tkcm9wLnJlbW92ZUNsYXNzKCJpbiIpO3ZhciBnPWZ1bmN0aW9uKCl7ZC5yZW1vdmVCYWNrZHJvcCgpLGImJmIoKX07YS5zdXBwb3J0LnRyYW5zaXRpb24mJnRoaXMuJGVsZW1lbnQuaGFzQ2xhc3MoImZhZGUiKT90aGlzLiRiYWNrZHJvcC5vbmUoImJzVHJhbnNpdGlvbkVuZCIsZykuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5CQUNLRFJPUF9UUkFOU0lUSU9OX0RVUkFUSU9OKTpnKCl9ZWxzZSBiJiZiKCl9LGMucHJvdG90eXBlLmhhbmRsZVVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuYWRqdXN0RGlhbG9nKCl9LGMucHJvdG90eXBlLmFkanVzdERpYWxvZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnRbMF0uc2Nyb2xsSGVpZ2h0PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7dGhpcy4kZWxlbWVudC5jc3Moe3BhZGRpbmdMZWZ0OiF0aGlzLmJvZHlJc092ZXJmbG93aW5nJiZhP3RoaXMuc2Nyb2xsYmFyV2lkdGg6IiIscGFkZGluZ1JpZ2h0OnRoaXMuYm9keUlzT3ZlcmZsb3dpbmcmJiFhP3RoaXMuc2Nyb2xsYmFyV2lkdGg6IiJ9KX0sYy5wcm90b3R5cGUucmVzZXRBZGp1c3RtZW50cz1mdW5jdGlvbigpe3RoaXMuJGVsZW1lbnQuY3NzKHtwYWRkaW5nTGVmdDoiIixwYWRkaW5nUmlnaHQ6IiJ9KX0sYy5wcm90b3R5cGUuY2hlY2tTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cuaW5uZXJXaWR0aDtpZighYSl7dmFyIGI9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2E9Yi5yaWdodC1NYXRoLmFicyhiLmxlZnQpfXRoaXMuYm9keUlzT3ZlcmZsb3dpbmc9ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDxhLHRoaXMuc2Nyb2xsYmFyV2lkdGg9dGhpcy5tZWFzdXJlU2Nyb2xsYmFyKCl9LGMucHJvdG90eXBlLnNldFNjcm9sbGJhcj1mdW5jdGlvbigpe3ZhciBhPXBhcnNlSW50KHRoaXMuJGJvZHkuY3NzKCJwYWRkaW5nLXJpZ2h0Iil8fDAsMTApO3RoaXMub3JpZ2luYWxCb2R5UGFkPWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0fHwiIix0aGlzLmJvZHlJc092ZXJmbG93aW5nJiZ0aGlzLiRib2R5LmNzcygicGFkZGluZy1yaWdodCIsYSt0aGlzLnNjcm9sbGJhcldpZHRoKX0sYy5wcm90b3R5cGUucmVzZXRTY3JvbGxiYXI9ZnVuY3Rpb24oKXt0aGlzLiRib2R5LmNzcygicGFkZGluZy1yaWdodCIsdGhpcy5vcmlnaW5hbEJvZHlQYWQpfSxjLnByb3RvdHlwZS5tZWFzdXJlU2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5jbGFzc05hbWU9Im1vZGFsLXNjcm9sbGJhci1tZWFzdXJlIix0aGlzLiRib2R5LmFwcGVuZChhKTt2YXIgYj1hLm9mZnNldFdpZHRoLWEuY2xpZW50V2lkdGg7cmV0dXJuIHRoaXMuJGJvZHlbMF0ucmVtb3ZlQ2hpbGQoYSksYn07dmFyIGQ9YS5mbi5tb2RhbDthLmZuLm1vZGFsPWIsYS5mbi5tb2RhbC5Db25zdHJ1Y3Rvcj1jLGEuZm4ubW9kYWwubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLm1vZGFsPWQsdGhpc30sYShkb2N1bWVudCkub24oImNsaWNrLmJzLm1vZGFsLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJtb2RhbCJdJyxmdW5jdGlvbihjKXt2YXIgZD1hKHRoaXMpLGU9ZC5hdHRyKCJocmVmIiksZj1hKGQuYXR0cigiZGF0YS10YXJnZXQiKXx8ZSYmZS5yZXBsYWNlKC8uKig/PSNbXlxzXSskKS8sIiIpKSxnPWYuZGF0YSgiYnMubW9kYWwiKT8idG9nZ2xlIjphLmV4dGVuZCh7cmVtb3RlOiEvIy8udGVzdChlKSYmZX0sZi5kYXRhKCksZC5kYXRhKCkpO2QuaXMoImEiKSYmYy5wcmV2ZW50RGVmYXVsdCgpLGYub25lKCJzaG93LmJzLm1vZGFsIixmdW5jdGlvbihhKXthLmlzRGVmYXVsdFByZXZlbnRlZCgpfHxmLm9uZSgiaGlkZGVuLmJzLm1vZGFsIixmdW5jdGlvbigpe2QuaXMoIjp2aXNpYmxlIikmJmQudHJpZ2dlcigiZm9jdXMiKX0pfSksYi5jYWxsKGYsZyx0aGlzKX0pfShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMudG9vbHRpcCIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiOyhlfHwhL2Rlc3Ryb3l8aGlkZS8udGVzdChiKSkmJihlfHxkLmRhdGEoImJzLnRvb2x0aXAiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLnR5cGU9bnVsbCx0aGlzLm9wdGlvbnM9bnVsbCx0aGlzLmVuYWJsZWQ9bnVsbCx0aGlzLnRpbWVvdXQ9bnVsbCx0aGlzLmhvdmVyU3RhdGU9bnVsbCx0aGlzLiRlbGVtZW50PW51bGwsdGhpcy5pblN0YXRlPW51bGwsdGhpcy5pbml0KCJ0b29sdGlwIixhLGIpfTtjLlZFUlNJT049IjMuMy41IixjLlRSQU5TSVRJT05fRFVSQVRJT049MTUwLGMuREVGQVVMVFM9e2FuaW1hdGlvbjohMCxwbGFjZW1lbnQ6InRvcCIsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InRvb2x0aXAiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9InRvb2x0aXAtYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjoiaG92ZXIgZm9jdXMiLHRpdGxlOiIiLGRlbGF5OjAsaHRtbDohMSxjb250YWluZXI6ITEsdmlld3BvcnQ6e3NlbGVjdG9yOiJib2R5IixwYWRkaW5nOjB9fSxjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIsYyxkKXtpZih0aGlzLmVuYWJsZWQ9ITAsdGhpcy50eXBlPWIsdGhpcy4kZWxlbWVudD1hKGMpLHRoaXMub3B0aW9ucz10aGlzLmdldE9wdGlvbnMoZCksdGhpcy4kdmlld3BvcnQ9dGhpcy5vcHRpb25zLnZpZXdwb3J0JiZhKGEuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMudmlld3BvcnQpP3RoaXMub3B0aW9ucy52aWV3cG9ydC5jYWxsKHRoaXMsdGhpcy4kZWxlbWVudCk6dGhpcy5vcHRpb25zLnZpZXdwb3J0LnNlbGVjdG9yfHx0aGlzLm9wdGlvbnMudmlld3BvcnQpLHRoaXMuaW5TdGF0ZT17Y2xpY2s6ITEsaG92ZXI6ITEsZm9jdXM6ITF9LHRoaXMuJGVsZW1lbnRbMF1pbnN0YW5jZW9mIGRvY3VtZW50LmNvbnN0cnVjdG9yJiYhdGhpcy5vcHRpb25zLnNlbGVjdG9yKXRocm93IG5ldyBFcnJvcigiYHNlbGVjdG9yYCBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQgd2hlbiBpbml0aWFsaXppbmcgIit0aGlzLnR5cGUrIiBvbiB0aGUgd2luZG93LmRvY3VtZW50IG9iamVjdCEiKTtmb3IodmFyIGU9dGhpcy5vcHRpb25zLnRyaWdnZXIuc3BsaXQoIiAiKSxmPWUubGVuZ3RoO2YtLTspe3ZhciBnPWVbZl07aWYoImNsaWNrIj09Zyl0aGlzLiRlbGVtZW50Lm9uKCJjbGljay4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLnRvZ2dsZSx0aGlzKSk7ZWxzZSBpZigibWFudWFsIiE9Zyl7dmFyIGg9ImhvdmVyIj09Zz8ibW91c2VlbnRlciI6ImZvY3VzaW4iLGk9ImhvdmVyIj09Zz8ibW91c2VsZWF2ZSI6ImZvY3Vzb3V0Ijt0aGlzLiRlbGVtZW50Lm9uKGgrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmVudGVyLHRoaXMpKSx0aGlzLiRlbGVtZW50Lm9uKGkrIi4iK3RoaXMudHlwZSx0aGlzLm9wdGlvbnMuc2VsZWN0b3IsYS5wcm94eSh0aGlzLmxlYXZlLHRoaXMpKX19dGhpcy5vcHRpb25zLnNlbGVjdG9yP3RoaXMuX29wdGlvbnM9YS5leHRlbmQoe30sdGhpcy5vcHRpb25zLHt0cmlnZ2VyOiJtYW51YWwiLHNlbGVjdG9yOiIifSk6dGhpcy5maXhUaXRsZSgpfSxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5nZXRPcHRpb25zPWZ1bmN0aW9uKGIpe3JldHVybiBiPWEuZXh0ZW5kKHt9LHRoaXMuZ2V0RGVmYXVsdHMoKSx0aGlzLiRlbGVtZW50LmRhdGEoKSxiKSxiLmRlbGF5JiYibnVtYmVyIj09dHlwZW9mIGIuZGVsYXkmJihiLmRlbGF5PXtzaG93OmIuZGVsYXksaGlkZTpiLmRlbGF5fSksYn0sYy5wcm90b3R5cGUuZ2V0RGVsZWdhdGVPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9e30sYz10aGlzLmdldERlZmF1bHRzKCk7cmV0dXJuIHRoaXMuX29wdGlvbnMmJmEuZWFjaCh0aGlzLl9vcHRpb25zLGZ1bmN0aW9uKGEsZCl7Y1thXSE9ZCYmKGJbYV09ZCl9KSxifSxjLnByb3RvdHlwZS5lbnRlcj1mdW5jdGlvbihiKXt2YXIgYz1iIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcj9iOmEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSk7cmV0dXJuIGN8fChjPW5ldyB0aGlzLmNvbnN0cnVjdG9yKGIuY3VycmVudFRhcmdldCx0aGlzLmdldERlbGVnYXRlT3B0aW9ucygpKSxhKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsYykpLGIgaW5zdGFuY2VvZiBhLkV2ZW50JiYoYy5pblN0YXRlWyJmb2N1c2luIj09Yi50eXBlPyJmb2N1cyI6ImhvdmVyIl09ITApLGMudGlwKCkuaGFzQ2xhc3MoImluIil8fCJpbiI9PWMuaG92ZXJTdGF0ZT92b2lkKGMuaG92ZXJTdGF0ZT0iaW4iKTooY2xlYXJUaW1lb3V0KGMudGltZW91dCksYy5ob3ZlclN0YXRlPSJpbiIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuc2hvdz92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImluIj09Yy5ob3ZlclN0YXRlJiZjLnNob3coKX0sYy5vcHRpb25zLmRlbGF5LnNob3cpKTpjLnNob3coKSl9LGMucHJvdG90eXBlLmlzSW5TdGF0ZVRydWU9ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gdGhpcy5pblN0YXRlKWlmKHRoaXMuaW5TdGF0ZVthXSlyZXR1cm4hMDtyZXR1cm4hMX0sYy5wcm90b3R5cGUubGVhdmU9ZnVuY3Rpb24oYil7dmFyIGM9YiBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I/YjphKGIuY3VycmVudFRhcmdldCkuZGF0YSgiYnMuIit0aGlzLnR5cGUpO3JldHVybiBjfHwoYz1uZXcgdGhpcy5jb25zdHJ1Y3RvcihiLmN1cnJlbnRUYXJnZXQsdGhpcy5nZXREZWxlZ2F0ZU9wdGlvbnMoKSksYShiLmN1cnJlbnRUYXJnZXQpLmRhdGEoImJzLiIrdGhpcy50eXBlLGMpKSxiIGluc3RhbmNlb2YgYS5FdmVudCYmKGMuaW5TdGF0ZVsiZm9jdXNvdXQiPT1iLnR5cGU/ImZvY3VzIjoiaG92ZXIiXT0hMSksYy5pc0luU3RhdGVUcnVlKCk/dm9pZCAwOihjbGVhclRpbWVvdXQoYy50aW1lb3V0KSxjLmhvdmVyU3RhdGU9Im91dCIsYy5vcHRpb25zLmRlbGF5JiZjLm9wdGlvbnMuZGVsYXkuaGlkZT92b2lkKGMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Im91dCI9PWMuaG92ZXJTdGF0ZSYmYy5oaWRlKCl9LGMub3B0aW9ucy5kZWxheS5oaWRlKSk6Yy5oaWRlKCkpfSxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9YS5FdmVudCgic2hvdy5icy4iK3RoaXMudHlwZSk7aWYodGhpcy5oYXNDb250ZW50KCkmJnRoaXMuZW5hYmxlZCl7dGhpcy4kZWxlbWVudC50cmlnZ2VyKGIpO3ZhciBkPWEuY29udGFpbnModGhpcy4kZWxlbWVudFswXS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0aGlzLiRlbGVtZW50WzBdKTtpZihiLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwhZClyZXR1cm47dmFyIGU9dGhpcyxmPXRoaXMudGlwKCksZz10aGlzLmdldFVJRCh0aGlzLnR5cGUpO3RoaXMuc2V0Q29udGVudCgpLGYuYXR0cigiaWQiLGcpLHRoaXMuJGVsZW1lbnQuYXR0cigiYXJpYS1kZXNjcmliZWRieSIsZyksdGhpcy5vcHRpb25zLmFuaW1hdGlvbiYmZi5hZGRDbGFzcygiZmFkZSIpO3ZhciBoPSJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9wdGlvbnMucGxhY2VtZW50P3RoaXMub3B0aW9ucy5wbGFjZW1lbnQuY2FsbCh0aGlzLGZbMF0sdGhpcy4kZWxlbWVudFswXSk6dGhpcy5vcHRpb25zLnBsYWNlbWVudCxpPS9ccz9hdXRvP1xzPy9pLGo9aS50ZXN0KGgpO2omJihoPWgucmVwbGFjZShpLCIiKXx8InRvcCIpLGYuZGV0YWNoKCkuY3NzKHt0b3A6MCxsZWZ0OjAsZGlzcGxheToiYmxvY2sifSkuYWRkQ2xhc3MoaCkuZGF0YSgiYnMuIit0aGlzLnR5cGUsdGhpcyksdGhpcy5vcHRpb25zLmNvbnRhaW5lcj9mLmFwcGVuZFRvKHRoaXMub3B0aW9ucy5jb250YWluZXIpOmYuaW5zZXJ0QWZ0ZXIodGhpcy4kZWxlbWVudCksdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJpbnNlcnRlZC5icy4iK3RoaXMudHlwZSk7dmFyIGs9dGhpcy5nZXRQb3NpdGlvbigpLGw9ZlswXS5vZmZzZXRXaWR0aCxtPWZbMF0ub2Zmc2V0SGVpZ2h0O2lmKGope3ZhciBuPWgsbz10aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTtoPSJib3R0b20iPT1oJiZrLmJvdHRvbSttPm8uYm90dG9tPyJ0b3AiOiJ0b3AiPT1oJiZrLnRvcC1tPG8udG9wPyJib3R0b20iOiJyaWdodCI9PWgmJmsucmlnaHQrbD5vLndpZHRoPyJsZWZ0IjoibGVmdCI9PWgmJmsubGVmdC1sPG8ubGVmdD8icmlnaHQiOmgsZi5yZW1vdmVDbGFzcyhuKS5hZGRDbGFzcyhoKX12YXIgcD10aGlzLmdldENhbGN1bGF0ZWRPZmZzZXQoaCxrLGwsbSk7dGhpcy5hcHBseVBsYWNlbWVudChwLGgpO3ZhciBxPWZ1bmN0aW9uKCl7dmFyIGE9ZS5ob3ZlclN0YXRlO2UuJGVsZW1lbnQudHJpZ2dlcigic2hvd24uYnMuIitlLnR5cGUpLGUuaG92ZXJTdGF0ZT1udWxsLCJvdXQiPT1hJiZlLmxlYXZlKGUpfTthLnN1cHBvcnQudHJhbnNpdGlvbiYmdGhpcy4kdGlwLmhhc0NsYXNzKCJmYWRlIik/Zi5vbmUoImJzVHJhbnNpdGlvbkVuZCIscSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYy5UUkFOU0lUSU9OX0RVUkFUSU9OKTpxKCl9fSxjLnByb3RvdHlwZS5hcHBseVBsYWNlbWVudD1mdW5jdGlvbihiLGMpe3ZhciBkPXRoaXMudGlwKCksZT1kWzBdLm9mZnNldFdpZHRoLGY9ZFswXS5vZmZzZXRIZWlnaHQsZz1wYXJzZUludChkLmNzcygibWFyZ2luLXRvcCIpLDEwKSxoPXBhcnNlSW50KGQuY3NzKCJtYXJnaW4tbGVmdCIpLDEwKTtpc05hTihnKSYmKGc9MCksaXNOYU4oaCkmJihoPTApLGIudG9wKz1nLGIubGVmdCs9aCxhLm9mZnNldC5zZXRPZmZzZXQoZFswXSxhLmV4dGVuZCh7dXNpbmc6ZnVuY3Rpb24oYSl7ZC5jc3Moe3RvcDpNYXRoLnJvdW5kKGEudG9wKSxsZWZ0Ok1hdGgucm91bmQoYS5sZWZ0KX0pfX0sYiksMCksZC5hZGRDbGFzcygiaW4iKTt2YXIgaT1kWzBdLm9mZnNldFdpZHRoLGo9ZFswXS5vZmZzZXRIZWlnaHQ7InRvcCI9PWMmJmohPWYmJihiLnRvcD1iLnRvcCtmLWopO3ZhciBrPXRoaXMuZ2V0Vmlld3BvcnRBZGp1c3RlZERlbHRhKGMsYixpLGopO2subGVmdD9iLmxlZnQrPWsubGVmdDpiLnRvcCs9ay50b3A7dmFyIGw9L3RvcHxib3R0b20vLnRlc3QoYyksbT1sPzIqay5sZWZ0LWUraToyKmsudG9wLWYraixuPWw/Im9mZnNldFdpZHRoIjoib2Zmc2V0SGVpZ2h0IjtkLm9mZnNldChiKSx0aGlzLnJlcGxhY2VBcnJvdyhtLGRbMF1bbl0sbCl9LGMucHJvdG90eXBlLnJlcGxhY2VBcnJvdz1mdW5jdGlvbihhLGIsYyl7dGhpcy5hcnJvdygpLmNzcyhjPyJsZWZ0IjoidG9wIiw1MCooMS1hL2IpKyIlIikuY3NzKGM/InRvcCI6ImxlZnQiLCIiKX0sYy5wcm90b3R5cGUuc2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMudGlwKCksYj10aGlzLmdldFRpdGxlKCk7YS5maW5kKCIudG9vbHRpcC1pbm5lciIpW3RoaXMub3B0aW9ucy5odG1sPyJodG1sIjoidGV4dCJdKGIpLGEucmVtb3ZlQ2xhc3MoImZhZGUgaW4gdG9wIGJvdHRvbSBsZWZ0IHJpZ2h0Iil9LGMucHJvdG90eXBlLmhpZGU9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZCgpeyJpbiIhPWUuaG92ZXJTdGF0ZSYmZi5kZXRhY2goKSxlLiRlbGVtZW50LnJlbW92ZUF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKS50cmlnZ2VyKCJoaWRkZW4uYnMuIitlLnR5cGUpLGImJmIoKX12YXIgZT10aGlzLGY9YSh0aGlzLiR0aXApLGc9YS5FdmVudCgiaGlkZS5icy4iK3RoaXMudHlwZSk7cmV0dXJuIHRoaXMuJGVsZW1lbnQudHJpZ2dlcihnKSxnLmlzRGVmYXVsdFByZXZlbnRlZCgpP3ZvaWQgMDooZi5yZW1vdmVDbGFzcygiaW4iKSxhLnN1cHBvcnQudHJhbnNpdGlvbiYmZi5oYXNDbGFzcygiZmFkZSIpP2Yub25lKCJic1RyYW5zaXRpb25FbmQiLGQpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGMuVFJBTlNJVElPTl9EVVJBVElPTik6ZCgpLHRoaXMuaG92ZXJTdGF0ZT1udWxsLHRoaXMpfSxjLnByb3RvdHlwZS5maXhUaXRsZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQ7KGEuYXR0cigidGl0bGUiKXx8InN0cmluZyIhPXR5cGVvZiBhLmF0dHIoImRhdGEtb3JpZ2luYWwtdGl0bGUiKSkmJmEuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIsYS5hdHRyKCJ0aXRsZSIpfHwiIikuYXR0cigidGl0bGUiLCIiKX0sYy5wcm90b3R5cGUuaGFzQ29udGVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFRpdGxlKCl9LGMucHJvdG90eXBlLmdldFBvc2l0aW9uPWZ1bmN0aW9uKGIpe2I9Ynx8dGhpcy4kZWxlbWVudDt2YXIgYz1iWzBdLGQ9IkJPRFkiPT1jLnRhZ05hbWUsZT1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO251bGw9PWUud2lkdGgmJihlPWEuZXh0ZW5kKHt9LGUse3dpZHRoOmUucmlnaHQtZS5sZWZ0LGhlaWdodDplLmJvdHRvbS1lLnRvcH0pKTt2YXIgZj1kP3t0b3A6MCxsZWZ0OjB9OmIub2Zmc2V0KCksZz17c2Nyb2xsOmQ/ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A6Yi5zY3JvbGxUb3AoKX0saD1kP3t3aWR0aDphKHdpbmRvdykud2lkdGgoKSxoZWlnaHQ6YSh3aW5kb3cpLmhlaWdodCgpfTpudWxsO3JldHVybiBhLmV4dGVuZCh7fSxlLGcsaCxmKX0sYy5wcm90b3R5cGUuZ2V0Q2FsY3VsYXRlZE9mZnNldD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4iYm90dG9tIj09YT97dG9wOmIudG9wK2IuaGVpZ2h0LGxlZnQ6Yi5sZWZ0K2Iud2lkdGgvMi1jLzJ9OiJ0b3AiPT1hP3t0b3A6Yi50b3AtZCxsZWZ0OmIubGVmdCtiLndpZHRoLzItYy8yfToibGVmdCI9PWE/e3RvcDpiLnRvcCtiLmhlaWdodC8yLWQvMixsZWZ0OmIubGVmdC1jfTp7dG9wOmIudG9wK2IuaGVpZ2h0LzItZC8yLGxlZnQ6Yi5sZWZ0K2Iud2lkdGh9fSxjLnByb3RvdHlwZS5nZXRWaWV3cG9ydEFkanVzdGVkRGVsdGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9e3RvcDowLGxlZnQ6MH07aWYoIXRoaXMuJHZpZXdwb3J0KXJldHVybiBlO3ZhciBmPXRoaXMub3B0aW9ucy52aWV3cG9ydCYmdGhpcy5vcHRpb25zLnZpZXdwb3J0LnBhZGRpbmd8fDAsZz10aGlzLmdldFBvc2l0aW9uKHRoaXMuJHZpZXdwb3J0KTtpZigvcmlnaHR8bGVmdC8udGVzdChhKSl7dmFyIGg9Yi50b3AtZi1nLnNjcm9sbCxpPWIudG9wK2YtZy5zY3JvbGwrZDtoPGcudG9wP2UudG9wPWcudG9wLWg6aT5nLnRvcCtnLmhlaWdodCYmKGUudG9wPWcudG9wK2cuaGVpZ2h0LWkpfWVsc2V7dmFyIGo9Yi5sZWZ0LWYsaz1iLmxlZnQrZitjO2o8Zy5sZWZ0P2UubGVmdD1nLmxlZnQtajprPmcucmlnaHQmJihlLmxlZnQ9Zy5sZWZ0K2cud2lkdGgtayl9cmV0dXJuIGV9LGMucHJvdG90eXBlLmdldFRpdGxlPWZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLiRlbGVtZW50LGM9dGhpcy5vcHRpb25zO3JldHVybiBhPWIuYXR0cigiZGF0YS1vcmlnaW5hbC10aXRsZSIpfHwoImZ1bmN0aW9uIj09dHlwZW9mIGMudGl0bGU/Yy50aXRsZS5jYWxsKGJbMF0pOmMudGl0bGUpfSxjLnByb3RvdHlwZS5nZXRVSUQ9ZnVuY3Rpb24oYSl7ZG8gYSs9fn4oMWU2Kk1hdGgucmFuZG9tKCkpO3doaWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGEpKTtyZXR1cm4gYX0sYy5wcm90b3R5cGUudGlwPWZ1bmN0aW9uKCl7aWYoIXRoaXMuJHRpcCYmKHRoaXMuJHRpcD1hKHRoaXMub3B0aW9ucy50ZW1wbGF0ZSksMSE9dGhpcy4kdGlwLmxlbmd0aCkpdGhyb3cgbmV3IEVycm9yKHRoaXMudHlwZSsiIGB0ZW1wbGF0ZWAgb3B0aW9uIG11c3QgY29uc2lzdCBvZiBleGFjdGx5IDEgdG9wLWxldmVsIGVsZW1lbnQhIik7cmV0dXJuIHRoaXMuJHRpcH0sYy5wcm90b3R5cGUuYXJyb3c9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kYXJyb3c9dGhpcy4kYXJyb3d8fHRoaXMudGlwKCkuZmluZCgiLnRvb2x0aXAtYXJyb3ciKX0sYy5wcm90b3R5cGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSEwfSxjLnByb3RvdHlwZS5kaXNhYmxlPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSExfSxjLnByb3RvdHlwZS50b2dnbGVFbmFibGVkPWZ1bmN0aW9uKCl7dGhpcy5lbmFibGVkPSF0aGlzLmVuYWJsZWR9LGMucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbihiKXt2YXIgYz10aGlzO2ImJihjPWEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSksY3x8KGM9bmV3IHRoaXMuY29uc3RydWN0b3IoYi5jdXJyZW50VGFyZ2V0LHRoaXMuZ2V0RGVsZWdhdGVPcHRpb25zKCkpLGEoYi5jdXJyZW50VGFyZ2V0KS5kYXRhKCJicy4iK3RoaXMudHlwZSxjKSkpLGI/KGMuaW5TdGF0ZS5jbGljaz0hYy5pblN0YXRlLmNsaWNrLGMuaXNJblN0YXRlVHJ1ZSgpP2MuZW50ZXIoYyk6Yy5sZWF2ZShjKSk6Yy50aXAoKS5oYXNDbGFzcygiaW4iKT9jLmxlYXZlKGMpOmMuZW50ZXIoYyl9LGMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2NsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLHRoaXMuaGlkZShmdW5jdGlvbigpe2EuJGVsZW1lbnQub2ZmKCIuIithLnR5cGUpLnJlbW92ZURhdGEoImJzLiIrYS50eXBlKSxhLiR0aXAmJmEuJHRpcC5kZXRhY2goKSxhLiR0aXA9bnVsbCxhLiRhcnJvdz1udWxsLGEuJHZpZXdwb3J0PW51bGx9KX07dmFyIGQ9YS5mbi50b29sdGlwO2EuZm4udG9vbHRpcD1iLGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvcj1jLGEuZm4udG9vbHRpcC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4udG9vbHRpcD1kLHRoaXN9fShqUXVlcnkpLCtmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKSxlPWQuZGF0YSgiYnMucG9wb3ZlciIpLGY9Im9iamVjdCI9PXR5cGVvZiBiJiZiOyhlfHwhL2Rlc3Ryb3l8aGlkZS8udGVzdChiKSkmJihlfHxkLmRhdGEoImJzLnBvcG92ZXIiLGU9bmV3IGModGhpcyxmKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCkpfSl9dmFyIGM9ZnVuY3Rpb24oYSxiKXt0aGlzLmluaXQoInBvcG92ZXIiLGEsYil9O2lmKCFhLmZuLnRvb2x0aXApdGhyb3cgbmV3IEVycm9yKCJQb3BvdmVyIHJlcXVpcmVzIHRvb2x0aXAuanMiKTtjLlZFUlNJT049IjMuMy41IixjLkRFRkFVTFRTPWEuZXh0ZW5kKHt9LGEuZm4udG9vbHRpcC5Db25zdHJ1Y3Rvci5ERUZBVUxUUyx7cGxhY2VtZW50OiJyaWdodCIsdHJpZ2dlcjoiY2xpY2siLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48aDMgY2xhc3M9InBvcG92ZXItdGl0bGUiPjwvaDM+PGRpdiBjbGFzcz0icG9wb3Zlci1jb250ZW50Ij48L2Rpdj48L2Rpdj4nfSksYy5wcm90b3R5cGU9YS5leHRlbmQoe30sYS5mbi50b29sdGlwLkNvbnN0cnVjdG9yLnByb3RvdHlwZSksYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxjLnByb3RvdHlwZS5nZXREZWZhdWx0cz1mdW5jdGlvbigpe3JldHVybiBjLkRFRkFVTFRTfSxjLnByb3RvdHlwZS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50aXAoKSxiPXRoaXMuZ2V0VGl0bGUoKSxjPXRoaXMuZ2V0Q29udGVudCgpO2EuZmluZCgiLnBvcG92ZXItdGl0bGUiKVt0aGlzLm9wdGlvbnMuaHRtbD8iaHRtbCI6InRleHQiXShiKSxhLmZpbmQoIi5wb3BvdmVyLWNvbnRlbnQiKS5jaGlsZHJlbigpLmRldGFjaCgpLmVuZCgpW3RoaXMub3B0aW9ucy5odG1sPyJzdHJpbmciPT10eXBlb2YgYz8iaHRtbCI6ImFwcGVuZCI6InRleHQiXShjKSxhLnJlbW92ZUNsYXNzKCJmYWRlIHRvcCBib3R0b20gbGVmdCByaWdodCBpbiIpLGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5odG1sKCl8fGEuZmluZCgiLnBvcG92ZXItdGl0bGUiKS5oaWRlKCl9LGMucHJvdG90eXBlLmhhc0NvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRUaXRsZSgpfHx0aGlzLmdldENvbnRlbnQoKX0sYy5wcm90b3R5cGUuZ2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuJGVsZW1lbnQsYj10aGlzLm9wdGlvbnM7cmV0dXJuIGEuYXR0cigiZGF0YS1jb250ZW50Iil8fCgiZnVuY3Rpb24iPT10eXBlb2YgYi5jb250ZW50P2IuY29udGVudC5jYWxsKGFbMF0pOmIuY29udGVudCl9LGMucHJvdG90eXBlLmFycm93PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGFycm93PXRoaXMuJGFycm93fHx0aGlzLnRpcCgpLmZpbmQoIi5hcnJvdyIpfTt2YXIgZD1hLmZuLnBvcG92ZXI7YS5mbi5wb3BvdmVyPWIsYS5mbi5wb3BvdmVyLkNvbnN0cnVjdG9yPWMsYS5mbi5wb3BvdmVyLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gYS5mbi5wb3BvdmVyPWQsdGhpc319KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGMsZCl7dGhpcy4kYm9keT1hKGRvY3VtZW50LmJvZHkpLHRoaXMuJHNjcm9sbEVsZW1lbnQ9YShhKGMpLmlzKGRvY3VtZW50LmJvZHkpP3dpbmRvdzpjKSx0aGlzLm9wdGlvbnM9YS5leHRlbmQoe30sYi5ERUZBVUxUUyxkKSx0aGlzLnNlbGVjdG9yPSh0aGlzLm9wdGlvbnMudGFyZ2V0fHwiIikrIiAubmF2IGxpID4gYSIsdGhpcy5vZmZzZXRzPVtdLHRoaXMudGFyZ2V0cz1bXSx0aGlzLmFjdGl2ZVRhcmdldD1udWxsLHRoaXMuc2Nyb2xsSGVpZ2h0PTAsdGhpcy4kc2Nyb2xsRWxlbWVudC5vbigic2Nyb2xsLmJzLnNjcm9sbHNweSIsYS5wcm94eSh0aGlzLnByb2Nlc3MsdGhpcykpLHRoaXMucmVmcmVzaCgpLHRoaXMucHJvY2VzcygpfWZ1bmN0aW9uIGMoYyl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLnNjcm9sbHNweSIpLGY9Im9iamVjdCI9PXR5cGVvZiBjJiZjO2V8fGQuZGF0YSgiYnMuc2Nyb2xsc3B5IixlPW5ldyBiKHRoaXMsZikpLCJzdHJpbmciPT10eXBlb2YgYyYmZVtjXSgpfSl9Yi5WRVJTSU9OPSIzLjMuNSIsYi5ERUZBVUxUUz17b2Zmc2V0OjEwfSxiLnByb3RvdHlwZS5nZXRTY3JvbGxIZWlnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2Nyb2xsRWxlbWVudFswXS5zY3JvbGxIZWlnaHR8fE1hdGgubWF4KHRoaXMuJGJvZHlbMF0uc2Nyb2xsSGVpZ2h0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpfSxiLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPSJvZmZzZXQiLGQ9MDt0aGlzLm9mZnNldHM9W10sdGhpcy50YXJnZXRzPVtdLHRoaXMuc2Nyb2xsSGVpZ2h0PXRoaXMuZ2V0U2Nyb2xsSGVpZ2h0KCksYS5pc1dpbmRvdyh0aGlzLiRzY3JvbGxFbGVtZW50WzBdKXx8KGM9InBvc2l0aW9uIixkPXRoaXMuJHNjcm9sbEVsZW1lbnQuc2Nyb2xsVG9wKCkpLHRoaXMuJGJvZHkuZmluZCh0aGlzLnNlbGVjdG9yKS5tYXAoZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpLGU9Yi5kYXRhKCJ0YXJnZXQiKXx8Yi5hdHRyKCJocmVmIiksZj0vXiMuLy50ZXN0KGUpJiZhKGUpO3JldHVybiBmJiZmLmxlbmd0aCYmZi5pcygiOnZpc2libGUiKSYmW1tmW2NdKCkudG9wK2QsZV1dfHxudWxsfSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhWzBdLWJbMF19KS5lYWNoKGZ1bmN0aW9uKCl7Yi5vZmZzZXRzLnB1c2godGhpc1swXSksYi50YXJnZXRzLnB1c2godGhpc1sxXSl9KX0sYi5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbigpe3ZhciBhLGI9dGhpcy4kc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3AoKSt0aGlzLm9wdGlvbnMub2Zmc2V0LGM9dGhpcy5nZXRTY3JvbGxIZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQrYy10aGlzLiRzY3JvbGxFbGVtZW50LmhlaWdodCgpLGU9dGhpcy5vZmZzZXRzLGY9dGhpcy50YXJnZXRzLGc9dGhpcy5hY3RpdmVUYXJnZXQ7aWYodGhpcy5zY3JvbGxIZWlnaHQhPWMmJnRoaXMucmVmcmVzaCgpLGI+PWQpcmV0dXJuIGchPShhPWZbZi5sZW5ndGgtMV0pJiZ0aGlzLmFjdGl2YXRlKGEpO2lmKGcmJmI8ZVswXSlyZXR1cm4gdGhpcy5hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLmNsZWFyKCk7Zm9yKGE9ZS5sZW5ndGg7YS0tOylnIT1mW2FdJiZiPj1lW2FdJiYodm9pZCAwPT09ZVthKzFdfHxiPGVbYSsxXSkmJnRoaXMuYWN0aXZhdGUoZlthXSl9LGIucHJvdG90eXBlLmFjdGl2YXRlPWZ1bmN0aW9uKGIpe3RoaXMuYWN0aXZlVGFyZ2V0PWIsdGhpcy5jbGVhcigpO3ZhciBjPXRoaXMuc2VsZWN0b3IrJ1tkYXRhLXRhcmdldD0iJytiKyciXSwnK3RoaXMuc2VsZWN0b3IrJ1tocmVmPSInK2IrJyJdJyxkPWEoYykucGFyZW50cygibGkiKS5hZGRDbGFzcygiYWN0aXZlIik7ZC5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiYoZD1kLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpKSwKZC50cmlnZ2VyKCJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiKX0sYi5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXthKHRoaXMuc2VsZWN0b3IpLnBhcmVudHNVbnRpbCh0aGlzLm9wdGlvbnMudGFyZ2V0LCIuYWN0aXZlIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpfTt2YXIgZD1hLmZuLnNjcm9sbHNweTthLmZuLnNjcm9sbHNweT1jLGEuZm4uc2Nyb2xsc3B5LkNvbnN0cnVjdG9yPWIsYS5mbi5zY3JvbGxzcHkubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnNjcm9sbHNweT1kLHRoaXN9LGEod2luZG93KS5vbigibG9hZC5icy5zY3JvbGxzcHkuZGF0YS1hcGkiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJzY3JvbGwiXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2MuY2FsbChiLGIuZGF0YSgpKX0pfSl9KGpRdWVyeSksK2Z1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD1hKHRoaXMpLGU9ZC5kYXRhKCJicy50YWIiKTtlfHxkLmRhdGEoImJzLnRhYiIsZT1uZXcgYyh0aGlzKSksInN0cmluZyI9PXR5cGVvZiBiJiZlW2JdKCl9KX12YXIgYz1mdW5jdGlvbihiKXt0aGlzLmVsZW1lbnQ9YShiKX07Yy5WRVJTSU9OPSIzLjMuNSIsYy5UUkFOU0lUSU9OX0RVUkFUSU9OPTE1MCxjLnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5lbGVtZW50LGM9Yi5jbG9zZXN0KCJ1bDpub3QoLmRyb3Bkb3duLW1lbnUpIiksZD1iLmRhdGEoInRhcmdldCIpO2lmKGR8fChkPWIuYXR0cigiaHJlZiIpLGQ9ZCYmZC5yZXBsYWNlKC8uKig/PSNbXlxzXSokKS8sIiIpKSwhYi5wYXJlbnQoImxpIikuaGFzQ2xhc3MoImFjdGl2ZSIpKXt2YXIgZT1jLmZpbmQoIi5hY3RpdmU6bGFzdCBhIiksZj1hLkV2ZW50KCJoaWRlLmJzLnRhYiIse3JlbGF0ZWRUYXJnZXQ6YlswXX0pLGc9YS5FdmVudCgic2hvdy5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OmVbMF19KTtpZihlLnRyaWdnZXIoZiksYi50cmlnZ2VyKGcpLCFnLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYhZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7dmFyIGg9YShkKTt0aGlzLmFjdGl2YXRlKGIuY2xvc2VzdCgibGkiKSxjKSx0aGlzLmFjdGl2YXRlKGgsaC5wYXJlbnQoKSxmdW5jdGlvbigpe2UudHJpZ2dlcih7dHlwZToiaGlkZGVuLmJzLnRhYiIscmVsYXRlZFRhcmdldDpiWzBdfSksYi50cmlnZ2VyKHt0eXBlOiJzaG93bi5icy50YWIiLHJlbGF0ZWRUYXJnZXQ6ZVswXX0pfSl9fX0sYy5wcm90b3R5cGUuYWN0aXZhdGU9ZnVuY3Rpb24oYixkLGUpe2Z1bmN0aW9uIGYoKXtnLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5maW5kKCI+IC5kcm9wZG93bi1tZW51ID4gLmFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKS5lbmQoKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJykuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpLGIuYWRkQ2xhc3MoImFjdGl2ZSIpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksaD8oYlswXS5vZmZzZXRXaWR0aCxiLmFkZENsYXNzKCJpbiIpKTpiLnJlbW92ZUNsYXNzKCJmYWRlIiksYi5wYXJlbnQoIi5kcm9wZG93bi1tZW51IikubGVuZ3RoJiZiLmNsb3Nlc3QoImxpLmRyb3Bkb3duIikuYWRkQ2xhc3MoImFjdGl2ZSIpLmVuZCgpLmZpbmQoJ1tkYXRhLXRvZ2dsZT0idGFiIl0nKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksZSYmZSgpfXZhciBnPWQuZmluZCgiPiAuYWN0aXZlIiksaD1lJiZhLnN1cHBvcnQudHJhbnNpdGlvbiYmKGcubGVuZ3RoJiZnLmhhc0NsYXNzKCJmYWRlIil8fCEhZC5maW5kKCI+IC5mYWRlIikubGVuZ3RoKTtnLmxlbmd0aCYmaD9nLm9uZSgiYnNUcmFuc2l0aW9uRW5kIixmKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjLlRSQU5TSVRJT05fRFVSQVRJT04pOmYoKSxnLnJlbW92ZUNsYXNzKCJpbiIpfTt2YXIgZD1hLmZuLnRhYjthLmZuLnRhYj1iLGEuZm4udGFiLkNvbnN0cnVjdG9yPWMsYS5mbi50YWIubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBhLmZuLnRhYj1kLHRoaXN9O3ZhciBlPWZ1bmN0aW9uKGMpe2MucHJldmVudERlZmF1bHQoKSxiLmNhbGwoYSh0aGlzKSwic2hvdyIpfTthKGRvY3VtZW50KS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJ0YWIiXScsZSkub24oImNsaWNrLmJzLnRhYi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0icGlsbCJdJyxlKX0oalF1ZXJ5KSwrZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBkPWEodGhpcyksZT1kLmRhdGEoImJzLmFmZml4IiksZj0ib2JqZWN0Ij09dHlwZW9mIGImJmI7ZXx8ZC5kYXRhKCJicy5hZmZpeCIsZT1uZXcgYyh0aGlzLGYpKSwic3RyaW5nIj09dHlwZW9mIGImJmVbYl0oKX0pfXZhciBjPWZ1bmN0aW9uKGIsZCl7dGhpcy5vcHRpb25zPWEuZXh0ZW5kKHt9LGMuREVGQVVMVFMsZCksdGhpcy4kdGFyZ2V0PWEodGhpcy5vcHRpb25zLnRhcmdldCkub24oInNjcm9sbC5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb24sdGhpcykpLm9uKCJjbGljay5icy5hZmZpeC5kYXRhLWFwaSIsYS5wcm94eSh0aGlzLmNoZWNrUG9zaXRpb25XaXRoRXZlbnRMb29wLHRoaXMpKSx0aGlzLiRlbGVtZW50PWEoYiksdGhpcy5hZmZpeGVkPW51bGwsdGhpcy51bnBpbj1udWxsLHRoaXMucGlubmVkT2Zmc2V0PW51bGwsdGhpcy5jaGVja1Bvc2l0aW9uKCl9O2MuVkVSU0lPTj0iMy4zLjUiLGMuUkVTRVQ9ImFmZml4IGFmZml4LXRvcCBhZmZpeC1ib3R0b20iLGMuREVGQVVMVFM9e29mZnNldDowLHRhcmdldDp3aW5kb3d9LGMucHJvdG90eXBlLmdldFN0YXRlPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMuJHRhcmdldC5zY3JvbGxUb3AoKSxmPXRoaXMuJGVsZW1lbnQub2Zmc2V0KCksZz10aGlzLiR0YXJnZXQuaGVpZ2h0KCk7aWYobnVsbCE9YyYmInRvcCI9PXRoaXMuYWZmaXhlZClyZXR1cm4gYz5lPyJ0b3AiOiExO2lmKCJib3R0b20iPT10aGlzLmFmZml4ZWQpcmV0dXJuIG51bGwhPWM/ZSt0aGlzLnVucGluPD1mLnRvcD8hMToiYm90dG9tIjphLWQ+PWUrZz8hMToiYm90dG9tIjt2YXIgaD1udWxsPT10aGlzLmFmZml4ZWQsaT1oP2U6Zi50b3Asaj1oP2c6YjtyZXR1cm4gbnVsbCE9YyYmYz49ZT8idG9wIjpudWxsIT1kJiZpK2o+PWEtZD8iYm90dG9tIjohMX0sYy5wcm90b3R5cGUuZ2V0UGlubmVkT2Zmc2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5waW5uZWRPZmZzZXQpcmV0dXJuIHRoaXMucGlubmVkT2Zmc2V0O3RoaXMuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoYy5SRVNFVCkuYWRkQ2xhc3MoImFmZml4Iik7dmFyIGE9dGhpcy4kdGFyZ2V0LnNjcm9sbFRvcCgpLGI9dGhpcy4kZWxlbWVudC5vZmZzZXQoKTtyZXR1cm4gdGhpcy5waW5uZWRPZmZzZXQ9Yi50b3AtYX0sYy5wcm90b3R5cGUuY2hlY2tQb3NpdGlvbldpdGhFdmVudExvb3A9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGEucHJveHkodGhpcy5jaGVja1Bvc2l0aW9uLHRoaXMpLDEpfSxjLnByb3RvdHlwZS5jaGVja1Bvc2l0aW9uPWZ1bmN0aW9uKCl7aWYodGhpcy4kZWxlbWVudC5pcygiOnZpc2libGUiKSl7dmFyIGI9dGhpcy4kZWxlbWVudC5oZWlnaHQoKSxkPXRoaXMub3B0aW9ucy5vZmZzZXQsZT1kLnRvcCxmPWQuYm90dG9tLGc9TWF0aC5tYXgoYShkb2N1bWVudCkuaGVpZ2h0KCksYShkb2N1bWVudC5ib2R5KS5oZWlnaHQoKSk7Im9iamVjdCIhPXR5cGVvZiBkJiYoZj1lPWQpLCJmdW5jdGlvbiI9PXR5cGVvZiBlJiYoZT1kLnRvcCh0aGlzLiRlbGVtZW50KSksImZ1bmN0aW9uIj09dHlwZW9mIGYmJihmPWQuYm90dG9tKHRoaXMuJGVsZW1lbnQpKTt2YXIgaD10aGlzLmdldFN0YXRlKGcsYixlLGYpO2lmKHRoaXMuYWZmaXhlZCE9aCl7bnVsbCE9dGhpcy51bnBpbiYmdGhpcy4kZWxlbWVudC5jc3MoInRvcCIsIiIpO3ZhciBpPSJhZmZpeCIrKGg/Ii0iK2g6IiIpLGo9YS5FdmVudChpKyIuYnMuYWZmaXgiKTtpZih0aGlzLiRlbGVtZW50LnRyaWdnZXIoaiksai5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47dGhpcy5hZmZpeGVkPWgsdGhpcy51bnBpbj0iYm90dG9tIj09aD90aGlzLmdldFBpbm5lZE9mZnNldCgpOm51bGwsdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcyhjLlJFU0VUKS5hZGRDbGFzcyhpKS50cmlnZ2VyKGkucmVwbGFjZSgiYWZmaXgiLCJhZmZpeGVkIikrIi5icy5hZmZpeCIpfSJib3R0b20iPT1oJiZ0aGlzLiRlbGVtZW50Lm9mZnNldCh7dG9wOmctYi1mfSl9fTt2YXIgZD1hLmZuLmFmZml4O2EuZm4uYWZmaXg9YixhLmZuLmFmZml4LkNvbnN0cnVjdG9yPWMsYS5mbi5hZmZpeC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGEuZm4uYWZmaXg9ZCx0aGlzfSxhKHdpbmRvdykub24oImxvYWQiLGZ1bmN0aW9uKCl7YSgnW2RhdGEtc3B5PSJhZmZpeCJdJykuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLmRhdGEoKTtkLm9mZnNldD1kLm9mZnNldHx8e30sbnVsbCE9ZC5vZmZzZXRCb3R0b20mJihkLm9mZnNldC5ib3R0b209ZC5vZmZzZXRCb3R0b20pLG51bGwhPWQub2Zmc2V0VG9wJiYoZC5vZmZzZXQudG9wPWQub2Zmc2V0VG9wKSxiLmNhbGwoYyxkKX0pfSl9KGpRdWVyeSk7"></script>
|
|
<script src="data:application/javascript;base64,LyoqCiogQHByZXNlcnZlIEhUTUw1IFNoaXYgMy43LjIgfCBAYWZhcmthcyBAamRhbHRvbiBAam9uX25lYWwgQHJlbSB8IE1JVC9HUEwyIExpY2Vuc2VkCiovCi8vIE9ubHkgcnVuIHRoaXMgY29kZSBpbiBJRSA4CmlmICghIXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKCJNU0lFIDgiKSkgewohZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEsYil7dmFyIGM9YS5jcmVhdGVFbGVtZW50KCJwIiksZD1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGEuZG9jdW1lbnRFbGVtZW50O3JldHVybiBjLmlubmVySFRNTD0ieDxzdHlsZT4iK2IrIjwvc3R5bGU+IixkLmluc2VydEJlZm9yZShjLmxhc3RDaGlsZCxkLmZpcnN0Q2hpbGQpfWZ1bmN0aW9uIGQoKXt2YXIgYT10LmVsZW1lbnRzO3JldHVybiJzdHJpbmciPT10eXBlb2YgYT9hLnNwbGl0KCIgIik6YX1mdW5jdGlvbiBlKGEsYil7dmFyIGM9dC5lbGVtZW50czsic3RyaW5nIiE9dHlwZW9mIGMmJihjPWMuam9pbigiICIpKSwic3RyaW5nIiE9dHlwZW9mIGEmJihhPWEuam9pbigiICIpKSx0LmVsZW1lbnRzPWMrIiAiK2EsaihiKX1mdW5jdGlvbiBmKGEpe3ZhciBiPXNbYVtxXV07cmV0dXJuIGJ8fChiPXt9LHIrKyxhW3FdPXIsc1tyXT1iKSxifWZ1bmN0aW9uIGcoYSxjLGQpe2lmKGN8fChjPWIpLGwpcmV0dXJuIGMuY3JlYXRlRWxlbWVudChhKTtkfHwoZD1mKGMpKTt2YXIgZTtyZXR1cm4gZT1kLmNhY2hlW2FdP2QuY2FjaGVbYV0uY2xvbmVOb2RlKCk6cC50ZXN0KGEpPyhkLmNhY2hlW2FdPWQuY3JlYXRlRWxlbShhKSkuY2xvbmVOb2RlKCk6ZC5jcmVhdGVFbGVtKGEpLCFlLmNhbkhhdmVDaGlsZHJlbnx8by50ZXN0KGEpfHxlLnRhZ1Vybj9lOmQuZnJhZy5hcHBlbmRDaGlsZChlKX1mdW5jdGlvbiBoKGEsYyl7aWYoYXx8KGE9YiksbClyZXR1cm4gYS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Yz1jfHxmKGEpO2Zvcih2YXIgZT1jLmZyYWcuY2xvbmVOb2RlKCksZz0wLGg9ZCgpLGk9aC5sZW5ndGg7aT5nO2crKyllLmNyZWF0ZUVsZW1lbnQoaFtnXSk7cmV0dXJuIGV9ZnVuY3Rpb24gaShhLGIpe2IuY2FjaGV8fChiLmNhY2hlPXt9LGIuY3JlYXRlRWxlbT1hLmNyZWF0ZUVsZW1lbnQsYi5jcmVhdGVGcmFnPWEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCxiLmZyYWc9Yi5jcmVhdGVGcmFnKCkpLGEuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihjKXtyZXR1cm4gdC5zaGl2TWV0aG9kcz9nKGMsYSxiKTpiLmNyZWF0ZUVsZW0oYyl9LGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudD1GdW5jdGlvbigiaCxmIiwicmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49Zi5jbG9uZU5vZGUoKSxjPW4uY3JlYXRlRWxlbWVudDtoLnNoaXZNZXRob2RzJiYoIitkKCkuam9pbigpLnJlcGxhY2UoL1tcd1wtOl0rL2csZnVuY3Rpb24oYSl7cmV0dXJuIGIuY3JlYXRlRWxlbShhKSxiLmZyYWcuY3JlYXRlRWxlbWVudChhKSwnYygiJythKyciKSd9KSsiKTtyZXR1cm4gbn0iKSh0LGIuZnJhZyl9ZnVuY3Rpb24gaihhKXthfHwoYT1iKTt2YXIgZD1mKGEpO3JldHVybiF0LnNoaXZDU1N8fGt8fGQuaGFzQ1NTfHwoZC5oYXNDU1M9ISFjKGEsImFydGljbGUsYXNpZGUsZGlhbG9nLGZpZ2NhcHRpb24sZmlndXJlLGZvb3RlcixoZWFkZXIsaGdyb3VwLG1haW4sbmF2LHNlY3Rpb257ZGlzcGxheTpibG9ja31tYXJre2JhY2tncm91bmQ6I0ZGMDtjb2xvcjojMDAwfXRlbXBsYXRle2Rpc3BsYXk6bm9uZX0iKSksbHx8aShhLGQpLGF9dmFyIGssbCxtPSIzLjcuMiIsbj1hLmh0bWw1fHx7fSxvPS9ePHxeKD86YnV0dG9ufG1hcHxzZWxlY3R8dGV4dGFyZWF8b2JqZWN0fGlmcmFtZXxvcHRpb258b3B0Z3JvdXApJC9pLHA9L14oPzphfGJ8Y29kZXxkaXZ8ZmllbGRzZXR8aDF8aDJ8aDN8aDR8aDV8aDZ8aXxsYWJlbHxsaXxvbHxwfHF8c3BhbnxzdHJvbmd8c3R5bGV8dGFibGV8dGJvZHl8dGR8dGh8dHJ8dWwpJC9pLHE9Il9odG1sNXNoaXYiLHI9MCxzPXt9OyFmdW5jdGlvbigpe3RyeXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImEiKTthLmlubmVySFRNTD0iPHh5ej48L3h5ej4iLGs9ImhpZGRlbiJpbiBhLGw9MT09YS5jaGlsZE5vZGVzLmxlbmd0aHx8ZnVuY3Rpb24oKXtiLmNyZWF0ZUVsZW1lbnQoImEiKTt2YXIgYT1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuY2xvbmVOb2RlfHwidW5kZWZpbmVkIj09dHlwZW9mIGEuY3JlYXRlRG9jdW1lbnRGcmFnbWVudHx8InVuZGVmaW5lZCI9PXR5cGVvZiBhLmNyZWF0ZUVsZW1lbnR9KCl9Y2F0Y2goYyl7az0hMCxsPSEwfX0oKTt2YXIgdD17ZWxlbWVudHM6bi5lbGVtZW50c3x8ImFiYnIgYXJ0aWNsZSBhc2lkZSBhdWRpbyBiZGkgY2FudmFzIGRhdGEgZGF0YWxpc3QgZGV0YWlscyBkaWFsb2cgZmlnY2FwdGlvbiBmaWd1cmUgZm9vdGVyIGhlYWRlciBoZ3JvdXAgbWFpbiBtYXJrIG1ldGVyIG5hdiBvdXRwdXQgcGljdHVyZSBwcm9ncmVzcyBzZWN0aW9uIHN1bW1hcnkgdGVtcGxhdGUgdGltZSB2aWRlbyIsdmVyc2lvbjptLHNoaXZDU1M6bi5zaGl2Q1NTIT09ITEsc3VwcG9ydHNVbmtub3duRWxlbWVudHM6bCxzaGl2TWV0aG9kczpuLnNoaXZNZXRob2RzIT09ITEsdHlwZToiZGVmYXVsdCIsc2hpdkRvY3VtZW50OmosY3JlYXRlRWxlbWVudDpnLGNyZWF0ZURvY3VtZW50RnJhZ21lbnQ6aCxhZGRFbGVtZW50czplfTthLmh0bWw1PXQsaihiKX0odGhpcyxkb2N1bWVudCk7Cn07Cg=="></script>
|
|
<script src="data:application/javascript;base64,LyohIFJlc3BvbmQuanMgdjEuNC4yOiBtaW4vbWF4LXdpZHRoIG1lZGlhIHF1ZXJ5IHBvbHlmaWxsICogQ29weXJpZ2h0IDIwMTMgU2NvdHQgSmVobAogKiBMaWNlbnNlZCB1bmRlciBodHRwczovL2dpdGh1Yi5jb20vc2NvdHRqZWhsL1Jlc3BvbmQvYmxvYi9tYXN0ZXIvTElDRU5TRS1NSVQKICogICovCgovLyBPbmx5IHJ1biB0aGlzIGNvZGUgaW4gSUUgOAppZiAoISF3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgiTVNJRSA4IikpIHsKIWZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjthLm1hdGNoTWVkaWE9YS5tYXRjaE1lZGlhfHxmdW5jdGlvbihhKXt2YXIgYixjPWEuZG9jdW1lbnRFbGVtZW50LGQ9Yy5maXJzdEVsZW1lbnRDaGlsZHx8Yy5maXJzdENoaWxkLGU9YS5jcmVhdGVFbGVtZW50KCJib2R5IiksZj1hLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBmLmlkPSJtcS10ZXN0LTEiLGYuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMDBlbSIsZS5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIixlLmFwcGVuZENoaWxkKGYpLGZ1bmN0aW9uKGEpe3JldHVybiBmLmlubmVySFRNTD0nJnNoeTs8c3R5bGUgbWVkaWE9IicrYSsnIj4gI21xLXRlc3QtMSB7IHdpZHRoOiA0MnB4OyB9PC9zdHlsZT4nLGMuaW5zZXJ0QmVmb3JlKGUsZCksYj00Mj09PWYub2Zmc2V0V2lkdGgsYy5yZW1vdmVDaGlsZChlKSx7bWF0Y2hlczpiLG1lZGlhOmF9fX0oYS5kb2N1bWVudCl9KHRoaXMpLGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKCl7dSghMCl9dmFyIGM9e307YS5yZXNwb25kPWMsYy51cGRhdGU9ZnVuY3Rpb24oKXt9O3ZhciBkPVtdLGU9ZnVuY3Rpb24oKXt2YXIgYj0hMTt0cnl7Yj1uZXcgYS5YTUxIdHRwUmVxdWVzdH1jYXRjaChjKXtiPW5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGJ9fSgpLGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1lKCk7YyYmKGMub3BlbigiR0VUIixhLCEwKSxjLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQhPT1jLnJlYWR5U3RhdGV8fDIwMCE9PWMuc3RhdHVzJiYzMDQhPT1jLnN0YXR1c3x8YihjLnJlc3BvbnNlVGV4dCl9LDQhPT1jLnJlYWR5U3RhdGUmJmMuc2VuZChudWxsKSl9O2lmKGMuYWpheD1mLGMucXVldWU9ZCxjLnJlZ2V4PXttZWRpYTovQG1lZGlhW15ce10rXHsoW15ce1x9XSpce1teXH1ce10qXH0pKy9naSxrZXlmcmFtZXM6L0AoPzpcLSg/Om98bW96fHdlYmtpdClcLSk/a2V5ZnJhbWVzW15ce10rXHsoPzpbXlx7XH1dKlx7W15cfVx7XSpcfSkrW15cfV0qXH0vZ2ksdXJsczovKHVybFwoKVsnIl0/KFteXC9cKSciXVteOlwpJyJdKylbJyJdPyhcKSkvZyxmaW5kU3R5bGVzOi9AbWVkaWEgKihbXlx7XSspXHsoW1xTXHNdKz8pJC8sb25seTovKG9ubHlccyspPyhbYS16QS1aXSspXHM/LyxtaW53Oi9cKFtcc10qbWluXC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpLyxtYXh3Oi9cKFtcc10qbWF4XC13aWR0aFxzKjpbXHNdKihbXHNdKlswLTlcLl0rKShweHxlbSlbXHNdKlwpL30sYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQ9YS5tYXRjaE1lZGlhJiZudWxsIT09YS5tYXRjaE1lZGlhKCJvbmx5IGFsbCIpJiZhLm1hdGNoTWVkaWEoIm9ubHkgYWxsIikubWF0Y2hlcywhYy5tZWRpYVF1ZXJpZXNTdXBwb3J0ZWQpe3ZhciBnLGgsaSxqPWEuZG9jdW1lbnQsaz1qLmRvY3VtZW50RWxlbWVudCxsPVtdLG09W10sbj1bXSxvPXt9LHA9MzAscT1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGsscj1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIilbMF0scz1xLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIiksdD1mdW5jdGlvbigpe3ZhciBhLGI9ai5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPWouYm9keSxkPWsuc3R5bGUuZm9udFNpemUsZT1jJiZjLnN0eWxlLmZvbnRTaXplLGY9ITE7cmV0dXJuIGIuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOjFlbTt3aWR0aDoxZW0iLGN8fChjPWY9ai5jcmVhdGVFbGVtZW50KCJib2R5IiksYy5zdHlsZS5iYWNrZ3JvdW5kPSJub25lIiksay5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5zdHlsZS5mb250U2l6ZT0iMTAwJSIsYy5hcHBlbmRDaGlsZChiKSxmJiZrLmluc2VydEJlZm9yZShjLGsuZmlyc3RDaGlsZCksYT1iLm9mZnNldFdpZHRoLGY/ay5yZW1vdmVDaGlsZChjKTpjLnJlbW92ZUNoaWxkKGIpLGsuc3R5bGUuZm9udFNpemU9ZCxlJiYoYy5zdHlsZS5mb250U2l6ZT1lKSxhPWk9cGFyc2VGbG9hdChhKX0sdT1mdW5jdGlvbihiKXt2YXIgYz0iY2xpZW50V2lkdGgiLGQ9a1tjXSxlPSJDU1MxQ29tcGF0Ij09PWouY29tcGF0TW9kZSYmZHx8ai5ib2R5W2NdfHxkLGY9e30sbz1zW3MubGVuZ3RoLTFdLHI9KG5ldyBEYXRlKS5nZXRUaW1lKCk7aWYoYiYmZyYmcD5yLWcpcmV0dXJuIGEuY2xlYXJUaW1lb3V0KGgpLGg9YS5zZXRUaW1lb3V0KHUscCksdm9pZCAwO2c9cjtmb3IodmFyIHYgaW4gbClpZihsLmhhc093blByb3BlcnR5KHYpKXt2YXIgdz1sW3ZdLHg9dy5taW53LHk9dy5tYXh3LHo9bnVsbD09PXgsQT1udWxsPT09eSxCPSJlbSI7eCYmKHg9cGFyc2VGbG9hdCh4KSooeC5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSkseSYmKHk9cGFyc2VGbG9hdCh5KSooeS5pbmRleE9mKEIpPi0xP2l8fHQoKToxKSksdy5oYXNxdWVyeSYmKHomJkF8fCEoenx8ZT49eCl8fCEoQXx8eT49ZSkpfHwoZlt3Lm1lZGlhXXx8KGZbdy5tZWRpYV09W10pLGZbdy5tZWRpYV0ucHVzaChtW3cucnVsZXNdKSl9Zm9yKHZhciBDIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShDKSYmbltDXSYmbltDXS5wYXJlbnROb2RlPT09cSYmcS5yZW1vdmVDaGlsZChuW0NdKTtuLmxlbmd0aD0wO2Zvcih2YXIgRCBpbiBmKWlmKGYuaGFzT3duUHJvcGVydHkoRCkpe3ZhciBFPWouY3JlYXRlRWxlbWVudCgic3R5bGUiKSxGPWZbRF0uam9pbigiXG4iKTtFLnR5cGU9InRleHQvY3NzIixFLm1lZGlhPUQscS5pbnNlcnRCZWZvcmUoRSxvLm5leHRTaWJsaW5nKSxFLnN0eWxlU2hlZXQ/RS5zdHlsZVNoZWV0LmNzc1RleHQ9RjpFLmFwcGVuZENoaWxkKGouY3JlYXRlVGV4dE5vZGUoRikpLG4ucHVzaChFKX19LHY9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPWEucmVwbGFjZShjLnJlZ2V4LmtleWZyYW1lcywiIikubWF0Y2goYy5yZWdleC5tZWRpYSksZj1lJiZlLmxlbmd0aHx8MDtiPWIuc3Vic3RyaW5nKDAsYi5sYXN0SW5kZXhPZigiLyIpKTt2YXIgZz1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGMucmVnZXgudXJscywiJDEiK2IrIiQyJDMiKX0saD0hZiYmZDtiLmxlbmd0aCYmKGIrPSIvIiksaCYmKGY9MSk7Zm9yKHZhciBpPTA7Zj5pO2krKyl7dmFyIGosayxuLG87aD8oaj1kLG0ucHVzaChnKGEpKSk6KGo9ZVtpXS5tYXRjaChjLnJlZ2V4LmZpbmRTdHlsZXMpJiZSZWdFeHAuJDEsbS5wdXNoKFJlZ0V4cC4kMiYmZyhSZWdFeHAuJDIpKSksbj1qLnNwbGl0KCIsIiksbz1uLmxlbmd0aDtmb3IodmFyIHA9MDtvPnA7cCsrKWs9bltwXSxsLnB1c2goe21lZGlhOmsuc3BsaXQoIigiKVswXS5tYXRjaChjLnJlZ2V4Lm9ubHkpJiZSZWdFeHAuJDJ8fCJhbGwiLHJ1bGVzOm0ubGVuZ3RoLTEsaGFzcXVlcnk6ay5pbmRleE9mKCIoIik+LTEsbWludzprLm1hdGNoKGMucmVnZXgubWludykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIiksbWF4dzprLm1hdGNoKGMucmVnZXgubWF4dykmJnBhcnNlRmxvYXQoUmVnRXhwLiQxKSsoUmVnRXhwLiQyfHwiIil9KX11KCl9LHc9ZnVuY3Rpb24oKXtpZihkLmxlbmd0aCl7dmFyIGI9ZC5zaGlmdCgpO2YoYi5ocmVmLGZ1bmN0aW9uKGMpe3YoYyxiLmhyZWYsYi5tZWRpYSksb1tiLmhyZWZdPSEwLGEuc2V0VGltZW91dChmdW5jdGlvbigpe3coKX0sMCl9KX19LHg9ZnVuY3Rpb24oKXtmb3IodmFyIGI9MDtiPHMubGVuZ3RoO2IrKyl7dmFyIGM9c1tiXSxlPWMuaHJlZixmPWMubWVkaWEsZz1jLnJlbCYmInN0eWxlc2hlZXQiPT09Yy5yZWwudG9Mb3dlckNhc2UoKTtlJiZnJiYhb1tlXSYmKGMuc3R5bGVTaGVldCYmYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQ/KHYoYy5zdHlsZVNoZWV0LnJhd0Nzc1RleHQsZSxmKSxvW2VdPSEwKTooIS9eKFthLXpBLVo6XSpcL1wvKS8udGVzdChlKSYmIXJ8fGUucmVwbGFjZShSZWdFeHAuJDEsIiIpLnNwbGl0KCIvIilbMF09PT1hLmxvY2F0aW9uLmhvc3QpJiYoIi8vIj09PWUuc3Vic3RyaW5nKDAsMikmJihlPWEubG9jYXRpb24ucHJvdG9jb2wrZSksZC5wdXNoKHtocmVmOmUsbWVkaWE6Zn0pKSl9dygpfTt4KCksYy51cGRhdGU9eCxjLmdldEVtVmFsdWU9dCxhLmFkZEV2ZW50TGlzdGVuZXI/YS5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLGIsITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9ucmVzaXplIixiKX19KHRoaXMpOwp9Owo="></script>
|
|
<style>h1 {font-size: 34px;}
|
|
h1.title {font-size: 38px;}
|
|
h2 {font-size: 30px;}
|
|
h3 {font-size: 24px;}
|
|
h4 {font-size: 18px;}
|
|
h5 {font-size: 16px;}
|
|
h6 {font-size: 12px;}
|
|
code {color: inherit; background-color: rgba(0, 0, 0, 0.04);}
|
|
pre:not([class]) { background-color: white }</style>
|
|
<script src="data:application/javascript;base64,LyohIGpRdWVyeSBVSSAtIHYxLjExLjQgLSAyMDE2LTAxLTA1CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIEluY2x1ZGVzOiBjb3JlLmpzLCB3aWRnZXQuanMsIG1vdXNlLmpzLCBwb3NpdGlvbi5qcywgZHJhZ2dhYmxlLmpzLCBkcm9wcGFibGUuanMsIHJlc2l6YWJsZS5qcywgc2VsZWN0YWJsZS5qcywgc29ydGFibGUuanMsIGFjY29yZGlvbi5qcywgYXV0b2NvbXBsZXRlLmpzLCBidXR0b24uanMsIGRpYWxvZy5qcywgbWVudS5qcywgcHJvZ3Jlc3NiYXIuanMsIHNlbGVjdG1lbnUuanMsIHNsaWRlci5qcywgc3Bpbm5lci5qcywgdGFicy5qcywgdG9vbHRpcC5qcywgZWZmZWN0LmpzLCBlZmZlY3QtYmxpbmQuanMsIGVmZmVjdC1ib3VuY2UuanMsIGVmZmVjdC1jbGlwLmpzLCBlZmZlY3QtZHJvcC5qcywgZWZmZWN0LWV4cGxvZGUuanMsIGVmZmVjdC1mYWRlLmpzLCBlZmZlY3QtZm9sZC5qcywgZWZmZWN0LWhpZ2hsaWdodC5qcywgZWZmZWN0LXB1ZmYuanMsIGVmZmVjdC1wdWxzYXRlLmpzLCBlZmZlY3Qtc2NhbGUuanMsIGVmZmVjdC1zaGFrZS5qcywgZWZmZWN0LXNpemUuanMsIGVmZmVjdC1zbGlkZS5qcywgZWZmZWN0LXRyYW5zZmVyLmpzCiogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwoKKGZ1bmN0aW9uKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sZSk6ZShqUXVlcnkpfSkoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCh0LHMpe3ZhciBuLGEsbyxyPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iYXJlYSI9PT1yPyhuPXQucGFyZW50Tm9kZSxhPW4ubmFtZSx0LmhyZWYmJmEmJiJtYXAiPT09bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPyhvPWUoImltZ1t1c2VtYXA9JyMiK2ErIiddIilbMF0sISFvJiZpKG8pKTohMSk6KC9eKGlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvLnRlc3Qocik/IXQuZGlzYWJsZWQ6ImEiPT09cj90LmhyZWZ8fHM6cykmJmkodCl9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZS5leHByLmZpbHRlcnMudmlzaWJsZSh0KSYmIWUodCkucGFyZW50cygpLmFkZEJhY2soKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4iaGlkZGVuIj09PWUuY3NzKHRoaXMsInZpc2liaWxpdHkiKX0pLmxlbmd0aH1mdW5jdGlvbiBzKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWxlbWVudC52YWwoKTtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9yZWZyZXNoKCksdCE9PXRoaXMuZWxlbWVudC52YWwoKSYmdGhpcy5fdHJpZ2dlcigiY2hhbmdlIil9fWUudWk9ZS51aXx8e30sZS5leHRlbmQoZS51aSx7dmVyc2lvbjoiMS4xMS40IixrZXlDb2RlOntCQUNLU1BBQ0U6OCxDT01NQToxODgsREVMRVRFOjQ2LERPV046NDAsRU5EOjM1LEVOVEVSOjEzLEVTQ0FQRToyNyxIT01FOjM2LExFRlQ6MzcsUEFHRV9ET1dOOjM0LFBBR0VfVVA6MzMsUEVSSU9EOjE5MCxSSUdIVDozOSxTUEFDRTozMixUQUI6OSxVUDozOH19KSxlLmZuLmV4dGVuZCh7c2Nyb2xsUGFyZW50OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuY3NzKCJwb3NpdGlvbiIpLHM9ImFic29sdXRlIj09PWksbj10Py8oYXV0b3xzY3JvbGx8aGlkZGVuKS86LyhhdXRvfHNjcm9sbCkvLGE9dGhpcy5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtyZXR1cm4gcyYmInN0YXRpYyI9PT10LmNzcygicG9zaXRpb24iKT8hMTpuLnRlc3QodC5jc3MoIm92ZXJmbG93IikrdC5jc3MoIm92ZXJmbG93LXkiKSt0LmNzcygib3ZlcmZsb3cteCIpKX0pLmVxKDApO3JldHVybiJmaXhlZCIhPT1pJiZhLmxlbmd0aD9hOmUodGhpc1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCl9LHVuaXF1ZUlkOmZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5pZHx8KHRoaXMuaWQ9InVpLWlkLSIrICsrZSl9KX19KCkscmVtb3ZlVW5pcXVlSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7L151aS1pZC1cZCskLy50ZXN0KHRoaXMuaWQpJiZlKHRoaXMpLnJlbW92ZUF0dHIoImlkIil9KX19KSxlLmV4dGVuZChlLmV4cHJbIjoiXSx7ZGF0YTplLmV4cHIuY3JlYXRlUHNldWRvP2UuZXhwci5jcmVhdGVQc2V1ZG8oZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiEhZS5kYXRhKGksdCl9fSk6ZnVuY3Rpb24odCxpLHMpe3JldHVybiEhZS5kYXRhKHQsc1szXSl9LGZvY3VzYWJsZTpmdW5jdGlvbihpKXtyZXR1cm4gdChpLCFpc05hTihlLmF0dHIoaSwidGFiaW5kZXgiKSkpfSx0YWJiYWJsZTpmdW5jdGlvbihpKXt2YXIgcz1lLmF0dHIoaSwidGFiaW5kZXgiKSxuPWlzTmFOKHMpO3JldHVybihufHxzPj0wKSYmdChpLCFuKX19KSxlKCI8YT4iKS5vdXRlcldpZHRoKDEpLmpxdWVyeXx8ZS5lYWNoKFsiV2lkdGgiLCJIZWlnaHQiXSxmdW5jdGlvbih0LGkpe2Z1bmN0aW9uIHModCxpLHMsYSl7cmV0dXJuIGUuZWFjaChuLGZ1bmN0aW9uKCl7aS09cGFyc2VGbG9hdChlLmNzcyh0LCJwYWRkaW5nIit0aGlzKSl8fDAscyYmKGktPXBhcnNlRmxvYXQoZS5jc3ModCwiYm9yZGVyIit0aGlzKyJXaWR0aCIpKXx8MCksYSYmKGktPXBhcnNlRmxvYXQoZS5jc3ModCwibWFyZ2luIit0aGlzKSl8fDApfSksaX12YXIgbj0iV2lkdGgiPT09aT9bIkxlZnQiLCJSaWdodCJdOlsiVG9wIiwiQm90dG9tIl0sYT1pLnRvTG93ZXJDYXNlKCksbz17aW5uZXJXaWR0aDplLmZuLmlubmVyV2lkdGgsaW5uZXJIZWlnaHQ6ZS5mbi5pbm5lckhlaWdodCxvdXRlcldpZHRoOmUuZm4ub3V0ZXJXaWR0aCxvdXRlckhlaWdodDplLmZuLm91dGVySGVpZ2h0fTtlLmZuWyJpbm5lciIraV09ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXQ/b1siaW5uZXIiK2ldLmNhbGwodGhpcyk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5jc3MoYSxzKHRoaXMsdCkrInB4Iil9KX0sZS5mblsib3V0ZXIiK2ldPWZ1bmN0aW9uKHQsbil7cmV0dXJuIm51bWJlciIhPXR5cGVvZiB0P29bIm91dGVyIitpXS5jYWxsKHRoaXMsdCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5jc3MoYSxzKHRoaXMsdCwhMCxuKSsicHgiKX0pfX0pLGUuZm4uYWRkQmFja3x8KGUuZm4uYWRkQmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9KSxlKCI8YT4iKS5kYXRhKCJhLWIiLCJhIikucmVtb3ZlRGF0YSgiYS1iIikuZGF0YSgiYS1iIikmJihlLmZuLnJlbW92ZURhdGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3QuY2FsbCh0aGlzLGUuY2FtZWxDYXNlKGkpKTp0LmNhbGwodGhpcyl9fShlLmZuLnJlbW92ZURhdGEpKSxlLnVpLmllPSEhL21zaWUgW1x3Ll0rLy5leGVjKG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSksZS5mbi5leHRlbmQoe2ZvY3VzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihpLHMpe3JldHVybiJudW1iZXIiPT10eXBlb2YgaT90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlKHQpLmZvY3VzKCkscyYmcy5jYWxsKHQpfSxpKX0pOnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oZS5mbi5mb2N1cyksZGlzYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPSJvbnNlbGVjdHN0YXJ0ImluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpPyJzZWxlY3RzdGFydCI6Im1vdXNlZG93biI7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmluZChlKyIudWktZGlzYWJsZVNlbGVjdGlvbiIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpfSl9fSgpLGVuYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuYmluZCgiLnVpLWRpc2FibGVTZWxlY3Rpb24iKX0sekluZGV4OmZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpcmV0dXJuIHRoaXMuY3NzKCJ6SW5kZXgiLHQpO2lmKHRoaXMubGVuZ3RoKWZvcih2YXIgaSxzLG49ZSh0aGlzWzBdKTtuLmxlbmd0aCYmblswXSE9PWRvY3VtZW50Oyl7aWYoaT1uLmNzcygicG9zaXRpb24iKSwoImFic29sdXRlIj09PWl8fCJyZWxhdGl2ZSI9PT1pfHwiZml4ZWQiPT09aSkmJihzPXBhcnNlSW50KG4uY3NzKCJ6SW5kZXgiKSwxMCksIWlzTmFOKHMpJiYwIT09cykpcmV0dXJuIHM7bj1uLnBhcmVudCgpfXJldHVybiAwfX0pLGUudWkucGx1Z2luPXthZGQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGE9ZS51aVt0XS5wcm90b3R5cGU7Zm9yKG4gaW4gcylhLnBsdWdpbnNbbl09YS5wbHVnaW5zW25dfHxbXSxhLnBsdWdpbnNbbl0ucHVzaChbaSxzW25dXSl9LGNhbGw6ZnVuY3Rpb24oZSx0LGkscyl7dmFyIG4sYT1lLnBsdWdpbnNbdF07aWYoYSYmKHN8fGUuZWxlbWVudFswXS5wYXJlbnROb2RlJiYxMSE9PWUuZWxlbWVudFswXS5wYXJlbnROb2RlLm5vZGVUeXBlKSlmb3Iobj0wO2EubGVuZ3RoPm47bisrKWUub3B0aW9uc1thW25dWzBdXSYmYVtuXVsxXS5hcHBseShlLmVsZW1lbnQsaSl9fTt2YXIgbj0wLGE9QXJyYXkucHJvdG90eXBlLnNsaWNlO2UuY2xlYW5EYXRhPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihpKXt2YXIgcyxuLGE7Zm9yKGE9MDtudWxsIT0obj1pW2FdKTthKyspdHJ5e3M9ZS5fZGF0YShuLCJldmVudHMiKSxzJiZzLnJlbW92ZSYmZShuKS50cmlnZ2VySGFuZGxlcigicmVtb3ZlIil9Y2F0Y2gobyl7fXQoaSl9fShlLmNsZWFuRGF0YSksZS53aWRnZXQ9ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGEsbyxyLGg9e30sbD10LnNwbGl0KCIuIilbMF07cmV0dXJuIHQ9dC5zcGxpdCgiLiIpWzFdLG49bCsiLSIrdCxzfHwocz1pLGk9ZS5XaWRnZXQpLGUuZXhwclsiOiJdW24udG9Mb3dlckNhc2UoKV09ZnVuY3Rpb24odCl7cmV0dXJuISFlLmRhdGEodCxuKX0sZVtsXT1lW2xdfHx7fSxhPWVbbF1bdF0sbz1lW2xdW3RdPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2NyZWF0ZVdpZGdldD8oYXJndW1lbnRzLmxlbmd0aCYmdGhpcy5fY3JlYXRlV2lkZ2V0KGUsdCksdm9pZCAwKTpuZXcgbyhlLHQpfSxlLmV4dGVuZChvLGEse3ZlcnNpb246cy52ZXJzaW9uLF9wcm90bzplLmV4dGVuZCh7fSxzKSxfY2hpbGRDb25zdHJ1Y3RvcnM6W119KSxyPW5ldyBpLHIub3B0aW9ucz1lLndpZGdldC5leHRlbmQoe30sci5vcHRpb25zKSxlLmVhY2gocyxmdW5jdGlvbih0LHMpe3JldHVybiBlLmlzRnVuY3Rpb24ocyk/KGhbdF09ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbigpe3JldHVybiBpLnByb3RvdHlwZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LG49ZnVuY3Rpb24oZSl7cmV0dXJuIGkucHJvdG90eXBlW3RdLmFwcGx5KHRoaXMsZSl9O3JldHVybiBmdW5jdGlvbigpe3ZhciB0LGk9dGhpcy5fc3VwZXIsYT10aGlzLl9zdXBlckFwcGx5O3JldHVybiB0aGlzLl9zdXBlcj1lLHRoaXMuX3N1cGVyQXBwbHk9bix0PXMuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX3N1cGVyPWksdGhpcy5fc3VwZXJBcHBseT1hLHR9fSgpLHZvaWQgMCk6KGhbdF09cyx2b2lkIDApfSksby5wcm90b3R5cGU9ZS53aWRnZXQuZXh0ZW5kKHIse3dpZGdldEV2ZW50UHJlZml4OmE/ci53aWRnZXRFdmVudFByZWZpeHx8dDp0fSxoLHtjb25zdHJ1Y3RvcjpvLG5hbWVzcGFjZTpsLHdpZGdldE5hbWU6dCx3aWRnZXRGdWxsTmFtZTpufSksYT8oZS5lYWNoKGEuX2NoaWxkQ29uc3RydWN0b3JzLGZ1bmN0aW9uKHQsaSl7dmFyIHM9aS5wcm90b3R5cGU7ZS53aWRnZXQocy5uYW1lc3BhY2UrIi4iK3Mud2lkZ2V0TmFtZSxvLGkuX3Byb3RvKX0pLGRlbGV0ZSBhLl9jaGlsZENvbnN0cnVjdG9ycyk6aS5fY2hpbGRDb25zdHJ1Y3RvcnMucHVzaChvKSxlLndpZGdldC5icmlkZ2UodCxvKSxvfSxlLndpZGdldC5leHRlbmQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBpLHMsbj1hLmNhbGwoYXJndW1lbnRzLDEpLG89MCxyPW4ubGVuZ3RoO3I+bztvKyspZm9yKGkgaW4gbltvXSlzPW5bb11baV0sbltvXS5oYXNPd25Qcm9wZXJ0eShpKSYmdm9pZCAwIT09cyYmKHRbaV09ZS5pc1BsYWluT2JqZWN0KHMpP2UuaXNQbGFpbk9iamVjdCh0W2ldKT9lLndpZGdldC5leHRlbmQoe30sdFtpXSxzKTplLndpZGdldC5leHRlbmQoe30scyk6cyk7cmV0dXJuIHR9LGUud2lkZ2V0LmJyaWRnZT1mdW5jdGlvbih0LGkpe3ZhciBzPWkucHJvdG90eXBlLndpZGdldEZ1bGxOYW1lfHx0O2UuZm5bdF09ZnVuY3Rpb24obil7dmFyIG89InN0cmluZyI9PXR5cGVvZiBuLHI9YS5jYWxsKGFyZ3VtZW50cywxKSxoPXRoaXM7cmV0dXJuIG8/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGksYT1lLmRhdGEodGhpcyxzKTtyZXR1cm4iaW5zdGFuY2UiPT09bj8oaD1hLCExKTphP2UuaXNGdW5jdGlvbihhW25dKSYmIl8iIT09bi5jaGFyQXQoMCk/KGk9YVtuXS5hcHBseShhLHIpLGkhPT1hJiZ2b2lkIDAhPT1pPyhoPWkmJmkuanF1ZXJ5P2gucHVzaFN0YWNrKGkuZ2V0KCkpOmksITEpOnZvaWQgMCk6ZS5lcnJvcigibm8gc3VjaCBtZXRob2QgJyIrbisiJyBmb3IgIit0KyIgd2lkZ2V0IGluc3RhbmNlIik6ZS5lcnJvcigiY2Fubm90IGNhbGwgbWV0aG9kcyBvbiAiK3QrIiBwcmlvciB0byBpbml0aWFsaXphdGlvbjsgIisiYXR0ZW1wdGVkIHRvIGNhbGwgbWV0aG9kICciK24rIiciKX0pOihyLmxlbmd0aCYmKG49ZS53aWRnZXQuZXh0ZW5kLmFwcGx5KG51bGwsW25dLmNvbmNhdChyKSkpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUuZGF0YSh0aGlzLHMpO3Q/KHQub3B0aW9uKG58fHt9KSx0Ll9pbml0JiZ0Ll9pbml0KCkpOmUuZGF0YSh0aGlzLHMsbmV3IGkobix0aGlzKSl9KSksaH19LGUuV2lkZ2V0PWZ1bmN0aW9uKCl7fSxlLldpZGdldC5fY2hpbGRDb25zdHJ1Y3RvcnM9W10sZS5XaWRnZXQucHJvdG90eXBlPXt3aWRnZXROYW1lOiJ3aWRnZXQiLHdpZGdldEV2ZW50UHJlZml4OiIiLGRlZmF1bHRFbGVtZW50OiI8ZGl2PiIsb3B0aW9uczp7ZGlzYWJsZWQ6ITEsY3JlYXRlOm51bGx9LF9jcmVhdGVXaWRnZXQ6ZnVuY3Rpb24odCxpKXtpPWUoaXx8dGhpcy5kZWZhdWx0RWxlbWVudHx8dGhpcylbMF0sdGhpcy5lbGVtZW50PWUoaSksdGhpcy51dWlkPW4rKyx0aGlzLmV2ZW50TmFtZXNwYWNlPSIuIit0aGlzLndpZGdldE5hbWUrdGhpcy51dWlkLHRoaXMuYmluZGluZ3M9ZSgpLHRoaXMuaG92ZXJhYmxlPWUoKSx0aGlzLmZvY3VzYWJsZT1lKCksaSE9PXRoaXMmJihlLmRhdGEoaSx0aGlzLndpZGdldEZ1bGxOYW1lLHRoaXMpLHRoaXMuX29uKCEwLHRoaXMuZWxlbWVudCx7cmVtb3ZlOmZ1bmN0aW9uKGUpe2UudGFyZ2V0PT09aSYmdGhpcy5kZXN0cm95KCl9fSksdGhpcy5kb2N1bWVudD1lKGkuc3R5bGU/aS5vd25lckRvY3VtZW50OmkuZG9jdW1lbnR8fGkpLHRoaXMud2luZG93PWUodGhpcy5kb2N1bWVudFswXS5kZWZhdWx0Vmlld3x8dGhpcy5kb2N1bWVudFswXS5wYXJlbnRXaW5kb3cpKSx0aGlzLm9wdGlvbnM9ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyx0aGlzLl9nZXRDcmVhdGVPcHRpb25zKCksdCksdGhpcy5fY3JlYXRlKCksdGhpcy5fdHJpZ2dlcigiY3JlYXRlIixudWxsLHRoaXMuX2dldENyZWF0ZUV2ZW50RGF0YSgpKSx0aGlzLl9pbml0KCl9LF9nZXRDcmVhdGVPcHRpb25zOmUubm9vcCxfZ2V0Q3JlYXRlRXZlbnREYXRhOmUubm9vcCxfY3JlYXRlOmUubm9vcCxfaW5pdDplLm5vb3AsZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX2Rlc3Ryb3koKSx0aGlzLmVsZW1lbnQudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZURhdGEodGhpcy53aWRnZXRGdWxsTmFtZSkucmVtb3ZlRGF0YShlLmNhbWVsQ2FzZSh0aGlzLndpZGdldEZ1bGxOYW1lKSksdGhpcy53aWRnZXQoKS51bmJpbmQodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLnJlbW92ZUNsYXNzKHRoaXMud2lkZ2V0RnVsbE5hbWUrIi1kaXNhYmxlZCAiKyJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHRoaXMuYmluZGluZ3MudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxfZGVzdHJveTplLm5vb3Asd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhLG89dDtpZigwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7aWYoInN0cmluZyI9PXR5cGVvZiB0KWlmKG89e30scz10LnNwbGl0KCIuIiksdD1zLnNoaWZ0KCkscy5sZW5ndGgpe2ZvcihuPW9bdF09ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1t0XSksYT0wO3MubGVuZ3RoLTE+YTthKyspbltzW2FdXT1uW3NbYV1dfHx7fSxuPW5bc1thXV07aWYodD1zLnBvcCgpLDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1uW3RdP251bGw6blt0XTtuW3RdPWl9ZWxzZXtpZigxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09dGhpcy5vcHRpb25zW3RdP251bGw6dGhpcy5vcHRpb25zW3RdO29bdF09aX1yZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyhvKSx0aGlzfSxfc2V0T3B0aW9uczpmdW5jdGlvbihlKXt2YXIgdDtmb3IodCBpbiBlKXRoaXMuX3NldE9wdGlvbih0LGVbdF0pO3JldHVybiB0aGlzfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMub3B0aW9uc1tlXT10LCJkaXNhYmxlZCI9PT1lJiYodGhpcy53aWRnZXQoKS50b2dnbGVDbGFzcyh0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQiLCEhdCksdCYmKHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpKSksdGhpc30sZW5hYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiExfSl9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9ucyh7ZGlzYWJsZWQ6ITB9KX0sX29uOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbixhPXRoaXM7ImJvb2xlYW4iIT10eXBlb2YgdCYmKHM9aSxpPXQsdD0hMSkscz8oaT1uPWUoaSksdGhpcy5iaW5kaW5ncz10aGlzLmJpbmRpbmdzLmFkZChpKSk6KHM9aSxpPXRoaXMuZWxlbWVudCxuPXRoaXMud2lkZ2V0KCkpLGUuZWFjaChzLGZ1bmN0aW9uKHMsbyl7ZnVuY3Rpb24gcigpe3JldHVybiB0fHxhLm9wdGlvbnMuZGlzYWJsZWQhPT0hMCYmIWUodGhpcykuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIik/KCJzdHJpbmciPT10eXBlb2Ygbz9hW29dOm8pLmFwcGx5KGEsYXJndW1lbnRzKTp2b2lkIDB9InN0cmluZyIhPXR5cGVvZiBvJiYoci5ndWlkPW8uZ3VpZD1vLmd1aWR8fHIuZ3VpZHx8ZS5ndWlkKyspO3ZhciBoPXMubWF0Y2goL14oW1x3Oi1dKilccyooLiopJC8pLGw9aFsxXSthLmV2ZW50TmFtZXNwYWNlLHU9aFsyXTt1P24uZGVsZWdhdGUodSxsLHIpOmkuYmluZChsLHIpfSl9LF9vZmY6ZnVuY3Rpb24odCxpKXtpPShpfHwiIikuc3BsaXQoIiAiKS5qb2luKHRoaXMuZXZlbnROYW1lc3BhY2UrIiAiKSt0aGlzLmV2ZW50TmFtZXNwYWNlLHQudW5iaW5kKGkpLnVuZGVsZWdhdGUoaSksdGhpcy5iaW5kaW5ncz1lKHRoaXMuYmluZGluZ3Mubm90KHQpLmdldCgpKSx0aGlzLmZvY3VzYWJsZT1lKHRoaXMuZm9jdXNhYmxlLm5vdCh0KS5nZXQoKSksdGhpcy5ob3ZlcmFibGU9ZSh0aGlzLmhvdmVyYWJsZS5ub3QodCkuZ2V0KCkpfSxfZGVsYXk6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKCl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgZT9zW2VdOmUpLmFwcGx5KHMsYXJndW1lbnRzKX12YXIgcz10aGlzO3JldHVybiBzZXRUaW1lb3V0KGksdHx8MCl9LF9ob3ZlcmFibGU6ZnVuY3Rpb24odCl7dGhpcy5ob3ZlcmFibGU9dGhpcy5ob3ZlcmFibGUuYWRkKHQpLHRoaXMuX29uKHQse21vdXNlZW50ZXI6ZnVuY3Rpb24odCl7ZSh0LmN1cnJlbnRUYXJnZXQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSxtb3VzZWxlYXZlOmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKX19KX0sX2ZvY3VzYWJsZTpmdW5jdGlvbih0KXt0aGlzLmZvY3VzYWJsZT10aGlzLmZvY3VzYWJsZS5hZGQodCksdGhpcy5fb24odCx7Zm9jdXNpbjpmdW5jdGlvbih0KXtlKHQuY3VycmVudFRhcmdldCkuYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3VzIil9LGZvY3Vzb3V0OmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX19KX0sX3RyaWdnZXI6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGEsbz10aGlzLm9wdGlvbnNbdF07aWYocz1zfHx7fSxpPWUuRXZlbnQoaSksaS50eXBlPSh0PT09dGhpcy53aWRnZXRFdmVudFByZWZpeD90OnRoaXMud2lkZ2V0RXZlbnRQcmVmaXgrdCkudG9Mb3dlckNhc2UoKSxpLnRhcmdldD10aGlzLmVsZW1lbnRbMF0sYT1pLm9yaWdpbmFsRXZlbnQpZm9yKG4gaW4gYSluIGluIGl8fChpW25dPWFbbl0pO3JldHVybiB0aGlzLmVsZW1lbnQudHJpZ2dlcihpLHMpLCEoZS5pc0Z1bmN0aW9uKG8pJiZvLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbaV0uY29uY2F0KHMpKT09PSExfHxpLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19LGUuZWFjaCh7c2hvdzoiZmFkZUluIixoaWRlOiJmYWRlT3V0In0sZnVuY3Rpb24odCxpKXtlLldpZGdldC5wcm90b3R5cGVbIl8iK3RdPWZ1bmN0aW9uKHMsbixhKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPXtlZmZlY3Q6bn0pO3ZhciBvLHI9bj9uPT09ITB8fCJudW1iZXIiPT10eXBlb2Ygbj9pOm4uZWZmZWN0fHxpOnQ7bj1ufHx7fSwibnVtYmVyIj09dHlwZW9mIG4mJihuPXtkdXJhdGlvbjpufSksbz0hZS5pc0VtcHR5T2JqZWN0KG4pLG4uY29tcGxldGU9YSxuLmRlbGF5JiZzLmRlbGF5KG4uZGVsYXkpLG8mJmUuZWZmZWN0cyYmZS5lZmZlY3RzLmVmZmVjdFtyXT9zW3RdKG4pOnIhPT10JiZzW3JdP3Nbcl0obi5kdXJhdGlvbixuLmVhc2luZyxhKTpzLnF1ZXVlKGZ1bmN0aW9uKGkpe2UodGhpcylbdF0oKSxhJiZhLmNhbGwoc1swXSksaSgpfSl9fSksZS53aWRnZXQ7dmFyIG89ITE7ZShkb2N1bWVudCkubW91c2V1cChmdW5jdGlvbigpe289ITF9KSxlLndpZGdldCgidWkubW91c2UiLHt2ZXJzaW9uOiIxLjExLjQiLG9wdGlvbnM6e2NhbmNlbDoiaW5wdXQsdGV4dGFyZWEsYnV0dG9uLHNlbGVjdCxvcHRpb24iLGRpc3RhbmNlOjEsZGVsYXk6MH0sX21vdXNlSW5pdDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5lbGVtZW50LmJpbmQoIm1vdXNlZG93bi4iK3RoaXMud2lkZ2V0TmFtZSxmdW5jdGlvbihlKXtyZXR1cm4gdC5fbW91c2VEb3duKGUpfSkuYmluZCgiY2xpY2suIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oaSl7cmV0dXJuITA9PT1lLmRhdGEoaS50YXJnZXQsdC53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKT8oZS5yZW1vdmVEYXRhKGkudGFyZ2V0LHQud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiksaS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSwhMSk6dm9pZCAwfSksdGhpcy5zdGFydGVkPSExfSxfbW91c2VEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnVuYmluZCgiLiIrdGhpcy53aWRnZXROYW1lKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSYmdGhpcy5kb2N1bWVudC51bmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkudW5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSl9LF9tb3VzZURvd246ZnVuY3Rpb24odCl7aWYoIW8pe3RoaXMuX21vdXNlTW92ZWQ9ITEsdGhpcy5fbW91c2VTdGFydGVkJiZ0aGlzLl9tb3VzZVVwKHQpLHRoaXMuX21vdXNlRG93bkV2ZW50PXQ7dmFyIGk9dGhpcyxzPTE9PT10LndoaWNoLG49InN0cmluZyI9PXR5cGVvZiB0aGlzLm9wdGlvbnMuY2FuY2VsJiZ0LnRhcmdldC5ub2RlTmFtZT9lKHQudGFyZ2V0KS5jbG9zZXN0KHRoaXMub3B0aW9ucy5jYW5jZWwpLmxlbmd0aDohMTtyZXR1cm4gcyYmIW4mJnRoaXMuX21vdXNlQ2FwdHVyZSh0KT8odGhpcy5tb3VzZURlbGF5TWV0PSF0aGlzLm9wdGlvbnMuZGVsYXksdGhpcy5tb3VzZURlbGF5TWV0fHwodGhpcy5fbW91c2VEZWxheVRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLm1vdXNlRGVsYXlNZXQ9ITB9LHRoaXMub3B0aW9ucy5kZWxheSkpLHRoaXMuX21vdXNlRGlzdGFuY2VNZXQodCkmJnRoaXMuX21vdXNlRGVsYXlNZXQodCkmJih0aGlzLl9tb3VzZVN0YXJ0ZWQ9dGhpcy5fbW91c2VTdGFydCh0KSE9PSExLCF0aGlzLl9tb3VzZVN0YXJ0ZWQpPyh0LnByZXZlbnREZWZhdWx0KCksITApOighMD09PWUuZGF0YSh0LnRhcmdldCx0aGlzLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpJiZlLnJlbW92ZURhdGEodC50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZT1mdW5jdGlvbihlKXtyZXR1cm4gaS5fbW91c2VNb3ZlKGUpfSx0aGlzLl9tb3VzZVVwRGVsZWdhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGkuX21vdXNlVXAoZSl9LHRoaXMuZG9jdW1lbnQuYmluZCgibW91c2Vtb3ZlLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlKS5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSksdC5wcmV2ZW50RGVmYXVsdCgpLG89ITAsITApKTohMH19LF9tb3VzZU1vdmU6ZnVuY3Rpb24odCl7aWYodGhpcy5fbW91c2VNb3ZlZCl7aWYoZS51aS5pZSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fDk+ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKSYmIXQuYnV0dG9uKXJldHVybiB0aGlzLl9tb3VzZVVwKHQpO2lmKCF0LndoaWNoKXJldHVybiB0aGlzLl9tb3VzZVVwKHQpfXJldHVybih0LndoaWNofHx0LmJ1dHRvbikmJih0aGlzLl9tb3VzZU1vdmVkPSEwKSx0aGlzLl9tb3VzZVN0YXJ0ZWQ/KHRoaXMuX21vdXNlRHJhZyh0KSx0LnByZXZlbnREZWZhdWx0KCkpOih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KHQpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KHQpJiYodGhpcy5fbW91c2VTdGFydGVkPXRoaXMuX21vdXNlU3RhcnQodGhpcy5fbW91c2VEb3duRXZlbnQsdCkhPT0hMSx0aGlzLl9tb3VzZVN0YXJ0ZWQ/dGhpcy5fbW91c2VEcmFnKHQpOnRoaXMuX21vdXNlVXAodCkpLCF0aGlzLl9tb3VzZVN0YXJ0ZWQpfSxfbW91c2VVcDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kb2N1bWVudC51bmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkudW5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSksdGhpcy5fbW91c2VTdGFydGVkJiYodGhpcy5fbW91c2VTdGFydGVkPSExLHQudGFyZ2V0PT09dGhpcy5fbW91c2VEb3duRXZlbnQudGFyZ2V0JiZlLmRhdGEodC50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiLCEwKSx0aGlzLl9tb3VzZVN0b3AodCkpLG89ITEsITF9LF9tb3VzZURpc3RhbmNlTWV0OmZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLm1heChNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5wYWdlWC1lLnBhZ2VYKSxNYXRoLmFicyh0aGlzLl9tb3VzZURvd25FdmVudC5wYWdlWS1lLnBhZ2VZKSk+PXRoaXMub3B0aW9ucy5kaXN0YW5jZX0sX21vdXNlRGVsYXlNZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb3VzZURlbGF5TWV0fSxfbW91c2VTdGFydDpmdW5jdGlvbigpe30sX21vdXNlRHJhZzpmdW5jdGlvbigpe30sX21vdXNlU3RvcDpmdW5jdGlvbigpe30sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbigpe3JldHVybiEwfX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHQsaSl7cmV0dXJuW3BhcnNlRmxvYXQoZVswXSkqKHAudGVzdChlWzBdKT90LzEwMDoxKSxwYXJzZUZsb2F0KGVbMV0pKihwLnRlc3QoZVsxXSk/aS8xMDA6MSldfWZ1bmN0aW9uIGkodCxpKXtyZXR1cm4gcGFyc2VJbnQoZS5jc3ModCxpKSwxMCl8fDB9ZnVuY3Rpb24gcyh0KXt2YXIgaT10WzBdO3JldHVybiA5PT09aS5ub2RlVHlwZT97d2lkdGg6dC53aWR0aCgpLGhlaWdodDp0LmhlaWdodCgpLG9mZnNldDp7dG9wOjAsbGVmdDowfX06ZS5pc1dpbmRvdyhpKT97d2lkdGg6dC53aWR0aCgpLGhlaWdodDp0LmhlaWdodCgpLG9mZnNldDp7dG9wOnQuc2Nyb2xsVG9wKCksbGVmdDp0LnNjcm9sbExlZnQoKX19OmkucHJldmVudERlZmF1bHQ/e3dpZHRoOjAsaGVpZ2h0OjAsb2Zmc2V0Ont0b3A6aS5wYWdlWSxsZWZ0OmkucGFnZVh9fTp7d2lkdGg6dC5vdXRlcldpZHRoKCksaGVpZ2h0OnQub3V0ZXJIZWlnaHQoKSxvZmZzZXQ6dC5vZmZzZXQoKX19ZS51aT1lLnVpfHx7fTt2YXIgbixhLG89TWF0aC5tYXgscj1NYXRoLmFicyxoPU1hdGgucm91bmQsbD0vbGVmdHxjZW50ZXJ8cmlnaHQvLHU9L3RvcHxjZW50ZXJ8Ym90dG9tLyxkPS9bXCtcLV1cZCsoXC5bXGRdKyk/JT8vLGM9L15cdysvLHA9LyUkLyxmPWUuZm4ucG9zaXRpb247ZS5wb3NpdGlvbj17c2Nyb2xsYmFyV2lkdGg6ZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1uKXJldHVybiBuO3ZhciB0LGkscz1lKCI8ZGl2IHN0eWxlPSdkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjUwcHg7aGVpZ2h0OjUwcHg7b3ZlcmZsb3c6aGlkZGVuOyc+PGRpdiBzdHlsZT0naGVpZ2h0OjEwMHB4O3dpZHRoOmF1dG87Jz48L2Rpdj48L2Rpdj4iKSxhPXMuY2hpbGRyZW4oKVswXTtyZXR1cm4gZSgiYm9keSIpLmFwcGVuZChzKSx0PWEub2Zmc2V0V2lkdGgscy5jc3MoIm92ZXJmbG93Iiwic2Nyb2xsIiksaT1hLm9mZnNldFdpZHRoLHQ9PT1pJiYoaT1zWzBdLmNsaWVudFdpZHRoKSxzLnJlbW92ZSgpLG49dC1pfSxnZXRTY3JvbGxJbmZvOmZ1bmN0aW9uKHQpe3ZhciBpPXQuaXNXaW5kb3d8fHQuaXNEb2N1bWVudD8iIjp0LmVsZW1lbnQuY3NzKCJvdmVyZmxvdy14Iikscz10LmlzV2luZG93fHx0LmlzRG9jdW1lbnQ/IiI6dC5lbGVtZW50LmNzcygib3ZlcmZsb3cteSIpLG49InNjcm9sbCI9PT1pfHwiYXV0byI9PT1pJiZ0LndpZHRoPHQuZWxlbWVudFswXS5zY3JvbGxXaWR0aCxhPSJzY3JvbGwiPT09c3x8ImF1dG8iPT09cyYmdC5oZWlnaHQ8dC5lbGVtZW50WzBdLnNjcm9sbEhlaWdodDtyZXR1cm57d2lkdGg6YT9lLnBvc2l0aW9uLnNjcm9sbGJhcldpZHRoKCk6MCxoZWlnaHQ6bj9lLnBvc2l0aW9uLnNjcm9sbGJhcldpZHRoKCk6MH19LGdldFdpdGhpbkluZm86ZnVuY3Rpb24odCl7dmFyIGk9ZSh0fHx3aW5kb3cpLHM9ZS5pc1dpbmRvdyhpWzBdKSxuPSEhaVswXSYmOT09PWlbMF0ubm9kZVR5cGU7cmV0dXJue2VsZW1lbnQ6aSxpc1dpbmRvdzpzLGlzRG9jdW1lbnQ6bixvZmZzZXQ6aS5vZmZzZXQoKXx8e2xlZnQ6MCx0b3A6MH0sc2Nyb2xsTGVmdDppLnNjcm9sbExlZnQoKSxzY3JvbGxUb3A6aS5zY3JvbGxUb3AoKSx3aWR0aDpzfHxuP2kud2lkdGgoKTppLm91dGVyV2lkdGgoKSxoZWlnaHQ6c3x8bj9pLmhlaWdodCgpOmkub3V0ZXJIZWlnaHQoKX19fSxlLmZuLnBvc2l0aW9uPWZ1bmN0aW9uKG4pe2lmKCFufHwhbi5vZilyZXR1cm4gZi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7bj1lLmV4dGVuZCh7fSxuKTt2YXIgcCxtLGcsdix5LGIsXz1lKG4ub2YpLHg9ZS5wb3NpdGlvbi5nZXRXaXRoaW5JbmZvKG4ud2l0aGluKSx3PWUucG9zaXRpb24uZ2V0U2Nyb2xsSW5mbyh4KSxrPShuLmNvbGxpc2lvbnx8ImZsaXAiKS5zcGxpdCgiICIpLFQ9e307cmV0dXJuIGI9cyhfKSxfWzBdLnByZXZlbnREZWZhdWx0JiYobi5hdD0ibGVmdCB0b3AiKSxtPWIud2lkdGgsZz1iLmhlaWdodCx2PWIub2Zmc2V0LHk9ZS5leHRlbmQoe30sdiksZS5lYWNoKFsibXkiLCJhdCJdLGZ1bmN0aW9uKCl7dmFyIGUsdCxpPShuW3RoaXNdfHwiIikuc3BsaXQoIiAiKTsxPT09aS5sZW5ndGgmJihpPWwudGVzdChpWzBdKT9pLmNvbmNhdChbImNlbnRlciJdKTp1LnRlc3QoaVswXSk/WyJjZW50ZXIiXS5jb25jYXQoaSk6WyJjZW50ZXIiLCJjZW50ZXIiXSksaVswXT1sLnRlc3QoaVswXSk/aVswXToiY2VudGVyIixpWzFdPXUudGVzdChpWzFdKT9pWzFdOiJjZW50ZXIiLGU9ZC5leGVjKGlbMF0pLHQ9ZC5leGVjKGlbMV0pLFRbdGhpc109W2U/ZVswXTowLHQ/dFswXTowXSxuW3RoaXNdPVtjLmV4ZWMoaVswXSlbMF0sYy5leGVjKGlbMV0pWzBdXX0pLDE9PT1rLmxlbmd0aCYmKGtbMV09a1swXSksInJpZ2h0Ij09PW4uYXRbMF0/eS5sZWZ0Kz1tOiJjZW50ZXIiPT09bi5hdFswXSYmKHkubGVmdCs9bS8yKSwiYm90dG9tIj09PW4uYXRbMV0/eS50b3ArPWc6ImNlbnRlciI9PT1uLmF0WzFdJiYoeS50b3ArPWcvMikscD10KFQuYXQsbSxnKSx5LmxlZnQrPXBbMF0seS50b3ArPXBbMV0sdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIHMsbCx1PWUodGhpcyksZD11Lm91dGVyV2lkdGgoKSxjPXUub3V0ZXJIZWlnaHQoKSxmPWkodGhpcywibWFyZ2luTGVmdCIpLGI9aSh0aGlzLCJtYXJnaW5Ub3AiKSxEPWQrZitpKHRoaXMsIm1hcmdpblJpZ2h0Iikrdy53aWR0aCxTPWMrYitpKHRoaXMsIm1hcmdpbkJvdHRvbSIpK3cuaGVpZ2h0LE49ZS5leHRlbmQoe30seSksTT10KFQubXksdS5vdXRlcldpZHRoKCksdS5vdXRlckhlaWdodCgpKTsicmlnaHQiPT09bi5teVswXT9OLmxlZnQtPWQ6ImNlbnRlciI9PT1uLm15WzBdJiYoTi5sZWZ0LT1kLzIpLCJib3R0b20iPT09bi5teVsxXT9OLnRvcC09YzoiY2VudGVyIj09PW4ubXlbMV0mJihOLnRvcC09Yy8yKSxOLmxlZnQrPU1bMF0sTi50b3ArPU1bMV0sYXx8KE4ubGVmdD1oKE4ubGVmdCksTi50b3A9aChOLnRvcCkpLHM9e21hcmdpbkxlZnQ6ZixtYXJnaW5Ub3A6Yn0sZS5lYWNoKFsibGVmdCIsInRvcCJdLGZ1bmN0aW9uKHQsaSl7ZS51aS5wb3NpdGlvbltrW3RdXSYmZS51aS5wb3NpdGlvbltrW3RdXVtpXShOLHt0YXJnZXRXaWR0aDptLHRhcmdldEhlaWdodDpnLGVsZW1XaWR0aDpkLGVsZW1IZWlnaHQ6Yyxjb2xsaXNpb25Qb3NpdGlvbjpzLGNvbGxpc2lvbldpZHRoOkQsY29sbGlzaW9uSGVpZ2h0OlMsb2Zmc2V0OltwWzBdK01bMF0scFsxXStNWzFdXSxteTpuLm15LGF0Om4uYXQsd2l0aGluOngsZWxlbTp1fSl9KSxuLnVzaW5nJiYobD1mdW5jdGlvbihlKXt2YXIgdD12LmxlZnQtTi5sZWZ0LGk9dCttLWQscz12LnRvcC1OLnRvcCxhPXMrZy1jLGg9e3RhcmdldDp7ZWxlbWVudDpfLGxlZnQ6di5sZWZ0LHRvcDp2LnRvcCx3aWR0aDptLGhlaWdodDpnfSxlbGVtZW50OntlbGVtZW50OnUsbGVmdDpOLmxlZnQsdG9wOk4udG9wLHdpZHRoOmQsaGVpZ2h0OmN9LGhvcml6b250YWw6MD5pPyJsZWZ0Ijp0PjA/InJpZ2h0IjoiY2VudGVyIix2ZXJ0aWNhbDowPmE/InRvcCI6cz4wPyJib3R0b20iOiJtaWRkbGUifTtkPm0mJm0+cih0K2kpJiYoaC5ob3Jpem9udGFsPSJjZW50ZXIiKSxjPmcmJmc+cihzK2EpJiYoaC52ZXJ0aWNhbD0ibWlkZGxlIiksaC5pbXBvcnRhbnQ9byhyKHQpLHIoaSkpPm8ocihzKSxyKGEpKT8iaG9yaXpvbnRhbCI6InZlcnRpY2FsIixuLnVzaW5nLmNhbGwodGhpcyxlLGgpfSksdS5vZmZzZXQoZS5leHRlbmQoTix7dXNpbmc6bH0pKX0pfSxlLnVpLnBvc2l0aW9uPXtmaXQ6e2xlZnQ6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzPXQud2l0aGluLG49cy5pc1dpbmRvdz9zLnNjcm9sbExlZnQ6cy5vZmZzZXQubGVmdCxhPXMud2lkdGgscj1lLmxlZnQtdC5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5MZWZ0LGg9bi1yLGw9cit0LmNvbGxpc2lvbldpZHRoLWEtbjt0LmNvbGxpc2lvbldpZHRoPmE/aD4wJiYwPj1sPyhpPWUubGVmdCtoK3QuY29sbGlzaW9uV2lkdGgtYS1uLGUubGVmdCs9aC1pKTplLmxlZnQ9bD4wJiYwPj1oP246aD5sP24rYS10LmNvbGxpc2lvbldpZHRoOm46aD4wP2UubGVmdCs9aDpsPjA/ZS5sZWZ0LT1sOmUubGVmdD1vKGUubGVmdC1yLGUubGVmdCl9LHRvcDpmdW5jdGlvbihlLHQpe3ZhciBpLHM9dC53aXRoaW4sbj1zLmlzV2luZG93P3Muc2Nyb2xsVG9wOnMub2Zmc2V0LnRvcCxhPXQud2l0aGluLmhlaWdodCxyPWUudG9wLXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wLGg9bi1yLGw9cit0LmNvbGxpc2lvbkhlaWdodC1hLW47dC5jb2xsaXNpb25IZWlnaHQ+YT9oPjAmJjA+PWw/KGk9ZS50b3AraCt0LmNvbGxpc2lvbkhlaWdodC1hLW4sZS50b3ArPWgtaSk6ZS50b3A9bD4wJiYwPj1oP246aD5sP24rYS10LmNvbGxpc2lvbkhlaWdodDpuOmg+MD9lLnRvcCs9aDpsPjA/ZS50b3AtPWw6ZS50b3A9byhlLnRvcC1yLGUudG9wKX19LGZsaXA6e2xlZnQ6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzLG49dC53aXRoaW4sYT1uLm9mZnNldC5sZWZ0K24uc2Nyb2xsTGVmdCxvPW4ud2lkdGgsaD1uLmlzV2luZG93P24uc2Nyb2xsTGVmdDpuLm9mZnNldC5sZWZ0LGw9ZS5sZWZ0LXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCx1PWwtaCxkPWwrdC5jb2xsaXNpb25XaWR0aC1vLWgsYz0ibGVmdCI9PT10Lm15WzBdPy10LmVsZW1XaWR0aDoicmlnaHQiPT09dC5teVswXT90LmVsZW1XaWR0aDowLHA9ImxlZnQiPT09dC5hdFswXT90LnRhcmdldFdpZHRoOiJyaWdodCI9PT10LmF0WzBdPy10LnRhcmdldFdpZHRoOjAsZj0tMip0Lm9mZnNldFswXTswPnU/KGk9ZS5sZWZ0K2MrcCtmK3QuY29sbGlzaW9uV2lkdGgtby1hLCgwPml8fHIodSk+aSkmJihlLmxlZnQrPWMrcCtmKSk6ZD4wJiYocz1lLmxlZnQtdC5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5MZWZ0K2MrcCtmLWgsKHM+MHx8ZD5yKHMpKSYmKGUubGVmdCs9YytwK2YpKX0sdG9wOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuPXQud2l0aGluLGE9bi5vZmZzZXQudG9wK24uc2Nyb2xsVG9wLG89bi5oZWlnaHQsaD1uLmlzV2luZG93P24uc2Nyb2xsVG9wOm4ub2Zmc2V0LnRvcCxsPWUudG9wLXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wLHU9bC1oLGQ9bCt0LmNvbGxpc2lvbkhlaWdodC1vLWgsYz0idG9wIj09PXQubXlbMV0scD1jPy10LmVsZW1IZWlnaHQ6ImJvdHRvbSI9PT10Lm15WzFdP3QuZWxlbUhlaWdodDowLGY9InRvcCI9PT10LmF0WzFdP3QudGFyZ2V0SGVpZ2h0OiJib3R0b20iPT09dC5hdFsxXT8tdC50YXJnZXRIZWlnaHQ6MCxtPS0yKnQub2Zmc2V0WzFdOzA+dT8ocz1lLnRvcCtwK2YrbSt0LmNvbGxpc2lvbkhlaWdodC1vLWEsKDA+c3x8cih1KT5zKSYmKGUudG9wKz1wK2YrbSkpOmQ+MCYmKGk9ZS50b3AtdC5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5Ub3ArcCtmK20taCwoaT4wfHxkPnIoaSkpJiYoZS50b3ArPXArZittKSl9fSxmbGlwZml0OntsZWZ0OmZ1bmN0aW9uKCl7ZS51aS5wb3NpdGlvbi5mbGlwLmxlZnQuYXBwbHkodGhpcyxhcmd1bWVudHMpLGUudWkucG9zaXRpb24uZml0LmxlZnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0b3A6ZnVuY3Rpb24oKXtlLnVpLnBvc2l0aW9uLmZsaXAudG9wLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlLnVpLnBvc2l0aW9uLmZpdC50b3AuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKCl7dmFyIHQsaSxzLG4sbyxyPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0saD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQocj8iZGl2IjoiYm9keSIpLHM9e3Zpc2liaWxpdHk6ImhpZGRlbiIsd2lkdGg6MCxoZWlnaHQ6MCxib3JkZXI6MCxtYXJnaW46MCxiYWNrZ3JvdW5kOiJub25lIn0sciYmZS5leHRlbmQocyx7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OiItMTAwMHB4Iix0b3A6Ii0xMDAwcHgifSk7Zm9yKG8gaW4gcyl0LnN0eWxlW29dPXNbb107dC5hcHBlbmRDaGlsZChoKSxpPXJ8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxpLmluc2VydEJlZm9yZSh0LGkuZmlyc3RDaGlsZCksaC5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDEwLjc0MzIyMjJweDsiLG49ZShoKS5vZmZzZXQoKS5sZWZ0LGE9bj4xMCYmMTE+bix0LmlubmVySFRNTD0iIixpLnJlbW92ZUNoaWxkKHQpfSgpfSgpLGUudWkucG9zaXRpb24sZS53aWRnZXQoInVpLmRyYWdnYWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS40Iix3aWRnZXRFdmVudFByZWZpeDoiZHJhZyIsb3B0aW9uczp7YWRkQ2xhc3NlczohMCxhcHBlbmRUbzoicGFyZW50IixheGlzOiExLGNvbm5lY3RUb1NvcnRhYmxlOiExLGNvbnRhaW5tZW50OiExLGN1cnNvcjoiYXV0byIsY3Vyc29yQXQ6ITEsZ3JpZDohMSxoYW5kbGU6ITEsaGVscGVyOiJvcmlnaW5hbCIsaWZyYW1lRml4OiExLG9wYWNpdHk6ITEscmVmcmVzaFBvc2l0aW9uczohMSxyZXZlcnQ6ITEscmV2ZXJ0RHVyYXRpb246NTAwLHNjb3BlOiJkZWZhdWx0IixzY3JvbGw6ITAsc2Nyb2xsU2Vuc2l0aXZpdHk6MjAsc2Nyb2xsU3BlZWQ6MjAsc25hcDohMSxzbmFwTW9kZToiYm90aCIsc25hcFRvbGVyYW5jZToyMCxzdGFjazohMSx6SW5kZXg6ITEsZHJhZzpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7Im9yaWdpbmFsIj09PXRoaXMub3B0aW9ucy5oZWxwZXImJnRoaXMuX3NldFBvc2l0aW9uUmVsYXRpdmUoKSx0aGlzLm9wdGlvbnMuYWRkQ2xhc3NlcyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUiKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWRpc2FibGVkIiksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5fbW91c2VJbml0KCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLl9zdXBlcihlLHQpLCJoYW5kbGUiPT09ZSYmKHRoaXMuX3JlbW92ZUhhbmRsZUNsYXNzTmFtZSgpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5oZWxwZXJ8fHRoaXMuZWxlbWVudCkuaXMoIi51aS1kcmFnZ2FibGUtZHJhZ2dpbmciKT8odGhpcy5kZXN0cm95T25DbGVhcj0hMCx2b2lkIDApOih0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWRyYWdnYWJsZSB1aS1kcmFnZ2FibGUtZHJhZ2dpbmcgdWktZHJhZ2dhYmxlLWRpc2FibGVkIiksdGhpcy5fcmVtb3ZlSGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5fbW91c2VEZXN0cm95KCksdm9pZCAwKX0sX21vdXNlQ2FwdHVyZTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuX2JsdXJBY3RpdmVFbGVtZW50KHQpLHRoaXMuaGVscGVyfHxpLmRpc2FibGVkfHxlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktcmVzaXphYmxlLWhhbmRsZSIpLmxlbmd0aD4wPyExOih0aGlzLmhhbmRsZT10aGlzLl9nZXRIYW5kbGUodCksdGhpcy5oYW5kbGU/KHRoaXMuX2Jsb2NrRnJhbWVzKGkuaWZyYW1lRml4PT09ITA/ImlmcmFtZSI6aS5pZnJhbWVGaXgpLCEwKTohMSl9LF9ibG9ja0ZyYW1lczpmdW5jdGlvbih0KXt0aGlzLmlmcmFtZUJsb2Nrcz10aGlzLmRvY3VtZW50LmZpbmQodCkubWFwKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtyZXR1cm4gZSgiPGRpdj4iKS5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKS5hcHBlbmRUbyh0LnBhcmVudCgpKS5vdXRlcldpZHRoKHQub3V0ZXJXaWR0aCgpKS5vdXRlckhlaWdodCh0Lm91dGVySGVpZ2h0KCkpLm9mZnNldCh0Lm9mZnNldCgpKVswXX0pfSxfdW5ibG9ja0ZyYW1lczpmdW5jdGlvbigpe3RoaXMuaWZyYW1lQmxvY2tzJiYodGhpcy5pZnJhbWVCbG9ja3MucmVtb3ZlKCksZGVsZXRlIHRoaXMuaWZyYW1lQmxvY2tzKX0sX2JsdXJBY3RpdmVFbGVtZW50OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuZG9jdW1lbnRbMF07aWYodGhpcy5oYW5kbGVFbGVtZW50LmlzKHQudGFyZ2V0KSl0cnl7aS5hY3RpdmVFbGVtZW50JiYiYm9keSIhPT1pLmFjdGl2ZUVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZShpLmFjdGl2ZUVsZW1lbnQpLmJsdXIoKX1jYXRjaChzKXt9fSxfbW91c2VTdGFydDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnM7cmV0dXJuIHRoaXMuaGVscGVyPXRoaXMuX2NyZWF0ZUhlbHBlcih0KSx0aGlzLmhlbHBlci5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWRyYWdnaW5nIiksdGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpLGUudWkuZGRtYW5hZ2VyJiYoZS51aS5kZG1hbmFnZXIuY3VycmVudD10aGlzKSx0aGlzLl9jYWNoZU1hcmdpbnMoKSx0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iKSx0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoITApLHRoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpLHRoaXMuaGFzRml4ZWRBbmNlc3Rvcj10aGlzLmhlbHBlci5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuImZpeGVkIj09PWUodGhpcykuY3NzKCJwb3NpdGlvbiIpfSkubGVuZ3RoPjAsdGhpcy5wb3NpdGlvbkFicz10aGlzLmVsZW1lbnQub2Zmc2V0KCksdGhpcy5fcmVmcmVzaE9mZnNldHModCksdGhpcy5vcmlnaW5hbFBvc2l0aW9uPXRoaXMucG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbih0LCExKSx0aGlzLm9yaWdpbmFsUGFnZVg9dC5wYWdlWCx0aGlzLm9yaWdpbmFsUGFnZVk9dC5wYWdlWSxpLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKGkuY3Vyc29yQXQpLHRoaXMuX3NldENvbnRhaW5tZW50KCksdGhpcy5fdHJpZ2dlcigic3RhcnQiLHQpPT09ITE/KHRoaXMuX2NsZWFyKCksITEpOih0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCksZS51aS5kZG1hbmFnZXImJiFpLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsdCksdGhpcy5fbm9ybWFsaXplUmlnaHRCb3R0b20oKSx0aGlzLl9tb3VzZURyYWcodCwhMCksZS51aS5kZG1hbmFnZXImJmUudWkuZGRtYW5hZ2VyLmRyYWdTdGFydCh0aGlzLHQpLCEwKX0sX3JlZnJlc2hPZmZzZXRzOmZ1bmN0aW9uKGUpe3RoaXMub2Zmc2V0PXt0b3A6dGhpcy5wb3NpdGlvbkFicy50b3AtdGhpcy5tYXJnaW5zLnRvcCxsZWZ0OnRoaXMucG9zaXRpb25BYnMubGVmdC10aGlzLm1hcmdpbnMubGVmdCxzY3JvbGw6ITEscGFyZW50OnRoaXMuX2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCl9LHRoaXMub2Zmc2V0LmNsaWNrPXtsZWZ0OmUucGFnZVgtdGhpcy5vZmZzZXQubGVmdCx0b3A6ZS5wYWdlWS10aGlzLm9mZnNldC50b3B9fSxfbW91c2VEcmFnOmZ1bmN0aW9uKHQsaSl7aWYodGhpcy5oYXNGaXhlZEFuY2VzdG9yJiYodGhpcy5vZmZzZXQucGFyZW50PXRoaXMuX2dldFBhcmVudE9mZnNldCgpKSx0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24odCwhMCksdGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSwhaSl7dmFyIHM9dGhpcy5fdWlIYXNoKCk7aWYodGhpcy5fdHJpZ2dlcigiZHJhZyIsdCxzKT09PSExKXJldHVybiB0aGlzLl9tb3VzZVVwKHt9KSwhMTt0aGlzLnBvc2l0aW9uPXMucG9zaXRpb259cmV0dXJuIHRoaXMuaGVscGVyWzBdLnN0eWxlLmxlZnQ9dGhpcy5wb3NpdGlvbi5sZWZ0KyJweCIsdGhpcy5oZWxwZXJbMF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIsZS51aS5kZG1hbmFnZXImJmUudWkuZGRtYW5hZ2VyLmRyYWcodGhpcyx0KSwhMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLHM9ITE7cmV0dXJuIGUudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXImJihzPWUudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyx0KSksdGhpcy5kcm9wcGVkJiYocz10aGlzLmRyb3BwZWQsdGhpcy5kcm9wcGVkPSExKSwiaW52YWxpZCI9PT10aGlzLm9wdGlvbnMucmV2ZXJ0JiYhc3x8InZhbGlkIj09PXRoaXMub3B0aW9ucy5yZXZlcnQmJnN8fHRoaXMub3B0aW9ucy5yZXZlcnQ9PT0hMHx8ZS5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5yZXZlcnQpJiZ0aGlzLm9wdGlvbnMucmV2ZXJ0LmNhbGwodGhpcy5lbGVtZW50LHMpP2UodGhpcy5oZWxwZXIpLmFuaW1hdGUodGhpcy5vcmlnaW5hbFBvc2l0aW9uLHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnREdXJhdGlvbiwxMCksZnVuY3Rpb24oKXtpLl90cmlnZ2VyKCJzdG9wIix0KSE9PSExJiZpLl9jbGVhcigpfSk6dGhpcy5fdHJpZ2dlcigic3RvcCIsdCkhPT0hMSYmdGhpcy5fY2xlYXIoKSwhMX0sX21vdXNlVXA6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3VuYmxvY2tGcmFtZXMoKSxlLnVpLmRkbWFuYWdlciYmZS51aS5kZG1hbmFnZXIuZHJhZ1N0b3AodGhpcyx0KSx0aGlzLmhhbmRsZUVsZW1lbnQuaXModC50YXJnZXQpJiZ0aGlzLmVsZW1lbnQuZm9jdXMoKSxlLnVpLm1vdXNlLnByb3RvdHlwZS5fbW91c2VVcC5jYWxsKHRoaXMsdCl9LGNhbmNlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmhlbHBlci5pcygiLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpP3RoaXMuX21vdXNlVXAoe30pOnRoaXMuX2NsZWFyKCksdGhpc30sX2dldEhhbmRsZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vcHRpb25zLmhhbmRsZT8hIWUodC50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLmhhbmRsZSkpLmxlbmd0aDohMH0sX3NldEhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlRWxlbWVudD10aGlzLm9wdGlvbnMuaGFuZGxlP3RoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5oYW5kbGUpOnRoaXMuZWxlbWVudCx0aGlzLmhhbmRsZUVsZW1lbnQuYWRkQ2xhc3MoInVpLWRyYWdnYWJsZS1oYW5kbGUiKX0sX3JlbW92ZUhhbmRsZUNsYXNzTmFtZTpmdW5jdGlvbigpe3RoaXMuaGFuZGxlRWxlbWVudC5yZW1vdmVDbGFzcygidWktZHJhZ2dhYmxlLWhhbmRsZSIpfSxfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMub3B0aW9ucyxzPWUuaXNGdW5jdGlvbihpLmhlbHBlciksbj1zP2UoaS5oZWxwZXIuYXBwbHkodGhpcy5lbGVtZW50WzBdLFt0XSkpOiJjbG9uZSI9PT1pLmhlbHBlcj90aGlzLmVsZW1lbnQuY2xvbmUoKS5yZW1vdmVBdHRyKCJpZCIpOnRoaXMuZWxlbWVudDtyZXR1cm4gbi5wYXJlbnRzKCJib2R5IikubGVuZ3RofHxuLmFwcGVuZFRvKCJwYXJlbnQiPT09aS5hcHBlbmRUbz90aGlzLmVsZW1lbnRbMF0ucGFyZW50Tm9kZTppLmFwcGVuZFRvKSxzJiZuWzBdPT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLl9zZXRQb3NpdGlvblJlbGF0aXZlKCksblswXT09PXRoaXMuZWxlbWVudFswXXx8LyhmaXhlZHxhYnNvbHV0ZSkvLnRlc3Qobi5jc3MoInBvc2l0aW9uIikpfHxuLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpLG59LF9zZXRQb3NpdGlvblJlbGF0aXZlOmZ1bmN0aW9uKCl7L14oPzpyfGF8ZikvLnRlc3QodGhpcy5lbGVtZW50LmNzcygicG9zaXRpb24iKSl8fCh0aGlzLmVsZW1lbnRbMF0uc3R5bGUucG9zaXRpb249InJlbGF0aXZlIil9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC5zcGxpdCgiICIpKSxlLmlzQXJyYXkodCkmJih0PXtsZWZ0Oit0WzBdLHRvcDordFsxXXx8MH0pLCJsZWZ0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXQubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdC5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiB0JiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXQudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gdCYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10LmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2lzUm9vdE5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuLyhodG1sfGJvZHkpL2kudGVzdChlLnRhZ05hbWUpfHxlPT09dGhpcy5kb2N1bWVudFswXX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpLGk9dGhpcy5kb2N1bWVudFswXTtyZXR1cm4iYWJzb2x1dGUiPT09dGhpcy5jc3NQb3NpdGlvbiYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT1pJiZlLmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKSYmKHQubGVmdCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpLHQudG9wKz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksdGhpcy5faXNSb290Tm9kZSh0aGlzLm9mZnNldFBhcmVudFswXSkmJih0PXt0b3A6MCxsZWZ0OjB9KSx7dG9wOnQudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OnQubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYoInJlbGF0aXZlIiE9PXRoaXMuY3NzUG9zaXRpb24pcmV0dXJue3RvcDowLGxlZnQ6MH07dmFyIGU9dGhpcy5lbGVtZW50LnBvc2l0aW9uKCksdD10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKTtyZXR1cm57dG9wOmUudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrKHQ/MDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSksbGVmdDplLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrKHQ/MDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCkpfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5MZWZ0IiksMTApfHwwLHRvcDpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSwxMCl8fDAscmlnaHQ6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luUmlnaHQiKSwxMCl8fDAsYm90dG9tOnBhcnNlSW50KHRoaXMuZWxlbWVudC5jc3MoIm1hcmdpbkJvdHRvbSIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIHQsaSxzLG49dGhpcy5vcHRpb25zLGE9dGhpcy5kb2N1bWVudFswXTtyZXR1cm4gdGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj1udWxsLG4uY29udGFpbm1lbnQ/IndpbmRvdyI9PT1uLmNvbnRhaW5tZW50Pyh0aGlzLmNvbnRhaW5tZW50PVtlKHdpbmRvdykuc2Nyb2xsTGVmdCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQsZSh3aW5kb3cpLnNjcm9sbFRvcCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLGUod2luZG93KS5zY3JvbGxMZWZ0KCkrZSh3aW5kb3cpLndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCxlKHdpbmRvdykuc2Nyb2xsVG9wKCkrKGUod2luZG93KS5oZWlnaHQoKXx8YS5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0KS10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wXSx2b2lkIDApOiJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50Pyh0aGlzLmNvbnRhaW5tZW50PVswLDAsZShhKS53aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsKGUoYSkuaGVpZ2h0KCl8fGEuYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF0sdm9pZCAwKTpuLmNvbnRhaW5tZW50LmNvbnN0cnVjdG9yPT09QXJyYXk/KHRoaXMuY29udGFpbm1lbnQ9bi5jb250YWlubWVudCx2b2lkIDApOigicGFyZW50Ij09PW4uY29udGFpbm1lbnQmJihuLmNvbnRhaW5tZW50PXRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUpLGk9ZShuLmNvbnRhaW5tZW50KSxzPWlbMF0scyYmKHQ9LyhzY3JvbGx8YXV0bykvLnRlc3QoaS5jc3MoIm92ZXJmbG93IikpLHRoaXMuY29udGFpbm1lbnQ9WyhwYXJzZUludChpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdMZWZ0IiksMTApfHwwKSwocGFyc2VJbnQoaS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdUb3AiKSwxMCl8fDApLCh0P01hdGgubWF4KHMuc2Nyb2xsV2lkdGgscy5vZmZzZXRXaWR0aCk6cy5vZmZzZXRXaWR0aCktKHBhcnNlSW50KGkuY3NzKCJib3JkZXJSaWdodFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdSaWdodCIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdC10aGlzLm1hcmdpbnMucmlnaHQsKHQ/TWF0aC5tYXgocy5zY3JvbGxIZWlnaHQscy5vZmZzZXRIZWlnaHQpOnMub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoaS5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoaS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3AtdGhpcy5tYXJnaW5zLmJvdHRvbV0sdGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj1pKSx2b2lkIDApOih0aGlzLmNvbnRhaW5tZW50PW51bGwsdm9pZCAwKX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKGUsdCl7dHx8KHQ9dGhpcy5wb3NpdGlvbik7dmFyIGk9ImFic29sdXRlIj09PWU/MTotMSxzPXRoaXMuX2lzUm9vdE5vZGUodGhpcy5zY3JvbGxQYXJlbnRbMF0pO3JldHVybnt0b3A6dC50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKmkrdGhpcy5vZmZzZXQucGFyZW50LnRvcCppLSgiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLnRvcDpzPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLnRvcCkqaSxsZWZ0OnQubGVmdCt0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0KmkrdGhpcy5vZmZzZXQucGFyZW50LmxlZnQqaS0oImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0OnM/MDp0aGlzLm9mZnNldC5zY3JvbGwubGVmdCkqaX19LF9nZW5lcmF0ZVBvc2l0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuLGEsbz10aGlzLm9wdGlvbnMscj10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKSxoPWUucGFnZVgsbD1lLnBhZ2VZO3JldHVybiByJiZ0aGlzLm9mZnNldC5zY3JvbGx8fCh0aGlzLm9mZnNldC5zY3JvbGw9e3RvcDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSxsZWZ0OnRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKX0pLHQmJih0aGlzLmNvbnRhaW5tZW50JiYodGhpcy5yZWxhdGl2ZUNvbnRhaW5lcj8ocz10aGlzLnJlbGF0aXZlQ29udGFpbmVyLm9mZnNldCgpLGk9W3RoaXMuY29udGFpbm1lbnRbMF0rcy5sZWZ0LHRoaXMuY29udGFpbm1lbnRbMV0rcy50b3AsdGhpcy5jb250YWlubWVudFsyXStzLmxlZnQsdGhpcy5jb250YWlubWVudFszXStzLnRvcF0pOmk9dGhpcy5jb250YWlubWVudCxlLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8aVswXSYmKGg9aVswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSxlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDxpWzFdJiYobD1pWzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCksZS5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PmlbMl0mJihoPWlbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksZS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+aVszXSYmKGw9aVszXSt0aGlzLm9mZnNldC5jbGljay50b3ApKSxvLmdyaWQmJihuPW8uZ3JpZFsxXT90aGlzLm9yaWdpbmFsUGFnZVkrTWF0aC5yb3VuZCgobC10aGlzLm9yaWdpbmFsUGFnZVkpL28uZ3JpZFsxXSkqby5ncmlkWzFdOnRoaXMub3JpZ2luYWxQYWdlWSxsPWk/bi10aGlzLm9mZnNldC5jbGljay50b3A+PWlbMV18fG4tdGhpcy5vZmZzZXQuY2xpY2sudG9wPmlbM10/bjpuLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD49aVsxXT9uLW8uZ3JpZFsxXTpuK28uZ3JpZFsxXTpuLGE9by5ncmlkWzBdP3RoaXMub3JpZ2luYWxQYWdlWCtNYXRoLnJvdW5kKChoLXRoaXMub3JpZ2luYWxQYWdlWCkvby5ncmlkWzBdKSpvLmdyaWRbMF06dGhpcy5vcmlnaW5hbFBhZ2VYLGg9aT9hLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+PWlbMF18fGEtdGhpcy5vZmZzZXQuY2xpY2subGVmdD5pWzJdP2E6YS10aGlzLm9mZnNldC5jbGljay5sZWZ0Pj1pWzBdP2Etby5ncmlkWzBdOmErby5ncmlkWzBdOmEpLCJ5Ij09PW8uYXhpcyYmKGg9dGhpcy5vcmlnaW5hbFBhZ2VYKSwieCI9PT1vLmF4aXMmJihsPXRoaXMub3JpZ2luYWxQYWdlWSkpLHt0b3A6bC10aGlzLm9mZnNldC5jbGljay50b3AtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3ArKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLm9mZnNldC5zY3JvbGwudG9wOnI/MDp0aGlzLm9mZnNldC5zY3JvbGwudG9wKSxsZWZ0OmgtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLmxlZnQ6cj8wOnRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0KX19LF9jbGVhcjpmdW5jdGlvbigpe3RoaXMuaGVscGVyLnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUtZHJhZ2dpbmciKSx0aGlzLmhlbHBlclswXT09PXRoaXMuZWxlbWVudFswXXx8dGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsfHx0aGlzLmhlbHBlci5yZW1vdmUoKSx0aGlzLmhlbHBlcj1udWxsLHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSx0aGlzLmRlc3Ryb3lPbkNsZWFyJiZ0aGlzLmRlc3Ryb3koKX0sX25vcm1hbGl6ZVJpZ2h0Qm90dG9tOmZ1bmN0aW9uKCl7InkiIT09dGhpcy5vcHRpb25zLmF4aXMmJiJhdXRvIiE9PXRoaXMuaGVscGVyLmNzcygicmlnaHQiKSYmKHRoaXMuaGVscGVyLndpZHRoKHRoaXMuaGVscGVyLndpZHRoKCkpLHRoaXMuaGVscGVyLmNzcygicmlnaHQiLCJhdXRvIikpLCJ4IiE9PXRoaXMub3B0aW9ucy5heGlzJiYiYXV0byIhPT10aGlzLmhlbHBlci5jc3MoImJvdHRvbSIpJiYodGhpcy5oZWxwZXIuaGVpZ2h0KHRoaXMuaGVscGVyLmhlaWdodCgpKSx0aGlzLmhlbHBlci5jc3MoImJvdHRvbSIsImF1dG8iKSl9LF90cmlnZ2VyOmZ1bmN0aW9uKHQsaSxzKXtyZXR1cm4gcz1zfHx0aGlzLl91aUhhc2goKSxlLnVpLnBsdWdpbi5jYWxsKHRoaXMsdCxbaSxzLHRoaXNdLCEwKSwvXihkcmFnfHN0YXJ0fHN0b3ApLy50ZXN0KHQpJiYodGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSxzLm9mZnNldD10aGlzLnBvc2l0aW9uQWJzKSxlLldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuY2FsbCh0aGlzLHQsaSxzKX0scGx1Z2luczp7fSxfdWlIYXNoOmZ1bmN0aW9uKCl7cmV0dXJue2hlbHBlcjp0aGlzLmhlbHBlcixwb3NpdGlvbjp0aGlzLnBvc2l0aW9uLG9yaWdpbmFsUG9zaXRpb246dGhpcy5vcmlnaW5hbFBvc2l0aW9uLG9mZnNldDp0aGlzLnBvc2l0aW9uQWJzfX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsImNvbm5lY3RUb1NvcnRhYmxlIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPWUuZXh0ZW5kKHt9LGkse2l0ZW06cy5lbGVtZW50fSk7cy5zb3J0YWJsZXM9W10sZShzLm9wdGlvbnMuY29ubmVjdFRvU29ydGFibGUpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT1lKHRoaXMpLnNvcnRhYmxlKCJpbnN0YW5jZSIpO2kmJiFpLm9wdGlvbnMuZGlzYWJsZWQmJihzLnNvcnRhYmxlcy5wdXNoKGkpLGkucmVmcmVzaFBvc2l0aW9ucygpLGkuX3RyaWdnZXIoImFjdGl2YXRlIix0LG4pKX0pfSxzdG9wOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1lLmV4dGVuZCh7fSxpLHtpdGVtOnMuZWxlbWVudH0pO3MuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMSxlLmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuaXNPdmVyPyhlLmlzT3Zlcj0wLHMuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMCxlLmNhbmNlbEhlbHBlclJlbW92YWw9ITEsZS5fc3RvcmVkQ1NTPXtwb3NpdGlvbjplLnBsYWNlaG9sZGVyLmNzcygicG9zaXRpb24iKSx0b3A6ZS5wbGFjZWhvbGRlci5jc3MoInRvcCIpLGxlZnQ6ZS5wbGFjZWhvbGRlci5jc3MoImxlZnQiKX0sZS5fbW91c2VTdG9wKHQpLGUub3B0aW9ucy5oZWxwZXI9ZS5vcHRpb25zLl9oZWxwZXIpOihlLmNhbmNlbEhlbHBlclJlbW92YWw9ITAsZS5fdHJpZ2dlcigiZGVhY3RpdmF0ZSIsdCxuKSl9KX0sZHJhZzpmdW5jdGlvbih0LGkscyl7ZS5lYWNoKHMuc29ydGFibGVzLGZ1bmN0aW9uKCl7dmFyIG49ITEsYT10aGlzO2EucG9zaXRpb25BYnM9cy5wb3NpdGlvbkFicyxhLmhlbHBlclByb3BvcnRpb25zPXMuaGVscGVyUHJvcG9ydGlvbnMsYS5vZmZzZXQuY2xpY2s9cy5vZmZzZXQuY2xpY2ssYS5faW50ZXJzZWN0c1dpdGgoYS5jb250YWluZXJDYWNoZSkmJihuPSEwLGUuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uQWJzPXMucG9zaXRpb25BYnMsdGhpcy5oZWxwZXJQcm9wb3J0aW9ucz1zLmhlbHBlclByb3BvcnRpb25zLHRoaXMub2Zmc2V0LmNsaWNrPXMub2Zmc2V0LmNsaWNrLHRoaXMhPT1hJiZ0aGlzLl9pbnRlcnNlY3RzV2l0aCh0aGlzLmNvbnRhaW5lckNhY2hlKSYmZS5jb250YWlucyhhLmVsZW1lbnRbMF0sdGhpcy5lbGVtZW50WzBdKSYmKG49ITEpLG4KfSkpLG4/KGEuaXNPdmVyfHwoYS5pc092ZXI9MSxzLl9wYXJlbnQ9aS5oZWxwZXIucGFyZW50KCksYS5jdXJyZW50SXRlbT1pLmhlbHBlci5hcHBlbmRUbyhhLmVsZW1lbnQpLmRhdGEoInVpLXNvcnRhYmxlLWl0ZW0iLCEwKSxhLm9wdGlvbnMuX2hlbHBlcj1hLm9wdGlvbnMuaGVscGVyLGEub3B0aW9ucy5oZWxwZXI9ZnVuY3Rpb24oKXtyZXR1cm4gaS5oZWxwZXJbMF19LHQudGFyZ2V0PWEuY3VycmVudEl0ZW1bMF0sYS5fbW91c2VDYXB0dXJlKHQsITApLGEuX21vdXNlU3RhcnQodCwhMCwhMCksYS5vZmZzZXQuY2xpY2sudG9wPXMub2Zmc2V0LmNsaWNrLnRvcCxhLm9mZnNldC5jbGljay5sZWZ0PXMub2Zmc2V0LmNsaWNrLmxlZnQsYS5vZmZzZXQucGFyZW50LmxlZnQtPXMub2Zmc2V0LnBhcmVudC5sZWZ0LWEub2Zmc2V0LnBhcmVudC5sZWZ0LGEub2Zmc2V0LnBhcmVudC50b3AtPXMub2Zmc2V0LnBhcmVudC50b3AtYS5vZmZzZXQucGFyZW50LnRvcCxzLl90cmlnZ2VyKCJ0b1NvcnRhYmxlIix0KSxzLmRyb3BwZWQ9YS5lbGVtZW50LGUuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3RoaXMucmVmcmVzaFBvc2l0aW9ucygpfSkscy5jdXJyZW50SXRlbT1zLmVsZW1lbnQsYS5mcm9tT3V0c2lkZT1zKSxhLmN1cnJlbnRJdGVtJiYoYS5fbW91c2VEcmFnKHQpLGkucG9zaXRpb249YS5wb3NpdGlvbikpOmEuaXNPdmVyJiYoYS5pc092ZXI9MCxhLmNhbmNlbEhlbHBlclJlbW92YWw9ITAsYS5vcHRpb25zLl9yZXZlcnQ9YS5vcHRpb25zLnJldmVydCxhLm9wdGlvbnMucmV2ZXJ0PSExLGEuX3RyaWdnZXIoIm91dCIsdCxhLl91aUhhc2goYSkpLGEuX21vdXNlU3RvcCh0LCEwKSxhLm9wdGlvbnMucmV2ZXJ0PWEub3B0aW9ucy5fcmV2ZXJ0LGEub3B0aW9ucy5oZWxwZXI9YS5vcHRpb25zLl9oZWxwZXIsYS5wbGFjZWhvbGRlciYmYS5wbGFjZWhvbGRlci5yZW1vdmUoKSxpLmhlbHBlci5hcHBlbmRUbyhzLl9wYXJlbnQpLHMuX3JlZnJlc2hPZmZzZXRzKHQpLGkucG9zaXRpb249cy5fZ2VuZXJhdGVQb3NpdGlvbih0LCEwKSxzLl90cmlnZ2VyKCJmcm9tU29ydGFibGUiLHQpLHMuZHJvcHBlZD0hMSxlLmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKX0pKX0pfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwiY3Vyc29yIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPWUoImJvZHkiKSxhPXMub3B0aW9ucztuLmNzcygiY3Vyc29yIikmJihhLl9jdXJzb3I9bi5jc3MoImN1cnNvciIpKSxuLmNzcygiY3Vyc29yIixhLmN1cnNvcil9LHN0b3A6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucztuLl9jdXJzb3ImJmUoImJvZHkiKS5jc3MoImN1cnNvciIsbi5fY3Vyc29yKX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsIm9wYWNpdHkiLHtzdGFydDpmdW5jdGlvbih0LGkscyl7dmFyIG49ZShpLmhlbHBlciksYT1zLm9wdGlvbnM7bi5jc3MoIm9wYWNpdHkiKSYmKGEuX29wYWNpdHk9bi5jc3MoIm9wYWNpdHkiKSksbi5jc3MoIm9wYWNpdHkiLGEub3BhY2l0eSl9LHN0b3A6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucztuLl9vcGFjaXR5JiZlKGkuaGVscGVyKS5jc3MoIm9wYWNpdHkiLG4uX29wYWNpdHkpfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic2Nyb2xsIix7c3RhcnQ6ZnVuY3Rpb24oZSx0LGkpe2kuc2Nyb2xsUGFyZW50Tm90SGlkZGVufHwoaS5zY3JvbGxQYXJlbnROb3RIaWRkZW49aS5oZWxwZXIuc2Nyb2xsUGFyZW50KCExKSksaS5zY3JvbGxQYXJlbnROb3RIaWRkZW5bMF0hPT1pLmRvY3VtZW50WzBdJiYiSFRNTCIhPT1pLnNjcm9sbFBhcmVudE5vdEhpZGRlblswXS50YWdOYW1lJiYoaS5vdmVyZmxvd09mZnNldD1pLnNjcm9sbFBhcmVudE5vdEhpZGRlbi5vZmZzZXQoKSl9LGRyYWc6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucyxhPSExLG89cy5zY3JvbGxQYXJlbnROb3RIaWRkZW5bMF0scj1zLmRvY3VtZW50WzBdO28hPT1yJiYiSFRNTCIhPT1vLnRhZ05hbWU/KG4uYXhpcyYmIngiPT09bi5heGlzfHwocy5vdmVyZmxvd09mZnNldC50b3Arby5vZmZzZXRIZWlnaHQtdC5wYWdlWTxuLnNjcm9sbFNlbnNpdGl2aXR5P28uc2Nyb2xsVG9wPWE9by5zY3JvbGxUb3Arbi5zY3JvbGxTcGVlZDp0LnBhZ2VZLXMub3ZlcmZsb3dPZmZzZXQudG9wPG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihvLnNjcm9sbFRvcD1hPW8uc2Nyb2xsVG9wLW4uc2Nyb2xsU3BlZWQpKSxuLmF4aXMmJiJ5Ij09PW4uYXhpc3x8KHMub3ZlcmZsb3dPZmZzZXQubGVmdCtvLm9mZnNldFdpZHRoLXQucGFnZVg8bi5zY3JvbGxTZW5zaXRpdml0eT9vLnNjcm9sbExlZnQ9YT1vLnNjcm9sbExlZnQrbi5zY3JvbGxTcGVlZDp0LnBhZ2VYLXMub3ZlcmZsb3dPZmZzZXQubGVmdDxuLnNjcm9sbFNlbnNpdGl2aXR5JiYoby5zY3JvbGxMZWZ0PWE9by5zY3JvbGxMZWZ0LW4uc2Nyb2xsU3BlZWQpKSk6KG4uYXhpcyYmIngiPT09bi5heGlzfHwodC5wYWdlWS1lKHIpLnNjcm9sbFRvcCgpPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/YT1lKHIpLnNjcm9sbFRvcChlKHIpLnNjcm9sbFRvcCgpLW4uc2Nyb2xsU3BlZWQpOmUod2luZG93KS5oZWlnaHQoKS0odC5wYWdlWS1lKHIpLnNjcm9sbFRvcCgpKTxuLnNjcm9sbFNlbnNpdGl2aXR5JiYoYT1lKHIpLnNjcm9sbFRvcChlKHIpLnNjcm9sbFRvcCgpK24uc2Nyb2xsU3BlZWQpKSksbi5heGlzJiYieSI9PT1uLmF4aXN8fCh0LnBhZ2VYLWUocikuc2Nyb2xsTGVmdCgpPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/YT1lKHIpLnNjcm9sbExlZnQoZShyKS5zY3JvbGxMZWZ0KCktbi5zY3JvbGxTcGVlZCk6ZSh3aW5kb3cpLndpZHRoKCktKHQucGFnZVgtZShyKS5zY3JvbGxMZWZ0KCkpPG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihhPWUocikuc2Nyb2xsTGVmdChlKHIpLnNjcm9sbExlZnQoKStuLnNjcm9sbFNwZWVkKSkpKSxhIT09ITEmJmUudWkuZGRtYW5hZ2VyJiYhbi5kcm9wQmVoYXZpb3VyJiZlLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyhzLHQpfX0pLGUudWkucGx1Z2luLmFkZCgiZHJhZ2dhYmxlIiwic25hcCIse3N0YXJ0OmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1zLm9wdGlvbnM7cy5zbmFwRWxlbWVudHM9W10sZShuLnNuYXAuY29uc3RydWN0b3IhPT1TdHJpbmc/bi5zbmFwLml0ZW1zfHwiOmRhdGEodWktZHJhZ2dhYmxlKSI6bi5zbmFwKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKSxpPXQub2Zmc2V0KCk7dGhpcyE9PXMuZWxlbWVudFswXSYmcy5zbmFwRWxlbWVudHMucHVzaCh7aXRlbTp0aGlzLHdpZHRoOnQub3V0ZXJXaWR0aCgpLGhlaWdodDp0Lm91dGVySGVpZ2h0KCksdG9wOmkudG9wLGxlZnQ6aS5sZWZ0fSl9KX0sZHJhZzpmdW5jdGlvbih0LGkscyl7dmFyIG4sYSxvLHIsaCxsLHUsZCxjLHAsZj1zLm9wdGlvbnMsbT1mLnNuYXBUb2xlcmFuY2UsZz1pLm9mZnNldC5sZWZ0LHY9ZytzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLHk9aS5vZmZzZXQudG9wLGI9eStzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodDtmb3IoYz1zLnNuYXBFbGVtZW50cy5sZW5ndGgtMTtjPj0wO2MtLSloPXMuc25hcEVsZW1lbnRzW2NdLmxlZnQtcy5tYXJnaW5zLmxlZnQsbD1oK3Muc25hcEVsZW1lbnRzW2NdLndpZHRoLHU9cy5zbmFwRWxlbWVudHNbY10udG9wLXMubWFyZ2lucy50b3AsZD11K3Muc25hcEVsZW1lbnRzW2NdLmhlaWdodCxoLW0+dnx8Zz5sK218fHUtbT5ifHx5PmQrbXx8IWUuY29udGFpbnMocy5zbmFwRWxlbWVudHNbY10uaXRlbS5vd25lckRvY3VtZW50LHMuc25hcEVsZW1lbnRzW2NdLml0ZW0pPyhzLnNuYXBFbGVtZW50c1tjXS5zbmFwcGluZyYmcy5vcHRpb25zLnNuYXAucmVsZWFzZSYmcy5vcHRpb25zLnNuYXAucmVsZWFzZS5jYWxsKHMuZWxlbWVudCx0LGUuZXh0ZW5kKHMuX3VpSGFzaCgpLHtzbmFwSXRlbTpzLnNuYXBFbGVtZW50c1tjXS5pdGVtfSkpLHMuc25hcEVsZW1lbnRzW2NdLnNuYXBwaW5nPSExKTooImlubmVyIiE9PWYuc25hcE1vZGUmJihuPW0+PU1hdGguYWJzKHUtYiksYT1tPj1NYXRoLmFicyhkLXkpLG89bT49TWF0aC5hYnMoaC12KSxyPW0+PU1hdGguYWJzKGwtZyksbiYmKGkucG9zaXRpb24udG9wPXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDp1LXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGxlZnQ6MH0pLnRvcCksYSYmKGkucG9zaXRpb24udG9wPXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpkLGxlZnQ6MH0pLnRvcCksbyYmKGkucG9zaXRpb24ubGVmdD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omgtcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aH0pLmxlZnQpLHImJihpLnBvc2l0aW9uLmxlZnQ9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpsfSkubGVmdCkpLHA9bnx8YXx8b3x8ciwib3V0ZXIiIT09Zi5zbmFwTW9kZSYmKG49bT49TWF0aC5hYnModS15KSxhPW0+PU1hdGguYWJzKGQtYiksbz1tPj1NYXRoLmFicyhoLWcpLHI9bT49TWF0aC5hYnMobC12KSxuJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOnUsbGVmdDowfSkudG9wKSxhJiYoaS5wb3NpdGlvbi50b3A9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOmQtcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsbGVmdDowfSkudG9wKSxvJiYoaS5wb3NpdGlvbi5sZWZ0PXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6aH0pLmxlZnQpLHImJihpLnBvc2l0aW9uLmxlZnQ9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpsLXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGh9KS5sZWZ0KSksIXMuc25hcEVsZW1lbnRzW2NdLnNuYXBwaW5nJiYobnx8YXx8b3x8cnx8cCkmJnMub3B0aW9ucy5zbmFwLnNuYXAmJnMub3B0aW9ucy5zbmFwLnNuYXAuY2FsbChzLmVsZW1lbnQsdCxlLmV4dGVuZChzLl91aUhhc2goKSx7c25hcEl0ZW06cy5zbmFwRWxlbWVudHNbY10uaXRlbX0pKSxzLnNuYXBFbGVtZW50c1tjXS5zbmFwcGluZz1ufHxhfHxvfHxyfHxwKX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInN0YWNrIix7c3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGE9cy5vcHRpb25zLG89ZS5tYWtlQXJyYXkoZShhLnN0YWNrKSkuc29ydChmdW5jdGlvbih0LGkpe3JldHVybihwYXJzZUludChlKHQpLmNzcygiekluZGV4IiksMTApfHwwKS0ocGFyc2VJbnQoZShpKS5jc3MoInpJbmRleCIpLDEwKXx8MCl9KTtvLmxlbmd0aCYmKG49cGFyc2VJbnQoZShvWzBdKS5jc3MoInpJbmRleCIpLDEwKXx8MCxlKG8pLmVhY2goZnVuY3Rpb24odCl7ZSh0aGlzKS5jc3MoInpJbmRleCIsbit0KX0pLHRoaXMuY3NzKCJ6SW5kZXgiLG4rby5sZW5ndGgpKX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInpJbmRleCIse3N0YXJ0OmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj1lKGkuaGVscGVyKSxhPXMub3B0aW9ucztuLmNzcygiekluZGV4IikmJihhLl96SW5kZXg9bi5jc3MoInpJbmRleCIpKSxuLmNzcygiekluZGV4IixhLnpJbmRleCl9LHN0b3A6ZnVuY3Rpb24odCxpLHMpe3ZhciBuPXMub3B0aW9ucztuLl96SW5kZXgmJmUoaS5oZWxwZXIpLmNzcygiekluZGV4IixuLl96SW5kZXgpfX0pLGUudWkuZHJhZ2dhYmxlLGUud2lkZ2V0KCJ1aS5kcm9wcGFibGUiLHt2ZXJzaW9uOiIxLjExLjQiLHdpZGdldEV2ZW50UHJlZml4OiJkcm9wIixvcHRpb25zOnthY2NlcHQ6IioiLGFjdGl2ZUNsYXNzOiExLGFkZENsYXNzZXM6ITAsZ3JlZWR5OiExLGhvdmVyQ2xhc3M6ITEsc2NvcGU6ImRlZmF1bHQiLHRvbGVyYW5jZToiaW50ZXJzZWN0IixhY3RpdmF0ZTpudWxsLGRlYWN0aXZhdGU6bnVsbCxkcm9wOm51bGwsb3V0Om51bGwsb3ZlcjpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQsaT10aGlzLm9wdGlvbnMscz1pLmFjY2VwdDt0aGlzLmlzb3Zlcj0hMSx0aGlzLmlzb3V0PSEwLHRoaXMuYWNjZXB0PWUuaXNGdW5jdGlvbihzKT9zOmZ1bmN0aW9uKGUpe3JldHVybiBlLmlzKHMpfSx0aGlzLnByb3BvcnRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9YXJndW1lbnRzWzBdLHZvaWQgMCk6dD90OnQ9e3dpZHRoOnRoaXMuZWxlbWVudFswXS5vZmZzZXRXaWR0aCxoZWlnaHQ6dGhpcy5lbGVtZW50WzBdLm9mZnNldEhlaWdodH19LHRoaXMuX2FkZFRvTWFuYWdlcihpLnNjb3BlKSxpLmFkZENsYXNzZXMmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJvcHBhYmxlIil9LF9hZGRUb01hbmFnZXI6ZnVuY3Rpb24odCl7ZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0XT1lLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3RdfHxbXSxlLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3RdLnB1c2godGhpcyl9LF9zcGxpY2U6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7ZS5sZW5ndGg+dDt0KyspZVt0XT09PXRoaXMmJmUuc3BsaWNlKHQsMSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHQ9ZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0aGlzLm9wdGlvbnMuc2NvcGVdO3RoaXMuX3NwbGljZSh0KSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWRyb3BwYWJsZSB1aS1kcm9wcGFibGUtZGlzYWJsZWQiKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGkpe2lmKCJhY2NlcHQiPT09dCl0aGlzLmFjY2VwdD1lLmlzRnVuY3Rpb24oaSk/aTpmdW5jdGlvbihlKXtyZXR1cm4gZS5pcyhpKX07ZWxzZSBpZigic2NvcGUiPT09dCl7dmFyIHM9ZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0aGlzLm9wdGlvbnMuc2NvcGVdO3RoaXMuX3NwbGljZShzKSx0aGlzLl9hZGRUb01hbmFnZXIoaSl9dGhpcy5fc3VwZXIodCxpKX0sX2FjdGl2YXRlOmZ1bmN0aW9uKHQpe3ZhciBpPWUudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7dGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzKSxpJiZ0aGlzLl90cmlnZ2VyKCJhY3RpdmF0ZSIsdCx0aGlzLnVpKGkpKX0sX2RlYWN0aXZhdGU6ZnVuY3Rpb24odCl7dmFyIGk9ZS51aS5kZG1hbmFnZXIuY3VycmVudDt0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MpLGkmJnRoaXMuX3RyaWdnZXIoImRlYWN0aXZhdGUiLHQsdGhpcy51aShpKSl9LF9vdmVyOmZ1bmN0aW9uKHQpe3ZhciBpPWUudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7aSYmKGkuY3VycmVudEl0ZW18fGkuZWxlbWVudClbMF0hPT10aGlzLmVsZW1lbnRbMF0mJnRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLGkuY3VycmVudEl0ZW18fGkuZWxlbWVudCkmJih0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzKSx0aGlzLl90cmlnZ2VyKCJvdmVyIix0LHRoaXMudWkoaSkpKX0sX291dDpmdW5jdGlvbih0KXt2YXIgaT1lLnVpLmRkbWFuYWdlci5jdXJyZW50O2kmJihpLmN1cnJlbnRJdGVtfHxpLmVsZW1lbnQpWzBdIT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLmFjY2VwdC5jYWxsKHRoaXMuZWxlbWVudFswXSxpLmN1cnJlbnRJdGVtfHxpLmVsZW1lbnQpJiYodGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyksdGhpcy5fdHJpZ2dlcigib3V0Iix0LHRoaXMudWkoaSkpKX0sX2Ryb3A6ZnVuY3Rpb24odCxpKXt2YXIgcz1pfHxlLnVpLmRkbWFuYWdlci5jdXJyZW50LG49ITE7cmV0dXJuIHMmJihzLmN1cnJlbnRJdGVtfHxzLmVsZW1lbnQpWzBdIT09dGhpcy5lbGVtZW50WzBdPyh0aGlzLmVsZW1lbnQuZmluZCgiOmRhdGEodWktZHJvcHBhYmxlKSIpLm5vdCgiLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgaT1lKHRoaXMpLmRyb3BwYWJsZSgiaW5zdGFuY2UiKTtyZXR1cm4gaS5vcHRpb25zLmdyZWVkeSYmIWkub3B0aW9ucy5kaXNhYmxlZCYmaS5vcHRpb25zLnNjb3BlPT09cy5vcHRpb25zLnNjb3BlJiZpLmFjY2VwdC5jYWxsKGkuZWxlbWVudFswXSxzLmN1cnJlbnRJdGVtfHxzLmVsZW1lbnQpJiZlLnVpLmludGVyc2VjdChzLGUuZXh0ZW5kKGkse29mZnNldDppLmVsZW1lbnQub2Zmc2V0KCl9KSxpLm9wdGlvbnMudG9sZXJhbmNlLHQpPyhuPSEwLCExKTp2b2lkIDB9KSxuPyExOnRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLHMuY3VycmVudEl0ZW18fHMuZWxlbWVudCk/KHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyYmdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5hY3RpdmVDbGFzcyksdGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyksdGhpcy5fdHJpZ2dlcigiZHJvcCIsdCx0aGlzLnVpKHMpKSx0aGlzLmVsZW1lbnQpOiExKTohMX0sdWk6ZnVuY3Rpb24oZSl7cmV0dXJue2RyYWdnYWJsZTplLmN1cnJlbnRJdGVtfHxlLmVsZW1lbnQsaGVscGVyOmUuaGVscGVyLHBvc2l0aW9uOmUucG9zaXRpb24sb2Zmc2V0OmUucG9zaXRpb25BYnN9fX0pLGUudWkuaW50ZXJzZWN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQsaSl7cmV0dXJuIGU+PXQmJnQraT5lfXJldHVybiBmdW5jdGlvbih0LGkscyxuKXtpZighaS5vZmZzZXQpcmV0dXJuITE7dmFyIGE9KHQucG9zaXRpb25BYnN8fHQucG9zaXRpb24uYWJzb2x1dGUpLmxlZnQrdC5tYXJnaW5zLmxlZnQsbz0odC5wb3NpdGlvbkFic3x8dC5wb3NpdGlvbi5hYnNvbHV0ZSkudG9wK3QubWFyZ2lucy50b3Ascj1hK3QuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsaD1vK3QuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGw9aS5vZmZzZXQubGVmdCx1PWkub2Zmc2V0LnRvcCxkPWwraS5wcm9wb3J0aW9ucygpLndpZHRoLGM9dStpLnByb3BvcnRpb25zKCkuaGVpZ2h0O3N3aXRjaChzKXtjYXNlImZpdCI6cmV0dXJuIGE+PWwmJmQ+PXImJm8+PXUmJmM+PWg7Y2FzZSJpbnRlcnNlY3QiOnJldHVybiBhK3QuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMj5sJiZkPnItdC5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC8yJiZvK3QuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzI+dSYmYz5oLXQuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzI7Y2FzZSJwb2ludGVyIjpyZXR1cm4gZShuLnBhZ2VZLHUsaS5wcm9wb3J0aW9ucygpLmhlaWdodCkmJmUobi5wYWdlWCxsLGkucHJvcG9ydGlvbnMoKS53aWR0aCk7Y2FzZSJ0b3VjaCI6cmV0dXJuKG8+PXUmJmM+PW98fGg+PXUmJmM+PWh8fHU+byYmaD5jKSYmKGE+PWwmJmQ+PWF8fHI+PWwmJmQ+PXJ8fGw+YSYmcj5kKTtkZWZhdWx0OnJldHVybiExfX19KCksZS51aS5kZG1hbmFnZXI9e2N1cnJlbnQ6bnVsbCxkcm9wcGFibGVzOnsiZGVmYXVsdCI6W119LHByZXBhcmVPZmZzZXRzOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhPWUudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbdC5vcHRpb25zLnNjb3BlXXx8W10sbz1pP2kudHlwZTpudWxsLHI9KHQuY3VycmVudEl0ZW18fHQuZWxlbWVudCkuZmluZCgiOmRhdGEodWktZHJvcHBhYmxlKSIpLmFkZEJhY2soKTtlOmZvcihzPTA7YS5sZW5ndGg+cztzKyspaWYoIShhW3NdLm9wdGlvbnMuZGlzYWJsZWR8fHQmJiFhW3NdLmFjY2VwdC5jYWxsKGFbc10uZWxlbWVudFswXSx0LmN1cnJlbnRJdGVtfHx0LmVsZW1lbnQpKSl7Zm9yKG49MDtyLmxlbmd0aD5uO24rKylpZihyW25dPT09YVtzXS5lbGVtZW50WzBdKXthW3NdLnByb3BvcnRpb25zKCkuaGVpZ2h0PTA7Y29udGludWUgZX1hW3NdLnZpc2libGU9Im5vbmUiIT09YVtzXS5lbGVtZW50LmNzcygiZGlzcGxheSIpLGFbc10udmlzaWJsZSYmKCJtb3VzZWRvd24iPT09byYmYVtzXS5fYWN0aXZhdGUuY2FsbChhW3NdLGkpLGFbc10ub2Zmc2V0PWFbc10uZWxlbWVudC5vZmZzZXQoKSxhW3NdLnByb3BvcnRpb25zKHt3aWR0aDphW3NdLmVsZW1lbnRbMF0ub2Zmc2V0V2lkdGgsaGVpZ2h0OmFbc10uZWxlbWVudFswXS5vZmZzZXRIZWlnaHR9KSl9fSxkcm9wOmZ1bmN0aW9uKHQsaSl7dmFyIHM9ITE7cmV0dXJuIGUuZWFjaCgoZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0Lm9wdGlvbnMuc2NvcGVdfHxbXSkuc2xpY2UoKSxmdW5jdGlvbigpe3RoaXMub3B0aW9ucyYmKCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMudmlzaWJsZSYmZS51aS5pbnRlcnNlY3QodCx0aGlzLHRoaXMub3B0aW9ucy50b2xlcmFuY2UsaSkmJihzPXRoaXMuX2Ryb3AuY2FsbCh0aGlzLGkpfHxzKSwhdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLnZpc2libGUmJnRoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLHQuY3VycmVudEl0ZW18fHQuZWxlbWVudCkmJih0aGlzLmlzb3V0PSEwLHRoaXMuaXNvdmVyPSExLHRoaXMuX2RlYWN0aXZhdGUuY2FsbCh0aGlzLGkpKSl9KSxzfSxkcmFnU3RhcnQ6ZnVuY3Rpb24odCxpKXt0LmVsZW1lbnQucGFyZW50c1VudGlsKCJib2R5IikuYmluZCgic2Nyb2xsLmRyb3BwYWJsZSIsZnVuY3Rpb24oKXt0Lm9wdGlvbnMucmVmcmVzaFBvc2l0aW9uc3x8ZS51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHModCxpKX0pfSxkcmFnOmZ1bmN0aW9uKHQsaSl7dC5vcHRpb25zLnJlZnJlc2hQb3NpdGlvbnMmJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHQsaSksZS5lYWNoKGUudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbdC5vcHRpb25zLnNjb3BlXXx8W10sZnVuY3Rpb24oKXtpZighdGhpcy5vcHRpb25zLmRpc2FibGVkJiYhdGhpcy5ncmVlZHlDaGlsZCYmdGhpcy52aXNpYmxlKXt2YXIgcyxuLGEsbz1lLnVpLmludGVyc2VjdCh0LHRoaXMsdGhpcy5vcHRpb25zLnRvbGVyYW5jZSxpKSxyPSFvJiZ0aGlzLmlzb3Zlcj8iaXNvdXQiOm8mJiF0aGlzLmlzb3Zlcj8iaXNvdmVyIjpudWxsO3ImJih0aGlzLm9wdGlvbnMuZ3JlZWR5JiYobj10aGlzLm9wdGlvbnMuc2NvcGUsYT10aGlzLmVsZW1lbnQucGFyZW50cygiOmRhdGEodWktZHJvcHBhYmxlKSIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBlKHRoaXMpLmRyb3BwYWJsZSgiaW5zdGFuY2UiKS5vcHRpb25zLnNjb3BlPT09bn0pLGEubGVuZ3RoJiYocz1lKGFbMF0pLmRyb3BwYWJsZSgiaW5zdGFuY2UiKSxzLmdyZWVkeUNoaWxkPSJpc292ZXIiPT09cikpLHMmJiJpc292ZXIiPT09ciYmKHMuaXNvdmVyPSExLHMuaXNvdXQ9ITAscy5fb3V0LmNhbGwocyxpKSksdGhpc1tyXT0hMCx0aGlzWyJpc291dCI9PT1yPyJpc292ZXIiOiJpc291dCJdPSExLHRoaXNbImlzb3ZlciI9PT1yPyJfb3ZlciI6Il9vdXQiXS5jYWxsKHRoaXMsaSkscyYmImlzb3V0Ij09PXImJihzLmlzb3V0PSExLHMuaXNvdmVyPSEwLHMuX292ZXIuY2FsbChzLGkpKSl9fSl9LGRyYWdTdG9wOmZ1bmN0aW9uKHQsaSl7dC5lbGVtZW50LnBhcmVudHNVbnRpbCgiYm9keSIpLnVuYmluZCgic2Nyb2xsLmRyb3BwYWJsZSIpLHQub3B0aW9ucy5yZWZyZXNoUG9zaXRpb25zfHxlLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0LGkpfX0sZS51aS5kcm9wcGFibGUsZS53aWRnZXQoInVpLnJlc2l6YWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS40Iix3aWRnZXRFdmVudFByZWZpeDoicmVzaXplIixvcHRpb25zOnthbHNvUmVzaXplOiExLGFuaW1hdGU6ITEsYW5pbWF0ZUR1cmF0aW9uOiJzbG93IixhbmltYXRlRWFzaW5nOiJzd2luZyIsYXNwZWN0UmF0aW86ITEsYXV0b0hpZGU6ITEsY29udGFpbm1lbnQ6ITEsZ2hvc3Q6ITEsZ3JpZDohMSxoYW5kbGVzOiJlLHMsc2UiLGhlbHBlcjohMSxtYXhIZWlnaHQ6bnVsbCxtYXhXaWR0aDpudWxsLG1pbkhlaWdodDoxMCxtaW5XaWR0aDoxMCx6SW5kZXg6OTAscmVzaXplOm51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGx9LF9udW06ZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGUsMTApfHwwfSxfaXNOdW1iZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIWlzTmFOKHBhcnNlSW50KGUsMTApKX0sX2hhc1Njcm9sbDpmdW5jdGlvbih0LGkpe2lmKCJoaWRkZW4iPT09ZSh0KS5jc3MoIm92ZXJmbG93IikpcmV0dXJuITE7dmFyIHM9aSYmImxlZnQiPT09aT8ic2Nyb2xsTGVmdCI6InNjcm9sbFRvcCIsbj0hMTtyZXR1cm4gdFtzXT4wPyEwOih0W3NdPTEsbj10W3NdPjAsdFtzXT0wLG4pfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQsaSxzLG4sYSxvPXRoaXMscj10aGlzLm9wdGlvbnM7aWYodGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1yZXNpemFibGUiKSxlLmV4dGVuZCh0aGlzLHtfYXNwZWN0UmF0aW86ISFyLmFzcGVjdFJhdGlvLGFzcGVjdFJhdGlvOnIuYXNwZWN0UmF0aW8sb3JpZ2luYWxFbGVtZW50OnRoaXMuZWxlbWVudCxfcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50czpbXSxfaGVscGVyOnIuaGVscGVyfHxyLmdob3N0fHxyLmFuaW1hdGU/ci5oZWxwZXJ8fCJ1aS1yZXNpemFibGUtaGVscGVyIjpudWxsfSksdGhpcy5lbGVtZW50WzBdLm5vZGVOYW1lLm1hdGNoKC9eKGNhbnZhc3x0ZXh0YXJlYXxpbnB1dHxzZWxlY3R8YnV0dG9ufGltZykkL2kpJiYodGhpcy5lbGVtZW50LndyYXAoZSgiPGRpdiBjbGFzcz0ndWktd3JhcHBlcicgc3R5bGU9J292ZXJmbG93OiBoaWRkZW47Jz48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOnRoaXMuZWxlbWVudC5jc3MoInBvc2l0aW9uIiksd2lkdGg6dGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCksdG9wOnRoaXMuZWxlbWVudC5jc3MoInRvcCIpLGxlZnQ6dGhpcy5lbGVtZW50LmNzcygibGVmdCIpfSkpLHRoaXMuZWxlbWVudD10aGlzLmVsZW1lbnQucGFyZW50KCkuZGF0YSgidWktcmVzaXphYmxlIix0aGlzLmVsZW1lbnQucmVzaXphYmxlKCJpbnN0YW5jZSIpKSx0aGlzLmVsZW1lbnRJc1dyYXBwZXI9ITAsdGhpcy5lbGVtZW50LmNzcyh7bWFyZ2luTGVmdDp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbkxlZnQiKSxtYXJnaW5Ub3A6dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW5Ub3AiKSxtYXJnaW5SaWdodDp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpblJpZ2h0IiksbWFyZ2luQm90dG9tOnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygibWFyZ2luQm90dG9tIil9KSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe21hcmdpbkxlZnQ6MCxtYXJnaW5Ub3A6MCxtYXJnaW5SaWdodDowLG1hcmdpbkJvdHRvbTowfSksdGhpcy5vcmlnaW5hbFJlc2l6ZVN0eWxlPXRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygicmVzaXplIiksdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJyZXNpemUiLCJub25lIiksdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50cy5wdXNoKHRoaXMub3JpZ2luYWxFbGVtZW50LmNzcyh7cG9zaXRpb246InN0YXRpYyIsem9vbToxLGRpc3BsYXk6ImJsb2NrIn0pKSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe21hcmdpbjp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbiIpfSksdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKSksdGhpcy5oYW5kbGVzPXIuaGFuZGxlc3x8KGUoIi51aS1yZXNpemFibGUtaGFuZGxlIix0aGlzLmVsZW1lbnQpLmxlbmd0aD97bjoiLnVpLXJlc2l6YWJsZS1uIixlOiIudWktcmVzaXphYmxlLWUiLHM6Ii51aS1yZXNpemFibGUtcyIsdzoiLnVpLXJlc2l6YWJsZS13IixzZToiLnVpLXJlc2l6YWJsZS1zZSIsc3c6Ii51aS1yZXNpemFibGUtc3ciLG5lOiIudWktcmVzaXphYmxlLW5lIixudzoiLnVpLXJlc2l6YWJsZS1udyJ9OiJlLHMsc2UiKSx0aGlzLl9oYW5kbGVzPWUoKSx0aGlzLmhhbmRsZXMuY29uc3RydWN0b3I9PT1TdHJpbmcpZm9yKCJhbGwiPT09dGhpcy5oYW5kbGVzJiYodGhpcy5oYW5kbGVzPSJuLGUscyx3LHNlLHN3LG5lLG53IiksdD10aGlzLmhhbmRsZXMuc3BsaXQoIiwiKSx0aGlzLmhhbmRsZXM9e30saT0wO3QubGVuZ3RoPmk7aSsrKXM9ZS50cmltKHRbaV0pLGE9InVpLXJlc2l6YWJsZS0iK3Msbj1lKCI8ZGl2IGNsYXNzPSd1aS1yZXNpemFibGUtaGFuZGxlICIrYSsiJz48L2Rpdj4iKSxuLmNzcyh7ekluZGV4OnIuekluZGV4fSksInNlIj09PXMmJm4uYWRkQ2xhc3MoInVpLWljb24gdWktaWNvbi1ncmlwc21hbGwtZGlhZ29uYWwtc2UiKSx0aGlzLmhhbmRsZXNbc109Ii51aS1yZXNpemFibGUtIitzLHRoaXMuZWxlbWVudC5hcHBlbmQobik7dGhpcy5fcmVuZGVyQXhpcz1mdW5jdGlvbih0KXt2YXIgaSxzLG4sYTt0PXR8fHRoaXMuZWxlbWVudDtmb3IoaSBpbiB0aGlzLmhhbmRsZXMpdGhpcy5oYW5kbGVzW2ldLmNvbnN0cnVjdG9yPT09U3RyaW5nP3RoaXMuaGFuZGxlc1tpXT10aGlzLmVsZW1lbnQuY2hpbGRyZW4odGhpcy5oYW5kbGVzW2ldKS5maXJzdCgpLnNob3coKToodGhpcy5oYW5kbGVzW2ldLmpxdWVyeXx8dGhpcy5oYW5kbGVzW2ldLm5vZGVUeXBlKSYmKHRoaXMuaGFuZGxlc1tpXT1lKHRoaXMuaGFuZGxlc1tpXSksdGhpcy5fb24odGhpcy5oYW5kbGVzW2ldLHttb3VzZWRvd246by5fbW91c2VEb3dufSkpLHRoaXMuZWxlbWVudElzV3JhcHBlciYmdGhpcy5vcmlnaW5hbEVsZW1lbnRbMF0ubm9kZU5hbWUubWF0Y2goL14odGV4dGFyZWF8aW5wdXR8c2VsZWN0fGJ1dHRvbikkL2kpJiYocz1lKHRoaXMuaGFuZGxlc1tpXSx0aGlzLmVsZW1lbnQpLGE9L3N3fG5lfG53fHNlfG58cy8udGVzdChpKT9zLm91dGVySGVpZ2h0KCk6cy5vdXRlcldpZHRoKCksbj1bInBhZGRpbmciLC9uZXxud3xuLy50ZXN0KGkpPyJUb3AiOi9zZXxzd3xzLy50ZXN0KGkpPyJCb3R0b20iOi9eZSQvLnRlc3QoaSk/IlJpZ2h0IjoiTGVmdCJdLmpvaW4oIiIpLHQuY3NzKG4sYSksdGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemUoKSksdGhpcy5faGFuZGxlcz10aGlzLl9oYW5kbGVzLmFkZCh0aGlzLmhhbmRsZXNbaV0pfSx0aGlzLl9yZW5kZXJBeGlzKHRoaXMuZWxlbWVudCksdGhpcy5faGFuZGxlcz10aGlzLl9oYW5kbGVzLmFkZCh0aGlzLmVsZW1lbnQuZmluZCgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiKSksdGhpcy5faGFuZGxlcy5kaXNhYmxlU2VsZWN0aW9uKCksdGhpcy5faGFuZGxlcy5tb3VzZW92ZXIoZnVuY3Rpb24oKXtvLnJlc2l6aW5nfHwodGhpcy5jbGFzc05hbWUmJihuPXRoaXMuY2xhc3NOYW1lLm1hdGNoKC91aS1yZXNpemFibGUtKHNlfHN3fG5lfG53fG58ZXxzfHcpL2kpKSxvLmF4aXM9biYmblsxXT9uWzFdOiJzZSIpfSksci5hdXRvSGlkZSYmKHRoaXMuX2hhbmRsZXMuaGlkZSgpLGUodGhpcy5lbGVtZW50KS5hZGRDbGFzcygidWktcmVzaXphYmxlLWF1dG9oaWRlIikubW91c2VlbnRlcihmdW5jdGlvbigpe3IuZGlzYWJsZWR8fChlKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1yZXNpemFibGUtYXV0b2hpZGUiKSxvLl9oYW5kbGVzLnNob3coKSl9KS5tb3VzZWxlYXZlKGZ1bmN0aW9uKCl7ci5kaXNhYmxlZHx8by5yZXNpemluZ3x8KGUodGhpcykuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1hdXRvaGlkZSIpLG8uX2hhbmRsZXMuaGlkZSgpKX0pKSx0aGlzLl9tb3VzZUluaXQoKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9tb3VzZURlc3Ryb3koKTt2YXIgdCxpPWZ1bmN0aW9uKHQpe2UodCkucmVtb3ZlQ2xhc3MoInVpLXJlc2l6YWJsZSB1aS1yZXNpemFibGUtZGlzYWJsZWQgdWktcmVzaXphYmxlLXJlc2l6aW5nIikucmVtb3ZlRGF0YSgicmVzaXphYmxlIikucmVtb3ZlRGF0YSgidWktcmVzaXphYmxlIikudW5iaW5kKCIucmVzaXphYmxlIikuZmluZCgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiKS5yZW1vdmUoKX07cmV0dXJuIHRoaXMuZWxlbWVudElzV3JhcHBlciYmKGkodGhpcy5lbGVtZW50KSx0PXRoaXMuZWxlbWVudCx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe3Bvc2l0aW9uOnQuY3NzKCJwb3NpdGlvbiIpLHdpZHRoOnQub3V0ZXJXaWR0aCgpLGhlaWdodDp0Lm91dGVySGVpZ2h0KCksdG9wOnQuY3NzKCJ0b3AiKSxsZWZ0OnQuY3NzKCJsZWZ0Iil9KS5pbnNlcnRBZnRlcih0KSx0LnJlbW92ZSgpKSx0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoInJlc2l6ZSIsdGhpcy5vcmlnaW5hbFJlc2l6ZVN0eWxlKSxpKHRoaXMub3JpZ2luYWxFbGVtZW50KSx0aGlzfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKHQpe3ZhciBpLHMsbj0hMTtmb3IoaSBpbiB0aGlzLmhhbmRsZXMpcz1lKHRoaXMuaGFuZGxlc1tpXSlbMF0sKHM9PT10LnRhcmdldHx8ZS5jb250YWlucyhzLHQudGFyZ2V0KSkmJihuPSEwKTtyZXR1cm4hdGhpcy5vcHRpb25zLmRpc2FibGVkJiZufSxfbW91c2VTdGFydDpmdW5jdGlvbih0KXt2YXIgaSxzLG4sYT10aGlzLm9wdGlvbnMsbz10aGlzLmVsZW1lbnQ7cmV0dXJuIHRoaXMucmVzaXppbmc9ITAsdGhpcy5fcmVuZGVyUHJveHkoKSxpPXRoaXMuX251bSh0aGlzLmhlbHBlci5jc3MoImxlZnQiKSkscz10aGlzLl9udW0odGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSksYS5jb250YWlubWVudCYmKGkrPWUoYS5jb250YWlubWVudCkuc2Nyb2xsTGVmdCgpfHwwLHMrPWUoYS5jb250YWlubWVudCkuc2Nyb2xsVG9wKCl8fDApLHRoaXMub2Zmc2V0PXRoaXMuaGVscGVyLm9mZnNldCgpLHRoaXMucG9zaXRpb249e2xlZnQ6aSx0b3A6c30sdGhpcy5zaXplPXRoaXMuX2hlbHBlcj97d2lkdGg6dGhpcy5oZWxwZXIud2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWxwZXIuaGVpZ2h0KCl9Ont3aWR0aDpvLndpZHRoKCksaGVpZ2h0Om8uaGVpZ2h0KCl9LHRoaXMub3JpZ2luYWxTaXplPXRoaXMuX2hlbHBlcj97d2lkdGg6by5vdXRlcldpZHRoKCksaGVpZ2h0Om8ub3V0ZXJIZWlnaHQoKX06e3dpZHRoOm8ud2lkdGgoKSxoZWlnaHQ6by5oZWlnaHQoKX0sdGhpcy5zaXplRGlmZj17d2lkdGg6by5vdXRlcldpZHRoKCktby53aWR0aCgpLGhlaWdodDpvLm91dGVySGVpZ2h0KCktby5oZWlnaHQoKX0sdGhpcy5vcmlnaW5hbFBvc2l0aW9uPXtsZWZ0OmksdG9wOnN9LHRoaXMub3JpZ2luYWxNb3VzZVBvc2l0aW9uPXtsZWZ0OnQucGFnZVgsdG9wOnQucGFnZVl9LHRoaXMuYXNwZWN0UmF0aW89Im51bWJlciI9PXR5cGVvZiBhLmFzcGVjdFJhdGlvP2EuYXNwZWN0UmF0aW86dGhpcy5vcmlnaW5hbFNpemUud2lkdGgvdGhpcy5vcmlnaW5hbFNpemUuaGVpZ2h0fHwxLG49ZSgiLnVpLXJlc2l6YWJsZS0iK3RoaXMuYXhpcykuY3NzKCJjdXJzb3IiKSxlKCJib2R5IikuY3NzKCJjdXJzb3IiLCJhdXRvIj09PW4/dGhpcy5heGlzKyItcmVzaXplIjpuKSxvLmFkZENsYXNzKCJ1aS1yZXNpemFibGUtcmVzaXppbmciKSx0aGlzLl9wcm9wYWdhdGUoInN0YXJ0Iix0KSwhMH0sX21vdXNlRHJhZzpmdW5jdGlvbih0KXt2YXIgaSxzLG49dGhpcy5vcmlnaW5hbE1vdXNlUG9zaXRpb24sYT10aGlzLmF4aXMsbz10LnBhZ2VYLW4ubGVmdHx8MCxyPXQucGFnZVktbi50b3B8fDAsaD10aGlzLl9jaGFuZ2VbYV07cmV0dXJuIHRoaXMuX3VwZGF0ZVByZXZQcm9wZXJ0aWVzKCksaD8oaT1oLmFwcGx5KHRoaXMsW3QsbyxyXSksdGhpcy5fdXBkYXRlVmlydHVhbEJvdW5kYXJpZXModC5zaGlmdEtleSksKHRoaXMuX2FzcGVjdFJhdGlvfHx0LnNoaWZ0S2V5KSYmKGk9dGhpcy5fdXBkYXRlUmF0aW8oaSx0KSksaT10aGlzLl9yZXNwZWN0U2l6ZShpLHQpLHRoaXMuX3VwZGF0ZUNhY2hlKGkpLHRoaXMuX3Byb3BhZ2F0ZSgicmVzaXplIix0KSxzPXRoaXMuX2FwcGx5Q2hhbmdlcygpLCF0aGlzLl9oZWxwZXImJnRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoJiZ0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZSgpLGUuaXNFbXB0eU9iamVjdChzKXx8KHRoaXMuX3VwZGF0ZVByZXZQcm9wZXJ0aWVzKCksdGhpcy5fdHJpZ2dlcigicmVzaXplIix0LHRoaXMudWkoKSksdGhpcy5fYXBwbHlDaGFuZ2VzKCkpLCExKTohMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0KXt0aGlzLnJlc2l6aW5nPSExO3ZhciBpLHMsbixhLG8scixoLGw9dGhpcy5vcHRpb25zLHU9dGhpcztyZXR1cm4gdGhpcy5faGVscGVyJiYoaT10aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLHM9aS5sZW5ndGgmJi90ZXh0YXJlYS9pLnRlc3QoaVswXS5ub2RlTmFtZSksbj1zJiZ0aGlzLl9oYXNTY3JvbGwoaVswXSwibGVmdCIpPzA6dS5zaXplRGlmZi5oZWlnaHQsYT1zPzA6dS5zaXplRGlmZi53aWR0aCxvPXt3aWR0aDp1LmhlbHBlci53aWR0aCgpLWEsaGVpZ2h0OnUuaGVscGVyLmhlaWdodCgpLW59LHI9cGFyc2VJbnQodS5lbGVtZW50LmNzcygibGVmdCIpLDEwKSsodS5wb3NpdGlvbi5sZWZ0LXUub3JpZ2luYWxQb3NpdGlvbi5sZWZ0KXx8bnVsbCxoPXBhcnNlSW50KHUuZWxlbWVudC5jc3MoInRvcCIpLDEwKSsodS5wb3NpdGlvbi50b3AtdS5vcmlnaW5hbFBvc2l0aW9uLnRvcCl8fG51bGwsbC5hbmltYXRlfHx0aGlzLmVsZW1lbnQuY3NzKGUuZXh0ZW5kKG8se3RvcDpoLGxlZnQ6cn0pKSx1LmhlbHBlci5oZWlnaHQodS5zaXplLmhlaWdodCksdS5oZWxwZXIud2lkdGgodS5zaXplLndpZHRoKSx0aGlzLl9oZWxwZXImJiFsLmFuaW1hdGUmJnRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCkpLGUoImJvZHkiKS5jc3MoImN1cnNvciIsImF1dG8iKSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXJlc2l6YWJsZS1yZXNpemluZyIpLHRoaXMuX3Byb3BhZ2F0ZSgic3RvcCIsdCksdGhpcy5faGVscGVyJiZ0aGlzLmhlbHBlci5yZW1vdmUoKSwhMX0sX3VwZGF0ZVByZXZQcm9wZXJ0aWVzOmZ1bmN0aW9uKCl7dGhpcy5wcmV2UG9zaXRpb249e3RvcDp0aGlzLnBvc2l0aW9uLnRvcCxsZWZ0OnRoaXMucG9zaXRpb24ubGVmdH0sdGhpcy5wcmV2U2l6ZT17d2lkdGg6dGhpcy5zaXplLndpZHRoLGhlaWdodDp0aGlzLnNpemUuaGVpZ2h0fX0sX2FwcGx5Q2hhbmdlczpmdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiB0aGlzLnBvc2l0aW9uLnRvcCE9PXRoaXMucHJldlBvc2l0aW9uLnRvcCYmKGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIpLHRoaXMucG9zaXRpb24ubGVmdCE9PXRoaXMucHJldlBvc2l0aW9uLmxlZnQmJihlLmxlZnQ9dGhpcy5wb3NpdGlvbi5sZWZ0KyJweCIpLHRoaXMuc2l6ZS53aWR0aCE9PXRoaXMucHJldlNpemUud2lkdGgmJihlLndpZHRoPXRoaXMuc2l6ZS53aWR0aCsicHgiKSx0aGlzLnNpemUuaGVpZ2h0IT09dGhpcy5wcmV2U2l6ZS5oZWlnaHQmJihlLmhlaWdodD10aGlzLnNpemUuaGVpZ2h0KyJweCIpLHRoaXMuaGVscGVyLmNzcyhlKSxlfSxfdXBkYXRlVmlydHVhbEJvdW5kYXJpZXM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxzLG4sYSxvPXRoaXMub3B0aW9uczthPXttaW5XaWR0aDp0aGlzLl9pc051bWJlcihvLm1pbldpZHRoKT9vLm1pbldpZHRoOjAsbWF4V2lkdGg6dGhpcy5faXNOdW1iZXIoby5tYXhXaWR0aCk/by5tYXhXaWR0aDoxLzAsbWluSGVpZ2h0OnRoaXMuX2lzTnVtYmVyKG8ubWluSGVpZ2h0KT9vLm1pbkhlaWdodDowLG1heEhlaWdodDp0aGlzLl9pc051bWJlcihvLm1heEhlaWdodCk/by5tYXhIZWlnaHQ6MS8wfSwodGhpcy5fYXNwZWN0UmF0aW98fGUpJiYodD1hLm1pbkhlaWdodCp0aGlzLmFzcGVjdFJhdGlvLHM9YS5taW5XaWR0aC90aGlzLmFzcGVjdFJhdGlvLGk9YS5tYXhIZWlnaHQqdGhpcy5hc3BlY3RSYXRpbyxuPWEubWF4V2lkdGgvdGhpcy5hc3BlY3RSYXRpbyx0PmEubWluV2lkdGgmJihhLm1pbldpZHRoPXQpLHM+YS5taW5IZWlnaHQmJihhLm1pbkhlaWdodD1zKSxhLm1heFdpZHRoPmkmJihhLm1heFdpZHRoPWkpLGEubWF4SGVpZ2h0Pm4mJihhLm1heEhlaWdodD1uKSksdGhpcy5fdkJvdW5kYXJpZXM9YX0sX3VwZGF0ZUNhY2hlOmZ1bmN0aW9uKGUpe3RoaXMub2Zmc2V0PXRoaXMuaGVscGVyLm9mZnNldCgpLHRoaXMuX2lzTnVtYmVyKGUubGVmdCkmJih0aGlzLnBvc2l0aW9uLmxlZnQ9ZS5sZWZ0KSx0aGlzLl9pc051bWJlcihlLnRvcCkmJih0aGlzLnBvc2l0aW9uLnRvcD1lLnRvcCksdGhpcy5faXNOdW1iZXIoZS5oZWlnaHQpJiYodGhpcy5zaXplLmhlaWdodD1lLmhlaWdodCksdGhpcy5faXNOdW1iZXIoZS53aWR0aCkmJih0aGlzLnNpemUud2lkdGg9ZS53aWR0aCl9LF91cGRhdGVSYXRpbzpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnBvc2l0aW9uLGk9dGhpcy5zaXplLHM9dGhpcy5heGlzO3JldHVybiB0aGlzLl9pc051bWJlcihlLmhlaWdodCk/ZS53aWR0aD1lLmhlaWdodCp0aGlzLmFzcGVjdFJhdGlvOnRoaXMuX2lzTnVtYmVyKGUud2lkdGgpJiYoZS5oZWlnaHQ9ZS53aWR0aC90aGlzLmFzcGVjdFJhdGlvKSwic3ciPT09cyYmKGUubGVmdD10LmxlZnQrKGkud2lkdGgtZS53aWR0aCksZS50b3A9bnVsbCksIm53Ij09PXMmJihlLnRvcD10LnRvcCsoaS5oZWlnaHQtZS5oZWlnaHQpLGUubGVmdD10LmxlZnQrKGkud2lkdGgtZS53aWR0aCkpLGV9LF9yZXNwZWN0U2l6ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl92Qm91bmRhcmllcyxpPXRoaXMuYXhpcyxzPXRoaXMuX2lzTnVtYmVyKGUud2lkdGgpJiZ0Lm1heFdpZHRoJiZ0Lm1heFdpZHRoPGUud2lkdGgsbj10aGlzLl9pc051bWJlcihlLmhlaWdodCkmJnQubWF4SGVpZ2h0JiZ0Lm1heEhlaWdodDxlLmhlaWdodCxhPXRoaXMuX2lzTnVtYmVyKGUud2lkdGgpJiZ0Lm1pbldpZHRoJiZ0Lm1pbldpZHRoPmUud2lkdGgsbz10aGlzLl9pc051bWJlcihlLmhlaWdodCkmJnQubWluSGVpZ2h0JiZ0Lm1pbkhlaWdodD5lLmhlaWdodCxyPXRoaXMub3JpZ2luYWxQb3NpdGlvbi5sZWZ0K3RoaXMub3JpZ2luYWxTaXplLndpZHRoLGg9dGhpcy5wb3NpdGlvbi50b3ArdGhpcy5zaXplLmhlaWdodCxsPS9zd3xud3x3Ly50ZXN0KGkpLHU9L253fG5lfG4vLnRlc3QoaSk7cmV0dXJuIGEmJihlLndpZHRoPXQubWluV2lkdGgpLG8mJihlLmhlaWdodD10Lm1pbkhlaWdodCkscyYmKGUud2lkdGg9dC5tYXhXaWR0aCksbiYmKGUuaGVpZ2h0PXQubWF4SGVpZ2h0KSxhJiZsJiYoZS5sZWZ0PXItdC5taW5XaWR0aCkscyYmbCYmKGUubGVmdD1yLXQubWF4V2lkdGgpLG8mJnUmJihlLnRvcD1oLXQubWluSGVpZ2h0KSxuJiZ1JiYoZS50b3A9aC10Lm1heEhlaWdodCksZS53aWR0aHx8ZS5oZWlnaHR8fGUubGVmdHx8IWUudG9wP2Uud2lkdGh8fGUuaGVpZ2h0fHxlLnRvcHx8IWUubGVmdHx8KGUubGVmdD1udWxsKTplLnRvcD1udWxsLGV9LF9nZXRQYWRkaW5nUGx1c0JvcmRlckRpbWVuc2lvbnM6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsaT1bXSxzPVtlLmNzcygiYm9yZGVyVG9wV2lkdGgiKSxlLmNzcygiYm9yZGVyUmlnaHRXaWR0aCIpLGUuY3NzKCJib3JkZXJCb3R0b21XaWR0aCIpLGUuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKV0sbj1bZS5jc3MoInBhZGRpbmdUb3AiKSxlLmNzcygicGFkZGluZ1JpZ2h0IiksZS5jc3MoInBhZGRpbmdCb3R0b20iKSxlLmNzcygicGFkZGluZ0xlZnQiKV07ND50O3QrKylpW3RdPXBhcnNlSW50KHNbdF0sMTApfHwwLGlbdF0rPXBhcnNlSW50KG5bdF0sMTApfHwwO3JldHVybntoZWlnaHQ6aVswXStpWzJdLHdpZHRoOmlbMV0raVszXX19LF9wcm9wb3J0aW9uYWxseVJlc2l6ZTpmdW5jdGlvbigpe2lmKHRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoKWZvcih2YXIgZSx0PTAsaT10aGlzLmhlbHBlcnx8dGhpcy5lbGVtZW50O3RoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoPnQ7dCsrKWU9dGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50c1t0XSx0aGlzLm91dGVyRGltZW5zaW9uc3x8KHRoaXMub3V0ZXJEaW1lbnNpb25zPXRoaXMuX2dldFBhZGRpbmdQbHVzQm9yZGVyRGltZW5zaW9ucyhlKSksZS5jc3Moe2hlaWdodDppLmhlaWdodCgpLXRoaXMub3V0ZXJEaW1lbnNpb25zLmhlaWdodHx8MCx3aWR0aDppLndpZHRoKCktdGhpcy5vdXRlckRpbWVuc2lvbnMud2lkdGh8fDB9KX0sX3JlbmRlclByb3h5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LGk9dGhpcy5vcHRpb25zO3RoaXMuZWxlbWVudE9mZnNldD10Lm9mZnNldCgpLHRoaXMuX2hlbHBlcj8odGhpcy5oZWxwZXI9dGhpcy5oZWxwZXJ8fGUoIjxkaXYgc3R5bGU9J292ZXJmbG93OmhpZGRlbjsnPjwvZGl2PiIpLHRoaXMuaGVscGVyLmFkZENsYXNzKHRoaXMuX2hlbHBlcikuY3NzKHt3aWR0aDp0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpLTEsaGVpZ2h0OnRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpLTEscG9zaXRpb246ImFic29sdXRlIixsZWZ0OnRoaXMuZWxlbWVudE9mZnNldC5sZWZ0KyJweCIsdG9wOnRoaXMuZWxlbWVudE9mZnNldC50b3ArInB4Iix6SW5kZXg6KytpLnpJbmRleH0pLHRoaXMuaGVscGVyLmFwcGVuZFRvKCJib2R5IikuZGlzYWJsZVNlbGVjdGlvbigpKTp0aGlzLmhlbHBlcj10aGlzLmVsZW1lbnR9LF9jaGFuZ2U6e2U6ZnVuY3Rpb24oZSx0KXtyZXR1cm57d2lkdGg6dGhpcy5vcmlnaW5hbFNpemUud2lkdGgrdH19LHc6ZnVuY3Rpb24oZSx0KXt2YXIgaT10aGlzLm9yaWdpbmFsU2l6ZSxzPXRoaXMub3JpZ2luYWxQb3NpdGlvbjtyZXR1cm57bGVmdDpzLmxlZnQrdCx3aWR0aDppLndpZHRoLXR9fSxuOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcz10aGlzLm9yaWdpbmFsU2l6ZSxuPXRoaXMub3JpZ2luYWxQb3NpdGlvbjtyZXR1cm57dG9wOm4udG9wK2ksaGVpZ2h0OnMuaGVpZ2h0LWl9fSxzOmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm57aGVpZ2h0OnRoaXMub3JpZ2luYWxTaXplLmhlaWdodCtpfX0sc2U6ZnVuY3Rpb24odCxpLHMpe3JldHVybiBlLmV4dGVuZCh0aGlzLl9jaGFuZ2Uucy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLmUuYXBwbHkodGhpcyxbdCxpLHNdKSl9LHN3OmZ1bmN0aW9uKHQsaSxzKXtyZXR1cm4gZS5leHRlbmQodGhpcy5fY2hhbmdlLnMuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2NoYW5nZS53LmFwcGx5KHRoaXMsW3QsaSxzXSkpfSxuZTpmdW5jdGlvbih0LGkscyl7cmV0dXJuIGUuZXh0ZW5kKHRoaXMuX2NoYW5nZS5uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9jaGFuZ2UuZS5hcHBseSh0aGlzLFt0LGksc10pKX0sbnc6ZnVuY3Rpb24odCxpLHMpe3JldHVybiBlLmV4dGVuZCh0aGlzLl9jaGFuZ2Uubi5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLncuYXBwbHkodGhpcyxbdCxpLHNdKSl9fSxfcHJvcGFnYXRlOmZ1bmN0aW9uKHQsaSl7ZS51aS5wbHVnaW4uY2FsbCh0aGlzLHQsW2ksdGhpcy51aSgpXSksInJlc2l6ZSIhPT10JiZ0aGlzLl90cmlnZ2VyKHQsaSx0aGlzLnVpKCkpfSxwbHVnaW5zOnt9LHVpOmZ1bmN0aW9uKCl7cmV0dXJue29yaWdpbmFsRWxlbWVudDp0aGlzLm9yaWdpbmFsRWxlbWVudCxlbGVtZW50OnRoaXMuZWxlbWVudCxoZWxwZXI6dGhpcy5oZWxwZXIscG9zaXRpb246dGhpcy5wb3NpdGlvbixzaXplOnRoaXMuc2l6ZSxvcmlnaW5hbFNpemU6dGhpcy5vcmlnaW5hbFNpemUsb3JpZ2luYWxQb3NpdGlvbjp0aGlzLm9yaWdpbmFsUG9zaXRpb259fX0pLGUudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiYW5pbWF0ZSIse3N0b3A6ZnVuY3Rpb24odCl7dmFyIGk9ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIikscz1pLm9wdGlvbnMsbj1pLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzLGE9bi5sZW5ndGgmJi90ZXh0YXJlYS9pLnRlc3QoblswXS5ub2RlTmFtZSksbz1hJiZpLl9oYXNTY3JvbGwoblswXSwibGVmdCIpPzA6aS5zaXplRGlmZi5oZWlnaHQscj1hPzA6aS5zaXplRGlmZi53aWR0aCxoPXt3aWR0aDppLnNpemUud2lkdGgtcixoZWlnaHQ6aS5zaXplLmhlaWdodC1vfSxsPXBhcnNlSW50KGkuZWxlbWVudC5jc3MoImxlZnQiKSwxMCkrKGkucG9zaXRpb24ubGVmdC1pLm9yaWdpbmFsUG9zaXRpb24ubGVmdCl8fG51bGwsdT1wYXJzZUludChpLmVsZW1lbnQuY3NzKCJ0b3AiKSwxMCkrKGkucG9zaXRpb24udG9wLWkub3JpZ2luYWxQb3NpdGlvbi50b3ApfHxudWxsO2kuZWxlbWVudC5hbmltYXRlKGUuZXh0ZW5kKGgsdSYmbD97dG9wOnUsbGVmdDpsfTp7fSkse2R1cmF0aW9uOnMuYW5pbWF0ZUR1cmF0aW9uLGVhc2luZzpzLmFuaW1hdGVFYXNpbmcsc3RlcDpmdW5jdGlvbigpe3ZhciBzPXt3aWR0aDpwYXJzZUludChpLmVsZW1lbnQuY3NzKCJ3aWR0aCIpLDEwKSxoZWlnaHQ6cGFyc2VJbnQoaS5lbGVtZW50LmNzcygiaGVpZ2h0IiksMTApLHRvcDpwYXJzZUludChpLmVsZW1lbnQuY3NzKCJ0b3AiKSwxMCksbGVmdDpwYXJzZUludChpLmVsZW1lbnQuY3NzKCJsZWZ0IiksMTApfTtuJiZuLmxlbmd0aCYmZShuWzBdKS5jc3Moe3dpZHRoOnMud2lkdGgsaGVpZ2h0OnMuaGVpZ2h0fSksaS5fdXBkYXRlQ2FjaGUocyksaS5fcHJvcGFnYXRlKCJyZXNpemUiLHQpfX0pfX0pLGUudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiY29udGFpbm1lbnQiLHtzdGFydDpmdW5jdGlvbigpe3ZhciB0LGkscyxuLGEsbyxyLGg9ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIiksbD1oLm9wdGlvbnMsdT1oLmVsZW1lbnQsZD1sLmNvbnRhaW5tZW50LGM9ZCBpbnN0YW5jZW9mIGU/ZC5nZXQoMCk6L3BhcmVudC8udGVzdChkKT91LnBhcmVudCgpLmdldCgwKTpkO2MmJihoLmNvbnRhaW5lckVsZW1lbnQ9ZShjKSwvZG9jdW1lbnQvLnRlc3QoZCl8fGQ9PT1kb2N1bWVudD8oaC5jb250YWluZXJPZmZzZXQ9e2xlZnQ6MCx0b3A6MH0saC5jb250YWluZXJQb3NpdGlvbj17bGVmdDowLHRvcDowfSxoLnBhcmVudERhdGE9e2VsZW1lbnQ6ZShkb2N1bWVudCksbGVmdDowLHRvcDowLHdpZHRoOmUoZG9jdW1lbnQpLndpZHRoKCksaGVpZ2h0OmUoZG9jdW1lbnQpLmhlaWdodCgpfHxkb2N1bWVudC5ib2R5LnBhcmVudE5vZGUuc2Nyb2xsSGVpZ2h0fSk6KHQ9ZShjKSxpPVtdLGUoWyJUb3AiLCJSaWdodCIsIkxlZnQiLCJCb3R0b20iXSkuZWFjaChmdW5jdGlvbihlLHMpe2lbZV09aC5fbnVtKHQuY3NzKCJwYWRkaW5nIitzKSl9KSxoLmNvbnRhaW5lck9mZnNldD10Lm9mZnNldCgpLGguY29udGFpbmVyUG9zaXRpb249dC5wb3NpdGlvbigpLGguY29udGFpbmVyU2l6ZT17aGVpZ2h0OnQuaW5uZXJIZWlnaHQoKS1pWzNdLHdpZHRoOnQuaW5uZXJXaWR0aCgpLWlbMV19LHM9aC5jb250YWluZXJPZmZzZXQsbj1oLmNvbnRhaW5lclNpemUuaGVpZ2h0LGE9aC5jb250YWluZXJTaXplLndpZHRoLG89aC5faGFzU2Nyb2xsKGMsImxlZnQiKT9jLnNjcm9sbFdpZHRoOmEscj1oLl9oYXNTY3JvbGwoYyk/Yy5zY3JvbGxIZWlnaHQ6bixoLnBhcmVudERhdGE9e2VsZW1lbnQ6YyxsZWZ0OnMubGVmdCx0b3A6cy50b3Asd2lkdGg6byxoZWlnaHQ6cn0pKX0scmVzaXplOmZ1bmN0aW9uKHQpe3ZhciBpLHMsbixhLG89ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIikscj1vLm9wdGlvbnMsaD1vLmNvbnRhaW5lck9mZnNldCxsPW8ucG9zaXRpb24sdT1vLl9hc3BlY3RSYXRpb3x8dC5zaGlmdEtleSxkPXt0b3A6MCxsZWZ0OjB9LGM9by5jb250YWluZXJFbGVtZW50LHA9ITA7Y1swXSE9PWRvY3VtZW50JiYvc3RhdGljLy50ZXN0KGMuY3NzKCJwb3NpdGlvbiIpKSYmKGQ9aCksbC5sZWZ0PChvLl9oZWxwZXI/aC5sZWZ0OjApJiYoby5zaXplLndpZHRoPW8uc2l6ZS53aWR0aCsoby5faGVscGVyP28ucG9zaXRpb24ubGVmdC1oLmxlZnQ6by5wb3NpdGlvbi5sZWZ0LWQubGVmdCksdSYmKG8uc2l6ZS5oZWlnaHQ9by5zaXplLndpZHRoL28uYXNwZWN0UmF0aW8scD0hMSksby5wb3NpdGlvbi5sZWZ0PXIuaGVscGVyP2gubGVmdDowKSxsLnRvcDwoby5faGVscGVyP2gudG9wOjApJiYoby5zaXplLmhlaWdodD1vLnNpemUuaGVpZ2h0KyhvLl9oZWxwZXI/by5wb3NpdGlvbi50b3AtaC50b3A6by5wb3NpdGlvbi50b3ApLHUmJihvLnNpemUud2lkdGg9by5zaXplLmhlaWdodCpvLmFzcGVjdFJhdGlvLHA9ITEpLG8ucG9zaXRpb24udG9wPW8uX2hlbHBlcj9oLnRvcDowKSxuPW8uY29udGFpbmVyRWxlbWVudC5nZXQoMCk9PT1vLmVsZW1lbnQucGFyZW50KCkuZ2V0KDApLGE9L3JlbGF0aXZlfGFic29sdXRlLy50ZXN0KG8uY29udGFpbmVyRWxlbWVudC5jc3MoInBvc2l0aW9uIikpLG4mJmE/KG8ub2Zmc2V0LmxlZnQ9by5wYXJlbnREYXRhLmxlZnQrby5wb3NpdGlvbi5sZWZ0LG8ub2Zmc2V0LnRvcD1vLnBhcmVudERhdGEudG9wK28ucG9zaXRpb24udG9wKTooby5vZmZzZXQubGVmdD1vLmVsZW1lbnQub2Zmc2V0KCkubGVmdCxvLm9mZnNldC50b3A9by5lbGVtZW50Lm9mZnNldCgpLnRvcCksaT1NYXRoLmFicyhvLnNpemVEaWZmLndpZHRoKyhvLl9oZWxwZXI/by5vZmZzZXQubGVmdC1kLmxlZnQ6by5vZmZzZXQubGVmdC1oLmxlZnQpKSxzPU1hdGguYWJzKG8uc2l6ZURpZmYuaGVpZ2h0KyhvLl9oZWxwZXI/by5vZmZzZXQudG9wLWQudG9wOm8ub2Zmc2V0LnRvcC1oLnRvcCkpLGkrby5zaXplLndpZHRoPj1vLnBhcmVudERhdGEud2lkdGgmJihvLnNpemUud2lkdGg9by5wYXJlbnREYXRhLndpZHRoLWksdSYmKG8uc2l6ZS5oZWlnaHQ9by5zaXplLndpZHRoL28uYXNwZWN0UmF0aW8scD0hMSkpLHMrby5zaXplLmhlaWdodD49by5wYXJlbnREYXRhLmhlaWdodCYmKG8uc2l6ZS5oZWlnaHQ9by5wYXJlbnREYXRhLmhlaWdodC1zLHUmJihvLnNpemUud2lkdGg9by5zaXplLmhlaWdodCpvLmFzcGVjdFJhdGlvLHA9ITEpKSxwfHwoby5wb3NpdGlvbi5sZWZ0PW8ucHJldlBvc2l0aW9uLmxlZnQsby5wb3NpdGlvbi50b3A9by5wcmV2UG9zaXRpb24udG9wLG8uc2l6ZS53aWR0aD1vLnByZXZTaXplLndpZHRoLG8uc2l6ZS5oZWlnaHQ9by5wcmV2U2l6ZS5oZWlnaHQpfSxzdG9wOmZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIiksaT10Lm9wdGlvbnMscz10LmNvbnRhaW5lck9mZnNldCxuPXQuY29udGFpbmVyUG9zaXRpb24sYT10LmNvbnRhaW5lckVsZW1lbnQsbz1lKHQuaGVscGVyKSxyPW8ub2Zmc2V0KCksaD1vLm91dGVyV2lkdGgoKS10LnNpemVEaWZmLndpZHRoLGw9by5vdXRlckhlaWdodCgpLXQuc2l6ZURpZmYuaGVpZ2h0O3QuX2hlbHBlciYmIWkuYW5pbWF0ZSYmL3JlbGF0aXZlLy50ZXN0KGEuY3NzKCJwb3NpdGlvbiIpKSYmZSh0aGlzKS5jc3Moe2xlZnQ6ci5sZWZ0LW4ubGVmdC1zLmxlZnQsd2lkdGg6aCxoZWlnaHQ6bH0pLHQuX2hlbHBlciYmIWkuYW5pbWF0ZSYmL3N0YXRpYy8udGVzdChhLmNzcygicG9zaXRpb24iKSkmJmUodGhpcykuY3NzKHtsZWZ0OnIubGVmdC1uLmxlZnQtcy5sZWZ0LHdpZHRoOmgsaGVpZ2h0Omx9KX19KSxlLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImFsc29SZXNpemUiLHtzdGFydDpmdW5jdGlvbigpe3ZhciB0PWUodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLGk9dC5vcHRpb25zO2UoaS5hbHNvUmVzaXplKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTt0LmRhdGEoInVpLXJlc2l6YWJsZS1hbHNvcmVzaXplIix7d2lkdGg6cGFyc2VJbnQodC53aWR0aCgpLDEwKSxoZWlnaHQ6cGFyc2VJbnQodC5oZWlnaHQoKSwxMCksbGVmdDpwYXJzZUludCh0LmNzcygibGVmdCIpLDEwKSx0b3A6cGFyc2VJbnQodC5jc3MoInRvcCIpLDEwKX0pfSl9LHJlc2l6ZTpmdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLG49cy5vcHRpb25zLGE9cy5vcmlnaW5hbFNpemUsbz1zLm9yaWdpbmFsUG9zaXRpb24scj17aGVpZ2h0OnMuc2l6ZS5oZWlnaHQtYS5oZWlnaHR8fDAsd2lkdGg6cy5zaXplLndpZHRoLWEud2lkdGh8fDAsdG9wOnMucG9zaXRpb24udG9wLW8udG9wfHwwLGxlZnQ6cy5wb3NpdGlvbi5sZWZ0LW8ubGVmdHx8MH07ZShuLmFsc29SZXNpemUpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLHM9ZSh0aGlzKS5kYXRhKCJ1aS1yZXNpemFibGUtYWxzb3Jlc2l6ZSIpLG49e30sYT10LnBhcmVudHMoaS5vcmlnaW5hbEVsZW1lbnRbMF0pLmxlbmd0aD9bIndpZHRoIiwiaGVpZ2h0Il06WyJ3aWR0aCIsImhlaWdodCIsInRvcCIsImxlZnQiXTtlLmVhY2goYSxmdW5jdGlvbihlLHQpe3ZhciBpPShzW3RdfHwwKSsoclt0XXx8MCk7aSYmaT49MCYmKG5bdF09aXx8bnVsbCl9KSx0LmNzcyhuKX0pfSxzdG9wOmZ1bmN0aW9uKCl7ZSh0aGlzKS5yZW1vdmVEYXRhKCJyZXNpemFibGUtYWxzb3Jlc2l6ZSIpfX0pLGUudWkucGx1Z2luLmFkZCgicmVzaXphYmxlIiwiZ2hvc3QiLHtzdGFydDpmdW5jdGlvbigpe3ZhciB0PWUodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLGk9dC5vcHRpb25zLHM9dC5zaXplO3QuZ2hvc3Q9dC5vcmlnaW5hbEVsZW1lbnQuY2xvbmUoKSx0Lmdob3N0LmNzcyh7b3BhY2l0eTouMjUsZGlzcGxheToiYmxvY2siLHBvc2l0aW9uOiJyZWxhdGl2ZSIsaGVpZ2h0OnMuaGVpZ2h0LHdpZHRoOnMud2lkdGgsbWFyZ2luOjAsbGVmdDowLHRvcDowfSkuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1naG9zdCIpLmFkZENsYXNzKCJzdHJpbmciPT10eXBlb2YgaS5naG9zdD9pLmdob3N0OiIiKSx0Lmdob3N0LmFwcGVuZFRvKHQuaGVscGVyKX0scmVzaXplOmZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKS5yZXNpemFibGUoImluc3RhbmNlIik7dC5naG9zdCYmdC5naG9zdC5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsaGVpZ2h0OnQuc2l6ZS5oZWlnaHQsd2lkdGg6dC5zaXplLndpZHRofSl9LHN0b3A6ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLnJlc2l6YWJsZSgiaW5zdGFuY2UiKTt0Lmdob3N0JiZ0LmhlbHBlciYmdC5oZWxwZXIuZ2V0KDApLnJlbW92ZUNoaWxkKHQuZ2hvc3QuZ2V0KDApKX19KSxlLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImdyaWQiLHtyZXNpemU6ZnVuY3Rpb24oKXt2YXIgdCxpPWUodGhpcykucmVzaXphYmxlKCJpbnN0YW5jZSIpLHM9aS5vcHRpb25zLG49aS5zaXplLGE9aS5vcmlnaW5hbFNpemUsbz1pLm9yaWdpbmFsUG9zaXRpb24scj1pLmF4aXMsaD0ibnVtYmVyIj09dHlwZW9mIHMuZ3JpZD9bcy5ncmlkLHMuZ3JpZF06cy5ncmlkLGw9aFswXXx8MSx1PWhbMV18fDEsZD1NYXRoLnJvdW5kKChuLndpZHRoLWEud2lkdGgpL2wpKmwsYz1NYXRoLnJvdW5kKChuLmhlaWdodC1hLmhlaWdodCkvdSkqdSxwPWEud2lkdGgrZCxmPWEuaGVpZ2h0K2MsbT1zLm1heFdpZHRoJiZwPnMubWF4V2lkdGgsZz1zLm1heEhlaWdodCYmZj5zLm1heEhlaWdodCx2PXMubWluV2lkdGgmJnMubWluV2lkdGg+cCx5PXMubWluSGVpZ2h0JiZzLm1pbkhlaWdodD5mO3MuZ3JpZD1oLHYmJihwKz1sKSx5JiYoZis9dSksbSYmKHAtPWwpLGcmJihmLT11KSwvXihzZXxzfGUpJC8udGVzdChyKT8oaS5zaXplLndpZHRoPXAsaS5zaXplLmhlaWdodD1mKTovXihuZSkkLy50ZXN0KHIpPyhpLnNpemUud2lkdGg9cCxpLnNpemUuaGVpZ2h0PWYsaS5wb3NpdGlvbi50b3A9by50b3AtYyk6L14oc3cpJC8udGVzdChyKT8oaS5zaXplLndpZHRoPXAsaS5zaXplLmhlaWdodD1mLGkucG9zaXRpb24ubGVmdD1vLmxlZnQtZCk6KCgwPj1mLXV8fDA+PXAtbCkmJih0PWkuX2dldFBhZGRpbmdQbHVzQm9yZGVyRGltZW5zaW9ucyh0aGlzKSksZi11PjA/KGkuc2l6ZS5oZWlnaHQ9ZixpLnBvc2l0aW9uLnRvcD1vLnRvcC1jKTooZj11LXQuaGVpZ2h0LGkuc2l6ZS5oZWlnaHQ9ZixpLnBvc2l0aW9uLnRvcD1vLnRvcCthLmhlaWdodC1mKSxwLWw+MD8oaS5zaXplLndpZHRoPXAsaS5wb3NpdGlvbi5sZWZ0PW8ubGVmdC1kKToocD1sLXQud2lkdGgsaS5zaXplLndpZHRoPXAsaS5wb3NpdGlvbi5sZWZ0PW8ubGVmdCthLndpZHRoLXApKX19KSxlLnVpLnJlc2l6YWJsZSxlLndpZGdldCgidWkuc2VsZWN0YWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS40IixvcHRpb25zOnthcHBlbmRUbzoiYm9keSIsYXV0b1JlZnJlc2g6ITAsZGlzdGFuY2U6MCxmaWx0ZXI6IioiLHRvbGVyYW5jZToidG91Y2giLHNlbGVjdGVkOm51bGwsc2VsZWN0aW5nOm51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGwsdW5zZWxlY3RlZDpudWxsLHVuc2VsZWN0aW5nOm51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdCxpPXRoaXM7dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zZWxlY3RhYmxlIiksdGhpcy5kcmFnZ2VkPSExLHRoaXMucmVmcmVzaD1mdW5jdGlvbigpe3Q9ZShpLm9wdGlvbnMuZmlsdGVyLGkuZWxlbWVudFswXSksdC5hZGRDbGFzcygidWktc2VsZWN0ZWUiKSx0LmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC5vZmZzZXQoKTtlLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIix7ZWxlbWVudDp0aGlzLCRlbGVtZW50OnQsbGVmdDppLmxlZnQsdG9wOmkudG9wLHJpZ2h0OmkubGVmdCt0Lm91dGVyV2lkdGgoKSxib3R0b206aS50b3ArdC5vdXRlckhlaWdodCgpLHN0YXJ0c2VsZWN0ZWQ6ITEsc2VsZWN0ZWQ6dC5oYXNDbGFzcygidWktc2VsZWN0ZWQiKSxzZWxlY3Rpbmc6dC5oYXNDbGFzcygidWktc2VsZWN0aW5nIiksdW5zZWxlY3Rpbmc6dC5oYXNDbGFzcygidWktdW5zZWxlY3RpbmciKX0pfSl9LHRoaXMucmVmcmVzaCgpLHRoaXMuc2VsZWN0ZWVzPXQuYWRkQ2xhc3MoInVpLXNlbGVjdGVlIiksdGhpcy5fbW91c2VJbml0KCksdGhpcy5oZWxwZXI9ZSgiPGRpdiBjbGFzcz0ndWktc2VsZWN0YWJsZS1oZWxwZXInPjwvZGl2PiIpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWVzLnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZSIpLnJlbW92ZURhdGEoInNlbGVjdGFibGUtaXRlbSIpLHRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0YWJsZSB1aS1zZWxlY3RhYmxlLWRpc2FibGVkIiksdGhpcy5fbW91c2VEZXN0cm95KCl9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMscz10aGlzLm9wdGlvbnM7dGhpcy5vcG9zPVt0LnBhZ2VYLHQucGFnZVldLHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8KHRoaXMuc2VsZWN0ZWVzPWUocy5maWx0ZXIsdGhpcy5lbGVtZW50WzBdKSx0aGlzLl90cmlnZ2VyKCJzdGFydCIsdCksZShzLmFwcGVuZFRvKS5hcHBlbmQodGhpcy5oZWxwZXIpLHRoaXMuaGVscGVyLmNzcyh7bGVmdDp0LnBhZ2VYLHRvcDp0LnBhZ2VZLHdpZHRoOjAsaGVpZ2h0OjB9KSxzLmF1dG9SZWZyZXNoJiZ0aGlzLnJlZnJlc2goKSx0aGlzLnNlbGVjdGVlcy5maWx0ZXIoIi51aS1zZWxlY3RlZCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgcz1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7cy5zdGFydHNlbGVjdGVkPSEwLHQubWV0YUtleXx8dC5jdHJsS2V5fHwocy4kZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0ZWQiKSxzLnNlbGVjdGVkPSExLHMuJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXVuc2VsZWN0aW5nIikscy51bnNlbGVjdGluZz0hMCxpLl90cmlnZ2VyKCJ1bnNlbGVjdGluZyIsdCx7dW5zZWxlY3Rpbmc6cy5lbGVtZW50fSkpfSksZSh0LnRhcmdldCkucGFyZW50cygpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHMsbj1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7cmV0dXJuIG4/KHM9IXQubWV0YUtleSYmIXQuY3RybEtleXx8IW4uJGVsZW1lbnQuaGFzQ2xhc3MoInVpLXNlbGVjdGVkIiksbi4kZWxlbWVudC5yZW1vdmVDbGFzcyhzPyJ1aS11bnNlbGVjdGluZyI6InVpLXNlbGVjdGVkIikuYWRkQ2xhc3Mocz8idWktc2VsZWN0aW5nIjoidWktdW5zZWxlY3RpbmciKSxuLnVuc2VsZWN0aW5nPSFzLG4uc2VsZWN0aW5nPXMsbi5zZWxlY3RlZD1zLHM/aS5fdHJpZ2dlcigic2VsZWN0aW5nIix0LHtzZWxlY3Rpbmc6bi5lbGVtZW50fSk6aS5fdHJpZ2dlcigidW5zZWxlY3RpbmciLHQse3Vuc2VsZWN0aW5nOm4uZWxlbWVudH0pLCExKTp2b2lkIDB9KSl9LF9tb3VzZURyYWc6ZnVuY3Rpb24odCl7aWYodGhpcy5kcmFnZ2VkPSEwLCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQpe3ZhciBpLHM9dGhpcyxuPXRoaXMub3B0aW9ucyxhPXRoaXMub3Bvc1swXSxvPXRoaXMub3Bvc1sxXSxyPXQucGFnZVgsaD10LnBhZ2VZO3JldHVybiBhPnImJihpPXIscj1hLGE9aSksbz5oJiYoaT1oLGg9byxvPWkpLHRoaXMuaGVscGVyLmNzcyh7bGVmdDphLHRvcDpvLHdpZHRoOnItYSxoZWlnaHQ6aC1vfSksdGhpcy5zZWxlY3RlZXMuZWFjaChmdW5jdGlvbigpe3ZhciBpPWUuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKSxsPSExOwppJiZpLmVsZW1lbnQhPT1zLmVsZW1lbnRbMF0mJigidG91Y2giPT09bi50b2xlcmFuY2U/bD0hKGkubGVmdD5yfHxhPmkucmlnaHR8fGkudG9wPmh8fG8+aS5ib3R0b20pOiJmaXQiPT09bi50b2xlcmFuY2UmJihsPWkubGVmdD5hJiZyPmkucmlnaHQmJmkudG9wPm8mJmg+aS5ib3R0b20pLGw/KGkuc2VsZWN0ZWQmJihpLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpLGkuc2VsZWN0ZWQ9ITEpLGkudW5zZWxlY3RpbmcmJihpLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS11bnNlbGVjdGluZyIpLGkudW5zZWxlY3Rpbmc9ITEpLGkuc2VsZWN0aW5nfHwoaS4kZWxlbWVudC5hZGRDbGFzcygidWktc2VsZWN0aW5nIiksaS5zZWxlY3Rpbmc9ITAscy5fdHJpZ2dlcigic2VsZWN0aW5nIix0LHtzZWxlY3Rpbmc6aS5lbGVtZW50fSkpKTooaS5zZWxlY3RpbmcmJigodC5tZXRhS2V5fHx0LmN0cmxLZXkpJiZpLnN0YXJ0c2VsZWN0ZWQ/KGkuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGluZyIpLGkuc2VsZWN0aW5nPSExLGkuJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXNlbGVjdGVkIiksaS5zZWxlY3RlZD0hMCk6KGkuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGluZyIpLGkuc2VsZWN0aW5nPSExLGkuc3RhcnRzZWxlY3RlZCYmKGkuJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXVuc2VsZWN0aW5nIiksaS51bnNlbGVjdGluZz0hMCkscy5fdHJpZ2dlcigidW5zZWxlY3RpbmciLHQse3Vuc2VsZWN0aW5nOmkuZWxlbWVudH0pKSksaS5zZWxlY3RlZCYmKHQubWV0YUtleXx8dC5jdHJsS2V5fHxpLnN0YXJ0c2VsZWN0ZWR8fChpLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpLGkuc2VsZWN0ZWQ9ITEsaS4kZWxlbWVudC5hZGRDbGFzcygidWktdW5zZWxlY3RpbmciKSxpLnVuc2VsZWN0aW5nPSEwLHMuX3RyaWdnZXIoInVuc2VsZWN0aW5nIix0LHt1bnNlbGVjdGluZzppLmVsZW1lbnR9KSkpKSl9KSwhMX19LF9tb3VzZVN0b3A6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcztyZXR1cm4gdGhpcy5kcmFnZ2VkPSExLGUoIi51aS11bnNlbGVjdGluZyIsdGhpcy5lbGVtZW50WzBdKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHM9ZS5kYXRhKHRoaXMsInNlbGVjdGFibGUtaXRlbSIpO3MuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXVuc2VsZWN0aW5nIikscy51bnNlbGVjdGluZz0hMSxzLnN0YXJ0c2VsZWN0ZWQ9ITEsaS5fdHJpZ2dlcigidW5zZWxlY3RlZCIsdCx7dW5zZWxlY3RlZDpzLmVsZW1lbnR9KX0pLGUoIi51aS1zZWxlY3RpbmciLHRoaXMuZWxlbWVudFswXSkuZWFjaChmdW5jdGlvbigpe3ZhciBzPWUuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKTtzLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RpbmciKS5hZGRDbGFzcygidWktc2VsZWN0ZWQiKSxzLnNlbGVjdGluZz0hMSxzLnNlbGVjdGVkPSEwLHMuc3RhcnRzZWxlY3RlZD0hMCxpLl90cmlnZ2VyKCJzZWxlY3RlZCIsdCx7c2VsZWN0ZWQ6cy5lbGVtZW50fSl9KSx0aGlzLl90cmlnZ2VyKCJzdG9wIix0KSx0aGlzLmhlbHBlci5yZW1vdmUoKSwhMX19KSxlLndpZGdldCgidWkuc29ydGFibGUiLGUudWkubW91c2Use3ZlcnNpb246IjEuMTEuNCIsd2lkZ2V0RXZlbnRQcmVmaXg6InNvcnQiLHJlYWR5OiExLG9wdGlvbnM6e2FwcGVuZFRvOiJwYXJlbnQiLGF4aXM6ITEsY29ubmVjdFdpdGg6ITEsY29udGFpbm1lbnQ6ITEsY3Vyc29yOiJhdXRvIixjdXJzb3JBdDohMSxkcm9wT25FbXB0eTohMCxmb3JjZVBsYWNlaG9sZGVyU2l6ZTohMSxmb3JjZUhlbHBlclNpemU6ITEsZ3JpZDohMSxoYW5kbGU6ITEsaGVscGVyOiJvcmlnaW5hbCIsaXRlbXM6Ij4gKiIsb3BhY2l0eTohMSxwbGFjZWhvbGRlcjohMSxyZXZlcnQ6ITEsc2Nyb2xsOiEwLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNwZWVkOjIwLHNjb3BlOiJkZWZhdWx0Iix0b2xlcmFuY2U6ImludGVyc2VjdCIsekluZGV4OjFlMyxhY3RpdmF0ZTpudWxsLGJlZm9yZVN0b3A6bnVsbCxjaGFuZ2U6bnVsbCxkZWFjdGl2YXRlOm51bGwsb3V0Om51bGwsb3ZlcjpudWxsLHJlY2VpdmU6bnVsbCxyZW1vdmU6bnVsbCxzb3J0Om51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGwsdXBkYXRlOm51bGx9LF9pc092ZXJBeGlzOmZ1bmN0aW9uKGUsdCxpKXtyZXR1cm4gZT49dCYmdCtpPmV9LF9pc0Zsb2F0aW5nOmZ1bmN0aW9uKGUpe3JldHVybi9sZWZ0fHJpZ2h0Ly50ZXN0KGUuY3NzKCJmbG9hdCIpKXx8L2lubGluZXx0YWJsZS1jZWxsLy50ZXN0KGUuY3NzKCJkaXNwbGF5IikpfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXJDYWNoZT17fSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNvcnRhYmxlIiksdGhpcy5yZWZyZXNoKCksdGhpcy5vZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpLHRoaXMuX21vdXNlSW5pdCgpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpLHRoaXMucmVhZHk9ITB9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLl9zdXBlcihlLHQpLCJoYW5kbGUiPT09ZSYmdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCl9LF9zZXRIYW5kbGVDbGFzc05hbWU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuZmluZCgiLnVpLXNvcnRhYmxlLWhhbmRsZSIpLnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZS1oYW5kbGUiKSxlLmVhY2godGhpcy5pdGVtcyxmdW5jdGlvbigpeyh0aGlzLmluc3RhbmNlLm9wdGlvbnMuaGFuZGxlP3RoaXMuaXRlbS5maW5kKHRoaXMuaW5zdGFuY2Uub3B0aW9ucy5oYW5kbGUpOnRoaXMuaXRlbSkuYWRkQ2xhc3MoInVpLXNvcnRhYmxlLWhhbmRsZSIpfSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZSB1aS1zb3J0YWJsZS1kaXNhYmxlZCIpLmZpbmQoIi51aS1zb3J0YWJsZS1oYW5kbGUiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGFuZGxlIiksdGhpcy5fbW91c2VEZXN0cm95KCk7Zm9yKHZhciBlPXRoaXMuaXRlbXMubGVuZ3RoLTE7ZT49MDtlLS0pdGhpcy5pdGVtc1tlXS5pdGVtLnJlbW92ZURhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIpO3JldHVybiB0aGlzfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKHQsaSl7dmFyIHM9bnVsbCxuPSExLGE9dGhpcztyZXR1cm4gdGhpcy5yZXZlcnRpbmc/ITE6dGhpcy5vcHRpb25zLmRpc2FibGVkfHwic3RhdGljIj09PXRoaXMub3B0aW9ucy50eXBlPyExOih0aGlzLl9yZWZyZXNoSXRlbXModCksZSh0LnRhcmdldCkucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gZS5kYXRhKHRoaXMsYS53aWRnZXROYW1lKyItaXRlbSIpPT09YT8ocz1lKHRoaXMpLCExKTp2b2lkIDB9KSxlLmRhdGEodC50YXJnZXQsYS53aWRnZXROYW1lKyItaXRlbSIpPT09YSYmKHM9ZSh0LnRhcmdldCkpLHM/IXRoaXMub3B0aW9ucy5oYW5kbGV8fGl8fChlKHRoaXMub3B0aW9ucy5oYW5kbGUscykuZmluZCgiKiIpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcz09PXQudGFyZ2V0JiYobj0hMCl9KSxuKT8odGhpcy5jdXJyZW50SXRlbT1zLHRoaXMuX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zKCksITApOiExOiExKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24odCxpLHMpe3ZhciBuLGEsbz10aGlzLm9wdGlvbnM7aWYodGhpcy5jdXJyZW50Q29udGFpbmVyPXRoaXMsdGhpcy5yZWZyZXNoUG9zaXRpb25zKCksdGhpcy5oZWxwZXI9dGhpcy5fY3JlYXRlSGVscGVyKHQpLHRoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKSx0aGlzLl9jYWNoZU1hcmdpbnMoKSx0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoKSx0aGlzLm9mZnNldD10aGlzLmN1cnJlbnRJdGVtLm9mZnNldCgpLHRoaXMub2Zmc2V0PXt0b3A6dGhpcy5vZmZzZXQudG9wLXRoaXMubWFyZ2lucy50b3AsbGVmdDp0aGlzLm9mZnNldC5sZWZ0LXRoaXMubWFyZ2lucy5sZWZ0fSxlLmV4dGVuZCh0aGlzLm9mZnNldCx7Y2xpY2s6e2xlZnQ6dC5wYWdlWC10aGlzLm9mZnNldC5sZWZ0LHRvcDp0LnBhZ2VZLXRoaXMub2Zmc2V0LnRvcH0scGFyZW50OnRoaXMuX2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCl9KSx0aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKSx0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iKSx0aGlzLm9yaWdpbmFsUG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbih0KSx0aGlzLm9yaWdpbmFsUGFnZVg9dC5wYWdlWCx0aGlzLm9yaWdpbmFsUGFnZVk9dC5wYWdlWSxvLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKG8uY3Vyc29yQXQpLHRoaXMuZG9tUG9zaXRpb249e3ByZXY6dGhpcy5jdXJyZW50SXRlbS5wcmV2KClbMF0scGFyZW50OnRoaXMuY3VycmVudEl0ZW0ucGFyZW50KClbMF19LHRoaXMuaGVscGVyWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5jdXJyZW50SXRlbS5oaWRlKCksdGhpcy5fY3JlYXRlUGxhY2Vob2xkZXIoKSxvLmNvbnRhaW5tZW50JiZ0aGlzLl9zZXRDb250YWlubWVudCgpLG8uY3Vyc29yJiYiYXV0byIhPT1vLmN1cnNvciYmKGE9dGhpcy5kb2N1bWVudC5maW5kKCJib2R5IiksdGhpcy5zdG9yZWRDdXJzb3I9YS5jc3MoImN1cnNvciIpLGEuY3NzKCJjdXJzb3IiLG8uY3Vyc29yKSx0aGlzLnN0b3JlZFN0eWxlc2hlZXQ9ZSgiPHN0eWxlPip7IGN1cnNvcjogIitvLmN1cnNvcisiICFpbXBvcnRhbnQ7IH08L3N0eWxlPiIpLmFwcGVuZFRvKGEpKSxvLm9wYWNpdHkmJih0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiKSYmKHRoaXMuX3N0b3JlZE9wYWNpdHk9dGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5IikpLHRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsby5vcGFjaXR5KSksby56SW5kZXgmJih0aGlzLmhlbHBlci5jc3MoInpJbmRleCIpJiYodGhpcy5fc3RvcmVkWkluZGV4PXRoaXMuaGVscGVyLmNzcygiekluZGV4IikpLHRoaXMuaGVscGVyLmNzcygiekluZGV4IixvLnpJbmRleCkpLHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmIkhUTUwiIT09dGhpcy5zY3JvbGxQYXJlbnRbMF0udGFnTmFtZSYmKHRoaXMub3ZlcmZsb3dPZmZzZXQ9dGhpcy5zY3JvbGxQYXJlbnQub2Zmc2V0KCkpLHRoaXMuX3RyaWdnZXIoInN0YXJ0Iix0LHRoaXMuX3VpSGFzaCgpKSx0aGlzLl9wcmVzZXJ2ZUhlbHBlclByb3BvcnRpb25zfHx0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCksIXMpZm9yKG49dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO24+PTA7bi0tKXRoaXMuY29udGFpbmVyc1tuXS5fdHJpZ2dlcigiYWN0aXZhdGUiLHQsdGhpcy5fdWlIYXNoKHRoaXMpKTtyZXR1cm4gZS51aS5kZG1hbmFnZXImJihlLnVpLmRkbWFuYWdlci5jdXJyZW50PXRoaXMpLGUudWkuZGRtYW5hZ2VyJiYhby5kcm9wQmVoYXZpb3VyJiZlLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLHQpLHRoaXMuZHJhZ2dpbmc9ITAsdGhpcy5oZWxwZXIuYWRkQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpLHRoaXMuX21vdXNlRHJhZyh0KSwhMH0sX21vdXNlRHJhZzpmdW5jdGlvbih0KXt2YXIgaSxzLG4sYSxvPXRoaXMub3B0aW9ucyxyPSExO2Zvcih0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24odCksdGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSx0aGlzLmxhc3RQb3NpdGlvbkFic3x8KHRoaXMubGFzdFBvc2l0aW9uQWJzPXRoaXMucG9zaXRpb25BYnMpLHRoaXMub3B0aW9ucy5zY3JvbGwmJih0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJiJIVE1MIiE9PXRoaXMuc2Nyb2xsUGFyZW50WzBdLnRhZ05hbWU/KHRoaXMub3ZlcmZsb3dPZmZzZXQudG9wK3RoaXMuc2Nyb2xsUGFyZW50WzBdLm9mZnNldEhlaWdodC10LnBhZ2VZPG8uc2Nyb2xsU2Vuc2l0aXZpdHk/dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wK28uc2Nyb2xsU3BlZWQ6dC5wYWdlWS10aGlzLm92ZXJmbG93T2Zmc2V0LnRvcDxvLnNjcm9sbFNlbnNpdGl2aXR5JiYodGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wLW8uc2Nyb2xsU3BlZWQpLHRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdCt0aGlzLnNjcm9sbFBhcmVudFswXS5vZmZzZXRXaWR0aC10LnBhZ2VYPG8uc2Nyb2xsU2Vuc2l0aXZpdHk/dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQrby5zY3JvbGxTcGVlZDp0LnBhZ2VYLXRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdDxvLnNjcm9sbFNlbnNpdGl2aXR5JiYodGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQtby5zY3JvbGxTcGVlZCkpOih0LnBhZ2VZLXRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCk8by5zY3JvbGxTZW5zaXRpdml0eT9yPXRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKHRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCktby5zY3JvbGxTcGVlZCk6dGhpcy53aW5kb3cuaGVpZ2h0KCktKHQucGFnZVktdGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoKSk8by5zY3JvbGxTZW5zaXRpdml0eSYmKHI9dGhpcy5kb2N1bWVudC5zY3JvbGxUb3AodGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoKStvLnNjcm9sbFNwZWVkKSksdC5wYWdlWC10aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKTxvLnNjcm9sbFNlbnNpdGl2aXR5P3I9dGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KHRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCgpLW8uc2Nyb2xsU3BlZWQpOnRoaXMud2luZG93LndpZHRoKCktKHQucGFnZVgtdGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KCkpPG8uc2Nyb2xsU2Vuc2l0aXZpdHkmJihyPXRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCh0aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKStvLnNjcm9sbFNwZWVkKSkpLHIhPT0hMSYmZS51aS5kZG1hbmFnZXImJiFvLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsdCkpLHRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29sdXRlIiksdGhpcy5vcHRpb25zLmF4aXMmJiJ5Ij09PXRoaXMub3B0aW9ucy5heGlzfHwodGhpcy5oZWxwZXJbMF0uc3R5bGUubGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrInB4IiksdGhpcy5vcHRpb25zLmF4aXMmJiJ4Ij09PXRoaXMub3B0aW9ucy5heGlzfHwodGhpcy5oZWxwZXJbMF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIpLGk9dGhpcy5pdGVtcy5sZW5ndGgtMTtpPj0wO2ktLSlpZihzPXRoaXMuaXRlbXNbaV0sbj1zLml0ZW1bMF0sYT10aGlzLl9pbnRlcnNlY3RzV2l0aFBvaW50ZXIocyksYSYmcy5pbnN0YW5jZT09PXRoaXMuY3VycmVudENvbnRhaW5lciYmbiE9PXRoaXMuY3VycmVudEl0ZW1bMF0mJnRoaXMucGxhY2Vob2xkZXJbMT09PWE/Im5leHQiOiJwcmV2Il0oKVswXSE9PW4mJiFlLmNvbnRhaW5zKHRoaXMucGxhY2Vob2xkZXJbMF0sbikmJigic2VtaS1keW5hbWljIj09PXRoaXMub3B0aW9ucy50eXBlPyFlLmNvbnRhaW5zKHRoaXMuZWxlbWVudFswXSxuKTohMCkpe2lmKHRoaXMuZGlyZWN0aW9uPTE9PT1hPyJkb3duIjoidXAiLCJwb2ludGVyIiE9PXRoaXMub3B0aW9ucy50b2xlcmFuY2UmJiF0aGlzLl9pbnRlcnNlY3RzV2l0aFNpZGVzKHMpKWJyZWFrO3RoaXMuX3JlYXJyYW5nZSh0LHMpLHRoaXMuX3RyaWdnZXIoImNoYW5nZSIsdCx0aGlzLl91aUhhc2goKSk7YnJlYWt9cmV0dXJuIHRoaXMuX2NvbnRhY3RDb250YWluZXJzKHQpLGUudWkuZGRtYW5hZ2VyJiZlLnVpLmRkbWFuYWdlci5kcmFnKHRoaXMsdCksdGhpcy5fdHJpZ2dlcigic29ydCIsdCx0aGlzLl91aUhhc2goKSksdGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFicywhMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0LGkpe2lmKHQpe2lmKGUudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyx0KSx0aGlzLm9wdGlvbnMucmV2ZXJ0KXt2YXIgcz10aGlzLG49dGhpcy5wbGFjZWhvbGRlci5vZmZzZXQoKSxhPXRoaXMub3B0aW9ucy5heGlzLG89e307YSYmIngiIT09YXx8KG8ubGVmdD1uLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQtdGhpcy5tYXJnaW5zLmxlZnQrKHRoaXMub2Zmc2V0UGFyZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsTGVmdCkpLGEmJiJ5IiE9PWF8fChvLnRvcD1uLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLXRoaXMubWFyZ2lucy50b3ArKHRoaXMub2Zmc2V0UGFyZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsVG9wKSksdGhpcy5yZXZlcnRpbmc9ITAsZSh0aGlzLmhlbHBlcikuYW5pbWF0ZShvLHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnQsMTApfHw1MDAsZnVuY3Rpb24oKXtzLl9jbGVhcih0KX0pfWVsc2UgdGhpcy5fY2xlYXIodCxpKTtyZXR1cm4hMX19LGNhbmNlbDpmdW5jdGlvbigpe2lmKHRoaXMuZHJhZ2dpbmcpe3RoaXMuX21vdXNlVXAoe3RhcmdldDpudWxsfSksIm9yaWdpbmFsIj09PXRoaXMub3B0aW9ucy5oZWxwZXI/dGhpcy5jdXJyZW50SXRlbS5jc3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIik6dGhpcy5jdXJyZW50SXRlbS5zaG93KCk7Zm9yKHZhciB0PXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTt0Pj0wO3QtLSl0aGlzLmNvbnRhaW5lcnNbdF0uX3RyaWdnZXIoImRlYWN0aXZhdGUiLG51bGwsdGhpcy5fdWlIYXNoKHRoaXMpKSx0aGlzLmNvbnRhaW5lcnNbdF0uY29udGFpbmVyQ2FjaGUub3ZlciYmKHRoaXMuY29udGFpbmVyc1t0XS5fdHJpZ2dlcigib3V0IixudWxsLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW3RdLmNvbnRhaW5lckNhY2hlLm92ZXI9MCl9cmV0dXJuIHRoaXMucGxhY2Vob2xkZXImJih0aGlzLnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUmJnRoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKSwib3JpZ2luYWwiIT09dGhpcy5vcHRpb25zLmhlbHBlciYmdGhpcy5oZWxwZXImJnRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUmJnRoaXMuaGVscGVyLnJlbW92ZSgpLGUuZXh0ZW5kKHRoaXMse2hlbHBlcjpudWxsLGRyYWdnaW5nOiExLHJldmVydGluZzohMSxfbm9GaW5hbFNvcnQ6bnVsbH0pLHRoaXMuZG9tUG9zaXRpb24ucHJldj9lKHRoaXMuZG9tUG9zaXRpb24ucHJldikuYWZ0ZXIodGhpcy5jdXJyZW50SXRlbSk6ZSh0aGlzLmRvbVBvc2l0aW9uLnBhcmVudCkucHJlcGVuZCh0aGlzLmN1cnJlbnRJdGVtKSksdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMuX2dldEl0ZW1zQXNqUXVlcnkodCYmdC5jb25uZWN0ZWQpLHM9W107cmV0dXJuIHQ9dHx8e30sZShpKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9KGUodC5pdGVtfHx0aGlzKS5hdHRyKHQuYXR0cmlidXRlfHwiaWQiKXx8IiIpLm1hdGNoKHQuZXhwcmVzc2lvbnx8LyguKylbXC09X10oLispLyk7aSYmcy5wdXNoKCh0LmtleXx8aVsxXSsiW10iKSsiPSIrKHQua2V5JiZ0LmV4cHJlc3Npb24/aVsxXTppWzJdKSl9KSwhcy5sZW5ndGgmJnQua2V5JiZzLnB1c2godC5rZXkrIj0iKSxzLmpvaW4oIiYiKX0sdG9BcnJheTpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5KHQmJnQuY29ubmVjdGVkKSxzPVtdO3JldHVybiB0PXR8fHt9LGkuZWFjaChmdW5jdGlvbigpe3MucHVzaChlKHQuaXRlbXx8dGhpcykuYXR0cih0LmF0dHJpYnV0ZXx8ImlkIil8fCIiKX0pLHN9LF9pbnRlcnNlY3RzV2l0aDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnBvc2l0aW9uQWJzLmxlZnQsaT10K3RoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgscz10aGlzLnBvc2l0aW9uQWJzLnRvcCxuPXMrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsYT1lLmxlZnQsbz1hK2Uud2lkdGgscj1lLnRvcCxoPXIrZS5oZWlnaHQsbD10aGlzLm9mZnNldC5jbGljay50b3AsdT10aGlzLm9mZnNldC5jbGljay5sZWZ0LGQ9IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHMrbD5yJiZoPnMrbCxjPSJ5Ij09PXRoaXMub3B0aW9ucy5heGlzfHx0K3U+YSYmbz50K3UscD1kJiZjO3JldHVybiJwb2ludGVyIj09PXRoaXMub3B0aW9ucy50b2xlcmFuY2V8fHRoaXMub3B0aW9ucy5mb3JjZVBvaW50ZXJGb3JDb250YWluZXJzfHwicG9pbnRlciIhPT10aGlzLm9wdGlvbnMudG9sZXJhbmNlJiZ0aGlzLmhlbHBlclByb3BvcnRpb25zW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoiaGVpZ2h0Il0+ZVt0aGlzLmZsb2F0aW5nPyJ3aWR0aCI6ImhlaWdodCJdP3A6dCt0aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLzI+YSYmbz5pLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMiYmcyt0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yPnImJmg+bi10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yfSxfaW50ZXJzZWN0c1dpdGhQb2ludGVyOmZ1bmN0aW9uKGUpe3ZhciB0PSJ4Ij09PXRoaXMub3B0aW9ucy5heGlzfHx0aGlzLl9pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMudG9wK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCxlLnRvcCxlLmhlaWdodCksaT0ieSI9PT10aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5faXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCxlLmxlZnQsZS53aWR0aCkscz10JiZpLG49dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksYT10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO3JldHVybiBzP3RoaXMuZmxvYXRpbmc/YSYmInJpZ2h0Ij09PWF8fCJkb3duIj09PW4/MjoxOm4mJigiZG93biI9PT1uPzI6MSk6ITF9LF9pbnRlcnNlY3RzV2l0aFNpZGVzOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2lzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2sudG9wLGUudG9wK2UuaGVpZ2h0LzIsZS5oZWlnaHQpLGk9dGhpcy5faXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCxlLmxlZnQrZS53aWR0aC8yLGUud2lkdGgpLHM9dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksbj10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO3JldHVybiB0aGlzLmZsb2F0aW5nJiZuPyJyaWdodCI9PT1uJiZpfHwibGVmdCI9PT1uJiYhaTpzJiYoImRvd24iPT09cyYmdHx8InVwIj09PXMmJiF0KX0sX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMucG9zaXRpb25BYnMudG9wLXRoaXMubGFzdFBvc2l0aW9uQWJzLnRvcDtyZXR1cm4gMCE9PWUmJihlPjA/ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5sYXN0UG9zaXRpb25BYnMubGVmdDtyZXR1cm4gMCE9PWUmJihlPjA/InJpZ2h0IjoibGVmdCIpfSxyZWZyZXNoOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9yZWZyZXNoSXRlbXMoZSksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5yZWZyZXNoUG9zaXRpb25zKCksdGhpc30sX2Nvbm5lY3RXaXRoOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO3JldHVybiBlLmNvbm5lY3RXaXRoLmNvbnN0cnVjdG9yPT09U3RyaW5nP1tlLmNvbm5lY3RXaXRoXTplLmNvbm5lY3RXaXRofSxfZ2V0SXRlbXNBc2pRdWVyeTpmdW5jdGlvbih0KXtmdW5jdGlvbiBpKCl7ci5wdXNoKHRoaXMpfXZhciBzLG4sYSxvLHI9W10saD1bXSxsPXRoaXMuX2Nvbm5lY3RXaXRoKCk7aWYobCYmdClmb3Iocz1sLmxlbmd0aC0xO3M+PTA7cy0tKWZvcihhPWUobFtzXSx0aGlzLmRvY3VtZW50WzBdKSxuPWEubGVuZ3RoLTE7bj49MDtuLS0pbz1lLmRhdGEoYVtuXSx0aGlzLndpZGdldEZ1bGxOYW1lKSxvJiZvIT09dGhpcyYmIW8ub3B0aW9ucy5kaXNhYmxlZCYmaC5wdXNoKFtlLmlzRnVuY3Rpb24oby5vcHRpb25zLml0ZW1zKT9vLm9wdGlvbnMuaXRlbXMuY2FsbChvLmVsZW1lbnQpOmUoby5vcHRpb25zLml0ZW1zLG8uZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSxvXSk7Zm9yKGgucHVzaChbZS5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5pdGVtcyk/dGhpcy5vcHRpb25zLml0ZW1zLmNhbGwodGhpcy5lbGVtZW50LG51bGwse29wdGlvbnM6dGhpcy5vcHRpb25zLGl0ZW06dGhpcy5jdXJyZW50SXRlbX0pOmUodGhpcy5vcHRpb25zLml0ZW1zLHRoaXMuZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSx0aGlzXSkscz1oLmxlbmd0aC0xO3M+PTA7cy0tKWhbc11bMF0uZWFjaChpKTtyZXR1cm4gZShyKX0sX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jdXJyZW50SXRlbS5maW5kKCI6ZGF0YSgiK3RoaXMud2lkZ2V0TmFtZSsiLWl0ZW0pIik7dGhpcy5pdGVtcz1lLmdyZXAodGhpcy5pdGVtcyxmdW5jdGlvbihlKXtmb3IodmFyIGk9MDt0Lmxlbmd0aD5pO2krKylpZih0W2ldPT09ZS5pdGVtWzBdKXJldHVybiExO3JldHVybiEwfSl9LF9yZWZyZXNoSXRlbXM6ZnVuY3Rpb24odCl7dGhpcy5pdGVtcz1bXSx0aGlzLmNvbnRhaW5lcnM9W3RoaXNdO3ZhciBpLHMsbixhLG8scixoLGwsdT10aGlzLml0ZW1zLGQ9W1tlLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnRbMF0sdCx7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6ZSh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KSx0aGlzXV0sYz10aGlzLl9jb25uZWN0V2l0aCgpO2lmKGMmJnRoaXMucmVhZHkpZm9yKGk9Yy5sZW5ndGgtMTtpPj0wO2ktLSlmb3Iobj1lKGNbaV0sdGhpcy5kb2N1bWVudFswXSkscz1uLmxlbmd0aC0xO3M+PTA7cy0tKWE9ZS5kYXRhKG5bc10sdGhpcy53aWRnZXRGdWxsTmFtZSksYSYmYSE9PXRoaXMmJiFhLm9wdGlvbnMuZGlzYWJsZWQmJihkLnB1c2goW2UuaXNGdW5jdGlvbihhLm9wdGlvbnMuaXRlbXMpP2Eub3B0aW9ucy5pdGVtcy5jYWxsKGEuZWxlbWVudFswXSx0LHtpdGVtOnRoaXMuY3VycmVudEl0ZW19KTplKGEub3B0aW9ucy5pdGVtcyxhLmVsZW1lbnQpLGFdKSx0aGlzLmNvbnRhaW5lcnMucHVzaChhKSk7Zm9yKGk9ZC5sZW5ndGgtMTtpPj0wO2ktLSlmb3Iobz1kW2ldWzFdLHI9ZFtpXVswXSxzPTAsbD1yLmxlbmd0aDtsPnM7cysrKWg9ZShyW3NdKSxoLmRhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIsbyksdS5wdXNoKHtpdGVtOmgsaW5zdGFuY2U6byx3aWR0aDowLGhlaWdodDowLGxlZnQ6MCx0b3A6MH0pfSxyZWZyZXNoUG9zaXRpb25zOmZ1bmN0aW9uKHQpe3RoaXMuZmxvYXRpbmc9dGhpcy5pdGVtcy5sZW5ndGg/IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHRoaXMuX2lzRmxvYXRpbmcodGhpcy5pdGVtc1swXS5pdGVtKTohMSx0aGlzLm9mZnNldFBhcmVudCYmdGhpcy5oZWxwZXImJih0aGlzLm9mZnNldC5wYXJlbnQ9dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkpO3ZhciBpLHMsbixhO2ZvcihpPXRoaXMuaXRlbXMubGVuZ3RoLTE7aT49MDtpLS0pcz10aGlzLml0ZW1zW2ldLHMuaW5zdGFuY2UhPT10aGlzLmN1cnJlbnRDb250YWluZXImJnRoaXMuY3VycmVudENvbnRhaW5lciYmcy5pdGVtWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXXx8KG49dGhpcy5vcHRpb25zLnRvbGVyYW5jZUVsZW1lbnQ/ZSh0aGlzLm9wdGlvbnMudG9sZXJhbmNlRWxlbWVudCxzLml0ZW0pOnMuaXRlbSx0fHwocy53aWR0aD1uLm91dGVyV2lkdGgoKSxzLmhlaWdodD1uLm91dGVySGVpZ2h0KCkpLGE9bi5vZmZzZXQoKSxzLmxlZnQ9YS5sZWZ0LHMudG9wPWEudG9wKTtpZih0aGlzLm9wdGlvbnMuY3VzdG9tJiZ0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJzKXRoaXMub3B0aW9ucy5jdXN0b20ucmVmcmVzaENvbnRhaW5lcnMuY2FsbCh0aGlzKTtlbHNlIGZvcihpPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtpPj0wO2ktLSlhPXRoaXMuY29udGFpbmVyc1tpXS5lbGVtZW50Lm9mZnNldCgpLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS5sZWZ0PWEubGVmdCx0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUudG9wPWEudG9wLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS53aWR0aD10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vdXRlcldpZHRoKCksdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLmhlaWdodD10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vdXRlckhlaWdodCgpO3JldHVybiB0aGlzfSxfY3JlYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24odCl7dD10fHx0aGlzO3ZhciBpLHM9dC5vcHRpb25zO3MucGxhY2Vob2xkZXImJnMucGxhY2Vob2xkZXIuY29uc3RydWN0b3IhPT1TdHJpbmd8fChpPXMucGxhY2Vob2xkZXIscy5wbGFjZWhvbGRlcj17ZWxlbWVudDpmdW5jdGlvbigpe3ZhciBzPXQuY3VycmVudEl0ZW1bMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxuPWUoIjwiK3MrIj4iLHQuZG9jdW1lbnRbMF0pLmFkZENsYXNzKGl8fHQuY3VycmVudEl0ZW1bMF0uY2xhc3NOYW1lKyIgdWktc29ydGFibGUtcGxhY2Vob2xkZXIiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIik7cmV0dXJuInRib2R5Ij09PXM/dC5fY3JlYXRlVHJQbGFjZWhvbGRlcih0LmN1cnJlbnRJdGVtLmZpbmQoInRyIikuZXEoMCksZSgiPHRyPiIsdC5kb2N1bWVudFswXSkuYXBwZW5kVG8obikpOiJ0ciI9PT1zP3QuX2NyZWF0ZVRyUGxhY2Vob2xkZXIodC5jdXJyZW50SXRlbSxuKToiaW1nIj09PXMmJm4uYXR0cigic3JjIix0LmN1cnJlbnRJdGVtLmF0dHIoInNyYyIpKSxpfHxuLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLG59LHVwZGF0ZTpmdW5jdGlvbihlLG4peyghaXx8cy5mb3JjZVBsYWNlaG9sZGVyU2l6ZSkmJihuLmhlaWdodCgpfHxuLmhlaWdodCh0LmN1cnJlbnRJdGVtLmlubmVySGVpZ2h0KCktcGFyc2VJbnQodC5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdUb3AiKXx8MCwxMCktcGFyc2VJbnQodC5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdCb3R0b20iKXx8MCwxMCkpLG4ud2lkdGgoKXx8bi53aWR0aCh0LmN1cnJlbnRJdGVtLmlubmVyV2lkdGgoKS1wYXJzZUludCh0LmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ0xlZnQiKXx8MCwxMCktcGFyc2VJbnQodC5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdSaWdodCIpfHwwLDEwKSkpfX0pLHQucGxhY2Vob2xkZXI9ZShzLnBsYWNlaG9sZGVyLmVsZW1lbnQuY2FsbCh0LmVsZW1lbnQsdC5jdXJyZW50SXRlbSkpLHQuY3VycmVudEl0ZW0uYWZ0ZXIodC5wbGFjZWhvbGRlcikscy5wbGFjZWhvbGRlci51cGRhdGUodCx0LnBsYWNlaG9sZGVyKX0sX2NyZWF0ZVRyUGxhY2Vob2xkZXI6ZnVuY3Rpb24odCxpKXt2YXIgcz10aGlzO3QuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7ZSgiPHRkPiYjMTYwOzwvdGQ+IixzLmRvY3VtZW50WzBdKS5hdHRyKCJjb2xzcGFuIixlKHRoaXMpLmF0dHIoImNvbHNwYW4iKXx8MSkuYXBwZW5kVG8oaSl9KX0sX2NvbnRhY3RDb250YWluZXJzOmZ1bmN0aW9uKHQpe3ZhciBpLHMsbixhLG8scixoLGwsdSxkLGM9bnVsbCxwPW51bGw7Zm9yKGk9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2k+PTA7aS0tKWlmKCFlLmNvbnRhaW5zKHRoaXMuY3VycmVudEl0ZW1bMF0sdGhpcy5jb250YWluZXJzW2ldLmVsZW1lbnRbMF0pKWlmKHRoaXMuX2ludGVyc2VjdHNXaXRoKHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZSkpe2lmKGMmJmUuY29udGFpbnModGhpcy5jb250YWluZXJzW2ldLmVsZW1lbnRbMF0sYy5lbGVtZW50WzBdKSljb250aW51ZTtjPXRoaXMuY29udGFpbmVyc1tpXSxwPWl9ZWxzZSB0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUub3ZlciYmKHRoaXMuY29udGFpbmVyc1tpXS5fdHJpZ2dlcigib3V0Iix0LHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLm92ZXI9MCk7aWYoYylpZigxPT09dGhpcy5jb250YWluZXJzLmxlbmd0aCl0aGlzLmNvbnRhaW5lcnNbcF0uY29udGFpbmVyQ2FjaGUub3Zlcnx8KHRoaXMuY29udGFpbmVyc1twXS5fdHJpZ2dlcigib3ZlciIsdCx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY29udGFpbmVyc1twXS5jb250YWluZXJDYWNoZS5vdmVyPTEpO2Vsc2V7Zm9yKG49MWU0LGE9bnVsbCx1PWMuZmxvYXRpbmd8fHRoaXMuX2lzRmxvYXRpbmcodGhpcy5jdXJyZW50SXRlbSksbz11PyJsZWZ0IjoidG9wIixyPXU/IndpZHRoIjoiaGVpZ2h0IixkPXU/ImNsaWVudFgiOiJjbGllbnRZIixzPXRoaXMuaXRlbXMubGVuZ3RoLTE7cz49MDtzLS0pZS5jb250YWlucyh0aGlzLmNvbnRhaW5lcnNbcF0uZWxlbWVudFswXSx0aGlzLml0ZW1zW3NdLml0ZW1bMF0pJiZ0aGlzLml0ZW1zW3NdLml0ZW1bMF0hPT10aGlzLmN1cnJlbnRJdGVtWzBdJiYoaD10aGlzLml0ZW1zW3NdLml0ZW0ub2Zmc2V0KClbb10sbD0hMSx0W2RdLWg+dGhpcy5pdGVtc1tzXVtyXS8yJiYobD0hMCksbj5NYXRoLmFicyh0W2RdLWgpJiYobj1NYXRoLmFicyh0W2RdLWgpLGE9dGhpcy5pdGVtc1tzXSx0aGlzLmRpcmVjdGlvbj1sPyJ1cCI6ImRvd24iKSk7aWYoIWEmJiF0aGlzLm9wdGlvbnMuZHJvcE9uRW1wdHkpcmV0dXJuO2lmKHRoaXMuY3VycmVudENvbnRhaW5lcj09PXRoaXMuY29udGFpbmVyc1twXSlyZXR1cm4gdGhpcy5jdXJyZW50Q29udGFpbmVyLmNvbnRhaW5lckNhY2hlLm92ZXJ8fCh0aGlzLmNvbnRhaW5lcnNbcF0uX3RyaWdnZXIoIm92ZXIiLHQsdGhpcy5fdWlIYXNoKCkpLHRoaXMuY3VycmVudENvbnRhaW5lci5jb250YWluZXJDYWNoZS5vdmVyPTEpLHZvaWQgMDthP3RoaXMuX3JlYXJyYW5nZSh0LGEsbnVsbCwhMCk6dGhpcy5fcmVhcnJhbmdlKHQsbnVsbCx0aGlzLmNvbnRhaW5lcnNbcF0uZWxlbWVudCwhMCksdGhpcy5fdHJpZ2dlcigiY2hhbmdlIix0LHRoaXMuX3VpSGFzaCgpKSx0aGlzLmNvbnRhaW5lcnNbcF0uX3RyaWdnZXIoImNoYW5nZSIsdCx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY3VycmVudENvbnRhaW5lcj10aGlzLmNvbnRhaW5lcnNbcF0sdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyLnVwZGF0ZSh0aGlzLmN1cnJlbnRDb250YWluZXIsdGhpcy5wbGFjZWhvbGRlciksdGhpcy5jb250YWluZXJzW3BdLl90cmlnZ2VyKCJvdmVyIix0LHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW3BdLmNvbnRhaW5lckNhY2hlLm92ZXI9MX19LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLHM9ZS5pc0Z1bmN0aW9uKGkuaGVscGVyKT9lKGkuaGVscGVyLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbdCx0aGlzLmN1cnJlbnRJdGVtXSkpOiJjbG9uZSI9PT1pLmhlbHBlcj90aGlzLmN1cnJlbnRJdGVtLmNsb25lKCk6dGhpcy5jdXJyZW50SXRlbTtyZXR1cm4gcy5wYXJlbnRzKCJib2R5IikubGVuZ3RofHxlKCJwYXJlbnQiIT09aS5hcHBlbmRUbz9pLmFwcGVuZFRvOnRoaXMuY3VycmVudEl0ZW1bMF0ucGFyZW50Tm9kZSlbMF0uYXBwZW5kQ2hpbGQoc1swXSksc1swXT09PXRoaXMuY3VycmVudEl0ZW1bMF0mJih0aGlzLl9zdG9yZWRDU1M9e3dpZHRoOnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUud2lkdGgsaGVpZ2h0OnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUuaGVpZ2h0LHBvc2l0aW9uOnRoaXMuY3VycmVudEl0ZW0uY3NzKCJwb3NpdGlvbiIpLHRvcDp0aGlzLmN1cnJlbnRJdGVtLmNzcygidG9wIiksbGVmdDp0aGlzLmN1cnJlbnRJdGVtLmNzcygibGVmdCIpfSksKCFzWzBdLnN0eWxlLndpZHRofHxpLmZvcmNlSGVscGVyU2l6ZSkmJnMud2lkdGgodGhpcy5jdXJyZW50SXRlbS53aWR0aCgpKSwoIXNbMF0uc3R5bGUuaGVpZ2h0fHxpLmZvcmNlSGVscGVyU2l6ZSkmJnMuaGVpZ2h0KHRoaXMuY3VycmVudEl0ZW0uaGVpZ2h0KCkpLHN9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKHQpeyJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dC5zcGxpdCgiICIpKSxlLmlzQXJyYXkodCkmJih0PXtsZWZ0Oit0WzBdLHRvcDordFsxXXx8MH0pLCJsZWZ0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXQubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdC5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiB0JiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXQudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gdCYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10LmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3RoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpO3ZhciB0PXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpO3JldHVybiJhYnNvbHV0ZSI9PT10aGlzLmNzc1Bvc2l0aW9uJiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJmUuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pJiYodC5sZWZ0Kz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCksdC50b3ArPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpKSwodGhpcy5vZmZzZXRQYXJlbnRbMF09PT10aGlzLmRvY3VtZW50WzBdLmJvZHl8fHRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUmJiJodG1sIj09PXRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmZS51aS5pZSkmJih0PXt0b3A6MCxsZWZ0OjB9KSx7dG9wOnQudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OnQubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYoInJlbGF0aXZlIj09PXRoaXMuY3NzUG9zaXRpb24pe3ZhciBlPXRoaXMuY3VycmVudEl0ZW0ucG9zaXRpb24oKTtyZXR1cm57dG9wOmUudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDplLmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpfX1yZXR1cm57dG9wOjAsbGVmdDowfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmN1cnJlbnRJdGVtLmNzcygibWFyZ2luTGVmdCIpLDEwKXx8MCx0b3A6cGFyc2VJbnQodGhpcy5jdXJyZW50SXRlbS5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIHQsaSxzLG49dGhpcy5vcHRpb25zOyJwYXJlbnQiPT09bi5jb250YWlubWVudCYmKG4uY29udGFpbm1lbnQ9dGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZSksKCJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50fHwid2luZG93Ij09PW4uY29udGFpbm1lbnQpJiYodGhpcy5jb250YWlubWVudD1bMC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LDAtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3AsImRvY3VtZW50Ij09PW4uY29udGFpbm1lbnQ/dGhpcy5kb2N1bWVudC53aWR0aCgpOnRoaXMud2luZG93LndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCwoImRvY3VtZW50Ij09PW4uY29udGFpbm1lbnQ/dGhpcy5kb2N1bWVudC53aWR0aCgpOnRoaXMud2luZG93LmhlaWdodCgpfHx0aGlzLmRvY3VtZW50WzBdLmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdKSwvXihkb2N1bWVudHx3aW5kb3d8cGFyZW50KSQvLnRlc3Qobi5jb250YWlubWVudCl8fCh0PWUobi5jb250YWlubWVudClbMF0saT1lKG4uY29udGFpbm1lbnQpLm9mZnNldCgpLHM9ImhpZGRlbiIhPT1lKHQpLmNzcygib3ZlcmZsb3ciKSx0aGlzLmNvbnRhaW5tZW50PVtpLmxlZnQrKHBhcnNlSW50KGUodCkuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChlKHQpLmNzcygicGFkZGluZ0xlZnQiKSwxMCl8fDApLXRoaXMubWFyZ2lucy5sZWZ0LGkudG9wKyhwYXJzZUludChlKHQpLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApKyhwYXJzZUludChlKHQpLmNzcygicGFkZGluZ1RvcCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLnRvcCxpLmxlZnQrKHM/TWF0aC5tYXgodC5zY3JvbGxXaWR0aCx0Lm9mZnNldFdpZHRoKTp0Lm9mZnNldFdpZHRoKS0ocGFyc2VJbnQoZSh0KS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGUodCkuY3NzKCJwYWRkaW5nUmlnaHQiKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsaS50b3ArKHM/TWF0aC5tYXgodC5zY3JvbGxIZWlnaHQsdC5vZmZzZXRIZWlnaHQpOnQub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoZSh0KS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoZSh0KS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdKX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKHQsaSl7aXx8KGk9dGhpcy5wb3NpdGlvbik7dmFyIHM9ImFic29sdXRlIj09PXQ/MTotMSxuPSJhYnNvbHV0ZSIhPT10aGlzLmNzc1Bvc2l0aW9ufHx0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJmUuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pP3RoaXMuc2Nyb2xsUGFyZW50OnRoaXMub2Zmc2V0UGFyZW50LGE9LyhodG1sfGJvZHkpL2kudGVzdChuWzBdLnRhZ05hbWUpO3JldHVybnt0b3A6aS50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKnMrdGhpcy5vZmZzZXQucGFyZW50LnRvcCpzLSgiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6YT8wOm4uc2Nyb2xsVG9wKCkpKnMsbGVmdDppLmxlZnQrdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCpzK3RoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KnMtKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6YT8wOm4uc2Nyb2xsTGVmdCgpKSpzfX0sX2dlbmVyYXRlUG9zaXRpb246ZnVuY3Rpb24odCl7dmFyIGkscyxuPXRoaXMub3B0aW9ucyxhPXQucGFnZVgsbz10LnBhZ2VZLHI9ImFic29sdXRlIiE9PXRoaXMuY3NzUG9zaXRpb258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmZS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSk/dGhpcy5zY3JvbGxQYXJlbnQ6dGhpcy5vZmZzZXRQYXJlbnQsaD0vKGh0bWx8Ym9keSkvaS50ZXN0KHJbMF0udGFnTmFtZSk7cmV0dXJuInJlbGF0aXZlIiE9PXRoaXMuY3NzUG9zaXRpb258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT10aGlzLm9mZnNldFBhcmVudFswXXx8KHRoaXMub2Zmc2V0LnJlbGF0aXZlPXRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCkpLHRoaXMub3JpZ2luYWxQb3NpdGlvbiYmKHRoaXMuY29udGFpbm1lbnQmJih0LnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlubWVudFswXSYmKGE9dGhpcy5jb250YWlubWVudFswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSx0LnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdJiYobz10aGlzLmNvbnRhaW5tZW50WzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCksdC5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PnRoaXMuY29udGFpbm1lbnRbMl0mJihhPXRoaXMuY29udGFpbm1lbnRbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksdC5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+dGhpcy5jb250YWlubWVudFszXSYmKG89dGhpcy5jb250YWlubWVudFszXSt0aGlzLm9mZnNldC5jbGljay50b3ApKSxuLmdyaWQmJihpPXRoaXMub3JpZ2luYWxQYWdlWStNYXRoLnJvdW5kKChvLXRoaXMub3JpZ2luYWxQYWdlWSkvbi5ncmlkWzFdKSpuLmdyaWRbMV0sbz10aGlzLmNvbnRhaW5tZW50P2ktdGhpcy5vZmZzZXQuY2xpY2sudG9wPj10aGlzLmNvbnRhaW5tZW50WzFdJiZpLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDw9dGhpcy5jb250YWlubWVudFszXT9pOmktdGhpcy5vZmZzZXQuY2xpY2sudG9wPj10aGlzLmNvbnRhaW5tZW50WzFdP2ktbi5ncmlkWzFdOmkrbi5ncmlkWzFdOmkscz10aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgoYS10aGlzLm9yaWdpbmFsUGFnZVgpL24uZ3JpZFswXSkqbi5ncmlkWzBdLGE9dGhpcy5jb250YWlubWVudD9zLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+PXRoaXMuY29udGFpbm1lbnRbMF0mJnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdDw9dGhpcy5jb250YWlubWVudFsyXT9zOnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdD49dGhpcy5jb250YWlubWVudFswXT9zLW4uZ3JpZFswXTpzK24uZ3JpZFswXTpzKSkse3RvcDpvLXRoaXMub2Zmc2V0LmNsaWNrLnRvcC10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCsoImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmg/MDpyLnNjcm9sbFRvcCgpKSxsZWZ0OmEtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpOmg/MDpyLnNjcm9sbExlZnQoKSl9fSxfcmVhcnJhbmdlOmZ1bmN0aW9uKGUsdCxpLHMpe2k/aVswXS5hcHBlbmRDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTp0Lml0ZW1bMF0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5wbGFjZWhvbGRlclswXSwiZG93biI9PT10aGlzLmRpcmVjdGlvbj90Lml0ZW1bMF06dC5pdGVtWzBdLm5leHRTaWJsaW5nKSx0aGlzLmNvdW50ZXI9dGhpcy5jb3VudGVyPysrdGhpcy5jb3VudGVyOjE7dmFyIG49dGhpcy5jb3VudGVyO3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7bj09PXRoaXMuY291bnRlciYmdGhpcy5yZWZyZXNoUG9zaXRpb25zKCFzKX0pfSxfY2xlYXI6ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBpKGUsdCxpKXtyZXR1cm4gZnVuY3Rpb24ocyl7aS5fdHJpZ2dlcihlLHMsdC5fdWlIYXNoKHQpKX19dGhpcy5yZXZlcnRpbmc9ITE7dmFyIHMsbj1bXTtpZighdGhpcy5fbm9GaW5hbFNvcnQmJnRoaXMuY3VycmVudEl0ZW0ucGFyZW50KCkubGVuZ3RoJiZ0aGlzLnBsYWNlaG9sZGVyLmJlZm9yZSh0aGlzLmN1cnJlbnRJdGVtKSx0aGlzLl9ub0ZpbmFsU29ydD1udWxsLHRoaXMuaGVscGVyWzBdPT09dGhpcy5jdXJyZW50SXRlbVswXSl7Zm9yKHMgaW4gdGhpcy5fc3RvcmVkQ1NTKSgiYXV0byI9PT10aGlzLl9zdG9yZWRDU1Nbc118fCJzdGF0aWMiPT09dGhpcy5fc3RvcmVkQ1NTW3NdKSYmKHRoaXMuX3N0b3JlZENTU1tzXT0iIik7dGhpcy5jdXJyZW50SXRlbS5jc3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIil9ZWxzZSB0aGlzLmN1cnJlbnRJdGVtLnNob3coKTtmb3IodGhpcy5mcm9tT3V0c2lkZSYmIXQmJm4ucHVzaChmdW5jdGlvbihlKXt0aGlzLl90cmlnZ2VyKCJyZWNlaXZlIixlLHRoaXMuX3VpSGFzaCh0aGlzLmZyb21PdXRzaWRlKSl9KSwhdGhpcy5mcm9tT3V0c2lkZSYmdGhpcy5kb21Qb3NpdGlvbi5wcmV2PT09dGhpcy5jdXJyZW50SXRlbS5wcmV2KCkubm90KCIudWktc29ydGFibGUtaGVscGVyIilbMF0mJnRoaXMuZG9tUG9zaXRpb24ucGFyZW50PT09dGhpcy5jdXJyZW50SXRlbS5wYXJlbnQoKVswXXx8dHx8bi5wdXNoKGZ1bmN0aW9uKGUpe3RoaXMuX3RyaWdnZXIoInVwZGF0ZSIsZSx0aGlzLl91aUhhc2goKSl9KSx0aGlzIT09dGhpcy5jdXJyZW50Q29udGFpbmVyJiYodHx8KG4ucHVzaChmdW5jdGlvbihlKXt0aGlzLl90cmlnZ2VyKCJyZW1vdmUiLGUsdGhpcy5fdWlIYXNoKCkpfSksbi5wdXNoKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtlLl90cmlnZ2VyKCJyZWNlaXZlIix0LHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jdXJyZW50Q29udGFpbmVyKSksbi5wdXNoKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtlLl90cmlnZ2VyKCJ1cGRhdGUiLHQsdGhpcy5fdWlIYXNoKHRoaXMpKX19LmNhbGwodGhpcyx0aGlzLmN1cnJlbnRDb250YWluZXIpKSkpLHM9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO3M+PTA7cy0tKXR8fG4ucHVzaChpKCJkZWFjdGl2YXRlIix0aGlzLHRoaXMuY29udGFpbmVyc1tzXSkpLHRoaXMuY29udGFpbmVyc1tzXS5jb250YWluZXJDYWNoZS5vdmVyJiYobi5wdXNoKGkoIm91dCIsdGhpcyx0aGlzLmNvbnRhaW5lcnNbc10pKSx0aGlzLmNvbnRhaW5lcnNbc10uY29udGFpbmVyQ2FjaGUub3Zlcj0wKTtpZih0aGlzLnN0b3JlZEN1cnNvciYmKHRoaXMuZG9jdW1lbnQuZmluZCgiYm9keSIpLmNzcygiY3Vyc29yIix0aGlzLnN0b3JlZEN1cnNvciksdGhpcy5zdG9yZWRTdHlsZXNoZWV0LnJlbW92ZSgpKSx0aGlzLl9zdG9yZWRPcGFjaXR5JiZ0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiLHRoaXMuX3N0b3JlZE9wYWNpdHkpLHRoaXMuX3N0b3JlZFpJbmRleCYmdGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiLCJhdXRvIj09PXRoaXMuX3N0b3JlZFpJbmRleD8iIjp0aGlzLl9zdG9yZWRaSW5kZXgpLHRoaXMuZHJhZ2dpbmc9ITEsdHx8dGhpcy5fdHJpZ2dlcigiYmVmb3JlU3RvcCIsZSx0aGlzLl91aUhhc2goKSksdGhpcy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucGxhY2Vob2xkZXJbMF0pLHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbHx8KHRoaXMuaGVscGVyWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5oZWxwZXIucmVtb3ZlKCksdGhpcy5oZWxwZXI9bnVsbCksIXQpe2ZvcihzPTA7bi5sZW5ndGg+cztzKyspbltzXS5jYWxsKHRoaXMsZSk7dGhpcy5fdHJpZ2dlcigic3RvcCIsZSx0aGlzLl91aUhhc2goKSl9cmV0dXJuIHRoaXMuZnJvbU91dHNpZGU9ITEsIXRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbH0sX3RyaWdnZXI6ZnVuY3Rpb24oKXtlLldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpPT09ITEmJnRoaXMuY2FuY2VsKCl9LF91aUhhc2g6ZnVuY3Rpb24odCl7dmFyIGk9dHx8dGhpcztyZXR1cm57aGVscGVyOmkuaGVscGVyLHBsYWNlaG9sZGVyOmkucGxhY2Vob2xkZXJ8fGUoW10pLHBvc2l0aW9uOmkucG9zaXRpb24sb3JpZ2luYWxQb3NpdGlvbjppLm9yaWdpbmFsUG9zaXRpb24sb2Zmc2V0OmkucG9zaXRpb25BYnMsaXRlbTppLmN1cnJlbnRJdGVtLHNlbmRlcjp0P3QuZWxlbWVudDpudWxsfX19KSxlLndpZGdldCgidWkuYWNjb3JkaW9uIix7dmVyc2lvbjoiMS4xMS40IixvcHRpb25zOnthY3RpdmU6MCxhbmltYXRlOnt9LGNvbGxhcHNpYmxlOiExLGV2ZW50OiJjbGljayIsaGVhZGVyOiI+IGxpID4gOmZpcnN0LWNoaWxkLD4gOm5vdChsaSk6ZXZlbiIsaGVpZ2h0U3R5bGU6ImF1dG8iLGljb25zOnthY3RpdmVIZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1zIixoZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1lIn0sYWN0aXZhdGU6bnVsbCxiZWZvcmVBY3RpdmF0ZTpudWxsfSxoaWRlUHJvcHM6e2JvcmRlclRvcFdpZHRoOiJoaWRlIixib3JkZXJCb3R0b21XaWR0aDoiaGlkZSIscGFkZGluZ1RvcDoiaGlkZSIscGFkZGluZ0JvdHRvbToiaGlkZSIsaGVpZ2h0OiJoaWRlIn0sc2hvd1Byb3BzOntib3JkZXJUb3BXaWR0aDoic2hvdyIsYm9yZGVyQm90dG9tV2lkdGg6InNob3ciLHBhZGRpbmdUb3A6InNob3ciLHBhZGRpbmdCb3R0b206InNob3ciLGhlaWdodDoic2hvdyJ9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnM7dGhpcy5wcmV2U2hvdz10aGlzLnByZXZIaWRlPWUoKSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWFjY29yZGlvbiB1aS13aWRnZXQgdWktaGVscGVyLXJlc2V0IikuYXR0cigicm9sZSIsInRhYmxpc3QiKSx0LmNvbGxhcHNpYmxlfHx0LmFjdGl2ZSE9PSExJiZudWxsIT10LmFjdGl2ZXx8KHQuYWN0aXZlPTApLHRoaXMuX3Byb2Nlc3NQYW5lbHMoKSwwPnQuYWN0aXZlJiYodC5hY3RpdmUrPXRoaXMuaGVhZGVycy5sZW5ndGgpLHRoaXMuX3JlZnJlc2goKX0sX2dldENyZWF0ZUV2ZW50RGF0YTpmdW5jdGlvbigpe3JldHVybntoZWFkZXI6dGhpcy5hY3RpdmUscGFuZWw6dGhpcy5hY3RpdmUubGVuZ3RoP3RoaXMuYWN0aXZlLm5leHQoKTplKCl9fSxfY3JlYXRlSWNvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuaWNvbnM7dCYmKGUoIjxzcGFuPiIpLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24taGVhZGVyLWljb24gdWktaWNvbiAiK3QuaGVhZGVyKS5wcmVwZW5kVG8odGhpcy5oZWFkZXJzKSx0aGlzLmFjdGl2ZS5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLnJlbW92ZUNsYXNzKHQuaGVhZGVyKS5hZGRDbGFzcyh0LmFjdGl2ZUhlYWRlciksdGhpcy5oZWFkZXJzLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24taWNvbnMiKSl9LF9kZXN0cm95SWNvbnM6ZnVuY3Rpb24oKXt0aGlzLmhlYWRlcnMucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1pY29ucyIpLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIikucmVtb3ZlKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1hY2NvcmRpb24gdWktd2lkZ2V0IHVpLWhlbHBlci1yZXNldCIpLnJlbW92ZUF0dHIoInJvbGUiKSx0aGlzLmhlYWRlcnMucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXIgdWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWFjdGl2ZSB1aS1zdGF0ZS1kaXNhYmxlZCB1aS1jb3JuZXItdG9wIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtZXhwYW5kZWQiKS5yZW1vdmVBdHRyKCJhcmlhLXNlbGVjdGVkIikucmVtb3ZlQXR0cigiYXJpYS1jb250cm9scyIpLnJlbW92ZUF0dHIoInRhYkluZGV4IikucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLl9kZXN0cm95SWNvbnMoKSxlPXRoaXMuaGVhZGVycy5uZXh0KCkucmVtb3ZlQ2xhc3MoInVpLWhlbHBlci1yZXNldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLWFjY29yZGlvbi1jb250ZW50IHVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSB1aS1zdGF0ZS1kaXNhYmxlZCIpLmNzcygiZGlzcGxheSIsIiIpLnJlbW92ZUF0dHIoInJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiIpLnJlbW92ZUF0dHIoImFyaWEtbGFiZWxsZWRieSIpLnJlbW92ZVVuaXF1ZUlkKCksImNvbnRlbnQiIT09dGhpcy5vcHRpb25zLmhlaWdodFN0eWxlJiZlLmNzcygiaGVpZ2h0IiwiIil9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4iYWN0aXZlIj09PWU/KHRoaXMuX2FjdGl2YXRlKHQpLHZvaWQgMCk6KCJldmVudCI9PT1lJiYodGhpcy5vcHRpb25zLmV2ZW50JiZ0aGlzLl9vZmYodGhpcy5oZWFkZXJzLHRoaXMub3B0aW9ucy5ldmVudCksdGhpcy5fc2V0dXBFdmVudHModCkpLHRoaXMuX3N1cGVyKGUsdCksImNvbGxhcHNpYmxlIiE9PWV8fHR8fHRoaXMub3B0aW9ucy5hY3RpdmUhPT0hMXx8dGhpcy5fYWN0aXZhdGUoMCksImljb25zIj09PWUmJih0aGlzLl9kZXN0cm95SWNvbnMoKSx0JiZ0aGlzLl9jcmVhdGVJY29ucygpKSwiZGlzYWJsZWQiPT09ZSYmKHRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCkuYXR0cigiYXJpYS1kaXNhYmxlZCIsdCksdGhpcy5oZWFkZXJzLmFkZCh0aGlzLmhlYWRlcnMubmV4dCgpKS50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCkpLHZvaWQgMCl9LF9rZXlkb3duOmZ1bmN0aW9uKHQpe2lmKCF0LmFsdEtleSYmIXQuY3RybEtleSl7dmFyIGk9ZS51aS5rZXlDb2RlLHM9dGhpcy5oZWFkZXJzLmxlbmd0aCxuPXRoaXMuaGVhZGVycy5pbmRleCh0LnRhcmdldCksYT0hMTtzd2l0Y2godC5rZXlDb2RlKXtjYXNlIGkuUklHSFQ6Y2FzZSBpLkRPV046YT10aGlzLmhlYWRlcnNbKG4rMSklc107YnJlYWs7Y2FzZSBpLkxFRlQ6Y2FzZSBpLlVQOmE9dGhpcy5oZWFkZXJzWyhuLTErcyklc107YnJlYWs7Y2FzZSBpLlNQQUNFOmNhc2UgaS5FTlRFUjp0aGlzLl9ldmVudEhhbmRsZXIodCk7YnJlYWs7Y2FzZSBpLkhPTUU6YT10aGlzLmhlYWRlcnNbMF07YnJlYWs7Y2FzZSBpLkVORDphPXRoaXMuaGVhZGVyc1tzLTFdfWEmJihlKHQudGFyZ2V0KS5hdHRyKCJ0YWJJbmRleCIsLTEpLGUoYSkuYXR0cigidGFiSW5kZXgiLDApLGEuZm9jdXMoKSx0LnByZXZlbnREZWZhdWx0KCkpfX0sX3BhbmVsS2V5RG93bjpmdW5jdGlvbih0KXt0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuVVAmJnQuY3RybEtleSYmZSh0LmN1cnJlbnRUYXJnZXQpLnByZXYoKS5mb2N1cygpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3RoaXMuX3Byb2Nlc3NQYW5lbHMoKSx0LmFjdGl2ZT09PSExJiZ0LmNvbGxhcHNpYmxlPT09ITB8fCF0aGlzLmhlYWRlcnMubGVuZ3RoPyh0LmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpOnQuYWN0aXZlPT09ITE/dGhpcy5fYWN0aXZhdGUoMCk6dGhpcy5hY3RpdmUubGVuZ3RoJiYhZS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5hY3RpdmVbMF0pP3RoaXMuaGVhZGVycy5sZW5ndGg9PT10aGlzLmhlYWRlcnMuZmluZCgiLnVpLXN0YXRlLWRpc2FibGVkIikubGVuZ3RoPyh0LmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpOnRoaXMuX2FjdGl2YXRlKE1hdGgubWF4KDAsdC5hY3RpdmUtMSkpOnQuYWN0aXZlPXRoaXMuaGVhZGVycy5pbmRleCh0aGlzLmFjdGl2ZSksdGhpcy5fZGVzdHJveUljb25zKCksdGhpcy5fcmVmcmVzaCgpfSxfcHJvY2Vzc1BhbmVsczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaGVhZGVycyx0PXRoaXMucGFuZWxzO3RoaXMuaGVhZGVycz10aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaGVhZGVyKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWhlYWRlciB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiKSx0aGlzLnBhbmVscz10aGlzLmhlYWRlcnMubmV4dCgpLmFkZENsYXNzKCJ1aS1hY2NvcmRpb24tY29udGVudCB1aS1oZWxwZXItcmVzZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWJvdHRvbSIpLmZpbHRlcigiOm5vdCgudWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlKSIpLmhpZGUoKSx0JiYodGhpcy5fb2ZmKGUubm90KHRoaXMuaGVhZGVycykpLHRoaXMuX29mZih0Lm5vdCh0aGlzLnBhbmVscykpKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdCxpPXRoaXMub3B0aW9ucyxzPWkuaGVpZ2h0U3R5bGUsbj10aGlzLmVsZW1lbnQucGFyZW50KCk7dGhpcy5hY3RpdmU9dGhpcy5fZmluZEFjdGl2ZShpLmFjdGl2ZSkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSB1aS1jb3JuZXItdG9wIikucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci1hbGwiKSx0aGlzLmFjdGl2ZS5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIpLnNob3coKSx0aGlzLmhlYWRlcnMuYXR0cigicm9sZSIsInRhYiIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC51bmlxdWVJZCgpLmF0dHIoImlkIikscz10Lm5leHQoKSxuPXMudW5pcXVlSWQoKS5hdHRyKCJpZCIpO3QuYXR0cigiYXJpYS1jb250cm9scyIsbikscy5hdHRyKCJhcmlhLWxhYmVsbGVkYnkiLGkpfSkubmV4dCgpLmF0dHIoInJvbGUiLCJ0YWJwYW5lbCIpLHRoaXMuaGVhZGVycy5ub3QodGhpcy5hY3RpdmUpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLHRhYkluZGV4Oi0xfSkubmV4dCgpLmF0dHIoeyJhcmlhLWhpZGRlbiI6InRydWUifSkuaGlkZSgpLHRoaXMuYWN0aXZlLmxlbmd0aD90aGlzLmFjdGl2ZS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pLm5leHQoKS5hdHRyKHsiYXJpYS1oaWRkZW4iOiJmYWxzZSJ9KTp0aGlzLmhlYWRlcnMuZXEoMCkuYXR0cigidGFiSW5kZXgiLDApLHRoaXMuX2NyZWF0ZUljb25zKCksdGhpcy5fc2V0dXBFdmVudHMoaS5ldmVudCksImZpbGwiPT09cz8odD1uLmhlaWdodCgpLHRoaXMuZWxlbWVudC5zaWJsaW5ncygiOnZpc2libGUiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9ZSh0aGlzKSxzPWkuY3NzKCJwb3NpdGlvbiIpOyJhYnNvbHV0ZSIhPT1zJiYiZml4ZWQiIT09cyYmKHQtPWkub3V0ZXJIZWlnaHQoITApKX0pLHRoaXMuaGVhZGVycy5lYWNoKGZ1bmN0aW9uKCl7dC09ZSh0aGlzKS5vdXRlckhlaWdodCghMCl9KSx0aGlzLmhlYWRlcnMubmV4dCgpLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmhlaWdodChNYXRoLm1heCgwLHQtZSh0aGlzKS5pbm5lckhlaWdodCgpK2UodGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3ZlcmZsb3ciLCJhdXRvIikpOiJhdXRvIj09PXMmJih0PTAsdGhpcy5oZWFkZXJzLm5leHQoKS5lYWNoKGZ1bmN0aW9uKCl7dD1NYXRoLm1heCh0LGUodGhpcykuY3NzKCJoZWlnaHQiLCIiKS5oZWlnaHQoKSl9KS5oZWlnaHQodCkpfSxfYWN0aXZhdGU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5fZmluZEFjdGl2ZSh0KVswXTtpIT09dGhpcy5hY3RpdmVbMF0mJihpPWl8fHRoaXMuYWN0aXZlWzBdLHRoaXMuX2V2ZW50SGFuZGxlcih7dGFyZ2V0OmksY3VycmVudFRhcmdldDppLHByZXZlbnREZWZhdWx0OmUubm9vcH0pKX0sX2ZpbmRBY3RpdmU6ZnVuY3Rpb24odCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0P3RoaXMuaGVhZGVycy5lcSh0KTplKCl9LF9zZXR1cEV2ZW50czpmdW5jdGlvbih0KXt2YXIgaT17a2V5ZG93bjoiX2tleWRvd24ifTt0JiZlLmVhY2godC5zcGxpdCgiICIpLGZ1bmN0aW9uKGUsdCl7aVt0XT0iX2V2ZW50SGFuZGxlciJ9KSx0aGlzLl9vZmYodGhpcy5oZWFkZXJzLmFkZCh0aGlzLmhlYWRlcnMubmV4dCgpKSksdGhpcy5fb24odGhpcy5oZWFkZXJzLGkpLHRoaXMuX29uKHRoaXMuaGVhZGVycy5uZXh0KCkse2tleWRvd246Il9wYW5lbEtleURvd24ifSksdGhpcy5faG92ZXJhYmxlKHRoaXMuaGVhZGVycyksdGhpcy5fZm9jdXNhYmxlKHRoaXMuaGVhZGVycyl9LF9ldmVudEhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLHM9dGhpcy5hY3RpdmUsbj1lKHQuY3VycmVudFRhcmdldCksYT1uWzBdPT09c1swXSxvPWEmJmkuY29sbGFwc2libGUscj1vP2UoKTpuLm5leHQoKSxoPXMubmV4dCgpLGw9e29sZEhlYWRlcjpzLG9sZFBhbmVsOmgsbmV3SGVhZGVyOm8/ZSgpOm4sbmV3UGFuZWw6cn07CnQucHJldmVudERlZmF1bHQoKSxhJiYhaS5jb2xsYXBzaWJsZXx8dGhpcy5fdHJpZ2dlcigiYmVmb3JlQWN0aXZhdGUiLHQsbCk9PT0hMXx8KGkuYWN0aXZlPW8/ITE6dGhpcy5oZWFkZXJzLmluZGV4KG4pLHRoaXMuYWN0aXZlPWE/ZSgpOm4sdGhpcy5fdG9nZ2xlKGwpLHMucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSIpLGkuaWNvbnMmJnMuY2hpbGRyZW4oIi51aS1hY2NvcmRpb24taGVhZGVyLWljb24iKS5yZW1vdmVDbGFzcyhpLmljb25zLmFjdGl2ZUhlYWRlcikuYWRkQ2xhc3MoaS5pY29ucy5oZWFkZXIpLGF8fChuLnJlbW92ZUNsYXNzKCJ1aS1jb3JuZXItYWxsIikuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXItYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSB1aS1jb3JuZXItdG9wIiksaS5pY29ucyYmbi5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLnJlbW92ZUNsYXNzKGkuaWNvbnMuaGVhZGVyKS5hZGRDbGFzcyhpLmljb25zLmFjdGl2ZUhlYWRlciksbi5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIpKSl9LF90b2dnbGU6ZnVuY3Rpb24odCl7dmFyIGk9dC5uZXdQYW5lbCxzPXRoaXMucHJldlNob3cubGVuZ3RoP3RoaXMucHJldlNob3c6dC5vbGRQYW5lbDt0aGlzLnByZXZTaG93LmFkZCh0aGlzLnByZXZIaWRlKS5zdG9wKCEwLCEwKSx0aGlzLnByZXZTaG93PWksdGhpcy5wcmV2SGlkZT1zLHRoaXMub3B0aW9ucy5hbmltYXRlP3RoaXMuX2FuaW1hdGUoaSxzLHQpOihzLmhpZGUoKSxpLnNob3coKSx0aGlzLl90b2dnbGVDb21wbGV0ZSh0KSkscy5hdHRyKHsiYXJpYS1oaWRkZW4iOiJ0cnVlIn0pLHMucHJldigpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UifSksaS5sZW5ndGgmJnMubGVuZ3RoP3MucHJldigpLmF0dHIoe3RhYkluZGV4Oi0xLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UifSk6aS5sZW5ndGgmJnRoaXMuaGVhZGVycy5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gMD09PXBhcnNlSW50KGUodGhpcykuYXR0cigidGFiSW5kZXgiKSwxMCl9KS5hdHRyKCJ0YWJJbmRleCIsLTEpLGkuYXR0cigiYXJpYS1oaWRkZW4iLCJmYWxzZSIpLnByZXYoKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pfSxfYW5pbWF0ZTpmdW5jdGlvbihlLHQsaSl7dmFyIHMsbixhLG89dGhpcyxyPTAsaD1lLmNzcygiYm94LXNpemluZyIpLGw9ZS5sZW5ndGgmJighdC5sZW5ndGh8fGUuaW5kZXgoKTx0LmluZGV4KCkpLHU9dGhpcy5vcHRpb25zLmFuaW1hdGV8fHt9LGQ9bCYmdS5kb3dufHx1LGM9ZnVuY3Rpb24oKXtvLl90b2dnbGVDb21wbGV0ZShpKX07cmV0dXJuIm51bWJlciI9PXR5cGVvZiBkJiYoYT1kKSwic3RyaW5nIj09dHlwZW9mIGQmJihuPWQpLG49bnx8ZC5lYXNpbmd8fHUuZWFzaW5nLGE9YXx8ZC5kdXJhdGlvbnx8dS5kdXJhdGlvbix0Lmxlbmd0aD9lLmxlbmd0aD8ocz1lLnNob3coKS5vdXRlckhlaWdodCgpLHQuYW5pbWF0ZSh0aGlzLmhpZGVQcm9wcyx7ZHVyYXRpb246YSxlYXNpbmc6bixzdGVwOmZ1bmN0aW9uKGUsdCl7dC5ub3c9TWF0aC5yb3VuZChlKX19KSxlLmhpZGUoKS5hbmltYXRlKHRoaXMuc2hvd1Byb3BzLHtkdXJhdGlvbjphLGVhc2luZzpuLGNvbXBsZXRlOmMsc3RlcDpmdW5jdGlvbihlLGkpe2kubm93PU1hdGgucm91bmQoZSksImhlaWdodCIhPT1pLnByb3A/ImNvbnRlbnQtYm94Ij09PWgmJihyKz1pLm5vdyk6ImNvbnRlbnQiIT09by5vcHRpb25zLmhlaWdodFN0eWxlJiYoaS5ub3c9TWF0aC5yb3VuZChzLXQub3V0ZXJIZWlnaHQoKS1yKSxyPTApfX0pLHZvaWQgMCk6dC5hbmltYXRlKHRoaXMuaGlkZVByb3BzLGEsbixjKTplLmFuaW1hdGUodGhpcy5zaG93UHJvcHMsYSxuLGMpfSxfdG9nZ2xlQ29tcGxldGU6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5vbGRQYW5lbDt0LnJlbW92ZUNsYXNzKCJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiKS5wcmV2KCkucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci10b3AiKS5hZGRDbGFzcygidWktY29ybmVyLWFsbCIpLHQubGVuZ3RoJiYodC5wYXJlbnQoKVswXS5jbGFzc05hbWU9dC5wYXJlbnQoKVswXS5jbGFzc05hbWUpLHRoaXMuX3RyaWdnZXIoImFjdGl2YXRlIixudWxsLGUpfX0pLGUud2lkZ2V0KCJ1aS5tZW51Iix7dmVyc2lvbjoiMS4xMS40IixkZWZhdWx0RWxlbWVudDoiPHVsPiIsZGVsYXk6MzAwLG9wdGlvbnM6e2ljb25zOntzdWJtZW51OiJ1aS1pY29uLWNhcmF0LTEtZSJ9LGl0ZW1zOiI+ICoiLG1lbnVzOiJ1bCIscG9zaXRpb246e215OiJsZWZ0LTEgdG9wIixhdDoicmlnaHQgdG9wIn0scm9sZToibWVudSIsYmx1cjpudWxsLGZvY3VzOm51bGwsc2VsZWN0Om51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmFjdGl2ZU1lbnU9dGhpcy5lbGVtZW50LHRoaXMubW91c2VIYW5kbGVkPSExLHRoaXMuZWxlbWVudC51bmlxdWVJZCgpLmFkZENsYXNzKCJ1aS1tZW51IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCIpLnRvZ2dsZUNsYXNzKCJ1aS1tZW51LWljb25zIiwhIXRoaXMuZWxlbWVudC5maW5kKCIudWktaWNvbiIpLmxlbmd0aCkuYXR0cih7cm9sZTp0aGlzLm9wdGlvbnMucm9sZSx0YWJJbmRleDowfSksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsInRydWUiKSx0aGlzLl9vbih7Im1vdXNlZG93biAudWktbWVudS1pdGVtIjpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCl9LCJjbGljayAudWktbWVudS1pdGVtIjpmdW5jdGlvbih0KXt2YXIgaT1lKHQudGFyZ2V0KTshdGhpcy5tb3VzZUhhbmRsZWQmJmkubm90KCIudWktc3RhdGUtZGlzYWJsZWQiKS5sZW5ndGgmJih0aGlzLnNlbGVjdCh0KSx0LmlzUHJvcGFnYXRpb25TdG9wcGVkKCl8fCh0aGlzLm1vdXNlSGFuZGxlZD0hMCksaS5oYXMoIi51aS1tZW51IikubGVuZ3RoP3RoaXMuZXhwYW5kKHQpOiF0aGlzLmVsZW1lbnQuaXMoIjpmb2N1cyIpJiZlKHRoaXMuZG9jdW1lbnRbMF0uYWN0aXZlRWxlbWVudCkuY2xvc2VzdCgiLnVpLW1lbnUiKS5sZW5ndGgmJih0aGlzLmVsZW1lbnQudHJpZ2dlcigiZm9jdXMiLFshMF0pLHRoaXMuYWN0aXZlJiYxPT09dGhpcy5hY3RpdmUucGFyZW50cygiLnVpLW1lbnUiKS5sZW5ndGgmJmNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSkpfSwibW91c2VlbnRlciAudWktbWVudS1pdGVtIjpmdW5jdGlvbih0KXtpZighdGhpcy5wcmV2aW91c0ZpbHRlcil7dmFyIGk9ZSh0LmN1cnJlbnRUYXJnZXQpO2kuc2libGluZ3MoIi51aS1zdGF0ZS1hY3RpdmUiKS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdGhpcy5mb2N1cyh0LGkpfX0sbW91c2VsZWF2ZToiY29sbGFwc2VBbGwiLCJtb3VzZWxlYXZlIC51aS1tZW51IjoiY29sbGFwc2VBbGwiLGZvY3VzOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy5hY3RpdmV8fHRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5pdGVtcykuZXEoMCk7dHx8dGhpcy5mb2N1cyhlLGkpfSxibHVyOmZ1bmN0aW9uKHQpe3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7ZS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50KXx8dGhpcy5jb2xsYXBzZUFsbCh0KX0pfSxrZXlkb3duOiJfa2V5ZG93biJ9KSx0aGlzLnJlZnJlc2goKSx0aGlzLl9vbih0aGlzLmRvY3VtZW50LHtjbGljazpmdW5jdGlvbihlKXt0aGlzLl9jbG9zZU9uRG9jdW1lbnRDbGljayhlKSYmdGhpcy5jb2xsYXBzZUFsbChlKSx0aGlzLm1vdXNlSGFuZGxlZD0hMX19KX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50IikuZmluZCgiLnVpLW1lbnUiKS5hZGRCYWNrKCkucmVtb3ZlQ2xhc3MoInVpLW1lbnUgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLW1lbnUtaWNvbnMgdWktZnJvbnQiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigidGFiSW5kZXgiKS5yZW1vdmVBdHRyKCJhcmlhLWxhYmVsbGVkYnkiKS5yZW1vdmVBdHRyKCJhcmlhLWV4cGFuZGVkIikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWRpc2FibGVkIikucmVtb3ZlVW5pcXVlSWQoKS5zaG93KCksdGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51LWl0ZW0iKS5yZW1vdmVDbGFzcygidWktbWVudS1pdGVtIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKS5yZW1vdmVVbmlxdWVJZCgpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLnJlbW92ZUF0dHIoInRhYkluZGV4IikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtaGFzcG9wdXAiKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3QuZGF0YSgidWktbWVudS1zdWJtZW51LWNhcmF0IikmJnQucmVtb3ZlKCl9KSx0aGlzLmVsZW1lbnQuZmluZCgiLnVpLW1lbnUtZGl2aWRlciIpLnJlbW92ZUNsYXNzKCJ1aS1tZW51LWRpdmlkZXIgdWktd2lkZ2V0LWNvbnRlbnQiKX0sX2tleWRvd246ZnVuY3Rpb24odCl7dmFyIGkscyxuLGEsbz0hMDtzd2l0Y2godC5rZXlDb2RlKXtjYXNlIGUudWkua2V5Q29kZS5QQUdFX1VQOnRoaXMucHJldmlvdXNQYWdlKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLlBBR0VfRE9XTjp0aGlzLm5leHRQYWdlKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6dGhpcy5fbW92ZSgiZmlyc3QiLCJmaXJzdCIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRU5EOnRoaXMuX21vdmUoImxhc3QiLCJsYXN0Iix0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5VUDp0aGlzLnByZXZpb3VzKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkRPV046dGhpcy5uZXh0KHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkxFRlQ6dGhpcy5jb2xsYXBzZSh0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5SSUdIVDp0aGlzLmFjdGl2ZSYmIXRoaXMuYWN0aXZlLmlzKCIudWktc3RhdGUtZGlzYWJsZWQiKSYmdGhpcy5leHBhbmQodCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRU5URVI6Y2FzZSBlLnVpLmtleUNvZGUuU1BBQ0U6dGhpcy5fYWN0aXZhdGUodCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRVNDQVBFOnRoaXMuY29sbGFwc2UodCk7YnJlYWs7ZGVmYXVsdDpvPSExLHM9dGhpcy5wcmV2aW91c0ZpbHRlcnx8IiIsbj1TdHJpbmcuZnJvbUNoYXJDb2RlKHQua2V5Q29kZSksYT0hMSxjbGVhclRpbWVvdXQodGhpcy5maWx0ZXJUaW1lciksbj09PXM/YT0hMDpuPXMrbixpPXRoaXMuX2ZpbHRlck1lbnVJdGVtcyhuKSxpPWEmJi0xIT09aS5pbmRleCh0aGlzLmFjdGl2ZS5uZXh0KCkpP3RoaXMuYWN0aXZlLm5leHRBbGwoIi51aS1tZW51LWl0ZW0iKTppLGkubGVuZ3RofHwobj1TdHJpbmcuZnJvbUNoYXJDb2RlKHQua2V5Q29kZSksaT10aGlzLl9maWx0ZXJNZW51SXRlbXMobikpLGkubGVuZ3RoPyh0aGlzLmZvY3VzKHQsaSksdGhpcy5wcmV2aW91c0ZpbHRlcj1uLHRoaXMuZmlsdGVyVGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5wcmV2aW91c0ZpbHRlcn0sMWUzKSk6ZGVsZXRlIHRoaXMucHJldmlvdXNGaWx0ZXJ9byYmdC5wcmV2ZW50RGVmYXVsdCgpfSxfYWN0aXZhdGU6ZnVuY3Rpb24oZSl7dGhpcy5hY3RpdmUuaXMoIi51aS1zdGF0ZS1kaXNhYmxlZCIpfHwodGhpcy5hY3RpdmUuaXMoIlthcmlhLWhhc3BvcHVwPSd0cnVlJ10iKT90aGlzLmV4cGFuZChlKTp0aGlzLnNlbGVjdChlKSl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdCxpLHM9dGhpcyxuPXRoaXMub3B0aW9ucy5pY29ucy5zdWJtZW51LGE9dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLm1lbnVzKTt0aGlzLmVsZW1lbnQudG9nZ2xlQ2xhc3MoInVpLW1lbnUtaWNvbnMiLCEhdGhpcy5lbGVtZW50LmZpbmQoIi51aS1pY29uIikubGVuZ3RoKSxhLmZpbHRlcigiOm5vdCgudWktbWVudSkiKS5hZGRDbGFzcygidWktbWVudSB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktZnJvbnQiKS5oaWRlKCkuYXR0cih7cm9sZTp0aGlzLm9wdGlvbnMucm9sZSwiYXJpYS1oaWRkZW4iOiJ0cnVlIiwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIn0pLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC5wYXJlbnQoKSxzPWUoIjxzcGFuPiIpLmFkZENsYXNzKCJ1aS1tZW51LWljb24gdWktaWNvbiAiK24pLmRhdGEoInVpLW1lbnUtc3VibWVudS1jYXJhdCIsITApO2kuYXR0cigiYXJpYS1oYXNwb3B1cCIsInRydWUiKS5wcmVwZW5kKHMpLHQuYXR0cigiYXJpYS1sYWJlbGxlZGJ5IixpLmF0dHIoImlkIikpfSksdD1hLmFkZCh0aGlzLmVsZW1lbnQpLGk9dC5maW5kKHRoaXMub3B0aW9ucy5pdGVtcyksaS5ub3QoIi51aS1tZW51LWl0ZW0iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtzLl9pc0RpdmlkZXIodCkmJnQuYWRkQ2xhc3MoInVpLXdpZGdldC1jb250ZW50IHVpLW1lbnUtZGl2aWRlciIpfSksaS5ub3QoIi51aS1tZW51LWl0ZW0sIC51aS1tZW51LWRpdmlkZXIiKS5hZGRDbGFzcygidWktbWVudS1pdGVtIikudW5pcXVlSWQoKS5hdHRyKHt0YWJJbmRleDotMSxyb2xlOnRoaXMuX2l0ZW1Sb2xlKCl9KSxpLmZpbHRlcigiLnVpLXN0YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsInRydWUiKSx0aGlzLmFjdGl2ZSYmIWUuY29udGFpbnModGhpcy5lbGVtZW50WzBdLHRoaXMuYWN0aXZlWzBdKSYmdGhpcy5ibHVyKCl9LF9pdGVtUm9sZTpmdW5jdGlvbigpe3JldHVybnttZW51OiJtZW51aXRlbSIsbGlzdGJveDoib3B0aW9uIn1bdGhpcy5vcHRpb25zLnJvbGVdfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7Imljb25zIj09PWUmJnRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudS1pY29uIikucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmljb25zLnN1Ym1lbnUpLmFkZENsYXNzKHQuc3VibWVudSksImRpc2FibGVkIj09PWUmJnRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCkuYXR0cigiYXJpYS1kaXNhYmxlZCIsdCksdGhpcy5fc3VwZXIoZSx0KX0sZm9jdXM6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzO3RoaXMuYmx1cihlLGUmJiJmb2N1cyI9PT1lLnR5cGUpLHRoaXMuX3Njcm9sbEludG9WaWV3KHQpLHRoaXMuYWN0aXZlPXQuZmlyc3QoKSxzPXRoaXMuYWN0aXZlLmFkZENsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLm9wdGlvbnMucm9sZSYmdGhpcy5lbGVtZW50LmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIscy5hdHRyKCJpZCIpKSx0aGlzLmFjdGl2ZS5wYXJlbnQoKS5jbG9zZXN0KCIudWktbWVudS1pdGVtIikuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLGUmJiJrZXlkb3duIj09PWUudHlwZT90aGlzLl9jbG9zZSgpOnRoaXMudGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLl9jbG9zZSgpfSx0aGlzLmRlbGF5KSxpPXQuY2hpbGRyZW4oIi51aS1tZW51IiksaS5sZW5ndGgmJmUmJi9ebW91c2UvLnRlc3QoZS50eXBlKSYmdGhpcy5fc3RhcnRPcGVuaW5nKGkpLHRoaXMuYWN0aXZlTWVudT10LnBhcmVudCgpLHRoaXMuX3RyaWdnZXIoImZvY3VzIixlLHtpdGVtOnR9KX0sX3Njcm9sbEludG9WaWV3OmZ1bmN0aW9uKHQpe3ZhciBpLHMsbixhLG8scjt0aGlzLl9oYXNTY3JvbGwoKSYmKGk9cGFyc2VGbG9hdChlLmNzcyh0aGlzLmFjdGl2ZU1lbnVbMF0sImJvcmRlclRvcFdpZHRoIikpfHwwLHM9cGFyc2VGbG9hdChlLmNzcyh0aGlzLmFjdGl2ZU1lbnVbMF0sInBhZGRpbmdUb3AiKSl8fDAsbj10Lm9mZnNldCgpLnRvcC10aGlzLmFjdGl2ZU1lbnUub2Zmc2V0KCkudG9wLWktcyxhPXRoaXMuYWN0aXZlTWVudS5zY3JvbGxUb3AoKSxvPXRoaXMuYWN0aXZlTWVudS5oZWlnaHQoKSxyPXQub3V0ZXJIZWlnaHQoKSwwPm4/dGhpcy5hY3RpdmVNZW51LnNjcm9sbFRvcChhK24pOm4rcj5vJiZ0aGlzLmFjdGl2ZU1lbnUuc2Nyb2xsVG9wKGErbi1vK3IpKX0sYmx1cjpmdW5jdGlvbihlLHQpe3R8fGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0aGlzLmFjdGl2ZSYmKHRoaXMuYWN0aXZlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpLHRoaXMuYWN0aXZlPW51bGwsdGhpcy5fdHJpZ2dlcigiYmx1ciIsZSx7aXRlbTp0aGlzLmFjdGl2ZX0pKX0sX3N0YXJ0T3BlbmluZzpmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQodGhpcy50aW1lciksInRydWUiPT09ZS5hdHRyKCJhcmlhLWhpZGRlbiIpJiYodGhpcy50aW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMuX2Nsb3NlKCksdGhpcy5fb3BlbihlKX0sdGhpcy5kZWxheSkpfSxfb3BlbjpmdW5jdGlvbih0KXt2YXIgaT1lLmV4dGVuZCh7b2Y6dGhpcy5hY3RpdmV9LHRoaXMub3B0aW9ucy5wb3NpdGlvbik7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpLHRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudSIpLm5vdCh0LnBhcmVudHMoIi51aS1tZW51IikpLmhpZGUoKS5hdHRyKCJhcmlhLWhpZGRlbiIsInRydWUiKSx0LnNob3coKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJ0cnVlIikucG9zaXRpb24oaSl9LGNvbGxhcHNlQWxsOmZ1bmN0aW9uKHQsaSl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpLHRoaXMudGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt2YXIgcz1pP3RoaXMuZWxlbWVudDplKHQmJnQudGFyZ2V0KS5jbG9zZXN0KHRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudSIpKTtzLmxlbmd0aHx8KHM9dGhpcy5lbGVtZW50KSx0aGlzLl9jbG9zZShzKSx0aGlzLmJsdXIodCksdGhpcy5hY3RpdmVNZW51PXN9LHRoaXMuZGVsYXkpfSxfY2xvc2U6ZnVuY3Rpb24oZSl7ZXx8KGU9dGhpcy5hY3RpdmU/dGhpcy5hY3RpdmUucGFyZW50KCk6dGhpcy5lbGVtZW50KSxlLmZpbmQoIi51aS1tZW51IikuaGlkZSgpLmF0dHIoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLmVuZCgpLmZpbmQoIi51aS1zdGF0ZS1hY3RpdmUiKS5ub3QoIi51aS1zdGF0ZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKX0sX2Nsb3NlT25Eb2N1bWVudENsaWNrOmZ1bmN0aW9uKHQpe3JldHVybiFlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktbWVudSIpLmxlbmd0aH0sX2lzRGl2aWRlcjpmdW5jdGlvbihlKXtyZXR1cm4hL1teXC1cdTIwMTRcdTIwMTNcc10vLnRlc3QoZS50ZXh0KCkpfSxjb2xsYXBzZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmFjdGl2ZSYmdGhpcy5hY3RpdmUucGFyZW50KCkuY2xvc2VzdCgiLnVpLW1lbnUtaXRlbSIsdGhpcy5lbGVtZW50KTt0JiZ0Lmxlbmd0aCYmKHRoaXMuX2Nsb3NlKCksdGhpcy5mb2N1cyhlLHQpKX0sZXhwYW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuYWN0aXZlJiZ0aGlzLmFjdGl2ZS5jaGlsZHJlbigiLnVpLW1lbnUgIikuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmZpcnN0KCk7dCYmdC5sZW5ndGgmJih0aGlzLl9vcGVuKHQucGFyZW50KCkpLHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5mb2N1cyhlLHQpfSkpfSxuZXh0OmZ1bmN0aW9uKGUpe3RoaXMuX21vdmUoIm5leHQiLCJmaXJzdCIsZSl9LHByZXZpb3VzOmZ1bmN0aW9uKGUpe3RoaXMuX21vdmUoInByZXYiLCJsYXN0IixlKX0saXNGaXJzdEl0ZW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hY3RpdmUmJiF0aGlzLmFjdGl2ZS5wcmV2QWxsKCIudWktbWVudS1pdGVtIikubGVuZ3RofSxpc0xhc3RJdGVtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWN0aXZlJiYhdGhpcy5hY3RpdmUubmV4dEFsbCgiLnVpLW1lbnUtaXRlbSIpLmxlbmd0aH0sX21vdmU6ZnVuY3Rpb24oZSx0LGkpe3ZhciBzO3RoaXMuYWN0aXZlJiYocz0iZmlyc3QiPT09ZXx8Imxhc3QiPT09ZT90aGlzLmFjdGl2ZVsiZmlyc3QiPT09ZT8icHJldkFsbCI6Im5leHRBbGwiXSgiLnVpLW1lbnUtaXRlbSIpLmVxKC0xKTp0aGlzLmFjdGl2ZVtlKyJBbGwiXSgiLnVpLW1lbnUtaXRlbSIpLmVxKDApKSxzJiZzLmxlbmd0aCYmdGhpcy5hY3RpdmV8fChzPXRoaXMuYWN0aXZlTWVudS5maW5kKHRoaXMub3B0aW9ucy5pdGVtcylbdF0oKSksdGhpcy5mb2N1cyhpLHMpfSxuZXh0UGFnZTpmdW5jdGlvbih0KXt2YXIgaSxzLG47cmV0dXJuIHRoaXMuYWN0aXZlPyh0aGlzLmlzTGFzdEl0ZW0oKXx8KHRoaXMuX2hhc1Njcm9sbCgpPyhzPXRoaXMuYWN0aXZlLm9mZnNldCgpLnRvcCxuPXRoaXMuZWxlbWVudC5oZWlnaHQoKSx0aGlzLmFjdGl2ZS5uZXh0QWxsKCIudWktbWVudS1pdGVtIikuZWFjaChmdW5jdGlvbigpe3JldHVybiBpPWUodGhpcyksMD5pLm9mZnNldCgpLnRvcC1zLW59KSx0aGlzLmZvY3VzKHQsaSkpOnRoaXMuZm9jdXModCx0aGlzLmFjdGl2ZU1lbnUuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpW3RoaXMuYWN0aXZlPyJsYXN0IjoiZmlyc3QiXSgpKSksdm9pZCAwKToodGhpcy5uZXh0KHQpLHZvaWQgMCl9LHByZXZpb3VzUGFnZTpmdW5jdGlvbih0KXt2YXIgaSxzLG47cmV0dXJuIHRoaXMuYWN0aXZlPyh0aGlzLmlzRmlyc3RJdGVtKCl8fCh0aGlzLl9oYXNTY3JvbGwoKT8ocz10aGlzLmFjdGl2ZS5vZmZzZXQoKS50b3Asbj10aGlzLmVsZW1lbnQuaGVpZ2h0KCksdGhpcy5hY3RpdmUucHJldkFsbCgiLnVpLW1lbnUtaXRlbSIpLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gaT1lKHRoaXMpLGkub2Zmc2V0KCkudG9wLXMrbj4wfSksdGhpcy5mb2N1cyh0LGkpKTp0aGlzLmZvY3VzKHQsdGhpcy5hY3RpdmVNZW51LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5maXJzdCgpKSksdm9pZCAwKToodGhpcy5uZXh0KHQpLHZvaWQgMCl9LF9oYXNTY3JvbGw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCk8dGhpcy5lbGVtZW50LnByb3AoInNjcm9sbEhlaWdodCIpfSxzZWxlY3Q6ZnVuY3Rpb24odCl7dGhpcy5hY3RpdmU9dGhpcy5hY3RpdmV8fGUodC50YXJnZXQpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iKTt2YXIgaT17aXRlbTp0aGlzLmFjdGl2ZX07dGhpcy5hY3RpdmUuaGFzKCIudWktbWVudSIpLmxlbmd0aHx8dGhpcy5jb2xsYXBzZUFsbCh0LCEwKSx0aGlzLl90cmlnZ2VyKCJzZWxlY3QiLHQsaSl9LF9maWx0ZXJNZW51SXRlbXM6ZnVuY3Rpb24odCl7dmFyIGk9dC5yZXBsYWNlKC9bXC1cW1xde30oKSorPy4sXFxcXiR8I1xzXS9nLCJcXCQmIikscz1SZWdFeHAoIl4iK2ksImkiKTtyZXR1cm4gdGhpcy5hY3RpdmVNZW51LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5maWx0ZXIoIi51aS1tZW51LWl0ZW0iKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gcy50ZXN0KGUudHJpbShlKHRoaXMpLnRleHQoKSkpfSl9fSksZS53aWRnZXQoInVpLmF1dG9jb21wbGV0ZSIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6IjxpbnB1dD4iLG9wdGlvbnM6e2FwcGVuZFRvOm51bGwsYXV0b0ZvY3VzOiExLGRlbGF5OjMwMCxtaW5MZW5ndGg6MSxwb3NpdGlvbjp7bXk6ImxlZnQgdG9wIixhdDoibGVmdCBib3R0b20iLGNvbGxpc2lvbjoibm9uZSJ9LHNvdXJjZTpudWxsLGNoYW5nZTpudWxsLGNsb3NlOm51bGwsZm9jdXM6bnVsbCxvcGVuOm51bGwscmVzcG9uc2U6bnVsbCxzZWFyY2g6bnVsbCxzZWxlY3Q6bnVsbH0scmVxdWVzdEluZGV4OjAscGVuZGluZzowLF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdCxpLHMsbj10aGlzLmVsZW1lbnRbMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxhPSJ0ZXh0YXJlYSI9PT1uLG89ImlucHV0Ij09PW47dGhpcy5pc011bHRpTGluZT1hPyEwOm8/ITE6dGhpcy5lbGVtZW50LnByb3AoImlzQ29udGVudEVkaXRhYmxlIiksdGhpcy52YWx1ZU1ldGhvZD10aGlzLmVsZW1lbnRbYXx8bz8idmFsIjoidGV4dCJdLHRoaXMuaXNOZXdNZW51PSEwLHRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktYXV0b2NvbXBsZXRlLWlucHV0IikuYXR0cigiYXV0b2NvbXBsZXRlIiwib2ZmIiksdGhpcy5fb24odGhpcy5lbGVtZW50LHtrZXlkb3duOmZ1bmN0aW9uKG4pe2lmKHRoaXMuZWxlbWVudC5wcm9wKCJyZWFkT25seSIpKXJldHVybiB0PSEwLHM9ITAsaT0hMCx2b2lkIDA7dD0hMSxzPSExLGk9ITE7dmFyIGE9ZS51aS5rZXlDb2RlO3N3aXRjaChuLmtleUNvZGUpe2Nhc2UgYS5QQUdFX1VQOnQ9ITAsdGhpcy5fbW92ZSgicHJldmlvdXNQYWdlIixuKTticmVhaztjYXNlIGEuUEFHRV9ET1dOOnQ9ITAsdGhpcy5fbW92ZSgibmV4dFBhZ2UiLG4pO2JyZWFrO2Nhc2UgYS5VUDp0PSEwLHRoaXMuX2tleUV2ZW50KCJwcmV2aW91cyIsbik7YnJlYWs7Y2FzZSBhLkRPV046dD0hMCx0aGlzLl9rZXlFdmVudCgibmV4dCIsbik7YnJlYWs7Y2FzZSBhLkVOVEVSOnRoaXMubWVudS5hY3RpdmUmJih0PSEwLG4ucHJldmVudERlZmF1bHQoKSx0aGlzLm1lbnUuc2VsZWN0KG4pKTticmVhaztjYXNlIGEuVEFCOnRoaXMubWVudS5hY3RpdmUmJnRoaXMubWVudS5zZWxlY3Qobik7YnJlYWs7Y2FzZSBhLkVTQ0FQRTp0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKSYmKHRoaXMuaXNNdWx0aUxpbmV8fHRoaXMuX3ZhbHVlKHRoaXMudGVybSksdGhpcy5jbG9zZShuKSxuLnByZXZlbnREZWZhdWx0KCkpO2JyZWFrO2RlZmF1bHQ6aT0hMCx0aGlzLl9zZWFyY2hUaW1lb3V0KG4pfX0sa2V5cHJlc3M6ZnVuY3Rpb24ocyl7aWYodClyZXR1cm4gdD0hMSwoIXRoaXMuaXNNdWx0aUxpbmV8fHRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpKSYmcy5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgMDtpZighaSl7dmFyIG49ZS51aS5rZXlDb2RlO3N3aXRjaChzLmtleUNvZGUpe2Nhc2Ugbi5QQUdFX1VQOnRoaXMuX21vdmUoInByZXZpb3VzUGFnZSIscyk7YnJlYWs7Y2FzZSBuLlBBR0VfRE9XTjp0aGlzLl9tb3ZlKCJuZXh0UGFnZSIscyk7YnJlYWs7Y2FzZSBuLlVQOnRoaXMuX2tleUV2ZW50KCJwcmV2aW91cyIscyk7YnJlYWs7Y2FzZSBuLkRPV046dGhpcy5fa2V5RXZlbnQoIm5leHQiLHMpfX19LGlucHV0OmZ1bmN0aW9uKGUpe3JldHVybiBzPyhzPSExLGUucHJldmVudERlZmF1bHQoKSx2b2lkIDApOih0aGlzLl9zZWFyY2hUaW1lb3V0KGUpLHZvaWQgMCl9LGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZEl0ZW09bnVsbCx0aGlzLnByZXZpb3VzPXRoaXMuX3ZhbHVlKCl9LGJsdXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2FuY2VsQmx1cj8oZGVsZXRlIHRoaXMuY2FuY2VsQmx1cix2b2lkIDApOihjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hpbmcpLHRoaXMuY2xvc2UoZSksdGhpcy5fY2hhbmdlKGUpLHZvaWQgMCl9fSksdGhpcy5faW5pdFNvdXJjZSgpLHRoaXMubWVudT1lKCI8dWw+IikuYWRkQ2xhc3MoInVpLWF1dG9jb21wbGV0ZSB1aS1mcm9udCIpLmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLm1lbnUoe3JvbGU6bnVsbH0pLmhpZGUoKS5tZW51KCJpbnN0YW5jZSIpLHRoaXMuX29uKHRoaXMubWVudS5lbGVtZW50LHttb3VzZWRvd246ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2FuY2VsQmx1cj0hMCx0aGlzLl9kZWxheShmdW5jdGlvbigpe2RlbGV0ZSB0aGlzLmNhbmNlbEJsdXJ9KTt2YXIgaT10aGlzLm1lbnUuZWxlbWVudFswXTtlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktbWVudS1pdGVtIikubGVuZ3RofHx0aGlzLl9kZWxheShmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kb2N1bWVudC5vbmUoIm1vdXNlZG93biIsZnVuY3Rpb24ocyl7cy50YXJnZXQ9PT10LmVsZW1lbnRbMF18fHMudGFyZ2V0PT09aXx8ZS5jb250YWlucyhpLHMudGFyZ2V0KXx8dC5jbG9zZSgpfSl9KX0sbWVudWZvY3VzOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbjtyZXR1cm4gdGhpcy5pc05ld01lbnUmJih0aGlzLmlzTmV3TWVudT0hMSx0Lm9yaWdpbmFsRXZlbnQmJi9ebW91c2UvLnRlc3QodC5vcmlnaW5hbEV2ZW50LnR5cGUpKT8odGhpcy5tZW51LmJsdXIoKSx0aGlzLmRvY3VtZW50Lm9uZSgibW91c2Vtb3ZlIixmdW5jdGlvbigpe2UodC50YXJnZXQpLnRyaWdnZXIodC5vcmlnaW5hbEV2ZW50KX0pLHZvaWQgMCk6KG49aS5pdGVtLmRhdGEoInVpLWF1dG9jb21wbGV0ZS1pdGVtIiksITEhPT10aGlzLl90cmlnZ2VyKCJmb2N1cyIsdCx7aXRlbTpufSkmJnQub3JpZ2luYWxFdmVudCYmL15rZXkvLnRlc3QodC5vcmlnaW5hbEV2ZW50LnR5cGUpJiZ0aGlzLl92YWx1ZShuLnZhbHVlKSxzPWkuaXRlbS5hdHRyKCJhcmlhLWxhYmVsIil8fG4udmFsdWUscyYmZS50cmltKHMpLmxlbmd0aCYmKHRoaXMubGl2ZVJlZ2lvbi5jaGlsZHJlbigpLmhpZGUoKSxlKCI8ZGl2PiIpLnRleHQocykuYXBwZW5kVG8odGhpcy5saXZlUmVnaW9uKSksdm9pZCAwKX0sbWVudXNlbGVjdDpmdW5jdGlvbihlLHQpe3ZhciBpPXQuaXRlbS5kYXRhKCJ1aS1hdXRvY29tcGxldGUtaXRlbSIpLHM9dGhpcy5wcmV2aW91czt0aGlzLmVsZW1lbnRbMF0hPT10aGlzLmRvY3VtZW50WzBdLmFjdGl2ZUVsZW1lbnQmJih0aGlzLmVsZW1lbnQuZm9jdXMoKSx0aGlzLnByZXZpb3VzPXMsdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLnByZXZpb3VzPXMsdGhpcy5zZWxlY3RlZEl0ZW09aX0pKSwhMSE9PXRoaXMuX3RyaWdnZXIoInNlbGVjdCIsZSx7aXRlbTppfSkmJnRoaXMuX3ZhbHVlKGkudmFsdWUpLHRoaXMudGVybT10aGlzLl92YWx1ZSgpLHRoaXMuY2xvc2UoZSksdGhpcy5zZWxlY3RlZEl0ZW09aX19KSx0aGlzLmxpdmVSZWdpb249ZSgiPHNwYW4+Iix7cm9sZToic3RhdHVzIiwiYXJpYS1saXZlIjoiYXNzZXJ0aXZlIiwiYXJpYS1yZWxldmFudCI6ImFkZGl0aW9ucyJ9KS5hZGRDbGFzcygidWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlIikuYXBwZW5kVG8odGhpcy5kb2N1bWVudFswXS5ib2R5KSx0aGlzLl9vbih0aGlzLndpbmRvdyx7YmVmb3JldW5sb2FkOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSIpfX0pfSxfZGVzdHJveTpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLnNlYXJjaGluZyksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1hdXRvY29tcGxldGUtaW5wdXQiKS5yZW1vdmVBdHRyKCJhdXRvY29tcGxldGUiKSx0aGlzLm1lbnUuZWxlbWVudC5yZW1vdmUoKSx0aGlzLmxpdmVSZWdpb24ucmVtb3ZlKCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLl9zdXBlcihlLHQpLCJzb3VyY2UiPT09ZSYmdGhpcy5faW5pdFNvdXJjZSgpLCJhcHBlbmRUbyI9PT1lJiZ0aGlzLm1lbnUuZWxlbWVudC5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSwiZGlzYWJsZWQiPT09ZSYmdCYmdGhpcy54aHImJnRoaXMueGhyLmFib3J0KCl9LF9hcHBlbmRUbzpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5hcHBlbmRUbztyZXR1cm4gdCYmKHQ9dC5qcXVlcnl8fHQubm9kZVR5cGU/ZSh0KTp0aGlzLmRvY3VtZW50LmZpbmQodCkuZXEoMCkpLHQmJnRbMF18fCh0PXRoaXMuZWxlbWVudC5jbG9zZXN0KCIudWktZnJvbnQiKSksdC5sZW5ndGh8fCh0PXRoaXMuZG9jdW1lbnRbMF0uYm9keSksdH0sX2luaXRTb3VyY2U6ZnVuY3Rpb24oKXt2YXIgdCxpLHM9dGhpcztlLmlzQXJyYXkodGhpcy5vcHRpb25zLnNvdXJjZSk/KHQ9dGhpcy5vcHRpb25zLnNvdXJjZSx0aGlzLnNvdXJjZT1mdW5jdGlvbihpLHMpe3MoZS51aS5hdXRvY29tcGxldGUuZmlsdGVyKHQsaS50ZXJtKSl9KToic3RyaW5nIj09dHlwZW9mIHRoaXMub3B0aW9ucy5zb3VyY2U/KGk9dGhpcy5vcHRpb25zLnNvdXJjZSx0aGlzLnNvdXJjZT1mdW5jdGlvbih0LG4pe3MueGhyJiZzLnhoci5hYm9ydCgpLHMueGhyPWUuYWpheCh7dXJsOmksZGF0YTp0LGRhdGFUeXBlOiJqc29uIixzdWNjZXNzOmZ1bmN0aW9uKGUpe24oZSl9LGVycm9yOmZ1bmN0aW9uKCl7bihbXSl9fSl9KTp0aGlzLnNvdXJjZT10aGlzLm9wdGlvbnMuc291cmNlfSxfc2VhcmNoVGltZW91dDpmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hpbmcpLHRoaXMuc2VhcmNoaW5nPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy50ZXJtPT09dGhpcy5fdmFsdWUoKSxpPXRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpLHM9ZS5hbHRLZXl8fGUuY3RybEtleXx8ZS5tZXRhS2V5fHxlLnNoaWZ0S2V5OyghdHx8dCYmIWkmJiFzKSYmKHRoaXMuc2VsZWN0ZWRJdGVtPW51bGwsdGhpcy5zZWFyY2gobnVsbCxlKSl9LHRoaXMub3B0aW9ucy5kZWxheSl9LHNlYXJjaDpmdW5jdGlvbihlLHQpe3JldHVybiBlPW51bGwhPWU/ZTp0aGlzLl92YWx1ZSgpLHRoaXMudGVybT10aGlzLl92YWx1ZSgpLGUubGVuZ3RoPHRoaXMub3B0aW9ucy5taW5MZW5ndGg/dGhpcy5jbG9zZSh0KTp0aGlzLl90cmlnZ2VyKCJzZWFyY2giLHQpIT09ITE/dGhpcy5fc2VhcmNoKGUpOnZvaWQgMH0sX3NlYXJjaDpmdW5jdGlvbihlKXt0aGlzLnBlbmRpbmcrKyx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWF1dG9jb21wbGV0ZS1sb2FkaW5nIiksdGhpcy5jYW5jZWxTZWFyY2g9ITEsdGhpcy5zb3VyY2Uoe3Rlcm06ZX0sdGhpcy5fcmVzcG9uc2UoKSl9LF9yZXNwb25zZTpmdW5jdGlvbigpe3ZhciB0PSsrdGhpcy5yZXF1ZXN0SW5kZXg7cmV0dXJuIGUucHJveHkoZnVuY3Rpb24oZSl7dD09PXRoaXMucmVxdWVzdEluZGV4JiZ0aGlzLl9fcmVzcG9uc2UoZSksdGhpcy5wZW5kaW5nLS0sdGhpcy5wZW5kaW5nfHx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWF1dG9jb21wbGV0ZS1sb2FkaW5nIil9LHRoaXMpfSxfX3Jlc3BvbnNlOmZ1bmN0aW9uKGUpe2UmJihlPXRoaXMuX25vcm1hbGl6ZShlKSksdGhpcy5fdHJpZ2dlcigicmVzcG9uc2UiLG51bGwse2NvbnRlbnQ6ZX0pLCF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJmUmJmUubGVuZ3RoJiYhdGhpcy5jYW5jZWxTZWFyY2g/KHRoaXMuX3N1Z2dlc3QoZSksdGhpcy5fdHJpZ2dlcigib3BlbiIpKTp0aGlzLl9jbG9zZSgpfSxjbG9zZTpmdW5jdGlvbihlKXt0aGlzLmNhbmNlbFNlYXJjaD0hMCx0aGlzLl9jbG9zZShlKX0sX2Nsb3NlOmZ1bmN0aW9uKGUpe3RoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpJiYodGhpcy5tZW51LmVsZW1lbnQuaGlkZSgpLHRoaXMubWVudS5ibHVyKCksdGhpcy5pc05ld01lbnU9ITAsdGhpcy5fdHJpZ2dlcigiY2xvc2UiLGUpKX0sX2NoYW5nZTpmdW5jdGlvbihlKXt0aGlzLnByZXZpb3VzIT09dGhpcy5fdmFsdWUoKSYmdGhpcy5fdHJpZ2dlcigiY2hhbmdlIixlLHtpdGVtOnRoaXMuc2VsZWN0ZWRJdGVtfSl9LF9ub3JtYWxpemU6ZnVuY3Rpb24odCl7cmV0dXJuIHQubGVuZ3RoJiZ0WzBdLmxhYmVsJiZ0WzBdLnZhbHVlP3Q6ZS5tYXAodCxmdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/e2xhYmVsOnQsdmFsdWU6dH06ZS5leHRlbmQoe30sdCx7bGFiZWw6dC5sYWJlbHx8dC52YWx1ZSx2YWx1ZTp0LnZhbHVlfHx0LmxhYmVsfSl9KX0sX3N1Z2dlc3Q6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5tZW51LmVsZW1lbnQuZW1wdHkoKTt0aGlzLl9yZW5kZXJNZW51KGksdCksdGhpcy5pc05ld01lbnU9ITAsdGhpcy5tZW51LnJlZnJlc2goKSxpLnNob3coKSx0aGlzLl9yZXNpemVNZW51KCksaS5wb3NpdGlvbihlLmV4dGVuZCh7b2Y6dGhpcy5lbGVtZW50fSx0aGlzLm9wdGlvbnMucG9zaXRpb24pKSx0aGlzLm9wdGlvbnMuYXV0b0ZvY3VzJiZ0aGlzLm1lbnUubmV4dCgpfSxfcmVzaXplTWVudTpmdW5jdGlvbigpe3ZhciBlPXRoaXMubWVudS5lbGVtZW50O2Uub3V0ZXJXaWR0aChNYXRoLm1heChlLndpZHRoKCIiKS5vdXRlcldpZHRoKCkrMSx0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpKSl9LF9yZW5kZXJNZW51OmZ1bmN0aW9uKHQsaSl7dmFyIHM9dGhpcztlLmVhY2goaSxmdW5jdGlvbihlLGkpe3MuX3JlbmRlckl0ZW1EYXRhKHQsaSl9KX0sX3JlbmRlckl0ZW1EYXRhOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX3JlbmRlckl0ZW0oZSx0KS5kYXRhKCJ1aS1hdXRvY29tcGxldGUtaXRlbSIsdCl9LF9yZW5kZXJJdGVtOmZ1bmN0aW9uKHQsaSl7cmV0dXJuIGUoIjxsaT4iKS50ZXh0KGkubGFiZWwpLmFwcGVuZFRvKHQpfSxfbW92ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKT90aGlzLm1lbnUuaXNGaXJzdEl0ZW0oKSYmL15wcmV2aW91cy8udGVzdChlKXx8dGhpcy5tZW51LmlzTGFzdEl0ZW0oKSYmL15uZXh0Ly50ZXN0KGUpPyh0aGlzLmlzTXVsdGlMaW5lfHx0aGlzLl92YWx1ZSh0aGlzLnRlcm0pLHRoaXMubWVudS5ibHVyKCksdm9pZCAwKToodGhpcy5tZW51W2VdKHQpLHZvaWQgMCk6KHRoaXMuc2VhcmNoKG51bGwsdCksdm9pZCAwKX0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWVudS5lbGVtZW50fSxfdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZU1ldGhvZC5hcHBseSh0aGlzLmVsZW1lbnQsYXJndW1lbnRzKX0sX2tleUV2ZW50OmZ1bmN0aW9uKGUsdCl7KCF0aGlzLmlzTXVsdGlMaW5lfHx0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKSkmJih0aGlzLl9tb3ZlKGUsdCksdC5wcmV2ZW50RGVmYXVsdCgpKX19KSxlLmV4dGVuZChlLnVpLmF1dG9jb21wbGV0ZSx7ZXNjYXBlUmVnZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywiXFwkJiIpfSxmaWx0ZXI6ZnVuY3Rpb24odCxpKXt2YXIgcz1SZWdFeHAoZS51aS5hdXRvY29tcGxldGUuZXNjYXBlUmVnZXgoaSksImkiKTtyZXR1cm4gZS5ncmVwKHQsZnVuY3Rpb24oZSl7cmV0dXJuIHMudGVzdChlLmxhYmVsfHxlLnZhbHVlfHxlKX0pfX0pLGUud2lkZ2V0KCJ1aS5hdXRvY29tcGxldGUiLGUudWkuYXV0b2NvbXBsZXRlLHtvcHRpb25zOnttZXNzYWdlczp7bm9SZXN1bHRzOiJObyBzZWFyY2ggcmVzdWx0cy4iLHJlc3VsdHM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUrKGU+MT8iIHJlc3VsdHMgYXJlIjoiIHJlc3VsdCBpcyIpKyIgYXZhaWxhYmxlLCB1c2UgdXAgYW5kIGRvd24gYXJyb3cga2V5cyB0byBuYXZpZ2F0ZS4ifX19LF9fcmVzcG9uc2U6ZnVuY3Rpb24odCl7dmFyIGk7dGhpcy5fc3VwZXJBcHBseShhcmd1bWVudHMpLHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8dGhpcy5jYW5jZWxTZWFyY2h8fChpPXQmJnQubGVuZ3RoP3RoaXMub3B0aW9ucy5tZXNzYWdlcy5yZXN1bHRzKHQubGVuZ3RoKTp0aGlzLm9wdGlvbnMubWVzc2FnZXMubm9SZXN1bHRzLHRoaXMubGl2ZVJlZ2lvbi5jaGlsZHJlbigpLmhpZGUoKSxlKCI8ZGl2PiIpLnRleHQoaSkuYXBwZW5kVG8odGhpcy5saXZlUmVnaW9uKSl9fSksZS51aS5hdXRvY29tcGxldGU7dmFyIHIsaD0idWktYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiLGw9InVpLWJ1dHRvbi1pY29ucy1vbmx5IHVpLWJ1dHRvbi1pY29uLW9ubHkgdWktYnV0dG9uLXRleHQtaWNvbnMgdWktYnV0dG9uLXRleHQtaWNvbi1wcmltYXJ5IHVpLWJ1dHRvbi10ZXh0LWljb24tc2Vjb25kYXJ5IHVpLWJ1dHRvbi10ZXh0LW9ubHkiLHU9ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmZpbmQoIjp1aS1idXR0b24iKS5idXR0b24oInJlZnJlc2giKX0sMSl9LGQ9ZnVuY3Rpb24odCl7dmFyIGk9dC5uYW1lLHM9dC5mb3JtLG49ZShbXSk7cmV0dXJuIGkmJihpPWkucmVwbGFjZSgvJy9nLCJcXCciKSxuPXM/ZShzKS5maW5kKCJbbmFtZT0nIitpKyInXVt0eXBlPXJhZGlvXSIpOmUoIltuYW1lPSciK2krIiddW3R5cGU9cmFkaW9dIix0Lm93bmVyRG9jdW1lbnQpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiF0aGlzLmZvcm19KSksbn07ZS53aWRnZXQoInVpLmJ1dHRvbiIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6IjxidXR0b24+IixvcHRpb25zOntkaXNhYmxlZDpudWxsLHRleHQ6ITAsbGFiZWw6bnVsbCxpY29uczp7cHJpbWFyeTpudWxsLHNlY29uZGFyeTpudWxsfX0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5jbG9zZXN0KCJmb3JtIikudW5iaW5kKCJyZXNldCIrdGhpcy5ldmVudE5hbWVzcGFjZSkuYmluZCgicmVzZXQiK3RoaXMuZXZlbnROYW1lc3BhY2UsdSksImJvb2xlYW4iIT10eXBlb2YgdGhpcy5vcHRpb25zLmRpc2FibGVkP3RoaXMub3B0aW9ucy5kaXNhYmxlZD0hIXRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIpOnRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsdGhpcy5vcHRpb25zLmRpc2FibGVkKSx0aGlzLl9kZXRlcm1pbmVCdXR0b25UeXBlKCksdGhpcy5oYXNUaXRsZT0hIXRoaXMuYnV0dG9uRWxlbWVudC5hdHRyKCJ0aXRsZSIpO3ZhciB0PXRoaXMsaT10aGlzLm9wdGlvbnMscz0iY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlLG49cz8iIjoidWktc3RhdGUtYWN0aXZlIjtudWxsPT09aS5sYWJlbCYmKGkubGFiZWw9ImlucHV0Ij09PXRoaXMudHlwZT90aGlzLmJ1dHRvbkVsZW1lbnQudmFsKCk6dGhpcy5idXR0b25FbGVtZW50Lmh0bWwoKSksdGhpcy5faG92ZXJhYmxlKHRoaXMuYnV0dG9uRWxlbWVudCksdGhpcy5idXR0b25FbGVtZW50LmFkZENsYXNzKGgpLmF0dHIoInJvbGUiLCJidXR0b24iKS5iaW5kKCJtb3VzZWVudGVyIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKCl7aS5kaXNhYmxlZHx8dGhpcz09PXImJmUodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfSkuYmluZCgibW91c2VsZWF2ZSIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe2kuZGlzYWJsZWR8fGUodGhpcykucmVtb3ZlQ2xhc3Mobil9KS5iaW5kKCJjbGljayIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbihlKXtpLmRpc2FibGVkJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCkpfSksdGhpcy5fb24oe2ZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5idXR0b25FbGVtZW50LmFkZENsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxibHVyOmZ1bmN0aW9uKCl7dGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfX0pLHMmJnRoaXMuZWxlbWVudC5iaW5kKCJjaGFuZ2UiK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXt0LnJlZnJlc2goKX0pLCJjaGVja2JveCI9PT10aGlzLnR5cGU/dGhpcy5idXR0b25FbGVtZW50LmJpbmQoImNsaWNrIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKCl7cmV0dXJuIGkuZGlzYWJsZWQ/ITE6dm9pZCAwfSk6InJhZGlvIj09PXRoaXMudHlwZT90aGlzLmJ1dHRvbkVsZW1lbnQuYmluZCgiY2xpY2siK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXtpZihpLmRpc2FibGVkKXJldHVybiExO2UodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHQuYnV0dG9uRWxlbWVudC5hdHRyKCJhcmlhLXByZXNzZWQiLCJ0cnVlIik7dmFyIHM9dC5lbGVtZW50WzBdO2Qocykubm90KHMpLm1hcChmdW5jdGlvbigpe3JldHVybiBlKHRoaXMpLmJ1dHRvbigid2lkZ2V0IilbMF19KS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIikuYXR0cigiYXJpYS1wcmVzc2VkIiwiZmFsc2UiKX0pOih0aGlzLmJ1dHRvbkVsZW1lbnQuYmluZCgibW91c2Vkb3duIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKCl7cmV0dXJuIGkuZGlzYWJsZWQ/ITE6KGUodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHI9dGhpcyx0LmRvY3VtZW50Lm9uZSgibW91c2V1cCIsZnVuY3Rpb24oKXtyPW51bGx9KSx2b2lkIDApfSkuYmluZCgibW91c2V1cCIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe3JldHVybiBpLmRpc2FibGVkPyExOihlKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSx2b2lkIDApfSkuYmluZCgia2V5ZG93biIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbih0KXtyZXR1cm4gaS5kaXNhYmxlZD8hMTooKHQua2V5Q29kZT09PWUudWkua2V5Q29kZS5TUEFDRXx8dC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLkVOVEVSKSYmZSh0aGlzKS5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdm9pZCAwKX0pLmJpbmQoImtleXVwIit0aGlzLmV2ZW50TmFtZXNwYWNlKyIgYmx1ciIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe2UodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfSksdGhpcy5idXR0b25FbGVtZW50LmlzKCJhIikmJnRoaXMuYnV0dG9uRWxlbWVudC5rZXl1cChmdW5jdGlvbih0KXt0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuU1BBQ0UmJmUodGhpcykuY2xpY2soKX0pKSx0aGlzLl9zZXRPcHRpb24oImRpc2FibGVkIixpLmRpc2FibGVkKSx0aGlzLl9yZXNldEJ1dHRvbigpfSxfZGV0ZXJtaW5lQnV0dG9uVHlwZTpmdW5jdGlvbigpe3ZhciBlLHQsaTt0aGlzLnR5cGU9dGhpcy5lbGVtZW50LmlzKCJbdHlwZT1jaGVja2JveF0iKT8iY2hlY2tib3giOnRoaXMuZWxlbWVudC5pcygiW3R5cGU9cmFkaW9dIik/InJhZGlvIjp0aGlzLmVsZW1lbnQuaXMoImlucHV0Iik/ImlucHV0IjoiYnV0dG9uIiwiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlPyhlPXRoaXMuZWxlbWVudC5wYXJlbnRzKCkubGFzdCgpLHQ9ImxhYmVsW2Zvcj0nIit0aGlzLmVsZW1lbnQuYXR0cigiaWQiKSsiJ10iLHRoaXMuYnV0dG9uRWxlbWVudD1lLmZpbmQodCksdGhpcy5idXR0b25FbGVtZW50Lmxlbmd0aHx8KGU9ZS5sZW5ndGg/ZS5zaWJsaW5ncygpOnRoaXMuZWxlbWVudC5zaWJsaW5ncygpLHRoaXMuYnV0dG9uRWxlbWVudD1lLmZpbHRlcih0KSx0aGlzLmJ1dHRvbkVsZW1lbnQubGVuZ3RofHwodGhpcy5idXR0b25FbGVtZW50PWUuZmluZCh0KSkpLHRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxlIiksaT10aGlzLmVsZW1lbnQuaXMoIjpjaGVja2VkIiksaSYmdGhpcy5idXR0b25FbGVtZW50LmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLmJ1dHRvbkVsZW1lbnQucHJvcCgiYXJpYS1wcmVzc2VkIixpKSk6dGhpcy5idXR0b25FbGVtZW50PXRoaXMuZWxlbWVudH0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnV0dG9uRWxlbWVudH0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZSIpLHRoaXMuYnV0dG9uRWxlbWVudC5yZW1vdmVDbGFzcyhoKyIgdWktc3RhdGUtYWN0aXZlICIrbCkucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtcHJlc3NlZCIpLmh0bWwodGhpcy5idXR0b25FbGVtZW50LmZpbmQoIi51aS1idXR0b24tdGV4dCIpLmh0bWwoKSksdGhpcy5oYXNUaXRsZXx8dGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUF0dHIoInRpdGxlIil9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fc3VwZXIoZSx0KSwiZGlzYWJsZWQiPT09ZT8odGhpcy53aWRnZXQoKS50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCksdGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIiwhIXQpLHQmJigiY2hlY2tib3giPT09dGhpcy50eXBlfHwicmFkaW8iPT09dGhpcy50eXBlP3RoaXMuYnV0dG9uRWxlbWVudC5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKTp0aGlzLmJ1dHRvbkVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWZvY3VzIHVpLXN0YXRlLWFjdGl2ZSIpKSx2b2lkIDApOih0aGlzLl9yZXNldEJ1dHRvbigpLHZvaWQgMCl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmVsZW1lbnQuaXMoImlucHV0LCBidXR0b24iKT90aGlzLmVsZW1lbnQuaXMoIjpkaXNhYmxlZCIpOnRoaXMuZWxlbWVudC5oYXNDbGFzcygidWktYnV0dG9uLWRpc2FibGVkIik7dCE9PXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdCksInJhZGlvIj09PXRoaXMudHlwZT9kKHRoaXMuZWxlbWVudFswXSkuZWFjaChmdW5jdGlvbigpe2UodGhpcykuaXMoIjpjaGVja2VkIik/ZSh0aGlzKS5idXR0b24oIndpZGdldCIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKCJhcmlhLXByZXNzZWQiLCJ0cnVlIik6ZSh0aGlzKS5idXR0b24oIndpZGdldCIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKCJhcmlhLXByZXNzZWQiLCJmYWxzZSIpfSk6ImNoZWNrYm94Ij09PXRoaXMudHlwZSYmKHRoaXMuZWxlbWVudC5pcygiOmNoZWNrZWQiKT90aGlzLmJ1dHRvbkVsZW1lbnQuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsInRydWUiKTp0aGlzLmJ1dHRvbkVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsImZhbHNlIikpfSxfcmVzZXRCdXR0b246ZnVuY3Rpb24oKXtpZigiaW5wdXQiPT09dGhpcy50eXBlKXJldHVybiB0aGlzLm9wdGlvbnMubGFiZWwmJnRoaXMuZWxlbWVudC52YWwodGhpcy5vcHRpb25zLmxhYmVsKSx2b2lkIDA7dmFyIHQ9dGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUNsYXNzKGwpLGk9ZSgiPHNwYW4+PC9zcGFuPiIsdGhpcy5kb2N1bWVudFswXSkuYWRkQ2xhc3MoInVpLWJ1dHRvbi10ZXh0IikuaHRtbCh0aGlzLm9wdGlvbnMubGFiZWwpLmFwcGVuZFRvKHQuZW1wdHkoKSkudGV4dCgpLHM9dGhpcy5vcHRpb25zLmljb25zLG49cy5wcmltYXJ5JiZzLnNlY29uZGFyeSxhPVtdO3MucHJpbWFyeXx8cy5zZWNvbmRhcnk/KHRoaXMub3B0aW9ucy50ZXh0JiZhLnB1c2goInVpLWJ1dHRvbi10ZXh0LWljb24iKyhuPyJzIjpzLnByaW1hcnk/Ii1wcmltYXJ5IjoiLXNlY29uZGFyeSIpKSxzLnByaW1hcnkmJnQucHJlcGVuZCgiPHNwYW4gY2xhc3M9J3VpLWJ1dHRvbi1pY29uLXByaW1hcnkgdWktaWNvbiAiK3MucHJpbWFyeSsiJz48L3NwYW4+Iikscy5zZWNvbmRhcnkmJnQuYXBwZW5kKCI8c3BhbiBjbGFzcz0ndWktYnV0dG9uLWljb24tc2Vjb25kYXJ5IHVpLWljb24gIitzLnNlY29uZGFyeSsiJz48L3NwYW4+IiksdGhpcy5vcHRpb25zLnRleHR8fChhLnB1c2gobj8idWktYnV0dG9uLWljb25zLW9ubHkiOiJ1aS1idXR0b24taWNvbi1vbmx5IiksdGhpcy5oYXNUaXRsZXx8dC5hdHRyKCJ0aXRsZSIsZS50cmltKGkpKSkpOmEucHVzaCgidWktYnV0dG9uLXRleHQtb25seSIpLHQuYWRkQ2xhc3MoYS5qb2luKCIgIikpfX0pLGUud2lkZ2V0KCJ1aS5idXR0b25zZXQiLHt2ZXJzaW9uOiIxLjExLjQiLG9wdGlvbnM6e2l0ZW1zOiJidXR0b24sIGlucHV0W3R5cGU9YnV0dG9uXSwgaW5wdXRbdHlwZT1zdWJtaXRdLCBpbnB1dFt0eXBlPXJlc2V0XSwgaW5wdXRbdHlwZT1jaGVja2JveF0sIGlucHV0W3R5cGU9cmFkaW9dLCBhLCA6ZGF0YSh1aS1idXR0b24pIn0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hZGRDbGFzcygidWktYnV0dG9uc2V0Iil9LF9pbml0OmZ1bmN0aW9uKCl7dGhpcy5yZWZyZXNoKCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXsiZGlzYWJsZWQiPT09ZSYmdGhpcy5idXR0b25zLmJ1dHRvbigib3B0aW9uIixlLHQpLHRoaXMuX3N1cGVyKGUsdCl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdD0icnRsIj09PXRoaXMuZWxlbWVudC5jc3MoImRpcmVjdGlvbiIpLGk9dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKSxzPWkuZmlsdGVyKCI6dWktYnV0dG9uIik7aS5ub3QoIjp1aS1idXR0b24iKS5idXR0b24oKSxzLmJ1dHRvbigicmVmcmVzaCIpLHRoaXMuYnV0dG9ucz1pLm1hcChmdW5jdGlvbigpe3JldHVybiBlKHRoaXMpLmJ1dHRvbigid2lkZ2V0IilbMF19KS5yZW1vdmVDbGFzcygidWktY29ybmVyLWFsbCB1aS1jb3JuZXItbGVmdCB1aS1jb3JuZXItcmlnaHQiKS5maWx0ZXIoIjpmaXJzdCIpLmFkZENsYXNzKHQ/InVpLWNvcm5lci1yaWdodCI6InVpLWNvcm5lci1sZWZ0IikuZW5kKCkuZmlsdGVyKCI6bGFzdCIpLmFkZENsYXNzKHQ/InVpLWNvcm5lci1sZWZ0IjoidWktY29ybmVyLXJpZ2h0IikuZW5kKCkuZW5kKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1idXR0b25zZXQiKSx0aGlzLmJ1dHRvbnMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcykuYnV0dG9uKCJ3aWRnZXQiKVswXX0pLnJlbW92ZUNsYXNzKCJ1aS1jb3JuZXItbGVmdCB1aS1jb3JuZXItcmlnaHQiKS5lbmQoKS5idXR0b24oImRlc3Ryb3kiKX19KSxlLnVpLmJ1dHRvbixlLndpZGdldCgidWkuZGlhbG9nIix7dmVyc2lvbjoiMS4xMS40IixvcHRpb25zOnthcHBlbmRUbzoiYm9keSIsYXV0b09wZW46ITAsYnV0dG9uczpbXSxjbG9zZU9uRXNjYXBlOiEwLGNsb3NlVGV4dDoiQ2xvc2UiLGRpYWxvZ0NsYXNzOiIiLGRyYWdnYWJsZTohMCxoaWRlOm51bGwsaGVpZ2h0OiJhdXRvIixtYXhIZWlnaHQ6bnVsbCxtYXhXaWR0aDpudWxsLG1pbkhlaWdodDoxNTAsbWluV2lkdGg6MTUwLG1vZGFsOiExLHBvc2l0aW9uOntteToiY2VudGVyIixhdDoiY2VudGVyIixvZjp3aW5kb3csY29sbGlzaW9uOiJmaXQiLHVzaW5nOmZ1bmN0aW9uKHQpe3ZhciBpPWUodGhpcykuY3NzKHQpLm9mZnNldCgpLnRvcDswPmkmJmUodGhpcykuY3NzKCJ0b3AiLHQudG9wLWkpfX0scmVzaXphYmxlOiEwLHNob3c6bnVsbCx0aXRsZTpudWxsLHdpZHRoOjMwMCxiZWZvcmVDbG9zZTpudWxsLGNsb3NlOm51bGwsZHJhZzpudWxsLGRyYWdTdGFydDpudWxsLGRyYWdTdG9wOm51bGwsZm9jdXM6bnVsbCxvcGVuOm51bGwscmVzaXplOm51bGwscmVzaXplU3RhcnQ6bnVsbCxyZXNpemVTdG9wOm51bGx9LHNpemVSZWxhdGVkT3B0aW9uczp7YnV0dG9uczohMCxoZWlnaHQ6ITAsbWF4SGVpZ2h0OiEwLG1heFdpZHRoOiEwLG1pbkhlaWdodDohMCxtaW5XaWR0aDohMCx3aWR0aDohMH0scmVzaXphYmxlUmVsYXRlZE9wdGlvbnM6e21heEhlaWdodDohMCxtYXhXaWR0aDohMCxtaW5IZWlnaHQ6ITAsbWluV2lkdGg6ITB9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLm9yaWdpbmFsQ3NzPXtkaXNwbGF5OnRoaXMuZWxlbWVudFswXS5zdHlsZS5kaXNwbGF5LHdpZHRoOnRoaXMuZWxlbWVudFswXS5zdHlsZS53aWR0aCxtaW5IZWlnaHQ6dGhpcy5lbGVtZW50WzBdLnN0eWxlLm1pbkhlaWdodCxtYXhIZWlnaHQ6dGhpcy5lbGVtZW50WzBdLnN0eWxlLm1heEhlaWdodCxoZWlnaHQ6dGhpcy5lbGVtZW50WzBdLnN0eWxlLmhlaWdodH0sdGhpcy5vcmlnaW5hbFBvc2l0aW9uPXtwYXJlbnQ6dGhpcy5lbGVtZW50LnBhcmVudCgpLGluZGV4OnRoaXMuZWxlbWVudC5wYXJlbnQoKS5jaGlsZHJlbigpLmluZGV4KHRoaXMuZWxlbWVudCl9LHRoaXMub3JpZ2luYWxUaXRsZT10aGlzLmVsZW1lbnQuYXR0cigidGl0bGUiKSx0aGlzLm9wdGlvbnMudGl0bGU9dGhpcy5vcHRpb25zLnRpdGxlfHx0aGlzLm9yaWdpbmFsVGl0bGUsdGhpcy5fY3JlYXRlV3JhcHBlcigpLHRoaXMuZWxlbWVudC5zaG93KCkucmVtb3ZlQXR0cigidGl0bGUiKS5hZGRDbGFzcygidWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiKS5hcHBlbmRUbyh0aGlzLnVpRGlhbG9nKSx0aGlzLl9jcmVhdGVUaXRsZWJhcigpLHRoaXMuX2NyZWF0ZUJ1dHRvblBhbmUoKSx0aGlzLm9wdGlvbnMuZHJhZ2dhYmxlJiZlLmZuLmRyYWdnYWJsZSYmdGhpcy5fbWFrZURyYWdnYWJsZSgpLHRoaXMub3B0aW9ucy5yZXNpemFibGUmJmUuZm4ucmVzaXphYmxlJiZ0aGlzLl9tYWtlUmVzaXphYmxlKCksdGhpcy5faXNPcGVuPSExLHRoaXMuX3RyYWNrRm9jdXMoKX0sX2luaXQ6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYXV0b09wZW4mJnRoaXMub3BlbigpfSxfYXBwZW5kVG86ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuYXBwZW5kVG87cmV0dXJuIHQmJih0LmpxdWVyeXx8dC5ub2RlVHlwZSk/ZSh0KTp0aGlzLmRvY3VtZW50LmZpbmQodHx8ImJvZHkiKS5lcSgwKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZSx0PXRoaXMub3JpZ2luYWxQb3NpdGlvbjt0aGlzLl91bnRyYWNrSW5zdGFuY2UoKSx0aGlzLl9kZXN0cm95T3ZlcmxheSgpLHRoaXMuZWxlbWVudC5yZW1vdmVVbmlxdWVJZCgpLnJlbW92ZUNsYXNzKCJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIpLmNzcyh0aGlzLm9yaWdpbmFsQ3NzKS5kZXRhY2goKSx0aGlzLnVpRGlhbG9nLnN0b3AoITAsITApLnJlbW92ZSgpLHRoaXMub3JpZ2luYWxUaXRsZSYmdGhpcy5lbGVtZW50LmF0dHIoInRpdGxlIix0aGlzLm9yaWdpbmFsVGl0bGUpLGU9dC5wYXJlbnQuY2hpbGRyZW4oKS5lcSh0LmluZGV4KSxlLmxlbmd0aCYmZVswXSE9PXRoaXMuZWxlbWVudFswXT9lLmJlZm9yZSh0aGlzLmVsZW1lbnQpOnQucGFyZW50LmFwcGVuZCh0aGlzLmVsZW1lbnQpfSx3aWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51aURpYWxvZ30sZGlzYWJsZTplLm5vb3AsZW5hYmxlOmUubm9vcCxjbG9zZTpmdW5jdGlvbih0KXt2YXIgaSxzPXRoaXM7aWYodGhpcy5faXNPcGVuJiZ0aGlzLl90cmlnZ2VyKCJiZWZvcmVDbG9zZSIsdCkhPT0hMSl7aWYodGhpcy5faXNPcGVuPSExLHRoaXMuX2ZvY3VzZWRFbGVtZW50PW51bGwsdGhpcy5fZGVzdHJveU92ZXJsYXkoKSx0aGlzLl91bnRyYWNrSW5zdGFuY2UoKSwhdGhpcy5vcGVuZXIuZmlsdGVyKCI6Zm9jdXNhYmxlIikuZm9jdXMoKS5sZW5ndGgpdHJ5e2k9dGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50LGkmJiJib2R5IiE9PWkubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZShpKS5ibHVyKCl9Y2F0Y2gobil7fXRoaXMuX2hpZGUodGhpcy51aURpYWxvZyx0aGlzLm9wdGlvbnMuaGlkZSxmdW5jdGlvbigpe3MuX3RyaWdnZXIoImNsb3NlIix0KX0pfX0saXNPcGVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzT3Blbn0sbW92ZVRvVG9wOmZ1bmN0aW9uKCl7dGhpcy5fbW92ZVRvVG9wKCl9LF9tb3ZlVG9Ub3A6ZnVuY3Rpb24odCxpKXt2YXIgcz0hMSxuPXRoaXMudWlEaWFsb2cuc2libGluZ3MoIi51aS1mcm9udDp2aXNpYmxlIikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuK2UodGhpcykuY3NzKCJ6LWluZGV4Iil9KS5nZXQoKSxhPU1hdGgubWF4LmFwcGx5KG51bGwsbik7cmV0dXJuIGE+PSt0aGlzLnVpRGlhbG9nLmNzcygiei1pbmRleCIpJiYodGhpcy51aURpYWxvZy5jc3MoInotaW5kZXgiLGErMSkscz0hMCkscyYmIWkmJnRoaXMuX3RyaWdnZXIoImZvY3VzIix0KSxzfSxvcGVuOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5faXNPcGVuPyh0aGlzLl9tb3ZlVG9Ub3AoKSYmdGhpcy5fZm9jdXNUYWJiYWJsZSgpLHZvaWQgMCk6KHRoaXMuX2lzT3Blbj0hMCx0aGlzLm9wZW5lcj1lKHRoaXMuZG9jdW1lbnRbMF0uYWN0aXZlRWxlbWVudCksdGhpcy5fc2l6ZSgpLHRoaXMuX3Bvc2l0aW9uKCksdGhpcy5fY3JlYXRlT3ZlcmxheSgpLHRoaXMuX21vdmVUb1RvcChudWxsLCEwKSx0aGlzLm92ZXJsYXkmJnRoaXMub3ZlcmxheS5jc3MoInotaW5kZXgiLHRoaXMudWlEaWFsb2cuY3NzKCJ6LWluZGV4IiktMSksdGhpcy5fc2hvdyh0aGlzLnVpRGlhbG9nLHRoaXMub3B0aW9ucy5zaG93LGZ1bmN0aW9uKCl7dC5fZm9jdXNUYWJiYWJsZSgpLHQuX3RyaWdnZXIoImZvY3VzIil9KSx0aGlzLl9tYWtlRm9jdXNUYXJnZXQoKSx0aGlzLl90cmlnZ2VyKCJvcGVuIiksdm9pZCAwKX0sX2ZvY3VzVGFiYmFibGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9mb2N1c2VkRWxlbWVudDtlfHwoZT10aGlzLmVsZW1lbnQuZmluZCgiW2F1dG9mb2N1c10iKSksZS5sZW5ndGh8fChlPXRoaXMuZWxlbWVudC5maW5kKCI6dGFiYmFibGUiKSksZS5sZW5ndGh8fChlPXRoaXMudWlEaWFsb2dCdXR0b25QYW5lLmZpbmQoIjp0YWJiYWJsZSIpKSxlLmxlbmd0aHx8KGU9dGhpcy51aURpYWxvZ1RpdGxlYmFyQ2xvc2UuZmlsdGVyKCI6dGFiYmFibGUiKSksZS5sZW5ndGh8fChlPXRoaXMudWlEaWFsb2cpLGUuZXEoMCkuZm9jdXMoKX0sX2tlZXBGb2N1czpmdW5jdGlvbih0KXtmdW5jdGlvbiBpKCl7dmFyIHQ9dGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50LGk9dGhpcy51aURpYWxvZ1swXT09PXR8fGUuY29udGFpbnModGhpcy51aURpYWxvZ1swXSx0KTtpfHx0aGlzLl9mb2N1c1RhYmJhYmxlKCl9dC5wcmV2ZW50RGVmYXVsdCgpLGkuY2FsbCh0aGlzKSx0aGlzLl9kZWxheShpKX0sX2NyZWF0ZVdyYXBwZXI6ZnVuY3Rpb24oKXt0aGlzLnVpRGlhbG9nPWUoIjxkaXY+IikuYWRkQ2xhc3MoInVpLWRpYWxvZyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS1mcm9udCAiK3RoaXMub3B0aW9ucy5kaWFsb2dDbGFzcykuaGlkZSgpLmF0dHIoe3RhYkluZGV4Oi0xLHJvbGU6ImRpYWxvZyJ9KS5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSx0aGlzLl9vbih0aGlzLnVpRGlhbG9nLHtrZXlkb3duOmZ1bmN0aW9uKHQpe2lmKHRoaXMub3B0aW9ucy5jbG9zZU9uRXNjYXBlJiYhdC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmdC5rZXlDb2RlJiZ0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuRVNDQVBFKXJldHVybiB0LnByZXZlbnREZWZhdWx0KCksdGhpcy5jbG9zZSh0KSx2b2lkIDA7aWYodC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLlRBQiYmIXQuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBpPXRoaXMudWlEaWFsb2cuZmluZCgiOnRhYmJhYmxlIikscz1pLmZpbHRlcigiOmZpcnN0Iiksbj1pLmZpbHRlcigiOmxhc3QiKTt0LnRhcmdldCE9PW5bMF0mJnQudGFyZ2V0IT09dGhpcy51aURpYWxvZ1swXXx8dC5zaGlmdEtleT90LnRhcmdldCE9PXNbMF0mJnQudGFyZ2V0IT09dGhpcy51aURpYWxvZ1swXXx8IXQuc2hpZnRLZXl8fCh0aGlzLl9kZWxheShmdW5jdGlvbigpe24uZm9jdXMoKX0pLHQucHJldmVudERlZmF1bHQoKSk6KHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7cy5mb2N1cygpfSksdC5wcmV2ZW50RGVmYXVsdCgpKX19LG1vdXNlZG93bjpmdW5jdGlvbihlKXt0aGlzLl9tb3ZlVG9Ub3AoZSkmJnRoaXMuX2ZvY3VzVGFiYmFibGUoKX19KSx0aGlzLmVsZW1lbnQuZmluZCgiW2FyaWEtZGVzY3JpYmVkYnldIikubGVuZ3RofHx0aGlzLnVpRGlhbG9nLmF0dHIoeyJhcmlhLWRlc2NyaWJlZGJ5Ijp0aGlzLmVsZW1lbnQudW5pcXVlSWQoKS5hdHRyKCJpZCIpfSl9LF9jcmVhdGVUaXRsZWJhcjpmdW5jdGlvbigpe3ZhciB0O3RoaXMudWlEaWFsb2dUaXRsZWJhcj1lKCI8ZGl2PiIpLmFkZENsYXNzKCJ1aS1kaWFsb2ctdGl0bGViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIHVpLWhlbHBlci1jbGVhcmZpeCIpLnByZXBlbmRUbyh0aGlzLnVpRGlhbG9nKSx0aGlzLl9vbih0aGlzLnVpRGlhbG9nVGl0bGViYXIse21vdXNlZG93bjpmdW5jdGlvbih0KXtlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlIil8fHRoaXMudWlEaWFsb2cuZm9jdXMoKX19KSx0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZT1lKCI8YnV0dG9uIHR5cGU9J2J1dHRvbic+PC9idXR0b24+IikuYnV0dG9uKHtsYWJlbDp0aGlzLm9wdGlvbnMuY2xvc2VUZXh0LGljb25zOntwcmltYXJ5OiJ1aS1pY29uLWNsb3NldGhpY2sifSx0ZXh0OiExfSkuYWRkQ2xhc3MoInVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSIpLmFwcGVuZFRvKHRoaXMudWlEaWFsb2dUaXRsZWJhciksdGhpcy5fb24odGhpcy51aURpYWxvZ1RpdGxlYmFyQ2xvc2Use2NsaWNrOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSx0aGlzLmNsb3NlKGUpfX0pLHQ9ZSgiPHNwYW4+IikudW5pcXVlSWQoKS5hZGRDbGFzcygidWktZGlhbG9nLXRpdGxlIikucHJlcGVuZFRvKHRoaXMudWlEaWFsb2dUaXRsZWJhciksdGhpcy5fdGl0bGUodCksdGhpcy51aURpYWxvZy5hdHRyKHsiYXJpYS1sYWJlbGxlZGJ5Ijp0LmF0dHIoImlkIil9KX0sX3RpdGxlOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucy50aXRsZXx8ZS5odG1sKCImIzE2MDsiKSxlLnRleHQodGhpcy5vcHRpb25zLnRpdGxlKQp9LF9jcmVhdGVCdXR0b25QYW5lOmZ1bmN0aW9uKCl7dGhpcy51aURpYWxvZ0J1dHRvblBhbmU9ZSgiPGRpdj4iKS5hZGRDbGFzcygidWktZGlhbG9nLWJ1dHRvbnBhbmUgdWktd2lkZ2V0LWNvbnRlbnQgdWktaGVscGVyLWNsZWFyZml4IiksdGhpcy51aUJ1dHRvblNldD1lKCI8ZGl2PiIpLmFkZENsYXNzKCJ1aS1kaWFsb2ctYnV0dG9uc2V0IikuYXBwZW5kVG8odGhpcy51aURpYWxvZ0J1dHRvblBhbmUpLHRoaXMuX2NyZWF0ZUJ1dHRvbnMoKX0sX2NyZWF0ZUJ1dHRvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dGhpcy5vcHRpb25zLmJ1dHRvbnM7cmV0dXJuIHRoaXMudWlEaWFsb2dCdXR0b25QYW5lLnJlbW92ZSgpLHRoaXMudWlCdXR0b25TZXQuZW1wdHkoKSxlLmlzRW1wdHlPYmplY3QoaSl8fGUuaXNBcnJheShpKSYmIWkubGVuZ3RoPyh0aGlzLnVpRGlhbG9nLnJlbW92ZUNsYXNzKCJ1aS1kaWFsb2ctYnV0dG9ucyIpLHZvaWQgMCk6KGUuZWFjaChpLGZ1bmN0aW9uKGkscyl7dmFyIG4sYTtzPWUuaXNGdW5jdGlvbihzKT97Y2xpY2s6cyx0ZXh0Oml9OnMscz1lLmV4dGVuZCh7dHlwZToiYnV0dG9uIn0scyksbj1zLmNsaWNrLHMuY2xpY2s9ZnVuY3Rpb24oKXtuLmFwcGx5KHQuZWxlbWVudFswXSxhcmd1bWVudHMpfSxhPXtpY29uczpzLmljb25zLHRleHQ6cy5zaG93VGV4dH0sZGVsZXRlIHMuaWNvbnMsZGVsZXRlIHMuc2hvd1RleHQsZSgiPGJ1dHRvbj48L2J1dHRvbj4iLHMpLmJ1dHRvbihhKS5hcHBlbmRUbyh0LnVpQnV0dG9uU2V0KX0pLHRoaXMudWlEaWFsb2cuYWRkQ2xhc3MoInVpLWRpYWxvZy1idXR0b25zIiksdGhpcy51aURpYWxvZ0J1dHRvblBhbmUuYXBwZW5kVG8odGhpcy51aURpYWxvZyksdm9pZCAwKX0sX21ha2VEcmFnZ2FibGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpe3JldHVybntwb3NpdGlvbjplLnBvc2l0aW9uLG9mZnNldDplLm9mZnNldH19dmFyIGk9dGhpcyxzPXRoaXMub3B0aW9uczt0aGlzLnVpRGlhbG9nLmRyYWdnYWJsZSh7Y2FuY2VsOiIudWktZGlhbG9nLWNvbnRlbnQsIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2UiLGhhbmRsZToiLnVpLWRpYWxvZy10aXRsZWJhciIsY29udGFpbm1lbnQ6ImRvY3VtZW50IixzdGFydDpmdW5jdGlvbihzLG4pe2UodGhpcykuYWRkQ2xhc3MoInVpLWRpYWxvZy1kcmFnZ2luZyIpLGkuX2Jsb2NrRnJhbWVzKCksaS5fdHJpZ2dlcigiZHJhZ1N0YXJ0IixzLHQobikpfSxkcmFnOmZ1bmN0aW9uKGUscyl7aS5fdHJpZ2dlcigiZHJhZyIsZSx0KHMpKX0sc3RvcDpmdW5jdGlvbihuLGEpe3ZhciBvPWEub2Zmc2V0LmxlZnQtaS5kb2N1bWVudC5zY3JvbGxMZWZ0KCkscj1hLm9mZnNldC50b3AtaS5kb2N1bWVudC5zY3JvbGxUb3AoKTtzLnBvc2l0aW9uPXtteToibGVmdCB0b3AiLGF0OiJsZWZ0Iisobz49MD8iKyI6IiIpK28rIiAiKyJ0b3AiKyhyPj0wPyIrIjoiIikrcixvZjppLndpbmRvd30sZSh0aGlzKS5yZW1vdmVDbGFzcygidWktZGlhbG9nLWRyYWdnaW5nIiksaS5fdW5ibG9ja0ZyYW1lcygpLGkuX3RyaWdnZXIoImRyYWdTdG9wIixuLHQoYSkpfX0pfSxfbWFrZVJlc2l6YWJsZTpmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7cmV0dXJue29yaWdpbmFsUG9zaXRpb246ZS5vcmlnaW5hbFBvc2l0aW9uLG9yaWdpbmFsU2l6ZTplLm9yaWdpbmFsU2l6ZSxwb3NpdGlvbjplLnBvc2l0aW9uLHNpemU6ZS5zaXplfX12YXIgaT10aGlzLHM9dGhpcy5vcHRpb25zLG49cy5yZXNpemFibGUsYT10aGlzLnVpRGlhbG9nLmNzcygicG9zaXRpb24iKSxvPSJzdHJpbmciPT10eXBlb2Ygbj9uOiJuLGUscyx3LHNlLHN3LG5lLG53Ijt0aGlzLnVpRGlhbG9nLnJlc2l6YWJsZSh7Y2FuY2VsOiIudWktZGlhbG9nLWNvbnRlbnQiLGNvbnRhaW5tZW50OiJkb2N1bWVudCIsYWxzb1Jlc2l6ZTp0aGlzLmVsZW1lbnQsbWF4V2lkdGg6cy5tYXhXaWR0aCxtYXhIZWlnaHQ6cy5tYXhIZWlnaHQsbWluV2lkdGg6cy5taW5XaWR0aCxtaW5IZWlnaHQ6dGhpcy5fbWluSGVpZ2h0KCksaGFuZGxlczpvLHN0YXJ0OmZ1bmN0aW9uKHMsbil7ZSh0aGlzKS5hZGRDbGFzcygidWktZGlhbG9nLXJlc2l6aW5nIiksaS5fYmxvY2tGcmFtZXMoKSxpLl90cmlnZ2VyKCJyZXNpemVTdGFydCIscyx0KG4pKX0scmVzaXplOmZ1bmN0aW9uKGUscyl7aS5fdHJpZ2dlcigicmVzaXplIixlLHQocykpfSxzdG9wOmZ1bmN0aW9uKG4sYSl7dmFyIG89aS51aURpYWxvZy5vZmZzZXQoKSxyPW8ubGVmdC1pLmRvY3VtZW50LnNjcm9sbExlZnQoKSxoPW8udG9wLWkuZG9jdW1lbnQuc2Nyb2xsVG9wKCk7cy5oZWlnaHQ9aS51aURpYWxvZy5oZWlnaHQoKSxzLndpZHRoPWkudWlEaWFsb2cud2lkdGgoKSxzLnBvc2l0aW9uPXtteToibGVmdCB0b3AiLGF0OiJsZWZ0Iisocj49MD8iKyI6IiIpK3IrIiAiKyJ0b3AiKyhoPj0wPyIrIjoiIikraCxvZjppLndpbmRvd30sZSh0aGlzKS5yZW1vdmVDbGFzcygidWktZGlhbG9nLXJlc2l6aW5nIiksaS5fdW5ibG9ja0ZyYW1lcygpLGkuX3RyaWdnZXIoInJlc2l6ZVN0b3AiLG4sdChhKSl9fSkuY3NzKCJwb3NpdGlvbiIsYSl9LF90cmFja0ZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5fb24odGhpcy53aWRnZXQoKSx7Zm9jdXNpbjpmdW5jdGlvbih0KXt0aGlzLl9tYWtlRm9jdXNUYXJnZXQoKSx0aGlzLl9mb2N1c2VkRWxlbWVudD1lKHQudGFyZ2V0KX19KX0sX21ha2VGb2N1c1RhcmdldDpmdW5jdGlvbigpe3RoaXMuX3VudHJhY2tJbnN0YW5jZSgpLHRoaXMuX3RyYWNraW5nSW5zdGFuY2VzKCkudW5zaGlmdCh0aGlzKX0sX3VudHJhY2tJbnN0YW5jZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3RyYWNraW5nSW5zdGFuY2VzKCksaT1lLmluQXJyYXkodGhpcyx0KTstMSE9PWkmJnQuc3BsaWNlKGksMSl9LF90cmFja2luZ0luc3RhbmNlczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLWluc3RhbmNlcyIpO3JldHVybiBlfHwoZT1bXSx0aGlzLmRvY3VtZW50LmRhdGEoInVpLWRpYWxvZy1pbnN0YW5jZXMiLGUpKSxlfSxfbWluSGVpZ2h0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO3JldHVybiJhdXRvIj09PWUuaGVpZ2h0P2UubWluSGVpZ2h0Ok1hdGgubWluKGUubWluSGVpZ2h0LGUuaGVpZ2h0KX0sX3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy51aURpYWxvZy5pcygiOnZpc2libGUiKTtlfHx0aGlzLnVpRGlhbG9nLnNob3coKSx0aGlzLnVpRGlhbG9nLnBvc2l0aW9uKHRoaXMub3B0aW9ucy5wb3NpdGlvbiksZXx8dGhpcy51aURpYWxvZy5oaWRlKCl9LF9zZXRPcHRpb25zOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMscz0hMSxuPXt9O2UuZWFjaCh0LGZ1bmN0aW9uKGUsdCl7aS5fc2V0T3B0aW9uKGUsdCksZSBpbiBpLnNpemVSZWxhdGVkT3B0aW9ucyYmKHM9ITApLGUgaW4gaS5yZXNpemFibGVSZWxhdGVkT3B0aW9ucyYmKG5bZV09dCl9KSxzJiYodGhpcy5fc2l6ZSgpLHRoaXMuX3Bvc2l0aW9uKCkpLHRoaXMudWlEaWFsb2cuaXMoIjpkYXRhKHVpLXJlc2l6YWJsZSkiKSYmdGhpcy51aURpYWxvZy5yZXNpemFibGUoIm9wdGlvbiIsbil9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt2YXIgaSxzLG49dGhpcy51aURpYWxvZzsiZGlhbG9nQ2xhc3MiPT09ZSYmbi5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuZGlhbG9nQ2xhc3MpLmFkZENsYXNzKHQpLCJkaXNhYmxlZCIhPT1lJiYodGhpcy5fc3VwZXIoZSx0KSwiYXBwZW5kVG8iPT09ZSYmdGhpcy51aURpYWxvZy5hcHBlbmRUbyh0aGlzLl9hcHBlbmRUbygpKSwiYnV0dG9ucyI9PT1lJiZ0aGlzLl9jcmVhdGVCdXR0b25zKCksImNsb3NlVGV4dCI9PT1lJiZ0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZS5idXR0b24oe2xhYmVsOiIiK3R9KSwiZHJhZ2dhYmxlIj09PWUmJihpPW4uaXMoIjpkYXRhKHVpLWRyYWdnYWJsZSkiKSxpJiYhdCYmbi5kcmFnZ2FibGUoImRlc3Ryb3kiKSwhaSYmdCYmdGhpcy5fbWFrZURyYWdnYWJsZSgpKSwicG9zaXRpb24iPT09ZSYmdGhpcy5fcG9zaXRpb24oKSwicmVzaXphYmxlIj09PWUmJihzPW4uaXMoIjpkYXRhKHVpLXJlc2l6YWJsZSkiKSxzJiYhdCYmbi5yZXNpemFibGUoImRlc3Ryb3kiKSxzJiYic3RyaW5nIj09dHlwZW9mIHQmJm4ucmVzaXphYmxlKCJvcHRpb24iLCJoYW5kbGVzIix0KSxzfHx0PT09ITF8fHRoaXMuX21ha2VSZXNpemFibGUoKSksInRpdGxlIj09PWUmJnRoaXMuX3RpdGxlKHRoaXMudWlEaWFsb2dUaXRsZWJhci5maW5kKCIudWktZGlhbG9nLXRpdGxlIikpKX0sX3NpemU6ZnVuY3Rpb24oKXt2YXIgZSx0LGkscz10aGlzLm9wdGlvbnM7dGhpcy5lbGVtZW50LnNob3coKS5jc3Moe3dpZHRoOiJhdXRvIixtaW5IZWlnaHQ6MCxtYXhIZWlnaHQ6Im5vbmUiLGhlaWdodDowfSkscy5taW5XaWR0aD5zLndpZHRoJiYocy53aWR0aD1zLm1pbldpZHRoKSxlPXRoaXMudWlEaWFsb2cuY3NzKHtoZWlnaHQ6ImF1dG8iLHdpZHRoOnMud2lkdGh9KS5vdXRlckhlaWdodCgpLHQ9TWF0aC5tYXgoMCxzLm1pbkhlaWdodC1lKSxpPSJudW1iZXIiPT10eXBlb2Ygcy5tYXhIZWlnaHQ/TWF0aC5tYXgoMCxzLm1heEhlaWdodC1lKToibm9uZSIsImF1dG8iPT09cy5oZWlnaHQ/dGhpcy5lbGVtZW50LmNzcyh7bWluSGVpZ2h0OnQsbWF4SGVpZ2h0OmksaGVpZ2h0OiJhdXRvIn0pOnRoaXMuZWxlbWVudC5oZWlnaHQoTWF0aC5tYXgoMCxzLmhlaWdodC1lKSksdGhpcy51aURpYWxvZy5pcygiOmRhdGEodWktcmVzaXphYmxlKSIpJiZ0aGlzLnVpRGlhbG9nLnJlc2l6YWJsZSgib3B0aW9uIiwibWluSGVpZ2h0Iix0aGlzLl9taW5IZWlnaHQoKSl9LF9ibG9ja0ZyYW1lczpmdW5jdGlvbigpe3RoaXMuaWZyYW1lQmxvY2tzPXRoaXMuZG9jdW1lbnQuZmluZCgiaWZyYW1lIikubWFwKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTtyZXR1cm4gZSgiPGRpdj4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsd2lkdGg6dC5vdXRlcldpZHRoKCksaGVpZ2h0OnQub3V0ZXJIZWlnaHQoKX0pLmFwcGVuZFRvKHQucGFyZW50KCkpLm9mZnNldCh0Lm9mZnNldCgpKVswXX0pfSxfdW5ibG9ja0ZyYW1lczpmdW5jdGlvbigpe3RoaXMuaWZyYW1lQmxvY2tzJiYodGhpcy5pZnJhbWVCbG9ja3MucmVtb3ZlKCksZGVsZXRlIHRoaXMuaWZyYW1lQmxvY2tzKX0sX2FsbG93SW50ZXJhY3Rpb246ZnVuY3Rpb24odCl7cmV0dXJuIGUodC50YXJnZXQpLmNsb3Nlc3QoIi51aS1kaWFsb2ciKS5sZW5ndGg/ITA6ISFlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktZGF0ZXBpY2tlciIpLmxlbmd0aH0sX2NyZWF0ZU92ZXJsYXk6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMubW9kYWwpe3ZhciB0PSEwO3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dD0hMX0pLHRoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIil8fHRoaXMuX29uKHRoaXMuZG9jdW1lbnQse2ZvY3VzaW46ZnVuY3Rpb24oZSl7dHx8dGhpcy5fYWxsb3dJbnRlcmFjdGlvbihlKXx8KGUucHJldmVudERlZmF1bHQoKSx0aGlzLl90cmFja2luZ0luc3RhbmNlcygpWzBdLl9mb2N1c1RhYmJhYmxlKCkpfX0pLHRoaXMub3ZlcmxheT1lKCI8ZGl2PiIpLmFkZENsYXNzKCJ1aS13aWRnZXQtb3ZlcmxheSB1aS1mcm9udCIpLmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLHRoaXMuX29uKHRoaXMub3ZlcmxheSx7bW91c2Vkb3duOiJfa2VlcEZvY3VzIn0pLHRoaXMuZG9jdW1lbnQuZGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIiwodGhpcy5kb2N1bWVudC5kYXRhKCJ1aS1kaWFsb2ctb3ZlcmxheXMiKXx8MCkrMSl9fSxfZGVzdHJveU92ZXJsYXk6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMubW9kYWwmJnRoaXMub3ZlcmxheSl7dmFyIGU9dGhpcy5kb2N1bWVudC5kYXRhKCJ1aS1kaWFsb2ctb3ZlcmxheXMiKS0xO2U/dGhpcy5kb2N1bWVudC5kYXRhKCJ1aS1kaWFsb2ctb3ZlcmxheXMiLGUpOnRoaXMuZG9jdW1lbnQudW5iaW5kKCJmb2N1c2luIikucmVtb3ZlRGF0YSgidWktZGlhbG9nLW92ZXJsYXlzIiksdGhpcy5vdmVybGF5LnJlbW92ZSgpLHRoaXMub3ZlcmxheT1udWxsfX19KSxlLndpZGdldCgidWkucHJvZ3Jlc3NiYXIiLHt2ZXJzaW9uOiIxLjExLjQiLG9wdGlvbnM6e21heDoxMDAsdmFsdWU6MCxjaGFuZ2U6bnVsbCxjb21wbGV0ZTpudWxsfSxtaW46MCxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5vbGRWYWx1ZT10aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fY29uc3RyYWluZWRWYWx1ZSgpLHRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5hdHRyKHtyb2xlOiJwcm9ncmVzc2JhciIsImFyaWEtdmFsdWVtaW4iOnRoaXMubWlufSksdGhpcy52YWx1ZURpdj1lKCI8ZGl2IGNsYXNzPSd1aS1wcm9ncmVzc2Jhci12YWx1ZSB1aS13aWRnZXQtaGVhZGVyIHVpLWNvcm5lci1sZWZ0Jz48L2Rpdj4iKS5hcHBlbmRUbyh0aGlzLmVsZW1lbnQpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJpYS12YWx1ZW1pbiIpLnJlbW92ZUF0dHIoImFyaWEtdmFsdWVtYXgiKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy52YWx1ZURpdi5yZW1vdmUoKX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy5vcHRpb25zLnZhbHVlOih0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fY29uc3RyYWluZWRWYWx1ZShlKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx2b2lkIDApfSxfY29uc3RyYWluZWRWYWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dGhpcy5vcHRpb25zLnZhbHVlKSx0aGlzLmluZGV0ZXJtaW5hdGU9ZT09PSExLCJudW1iZXIiIT10eXBlb2YgZSYmKGU9MCksdGhpcy5pbmRldGVybWluYXRlPyExOk1hdGgubWluKHRoaXMub3B0aW9ucy5tYXgsTWF0aC5tYXgodGhpcy5taW4sZSkpfSxfc2V0T3B0aW9uczpmdW5jdGlvbihlKXt2YXIgdD1lLnZhbHVlO2RlbGV0ZSBlLnZhbHVlLHRoaXMuX3N1cGVyKGUpLHRoaXMub3B0aW9ucy52YWx1ZT10aGlzLl9jb25zdHJhaW5lZFZhbHVlKHQpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7Im1heCI9PT1lJiYodD1NYXRoLm1heCh0aGlzLm1pbix0KSksImRpc2FibGVkIj09PWUmJnRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLCEhdCkuYXR0cigiYXJpYS1kaXNhYmxlZCIsdCksdGhpcy5fc3VwZXIoZSx0KX0sX3BlcmNlbnRhZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbmRldGVybWluYXRlPzEwMDoxMDAqKHRoaXMub3B0aW9ucy52YWx1ZS10aGlzLm1pbikvKHRoaXMub3B0aW9ucy5tYXgtdGhpcy5taW4pfSxfcmVmcmVzaFZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnZhbHVlLGk9dGhpcy5fcGVyY2VudGFnZSgpO3RoaXMudmFsdWVEaXYudG9nZ2xlKHRoaXMuaW5kZXRlcm1pbmF0ZXx8dD50aGlzLm1pbikudG9nZ2xlQ2xhc3MoInVpLWNvcm5lci1yaWdodCIsdD09PXRoaXMub3B0aW9ucy5tYXgpLndpZHRoKGkudG9GaXhlZCgwKSsiJSIpLHRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktcHJvZ3Jlc3NiYXItaW5kZXRlcm1pbmF0ZSIsdGhpcy5pbmRldGVybWluYXRlKSx0aGlzLmluZGV0ZXJtaW5hdGU/KHRoaXMuZWxlbWVudC5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy5vdmVybGF5RGl2fHwodGhpcy5vdmVybGF5RGl2PWUoIjxkaXYgY2xhc3M9J3VpLXByb2dyZXNzYmFyLW92ZXJsYXknPjwvZGl2PiIpLmFwcGVuZFRvKHRoaXMudmFsdWVEaXYpKSk6KHRoaXMuZWxlbWVudC5hdHRyKHsiYXJpYS12YWx1ZW1heCI6dGhpcy5vcHRpb25zLm1heCwiYXJpYS12YWx1ZW5vdyI6dH0pLHRoaXMub3ZlcmxheURpdiYmKHRoaXMub3ZlcmxheURpdi5yZW1vdmUoKSx0aGlzLm92ZXJsYXlEaXY9bnVsbCkpLHRoaXMub2xkVmFsdWUhPT10JiYodGhpcy5vbGRWYWx1ZT10LHRoaXMuX3RyaWdnZXIoImNoYW5nZSIpKSx0PT09dGhpcy5vcHRpb25zLm1heCYmdGhpcy5fdHJpZ2dlcigiY29tcGxldGUiKX19KSxlLndpZGdldCgidWkuc2VsZWN0bWVudSIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6IjxzZWxlY3Q+IixvcHRpb25zOnthcHBlbmRUbzpudWxsLGRpc2FibGVkOm51bGwsaWNvbnM6e2J1dHRvbjoidWktaWNvbi10cmlhbmdsZS0xLXMifSxwb3NpdGlvbjp7bXk6ImxlZnQgdG9wIixhdDoibGVmdCBib3R0b20iLGNvbGxpc2lvbjoibm9uZSJ9LHdpZHRoOm51bGwsY2hhbmdlOm51bGwsY2xvc2U6bnVsbCxmb2N1czpudWxsLG9wZW46bnVsbCxzZWxlY3Q6bnVsbH0sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZWxlbWVudC51bmlxdWVJZCgpLmF0dHIoImlkIik7dGhpcy5pZHM9e2VsZW1lbnQ6ZSxidXR0b246ZSsiLWJ1dHRvbiIsbWVudTplKyItbWVudSJ9LHRoaXMuX2RyYXdCdXR0b24oKSx0aGlzLl9kcmF3TWVudSgpLHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5kaXNhYmxlKCl9LF9kcmF3QnV0dG9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmxhYmVsPWUoImxhYmVsW2Zvcj0nIit0aGlzLmlkcy5lbGVtZW50KyInXSIpLmF0dHIoImZvciIsdGhpcy5pZHMuYnV0dG9uKSx0aGlzLl9vbih0aGlzLmxhYmVsLHtjbGljazpmdW5jdGlvbihlKXt0aGlzLmJ1dHRvbi5mb2N1cygpLGUucHJldmVudERlZmF1bHQoKX19KSx0aGlzLmVsZW1lbnQuaGlkZSgpLHRoaXMuYnV0dG9uPWUoIjxzcGFuPiIseyJjbGFzcyI6InVpLXNlbGVjdG1lbnUtYnV0dG9uIHVpLXdpZGdldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiLHRhYmluZGV4OnRoaXMub3B0aW9ucy5kaXNhYmxlZD8tMTowLGlkOnRoaXMuaWRzLmJ1dHRvbixyb2xlOiJjb21ib2JveCIsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSIsImFyaWEtYXV0b2NvbXBsZXRlIjoibGlzdCIsImFyaWEtb3ducyI6dGhpcy5pZHMubWVudSwiYXJpYS1oYXNwb3B1cCI6InRydWUifSkuaW5zZXJ0QWZ0ZXIodGhpcy5lbGVtZW50KSxlKCI8c3Bhbj4iLHsiY2xhc3MiOiJ1aS1pY29uICIrdGhpcy5vcHRpb25zLmljb25zLmJ1dHRvbn0pLnByZXBlbmRUbyh0aGlzLmJ1dHRvbiksdGhpcy5idXR0b25UZXh0PWUoIjxzcGFuPiIseyJjbGFzcyI6InVpLXNlbGVjdG1lbnUtdGV4dCJ9KS5hcHBlbmRUbyh0aGlzLmJ1dHRvbiksdGhpcy5fc2V0VGV4dCh0aGlzLmJ1dHRvblRleHQsdGhpcy5lbGVtZW50LmZpbmQoIm9wdGlvbjpzZWxlY3RlZCIpLnRleHQoKSksdGhpcy5fcmVzaXplQnV0dG9uKCksdGhpcy5fb24odGhpcy5idXR0b24sdGhpcy5fYnV0dG9uRXZlbnRzKSx0aGlzLmJ1dHRvbi5vbmUoImZvY3VzaW4iLGZ1bmN0aW9uKCl7dC5tZW51SXRlbXN8fHQuX3JlZnJlc2hNZW51KCl9KSx0aGlzLl9ob3ZlcmFibGUodGhpcy5idXR0b24pLHRoaXMuX2ZvY3VzYWJsZSh0aGlzLmJ1dHRvbil9LF9kcmF3TWVudTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5tZW51PWUoIjx1bD4iLHsiYXJpYS1oaWRkZW4iOiJ0cnVlIiwiYXJpYS1sYWJlbGxlZGJ5Ijp0aGlzLmlkcy5idXR0b24saWQ6dGhpcy5pZHMubWVudX0pLHRoaXMubWVudVdyYXA9ZSgiPGRpdj4iLHsiY2xhc3MiOiJ1aS1zZWxlY3RtZW51LW1lbnUgdWktZnJvbnQifSkuYXBwZW5kKHRoaXMubWVudSkuYXBwZW5kVG8odGhpcy5fYXBwZW5kVG8oKSksdGhpcy5tZW51SW5zdGFuY2U9dGhpcy5tZW51Lm1lbnUoe3JvbGU6Imxpc3Rib3giLHNlbGVjdDpmdW5jdGlvbihlLGkpe2UucHJldmVudERlZmF1bHQoKSx0Ll9zZXRTZWxlY3Rpb24oKSx0Ll9zZWxlY3QoaS5pdGVtLmRhdGEoInVpLXNlbGVjdG1lbnUtaXRlbSIpLGUpfSxmb2N1czpmdW5jdGlvbihlLGkpe3ZhciBzPWkuaXRlbS5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iKTtudWxsIT10LmZvY3VzSW5kZXgmJnMuaW5kZXghPT10LmZvY3VzSW5kZXgmJih0Ll90cmlnZ2VyKCJmb2N1cyIsZSx7aXRlbTpzfSksdC5pc09wZW58fHQuX3NlbGVjdChzLGUpKSx0LmZvY3VzSW5kZXg9cy5pbmRleCx0LmJ1dHRvbi5hdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLHQubWVudUl0ZW1zLmVxKHMuaW5kZXgpLmF0dHIoImlkIikpfX0pLm1lbnUoImluc3RhbmNlIiksdGhpcy5tZW51LmFkZENsYXNzKCJ1aS1jb3JuZXItYm90dG9tIikucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci1hbGwiKSx0aGlzLm1lbnVJbnN0YW5jZS5fb2ZmKHRoaXMubWVudSwibW91c2VsZWF2ZSIpLHRoaXMubWVudUluc3RhbmNlLl9jbG9zZU9uRG9jdW1lbnRDbGljaz1mdW5jdGlvbigpe3JldHVybiExfSx0aGlzLm1lbnVJbnN0YW5jZS5faXNEaXZpZGVyPWZ1bmN0aW9uKCl7cmV0dXJuITF9fSxyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5fcmVmcmVzaE1lbnUoKSx0aGlzLl9zZXRUZXh0KHRoaXMuYnV0dG9uVGV4dCx0aGlzLl9nZXRTZWxlY3RlZEl0ZW0oKS50ZXh0KCkpLHRoaXMub3B0aW9ucy53aWR0aHx8dGhpcy5fcmVzaXplQnV0dG9uKCl9LF9yZWZyZXNoTWVudTpmdW5jdGlvbigpe3RoaXMubWVudS5lbXB0eSgpO3ZhciBlLHQ9dGhpcy5lbGVtZW50LmZpbmQoIm9wdGlvbiIpO3QubGVuZ3RoJiYodGhpcy5fcGFyc2VPcHRpb25zKHQpLHRoaXMuX3JlbmRlck1lbnUodGhpcy5tZW51LHRoaXMuaXRlbXMpLHRoaXMubWVudUluc3RhbmNlLnJlZnJlc2goKSx0aGlzLm1lbnVJdGVtcz10aGlzLm1lbnUuZmluZCgibGkiKS5ub3QoIi51aS1zZWxlY3RtZW51LW9wdGdyb3VwIiksZT10aGlzLl9nZXRTZWxlY3RlZEl0ZW0oKSx0aGlzLm1lbnVJbnN0YW5jZS5mb2N1cyhudWxsLGUpLHRoaXMuX3NldEFyaWEoZS5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iKSksdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIikpKX0sb3BlbjpmdW5jdGlvbihlKXt0aGlzLm9wdGlvbnMuZGlzYWJsZWR8fCh0aGlzLm1lbnVJdGVtcz8odGhpcy5tZW51LmZpbmQoIi51aS1zdGF0ZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpLHRoaXMubWVudUluc3RhbmNlLmZvY3VzKG51bGwsdGhpcy5fZ2V0U2VsZWN0ZWRJdGVtKCkpKTp0aGlzLl9yZWZyZXNoTWVudSgpLHRoaXMuaXNPcGVuPSEwLHRoaXMuX3RvZ2dsZUF0dHIoKSx0aGlzLl9yZXNpemVNZW51KCksdGhpcy5fcG9zaXRpb24oKSx0aGlzLl9vbih0aGlzLmRvY3VtZW50LHRoaXMuX2RvY3VtZW50Q2xpY2spLHRoaXMuX3RyaWdnZXIoIm9wZW4iLGUpKX0sX3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dGhpcy5tZW51V3JhcC5wb3NpdGlvbihlLmV4dGVuZCh7b2Y6dGhpcy5idXR0b259LHRoaXMub3B0aW9ucy5wb3NpdGlvbikpfSxjbG9zZTpmdW5jdGlvbihlKXt0aGlzLmlzT3BlbiYmKHRoaXMuaXNPcGVuPSExLHRoaXMuX3RvZ2dsZUF0dHIoKSx0aGlzLnJhbmdlPW51bGwsdGhpcy5fb2ZmKHRoaXMuZG9jdW1lbnQpLHRoaXMuX3RyaWdnZXIoImNsb3NlIixlKSl9LHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJ1dHRvbn0sbWVudVdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbnV9LF9yZW5kZXJNZW51OmZ1bmN0aW9uKHQsaSl7dmFyIHM9dGhpcyxuPSIiO2UuZWFjaChpLGZ1bmN0aW9uKGksYSl7YS5vcHRncm91cCE9PW4mJihlKCI8bGk+Iix7ImNsYXNzIjoidWktc2VsZWN0bWVudS1vcHRncm91cCB1aS1tZW51LWRpdmlkZXIiKyhhLmVsZW1lbnQucGFyZW50KCJvcHRncm91cCIpLnByb3AoImRpc2FibGVkIik/IiB1aS1zdGF0ZS1kaXNhYmxlZCI6IiIpLHRleHQ6YS5vcHRncm91cH0pLmFwcGVuZFRvKHQpLG49YS5vcHRncm91cCkscy5fcmVuZGVySXRlbURhdGEodCxhKX0pfSxfcmVuZGVySXRlbURhdGE6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fcmVuZGVySXRlbShlLHQpLmRhdGEoInVpLXNlbGVjdG1lbnUtaXRlbSIsdCl9LF9yZW5kZXJJdGVtOmZ1bmN0aW9uKHQsaSl7dmFyIHM9ZSgiPGxpPiIpO3JldHVybiBpLmRpc2FibGVkJiZzLmFkZENsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHRoaXMuX3NldFRleHQocyxpLmxhYmVsKSxzLmFwcGVuZFRvKHQpfSxfc2V0VGV4dDpmdW5jdGlvbihlLHQpe3Q/ZS50ZXh0KHQpOmUuaHRtbCgiJiMxNjA7Iil9LF9tb3ZlOmZ1bmN0aW9uKGUsdCl7dmFyIGkscyxuPSIudWktbWVudS1pdGVtIjt0aGlzLmlzT3Blbj9pPXRoaXMubWVudUl0ZW1zLmVxKHRoaXMuZm9jdXNJbmRleCk6KGk9dGhpcy5tZW51SXRlbXMuZXEodGhpcy5lbGVtZW50WzBdLnNlbGVjdGVkSW5kZXgpLG4rPSI6bm90KC51aS1zdGF0ZS1kaXNhYmxlZCkiKSxzPSJmaXJzdCI9PT1lfHwibGFzdCI9PT1lP2lbImZpcnN0Ij09PWU/InByZXZBbGwiOiJuZXh0QWxsIl0obikuZXEoLTEpOmlbZSsiQWxsIl0obikuZXEoMCkscy5sZW5ndGgmJnRoaXMubWVudUluc3RhbmNlLmZvY3VzKHQscyl9LF9nZXRTZWxlY3RlZEl0ZW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW51SXRlbXMuZXEodGhpcy5lbGVtZW50WzBdLnNlbGVjdGVkSW5kZXgpfSxfdG9nZ2xlOmZ1bmN0aW9uKGUpe3RoaXNbdGhpcy5pc09wZW4/ImNsb3NlIjoib3BlbiJdKGUpfSxfc2V0U2VsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIGU7dGhpcy5yYW5nZSYmKHdpbmRvdy5nZXRTZWxlY3Rpb24/KGU9d2luZG93LmdldFNlbGVjdGlvbigpLGUucmVtb3ZlQWxsUmFuZ2VzKCksZS5hZGRSYW5nZSh0aGlzLnJhbmdlKSk6dGhpcy5yYW5nZS5zZWxlY3QoKSx0aGlzLmJ1dHRvbi5mb2N1cygpKX0sX2RvY3VtZW50Q2xpY2s6e21vdXNlZG93bjpmdW5jdGlvbih0KXt0aGlzLmlzT3BlbiYmKGUodC50YXJnZXQpLmNsb3Nlc3QoIi51aS1zZWxlY3RtZW51LW1lbnUsICMiK3RoaXMuaWRzLmJ1dHRvbikubGVuZ3RofHx0aGlzLmNsb3NlKHQpKX19LF9idXR0b25FdmVudHM6e21vdXNlZG93bjpmdW5jdGlvbigpe3ZhciBlO3dpbmRvdy5nZXRTZWxlY3Rpb24/KGU9d2luZG93LmdldFNlbGVjdGlvbigpLGUucmFuZ2VDb3VudCYmKHRoaXMucmFuZ2U9ZS5nZXRSYW5nZUF0KDApKSk6dGhpcy5yYW5nZT1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKX0sY2xpY2s6ZnVuY3Rpb24oZSl7dGhpcy5fc2V0U2VsZWN0aW9uKCksdGhpcy5fdG9nZ2xlKGUpfSxrZXlkb3duOmZ1bmN0aW9uKHQpe3ZhciBpPSEwO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgZS51aS5rZXlDb2RlLlRBQjpjYXNlIGUudWkua2V5Q29kZS5FU0NBUEU6dGhpcy5jbG9zZSh0KSxpPSExO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkVOVEVSOnRoaXMuaXNPcGVuJiZ0aGlzLl9zZWxlY3RGb2N1c2VkSXRlbSh0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5VUDp0LmFsdEtleT90aGlzLl90b2dnbGUodCk6dGhpcy5fbW92ZSgicHJldiIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRE9XTjp0LmFsdEtleT90aGlzLl90b2dnbGUodCk6dGhpcy5fbW92ZSgibmV4dCIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuU1BBQ0U6dGhpcy5pc09wZW4/dGhpcy5fc2VsZWN0Rm9jdXNlZEl0ZW0odCk6dGhpcy5fdG9nZ2xlKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkxFRlQ6dGhpcy5fbW92ZSgicHJldiIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuUklHSFQ6dGhpcy5fbW92ZSgibmV4dCIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuSE9NRTpjYXNlIGUudWkua2V5Q29kZS5QQUdFX1VQOnRoaXMuX21vdmUoImZpcnN0Iix0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5FTkQ6Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9ET1dOOnRoaXMuX21vdmUoImxhc3QiLHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5tZW51LnRyaWdnZXIodCksaT0hMX1pJiZ0LnByZXZlbnREZWZhdWx0KCl9fSxfc2VsZWN0Rm9jdXNlZEl0ZW06ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5tZW51SXRlbXMuZXEodGhpcy5mb2N1c0luZGV4KTt0Lmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpfHx0aGlzLl9zZWxlY3QodC5kYXRhKCJ1aS1zZWxlY3RtZW51LWl0ZW0iKSxlKX0sX3NlbGVjdDpmdW5jdGlvbihlLHQpe3ZhciBpPXRoaXMuZWxlbWVudFswXS5zZWxlY3RlZEluZGV4O3RoaXMuZWxlbWVudFswXS5zZWxlY3RlZEluZGV4PWUuaW5kZXgsdGhpcy5fc2V0VGV4dCh0aGlzLmJ1dHRvblRleHQsZS5sYWJlbCksdGhpcy5fc2V0QXJpYShlKSx0aGlzLl90cmlnZ2VyKCJzZWxlY3QiLHQse2l0ZW06ZX0pLGUuaW5kZXghPT1pJiZ0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLHQse2l0ZW06ZX0pLHRoaXMuY2xvc2UodCl9LF9zZXRBcmlhOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubWVudUl0ZW1zLmVxKGUuaW5kZXgpLmF0dHIoImlkIik7dGhpcy5idXR0b24uYXR0cih7ImFyaWEtbGFiZWxsZWRieSI6dCwiYXJpYS1hY3RpdmVkZXNjZW5kYW50Ijp0fSksdGhpcy5tZW51LmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsdCl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXsiaWNvbnMiPT09ZSYmdGhpcy5idXR0b24uZmluZCgic3Bhbi51aS1pY29uIikucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmljb25zLmJ1dHRvbikuYWRkQ2xhc3ModC5idXR0b24pLHRoaXMuX3N1cGVyKGUsdCksImFwcGVuZFRvIj09PWUmJnRoaXMubWVudVdyYXAuYXBwZW5kVG8odGhpcy5fYXBwZW5kVG8oKSksImRpc2FibGVkIj09PWUmJih0aGlzLm1lbnVJbnN0YW5jZS5vcHRpb24oImRpc2FibGVkIix0KSx0aGlzLmJ1dHRvbi50b2dnbGVDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiLHQpLmF0dHIoImFyaWEtZGlzYWJsZWQiLHQpLHRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsdCksdD8odGhpcy5idXR0b24uYXR0cigidGFiaW5kZXgiLC0xKSx0aGlzLmNsb3NlKCkpOnRoaXMuYnV0dG9uLmF0dHIoInRhYmluZGV4IiwwKSksIndpZHRoIj09PWUmJnRoaXMuX3Jlc2l6ZUJ1dHRvbigpfSxfYXBwZW5kVG86ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuYXBwZW5kVG87cmV0dXJuIHQmJih0PXQuanF1ZXJ5fHx0Lm5vZGVUeXBlP2UodCk6dGhpcy5kb2N1bWVudC5maW5kKHQpLmVxKDApKSx0JiZ0WzBdfHwodD10aGlzLmVsZW1lbnQuY2xvc2VzdCgiLnVpLWZyb250IikpLHQubGVuZ3RofHwodD10aGlzLmRvY3VtZW50WzBdLmJvZHkpLHR9LF90b2dnbGVBdHRyOmZ1bmN0aW9uKCl7dGhpcy5idXR0b24udG9nZ2xlQ2xhc3MoInVpLWNvcm5lci10b3AiLHRoaXMuaXNPcGVuKS50b2dnbGVDbGFzcygidWktY29ybmVyLWFsbCIsIXRoaXMuaXNPcGVuKS5hdHRyKCJhcmlhLWV4cGFuZGVkIix0aGlzLmlzT3BlbiksdGhpcy5tZW51V3JhcC50b2dnbGVDbGFzcygidWktc2VsZWN0bWVudS1vcGVuIix0aGlzLmlzT3BlbiksdGhpcy5tZW51LmF0dHIoImFyaWEtaGlkZGVuIiwhdGhpcy5pc09wZW4pfSxfcmVzaXplQnV0dG9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLndpZHRoO2V8fChlPXRoaXMuZWxlbWVudC5zaG93KCkub3V0ZXJXaWR0aCgpLHRoaXMuZWxlbWVudC5oaWRlKCkpLHRoaXMuYnV0dG9uLm91dGVyV2lkdGgoZSl9LF9yZXNpemVNZW51OmZ1bmN0aW9uKCl7dGhpcy5tZW51Lm91dGVyV2lkdGgoTWF0aC5tYXgodGhpcy5idXR0b24ub3V0ZXJXaWR0aCgpLHRoaXMubWVudS53aWR0aCgiIikub3V0ZXJXaWR0aCgpKzEpKX0sX2dldENyZWF0ZU9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm57ZGlzYWJsZWQ6dGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIil9fSxfcGFyc2VPcHRpb25zOmZ1bmN0aW9uKHQpe3ZhciBpPVtdO3QuZWFjaChmdW5jdGlvbih0LHMpe3ZhciBuPWUocyksYT1uLnBhcmVudCgib3B0Z3JvdXAiKTtpLnB1c2goe2VsZW1lbnQ6bixpbmRleDp0LHZhbHVlOm4udmFsKCksbGFiZWw6bi50ZXh0KCksb3B0Z3JvdXA6YS5hdHRyKCJsYWJlbCIpfHwiIixkaXNhYmxlZDphLnByb3AoImRpc2FibGVkIil8fG4ucHJvcCgiZGlzYWJsZWQiKX0pfSksdGhpcy5pdGVtcz1pfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMubWVudVdyYXAucmVtb3ZlKCksdGhpcy5idXR0b24ucmVtb3ZlKCksdGhpcy5lbGVtZW50LnNob3coKSx0aGlzLmVsZW1lbnQucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLmxhYmVsLmF0dHIoImZvciIsdGhpcy5pZHMuZWxlbWVudCl9fSksZS53aWRnZXQoInVpLnNsaWRlciIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS4xMS40Iix3aWRnZXRFdmVudFByZWZpeDoic2xpZGUiLG9wdGlvbnM6e2FuaW1hdGU6ITEsZGlzdGFuY2U6MCxtYXg6MTAwLG1pbjowLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixyYW5nZTohMSxzdGVwOjEsdmFsdWU6MCx2YWx1ZXM6bnVsbCxjaGFuZ2U6bnVsbCxzbGlkZTpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsfSxudW1QYWdlczo1LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLl9rZXlTbGlkaW5nPSExLHRoaXMuX21vdXNlU2xpZGluZz0hMSx0aGlzLl9hbmltYXRlT2ZmPSEwLHRoaXMuX2hhbmRsZUluZGV4PW51bGwsdGhpcy5fZGV0ZWN0T3JpZW50YXRpb24oKSx0aGlzLl9tb3VzZUluaXQoKSx0aGlzLl9jYWxjdWxhdGVOZXdNYXgoKSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNsaWRlciB1aS1zbGlkZXItIit0aGlzLm9yaWVudGF0aW9uKyIgdWktd2lkZ2V0IisiIHVpLXdpZGdldC1jb250ZW50IisiIHVpLWNvcm5lci1hbGwiKSx0aGlzLl9yZWZyZXNoKCksdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdGhpcy5vcHRpb25zLmRpc2FibGVkKSx0aGlzLl9hbmltYXRlT2ZmPSExfSxfcmVmcmVzaDpmdW5jdGlvbigpe3RoaXMuX2NyZWF0ZVJhbmdlKCksdGhpcy5fY3JlYXRlSGFuZGxlcygpLHRoaXMuX3NldHVwRXZlbnRzKCksdGhpcy5fcmVmcmVzaFZhbHVlKCl9LF9jcmVhdGVIYW5kbGVzOmZ1bmN0aW9uKCl7dmFyIHQsaSxzPXRoaXMub3B0aW9ucyxuPXRoaXMuZWxlbWVudC5maW5kKCIudWktc2xpZGVyLWhhbmRsZSIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwiKSxhPSI8c3BhbiBjbGFzcz0ndWktc2xpZGVyLWhhbmRsZSB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwnIHRhYmluZGV4PScwJz48L3NwYW4+IixvPVtdO2ZvcihpPXMudmFsdWVzJiZzLnZhbHVlcy5sZW5ndGh8fDEsbi5sZW5ndGg+aSYmKG4uc2xpY2UoaSkucmVtb3ZlKCksbj1uLnNsaWNlKDAsaSkpLHQ9bi5sZW5ndGg7aT50O3QrKylvLnB1c2goYSk7dGhpcy5oYW5kbGVzPW4uYWRkKGUoby5qb2luKCIiKSkuYXBwZW5kVG8odGhpcy5lbGVtZW50KSksdGhpcy5oYW5kbGU9dGhpcy5oYW5kbGVzLmVxKDApLHRoaXMuaGFuZGxlcy5lYWNoKGZ1bmN0aW9uKHQpe2UodGhpcykuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIsdCl9KX0sX2NyZWF0ZVJhbmdlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLGk9IiI7dC5yYW5nZT8odC5yYW5nZT09PSEwJiYodC52YWx1ZXM/dC52YWx1ZXMubGVuZ3RoJiYyIT09dC52YWx1ZXMubGVuZ3RoP3QudmFsdWVzPVt0LnZhbHVlc1swXSx0LnZhbHVlc1swXV06ZS5pc0FycmF5KHQudmFsdWVzKSYmKHQudmFsdWVzPXQudmFsdWVzLnNsaWNlKDApKTp0LnZhbHVlcz1bdGhpcy5fdmFsdWVNaW4oKSx0aGlzLl92YWx1ZU1pbigpXSksdGhpcy5yYW5nZSYmdGhpcy5yYW5nZS5sZW5ndGg/dGhpcy5yYW5nZS5yZW1vdmVDbGFzcygidWktc2xpZGVyLXJhbmdlLW1pbiB1aS1zbGlkZXItcmFuZ2UtbWF4IikuY3NzKHtsZWZ0OiIiLGJvdHRvbToiIn0pOih0aGlzLnJhbmdlPWUoIjxkaXY+PC9kaXY+IikuYXBwZW5kVG8odGhpcy5lbGVtZW50KSxpPSJ1aS1zbGlkZXItcmFuZ2UgdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIiksdGhpcy5yYW5nZS5hZGRDbGFzcyhpKygibWluIj09PXQucmFuZ2V8fCJtYXgiPT09dC5yYW5nZT8iIHVpLXNsaWRlci1yYW5nZS0iK3QucmFuZ2U6IiIpKSk6KHRoaXMucmFuZ2UmJnRoaXMucmFuZ2UucmVtb3ZlKCksdGhpcy5yYW5nZT1udWxsKX0sX3NldHVwRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5fb2ZmKHRoaXMuaGFuZGxlcyksdGhpcy5fb24odGhpcy5oYW5kbGVzLHRoaXMuX2hhbmRsZUV2ZW50cyksdGhpcy5faG92ZXJhYmxlKHRoaXMuaGFuZGxlcyksdGhpcy5fZm9jdXNhYmxlKHRoaXMuaGFuZGxlcyl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGVzLnJlbW92ZSgpLHRoaXMucmFuZ2UmJnRoaXMucmFuZ2UucmVtb3ZlKCksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zbGlkZXIgdWktc2xpZGVyLWhvcml6b250YWwgdWktc2xpZGVyLXZlcnRpY2FsIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIiksdGhpcy5fbW91c2VEZXN0cm95KCl9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24odCl7dmFyIGkscyxuLGEsbyxyLGgsbCx1PXRoaXMsZD10aGlzLm9wdGlvbnM7cmV0dXJuIGQuZGlzYWJsZWQ/ITE6KHRoaXMuZWxlbWVudFNpemU9e3dpZHRoOnRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCksaGVpZ2h0OnRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpfSx0aGlzLmVsZW1lbnRPZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpLGk9e3g6dC5wYWdlWCx5OnQucGFnZVl9LHM9dGhpcy5fbm9ybVZhbHVlRnJvbU1vdXNlKGkpLG49dGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKzEsdGhpcy5oYW5kbGVzLmVhY2goZnVuY3Rpb24odCl7dmFyIGk9TWF0aC5hYnMocy11LnZhbHVlcyh0KSk7KG4+aXx8bj09PWkmJih0PT09dS5fbGFzdENoYW5nZWRWYWx1ZXx8dS52YWx1ZXModCk9PT1kLm1pbikpJiYobj1pLGE9ZSh0aGlzKSxvPXQpfSkscj10aGlzLl9zdGFydCh0LG8pLHI9PT0hMT8hMToodGhpcy5fbW91c2VTbGlkaW5nPSEwLHRoaXMuX2hhbmRsZUluZGV4PW8sYS5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIikuZm9jdXMoKSxoPWEub2Zmc2V0KCksbD0hZSh0LnRhcmdldCkucGFyZW50cygpLmFkZEJhY2soKS5pcygiLnVpLXNsaWRlci1oYW5kbGUiKSx0aGlzLl9jbGlja09mZnNldD1sP3tsZWZ0OjAsdG9wOjB9OntsZWZ0OnQucGFnZVgtaC5sZWZ0LWEud2lkdGgoKS8yLHRvcDp0LnBhZ2VZLWgudG9wLWEuaGVpZ2h0KCkvMi0ocGFyc2VJbnQoYS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoYS5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQoYS5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MCl9LHRoaXMuaGFuZGxlcy5oYXNDbGFzcygidWktc3RhdGUtaG92ZXIiKXx8dGhpcy5fc2xpZGUodCxvLHMpLHRoaXMuX2FuaW1hdGVPZmY9ITAsITApKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sX21vdXNlRHJhZzpmdW5jdGlvbihlKXt2YXIgdD17eDplLnBhZ2VYLHk6ZS5wYWdlWX0saT10aGlzLl9ub3JtVmFsdWVGcm9tTW91c2UodCk7cmV0dXJuIHRoaXMuX3NsaWRlKGUsdGhpcy5faGFuZGxlSW5kZXgsaSksITF9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuaGFuZGxlcy5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdGhpcy5fbW91c2VTbGlkaW5nPSExLHRoaXMuX3N0b3AoZSx0aGlzLl9oYW5kbGVJbmRleCksdGhpcy5fY2hhbmdlKGUsdGhpcy5faGFuZGxlSW5kZXgpLHRoaXMuX2hhbmRsZUluZGV4PW51bGwsdGhpcy5fY2xpY2tPZmZzZXQ9bnVsbCx0aGlzLl9hbmltYXRlT2ZmPSExLCExfSxfZGV0ZWN0T3JpZW50YXRpb246ZnVuY3Rpb24oKXt0aGlzLm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCI9PT10aGlzLm9wdGlvbnMub3JpZW50YXRpb24/InZlcnRpY2FsIjoiaG9yaXpvbnRhbCJ9LF9ub3JtVmFsdWVGcm9tTW91c2U6ZnVuY3Rpb24oZSl7dmFyIHQsaSxzLG4sYTtyZXR1cm4iaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uPyh0PXRoaXMuZWxlbWVudFNpemUud2lkdGgsaT1lLngtdGhpcy5lbGVtZW50T2Zmc2V0LmxlZnQtKHRoaXMuX2NsaWNrT2Zmc2V0P3RoaXMuX2NsaWNrT2Zmc2V0LmxlZnQ6MCkpOih0PXRoaXMuZWxlbWVudFNpemUuaGVpZ2h0LGk9ZS55LXRoaXMuZWxlbWVudE9mZnNldC50b3AtKHRoaXMuX2NsaWNrT2Zmc2V0P3RoaXMuX2NsaWNrT2Zmc2V0LnRvcDowKSkscz1pL3Qscz4xJiYocz0xKSwwPnMmJihzPTApLCJ2ZXJ0aWNhbCI9PT10aGlzLm9yaWVudGF0aW9uJiYocz0xLXMpLG49dGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpLGE9dGhpcy5fdmFsdWVNaW4oKStzKm4sdGhpcy5fdHJpbUFsaWduVmFsdWUoYSl9LF9zdGFydDpmdW5jdGlvbihlLHQpe3ZhciBpPXtoYW5kbGU6dGhpcy5oYW5kbGVzW3RdLHZhbHVlOnRoaXMudmFsdWUoKX07cmV0dXJuIHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoJiYoaS52YWx1ZT10aGlzLnZhbHVlcyh0KSxpLnZhbHVlcz10aGlzLnZhbHVlcygpKSx0aGlzLl90cmlnZ2VyKCJzdGFydCIsZSxpKX0sX3NsaWRlOmZ1bmN0aW9uKGUsdCxpKXt2YXIgcyxuLGE7dGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg/KHM9dGhpcy52YWx1ZXModD8wOjEpLDI9PT10aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCYmdGhpcy5vcHRpb25zLnJhbmdlPT09ITAmJigwPT09dCYmaT5zfHwxPT09dCYmcz5pKSYmKGk9cyksaSE9PXRoaXMudmFsdWVzKHQpJiYobj10aGlzLnZhbHVlcygpLG5bdF09aSxhPXRoaXMuX3RyaWdnZXIoInNsaWRlIixlLHtoYW5kbGU6dGhpcy5oYW5kbGVzW3RdLHZhbHVlOmksdmFsdWVzOm59KSxzPXRoaXMudmFsdWVzKHQ/MDoxKSxhIT09ITEmJnRoaXMudmFsdWVzKHQsaSkpKTppIT09dGhpcy52YWx1ZSgpJiYoYT10aGlzLl90cmlnZ2VyKCJzbGlkZSIsZSx7aGFuZGxlOnRoaXMuaGFuZGxlc1t0XSx2YWx1ZTppfSksYSE9PSExJiZ0aGlzLnZhbHVlKGkpKX0sX3N0b3A6ZnVuY3Rpb24oZSx0KXt2YXIgaT17aGFuZGxlOnRoaXMuaGFuZGxlc1t0XSx2YWx1ZTp0aGlzLnZhbHVlKCl9O3RoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoJiYoaS52YWx1ZT10aGlzLnZhbHVlcyh0KSxpLnZhbHVlcz10aGlzLnZhbHVlcygpKSx0aGlzLl90cmlnZ2VyKCJzdG9wIixlLGkpfSxfY2hhbmdlOmZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuX2tleVNsaWRpbmcmJiF0aGlzLl9tb3VzZVNsaWRpbmcpe3ZhciBpPXtoYW5kbGU6dGhpcy5oYW5kbGVzW3RdLHZhbHVlOnRoaXMudmFsdWUoKX07dGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgmJihpLnZhbHVlPXRoaXMudmFsdWVzKHQpLGkudmFsdWVzPXRoaXMudmFsdWVzKCkpLHRoaXMuX2xhc3RDaGFuZ2VkVmFsdWU9dCx0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLGUsaSl9fSx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX3RyaW1BbGlnblZhbHVlKGUpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHRoaXMuX2NoYW5nZShudWxsLDApLHZvaWQgMCk6dGhpcy5fdmFsdWUoKX0sdmFsdWVzOmZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlc1t0XT10aGlzLl90cmltQWxpZ25WYWx1ZShpKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCx0KSx2b2lkIDA7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuX3ZhbHVlcygpO2lmKCFlLmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg/dGhpcy5fdmFsdWVzKHQpOnRoaXMudmFsdWUoKTtmb3Iocz10aGlzLm9wdGlvbnMudmFsdWVzLG49YXJndW1lbnRzWzBdLGE9MDtzLmxlbmd0aD5hO2ErPTEpc1thXT10aGlzLl90cmltQWxpZ25WYWx1ZShuW2FdKSx0aGlzLl9jaGFuZ2UobnVsbCxhKTt0aGlzLl9yZWZyZXNoVmFsdWUoKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGkpe3ZhciBzLG49MDtzd2l0Y2goInJhbmdlIj09PXQmJnRoaXMub3B0aW9ucy5yYW5nZT09PSEwJiYoIm1pbiI9PT1pPyh0aGlzLm9wdGlvbnMudmFsdWU9dGhpcy5fdmFsdWVzKDApLHRoaXMub3B0aW9ucy52YWx1ZXM9bnVsbCk6Im1heCI9PT1pJiYodGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX3ZhbHVlcyh0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aC0xKSx0aGlzLm9wdGlvbnMudmFsdWVzPW51bGwpKSxlLmlzQXJyYXkodGhpcy5vcHRpb25zLnZhbHVlcykmJihuPXRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKSwiZGlzYWJsZWQiPT09dCYmdGhpcy5lbGVtZW50LnRvZ2dsZUNsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIsISFpKSx0aGlzLl9zdXBlcih0LGkpLHQpe2Nhc2Uib3JpZW50YXRpb24iOnRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zbGlkZXItaG9yaXpvbnRhbCB1aS1zbGlkZXItdmVydGljYWwiKS5hZGRDbGFzcygidWktc2xpZGVyLSIrdGhpcy5vcmllbnRhdGlvbiksdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5oYW5kbGVzLmNzcygiaG9yaXpvbnRhbCI9PT1pPyJib3R0b20iOiJsZWZ0IiwiIik7YnJlYWs7Y2FzZSJ2YWx1ZSI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCwwKSx0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2UidmFsdWVzIjpmb3IodGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKSxzPTA7bj5zO3MrPTEpdGhpcy5fY2hhbmdlKG51bGwscyk7dGhpcy5fYW5pbWF0ZU9mZj0hMTticmVhaztjYXNlInN0ZXAiOmNhc2UibWluIjpjYXNlIm1heCI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9jYWxjdWxhdGVOZXdNYXgoKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9hbmltYXRlT2ZmPSExO2JyZWFrO2Nhc2UicmFuZ2UiOnRoaXMuX2FuaW1hdGVPZmY9ITAsdGhpcy5fcmVmcmVzaCgpLHRoaXMuX2FuaW1hdGVPZmY9ITF9fSxfdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMudmFsdWU7cmV0dXJuIGU9dGhpcy5fdHJpbUFsaWduVmFsdWUoZSl9LF92YWx1ZXM6ZnVuY3Rpb24oZSl7dmFyIHQsaSxzO2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHQ9dGhpcy5vcHRpb25zLnZhbHVlc1tlXSx0PXRoaXMuX3RyaW1BbGlnblZhbHVlKHQpO2lmKHRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKXtmb3IoaT10aGlzLm9wdGlvbnMudmFsdWVzLnNsaWNlKCkscz0wO2kubGVuZ3RoPnM7cys9MSlpW3NdPXRoaXMuX3RyaW1BbGlnblZhbHVlKGlbc10pO3JldHVybiBpfXJldHVybltdfSxfdHJpbUFsaWduVmFsdWU6ZnVuY3Rpb24oZSl7aWYodGhpcy5fdmFsdWVNaW4oKT49ZSlyZXR1cm4gdGhpcy5fdmFsdWVNaW4oKTtpZihlPj10aGlzLl92YWx1ZU1heCgpKXJldHVybiB0aGlzLl92YWx1ZU1heCgpO3ZhciB0PXRoaXMub3B0aW9ucy5zdGVwPjA/dGhpcy5vcHRpb25zLnN0ZXA6MSxpPShlLXRoaXMuX3ZhbHVlTWluKCkpJXQscz1lLWk7cmV0dXJuIDIqTWF0aC5hYnMoaSk+PXQmJihzKz1pPjA/dDotdCkscGFyc2VGbG9hdChzLnRvRml4ZWQoNSkpfSxfY2FsY3VsYXRlTmV3TWF4OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLm1heCx0PXRoaXMuX3ZhbHVlTWluKCksaT10aGlzLm9wdGlvbnMuc3RlcCxzPU1hdGguZmxvb3IoKyhlLXQpLnRvRml4ZWQodGhpcy5fcHJlY2lzaW9uKCkpL2kpKmk7ZT1zK3QsdGhpcy5tYXg9cGFyc2VGbG9hdChlLnRvRml4ZWQodGhpcy5fcHJlY2lzaW9uKCkpKX0sX3ByZWNpc2lvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3ByZWNpc2lvbk9mKHRoaXMub3B0aW9ucy5zdGVwKTtyZXR1cm4gbnVsbCE9PXRoaXMub3B0aW9ucy5taW4mJihlPU1hdGgubWF4KGUsdGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLm1pbikpKSxlfSxfcHJlY2lzaW9uT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9IiIrZSxpPXQuaW5kZXhPZigiLiIpO3JldHVybi0xPT09aT8wOnQubGVuZ3RoLWktMX0sX3ZhbHVlTWluOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5taW59LF92YWx1ZU1heDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1heH0sX3JlZnJlc2hWYWx1ZTpmdW5jdGlvbigpe3ZhciB0LGkscyxuLGEsbz10aGlzLm9wdGlvbnMucmFuZ2Uscj10aGlzLm9wdGlvbnMsaD10aGlzLGw9dGhpcy5fYW5pbWF0ZU9mZj8hMTpyLmFuaW1hdGUsdT17fTt0aGlzLm9wdGlvbnMudmFsdWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aD90aGlzLmhhbmRsZXMuZWFjaChmdW5jdGlvbihzKXtpPTEwMCooKGgudmFsdWVzKHMpLWguX3ZhbHVlTWluKCkpLyhoLl92YWx1ZU1heCgpLWguX3ZhbHVlTWluKCkpKSx1WyJob3Jpem9udGFsIj09PWgub3JpZW50YXRpb24/ImxlZnQiOiJib3R0b20iXT1pKyIlIixlKHRoaXMpLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0odSxyLmFuaW1hdGUpLGgub3B0aW9ucy5yYW5nZT09PSEwJiYoImhvcml6b250YWwiPT09aC5vcmllbnRhdGlvbj8oMD09PXMmJmgucmFuZ2Uuc3RvcCgxLDEpW2w/ImFuaW1hdGUiOiJjc3MiXSh7bGVmdDppKyIlIn0sci5hbmltYXRlKSwxPT09cyYmaC5yYW5nZVtsPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmktdCsiJSJ9LHtxdWV1ZTohMSxkdXJhdGlvbjpyLmFuaW1hdGV9KSk6KDA9PT1zJiZoLnJhbmdlLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0oe2JvdHRvbTppKyIlIn0sci5hbmltYXRlKSwxPT09cyYmaC5yYW5nZVtsPyJhbmltYXRlIjoiY3NzIl0oe2hlaWdodDppLXQrIiUifSx7cXVldWU6ITEsZHVyYXRpb246ci5hbmltYXRlfSkpKSx0PWl9KToocz10aGlzLnZhbHVlKCksbj10aGlzLl92YWx1ZU1pbigpLGE9dGhpcy5fdmFsdWVNYXgoKSxpPWEhPT1uPzEwMCooKHMtbikvKGEtbikpOjAsdVsiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uPyJsZWZ0IjoiYm90dG9tIl09aSsiJSIsdGhpcy5oYW5kbGUuc3RvcCgxLDEpW2w/ImFuaW1hdGUiOiJjc3MiXSh1LHIuYW5pbWF0ZSksIm1pbiI9PT1vJiYiaG9yaXpvbnRhbCI9PT10aGlzLm9yaWVudGF0aW9uJiZ0aGlzLnJhbmdlLnN0b3AoMSwxKVtsPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOmkrIiUifSxyLmFuaW1hdGUpLCJtYXgiPT09byYmImhvcml6b250YWwiPT09dGhpcy5vcmllbnRhdGlvbiYmdGhpcy5yYW5nZVtsPyJhbmltYXRlIjoiY3NzIl0oe3dpZHRoOjEwMC1pKyIlIn0se3F1ZXVlOiExLGR1cmF0aW9uOnIuYW5pbWF0ZX0pLCJtaW4iPT09byYmInZlcnRpY2FsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2Uuc3RvcCgxLDEpW2w/ImFuaW1hdGUiOiJjc3MiXSh7aGVpZ2h0OmkrIiUifSxyLmFuaW1hdGUpLCJtYXgiPT09byYmInZlcnRpY2FsIj09PXRoaXMub3JpZW50YXRpb24mJnRoaXMucmFuZ2VbbD8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6MTAwLWkrIiUifSx7cXVldWU6ITEsZHVyYXRpb246ci5hbmltYXRlfSkpfSxfaGFuZGxlRXZlbnRzOntrZXlkb3duOmZ1bmN0aW9uKHQpe3ZhciBpLHMsbixhLG89ZSh0LnRhcmdldCkuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIpO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6Y2FzZSBlLnVpLmtleUNvZGUuRU5EOmNhc2UgZS51aS5rZXlDb2RlLlBBR0VfVVA6Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9ET1dOOmNhc2UgZS51aS5rZXlDb2RlLlVQOmNhc2UgZS51aS5rZXlDb2RlLlJJR0hUOmNhc2UgZS51aS5rZXlDb2RlLkRPV046Y2FzZSBlLnVpLmtleUNvZGUuTEVGVDppZih0LnByZXZlbnREZWZhdWx0KCksIXRoaXMuX2tleVNsaWRpbmcmJih0aGlzLl9rZXlTbGlkaW5nPSEwLGUodC50YXJnZXQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSxpPXRoaXMuX3N0YXJ0KHQsbyksaT09PSExKSlyZXR1cm59c3dpdGNoKGE9dGhpcy5vcHRpb25zLnN0ZXAscz1uPXRoaXMub3B0aW9ucy52YWx1ZXMmJnRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoP3RoaXMudmFsdWVzKG8pOnRoaXMudmFsdWUoKSx0LmtleUNvZGUpe2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6bj10aGlzLl92YWx1ZU1pbigpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkVORDpuPXRoaXMuX3ZhbHVlTWF4KCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9VUDpuPXRoaXMuX3RyaW1BbGlnblZhbHVlKHMrKHRoaXMuX3ZhbHVlTWF4KCktdGhpcy5fdmFsdWVNaW4oKSkvdGhpcy5udW1QYWdlcyk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9ET1dOOm49dGhpcy5fdHJpbUFsaWduVmFsdWUocy0odGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKS90aGlzLm51bVBhZ2VzKTticmVhaztjYXNlIGUudWkua2V5Q29kZS5VUDpjYXNlIGUudWkua2V5Q29kZS5SSUdIVDppZihzPT09dGhpcy5fdmFsdWVNYXgoKSlyZXR1cm47bj10aGlzLl90cmltQWxpZ25WYWx1ZShzK2EpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkRPV046Y2FzZSBlLnVpLmtleUNvZGUuTEVGVDppZihzPT09dGhpcy5fdmFsdWVNaW4oKSlyZXR1cm47bj10aGlzLl90cmltQWxpZ25WYWx1ZShzLWEpfXRoaXMuX3NsaWRlKHQsbyxuKX0sa2V5dXA6ZnVuY3Rpb24odCl7dmFyIGk9ZSh0LnRhcmdldCkuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIpO3RoaXMuX2tleVNsaWRpbmcmJih0aGlzLl9rZXlTbGlkaW5nPSExLHRoaXMuX3N0b3AodCxpKSx0aGlzLl9jaGFuZ2UodCxpKSxlKHQudGFyZ2V0KS5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIikpfX19KSxlLndpZGdldCgidWkuc3Bpbm5lciIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6IjxpbnB1dD4iLHdpZGdldEV2ZW50UHJlZml4OiJzcGluIixvcHRpb25zOntjdWx0dXJlOm51bGwsaWNvbnM6e2Rvd246InVpLWljb24tdHJpYW5nbGUtMS1zIix1cDoidWktaWNvbi10cmlhbmdsZS0xLW4ifSxpbmNyZW1lbnRhbDohMCxtYXg6bnVsbCxtaW46bnVsbCxudW1iZXJGb3JtYXQ6bnVsbCxwYWdlOjEwLHN0ZXA6MSxjaGFuZ2U6bnVsbCxzcGluOm51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLl9zZXRPcHRpb24oIm1heCIsdGhpcy5vcHRpb25zLm1heCksdGhpcy5fc2V0T3B0aW9uKCJtaW4iLHRoaXMub3B0aW9ucy5taW4pLHRoaXMuX3NldE9wdGlvbigic3RlcCIsdGhpcy5vcHRpb25zLnN0ZXApLCIiIT09dGhpcy52YWx1ZSgpJiZ0aGlzLl92YWx1ZSh0aGlzLmVsZW1lbnQudmFsKCksITApLHRoaXMuX2RyYXcoKSx0aGlzLl9vbih0aGlzLl9ldmVudHMpLHRoaXMuX3JlZnJlc2goKSx0aGlzLl9vbih0aGlzLndpbmRvdyx7YmVmb3JldW5sb2FkOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSIpfX0pfSxfZ2V0Q3JlYXRlT3B0aW9uczpmdW5jdGlvbigpe3ZhciB0PXt9LGk9dGhpcy5lbGVtZW50O3JldHVybiBlLmVhY2goWyJtaW4iLCJtYXgiLCJzdGVwIl0sZnVuY3Rpb24oZSxzKXt2YXIgbj1pLmF0dHIocyk7dm9pZCAwIT09biYmbi5sZW5ndGgmJih0W3NdPW4pfSksdH0sX2V2ZW50czp7a2V5ZG93bjpmdW5jdGlvbihlKXt0aGlzLl9zdGFydChlKSYmdGhpcy5fa2V5ZG93bihlKSYmZS5wcmV2ZW50RGVmYXVsdCgpfSxrZXl1cDoiX3N0b3AiLGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5wcmV2aW91cz10aGlzLmVsZW1lbnQudmFsKCl9LGJsdXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuY2FuY2VsQmx1cj8oZGVsZXRlIHRoaXMuY2FuY2VsQmx1cix2b2lkIDApOih0aGlzLl9zdG9wKCksdGhpcy5fcmVmcmVzaCgpLHRoaXMucHJldmlvdXMhPT10aGlzLmVsZW1lbnQudmFsKCkmJnRoaXMuX3RyaWdnZXIoImNoYW5nZSIsZSksdm9pZCAwKX0sbW91c2V3aGVlbDpmdW5jdGlvbihlLHQpe2lmKHQpe2lmKCF0aGlzLnNwaW5uaW5nJiYhdGhpcy5fc3RhcnQoZSkpcmV0dXJuITE7dGhpcy5fc3BpbigodD4wPzE6LTEpKnRoaXMub3B0aW9ucy5zdGVwLGUpLGNsZWFyVGltZW91dCh0aGlzLm1vdXNld2hlZWxUaW1lciksdGhpcy5tb3VzZXdoZWVsVGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLnNwaW5uaW5nJiZ0aGlzLl9zdG9wKGUpfSwxMDApLGUucHJldmVudERlZmF1bHQoKX19LCJtb3VzZWRvd24gLnVpLXNwaW5uZXItYnV0dG9uIjpmdW5jdGlvbih0KXtmdW5jdGlvbiBpKCl7dmFyIGU9dGhpcy5lbGVtZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50O2V8fCh0aGlzLmVsZW1lbnQuZm9jdXMoKSx0aGlzLnByZXZpb3VzPXMsdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLnByZXZpb3VzPXN9KSl9dmFyIHM7cz10aGlzLmVsZW1lbnRbMF09PT10aGlzLmRvY3VtZW50WzBdLmFjdGl2ZUVsZW1lbnQ/dGhpcy5wcmV2aW91czp0aGlzLmVsZW1lbnQudmFsKCksdC5wcmV2ZW50RGVmYXVsdCgpLGkuY2FsbCh0aGlzKSx0aGlzLmNhbmNlbEJsdXI9ITAsdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5jYW5jZWxCbHVyLGkuY2FsbCh0aGlzKX0pLHRoaXMuX3N0YXJ0KHQpIT09ITEmJnRoaXMuX3JlcGVhdChudWxsLGUodC5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygidWktc3Bpbm5lci11cCIpPzE6LTEsdCl9LCJtb3VzZXVwIC51aS1zcGlubmVyLWJ1dHRvbiI6Il9zdG9wIiwibW91c2VlbnRlciAudWktc3Bpbm5lci1idXR0b24iOmZ1bmN0aW9uKHQpe3JldHVybiBlKHQuY3VycmVudFRhcmdldCkuaGFzQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpP3RoaXMuX3N0YXJ0KHQpPT09ITE/ITE6KHRoaXMuX3JlcGVhdChudWxsLGUodC5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygidWktc3Bpbm5lci11cCIpPzE6LTEsdCksdm9pZCAwKTp2b2lkIDB9LCJtb3VzZWxlYXZlIC51aS1zcGlubmVyLWJ1dHRvbiI6Il9zdG9wIn0sX2RyYXc6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnVpU3Bpbm5lcj10aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNwaW5uZXItaW5wdXQiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJvZmYiKS53cmFwKHRoaXMuX3VpU3Bpbm5lckh0bWwoKSkucGFyZW50KCkuYXBwZW5kKHRoaXMuX2J1dHRvbkh0bWwoKSk7dGhpcy5lbGVtZW50LmF0dHIoInJvbGUiLCJzcGluYnV0dG9uIiksdGhpcy5idXR0b25zPWUuZmluZCgiLnVpLXNwaW5uZXItYnV0dG9uIikuYXR0cigidGFiSW5kZXgiLC0xKS5idXR0b24oKS5yZW1vdmVDbGFzcygidWktY29ybmVyLWFsbCIpLHRoaXMuYnV0dG9ucy5oZWlnaHQoKT5NYXRoLmNlaWwoLjUqZS5oZWlnaHQoKSkmJmUuaGVpZ2h0KCk+MCYmZS5oZWlnaHQoZS5oZWlnaHQoKSksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLmRpc2FibGUoKX0sX2tleWRvd246ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLHM9ZS51aS5rZXlDb2RlO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2Ugcy5VUDpyZXR1cm4gdGhpcy5fcmVwZWF0KG51bGwsMSx0KSwhMDtjYXNlIHMuRE9XTjpyZXR1cm4gdGhpcy5fcmVwZWF0KG51bGwsLTEsdCksITA7Y2FzZSBzLlBBR0VfVVA6cmV0dXJuIHRoaXMuX3JlcGVhdChudWxsLGkucGFnZSx0KSwhMDtjYXNlIHMuUEFHRV9ET1dOOnJldHVybiB0aGlzLl9yZXBlYXQobnVsbCwtaS5wYWdlLHQpLCEwfXJldHVybiExfSxfdWlTcGlubmVySHRtbDpmdW5jdGlvbigpe3JldHVybiI8c3BhbiBjbGFzcz0ndWktc3Bpbm5lciB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCc+PC9zcGFuPiJ9LF9idXR0b25IdG1sOmZ1bmN0aW9uKCl7cmV0dXJuIjxhIGNsYXNzPSd1aS1zcGlubmVyLWJ1dHRvbiB1aS1zcGlubmVyLXVwIHVpLWNvcm5lci10cic+PHNwYW4gY2xhc3M9J3VpLWljb24gIit0aGlzLm9wdGlvbnMuaWNvbnMudXArIic+JiM5NjUwOzwvc3Bhbj4iKyI8L2E+IisiPGEgY2xhc3M9J3VpLXNwaW5uZXItYnV0dG9uIHVpLXNwaW5uZXItZG93biB1aS1jb3JuZXItYnInPiIrIjxzcGFuIGNsYXNzPSd1aS1pY29uICIrdGhpcy5vcHRpb25zLmljb25zLmRvd24rIic+JiM5NjYwOzwvc3Bhbj4iKyI8L2E+In0sX3N0YXJ0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNwaW5uaW5nfHx0aGlzLl90cmlnZ2VyKCJzdGFydCIsZSkhPT0hMT8odGhpcy5jb3VudGVyfHwodGhpcy5jb3VudGVyPTEpLHRoaXMuc3Bpbm5pbmc9ITAsITApOiExfSxfcmVwZWF0OmZ1bmN0aW9uKGUsdCxpKXtlPWV8fDUwMCxjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy50aW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMuX3JlcGVhdCg0MCx0LGkpfSxlKSx0aGlzLl9zcGluKHQqdGhpcy5vcHRpb25zLnN0ZXAsaSl9LF9zcGluOmZ1bmN0aW9uKGUsdCl7dmFyIGk9dGhpcy52YWx1ZSgpfHwwO3RoaXMuY291bnRlcnx8KHRoaXMuY291bnRlcj0xKSxpPXRoaXMuX2FkanVzdFZhbHVlKGkrZSp0aGlzLl9pbmNyZW1lbnQodGhpcy5jb3VudGVyKSksdGhpcy5zcGlubmluZyYmdGhpcy5fdHJpZ2dlcigic3BpbiIsdCx7dmFsdWU6aX0pPT09ITF8fCh0aGlzLl92YWx1ZShpKSx0aGlzLmNvdW50ZXIrKyl9LF9pbmNyZW1lbnQ6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLmluY3JlbWVudGFsO3JldHVybiBpP2UuaXNGdW5jdGlvbihpKT9pKHQpOk1hdGguZmxvb3IodCp0KnQvNWU0LXQqdC81MDArMTcqdC8yMDArMSk6MX0sX3ByZWNpc2lvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3ByZWNpc2lvbk9mKHRoaXMub3B0aW9ucy5zdGVwKTtyZXR1cm4gbnVsbCE9PXRoaXMub3B0aW9ucy5taW4mJihlPU1hdGgubWF4KGUsdGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLm1pbikpKSxlfSxfcHJlY2lzaW9uT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9IiIrZSxpPXQuaW5kZXhPZigiLiIpO3JldHVybi0xPT09aT8wOnQubGVuZ3RoLWktMX0sX2FkanVzdFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LGkscz10aGlzLm9wdGlvbnM7cmV0dXJuIHQ9bnVsbCE9PXMubWluP3MubWluOjAsaT1lLXQsaT1NYXRoLnJvdW5kKGkvcy5zdGVwKSpzLnN0ZXAsZT10K2ksZT1wYXJzZUZsb2F0KGUudG9GaXhlZCh0aGlzLl9wcmVjaXNpb24oKSkpLG51bGwhPT1zLm1heCYmZT5zLm1heD9zLm1heDpudWxsIT09cy5taW4mJnMubWluPmU/cy5taW46ZX0sX3N0b3A6ZnVuY3Rpb24oZSl7dGhpcy5zcGlubmluZyYmKGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSxjbGVhclRpbWVvdXQodGhpcy5tb3VzZXdoZWVsVGltZXIpLHRoaXMuY291bnRlcj0wLHRoaXMuc3Bpbm5pbmc9ITEsdGhpcy5fdHJpZ2dlcigic3RvcCIsZSkpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7aWYoImN1bHR1cmUiPT09ZXx8Im51bWJlckZvcm1hdCI9PT1lKXt2YXIgaT10aGlzLl9wYXJzZSh0aGlzLmVsZW1lbnQudmFsKCkpO3JldHVybiB0aGlzLm9wdGlvbnNbZV09dCx0aGlzLmVsZW1lbnQudmFsKHRoaXMuX2Zvcm1hdChpKSksdm9pZCAwfSgibWF4Ij09PWV8fCJtaW4iPT09ZXx8InN0ZXAiPT09ZSkmJiJzdHJpbmciPT10eXBlb2YgdCYmKHQ9dGhpcy5fcGFyc2UodCkpLCJpY29ucyI9PT1lJiYodGhpcy5idXR0b25zLmZpcnN0KCkuZmluZCgiLnVpLWljb24iKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaWNvbnMudXApLmFkZENsYXNzKHQudXApLHRoaXMuYnV0dG9ucy5sYXN0KCkuZmluZCgiLnVpLWljb24iKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaWNvbnMuZG93bikuYWRkQ2xhc3ModC5kb3duKSksdGhpcy5fc3VwZXIoZSx0KSwiZGlzYWJsZWQiPT09ZSYmKHRoaXMud2lkZ2V0KCkudG9nZ2xlQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIiwhIXQpLHRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsISF0KSx0aGlzLmJ1dHRvbnMuYnV0dG9uKHQ/ImRpc2FibGUiOiJlbmFibGUiKSl9LF9zZXRPcHRpb25zOnMoZnVuY3Rpb24oZSl7dGhpcy5fc3VwZXIoZSl9KSxfcGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYiIiE9PWUmJihlPXdpbmRvdy5HbG9iYWxpemUmJnRoaXMub3B0aW9ucy5udW1iZXJGb3JtYXQ/R2xvYmFsaXplLnBhcnNlRmxvYXQoZSwxMCx0aGlzLm9wdGlvbnMuY3VsdHVyZSk6K2UpLCIiPT09ZXx8aXNOYU4oZSk/bnVsbDplCn0sX2Zvcm1hdDpmdW5jdGlvbihlKXtyZXR1cm4iIj09PWU/IiI6d2luZG93Lkdsb2JhbGl6ZSYmdGhpcy5vcHRpb25zLm51bWJlckZvcm1hdD9HbG9iYWxpemUuZm9ybWF0KGUsdGhpcy5vcHRpb25zLm51bWJlckZvcm1hdCx0aGlzLm9wdGlvbnMuY3VsdHVyZSk6ZX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuYXR0cih7ImFyaWEtdmFsdWVtaW4iOnRoaXMub3B0aW9ucy5taW4sImFyaWEtdmFsdWVtYXgiOnRoaXMub3B0aW9ucy5tYXgsImFyaWEtdmFsdWVub3ciOnRoaXMuX3BhcnNlKHRoaXMuZWxlbWVudC52YWwoKSl9KX0saXNWYWxpZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMudmFsdWUoKTtyZXR1cm4gbnVsbD09PWU/ITE6ZT09PXRoaXMuX2FkanVzdFZhbHVlKGUpfSxfdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgaTsiIiE9PWUmJihpPXRoaXMuX3BhcnNlKGUpLG51bGwhPT1pJiYodHx8KGk9dGhpcy5fYWRqdXN0VmFsdWUoaSkpLGU9dGhpcy5fZm9ybWF0KGkpKSksdGhpcy5lbGVtZW50LnZhbChlKSx0aGlzLl9yZWZyZXNoKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zcGlubmVyLWlucHV0IikucHJvcCgiZGlzYWJsZWQiLCExKS5yZW1vdmVBdHRyKCJhdXRvY29tcGxldGUiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJpYS12YWx1ZW1pbiIpLnJlbW92ZUF0dHIoImFyaWEtdmFsdWVtYXgiKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy51aVNwaW5uZXIucmVwbGFjZVdpdGgodGhpcy5lbGVtZW50KX0sc3RlcFVwOnMoZnVuY3Rpb24oZSl7dGhpcy5fc3RlcFVwKGUpfSksX3N0ZXBVcDpmdW5jdGlvbihlKXt0aGlzLl9zdGFydCgpJiYodGhpcy5fc3BpbigoZXx8MSkqdGhpcy5vcHRpb25zLnN0ZXApLHRoaXMuX3N0b3AoKSl9LHN0ZXBEb3duOnMoZnVuY3Rpb24oZSl7dGhpcy5fc3RlcERvd24oZSl9KSxfc3RlcERvd246ZnVuY3Rpb24oZSl7dGhpcy5fc3RhcnQoKSYmKHRoaXMuX3NwaW4oKGV8fDEpKi10aGlzLm9wdGlvbnMuc3RlcCksdGhpcy5fc3RvcCgpKX0scGFnZVVwOnMoZnVuY3Rpb24oZSl7dGhpcy5fc3RlcFVwKChlfHwxKSp0aGlzLm9wdGlvbnMucGFnZSl9KSxwYWdlRG93bjpzKGZ1bmN0aW9uKGUpe3RoaXMuX3N0ZXBEb3duKChlfHwxKSp0aGlzLm9wdGlvbnMucGFnZSl9KSx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocyh0aGlzLl92YWx1ZSkuY2FsbCh0aGlzLGUpLHZvaWQgMCk6dGhpcy5fcGFyc2UodGhpcy5lbGVtZW50LnZhbCgpKX0sd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudWlTcGlubmVyfX0pLGUud2lkZ2V0KCJ1aS50YWJzIix7dmVyc2lvbjoiMS4xMS40IixkZWxheTozMDAsb3B0aW9uczp7YWN0aXZlOm51bGwsY29sbGFwc2libGU6ITEsZXZlbnQ6ImNsaWNrIixoZWlnaHRTdHlsZToiY29udGVudCIsaGlkZTpudWxsLHNob3c6bnVsbCxhY3RpdmF0ZTpudWxsLGJlZm9yZUFjdGl2YXRlOm51bGwsYmVmb3JlTG9hZDpudWxsLGxvYWQ6bnVsbH0sX2lzTG9jYWw6ZnVuY3Rpb24oKXt2YXIgZT0vIy4qJC87cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBpLHM7dD10LmNsb25lTm9kZSghMSksaT10LmhyZWYucmVwbGFjZShlLCIiKSxzPWxvY2F0aW9uLmhyZWYucmVwbGFjZShlLCIiKTt0cnl7aT1kZWNvZGVVUklDb21wb25lbnQoaSl9Y2F0Y2gobil7fXRyeXtzPWRlY29kZVVSSUNvbXBvbmVudChzKX1jYXRjaChuKXt9cmV0dXJuIHQuaGFzaC5sZW5ndGg+MSYmaT09PXN9fSgpLF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGk9dGhpcy5vcHRpb25zO3RoaXMucnVubmluZz0hMSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXRhYnMgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS50b2dnbGVDbGFzcygidWktdGFicy1jb2xsYXBzaWJsZSIsaS5jb2xsYXBzaWJsZSksdGhpcy5fcHJvY2Vzc1RhYnMoKSxpLmFjdGl2ZT10aGlzLl9pbml0aWFsQWN0aXZlKCksZS5pc0FycmF5KGkuZGlzYWJsZWQpJiYoaS5kaXNhYmxlZD1lLnVuaXF1ZShpLmRpc2FibGVkLmNvbmNhdChlLm1hcCh0aGlzLnRhYnMuZmlsdGVyKCIudWktc3RhdGUtZGlzYWJsZWQiKSxmdW5jdGlvbihlKXtyZXR1cm4gdC50YWJzLmluZGV4KGUpfSkpKS5zb3J0KCkpLHRoaXMuYWN0aXZlPXRoaXMub3B0aW9ucy5hY3RpdmUhPT0hMSYmdGhpcy5hbmNob3JzLmxlbmd0aD90aGlzLl9maW5kQWN0aXZlKGkuYWN0aXZlKTplKCksdGhpcy5fcmVmcmVzaCgpLHRoaXMuYWN0aXZlLmxlbmd0aCYmdGhpcy5sb2FkKGkuYWN0aXZlKX0sX2luaXRpYWxBY3RpdmU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMuYWN0aXZlLGk9dGhpcy5vcHRpb25zLmNvbGxhcHNpYmxlLHM9bG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSk7cmV0dXJuIG51bGw9PT10JiYocyYmdGhpcy50YWJzLmVhY2goZnVuY3Rpb24oaSxuKXtyZXR1cm4gZShuKS5hdHRyKCJhcmlhLWNvbnRyb2xzIik9PT1zPyh0PWksITEpOnZvaWQgMH0pLG51bGw9PT10JiYodD10aGlzLnRhYnMuaW5kZXgodGhpcy50YWJzLmZpbHRlcigiLnVpLXRhYnMtYWN0aXZlIikpKSwobnVsbD09PXR8fC0xPT09dCkmJih0PXRoaXMudGFicy5sZW5ndGg/MDohMSkpLHQhPT0hMSYmKHQ9dGhpcy50YWJzLmluZGV4KHRoaXMudGFicy5lcSh0KSksLTE9PT10JiYodD1pPyExOjApKSwhaSYmdD09PSExJiZ0aGlzLmFuY2hvcnMubGVuZ3RoJiYodD0wKSx0fSxfZ2V0Q3JlYXRlRXZlbnREYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3RhYjp0aGlzLmFjdGl2ZSxwYW5lbDp0aGlzLmFjdGl2ZS5sZW5ndGg/dGhpcy5fZ2V0UGFuZWxGb3JUYWIodGhpcy5hY3RpdmUpOmUoKX19LF90YWJLZXlkb3duOmZ1bmN0aW9uKHQpe3ZhciBpPWUodGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50KS5jbG9zZXN0KCJsaSIpLHM9dGhpcy50YWJzLmluZGV4KGkpLG49ITA7aWYoIXRoaXMuX2hhbmRsZVBhZ2VOYXYodCkpe3N3aXRjaCh0LmtleUNvZGUpe2Nhc2UgZS51aS5rZXlDb2RlLlJJR0hUOmNhc2UgZS51aS5rZXlDb2RlLkRPV046cysrO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLlVQOmNhc2UgZS51aS5rZXlDb2RlLkxFRlQ6bj0hMSxzLS07YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRU5EOnM9dGhpcy5hbmNob3JzLmxlbmd0aC0xO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6cz0wO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLlNQQUNFOnJldHVybiB0LnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuYWN0aXZhdGluZyksdGhpcy5fYWN0aXZhdGUocyksdm9pZCAwO2Nhc2UgZS51aS5rZXlDb2RlLkVOVEVSOnJldHVybiB0LnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuYWN0aXZhdGluZyksdGhpcy5fYWN0aXZhdGUocz09PXRoaXMub3B0aW9ucy5hY3RpdmU/ITE6cyksdm9pZCAwO2RlZmF1bHQ6cmV0dXJufXQucHJldmVudERlZmF1bHQoKSxjbGVhclRpbWVvdXQodGhpcy5hY3RpdmF0aW5nKSxzPXRoaXMuX2ZvY3VzTmV4dFRhYihzLG4pLHQuY3RybEtleXx8dC5tZXRhS2V5fHwoaS5hdHRyKCJhcmlhLXNlbGVjdGVkIiwiZmFsc2UiKSx0aGlzLnRhYnMuZXEocykuYXR0cigiYXJpYS1zZWxlY3RlZCIsInRydWUiKSx0aGlzLmFjdGl2YXRpbmc9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLm9wdGlvbigiYWN0aXZlIixzKX0sdGhpcy5kZWxheSkpfX0sX3BhbmVsS2V5ZG93bjpmdW5jdGlvbih0KXt0aGlzLl9oYW5kbGVQYWdlTmF2KHQpfHx0LmN0cmxLZXkmJnQua2V5Q29kZT09PWUudWkua2V5Q29kZS5VUCYmKHQucHJldmVudERlZmF1bHQoKSx0aGlzLmFjdGl2ZS5mb2N1cygpKX0sX2hhbmRsZVBhZ2VOYXY6ZnVuY3Rpb24odCl7cmV0dXJuIHQuYWx0S2V5JiZ0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuUEFHRV9VUD8odGhpcy5fYWN0aXZhdGUodGhpcy5fZm9jdXNOZXh0VGFiKHRoaXMub3B0aW9ucy5hY3RpdmUtMSwhMSkpLCEwKTp0LmFsdEtleSYmdC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLlBBR0VfRE9XTj8odGhpcy5fYWN0aXZhdGUodGhpcy5fZm9jdXNOZXh0VGFiKHRoaXMub3B0aW9ucy5hY3RpdmUrMSwhMCkpLCEwKTp2b2lkIDB9LF9maW5kTmV4dFRhYjpmdW5jdGlvbih0LGkpe2Z1bmN0aW9uIHMoKXtyZXR1cm4gdD5uJiYodD0wKSwwPnQmJih0PW4pLHR9Zm9yKHZhciBuPXRoaXMudGFicy5sZW5ndGgtMTstMSE9PWUuaW5BcnJheShzKCksdGhpcy5vcHRpb25zLmRpc2FibGVkKTspdD1pP3QrMTp0LTE7cmV0dXJuIHR9LF9mb2N1c05leHRUYWI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT10aGlzLl9maW5kTmV4dFRhYihlLHQpLHRoaXMudGFicy5lcShlKS5mb2N1cygpLGV9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtyZXR1cm4iYWN0aXZlIj09PWU/KHRoaXMuX2FjdGl2YXRlKHQpLHZvaWQgMCk6ImRpc2FibGVkIj09PWU/KHRoaXMuX3NldHVwRGlzYWJsZWQodCksdm9pZCAwKToodGhpcy5fc3VwZXIoZSx0KSwiY29sbGFwc2libGUiPT09ZSYmKHRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktdGFicy1jb2xsYXBzaWJsZSIsdCksdHx8dGhpcy5vcHRpb25zLmFjdGl2ZSE9PSExfHx0aGlzLl9hY3RpdmF0ZSgwKSksImV2ZW50Ij09PWUmJnRoaXMuX3NldHVwRXZlbnRzKHQpLCJoZWlnaHRTdHlsZSI9PT1lJiZ0aGlzLl9zZXR1cEhlaWdodFN0eWxlKHQpLHZvaWQgMCl9LF9zYW5pdGl6ZVNlbGVjdG9yOmZ1bmN0aW9uKGUpe3JldHVybiBlP2UucmVwbGFjZSgvWyEiJCUmJygpKissLlwvOjs8PT4/QFxbXF1cXmB7fH1+XS9nLCJcXCQmIik6IiJ9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMsaT10aGlzLnRhYmxpc3QuY2hpbGRyZW4oIjpoYXMoYVtocmVmXSkiKTt0LmRpc2FibGVkPWUubWFwKGkuZmlsdGVyKCIudWktc3RhdGUtZGlzYWJsZWQiKSxmdW5jdGlvbihlKXtyZXR1cm4gaS5pbmRleChlKX0pLHRoaXMuX3Byb2Nlc3NUYWJzKCksdC5hY3RpdmUhPT0hMSYmdGhpcy5hbmNob3JzLmxlbmd0aD90aGlzLmFjdGl2ZS5sZW5ndGgmJiFlLmNvbnRhaW5zKHRoaXMudGFibGlzdFswXSx0aGlzLmFjdGl2ZVswXSk/dGhpcy50YWJzLmxlbmd0aD09PXQuZGlzYWJsZWQubGVuZ3RoPyh0LmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpOnRoaXMuX2FjdGl2YXRlKHRoaXMuX2ZpbmROZXh0VGFiKE1hdGgubWF4KDAsdC5hY3RpdmUtMSksITEpKTp0LmFjdGl2ZT10aGlzLnRhYnMuaW5kZXgodGhpcy5hY3RpdmUpOih0LmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpLHRoaXMuX3JlZnJlc2goKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9zZXR1cERpc2FibGVkKHRoaXMub3B0aW9ucy5kaXNhYmxlZCksdGhpcy5fc2V0dXBFdmVudHModGhpcy5vcHRpb25zLmV2ZW50KSx0aGlzLl9zZXR1cEhlaWdodFN0eWxlKHRoaXMub3B0aW9ucy5oZWlnaHRTdHlsZSksdGhpcy50YWJzLm5vdCh0aGlzLmFjdGl2ZSkuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJmYWxzZSIsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSIsdGFiSW5kZXg6LTF9KSx0aGlzLnBhbmVscy5ub3QodGhpcy5fZ2V0UGFuZWxGb3JUYWIodGhpcy5hY3RpdmUpKS5oaWRlKCkuYXR0cih7ImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSx0aGlzLmFjdGl2ZS5sZW5ndGg/KHRoaXMuYWN0aXZlLmFkZENsYXNzKCJ1aS10YWJzLWFjdGl2ZSB1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pLHRoaXMuX2dldFBhbmVsRm9yVGFiKHRoaXMuYWN0aXZlKS5zaG93KCkuYXR0cih7ImFyaWEtaGlkZGVuIjoiZmFsc2UifSkpOnRoaXMudGFicy5lcSgwKS5hdHRyKCJ0YWJJbmRleCIsMCl9LF9wcm9jZXNzVGFiczpmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT10aGlzLnRhYnMscz10aGlzLmFuY2hvcnMsbj10aGlzLnBhbmVsczt0aGlzLnRhYmxpc3Q9dGhpcy5fZ2V0TGlzdCgpLmFkZENsYXNzKCJ1aS10YWJzLW5hdiB1aS1oZWxwZXItcmVzZXQgdWktaGVscGVyLWNsZWFyZml4IHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLWFsbCIpLmF0dHIoInJvbGUiLCJ0YWJsaXN0IikuZGVsZWdhdGUoIj4gbGkiLCJtb3VzZWRvd24iK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24odCl7ZSh0aGlzKS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIikmJnQucHJldmVudERlZmF1bHQoKX0pLmRlbGVnYXRlKCIudWktdGFicy1hbmNob3IiLCJmb2N1cyIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe2UodGhpcykuY2xvc2VzdCgibGkiKS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIikmJnRoaXMuYmx1cigpfSksdGhpcy50YWJzPXRoaXMudGFibGlzdC5maW5kKCI+IGxpOmhhcyhhW2hyZWZdKSIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci10b3AiKS5hdHRyKHtyb2xlOiJ0YWIiLHRhYkluZGV4Oi0xfSksdGhpcy5hbmNob3JzPXRoaXMudGFicy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZSgiYSIsdGhpcylbMF19KS5hZGRDbGFzcygidWktdGFicy1hbmNob3IiKS5hdHRyKHtyb2xlOiJwcmVzZW50YXRpb24iLHRhYkluZGV4Oi0xfSksdGhpcy5wYW5lbHM9ZSgpLHRoaXMuYW5jaG9ycy5lYWNoKGZ1bmN0aW9uKGkscyl7dmFyIG4sYSxvLHI9ZShzKS51bmlxdWVJZCgpLmF0dHIoImlkIiksaD1lKHMpLmNsb3Nlc3QoImxpIiksbD1oLmF0dHIoImFyaWEtY29udHJvbHMiKTt0Ll9pc0xvY2FsKHMpPyhuPXMuaGFzaCxvPW4uc3Vic3RyaW5nKDEpLGE9dC5lbGVtZW50LmZpbmQodC5fc2FuaXRpemVTZWxlY3RvcihuKSkpOihvPWguYXR0cigiYXJpYS1jb250cm9scyIpfHxlKHt9KS51bmlxdWVJZCgpWzBdLmlkLG49IiMiK28sYT10LmVsZW1lbnQuZmluZChuKSxhLmxlbmd0aHx8KGE9dC5fY3JlYXRlUGFuZWwobyksYS5pbnNlcnRBZnRlcih0LnBhbmVsc1tpLTFdfHx0LnRhYmxpc3QpKSxhLmF0dHIoImFyaWEtbGl2ZSIsInBvbGl0ZSIpKSxhLmxlbmd0aCYmKHQucGFuZWxzPXQucGFuZWxzLmFkZChhKSksbCYmaC5kYXRhKCJ1aS10YWJzLWFyaWEtY29udHJvbHMiLGwpLGguYXR0cih7ImFyaWEtY29udHJvbHMiOm8sImFyaWEtbGFiZWxsZWRieSI6cn0pLGEuYXR0cigiYXJpYS1sYWJlbGxlZGJ5IixyKX0pLHRoaXMucGFuZWxzLmFkZENsYXNzKCJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iKS5hdHRyKCJyb2xlIiwidGFicGFuZWwiKSxpJiYodGhpcy5fb2ZmKGkubm90KHRoaXMudGFicykpLHRoaXMuX29mZihzLm5vdCh0aGlzLmFuY2hvcnMpKSx0aGlzLl9vZmYobi5ub3QodGhpcy5wYW5lbHMpKSl9LF9nZXRMaXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFibGlzdHx8dGhpcy5lbGVtZW50LmZpbmQoIm9sLHVsIikuZXEoMCl9LF9jcmVhdGVQYW5lbDpmdW5jdGlvbih0KXtyZXR1cm4gZSgiPGRpdj4iKS5hdHRyKCJpZCIsdCkuYWRkQ2xhc3MoInVpLXRhYnMtcGFuZWwgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWJvdHRvbSIpLmRhdGEoInVpLXRhYnMtZGVzdHJveSIsITApfSxfc2V0dXBEaXNhYmxlZDpmdW5jdGlvbih0KXtlLmlzQXJyYXkodCkmJih0Lmxlbmd0aD90Lmxlbmd0aD09PXRoaXMuYW5jaG9ycy5sZW5ndGgmJih0PSEwKTp0PSExKTtmb3IodmFyIGkscz0wO2k9dGhpcy50YWJzW3NdO3MrKyl0PT09ITB8fC0xIT09ZS5pbkFycmF5KHMsdCk/ZShpKS5hZGRDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpOmUoaSkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIikucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpO3RoaXMub3B0aW9ucy5kaXNhYmxlZD10fSxfc2V0dXBFdmVudHM6ZnVuY3Rpb24odCl7dmFyIGk9e307dCYmZS5lYWNoKHQuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe2lbdF09Il9ldmVudEhhbmRsZXIifSksdGhpcy5fb2ZmKHRoaXMuYW5jaG9ycy5hZGQodGhpcy50YWJzKS5hZGQodGhpcy5wYW5lbHMpKSx0aGlzLl9vbighMCx0aGlzLmFuY2hvcnMse2NsaWNrOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKX19KSx0aGlzLl9vbih0aGlzLmFuY2hvcnMsaSksdGhpcy5fb24odGhpcy50YWJzLHtrZXlkb3duOiJfdGFiS2V5ZG93biJ9KSx0aGlzLl9vbih0aGlzLnBhbmVscyx7a2V5ZG93bjoiX3BhbmVsS2V5ZG93biJ9KSx0aGlzLl9mb2N1c2FibGUodGhpcy50YWJzKSx0aGlzLl9ob3ZlcmFibGUodGhpcy50YWJzKX0sX3NldHVwSGVpZ2h0U3R5bGU6ZnVuY3Rpb24odCl7dmFyIGkscz10aGlzLmVsZW1lbnQucGFyZW50KCk7ImZpbGwiPT09dD8oaT1zLmhlaWdodCgpLGktPXRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpLXRoaXMuZWxlbWVudC5oZWlnaHQoKSx0aGlzLmVsZW1lbnQuc2libGluZ3MoIjp2aXNpYmxlIikuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcykscz10LmNzcygicG9zaXRpb24iKTsiYWJzb2x1dGUiIT09cyYmImZpeGVkIiE9PXMmJihpLT10Lm91dGVySGVpZ2h0KCEwKSl9KSx0aGlzLmVsZW1lbnQuY2hpbGRyZW4oKS5ub3QodGhpcy5wYW5lbHMpLmVhY2goZnVuY3Rpb24oKXtpLT1lKHRoaXMpLm91dGVySGVpZ2h0KCEwKX0pLHRoaXMucGFuZWxzLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmhlaWdodChNYXRoLm1heCgwLGktZSh0aGlzKS5pbm5lckhlaWdodCgpK2UodGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3ZlcmZsb3ciLCJhdXRvIikpOiJhdXRvIj09PXQmJihpPTAsdGhpcy5wYW5lbHMuZWFjaChmdW5jdGlvbigpe2k9TWF0aC5tYXgoaSxlKHRoaXMpLmhlaWdodCgiIikuaGVpZ2h0KCkpfSkuaGVpZ2h0KGkpKX0sX2V2ZW50SGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgaT10aGlzLm9wdGlvbnMscz10aGlzLmFjdGl2ZSxuPWUodC5jdXJyZW50VGFyZ2V0KSxhPW4uY2xvc2VzdCgibGkiKSxvPWFbMF09PT1zWzBdLHI9byYmaS5jb2xsYXBzaWJsZSxoPXI/ZSgpOnRoaXMuX2dldFBhbmVsRm9yVGFiKGEpLGw9cy5sZW5ndGg/dGhpcy5fZ2V0UGFuZWxGb3JUYWIocyk6ZSgpLHU9e29sZFRhYjpzLG9sZFBhbmVsOmwsbmV3VGFiOnI/ZSgpOmEsbmV3UGFuZWw6aH07dC5wcmV2ZW50RGVmYXVsdCgpLGEuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIil8fGEuaGFzQ2xhc3MoInVpLXRhYnMtbG9hZGluZyIpfHx0aGlzLnJ1bm5pbmd8fG8mJiFpLmNvbGxhcHNpYmxlfHx0aGlzLl90cmlnZ2VyKCJiZWZvcmVBY3RpdmF0ZSIsdCx1KT09PSExfHwoaS5hY3RpdmU9cj8hMTp0aGlzLnRhYnMuaW5kZXgoYSksdGhpcy5hY3RpdmU9bz9lKCk6YSx0aGlzLnhociYmdGhpcy54aHIuYWJvcnQoKSxsLmxlbmd0aHx8aC5sZW5ndGh8fGUuZXJyb3IoImpRdWVyeSBVSSBUYWJzOiBNaXNtYXRjaGluZyBmcmFnbWVudCBpZGVudGlmaWVyLiIpLGgubGVuZ3RoJiZ0aGlzLmxvYWQodGhpcy50YWJzLmluZGV4KGEpLHQpLHRoaXMuX3RvZ2dsZSh0LHUpKX0sX3RvZ2dsZTpmdW5jdGlvbih0LGkpe2Z1bmN0aW9uIHMoKXthLnJ1bm5pbmc9ITEsYS5fdHJpZ2dlcigiYWN0aXZhdGUiLHQsaSl9ZnVuY3Rpb24gbigpe2kubmV3VGFiLmNsb3Nlc3QoImxpIikuYWRkQ2xhc3MoInVpLXRhYnMtYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSIpLG8ubGVuZ3RoJiZhLm9wdGlvbnMuc2hvdz9hLl9zaG93KG8sYS5vcHRpb25zLnNob3cscyk6KG8uc2hvdygpLHMoKSl9dmFyIGE9dGhpcyxvPWkubmV3UGFuZWwscj1pLm9sZFBhbmVsO3RoaXMucnVubmluZz0hMCxyLmxlbmd0aCYmdGhpcy5vcHRpb25zLmhpZGU/dGhpcy5faGlkZShyLHRoaXMub3B0aW9ucy5oaWRlLGZ1bmN0aW9uKCl7aS5vbGRUYWIuY2xvc2VzdCgibGkiKS5yZW1vdmVDbGFzcygidWktdGFicy1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIiksbigpfSk6KGkub2xkVGFiLmNsb3Nlc3QoImxpIikucmVtb3ZlQ2xhc3MoInVpLXRhYnMtYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSIpLHIuaGlkZSgpLG4oKSksci5hdHRyKCJhcmlhLWhpZGRlbiIsInRydWUiKSxpLm9sZFRhYi5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6ImZhbHNlIiwiYXJpYS1leHBhbmRlZCI6ImZhbHNlIn0pLG8ubGVuZ3RoJiZyLmxlbmd0aD9pLm9sZFRhYi5hdHRyKCJ0YWJJbmRleCIsLTEpOm8ubGVuZ3RoJiZ0aGlzLnRhYnMuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIDA9PT1lKHRoaXMpLmF0dHIoInRhYkluZGV4Iil9KS5hdHRyKCJ0YWJJbmRleCIsLTEpLG8uYXR0cigiYXJpYS1oaWRkZW4iLCJmYWxzZSIpLGkubmV3VGFiLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoidHJ1ZSIsImFyaWEtZXhwYW5kZWQiOiJ0cnVlIix0YWJJbmRleDowfSl9LF9hY3RpdmF0ZTpmdW5jdGlvbih0KXt2YXIgaSxzPXRoaXMuX2ZpbmRBY3RpdmUodCk7c1swXSE9PXRoaXMuYWN0aXZlWzBdJiYocy5sZW5ndGh8fChzPXRoaXMuYWN0aXZlKSxpPXMuZmluZCgiLnVpLXRhYnMtYW5jaG9yIilbMF0sdGhpcy5fZXZlbnRIYW5kbGVyKHt0YXJnZXQ6aSxjdXJyZW50VGFyZ2V0OmkscHJldmVudERlZmF1bHQ6ZS5ub29wfSkpfSxfZmluZEFjdGl2ZTpmdW5jdGlvbih0KXtyZXR1cm4gdD09PSExP2UoKTp0aGlzLnRhYnMuZXEodCl9LF9nZXRJbmRleDpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJihlPXRoaXMuYW5jaG9ycy5pbmRleCh0aGlzLmFuY2hvcnMuZmlsdGVyKCJbaHJlZiQ9JyIrZSsiJ10iKSkpLGV9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy54aHImJnRoaXMueGhyLmFib3J0KCksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS10YWJzIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLXRhYnMtY29sbGFwc2libGUiKSx0aGlzLnRhYmxpc3QucmVtb3ZlQ2xhc3MoInVpLXRhYnMtbmF2IHVpLWhlbHBlci1yZXNldCB1aS1oZWxwZXItY2xlYXJmaXggdWktd2lkZ2V0LWhlYWRlciB1aS1jb3JuZXItYWxsIikucmVtb3ZlQXR0cigicm9sZSIpLHRoaXMuYW5jaG9ycy5yZW1vdmVDbGFzcygidWktdGFicy1hbmNob3IiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigidGFiSW5kZXgiKS5yZW1vdmVVbmlxdWVJZCgpLHRoaXMudGFibGlzdC51bmJpbmQodGhpcy5ldmVudE5hbWVzcGFjZSksdGhpcy50YWJzLmFkZCh0aGlzLnBhbmVscykuZWFjaChmdW5jdGlvbigpe2UuZGF0YSh0aGlzLCJ1aS10YWJzLWRlc3Ryb3kiKT9lKHRoaXMpLnJlbW92ZSgpOmUodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQgdWktc3RhdGUtYWN0aXZlIHVpLXN0YXRlLWRpc2FibGVkIHVpLWNvcm5lci10b3AgdWktY29ybmVyLWJvdHRvbSB1aS13aWRnZXQtY29udGVudCB1aS10YWJzLWFjdGl2ZSB1aS10YWJzLXBhbmVsIikucmVtb3ZlQXR0cigidGFiSW5kZXgiKS5yZW1vdmVBdHRyKCJhcmlhLWxpdmUiKS5yZW1vdmVBdHRyKCJhcmlhLWJ1c3kiKS5yZW1vdmVBdHRyKCJhcmlhLXNlbGVjdGVkIikucmVtb3ZlQXR0cigiYXJpYS1sYWJlbGxlZGJ5IikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWV4cGFuZGVkIikucmVtb3ZlQXR0cigicm9sZSIpfSksdGhpcy50YWJzLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLGk9dC5kYXRhKCJ1aS10YWJzLWFyaWEtY29udHJvbHMiKTtpP3QuYXR0cigiYXJpYS1jb250cm9scyIsaSkucmVtb3ZlRGF0YSgidWktdGFicy1hcmlhLWNvbnRyb2xzIik6dC5yZW1vdmVBdHRyKCJhcmlhLWNvbnRyb2xzIil9KSx0aGlzLnBhbmVscy5zaG93KCksImNvbnRlbnQiIT09dGhpcy5vcHRpb25zLmhlaWdodFN0eWxlJiZ0aGlzLnBhbmVscy5jc3MoImhlaWdodCIsIiIpfSxlbmFibGU6ZnVuY3Rpb24odCl7dmFyIGk9dGhpcy5vcHRpb25zLmRpc2FibGVkO2khPT0hMSYmKHZvaWQgMD09PXQ/aT0hMToodD10aGlzLl9nZXRJbmRleCh0KSxpPWUuaXNBcnJheShpKT9lLm1hcChpLGZ1bmN0aW9uKGUpe3JldHVybiBlIT09dD9lOm51bGx9KTplLm1hcCh0aGlzLnRhYnMsZnVuY3Rpb24oZSxpKXtyZXR1cm4gaSE9PXQ/aTpudWxsfSkpLHRoaXMuX3NldHVwRGlzYWJsZWQoaSkpfSxkaXNhYmxlOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMub3B0aW9ucy5kaXNhYmxlZDtpZihpIT09ITApe2lmKHZvaWQgMD09PXQpaT0hMDtlbHNle2lmKHQ9dGhpcy5fZ2V0SW5kZXgodCksLTEhPT1lLmluQXJyYXkodCxpKSlyZXR1cm47aT1lLmlzQXJyYXkoaSk/ZS5tZXJnZShbdF0saSkuc29ydCgpOlt0XX10aGlzLl9zZXR1cERpc2FibGVkKGkpfX0sbG9hZDpmdW5jdGlvbih0LGkpe3Q9dGhpcy5fZ2V0SW5kZXgodCk7dmFyIHM9dGhpcyxuPXRoaXMudGFicy5lcSh0KSxhPW4uZmluZCgiLnVpLXRhYnMtYW5jaG9yIiksbz10aGlzLl9nZXRQYW5lbEZvclRhYihuKSxyPXt0YWI6bixwYW5lbDpvfSxoPWZ1bmN0aW9uKGUsdCl7ImFib3J0Ij09PXQmJnMucGFuZWxzLnN0b3AoITEsITApLG4ucmVtb3ZlQ2xhc3MoInVpLXRhYnMtbG9hZGluZyIpLG8ucmVtb3ZlQXR0cigiYXJpYS1idXN5IiksZT09PXMueGhyJiZkZWxldGUgcy54aHJ9O3RoaXMuX2lzTG9jYWwoYVswXSl8fCh0aGlzLnhocj1lLmFqYXgodGhpcy5fYWpheFNldHRpbmdzKGEsaSxyKSksdGhpcy54aHImJiJjYW5jZWxlZCIhPT10aGlzLnhoci5zdGF0dXNUZXh0JiYobi5hZGRDbGFzcygidWktdGFicy1sb2FkaW5nIiksby5hdHRyKCJhcmlhLWJ1c3kiLCJ0cnVlIiksdGhpcy54aHIuZG9uZShmdW5jdGlvbihlLHQsbil7c2V0VGltZW91dChmdW5jdGlvbigpe28uaHRtbChlKSxzLl90cmlnZ2VyKCJsb2FkIixpLHIpLGgobix0KX0sMSl9KS5mYWlsKGZ1bmN0aW9uKGUsdCl7c2V0VGltZW91dChmdW5jdGlvbigpe2goZSx0KX0sMSl9KSkpfSxfYWpheFNldHRpbmdzOmZ1bmN0aW9uKHQsaSxzKXt2YXIgbj10aGlzO3JldHVybnt1cmw6dC5hdHRyKCJocmVmIiksYmVmb3JlU2VuZDpmdW5jdGlvbih0LGEpe3JldHVybiBuLl90cmlnZ2VyKCJiZWZvcmVMb2FkIixpLGUuZXh0ZW5kKHtqcVhIUjp0LGFqYXhTZXR0aW5nczphfSxzKSl9fX0sX2dldFBhbmVsRm9yVGFiOmZ1bmN0aW9uKHQpe3ZhciBpPWUodCkuYXR0cigiYXJpYS1jb250cm9scyIpO3JldHVybiB0aGlzLmVsZW1lbnQuZmluZCh0aGlzLl9zYW5pdGl6ZVNlbGVjdG9yKCIjIitpKSl9fSksZS53aWRnZXQoInVpLnRvb2x0aXAiLHt2ZXJzaW9uOiIxLjExLjQiLG9wdGlvbnM6e2NvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLmF0dHIoInRpdGxlIil8fCIiO3JldHVybiBlKCI8YT4iKS50ZXh0KHQpLmh0bWwoKX0saGlkZTohMCxpdGVtczoiW3RpdGxlXTpub3QoW2Rpc2FibGVkXSkiLHBvc2l0aW9uOntteToibGVmdCB0b3ArMTUiLGF0OiJsZWZ0IGJvdHRvbSIsY29sbGlzaW9uOiJmbGlwZml0IGZsaXAifSxzaG93OiEwLHRvb2x0aXBDbGFzczpudWxsLHRyYWNrOiExLGNsb3NlOm51bGwsb3BlbjpudWxsfSxfYWRkRGVzY3JpYmVkQnk6ZnVuY3Rpb24odCxpKXt2YXIgcz0odC5hdHRyKCJhcmlhLWRlc2NyaWJlZGJ5Iil8fCIiKS5zcGxpdCgvXHMrLyk7cy5wdXNoKGkpLHQuZGF0YSgidWktdG9vbHRpcC1pZCIsaSkuYXR0cigiYXJpYS1kZXNjcmliZWRieSIsZS50cmltKHMuam9pbigiICIpKSl9LF9yZW1vdmVEZXNjcmliZWRCeTpmdW5jdGlvbih0KXt2YXIgaT10LmRhdGEoInVpLXRvb2x0aXAtaWQiKSxzPSh0LmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKXx8IiIpLnNwbGl0KC9ccysvKSxuPWUuaW5BcnJheShpLHMpOy0xIT09biYmcy5zcGxpY2UobiwxKSx0LnJlbW92ZURhdGEoInVpLXRvb2x0aXAtaWQiKSxzPWUudHJpbShzLmpvaW4oIiAiKSkscz90LmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLHMpOnQucmVtb3ZlQXR0cigiYXJpYS1kZXNjcmliZWRieSIpfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5fb24oe21vdXNlb3Zlcjoib3BlbiIsZm9jdXNpbjoib3BlbiJ9KSx0aGlzLnRvb2x0aXBzPXt9LHRoaXMucGFyZW50cz17fSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuX2Rpc2FibGUoKSx0aGlzLmxpdmVSZWdpb249ZSgiPGRpdj4iKS5hdHRyKHtyb2xlOiJsb2ciLCJhcmlhLWxpdmUiOiJhc3NlcnRpdmUiLCJhcmlhLXJlbGV2YW50IjoiYWRkaXRpb25zIn0pLmFkZENsYXNzKCJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiKS5hcHBlbmRUbyh0aGlzLmRvY3VtZW50WzBdLmJvZHkpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsaSl7dmFyIHM9dGhpcztyZXR1cm4iZGlzYWJsZWQiPT09dD8odGhpc1tpPyJfZGlzYWJsZSI6Il9lbmFibGUiXSgpLHRoaXMub3B0aW9uc1t0XT1pLHZvaWQgMCk6KHRoaXMuX3N1cGVyKHQsaSksImNvbnRlbnQiPT09dCYmZS5lYWNoKHRoaXMudG9vbHRpcHMsZnVuY3Rpb24oZSx0KXtzLl91cGRhdGVDb250ZW50KHQuZWxlbWVudCl9KSx2b2lkIDApfSxfZGlzYWJsZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7ZS5lYWNoKHRoaXMudG9vbHRpcHMsZnVuY3Rpb24oaSxzKXt2YXIgbj1lLkV2ZW50KCJibHVyIik7bi50YXJnZXQ9bi5jdXJyZW50VGFyZ2V0PXMuZWxlbWVudFswXSx0LmNsb3NlKG4sITApfSksdGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5hZGRCYWNrKCkuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyk7dC5pcygiW3RpdGxlXSIpJiZ0LmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiLHQuYXR0cigidGl0bGUiKSkucmVtb3ZlQXR0cigidGl0bGUiKX0pfSxfZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5hZGRCYWNrKCkuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyk7dC5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikmJnQuYXR0cigidGl0bGUiLHQuZGF0YSgidWktdG9vbHRpcC10aXRsZSIpKX0pfSxvcGVuOmZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMscz1lKHQ/dC50YXJnZXQ6dGhpcy5lbGVtZW50KS5jbG9zZXN0KHRoaXMub3B0aW9ucy5pdGVtcyk7cy5sZW5ndGgmJiFzLmRhdGEoInVpLXRvb2x0aXAtaWQiKSYmKHMuYXR0cigidGl0bGUiKSYmcy5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIixzLmF0dHIoInRpdGxlIikpLHMuZGF0YSgidWktdG9vbHRpcC1vcGVuIiwhMCksdCYmIm1vdXNlb3ZlciI9PT10LnR5cGUmJnMucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXt2YXIgdCxzPWUodGhpcyk7cy5kYXRhKCJ1aS10b29sdGlwLW9wZW4iKSYmKHQ9ZS5FdmVudCgiYmx1ciIpLHQudGFyZ2V0PXQuY3VycmVudFRhcmdldD10aGlzLGkuY2xvc2UodCwhMCkpLHMuYXR0cigidGl0bGUiKSYmKHMudW5pcXVlSWQoKSxpLnBhcmVudHNbdGhpcy5pZF09e2VsZW1lbnQ6dGhpcyx0aXRsZTpzLmF0dHIoInRpdGxlIil9LHMuYXR0cigidGl0bGUiLCIiKSl9KSx0aGlzLl9yZWdpc3RlckNsb3NlSGFuZGxlcnModCxzKSx0aGlzLl91cGRhdGVDb250ZW50KHMsdCkpfSxfdXBkYXRlQ29udGVudDpmdW5jdGlvbihlLHQpe3ZhciBpLHM9dGhpcy5vcHRpb25zLmNvbnRlbnQsbj10aGlzLGE9dD90LnR5cGU6bnVsbDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHM/dGhpcy5fb3Blbih0LGUscyk6KGk9cy5jYWxsKGVbMF0sZnVuY3Rpb24oaSl7bi5fZGVsYXkoZnVuY3Rpb24oKXtlLmRhdGEoInVpLXRvb2x0aXAtb3BlbiIpJiYodCYmKHQudHlwZT1hKSx0aGlzLl9vcGVuKHQsZSxpKSl9KX0pLGkmJnRoaXMuX29wZW4odCxlLGkpLHZvaWQgMCl9LF9vcGVuOmZ1bmN0aW9uKHQsaSxzKXtmdW5jdGlvbiBuKGUpe2wub2Y9ZSxvLmlzKCI6aGlkZGVuIil8fG8ucG9zaXRpb24obCl9dmFyIGEsbyxyLGgsbD1lLmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMucG9zaXRpb24pO2lmKHMpe2lmKGE9dGhpcy5fZmluZChpKSlyZXR1cm4gYS50b29sdGlwLmZpbmQoIi51aS10b29sdGlwLWNvbnRlbnQiKS5odG1sKHMpLHZvaWQgMDtpLmlzKCJbdGl0bGVdIikmJih0JiYibW91c2VvdmVyIj09PXQudHlwZT9pLmF0dHIoInRpdGxlIiwiIik6aS5yZW1vdmVBdHRyKCJ0aXRsZSIpKSxhPXRoaXMuX3Rvb2x0aXAoaSksbz1hLnRvb2x0aXAsdGhpcy5fYWRkRGVzY3JpYmVkQnkoaSxvLmF0dHIoImlkIikpLG8uZmluZCgiLnVpLXRvb2x0aXAtY29udGVudCIpLmh0bWwocyksdGhpcy5saXZlUmVnaW9uLmNoaWxkcmVuKCkuaGlkZSgpLHMuY2xvbmU/KGg9cy5jbG9uZSgpLGgucmVtb3ZlQXR0cigiaWQiKS5maW5kKCJbaWRdIikucmVtb3ZlQXR0cigiaWQiKSk6aD1zLGUoIjxkaXY+IikuaHRtbChoKS5hcHBlbmRUbyh0aGlzLmxpdmVSZWdpb24pLHRoaXMub3B0aW9ucy50cmFjayYmdCYmL15tb3VzZS8udGVzdCh0LnR5cGUpPyh0aGlzLl9vbih0aGlzLmRvY3VtZW50LHttb3VzZW1vdmU6bn0pLG4odCkpOm8ucG9zaXRpb24oZS5leHRlbmQoe29mOml9LHRoaXMub3B0aW9ucy5wb3NpdGlvbikpLG8uaGlkZSgpLHRoaXMuX3Nob3cobyx0aGlzLm9wdGlvbnMuc2hvdyksdGhpcy5vcHRpb25zLnNob3cmJnRoaXMub3B0aW9ucy5zaG93LmRlbGF5JiYocj10aGlzLmRlbGF5ZWRTaG93PXNldEludGVydmFsKGZ1bmN0aW9uKCl7by5pcygiOnZpc2libGUiKSYmKG4obC5vZiksY2xlYXJJbnRlcnZhbChyKSl9LGUuZnguaW50ZXJ2YWwpKSx0aGlzLl90cmlnZ2VyKCJvcGVuIix0LHt0b29sdGlwOm99KX19LF9yZWdpc3RlckNsb3NlSGFuZGxlcnM6ZnVuY3Rpb24odCxpKXt2YXIgcz17a2V5dXA6ZnVuY3Rpb24odCl7aWYodC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLkVTQ0FQRSl7dmFyIHM9ZS5FdmVudCh0KTtzLmN1cnJlbnRUYXJnZXQ9aVswXSx0aGlzLmNsb3NlKHMsITApfX19O2lbMF0hPT10aGlzLmVsZW1lbnRbMF0mJihzLnJlbW92ZT1mdW5jdGlvbigpe3RoaXMuX3JlbW92ZVRvb2x0aXAodGhpcy5fZmluZChpKS50b29sdGlwKX0pLHQmJiJtb3VzZW92ZXIiIT09dC50eXBlfHwocy5tb3VzZWxlYXZlPSJjbG9zZSIpLHQmJiJmb2N1c2luIiE9PXQudHlwZXx8KHMuZm9jdXNvdXQ9ImNsb3NlIiksdGhpcy5fb24oITAsaSxzKX0sY2xvc2U6ZnVuY3Rpb24odCl7dmFyIGkscz10aGlzLG49ZSh0P3QuY3VycmVudFRhcmdldDp0aGlzLmVsZW1lbnQpLGE9dGhpcy5fZmluZChuKTtyZXR1cm4gYT8oaT1hLnRvb2x0aXAsYS5jbG9zaW5nfHwoY2xlYXJJbnRlcnZhbCh0aGlzLmRlbGF5ZWRTaG93KSxuLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSYmIW4uYXR0cigidGl0bGUiKSYmbi5hdHRyKCJ0aXRsZSIsbi5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikpLHRoaXMuX3JlbW92ZURlc2NyaWJlZEJ5KG4pLGEuaGlkaW5nPSEwLGkuc3RvcCghMCksdGhpcy5faGlkZShpLHRoaXMub3B0aW9ucy5oaWRlLGZ1bmN0aW9uKCl7cy5fcmVtb3ZlVG9vbHRpcChlKHRoaXMpKX0pLG4ucmVtb3ZlRGF0YSgidWktdG9vbHRpcC1vcGVuIiksdGhpcy5fb2ZmKG4sIm1vdXNlbGVhdmUgZm9jdXNvdXQga2V5dXAiKSxuWzBdIT09dGhpcy5lbGVtZW50WzBdJiZ0aGlzLl9vZmYobiwicmVtb3ZlIiksdGhpcy5fb2ZmKHRoaXMuZG9jdW1lbnQsIm1vdXNlbW92ZSIpLHQmJiJtb3VzZWxlYXZlIj09PXQudHlwZSYmZS5lYWNoKHRoaXMucGFyZW50cyxmdW5jdGlvbih0LGkpe2UoaS5lbGVtZW50KS5hdHRyKCJ0aXRsZSIsaS50aXRsZSksZGVsZXRlIHMucGFyZW50c1t0XX0pLGEuY2xvc2luZz0hMCx0aGlzLl90cmlnZ2VyKCJjbG9zZSIsdCx7dG9vbHRpcDppfSksYS5oaWRpbmd8fChhLmNsb3Npbmc9ITEpKSx2b2lkIDApOihuLnJlbW92ZURhdGEoInVpLXRvb2x0aXAtb3BlbiIpLHZvaWQgMCl9LF90b29sdGlwOmZ1bmN0aW9uKHQpe3ZhciBpPWUoIjxkaXY+IikuYXR0cigicm9sZSIsInRvb2x0aXAiKS5hZGRDbGFzcygidWktdG9vbHRpcCB1aS13aWRnZXQgdWktY29ybmVyLWFsbCB1aS13aWRnZXQtY29udGVudCAiKyh0aGlzLm9wdGlvbnMudG9vbHRpcENsYXNzfHwiIikpLHM9aS51bmlxdWVJZCgpLmF0dHIoImlkIik7cmV0dXJuIGUoIjxkaXY+IikuYWRkQ2xhc3MoInVpLXRvb2x0aXAtY29udGVudCIpLmFwcGVuZFRvKGkpLGkuYXBwZW5kVG8odGhpcy5kb2N1bWVudFswXS5ib2R5KSx0aGlzLnRvb2x0aXBzW3NdPXtlbGVtZW50OnQsdG9vbHRpcDppfX0sX2ZpbmQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kYXRhKCJ1aS10b29sdGlwLWlkIik7cmV0dXJuIHQ/dGhpcy50b29sdGlwc1t0XTpudWxsfSxfcmVtb3ZlVG9vbHRpcDpmdW5jdGlvbihlKXtlLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLnRvb2x0aXBzW2UuYXR0cigiaWQiKV19LF9kZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztlLmVhY2godGhpcy50b29sdGlwcyxmdW5jdGlvbihpLHMpe3ZhciBuPWUuRXZlbnQoImJsdXIiKSxhPXMuZWxlbWVudDtuLnRhcmdldD1uLmN1cnJlbnRUYXJnZXQ9YVswXSx0LmNsb3NlKG4sITApLGUoIiMiK2kpLnJlbW92ZSgpLGEuZGF0YSgidWktdG9vbHRpcC10aXRsZSIpJiYoYS5hdHRyKCJ0aXRsZSIpfHxhLmF0dHIoInRpdGxlIixhLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSksYS5yZW1vdmVEYXRhKCJ1aS10b29sdGlwLXRpdGxlIikpfSksdGhpcy5saXZlUmVnaW9uLnJlbW92ZSgpfX0pO3ZhciBjPSJ1aS1lZmZlY3RzLSIscD1lO2UuZWZmZWN0cz17ZWZmZWN0Ont9fSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIGkoZSx0LGkpe3ZhciBzPWRbdC50eXBlXXx8e307cmV0dXJuIG51bGw9PWU/aXx8IXQuZGVmP251bGw6dC5kZWY6KGU9cy5mbG9vcj9+fmU6cGFyc2VGbG9hdChlKSxpc05hTihlKT90LmRlZjpzLm1vZD8oZStzLm1vZCklcy5tb2Q6MD5lPzA6ZT5zLm1heD9zLm1heDplKX1mdW5jdGlvbiBzKGkpe3ZhciBzPWwoKSxuPXMuX3JnYmE9W107cmV0dXJuIGk9aS50b0xvd2VyQ2FzZSgpLGYoaCxmdW5jdGlvbihlLGEpe3ZhciBvLHI9YS5yZS5leGVjKGkpLGg9ciYmYS5wYXJzZShyKSxsPWEuc3BhY2V8fCJyZ2JhIjtyZXR1cm4gaD8obz1zW2xdKGgpLHNbdVtsXS5jYWNoZV09b1t1W2xdLmNhY2hlXSxuPXMuX3JnYmE9by5fcmdiYSwhMSk6dH0pLG4ubGVuZ3RoPygiMCwwLDAsMCI9PT1uLmpvaW4oKSYmZS5leHRlbmQobixhLnRyYW5zcGFyZW50KSxzKTphW2ldfWZ1bmN0aW9uIG4oZSx0LGkpe3JldHVybiBpPShpKzEpJTEsMT42Kmk/ZSs2Kih0LWUpKmk6MT4yKmk/dDoyPjMqaT9lKzYqKHQtZSkqKDIvMy1pKTplfXZhciBhLG89ImJhY2tncm91bmRDb2xvciBib3JkZXJCb3R0b21Db2xvciBib3JkZXJMZWZ0Q29sb3IgYm9yZGVyUmlnaHRDb2xvciBib3JkZXJUb3BDb2xvciBjb2xvciBjb2x1bW5SdWxlQ29sb3Igb3V0bGluZUNvbG9yIHRleHREZWNvcmF0aW9uQ29sb3IgdGV4dEVtcGhhc2lzQ29sb3IiLHI9L14oW1wtK10pPVxzKihcZCtcLj9cZCopLyxoPVt7cmU6L3JnYmE/XChccyooXGR7MSwzfSlccyosXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKig/OixccyooXGQ/KD86XC5cZCspPylccyopP1wpLyxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm5bZVsxXSxlWzJdLGVbM10sZVs0XV19fSx7cmU6L3JnYmE/XChccyooXGQrKD86XC5cZCspPylcJVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKixccyooXGQrKD86XC5cZCspPylcJVxzKig/OixccyooXGQ/KD86XC5cZCspPylccyopP1wpLyxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm5bMi41NSplWzFdLDIuNTUqZVsyXSwyLjU1KmVbM10sZVs0XV19fSx7cmU6LyMoW2EtZjAtOV17Mn0pKFthLWYwLTldezJ9KShbYS1mMC05XXsyfSkvLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltwYXJzZUludChlWzFdLDE2KSxwYXJzZUludChlWzJdLDE2KSxwYXJzZUludChlWzNdLDE2KV19fSx7cmU6LyMoW2EtZjAtOV0pKFthLWYwLTldKShbYS1mMC05XSkvLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltwYXJzZUludChlWzFdK2VbMV0sMTYpLHBhcnNlSW50KGVbMl0rZVsyXSwxNikscGFyc2VJbnQoZVszXStlWzNdLDE2KV19fSx7cmU6L2hzbGE/XChccyooXGQrKD86XC5cZCspPylccyosXHMqKFxkKyg/OlwuXGQrKT8pXCVccyosXHMqKFxkKyg/OlwuXGQrKT8pXCVccyooPzosXHMqKFxkPyg/OlwuXGQrKT8pXHMqKT9cKS8sc3BhY2U6ImhzbGEiLHBhcnNlOmZ1bmN0aW9uKGUpe3JldHVybltlWzFdLGVbMl0vMTAwLGVbM10vMTAwLGVbNF1dfX1dLGw9ZS5Db2xvcj1mdW5jdGlvbih0LGkscyxuKXtyZXR1cm4gbmV3IGUuQ29sb3IuZm4ucGFyc2UodCxpLHMsbil9LHU9e3JnYmE6e3Byb3BzOntyZWQ6e2lkeDowLHR5cGU6ImJ5dGUifSxncmVlbjp7aWR4OjEsdHlwZToiYnl0ZSJ9LGJsdWU6e2lkeDoyLHR5cGU6ImJ5dGUifX19LGhzbGE6e3Byb3BzOntodWU6e2lkeDowLHR5cGU6ImRlZ3JlZXMifSxzYXR1cmF0aW9uOntpZHg6MSx0eXBlOiJwZXJjZW50In0sbGlnaHRuZXNzOntpZHg6Mix0eXBlOiJwZXJjZW50In19fX0sZD17ImJ5dGUiOntmbG9vcjohMCxtYXg6MjU1fSxwZXJjZW50OnttYXg6MX0sZGVncmVlczp7bW9kOjM2MCxmbG9vcjohMH19LGM9bC5zdXBwb3J0PXt9LHA9ZSgiPHA+IilbMF0sZj1lLmVhY2g7cC5zdHlsZS5jc3NUZXh0PSJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMSwxLDEsLjUpIixjLnJnYmE9cC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IuaW5kZXhPZigicmdiYSIpPi0xLGYodSxmdW5jdGlvbihlLHQpe3QuY2FjaGU9Il8iK2UsdC5wcm9wcy5hbHBoYT17aWR4OjMsdHlwZToicGVyY2VudCIsZGVmOjF9fSksbC5mbj1lLmV4dGVuZChsLnByb3RvdHlwZSx7cGFyc2U6ZnVuY3Rpb24obixvLHIsaCl7aWYobj09PXQpcmV0dXJuIHRoaXMuX3JnYmE9W251bGwsbnVsbCxudWxsLG51bGxdLHRoaXM7KG4uanF1ZXJ5fHxuLm5vZGVUeXBlKSYmKG49ZShuKS5jc3Mobyksbz10KTt2YXIgZD10aGlzLGM9ZS50eXBlKG4pLHA9dGhpcy5fcmdiYT1bXTtyZXR1cm4gbyE9PXQmJihuPVtuLG8scixoXSxjPSJhcnJheSIpLCJzdHJpbmciPT09Yz90aGlzLnBhcnNlKHMobil8fGEuX2RlZmF1bHQpOiJhcnJheSI9PT1jPyhmKHUucmdiYS5wcm9wcyxmdW5jdGlvbihlLHQpe3BbdC5pZHhdPWkoblt0LmlkeF0sdCl9KSx0aGlzKToib2JqZWN0Ij09PWM/KG4gaW5zdGFuY2VvZiBsP2YodSxmdW5jdGlvbihlLHQpe25bdC5jYWNoZV0mJihkW3QuY2FjaGVdPW5bdC5jYWNoZV0uc2xpY2UoKSl9KTpmKHUsZnVuY3Rpb24odCxzKXt2YXIgYT1zLmNhY2hlO2Yocy5wcm9wcyxmdW5jdGlvbihlLHQpe2lmKCFkW2FdJiZzLnRvKXtpZigiYWxwaGEiPT09ZXx8bnVsbD09bltlXSlyZXR1cm47ZFthXT1zLnRvKGQuX3JnYmEpfWRbYV1bdC5pZHhdPWkobltlXSx0LCEwKX0pLGRbYV0mJjA+ZS5pbkFycmF5KG51bGwsZFthXS5zbGljZSgwLDMpKSYmKGRbYV1bM109MSxzLmZyb20mJihkLl9yZ2JhPXMuZnJvbShkW2FdKSkpfSksdGhpcyk6dH0saXM6ZnVuY3Rpb24oZSl7dmFyIGk9bChlKSxzPSEwLG49dGhpcztyZXR1cm4gZih1LGZ1bmN0aW9uKGUsYSl7dmFyIG8scj1pW2EuY2FjaGVdO3JldHVybiByJiYobz1uW2EuY2FjaGVdfHxhLnRvJiZhLnRvKG4uX3JnYmEpfHxbXSxmKGEucHJvcHMsZnVuY3Rpb24oZSxpKXtyZXR1cm4gbnVsbCE9cltpLmlkeF0/cz1yW2kuaWR4XT09PW9baS5pZHhdOnR9KSksc30pLHN9LF9zcGFjZTpmdW5jdGlvbigpe3ZhciBlPVtdLHQ9dGhpcztyZXR1cm4gZih1LGZ1bmN0aW9uKGkscyl7dFtzLmNhY2hlXSYmZS5wdXNoKGkpfSksZS5wb3AoKX0sdHJhbnNpdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBzPWwoZSksbj1zLl9zcGFjZSgpLGE9dVtuXSxvPTA9PT10aGlzLmFscGhhKCk/bCgidHJhbnNwYXJlbnQiKTp0aGlzLHI9b1thLmNhY2hlXXx8YS50byhvLl9yZ2JhKSxoPXIuc2xpY2UoKTtyZXR1cm4gcz1zW2EuY2FjaGVdLGYoYS5wcm9wcyxmdW5jdGlvbihlLG4pe3ZhciBhPW4uaWR4LG89clthXSxsPXNbYV0sdT1kW24udHlwZV18fHt9O251bGwhPT1sJiYobnVsbD09PW8/aFthXT1sOih1Lm1vZCYmKGwtbz51Lm1vZC8yP28rPXUubW9kOm8tbD51Lm1vZC8yJiYoby09dS5tb2QpKSxoW2FdPWkoKGwtbykqdCtvLG4pKSl9KSx0aGlzW25dKGgpfSxibGVuZDpmdW5jdGlvbih0KXtpZigxPT09dGhpcy5fcmdiYVszXSlyZXR1cm4gdGhpczt2YXIgaT10aGlzLl9yZ2JhLnNsaWNlKCkscz1pLnBvcCgpLG49bCh0KS5fcmdiYTtyZXR1cm4gbChlLm1hcChpLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKDEtcykqblt0XStzKmV9KSl9LHRvUmdiYVN0cmluZzpmdW5jdGlvbigpe3ZhciB0PSJyZ2JhKCIsaT1lLm1hcCh0aGlzLl9yZ2JhLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/dD4yPzE6MDplfSk7cmV0dXJuIDE9PT1pWzNdJiYoaS5wb3AoKSx0PSJyZ2IoIiksdCtpLmpvaW4oKSsiKSJ9LHRvSHNsYVN0cmluZzpmdW5jdGlvbigpe3ZhciB0PSJoc2xhKCIsaT1lLm1hcCh0aGlzLmhzbGEoKSxmdW5jdGlvbihlLHQpe3JldHVybiBudWxsPT1lJiYoZT10PjI/MTowKSx0JiYzPnQmJihlPU1hdGgucm91bmQoMTAwKmUpKyIlIiksZX0pO3JldHVybiAxPT09aVszXSYmKGkucG9wKCksdD0iaHNsKCIpLHQraS5qb2luKCkrIikifSx0b0hleFN0cmluZzpmdW5jdGlvbih0KXt2YXIgaT10aGlzLl9yZ2JhLnNsaWNlKCkscz1pLnBvcCgpO3JldHVybiB0JiZpLnB1c2gofn4oMjU1KnMpKSwiIyIrZS5tYXAoaSxmdW5jdGlvbihlKXtyZXR1cm4gZT0oZXx8MCkudG9TdHJpbmcoMTYpLDE9PT1lLmxlbmd0aD8iMCIrZTplfSkuam9pbigiIil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDA9PT10aGlzLl9yZ2JhWzNdPyJ0cmFuc3BhcmVudCI6dGhpcy50b1JnYmFTdHJpbmcoKX19KSxsLmZuLnBhcnNlLnByb3RvdHlwZT1sLmZuLHUuaHNsYS50bz1mdW5jdGlvbihlKXtpZihudWxsPT1lWzBdfHxudWxsPT1lWzFdfHxudWxsPT1lWzJdKXJldHVybltudWxsLG51bGwsbnVsbCxlWzNdXTt2YXIgdCxpLHM9ZVswXS8yNTUsbj1lWzFdLzI1NSxhPWVbMl0vMjU1LG89ZVszXSxyPU1hdGgubWF4KHMsbixhKSxoPU1hdGgubWluKHMsbixhKSxsPXItaCx1PXIraCxkPS41KnU7cmV0dXJuIHQ9aD09PXI/MDpzPT09cj82MCoobi1hKS9sKzM2MDpuPT09cj82MCooYS1zKS9sKzEyMDo2MCoocy1uKS9sKzI0MCxpPTA9PT1sPzA6LjU+PWQ/bC91OmwvKDItdSksW01hdGgucm91bmQodCklMzYwLGksZCxudWxsPT1vPzE6b119LHUuaHNsYS5mcm9tPWZ1bmN0aW9uKGUpe2lmKG51bGw9PWVbMF18fG51bGw9PWVbMV18fG51bGw9PWVbMl0pcmV0dXJuW251bGwsbnVsbCxudWxsLGVbM11dO3ZhciB0PWVbMF0vMzYwLGk9ZVsxXSxzPWVbMl0sYT1lWzNdLG89LjU+PXM/cyooMStpKTpzK2ktcyppLHI9MipzLW87cmV0dXJuW01hdGgucm91bmQoMjU1Km4ocixvLHQrMS8zKSksTWF0aC5yb3VuZCgyNTUqbihyLG8sdCkpLE1hdGgucm91bmQoMjU1Km4ocixvLHQtMS8zKSksYV19LGYodSxmdW5jdGlvbihzLG4pe3ZhciBhPW4ucHJvcHMsbz1uLmNhY2hlLGg9bi50byx1PW4uZnJvbTtsLmZuW3NdPWZ1bmN0aW9uKHMpe2lmKGgmJiF0aGlzW29dJiYodGhpc1tvXT1oKHRoaXMuX3JnYmEpKSxzPT09dClyZXR1cm4gdGhpc1tvXS5zbGljZSgpO3ZhciBuLHI9ZS50eXBlKHMpLGQ9ImFycmF5Ij09PXJ8fCJvYmplY3QiPT09cj9zOmFyZ3VtZW50cyxjPXRoaXNbb10uc2xpY2UoKTtyZXR1cm4gZihhLGZ1bmN0aW9uKGUsdCl7dmFyIHM9ZFsib2JqZWN0Ij09PXI/ZTp0LmlkeF07bnVsbD09cyYmKHM9Y1t0LmlkeF0pLGNbdC5pZHhdPWkocyx0KX0pLHU/KG49bCh1KGMpKSxuW29dPWMsbik6bChjKX0sZihhLGZ1bmN0aW9uKHQsaSl7bC5mblt0XXx8KGwuZm5bdF09ZnVuY3Rpb24obil7dmFyIGEsbz1lLnR5cGUobiksaD0iYWxwaGEiPT09dD90aGlzLl9oc2xhPyJoc2xhIjoicmdiYSI6cyxsPXRoaXNbaF0oKSx1PWxbaS5pZHhdO3JldHVybiJ1bmRlZmluZWQiPT09bz91OigiZnVuY3Rpb24iPT09byYmKG49bi5jYWxsKHRoaXMsdSksbz1lLnR5cGUobikpLG51bGw9PW4mJmkuZW1wdHk/dGhpczooInN0cmluZyI9PT1vJiYoYT1yLmV4ZWMobiksYSYmKG49dStwYXJzZUZsb2F0KGFbMl0pKigiKyI9PT1hWzFdPzE6LTEpKSksbFtpLmlkeF09bix0aGlzW2hdKGwpKSl9KX0pfSksbC5ob29rPWZ1bmN0aW9uKHQpe3ZhciBpPXQuc3BsaXQoIiAiKTtmKGksZnVuY3Rpb24odCxpKXtlLmNzc0hvb2tzW2ldPXtzZXQ6ZnVuY3Rpb24odCxuKXt2YXIgYSxvLHI9IiI7aWYoInRyYW5zcGFyZW50IiE9PW4mJigic3RyaW5nIiE9PWUudHlwZShuKXx8KGE9cyhuKSkpKXtpZihuPWwoYXx8biksIWMucmdiYSYmMSE9PW4uX3JnYmFbM10pe2ZvcihvPSJiYWNrZ3JvdW5kQ29sb3IiPT09aT90LnBhcmVudE5vZGU6dDsoIiI9PT1yfHwidHJhbnNwYXJlbnQiPT09cikmJm8mJm8uc3R5bGU7KXRyeXtyPWUuY3NzKG8sImJhY2tncm91bmRDb2xvciIpLG89by5wYXJlbnROb2RlfWNhdGNoKGgpe31uPW4uYmxlbmQociYmInRyYW5zcGFyZW50IiE9PXI/cjoiX2RlZmF1bHQiKX1uPW4udG9SZ2JhU3RyaW5nKCl9dHJ5e3Quc3R5bGVbaV09bn1jYXRjaChoKXt9fX0sZS5meC5zdGVwW2ldPWZ1bmN0aW9uKHQpe3QuY29sb3JJbml0fHwodC5zdGFydD1sKHQuZWxlbSxpKSx0LmVuZD1sKHQuZW5kKSx0LmNvbG9ySW5pdD0hMCksZS5jc3NIb29rc1tpXS5zZXQodC5lbGVtLHQuc3RhcnQudHJhbnNpdGlvbih0LmVuZCx0LnBvcykpfX0pfSxsLmhvb2sobyksZS5jc3NIb29rcy5ib3JkZXJDb2xvcj17ZXhwYW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBmKFsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sZnVuY3Rpb24oaSxzKXt0WyJib3JkZXIiK3MrIkNvbG9yIl09ZX0pLHR9fSxhPWUuQ29sb3IubmFtZXM9e2FxdWE6IiMwMGZmZmYiLGJsYWNrOiIjMDAwMDAwIixibHVlOiIjMDAwMGZmIixmdWNoc2lhOiIjZmYwMGZmIixncmF5OiIjODA4MDgwIixncmVlbjoiIzAwODAwMCIsbGltZToiIzAwZmYwMCIsbWFyb29uOiIjODAwMDAwIixuYXZ5OiIjMDAwMDgwIixvbGl2ZToiIzgwODAwMCIscHVycGxlOiIjODAwMDgwIixyZWQ6IiNmZjAwMDAiLHNpbHZlcjoiI2MwYzBjMCIsdGVhbDoiIzAwODA4MCIsd2hpdGU6IiNmZmZmZmYiLHllbGxvdzoiI2ZmZmYwMCIsdHJhbnNwYXJlbnQ6W251bGwsbnVsbCxudWxsLDBdLF9kZWZhdWx0OiIjZmZmZmZmIn19KHApLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt2YXIgaSxzLG49dC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3P3Qub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCk6dC5jdXJyZW50U3R5bGUsYT17fTtpZihuJiZuLmxlbmd0aCYmblswXSYmbltuWzBdXSlmb3Iocz1uLmxlbmd0aDtzLS07KWk9bltzXSwic3RyaW5nIj09dHlwZW9mIG5baV0mJihhW2UuY2FtZWxDYXNlKGkpXT1uW2ldKTtlbHNlIGZvcihpIGluIG4pInN0cmluZyI9PXR5cGVvZiBuW2ldJiYoYVtpXT1uW2ldKTtyZXR1cm4gYX1mdW5jdGlvbiBpKHQsaSl7dmFyIHMsYSxvPXt9O2ZvcihzIGluIGkpYT1pW3NdLHRbc10hPT1hJiYobltzXXx8KGUuZnguc3RlcFtzXXx8IWlzTmFOKHBhcnNlRmxvYXQoYSkpKSYmKG9bc109YSkpO3JldHVybiBvfXZhciBzPVsiYWRkIiwicmVtb3ZlIiwidG9nZ2xlIl0sbj17Ym9yZGVyOjEsYm9yZGVyQm90dG9tOjEsYm9yZGVyQ29sb3I6MSxib3JkZXJMZWZ0OjEsYm9yZGVyUmlnaHQ6MSxib3JkZXJUb3A6MSxib3JkZXJXaWR0aDoxLG1hcmdpbjoxLHBhZGRpbmc6MX07ZS5lYWNoKFsiYm9yZGVyTGVmdFN0eWxlIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJvcmRlckJvdHRvbVN0eWxlIiwiYm9yZGVyVG9wU3R5bGUiXSxmdW5jdGlvbih0LGkpe2UuZnguc3RlcFtpXT1mdW5jdGlvbihlKXsoIm5vbmUiIT09ZS5lbmQmJiFlLnNldEF0dHJ8fDE9PT1lLnBvcyYmIWUuc2V0QXR0cikmJihwLnN0eWxlKGUuZWxlbSxpLGUuZW5kKSxlLnNldEF0dHI9ITApfX0pLGUuZm4uYWRkQmFja3x8KGUuZm4uYWRkQmFjaz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09ZT90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihlKSl9KSxlLmVmZmVjdHMuYW5pbWF0ZUNsYXNzPWZ1bmN0aW9uKG4sYSxvLHIpe3ZhciBoPWUuc3BlZWQoYSxvLHIpO3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIGEsbz1lKHRoaXMpLHI9by5hdHRyKCJjbGFzcyIpfHwiIixsPWguY2hpbGRyZW4/by5maW5kKCIqIikuYWRkQmFjaygpOm87bD1sLm1hcChmdW5jdGlvbigpe3ZhciBpPWUodGhpcyk7cmV0dXJue2VsOmksc3RhcnQ6dCh0aGlzKX19KSxhPWZ1bmN0aW9uKCl7ZS5lYWNoKHMsZnVuY3Rpb24oZSx0KXtuW3RdJiZvW3QrIkNsYXNzIl0oblt0XSl9KX0sYSgpLGw9bC5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmQ9dCh0aGlzLmVsWzBdKSx0aGlzLmRpZmY9aSh0aGlzLnN0YXJ0LHRoaXMuZW5kKSx0aGlzfSksby5hdHRyKCJjbGFzcyIsciksbD1sLm1hcChmdW5jdGlvbigpe3ZhciB0PXRoaXMsaT1lLkRlZmVycmVkKCkscz1lLmV4dGVuZCh7fSxoLHtxdWV1ZTohMSxjb21wbGV0ZTpmdW5jdGlvbigpe2kucmVzb2x2ZSh0KX19KTtyZXR1cm4gdGhpcy5lbC5hbmltYXRlKHRoaXMuZGlmZixzKSxpLnByb21pc2UoKX0pLGUud2hlbi5hcHBseShlLGwuZ2V0KCkpLmRvbmUoZnVuY3Rpb24oKXthKCksZS5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWw7ZS5lYWNoKHRoaXMuZGlmZixmdW5jdGlvbihlKXt0LmNzcyhlLCIiKX0pfSksaC5jb21wbGV0ZS5jYWxsKG9bMF0pfSl9KX0sZS5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihpLHMsbixhKXtyZXR1cm4gcz9lLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7YWRkOml9LHMsbixhKTp0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KGUuZm4uYWRkQ2xhc3MpLHJlbW92ZUNsYXNzOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihpLHMsbixhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xP2UuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHtyZW1vdmU6aX0scyxuLGEpOnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oZS5mbi5yZW1vdmVDbGFzcyksdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGkscyxuLGEsbyl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2Ygc3x8dm9pZCAwPT09cz9uP2UuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHM/e2FkZDppfTp7cmVtb3ZlOml9LG4sYSxvKTp0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTplLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7dG9nZ2xlOml9LHMsbixhKX19KGUuZm4udG9nZ2xlQ2xhc3MpLHN3aXRjaENsYXNzOmZ1bmN0aW9uKHQsaSxzLG4sYSl7cmV0dXJuIGUuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHthZGQ6aSxyZW1vdmU6dH0scyxuLGEpfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGkscyxuKXtyZXR1cm4gZS5pc1BsYWluT2JqZWN0KHQpJiYoaT10LHQ9dC5lZmZlY3QpLHQ9e2VmZmVjdDp0fSxudWxsPT1pJiYoaT17fSksZS5pc0Z1bmN0aW9uKGkpJiYobj1pLHM9bnVsbCxpPXt9KSwoIm51bWJlciI9PXR5cGVvZiBpfHxlLmZ4LnNwZWVkc1tpXSkmJihuPXMscz1pLGk9e30pLGUuaXNGdW5jdGlvbihzKSYmKG49cyxzPW51bGwpLGkmJmUuZXh0ZW5kKHQsaSkscz1zfHxpLmR1cmF0aW9uLHQuZHVyYXRpb249ZS5meC5vZmY/MDoibnVtYmVyIj09dHlwZW9mIHM/czpzIGluIGUuZnguc3BlZWRzP2UuZnguc3BlZWRzW3NdOmUuZnguc3BlZWRzLl9kZWZhdWx0LHQuY29tcGxldGU9bnx8aS5jb21wbGV0ZSx0fWZ1bmN0aW9uIGkodCl7cmV0dXJuIXR8fCJudW1iZXIiPT10eXBlb2YgdHx8ZS5meC5zcGVlZHNbdF0/ITA6InN0cmluZyIhPXR5cGVvZiB0fHxlLmVmZmVjdHMuZWZmZWN0W3RdP2UuaXNGdW5jdGlvbih0KT8hMDoib2JqZWN0IiE9dHlwZW9mIHR8fHQuZWZmZWN0PyExOiEwOiEwfWUuZXh0ZW5kKGUuZWZmZWN0cyx7dmVyc2lvbjoiMS4xMS40IixzYXZlOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBpPTA7dC5sZW5ndGg+aTtpKyspbnVsbCE9PXRbaV0mJmUuZGF0YShjK3RbaV0sZVswXS5zdHlsZVt0W2ldXSl9LHJlc3RvcmU6ZnVuY3Rpb24oZSx0KXt2YXIgaSxzO2ZvcihzPTA7dC5sZW5ndGg+cztzKyspbnVsbCE9PXRbc10mJihpPWUuZGF0YShjK3Rbc10pLHZvaWQgMD09PWkmJihpPSIiKSxlLmNzcyh0W3NdLGkpKX0sc2V0TW9kZTpmdW5jdGlvbihlLHQpe3JldHVybiJ0b2dnbGUiPT09dCYmKHQ9ZS5pcygiOmhpZGRlbiIpPyJzaG93IjoiaGlkZSIpLHR9LGdldEJhc2VsaW5lOmZ1bmN0aW9uKGUsdCl7dmFyIGkscztzd2l0Y2goZVswXSl7Y2FzZSJ0b3AiOmk9MDticmVhaztjYXNlIm1pZGRsZSI6aT0uNTticmVhaztjYXNlImJvdHRvbSI6aT0xO2JyZWFrO2RlZmF1bHQ6aT1lWzBdL3QuaGVpZ2h0fXN3aXRjaChlWzFdKXtjYXNlImxlZnQiOnM9MDticmVhaztjYXNlImNlbnRlciI6cz0uNTticmVhaztjYXNlInJpZ2h0IjpzPTE7YnJlYWs7ZGVmYXVsdDpzPWVbMV0vdC53aWR0aH1yZXR1cm57eDpzLHk6aX19LGNyZWF0ZVdyYXBwZXI6ZnVuY3Rpb24odCl7aWYodC5wYXJlbnQoKS5pcygiLnVpLWVmZmVjdHMtd3JhcHBlciIpKXJldHVybiB0LnBhcmVudCgpO3ZhciBpPXt3aWR0aDp0Lm91dGVyV2lkdGgoITApLGhlaWdodDp0Lm91dGVySGVpZ2h0KCEwKSwiZmxvYXQiOnQuY3NzKCJmbG9hdCIpfSxzPWUoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoInVpLWVmZmVjdHMtd3JhcHBlciIpLmNzcyh7Zm9udFNpemU6IjEwMCUiLGJhY2tncm91bmQ6InRyYW5zcGFyZW50Iixib3JkZXI6Im5vbmUiLG1hcmdpbjowLHBhZGRpbmc6MH0pLG49e3dpZHRoOnQud2lkdGgoKSxoZWlnaHQ6dC5oZWlnaHQoKX0sYT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O3RyeXthLmlkfWNhdGNoKG8pe2E9ZG9jdW1lbnQuYm9keX1yZXR1cm4gdC53cmFwKHMpLCh0WzBdPT09YXx8ZS5jb250YWlucyh0WzBdLGEpKSYmZShhKS5mb2N1cygpLHM9dC5wYXJlbnQoKSwic3RhdGljIj09PXQuY3NzKCJwb3NpdGlvbiIpPyhzLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIn0pLHQuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUifSkpOihlLmV4dGVuZChpLHtwb3NpdGlvbjp0LmNzcygicG9zaXRpb24iKSx6SW5kZXg6dC5jc3MoInotaW5kZXgiKX0pLGUuZWFjaChbInRvcCIsImxlZnQiLCJib3R0b20iLCJyaWdodCJdLGZ1bmN0aW9uKGUscyl7aVtzXT10LmNzcyhzKSxpc05hTihwYXJzZUludChpW3NdLDEwKSkmJihpW3NdPSJhdXRvIil9KSx0LmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6MCxsZWZ0OjAscmlnaHQ6ImF1dG8iLGJvdHRvbToiYXV0byJ9KSksdC5jc3Mobikscy5jc3MoaSkuc2hvdygpfSxyZW1vdmVXcmFwcGVyOmZ1bmN0aW9uKHQpe3ZhciBpPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7cmV0dXJuIHQucGFyZW50KCkuaXMoIi51aS1lZmZlY3RzLXdyYXBwZXIiKSYmKHQucGFyZW50KCkucmVwbGFjZVdpdGgodCksKHRbMF09PT1pfHxlLmNvbnRhaW5zKHRbMF0saSkpJiZlKGkpLmZvY3VzKCkpLHR9LHNldFRyYW5zaXRpb246ZnVuY3Rpb24odCxpLHMsbil7cmV0dXJuIG49bnx8e30sZS5lYWNoKGksZnVuY3Rpb24oZSxpKXt2YXIgYT10LmNzc1VuaXQoaSk7YVswXT4wJiYobltpXT1hWzBdKnMrYVsxXSl9KSxufX0pLGUuZm4uZXh0ZW5kKHtlZmZlY3Q6ZnVuY3Rpb24oKXtmdW5jdGlvbiBpKHQpe2Z1bmN0aW9uIGkoKXtlLmlzRnVuY3Rpb24oYSkmJmEuY2FsbChuWzBdKSxlLmlzRnVuY3Rpb24odCkmJnQoKX12YXIgbj1lKHRoaXMpLGE9cy5jb21wbGV0ZSxyPXMubW9kZTsobi5pcygiOmhpZGRlbiIpPyJoaWRlIj09PXI6InNob3ciPT09cik/KG5bcl0oKSxpKCkpOm8uY2FsbChuWzBdLHMsaSl9dmFyIHM9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksbj1zLm1vZGUsYT1zLnF1ZXVlLG89ZS5lZmZlY3RzLmVmZmVjdFtzLmVmZmVjdF07cmV0dXJuIGUuZngub2ZmfHwhbz9uP3RoaXNbbl0ocy5kdXJhdGlvbixzLmNvbXBsZXRlKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtzLmNvbXBsZXRlJiZzLmNvbXBsZXRlLmNhbGwodGhpcyl9KTphPT09ITE/dGhpcy5lYWNoKGkpOnRoaXMucXVldWUoYXx8ImZ4IixpKX0sc2hvdzpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocyl7aWYoaShzKSlyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG4ubW9kZT0ic2hvdyIsdGhpcy5lZmZlY3QuY2FsbCh0aGlzLG4pfX0oZS5mbi5zaG93KSxoaWRlOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihzKXtpZihpKHMpKXJldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgbj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gbi5tb2RlPSJoaWRlIix0aGlzLmVmZmVjdC5jYWxsKHRoaXMsbil9fShlLmZuLmhpZGUpLHRvZ2dsZTpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24ocyl7aWYoaShzKXx8ImJvb2xlYW4iPT10eXBlb2YgcylyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIG49dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIG4ubW9kZT0idG9nZ2xlIix0aGlzLmVmZmVjdC5jYWxsKHRoaXMsbil9fShlLmZuLnRvZ2dsZSksY3NzVW5pdDpmdW5jdGlvbih0KXt2YXIgaT10aGlzLmNzcyh0KSxzPVtdO3JldHVybiBlLmVhY2goWyJlbSIsInB4IiwiJSIsInB0Il0sZnVuY3Rpb24oZSx0KXtpLmluZGV4T2YodCk+MCYmKHM9W3BhcnNlRmxvYXQoaSksdF0pfSksc319KX0oKSxmdW5jdGlvbigpe3ZhciB0PXt9O2UuZWFjaChbIlF1YWQiLCJDdWJpYyIsIlF1YXJ0IiwiUXVpbnQiLCJFeHBvIl0sZnVuY3Rpb24oZSxpKXt0W2ldPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnBvdyh0LGUrMil9fSksZS5leHRlbmQodCx7U2luZTpmdW5jdGlvbihlKXtyZXR1cm4gMS1NYXRoLmNvcyhlKk1hdGguUEkvMil9LENpcmM6ZnVuY3Rpb24oZSl7cmV0dXJuIDEtTWF0aC5zcXJ0KDEtZSplKX0sRWxhc3RpYzpmdW5jdGlvbihlKXtyZXR1cm4gMD09PWV8fDE9PT1lP2U6LU1hdGgucG93KDIsOCooZS0xKSkqTWF0aC5zaW4oKDgwKihlLTEpLTcuNSkqTWF0aC5QSS8xNSl9LEJhY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIGUqZSooMyplLTIpfSxCb3VuY2U6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0LGk9NDsoKHQ9TWF0aC5wb3coMiwtLWkpKS0xKS8xMT5lOyk7cmV0dXJuIDEvTWF0aC5wb3coNCwzLWkpLTcuNTYyNSpNYXRoLnBvdygoMyp0LTIpLzIyLWUsMil9fSksZS5lYWNoKHQsZnVuY3Rpb24odCxpKXtlLmVhc2luZ1siZWFzZUluIit0XT1pLGUuZWFzaW5nWyJlYXNlT3V0Iit0XT1mdW5jdGlvbihlKXtyZXR1cm4gMS1pKDEtZSl9LGUuZWFzaW5nWyJlYXNlSW5PdXQiK3RdPWZ1bmN0aW9uKGUpe3JldHVybi41PmU/aSgyKmUpLzI6MS1pKC0yKmUrMikvMn19KX0oKSxlLmVmZmVjdHMsZS5lZmZlY3RzLmVmZmVjdC5ibGluZD1mdW5jdGlvbih0LGkpe3ZhciBzLG4sYSxvPWUodGhpcykscj0vdXB8ZG93bnx2ZXJ0aWNhbC8saD0vdXB8bGVmdHx2ZXJ0aWNhbHxob3Jpem9udGFsLyxsPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJoZWlnaHQiLCJ3aWR0aCJdLHU9ZS5lZmZlY3RzLnNldE1vZGUobyx0Lm1vZGV8fCJoaWRlIiksZD10LmRpcmVjdGlvbnx8InVwIixjPXIudGVzdChkKSxwPWM/ImhlaWdodCI6IndpZHRoIixmPWM/InRvcCI6ImxlZnQiLG09aC50ZXN0KGQpLGc9e30sdj0ic2hvdyI9PT11O28ucGFyZW50KCkuaXMoIi51aS1lZmZlY3RzLXdyYXBwZXIiKT9lLmVmZmVjdHMuc2F2ZShvLnBhcmVudCgpLGwpOmUuZWZmZWN0cy5zYXZlKG8sbCksby5zaG93KCkscz1lLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihvKS5jc3Moe292ZXJmbG93OiJoaWRkZW4ifSksbj1zW3BdKCksYT1wYXJzZUZsb2F0KHMuY3NzKGYpKXx8MCxnW3BdPXY/bjowLG18fChvLmNzcyhjPyJib3R0b20iOiJyaWdodCIsMCkuY3NzKGM/InRvcCI6ImxlZnQiLCJhdXRvIikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUifSksZ1tmXT12P2E6bithKSx2JiYocy5jc3MocCwwKSxtfHxzLmNzcyhmLGErbikpLHMuYW5pbWF0ZShnLHtkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxxdWV1ZTohMSxjb21wbGV0ZTpmdW5jdGlvbigpeyJoaWRlIj09PXUmJm8uaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKG8sbCksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobyksaSgpCn19KX0sZS5lZmZlY3RzLmVmZmVjdC5ib3VuY2U9ZnVuY3Rpb24odCxpKXt2YXIgcyxuLGEsbz1lKHRoaXMpLHI9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsImhlaWdodCIsIndpZHRoIl0saD1lLmVmZmVjdHMuc2V0TW9kZShvLHQubW9kZXx8ImVmZmVjdCIpLGw9ImhpZGUiPT09aCx1PSJzaG93Ij09PWgsZD10LmRpcmVjdGlvbnx8InVwIixjPXQuZGlzdGFuY2UscD10LnRpbWVzfHw1LGY9MipwKyh1fHxsPzE6MCksbT10LmR1cmF0aW9uL2YsZz10LmVhc2luZyx2PSJ1cCI9PT1kfHwiZG93biI9PT1kPyJ0b3AiOiJsZWZ0Iix5PSJ1cCI9PT1kfHwibGVmdCI9PT1kLGI9by5xdWV1ZSgpLF89Yi5sZW5ndGg7Zm9yKCh1fHxsKSYmci5wdXNoKCJvcGFjaXR5IiksZS5lZmZlY3RzLnNhdmUobyxyKSxvLnNob3coKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihvKSxjfHwoYz1vWyJ0b3AiPT09dj8ib3V0ZXJIZWlnaHQiOiJvdXRlcldpZHRoIl0oKS8zKSx1JiYoYT17b3BhY2l0eToxfSxhW3ZdPTAsby5jc3MoIm9wYWNpdHkiLDApLmNzcyh2LHk/MiotYzoyKmMpLmFuaW1hdGUoYSxtLGcpKSxsJiYoYy89TWF0aC5wb3coMixwLTEpKSxhPXt9LGFbdl09MCxzPTA7cD5zO3MrKyluPXt9LG5bdl09KHk/Ii09IjoiKz0iKStjLG8uYW5pbWF0ZShuLG0sZykuYW5pbWF0ZShhLG0sZyksYz1sPzIqYzpjLzI7bCYmKG49e29wYWNpdHk6MH0sblt2XT0oeT8iLT0iOiIrPSIpK2Msby5hbmltYXRlKG4sbSxnKSksby5xdWV1ZShmdW5jdGlvbigpe2wmJm8uaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKG8sciksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobyksaSgpfSksXz4xJiZiLnNwbGljZS5hcHBseShiLFsxLDBdLmNvbmNhdChiLnNwbGljZShfLGYrMSkpKSxvLmRlcXVldWUoKX0sZS5lZmZlY3RzLmVmZmVjdC5jbGlwPWZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhLG89ZSh0aGlzKSxyPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJoZWlnaHQiLCJ3aWR0aCJdLGg9ZS5lZmZlY3RzLnNldE1vZGUobyx0Lm1vZGV8fCJoaWRlIiksbD0ic2hvdyI9PT1oLHU9dC5kaXJlY3Rpb258fCJ2ZXJ0aWNhbCIsZD0idmVydGljYWwiPT09dSxjPWQ/ImhlaWdodCI6IndpZHRoIixwPWQ/InRvcCI6ImxlZnQiLGY9e307ZS5lZmZlY3RzLnNhdmUobyxyKSxvLnNob3coKSxzPWUuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKG8pLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiJ9KSxuPSJJTUciPT09b1swXS50YWdOYW1lP3M6byxhPW5bY10oKSxsJiYobi5jc3MoYywwKSxuLmNzcyhwLGEvMikpLGZbY109bD9hOjAsZltwXT1sPzA6YS8yLG4uYW5pbWF0ZShmLHtxdWV1ZTohMSxkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe2x8fG8uaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKG8sciksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobyksaSgpfX0pfSxlLmVmZmVjdHMuZWZmZWN0LmRyb3A9ZnVuY3Rpb24odCxpKXt2YXIgcyxuPWUodGhpcyksYT1bInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Iiwib3BhY2l0eSIsImhlaWdodCIsIndpZHRoIl0sbz1lLmVmZmVjdHMuc2V0TW9kZShuLHQubW9kZXx8ImhpZGUiKSxyPSJzaG93Ij09PW8saD10LmRpcmVjdGlvbnx8ImxlZnQiLGw9InVwIj09PWh8fCJkb3duIj09PWg/InRvcCI6ImxlZnQiLHU9InVwIj09PWh8fCJsZWZ0Ij09PWg/InBvcyI6Im5lZyIsZD17b3BhY2l0eTpyPzE6MH07ZS5lZmZlY3RzLnNhdmUobixhKSxuLnNob3coKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihuKSxzPXQuZGlzdGFuY2V8fG5bInRvcCI9PT1sPyJvdXRlckhlaWdodCI6Im91dGVyV2lkdGgiXSghMCkvMixyJiZuLmNzcygib3BhY2l0eSIsMCkuY3NzKGwsInBvcyI9PT11Py1zOnMpLGRbbF09KHI/InBvcyI9PT11PyIrPSI6Ii09IjoicG9zIj09PXU/Ii09IjoiKz0iKStzLG4uYW5pbWF0ZShkLHtxdWV1ZTohMSxkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpeyJoaWRlIj09PW8mJm4uaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKG4sYSksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobiksaSgpfX0pfSxlLmVmZmVjdHMuZWZmZWN0LmV4cGxvZGU9ZnVuY3Rpb24odCxpKXtmdW5jdGlvbiBzKCl7Yi5wdXNoKHRoaXMpLGIubGVuZ3RoPT09ZCpjJiZuKCl9ZnVuY3Rpb24gbigpe3AuY3NzKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIn0pLGUoYikucmVtb3ZlKCksbXx8cC5oaWRlKCksaSgpfXZhciBhLG8scixoLGwsdSxkPXQucGllY2VzP01hdGgucm91bmQoTWF0aC5zcXJ0KHQucGllY2VzKSk6MyxjPWQscD1lKHRoaXMpLGY9ZS5lZmZlY3RzLnNldE1vZGUocCx0Lm1vZGV8fCJoaWRlIiksbT0ic2hvdyI9PT1mLGc9cC5zaG93KCkuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIikub2Zmc2V0KCksdj1NYXRoLmNlaWwocC5vdXRlcldpZHRoKCkvYykseT1NYXRoLmNlaWwocC5vdXRlckhlaWdodCgpL2QpLGI9W107Zm9yKGE9MDtkPmE7YSsrKWZvcihoPWcudG9wK2EqeSx1PWEtKGQtMSkvMixvPTA7Yz5vO28rKylyPWcubGVmdCtvKnYsbD1vLShjLTEpLzIscC5jbG9uZSgpLmFwcGVuZFRvKCJib2R5Iikud3JhcCgiPGRpdj48L2Rpdj4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToidmlzaWJsZSIsbGVmdDotbyp2LHRvcDotYSp5fSkucGFyZW50KCkuYWRkQ2xhc3MoInVpLWVmZmVjdHMtZXhwbG9kZSIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixvdmVyZmxvdzoiaGlkZGVuIix3aWR0aDp2LGhlaWdodDp5LGxlZnQ6cisobT9sKnY6MCksdG9wOmgrKG0/dSp5OjApLG9wYWNpdHk6bT8wOjF9KS5hbmltYXRlKHtsZWZ0OnIrKG0/MDpsKnYpLHRvcDpoKyhtPzA6dSp5KSxvcGFjaXR5Om0/MTowfSx0LmR1cmF0aW9ufHw1MDAsdC5lYXNpbmcscyl9LGUuZWZmZWN0cy5lZmZlY3QuZmFkZT1mdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcyksbj1lLmVmZmVjdHMuc2V0TW9kZShzLHQubW9kZXx8InRvZ2dsZSIpO3MuYW5pbWF0ZSh7b3BhY2l0eTpufSx7cXVldWU6ITEsZHVyYXRpb246dC5kdXJhdGlvbixlYXNpbmc6dC5lYXNpbmcsY29tcGxldGU6aX0pfSxlLmVmZmVjdHMuZWZmZWN0LmZvbGQ9ZnVuY3Rpb24odCxpKXt2YXIgcyxuLGE9ZSh0aGlzKSxvPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJoZWlnaHQiLCJ3aWR0aCJdLHI9ZS5lZmZlY3RzLnNldE1vZGUoYSx0Lm1vZGV8fCJoaWRlIiksaD0ic2hvdyI9PT1yLGw9ImhpZGUiPT09cix1PXQuc2l6ZXx8MTUsZD0vKFswLTldKyklLy5leGVjKHUpLGM9ISF0Lmhvcml6Rmlyc3QscD1oIT09YyxmPXA/WyJ3aWR0aCIsImhlaWdodCJdOlsiaGVpZ2h0Iiwid2lkdGgiXSxtPXQuZHVyYXRpb24vMixnPXt9LHY9e307ZS5lZmZlY3RzLnNhdmUoYSxvKSxhLnNob3coKSxzPWUuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKGEpLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiJ9KSxuPXA/W3Mud2lkdGgoKSxzLmhlaWdodCgpXTpbcy5oZWlnaHQoKSxzLndpZHRoKCldLGQmJih1PXBhcnNlSW50KGRbMV0sMTApLzEwMCpuW2w/MDoxXSksaCYmcy5jc3MoYz97aGVpZ2h0OjAsd2lkdGg6dX06e2hlaWdodDp1LHdpZHRoOjB9KSxnW2ZbMF1dPWg/blswXTp1LHZbZlsxXV09aD9uWzFdOjAscy5hbmltYXRlKGcsbSx0LmVhc2luZykuYW5pbWF0ZSh2LG0sdC5lYXNpbmcsZnVuY3Rpb24oKXtsJiZhLmhpZGUoKSxlLmVmZmVjdHMucmVzdG9yZShhLG8pLGUuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKGEpLGkoKX0pfSxlLmVmZmVjdHMuZWZmZWN0LmhpZ2hsaWdodD1mdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcyksbj1bImJhY2tncm91bmRJbWFnZSIsImJhY2tncm91bmRDb2xvciIsIm9wYWNpdHkiXSxhPWUuZWZmZWN0cy5zZXRNb2RlKHMsdC5tb2RlfHwic2hvdyIpLG89e2JhY2tncm91bmRDb2xvcjpzLmNzcygiYmFja2dyb3VuZENvbG9yIil9OyJoaWRlIj09PWEmJihvLm9wYWNpdHk9MCksZS5lZmZlY3RzLnNhdmUocyxuKSxzLnNob3coKS5jc3Moe2JhY2tncm91bmRJbWFnZToibm9uZSIsYmFja2dyb3VuZENvbG9yOnQuY29sb3J8fCIjZmZmZjk5In0pLmFuaW1hdGUobyx7cXVldWU6ITEsZHVyYXRpb246dC5kdXJhdGlvbixlYXNpbmc6dC5lYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXsiaGlkZSI9PT1hJiZzLmhpZGUoKSxlLmVmZmVjdHMucmVzdG9yZShzLG4pLGkoKX19KX0sZS5lZmZlY3RzLmVmZmVjdC5zaXplPWZ1bmN0aW9uKHQsaSl7dmFyIHMsbixhLG89ZSh0aGlzKSxyPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93Iiwib3BhY2l0eSJdLGg9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsIm92ZXJmbG93Iiwib3BhY2l0eSJdLGw9WyJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93Il0sdT1bImZvbnRTaXplIl0sZD1bImJvcmRlclRvcFdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLGM9WyJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxwPWUuZWZmZWN0cy5zZXRNb2RlKG8sdC5tb2RlfHwiZWZmZWN0IiksZj10LnJlc3RvcmV8fCJlZmZlY3QiIT09cCxtPXQuc2NhbGV8fCJib3RoIixnPXQub3JpZ2lufHxbIm1pZGRsZSIsImNlbnRlciJdLHY9by5jc3MoInBvc2l0aW9uIikseT1mP3I6aCxiPXtoZWlnaHQ6MCx3aWR0aDowLG91dGVySGVpZ2h0OjAsb3V0ZXJXaWR0aDowfTsic2hvdyI9PT1wJiZvLnNob3coKSxzPXtoZWlnaHQ6by5oZWlnaHQoKSx3aWR0aDpvLndpZHRoKCksb3V0ZXJIZWlnaHQ6by5vdXRlckhlaWdodCgpLG91dGVyV2lkdGg6by5vdXRlcldpZHRoKCl9LCJ0b2dnbGUiPT09dC5tb2RlJiYic2hvdyI9PT1wPyhvLmZyb209dC50b3x8YixvLnRvPXQuZnJvbXx8cyk6KG8uZnJvbT10LmZyb218fCgic2hvdyI9PT1wP2I6cyksby50bz10LnRvfHwoImhpZGUiPT09cD9iOnMpKSxhPXtmcm9tOnt5Om8uZnJvbS5oZWlnaHQvcy5oZWlnaHQseDpvLmZyb20ud2lkdGgvcy53aWR0aH0sdG86e3k6by50by5oZWlnaHQvcy5oZWlnaHQseDpvLnRvLndpZHRoL3Mud2lkdGh9fSwoImJveCI9PT1tfHwiYm90aCI9PT1tKSYmKGEuZnJvbS55IT09YS50by55JiYoeT15LmNvbmNhdChkKSxvLmZyb209ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24obyxkLGEuZnJvbS55LG8uZnJvbSksby50bz1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihvLGQsYS50by55LG8udG8pKSxhLmZyb20ueCE9PWEudG8ueCYmKHk9eS5jb25jYXQoYyksby5mcm9tPWUuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKG8sYyxhLmZyb20ueCxvLmZyb20pLG8udG89ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24obyxjLGEudG8ueCxvLnRvKSkpLCgiY29udGVudCI9PT1tfHwiYm90aCI9PT1tKSYmYS5mcm9tLnkhPT1hLnRvLnkmJih5PXkuY29uY2F0KHUpLmNvbmNhdChsKSxvLmZyb209ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24obyx1LGEuZnJvbS55LG8uZnJvbSksby50bz1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihvLHUsYS50by55LG8udG8pKSxlLmVmZmVjdHMuc2F2ZShvLHkpLG8uc2hvdygpLGUuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKG8pLG8uY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpLmNzcyhvLmZyb20pLGcmJihuPWUuZWZmZWN0cy5nZXRCYXNlbGluZShnLHMpLG8uZnJvbS50b3A9KHMub3V0ZXJIZWlnaHQtby5vdXRlckhlaWdodCgpKSpuLnksby5mcm9tLmxlZnQ9KHMub3V0ZXJXaWR0aC1vLm91dGVyV2lkdGgoKSkqbi54LG8udG8udG9wPShzLm91dGVySGVpZ2h0LW8udG8ub3V0ZXJIZWlnaHQpKm4ueSxvLnRvLmxlZnQ9KHMub3V0ZXJXaWR0aC1vLnRvLm91dGVyV2lkdGgpKm4ueCksby5jc3Moby5mcm9tKSwoImNvbnRlbnQiPT09bXx8ImJvdGgiPT09bSkmJihkPWQuY29uY2F0KFsibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIl0pLmNvbmNhdCh1KSxjPWMuY29uY2F0KFsibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0Il0pLGw9ci5jb25jYXQoZCkuY29uY2F0KGMpLG8uZmluZCgiKlt3aWR0aF0iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9ZSh0aGlzKSxzPXtoZWlnaHQ6aS5oZWlnaHQoKSx3aWR0aDppLndpZHRoKCksb3V0ZXJIZWlnaHQ6aS5vdXRlckhlaWdodCgpLG91dGVyV2lkdGg6aS5vdXRlcldpZHRoKCl9O2YmJmUuZWZmZWN0cy5zYXZlKGksbCksaS5mcm9tPXtoZWlnaHQ6cy5oZWlnaHQqYS5mcm9tLnksd2lkdGg6cy53aWR0aCphLmZyb20ueCxvdXRlckhlaWdodDpzLm91dGVySGVpZ2h0KmEuZnJvbS55LG91dGVyV2lkdGg6cy5vdXRlcldpZHRoKmEuZnJvbS54fSxpLnRvPXtoZWlnaHQ6cy5oZWlnaHQqYS50by55LHdpZHRoOnMud2lkdGgqYS50by54LG91dGVySGVpZ2h0OnMuaGVpZ2h0KmEudG8ueSxvdXRlcldpZHRoOnMud2lkdGgqYS50by54fSxhLmZyb20ueSE9PWEudG8ueSYmKGkuZnJvbT1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihpLGQsYS5mcm9tLnksaS5mcm9tKSxpLnRvPWUuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGksZCxhLnRvLnksaS50bykpLGEuZnJvbS54IT09YS50by54JiYoaS5mcm9tPWUuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKGksYyxhLmZyb20ueCxpLmZyb20pLGkudG89ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24oaSxjLGEudG8ueCxpLnRvKSksaS5jc3MoaS5mcm9tKSxpLmFuaW1hdGUoaS50byx0LmR1cmF0aW9uLHQuZWFzaW5nLGZ1bmN0aW9uKCl7ZiYmZS5lZmZlY3RzLnJlc3RvcmUoaSxsKX0pfSkpLG8uYW5pbWF0ZShvLnRvLHtxdWV1ZTohMSxkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpezA9PT1vLnRvLm9wYWNpdHkmJm8uY3NzKCJvcGFjaXR5IixvLmZyb20ub3BhY2l0eSksImhpZGUiPT09cCYmby5oaWRlKCksZS5lZmZlY3RzLnJlc3RvcmUobyx5KSxmfHwoInN0YXRpYyI9PT12P28uY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUiLHRvcDpvLnRvLnRvcCxsZWZ0Om8udG8ubGVmdH0pOmUuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihlLHQpe28uY3NzKHQsZnVuY3Rpb24odCxpKXt2YXIgcz1wYXJzZUludChpLDEwKSxuPWU/by50by5sZWZ0Om8udG8udG9wO3JldHVybiJhdXRvIj09PWk/bisicHgiOnMrbisicHgifSl9KSksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIobyksaSgpfX0pfSxlLmVmZmVjdHMuZWZmZWN0LnNjYWxlPWZ1bmN0aW9uKHQsaSl7dmFyIHM9ZSh0aGlzKSxuPWUuZXh0ZW5kKCEwLHt9LHQpLGE9ZS5lZmZlY3RzLnNldE1vZGUocyx0Lm1vZGV8fCJlZmZlY3QiKSxvPXBhcnNlSW50KHQucGVyY2VudCwxMCl8fCgwPT09cGFyc2VJbnQodC5wZXJjZW50LDEwKT8wOiJoaWRlIj09PWE/MDoxMDApLHI9dC5kaXJlY3Rpb258fCJib3RoIixoPXQub3JpZ2luLGw9e2hlaWdodDpzLmhlaWdodCgpLHdpZHRoOnMud2lkdGgoKSxvdXRlckhlaWdodDpzLm91dGVySGVpZ2h0KCksb3V0ZXJXaWR0aDpzLm91dGVyV2lkdGgoKX0sdT17eToiaG9yaXpvbnRhbCIhPT1yP28vMTAwOjEseDoidmVydGljYWwiIT09cj9vLzEwMDoxfTtuLmVmZmVjdD0ic2l6ZSIsbi5xdWV1ZT0hMSxuLmNvbXBsZXRlPWksImVmZmVjdCIhPT1hJiYobi5vcmlnaW49aHx8WyJtaWRkbGUiLCJjZW50ZXIiXSxuLnJlc3RvcmU9ITApLG4uZnJvbT10LmZyb218fCgic2hvdyI9PT1hP3toZWlnaHQ6MCx3aWR0aDowLG91dGVySGVpZ2h0OjAsb3V0ZXJXaWR0aDowfTpsKSxuLnRvPXtoZWlnaHQ6bC5oZWlnaHQqdS55LHdpZHRoOmwud2lkdGgqdS54LG91dGVySGVpZ2h0Omwub3V0ZXJIZWlnaHQqdS55LG91dGVyV2lkdGg6bC5vdXRlcldpZHRoKnUueH0sbi5mYWRlJiYoInNob3ciPT09YSYmKG4uZnJvbS5vcGFjaXR5PTAsbi50by5vcGFjaXR5PTEpLCJoaWRlIj09PWEmJihuLmZyb20ub3BhY2l0eT0xLG4udG8ub3BhY2l0eT0wKSkscy5lZmZlY3Qobil9LGUuZWZmZWN0cy5lZmZlY3QucHVmZj1mdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcyksbj1lLmVmZmVjdHMuc2V0TW9kZShzLHQubW9kZXx8ImhpZGUiKSxhPSJoaWRlIj09PW4sbz1wYXJzZUludCh0LnBlcmNlbnQsMTApfHwxNTAscj1vLzEwMCxoPXtoZWlnaHQ6cy5oZWlnaHQoKSx3aWR0aDpzLndpZHRoKCksb3V0ZXJIZWlnaHQ6cy5vdXRlckhlaWdodCgpLG91dGVyV2lkdGg6cy5vdXRlcldpZHRoKCl9O2UuZXh0ZW5kKHQse2VmZmVjdDoic2NhbGUiLHF1ZXVlOiExLGZhZGU6ITAsbW9kZTpuLGNvbXBsZXRlOmkscGVyY2VudDphP286MTAwLGZyb206YT9oOntoZWlnaHQ6aC5oZWlnaHQqcix3aWR0aDpoLndpZHRoKnIsb3V0ZXJIZWlnaHQ6aC5vdXRlckhlaWdodCpyLG91dGVyV2lkdGg6aC5vdXRlcldpZHRoKnJ9fSkscy5lZmZlY3QodCl9LGUuZWZmZWN0cy5lZmZlY3QucHVsc2F0ZT1mdW5jdGlvbih0LGkpe3ZhciBzLG49ZSh0aGlzKSxhPWUuZWZmZWN0cy5zZXRNb2RlKG4sdC5tb2RlfHwic2hvdyIpLG89InNob3ciPT09YSxyPSJoaWRlIj09PWEsaD1vfHwiaGlkZSI9PT1hLGw9MioodC50aW1lc3x8NSkrKGg/MTowKSx1PXQuZHVyYXRpb24vbCxkPTAsYz1uLnF1ZXVlKCkscD1jLmxlbmd0aDtmb3IoKG98fCFuLmlzKCI6dmlzaWJsZSIpKSYmKG4uY3NzKCJvcGFjaXR5IiwwKS5zaG93KCksZD0xKSxzPTE7bD5zO3MrKyluLmFuaW1hdGUoe29wYWNpdHk6ZH0sdSx0LmVhc2luZyksZD0xLWQ7bi5hbmltYXRlKHtvcGFjaXR5OmR9LHUsdC5lYXNpbmcpLG4ucXVldWUoZnVuY3Rpb24oKXtyJiZuLmhpZGUoKSxpKCl9KSxwPjEmJmMuc3BsaWNlLmFwcGx5KGMsWzEsMF0uY29uY2F0KGMuc3BsaWNlKHAsbCsxKSkpLG4uZGVxdWV1ZSgpfSxlLmVmZmVjdHMuZWZmZWN0LnNoYWtlPWZ1bmN0aW9uKHQsaSl7dmFyIHMsbj1lKHRoaXMpLGE9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsImhlaWdodCIsIndpZHRoIl0sbz1lLmVmZmVjdHMuc2V0TW9kZShuLHQubW9kZXx8ImVmZmVjdCIpLHI9dC5kaXJlY3Rpb258fCJsZWZ0IixoPXQuZGlzdGFuY2V8fDIwLGw9dC50aW1lc3x8Myx1PTIqbCsxLGQ9TWF0aC5yb3VuZCh0LmR1cmF0aW9uL3UpLGM9InVwIj09PXJ8fCJkb3duIj09PXI/InRvcCI6ImxlZnQiLHA9InVwIj09PXJ8fCJsZWZ0Ij09PXIsZj17fSxtPXt9LGc9e30sdj1uLnF1ZXVlKCkseT12Lmxlbmd0aDtmb3IoZS5lZmZlY3RzLnNhdmUobixhKSxuLnNob3coKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihuKSxmW2NdPShwPyItPSI6Iis9IikraCxtW2NdPShwPyIrPSI6Ii09IikrMipoLGdbY109KHA/Ii09IjoiKz0iKSsyKmgsbi5hbmltYXRlKGYsZCx0LmVhc2luZykscz0xO2w+cztzKyspbi5hbmltYXRlKG0sZCx0LmVhc2luZykuYW5pbWF0ZShnLGQsdC5lYXNpbmcpO24uYW5pbWF0ZShtLGQsdC5lYXNpbmcpLmFuaW1hdGUoZixkLzIsdC5lYXNpbmcpLnF1ZXVlKGZ1bmN0aW9uKCl7ImhpZGUiPT09byYmbi5oaWRlKCksZS5lZmZlY3RzLnJlc3RvcmUobixhKSxlLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihuKSxpKCl9KSx5PjEmJnYuc3BsaWNlLmFwcGx5KHYsWzEsMF0uY29uY2F0KHYuc3BsaWNlKHksdSsxKSkpLG4uZGVxdWV1ZSgpfSxlLmVmZmVjdHMuZWZmZWN0LnNsaWRlPWZ1bmN0aW9uKHQsaSl7dmFyIHMsbj1lKHRoaXMpLGE9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsIndpZHRoIiwiaGVpZ2h0Il0sbz1lLmVmZmVjdHMuc2V0TW9kZShuLHQubW9kZXx8InNob3ciKSxyPSJzaG93Ij09PW8saD10LmRpcmVjdGlvbnx8ImxlZnQiLGw9InVwIj09PWh8fCJkb3duIj09PWg/InRvcCI6ImxlZnQiLHU9InVwIj09PWh8fCJsZWZ0Ij09PWgsZD17fTtlLmVmZmVjdHMuc2F2ZShuLGEpLG4uc2hvdygpLHM9dC5kaXN0YW5jZXx8blsidG9wIj09PWw/Im91dGVySGVpZ2h0Ijoib3V0ZXJXaWR0aCJdKCEwKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihuKS5jc3Moe292ZXJmbG93OiJoaWRkZW4ifSksciYmbi5jc3MobCx1P2lzTmFOKHMpPyItIitzOi1zOnMpLGRbbF09KHI/dT8iKz0iOiItPSI6dT8iLT0iOiIrPSIpK3Msbi5hbmltYXRlKGQse3F1ZXVlOiExLGR1cmF0aW9uOnQuZHVyYXRpb24sZWFzaW5nOnQuZWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7ImhpZGUiPT09byYmbi5oaWRlKCksZS5lZmZlY3RzLnJlc3RvcmUobixhKSxlLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihuKSxpKCl9fSl9LGUuZWZmZWN0cy5lZmZlY3QudHJhbnNmZXI9ZnVuY3Rpb24odCxpKXt2YXIgcz1lKHRoaXMpLG49ZSh0LnRvKSxhPSJmaXhlZCI9PT1uLmNzcygicG9zaXRpb24iKSxvPWUoImJvZHkiKSxyPWE/by5zY3JvbGxUb3AoKTowLGg9YT9vLnNjcm9sbExlZnQoKTowLGw9bi5vZmZzZXQoKSx1PXt0b3A6bC50b3AtcixsZWZ0OmwubGVmdC1oLGhlaWdodDpuLmlubmVySGVpZ2h0KCksd2lkdGg6bi5pbm5lcldpZHRoKCl9LGQ9cy5vZmZzZXQoKSxjPWUoIjxkaXYgY2xhc3M9J3VpLWVmZmVjdHMtdHJhbnNmZXInPjwvZGl2PiIpLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpLmFkZENsYXNzKHQuY2xhc3NOYW1lKS5jc3Moe3RvcDpkLnRvcC1yLGxlZnQ6ZC5sZWZ0LWgsaGVpZ2h0OnMuaW5uZXJIZWlnaHQoKSx3aWR0aDpzLmlubmVyV2lkdGgoKSxwb3NpdGlvbjphPyJmaXhlZCI6ImFic29sdXRlIn0pLmFuaW1hdGUodSx0LmR1cmF0aW9uLHQuZWFzaW5nLGZ1bmN0aW9uKCl7Yy5yZW1vdmUoKSxpKCl9KX19KTs="></script>
|
|
<link href="data:text/css,%0A%0A%2Etocify%20%7B%0Awidth%3A%2020%25%3B%0Amax%2Dheight%3A%2090%25%3B%0Aoverflow%3A%20auto%3B%0Amargin%2Dleft%3A%202%25%3B%0Aposition%3A%20fixed%3B%0Aborder%3A%201px%20solid%20%23ccc%3B%0Aborder%2Dradius%3A%206px%3B%0A%7D%0A%0A%2Etocify%20ul%2C%20%2Etocify%20li%20%7B%0Alist%2Dstyle%3A%20none%3B%0Amargin%3A%200%3B%0Apadding%3A%200%3B%0Aborder%3A%20none%3B%0Aline%2Dheight%3A%2030px%3B%0A%7D%0A%0A%2Etocify%2Dheader%20%7B%0Atext%2Dindent%3A%2010px%3B%0A%7D%0A%0A%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2020px%3B%0Adisplay%3A%20none%3B%0A%7D%0A%0A%2Etocify%2Dsubheader%20li%20%7B%0Afont%2Dsize%3A%2012px%3B%0A%7D%0A%0A%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2030px%3B%0A%7D%0A%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2040px%3B%0A%7D%0A%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2050px%3B%0A%7D%0A%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%2Etocify%2Dsubheader%20%7B%0Atext%2Dindent%3A%2060px%3B%0A%7D%0A%0A%2Etocify%20%2Etocify%2Ditem%20%3E%20a%2C%20%2Etocify%20%2Enav%2Dlist%20%2Enav%2Dheader%20%7B%0Amargin%3A%200px%3B%0A%7D%0A%0A%2Etocify%20%2Etocify%2Ditem%20a%2C%20%2Etocify%20%2Elist%2Dgroup%2Ditem%20%7B%0Apadding%3A%205px%3B%0A%7D%0A%2Etocify%20%2Enav%2Dpills%20%3E%20li%20%7B%0Afloat%3A%20none%3B%0A%7D%0A%0A%0A" rel="stylesheet" />
|
|
<script src="data:application/javascript;base64,LyoganF1ZXJ5IFRvY2lmeSAtIHYxLjkuMSAtIDIwMTMtMTAtMjIKICogaHR0cDovL3d3dy5ncmVnZnJhbmtvLmNvbS9qcXVlcnkudG9jaWZ5LmpzLwogKiBDb3B5cmlnaHQgKGMpIDIwMTMgR3JlZyBGcmFua287IExpY2Vuc2VkIE1JVCAqLwoKLy8gSW1tZWRpYXRlbHktSW52b2tlZCBGdW5jdGlvbiBFeHByZXNzaW9uIChJSUZFKSBbQmVuIEFsbWFuIEJsb2cgUG9zdF0oaHR0cDovL2JlbmFsbWFuLmNvbS9uZXdzLzIwMTAvMTEvaW1tZWRpYXRlbHktaW52b2tlZC1mdW5jdGlvbi1leHByZXNzaW9uLykgdGhhdCBjYWxscyBhbm90aGVyIElJRkUgdGhhdCBjb250YWlucyBhbGwgb2YgdGhlIHBsdWdpbiBsb2dpYy4gIEkgdXNlZCB0aGlzIHBhdHRlcm4gc28gdGhhdCBhbnlvbmUgdmlld2luZyB0aGlzIGNvZGUgd291bGQgbm90IGhhdmUgdG8gc2Nyb2xsIHRvIHRoZSBib3R0b20gb2YgdGhlIHBhZ2UgdG8gdmlldyB0aGUgbG9jYWwgcGFyYW1ldGVycyB0aGF0IHdlcmUgcGFzc2VkIHRvIHRoZSBtYWluIElJRkUuCihmdW5jdGlvbih0b2NpZnkpIHsKCiAgICAvLyBFQ01BU2NyaXB0IDUgU3RyaWN0IE1vZGU6IFtKb2huIFJlc2lnIEJsb2cgUG9zdF0oaHR0cDovL2Vqb2huLm9yZy9ibG9nL2VjbWFzY3JpcHQtNS1zdHJpY3QtbW9kZS1qc29uLWFuZC1tb3JlLykKICAgICJ1c2Ugc3RyaWN0IjsKCiAgICAvLyBDYWxscyB0aGUgc2Vjb25kIElJRkUgYW5kIGxvY2FsbHkgcGFzc2VzIGluIHRoZSBnbG9iYWwgalF1ZXJ5LCB3aW5kb3csIGFuZCBkb2N1bWVudCBvYmplY3RzCiAgICB0b2NpZnkod2luZG93LmpRdWVyeSwgd2luZG93LCBkb2N1bWVudCk7CgogIH0KCiAgLy8gTG9jYWxseSBwYXNzZXMgaW4gYGpRdWVyeWAsIHRoZSBgd2luZG93YCBvYmplY3QsIHRoZSBgZG9jdW1lbnRgIG9iamVjdCwgYW5kIGFuIGB1bmRlZmluZWRgIHZhcmlhYmxlLiAgVGhlIGBqUXVlcnlgLCBgd2luZG93YCBhbmQgYGRvY3VtZW50YCBvYmplY3RzIGFyZSBwYXNzZWQgaW4gbG9jYWxseSwgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSwgc2luY2UgamF2YXNjcmlwdCBmaXJzdCBzZWFyY2hlcyBmb3IgYSB2YXJpYWJsZSBtYXRjaCB3aXRoaW4gdGhlIGxvY2FsIHZhcmlhYmxlcyBzZXQgYmVmb3JlIHNlYXJjaGluZyB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBzZXQuICBBbGwgb2YgdGhlIGdsb2JhbCB2YXJpYWJsZXMgYXJlIGFsc28gcGFzc2VkIGluIGxvY2FsbHkgdG8gYmUgbWluaWZpZXIgZnJpZW5kbHkuIGB1bmRlZmluZWRgIGNhbiBiZSBwYXNzZWQgaW4gbG9jYWxseSwgYmVjYXVzZSBpdCBpcyBub3QgYSByZXNlcnZlZCB3b3JkIGluIEphdmFTY3JpcHQuCiAgKGZ1bmN0aW9uKCQsIHdpbmRvdywgZG9jdW1lbnQsIHVuZGVmaW5lZCkgewoKICAgIC8vIEVDTUFTY3JpcHQgNSBTdHJpY3QgTW9kZTogW0pvaG4gUmVzaWcgQmxvZyBQb3N0XShodHRwOi8vZWpvaG4ub3JnL2Jsb2cvZWNtYXNjcmlwdC01LXN0cmljdC1tb2RlLWpzb24tYW5kLW1vcmUvKQogICAgInVzZSBzdHJpY3QiOwoKICAgIHZhciB0b2NDbGFzc05hbWUgPSAidG9jaWZ5IiwKICAgICAgdG9jQ2xhc3MgPSAiLiIgKyB0b2NDbGFzc05hbWUsCiAgICAgIHRvY0ZvY3VzQ2xhc3NOYW1lID0gInRvY2lmeS1mb2N1cyIsCiAgICAgIHRvY0hvdmVyQ2xhc3NOYW1lID0gInRvY2lmeS1ob3ZlciIsCiAgICAgIGhpZGVUb2NDbGFzc05hbWUgPSAidG9jaWZ5LWhpZGUiLAogICAgICBoaWRlVG9jQ2xhc3MgPSAiLiIgKyBoaWRlVG9jQ2xhc3NOYW1lLAogICAgICBoZWFkZXJDbGFzc05hbWUgPSAidG9jaWZ5LWhlYWRlciIsCiAgICAgIGhlYWRlckNsYXNzID0gIi4iICsgaGVhZGVyQ2xhc3NOYW1lLAogICAgICBzdWJoZWFkZXJDbGFzc05hbWUgPSAidG9jaWZ5LXN1YmhlYWRlciIsCiAgICAgIHN1YmhlYWRlckNsYXNzID0gIi4iICsgc3ViaGVhZGVyQ2xhc3NOYW1lLAogICAgICBpdGVtQ2xhc3NOYW1lID0gInRvY2lmeS1pdGVtIiwKICAgICAgaXRlbUNsYXNzID0gIi4iICsgaXRlbUNsYXNzTmFtZSwKICAgICAgZXh0ZW5kUGFnZUNsYXNzTmFtZSA9ICJ0b2NpZnktZXh0ZW5kLXBhZ2UiLAogICAgICBleHRlbmRQYWdlQ2xhc3MgPSAiLiIgKyBleHRlbmRQYWdlQ2xhc3NOYW1lOwoKICAgIC8vIENhbGxpbmcgdGhlIGpRdWVyeVVJIFdpZGdldCBGYWN0b3J5IE1ldGhvZAogICAgJC53aWRnZXQoInRvYy50b2NpZnkiLCB7CgogICAgICAvL1BsdWdpbiB2ZXJzaW9uCiAgICAgIHZlcnNpb246ICIxLjkuMSIsCgogICAgICAvLyBUaGVzZSBvcHRpb25zIHdpbGwgYmUgdXNlZCBhcyBkZWZhdWx0cwogICAgICBvcHRpb25zOiB7CgogICAgICAgIC8vICoqY29udGV4dCoqOiBBY2NlcHRzIFN0cmluZzogQW55IGpRdWVyeSBzZWxlY3RvcgogICAgICAgIC8vIFRoZSBjb250YWluZXIgZWxlbWVudCB0aGF0IGhvbGRzIGFsbCBvZiB0aGUgZWxlbWVudHMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgdGFibGUgb2YgY29udGVudHMKICAgICAgICBjb250ZXh0OiAiYm9keSIsCgogICAgICAgIC8vICoqaWdub3JlU2VsZWN0b3IqKjogQWNjZXB0cyBTdHJpbmc6IEFueSBqUXVlcnkgc2VsZWN0b3IKICAgICAgICAvLyBBIHNlbGVjdG9yIHRvIGFueSBlbGVtZW50IHRoYXQgd291bGQgYmUgbWF0Y2hlZCBieSBzZWxlY3RvcnMgdGhhdCB5b3Ugd2lzaCB0byBiZSBpZ25vcmVkCiAgICAgICAgaWdub3JlU2VsZWN0b3I6IG51bGwsCgogICAgICAgIC8vICoqc2VsZWN0b3JzKio6IEFjY2VwdHMgYW4gQXJyYXkgb2YgU3RyaW5nczogQW55IGpRdWVyeSBzZWxlY3RvcnMKICAgICAgICAvLyBUaGUgZWxlbWVudCdzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHRhYmxlIG9mIGNvbnRlbnRzLiAgVGhlIG9yZGVyIGlzIHZlcnkgaW1wb3J0YW50IHNpbmNlIGl0IHdpbGwgZGV0ZXJtaW5lIHRoZSB0YWJsZSBvZiBjb250ZW50J3MgbmVzdGluZyBzdHJ1Y3R1cmUKICAgICAgICBzZWxlY3RvcnM6ICJoMSwgaDIsIGgzIiwKCiAgICAgICAgLy8gKipzaG93QW5kSGlkZSoqOiBBY2NlcHRzIGEgYm9vbGVhbjogdHJ1ZSBvciBmYWxzZQogICAgICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIGlmIGVsZW1lbnRzIHNob3VsZCBiZSBzaG93biBhbmQgaGlkZGVuCiAgICAgICAgc2hvd0FuZEhpZGU6IHRydWUsCgogICAgICAgIC8vICoqc2hvd0VmZmVjdCoqOiBBY2NlcHRzIFN0cmluZzogIm5vbmUiLCAiZmFkZUluIiwgInNob3ciLCBvciAic2xpZGVEb3duIgogICAgICAgIC8vIFVzZWQgdG8gZGlzcGxheSBhbnkgb2YgdGhlIHRhYmxlIG9mIGNvbnRlbnRzIG5lc3RlZCBpdGVtcwogICAgICAgIHNob3dFZmZlY3Q6ICJzbGlkZURvd24iLAoKICAgICAgICAvLyAqKnNob3dFZmZlY3RTcGVlZCoqOiBBY2NlcHRzIE51bWJlciAobWlsbGlzZWNvbmRzKSBvciBTdHJpbmc6ICJzbG93IiwgIm1lZGl1bSIsIG9yICJmYXN0IgogICAgICAgIC8vIFRoZSB0aW1lIGR1cmF0aW9uIG9mIHRoZSBzaG93IGFuaW1hdGlvbgogICAgICAgIHNob3dFZmZlY3RTcGVlZDogIm1lZGl1bSIsCgogICAgICAgIC8vICoqaGlkZUVmZmVjdCoqOiBBY2NlcHRzIFN0cmluZzogIm5vbmUiLCAiZmFkZU91dCIsICJoaWRlIiwgb3IgInNsaWRlVXAiCiAgICAgICAgLy8gVXNlZCB0byBoaWRlIGFueSBvZiB0aGUgdGFibGUgb2YgY29udGVudHMgbmVzdGVkIGl0ZW1zCiAgICAgICAgaGlkZUVmZmVjdDogInNsaWRlVXAiLAoKICAgICAgICAvLyAqKmhpZGVFZmZlY3RTcGVlZCoqOiBBY2NlcHRzIE51bWJlciAobWlsbGlzZWNvbmRzKSBvciBTdHJpbmc6ICJzbG93IiwgIm1lZGl1bSIsIG9yICJmYXN0IgogICAgICAgIC8vIFRoZSB0aW1lIGR1cmF0aW9uIG9mIHRoZSBoaWRlIGFuaW1hdGlvbgogICAgICAgIGhpZGVFZmZlY3RTcGVlZDogIm1lZGl1bSIsCgogICAgICAgIC8vICoqc21vb3RoU2Nyb2xsKio6IEFjY2VwdHMgYSBib29sZWFuOiB0cnVlIG9yIGZhbHNlCiAgICAgICAgLy8gRGV0ZXJtaW5lcyBpZiBhIGpRdWVyeSBhbmltYXRpb24gc2hvdWxkIGJlIHVzZWQgdG8gc2Nyb2xsIHRvIHNwZWNpZmljIHRhYmxlIG9mIGNvbnRlbnRzIGl0ZW1zIG9uIHRoZSBwYWdlCiAgICAgICAgc21vb3RoU2Nyb2xsOiB0cnVlLAoKICAgICAgICAvLyAqKnNtb290aFNjcm9sbFNwZWVkKio6IEFjY2VwdHMgTnVtYmVyIChtaWxsaXNlY29uZHMpIG9yIFN0cmluZzogInNsb3ciLCAibWVkaXVtIiwgb3IgImZhc3QiCiAgICAgICAgLy8gVGhlIHRpbWUgZHVyYXRpb24gb2YgdGhlIHNtb290aFNjcm9sbCBhbmltYXRpb24KICAgICAgICBzbW9vdGhTY3JvbGxTcGVlZDogIm1lZGl1bSIsCgogICAgICAgIC8vICoqc2Nyb2xsVG8qKjogQWNjZXB0cyBOdW1iZXIgKHBpeGVscykKICAgICAgICAvLyBUaGUgYW1vdW50IG9mIHNwYWNlIGJldHdlZW4gdGhlIHRvcCBvZiBwYWdlIGFuZCB0aGUgc2VsZWN0ZWQgdGFibGUgb2YgY29udGVudHMgaXRlbSBhZnRlciB0aGUgcGFnZSBoYXMgYmVlbiBzY3JvbGxlZAogICAgICAgIHNjcm9sbFRvOiAwLAoKICAgICAgICAvLyAqKnNob3dBbmRIaWRlT25TY3JvbGwqKjogQWNjZXB0cyBhIGJvb2xlYW46IHRydWUgb3IgZmFsc2UKICAgICAgICAvLyBEZXRlcm1pbmVzIGlmIHRhYmxlIG9mIGNvbnRlbnRzIG5lc3RlZCBpdGVtcyBzaG91bGQgYmUgc2hvd24gYW5kIGhpZGRlbiB3aGlsZSBzY3JvbGxpbmcKICAgICAgICBzaG93QW5kSGlkZU9uU2Nyb2xsOiB0cnVlLAoKICAgICAgICAvLyAqKmhpZ2hsaWdodE9uU2Nyb2xsKio6IEFjY2VwdHMgYSBib29sZWFuOiB0cnVlIG9yIGZhbHNlCiAgICAgICAgLy8gRGV0ZXJtaW5lcyBpZiB0YWJsZSBvZiBjb250ZW50cyBuZXN0ZWQgaXRlbXMgc2hvdWxkIGJlIGhpZ2hsaWdodGVkIChzZXQgdG8gYSBkaWZmZXJlbnQgY29sb3IpIHdoaWxlIHNjcm9sbGluZwogICAgICAgIGhpZ2hsaWdodE9uU2Nyb2xsOiB0cnVlLAoKICAgICAgICAvLyAqKmhpZ2hsaWdodE9mZnNldCoqOiBBY2NlcHRzIGEgbnVtYmVyCiAgICAgICAgLy8gVGhlIG9mZnNldCBkaXN0YW5jZSBpbiBwaXhlbHMgdG8gdHJpZ2dlciB0aGUgbmV4dCBhY3RpdmUgdGFibGUgb2YgY29udGVudHMgaXRlbQogICAgICAgIGhpZ2hsaWdodE9mZnNldDogNDAsCgogICAgICAgIC8vICoqdGhlbWUqKjogQWNjZXB0cyBhIHN0cmluZzogImJvb3RzdHJhcCIsICJqcXVlcnl1aSIsIG9yICJub25lIgogICAgICAgIC8vIERldGVybWluZXMgaWYgVHdpdHRlciBCb290c3RyYXAsIGpRdWVyeVVJLCBvciBUb2NpZnkgY2xhc3NlcyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIHRhYmxlIG9mIGNvbnRlbnRzCiAgICAgICAgdGhlbWU6ICJib290c3RyYXAiLAoKICAgICAgICAvLyAqKmV4dGVuZFBhZ2UqKjogQWNjZXB0cyBhIGJvb2xlYW46IHRydWUgb3IgZmFsc2UKICAgICAgICAvLyBJZiBhIHVzZXIgc2Nyb2xscyB0byB0aGUgYm90dG9tIG9mIHRoZSBwYWdlIGFuZCB0aGUgcGFnZSBpcyBub3QgdGFsbCBlbm91Z2ggdG8gc2Nyb2xsIHRvIHRoZSBsYXN0IHRhYmxlIG9mIGNvbnRlbnRzIGl0ZW0sIHRoZW4gdGhlIHBhZ2UgaGVpZ2h0IGlzIGluY3JlYXNlZAogICAgICAgIGV4dGVuZFBhZ2U6IHRydWUsCgogICAgICAgIC8vICoqZXh0ZW5kUGFnZU9mZnNldCoqOiBBY2NlcHRzIGEgbnVtYmVyOiBwaXhlbHMKICAgICAgICAvLyBIb3cgY2xvc2UgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBhIHVzZXIgbXVzdCBzY3JvbGwgYmVmb3JlIHRoZSBwYWdlIGlzIGV4dGVuZGVkCiAgICAgICAgZXh0ZW5kUGFnZU9mZnNldDogMTAwLAoKICAgICAgICAvLyAqKmhpc3RvcnkqKjogQWNjZXB0cyBhIGJvb2xlYW46IHRydWUgb3IgZmFsc2UKICAgICAgICAvLyBBZGRzIGEgaGFzaCB0byB0aGUgcGFnZSB1cmwgdG8gbWFpbnRhaW4gaGlzdG9yeQogICAgICAgIGhpc3Rvcnk6IHRydWUsCgogICAgICAgIC8vICoqc2Nyb2xsSGlzdG9yeSoqOiBBY2NlcHRzIGEgYm9vbGVhbjogdHJ1ZSBvciBmYWxzZQogICAgICAgIC8vIEFkZHMgYSBoYXNoIHRvIHRoZSBwYWdlIHVybCwgdG8gbWFpbnRhaW4gaGlzdG9yeSwgd2hlbiBzY3JvbGxpbmcgdG8gYSBUT0MgaXRlbQogICAgICAgIHNjcm9sbEhpc3Rvcnk6IGZhbHNlLAoKICAgICAgICAvLyAqKmhhc2hHZW5lcmF0b3IqKjogSG93IHRoZSBoYXNoIHZhbHVlICh0aGUgYW5jaG9yIHNlZ21lbnQgb2YgdGhlIFVSTCwgZm9sbG93aW5nIHRoZQogICAgICAgIC8vICMgY2hhcmFjdGVyKSB3aWxsIGJlIGdlbmVyYXRlZC4KICAgICAgICAvLwogICAgICAgIC8vICJjb21wYWN0IiAoZGVmYXVsdCkgLSAjQ29tcHJlc3Nlc0V2ZXJ5dGhpbmdUb2dldGhlcgogICAgICAgIC8vICJwcmV0dHkiIC0gI2xvb2tzLWxpa2UtYS1uaWNlLXVybC1hbmQtaXMtZWFzaWx5LXJlYWRhYmxlCiAgICAgICAgLy8gZnVuY3Rpb24odGV4dCwgZWxlbWVudCl7fSAtIFlvdXIgb3duIGhhc2ggZ2VuZXJhdGlvbiBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIHRleHQgYXMgYW4KICAgICAgICAvLyBhcmd1bWVudCwgYW5kIHJldHVybnMgdGhlIGhhc2ggdmFsdWUuCiAgICAgICAgaGFzaEdlbmVyYXRvcjogImNvbXBhY3QiLAoKICAgICAgICAvLyAqKmhpZ2hsaWdodERlZmF1bHQqKjogQWNjZXB0cyBhIGJvb2xlYW46IHRydWUgb3IgZmFsc2UKICAgICAgICAvLyBTZXQncyB0aGUgZmlyc3QgVE9DIGl0ZW0gYXMgYWN0aXZlIGlmIG5vIG90aGVyIFRPQyBpdGVtIGlzIGFjdGl2ZS4KICAgICAgICBoaWdobGlnaHREZWZhdWx0OiB0cnVlCgogICAgICB9LAoKICAgICAgLy8gX0NyZWF0ZQogICAgICAvLyAtLS0tLS0tCiAgICAgIC8vICAgICAgQ29uc3RydWN0cyB0aGUgcGx1Z2luLiAgT25seSBjYWxsZWQgb25jZS4KICAgICAgX2NyZWF0ZTogZnVuY3Rpb24oKSB7CgogICAgICAgIHZhciBzZWxmID0gdGhpczsKCiAgICAgICAgc2VsZi5leHRlbmRQYWdlU2Nyb2xsID0gdHJ1ZTsKCiAgICAgICAgLy8gSW50ZXJuYWwgYXJyYXkgdGhhdCBrZWVwcyB0cmFjayBvZiBhbGwgVE9DIGl0ZW1zIChIZWxwcyB0byByZWNvZ25pemUgaWYgdGhlcmUgYXJlIGR1cGxpY2F0ZSBUT0MgaXRlbSBzdHJpbmdzKQogICAgICAgIHNlbGYuaXRlbXMgPSBbXTsKCiAgICAgICAgLy8gR2VuZXJhdGVzIHRoZSBIVE1MIGZvciB0aGUgZHluYW1pYyB0YWJsZSBvZiBjb250ZW50cwogICAgICAgIHNlbGYuX2dlbmVyYXRlVG9jKCk7CgogICAgICAgIC8vIEFkZHMgQ1NTIGNsYXNzZXMgdG8gdGhlIG5ld2x5IGdlbmVyYXRlZCB0YWJsZSBvZiBjb250ZW50cyBIVE1MCiAgICAgICAgc2VsZi5fYWRkQ1NTQ2xhc3NlcygpOwoKICAgICAgICBzZWxmLndlYmtpdCA9IChmdW5jdGlvbigpIHsKCiAgICAgICAgICBmb3IgKHZhciBwcm9wIGluIHdpbmRvdykgewoKICAgICAgICAgICAgaWYgKHByb3ApIHsKCiAgICAgICAgICAgICAgaWYgKHByb3AudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ3ZWJraXQiKSAhPT0gLTEpIHsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgIH0oKSk7CgogICAgICAgIC8vIEFkZHMgalF1ZXJ5IGV2ZW50IGhhbmRsZXJzIHRvIHRoZSBuZXdseSBnZW5lcmF0ZWQgdGFibGUgb2YgY29udGVudHMKICAgICAgICBzZWxmLl9zZXRFdmVudEhhbmRsZXJzKCk7CgogICAgICAgIC8vIEJpbmRpbmcgdG8gdGhlIFdpbmRvdyBsb2FkIGV2ZW50IHRvIG1ha2Ugc3VyZSB0aGUgY29ycmVjdCBzY3JvbGxUb3AgaXMgY2FsY3VsYXRlZAogICAgICAgICQod2luZG93KS5vbigibG9hZCIsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgIC8vIFNldHMgdGhlIGFjdGl2ZSBUT0MgaXRlbQogICAgICAgICAgc2VsZi5fc2V0QWN0aXZlRWxlbWVudCh0cnVlKTsKCiAgICAgICAgICAvLyBPbmNlIGFsbCBhbmltYXRpb25zIG9uIHRoZSBwYWdlIGFyZSBjb21wbGV0ZSwgdGhpcyBjYWxsYmFjayBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZAogICAgICAgICAgJCgiaHRtbCwgYm9keSIpLnByb21pc2UoKS5kb25lKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgc2VsZi5leHRlbmRQYWdlU2Nyb2xsID0gZmFsc2U7CgogICAgICAgICAgICB9LCAwKTsKCiAgICAgICAgICB9KTsKCiAgICAgICAgfSk7CgogICAgICB9LAoKICAgICAgLy8gX2dlbmVyYXRlVG9jCiAgICAgIC8vIC0tLS0tLS0tLS0tLQogICAgICAvLyAgICAgIEdlbmVyYXRlcyB0aGUgSFRNTCBmb3IgdGhlIGR5bmFtaWMgdGFibGUgb2YgY29udGVudHMKICAgICAgX2dlbmVyYXRlVG9jOiBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gX0xvY2FsIHZhcmlhYmxlc18KCiAgICAgICAgLy8gU3RvcmVzIHRoZSBwbHVnaW4gY29udGV4dCBpbiB0aGUgc2VsZiB2YXJpYWJsZQogICAgICAgIHZhciBzZWxmID0gdGhpcywKCiAgICAgICAgICAvLyBBbGwgb2YgdGhlIEhUTUwgdGFncyBmb3VuZCB3aXRoaW4gdGhlIGNvbnRleHQgcHJvdmlkZWQgKGkuZS4gYm9keSkgdGhhdCBtYXRjaCB0aGUgdG9wIGxldmVsIGpRdWVyeSBzZWxlY3RvciBhYm92ZQogICAgICAgICAgZmlyc3RFbGVtLAoKICAgICAgICAgIC8vIEluc3RhbnRpYXRlZCB2YXJpYWJsZSB0aGF0IHdpbGwgc3RvcmUgdGhlIHRvcCBsZXZlbCBuZXdseSBjcmVhdGVkIHVub3JkZXJlZCBsaXN0IERPTSBlbGVtZW50CiAgICAgICAgICB1bCwKICAgICAgICAgIGlnbm9yZVNlbGVjdG9yID0gc2VsZi5vcHRpb25zLmlnbm9yZVNlbGVjdG9yOwoKCiAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBlbGVtZW50IHRvIHN0YXJ0IHRoZSB0b2Mgd2l0aAogICAgICAgIC8vIGdldCBhbGwgdGhlIHRvcCBsZXZlbCBzZWxlY3RvcnMKICAgICAgICBmaXJzdEVsZW0gPSBbXTsKICAgICAgICB2YXIgc2VsZWN0b3JzID0gdGhpcy5vcHRpb25zLnNlbGVjdG9ycy5yZXBsYWNlKC8gL2csICIiKS5zcGxpdCgiLCIpOwogICAgICAgIC8vIGZpbmQgdGhlIGZpcnN0IHNldCB0aGF0IGhhdmUgYXQgbGVhc3Qgb25lIG5vbi1pZ25vcmVkIGVsZW1lbnQKICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2VsZWN0b3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgZm91bmRTZWxlY3RvcnMgPSAkKHRoaXMub3B0aW9ucy5jb250ZXh0KS5maW5kKHNlbGVjdG9yc1tpXSk7CiAgICAgICAgICBmb3IgKHZhciBzID0gMDsgcyA8IGZvdW5kU2VsZWN0b3JzLmxlbmd0aDsgcysrKSB7CiAgICAgICAgICAgIGlmICghJChmb3VuZFNlbGVjdG9yc1tzXSkuaXMoaWdub3JlU2VsZWN0b3IpKSB7CiAgICAgICAgICAgICAgZmlyc3RFbGVtID0gZm91bmRTZWxlY3RvcnM7CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChmaXJzdEVsZW0ubGVuZ3RoPiAwKQogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmICghZmlyc3RFbGVtLmxlbmd0aCkgewoKICAgICAgICAgIHNlbGYuZWxlbWVudC5hZGRDbGFzcyhoaWRlVG9jQ2xhc3NOYW1lKTsKCiAgICAgICAgICByZXR1cm47CgogICAgICAgIH0KCiAgICAgICAgc2VsZi5lbGVtZW50LmFkZENsYXNzKHRvY0NsYXNzTmFtZSk7CgogICAgICAgIC8vIExvb3BzIHRocm91Z2ggZWFjaCB0b3AgbGV2ZWwgc2VsZWN0b3IKICAgICAgICBmaXJzdEVsZW0uZWFjaChmdW5jdGlvbihpbmRleCkgewoKICAgICAgICAgIC8vSWYgdGhlIGVsZW1lbnQgbWF0Y2hlcyB0aGUgaWdub3JlU2VsZWN0b3IgdGhlbiB3ZSBza2lwIGl0CiAgICAgICAgICBpZiAoJCh0aGlzKS5pcyhpZ25vcmVTZWxlY3RvcikpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIENyZWF0ZXMgYW4gdW5vcmRlcmVkIGxpc3QgSFRNTCBlbGVtZW50IGFuZCBhZGRzIGEgZHluYW1pYyBJRCBhbmQgc3RhbmRhcmQgY2xhc3MgbmFtZQogICAgICAgICAgdWwgPSAkKCI8dWwvPiIsIHsKICAgICAgICAgICAgImlkIjogaGVhZGVyQ2xhc3NOYW1lICsgaW5kZXgsCiAgICAgICAgICAgICJjbGFzcyI6IGhlYWRlckNsYXNzTmFtZQogICAgICAgICAgfSkuCgogICAgICAgICAgLy8gQXBwZW5kcyBhIHRvcCBsZXZlbCBsaXN0IGl0ZW0gSFRNTCBlbGVtZW50IHRvIHRoZSBwcmV2aW91c2x5IGNyZWF0ZWQgSFRNTCBoZWFkZXIKICAgICAgICAgIGFwcGVuZChzZWxmLl9uZXN0RWxlbWVudHMoJCh0aGlzKSwgaW5kZXgpKTsKCiAgICAgICAgICAvLyBBZGQgdGhlIGNyZWF0ZWQgdW5vcmRlcmVkIGxpc3QgZWxlbWVudCB0byB0aGUgSFRNTCBlbGVtZW50IGNhbGxpbmcgdGhlIHBsdWdpbgogICAgICAgICAgc2VsZi5lbGVtZW50LmFwcGVuZCh1bCk7CgogICAgICAgICAgLy8gRmluZHMgYWxsIG9mIHRoZSBIVE1MIHRhZ3MgYmV0d2VlbiB0aGUgaGVhZGVyIGFuZCBzdWJoZWFkZXIgZWxlbWVudHMKICAgICAgICAgICQodGhpcykubmV4dFVudGlsKHRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkuZWFjaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBubyBuZXN0ZWQgc3ViaGVhZGVyIGVsZW1lbWVudHMKICAgICAgICAgICAgaWYgKCQodGhpcykuZmluZChzZWxmLm9wdGlvbnMuc2VsZWN0b3JzKS5sZW5ndGggPT09IDApIHsKCiAgICAgICAgICAgICAgLy8gTG9vcHMgdGhyb3VnaCBhbGwgb2YgdGhlIHN1YmhlYWRlciBlbGVtZW50cwogICAgICAgICAgICAgICQodGhpcykuZmlsdGVyKHNlbGYub3B0aW9ucy5zZWxlY3RvcnMpLmVhY2goZnVuY3Rpb24oKSB7CgogICAgICAgICAgICAgICAgLy9JZiB0aGUgZWxlbWVudCBtYXRjaGVzIHRoZSBpZ25vcmVTZWxlY3RvciB0aGVuIHdlIHNraXAgaXQKICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmlzKGlnbm9yZVNlbGVjdG9yKSkgewogICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgc2VsZi5fYXBwZW5kU3ViaGVhZGVycy5jYWxsKHRoaXMsIHNlbGYsIHVsKTsKCiAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbmVzdGVkIHN1YmhlYWRlciBlbGVtZW50cwogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgLy8gTG9vcHMgdGhyb3VnaCBhbGwgb2YgdGhlIHN1YmhlYWRlciBlbGVtZW50cwogICAgICAgICAgICAgICQodGhpcykuZmluZChzZWxmLm9wdGlvbnMuc2VsZWN0b3JzKS5lYWNoKGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIC8vSWYgdGhlIGVsZW1lbnQgbWF0Y2hlcyB0aGUgaWdub3JlU2VsZWN0b3IgdGhlbiB3ZSBza2lwIGl0CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5pcyhpZ25vcmVTZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHNlbGYuX2FwcGVuZFN1YmhlYWRlcnMuY2FsbCh0aGlzLCBzZWxmLCB1bCk7CgogICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgfQoKICAgICAgICAgIH0pOwoKICAgICAgICB9KTsKCiAgICAgIH0sCgogICAgICBfc2V0QWN0aXZlRWxlbWVudDogZnVuY3Rpb24ocGFnZWxvYWQpIHsKCiAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAoKICAgICAgICAgIGhhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSksCgogICAgICAgICAgZWxlbSA9IHNlbGYuZWxlbWVudC5maW5kKCdsaVtkYXRhLXVuaXF1ZT0iJyArIGhhc2ggKyAnIl0nKTsKCiAgICAgICAgaWYgKGhhc2gubGVuZ3RoKSB7CgogICAgICAgICAgLy8gUmVtb3ZlcyBoaWdobGlnaHRpbmcgZnJvbSBhbGwgb2YgdGhlIGxpc3QgaXRlbSdzCiAgICAgICAgICBzZWxmLmVsZW1lbnQuZmluZCgiLiIgKyBzZWxmLmZvY3VzQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgLy8gSGlnaGxpZ2h0cyB0aGUgY3VycmVudCBsaXN0IGl0ZW0gdGhhdCB3YXMgY2xpY2tlZAogICAgICAgICAgZWxlbS5hZGRDbGFzcyhzZWxmLmZvY3VzQ2xhc3MpOwoKICAgICAgICAgIC8vIFRyaWdnZXJzIHRoZSBjbGljayBldmVudCBvbiB0aGUgY3VycmVudGx5IGZvY3VzZWQgVE9DIGl0ZW0KICAgICAgICAgIGVsZW0uY2xpY2soKTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAvLyBSZW1vdmVzIGhpZ2hsaWdodGluZyBmcm9tIGFsbCBvZiB0aGUgbGlzdCBpdGVtJ3MKICAgICAgICAgIHNlbGYuZWxlbWVudC5maW5kKCIuIiArIHNlbGYuZm9jdXNDbGFzcykucmVtb3ZlQ2xhc3Moc2VsZi5mb2N1c0NsYXNzKTsKCiAgICAgICAgICBpZiAoIWhhc2gubGVuZ3RoICYmIHBhZ2Vsb2FkICYmIHNlbGYub3B0aW9ucy5oaWdobGlnaHREZWZhdWx0KSB7CgogICAgICAgICAgICAvLyBIaWdobGlnaHRzIHRoZSBmaXJzdCBUT0MgaXRlbSBpZiBubyBvdGhlciBpdGVtcyBhcmUgaGlnaGxpZ2h0ZWQKICAgICAgICAgICAgc2VsZi5lbGVtZW50LmZpbmQoaXRlbUNsYXNzKS5maXJzdCgpLmFkZENsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOwoKICAgICAgfSwKCiAgICAgIC8vIF9uZXN0RWxlbWVudHMKICAgICAgLy8gLS0tLS0tLS0tLS0tLQogICAgICAvLyAgICAgIEhlbHBzIGNyZWF0ZSB0aGUgdGFibGUgb2YgY29udGVudHMgbGlzdCBieSBhcHBlbmRpbmcgbmVzdGVkIGxpc3QgaXRlbXMKICAgICAgX25lc3RFbGVtZW50czogZnVuY3Rpb24oc2VsZiwgaW5kZXgpIHsKCiAgICAgICAgdmFyIGFyciwgaXRlbSwgaGFzaFZhbHVlOwoKICAgICAgICBhcnIgPSAkLmdyZXAodGhpcy5pdGVtcywgZnVuY3Rpb24oaXRlbSkgewoKICAgICAgICAgIHJldHVybiBpdGVtID09PSBzZWxmLnRleHQoKTsKCiAgICAgICAgfSk7CgogICAgICAgIC8vIElmIHRoZXJlIGlzIGFscmVhZHkgYSBkdXBsaWNhdGUgVE9DIGl0ZW0KICAgICAgICBpZiAoYXJyLmxlbmd0aCkgewoKICAgICAgICAgIC8vIEFkZHMgdGhlIGN1cnJlbnQgVE9DIGl0ZW0gdGV4dCBhbmQgaW5kZXggKGZvciBzbGlnaHQgcmFuZG9taXphdGlvbikgdG8gdGhlIGludGVybmFsIGFycmF5CiAgICAgICAgICB0aGlzLml0ZW1zLnB1c2goc2VsZi50ZXh0KCkgKyBpbmRleCk7CgogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlcmUgbm90IGEgZHVwbGljYXRlIFRPQyBpdGVtCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgLy8gQWRkcyB0aGUgY3VycmVudCBUT0MgaXRlbSB0ZXh0IHRvIHRoZSBpbnRlcm5hbCBhcnJheQogICAgICAgICAgdGhpcy5pdGVtcy5wdXNoKHNlbGYudGV4dCgpKTsKCiAgICAgICAgfQoKICAgICAgICBoYXNoVmFsdWUgPSB0aGlzLl9nZW5lcmF0ZUhhc2hWYWx1ZShhcnIsIHNlbGYsIGluZGV4KTsKCiAgICAgICAgLy8gQXBwZW5kcyBhIGxpc3QgaXRlbSBIVE1MIGVsZW1lbnQgdG8gdGhlIGxhc3QgdW5vcmRlcmVkIGxpc3QgSFRNTCBlbGVtZW50IGZvdW5kIHdpdGhpbiB0aGUgSFRNTCBlbGVtZW50IGNhbGxpbmcgdGhlIHBsdWdpbgogICAgICAgIGl0ZW0gPSAkKCI8bGkvPiIsIHsKCiAgICAgICAgICAvLyBTZXRzIGEgY29tbW9uIGNsYXNzIG5hbWUgdG8gdGhlIGxpc3QgaXRlbQogICAgICAgICAgImNsYXNzIjogaXRlbUNsYXNzTmFtZSwKCiAgICAgICAgICAiZGF0YS11bmlxdWUiOiBoYXNoVmFsdWUKCiAgICAgICAgfSk7CgogICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGhlbWUgIT09ICJib290c3RyYXAzIikgewoKICAgICAgICAgIGl0ZW0uYXBwZW5kKCQoIjxhLz4iLCB7CgogICAgICAgICAgICAiaHRtbCI6IHNlbGYuaHRtbCgpCgogICAgICAgICAgfSkpOwoKICAgICAgICB9IGVsc2UgewoKICAgICAgICAgIGl0ZW0uaHRtbChzZWxmLmh0bWwoKSk7CgogICAgICAgIH0KCiAgICAgICAgLy8gQWRkcyBhbiBIVE1MIGFuY2hvciB0YWcgYmVmb3JlIHRoZSBjdXJyZW50bHkgdHJhdmVyc2VkIEhUTUwgZWxlbWVudAogICAgICAgIHNlbGYuYmVmb3JlKCQoIjxkaXYvPiIsIHsKCiAgICAgICAgICAvLyBTZXRzIGEgbmFtZSBhdHRyaWJ1dGUgb24gdGhlIGFuY2hvciB0YWcgdG8gdGhlIHRleHQgb2YgdGhlIGN1cnJlbnRseSB0cmF2ZXJzZWQgSFRNTCBlbGVtZW50IChhbHNvIG1ha2luZyBzdXJlIHRoYXQgYWxsIHdoaXRlc3BhY2UgaXMgcmVwbGFjZWQgd2l0aCBhbiB1bmRlcnNjb3JlKQogICAgICAgICAgIm5hbWUiOiBoYXNoVmFsdWUsCgogICAgICAgICAgImRhdGEtdW5pcXVlIjogaGFzaFZhbHVlCgogICAgICAgIH0pKTsKCiAgICAgICAgcmV0dXJuIGl0ZW07CgogICAgICB9LAoKICAgICAgLy8gX2dlbmVyYXRlSGFzaFZhbHVlCiAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAvLyAgICAgIEdlbmVyYXRlcyB0aGUgaGFzaCB2YWx1ZSB0aGF0IHdpbGwgYmUgdXNlZCB0byByZWZlciB0byBlYWNoIGl0ZW0uCiAgICAgIF9nZW5lcmF0ZUhhc2hWYWx1ZTogZnVuY3Rpb24oYXJyLCBzZWxmLCBpbmRleCkgewoKICAgICAgICB2YXIgaGFzaFZhbHVlID0gIiIsCiAgICAgICAgICBoYXNoR2VuZXJhdG9yT3B0aW9uID0gdGhpcy5vcHRpb25zLmhhc2hHZW5lcmF0b3I7CgogICAgICAgIGlmIChoYXNoR2VuZXJhdG9yT3B0aW9uID09PSAicHJldHR5IikgewoKICAgICAgICAgIC8vIHByZXR0aWZ5IHRoZSB0ZXh0CiAgICAgICAgICBoYXNoVmFsdWUgPSBzZWxmLnRleHQoKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xzL2csICItIik7CgogICAgICAgICAgLy8gZml4IGRvdWJsZSBoeXBoZW5zCiAgICAgICAgICB3aGlsZSAoaGFzaFZhbHVlLmluZGV4T2YoIi0tIikgPiAtMSkgewogICAgICAgICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUucmVwbGFjZSgvLS0vZywgIi0iKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyBmaXggY29sb24tc3BhY2UgaW5zdGFuY2VzCiAgICAgICAgICB3aGlsZSAoaGFzaFZhbHVlLmluZGV4T2YoIjotIikgPiAtMSkgewogICAgICAgICAgICBoYXNoVmFsdWUgPSBoYXNoVmFsdWUucmVwbGFjZSgvOi0vZywgIi0iKTsKICAgICAgICAgIH0KCiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaGFzaEdlbmVyYXRvck9wdGlvbiA9PT0gImZ1bmN0aW9uIikgewoKICAgICAgICAgIC8vIGNhbGwgdGhlIGZ1bmN0aW9uCiAgICAgICAgICBoYXNoVmFsdWUgPSBoYXNoR2VuZXJhdG9yT3B0aW9uKHNlbGYudGV4dCgpLCBzZWxmKTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAvLyBjb21wYWN0IC0gdGhlIGRlZmF1bHQKICAgICAgICAgIGhhc2hWYWx1ZSA9IHNlbGYudGV4dCgpLnJlcGxhY2UoL1xzL2csICIiKTsKCiAgICAgICAgfQoKICAgICAgICAvLyBhZGQgdGhlIGluZGV4IGlmIHdlIG5lZWQgdG8KICAgICAgICBpZiAoYXJyLmxlbmd0aCkgewogICAgICAgICAgaGFzaFZhbHVlICs9ICIiICsgaW5kZXg7CiAgICAgICAgfQoKICAgICAgICAvLyByZXR1cm4gdGhlIHZhbHVlCiAgICAgICAgcmV0dXJuIGhhc2hWYWx1ZTsKCiAgICAgIH0sCgogICAgICAvLyBfYXBwZW5kRWxlbWVudHMKICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tCiAgICAgIC8vICAgICAgSGVscHMgY3JlYXRlIHRoZSB0YWJsZSBvZiBjb250ZW50cyBsaXN0IGJ5IGFwcGVuZGluZyBzdWJoZWFkZXIgZWxlbWVudHMKCiAgICAgIF9hcHBlbmRTdWJoZWFkZXJzOiBmdW5jdGlvbihzZWxmLCB1bCkgewoKICAgICAgICAvLyBUaGUgY3VycmVudCBlbGVtZW50IGluZGV4CiAgICAgICAgdmFyIGluZGV4ID0gJCh0aGlzKS5pbmRleChzZWxmLm9wdGlvbnMuc2VsZWN0b3JzKSwKCiAgICAgICAgICAvLyBGaW5kcyB0aGUgcHJldmlvdXMgaGVhZGVyIERPTSBlbGVtZW50CiAgICAgICAgICBwcmV2aW91c0hlYWRlciA9ICQoc2VsZi5vcHRpb25zLnNlbGVjdG9ycykuZXEoaW5kZXggLSAxKSwKCiAgICAgICAgICBjdXJyZW50VGFnTmFtZSA9ICskKHRoaXMpLnByb3AoInRhZ05hbWUiKS5jaGFyQXQoMSksCgogICAgICAgICAgcHJldmlvdXNUYWdOYW1lID0gK3ByZXZpb3VzSGVhZGVyLnByb3AoInRhZ05hbWUiKS5jaGFyQXQoMSksCgogICAgICAgICAgbGFzdFN1YmhlYWRlcjsKCiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgaGVhZGVyIERPTSBlbGVtZW50IGlzIHNtYWxsZXIgdGhhbiB0aGUgcHJldmlvdXMgaGVhZGVyIERPTSBlbGVtZW50IG9yIHRoZSBmaXJzdCBzdWJoZWFkZXIKICAgICAgICBpZiAoY3VycmVudFRhZ05hbWUgPCBwcmV2aW91c1RhZ05hbWUpIHsKCiAgICAgICAgICAvLyBTZWxlY3RzIHRoZSBsYXN0IHVub3JkZXJlZCBsaXN0IEhUTUwgZm91bmQgd2l0aGluIHRoZSBIVE1MIGVsZW1lbnQgY2FsbGluZyB0aGUgcGx1Z2luCiAgICAgICAgICBzZWxmLmVsZW1lbnQuZmluZChzdWJoZWFkZXJDbGFzcyArICJbZGF0YS10YWc9IiArIGN1cnJlbnRUYWdOYW1lICsgIl0iKS5sYXN0KCkuYXBwZW5kKHNlbGYuX25lc3RFbGVtZW50cygkKHRoaXMpLCBpbmRleCkpOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGhlYWRlciBET00gZWxlbWVudCBpcyB0aGUgc2FtZSB0eXBlIG9mIGhlYWRlcihlZy4gaDQpIGFzIHRoZSBwcmV2aW91cyBoZWFkZXIgRE9NIGVsZW1lbnQKICAgICAgICBlbHNlIGlmIChjdXJyZW50VGFnTmFtZSA9PT0gcHJldmlvdXNUYWdOYW1lKSB7CgogICAgICAgICAgdWwuZmluZChpdGVtQ2xhc3MpLmxhc3QoKS5hZnRlcihzZWxmLl9uZXN0RWxlbWVudHMoJCh0aGlzKSwgaW5kZXgpKTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAvLyBTZWxlY3RzIHRoZSBsYXN0IHVub3JkZXJlZCBsaXN0IEhUTUwgZm91bmQgd2l0aGluIHRoZSBIVE1MIGVsZW1lbnQgY2FsbGluZyB0aGUgcGx1Z2luCiAgICAgICAgICB1bC5maW5kKGl0ZW1DbGFzcykubGFzdCgpLgoKICAgICAgICAgIC8vIEFwcGVuZHMgYW4gdW5vcmRlcmVkTGlzdCBIVE1MIGVsZW1lbnQgdG8gdGhlIGR5bmFtaWMgYHVub3JkZXJlZExpc3RgIHZhcmlhYmxlIGFuZCBzZXRzIGEgY29tbW9uIGNsYXNzIG5hbWUKICAgICAgICAgIGFmdGVyKCQoIjx1bC8+IiwgewoKICAgICAgICAgICAgImNsYXNzIjogc3ViaGVhZGVyQ2xhc3NOYW1lLAoKICAgICAgICAgICAgImRhdGEtdGFnIjogY3VycmVudFRhZ05hbWUKCiAgICAgICAgICB9KSkubmV4dChzdWJoZWFkZXJDbGFzcykuCgogICAgICAgICAgLy8gQXBwZW5kcyBhIGxpc3QgaXRlbSBIVE1MIGVsZW1lbnQgdG8gdGhlIGxhc3QgdW5vcmRlcmVkIGxpc3QgSFRNTCBlbGVtZW50IGZvdW5kIHdpdGhpbiB0aGUgSFRNTCBlbGVtZW50IGNhbGxpbmcgdGhlIHBsdWdpbgogICAgICAgICAgYXBwZW5kKHNlbGYuX25lc3RFbGVtZW50cygkKHRoaXMpLCBpbmRleCkpOwogICAgICAgIH0KCiAgICAgIH0sCgogICAgICAvLyBfc2V0RXZlbnRIYW5kbGVycwogICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tCiAgICAgIC8vICAgICAgQWRkcyBqUXVlcnkgZXZlbnQgaGFuZGxlcnMgdG8gdGhlIG5ld2x5IGdlbmVyYXRlZCB0YWJsZSBvZiBjb250ZW50cwogICAgICBfc2V0RXZlbnRIYW5kbGVyczogZnVuY3Rpb24oKSB7CgogICAgICAgIC8vIF9Mb2NhbCB2YXJpYWJsZXNfCgogICAgICAgIC8vIFN0b3JlcyB0aGUgcGx1Z2luIGNvbnRleHQgaW4gdGhlIHNlbGYgdmFyaWFibGUKICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCgogICAgICAgICAgLy8gSW5zdGFudGlhdGVzIGEgbmV3IHZhcmlhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGhvbGQgYSBzcGVjaWZpYyBlbGVtZW50J3MgY29udGV4dAogICAgICAgICAgJHNlbGYsCgogICAgICAgICAgLy8gSW5zdGFudGlhdGVzIGEgbmV3IHZhcmlhYmxlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgc21vb3RoU2Nyb2xsIGFuaW1hdGlvbiB0aW1lIGR1cmF0aW9uCiAgICAgICAgICBkdXJhdGlvbjsKCiAgICAgICAgLy8gRXZlbnQgZGVsZWdhdGlvbiB0aGF0IGxvb2tzIGZvciBhbnkgY2xpY2tzIG9uIGxpc3QgaXRlbSBlbGVtZW50cyBpbnNpZGUgb2YgdGhlIEhUTUwgZWxlbWVudCBjYWxsaW5nIHRoZSBwbHVnaW4KICAgICAgICB0aGlzLmVsZW1lbnQub24oImNsaWNrLnRvY2lmeSIsICJsaSIsIGZ1bmN0aW9uKGV2ZW50KSB7CgogICAgICAgICAgaWYgKHNlbGYub3B0aW9ucy5oaXN0b3J5KSB7CgogICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9ICQodGhpcykuYXR0cigiZGF0YS11bmlxdWUiKTsKCiAgICAgICAgICB9CgogICAgICAgICAgLy8gUmVtb3ZlcyBoaWdobGlnaHRpbmcgZnJvbSBhbGwgb2YgdGhlIGxpc3QgaXRlbSdzCiAgICAgICAgICBzZWxmLmVsZW1lbnQuZmluZCgiLiIgKyBzZWxmLmZvY3VzQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgLy8gSGlnaGxpZ2h0cyB0aGUgY3VycmVudCBsaXN0IGl0ZW0gdGhhdCB3YXMgY2xpY2tlZAogICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhzZWxmLmZvY3VzQ2xhc3MpOwoKICAgICAgICAgIC8vIElmIHRoZSBzaG93QW5kSGlkZSBvcHRpb24gaXMgdHJ1ZQogICAgICAgICAgaWYgKHNlbGYub3B0aW9ucy5zaG93QW5kSGlkZSkgewoKICAgICAgICAgICAgdmFyIGVsZW0gPSAkKCdsaVtkYXRhLXVuaXF1ZT0iJyArICQodGhpcykuYXR0cigiZGF0YS11bmlxdWUiKSArICciXScpOwoKICAgICAgICAgICAgc2VsZi5fdHJpZ2dlclNob3coZWxlbSk7CgogICAgICAgICAgfQoKICAgICAgICAgIHNlbGYuX3Njcm9sbFRvKCQodGhpcykpOwoKICAgICAgICB9KTsKCiAgICAgICAgLy8gTW91c2VlbnRlciBhbmQgTW91c2VsZWF2ZSBldmVudCBoYW5kbGVycyBmb3IgdGhlIGxpc3QgaXRlbSdzIHdpdGhpbiB0aGUgSFRNTCBlbGVtZW50IGNhbGxpbmcgdGhlIHBsdWdpbgogICAgICAgIHRoaXMuZWxlbWVudC5maW5kKCJsaSIpLm9uKHsKCiAgICAgICAgICAvLyBNb3VzZWVudGVyIGV2ZW50IGhhbmRsZXIKICAgICAgICAgICJtb3VzZWVudGVyLnRvY2lmeSI6IGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgLy8gQWRkcyBhIGhvdmVyIENTUyBjbGFzcyB0byB0aGUgY3VycmVudCBsaXN0IGl0ZW0KICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhzZWxmLmhvdmVyQ2xhc3MpOwoKICAgICAgICAgICAgLy8gTWFrZXMgc3VyZSB0aGUgY3Vyc29yIGlzIHNldCB0byB0aGUgcG9pbnRlciBpY29uCiAgICAgICAgICAgICQodGhpcykuY3NzKCJjdXJzb3IiLCAicG9pbnRlciIpOwoKICAgICAgICAgIH0sCgogICAgICAgICAgLy8gTW91c2VsZWF2ZSBldmVudCBoYW5kbGVyCiAgICAgICAgICAibW91c2VsZWF2ZS50b2NpZnkiOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmIChzZWxmLm9wdGlvbnMudGhlbWUgIT09ICJib290c3RyYXAiKSB7CgogICAgICAgICAgICAgIC8vIFJlbW92ZXMgdGhlIGhvdmVyIENTUyBjbGFzcyBmcm9tIHRoZSBjdXJyZW50IGxpc3QgaXRlbQogICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3Moc2VsZi5ob3ZlckNsYXNzKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIC8vIG9ubHkgYXR0YWNoIGhhbmRsZXIgaWYgbmVlZGVkIChleHBlbnNpdmUgaW4gSUUpCiAgICAgICAgaWYgKHNlbGYub3B0aW9ucy5leHRlbmRQYWdlIHx8IHNlbGYub3B0aW9ucy5oaWdobGlnaHRPblNjcm9sbCB8fCBzZWxmLm9wdGlvbnMuc2Nyb2xsSGlzdG9yeSB8fCBzZWxmLm9wdGlvbnMuc2hvd0FuZEhpZGVPblNjcm9sbCkgewogICAgICAgICAgLy8gV2luZG93IHNjcm9sbCBldmVudCBoYW5kbGVyCiAgICAgICAgICAkKHdpbmRvdykub24oInNjcm9sbC50b2NpZnkiLCBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIC8vIE9uY2UgYWxsIGFuaW1hdGlvbnMgb24gdGhlIHBhZ2UgYXJlIGNvbXBsZXRlLCB0aGlzIGNhbGxiYWNrIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkCiAgICAgICAgICAgICQoImh0bWwsIGJvZHkiKS5wcm9taXNlKCkuZG9uZShmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgLy8gTG9jYWwgdmFyaWFibGVzCgogICAgICAgICAgICAgIC8vIFN0b3JlcyBob3cgZmFyIHRoZSB1c2VyIGhhcyBzY3JvbGxlZAogICAgICAgICAgICAgIHZhciB3aW5TY3JvbGxUb3AgPSAkKHdpbmRvdykuc2Nyb2xsVG9wKCksCgogICAgICAgICAgICAgICAgLy8gU3RvcmVzIHRoZSBoZWlnaHQgb2YgdGhlIHdpbmRvdwogICAgICAgICAgICAgICAgd2luSGVpZ2h0ID0gJCh3aW5kb3cpLmhlaWdodCgpLAoKICAgICAgICAgICAgICAgIC8vIFN0b3JlcyB0aGUgaGVpZ2h0IG9mIHRoZSBkb2N1bWVudAogICAgICAgICAgICAgICAgZG9jSGVpZ2h0ID0gJChkb2N1bWVudCkuaGVpZ2h0KCksCgogICAgICAgICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gJCgiYm9keSIpWzBdLnNjcm9sbEhlaWdodCwKCiAgICAgICAgICAgICAgICAvLyBJbnN0YW50aWF0ZXMgYSB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBob2xkIGEgc2VsZWN0ZWQgSFRNTCBlbGVtZW50CiAgICAgICAgICAgICAgICBlbGVtLAoKICAgICAgICAgICAgICAgIGxhc3RFbGVtLAoKICAgICAgICAgICAgICAgIGxhc3RFbGVtT2Zmc2V0LAoKICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtOwoKICAgICAgICAgICAgICBpZiAoc2VsZi5vcHRpb25zLmV4dGVuZFBhZ2UpIHsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdXNlciBoYXMgc2Nyb2xsZWQgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBhbmQgdGhlIGxhc3QgdG9jIGl0ZW0gaXMgbm90IGZvY3VzZWQKICAgICAgICAgICAgICAgIGlmICgoc2VsZi53ZWJraXQgJiYgd2luU2Nyb2xsVG9wID49IHNjcm9sbEhlaWdodCAtIHdpbkhlaWdodCAtIHNlbGYub3B0aW9ucy5leHRlbmRQYWdlT2Zmc2V0KSB8fCAoIXNlbGYud2Via2l0ICYmIHdpbkhlaWdodCArIHdpblNjcm9sbFRvcCA+IGRvY0hlaWdodCAtIHNlbGYub3B0aW9ucy5leHRlbmRQYWdlT2Zmc2V0KSkgewoKICAgICAgICAgICAgICAgICAgaWYgKCEkKGV4dGVuZFBhZ2VDbGFzcykubGVuZ3RoKSB7CgogICAgICAgICAgICAgICAgICAgIGxhc3RFbGVtID0gJCgnZGl2W2RhdGEtdW5pcXVlPSInICsgJChpdGVtQ2xhc3MpLmxhc3QoKS5hdHRyKCJkYXRhLXVuaXF1ZSIpICsgJyJdJyk7CgogICAgICAgICAgICAgICAgICAgIGlmICghbGFzdEVsZW0ubGVuZ3RoKSByZXR1cm47CgogICAgICAgICAgICAgICAgICAgIC8vIEdldHMgdGhlIHRvcCBvZmZzZXQgb2YgdGhlIHBhZ2UgaGVhZGVyIHRoYXQgaXMgbGlua2VkIHRvIHRoZSBsYXN0IHRvYyBpdGVtCiAgICAgICAgICAgICAgICAgICAgbGFzdEVsZW1PZmZzZXQgPSBsYXN0RWxlbS5vZmZzZXQoKS50b3A7CgogICAgICAgICAgICAgICAgICAgIC8vIEFwcGVuZHMgYSBkaXYgdG8gdGhlIGJvdHRvbSBvZiB0aGUgcGFnZSBhbmQgc2V0cyB0aGUgaGVpZ2h0IHRvIHRoZSBkaWZmZXJlbmNlIG9mIHRoZSB3aW5kb3cgc2Nyb2xsVG9wIGFuZCB0aGUgbGFzdCBlbGVtZW50J3MgcG9zaXRpb24gdG9wIG9mZnNldAogICAgICAgICAgICAgICAgICAgICQoc2VsZi5vcHRpb25zLmNvbnRleHQpLmFwcGVuZCgkKCI8ZGl2Lz4iLCB7CgogICAgICAgICAgICAgICAgICAgICAgImNsYXNzIjogZXh0ZW5kUGFnZUNsYXNzTmFtZSwKCiAgICAgICAgICAgICAgICAgICAgICAiaGVpZ2h0IjogTWF0aC5hYnMobGFzdEVsZW1PZmZzZXQgLSB3aW5TY3JvbGxUb3ApICsgInB4IiwKCiAgICAgICAgICAgICAgICAgICAgICAiZGF0YS11bmlxdWUiOiBleHRlbmRQYWdlQ2xhc3NOYW1lCgogICAgICAgICAgICAgICAgICAgIH0pKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuZXh0ZW5kUGFnZVNjcm9sbCkgewoKICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFbGVtID0gc2VsZi5lbGVtZW50LmZpbmQoJ2xpLicgKyBzZWxmLmZvY3VzQ2xhc3MpOwoKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Njcm9sbFRvKCQoJ2RpdltkYXRhLXVuaXF1ZT0iJyArIGN1cnJlbnRFbGVtLmF0dHIoImRhdGEtdW5pcXVlIikgKyAnIl0nKSk7CgogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgLy8gVGhlIHplcm8gdGltZW91dCBlbnN1cmVzIHRoZSBmb2xsb3dpbmcgY29kZSBpcyBydW4gYWZ0ZXIgdGhlIHNjcm9sbCBldmVudHMKICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgICAgIC8vIF9Mb2NhbCB2YXJpYWJsZXNfCgogICAgICAgICAgICAgICAgLy8gU3RvcmVzIHRoZSBkaXN0YW5jZSB0byB0aGUgY2xvc2VzdCBhbmNob3IKICAgICAgICAgICAgICAgIHZhciBjbG9zZXN0QW5jaG9yRGlzdGFuY2UgPSBudWxsLAoKICAgICAgICAgICAgICAgICAgLy8gU3RvcmVzIHRoZSBpbmRleCBvZiB0aGUgY2xvc2VzdCBhbmNob3IKICAgICAgICAgICAgICAgICAgY2xvc2VzdEFuY2hvcklkeCA9IG51bGwsCgogICAgICAgICAgICAgICAgICAvLyBLZWVwcyBhIHJlZmVyZW5jZSB0byBhbGwgYW5jaG9ycwogICAgICAgICAgICAgICAgICBhbmNob3JzID0gJChzZWxmLm9wdGlvbnMuY29udGV4dCkuZmluZCgiZGl2W2RhdGEtdW5pcXVlXSIpLAoKICAgICAgICAgICAgICAgICAgYW5jaG9yVGV4dDsKCiAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmVzIHRoZSBpbmRleCBvZiB0aGUgY2xvc2VzdCBhbmNob3IKICAgICAgICAgICAgICAgIGFuY2hvcnMuZWFjaChmdW5jdGlvbihpZHgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gTWF0aC5hYnMoKCQodGhpcykubmV4dCgpLmxlbmd0aCA/ICQodGhpcykubmV4dCgpIDogJCh0aGlzKSkub2Zmc2V0KCkudG9wIC0gd2luU2Nyb2xsVG9wIC0gc2VsZi5vcHRpb25zLmhpZ2hsaWdodE9mZnNldCk7CiAgICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0QW5jaG9yRGlzdGFuY2UgPT0gbnVsbCB8fCBkaXN0YW5jZSA8IGNsb3Nlc3RBbmNob3JEaXN0YW5jZSkgewogICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RBbmNob3JEaXN0YW5jZSA9IGRpc3RhbmNlOwogICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RBbmNob3JJZHggPSBpZHg7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBhbmNob3JUZXh0ID0gJChhbmNob3JzW2Nsb3Nlc3RBbmNob3JJZHhdKS5hdHRyKCJkYXRhLXVuaXF1ZSIpOwoKICAgICAgICAgICAgICAgIC8vIFN0b3JlcyB0aGUgbGlzdCBpdGVtIEhUTUwgZWxlbWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50bHkgdHJhdmVyc2VkIGFuY2hvciB0YWcKICAgICAgICAgICAgICAgIGVsZW0gPSAkKCdsaVtkYXRhLXVuaXF1ZT0iJyArIGFuY2hvclRleHQgKyAnIl0nKTsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYGhpZ2hsaWdodE9uU2Nyb2xsYCBvcHRpb24gaXMgdHJ1ZSBhbmQgYSBuZXh0IGVsZW1lbnQgaXMgZm91bmQKICAgICAgICAgICAgICAgIGlmIChzZWxmLm9wdGlvbnMuaGlnaGxpZ2h0T25TY3JvbGwgJiYgZWxlbS5sZW5ndGgpIHsKCiAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZXMgaGlnaGxpZ2h0aW5nIGZyb20gYWxsIG9mIHRoZSBsaXN0IGl0ZW0ncwogICAgICAgICAgICAgICAgICBzZWxmLmVsZW1lbnQuZmluZCgiLiIgKyBzZWxmLmZvY3VzQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgICAgICAgICAvLyBIaWdobGlnaHRzIHRoZSBjb3JyZXNwb25kaW5nIGxpc3QgaXRlbQogICAgICAgICAgICAgICAgICBlbGVtLmFkZENsYXNzKHNlbGYuZm9jdXNDbGFzcyk7CgogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChzZWxmLm9wdGlvbnMuc2Nyb2xsSGlzdG9yeSkgewoKICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5oYXNoICE9PSAiIyIgKyBhbmNob3JUZXh0KSB7CgogICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKCIjIiArIGFuY2hvclRleHQpOwoKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIElmIHRoZSBgc2hvd0FuZEhpZGVPblNjcm9sbGAgb3B0aW9uIGlzIHRydWUKICAgICAgICAgICAgICAgIGlmIChzZWxmLm9wdGlvbnMuc2hvd0FuZEhpZGVPblNjcm9sbCAmJiBzZWxmLm9wdGlvbnMuc2hvd0FuZEhpZGUpIHsKCiAgICAgICAgICAgICAgICAgIHNlbGYuX3RyaWdnZXJTaG93KGVsZW0sIHRydWUpOwoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgfSwgMCk7CgogICAgICAgICAgICB9KTsKCiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICB9LAoKICAgICAgLy8gU2hvdwogICAgICAvLyAtLS0tCiAgICAgIC8vICAgICAgT3BlbnMgdGhlIGN1cnJlbnQgc3ViLWhlYWRlcgogICAgICBzaG93OiBmdW5jdGlvbihlbGVtLCBzY3JvbGwpIHsKCiAgICAgICAgLy8gU3RvcmVzIHRoZSBwbHVnaW4gY29udGV4dCBpbiB0aGUgYHNlbGZgIHZhcmlhYmxlCiAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAogICAgICAgICAgZWxlbWVudCA9IGVsZW07CgogICAgICAgIC8vIElmIHRoZSBzdWItaGVhZGVyIGlzIG5vdCBhbHJlYWR5IHZpc2libGUKICAgICAgICBpZiAoIWVsZW0uaXMoIjp2aXNpYmxlIikpIHsKCiAgICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBlbGVtZW50IGRvZXMgbm90IGhhdmUgYW55IG5lc3RlZCBzdWJoZWFkZXJzLCBpcyBub3QgYSBoZWFkZXIsIGFuZCBpdHMgcGFyZW50IGlzIG5vdCB2aXNpYmxlCiAgICAgICAgICBpZiAoIWVsZW0uZmluZChzdWJoZWFkZXJDbGFzcykubGVuZ3RoICYmICFlbGVtLnBhcmVudCgpLmlzKGhlYWRlckNsYXNzKSAmJiAhZWxlbS5wYXJlbnQoKS5pcygiOnZpc2libGUiKSkgewoKICAgICAgICAgICAgLy8gU2V0cyB0aGUgY3VycmVudCBlbGVtZW50IHRvIGFsbCBvZiB0aGUgc3ViaGVhZGVycyB3aXRoaW4gdGhlIGN1cnJlbnQgaGVhZGVyCiAgICAgICAgICAgIGVsZW0gPSBlbGVtLnBhcmVudHMoc3ViaGVhZGVyQ2xhc3MpLmFkZChlbGVtKTsKCiAgICAgICAgICB9CgogICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGFueSBuZXN0ZWQgc3ViaGVhZGVycyBhbmQgaXMgbm90IGEgaGVhZGVyCiAgICAgICAgICBlbHNlIGlmICghZWxlbS5jaGlsZHJlbihzdWJoZWFkZXJDbGFzcykubGVuZ3RoICYmICFlbGVtLnBhcmVudCgpLmlzKGhlYWRlckNsYXNzKSkgewoKICAgICAgICAgICAgLy8gU2V0cyB0aGUgY3VycmVudCBlbGVtZW50IHRvIHRoZSBjbG9zZXN0IHN1YmhlYWRlcgogICAgICAgICAgICBlbGVtID0gZWxlbS5jbG9zZXN0KHN1YmhlYWRlckNsYXNzKTsKCiAgICAgICAgICB9CgogICAgICAgICAgLy9EZXRlcm1pbmVzIHdoYXQgalF1ZXJ5IGVmZmVjdCB0byB1c2UKICAgICAgICAgIHN3aXRjaCAoc2VsZi5vcHRpb25zLnNob3dFZmZlY3QpIHsKCiAgICAgICAgICAgIC8vVXNlcyBgbm8gZWZmZWN0YAogICAgICAgICAgICBjYXNlICJub25lIjoKCiAgICAgICAgICAgICAgZWxlbS5zaG93KCk7CgogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAvL1VzZXMgdGhlIGpRdWVyeSBgc2hvd2Agc3BlY2lhbCBlZmZlY3QKICAgICAgICAgICAgY2FzZSAic2hvdyI6CgogICAgICAgICAgICAgIGVsZW0uc2hvdyhzZWxmLm9wdGlvbnMuc2hvd0VmZmVjdFNwZWVkKTsKCiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgIC8vVXNlcyB0aGUgalF1ZXJ5IGBzbGlkZURvd25gIHNwZWNpYWwgZWZmZWN0CiAgICAgICAgICAgIGNhc2UgInNsaWRlRG93biI6CgogICAgICAgICAgICAgIGVsZW0uc2xpZGVEb3duKHNlbGYub3B0aW9ucy5zaG93RWZmZWN0U3BlZWQpOwoKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgLy9Vc2VzIHRoZSBqUXVlcnkgYGZhZGVJbmAgc3BlY2lhbCBlZmZlY3QKICAgICAgICAgICAgY2FzZSAiZmFkZUluIjoKCiAgICAgICAgICAgICAgZWxlbS5mYWRlSW4oc2VsZi5vcHRpb25zLnNob3dFZmZlY3RTcGVlZCk7CgogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAvL0lmIG5vbmUgb2YgdGhlIGFib3ZlIG9wdGlvbnMgd2VyZSBwYXNzZWQsIHRoZW4gYSBgalF1ZXJ5VUkgc2hvdyBlZmZlY3RgIGlzIGV4cGVjdGVkCiAgICAgICAgICAgIGRlZmF1bHQ6CgogICAgICAgICAgICAgIGVsZW0uc2hvdygpOwoKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgc3ViaGVhZGVyIHBhcmVudCBlbGVtZW50IGlzIGEgaGVhZGVyCiAgICAgICAgaWYgKGVsZW0ucGFyZW50KCkuaXMoaGVhZGVyQ2xhc3MpKSB7CgogICAgICAgICAgLy8gSGlkZXMgYWxsIG5vbi1hY3RpdmUgc3ViLWhlYWRlcnMKICAgICAgICAgIHNlbGYuaGlkZSgkKHN1YmhlYWRlckNsYXNzKS5ub3QoZWxlbSkpOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IHN1YmhlYWRlciBwYXJlbnQgZWxlbWVudCBpcyBub3QgYSBoZWFkZXIKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAvLyBIaWRlcyBhbGwgbm9uLWFjdGl2ZSBzdWItaGVhZGVycwogICAgICAgICAgc2VsZi5oaWRlKCQoc3ViaGVhZGVyQ2xhc3MpLm5vdChlbGVtLmNsb3Nlc3QoaGVhZGVyQ2xhc3MpLmZpbmQoc3ViaGVhZGVyQ2xhc3MpLm5vdChlbGVtLnNpYmxpbmdzKCkpKSk7CgogICAgICAgIH0KCiAgICAgICAgLy8gTWFpbnRhaW5zIGNoYWluYWJsaXR5CiAgICAgICAgcmV0dXJuIHNlbGY7CgogICAgICB9LAoKICAgICAgLy8gSGlkZQogICAgICAvLyAtLS0tCiAgICAgIC8vICAgICAgQ2xvc2VzIHRoZSBjdXJyZW50IHN1Yi1oZWFkZXIKICAgICAgaGlkZTogZnVuY3Rpb24oZWxlbSkgewoKICAgICAgICAvLyBTdG9yZXMgdGhlIHBsdWdpbiBjb250ZXh0IGluIHRoZSBgc2VsZmAgdmFyaWFibGUKICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CgogICAgICAgIC8vRGV0ZXJtaW5lcyB3aGF0IGpRdWVyeSBlZmZlY3QgdG8gdXNlCiAgICAgICAgc3dpdGNoIChzZWxmLm9wdGlvbnMuaGlkZUVmZmVjdCkgewoKICAgICAgICAgIC8vIFVzZXMgYG5vIGVmZmVjdGAKICAgICAgICAgIGNhc2UgIm5vbmUiOgoKICAgICAgICAgICAgZWxlbS5oaWRlKCk7CgogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIC8vIFVzZXMgdGhlIGpRdWVyeSBgaGlkZWAgc3BlY2lhbCBlZmZlY3QKICAgICAgICAgIGNhc2UgImhpZGUiOgoKICAgICAgICAgICAgZWxlbS5oaWRlKHNlbGYub3B0aW9ucy5oaWRlRWZmZWN0U3BlZWQpOwoKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAvLyBVc2VzIHRoZSBqUXVlcnkgYHNsaWRlVXBgIHNwZWNpYWwgZWZmZWN0CiAgICAgICAgICBjYXNlICJzbGlkZVVwIjoKCiAgICAgICAgICAgIGVsZW0uc2xpZGVVcChzZWxmLm9wdGlvbnMuaGlkZUVmZmVjdFNwZWVkKTsKCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgLy8gVXNlcyB0aGUgalF1ZXJ5IGBmYWRlT3V0YCBzcGVjaWFsIGVmZmVjdAogICAgICAgICAgY2FzZSAiZmFkZU91dCI6CgogICAgICAgICAgICBlbGVtLmZhZGVPdXQoc2VsZi5vcHRpb25zLmhpZGVFZmZlY3RTcGVlZCk7CgogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIC8vIElmIG5vbmUgb2YgdGhlIGFib3ZlIG9wdGlvbnMgd2VyZSBwYXNzZWQsIHRoZW4gYSBganF1ZXJ5VUkgaGlkZSBlZmZlY3RgIGlzIGV4cGVjdGVkCiAgICAgICAgICBkZWZhdWx0OgoKICAgICAgICAgICAgZWxlbS5oaWRlKCk7CgogICAgICAgICAgICBicmVhazsKCiAgICAgICAgfQoKICAgICAgICAvLyBNYWludGFpbnMgY2hhaW5hYmxpdHkKICAgICAgICByZXR1cm4gc2VsZjsKICAgICAgfSwKCiAgICAgIC8vIF90cmlnZ2VyU2hvdwogICAgICAvLyAtLS0tLS0tLS0tLS0KICAgICAgLy8gICAgICBEZXRlcm1pbmVzIHdoYXQgZWxlbWVudHMgZ2V0IHNob3duIG9uIHNjcm9sbCBhbmQgY2xpY2sKICAgICAgX3RyaWdnZXJTaG93OiBmdW5jdGlvbihlbGVtLCBzY3JvbGwpIHsKCiAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwoKICAgICAgICAvLyBJZiB0aGUgY3VycmVudCBlbGVtZW50J3MgcGFyZW50IGlzIGEgaGVhZGVyIGVsZW1lbnQgb3IgdGhlIG5leHQgZWxlbWVudCBpcyBhIG5lc3RlZCBzdWJoZWFkZXIgZWxlbWVudAogICAgICAgIGlmIChlbGVtLnBhcmVudCgpLmlzKGhlYWRlckNsYXNzKSB8fCBlbGVtLm5leHQoKS5pcyhzdWJoZWFkZXJDbGFzcykpIHsKCiAgICAgICAgICAvLyBTaG93cyB0aGUgbmV4dCBzdWItaGVhZGVyIGVsZW1lbnQKICAgICAgICAgIHNlbGYuc2hvdyhlbGVtLm5leHQoc3ViaGVhZGVyQ2xhc3MpLCBzY3JvbGwpOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGVsZW1lbnQncyBwYXJlbnQgaXMgYSBzdWJoZWFkZXIgZWxlbWVudAogICAgICAgIGVsc2UgaWYgKGVsZW0ucGFyZW50KCkuaXMoc3ViaGVhZGVyQ2xhc3MpKSB7CgogICAgICAgICAgLy8gU2hvd3MgdGhlIHBhcmVudCBzdWItaGVhZGVyIGVsZW1lbnQKICAgICAgICAgIHNlbGYuc2hvdyhlbGVtLnBhcmVudCgpLCBzY3JvbGwpOwoKICAgICAgICB9CgogICAgICAgIC8vIE1haW50YWlucyBjaGFpbmFiaWxpdHkKICAgICAgICByZXR1cm4gc2VsZjsKCiAgICAgIH0sCgogICAgICAvLyBfYWRkQ1NTQ2xhc3NlcwogICAgICAvLyAtLS0tLS0tLS0tLS0tLQogICAgICAvLyAgICAgIEFkZHMgQ1NTIGNsYXNzZXMgdG8gdGhlIG5ld2x5IGdlbmVyYXRlZCB0YWJsZSBvZiBjb250ZW50cyBIVE1MCiAgICAgIF9hZGRDU1NDbGFzc2VzOiBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gSWYgdGhlIHVzZXIgd2FudHMgYSBqcXVlcnlVSSB0aGVtZQogICAgICAgIGlmICh0aGlzLm9wdGlvbnMudGhlbWUgPT09ICJqcXVlcnl1aSIpIHsKCiAgICAgICAgICB0aGlzLmZvY3VzQ2xhc3MgPSAidWktc3RhdGUtZGVmYXVsdCI7CgogICAgICAgICAgdGhpcy5ob3ZlckNsYXNzID0gInVpLXN0YXRlLWhvdmVyIjsKCiAgICAgICAgICAvL0FkZHMgdGhlIGRlZmF1bHQgc3R5bGluZyB0byB0aGUgZHJvcGRvd24gbGlzdAogICAgICAgICAgdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS13aWRnZXQiKS5maW5kKCIudG9jLXRpdGxlIikuYWRkQ2xhc3MoInVpLXdpZGdldC1oZWFkZXIiKS5lbmQoKS5maW5kKCJsaSIpLmFkZENsYXNzKCJ1aS13aWRnZXQtY29udGVudCIpOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSB1c2VyIHdhbnRzIGEgdHdpdHRlckJvb3RzdHJhcCB0aGVtZQogICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy50aGVtZSA9PT0gImJvb3RzdHJhcCIpIHsKCiAgICAgICAgICB0aGlzLmVsZW1lbnQuZmluZChoZWFkZXJDbGFzcyArICIsIiArIHN1YmhlYWRlckNsYXNzKS5hZGRDbGFzcygibmF2IG5hdi1saXN0Iik7CgogICAgICAgICAgdGhpcy5mb2N1c0NsYXNzID0gImFjdGl2ZSI7CgogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIHVzZXIgd2FudHMgYSB0d2l0dGVyQm9vdHN0cmFwIHRoZW1lCiAgICAgICAgZWxzZSBpZiAodGhpcy5vcHRpb25zLnRoZW1lID09PSAiYm9vdHN0cmFwMyIpIHsKCiAgICAgICAgICB0aGlzLmVsZW1lbnQuZmluZChoZWFkZXJDbGFzcyArICIsIiArIHN1YmhlYWRlckNsYXNzKS5hZGRDbGFzcygibGlzdC1ncm91cCIpOwoKICAgICAgICAgIHRoaXMuZWxlbWVudC5maW5kKGl0ZW1DbGFzcykuYWRkQ2xhc3MoImxpc3QtZ3JvdXAtaXRlbSIpOwoKICAgICAgICAgIHRoaXMuZm9jdXNDbGFzcyA9ICJhY3RpdmUiOwoKICAgICAgICB9CgogICAgICAgIC8vIElmIGEgdXNlciBkb2VzIG5vdCB3YW50IGEgcHJlYnVpbHQgdGhlbWUKICAgICAgICBlbHNlIHsKCiAgICAgICAgICAvLyBBZGRzIG1vcmUgbmV1dHJhbCBjbGFzc2VzIChpbnN0ZWFkIG9mIGpxdWVyeXVpKQoKICAgICAgICAgIHRoaXMuZm9jdXNDbGFzcyA9IHRvY0ZvY3VzQ2xhc3NOYW1lOwoKICAgICAgICAgIHRoaXMuaG92ZXJDbGFzcyA9IHRvY0hvdmVyQ2xhc3NOYW1lOwoKICAgICAgICB9CgogICAgICAgIC8vTWFpbnRhaW5zIGNoYWluYWJpbGl0eQogICAgICAgIHJldHVybiB0aGlzOwoKICAgICAgfSwKCiAgICAgIC8vIHNldE9wdGlvbgogICAgICAvLyAtLS0tLS0tLS0KICAgICAgLy8gICAgICBTZXRzIGEgc2luZ2xlIFRvY2lmeSBvcHRpb24gYWZ0ZXIgdGhlIHBsdWdpbiBpcyBpbnZva2VkCiAgICAgIHNldE9wdGlvbjogZnVuY3Rpb24oKSB7CgogICAgICAgIC8vIENhbGxzIHRoZSBqUXVlcnlVSSBXaWRnZXQgRmFjdG9yeSBzZXRPcHRpb24gbWV0aG9kCiAgICAgICAgJC5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb24uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKCiAgICAgIH0sCgogICAgICAvLyBzZXRPcHRpb25zCiAgICAgIC8vIC0tLS0tLS0tLS0KICAgICAgLy8gICAgICBTZXRzIGEgc2luZ2xlIG9yIG11bHRpcGxlIFRvY2lmeSBvcHRpb25zIGFmdGVyIHRoZSBwbHVnaW4gaXMgaW52b2tlZAogICAgICBzZXRPcHRpb25zOiBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gQ2FsbHMgdGhlIGpRdWVyeVVJIFdpZGdldCBGYWN0b3J5IHNldE9wdGlvbnMgbWV0aG9kCiAgICAgICAgJC5XaWRnZXQucHJvdG90eXBlLl9zZXRPcHRpb25zLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CgogICAgICB9LAoKICAgICAgLy8gX3Njcm9sbFRvCiAgICAgIC8vIC0tLS0tLS0tLQogICAgICAvLyAgICAgIFNjcm9sbHMgdG8gYSBzcGVjaWZpYyBlbGVtZW50CiAgICAgIF9zY3JvbGxUbzogZnVuY3Rpb24oZWxlbSkgewoKICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCiAgICAgICAgICBkdXJhdGlvbiA9IHNlbGYub3B0aW9ucy5zbW9vdGhTY3JvbGwgfHwgMCwKICAgICAgICAgIHNjcm9sbFRvID0gc2VsZi5vcHRpb25zLnNjcm9sbFRvLAogICAgICAgICAgY3VycmVudERpdiA9ICQoJ2RpdltkYXRhLXVuaXF1ZT0iJyArIGVsZW0uYXR0cigiZGF0YS11bmlxdWUiKSArICciXScpOwoKICAgICAgICBpZiAoIWN1cnJlbnREaXYubGVuZ3RoKSB7CgogICAgICAgICAgcmV0dXJuIHNlbGY7CgogICAgICAgIH0KCiAgICAgICAgLy8gT25jZSBhbGwgYW5pbWF0aW9ucyBvbiB0aGUgcGFnZSBhcmUgY29tcGxldGUsIHRoaXMgY2FsbGJhY2sgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQKICAgICAgICAkKCJodG1sLCBib2R5IikucHJvbWlzZSgpLmRvbmUoZnVuY3Rpb24oKSB7CgogICAgICAgICAgLy8gQW5pbWF0ZXMgdGhlIGh0bWwgYW5kIGJvZHkgZWxlbWVudCBzY3JvbGx0b3BzCiAgICAgICAgICAkKCJodG1sLCBib2R5IikuYW5pbWF0ZSh7CgogICAgICAgICAgICAvLyBTZXRzIHRoZSBqUXVlcnkgYHNjcm9sbFRvcGAgdG8gdGhlIHRvcCBvZmZzZXQgb2YgdGhlIEhUTUwgZGl2IHRhZyB0aGF0IG1hdGNoZXMgdGhlIGN1cnJlbnQgbGlzdCBpdGVtJ3MgYGRhdGEtdW5pcXVlYCB0YWcKICAgICAgICAgICAgInNjcm9sbFRvcCI6IGN1cnJlbnREaXYub2Zmc2V0KCkudG9wIC0gKCQuaXNGdW5jdGlvbihzY3JvbGxUbykgPyBzY3JvbGxUby5jYWxsKCkgOiBzY3JvbGxUbykgKyAicHgiCgogICAgICAgICAgfSwgewoKICAgICAgICAgICAgLy8gU2V0cyB0aGUgc21vb3RoU2Nyb2xsIGFuaW1hdGlvbiB0aW1lIGR1cmF0aW9uIHRvIHRoZSBzbW9vdGhTY3JvbGxTcGVlZCBvcHRpb24KICAgICAgICAgICAgImR1cmF0aW9uIjogZHVyYXRpb24KCiAgICAgICAgICB9KTsKCiAgICAgICAgfSk7CgogICAgICAgIC8vIE1haW50YWlucyBjaGFpbmFiaWxpdHkKICAgICAgICByZXR1cm4gc2VsZjsKCiAgICAgIH0KCiAgICB9KTsKCiAgfSkpOyAvL2VuZCBvZiBwbHVnaW4K"></script>
|
|
<script src="data:application/javascript;base64,CgovKioKICogalF1ZXJ5IFBsdWdpbjogU3RpY2t5IFRhYnMKICoKICogQGF1dGhvciBBaWRhbiBMaXN0ZXIgPGFpZGFuQHBocC5uZXQ+CiAqIGFkYXB0ZWQgYnkgUnViZW4gQXJzbGFuIHRvIGFjdGl2YXRlIHBhcmVudCB0YWJzIHRvbwogKiBodHRwOi8vd3d3LmFpZGFubGlzdGVyLmNvbS8yMDE0LzAzL3BlcnNpc3RpbmctdGhlLXRhYi1zdGF0ZS1pbi1ib290c3RyYXAvCiAqLwooZnVuY3Rpb24oJCkgewogICJ1c2Ugc3RyaWN0IjsKICAkLmZuLnJtYXJrZG93blN0aWNreVRhYnMgPSBmdW5jdGlvbigpIHsKICAgIHZhciBjb250ZXh0ID0gdGhpczsKICAgIC8vIFNob3cgdGhlIHRhYiBjb3JyZXNwb25kaW5nIHdpdGggdGhlIGhhc2ggaW4gdGhlIFVSTCwgb3IgdGhlIGZpcnN0IHRhYgogICAgdmFyIHNob3dTdHVmZkZyb21IYXNoID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBoYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7CiAgICAgIHZhciBzZWxlY3RvciA9IGhhc2ggPyAnYVtocmVmPSInICsgaGFzaCArICciXScgOiAnbGkuYWN0aXZlID4gYSc7CiAgICAgIHZhciAkc2VsZWN0b3IgPSAkKHNlbGVjdG9yLCBjb250ZXh0KTsKICAgICAgaWYoJHNlbGVjdG9yLmRhdGEoJ3RvZ2dsZScpID09PSAidGFiIikgewogICAgICAgICRzZWxlY3Rvci50YWIoJ3Nob3cnKTsKICAgICAgICAvLyB3YWxrIHVwIHRoZSBhbmNlc3RvcnMgb2YgdGhpcyBlbGVtZW50LCBzaG93IGFueSBoaWRkZW4gdGFicwogICAgICAgICRzZWxlY3Rvci5wYXJlbnRzKCcuc2VjdGlvbi50YWJzZXQnKS5lYWNoKGZ1bmN0aW9uKGksIGVsbSkgewogICAgICAgICAgdmFyIGxpbmsgPSAkKCdhW2hyZWY9IiMnICsgJChlbG0pLmF0dHIoJ2lkJykgKyAnIl0nKTsKICAgICAgICAgIGlmKGxpbmsuZGF0YSgndG9nZ2xlJykgPT09ICJ0YWIiKSB7CiAgICAgICAgICAgIGxpbmsudGFiKCJzaG93Iik7CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0KICAgIH07CgoKICAgIC8vIFNldCB0aGUgY29ycmVjdCB0YWIgd2hlbiB0aGUgcGFnZSBsb2FkcwogICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CgogICAgLy8gU2V0IHRoZSBjb3JyZWN0IHRhYiB3aGVuIGEgdXNlciB1c2VzIHRoZWlyIGJhY2svZm9yd2FyZCBidXR0b24KICAgICQod2luZG93KS5vbignaGFzaGNoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICBzaG93U3R1ZmZGcm9tSGFzaChjb250ZXh0KTsKICAgIH0pOwoKICAgIC8vIENoYW5nZSB0aGUgVVJMIHdoZW4gdGFicyBhcmUgY2xpY2tlZAogICAgJCgnYScsIGNvbnRleHQpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHsKICAgICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgdGhpcy5ocmVmKTsKICAgICAgc2hvd1N0dWZmRnJvbUhhc2goY29udGV4dCk7CiAgICB9KTsKCiAgICByZXR1cm4gdGhpczsKICB9Owp9KGpRdWVyeSkpOwoKd2luZG93LmJ1aWxkVGFic2V0cyA9IGZ1bmN0aW9uKHRvY0lEKSB7CgogIC8vIGJ1aWxkIGEgdGFic2V0IGZyb20gYSBzZWN0aW9uIGRpdiB3aXRoIHRoZSAudGFic2V0IGNsYXNzCiAgZnVuY3Rpb24gYnVpbGRUYWJzZXQodGFic2V0KSB7CgogICAgLy8gY2hlY2sgZm9yIGZhZGUgYW5kIHBpbGxzIG9wdGlvbnMKICAgIHZhciBmYWRlID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtZmFkZSIpOwogICAgdmFyIHBpbGxzID0gdGFic2V0Lmhhc0NsYXNzKCJ0YWJzZXQtcGlsbHMiKTsKICAgIHZhciBuYXZDbGFzcyA9IHBpbGxzID8gIm5hdi1waWxscyIgOiAibmF2LXRhYnMiOwoKICAgIC8vIGRldGVybWluZSB0aGUgaGVhZGluZyBsZXZlbCBvZiB0aGUgdGFic2V0IGFuZCB0YWJzCiAgICB2YXIgbWF0Y2ggPSB0YWJzZXQuYXR0cignY2xhc3MnKS5tYXRjaCgvbGV2ZWwoXGQpIC8pOwogICAgaWYgKG1hdGNoID09PSBudWxsKQogICAgICByZXR1cm47CiAgICB2YXIgdGFic2V0TGV2ZWwgPSBOdW1iZXIobWF0Y2hbMV0pOwogICAgdmFyIHRhYkxldmVsID0gdGFic2V0TGV2ZWwgKyAxOwoKICAgIC8vIGZpbmQgYWxsIHN1YmhlYWRpbmdzIGltbWVkaWF0ZWx5IGJlbG93CiAgICB2YXIgdGFicyA9IHRhYnNldC5maW5kKCJkaXYuc2VjdGlvbi5sZXZlbCIgKyB0YWJMZXZlbCk7CiAgICBpZiAoIXRhYnMubGVuZ3RoKQogICAgICByZXR1cm47CgogICAgLy8gY3JlYXRlIHRhYmxpc3QgYW5kIHRhYi1jb250ZW50IGVsZW1lbnRzCiAgICB2YXIgdGFiTGlzdCA9ICQoJzx1bCBjbGFzcz0ibmF2ICcgKyBuYXZDbGFzcyArICciIHJvbGU9InRhYmxpc3QiPjwvdWw+Jyk7CiAgICAkKHRhYnNbMF0pLmJlZm9yZSh0YWJMaXN0KTsKICAgIHZhciB0YWJDb250ZW50ID0gJCgnPGRpdiBjbGFzcz0idGFiLWNvbnRlbnQiPjwvZGl2PicpOwogICAgJCh0YWJzWzBdKS5iZWZvcmUodGFiQ29udGVudCk7CgogICAgLy8gYnVpbGQgdGhlIHRhYnNldAogICAgdmFyIGFjdGl2ZVRhYiA9IDA7CiAgICB0YWJzLmVhY2goZnVuY3Rpb24oaSkgewoKICAgICAgLy8gZ2V0IHRoZSB0YWIgZGl2CiAgICAgIHZhciB0YWIgPSAkKHRhYnNbaV0pOwoKICAgICAgLy8gZ2V0IHRoZSBpZCB0aGVuIHNhbml0aXplIGl0IGZvciB1c2Ugd2l0aCBib290c3RyYXAgdGFicwogICAgICB2YXIgaWQgPSB0YWIuYXR0cignaWQnKTsKCiAgICAgIC8vIHNlZSBpZiB0aGlzIGlzIG1hcmtlZCBhcyB0aGUgYWN0aXZlIHRhYgogICAgICBpZiAodGFiLmhhc0NsYXNzKCdhY3RpdmUnKSkKICAgICAgICBhY3RpdmVUYWIgPSBpOwoKICAgICAgLy8gcmVtb3ZlIGFueSB0YWJsZSBvZiBjb250ZW50cyBlbnRyaWVzIGFzc29jaWF0ZWQgd2l0aAogICAgICAvLyB0aGlzIElEIChzaW5jZSB3ZSdsbCBiZSByZW1vdmluZyB0aGUgaGVhZGluZyBlbGVtZW50KQogICAgICAkKCJkaXYjIiArIHRvY0lEICsgIiBsaSBhW2hyZWY9JyMiICsgaWQgKyAiJ10iKS5wYXJlbnQoKS5yZW1vdmUoKTsKCiAgICAgIC8vIHNhbml0aXplIHRoZSBpZCBmb3IgdXNlIHdpdGggYm9vdHN0cmFwIHRhYnMKICAgICAgaWQgPSBpZC5yZXBsYWNlKC9bLlwvPyYhIzw+XS9nLCAnJykucmVwbGFjZSgvXHMvZywgJ18nKTsKICAgICAgdGFiLmF0dHIoJ2lkJywgaWQpOwoKICAgICAgLy8gZ2V0IHRoZSBoZWFkaW5nIGVsZW1lbnQgd2l0aGluIGl0LCBncmFiIGl0J3MgdGV4dCwgdGhlbiByZW1vdmUgaXQKICAgICAgdmFyIGhlYWRpbmcgPSB0YWIuZmluZCgnaCcgKyB0YWJMZXZlbCArICc6Zmlyc3QnKTsKICAgICAgdmFyIGhlYWRpbmdUZXh0ID0gaGVhZGluZy5odG1sKCk7CiAgICAgIGhlYWRpbmcucmVtb3ZlKCk7CgogICAgICAvLyBidWlsZCBhbmQgYXBwZW5kIHRoZSB0YWIgbGlzdCBpdGVtCiAgICAgIHZhciBhID0gJCgnPGEgcm9sZT0idGFiIiBkYXRhLXRvZ2dsZT0idGFiIj4nICsgaGVhZGluZ1RleHQgKyAnPC9hPicpOwogICAgICBhLmF0dHIoJ2hyZWYnLCAnIycgKyBpZCk7CiAgICAgIGEuYXR0cignYXJpYS1jb250cm9scycsIGlkKTsKICAgICAgdmFyIGxpID0gJCgnPGxpIHJvbGU9InByZXNlbnRhdGlvbiI+PC9saT4nKTsKICAgICAgbGkuYXBwZW5kKGEpOwogICAgICB0YWJMaXN0LmFwcGVuZChsaSk7CgogICAgICAvLyBzZXQgaXQncyBhdHRyaWJ1dGVzCiAgICAgIHRhYi5hdHRyKCdyb2xlJywgJ3RhYnBhbmVsJyk7CiAgICAgIHRhYi5hZGRDbGFzcygndGFiLXBhbmUnKTsKICAgICAgdGFiLmFkZENsYXNzKCd0YWJiZWQtcGFuZScpOwogICAgICBpZiAoZmFkZSkKICAgICAgICB0YWIuYWRkQ2xhc3MoJ2ZhZGUnKTsKCiAgICAgIC8vIG1vdmUgaXQgaW50byB0aGUgdGFiIGNvbnRlbnQgZGl2CiAgICAgIHRhYi5kZXRhY2goKS5hcHBlbmRUbyh0YWJDb250ZW50KTsKICAgIH0pOwoKICAgIC8vIHNldCBhY3RpdmUgdGFiCiAgICAkKHRhYkxpc3QuY2hpbGRyZW4oJ2xpJylbYWN0aXZlVGFiXSkuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgdmFyIGFjdGl2ZSA9ICQodGFiQ29udGVudC5jaGlsZHJlbignZGl2LnNlY3Rpb24nKVthY3RpdmVUYWJdKTsKICAgIGFjdGl2ZS5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICBpZiAoZmFkZSkKICAgICAgYWN0aXZlLmFkZENsYXNzKCdpbicpOwoKICAgIGlmICh0YWJzZXQuaGFzQ2xhc3MoInRhYnNldC1zdGlja3kiKSkKICAgICAgdGFic2V0LnJtYXJrZG93blN0aWNreVRhYnMoKTsKICB9CgogIC8vIGNvbnZlcnQgc2VjdGlvbiBkaXZzIHdpdGggdGhlIC50YWJzZXQgY2xhc3MgdG8gdGFic2V0cwogIHZhciB0YWJzZXRzID0gJCgiZGl2LnNlY3Rpb24udGFic2V0Iik7CiAgdGFic2V0cy5lYWNoKGZ1bmN0aW9uKGkpIHsKICAgIGJ1aWxkVGFic2V0KCQodGFic2V0c1tpXSkpOwogIH0pOwp9OwoK"></script>
|
|
<script src="data:application/javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uIE9yLCBjYW4gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICJjb2RlIiBhbmQgImRhdGEiCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nCiAgLy8gICBvZiBKUyB0aGF0J3MgYW4gZXhwciB0aGF0IHlpZWxkcyBhIGZ1bmN0aW9uLCBhbmQgImRhdGEiIHNob3VsZCBiZQogIC8vICAgYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoZW4gdGhhdAogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLgogIC8vIEBwYXJhbSB0YXJnZXQgVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgInRoaXMiIGZvciBlYWNoIGZ1bmN0aW9uCiAgLy8gICBleGVjdXRpb24uCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlCiAgLy8gICBzYW1lIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byBhbGwgZnVuY3Rpb25zLikKICBmdW5jdGlvbiBldmFsQW5kUnVuKHRhc2tzLCB0YXJnZXQsIGFyZ3MpIHsKICAgIGlmICh0YXNrcykgewogICAgICBmb3JFYWNoKHRhc2tzLCBmdW5jdGlvbih0YXNrKSB7CiAgICAgICAgdmFyIHRoZXNlQXJncyA9IGFyZ3M7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIHRoZXNlQXJncyA9IHRoZXNlQXJncy5jb25jYXQoW3Rhc2suZGF0YV0pOwogICAgICAgICAgdGFzayA9IHRhc2suY29kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRhc2tGdW5jID0gdHJ5RXZhbCh0YXNrKTsKICAgICAgICBpZiAodHlwZW9mKHRhc2tGdW5jKSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOwogICAgICAgIH0KICAgICAgICB0YXNrRnVuYy5hcHBseSh0YXJnZXQsIHRoZXNlQXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgLy8gQXR0ZW1wdCBldmFsKCkgYm90aCB3aXRoIGFuZCB3aXRob3V0IGVuY2xvc2luZyBpbiBwYXJlbnRoZXNlcy4KICAvLyBOb3RlIHRoYXQgZW5jbG9zaW5nIGNvZXJjZXMgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpbnRvCiAgLy8gYW4gZXhwcmVzc2lvbiB0aGF0IGV2YWwoKSBjYW4gcGFyc2UKICAvLyAob3RoZXJ3aXNlLCBhIFN5bnRheEVycm9yIGlzIHRocm93bikKICBmdW5jdGlvbiB0cnlFdmFsKGNvZGUpIHsKICAgIHZhciByZXN1bHQgPSBudWxsOwogICAgdHJ5IHsKICAgICAgcmVzdWx0ID0gZXZhbCgiKCIgKyBjb2RlICsgIikiKTsKICAgIH0gY2F0Y2goZXJyb3IpIHsKICAgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikpIHsKICAgICAgICB0aHJvdyBlcnJvcjsKICAgICAgfQogICAgICB0cnkgewogICAgICAgIHJlc3VsdCA9IGV2YWwoY29kZSk7CiAgICAgIH0gY2F0Y2goZSkgewogICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHsKICAgICAgICAgIHRocm93IGVycm9yOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBlOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKICB9CgogIGZ1bmN0aW9uIGluaXRTaXppbmcoZWwpIHsKICAgIHZhciBzaXppbmcgPSBzaXppbmdQb2xpY3koZWwpOwogICAgaWYgKCFzaXppbmcpCiAgICAgIHJldHVybjsKCiAgICB2YXIgY2VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImh0bWx3aWRnZXRfY29udGFpbmVyIik7CiAgICBpZiAoIWNlbCkKICAgICAgcmV0dXJuOwoKICAgIGlmICh0eXBlb2Yoc2l6aW5nLnBhZGRpbmcpICE9PSAidW5kZWZpbmVkIikgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm1hcmdpbiA9ICIwIjsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nID0gcGFkZGluZ1RvQ3NzKHVucGFja1BhZGRpbmcoc2l6aW5nLnBhZGRpbmcpKTsKICAgIH0KCiAgICBpZiAoc2l6aW5nLmZpbGwpIHsKICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBpZiAoY2VsKSB7CiAgICAgICAgY2VsLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKICAgICAgICB2YXIgcGFkID0gdW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZyk7CiAgICAgICAgY2VsLnN0eWxlLnRvcCA9IHBhZC50b3AgKyAicHgiOwogICAgICAgIGNlbC5zdHlsZS5yaWdodCA9IHBhZC5yaWdodCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmJvdHRvbSA9IHBhZC5ib3R0b20gKyAicHgiOwogICAgICAgIGNlbC5zdHlsZS5sZWZ0ID0gcGFkLmxlZnQgKyAicHgiOwogICAgICAgIGVsLnN0eWxlLndpZHRoID0gIjEwMCUiOwogICAgICAgIGVsLnN0eWxlLmhlaWdodCA9ICIxMDAlIjsKICAgICAgfQoKICAgICAgcmV0dXJuIHsKICAgICAgICBnZXRXaWR0aDogZnVuY3Rpb24oKSB7IHJldHVybiBjZWwub2Zmc2V0V2lkdGg7IH0sCiAgICAgICAgZ2V0SGVpZ2h0OiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKCiAgICB9IGVsc2UgewogICAgICBlbC5zdHlsZS53aWR0aCA9IHB4KHNpemluZy53aWR0aCk7CiAgICAgIGVsLnN0eWxlLmhlaWdodCA9IHB4KHNpemluZy5oZWlnaHQpOwoKICAgICAgcmV0dXJuIHsKICAgICAgICBnZXRXaWR0aDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZWwub2Zmc2V0SGVpZ2h0OyB9CiAgICAgIH07CiAgICB9CiAgfQoKICAvLyBEZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgbWV0aG9kcwogIHZhciBkZWZhdWx0cyA9IHsKICAgIGZpbmQ6IGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgIHJldHVybiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCAiLiIgKyB0aGlzLm5hbWUpOwogICAgfSwKICAgIHJlbmRlckVycm9yOiBmdW5jdGlvbihlbCwgZXJyKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKCiAgICAgIHRoaXMuY2xlYXJFcnJvcihlbCk7CgogICAgICAvLyBBZGQgYWxsIHRoZXNlIGVycm9yIGNsYXNzZXMsIGFzIFNoaW55IGRvZXMKICAgICAgdmFyIGVyckNsYXNzID0gInNoaW55LW91dHB1dC1lcnJvciI7CiAgICAgIGlmIChlcnIudHlwZSAhPT0gbnVsbCkgewogICAgICAgIC8vIHVzZSB0aGUgY2xhc3NlcyBvZiB0aGUgZXJyb3IgY29uZGl0aW9uIGFzIENTUyBjbGFzcyBuYW1lcwogICAgICAgIGVyckNsYXNzID0gZXJyQ2xhc3MgKyAiICIgKyAkLm1hcChhc0FycmF5KGVyci50eXBlKSwgZnVuY3Rpb24odHlwZSkgewogICAgICAgICAgcmV0dXJuIGVyckNsYXNzICsgIi0iICsgdHlwZTsKICAgICAgICB9KS5qb2luKCIgIik7CiAgICAgIH0KICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgaHRtbHdpZGdldHMtZXJyb3IiOwoKICAgICAgLy8gSXMgZWwgaW5saW5lIG9yIGJsb2NrPyBJZiBpbmxpbmUgb3IgaW5saW5lLWJsb2NrLCBqdXN0IGRpc3BsYXk6bm9uZSBpdAogICAgICAvLyBhbmQgYWRkIGFuIGlubGluZSBlcnJvci4KICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuY3NzKCJkaXNwbGF5Iik7CiAgICAgICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIsIGRpc3BsYXkpOwoKICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7CiAgICAgICAgJGVsLmhpZGUoKTsKICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgIT09ICIiKSB7CiAgICAgICAgICB2YXIgZXJyb3JTcGFuID0gJCgiPHNwYW4+IikuYWRkQ2xhc3MoZXJyQ2xhc3MpOwogICAgICAgICAgZXJyb3JTcGFuLnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yU3Bhbik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpIHsKICAgICAgICAvLyBJZiBibG9jaywgYWRkIGFuIGVycm9yIGp1c3QgYWZ0ZXIgdGhlIGVsLCBzZXQgdmlzaWJpbGl0eTpub25lIG9uIHRoZQogICAgICAgIC8vIGVsLCBhbmQgcG9zaXRpb24gdGhlIGVycm9yIHRvIGJlIG9uIHRvcCBvZiB0aGUgZWwuCiAgICAgICAgLy8gTWFyayBpdCB3aXRoIGEgdW5pcXVlIElEIGFuZCBDU1MgY2xhc3Mgc28gd2UgY2FuIHJlbW92ZSBpdCBsYXRlci4KICAgICAgICAkZWwuY3NzKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvckRpdiA9ICQoIjxkaXY+IikuYWRkQ2xhc3MoZXJyQ2xhc3MpLmNzcygicG9zaXRpb24iLCAiYWJzb2x1dGUiKQogICAgICAgICAgICAuY3NzKCJ0b3AiLCBlbC5vZmZzZXRUb3ApCiAgICAgICAgICAgIC5jc3MoImxlZnQiLCBlbC5vZmZzZXRMZWZ0KQogICAgICAgICAgICAvLyBzZXR0aW5nIHdpZHRoIGNhbiBwdXNoIG91dCB0aGUgcGFnZSBzaXplLCBmb3JjaW5nIG90aGVyd2lzZQogICAgICAgICAgICAvLyB1bm5lY2Vzc2FyeSBzY3JvbGxiYXJzIHRvIGFwcGVhciBhbmQgbWFraW5nIGl0IGltcG9zc2libGUgZm9yCiAgICAgICAgICAgIC8vIHRoZSBlbGVtZW50IHRvIHNocmluazsgc28gdXNlIG1heC13aWR0aCBpbnN0ZWFkCiAgICAgICAgICAgIC5jc3MoIm1heFdpZHRoIiwgZWwub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICBlcnJvckRpdi50ZXh0KGVyci5tZXNzYWdlKTsKICAgICAgICAgICRlbC5hZnRlcihlcnJvckRpdik7CgogICAgICAgICAgLy8gUmVhbGx5IGR1bWIgd2F5IHRvIGtlZXAgdGhlIHNpemUvcG9zaXRpb24gb2YgdGhlIGVycm9yIGluIHN5bmMgd2l0aAogICAgICAgICAgLy8gdGhlIHBhcmVudCBlbGVtZW50IGFzIHRoZSB3aW5kb3cgaXMgcmVzaXplZCBvciB3aGF0ZXZlci4KICAgICAgICAgIHZhciBpbnRJZCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoIWVycm9yRGl2WzBdLnBhcmVudEVsZW1lbnQpIHsKICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludElkKTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZXJyb3JEaXYKICAgICAgICAgICAgICAuY3NzKCJ0b3AiLCBlbC5vZmZzZXRUb3ApCiAgICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgICAuY3NzKCJoZWlnaHQiLCBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgfSwgNTAwKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0sCiAgICBjbGVhckVycm9yOiBmdW5jdGlvbihlbCkgewogICAgICB2YXIgJGVsID0gJChlbCk7CiAgICAgIHZhciBkaXNwbGF5ID0gJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIik7CiAgICAgICRlbC5kYXRhKCJyZXN0b3JlLWRpc3BsYXktbW9kZSIsIG51bGwpOwoKICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7CiAgICAgICAgaWYgKGRpc3BsYXkpCiAgICAgICAgICAkZWwuY3NzKCJkaXNwbGF5IiwgZGlzcGxheSk7CiAgICAgICAgJChlbC5uZXh0U2libGluZykuZmlsdGVyKCIuaHRtbHdpZGdldHMtZXJyb3IiKS5yZW1vdmUoKTsKICAgICAgfSBlbHNlIGlmIChkaXNwbGF5ID09PSAiYmxvY2siKXsKICAgICAgICAkZWwuY3NzKCJ2aXNpYmlsaXR5IiwgImluaGVyaXQiKTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9CiAgICB9LAogICAgc2l6aW5nOiB7fQogIH07CgogIC8vIENhbGxlZCBieSB3aWRnZXQgYmluZGluZ3MgdG8gcmVnaXN0ZXIgYSBuZXcgdHlwZSBvZiB3aWRnZXQuIFRoZSBkZWZpbml0aW9uCiAgLy8gb2JqZWN0IGNhbiBjb250YWluIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKICAvLyAtIG5hbWUgKHJlcXVpcmVkKSAtIEEgc3RyaW5nIGluZGljYXRpbmcgdGhlIGJpbmRpbmcgbmFtZSwgd2hpY2ggd2lsbCBiZQogIC8vICAgdXNlZCBieSBkZWZhdWx0IGFzIHRoZSBDU1MgY2xhc3NuYW1lIHRvIGxvb2sgZm9yLgogIC8vIC0gaW5pdGlhbGl6ZSAob3B0aW9uYWwpIC0gQSBmdW5jdGlvbihlbCkgdGhhdCB3aWxsIGJlIGNhbGxlZCBvbmNlIHBlcgogIC8vICAgd2lkZ2V0IGVsZW1lbnQ7IGlmIGEgdmFsdWUgaXMgcmV0dXJuZWQsIGl0IHdpbGwgYmUgcGFzc2VkIGFzIHRoZSB0aGlyZAogIC8vICAgdmFsdWUgdG8gcmVuZGVyVmFsdWUuCiAgLy8gLSByZW5kZXJWYWx1ZSAocmVxdWlyZWQpIC0gQSBmdW5jdGlvbihlbCwgZGF0YSwgaW5pdFZhbHVlKSB0aGF0IHdpbGwgYmUKICAvLyAgIGNhbGxlZCB3aXRoIGRhdGEuIFN0YXRpYyBjb250ZXh0cyB3aWxsIGNhdXNlIHRoaXMgdG8gYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICBlbGVtZW50OyBTaGlueSBhcHBzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgcGVyCiAgLy8gICBlbGVtZW50LCBhcyB0aGUgZGF0YSBjaGFuZ2VzLgogIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXQgPSBmdW5jdGlvbihkZWZpbml0aW9uKSB7CiAgICBpZiAoIWRlZmluaXRpb24ubmFtZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSBuYW1lIik7CiAgICB9CiAgICBpZiAoIWRlZmluaXRpb24udHlwZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSB0eXBlIik7CiAgICB9CiAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IG91dHB1dCB3aWRnZXRzCiAgICBpZiAoZGVmaW5pdGlvbi50eXBlICE9PSAib3V0cHV0IikgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCB3aWRnZXQgdHlwZSAnIiArIGRlZmluaXRpb24udHlwZSArICInIik7CiAgICB9CiAgICAvLyBUT0RPOiBWZXJpZnkgdGhhdCAubmFtZSBpcyBhIHZhbGlkIENTUyBjbGFzc25hbWUKCiAgICAvLyBTdXBwb3J0IG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucy4gT2xkLXN0eWxlIGNsYXNzLWJvdW5kCiAgICAvLyBkZWZpbml0aW9ucyBoYXZlIG9uZSB3aWRnZXQgIm9iamVjdCIgcGVyIHdpZGdldCBwZXIgdHlwZS9jbGFzcyBvZgogICAgLy8gd2lkZ2V0OyB0aGUgcmVuZGVyVmFsdWUgYW5kIHJlc2l6ZSBtZXRob2RzIG9uIHN1Y2ggd2lkZ2V0IG9iamVjdHMKICAgIC8vIHRha2UgZWwgYW5kIGluc3RhbmNlIGFyZ3VtZW50cywgYmVjYXVzZSB0aGUgd2lkZ2V0IG9iamVjdCBjYW4ndAogICAgLy8gc3RvcmUgdGhlbS4gTmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb25zIGhhdmUgb25lIHdpZGdldAogICAgLy8gb2JqZWN0IHBlciB3aWRnZXQgaW5zdGFuY2U7IHRoZSBkZWZpbml0aW9uIHRoYXQncyBwYXNzZWQgaW4gZG9lc24ndAogICAgLy8gcHJvdmlkZSByZW5kZXJWYWx1ZSBvciByZXNpemUgbWV0aG9kcyBhdCBhbGwsIGp1c3QgdGhlIHNpbmdsZSBtZXRob2QKICAgIC8vICAgZmFjdG9yeShlbCwgd2lkdGgsIGhlaWdodCkKICAgIC8vIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IHRoYXQgaGFzIHJlbmRlclZhbHVlKHgpIGFuZCByZXNpemUodywgaCkuCiAgICAvLyBUaGlzIGVuYWJsZXMgYSBmYXIgbW9yZSBuYXR1cmFsIHByb2dyYW1taW5nIHN0eWxlIGZvciB0aGUgd2lkZ2V0CiAgICAvLyBhdXRob3IsIHdobyBjYW4gc3RvcmUgcGVyLWluc3RhbmNlIHN0YXRlIHVzaW5nIGVpdGhlciBPTy1zdHlsZQogICAgLy8gaW5zdGFuY2UgZmllbGRzIG9yIGZ1bmN0aW9uYWwtc3R5bGUgY2xvc3VyZSB2YXJpYWJsZXMgKEkgZ3Vlc3MgdGhpcwogICAgLy8gaXMgaW4gY29udHJhc3QgdG8gd2hhdCBjYW4gb25seSBiZSBjYWxsZWQgQy1zdHlsZSBwc2V1ZG8tT08gd2hpY2ggaXMKICAgIC8vIHdoYXQgd2UgcmVxdWlyZWQgYmVmb3JlKS4KICAgIGlmIChkZWZpbml0aW9uLmZhY3RvcnkpIHsKICAgICAgZGVmaW5pdGlvbiA9IGNyZWF0ZUxlZ2FjeURlZmluaXRpb25BZGFwdGVyKGRlZmluaXRpb24pOwogICAgfQoKICAgIGlmICghZGVmaW5pdGlvbi5yZW5kZXJWYWx1ZSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldpZGdldCBtdXN0IGhhdmUgYSByZW5kZXJWYWx1ZSBmdW5jdGlvbiIpOwogICAgfQoKICAgIC8vIEZvciBzdGF0aWMgcmVuZGVyaW5nIChub24tU2hpbnkpLCB1c2UgYSBzaW1wbGUgd2lkZ2V0IHJlZ2lzdHJhdGlvbgogICAgLy8gc2NoZW1lLiBXZSBhbHNvIHVzZSB0aGlzIHNjaGVtZSBmb3IgU2hpbnkgYXBwcy9kb2N1bWVudHMgdGhhdCBhbHNvCiAgICAvLyBjb250YWluIHN0YXRpYyB3aWRnZXRzLgogICAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgPSB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyB8fCBbXTsKICAgIC8vIE1lcmdlIGRlZmF1bHRzIGludG8gdGhlIGRlZmluaXRpb247IGRvbid0IG11dGF0ZSB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbi4KICAgIHZhciBzdGF0aWNCaW5kaW5nID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CiAgICBvdmVycmlkZU1ldGhvZChzdGF0aWNCaW5kaW5nLCAiZmluZCIsIGZ1bmN0aW9uKHN1cGVyZnVuYykgewogICAgICByZXR1cm4gZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgICB2YXIgcmVzdWx0cyA9IHN1cGVyZnVuYyhzY29wZSk7CiAgICAgICAgLy8gRmlsdGVyIG91dCBTaGlueSBvdXRwdXRzLCB3ZSBvbmx5IHdhbnQgdGhlIHN0YXRpYyBraW5kCiAgICAgICAgcmV0dXJuIGZpbHRlckJ5Q2xhc3MocmVzdWx0cywgImh0bWwtd2lkZ2V0LW91dHB1dCIsIGZhbHNlKTsKICAgICAgfTsKICAgIH0pOwogICAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMucHVzaChzdGF0aWNCaW5kaW5nKTsKCiAgICBpZiAoc2hpbnlNb2RlKSB7CiAgICAgIC8vIFNoaW55IGlzIHJ1bm5pbmcuIFJlZ2lzdGVyIHRoZSBkZWZpbml0aW9uIHdpdGggYW4gb3V0cHV0IGJpbmRpbmcuCiAgICAgIC8vIFRoZSBkZWZpbml0aW9uIGl0c2VsZiB3aWxsIG5vdCBiZSB0aGUgb3V0cHV0IGJpbmRpbmcsIGluc3RlYWQKICAgICAgLy8gd2Ugd2lsbCBtYWtlIGFuIG91dHB1dCBiaW5kaW5nIG9iamVjdCB0aGF0IGRlbGVnYXRlcyB0byB0aGUKICAgICAgLy8gZGVmaW5pdGlvbi4gVGhpcyBpcyBiZWNhdXNlIHdlIGZvb2xpc2hseSB1c2VkIHRoZSBzYW1lIG1ldGhvZAogICAgICAvLyBuYW1lIChyZW5kZXJWYWx1ZSkgZm9yIGh0bWx3aWRnZXRzIGRlZmluaXRpb24gYW5kIFNoaW55IGJpbmRpbmdzCiAgICAgIC8vIGJ1dCB0aGV5IGFjdHVhbGx5IGhhdmUgcXVpdGUgZGlmZmVyZW50IHNlbWFudGljcyAodGhlIFNoaW55CiAgICAgIC8vIGJpbmRpbmdzIHJlY2VpdmUgZGF0YSB0aGF0IGluY2x1ZGVzIGxvdHMgb2YgbWV0YWRhdGEgdGhhdCBpdAogICAgICAvLyBzdHJpcHMgb2ZmIGJlZm9yZSBjYWxsaW5nIGh0bWx3aWRnZXRzIHJlbmRlclZhbHVlKS4gV2UgY2FuJ3QKICAgICAgLy8ganVzdCBpZ25vcmUgdGhlIGRpZmZlcmVuY2UgYmVjYXVzZSBpbiBzb21lIHdpZGdldHMgaXQncyBoZWxwZnVsCiAgICAgIC8vIHRvIGNhbGwgdGhpcy5yZW5kZXJWYWx1ZSgpIGZyb20gaW5zaWRlIG9mIHJlc2l6ZSgpLCBhbmQgaWYKICAgICAgLy8gd2UncmUgbm90IGRlbGVnYXRpbmcsIHRoZW4gdGhhdCBjYWxsIHdpbGwgZ28gdG8gdGhlIFNoaW55CiAgICAgIC8vIHZlcnNpb24gaW5zdGVhZCBvZiB0aGUgaHRtbHdpZGdldHMgdmVyc2lvbi4KCiAgICAgIC8vIE1lcmdlIGRlZmF1bHRzIHdpdGggZGVmaW5pdGlvbiwgd2l0aG91dCBtdXRhdGluZyBlaXRoZXIuCiAgICAgIHZhciBiaW5kaW5nRGVmID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgZGVmaW5pdGlvbik7CgogICAgICAvLyBUaGlzIG9iamVjdCB3aWxsIGJlIG91ciBhY3R1YWwgU2hpbnkgYmluZGluZy4KICAgICAgdmFyIHNoaW55QmluZGluZyA9IG5ldyBTaGlueS5PdXRwdXRCaW5kaW5nKCk7CgogICAgICAvLyBXaXRoIGEgZmV3IGV4Y2VwdGlvbnMsIHdlJ2xsIHdhbnQgdG8gc2ltcGx5IHVzZSB0aGUgYmluZGluZ0RlZidzCiAgICAgIC8vIHZlcnNpb24gb2YgbWV0aG9kcyBpZiB0aGV5IGFyZSBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KICAgICAgLy8gU2hpbnkncyBkZWZhdWx0cy4gTk9URTogSWYgU2hpbnkncyBvdXRwdXQgYmluZGluZ3MgZ2FpbiBhZGRpdGlvbmFsCiAgICAgIC8vIG1ldGhvZHMgaW4gdGhlIGZ1dHVyZSwgYW5kIHdlIHdhbnQgdGhlbSB0byBiZSBvdmVycmlkZWFibGUgYnkKICAgICAgLy8gSFRNTFdpZGdldCBiaW5kaW5nIGRlZmluaXRpb25zLCB0aGVuIHdlJ2xsIG5lZWQgdG8gYWRkIHRoZW0gdG8gdGhpcwogICAgICAvLyBsaXN0LgogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJnZXRJZCIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJvblZhbHVlQ2hhbmdlIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgIm9uVmFsdWVFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJyZW5kZXJFcnJvciIpOwogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJjbGVhckVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgInNob3dQcm9ncmVzcyIpOwoKICAgICAgLy8gVGhlIGZpbmQsIHJlbmRlclZhbHVlLCBhbmQgcmVzaXplIGFyZSBoYW5kbGVkIGRpZmZlcmVudGx5LCBiZWNhdXNlIHdlCiAgICAgIC8vIHdhbnQgdG8gYWN0dWFsbHkgZGVjb3JhdGUgdGhlIGJlaGF2aW9yIG9mIHRoZSBiaW5kaW5nRGVmIG1ldGhvZHMuCgogICAgICBzaGlueUJpbmRpbmcuZmluZCA9IGZ1bmN0aW9uKHNjb3BlKSB7CiAgICAgICAgdmFyIHJlc3VsdHMgPSBiaW5kaW5nRGVmLmZpbmQoc2NvcGUpOwoKICAgICAgICAvLyBPbmx5IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBTaGlueSBvdXRwdXRzLCBub3Qgc3RhdGljIG9uZXMKICAgICAgICB2YXIgZHluYW1pY1Jlc3VsdHMgPSByZXN1bHRzLmZpbHRlcigiLmh0bWwtd2lkZ2V0LW91dHB1dCIpOwoKICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2hhdGV2ZXIgY2F1c2VkIFNoaW55IHRvIHRoaW5rIHRoZXJlIG1pZ2h0IGJlCiAgICAgICAgLy8gbmV3IGR5bmFtaWMgb3V0cHV0cywgYWxzbyBjYXVzZWQgdGhlcmUgdG8gYmUgbmV3IHN0YXRpYyBvdXRwdXRzLgogICAgICAgIC8vIFNpbmNlIHRoZXJlIG1pZ2h0IGJlIGxvdHMgb2YgZGlmZmVyZW50IGh0bWx3aWRnZXRzIGJpbmRpbmdzLCB3ZQogICAgICAgIC8vIHNjaGVkdWxlIGV4ZWN1dGlvbiBmb3IgbGF0ZXItLW5vIG5lZWQgdG8gc3RhdGljUmVuZGVyIG11bHRpcGxlCiAgICAgICAgLy8gdGltZXMuCiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSBkeW5hbWljUmVzdWx0cy5sZW5ndGgpCiAgICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlcigpOwoKICAgICAgICByZXR1cm4gZHluYW1pY1Jlc3VsdHM7CiAgICAgIH07CgogICAgICAvLyBXcmFwIHJlbmRlclZhbHVlIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBpc24ndAogICAgICAvLyBzdXBwb3J0ZWQgbmF0aXZlbHkgYnkgU2hpbnkgYXQgdGhlIHRpbWUgb2YgdGhpcyB3cml0aW5nLgoKICAgICAgc2hpbnlCaW5kaW5nLnJlbmRlclZhbHVlID0gZnVuY3Rpb24oZWwsIGRhdGEpIHsKICAgICAgICBTaGlueS5yZW5kZXJEZXBlbmRlbmNpZXMoZGF0YS5kZXBzKTsKICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgIGlmICghKGRhdGEuZXZhbHMgaW5zdGFuY2VvZiBBcnJheSkpIGRhdGEuZXZhbHMgPSBbZGF0YS5ldmFsc107CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuZXZhbHMgJiYgaSA8IGRhdGEuZXZhbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNbaV0pOwogICAgICAgIH0KICAgICAgICBpZiAoIWJpbmRpbmdEZWYucmVuZGVyT25OdWxsVmFsdWUpIHsKICAgICAgICAgIGlmIChkYXRhLnggPT09IG51bGwpIHsKICAgICAgICAgICAgZWwuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gImluaGVyaXQiOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIWVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiKSkgewogICAgICAgICAgaW5pdFNpemluZyhlbCk7CgogICAgICAgICAgZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIsIHRydWUpOwogICAgICAgICAgaWYgKGJpbmRpbmdEZWYuaW5pdGlhbGl6ZSkgewogICAgICAgICAgICB2YXIgcmVzdWx0ID0gYmluZGluZ0RlZi5pbml0aWFsaXplKGVsLCBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgICBlbC5vZmZzZXRIZWlnaHQpOwogICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgcmVzdWx0KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYmluZGluZ0RlZi5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IikpOwogICAgICAgIGV2YWxBbmRSdW4oZGF0YS5qc0hvb2tzLnJlbmRlciwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpLCBbZWwsIGRhdGEueF0pOwogICAgICB9OwoKICAgICAgLy8gT25seSBvdmVycmlkZSByZXNpemUgaWYgYmluZGluZ0RlZiBpbXBsZW1lbnRzIGl0CiAgICAgIGlmIChiaW5kaW5nRGVmLnJlc2l6ZSkgewogICAgICAgIHNoaW55QmluZGluZy5yZXNpemUgPSBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgewogICAgICAgICAgLy8gU2hpbnkgY2FuIGNhbGwgcmVzaXplIGJlZm9yZSBpbml0aWFsaXplL3JlbmRlclZhbHVlIGhhdmUgYmVlbgogICAgICAgICAgLy8gY2FsbGVkLCB3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHdpZGdldHMuCiAgICAgICAgICBpZiAoZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICAgIGJpbmRpbmdEZWYucmVzaXplKGVsLCB3aWR0aCwgaGVpZ2h0LCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IikpOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgIH0KCiAgICAgIFNoaW55Lm91dHB1dEJpbmRpbmdzLnJlZ2lzdGVyKHNoaW55QmluZGluZywgYmluZGluZ0RlZi5uYW1lKTsKICAgIH0KICB9OwoKICB2YXIgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gbnVsbDsKICBmdW5jdGlvbiBzY2hlZHVsZVN0YXRpY1JlbmRlcigpIHsKICAgIGlmICghc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkKSB7CiAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gbnVsbDsKICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyKCk7CiAgICAgIH0sIDEpOwogICAgfQogIH0KCiAgLy8gUmVuZGVyIHN0YXRpYyB3aWRnZXRzIGFmdGVyIHRoZSBkb2N1bWVudCBmaW5pc2hlcyBsb2FkaW5nCiAgLy8gU3RhdGljYWxseSByZW5kZXIgYWxsIGVsZW1lbnRzIHRoYXQgYXJlIG9mIHRoaXMgd2lkZ2V0J3MgY2xhc3MKICB3aW5kb3cuSFRNTFdpZGdldHMuc3RhdGljUmVuZGVyID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgYmluZGluZ3MgPSB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyB8fCBbXTsKICAgIGZvckVhY2goYmluZGluZ3MsIGZ1bmN0aW9uKGJpbmRpbmcpIHsKICAgICAgdmFyIG1hdGNoZXMgPSBiaW5kaW5nLmZpbmQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKICAgICAgZm9yRWFjaChtYXRjaGVzLCBmdW5jdGlvbihlbCkgewogICAgICAgIHZhciBzaXplT2JqID0gaW5pdFNpemluZyhlbCwgYmluZGluZyk7CgogICAgICAgIGlmIChoYXNDbGFzcyhlbCwgImh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCIpKQogICAgICAgICAgcmV0dXJuOwogICAgICAgIGVsLmNsYXNzTmFtZSA9IGVsLmNsYXNzTmFtZSArICIgaHRtbC13aWRnZXQtc3RhdGljLWJvdW5kIjsKCiAgICAgICAgdmFyIGluaXRSZXN1bHQ7CiAgICAgICAgaWYgKGJpbmRpbmcuaW5pdGlhbGl6ZSkgewogICAgICAgICAgaW5pdFJlc3VsdCA9IGJpbmRpbmcuaW5pdGlhbGl6ZShlbCwKICAgICAgICAgICAgc2l6ZU9iaiA/IHNpemVPYmouZ2V0V2lkdGgoKSA6IGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgKTsKICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiLCBpbml0UmVzdWx0KTsKICAgICAgICB9CgogICAgICAgIGlmIChiaW5kaW5nLnJlc2l6ZSkgewogICAgICAgICAgdmFyIGxhc3RTaXplID0gewogICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIGg6IHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0CiAgICAgICAgICB9OwogICAgICAgICAgdmFyIHJlc2l6ZUhhbmRsZXIgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciBzaXplID0gewogICAgICAgICAgICAgIHc6IHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwKICAgICAgICAgICAgICBoOiBzaXplT2JqID8gc2l6ZU9iai5nZXRIZWlnaHQoKSA6IGVsLm9mZnNldEhlaWdodAogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSAwICYmIHNpemUuaCA9PT0gMCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGlmIChzaXplLncgPT09IGxhc3RTaXplLncgJiYgc2l6ZS5oID09PSBsYXN0U2l6ZS5oKQogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgbGFzdFNpemUgPSBzaXplOwogICAgICAgICAgICBiaW5kaW5nLnJlc2l6ZShlbCwgc2l6ZS53LCBzaXplLmgsIGluaXRSZXN1bHQpOwogICAgICAgICAgfTsKCiAgICAgICAgICBvbih3aW5kb3csICJyZXNpemUiLCByZXNpemVIYW5kbGVyKTsKCiAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgY2FzZXMgd2hlcmUgd2UncmUgcnVubmluZyBpbiBhIFNoaW55CiAgICAgICAgICAvLyBhcHAsIGJ1dCB0aGUgd2lkZ2V0IGl0c2VsZiBpcyBub3QgYSBTaGlueSBvdXRwdXQsIGJ1dAogICAgICAgICAgLy8gcmF0aGVyIGEgc2ltcGxlIHN0YXRpYyB3aWRnZXQuIE9uZSBleGFtcGxlIG9mIHRoaXMgaXMKICAgICAgICAgIC8vIGFuIHJtYXJrZG93biBkb2N1bWVudCB0aGF0IGhhcyBydW50aW1lOnNoaW55IGFuZCB3aWRnZXQKICAgICAgICAgIC8vIHRoYXQgaXNuJ3QgaW4gYSByZW5kZXIgZnVuY3Rpb24uIFNoaW55IG9ubHkga25vd3MgdG8KICAgICAgICAgIC8vIGNhbGwgcmVzaXplIGhhbmRsZXJzIGZvciBTaGlueSBvdXRwdXRzLCBub3QgZm9yIHN0YXRpYwogICAgICAgICAgLy8gd2lkZ2V0cywgc28gd2UgZG8gaXQgb3Vyc2VsdmVzLgogICAgICAgICAgaWYgKHdpbmRvdy5qUXVlcnkpIHsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oCiAgICAgICAgICAgICAgInNob3duLmh0bWx3aWRnZXRzIHNob3duLmJzLnRhYi5odG1sd2lkZ2V0cyBzaG93bi5icy5jb2xsYXBzZS5odG1sd2lkZ2V0cyIsCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcgogICAgICAgICAgICApOwogICAgICAgICAgICB3aW5kb3cualF1ZXJ5KGRvY3VtZW50KS5vbigKICAgICAgICAgICAgICAiaGlkZGVuLmh0bWx3aWRnZXRzIGhpZGRlbi5icy50YWIuaHRtbHdpZGdldHMgaGlkZGVuLmJzLmNvbGxhcHNlLmh0bWx3aWRnZXRzIiwKICAgICAgICAgICAgICByZXNpemVIYW5kbGVyCiAgICAgICAgICAgICk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGlvc2xpZGVzLCB3aGljaAogICAgICAgICAgLy8gZmxpcHMgc2xpZGVzIGJldHdlZW4gZGlzcGxheTpub25lIGFuZCBkaXNwbGF5OmJsb2NrLgogICAgICAgICAgLy8gSWRlYWxseSB3ZSB3b3VsZCBub3QgaGF2ZSB0byBoYXZlIGlvc2xpZGUtc3BlY2lmaWMgY29kZQogICAgICAgICAgLy8gaGVyZSwgYnV0IHJhdGhlciBoYXZlIGlvc2xpZGVzIHJhaXNlIGEgZ2VuZXJpYyBldmVudCwKICAgICAgICAgIC8vIGJ1dCB0aGUgcm1hcmtkb3duIHBhY2thZ2UganVzdCB3ZW50IHRvIENSQU4gc28gdGhlCiAgICAgICAgICAvLyB3aW5kb3cgdG8gZ2V0dGluZyB0aGF0IGZpeGVkIG1heSBiZSBsb25nLgogICAgICAgICAgaWYgKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gbGltaXQgdGhpcyB0byB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcgogICAgICAgICAgICAvLyBicm93c2VycyBiZWNhdXNlIGlvc2xpZGVzIGl0c2VsZiBvbmx5IHN1cHBvcnRzCiAgICAgICAgICAgIC8vIHN1Y2ggYnJvd3NlcnMuCiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVlbnRlciIsIHJlc2l6ZUhhbmRsZXIpOwogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlbGVhdmUiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciBzY3JpcHREYXRhID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vanNvbiddIik7CiAgICAgICAgaWYgKHNjcmlwdERhdGEpIHsKICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZShzY3JpcHREYXRhLnRleHRDb250ZW50IHx8IHNjcmlwdERhdGEudGV4dCk7CiAgICAgICAgICAvLyBSZXNvbHZlIHN0cmluZ3MgbWFya2VkIGFzIGphdmFzY3JpcHQgbGl0ZXJhbHMgdG8gb2JqZWN0cwogICAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBkYXRhLmV2YWxzICYmIGsgPCBkYXRhLmV2YWxzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5ldmFsdWF0ZVN0cmluZ01lbWJlcihkYXRhLngsIGRhdGEuZXZhbHNba10pOwogICAgICAgICAgfQogICAgICAgICAgYmluZGluZy5yZW5kZXJWYWx1ZShlbCwgZGF0YS54LCBpbml0UmVzdWx0KTsKICAgICAgICAgIGV2YWxBbmRSdW4oZGF0YS5qc0hvb2tzLnJlbmRlciwgaW5pdFJlc3VsdCwgW2VsLCBkYXRhLnhdKTsKICAgICAgICB9CiAgICAgIH0pOwogICAgfSk7CgogICAgaW52b2tlUG9zdFJlbmRlckhhbmRsZXJzKCk7CiAgfQoKCiAgZnVuY3Rpb24gaGFzX2pRdWVyeTMoKSB7CiAgICBpZiAoIXdpbmRvdy5qUXVlcnkpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgdmFyICR2ZXJzaW9uID0gd2luZG93LmpRdWVyeS5mbi5qcXVlcnk7CiAgICB2YXIgJG1ham9yX3ZlcnNpb24gPSBwYXJzZUludCgkdmVyc2lvbi5zcGxpdCgiLiIpWzBdKTsKICAgIHJldHVybiAkbWFqb3JfdmVyc2lvbiA+PSAzOwogIH0KCiAgLyoKICAvIFNoaW55IDEuNCBidW1wZWQgalF1ZXJ5IGZyb20gMS54IHRvIDMueCB3aGljaCBtZWFucyBqUXVlcnkncwogIC8gb24tcmVhZHkgaGFuZGxlciAoaS5lLiwgJChmbikpIGlzIG5vdyBhc3luY3Jvbm91cyAoaS5lLiwgaXQgbm93CiAgLyByZWFsbHkgbWVhbnMgJChzZXRUaW1lb3V0KGZuKSkuCiAgLyBodHRwczovL2pxdWVyeS5jb20vdXBncmFkZS1ndWlkZS8zLjAvI2JyZWFraW5nLWNoYW5nZS1kb2N1bWVudC1yZWFkeS1oYW5kbGVycy1hcmUtbm93LWFzeW5jaHJvbm91cwogIC8KICAvIFNpbmNlIFNoaW55IHVzZXMgJCgpIHRvIHNjaGVkdWxlIGluaXRTaGlueSwgc2hpbnk+PTEuNCBjYWxscyBpbml0U2hpbnkKICAvIG9uZSB0aWNrIGxhdGVyIHRoYW4gaXQgZGlkIGJlZm9yZSwgd2hpY2ggbWVhbnMgc3RhdGljUmVuZGVyKCkgaXMKICAvIGNhbGxlZCByZW5kZXJWYWx1ZSgpIGVhcmxpZXIgdGhhbiAoYWR2YW5jZWQpIHdpZGdldCBhdXRob3JzIG1pZ2h0IGJlIGV4cGVjdGluZy4KICAvIGh0dHBzOi8vZ2l0aHViLmNvbS9yc3R1ZGlvL3NoaW55L2lzc3Vlcy8yNjMwCiAgLwogIC8gRm9yIGEgY29uY3JldGUgZXhhbXBsZSwgbGVhZmxldCBoYXMgc29tZSBtZXRob2RzIChlLmcuLCB1cGRhdGVCb3VuZHMpCiAgLyB3aGljaCByZWZlcmVuY2UgU2hpbnkgbWV0aG9kcyByZWdpc3RlcmVkIGluIGluaXRTaGlueSAoZS5nLiwgc2V0SW5wdXRWYWx1ZSkuCiAgLyBTaW5jZSBsZWFmbGV0IGlzIHByaXZ5IHRvIHRoaXMgbGlmZS1jeWNsZSwgaXQga25vd3MgdG8gdXNlIHNldFRpbWVvdXQoKSB0bwogIC8gZGVsYXkgZXhlY3V0aW9uIG9mIHRob3NlIG1ldGhvZHMgKHVudGlsIFNoaW55IG1ldGhvZHMgYXJlIHJlYWR5KQogIC8gaHR0cHM6Ly9naXRodWIuY29tL3JzdHVkaW8vbGVhZmxldC9ibG9iLzE4ZWM5ODEvamF2YXNjcmlwdC9zcmMvaW5kZXguanMjTDI2Ni1MMjY4CiAgLwogIC8gSWRlYWxseSB3aWRnZXQgYXV0aG9ycyB3b3VsZG4ndCBuZWVkIHRvIHVzZSB0aGlzIHNldFRpbWVvdXQoKSBoYWNrIHRoYXQKICAvIGxlYWZsZXQgdXNlcyB0byBjYWxsIFNoaW55IG1ldGhvZHMgb24gYSBzdGF0aWNSZW5kZXIoKS4gSW4gdGhlIGxvbmcgcnVuLAogIC8gdGhlIGxvZ2ljIGluaXRTaGlueSBzaG91bGQgYmUgYnJva2VuIHVwIHNvIHRoYXQgbWV0aG9kIHJlZ2lzdHJhdGlvbiBoYXBwZW5zCiAgLyByaWdodCBhd2F5LCBidXQgYmluZGluZyBoYXBwZW5zIGxhdGVyLgogICovCiAgZnVuY3Rpb24gbWF5YmVTdGF0aWNSZW5kZXJMYXRlcigpIHsKICAgIGlmIChzaGlueU1vZGUgJiYgaGFzX2pRdWVyeTMoKSkgewogICAgICB3aW5kb3cualF1ZXJ5KHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIpOwogICAgfSBlbHNlIHsKICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgfQogIH0KCiAgaWYgKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGFyZ3VtZW50cy5jYWxsZWUsIGZhbHNlKTsKICAgICAgbWF5YmVTdGF0aWNSZW5kZXJMYXRlcigpOwogICAgfSwgZmFsc2UpOwogIH0gZWxzZSBpZiAoZG9jdW1lbnQuYXR0YWNoRXZlbnQpIHsKICAgIGRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBmdW5jdGlvbigpIHsKICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJjb21wbGV0ZSIpIHsKICAgICAgICBkb2N1bWVudC5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgYXJndW1lbnRzLmNhbGxlZSk7CiAgICAgICAgbWF5YmVTdGF0aWNSZW5kZXJMYXRlcigpOwogICAgICB9CiAgICB9KTsKICB9CgoKICB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0QXR0YWNobWVudFVybCA9IGZ1bmN0aW9uKGRlcG5hbWUsIGtleSkgewogICAgLy8gSWYgbm8ga2V5LCBkZWZhdWx0IHRvIHRoZSBmaXJzdCBpdGVtCiAgICBpZiAodHlwZW9mKGtleSkgPT09ICJ1bmRlZmluZWQiKQogICAgICBrZXkgPSAxOwoKICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGVwbmFtZSArICItIiArIGtleSArICItYXR0YWNobWVudCIpOwogICAgaWYgKCFsaW5rKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiQXR0YWNobWVudCAiICsgZGVwbmFtZSArICIvIiArIGtleSArICIgbm90IGZvdW5kIGluIGRvY3VtZW50Iik7CiAgICB9CiAgICByZXR1cm4gbGluay5nZXRBdHRyaWJ1dGUoImhyZWYiKTsKICB9OwoKICB3aW5kb3cuSFRNTFdpZGdldHMuZGF0YWZyYW1lVG9EMyA9IGZ1bmN0aW9uKGRmKSB7CiAgICB2YXIgbmFtZXMgPSBbXTsKICAgIHZhciBsZW5ndGg7CiAgICBmb3IgKHZhciBuYW1lIGluIGRmKSB7CiAgICAgICAgaWYgKGRmLmhhc093blByb3BlcnR5KG5hbWUpKQogICAgICAgICAgICBuYW1lcy5wdXNoKG5hbWUpOwogICAgICAgIGlmICh0eXBlb2YoZGZbbmFtZV0pICE9PSAib2JqZWN0IiB8fCB0eXBlb2YoZGZbbmFtZV0ubGVuZ3RoKSA9PT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIik7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YobGVuZ3RoKSAhPT0gInVuZGVmaW5lZCIgJiYgbGVuZ3RoICE9PSBkZltuYW1lXS5sZW5ndGgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCIpOwogICAgICAgIH0KICAgICAgICBsZW5ndGggPSBkZltuYW1lXS5sZW5ndGg7CiAgICB9CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdmFyIGl0ZW07CiAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCBsZW5ndGg7IHJvdysrKSB7CiAgICAgICAgaXRlbSA9IHt9OwogICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG5hbWVzLmxlbmd0aDsgY29sKyspIHsKICAgICAgICAgICAgaXRlbVtuYW1lc1tjb2xdXSA9IGRmW25hbWVzW2NvbF1dW3Jvd107CiAgICAgICAgfQogICAgICAgIHJlc3VsdHMucHVzaChpdGVtKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy50cmFuc3Bvc2VBcnJheTJEID0gZnVuY3Rpb24oYXJyYXkpIHsKICAgICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFycmF5OwogICAgICB2YXIgbmV3QXJyYXkgPSBhcnJheVswXS5tYXAoZnVuY3Rpb24oY29sLCBpKSB7CiAgICAgICAgICByZXR1cm4gYXJyYXkubWFwKGZ1bmN0aW9uKHJvdykgewogICAgICAgICAgICAgIHJldHVybiByb3dbaV0KICAgICAgICAgIH0pCiAgICAgIH0pOwogICAgICByZXR1cm4gbmV3QXJyYXk7CiAgfTsKICAvLyBTcGxpdCB2YWx1ZSBhdCBzcGxpdENoYXIsIGJ1dCBhbGxvdyBzcGxpdENoYXIgdG8gYmUgZXNjYXBlZAogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcgogIC8vIHdpbGwgYmUgaW5jbHVkZWQgYXMgdXN1YWwgKGluY2x1ZGluZyBlc2NhcGVDaGFyIGl0c2VsZikuCiAgZnVuY3Rpb24gc3BsaXRXaXRoRXNjYXBlKHZhbHVlLCBzcGxpdENoYXIsIGVzY2FwZUNoYXIpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgdmFyIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsKICAgICAgaWYgKCFlc2NhcGVNb2RlKSB7CiAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT09IHNwbGl0Q2hhcikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgICAgICAgY3VycmVudFJlc3VsdCA9ICIiOwogICAgICAgIH0gZWxzZSBpZiAodmFsdWVbcG9zXSA9PT0gZXNjYXBlQ2hhcikgewogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7CiAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KICAvLyBGdW5jdGlvbiBhdXRob3JlZCBieSBZaWh1aS9KSiBBbGxhaXJlCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7CiAgICB2YXIgcGFydHMgPSBzcGxpdFdpdGhFc2NhcGUobWVtYmVyLCAnLicsICdcXCcpOwogICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsKICAgICAgLy8gcGFydCBtYXkgYmUgYSBjaGFyYWN0ZXIgb3IgJ251bWVyaWMnIG1lbWJlciBuYW1lCiAgICAgIGlmIChvICE9PSBudWxsICYmIHR5cGVvZiBvID09PSAib2JqZWN0IiAmJiBwYXJ0IGluIG8pIHsKICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlCiAgICAgICAgICBpZiAodHlwZW9mIG9bcGFydF0gPT09ICJzdHJpbmciKQogICAgICAgICAgICBvW3BhcnRdID0gdHJ5RXZhbChvW3BhcnRdKTsKICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QKICAgICAgICAgIG8gPSBvW3BhcnRdOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIC8vIFJldHJpZXZlIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YgYW4KICAvLyBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50LCBvciBudWxsIGlmIG5vbmUuCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlID0gZnVuY3Rpb24oZWwpIHsKICAgIHJldHVybiBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0Iik7CiAgfTsKCiAgLy8gRmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHNjb3BlIHRoYXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IsCiAgLy8gYW5kIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2UgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZgogIC8vIGFuIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoYXQgZWxlbWVudCwgaWYgYW55LiBJZiBubyBlbGVtZW50IG1hdGNoZXMgdGhlCiAgLy8gc2VsZWN0b3IsIG9yIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGhhcyBubyBIVE1MV2lkZ2V0CiAgLy8gaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGl0LCB0aGVuIG51bGwgaXMgcmV0dXJuZWQuCiAgLy8KICAvLyBUaGUgc2NvcGUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB3aW5kb3cuZG9jdW1lbnQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmZpbmQgPSBmdW5jdGlvbihzY29wZSwgc2VsZWN0b3IpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgc2VsZWN0b3IgPSBzY29wZTsKICAgICAgc2NvcGUgPSBkb2N1bWVudDsKICAgIH0KCiAgICB2YXIgZWwgPSBzY29wZS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKICAgIGlmIChlbCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2UoZWwpOwogICAgfQogIH07CgogIC8vIEZpbmRzIGFsbCBlbGVtZW50cyBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IsIGFuZAogIC8vIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2VzIChpLmUuIHRoZSByZXR1cm4gdmFsdWVzIG9mCiAgLy8gYW4gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnRzLCBpbiBhbiBhcnJheS4gSWYgZWxlbWVudHMgdGhhdAogIC8vIG1hdGNoIHRoZSBzZWxlY3RvciBkb24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgSFRNTFdpZGdldAogIC8vIGluc3RhbmNlLCB0aGUgcmV0dXJuZWQgYXJyYXkgd2lsbCBjb250YWluIG51bGxzLgogIC8vCiAgLy8gVGhlIHNjb3BlIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gd2luZG93LmRvY3VtZW50LgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kQWxsID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHNlbGVjdG9yID0gc2NvcGU7CiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7CiAgICB9CgogICAgdmFyIG5vZGVzID0gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewogICAgICByZXN1bHRzLnB1c2god2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlKG5vZGVzW2ldKSk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9OwoKICB2YXIgcG9zdFJlbmRlckhhbmRsZXJzID0gW107CiAgZnVuY3Rpb24gaW52b2tlUG9zdFJlbmRlckhhbmRsZXJzKCkgewogICAgd2hpbGUgKHBvc3RSZW5kZXJIYW5kbGVycy5sZW5ndGgpIHsKICAgICAgdmFyIGhhbmRsZXIgPSBwb3N0UmVuZGVySGFuZGxlcnMuc2hpZnQoKTsKICAgICAgaWYgKGhhbmRsZXIpIHsKICAgICAgICBoYW5kbGVyKCk7CiAgICAgIH0KICAgIH0KICB9CgogIC8vIFJlZ2lzdGVyIHRoZSBnaXZlbiBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIGFmdGVyIHRoZQogIC8vIG5leHQgdGltZSBzdGF0aWMgd2lkZ2V0cyBhcmUgcmVuZGVyZWQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmFkZFBvc3RSZW5kZXJIYW5kbGVyID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIHBvc3RSZW5kZXJIYW5kbGVycy5wdXNoKGNhbGxiYWNrKTsKICB9OwoKICAvLyBUYWtlcyBhIG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9uLCBhbmQgcmV0dXJucyBhbgogIC8vIG9sZC1zdHlsZSBjbGFzcy1ib3VuZCBkZWZpbml0aW9uLiBUaGlzIHNhdmVzIHVzIGZyb20gaGF2aW5nCiAgLy8gdG8gcmV3cml0ZSBhbGwgdGhlIGxvZ2ljIGluIHRoaXMgZmlsZSB0byBhY2NvbW9kYXRlIGJvdGgKICAvLyB0eXBlcyBvZiBkZWZpbml0aW9ucy4KICBmdW5jdGlvbiBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZuKSB7CiAgICB2YXIgcmVzdWx0ID0gewogICAgICBuYW1lOiBkZWZuLm5hbWUsCiAgICAgIHR5cGU6IGRlZm4udHlwZSwKICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICByZXR1cm4gZGVmbi5mYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgfSwKICAgICAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKGVsLCB4LCBpbnN0YW5jZSkgewogICAgICAgIHJldHVybiBpbnN0YW5jZS5yZW5kZXJWYWx1ZSh4KTsKICAgICAgfSwKICAgICAgcmVzaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCwgaW5zdGFuY2UpIHsKICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVzaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICB9CiAgICB9OwoKICAgIGlmIChkZWZuLmZpbmQpCiAgICAgIHJlc3VsdC5maW5kID0gZGVmbi5maW5kOwogICAgaWYgKGRlZm4ucmVuZGVyRXJyb3IpCiAgICAgIHJlc3VsdC5yZW5kZXJFcnJvciA9IGRlZm4ucmVuZGVyRXJyb3I7CiAgICBpZiAoZGVmbi5jbGVhckVycm9yKQogICAgICByZXN1bHQuY2xlYXJFcnJvciA9IGRlZm4uY2xlYXJFcnJvcjsKCiAgICByZXR1cm4gcmVzdWx0OwogIH0KfSkoKTsKCg=="></script>
|
|
<script src="data:application/javascript;base64,IWZ1bmN0aW9uKGEpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9YSgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sYSk7ZWxzZXt2YXIgYjtiPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6dGhpcyxiLnByb2o0PWEoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGEoYixjLGQpe2Z1bmN0aW9uIGUoZyxoKXtpZighY1tnXSl7aWYoIWJbZ10pe3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFoJiZpKXJldHVybiBpKGcsITApO2lmKGYpcmV0dXJuIGYoZywhMCk7dmFyIGo9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrZysiJyIpO3Rocm93IGouY29kZT0iTU9EVUxFX05PVF9GT1VORCIsan12YXIgaz1jW2ddPXtleHBvcnRzOnt9fTtiW2ddWzBdLmNhbGwoay5leHBvcnRzLGZ1bmN0aW9uKGEpe3ZhciBjPWJbZ11bMV1bYV07cmV0dXJuIGUoYz9jOmEpfSxrLGsuZXhwb3J0cyxhLGIsYyxkKX1yZXR1cm4gY1tnXS5leHBvcnRzfWZvcih2YXIgZj0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxnPTA7ZzxkLmxlbmd0aDtnKyspZShkW2ddKTtyZXR1cm4gZX0oeyIuL2luY2x1ZGVkUHJvamVjdGlvbnMiOltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9W2EoIi4vbGliL3Byb2plY3Rpb25zL3RtZXJjIiksYSgiLi9saWIvcHJvamVjdGlvbnMvdXRtIiksYSgiLi9saWIvcHJvamVjdGlvbnMvc3RlcmVhIiksYSgiLi9saWIvcHJvamVjdGlvbnMvc3RlcmUiKSxhKCIuL2xpYi9wcm9qZWN0aW9ucy9zb21lcmMiKSxhKCIuL2xpYi9wcm9qZWN0aW9ucy9vbWVyYyIpLGEoIi4vbGliL3Byb2plY3Rpb25zL2xjYyIpLGEoIi4vbGliL3Byb2plY3Rpb25zL2tyb3ZhayIpLGEoIi4vbGliL3Byb2plY3Rpb25zL2Nhc3MiKSxhKCIuL2xpYi9wcm9qZWN0aW9ucy9sYWVhIiksYSgiLi9saWIvcHJvamVjdGlvbnMvYWVhIiksYSgiLi9saWIvcHJvamVjdGlvbnMvZ25vbSIpLGEoIi4vbGliL3Byb2plY3Rpb25zL2NlYSIpLGEoIi4vbGliL3Byb2plY3Rpb25zL2VxYyIpLGEoIi4vbGliL3Byb2plY3Rpb25zL3BvbHkiKSxhKCIuL2xpYi9wcm9qZWN0aW9ucy9uem1nIiksYSgiLi9saWIvcHJvamVjdGlvbnMvbWlsbCIpLGEoIi4vbGliL3Byb2plY3Rpb25zL3NpbnUiKSxhKCIuL2xpYi9wcm9qZWN0aW9ucy9tb2xsIiksYSgiLi9saWIvcHJvamVjdGlvbnMvZXFkYyIpLGEoIi4vbGliL3Byb2plY3Rpb25zL3ZhbmRnIiksYSgiLi9saWIvcHJvamVjdGlvbnMvYWVxZCIpLGEoIi4vbGliL3Byb2plY3Rpb25zL29ydGhvIildO2IuZXhwb3J0cz1mdW5jdGlvbihwcm9qNCl7ZC5mb3JFYWNoKGZ1bmN0aW9uKGEpe3Byb2o0LlByb2oucHJvamVjdGlvbnMuYWRkKGEpfSl9fSx7Ii4vbGliL3Byb2plY3Rpb25zL2FlYSI6NDAsIi4vbGliL3Byb2plY3Rpb25zL2FlcWQiOjQxLCIuL2xpYi9wcm9qZWN0aW9ucy9jYXNzIjo0MiwiLi9saWIvcHJvamVjdGlvbnMvY2VhIjo0MywiLi9saWIvcHJvamVjdGlvbnMvZXFjIjo0NCwiLi9saWIvcHJvamVjdGlvbnMvZXFkYyI6NDUsIi4vbGliL3Byb2plY3Rpb25zL2dub20iOjQ3LCIuL2xpYi9wcm9qZWN0aW9ucy9rcm92YWsiOjQ4LCIuL2xpYi9wcm9qZWN0aW9ucy9sYWVhIjo0OSwiLi9saWIvcHJvamVjdGlvbnMvbGNjIjo1MCwiLi9saWIvcHJvamVjdGlvbnMvbWlsbCI6NTMsIi4vbGliL3Byb2plY3Rpb25zL21vbGwiOjU0LCIuL2xpYi9wcm9qZWN0aW9ucy9uem1nIjo1NSwiLi9saWIvcHJvamVjdGlvbnMvb21lcmMiOjU2LCIuL2xpYi9wcm9qZWN0aW9ucy9vcnRobyI6NTcsIi4vbGliL3Byb2plY3Rpb25zL3BvbHkiOjU4LCIuL2xpYi9wcm9qZWN0aW9ucy9zaW51Ijo1OSwiLi9saWIvcHJvamVjdGlvbnMvc29tZXJjIjo2MCwiLi9saWIvcHJvamVjdGlvbnMvc3RlcmUiOjYxLCIuL2xpYi9wcm9qZWN0aW9ucy9zdGVyZWEiOjYyLCIuL2xpYi9wcm9qZWN0aW9ucy90bWVyYyI6NjMsIi4vbGliL3Byb2plY3Rpb25zL3V0bSI6NjQsIi4vbGliL3Byb2plY3Rpb25zL3ZhbmRnIjo2NX1dLDE6W2Z1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBQb2ludChhLGIsYyl7aWYoISh0aGlzIGluc3RhbmNlb2YgUG9pbnQpKXJldHVybiBuZXcgUG9pbnQoYSxiLGMpO2lmKEFycmF5LmlzQXJyYXkoYSkpdGhpcy54PWFbMF0sdGhpcy55PWFbMV0sdGhpcy56PWFbMl18fDA7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGEpdGhpcy54PWEueCx0aGlzLnk9YS55LHRoaXMuej1hLnp8fDA7ZWxzZSBpZigic3RyaW5nIj09dHlwZW9mIGEmJiJ1bmRlZmluZWQiPT10eXBlb2YgYil7dmFyIGQ9YS5zcGxpdCgiLCIpO3RoaXMueD1wYXJzZUZsb2F0KGRbMF0sMTApLHRoaXMueT1wYXJzZUZsb2F0KGRbMV0sMTApLHRoaXMuej1wYXJzZUZsb2F0KGRbMl0sMTApfHwwfWVsc2UgdGhpcy54PWEsdGhpcy55PWIsdGhpcy56PWN8fDA7Y29uc29sZS53YXJuKCJwcm9qNC5Qb2ludCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiAzLCB1c2UgcHJvajQudG9Qb2ludCIpfXZhciBkPWEoIm1ncnMiKTtQb2ludC5mcm9tTUdSUz1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IFBvaW50KGQudG9Qb2ludChhKSl9LFBvaW50LnByb3RvdHlwZS50b01HUlM9ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZm9yd2FyZChbdGhpcy54LHRoaXMueV0sYSl9LGIuZXhwb3J0cz1Qb2ludH0se21ncnM6Njh9XSwyOltmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gUHJvamVjdGlvbihhLGIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIFByb2plY3Rpb24pKXJldHVybiBuZXcgUHJvamVjdGlvbihhKTtiPWJ8fGZ1bmN0aW9uKGEpe2lmKGEpdGhyb3cgYX07dmFyIGM9ZChhKTtpZigib2JqZWN0IiE9dHlwZW9mIGMpcmV0dXJuIHZvaWQgYihhKTt2YXIgZj1nKGMpLGg9UHJvamVjdGlvbi5wcm9qZWN0aW9ucy5nZXQoZi5wcm9qTmFtZSk7aD8oZSh0aGlzLGYpLGUodGhpcyxoKSx0aGlzLmluaXQoKSxiKG51bGwsdGhpcykpOmIoYSl9dmFyIGQ9YSgiLi9wYXJzZUNvZGUiKSxlPWEoIi4vZXh0ZW5kIiksZj1hKCIuL3Byb2plY3Rpb25zIiksZz1hKCIuL2Rlcml2ZUNvbnN0YW50cyIpO1Byb2plY3Rpb24ucHJvamVjdGlvbnM9ZixQcm9qZWN0aW9uLnByb2plY3Rpb25zLnN0YXJ0KCksYi5leHBvcnRzPVByb2plY3Rpb259LHsiLi9kZXJpdmVDb25zdGFudHMiOjMzLCIuL2V4dGVuZCI6MzQsIi4vcGFyc2VDb2RlIjozNywiLi9wcm9qZWN0aW9ucyI6Mzl9XSwzOltmdW5jdGlvbihhLGIsYyl7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZz1jLngsaD1jLnksaT1jLnp8fDA7Zm9yKGY9MDszPmY7ZisrKWlmKCFifHwyIT09Znx8dm9pZCAwIT09Yy56KXN3aXRjaCgwPT09Zj8oZD1nLGU9IngiKToxPT09Zj8oZD1oLGU9InkiKTooZD1pLGU9InoiKSxhLmF4aXNbZl0pe2Nhc2UiZSI6Y1tlXT1kO2JyZWFrO2Nhc2UidyI6Y1tlXT0tZDticmVhaztjYXNlIm4iOmNbZV09ZDticmVhaztjYXNlInMiOmNbZV09LWQ7YnJlYWs7Y2FzZSJ1Ijp2b2lkIDAhPT1jW2VdJiYoYy56PWQpO2JyZWFrO2Nhc2UiZCI6dm9pZCAwIT09Y1tlXSYmKGMuej0tZCk7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gbnVsbH1yZXR1cm4gY319LHt9XSw0OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9TWF0aC5QSS8yLGU9YSgiLi9zaWduIik7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLmFicyhhKTxkP2E6YS1lKGEpKk1hdGguUEl9fSx7Ii4vc2lnbiI6MjF9XSw1OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9MipNYXRoLlBJLGU9My4xNDE1OTI2NTM1OSxmPWEoIi4vc2lnbiIpO2IuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5hYnMoYSk8PWU/YTphLWYoYSkqZH19LHsiLi9zaWduIjoyMX1dLDY6W2Z1bmN0aW9uKGEsYixjKXtiLmV4cG9ydHM9ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGguYWJzKGEpPjEmJihhPWE+MT8xOi0xKSxNYXRoLmFzaW4oYSl9fSx7fV0sNzpbZnVuY3Rpb24oYSxiLGMpe2IuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4gMS0uMjUqYSooMSthLzE2KigzKzEuMjUqYSkpfX0se31dLDg6W2Z1bmN0aW9uKGEsYixjKXtiLmV4cG9ydHM9ZnVuY3Rpb24oYSl7cmV0dXJuLjM3NSphKigxKy4yNSphKigxKy40Njg3NSphKSl9fSx7fV0sOTpbZnVuY3Rpb24oYSxiLGMpe2IuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4uMDU4NTkzNzUqYSphKigxKy43NSphKX19LHt9XSwxMDpbZnVuY3Rpb24oYSxiLGMpe2IuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4gYSphKmEqKDM1LzMwNzIpfX0se31dLDExOltmdW5jdGlvbihhLGIsYyl7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1iKmM7cmV0dXJuIGEvTWF0aC5zcXJ0KDEtZCpkKX19LHt9XSwxMjpbZnVuY3Rpb24oYSxiLGMpe2IuZXhwb3J0cz1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGc7Zj1hL2I7Zm9yKHZhciBoPTA7MTU+aDtoKyspaWYoZz0oYS0oYipmLWMqTWF0aC5zaW4oMipmKStkKk1hdGguc2luKDQqZiktZSpNYXRoLnNpbig2KmYpKSkvKGItMipjKk1hdGguY29zKDIqZikrNCpkKk1hdGguY29zKDQqZiktNiplKk1hdGguY29zKDYqZikpLGYrPWcsTWF0aC5hYnMoZyk8PTFlLTEwKXJldHVybiBmO3JldHVybiBOYU59fSx7fV0sMTM6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1NYXRoLlBJLzI7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYil7dmFyIGM9MS0oMS1hKmEpLygyKmEpKk1hdGgubG9nKCgxLWEpLygxK2EpKTtpZihNYXRoLmFicyhNYXRoLmFicyhiKS1jKTwxZS02KXJldHVybiAwPmI/LTEqZDpkO2Zvcih2YXIgZSxmLGcsaCxpPU1hdGguYXNpbiguNSpiKSxqPTA7MzA+ajtqKyspaWYoZj1NYXRoLnNpbihpKSxnPU1hdGguY29zKGkpLGg9YSpmLGU9TWF0aC5wb3coMS1oKmgsMikvKDIqZykqKGIvKDEtYSphKS1mLygxLWgqaCkrLjUvYSpNYXRoLmxvZygoMS1oKS8oMStoKSkpLGkrPWUsTWF0aC5hYnMoZSk8PTFlLTEwKXJldHVybiBpO3JldHVybiBOYU59fSx7fV0sMTQ6W2Z1bmN0aW9uKGEsYixjKXtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gYSplLWIqTWF0aC5zaW4oMiplKStjKk1hdGguc2luKDQqZSktZCpNYXRoLnNpbig2KmUpfX0se31dLDE1OltmdW5jdGlvbihhLGIsYyl7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hKmI7cmV0dXJuIGMvTWF0aC5zcXJ0KDEtZCpkKX19LHt9XSwxNjpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU1hdGguUEkvMjtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZSxmPS41KmEsZz1kLTIqTWF0aC5hdGFuKGIpLGg9MDsxNT49aDtoKyspaWYoYz1hKk1hdGguc2luKGcpLGU9ZC0yKk1hdGguYXRhbihiKk1hdGgucG93KCgxLWMpLygxK2MpLGYpKS1nLGcrPWUsTWF0aC5hYnMoZSk8PTFlLTEwKXJldHVybiBnO3JldHVybi05OTk5fX0se31dLDE3OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9MSxlPS4yNSxmPS4wNDY4NzUsZz0uMDE5NTMxMjUsaD0uMDEwNjgxMTUyMzQzNzUsaT0uNzUsaj0uNDY4NzUsaz0uMDEzMDIwODMzMzMzMzMzMzM0LGw9LjAwNzEyMDc2ODIyOTE2NjY2NyxtPS4zNjQ1ODMzMzMzMzMzMzMzLG49LjAwNTY5NjYxNDU4MzMzMzMzMyxvPS4zMDc2MTcxODc1O2IuZXhwb3J0cz1mdW5jdGlvbihhKXt2YXIgYj1bXTtiWzBdPWQtYSooZSthKihmK2EqKGcrYSpoKSkpLGJbMV09YSooaS1hKihmK2EqKGcrYSpoKSkpO3ZhciBjPWEqYTtyZXR1cm4gYlsyXT1jKihqLWEqKGsrYSpsKSksYyo9YSxiWzNdPWMqKG0tYSpuKSxiWzRdPWMqYSpvLGJ9fSx7fV0sMTg6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL3BqX21sZm4iKSxlPTFlLTEwLGY9MjA7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGc9MS8oMS1iKSxoPWEsaT1mO2k7LS1pKXt2YXIgaj1NYXRoLnNpbihoKSxrPTEtYipqKmo7aWYoaz0oZChoLGosTWF0aC5jb3MoaCksYyktYSkqKGsqTWF0aC5zcXJ0KGspKSpnLGgtPWssTWF0aC5hYnMoayk8ZSlyZXR1cm4gaH1yZXR1cm4gaH19LHsiLi9wal9tbGZuIjoxOX1dLDE5OltmdW5jdGlvbihhLGIsYyl7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBjKj1iLGIqPWIsZFswXSphLWMqKGRbMV0rYiooZFsyXStiKihkWzNdK2IqZFs0XSkpKX19LHt9XSwyMDpbZnVuY3Rpb24oYSxiLGMpe2IuZXhwb3J0cz1mdW5jdGlvbihhLGIpe3ZhciBjO3JldHVybiBhPjFlLTc/KGM9YSpiLCgxLWEqYSkqKGIvKDEtYypjKS0uNS9hKk1hdGgubG9nKCgxLWMpLygxK2MpKSkpOjIqYn19LHt9XSwyMTpbZnVuY3Rpb24oYSxiLGMpe2IuZXhwb3J0cz1mdW5jdGlvbihhKXtyZXR1cm4gMD5hPy0xOjF9fSx7fV0sMjI6W2Z1bmN0aW9uKGEsYixjKXtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gTWF0aC5wb3coKDEtYSkvKDErYSksYil9fSx7fV0sMjM6W2Z1bmN0aW9uKGEsYixjKXtiLmV4cG9ydHM9ZnVuY3Rpb24oYSl7dmFyIGI9e3g6YVswXSx5OmFbMV19O3JldHVybiBhLmxlbmd0aD4yJiYoYi56PWFbMl0pLGEubGVuZ3RoPjMmJihiLm09YVszXSksYn19LHt9XSwyNDpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU1hdGguUEkvMjtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWEqYyxmPS41KmE7cmV0dXJuIGU9TWF0aC5wb3coKDEtZSkvKDErZSksZiksTWF0aC50YW4oLjUqKGQtYikpL2V9fSx7fV0sMjU6W2Z1bmN0aW9uKGEsYixjKXtjLndnczg0PXt0b3dnczg0OiIwLDAsMCIsZWxsaXBzZToiV0dTODQiLGRhdHVtTmFtZToiV0dTODQifSxjLmNoMTkwMz17dG93Z3M4NDoiNjc0LjM3NCwxNS4wNTYsNDA1LjM0NiIsZWxsaXBzZToiYmVzc2VsIixkYXR1bU5hbWU6InN3aXNzIn0sYy5nZ3JzODc9e3Rvd2dzODQ6Ii0xOTkuODcsNzQuNzksMjQ2LjYyIixlbGxpcHNlOiJHUlM4MCIsZGF0dW1OYW1lOiJHcmVla19HZW9kZXRpY19SZWZlcmVuY2VfU3lzdGVtXzE5ODcifSxjLm5hZDgzPXt0b3dnczg0OiIwLDAsMCIsZWxsaXBzZToiR1JTODAiLGRhdHVtTmFtZToiTm9ydGhfQW1lcmljYW5fRGF0dW1fMTk4MyJ9LGMubmFkMjc9e25hZGdyaWRzOiJAY29udXMsQGFsYXNrYSxAbnR2Ml8wLmdzYixAbnR2MV9jYW4uZGF0IixlbGxpcHNlOiJjbHJrNjYiLGRhdHVtTmFtZToiTm9ydGhfQW1lcmljYW5fRGF0dW1fMTkyNyJ9LGMucG90c2RhbT17dG93Z3M4NDoiNjA2LjAsMjMuMCw0MTMuMCIsZWxsaXBzZToiYmVzc2VsIixkYXR1bU5hbWU6IlBvdHNkYW0gUmF1ZW5iZXJnIDE5NTAgREhETiJ9LGMuY2FydGhhZ2U9e3Rvd2dzODQ6Ii0yNjMuMCw2LjAsNDMxLjAiLGVsbGlwc2U6ImNsYXJrODAiLGRhdHVtTmFtZToiQ2FydGhhZ2UgMTkzNCBUdW5pc2lhIn0sYy5oZXJtYW5uc2tvZ2VsPXt0b3dnczg0OiI2NTMuMCwtMjEyLjAsNDQ5LjAiLGVsbGlwc2U6ImJlc3NlbCIsZGF0dW1OYW1lOiJIZXJtYW5uc2tvZ2VsIn0sYy5pcmU2NT17dG93Z3M4NDoiNDgyLjUzMCwtMTMwLjU5Niw1NjQuNTU3LC0xLjA0MiwtMC4yMTQsLTAuNjMxLDguMTUiLGVsbGlwc2U6Im1vZF9haXJ5IixkYXR1bU5hbWU6IklyZWxhbmQgMTk2NSJ9LGMucmFzc2FkaXJhbj17dG93Z3M4NDoiLTEzMy42MywtMTU3LjUsLTE1OC42MiIsZWxsaXBzZToiaW50bCIsZGF0dW1OYW1lOiJSYXNzYWRpcmFuIn0sYy5uemdkNDk9e3Rvd2dzODQ6IjU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyIsZWxsaXBzZToiaW50bCIsZGF0dW1OYW1lOiJOZXcgWmVhbGFuZCBHZW9kZXRpYyBEYXR1bSAxOTQ5In0sYy5vc2diMzY9e3Rvd2dzODQ6IjQ0Ni40NDgsLTEyNS4xNTcsNTQyLjA2MCwwLjE1MDIsMC4yNDcwLDAuODQyMSwtMjAuNDg5NCIsZWxsaXBzZToiYWlyeSIsZGF0dW1OYW1lOiJBaXJ5IDE4MzAifSxjLnNfanRzaz17dG93Z3M4NDoiNTg5LDc2LDQ4MCIsZWxsaXBzZToiYmVzc2VsIixkYXR1bU5hbWU6IlMtSlRTSyAoRmVycm8pIn0sYy5iZWR1YXJhbT17dG93Z3M4NDoiLTEwNiwtODcsMTg4IixlbGxpcHNlOiJjbHJrODAiLGRhdHVtTmFtZToiQmVkdWFyYW0ifSxjLmd1bnVuZ19zZWdhcmE9e3Rvd2dzODQ6Ii00MDMsNjg0LDQxIixlbGxpcHNlOiJiZXNzZWwiLGRhdHVtTmFtZToiR3VudW5nIFNlZ2FyYSBKYWthcnRhIn0sYy5ybmI3Mj17dG93Z3M4NDoiMTA2Ljg2OSwtNTIuMjk3OCwxMDMuNzI0LC0wLjMzNjU3LDAuNDU2OTU1LC0xLjg0MjE4LDEiLGVsbGlwc2U6ImludGwiLGRhdHVtTmFtZToiUmVzZWF1IE5hdGlvbmFsIEJlbGdlIDE5NzIifX0se31dLDI2OltmdW5jdGlvbihhLGIsYyl7Yy5NRVJJVD17YTo2Mzc4MTM3LHJmOjI5OC4yNTcsZWxsaXBzZU5hbWU6Ik1FUklUIDE5ODMifSxjLlNHUzg1PXthOjYzNzgxMzYscmY6Mjk4LjI1NyxlbGxpcHNlTmFtZToiU292aWV0IEdlb2RldGljIFN5c3RlbSA4NSJ9LGMuR1JTODA9e2E6NjM3ODEzNyxyZjoyOTguMjU3MjIyMTAxLGVsbGlwc2VOYW1lOiJHUlMgMTk4MChJVUdHLCAxOTgwKSJ9LGMuSUFVNzY9e2E6NjM3ODE0MCxyZjoyOTguMjU3LGVsbGlwc2VOYW1lOiJJQVUgMTk3NiJ9LGMuYWlyeT17YTo2Mzc3NTYzLjM5NixiOjYzNTYyNTYuOTEsZWxsaXBzZU5hbWU6IkFpcnkgMTgzMCJ9LGMuQVBMND17YTo2Mzc4MTM3LHJmOjI5OC4yNSxlbGxpcHNlTmFtZToiQXBwbC4gUGh5c2ljcy4gMTk2NSJ9LGMuTldMOUQ9e2E6NjM3ODE0NSxyZjoyOTguMjUsZWxsaXBzZU5hbWU6Ik5hdmFsIFdlYXBvbnMgTGFiLiwgMTk2NSJ9LGMubW9kX2Fpcnk9e2E6NjM3NzM0MC4xODksYjo2MzU2MDM0LjQ0NixlbGxpcHNlTmFtZToiTW9kaWZpZWQgQWlyeSJ9LGMuYW5kcmFlPXthOjYzNzcxMDQuNDMscmY6MzAwLGVsbGlwc2VOYW1lOiJBbmRyYWUgMTg3NiAoRGVuLiwgSWNsbmQuKSJ9LGMuYXVzdF9TQT17YTo2Mzc4MTYwLHJmOjI5OC4yNSxlbGxpcHNlTmFtZToiQXVzdHJhbGlhbiBOYXRsICYgUy4gQW1lci4gMTk2OSJ9LGMuR1JTNjc9e2E6NjM3ODE2MCxyZjoyOTguMjQ3MTY3NDI3LGVsbGlwc2VOYW1lOiJHUlMgNjcoSVVHRyAxOTY3KSJ9LGMuYmVzc2VsPXthOjYzNzczOTcuMTU1LHJmOjI5OS4xNTI4MTI4LGVsbGlwc2VOYW1lOiJCZXNzZWwgMTg0MSJ9LGMuYmVzc19uYW09e2E6NjM3NzQ4My44NjUscmY6Mjk5LjE1MjgxMjgsZWxsaXBzZU5hbWU6IkJlc3NlbCAxODQxIChOYW1pYmlhKSJ9LGMuY2xyazY2PXthOjYzNzgyMDYuNCxiOjYzNTY1ODMuOCxlbGxpcHNlTmFtZToiQ2xhcmtlIDE4NjYifSxjLmNscms4MD17YTo2Mzc4MjQ5LjE0NSxyZjoyOTMuNDY2MyxlbGxpcHNlTmFtZToiQ2xhcmtlIDE4ODAgbW9kLiJ9LGMuY2xyazU4PXthOjYzNzgyOTMuNjQ1MjA4NzU5LHJmOjI5NC4yNjA2NzYzNjkyNjU0LGVsbGlwc2VOYW1lOiJDbGFya2UgMTg1OCJ9LGMuQ1BNPXthOjYzNzU3MzguNyxyZjozMzQuMjksZWxsaXBzZU5hbWU6IkNvbW0uIGRlcyBQb2lkcyBldCBNZXN1cmVzIDE3OTkifSxjLmRlbG1icj17YTo2Mzc2NDI4LHJmOjMxMS41LGVsbGlwc2VOYW1lOiJEZWxhbWJyZSAxODEwIChCZWxnaXVtKSJ9LGMuZW5nZWxpcz17YTo2Mzc4MTM2LjA1LHJmOjI5OC4yNTY2LGVsbGlwc2VOYW1lOiJFbmdlbGlzIDE5ODUifSxjLmV2cnN0MzA9e2E6NjM3NzI3Ni4zNDUscmY6MzAwLjgwMTcsZWxsaXBzZU5hbWU6IkV2ZXJlc3QgMTgzMCJ9LGMuZXZyc3Q0OD17YTo2Mzc3MzA0LjA2MyxyZjozMDAuODAxNyxlbGxpcHNlTmFtZToiRXZlcmVzdCAxOTQ4In0sYy5ldnJzdDU2PXthOjYzNzczMDEuMjQzLHJmOjMwMC44MDE3LGVsbGlwc2VOYW1lOiJFdmVyZXN0IDE5NTYifSxjLmV2cnN0Njk9e2E6NjM3NzI5NS42NjQscmY6MzAwLjgwMTcsZWxsaXBzZU5hbWU6IkV2ZXJlc3QgMTk2OSJ9LGMuZXZyc3RTUz17YTo2Mzc3Mjk4LjU1NixyZjozMDAuODAxNyxlbGxpcHNlTmFtZToiRXZlcmVzdCAoU2FiYWggJiBTYXJhd2FrKSJ9LGMuZnNjaHI2MD17YTo2Mzc4MTY2LHJmOjI5OC4zLGVsbGlwc2VOYW1lOiJGaXNjaGVyIChNZXJjdXJ5IERhdHVtKSAxOTYwIn0sYy5mc2NocjYwbT17YTo2Mzc4MTU1LHJmOjI5OC4zLGVsbGlwc2VOYW1lOiJGaXNjaGVyIDE5NjAifSxjLmZzY2hyNjg9e2E6NjM3ODE1MCxyZjoyOTguMyxlbGxpcHNlTmFtZToiRmlzY2hlciAxOTY4In0sYy5oZWxtZXJ0PXthOjYzNzgyMDAscmY6Mjk4LjMsZWxsaXBzZU5hbWU6IkhlbG1lcnQgMTkwNiJ9LGMuaG91Z2g9e2E6NjM3ODI3MCxyZjoyOTcsZWxsaXBzZU5hbWU6IkhvdWdoIn0sYy5pbnRsPXthOjYzNzgzODgscmY6Mjk3LGVsbGlwc2VOYW1lOiJJbnRlcm5hdGlvbmFsIDE5MDkgKEhheWZvcmQpIn0sYy5rYXVsYT17YTo2Mzc4MTYzLHJmOjI5OC4yNCxlbGxpcHNlTmFtZToiS2F1bGEgMTk2MSJ9LGMubGVyY2g9e2E6NjM3ODEzOSxyZjoyOTguMjU3LGVsbGlwc2VOYW1lOiJMZXJjaCAxOTc5In0sYy5tcHJ0cz17YTo2Mzk3MzAwLHJmOjE5MSxlbGxpcHNlTmFtZToiTWF1cGVydGl1cyAxNzM4In0sYy5uZXdfaW50bD17YTo2Mzc4MTU3LjUsYjo2MzU2NzcyLjIsZWxsaXBzZU5hbWU6Ik5ldyBJbnRlcm5hdGlvbmFsIDE5NjcifSxjLnBsZXNzaXM9e2E6NjM3NjUyMyxyZjo2MzU1ODYzLGVsbGlwc2VOYW1lOiJQbGVzc2lzIDE4MTcgKEZyYW5jZSkifSxjLmtyYXNzPXthOjYzNzgyNDUscmY6Mjk4LjMsZWxsaXBzZU5hbWU6IktyYXNzb3Zza3ksIDE5NDIifSxjLlNFYXNpYT17YTo2Mzc4MTU1LGI6NjM1Njc3My4zMjA1LGVsbGlwc2VOYW1lOiJTb3V0aGVhc3QgQXNpYSJ9LGMud2FsYmVjaz17YTo2Mzc2ODk2LGI6NjM1NTgzNC44NDY3LGVsbGlwc2VOYW1lOiJXYWxiZWNrIn0sYy5XR1M2MD17YTo2Mzc4MTY1LHJmOjI5OC4zLGVsbGlwc2VOYW1lOiJXR1MgNjAifSxjLldHUzY2PXthOjYzNzgxNDUscmY6Mjk4LjI1LGVsbGlwc2VOYW1lOiJXR1MgNjYifSxjLldHUzc9e2E6NjM3ODEzNSxyZjoyOTguMjYsZWxsaXBzZU5hbWU6IldHUyA3MiJ9LGMuV0dTODQ9e2E6NjM3ODEzNyxyZjoyOTguMjU3MjIzNTYzLGVsbGlwc2VOYW1lOiJXR1MgODQifSxjLnNwaGVyZT17YTo2MzcwOTk3LGI6NjM3MDk5NyxlbGxpcHNlTmFtZToiTm9ybWFsIFNwaGVyZSAocj02MzcwOTk3KSJ9fSx7fV0sMjc6W2Z1bmN0aW9uKGEsYixjKXtjLmdyZWVud2ljaD0wLGMubGlzYm9uPS05LjEzMTkwNjExMTExMSxjLnBhcmlzPTIuMzM3MjI5MTY2NjY3LGMuYm9nb3RhPS03NC4wODA5MTY2NjY2NjcsYy5tYWRyaWQ9LTMuNjg3OTM4ODg4ODg5LGMucm9tZT0xMi40NTIzMzMzMzMzMzMsYy5iZXJuPTcuNDM5NTgzMzMzMzMzLGMuamFrYXJ0YT0xMDYuODA3NzE5NDQ0NDQ0LGMuZmVycm89LTE3LjY2NjY2NjY2NjY2NyxjLmJydXNzZWxzPTQuMzY3OTc1LGMuc3RvY2tob2xtPTE4LjA1ODI3Nzc3Nzc3OCxjLmF0aGVucz0yMy43MTYzMzc1LGMub3Nsbz0xMC43MjI5MTY2NjY2Njd9LHt9XSwyODpbZnVuY3Rpb24oYSxiLGMpe2MuZnQ9e3RvX21ldGVyOi4zMDQ4fSxjWyJ1cy1mdCJdPXt0b19tZXRlcjoxMjAwLzM5Mzd9fSx7fV0sMjk6W2Z1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEsYixjKXt2YXIgZDtyZXR1cm4gQXJyYXkuaXNBcnJheShjKT8oZD1nKGEsYixjKSwzPT09Yy5sZW5ndGg/W2QueCxkLnksZC56XTpbZC54LGQueV0pOmcoYSxiLGMpfWZ1bmN0aW9uIGUoYSl7cmV0dXJuIGEgaW5zdGFuY2VvZiBmP2E6YS5vUHJvaj9hLm9Qcm9qOmYoYSl9ZnVuY3Rpb24gcHJvajQoYSxiLGMpe2E9ZShhKTt2YXIgZixnPSExO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgYj8oYj1hLGE9aCxnPSEwKTooInVuZGVmaW5lZCIhPXR5cGVvZiBiLnh8fEFycmF5LmlzQXJyYXkoYikpJiYoYz1iLGI9YSxhPWgsZz0hMCksYj1lKGIpLGM/ZChhLGIsYyk6KGY9e2ZvcndhcmQ6ZnVuY3Rpb24oYyl7cmV0dXJuIGQoYSxiLGMpfSxpbnZlcnNlOmZ1bmN0aW9uKGMpe3JldHVybiBkKGIsYSxjKX19LGcmJihmLm9Qcm9qPWIpLGYpfXZhciBmPWEoIi4vUHJvaiIpLGc9YSgiLi90cmFuc2Zvcm0iKSxoPWYoIldHUzg0Iik7Yi5leHBvcnRzPXByb2o0fSx7Ii4vUHJvaiI6MiwiLi90cmFuc2Zvcm0iOjY2fV0sMzA6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1NYXRoLlBJLzIsZT0xLGY9MixnPTMsaD00LGk9NSxqPTQ4NDgxMzY4MTEwOTUzNmUtMjAsaz0xLjAwMjYsbD0uMzgyNjgzNDMyMzY1MDg5OCxtPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzIGluc3RhbmNlb2YgbT8odGhpcy5kYXR1bV90eXBlPWgsdm9pZChhJiYoYS5kYXR1bUNvZGUmJiJub25lIj09PWEuZGF0dW1Db2RlJiYodGhpcy5kYXR1bV90eXBlPWkpLGEuZGF0dW1fcGFyYW1zJiYodGhpcy5kYXR1bV9wYXJhbXM9YS5kYXR1bV9wYXJhbXMubWFwKHBhcnNlRmxvYXQpLDA9PT10aGlzLmRhdHVtX3BhcmFtc1swXSYmMD09PXRoaXMuZGF0dW1fcGFyYW1zWzFdJiYwPT09dGhpcy5kYXR1bV9wYXJhbXNbMl18fCh0aGlzLmRhdHVtX3R5cGU9ZSksdGhpcy5kYXR1bV9wYXJhbXMubGVuZ3RoPjMmJigwPT09dGhpcy5kYXR1bV9wYXJhbXNbM10mJjA9PT10aGlzLmRhdHVtX3BhcmFtc1s0XSYmMD09PXRoaXMuZGF0dW1fcGFyYW1zWzVdJiYwPT09dGhpcy5kYXR1bV9wYXJhbXNbNl18fCh0aGlzLmRhdHVtX3R5cGU9Zix0aGlzLmRhdHVtX3BhcmFtc1szXSo9aix0aGlzLmRhdHVtX3BhcmFtc1s0XSo9aix0aGlzLmRhdHVtX3BhcmFtc1s1XSo9aix0aGlzLmRhdHVtX3BhcmFtc1s2XT10aGlzLmRhdHVtX3BhcmFtc1s2XS8xZTYrMSkpKSx0aGlzLmRhdHVtX3R5cGU9YS5ncmlkcz9nOnRoaXMuZGF0dW1fdHlwZSx0aGlzLmE9YS5hLHRoaXMuYj1hLmIsdGhpcy5lcz1hLmVzLHRoaXMuZXAyPWEuZXAyLHRoaXMuZGF0dW1fdHlwZT09PWcmJih0aGlzLmdyaWRzPWEuZ3JpZHMpKSkpOm5ldyBtKGEpfTttLnByb3RvdHlwZT17Y29tcGFyZV9kYXR1bXM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZGF0dW1fdHlwZSE9PWEuZGF0dW1fdHlwZT8hMTp0aGlzLmEhPT1hLmF8fE1hdGguYWJzKHRoaXMuZXMtYS5lcyk+NWUtMTE/ITE6dGhpcy5kYXR1bV90eXBlPT09ZT90aGlzLmRhdHVtX3BhcmFtc1swXT09PWEuZGF0dW1fcGFyYW1zWzBdJiZ0aGlzLmRhdHVtX3BhcmFtc1sxXT09PWEuZGF0dW1fcGFyYW1zWzFdJiZ0aGlzLmRhdHVtX3BhcmFtc1syXT09PWEuZGF0dW1fcGFyYW1zWzJdOnRoaXMuZGF0dW1fdHlwZT09PWY/dGhpcy5kYXR1bV9wYXJhbXNbMF09PT1hLmRhdHVtX3BhcmFtc1swXSYmdGhpcy5kYXR1bV9wYXJhbXNbMV09PT1hLmRhdHVtX3BhcmFtc1sxXSYmdGhpcy5kYXR1bV9wYXJhbXNbMl09PT1hLmRhdHVtX3BhcmFtc1syXSYmdGhpcy5kYXR1bV9wYXJhbXNbM109PT1hLmRhdHVtX3BhcmFtc1szXSYmdGhpcy5kYXR1bV9wYXJhbXNbNF09PT1hLmRhdHVtX3BhcmFtc1s0XSYmdGhpcy5kYXR1bV9wYXJhbXNbNV09PT1hLmRhdHVtX3BhcmFtc1s1XSYmdGhpcy5kYXR1bV9wYXJhbXNbNl09PT1hLmRhdHVtX3BhcmFtc1s2XTp0aGlzLmRhdHVtX3R5cGU9PT1nfHxhLmRhdHVtX3R5cGU9PT1nP3RoaXMubmFkZ3JpZHM9PT1hLm5hZGdyaWRzOiEwfSxnZW9kZXRpY190b19nZW9jZW50cmljOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZSxmLGcsaCxpLGo9YS54LGs9YS55LGw9YS56P2EuejowLG09MDtpZigtZD5rJiZrPi0xLjAwMSpkKWs9LWQ7ZWxzZSBpZihrPmQmJjEuMDAxKmQ+aylrPWQ7ZWxzZSBpZigtZD5rfHxrPmQpcmV0dXJuIG51bGw7cmV0dXJuIGo+TWF0aC5QSSYmKGotPTIqTWF0aC5QSSksZz1NYXRoLnNpbihrKSxpPU1hdGguY29zKGspLGg9ZypnLGY9dGhpcy5hL01hdGguc3FydCgxLXRoaXMuZXMqaCksYj0oZitsKSppKk1hdGguY29zKGopLGM9KGYrbCkqaSpNYXRoLnNpbihqKSxlPShmKigxLXRoaXMuZXMpK2wpKmcsYS54PWIsYS55PWMsYS56PWUsbX0sZ2VvY2VudHJpY190b19nZW9kZXRpYzpmdW5jdGlvbihhKXt2YXIgYixjLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQ9MWUtMTIsdT10KnQsdj0zMCx3PWEueCx4PWEueSx5PWEuej9hLno6MDtpZihvPSExLGI9TWF0aC5zcXJ0KHcqdyt4KngpLGM9TWF0aC5zcXJ0KHcqdyt4KngreSp5KSxiL3RoaXMuYTx0KXtpZihvPSEwLHE9MCxjL3RoaXMuYTx0KXJldHVybiByPWQsdm9pZChzPS10aGlzLmIpfWVsc2UgcT1NYXRoLmF0YW4yKHgsdyk7ZT15L2MsZj1iL2MsZz0xL01hdGguc3FydCgxLXRoaXMuZXMqKDItdGhpcy5lcykqZipmKSxqPWYqKDEtdGhpcy5lcykqZyxrPWUqZyxwPTA7ZG8gcCsrLGk9dGhpcy5hL01hdGguc3FydCgxLXRoaXMuZXMqayprKSxzPWIqait5KmstaSooMS10aGlzLmVzKmsqayksaD10aGlzLmVzKmkvKGkrcyksZz0xL01hdGguc3FydCgxLWgqKDItaCkqZipmKSxsPWYqKDEtaCkqZyxtPWUqZyxuPW0qai1sKmssaj1sLGs9bTt3aGlsZShuKm4+dSYmdj5wKTtyZXR1cm4gcj1NYXRoLmF0YW4obS9NYXRoLmFicyhsKSksYS54PXEsYS55PXIsYS56PXMsYX0sZ2VvY2VudHJpY190b19nZW9kZXRpY19ub25pdGVyOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZSxmLGcsaCxpLGosbSxuLG8scCxxLHIscyx0LHUsdj1hLngsdz1hLnkseD1hLno/YS56OjA7aWYodj1wYXJzZUZsb2F0KHYpLHc9cGFyc2VGbG9hdCh3KSx4PXBhcnNlRmxvYXQoeCksdT0hMSwwIT09diliPU1hdGguYXRhbjIodyx2KTtlbHNlIGlmKHc+MCliPWQ7ZWxzZSBpZigwPncpYj0tZDtlbHNlIGlmKHU9ITAsYj0wLHg+MCljPWQ7ZWxzZXtpZighKDA+eCkpcmV0dXJuIGM9ZCx2b2lkKGU9LXRoaXMuYik7Yz0tZH1yZXR1cm4gZz12KnYrdyp3LGY9TWF0aC5zcXJ0KGcpLGg9eCprLGo9TWF0aC5zcXJ0KGgqaCtnKSxuPWgvaixwPWYvaixvPW4qbipuLGk9eCt0aGlzLmIqdGhpcy5lcDIqbyx0PWYtdGhpcy5hKnRoaXMuZXMqcCpwKnAsbT1NYXRoLnNxcnQoaSppK3QqdCkscT1pL20scj10L20scz10aGlzLmEvTWF0aC5zcXJ0KDEtdGhpcy5lcypxKnEpLGU9cj49bD9mL3ItczotbD49cj9mLy1yLXM6eC9xK3MqKHRoaXMuZXMtMSksdT09PSExJiYoYz1NYXRoLmF0YW4ocS9yKSksYS54PWIsYS55PWMsYS56PWUsYX0sZ2VvY2VudHJpY190b193Z3M4NDpmdW5jdGlvbihhKXtpZih0aGlzLmRhdHVtX3R5cGU9PT1lKWEueCs9dGhpcy5kYXR1bV9wYXJhbXNbMF0sYS55Kz10aGlzLmRhdHVtX3BhcmFtc1sxXSxhLnorPXRoaXMuZGF0dW1fcGFyYW1zWzJdO2Vsc2UgaWYodGhpcy5kYXR1bV90eXBlPT09Zil7dmFyIGI9dGhpcy5kYXR1bV9wYXJhbXNbMF0sYz10aGlzLmRhdHVtX3BhcmFtc1sxXSxkPXRoaXMuZGF0dW1fcGFyYW1zWzJdLGc9dGhpcy5kYXR1bV9wYXJhbXNbM10saD10aGlzLmRhdHVtX3BhcmFtc1s0XSxpPXRoaXMuZGF0dW1fcGFyYW1zWzVdLGo9dGhpcy5kYXR1bV9wYXJhbXNbNl0saz1qKihhLngtaSphLnkraCphLnopK2IsbD1qKihpKmEueCthLnktZyphLnopK2MsbT1qKigtaCphLngrZyphLnkrYS56KStkO2EueD1rLGEueT1sLGEuej1tfX0sZ2VvY2VudHJpY19mcm9tX3dnczg0OmZ1bmN0aW9uKGEpe2lmKHRoaXMuZGF0dW1fdHlwZT09PWUpYS54LT10aGlzLmRhdHVtX3BhcmFtc1swXSxhLnktPXRoaXMuZGF0dW1fcGFyYW1zWzFdLGEuei09dGhpcy5kYXR1bV9wYXJhbXNbMl07ZWxzZSBpZih0aGlzLmRhdHVtX3R5cGU9PT1mKXt2YXIgYj10aGlzLmRhdHVtX3BhcmFtc1swXSxjPXRoaXMuZGF0dW1fcGFyYW1zWzFdLGQ9dGhpcy5kYXR1bV9wYXJhbXNbMl0sZz10aGlzLmRhdHVtX3BhcmFtc1szXSxoPXRoaXMuZGF0dW1fcGFyYW1zWzRdLGk9dGhpcy5kYXR1bV9wYXJhbXNbNV0saj10aGlzLmRhdHVtX3BhcmFtc1s2XSxrPShhLngtYikvaixsPShhLnktYykvaixtPShhLnotZCkvajthLng9aytpKmwtaCptLGEueT0taSprK2wrZyptLGEuej1oKmstZypsK219fX0sYi5leHBvcnRzPW19LHt9XSwzMTpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTEsZT0yLGY9MyxnPTUsaD02Mzc4MTM3LGk9LjAwNjY5NDM3OTk5MDE0MTMxNjtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGooYSl7cmV0dXJuIGE9PT1kfHxhPT09ZX12YXIgayxsLG07aWYoYS5jb21wYXJlX2RhdHVtcyhiKSlyZXR1cm4gYztpZihhLmRhdHVtX3R5cGU9PT1nfHxiLmRhdHVtX3R5cGU9PT1nKXJldHVybiBjO3ZhciBuPWEuYSxvPWEuZXMscD1iLmEscT1iLmVzLHI9YS5kYXR1bV90eXBlO2lmKHI9PT1mKWlmKDA9PT10aGlzLmFwcGx5X2dyaWRzaGlmdChhLDAsYykpYS5hPWgsYS5lcz1pO2Vsc2V7aWYoIWEuZGF0dW1fcGFyYW1zKXJldHVybiBhLmE9bixhLmVzPWEuZXMsYztmb3Ioaz0xLGw9MCxtPWEuZGF0dW1fcGFyYW1zLmxlbmd0aDttPmw7bCsrKWsqPWEuZGF0dW1fcGFyYW1zW2xdO2lmKDA9PT1rKXJldHVybiBhLmE9bixhLmVzPWEuZXMsYztyPWEuZGF0dW1fcGFyYW1zLmxlbmd0aD4zP2U6ZH1yZXR1cm4gYi5kYXR1bV90eXBlPT09ZiYmKGIuYT1oLGIuZXM9aSksKGEuZXMhPT1iLmVzfHxhLmEhPT1iLmF8fGoocil8fGooYi5kYXR1bV90eXBlKSkmJihhLmdlb2RldGljX3RvX2dlb2NlbnRyaWMoYyksaihhLmRhdHVtX3R5cGUpJiZhLmdlb2NlbnRyaWNfdG9fd2dzODQoYyksaihiLmRhdHVtX3R5cGUpJiZiLmdlb2NlbnRyaWNfZnJvbV93Z3M4NChjKSxiLmdlb2NlbnRyaWNfdG9fZ2VvZGV0aWMoYykpLGIuZGF0dW1fdHlwZT09PWYmJnRoaXMuYXBwbHlfZ3JpZHNoaWZ0KGIsMSxjKSxhLmE9bixhLmVzPW8sYi5hPXAsYi5lcz1xLGN9fSx7fV0sMzI6W2Z1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3ZhciBiPXRoaXM7aWYoMj09PWFyZ3VtZW50cy5sZW5ndGgpe3ZhciBjPWFyZ3VtZW50c1sxXTsic3RyaW5nIj09dHlwZW9mIGM/IisiPT09Yy5jaGFyQXQoMCk/ZFthXT1mKGFyZ3VtZW50c1sxXSk6ZFthXT1nKGFyZ3VtZW50c1sxXSk6ZFthXT1jfWVsc2UgaWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpe2lmKEFycmF5LmlzQXJyYXkoYSkpcmV0dXJuIGEubWFwKGZ1bmN0aW9uKGEpe0FycmF5LmlzQXJyYXkoYSk/ZC5hcHBseShiLGEpOmQoYSl9KTtpZigic3RyaW5nIj09dHlwZW9mIGEpe2lmKGEgaW4gZClyZXR1cm4gZFthXX1lbHNlIkVQU0ciaW4gYT9kWyJFUFNHOiIrYS5FUFNHXT1hOiJFU1JJImluIGE/ZFsiRVNSSToiK2EuRVNSSV09YToiSUFVMjAwMCJpbiBhP2RbIklBVTIwMDA6IithLklBVTIwMDBdPWE6Y29uc29sZS5sb2coYSk7cmV0dXJufX12YXIgZT1hKCIuL2dsb2JhbCIpLGY9YSgiLi9wcm9qU3RyaW5nIiksZz1hKCIuL3drdCIpO2UoZCksYi5leHBvcnRzPWR9LHsiLi9nbG9iYWwiOjM1LCIuL3Byb2pTdHJpbmciOjM4LCIuL3drdCI6Njd9XSwzMzpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4vY29uc3RhbnRzL0RhdHVtIiksZT1hKCIuL2NvbnN0YW50cy9FbGxpcHNvaWQiKSxmPWEoIi4vZXh0ZW5kIiksZz1hKCIuL2RhdHVtIiksaD0xZS0xMCxpPS4xNjY2NjY2NjY2NjY2NjY2NixqPS4wNDcyMjIyMjIyMjIyMjIyMixrPS4wMjIxNTYwODQ2NTYwODQ2NTU7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe2lmKGEuZGF0dW1Db2RlJiYibm9uZSIhPT1hLmRhdHVtQ29kZSl7dmFyIGI9ZFthLmRhdHVtQ29kZV07YiYmKGEuZGF0dW1fcGFyYW1zPWIudG93Z3M4ND9iLnRvd2dzODQuc3BsaXQoIiwiKTpudWxsLGEuZWxscHM9Yi5lbGxpcHNlLGEuZGF0dW1OYW1lPWIuZGF0dW1OYW1lP2IuZGF0dW1OYW1lOmEuZGF0dW1Db2RlKX1pZighYS5hKXt2YXIgYz1lW2EuZWxscHNdP2VbYS5lbGxwc106ZS5XR1M4NDtmKGEsYyl9cmV0dXJuIGEucmYmJiFhLmImJihhLmI9KDEtMS9hLnJmKSphLmEpLCgwPT09YS5yZnx8TWF0aC5hYnMoYS5hLWEuYik8aCkmJihhLnNwaGVyZT0hMCxhLmI9YS5hKSxhLmEyPWEuYSphLmEsYS5iMj1hLmIqYS5iLGEuZXM9KGEuYTItYS5iMikvYS5hMixhLmU9TWF0aC5zcXJ0KGEuZXMpLGEuUl9BJiYoYS5hKj0xLWEuZXMqKGkrYS5lcyooaithLmVzKmspKSxhLmEyPWEuYSphLmEsYS5iMj1hLmIqYS5iLGEuZXM9MCksYS5lcDI9KGEuYTItYS5iMikvYS5iMixhLmswfHwoYS5rMD0xKSxhLmF4aXN8fChhLmF4aXM9ImVudSIpLGEuZGF0dW18fChhLmRhdHVtPWcoYSkpLGF9fSx7Ii4vY29uc3RhbnRzL0RhdHVtIjoyNSwiLi9jb25zdGFudHMvRWxsaXBzb2lkIjoyNiwiLi9kYXR1bSI6MzAsIi4vZXh0ZW5kIjozNH1dLDM0OltmdW5jdGlvbihhLGIsYyl7Yi5leHBvcnRzPWZ1bmN0aW9uKGEsYil7YT1hfHx7fTt2YXIgYyxkO2lmKCFiKXJldHVybiBhO2ZvcihkIGluIGIpYz1iW2RdLHZvaWQgMCE9PWMmJihhW2RdPWMpO3JldHVybiBhfX0se31dLDM1OltmdW5jdGlvbihhLGIsYyl7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe2EoIkVQU0c6NDMyNiIsIit0aXRsZT1XR1MgODQgKGxvbmcvbGF0KSArcHJvaj1sb25nbGF0ICtlbGxwcz1XR1M4NCArZGF0dW09V0dTODQgK3VuaXRzPWRlZ3JlZXMiKSxhKCJFUFNHOjQyNjkiLCIrdGl0bGU9TkFEODMgKGxvbmcvbGF0KSArcHJvaj1sb25nbGF0ICthPTYzNzgxMzcuMCArYj02MzU2NzUyLjMxNDE0MDM2ICtlbGxwcz1HUlM4MCArZGF0dW09TkFEODMgK3VuaXRzPWRlZ3JlZXMiKSxhKCJFUFNHOjM4NTciLCIrdGl0bGU9V0dTIDg0IC8gUHNldWRvLU1lcmNhdG9yICtwcm9qPW1lcmMgK2E9NjM3ODEzNyArYj02Mzc4MTM3ICtsYXRfdHM9MC4wICtsb25fMD0wLjAgK3hfMD0wLjAgK3lfMD0wICtrPTEuMCArdW5pdHM9bSArbmFkZ3JpZHM9QG51bGwgK25vX2RlZnMiKSxhLldHUzg0PWFbIkVQU0c6NDMyNiJdLGFbIkVQU0c6Mzc4NSJdPWFbIkVQU0c6Mzg1NyJdLGEuR09PR0xFPWFbIkVQU0c6Mzg1NyJdLGFbIkVQU0c6OTAwOTEzIl09YVsiRVBTRzozODU3Il0sYVsiRVBTRzoxMDIxMTMiXT1hWyJFUFNHOjM4NTciXX19LHt9XSwzNjpbZnVuY3Rpb24oYSxiLGMpe3ZhciBwcm9qND1hKCIuL2NvcmUiKTtwcm9qNC5kZWZhdWx0RGF0dW09IldHUzg0Iixwcm9qNC5Qcm9qPWEoIi4vUHJvaiIpLHByb2o0LldHUzg0PW5ldyBwcm9qNC5Qcm9qKCJXR1M4NCIpLHByb2o0LlBvaW50PWEoIi4vUG9pbnQiKSxwcm9qNC50b1BvaW50PWEoIi4vY29tbW9uL3RvUG9pbnQiKSxwcm9qNC5kZWZzPWEoIi4vZGVmcyIpLHByb2o0LnRyYW5zZm9ybT1hKCIuL3RyYW5zZm9ybSIpLHByb2o0Lm1ncnM9YSgibWdycyIpLHByb2o0LnZlcnNpb249YSgiLi4vcGFja2FnZS5qc29uIikudmVyc2lvbixhKCIuL2luY2x1ZGVkUHJvamVjdGlvbnMiKShwcm9qNCksYi5leHBvcnRzPXByb2o0fSx7Ii4uL3BhY2thZ2UuanNvbiI6NjksIi4vUG9pbnQiOjEsIi4vUHJvaiI6MiwiLi9jb21tb24vdG9Qb2ludCI6MjMsIi4vY29yZSI6MjksIi4vZGVmcyI6MzIsIi4vaW5jbHVkZWRQcm9qZWN0aW9ucyI6Ii4vaW5jbHVkZWRQcm9qZWN0aW9ucyIsIi4vdHJhbnNmb3JtIjo2NixtZ3JzOjY4fV0sMzc6W2Z1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBkKGEpe3JldHVybiJzdHJpbmciPT10eXBlb2YgYX1mdW5jdGlvbiBlKGEpe3JldHVybiBhIGluIGl9ZnVuY3Rpb24gZihhKXt2YXIgYj1bIkdFT0dDUyIsIkdFT0NDUyIsIlBST0pDUyIsIkxPQ0FMX0NTIl07cmV0dXJuIGIucmVkdWNlKGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGIrMSthLmluZGV4T2YoYyl9LDApfWZ1bmN0aW9uIGcoYSl7cmV0dXJuIisiPT09YVswXX1mdW5jdGlvbiBoKGEpe3JldHVybiBkKGEpP2UoYSk/aVthXTpmKGEpP2ooYSk6ZyhhKT9rKGEpOnZvaWQgMDphfXZhciBpPWEoIi4vZGVmcyIpLGo9YSgiLi93a3QiKSxrPWEoIi4vcHJvalN0cmluZyIpO2IuZXhwb3J0cz1ofSx7Ii4vZGVmcyI6MzIsIi4vcHJvalN0cmluZyI6MzgsIi4vd2t0Ijo2N31dLDM4OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9LjAxNzQ1MzI5MjUxOTk0MzI5NSxlPWEoIi4vY29uc3RhbnRzL1ByaW1lTWVyaWRpYW4iKSxmPWEoIi4vY29uc3RhbnRzL3VuaXRzIik7Yi5leHBvcnRzPWZ1bmN0aW9uKGEpe3ZhciBiPXt9LGM9e307YS5zcGxpdCgiKyIpLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS50cmltKCl9KS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGF9KS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEuc3BsaXQoIj0iKTtiLnB1c2goITApLGNbYlswXS50b0xvd2VyQ2FzZSgpXT1iWzFdfSk7dmFyIGcsaCxpLGo9e3Byb2o6InByb2pOYW1lIixkYXR1bToiZGF0dW1Db2RlIixyZjpmdW5jdGlvbihhKXtiLnJmPXBhcnNlRmxvYXQoYSl9LGxhdF8wOmZ1bmN0aW9uKGEpe2IubGF0MD1hKmR9LGxhdF8xOmZ1bmN0aW9uKGEpe2IubGF0MT1hKmR9LGxhdF8yOmZ1bmN0aW9uKGEpe2IubGF0Mj1hKmR9LGxhdF90czpmdW5jdGlvbihhKXtiLmxhdF90cz1hKmR9LGxvbl8wOmZ1bmN0aW9uKGEpe2IubG9uZzA9YSpkfSxsb25fMTpmdW5jdGlvbihhKXtiLmxvbmcxPWEqZH0sbG9uXzI6ZnVuY3Rpb24oYSl7Yi5sb25nMj1hKmR9LGFscGhhOmZ1bmN0aW9uKGEpe2IuYWxwaGE9cGFyc2VGbG9hdChhKSpkfSxsb25jOmZ1bmN0aW9uKGEpe2IubG9uZ2M9YSpkfSx4XzA6ZnVuY3Rpb24oYSl7Yi54MD1wYXJzZUZsb2F0KGEpfSx5XzA6ZnVuY3Rpb24oYSl7Yi55MD1wYXJzZUZsb2F0KGEpfSxrXzA6ZnVuY3Rpb24oYSl7Yi5rMD1wYXJzZUZsb2F0KGEpfSxrOmZ1bmN0aW9uKGEpe2IuazA9cGFyc2VGbG9hdChhKX0sYTpmdW5jdGlvbihhKXtiLmE9cGFyc2VGbG9hdChhKX0sYjpmdW5jdGlvbihhKXtiLmI9cGFyc2VGbG9hdChhKX0scl9hOmZ1bmN0aW9uKCl7Yi5SX0E9ITB9LHpvbmU6ZnVuY3Rpb24oYSl7Yi56b25lPXBhcnNlSW50KGEsMTApfSxzb3V0aDpmdW5jdGlvbigpe2IudXRtU291dGg9ITB9LHRvd2dzODQ6ZnVuY3Rpb24oYSl7Yi5kYXR1bV9wYXJhbXM9YS5zcGxpdCgiLCIpLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gcGFyc2VGbG9hdChhKX0pfSx0b19tZXRlcjpmdW5jdGlvbihhKXtiLnRvX21ldGVyPXBhcnNlRmxvYXQoYSl9LHVuaXRzOmZ1bmN0aW9uKGEpe2IudW5pdHM9YSxmW2FdJiYoYi50b19tZXRlcj1mW2FdLnRvX21ldGVyKX0sZnJvbV9ncmVlbndpY2g6ZnVuY3Rpb24oYSl7Yi5mcm9tX2dyZWVud2ljaD1hKmR9LHBtOmZ1bmN0aW9uKGEpe2IuZnJvbV9ncmVlbndpY2g9KGVbYV0/ZVthXTpwYXJzZUZsb2F0KGEpKSpkfSxuYWRncmlkczpmdW5jdGlvbihhKXsiQG51bGwiPT09YT9iLmRhdHVtQ29kZT0ibm9uZSI6Yi5uYWRncmlkcz1hfSxheGlzOmZ1bmN0aW9uKGEpe3ZhciBjPSJld25zdWQiOzM9PT1hLmxlbmd0aCYmLTEhPT1jLmluZGV4T2YoYS5zdWJzdHIoMCwxKSkmJi0xIT09Yy5pbmRleE9mKGEuc3Vic3RyKDEsMSkpJiYtMSE9PWMuaW5kZXhPZihhLnN1YnN0cigyLDEpKSYmKGIuYXhpcz1hKX19O2ZvcihnIGluIGMpaD1jW2ddLGcgaW4gaj8oaT1qW2ddLCJmdW5jdGlvbiI9PXR5cGVvZiBpP2koaCk6YltpXT1oKTpiW2ddPWg7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBiLmRhdHVtQ29kZSYmIldHUzg0IiE9PWIuZGF0dW1Db2RlJiYoYi5kYXR1bUNvZGU9Yi5kYXR1bUNvZGUudG9Mb3dlckNhc2UoKSksYn19LHsiLi9jb25zdGFudHMvUHJpbWVNZXJpZGlhbiI6MjcsIi4vY29uc3RhbnRzL3VuaXRzIjoyOH1dLDM5OltmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhLGIpe3ZhciBjPWcubGVuZ3RoO3JldHVybiBhLm5hbWVzPyhnW2NdPWEsYS5uYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2ZbYS50b0xvd2VyQ2FzZSgpXT1jfSksdGhpcyk6KGNvbnNvbGUubG9nKGIpLCEwKX12YXIgZT1bYSgiLi9wcm9qZWN0aW9ucy9tZXJjIiksYSgiLi9wcm9qZWN0aW9ucy9sb25nbGF0IildLGY9e30sZz1bXTtjLmFkZD1kLGMuZ2V0PWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiExO3ZhciBiPWEudG9Mb3dlckNhc2UoKTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGZbYl0mJmdbZltiXV0/Z1tmW2JdXTp2b2lkIDB9LGMuc3RhcnQ9ZnVuY3Rpb24oKXtlLmZvckVhY2goZCl9fSx7Ii4vcHJvamVjdGlvbnMvbG9uZ2xhdCI6NTEsIi4vcHJvamVjdGlvbnMvbWVyYyI6NTJ9XSw0MDpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTFlLTEwLGU9YSgiLi4vY29tbW9uL21zZm56IiksZj1hKCIuLi9jb21tb24vcXNmbnoiKSxnPWEoIi4uL2NvbW1vbi9hZGp1c3RfbG9uIiksaD1hKCIuLi9jb21tb24vYXNpbnoiKTtjLmluaXQ9ZnVuY3Rpb24oKXtNYXRoLmFicyh0aGlzLmxhdDErdGhpcy5sYXQyKTxkfHwodGhpcy50ZW1wPXRoaXMuYi90aGlzLmEsdGhpcy5lcz0xLU1hdGgucG93KHRoaXMudGVtcCwyKSx0aGlzLmUzPU1hdGguc3FydCh0aGlzLmVzKSx0aGlzLnNpbl9wbz1NYXRoLnNpbih0aGlzLmxhdDEpLHRoaXMuY29zX3BvPU1hdGguY29zKHRoaXMubGF0MSksdGhpcy50MT10aGlzLnNpbl9wbyx0aGlzLmNvbj10aGlzLnNpbl9wbyx0aGlzLm1zMT1lKHRoaXMuZTMsdGhpcy5zaW5fcG8sdGhpcy5jb3NfcG8pLHRoaXMucXMxPWYodGhpcy5lMyx0aGlzLnNpbl9wbyx0aGlzLmNvc19wbyksdGhpcy5zaW5fcG89TWF0aC5zaW4odGhpcy5sYXQyKSx0aGlzLmNvc19wbz1NYXRoLmNvcyh0aGlzLmxhdDIpLHRoaXMudDI9dGhpcy5zaW5fcG8sdGhpcy5tczI9ZSh0aGlzLmUzLHRoaXMuc2luX3BvLHRoaXMuY29zX3BvKSx0aGlzLnFzMj1mKHRoaXMuZTMsdGhpcy5zaW5fcG8sdGhpcy5jb3NfcG8pLHRoaXMuc2luX3BvPU1hdGguc2luKHRoaXMubGF0MCksdGhpcy5jb3NfcG89TWF0aC5jb3ModGhpcy5sYXQwKSx0aGlzLnQzPXRoaXMuc2luX3BvLHRoaXMucXMwPWYodGhpcy5lMyx0aGlzLnNpbl9wbyx0aGlzLmNvc19wbyksTWF0aC5hYnModGhpcy5sYXQxLXRoaXMubGF0Mik+ZD90aGlzLm5zMD0odGhpcy5tczEqdGhpcy5tczEtdGhpcy5tczIqdGhpcy5tczIpLyh0aGlzLnFzMi10aGlzLnFzMSk6dGhpcy5uczA9dGhpcy5jb24sdGhpcy5jPXRoaXMubXMxKnRoaXMubXMxK3RoaXMubnMwKnRoaXMucXMxLHRoaXMucmg9dGhpcy5hKk1hdGguc3FydCh0aGlzLmMtdGhpcy5uczAqdGhpcy5xczApL3RoaXMubnMwKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiPWEueCxjPWEueTt0aGlzLnNpbl9waGk9TWF0aC5zaW4oYyksdGhpcy5jb3NfcGhpPU1hdGguY29zKGMpO3ZhciBkPWYodGhpcy5lMyx0aGlzLnNpbl9waGksdGhpcy5jb3NfcGhpKSxlPXRoaXMuYSpNYXRoLnNxcnQodGhpcy5jLXRoaXMubnMwKmQpL3RoaXMubnMwLGg9dGhpcy5uczAqZyhiLXRoaXMubG9uZzApLGk9ZSpNYXRoLnNpbihoKSt0aGlzLngwLGo9dGhpcy5yaC1lKk1hdGguY29zKGgpK3RoaXMueTA7cmV0dXJuIGEueD1pLGEueT1qLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGg7cmV0dXJuIGEueC09dGhpcy54MCxhLnk9dGhpcy5yaC1hLnkrdGhpcy55MCx0aGlzLm5zMD49MD8oYj1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSxkPTEpOihiPS1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSxkPS0xKSxlPTAsMCE9PWImJihlPU1hdGguYXRhbjIoZCphLngsZCphLnkpKSxkPWIqdGhpcy5uczAvdGhpcy5hLHRoaXMuc3BoZXJlP2g9TWF0aC5hc2luKCh0aGlzLmMtZCpkKS8oMip0aGlzLm5zMCkpOihjPSh0aGlzLmMtZCpkKS90aGlzLm5zMCxoPXRoaXMucGhpMXoodGhpcy5lMyxjKSksZj1nKGUvdGhpcy5uczArdGhpcy5sb25nMCksYS54PWYsYS55PWgsYX0sYy5waGkxej1mdW5jdGlvbihhLGIpe3ZhciBjLGUsZixnLGksaj1oKC41KmIpO2lmKGQ+YSlyZXR1cm4gajtmb3IodmFyIGs9YSphLGw9MTsyNT49bDtsKyspaWYoYz1NYXRoLnNpbihqKSxlPU1hdGguY29zKGopLGY9YSpjLGc9MS1mKmYsaT0uNSpnKmcvZSooYi8oMS1rKS1jL2crLjUvYSpNYXRoLmxvZygoMS1mKS8oMStmKSkpLGorPWksTWF0aC5hYnMoaSk8PTFlLTcpcmV0dXJuIGo7cmV0dXJuIG51bGx9LGMubmFtZXM9WyJBbGJlcnNfQ29uaWNfRXF1YWxfQXJlYSIsIkFsYmVycyIsImFlYSJdfSx7Ii4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1LCIuLi9jb21tb24vYXNpbnoiOjYsIi4uL2NvbW1vbi9tc2ZueiI6MTUsIi4uL2NvbW1vbi9xc2ZueiI6MjB9XSw0MTpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9hZGp1c3RfbG9uIiksZT1NYXRoLlBJLzIsZj0xZS0xMCxnPWEoIi4uL2NvbW1vbi9tbGZuIiksaD1hKCIuLi9jb21tb24vZTBmbiIpLGk9YSgiLi4vY29tbW9uL2UxZm4iKSxqPWEoIi4uL2NvbW1vbi9lMmZuIiksaz1hKCIuLi9jb21tb24vZTNmbiIpLGw9YSgiLi4vY29tbW9uL2dOIiksbT1hKCIuLi9jb21tb24vYXNpbnoiKSxuPWEoIi4uL2NvbW1vbi9pbWxmbiIpO2MuaW5pdD1mdW5jdGlvbigpe3RoaXMuc2luX3AxMj1NYXRoLnNpbih0aGlzLmxhdDApLHRoaXMuY29zX3AxMj1NYXRoLmNvcyh0aGlzLmxhdDApfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGIsYyxtLG4sbyxwLHEscixzLHQsdSx2LHcseCx5LHosQSxCLEMsRCxFLEYsRyxIPWEueCxJPWEueSxKPU1hdGguc2luKGEueSksSz1NYXRoLmNvcyhhLnkpLEw9ZChILXRoaXMubG9uZzApO3JldHVybiB0aGlzLnNwaGVyZT9NYXRoLmFicyh0aGlzLnNpbl9wMTItMSk8PWY/KGEueD10aGlzLngwK3RoaXMuYSooZS1JKSpNYXRoLnNpbihMKSxhLnk9dGhpcy55MC10aGlzLmEqKGUtSSkqTWF0aC5jb3MoTCksYSk6TWF0aC5hYnModGhpcy5zaW5fcDEyKzEpPD1mPyhhLng9dGhpcy54MCt0aGlzLmEqKGUrSSkqTWF0aC5zaW4oTCksYS55PXRoaXMueTArdGhpcy5hKihlK0kpKk1hdGguY29zKEwpLGEpOihCPXRoaXMuc2luX3AxMipKK3RoaXMuY29zX3AxMipLKk1hdGguY29zKEwpLHo9TWF0aC5hY29zKEIpLEE9ei9NYXRoLnNpbih6KSxhLng9dGhpcy54MCt0aGlzLmEqQSpLKk1hdGguc2luKEwpLGEueT10aGlzLnkwK3RoaXMuYSpBKih0aGlzLmNvc19wMTIqSi10aGlzLnNpbl9wMTIqSypNYXRoLmNvcyhMKSksYSk6KGI9aCh0aGlzLmVzKSxjPWkodGhpcy5lcyksbT1qKHRoaXMuZXMpLG49ayh0aGlzLmVzKSxNYXRoLmFicyh0aGlzLnNpbl9wMTItMSk8PWY/KG89dGhpcy5hKmcoYixjLG0sbixlKSxwPXRoaXMuYSpnKGIsYyxtLG4sSSksYS54PXRoaXMueDArKG8tcCkqTWF0aC5zaW4oTCksYS55PXRoaXMueTAtKG8tcCkqTWF0aC5jb3MoTCksYSk6TWF0aC5hYnModGhpcy5zaW5fcDEyKzEpPD1mPyhvPXRoaXMuYSpnKGIsYyxtLG4sZSkscD10aGlzLmEqZyhiLGMsbSxuLEkpLGEueD10aGlzLngwKyhvK3ApKk1hdGguc2luKEwpLGEueT10aGlzLnkwKyhvK3ApKk1hdGguY29zKEwpLGEpOihxPUovSyxyPWwodGhpcy5hLHRoaXMuZSx0aGlzLnNpbl9wMTIpLHM9bCh0aGlzLmEsdGhpcy5lLEopLHQ9TWF0aC5hdGFuKCgxLXRoaXMuZXMpKnErdGhpcy5lcypyKnRoaXMuc2luX3AxMi8ocypLKSksdT1NYXRoLmF0YW4yKE1hdGguc2luKEwpLHRoaXMuY29zX3AxMipNYXRoLnRhbih0KS10aGlzLnNpbl9wMTIqTWF0aC5jb3MoTCkpLEM9MD09PXU/TWF0aC5hc2luKHRoaXMuY29zX3AxMipNYXRoLnNpbih0KS10aGlzLnNpbl9wMTIqTWF0aC5jb3ModCkpOk1hdGguYWJzKE1hdGguYWJzKHUpLU1hdGguUEkpPD1mPy1NYXRoLmFzaW4odGhpcy5jb3NfcDEyKk1hdGguc2luKHQpLXRoaXMuc2luX3AxMipNYXRoLmNvcyh0KSk6TWF0aC5hc2luKE1hdGguc2luKEwpKk1hdGguY29zKHQpL01hdGguc2luKHUpKSx2PXRoaXMuZSp0aGlzLnNpbl9wMTIvTWF0aC5zcXJ0KDEtdGhpcy5lcyksdz10aGlzLmUqdGhpcy5jb3NfcDEyKk1hdGguY29zKHUpL01hdGguc3FydCgxLXRoaXMuZXMpLHg9dip3LHk9dyp3LEQ9QypDLEU9RCpDLEY9RSpDLEc9RipDLHo9cipDKigxLUQqeSooMS15KS82K0UvOCp4KigxLTIqeSkrRi8xMjAqKHkqKDQtNyp5KS0zKnYqdiooMS03KnkpKS1HLzQ4KngpLGEueD10aGlzLngwK3oqTWF0aC5zaW4odSksYS55PXRoaXMueTAreipNYXRoLmNvcyh1KSxhKSl9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXthLngtPXRoaXMueDAsYS55LT10aGlzLnkwO3ZhciBiLGMsbyxwLHEscixzLHQsdSx2LHcseCx5LHosQSxCLEMsRCxFLEYsRyxILEk7aWYodGhpcy5zcGhlcmUpe2lmKGI9TWF0aC5zcXJ0KGEueCphLngrYS55KmEueSksYj4yKmUqdGhpcy5hKXJldHVybjtyZXR1cm4gYz1iL3RoaXMuYSxvPU1hdGguc2luKGMpLHA9TWF0aC5jb3MoYykscT10aGlzLmxvbmcwLE1hdGguYWJzKGIpPD1mP3I9dGhpcy5sYXQwOihyPW0ocCp0aGlzLnNpbl9wMTIrYS55Km8qdGhpcy5jb3NfcDEyL2IpLHM9TWF0aC5hYnModGhpcy5sYXQwKS1lLHE9ZChNYXRoLmFicyhzKTw9Zj90aGlzLmxhdDA+PTA/dGhpcy5sb25nMCtNYXRoLmF0YW4yKGEueCwtYS55KTp0aGlzLmxvbmcwLU1hdGguYXRhbjIoLWEueCxhLnkpOnRoaXMubG9uZzArTWF0aC5hdGFuMihhLngqbyxiKnRoaXMuY29zX3AxMipwLWEueSp0aGlzLnNpbl9wMTIqbykpKSxhLng9cSxhLnk9cixhfXJldHVybiB0PWgodGhpcy5lcyksdT1pKHRoaXMuZXMpLHY9aih0aGlzLmVzKSx3PWsodGhpcy5lcyksTWF0aC5hYnModGhpcy5zaW5fcDEyLTEpPD1mPyh4PXRoaXMuYSpnKHQsdSx2LHcsZSksYj1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSx5PXgtYixyPW4oeS90aGlzLmEsdCx1LHYsdykscT1kKHRoaXMubG9uZzArTWF0aC5hdGFuMihhLngsLTEqYS55KSksYS54PXEsYS55PXIsYSk6TWF0aC5hYnModGhpcy5zaW5fcDEyKzEpPD1mPyh4PXRoaXMuYSpnKHQsdSx2LHcsZSksYj1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSx5PWIteCxyPW4oeS90aGlzLmEsdCx1LHYsdykscT1kKHRoaXMubG9uZzArTWF0aC5hdGFuMihhLngsYS55KSksYS54PXEsYS55PXIsYSk6KGI9TWF0aC5zcXJ0KGEueCphLngrYS55KmEueSksQj1NYXRoLmF0YW4yKGEueCxhLnkpLHo9bCh0aGlzLmEsdGhpcy5lLHRoaXMuc2luX3AxMiksQz1NYXRoLmNvcyhCKSxEPXRoaXMuZSp0aGlzLmNvc19wMTIqQyxFPS1EKkQvKDEtdGhpcy5lcyksRj0zKnRoaXMuZXMqKDEtRSkqdGhpcy5zaW5fcDEyKnRoaXMuY29zX3AxMipDLygxLXRoaXMuZXMpLEc9Yi96LEg9Ry1FKigxK0UpKk1hdGgucG93KEcsMykvNi1GKigxKzMqRSkqTWF0aC5wb3coRyw0KS8yNCxJPTEtRSpIKkgvMi1HKkgqSCpILzYsQT1NYXRoLmFzaW4odGhpcy5zaW5fcDEyKk1hdGguY29zKEgpK3RoaXMuY29zX3AxMipNYXRoLnNpbihIKSpDKSxxPWQodGhpcy5sb25nMCtNYXRoLmFzaW4oTWF0aC5zaW4oQikqTWF0aC5zaW4oSCkvTWF0aC5jb3MoQSkpKSxyPU1hdGguYXRhbigoMS10aGlzLmVzKkkqdGhpcy5zaW5fcDEyL01hdGguc2luKEEpKSpNYXRoLnRhbihBKS8oMS10aGlzLmVzKSksYS54PXEsYS55PXIsYSl9LGMubmFtZXM9WyJBemltdXRoYWxfRXF1aWRpc3RhbnQiLCJhZXFkIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9hc2lueiI6NiwiLi4vY29tbW9uL2UwZm4iOjcsIi4uL2NvbW1vbi9lMWZuIjo4LCIuLi9jb21tb24vZTJmbiI6OSwiLi4vY29tbW9uL2UzZm4iOjEwLCIuLi9jb21tb24vZ04iOjExLCIuLi9jb21tb24vaW1sZm4iOjEyLCIuLi9jb21tb24vbWxmbiI6MTR9XSw0MjpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9tbGZuIiksZT1hKCIuLi9jb21tb24vZTBmbiIpLGY9YSgiLi4vY29tbW9uL2UxZm4iKSxnPWEoIi4uL2NvbW1vbi9lMmZuIiksaD1hKCIuLi9jb21tb24vZTNmbiIpLGk9YSgiLi4vY29tbW9uL2dOIiksaj1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpLGs9YSgiLi4vY29tbW9uL2FkanVzdF9sYXQiKSxsPWEoIi4uL2NvbW1vbi9pbWxmbiIpLG09TWF0aC5QSS8yLG49MWUtMTA7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5zcGhlcmV8fCh0aGlzLmUwPWUodGhpcy5lcyksdGhpcy5lMT1mKHRoaXMuZXMpLHRoaXMuZTI9Zyh0aGlzLmVzKSx0aGlzLmUzPWgodGhpcy5lcyksdGhpcy5tbDA9dGhpcy5hKmQodGhpcy5lMCx0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyx0aGlzLmxhdDApKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZT1hLngsZj1hLnk7aWYoZT1qKGUtdGhpcy5sb25nMCksdGhpcy5zcGhlcmUpYj10aGlzLmEqTWF0aC5hc2luKE1hdGguY29zKGYpKk1hdGguc2luKGUpKSxjPXRoaXMuYSooTWF0aC5hdGFuMihNYXRoLnRhbihmKSxNYXRoLmNvcyhlKSktdGhpcy5sYXQwKTtlbHNle3ZhciBnPU1hdGguc2luKGYpLGg9TWF0aC5jb3MoZiksaz1pKHRoaXMuYSx0aGlzLmUsZyksbD1NYXRoLnRhbihmKSpNYXRoLnRhbihmKSxtPWUqTWF0aC5jb3MoZiksbj1tKm0sbz10aGlzLmVzKmgqaC8oMS10aGlzLmVzKSxwPXRoaXMuYSpkKHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMsZik7Yj1rKm0qKDEtbipsKigxLzYtKDgtbCs4Km8pKm4vMTIwKSksYz1wLXRoaXMubWwwK2sqZy9oKm4qKC41Kyg1LWwrNipvKSpuLzI0KX1yZXR1cm4gYS54PWIrdGhpcy54MCxhLnk9Yyt0aGlzLnkwLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXthLngtPXRoaXMueDAsYS55LT10aGlzLnkwO3ZhciBiLGMsZD1hLngvdGhpcy5hLGU9YS55L3RoaXMuYTtpZih0aGlzLnNwaGVyZSl7dmFyIGY9ZSt0aGlzLmxhdDA7Yj1NYXRoLmFzaW4oTWF0aC5zaW4oZikqTWF0aC5jb3MoZCkpLGM9TWF0aC5hdGFuMihNYXRoLnRhbihkKSxNYXRoLmNvcyhmKSl9ZWxzZXt2YXIgZz10aGlzLm1sMC90aGlzLmErZSxoPWwoZyx0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzKTtpZihNYXRoLmFicyhNYXRoLmFicyhoKS1tKTw9bilyZXR1cm4gYS54PXRoaXMubG9uZzAsYS55PW0sMD5lJiYoYS55Kj0tMSksYTt2YXIgbz1pKHRoaXMuYSx0aGlzLmUsTWF0aC5zaW4oaCkpLHA9bypvKm8vdGhpcy5hL3RoaXMuYSooMS10aGlzLmVzKSxxPU1hdGgucG93KE1hdGgudGFuKGgpLDIpLHI9ZCp0aGlzLmEvbyxzPXIqcjtiPWgtbypNYXRoLnRhbihoKS9wKnIqciooLjUtKDErMypxKSpyKnIvMjQpLGM9ciooMS1zKihxLzMrKDErMypxKSpxKnMvMTUpKS9NYXRoLmNvcyhoKX1yZXR1cm4gYS54PWooYyt0aGlzLmxvbmcwKSxhLnk9ayhiKSxhfSxjLm5hbWVzPVsiQ2Fzc2luaSIsIkNhc3NpbmlfU29sZG5lciIsImNhc3MiXX0seyIuLi9jb21tb24vYWRqdXN0X2xhdCI6NCwiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9lMGZuIjo3LCIuLi9jb21tb24vZTFmbiI6OCwiLi4vY29tbW9uL2UyZm4iOjksIi4uL2NvbW1vbi9lM2ZuIjoxMCwiLi4vY29tbW9uL2dOIjoxMSwiLi4vY29tbW9uL2ltbGZuIjoxMiwiLi4vY29tbW9uL21sZm4iOjE0fV0sNDM6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpLGU9YSgiLi4vY29tbW9uL3FzZm56IiksZj1hKCIuLi9jb21tb24vbXNmbnoiKSxnPWEoIi4uL2NvbW1vbi9pcXNmbnoiKTtjLmluaXQ9ZnVuY3Rpb24oKXt0aGlzLnNwaGVyZXx8KHRoaXMuazA9Zih0aGlzLmUsTWF0aC5zaW4odGhpcy5sYXRfdHMpLE1hdGguY29zKHRoaXMubGF0X3RzKSkpfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGIsYyxmPWEueCxnPWEueSxoPWQoZi10aGlzLmxvbmcwKTtpZih0aGlzLnNwaGVyZSliPXRoaXMueDArdGhpcy5hKmgqTWF0aC5jb3ModGhpcy5sYXRfdHMpLGM9dGhpcy55MCt0aGlzLmEqTWF0aC5zaW4oZykvTWF0aC5jb3ModGhpcy5sYXRfdHMpO2Vsc2V7dmFyIGk9ZSh0aGlzLmUsTWF0aC5zaW4oZykpO2I9dGhpcy54MCt0aGlzLmEqdGhpcy5rMCpoLGM9dGhpcy55MCt0aGlzLmEqaSouNS90aGlzLmswfXJldHVybiBhLng9YixhLnk9YyxhfSxjLmludmVyc2U9ZnVuY3Rpb24oYSl7YS54LT10aGlzLngwLGEueS09dGhpcy55MDt2YXIgYixjO3JldHVybiB0aGlzLnNwaGVyZT8oYj1kKHRoaXMubG9uZzArYS54L3RoaXMuYS9NYXRoLmNvcyh0aGlzLmxhdF90cykpLGM9TWF0aC5hc2luKGEueS90aGlzLmEqTWF0aC5jb3ModGhpcy5sYXRfdHMpKSk6KGM9Zyh0aGlzLmUsMiphLnkqdGhpcy5rMC90aGlzLmEpLGI9ZCh0aGlzLmxvbmcwK2EueC8odGhpcy5hKnRoaXMuazApKSksYS54PWIsYS55PWMsYX0sYy5uYW1lcz1bImNlYSJdfSx7Ii4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1LCIuLi9jb21tb24vaXFzZm56IjoxMywiLi4vY29tbW9uL21zZm56IjoxNSwiLi4vY29tbW9uL3FzZm56IjoyMH1dLDQ0OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxlPWEoIi4uL2NvbW1vbi9hZGp1c3RfbGF0Iik7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy54MD10aGlzLngwfHwwLHRoaXMueTA9dGhpcy55MHx8MCx0aGlzLmxhdDA9dGhpcy5sYXQwfHwwLHRoaXMubG9uZzA9dGhpcy5sb25nMHx8MCx0aGlzLmxhdF90cz10aGlzLmxhdF90c3x8MCx0aGlzLnRpdGxlPXRoaXMudGl0bGV8fCJFcXVpZGlzdGFudCBDeWxpbmRyaWNhbCAoUGxhdGUgQ2FycmUpIix0aGlzLnJjPU1hdGguY29zKHRoaXMubGF0X3RzKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiPWEueCxjPWEueSxmPWQoYi10aGlzLmxvbmcwKSxnPWUoYy10aGlzLmxhdDApO3JldHVybiBhLng9dGhpcy54MCt0aGlzLmEqZip0aGlzLnJjLGEueT10aGlzLnkwK3RoaXMuYSpnLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXt2YXIgYj1hLngsYz1hLnk7cmV0dXJuIGEueD1kKHRoaXMubG9uZzArKGItdGhpcy54MCkvKHRoaXMuYSp0aGlzLnJjKSksYS55PWUodGhpcy5sYXQwKyhjLXRoaXMueTApL3RoaXMuYSksYX0sYy5uYW1lcz1bIkVxdWlyZWN0YW5ndWxhciIsIkVxdWlkaXN0YW50X0N5bGluZHJpY2FsIiwiZXFjIl19LHsiLi4vY29tbW9uL2FkanVzdF9sYXQiOjQsIi4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1fV0sNDU6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9jb21tb24vZTBmbiIpLGU9YSgiLi4vY29tbW9uL2UxZm4iKSxmPWEoIi4uL2NvbW1vbi9lMmZuIiksZz1hKCIuLi9jb21tb24vZTNmbiIpLGg9YSgiLi4vY29tbW9uL21zZm56IiksaT1hKCIuLi9jb21tb24vbWxmbiIpLGo9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxrPWEoIi4uL2NvbW1vbi9hZGp1c3RfbGF0IiksbD1hKCIuLi9jb21tb24vaW1sZm4iKSxtPTFlLTEwO2MuaW5pdD1mdW5jdGlvbigpe01hdGguYWJzKHRoaXMubGF0MSt0aGlzLmxhdDIpPG18fCh0aGlzLmxhdDI9dGhpcy5sYXQyfHx0aGlzLmxhdDEsdGhpcy50ZW1wPXRoaXMuYi90aGlzLmEsdGhpcy5lcz0xLU1hdGgucG93KHRoaXMudGVtcCwyKSx0aGlzLmU9TWF0aC5zcXJ0KHRoaXMuZXMpLHRoaXMuZTA9ZCh0aGlzLmVzKSx0aGlzLmUxPWUodGhpcy5lcyksdGhpcy5lMj1mKHRoaXMuZXMpLHRoaXMuZTM9Zyh0aGlzLmVzKSx0aGlzLnNpbnBoaT1NYXRoLnNpbih0aGlzLmxhdDEpLHRoaXMuY29zcGhpPU1hdGguY29zKHRoaXMubGF0MSksdGhpcy5tczE9aCh0aGlzLmUsdGhpcy5zaW5waGksdGhpcy5jb3NwaGkpLHRoaXMubWwxPWkodGhpcy5lMCx0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyx0aGlzLmxhdDEpLE1hdGguYWJzKHRoaXMubGF0MS10aGlzLmxhdDIpPG0/dGhpcy5ucz10aGlzLnNpbnBoaToodGhpcy5zaW5waGk9TWF0aC5zaW4odGhpcy5sYXQyKSx0aGlzLmNvc3BoaT1NYXRoLmNvcyh0aGlzLmxhdDIpLHRoaXMubXMyPWgodGhpcy5lLHRoaXMuc2lucGhpLHRoaXMuY29zcGhpKSx0aGlzLm1sMj1pKHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMsdGhpcy5sYXQyKSx0aGlzLm5zPSh0aGlzLm1zMS10aGlzLm1zMikvKHRoaXMubWwyLXRoaXMubWwxKSksdGhpcy5nPXRoaXMubWwxK3RoaXMubXMxL3RoaXMubnMsdGhpcy5tbDA9aSh0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzLHRoaXMubGF0MCksdGhpcy5yaD10aGlzLmEqKHRoaXMuZy10aGlzLm1sMCkpfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz1hLngsZD1hLnk7aWYodGhpcy5zcGhlcmUpYj10aGlzLmEqKHRoaXMuZy1kKTtlbHNle3ZhciBlPWkodGhpcy5lMCx0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyxkKTtiPXRoaXMuYSoodGhpcy5nLWUpfXZhciBmPXRoaXMubnMqaihjLXRoaXMubG9uZzApLGc9dGhpcy54MCtiKk1hdGguc2luKGYpLGg9dGhpcy55MCt0aGlzLnJoLWIqTWF0aC5jb3MoZik7cmV0dXJuIGEueD1nLGEueT1oLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXthLngtPXRoaXMueDAsYS55PXRoaXMucmgtYS55K3RoaXMueTA7dmFyIGIsYyxkLGU7dGhpcy5ucz49MD8oYz1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSwNCmI9MSk6KGM9LU1hdGguc3FydChhLngqYS54K2EueSphLnkpLGI9LTEpO3ZhciBmPTA7aWYoMCE9PWMmJihmPU1hdGguYXRhbjIoYiphLngsYiphLnkpKSx0aGlzLnNwaGVyZSlyZXR1cm4gZT1qKHRoaXMubG9uZzArZi90aGlzLm5zKSxkPWsodGhpcy5nLWMvdGhpcy5hKSxhLng9ZSxhLnk9ZCxhO3ZhciBnPXRoaXMuZy1jL3RoaXMuYTtyZXR1cm4gZD1sKGcsdGhpcy5lMCx0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyksZT1qKHRoaXMubG9uZzArZi90aGlzLm5zKSxhLng9ZSxhLnk9ZCxhfSxjLm5hbWVzPVsiRXF1aWRpc3RhbnRfQ29uaWMiLCJlcWRjIl19LHsiLi4vY29tbW9uL2FkanVzdF9sYXQiOjQsIi4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1LCIuLi9jb21tb24vZTBmbiI6NywiLi4vY29tbW9uL2UxZm4iOjgsIi4uL2NvbW1vbi9lMmZuIjo5LCIuLi9jb21tb24vZTNmbiI6MTAsIi4uL2NvbW1vbi9pbWxmbiI6MTIsIi4uL2NvbW1vbi9tbGZuIjoxNCwiLi4vY29tbW9uL21zZm56IjoxNX1dLDQ2OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9TWF0aC5QSS80LGU9YSgiLi4vY29tbW9uL3NyYXQiKSxmPU1hdGguUEkvMixnPTIwO2MuaW5pdD1mdW5jdGlvbigpe3ZhciBhPU1hdGguc2luKHRoaXMubGF0MCksYj1NYXRoLmNvcyh0aGlzLmxhdDApO2IqPWIsdGhpcy5yYz1NYXRoLnNxcnQoMS10aGlzLmVzKS8oMS10aGlzLmVzKmEqYSksdGhpcy5DPU1hdGguc3FydCgxK3RoaXMuZXMqYipiLygxLXRoaXMuZXMpKSx0aGlzLnBoaWMwPU1hdGguYXNpbihhL3RoaXMuQyksdGhpcy5yYXRleHA9LjUqdGhpcy5DKnRoaXMuZSx0aGlzLks9TWF0aC50YW4oLjUqdGhpcy5waGljMCtkKS8oTWF0aC5wb3coTWF0aC50YW4oLjUqdGhpcy5sYXQwK2QpLHRoaXMuQykqZSh0aGlzLmUqYSx0aGlzLnJhdGV4cCkpfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS54LGM9YS55O3JldHVybiBhLnk9MipNYXRoLmF0YW4odGhpcy5LKk1hdGgucG93KE1hdGgudGFuKC41KmMrZCksdGhpcy5DKSplKHRoaXMuZSpNYXRoLnNpbihjKSx0aGlzLnJhdGV4cCkpLWYsYS54PXRoaXMuQypiLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXtmb3IodmFyIGI9MWUtMTQsYz1hLngvdGhpcy5DLGg9YS55LGk9TWF0aC5wb3coTWF0aC50YW4oLjUqaCtkKS90aGlzLkssMS90aGlzLkMpLGo9ZztqPjAmJihoPTIqTWF0aC5hdGFuKGkqZSh0aGlzLmUqTWF0aC5zaW4oYS55KSwtLjUqdGhpcy5lKSktZiwhKE1hdGguYWJzKGgtYS55KTxiKSk7LS1qKWEueT1oO3JldHVybiBqPyhhLng9YyxhLnk9aCxhKTpudWxsfSxjLm5hbWVzPVsiZ2F1c3MiXX0seyIuLi9jb21tb24vc3JhdCI6MjJ9XSw0NzpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9hZGp1c3RfbG9uIiksZT0xZS0xMCxmPWEoIi4uL2NvbW1vbi9hc2lueiIpO2MuaW5pdD1mdW5jdGlvbigpe3RoaXMuc2luX3AxND1NYXRoLnNpbih0aGlzLmxhdDApLHRoaXMuY29zX3AxND1NYXRoLmNvcyh0aGlzLmxhdDApLHRoaXMuaW5maW5pdHlfZGlzdD0xZTMqdGhpcy5hLHRoaXMucmM9MX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZixnLGgsaSxqLGssbD1hLngsbT1hLnk7cmV0dXJuIGY9ZChsLXRoaXMubG9uZzApLGI9TWF0aC5zaW4obSksYz1NYXRoLmNvcyhtKSxnPU1hdGguY29zKGYpLGk9dGhpcy5zaW5fcDE0KmIrdGhpcy5jb3NfcDE0KmMqZyxoPTEsaT4wfHxNYXRoLmFicyhpKTw9ZT8oaj10aGlzLngwK3RoaXMuYSpoKmMqTWF0aC5zaW4oZikvaSxrPXRoaXMueTArdGhpcy5hKmgqKHRoaXMuY29zX3AxNCpiLXRoaXMuc2luX3AxNCpjKmcpL2kpOihqPXRoaXMueDArdGhpcy5pbmZpbml0eV9kaXN0KmMqTWF0aC5zaW4oZiksaz10aGlzLnkwK3RoaXMuaW5maW5pdHlfZGlzdCoodGhpcy5jb3NfcDE0KmItdGhpcy5zaW5fcDE0KmMqZykpLGEueD1qLGEueT1rLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXt2YXIgYixjLGUsZyxoLGk7cmV0dXJuIGEueD0oYS54LXRoaXMueDApL3RoaXMuYSxhLnk9KGEueS10aGlzLnkwKS90aGlzLmEsYS54Lz10aGlzLmswLGEueS89dGhpcy5rMCwoYj1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSk/KGc9TWF0aC5hdGFuMihiLHRoaXMucmMpLGM9TWF0aC5zaW4oZyksZT1NYXRoLmNvcyhnKSxpPWYoZSp0aGlzLnNpbl9wMTQrYS55KmMqdGhpcy5jb3NfcDE0L2IpLGg9TWF0aC5hdGFuMihhLngqYyxiKnRoaXMuY29zX3AxNCplLWEueSp0aGlzLnNpbl9wMTQqYyksaD1kKHRoaXMubG9uZzAraCkpOihpPXRoaXMucGhpYzAsaD0wKSxhLng9aCxhLnk9aSxhfSxjLm5hbWVzPVsiZ25vbSJdfSx7Ii4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1LCIuLi9jb21tb24vYXNpbnoiOjZ9XSw0ODpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9hZGp1c3RfbG9uIik7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5hPTYzNzczOTcuMTU1LHRoaXMuZXM9LjAwNjY3NDM3MjIzMDYxNCx0aGlzLmU9TWF0aC5zcXJ0KHRoaXMuZXMpLHRoaXMubGF0MHx8KHRoaXMubGF0MD0uODYzOTM3OTc5NzM3MTkzKSx0aGlzLmxvbmcwfHwodGhpcy5sb25nMD0uNDMzNDIzNDMwOTExOTI1MSksdGhpcy5rMHx8KHRoaXMuazA9Ljk5OTkpLHRoaXMuczQ1PS43ODUzOTgxNjMzOTc0NDgsdGhpcy5zOTA9Mip0aGlzLnM0NSx0aGlzLmZpMD10aGlzLmxhdDAsdGhpcy5lMj10aGlzLmVzLHRoaXMuZT1NYXRoLnNxcnQodGhpcy5lMiksdGhpcy5hbGZhPU1hdGguc3FydCgxK3RoaXMuZTIqTWF0aC5wb3coTWF0aC5jb3ModGhpcy5maTApLDQpLygxLXRoaXMuZTIpKSx0aGlzLnVxPTEuMDQyMTY4NTYzODA0NzQsdGhpcy51MD1NYXRoLmFzaW4oTWF0aC5zaW4odGhpcy5maTApL3RoaXMuYWxmYSksdGhpcy5nPU1hdGgucG93KCgxK3RoaXMuZSpNYXRoLnNpbih0aGlzLmZpMCkpLygxLXRoaXMuZSpNYXRoLnNpbih0aGlzLmZpMCkpLHRoaXMuYWxmYSp0aGlzLmUvMiksdGhpcy5rPU1hdGgudGFuKHRoaXMudTAvMit0aGlzLnM0NSkvTWF0aC5wb3coTWF0aC50YW4odGhpcy5maTAvMit0aGlzLnM0NSksdGhpcy5hbGZhKSp0aGlzLmcsdGhpcy5rMT10aGlzLmswLHRoaXMubjA9dGhpcy5hKk1hdGguc3FydCgxLXRoaXMuZTIpLygxLXRoaXMuZTIqTWF0aC5wb3coTWF0aC5zaW4odGhpcy5maTApLDIpKSx0aGlzLnMwPTEuMzcwMDgzNDYyODE1NTUsdGhpcy5uPU1hdGguc2luKHRoaXMuczApLHRoaXMucm8wPXRoaXMuazEqdGhpcy5uMC9NYXRoLnRhbih0aGlzLnMwKSx0aGlzLmFkPXRoaXMuczkwLXRoaXMudXF9LGMuZm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYixjLGUsZixnLGgsaSxqPWEueCxrPWEueSxsPWQoai10aGlzLmxvbmcwKTtyZXR1cm4gYj1NYXRoLnBvdygoMSt0aGlzLmUqTWF0aC5zaW4oaykpLygxLXRoaXMuZSpNYXRoLnNpbihrKSksdGhpcy5hbGZhKnRoaXMuZS8yKSxjPTIqKE1hdGguYXRhbih0aGlzLmsqTWF0aC5wb3coTWF0aC50YW4oay8yK3RoaXMuczQ1KSx0aGlzLmFsZmEpL2IpLXRoaXMuczQ1KSxlPS1sKnRoaXMuYWxmYSxmPU1hdGguYXNpbihNYXRoLmNvcyh0aGlzLmFkKSpNYXRoLnNpbihjKStNYXRoLnNpbih0aGlzLmFkKSpNYXRoLmNvcyhjKSpNYXRoLmNvcyhlKSksZz1NYXRoLmFzaW4oTWF0aC5jb3MoYykqTWF0aC5zaW4oZSkvTWF0aC5jb3MoZikpLGg9dGhpcy5uKmcsaT10aGlzLnJvMCpNYXRoLnBvdyhNYXRoLnRhbih0aGlzLnMwLzIrdGhpcy5zNDUpLHRoaXMubikvTWF0aC5wb3coTWF0aC50YW4oZi8yK3RoaXMuczQ1KSx0aGlzLm4pLGEueT1pKk1hdGguY29zKGgpLzEsYS54PWkqTWF0aC5zaW4oaCkvMSx0aGlzLmN6ZWNofHwoYS55Kj0tMSxhLngqPS0xKSxhfSxjLmludmVyc2U9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqPWEueDthLng9YS55LGEueT1qLHRoaXMuY3plY2h8fChhLnkqPS0xLGEueCo9LTEpLGc9TWF0aC5zcXJ0KGEueCphLngrYS55KmEueSksZj1NYXRoLmF0YW4yKGEueSxhLngpLGU9Zi9NYXRoLnNpbih0aGlzLnMwKSxkPTIqKE1hdGguYXRhbihNYXRoLnBvdyh0aGlzLnJvMC9nLDEvdGhpcy5uKSpNYXRoLnRhbih0aGlzLnMwLzIrdGhpcy5zNDUpKS10aGlzLnM0NSksYj1NYXRoLmFzaW4oTWF0aC5jb3ModGhpcy5hZCkqTWF0aC5zaW4oZCktTWF0aC5zaW4odGhpcy5hZCkqTWF0aC5jb3MoZCkqTWF0aC5jb3MoZSkpLGM9TWF0aC5hc2luKE1hdGguY29zKGQpKk1hdGguc2luKGUpL01hdGguY29zKGIpKSxhLng9dGhpcy5sb25nMC1jL3RoaXMuYWxmYSxoPWIsaT0wO3ZhciBrPTA7ZG8gYS55PTIqKE1hdGguYXRhbihNYXRoLnBvdyh0aGlzLmssLTEvdGhpcy5hbGZhKSpNYXRoLnBvdyhNYXRoLnRhbihiLzIrdGhpcy5zNDUpLDEvdGhpcy5hbGZhKSpNYXRoLnBvdygoMSt0aGlzLmUqTWF0aC5zaW4oaCkpLygxLXRoaXMuZSpNYXRoLnNpbihoKSksdGhpcy5lLzIpKS10aGlzLnM0NSksTWF0aC5hYnMoaC1hLnkpPDFlLTEwJiYoaT0xKSxoPWEueSxrKz0xO3doaWxlKDA9PT1pJiYxNT5rKTtyZXR1cm4gaz49MTU/bnVsbDphfSxjLm5hbWVzPVsiS3JvdmFrIiwia3JvdmFrIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjV9XSw0OTpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPU1hdGguUEkvMixlPU1hdGguUEkvNCxmPTFlLTEwLGc9YSgiLi4vY29tbW9uL3FzZm56IiksaD1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpO2MuU19QT0xFPTEsYy5OX1BPTEU9MixjLkVRVUlUPTMsYy5PQkxJUT00LGMuaW5pdD1mdW5jdGlvbigpe3ZhciBhPU1hdGguYWJzKHRoaXMubGF0MCk7aWYoTWF0aC5hYnMoYS1kKTxmP3RoaXMubW9kZT10aGlzLmxhdDA8MD90aGlzLlNfUE9MRTp0aGlzLk5fUE9MRTpNYXRoLmFicyhhKTxmP3RoaXMubW9kZT10aGlzLkVRVUlUOnRoaXMubW9kZT10aGlzLk9CTElRLHRoaXMuZXM+MCl7dmFyIGI7c3dpdGNoKHRoaXMucXA9Zyh0aGlzLmUsMSksdGhpcy5tbWY9LjUvKDEtdGhpcy5lcyksdGhpcy5hcGE9dGhpcy5hdXRoc2V0KHRoaXMuZXMpLHRoaXMubW9kZSl7Y2FzZSB0aGlzLk5fUE9MRTp0aGlzLmRkPTE7YnJlYWs7Y2FzZSB0aGlzLlNfUE9MRTp0aGlzLmRkPTE7YnJlYWs7Y2FzZSB0aGlzLkVRVUlUOnRoaXMucnE9TWF0aC5zcXJ0KC41KnRoaXMucXApLHRoaXMuZGQ9MS90aGlzLnJxLHRoaXMueG1mPTEsdGhpcy55bWY9LjUqdGhpcy5xcDticmVhaztjYXNlIHRoaXMuT0JMSVE6dGhpcy5ycT1NYXRoLnNxcnQoLjUqdGhpcy5xcCksYj1NYXRoLnNpbih0aGlzLmxhdDApLHRoaXMuc2luYjE9Zyh0aGlzLmUsYikvdGhpcy5xcCx0aGlzLmNvc2IxPU1hdGguc3FydCgxLXRoaXMuc2luYjEqdGhpcy5zaW5iMSksdGhpcy5kZD1NYXRoLmNvcyh0aGlzLmxhdDApLyhNYXRoLnNxcnQoMS10aGlzLmVzKmIqYikqdGhpcy5ycSp0aGlzLmNvc2IxKSx0aGlzLnltZj0odGhpcy54bWY9dGhpcy5ycSkvdGhpcy5kZCx0aGlzLnhtZio9dGhpcy5kZH19ZWxzZSB0aGlzLm1vZGU9PT10aGlzLk9CTElRJiYodGhpcy5zaW5waDA9TWF0aC5zaW4odGhpcy5sYXQwKSx0aGlzLmNvc3BoMD1NYXRoLmNvcyh0aGlzLmxhdDApKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsaSxqLGssbCxtLG4sbyxwLHE9YS54LHI9YS55O2lmKHE9aChxLXRoaXMubG9uZzApLHRoaXMuc3BoZXJlKXtpZihrPU1hdGguc2luKHIpLHA9TWF0aC5jb3MociksaT1NYXRoLmNvcyhxKSx0aGlzLm1vZGU9PT10aGlzLk9CTElRfHx0aGlzLm1vZGU9PT10aGlzLkVRVUlUKXtpZihjPXRoaXMubW9kZT09PXRoaXMuRVFVSVQ/MStwKmk6MSt0aGlzLnNpbnBoMCprK3RoaXMuY29zcGgwKnAqaSxmPj1jKXJldHVybiBudWxsO2M9TWF0aC5zcXJ0KDIvYyksYj1jKnAqTWF0aC5zaW4ocSksYyo9dGhpcy5tb2RlPT09dGhpcy5FUVVJVD9rOnRoaXMuY29zcGgwKmstdGhpcy5zaW5waDAqcCppfWVsc2UgaWYodGhpcy5tb2RlPT09dGhpcy5OX1BPTEV8fHRoaXMubW9kZT09PXRoaXMuU19QT0xFKXtpZih0aGlzLm1vZGU9PT10aGlzLk5fUE9MRSYmKGk9LWkpLE1hdGguYWJzKHIrdGhpcy5waGkwKTxmKXJldHVybiBudWxsO2M9ZS0uNSpyLGM9MioodGhpcy5tb2RlPT09dGhpcy5TX1BPTEU/TWF0aC5jb3MoYyk6TWF0aC5zaW4oYykpLGI9YypNYXRoLnNpbihxKSxjKj1pfX1lbHNle3N3aXRjaChtPTAsbj0wLG89MCxpPU1hdGguY29zKHEpLGo9TWF0aC5zaW4ocSksaz1NYXRoLnNpbihyKSxsPWcodGhpcy5lLGspLHRoaXMubW9kZSE9PXRoaXMuT0JMSVEmJnRoaXMubW9kZSE9PXRoaXMuRVFVSVR8fChtPWwvdGhpcy5xcCxuPU1hdGguc3FydCgxLW0qbSkpLHRoaXMubW9kZSl7Y2FzZSB0aGlzLk9CTElROm89MSt0aGlzLnNpbmIxKm0rdGhpcy5jb3NiMSpuKmk7YnJlYWs7Y2FzZSB0aGlzLkVRVUlUOm89MStuKmk7YnJlYWs7Y2FzZSB0aGlzLk5fUE9MRTpvPWQrcixsPXRoaXMucXAtbDticmVhaztjYXNlIHRoaXMuU19QT0xFOm89ci1kLGw9dGhpcy5xcCtsfWlmKE1hdGguYWJzKG8pPGYpcmV0dXJuIG51bGw7c3dpdGNoKHRoaXMubW9kZSl7Y2FzZSB0aGlzLk9CTElROmNhc2UgdGhpcy5FUVVJVDpvPU1hdGguc3FydCgyL28pLGM9dGhpcy5tb2RlPT09dGhpcy5PQkxJUT90aGlzLnltZipvKih0aGlzLmNvc2IxKm0tdGhpcy5zaW5iMSpuKmkpOihvPU1hdGguc3FydCgyLygxK24qaSkpKSptKnRoaXMueW1mLGI9dGhpcy54bWYqbypuKmo7YnJlYWs7Y2FzZSB0aGlzLk5fUE9MRTpjYXNlIHRoaXMuU19QT0xFOmw+PTA/KGI9KG89TWF0aC5zcXJ0KGwpKSpqLGM9aSoodGhpcy5tb2RlPT09dGhpcy5TX1BPTEU/bzotbykpOmI9Yz0wfX1yZXR1cm4gYS54PXRoaXMuYSpiK3RoaXMueDAsYS55PXRoaXMuYSpjK3RoaXMueTAsYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe2EueC09dGhpcy54MCxhLnktPXRoaXMueTA7dmFyIGIsYyxlLGcsaSxqLGssbD1hLngvdGhpcy5hLG09YS55L3RoaXMuYTtpZih0aGlzLnNwaGVyZSl7dmFyIG4sbz0wLHA9MDtpZihuPU1hdGguc3FydChsKmwrbSptKSxjPS41Km4sYz4xKXJldHVybiBudWxsO3N3aXRjaChjPTIqTWF0aC5hc2luKGMpLHRoaXMubW9kZSE9PXRoaXMuT0JMSVEmJnRoaXMubW9kZSE9PXRoaXMuRVFVSVR8fChwPU1hdGguc2luKGMpLG89TWF0aC5jb3MoYykpLHRoaXMubW9kZSl7Y2FzZSB0aGlzLkVRVUlUOmM9TWF0aC5hYnMobik8PWY/MDpNYXRoLmFzaW4obSpwL24pLGwqPXAsbT1vKm47YnJlYWs7Y2FzZSB0aGlzLk9CTElROmM9TWF0aC5hYnMobik8PWY/dGhpcy5waGkwOk1hdGguYXNpbihvKnRoaXMuc2lucGgwK20qcCp0aGlzLmNvc3BoMC9uKSxsKj1wKnRoaXMuY29zcGgwLG09KG8tTWF0aC5zaW4oYykqdGhpcy5zaW5waDApKm47YnJlYWs7Y2FzZSB0aGlzLk5fUE9MRTptPS1tLGM9ZC1jO2JyZWFrO2Nhc2UgdGhpcy5TX1BPTEU6Yy09ZH1iPTAhPT1tfHx0aGlzLm1vZGUhPT10aGlzLkVRVUlUJiZ0aGlzLm1vZGUhPT10aGlzLk9CTElRP01hdGguYXRhbjIobCxtKTowfWVsc2V7aWYoaz0wLHRoaXMubW9kZT09PXRoaXMuT0JMSVF8fHRoaXMubW9kZT09PXRoaXMuRVFVSVQpe2lmKGwvPXRoaXMuZGQsbSo9dGhpcy5kZCxqPU1hdGguc3FydChsKmwrbSptKSxmPmopcmV0dXJuIGEueD0wLGEueT10aGlzLnBoaTAsYTtnPTIqTWF0aC5hc2luKC41KmovdGhpcy5ycSksZT1NYXRoLmNvcyhnKSxsKj1nPU1hdGguc2luKGcpLHRoaXMubW9kZT09PXRoaXMuT0JMSVE/KGs9ZSp0aGlzLnNpbmIxK20qZyp0aGlzLmNvc2IxL2osaT10aGlzLnFwKmssbT1qKnRoaXMuY29zYjEqZS1tKnRoaXMuc2luYjEqZyk6KGs9bSpnL2osaT10aGlzLnFwKmssbT1qKmUpfWVsc2UgaWYodGhpcy5tb2RlPT09dGhpcy5OX1BPTEV8fHRoaXMubW9kZT09PXRoaXMuU19QT0xFKXtpZih0aGlzLm1vZGU9PT10aGlzLk5fUE9MRSYmKG09LW0pLGk9bCpsK20qbSwhaSlyZXR1cm4gYS54PTAsYS55PXRoaXMucGhpMCxhO2s9MS1pL3RoaXMucXAsdGhpcy5tb2RlPT09dGhpcy5TX1BPTEUmJihrPS1rKX1iPU1hdGguYXRhbjIobCxtKSxjPXRoaXMuYXV0aGxhdChNYXRoLmFzaW4oayksdGhpcy5hcGEpfXJldHVybiBhLng9aCh0aGlzLmxvbmcwK2IpLGEueT1jLGF9LGMuUDAwPS4zMzMzMzMzMzMzMzMzMzMzLGMuUDAxPS4xNzIyMjIyMjIyMjIyMjIyMixjLlAwMj0uMTAyNTc5MzY1MDc5MzY1MDgsYy5QMTA9LjA2Mzg4ODg4ODg4ODg4ODg4LGMuUDExPS4wNjY0MDIxMTY0MDIxMTY0LGMuUDIwPS4wMTY0MTUwMTI5NDIxOTE1NDMsYy5hdXRoc2V0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9W107cmV0dXJuIGNbMF09YSp0aGlzLlAwMCxiPWEqYSxjWzBdKz1iKnRoaXMuUDAxLGNbMV09Yip0aGlzLlAxMCxiKj1hLGNbMF0rPWIqdGhpcy5QMDIsY1sxXSs9Yip0aGlzLlAxMSxjWzJdPWIqdGhpcy5QMjAsY30sYy5hdXRobGF0PWZ1bmN0aW9uKGEsYil7dmFyIGM9YSthO3JldHVybiBhK2JbMF0qTWF0aC5zaW4oYykrYlsxXSpNYXRoLnNpbihjK2MpK2JbMl0qTWF0aC5zaW4oYytjK2MpfSxjLm5hbWVzPVsiTGFtYmVydCBBemltdXRoYWwgRXF1YWwgQXJlYSIsIkxhbWJlcnRfQXppbXV0aGFsX0VxdWFsX0FyZWEiLCJsYWVhIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9xc2ZueiI6MjB9XSw1MDpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTFlLTEwLGU9YSgiLi4vY29tbW9uL21zZm56IiksZj1hKCIuLi9jb21tb24vdHNmbnoiKSxnPU1hdGguUEkvMixoPWEoIi4uL2NvbW1vbi9zaWduIiksaT1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpLGo9YSgiLi4vY29tbW9uL3BoaTJ6Iik7Yy5pbml0PWZ1bmN0aW9uKCl7aWYodGhpcy5sYXQyfHwodGhpcy5sYXQyPXRoaXMubGF0MSksdGhpcy5rMHx8KHRoaXMuazA9MSksdGhpcy54MD10aGlzLngwfHwwLHRoaXMueTA9dGhpcy55MHx8MCwhKE1hdGguYWJzKHRoaXMubGF0MSt0aGlzLmxhdDIpPGQpKXt2YXIgYT10aGlzLmIvdGhpcy5hO3RoaXMuZT1NYXRoLnNxcnQoMS1hKmEpO3ZhciBiPU1hdGguc2luKHRoaXMubGF0MSksYz1NYXRoLmNvcyh0aGlzLmxhdDEpLGc9ZSh0aGlzLmUsYixjKSxoPWYodGhpcy5lLHRoaXMubGF0MSxiKSxpPU1hdGguc2luKHRoaXMubGF0Miksaj1NYXRoLmNvcyh0aGlzLmxhdDIpLGs9ZSh0aGlzLmUsaSxqKSxsPWYodGhpcy5lLHRoaXMubGF0MixpKSxtPWYodGhpcy5lLHRoaXMubGF0MCxNYXRoLnNpbih0aGlzLmxhdDApKTtNYXRoLmFicyh0aGlzLmxhdDEtdGhpcy5sYXQyKT5kP3RoaXMubnM9TWF0aC5sb2coZy9rKS9NYXRoLmxvZyhoL2wpOnRoaXMubnM9Yixpc05hTih0aGlzLm5zKSYmKHRoaXMubnM9YiksdGhpcy5mMD1nLyh0aGlzLm5zKk1hdGgucG93KGgsdGhpcy5ucykpLHRoaXMucmg9dGhpcy5hKnRoaXMuZjAqTWF0aC5wb3cobSx0aGlzLm5zKSx0aGlzLnRpdGxlfHwodGhpcy50aXRsZT0iTGFtYmVydCBDb25mb3JtYWwgQ29uaWMiKX19LGMuZm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYj1hLngsYz1hLnk7TWF0aC5hYnMoMipNYXRoLmFicyhjKS1NYXRoLlBJKTw9ZCYmKGM9aChjKSooZy0yKmQpKTt2YXIgZSxqLGs9TWF0aC5hYnMoTWF0aC5hYnMoYyktZyk7aWYoaz5kKWU9Zih0aGlzLmUsYyxNYXRoLnNpbihjKSksaj10aGlzLmEqdGhpcy5mMCpNYXRoLnBvdyhlLHRoaXMubnMpO2Vsc2V7aWYoaz1jKnRoaXMubnMsMD49aylyZXR1cm4gbnVsbDtqPTB9dmFyIGw9dGhpcy5ucyppKGItdGhpcy5sb25nMCk7cmV0dXJuIGEueD10aGlzLmswKihqKk1hdGguc2luKGwpKSt0aGlzLngwLGEueT10aGlzLmswKih0aGlzLnJoLWoqTWF0aC5jb3MobCkpK3RoaXMueTAsYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsaD0oYS54LXRoaXMueDApL3RoaXMuazAsaz10aGlzLnJoLShhLnktdGhpcy55MCkvdGhpcy5rMDt0aGlzLm5zPjA/KGI9TWF0aC5zcXJ0KGgqaCtrKmspLGM9MSk6KGI9LU1hdGguc3FydChoKmgrayprKSxjPS0xKTt2YXIgbD0wO2lmKDAhPT1iJiYobD1NYXRoLmF0YW4yKGMqaCxjKmspKSwwIT09Ynx8dGhpcy5ucz4wKXtpZihjPTEvdGhpcy5ucyxkPU1hdGgucG93KGIvKHRoaXMuYSp0aGlzLmYwKSxjKSxlPWoodGhpcy5lLGQpLC05OTk5PT09ZSlyZXR1cm4gbnVsbH1lbHNlIGU9LWc7cmV0dXJuIGY9aShsL3RoaXMubnMrdGhpcy5sb25nMCksYS54PWYsYS55PWUsYX0sYy5uYW1lcz1bIkxhbWJlcnQgVGFuZ2VudGlhbCBDb25mb3JtYWwgQ29uaWMgUHJvamVjdGlvbiIsIkxhbWJlcnRfQ29uZm9ybWFsX0NvbmljIiwiTGFtYmVydF9Db25mb3JtYWxfQ29uaWNfMlNQIiwibGNjIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9tc2ZueiI6MTUsIi4uL2NvbW1vbi9waGkyeiI6MTYsIi4uL2NvbW1vbi9zaWduIjoyMSwiLi4vY29tbW9uL3RzZm56IjoyNH1dLDUxOltmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXtyZXR1cm4gYX1jLmluaXQ9ZnVuY3Rpb24oKXt9LGMuZm9yd2FyZD1kLGMuaW52ZXJzZT1kLGMubmFtZXM9WyJsb25nbGF0IiwiaWRlbnRpdHkiXX0se31dLDUyOltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vY29tbW9uL21zZm56IiksZT1NYXRoLlBJLzIsZj0xZS0xMCxnPTU3LjI5NTc3OTUxMzA4MjMyLGg9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxpPU1hdGguUEkvNCxqPWEoIi4uL2NvbW1vbi90c2ZueiIpLGs9YSgiLi4vY29tbW9uL3BoaTJ6Iik7Yy5pbml0PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5iL3RoaXMuYTt0aGlzLmVzPTEtYSphLCJ4MCJpbiB0aGlzfHwodGhpcy54MD0wKSwieTAiaW4gdGhpc3x8KHRoaXMueTA9MCksdGhpcy5lPU1hdGguc3FydCh0aGlzLmVzKSx0aGlzLmxhdF90cz90aGlzLnNwaGVyZT90aGlzLmswPU1hdGguY29zKHRoaXMubGF0X3RzKTp0aGlzLmswPWQodGhpcy5lLE1hdGguc2luKHRoaXMubGF0X3RzKSxNYXRoLmNvcyh0aGlzLmxhdF90cykpOnRoaXMuazB8fCh0aGlzLms/dGhpcy5rMD10aGlzLms6dGhpcy5rMD0xKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiPWEueCxjPWEueTtpZihjKmc+OTAmJi05MD5jKmcmJmIqZz4xODAmJi0xODA+YipnKXJldHVybiBudWxsO3ZhciBkLGs7aWYoTWF0aC5hYnMoTWF0aC5hYnMoYyktZSk8PWYpcmV0dXJuIG51bGw7aWYodGhpcy5zcGhlcmUpZD10aGlzLngwK3RoaXMuYSp0aGlzLmswKmgoYi10aGlzLmxvbmcwKSxrPXRoaXMueTArdGhpcy5hKnRoaXMuazAqTWF0aC5sb2coTWF0aC50YW4oaSsuNSpjKSk7ZWxzZXt2YXIgbD1NYXRoLnNpbihjKSxtPWoodGhpcy5lLGMsbCk7ZD10aGlzLngwK3RoaXMuYSp0aGlzLmswKmgoYi10aGlzLmxvbmcwKSxrPXRoaXMueTAtdGhpcy5hKnRoaXMuazAqTWF0aC5sb2cobSl9cmV0dXJuIGEueD1kLGEueT1rLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXt2YXIgYixjLGQ9YS54LXRoaXMueDAsZj1hLnktdGhpcy55MDtpZih0aGlzLnNwaGVyZSljPWUtMipNYXRoLmF0YW4oTWF0aC5leHAoLWYvKHRoaXMuYSp0aGlzLmswKSkpO2Vsc2V7dmFyIGc9TWF0aC5leHAoLWYvKHRoaXMuYSp0aGlzLmswKSk7aWYoYz1rKHRoaXMuZSxnKSwtOTk5OT09PWMpcmV0dXJuIG51bGx9cmV0dXJuIGI9aCh0aGlzLmxvbmcwK2QvKHRoaXMuYSp0aGlzLmswKSksYS54PWIsYS55PWMsYX0sYy5uYW1lcz1bIk1lcmNhdG9yIiwiUG9wdWxhciBWaXN1YWxpc2F0aW9uIFBzZXVkbyBNZXJjYXRvciIsIk1lcmNhdG9yXzFTUCIsIk1lcmNhdG9yX0F1eGlsaWFyeV9TcGhlcmUiLCJtZXJjIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9tc2ZueiI6MTUsIi4uL2NvbW1vbi9waGkyeiI6MTYsIi4uL2NvbW1vbi90c2ZueiI6MjR9XSw1MzpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9hZGp1c3RfbG9uIik7Yy5pbml0PWZ1bmN0aW9uKCl7fSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS54LGM9YS55LGU9ZChiLXRoaXMubG9uZzApLGY9dGhpcy54MCt0aGlzLmEqZSxnPXRoaXMueTArdGhpcy5hKk1hdGgubG9nKE1hdGgudGFuKE1hdGguUEkvNCtjLzIuNSkpKjEuMjU7cmV0dXJuIGEueD1mLGEueT1nLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXthLngtPXRoaXMueDAsYS55LT10aGlzLnkwO3ZhciBiPWQodGhpcy5sb25nMCthLngvdGhpcy5hKSxjPTIuNSooTWF0aC5hdGFuKE1hdGguZXhwKC44KmEueS90aGlzLmEpKS1NYXRoLlBJLzQpO3JldHVybiBhLng9YixhLnk9YyxhfSxjLm5hbWVzPVsiTWlsbGVyX0N5bGluZHJpY2FsIiwibWlsbCJdfSx7Ii4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1fV0sNTQ6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpLGU9MWUtMTA7Yy5pbml0PWZ1bmN0aW9uKCl7fSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPWEueCxjPWEueSxmPWQoYi10aGlzLmxvbmcwKSxnPWMsaD1NYXRoLlBJKk1hdGguc2luKGMpLGk9MDshMDtpKyspe3ZhciBqPS0oZytNYXRoLnNpbihnKS1oKS8oMStNYXRoLmNvcyhnKSk7aWYoZys9aixNYXRoLmFicyhqKTxlKWJyZWFrfWcvPTIsTWF0aC5QSS8yLU1hdGguYWJzKGMpPGUmJihmPTApO3ZhciBrPS45MDAzMTYzMTYxNTgqdGhpcy5hKmYqTWF0aC5jb3MoZykrdGhpcy54MCxsPTEuNDE0MjEzNTYyMzczMSp0aGlzLmEqTWF0aC5zaW4oZykrdGhpcy55MDtyZXR1cm4gYS54PWssYS55PWwsYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe3ZhciBiLGM7YS54LT10aGlzLngwLGEueS09dGhpcy55MCxjPWEueS8oMS40MTQyMTM1NjIzNzMxKnRoaXMuYSksTWF0aC5hYnMoYyk+Ljk5OTk5OTk5OTk5OSYmKGM9Ljk5OTk5OTk5OTk5OSksYj1NYXRoLmFzaW4oYyk7dmFyIGU9ZCh0aGlzLmxvbmcwK2EueC8oLjkwMDMxNjMxNjE1OCp0aGlzLmEqTWF0aC5jb3MoYikpKTtlPC1NYXRoLlBJJiYoZT0tTWF0aC5QSSksZT5NYXRoLlBJJiYoZT1NYXRoLlBJKSxjPSgyKmIrTWF0aC5zaW4oMipiKSkvTWF0aC5QSSxNYXRoLmFicyhjKT4xJiYoYz0xKTt2YXIgZj1NYXRoLmFzaW4oYyk7cmV0dXJuIGEueD1lLGEueT1mLGF9LGMubmFtZXM9WyJNb2xsd2VpZGUiLCJtb2xsIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjV9XSw1NTpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPTQ4NDgxMzY4MTEwOTUzNmUtMjA7Yy5pdGVyYXRpb25zPTEsYy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5BPVtdLHRoaXMuQVsxXT0uNjM5OTE3NTA3Myx0aGlzLkFbMl09LS4xMzU4Nzk3NjEzLHRoaXMuQVszXT0uMDYzMjk0NDA5LHRoaXMuQVs0XT0tLjAyNTI2ODUzLHRoaXMuQVs1XT0uMDExNzg3OSx0aGlzLkFbNl09LS4wMDU1MTYxLHRoaXMuQVs3XT0uMDAyNjkwNix0aGlzLkFbOF09LS4wMDEzMzMsdGhpcy5BWzldPTY3ZS01LHRoaXMuQVsxMF09LTM0ZS01LHRoaXMuQl9yZT1bXSx0aGlzLkJfaW09W10sdGhpcy5CX3JlWzFdPS43NTU3ODUzMjI4LHRoaXMuQl9pbVsxXT0wLHRoaXMuQl9yZVsyXT0uMjQ5MjA0NjQ2LHRoaXMuQl9pbVsyXT0uMDAzMzcxNTA3LHRoaXMuQl9yZVszXT0tLjAwMTU0MTczOSx0aGlzLkJfaW1bM109LjA0MTA1ODU2LHRoaXMuQl9yZVs0XT0tLjEwMTYyOTA3LHRoaXMuQl9pbVs0XT0uMDE3Mjc2MDksdGhpcy5CX3JlWzVdPS0uMjY2MjM0ODksdGhpcy5CX2ltWzVdPS0uMzYyNDkyMTgsdGhpcy5CX3JlWzZdPS0uNjg3MDk4Myx0aGlzLkJfaW1bNl09LTEuMTY1MTk2Nyx0aGlzLkNfcmU9W10sdGhpcy5DX2ltPVtdLHRoaXMuQ19yZVsxXT0xLjMyMzEyNzA0MzksdGhpcy5DX2ltWzFdPTAsdGhpcy5DX3JlWzJdPS0uNTc3MjQ1Nzg5LHRoaXMuQ19pbVsyXT0tLjAwNzgwOTU5OCx0aGlzLkNfcmVbM109LjUwODMwNzUxMyx0aGlzLkNfaW1bM109LS4xMTIyMDg5NTIsdGhpcy5DX3JlWzRdPS0uMTUwOTQ3NjIsdGhpcy5DX2ltWzRdPS4xODIwMDYwMix0aGlzLkNfcmVbNV09MS4wMTQxODE3OSx0aGlzLkNfaW1bNV09MS42NDQ5NzY5Nix0aGlzLkNfcmVbNl09MS45NjYwNTQ5LHRoaXMuQ19pbVs2XT0yLjUxMjc2NDUsdGhpcy5EPVtdLHRoaXMuRFsxXT0xLjU2MjcwMTQyNDMsdGhpcy5EWzJdPS41MTg1NDA2Mzk4LHRoaXMuRFszXT0tLjAzMzMzMDk4LHRoaXMuRFs0XT0tLjEwNTI5MDYsdGhpcy5EWzVdPS0uMDM2ODU5NCx0aGlzLkRbNl09LjAwNzMxNyx0aGlzLkRbN109LjAxMjIsdGhpcy5EWzhdPS4wMDM5NCx0aGlzLkRbOV09LS4wMDEzfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz1hLngsZT1hLnksZj1lLXRoaXMubGF0MCxnPWMtdGhpcy5sb25nMCxoPWYvZCoxZS01LGk9ZyxqPTEsaz0wO2ZvcihiPTE7MTA+PWI7YisrKWoqPWgsays9dGhpcy5BW2JdKmo7dmFyIGwsbSxuPWssbz1pLHA9MSxxPTAscj0wLHM9MDtmb3IoYj0xOzY+PWI7YisrKWw9cCpuLXEqbyxtPXEqbitwKm8scD1sLHE9bSxyPXIrdGhpcy5CX3JlW2JdKnAtdGhpcy5CX2ltW2JdKnEscz1zK3RoaXMuQl9pbVtiXSpwK3RoaXMuQl9yZVtiXSpxO3JldHVybiBhLng9cyp0aGlzLmErdGhpcy54MCxhLnk9cip0aGlzLmErdGhpcy55MCxhfSxjLmludmVyc2U9ZnVuY3Rpb24oYSl7dmFyIGIsYyxlLGY9YS54LGc9YS55LGg9Zi10aGlzLngwLGk9Zy10aGlzLnkwLGo9aS90aGlzLmEsaz1oL3RoaXMuYSxsPTEsbT0wLG49MCxvPTA7Zm9yKGI9MTs2Pj1iO2IrKyljPWwqai1tKmssZT1tKmorbCprLGw9YyxtPWUsbj1uK3RoaXMuQ19yZVtiXSpsLXRoaXMuQ19pbVtiXSptLG89byt0aGlzLkNfaW1bYl0qbCt0aGlzLkNfcmVbYl0qbTtmb3IodmFyIHA9MDtwPHRoaXMuaXRlcmF0aW9ucztwKyspe3ZhciBxLHIscz1uLHQ9byx1PWosdj1rO2ZvcihiPTI7Nj49YjtiKyspcT1zKm4tdCpvLHI9dCpuK3MqbyxzPXEsdD1yLHUrPShiLTEpKih0aGlzLkJfcmVbYl0qcy10aGlzLkJfaW1bYl0qdCksdis9KGItMSkqKHRoaXMuQl9pbVtiXSpzK3RoaXMuQl9yZVtiXSp0KTtzPTEsdD0wO3ZhciB3PXRoaXMuQl9yZVsxXSx4PXRoaXMuQl9pbVsxXTtmb3IoYj0yOzY+PWI7YisrKXE9cypuLXQqbyxyPXQqbitzKm8scz1xLHQ9cix3Kz1iKih0aGlzLkJfcmVbYl0qcy10aGlzLkJfaW1bYl0qdCkseCs9YioodGhpcy5CX2ltW2JdKnMrdGhpcy5CX3JlW2JdKnQpO3ZhciB5PXcqdyt4Kng7bj0odSp3K3YqeCkveSxvPSh2KnctdSp4KS95fXZhciB6PW4sQT1vLEI9MSxDPTA7Zm9yKGI9MTs5Pj1iO2IrKylCKj16LEMrPXRoaXMuRFtiXSpCO3ZhciBEPXRoaXMubGF0MCtDKmQqMWU1LEU9dGhpcy5sb25nMCtBO3JldHVybiBhLng9RSxhLnk9RCxhfSxjLm5hbWVzPVsiTmV3X1plYWxhbmRfTWFwX0dyaWQiLCJuem1nIl19LHt9XSw1NjpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi90c2ZueiIpLGU9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxmPWEoIi4uL2NvbW1vbi9waGkyeiIpLGc9TWF0aC5QSS8yLGg9TWF0aC5QSS80LGk9MWUtMTA7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5ub19vZmY9dGhpcy5ub19vZmZ8fCExLHRoaXMubm9fcm90PXRoaXMubm9fcm90fHwhMSxpc05hTih0aGlzLmswKSYmKHRoaXMuazA9MSk7dmFyIGE9TWF0aC5zaW4odGhpcy5sYXQwKSxiPU1hdGguY29zKHRoaXMubGF0MCksYz10aGlzLmUqYTt0aGlzLmJsPU1hdGguc3FydCgxK3RoaXMuZXMvKDEtdGhpcy5lcykqTWF0aC5wb3coYiw0KSksdGhpcy5hbD10aGlzLmEqdGhpcy5ibCp0aGlzLmswKk1hdGguc3FydCgxLXRoaXMuZXMpLygxLWMqYyk7dmFyIGY9ZCh0aGlzLmUsdGhpcy5sYXQwLGEpLGc9dGhpcy5ibC9iKk1hdGguc3FydCgoMS10aGlzLmVzKS8oMS1jKmMpKTsxPmcqZyYmKGc9MSk7dmFyIGgsaTtpZihpc05hTih0aGlzLmxvbmdjKSl7dmFyIGo9ZCh0aGlzLmUsdGhpcy5sYXQxLE1hdGguc2luKHRoaXMubGF0MSkpLGs9ZCh0aGlzLmUsdGhpcy5sYXQyLE1hdGguc2luKHRoaXMubGF0MikpO3RoaXMubGF0MD49MD90aGlzLmVsPShnK01hdGguc3FydChnKmctMSkpKk1hdGgucG93KGYsdGhpcy5ibCk6dGhpcy5lbD0oZy1NYXRoLnNxcnQoZypnLTEpKSpNYXRoLnBvdyhmLHRoaXMuYmwpO3ZhciBsPU1hdGgucG93KGosdGhpcy5ibCksbT1NYXRoLnBvdyhrLHRoaXMuYmwpO2g9dGhpcy5lbC9sLGk9LjUqKGgtMS9oKTt2YXIgbj0odGhpcy5lbCp0aGlzLmVsLW0qbCkvKHRoaXMuZWwqdGhpcy5lbCttKmwpLG89KG0tbCkvKG0rbCkscD1lKHRoaXMubG9uZzEtdGhpcy5sb25nMik7dGhpcy5sb25nMD0uNSoodGhpcy5sb25nMSt0aGlzLmxvbmcyKS1NYXRoLmF0YW4obipNYXRoLnRhbiguNSp0aGlzLmJsKnApL28pL3RoaXMuYmwsdGhpcy5sb25nMD1lKHRoaXMubG9uZzApO3ZhciBxPWUodGhpcy5sb25nMS10aGlzLmxvbmcwKTt0aGlzLmdhbW1hMD1NYXRoLmF0YW4oTWF0aC5zaW4odGhpcy5ibCpxKS9pKSx0aGlzLmFscGhhPU1hdGguYXNpbihnKk1hdGguc2luKHRoaXMuZ2FtbWEwKSl9ZWxzZSBoPXRoaXMubGF0MD49MD9nK01hdGguc3FydChnKmctMSk6Zy1NYXRoLnNxcnQoZypnLTEpLHRoaXMuZWw9aCpNYXRoLnBvdyhmLHRoaXMuYmwpLGk9LjUqKGgtMS9oKSx0aGlzLmdhbW1hMD1NYXRoLmFzaW4oTWF0aC5zaW4odGhpcy5hbHBoYSkvZyksdGhpcy5sb25nMD10aGlzLmxvbmdjLU1hdGguYXNpbihpKk1hdGgudGFuKHRoaXMuZ2FtbWEwKSkvdGhpcy5ibDt0aGlzLm5vX29mZj90aGlzLnVjPTA6dGhpcy5sYXQwPj0wP3RoaXMudWM9dGhpcy5hbC90aGlzLmJsKk1hdGguYXRhbjIoTWF0aC5zcXJ0KGcqZy0xKSxNYXRoLmNvcyh0aGlzLmFscGhhKSk6dGhpcy51Yz0tMSp0aGlzLmFsL3RoaXMuYmwqTWF0aC5hdGFuMihNYXRoLnNxcnQoZypnLTEpLE1hdGguY29zKHRoaXMuYWxwaGEpKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZixqPWEueCxrPWEueSxsPWUoai10aGlzLmxvbmcwKTtpZihNYXRoLmFicyhNYXRoLmFicyhrKS1nKTw9aSlmPWs+MD8tMToxLGM9dGhpcy5hbC90aGlzLmJsKk1hdGgubG9nKE1hdGgudGFuKGgrZip0aGlzLmdhbW1hMCouNSkpLGI9LTEqZipnKnRoaXMuYWwvdGhpcy5ibDtlbHNle3ZhciBtPWQodGhpcy5lLGssTWF0aC5zaW4oaykpLG49dGhpcy5lbC9NYXRoLnBvdyhtLHRoaXMuYmwpLG89LjUqKG4tMS9uKSxwPS41KihuKzEvbikscT1NYXRoLnNpbih0aGlzLmJsKmwpLHI9KG8qTWF0aC5zaW4odGhpcy5nYW1tYTApLXEqTWF0aC5jb3ModGhpcy5nYW1tYTApKS9wO2M9TWF0aC5hYnMoTWF0aC5hYnMociktMSk8PWk/TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZOi41KnRoaXMuYWwqTWF0aC5sb2coKDEtcikvKDErcikpL3RoaXMuYmwsYj1NYXRoLmFicyhNYXRoLmNvcyh0aGlzLmJsKmwpKTw9aT90aGlzLmFsKnRoaXMuYmwqbDp0aGlzLmFsKk1hdGguYXRhbjIobypNYXRoLmNvcyh0aGlzLmdhbW1hMCkrcSpNYXRoLnNpbih0aGlzLmdhbW1hMCksTWF0aC5jb3ModGhpcy5ibCpsKSkvdGhpcy5ibH1yZXR1cm4gdGhpcy5ub19yb3Q/KGEueD10aGlzLngwK2IsYS55PXRoaXMueTArYyk6KGItPXRoaXMudWMsYS54PXRoaXMueDArYypNYXRoLmNvcyh0aGlzLmFscGhhKStiKk1hdGguc2luKHRoaXMuYWxwaGEpLGEueT10aGlzLnkwK2IqTWF0aC5jb3ModGhpcy5hbHBoYSktYypNYXRoLnNpbih0aGlzLmFscGhhKSksYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe3ZhciBiLGM7dGhpcy5ub19yb3Q/KGM9YS55LXRoaXMueTAsYj1hLngtdGhpcy54MCk6KGM9KGEueC10aGlzLngwKSpNYXRoLmNvcyh0aGlzLmFscGhhKS0oYS55LXRoaXMueTApKk1hdGguc2luKHRoaXMuYWxwaGEpLGI9KGEueS10aGlzLnkwKSpNYXRoLmNvcyh0aGlzLmFscGhhKSsoYS54LXRoaXMueDApKk1hdGguc2luKHRoaXMuYWxwaGEpLGIrPXRoaXMudWMpO3ZhciBkPU1hdGguZXhwKC0xKnRoaXMuYmwqYy90aGlzLmFsKSxoPS41KihkLTEvZCksaj0uNSooZCsxL2QpLGs9TWF0aC5zaW4odGhpcy5ibCpiL3RoaXMuYWwpLGw9KGsqTWF0aC5jb3ModGhpcy5nYW1tYTApK2gqTWF0aC5zaW4odGhpcy5nYW1tYTApKS9qLG09TWF0aC5wb3codGhpcy5lbC9NYXRoLnNxcnQoKDErbCkvKDEtbCkpLDEvdGhpcy5ibCk7cmV0dXJuIE1hdGguYWJzKGwtMSk8aT8oYS54PXRoaXMubG9uZzAsYS55PWcpOk1hdGguYWJzKGwrMSk8aT8oYS54PXRoaXMubG9uZzAsYS55PS0xKmcpOihhLnk9Zih0aGlzLmUsbSksYS54PWUodGhpcy5sb25nMC1NYXRoLmF0YW4yKGgqTWF0aC5jb3ModGhpcy5nYW1tYTApLWsqTWF0aC5zaW4odGhpcy5nYW1tYTApLE1hdGguY29zKHRoaXMuYmwqYi90aGlzLmFsKSkvdGhpcy5ibCkpLGF9LGMubmFtZXM9WyJIb3RpbmVfT2JsaXF1ZV9NZXJjYXRvciIsIkhvdGluZSBPYmxpcXVlIE1lcmNhdG9yIiwiSG90aW5lX09ibGlxdWVfTWVyY2F0b3JfQXppbXV0aF9OYXR1cmFsX09yaWdpbiIsIkhvdGluZV9PYmxpcXVlX01lcmNhdG9yX0F6aW11dGhfQ2VudGVyIiwib21lcmMiXX0seyIuLi9jb21tb24vYWRqdXN0X2xvbiI6NSwiLi4vY29tbW9uL3BoaTJ6IjoxNiwiLi4vY29tbW9uL3RzZm56IjoyNH1dLDU3OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxlPTFlLTEwLGY9YSgiLi4vY29tbW9uL2FzaW56IiksZz1NYXRoLlBJLzI7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5zaW5fcDE0PU1hdGguc2luKHRoaXMubGF0MCksdGhpcy5jb3NfcDE0PU1hdGguY29zKHRoaXMubGF0MCl9LGMuZm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYixjLGYsZyxoLGksaixrLGw9YS54LG09YS55O3JldHVybiBmPWQobC10aGlzLmxvbmcwKSxiPU1hdGguc2luKG0pLGM9TWF0aC5jb3MobSksZz1NYXRoLmNvcyhmKSxpPXRoaXMuc2luX3AxNCpiK3RoaXMuY29zX3AxNCpjKmcsaD0xLChpPjB8fE1hdGguYWJzKGkpPD1lKSYmKGo9dGhpcy5hKmgqYypNYXRoLnNpbihmKSxrPXRoaXMueTArdGhpcy5hKmgqKHRoaXMuY29zX3AxNCpiLXRoaXMuc2luX3AxNCpjKmcpKSxhLng9aixhLnk9ayxhfSxjLmludmVyc2U9ZnVuY3Rpb24oYSl7dmFyIGIsYyxoLGksaixrLGw7cmV0dXJuIGEueC09dGhpcy54MCxhLnktPXRoaXMueTAsYj1NYXRoLnNxcnQoYS54KmEueCthLnkqYS55KSxjPWYoYi90aGlzLmEpLGg9TWF0aC5zaW4oYyksaT1NYXRoLmNvcyhjKSxrPXRoaXMubG9uZzAsTWF0aC5hYnMoYik8PWU/KGw9dGhpcy5sYXQwLGEueD1rLGEueT1sLGEpOihsPWYoaSp0aGlzLnNpbl9wMTQrYS55KmgqdGhpcy5jb3NfcDE0L2IpLGo9TWF0aC5hYnModGhpcy5sYXQwKS1nLE1hdGguYWJzKGopPD1lPyhrPWQodGhpcy5sYXQwPj0wP3RoaXMubG9uZzArTWF0aC5hdGFuMihhLngsLWEueSk6dGhpcy5sb25nMC1NYXRoLmF0YW4yKC1hLngsYS55KSksYS54PWssYS55PWwsYSk6KGs9ZCh0aGlzLmxvbmcwK01hdGguYXRhbjIoYS54KmgsYip0aGlzLmNvc19wMTQqaS1hLnkqdGhpcy5zaW5fcDE0KmgpKSxhLng9ayxhLnk9bCxhKSl9LGMubmFtZXM9WyJvcnRobyJdfSx7Ii4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1LCIuLi9jb21tb24vYXNpbnoiOjZ9XSw1ODpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9lMGZuIiksZT1hKCIuLi9jb21tb24vZTFmbiIpLGY9YSgiLi4vY29tbW9uL2UyZm4iKSxnPWEoIi4uL2NvbW1vbi9lM2ZuIiksaD1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpLGk9YSgiLi4vY29tbW9uL2FkanVzdF9sYXQiKSxqPWEoIi4uL2NvbW1vbi9tbGZuIiksaz0xZS0xMCxsPWEoIi4uL2NvbW1vbi9nTiIpLG09MjA7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy50ZW1wPXRoaXMuYi90aGlzLmEsdGhpcy5lcz0xLU1hdGgucG93KHRoaXMudGVtcCwyKSx0aGlzLmU9TWF0aC5zcXJ0KHRoaXMuZXMpLHRoaXMuZTA9ZCh0aGlzLmVzKSx0aGlzLmUxPWUodGhpcy5lcyksdGhpcy5lMj1mKHRoaXMuZXMpLHRoaXMuZTM9Zyh0aGlzLmVzKSx0aGlzLm1sMD10aGlzLmEqaih0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzLHRoaXMubGF0MCl9LGMuZm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYixjLGQsZT1hLngsZj1hLnksZz1oKGUtdGhpcy5sb25nMCk7aWYoZD1nKk1hdGguc2luKGYpLHRoaXMuc3BoZXJlKU1hdGguYWJzKGYpPD1rPyhiPXRoaXMuYSpnLGM9LTEqdGhpcy5hKnRoaXMubGF0MCk6KGI9dGhpcy5hKk1hdGguc2luKGQpL01hdGgudGFuKGYpLGM9dGhpcy5hKihpKGYtdGhpcy5sYXQwKSsoMS1NYXRoLmNvcyhkKSkvTWF0aC50YW4oZikpKTtlbHNlIGlmKE1hdGguYWJzKGYpPD1rKWI9dGhpcy5hKmcsYz0tMSp0aGlzLm1sMDtlbHNle3ZhciBtPWwodGhpcy5hLHRoaXMuZSxNYXRoLnNpbihmKSkvTWF0aC50YW4oZik7Yj1tKk1hdGguc2luKGQpLGM9dGhpcy5hKmoodGhpcy5lMCx0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyxmKS10aGlzLm1sMCttKigxLU1hdGguY29zKGQpKX1yZXR1cm4gYS54PWIrdGhpcy54MCxhLnk9Yyt0aGlzLnkwLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaSxsLG47aWYoZD1hLngtdGhpcy54MCxlPWEueS10aGlzLnkwLHRoaXMuc3BoZXJlKWlmKE1hdGguYWJzKGUrdGhpcy5hKnRoaXMubGF0MCk8PWspYj1oKGQvdGhpcy5hK3RoaXMubG9uZzApLGM9MDtlbHNle2c9dGhpcy5sYXQwK2UvdGhpcy5hLGk9ZCpkL3RoaXMuYS90aGlzLmErZypnLGw9Zzt2YXIgbztmb3IoZj1tO2Y7LS1mKWlmKG89TWF0aC50YW4obCksbj0tMSooZyoobCpvKzEpLWwtLjUqKGwqbCtpKSpvKS8oKGwtZykvby0xKSxsKz1uLE1hdGguYWJzKG4pPD1rKXtjPWw7YnJlYWt9Yj1oKHRoaXMubG9uZzArTWF0aC5hc2luKGQqTWF0aC50YW4obCkvdGhpcy5hKS9NYXRoLnNpbihjKSl9ZWxzZSBpZihNYXRoLmFicyhlK3RoaXMubWwwKTw9ayljPTAsYj1oKHRoaXMubG9uZzArZC90aGlzLmEpO2Vsc2V7Zz0odGhpcy5tbDArZSkvdGhpcy5hLGk9ZCpkL3RoaXMuYS90aGlzLmErZypnLGw9Zzt2YXIgcCxxLHIscyx0O2ZvcihmPW07ZjstLWYpaWYodD10aGlzLmUqTWF0aC5zaW4obCkscD1NYXRoLnNxcnQoMS10KnQpKk1hdGgudGFuKGwpLHE9dGhpcy5hKmoodGhpcy5lMCx0aGlzLmUxLHRoaXMuZTIsdGhpcy5lMyxsKSxyPXRoaXMuZTAtMip0aGlzLmUxKk1hdGguY29zKDIqbCkrNCp0aGlzLmUyKk1hdGguY29zKDQqbCktNip0aGlzLmUzKk1hdGguY29zKDYqbCkscz1xL3RoaXMuYSxuPShnKihwKnMrMSktcy0uNSpwKihzKnMraSkpLyh0aGlzLmVzKk1hdGguc2luKDIqbCkqKHMqcytpLTIqZypzKS8oNCpwKSsoZy1zKSoocCpyLTIvTWF0aC5zaW4oMipsKSktciksbC09bixNYXRoLmFicyhuKTw9ayl7Yz1sO2JyZWFrfXA9TWF0aC5zcXJ0KDEtdGhpcy5lcypNYXRoLnBvdyhNYXRoLnNpbihjKSwyKSkqTWF0aC50YW4oYyksYj1oKHRoaXMubG9uZzArTWF0aC5hc2luKGQqcC90aGlzLmEpL01hdGguc2luKGMpKX1yZXR1cm4gYS54PWIsYS55PWMsYX0sYy5uYW1lcz1bIlBvbHljb25pYyIsInBvbHkiXX0seyIuLi9jb21tb24vYWRqdXN0X2xhdCI6NCwiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9lMGZuIjo3LCIuLi9jb21tb24vZTFmbiI6OCwiLi4vY29tbW9uL2UyZm4iOjksIi4uL2NvbW1vbi9lM2ZuIjoxMCwiLi4vY29tbW9uL2dOIjoxMSwiLi4vY29tbW9uL21sZm4iOjE0fV0sNTk6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpLGU9YSgiLi4vY29tbW9uL2FkanVzdF9sYXQiKSxmPWEoIi4uL2NvbW1vbi9wal9lbmZuIiksZz0yMCxoPWEoIi4uL2NvbW1vbi9wal9tbGZuIiksaT1hKCIuLi9jb21tb24vcGpfaW52X21sZm4iKSxqPU1hdGguUEkvMixrPTFlLTEwLGw9YSgiLi4vY29tbW9uL2FzaW56Iik7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5zcGhlcmU/KHRoaXMubj0xLHRoaXMubT0wLHRoaXMuZXM9MCx0aGlzLkNfeT1NYXRoLnNxcnQoKHRoaXMubSsxKS90aGlzLm4pLHRoaXMuQ194PXRoaXMuQ195Lyh0aGlzLm0rMSkpOnRoaXMuZW49Zih0aGlzLmVzKX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZT1hLngsZj1hLnk7aWYoZT1kKGUtdGhpcy5sb25nMCksdGhpcy5zcGhlcmUpe2lmKHRoaXMubSlmb3IodmFyIGk9dGhpcy5uKk1hdGguc2luKGYpLGo9ZztqOy0tail7dmFyIGw9KHRoaXMubSpmK01hdGguc2luKGYpLWkpLyh0aGlzLm0rTWF0aC5jb3MoZikpO2lmKGYtPWwsTWF0aC5hYnMobCk8aylicmVha31lbHNlIGY9MSE9PXRoaXMubj9NYXRoLmFzaW4odGhpcy5uKk1hdGguc2luKGYpKTpmO2I9dGhpcy5hKnRoaXMuQ194KmUqKHRoaXMubStNYXRoLmNvcyhmKSksYz10aGlzLmEqdGhpcy5DX3kqZn1lbHNle3ZhciBtPU1hdGguc2luKGYpLG49TWF0aC5jb3MoZik7Yz10aGlzLmEqaChmLG0sbix0aGlzLmVuKSxiPXRoaXMuYSplKm4vTWF0aC5zcXJ0KDEtdGhpcy5lcyptKm0pfXJldHVybiBhLng9YixhLnk9YyxhfSxjLmludmVyc2U9ZnVuY3Rpb24oYSl7dmFyIGIsYyxmLGc7cmV0dXJuIGEueC09dGhpcy54MCxmPWEueC90aGlzLmEsYS55LT10aGlzLnkwLGI9YS55L3RoaXMuYSx0aGlzLnNwaGVyZT8oYi89dGhpcy5DX3ksZi89dGhpcy5DX3gqKHRoaXMubStNYXRoLmNvcyhiKSksdGhpcy5tP2I9bCgodGhpcy5tKmIrTWF0aC5zaW4oYikpL3RoaXMubik6MSE9PXRoaXMubiYmKGI9bChNYXRoLnNpbihiKS90aGlzLm4pKSxmPWQoZit0aGlzLmxvbmcwKSxiPWUoYikpOihiPWkoYS55L3RoaXMuYSx0aGlzLmVzLHRoaXMuZW4pLGc9TWF0aC5hYnMoYiksaj5nPyhnPU1hdGguc2luKGIpLGM9dGhpcy5sb25nMCthLngqTWF0aC5zcXJ0KDEtdGhpcy5lcypnKmcpLyh0aGlzLmEqTWF0aC5jb3MoYikpLGY9ZChjKSk6aj5nLWsmJihmPXRoaXMubG9uZzApKSxhLng9ZixhLnk9YixhfSxjLm5hbWVzPVsiU2ludXNvaWRhbCIsInNpbnUiXX0seyIuLi9jb21tb24vYWRqdXN0X2xhdCI6NCwiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9hc2lueiI6NiwiLi4vY29tbW9uL3BqX2VuZm4iOjE3LCIuLi9jb21tb24vcGpfaW52X21sZm4iOjE4LCIuLi9jb21tb24vcGpfbWxmbiI6MTl9XSw2MDpbZnVuY3Rpb24oYSxiLGMpe2MuaW5pdD1mdW5jdGlvbigpe3ZhciBhPXRoaXMubGF0MDt0aGlzLmxhbWJkYTA9dGhpcy5sb25nMDt2YXIgYj1NYXRoLnNpbihhKSxjPXRoaXMuYSxkPXRoaXMucmYsZT0xL2QsZj0yKmUtTWF0aC5wb3coZSwyKSxnPXRoaXMuZT1NYXRoLnNxcnQoZik7dGhpcy5SPXRoaXMuazAqYypNYXRoLnNxcnQoMS1mKS8oMS1mKk1hdGgucG93KGIsMikpLHRoaXMuYWxwaGE9TWF0aC5zcXJ0KDErZi8oMS1mKSpNYXRoLnBvdyhNYXRoLmNvcyhhKSw0KSksdGhpcy5iMD1NYXRoLmFzaW4oYi90aGlzLmFscGhhKTt2YXIgaD1NYXRoLmxvZyhNYXRoLnRhbihNYXRoLlBJLzQrdGhpcy5iMC8yKSksaT1NYXRoLmxvZyhNYXRoLnRhbihNYXRoLlBJLzQrYS8yKSksaj1NYXRoLmxvZygoMStnKmIpLygxLWcqYikpO3RoaXMuSz1oLXRoaXMuYWxwaGEqaSt0aGlzLmFscGhhKmcvMipqfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGI9TWF0aC5sb2coTWF0aC50YW4oTWF0aC5QSS80LWEueS8yKSksYz10aGlzLmUvMipNYXRoLmxvZygoMSt0aGlzLmUqTWF0aC5zaW4oYS55KSkvKDEtdGhpcy5lKk1hdGguc2luKGEueSkpKSxkPS10aGlzLmFscGhhKihiK2MpK3RoaXMuSyxlPTIqKE1hdGguYXRhbihNYXRoLmV4cChkKSktTWF0aC5QSS80KSxmPXRoaXMuYWxwaGEqKGEueC10aGlzLmxhbWJkYTApLGc9TWF0aC5hdGFuKE1hdGguc2luKGYpLyhNYXRoLnNpbih0aGlzLmIwKSpNYXRoLnRhbihlKStNYXRoLmNvcyh0aGlzLmIwKSpNYXRoLmNvcyhmKSkpLGg9TWF0aC5hc2luKE1hdGguY29zKHRoaXMuYjApKk1hdGguc2luKGUpLU1hdGguc2luKHRoaXMuYjApKk1hdGguY29zKGUpKk1hdGguY29zKGYpKTtyZXR1cm4gYS55PXRoaXMuUi8yKk1hdGgubG9nKCgxK01hdGguc2luKGgpKS8oMS1NYXRoLnNpbihoKSkpK3RoaXMueTAsYS54PXRoaXMuUipnK3RoaXMueDAsYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLngtdGhpcy54MCxjPWEueS10aGlzLnkwLGQ9Yi90aGlzLlIsZT0yKihNYXRoLmF0YW4oTWF0aC5leHAoYy90aGlzLlIpKS1NYXRoLlBJLzQpLGY9TWF0aC5hc2luKE1hdGguY29zKHRoaXMuYjApKk1hdGguc2luKGUpK01hdGguc2luKHRoaXMuYjApKk1hdGguY29zKGUpKk1hdGguY29zKGQpKSxnPU1hdGguYXRhbihNYXRoLnNpbihkKS8oTWF0aC5jb3ModGhpcy5iMCkqTWF0aC5jb3MoZCktTWF0aC5zaW4odGhpcy5iMCkqTWF0aC50YW4oZSkpKSxoPXRoaXMubGFtYmRhMCtnL3RoaXMuYWxwaGEsaT0wLGo9ZixrPS0xZTMsbD0wO01hdGguYWJzKGotayk+MWUtNzspe2lmKCsrbD4yMClyZXR1cm47aT0xL3RoaXMuYWxwaGEqKE1hdGgubG9nKE1hdGgudGFuKE1hdGguUEkvNCtmLzIpKS10aGlzLkspK3RoaXMuZSpNYXRoLmxvZyhNYXRoLnRhbihNYXRoLlBJLzQrTWF0aC5hc2luKHRoaXMuZSpNYXRoLnNpbihqKSkvMikpLGs9aixqPTIqTWF0aC5hdGFuKE1hdGguZXhwKGkpKS1NYXRoLlBJLzJ9cmV0dXJuIGEueD1oLGEueT1qLGF9LGMubmFtZXM9WyJzb21lcmMiXX0se31dLDYxOltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9TWF0aC5QSS8yLGU9MWUtMTAsZj1hKCIuLi9jb21tb24vc2lnbiIpLGc9YSgiLi4vY29tbW9uL21zZm56IiksaD1hKCIuLi9jb21tb24vdHNmbnoiKSxpPWEoIi4uL2NvbW1vbi9waGkyeiIpLGo9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKTtjLnNzZm5fPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYio9YyxNYXRoLnRhbiguNSooZCthKSkqTWF0aC5wb3coKDEtYikvKDErYiksLjUqYyl9LGMuaW5pdD1mdW5jdGlvbigpe3RoaXMuY29zbGF0MD1NYXRoLmNvcyh0aGlzLmxhdDApLHRoaXMuc2lubGF0MD1NYXRoLnNpbih0aGlzLmxhdDApLHRoaXMuc3BoZXJlPzE9PT10aGlzLmswJiYhaXNOYU4odGhpcy5sYXRfdHMpJiZNYXRoLmFicyh0aGlzLmNvc2xhdDApPD1lJiYodGhpcy5rMD0uNSooMStmKHRoaXMubGF0MCkqTWF0aC5zaW4odGhpcy5sYXRfdHMpKSk6KE1hdGguYWJzKHRoaXMuY29zbGF0MCk8PWUmJih0aGlzLmxhdDA+MD90aGlzLmNvbj0xOnRoaXMuY29uPS0xKSx0aGlzLmNvbnM9TWF0aC5zcXJ0KE1hdGgucG93KDErdGhpcy5lLDErdGhpcy5lKSpNYXRoLnBvdygxLXRoaXMuZSwxLXRoaXMuZSkpLDE9PT10aGlzLmswJiYhaXNOYU4odGhpcy5sYXRfdHMpJiZNYXRoLmFicyh0aGlzLmNvc2xhdDApPD1lJiYodGhpcy5rMD0uNSp0aGlzLmNvbnMqZyh0aGlzLmUsTWF0aC5zaW4odGhpcy5sYXRfdHMpLE1hdGguY29zKHRoaXMubGF0X3RzKSkvaCh0aGlzLmUsdGhpcy5jb24qdGhpcy5sYXRfdHMsdGhpcy5jb24qTWF0aC5zaW4odGhpcy5sYXRfdHMpKSksdGhpcy5tczE9Zyh0aGlzLmUsdGhpcy5zaW5sYXQwLHRoaXMuY29zbGF0MCksdGhpcy5YMD0yKk1hdGguYXRhbih0aGlzLnNzZm5fKHRoaXMubGF0MCx0aGlzLnNpbmxhdDAsdGhpcy5lKSktZCx0aGlzLmNvc1gwPU1hdGguY29zKHRoaXMuWDApLHRoaXMuc2luWDA9TWF0aC5zaW4odGhpcy5YMCkpfSxjLmZvcndhcmQ9ZnVuY3Rpb24oYSl7dmFyIGIsYyxmLGcsaSxrLGw9YS54LG09YS55LG49TWF0aC5zaW4obSksbz1NYXRoLmNvcyhtKSxwPWoobC10aGlzLmxvbmcwKTtyZXR1cm4gTWF0aC5hYnMoTWF0aC5hYnMobC10aGlzLmxvbmcwKS1NYXRoLlBJKTw9ZSYmTWF0aC5hYnMobSt0aGlzLmxhdDApPD1lPyhhLng9TmFOLGEueT1OYU4sYSk6dGhpcy5zcGhlcmU/KGI9Mip0aGlzLmswLygxK3RoaXMuc2lubGF0MCpuK3RoaXMuY29zbGF0MCpvKk1hdGguY29zKHApKSxhLng9dGhpcy5hKmIqbypNYXRoLnNpbihwKSt0aGlzLngwLGEueT10aGlzLmEqYioodGhpcy5jb3NsYXQwKm4tdGhpcy5zaW5sYXQwKm8qTWF0aC5jb3MocCkpK3RoaXMueTAsYSk6KGM9MipNYXRoLmF0YW4odGhpcy5zc2ZuXyhtLG4sdGhpcy5lKSktZCxnPU1hdGguY29zKGMpLGY9TWF0aC5zaW4oYyksTWF0aC5hYnModGhpcy5jb3NsYXQwKTw9ZT8oaT1oKHRoaXMuZSxtKnRoaXMuY29uLHRoaXMuY29uKm4pLGs9Mip0aGlzLmEqdGhpcy5rMCppL3RoaXMuY29ucyxhLng9dGhpcy54MCtrKk1hdGguc2luKGwtdGhpcy5sb25nMCksYS55PXRoaXMueTAtdGhpcy5jb24qaypNYXRoLmNvcyhsLXRoaXMubG9uZzApLGEpOihNYXRoLmFicyh0aGlzLnNpbmxhdDApPGU/KGI9Mip0aGlzLmEqdGhpcy5rMC8oMStnKk1hdGguY29zKHApKSxhLnk9YipmKTooYj0yKnRoaXMuYSp0aGlzLmswKnRoaXMubXMxLyh0aGlzLmNvc1gwKigxK3RoaXMuc2luWDAqZit0aGlzLmNvc1gwKmcqTWF0aC5jb3MocCkpKSxhLnk9YioodGhpcy5jb3NYMCpmLXRoaXMuc2luWDAqZypNYXRoLmNvcyhwKSkrdGhpcy55MCksYS54PWIqZypNYXRoLnNpbihwKSt0aGlzLngwLGEpKX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe2EueC09dGhpcy54MCxhLnktPXRoaXMueTA7dmFyIGIsYyxmLGcsaCxrPU1hdGguc3FydChhLngqYS54K2EueSphLnkpO2lmKHRoaXMuc3BoZXJlKXt2YXIgbD0yKk1hdGguYXRhbihrLyguNSp0aGlzLmEqdGhpcy5rMCkpO3JldHVybiBiPXRoaXMubG9uZzAsYz10aGlzLmxhdDAsZT49az8oYS54PWIsYS55PWMsYSk6KGM9TWF0aC5hc2luKE1hdGguY29zKGwpKnRoaXMuc2lubGF0MCthLnkqTWF0aC5zaW4obCkqdGhpcy5jb3NsYXQwL2spLGI9aihNYXRoLmFicyh0aGlzLmNvc2xhdDApPGU/dGhpcy5sYXQwPjA/dGhpcy5sb25nMCtNYXRoLmF0YW4yKGEueCwtMSphLnkpOnRoaXMubG9uZzArTWF0aC5hdGFuMihhLngsYS55KTp0aGlzLmxvbmcwK01hdGguYXRhbjIoYS54Kk1hdGguc2luKGwpLGsqdGhpcy5jb3NsYXQwKk1hdGguY29zKGwpLWEueSp0aGlzLnNpbmxhdDAqTWF0aC5zaW4obCkpKSxhLng9YixhLnk9YyxhKX1pZihNYXRoLmFicyh0aGlzLmNvc2xhdDApPD1lKXtpZihlPj1rKXJldHVybiBjPXRoaXMubGF0MCxiPXRoaXMubG9uZzAsYS54PWIsYS55PWMsYTthLngqPXRoaXMuY29uLGEueSo9dGhpcy5jb24sZj1rKnRoaXMuY29ucy8oMip0aGlzLmEqdGhpcy5rMCksYz10aGlzLmNvbippKHRoaXMuZSxmKSxiPXRoaXMuY29uKmoodGhpcy5jb24qdGhpcy5sb25nMCtNYXRoLmF0YW4yKGEueCwtMSphLnkpKX1lbHNlIGc9MipNYXRoLmF0YW4oayp0aGlzLmNvc1gwLygyKnRoaXMuYSp0aGlzLmswKnRoaXMubXMxKSksYj10aGlzLmxvbmcwLGU+PWs/aD10aGlzLlgwOihoPU1hdGguYXNpbihNYXRoLmNvcyhnKSp0aGlzLnNpblgwK2EueSpNYXRoLnNpbihnKSp0aGlzLmNvc1gwL2spLGI9aih0aGlzLmxvbmcwK01hdGguYXRhbjIoYS54Kk1hdGguc2luKGcpLGsqdGhpcy5jb3NYMCpNYXRoLmNvcyhnKS1hLnkqdGhpcy5zaW5YMCpNYXRoLnNpbihnKSkpKSxjPS0xKmkodGhpcy5lLE1hdGgudGFuKC41KihkK2gpKSk7cmV0dXJuIGEueD1iLGEueT1jLGF9LGMubmFtZXM9WyJzdGVyZSIsIlN0ZXJlb2dyYXBoaWNfU291dGhfUG9sZSIsIlBvbGFyIFN0ZXJlb2dyYXBoaWMgKHZhcmlhbnQgQikiXX0seyIuLi9jb21tb24vYWRqdXN0X2xvbiI6NSwiLi4vY29tbW9uL21zZm56IjoxNSwiLi4vY29tbW9uL3BoaTJ6IjoxNiwiLi4vY29tbW9uL3NpZ24iOjIxLCIuLi9jb21tb24vdHNmbnoiOjI0fV0sNjI6W2Z1bmN0aW9uKGEsYixjKXt2YXIgZD1hKCIuL2dhdXNzIiksZT1hKCIuLi9jb21tb24vYWRqdXN0X2xvbiIpO2MuaW5pdD1mdW5jdGlvbigpe2QuaW5pdC5hcHBseSh0aGlzKSx0aGlzLnJjJiYodGhpcy5zaW5jMD1NYXRoLnNpbih0aGlzLnBoaWMwKSx0aGlzLmNvc2MwPU1hdGguY29zKHRoaXMucGhpYzApLHRoaXMuUjI9Mip0aGlzLnJjLHRoaXMudGl0bGV8fCh0aGlzLnRpdGxlPSJPYmxpcXVlIFN0ZXJlb2dyYXBoaWMgQWx0ZXJuYXRpdmUiKSl9LGMuZm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYixjLGYsZztyZXR1cm4gYS54PWUoYS54LXRoaXMubG9uZzApLGQuZm9yd2FyZC5hcHBseSh0aGlzLFthXSksYj1NYXRoLnNpbihhLnkpLGM9TWF0aC5jb3MoYS55KSxmPU1hdGguY29zKGEueCksZz10aGlzLmswKnRoaXMuUjIvKDErdGhpcy5zaW5jMCpiK3RoaXMuY29zYzAqYypmKSxhLng9ZypjKk1hdGguc2luKGEueCksYS55PWcqKHRoaXMuY29zYzAqYi10aGlzLnNpbmMwKmMqZiksYS54PXRoaXMuYSphLngrdGhpcy54MCxhLnk9dGhpcy5hKmEueSt0aGlzLnkwLGF9LGMuaW52ZXJzZT1mdW5jdGlvbihhKXt2YXIgYixjLGYsZyxoO2lmKGEueD0oYS54LXRoaXMueDApL3RoaXMuYSxhLnk9KGEueS10aGlzLnkwKS90aGlzLmEsYS54Lz10aGlzLmswLGEueS89dGhpcy5rMCxoPU1hdGguc3FydChhLngqYS54K2EueSphLnkpKXt2YXIgaT0yKk1hdGguYXRhbjIoaCx0aGlzLlIyKTtiPU1hdGguc2luKGkpLGM9TWF0aC5jb3MoaSksZz1NYXRoLmFzaW4oYyp0aGlzLnNpbmMwK2EueSpiKnRoaXMuY29zYzAvaCksZj1NYXRoLmF0YW4yKGEueCpiLGgqdGhpcy5jb3NjMCpjLWEueSp0aGlzLnNpbmMwKmIpfWVsc2UgZz10aGlzLnBoaWMwLGY9MDtyZXR1cm4gYS54PWYsYS55PWcsZC5pbnZlcnNlLmFwcGx5KHRoaXMsW2FdKSxhLng9ZShhLngrdGhpcy5sb25nMCksYX0sYy5uYW1lcz1bIlN0ZXJlb2dyYXBoaWNfTm9ydGhfUG9sZSIsIk9ibGlxdWVfU3RlcmVvZ3JhcGhpYyIsIlBvbGFyX1N0ZXJlb2dyYXBoaWMiLCJzdGVyZWEiLCJPYmxpcXVlIFN0ZXJlb2dyYXBoaWMgQWx0ZXJuYXRpdmUiXX0seyIuLi9jb21tb24vYWRqdXN0X2xvbiI6NSwiLi9nYXVzcyI6NDZ9XSw2MzpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEoIi4uL2NvbW1vbi9lMGZuIiksZT1hKCIuLi9jb21tb24vZTFmbiIpLGY9YSgiLi4vY29tbW9uL2UyZm4iKSxnPWEoIi4uL2NvbW1vbi9lM2ZuIiksaD1hKCIuLi9jb21tb24vbWxmbiIpLGk9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxqPU1hdGguUEkvMixrPTFlLTEwLGw9YSgiLi4vY29tbW9uL3NpZ24iKSxtPWEoIi4uL2NvbW1vbi9hc2lueiIpO2MuaW5pdD1mdW5jdGlvbigpe3RoaXMuZTA9ZCh0aGlzLmVzKSx0aGlzLmUxPWUodGhpcy5lcyksdGhpcy5lMj1mKHRoaXMuZXMpLHRoaXMuZTM9Zyh0aGlzLmVzKSx0aGlzLm1sMD10aGlzLmEqaCh0aGlzLmUwLHRoaXMuZTEsdGhpcy5lMix0aGlzLmUzLHRoaXMubGF0MCl9LGMuZm9yd2FyZD1mdW5jdGlvbihhKXt2YXIgYixjLGQsZT1hLngsZj1hLnksZz1pKGUtdGhpcy5sb25nMCksaj1NYXRoLnNpbihmKSxrPU1hdGguY29zKGYpO2lmKHRoaXMuc3BoZXJlKXt2YXIgbD1rKk1hdGguc2luKGcpO2lmKE1hdGguYWJzKE1hdGguYWJzKGwpLTEpPDFlLTEwKXJldHVybiA5MztjPS41KnRoaXMuYSp0aGlzLmswKk1hdGgubG9nKCgxK2wpLygxLWwpKSxiPU1hdGguYWNvcyhrKk1hdGguY29zKGcpL01hdGguc3FydCgxLWwqbCkpLDA+ZiYmKGI9LWIpLGQ9dGhpcy5hKnRoaXMuazAqKGItdGhpcy5sYXQwKX1lbHNle3ZhciBtPWsqZyxuPU1hdGgucG93KG0sMiksbz10aGlzLmVwMipNYXRoLnBvdyhrLDIpLHA9TWF0aC50YW4oZikscT1NYXRoLnBvdyhwLDIpO2I9MS10aGlzLmVzKk1hdGgucG93KGosMik7dmFyIHI9dGhpcy5hL01hdGguc3FydChiKSxzPXRoaXMuYSpoKHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMsZik7Yz10aGlzLmswKnIqbSooMStuLzYqKDEtcStvK24vMjAqKDUtMTgqcStNYXRoLnBvdyhxLDIpKzcyKm8tNTgqdGhpcy5lcDIpKSkrdGhpcy54MCxkPXRoaXMuazAqKHMtdGhpcy5tbDArcipwKihuKiguNStuLzI0Kig1LXErOSpvKzQqTWF0aC5wb3cobywyKStuLzMwKig2MS01OCpxK01hdGgucG93KHEsMikrNjAwKm8tMzMwKnRoaXMuZXAyKSkpKSkrdGhpcy55MH1yZXR1cm4gYS54PWMsYS55PWQsYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoPTY7aWYodGhpcy5zcGhlcmUpe3ZhciBuPU1hdGguZXhwKGEueC8odGhpcy5hKnRoaXMuazApKSxvPS41KihuLTEvbikscD10aGlzLmxhdDArYS55Lyh0aGlzLmEqdGhpcy5rMCkscT1NYXRoLmNvcyhwKTtiPU1hdGguc3FydCgoMS1xKnEpLygxK28qbykpLGY9bShiKSwwPnAmJihmPS1mKSxnPTA9PT1vJiYwPT09cT90aGlzLmxvbmcwOmkoTWF0aC5hdGFuMihvLHEpK3RoaXMubG9uZzApfWVsc2V7dmFyIHI9YS54LXRoaXMueDAscz1hLnktdGhpcy55MDtmb3IoYj0odGhpcy5tbDArcy90aGlzLmswKS90aGlzLmEsYz1iLGU9MDshMCYmKGQ9KGIrdGhpcy5lMSpNYXRoLnNpbigyKmMpLXRoaXMuZTIqTWF0aC5zaW4oNCpjKSt0aGlzLmUzKk1hdGguc2luKDYqYykpL3RoaXMuZTAtYyxjKz1kLCEoTWF0aC5hYnMoZCk8PWspKTtlKyspaWYoZT49aClyZXR1cm4gOTU7aWYoTWF0aC5hYnMoYyk8ail7dmFyIHQ9TWF0aC5zaW4oYyksdT1NYXRoLmNvcyhjKSx2PU1hdGgudGFuKGMpLHc9dGhpcy5lcDIqTWF0aC5wb3codSwyKSx4PU1hdGgucG93KHcsMikseT1NYXRoLnBvdyh2LDIpLHo9TWF0aC5wb3coeSwyKTtiPTEtdGhpcy5lcypNYXRoLnBvdyh0LDIpO3ZhciBBPXRoaXMuYS9NYXRoLnNxcnQoYiksQj1BKigxLXRoaXMuZXMpL2IsQz1yLyhBKnRoaXMuazApLEQ9TWF0aC5wb3coQywyKTtmPWMtQSp2KkQvQiooLjUtRC8yNCooNSszKnkrMTAqdy00KngtOSp0aGlzLmVwMi1ELzMwKig2MSs5MCp5KzI5OCp3KzQ1KnotMjUyKnRoaXMuZXAyLTMqeCkpKSxnPWkodGhpcy5sb25nMCtDKigxLUQvNiooMSsyKnkrdy1ELzIwKig1LTIqdysyOCp5LTMqeCs4KnRoaXMuZXAyKzI0KnopKSkvdSl9ZWxzZSBmPWoqbChzKSxnPXRoaXMubG9uZzB9cmV0dXJuIGEueD1nLGEueT1mLGF9LGMubmFtZXM9WyJUcmFuc3ZlcnNlX01lcmNhdG9yIiwiVHJhbnN2ZXJzZSBNZXJjYXRvciIsInRtZXJjIl19LHsiLi4vY29tbW9uL2FkanVzdF9sb24iOjUsIi4uL2NvbW1vbi9hc2lueiI6NiwiLi4vY29tbW9uL2UwZm4iOjcsIi4uL2NvbW1vbi9lMWZuIjo4LCIuLi9jb21tb24vZTJmbiI6OSwiLi4vY29tbW9uL2UzZm4iOjEwLCIuLi9jb21tb24vbWxmbiI6MTQsIi4uL2NvbW1vbi9zaWduIjoyMX1dLDY0OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9LjAxNzQ1MzI5MjUxOTk0MzI5NSxlPWEoIi4vdG1lcmMiKTtjLmRlcGVuZHNPbj0idG1lcmMiLGMuaW5pdD1mdW5jdGlvbigpe3RoaXMuem9uZSYmKHRoaXMubGF0MD0wLHRoaXMubG9uZzA9KDYqTWF0aC5hYnModGhpcy56b25lKS0xODMpKmQsdGhpcy54MD01ZTUsdGhpcy55MD10aGlzLnV0bVNvdXRoPzFlNzowLHRoaXMuazA9Ljk5OTYsZS5pbml0LmFwcGx5KHRoaXMpLHRoaXMuZm9yd2FyZD1lLmZvcndhcmQsdGhpcy5pbnZlcnNlPWUuaW52ZXJzZSl9LGMubmFtZXM9WyJVbml2ZXJzYWwgVHJhbnN2ZXJzZSBNZXJjYXRvciBTeXN0ZW0iLCJ1dG0iXX0seyIuL3RtZXJjIjo2M31dLDY1OltmdW5jdGlvbihhLGIsYyl7dmFyIGQ9YSgiLi4vY29tbW9uL2FkanVzdF9sb24iKSxlPU1hdGguUEkvMixmPTFlLTEwLGc9YSgiLi4vY29tbW9uL2FzaW56Iik7Yy5pbml0PWZ1bmN0aW9uKCl7dGhpcy5SPXRoaXMuYX0sYy5mb3J3YXJkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsaD1hLngsaT1hLnksaj1kKGgtdGhpcy5sb25nMCk7TWF0aC5hYnMoaSk8PWYmJihiPXRoaXMueDArdGhpcy5SKmosYz10aGlzLnkwKTt2YXIgaz1nKDIqTWF0aC5hYnMoaS9NYXRoLlBJKSk7KE1hdGguYWJzKGopPD1mfHxNYXRoLmFicyhNYXRoLmFicyhpKS1lKTw9ZikmJihiPXRoaXMueDAsYz1pPj0wP3RoaXMueTArTWF0aC5QSSp0aGlzLlIqTWF0aC50YW4oLjUqayk6dGhpcy55MCtNYXRoLlBJKnRoaXMuUiotTWF0aC50YW4oLjUqaykpO3ZhciBsPS41Kk1hdGguYWJzKE1hdGguUEkvai1qL01hdGguUEkpLG09bCpsLG49TWF0aC5zaW4oayksbz1NYXRoLmNvcyhrKSxwPW8vKG4rby0xKSxxPXAqcCxyPXAqKDIvbi0xKSxzPXIqcix0PU1hdGguUEkqdGhpcy5SKihsKihwLXMpK01hdGguc3FydChtKihwLXMpKihwLXMpLShzK20pKihxLXMpKSkvKHMrbSk7MD5qJiYodD0tdCksYj10aGlzLngwK3Q7dmFyIHU9bStwO3JldHVybiB0PU1hdGguUEkqdGhpcy5SKihyKnUtbCpNYXRoLnNxcnQoKHMrbSkqKG0rMSktdSp1KSkvKHMrbSksYz1pPj0wP3RoaXMueTArdDp0aGlzLnkwLXQsYS54PWIsYS55PWMsYX0sYy5pbnZlcnNlPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZSxnLGgsaSxqLGssbCxtLG4sbyxwO3JldHVybiBhLngtPXRoaXMueDAsYS55LT10aGlzLnkwLG49TWF0aC5QSSp0aGlzLlIsZT1hLngvbixnPWEueS9uLGg9ZSplK2cqZyxpPS1NYXRoLmFicyhnKSooMStoKSwNCmo9aS0yKmcqZytlKmUsaz0tMippKzErMipnKmcraCpoLHA9ZypnL2srKDIqaipqKmovay9rL2stOSppKmovay9rKS8yNyxsPShpLWoqai8zL2spL2ssbT0yKk1hdGguc3FydCgtbC8zKSxuPTMqcC9sL20sTWF0aC5hYnMobik+MSYmKG49bj49MD8xOi0xKSxvPU1hdGguYWNvcyhuKS8zLGM9YS55Pj0wPygtbSpNYXRoLmNvcyhvK01hdGguUEkvMyktai8zL2spKk1hdGguUEk6LSgtbSpNYXRoLmNvcyhvK01hdGguUEkvMyktai8zL2spKk1hdGguUEksYj1NYXRoLmFicyhlKTxmP3RoaXMubG9uZzA6ZCh0aGlzLmxvbmcwK01hdGguUEkqKGgtMStNYXRoLnNxcnQoMSsyKihlKmUtZypnKStoKmgpKS8yL2UpLGEueD1iLGEueT1jLGF9LGMubmFtZXM9WyJWYW5fZGVyX0dyaW50ZW5fSSIsIlZhbkRlckdyaW50ZW4iLCJ2YW5kZyJdfSx7Ii4uL2NvbW1vbi9hZGp1c3RfbG9uIjo1LCIuLi9jb21tb24vYXNpbnoiOjZ9XSw2NjpbZnVuY3Rpb24oYSxiLGMpe3ZhciBkPS4wMTc0NTMyOTI1MTk5NDMyOTUsZT01Ny4yOTU3Nzk1MTMwODIzMixmPTEsZz0yLGg9YSgiLi9kYXR1bV90cmFuc2Zvcm0iKSxpPWEoIi4vYWRqdXN0X2F4aXMiKSxqPWEoIi4vUHJvaiIpLGs9YSgiLi9jb21tb24vdG9Qb2ludCIpO2IuZXhwb3J0cz1mdW5jdGlvbiBsKGEsYixjKXtmdW5jdGlvbiBtKGEsYil7cmV0dXJuKGEuZGF0dW0uZGF0dW1fdHlwZT09PWZ8fGEuZGF0dW0uZGF0dW1fdHlwZT09PWcpJiYiV0dTODQiIT09Yi5kYXR1bUNvZGV9dmFyIG47cmV0dXJuIEFycmF5LmlzQXJyYXkoYykmJihjPWsoYykpLGEuZGF0dW0mJmIuZGF0dW0mJihtKGEsYil8fG0oYixhKSkmJihuPW5ldyBqKCJXR1M4NCIpLGwoYSxuLGMpLGE9biksImVudSIhPT1hLmF4aXMmJmkoYSwhMSxjKSwibG9uZ2xhdCI9PT1hLnByb2pOYW1lPyhjLngqPWQsYy55Kj1kKTooYS50b19tZXRlciYmKGMueCo9YS50b19tZXRlcixjLnkqPWEudG9fbWV0ZXIpLGEuaW52ZXJzZShjKSksYS5mcm9tX2dyZWVud2ljaCYmKGMueCs9YS5mcm9tX2dyZWVud2ljaCksYz1oKGEuZGF0dW0sYi5kYXR1bSxjKSxiLmZyb21fZ3JlZW53aWNoJiYoYy54LT1iLmZyb21fZ3JlZW53aWNoKSwibG9uZ2xhdCI9PT1iLnByb2pOYW1lPyhjLngqPWUsYy55Kj1lKTooYi5mb3J3YXJkKGMpLGIudG9fbWV0ZXImJihjLngvPWIudG9fbWV0ZXIsYy55Lz1iLnRvX21ldGVyKSksImVudSIhPT1iLmF4aXMmJmkoYiwhMCxjKSxjfX0seyIuL1Byb2oiOjIsIi4vYWRqdXN0X2F4aXMiOjMsIi4vY29tbW9uL3RvUG9pbnQiOjIzLCIuL2RhdHVtX3RyYW5zZm9ybSI6MzF9XSw2NzpbZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSxiLGMpe2FbYl09Yy5tYXAoZnVuY3Rpb24oYSl7dmFyIGI9e307cmV0dXJuIGUoYSxiKSxifSkucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIGooYSxiKX0se30pfWZ1bmN0aW9uIGUoYSxiKXt2YXIgYztyZXR1cm4gQXJyYXkuaXNBcnJheShhKT8oYz1hLnNoaWZ0KCksIlBBUkFNRVRFUiI9PT1jJiYoYz1hLnNoaWZ0KCkpLDE9PT1hLmxlbmd0aD9BcnJheS5pc0FycmF5KGFbMF0pPyhiW2NdPXt9LGUoYVswXSxiW2NdKSk6YltjXT1hWzBdOmEubGVuZ3RoPyJUT1dHUzg0Ij09PWM/YltjXT1hOihiW2NdPXt9LFsiVU5JVCIsIlBSSU1FTSIsIlZFUlRfREFUVU0iXS5pbmRleE9mKGMpPi0xPyhiW2NdPXtuYW1lOmFbMF0udG9Mb3dlckNhc2UoKSxjb252ZXJ0OmFbMV19LDM9PT1hLmxlbmd0aCYmKGJbY10uYXV0aD1hWzJdKSk6IlNQSEVST0lEIj09PWM/KGJbY109e25hbWU6YVswXSxhOmFbMV0scmY6YVsyXX0sND09PWEubGVuZ3RoJiYoYltjXS5hdXRoPWFbM10pKTpbIkdFT0dDUyIsIkdFT0NDUyIsIkRBVFVNIiwiVkVSVF9DUyIsIkNPTVBEX0NTIiwiTE9DQUxfQ1MiLCJGSVRURURfQ1MiLCJMT0NBTF9EQVRVTSJdLmluZGV4T2YoYyk+LTE/KGFbMF09WyJuYW1lIixhWzBdXSxkKGIsYyxhKSk6YS5ldmVyeShmdW5jdGlvbihhKXtyZXR1cm4gQXJyYXkuaXNBcnJheShhKX0pP2QoYixjLGEpOmUoYSxiW2NdKSk6YltjXT0hMCx2b2lkIDApOnZvaWQoYlthXT0hMCl9ZnVuY3Rpb24gZihhLGIpe3ZhciBjPWJbMF0sZD1iWzFdOyEoYyBpbiBhKSYmZCBpbiBhJiYoYVtjXT1hW2RdLDM9PT1iLmxlbmd0aCYmKGFbY109YlsyXShhW2NdKSkpfWZ1bmN0aW9uIGcoYSl7cmV0dXJuIGEqaX1mdW5jdGlvbiBoKGEpe2Z1bmN0aW9uIGIoYil7dmFyIGM9YS50b19tZXRlcnx8MTtyZXR1cm4gcGFyc2VGbG9hdChiLDEwKSpjfSJHRU9HQ1MiPT09YS50eXBlP2EucHJvak5hbWU9ImxvbmdsYXQiOiJMT0NBTF9DUyI9PT1hLnR5cGU/KGEucHJvak5hbWU9ImlkZW50aXR5IixhLmxvY2FsPSEwKToib2JqZWN0Ij09dHlwZW9mIGEuUFJPSkVDVElPTj9hLnByb2pOYW1lPU9iamVjdC5rZXlzKGEuUFJPSkVDVElPTilbMF06YS5wcm9qTmFtZT1hLlBST0pFQ1RJT04sYS5VTklUJiYoYS51bml0cz1hLlVOSVQubmFtZS50b0xvd2VyQ2FzZSgpLCJtZXRyZSI9PT1hLnVuaXRzJiYoYS51bml0cz0ibWV0ZXIiKSxhLlVOSVQuY29udmVydCYmKCJHRU9HQ1MiPT09YS50eXBlP2EuREFUVU0mJmEuREFUVU0uU1BIRVJPSUQmJihhLnRvX21ldGVyPXBhcnNlRmxvYXQoYS5VTklULmNvbnZlcnQsMTApKmEuREFUVU0uU1BIRVJPSUQuYSk6YS50b19tZXRlcj1wYXJzZUZsb2F0KGEuVU5JVC5jb252ZXJ0LDEwKSkpLGEuR0VPR0NTJiYoYS5HRU9HQ1MuREFUVU0/YS5kYXR1bUNvZGU9YS5HRU9HQ1MuREFUVU0ubmFtZS50b0xvd2VyQ2FzZSgpOmEuZGF0dW1Db2RlPWEuR0VPR0NTLm5hbWUudG9Mb3dlckNhc2UoKSwiZF8iPT09YS5kYXR1bUNvZGUuc2xpY2UoMCwyKSYmKGEuZGF0dW1Db2RlPWEuZGF0dW1Db2RlLnNsaWNlKDIpKSwibmV3X3plYWxhbmRfZ2VvZGV0aWNfZGF0dW1fMTk0OSIhPT1hLmRhdHVtQ29kZSYmIm5ld196ZWFsYW5kXzE5NDkiIT09YS5kYXR1bUNvZGV8fChhLmRhdHVtQ29kZT0ibnpnZDQ5IiksIndnc18xOTg0Ij09PWEuZGF0dW1Db2RlJiYoIk1lcmNhdG9yX0F1eGlsaWFyeV9TcGhlcmUiPT09YS5QUk9KRUNUSU9OJiYoYS5zcGhlcmU9ITApLGEuZGF0dW1Db2RlPSJ3Z3M4NCIpLCJfZmVycm8iPT09YS5kYXR1bUNvZGUuc2xpY2UoLTYpJiYoYS5kYXR1bUNvZGU9YS5kYXR1bUNvZGUuc2xpY2UoMCwtNikpLCJfamFrYXJ0YSI9PT1hLmRhdHVtQ29kZS5zbGljZSgtOCkmJihhLmRhdHVtQ29kZT1hLmRhdHVtQ29kZS5zbGljZSgwLC04KSksfmEuZGF0dW1Db2RlLmluZGV4T2YoImJlbGdlIikmJihhLmRhdHVtQ29kZT0icm5iNzIiKSxhLkdFT0dDUy5EQVRVTSYmYS5HRU9HQ1MuREFUVU0uU1BIRVJPSUQmJihhLmVsbHBzPWEuR0VPR0NTLkRBVFVNLlNQSEVST0lELm5hbWUucmVwbGFjZSgiXzE5IiwiIikucmVwbGFjZSgvW0NjXWxhcmtlXF8xOC8sImNscmsiKSwiaW50ZXJuYXRpb25hbCI9PT1hLmVsbHBzLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCwxMykmJihhLmVsbHBzPSJpbnRsIiksYS5hPWEuR0VPR0NTLkRBVFVNLlNQSEVST0lELmEsYS5yZj1wYXJzZUZsb2F0KGEuR0VPR0NTLkRBVFVNLlNQSEVST0lELnJmLDEwKSksfmEuZGF0dW1Db2RlLmluZGV4T2YoIm9zZ2JfMTkzNiIpJiYoYS5kYXR1bUNvZGU9Im9zZ2IzNiIpKSxhLmImJiFpc0Zpbml0ZShhLmIpJiYoYS5iPWEuYSk7dmFyIGM9ZnVuY3Rpb24oYil7cmV0dXJuIGYoYSxiKX0sZD1bWyJzdGFuZGFyZF9wYXJhbGxlbF8xIiwiU3RhbmRhcmRfUGFyYWxsZWxfMSJdLFsic3RhbmRhcmRfcGFyYWxsZWxfMiIsIlN0YW5kYXJkX1BhcmFsbGVsXzIiXSxbImZhbHNlX2Vhc3RpbmciLCJGYWxzZV9FYXN0aW5nIl0sWyJmYWxzZV9ub3J0aGluZyIsIkZhbHNlX05vcnRoaW5nIl0sWyJjZW50cmFsX21lcmlkaWFuIiwiQ2VudHJhbF9NZXJpZGlhbiJdLFsibGF0aXR1ZGVfb2Zfb3JpZ2luIiwiTGF0aXR1ZGVfT2ZfT3JpZ2luIl0sWyJsYXRpdHVkZV9vZl9vcmlnaW4iLCJDZW50cmFsX1BhcmFsbGVsIl0sWyJzY2FsZV9mYWN0b3IiLCJTY2FsZV9GYWN0b3IiXSxbImswIiwic2NhbGVfZmFjdG9yIl0sWyJsYXRpdHVkZV9vZl9jZW50ZXIiLCJMYXRpdHVkZV9vZl9jZW50ZXIiXSxbImxhdDAiLCJsYXRpdHVkZV9vZl9jZW50ZXIiLGddLFsibG9uZ2l0dWRlX29mX2NlbnRlciIsIkxvbmdpdHVkZV9PZl9DZW50ZXIiXSxbImxvbmdjIiwibG9uZ2l0dWRlX29mX2NlbnRlciIsZ10sWyJ4MCIsImZhbHNlX2Vhc3RpbmciLGJdLFsieTAiLCJmYWxzZV9ub3J0aGluZyIsYl0sWyJsb25nMCIsImNlbnRyYWxfbWVyaWRpYW4iLGddLFsibGF0MCIsImxhdGl0dWRlX29mX29yaWdpbiIsZ10sWyJsYXQwIiwic3RhbmRhcmRfcGFyYWxsZWxfMSIsZ10sWyJsYXQxIiwic3RhbmRhcmRfcGFyYWxsZWxfMSIsZ10sWyJsYXQyIiwic3RhbmRhcmRfcGFyYWxsZWxfMiIsZ10sWyJhbHBoYSIsImF6aW11dGgiLGddLFsic3JzQ29kZSIsIm5hbWUiXV07ZC5mb3JFYWNoKGMpLGEubG9uZzB8fCFhLmxvbmdjfHwiQWxiZXJzX0NvbmljX0VxdWFsX0FyZWEiIT09YS5wcm9qTmFtZSYmIkxhbWJlcnRfQXppbXV0aGFsX0VxdWFsX0FyZWEiIT09YS5wcm9qTmFtZXx8KGEubG9uZzA9YS5sb25nYyksYS5sYXRfdHN8fCFhLmxhdDF8fCJTdGVyZW9ncmFwaGljX1NvdXRoX1BvbGUiIT09YS5wcm9qTmFtZSYmIlBvbGFyIFN0ZXJlb2dyYXBoaWMgKHZhcmlhbnQgQikiIT09YS5wcm9qTmFtZXx8KGEubGF0MD1nKGEubGF0MT4wPzkwOi05MCksYS5sYXRfdHM9YS5sYXQxKX12YXIgaT0uMDE3NDUzMjkyNTE5OTQzMjk1LGo9YSgiLi9leHRlbmQiKTtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1KU09OLnBhcnNlKCgiLCIrYSkucmVwbGFjZSgvXHMqXCxccyooW0EtWl8wLTldKz8pKFxbKS9nLCcsWyIkMSIsJykuc2xpY2UoMSkucmVwbGFjZSgvXHMqXCxccyooW0EtWl8wLTldKz8pXF0vZywnLCIkMSJdJykucmVwbGFjZSgvLFxbIlZFUlRDUyIuKy8sIiIpKSxkPWMuc2hpZnQoKSxmPWMuc2hpZnQoKTtjLnVuc2hpZnQoWyJuYW1lIixmXSksYy51bnNoaWZ0KFsidHlwZSIsZF0pLGMudW5zaGlmdCgib3V0cHV0Iik7dmFyIGc9e307cmV0dXJuIGUoYyxnKSxoKGcub3V0cHV0KSxqKGIsZy5vdXRwdXQpfX0seyIuL2V4dGVuZCI6MzR9XSw2ODpbZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGQoYSl7cmV0dXJuIGEqKE1hdGguUEkvMTgwKX1mdW5jdGlvbiBlKGEpe3JldHVybiAxODAqKGEvTWF0aC5QSSl9ZnVuY3Rpb24gZihhKXt2YXIgYixjLGUsZixnLGksaixrLGwsbT1hLmxhdCxuPWEubG9uLG89NjM3ODEzNyxwPS4wMDY2OTQzOCxxPS45OTk2LHI9ZChtKSxzPWQobik7bD1NYXRoLmZsb29yKChuKzE4MCkvNikrMSwxODA9PT1uJiYobD02MCksbT49NTYmJjY0Pm0mJm4+PTMmJjEyPm4mJihsPTMyKSxtPj03MiYmODQ+bSYmKG4+PTAmJjk+bj9sPTMxOm4+PTkmJjIxPm4/bD0zMzpuPj0yMSYmMzM+bj9sPTM1Om4+PTMzJiY0Mj5uJiYobD0zNykpLGI9NioobC0xKS0xODArMyxrPWQoYiksYz1wLygxLXApLGU9by9NYXRoLnNxcnQoMS1wKk1hdGguc2luKHIpKk1hdGguc2luKHIpKSxmPU1hdGgudGFuKHIpKk1hdGgudGFuKHIpLGc9YypNYXRoLmNvcyhyKSpNYXRoLmNvcyhyKSxpPU1hdGguY29zKHIpKihzLWspLGo9byooKDEtcC80LTMqcCpwLzY0LTUqcCpwKnAvMjU2KSpyLSgzKnAvOCszKnAqcC8zMis0NSpwKnAqcC8xMDI0KSpNYXRoLnNpbigyKnIpKygxNSpwKnAvMjU2KzQ1KnAqcCpwLzEwMjQpKk1hdGguc2luKDQqciktMzUqcCpwKnAvMzA3MipNYXRoLnNpbig2KnIpKTt2YXIgdD1xKmUqKGkrKDEtZitnKSppKmkqaS82Kyg1LTE4KmYrZipmKzcyKmctNTgqYykqaSppKmkqaSppLzEyMCkrNWU1LHU9cSooaitlKk1hdGgudGFuKHIpKihpKmkvMisoNS1mKzkqZys0KmcqZykqaSppKmkqaS8yNCsoNjEtNTgqZitmKmYrNjAwKmctMzMwKmMpKmkqaSppKmkqaSppLzcyMCkpO3JldHVybiAwPm0mJih1Kz0xZTcpLHtub3J0aGluZzpNYXRoLnJvdW5kKHUpLGVhc3Rpbmc6TWF0aC5yb3VuZCh0KSx6b25lTnVtYmVyOmwsem9uZUxldHRlcjpoKG0pfX1mdW5jdGlvbiBnKGEpe3ZhciBiPWEubm9ydGhpbmcsYz1hLmVhc3RpbmcsZD1hLnpvbmVMZXR0ZXIsZj1hLnpvbmVOdW1iZXI7aWYoMD5mfHxmPjYwKXJldHVybiBudWxsO3ZhciBoLGksaixrLGwsbSxuLG8scCxxLHI9Ljk5OTYscz02Mzc4MTM3LHQ9LjAwNjY5NDM4LHU9KDEtTWF0aC5zcXJ0KDEtdCkpLygxK01hdGguc3FydCgxLXQpKSx2PWMtNWU1LHc9YjsiTiI+ZCYmKHctPTFlNyksbz02KihmLTEpLTE4MCszLGg9dC8oMS10KSxuPXcvcixwPW4vKHMqKDEtdC80LTMqdCp0LzY0LTUqdCp0KnQvMjU2KSkscT1wKygzKnUvMi0yNyp1KnUqdS8zMikqTWF0aC5zaW4oMipwKSsoMjEqdSp1LzE2LTU1KnUqdSp1KnUvMzIpKk1hdGguc2luKDQqcCkrMTUxKnUqdSp1Lzk2Kk1hdGguc2luKDYqcCksaT1zL01hdGguc3FydCgxLXQqTWF0aC5zaW4ocSkqTWF0aC5zaW4ocSkpLGo9TWF0aC50YW4ocSkqTWF0aC50YW4ocSksaz1oKk1hdGguY29zKHEpKk1hdGguY29zKHEpLGw9cyooMS10KS9NYXRoLnBvdygxLXQqTWF0aC5zaW4ocSkqTWF0aC5zaW4ocSksMS41KSxtPXYvKGkqcik7dmFyIHg9cS1pKk1hdGgudGFuKHEpL2wqKG0qbS8yLSg1KzMqaisxMCprLTQqayprLTkqaCkqbSptKm0qbS8yNCsoNjErOTAqaisyOTgqays0NSpqKmotMjUyKmgtMyprKmspKm0qbSptKm0qbSptLzcyMCk7eD1lKHgpO3ZhciB5PShtLSgxKzIqaitrKSptKm0qbS82Kyg1LTIqaysyOCpqLTMqayprKzgqaCsyNCpqKmopKm0qbSptKm0qbS8xMjApL01hdGguY29zKHEpO3k9bytlKHkpO3ZhciB6O2lmKGEuYWNjdXJhY3kpe3ZhciBBPWcoe25vcnRoaW5nOmEubm9ydGhpbmcrYS5hY2N1cmFjeSxlYXN0aW5nOmEuZWFzdGluZythLmFjY3VyYWN5LHpvbmVMZXR0ZXI6YS56b25lTGV0dGVyLHpvbmVOdW1iZXI6YS56b25lTnVtYmVyfSk7ej17dG9wOkEubGF0LHJpZ2h0OkEubG9uLGJvdHRvbTp4LGxlZnQ6eX19ZWxzZSB6PXtsYXQ6eCxsb246eX07cmV0dXJuIHp9ZnVuY3Rpb24gaChhKXt2YXIgYj0iWiI7cmV0dXJuIDg0Pj1hJiZhPj03Mj9iPSJYIjo3Mj5hJiZhPj02ND9iPSJXIjo2ND5hJiZhPj01Nj9iPSJWIjo1Nj5hJiZhPj00OD9iPSJVIjo0OD5hJiZhPj00MD9iPSJUIjo0MD5hJiZhPj0zMj9iPSJTIjozMj5hJiZhPj0yND9iPSJSIjoyND5hJiZhPj0xNj9iPSJRIjoxNj5hJiZhPj04P2I9IlAiOjg+YSYmYT49MD9iPSJOIjowPmEmJmE+PS04P2I9Ik0iOi04PmEmJmE+PS0xNj9iPSJMIjotMTY+YSYmYT49LTI0P2I9IksiOi0yND5hJiZhPj0tMzI/Yj0iSiI6LTMyPmEmJmE+PS00MD9iPSJIIjotNDA+YSYmYT49LTQ4P2I9IkciOi00OD5hJiZhPj0tNTY/Yj0iRiI6LTU2PmEmJmE+PS02ND9iPSJFIjotNjQ+YSYmYT49LTcyP2I9IkQiOi03Mj5hJiZhPj0tODAmJihiPSJDIiksYn1mdW5jdGlvbiBpKGEsYil7dmFyIGM9IjAwMDAwIithLmVhc3RpbmcsZD0iMDAwMDAiK2Eubm9ydGhpbmc7cmV0dXJuIGEuem9uZU51bWJlcithLnpvbmVMZXR0ZXIraihhLmVhc3RpbmcsYS5ub3J0aGluZyxhLnpvbmVOdW1iZXIpK2Muc3Vic3RyKGMubGVuZ3RoLTUsYikrZC5zdWJzdHIoZC5sZW5ndGgtNSxiKX1mdW5jdGlvbiBqKGEsYixjKXt2YXIgZD1rKGMpLGU9TWF0aC5mbG9vcihhLzFlNSksZj1NYXRoLmZsb29yKGIvMWU1KSUyMDtyZXR1cm4gbChlLGYsZCl9ZnVuY3Rpb24gayhhKXt2YXIgYj1hJXE7cmV0dXJuIDA9PT1iJiYoYj1xKSxifWZ1bmN0aW9uIGwoYSxiLGMpe3ZhciBkPWMtMSxlPXIuY2hhckNvZGVBdChkKSxmPXMuY2hhckNvZGVBdChkKSxnPWUrYS0xLGg9ZitiLGk9ITE7Zz54JiYoZz1nLXgrdC0xLGk9ITApLChnPT09dXx8dT5lJiZnPnV8fChnPnV8fHU+ZSkmJmkpJiZnKyssKGc9PT12fHx2PmUmJmc+dnx8KGc+dnx8dj5lKSYmaSkmJihnKyssZz09PXUmJmcrKyksZz54JiYoZz1nLXgrdC0xKSxoPnc/KGg9aC13K3QtMSxpPSEwKTppPSExLChoPT09dXx8dT5mJiZoPnV8fChoPnV8fHU+ZikmJmkpJiZoKyssKGg9PT12fHx2PmYmJmg+dnx8KGg+dnx8dj5mKSYmaSkmJihoKyssaD09PXUmJmgrKyksaD53JiYoaD1oLXcrdC0xKTt2YXIgaj1TdHJpbmcuZnJvbUNoYXJDb2RlKGcpK1N0cmluZy5mcm9tQ2hhckNvZGUoaCk7cmV0dXJuIGp9ZnVuY3Rpb24gbShhKXtpZihhJiYwPT09YS5sZW5ndGgpdGhyb3ciTUdSU1BvaW50IGNvdmVydGluZyBmcm9tIG5vdGhpbmciO2Zvcih2YXIgYixjPWEubGVuZ3RoLGQ9bnVsbCxlPSIiLGY9MDshL1tBLVpdLy50ZXN0KGI9YS5jaGFyQXQoZikpOyl7aWYoZj49Mil0aHJvdyJNR1JTUG9pbnQgYmFkIGNvbnZlcnNpb24gZnJvbTogIithO2UrPWIsZisrfXZhciBnPXBhcnNlSW50KGUsMTApO2lmKDA9PT1mfHxmKzM+Yyl0aHJvdyJNR1JTUG9pbnQgYmFkIGNvbnZlcnNpb24gZnJvbTogIithO3ZhciBoPWEuY2hhckF0KGYrKyk7aWYoIkEiPj1ofHwiQiI9PT1ofHwiWSI9PT1ofHxoPj0iWiJ8fCJJIj09PWh8fCJPIj09PWgpdGhyb3ciTUdSU1BvaW50IHpvbmUgbGV0dGVyICIraCsiIG5vdCBoYW5kbGVkOiAiK2E7ZD1hLnN1YnN0cmluZyhmLGYrPTIpO2Zvcih2YXIgaT1rKGcpLGo9bihkLmNoYXJBdCgwKSxpKSxsPW8oZC5jaGFyQXQoMSksaSk7bDxwKGgpOylsKz0yZTY7dmFyIG09Yy1mO2lmKG0lMiE9PTApdGhyb3ciTUdSU1BvaW50IGhhcyB0byBoYXZlIGFuIGV2ZW4gbnVtYmVyIFxub2YgZGlnaXRzIGFmdGVyIHRoZSB6b25lIGxldHRlciBhbmQgdHdvIDEwMGttIGxldHRlcnMgLSBmcm9udCBcbmhhbGYgZm9yIGVhc3RpbmcgbWV0ZXJzLCBzZWNvbmQgaGFsZiBmb3IgXG5ub3J0aGluZyBtZXRlcnMiK2E7dmFyIHEscixzLHQsdSx2PW0vMix3PTAseD0wO3JldHVybiB2PjAmJihxPTFlNS9NYXRoLnBvdygxMCx2KSxyPWEuc3Vic3RyaW5nKGYsZit2KSx3PXBhcnNlRmxvYXQocikqcSxzPWEuc3Vic3RyaW5nKGYrdikseD1wYXJzZUZsb2F0KHMpKnEpLHQ9dytqLHU9eCtsLHtlYXN0aW5nOnQsbm9ydGhpbmc6dSx6b25lTGV0dGVyOmgsem9uZU51bWJlcjpnLGFjY3VyYWN5OnF9fWZ1bmN0aW9uIG4oYSxiKXtmb3IodmFyIGM9ci5jaGFyQ29kZUF0KGItMSksZD0xZTUsZT0hMTtjIT09YS5jaGFyQ29kZUF0KDApOyl7aWYoYysrLGM9PT11JiZjKyssYz09PXYmJmMrKyxjPngpe2lmKGUpdGhyb3ciQmFkIGNoYXJhY3RlcjogIithO2M9dCxlPSEwfWQrPTFlNX1yZXR1cm4gZH1mdW5jdGlvbiBvKGEsYil7aWYoYT4iViIpdGhyb3ciTUdSU1BvaW50IGdpdmVuIGludmFsaWQgTm9ydGhpbmcgIithO2Zvcih2YXIgYz1zLmNoYXJDb2RlQXQoYi0xKSxkPTAsZT0hMTtjIT09YS5jaGFyQ29kZUF0KDApOyl7aWYoYysrLGM9PT11JiZjKyssYz09PXYmJmMrKyxjPncpe2lmKGUpdGhyb3ciQmFkIGNoYXJhY3RlcjogIithO2M9dCxlPSEwfWQrPTFlNX1yZXR1cm4gZH1mdW5jdGlvbiBwKGEpe3ZhciBiO3N3aXRjaChhKXtjYXNlIkMiOmI9MTFlNTticmVhaztjYXNlIkQiOmI9MmU2O2JyZWFrO2Nhc2UiRSI6Yj0yOGU1O2JyZWFrO2Nhc2UiRiI6Yj0zN2U1O2JyZWFrO2Nhc2UiRyI6Yj00NmU1O2JyZWFrO2Nhc2UiSCI6Yj01NWU1O2JyZWFrO2Nhc2UiSiI6Yj02NGU1O2JyZWFrO2Nhc2UiSyI6Yj03M2U1O2JyZWFrO2Nhc2UiTCI6Yj04MmU1O2JyZWFrO2Nhc2UiTSI6Yj05MWU1O2JyZWFrO2Nhc2UiTiI6Yj0wO2JyZWFrO2Nhc2UiUCI6Yj04ZTU7YnJlYWs7Y2FzZSJRIjpiPTE3ZTU7YnJlYWs7Y2FzZSJSIjpiPTI2ZTU7YnJlYWs7Y2FzZSJTIjpiPTM1ZTU7YnJlYWs7Y2FzZSJUIjpiPTQ0ZTU7YnJlYWs7Y2FzZSJVIjpiPTUzZTU7YnJlYWs7Y2FzZSJWIjpiPTYyZTU7YnJlYWs7Y2FzZSJXIjpiPTdlNjticmVhaztjYXNlIlgiOmI9NzllNTticmVhaztkZWZhdWx0OmI9LTF9aWYoYj49MClyZXR1cm4gYjt0aHJvdyJJbnZhbGlkIHpvbmUgbGV0dGVyOiAiK2F9dmFyIHE9NixyPSJBSlNBSlMiLHM9IkFGQUZBRiIsdD02NSx1PTczLHY9Nzksdz04Nix4PTkwO2MuZm9yd2FyZD1mdW5jdGlvbihhLGIpe3JldHVybiBiPWJ8fDUsaShmKHtsYXQ6YVsxXSxsb246YVswXX0pLGIpfSxjLmludmVyc2U9ZnVuY3Rpb24oYSl7dmFyIGI9ZyhtKGEudG9VcHBlckNhc2UoKSkpO3JldHVybiBiLmxhdCYmYi5sb24/W2IubG9uLGIubGF0LGIubG9uLGIubGF0XTpbYi5sZWZ0LGIuYm90dG9tLGIucmlnaHQsYi50b3BdfSxjLnRvUG9pbnQ9ZnVuY3Rpb24oYSl7dmFyIGI9ZyhtKGEudG9VcHBlckNhc2UoKSkpO3JldHVybiBiLmxhdCYmYi5sb24/W2IubG9uLGIubGF0XTpbKGIubGVmdCtiLnJpZ2h0KS8yLChiLnRvcCtiLmJvdHRvbSkvMl19fSx7fV0sNjk6W2Z1bmN0aW9uKGEsYixjKXtiLmV4cG9ydHM9e25hbWU6InByb2o0Iix2ZXJzaW9uOiIyLjMuMTUiLGRlc2NyaXB0aW9uOiJQcm9qNGpzIGlzIGEgSmF2YVNjcmlwdCBsaWJyYXJ5IHRvIHRyYW5zZm9ybSBwb2ludCBjb29yZGluYXRlcyBmcm9tIG9uZSBjb29yZGluYXRlIHN5c3RlbSB0byBhbm90aGVyLCBpbmNsdWRpbmcgZGF0dW0gdHJhbnNmb3JtYXRpb25zLiIsbWFpbjoibGliL2luZGV4LmpzIixkaXJlY3Rvcmllczp7dGVzdDoidGVzdCIsZG9jOiJkb2NzIn0sc2NyaXB0czp7dGVzdDoiLi9ub2RlX21vZHVsZXMvaXN0YW5idWwvbGliL2NsaS5qcyB0ZXN0IC4vbm9kZV9tb2R1bGVzL21vY2hhL2Jpbi9fbW9jaGEgdGVzdC90ZXN0LmpzIn0scmVwb3NpdG9yeTp7dHlwZToiZ2l0Iix1cmw6ImdpdDovL2dpdGh1Yi5jb20vcHJvajRqcy9wcm9qNGpzLmdpdCJ9LGF1dGhvcjoiIixsaWNlbnNlOiJNSVQiLGphbTp7bWFpbjoiZGlzdC9wcm9qNC5qcyIsaW5jbHVkZTpbImRpc3QvcHJvajQuanMiLCJSRUFETUUubWQiLCJBVVRIT1JTIiwiTElDRU5TRS5tZCJdfSxkZXZEZXBlbmRlbmNpZXM6eyJncnVudC1jbGkiOiJ+MC4xLjEzIixncnVudDoifjAuNC4yIiwiZ3J1bnQtY29udHJpYi1jb25uZWN0IjoifjAuNi4wIiwiZ3J1bnQtY29udHJpYi1qc2hpbnQiOiJ+MC44LjAiLGNoYWk6In4xLjguMSIsbW9jaGE6In4xLjE3LjEiLCJncnVudC1tb2NoYS1waGFudG9tanMiOiJ+MC40LjAiLGJyb3dzZXJpZnk6In4xMi4wLjEiLCJncnVudC1icm93c2VyaWZ5IjoifjQuMC4xIiwiZ3J1bnQtY29udHJpYi11Z2xpZnkiOiJ+MC4xMS4xIixjdXJsOiJnaXQ6Ly9naXRodWIuY29tL2N1am9qcy9jdXJsLmdpdCIsaXN0YW5idWw6In4wLjIuNCIsdGluOiJ+MC40LjAifSxkZXBlbmRlbmNpZXM6e21ncnM6In4wLjAuMiJ9fX0se31dfSx7fSxbMzZdKSgzNil9KTs="></script>
|
|
<link href="data:text/css,%2Eloading%20%7Bmargin%2Dtop%3A%2010em%3Btext%2Dalign%3A%20center%3Bcolor%3A%20gray%3B%7D%23play%2Dcontrols%20%7Bposition%3A%20absolute%3Bbottom%3A%200%3Btext%2Dalign%3A%20center%3Bmin%2Dwidth%3A%20310px%3Bmax%2Dwidth%3A%20800px%3Bmargin%3A%200%20auto%3Bpadding%3A%205px%200%201em%200%3B%7D%23play%2Dcontrols%20%2A%20%7Bdisplay%3A%20inline%2Dblock%3Bvertical%2Dalign%3A%20middle%3B%7D%23play%2Dpause%2Dbutton%20%7Bcolor%3A%20%23666666%3Bwidth%3A%2030px%3Bheight%3A%2030px%3Btext%2Dalign%3A%20center%3Bfont%2Dsize%3A%2015px%3Bcursor%3A%20pointer%3Bborder%3A%201px%20solid%20silver%3Bborder%2Dradius%3A%203px%3Bbackground%3A%20%23f8f8f8%3B%7D%23play%2Drange%20%7Bmargin%3A%202%2E5%25%3Bwidth%3A%2070%25%3B%7D%23play%2Doutput%20%7Bcolor%3A%20%23666666%3Bfont%2Dfamily%3A%20Arial%2C%20Helvetica%2C%20sans%2Dserif%3B%7D" rel="stylesheet" />
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDA5LTIwMTggVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oVCxPKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhPWyJkZWZhdWx0Il09Tyxtb2R1bGUuZXhwb3J0cz1ULmRvY3VtZW50P08oVCk6Tyk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL2hpZ2hjaGFydHMiLGZ1bmN0aW9uKCl7cmV0dXJuIE8oVCl9KTooVC5IaWdoY2hhcnRzJiZULkhpZ2hjaGFydHMuZXJyb3IoMTYsITApLFQuSGlnaGNoYXJ0cz1PKFQpKX0pKCJ1bmRlZmluZWQiIT09dHlwZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihUKXtmdW5jdGlvbiBPKGcsYyxSLHkpe2cuaGFzT3duUHJvcGVydHkoYyl8fChnW2NdPXkuYXBwbHkobnVsbCxSKSl9dmFyIHE9e307TyhxLCJwYXJ0cy9HbG9iYWxzLmpzIixbXSxmdW5jdGlvbigpe3ZhciBnPSJ1bmRlZmluZWQiIT09dHlwZW9mIFQ/VDoidW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3c/d2luZG93Ont9LGM9Zy5kb2N1bWVudCwKUj1nLm5hdmlnYXRvciYmZy5uYXZpZ2F0b3IudXNlckFnZW50fHwiIix5PWMmJmMuY3JlYXRlRWxlbWVudE5TJiYhIWMuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInN2ZyIpLmNyZWF0ZVNWR1JlY3QscT0vKGVkZ2V8bXNpZXx0cmlkZW50KS9pLnRlc3QoUikmJiFnLm9wZXJhLEg9LTEhPT1SLmluZGV4T2YoIkZpcmVmb3giKSxEPS0xIT09Ui5pbmRleE9mKCJDaHJvbWUiKSxKPUgmJjQ+cGFyc2VJbnQoUi5zcGxpdCgiRmlyZWZveC8iKVsxXSwxMCk7cmV0dXJue3Byb2R1Y3Q6IkhpZ2hjaGFydHMiLHZlcnNpb246IjguMS4yIixkZWcycmFkOjIqTWF0aC5QSS8zNjAsZG9jOmMsaGFzQmlkaUJ1ZzpKLGhhc1RvdWNoOiEhZy5Ub3VjaEV2ZW50LGlzTVM6cSxpc1dlYktpdDotMSE9PVIuaW5kZXhPZigiQXBwbGVXZWJLaXQiKSxpc0ZpcmVmb3g6SCxpc0Nocm9tZTpELGlzU2FmYXJpOiFEJiYtMSE9PVIuaW5kZXhPZigiU2FmYXJpIiksaXNUb3VjaERldmljZTovKE1vYmlsZXxBbmRyb2lkfFdpbmRvd3MgUGhvbmUpLy50ZXN0KFIpLApTVkdfTlM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGFydENvdW50OjAsc2VyaWVzVHlwZXM6e30sc3ltYm9sU2l6ZXM6e30sc3ZnOnksd2luOmcsbWFyZ2luTmFtZXM6WyJwbG90VG9wIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5Cb3R0b20iLCJwbG90TGVmdCJdLG5vb3A6ZnVuY3Rpb24oKXt9LGNoYXJ0czpbXSxkYXRlRm9ybWF0czp7fX19KTtPKHEsInBhcnRzL1V0aWxpdGllcy5qcyIsW3FbInBhcnRzL0dsb2JhbHMuanMiXV0sZnVuY3Rpb24oZyl7ZnVuY3Rpb24gYyhiLGgsZSx6KXt2YXIgYT1oPyJIaWdoY2hhcnRzIGVycm9yIjoiSGlnaGNoYXJ0cyB3YXJuaW5nIjszMj09PWImJihiPWErIjogRGVwcmVjYXRlZCBtZW1iZXIiKTt2YXIgeD1JKGIpLGY9eD9hKyIgIyIrYisiOiB3d3cuaGlnaGNoYXJ0cy5jb20vZXJyb3JzLyIrYisiLyI6Yi50b1N0cmluZygpO2E9ZnVuY3Rpb24oKXtpZihoKXRocm93IEVycm9yKGYpO0cuY29uc29sZSYmLTE9PT1jLm1lc3NhZ2VzLmluZGV4T2YoZikmJgpjb25zb2xlLmxvZyhmKX07aWYoInVuZGVmaW5lZCIhPT10eXBlb2Ygeil7dmFyIGQ9IiI7eCYmKGYrPSI/Iik7Vyh6LGZ1bmN0aW9uKGIsaCl7ZCs9IlxuIC0gIitoKyI6ICIrYjt4JiYoZis9ZW5jb2RlVVJJKGgpKyI9IitlbmNvZGVVUkkoYikpfSk7Zis9ZH1lP2RhKGUsImRpc3BsYXlFcnJvciIse2NvZGU6YixtZXNzYWdlOmYscGFyYW1zOnp9LGEpOmEoKTtjLm1lc3NhZ2VzLnB1c2goZil9ZnVuY3Rpb24gUigpe3ZhciBiLGg9YXJndW1lbnRzLGU9e30sej1mdW5jdGlvbihiLGgpeyJvYmplY3QiIT09dHlwZW9mIGImJihiPXt9KTtXKGgsZnVuY3Rpb24oZSxhKXsheShlLCEwKXx8QyhlKXx8cihlKT9iW2FdPWhbYV06YlthXT16KGJbYV18fHt9LGUpfSk7cmV0dXJuIGJ9OyEwPT09aFswXSYmKGU9aFsxXSxoPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGgsMikpO3ZhciBhPWgubGVuZ3RoO2ZvcihiPTA7YjxhO2IrKyllPXooZSxoW2JdKTtyZXR1cm4gZX1mdW5jdGlvbiB5KGIsCmgpe3JldHVybiEhYiYmIm9iamVjdCI9PT10eXBlb2YgYiYmKCFofHwhbihiKSl9ZnVuY3Rpb24gcShiLGgsZSl7dmFyIGE7SyhoKT9tKGUpP2Iuc2V0QXR0cmlidXRlKGgsZSk6YiYmYi5nZXRBdHRyaWJ1dGUmJigoYT1iLmdldEF0dHJpYnV0ZShoKSl8fCJjbGFzcyIhPT1ofHwoYT1iLmdldEF0dHJpYnV0ZShoKyJOYW1lIikpKTpXKGgsZnVuY3Rpb24oaCxlKXtiLnNldEF0dHJpYnV0ZShlLGgpfSk7cmV0dXJuIGF9ZnVuY3Rpb24gSCgpe2Zvcih2YXIgYj1hcmd1bWVudHMsaD1iLmxlbmd0aCxlPTA7ZTxoO2UrKyl7dmFyIGE9YltlXTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBhJiZudWxsIT09YSlyZXR1cm4gYX19ZnVuY3Rpb24gRChiLGgpe2lmKCFiKXJldHVybiBoO3ZhciBlPWIuc3BsaXQoIi4iKS5yZXZlcnNlKCk7aWYoMT09PWUubGVuZ3RoKXJldHVybiBoW2JdO2ZvcihiPWUucG9wKCk7InVuZGVmaW5lZCIhPT10eXBlb2YgYiYmInVuZGVmaW5lZCIhPT10eXBlb2YgaCYmbnVsbCE9PQpoOyloPWhbYl0sYj1lLnBvcCgpO3JldHVybiBofWcudGltZXJzPVtdO3ZhciBKPWcuY2hhcnRzLHQ9Zy5kb2MsRz1nLndpbjsoY3x8KGM9e30pKS5tZXNzYWdlcz1bXTtnLmVycm9yPWM7dmFyIEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGIsaCxlKXt0aGlzLm9wdGlvbnM9aDt0aGlzLmVsZW09Yjt0aGlzLnByb3A9ZX1iLnByb3RvdHlwZS5kU2V0dGVyPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5wYXRocyxoPWImJmJbMF07Yj1iJiZiWzFdO3ZhciBlPVtdLGE9dGhpcy5ub3d8fDA7aWYoMSE9PWEmJmgmJmIpaWYoaC5sZW5ndGg9PT1iLmxlbmd0aCYmMT5hKWZvcih2YXIgej0wO3o8Yi5sZW5ndGg7eisrKXtmb3IodmFyIHg9aFt6XSxmPWJbel0sZD1bXSxrPTA7azxmLmxlbmd0aDtrKyspe3ZhciBOPXhba10sbD1mW2tdO2Rba109Im51bWJlciI9PT10eXBlb2YgTiYmIm51bWJlciI9PT10eXBlb2YgbCYmKCJBIiE9PWZbMF18fDQhPT1rJiY1IT09ayk/TithKihsLU4pOmx9ZS5wdXNoKGQpfWVsc2UgZT0KYjtlbHNlIGU9dGhpcy50b0R8fFtdO3RoaXMuZWxlbS5hdHRyKCJkIixlLHZvaWQgMCwhMCl9O2IucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe3ZhciBiPXRoaXMuZWxlbSxoPXRoaXMucHJvcCxlPXRoaXMubm93LGE9dGhpcy5vcHRpb25zLnN0ZXA7aWYodGhpc1toKyJTZXR0ZXIiXSl0aGlzW2grIlNldHRlciJdKCk7ZWxzZSBiLmF0dHI/Yi5lbGVtZW50JiZiLmF0dHIoaCxlLG51bGwsITApOmIuc3R5bGVbaF09ZSt0aGlzLnVuaXQ7YSYmYS5jYWxsKGIsZSx0aGlzKX07Yi5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKGIsaCxlKXt2YXIgYT10aGlzLHo9YS5vcHRpb25zLHg9ZnVuY3Rpb24oYil7cmV0dXJuIHguc3RvcHBlZD8hMTphLnN0ZXAoYil9LGY9Ry5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fGZ1bmN0aW9uKGIpe3NldFRpbWVvdXQoYiwxMyl9LGQ9ZnVuY3Rpb24oKXtmb3IodmFyIGI9MDtiPGcudGltZXJzLmxlbmd0aDtiKyspZy50aW1lcnNbYl0oKXx8Zy50aW1lcnMuc3BsaWNlKGItLSwKMSk7Zy50aW1lcnMubGVuZ3RoJiZmKGQpfTtiIT09aHx8dGhpcy5lbGVtWyJmb3JjZUFuaW1hdGU6Iit0aGlzLnByb3BdPyh0aGlzLnN0YXJ0VGltZT0rbmV3IERhdGUsdGhpcy5zdGFydD1iLHRoaXMuZW5kPWgsdGhpcy51bml0PWUsdGhpcy5ub3c9dGhpcy5zdGFydCx0aGlzLnBvcz0wLHguZWxlbT10aGlzLmVsZW0seC5wcm9wPXRoaXMucHJvcCx4KCkmJjE9PT1nLnRpbWVycy5wdXNoKHgpJiZmKGQpKTooZGVsZXRlIHouY3VyQW5pbVt0aGlzLnByb3BdLHouY29tcGxldGUmJjA9PT1PYmplY3Qua2V5cyh6LmN1ckFuaW0pLmxlbmd0aCYmei5jb21wbGV0ZS5jYWxsKHRoaXMuZWxlbSkpfTtiLnByb3RvdHlwZS5zdGVwPWZ1bmN0aW9uKGIpe3ZhciBoPStuZXcgRGF0ZSxlPXRoaXMub3B0aW9ucyxhPXRoaXMuZWxlbSx6PWUuY29tcGxldGUseD1lLmR1cmF0aW9uLGY9ZS5jdXJBbmltO2lmKGEuYXR0ciYmIWEuZWxlbWVudCliPSExO2Vsc2UgaWYoYnx8aD49eCt0aGlzLnN0YXJ0VGltZSl7dGhpcy5ub3c9CnRoaXMuZW5kO3RoaXMucG9zPTE7dGhpcy51cGRhdGUoKTt2YXIgZD1mW3RoaXMucHJvcF09ITA7VyhmLGZ1bmN0aW9uKGIpeyEwIT09YiYmKGQ9ITEpfSk7ZCYmeiYmei5jYWxsKGEpO2I9ITF9ZWxzZSB0aGlzLnBvcz1lLmVhc2luZygoaC10aGlzLnN0YXJ0VGltZSkveCksdGhpcy5ub3c9dGhpcy5zdGFydCsodGhpcy5lbmQtdGhpcy5zdGFydCkqdGhpcy5wb3MsdGhpcy51cGRhdGUoKSxiPSEwO3JldHVybiBifTtiLnByb3RvdHlwZS5pbml0UGF0aD1mdW5jdGlvbihiLGgsZSl7ZnVuY3Rpb24gYShiLGgpe2Zvcig7Yi5sZW5ndGg8dTspe3ZhciBlPWJbMF0sYT1oW3UtYi5sZW5ndGhdO2EmJiJNIj09PWVbMF0mJihiWzBdPSJDIj09PWFbMF0/WyJDIixlWzFdLGVbMl0sZVsxXSxlWzJdLGVbMV0sZVsyXV06WyJMIixlWzFdLGVbMl1dKTtiLnVuc2hpZnQoZSk7ZCYmYi5wdXNoKGJbYi5sZW5ndGgtMV0pfX1mdW5jdGlvbiB6KGIsaCl7Zm9yKDtiLmxlbmd0aDx1OylpZihoPWJbYi5sZW5ndGgvCmstMV0uc2xpY2UoKSwiQyI9PT1oWzBdJiYoaFsxXT1oWzVdLGhbMl09aFs2XSksZCl7dmFyIGU9YltiLmxlbmd0aC9rXS5zbGljZSgpO2Iuc3BsaWNlKGIubGVuZ3RoLzIsMCxoLGUpfWVsc2UgYi5wdXNoKGgpfXZhciB4PWIuc3RhcnRYLGY9Yi5lbmRYO2g9aCYmaC5zbGljZSgpO2U9ZS5zbGljZSgpO3ZhciBkPWIuaXNBcmVhLGs9ZD8yOjE7aWYoIWgpcmV0dXJuW2UsZV07aWYoeCYmZil7Zm9yKGI9MDtiPHgubGVuZ3RoO2IrKylpZih4W2JdPT09ZlswXSl7dmFyIE49YjticmVha31lbHNlIGlmKHhbMF09PT1mW2YubGVuZ3RoLXgubGVuZ3RoK2JdKXtOPWI7dmFyIGw9ITA7YnJlYWt9ZWxzZSBpZih4W3gubGVuZ3RoLTFdPT09ZltmLmxlbmd0aC14Lmxlbmd0aCtiXSl7Tj14Lmxlbmd0aC1iO2JyZWFrfSJ1bmRlZmluZWQiPT09dHlwZW9mIE4mJihoPVtdKX1pZihoLmxlbmd0aCYmSShOKSl7dmFyIHU9ZS5sZW5ndGgrTiprO2w/KGEoaCxlKSx6KGUsaCkpOihhKGUsaCkseihoLGUpKX1yZXR1cm5baCwKZV19O2IucHJvdG90eXBlLmZpbGxTZXR0ZXI9ZnVuY3Rpb24oKXtiLnByb3RvdHlwZS5zdHJva2VTZXR0ZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtiLnByb3RvdHlwZS5zdHJva2VTZXR0ZXI9ZnVuY3Rpb24oKXt0aGlzLmVsZW0uYXR0cih0aGlzLnByb3AsZy5jb2xvcih0aGlzLnN0YXJ0KS50d2VlblRvKGcuY29sb3IodGhpcy5lbmQpLHRoaXMucG9zKSxudWxsLCEwKX07cmV0dXJuIGJ9KCk7Zy5GeD1MO2cubWVyZ2U9Ujt2YXIgdj1nLnBJbnQ9ZnVuY3Rpb24oYixoKXtyZXR1cm4gcGFyc2VJbnQoYixofHwxMCl9LEs9Zy5pc1N0cmluZz1mdW5jdGlvbihiKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBifSxuPWcuaXNBcnJheT1mdW5jdGlvbihiKXtiPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChiKTtyZXR1cm4iW29iamVjdCBBcnJheV0iPT09Ynx8IltvYmplY3QgQXJyYXkgSXRlcmF0b3JdIj09PWJ9O2cuaXNPYmplY3Q9eTt2YXIgcj1nLmlzRE9NRWxlbWVudD1mdW5jdGlvbihiKXtyZXR1cm4geShiKSYmCiJudW1iZXIiPT09dHlwZW9mIGIubm9kZVR5cGV9LEM9Zy5pc0NsYXNzPWZ1bmN0aW9uKGIpe3ZhciBoPWImJmIuY29uc3RydWN0b3I7cmV0dXJuISgheShiLCEwKXx8cihiKXx8IWh8fCFoLm5hbWV8fCJPYmplY3QiPT09aC5uYW1lKX0sST1nLmlzTnVtYmVyPWZ1bmN0aW9uKGIpe3JldHVybiJudW1iZXIiPT09dHlwZW9mIGImJiFpc05hTihiKSYmSW5maW5pdHk+YiYmLUluZmluaXR5PGJ9LHA9Zy5lcmFzZT1mdW5jdGlvbihiLGgpe2Zvcih2YXIgZT1iLmxlbmd0aDtlLS07KWlmKGJbZV09PT1oKXtiLnNwbGljZShlLDEpO2JyZWFrfX0sbT1nLmRlZmluZWQ9ZnVuY3Rpb24oYil7cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgYiYmbnVsbCE9PWJ9O2cuYXR0cj1xO3ZhciBkPWcuc3BsYXQ9ZnVuY3Rpb24oYil7cmV0dXJuIG4oYik/YjpbYl19LGw9Zy5zeW5jVGltZW91dD1mdW5jdGlvbihiLGgsZSl7aWYoMDxoKXJldHVybiBzZXRUaW1lb3V0KGIsaCxlKTtiLmNhbGwoMCxlKTtyZXR1cm4tMX0sCms9Zy5jbGVhclRpbWVvdXQ9ZnVuY3Rpb24oYil7bShiKSYmY2xlYXJUaW1lb3V0KGIpfSxmPWcuZXh0ZW5kPWZ1bmN0aW9uKGIsaCl7dmFyIGU7Ynx8KGI9e30pO2ZvcihlIGluIGgpYltlXT1oW2VdO3JldHVybiBifTtnLnBpY2s9SDt2YXIgYT1nLmNzcz1mdW5jdGlvbihiLGgpe2cuaXNNUyYmIWcuc3ZnJiZoJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBoLm9wYWNpdHkmJihoLmZpbHRlcj0iYWxwaGEob3BhY2l0eT0iKzEwMCpoLm9wYWNpdHkrIikiKTtmKGIuc3R5bGUsaCl9LEE9Zy5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGIsaCxlLHoseCl7Yj10LmNyZWF0ZUVsZW1lbnQoYik7aCYmZihiLGgpO3gmJmEoYix7cGFkZGluZzoiMCIsYm9yZGVyOiJub25lIixtYXJnaW46IjAifSk7ZSYmYShiLGUpO3omJnouYXBwZW5kQ2hpbGQoYik7cmV0dXJuIGJ9LHU9Zy5leHRlbmRDbGFzcz1mdW5jdGlvbihiLGgpe3ZhciBlPWZ1bmN0aW9uKCl7fTtlLnByb3RvdHlwZT1uZXcgYjtmKGUucHJvdG90eXBlLApoKTtyZXR1cm4gZX0sRT1nLnBhZD1mdW5jdGlvbihiLGgsZSl7cmV0dXJuIEFycmF5KChofHwyKSsxLVN0cmluZyhiKS5yZXBsYWNlKCItIiwiIikubGVuZ3RoKS5qb2luKGV8fCIwIikrYn0sUD1nLnJlbGF0aXZlTGVuZ3RoPWZ1bmN0aW9uKGIsaCxlKXtyZXR1cm4vJSQvLnRlc3QoYik/aCpwYXJzZUZsb2F0KGIpLzEwMCsoZXx8MCk6cGFyc2VGbG9hdChiKX0sdz1nLndyYXA9ZnVuY3Rpb24oYixoLGUpe3ZhciBhPWJbaF07YltoXT1mdW5jdGlvbigpe3ZhciBiPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyksaD1hcmd1bWVudHMsej10aGlzO3oucHJvY2VlZD1mdW5jdGlvbigpe2EuYXBwbHkoeixhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50czpoKX07Yi51bnNoaWZ0KGEpO2I9ZS5hcHBseSh0aGlzLGIpO3oucHJvY2VlZD1udWxsO3JldHVybiBifX0sTT1nLmZvcm1hdD1mdW5jdGlvbihiLGgsZSl7dmFyIGE9InsiLHo9ITEseD1bXSxmPS9mJC8sZD0vXC4oWzAtOV0pLywKaz1nLmRlZmF1bHRPcHRpb25zLmxhbmcsTj1lJiZlLnRpbWV8fGcudGltZTtmb3IoZT1lJiZlLm51bWJlckZvcm1hdHRlcnx8WTtiOyl7dmFyIGw9Yi5pbmRleE9mKGEpO2lmKC0xPT09bClicmVhazt2YXIgdT1iLnNsaWNlKDAsbCk7aWYoeil7dT11LnNwbGl0KCI6Iik7YT1EKHUuc2hpZnQoKXx8IiIsaCk7aWYodS5sZW5ndGgmJiJudW1iZXIiPT09dHlwZW9mIGEpaWYodT11LmpvaW4oIjoiKSxmLnRlc3QodSkpe3ZhciBtPXBhcnNlSW50KCh1Lm1hdGNoKGQpfHxbIiIsIi0xIl0pWzFdLDEwKTtudWxsIT09YSYmKGE9ZShhLG0say5kZWNpbWFsUG9pbnQsLTE8dS5pbmRleE9mKCIsIik/ay50aG91c2FuZHNTZXA6IiIpKX1lbHNlIGE9Ti5kYXRlRm9ybWF0KHUsYSk7eC5wdXNoKGEpfWVsc2UgeC5wdXNoKHUpO2I9Yi5zbGljZShsKzEpO2E9KHo9IXopPyJ9IjoieyJ9eC5wdXNoKGIpO3JldHVybiB4LmpvaW4oIiIpfSxGPWcuZ2V0TWFnbml0dWRlPWZ1bmN0aW9uKGIpe3JldHVybiBNYXRoLnBvdygxMCwKTWF0aC5mbG9vcihNYXRoLmxvZyhiKS9NYXRoLkxOMTApKX0sUT1nLm5vcm1hbGl6ZVRpY2tJbnRlcnZhbD1mdW5jdGlvbihiLGgsZSxhLHope3ZhciB4PWI7ZT1IKGUsMSk7dmFyIGY9Yi9lO2h8fChoPXo/WzEsMS4yLDEuNSwyLDIuNSwzLDQsNSw2LDgsMTBdOlsxLDIsMi41LDUsMTBdLCExPT09YSYmKDE9PT1lP2g9aC5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIDA9PT1iJTF9KTouMT49ZSYmKGg9WzEvZV0pKSk7Zm9yKGE9MDthPGgubGVuZ3RoJiYhKHg9aFthXSx6JiZ4KmU+PWJ8fCF6JiZmPD0oaFthXSsoaFthKzFdfHxoW2FdKSkvMik7YSsrKTtyZXR1cm4geD1OKHgqZSwtTWF0aC5yb3VuZChNYXRoLmxvZyguMDAxKS9NYXRoLkxOMTApKX0sZT1nLnN0YWJsZVNvcnQ9ZnVuY3Rpb24oYixoKXt2YXIgZT1iLmxlbmd0aCxhLHo7Zm9yKHo9MDt6PGU7eisrKWJbel0uc2FmZUk9ejtiLnNvcnQoZnVuY3Rpb24oYixlKXthPWgoYixlKTtyZXR1cm4gMD09PWE/Yi5zYWZlSS1lLnNhZmVJOgphfSk7Zm9yKHo9MDt6PGU7eisrKWRlbGV0ZSBiW3pdLnNhZmVJfSxiPWcuYXJyYXlNaW49ZnVuY3Rpb24oYil7Zm9yKHZhciBoPWIubGVuZ3RoLGU9YlswXTtoLS07KWJbaF08ZSYmKGU9YltoXSk7cmV0dXJuIGV9LGg9Zy5hcnJheU1heD1mdW5jdGlvbihiKXtmb3IodmFyIGg9Yi5sZW5ndGgsZT1iWzBdO2gtLTspYltoXT5lJiYoZT1iW2hdKTtyZXR1cm4gZX0sej1nLmRlc3Ryb3lPYmplY3RQcm9wZXJ0aWVzPWZ1bmN0aW9uKGIsaCl7VyhiLGZ1bmN0aW9uKGUsYSl7ZSYmZSE9PWgmJmUuZGVzdHJveSYmZS5kZXN0cm95KCk7ZGVsZXRlIGJbYV19KX0seD1nLmRpc2NhcmRFbGVtZW50PWZ1bmN0aW9uKGIpe3ZhciBoPWcuZ2FyYmFnZUJpbjtofHwoaD1BKCJkaXYiKSk7YiYmaC5hcHBlbmRDaGlsZChiKTtoLmlubmVySFRNTD0iIn0sTj1nLmNvcnJlY3RGbG9hdD1mdW5jdGlvbihiLGgpe3JldHVybiBwYXJzZUZsb2F0KGIudG9QcmVjaXNpb24oaHx8MTQpKX0sYWE9Zy5zZXRBbmltYXRpb249CmZ1bmN0aW9uKGIsaCl7aC5yZW5kZXJlci5nbG9iYWxBbmltYXRpb249SChiLGgub3B0aW9ucy5jaGFydC5hbmltYXRpb24sITApfSxaPWcuYW5pbU9iamVjdD1mdW5jdGlvbihiKXtyZXR1cm4geShiKT9SKGIpOntkdXJhdGlvbjpiPzUwMDowfX0sVj1nLnRpbWVVbml0cz17bWlsbGlzZWNvbmQ6MSxzZWNvbmQ6MUUzLG1pbnV0ZTo2RTQsaG91cjozNkU1LGRheTo4NjRFNSx3ZWVrOjYwNDhFNSxtb250aDoyNDE5MkU1LHllYXI6MzE0NDk2RTV9LFk9Zy5udW1iZXJGb3JtYXQ9ZnVuY3Rpb24oYixoLGUsYSl7Yj0rYnx8MDtoPStoO3ZhciB6PWcuZGVmYXVsdE9wdGlvbnMubGFuZyx4PShiLnRvU3RyaW5nKCkuc3BsaXQoIi4iKVsxXXx8IiIpLnNwbGl0KCJlIilbMF0ubGVuZ3RoLGY9Yi50b1N0cmluZygpLnNwbGl0KCJlIik7aWYoLTE9PT1oKWg9TWF0aC5taW4oeCwyMCk7ZWxzZSBpZighSShoKSloPTI7ZWxzZSBpZihoJiZmWzFdJiYwPmZbMV0pe3ZhciBkPWgrICtmWzFdOzA8PWQ/KGZbMF09CigrZlswXSkudG9FeHBvbmVudGlhbChkKS5zcGxpdCgiZSIpWzBdLGg9ZCk6KGZbMF09ZlswXS5zcGxpdCgiLiIpWzBdfHwwLGI9MjA+aD8oZlswXSpNYXRoLnBvdygxMCxmWzFdKSkudG9GaXhlZChoKTowLGZbMV09MCl9dmFyIGs9KE1hdGguYWJzKGZbMV0/ZlswXTpiKStNYXRoLnBvdygxMCwtTWF0aC5tYXgoaCx4KS0xKSkudG9GaXhlZChoKTt4PVN0cmluZyh2KGspKTtkPTM8eC5sZW5ndGg/eC5sZW5ndGglMzowO2U9SChlLHouZGVjaW1hbFBvaW50KTthPUgoYSx6LnRob3VzYW5kc1NlcCk7Yj0oMD5iPyItIjoiIikrKGQ/eC5zdWJzdHIoMCxkKSthOiIiKTtiKz14LnN1YnN0cihkKS5yZXBsYWNlKC8oXGR7M30pKD89XGQpL2csIiQxIithKTtoJiYoYis9ZStrLnNsaWNlKC1oKSk7ZlsxXSYmMCE9PStiJiYoYis9ImUiK2ZbMV0pO3JldHVybiBifTtNYXRoLmVhc2VJbk91dFNpbmU9ZnVuY3Rpb24oYil7cmV0dXJuLS41KihNYXRoLmNvcyhNYXRoLlBJKmIpLTEpfTt2YXIgYmE9Zy5nZXRTdHlsZT0KZnVuY3Rpb24oYixoLGUpe2lmKCJ3aWR0aCI9PT1oKXJldHVybiBoPU1hdGgubWluKGIub2Zmc2V0V2lkdGgsYi5zY3JvbGxXaWR0aCksZT1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCYmYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCxlPGgmJmU+PWgtMSYmKGg9TWF0aC5mbG9vcihlKSksTWF0aC5tYXgoMCxoLWcuZ2V0U3R5bGUoYiwicGFkZGluZy1sZWZ0IiktZy5nZXRTdHlsZShiLCJwYWRkaW5nLXJpZ2h0IikpO2lmKCJoZWlnaHQiPT09aClyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbihiLm9mZnNldEhlaWdodCxiLnNjcm9sbEhlaWdodCktZy5nZXRTdHlsZShiLCJwYWRkaW5nLXRvcCIpLWcuZ2V0U3R5bGUoYiwicGFkZGluZy1ib3R0b20iKSk7Ry5nZXRDb21wdXRlZFN0eWxlfHxjKDI3LCEwKTtpZihiPUcuZ2V0Q29tcHV0ZWRTdHlsZShiLHZvaWQgMCkpYj1iLmdldFByb3BlcnR5VmFsdWUoaCksSChlLCJvcGFjaXR5IiE9PWgpJiYoYj12KGIpKTtyZXR1cm4gYn0sClU9Zy5pbkFycmF5PWZ1bmN0aW9uKGIsaCxlKXtjKDMyLCExLHZvaWQgMCx7IkhpZ2hjaGFydHMuaW5BcnJheSI6InVzZSBBcnJheS5pbmRleE9mIn0pO3JldHVybiBoLmluZGV4T2YoYixlKX0sWD1nLmZpbmQ9QXJyYXkucHJvdG90eXBlLmZpbmQ/ZnVuY3Rpb24oYixoKXtyZXR1cm4gYi5maW5kKGgpfTpmdW5jdGlvbihiLGgpe3ZhciBlLGE9Yi5sZW5ndGg7Zm9yKGU9MDtlPGE7ZSsrKWlmKGgoYltlXSxlKSlyZXR1cm4gYltlXX07Zy5rZXlzPWZ1bmN0aW9uKGIpe2MoMzIsITEsdm9pZCAwLHsiSGlnaGNoYXJ0cy5rZXlzIjoidXNlIE9iamVjdC5rZXlzIn0pO3JldHVybiBPYmplY3Qua2V5cyhiKX07dmFyIGlhPWcub2Zmc2V0PWZ1bmN0aW9uKGIpe3ZhciBoPXQuZG9jdW1lbnRFbGVtZW50O2I9Yi5wYXJlbnRFbGVtZW50fHxiLnBhcmVudE5vZGU/Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTp7dG9wOjAsbGVmdDowfTtyZXR1cm57dG9wOmIudG9wKyhHLnBhZ2VZT2Zmc2V0fHxoLnNjcm9sbFRvcCktCihoLmNsaWVudFRvcHx8MCksbGVmdDpiLmxlZnQrKEcucGFnZVhPZmZzZXR8fGguc2Nyb2xsTGVmdCktKGguY2xpZW50TGVmdHx8MCl9fSxTPWcuc3RvcD1mdW5jdGlvbihiLGgpe2Zvcih2YXIgZT1nLnRpbWVycy5sZW5ndGg7ZS0tOylnLnRpbWVyc1tlXS5lbGVtIT09Ynx8aCYmaCE9PWcudGltZXJzW2VdLnByb3B8fChnLnRpbWVyc1tlXS5zdG9wcGVkPSEwKX0sVz1nLm9iamVjdEVhY2g9ZnVuY3Rpb24oYixoLGUpe2Zvcih2YXIgYSBpbiBiKU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsYSkmJmguY2FsbChlfHxiW2FdLGJbYV0sYSxiKX07Vyh7bWFwOiJtYXAiLGVhY2g6ImZvckVhY2giLGdyZXA6ImZpbHRlciIscmVkdWNlOiJyZWR1Y2UiLHNvbWU6InNvbWUifSxmdW5jdGlvbihiLGgpe2dbaF09ZnVuY3Rpb24oZSl7dmFyIGE7YygzMiwhMSx2b2lkIDAsKGE9e30sYVsiSGlnaGNoYXJ0cy4iK2hdPSJ1c2UgQXJyYXkuIitiLGEpKTtyZXR1cm4gQXJyYXkucHJvdG90eXBlW2JdLmFwcGx5KGUsCltdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX19KTt2YXIgamE9Zy5hZGRFdmVudD1mdW5jdGlvbihiLGgsZSxhKXt2b2lkIDA9PT1hJiYoYT17fSk7dmFyIHo9Yi5hZGRFdmVudExpc3RlbmVyfHxnLmFkZEV2ZW50TGlzdGVuZXJQb2x5ZmlsbDt2YXIgeD0iZnVuY3Rpb24iPT09dHlwZW9mIGImJmIucHJvdG90eXBlP2IucHJvdG90eXBlLnByb3RvRXZlbnRzPWIucHJvdG90eXBlLnByb3RvRXZlbnRzfHx7fTpiLmhjRXZlbnRzPWIuaGNFdmVudHN8fHt9O2cuUG9pbnQmJmIgaW5zdGFuY2VvZiBnLlBvaW50JiZiLnNlcmllcyYmYi5zZXJpZXMuY2hhcnQmJihiLnNlcmllcy5jaGFydC5ydW5UcmFja2VyQ2xpY2s9ITApO3omJnouY2FsbChiLGgsZSwhMSk7eFtoXXx8KHhbaF09W10pO3hbaF0ucHVzaCh7Zm46ZSxvcmRlcjoibnVtYmVyIj09PXR5cGVvZiBhLm9yZGVyP2Eub3JkZXI6SW5maW5pdHl9KTt4W2hdLnNvcnQoZnVuY3Rpb24oYixoKXtyZXR1cm4gYi5vcmRlci1oLm9yZGVyfSk7CnJldHVybiBmdW5jdGlvbigpe2VhKGIsaCxlKX19LGVhPWcucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oYixoLGUpe2Z1bmN0aW9uIGEoaCxlKXt2YXIgYT1iLnJlbW92ZUV2ZW50TGlzdGVuZXJ8fGcucmVtb3ZlRXZlbnRMaXN0ZW5lclBvbHlmaWxsO2EmJmEuY2FsbChiLGgsZSwhMSl9ZnVuY3Rpb24geihlKXt2YXIgejtpZihiLm5vZGVOYW1lKXtpZihoKXt2YXIgeD17fTt4W2hdPSEwfWVsc2UgeD1lO1coeCxmdW5jdGlvbihiLGgpe2lmKGVbaF0pZm9yKHo9ZVtoXS5sZW5ndGg7ei0tOylhKGgsZVtoXVt6XS5mbil9KX19dmFyIHg7WyJwcm90b0V2ZW50cyIsImhjRXZlbnRzIl0uZm9yRWFjaChmdW5jdGlvbihmLGQpe3ZhciBrPShkPWQ/YjpiLnByb3RvdHlwZSkmJmRbZl07ayYmKGg/KHg9a1toXXx8W10sZT8oa1toXT14LmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gZSE9PWIuZm59KSxhKGgsZSkpOih6KGspLGtbaF09W10pKTooeihrKSxkW2ZdPXt9KSl9KX0sZGE9Zy5maXJlRXZlbnQ9CmZ1bmN0aW9uKGIsaCxlLGEpe3ZhciB6O2U9ZXx8e307aWYodC5jcmVhdGVFdmVudCYmKGIuZGlzcGF0Y2hFdmVudHx8Yi5maXJlRXZlbnQpKXt2YXIgeD10LmNyZWF0ZUV2ZW50KCJFdmVudHMiKTt4LmluaXRFdmVudChoLCEwLCEwKTtmKHgsZSk7Yi5kaXNwYXRjaEV2ZW50P2IuZGlzcGF0Y2hFdmVudCh4KTpiLmZpcmVFdmVudChoLHgpfWVsc2UgZS50YXJnZXR8fGYoZSx7cHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXtlLmRlZmF1bHRQcmV2ZW50ZWQ9ITB9LHRhcmdldDpiLHR5cGU6aH0pLGZ1bmN0aW9uKGgsYSl7dm9pZCAwPT09aCYmKGg9W10pO3ZvaWQgMD09PWEmJihhPVtdKTt2YXIgeD0wLGY9MCxkPWgubGVuZ3RoK2EubGVuZ3RoO2Zvcih6PTA7ejxkO3orKykhMT09PShoW3hdP2FbZl0/aFt4XS5vcmRlcjw9YVtmXS5vcmRlcj9oW3grK106YVtmKytdOmhbeCsrXTphW2YrK10pLmZuLmNhbGwoYixlKSYmZS5wcmV2ZW50RGVmYXVsdCgpfShiLnByb3RvRXZlbnRzJiZiLnByb3RvRXZlbnRzW2hdLApiLmhjRXZlbnRzJiZiLmhjRXZlbnRzW2hdKTthJiYhZS5kZWZhdWx0UHJldmVudGVkJiZhLmNhbGwoYixlKX0sa2E9Zy5hbmltYXRlPWZ1bmN0aW9uKGIsaCxlKXt2YXIgYSx6PSIiLHgsZjtpZigheShlKSl7dmFyIGQ9YXJndW1lbnRzO2U9e2R1cmF0aW9uOmRbMl0sZWFzaW5nOmRbM10sY29tcGxldGU6ZFs0XX19SShlLmR1cmF0aW9uKXx8KGUuZHVyYXRpb249NDAwKTtlLmVhc2luZz0iZnVuY3Rpb24iPT09dHlwZW9mIGUuZWFzaW5nP2UuZWFzaW5nOk1hdGhbZS5lYXNpbmddfHxNYXRoLmVhc2VJbk91dFNpbmU7ZS5jdXJBbmltPVIoaCk7VyhoLGZ1bmN0aW9uKGQsayl7UyhiLGspO2Y9bmV3IEwoYixlLGspO3g9bnVsbDsiZCI9PT1rJiZuKGguZCk/KGYucGF0aHM9Zi5pbml0UGF0aChiLGIucGF0aEFycmF5LGguZCksZi50b0Q9aC5kLGE9MCx4PTEpOmIuYXR0cj9hPWIuYXR0cihrKTooYT1wYXJzZUZsb2F0KGJhKGIsaykpfHwwLCJvcGFjaXR5IiE9PWsmJih6PSJweCIpKTt4fHwKKHg9ZCk7eCYmeC5tYXRjaCYmeC5tYXRjaCgicHgiKSYmKHg9eC5yZXBsYWNlKC9weC9nLCIiKSk7Zi5ydW4oYSx4LHopfSl9LGxhPWcuc2VyaWVzVHlwZT1mdW5jdGlvbihiLGgsZSxhLHgpe3ZhciB6PWZhKCksZj1nLnNlcmllc1R5cGVzO3oucGxvdE9wdGlvbnNbYl09Uih6LnBsb3RPcHRpb25zW2hdLGUpO2ZbYl09dShmW2hdfHxmdW5jdGlvbigpe30sYSk7ZltiXS5wcm90b3R5cGUudHlwZT1iO3gmJihmW2JdLnByb3RvdHlwZS5wb2ludENsYXNzPXUoZy5Qb2ludCx4KSk7cmV0dXJuIGZbYl19LGNhLGhhPWcudW5pcXVlS2V5PWZ1bmN0aW9uKCl7dmFyIGI9TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSkrIi0iLGg9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4iaGlnaGNoYXJ0cy0iKyhjYT8iIjpiKStoKyt9fSgpLG1hPWcudXNlU2VyaWFsSWRzPWZ1bmN0aW9uKGIpe3JldHVybiBjYT1IKGIsY2EpfSxPPWcuaXNGdW5jdGlvbj1mdW5jdGlvbihiKXtyZXR1cm4iZnVuY3Rpb24iPT09CnR5cGVvZiBifSxmYT1nLmdldE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gZy5kZWZhdWx0T3B0aW9uc30sbmE9Zy5zZXRPcHRpb25zPWZ1bmN0aW9uKGIpe2cuZGVmYXVsdE9wdGlvbnM9UighMCxnLmRlZmF1bHRPcHRpb25zLGIpOyhiLnRpbWV8fGIuZ2xvYmFsKSYmZy50aW1lLnVwZGF0ZShSKGcuZGVmYXVsdE9wdGlvbnMuZ2xvYmFsLGcuZGVmYXVsdE9wdGlvbnMudGltZSxiLmdsb2JhbCxiLnRpbWUpKTtyZXR1cm4gZy5kZWZhdWx0T3B0aW9uc307Ry5qUXVlcnkmJihHLmpRdWVyeS5mbi5oaWdoY2hhcnRzPWZ1bmN0aW9uKCl7dmFyIGI9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2lmKHRoaXNbMF0pcmV0dXJuIGJbMF0/KG5ldyAoZ1tLKGJbMF0pP2Iuc2hpZnQoKToiQ2hhcnQiXSkodGhpc1swXSxiWzBdLGJbMV0pLHRoaXMpOkpbcSh0aGlzWzBdLCJkYXRhLWhpZ2hjaGFydHMtY2hhcnQiKV19KTtyZXR1cm57Rng6Zy5GeCxhZGRFdmVudDpqYSxhbmltYXRlOmthLGFuaW1PYmplY3Q6WiwKYXJyYXlNYXg6aCxhcnJheU1pbjpiLGF0dHI6cSxjbGFtcDpmdW5jdGlvbihiLGgsZSl7cmV0dXJuIGI+aD9iPGU/YjplOmh9LGNsZWFyVGltZW91dDprLGNvcnJlY3RGbG9hdDpOLGNyZWF0ZUVsZW1lbnQ6QSxjc3M6YSxkZWZpbmVkOm0sZGVzdHJveU9iamVjdFByb3BlcnRpZXM6eixkaXNjYXJkRWxlbWVudDp4LGVyYXNlOnAsZXJyb3I6YyxleHRlbmQ6ZixleHRlbmRDbGFzczp1LGZpbmQ6WCxmaXJlRXZlbnQ6ZGEsZm9ybWF0Ok0sZ2V0TWFnbml0dWRlOkYsZ2V0TmVzdGVkUHJvcGVydHk6RCxnZXRPcHRpb25zOmZhLGdldFN0eWxlOmJhLGluQXJyYXk6VSxpc0FycmF5Om4saXNDbGFzczpDLGlzRE9NRWxlbWVudDpyLGlzRnVuY3Rpb246Tyxpc051bWJlcjpJLGlzT2JqZWN0OnksaXNTdHJpbmc6SyxtZXJnZTpSLG5vcm1hbGl6ZVRpY2tJbnRlcnZhbDpRLG51bWJlckZvcm1hdDpZLG9iamVjdEVhY2g6VyxvZmZzZXQ6aWEscGFkOkUscGljazpILHBJbnQ6dixyZWxhdGl2ZUxlbmd0aDpQLApyZW1vdmVFdmVudDplYSxzZXJpZXNUeXBlOmxhLHNldEFuaW1hdGlvbjphYSxzZXRPcHRpb25zOm5hLHNwbGF0OmQsc3RhYmxlU29ydDplLHN0b3A6UyxzeW5jVGltZW91dDpsLHRpbWVVbml0czpWLHVuaXF1ZUtleTpoYSx1c2VTZXJpYWxJZHM6bWEsd3JhcDp3fX0pO08ocSwicGFydHMvQ29sb3IuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyl7dmFyIFI9Yy5pc051bWJlcix5PWMubWVyZ2UscT1jLnBJbnQ7Yz1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoZyl7dGhpcy5wYXJzZXJzPVt7cmVnZXg6L3JnYmFcKFxzKihbMC05XXsxLDN9KVxzKixccyooWzAtOV17MSwzfSlccyosXHMqKFswLTldezEsM30pXHMqLFxzKihbMC05XT8oPzpcLlswLTldKyk/KVxzKlwpLyxwYXJzZTpmdW5jdGlvbihjKXtyZXR1cm5bcShjWzFdKSxxKGNbMl0pLHEoY1szXSkscGFyc2VGbG9hdChjWzRdLDEwKV19fSx7cmVnZXg6L3JnYlwoXHMqKFswLTldezEsM30pXHMqLFxzKihbMC05XXsxLDN9KVxzKixccyooWzAtOV17MSwzfSlccypcKS8sCnBhcnNlOmZ1bmN0aW9uKGMpe3JldHVybltxKGNbMV0pLHEoY1syXSkscShjWzNdKSwxXX19XTt0aGlzLnJnYmE9W107aWYoISh0aGlzIGluc3RhbmNlb2YgYykpcmV0dXJuIG5ldyBjKGcpO3RoaXMuaW5pdChnKX1jLnBhcnNlPWZ1bmN0aW9uKGcpe3JldHVybiBuZXcgYyhnKX07Yy5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihnKXt2YXIgSix0O2lmKCh0aGlzLmlucHV0PWc9Yy5uYW1lc1tnJiZnLnRvTG93ZXJDYXNlP2cudG9Mb3dlckNhc2UoKToiIl18fGcpJiZnLnN0b3BzKXRoaXMuc3RvcHM9Zy5zdG9wcy5tYXAoZnVuY3Rpb24odil7cmV0dXJuIG5ldyBjKHZbMV0pfSk7ZWxzZXtpZihnJiZnLmNoYXJBdCYmIiMiPT09Zy5jaGFyQXQoKSl7dmFyIEc9Zy5sZW5ndGg7Zz1wYXJzZUludChnLnN1YnN0cigxKSwxNik7Nz09PUc/Sj1bKGcmMTY3MTE2ODApPj4xNiwoZyY2NTI4MCk+PjgsZyYyNTUsMV06ND09PUcmJihKPVsoZyYzODQwKT4+NHwoZyYzODQwKT4+OCwoZyYyNDApPj40fApnJjI0MCwoZyYxNSk8PDR8ZyYxNSwxXSl9aWYoIUopZm9yKHQ9dGhpcy5wYXJzZXJzLmxlbmd0aDt0LS0mJiFKOyl7dmFyIEw9dGhpcy5wYXJzZXJzW3RdOyhHPUwucmVnZXguZXhlYyhnKSkmJihKPUwucGFyc2UoRykpfX10aGlzLnJnYmE9Snx8W119O2MucHJvdG90eXBlLmdldD1mdW5jdGlvbihjKXt2YXIgZz10aGlzLmlucHV0LHQ9dGhpcy5yZ2JhO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIHRoaXMuc3RvcHMpe3ZhciBHPXkoZyk7Ry5zdG9wcz1bXS5jb25jYXQoRy5zdG9wcyk7dGhpcy5zdG9wcy5mb3JFYWNoKGZ1bmN0aW9uKGcsdil7Ry5zdG9wc1t2XT1bRy5zdG9wc1t2XVswXSxnLmdldChjKV19KX1lbHNlIEc9dCYmUih0WzBdKT8icmdiIj09PWN8fCFjJiYxPT09dFszXT8icmdiKCIrdFswXSsiLCIrdFsxXSsiLCIrdFsyXSsiKSI6ImEiPT09Yz90WzNdOiJyZ2JhKCIrdC5qb2luKCIsIikrIikiOmc7cmV0dXJuIEd9O2MucHJvdG90eXBlLmJyaWdodGVuPWZ1bmN0aW9uKGMpe3ZhciBnLAp0PXRoaXMucmdiYTtpZih0aGlzLnN0b3BzKXRoaXMuc3RvcHMuZm9yRWFjaChmdW5jdGlvbihnKXtnLmJyaWdodGVuKGMpfSk7ZWxzZSBpZihSKGMpJiYwIT09Yylmb3IoZz0wOzM+ZztnKyspdFtnXSs9cSgyNTUqYyksMD50W2ddJiYodFtnXT0wKSwyNTU8dFtnXSYmKHRbZ109MjU1KTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuc2V0T3BhY2l0eT1mdW5jdGlvbihjKXt0aGlzLnJnYmFbM109YztyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUudHdlZW5Ubz1mdW5jdGlvbihjLGcpe3ZhciB0PXRoaXMucmdiYSxHPWMucmdiYTtHLmxlbmd0aCYmdCYmdC5sZW5ndGg/KGM9MSE9PUdbM118fDEhPT10WzNdLGc9KGM/InJnYmEoIjoicmdiKCIpK01hdGgucm91bmQoR1swXSsodFswXS1HWzBdKSooMS1nKSkrIiwiK01hdGgucm91bmQoR1sxXSsodFsxXS1HWzFdKSooMS1nKSkrIiwiK01hdGgucm91bmQoR1syXSsodFsyXS1HWzJdKSooMS1nKSkrKGM/IiwiKyhHWzNdKyh0WzNdLUdbM10pKigxLQpnKSk6IiIpKyIpIik6Zz1jLmlucHV0fHwibm9uZSI7cmV0dXJuIGd9O2MubmFtZXM9e3doaXRlOiIjZmZmZmZmIixibGFjazoiIzAwMDAwMCJ9O3JldHVybiBjfSgpO2cuQ29sb3I9YztnLmNvbG9yPWMucGFyc2U7cmV0dXJuIGcuQ29sb3J9KTtPKHEsInBhcnRzL1NWR0VsZW1lbnQuanMiLFtxWyJwYXJ0cy9Db2xvci5qcyJdLHFbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEpe3ZhciB5PWMuZGVnMnJhZCxCPWMuZG9jLEg9Yy5oYXNUb3VjaCxEPWMuaXNGaXJlZm94LEo9Yy5ub29wLHQ9Yy5zdmcsRz1jLlNWR19OUyxMPWMud2luLHY9cS5hbmltYXRlLEs9cS5hbmltT2JqZWN0LG49cS5hdHRyLHI9cS5jcmVhdGVFbGVtZW50LEM9cS5jc3MsST1xLmRlZmluZWQscD1xLmVyYXNlLG09cS5leHRlbmQsZD1xLmZpcmVFdmVudCxsPXEuaXNBcnJheSxrPXEuaXNGdW5jdGlvbixmPXEuaXNOdW1iZXIsYT1xLmlzU3RyaW5nLEE9cS5tZXJnZSwKdT1xLm9iamVjdEVhY2gsRT1xLnBpY2ssUD1xLnBJbnQsdz1xLnN0b3AsTT1xLnVuaXF1ZUtleTsiIjtxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gRigpe3RoaXMuaGVpZ2h0PXRoaXMuZWxlbWVudD12b2lkIDA7dGhpcy5vcGFjaXR5PTE7dGhpcy5yZW5kZXJlcj12b2lkIDA7dGhpcy5TVkdfTlM9Rzt0aGlzLnN5bWJvbEN1c3RvbUF0dHJpYnM9InggeSB3aWR0aCBoZWlnaHQgciBzdGFydCBlbmQgaW5uZXJSIGFuY2hvclggYW5jaG9yWSByb3VuZGVkIi5zcGxpdCgiICIpO3RoaXMud2lkdGg9dm9pZCAwfUYucHJvdG90eXBlLl9kZWZhdWx0R2V0dGVyPWZ1bmN0aW9uKGEpe2E9RSh0aGlzW2ErIlZhbHVlIl0sdGhpc1thXSx0aGlzLmVsZW1lbnQ/dGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZShhKTpudWxsLDApOy9eW1wtMC05XC5dKyQvLnRlc3QoYSkmJihhPXBhcnNlRmxvYXQoYSkpO3JldHVybiBhfTtGLnByb3RvdHlwZS5fZGVmYXVsdFNldHRlcj1mdW5jdGlvbihhLGUsYil7Yi5zZXRBdHRyaWJ1dGUoZSwKYSl9O0YucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXt2YXIgZT10aGlzLnJlbmRlcmVyLGI9dGhpcy5lbGVtZW50O2EmJih0aGlzLnBhcmVudEdyb3VwPWEpO3RoaXMucGFyZW50SW52ZXJ0ZWQ9YSYmYS5pbnZlcnRlZDsidW5kZWZpbmVkIiE9PXR5cGVvZiB0aGlzLnRleHRTdHImJiJ0ZXh0Ij09PXRoaXMuZWxlbWVudC5ub2RlTmFtZSYmZS5idWlsZFRleHQodGhpcyk7dGhpcy5hZGRlZD0hMDtpZighYXx8YS5oYW5kbGVafHx0aGlzLnpJbmRleCl2YXIgaD10aGlzLnpJbmRleFNldHRlcigpO2h8fChhP2EuZWxlbWVudDplLmJveCkuYXBwZW5kQ2hpbGQoYik7aWYodGhpcy5vbkFkZCl0aGlzLm9uQWRkKCk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLmFkZENsYXNzPWZ1bmN0aW9uKGEsZSl7dmFyIGI9ZT8iIjp0aGlzLmF0dHIoImNsYXNzIil8fCIiO2E9KGF8fCIiKS5zcGxpdCgvIC9nKS5yZWR1Y2UoZnVuY3Rpb24oaCxlKXstMT09PWIuaW5kZXhPZihlKSYmaC5wdXNoKGUpO3JldHVybiBofSwKYj9bYl06W10pLmpvaW4oIiAiKTthIT09YiYmdGhpcy5hdHRyKCJjbGFzcyIsYSk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLmFmdGVyU2V0dGVycz1mdW5jdGlvbigpe3RoaXMuZG9UcmFuc2Zvcm0mJih0aGlzLnVwZGF0ZVRyYW5zZm9ybSgpLHRoaXMuZG9UcmFuc2Zvcm09ITEpfTtGLnByb3RvdHlwZS5hbGlnbj1mdW5jdGlvbihmLGUsYil7dmFyIGgsej17fTt2YXIgeD10aGlzLnJlbmRlcmVyO3ZhciBkPXguYWxpZ25lZE9iamVjdHM7dmFyIGssbDtpZihmKXtpZih0aGlzLmFsaWduT3B0aW9ucz1mLHRoaXMuYWxpZ25CeVRyYW5zbGF0ZT1lLCFifHxhKGIpKXRoaXMuYWxpZ25Ubz1oPWJ8fCJyZW5kZXJlciIscChkLHRoaXMpLGQucHVzaCh0aGlzKSxiPXZvaWQgMH1lbHNlIGY9dGhpcy5hbGlnbk9wdGlvbnMsZT10aGlzLmFsaWduQnlUcmFuc2xhdGUsaD10aGlzLmFsaWduVG87Yj1FKGIseFtoXSx4KTtoPWYuYWxpZ247eD1mLnZlcnRpY2FsQWxpZ247ZD0oYi54fHwwKSsoZi54fHwKMCk7dmFyIHU9KGIueXx8MCkrKGYueXx8MCk7InJpZ2h0Ij09PWg/az0xOiJjZW50ZXIiPT09aCYmKGs9Mik7ayYmKGQrPShiLndpZHRoLShmLndpZHRofHwwKSkvayk7eltlPyJ0cmFuc2xhdGVYIjoieCJdPU1hdGgucm91bmQoZCk7ImJvdHRvbSI9PT14P2w9MToibWlkZGxlIj09PXgmJihsPTIpO2wmJih1Kz0oYi5oZWlnaHQtKGYuaGVpZ2h0fHwwKSkvbCk7eltlPyJ0cmFuc2xhdGVZIjoieSJdPU1hdGgucm91bmQodSk7dGhpc1t0aGlzLnBsYWNlZD8iYW5pbWF0ZSI6ImF0dHIiXSh6KTt0aGlzLnBsYWNlZD0hMDt0aGlzLmFsaWduQXR0cj16O3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5hbGlnblNldHRlcj1mdW5jdGlvbihhKXt2YXIgZT17bGVmdDoic3RhcnQiLGNlbnRlcjoibWlkZGxlIixyaWdodDoiZW5kIn07ZVthXSYmKHRoaXMuYWxpZ25WYWx1ZT1hLHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRleHQtYW5jaG9yIixlW2FdKSl9O0YucHJvdG90eXBlLmFuaW1hdGU9CmZ1bmN0aW9uKGEsZSxiKXt2YXIgaD1LKEUoZSx0aGlzLnJlbmRlcmVyLmdsb2JhbEFuaW1hdGlvbiwhMCkpO0UoQi5oaWRkZW4sQi5tc0hpZGRlbixCLndlYmtpdEhpZGRlbiwhMSkmJihoLmR1cmF0aW9uPTApOzAhPT1oLmR1cmF0aW9uPyhiJiYoaC5jb21wbGV0ZT1iKSx2KHRoaXMsYSxoKSk6KHRoaXMuYXR0cihhLHZvaWQgMCxiKSx1KGEsZnVuY3Rpb24oYixlKXtoLnN0ZXAmJmguc3RlcC5jYWxsKHRoaXMsYix7cHJvcDplLHBvczoxfSl9LHRoaXMpKTtyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUuYXBwbHlUZXh0T3V0bGluZT1mdW5jdGlvbihhKXt2YXIgZT10aGlzLmVsZW1lbnQsYjstMSE9PWEuaW5kZXhPZigiY29udHJhc3QiKSYmKGE9YS5yZXBsYWNlKC9jb250cmFzdC9nLHRoaXMucmVuZGVyZXIuZ2V0Q29udHJhc3QoZS5zdHlsZS5maWxsKSkpO2E9YS5zcGxpdCgiICIpO3ZhciBoPWFbYS5sZW5ndGgtMV07aWYoKGI9YVswXSkmJiJub25lIiE9PWImJmMuc3ZnKXt0aGlzLmZha2VUUz0KITA7YT1bXS5zbGljZS5jYWxsKGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRzcGFuIikpO3RoaXMueVNldHRlcj10aGlzLnhTZXR0ZXI7Yj1iLnJlcGxhY2UoLyheW1xkXC5dKykoLio/KSQvZyxmdW5jdGlvbihiLGgsZSl7cmV0dXJuIDIqaCtlfSk7dGhpcy5yZW1vdmVUZXh0T3V0bGluZShhKTt2YXIgej1lLnRleHRDb250ZW50Py9eW1x1MDU5MS1cdTA2NUZcdTA2NkEtXHUwN0ZGXHVGQjFELVx1RkRGRFx1RkU3MC1cdUZFRkNdLy50ZXN0KGUudGV4dENvbnRlbnQpOiExO3ZhciB4PWUuZmlyc3RDaGlsZDthLmZvckVhY2goZnVuY3Rpb24oYSxmKXswPT09ZiYmKGEuc2V0QXR0cmlidXRlKCJ4IixlLmdldEF0dHJpYnV0ZSgieCIpKSxmPWUuZ2V0QXR0cmlidXRlKCJ5IiksYS5zZXRBdHRyaWJ1dGUoInkiLGZ8fDApLG51bGw9PT1mJiZlLnNldEF0dHJpYnV0ZSgieSIsMCkpO2Y9YS5jbG9uZU5vZGUoITApO24oeiYmIUQ/YTpmLHsiY2xhc3MiOiJoaWdoY2hhcnRzLXRleHQtb3V0bGluZSIsCmZpbGw6aCxzdHJva2U6aCwic3Ryb2tlLXdpZHRoIjpiLCJzdHJva2UtbGluZWpvaW4iOiJyb3VuZCJ9KTtlLmluc2VydEJlZm9yZShmLHgpfSk7eiYmRCYmYVswXSYmKGE9YVswXS5jbG9uZU5vZGUoITApLGEudGV4dENvbnRlbnQ9IiAiLGUuaW5zZXJ0QmVmb3JlKGEseCkpfX07Ri5wcm90b3R5cGUuYXR0cj1mdW5jdGlvbihhLGUsYixoKXt2YXIgej10aGlzLmVsZW1lbnQseCxmPXRoaXMsZCxrLGw9dGhpcy5zeW1ib2xDdXN0b21BdHRyaWJzO2lmKCJzdHJpbmciPT09dHlwZW9mIGEmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGUpe3ZhciBtPWE7YT17fTthW21dPWV9InN0cmluZyI9PT10eXBlb2YgYT9mPSh0aGlzW2ErIkdldHRlciJdfHx0aGlzLl9kZWZhdWx0R2V0dGVyKS5jYWxsKHRoaXMsYSx6KToodShhLGZ1bmN0aW9uKGIsZSl7ZD0hMTtofHx3KHRoaXMsZSk7dGhpcy5zeW1ib2xOYW1lJiYtMSE9PWwuaW5kZXhPZihlKSYmKHh8fCh0aGlzLnN5bWJvbEF0dHIoYSkseD0hMCksZD0KITApOyF0aGlzLnJvdGF0aW9ufHwieCIhPT1lJiYieSIhPT1lfHwodGhpcy5kb1RyYW5zZm9ybT0hMCk7ZHx8KGs9dGhpc1tlKyJTZXR0ZXIiXXx8dGhpcy5fZGVmYXVsdFNldHRlcixrLmNhbGwodGhpcyxiLGUseiksIXRoaXMuc3R5bGVkTW9kZSYmdGhpcy5zaGFkb3dzJiYvXih3aWR0aHxoZWlnaHR8dmlzaWJpbGl0eXx4fHl8ZHx0cmFuc2Zvcm18Y3h8Y3l8cikkLy50ZXN0KGUpJiZ0aGlzLnVwZGF0ZVNoYWRvd3MoZSxiLGspKX0sdGhpcyksdGhpcy5hZnRlclNldHRlcnMoKSk7YiYmYi5jYWxsKHRoaXMpO3JldHVybiBmfTtGLnByb3RvdHlwZS5jbGlwPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmF0dHIoImNsaXAtcGF0aCIsYT8idXJsKCIrdGhpcy5yZW5kZXJlci51cmwrIiMiK2EuaWQrIikiOiJub25lIil9O0YucHJvdG90eXBlLmNyaXNwPWZ1bmN0aW9uKGEsZSl7ZT1lfHxhLnN0cm9rZVdpZHRofHwwO3ZhciBiPU1hdGgucm91bmQoZSklMi8yO2EueD1NYXRoLmZsb29yKGEueHx8CnRoaXMueHx8MCkrYjthLnk9TWF0aC5mbG9vcihhLnl8fHRoaXMueXx8MCkrYjthLndpZHRoPU1hdGguZmxvb3IoKGEud2lkdGh8fHRoaXMud2lkdGh8fDApLTIqYik7YS5oZWlnaHQ9TWF0aC5mbG9vcigoYS5oZWlnaHR8fHRoaXMuaGVpZ2h0fHwwKS0yKmIpO0koYS5zdHJva2VXaWR0aCkmJihhLnN0cm9rZVdpZHRoPWUpO3JldHVybiBhfTtGLnByb3RvdHlwZS5jb21wbGV4Q29sb3I9ZnVuY3Rpb24oYSxlLGIpe3ZhciBoPXRoaXMucmVuZGVyZXIseix4LGYsayxtLHAsdyxDLFEscixFPVtdLFM7ZCh0aGlzLnJlbmRlcmVyLCJjb21wbGV4Q29sb3IiLHthcmdzOmFyZ3VtZW50c30sZnVuY3Rpb24oKXthLnJhZGlhbEdyYWRpZW50P3g9InJhZGlhbEdyYWRpZW50IjphLmxpbmVhckdyYWRpZW50JiYoeD0ibGluZWFyR3JhZGllbnQiKTtpZih4KXtmPWFbeF07bT1oLmdyYWRpZW50cztwPWEuc3RvcHM7UT1iLnJhZGlhbFJlZmVyZW5jZTtsKGYpJiYoYVt4XT1mPXt4MTpmWzBdLHkxOmZbMV0sCngyOmZbMl0seTI6ZlszXSxncmFkaWVudFVuaXRzOiJ1c2VyU3BhY2VPblVzZSJ9KTsicmFkaWFsR3JhZGllbnQiPT09eCYmUSYmIUkoZi5ncmFkaWVudFVuaXRzKSYmKGs9ZixmPUEoZixoLmdldFJhZGlhbEF0dHIoUSxrKSx7Z3JhZGllbnRVbml0czoidXNlclNwYWNlT25Vc2UifSkpO3UoZixmdW5jdGlvbihiLGgpeyJpZCIhPT1oJiZFLnB1c2goaCxiKX0pO3UocCxmdW5jdGlvbihiKXtFLnB1c2goYil9KTtFPUUuam9pbigiLCIpO2lmKG1bRV0pcj1tW0VdLmF0dHIoImlkIik7ZWxzZXtmLmlkPXI9TSgpO3ZhciBkPW1bRV09aC5jcmVhdGVFbGVtZW50KHgpLmF0dHIoZikuYWRkKGguZGVmcyk7ZC5yYWRBdHRyPWs7ZC5zdG9wcz1bXTtwLmZvckVhY2goZnVuY3Rpb24oYil7MD09PWJbMV0uaW5kZXhPZigicmdiYSIpPyh6PWcucGFyc2UoYlsxXSksdz16LmdldCgicmdiIiksQz16LmdldCgiYSIpKToodz1iWzFdLEM9MSk7Yj1oLmNyZWF0ZUVsZW1lbnQoInN0b3AiKS5hdHRyKHtvZmZzZXQ6YlswXSwKInN0b3AtY29sb3IiOncsInN0b3Atb3BhY2l0eSI6Q30pLmFkZChkKTtkLnN0b3BzLnB1c2goYil9KX1TPSJ1cmwoIitoLnVybCsiIyIrcisiKSI7Yi5zZXRBdHRyaWJ1dGUoZSxTKTtiLmdyYWRpZW50PUU7YS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBTfX19KX07Ri5wcm90b3R5cGUuY3NzPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXMuc3R5bGVzLGI9e30saD10aGlzLmVsZW1lbnQsej0iIix4PSFlLGY9WyJ0ZXh0T3V0bGluZSIsInRleHRPdmVyZmxvdyIsIndpZHRoIl07YSYmYS5jb2xvciYmKGEuZmlsbD1hLmNvbG9yKTtlJiZ1KGEsZnVuY3Rpb24oaCxhKXtlJiZlW2FdIT09aCYmKGJbYV09aCx4PSEwKX0pO2lmKHgpe2UmJihhPW0oZSxiKSk7aWYoYSlpZihudWxsPT09YS53aWR0aHx8ImF1dG8iPT09YS53aWR0aClkZWxldGUgdGhpcy50ZXh0V2lkdGg7ZWxzZSBpZigidGV4dCI9PT1oLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJmEud2lkdGgpdmFyIGQ9dGhpcy50ZXh0V2lkdGg9ClAoYS53aWR0aCk7dGhpcy5zdHlsZXM9YTtkJiYhdCYmdGhpcy5yZW5kZXJlci5mb3JFeHBvcnQmJmRlbGV0ZSBhLndpZHRoO2lmKGgubmFtZXNwYWNlVVJJPT09dGhpcy5TVkdfTlMpe3ZhciBrPWZ1bmN0aW9uKGIsaCl7cmV0dXJuIi0iK2gudG9Mb3dlckNhc2UoKX07dShhLGZ1bmN0aW9uKGIsaCl7LTE9PT1mLmluZGV4T2YoaCkmJih6Kz1oLnJlcGxhY2UoLyhbQS1aXSkvZyxrKSsiOiIrYisiOyIpfSk7eiYmbihoLCJzdHlsZSIseil9ZWxzZSBDKGgsYSk7dGhpcy5hZGRlZCYmKCJ0ZXh0Ij09PXRoaXMuZWxlbWVudC5ub2RlTmFtZSYmdGhpcy5yZW5kZXJlci5idWlsZFRleHQodGhpcyksYSYmYS50ZXh0T3V0bGluZSYmdGhpcy5hcHBseVRleHRPdXRsaW5lKGEudGV4dE91dGxpbmUpKX1yZXR1cm4gdGhpc307Ri5wcm90b3R5cGUuZGFzaHN0eWxlU2V0dGVyPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXNbInN0cm9rZS13aWR0aCJdOyJpbmhlcml0Ij09PWUmJihlPTEpO2lmKGE9YSYmYS50b0xvd2VyQ2FzZSgpKXt2YXIgYj0KYS5yZXBsYWNlKCJzaG9ydGRhc2hkb3Rkb3QiLCIzLDEsMSwxLDEsMSwiKS5yZXBsYWNlKCJzaG9ydGRhc2hkb3QiLCIzLDEsMSwxIikucmVwbGFjZSgic2hvcnRkb3QiLCIxLDEsIikucmVwbGFjZSgic2hvcnRkYXNoIiwiMywxLCIpLnJlcGxhY2UoImxvbmdkYXNoIiwiOCwzLCIpLnJlcGxhY2UoL2RvdC9nLCIxLDMsIikucmVwbGFjZSgiZGFzaCIsIjQsMywiKS5yZXBsYWNlKC8sJC8sIiIpLnNwbGl0KCIsIik7Zm9yKGE9Yi5sZW5ndGg7YS0tOyliW2FdPSIiK1AoYlthXSkqRShlLE5hTik7YT1iLmpvaW4oIiwiKS5yZXBsYWNlKC9OYU4vZywibm9uZSIpO3RoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInN0cm9rZS1kYXNoYXJyYXkiLGEpfX07Ri5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciBhPXRoaXMsZT1hLmVsZW1lbnR8fHt9LGI9YS5yZW5kZXJlcixoPWIuaXNTVkcmJiJTUEFOIj09PWUubm9kZU5hbWUmJmEucGFyZW50R3JvdXB8fHZvaWQgMCx6PWUub3duZXJTVkdFbGVtZW50OwplLm9uY2xpY2s9ZS5vbm1vdXNlb3V0PWUub25tb3VzZW92ZXI9ZS5vbm1vdXNlbW92ZT1lLnBvaW50PW51bGw7dyhhKTtpZihhLmNsaXBQYXRoJiZ6KXt2YXIgeD1hLmNsaXBQYXRoO1tdLmZvckVhY2guY2FsbCh6LnF1ZXJ5U2VsZWN0b3JBbGwoIltjbGlwLXBhdGhdLFtDTElQLVBBVEhdIiksZnVuY3Rpb24oYil7LTE8Yi5nZXRBdHRyaWJ1dGUoImNsaXAtcGF0aCIpLmluZGV4T2YoeC5lbGVtZW50LmlkKSYmYi5yZW1vdmVBdHRyaWJ1dGUoImNsaXAtcGF0aCIpfSk7YS5jbGlwUGF0aD14LmRlc3Ryb3koKX1pZihhLnN0b3BzKXtmb3Ioej0wO3o8YS5zdG9wcy5sZW5ndGg7eisrKWEuc3RvcHNbel0uZGVzdHJveSgpO2Euc3RvcHMubGVuZ3RoPTA7YS5zdG9wcz12b2lkIDB9YS5zYWZlUmVtb3ZlQ2hpbGQoZSk7Zm9yKGIuc3R5bGVkTW9kZXx8YS5kZXN0cm95U2hhZG93cygpO2gmJmguZGl2JiYwPT09aC5kaXYuY2hpbGROb2Rlcy5sZW5ndGg7KWU9aC5wYXJlbnRHcm91cCxhLnNhZmVSZW1vdmVDaGlsZChoLmRpdiksCmRlbGV0ZSBoLmRpdixoPWU7YS5hbGlnblRvJiZwKGIuYWxpZ25lZE9iamVjdHMsYSk7dShhLGZ1bmN0aW9uKGIsaCl7YVtoXSYmYVtoXS5wYXJlbnRHcm91cD09PWEmJmFbaF0uZGVzdHJveSYmYVtoXS5kZXN0cm95KCk7ZGVsZXRlIGFbaF19KX07Ri5wcm90b3R5cGUuZGVzdHJveVNoYWRvd3M9ZnVuY3Rpb24oKXsodGhpcy5zaGFkb3dzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXt0aGlzLnNhZmVSZW1vdmVDaGlsZChhKX0sdGhpcyk7dGhpcy5zaGFkb3dzPXZvaWQgMH07Ri5wcm90b3R5cGUuZGVzdHJveVRleHRQYXRoPWZ1bmN0aW9uKGEsZSl7dmFyIGI9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGV4dCIpWzBdO2lmKGIpe2lmKGIucmVtb3ZlQXR0cmlidXRlKCJkeCIpLGIucmVtb3ZlQXR0cmlidXRlKCJkeSIpLGUuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImlkIiwiIiksdGhpcy50ZXh0UGF0aFdyYXBwZXImJmIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRleHRQYXRoIikubGVuZ3RoKXtmb3IoYT0KdGhpcy50ZXh0UGF0aFdyYXBwZXIuZWxlbWVudC5jaGlsZE5vZGVzO2EubGVuZ3RoOyliLmFwcGVuZENoaWxkKGFbMF0pO2IucmVtb3ZlQ2hpbGQodGhpcy50ZXh0UGF0aFdyYXBwZXIuZWxlbWVudCl9fWVsc2UgaWYoYS5nZXRBdHRyaWJ1dGUoImR4Iil8fGEuZ2V0QXR0cmlidXRlKCJkeSIpKWEucmVtb3ZlQXR0cmlidXRlKCJkeCIpLGEucmVtb3ZlQXR0cmlidXRlKCJkeSIpO3RoaXMudGV4dFBhdGhXcmFwcGVyJiYodGhpcy50ZXh0UGF0aFdyYXBwZXI9dGhpcy50ZXh0UGF0aFdyYXBwZXIuZGVzdHJveSgpKX07Ri5wcm90b3R5cGUuZFNldHRlcj1mdW5jdGlvbihhLGUsYil7bChhKSYmKCJzdHJpbmciPT09dHlwZW9mIGFbMF0mJihhPXRoaXMucmVuZGVyZXIucGF0aFRvU2VnbWVudHMoYSkpLHRoaXMucGF0aEFycmF5PWEsYT1hLnJlZHVjZShmdW5jdGlvbihiLGEsZSl7cmV0dXJuIGEmJmEuam9pbj8oZT9iKyIgIjoiIikrYS5qb2luKCIgIik6KGF8fCIiKS50b1N0cmluZygpfSwiIikpOwovKE5hTnwgezJ9fF4kKS8udGVzdChhKSYmKGE9Ik0gMCAwIik7dGhpc1tlXSE9PWEmJihiLnNldEF0dHJpYnV0ZShlLGEpLHRoaXNbZV09YSl9O0YucHJvdG90eXBlLmZhZGVPdXQ9ZnVuY3Rpb24oYSl7dmFyIGU9dGhpcztlLmFuaW1hdGUoe29wYWNpdHk6MH0se2R1cmF0aW9uOkUoYSwxNTApLGNvbXBsZXRlOmZ1bmN0aW9uKCl7ZS5hdHRyKHt5Oi05OTk5fSkuaGlkZSgpfX0pfTtGLnByb3RvdHlwZS5maWxsU2V0dGVyPWZ1bmN0aW9uKGEsZSxiKXsic3RyaW5nIj09PXR5cGVvZiBhP2Iuc2V0QXR0cmlidXRlKGUsYSk6YSYmdGhpcy5jb21wbGV4Q29sb3IoYSxlLGIpfTtGLnByb3RvdHlwZS5nZXRCQm94PWZ1bmN0aW9uKGEsZSl7dmFyIGIsaD10aGlzLnJlbmRlcmVyLHo9dGhpcy5lbGVtZW50LHg9dGhpcy5zdHlsZXMsZj10aGlzLnRleHRTdHIsZD1oLmNhY2hlLGw9aC5jYWNoZUtleXMsdT16Lm5hbWVzcGFjZVVSST09PXRoaXMuU1ZHX05TO2U9RShlLHRoaXMucm90YXRpb24sMCk7CnZhciBBPWguc3R5bGVkTW9kZT96JiZGLnByb3RvdHlwZS5nZXRTdHlsZS5jYWxsKHosImZvbnQtc2l6ZSIpOngmJnguZm9udFNpemU7aWYoSShmKSl7dmFyIHA9Zi50b1N0cmluZygpOy0xPT09cC5pbmRleE9mKCI8IikmJihwPXAucmVwbGFjZSgvWzAtOV0vZywiMCIpKTtwKz1bIiIsZSxBLHRoaXMudGV4dFdpZHRoLHgmJngudGV4dE92ZXJmbG93LHgmJnguZm9udFdlaWdodF0uam9pbigpfXAmJiFhJiYoYj1kW3BdKTtpZighYil7aWYodXx8aC5mb3JFeHBvcnQpe3RyeXt2YXIgdz10aGlzLmZha2VUUyYmZnVuY3Rpb24oYil7W10uZm9yRWFjaC5jYWxsKHoucXVlcnlTZWxlY3RvckFsbCgiLmhpZ2hjaGFydHMtdGV4dC1vdXRsaW5lIiksZnVuY3Rpb24oaCl7aC5zdHlsZS5kaXNwbGF5PWJ9KX07ayh3KSYmdygibm9uZSIpO2I9ei5nZXRCQm94P20oe30sei5nZXRCQm94KCkpOnt3aWR0aDp6Lm9mZnNldFdpZHRoLGhlaWdodDp6Lm9mZnNldEhlaWdodH07ayh3KSYmdygiIil9Y2F0Y2goWCl7IiJ9aWYoIWJ8fAowPmIud2lkdGgpYj17d2lkdGg6MCxoZWlnaHQ6MH19ZWxzZSBiPXRoaXMuaHRtbEdldEJCb3goKTtoLmlzU1ZHJiYoYT1iLndpZHRoLGg9Yi5oZWlnaHQsdSYmKGIuaGVpZ2h0PWg9eyIxMXB4LDE3IjoxNCwiMTNweCwyMCI6MTZ9W3gmJnguZm9udFNpemUrIiwiK01hdGgucm91bmQoaCldfHxoKSxlJiYoeD1lKnksYi53aWR0aD1NYXRoLmFicyhoKk1hdGguc2luKHgpKStNYXRoLmFicyhhKk1hdGguY29zKHgpKSxiLmhlaWdodD1NYXRoLmFicyhoKk1hdGguY29zKHgpKStNYXRoLmFicyhhKk1hdGguc2luKHgpKSkpO2lmKHAmJjA8Yi5oZWlnaHQpe2Zvcig7MjUwPGwubGVuZ3RoOylkZWxldGUgZFtsLnNoaWZ0KCldO2RbcF18fGwucHVzaChwKTtkW3BdPWJ9fXJldHVybiBifTtGLnByb3RvdHlwZS5nZXRTdHlsZT1mdW5jdGlvbihhKXtyZXR1cm4gTC5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudHx8dGhpcywiIikuZ2V0UHJvcGVydHlWYWx1ZShhKX07Ri5wcm90b3R5cGUuaGFzQ2xhc3M9CmZ1bmN0aW9uKGEpe3JldHVybi0xIT09KCIiK3RoaXMuYXR0cigiY2xhc3MiKSkuc3BsaXQoIiAiKS5pbmRleE9mKGEpfTtGLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKGEpe2E/dGhpcy5hdHRyKHt5Oi05OTk5fSk6dGhpcy5hdHRyKHt2aXNpYmlsaXR5OiJoaWRkZW4ifSk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLmh0bWxHZXRCQm94PWZ1bmN0aW9uKCl7cmV0dXJue2hlaWdodDowLHdpZHRoOjAseDowLHk6MH19O0YucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYSxlKXt0aGlzLmVsZW1lbnQ9InNwYW4iPT09ZT9yKGUpOkIuY3JlYXRlRWxlbWVudE5TKHRoaXMuU1ZHX05TLGUpO3RoaXMucmVuZGVyZXI9YTtkKHRoaXMsImFmdGVySW5pdCIpfTtGLnByb3RvdHlwZS5pbnZlcnQ9ZnVuY3Rpb24oYSl7dGhpcy5pbnZlcnRlZD1hO3RoaXMudXBkYXRlVHJhbnNmb3JtKCk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLm9uPWZ1bmN0aW9uKGEsZSl7dmFyIGIsaCx6PXRoaXMuZWxlbWVudCwKeDtIJiYiY2xpY2siPT09YT8oei5vbnRvdWNoc3RhcnQ9ZnVuY3Rpb24oYSl7Yj1hLnRvdWNoZXNbMF0uY2xpZW50WDtoPWEudG91Y2hlc1swXS5jbGllbnRZfSx6Lm9udG91Y2hlbmQ9ZnVuY3Rpb24oYSl7YiYmNDw9TWF0aC5zcXJ0KE1hdGgucG93KGItYS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRYLDIpK01hdGgucG93KGgtYS5jaGFuZ2VkVG91Y2hlc1swXS5jbGllbnRZLDIpKXx8ZS5jYWxsKHosYSk7eD0hMDthLnByZXZlbnREZWZhdWx0KCl9LHoub25jbGljaz1mdW5jdGlvbihiKXt4fHxlLmNhbGwoeixiKX0pOnpbIm9uIithXT1lO3JldHVybiB0aGlzfTtGLnByb3RvdHlwZS5vcGFjaXR5U2V0dGVyPWZ1bmN0aW9uKGEsZSxiKXt0aGlzW2VdPWE7Yi5zZXRBdHRyaWJ1dGUoZSxhKX07Ri5wcm90b3R5cGUucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCgiIit0aGlzLmF0dHIoImNsYXNzIikpLnJlcGxhY2UoYShmKT9uZXcgUmVnRXhwKCIoXnwgKSIrCmYrIiggfCQpIik6ZiwiICIpLnJlcGxhY2UoLyArL2csIiAiKS50cmltKCkpfTtGLnByb3RvdHlwZS5yZW1vdmVUZXh0T3V0bGluZT1mdW5jdGlvbihhKXtmb3IodmFyIGU9YS5sZW5ndGgsYjtlLS07KWI9YVtlXSwiaGlnaGNoYXJ0cy10ZXh0LW91dGxpbmUiPT09Yi5nZXRBdHRyaWJ1dGUoImNsYXNzIikmJnAoYSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGQoYikpfTtGLnByb3RvdHlwZS5zYWZlUmVtb3ZlQ2hpbGQ9ZnVuY3Rpb24oYSl7dmFyIGU9YS5wYXJlbnROb2RlO2UmJmUucmVtb3ZlQ2hpbGQoYSl9O0YucHJvdG90eXBlLnNldFJhZGlhbFJlZmVyZW5jZT1mdW5jdGlvbihhKXt2YXIgZT10aGlzLmVsZW1lbnQuZ3JhZGllbnQmJnRoaXMucmVuZGVyZXIuZ3JhZGllbnRzW3RoaXMuZWxlbWVudC5ncmFkaWVudF07dGhpcy5lbGVtZW50LnJhZGlhbFJlZmVyZW5jZT1hO2UmJmUucmFkQXR0ciYmZS5hbmltYXRlKHRoaXMucmVuZGVyZXIuZ2V0UmFkaWFsQXR0cihhLGUucmFkQXR0cikpOwpyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUuc2V0VGV4dFBhdGg9ZnVuY3Rpb24oYSxlKXt2YXIgYj10aGlzLmVsZW1lbnQsaD17dGV4dEFuY2hvcjoidGV4dC1hbmNob3IifSx6PSExLHg9dGhpcy50ZXh0UGF0aFdyYXBwZXIsZD0heDtlPUEoITAse2VuYWJsZWQ6ITAsYXR0cmlidXRlczp7ZHk6LTUsc3RhcnRPZmZzZXQ6IjUwJSIsdGV4dEFuY2hvcjoibWlkZGxlIn19LGUpO3ZhciBrPWUuYXR0cmlidXRlcztpZihhJiZlJiZlLmVuYWJsZWQpe3gmJm51bGw9PT14LmVsZW1lbnQucGFyZW50Tm9kZT8oZD0hMCx4PXguZGVzdHJveSgpKTp4JiZ0aGlzLnJlbW92ZVRleHRPdXRsaW5lLmNhbGwoeC5wYXJlbnRHcm91cCxbXS5zbGljZS5jYWxsKGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRzcGFuIikpKTt0aGlzLm9wdGlvbnMmJnRoaXMub3B0aW9ucy5wYWRkaW5nJiYoay5keD0tdGhpcy5vcHRpb25zLnBhZGRpbmcpO3h8fCh0aGlzLnRleHRQYXRoV3JhcHBlcj14PXRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgidGV4dFBhdGgiKSwKej0hMCk7dmFyIGw9eC5lbGVtZW50OyhlPWEuZWxlbWVudC5nZXRBdHRyaWJ1dGUoImlkIikpfHxhLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJpZCIsZT1NKCkpO2lmKGQpZm9yKGE9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidHNwYW4iKTthLmxlbmd0aDspYVswXS5zZXRBdHRyaWJ1dGUoInkiLDApLGYoay5keCkmJmFbMF0uc2V0QXR0cmlidXRlKCJ4Iiwtay5keCksbC5hcHBlbmRDaGlsZChhWzBdKTt6JiZ4JiZ4LmFkZCh7ZWxlbWVudDp0aGlzLnRleHQ/dGhpcy50ZXh0LmVsZW1lbnQ6Yn0pO2wuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJocmVmIix0aGlzLnJlbmRlcmVyLnVybCsiIyIrZSk7SShrLmR5KSYmKGwucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoImR5IixrLmR5KSxkZWxldGUgay5keSk7SShrLmR4KSYmKGwucGFyZW50Tm9kZS5zZXRBdHRyaWJ1dGUoImR4IixrLmR4KSxkZWxldGUgay5keCk7dShrLGZ1bmN0aW9uKGIsYSl7bC5zZXRBdHRyaWJ1dGUoaFthXXx8CmEsYil9KTtiLnJlbW92ZUF0dHJpYnV0ZSgidHJhbnNmb3JtIik7dGhpcy5yZW1vdmVUZXh0T3V0bGluZS5jYWxsKHgsW10uc2xpY2UuY2FsbChiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0c3BhbiIpKSk7dGhpcy50ZXh0JiYhdGhpcy5yZW5kZXJlci5zdHlsZWRNb2RlJiZ0aGlzLmF0dHIoe2ZpbGw6Im5vbmUiLCJzdHJva2Utd2lkdGgiOjB9KTt0aGlzLmFwcGx5VGV4dE91dGxpbmU9dGhpcy51cGRhdGVUcmFuc2Zvcm09Sn1lbHNlIHgmJihkZWxldGUgdGhpcy51cGRhdGVUcmFuc2Zvcm0sZGVsZXRlIHRoaXMuYXBwbHlUZXh0T3V0bGluZSx0aGlzLmRlc3Ryb3lUZXh0UGF0aChiLGEpLHRoaXMudXBkYXRlVHJhbnNmb3JtKCksdGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMucm90YXRpb24mJnRoaXMuYXBwbHlUZXh0T3V0bGluZSh0aGlzLm9wdGlvbnMuc3R5bGUudGV4dE91dGxpbmUpKTtyZXR1cm4gdGhpc307Ri5wcm90b3R5cGUuc2hhZG93PWZ1bmN0aW9uKGEsZSxiKXt2YXIgaD0KW10sej10aGlzLmVsZW1lbnQseD0hMSxmPXRoaXMub2xkU2hhZG93T3B0aW9uczt2YXIgZD17Y29sb3I6IiMwMDAwMDAiLG9mZnNldFg6MSxvZmZzZXRZOjEsb3BhY2l0eTouMTUsd2lkdGg6M307dmFyIGs7ITA9PT1hP2s9ZDoib2JqZWN0Ij09PXR5cGVvZiBhJiYoaz1tKGQsYSkpO2smJihrJiZmJiZ1KGssZnVuY3Rpb24oYixoKXtiIT09ZltoXSYmKHg9ITApfSkseCYmdGhpcy5kZXN0cm95U2hhZG93cygpLHRoaXMub2xkU2hhZG93T3B0aW9ucz1rKTtpZighayl0aGlzLmRlc3Ryb3lTaGFkb3dzKCk7ZWxzZSBpZighdGhpcy5zaGFkb3dzKXt2YXIgbD1rLm9wYWNpdHkvay53aWR0aDt2YXIgQT10aGlzLnBhcmVudEludmVydGVkPyJ0cmFuc2xhdGUoLTEsLTEpIjoidHJhbnNsYXRlKCIray5vZmZzZXRYKyIsICIray5vZmZzZXRZKyIpIjtmb3IoZD0xO2Q8PWsud2lkdGg7ZCsrKXt2YXIgcD16LmNsb25lTm9kZSghMSk7dmFyIHc9MiprLndpZHRoKzEtMipkO24ocCx7c3Ryb2tlOmEuY29sb3J8fAoiIzAwMDAwMCIsInN0cm9rZS1vcGFjaXR5IjpsKmQsInN0cm9rZS13aWR0aCI6dyx0cmFuc2Zvcm06QSxmaWxsOiJub25lIn0pO3Auc2V0QXR0cmlidXRlKCJjbGFzcyIsKHAuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIikrIiBoaWdoY2hhcnRzLXNoYWRvdyIpO2ImJihuKHAsImhlaWdodCIsTWF0aC5tYXgobihwLCJoZWlnaHQiKS13LDApKSxwLmN1dEhlaWdodD13KTtlP2UuZWxlbWVudC5hcHBlbmRDaGlsZChwKTp6LnBhcmVudE5vZGUmJnoucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocCx6KTtoLnB1c2gocCl9dGhpcy5zaGFkb3dzPWh9cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYXR0cih7dmlzaWJpbGl0eTphPyJpbmhlcml0IjoidmlzaWJsZSJ9KX07Ri5wcm90b3R5cGUuc3Ryb2tlU2V0dGVyPWZ1bmN0aW9uKGEsZSxiKXt0aGlzW2VdPWE7dGhpcy5zdHJva2UmJnRoaXNbInN0cm9rZS13aWR0aCJdPyhGLnByb3RvdHlwZS5maWxsU2V0dGVyLmNhbGwodGhpcywKdGhpcy5zdHJva2UsInN0cm9rZSIsYiksYi5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdGhpc1sic3Ryb2tlLXdpZHRoIl0pLHRoaXMuaGFzU3Ryb2tlPSEwKToic3Ryb2tlLXdpZHRoIj09PWUmJjA9PT1hJiZ0aGlzLmhhc1N0cm9rZT8oYi5yZW1vdmVBdHRyaWJ1dGUoInN0cm9rZSIpLHRoaXMuaGFzU3Ryb2tlPSExKTp0aGlzLnJlbmRlcmVyLnN0eWxlZE1vZGUmJnRoaXNbInN0cm9rZS13aWR0aCJdJiYoYi5zZXRBdHRyaWJ1dGUoInN0cm9rZS13aWR0aCIsdGhpc1sic3Ryb2tlLXdpZHRoIl0pLHRoaXMuaGFzU3Ryb2tlPSEwKX07Ri5wcm90b3R5cGUuc3Ryb2tlV2lkdGg9ZnVuY3Rpb24oKXtpZighdGhpcy5yZW5kZXJlci5zdHlsZWRNb2RlKXJldHVybiB0aGlzWyJzdHJva2Utd2lkdGgiXXx8MDt2YXIgYT10aGlzLmdldFN0eWxlKCJzdHJva2Utd2lkdGgiKSxlPTA7aWYoYS5pbmRleE9mKCJweCIpPT09YS5sZW5ndGgtMillPVAoYSk7ZWxzZSBpZigiIiE9PWEpe3ZhciBiPQpCLmNyZWF0ZUVsZW1lbnROUyhHLCJyZWN0Iik7bihiLHt3aWR0aDphLCJzdHJva2Utd2lkdGgiOjB9KTt0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChiKTtlPWIuZ2V0QkJveCgpLndpZHRoO2IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1yZXR1cm4gZX07Ri5wcm90b3R5cGUuc3ltYm9sQXR0cj1mdW5jdGlvbihhKXt2YXIgZT10aGlzOyJ4IHkgciBzdGFydCBlbmQgd2lkdGggaGVpZ2h0IGlubmVyUiBhbmNob3JYIGFuY2hvclkgY2xvY2t3aXNlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oYil7ZVtiXT1FKGFbYl0sZVtiXSl9KTtlLmF0dHIoe2Q6ZS5yZW5kZXJlci5zeW1ib2xzW2Uuc3ltYm9sTmFtZV0oZS54LGUueSxlLndpZHRoLGUuaGVpZ2h0LGUpfSl9O0YucHJvdG90eXBlLnRleHRTZXR0ZXI9ZnVuY3Rpb24oYSl7YSE9PXRoaXMudGV4dFN0ciYmKGRlbGV0ZSB0aGlzLnRleHRQeExlbmd0aCx0aGlzLnRleHRTdHI9YSx0aGlzLmFkZGVkJiZ0aGlzLnJlbmRlcmVyLmJ1aWxkVGV4dCh0aGlzKSl9OwpGLnByb3RvdHlwZS50aXRsZVNldHRlcj1mdW5jdGlvbihhKXt2YXIgZT10aGlzLmVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRpdGxlIilbMF07ZXx8KGU9Qi5jcmVhdGVFbGVtZW50TlModGhpcy5TVkdfTlMsInRpdGxlIiksdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGUpKTtlLmZpcnN0Q2hpbGQmJmUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKTtlLmFwcGVuZENoaWxkKEIuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKEUoYSwiIikpLnJlcGxhY2UoLzxbXj5dKj4vZywiIikucmVwbGFjZSgvJmx0Oy9nLCI8IikucmVwbGFjZSgvJmd0Oy9nLCI+IikpKX07Ri5wcm90b3R5cGUudG9Gcm9udD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZWxlbWVudDthLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQoYSk7cmV0dXJuIHRoaXN9O0YucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbihhLGUpe3JldHVybiB0aGlzLmF0dHIoe3RyYW5zbGF0ZVg6YSx0cmFuc2xhdGVZOmV9KX07Ri5wcm90b3R5cGUudXBkYXRlU2hhZG93cz0KZnVuY3Rpb24oYSxlLGIpe3ZhciBoPXRoaXMuc2hhZG93cztpZihoKWZvcih2YXIgej1oLmxlbmd0aDt6LS07KWIuY2FsbChoW3pdLCJoZWlnaHQiPT09YT9NYXRoLm1heChlLShoW3pdLmN1dEhlaWdodHx8MCksMCk6ImQiPT09YT90aGlzLmQ6ZSxhLGhbel0pfTtGLnByb3RvdHlwZS51cGRhdGVUcmFuc2Zvcm09ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnRyYW5zbGF0ZVh8fDAsZT10aGlzLnRyYW5zbGF0ZVl8fDAsYj10aGlzLnNjYWxlWCxoPXRoaXMuc2NhbGVZLHo9dGhpcy5pbnZlcnRlZCx4PXRoaXMucm90YXRpb24sZj10aGlzLm1hdHJpeCxkPXRoaXMuZWxlbWVudDt6JiYoYSs9dGhpcy53aWR0aCxlKz10aGlzLmhlaWdodCk7YT1bInRyYW5zbGF0ZSgiK2ErIiwiK2UrIikiXTtJKGYpJiZhLnB1c2goIm1hdHJpeCgiK2Yuam9pbigiLCIpKyIpIik7ej9hLnB1c2goInJvdGF0ZSg5MCkgc2NhbGUoLTEsMSkiKTp4JiZhLnB1c2goInJvdGF0ZSgiK3grIiAiK0UodGhpcy5yb3RhdGlvbk9yaWdpblgsCmQuZ2V0QXR0cmlidXRlKCJ4IiksMCkrIiAiK0UodGhpcy5yb3RhdGlvbk9yaWdpblksZC5nZXRBdHRyaWJ1dGUoInkiKXx8MCkrIikiKTsoSShiKXx8SShoKSkmJmEucHVzaCgic2NhbGUoIitFKGIsMSkrIiAiK0UoaCwxKSsiKSIpO2EubGVuZ3RoJiZkLnNldEF0dHJpYnV0ZSgidHJhbnNmb3JtIixhLmpvaW4oIiAiKSl9O0YucHJvdG90eXBlLnZpc2liaWxpdHlTZXR0ZXI9ZnVuY3Rpb24oYSxlLGIpeyJpbmhlcml0Ij09PWE/Yi5yZW1vdmVBdHRyaWJ1dGUoZSk6dGhpc1tlXSE9PWEmJmIuc2V0QXR0cmlidXRlKGUsYSk7dGhpc1tlXT1hfTtGLnByb3RvdHlwZS54R2V0dGVyPWZ1bmN0aW9uKGEpeyJjaXJjbGUiPT09dGhpcy5lbGVtZW50Lm5vZGVOYW1lJiYoIngiPT09YT9hPSJjeCI6InkiPT09YSYmKGE9ImN5IikpO3JldHVybiB0aGlzLl9kZWZhdWx0R2V0dGVyKGEpfTtGLnByb3RvdHlwZS56SW5kZXhTZXR0ZXI9ZnVuY3Rpb24oYSxlKXt2YXIgYj10aGlzLnJlbmRlcmVyLGg9dGhpcy5wYXJlbnRHcm91cCwKej0oaHx8YikuZWxlbWVudHx8Yi5ib3gseD10aGlzLmVsZW1lbnQsZj0hMTtiPXo9PT1iLmJveDt2YXIgZD10aGlzLmFkZGVkO3ZhciBrO0koYSk/KHguc2V0QXR0cmlidXRlKCJkYXRhLXotaW5kZXgiLGEpLGE9K2EsdGhpc1tlXT09PWEmJihkPSExKSk6SSh0aGlzW2VdKSYmeC5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtei1pbmRleCIpO3RoaXNbZV09YTtpZihkKXsoYT10aGlzLnpJbmRleCkmJmgmJihoLmhhbmRsZVo9ITApO2U9ei5jaGlsZE5vZGVzO2ZvcihrPWUubGVuZ3RoLTE7MDw9ayYmIWY7ay0tKXtoPWVba107ZD1oLmdldEF0dHJpYnV0ZSgiZGF0YS16LWluZGV4Iik7dmFyIGw9IUkoZCk7aWYoaCE9PXgpaWYoMD5hJiZsJiYhYiYmIWspei5pbnNlcnRCZWZvcmUoeCxlW2tdKSxmPSEwO2Vsc2UgaWYoUChkKTw9YXx8bCYmKCFJKGEpfHwwPD1hKSl6Lmluc2VydEJlZm9yZSh4LGVbaysxXXx8bnVsbCksZj0hMH1mfHwoei5pbnNlcnRCZWZvcmUoeCxlW2I/MzowXXx8bnVsbCksCmY9ITApfXJldHVybiBmfTtyZXR1cm4gRn0oKTtxLnByb3RvdHlwZVsic3Ryb2tlLXdpZHRoU2V0dGVyIl09cS5wcm90b3R5cGUuc3Ryb2tlU2V0dGVyO3EucHJvdG90eXBlLnlHZXR0ZXI9cS5wcm90b3R5cGUueEdldHRlcjtxLnByb3RvdHlwZS5tYXRyaXhTZXR0ZXI9cS5wcm90b3R5cGUucm90YXRpb25PcmlnaW5YU2V0dGVyPXEucHJvdG90eXBlLnJvdGF0aW9uT3JpZ2luWVNldHRlcj1xLnByb3RvdHlwZS5yb3RhdGlvblNldHRlcj1xLnByb3RvdHlwZS5zY2FsZVhTZXR0ZXI9cS5wcm90b3R5cGUuc2NhbGVZU2V0dGVyPXEucHJvdG90eXBlLnRyYW5zbGF0ZVhTZXR0ZXI9cS5wcm90b3R5cGUudHJhbnNsYXRlWVNldHRlcj1xLnByb3RvdHlwZS52ZXJ0aWNhbEFsaWduU2V0dGVyPWZ1bmN0aW9uKGEsZil7dGhpc1tmXT1hO3RoaXMuZG9UcmFuc2Zvcm09ITB9O2MuU1ZHRWxlbWVudD1xO3JldHVybiBjLlNWR0VsZW1lbnR9KTtPKHEsInBhcnRzL1NWR0xhYmVsLmpzIixbcVsicGFydHMvU1ZHRWxlbWVudC5qcyJdLApxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjKXt2YXIgcT10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgYz1mdW5jdGlvbihnLEwpe2M9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGMsZyl7Yy5fX3Byb3RvX189Z318fGZ1bmN0aW9uKGMsZyl7Zm9yKHZhciBuIGluIGcpZy5oYXNPd25Qcm9wZXJ0eShuKSYmKGNbbl09Z1tuXSl9O3JldHVybiBjKGcsTCl9O3JldHVybiBmdW5jdGlvbihnLEwpe2Z1bmN0aW9uIHYoKXt0aGlzLmNvbnN0cnVjdG9yPWd9YyhnLEwpO2cucHJvdG90eXBlPW51bGw9PT1MP09iamVjdC5jcmVhdGUoTCk6KHYucHJvdG90eXBlPUwucHJvdG90eXBlLG5ldyB2KX19KCkseT1jLmRlZmluZWQsQj1jLmV4dGVuZCxIPWMuaXNOdW1iZXIsRD1jLm1lcmdlLEo9Yy5yZW1vdmVFdmVudDtyZXR1cm4gZnVuY3Rpb24oYyl7ZnVuY3Rpb24gdChnLHYsSyxuLHIsQywKSSxwLG0sZCl7dmFyIGw9Yy5jYWxsKHRoaXMpfHx0aGlzO2wuaW5pdChnLCJnIik7bC50ZXh0U3RyPXY7bC54PUs7bC55PW47bC5hbmNob3JYPUM7bC5hbmNob3JZPUk7bC5iYXNlbGluZT1tO2wuY2xhc3NOYW1lPWQ7ImJ1dHRvbiIhPT1kJiZsLmFkZENsYXNzKCJoaWdoY2hhcnRzLWxhYmVsIik7ZCYmbC5hZGRDbGFzcygiaGlnaGNoYXJ0cy0iK2QpO2wudGV4dD1nLnRleHQoIiIsMCwwLHApLmF0dHIoe3pJbmRleDoxfSk7aWYoInN0cmluZyI9PT10eXBlb2Ygcil7dmFyIGs9L151cmxcKCguKj8pXCkkLy50ZXN0KHIpO2lmKGwucmVuZGVyZXIuc3ltYm9sc1tyXXx8aylsLnN5bWJvbEtleT1yfWwuYkJveD10LmVtcHR5QkJveDtsLnBhZGRpbmc9MztsLnBhZGRpbmdMZWZ0PTA7bC5iYXNlbGluZU9mZnNldD0wO2wubmVlZHNCb3g9Zy5zdHlsZWRNb2RlfHxrO2wuZGVmZXJyZWRBdHRyPXt9O2wuYWxpZ25GYWN0b3I9MDtyZXR1cm4gbH1xKHQsYyk7dC5wcm90b3R5cGUuYWxpZ25TZXR0ZXI9CmZ1bmN0aW9uKGMpe2M9e2xlZnQ6MCxjZW50ZXI6LjUscmlnaHQ6MX1bY107YyE9PXRoaXMuYWxpZ25GYWN0b3ImJih0aGlzLmFsaWduRmFjdG9yPWMsdGhpcy5iQm94JiZIKHRoaXMueFNldHRpbmcpJiZ0aGlzLmF0dHIoe3g6dGhpcy54U2V0dGluZ30pKX07dC5wcm90b3R5cGUuYW5jaG9yWFNldHRlcj1mdW5jdGlvbihjLGcpe3RoaXMuYW5jaG9yWD1jO3RoaXMuYm94QXR0cihnLE1hdGgucm91bmQoYyktdGhpcy5nZXRDcmlzcEFkanVzdCgpLXRoaXMueFNldHRpbmcpfTt0LnByb3RvdHlwZS5hbmNob3JZU2V0dGVyPWZ1bmN0aW9uKGMsZyl7dGhpcy5hbmNob3JZPWM7dGhpcy5ib3hBdHRyKGcsYy10aGlzLnlTZXR0aW5nKX07dC5wcm90b3R5cGUuYm94QXR0cj1mdW5jdGlvbihjLGcpe3RoaXMuYm94P3RoaXMuYm94LmF0dHIoYyxnKTp0aGlzLmRlZmVycmVkQXR0cltjXT1nfTt0LnByb3RvdHlwZS5jc3M9ZnVuY3Rpb24oYyl7aWYoYyl7dmFyIHY9e307Yz1EKGMpO3QudGV4dFByb3BzLmZvckVhY2goZnVuY3Rpb24obil7InVuZGVmaW5lZCIhPT0KdHlwZW9mIGNbbl0mJih2W25dPWNbbl0sZGVsZXRlIGNbbl0pfSk7dGhpcy50ZXh0LmNzcyh2KTt2YXIgTD0iZm9udFNpemUiaW4gdnx8ImZvbnRXZWlnaHQiaW4gdjtpZigid2lkdGgiaW4gdnx8TCl0aGlzLnVwZGF0ZUJveFNpemUoKSxMJiZ0aGlzLnVwZGF0ZVRleHRQYWRkaW5nKCl9cmV0dXJuIGcucHJvdG90eXBlLmNzcy5jYWxsKHRoaXMsYyl9O3QucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtKKHRoaXMuZWxlbWVudCwibW91c2VlbnRlciIpO0oodGhpcy5lbGVtZW50LCJtb3VzZWxlYXZlIik7dGhpcy50ZXh0JiZ0aGlzLnRleHQuZGVzdHJveSgpO3RoaXMuYm94JiYodGhpcy5ib3g9dGhpcy5ib3guZGVzdHJveSgpKTtnLnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyl9O3QucHJvdG90eXBlLmZpbGxTZXR0ZXI9ZnVuY3Rpb24oYyxnKXtjJiYodGhpcy5uZWVkc0JveD0hMCk7dGhpcy5maWxsPWM7dGhpcy5ib3hBdHRyKGcsYyl9O3QucHJvdG90eXBlLmdldEJCb3g9CmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5iQm94LGc9dGhpcy5wYWRkaW5nO3JldHVybnt3aWR0aDpjLndpZHRoKzIqZyxoZWlnaHQ6Yy5oZWlnaHQrMipnLHg6Yy54LWcseTpjLnktZ319O3QucHJvdG90eXBlLmdldENyaXNwQWRqdXN0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVuZGVyZXIuc3R5bGVkTW9kZSYmdGhpcy5ib3g/dGhpcy5ib3guc3Ryb2tlV2lkdGgoKSUyLzI6KHRoaXNbInN0cm9rZS13aWR0aCJdP3BhcnNlSW50KHRoaXNbInN0cm9rZS13aWR0aCJdLDEwKTowKSUyLzJ9O3QucHJvdG90eXBlLmhlaWdodFNldHRlcj1mdW5jdGlvbihjKXt0aGlzLmhlaWdodFNldHRpbmc9Y307dC5wcm90b3R5cGUub249ZnVuY3Rpb24oYyx2KXt2YXIgdD10aGlzLG49dC50ZXh0LHI9biYmIlNQQU4iPT09bi5lbGVtZW50LnRhZ05hbWU/bjp2b2lkIDA7aWYocil7dmFyIEM9ZnVuY3Rpb24oQyl7KCJtb3VzZWVudGVyIj09PWN8fCJtb3VzZWxlYXZlIj09PWMpJiZDLnJlbGF0ZWRUYXJnZXQgaW5zdGFuY2VvZgpFbGVtZW50JiYodC5lbGVtZW50LmNvbnRhaW5zKEMucmVsYXRlZFRhcmdldCl8fHIuZWxlbWVudC5jb250YWlucyhDLnJlbGF0ZWRUYXJnZXQpKXx8di5jYWxsKHQuZWxlbWVudCxDKX07ci5vbihjLEMpfWcucHJvdG90eXBlLm9uLmNhbGwodCxjLEN8fHYpO3JldHVybiB0fTt0LnByb3RvdHlwZS5vbkFkZD1mdW5jdGlvbigpe3ZhciBjPXRoaXMudGV4dFN0cjt0aGlzLnRleHQuYWRkKHRoaXMpO3RoaXMuYXR0cih7dGV4dDp5KGMpP2M6IiIseDp0aGlzLngseTp0aGlzLnl9KTt0aGlzLmJveCYmeSh0aGlzLmFuY2hvclgpJiZ0aGlzLmF0dHIoe2FuY2hvclg6dGhpcy5hbmNob3JYLGFuY2hvclk6dGhpcy5hbmNob3JZfSl9O3QucHJvdG90eXBlLnBhZGRpbmdTZXR0ZXI9ZnVuY3Rpb24oYyl7eShjKSYmYyE9PXRoaXMucGFkZGluZyYmKHRoaXMucGFkZGluZz1jLHRoaXMudXBkYXRlVGV4dFBhZGRpbmcoKSl9O3QucHJvdG90eXBlLnBhZGRpbmdMZWZ0U2V0dGVyPWZ1bmN0aW9uKGMpe3koYykmJgpjIT09dGhpcy5wYWRkaW5nTGVmdCYmKHRoaXMucGFkZGluZ0xlZnQ9Yyx0aGlzLnVwZGF0ZVRleHRQYWRkaW5nKCkpfTt0LnByb3RvdHlwZS5yU2V0dGVyPWZ1bmN0aW9uKGMsZyl7dGhpcy5ib3hBdHRyKGcsYyl9O3QucHJvdG90eXBlLnNoYWRvdz1mdW5jdGlvbihjKXtjJiYhdGhpcy5yZW5kZXJlci5zdHlsZWRNb2RlJiYodGhpcy51cGRhdGVCb3hTaXplKCksdGhpcy5ib3gmJnRoaXMuYm94LnNoYWRvdyhjKSk7cmV0dXJuIHRoaXN9O3QucHJvdG90eXBlLnN0cm9rZVNldHRlcj1mdW5jdGlvbihjLGcpe3RoaXMuc3Ryb2tlPWM7dGhpcy5ib3hBdHRyKGcsYyl9O3QucHJvdG90eXBlWyJzdHJva2Utd2lkdGhTZXR0ZXIiXT1mdW5jdGlvbihjLGcpe2MmJih0aGlzLm5lZWRzQm94PSEwKTt0aGlzWyJzdHJva2Utd2lkdGgiXT1jO3RoaXMuYm94QXR0cihnLGMpfTt0LnByb3RvdHlwZVsidGV4dC1hbGlnblNldHRlciJdPWZ1bmN0aW9uKGMpe3RoaXMudGV4dEFsaWduPWN9O3QucHJvdG90eXBlLnRleHRTZXR0ZXI9CmZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiIT09dHlwZW9mIGMmJnRoaXMudGV4dC5hdHRyKHt0ZXh0OmN9KTt0aGlzLnVwZGF0ZUJveFNpemUoKTt0aGlzLnVwZGF0ZVRleHRQYWRkaW5nKCl9O3QucHJvdG90eXBlLnVwZGF0ZUJveFNpemU9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLnRleHQuZWxlbWVudC5zdHlsZSxnPXt9LEc9dGhpcy5wYWRkaW5nLG49dGhpcy5wYWRkaW5nTGVmdCxyPUgodGhpcy53aWR0aFNldHRpbmcpJiZIKHRoaXMuaGVpZ2h0U2V0dGluZykmJiF0aGlzLnRleHRBbGlnbnx8IXkodGhpcy50ZXh0LnRleHRTdHIpP3QuZW1wdHlCQm94OnRoaXMudGV4dC5nZXRCQm94KCk7dGhpcy53aWR0aD0odGhpcy53aWR0aFNldHRpbmd8fHIud2lkdGh8fDApKzIqRytuO3RoaXMuaGVpZ2h0PSh0aGlzLmhlaWdodFNldHRpbmd8fHIuaGVpZ2h0fHwwKSsyKkc7dGhpcy5iYXNlbGluZU9mZnNldD1HK01hdGgubWluKHRoaXMucmVuZGVyZXIuZm9udE1ldHJpY3MoYyYmYy5mb250U2l6ZSwKdGhpcy50ZXh0KS5iLHIuaGVpZ2h0fHxJbmZpbml0eSk7dGhpcy5uZWVkc0JveCYmKHRoaXMuYm94fHwoYz10aGlzLmJveD10aGlzLnN5bWJvbEtleT90aGlzLnJlbmRlcmVyLnN5bWJvbCh0aGlzLnN5bWJvbEtleSk6dGhpcy5yZW5kZXJlci5yZWN0KCksYy5hZGRDbGFzcygoImJ1dHRvbiI9PT10aGlzLmNsYXNzTmFtZT8iIjoiaGlnaGNoYXJ0cy1sYWJlbC1ib3giKSsodGhpcy5jbGFzc05hbWU/IiBoaWdoY2hhcnRzLSIrdGhpcy5jbGFzc05hbWUrIi1ib3giOiIiKSksYy5hZGQodGhpcyksYz10aGlzLmdldENyaXNwQWRqdXN0KCksZy54PWMsZy55PSh0aGlzLmJhc2VsaW5lPy10aGlzLmJhc2VsaW5lT2Zmc2V0OjApK2MpLGcud2lkdGg9TWF0aC5yb3VuZCh0aGlzLndpZHRoKSxnLmhlaWdodD1NYXRoLnJvdW5kKHRoaXMuaGVpZ2h0KSx0aGlzLmJveC5hdHRyKEIoZyx0aGlzLmRlZmVycmVkQXR0cikpLHRoaXMuZGVmZXJyZWRBdHRyPXt9KTt0aGlzLmJCb3g9cn07dC5wcm90b3R5cGUudXBkYXRlVGV4dFBhZGRpbmc9CmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy50ZXh0LGc9dGhpcy5iYXNlbGluZT8wOnRoaXMuYmFzZWxpbmVPZmZzZXQsdD10aGlzLnBhZGRpbmdMZWZ0K3RoaXMucGFkZGluZzt5KHRoaXMud2lkdGhTZXR0aW5nKSYmdGhpcy5iQm94JiYoImNlbnRlciI9PT10aGlzLnRleHRBbGlnbnx8InJpZ2h0Ij09PXRoaXMudGV4dEFsaWduKSYmKHQrPXtjZW50ZXI6LjUscmlnaHQ6MX1bdGhpcy50ZXh0QWxpZ25dKih0aGlzLndpZHRoU2V0dGluZy10aGlzLmJCb3gud2lkdGgpKTtpZih0IT09Yy54fHxnIT09Yy55KWMuYXR0cigieCIsdCksYy5oYXNCb3hXaWR0aENoYW5nZWQmJih0aGlzLmJCb3g9Yy5nZXRCQm94KCEwKSx0aGlzLnVwZGF0ZUJveFNpemUoKSksInVuZGVmaW5lZCIhPT10eXBlb2YgZyYmYy5hdHRyKCJ5IixnKTtjLng9dDtjLnk9Z307dC5wcm90b3R5cGUud2lkdGhTZXR0ZXI9ZnVuY3Rpb24oYyl7dGhpcy53aWR0aFNldHRpbmc9SChjKT9jOnZvaWQgMH07dC5wcm90b3R5cGUueFNldHRlcj0KZnVuY3Rpb24oYyl7dGhpcy54PWM7dGhpcy5hbGlnbkZhY3RvciYmKGMtPXRoaXMuYWxpZ25GYWN0b3IqKCh0aGlzLndpZHRoU2V0dGluZ3x8dGhpcy5iQm94LndpZHRoKSsyKnRoaXMucGFkZGluZyksdGhpc1siZm9yY2VBbmltYXRlOngiXT0hMCk7dGhpcy54U2V0dGluZz1NYXRoLnJvdW5kKGMpO3RoaXMuYXR0cigidHJhbnNsYXRlWCIsdGhpcy54U2V0dGluZyl9O3QucHJvdG90eXBlLnlTZXR0ZXI9ZnVuY3Rpb24oYyl7dGhpcy55U2V0dGluZz10aGlzLnk9TWF0aC5yb3VuZChjKTt0aGlzLmF0dHIoInRyYW5zbGF0ZVkiLHRoaXMueVNldHRpbmcpfTt0LmVtcHR5QkJveD17d2lkdGg6MCxoZWlnaHQ6MCx4OjAseTowfTt0LnRleHRQcm9wcz0iY29sb3IgY3Vyc29yIGRpcmVjdGlvbiBmb250RmFtaWx5IGZvbnRTaXplIGZvbnRTdHlsZSBmb250V2VpZ2h0IGxpbmVIZWlnaHQgdGV4dEFsaWduIHRleHREZWNvcmF0aW9uIHRleHRPdXRsaW5lIHRleHRPdmVyZmxvdyB3aWR0aCIuc3BsaXQoIiAiKTsKcmV0dXJuIHR9KGcpfSk7TyhxLCJwYXJ0cy9TVkdSZW5kZXJlci5qcyIsW3FbInBhcnRzL0NvbG9yLmpzIl0scVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL1NWR0VsZW1lbnQuanMiXSxxWyJwYXJ0cy9TVkdMYWJlbC5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMscSx5LEIpe3ZhciBIPUIuYWRkRXZlbnQsRD1CLmF0dHIsSj1CLmNyZWF0ZUVsZW1lbnQsdD1CLmNzcyxHPUIuZGVmaW5lZCxMPUIuZGVzdHJveU9iamVjdFByb3BlcnRpZXMsdj1CLmV4dGVuZCxLPUIuaXNBcnJheSxuPUIuaXNOdW1iZXIscj1CLmlzT2JqZWN0LEM9Qi5pc1N0cmluZyxJPUIubWVyZ2UscD1CLm9iamVjdEVhY2gsbT1CLnBpY2ssZD1CLnBJbnQsbD1CLnNwbGF0LGs9Qi51bmlxdWVLZXksZj1jLmNoYXJ0cyxhPWMuZGVnMnJhZCxBPWMuZG9jLHU9Yy5pc0ZpcmVmb3gsRT1jLmlzTVMsUD1jLmlzV2ViS2l0O0I9Yy5ub29wO3ZhciB3PWMuc3ZnLE09Yy5TVkdfTlMsRj1jLnN5bWJvbFNpemVzLApRPWMud2luLGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGIsYSxlLGYsZCxrLGwpe3RoaXMud2lkdGg9dGhpcy51cmw9dGhpcy5zdHlsZT10aGlzLmlzU1ZHPXRoaXMuaW1nQ291bnQ9dGhpcy5oZWlnaHQ9dGhpcy5ncmFkaWVudHM9dGhpcy5nbG9iYWxBbmltYXRpb249dGhpcy5kZWZzPXRoaXMuY2hhcnRJbmRleD10aGlzLmNhY2hlS2V5cz10aGlzLmNhY2hlPXRoaXMuYm94V3JhcHBlcj10aGlzLmJveD10aGlzLmFsaWduZWRPYmplY3RzPXZvaWQgMDt0aGlzLmluaXQoYixhLGUsZixkLGssbCl9Yi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihiLGEsZSxmLGQsayxsKXt2YXIgaD10aGlzLmNyZWF0ZUVsZW1lbnQoInN2ZyIpLmF0dHIoe3ZlcnNpb246IjEuMSIsImNsYXNzIjoiaGlnaGNoYXJ0cy1yb290In0pO2x8fGguY3NzKHRoaXMuZ2V0U3R5bGUoZikpO2Y9aC5lbGVtZW50O2IuYXBwZW5kQ2hpbGQoZik7RChiLCJkaXIiLCJsdHIiKTstMT09PWIuaW5uZXJIVE1MLmluZGV4T2YoInhtbG5zIikmJgpEKGYsInhtbG5zIix0aGlzLlNWR19OUyk7dGhpcy5pc1NWRz0hMDt0aGlzLmJveD1mO3RoaXMuYm94V3JhcHBlcj1oO3RoaXMuYWxpZ25lZE9iamVjdHM9W107dGhpcy51cmw9KHV8fFApJiZBLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIikubGVuZ3RoP1EubG9jYXRpb24uaHJlZi5zcGxpdCgiIyIpWzBdLnJlcGxhY2UoLzxbXj5dKj4vZywiIikucmVwbGFjZSgvKFtcKCdcKV0pL2csIlxcJDEiKS5yZXBsYWNlKC8gL2csIiUyMCIpOiIiO3RoaXMuY3JlYXRlRWxlbWVudCgiZGVzYyIpLmFkZCgpLmVsZW1lbnQuYXBwZW5kQ2hpbGQoQS5jcmVhdGVUZXh0Tm9kZSgiQ3JlYXRlZCB3aXRoIEhpZ2hjaGFydHMgOC4xLjIiKSk7dGhpcy5kZWZzPXRoaXMuY3JlYXRlRWxlbWVudCgiZGVmcyIpLmFkZCgpO3RoaXMuYWxsb3dIVE1MPWs7dGhpcy5mb3JFeHBvcnQ9ZDt0aGlzLnN0eWxlZE1vZGU9bDt0aGlzLmdyYWRpZW50cz17fTt0aGlzLmNhY2hlPXt9O3RoaXMuY2FjaGVLZXlzPVtdO3RoaXMuaW1nQ291bnQ9CjA7dGhpcy5zZXRTaXplKGEsZSwhMSk7dmFyIHg7dSYmYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QmJihhPWZ1bmN0aW9uKCl7dChiLHtsZWZ0OjAsdG9wOjB9KTt4PWIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dChiLHtsZWZ0Ok1hdGguY2VpbCh4LmxlZnQpLXgubGVmdCsicHgiLHRvcDpNYXRoLmNlaWwoeC50b3ApLXgudG9wKyJweCJ9KX0sYSgpLHRoaXMudW5TdWJQaXhlbEZpeD1IKFEsInJlc2l6ZSIsYSkpfTtiLnByb3RvdHlwZS5kZWZpbml0aW9uPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGgoYixlKXt2YXIgZjtsKGIpLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIHg9YS5jcmVhdGVFbGVtZW50KGIudGFnTmFtZSksej17fTtwKGIsZnVuY3Rpb24oYixoKXsidGFnTmFtZSIhPT1oJiYiY2hpbGRyZW4iIT09aCYmInRleHRDb250ZW50IiE9PWgmJih6W2hdPWIpfSk7eC5hdHRyKHopO3guYWRkKGV8fGEuZGVmcyk7Yi50ZXh0Q29udGVudCYmeC5lbGVtZW50LmFwcGVuZENoaWxkKEEuY3JlYXRlVGV4dE5vZGUoYi50ZXh0Q29udGVudCkpOwpoKGIuY2hpbGRyZW58fFtdLHgpO2Y9eH0pO3JldHVybiBmfXZhciBhPXRoaXM7cmV0dXJuIGgoYil9O2IucHJvdG90eXBlLmdldFN0eWxlPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnN0eWxlPXYoe2ZvbnRGYW1pbHk6JyJMdWNpZGEgR3JhbmRlIiwgIkx1Y2lkYSBTYW5zIFVuaWNvZGUiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJyxmb250U2l6ZToiMTJweCJ9LGIpfTtiLnByb3RvdHlwZS5zZXRTdHlsZT1mdW5jdGlvbihiKXt0aGlzLmJveFdyYXBwZXIuY3NzKHRoaXMuZ2V0U3R5bGUoYikpfTtiLnByb3RvdHlwZS5pc0hpZGRlbj1mdW5jdGlvbigpe3JldHVybiF0aGlzLmJveFdyYXBwZXIuZ2V0QkJveCgpLndpZHRofTtiLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5kZWZzO3RoaXMuYm94PW51bGw7dGhpcy5ib3hXcmFwcGVyPXRoaXMuYm94V3JhcHBlci5kZXN0cm95KCk7TCh0aGlzLmdyYWRpZW50c3x8e30pO3RoaXMuZ3JhZGllbnRzPW51bGw7CmImJih0aGlzLmRlZnM9Yi5kZXN0cm95KCkpO3RoaXMudW5TdWJQaXhlbEZpeCYmdGhpcy51blN1YlBpeGVsRml4KCk7cmV0dXJuIHRoaXMuYWxpZ25lZE9iamVjdHM9bnVsbH07Yi5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihiKXt2YXIgaD1uZXcgdGhpcy5FbGVtZW50O2guaW5pdCh0aGlzLGIpO3JldHVybiBofTtiLnByb3RvdHlwZS5nZXRSYWRpYWxBdHRyPWZ1bmN0aW9uKGIsYSl7cmV0dXJue2N4OmJbMF0tYlsyXS8yK2EuY3gqYlsyXSxjeTpiWzFdLWJbMl0vMithLmN5KmJbMl0scjphLnIqYlsyXX19O2IucHJvdG90eXBlLnRydW5jYXRlPWZ1bmN0aW9uKGIsYSxlLGYsZCxrLGwpe3ZhciBoPXRoaXMseD1iLnJvdGF0aW9uLHosdT1mPzE6MCxOPShlfHxmKS5sZW5ndGgsbT1OLHA9W10sdz1mdW5jdGlvbihiKXthLmZpcnN0Q2hpbGQmJmEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTtiJiZhLmFwcGVuZENoaWxkKEEuY3JlYXRlVGV4dE5vZGUoYikpfSxjPWZ1bmN0aW9uKHgsCnope3o9enx8eDtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBwW3pdKWlmKGEuZ2V0U3ViU3RyaW5nTGVuZ3RoKXRyeXtwW3pdPWQrYS5nZXRTdWJTdHJpbmdMZW5ndGgoMCxmP3orMTp6KX1jYXRjaChoYSl7IiJ9ZWxzZSBoLmdldFNwYW5XaWR0aCYmKHcobChlfHxmLHgpKSxwW3pdPWQraC5nZXRTcGFuV2lkdGgoYixhKSk7cmV0dXJuIHBbel19LEM7Yi5yb3RhdGlvbj0wO3ZhciByPWMoYS50ZXh0Q29udGVudC5sZW5ndGgpO2lmKEM9ZCtyPmspe2Zvcig7dTw9TjspbT1NYXRoLmNlaWwoKHUrTikvMiksZiYmKHo9bChmLG0pKSxyPWMobSx6JiZ6Lmxlbmd0aC0xKSx1PT09Tj91PU4rMTpyPms/Tj1tLTE6dT1tOzA9PT1OP3coIiIpOmUmJk49PT1lLmxlbmd0aC0xfHx3KHp8fGwoZXx8ZixtKSl9ZiYmZi5zcGxpY2UoMCxtKTtiLmFjdHVhbFdpZHRoPXI7Yi5yb3RhdGlvbj14O3JldHVybiBDfTtiLnByb3RvdHlwZS5idWlsZFRleHQ9ZnVuY3Rpb24oYil7dmFyIGg9Yi5lbGVtZW50LGE9dGhpcywKZT1hLmZvckV4cG9ydCxmPW0oYi50ZXh0U3RyLCIiKS50b1N0cmluZygpLGs9LTEhPT1mLmluZGV4T2YoIjwiKSxsPWguY2hpbGROb2Rlcyx1LGM9RChoLCJ4Iikscj1iLnN0eWxlcyxFPWIudGV4dFdpZHRoLG49ciYmci5saW5lSGVpZ2h0LFM9ciYmci50ZXh0T3V0bGluZSxnPXImJiJlbGxpcHNpcyI9PT1yLnRleHRPdmVyZmxvdyxJPXImJiJub3dyYXAiPT09ci53aGl0ZVNwYWNlLEY9ciYmci5mb250U2l6ZSxQLHY9bC5sZW5ndGg7cj1FJiYhYi5hZGRlZCYmdGhpcy5ib3g7dmFyIEc9ZnVuY3Rpb24oYil7dmFyIGU7YS5zdHlsZWRNb2RlfHwoZT0vKHB4fGVtKSQvLnRlc3QoYiYmYi5zdHlsZS5mb250U2l6ZSk/Yi5zdHlsZS5mb250U2l6ZTpGfHxhLnN0eWxlLmZvbnRTaXplfHwxMik7cmV0dXJuIG4/ZChuKTphLmZvbnRNZXRyaWNzKGUsYi5nZXRBdHRyaWJ1dGUoInN0eWxlIik/YjpoKS5ofSxRPWZ1bmN0aW9uKGIsaCl7cChhLmVzY2FwZXMsZnVuY3Rpb24oYSxlKXtoJiYtMSE9PQpoLmluZGV4T2YoYSl8fChiPWIudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoYSwiZyIpLGUpKX0pO3JldHVybiBifSxxPWZ1bmN0aW9uKGIsaCl7dmFyIGE9Yi5pbmRleE9mKCI8Iik7Yj1iLnN1YnN0cmluZyhhLGIuaW5kZXhPZigiPiIpLWEpO2E9Yi5pbmRleE9mKGgrIj0iKTtpZigtMSE9PWEmJihhPWEraC5sZW5ndGgrMSxoPWIuY2hhckF0KGEpLCciJz09PWh8fCInIj09PWgpKXJldHVybiBiPWIuc3Vic3RyaW5nKGErMSksYi5zdWJzdHJpbmcoMCxiLmluZGV4T2YoaCkpfSxLPS88YnIuKj8+L2c7dmFyIEo9W2YsZyxJLG4sUyxGLEVdLmpvaW4oKTtpZihKIT09Yi50ZXh0Q2FjaGUpe2ZvcihiLnRleHRDYWNoZT1KO3YtLTspaC5yZW1vdmVDaGlsZChsW3ZdKTtrfHxTfHxnfHxFfHwtMSE9PWYuaW5kZXhPZigiICIpJiYoIUl8fEsudGVzdChmKSk/KHImJnIuYXBwZW5kQ2hpbGQoaCksaz8oZj1hLnN0eWxlZE1vZGU/Zi5yZXBsYWNlKC88KGJ8c3Ryb25nKT4vZywnPHNwYW4gY2xhc3M9ImhpZ2hjaGFydHMtc3Ryb25nIj4nKS5yZXBsYWNlKC88KGl8ZW0pPi9nLAonPHNwYW4gY2xhc3M9ImhpZ2hjaGFydHMtZW1waGFzaXplZCI+Jyk6Zi5yZXBsYWNlKC88KGJ8c3Ryb25nKT4vZywnPHNwYW4gc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQiPicpLnJlcGxhY2UoLzwoaXxlbSk+L2csJzxzcGFuIHN0eWxlPSJmb250LXN0eWxlOml0YWxpYyI+JyksZj1mLnJlcGxhY2UoLzxhL2csIjxzcGFuIikucmVwbGFjZSgvPFwvKGJ8c3Ryb25nfGl8ZW18YSk+L2csIjwvc3Bhbj4iKS5zcGxpdChLKSk6Zj1bZl0sZj1mLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4iIiE9PWJ9KSxmLmZvckVhY2goZnVuY3Rpb24oZix4KXt2YXIgej0wLGQ9MDtmPWYucmVwbGFjZSgvXlxzK3xccyskL2csIiIpLnJlcGxhY2UoLzxzcGFuL2csInx8fDxzcGFuIikucmVwbGFjZSgvPFwvc3Bhbj4vZywiPC9zcGFuPnx8fCIpO3ZhciBrPWYuc3BsaXQoInx8fCIpO2suZm9yRWFjaChmdW5jdGlvbihmKXtpZigiIiE9PWZ8fDE9PT1rLmxlbmd0aCl7dmFyIGw9e30sTj1BLmNyZWF0ZUVsZW1lbnROUyhhLlNWR19OUywKInRzcGFuIiksbSxwOyhtPXEoZiwiY2xhc3MiKSkmJkQoTiwiY2xhc3MiLG0pO2lmKG09cShmLCJzdHlsZSIpKW09bS5yZXBsYWNlKC8oO3wgfF4pY29sb3IoWyA6XSkvLCIkMWZpbGwkMiIpLEQoTiwic3R5bGUiLG0pO2lmKChwPXEoZiwiaHJlZiIpKSYmIWUmJi0xPT09cC5zcGxpdCgiOiIpWzBdLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigiamF2YXNjcmlwdCIpKXt2YXIgQz1BLmNyZWF0ZUVsZW1lbnROUyhhLlNWR19OUywiYSIpO0QoQywiaHJlZiIscCk7RChOLCJjbGFzcyIsImhpZ2hjaGFydHMtYW5jaG9yIik7Qy5hcHBlbmRDaGlsZChOKTthLnN0eWxlZE1vZGV8fHQoTix7Y3Vyc29yOiJwb2ludGVyIn0pfWY9UShmLnJlcGxhY2UoLzxbYS16QS1aXC9dKC58XG4pKj8+L2csIiIpfHwiICIpO2lmKCIgIiE9PWYpe04uYXBwZW5kQ2hpbGQoQS5jcmVhdGVUZXh0Tm9kZShmKSk7ej9sLmR4PTA6eCYmbnVsbCE9PWMmJihsLng9Yyk7RChOLGwpO2guYXBwZW5kQ2hpbGQoQ3x8Tik7IXomJgpQJiYoIXcmJmUmJnQoTix7ZGlzcGxheToiYmxvY2sifSksRChOLCJkeSIsRyhOKSkpO2lmKEUpe3ZhciByPWYucmVwbGFjZSgvKFteXF5dKS0vZywiJDEtICIpLnNwbGl0KCIgIik7bD0hSSYmKDE8ay5sZW5ndGh8fHh8fDE8ci5sZW5ndGgpO0M9MDtwPUcoTik7aWYoZyl1PWEudHJ1bmNhdGUoYixOLGYsdm9pZCAwLDAsTWF0aC5tYXgoMCxFLXBhcnNlSW50KEZ8fDEyLDEwKSksZnVuY3Rpb24oYixoKXtyZXR1cm4gYi5zdWJzdHJpbmcoMCxoKSsiXHUyMDI2In0pO2Vsc2UgaWYobClmb3IoO3IubGVuZ3RoOylyLmxlbmd0aCYmIUkmJjA8QyYmKE49QS5jcmVhdGVFbGVtZW50TlMoTSwidHNwYW4iKSxEKE4se2R5OnAseDpjfSksbSYmRChOLCJzdHlsZSIsbSksTi5hcHBlbmRDaGlsZChBLmNyZWF0ZVRleHROb2RlKHIuam9pbigiICIpLnJlcGxhY2UoLy0gL2csIi0iKSkpLGguYXBwZW5kQ2hpbGQoTikpLGEudHJ1bmNhdGUoYixOLG51bGwsciwwPT09Qz9kOjAsRSxmdW5jdGlvbihiLGgpe3JldHVybiByLnNsaWNlKDAsCmgpLmpvaW4oIiAiKS5yZXBsYWNlKC8tIC9nLCItIil9KSxkPWIuYWN0dWFsV2lkdGgsQysrfXorK319fSk7UD1QfHxoLmNoaWxkTm9kZXMubGVuZ3RofSksZyYmdSYmYi5hdHRyKCJ0aXRsZSIsUShiLnRleHRTdHJ8fCIiLFsiJmx0OyIsIiZndDsiXSkpLHImJnIucmVtb3ZlQ2hpbGQoaCksQyhTKSYmYi5hcHBseVRleHRPdXRsaW5lJiZiLmFwcGx5VGV4dE91dGxpbmUoUykpOmguYXBwZW5kQ2hpbGQoQS5jcmVhdGVUZXh0Tm9kZShRKGYpKSl9fTtiLnByb3RvdHlwZS5nZXRDb250cmFzdD1mdW5jdGlvbihiKXtiPWcucGFyc2UoYikucmdiYTtiWzBdKj0xO2JbMV0qPTEuMjtiWzJdKj0uNTtyZXR1cm4gNDU5PGJbMF0rYlsxXStiWzJdPyIjMDAwMDAwIjoiI0ZGRkZGRiJ9O2IucHJvdG90eXBlLmJ1dHRvbj1mdW5jdGlvbihiLGEsZSxmLGQsayxsLHUsbSxwKXt2YXIgaD10aGlzLmxhYmVsKGIsYSxlLG0sdm9pZCAwLHZvaWQgMCxwLHZvaWQgMCwiYnV0dG9uIikseD0wLHo9dGhpcy5zdHlsZWRNb2RlOwpiPWQmJmQuc3R5bGV8fHt9O2QmJmQuc3R5bGUmJmRlbGV0ZSBkLnN0eWxlO2guYXR0cihJKHtwYWRkaW5nOjgscjoyfSxkKSk7aWYoIXope2Q9SSh7ZmlsbDoiI2Y3ZjdmNyIsc3Ryb2tlOiIjY2NjY2NjIiwic3Ryb2tlLXdpZHRoIjoxLHN0eWxlOntjb2xvcjoiIzMzMzMzMyIsY3Vyc29yOiJwb2ludGVyIixmb250V2VpZ2h0OiJub3JtYWwifX0se3N0eWxlOmJ9LGQpO3ZhciBOPWQuc3R5bGU7ZGVsZXRlIGQuc3R5bGU7az1JKGQse2ZpbGw6IiNlNmU2ZTYifSxrKTt2YXIgQT1rLnN0eWxlO2RlbGV0ZSBrLnN0eWxlO2w9SShkLHtmaWxsOiIjZTZlYmY1IixzdHlsZTp7Y29sb3I6IiMwMDAwMDAiLGZvbnRXZWlnaHQ6ImJvbGQifX0sbCk7dmFyIHc9bC5zdHlsZTtkZWxldGUgbC5zdHlsZTt1PUkoZCx7c3R5bGU6e2NvbG9yOiIjY2NjY2NjIn19LHUpO3ZhciBjPXUuc3R5bGU7ZGVsZXRlIHUuc3R5bGV9SChoLmVsZW1lbnQsRT8ibW91c2VvdmVyIjoibW91c2VlbnRlciIsZnVuY3Rpb24oKXszIT09CngmJmguc2V0U3RhdGUoMSl9KTtIKGguZWxlbWVudCxFPyJtb3VzZW91dCI6Im1vdXNlbGVhdmUiLGZ1bmN0aW9uKCl7MyE9PXgmJmguc2V0U3RhdGUoeCl9KTtoLnNldFN0YXRlPWZ1bmN0aW9uKGIpezEhPT1iJiYoaC5zdGF0ZT14PWIpO2gucmVtb3ZlQ2xhc3MoL2hpZ2hjaGFydHMtYnV0dG9uLShub3JtYWx8aG92ZXJ8cHJlc3NlZHxkaXNhYmxlZCkvKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1idXR0b24tIitbIm5vcm1hbCIsImhvdmVyIiwicHJlc3NlZCIsImRpc2FibGVkIl1bYnx8MF0pO3p8fGguYXR0cihbZCxrLGwsdV1bYnx8MF0pLmNzcyhbTixBLHcsY11bYnx8MF0pfTt6fHxoLmF0dHIoZCkuY3NzKHYoe2N1cnNvcjoiZGVmYXVsdCJ9LE4pKTtyZXR1cm4gaC5vbigiY2xpY2siLGZ1bmN0aW9uKGIpezMhPT14JiZmLmNhbGwoaCxiKX0pfTtiLnByb3RvdHlwZS5jcmlzcExpbmU9ZnVuY3Rpb24oYixhLGUpe3ZvaWQgMD09PWUmJihlPSJyb3VuZCIpO3ZhciBoPWJbMF0sZj1iWzFdOwpoWzFdPT09ZlsxXSYmKGhbMV09ZlsxXT1NYXRoW2VdKGhbMV0pLWElMi8yKTtoWzJdPT09ZlsyXSYmKGhbMl09ZlsyXT1NYXRoW2VdKGhbMl0pK2ElMi8yKTtyZXR1cm4gYn07Yi5wcm90b3R5cGUucGF0aD1mdW5jdGlvbihiKXt2YXIgaD10aGlzLnN0eWxlZE1vZGU/e306e2ZpbGw6Im5vbmUifTtLKGIpP2guZD1iOnIoYikmJnYoaCxiKTtyZXR1cm4gdGhpcy5jcmVhdGVFbGVtZW50KCJwYXRoIikuYXR0cihoKX07Yi5wcm90b3R5cGUuY2lyY2xlPWZ1bmN0aW9uKGIsYSxlKXtiPXIoYik/YjoidW5kZWZpbmVkIj09PXR5cGVvZiBiP3t9Ont4OmIseTphLHI6ZX07YT10aGlzLmNyZWF0ZUVsZW1lbnQoImNpcmNsZSIpO2EueFNldHRlcj1hLnlTZXR0ZXI9ZnVuY3Rpb24oYixoLGEpe2Euc2V0QXR0cmlidXRlKCJjIitoLGIpfTtyZXR1cm4gYS5hdHRyKGIpfTtiLnByb3RvdHlwZS5hcmM9ZnVuY3Rpb24oYixhLGUsZixkLGspe3IoYik/KGY9YixhPWYueSxlPWYucixiPWYueCk6Zj17aW5uZXJSOmYsCnN0YXJ0OmQsZW5kOmt9O2I9dGhpcy5zeW1ib2woImFyYyIsYixhLGUsZSxmKTtiLnI9ZTtyZXR1cm4gYn07Yi5wcm90b3R5cGUucmVjdD1mdW5jdGlvbihiLGEsZSxmLGQsayl7ZD1yKGIpP2IucjpkO3ZhciBoPXRoaXMuY3JlYXRlRWxlbWVudCgicmVjdCIpO2I9cihiKT9iOiJ1bmRlZmluZWQiPT09dHlwZW9mIGI/e306e3g6Yix5OmEsd2lkdGg6TWF0aC5tYXgoZSwwKSxoZWlnaHQ6TWF0aC5tYXgoZiwwKX07dGhpcy5zdHlsZWRNb2RlfHwoInVuZGVmaW5lZCIhPT10eXBlb2YgayYmKGIuc3Ryb2tlV2lkdGg9ayxiPWguY3Jpc3AoYikpLGIuZmlsbD0ibm9uZSIpO2QmJihiLnI9ZCk7aC5yU2V0dGVyPWZ1bmN0aW9uKGIsYSxlKXtoLnI9YjtEKGUse3J4OmIscnk6Yn0pfTtoLnJHZXR0ZXI9ZnVuY3Rpb24oKXtyZXR1cm4gaC5yfTtyZXR1cm4gaC5hdHRyKGIpfTtiLnByb3RvdHlwZS5zZXRTaXplPWZ1bmN0aW9uKGIsYSxlKXt2YXIgaD10aGlzLmFsaWduZWRPYmplY3RzLGY9aC5sZW5ndGg7CnRoaXMud2lkdGg9Yjt0aGlzLmhlaWdodD1hO2Zvcih0aGlzLmJveFdyYXBwZXIuYW5pbWF0ZSh7d2lkdGg6YixoZWlnaHQ6YX0se3N0ZXA6ZnVuY3Rpb24oKXt0aGlzLmF0dHIoe3ZpZXdCb3g6IjAgMCAiK3RoaXMuYXR0cigid2lkdGgiKSsiICIrdGhpcy5hdHRyKCJoZWlnaHQiKX0pfSxkdXJhdGlvbjptKGUsITApP3ZvaWQgMDowfSk7Zi0tOyloW2ZdLmFsaWduKCl9O2IucHJvdG90eXBlLmc9ZnVuY3Rpb24oYil7dmFyIGg9dGhpcy5jcmVhdGVFbGVtZW50KCJnIik7cmV0dXJuIGI/aC5hdHRyKHsiY2xhc3MiOiJoaWdoY2hhcnRzLSIrYn0pOmh9O2IucHJvdG90eXBlLmltYWdlPWZ1bmN0aW9uKGIsYSxlLGYsZCxrKXt2YXIgaD17cHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSJ9LHg9ZnVuY3Rpb24oYixoKXtiLnNldEF0dHJpYnV0ZU5TP2Iuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJocmVmIixoKTpiLnNldEF0dHJpYnV0ZSgiaGMtc3ZnLWhyZWYiLApoKX0sej1mdW5jdGlvbihoKXt4KGwuZWxlbWVudCxiKTtrLmNhbGwobCxoKX07MTxhcmd1bWVudHMubGVuZ3RoJiZ2KGgse3g6YSx5OmUsd2lkdGg6ZixoZWlnaHQ6ZH0pO3ZhciBsPXRoaXMuY3JlYXRlRWxlbWVudCgiaW1hZ2UiKS5hdHRyKGgpO2s/KHgobC5lbGVtZW50LCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUFBQUFDSDVCQUVLQUFFQUxBQUFBQUFCQUFFQUFBSUNUQUVBT3c9PSIpLGg9bmV3IFEuSW1hZ2UsSChoLCJsb2FkIix6KSxoLnNyYz1iLGguY29tcGxldGUmJnooe30pKTp4KGwuZWxlbWVudCxiKTtyZXR1cm4gbH07Yi5wcm90b3R5cGUuc3ltYm9sPWZ1bmN0aW9uKGIsYSxlLGQsayxsKXt2YXIgaD10aGlzLHg9L151cmxcKCguKj8pXCkkLyx6PXgudGVzdChiKSx1PSF6JiYodGhpcy5zeW1ib2xzW2JdP2I6ImNpcmNsZSIpLE49dSYmdGhpcy5zeW1ib2xzW3VdLHA7aWYoTil7Im51bWJlciI9PT10eXBlb2YgYSYmKHA9Ti5jYWxsKHRoaXMuc3ltYm9scywKTWF0aC5yb3VuZChhfHwwKSxNYXRoLnJvdW5kKGV8fDApLGR8fDAsa3x8MCxsKSk7dmFyIHc9dGhpcy5wYXRoKHApO2guc3R5bGVkTW9kZXx8dy5hdHRyKCJmaWxsIiwibm9uZSIpO3Yodyx7c3ltYm9sTmFtZTp1LHg6YSx5OmUsd2lkdGg6ZCxoZWlnaHQ6a30pO2wmJnYodyxsKX1lbHNlIGlmKHope3ZhciBjPWIubWF0Y2goeClbMV07dz10aGlzLmltYWdlKGMpO3cuaW1nd2lkdGg9bShGW2NdJiZGW2NdLndpZHRoLGwmJmwud2lkdGgpO3cuaW1naGVpZ2h0PW0oRltjXSYmRltjXS5oZWlnaHQsbCYmbC5oZWlnaHQpO3ZhciBDPWZ1bmN0aW9uKCl7dy5hdHRyKHt3aWR0aDp3LndpZHRoLGhlaWdodDp3LmhlaWdodH0pfTtbIndpZHRoIiwiaGVpZ2h0Il0uZm9yRWFjaChmdW5jdGlvbihiKXt3W2IrIlNldHRlciJdPWZ1bmN0aW9uKGIsaCl7dmFyIGE9e30sZT10aGlzWyJpbWciK2hdLGY9IndpZHRoIj09PWg/InRyYW5zbGF0ZVgiOiJ0cmFuc2xhdGVZIjt0aGlzW2hdPWI7RyhlKSYmKGwmJgoid2l0aGluIj09PWwuYmFja2dyb3VuZFNpemUmJnRoaXMud2lkdGgmJnRoaXMuaGVpZ2h0JiYoZT1NYXRoLnJvdW5kKGUqTWF0aC5taW4odGhpcy53aWR0aC90aGlzLmltZ3dpZHRoLHRoaXMuaGVpZ2h0L3RoaXMuaW1naGVpZ2h0KSkpLHRoaXMuZWxlbWVudCYmdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZShoLGUpLHRoaXMuYWxpZ25CeVRyYW5zbGF0ZXx8KGFbZl09KCh0aGlzW2hdfHwwKS1lKS8yLHRoaXMuYXR0cihhKSkpfX0pO0coYSkmJncuYXR0cih7eDphLHk6ZX0pO3cuaXNJbWc9ITA7Ryh3LmltZ3dpZHRoKSYmRyh3LmltZ2hlaWdodCk/QygpOih3LmF0dHIoe3dpZHRoOjAsaGVpZ2h0OjB9KSxKKCJpbWciLHtvbmxvYWQ6ZnVuY3Rpb24oKXt2YXIgYj1mW2guY2hhcnRJbmRleF07MD09PXRoaXMud2lkdGgmJih0KHRoaXMse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiItOTk5ZW0ifSksQS5ib2R5LmFwcGVuZENoaWxkKHRoaXMpKTtGW2NdPXt3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodH07CncuaW1nd2lkdGg9dGhpcy53aWR0aDt3LmltZ2hlaWdodD10aGlzLmhlaWdodDt3LmVsZW1lbnQmJkMoKTt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKTtoLmltZ0NvdW50LS07aWYoIWguaW1nQ291bnQmJmImJiFiLmhhc0xvYWRlZCliLm9ubG9hZCgpfSxzcmM6Y30pLHRoaXMuaW1nQ291bnQrKyl9cmV0dXJuIHd9O2IucHJvdG90eXBlLmNsaXBSZWN0PWZ1bmN0aW9uKGIsYSxlLGYpe3ZhciBoPWsoKSsiLSIseD10aGlzLmNyZWF0ZUVsZW1lbnQoImNsaXBQYXRoIikuYXR0cih7aWQ6aH0pLmFkZCh0aGlzLmRlZnMpO2I9dGhpcy5yZWN0KGIsYSxlLGYsMCkuYWRkKHgpO2IuaWQ9aDtiLmNsaXBQYXRoPXg7Yi5jb3VudD0wO3JldHVybiBifTtiLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKGIsYSxlLGYpe3ZhciBoPXt9O2lmKGYmJih0aGlzLmFsbG93SFRNTHx8IXRoaXMuZm9yRXhwb3J0KSlyZXR1cm4gdGhpcy5odG1sKGIsYSxlKTtoLng9TWF0aC5yb3VuZChhfHwKMCk7ZSYmKGgueT1NYXRoLnJvdW5kKGUpKTtHKGIpJiYoaC50ZXh0PWIpO2I9dGhpcy5jcmVhdGVFbGVtZW50KCJ0ZXh0IikuYXR0cihoKTtmfHwoYi54U2V0dGVyPWZ1bmN0aW9uKGIsaCxhKXt2YXIgZT1hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0c3BhbiIpLGY9YS5nZXRBdHRyaWJ1dGUoaCkseDtmb3IoeD0wO3g8ZS5sZW5ndGg7eCsrKXt2YXIgZD1lW3hdO2QuZ2V0QXR0cmlidXRlKGgpPT09ZiYmZC5zZXRBdHRyaWJ1dGUoaCxiKX1hLnNldEF0dHJpYnV0ZShoLGIpfSk7cmV0dXJuIGJ9O2IucHJvdG90eXBlLmZvbnRNZXRyaWNzPWZ1bmN0aW9uKGIsYSl7Yj0hdGhpcy5zdHlsZWRNb2RlJiYvcHgvLnRlc3QoYil8fCFRLmdldENvbXB1dGVkU3R5bGU/Ynx8YSYmYS5zdHlsZSYmYS5zdHlsZS5mb250U2l6ZXx8dGhpcy5zdHlsZSYmdGhpcy5zdHlsZS5mb250U2l6ZTphJiZxLnByb3RvdHlwZS5nZXRTdHlsZS5jYWxsKGEsImZvbnQtc2l6ZSIpO2I9L3B4Ly50ZXN0KGIpP2QoYik6CjEyO2E9MjQ+Yj9iKzM6TWF0aC5yb3VuZCgxLjIqYik7cmV0dXJue2g6YSxiOk1hdGgucm91bmQoLjgqYSksZjpifX07Yi5wcm90b3R5cGUucm90Q29ycj1mdW5jdGlvbihiLGUsZil7dmFyIGg9YjtlJiZmJiYoaD1NYXRoLm1heChoKk1hdGguY29zKGUqYSksNCkpO3JldHVybnt4Oi1iLzMqTWF0aC5zaW4oZSphKSx5Omh9fTtiLnByb3RvdHlwZS5wYXRoVG9TZWdtZW50cz1mdW5jdGlvbihiKXtmb3IodmFyIGg9W10sYT1bXSxlPXtBOjgsQzo3LEg6MixMOjMsTTozLFE6NSxTOjUsVDozLFY6Mn0sZj0wO2Y8Yi5sZW5ndGg7ZisrKUMoYVswXSkmJm4oYltmXSkmJmEubGVuZ3RoPT09ZVthWzBdLnRvVXBwZXJDYXNlKCldJiZiLnNwbGljZShmLDAsYVswXS5yZXBsYWNlKCJNIiwiTCIpLnJlcGxhY2UoIm0iLCJsIikpLCJzdHJpbmciPT09dHlwZW9mIGJbZl0mJihhLmxlbmd0aCYmaC5wdXNoKGEuc2xpY2UoMCkpLGEubGVuZ3RoPTApLGEucHVzaChiW2ZdKTtoLnB1c2goYS5zbGljZSgwKSk7CnJldHVybiBofTtiLnByb3RvdHlwZS5sYWJlbD1mdW5jdGlvbihiLGEsZSxmLGQsayxsLHUsbSl7cmV0dXJuIG5ldyB5KHRoaXMsYixhLGUsZixkLGssbCx1LG0pfTtyZXR1cm4gYn0oKTtlLnByb3RvdHlwZS5FbGVtZW50PXE7ZS5wcm90b3R5cGUuU1ZHX05TPU07ZS5wcm90b3R5cGUuZHJhdz1CO2UucHJvdG90eXBlLmVzY2FwZXM9eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwiJyI6IiYjMzk7IiwnIic6IiZxdW90OyJ9O2UucHJvdG90eXBlLnN5bWJvbHM9e2NpcmNsZTpmdW5jdGlvbihiLGgsYSxlKXtyZXR1cm4gdGhpcy5hcmMoYithLzIsaCtlLzIsYS8yLGUvMix7c3RhcnQ6LjUqTWF0aC5QSSxlbmQ6Mi41Kk1hdGguUEksb3BlbjohMX0pfSxzcXVhcmU6ZnVuY3Rpb24oYixoLGEsZSl7cmV0dXJuW1siTSIsYixoXSxbIkwiLGIrYSxoXSxbIkwiLGIrYSxoK2VdLFsiTCIsYixoK2VdLFsiWiJdXX0sdHJpYW5nbGU6ZnVuY3Rpb24oYixoLGEsZSl7cmV0dXJuW1siTSIsCmIrYS8yLGhdLFsiTCIsYithLGgrZV0sWyJMIixiLGgrZV0sWyJaIl1dfSwidHJpYW5nbGUtZG93biI6ZnVuY3Rpb24oYixoLGEsZSl7cmV0dXJuW1siTSIsYixoXSxbIkwiLGIrYSxoXSxbIkwiLGIrYS8yLGgrZV0sWyJaIl1dfSxkaWFtb25kOmZ1bmN0aW9uKGIsaCxhLGUpe3JldHVybltbIk0iLGIrYS8yLGhdLFsiTCIsYithLGgrZS8yXSxbIkwiLGIrYS8yLGgrZV0sWyJMIixiLGgrZS8yXSxbIloiXV19LGFyYzpmdW5jdGlvbihiLGgsYSxlLGYpe3ZhciBkPVtdO2lmKGYpe3ZhciB4PWYuc3RhcnR8fDAsaz1mLmVuZHx8MCx6PWYucnx8YTthPWYucnx8ZXx8YTt2YXIgbD0uMDAxPk1hdGguYWJzKGsteC0yKk1hdGguUEkpO2stPS4wMDE7ZT1mLmlubmVyUjtsPW0oZi5vcGVuLGwpO3ZhciB1PU1hdGguY29zKHgpLHA9TWF0aC5zaW4oeCksTj1NYXRoLmNvcyhrKSxBPU1hdGguc2luKGspO3g9bShmLmxvbmdBcmMsLjAwMT5rLXgtTWF0aC5QST8wOjEpO2QucHVzaChbIk0iLGIreip1LApoK2EqcF0sWyJBIix6LGEsMCx4LG0oZi5jbG9ja3dpc2UsMSksYit6Kk4saCthKkFdKTtHKGUpJiZkLnB1c2gobD9bIk0iLGIrZSpOLGgrZSpBXTpbIkwiLGIrZSpOLGgrZSpBXSxbIkEiLGUsZSwwLHgsRyhmLmNsb2Nrd2lzZSk/MS1mLmNsb2Nrd2lzZTowLGIrZSp1LGgrZSpwXSk7bHx8ZC5wdXNoKFsiWiJdKX1yZXR1cm4gZH0sY2FsbG91dDpmdW5jdGlvbihiLGgsYSxlLGYpe3ZhciBkPU1hdGgubWluKGYmJmYucnx8MCxhLGUpLGs9ZCs2LHg9ZiYmZi5hbmNob3JYfHwwO2Y9ZiYmZi5hbmNob3JZfHwwO3ZhciB6PVtbIk0iLGIrZCxoXSxbIkwiLGIrYS1kLGhdLFsiQyIsYithLGgsYithLGgsYithLGgrZF0sWyJMIixiK2EsaCtlLWRdLFsiQyIsYithLGgrZSxiK2EsaCtlLGIrYS1kLGgrZV0sWyJMIixiK2QsaCtlXSxbIkMiLGIsaCtlLGIsaCtlLGIsaCtlLWRdLFsiTCIsYixoK2RdLFsiQyIsYixoLGIsaCxiK2QsaF1dO3gmJng+YT9mPmgrayYmZjxoK2Utaz96LnNwbGljZSgzLDEsClsiTCIsYithLGYtNl0sWyJMIixiK2ErNixmXSxbIkwiLGIrYSxmKzZdLFsiTCIsYithLGgrZS1kXSk6ei5zcGxpY2UoMywxLFsiTCIsYithLGUvMl0sWyJMIix4LGZdLFsiTCIsYithLGUvMl0sWyJMIixiK2EsaCtlLWRdKTp4JiYwPng/Zj5oK2smJmY8aCtlLWs/ei5zcGxpY2UoNywxLFsiTCIsYixmKzZdLFsiTCIsYi02LGZdLFsiTCIsYixmLTZdLFsiTCIsYixoK2RdKTp6LnNwbGljZSg3LDEsWyJMIixiLGUvMl0sWyJMIix4LGZdLFsiTCIsYixlLzJdLFsiTCIsYixoK2RdKTpmJiZmPmUmJng+YitrJiZ4PGIrYS1rP3ouc3BsaWNlKDUsMSxbIkwiLHgrNixoK2VdLFsiTCIseCxoK2UrNl0sWyJMIix4LTYsaCtlXSxbIkwiLGIrZCxoK2VdKTpmJiYwPmYmJng+YitrJiZ4PGIrYS1rJiZ6LnNwbGljZSgxLDEsWyJMIix4LTYsaF0sWyJMIix4LGgtNl0sWyJMIix4KzYsaF0sWyJMIixhLWQsaF0pO3JldHVybiB6fX07Yy5TVkdSZW5kZXJlcj1lO2MuUmVuZGVyZXI9Yy5TVkdSZW5kZXJlcjsKcmV0dXJuIGMuUmVuZGVyZXJ9KTtPKHEsInBhcnRzL0h0bWwuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvU1ZHRWxlbWVudC5qcyJdLHFbInBhcnRzL1NWR1JlbmRlcmVyLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyxxLHkpe3ZhciBCPXkuYXR0cixIPXkuY3JlYXRlRWxlbWVudCxEPXkuY3NzLEo9eS5kZWZpbmVkLHQ9eS5leHRlbmQsRz15LnBpY2ssTD15LnBJbnQsdj1nLmlzRmlyZWZveCxLPWcuaXNNUyxuPWcuaXNXZWJLaXQscj1nLndpbjt0KGMucHJvdG90eXBlLHtodG1sQ3NzOmZ1bmN0aW9uKGMpe3ZhciByPSJTUEFOIj09PXRoaXMuZWxlbWVudC50YWdOYW1lJiZjJiYid2lkdGgiaW4gYyxwPUcociYmYy53aWR0aCx2b2lkIDApO2lmKHIpe2RlbGV0ZSBjLndpZHRoO3RoaXMudGV4dFdpZHRoPXA7dmFyIG09ITB9YyYmImVsbGlwc2lzIj09PWMudGV4dE92ZXJmbG93JiYoYy53aGl0ZVNwYWNlPSJub3dyYXAiLGMub3ZlcmZsb3c9CiJoaWRkZW4iKTt0aGlzLnN0eWxlcz10KHRoaXMuc3R5bGVzLGMpO0QodGhpcy5lbGVtZW50LGMpO20mJnRoaXMuaHRtbFVwZGF0ZVRyYW5zZm9ybSgpO3JldHVybiB0aGlzfSxodG1sR2V0QkJveDpmdW5jdGlvbigpe3ZhciBjPXRoaXMuZWxlbWVudDtyZXR1cm57eDpjLm9mZnNldExlZnQseTpjLm9mZnNldFRvcCx3aWR0aDpjLm9mZnNldFdpZHRoLGhlaWdodDpjLm9mZnNldEhlaWdodH19LGh0bWxVcGRhdGVUcmFuc2Zvcm06ZnVuY3Rpb24oKXtpZih0aGlzLmFkZGVkKXt2YXIgYz10aGlzLnJlbmRlcmVyLHI9dGhpcy5lbGVtZW50LHA9dGhpcy50cmFuc2xhdGVYfHwwLG09dGhpcy50cmFuc2xhdGVZfHwwLGQ9dGhpcy54fHwwLGw9dGhpcy55fHwwLGs9dGhpcy50ZXh0QWxpZ258fCJsZWZ0IixmPXtsZWZ0OjAsY2VudGVyOi41LHJpZ2h0OjF9W2tdLGE9dGhpcy5zdHlsZXMsQT1hJiZhLndoaXRlU3BhY2U7RChyLHttYXJnaW5MZWZ0OnAsbWFyZ2luVG9wOm19KTshYy5zdHlsZWRNb2RlJiYKdGhpcy5zaGFkb3dzJiZ0aGlzLnNoYWRvd3MuZm9yRWFjaChmdW5jdGlvbihhKXtEKGEse21hcmdpbkxlZnQ6cCsxLG1hcmdpblRvcDptKzF9KX0pO3RoaXMuaW52ZXJ0ZWQmJltdLmZvckVhY2guY2FsbChyLmNoaWxkTm9kZXMsZnVuY3Rpb24oYSl7Yy5pbnZlcnRDaGlsZChhLHIpfSk7aWYoIlNQQU4iPT09ci50YWdOYW1lKXthPXRoaXMucm90YXRpb247dmFyIHU9dGhpcy50ZXh0V2lkdGgmJkwodGhpcy50ZXh0V2lkdGgpLEU9W2EsayxyLmlubmVySFRNTCx0aGlzLnRleHRXaWR0aCx0aGlzLnRleHRBbGlnbl0uam9pbigpLG47KG49dSE9PXRoaXMub2xkVGV4dFdpZHRoKSYmIShuPXU+dGhpcy5vbGRUZXh0V2lkdGgpJiYoKG49dGhpcy50ZXh0UHhMZW5ndGgpfHwoRChyLHt3aWR0aDoiIix3aGl0ZVNwYWNlOkF8fCJub3dyYXAifSksbj1yLm9mZnNldFdpZHRoKSxuPW4+dSk7biYmKC9bIFwtXS8udGVzdChyLnRleHRDb250ZW50fHxyLmlubmVyVGV4dCl8fCJlbGxpcHNpcyI9PT1yLnN0eWxlLnRleHRPdmVyZmxvdyk/CihEKHIse3dpZHRoOnUrInB4IixkaXNwbGF5OiJibG9jayIsd2hpdGVTcGFjZTpBfHwibm9ybWFsIn0pLHRoaXMub2xkVGV4dFdpZHRoPXUsdGhpcy5oYXNCb3hXaWR0aENoYW5nZWQ9ITApOnRoaXMuaGFzQm94V2lkdGhDaGFuZ2VkPSExO0UhPT10aGlzLmNUVCYmKEE9Yy5mb250TWV0cmljcyhyLnN0eWxlLmZvbnRTaXplLHIpLmIsIUooYSl8fGE9PT0odGhpcy5vbGRSb3RhdGlvbnx8MCkmJms9PT10aGlzLm9sZEFsaWdufHx0aGlzLnNldFNwYW5Sb3RhdGlvbihhLGYsQSksdGhpcy5nZXRTcGFuQ29ycmVjdGlvbighSihhKSYmdGhpcy50ZXh0UHhMZW5ndGh8fHIub2Zmc2V0V2lkdGgsQSxmLGEsaykpO0Qocix7bGVmdDpkKyh0aGlzLnhDb3JyfHwwKSsicHgiLHRvcDpsKyh0aGlzLnlDb3JyfHwwKSsicHgifSk7dGhpcy5jVFQ9RTt0aGlzLm9sZFJvdGF0aW9uPWE7dGhpcy5vbGRBbGlnbj1rfX1lbHNlIHRoaXMuYWxpZ25PbkFkZD0hMH0sc2V0U3BhblJvdGF0aW9uOmZ1bmN0aW9uKGMsCnIscCl7dmFyIG09e30sZD10aGlzLnJlbmRlcmVyLmdldFRyYW5zZm9ybUtleSgpO21bZF09bS50cmFuc2Zvcm09InJvdGF0ZSgiK2MrImRlZykiO21bZCsodj8iT3JpZ2luIjoiLW9yaWdpbiIpXT1tLnRyYW5zZm9ybU9yaWdpbj0xMDAqcisiJSAiK3ArInB4IjtEKHRoaXMuZWxlbWVudCxtKX0sZ2V0U3BhbkNvcnJlY3Rpb246ZnVuY3Rpb24oYyxyLHApe3RoaXMueENvcnI9LWMqcDt0aGlzLnlDb3JyPS1yfX0pO3QocS5wcm90b3R5cGUse2dldFRyYW5zZm9ybUtleTpmdW5jdGlvbigpe3JldHVybiBLJiYhL0VkZ2UvLnRlc3Qoci5uYXZpZ2F0b3IudXNlckFnZW50KT8iLW1zLXRyYW5zZm9ybSI6bj8iLXdlYmtpdC10cmFuc2Zvcm0iOnY/Ik1velRyYW5zZm9ybSI6ci5vcGVyYT8iLW8tdHJhbnNmb3JtIjoiIn0saHRtbDpmdW5jdGlvbihyLG4scCl7dmFyIG09dGhpcy5jcmVhdGVFbGVtZW50KCJzcGFuIiksZD1tLmVsZW1lbnQsbD1tLnJlbmRlcmVyLGs9bC5pc1NWRyxmPWZ1bmN0aW9uKGEsCmYpe1sib3BhY2l0eSIsInZpc2liaWxpdHkiXS5mb3JFYWNoKGZ1bmN0aW9uKGQpe2FbZCsiU2V0dGVyIl09ZnVuY3Rpb24oayxsLHUpe3ZhciBtPWEuZGl2P2EuZGl2LnN0eWxlOmY7Yy5wcm90b3R5cGVbZCsiU2V0dGVyIl0uY2FsbCh0aGlzLGssbCx1KTttJiYobVtsXT1rKX19KTthLmFkZGVkU2V0dGVycz0hMH07bS50ZXh0U2V0dGVyPWZ1bmN0aW9uKGEpe2EhPT1kLmlubmVySFRNTCYmKGRlbGV0ZSB0aGlzLmJCb3gsZGVsZXRlIHRoaXMub2xkVGV4dFdpZHRoKTt0aGlzLnRleHRTdHI9YTtkLmlubmVySFRNTD1HKGEsIiIpO20uZG9UcmFuc2Zvcm09ITB9O2smJmYobSxtLmVsZW1lbnQuc3R5bGUpO20ueFNldHRlcj1tLnlTZXR0ZXI9bS5hbGlnblNldHRlcj1tLnJvdGF0aW9uU2V0dGVyPWZ1bmN0aW9uKGEsZil7ImFsaWduIj09PWYmJihmPSJ0ZXh0QWxpZ24iKTttW2ZdPWE7bS5kb1RyYW5zZm9ybT0hMH07bS5hZnRlclNldHRlcnM9ZnVuY3Rpb24oKXt0aGlzLmRvVHJhbnNmb3JtJiYKKHRoaXMuaHRtbFVwZGF0ZVRyYW5zZm9ybSgpLHRoaXMuZG9UcmFuc2Zvcm09ITEpfTttLmF0dHIoe3RleHQ6cix4Ok1hdGgucm91bmQobikseTpNYXRoLnJvdW5kKHApfSkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUifSk7bC5zdHlsZWRNb2RlfHxtLmNzcyh7Zm9udEZhbWlseTp0aGlzLnN0eWxlLmZvbnRGYW1pbHksZm9udFNpemU6dGhpcy5zdHlsZS5mb250U2l6ZX0pO2Quc3R5bGUud2hpdGVTcGFjZT0ibm93cmFwIjttLmNzcz1tLmh0bWxDc3M7ayYmKG0uYWRkPWZ1bmN0aW9uKGEpe3ZhciBrPWwuYm94LnBhcmVudE5vZGUsdT1bXTtpZih0aGlzLnBhcmVudEdyb3VwPWEpe3ZhciBwPWEuZGl2O2lmKCFwKXtmb3IoO2E7KXUucHVzaChhKSxhPWEucGFyZW50R3JvdXA7dS5yZXZlcnNlKCkuZm9yRWFjaChmdW5jdGlvbihhKXtmdW5jdGlvbiBkKGYsZSl7YVtlXT1mOyJ0cmFuc2xhdGVYIj09PWU/QS5sZWZ0PWYrInB4IjpBLnRvcD1mKyJweCI7YS5kb1RyYW5zZm9ybT0hMH12YXIgbD0KQihhLmVsZW1lbnQsImNsYXNzIik7cD1hLmRpdj1hLmRpdnx8SCgiZGl2IixsP3tjbGFzc05hbWU6bH06dm9pZCAwLHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6KGEudHJhbnNsYXRlWHx8MCkrInB4Iix0b3A6KGEudHJhbnNsYXRlWXx8MCkrInB4IixkaXNwbGF5OmEuZGlzcGxheSxvcGFjaXR5OmEub3BhY2l0eSxwb2ludGVyRXZlbnRzOmEuc3R5bGVzJiZhLnN0eWxlcy5wb2ludGVyRXZlbnRzfSxwfHxrKTt2YXIgQT1wLnN0eWxlO3QoYSx7Y2xhc3NTZXR0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGUpe3RoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImNsYXNzIixlKTthLmNsYXNzTmFtZT1lfX0ocCksb246ZnVuY3Rpb24oKXt1WzBdLmRpdiYmbS5vbi5hcHBseSh7ZWxlbWVudDp1WzBdLmRpdn0sYXJndW1lbnRzKTtyZXR1cm4gYX0sdHJhbnNsYXRlWFNldHRlcjpkLHRyYW5zbGF0ZVlTZXR0ZXI6ZH0pO2EuYWRkZWRTZXR0ZXJzfHxmKGEpfSl9fWVsc2UgcD1rO3AuYXBwZW5kQ2hpbGQoZCk7Cm0uYWRkZWQ9ITA7bS5hbGlnbk9uQWRkJiZtLmh0bWxVcGRhdGVUcmFuc2Zvcm0oKTtyZXR1cm4gbX0pO3JldHVybiBtfX0pfSk7TyhxLCJwYXJ0cy9UaWNrLmpzIixbcVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMpe3ZhciBxPWMuY2xhbXAseT1jLmNvcnJlY3RGbG9hdCxCPWMuZGVmaW5lZCxIPWMuZGVzdHJveU9iamVjdFByb3BlcnRpZXMsRD1jLmV4dGVuZCxKPWMuZmlyZUV2ZW50LHQ9Yy5pc051bWJlcixHPWMubWVyZ2UsTD1jLm9iamVjdEVhY2gsdj1jLnBpY2ssSz1nLmRlZzJyYWQ7Yz1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYyxDLG4scCxtKXt0aGlzLmlzTmV3TGFiZWw9dGhpcy5pc05ldz0hMDt0aGlzLmF4aXM9Yzt0aGlzLnBvcz1DO3RoaXMudHlwZT1ufHwiIjt0aGlzLnBhcmFtZXRlcnM9bXx8e307dGhpcy50aWNrbWFya09mZnNldD10aGlzLnBhcmFtZXRlcnMudGlja21hcmtPZmZzZXQ7dGhpcy5vcHRpb25zPQp0aGlzLnBhcmFtZXRlcnMub3B0aW9ucztKKHRoaXMsImluaXQiKTtufHxwfHx0aGlzLmFkZExhYmVsKCl9Yy5wcm90b3R5cGUuYWRkTGFiZWw9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLEM9Yy5heGlzLG49Qy5vcHRpb25zLHA9Qy5jaGFydCxtPUMuY2F0ZWdvcmllcyxkPUMubG9nYXJpdGhtaWMsbD1DLm5hbWVzLGs9Yy5wb3MsZj12KGMub3B0aW9ucyYmYy5vcHRpb25zLmxhYmVscyxuLmxhYmVscyksYT1DLnRpY2tQb3NpdGlvbnMsQT1rPT09YVswXSx1PWs9PT1hW2EubGVuZ3RoLTFdO2w9dGhpcy5wYXJhbWV0ZXJzLmNhdGVnb3J5fHwobT92KG1ba10sbFtrXSxrKTprKTt2YXIgRT1jLmxhYmVsO209KCFmLnN0ZXB8fDE9PT1mLnN0ZXApJiYxPT09Qy50aWNrSW50ZXJ2YWw7YT1hLmluZm87dmFyIGcsdztpZihDLmRhdGVUaW1lJiZhKXt2YXIgTT1wLnRpbWUucmVzb2x2ZURUTEZvcm1hdChuLmRhdGVUaW1lTGFiZWxGb3JtYXRzWyFuLmdyaWQmJmEuaGlnaGVyUmFua3Nba118fGEudW5pdE5hbWVdKTsKdmFyIEY9TS5tYWlufWMuaXNGaXJzdD1BO2MuaXNMYXN0PXU7Yy5mb3JtYXRDdHg9e2F4aXM6QyxjaGFydDpwLGlzRmlyc3Q6QSxpc0xhc3Q6dSxkYXRlVGltZUxhYmVsRm9ybWF0OkYsdGlja1Bvc2l0aW9uSW5mbzphLHZhbHVlOmQ/eShkLmxpbjJsb2cobCkpOmwscG9zOmt9O249Qy5sYWJlbEZvcm1hdHRlci5jYWxsKGMuZm9ybWF0Q3R4LHRoaXMuZm9ybWF0Q3R4KTtpZih3PU0mJk0ubGlzdCljLnNob3J0ZW5MYWJlbD1mdW5jdGlvbigpe2ZvcihnPTA7Zzx3Lmxlbmd0aDtnKyspaWYoRS5hdHRyKHt0ZXh0OkMubGFiZWxGb3JtYXR0ZXIuY2FsbChEKGMuZm9ybWF0Q3R4LHtkYXRlVGltZUxhYmVsRm9ybWF0OndbZ119KSl9KSxFLmdldEJCb3goKS53aWR0aDxDLmdldFNsb3RXaWR0aChjKS0yKnYoZi5wYWRkaW5nLDUpKXJldHVybjtFLmF0dHIoe3RleHQ6IiJ9KX07bSYmQy5fYWRkZWRQbG90TEImJkMuaXNYQXhpcyYmYy5tb3ZlTGFiZWwobixmKTtCKEUpfHxjLm1vdmVkTGFiZWw/CkUmJkUudGV4dFN0ciE9PW4mJiFtJiYoIUUudGV4dFdpZHRofHxmLnN0eWxlJiZmLnN0eWxlLndpZHRofHxFLnN0eWxlcy53aWR0aHx8RS5jc3Moe3dpZHRoOm51bGx9KSxFLmF0dHIoe3RleHQ6bn0pLEUudGV4dFB4TGVuZ3RoPUUuZ2V0QkJveCgpLndpZHRoKTooYy5sYWJlbD1FPWMuY3JlYXRlTGFiZWwoe3g6MCx5OjB9LG4sZiksYy5yb3RhdGlvbj0wKX07Yy5wcm90b3R5cGUuY3JlYXRlTGFiZWw9ZnVuY3Rpb24oYyxDLG4pe3ZhciBwPXRoaXMuYXhpcyxtPXAuY2hhcnQ7aWYoYz1CKEMpJiZuLmVuYWJsZWQ/bS5yZW5kZXJlci50ZXh0KEMsYy54LGMueSxuLnVzZUhUTUwpLmFkZChwLmxhYmVsR3JvdXApOm51bGwpbS5zdHlsZWRNb2RlfHxjLmNzcyhHKG4uc3R5bGUpKSxjLnRleHRQeExlbmd0aD1jLmdldEJCb3goKS53aWR0aDtyZXR1cm4gY307Yy5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe0godGhpcyx0aGlzLmF4aXMpfTtjLnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbihjLApDLG4scCl7dmFyIG09dGhpcy5heGlzLGQ9bS5jaGFydCxsPXAmJmQub2xkQ2hhcnRIZWlnaHR8fGQuY2hhcnRIZWlnaHQ7Yz17eDpjP3kobS50cmFuc2xhdGUoQytuLG51bGwsbnVsbCxwKSttLnRyYW5zQik6bS5sZWZ0K20ub2Zmc2V0KyhtLm9wcG9zaXRlPyhwJiZkLm9sZENoYXJ0V2lkdGh8fGQuY2hhcnRXaWR0aCktbS5yaWdodC1tLmxlZnQ6MCkseTpjP2wtbS5ib3R0b20rbS5vZmZzZXQtKG0ub3Bwb3NpdGU/bS5oZWlnaHQ6MCk6eShsLW0udHJhbnNsYXRlKEMrbixudWxsLG51bGwscCktbS50cmFuc0IpfTtjLnk9cShjLnksLTFFNSwxRTUpO0oodGhpcywiYWZ0ZXJHZXRQb3NpdGlvbiIse3BvczpjfSk7cmV0dXJuIGN9O2MucHJvdG90eXBlLmdldExhYmVsUG9zaXRpb249ZnVuY3Rpb24oYyxDLG4scCxtLGQsbCxrKXt2YXIgZj10aGlzLmF4aXMsYT1mLnRyYW5zQSxBPWYuaXNMaW5rZWQmJmYubGlua2VkUGFyZW50P2YubGlua2VkUGFyZW50LnJldmVyc2VkOmYucmV2ZXJzZWQsCnU9Zi5zdGFnZ2VyTGluZXMscj1mLnRpY2tSb3RDb3JyfHx7eDowLHk6MH0sZz1tLnksdz1wfHxmLnJlc2VydmVTcGFjZURlZmF1bHQ/MDotZi5sYWJlbE9mZnNldCooImNlbnRlciI9PT1mLmxhYmVsQWxpZ24/LjU6MSksTT17fTtCKGcpfHwoZz0wPT09Zi5zaWRlP24ucm90YXRpb24/LTg6LW4uZ2V0QkJveCgpLmhlaWdodDoyPT09Zi5zaWRlP3IueSs4Ok1hdGguY29zKG4ucm90YXRpb24qSykqKHIueS1uLmdldEJCb3goITEsMCkuaGVpZ2h0LzIpKTtjPWMrbS54K3crci54LShkJiZwP2QqYSooQT8tMToxKTowKTtDPUMrZy0oZCYmIXA/ZCphKihBPzE6LTEpOjApO3UmJihuPWwvKGt8fDEpJXUsZi5vcHBvc2l0ZSYmKG49dS1uLTEpLEMrPWYubGFiZWxPZmZzZXQvdSpuKTtNLng9YztNLnk9TWF0aC5yb3VuZChDKTtKKHRoaXMsImFmdGVyR2V0TGFiZWxQb3NpdGlvbiIse3BvczpNLHRpY2ttYXJrT2Zmc2V0OmQsaW5kZXg6bH0pO3JldHVybiBNfTtjLnByb3RvdHlwZS5nZXRMYWJlbFNpemU9CmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGFiZWw/dGhpcy5sYWJlbC5nZXRCQm94KClbdGhpcy5heGlzLmhvcml6PyJoZWlnaHQiOiJ3aWR0aCJdOjB9O2MucHJvdG90eXBlLmdldE1hcmtQYXRoPWZ1bmN0aW9uKGMsQyxuLHAsbSxkKXtyZXR1cm4gZC5jcmlzcExpbmUoW1siTSIsYyxDXSxbIkwiLGMrKG0/MDotbiksQysobT9uOjApXV0scCl9O2MucHJvdG90eXBlLmhhbmRsZU92ZXJmbG93PWZ1bmN0aW9uKGMpe3ZhciByPXRoaXMuYXhpcyxuPXIub3B0aW9ucy5sYWJlbHMscD1jLngsbT1yLmNoYXJ0LmNoYXJ0V2lkdGgsZD1yLmNoYXJ0LnNwYWNpbmcsbD12KHIubGFiZWxMZWZ0LE1hdGgubWluKHIucG9zLGRbM10pKTtkPXYoci5sYWJlbFJpZ2h0LE1hdGgubWF4KHIuaXNSYWRpYWw/MDpyLnBvcytyLmxlbixtLWRbMV0pKTt2YXIgaz10aGlzLmxhYmVsLGY9dGhpcy5yb3RhdGlvbixhPXtsZWZ0OjAsY2VudGVyOi41LHJpZ2h0OjF9W3IubGFiZWxBbGlnbnx8ay5hdHRyKCJhbGlnbiIpXSwKQT1rLmdldEJCb3goKS53aWR0aCx1PXIuZ2V0U2xvdFdpZHRoKHRoaXMpLEU9dSxnPTEsdyxNPXt9O2lmKGZ8fCJqdXN0aWZ5IiE9PXYobi5vdmVyZmxvdywianVzdGlmeSIpKTA+ZiYmcC1hKkE8bD93PU1hdGgucm91bmQocC9NYXRoLmNvcyhmKkspLWwpOjA8ZiYmcCthKkE+ZCYmKHc9TWF0aC5yb3VuZCgobS1wKS9NYXRoLmNvcyhmKkspKSk7ZWxzZSBpZihtPXArKDEtYSkqQSxwLWEqQTxsP0U9Yy54K0UqKDEtYSktbDptPmQmJihFPWQtYy54K0UqYSxnPS0xKSxFPU1hdGgubWluKHUsRSksRTx1JiYiY2VudGVyIj09PXIubGFiZWxBbGlnbiYmKGMueCs9ZyoodS1FLWEqKHUtTWF0aC5taW4oQSxFKSkpKSxBPkV8fHIuYXV0b1JvdGF0aW9uJiYoay5zdHlsZXN8fHt9KS53aWR0aCl3PUU7dyYmKHRoaXMuc2hvcnRlbkxhYmVsP3RoaXMuc2hvcnRlbkxhYmVsKCk6KE0ud2lkdGg9TWF0aC5mbG9vcih3KSsicHgiLChuLnN0eWxlfHx7fSkudGV4dE92ZXJmbG93fHwoTS50ZXh0T3ZlcmZsb3c9CiJlbGxpcHNpcyIpLGsuY3NzKE0pKSl9O2MucHJvdG90eXBlLm1vdmVMYWJlbD1mdW5jdGlvbihjLEMpe3ZhciByPXRoaXMscD1yLmxhYmVsLG09ITEsZD1yLmF4aXMsbD1kLnJldmVyc2VkLGs9ZC5jaGFydC5pbnZlcnRlZDtwJiZwLnRleHRTdHI9PT1jPyhyLm1vdmVkTGFiZWw9cCxtPSEwLGRlbGV0ZSByLmxhYmVsKTpMKGQudGlja3MsZnVuY3Rpb24oYSl7bXx8YS5pc05ld3x8YT09PXJ8fCFhLmxhYmVsfHxhLmxhYmVsLnRleHRTdHIhPT1jfHwoci5tb3ZlZExhYmVsPWEubGFiZWwsbT0hMCxhLmxhYmVsUG9zPXIubW92ZWRMYWJlbC54eSxkZWxldGUgYS5sYWJlbCl9KTtpZighbSYmKHIubGFiZWxQb3N8fHApKXt2YXIgZj1yLmxhYmVsUG9zfHxwLnh5O3A9az9mLng6bD8wOmQud2lkdGgrZC5sZWZ0O2Q9az9sP2Qud2lkdGgrZC5sZWZ0OjA6Zi55O3IubW92ZWRMYWJlbD1yLmNyZWF0ZUxhYmVsKHt4OnAseTpkfSxjLEMpO3IubW92ZWRMYWJlbCYmci5tb3ZlZExhYmVsLmF0dHIoe29wYWNpdHk6MH0pfX07CmMucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihjLEMsbil7dmFyIHA9dGhpcy5heGlzLG09cC5ob3JpeixkPXRoaXMucG9zLGw9dih0aGlzLnRpY2ttYXJrT2Zmc2V0LHAudGlja21hcmtPZmZzZXQpO2Q9dGhpcy5nZXRQb3NpdGlvbihtLGQsbCxDKTtsPWQueDt2YXIgaz1kLnk7cD1tJiZsPT09cC5wb3MrcC5sZW58fCFtJiZrPT09cC5wb3M/LTE6MTtuPXYobiwxKTt0aGlzLmlzQWN0aXZlPSEwO3RoaXMucmVuZGVyR3JpZExpbmUoQyxuLHApO3RoaXMucmVuZGVyTWFyayhkLG4scCk7dGhpcy5yZW5kZXJMYWJlbChkLEMsbixjKTt0aGlzLmlzTmV3PSExO0oodGhpcywiYWZ0ZXJSZW5kZXIiKX07Yy5wcm90b3R5cGUucmVuZGVyR3JpZExpbmU9ZnVuY3Rpb24oYyxDLG4pe3ZhciBwPXRoaXMuYXhpcyxtPXAub3B0aW9ucyxkPXRoaXMuZ3JpZExpbmUsbD17fSxrPXRoaXMucG9zLGY9dGhpcy50eXBlLGE9dih0aGlzLnRpY2ttYXJrT2Zmc2V0LHAudGlja21hcmtPZmZzZXQpLEE9cC5jaGFydC5yZW5kZXJlciwKdT1mP2YrIkdyaWQiOiJncmlkIixyPW1bdSsiTGluZVdpZHRoIl0sZz1tW3UrIkxpbmVDb2xvciJdO209bVt1KyJMaW5lRGFzaFN0eWxlIl07ZHx8KHAuY2hhcnQuc3R5bGVkTW9kZXx8KGwuc3Ryb2tlPWcsbFsic3Ryb2tlLXdpZHRoIl09cixtJiYobC5kYXNoc3R5bGU9bSkpLGZ8fChsLnpJbmRleD0xKSxjJiYoQz0wKSx0aGlzLmdyaWRMaW5lPWQ9QS5wYXRoKCkuYXR0cihsKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy0iKyhmP2YrIi0iOiIiKSsiZ3JpZC1saW5lIikuYWRkKHAuZ3JpZEdyb3VwKSk7aWYoZCYmKG49cC5nZXRQbG90TGluZVBhdGgoe3ZhbHVlOmsrYSxsaW5lV2lkdGg6ZC5zdHJva2VXaWR0aCgpKm4sZm9yY2U6InBhc3MiLG9sZDpjfSkpKWRbY3x8dGhpcy5pc05ldz8iYXR0ciI6ImFuaW1hdGUiXSh7ZDpuLG9wYWNpdHk6Q30pfTtjLnByb3RvdHlwZS5yZW5kZXJNYXJrPWZ1bmN0aW9uKGMsbixnKXt2YXIgcD10aGlzLmF4aXMsbT1wLm9wdGlvbnMsZD1wLmNoYXJ0LnJlbmRlcmVyLApsPXRoaXMudHlwZSxrPWw/bCsiVGljayI6InRpY2siLGY9cC50aWNrU2l6ZShrKSxhPXRoaXMubWFyayxBPSFhLHU9Yy54O2M9Yy55O3ZhciByPXYobVtrKyJXaWR0aCJdLCFsJiZwLmlzWEF4aXM/MTowKTttPW1baysiQ29sb3IiXTtmJiYocC5vcHBvc2l0ZSYmKGZbMF09LWZbMF0pLEEmJih0aGlzLm1hcms9YT1kLnBhdGgoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy0iKyhsP2wrIi0iOiIiKSsidGljayIpLmFkZChwLmF4aXNHcm91cCkscC5jaGFydC5zdHlsZWRNb2RlfHxhLmF0dHIoe3N0cm9rZTptLCJzdHJva2Utd2lkdGgiOnJ9KSksYVtBPyJhdHRyIjoiYW5pbWF0ZSJdKHtkOnRoaXMuZ2V0TWFya1BhdGgodSxjLGZbMF0sYS5zdHJva2VXaWR0aCgpKmcscC5ob3JpeixkKSxvcGFjaXR5Om59KSl9O2MucHJvdG90eXBlLnJlbmRlckxhYmVsPWZ1bmN0aW9uKGMsbixnLHApe3ZhciBtPXRoaXMuYXhpcyxkPW0uaG9yaXosbD1tLm9wdGlvbnMsaz10aGlzLmxhYmVsLGY9bC5sYWJlbHMsCmE9Zi5zdGVwO209dih0aGlzLnRpY2ttYXJrT2Zmc2V0LG0udGlja21hcmtPZmZzZXQpO3ZhciBBPSEwLHU9Yy54O2M9Yy55O2smJnQodSkmJihrLnh5PWM9dGhpcy5nZXRMYWJlbFBvc2l0aW9uKHUsYyxrLGQsZixtLHAsYSksdGhpcy5pc0ZpcnN0JiYhdGhpcy5pc0xhc3QmJiF2KGwuc2hvd0ZpcnN0TGFiZWwsMSl8fHRoaXMuaXNMYXN0JiYhdGhpcy5pc0ZpcnN0JiYhdihsLnNob3dMYXN0TGFiZWwsMSk/QT0hMTohZHx8Zi5zdGVwfHxmLnJvdGF0aW9ufHxufHwwPT09Z3x8dGhpcy5oYW5kbGVPdmVyZmxvdyhjKSxhJiZwJWEmJihBPSExKSxBJiZ0KGMueSk/KGMub3BhY2l0eT1nLGtbdGhpcy5pc05ld0xhYmVsPyJhdHRyIjoiYW5pbWF0ZSJdKGMpLHRoaXMuaXNOZXdMYWJlbD0hMSk6KGsuYXR0cigieSIsLTk5OTkpLHRoaXMuaXNOZXdMYWJlbD0hMCkpfTtjLnByb3RvdHlwZS5yZXBsYWNlTW92ZWRMYWJlbD1mdW5jdGlvbigpe3ZhciBjPXRoaXMubGFiZWwsbj10aGlzLmF4aXMsZz0Kbi5yZXZlcnNlZCxwPXRoaXMuYXhpcy5jaGFydC5pbnZlcnRlZDtpZihjJiYhdGhpcy5pc05ldyl7dmFyIG09cD9jLnh5Lng6Zz9uLmxlZnQ6bi53aWR0aCtuLmxlZnQ7Zz1wP2c/bi53aWR0aCtuLnRvcDpuLnRvcDpjLnh5Lnk7Yy5hbmltYXRlKHt4Om0seTpnLG9wYWNpdHk6MH0sdm9pZCAwLGMuZGVzdHJveSk7ZGVsZXRlIHRoaXMubGFiZWx9bi5pc0RpcnR5PSEwO3RoaXMubGFiZWw9dGhpcy5tb3ZlZExhYmVsO2RlbGV0ZSB0aGlzLm1vdmVkTGFiZWx9O3JldHVybiBjfSgpO2cuVGljaz1jO3JldHVybiBnLlRpY2t9KTtPKHEsInBhcnRzL1RpbWUuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyl7dmFyIHE9Yy5kZWZpbmVkLHk9Yy5lcnJvcixCPWMuZXh0ZW5kLEg9Yy5pc09iamVjdCxEPWMubWVyZ2UsSj1jLm9iamVjdEVhY2gsdD1jLnBhZCxHPWMucGljayxMPWMuc3BsYXQsdj1jLnRpbWVVbml0cyxLPWcud2luOwpjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhjKXt0aGlzLm9wdGlvbnM9e307dGhpcy52YXJpYWJsZVRpbWV6b25lPXRoaXMudXNlVVRDPSExO3RoaXMuRGF0ZT1LLkRhdGU7dGhpcy5nZXRUaW1lem9uZU9mZnNldD10aGlzLnRpbWV6b25lT2Zmc2V0RnVuY3Rpb24oKTt0aGlzLnVwZGF0ZShjKX1jLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYyxuKXtpZih0aGlzLnZhcmlhYmxlVGltZXpvbmV8fHRoaXMudGltZXpvbmVPZmZzZXQpe3ZhciByPW4uZ2V0VGltZSgpLHA9ci10aGlzLmdldFRpbWV6b25lT2Zmc2V0KG4pO24uc2V0VGltZShwKTtjPW5bImdldFVUQyIrY10oKTtuLnNldFRpbWUocik7cmV0dXJuIGN9cmV0dXJuIHRoaXMudXNlVVRDP25bImdldFVUQyIrY10oKTpuWyJnZXQiK2NdKCl9O2MucHJvdG90eXBlLnNldD1mdW5jdGlvbihjLG4sZyl7aWYodGhpcy52YXJpYWJsZVRpbWV6b25lfHx0aGlzLnRpbWV6b25lT2Zmc2V0KXtpZigiTWlsbGlzZWNvbmRzIj09PWN8fCJTZWNvbmRzIj09PQpjfHwiTWludXRlcyI9PT1jKXJldHVybiBuWyJzZXRVVEMiK2NdKGcpO3ZhciBwPXRoaXMuZ2V0VGltZXpvbmVPZmZzZXQobik7cD1uLmdldFRpbWUoKS1wO24uc2V0VGltZShwKTtuWyJzZXRVVEMiK2NdKGcpO2M9dGhpcy5nZXRUaW1lem9uZU9mZnNldChuKTtwPW4uZ2V0VGltZSgpK2M7cmV0dXJuIG4uc2V0VGltZShwKX1yZXR1cm4gdGhpcy51c2VVVEM/blsic2V0VVRDIitjXShnKTpuWyJzZXQiK2NdKGcpfTtjLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYyl7dmFyIG49RyhjJiZjLnVzZVVUQywhMCk7dGhpcy5vcHRpb25zPWM9RCghMCx0aGlzLm9wdGlvbnN8fHt9LGMpO3RoaXMuRGF0ZT1jLkRhdGV8fEsuRGF0ZXx8RGF0ZTt0aGlzLnRpbWV6b25lT2Zmc2V0PSh0aGlzLnVzZVVUQz1uKSYmYy50aW1lem9uZU9mZnNldDt0aGlzLmdldFRpbWV6b25lT2Zmc2V0PXRoaXMudGltZXpvbmVPZmZzZXRGdW5jdGlvbigpO3RoaXMudmFyaWFibGVUaW1lem9uZT0hKG4mJiFjLmdldFRpbWV6b25lT2Zmc2V0JiYKIWMudGltZXpvbmUpfTtjLnByb3RvdHlwZS5tYWtlVGltZT1mdW5jdGlvbihjLG4sdCxwLG0sZCl7aWYodGhpcy51c2VVVEMpe3ZhciBsPXRoaXMuRGF0ZS5VVEMuYXBwbHkoMCxhcmd1bWVudHMpO3ZhciBrPXRoaXMuZ2V0VGltZXpvbmVPZmZzZXQobCk7bCs9azt2YXIgZj10aGlzLmdldFRpbWV6b25lT2Zmc2V0KGwpO2shPT1mP2wrPWYtazprLTM2RTUhPT10aGlzLmdldFRpbWV6b25lT2Zmc2V0KGwtMzZFNSl8fGcuaXNTYWZhcml8fChsLT0zNkU1KX1lbHNlIGw9KG5ldyB0aGlzLkRhdGUoYyxuLEcodCwxKSxHKHAsMCksRyhtLDApLEcoZCwwKSkpLmdldFRpbWUoKTtyZXR1cm4gbH07Yy5wcm90b3R5cGUudGltZXpvbmVPZmZzZXRGdW5jdGlvbj1mdW5jdGlvbigpe3ZhciBjPXRoaXMsbj10aGlzLm9wdGlvbnMsZz1LLm1vbWVudDtpZighdGhpcy51c2VVVEMpcmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiA2RTQqKG5ldyBEYXRlKGMudG9TdHJpbmcoKSkpLmdldFRpbWV6b25lT2Zmc2V0KCl9OwppZihuLnRpbWV6b25lKXtpZihnKXJldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gNkU0Ki1nLnR6KGMsbi50aW1lem9uZSkudXRjT2Zmc2V0KCl9O3koMjUpfXJldHVybiB0aGlzLnVzZVVUQyYmbi5nZXRUaW1lem9uZU9mZnNldD9mdW5jdGlvbihjKXtyZXR1cm4gNkU0Km4uZ2V0VGltZXpvbmVPZmZzZXQoYy52YWx1ZU9mKCkpfTpmdW5jdGlvbigpe3JldHVybiA2RTQqKGMudGltZXpvbmVPZmZzZXR8fDApfX07Yy5wcm90b3R5cGUuZGF0ZUZvcm1hdD1mdW5jdGlvbihjLG4sdil7dmFyIHA7aWYoIXEobil8fGlzTmFOKG4pKXJldHVybihudWxsPT09KHA9Zy5kZWZhdWx0T3B0aW9ucy5sYW5nKXx8dm9pZCAwPT09cD92b2lkIDA6cC5pbnZhbGlkRGF0ZSl8fCIiO2M9RyhjLCIlWS0lbS0lZCAlSDolTTolUyIpO3ZhciBtPXRoaXM7cD1uZXcgdGhpcy5EYXRlKG4pO3ZhciBkPXRoaXMuZ2V0KCJIb3VycyIscCksbD10aGlzLmdldCgiRGF5IixwKSxrPXRoaXMuZ2V0KCJEYXRlIixwKSxmPXRoaXMuZ2V0KCJNb250aCIsCnApLGE9dGhpcy5nZXQoIkZ1bGxZZWFyIixwKSxBPWcuZGVmYXVsdE9wdGlvbnMubGFuZyx1PW51bGw9PT1BfHx2b2lkIDA9PT1BP3ZvaWQgMDpBLndlZWtkYXlzLEU9bnVsbD09PUF8fHZvaWQgMD09PUE/dm9pZCAwOkEuc2hvcnRXZWVrZGF5cztwPUIoe2E6RT9FW2xdOnVbbF0uc3Vic3RyKDAsMyksQTp1W2xdLGQ6dChrKSxlOnQoaywyLCIgIiksdzpsLGI6QS5zaG9ydE1vbnRoc1tmXSxCOkEubW9udGhzW2ZdLG06dChmKzEpLG86ZisxLHk6YS50b1N0cmluZygpLnN1YnN0cigyLDIpLFk6YSxIOnQoZCksazpkLEk6dChkJTEyfHwxMiksbDpkJTEyfHwxMixNOnQodGhpcy5nZXQoIk1pbnV0ZXMiLHApKSxwOjEyPmQ/IkFNIjoiUE0iLFA6MTI+ZD8iYW0iOiJwbSIsUzp0KHAuZ2V0U2Vjb25kcygpKSxMOnQoTWF0aC5mbG9vcihuJTFFMyksMyl9LGcuZGF0ZUZvcm1hdHMpO0oocCxmdW5jdGlvbihhLGYpe2Zvcig7LTEhPT1jLmluZGV4T2YoIiUiK2YpOyljPWMucmVwbGFjZSgiJSIrZiwKImZ1bmN0aW9uIj09PXR5cGVvZiBhP2EuY2FsbChtLG4pOmEpfSk7cmV0dXJuIHY/Yy5zdWJzdHIoMCwxKS50b1VwcGVyQ2FzZSgpK2Muc3Vic3RyKDEpOmN9O2MucHJvdG90eXBlLnJlc29sdmVEVExGb3JtYXQ9ZnVuY3Rpb24oYyl7cmV0dXJuIEgoYywhMCk/YzooYz1MKGMpLHttYWluOmNbMF0sZnJvbTpjWzFdLHRvOmNbMl19KX07Yy5wcm90b3R5cGUuZ2V0VGltZVRpY2tzPWZ1bmN0aW9uKGMsbixnLHApe3ZhciBtPXRoaXMsZD1bXSxsPXt9O3ZhciBrPW5ldyBtLkRhdGUobik7dmFyIGY9Yy51bml0UmFuZ2UsYT1jLmNvdW50fHwxLEE7cD1HKHAsMSk7aWYocShuKSl7bS5zZXQoIk1pbGxpc2Vjb25kcyIsayxmPj12LnNlY29uZD8wOmEqTWF0aC5mbG9vcihtLmdldCgiTWlsbGlzZWNvbmRzIixrKS9hKSk7Zj49di5zZWNvbmQmJm0uc2V0KCJTZWNvbmRzIixrLGY+PXYubWludXRlPzA6YSpNYXRoLmZsb29yKG0uZ2V0KCJTZWNvbmRzIixrKS9hKSk7Zj49di5taW51dGUmJm0uc2V0KCJNaW51dGVzIiwKayxmPj12LmhvdXI/MDphKk1hdGguZmxvb3IobS5nZXQoIk1pbnV0ZXMiLGspL2EpKTtmPj12LmhvdXImJm0uc2V0KCJIb3VycyIsayxmPj12LmRheT8wOmEqTWF0aC5mbG9vcihtLmdldCgiSG91cnMiLGspL2EpKTtmPj12LmRheSYmbS5zZXQoIkRhdGUiLGssZj49di5tb250aD8xOk1hdGgubWF4KDEsYSpNYXRoLmZsb29yKG0uZ2V0KCJEYXRlIixrKS9hKSkpO2lmKGY+PXYubW9udGgpe20uc2V0KCJNb250aCIsayxmPj12LnllYXI/MDphKk1hdGguZmxvb3IobS5nZXQoIk1vbnRoIixrKS9hKSk7dmFyIHU9bS5nZXQoIkZ1bGxZZWFyIixrKX1mPj12LnllYXImJm0uc2V0KCJGdWxsWWVhciIsayx1LXUlYSk7Zj09PXYud2VlayYmKHU9bS5nZXQoIkRheSIsayksbS5zZXQoIkRhdGUiLGssbS5nZXQoIkRhdGUiLGspLXUrcCsodTxwPy03OjApKSk7dT1tLmdldCgiRnVsbFllYXIiLGspO3A9bS5nZXQoIk1vbnRoIixrKTt2YXIgRT1tLmdldCgiRGF0ZSIsaykscj1tLmdldCgiSG91cnMiLAprKTtuPWsuZ2V0VGltZSgpO20udmFyaWFibGVUaW1lem9uZSYmKEE9Zy1uPjQqdi5tb250aHx8bS5nZXRUaW1lem9uZU9mZnNldChuKSE9PW0uZ2V0VGltZXpvbmVPZmZzZXQoZykpO249ay5nZXRUaW1lKCk7Zm9yKGs9MTtuPGc7KWQucHVzaChuKSxuPWY9PT12LnllYXI/bS5tYWtlVGltZSh1K2sqYSwwKTpmPT09di5tb250aD9tLm1ha2VUaW1lKHUscCtrKmEpOiFBfHxmIT09di5kYXkmJmYhPT12LndlZWs/QSYmZj09PXYuaG91ciYmMTxhP20ubWFrZVRpbWUodSxwLEUscitrKmEpOm4rZiphOm0ubWFrZVRpbWUodSxwLEUrayphKihmPT09di5kYXk/MTo3KSksaysrO2QucHVzaChuKTtmPD12LmhvdXImJjFFND5kLmxlbmd0aCYmZC5mb3JFYWNoKGZ1bmN0aW9uKGEpezA9PT1hJTE4RTUmJiIwMDAwMDAwMDAiPT09bS5kYXRlRm9ybWF0KCIlSCVNJVMlTCIsYSkmJihsW2FdPSJkYXkiKX0pfWQuaW5mbz1CKGMse2hpZ2hlclJhbmtzOmwsdG90YWxSYW5nZTpmKmF9KTtyZXR1cm4gZH07CnJldHVybiBjfSgpO2cuVGltZT1jO3JldHVybiBnLlRpbWV9KTtPKHEsInBhcnRzL09wdGlvbnMuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvVGltZS5qcyJdLHFbInBhcnRzL0NvbG9yLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyxxLHkpe3E9cS5wYXJzZTt5PXkubWVyZ2U7Zy5kZWZhdWx0T3B0aW9ucz17Y29sb3JzOiIjN2NiNWVjICM0MzQzNDggIzkwZWQ3ZCAjZjdhMzVjICM4MDg1ZTkgI2YxNWM4MCAjZTRkMzU0ICMyYjkwOGYgI2Y0NWI1YiAjOTFlOGUxIi5zcGxpdCgiICIpLHN5bWJvbHM6WyJjaXJjbGUiLCJkaWFtb25kIiwic3F1YXJlIiwidHJpYW5nbGUiLCJ0cmlhbmdsZS1kb3duIl0sbGFuZzp7bG9hZGluZzoiTG9hZGluZy4uLiIsbW9udGhzOiJKYW51YXJ5IEZlYnJ1YXJ5IE1hcmNoIEFwcmlsIE1heSBKdW5lIEp1bHkgQXVndXN0IFNlcHRlbWJlciBPY3RvYmVyIE5vdmVtYmVyIERlY2VtYmVyIi5zcGxpdCgiICIpLApzaG9ydE1vbnRoczoiSmFuIEZlYiBNYXIgQXByIE1heSBKdW4gSnVsIEF1ZyBTZXAgT2N0IE5vdiBEZWMiLnNwbGl0KCIgIiksd2Vla2RheXM6IlN1bmRheSBNb25kYXkgVHVlc2RheSBXZWRuZXNkYXkgVGh1cnNkYXkgRnJpZGF5IFNhdHVyZGF5Ii5zcGxpdCgiICIpLGRlY2ltYWxQb2ludDoiLiIsbnVtZXJpY1N5bWJvbHM6ImtNR1RQRSIuc3BsaXQoIiIpLHJlc2V0Wm9vbToiUmVzZXQgem9vbSIscmVzZXRab29tVGl0bGU6IlJlc2V0IHpvb20gbGV2ZWwgMToxIix0aG91c2FuZHNTZXA6IiAifSxnbG9iYWw6e30sdGltZTp7RGF0ZTp2b2lkIDAsZ2V0VGltZXpvbmVPZmZzZXQ6dm9pZCAwLHRpbWV6b25lOnZvaWQgMCx0aW1lem9uZU9mZnNldDowLHVzZVVUQzohMH0sY2hhcnQ6e3N0eWxlZE1vZGU6ITEsYm9yZGVyUmFkaXVzOjAsY29sb3JDb3VudDoxMCxkZWZhdWx0U2VyaWVzVHlwZToibGluZSIsaWdub3JlSGlkZGVuU2VyaWVzOiEwLHNwYWNpbmc6WzEwLDEwLDE1LDEwXSxyZXNldFpvb21CdXR0b246e3RoZW1lOnt6SW5kZXg6Nn0sCnBvc2l0aW9uOnthbGlnbjoicmlnaHQiLHg6LTEwLHk6MTB9fSx3aWR0aDpudWxsLGhlaWdodDpudWxsLGJvcmRlckNvbG9yOiIjMzM1Y2FkIixiYWNrZ3JvdW5kQ29sb3I6IiNmZmZmZmYiLHBsb3RCb3JkZXJDb2xvcjoiI2NjY2NjYyJ9LHRpdGxlOnt0ZXh0OiJDaGFydCB0aXRsZSIsYWxpZ246ImNlbnRlciIsbWFyZ2luOjE1LHdpZHRoQWRqdXN0Oi00NH0sc3VidGl0bGU6e3RleHQ6IiIsYWxpZ246ImNlbnRlciIsd2lkdGhBZGp1c3Q6LTQ0fSxjYXB0aW9uOnttYXJnaW46MTUsdGV4dDoiIixhbGlnbjoibGVmdCIsdmVydGljYWxBbGlnbjoiYm90dG9tIn0scGxvdE9wdGlvbnM6e30sbGFiZWxzOntzdHlsZTp7cG9zaXRpb246ImFic29sdXRlIixjb2xvcjoiIzMzMzMzMyJ9fSxsZWdlbmQ6e2VuYWJsZWQ6ITAsYWxpZ246ImNlbnRlciIsYWxpZ25Db2x1bW5zOiEwLGxheW91dDoiaG9yaXpvbnRhbCIsbGFiZWxGb3JtYXR0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfSxib3JkZXJDb2xvcjoiIzk5OTk5OSIsCmJvcmRlclJhZGl1czowLG5hdmlnYXRpb246e2FjdGl2ZUNvbG9yOiIjMDAzMzk5IixpbmFjdGl2ZUNvbG9yOiIjY2NjY2NjIn0saXRlbVN0eWxlOntjb2xvcjoiIzMzMzMzMyIsY3Vyc29yOiJwb2ludGVyIixmb250U2l6ZToiMTJweCIsZm9udFdlaWdodDoiYm9sZCIsdGV4dE92ZXJmbG93OiJlbGxpcHNpcyJ9LGl0ZW1Ib3ZlclN0eWxlOntjb2xvcjoiIzAwMDAwMCJ9LGl0ZW1IaWRkZW5TdHlsZTp7Y29sb3I6IiNjY2NjY2MifSxzaGFkb3c6ITEsaXRlbUNoZWNrYm94U3R5bGU6e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsd2lkdGg6IjEzcHgiLGhlaWdodDoiMTNweCJ9LHNxdWFyZVN5bWJvbDohMCxzeW1ib2xQYWRkaW5nOjUsdmVydGljYWxBbGlnbjoiYm90dG9tIix4OjAseTowLHRpdGxlOntzdHlsZTp7Zm9udFdlaWdodDoiYm9sZCJ9fX0sbG9hZGluZzp7bGFiZWxTdHlsZTp7Zm9udFdlaWdodDoiYm9sZCIscG9zaXRpb246InJlbGF0aXZlIix0b3A6IjQ1JSJ9LHN0eWxlOntwb3NpdGlvbjoiYWJzb2x1dGUiLApiYWNrZ3JvdW5kQ29sb3I6IiNmZmZmZmYiLG9wYWNpdHk6LjUsdGV4dEFsaWduOiJjZW50ZXIifX0sdG9vbHRpcDp7ZW5hYmxlZDohMCxhbmltYXRpb246Zy5zdmcsYm9yZGVyUmFkaXVzOjMsZGF0ZVRpbWVMYWJlbEZvcm1hdHM6e21pbGxpc2Vjb25kOiIlQSwgJWIgJWUsICVIOiVNOiVTLiVMIixzZWNvbmQ6IiVBLCAlYiAlZSwgJUg6JU06JVMiLG1pbnV0ZToiJUEsICViICVlLCAlSDolTSIsaG91cjoiJUEsICViICVlLCAlSDolTSIsZGF5OiIlQSwgJWIgJWUsICVZIix3ZWVrOiJXZWVrIGZyb20gJUEsICViICVlLCAlWSIsbW9udGg6IiVCICVZIix5ZWFyOiIlWSJ9LGZvb3RlckZvcm1hdDoiIixwYWRkaW5nOjgsc25hcDpnLmlzVG91Y2hEZXZpY2U/MjU6MTAsaGVhZGVyRm9ybWF0Oic8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij57cG9pbnQua2V5fTwvc3Bhbj48YnIvPicscG9pbnRGb3JtYXQ6JzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij5cdTI1Y2Y8L3NwYW4+IHtzZXJpZXMubmFtZX06IDxiPntwb2ludC55fTwvYj48YnIvPicsCmJhY2tncm91bmRDb2xvcjpxKCIjZjdmN2Y3Iikuc2V0T3BhY2l0eSguODUpLmdldCgpLGJvcmRlcldpZHRoOjEsc2hhZG93OiEwLHN0eWxlOntjb2xvcjoiIzMzMzMzMyIsY3Vyc29yOiJkZWZhdWx0Iixmb250U2l6ZToiMTJweCIsd2hpdGVTcGFjZToibm93cmFwIn19LGNyZWRpdHM6e2VuYWJsZWQ6ITAsaHJlZjoiaHR0cHM6Ly93d3cuaGlnaGNoYXJ0cy5jb20/Y3JlZGl0cyIscG9zaXRpb246e2FsaWduOiJyaWdodCIseDotMTAsdmVydGljYWxBbGlnbjoiYm90dG9tIix5Oi01fSxzdHlsZTp7Y3Vyc29yOiJwb2ludGVyIixjb2xvcjoiIzk5OTk5OSIsZm9udFNpemU6IjlweCJ9LHRleHQ6IkhpZ2hjaGFydHMuY29tIn19OyIiO2cudGltZT1uZXcgYyh5KGcuZGVmYXVsdE9wdGlvbnMuZ2xvYmFsLGcuZGVmYXVsdE9wdGlvbnMudGltZSkpO2cuZGF0ZUZvcm1hdD1mdW5jdGlvbihjLHEseSl7cmV0dXJuIGcudGltZS5kYXRlRm9ybWF0KGMscSx5KX07cmV0dXJue2RhdGVGb3JtYXQ6Zy5kYXRlRm9ybWF0LApkZWZhdWx0T3B0aW9uczpnLmRlZmF1bHRPcHRpb25zLHRpbWU6Zy50aW1lfX0pO08ocSwicGFydHMvQXhpcy5qcyIsW3FbInBhcnRzL0NvbG9yLmpzIl0scVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL1RpY2suanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXSxxWyJwYXJ0cy9PcHRpb25zLmpzIl1dLGZ1bmN0aW9uKGcsYyxxLHksQil7dmFyIEg9eS5hZGRFdmVudCxEPXkuYW5pbU9iamVjdCxKPXkuYXJyYXlNYXgsdD15LmFycmF5TWluLEc9eS5jbGFtcCxMPXkuY29ycmVjdEZsb2F0LHY9eS5kZWZpbmVkLEs9eS5kZXN0cm95T2JqZWN0UHJvcGVydGllcyxuPXkuZXJyb3Iscj15LmV4dGVuZCxDPXkuZmlyZUV2ZW50LEk9eS5mb3JtYXQscD15LmdldE1hZ25pdHVkZSxtPXkuaXNBcnJheSxkPXkuaXNGdW5jdGlvbixsPXkuaXNOdW1iZXIsaz15LmlzU3RyaW5nLGY9eS5tZXJnZSxhPXkubm9ybWFsaXplVGlja0ludGVydmFsLEE9eS5vYmplY3RFYWNoLHU9eS5waWNrLEU9eS5yZWxhdGl2ZUxlbmd0aCwKUD15LnJlbW92ZUV2ZW50LHc9eS5zcGxhdCxNPXkuc3luY1RpbWVvdXQsRj1CLmRlZmF1bHRPcHRpb25zLFE9Yy5kZWcycmFkO3k9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGIsYSl7dGhpcy56b29tRW5hYmxlZD10aGlzLndpZHRoPXRoaXMudmlzaWJsZT10aGlzLnVzZXJPcHRpb25zPXRoaXMudHJhbnNsYXRpb25TbG9wZT10aGlzLnRyYW5zQj10aGlzLnRyYW5zQT10aGlzLnRvcD10aGlzLnRpY2tzPXRoaXMudGlja1JvdENvcnI9dGhpcy50aWNrUG9zaXRpb25zPXRoaXMudGlja21hcmtPZmZzZXQ9dGhpcy50aWNrSW50ZXJ2YWw9dGhpcy50aWNrQW1vdW50PXRoaXMuc2lkZT10aGlzLnNlcmllcz10aGlzLnJpZ2h0PXRoaXMucG9zaXRpdmVWYWx1ZXNPbmx5PXRoaXMucG9zPXRoaXMucG9pbnRSYW5nZVBhZGRpbmc9dGhpcy5wb2ludFJhbmdlPXRoaXMucGxvdExpbmVzQW5kQmFuZHNHcm91cHM9dGhpcy5wbG90TGluZXNBbmRCYW5kcz10aGlzLnBhZGRlZFRpY2tzPXRoaXMub3ZlcmxhcD0KdGhpcy5vcHRpb25zPXRoaXMub2xkTWluPXRoaXMub2xkTWF4PXRoaXMub2Zmc2V0PXRoaXMubmFtZXM9dGhpcy5taW5QaXhlbFBhZGRpbmc9dGhpcy5taW5vclRpY2tzPXRoaXMubWlub3JUaWNrSW50ZXJ2YWw9dGhpcy5taW49dGhpcy5tYXhMYWJlbExlbmd0aD10aGlzLm1heD10aGlzLmxlbj10aGlzLmxlZnQ9dGhpcy5sYWJlbEZvcm1hdHRlcj10aGlzLmxhYmVsRWRnZT10aGlzLmlzTGlua2VkPXRoaXMuaGVpZ2h0PXRoaXMuaGFzVmlzaWJsZVNlcmllcz10aGlzLmhhc05hbWVzPXRoaXMuY29sbD10aGlzLmNsb3Nlc3RQb2ludFJhbmdlPXRoaXMuY2hhcnQ9dGhpcy5jYXRlZ29yaWVzPXRoaXMuYm90dG9tPXRoaXMuYWx0ZXJuYXRlQmFuZHM9dm9pZCAwO3RoaXMuaW5pdChiLGEpfWUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYixhKXt2YXIgaD1hLmlzWCxlPXRoaXM7ZS5jaGFydD1iO2UuaG9yaXo9Yi5pbnZlcnRlZCYmIWUuaXNaQXhpcz8haDpoO2UuaXNYQXhpcz1oO2UuY29sbD0KZS5jb2xsfHwoaD8ieEF4aXMiOiJ5QXhpcyIpO0ModGhpcywiaW5pdCIse3VzZXJPcHRpb25zOmF9KTtlLm9wcG9zaXRlPWEub3Bwb3NpdGU7ZS5zaWRlPWEuc2lkZXx8KGUuaG9yaXo/ZS5vcHBvc2l0ZT8wOjI6ZS5vcHBvc2l0ZT8xOjMpO2Uuc2V0T3B0aW9ucyhhKTt2YXIgZj10aGlzLm9wdGlvbnMsaz1mLnR5cGU7ZS5sYWJlbEZvcm1hdHRlcj1mLmxhYmVscy5mb3JtYXR0ZXJ8fGUuZGVmYXVsdExhYmVsRm9ybWF0dGVyO2UudXNlck9wdGlvbnM9YTtlLm1pblBpeGVsUGFkZGluZz0wO2UucmV2ZXJzZWQ9Zi5yZXZlcnNlZDtlLnZpc2libGU9ITEhPT1mLnZpc2libGU7ZS56b29tRW5hYmxlZD0hMSE9PWYuem9vbUVuYWJsZWQ7ZS5oYXNOYW1lcz0iY2F0ZWdvcnkiPT09a3x8ITA9PT1mLmNhdGVnb3JpZXM7ZS5jYXRlZ29yaWVzPWYuY2F0ZWdvcmllc3x8ZS5oYXNOYW1lcztlLm5hbWVzfHwoZS5uYW1lcz1bXSxlLm5hbWVzLmtleXM9e30pO2UucGxvdExpbmVzQW5kQmFuZHNHcm91cHM9Cnt9O2UucG9zaXRpdmVWYWx1ZXNPbmx5PSEoIWUubG9nYXJpdGhtaWN8fGYuYWxsb3dOZWdhdGl2ZUxvZyk7ZS5pc0xpbmtlZD12KGYubGlua2VkVG8pO2UudGlja3M9e307ZS5sYWJlbEVkZ2U9W107ZS5taW5vclRpY2tzPXt9O2UucGxvdExpbmVzQW5kQmFuZHM9W107ZS5hbHRlcm5hdGVCYW5kcz17fTtlLmxlbj0wO2UubWluUmFuZ2U9ZS51c2VyTWluUmFuZ2U9Zi5taW5SYW5nZXx8Zi5tYXhab29tO2UucmFuZ2U9Zi5yYW5nZTtlLm9mZnNldD1mLm9mZnNldHx8MDtlLm1heD1udWxsO2UubWluPW51bGw7ZS5jcm9zc2hhaXI9dShmLmNyb3NzaGFpcix3KGIub3B0aW9ucy50b29sdGlwLmNyb3NzaGFpcnMpW2g/MDoxXSwhMSk7YT1lLm9wdGlvbnMuZXZlbnRzOy0xPT09Yi5heGVzLmluZGV4T2YoZSkmJihoP2IuYXhlcy5zcGxpY2UoYi54QXhpcy5sZW5ndGgsMCxlKTpiLmF4ZXMucHVzaChlKSxiW2UuY29sbF0ucHVzaChlKSk7ZS5zZXJpZXM9ZS5zZXJpZXN8fFtdO2IuaW52ZXJ0ZWQmJgohZS5pc1pBeGlzJiZoJiYidW5kZWZpbmVkIj09PXR5cGVvZiBlLnJldmVyc2VkJiYoZS5yZXZlcnNlZD0hMCk7ZS5sYWJlbFJvdGF0aW9uPWUub3B0aW9ucy5sYWJlbHMucm90YXRpb247QShhLGZ1bmN0aW9uKGIsYSl7ZChiKSYmSChlLGEsYil9KTtDKHRoaXMsImFmdGVySW5pdCIpfTtlLnByb3RvdHlwZS5zZXRPcHRpb25zPWZ1bmN0aW9uKGIpe3RoaXMub3B0aW9ucz1mKGUuZGVmYXVsdE9wdGlvbnMsInlBeGlzIj09PXRoaXMuY29sbCYmZS5kZWZhdWx0WUF4aXNPcHRpb25zLFtlLmRlZmF1bHRUb3BBeGlzT3B0aW9ucyxlLmRlZmF1bHRSaWdodEF4aXNPcHRpb25zLGUuZGVmYXVsdEJvdHRvbUF4aXNPcHRpb25zLGUuZGVmYXVsdExlZnRBeGlzT3B0aW9uc11bdGhpcy5zaWRlXSxmKEZbdGhpcy5jb2xsXSxiKSk7Qyh0aGlzLCJhZnRlclNldE9wdGlvbnMiLHt1c2VyT3B0aW9uczpifSl9O2UucHJvdG90eXBlLmRlZmF1bHRMYWJlbEZvcm1hdHRlcj1mdW5jdGlvbigpe3ZhciBiPXRoaXMuYXhpcywKYT1sKHRoaXMudmFsdWUpP3RoaXMudmFsdWU6TmFOLGU9Yi5jaGFydC50aW1lLGY9Yi5jYXRlZ29yaWVzLGQ9dGhpcy5kYXRlVGltZUxhYmVsRm9ybWF0LGs9Ri5sYW5nLGM9ay5udW1lcmljU3ltYm9scztrPWsubnVtZXJpY1N5bWJvbE1hZ25pdHVkZXx8MUUzO3ZhciB1PWMmJmMubGVuZ3RoLG09Yi5vcHRpb25zLmxhYmVscy5mb3JtYXQ7Yj1iLmxvZ2FyaXRobWljP01hdGguYWJzKGEpOmIudGlja0ludGVydmFsO3ZhciBwPXRoaXMuY2hhcnQsQT1wLm51bWJlckZvcm1hdHRlcjtpZihtKXZhciB3PUkobSx0aGlzLHApO2Vsc2UgaWYoZil3PSIiK3RoaXMudmFsdWU7ZWxzZSBpZihkKXc9ZS5kYXRlRm9ybWF0KGQsYSk7ZWxzZSBpZih1JiYxRTM8PWIpZm9yKDt1LS0mJiJ1bmRlZmluZWQiPT09dHlwZW9mIHc7KWU9TWF0aC5wb3coayx1KzEpLGI+PWUmJjA9PT0xMCphJWUmJm51bGwhPT1jW3VdJiYwIT09YSYmKHc9QShhL2UsLTEpK2NbdV0pOyJ1bmRlZmluZWQiPT09dHlwZW9mIHcmJgoodz0xRTQ8PU1hdGguYWJzKGEpP0EoYSwtMSk6QShhLC0xLHZvaWQgMCwiIikpO3JldHVybiB3fTtlLnByb3RvdHlwZS5nZXRTZXJpZXNFeHRyZW1lcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMsYT1iLmNoYXJ0LGU7Qyh0aGlzLCJnZXRTZXJpZXNFeHRyZW1lcyIsbnVsbCxmdW5jdGlvbigpe2IuaGFzVmlzaWJsZVNlcmllcz0hMTtiLmRhdGFNaW49Yi5kYXRhTWF4PWIudGhyZXNob2xkPW51bGw7Yi5zb2Z0VGhyZXNob2xkPSFiLmlzWEF4aXM7Yi5zdGFja2luZyYmYi5zdGFja2luZy5idWlsZFN0YWNrcygpO2Iuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oaCl7aWYoaC52aXNpYmxlfHwhYS5vcHRpb25zLmNoYXJ0Lmlnbm9yZUhpZGRlblNlcmllcyl7dmFyIGY9aC5vcHRpb25zLGQ9Zi50aHJlc2hvbGQ7Yi5oYXNWaXNpYmxlU2VyaWVzPSEwO2IucG9zaXRpdmVWYWx1ZXNPbmx5JiYwPj1kJiYoZD1udWxsKTtpZihiLmlzWEF4aXMpe2lmKGY9aC54RGF0YSxmLmxlbmd0aCl7ZT1oLmdldFhFeHRyZW1lcyhmKTsKdmFyIGs9ZS5taW47dmFyIHg9ZS5tYXg7bChrKXx8ayBpbnN0YW5jZW9mIERhdGV8fChmPWYuZmlsdGVyKGwpLGU9aC5nZXRYRXh0cmVtZXMoZiksaz1lLm1pbix4PWUubWF4KTtmLmxlbmd0aCYmKGIuZGF0YU1pbj1NYXRoLm1pbih1KGIuZGF0YU1pbixrKSxrKSxiLmRhdGFNYXg9TWF0aC5tYXgodShiLmRhdGFNYXgseCkseCkpfX1lbHNlIGlmKGg9aC5hcHBseUV4dHJlbWVzKCksbChoLmRhdGFNaW4pJiYoaz1oLmRhdGFNaW4sYi5kYXRhTWluPU1hdGgubWluKHUoYi5kYXRhTWluLGspLGspKSxsKGguZGF0YU1heCkmJih4PWguZGF0YU1heCxiLmRhdGFNYXg9TWF0aC5tYXgodShiLmRhdGFNYXgseCkseCkpLHYoZCkmJihiLnRocmVzaG9sZD1kKSwhZi5zb2Z0VGhyZXNob2xkfHxiLnBvc2l0aXZlVmFsdWVzT25seSliLnNvZnRUaHJlc2hvbGQ9ITF9fSl9KTtDKHRoaXMsImFmdGVyR2V0U2VyaWVzRXh0cmVtZXMiKX07ZS5wcm90b3R5cGUudHJhbnNsYXRlPWZ1bmN0aW9uKGIsYSxlLApmLGQsayl7dmFyIGg9dGhpcy5saW5rZWRQYXJlbnR8fHRoaXMseD0xLHo9MCxjPWY/aC5vbGRUcmFuc0E6aC50cmFuc0E7Zj1mP2gub2xkTWluOmgubWluO3ZhciB1PWgubWluUGl4ZWxQYWRkaW5nO2Q9KGguaXNPcmRpbmFsfHxoLmJyb2tlbkF4aXMmJmguYnJva2VuQXhpcy5oYXNCcmVha3N8fGgubG9nYXJpdGhtaWMmJmQpJiZoLmxpbjJ2YWw7Y3x8KGM9aC50cmFuc0EpO2UmJih4Kj0tMSx6PWgubGVuKTtoLnJldmVyc2VkJiYoeCo9LTEsei09eCooaC5zZWN0b3J8fGgubGVuKSk7YT8oYj0oYip4K3otdSkvYytmLGQmJihiPWgubGluMnZhbChiKSkpOihkJiYoYj1oLnZhbDJsaW4oYikpLGI9bChmKT94KihiLWYpKmMreit4KnUrKGwoayk/YyprOjApOnZvaWQgMCk7cmV0dXJuIGJ9O2UucHJvdG90eXBlLnRvUGl4ZWxzPWZ1bmN0aW9uKGIsYSl7cmV0dXJuIHRoaXMudHJhbnNsYXRlKGIsITEsIXRoaXMuaG9yaXosbnVsbCwhMCkrKGE/MDp0aGlzLnBvcyl9O2UucHJvdG90eXBlLnRvVmFsdWU9CmZ1bmN0aW9uKGIsYSl7cmV0dXJuIHRoaXMudHJhbnNsYXRlKGItKGE/MDp0aGlzLnBvcyksITAsIXRoaXMuaG9yaXosbnVsbCwhMCl9O2UucHJvdG90eXBlLmdldFBsb3RMaW5lUGF0aD1mdW5jdGlvbihiKXtmdW5jdGlvbiBhKGIsYSxoKXtpZigicGFzcyIhPT13JiZiPGF8fGI+aCl3P2I9RyhiLGEsaCk6dD0hMDtyZXR1cm4gYn12YXIgZT10aGlzLGY9ZS5jaGFydCxkPWUubGVmdCxrPWUudG9wLGM9Yi5vbGQsbT1iLnZhbHVlLHA9Yi50cmFuc2xhdGVkVmFsdWUsQT1iLmxpbmVXaWR0aCx3PWIuZm9yY2UsbixnLEUscixNPWMmJmYub2xkQ2hhcnRIZWlnaHR8fGYuY2hhcnRIZWlnaHQsRj1jJiZmLm9sZENoYXJ0V2lkdGh8fGYuY2hhcnRXaWR0aCx0LHY9ZS50cmFuc0I7Yj17dmFsdWU6bSxsaW5lV2lkdGg6QSxvbGQ6Yyxmb3JjZTp3LGFjcm9zc1BhbmVzOmIuYWNyb3NzUGFuZXMsdHJhbnNsYXRlZFZhbHVlOnB9O0ModGhpcywiZ2V0UGxvdExpbmVQYXRoIixiLGZ1bmN0aW9uKGIpe3A9CnUocCxlLnRyYW5zbGF0ZShtLG51bGwsbnVsbCxjKSk7cD1HKHAsLTFFNSwxRTUpO249RT1NYXRoLnJvdW5kKHArdik7Zz1yPU1hdGgucm91bmQoTS1wLXYpO2wocCk/ZS5ob3Jpej8oZz1rLHI9TS1lLmJvdHRvbSxuPUU9YShuLGQsZCtlLndpZHRoKSk6KG49ZCxFPUYtZS5yaWdodCxnPXI9YShnLGssaytlLmhlaWdodCkpOih0PSEwLHc9ITEpO2IucGF0aD10JiYhdz9udWxsOmYucmVuZGVyZXIuY3Jpc3BMaW5lKFtbIk0iLG4sZ10sWyJMIixFLHJdXSxBfHwxKX0pO3JldHVybiBiLnBhdGh9O2UucHJvdG90eXBlLmdldExpbmVhclRpY2tQb3NpdGlvbnM9ZnVuY3Rpb24oYixhLGUpe3ZhciBoPUwoTWF0aC5mbG9vcihhL2IpKmIpO2U9TChNYXRoLmNlaWwoZS9iKSpiKTt2YXIgZj1bXSxkO0woaCtiKT09PWgmJihkPTIwKTtpZih0aGlzLnNpbmdsZSlyZXR1cm5bYV07Zm9yKGE9aDthPD1lOyl7Zi5wdXNoKGEpO2E9TChhK2IsZCk7aWYoYT09PWspYnJlYWs7dmFyIGs9YX1yZXR1cm4gZn07CmUucHJvdG90eXBlLmdldE1pbm9yVGlja0ludGVydmFsPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zO3JldHVybiEwPT09Yi5taW5vclRpY2tzP3UoYi5taW5vclRpY2tJbnRlcnZhbCwiYXV0byIpOiExPT09Yi5taW5vclRpY2tzP251bGw6Yi5taW5vclRpY2tJbnRlcnZhbH07ZS5wcm90b3R5cGUuZ2V0TWlub3JUaWNrUG9zaXRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zLGE9dGhpcy50aWNrUG9zaXRpb25zLGU9dGhpcy5taW5vclRpY2tJbnRlcnZhbCxmPVtdLGQ9dGhpcy5wb2ludFJhbmdlUGFkZGluZ3x8MCxrPXRoaXMubWluLWQ7ZD10aGlzLm1heCtkO3ZhciBjPWQtaztpZihjJiZjL2U8dGhpcy5sZW4vMyl7dmFyIGw9dGhpcy5sb2dhcml0aG1pYztpZihsKXRoaXMucGFkZGVkVGlja3MuZm9yRWFjaChmdW5jdGlvbihiLGEsaCl7YSYmZi5wdXNoLmFwcGx5KGYsbC5nZXRMb2dUaWNrUG9zaXRpb25zKGUsaFthLTFdLGhbYV0sITApKX0pO2Vsc2UgaWYodGhpcy5kYXRlVGltZSYmCiJhdXRvIj09PXRoaXMuZ2V0TWlub3JUaWNrSW50ZXJ2YWwoKSlmPWYuY29uY2F0KHRoaXMuZ2V0VGltZVRpY2tzKHRoaXMuZGF0ZVRpbWUubm9ybWFsaXplVGltZVRpY2tJbnRlcnZhbChlKSxrLGQsYi5zdGFydE9mV2VlaykpO2Vsc2UgZm9yKGI9aysoYVswXS1rKSVlO2I8PWQmJmIhPT1mWzBdO2IrPWUpZi5wdXNoKGIpfTAhPT1mLmxlbmd0aCYmdGhpcy50cmltVGlja3MoZik7cmV0dXJuIGZ9O2UucHJvdG90eXBlLmFkanVzdEZvck1pblJhbmdlPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zLGE9dGhpcy5taW4sZT10aGlzLm1heCxmPXRoaXMubG9nYXJpdGhtaWMsZCxrLGMsbCxtO3RoaXMuaXNYQXhpcyYmInVuZGVmaW5lZCI9PT10eXBlb2YgdGhpcy5taW5SYW5nZSYmIWYmJih2KGIubWluKXx8dihiLm1heCk/dGhpcy5taW5SYW5nZT1udWxsOih0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2w9Yi54RGF0YTtmb3Ioaz1tPWIueEluY3JlbWVudD8xOmwubGVuZ3RoLQoxOzA8aztrLS0paWYoYz1sW2tdLWxbay0xXSwidW5kZWZpbmVkIj09PXR5cGVvZiBkfHxjPGQpZD1jfSksdGhpcy5taW5SYW5nZT1NYXRoLm1pbig1KmQsdGhpcy5kYXRhTWF4LXRoaXMuZGF0YU1pbikpKTtpZihlLWE8dGhpcy5taW5SYW5nZSl7dmFyIHA9dGhpcy5kYXRhTWF4LXRoaXMuZGF0YU1pbj49dGhpcy5taW5SYW5nZTt2YXIgQT10aGlzLm1pblJhbmdlO3ZhciB3PShBLWUrYSkvMjt3PVthLXcsdShiLm1pbixhLXcpXTtwJiYod1syXT10aGlzLmxvZ2FyaXRobWljP3RoaXMubG9nYXJpdGhtaWMubG9nMmxpbih0aGlzLmRhdGFNaW4pOnRoaXMuZGF0YU1pbik7YT1KKHcpO2U9W2ErQSx1KGIubWF4LGErQSldO3AmJihlWzJdPWY/Zi5sb2cybGluKHRoaXMuZGF0YU1heCk6dGhpcy5kYXRhTWF4KTtlPXQoZSk7ZS1hPEEmJih3WzBdPWUtQSx3WzFdPXUoYi5taW4sZS1BKSxhPUoodykpfXRoaXMubWluPWE7dGhpcy5tYXg9ZX07ZS5wcm90b3R5cGUuZ2V0Q2xvc2VzdD1mdW5jdGlvbigpe3ZhciBiOwp0aGlzLmNhdGVnb3JpZXM/Yj0xOnRoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGg9YS5jbG9zZXN0UG9pbnRSYW5nZSxlPWEudmlzaWJsZXx8IWEuY2hhcnQub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXM7IWEubm9TaGFyZWRUb29sdGlwJiZ2KGgpJiZlJiYoYj12KGIpP01hdGgubWluKGIsaCk6aCl9KTtyZXR1cm4gYn07ZS5wcm90b3R5cGUubmFtZVRvWD1mdW5jdGlvbihiKXt2YXIgYT1tKHRoaXMuY2F0ZWdvcmllcyksZT1hP3RoaXMuY2F0ZWdvcmllczp0aGlzLm5hbWVzLGY9Yi5vcHRpb25zLng7Yi5zZXJpZXMucmVxdWlyZVNvcnRpbmc9ITE7dihmKXx8KGY9ITE9PT10aGlzLm9wdGlvbnMudW5pcXVlTmFtZXM/Yi5zZXJpZXMuYXV0b0luY3JlbWVudCgpOmE/ZS5pbmRleE9mKGIubmFtZSk6dShlLmtleXNbYi5uYW1lXSwtMSkpO2lmKC0xPT09Zil7aWYoIWEpdmFyIGQ9ZS5sZW5ndGh9ZWxzZSBkPWY7InVuZGVmaW5lZCIhPT10eXBlb2YgZCYmKHRoaXMubmFtZXNbZF09CmIubmFtZSx0aGlzLm5hbWVzLmtleXNbYi5uYW1lXT1kKTtyZXR1cm4gZH07ZS5wcm90b3R5cGUudXBkYXRlTmFtZXM9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGE9dGhpcy5uYW1lczswPGEubGVuZ3RoJiYoT2JqZWN0LmtleXMoYS5rZXlzKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2RlbGV0ZSBhLmtleXNbYl19KSxhLmxlbmd0aD0wLHRoaXMubWluUmFuZ2U9dGhpcy51c2VyTWluUmFuZ2UsKHRoaXMuc2VyaWVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXthLnhJbmNyZW1lbnQ9bnVsbDtpZighYS5wb2ludHN8fGEuaXNEaXJ0eURhdGEpYi5tYXg9TWF0aC5tYXgoYi5tYXgsYS54RGF0YS5sZW5ndGgtMSksYS5wcm9jZXNzRGF0YSgpLGEuZ2VuZXJhdGVQb2ludHMoKTthLmRhdGEuZm9yRWFjaChmdW5jdGlvbihoLGUpe2lmKGgmJmgub3B0aW9ucyYmInVuZGVmaW5lZCIhPT10eXBlb2YgaC5uYW1lKXt2YXIgZj1iLm5hbWVUb1goaCk7InVuZGVmaW5lZCIhPT10eXBlb2YgZiYmZiE9PWgueCYmCihoLng9ZixhLnhEYXRhW2VdPWYpfX0pfSkpfTtlLnByb3RvdHlwZS5zZXRBeGlzVHJhbnNsYXRpb249ZnVuY3Rpb24oYil7dmFyIGE9dGhpcyxlPWEubWF4LWEubWluLGY9YS5heGlzUG9pbnRSYW5nZXx8MCxkPTAsYz0wLGw9YS5saW5rZWRQYXJlbnQsbT0hIWEuY2F0ZWdvcmllcyxwPWEudHJhbnNBLEE9YS5pc1hBeGlzO2lmKEF8fG18fGYpe3ZhciB3PWEuZ2V0Q2xvc2VzdCgpO2w/KGQ9bC5taW5Qb2ludE9mZnNldCxjPWwucG9pbnRSYW5nZVBhZGRpbmcpOmEuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGg9bT8xOkE/dShiLm9wdGlvbnMucG9pbnRSYW5nZSx3LDApOmEuYXhpc1BvaW50UmFuZ2V8fDAsZT1iLm9wdGlvbnMucG9pbnRQbGFjZW1lbnQ7Zj1NYXRoLm1heChmLGgpO2lmKCFhLnNpbmdsZXx8bSliPWIuaXMoInhyYW5nZSIpPyFBOkEsZD1NYXRoLm1heChkLGImJmsoZSk/MDpoLzIpLGM9TWF0aC5tYXgoYyxiJiYib24iPT09ZT8wOmgpfSk7bD1hLm9yZGluYWwmJgphLm9yZGluYWwuc2xvcGUmJnc/YS5vcmRpbmFsLnNsb3BlL3c6MTthLm1pblBvaW50T2Zmc2V0PWQqPWw7YS5wb2ludFJhbmdlUGFkZGluZz1jKj1sO2EucG9pbnRSYW5nZT1NYXRoLm1pbihmLGEuc2luZ2xlJiZtPzE6ZSk7QSYmKGEuY2xvc2VzdFBvaW50UmFuZ2U9dyl9YiYmKGEub2xkVHJhbnNBPXApO2EudHJhbnNsYXRpb25TbG9wZT1hLnRyYW5zQT1wPWEuc3RhdGljU2NhbGV8fGEubGVuLyhlK2N8fDEpO2EudHJhbnNCPWEuaG9yaXo/YS5sZWZ0OmEuYm90dG9tO2EubWluUGl4ZWxQYWRkaW5nPXAqZDtDKHRoaXMsImFmdGVyU2V0QXhpc1RyYW5zbGF0aW9uIil9O2UucHJvdG90eXBlLm1pbkZyb21SYW5nZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1heC10aGlzLnJhbmdlfTtlLnByb3RvdHlwZS5zZXRUaWNrSW50ZXJ2YWw9ZnVuY3Rpb24oYil7dmFyIGg9dGhpcyxlPWguY2hhcnQsZj1oLmxvZ2FyaXRobWljLGQ9aC5vcHRpb25zLGs9aC5pc1hBeGlzLGM9aC5pc0xpbmtlZCwKbT1kLm1heFBhZGRpbmcsQT1kLm1pblBhZGRpbmcsdz1kLnRpY2tJbnRlcnZhbCxnPWQudGlja1BpeGVsSW50ZXJ2YWwsRT1oLmNhdGVnb3JpZXMscj1sKGgudGhyZXNob2xkKT9oLnRocmVzaG9sZDpudWxsLFM9aC5zb2Z0VGhyZXNob2xkO2guZGF0ZVRpbWV8fEV8fGN8fHRoaXMuZ2V0VGlja0Ftb3VudCgpO3ZhciBNPXUoaC51c2VyTWluLGQubWluKTt2YXIgRj11KGgudXNlck1heCxkLm1heCk7aWYoYyl7aC5saW5rZWRQYXJlbnQ9ZVtoLmNvbGxdW2QubGlua2VkVG9dO3ZhciB0PWgubGlua2VkUGFyZW50LmdldEV4dHJlbWVzKCk7aC5taW49dSh0Lm1pbix0LmRhdGFNaW4pO2gubWF4PXUodC5tYXgsdC5kYXRhTWF4KTtkLnR5cGUhPT1oLmxpbmtlZFBhcmVudC5vcHRpb25zLnR5cGUmJm4oMTEsMSxlKX1lbHNle2lmKCFTJiZ2KHIpKWlmKGguZGF0YU1pbj49cil0PXIsQT0wO2Vsc2UgaWYoaC5kYXRhTWF4PD1yKXt2YXIgUD1yO209MH1oLm1pbj11KE0sdCxoLmRhdGFNaW4pO2gubWF4PQp1KEYsUCxoLmRhdGFNYXgpfWYmJihoLnBvc2l0aXZlVmFsdWVzT25seSYmIWImJjA+PU1hdGgubWluKGgubWluLHUoaC5kYXRhTWluLGgubWluKSkmJm4oMTAsMSxlKSxoLm1pbj1MKGYubG9nMmxpbihoLm1pbiksMTYpLGgubWF4PUwoZi5sb2cybGluKGgubWF4KSwxNikpO2gucmFuZ2UmJnYoaC5tYXgpJiYoaC51c2VyTWluPWgubWluPU09TWF0aC5tYXgoaC5kYXRhTWluLGgubWluRnJvbVJhbmdlKCkpLGgudXNlck1heD1GPWgubWF4LGgucmFuZ2U9bnVsbCk7QyhoLCJmb3VuZEV4dHJlbWVzIik7aC5iZWZvcmVQYWRkaW5nJiZoLmJlZm9yZVBhZGRpbmcoKTtoLmFkanVzdEZvck1pblJhbmdlKCk7IShFfHxoLmF4aXNQb2ludFJhbmdlfHxoLnN0YWNraW5nJiZoLnN0YWNraW5nLnVzZVBlcmNlbnRhZ2V8fGMpJiZ2KGgubWluKSYmdihoLm1heCkmJihlPWgubWF4LWgubWluKSYmKCF2KE0pJiZBJiYoaC5taW4tPWUqQSksIXYoRikmJm0mJihoLm1heCs9ZSptKSk7bChoLnVzZXJNaW4pfHwKKGwoZC5zb2Z0TWluKSYmZC5zb2Z0TWluPGgubWluJiYoaC5taW49TT1kLnNvZnRNaW4pLGwoZC5mbG9vcikmJihoLm1pbj1NYXRoLm1heChoLm1pbixkLmZsb29yKSkpO2woaC51c2VyTWF4KXx8KGwoZC5zb2Z0TWF4KSYmZC5zb2Z0TWF4PmgubWF4JiYoaC5tYXg9Rj1kLnNvZnRNYXgpLGwoZC5jZWlsaW5nKSYmKGgubWF4PU1hdGgubWluKGgubWF4LGQuY2VpbGluZykpKTtTJiZ2KGguZGF0YU1pbikmJihyPXJ8fDAsIXYoTSkmJmgubWluPHImJmguZGF0YU1pbj49cj9oLm1pbj1oLm9wdGlvbnMubWluUmFuZ2U/TWF0aC5taW4ocixoLm1heC1oLm1pblJhbmdlKTpyOiF2KEYpJiZoLm1heD5yJiZoLmRhdGFNYXg8PXImJihoLm1heD1oLm9wdGlvbnMubWluUmFuZ2U/TWF0aC5tYXgocixoLm1pbitoLm1pblJhbmdlKTpyKSk7aC50aWNrSW50ZXJ2YWw9aC5taW49PT1oLm1heHx8InVuZGVmaW5lZCI9PT10eXBlb2YgaC5taW58fCJ1bmRlZmluZWQiPT09dHlwZW9mIGgubWF4PzE6YyYmCiF3JiZnPT09aC5saW5rZWRQYXJlbnQub3B0aW9ucy50aWNrUGl4ZWxJbnRlcnZhbD93PWgubGlua2VkUGFyZW50LnRpY2tJbnRlcnZhbDp1KHcsdGhpcy50aWNrQW1vdW50PyhoLm1heC1oLm1pbikvTWF0aC5tYXgodGhpcy50aWNrQW1vdW50LTEsMSk6dm9pZCAwLEU/MTooaC5tYXgtaC5taW4pKmcvTWF0aC5tYXgoaC5sZW4sZykpO2smJiFiJiZoLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IucHJvY2Vzc0RhdGEoaC5taW4hPT1oLm9sZE1pbnx8aC5tYXghPT1oLm9sZE1heCl9KTtoLnNldEF4aXNUcmFuc2xhdGlvbighMCk7Qyh0aGlzLCJpbml0aWFsQXhpc1RyYW5zbGF0aW9uIik7aC5wb2ludFJhbmdlJiYhdyYmKGgudGlja0ludGVydmFsPU1hdGgubWF4KGgucG9pbnRSYW5nZSxoLnRpY2tJbnRlcnZhbCkpO2I9dShkLm1pblRpY2tJbnRlcnZhbCxoLmRhdGVUaW1lJiYhaC5zZXJpZXMuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gYi5ub1NoYXJlZFRvb2x0aXB9KT9oLmNsb3Nlc3RQb2ludFJhbmdlOgowKTshdyYmaC50aWNrSW50ZXJ2YWw8YiYmKGgudGlja0ludGVydmFsPWIpO2guZGF0ZVRpbWV8fGgubG9nYXJpdGhtaWN8fHd8fChoLnRpY2tJbnRlcnZhbD1hKGgudGlja0ludGVydmFsLHZvaWQgMCxwKGgudGlja0ludGVydmFsKSx1KGQuYWxsb3dEZWNpbWFscywuNT5oLnRpY2tJbnRlcnZhbHx8dm9pZCAwIT09dGhpcy50aWNrQW1vdW50KSwhIXRoaXMudGlja0Ftb3VudCkpO3RoaXMudGlja0Ftb3VudHx8KGgudGlja0ludGVydmFsPWgudW5zcXVpc2goKSk7dGhpcy5zZXRUaWNrUG9zaXRpb25zKCl9O2UucHJvdG90eXBlLnNldFRpY2tQb3NpdGlvbnM9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMsYT1iLnRpY2tQb3NpdGlvbnM7dmFyIGU9dGhpcy5nZXRNaW5vclRpY2tJbnRlcnZhbCgpO3ZhciBmPWIudGlja1Bvc2l0aW9uZXIsZD10aGlzLmhhc1ZlcnRpY2FsUGFubmluZygpLGs9ImNvbG9yQXhpcyI9PT10aGlzLmNvbGwsYz0oa3x8IWQpJiZiLnN0YXJ0T25UaWNrO2Q9CihrfHwhZCkmJmIuZW5kT25UaWNrO3RoaXMudGlja21hcmtPZmZzZXQ9dGhpcy5jYXRlZ29yaWVzJiYiYmV0d2VlbiI9PT1iLnRpY2ttYXJrUGxhY2VtZW50JiYxPT09dGhpcy50aWNrSW50ZXJ2YWw/LjU6MDt0aGlzLm1pbm9yVGlja0ludGVydmFsPSJhdXRvIj09PWUmJnRoaXMudGlja0ludGVydmFsP3RoaXMudGlja0ludGVydmFsLzU6ZTt0aGlzLnNpbmdsZT10aGlzLm1pbj09PXRoaXMubWF4JiZ2KHRoaXMubWluKSYmIXRoaXMudGlja0Ftb3VudCYmKHBhcnNlSW50KHRoaXMubWluLDEwKT09PXRoaXMubWlufHwhMSE9PWIuYWxsb3dEZWNpbWFscyk7dGhpcy50aWNrUG9zaXRpb25zPWU9YSYmYS5zbGljZSgpOyFlJiYodGhpcy5vcmRpbmFsJiZ0aGlzLm9yZGluYWwucG9zaXRpb25zfHwhKCh0aGlzLm1heC10aGlzLm1pbikvdGhpcy50aWNrSW50ZXJ2YWw+TWF0aC5tYXgoMip0aGlzLmxlbiwyMDApKT9lPXRoaXMuZGF0ZVRpbWU/dGhpcy5nZXRUaW1lVGlja3ModGhpcy5kYXRlVGltZS5ub3JtYWxpemVUaW1lVGlja0ludGVydmFsKHRoaXMudGlja0ludGVydmFsLApiLnVuaXRzKSx0aGlzLm1pbix0aGlzLm1heCxiLnN0YXJ0T2ZXZWVrLHRoaXMub3JkaW5hbCYmdGhpcy5vcmRpbmFsLnBvc2l0aW9ucyx0aGlzLmNsb3Nlc3RQb2ludFJhbmdlLCEwKTp0aGlzLmxvZ2FyaXRobWljP3RoaXMubG9nYXJpdGhtaWMuZ2V0TG9nVGlja1Bvc2l0aW9ucyh0aGlzLnRpY2tJbnRlcnZhbCx0aGlzLm1pbix0aGlzLm1heCk6dGhpcy5nZXRMaW5lYXJUaWNrUG9zaXRpb25zKHRoaXMudGlja0ludGVydmFsLHRoaXMubWluLHRoaXMubWF4KTooZT1bdGhpcy5taW4sdGhpcy5tYXhdLG4oMTksITEsdGhpcy5jaGFydCkpLGUubGVuZ3RoPnRoaXMubGVuJiYoZT1bZVswXSxlLnBvcCgpXSxlWzBdPT09ZVsxXSYmKGUubGVuZ3RoPTEpKSx0aGlzLnRpY2tQb3NpdGlvbnM9ZSxmJiYoZj1mLmFwcGx5KHRoaXMsW3RoaXMubWluLHRoaXMubWF4XSkpKSYmKHRoaXMudGlja1Bvc2l0aW9ucz1lPWYpO3RoaXMucGFkZGVkVGlja3M9ZS5zbGljZSgwKTt0aGlzLnRyaW1UaWNrcyhlLApjLGQpO3RoaXMuaXNMaW5rZWR8fCh0aGlzLnNpbmdsZSYmMj5lLmxlbmd0aCYmIXRoaXMuY2F0ZWdvcmllcyYmIXRoaXMuc2VyaWVzLnNvbWUoZnVuY3Rpb24oYil7cmV0dXJuIGIuaXMoImhlYXRtYXAiKSYmImJldHdlZW4iPT09Yi5vcHRpb25zLnBvaW50UGxhY2VtZW50fSkmJih0aGlzLm1pbi09LjUsdGhpcy5tYXgrPS41KSxhfHxmfHx0aGlzLmFkanVzdFRpY2tBbW91bnQoKSk7Qyh0aGlzLCJhZnRlclNldFRpY2tQb3NpdGlvbnMiKX07ZS5wcm90b3R5cGUudHJpbVRpY2tzPWZ1bmN0aW9uKGIsYSxlKXt2YXIgaD1iWzBdLGY9YltiLmxlbmd0aC0xXSxkPSF0aGlzLmlzT3JkaW5hbCYmdGhpcy5taW5Qb2ludE9mZnNldHx8MDtDKHRoaXMsInRyaW1UaWNrcyIpO2lmKCF0aGlzLmlzTGlua2VkKXtpZihhJiYtSW5maW5pdHkhPT1oKXRoaXMubWluPWg7ZWxzZSBmb3IoO3RoaXMubWluLWQ+YlswXTspYi5zaGlmdCgpO2lmKGUpdGhpcy5tYXg9ZjtlbHNlIGZvcig7dGhpcy5tYXgrZDwKYltiLmxlbmd0aC0xXTspYi5wb3AoKTswPT09Yi5sZW5ndGgmJnYoaCkmJiF0aGlzLm9wdGlvbnMudGlja1Bvc2l0aW9ucyYmYi5wdXNoKChmK2gpLzIpfX07ZS5wcm90b3R5cGUuYWxpZ25Ub090aGVycz1mdW5jdGlvbigpe3ZhciBiPXt9LGEsZT10aGlzLm9wdGlvbnM7ITE9PT10aGlzLmNoYXJ0Lm9wdGlvbnMuY2hhcnQuYWxpZ25UaWNrc3x8ITE9PT1lLmFsaWduVGlja3N8fCExPT09ZS5zdGFydE9uVGlja3x8ITE9PT1lLmVuZE9uVGlja3x8dGhpcy5sb2dhcml0aG1pY3x8dGhpcy5jaGFydFt0aGlzLmNvbGxdLmZvckVhY2goZnVuY3Rpb24oaCl7dmFyIGU9aC5vcHRpb25zO2U9W2guaG9yaXo/ZS5sZWZ0OmUudG9wLGUud2lkdGgsZS5oZWlnaHQsZS5wYW5lXS5qb2luKCk7aC5zZXJpZXMubGVuZ3RoJiYoYltlXT9hPSEwOmJbZV09MSl9KTtyZXR1cm4gYX07ZS5wcm90b3R5cGUuZ2V0VGlja0Ftb3VudD1mdW5jdGlvbigpe3ZhciBiPXRoaXMub3B0aW9ucyxhPWIudGlja0Ftb3VudCwKZT1iLnRpY2tQaXhlbEludGVydmFsOyF2KGIudGlja0ludGVydmFsKSYmIWEmJnRoaXMubGVuPGUmJiF0aGlzLmlzUmFkaWFsJiYhdGhpcy5sb2dhcml0aG1pYyYmYi5zdGFydE9uVGljayYmYi5lbmRPblRpY2smJihhPTIpOyFhJiZ0aGlzLmFsaWduVG9PdGhlcnMoKSYmKGE9TWF0aC5jZWlsKHRoaXMubGVuL2UpKzEpOzQ+YSYmKHRoaXMuZmluYWxUaWNrQW10PWEsYT01KTt0aGlzLnRpY2tBbW91bnQ9YX07ZS5wcm90b3R5cGUuYWRqdXN0VGlja0Ftb3VudD1mdW5jdGlvbigpe3ZhciBiPXRoaXMub3B0aW9ucyxhPXRoaXMudGlja0ludGVydmFsLGU9dGhpcy50aWNrUG9zaXRpb25zLGY9dGhpcy50aWNrQW1vdW50LGQ9dGhpcy5maW5hbFRpY2tBbXQsaz1lJiZlLmxlbmd0aCxjPXUodGhpcy50aHJlc2hvbGQsdGhpcy5zb2Z0VGhyZXNob2xkPzA6bnVsbCksbDtpZih0aGlzLmhhc0RhdGEoKSl7aWYoazxmKXtmb3IobD10aGlzLm1pbjtlLmxlbmd0aDxmOyllLmxlbmd0aCUyfHxsPT09CmM/ZS5wdXNoKEwoZVtlLmxlbmd0aC0xXSthKSk6ZS51bnNoaWZ0KEwoZVswXS1hKSk7dGhpcy50cmFuc0EqPShrLTEpLyhmLTEpO3RoaXMubWluPWIuc3RhcnRPblRpY2s/ZVswXTpNYXRoLm1pbih0aGlzLm1pbixlWzBdKTt0aGlzLm1heD1iLmVuZE9uVGljaz9lW2UubGVuZ3RoLTFdOk1hdGgubWF4KHRoaXMubWF4LGVbZS5sZW5ndGgtMV0pfWVsc2Ugaz5mJiYodGhpcy50aWNrSW50ZXJ2YWwqPTIsdGhpcy5zZXRUaWNrUG9zaXRpb25zKCkpO2lmKHYoZCkpe2ZvcihhPWI9ZS5sZW5ndGg7YS0tOykoMz09PWQmJjE9PT1hJTJ8fDI+PWQmJjA8YSYmYTxiLTEpJiZlLnNwbGljZShhLDEpO3RoaXMuZmluYWxUaWNrQW10PXZvaWQgMH19fTtlLnByb3RvdHlwZS5zZXRTY2FsZT1mdW5jdGlvbigpe3ZhciBiLGE9ITEsZT0hMTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBoO2E9YXx8Yi5pc0RpcnR5RGF0YXx8Yi5pc0RpcnR5O2U9ZXx8KG51bGw9PT0oaD1iLnhBeGlzKXx8CnZvaWQgMD09PWg/dm9pZCAwOmguaXNEaXJ0eSl8fCExfSk7dGhpcy5vbGRNaW49dGhpcy5taW47dGhpcy5vbGRNYXg9dGhpcy5tYXg7dGhpcy5vbGRBeGlzTGVuZ3RoPXRoaXMubGVuO3RoaXMuc2V0QXhpc1NpemUoKTsoYj10aGlzLmxlbiE9PXRoaXMub2xkQXhpc0xlbmd0aCl8fGF8fGV8fHRoaXMuaXNMaW5rZWR8fHRoaXMuZm9yY2VSZWRyYXd8fHRoaXMudXNlck1pbiE9PXRoaXMub2xkVXNlck1pbnx8dGhpcy51c2VyTWF4IT09dGhpcy5vbGRVc2VyTWF4fHx0aGlzLmFsaWduVG9PdGhlcnMoKT8odGhpcy5zdGFja2luZyYmdGhpcy5zdGFja2luZy5yZXNldFN0YWNrcygpLHRoaXMuZm9yY2VSZWRyYXc9ITEsdGhpcy5nZXRTZXJpZXNFeHRyZW1lcygpLHRoaXMuc2V0VGlja0ludGVydmFsKCksdGhpcy5vbGRVc2VyTWluPXRoaXMudXNlck1pbix0aGlzLm9sZFVzZXJNYXg9dGhpcy51c2VyTWF4LHRoaXMuaXNEaXJ0eXx8KHRoaXMuaXNEaXJ0eT1ifHx0aGlzLm1pbiE9PXRoaXMub2xkTWlufHwKdGhpcy5tYXghPT10aGlzLm9sZE1heCkpOnRoaXMuc3RhY2tpbmcmJnRoaXMuc3RhY2tpbmcuY2xlYW5TdGFja3MoKTthJiZ0aGlzLnBhbm5pbmdTdGF0ZSYmKHRoaXMucGFubmluZ1N0YXRlLmlzRGlydHk9ITApO0ModGhpcywiYWZ0ZXJTZXRTY2FsZSIpfTtlLnByb3RvdHlwZS5zZXRFeHRyZW1lcz1mdW5jdGlvbihiLGEsZSxmLGQpe3ZhciBoPXRoaXMsaz1oLmNoYXJ0O2U9dShlLCEwKTtoLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2RlbGV0ZSBiLmtkVHJlZX0pO2Q9cihkLHttaW46YixtYXg6YX0pO0MoaCwic2V0RXh0cmVtZXMiLGQsZnVuY3Rpb24oKXtoLnVzZXJNaW49YjtoLnVzZXJNYXg9YTtoLmV2ZW50QXJncz1kO2UmJmsucmVkcmF3KGYpfSl9O2UucHJvdG90eXBlLnpvb209ZnVuY3Rpb24oYixhKXt2YXIgZT10aGlzLGg9dGhpcy5kYXRhTWluLGY9dGhpcy5kYXRhTWF4LGQ9dGhpcy5vcHRpb25zLGs9TWF0aC5taW4oaCx1KGQubWluLGgpKSxjPU1hdGgubWF4KGYsCnUoZC5tYXgsZikpO2I9e25ld01pbjpiLG5ld01heDphfTtDKHRoaXMsInpvb20iLGIsZnVuY3Rpb24oYil7dmFyIGE9Yi5uZXdNaW4sZD1iLm5ld01heDtpZihhIT09ZS5taW58fGQhPT1lLm1heCllLmFsbG93Wm9vbU91dHNpZGV8fCh2KGgpJiYoYTxrJiYoYT1rKSxhPmMmJihhPWMpKSx2KGYpJiYoZDxrJiYoZD1rKSxkPmMmJihkPWMpKSksZS5kaXNwbGF5QnRuPSJ1bmRlZmluZWQiIT09dHlwZW9mIGF8fCJ1bmRlZmluZWQiIT09dHlwZW9mIGQsZS5zZXRFeHRyZW1lcyhhLGQsITEsdm9pZCAwLHt0cmlnZ2VyOiJ6b29tIn0pO2Iuem9vbWVkPSEwfSk7cmV0dXJuIGIuem9vbWVkfTtlLnByb3RvdHlwZS5zZXRBeGlzU2l6ZT1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQsYT10aGlzLm9wdGlvbnMsZT1hLm9mZnNldHN8fFswLDAsMCwwXSxmPXRoaXMuaG9yaXosZD10aGlzLndpZHRoPU1hdGgucm91bmQoRSh1KGEud2lkdGgsYi5wbG90V2lkdGgtZVszXStlWzFdKSxiLnBsb3RXaWR0aCkpLAprPXRoaXMuaGVpZ2h0PU1hdGgucm91bmQoRSh1KGEuaGVpZ2h0LGIucGxvdEhlaWdodC1lWzBdK2VbMl0pLGIucGxvdEhlaWdodCkpLGM9dGhpcy50b3A9TWF0aC5yb3VuZChFKHUoYS50b3AsYi5wbG90VG9wK2VbMF0pLGIucGxvdEhlaWdodCxiLnBsb3RUb3ApKTthPXRoaXMubGVmdD1NYXRoLnJvdW5kKEUodShhLmxlZnQsYi5wbG90TGVmdCtlWzNdKSxiLnBsb3RXaWR0aCxiLnBsb3RMZWZ0KSk7dGhpcy5ib3R0b209Yi5jaGFydEhlaWdodC1rLWM7dGhpcy5yaWdodD1iLmNoYXJ0V2lkdGgtZC1hO3RoaXMubGVuPU1hdGgubWF4KGY/ZDprLDApO3RoaXMucG9zPWY/YTpjfTtlLnByb3RvdHlwZS5nZXRFeHRyZW1lcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMubG9nYXJpdGhtaWM7cmV0dXJue21pbjpiP0woYi5saW4ybG9nKHRoaXMubWluKSk6dGhpcy5taW4sbWF4OmI/TChiLmxpbjJsb2codGhpcy5tYXgpKTp0aGlzLm1heCxkYXRhTWluOnRoaXMuZGF0YU1pbixkYXRhTWF4OnRoaXMuZGF0YU1heCwKdXNlck1pbjp0aGlzLnVzZXJNaW4sdXNlck1heDp0aGlzLnVzZXJNYXh9fTtlLnByb3RvdHlwZS5nZXRUaHJlc2hvbGQ9ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy5sb2dhcml0aG1pYyxlPWE/YS5saW4ybG9nKHRoaXMubWluKTp0aGlzLm1pbjthPWE/YS5saW4ybG9nKHRoaXMubWF4KTp0aGlzLm1heDtudWxsPT09Ynx8LUluZmluaXR5PT09Yj9iPWU6SW5maW5pdHk9PT1iP2I9YTplPmI/Yj1lOmE8YiYmKGI9YSk7cmV0dXJuIHRoaXMudHJhbnNsYXRlKGIsMCwxLDAsMSl9O2UucHJvdG90eXBlLmF1dG9MYWJlbEFsaWduPWZ1bmN0aW9uKGIpe3ZhciBhPSh1KGIsMCktOTAqdGhpcy5zaWRlKzcyMCklMzYwO2I9e2FsaWduOiJjZW50ZXIifTtDKHRoaXMsImF1dG9MYWJlbEFsaWduIixiLGZ1bmN0aW9uKGIpezE1PGEmJjE2NT5hP2IuYWxpZ249InJpZ2h0IjoxOTU8YSYmMzQ1PmEmJihiLmFsaWduPSJsZWZ0Iil9KTtyZXR1cm4gYi5hbGlnbn07ZS5wcm90b3R5cGUudGlja1NpemU9ZnVuY3Rpb24oYil7dmFyIGE9CnRoaXMub3B0aW9ucyxlPWFbInRpY2siPT09Yj8idGlja0xlbmd0aCI6Im1pbm9yVGlja0xlbmd0aCJdLGY9dShhWyJ0aWNrIj09PWI/InRpY2tXaWR0aCI6Im1pbm9yVGlja1dpZHRoIl0sInRpY2siPT09YiYmdGhpcy5pc1hBeGlzJiYhdGhpcy5jYXRlZ29yaWVzPzE6MCk7aWYoZiYmZSl7Imluc2lkZSI9PT1hW2IrIlBvc2l0aW9uIl0mJihlPS1lKTt2YXIgZD1bZSxmXX1iPXt0aWNrU2l6ZTpkfTtDKHRoaXMsImFmdGVyVGlja1NpemUiLGIpO3JldHVybiBiLnRpY2tTaXplfTtlLnByb3RvdHlwZS5sYWJlbE1ldHJpY3M9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnRpY2tQb3NpdGlvbnMmJnRoaXMudGlja1Bvc2l0aW9uc1swXXx8MDtyZXR1cm4gdGhpcy5jaGFydC5yZW5kZXJlci5mb250TWV0cmljcyh0aGlzLm9wdGlvbnMubGFiZWxzLnN0eWxlJiZ0aGlzLm9wdGlvbnMubGFiZWxzLnN0eWxlLmZvbnRTaXplLHRoaXMudGlja3NbYl0mJnRoaXMudGlja3NbYl0ubGFiZWwpfTtlLnByb3RvdHlwZS51bnNxdWlzaD0KZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMubGFiZWxzLGE9dGhpcy5ob3JpeixlPXRoaXMudGlja0ludGVydmFsLGY9ZSxkPXRoaXMubGVuLygoKHRoaXMuY2F0ZWdvcmllcz8xOjApK3RoaXMubWF4LXRoaXMubWluKS9lKSxrLGM9Yi5yb3RhdGlvbixsPXRoaXMubGFiZWxNZXRyaWNzKCksbSxwPU51bWJlci5NQVhfVkFMVUUsQSx3PXRoaXMubWF4LXRoaXMubWluLG49ZnVuY3Rpb24oYil7dmFyIGE9Yi8oZHx8MSk7YT0xPGE/TWF0aC5jZWlsKGEpOjE7YSplPncmJkluZmluaXR5IT09YiYmSW5maW5pdHkhPT1kJiZ3JiYoYT1NYXRoLmNlaWwody9lKSk7cmV0dXJuIEwoYSplKX07YT8oQT0hYi5zdGFnZ2VyTGluZXMmJiFiLnN0ZXAmJih2KGMpP1tjXTpkPHUoYi5hdXRvUm90YXRpb25MaW1pdCw4MCkmJmIuYXV0b1JvdGF0aW9uKSkmJkEuZm9yRWFjaChmdW5jdGlvbihiKXtpZihiPT09Y3x8YiYmLTkwPD1iJiY5MD49Yil7bT1uKE1hdGguYWJzKGwuaC9NYXRoLnNpbihRKmIpKSk7CnZhciBhPW0rTWF0aC5hYnMoYi8zNjApO2E8cCYmKHA9YSxrPWIsZj1tKX19KTpiLnN0ZXB8fChmPW4obC5oKSk7dGhpcy5hdXRvUm90YXRpb249QTt0aGlzLmxhYmVsUm90YXRpb249dShrLGMpO3JldHVybiBmfTtlLnByb3RvdHlwZS5nZXRTbG90V2lkdGg9ZnVuY3Rpb24oYil7dmFyIGEsZT10aGlzLmNoYXJ0LGY9dGhpcy5ob3JpeixkPXRoaXMub3B0aW9ucy5sYWJlbHMsaz1NYXRoLm1heCh0aGlzLnRpY2tQb3NpdGlvbnMubGVuZ3RoLSh0aGlzLmNhdGVnb3JpZXM/MDoxKSwxKSxjPWUubWFyZ2luWzNdO2lmKGImJmwoYi5zbG90V2lkdGgpKXJldHVybiBiLnNsb3RXaWR0aDtpZihmJiZkJiYyPihkLnN0ZXB8fDApKXJldHVybiBkLnJvdGF0aW9uPzA6KHRoaXMuc3RhZ2dlckxpbmVzfHwxKSp0aGlzLmxlbi9rO2lmKCFmKXtiPW51bGw9PT0oYT1udWxsPT09ZHx8dm9pZCAwPT09ZD92b2lkIDA6ZC5zdHlsZSl8fHZvaWQgMD09PWE/dm9pZCAwOmEud2lkdGg7aWYodm9pZCAwIT09YilyZXR1cm4gcGFyc2VJbnQoYiwKMTApO2lmKGMpcmV0dXJuIGMtZS5zcGFjaW5nWzNdfXJldHVybi4zMyplLmNoYXJ0V2lkdGh9O2UucHJvdG90eXBlLnJlbmRlclVuc3F1aXNoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5jaGFydCxhPWIucmVuZGVyZXIsZT10aGlzLnRpY2tQb3NpdGlvbnMsZj10aGlzLnRpY2tzLGQ9dGhpcy5vcHRpb25zLmxhYmVscyxjPWQmJmQuc3R5bGV8fHt9LGw9dGhpcy5ob3Jpeix1PXRoaXMuZ2V0U2xvdFdpZHRoKCksbT1NYXRoLm1heCgxLE1hdGgucm91bmQodS0yKihkLnBhZGRpbmd8fDUpKSkscD17fSxBPXRoaXMubGFiZWxNZXRyaWNzKCksdz1kLnN0eWxlJiZkLnN0eWxlLnRleHRPdmVyZmxvdyxuPTA7ayhkLnJvdGF0aW9uKXx8KHAucm90YXRpb249ZC5yb3RhdGlvbnx8MCk7ZS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2I9ZltiXTtiLm1vdmVkTGFiZWwmJmIucmVwbGFjZU1vdmVkTGFiZWwoKTtiJiZiLmxhYmVsJiZiLmxhYmVsLnRleHRQeExlbmd0aD5uJiYobj1iLmxhYmVsLnRleHRQeExlbmd0aCl9KTsKdGhpcy5tYXhMYWJlbExlbmd0aD1uO2lmKHRoaXMuYXV0b1JvdGF0aW9uKW4+bSYmbj5BLmg/cC5yb3RhdGlvbj10aGlzLmxhYmVsUm90YXRpb246dGhpcy5sYWJlbFJvdGF0aW9uPTA7ZWxzZSBpZih1KXt2YXIgZz1tO2lmKCF3KXt2YXIgRT0iY2xpcCI7Zm9yKG09ZS5sZW5ndGg7IWwmJm0tLTspe3ZhciByPWVbbV07aWYocj1mW3JdLmxhYmVsKXIuc3R5bGVzJiYiZWxsaXBzaXMiPT09ci5zdHlsZXMudGV4dE92ZXJmbG93P3IuY3NzKHt0ZXh0T3ZlcmZsb3c6ImNsaXAifSk6ci50ZXh0UHhMZW5ndGg+dSYmci5jc3Moe3dpZHRoOnUrInB4In0pLHIuZ2V0QkJveCgpLmhlaWdodD50aGlzLmxlbi9lLmxlbmd0aC0oQS5oLUEuZikmJihyLnNwZWNpZmljVGV4dE92ZXJmbG93PSJlbGxpcHNpcyIpfX19cC5yb3RhdGlvbiYmKGc9bj4uNSpiLmNoYXJ0SGVpZ2h0Py4zMypiLmNoYXJ0SGVpZ2h0Om4sd3x8KEU9ImVsbGlwc2lzIikpO2lmKHRoaXMubGFiZWxBbGlnbj1kLmFsaWdufHx0aGlzLmF1dG9MYWJlbEFsaWduKHRoaXMubGFiZWxSb3RhdGlvbikpcC5hbGlnbj0KdGhpcy5sYWJlbEFsaWduO2UuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgYT0oYj1mW2JdKSYmYi5sYWJlbCxlPWMud2lkdGgsaD17fTthJiYoYS5hdHRyKHApLGIuc2hvcnRlbkxhYmVsP2Iuc2hvcnRlbkxhYmVsKCk6ZyYmIWUmJiJub3dyYXAiIT09Yy53aGl0ZVNwYWNlJiYoZzxhLnRleHRQeExlbmd0aHx8IlNQQU4iPT09YS5lbGVtZW50LnRhZ05hbWUpPyhoLndpZHRoPWcrInB4Iix3fHwoaC50ZXh0T3ZlcmZsb3c9YS5zcGVjaWZpY1RleHRPdmVyZmxvd3x8RSksYS5jc3MoaCkpOmEuc3R5bGVzJiZhLnN0eWxlcy53aWR0aCYmIWgud2lkdGgmJiFlJiZhLmNzcyh7d2lkdGg6bnVsbH0pLGRlbGV0ZSBhLnNwZWNpZmljVGV4dE92ZXJmbG93LGIucm90YXRpb249cC5yb3RhdGlvbil9LHRoaXMpO3RoaXMudGlja1JvdENvcnI9YS5yb3RDb3JyKEEuYix0aGlzLmxhYmVsUm90YXRpb258fDAsMCE9PXRoaXMuc2lkZSl9O2UucHJvdG90eXBlLmhhc0RhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXJpZXMuc29tZShmdW5jdGlvbihiKXtyZXR1cm4gYi5oYXNEYXRhKCl9KXx8CnRoaXMub3B0aW9ucy5zaG93RW1wdHkmJnYodGhpcy5taW4pJiZ2KHRoaXMubWF4KX07ZS5wcm90b3R5cGUuYWRkVGl0bGU9ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy5jaGFydC5yZW5kZXJlcixlPXRoaXMuaG9yaXosZD10aGlzLm9wcG9zaXRlLGs9dGhpcy5vcHRpb25zLnRpdGxlLGMsbD10aGlzLmNoYXJ0LnN0eWxlZE1vZGU7dGhpcy5heGlzVGl0bGV8fCgoYz1rLnRleHRBbGlnbil8fChjPShlP3tsb3c6ImxlZnQiLG1pZGRsZToiY2VudGVyIixoaWdoOiJyaWdodCJ9Ontsb3c6ZD8icmlnaHQiOiJsZWZ0IixtaWRkbGU6ImNlbnRlciIsaGlnaDpkPyJsZWZ0IjoicmlnaHQifSlbay5hbGlnbl0pLHRoaXMuYXhpc1RpdGxlPWEudGV4dChrLnRleHQsMCwwLGsudXNlSFRNTCkuYXR0cih7ekluZGV4Ojcscm90YXRpb246ay5yb3RhdGlvbnx8MCxhbGlnbjpjfSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYXhpcy10aXRsZSIpLGx8fHRoaXMuYXhpc1RpdGxlLmNzcyhmKGsuc3R5bGUpKSx0aGlzLmF4aXNUaXRsZS5hZGQodGhpcy5heGlzR3JvdXApLAp0aGlzLmF4aXNUaXRsZS5pc05ldz0hMCk7bHx8ay5zdHlsZS53aWR0aHx8dGhpcy5pc1JhZGlhbHx8dGhpcy5heGlzVGl0bGUuY3NzKHt3aWR0aDp0aGlzLmxlbisicHgifSk7dGhpcy5heGlzVGl0bGVbYj8ic2hvdyI6ImhpZGUiXShiKX07ZS5wcm90b3R5cGUuZ2VuZXJhdGVUaWNrPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMudGlja3M7YVtiXT9hW2JdLmFkZExhYmVsKCk6YVtiXT1uZXcgcSh0aGlzLGIpfTtlLnByb3RvdHlwZS5nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGE9Yi5jaGFydCxlPWEucmVuZGVyZXIsZj1iLm9wdGlvbnMsZD1iLnRpY2tQb3NpdGlvbnMsaz1iLnRpY2tzLGM9Yi5ob3JpeixsPWIuc2lkZSxtPWEuaW52ZXJ0ZWQmJiFiLmlzWkF4aXM/WzEsMCwzLDJdW2xdOmwscCx3PTAsbj0wLGc9Zi50aXRsZSxFPWYubGFiZWxzLHI9MCxNPWEuYXhpc09mZnNldDthPWEuY2xpcE9mZnNldDt2YXIgRj1bLTEsMSwxLC0xXVtsXSx0PWYuY2xhc3NOYW1lLFA9Yi5heGlzUGFyZW50Owp2YXIgST1iLmhhc0RhdGEoKTtiLnNob3dBeGlzPXA9SXx8dShmLnNob3dFbXB0eSwhMCk7Yi5zdGFnZ2VyTGluZXM9Yi5ob3JpeiYmRS5zdGFnZ2VyTGluZXM7Yi5heGlzR3JvdXB8fChiLmdyaWRHcm91cD1lLmcoImdyaWQiKS5hdHRyKHt6SW5kZXg6Zi5ncmlkWkluZGV4fHwxfSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtIit0aGlzLmNvbGwudG9Mb3dlckNhc2UoKSsiLWdyaWQgIisodHx8IiIpKS5hZGQoUCksYi5heGlzR3JvdXA9ZS5nKCJheGlzIikuYXR0cih7ekluZGV4OmYuekluZGV4fHwyfSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtIit0aGlzLmNvbGwudG9Mb3dlckNhc2UoKSsiICIrKHR8fCIiKSkuYWRkKFApLGIubGFiZWxHcm91cD1lLmcoImF4aXMtbGFiZWxzIikuYXR0cih7ekluZGV4OkUuekluZGV4fHw3fSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtIitiLmNvbGwudG9Mb3dlckNhc2UoKSsiLWxhYmVscyAiKyh0fHwiIikpLmFkZChQKSk7SXx8Yi5pc0xpbmtlZD8oZC5mb3JFYWNoKGZ1bmN0aW9uKGEsCmUpe2IuZ2VuZXJhdGVUaWNrKGEsZSl9KSxiLnJlbmRlclVuc3F1aXNoKCksYi5yZXNlcnZlU3BhY2VEZWZhdWx0PTA9PT1sfHwyPT09bHx8ezE6ImxlZnQiLDM6InJpZ2h0In1bbF09PT1iLmxhYmVsQWxpZ24sdShFLnJlc2VydmVTcGFjZSwiY2VudGVyIj09PWIubGFiZWxBbGlnbj8hMDpudWxsLGIucmVzZXJ2ZVNwYWNlRGVmYXVsdCkmJmQuZm9yRWFjaChmdW5jdGlvbihiKXtyPU1hdGgubWF4KGtbYl0uZ2V0TGFiZWxTaXplKCkscil9KSxiLnN0YWdnZXJMaW5lcyYmKHIqPWIuc3RhZ2dlckxpbmVzKSxiLmxhYmVsT2Zmc2V0PXIqKGIub3Bwb3NpdGU/LTE6MSkpOkEoayxmdW5jdGlvbihiLGEpe2IuZGVzdHJveSgpO2RlbGV0ZSBrW2FdfSk7aWYoZyYmZy50ZXh0JiYhMSE9PWcuZW5hYmxlZCYmKGIuYWRkVGl0bGUocCkscCYmITEhPT1nLnJlc2VydmVTcGFjZSkpe2IudGl0bGVPZmZzZXQ9dz1iLmF4aXNUaXRsZS5nZXRCQm94KClbYz8iaGVpZ2h0Ijoid2lkdGgiXTt2YXIgcT1nLm9mZnNldDsKbj12KHEpPzA6dShnLm1hcmdpbixjPzU6MTApfWIucmVuZGVyTGluZSgpO2Iub2Zmc2V0PUYqdShmLm9mZnNldCxNW2xdP01bbF0rKGYubWFyZ2lufHwwKTowKTtiLnRpY2tSb3RDb3JyPWIudGlja1JvdENvcnJ8fHt4OjAseTowfTtlPTA9PT1sPy1iLmxhYmVsTWV0cmljcygpLmg6Mj09PWw/Yi50aWNrUm90Q29yci55OjA7bj1NYXRoLmFicyhyKStuO3ImJihuPW4tZStGKihjP3UoRS55LGIudGlja1JvdENvcnIueSs4KkYpOkUueCkpO2IuYXhpc1RpdGxlTWFyZ2luPXUocSxuKTtiLmdldE1heExhYmVsRGltZW5zaW9ucyYmKGIubWF4TGFiZWxEaW1lbnNpb25zPWIuZ2V0TWF4TGFiZWxEaW1lbnNpb25zKGssZCkpO2M9dGhpcy50aWNrU2l6ZSgidGljayIpO01bbF09TWF0aC5tYXgoTVtsXSxiLmF4aXNUaXRsZU1hcmdpbit3K0YqYi5vZmZzZXQsbixkJiZkLmxlbmd0aCYmYz9jWzBdK0YqYi5vZmZzZXQ6MCk7Zj1mLm9mZnNldD8wOjIqTWF0aC5mbG9vcihiLmF4aXNMaW5lLnN0cm9rZVdpZHRoKCkvCjIpO2FbbV09TWF0aC5tYXgoYVttXSxmKTtDKHRoaXMsImFmdGVyR2V0T2Zmc2V0Iil9O2UucHJvdG90eXBlLmdldExpbmVQYXRoPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMuY2hhcnQsZT10aGlzLm9wcG9zaXRlLGY9dGhpcy5vZmZzZXQsZD10aGlzLmhvcml6LGs9dGhpcy5sZWZ0KyhlP3RoaXMud2lkdGg6MCkrZjtmPWEuY2hhcnRIZWlnaHQtdGhpcy5ib3R0b20tKGU/dGhpcy5oZWlnaHQ6MCkrZjtlJiYoYio9LTEpO3JldHVybiBhLnJlbmRlcmVyLmNyaXNwTGluZShbWyJNIixkP3RoaXMubGVmdDprLGQ/Zjp0aGlzLnRvcF0sWyJMIixkP2EuY2hhcnRXaWR0aC10aGlzLnJpZ2h0OmssZD9mOmEuY2hhcnRIZWlnaHQtdGhpcy5ib3R0b21dXSxiKX07ZS5wcm90b3R5cGUucmVuZGVyTGluZT1mdW5jdGlvbigpe3RoaXMuYXhpc0xpbmV8fCh0aGlzLmF4aXNMaW5lPXRoaXMuY2hhcnQucmVuZGVyZXIucGF0aCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLWF4aXMtbGluZSIpLmFkZCh0aGlzLmF4aXNHcm91cCksCnRoaXMuY2hhcnQuc3R5bGVkTW9kZXx8dGhpcy5heGlzTGluZS5hdHRyKHtzdHJva2U6dGhpcy5vcHRpb25zLmxpbmVDb2xvciwic3Ryb2tlLXdpZHRoIjp0aGlzLm9wdGlvbnMubGluZVdpZHRoLHpJbmRleDo3fSkpfTtlLnByb3RvdHlwZS5nZXRUaXRsZVBvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5ob3JpeixhPXRoaXMubGVmdCxlPXRoaXMudG9wLGY9dGhpcy5sZW4sZD10aGlzLm9wdGlvbnMudGl0bGUsaz1iP2E6ZSxjPXRoaXMub3Bwb3NpdGUsbD10aGlzLm9mZnNldCx1PWQueHx8MCxtPWQueXx8MCxwPXRoaXMuYXhpc1RpdGxlLEE9dGhpcy5jaGFydC5yZW5kZXJlci5mb250TWV0cmljcyhkLnN0eWxlJiZkLnN0eWxlLmZvbnRTaXplLHApO3A9TWF0aC5tYXgocC5nZXRCQm94KG51bGwsMCkuaGVpZ2h0LUEuaC0xLDApO2Y9e2xvdzprKyhiPzA6ZiksbWlkZGxlOmsrZi8yLGhpZ2g6aysoYj9mOjApfVtkLmFsaWduXTthPShiP2UrdGhpcy5oZWlnaHQ6YSkrKGI/MTotMSkqCihjPy0xOjEpKnRoaXMuYXhpc1RpdGxlTWFyZ2luK1stcCxwLEEuZiwtcF1bdGhpcy5zaWRlXTtiPXt4OmI/Zit1OmErKGM/dGhpcy53aWR0aDowKStsK3UseTpiP2ErbS0oYz90aGlzLmhlaWdodDowKStsOmYrbX07Qyh0aGlzLCJhZnRlckdldFRpdGxlUG9zaXRpb24iLHt0aXRsZVBvc2l0aW9uOmJ9KTtyZXR1cm4gYn07ZS5wcm90b3R5cGUucmVuZGVyTWlub3JUaWNrPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMuY2hhcnQuaGFzUmVuZGVyZWQmJmwodGhpcy5vbGRNaW4pLGU9dGhpcy5taW5vclRpY2tzO2VbYl18fChlW2JdPW5ldyBxKHRoaXMsYiwibWlub3IiKSk7YSYmZVtiXS5pc05ldyYmZVtiXS5yZW5kZXIobnVsbCwhMCk7ZVtiXS5yZW5kZXIobnVsbCwhMSwxKX07ZS5wcm90b3R5cGUucmVuZGVyVGljaz1mdW5jdGlvbihiLGEpe3ZhciBlPXRoaXMuaXNMaW5rZWQsaD10aGlzLnRpY2tzLGY9dGhpcy5jaGFydC5oYXNSZW5kZXJlZCYmbCh0aGlzLm9sZE1pbik7aWYoIWV8fGI+PQp0aGlzLm1pbiYmYjw9dGhpcy5tYXgpaFtiXXx8KGhbYl09bmV3IHEodGhpcyxiKSksZiYmaFtiXS5pc05ldyYmaFtiXS5yZW5kZXIoYSwhMCwtMSksaFtiXS5yZW5kZXIoYSl9O2UucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBiPXRoaXMsYT1iLmNoYXJ0LGU9Yi5sb2dhcml0aG1pYyxmPWIub3B0aW9ucyxkPWIuaXNMaW5rZWQsaz1iLnRpY2tQb3NpdGlvbnMsdT1iLmF4aXNUaXRsZSxtPWIudGlja3MscD1iLm1pbm9yVGlja3Msdz1iLmFsdGVybmF0ZUJhbmRzLG49Zi5zdGFja0xhYmVscyxnPWYuYWx0ZXJuYXRlR3JpZENvbG9yLEU9Yi50aWNrbWFya09mZnNldCxyPWIuYXhpc0xpbmUsRj1iLnNob3dBeGlzLHQ9RChhLnJlbmRlcmVyLmdsb2JhbEFuaW1hdGlvbiksdixQO2IubGFiZWxFZGdlLmxlbmd0aD0wO2Iub3ZlcmxhcD0hMTtbbSxwLHddLmZvckVhY2goZnVuY3Rpb24oYil7QShiLGZ1bmN0aW9uKGIpe2IuaXNBY3RpdmU9ITF9KX0pO2lmKGIuaGFzRGF0YSgpfHwKZCliLm1pbm9yVGlja0ludGVydmFsJiYhYi5jYXRlZ29yaWVzJiZiLmdldE1pbm9yVGlja1Bvc2l0aW9ucygpLmZvckVhY2goZnVuY3Rpb24oYSl7Yi5yZW5kZXJNaW5vclRpY2soYSl9KSxrLmxlbmd0aCYmKGsuZm9yRWFjaChmdW5jdGlvbihhLGUpe2IucmVuZGVyVGljayhhLGUpfSksRSYmKDA9PT1iLm1pbnx8Yi5zaW5nbGUpJiYobVstMV18fChtWy0xXT1uZXcgcShiLC0xLG51bGwsITApKSxtWy0xXS5yZW5kZXIoLTEpKSksZyYmay5mb3JFYWNoKGZ1bmN0aW9uKGgsZil7UD0idW5kZWZpbmVkIiE9PXR5cGVvZiBrW2YrMV0/a1tmKzFdK0U6Yi5tYXgtRTswPT09ZiUyJiZoPGIubWF4JiZQPD1iLm1heCsoYS5wb2xhcj8tRTpFKSYmKHdbaF18fCh3W2hdPW5ldyBjLlBsb3RMaW5lT3JCYW5kKGIpKSx2PWgrRSx3W2hdLm9wdGlvbnM9e2Zyb206ZT9lLmxpbjJsb2codik6dix0bzplP2UubGluMmxvZyhQKTpQLGNvbG9yOmcsY2xhc3NOYW1lOiJoaWdoY2hhcnRzLWFsdGVybmF0ZS1ncmlkIn0sCndbaF0ucmVuZGVyKCksd1toXS5pc0FjdGl2ZT0hMCl9KSxiLl9hZGRlZFBsb3RMQnx8KChmLnBsb3RMaW5lc3x8W10pLmNvbmNhdChmLnBsb3RCYW5kc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYSl7Yi5hZGRQbG90QmFuZE9yTGluZShhKX0pLGIuX2FkZGVkUGxvdExCPSEwKTtbbSxwLHddLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGUsaD1bXSxmPXQuZHVyYXRpb247QShiLGZ1bmN0aW9uKGIsYSl7Yi5pc0FjdGl2ZXx8KGIucmVuZGVyKGEsITEsMCksYi5pc0FjdGl2ZT0hMSxoLnB1c2goYSkpfSk7TShmdW5jdGlvbigpe2ZvcihlPWgubGVuZ3RoO2UtLTspYltoW2VdXSYmIWJbaFtlXV0uaXNBY3RpdmUmJihiW2hbZV1dLmRlc3Ryb3koKSxkZWxldGUgYltoW2VdXSl9LGIhPT13JiZhLmhhc1JlbmRlcmVkJiZmP2Y6MCl9KTtyJiYocltyLmlzUGxhY2VkPyJhbmltYXRlIjoiYXR0ciJdKHtkOnRoaXMuZ2V0TGluZVBhdGgoci5zdHJva2VXaWR0aCgpKX0pLHIuaXNQbGFjZWQ9ITAscltGPwoic2hvdyI6ImhpZGUiXShGKSk7dSYmRiYmKGY9Yi5nZXRUaXRsZVBvc2l0aW9uKCksbChmLnkpPyh1W3UuaXNOZXc/ImF0dHIiOiJhbmltYXRlIl0oZiksdS5pc05ldz0hMSk6KHUuYXR0cigieSIsLTk5OTkpLHUuaXNOZXc9ITApKTtuJiZuLmVuYWJsZWQmJmIuc3RhY2tpbmcmJmIuc3RhY2tpbmcucmVuZGVyU3RhY2tUb3RhbHMoKTtiLmlzRGlydHk9ITE7Qyh0aGlzLCJhZnRlclJlbmRlciIpfTtlLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oKXt0aGlzLnZpc2libGUmJih0aGlzLnJlbmRlcigpLHRoaXMucGxvdExpbmVzQW5kQmFuZHMuZm9yRWFjaChmdW5jdGlvbihiKXtiLnJlbmRlcigpfSkpO3RoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7Yi5pc0RpcnR5PSEwfSl9O2UucHJvdG90eXBlLmdldEtlZXBQcm9wcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmtlZXBQcm9wc3x8ZS5rZWVwUHJvcHN9O2UucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oYil7dmFyIGE9dGhpcywKZT1hLnBsb3RMaW5lc0FuZEJhbmRzLGY7Qyh0aGlzLCJkZXN0cm95Iix7a2VlcEV2ZW50czpifSk7Ynx8UChhKTtbYS50aWNrcyxhLm1pbm9yVGlja3MsYS5hbHRlcm5hdGVCYW5kc10uZm9yRWFjaChmdW5jdGlvbihiKXtLKGIpfSk7aWYoZSlmb3IoYj1lLmxlbmd0aDtiLS07KWVbYl0uZGVzdHJveSgpOyJheGlzTGluZSBheGlzVGl0bGUgYXhpc0dyb3VwIGdyaWRHcm91cCBsYWJlbEdyb3VwIGNyb3NzIHNjcm9sbGJhciIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2FbYl0mJihhW2JdPWFbYl0uZGVzdHJveSgpKX0pO2ZvcihmIGluIGEucGxvdExpbmVzQW5kQmFuZHNHcm91cHMpYS5wbG90TGluZXNBbmRCYW5kc0dyb3Vwc1tmXT1hLnBsb3RMaW5lc0FuZEJhbmRzR3JvdXBzW2ZdLmRlc3Ryb3koKTtBKGEsZnVuY3Rpb24oYixlKXstMT09PWEuZ2V0S2VlcFByb3BzKCkuaW5kZXhPZihlKSYmZGVsZXRlIGFbZV19KX07ZS5wcm90b3R5cGUuZHJhd0Nyb3NzaGFpcj1mdW5jdGlvbihiLAphKXt2YXIgZT10aGlzLmNyb3NzaGFpcixoPXUoZS5zbmFwLCEwKSxmLGQ9dGhpcy5jcm9zcyxrPXRoaXMuY2hhcnQ7Qyh0aGlzLCJkcmF3Q3Jvc3NoYWlyIix7ZTpiLHBvaW50OmF9KTtifHwoYj10aGlzLmNyb3NzJiZ0aGlzLmNyb3NzLmUpO2lmKHRoaXMuY3Jvc3NoYWlyJiYhMSE9PSh2KGEpfHwhaCkpe2g/dihhKSYmKGY9dSgiY29sb3JBeGlzIiE9PXRoaXMuY29sbD9hLmNyb3NzaGFpclBvczpudWxsLHRoaXMuaXNYQXhpcz9hLnBsb3RYOnRoaXMubGVuLWEucGxvdFkpKTpmPWImJih0aGlzLmhvcml6P2IuY2hhcnRYLXRoaXMucG9zOnRoaXMubGVuLWIuY2hhcnRZK3RoaXMucG9zKTtpZih2KGYpKXt2YXIgYz17dmFsdWU6YSYmKHRoaXMuaXNYQXhpcz9hLng6dShhLnN0YWNrWSxhLnkpKSx0cmFuc2xhdGVkVmFsdWU6Zn07ay5wb2xhciYmcihjLHtpc0Nyb3NzaGFpcjohMCxjaGFydFg6YiYmYi5jaGFydFgsY2hhcnRZOmImJmIuY2hhcnRZLHBvaW50OmF9KTtjPXRoaXMuZ2V0UGxvdExpbmVQYXRoKGMpfHwKbnVsbH1pZighdihjKSl7dGhpcy5oaWRlQ3Jvc3NoYWlyKCk7cmV0dXJufWg9dGhpcy5jYXRlZ29yaWVzJiYhdGhpcy5pc1JhZGlhbDtkfHwodGhpcy5jcm9zcz1kPWsucmVuZGVyZXIucGF0aCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLWNyb3NzaGFpciBoaWdoY2hhcnRzLWNyb3NzaGFpci0iKyhoPyJjYXRlZ29yeSAiOiJ0aGluICIpK2UuY2xhc3NOYW1lKS5hdHRyKHt6SW5kZXg6dShlLnpJbmRleCwyKX0pLmFkZCgpLGsuc3R5bGVkTW9kZXx8KGQuYXR0cih7c3Ryb2tlOmUuY29sb3J8fChoP2cucGFyc2UoIiNjY2Q2ZWIiKS5zZXRPcGFjaXR5KC4yNSkuZ2V0KCk6IiNjY2NjY2MiKSwic3Ryb2tlLXdpZHRoIjp1KGUud2lkdGgsMSl9KS5jc3MoeyJwb2ludGVyLWV2ZW50cyI6Im5vbmUifSksZS5kYXNoU3R5bGUmJmQuYXR0cih7ZGFzaHN0eWxlOmUuZGFzaFN0eWxlfSkpKTtkLnNob3coKS5hdHRyKHtkOmN9KTtoJiYhZS53aWR0aCYmZC5hdHRyKHsic3Ryb2tlLXdpZHRoIjp0aGlzLnRyYW5zQX0pOwp0aGlzLmNyb3NzLmU9Yn1lbHNlIHRoaXMuaGlkZUNyb3NzaGFpcigpO0ModGhpcywiYWZ0ZXJEcmF3Q3Jvc3NoYWlyIix7ZTpiLHBvaW50OmF9KX07ZS5wcm90b3R5cGUuaGlkZUNyb3NzaGFpcj1mdW5jdGlvbigpe3RoaXMuY3Jvc3MmJnRoaXMuY3Jvc3MuaGlkZSgpO0ModGhpcywiYWZ0ZXJIaWRlQ3Jvc3NoYWlyIil9O2UucHJvdG90eXBlLmhhc1ZlcnRpY2FsUGFubmluZz1mdW5jdGlvbigpe3ZhciBiLGE7cmV0dXJuL3kvLnRlc3QoKG51bGw9PT0oYT1udWxsPT09KGI9dGhpcy5jaGFydC5vcHRpb25zLmNoYXJ0KXx8dm9pZCAwPT09Yj92b2lkIDA6Yi5wYW5uaW5nKXx8dm9pZCAwPT09YT92b2lkIDA6YS50eXBlKXx8IiIpfTtlLmRlZmF1bHRPcHRpb25zPXtkYXRlVGltZUxhYmVsRm9ybWF0czp7bWlsbGlzZWNvbmQ6e21haW46IiVIOiVNOiVTLiVMIixyYW5nZTohMX0sc2Vjb25kOnttYWluOiIlSDolTTolUyIscmFuZ2U6ITF9LG1pbnV0ZTp7bWFpbjoiJUg6JU0iLHJhbmdlOiExfSwKaG91cjp7bWFpbjoiJUg6JU0iLHJhbmdlOiExfSxkYXk6e21haW46IiVlLiAlYiJ9LHdlZWs6e21haW46IiVlLiAlYiJ9LG1vbnRoOnttYWluOiIlYiAnJXkifSx5ZWFyOnttYWluOiIlWSJ9fSxlbmRPblRpY2s6ITEsbGFiZWxzOntlbmFibGVkOiEwLGluZGVudGF0aW9uOjEwLHg6MCxzdHlsZTp7Y29sb3I6IiM2NjY2NjYiLGN1cnNvcjoiZGVmYXVsdCIsZm9udFNpemU6IjExcHgifX0sbWF4UGFkZGluZzouMDEsbWlub3JUaWNrTGVuZ3RoOjIsbWlub3JUaWNrUG9zaXRpb246Im91dHNpZGUiLG1pblBhZGRpbmc6LjAxLHNob3dFbXB0eTohMCxzdGFydE9mV2VlazoxLHN0YXJ0T25UaWNrOiExLHRpY2tMZW5ndGg6MTAsdGlja1BpeGVsSW50ZXJ2YWw6MTAwLHRpY2ttYXJrUGxhY2VtZW50OiJiZXR3ZWVuIix0aWNrUG9zaXRpb246Im91dHNpZGUiLHRpdGxlOnthbGlnbjoibWlkZGxlIixzdHlsZTp7Y29sb3I6IiM2NjY2NjYifX0sdHlwZToibGluZWFyIixtaW5vckdyaWRMaW5lQ29sb3I6IiNmMmYyZjIiLAptaW5vckdyaWRMaW5lV2lkdGg6MSxtaW5vclRpY2tDb2xvcjoiIzk5OTk5OSIsbGluZUNvbG9yOiIjY2NkNmViIixsaW5lV2lkdGg6MSxncmlkTGluZUNvbG9yOiIjZTZlNmU2Iix0aWNrQ29sb3I6IiNjY2Q2ZWIifTtlLmRlZmF1bHRZQXhpc09wdGlvbnM9e2VuZE9uVGljazohMCxtYXhQYWRkaW5nOi4wNSxtaW5QYWRkaW5nOi4wNSx0aWNrUGl4ZWxJbnRlcnZhbDo3MixzaG93TGFzdExhYmVsOiEwLGxhYmVsczp7eDotOH0sc3RhcnRPblRpY2s6ITAsdGl0bGU6e3JvdGF0aW9uOjI3MCx0ZXh0OiJWYWx1ZXMifSxzdGFja0xhYmVsczp7YWxsb3dPdmVybGFwOiExLGVuYWJsZWQ6ITEsY3JvcDohMCxvdmVyZmxvdzoianVzdGlmeSIsZm9ybWF0dGVyOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5heGlzLmNoYXJ0Lm51bWJlckZvcm1hdHRlcjtyZXR1cm4gYih0aGlzLnRvdGFsLC0xKX0sc3R5bGU6e2NvbG9yOiIjMDAwMDAwIixmb250U2l6ZToiMTFweCIsZm9udFdlaWdodDoiYm9sZCIsdGV4dE91dGxpbmU6IjFweCBjb250cmFzdCJ9fSwKZ3JpZExpbmVXaWR0aDoxLGxpbmVXaWR0aDowfTtlLmRlZmF1bHRMZWZ0QXhpc09wdGlvbnM9e2xhYmVsczp7eDotMTV9LHRpdGxlOntyb3RhdGlvbjoyNzB9fTtlLmRlZmF1bHRSaWdodEF4aXNPcHRpb25zPXtsYWJlbHM6e3g6MTV9LHRpdGxlOntyb3RhdGlvbjo5MH19O2UuZGVmYXVsdEJvdHRvbUF4aXNPcHRpb25zPXtsYWJlbHM6e2F1dG9Sb3RhdGlvbjpbLTQ1XSx4OjB9LG1hcmdpbjoxNSx0aXRsZTp7cm90YXRpb246MH19O2UuZGVmYXVsdFRvcEF4aXNPcHRpb25zPXtsYWJlbHM6e2F1dG9Sb3RhdGlvbjpbLTQ1XSx4OjB9LG1hcmdpbjoxNSx0aXRsZTp7cm90YXRpb246MH19O2Uua2VlcFByb3BzPSJleHRLZXkgaGNFdmVudHMgbmFtZXMgc2VyaWVzIHVzZXJNYXggdXNlck1pbiIuc3BsaXQoIiAiKTtyZXR1cm4gZX0oKTtjLkF4aXM9eTtyZXR1cm4gYy5BeGlzfSk7TyhxLCJwYXJ0cy9EYXRlVGltZUF4aXMuanMiLFtxWyJwYXJ0cy9BeGlzLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLApmdW5jdGlvbihnLGMpe3ZhciBxPWMuYWRkRXZlbnQseT1jLmdldE1hZ25pdHVkZSxCPWMubm9ybWFsaXplVGlja0ludGVydmFsLEg9Yy50aW1lVW5pdHMsRD1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYyl7dGhpcy5heGlzPWN9Yy5wcm90b3R5cGUubm9ybWFsaXplVGltZVRpY2tJbnRlcnZhbD1mdW5jdGlvbihjLGcpe3ZhciB0PWd8fFtbIm1pbGxpc2Vjb25kIixbMSwyLDUsMTAsMjAsMjUsNTAsMTAwLDIwMCw1MDBdXSxbInNlY29uZCIsWzEsMiw1LDEwLDE1LDMwXV0sWyJtaW51dGUiLFsxLDIsNSwxMCwxNSwzMF1dLFsiaG91ciIsWzEsMiwzLDQsNiw4LDEyXV0sWyJkYXkiLFsxLDJdXSxbIndlZWsiLFsxLDJdXSxbIm1vbnRoIixbMSwyLDMsNCw2XV0sWyJ5ZWFyIixudWxsXV07Zz10W3QubGVuZ3RoLTFdO3ZhciB2PUhbZ1swXV0scT1nWzFdLG47Zm9yKG49MDtuPHQubGVuZ3RoJiYhKGc9dFtuXSx2PUhbZ1swXV0scT1nWzFdLHRbbisxXSYmYzw9KHYqcVtxLmxlbmd0aC0xXStIW3RbbisKMV1bMF1dKS8yKTtuKyspO3Y9PT1ILnllYXImJmM8NSp2JiYocT1bMSwyLDVdKTtjPUIoYy92LHEsInllYXIiPT09Z1swXT9NYXRoLm1heCh5KGMvdiksMSk6MSk7cmV0dXJue3VuaXRSYW5nZTp2LGNvdW50OmMsdW5pdE5hbWU6Z1swXX19O3JldHVybiBjfSgpO2M9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKCl7fWMuY29tcG9zZT1mdW5jdGlvbihjKXtjLmtlZXBQcm9wcy5wdXNoKCJkYXRlVGltZSIpO2MucHJvdG90eXBlLmdldFRpbWVUaWNrcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNoYXJ0LnRpbWUuZ2V0VGltZVRpY2tzLmFwcGx5KHRoaXMuY2hhcnQudGltZSxhcmd1bWVudHMpfTtxKGMsImluaXQiLGZ1bmN0aW9uKGMpeyJkYXRldGltZSIhPT1jLnVzZXJPcHRpb25zLnR5cGU/dGhpcy5kYXRlVGltZT12b2lkIDA6dGhpcy5kYXRlVGltZXx8KHRoaXMuZGF0ZVRpbWU9bmV3IEQodGhpcykpfSl9O2MuQWRkaXRpb25zQ2xhc3M9RDtyZXR1cm4gY30oKTtjLmNvbXBvc2UoZyk7cmV0dXJuIGN9KTsKTyhxLCJwYXJ0cy9Mb2dhcml0aG1pY0F4aXMuanMiLFtxWyJwYXJ0cy9BeGlzLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyl7dmFyIHE9Yy5hZGRFdmVudCx5PWMuZ2V0TWFnbml0dWRlLEI9Yy5ub3JtYWxpemVUaWNrSW50ZXJ2YWwsSD1jLnBpY2ssRD1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYyl7dGhpcy5heGlzPWN9Yy5wcm90b3R5cGUuZ2V0TG9nVGlja1Bvc2l0aW9ucz1mdW5jdGlvbihjLGcscSx2KXt2YXIgdD10aGlzLmF4aXMsbj10LmxlbixyPXQub3B0aW9ucyxDPVtdO3Z8fCh0aGlzLm1pbm9yQXV0b0ludGVydmFsPXZvaWQgMCk7aWYoLjU8PWMpYz1NYXRoLnJvdW5kKGMpLEM9dC5nZXRMaW5lYXJUaWNrUG9zaXRpb25zKGMsZyxxKTtlbHNlIGlmKC4wODw9Yyl7cj1NYXRoLmZsb29yKGcpO3ZhciBJLHA7Zm9yKG49LjM8Yz9bMSwyLDRdOi4xNTxjP1sxLDIsNCw2LDhdOlsxLDIsMyw0LDUsNiw3LDgsOV07cjxxKzEmJiFwO3IrKyl7dmFyIG09Cm4ubGVuZ3RoO2ZvcihJPTA7STxtJiYhcDtJKyspe3ZhciBkPXRoaXMubG9nMmxpbih0aGlzLmxpbjJsb2cocikqbltJXSk7ZD5nJiYoIXZ8fGw8PXEpJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBsJiZDLnB1c2gobCk7bD5xJiYocD0hMCk7dmFyIGw9ZH19fWVsc2UgZz10aGlzLmxpbjJsb2coZykscT10aGlzLmxpbjJsb2cocSksYz12P3QuZ2V0TWlub3JUaWNrSW50ZXJ2YWwoKTpyLnRpY2tJbnRlcnZhbCxjPUgoImF1dG8iPT09Yz9udWxsOmMsdGhpcy5taW5vckF1dG9JbnRlcnZhbCxyLnRpY2tQaXhlbEludGVydmFsLyh2PzU6MSkqKHEtZykvKCh2P24vdC50aWNrUG9zaXRpb25zLmxlbmd0aDpuKXx8MSkpLGM9QihjLHZvaWQgMCx5KGMpKSxDPXQuZ2V0TGluZWFyVGlja1Bvc2l0aW9ucyhjLGcscSkubWFwKHRoaXMubG9nMmxpbiksdnx8KHRoaXMubWlub3JBdXRvSW50ZXJ2YWw9Yy81KTt2fHwodC50aWNrSW50ZXJ2YWw9Yyk7cmV0dXJuIEN9O2MucHJvdG90eXBlLmxpbjJsb2c9ZnVuY3Rpb24oYyl7cmV0dXJuIE1hdGgucG93KDEwLApjKX07Yy5wcm90b3R5cGUubG9nMmxpbj1mdW5jdGlvbihjKXtyZXR1cm4gTWF0aC5sb2coYykvTWF0aC5MTjEwfTtyZXR1cm4gY30oKTtjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYygpe31jLmNvbXBvc2U9ZnVuY3Rpb24oYyl7Yy5rZWVwUHJvcHMucHVzaCgibG9nYXJpdGhtaWMiKTt2YXIgZz1jLnByb3RvdHlwZSx0PUQucHJvdG90eXBlO2cubG9nMmxpbj10LmxvZzJsaW47Zy5saW4ybG9nPXQubGluMmxvZztxKGMsImluaXQiLGZ1bmN0aW9uKGMpe3ZhciBnPXRoaXMubG9nYXJpdGhtaWM7ImxvZ2FyaXRobWljIiE9PWMudXNlck9wdGlvbnMudHlwZT90aGlzLmxvZ2FyaXRobWljPXZvaWQgMDooZ3x8KGc9dGhpcy5sb2dhcml0aG1pYz1uZXcgRCh0aGlzKSksdGhpcy5sb2cybGluIT09Zy5sb2cybGluJiYoZy5sb2cybGluPXRoaXMubG9nMmxpbi5iaW5kKHRoaXMpKSx0aGlzLmxpbjJsb2chPT1nLmxpbjJsb2cmJihnLmxpbjJsb2c9dGhpcy5saW4ybG9nLmJpbmQodGhpcykpKX0pO3EoYywKImFmdGVySW5pdCIsZnVuY3Rpb24oKXt2YXIgYz10aGlzLmxvZ2FyaXRobWljO2MmJih0aGlzLmxpbjJ2YWw9ZnVuY3Rpb24oZyl7cmV0dXJuIGMubGluMmxvZyhnKX0sdGhpcy52YWwybGluPWZ1bmN0aW9uKGcpe3JldHVybiBjLmxvZzJsaW4oZyl9KX0pfTtyZXR1cm4gY30oKTtjLmNvbXBvc2UoZyk7cmV0dXJuIGN9KTtPKHEsInBhcnRzL1Bsb3RMaW5lT3JCYW5kLmpzIixbcVsicGFydHMvQXhpcy5qcyJdLHFbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEpe3ZhciB5PXEuYXJyYXlNYXgsQj1xLmFycmF5TWluLEg9cS5kZWZpbmVkLEQ9cS5kZXN0cm95T2JqZWN0UHJvcGVydGllcyxKPXEuZXJhc2UsdD1xLmV4dGVuZCxHPXEubWVyZ2UsTD1xLm9iamVjdEVhY2gsdj1xLnBpY2ssSz1mdW5jdGlvbigpe2Z1bmN0aW9uIG4oYyxuKXt0aGlzLmF4aXM9YztuJiYodGhpcy5vcHRpb25zPW4sdGhpcy5pZD1uLmlkKX1uLnByb3RvdHlwZS5yZW5kZXI9CmZ1bmN0aW9uKCl7Yy5maXJlRXZlbnQodGhpcywicmVuZGVyIik7dmFyIG49dGhpcyxnPW4uYXhpcyx0PWcuaG9yaXoscD1nLmxvZ2FyaXRobWljLG09bi5vcHRpb25zLGQ9bS5sYWJlbCxsPW4ubGFiZWwsaz1tLnRvLGY9bS5mcm9tLGE9bS52YWx1ZSxBPUgoZikmJkgoayksdT1IKGEpLEU9bi5zdmdFbGVtLFA9IUUsdz1bXSxNPW0uY29sb3IsRj12KG0uekluZGV4LDApLHE9bS5ldmVudHM7dz17ImNsYXNzIjoiaGlnaGNoYXJ0cy1wbG90LSIrKEE/ImJhbmQgIjoibGluZSAiKSsobS5jbGFzc05hbWV8fCIiKX07dmFyIGU9e30sYj1nLmNoYXJ0LnJlbmRlcmVyLGg9QT8iYmFuZHMiOiJsaW5lcyI7cCYmKGY9cC5sb2cybGluKGYpLGs9cC5sb2cybGluKGspLGE9cC5sb2cybGluKGEpKTtnLmNoYXJ0LnN0eWxlZE1vZGV8fCh1Pyh3LnN0cm9rZT1NfHwiIzk5OTk5OSIsd1sic3Ryb2tlLXdpZHRoIl09dihtLndpZHRoLDEpLG0uZGFzaFN0eWxlJiYody5kYXNoc3R5bGU9bS5kYXNoU3R5bGUpKToKQSYmKHcuZmlsbD1NfHwiI2U2ZWJmNSIsbS5ib3JkZXJXaWR0aCYmKHcuc3Ryb2tlPW0uYm9yZGVyQ29sb3Isd1sic3Ryb2tlLXdpZHRoIl09bS5ib3JkZXJXaWR0aCkpKTtlLnpJbmRleD1GO2grPSItIitGOyhwPWcucGxvdExpbmVzQW5kQmFuZHNHcm91cHNbaF0pfHwoZy5wbG90TGluZXNBbmRCYW5kc0dyb3Vwc1toXT1wPWIuZygicGxvdC0iK2gpLmF0dHIoZSkuYWRkKCkpO1AmJihuLnN2Z0VsZW09RT1iLnBhdGgoKS5hdHRyKHcpLmFkZChwKSk7aWYodSl3PWcuZ2V0UGxvdExpbmVQYXRoKHt2YWx1ZTphLGxpbmVXaWR0aDpFLnN0cm9rZVdpZHRoKCksYWNyb3NzUGFuZXM6bS5hY3Jvc3NQYW5lc30pO2Vsc2UgaWYoQSl3PWcuZ2V0UGxvdEJhbmRQYXRoKGYsayxtKTtlbHNlIHJldHVybjshbi5ldmVudHNBZGRlZCYmcSYmKEwocSxmdW5jdGlvbihiLGEpe0Uub24oYSxmdW5jdGlvbihiKXtxW2FdLmFwcGx5KG4sW2JdKX0pfSksbi5ldmVudHNBZGRlZD0hMCk7KFB8fCFFLmQpJiZ3JiYKdy5sZW5ndGg/RS5hdHRyKHtkOnd9KTpFJiYodz8oRS5zaG93KCEwKSxFLmFuaW1hdGUoe2Q6d30pKTpFLmQmJihFLmhpZGUoKSxsJiYobi5sYWJlbD1sPWwuZGVzdHJveSgpKSkpO2QmJihIKGQudGV4dCl8fEgoZC5mb3JtYXR0ZXIpKSYmdyYmdy5sZW5ndGgmJjA8Zy53aWR0aCYmMDxnLmhlaWdodCYmIXcuaXNGbGF0PyhkPUcoe2FsaWduOnQmJkEmJiJjZW50ZXIiLHg6dD8hQSYmNDoxMCx2ZXJ0aWNhbEFsaWduOiF0JiZBJiYibWlkZGxlIix5OnQ/QT8xNjoxMDpBPzY6LTQscm90YXRpb246dCYmIUEmJjkwfSxkKSx0aGlzLnJlbmRlckxhYmVsKGQsdyxBLEYpKTpsJiZsLmhpZGUoKTtyZXR1cm4gbn07bi5wcm90b3R5cGUucmVuZGVyTGFiZWw9ZnVuY3Rpb24oYyxuLGcscCl7dmFyIG09dGhpcy5sYWJlbCxkPXRoaXMuYXhpcy5jaGFydC5yZW5kZXJlcjttfHwobT17YWxpZ246Yy50ZXh0QWxpZ258fGMuYWxpZ24scm90YXRpb246Yy5yb3RhdGlvbiwiY2xhc3MiOiJoaWdoY2hhcnRzLXBsb3QtIisKKGc/ImJhbmQiOiJsaW5lIikrIi1sYWJlbCAiKyhjLmNsYXNzTmFtZXx8IiIpfSxtLnpJbmRleD1wLHA9dGhpcy5nZXRMYWJlbFRleHQoYyksdGhpcy5sYWJlbD1tPWQudGV4dChwLDAsMCxjLnVzZUhUTUwpLmF0dHIobSkuYWRkKCksdGhpcy5heGlzLmNoYXJ0LnN0eWxlZE1vZGV8fG0uY3NzKGMuc3R5bGUpKTtkPW4ueEJvdW5kc3x8W25bMF1bMV0sblsxXVsxXSxnP25bMl1bMV06blswXVsxXV07bj1uLnlCb3VuZHN8fFtuWzBdWzJdLG5bMV1bMl0sZz9uWzJdWzJdOm5bMF1bMl1dO2c9QihkKTtwPUIobik7bS5hbGlnbihjLCExLHt4OmcseTpwLHdpZHRoOnkoZCktZyxoZWlnaHQ6eShuKS1wfSk7bS5zaG93KCEwKX07bi5wcm90b3R5cGUuZ2V0TGFiZWxUZXh0PWZ1bmN0aW9uKGMpe3JldHVybiBIKGMuZm9ybWF0dGVyKT9jLmZvcm1hdHRlci5jYWxsKHRoaXMpOmMudGV4dH07bi5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe0oodGhpcy5heGlzLnBsb3RMaW5lc0FuZEJhbmRzLAp0aGlzKTtkZWxldGUgdGhpcy5heGlzO0QodGhpcyl9O3JldHVybiBufSgpO3QoZy5wcm90b3R5cGUse2dldFBsb3RCYW5kUGF0aDpmdW5jdGlvbihjLGcpe3ZhciBuPXRoaXMuZ2V0UGxvdExpbmVQYXRoKHt2YWx1ZTpnLGZvcmNlOiEwLGFjcm9zc1BhbmVzOnRoaXMub3B0aW9ucy5hY3Jvc3NQYW5lc30pLHI9dGhpcy5nZXRQbG90TGluZVBhdGgoe3ZhbHVlOmMsZm9yY2U6ITAsYWNyb3NzUGFuZXM6dGhpcy5vcHRpb25zLmFjcm9zc1BhbmVzfSkscD1bXSxtPXRoaXMuaG9yaXosZD0xO2M9Yzx0aGlzLm1pbiYmZzx0aGlzLm1pbnx8Yz50aGlzLm1heCYmZz50aGlzLm1heDtpZihyJiZuKXtpZihjKXt2YXIgbD1yLnRvU3RyaW5nKCk9PT1uLnRvU3RyaW5nKCk7ZD0wfWZvcihjPTA7YzxyLmxlbmd0aDtjKz0yKXtnPXJbY107dmFyIGs9cltjKzFdLGY9bltjXSxhPW5bYysxXTsiTSIhPT1nWzBdJiYiTCIhPT1nWzBdfHwiTSIhPT1rWzBdJiYiTCIhPT1rWzBdfHwiTSIhPT1mWzBdJiYiTCIhPT0KZlswXXx8Ik0iIT09YVswXSYmIkwiIT09YVswXXx8KG0mJmZbMV09PT1nWzFdPyhmWzFdKz1kLGFbMV0rPWQpOm18fGZbMl0hPT1nWzJdfHwoZlsyXSs9ZCxhWzJdKz1kKSxwLnB1c2goWyJNIixnWzFdLGdbMl1dLFsiTCIsa1sxXSxrWzJdXSxbIkwiLGFbMV0sYVsyXV0sWyJMIixmWzFdLGZbMl1dLFsiWiJdKSk7cC5pc0ZsYXQ9bH19cmV0dXJuIHB9LGFkZFBsb3RCYW5kOmZ1bmN0aW9uKGMpe3JldHVybiB0aGlzLmFkZFBsb3RCYW5kT3JMaW5lKGMsInBsb3RCYW5kcyIpfSxhZGRQbG90TGluZTpmdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5hZGRQbG90QmFuZE9yTGluZShjLCJwbG90TGluZXMiKX0sYWRkUGxvdEJhbmRPckxpbmU6ZnVuY3Rpb24oYyxnKXt2YXIgbj0obmV3IEsodGhpcyxjKSkucmVuZGVyKCkscj10aGlzLnVzZXJPcHRpb25zO2lmKG4pe2lmKGcpe3ZhciBwPXJbZ118fFtdO3AucHVzaChjKTtyW2ddPXB9dGhpcy5wbG90TGluZXNBbmRCYW5kcy5wdXNoKG4pO3RoaXMuX2FkZGVkUGxvdExCPQohMH1yZXR1cm4gbn0scmVtb3ZlUGxvdEJhbmRPckxpbmU6ZnVuY3Rpb24oYyl7Zm9yKHZhciBuPXRoaXMucGxvdExpbmVzQW5kQmFuZHMsZz10aGlzLm9wdGlvbnMsdD10aGlzLnVzZXJPcHRpb25zLHA9bi5sZW5ndGg7cC0tOyluW3BdLmlkPT09YyYmbltwXS5kZXN0cm95KCk7W2cucGxvdExpbmVzfHxbXSx0LnBsb3RMaW5lc3x8W10sZy5wbG90QmFuZHN8fFtdLHQucGxvdEJhbmRzfHxbXV0uZm9yRWFjaChmdW5jdGlvbihtKXtmb3IocD1tLmxlbmd0aDtwLS07KShtW3BdfHx7fSkuaWQ9PT1jJiZKKG0sbVtwXSl9KX0scmVtb3ZlUGxvdEJhbmQ6ZnVuY3Rpb24oYyl7dGhpcy5yZW1vdmVQbG90QmFuZE9yTGluZShjKX0scmVtb3ZlUGxvdExpbmU6ZnVuY3Rpb24oYyl7dGhpcy5yZW1vdmVQbG90QmFuZE9yTGluZShjKX19KTtjLlBsb3RMaW5lT3JCYW5kPUs7cmV0dXJuIGMuUGxvdExpbmVPckJhbmR9KTtPKHEsInBhcnRzL1Rvb2x0aXAuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0sCnFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMpe3ZhciBxPWcuZG9jLHk9Yy5jbGFtcCxCPWMuY3NzLEg9Yy5kZWZpbmVkLEQ9Yy5kaXNjYXJkRWxlbWVudCxKPWMuZXh0ZW5kLHQ9Yy5maXJlRXZlbnQsRz1jLmZvcm1hdCxMPWMuaXNOdW1iZXIsdj1jLmlzU3RyaW5nLEs9Yy5tZXJnZSxuPWMucGljayxyPWMuc3BsYXQsQz1jLnN5bmNUaW1lb3V0LEk9Yy50aW1lVW5pdHM7IiI7dmFyIHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiBtKGQsYyl7dGhpcy5jb250YWluZXI9dm9pZCAwO3RoaXMuY3Jvc3NoYWlycz1bXTt0aGlzLmRpc3RhbmNlPTA7dGhpcy5pc0hpZGRlbj0hMDt0aGlzLmlzU3RpY2t5PSExO3RoaXMubm93PXt9O3RoaXMub3B0aW9ucz17fTt0aGlzLm91dHNpZGU9ITE7dGhpcy5jaGFydD1kO3RoaXMuaW5pdChkLGMpfW0ucHJvdG90eXBlLmFwcGx5RmlsdGVyPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5jaGFydDtkLnJlbmRlcmVyLmRlZmluaXRpb24oe3RhZ05hbWU6ImZpbHRlciIsCmlkOiJkcm9wLXNoYWRvdy0iK2QuaW5kZXgsb3BhY2l0eTouNSxjaGlsZHJlbjpbe3RhZ05hbWU6ImZlR2F1c3NpYW5CbHVyIiwiaW4iOiJTb3VyY2VBbHBoYSIsc3RkRGV2aWF0aW9uOjF9LHt0YWdOYW1lOiJmZU9mZnNldCIsZHg6MSxkeToxfSx7dGFnTmFtZToiZmVDb21wb25lbnRUcmFuc2ZlciIsY2hpbGRyZW46W3t0YWdOYW1lOiJmZUZ1bmNBIix0eXBlOiJsaW5lYXIiLHNsb3BlOi4zfV19LHt0YWdOYW1lOiJmZU1lcmdlIixjaGlsZHJlbjpbe3RhZ05hbWU6ImZlTWVyZ2VOb2RlIn0se3RhZ05hbWU6ImZlTWVyZ2VOb2RlIiwiaW4iOiJTb3VyY2VHcmFwaGljIn1dfV19KTtkLnJlbmRlcmVyLmRlZmluaXRpb24oe3RhZ05hbWU6InN0eWxlIix0ZXh0Q29udGVudDoiLmhpZ2hjaGFydHMtdG9vbHRpcC0iK2QuaW5kZXgrIntmaWx0ZXI6dXJsKCNkcm9wLXNoYWRvdy0iK2QuaW5kZXgrIil9In0pfTttLnByb3RvdHlwZS5ib2R5Rm9ybWF0dGVyPWZ1bmN0aW9uKGQpe3JldHVybiBkLm1hcChmdW5jdGlvbihkKXt2YXIgaz0KZC5zZXJpZXMudG9vbHRpcE9wdGlvbnM7cmV0dXJuKGtbKGQucG9pbnQuZm9ybWF0UHJlZml4fHwicG9pbnQiKSsiRm9ybWF0dGVyIl18fGQucG9pbnQudG9vbHRpcEZvcm1hdHRlcikuY2FsbChkLnBvaW50LGtbKGQucG9pbnQuZm9ybWF0UHJlZml4fHwicG9pbnQiKSsiRm9ybWF0Il18fCIiKX0pfTttLnByb3RvdHlwZS5jbGVhblNwbGl0PWZ1bmN0aW9uKGQpe3RoaXMuY2hhcnQuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGs9YyYmYy50dDtrJiYoIWsuaXNBY3RpdmV8fGQ/Yy50dD1rLmRlc3Ryb3koKTprLmlzQWN0aXZlPSExKX0pfTttLnByb3RvdHlwZS5kZWZhdWx0Rm9ybWF0dGVyPWZ1bmN0aW9uKGQpe3ZhciBjPXRoaXMucG9pbnRzfHxyKHRoaXMpO3ZhciBrPVtkLnRvb2x0aXBGb290ZXJIZWFkZXJGb3JtYXR0ZXIoY1swXSldO2s9ay5jb25jYXQoZC5ib2R5Rm9ybWF0dGVyKGMpKTtrLnB1c2goZC50b29sdGlwRm9vdGVySGVhZGVyRm9ybWF0dGVyKGNbMF0sITApKTsKcmV0dXJuIGt9O20ucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmxhYmVsJiYodGhpcy5sYWJlbD10aGlzLmxhYmVsLmRlc3Ryb3koKSk7dGhpcy5zcGxpdCYmdGhpcy50dCYmKHRoaXMuY2xlYW5TcGxpdCh0aGlzLmNoYXJ0LCEwKSx0aGlzLnR0PXRoaXMudHQuZGVzdHJveSgpKTt0aGlzLnJlbmRlcmVyJiYodGhpcy5yZW5kZXJlcj10aGlzLnJlbmRlcmVyLmRlc3Ryb3koKSxEKHRoaXMuY29udGFpbmVyKSk7Yy5jbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZXIpO2MuY2xlYXJUaW1lb3V0KHRoaXMudG9vbHRpcFRpbWVvdXQpfTttLnByb3RvdHlwZS5nZXRBbmNob3I9ZnVuY3Rpb24oZCxjKXt2YXIgaz10aGlzLmNoYXJ0LGY9ay5wb2ludGVyLGE9ay5pbnZlcnRlZCxsPWsucGxvdFRvcCx1PWsucGxvdExlZnQsbT0wLHA9MCx3LG47ZD1yKGQpO3RoaXMuZm9sbG93UG9pbnRlciYmYz8oInVuZGVmaW5lZCI9PT10eXBlb2YgYy5jaGFydFgmJihjPWYubm9ybWFsaXplKGMpKSwKZD1bYy5jaGFydFgtdSxjLmNoYXJ0WS1sXSk6ZFswXS50b29sdGlwUG9zP2Q9ZFswXS50b29sdGlwUG9zOihkLmZvckVhY2goZnVuY3Rpb24oZil7dz1mLnNlcmllcy55QXhpcztuPWYuc2VyaWVzLnhBeGlzO20rPWYucGxvdFgrKCFhJiZuP24ubGVmdC11OjApO3ArPShmLnBsb3RMb3c/KGYucGxvdExvdytmLnBsb3RIaWdoKS8yOmYucGxvdFkpKyghYSYmdz93LnRvcC1sOjApfSksbS89ZC5sZW5ndGgscC89ZC5sZW5ndGgsZD1bYT9rLnBsb3RXaWR0aC1wOm0sdGhpcy5zaGFyZWQmJiFhJiYxPGQubGVuZ3RoJiZjP2MuY2hhcnRZLWw6YT9rLnBsb3RIZWlnaHQtbTpwXSk7cmV0dXJuIGQubWFwKE1hdGgucm91bmQpfTttLnByb3RvdHlwZS5nZXREYXRlRm9ybWF0PWZ1bmN0aW9uKGQsYyxrLGYpe3ZhciBhPXRoaXMuY2hhcnQudGltZSxsPWEuZGF0ZUZvcm1hdCgiJW0tJWQgJUg6JU06JVMuJUwiLGMpLHU9e21pbGxpc2Vjb25kOjE1LHNlY29uZDoxMixtaW51dGU6OSxob3VyOjYsZGF5OjN9LAptPSJtaWxsaXNlY29uZCI7Zm9yKHAgaW4gSSl7aWYoZD09PUkud2VlayYmK2EuZGF0ZUZvcm1hdCgiJXciLGMpPT09ayYmIjAwOjAwOjAwLjAwMCI9PT1sLnN1YnN0cig2KSl7dmFyIHA9IndlZWsiO2JyZWFrfWlmKElbcF0+ZCl7cD1tO2JyZWFrfWlmKHVbcF0mJmwuc3Vic3RyKHVbcF0pIT09IjAxLTAxIDAwOjAwOjAwLjAwMCIuc3Vic3RyKHVbcF0pKWJyZWFrOyJ3ZWVrIiE9PXAmJihtPXApfWlmKHApdmFyIHc9YS5yZXNvbHZlRFRMRm9ybWF0KGZbcF0pLm1haW47cmV0dXJuIHd9O20ucHJvdG90eXBlLmdldExhYmVsPWZ1bmN0aW9uKCl7dmFyIGQsYyxrPXRoaXMsZj10aGlzLmNoYXJ0LnJlbmRlcmVyLGE9dGhpcy5jaGFydC5zdHlsZWRNb2RlLG09dGhpcy5vcHRpb25zLHU9InRvb2x0aXAiKyhIKG0uY2xhc3NOYW1lKT8iICIrbS5jbGFzc05hbWU6IiIpLHA9KG51bGw9PT0oZD1tLnN0eWxlKXx8dm9pZCAwPT09ZD92b2lkIDA6ZC5wb2ludGVyRXZlbnRzKXx8KCF0aGlzLmZvbGxvd1BvaW50ZXImJgptLnN0aWNrT25Db250YWN0PyJhdXRvIjoibm9uZSIpLG47ZD1mdW5jdGlvbigpe2suaW5Db250YWN0PSEwfTt2YXIgdz1mdW5jdGlvbigpe3ZhciBhPWsuY2hhcnQuaG92ZXJTZXJpZXM7ay5pbkNvbnRhY3Q9ITE7aWYoYSYmYS5vbk1vdXNlT3V0KWEub25Nb3VzZU91dCgpfTtpZighdGhpcy5sYWJlbCl7dGhpcy5vdXRzaWRlJiYodGhpcy5jb250YWluZXI9bj1nLmRvYy5jcmVhdGVFbGVtZW50KCJkaXYiKSxuLmNsYXNzTmFtZT0iaGlnaGNoYXJ0cy10b29sdGlwLWNvbnRhaW5lciIsQihuLHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoiMXB4Iixwb2ludGVyRXZlbnRzOnAsekluZGV4OjN9KSxnLmRvYy5ib2R5LmFwcGVuZENoaWxkKG4pLHRoaXMucmVuZGVyZXI9Zj1uZXcgZy5SZW5kZXJlcihuLDAsMCxudWxsPT09KGM9dGhpcy5jaGFydC5vcHRpb25zLmNoYXJ0KXx8dm9pZCAwPT09Yz92b2lkIDA6Yy5zdHlsZSx2b2lkIDAsdm9pZCAwLGYuc3R5bGVkTW9kZSkpO3RoaXMuc3BsaXQ/CnRoaXMubGFiZWw9Zi5nKHUpOih0aGlzLmxhYmVsPWYubGFiZWwoIiIsMCwwLG0uc2hhcGV8fCJjYWxsb3V0IixudWxsLG51bGwsbS51c2VIVE1MLG51bGwsdSkuYXR0cih7cGFkZGluZzptLnBhZGRpbmcscjptLmJvcmRlclJhZGl1c30pLGF8fHRoaXMubGFiZWwuYXR0cih7ZmlsbDptLmJhY2tncm91bmRDb2xvciwic3Ryb2tlLXdpZHRoIjptLmJvcmRlcldpZHRofSkuY3NzKG0uc3R5bGUpLmNzcyh7cG9pbnRlckV2ZW50czpwfSkuc2hhZG93KG0uc2hhZG93KSk7YSYmKHRoaXMuYXBwbHlGaWx0ZXIoKSx0aGlzLmxhYmVsLmFkZENsYXNzKCJoaWdoY2hhcnRzLXRvb2x0aXAtIit0aGlzLmNoYXJ0LmluZGV4KSk7aWYoay5vdXRzaWRlJiYhay5zcGxpdCl7dmFyIHI9dGhpcy5sYWJlbCxGPXIueFNldHRlcix0PXIueVNldHRlcjtyLnhTZXR0ZXI9ZnVuY3Rpb24oYSl7Ri5jYWxsKHIsay5kaXN0YW5jZSk7bi5zdHlsZS5sZWZ0PWErInB4In07ci55U2V0dGVyPWZ1bmN0aW9uKGEpe3QuY2FsbChyLAprLmRpc3RhbmNlKTtuLnN0eWxlLnRvcD1hKyJweCJ9fXRoaXMubGFiZWwub24oIm1vdXNlZW50ZXIiLGQpLm9uKCJtb3VzZWxlYXZlIix3KS5hdHRyKHt6SW5kZXg6OH0pLmFkZCgpfXJldHVybiB0aGlzLmxhYmVsfTttLnByb3RvdHlwZS5nZXRQb3NpdGlvbj1mdW5jdGlvbihkLGMsayl7dmFyIGY9dGhpcy5jaGFydCxhPXRoaXMuZGlzdGFuY2UsbD17fSxtPWYuaW52ZXJ0ZWQmJmsuaHx8MCxwLGc9dGhpcy5vdXRzaWRlLHc9Zz9xLmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aC0yKmE6Zi5jaGFydFdpZHRoLHI9Zz9NYXRoLm1heChxLmJvZHkuc2Nyb2xsSGVpZ2h0LHEuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCxxLmJvZHkub2Zmc2V0SGVpZ2h0LHEuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodCxxLmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpOmYuY2hhcnRIZWlnaHQsRj1mLnBvaW50ZXIuZ2V0Q2hhcnRQb3NpdGlvbigpLHQ9Zi5jb250YWluZXJTY2FsaW5nLAplPWZ1bmN0aW9uKGIpe3JldHVybiB0P2IqdC5zY2FsZVg6Yn0sYj1mdW5jdGlvbihiKXtyZXR1cm4gdD9iKnQuc2NhbGVZOmJ9LGg9ZnVuY3Rpb24oaCl7dmFyIGw9IngiPT09aDtyZXR1cm5baCxsP3c6cixsP2Q6Y10uY29uY2F0KGc/W2w/ZShkKTpiKGMpLGw/Ri5sZWZ0LWErZShrLnBsb3RYK2YucGxvdExlZnQpOkYudG9wLWErYihrLnBsb3RZK2YucGxvdFRvcCksMCxsP3c6cl06W2w/ZDpjLGw/ay5wbG90WCtmLnBsb3RMZWZ0OmsucGxvdFkrZi5wbG90VG9wLGw/Zi5wbG90TGVmdDpmLnBsb3RUb3AsbD9mLnBsb3RMZWZ0K2YucGxvdFdpZHRoOmYucGxvdFRvcCtmLnBsb3RIZWlnaHRdKX0sej1oKCJ5IikseD1oKCJ4IiksQz0hdGhpcy5mb2xsb3dQb2ludGVyJiZuKGsudHRCZWxvdywhZi5pbnZlcnRlZD09PSEhay5uZWdhdGl2ZSksdj1mdW5jdGlvbihoLGYsZCxjLGssdSxwKXt2YXIgeD0ieSI9PT1oP2IoYSk6ZShhKSx3PShkLWMpLzIsbj1jPGstYSxBPWsrYStjPGYsZz1rLXgtCmQrdztrPWsreC13O2lmKEMmJkEpbFtoXT1rO2Vsc2UgaWYoIUMmJm4pbFtoXT1nO2Vsc2UgaWYobilsW2hdPU1hdGgubWluKHAtYywwPmctbT9nOmctbSk7ZWxzZSBpZihBKWxbaF09TWF0aC5tYXgodSxrK20rZD5mP2s6ayttKTtlbHNlIHJldHVybiExfSxJPWZ1bmN0aW9uKGIsZSxoLGYsZCl7dmFyIGM7ZDxhfHxkPmUtYT9jPSExOmxbYl09ZDxoLzI/MTpkPmUtZi8yP2UtZi0yOmQtaC8yO3JldHVybiBjfSxWPWZ1bmN0aW9uKGIpe3ZhciBhPXo7ej14O3g9YTtwPWJ9LEc9ZnVuY3Rpb24oKXshMSE9PXYuYXBwbHkoMCx6KT8hMSE9PUkuYXBwbHkoMCx4KXx8cHx8KFYoITApLEcoKSk6cD9sLng9bC55PTA6KFYoITApLEcoKSl9OyhmLmludmVydGVkfHwxPHRoaXMubGVuKSYmVigpO0coKTtyZXR1cm4gbH07bS5wcm90b3R5cGUuZ2V0WERhdGVGb3JtYXQ9ZnVuY3Rpb24oZCxjLGspe2M9Yy5kYXRlVGltZUxhYmVsRm9ybWF0czt2YXIgZj1rJiZrLmNsb3Nlc3RQb2ludFJhbmdlO3JldHVybihmPwp0aGlzLmdldERhdGVGb3JtYXQoZixkLngsay5vcHRpb25zLnN0YXJ0T2ZXZWVrLGMpOmMuZGF5KXx8Yy55ZWFyfTttLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKGQpe3ZhciBsPXRoaXM7Yy5jbGVhclRpbWVvdXQodGhpcy5oaWRlVGltZXIpO2Q9bihkLHRoaXMub3B0aW9ucy5oaWRlRGVsYXksNTAwKTt0aGlzLmlzSGlkZGVufHwodGhpcy5oaWRlVGltZXI9QyhmdW5jdGlvbigpe2wuZ2V0TGFiZWwoKS5mYWRlT3V0KGQ/dm9pZCAwOmQpO2wuaXNIaWRkZW49ITB9LGQpKX07bS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihkLGMpe3RoaXMuY2hhcnQ9ZDt0aGlzLm9wdGlvbnM9Yzt0aGlzLmNyb3NzaGFpcnM9W107dGhpcy5ub3c9e3g6MCx5OjB9O3RoaXMuaXNIaWRkZW49ITA7dGhpcy5zcGxpdD1jLnNwbGl0JiYhZC5pbnZlcnRlZCYmIWQucG9sYXI7dGhpcy5zaGFyZWQ9Yy5zaGFyZWR8fHRoaXMuc3BsaXQ7dGhpcy5vdXRzaWRlPW4oYy5vdXRzaWRlLCEoIWQuc2Nyb2xsYWJsZVBpeGVsc1gmJgohZC5zY3JvbGxhYmxlUGl4ZWxzWSkpfTttLnByb3RvdHlwZS5pc1N0aWNreU9uQ29udGFjdD1mdW5jdGlvbigpe3JldHVybiEodGhpcy5mb2xsb3dQb2ludGVyfHwhdGhpcy5vcHRpb25zLnN0aWNrT25Db250YWN0fHwhdGhpcy5pbkNvbnRhY3QpfTttLnByb3RvdHlwZS5tb3ZlPWZ1bmN0aW9uKGQsbCxrLGYpe3ZhciBhPXRoaXMsbT1hLm5vdyx1PSExIT09YS5vcHRpb25zLmFuaW1hdGlvbiYmIWEuaXNIaWRkZW4mJigxPE1hdGguYWJzKGQtbS54KXx8MTxNYXRoLmFicyhsLW0ueSkpLHA9YS5mb2xsb3dQb2ludGVyfHwxPGEubGVuO0oobSx7eDp1PygyKm0ueCtkKS8zOmQseTp1PyhtLnkrbCkvMjpsLGFuY2hvclg6cD92b2lkIDA6dT8oMiptLmFuY2hvclgraykvMzprLGFuY2hvclk6cD92b2lkIDA6dT8obS5hbmNob3JZK2YpLzI6Zn0pO2EuZ2V0TGFiZWwoKS5hdHRyKG0pO2EuZHJhd1RyYWNrZXIoKTt1JiYoYy5jbGVhclRpbWVvdXQodGhpcy50b29sdGlwVGltZW91dCksdGhpcy50b29sdGlwVGltZW91dD0Kc2V0VGltZW91dChmdW5jdGlvbigpe2EmJmEubW92ZShkLGwsayxmKX0sMzIpKX07bS5wcm90b3R5cGUucmVmcmVzaD1mdW5jdGlvbihkLGwpe3ZhciBrPXRoaXMuY2hhcnQsZj10aGlzLm9wdGlvbnMsYT1kLG09e30sdT1bXSxwPWYuZm9ybWF0dGVyfHx0aGlzLmRlZmF1bHRGb3JtYXR0ZXI7bT10aGlzLnNoYXJlZDt2YXIgZz1rLnN0eWxlZE1vZGU7aWYoZi5lbmFibGVkKXtjLmNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lcik7dGhpcy5mb2xsb3dQb2ludGVyPXIoYSlbMF0uc2VyaWVzLnRvb2x0aXBPcHRpb25zLmZvbGxvd1BvaW50ZXI7dmFyIHc9dGhpcy5nZXRBbmNob3IoYSxsKTtsPXdbMF07dmFyIE09d1sxXTshbXx8YS5zZXJpZXMmJmEuc2VyaWVzLm5vU2hhcmVkVG9vbHRpcD9tPWEuZ2V0TGFiZWxDb25maWcoKTooay5wb2ludGVyLmFwcGx5SW5hY3RpdmVTdGF0ZShhKSxhLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRTdGF0ZSgiaG92ZXIiKTt1LnB1c2goYS5nZXRMYWJlbENvbmZpZygpKX0pLAptPXt4OmFbMF0uY2F0ZWdvcnkseTphWzBdLnl9LG0ucG9pbnRzPXUsYT1hWzBdKTt0aGlzLmxlbj11Lmxlbmd0aDtrPXAuY2FsbChtLHRoaXMpO3A9YS5zZXJpZXM7dGhpcy5kaXN0YW5jZT1uKHAudG9vbHRpcE9wdGlvbnMuZGlzdGFuY2UsMTYpOyExPT09az90aGlzLmhpZGUoKToodGhpcy5zcGxpdD90aGlzLnJlbmRlclNwbGl0KGsscihkKSk6KGQ9dGhpcy5nZXRMYWJlbCgpLGYuc3R5bGUud2lkdGgmJiFnfHxkLmNzcyh7d2lkdGg6dGhpcy5jaGFydC5zcGFjaW5nQm94LndpZHRoKyJweCJ9KSxkLmF0dHIoe3RleHQ6ayYmay5qb2luP2suam9pbigiIik6a30pLGQucmVtb3ZlQ2xhc3MoL2hpZ2hjaGFydHMtY29sb3ItW1xkXSsvZykuYWRkQ2xhc3MoImhpZ2hjaGFydHMtY29sb3ItIituKGEuY29sb3JJbmRleCxwLmNvbG9ySW5kZXgpKSxnfHxkLmF0dHIoe3N0cm9rZTpmLmJvcmRlckNvbG9yfHxhLmNvbG9yfHxwLmNvbG9yfHwiIzY2NjY2NiJ9KSx0aGlzLnVwZGF0ZVBvc2l0aW9uKHtwbG90WDpsLApwbG90WTpNLG5lZ2F0aXZlOmEubmVnYXRpdmUsdHRCZWxvdzphLnR0QmVsb3csaDp3WzJdfHwwfSkpLHRoaXMuaXNIaWRkZW4mJnRoaXMubGFiZWwmJnRoaXMubGFiZWwuYXR0cih7b3BhY2l0eToxfSkuc2hvdygpLHRoaXMuaXNIaWRkZW49ITEpO3QodGhpcywicmVmcmVzaCIpfX07bS5wcm90b3R5cGUucmVuZGVyU3BsaXQ9ZnVuY3Rpb24oZCxjKXtmdW5jdGlvbiBrKGIsYSxlLGgsZil7dm9pZCAwPT09ZiYmKGY9ITApO2U/KGE9Vj8wOkQsYj15KGItaC8yLHEubGVmdCxxLnJpZ2h0LWgpKTooYS09RyxiPWY/Yi1oLXo6Yit6LGI9eShiLGY/YjpxLmxlZnQscS5yaWdodCkpO3JldHVybnt4OmIseTphfX12YXIgZj10aGlzLGE9Zi5jaGFydCxsPWYuY2hhcnQsbT1sLnBsb3RIZWlnaHQscD1sLnBsb3RMZWZ0LHI9bC5wbG90VG9wLHc9bC5wb2ludGVyLE09bC5yZW5kZXJlcixGPWwuc2Nyb2xsYWJsZVBpeGVsc1ksdD12b2lkIDA9PT1GPzA6RjtGPWwuc2Nyb2xsaW5nQ29udGFpbmVyO0Y9CnZvaWQgMD09PUY/e3Njcm9sbExlZnQ6MCxzY3JvbGxUb3A6MH06Rjt2YXIgZT1GLnNjcm9sbExlZnQsYj1GLnNjcm9sbFRvcCxoPWwuc3R5bGVkTW9kZSx6PWYuZGlzdGFuY2UseD1mLm9wdGlvbnMsQz1mLm9wdGlvbnMucG9zaXRpb25lcixxPXtsZWZ0OmUscmlnaHQ6ZStsLmNoYXJ0V2lkdGgsdG9wOmIsYm90dG9tOmIrbC5jaGFydEhlaWdodH0sST1mLmdldExhYmVsKCksVj0hKCFhLnhBeGlzWzBdfHwhYS54QXhpc1swXS5vcHBvc2l0ZSksRz1yK2IsSz0wLEQ9bS10O3YoZCkmJihkPVshMSxkXSk7ZD1kLnNsaWNlKDAsYy5sZW5ndGgrMSkucmVkdWNlKGZ1bmN0aW9uKGEsZSxkKXtpZighMSE9PWUmJiIiIT09ZSl7ZD1jW2QtMV18fHtpc0hlYWRlcjohMCxwbG90WDpjWzBdLnBsb3RYLHBsb3RZOm0sc2VyaWVzOnt9fTt2YXIgbD1kLmlzSGVhZGVyLHU9bD9mOmQuc2VyaWVzLHc9dS50dCxnPWQuaXNIZWFkZXI7dmFyIEE9ZC5zZXJpZXM7dmFyIEU9ImhpZ2hjaGFydHMtY29sb3ItIisKbihkLmNvbG9ySW5kZXgsQS5jb2xvckluZGV4LCJub25lIik7d3x8KHc9e3BhZGRpbmc6eC5wYWRkaW5nLHI6eC5ib3JkZXJSYWRpdXN9LGh8fCh3LmZpbGw9eC5iYWNrZ3JvdW5kQ29sb3Isd1sic3Ryb2tlLXdpZHRoIl09eC5ib3JkZXJXaWR0aCksdz1NLmxhYmVsKCIiLDAsMCx4W2c/ImhlYWRlclNoYXBlIjoic2hhcGUiXXx8ImNhbGxvdXQiLHZvaWQgMCx2b2lkIDAseC51c2VIVE1MKS5hZGRDbGFzcygoZz8iaGlnaGNoYXJ0cy10b29sdGlwLWhlYWRlciAiOiIiKSsiaGlnaGNoYXJ0cy10b29sdGlwLWJveCAiK0UpLmF0dHIodykuYWRkKEkpKTt3LmlzQWN0aXZlPSEwO3cuYXR0cih7dGV4dDplfSk7aHx8dy5jc3MoeC5zdHlsZSkuc2hhZG93KHguc2hhZG93KS5hdHRyKHtzdHJva2U6eC5ib3JkZXJDb2xvcnx8ZC5jb2xvcnx8QS5jb2xvcnx8IiMzMzMzMzMifSk7ZT11LnR0PXc7Zz1lLmdldEJCb3goKTt1PWcud2lkdGgrZS5zdHJva2VXaWR0aCgpO2wmJihLPWcuaGVpZ2h0LEQrPQpLLFYmJihHLT1LKSk7QT1kLnBsb3RYO0E9dm9pZCAwPT09QT8wOkE7RT1kLnBsb3RZO0U9dm9pZCAwPT09RT8wOkU7dmFyIEY9ZC5zZXJpZXM7aWYoZC5pc0hlYWRlcil7QT1wK0E7dmFyIFM9cittLzJ9ZWxzZSB3PUYueEF4aXMsRj1GLnlBeGlzLEE9dy5wb3MreShBLC16LHcubGVuK3opLEYucG9zK0U+PWIrciYmRi5wb3MrRTw9YityK20tdCYmKFM9Ri5wb3MrRSk7QT15KEEscS5sZWZ0LXoscS5yaWdodCt6KTsibnVtYmVyIj09PXR5cGVvZiBTPyhnPWcuaGVpZ2h0KzEsRT1DP0MuY2FsbChmLHUsZyxkKTprKEEsUyxsLHUpLGEucHVzaCh7YWxpZ246Qz8wOnZvaWQgMCxhbmNob3JYOkEsYW5jaG9yWTpTLGJveFdpZHRoOnUscG9pbnQ6ZCxyYW5rOm4oRS5yYW5rLGw/MTowKSxzaXplOmcsdGFyZ2V0OkUueSx0dDplLHg6RS54fSkpOmUuaXNBY3RpdmU9ITF9cmV0dXJuIGF9LFtdKTshQyYmZC5zb21lKGZ1bmN0aW9uKGIpe3JldHVybiBiLng8cS5sZWZ0fSkmJihkPWQubWFwKGZ1bmN0aW9uKGIpe3ZhciBhPQprKGIuYW5jaG9yWCxiLmFuY2hvclksYi5wb2ludC5pc0hlYWRlcixiLmJveFdpZHRoLCExKTtyZXR1cm4gSihiLHt0YXJnZXQ6YS55LHg6YS54fSl9KSk7Zi5jbGVhblNwbGl0KCk7Zy5kaXN0cmlidXRlKGQsRCk7ZC5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBhPWIucG9zO2IudHQuYXR0cih7dmlzaWJpbGl0eToidW5kZWZpbmVkIj09PXR5cGVvZiBhPyJoaWRkZW4iOiJpbmhlcml0Iix4OmIueCx5OmErRyxhbmNob3JYOmIuYW5jaG9yWCxhbmNob3JZOmIuYW5jaG9yWX0pfSk7ZD1mLmNvbnRhaW5lcjthPWYucmVuZGVyZXI7Zi5vdXRzaWRlJiZkJiZhJiYobD1JLmdldEJCb3goKSxhLnNldFNpemUobC53aWR0aCtsLngsbC5oZWlnaHQrbC55LCExKSx3PXcuZ2V0Q2hhcnRQb3NpdGlvbigpLGQuc3R5bGUubGVmdD13LmxlZnQrInB4IixkLnN0eWxlLnRvcD13LnRvcCsicHgiKX07bS5wcm90b3R5cGUuZHJhd1RyYWNrZXI9ZnVuY3Rpb24oKXtpZih0aGlzLmZvbGxvd1BvaW50ZXJ8fCF0aGlzLm9wdGlvbnMuc3RpY2tPbkNvbnRhY3QpdGhpcy50cmFja2VyJiYKdGhpcy50cmFja2VyLmRlc3Ryb3koKTtlbHNle3ZhciBkPXRoaXMuY2hhcnQsYz10aGlzLmxhYmVsLGs9ZC5ob3ZlclBvaW50O2lmKGMmJmspe3ZhciBmPXt4OjAseTowLHdpZHRoOjAsaGVpZ2h0OjB9O2s9dGhpcy5nZXRBbmNob3Ioayk7dmFyIGE9Yy5nZXRCQm94KCk7a1swXSs9ZC5wbG90TGVmdC1jLnRyYW5zbGF0ZVg7a1sxXSs9ZC5wbG90VG9wLWMudHJhbnNsYXRlWTtmLng9TWF0aC5taW4oMCxrWzBdKTtmLnk9TWF0aC5taW4oMCxrWzFdKTtmLndpZHRoPTA+a1swXT9NYXRoLm1heChNYXRoLmFicyhrWzBdKSxhLndpZHRoLWtbMF0pOk1hdGgubWF4KE1hdGguYWJzKGtbMF0pLGEud2lkdGgpO2YuaGVpZ2h0PTA+a1sxXT9NYXRoLm1heChNYXRoLmFicyhrWzFdKSxhLmhlaWdodC1NYXRoLmFicyhrWzFdKSk6TWF0aC5tYXgoTWF0aC5hYnMoa1sxXSksYS5oZWlnaHQpO3RoaXMudHJhY2tlcj90aGlzLnRyYWNrZXIuYXR0cihmKToodGhpcy50cmFja2VyPWMucmVuZGVyZXIucmVjdChmKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy10cmFja2VyIikuYWRkKGMpLApkLnN0eWxlZE1vZGV8fHRoaXMudHJhY2tlci5hdHRyKHtmaWxsOiJyZ2JhKDAsMCwwLDApIn0pKX19fTttLnByb3RvdHlwZS5zdHlsZWRNb2RlRm9ybWF0PWZ1bmN0aW9uKGQpe3JldHVybiBkLnJlcGxhY2UoJ3N0eWxlPSJmb250LXNpemU6IDEwcHgiJywnY2xhc3M9ImhpZ2hjaGFydHMtaGVhZGVyIicpLnJlcGxhY2UoL3N0eWxlPSJjb2xvcjp7KHBvaW50fHNlcmllcylcLmNvbG9yfSIvZywnY2xhc3M9ImhpZ2hjaGFydHMtY29sb3IteyQxLmNvbG9ySW5kZXh9IicpfTttLnByb3RvdHlwZS50b29sdGlwRm9vdGVySGVhZGVyRm9ybWF0dGVyPWZ1bmN0aW9uKGQsYyl7dmFyIGs9Yz8iZm9vdGVyIjoiaGVhZGVyIixmPWQuc2VyaWVzLGE9Zi50b29sdGlwT3B0aW9ucyxsPWEueERhdGVGb3JtYXQsbT1mLnhBeGlzLHA9bSYmImRhdGV0aW1lIj09PW0ub3B0aW9ucy50eXBlJiZMKGQua2V5KSxuPWFbaysiRm9ybWF0Il07Yz17aXNGb290ZXI6YyxsYWJlbENvbmZpZzpkfTt0KHRoaXMsImhlYWRlckZvcm1hdHRlciIsCmMsZnVuY3Rpb24oYyl7cCYmIWwmJihsPXRoaXMuZ2V0WERhdGVGb3JtYXQoZCxhLG0pKTtwJiZsJiYoZC5wb2ludCYmZC5wb2ludC50b29sdGlwRGF0ZUtleXN8fFsia2V5Il0pLmZvckVhY2goZnVuY3Rpb24oYSl7bj1uLnJlcGxhY2UoIntwb2ludC4iK2ErIn0iLCJ7cG9pbnQuIithKyI6IitsKyJ9Iil9KTtmLmNoYXJ0LnN0eWxlZE1vZGUmJihuPXRoaXMuc3R5bGVkTW9kZUZvcm1hdChuKSk7Yy50ZXh0PUcobix7cG9pbnQ6ZCxzZXJpZXM6Zn0sdGhpcy5jaGFydCl9KTtyZXR1cm4gYy50ZXh0fTttLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZCl7dGhpcy5kZXN0cm95KCk7SyghMCx0aGlzLmNoYXJ0Lm9wdGlvbnMudG9vbHRpcC51c2VyT3B0aW9ucyxkKTt0aGlzLmluaXQodGhpcy5jaGFydCxLKCEwLHRoaXMub3B0aW9ucyxkKSl9O20ucHJvdG90eXBlLnVwZGF0ZVBvc2l0aW9uPWZ1bmN0aW9uKGQpe3ZhciBjPXRoaXMuY2hhcnQsaz1jLnBvaW50ZXIsZj10aGlzLmdldExhYmVsKCksCmE9ZC5wbG90WCtjLnBsb3RMZWZ0LG09ZC5wbG90WStjLnBsb3RUb3A7az1rLmdldENoYXJ0UG9zaXRpb24oKTtkPSh0aGlzLm9wdGlvbnMucG9zaXRpb25lcnx8dGhpcy5nZXRQb3NpdGlvbikuY2FsbCh0aGlzLGYud2lkdGgsZi5oZWlnaHQsZCk7aWYodGhpcy5vdXRzaWRlKXt2YXIgcD0odGhpcy5vcHRpb25zLmJvcmRlcldpZHRofHwwKSsyKnRoaXMuZGlzdGFuY2U7dGhpcy5yZW5kZXJlci5zZXRTaXplKGYud2lkdGgrcCxmLmhlaWdodCtwLCExKTtpZihjPWMuY29udGFpbmVyU2NhbGluZylCKHRoaXMuY29udGFpbmVyLHt0cmFuc2Zvcm06InNjYWxlKCIrYy5zY2FsZVgrIiwgIitjLnNjYWxlWSsiKSJ9KSxhKj1jLnNjYWxlWCxtKj1jLnNjYWxlWTthKz1rLmxlZnQtZC54O20rPWsudG9wLWQueX10aGlzLm1vdmUoTWF0aC5yb3VuZChkLngpLE1hdGgucm91bmQoZC55fHwwKSxhLG0pfTtyZXR1cm4gbX0oKTtnLlRvb2x0aXA9cDtyZXR1cm4gZy5Ub29sdGlwfSk7TyhxLCJwYXJ0cy9Qb2ludGVyLmpzIiwKW3FbInBhcnRzL0NvbG9yLmpzIl0scVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL1Rvb2x0aXAuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEseSl7dmFyIEI9Zy5wYXJzZSxIPWMuY2hhcnRzLEQ9Yy5ub29wLEo9eS5hZGRFdmVudCx0PXkuYXR0cixHPXkuY3NzLEw9eS5kZWZpbmVkLHY9eS5leHRlbmQsSz15LmZpbmQsbj15LmZpcmVFdmVudCxyPXkuaXNOdW1iZXIsQz15LmlzT2JqZWN0LEk9eS5vYmplY3RFYWNoLHA9eS5vZmZzZXQsbT15LnBpY2ssZD15LnNwbGF0OyIiO2c9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGQsZil7dGhpcy5sYXN0VmFsaWRUb3VjaD17fTt0aGlzLnBpbmNoRG93bj1bXTt0aGlzLnJ1bkNoYXJ0Q2xpY2s9ITE7dGhpcy5jaGFydD1kO3RoaXMuaGFzRHJhZ2dlZD0hMTt0aGlzLm9wdGlvbnM9Zjt0aGlzLnVuYmluZENvbnRhaW5lck1vdXNlTGVhdmU9ZnVuY3Rpb24oKXt9O3RoaXMuaW5pdChkLGYpfWwucHJvdG90eXBlLmFwcGx5SW5hY3RpdmVTdGF0ZT0KZnVuY3Rpb24oZCl7dmFyIGY9W10sYTsoZHx8W10pLmZvckVhY2goZnVuY3Rpb24oZCl7YT1kLnNlcmllcztmLnB1c2goYSk7YS5saW5rZWRQYXJlbnQmJmYucHVzaChhLmxpbmtlZFBhcmVudCk7YS5saW5rZWRTZXJpZXMmJihmPWYuY29uY2F0KGEubGlua2VkU2VyaWVzKSk7YS5uYXZpZ2F0b3JTZXJpZXMmJmYucHVzaChhLm5hdmlnYXRvclNlcmllcyl9KTt0aGlzLmNoYXJ0LnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpey0xPT09Zi5pbmRleE9mKGEpP2Euc2V0U3RhdGUoImluYWN0aXZlIiwhMCk6YS5vcHRpb25zLmluYWN0aXZlT3RoZXJQb2ludHMmJmEuc2V0QWxsUG9pbnRzVG9TdGF0ZSgiaW5hY3RpdmUiKX0pfTtsLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGQ9dGhpczsidW5kZWZpbmVkIiE9PXR5cGVvZiBkLnVuRG9jTW91c2VNb3ZlJiZkLnVuRG9jTW91c2VNb3ZlKCk7dGhpcy51bmJpbmRDb250YWluZXJNb3VzZUxlYXZlKCk7Yy5jaGFydENvdW50fHwoYy51bmJpbmREb2N1bWVudE1vdXNlVXAmJgooYy51bmJpbmREb2N1bWVudE1vdXNlVXA9Yy51bmJpbmREb2N1bWVudE1vdXNlVXAoKSksYy51bmJpbmREb2N1bWVudFRvdWNoRW5kJiYoYy51bmJpbmREb2N1bWVudFRvdWNoRW5kPWMudW5iaW5kRG9jdW1lbnRUb3VjaEVuZCgpKSk7Y2xlYXJJbnRlcnZhbChkLnRvb2x0aXBUaW1lb3V0KTtJKGQsZnVuY3Rpb24oZixhKXtkW2FdPXZvaWQgMH0pfTtsLnByb3RvdHlwZS5kcmFnPWZ1bmN0aW9uKGQpe3ZhciBmPXRoaXMuY2hhcnQsYT1mLm9wdGlvbnMuY2hhcnQsYz1kLmNoYXJ0WCxrPWQuY2hhcnRZLGw9dGhpcy56b29tSG9yLG09dGhpcy56b29tVmVydCxwPWYucGxvdExlZnQsbj1mLnBsb3RUb3AsZz1mLnBsb3RXaWR0aCxyPWYucGxvdEhlaWdodCxlPXRoaXMuc2VsZWN0aW9uTWFya2VyLGI9dGhpcy5tb3VzZURvd25YfHwwLGg9dGhpcy5tb3VzZURvd25ZfHwwLHo9QyhhLnBhbm5pbmcpP2EucGFubmluZyYmYS5wYW5uaW5nLmVuYWJsZWQ6YS5wYW5uaW5nLHg9YS5wYW5LZXkmJmRbYS5wYW5LZXkrCiJLZXkiXTtpZighZXx8IWUudG91Y2gpaWYoYzxwP2M9cDpjPnArZyYmKGM9cCtnKSxrPG4/az1uOms+bityJiYoaz1uK3IpLHRoaXMuaGFzRHJhZ2dlZD1NYXRoLnNxcnQoTWF0aC5wb3coYi1jLDIpK01hdGgucG93KGgtaywyKSksMTA8dGhpcy5oYXNEcmFnZ2VkKXt2YXIgdD1mLmlzSW5zaWRlUGxvdChiLXAsaC1uKTtmLmhhc0NhcnRlc2lhblNlcmllcyYmKHRoaXMuem9vbVh8fHRoaXMuem9vbVkpJiZ0JiYheCYmIWUmJih0aGlzLnNlbGVjdGlvbk1hcmtlcj1lPWYucmVuZGVyZXIucmVjdChwLG4sbD8xOmcsbT8xOnIsMCkuYXR0cih7ImNsYXNzIjoiaGlnaGNoYXJ0cy1zZWxlY3Rpb24tbWFya2VyIix6SW5kZXg6N30pLmFkZCgpLGYuc3R5bGVkTW9kZXx8ZS5hdHRyKHtmaWxsOmEuc2VsZWN0aW9uTWFya2VyRmlsbHx8QigiIzMzNWNhZCIpLnNldE9wYWNpdHkoLjI1KS5nZXQoKX0pKTtlJiZsJiYoYy09YixlLmF0dHIoe3dpZHRoOk1hdGguYWJzKGMpLHg6KDA8Yz8wOmMpK2J9KSk7CmUmJm0mJihjPWstaCxlLmF0dHIoe2hlaWdodDpNYXRoLmFicyhjKSx5OigwPGM/MDpjKStofSkpO3QmJiFlJiZ6JiZmLnBhbihkLGEucGFubmluZyl9fTtsLnByb3RvdHlwZS5kcmFnU3RhcnQ9ZnVuY3Rpb24oZCl7dmFyIGY9dGhpcy5jaGFydDtmLm1vdXNlSXNEb3duPWQudHlwZTtmLmNhbmNlbENsaWNrPSExO2YubW91c2VEb3duWD10aGlzLm1vdXNlRG93blg9ZC5jaGFydFg7Zi5tb3VzZURvd25ZPXRoaXMubW91c2VEb3duWT1kLmNoYXJ0WX07bC5wcm90b3R5cGUuZHJvcD1mdW5jdGlvbihkKXt2YXIgZj10aGlzLGE9dGhpcy5jaGFydCxjPXRoaXMuaGFzUGluY2hlZDtpZih0aGlzLnNlbGVjdGlvbk1hcmtlcil7dmFyIGs9e29yaWdpbmFsRXZlbnQ6ZCx4QXhpczpbXSx5QXhpczpbXX0sbD10aGlzLnNlbGVjdGlvbk1hcmtlcixtPWwuYXR0cj9sLmF0dHIoIngiKTpsLngscD1sLmF0dHI/bC5hdHRyKCJ5Iik6bC55LGc9bC5hdHRyP2wuYXR0cigid2lkdGgiKTpsLndpZHRoLEY9bC5hdHRyPwpsLmF0dHIoImhlaWdodCIpOmwuaGVpZ2h0LHQ7aWYodGhpcy5oYXNEcmFnZ2VkfHxjKWEuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKGEuem9vbUVuYWJsZWQmJkwoYS5taW4pJiYoY3x8Zlt7eEF4aXM6Inpvb21YIix5QXhpczoiem9vbVkifVthLmNvbGxdXSkmJnIobSkmJnIocCkpe3ZhciBiPWEuaG9yaXosZT0idG91Y2hlbmQiPT09ZC50eXBlP2EubWluUGl4ZWxQYWRkaW5nOjAsbD1hLnRvVmFsdWUoKGI/bTpwKStlKTtiPWEudG9WYWx1ZSgoYj9tK2c6cCtGKS1lKTtrW2EuY29sbF0ucHVzaCh7YXhpczphLG1pbjpNYXRoLm1pbihsLGIpLG1heDpNYXRoLm1heChsLGIpfSk7dD0hMH19KSx0JiZuKGEsInNlbGVjdGlvbiIsayxmdW5jdGlvbihlKXthLnpvb20odihlLGM/e2FuaW1hdGlvbjohMX06bnVsbCkpfSk7cihhLmluZGV4KSYmKHRoaXMuc2VsZWN0aW9uTWFya2VyPXRoaXMuc2VsZWN0aW9uTWFya2VyLmRlc3Ryb3koKSk7YyYmdGhpcy5zY2FsZUdyb3VwcygpfWEmJnIoYS5pbmRleCkmJgooRyhhLmNvbnRhaW5lcix7Y3Vyc29yOmEuX2N1cnNvcn0pLGEuY2FuY2VsQ2xpY2s9MTA8dGhpcy5oYXNEcmFnZ2VkLGEubW91c2VJc0Rvd249dGhpcy5oYXNEcmFnZ2VkPXRoaXMuaGFzUGluY2hlZD0hMSx0aGlzLnBpbmNoRG93bj1bXSl9O2wucHJvdG90eXBlLmZpbmROZWFyZXN0S0RQb2ludD1mdW5jdGlvbihkLGYsYSl7dmFyIGM9dGhpcy5jaGFydCxrPWMuaG92ZXJQb2ludDtjPWMudG9vbHRpcDtpZihrJiZjJiZjLmlzU3RpY2t5T25Db250YWN0KCkpcmV0dXJuIGs7dmFyIGw7ZC5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBjPSEoZC5ub1NoYXJlZFRvb2x0aXAmJmYpJiYwPmQub3B0aW9ucy5maW5kTmVhcmVzdFBvaW50QnkuaW5kZXhPZigieSIpO2Q9ZC5zZWFyY2hQb2ludChhLGMpO2lmKChjPUMoZCwhMCkpJiYhKGM9IUMobCwhMCkpKXtjPWwuZGlzdFgtZC5kaXN0WDt2YXIgaz1sLmRpc3QtZC5kaXN0LG09KGQuc2VyaWVzLmdyb3VwJiZkLnNlcmllcy5ncm91cC56SW5kZXgpLQoobC5zZXJpZXMuZ3JvdXAmJmwuc2VyaWVzLmdyb3VwLnpJbmRleCk7Yz0wPCgwIT09YyYmZj9jOjAhPT1rP2s6MCE9PW0/bTpsLnNlcmllcy5pbmRleD5kLnNlcmllcy5pbmRleD8tMToxKX1jJiYobD1kKX0pO3JldHVybiBsfTtsLnByb3RvdHlwZS5nZXRDaGFydENvb3JkaW5hdGVzRnJvbVBvaW50PWZ1bmN0aW9uKGQsZil7dmFyIGE9ZC5zZXJpZXMsYz1hLnhBeGlzO2E9YS55QXhpczt2YXIgaz1tKGQuY2xpZW50WCxkLnBsb3RYKSxsPWQuc2hhcGVBcmdzO2lmKGMmJmEpcmV0dXJuIGY/e2NoYXJ0WDpjLmxlbitjLnBvcy1rLGNoYXJ0WTphLmxlbithLnBvcy1kLnBsb3RZfTp7Y2hhcnRYOmsrYy5wb3MsY2hhcnRZOmQucGxvdFkrYS5wb3N9O2lmKGwmJmwueCYmbC55KXJldHVybntjaGFydFg6bC54LGNoYXJ0WTpsLnl9fTtsLnByb3RvdHlwZS5nZXRDaGFydFBvc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhcnRQb3NpdGlvbnx8KHRoaXMuY2hhcnRQb3NpdGlvbj1wKHRoaXMuY2hhcnQuY29udGFpbmVyKSl9OwpsLnByb3RvdHlwZS5nZXRDb29yZGluYXRlcz1mdW5jdGlvbihkKXt2YXIgZj17eEF4aXM6W10seUF4aXM6W119O3RoaXMuY2hhcnQuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2ZbYS5pc1hBeGlzPyJ4QXhpcyI6InlBeGlzIl0ucHVzaCh7YXhpczphLHZhbHVlOmEudG9WYWx1ZShkW2EuaG9yaXo/ImNoYXJ0WCI6ImNoYXJ0WSJdKX0pfSk7cmV0dXJuIGZ9O2wucHJvdG90eXBlLmdldEhvdmVyRGF0YT1mdW5jdGlvbihkLGYsYSxjLGwscCl7dmFyIGssdT1bXTtjPSEoIWN8fCFkKTt2YXIgZz1mJiYhZi5zdGlja3lUcmFja2luZyxBPXtjaGFydFg6cD9wLmNoYXJ0WDp2b2lkIDAsY2hhcnRZOnA/cC5jaGFydFk6dm9pZCAwLHNoYXJlZDpsfTtuKHRoaXMsImJlZm9yZUdldEhvdmVyRGF0YSIsQSk7Zz1nP1tmXTphLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gQS5maWx0ZXI/QS5maWx0ZXIoYSk6YS52aXNpYmxlJiYhKCFsJiZhLmRpcmVjdFRvdWNoKSYmbShhLm9wdGlvbnMuZW5hYmxlTW91c2VUcmFja2luZywKITApJiZhLnN0aWNreVRyYWNraW5nfSk7Zj0oaz1jfHwhcD9kOnRoaXMuZmluZE5lYXJlc3RLRFBvaW50KGcsbCxwKSkmJmsuc2VyaWVzO2smJihsJiYhZi5ub1NoYXJlZFRvb2x0aXA/KGc9YS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIEEuZmlsdGVyP0EuZmlsdGVyKGEpOmEudmlzaWJsZSYmISghbCYmYS5kaXJlY3RUb3VjaCkmJm0oYS5vcHRpb25zLmVuYWJsZU1vdXNlVHJhY2tpbmcsITApJiYhYS5ub1NoYXJlZFRvb2x0aXB9KSxnLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGU9SyhhLnBvaW50cyxmdW5jdGlvbihiKXtyZXR1cm4gYi54PT09ay54JiYhYi5pc051bGx9KTtDKGUpJiYoYS5jaGFydC5pc0Jvb3N0aW5nJiYoZT1hLmdldFBvaW50KGUpKSx1LnB1c2goZSkpfSkpOnUucHVzaChrKSk7QT17aG92ZXJQb2ludDprfTtuKHRoaXMsImFmdGVyR2V0SG92ZXJEYXRhIixBKTtyZXR1cm57aG92ZXJQb2ludDpBLmhvdmVyUG9pbnQsaG92ZXJTZXJpZXM6Zixob3ZlclBvaW50czp1fX07CmwucHJvdG90eXBlLmdldFBvaW50RnJvbUV2ZW50PWZ1bmN0aW9uKGQpe2Q9ZC50YXJnZXQ7Zm9yKHZhciBmO2QmJiFmOylmPWQucG9pbnQsZD1kLnBhcmVudE5vZGU7cmV0dXJuIGZ9O2wucHJvdG90eXBlLm9uVHJhY2tlck1vdXNlT3V0PWZ1bmN0aW9uKGQpe2Q9ZC5yZWxhdGVkVGFyZ2V0fHxkLnRvRWxlbWVudDt2YXIgZj10aGlzLmNoYXJ0LmhvdmVyU2VyaWVzO3RoaXMuaXNEaXJlY3RUb3VjaD0hMTtpZighKCFmfHwhZHx8Zi5zdGlja3lUcmFja2luZ3x8dGhpcy5pbkNsYXNzKGQsImhpZ2hjaGFydHMtdG9vbHRpcCIpfHx0aGlzLmluQ2xhc3MoZCwiaGlnaGNoYXJ0cy1zZXJpZXMtIitmLmluZGV4KSYmdGhpcy5pbkNsYXNzKGQsImhpZ2hjaGFydHMtdHJhY2tlciIpKSlmLm9uTW91c2VPdXQoKX07bC5wcm90b3R5cGUuaW5DbGFzcz1mdW5jdGlvbihkLGYpe2Zvcih2YXIgYTtkOyl7aWYoYT10KGQsImNsYXNzIikpe2lmKC0xIT09YS5pbmRleE9mKGYpKXJldHVybiEwO2lmKC0xIT09CmEuaW5kZXhPZigiaGlnaGNoYXJ0cy1jb250YWluZXIiKSlyZXR1cm4hMX1kPWQucGFyZW50Tm9kZX19O2wucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZCxmKXt0aGlzLm9wdGlvbnM9Zjt0aGlzLmNoYXJ0PWQ7dGhpcy5ydW5DaGFydENsaWNrPWYuY2hhcnQuZXZlbnRzJiYhIWYuY2hhcnQuZXZlbnRzLmNsaWNrO3RoaXMucGluY2hEb3duPVtdO3RoaXMubGFzdFZhbGlkVG91Y2g9e307cSYmKGQudG9vbHRpcD1uZXcgcShkLGYudG9vbHRpcCksdGhpcy5mb2xsb3dUb3VjaE1vdmU9bShmLnRvb2x0aXAuZm9sbG93VG91Y2hNb3ZlLCEwKSk7dGhpcy5zZXRET01FdmVudHMoKX07bC5wcm90b3R5cGUubm9ybWFsaXplPWZ1bmN0aW9uKGQsZil7dmFyIGE9ZC50b3VjaGVzLGM9YT9hLmxlbmd0aD9hLml0ZW0oMCk6bShhLmNoYW5nZWRUb3VjaGVzLGQuY2hhbmdlZFRvdWNoZXMpWzBdOmQ7Znx8KGY9dGhpcy5nZXRDaGFydFBvc2l0aW9uKCkpO2E9Yy5wYWdlWC1mLmxlZnQ7Zj1jLnBhZ2VZLQpmLnRvcDtpZihjPXRoaXMuY2hhcnQuY29udGFpbmVyU2NhbGluZylhLz1jLnNjYWxlWCxmLz1jLnNjYWxlWTtyZXR1cm4gdihkLHtjaGFydFg6TWF0aC5yb3VuZChhKSxjaGFydFk6TWF0aC5yb3VuZChmKX0pfTtsLnByb3RvdHlwZS5vbkNvbnRhaW5lckNsaWNrPWZ1bmN0aW9uKGQpe3ZhciBmPXRoaXMuY2hhcnQsYT1mLmhvdmVyUG9pbnQ7ZD10aGlzLm5vcm1hbGl6ZShkKTt2YXIgYz1mLnBsb3RMZWZ0LGs9Zi5wbG90VG9wO2YuY2FuY2VsQ2xpY2t8fChhJiZ0aGlzLmluQ2xhc3MoZC50YXJnZXQsImhpZ2hjaGFydHMtdHJhY2tlciIpPyhuKGEuc2VyaWVzLCJjbGljayIsdihkLHtwb2ludDphfSkpLGYuaG92ZXJQb2ludCYmYS5maXJlUG9pbnRFdmVudCgiY2xpY2siLGQpKToodihkLHRoaXMuZ2V0Q29vcmRpbmF0ZXMoZCkpLGYuaXNJbnNpZGVQbG90KGQuY2hhcnRYLWMsZC5jaGFydFktaykmJm4oZiwiY2xpY2siLGQpKSl9O2wucHJvdG90eXBlLm9uQ29udGFpbmVyTW91c2VEb3duPQpmdW5jdGlvbihkKXtkPXRoaXMubm9ybWFsaXplKGQpO2lmKGMuaXNGaXJlZm94JiYwIT09ZC5idXR0b24pdGhpcy5vbkNvbnRhaW5lck1vdXNlTW92ZShkKTtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBkLmJ1dHRvbnx8MT09PSgoZC5idXR0b25zfHxkLmJ1dHRvbikmMSkpdGhpcy56b29tT3B0aW9uKGQpLHRoaXMuZHJhZ1N0YXJ0KGQpfTtsLnByb3RvdHlwZS5vbkNvbnRhaW5lck1vdXNlTGVhdmU9ZnVuY3Rpb24oZCl7dmFyIGY9SFttKGMuaG92ZXJDaGFydEluZGV4LC0xKV0sYT10aGlzLmNoYXJ0LnRvb2x0aXA7ZD10aGlzLm5vcm1hbGl6ZShkKTtmJiYoZC5yZWxhdGVkVGFyZ2V0fHxkLnRvRWxlbWVudCkmJihmLnBvaW50ZXIucmVzZXQoKSxmLnBvaW50ZXIuY2hhcnRQb3NpdGlvbj12b2lkIDApO2EmJiFhLmlzSGlkZGVuJiZ0aGlzLnJlc2V0KCl9O2wucHJvdG90eXBlLm9uQ29udGFpbmVyTW91c2VNb3ZlPWZ1bmN0aW9uKGQpe3ZhciBmPXRoaXMuY2hhcnQ7ZD10aGlzLm5vcm1hbGl6ZShkKTsKdGhpcy5zZXRIb3ZlckNoYXJ0SW5kZXgoKTtkLnByZXZlbnREZWZhdWx0fHwoZC5yZXR1cm5WYWx1ZT0hMSk7Im1vdXNlZG93biI9PT1mLm1vdXNlSXNEb3duJiZ0aGlzLmRyYWcoZCk7Zi5vcGVuTWVudXx8IXRoaXMuaW5DbGFzcyhkLnRhcmdldCwiaGlnaGNoYXJ0cy10cmFja2VyIikmJiFmLmlzSW5zaWRlUGxvdChkLmNoYXJ0WC1mLnBsb3RMZWZ0LGQuY2hhcnRZLWYucGxvdFRvcCl8fHRoaXMucnVuUG9pbnRBY3Rpb25zKGQpfTtsLnByb3RvdHlwZS5vbkRvY3VtZW50VG91Y2hFbmQ9ZnVuY3Rpb24oZCl7SFtjLmhvdmVyQ2hhcnRJbmRleF0mJkhbYy5ob3ZlckNoYXJ0SW5kZXhdLnBvaW50ZXIuZHJvcChkKX07bC5wcm90b3R5cGUub25Db250YWluZXJUb3VjaE1vdmU9ZnVuY3Rpb24oZCl7dGhpcy50b3VjaChkKX07bC5wcm90b3R5cGUub25Db250YWluZXJUb3VjaFN0YXJ0PWZ1bmN0aW9uKGQpe3RoaXMuem9vbU9wdGlvbihkKTt0aGlzLnRvdWNoKGQsITApfTtsLnByb3RvdHlwZS5vbkRvY3VtZW50TW91c2VNb3ZlPQpmdW5jdGlvbihkKXt2YXIgZj10aGlzLmNoYXJ0LGE9dGhpcy5jaGFydFBvc2l0aW9uO2Q9dGhpcy5ub3JtYWxpemUoZCxhKTt2YXIgYz1mLnRvb2x0aXA7IWF8fGMmJmMuaXNTdGlja3lPbkNvbnRhY3QoKXx8Zi5pc0luc2lkZVBsb3QoZC5jaGFydFgtZi5wbG90TGVmdCxkLmNoYXJ0WS1mLnBsb3RUb3ApfHx0aGlzLmluQ2xhc3MoZC50YXJnZXQsImhpZ2hjaGFydHMtdHJhY2tlciIpfHx0aGlzLnJlc2V0KCl9O2wucHJvdG90eXBlLm9uRG9jdW1lbnRNb3VzZVVwPWZ1bmN0aW9uKGQpe3ZhciBmPUhbbShjLmhvdmVyQ2hhcnRJbmRleCwtMSldO2YmJmYucG9pbnRlci5kcm9wKGQpfTtsLnByb3RvdHlwZS5waW5jaD1mdW5jdGlvbihkKXt2YXIgZj10aGlzLGE9Zi5jaGFydCxjPWYucGluY2hEb3duLGs9ZC50b3VjaGVzfHxbXSxsPWsubGVuZ3RoLHA9Zi5sYXN0VmFsaWRUb3VjaCxuPWYuaGFzWm9vbSxnPWYuc2VsZWN0aW9uTWFya2VyLHI9e30sdD0xPT09bCYmKGYuaW5DbGFzcyhkLnRhcmdldCwKImhpZ2hjaGFydHMtdHJhY2tlciIpJiZhLnJ1blRyYWNrZXJDbGlja3x8Zi5ydW5DaGFydENsaWNrKSxlPXt9OzE8bCYmKGYuaW5pdGlhdGVkPSEwKTtuJiZmLmluaXRpYXRlZCYmIXQmJmQucHJldmVudERlZmF1bHQoKTtbXS5tYXAuY2FsbChrLGZ1bmN0aW9uKGIpe3JldHVybiBmLm5vcm1hbGl6ZShiKX0pOyJ0b3VjaHN0YXJ0Ij09PWQudHlwZT8oW10uZm9yRWFjaC5jYWxsKGssZnVuY3Rpb24oYixhKXtjW2FdPXtjaGFydFg6Yi5jaGFydFgsY2hhcnRZOmIuY2hhcnRZfX0pLHAueD1bY1swXS5jaGFydFgsY1sxXSYmY1sxXS5jaGFydFhdLHAueT1bY1swXS5jaGFydFksY1sxXSYmY1sxXS5jaGFydFldLGEuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2lmKGIuem9vbUVuYWJsZWQpe3ZhciBlPWEuYm91bmRzW2IuaG9yaXo/ImgiOiJ2Il0sZj1iLm1pblBpeGVsUGFkZGluZyxkPWIudG9QaXhlbHMoTWF0aC5taW4obShiLm9wdGlvbnMubWluLGIuZGF0YU1pbiksYi5kYXRhTWluKSksCmM9Yi50b1BpeGVscyhNYXRoLm1heChtKGIub3B0aW9ucy5tYXgsYi5kYXRhTWF4KSxiLmRhdGFNYXgpKSxrPU1hdGgubWF4KGQsYyk7ZS5taW49TWF0aC5taW4oYi5wb3MsTWF0aC5taW4oZCxjKS1mKTtlLm1heD1NYXRoLm1heChiLnBvcytiLmxlbixrK2YpfX0pLGYucmVzPSEwKTpmLmZvbGxvd1RvdWNoTW92ZSYmMT09PWw/dGhpcy5ydW5Qb2ludEFjdGlvbnMoZi5ub3JtYWxpemUoZCkpOmMubGVuZ3RoJiYoZ3x8KGYuc2VsZWN0aW9uTWFya2VyPWc9dih7ZGVzdHJveTpELHRvdWNoOiEwfSxhLnBsb3RCb3gpKSxmLnBpbmNoVHJhbnNsYXRlKGMsayxyLGcsZSxwKSxmLmhhc1BpbmNoZWQ9bixmLnNjYWxlR3JvdXBzKHIsZSksZi5yZXMmJihmLnJlcz0hMSx0aGlzLnJlc2V0KCExLDApKSl9O2wucHJvdG90eXBlLnBpbmNoVHJhbnNsYXRlPWZ1bmN0aW9uKGQsZixhLGMsbCxtKXt0aGlzLnpvb21Ib3ImJnRoaXMucGluY2hUcmFuc2xhdGVEaXJlY3Rpb24oITAsZCxmLGEsYyxsLG0pOwp0aGlzLnpvb21WZXJ0JiZ0aGlzLnBpbmNoVHJhbnNsYXRlRGlyZWN0aW9uKCExLGQsZixhLGMsbCxtKX07bC5wcm90b3R5cGUucGluY2hUcmFuc2xhdGVEaXJlY3Rpb249ZnVuY3Rpb24oZCxmLGEsYyxsLG0scCxuKXt2YXIgaz10aGlzLmNoYXJ0LHU9ZD8ieCI6InkiLGc9ZD8iWCI6IlkiLGU9ImNoYXJ0IitnLGI9ZD8id2lkdGgiOiJoZWlnaHQiLGg9a1sicGxvdCIrKGQ/IkxlZnQiOiJUb3AiKV0sdyx4LEE9bnx8MSxyPWsuaW52ZXJ0ZWQsRT1rLmJvdW5kc1tkPyJoIjoidiJdLHQ9MT09PWYubGVuZ3RoLEM9ZlswXVtlXSx2PWFbMF1bZV0scT0hdCYmZlsxXVtlXSxJPSF0JiZhWzFdW2VdO2E9ZnVuY3Rpb24oKXsibnVtYmVyIj09PXR5cGVvZiBJJiYyMDxNYXRoLmFicyhDLXEpJiYoQT1ufHxNYXRoLmFicyh2LUkpL01hdGguYWJzKEMtcSkpO3g9KGgtdikvQStDO3c9a1sicGxvdCIrKGQ/IldpZHRoIjoiSGVpZ2h0IildL0F9O2EoKTtmPXg7aWYoZjxFLm1pbil7Zj1FLm1pbjt2YXIgUD0KITB9ZWxzZSBmK3c+RS5tYXgmJihmPUUubWF4LXcsUD0hMCk7UD8odi09LjgqKHYtcFt1XVswXSksIm51bWJlciI9PT10eXBlb2YgSSYmKEktPS44KihJLXBbdV1bMV0pKSxhKCkpOnBbdV09W3YsSV07cnx8KG1bdV09eC1oLG1bYl09dyk7bT1yPzEvQTpBO2xbYl09dztsW3VdPWY7Y1tyP2Q/InNjYWxlWSI6InNjYWxlWCI6InNjYWxlIitnXT1BO2NbInRyYW5zbGF0ZSIrZ109bSpoKyh2LW0qQyl9O2wucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKGMsZil7dmFyIGE9dGhpcy5jaGFydCxrPWEuaG92ZXJTZXJpZXMsbD1hLmhvdmVyUG9pbnQsbT1hLmhvdmVyUG9pbnRzLHA9YS50b29sdGlwLG49cCYmcC5zaGFyZWQ/bTpsO2MmJm4mJmQobikuZm9yRWFjaChmdW5jdGlvbihhKXthLnNlcmllcy5pc0NhcnRlc2lhbiYmInVuZGVmaW5lZCI9PT10eXBlb2YgYS5wbG90WCYmKGM9ITEpfSk7aWYoYylwJiZuJiZkKG4pLmxlbmd0aCYmKHAucmVmcmVzaChuKSxwLnNoYXJlZCYmbT9tLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRTdGF0ZShhLnN0YXRlLAohMCk7YS5zZXJpZXMuaXNDYXJ0ZXNpYW4mJihhLnNlcmllcy54QXhpcy5jcm9zc2hhaXImJmEuc2VyaWVzLnhBeGlzLmRyYXdDcm9zc2hhaXIobnVsbCxhKSxhLnNlcmllcy55QXhpcy5jcm9zc2hhaXImJmEuc2VyaWVzLnlBeGlzLmRyYXdDcm9zc2hhaXIobnVsbCxhKSl9KTpsJiYobC5zZXRTdGF0ZShsLnN0YXRlLCEwKSxhLmF4ZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLmNyb3NzaGFpciYmbC5zZXJpZXNbYS5jb2xsXT09PWEmJmEuZHJhd0Nyb3NzaGFpcihudWxsLGwpfSkpKTtlbHNle2lmKGwpbC5vbk1vdXNlT3V0KCk7bSYmbS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Euc2V0U3RhdGUoKX0pO2lmKGspay5vbk1vdXNlT3V0KCk7cCYmcC5oaWRlKGYpO3RoaXMudW5Eb2NNb3VzZU1vdmUmJih0aGlzLnVuRG9jTW91c2VNb3ZlPXRoaXMudW5Eb2NNb3VzZU1vdmUoKSk7YS5heGVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5oaWRlQ3Jvc3NoYWlyKCl9KTt0aGlzLmhvdmVyWD1hLmhvdmVyUG9pbnRzPQphLmhvdmVyUG9pbnQ9bnVsbH19O2wucHJvdG90eXBlLnJ1blBvaW50QWN0aW9ucz1mdW5jdGlvbihkLGYpe3ZhciBhPXRoaXMuY2hhcnQsaz1hLnRvb2x0aXAmJmEudG9vbHRpcC5vcHRpb25zLmVuYWJsZWQ/YS50b29sdGlwOnZvaWQgMCxsPWs/ay5zaGFyZWQ6ITEscD1mfHxhLmhvdmVyUG9pbnQsbj1wJiZwLnNlcmllc3x8YS5ob3ZlclNlcmllcztuPXRoaXMuZ2V0SG92ZXJEYXRhKHAsbixhLnNlcmllcywoIWR8fCJ0b3VjaG1vdmUiIT09ZC50eXBlKSYmKCEhZnx8biYmbi5kaXJlY3RUb3VjaCYmdGhpcy5pc0RpcmVjdFRvdWNoKSxsLGQpO3A9bi5ob3ZlclBvaW50O3ZhciBnPW4uaG92ZXJQb2ludHM7Zj0obj1uLmhvdmVyU2VyaWVzKSYmbi50b29sdGlwT3B0aW9ucy5mb2xsb3dQb2ludGVyO2w9bCYmbiYmIW4ubm9TaGFyZWRUb29sdGlwO2lmKHAmJihwIT09YS5ob3ZlclBvaW50fHxrJiZrLmlzSGlkZGVuKSl7KGEuaG92ZXJQb2ludHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpey0xPT09CmcuaW5kZXhPZihhKSYmYS5zZXRTdGF0ZSgpfSk7aWYoYS5ob3ZlclNlcmllcyE9PW4pbi5vbk1vdXNlT3ZlcigpO3RoaXMuYXBwbHlJbmFjdGl2ZVN0YXRlKGcpOyhnfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXthLnNldFN0YXRlKCJob3ZlciIpfSk7YS5ob3ZlclBvaW50JiZhLmhvdmVyUG9pbnQuZmlyZVBvaW50RXZlbnQoIm1vdXNlT3V0Iik7aWYoIXAuc2VyaWVzKXJldHVybjthLmhvdmVyUG9pbnRzPWc7YS5ob3ZlclBvaW50PXA7cC5maXJlUG9pbnRFdmVudCgibW91c2VPdmVyIik7ayYmay5yZWZyZXNoKGw/ZzpwLGQpfWVsc2UgZiYmayYmIWsuaXNIaWRkZW4mJihwPWsuZ2V0QW5jaG9yKFt7fV0sZCksay51cGRhdGVQb3NpdGlvbih7cGxvdFg6cFswXSxwbG90WTpwWzFdfSkpO3RoaXMudW5Eb2NNb3VzZU1vdmV8fCh0aGlzLnVuRG9jTW91c2VNb3ZlPUooYS5jb250YWluZXIub3duZXJEb2N1bWVudCwibW91c2Vtb3ZlIixmdW5jdGlvbihhKXt2YXIgZj1IW2MuaG92ZXJDaGFydEluZGV4XTsKaWYoZilmLnBvaW50ZXIub25Eb2N1bWVudE1vdXNlTW92ZShhKX0pKTthLmF4ZXMuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgYz1tKChmLmNyb3NzaGFpcnx8e30pLnNuYXAsITApLGs7YyYmKChrPWEuaG92ZXJQb2ludCkmJmsuc2VyaWVzW2YuY29sbF09PT1mfHwoaz1LKGcsZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2VyaWVzW2YuY29sbF09PT1mfSkpKTtrfHwhYz9mLmRyYXdDcm9zc2hhaXIoZCxrKTpmLmhpZGVDcm9zc2hhaXIoKX0pfTtsLnByb3RvdHlwZS5zY2FsZUdyb3Vwcz1mdW5jdGlvbihkLGYpe3ZhciBhPXRoaXMuY2hhcnQsYzthLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGspe2M9ZHx8ay5nZXRQbG90Qm94KCk7ay54QXhpcyYmay54QXhpcy56b29tRW5hYmxlZCYmay5ncm91cCYmKGsuZ3JvdXAuYXR0cihjKSxrLm1hcmtlckdyb3VwJiYoay5tYXJrZXJHcm91cC5hdHRyKGMpLGsubWFya2VyR3JvdXAuY2xpcChmP2EuY2xpcFJlY3Q6bnVsbCkpLGsuZGF0YUxhYmVsc0dyb3VwJiYKay5kYXRhTGFiZWxzR3JvdXAuYXR0cihjKSl9KTthLmNsaXBSZWN0LmF0dHIoZnx8YS5jbGlwQm94KX07bC5wcm90b3R5cGUuc2V0RE9NRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5jaGFydC5jb250YWluZXIsZj1kLm93bmVyRG9jdW1lbnQ7ZC5vbm1vdXNlZG93bj10aGlzLm9uQ29udGFpbmVyTW91c2VEb3duLmJpbmQodGhpcyk7ZC5vbm1vdXNlbW92ZT10aGlzLm9uQ29udGFpbmVyTW91c2VNb3ZlLmJpbmQodGhpcyk7ZC5vbmNsaWNrPXRoaXMub25Db250YWluZXJDbGljay5iaW5kKHRoaXMpO3RoaXMudW5iaW5kQ29udGFpbmVyTW91c2VMZWF2ZT1KKGQsIm1vdXNlbGVhdmUiLHRoaXMub25Db250YWluZXJNb3VzZUxlYXZlLmJpbmQodGhpcykpO2MudW5iaW5kRG9jdW1lbnRNb3VzZVVwfHwoYy51bmJpbmREb2N1bWVudE1vdXNlVXA9SihmLCJtb3VzZXVwIix0aGlzLm9uRG9jdW1lbnRNb3VzZVVwLmJpbmQodGhpcykpKTtjLmhhc1RvdWNoJiYoSihkLCJ0b3VjaHN0YXJ0IiwKdGhpcy5vbkNvbnRhaW5lclRvdWNoU3RhcnQuYmluZCh0aGlzKSksSihkLCJ0b3VjaG1vdmUiLHRoaXMub25Db250YWluZXJUb3VjaE1vdmUuYmluZCh0aGlzKSksYy51bmJpbmREb2N1bWVudFRvdWNoRW5kfHwoYy51bmJpbmREb2N1bWVudFRvdWNoRW5kPUooZiwidG91Y2hlbmQiLHRoaXMub25Eb2N1bWVudFRvdWNoRW5kLmJpbmQodGhpcykpKSl9O2wucHJvdG90eXBlLnNldEhvdmVyQ2hhcnRJbmRleD1mdW5jdGlvbigpe3ZhciBkPXRoaXMuY2hhcnQsZj1jLmNoYXJ0c1ttKGMuaG92ZXJDaGFydEluZGV4LC0xKV07aWYoZiYmZiE9PWQpZi5wb2ludGVyLm9uQ29udGFpbmVyTW91c2VMZWF2ZSh7cmVsYXRlZFRhcmdldDohMH0pO2YmJmYubW91c2VJc0Rvd258fChjLmhvdmVyQ2hhcnRJbmRleD1kLmluZGV4KX07bC5wcm90b3R5cGUudG91Y2g9ZnVuY3Rpb24oZCxmKXt2YXIgYT10aGlzLmNoYXJ0LGM7dGhpcy5zZXRIb3ZlckNoYXJ0SW5kZXgoKTtpZigxPT09ZC50b3VjaGVzLmxlbmd0aClpZihkPQp0aGlzLm5vcm1hbGl6ZShkKSwoYz1hLmlzSW5zaWRlUGxvdChkLmNoYXJ0WC1hLnBsb3RMZWZ0LGQuY2hhcnRZLWEucGxvdFRvcCkpJiYhYS5vcGVuTWVudSl7ZiYmdGhpcy5ydW5Qb2ludEFjdGlvbnMoZCk7aWYoInRvdWNobW92ZSI9PT1kLnR5cGUpe2Y9dGhpcy5waW5jaERvd247dmFyIGs9ZlswXT80PD1NYXRoLnNxcnQoTWF0aC5wb3coZlswXS5jaGFydFgtZC5jaGFydFgsMikrTWF0aC5wb3coZlswXS5jaGFydFktZC5jaGFydFksMikpOiExfW0oaywhMCkmJnRoaXMucGluY2goZCl9ZWxzZSBmJiZ0aGlzLnJlc2V0KCk7ZWxzZSAyPT09ZC50b3VjaGVzLmxlbmd0aCYmdGhpcy5waW5jaChkKX07bC5wcm90b3R5cGUuem9vbU9wdGlvbj1mdW5jdGlvbihkKXt2YXIgZj10aGlzLmNoYXJ0LGE9Zi5vcHRpb25zLmNoYXJ0LGM9YS56b29tVHlwZXx8IiI7Zj1mLmludmVydGVkOy90b3VjaC8udGVzdChkLnR5cGUpJiYoYz1tKGEucGluY2hUeXBlLGMpKTt0aGlzLnpvb21YPWQ9L3gvLnRlc3QoYyk7CnRoaXMuem9vbVk9Yz0veS8udGVzdChjKTt0aGlzLnpvb21Ib3I9ZCYmIWZ8fGMmJmY7dGhpcy56b29tVmVydD1jJiYhZnx8ZCYmZjt0aGlzLmhhc1pvb209ZHx8Y307cmV0dXJuIGx9KCk7cmV0dXJuIGMuUG9pbnRlcj1nfSk7TyhxLCJwYXJ0cy9NU1BvaW50ZXIuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvUG9pbnRlci5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMscSl7ZnVuY3Rpb24geSgpe3ZhciBjPVtdO2MuaXRlbT1mdW5jdGlvbihjKXtyZXR1cm4gdGhpc1tjXX07dihuLGZ1bmN0aW9uKG4pe2MucHVzaCh7cGFnZVg6bi5wYWdlWCxwYWdlWTpuLnBhZ2VZLHRhcmdldDpuLnRhcmdldH0pfSk7cmV0dXJuIGN9ZnVuY3Rpb24gQihjLG4scCxtKXsidG91Y2giIT09Yy5wb2ludGVyVHlwZSYmYy5wb2ludGVyVHlwZSE9PWMuTVNQT0lOVEVSX1RZUEVfVE9VQ0h8fCFEW2cuaG92ZXJDaGFydEluZGV4XXx8KG0oYyksbT1EW2cuaG92ZXJDaGFydEluZGV4XS5wb2ludGVyLAptW25dKHt0eXBlOnAsdGFyZ2V0OmMuY3VycmVudFRhcmdldCxwcmV2ZW50RGVmYXVsdDp0LHRvdWNoZXM6eSgpfSkpfXZhciBIPXRoaXMmJnRoaXMuX19leHRlbmRzfHxmdW5jdGlvbigpe3ZhciBjPWZ1bmN0aW9uKG4scCl7Yz1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fHtfX3Byb3RvX186W119aW5zdGFuY2VvZiBBcnJheSYmZnVuY3Rpb24oYyxkKXtjLl9fcHJvdG9fXz1kfXx8ZnVuY3Rpb24oYyxkKXtmb3IodmFyIGwgaW4gZClkLmhhc093blByb3BlcnR5KGwpJiYoY1tsXT1kW2xdKX07cmV0dXJuIGMobixwKX07cmV0dXJuIGZ1bmN0aW9uKG4scCl7ZnVuY3Rpb24gbSgpe3RoaXMuY29uc3RydWN0b3I9bn1jKG4scCk7bi5wcm90b3R5cGU9bnVsbD09PXA/T2JqZWN0LmNyZWF0ZShwKToobS5wcm90b3R5cGU9cC5wcm90b3R5cGUsbmV3IG0pfX0oKSxEPWcuY2hhcnRzLEo9Zy5kb2MsdD1nLm5vb3AsRz1xLmFkZEV2ZW50LEw9cS5jc3Msdj1xLm9iamVjdEVhY2gsSz1xLnJlbW92ZUV2ZW50LApuPXt9LHI9ISFnLndpbi5Qb2ludGVyRXZlbnQ7cmV0dXJuIGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGcoKXtyZXR1cm4gbnVsbCE9PWMmJmMuYXBwbHkodGhpcyxhcmd1bWVudHMpfHx0aGlzfUgoZyxjKTtnLnByb3RvdHlwZS5iYXRjaE1TRXZlbnRzPWZ1bmN0aW9uKGMpe2ModGhpcy5jaGFydC5jb250YWluZXIscj8icG9pbnRlcmRvd24iOiJNU1BvaW50ZXJEb3duIix0aGlzLm9uQ29udGFpbmVyUG9pbnRlckRvd24pO2ModGhpcy5jaGFydC5jb250YWluZXIscj8icG9pbnRlcm1vdmUiOiJNU1BvaW50ZXJNb3ZlIix0aGlzLm9uQ29udGFpbmVyUG9pbnRlck1vdmUpO2MoSixyPyJwb2ludGVydXAiOiJNU1BvaW50ZXJVcCIsdGhpcy5vbkRvY3VtZW50UG9pbnRlclVwKX07Zy5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuYmF0Y2hNU0V2ZW50cyhLKTtjLnByb3RvdHlwZS5kZXN0cm95LmNhbGwodGhpcyl9O2cucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24ocCxtKXtjLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcywKcCxtKTt0aGlzLmhhc1pvb20mJkwocC5jb250YWluZXIseyItbXMtdG91Y2gtYWN0aW9uIjoibm9uZSIsInRvdWNoLWFjdGlvbiI6Im5vbmUifSl9O2cucHJvdG90eXBlLm9uQ29udGFpbmVyUG9pbnRlckRvd249ZnVuY3Rpb24oYyl7QihjLCJvbkNvbnRhaW5lclRvdWNoU3RhcnQiLCJ0b3VjaHN0YXJ0IixmdW5jdGlvbihjKXtuW2MucG9pbnRlcklkXT17cGFnZVg6Yy5wYWdlWCxwYWdlWTpjLnBhZ2VZLHRhcmdldDpjLmN1cnJlbnRUYXJnZXR9fSl9O2cucHJvdG90eXBlLm9uQ29udGFpbmVyUG9pbnRlck1vdmU9ZnVuY3Rpb24oYyl7QihjLCJvbkNvbnRhaW5lclRvdWNoTW92ZSIsInRvdWNobW92ZSIsZnVuY3Rpb24oYyl7bltjLnBvaW50ZXJJZF09e3BhZ2VYOmMucGFnZVgscGFnZVk6Yy5wYWdlWX07bltjLnBvaW50ZXJJZF0udGFyZ2V0fHwobltjLnBvaW50ZXJJZF0udGFyZ2V0PWMuY3VycmVudFRhcmdldCl9KX07Zy5wcm90b3R5cGUub25Eb2N1bWVudFBvaW50ZXJVcD1mdW5jdGlvbihjKXtCKGMsCiJvbkRvY3VtZW50VG91Y2hFbmQiLCJ0b3VjaGVuZCIsZnVuY3Rpb24oYyl7ZGVsZXRlIG5bYy5wb2ludGVySWRdfSl9O2cucHJvdG90eXBlLnNldERPTUV2ZW50cz1mdW5jdGlvbigpe2MucHJvdG90eXBlLnNldERPTUV2ZW50cy5jYWxsKHRoaXMpOyh0aGlzLmhhc1pvb218fHRoaXMuZm9sbG93VG91Y2hNb3ZlKSYmdGhpcy5iYXRjaE1TRXZlbnRzKEcpfTtyZXR1cm4gZ30oYyl9KTtPKHEsInBhcnRzL0xlZ2VuZC5qcyIsW3FbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjKXt2YXIgcT1jLmFkZEV2ZW50LHk9Yy5hbmltT2JqZWN0LEI9Yy5jc3MsSD1jLmRlZmluZWQsRD1jLmRpc2NhcmRFbGVtZW50LEo9Yy5maW5kLHQ9Yy5maXJlRXZlbnQsRz1jLmZvcm1hdCxMPWMuaXNOdW1iZXIsdj1jLm1lcmdlLEs9Yy5waWNrLG49Yy5yZWxhdGl2ZUxlbmd0aCxyPWMuc2V0QW5pbWF0aW9uLEM9Yy5zdGFibGVTb3J0LEk9Yy5zeW5jVGltZW91dDsKYz1jLndyYXA7dmFyIHA9Zy5pc0ZpcmVmb3gsbT1nLm1hcmdpbk5hbWVzLGQ9Zy53aW4sbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoZCxhKXt0aGlzLmFsbEl0ZW1zPVtdO3RoaXMuY29udGVudEdyb3VwPXRoaXMuYm94PXZvaWQgMDt0aGlzLmRpc3BsYXk9ITE7dGhpcy5ncm91cD12b2lkIDA7dGhpcy5vZmZzZXRXaWR0aD10aGlzLm1heExlZ2VuZFdpZHRoPXRoaXMubWF4SXRlbVdpZHRoPXRoaXMubGVnZW5kV2lkdGg9dGhpcy5sZWdlbmRIZWlnaHQ9dGhpcy5sYXN0TGluZUhlaWdodD10aGlzLmxhc3RJdGVtWT10aGlzLml0ZW1ZPXRoaXMuaXRlbVg9dGhpcy5pdGVtTWFyZ2luVG9wPXRoaXMuaXRlbU1hcmdpbkJvdHRvbT10aGlzLml0ZW1IZWlnaHQ9dGhpcy5pbml0aWFsSXRlbVk9MDt0aGlzLm9wdGlvbnM9e307dGhpcy5wYWRkaW5nPTA7dGhpcy5wYWdlcz1bXTt0aGlzLnByb3hpbWF0ZT0hMTt0aGlzLnNjcm9sbEdyb3VwPXZvaWQgMDt0aGlzLndpZHRoT3B0aW9uPXRoaXMudG90YWxJdGVtV2lkdGg9CnRoaXMudGl0bGVIZWlnaHQ9dGhpcy5zeW1ib2xXaWR0aD10aGlzLnN5bWJvbEhlaWdodD0wO3RoaXMuY2hhcnQ9ZDt0aGlzLmluaXQoZCxhKX1kLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGQsYSl7dGhpcy5jaGFydD1kO3RoaXMuc2V0T3B0aW9ucyhhKTthLmVuYWJsZWQmJih0aGlzLnJlbmRlcigpLHEodGhpcy5jaGFydCwiZW5kUmVzaXplIixmdW5jdGlvbigpe3RoaXMubGVnZW5kLnBvc2l0aW9uQ2hlY2tib3hlcygpfSksdGhpcy5wcm94aW1hdGU/dGhpcy51bmNoYXJ0cmVuZGVyPXEodGhpcy5jaGFydCwicmVuZGVyIixmdW5jdGlvbigpe3RoaXMubGVnZW5kLnByb3hpbWF0ZVBvc2l0aW9ucygpO3RoaXMubGVnZW5kLnBvc2l0aW9uSXRlbXMoKX0pOnRoaXMudW5jaGFydHJlbmRlciYmdGhpcy51bmNoYXJ0cmVuZGVyKCkpfTtkLnByb3RvdHlwZS5zZXRPcHRpb25zPWZ1bmN0aW9uKGQpe3ZhciBhPUsoZC5wYWRkaW5nLDgpO3RoaXMub3B0aW9ucz1kO3RoaXMuY2hhcnQuc3R5bGVkTW9kZXx8Cih0aGlzLml0ZW1TdHlsZT1kLml0ZW1TdHlsZSx0aGlzLml0ZW1IaWRkZW5TdHlsZT12KHRoaXMuaXRlbVN0eWxlLGQuaXRlbUhpZGRlblN0eWxlKSk7dGhpcy5pdGVtTWFyZ2luVG9wPWQuaXRlbU1hcmdpblRvcHx8MDt0aGlzLml0ZW1NYXJnaW5Cb3R0b209ZC5pdGVtTWFyZ2luQm90dG9tfHwwO3RoaXMucGFkZGluZz1hO3RoaXMuaW5pdGlhbEl0ZW1ZPWEtNTt0aGlzLnN5bWJvbFdpZHRoPUsoZC5zeW1ib2xXaWR0aCwxNik7dGhpcy5wYWdlcz1bXTt0aGlzLnByb3hpbWF0ZT0icHJveGltYXRlIj09PWQubGF5b3V0JiYhdGhpcy5jaGFydC5pbnZlcnRlZDt0aGlzLmJhc2VsaW5lPXZvaWQgMH07ZC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGQsYSl7dmFyIGY9dGhpcy5jaGFydDt0aGlzLnNldE9wdGlvbnModighMCx0aGlzLm9wdGlvbnMsZCkpO3RoaXMuZGVzdHJveSgpO2YuaXNEaXJ0eUxlZ2VuZD1mLmlzRGlydHlCb3g9ITA7SyhhLCEwKSYmZi5yZWRyYXcoKTt0KHRoaXMsImFmdGVyVXBkYXRlIil9OwpkLnByb3RvdHlwZS5jb2xvcml6ZUl0ZW09ZnVuY3Rpb24oZCxhKXtkLmxlZ2VuZEdyb3VwW2E/InJlbW92ZUNsYXNzIjoiYWRkQ2xhc3MiXSgiaGlnaGNoYXJ0cy1sZWdlbmQtaXRlbS1oaWRkZW4iKTtpZighdGhpcy5jaGFydC5zdHlsZWRNb2RlKXt2YXIgZj10aGlzLm9wdGlvbnMsYz1kLmxlZ2VuZEl0ZW0sbD1kLmxlZ2VuZExpbmUsaz1kLmxlZ2VuZFN5bWJvbCxtPXRoaXMuaXRlbUhpZGRlblN0eWxlLmNvbG9yO2Y9YT9mLml0ZW1TdHlsZS5jb2xvcjptO3ZhciBwPWE/ZC5jb2xvcnx8bTptLG49ZC5vcHRpb25zJiZkLm9wdGlvbnMubWFya2VyLGc9e2ZpbGw6cH07YyYmYy5jc3Moe2ZpbGw6Zixjb2xvcjpmfSk7bCYmbC5hdHRyKHtzdHJva2U6cH0pO2smJihuJiZrLmlzTWFya2VyJiYoZz1kLnBvaW50QXR0cmlicygpLGF8fChnLnN0cm9rZT1nLmZpbGw9bSkpLGsuYXR0cihnKSl9dCh0aGlzLCJhZnRlckNvbG9yaXplSXRlbSIse2l0ZW06ZCx2aXNpYmxlOmF9KX07ZC5wcm90b3R5cGUucG9zaXRpb25JdGVtcz0KZnVuY3Rpb24oKXt0aGlzLmFsbEl0ZW1zLmZvckVhY2godGhpcy5wb3NpdGlvbkl0ZW0sdGhpcyk7dGhpcy5jaGFydC5pc1Jlc2l6aW5nfHx0aGlzLnBvc2l0aW9uQ2hlY2tib3hlcygpfTtkLnByb3RvdHlwZS5wb3NpdGlvbkl0ZW09ZnVuY3Rpb24oZCl7dmFyIGE9dGhpcyxmPXRoaXMub3B0aW9ucyxjPWYuc3ltYm9sUGFkZGluZyxrPSFmLnJ0bCxsPWQuX2xlZ2VuZEl0ZW1Qb3M7Zj1sWzBdO2w9bFsxXTt2YXIgbT1kLmNoZWNrYm94LHA9ZC5sZWdlbmRHcm91cDtwJiZwLmVsZW1lbnQmJihjPXt0cmFuc2xhdGVYOms/Zjp0aGlzLmxlZ2VuZFdpZHRoLWYtMipjLTQsdHJhbnNsYXRlWTpsfSxrPWZ1bmN0aW9uKCl7dChhLCJhZnRlclBvc2l0aW9uSXRlbSIse2l0ZW06ZH0pfSxIKHAudHJhbnNsYXRlWSk/cC5hbmltYXRlKGMse2NvbXBsZXRlOmt9KToocC5hdHRyKGMpLGsoKSkpO20mJihtLng9ZixtLnk9bCl9O2QucHJvdG90eXBlLmRlc3Ryb3lJdGVtPWZ1bmN0aW9uKGQpe3ZhciBhPQpkLmNoZWNrYm94O1sibGVnZW5kSXRlbSIsImxlZ2VuZExpbmUiLCJsZWdlbmRTeW1ib2wiLCJsZWdlbmRHcm91cCJdLmZvckVhY2goZnVuY3Rpb24oYSl7ZFthXSYmKGRbYV09ZFthXS5kZXN0cm95KCkpfSk7YSYmRChkLmNoZWNrYm94KX07ZC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe2Z1bmN0aW9uIGQoYSl7dGhpc1thXSYmKHRoaXNbYV09dGhpc1thXS5kZXN0cm95KCkpfXRoaXMuZ2V0QWxsSXRlbXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe1sibGVnZW5kSXRlbSIsImxlZ2VuZEdyb3VwIl0uZm9yRWFjaChkLGEpfSk7ImNsaXBSZWN0IHVwIGRvd24gcGFnZXIgbmF2IGJveCB0aXRsZSBncm91cCIuc3BsaXQoIiAiKS5mb3JFYWNoKGQsdGhpcyk7dGhpcy5kaXNwbGF5PW51bGx9O2QucHJvdG90eXBlLnBvc2l0aW9uQ2hlY2tib3hlcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMuZ3JvdXAmJnRoaXMuZ3JvdXAuYWxpZ25BdHRyLGE9dGhpcy5jbGlwSGVpZ2h0fHx0aGlzLmxlZ2VuZEhlaWdodCwKYz10aGlzLnRpdGxlSGVpZ2h0O2lmKGQpe3ZhciBsPWQudHJhbnNsYXRlWTt0aGlzLmFsbEl0ZW1zLmZvckVhY2goZnVuY3Rpb24oZil7dmFyIGs9Zi5jaGVja2JveDtpZihrKXt2YXIgbT1sK2Mray55Kyh0aGlzLnNjcm9sbE9mZnNldHx8MCkrMztCKGsse2xlZnQ6ZC50cmFuc2xhdGVYK2YuY2hlY2tib3hPZmZzZXQray54LTIwKyJweCIsdG9wOm0rInB4IixkaXNwbGF5OnRoaXMucHJveGltYXRlfHxtPmwtNiYmbTxsK2EtNj8iIjoibm9uZSJ9KX19LHRoaXMpfX07ZC5wcm90b3R5cGUucmVuZGVyVGl0bGU9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm9wdGlvbnMsYT10aGlzLnBhZGRpbmcsYz1kLnRpdGxlLGs9MDtjLnRleHQmJih0aGlzLnRpdGxlfHwodGhpcy50aXRsZT10aGlzLmNoYXJ0LnJlbmRlcmVyLmxhYmVsKGMudGV4dCxhLTMsYS00LG51bGwsbnVsbCxudWxsLGQudXNlSFRNTCxudWxsLCJsZWdlbmQtdGl0bGUiKS5hdHRyKHt6SW5kZXg6MX0pLHRoaXMuY2hhcnQuc3R5bGVkTW9kZXx8CnRoaXMudGl0bGUuY3NzKGMuc3R5bGUpLHRoaXMudGl0bGUuYWRkKHRoaXMuZ3JvdXApKSxjLndpZHRofHx0aGlzLnRpdGxlLmNzcyh7d2lkdGg6dGhpcy5tYXhMZWdlbmRXaWR0aCsicHgifSksZD10aGlzLnRpdGxlLmdldEJCb3goKSxrPWQuaGVpZ2h0LHRoaXMub2Zmc2V0V2lkdGg9ZC53aWR0aCx0aGlzLmNvbnRlbnRHcm91cC5hdHRyKHt0cmFuc2xhdGVZOmt9KSk7dGhpcy50aXRsZUhlaWdodD1rfTtkLnByb3RvdHlwZS5zZXRUZXh0PWZ1bmN0aW9uKGQpe3ZhciBhPXRoaXMub3B0aW9ucztkLmxlZ2VuZEl0ZW0uYXR0cih7dGV4dDphLmxhYmVsRm9ybWF0P0coYS5sYWJlbEZvcm1hdCxkLHRoaXMuY2hhcnQpOmEubGFiZWxGb3JtYXR0ZXIuY2FsbChkKX0pfTtkLnByb3RvdHlwZS5yZW5kZXJJdGVtPWZ1bmN0aW9uKGQpe3ZhciBhPXRoaXMuY2hhcnQsZj1hLnJlbmRlcmVyLGM9dGhpcy5vcHRpb25zLGs9dGhpcy5zeW1ib2xXaWR0aCxsPWMuc3ltYm9sUGFkZGluZyxtPXRoaXMuaXRlbVN0eWxlLApwPXRoaXMuaXRlbUhpZGRlblN0eWxlLG49Imhvcml6b250YWwiPT09Yy5sYXlvdXQ/SyhjLml0ZW1EaXN0YW5jZSwyMCk6MCxnPSFjLnJ0bCxlPWQubGVnZW5kSXRlbSxiPSFkLnNlcmllcyxoPSFiJiZkLnNlcmllcy5kcmF3TGVnZW5kU3ltYm9sP2Quc2VyaWVzOmQsej1oLm9wdGlvbnM7ej10aGlzLmNyZWF0ZUNoZWNrYm94Rm9ySXRlbSYmeiYmei5zaG93Q2hlY2tib3g7bj1rK2wrbisoej8yMDowKTt2YXIgeD1jLnVzZUhUTUwscj1kLm9wdGlvbnMuY2xhc3NOYW1lO2V8fChkLmxlZ2VuZEdyb3VwPWYuZygibGVnZW5kLWl0ZW0iKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy0iK2gudHlwZSsiLXNlcmllcyBoaWdoY2hhcnRzLWNvbG9yLSIrZC5jb2xvckluZGV4KyhyPyIgIityOiIiKSsoYj8iIGhpZ2hjaGFydHMtc2VyaWVzLSIrZC5pbmRleDoiIikpLmF0dHIoe3pJbmRleDoxfSkuYWRkKHRoaXMuc2Nyb2xsR3JvdXApLGQubGVnZW5kSXRlbT1lPWYudGV4dCgiIixnP2srbDotbCx0aGlzLmJhc2VsaW5lfHwKMCx4KSxhLnN0eWxlZE1vZGV8fGUuY3NzKHYoZC52aXNpYmxlP206cCkpLGUuYXR0cih7YWxpZ246Zz8ibGVmdCI6InJpZ2h0Iix6SW5kZXg6Mn0pLmFkZChkLmxlZ2VuZEdyb3VwKSx0aGlzLmJhc2VsaW5lfHwodGhpcy5mb250TWV0cmljcz1mLmZvbnRNZXRyaWNzKGEuc3R5bGVkTW9kZT8xMjptLmZvbnRTaXplLGUpLHRoaXMuYmFzZWxpbmU9dGhpcy5mb250TWV0cmljcy5mKzMrdGhpcy5pdGVtTWFyZ2luVG9wLGUuYXR0cigieSIsdGhpcy5iYXNlbGluZSkpLHRoaXMuc3ltYm9sSGVpZ2h0PWMuc3ltYm9sSGVpZ2h0fHx0aGlzLmZvbnRNZXRyaWNzLmYsaC5kcmF3TGVnZW5kU3ltYm9sKHRoaXMsZCksdGhpcy5zZXRJdGVtRXZlbnRzJiZ0aGlzLnNldEl0ZW1FdmVudHMoZCxlLHgpKTt6JiYhZC5jaGVja2JveCYmdGhpcy5jcmVhdGVDaGVja2JveEZvckl0ZW0mJnRoaXMuY3JlYXRlQ2hlY2tib3hGb3JJdGVtKGQpO3RoaXMuY29sb3JpemVJdGVtKGQsZC52aXNpYmxlKTshYS5zdHlsZWRNb2RlJiYKbS53aWR0aHx8ZS5jc3Moe3dpZHRoOihjLml0ZW1XaWR0aHx8dGhpcy53aWR0aE9wdGlvbnx8YS5zcGFjaW5nQm94LndpZHRoKS1uKyJweCJ9KTt0aGlzLnNldFRleHQoZCk7YT1lLmdldEJCb3goKTtkLml0ZW1XaWR0aD1kLmNoZWNrYm94T2Zmc2V0PWMuaXRlbVdpZHRofHxkLmxlZ2VuZEl0ZW1XaWR0aHx8YS53aWR0aCtuO3RoaXMubWF4SXRlbVdpZHRoPU1hdGgubWF4KHRoaXMubWF4SXRlbVdpZHRoLGQuaXRlbVdpZHRoKTt0aGlzLnRvdGFsSXRlbVdpZHRoKz1kLml0ZW1XaWR0aDt0aGlzLml0ZW1IZWlnaHQ9ZC5pdGVtSGVpZ2h0PU1hdGgucm91bmQoZC5sZWdlbmRJdGVtSGVpZ2h0fHxhLmhlaWdodHx8dGhpcy5zeW1ib2xIZWlnaHQpfTtkLnByb3RvdHlwZS5sYXlvdXRJdGVtPWZ1bmN0aW9uKGQpe3ZhciBhPXRoaXMub3B0aW9ucyxmPXRoaXMucGFkZGluZyxjPSJob3Jpem9udGFsIj09PWEubGF5b3V0LGs9ZC5pdGVtSGVpZ2h0LGw9dGhpcy5pdGVtTWFyZ2luQm90dG9tLG09CnRoaXMuaXRlbU1hcmdpblRvcCxwPWM/SyhhLml0ZW1EaXN0YW5jZSwyMCk6MCxuPXRoaXMubWF4TGVnZW5kV2lkdGg7YT1hLmFsaWduQ29sdW1ucyYmdGhpcy50b3RhbEl0ZW1XaWR0aD5uP3RoaXMubWF4SXRlbVdpZHRoOmQuaXRlbVdpZHRoO2MmJnRoaXMuaXRlbVgtZithPm4mJih0aGlzLml0ZW1YPWYsdGhpcy5sYXN0TGluZUhlaWdodCYmKHRoaXMuaXRlbVkrPW0rdGhpcy5sYXN0TGluZUhlaWdodCtsKSx0aGlzLmxhc3RMaW5lSGVpZ2h0PTApO3RoaXMubGFzdEl0ZW1ZPW0rdGhpcy5pdGVtWStsO3RoaXMubGFzdExpbmVIZWlnaHQ9TWF0aC5tYXgoayx0aGlzLmxhc3RMaW5lSGVpZ2h0KTtkLl9sZWdlbmRJdGVtUG9zPVt0aGlzLml0ZW1YLHRoaXMuaXRlbVldO2M/dGhpcy5pdGVtWCs9YToodGhpcy5pdGVtWSs9bStrK2wsdGhpcy5sYXN0TGluZUhlaWdodD1rKTt0aGlzLm9mZnNldFdpZHRoPXRoaXMud2lkdGhPcHRpb258fE1hdGgubWF4KChjP3RoaXMuaXRlbVgtZi0oZC5jaGVja2JveD8KMDpwKTphKStmLHRoaXMub2Zmc2V0V2lkdGgpfTtkLnByb3RvdHlwZS5nZXRBbGxJdGVtcz1mdW5jdGlvbigpe3ZhciBkPVtdO3RoaXMuY2hhcnQuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGY9YSYmYS5vcHRpb25zO2EmJksoZi5zaG93SW5MZWdlbmQsSChmLmxpbmtlZFRvKT8hMTp2b2lkIDAsITApJiYoZD1kLmNvbmNhdChhLmxlZ2VuZEl0ZW1zfHwoInBvaW50Ij09PWYubGVnZW5kVHlwZT9hLmRhdGE6YSkpKX0pO3QodGhpcywiYWZ0ZXJHZXRBbGxJdGVtcyIse2FsbEl0ZW1zOmR9KTtyZXR1cm4gZH07ZC5wcm90b3R5cGUuZ2V0QWxpZ25tZW50PWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLnByb3hpbWF0ZT9kLmFsaWduLmNoYXJBdCgwKSsidHYiOmQuZmxvYXRpbmc/IiI6ZC5hbGlnbi5jaGFyQXQoMCkrZC52ZXJ0aWNhbEFsaWduLmNoYXJBdCgwKStkLmxheW91dC5jaGFyQXQoMCl9O2QucHJvdG90eXBlLmFkanVzdE1hcmdpbnM9ZnVuY3Rpb24oZCwKYSl7dmFyIGM9dGhpcy5jaGFydCxmPXRoaXMub3B0aW9ucyxrPXRoaXMuZ2V0QWxpZ25tZW50KCk7ayYmWy8obHRofGN0fHJ0aCkvLC8ocnR2fHJtfHJidikvLC8ocmJofGNifGxiaCkvLC8obGJ2fGxtfGx0dikvXS5mb3JFYWNoKGZ1bmN0aW9uKGwscCl7bC50ZXN0KGspJiYhSChkW3BdKSYmKGNbbVtwXV09TWF0aC5tYXgoY1ttW3BdXSxjLmxlZ2VuZFsocCsxKSUyPyJsZWdlbmRIZWlnaHQiOiJsZWdlbmRXaWR0aCJdK1sxLC0xLC0xLDFdW3BdKmZbcCUyPyJ4IjoieSJdK0soZi5tYXJnaW4sMTIpK2FbcF0rKGMudGl0bGVPZmZzZXRbcF18fDApKSl9KX07ZC5wcm90b3R5cGUucHJveGltYXRlUG9zaXRpb25zPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5jaGFydCxhPVtdLGM9ImxlZnQiPT09dGhpcy5vcHRpb25zLmFsaWduO3RoaXMuYWxsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgaz1jO2lmKGYueUF4aXMmJmYucG9pbnRzKXtmLnhBeGlzLm9wdGlvbnMucmV2ZXJzZWQmJihrPQohayk7dmFyIGw9SihrP2YucG9pbnRzOmYucG9pbnRzLnNsaWNlKDApLnJldmVyc2UoKSxmdW5jdGlvbihhKXtyZXR1cm4gTChhLnBsb3RZKX0pO2s9dGhpcy5pdGVtTWFyZ2luVG9wK2YubGVnZW5kSXRlbS5nZXRCQm94KCkuaGVpZ2h0K3RoaXMuaXRlbU1hcmdpbkJvdHRvbTt2YXIgbT1mLnlBeGlzLnRvcC1kLnBsb3RUb3A7Zi52aXNpYmxlPyhsPWw/bC5wbG90WTpmLnlBeGlzLmhlaWdodCxsKz1tLS4zKmspOmw9bStmLnlBeGlzLmhlaWdodDthLnB1c2goe3RhcmdldDpsLHNpemU6ayxpdGVtOmZ9KX19LHRoaXMpO2cuZGlzdHJpYnV0ZShhLGQucGxvdEhlaWdodCk7YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuaXRlbS5fbGVnZW5kSXRlbVBvc1sxXT1kLnBsb3RUb3AtZC5zcGFjaW5nWzBdK2EucG9zfSl9O2QucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBkPXRoaXMuY2hhcnQsYT1kLnJlbmRlcmVyLGM9dGhpcy5ncm91cCxrPXRoaXMuYm94LGw9dGhpcy5vcHRpb25zLG09CnRoaXMucGFkZGluZzt0aGlzLml0ZW1YPW07dGhpcy5pdGVtWT10aGlzLmluaXRpYWxJdGVtWTt0aGlzLmxhc3RJdGVtWT10aGlzLm9mZnNldFdpZHRoPTA7dGhpcy53aWR0aE9wdGlvbj1uKGwud2lkdGgsZC5zcGFjaW5nQm94LndpZHRoLW0pO3ZhciBwPWQuc3BhY2luZ0JveC53aWR0aC0yKm0tbC54Oy0xPFsicm0iLCJsbSJdLmluZGV4T2YodGhpcy5nZXRBbGlnbm1lbnQoKS5zdWJzdHJpbmcoMCwyKSkmJihwLz0yKTt0aGlzLm1heExlZ2VuZFdpZHRoPXRoaXMud2lkdGhPcHRpb258fHA7Y3x8KHRoaXMuZ3JvdXA9Yz1hLmcoImxlZ2VuZCIpLmF0dHIoe3pJbmRleDo3fSkuYWRkKCksdGhpcy5jb250ZW50R3JvdXA9YS5nKCkuYXR0cih7ekluZGV4OjF9KS5hZGQoYyksdGhpcy5zY3JvbGxHcm91cD1hLmcoKS5hZGQodGhpcy5jb250ZW50R3JvdXApKTt0aGlzLnJlbmRlclRpdGxlKCk7dmFyIGc9dGhpcy5nZXRBbGxJdGVtcygpO0MoZyxmdW5jdGlvbihhLGUpe3JldHVybihhLm9wdGlvbnMmJgphLm9wdGlvbnMubGVnZW5kSW5kZXh8fDApLShlLm9wdGlvbnMmJmUub3B0aW9ucy5sZWdlbmRJbmRleHx8MCl9KTtsLnJldmVyc2VkJiZnLnJldmVyc2UoKTt0aGlzLmFsbEl0ZW1zPWc7dGhpcy5kaXNwbGF5PXA9ISFnLmxlbmd0aDt0aGlzLml0ZW1IZWlnaHQ9dGhpcy50b3RhbEl0ZW1XaWR0aD10aGlzLm1heEl0ZW1XaWR0aD10aGlzLmxhc3RMaW5lSGVpZ2h0PTA7Zy5mb3JFYWNoKHRoaXMucmVuZGVySXRlbSx0aGlzKTtnLmZvckVhY2godGhpcy5sYXlvdXRJdGVtLHRoaXMpO2c9KHRoaXMud2lkdGhPcHRpb258fHRoaXMub2Zmc2V0V2lkdGgpK207dmFyIHI9dGhpcy5sYXN0SXRlbVkrdGhpcy5sYXN0TGluZUhlaWdodCt0aGlzLnRpdGxlSGVpZ2h0O3I9dGhpcy5oYW5kbGVPdmVyZmxvdyhyKTtyKz1tO2t8fCh0aGlzLmJveD1rPWEucmVjdCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLWxlZ2VuZC1ib3giKS5hdHRyKHtyOmwuYm9yZGVyUmFkaXVzfSkuYWRkKGMpLGsuaXNOZXc9ITApOwpkLnN0eWxlZE1vZGV8fGsuYXR0cih7c3Ryb2tlOmwuYm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6bC5ib3JkZXJXaWR0aHx8MCxmaWxsOmwuYmFja2dyb3VuZENvbG9yfHwibm9uZSJ9KS5zaGFkb3cobC5zaGFkb3cpOzA8ZyYmMDxyJiYoa1trLmlzTmV3PyJhdHRyIjoiYW5pbWF0ZSJdKGsuY3Jpc3AuY2FsbCh7fSx7eDowLHk6MCx3aWR0aDpnLGhlaWdodDpyfSxrLnN0cm9rZVdpZHRoKCkpKSxrLmlzTmV3PSExKTtrW3A/InNob3ciOiJoaWRlIl0oKTtkLnN0eWxlZE1vZGUmJiJub25lIj09PWMuZ2V0U3R5bGUoImRpc3BsYXkiKSYmKGc9cj0wKTt0aGlzLmxlZ2VuZFdpZHRoPWc7dGhpcy5sZWdlbmRIZWlnaHQ9cjtwJiZ0aGlzLmFsaWduKCk7dGhpcy5wcm94aW1hdGV8fHRoaXMucG9zaXRpb25JdGVtcygpO3QodGhpcywiYWZ0ZXJSZW5kZXIiKX07ZC5wcm90b3R5cGUuYWxpZ249ZnVuY3Rpb24oZCl7dm9pZCAwPT09ZCYmKGQ9dGhpcy5jaGFydC5zcGFjaW5nQm94KTt2YXIgYT0KdGhpcy5jaGFydCxjPXRoaXMub3B0aW9ucyxmPWQueTsvKGx0aHxjdHxydGgpLy50ZXN0KHRoaXMuZ2V0QWxpZ25tZW50KCkpJiYwPGEudGl0bGVPZmZzZXRbMF0/Zis9YS50aXRsZU9mZnNldFswXTovKGxiaHxjYnxyYmgpLy50ZXN0KHRoaXMuZ2V0QWxpZ25tZW50KCkpJiYwPGEudGl0bGVPZmZzZXRbMl0mJihmLT1hLnRpdGxlT2Zmc2V0WzJdKTtmIT09ZC55JiYoZD12KGQse3k6Zn0pKTt0aGlzLmdyb3VwLmFsaWduKHYoYyx7d2lkdGg6dGhpcy5sZWdlbmRXaWR0aCxoZWlnaHQ6dGhpcy5sZWdlbmRIZWlnaHQsdmVydGljYWxBbGlnbjp0aGlzLnByb3hpbWF0ZT8idG9wIjpjLnZlcnRpY2FsQWxpZ259KSwhMCxkKX07ZC5wcm90b3R5cGUuaGFuZGxlT3ZlcmZsb3c9ZnVuY3Rpb24oZCl7dmFyIGE9dGhpcyxjPXRoaXMuY2hhcnQsZj1jLnJlbmRlcmVyLGs9dGhpcy5vcHRpb25zLGw9ay55LG09dGhpcy5wYWRkaW5nO2w9Yy5zcGFjaW5nQm94LmhlaWdodCsoInRvcCI9PT1rLnZlcnRpY2FsQWxpZ24/Ci1sOmwpLW07dmFyIHA9ay5tYXhIZWlnaHQsbixnPXRoaXMuY2xpcFJlY3QsZT1rLm5hdmlnYXRpb24sYj1LKGUuYW5pbWF0aW9uLCEwKSxoPWUuYXJyb3dTaXplfHwxMix6PXRoaXMubmF2LHg9dGhpcy5wYWdlcyxyLHQ9dGhpcy5hbGxJdGVtcyx2PWZ1bmN0aW9uKGIpeyJudW1iZXIiPT09dHlwZW9mIGI/Zy5hdHRyKHtoZWlnaHQ6Yn0pOmcmJihhLmNsaXBSZWN0PWcuZGVzdHJveSgpLGEuY29udGVudEdyb3VwLmNsaXAoKSk7YS5jb250ZW50R3JvdXAuZGl2JiYoYS5jb250ZW50R3JvdXAuZGl2LnN0eWxlLmNsaXA9Yj8icmVjdCgiK20rInB4LDk5OTlweCwiKyhtK2IpKyJweCwwKSI6ImF1dG8iKX0scT1mdW5jdGlvbihiKXthW2JdPWYuY2lyY2xlKDAsMCwxLjMqaCkudHJhbnNsYXRlKGgvMixoLzIpLmFkZCh6KTtjLnN0eWxlZE1vZGV8fGFbYl0uYXR0cigiZmlsbCIsInJnYmEoMCwwLDAsMC4wMDAxKSIpO3JldHVybiBhW2JdfTsiaG9yaXpvbnRhbCIhPT1rLmxheW91dHx8Im1pZGRsZSI9PT0Kay52ZXJ0aWNhbEFsaWdufHxrLmZsb2F0aW5nfHwobC89Mik7cCYmKGw9TWF0aC5taW4obCxwKSk7eC5sZW5ndGg9MDtkPmwmJiExIT09ZS5lbmFibGVkPyh0aGlzLmNsaXBIZWlnaHQ9bj1NYXRoLm1heChsLTIwLXRoaXMudGl0bGVIZWlnaHQtbSwwKSx0aGlzLmN1cnJlbnRQYWdlPUsodGhpcy5jdXJyZW50UGFnZSwxKSx0aGlzLmZ1bGxIZWlnaHQ9ZCx0LmZvckVhY2goZnVuY3Rpb24oYixhKXt2YXIgZT1iLl9sZWdlbmRJdGVtUG9zWzFdLGQ9TWF0aC5yb3VuZChiLmxlZ2VuZEl0ZW0uZ2V0QkJveCgpLmhlaWdodCksaD14Lmxlbmd0aDtpZighaHx8ZS14W2gtMV0+biYmKHJ8fGUpIT09eFtoLTFdKXgucHVzaChyfHxlKSxoKys7Yi5wYWdlSXg9aC0xO3ImJih0W2EtMV0ucGFnZUl4PWgtMSk7YT09PXQubGVuZ3RoLTEmJmUrZC14W2gtMV0+biYmZSE9PXImJih4LnB1c2goZSksYi5wYWdlSXg9aCk7ZSE9PXImJihyPWUpfSksZ3x8KGc9YS5jbGlwUmVjdD1mLmNsaXBSZWN0KDAsbSw5OTk5LAowKSxhLmNvbnRlbnRHcm91cC5jbGlwKGcpKSx2KG4pLHp8fCh0aGlzLm5hdj16PWYuZygpLmF0dHIoe3pJbmRleDoxfSkuYWRkKHRoaXMuZ3JvdXApLHRoaXMudXA9Zi5zeW1ib2woInRyaWFuZ2xlIiwwLDAsaCxoKS5hZGQoeikscSgidXBUcmFja2VyIikub24oImNsaWNrIixmdW5jdGlvbigpe2Euc2Nyb2xsKC0xLGIpfSksdGhpcy5wYWdlcj1mLnRleHQoIiIsMTUsMTApLmFkZENsYXNzKCJoaWdoY2hhcnRzLWxlZ2VuZC1uYXZpZ2F0aW9uIiksYy5zdHlsZWRNb2RlfHx0aGlzLnBhZ2VyLmNzcyhlLnN0eWxlKSx0aGlzLnBhZ2VyLmFkZCh6KSx0aGlzLmRvd249Zi5zeW1ib2woInRyaWFuZ2xlLWRvd24iLDAsMCxoLGgpLmFkZCh6KSxxKCJkb3duVHJhY2tlciIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLnNjcm9sbCgxLGIpfSkpLGEuc2Nyb2xsKDApLGQ9bCk6eiYmKHYoKSx0aGlzLm5hdj16LmRlc3Ryb3koKSx0aGlzLnNjcm9sbEdyb3VwLmF0dHIoe3RyYW5zbGF0ZVk6MX0pLHRoaXMuY2xpcEhlaWdodD0KMCk7cmV0dXJuIGR9O2QucHJvdG90eXBlLnNjcm9sbD1mdW5jdGlvbihkLGEpe3ZhciBjPXRoaXMsZj10aGlzLmNoYXJ0LGs9dGhpcy5wYWdlcyxsPWsubGVuZ3RoLG09dGhpcy5jdXJyZW50UGFnZStkO2Q9dGhpcy5jbGlwSGVpZ2h0O3ZhciBwPXRoaXMub3B0aW9ucy5uYXZpZ2F0aW9uLG49dGhpcy5wYWdlcixnPXRoaXMucGFkZGluZzttPmwmJihtPWwpOzA8bSYmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGEmJnIoYSxmKSx0aGlzLm5hdi5hdHRyKHt0cmFuc2xhdGVYOmcsdHJhbnNsYXRlWTpkK3RoaXMucGFkZGluZys3K3RoaXMudGl0bGVIZWlnaHQsdmlzaWJpbGl0eToidmlzaWJsZSJ9KSxbdGhpcy51cCx0aGlzLnVwVHJhY2tlcl0uZm9yRWFjaChmdW5jdGlvbihhKXthLmF0dHIoeyJjbGFzcyI6MT09PW0/ImhpZ2hjaGFydHMtbGVnZW5kLW5hdi1pbmFjdGl2ZSI6ImhpZ2hjaGFydHMtbGVnZW5kLW5hdi1hY3RpdmUifSl9KSxuLmF0dHIoe3RleHQ6bSsiLyIrbH0pLFt0aGlzLmRvd24sCnRoaXMuZG93blRyYWNrZXJdLmZvckVhY2goZnVuY3Rpb24oYSl7YS5hdHRyKHt4OjE4K3RoaXMucGFnZXIuZ2V0QkJveCgpLndpZHRoLCJjbGFzcyI6bT09PWw/ImhpZ2hjaGFydHMtbGVnZW5kLW5hdi1pbmFjdGl2ZSI6ImhpZ2hjaGFydHMtbGVnZW5kLW5hdi1hY3RpdmUifSl9LHRoaXMpLGYuc3R5bGVkTW9kZXx8KHRoaXMudXAuYXR0cih7ZmlsbDoxPT09bT9wLmluYWN0aXZlQ29sb3I6cC5hY3RpdmVDb2xvcn0pLHRoaXMudXBUcmFja2VyLmNzcyh7Y3Vyc29yOjE9PT1tPyJkZWZhdWx0IjoicG9pbnRlciJ9KSx0aGlzLmRvd24uYXR0cih7ZmlsbDptPT09bD9wLmluYWN0aXZlQ29sb3I6cC5hY3RpdmVDb2xvcn0pLHRoaXMuZG93blRyYWNrZXIuY3NzKHtjdXJzb3I6bT09PWw/ImRlZmF1bHQiOiJwb2ludGVyIn0pKSx0aGlzLnNjcm9sbE9mZnNldD0ta1ttLTFdK3RoaXMuaW5pdGlhbEl0ZW1ZLHRoaXMuc2Nyb2xsR3JvdXAuYW5pbWF0ZSh7dHJhbnNsYXRlWTp0aGlzLnNjcm9sbE9mZnNldH0pLAp0aGlzLmN1cnJlbnRQYWdlPW0sdGhpcy5wb3NpdGlvbkNoZWNrYm94ZXMoKSxhPXkoSyhhLGYucmVuZGVyZXIuZ2xvYmFsQW5pbWF0aW9uLCEwKSksSShmdW5jdGlvbigpe3QoYywiYWZ0ZXJTY3JvbGwiLHtjdXJyZW50UGFnZTptfSl9LGEuZHVyYXRpb258fDApKX07cmV0dXJuIGR9KCk7KC9UcmlkZW50XC83XC4wLy50ZXN0KGQubmF2aWdhdG9yJiZkLm5hdmlnYXRvci51c2VyQWdlbnQpfHxwKSYmYyhsLnByb3RvdHlwZSwicG9zaXRpb25JdGVtIixmdW5jdGlvbihkLGMpe3ZhciBhPXRoaXMsZj1mdW5jdGlvbigpe2MuX2xlZ2VuZEl0ZW1Qb3MmJmQuY2FsbChhLGMpfTtmKCk7YS5idWJibGVMZWdlbmR8fHNldFRpbWVvdXQoZil9KTtnLkxlZ2VuZD1sO3JldHVybiBnLkxlZ2VuZH0pO08ocSwicGFydHMvQ2hhcnQuanMiLFtxWyJwYXJ0cy9BeGlzLmpzIl0scVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL0xlZ2VuZC5qcyJdLHFbInBhcnRzL01TUG9pbnRlci5qcyJdLHFbInBhcnRzL09wdGlvbnMuanMiXSwKcVsicGFydHMvUG9pbnRlci5qcyJdLHFbInBhcnRzL1RpbWUuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEseSxCLEgsRCxKKXt2YXIgdD1jLmNoYXJ0cyxHPWMuZG9jLEw9Yy5zZXJpZXNUeXBlcyx2PWMud2luLEs9Qi5kZWZhdWx0T3B0aW9ucyxuPUouYWRkRXZlbnQscj1KLmFuaW1hdGUsQz1KLmFuaW1PYmplY3QsST1KLmF0dHIscD1KLmNyZWF0ZUVsZW1lbnQsbT1KLmNzcyxkPUouZGVmaW5lZCxsPUouZGlzY2FyZEVsZW1lbnQsaz1KLmVyYXNlLGY9Si5lcnJvcixhPUouZXh0ZW5kLEE9Si5maW5kLHU9Si5maXJlRXZlbnQsRT1KLmdldFN0eWxlLFA9Si5pc0FycmF5LHc9Si5pc0Z1bmN0aW9uLE09Si5pc051bWJlcixGPUouaXNPYmplY3QsUT1KLmlzU3RyaW5nLGU9Si5tZXJnZSxiPUoubnVtYmVyRm9ybWF0LGg9Si5vYmplY3RFYWNoLHo9Si5waWNrLHg9Si5wSW50LE49Si5yZWxhdGl2ZUxlbmd0aCxhYT1KLnJlbW92ZUV2ZW50LFo9Si5zZXRBbmltYXRpb24sClY9Si5zcGxhdCxZPUouc3luY1RpbWVvdXQsYmE9Si51bmlxdWVLZXksVT1jLm1hcmdpbk5hbWVzLFg9ZnVuY3Rpb24oKXtmdW5jdGlvbiBCKGIsYSxlKXt0aGlzLnlBeGlzPXRoaXMueEF4aXM9dGhpcy51c2VyT3B0aW9ucz10aGlzLnRpdGxlT2Zmc2V0PXRoaXMudGltZT10aGlzLnN5bWJvbENvdW50ZXI9dGhpcy5zcGFjaW5nQm94PXRoaXMuc3BhY2luZz10aGlzLnNlcmllcz10aGlzLnJlbmRlclRvPXRoaXMucmVuZGVyZXI9dGhpcy5wb2ludGVyPXRoaXMucG9pbnRDb3VudD10aGlzLnBsb3RXaWR0aD10aGlzLnBsb3RUb3A9dGhpcy5wbG90TGVmdD10aGlzLnBsb3RIZWlnaHQ9dGhpcy5wbG90Qm94PXRoaXMub3B0aW9ucz10aGlzLm51bWJlckZvcm1hdHRlcj10aGlzLm1hcmdpbj10aGlzLmxlZ2VuZD10aGlzLmxhYmVsQ29sbGVjdG9ycz10aGlzLmlzUmVzaXppbmc9dGhpcy5pbmRleD10aGlzLmNvbnRhaW5lcj10aGlzLmNvbG9yQ291bnRlcj10aGlzLmNsaXBCb3g9dGhpcy5jaGFydFdpZHRoPQp0aGlzLmNoYXJ0SGVpZ2h0PXRoaXMuYm91bmRzPXRoaXMuYXhpc09mZnNldD10aGlzLmF4ZXM9dm9pZCAwO3RoaXMuZ2V0QXJncyhiLGEsZSl9Qi5wcm90b3R5cGUuZ2V0QXJncz1mdW5jdGlvbihiLGEsZSl7UShiKXx8Yi5ub2RlTmFtZT8odGhpcy5yZW5kZXJUbz1iLHRoaXMuaW5pdChhLGUpKTp0aGlzLmluaXQoYixhKX07Qi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhLGQpe3ZhciBmLGw9YS5zZXJpZXMsaz1hLnBsb3RPcHRpb25zfHx7fTt1KHRoaXMsImluaXQiLHthcmdzOmFyZ3VtZW50c30sZnVuY3Rpb24oKXthLnNlcmllcz1udWxsO2Y9ZShLLGEpO3ZhciBtPWYuY2hhcnR8fHt9O2goZi5wbG90T3B0aW9ucyxmdW5jdGlvbihiLGEpe0YoYikmJihiLnRvb2x0aXA9a1thXSYmZShrW2FdLnRvb2x0aXApfHx2b2lkIDApfSk7Zi50b29sdGlwLnVzZXJPcHRpb25zPWEuY2hhcnQmJmEuY2hhcnQuZm9yRXhwb3J0JiZhLnRvb2x0aXAudXNlck9wdGlvbnN8fGEudG9vbHRpcDtmLnNlcmllcz0KYS5zZXJpZXM9bDt0aGlzLnVzZXJPcHRpb25zPWE7dmFyIHA9bS5ldmVudHM7dGhpcy5tYXJnaW49W107dGhpcy5zcGFjaW5nPVtdO3RoaXMuYm91bmRzPXtoOnt9LHY6e319O3RoaXMubGFiZWxDb2xsZWN0b3JzPVtdO3RoaXMuY2FsbGJhY2s9ZDt0aGlzLmlzUmVzaXppbmc9MDt0aGlzLm9wdGlvbnM9Zjt0aGlzLmF4ZXM9W107dGhpcy5zZXJpZXM9W107dGhpcy50aW1lPWEudGltZSYmT2JqZWN0LmtleXMoYS50aW1lKS5sZW5ndGg/bmV3IEQoYS50aW1lKTpjLnRpbWU7dGhpcy5udW1iZXJGb3JtYXR0ZXI9bS5udW1iZXJGb3JtYXR0ZXJ8fGI7dGhpcy5zdHlsZWRNb2RlPW0uc3R5bGVkTW9kZTt0aGlzLmhhc0NhcnRlc2lhblNlcmllcz1tLnNob3dBeGVzO3ZhciBnPXRoaXM7Zy5pbmRleD10Lmxlbmd0aDt0LnB1c2goZyk7Yy5jaGFydENvdW50Kys7cCYmaChwLGZ1bmN0aW9uKGIsYSl7dyhiKSYmbihnLGEsYil9KTtnLnhBeGlzPVtdO2cueUF4aXM9W107Zy5wb2ludENvdW50PWcuY29sb3JDb3VudGVyPQpnLnN5bWJvbENvdW50ZXI9MDt1KGcsImFmdGVySW5pdCIpO2cuZmlyc3RSZW5kZXIoKX0pfTtCLnByb3RvdHlwZS5pbml0U2VyaWVzPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMub3B0aW9ucy5jaGFydDthPWIudHlwZXx8YS50eXBlfHxhLmRlZmF1bHRTZXJpZXNUeXBlO3ZhciBlPUxbYV07ZXx8ZigxNywhMCx0aGlzLHttaXNzaW5nTW9kdWxlRm9yOmF9KTthPW5ldyBlO2EuaW5pdCh0aGlzLGIpO3JldHVybiBhfTtCLnByb3RvdHlwZS5zZXRTZXJpZXNEYXRhPWZ1bmN0aW9uKCl7dGhpcy5nZXRTZXJpZXNPcmRlckJ5TGlua3MoKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IucG9pbnRzfHxiLmRhdGF8fCFiLmVuYWJsZWREYXRhU29ydGluZ3x8Yi5zZXREYXRhKGIub3B0aW9ucy5kYXRhLCExKX0pfTtCLnByb3RvdHlwZS5nZXRTZXJpZXNPcmRlckJ5TGlua3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXJpZXMuY29uY2F0KCkuc29ydChmdW5jdGlvbihiLGEpe3JldHVybiBiLmxpbmtlZFNlcmllcy5sZW5ndGh8fAphLmxpbmtlZFNlcmllcy5sZW5ndGg/YS5saW5rZWRTZXJpZXMubGVuZ3RoLWIubGlua2VkU2VyaWVzLmxlbmd0aDowfSl9O0IucHJvdG90eXBlLm9yZGVyU2VyaWVzPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMuc2VyaWVzO2ZvcihiPWJ8fDA7YjxhLmxlbmd0aDtiKyspYVtiXSYmKGFbYl0uaW5kZXg9YixhW2JdLm5hbWU9YVtiXS5nZXROYW1lKCkpfTtCLnByb3RvdHlwZS5pc0luc2lkZVBsb3Q9ZnVuY3Rpb24oYixhLGUpe3ZhciBkPWU/YTpiO2I9ZT9iOmE7ZD17eDpkLHk6Yixpc0luc2lkZVBsb3Q6MDw9ZCYmZDw9dGhpcy5wbG90V2lkdGgmJjA8PWImJmI8PXRoaXMucGxvdEhlaWdodH07dSh0aGlzLCJhZnRlcklzSW5zaWRlUGxvdCIsZCk7cmV0dXJuIGQuaXNJbnNpZGVQbG90fTtCLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oYil7dSh0aGlzLCJiZWZvcmVSZWRyYXciKTt2YXIgZT10aGlzLGQ9ZS5heGVzLGg9ZS5zZXJpZXMsYz1lLnBvaW50ZXIsZj1lLmxlZ2VuZCxsPWUudXNlck9wdGlvbnMubGVnZW5kLAprPWUuaXNEaXJ0eUxlZ2VuZCxtPWUuaGFzQ2FydGVzaWFuU2VyaWVzLHA9ZS5pc0RpcnR5Qm94LGc9ZS5yZW5kZXJlcixuPWcuaXNIaWRkZW4oKSx4PVtdO2Uuc2V0UmVzcG9uc2l2ZSYmZS5zZXRSZXNwb25zaXZlKCExKTtaKGUuaGFzUmVuZGVyZWQ/YjohMSxlKTtuJiZlLnRlbXBvcmFyeURpc3BsYXkoKTtlLmxheU91dFRpdGxlcygpO2ZvcihiPWgubGVuZ3RoO2ItLTspe3ZhciB6PWhbYl07aWYoei5vcHRpb25zLnN0YWNraW5nKXt2YXIgdz0hMDtpZih6LmlzRGlydHkpe3ZhciByPSEwO2JyZWFrfX19aWYocilmb3IoYj1oLmxlbmd0aDtiLS07KXo9aFtiXSx6Lm9wdGlvbnMuc3RhY2tpbmcmJih6LmlzRGlydHk9ITApO2guZm9yRWFjaChmdW5jdGlvbihiKXtiLmlzRGlydHkmJigicG9pbnQiPT09Yi5vcHRpb25zLmxlZ2VuZFR5cGU/KGIudXBkYXRlVG90YWxzJiZiLnVwZGF0ZVRvdGFscygpLGs9ITApOmwmJihsLmxhYmVsRm9ybWF0dGVyfHxsLmxhYmVsRm9ybWF0KSYmKGs9ITApKTsKYi5pc0RpcnR5RGF0YSYmdShiLCJ1cGRhdGVkRGF0YSIpfSk7ayYmZiYmZi5vcHRpb25zLmVuYWJsZWQmJihmLnJlbmRlcigpLGUuaXNEaXJ0eUxlZ2VuZD0hMSk7dyYmZS5nZXRTdGFja3MoKTttJiZkLmZvckVhY2goZnVuY3Rpb24oYil7ZS5pc1Jlc2l6aW5nJiZNKGIubWluKXx8KGIudXBkYXRlTmFtZXMoKSxiLnNldFNjYWxlKCkpfSk7ZS5nZXRNYXJnaW5zKCk7bSYmKGQuZm9yRWFjaChmdW5jdGlvbihiKXtiLmlzRGlydHkmJihwPSEwKX0pLGQuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgZT1iLm1pbisiLCIrYi5tYXg7Yi5leHRLZXkhPT1lJiYoYi5leHRLZXk9ZSx4LnB1c2goZnVuY3Rpb24oKXt1KGIsImFmdGVyU2V0RXh0cmVtZXMiLGEoYi5ldmVudEFyZ3MsYi5nZXRFeHRyZW1lcygpKSk7ZGVsZXRlIGIuZXZlbnRBcmdzfSkpOyhwfHx3KSYmYi5yZWRyYXcoKX0pKTtwJiZlLmRyYXdDaGFydEJveCgpO3UoZSwicHJlZHJhdyIpO2guZm9yRWFjaChmdW5jdGlvbihiKXsocHx8CmIuaXNEaXJ0eSkmJmIudmlzaWJsZSYmYi5yZWRyYXcoKTtiLmlzRGlydHlEYXRhPSExfSk7YyYmYy5yZXNldCghMCk7Zy5kcmF3KCk7dShlLCJyZWRyYXciKTt1KGUsInJlbmRlciIpO24mJmUudGVtcG9yYXJ5RGlzcGxheSghMCk7eC5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuY2FsbCgpfSl9O0IucHJvdG90eXBlLmdldD1mdW5jdGlvbihiKXtmdW5jdGlvbiBhKGEpe3JldHVybiBhLmlkPT09Ynx8YS5vcHRpb25zJiZhLm9wdGlvbnMuaWQ9PT1ifXZhciBlPXRoaXMuc2VyaWVzLGQ7dmFyIGg9QSh0aGlzLmF4ZXMsYSl8fEEodGhpcy5zZXJpZXMsYSk7Zm9yKGQ9MDshaCYmZDxlLmxlbmd0aDtkKyspaD1BKGVbZF0ucG9pbnRzfHxbXSxhKTtyZXR1cm4gaH07Qi5wcm90b3R5cGUuZ2V0QXhlcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMsYT10aGlzLm9wdGlvbnMsZT1hLnhBeGlzPVYoYS54QXhpc3x8e30pO2E9YS55QXhpcz1WKGEueUF4aXN8fHt9KTt1KHRoaXMsImdldEF4ZXMiKTtlLmZvckVhY2goZnVuY3Rpb24oYiwKYSl7Yi5pbmRleD1hO2IuaXNYPSEwfSk7YS5mb3JFYWNoKGZ1bmN0aW9uKGIsYSl7Yi5pbmRleD1hfSk7ZS5jb25jYXQoYSkuZm9yRWFjaChmdW5jdGlvbihhKXtuZXcgZyhiLGEpfSk7dSh0aGlzLCJhZnRlckdldEF4ZXMiKX07Qi5wcm90b3R5cGUuZ2V0U2VsZWN0ZWRQb2ludHM9ZnVuY3Rpb24oKXt2YXIgYj1bXTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2I9Yi5jb25jYXQoYS5nZXRQb2ludHNDb2xsZWN0aW9uKCkuZmlsdGVyKGZ1bmN0aW9uKGIpe3JldHVybiB6KGIuc2VsZWN0ZWRTdGFnaW5nLGIuc2VsZWN0ZWQpfSkpfSk7cmV0dXJuIGJ9O0IucHJvdG90eXBlLmdldFNlbGVjdGVkU2VyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VyaWVzLmZpbHRlcihmdW5jdGlvbihiKXtyZXR1cm4gYi5zZWxlY3RlZH0pfTtCLnByb3RvdHlwZS5zZXRUaXRsZT1mdW5jdGlvbihiLGEsZSl7dGhpcy5hcHBseURlc2NyaXB0aW9uKCJ0aXRsZSIsYik7dGhpcy5hcHBseURlc2NyaXB0aW9uKCJzdWJ0aXRsZSIsCmEpO3RoaXMuYXBwbHlEZXNjcmlwdGlvbigiY2FwdGlvbiIsdm9pZCAwKTt0aGlzLmxheU91dFRpdGxlcyhlKX07Qi5wcm90b3R5cGUuYXBwbHlEZXNjcmlwdGlvbj1mdW5jdGlvbihiLGEpe3ZhciBkPXRoaXMsaD0idGl0bGUiPT09Yj97Y29sb3I6IiMzMzMzMzMiLGZvbnRTaXplOnRoaXMub3B0aW9ucy5pc1N0b2NrPyIxNnB4IjoiMThweCJ9Ontjb2xvcjoiIzY2NjY2NiJ9O2g9dGhpcy5vcHRpb25zW2JdPWUoIXRoaXMuc3R5bGVkTW9kZSYme3N0eWxlOmh9LHRoaXMub3B0aW9uc1tiXSxhKTt2YXIgYz10aGlzW2JdO2MmJmEmJih0aGlzW2JdPWM9Yy5kZXN0cm95KCkpO2gmJiFjJiYoYz10aGlzLnJlbmRlcmVyLnRleHQoaC50ZXh0LDAsMCxoLnVzZUhUTUwpLmF0dHIoe2FsaWduOmguYWxpZ24sImNsYXNzIjoiaGlnaGNoYXJ0cy0iK2IsekluZGV4OmguekluZGV4fHw0fSkuYWRkKCksYy51cGRhdGU9ZnVuY3Rpb24oYSl7ZFt7dGl0bGU6InNldFRpdGxlIixzdWJ0aXRsZToic2V0U3VidGl0bGUiLApjYXB0aW9uOiJzZXRDYXB0aW9uIn1bYl1dKGEpfSx0aGlzLnN0eWxlZE1vZGV8fGMuY3NzKGguc3R5bGUpLHRoaXNbYl09Yyl9O0IucHJvdG90eXBlLmxheU91dFRpdGxlcz1mdW5jdGlvbihiKXt2YXIgZT1bMCwwLDBdLGQ9dGhpcy5yZW5kZXJlcixoPXRoaXMuc3BhY2luZ0JveDtbInRpdGxlIiwic3VidGl0bGUiLCJjYXB0aW9uIl0uZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgYz10aGlzW2JdLGY9dGhpcy5vcHRpb25zW2JdLGw9Zi52ZXJ0aWNhbEFsaWdufHwidG9wIjtiPSJ0aXRsZSI9PT1iPy0zOiJ0b3AiPT09bD9lWzBdKzI6MDtpZihjKXtpZighdGhpcy5zdHlsZWRNb2RlKXZhciBrPWYuc3R5bGUuZm9udFNpemU7az1kLmZvbnRNZXRyaWNzKGssYykuYjtjLmNzcyh7d2lkdGg6KGYud2lkdGh8fGgud2lkdGgrKGYud2lkdGhBZGp1c3R8fDApKSsicHgifSk7dmFyIG09TWF0aC5yb3VuZChjLmdldEJCb3goZi51c2VIVE1MKS5oZWlnaHQpO2MuYWxpZ24oYSh7eToiYm90dG9tIj09PQpsP2s6YitrLGhlaWdodDptfSxmKSwhMSwic3BhY2luZ0JveCIpO2YuZmxvYXRpbmd8fCgidG9wIj09PWw/ZVswXT1NYXRoLmNlaWwoZVswXSttKToiYm90dG9tIj09PWwmJihlWzJdPU1hdGguY2VpbChlWzJdK20pKSl9fSx0aGlzKTtlWzBdJiYidG9wIj09PSh0aGlzLm9wdGlvbnMudGl0bGUudmVydGljYWxBbGlnbnx8InRvcCIpJiYoZVswXSs9dGhpcy5vcHRpb25zLnRpdGxlLm1hcmdpbik7ZVsyXSYmImJvdHRvbSI9PT10aGlzLm9wdGlvbnMuY2FwdGlvbi52ZXJ0aWNhbEFsaWduJiYoZVsyXSs9dGhpcy5vcHRpb25zLmNhcHRpb24ubWFyZ2luKTt2YXIgYz0hdGhpcy50aXRsZU9mZnNldHx8dGhpcy50aXRsZU9mZnNldC5qb2luKCIsIikhPT1lLmpvaW4oIiwiKTt0aGlzLnRpdGxlT2Zmc2V0PWU7dSh0aGlzLCJhZnRlckxheU91dFRpdGxlcyIpOyF0aGlzLmlzRGlydHlCb3gmJmMmJih0aGlzLmlzRGlydHlCb3g9dGhpcy5pc0RpcnR5TGVnZW5kPWMsdGhpcy5oYXNSZW5kZXJlZCYmCnooYiwhMCkmJnRoaXMuaXNEaXJ0eUJveCYmdGhpcy5yZWRyYXcoKSl9O0IucHJvdG90eXBlLmdldENoYXJ0U2l6ZT1mdW5jdGlvbigpe3ZhciBiPXRoaXMub3B0aW9ucy5jaGFydCxhPWIud2lkdGg7Yj1iLmhlaWdodDt2YXIgZT10aGlzLnJlbmRlclRvO2QoYSl8fCh0aGlzLmNvbnRhaW5lcldpZHRoPUUoZSwid2lkdGgiKSk7ZChiKXx8KHRoaXMuY29udGFpbmVySGVpZ2h0PUUoZSwiaGVpZ2h0IikpO3RoaXMuY2hhcnRXaWR0aD1NYXRoLm1heCgwLGF8fHRoaXMuY29udGFpbmVyV2lkdGh8fDYwMCk7dGhpcy5jaGFydEhlaWdodD1NYXRoLm1heCgwLE4oYix0aGlzLmNoYXJ0V2lkdGgpfHwoMTx0aGlzLmNvbnRhaW5lckhlaWdodD90aGlzLmNvbnRhaW5lckhlaWdodDo0MDApKX07Qi5wcm90b3R5cGUudGVtcG9yYXJ5RGlzcGxheT1mdW5jdGlvbihiKXt2YXIgYT10aGlzLnJlbmRlclRvO2lmKGIpZm9yKDthJiZhLnN0eWxlOylhLmhjT3JpZ1N0eWxlJiYobShhLGEuaGNPcmlnU3R5bGUpLApkZWxldGUgYS5oY09yaWdTdHlsZSksYS5oY09yaWdEZXRhY2hlZCYmKEcuYm9keS5yZW1vdmVDaGlsZChhKSxhLmhjT3JpZ0RldGFjaGVkPSExKSxhPWEucGFyZW50Tm9kZTtlbHNlIGZvcig7YSYmYS5zdHlsZTspe0cuYm9keS5jb250YWlucyhhKXx8YS5wYXJlbnROb2RlfHwoYS5oY09yaWdEZXRhY2hlZD0hMCxHLmJvZHkuYXBwZW5kQ2hpbGQoYSkpO2lmKCJub25lIj09PUUoYSwiZGlzcGxheSIsITEpfHxhLmhjT3JpY0RldGFjaGVkKWEuaGNPcmlnU3R5bGU9e2Rpc3BsYXk6YS5zdHlsZS5kaXNwbGF5LGhlaWdodDphLnN0eWxlLmhlaWdodCxvdmVyZmxvdzphLnN0eWxlLm92ZXJmbG93fSxiPXtkaXNwbGF5OiJibG9jayIsb3ZlcmZsb3c6ImhpZGRlbiJ9LGEhPT10aGlzLnJlbmRlclRvJiYoYi5oZWlnaHQ9MCksbShhLGIpLGEub2Zmc2V0V2lkdGh8fGEuc3R5bGUuc2V0UHJvcGVydHkoImRpc3BsYXkiLCJibG9jayIsImltcG9ydGFudCIpO2E9YS5wYXJlbnROb2RlO2lmKGE9PT0KRy5ib2R5KWJyZWFrfX07Qi5wcm90b3R5cGUuc2V0Q2xhc3NOYW1lPWZ1bmN0aW9uKGIpe3RoaXMuY29udGFpbmVyLmNsYXNzTmFtZT0iaGlnaGNoYXJ0cy1jb250YWluZXIgIisoYnx8IiIpfTtCLnByb3RvdHlwZS5nZXRDb250YWluZXI9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMsZT1iLmNoYXJ0O3ZhciBkPXRoaXMucmVuZGVyVG87dmFyIGg9YmEoKSxsLGs7ZHx8KHRoaXMucmVuZGVyVG89ZD1lLnJlbmRlclRvKTtRKGQpJiYodGhpcy5yZW5kZXJUbz1kPUcuZ2V0RWxlbWVudEJ5SWQoZCkpO2R8fGYoMTMsITAsdGhpcyk7dmFyIGc9eChJKGQsImRhdGEtaGlnaGNoYXJ0cy1jaGFydCIpKTtNKGcpJiZ0W2ddJiZ0W2ddLmhhc1JlbmRlcmVkJiZ0W2ddLmRlc3Ryb3koKTtJKGQsImRhdGEtaGlnaGNoYXJ0cy1jaGFydCIsdGhpcy5pbmRleCk7ZC5pbm5lckhUTUw9IiI7ZS5za2lwQ2xvbmV8fGQub2Zmc2V0V2lkdGh8fHRoaXMudGVtcG9yYXJ5RGlzcGxheSgpO3RoaXMuZ2V0Q2hhcnRTaXplKCk7Cmc9dGhpcy5jaGFydFdpZHRoO3ZhciBuPXRoaXMuY2hhcnRIZWlnaHQ7bShkLHtvdmVyZmxvdzoiaGlkZGVuIn0pO3RoaXMuc3R5bGVkTW9kZXx8KGw9YSh7cG9zaXRpb246InJlbGF0aXZlIixvdmVyZmxvdzoiaGlkZGVuIix3aWR0aDpnKyJweCIsaGVpZ2h0Om4rInB4Iix0ZXh0QWxpZ246ImxlZnQiLGxpbmVIZWlnaHQ6Im5vcm1hbCIsekluZGV4OjAsIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciI6InJnYmEoMCwwLDAsMCkiLHVzZXJTZWxlY3Q6Im5vbmUifSxlLnN0eWxlKSk7dGhpcy5jb250YWluZXI9ZD1wKCJkaXYiLHtpZDpofSxsLGQpO3RoaXMuX2N1cnNvcj1kLnN0eWxlLmN1cnNvcjt0aGlzLnJlbmRlcmVyPW5ldyAoY1tlLnJlbmRlcmVyXXx8Yy5SZW5kZXJlcikoZCxnLG4sbnVsbCxlLmZvckV4cG9ydCxiLmV4cG9ydGluZyYmYi5leHBvcnRpbmcuYWxsb3dIVE1MLHRoaXMuc3R5bGVkTW9kZSk7Wih2b2lkIDAsdGhpcyk7dGhpcy5zZXRDbGFzc05hbWUoZS5jbGFzc05hbWUpOwppZih0aGlzLnN0eWxlZE1vZGUpZm9yKGsgaW4gYi5kZWZzKXRoaXMucmVuZGVyZXIuZGVmaW5pdGlvbihiLmRlZnNba10pO2Vsc2UgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShlLnN0eWxlKTt0aGlzLnJlbmRlcmVyLmNoYXJ0SW5kZXg9dGhpcy5pbmRleDt1KHRoaXMsImFmdGVyR2V0Q29udGFpbmVyIil9O0IucHJvdG90eXBlLmdldE1hcmdpbnM9ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy5zcGFjaW5nLGU9dGhpcy5tYXJnaW4saD10aGlzLnRpdGxlT2Zmc2V0O3RoaXMucmVzZXRNYXJnaW5zKCk7aFswXSYmIWQoZVswXSkmJih0aGlzLnBsb3RUb3A9TWF0aC5tYXgodGhpcy5wbG90VG9wLGhbMF0rYVswXSkpO2hbMl0mJiFkKGVbMl0pJiYodGhpcy5tYXJnaW5Cb3R0b209TWF0aC5tYXgodGhpcy5tYXJnaW5Cb3R0b20saFsyXSthWzJdKSk7dGhpcy5sZWdlbmQmJnRoaXMubGVnZW5kLmRpc3BsYXkmJnRoaXMubGVnZW5kLmFkanVzdE1hcmdpbnMoZSxhKTt1KHRoaXMsImdldE1hcmdpbnMiKTsKYnx8dGhpcy5nZXRBeGlzTWFyZ2lucygpfTtCLnByb3RvdHlwZS5nZXRBeGlzTWFyZ2lucz1mdW5jdGlvbigpe3ZhciBiPXRoaXMsYT1iLmF4aXNPZmZzZXQ9WzAsMCwwLDBdLGU9Yi5jb2xvckF4aXMsaD1iLm1hcmdpbixjPWZ1bmN0aW9uKGIpe2IuZm9yRWFjaChmdW5jdGlvbihiKXtiLnZpc2libGUmJmIuZ2V0T2Zmc2V0KCl9KX07Yi5oYXNDYXJ0ZXNpYW5TZXJpZXM/YyhiLmF4ZXMpOmUmJmUubGVuZ3RoJiZjKGUpO1UuZm9yRWFjaChmdW5jdGlvbihlLGMpe2QoaFtjXSl8fChiW2VdKz1hW2NdKX0pO2Iuc2V0Q2hhcnRTaXplKCl9O0IucHJvdG90eXBlLnJlZmxvdz1mdW5jdGlvbihiKXt2YXIgYT10aGlzLGU9YS5vcHRpb25zLmNoYXJ0LGg9YS5yZW5kZXJUbyxjPWQoZS53aWR0aCkmJmQoZS5oZWlnaHQpLGY9ZS53aWR0aHx8RShoLCJ3aWR0aCIpO2U9ZS5oZWlnaHR8fEUoaCwiaGVpZ2h0Iik7aD1iP2IudGFyZ2V0OnY7aWYoIWMmJiFhLmlzUHJpbnRpbmcmJmYmJmUmJihoPT09CnZ8fGg9PT1HKSl7aWYoZiE9PWEuY29udGFpbmVyV2lkdGh8fGUhPT1hLmNvbnRhaW5lckhlaWdodClKLmNsZWFyVGltZW91dChhLnJlZmxvd1RpbWVvdXQpLGEucmVmbG93VGltZW91dD1ZKGZ1bmN0aW9uKCl7YS5jb250YWluZXImJmEuc2V0U2l6ZSh2b2lkIDAsdm9pZCAwLCExKX0sYj8xMDA6MCk7YS5jb250YWluZXJXaWR0aD1mO2EuY29udGFpbmVySGVpZ2h0PWV9fTtCLnByb3RvdHlwZS5zZXRSZWZsb3c9ZnVuY3Rpb24oYil7dmFyIGE9dGhpczshMT09PWJ8fHRoaXMudW5iaW5kUmVmbG93PyExPT09YiYmdGhpcy51bmJpbmRSZWZsb3cmJih0aGlzLnVuYmluZFJlZmxvdz10aGlzLnVuYmluZFJlZmxvdygpKToodGhpcy51bmJpbmRSZWZsb3c9bih2LCJyZXNpemUiLGZ1bmN0aW9uKGIpe2Eub3B0aW9ucyYmYS5yZWZsb3coYil9KSxuKHRoaXMsImRlc3Ryb3kiLHRoaXMudW5iaW5kUmVmbG93KSl9O0IucHJvdG90eXBlLnNldFNpemU9ZnVuY3Rpb24oYixhLGUpe3ZhciBkPXRoaXMsCmg9ZC5yZW5kZXJlcjtkLmlzUmVzaXppbmcrPTE7WihlLGQpO2U9aC5nbG9iYWxBbmltYXRpb247ZC5vbGRDaGFydEhlaWdodD1kLmNoYXJ0SGVpZ2h0O2Qub2xkQ2hhcnRXaWR0aD1kLmNoYXJ0V2lkdGg7InVuZGVmaW5lZCIhPT10eXBlb2YgYiYmKGQub3B0aW9ucy5jaGFydC53aWR0aD1iKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBhJiYoZC5vcHRpb25zLmNoYXJ0LmhlaWdodD1hKTtkLmdldENoYXJ0U2l6ZSgpO2Quc3R5bGVkTW9kZXx8KGU/cjptKShkLmNvbnRhaW5lcix7d2lkdGg6ZC5jaGFydFdpZHRoKyJweCIsaGVpZ2h0OmQuY2hhcnRIZWlnaHQrInB4In0sZSk7ZC5zZXRDaGFydFNpemUoITApO2guc2V0U2l6ZShkLmNoYXJ0V2lkdGgsZC5jaGFydEhlaWdodCxlKTtkLmF4ZXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmlzRGlydHk9ITA7Yi5zZXRTY2FsZSgpfSk7ZC5pc0RpcnR5TGVnZW5kPSEwO2QuaXNEaXJ0eUJveD0hMDtkLmxheU91dFRpdGxlcygpO2QuZ2V0TWFyZ2lucygpOwpkLnJlZHJhdyhlKTtkLm9sZENoYXJ0SGVpZ2h0PW51bGw7dShkLCJyZXNpemUiKTtZKGZ1bmN0aW9uKCl7ZCYmdShkLCJlbmRSZXNpemUiLG51bGwsZnVuY3Rpb24oKXstLWQuaXNSZXNpemluZ30pfSxDKGUpLmR1cmF0aW9ufHwwKX07Qi5wcm90b3R5cGUuc2V0Q2hhcnRTaXplPWZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMuaW52ZXJ0ZWQsZT10aGlzLnJlbmRlcmVyLGQ9dGhpcy5jaGFydFdpZHRoLGg9dGhpcy5jaGFydEhlaWdodCxjPXRoaXMub3B0aW9ucy5jaGFydCxmPXRoaXMuc3BhY2luZyxsPXRoaXMuY2xpcE9mZnNldCxrLG0scCxnO3RoaXMucGxvdExlZnQ9az1NYXRoLnJvdW5kKHRoaXMucGxvdExlZnQpO3RoaXMucGxvdFRvcD1tPU1hdGgucm91bmQodGhpcy5wbG90VG9wKTt0aGlzLnBsb3RXaWR0aD1wPU1hdGgubWF4KDAsTWF0aC5yb3VuZChkLWstdGhpcy5tYXJnaW5SaWdodCkpO3RoaXMucGxvdEhlaWdodD1nPU1hdGgubWF4KDAsTWF0aC5yb3VuZChoLW0tdGhpcy5tYXJnaW5Cb3R0b20pKTsKdGhpcy5wbG90U2l6ZVg9YT9nOnA7dGhpcy5wbG90U2l6ZVk9YT9wOmc7dGhpcy5wbG90Qm9yZGVyV2lkdGg9Yy5wbG90Qm9yZGVyV2lkdGh8fDA7dGhpcy5zcGFjaW5nQm94PWUuc3BhY2luZ0JveD17eDpmWzNdLHk6ZlswXSx3aWR0aDpkLWZbM10tZlsxXSxoZWlnaHQ6aC1mWzBdLWZbMl19O3RoaXMucGxvdEJveD1lLnBsb3RCb3g9e3g6ayx5Om0sd2lkdGg6cCxoZWlnaHQ6Z307ZD0yKk1hdGguZmxvb3IodGhpcy5wbG90Qm9yZGVyV2lkdGgvMik7YT1NYXRoLmNlaWwoTWF0aC5tYXgoZCxsWzNdKS8yKTtlPU1hdGguY2VpbChNYXRoLm1heChkLGxbMF0pLzIpO3RoaXMuY2xpcEJveD17eDphLHk6ZSx3aWR0aDpNYXRoLmZsb29yKHRoaXMucGxvdFNpemVYLU1hdGgubWF4KGQsbFsxXSkvMi1hKSxoZWlnaHQ6TWF0aC5tYXgoMCxNYXRoLmZsb29yKHRoaXMucGxvdFNpemVZLU1hdGgubWF4KGQsbFsyXSkvMi1lKSl9O2J8fHRoaXMuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2Iuc2V0QXhpc1NpemUoKTsKYi5zZXRBeGlzVHJhbnNsYXRpb24oKX0pO3UodGhpcywiYWZ0ZXJTZXRDaGFydFNpemUiLHtza2lwQXhlczpifSl9O0IucHJvdG90eXBlLnJlc2V0TWFyZ2lucz1mdW5jdGlvbigpe3UodGhpcywicmVzZXRNYXJnaW5zIik7dmFyIGI9dGhpcyxhPWIub3B0aW9ucy5jaGFydDtbIm1hcmdpbiIsInNwYWNpbmciXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBkPWFbZV0saD1GKGQpP2Q6W2QsZCxkLGRdO1siVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0uZm9yRWFjaChmdW5jdGlvbihkLGMpe2JbZV1bY109eihhW2UrZF0saFtjXSl9KX0pO1UuZm9yRWFjaChmdW5jdGlvbihhLGUpe2JbYV09eihiLm1hcmdpbltlXSxiLnNwYWNpbmdbZV0pfSk7Yi5heGlzT2Zmc2V0PVswLDAsMCwwXTtiLmNsaXBPZmZzZXQ9WzAsMCwwLDBdfTtCLnByb3RvdHlwZS5kcmF3Q2hhcnRCb3g9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMuY2hhcnQsYT10aGlzLnJlbmRlcmVyLGU9dGhpcy5jaGFydFdpZHRoLApkPXRoaXMuY2hhcnRIZWlnaHQsaD10aGlzLmNoYXJ0QmFja2dyb3VuZCxjPXRoaXMucGxvdEJhY2tncm91bmQsZj10aGlzLnBsb3RCb3JkZXIsbD10aGlzLnN0eWxlZE1vZGUsaz10aGlzLnBsb3RCR0ltYWdlLG09Yi5iYWNrZ3JvdW5kQ29sb3IscD1iLnBsb3RCYWNrZ3JvdW5kQ29sb3IsZz1iLnBsb3RCYWNrZ3JvdW5kSW1hZ2Usbix4PXRoaXMucGxvdExlZnQsej10aGlzLnBsb3RUb3Asdz10aGlzLnBsb3RXaWR0aCxyPXRoaXMucGxvdEhlaWdodCx0PXRoaXMucGxvdEJveCxBPXRoaXMuY2xpcFJlY3Qsdj10aGlzLmNsaXBCb3gscT0iYW5pbWF0ZSI7aHx8KHRoaXMuY2hhcnRCYWNrZ3JvdW5kPWg9YS5yZWN0KCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYmFja2dyb3VuZCIpLmFkZCgpLHE9ImF0dHIiKTtpZihsKXZhciBDPW49aC5zdHJva2VXaWR0aCgpO2Vsc2V7Qz1iLmJvcmRlcldpZHRofHwwO249QysoYi5zaGFkb3c/ODowKTttPXtmaWxsOm18fCJub25lIn07aWYoQ3x8aFsic3Ryb2tlLXdpZHRoIl0pbS5zdHJva2U9CmIuYm9yZGVyQ29sb3IsbVsic3Ryb2tlLXdpZHRoIl09QztoLmF0dHIobSkuc2hhZG93KGIuc2hhZG93KX1oW3FdKHt4Om4vMix5Om4vMix3aWR0aDplLW4tQyUyLGhlaWdodDpkLW4tQyUyLHI6Yi5ib3JkZXJSYWRpdXN9KTtxPSJhbmltYXRlIjtjfHwocT0iYXR0ciIsdGhpcy5wbG90QmFja2dyb3VuZD1jPWEucmVjdCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXBsb3QtYmFja2dyb3VuZCIpLmFkZCgpKTtjW3FdKHQpO2x8fChjLmF0dHIoe2ZpbGw6cHx8Im5vbmUifSkuc2hhZG93KGIucGxvdFNoYWRvdyksZyYmKGs/KGchPT1rLmF0dHIoImhyZWYiKSYmay5hdHRyKCJocmVmIixnKSxrLmFuaW1hdGUodCkpOnRoaXMucGxvdEJHSW1hZ2U9YS5pbWFnZShnLHgseix3LHIpLmFkZCgpKSk7QT9BLmFuaW1hdGUoe3dpZHRoOnYud2lkdGgsaGVpZ2h0OnYuaGVpZ2h0fSk6dGhpcy5jbGlwUmVjdD1hLmNsaXBSZWN0KHYpO3E9ImFuaW1hdGUiO2Z8fChxPSJhdHRyIix0aGlzLnBsb3RCb3JkZXI9CmY9YS5yZWN0KCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcGxvdC1ib3JkZXIiKS5hdHRyKHt6SW5kZXg6MX0pLmFkZCgpKTtsfHxmLmF0dHIoe3N0cm9rZTpiLnBsb3RCb3JkZXJDb2xvciwic3Ryb2tlLXdpZHRoIjpiLnBsb3RCb3JkZXJXaWR0aHx8MCxmaWxsOiJub25lIn0pO2ZbcV0oZi5jcmlzcCh7eDp4LHk6eix3aWR0aDp3LGhlaWdodDpyfSwtZi5zdHJva2VXaWR0aCgpKSk7dGhpcy5pc0RpcnR5Qm94PSExO3UodGhpcywiYWZ0ZXJEcmF3Q2hhcnRCb3giKX07Qi5wcm90b3R5cGUucHJvcEZyb21TZXJpZXM9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGE9Yi5vcHRpb25zLmNoYXJ0LGUsZD1iLm9wdGlvbnMuc2VyaWVzLGgsYztbImludmVydGVkIiwiYW5ndWxhciIsInBvbGFyIl0uZm9yRWFjaChmdW5jdGlvbihmKXtlPUxbYS50eXBlfHxhLmRlZmF1bHRTZXJpZXNUeXBlXTtjPWFbZl18fGUmJmUucHJvdG90eXBlW2ZdO2ZvcihoPWQmJmQubGVuZ3RoOyFjJiZoLS07KShlPUxbZFtoXS50eXBlXSkmJgplLnByb3RvdHlwZVtmXSYmKGM9ITApO2JbZl09Y30pfTtCLnByb3RvdHlwZS5saW5rU2VyaWVzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxhPWIuc2VyaWVzO2EuZm9yRWFjaChmdW5jdGlvbihiKXtiLmxpbmtlZFNlcmllcy5sZW5ndGg9MH0pO2EuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZT1hLm9wdGlvbnMubGlua2VkVG87UShlKSYmKGU9IjpwcmV2aW91cyI9PT1lP2Iuc2VyaWVzW2EuaW5kZXgtMV06Yi5nZXQoZSkpJiZlLmxpbmtlZFBhcmVudCE9PWEmJihlLmxpbmtlZFNlcmllcy5wdXNoKGEpLGEubGlua2VkUGFyZW50PWUsZS5lbmFibGVkRGF0YVNvcnRpbmcmJmEuc2V0RGF0YVNvcnRpbmdPcHRpb25zKCksYS52aXNpYmxlPXooYS5vcHRpb25zLnZpc2libGUsZS5vcHRpb25zLnZpc2libGUsYS52aXNpYmxlKSl9KTt1KHRoaXMsImFmdGVyTGlua1NlcmllcyIpfTtCLnByb3RvdHlwZS5yZW5kZXJTZXJpZXM9ZnVuY3Rpb24oKXt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IudHJhbnNsYXRlKCk7CmIucmVuZGVyKCl9KX07Qi5wcm90b3R5cGUucmVuZGVyTGFiZWxzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxlPWIub3B0aW9ucy5sYWJlbHM7ZS5pdGVtcyYmZS5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBoPWEoZS5zdHlsZSxkLnN0eWxlKSxjPXgoaC5sZWZ0KStiLnBsb3RMZWZ0LGY9eChoLnRvcCkrYi5wbG90VG9wKzEyO2RlbGV0ZSBoLmxlZnQ7ZGVsZXRlIGgudG9wO2IucmVuZGVyZXIudGV4dChkLmh0bWwsYyxmKS5hdHRyKHt6SW5kZXg6Mn0pLmNzcyhoKS5hZGQoKX0pfTtCLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmF4ZXMsYT10aGlzLmNvbG9yQXhpcyxlPXRoaXMucmVuZGVyZXIsZD10aGlzLm9wdGlvbnMsaD0wLGM9ZnVuY3Rpb24oYil7Yi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IudmlzaWJsZSYmYi5yZW5kZXIoKX0pfTt0aGlzLnNldFRpdGxlKCk7dGhpcy5sZWdlbmQ9bmV3IHEodGhpcyxkLmxlZ2VuZCk7dGhpcy5nZXRTdGFja3MmJgp0aGlzLmdldFN0YWNrcygpO3RoaXMuZ2V0TWFyZ2lucyghMCk7dGhpcy5zZXRDaGFydFNpemUoKTtkPXRoaXMucGxvdFdpZHRoO2Iuc29tZShmdW5jdGlvbihiKXtpZihiLmhvcml6JiZiLnZpc2libGUmJmIub3B0aW9ucy5sYWJlbHMuZW5hYmxlZCYmYi5zZXJpZXMubGVuZ3RoKXJldHVybiBoPTIxLCEwfSk7dmFyIGY9dGhpcy5wbG90SGVpZ2h0PU1hdGgubWF4KHRoaXMucGxvdEhlaWdodC1oLDApO2IuZm9yRWFjaChmdW5jdGlvbihiKXtiLnNldFNjYWxlKCl9KTt0aGlzLmdldEF4aXNNYXJnaW5zKCk7dmFyIGw9MS4xPGQvdGhpcy5wbG90V2lkdGg7dmFyIGs9MS4wNTxmL3RoaXMucGxvdEhlaWdodDtpZihsfHxrKWIuZm9yRWFjaChmdW5jdGlvbihiKXsoYi5ob3JpeiYmbHx8IWIuaG9yaXomJmspJiZiLnNldFRpY2tJbnRlcnZhbCghMCl9KSx0aGlzLmdldE1hcmdpbnMoKTt0aGlzLmRyYXdDaGFydEJveCgpO3RoaXMuaGFzQ2FydGVzaWFuU2VyaWVzP2MoYik6YSYmYS5sZW5ndGgmJgpjKGEpO3RoaXMuc2VyaWVzR3JvdXB8fCh0aGlzLnNlcmllc0dyb3VwPWUuZygic2VyaWVzLWdyb3VwIikuYXR0cih7ekluZGV4OjN9KS5hZGQoKSk7dGhpcy5yZW5kZXJTZXJpZXMoKTt0aGlzLnJlbmRlckxhYmVscygpO3RoaXMuYWRkQ3JlZGl0cygpO3RoaXMuc2V0UmVzcG9uc2l2ZSYmdGhpcy5zZXRSZXNwb25zaXZlKCk7dGhpcy51cGRhdGVDb250YWluZXJTY2FsaW5nKCk7dGhpcy5oYXNSZW5kZXJlZD0hMH07Qi5wcm90b3R5cGUuYWRkQ3JlZGl0cz1mdW5jdGlvbihiKXt2YXIgYT10aGlzLGQ9ZSghMCx0aGlzLm9wdGlvbnMuY3JlZGl0cyxiKTtkLmVuYWJsZWQmJiF0aGlzLmNyZWRpdHMmJih0aGlzLmNyZWRpdHM9dGhpcy5yZW5kZXJlci50ZXh0KGQudGV4dCsodGhpcy5tYXBDcmVkaXRzfHwiIiksMCwwKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1jcmVkaXRzIikub24oImNsaWNrIixmdW5jdGlvbigpe2QuaHJlZiYmKHYubG9jYXRpb24uaHJlZj1kLmhyZWYpfSkuYXR0cih7YWxpZ246ZC5wb3NpdGlvbi5hbGlnbiwKekluZGV4Ojh9KSxhLnN0eWxlZE1vZGV8fHRoaXMuY3JlZGl0cy5jc3MoZC5zdHlsZSksdGhpcy5jcmVkaXRzLmFkZCgpLmFsaWduKGQucG9zaXRpb24pLHRoaXMuY3JlZGl0cy51cGRhdGU9ZnVuY3Rpb24oYil7YS5jcmVkaXRzPWEuY3JlZGl0cy5kZXN0cm95KCk7YS5hZGRDcmVkaXRzKGIpfSl9O0IucHJvdG90eXBlLnVwZGF0ZUNvbnRhaW5lclNjYWxpbmc9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmNvbnRhaW5lcjtpZigyPGIub2Zmc2V0V2lkdGgmJjI8Yi5vZmZzZXRIZWlnaHQmJmIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXt2YXIgYT1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9YS53aWR0aC9iLm9mZnNldFdpZHRoO2I9YS5oZWlnaHQvYi5vZmZzZXRIZWlnaHQ7MSE9PWV8fDEhPT1iP3RoaXMuY29udGFpbmVyU2NhbGluZz17c2NhbGVYOmUsc2NhbGVZOmJ9OmRlbGV0ZSB0aGlzLmNvbnRhaW5lclNjYWxpbmd9fTtCLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGI9CnRoaXMsYT1iLmF4ZXMsZT1iLnNlcmllcyxkPWIuY29udGFpbmVyLGYsbT1kJiZkLnBhcmVudE5vZGU7dShiLCJkZXN0cm95Iik7Yi5yZW5kZXJlci5mb3JFeHBvcnQ/ayh0LGIpOnRbYi5pbmRleF09dm9pZCAwO2MuY2hhcnRDb3VudC0tO2IucmVuZGVyVG8ucmVtb3ZlQXR0cmlidXRlKCJkYXRhLWhpZ2hjaGFydHMtY2hhcnQiKTthYShiKTtmb3IoZj1hLmxlbmd0aDtmLS07KWFbZl09YVtmXS5kZXN0cm95KCk7dGhpcy5zY3JvbGxlciYmdGhpcy5zY3JvbGxlci5kZXN0cm95JiZ0aGlzLnNjcm9sbGVyLmRlc3Ryb3koKTtmb3IoZj1lLmxlbmd0aDtmLS07KWVbZl09ZVtmXS5kZXN0cm95KCk7InRpdGxlIHN1YnRpdGxlIGNoYXJ0QmFja2dyb3VuZCBwbG90QmFja2dyb3VuZCBwbG90QkdJbWFnZSBwbG90Qm9yZGVyIHNlcmllc0dyb3VwIGNsaXBSZWN0IGNyZWRpdHMgcG9pbnRlciByYW5nZVNlbGVjdG9yIGxlZ2VuZCByZXNldFpvb21CdXR0b24gdG9vbHRpcCByZW5kZXJlciIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBlPQpiW2FdO2UmJmUuZGVzdHJveSYmKGJbYV09ZS5kZXN0cm95KCkpfSk7ZCYmKGQuaW5uZXJIVE1MPSIiLGFhKGQpLG0mJmwoZCkpO2goYixmdW5jdGlvbihhLGUpe2RlbGV0ZSBiW2VdfSl9O0IucHJvdG90eXBlLmZpcnN0UmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxhPWIub3B0aW9ucztpZighYi5pc1JlYWR5VG9SZW5kZXJ8fGIuaXNSZWFkeVRvUmVuZGVyKCkpe2IuZ2V0Q29udGFpbmVyKCk7Yi5yZXNldE1hcmdpbnMoKTtiLnNldENoYXJ0U2l6ZSgpO2IucHJvcEZyb21TZXJpZXMoKTtiLmdldEF4ZXMoKTsoUChhLnNlcmllcyk/YS5zZXJpZXM6W10pLmZvckVhY2goZnVuY3Rpb24oYSl7Yi5pbml0U2VyaWVzKGEpfSk7Yi5saW5rU2VyaWVzKCk7Yi5zZXRTZXJpZXNEYXRhKCk7dShiLCJiZWZvcmVSZW5kZXIiKTtIJiYoYi5wb2ludGVyPWMuaGFzVG91Y2h8fCF2LlBvaW50ZXJFdmVudCYmIXYuTVNQb2ludGVyRXZlbnQ/bmV3IEgoYixhKTpuZXcgeShiLGEpKTtiLnJlbmRlcigpOwppZighYi5yZW5kZXJlci5pbWdDb3VudCYmIWIuaGFzTG9hZGVkKWIub25sb2FkKCk7Yi50ZW1wb3JhcnlEaXNwbGF5KCEwKX19O0IucHJvdG90eXBlLm9ubG9hZD1mdW5jdGlvbigpe3RoaXMuY2FsbGJhY2tzLmNvbmNhdChbdGhpcy5jYWxsYmFja10pLmZvckVhY2goZnVuY3Rpb24oYil7YiYmInVuZGVmaW5lZCIhPT10eXBlb2YgdGhpcy5pbmRleCYmYi5hcHBseSh0aGlzLFt0aGlzXSl9LHRoaXMpO3UodGhpcywibG9hZCIpO3UodGhpcywicmVuZGVyIik7ZCh0aGlzLmluZGV4KSYmdGhpcy5zZXRSZWZsb3codGhpcy5vcHRpb25zLmNoYXJ0LnJlZmxvdyk7dGhpcy5oYXNMb2FkZWQ9ITB9O3JldHVybiBCfSgpO1gucHJvdG90eXBlLmNhbGxiYWNrcz1bXTtjLmNoYXJ0PWZ1bmN0aW9uKGIsYSxlKXtyZXR1cm4gbmV3IFgoYixhLGUpfTtyZXR1cm4gYy5DaGFydD1YfSk7TyhxLCJwYXJ0cy9TY3JvbGxhYmxlUGxvdEFyZWEuanMiLFtxWyJwYXJ0cy9DaGFydC5qcyJdLHFbInBhcnRzL0dsb2JhbHMuanMiXSwKcVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyxxKXt2YXIgeT1xLmFkZEV2ZW50LEI9cS5jcmVhdGVFbGVtZW50LEg9cS5waWNrLEQ9cS5zdG9wOyIiO3koZywiYWZ0ZXJTZXRDaGFydFNpemUiLGZ1bmN0aW9uKGcpe3ZhciB0PXRoaXMub3B0aW9ucy5jaGFydC5zY3JvbGxhYmxlUGxvdEFyZWEscT10JiZ0Lm1pbldpZHRoO3Q9dCYmdC5taW5IZWlnaHQ7aWYoIXRoaXMucmVuZGVyZXIuZm9yRXhwb3J0KXtpZihxKXtpZih0aGlzLnNjcm9sbGFibGVQaXhlbHNYPXE9TWF0aC5tYXgoMCxxLXRoaXMuY2hhcnRXaWR0aCkpe3RoaXMucGxvdFdpZHRoKz1xO3RoaXMuaW52ZXJ0ZWQ/KHRoaXMuY2xpcEJveC5oZWlnaHQrPXEsdGhpcy5wbG90Qm94LmhlaWdodCs9cSk6KHRoaXMuY2xpcEJveC53aWR0aCs9cSx0aGlzLnBsb3RCb3gud2lkdGgrPXEpO3ZhciB5PXsxOntuYW1lOiJyaWdodCIsdmFsdWU6cX19fX1lbHNlIHQmJih0aGlzLnNjcm9sbGFibGVQaXhlbHNZPXE9TWF0aC5tYXgoMCwKdC10aGlzLmNoYXJ0SGVpZ2h0KSkmJih0aGlzLnBsb3RIZWlnaHQrPXEsdGhpcy5pbnZlcnRlZD8odGhpcy5jbGlwQm94LndpZHRoKz1xLHRoaXMucGxvdEJveC53aWR0aCs9cSk6KHRoaXMuY2xpcEJveC5oZWlnaHQrPXEsdGhpcy5wbG90Qm94LmhlaWdodCs9cSkseT17Mjp7bmFtZToiYm90dG9tIix2YWx1ZTpxfX0pO3kmJiFnLnNraXBBeGVzJiZ0aGlzLmF4ZXMuZm9yRWFjaChmdW5jdGlvbihnKXt5W2cuc2lkZV0/Zy5nZXRQbG90TGluZVBhdGg9ZnVuY3Rpb24oKXt2YXIgdD15W2cuc2lkZV0ubmFtZSxuPXRoaXNbdF07dGhpc1t0XT1uLXlbZy5zaWRlXS52YWx1ZTt2YXIgcj1jLkF4aXMucHJvdG90eXBlLmdldFBsb3RMaW5lUGF0aC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpc1t0XT1uO3JldHVybiByfTooZy5zZXRBeGlzU2l6ZSgpLGcuc2V0QXhpc1RyYW5zbGF0aW9uKCkpfSl9fSk7eShnLCJyZW5kZXIiLGZ1bmN0aW9uKCl7dGhpcy5zY3JvbGxhYmxlUGl4ZWxzWHx8dGhpcy5zY3JvbGxhYmxlUGl4ZWxzWT8KKHRoaXMuc2V0VXBTY3JvbGxpbmcmJnRoaXMuc2V0VXBTY3JvbGxpbmcoKSx0aGlzLmFwcGx5Rml4ZWQoKSk6dGhpcy5maXhlZERpdiYmdGhpcy5hcHBseUZpeGVkKCl9KTtnLnByb3RvdHlwZS5zZXRVcFNjcm9sbGluZz1mdW5jdGlvbigpe3ZhciBjPXRoaXMsZz17V2Via2l0T3ZlcmZsb3dTY3JvbGxpbmc6InRvdWNoIixvdmVyZmxvd1g6ImhpZGRlbiIsb3ZlcmZsb3dZOiJoaWRkZW4ifTt0aGlzLnNjcm9sbGFibGVQaXhlbHNYJiYoZy5vdmVyZmxvd1g9ImF1dG8iKTt0aGlzLnNjcm9sbGFibGVQaXhlbHNZJiYoZy5vdmVyZmxvd1k9ImF1dG8iKTt0aGlzLnNjcm9sbGluZ0NvbnRhaW5lcj1CKCJkaXYiLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtc2Nyb2xsaW5nIn0sZyx0aGlzLnJlbmRlclRvKTt5KHRoaXMuc2Nyb2xsaW5nQ29udGFpbmVyLCJzY3JvbGwiLGZ1bmN0aW9uKCl7Yy5wb2ludGVyJiZkZWxldGUgYy5wb2ludGVyLmNoYXJ0UG9zaXRpb259KTt0aGlzLmlubmVyQ29udGFpbmVyPQpCKCJkaXYiLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtaW5uZXItY29udGFpbmVyIn0sbnVsbCx0aGlzLnNjcm9sbGluZ0NvbnRhaW5lcik7dGhpcy5pbm5lckNvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLmNvbnRhaW5lcik7dGhpcy5zZXRVcFNjcm9sbGluZz1udWxsfTtnLnByb3RvdHlwZS5tb3ZlRml4ZWRFbGVtZW50cz1mdW5jdGlvbigpe3ZhciBjPXRoaXMuY29udGFpbmVyLGc9dGhpcy5maXhlZFJlbmRlcmVyLHE9Ii5oaWdoY2hhcnRzLWNvbnRleHRidXR0b24gLmhpZ2hjaGFydHMtY3JlZGl0cyAuaGlnaGNoYXJ0cy1sZWdlbmQgLmhpZ2hjaGFydHMtbGVnZW5kLWNoZWNrYm94IC5oaWdoY2hhcnRzLW5hdmlnYXRvci1zZXJpZXMgLmhpZ2hjaGFydHMtbmF2aWdhdG9yLXhheGlzIC5oaWdoY2hhcnRzLW5hdmlnYXRvci15YXhpcyAuaGlnaGNoYXJ0cy1uYXZpZ2F0b3IgLmhpZ2hjaGFydHMtcmVzZXQtem9vbSAuaGlnaGNoYXJ0cy1zY3JvbGxiYXIgLmhpZ2hjaGFydHMtc3VidGl0bGUgLmhpZ2hjaGFydHMtdGl0bGUiLnNwbGl0KCIgIiksCnk7dGhpcy5zY3JvbGxhYmxlUGl4ZWxzWCYmIXRoaXMuaW52ZXJ0ZWQ/eT0iLmhpZ2hjaGFydHMteWF4aXMiOnRoaXMuc2Nyb2xsYWJsZVBpeGVsc1gmJnRoaXMuaW52ZXJ0ZWQ/eT0iLmhpZ2hjaGFydHMteGF4aXMiOnRoaXMuc2Nyb2xsYWJsZVBpeGVsc1kmJiF0aGlzLmludmVydGVkP3k9Ii5oaWdoY2hhcnRzLXhheGlzIjp0aGlzLnNjcm9sbGFibGVQaXhlbHNZJiZ0aGlzLmludmVydGVkJiYoeT0iLmhpZ2hjaGFydHMteWF4aXMiKTtxLnB1c2goeSx5KyItbGFiZWxzIik7cS5mb3JFYWNoKGZ1bmN0aW9uKHQpe1tdLmZvckVhY2guY2FsbChjLnF1ZXJ5U2VsZWN0b3JBbGwodCksZnVuY3Rpb24oYyl7KGMubmFtZXNwYWNlVVJJPT09Zy5TVkdfTlM/Zy5ib3g6Zy5ib3gucGFyZW50Tm9kZSkuYXBwZW5kQ2hpbGQoYyk7Yy5zdHlsZS5wb2ludGVyRXZlbnRzPSJhdXRvIn0pfSl9O2cucHJvdG90eXBlLmFwcGx5Rml4ZWQ9ZnVuY3Rpb24oKXt2YXIgZyx0LHE9IXRoaXMuZml4ZWREaXYsTD0KdGhpcy5vcHRpb25zLmNoYXJ0LnNjcm9sbGFibGVQbG90QXJlYTtxPyh0aGlzLmZpeGVkRGl2PUIoImRpdiIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1maXhlZCJ9LHtwb3NpdGlvbjoiYWJzb2x1dGUiLG92ZXJmbG93OiJoaWRkZW4iLHBvaW50ZXJFdmVudHM6Im5vbmUiLHpJbmRleDoyfSxudWxsLCEwKSx0aGlzLnJlbmRlclRvLmluc2VydEJlZm9yZSh0aGlzLmZpeGVkRGl2LHRoaXMucmVuZGVyVG8uZmlyc3RDaGlsZCksdGhpcy5yZW5kZXJUby5zdHlsZS5vdmVyZmxvdz0idmlzaWJsZSIsdGhpcy5maXhlZFJlbmRlcmVyPXQ9bmV3IGMuUmVuZGVyZXIodGhpcy5maXhlZERpdix0aGlzLmNoYXJ0V2lkdGgsdGhpcy5jaGFydEhlaWdodCxudWxsPT09KGc9dGhpcy5vcHRpb25zLmNoYXJ0KXx8dm9pZCAwPT09Zz92b2lkIDA6Zy5zdHlsZSksdGhpcy5zY3JvbGxhYmxlTWFzaz10LnBhdGgoKS5hdHRyKHtmaWxsOnRoaXMub3B0aW9ucy5jaGFydC5iYWNrZ3JvdW5kQ29sb3J8fCIjZmZmIiwKImZpbGwtb3BhY2l0eSI6SChMLm9wYWNpdHksLjg1KSx6SW5kZXg6LTF9KS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1zY3JvbGxhYmxlLW1hc2siKS5hZGQoKSx0aGlzLm1vdmVGaXhlZEVsZW1lbnRzKCkseSh0aGlzLCJhZnRlclNob3dSZXNldFpvb20iLHRoaXMubW92ZUZpeGVkRWxlbWVudHMpLHkodGhpcywiYWZ0ZXJMYXlPdXRUaXRsZXMiLHRoaXMubW92ZUZpeGVkRWxlbWVudHMpKTp0aGlzLmZpeGVkUmVuZGVyZXIuc2V0U2l6ZSh0aGlzLmNoYXJ0V2lkdGgsdGhpcy5jaGFydEhlaWdodCk7Zz10aGlzLmNoYXJ0V2lkdGgrKHRoaXMuc2Nyb2xsYWJsZVBpeGVsc1h8fDApO3Q9dGhpcy5jaGFydEhlaWdodCsodGhpcy5zY3JvbGxhYmxlUGl4ZWxzWXx8MCk7RCh0aGlzLmNvbnRhaW5lcik7dGhpcy5jb250YWluZXIuc3R5bGUud2lkdGg9ZysicHgiO3RoaXMuY29udGFpbmVyLnN0eWxlLmhlaWdodD10KyJweCI7dGhpcy5yZW5kZXJlci5ib3hXcmFwcGVyLmF0dHIoe3dpZHRoOmcsaGVpZ2h0OnQsCnZpZXdCb3g6WzAsMCxnLHRdLmpvaW4oIiAiKX0pO3RoaXMuY2hhcnRCYWNrZ3JvdW5kLmF0dHIoe3dpZHRoOmcsaGVpZ2h0OnR9KTt0aGlzLnNjcm9sbGluZ0NvbnRhaW5lci5zdHlsZS5oZWlnaHQ9dGhpcy5jaGFydEhlaWdodCsicHgiO3EmJihMLnNjcm9sbFBvc2l0aW9uWCYmKHRoaXMuc2Nyb2xsaW5nQ29udGFpbmVyLnNjcm9sbExlZnQ9dGhpcy5zY3JvbGxhYmxlUGl4ZWxzWCpMLnNjcm9sbFBvc2l0aW9uWCksTC5zY3JvbGxQb3NpdGlvblkmJih0aGlzLnNjcm9sbGluZ0NvbnRhaW5lci5zY3JvbGxUb3A9dGhpcy5zY3JvbGxhYmxlUGl4ZWxzWSpMLnNjcm9sbFBvc2l0aW9uWSkpO3Q9dGhpcy5heGlzT2Zmc2V0O3E9dGhpcy5wbG90VG9wLXRbMF0tMTtMPXRoaXMucGxvdExlZnQtdFszXS0xO2c9dGhpcy5wbG90VG9wK3RoaXMucGxvdEhlaWdodCt0WzJdKzE7dD10aGlzLnBsb3RMZWZ0K3RoaXMucGxvdFdpZHRoK3RbMV0rMTt2YXIgdj10aGlzLnBsb3RMZWZ0K3RoaXMucGxvdFdpZHRoLQoodGhpcy5zY3JvbGxhYmxlUGl4ZWxzWHx8MCksSz10aGlzLnBsb3RUb3ArdGhpcy5wbG90SGVpZ2h0LSh0aGlzLnNjcm9sbGFibGVQaXhlbHNZfHwwKTtxPXRoaXMuc2Nyb2xsYWJsZVBpeGVsc1g/W1siTSIsMCxxXSxbIkwiLHRoaXMucGxvdExlZnQtMSxxXSxbIkwiLHRoaXMucGxvdExlZnQtMSxnXSxbIkwiLDAsZ10sWyJaIl0sWyJNIix2LHFdLFsiTCIsdGhpcy5jaGFydFdpZHRoLHFdLFsiTCIsdGhpcy5jaGFydFdpZHRoLGddLFsiTCIsdixnXSxbIloiXV06dGhpcy5zY3JvbGxhYmxlUGl4ZWxzWT9bWyJNIixMLDBdLFsiTCIsTCx0aGlzLnBsb3RUb3AtMV0sWyJMIix0LHRoaXMucGxvdFRvcC0xXSxbIkwiLHQsMF0sWyJaIl0sWyJNIixMLEtdLFsiTCIsTCx0aGlzLmNoYXJ0SGVpZ2h0XSxbIkwiLHQsdGhpcy5jaGFydEhlaWdodF0sWyJMIix0LEtdLFsiWiJdXTpbWyJNIiwwLDBdXTsiYWRqdXN0SGVpZ2h0IiE9PXRoaXMucmVkcmF3VHJpZ2dlciYmdGhpcy5zY3JvbGxhYmxlTWFzay5hdHRyKHtkOnF9KX19KTsKTyhxLCJwYXJ0cy9TdGFja2luZ0F4aXMuanMiLFtxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyl7dmFyIGM9Zy5hZGRFdmVudCxxPWcuZGVzdHJveU9iamVjdFByb3BlcnRpZXMseT1nLmZpcmVFdmVudCxCPWcub2JqZWN0RWFjaCxIPWcucGljayxEPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhjKXt0aGlzLm9sZFN0YWNrcz17fTt0aGlzLnN0YWNrcz17fTt0aGlzLnN0YWNrc1RvdWNoZWQ9MDt0aGlzLmF4aXM9Y31jLnByb3RvdHlwZS5idWlsZFN0YWNrcz1mdW5jdGlvbigpe3ZhciBjPXRoaXMuYXhpcyxnPWMuc2VyaWVzLHE9SChjLm9wdGlvbnMucmV2ZXJzZWRTdGFja3MsITApLHY9Zy5sZW5ndGgsRDtpZighYy5pc1hBeGlzKXt0aGlzLnVzZVBlcmNlbnRhZ2U9ITE7Zm9yKEQ9djtELS07KXt2YXIgbj1nW3E/RDp2LUQtMV07bi5zZXRTdGFja2VkUG9pbnRzKCk7bi5zZXRHcm91cGVkUG9pbnRzKCl9Zm9yKEQ9MDtEPHY7RCsrKWdbRF0ubW9kaWZ5U3RhY2tzKCk7eShjLAoiYWZ0ZXJCdWlsZFN0YWNrcyIpfX07Yy5wcm90b3R5cGUuY2xlYW5TdGFja3M9ZnVuY3Rpb24oKXtpZighdGhpcy5heGlzLmlzWEF4aXMpe2lmKHRoaXMub2xkU3RhY2tzKXZhciBjPXRoaXMuc3RhY2tzPXRoaXMub2xkU3RhY2tzO0IoYyxmdW5jdGlvbihjKXtCKGMsZnVuY3Rpb24oYyl7Yy5jdW11bGF0aXZlPWMudG90YWx9KX0pfX07Yy5wcm90b3R5cGUucmVzZXRTdGFja3M9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGc9Yy5zdGFja3M7Yy5heGlzLmlzWEF4aXN8fEIoZyxmdW5jdGlvbihnKXtCKGcsZnVuY3Rpb24ocSx0KXtxLnRvdWNoZWQ8Yy5zdGFja3NUb3VjaGVkPyhxLmRlc3Ryb3koKSxkZWxldGUgZ1t0XSk6KHEudG90YWw9bnVsbCxxLmN1bXVsYXRpdmU9bnVsbCl9KX0pfTtjLnByb3RvdHlwZS5yZW5kZXJTdGFja1RvdGFscz1mdW5jdGlvbigpe3ZhciBjPXRoaXMuYXhpcy5jaGFydCxnPWMucmVuZGVyZXIscT10aGlzLnN0YWNrcyx2PXRoaXMuc3RhY2tUb3RhbEdyb3VwPXRoaXMuc3RhY2tUb3RhbEdyb3VwfHwKZy5nKCJzdGFjay1sYWJlbHMiKS5hdHRyKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIix6SW5kZXg6Nn0pLmFkZCgpO3YudHJhbnNsYXRlKGMucGxvdExlZnQsYy5wbG90VG9wKTtCKHEsZnVuY3Rpb24oYyl7QihjLGZ1bmN0aW9uKGMpe2MucmVuZGVyKHYpfSl9KX07cmV0dXJuIGN9KCk7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZygpe31nLmNvbXBvc2U9ZnVuY3Rpb24ocSl7YyhxLCJpbml0IixnLm9uSW5pdCk7YyhxLCJkZXN0cm95IixnLm9uRGVzdHJveSl9O2cub25EZXN0cm95PWZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5zdGFja2luZztpZihjKXt2YXIgZz1jLnN0YWNrcztCKGcsZnVuY3Rpb24oYyx0KXtxKGMpO2dbdF09bnVsbH0pO2MmJmMuc3RhY2tUb3RhbEdyb3VwJiZjLnN0YWNrVG90YWxHcm91cC5kZXN0cm95KCl9fTtnLm9uSW5pdD1mdW5jdGlvbigpe3RoaXMuc3RhY2tpbmd8fCh0aGlzLnN0YWNraW5nPW5ldyBEKHRoaXMpKX07cmV0dXJuIGd9KCl9KTtPKHEsIm1peGlucy9sZWdlbmQtc3ltYm9sLmpzIiwKW3FbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjKXt2YXIgcT1jLm1lcmdlLHk9Yy5waWNrO2cuTGVnZW5kU3ltYm9sTWl4aW49e2RyYXdSZWN0YW5nbGU6ZnVuY3Rpb24oYyxnKXt2YXIgcT1jLnN5bWJvbEhlaWdodCxCPWMub3B0aW9ucy5zcXVhcmVTeW1ib2w7Zy5sZWdlbmRTeW1ib2w9dGhpcy5jaGFydC5yZW5kZXJlci5yZWN0KEI/KGMuc3ltYm9sV2lkdGgtcSkvMjowLGMuYmFzZWxpbmUtcSsxLEI/cTpjLnN5bWJvbFdpZHRoLHEseShjLm9wdGlvbnMuc3ltYm9sUmFkaXVzLHEvMikpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXBvaW50IikuYXR0cih7ekluZGV4OjN9KS5hZGQoZy5sZWdlbmRHcm91cCl9LGRyYXdMaW5lTWFya2VyOmZ1bmN0aW9uKGMpe3ZhciBnPXRoaXMub3B0aW9ucyxEPWcubWFya2VyLEI9Yy5zeW1ib2xXaWR0aCx0PWMuc3ltYm9sSGVpZ2h0LEc9dC8yLEw9dGhpcy5jaGFydC5yZW5kZXJlcix2PXRoaXMubGVnZW5kR3JvdXA7CmM9Yy5iYXNlbGluZS1NYXRoLnJvdW5kKC4zKmMuZm9udE1ldHJpY3MuYik7dmFyIEs9e307dGhpcy5jaGFydC5zdHlsZWRNb2RlfHwoSz17InN0cm9rZS13aWR0aCI6Zy5saW5lV2lkdGh8fDB9LGcuZGFzaFN0eWxlJiYoSy5kYXNoc3R5bGU9Zy5kYXNoU3R5bGUpKTt0aGlzLmxlZ2VuZExpbmU9TC5wYXRoKFsiTSIsMCxjLCJMIixCLGNdKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1ncmFwaCIpLmF0dHIoSykuYWRkKHYpO0QmJiExIT09RC5lbmFibGVkJiZCJiYoZz1NYXRoLm1pbih5KEQucmFkaXVzLEcpLEcpLDA9PT10aGlzLnN5bWJvbC5pbmRleE9mKCJ1cmwiKSYmKEQ9cShELHt3aWR0aDp0LGhlaWdodDp0fSksZz0wKSx0aGlzLmxlZ2VuZFN5bWJvbD1EPUwuc3ltYm9sKHRoaXMuc3ltYm9sLEIvMi1nLGMtZywyKmcsMipnLEQpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXBvaW50IikuYWRkKHYpLEQuaXNNYXJrZXI9ITApfX07cmV0dXJuIGcuTGVnZW5kU3ltYm9sTWl4aW59KTtPKHEsInBhcnRzL1BvaW50LmpzIiwKW3FbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjKXt2YXIgcT1jLmFuaW1PYmplY3QseT1jLmRlZmluZWQsQj1jLmVyYXNlLEg9Yy5leHRlbmQsRD1jLmZpcmVFdmVudCxKPWMuZm9ybWF0LHQ9Yy5nZXROZXN0ZWRQcm9wZXJ0eSxHPWMuaXNBcnJheSxMPWMuaXNOdW1iZXIsdj1jLmlzT2JqZWN0LEs9Yy5zeW5jVGltZW91dCxuPWMucGljayxyPWMucmVtb3ZlRXZlbnQsQz1jLnVuaXF1ZUtleTsiIjtjPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYygpe3RoaXMuY29sb3JJbmRleD10aGlzLmNhdGVnb3J5PXZvaWQgMDt0aGlzLmZvcm1hdFByZWZpeD0icG9pbnQiO3RoaXMuaWQ9dm9pZCAwO3RoaXMuaXNOdWxsPSExO3RoaXMucGVyY2VudGFnZT10aGlzLm9wdGlvbnM9dGhpcy5uYW1lPXZvaWQgMDt0aGlzLnNlbGVjdGVkPSExO3RoaXMudG90YWw9dGhpcy5zZXJpZXM9dm9pZCAwO3RoaXMudmlzaWJsZT0hMDt0aGlzLng9dm9pZCAwfWMucHJvdG90eXBlLmFuaW1hdGVCZWZvcmVEZXN0cm95PQpmdW5jdGlvbigpe3ZhciBjPXRoaXMsbT17eDpjLnN0YXJ0WFBvcyxvcGFjaXR5OjB9LGQsbD1jLmdldEdyYXBoaWNhbFByb3BzKCk7bC5zaW5ndWxhci5mb3JFYWNoKGZ1bmN0aW9uKGwpe2Q9ImRhdGFMYWJlbCI9PT1sO2NbbF09Y1tsXS5hbmltYXRlKGQ/e3g6Y1tsXS5zdGFydFhQb3MseTpjW2xdLnN0YXJ0WVBvcyxvcGFjaXR5OjB9Om0pfSk7bC5wbHVyYWwuZm9yRWFjaChmdW5jdGlvbihkKXtjW2RdLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5lbGVtZW50JiZkLmFuaW1hdGUoSCh7eDpjLnN0YXJ0WFBvc30sZC5zdGFydFlQb3M/e3g6ZC5zdGFydFhQb3MseTpkLnN0YXJ0WVBvc306e30pKX0pfSl9O2MucHJvdG90eXBlLmFwcGx5T3B0aW9ucz1mdW5jdGlvbihwLG0pe3ZhciBkPXRoaXMuc2VyaWVzLGw9ZC5vcHRpb25zLnBvaW50VmFsS2V5fHxkLnBvaW50VmFsS2V5O3A9Yy5wcm90b3R5cGUub3B0aW9uc1RvT2JqZWN0LmNhbGwodGhpcyxwKTtIKHRoaXMscCk7dGhpcy5vcHRpb25zPQp0aGlzLm9wdGlvbnM/SCh0aGlzLm9wdGlvbnMscCk6cDtwLmdyb3VwJiZkZWxldGUgdGhpcy5ncm91cDtwLmRhdGFMYWJlbHMmJmRlbGV0ZSB0aGlzLmRhdGFMYWJlbHM7bCYmKHRoaXMueT1jLnByb3RvdHlwZS5nZXROZXN0ZWRQcm9wZXJ0eS5jYWxsKHRoaXMsbCkpO3RoaXMuZm9ybWF0UHJlZml4PSh0aGlzLmlzTnVsbD1uKHRoaXMuaXNWYWxpZCYmIXRoaXMuaXNWYWxpZCgpLG51bGw9PT10aGlzLnh8fCFMKHRoaXMueSkpKT8ibnVsbCI6InBvaW50Ijt0aGlzLnNlbGVjdGVkJiYodGhpcy5zdGF0ZT0ic2VsZWN0Iik7Im5hbWUiaW4gdGhpcyYmInVuZGVmaW5lZCI9PT10eXBlb2YgbSYmZC54QXhpcyYmZC54QXhpcy5oYXNOYW1lcyYmKHRoaXMueD1kLnhBeGlzLm5hbWVUb1godGhpcykpOyJ1bmRlZmluZWQiPT09dHlwZW9mIHRoaXMueCYmZCYmKHRoaXMueD0idW5kZWZpbmVkIj09PXR5cGVvZiBtP2QuYXV0b0luY3JlbWVudCh0aGlzKTptKTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuZGVzdHJveT0KZnVuY3Rpb24oKXtmdW5jdGlvbiBjKCl7aWYobS5ncmFwaGljfHxtLmRhdGFMYWJlbHx8bS5kYXRhTGFiZWxzKXIobSksbS5kZXN0cm95RWxlbWVudHMoKTtmb3IoYSBpbiBtKW1bYV09bnVsbH12YXIgbT10aGlzLGQ9bS5zZXJpZXMsbD1kLmNoYXJ0O2Q9ZC5vcHRpb25zLmRhdGFTb3J0aW5nO3ZhciBrPWwuaG92ZXJQb2ludHMsZj1xKG0uc2VyaWVzLmNoYXJ0LnJlbmRlcmVyLmdsb2JhbEFuaW1hdGlvbiksYTttLmxlZ2VuZEl0ZW0mJmwubGVnZW5kLmRlc3Ryb3lJdGVtKG0pO2smJihtLnNldFN0YXRlKCksQihrLG0pLGsubGVuZ3RofHwobC5ob3ZlclBvaW50cz1udWxsKSk7aWYobT09PWwuaG92ZXJQb2ludCltLm9uTW91c2VPdXQoKTtkJiZkLmVuYWJsZWQ/KHRoaXMuYW5pbWF0ZUJlZm9yZURlc3Ryb3koKSxLKGMsZi5kdXJhdGlvbikpOmMoKTtsLnBvaW50Q291bnQtLX07Yy5wcm90b3R5cGUuZGVzdHJveUVsZW1lbnRzPWZ1bmN0aW9uKGMpe3ZhciBtPXRoaXM7Yz1tLmdldEdyYXBoaWNhbFByb3BzKGMpOwpjLnNpbmd1bGFyLmZvckVhY2goZnVuY3Rpb24oZCl7bVtkXT1tW2RdLmRlc3Ryb3koKX0pO2MucGx1cmFsLmZvckVhY2goZnVuY3Rpb24oZCl7bVtkXS5mb3JFYWNoKGZ1bmN0aW9uKGQpe2QuZWxlbWVudCYmZC5kZXN0cm95KCl9KTtkZWxldGUgbVtkXX0pfTtjLnByb3RvdHlwZS5maXJlUG9pbnRFdmVudD1mdW5jdGlvbihjLG0sZCl7dmFyIGw9dGhpcyxrPXRoaXMuc2VyaWVzLm9wdGlvbnM7KGsucG9pbnQuZXZlbnRzW2NdfHxsLm9wdGlvbnMmJmwub3B0aW9ucy5ldmVudHMmJmwub3B0aW9ucy5ldmVudHNbY10pJiZsLmltcG9ydEV2ZW50cygpOyJjbGljayI9PT1jJiZrLmFsbG93UG9pbnRTZWxlY3QmJihkPWZ1bmN0aW9uKGQpe2wuc2VsZWN0JiZsLnNlbGVjdChudWxsLGQuY3RybEtleXx8ZC5tZXRhS2V5fHxkLnNoaWZ0S2V5KX0pO0QobCxjLG0sZCl9O2MucHJvdG90eXBlLmdldENsYXNzTmFtZT1mdW5jdGlvbigpe3JldHVybiJoaWdoY2hhcnRzLXBvaW50IisodGhpcy5zZWxlY3RlZD8KIiBoaWdoY2hhcnRzLXBvaW50LXNlbGVjdCI6IiIpKyh0aGlzLm5lZ2F0aXZlPyIgaGlnaGNoYXJ0cy1uZWdhdGl2ZSI6IiIpKyh0aGlzLmlzTnVsbD8iIGhpZ2hjaGFydHMtbnVsbC1wb2ludCI6IiIpKygidW5kZWZpbmVkIiE9PXR5cGVvZiB0aGlzLmNvbG9ySW5kZXg/IiBoaWdoY2hhcnRzLWNvbG9yLSIrdGhpcy5jb2xvckluZGV4OiIiKSsodGhpcy5vcHRpb25zLmNsYXNzTmFtZT8iICIrdGhpcy5vcHRpb25zLmNsYXNzTmFtZToiIikrKHRoaXMuem9uZSYmdGhpcy56b25lLmNsYXNzTmFtZT8iICIrdGhpcy56b25lLmNsYXNzTmFtZS5yZXBsYWNlKCJoaWdoY2hhcnRzLW5lZ2F0aXZlIiwiIik6IiIpfTtjLnByb3RvdHlwZS5nZXRHcmFwaGljYWxQcm9wcz1mdW5jdGlvbihjKXt2YXIgbT10aGlzLGQ9W10sbCxrPXtzaW5ndWxhcjpbXSxwbHVyYWw6W119O2M9Y3x8e2dyYXBoaWM6MSxkYXRhTGFiZWw6MX07Yy5ncmFwaGljJiZkLnB1c2goImdyYXBoaWMiLCJzaGFkb3dHcm91cCIpOwpjLmRhdGFMYWJlbCYmZC5wdXNoKCJkYXRhTGFiZWwiLCJkYXRhTGFiZWxVcHBlciIsImNvbm5lY3RvciIpO2ZvcihsPWQubGVuZ3RoO2wtLTspe3ZhciBmPWRbbF07bVtmXSYmay5zaW5ndWxhci5wdXNoKGYpfVsiZGF0YUxhYmVsIiwiY29ubmVjdG9yIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZD1hKyJzIjtjW2FdJiZtW2RdJiZrLnBsdXJhbC5wdXNoKGQpfSk7cmV0dXJuIGt9O2MucHJvdG90eXBlLmdldExhYmVsQ29uZmlnPWZ1bmN0aW9uKCl7cmV0dXJue3g6dGhpcy5jYXRlZ29yeSx5OnRoaXMueSxjb2xvcjp0aGlzLmNvbG9yLGNvbG9ySW5kZXg6dGhpcy5jb2xvckluZGV4LGtleTp0aGlzLm5hbWV8fHRoaXMuY2F0ZWdvcnksc2VyaWVzOnRoaXMuc2VyaWVzLHBvaW50OnRoaXMscGVyY2VudGFnZTp0aGlzLnBlcmNlbnRhZ2UsdG90YWw6dGhpcy50b3RhbHx8dGhpcy5zdGFja1RvdGFsfX07Yy5wcm90b3R5cGUuZ2V0TmVzdGVkUHJvcGVydHk9ZnVuY3Rpb24oYyl7aWYoYylyZXR1cm4gMD09PQpjLmluZGV4T2YoImN1c3RvbS4iKT90KGMsdGhpcy5vcHRpb25zKTp0aGlzW2NdfTtjLnByb3RvdHlwZS5nZXRab25lPWZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5zZXJpZXMsbT1jLnpvbmVzO2M9Yy56b25lQXhpc3x8InkiO3ZhciBkPTAsbDtmb3IobD1tW2RdO3RoaXNbY10+PWwudmFsdWU7KWw9bVsrK2RdO3RoaXMubm9uWm9uZWRDb2xvcnx8KHRoaXMubm9uWm9uZWRDb2xvcj10aGlzLmNvbG9yKTt0aGlzLmNvbG9yPWwmJmwuY29sb3ImJiF0aGlzLm9wdGlvbnMuY29sb3I/bC5jb2xvcjp0aGlzLm5vblpvbmVkQ29sb3I7cmV0dXJuIGx9O2MucHJvdG90eXBlLmhhc05ld1NoYXBlVHlwZT1mdW5jdGlvbigpe3JldHVybih0aGlzLmdyYXBoaWMmJih0aGlzLmdyYXBoaWMuc3ltYm9sTmFtZXx8dGhpcy5ncmFwaGljLmVsZW1lbnQubm9kZU5hbWUpKSE9PXRoaXMuc2hhcGVUeXBlfTtjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGMsbSxkKXt0aGlzLnNlcmllcz1jO3RoaXMuYXBwbHlPcHRpb25zKG0sCmQpO3RoaXMuaWQ9eSh0aGlzLmlkKT90aGlzLmlkOkMoKTt0aGlzLnJlc29sdmVDb2xvcigpO2MuY2hhcnQucG9pbnRDb3VudCsrO0QodGhpcywiYWZ0ZXJJbml0Iik7cmV0dXJuIHRoaXN9O2MucHJvdG90eXBlLm9wdGlvbnNUb09iamVjdD1mdW5jdGlvbihnKXt2YXIgbT17fSxkPXRoaXMuc2VyaWVzLGw9ZC5vcHRpb25zLmtleXMsaz1sfHxkLnBvaW50QXJyYXlNYXB8fFsieSJdLGY9ay5sZW5ndGgsYT0wLHA9MDtpZihMKGcpfHxudWxsPT09ZyltW2tbMF1dPWc7ZWxzZSBpZihHKGcpKWZvcighbCYmZy5sZW5ndGg+ZiYmKGQ9dHlwZW9mIGdbMF0sInN0cmluZyI9PT1kP20ubmFtZT1nWzBdOiJudW1iZXIiPT09ZCYmKG0ueD1nWzBdKSxhKyspO3A8ZjspbCYmInVuZGVmaW5lZCI9PT10eXBlb2YgZ1thXXx8KDA8a1twXS5pbmRleE9mKCIuIik/Yy5wcm90b3R5cGUuc2V0TmVzdGVkUHJvcGVydHkobSxnW2FdLGtbcF0pOm1ba1twXV09Z1thXSksYSsrLHArKztlbHNlIm9iamVjdCI9PT0KdHlwZW9mIGcmJihtPWcsZy5kYXRhTGFiZWxzJiYoZC5faGFzUG9pbnRMYWJlbHM9ITApLGcubWFya2VyJiYoZC5faGFzUG9pbnRNYXJrZXJzPSEwKSk7cmV0dXJuIG19O2MucHJvdG90eXBlLnJlc29sdmVDb2xvcj1mdW5jdGlvbigpe3ZhciBjPXRoaXMuc2VyaWVzO3ZhciBtPWMuY2hhcnQub3B0aW9ucy5jaGFydC5jb2xvckNvdW50O3ZhciBkPWMuY2hhcnQuc3R5bGVkTW9kZTtkZWxldGUgdGhpcy5ub25ab25lZENvbG9yO2R8fHRoaXMub3B0aW9ucy5jb2xvcnx8KHRoaXMuY29sb3I9Yy5jb2xvcik7Yy5vcHRpb25zLmNvbG9yQnlQb2ludD8oZHx8KG09Yy5vcHRpb25zLmNvbG9yc3x8Yy5jaGFydC5vcHRpb25zLmNvbG9ycyx0aGlzLmNvbG9yPXRoaXMuY29sb3J8fG1bYy5jb2xvckNvdW50ZXJdLG09bS5sZW5ndGgpLGQ9Yy5jb2xvckNvdW50ZXIsYy5jb2xvckNvdW50ZXIrKyxjLmNvbG9yQ291bnRlcj09PW0mJihjLmNvbG9yQ291bnRlcj0wKSk6ZD1jLmNvbG9ySW5kZXg7dGhpcy5jb2xvckluZGV4PQpuKHRoaXMuY29sb3JJbmRleCxkKX07Yy5wcm90b3R5cGUuc2V0TmVzdGVkUHJvcGVydHk9ZnVuY3Rpb24oYyxtLGQpe2Quc3BsaXQoIi4iKS5yZWR1Y2UoZnVuY3Rpb24oZCxjLGYsYSl7ZFtjXT1hLmxlbmd0aC0xPT09Zj9tOnYoZFtjXSwhMCk/ZFtjXTp7fTtyZXR1cm4gZFtjXX0sYyk7cmV0dXJuIGN9O2MucHJvdG90eXBlLnRvb2x0aXBGb3JtYXR0ZXI9ZnVuY3Rpb24oYyl7dmFyIG09dGhpcy5zZXJpZXMsZD1tLnRvb2x0aXBPcHRpb25zLGw9bihkLnZhbHVlRGVjaW1hbHMsIiIpLGs9ZC52YWx1ZVByZWZpeHx8IiIsZj1kLnZhbHVlU3VmZml4fHwiIjttLmNoYXJ0LnN0eWxlZE1vZGUmJihjPW0uY2hhcnQudG9vbHRpcC5zdHlsZWRNb2RlRm9ybWF0KGMpKTsobS5wb2ludEFycmF5TWFwfHxbInkiXSkuZm9yRWFjaChmdW5jdGlvbihhKXthPSJ7cG9pbnQuIithO2lmKGt8fGYpYz1jLnJlcGxhY2UoUmVnRXhwKGErIn0iLCJnIiksaythKyJ9IitmKTtjPWMucmVwbGFjZShSZWdFeHAoYSsKIn0iLCJnIiksYSsiOiwuIitsKyJmfSIpfSk7cmV0dXJuIEooYyx7cG9pbnQ6dGhpcyxzZXJpZXM6dGhpcy5zZXJpZXN9LG0uY2hhcnQpfTtyZXR1cm4gY30oKTtyZXR1cm4gZy5Qb2ludD1jfSk7TyhxLCJwYXJ0cy9TZXJpZXMuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsibWl4aW5zL2xlZ2VuZC1zeW1ib2wuanMiXSxxWyJwYXJ0cy9PcHRpb25zLmpzIl0scVsicGFydHMvUG9pbnQuanMiXSxxWyJwYXJ0cy9TVkdFbGVtZW50LmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyxxLHksQixIKXt2YXIgRD1xLmRlZmF1bHRPcHRpb25zLEo9SC5hZGRFdmVudCx0PUguYW5pbU9iamVjdCxHPUguYXJyYXlNYXgsTD1ILmFycmF5TWluLHY9SC5jbGFtcCxLPUguY29ycmVjdEZsb2F0LG49SC5kZWZpbmVkLHI9SC5lcmFzZSxDPUguZXJyb3IsST1ILmV4dGVuZCxwPUguZmluZCxtPUguZmlyZUV2ZW50LGQ9SC5nZXROZXN0ZWRQcm9wZXJ0eSxsPUguaXNBcnJheSwKaz1ILmlzRnVuY3Rpb24sZj1ILmlzTnVtYmVyLGE9SC5pc1N0cmluZyxBPUgubWVyZ2UsdT1ILm9iamVjdEVhY2gsRT1ILnBpY2ssUD1ILnJlbW92ZUV2ZW50O3E9SC5zZXJpZXNUeXBlO3ZhciB3PUguc3BsYXQsTT1ILnN5bmNUaW1lb3V0OyIiO3ZhciBGPWcuc2VyaWVzVHlwZXMsUT1nLndpbjtnLlNlcmllcz1xKCJsaW5lIixudWxsLHtsaW5lV2lkdGg6MixhbGxvd1BvaW50U2VsZWN0OiExLGNyaXNwOiEwLHNob3dDaGVja2JveDohMSxhbmltYXRpb246e2R1cmF0aW9uOjFFM30sZXZlbnRzOnt9LG1hcmtlcjp7ZW5hYmxlZFRocmVzaG9sZDoyLGxpbmVDb2xvcjoiI2ZmZmZmZiIsbGluZVdpZHRoOjAscmFkaXVzOjQsc3RhdGVzOntub3JtYWw6e2FuaW1hdGlvbjohMH0saG92ZXI6e2FuaW1hdGlvbjp7ZHVyYXRpb246NTB9LGVuYWJsZWQ6ITAscmFkaXVzUGx1czoyLGxpbmVXaWR0aFBsdXM6MX0sc2VsZWN0OntmaWxsQ29sb3I6IiNjY2NjY2MiLGxpbmVDb2xvcjoiIzAwMDAwMCIsCmxpbmVXaWR0aDoyfX19LHBvaW50OntldmVudHM6e319LGRhdGFMYWJlbHM6e2FsaWduOiJjZW50ZXIiLGZvcm1hdHRlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VyaWVzLmNoYXJ0Lm51bWJlckZvcm1hdHRlcjtyZXR1cm4ibnVtYmVyIiE9PXR5cGVvZiB0aGlzLnk/IiI6YSh0aGlzLnksLTEpfSxwYWRkaW5nOjUsc3R5bGU6e2ZvbnRTaXplOiIxMXB4Iixmb250V2VpZ2h0OiJib2xkIixjb2xvcjoiY29udHJhc3QiLHRleHRPdXRsaW5lOiIxcHggY29udHJhc3QifSx2ZXJ0aWNhbEFsaWduOiJib3R0b20iLHg6MCx5OjB9LGNyb3BUaHJlc2hvbGQ6MzAwLG9wYWNpdHk6MSxwb2ludFJhbmdlOjAsc29mdFRocmVzaG9sZDohMCxzdGF0ZXM6e25vcm1hbDp7YW5pbWF0aW9uOiEwfSxob3Zlcjp7YW5pbWF0aW9uOntkdXJhdGlvbjo1MH0sbGluZVdpZHRoUGx1czoxLG1hcmtlcjp7fSxoYWxvOntzaXplOjEwLG9wYWNpdHk6LjI1fX0sc2VsZWN0OnthbmltYXRpb246e2R1cmF0aW9uOjB9fSwKaW5hY3RpdmU6e2FuaW1hdGlvbjp7ZHVyYXRpb246NTB9LG9wYWNpdHk6LjJ9fSxzdGlja3lUcmFja2luZzohMCx0dXJib1RocmVzaG9sZDoxRTMsZmluZE5lYXJlc3RQb2ludEJ5OiJ4In0se2F4aXNUeXBlczpbInhBeGlzIiwieUF4aXMiXSxjb2xsOiJzZXJpZXMiLGNvbG9yQ291bnRlcjowLGNyb3BTaG91bGRlcjoxLGRpcmVjdFRvdWNoOiExLGV2ZW50c1RvVW5iaW5kOltdLGlzQ2FydGVzaWFuOiEwLHBhcmFsbGVsQXJyYXlzOlsieCIsInkiXSxwb2ludENsYXNzOnkscmVxdWlyZVNvcnRpbmc6ITAsc29ydGVkOiEwLGluaXQ6ZnVuY3Rpb24oYSxiKXttKHRoaXMsImluaXQiLHtvcHRpb25zOmJ9KTt2YXIgZT10aGlzLGQ9YS5zZXJpZXMsYzt0aGlzLmV2ZW50T3B0aW9ucz10aGlzLmV2ZW50T3B0aW9uc3x8e307ZS5jaGFydD1hO2Uub3B0aW9ucz1iPWUuc2V0T3B0aW9ucyhiKTtlLmxpbmtlZFNlcmllcz1bXTtlLmJpbmRBeGVzKCk7SShlLHtuYW1lOmIubmFtZSxzdGF0ZToiIix2aXNpYmxlOiExIT09CmIudmlzaWJsZSxzZWxlY3RlZDohMD09PWIuc2VsZWN0ZWR9KTt2YXIgZj1iLmV2ZW50czt1KGYsZnVuY3Rpb24oYixhKXtrKGIpJiZlLmV2ZW50T3B0aW9uc1thXSE9PWImJihrKGUuZXZlbnRPcHRpb25zW2FdKSYmUChlLGEsZS5ldmVudE9wdGlvbnNbYV0pLGUuZXZlbnRPcHRpb25zW2FdPWIsSihlLGEsYikpfSk7aWYoZiYmZi5jbGlja3x8Yi5wb2ludCYmYi5wb2ludC5ldmVudHMmJmIucG9pbnQuZXZlbnRzLmNsaWNrfHxiLmFsbG93UG9pbnRTZWxlY3QpYS5ydW5UcmFja2VyQ2xpY2s9ITA7ZS5nZXRDb2xvcigpO2UuZ2V0U3ltYm9sKCk7ZS5wYXJhbGxlbEFycmF5cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2VbYisiRGF0YSJdfHwoZVtiKyJEYXRhIl09W10pfSk7ZS5pc0NhcnRlc2lhbiYmKGEuaGFzQ2FydGVzaWFuU2VyaWVzPSEwKTtkLmxlbmd0aCYmKGM9ZFtkLmxlbmd0aC0xXSk7ZS5faT1FKGMmJmMuX2ksLTEpKzE7ZS5vcGFjaXR5PWUub3B0aW9ucy5vcGFjaXR5O2Eub3JkZXJTZXJpZXModGhpcy5pbnNlcnQoZCkpOwpiLmRhdGFTb3J0aW5nJiZiLmRhdGFTb3J0aW5nLmVuYWJsZWQ/ZS5zZXREYXRhU29ydGluZ09wdGlvbnMoKTplLnBvaW50c3x8ZS5kYXRhfHxlLnNldERhdGEoYi5kYXRhLCExKTttKHRoaXMsImFmdGVySW5pdCIpfSxpczpmdW5jdGlvbihhKXtyZXR1cm4gRlthXSYmdGhpcyBpbnN0YW5jZW9mIEZbYV19LGluc2VydDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLm9wdGlvbnMuaW5kZXgsZTtpZihmKGIpKXtmb3IoZT1hLmxlbmd0aDtlLS07KWlmKGI+PUUoYVtlXS5vcHRpb25zLmluZGV4LGFbZV0uX2kpKXthLnNwbGljZShlKzEsMCx0aGlzKTticmVha30tMT09PWUmJmEudW5zaGlmdCh0aGlzKTtlKz0xfWVsc2UgYS5wdXNoKHRoaXMpO3JldHVybiBFKGUsYS5sZW5ndGgtMSl9LGJpbmRBeGVzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEub3B0aW9ucyxkPWEuY2hhcnQsYzttKHRoaXMsImJpbmRBeGVzIixudWxsLGZ1bmN0aW9uKCl7KGEuYXhpc1R5cGVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihlKXtkW2VdLmZvckVhY2goZnVuY3Rpb24oZCl7Yz0KZC5vcHRpb25zO2lmKGJbZV09PT1jLmluZGV4fHwidW5kZWZpbmVkIiE9PXR5cGVvZiBiW2VdJiZiW2VdPT09Yy5pZHx8InVuZGVmaW5lZCI9PT10eXBlb2YgYltlXSYmMD09PWMuaW5kZXgpYS5pbnNlcnQoZC5zZXJpZXMpLGFbZV09ZCxkLmlzRGlydHk9ITB9KTthW2VdfHxhLm9wdGlvbmFsQXhpcz09PWV8fEMoMTgsITAsZCl9KX0pO20odGhpcywiYWZ0ZXJCaW5kQXhlcyIpfSx1cGRhdGVQYXJhbGxlbEFycmF5czpmdW5jdGlvbihhLGIpe3ZhciBlPWEuc2VyaWVzLGQ9YXJndW1lbnRzLGM9ZihiKT9mdW5jdGlvbihkKXt2YXIgYz0ieSI9PT1kJiZlLnRvWURhdGE/ZS50b1lEYXRhKGEpOmFbZF07ZVtkKyJEYXRhIl1bYl09Y306ZnVuY3Rpb24oYSl7QXJyYXkucHJvdG90eXBlW2JdLmFwcGx5KGVbYSsiRGF0YSJdLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGQsMikpfTtlLnBhcmFsbGVsQXJyYXlzLmZvckVhY2goYyl9LGhhc0RhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52aXNpYmxlJiYKInVuZGVmaW5lZCIhPT10eXBlb2YgdGhpcy5kYXRhTWF4JiYidW5kZWZpbmVkIiE9PXR5cGVvZiB0aGlzLmRhdGFNaW58fHRoaXMudmlzaWJsZSYmdGhpcy55RGF0YSYmMDx0aGlzLnlEYXRhLmxlbmd0aH0sYXV0b0luY3JlbWVudDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucyxiPXRoaXMueEluY3JlbWVudCxkLGM9YS5wb2ludEludGVydmFsVW5pdCxmPXRoaXMuY2hhcnQudGltZTtiPUUoYixhLnBvaW50U3RhcnQsMCk7dGhpcy5wb2ludEludGVydmFsPWQ9RSh0aGlzLnBvaW50SW50ZXJ2YWwsYS5wb2ludEludGVydmFsLDEpO2MmJihhPW5ldyBmLkRhdGUoYiksImRheSI9PT1jP2Yuc2V0KCJEYXRlIixhLGYuZ2V0KCJEYXRlIixhKStkKToibW9udGgiPT09Yz9mLnNldCgiTW9udGgiLGEsZi5nZXQoIk1vbnRoIixhKStkKToieWVhciI9PT1jJiZmLnNldCgiRnVsbFllYXIiLGEsZi5nZXQoIkZ1bGxZZWFyIixhKStkKSxkPWEuZ2V0VGltZSgpLWIpO3RoaXMueEluY3JlbWVudD0KYitkO3JldHVybiBifSxzZXREYXRhU29ydGluZ09wdGlvbnM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnM7SSh0aGlzLHtyZXF1aXJlU29ydGluZzohMSxzb3J0ZWQ6ITEsZW5hYmxlZERhdGFTb3J0aW5nOiEwLGFsbG93REc6ITF9KTtuKGEucG9pbnRSYW5nZSl8fChhLnBvaW50UmFuZ2U9MSl9LHNldE9wdGlvbnM6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jaGFydCxlPWIub3B0aW9ucyxkPWUucGxvdE9wdGlvbnMsYz1iLnVzZXJPcHRpb25zfHx7fTthPUEoYSk7Yj1iLnN0eWxlZE1vZGU7dmFyIGY9e3Bsb3RPcHRpb25zOmQsdXNlck9wdGlvbnM6YX07bSh0aGlzLCJzZXRPcHRpb25zIixmKTt2YXIgbD1mLnBsb3RPcHRpb25zW3RoaXMudHlwZV0saz1jLnBsb3RPcHRpb25zfHx7fTt0aGlzLnVzZXJPcHRpb25zPWYudXNlck9wdGlvbnM7Yz1BKGwsZC5zZXJpZXMsYy5wbG90T3B0aW9ucyYmYy5wbG90T3B0aW9uc1t0aGlzLnR5cGVdLGEpO3RoaXMudG9vbHRpcE9wdGlvbnM9CkEoRC50b29sdGlwLEQucGxvdE9wdGlvbnMuc2VyaWVzJiZELnBsb3RPcHRpb25zLnNlcmllcy50b29sdGlwLEQucGxvdE9wdGlvbnNbdGhpcy50eXBlXS50b29sdGlwLGUudG9vbHRpcC51c2VyT3B0aW9ucyxkLnNlcmllcyYmZC5zZXJpZXMudG9vbHRpcCxkW3RoaXMudHlwZV0udG9vbHRpcCxhLnRvb2x0aXApO3RoaXMuc3RpY2t5VHJhY2tpbmc9RShhLnN0aWNreVRyYWNraW5nLGtbdGhpcy50eXBlXSYma1t0aGlzLnR5cGVdLnN0aWNreVRyYWNraW5nLGsuc2VyaWVzJiZrLnNlcmllcy5zdGlja3lUcmFja2luZyx0aGlzLnRvb2x0aXBPcHRpb25zLnNoYXJlZCYmIXRoaXMubm9TaGFyZWRUb29sdGlwPyEwOmMuc3RpY2t5VHJhY2tpbmcpO251bGw9PT1sLm1hcmtlciYmZGVsZXRlIGMubWFya2VyO3RoaXMuem9uZUF4aXM9Yy56b25lQXhpcztlPXRoaXMuem9uZXM9KGMuem9uZXN8fFtdKS5zbGljZSgpOyFjLm5lZ2F0aXZlQ29sb3ImJiFjLm5lZ2F0aXZlRmlsbENvbG9yfHxjLnpvbmVzfHwKKGQ9e3ZhbHVlOmNbdGhpcy56b25lQXhpcysiVGhyZXNob2xkIl18fGMudGhyZXNob2xkfHwwLGNsYXNzTmFtZToiaGlnaGNoYXJ0cy1uZWdhdGl2ZSJ9LGJ8fChkLmNvbG9yPWMubmVnYXRpdmVDb2xvcixkLmZpbGxDb2xvcj1jLm5lZ2F0aXZlRmlsbENvbG9yKSxlLnB1c2goZCkpO2UubGVuZ3RoJiZuKGVbZS5sZW5ndGgtMV0udmFsdWUpJiZlLnB1c2goYj97fTp7Y29sb3I6dGhpcy5jb2xvcixmaWxsQ29sb3I6dGhpcy5maWxsQ29sb3J9KTttKHRoaXMsImFmdGVyU2V0T3B0aW9ucyIse29wdGlvbnM6Y30pO3JldHVybiBjfSxnZXROYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIEUodGhpcy5vcHRpb25zLm5hbWUsIlNlcmllcyAiKyh0aGlzLmluZGV4KzEpKX0sZ2V0Q3ljbGljOmZ1bmN0aW9uKGEsYixkKXt2YXIgZT10aGlzLmNoYXJ0LGM9dGhpcy51c2VyT3B0aW9ucyxoPWErIkluZGV4IixmPWErIkNvdW50ZXIiLGw9ZD9kLmxlbmd0aDpFKGUub3B0aW9ucy5jaGFydFthKyJDb3VudCJdLAplW2ErIkNvdW50Il0pO2lmKCFiKXt2YXIgaz1FKGNbaF0sY1siXyIraF0pO24oayl8fChlLnNlcmllcy5sZW5ndGh8fChlW2ZdPTApLGNbIl8iK2hdPWs9ZVtmXSVsLGVbZl0rPTEpO2QmJihiPWRba10pfSJ1bmRlZmluZWQiIT09dHlwZW9mIGsmJih0aGlzW2hdPWspO3RoaXNbYV09Yn0sZ2V0Q29sb3I6ZnVuY3Rpb24oKXt0aGlzLmNoYXJ0LnN0eWxlZE1vZGU/dGhpcy5nZXRDeWNsaWMoImNvbG9yIik6dGhpcy5vcHRpb25zLmNvbG9yQnlQb2ludD90aGlzLm9wdGlvbnMuY29sb3I9bnVsbDp0aGlzLmdldEN5Y2xpYygiY29sb3IiLHRoaXMub3B0aW9ucy5jb2xvcnx8RC5wbG90T3B0aW9uc1t0aGlzLnR5cGVdLmNvbG9yLHRoaXMuY2hhcnQub3B0aW9ucy5jb2xvcnMpfSxnZXRQb2ludHNDb2xsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuaGFzR3JvdXBlZERhdGE/dGhpcy5wb2ludHM6dGhpcy5kYXRhKXx8W119LGdldFN5bWJvbDpmdW5jdGlvbigpe3RoaXMuZ2V0Q3ljbGljKCJzeW1ib2wiLAp0aGlzLm9wdGlvbnMubWFya2VyLnN5bWJvbCx0aGlzLmNoYXJ0Lm9wdGlvbnMuc3ltYm9scyl9LGZpbmRQb2ludEluZGV4OmZ1bmN0aW9uKGEsYil7dmFyIGU9YS5pZCxkPWEueCxjPXRoaXMucG9pbnRzLGwsaz10aGlzLm9wdGlvbnMuZGF0YVNvcnRpbmc7aWYoZSl2YXIgbT10aGlzLmNoYXJ0LmdldChlKTtlbHNlIGlmKHRoaXMubGlua2VkUGFyZW50fHx0aGlzLmVuYWJsZWREYXRhU29ydGluZyl7dmFyIGc9ayYmay5tYXRjaEJ5TmFtZT8ibmFtZSI6ImluZGV4IjttPXAoYyxmdW5jdGlvbihiKXtyZXR1cm4hYi50b3VjaGVkJiZiW2ddPT09YVtnXX0pO2lmKCFtKXJldHVybn1pZihtKXt2YXIgbj1tJiZtLmluZGV4OyJ1bmRlZmluZWQiIT09dHlwZW9mIG4mJihsPSEwKX0idW5kZWZpbmVkIj09PXR5cGVvZiBuJiZmKGQpJiYobj10aGlzLnhEYXRhLmluZGV4T2YoZCxiKSk7LTEhPT1uJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBuJiZ0aGlzLmNyb3BwZWQmJihuPW4+PXRoaXMuY3JvcFN0YXJ0PwpuLXRoaXMuY3JvcFN0YXJ0Om4pOyFsJiZjW25dJiZjW25dLnRvdWNoZWQmJihuPXZvaWQgMCk7cmV0dXJuIG59LGRyYXdMZWdlbmRTeW1ib2w6Yy5kcmF3TGluZU1hcmtlcix1cGRhdGVEYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGU9dGhpcy5vcHRpb25zLGQ9ZS5kYXRhU29ydGluZyxjPXRoaXMucG9pbnRzLGw9W10sayxtLGcscD10aGlzLnJlcXVpcmVTb3J0aW5nLHU9YS5sZW5ndGg9PT1jLmxlbmd0aCx3PSEwO3RoaXMueEluY3JlbWVudD1udWxsO2EuZm9yRWFjaChmdW5jdGlvbihiLGEpe3ZhciBoPW4oYikmJnRoaXMucG9pbnRDbGFzcy5wcm90b3R5cGUub3B0aW9uc1RvT2JqZWN0LmNhbGwoe3Nlcmllczp0aGlzfSxiKXx8e307dmFyIG09aC54O2lmKGguaWR8fGYobSkpe2lmKG09dGhpcy5maW5kUG9pbnRJbmRleChoLGcpLC0xPT09bXx8InVuZGVmaW5lZCI9PT10eXBlb2YgbT9sLnB1c2goYik6Y1ttXSYmYiE9PWUuZGF0YVttXT8oY1ttXS51cGRhdGUoYiwhMSxudWxsLCExKSwKY1ttXS50b3VjaGVkPSEwLHAmJihnPW0rMSkpOmNbbV0mJihjW21dLnRvdWNoZWQ9ITApLCF1fHxhIT09bXx8ZCYmZC5lbmFibGVkfHx0aGlzLmhhc0Rlcml2ZWREYXRhKWs9ITB9ZWxzZSBsLnB1c2goYil9LHRoaXMpO2lmKGspZm9yKGE9Yy5sZW5ndGg7YS0tOykobT1jW2FdKSYmIW0udG91Y2hlZCYmbS5yZW1vdmUmJm0ucmVtb3ZlKCExLGIpO2Vsc2UhdXx8ZCYmZC5lbmFibGVkP3c9ITE6KGEuZm9yRWFjaChmdW5jdGlvbihiLGEpe2NbYV0udXBkYXRlJiZiIT09Y1thXS55JiZjW2FdLnVwZGF0ZShiLCExLG51bGwsITEpfSksbC5sZW5ndGg9MCk7Yy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2ImJihiLnRvdWNoZWQ9ITEpfSk7aWYoIXcpcmV0dXJuITE7bC5mb3JFYWNoKGZ1bmN0aW9uKGIpe3RoaXMuYWRkUG9pbnQoYiwhMSxudWxsLG51bGwsITEpfSx0aGlzKTtudWxsPT09dGhpcy54SW5jcmVtZW50JiZ0aGlzLnhEYXRhJiZ0aGlzLnhEYXRhLmxlbmd0aCYmKHRoaXMueEluY3JlbWVudD0KRyh0aGlzLnhEYXRhKSx0aGlzLmF1dG9JbmNyZW1lbnQoKSk7cmV0dXJuITB9LHNldERhdGE6ZnVuY3Rpb24oZSxiLGQsYyl7dmFyIGg9dGhpcyxrPWgucG9pbnRzLG09ayYmay5sZW5ndGh8fDAsZyxwPWgub3B0aW9ucyxuPWguY2hhcnQsdT1wLmRhdGFTb3J0aW5nLHc9bnVsbCx6PWgueEF4aXM7dz1wLnR1cmJvVGhyZXNob2xkO3ZhciByPXRoaXMueERhdGEscT10aGlzLnlEYXRhLEE9KGc9aC5wb2ludEFycmF5TWFwKSYmZy5sZW5ndGgsdD1wLmtleXMsdj0wLEY9MSxNO2U9ZXx8W107Zz1lLmxlbmd0aDtiPUUoYiwhMCk7dSYmdS5lbmFibGVkJiYoZT10aGlzLnNvcnREYXRhKGUpKTshMSE9PWMmJmcmJm0mJiFoLmNyb3BwZWQmJiFoLmhhc0dyb3VwZWREYXRhJiZoLnZpc2libGUmJiFoLmlzU2VyaWVzQm9vc3RpbmcmJihNPXRoaXMudXBkYXRlRGF0YShlLGQpKTtpZighTSl7aC54SW5jcmVtZW50PW51bGw7aC5jb2xvckNvdW50ZXI9MDt0aGlzLnBhcmFsbGVsQXJyYXlzLmZvckVhY2goZnVuY3Rpb24oYil7aFtiKwoiRGF0YSJdLmxlbmd0aD0wfSk7aWYodyYmZz53KWlmKHc9aC5nZXRGaXJzdFZhbGlkUG9pbnQoZSksZih3KSlmb3IoZD0wO2Q8ZztkKyspcltkXT10aGlzLmF1dG9JbmNyZW1lbnQoKSxxW2RdPWVbZF07ZWxzZSBpZihsKHcpKWlmKEEpZm9yKGQ9MDtkPGc7ZCsrKWM9ZVtkXSxyW2RdPWNbMF0scVtkXT1jLnNsaWNlKDEsQSsxKTtlbHNlIGZvcih0JiYodj10LmluZGV4T2YoIngiKSxGPXQuaW5kZXhPZigieSIpLHY9MDw9dj92OjAsRj0wPD1GP0Y6MSksZD0wO2Q8ZztkKyspYz1lW2RdLHJbZF09Y1t2XSxxW2RdPWNbRl07ZWxzZSBDKDEyLCExLG4pO2Vsc2UgZm9yKGQ9MDtkPGc7ZCsrKSJ1bmRlZmluZWQiIT09dHlwZW9mIGVbZF0mJihjPXtzZXJpZXM6aH0saC5wb2ludENsYXNzLnByb3RvdHlwZS5hcHBseU9wdGlvbnMuYXBwbHkoYyxbZVtkXV0pLGgudXBkYXRlUGFyYWxsZWxBcnJheXMoYyxkKSk7cSYmYShxWzBdKSYmQygxNCwhMCxuKTtoLmRhdGE9W107aC5vcHRpb25zLmRhdGE9CmgudXNlck9wdGlvbnMuZGF0YT1lO2ZvcihkPW07ZC0tOylrW2RdJiZrW2RdLmRlc3Ryb3kmJmtbZF0uZGVzdHJveSgpO3omJih6Lm1pblJhbmdlPXoudXNlck1pblJhbmdlKTtoLmlzRGlydHk9bi5pc0RpcnR5Qm94PSEwO2guaXNEaXJ0eURhdGE9ISFrO2Q9ITF9InBvaW50Ij09PXAubGVnZW5kVHlwZSYmKHRoaXMucHJvY2Vzc0RhdGEoKSx0aGlzLmdlbmVyYXRlUG9pbnRzKCkpO2ImJm4ucmVkcmF3KGQpfSxzb3J0RGF0YTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGU9Yi5vcHRpb25zLmRhdGFTb3J0aW5nLnNvcnRLZXl8fCJ5IixjPWZ1bmN0aW9uKGIsYSl7cmV0dXJuIG4oYSkmJmIucG9pbnRDbGFzcy5wcm90b3R5cGUub3B0aW9uc1RvT2JqZWN0LmNhbGwoe3NlcmllczpifSxhKXx8e319O2EuZm9yRWFjaChmdW5jdGlvbihlLGQpe2FbZF09YyhiLGUpO2FbZF0uaW5kZXg9ZH0sdGhpcyk7YS5jb25jYXQoKS5zb3J0KGZ1bmN0aW9uKGIsYSl7Yj1kKGUsYik7YT1kKGUsYSk7cmV0dXJuIGE8CmI/LTE6YT5iPzE6MH0pLmZvckVhY2goZnVuY3Rpb24oYixhKXtiLng9YX0sdGhpcyk7Yi5saW5rZWRTZXJpZXMmJmIubGlua2VkU2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGU9Yi5vcHRpb25zLGQ9ZS5kYXRhO2UuZGF0YVNvcnRpbmcmJmUuZGF0YVNvcnRpbmcuZW5hYmxlZHx8IWR8fChkLmZvckVhY2goZnVuY3Rpb24oZSxoKXtkW2hdPWMoYixlKTthW2hdJiYoZFtoXS54PWFbaF0ueCxkW2hdLmluZGV4PWgpfSksYi5zZXREYXRhKGQsITEpKX0pO3JldHVybiBhfSxnZXRQcm9jZXNzZWREYXRhOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMueERhdGEsZT10aGlzLnlEYXRhLGQ9Yi5sZW5ndGg7dmFyIGM9MDt2YXIgZj10aGlzLnhBeGlzLGw9dGhpcy5vcHRpb25zO3ZhciBrPWwuY3JvcFRocmVzaG9sZDt2YXIgbT1hfHx0aGlzLmdldEV4dHJlbWVzRnJvbUFsbHx8bC5nZXRFeHRyZW1lc0Zyb21BbGwsZz10aGlzLmlzQ2FydGVzaWFuO2E9ZiYmZi52YWwybGluO2w9ISghZnx8IWYubG9nYXJpdGhtaWMpOwp2YXIgcD10aGlzLnJlcXVpcmVTb3J0aW5nO2lmKGYpe2Y9Zi5nZXRFeHRyZW1lcygpO3ZhciBuPWYubWluO3ZhciB3PWYubWF4fWlmKGcmJnRoaXMuc29ydGVkJiYhbSYmKCFrfHxkPmt8fHRoaXMuZm9yY2VDcm9wKSlpZihiW2QtMV08bnx8YlswXT53KWI9W10sZT1bXTtlbHNlIGlmKHRoaXMueURhdGEmJihiWzBdPG58fGJbZC0xXT53KSl7Yz10aGlzLmNyb3BEYXRhKHRoaXMueERhdGEsdGhpcy55RGF0YSxuLHcpO2I9Yy54RGF0YTtlPWMueURhdGE7Yz1jLnN0YXJ0O3ZhciB1PSEwfWZvcihrPWIubGVuZ3RofHwxOy0tazspaWYoZD1sP2EoYltrXSktYShiW2stMV0pOmJba10tYltrLTFdLDA8ZCYmKCJ1bmRlZmluZWQiPT09dHlwZW9mIHJ8fGQ8cikpdmFyIHI9ZDtlbHNlIDA+ZCYmcCYmKEMoMTUsITEsdGhpcy5jaGFydCkscD0hMSk7cmV0dXJue3hEYXRhOmIseURhdGE6ZSxjcm9wcGVkOnUsY3JvcFN0YXJ0OmMsY2xvc2VzdFBvaW50UmFuZ2U6cn19LHByb2Nlc3NEYXRhOmZ1bmN0aW9uKGEpe3ZhciBiPQp0aGlzLnhBeGlzO2lmKHRoaXMuaXNDYXJ0ZXNpYW4mJiF0aGlzLmlzRGlydHkmJiFiLmlzRGlydHkmJiF0aGlzLnlBeGlzLmlzRGlydHkmJiFhKXJldHVybiExO2E9dGhpcy5nZXRQcm9jZXNzZWREYXRhKCk7dGhpcy5jcm9wcGVkPWEuY3JvcHBlZDt0aGlzLmNyb3BTdGFydD1hLmNyb3BTdGFydDt0aGlzLnByb2Nlc3NlZFhEYXRhPWEueERhdGE7dGhpcy5wcm9jZXNzZWRZRGF0YT1hLnlEYXRhO3RoaXMuY2xvc2VzdFBvaW50UmFuZ2U9dGhpcy5iYXNlUG9pbnRSYW5nZT1hLmNsb3Nlc3RQb2ludFJhbmdlfSxjcm9wRGF0YTpmdW5jdGlvbihhLGIsZCxjLGYpe3ZhciBlPWEubGVuZ3RoLGg9MCxrPWUsbDtmPUUoZix0aGlzLmNyb3BTaG91bGRlcik7Zm9yKGw9MDtsPGU7bCsrKWlmKGFbbF0+PWQpe2g9TWF0aC5tYXgoMCxsLWYpO2JyZWFrfWZvcihkPWw7ZDxlO2QrKylpZihhW2RdPmMpe2s9ZCtmO2JyZWFrfXJldHVybnt4RGF0YTphLnNsaWNlKGgsaykseURhdGE6Yi5zbGljZShoLGspLApzdGFydDpoLGVuZDprfX0sZ2VuZXJhdGVQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsYj1hLmRhdGEsZD10aGlzLmRhdGEsYyxmPXRoaXMucHJvY2Vzc2VkWERhdGEsaz10aGlzLnByb2Nlc3NlZFlEYXRhLGw9dGhpcy5wb2ludENsYXNzLGc9Zi5sZW5ndGgscD10aGlzLmNyb3BTdGFydHx8MCxuPXRoaXMuaGFzR3JvdXBlZERhdGE7YT1hLmtleXM7dmFyIHU9W10scjtkfHxufHwoZD1bXSxkLmxlbmd0aD1iLmxlbmd0aCxkPXRoaXMuZGF0YT1kKTthJiZuJiYodGhpcy5vcHRpb25zLmtleXM9ITEpO2ZvcihyPTA7cjxnO3IrKyl7dmFyIHE9cCtyO2lmKG4pe3ZhciBBPShuZXcgbCkuaW5pdCh0aGlzLFtmW3JdXS5jb25jYXQodyhrW3JdKSkpO0EuZGF0YUdyb3VwPXRoaXMuZ3JvdXBNYXBbcl07QS5kYXRhR3JvdXAub3B0aW9ucyYmKEEub3B0aW9ucz1BLmRhdGFHcm91cC5vcHRpb25zLEkoQSxBLmRhdGFHcm91cC5vcHRpb25zKSxkZWxldGUgQS5kYXRhTGFiZWxzKX1lbHNlKEE9CmRbcV0pfHwidW5kZWZpbmVkIj09PXR5cGVvZiBiW3FdfHwoZFtxXT1BPShuZXcgbCkuaW5pdCh0aGlzLGJbcV0sZltyXSkpO0EmJihBLmluZGV4PXEsdVtyXT1BKX10aGlzLm9wdGlvbnMua2V5cz1hO2lmKGQmJihnIT09KGM9ZC5sZW5ndGgpfHxuKSlmb3Iocj0wO3I8YztyKyspciE9PXB8fG58fChyKz1nKSxkW3JdJiYoZFtyXS5kZXN0cm95RWxlbWVudHMoKSxkW3JdLnBsb3RYPXZvaWQgMCk7dGhpcy5kYXRhPWQ7dGhpcy5wb2ludHM9dTttKHRoaXMsImFmdGVyR2VuZXJhdGVQb2ludHMiKX0sZ2V0WEV4dHJlbWVzOmZ1bmN0aW9uKGEpe3JldHVybnttaW46TChhKSxtYXg6RyhhKX19LGdldEV4dHJlbWVzOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy54QXhpcyxlPXRoaXMueUF4aXMsYz10aGlzLnByb2Nlc3NlZFhEYXRhfHx0aGlzLnhEYXRhLGs9W10sZz0wLHA9MDt2YXIgbj0wO3ZhciB3PXRoaXMucmVxdWlyZVNvcnRpbmc/dGhpcy5jcm9wU2hvdWxkZXI6MCx1PWU/ZS5wb3NpdGl2ZVZhbHVlc09ubHk6CiExLHI7YT1hfHx0aGlzLnN0YWNrZWRZRGF0YXx8dGhpcy5wcm9jZXNzZWRZRGF0YXx8W107ZT1hLmxlbmd0aDtkJiYobj1kLmdldEV4dHJlbWVzKCkscD1uLm1pbixuPW4ubWF4KTtmb3Iocj0wO3I8ZTtyKyspe3ZhciBxPWNbcl07dmFyIEE9YVtyXTt2YXIgdD0oZihBKXx8bChBKSkmJihBLmxlbmd0aHx8MDxBfHwhdSk7cT1ifHx0aGlzLmdldEV4dHJlbWVzRnJvbUFsbHx8dGhpcy5vcHRpb25zLmdldEV4dHJlbWVzRnJvbUFsbHx8dGhpcy5jcm9wcGVkfHwhZHx8KGNbcit3XXx8cSk+PXAmJihjW3Itd118fHEpPD1uO2lmKHQmJnEpaWYodD1BLmxlbmd0aClmb3IoO3QtLTspZihBW3RdKSYmKGtbZysrXT1BW3RdKTtlbHNlIGtbZysrXT1BfWE9e2RhdGFNaW46TChrKSxkYXRhTWF4Okcoayl9O20odGhpcywiYWZ0ZXJHZXRFeHRyZW1lcyIse2RhdGFFeHRyZW1lczphfSk7cmV0dXJuIGF9LGFwcGx5RXh0cmVtZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEV4dHJlbWVzKCk7dGhpcy5kYXRhTWluPQphLmRhdGFNaW47dGhpcy5kYXRhTWF4PWEuZGF0YU1heDtyZXR1cm4gYX0sZ2V0Rmlyc3RWYWxpZFBvaW50OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1udWxsLGQ9YS5sZW5ndGgsZT0wO251bGw9PT1iJiZlPGQ7KWI9YVtlXSxlKys7cmV0dXJuIGJ9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3RoaXMucHJvY2Vzc2VkWERhdGF8fHRoaXMucHJvY2Vzc0RhdGEoKTt0aGlzLmdlbmVyYXRlUG9pbnRzKCk7dmFyIGE9dGhpcy5vcHRpb25zLGI9YS5zdGFja2luZyxkPXRoaXMueEF4aXMsYz1kLmNhdGVnb3JpZXMsaz10aGlzLmVuYWJsZWREYXRhU29ydGluZyxnPXRoaXMueUF4aXMscD10aGlzLnBvaW50cyx3PXAubGVuZ3RoLHU9ISF0aGlzLm1vZGlmeVZhbHVlLHIscT10aGlzLnBvaW50UGxhY2VtZW50VG9YVmFsdWUoKSxBPSEhcSx0PWEudGhyZXNob2xkLEM9YS5zdGFydEZyb21UaHJlc2hvbGQ/dDowLEYsTT10aGlzLnpvbmVBeGlzfHwieSIseT1OdW1iZXIuTUFYX1ZBTFVFO2ZvcihyPTA7cjwKdztyKyspe3ZhciBJPXBbcl0sRD1JLngsQj1JLnksRz1JLmxvdyxQPWImJmcuc3RhY2tpbmcmJmcuc3RhY2tpbmcuc3RhY2tzWyh0aGlzLm5lZ1N0YWNrcyYmQjwoQz8wOnQpPyItIjoiIikrdGhpcy5zdGFja0tleV07Zy5wb3NpdGl2ZVZhbHVlc09ubHkmJm51bGwhPT1CJiYwPj1CJiYoSS5pc051bGw9ITApO0kucGxvdFg9Rj1LKHYoZC50cmFuc2xhdGUoRCwwLDAsMCwxLHEsImZsYWdzIj09PXRoaXMudHlwZSksLTFFNSwxRTUpKTtpZihiJiZ0aGlzLnZpc2libGUmJlAmJlBbRF0pe3ZhciBIPXRoaXMuZ2V0U3RhY2tJbmRpY2F0b3IoSCxELHRoaXMuaW5kZXgpO2lmKCFJLmlzTnVsbCl7dmFyIFE9UFtEXTt2YXIgSj1RLnBvaW50c1tILmtleV19fWwoSikmJihHPUpbMF0sQj1KWzFdLEc9PT1DJiZILmtleT09PVBbRF0uYmFzZSYmKEc9RShmKHQpJiZ0LGcubWluKSksZy5wb3NpdGl2ZVZhbHVlc09ubHkmJjA+PUcmJihHPW51bGwpLEkudG90YWw9SS5zdGFja1RvdGFsPVEudG90YWwsCkkucGVyY2VudGFnZT1RLnRvdGFsJiZJLnkvUS50b3RhbCoxMDAsSS5zdGFja1k9Qix0aGlzLmlycmVndWxhcldpZHRoc3x8US5zZXRPZmZzZXQodGhpcy5wb2ludFhPZmZzZXR8fDAsdGhpcy5iYXJXfHwwKSk7SS55Qm90dG9tPW4oRyk/dihnLnRyYW5zbGF0ZShHLDAsMSwwLDEpLC0xRTUsMUU1KTpudWxsO3UmJihCPXRoaXMubW9kaWZ5VmFsdWUoQixJKSk7SS5wbG90WT0ibnVtYmVyIj09PXR5cGVvZiBCJiZJbmZpbml0eSE9PUI/dihnLnRyYW5zbGF0ZShCLDAsMSwwLDEpLC0xRTUsMUU1KTp2b2lkIDA7SS5pc0luc2lkZT10aGlzLmlzUG9pbnRJbnNpZGUoSSk7SS5jbGllbnRYPUE/SyhkLnRyYW5zbGF0ZShELDAsMCwwLDEscSkpOkY7SS5uZWdhdGl2ZT1JW01dPChhW00rIlRocmVzaG9sZCJdfHx0fHwwKTtJLmNhdGVnb3J5PWMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGNbSS54XT9jW0kueF06SS54O2lmKCFJLmlzTnVsbCYmITEhPT1JLnZpc2libGUpeyJ1bmRlZmluZWQiIT09dHlwZW9mIEwmJgooeT1NYXRoLm1pbih5LE1hdGguYWJzKEYtTCkpKTt2YXIgTD1GfUkuem9uZT10aGlzLnpvbmVzLmxlbmd0aCYmSS5nZXRab25lKCk7IUkuZ3JhcGhpYyYmdGhpcy5ncm91cCYmayYmKEkuaXNOZXc9ITApfXRoaXMuY2xvc2VzdFBvaW50UmFuZ2VQeD15O20odGhpcywiYWZ0ZXJUcmFuc2xhdGUiKX0sZ2V0VmFsaWRQb2ludHM6ZnVuY3Rpb24oYSxiLGQpe3ZhciBlPXRoaXMuY2hhcnQ7cmV0dXJuKGF8fHRoaXMucG9pbnRzfHxbXSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBiJiYhZS5pc0luc2lkZVBsb3QoYS5wbG90WCxhLnBsb3RZLGUuaW52ZXJ0ZWQpPyExOiExIT09YS52aXNpYmxlJiYoZHx8IWEuaXNOdWxsKX0pfSxnZXRDbGlwQm94OmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5vcHRpb25zLGU9dGhpcy5jaGFydCxjPWUuaW52ZXJ0ZWQsZj10aGlzLnhBeGlzLGs9ZiYmdGhpcy55QXhpcyxsPWUub3B0aW9ucy5jaGFydC5zY3JvbGxhYmxlUGxvdEFyZWF8fHt9O2EmJiExPT09CmQuY2xpcCYmaz9hPWM/e3k6LWUuY2hhcnRXaWR0aCtrLmxlbitrLnBvcyxoZWlnaHQ6ZS5jaGFydFdpZHRoLHdpZHRoOmUuY2hhcnRIZWlnaHQseDotZS5jaGFydEhlaWdodCtmLmxlbitmLnBvc306e3k6LWsucG9zLGhlaWdodDplLmNoYXJ0SGVpZ2h0LHdpZHRoOmUuY2hhcnRXaWR0aCx4Oi1mLnBvc306KGE9dGhpcy5jbGlwQm94fHxlLmNsaXBCb3gsYiYmKGEud2lkdGg9ZS5wbG90U2l6ZVgsYS54PShlLnNjcm9sbGFibGVQaXhlbHNYfHwwKSoobC5zY3JvbGxQb3NpdGlvblh8fDApKSk7cmV0dXJuIGI/e3dpZHRoOmEud2lkdGgseDphLnh9OmF9LHNldENsaXA6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jaGFydCxkPXRoaXMub3B0aW9ucyxlPWIucmVuZGVyZXIsYz1iLmludmVydGVkLGY9dGhpcy5jbGlwQm94LGs9dGhpcy5nZXRDbGlwQm94KGEpLGw9dGhpcy5zaGFyZWRDbGlwS2V5fHxbIl9zaGFyZWRDbGlwIixhJiZhLmR1cmF0aW9uLGEmJmEuZWFzaW5nLGsuaGVpZ2h0LGQueEF4aXMsCmQueUF4aXNdLmpvaW4oKSxtPWJbbF0sZz1iW2wrIm0iXTthJiYoay53aWR0aD0wLGMmJihrLng9Yi5wbG90SGVpZ2h0KyghMSE9PWQuY2xpcD8wOmIucGxvdFRvcCkpKTttP2IuaGFzTG9hZGVkfHxtLmF0dHIoayk6KGEmJihiW2wrIm0iXT1nPWUuY2xpcFJlY3QoYz9iLnBsb3RTaXplWCs5OTotOTksYz8tYi5wbG90TGVmdDotYi5wbG90VG9wLDk5LGM/Yi5jaGFydFdpZHRoOmIuY2hhcnRIZWlnaHQpKSxiW2xdPW09ZS5jbGlwUmVjdChrKSxtLmNvdW50PXtsZW5ndGg6MH0pO2EmJiFtLmNvdW50W3RoaXMuaW5kZXhdJiYobS5jb3VudFt0aGlzLmluZGV4XT0hMCxtLmNvdW50Lmxlbmd0aCs9MSk7aWYoITEhPT1kLmNsaXB8fGEpdGhpcy5ncm91cC5jbGlwKGF8fGY/bTpiLmNsaXBSZWN0KSx0aGlzLm1hcmtlckdyb3VwLmNsaXAoZyksdGhpcy5zaGFyZWRDbGlwS2V5PWw7YXx8KG0uY291bnRbdGhpcy5pbmRleF0mJihkZWxldGUgbS5jb3VudFt0aGlzLmluZGV4XSwtLW0uY291bnQubGVuZ3RoKSwKMD09PW0uY291bnQubGVuZ3RoJiZsJiZiW2xdJiYoZnx8KGJbbF09YltsXS5kZXN0cm95KCkpLGJbbCsibSJdJiYoYltsKyJtIl09YltsKyJtIl0uZGVzdHJveSgpKSkpfSxhbmltYXRlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hhcnQsZD10KHRoaXMub3B0aW9ucy5hbmltYXRpb24pO2lmKCFiLmhhc1JlbmRlcmVkKWlmKGEpdGhpcy5zZXRDbGlwKGQpO2Vsc2V7dmFyIGU9dGhpcy5zaGFyZWRDbGlwS2V5O2E9YltlXTt2YXIgYz10aGlzLmdldENsaXBCb3goZCwhMCk7YSYmYS5hbmltYXRlKGMsZCk7YltlKyJtIl0mJmJbZSsibSJdLmFuaW1hdGUoe3dpZHRoOmMud2lkdGgrOTkseDpjLngtKGIuaW52ZXJ0ZWQ/MDo5OSl9LGQpfX0sYWZ0ZXJBbmltYXRlOmZ1bmN0aW9uKCl7dGhpcy5zZXRDbGlwKCk7bSh0aGlzLCJhZnRlckFuaW1hdGUiKTt0aGlzLmZpbmlzaGVkQW5pbWF0aW5nPSEwfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5wb2ludHMsYj10aGlzLmNoYXJ0LApkLGMsZj10aGlzLm9wdGlvbnMubWFya2VyLGs9dGhpc1t0aGlzLnNwZWNpYWxHcm91cF18fHRoaXMubWFya2VyR3JvdXAsbD10aGlzLnhBeGlzLG09RShmLmVuYWJsZWQsIWx8fGwuaXNSYWRpYWw/ITA6bnVsbCx0aGlzLmNsb3Nlc3RQb2ludFJhbmdlUHg+PWYuZW5hYmxlZFRocmVzaG9sZCpmLnJhZGl1cyk7aWYoITEhPT1mLmVuYWJsZWR8fHRoaXMuX2hhc1BvaW50TWFya2Vycylmb3IoZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZz1hW2RdO3ZhciBwPShjPWcuZ3JhcGhpYyk/ImFuaW1hdGUiOiJhdHRyIjt2YXIgbj1nLm1hcmtlcnx8e307dmFyIHc9ISFnLm1hcmtlcjtpZigobSYmInVuZGVmaW5lZCI9PT10eXBlb2Ygbi5lbmFibGVkfHxuLmVuYWJsZWQpJiYhZy5pc051bGwmJiExIT09Zy52aXNpYmxlKXt2YXIgdT1FKG4uc3ltYm9sLHRoaXMuc3ltYm9sKTt2YXIgcj10aGlzLm1hcmtlckF0dHJpYnMoZyxnLnNlbGVjdGVkJiYic2VsZWN0Iik7dGhpcy5lbmFibGVkRGF0YVNvcnRpbmcmJgooZy5zdGFydFhQb3M9bC5yZXZlcnNlZD8tci53aWR0aDpsLndpZHRoKTt2YXIgcT0hMSE9PWcuaXNJbnNpZGU7Yz9jW3E/InNob3ciOiJoaWRlIl0ocSkuYW5pbWF0ZShyKTpxJiYoMDxyLndpZHRofHxnLmhhc0ltYWdlKSYmKGcuZ3JhcGhpYz1jPWIucmVuZGVyZXIuc3ltYm9sKHUsci54LHIueSxyLndpZHRoLHIuaGVpZ2h0LHc/bjpmKS5hZGQoayksdGhpcy5lbmFibGVkRGF0YVNvcnRpbmcmJmIuaGFzUmVuZGVyZWQmJihjLmF0dHIoe3g6Zy5zdGFydFhQb3N9KSxwPSJhbmltYXRlIikpO2MmJiJhbmltYXRlIj09PXAmJmNbcT8ic2hvdyI6ImhpZGUiXShxKS5hbmltYXRlKHIpO2lmKGMmJiFiLnN0eWxlZE1vZGUpY1twXSh0aGlzLnBvaW50QXR0cmlicyhnLGcuc2VsZWN0ZWQmJiJzZWxlY3QiKSk7YyYmYy5hZGRDbGFzcyhnLmdldENsYXNzTmFtZSgpLCEwKX1lbHNlIGMmJihnLmdyYXBoaWM9Yy5kZXN0cm95KCkpfX0sbWFya2VyQXR0cmliczpmdW5jdGlvbihhLGIpe3ZhciBkPXRoaXMub3B0aW9ucywKZT1kLm1hcmtlcixjPWEubWFya2VyfHx7fSxmPWMuc3ltYm9sfHxlLnN5bWJvbCxrPUUoYy5yYWRpdXMsZS5yYWRpdXMpO2ImJihlPWUuc3RhdGVzW2JdLGI9Yy5zdGF0ZXMmJmMuc3RhdGVzW2JdLGs9RShiJiZiLnJhZGl1cyxlJiZlLnJhZGl1cyxrKyhlJiZlLnJhZGl1c1BsdXN8fDApKSk7YS5oYXNJbWFnZT1mJiYwPT09Zi5pbmRleE9mKCJ1cmwiKTthLmhhc0ltYWdlJiYoaz0wKTthPXt4OmQuY3Jpc3A/TWF0aC5mbG9vcihhLnBsb3RYKS1rOmEucGxvdFgtayx5OmEucGxvdFkta307ayYmKGEud2lkdGg9YS5oZWlnaHQ9MiprKTtyZXR1cm4gYX0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5vcHRpb25zLm1hcmtlcixlPWEmJmEub3B0aW9ucyxjPWUmJmUubWFya2VyfHx7fSxmPXRoaXMuY29sb3Isaz1lJiZlLmNvbG9yLGw9YSYmYS5jb2xvcjtlPUUoYy5saW5lV2lkdGgsZC5saW5lV2lkdGgpO3ZhciBtPWEmJmEuem9uZSYmYS56b25lLmNvbG9yO2E9MTtmPQprfHxtfHxsfHxmO2s9Yy5maWxsQ29sb3J8fGQuZmlsbENvbG9yfHxmO2Y9Yy5saW5lQ29sb3J8fGQubGluZUNvbG9yfHxmO2I9Ynx8Im5vcm1hbCI7ZD1kLnN0YXRlc1tiXTtiPWMuc3RhdGVzJiZjLnN0YXRlc1tiXXx8e307ZT1FKGIubGluZVdpZHRoLGQubGluZVdpZHRoLGUrRShiLmxpbmVXaWR0aFBsdXMsZC5saW5lV2lkdGhQbHVzLDApKTtrPWIuZmlsbENvbG9yfHxkLmZpbGxDb2xvcnx8aztmPWIubGluZUNvbG9yfHxkLmxpbmVDb2xvcnx8ZjthPUUoYi5vcGFjaXR5LGQub3BhY2l0eSxhKTtyZXR1cm57c3Ryb2tlOmYsInN0cm9rZS13aWR0aCI6ZSxmaWxsOmssb3BhY2l0eTphfX0sZGVzdHJveTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGQ9Yi5jaGFydCxlPS9BcHBsZVdlYktpdFwvNTMzLy50ZXN0KFEubmF2aWdhdG9yLnVzZXJBZ2VudCksYyxmLGs9Yi5kYXRhfHxbXSxsLGc7bShiLCJkZXN0cm95Iik7dGhpcy5yZW1vdmVFdmVudHMoYSk7KGIuYXhpc1R5cGVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXsoZz0KYlthXSkmJmcuc2VyaWVzJiYocihnLnNlcmllcyxiKSxnLmlzRGlydHk9Zy5mb3JjZVJlZHJhdz0hMCl9KTtiLmxlZ2VuZEl0ZW0mJmIuY2hhcnQubGVnZW5kLmRlc3Ryb3lJdGVtKGIpO2ZvcihmPWsubGVuZ3RoO2YtLTspKGw9a1tmXSkmJmwuZGVzdHJveSYmbC5kZXN0cm95KCk7Yi5wb2ludHM9bnVsbDtILmNsZWFyVGltZW91dChiLmFuaW1hdGlvblRpbWVvdXQpO3UoYixmdW5jdGlvbihiLGEpe2IgaW5zdGFuY2VvZiBCJiYhYi5zdXJ2aXZlJiYoYz1lJiYiZ3JvdXAiPT09YT8iaGlkZSI6ImRlc3Ryb3kiLGJbY10oKSl9KTtkLmhvdmVyU2VyaWVzPT09YiYmKGQuaG92ZXJTZXJpZXM9bnVsbCk7cihkLnNlcmllcyxiKTtkLm9yZGVyU2VyaWVzKCk7dShiLGZ1bmN0aW9uKGQsZSl7YSYmImhjRXZlbnRzIj09PWV8fGRlbGV0ZSBiW2VdfSl9LGdldEdyYXBoUGF0aDpmdW5jdGlvbihhLGIsZCl7dmFyIGU9dGhpcyxjPWUub3B0aW9ucyxmPWMuc3RlcCxoLGs9W10sbD1bXSxtO2E9YXx8CmUucG9pbnRzOyhoPWEucmV2ZXJzZWQpJiZhLnJldmVyc2UoKTsoZj17cmlnaHQ6MSxjZW50ZXI6Mn1bZl18fGYmJjMpJiZoJiYoZj00LWYpO2E9dGhpcy5nZXRWYWxpZFBvaW50cyhhLCExLCEoYy5jb25uZWN0TnVsbHMmJiFiJiYhZCkpO2EuZm9yRWFjaChmdW5jdGlvbihoLGcpe3ZhciBwPWgucGxvdFgscj1oLnBsb3RZLHc9YVtnLTFdOyhoLmxlZnRDbGlmZnx8dyYmdy5yaWdodENsaWZmKSYmIWQmJihtPSEwKTtoLmlzTnVsbCYmIW4oYikmJjA8Zz9tPSFjLmNvbm5lY3ROdWxsczpoLmlzTnVsbCYmIWI/bT0hMDooMD09PWd8fG0/Zz1bWyJNIixoLnBsb3RYLGgucGxvdFldXTplLmdldFBvaW50U3BsaW5lP2c9W2UuZ2V0UG9pbnRTcGxpbmUoYSxoLGcpXTpmPyhnPTE9PT1mP1tbIkwiLHcucGxvdFgscl1dOjI9PT1mP1tbIkwiLCh3LnBsb3RYK3ApLzIsdy5wbG90WV0sWyJMIiwody5wbG90WCtwKS8yLHJdXTpbWyJMIixwLHcucGxvdFldXSxnLnB1c2goWyJMIixwLHJdKSk6Zz1bWyJMIiwKcCxyXV0sbC5wdXNoKGgueCksZiYmKGwucHVzaChoLngpLDI9PT1mJiZsLnB1c2goaC54KSksay5wdXNoLmFwcGx5KGssZyksbT0hMSl9KTtrLnhNYXA9bDtyZXR1cm4gZS5ncmFwaFBhdGg9a30sZHJhd0dyYXBoOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMub3B0aW9ucyxkPSh0aGlzLmdhcHBlZFBhdGh8fHRoaXMuZ2V0R3JhcGhQYXRoKS5jYWxsKHRoaXMpLGM9dGhpcy5jaGFydC5zdHlsZWRNb2RlLGY9W1siZ3JhcGgiLCJoaWdoY2hhcnRzLWdyYXBoIl1dO2N8fGZbMF0ucHVzaChiLmxpbmVDb2xvcnx8dGhpcy5jb2xvcnx8IiNjY2NjY2MiLGIuZGFzaFN0eWxlKTtmPWEuZ2V0Wm9uZXNHcmFwaHMoZik7Zi5mb3JFYWNoKGZ1bmN0aW9uKGUsZil7dmFyIGg9ZVswXSxrPWFbaF0sbD1rPyJhbmltYXRlIjoiYXR0ciI7az8oay5lbmRYPWEucHJldmVudEdyYXBoQW5pbWF0aW9uP251bGw6ZC54TWFwLGsuYW5pbWF0ZSh7ZDpkfSkpOmQubGVuZ3RoJiYoYVtoXT1rPWEuY2hhcnQucmVuZGVyZXIucGF0aChkKS5hZGRDbGFzcyhlWzFdKS5hdHRyKHt6SW5kZXg6MX0pLmFkZChhLmdyb3VwKSk7CmsmJiFjJiYoaD17c3Ryb2tlOmVbMl0sInN0cm9rZS13aWR0aCI6Yi5saW5lV2lkdGgsZmlsbDphLmZpbGxHcmFwaCYmYS5jb2xvcnx8Im5vbmUifSxlWzNdP2guZGFzaHN0eWxlPWVbM106InNxdWFyZSIhPT1iLmxpbmVjYXAmJihoWyJzdHJva2UtbGluZWNhcCJdPWhbInN0cm9rZS1saW5lam9pbiJdPSJyb3VuZCIpLGtbbF0oaCkuc2hhZG93KDI+ZiYmYi5zaGFkb3cpKTtrJiYoay5zdGFydFg9ZC54TWFwLGsuaXNBcmVhPWQuaXNBcmVhKX0pfSxnZXRab25lc0dyYXBoczpmdW5jdGlvbihhKXt0aGlzLnpvbmVzLmZvckVhY2goZnVuY3Rpb24oYixkKXtkPVsiem9uZS1ncmFwaC0iK2QsImhpZ2hjaGFydHMtZ3JhcGggaGlnaGNoYXJ0cy16b25lLWdyYXBoLSIrZCsiICIrKGIuY2xhc3NOYW1lfHwiIildO3RoaXMuY2hhcnQuc3R5bGVkTW9kZXx8ZC5wdXNoKGIuY29sb3J8fHRoaXMuY29sb3IsYi5kYXNoU3R5bGV8fHRoaXMub3B0aW9ucy5kYXNoU3R5bGUpO2EucHVzaChkKX0sdGhpcyk7CnJldHVybiBhfSxhcHBseVpvbmVzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMuY2hhcnQsZD1iLnJlbmRlcmVyLGM9dGhpcy56b25lcyxmLGssbD10aGlzLmNsaXBzfHxbXSxtLGc9dGhpcy5ncmFwaCxwPXRoaXMuYXJlYSxuPU1hdGgubWF4KGIuY2hhcnRXaWR0aCxiLmNoYXJ0SGVpZ2h0KSxyPXRoaXNbKHRoaXMuem9uZUF4aXN8fCJ5IikrIkF4aXMiXSx3PWIuaW52ZXJ0ZWQsdSxxLEEsdD0hMSxDLEY7aWYoYy5sZW5ndGgmJihnfHxwKSYmciYmInVuZGVmaW5lZCIhPT10eXBlb2Ygci5taW4pe3ZhciBNPXIucmV2ZXJzZWQ7dmFyIEk9ci5ob3JpejtnJiYhdGhpcy5zaG93TGluZSYmZy5oaWRlKCk7cCYmcC5oaWRlKCk7dmFyIHk9ci5nZXRFeHRyZW1lcygpO2MuZm9yRWFjaChmdW5jdGlvbihlLGMpe2Y9TT9JP2IucGxvdFdpZHRoOjA6ST8wOnIudG9QaXhlbHMoeS5taW4pfHwwO2Y9dihFKGssZiksMCxuKTtrPXYoTWF0aC5yb3VuZChyLnRvUGl4ZWxzKEUoZS52YWx1ZSx5Lm1heCksCiEwKXx8MCksMCxuKTt0JiYoZj1rPXIudG9QaXhlbHMoeS5tYXgpKTt1PU1hdGguYWJzKGYtayk7cT1NYXRoLm1pbihmLGspO0E9TWF0aC5tYXgoZixrKTtyLmlzWEF4aXM/KG09e3g6dz9BOnEseTowLHdpZHRoOnUsaGVpZ2h0Om59LEl8fChtLng9Yi5wbG90SGVpZ2h0LW0ueCkpOihtPXt4OjAseTp3P0E6cSx3aWR0aDpuLGhlaWdodDp1fSxJJiYobS55PWIucGxvdFdpZHRoLW0ueSkpO3cmJmQuaXNWTUwmJihtPXIuaXNYQXhpcz97eDowLHk6TT9xOkEsaGVpZ2h0Om0ud2lkdGgsd2lkdGg6Yi5jaGFydFdpZHRofTp7eDptLnktYi5wbG90TGVmdC1iLnNwYWNpbmdCb3gueCx5OjAsd2lkdGg6bS5oZWlnaHQsaGVpZ2h0OmIuY2hhcnRIZWlnaHR9KTtsW2NdP2xbY10uYW5pbWF0ZShtKTpsW2NdPWQuY2xpcFJlY3QobSk7Qz1hWyJ6b25lLWFyZWEtIitjXTtGPWFbInpvbmUtZ3JhcGgtIitjXTtnJiZGJiZGLmNsaXAobFtjXSk7cCYmQyYmQy5jbGlwKGxbY10pO3Q9ZS52YWx1ZT55Lm1heDsKYS5yZXNldFpvbmVzJiYwPT09ayYmKGs9dm9pZCAwKX0pO3RoaXMuY2xpcHM9bH1lbHNlIGEudmlzaWJsZSYmKGcmJmcuc2hvdyghMCkscCYmcC5zaG93KCEwKSl9LGludmVydEdyb3VwczpmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7WyJncm91cCIsIm1hcmtlckdyb3VwIl0uZm9yRWFjaChmdW5jdGlvbihiKXtkW2JdJiYoZS5yZW5kZXJlci5pc1ZNTCYmZFtiXS5hdHRyKHt3aWR0aDpkLnlBeGlzLmxlbixoZWlnaHQ6ZC54QXhpcy5sZW59KSxkW2JdLndpZHRoPWQueUF4aXMubGVuLGRbYl0uaGVpZ2h0PWQueEF4aXMubGVuLGRbYl0uaW52ZXJ0KGQuaXNSYWRpYWxTZXJpZXM/ITE6YSkpfSl9dmFyIGQ9dGhpcyxlPWQuY2hhcnQ7ZC54QXhpcyYmKGQuZXZlbnRzVG9VbmJpbmQucHVzaChKKGUsInJlc2l6ZSIsYikpLGIoKSxkLmludmVydEdyb3Vwcz1iKX0scGxvdEdyb3VwOmZ1bmN0aW9uKGEsYixkLGMsZil7dmFyIGU9dGhpc1thXSxoPSFlO2Q9e3Zpc2liaWxpdHk6ZCx6SW5kZXg6Y3x8Ci4xfTsidW5kZWZpbmVkIj09PXR5cGVvZiB0aGlzLm9wYWNpdHl8fHRoaXMuY2hhcnQuc3R5bGVkTW9kZXx8KGQub3BhY2l0eT10aGlzLm9wYWNpdHkpO2gmJih0aGlzW2FdPWU9dGhpcy5jaGFydC5yZW5kZXJlci5nKCkuYWRkKGYpKTtlLmFkZENsYXNzKCJoaWdoY2hhcnRzLSIrYisiIGhpZ2hjaGFydHMtc2VyaWVzLSIrdGhpcy5pbmRleCsiIGhpZ2hjaGFydHMtIit0aGlzLnR5cGUrIi1zZXJpZXMgIisobih0aGlzLmNvbG9ySW5kZXgpPyJoaWdoY2hhcnRzLWNvbG9yLSIrdGhpcy5jb2xvckluZGV4KyIgIjoiIikrKHRoaXMub3B0aW9ucy5jbGFzc05hbWV8fCIiKSsoZS5oYXNDbGFzcygiaGlnaGNoYXJ0cy10cmFja2VyIik/IiBoaWdoY2hhcnRzLXRyYWNrZXIiOiIiKSwhMCk7ZS5hdHRyKGQpW2g/ImF0dHIiOiJhbmltYXRlIl0odGhpcy5nZXRQbG90Qm94KCkpO3JldHVybiBlfSxnZXRQbG90Qm94OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxiPXRoaXMueEF4aXMsZD10aGlzLnlBeGlzOwphLmludmVydGVkJiYoYj1kLGQ9dGhpcy54QXhpcyk7cmV0dXJue3RyYW5zbGF0ZVg6Yj9iLmxlZnQ6YS5wbG90TGVmdCx0cmFuc2xhdGVZOmQ/ZC50b3A6YS5wbG90VG9wLHNjYWxlWDoxLHNjYWxlWToxfX0scmVtb3ZlRXZlbnRzOmZ1bmN0aW9uKGEpe2E/dGhpcy5ldmVudHNUb1VuYmluZC5sZW5ndGgmJih0aGlzLmV2ZW50c1RvVW5iaW5kLmZvckVhY2goZnVuY3Rpb24oYil7YigpfSksdGhpcy5ldmVudHNUb1VuYmluZC5sZW5ndGg9MCk6UCh0aGlzKX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEuY2hhcnQsZD1hLm9wdGlvbnMsYz0hYS5maW5pc2hlZEFuaW1hdGluZyYmYi5yZW5kZXJlci5pc1NWRyYmdChkLmFuaW1hdGlvbikuZHVyYXRpb24sZj1hLnZpc2libGU/ImluaGVyaXQiOiJoaWRkZW4iLGs9ZC56SW5kZXgsbD1hLmhhc1JlbmRlcmVkLGc9Yi5zZXJpZXNHcm91cCxwPWIuaW52ZXJ0ZWQ7bSh0aGlzLCJyZW5kZXIiKTt2YXIgbj1hLnBsb3RHcm91cCgiZ3JvdXAiLAoic2VyaWVzIixmLGssZyk7YS5tYXJrZXJHcm91cD1hLnBsb3RHcm91cCgibWFya2VyR3JvdXAiLCJtYXJrZXJzIixmLGssZyk7YyYmYS5hbmltYXRlJiZhLmFuaW1hdGUoITApO24uaW52ZXJ0ZWQ9YS5pc0NhcnRlc2lhbnx8YS5pbnZlcnRhYmxlP3A6ITE7YS5kcmF3R3JhcGgmJihhLmRyYXdHcmFwaCgpLGEuYXBwbHlab25lcygpKTthLnZpc2libGUmJmEuZHJhd1BvaW50cygpO2EuZHJhd0RhdGFMYWJlbHMmJmEuZHJhd0RhdGFMYWJlbHMoKTthLnJlZHJhd1BvaW50cyYmYS5yZWRyYXdQb2ludHMoKTthLmRyYXdUcmFja2VyJiYhMSE9PWEub3B0aW9ucy5lbmFibGVNb3VzZVRyYWNraW5nJiZhLmRyYXdUcmFja2VyKCk7YS5pbnZlcnRHcm91cHMocCk7ITE9PT1kLmNsaXB8fGEuc2hhcmVkQ2xpcEtleXx8bHx8bi5jbGlwKGIuY2xpcFJlY3QpO2MmJmEuYW5pbWF0ZSYmYS5hbmltYXRlKCk7bHx8KGEuYW5pbWF0aW9uVGltZW91dD1NKGZ1bmN0aW9uKCl7YS5hZnRlckFuaW1hdGUoKX0sCmN8fDApKTthLmlzRGlydHk9ITE7YS5oYXNSZW5kZXJlZD0hMDttKGEsImFmdGVyUmVuZGVyIil9LHJlZHJhdzpmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQsYj10aGlzLmlzRGlydHl8fHRoaXMuaXNEaXJ0eURhdGEsZD10aGlzLmdyb3VwLGM9dGhpcy54QXhpcyxmPXRoaXMueUF4aXM7ZCYmKGEuaW52ZXJ0ZWQmJmQuYXR0cih7d2lkdGg6YS5wbG90V2lkdGgsaGVpZ2h0OmEucGxvdEhlaWdodH0pLGQuYW5pbWF0ZSh7dHJhbnNsYXRlWDpFKGMmJmMubGVmdCxhLnBsb3RMZWZ0KSx0cmFuc2xhdGVZOkUoZiYmZi50b3AsYS5wbG90VG9wKX0pKTt0aGlzLnRyYW5zbGF0ZSgpO3RoaXMucmVuZGVyKCk7YiYmZGVsZXRlIHRoaXMua2RUcmVlfSxrZEF4aXNBcnJheTpbImNsaWVudFgiLCJwbG90WSJdLHNlYXJjaFBvaW50OmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy54QXhpcyxlPXRoaXMueUF4aXMsYz10aGlzLmNoYXJ0LmludmVydGVkO3JldHVybiB0aGlzLnNlYXJjaEtEVHJlZSh7Y2xpZW50WDpjPwpkLmxlbi1hLmNoYXJ0WStkLnBvczphLmNoYXJ0WC1kLnBvcyxwbG90WTpjP2UubGVuLWEuY2hhcnRYK2UucG9zOmEuY2hhcnRZLWUucG9zfSxiLGEpfSxidWlsZEtEVHJlZTpmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEsZSxjKXt2YXIgZjtpZihmPWEmJmEubGVuZ3RoKXt2YXIgaD1kLmtkQXhpc0FycmF5W2UlY107YS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGFbaF0tYltoXX0pO2Y9TWF0aC5mbG9vcihmLzIpO3JldHVybntwb2ludDphW2ZdLGxlZnQ6YihhLnNsaWNlKDAsZiksZSsxLGMpLHJpZ2h0OmIoYS5zbGljZShmKzEpLGUrMSxjKX19fXRoaXMuYnVpbGRpbmdLZFRyZWU9ITA7dmFyIGQ9dGhpcyxlPS0xPGQub3B0aW9ucy5maW5kTmVhcmVzdFBvaW50QnkuaW5kZXhPZigieSIpPzI6MTtkZWxldGUgZC5rZFRyZWU7TShmdW5jdGlvbigpe2Qua2RUcmVlPWIoZC5nZXRWYWxpZFBvaW50cyhudWxsLCFkLmRpcmVjdFRvdWNoKSxlLGUpO2QuYnVpbGRpbmdLZFRyZWU9ITF9LGQub3B0aW9ucy5rZE5vd3x8CmEmJiJ0b3VjaHN0YXJ0Ij09PWEudHlwZT8wOjEpfSxzZWFyY2hLRFRyZWU6ZnVuY3Rpb24oYSxiLGQpe2Z1bmN0aW9uIGUoYSxiLGQsbCl7dmFyIG09Yi5wb2ludCxnPWMua2RBeGlzQXJyYXlbZCVsXSxwPW07dmFyIHI9bihhW2ZdKSYmbihtW2ZdKT9NYXRoLnBvdyhhW2ZdLW1bZl0sMik6bnVsbDt2YXIgdz1uKGFbaF0pJiZuKG1baF0pP01hdGgucG93KGFbaF0tbVtoXSwyKTpudWxsO3c9KHJ8fDApKyh3fHwwKTttLmRpc3Q9bih3KT9NYXRoLnNxcnQodyk6TnVtYmVyLk1BWF9WQUxVRTttLmRpc3RYPW4ocik/TWF0aC5zcXJ0KHIpOk51bWJlci5NQVhfVkFMVUU7Zz1hW2ddLW1bZ107dz0wPmc/ImxlZnQiOiJyaWdodCI7cj0wPmc/InJpZ2h0IjoibGVmdCI7Ylt3XSYmKHc9ZShhLGJbd10sZCsxLGwpLHA9d1trXTxwW2tdP3c6bSk7YltyXSYmTWF0aC5zcXJ0KGcqZyk8cFtrXSYmKGE9ZShhLGJbcl0sZCsxLGwpLHA9YVtrXTxwW2tdP2E6cCk7cmV0dXJuIHB9dmFyIGM9dGhpcyxmPQp0aGlzLmtkQXhpc0FycmF5WzBdLGg9dGhpcy5rZEF4aXNBcnJheVsxXSxrPWI/ImRpc3RYIjoiZGlzdCI7Yj0tMTxjLm9wdGlvbnMuZmluZE5lYXJlc3RQb2ludEJ5LmluZGV4T2YoInkiKT8yOjE7dGhpcy5rZFRyZWV8fHRoaXMuYnVpbGRpbmdLZFRyZWV8fHRoaXMuYnVpbGRLRFRyZWUoZCk7aWYodGhpcy5rZFRyZWUpcmV0dXJuIGUoYSx0aGlzLmtkVHJlZSxiLGIpfSxwb2ludFBsYWNlbWVudFRvWFZhbHVlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLGI9YS5wb2ludFJhbmdlLGQ9dGhpcy54QXhpczthPWEucG9pbnRQbGFjZW1lbnQ7ImJldHdlZW4iPT09YSYmKGE9ZC5yZXZlcnNlZD8tLjU6LjUpO3JldHVybiBmKGEpP2EqRShiLGQucG9pbnRSYW5nZSk6MH0saXNQb2ludEluc2lkZTpmdW5jdGlvbihhKXtyZXR1cm4idW5kZWZpbmVkIiE9PXR5cGVvZiBhLnBsb3RZJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLnBsb3RYJiYwPD1hLnBsb3RZJiZhLnBsb3RZPD10aGlzLnlBeGlzLmxlbiYmCjA8PWEucGxvdFgmJmEucGxvdFg8PXRoaXMueEF4aXMubGVufX0pOyIifSk7TyhxLCJwYXJ0cy9TdGFja2luZy5qcyIsW3FbInBhcnRzL0F4aXMuanMiXSxxWyJwYXJ0cy9DaGFydC5qcyJdLHFbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9TdGFja2luZ0F4aXMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEseSxCKXt2YXIgSD1CLmNvcnJlY3RGbG9hdCxEPUIuZGVmaW5lZCxKPUIuZGVzdHJveU9iamVjdFByb3BlcnRpZXMsdD1CLmZvcm1hdCxHPUIuaXNOdW1iZXIsTD1CLnBpY2s7IiI7dmFyIHY9cS5TZXJpZXMsSz1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYyxnLG4scCxtKXt2YXIgZD1jLmNoYXJ0LmludmVydGVkO3RoaXMuYXhpcz1jO3RoaXMuaXNOZWdhdGl2ZT1uO3RoaXMub3B0aW9ucz1nPWd8fHt9O3RoaXMueD1wO3RoaXMudG90YWw9bnVsbDt0aGlzLnBvaW50cz17fTt0aGlzLmhhc1ZhbGlkUG9pbnRzPSExO3RoaXMuc3RhY2s9bTt0aGlzLnJpZ2h0Q2xpZmY9CnRoaXMubGVmdENsaWZmPTA7dGhpcy5hbGlnbk9wdGlvbnM9e2FsaWduOmcuYWxpZ258fChkP24/ImxlZnQiOiJyaWdodCI6ImNlbnRlciIpLHZlcnRpY2FsQWxpZ246Zy52ZXJ0aWNhbEFsaWdufHwoZD8ibWlkZGxlIjpuPyJib3R0b20iOiJ0b3AiKSx5OmcueSx4OmcueH07dGhpcy50ZXh0QWxpZ249Zy50ZXh0QWxpZ258fChkP24/InJpZ2h0IjoibGVmdCI6ImNlbnRlciIpfWMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXtKKHRoaXMsdGhpcy5heGlzKX07Yy5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGMpe3ZhciBnPXRoaXMuYXhpcy5jaGFydCxuPXRoaXMub3B0aW9ucyxwPW4uZm9ybWF0O3A9cD90KHAsdGhpcyxnKTpuLmZvcm1hdHRlci5jYWxsKHRoaXMpO3RoaXMubGFiZWw/dGhpcy5sYWJlbC5hdHRyKHt0ZXh0OnAsdmlzaWJpbGl0eToiaGlkZGVuIn0pOih0aGlzLmxhYmVsPWcucmVuZGVyZXIubGFiZWwocCxudWxsLG51bGwsbi5zaGFwZSxudWxsLG51bGwsbi51c2VIVE1MLAohMSwic3RhY2stbGFiZWxzIikscD17cjpuLmJvcmRlclJhZGl1c3x8MCx0ZXh0OnAscm90YXRpb246bi5yb3RhdGlvbixwYWRkaW5nOkwobi5wYWRkaW5nLDUpLHZpc2liaWxpdHk6ImhpZGRlbiJ9LGcuc3R5bGVkTW9kZXx8KHAuZmlsbD1uLmJhY2tncm91bmRDb2xvcixwLnN0cm9rZT1uLmJvcmRlckNvbG9yLHBbInN0cm9rZS13aWR0aCJdPW4uYm9yZGVyV2lkdGgsdGhpcy5sYWJlbC5jc3Mobi5zdHlsZSkpLHRoaXMubGFiZWwuYXR0cihwKSx0aGlzLmxhYmVsLmFkZGVkfHx0aGlzLmxhYmVsLmFkZChjKSk7dGhpcy5sYWJlbC5sYWJlbHJhbms9Zy5wbG90SGVpZ2h0fTtjLnByb3RvdHlwZS5zZXRPZmZzZXQ9ZnVuY3Rpb24oYyxnLG4scCxtKXt2YXIgZD10aGlzLmF4aXMsbD1kLmNoYXJ0O3A9ZC50cmFuc2xhdGUoZC5zdGFja2luZy51c2VQZXJjZW50YWdlPzEwMDpwP3A6dGhpcy50b3RhbCwwLDAsMCwxKTtuPWQudHJhbnNsYXRlKG4/bjowKTtuPUQocCkmJk1hdGguYWJzKHAtbik7CmM9TChtLGwueEF4aXNbMF0udHJhbnNsYXRlKHRoaXMueCkpK2M7ZD1EKHApJiZ0aGlzLmdldFN0YWNrQm94KGwsdGhpcyxjLHAsZyxuLGQpO2c9dGhpcy5sYWJlbDtuPXRoaXMuaXNOZWdhdGl2ZTtjPSJqdXN0aWZ5Ij09PUwodGhpcy5vcHRpb25zLm92ZXJmbG93LCJqdXN0aWZ5Iik7dmFyIGs9dGhpcy50ZXh0QWxpZ247ZyYmZCYmKG09Zy5nZXRCQm94KCkscD1nLnBhZGRpbmcsaz0ibGVmdCI9PT1rP2wuaW52ZXJ0ZWQ/LXA6cDoicmlnaHQiPT09az9tLndpZHRoOmwuaW52ZXJ0ZWQmJiJjZW50ZXIiPT09az9tLndpZHRoLzI6bC5pbnZlcnRlZD9uP20ud2lkdGgrcDotcDptLndpZHRoLzIsbj1sLmludmVydGVkP20uaGVpZ2h0LzI6bj8tcDptLmhlaWdodCx0aGlzLmFsaWduT3B0aW9ucy54PUwodGhpcy5vcHRpb25zLngsMCksdGhpcy5hbGlnbk9wdGlvbnMueT1MKHRoaXMub3B0aW9ucy55LDApLGQueC09ayxkLnktPW4sZy5hbGlnbih0aGlzLmFsaWduT3B0aW9ucyxudWxsLGQpLApsLmlzSW5zaWRlUGxvdChnLmFsaWduQXR0ci54K2stdGhpcy5hbGlnbk9wdGlvbnMueCxnLmFsaWduQXR0ci55K24tdGhpcy5hbGlnbk9wdGlvbnMueSk/Zy5zaG93KCk6KGcuYWxpZ25BdHRyLnk9LTk5OTksYz0hMSksYyYmdi5wcm90b3R5cGUuanVzdGlmeURhdGFMYWJlbC5jYWxsKHRoaXMuYXhpcyxnLHRoaXMuYWxpZ25PcHRpb25zLGcuYWxpZ25BdHRyLG0sZCksZy5hdHRyKHt4OmcuYWxpZ25BdHRyLngseTpnLmFsaWduQXR0ci55fSksTCghYyYmdGhpcy5vcHRpb25zLmNyb3AsITApJiYoKGw9RyhnLngpJiZHKGcueSkmJmwuaXNJbnNpZGVQbG90KGcueC1wK2cud2lkdGgsZy55KSYmbC5pc0luc2lkZVBsb3QoZy54K3AsZy55KSl8fGcuaGlkZSgpKSl9O2MucHJvdG90eXBlLmdldFN0YWNrQm94PWZ1bmN0aW9uKGMsZyxuLHAsbSxkLGwpe3ZhciBrPWcuYXhpcy5yZXZlcnNlZCxmPWMuaW52ZXJ0ZWQsYT1sLmhlaWdodCtsLnBvcy0oZj9jLnBsb3RMZWZ0OmMucGxvdFRvcCk7Zz0KZy5pc05lZ2F0aXZlJiYha3x8IWcuaXNOZWdhdGl2ZSYmaztyZXR1cm57eDpmP2c/cC1sLnJpZ2h0OnAtZCtsLnBvcy1jLnBsb3RMZWZ0Om4rYy54QXhpc1swXS50cmFuc0ItYy5wbG90TGVmdCx5OmY/bC5oZWlnaHQtbi1tOmc/YS1wLWQ6YS1wLHdpZHRoOmY/ZDptLGhlaWdodDpmP206ZH19O3JldHVybiBjfSgpO2MucHJvdG90eXBlLmdldFN0YWNrcz1mdW5jdGlvbigpe3ZhciBjPXRoaXMsZz1jLmludmVydGVkO2MueUF4aXMuZm9yRWFjaChmdW5jdGlvbihjKXtjLnN0YWNraW5nJiZjLnN0YWNraW5nLnN0YWNrcyYmYy5oYXNWaXNpYmxlU2VyaWVzJiYoYy5zdGFja2luZy5vbGRTdGFja3M9Yy5zdGFja2luZy5zdGFja3MpfSk7Yy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgcj1uLnhBeGlzJiZuLnhBeGlzLm9wdGlvbnN8fHt9OyFuLm9wdGlvbnMuc3RhY2tpbmd8fCEwIT09bi52aXNpYmxlJiYhMSE9PWMub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXN8fChuLnN0YWNrS2V5PQpbbi50eXBlLEwobi5vcHRpb25zLnN0YWNrLCIiKSxnP3IudG9wOnIubGVmdCxnP3IuaGVpZ2h0OnIud2lkdGhdLmpvaW4oKSl9KX07eS5jb21wb3NlKGcpO3YucHJvdG90eXBlLnNldEdyb3VwZWRQb2ludHM9ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuY2VudGVySW5DYXRlZ29yeSYmKHRoaXMuaXMoImNvbHVtbiIpfHx0aGlzLmlzKCJjb2x1bW5yYW5nZSIpKSYmIXRoaXMub3B0aW9ucy5zdGFja2luZyYmMTx0aGlzLmNoYXJ0LnNlcmllcy5sZW5ndGgmJnYucHJvdG90eXBlLnNldFN0YWNrZWRQb2ludHMuY2FsbCh0aGlzLCJncm91cCIpfTt2LnByb3RvdHlwZS5zZXRTdGFja2VkUG9pbnRzPWZ1bmN0aW9uKGMpe3ZhciBnPWN8fHRoaXMub3B0aW9ucy5zdGFja2luZztpZihnJiYoITA9PT10aGlzLnZpc2libGV8fCExPT09dGhpcy5jaGFydC5vcHRpb25zLmNoYXJ0Lmlnbm9yZUhpZGRlblNlcmllcykpe3ZhciBuPXRoaXMucHJvY2Vzc2VkWERhdGEscT10aGlzLnByb2Nlc3NlZFlEYXRhLApwPVtdLG09cS5sZW5ndGgsZD10aGlzLm9wdGlvbnMsbD1kLnRocmVzaG9sZCxrPUwoZC5zdGFydEZyb21UaHJlc2hvbGQmJmwsMCk7ZD1kLnN0YWNrO2M9Yz90aGlzLnR5cGUrIiwiK2c6dGhpcy5zdGFja0tleTt2YXIgZj0iLSIrYyxhPXRoaXMubmVnU3RhY2tzLEE9dGhpcy55QXhpcyx1PUEuc3RhY2tpbmcuc3RhY2tzLHQ9QS5zdGFja2luZy5vbGRTdGFja3Msdix3O0Euc3RhY2tpbmcuc3RhY2tzVG91Y2hlZCs9MTtmb3Iodz0wO3c8bTt3Kyspe3ZhciBNPW5bd107dmFyIEY9cVt3XTt2YXIgeT10aGlzLmdldFN0YWNrSW5kaWNhdG9yKHksTSx0aGlzLmluZGV4KTt2YXIgZT15LmtleTt2YXIgYj0odj1hJiZGPChrPzA6bCkpP2Y6Yzt1W2JdfHwodVtiXT17fSk7dVtiXVtNXXx8KHRbYl0mJnRbYl1bTV0/KHVbYl1bTV09dFtiXVtNXSx1W2JdW01dLnRvdGFsPW51bGwpOnVbYl1bTV09bmV3IEsoQSxBLm9wdGlvbnMuc3RhY2tMYWJlbHMsdixNLGQpKTtiPXVbYl1bTV07bnVsbCE9PUY/CihiLnBvaW50c1tlXT1iLnBvaW50c1t0aGlzLmluZGV4XT1bTChiLmN1bXVsYXRpdmUsayldLEQoYi5jdW11bGF0aXZlKXx8KGIuYmFzZT1lKSxiLnRvdWNoZWQ9QS5zdGFja2luZy5zdGFja3NUb3VjaGVkLDA8eS5pbmRleCYmITE9PT10aGlzLnNpbmdsZVN0YWNrcyYmKGIucG9pbnRzW2VdWzBdPWIucG9pbnRzW3RoaXMuaW5kZXgrIiwiK00rIiwwIl1bMF0pKTpiLnBvaW50c1tlXT1iLnBvaW50c1t0aGlzLmluZGV4XT1udWxsOyJwZXJjZW50Ij09PWc/KHY9dj9jOmYsYSYmdVt2XSYmdVt2XVtNXT8odj11W3ZdW01dLGIudG90YWw9di50b3RhbD1NYXRoLm1heCh2LnRvdGFsLGIudG90YWwpK01hdGguYWJzKEYpfHwwKTpiLnRvdGFsPUgoYi50b3RhbCsoTWF0aC5hYnMoRil8fDApKSk6Imdyb3VwIj09PWc/bnVsbCE9PUYmJihiLnRvdGFsPShiLnRvdGFsfHwwKSsxKTpiLnRvdGFsPUgoYi50b3RhbCsoRnx8MCkpO2IuY3VtdWxhdGl2ZT0iZ3JvdXAiPT09Zz8oYi50b3RhbHx8MSktMToKTChiLmN1bXVsYXRpdmUsaykrKEZ8fDApO251bGwhPT1GJiYoYi5wb2ludHNbZV0ucHVzaChiLmN1bXVsYXRpdmUpLHBbd109Yi5jdW11bGF0aXZlLGIuaGFzVmFsaWRQb2ludHM9ITApfSJwZXJjZW50Ij09PWcmJihBLnN0YWNraW5nLnVzZVBlcmNlbnRhZ2U9ITApOyJncm91cCIhPT1nJiYodGhpcy5zdGFja2VkWURhdGE9cCk7QS5zdGFja2luZy5vbGRTdGFja3M9e319fTt2LnByb3RvdHlwZS5tb2RpZnlTdGFja3M9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGc9Yy5zdGFja0tleSxxPWMueUF4aXMuc3RhY2tpbmcuc3RhY2tzLHQ9Yy5wcm9jZXNzZWRYRGF0YSxwLG09Yy5vcHRpb25zLnN0YWNraW5nO2NbbSsiU3RhY2tlciJdJiZbZywiLSIrZ10uZm9yRWFjaChmdW5jdGlvbihkKXtmb3IodmFyIGw9dC5sZW5ndGgsayxmO2wtLTspaWYoaz10W2xdLHA9Yy5nZXRTdGFja0luZGljYXRvcihwLGssYy5pbmRleCxkKSxmPShrPXFbZF0mJnFbZF1ba10pJiZrLnBvaW50c1twLmtleV0pY1ttKwoiU3RhY2tlciJdKGYsayxsKX0pfTt2LnByb3RvdHlwZS5wZXJjZW50U3RhY2tlcj1mdW5jdGlvbihjLGcscSl7Zz1nLnRvdGFsPzEwMC9nLnRvdGFsOjA7Y1swXT1IKGNbMF0qZyk7Y1sxXT1IKGNbMV0qZyk7dGhpcy5zdGFja2VkWURhdGFbcV09Y1sxXX07di5wcm90b3R5cGUuZ2V0U3RhY2tJbmRpY2F0b3I9ZnVuY3Rpb24oYyxnLHEsdCl7IUQoYyl8fGMueCE9PWd8fHQmJmMua2V5IT09dD9jPXt4OmcsaW5kZXg6MCxrZXk6dH06Yy5pbmRleCsrO2Mua2V5PVtxLGcsYy5pbmRleF0uam9pbigpO3JldHVybiBjfTtxLlN0YWNrSXRlbT1LO3JldHVybiBxLlN0YWNrSXRlbX0pO08ocSwicGFydHMvRHluYW1pY3MuanMiLFtxWyJwYXJ0cy9BeGlzLmpzIl0scVsicGFydHMvQ2hhcnQuanMiXSxxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvT3B0aW9ucy5qcyJdLHFbInBhcnRzL1BvaW50LmpzIl0scVsicGFydHMvVGltZS5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLApjLHEseSxCLEgsRCl7dmFyIEo9eS50aW1lLHQ9RC5hZGRFdmVudCxHPUQuYW5pbWF0ZSxMPUQuY3JlYXRlRWxlbWVudCx2PUQuY3NzLEs9RC5kZWZpbmVkLG49RC5lcmFzZSxyPUQuZXJyb3IsQz1ELmV4dGVuZCxJPUQuZmlyZUV2ZW50LHA9RC5pc0FycmF5LG09RC5pc051bWJlcixkPUQuaXNPYmplY3QsbD1ELmlzU3RyaW5nLGs9RC5tZXJnZSxmPUQub2JqZWN0RWFjaCxhPUQucGljayxBPUQucmVsYXRpdmVMZW5ndGgsdT1ELnNldEFuaW1hdGlvbixFPUQuc3BsYXQ7eT1xLlNlcmllczt2YXIgUD1xLnNlcmllc1R5cGVzO3EuY2xlYW5SZWN1cnNpdmVseT1mdW5jdGlvbihhLGMpe3ZhciBrPXt9O2YoYSxmdW5jdGlvbihmLGUpe2lmKGQoYVtlXSwhMCkmJiFhLm5vZGVUeXBlJiZjW2VdKWY9cS5jbGVhblJlY3Vyc2l2ZWx5KGFbZV0sY1tlXSksT2JqZWN0LmtleXMoZikubGVuZ3RoJiYoa1tlXT1mKTtlbHNlIGlmKGQoYVtlXSl8fGFbZV0hPT1jW2VdKWtbZV09YVtlXX0pO3JldHVybiBrfTsKQyhjLnByb3RvdHlwZSx7YWRkU2VyaWVzOmZ1bmN0aW9uKGQsYyxmKXt2YXIgayxlPXRoaXM7ZCYmKGM9YShjLCEwKSxJKGUsImFkZFNlcmllcyIse29wdGlvbnM6ZH0sZnVuY3Rpb24oKXtrPWUuaW5pdFNlcmllcyhkKTtlLmlzRGlydHlMZWdlbmQ9ITA7ZS5saW5rU2VyaWVzKCk7ay5lbmFibGVkRGF0YVNvcnRpbmcmJmsuc2V0RGF0YShkLmRhdGEsITEpO0koZSwiYWZ0ZXJBZGRTZXJpZXMiLHtzZXJpZXM6a30pO2MmJmUucmVkcmF3KGYpfSkpO3JldHVybiBrfSxhZGRBeGlzOmZ1bmN0aW9uKGEsZCxjLGYpe3JldHVybiB0aGlzLmNyZWF0ZUF4aXMoZD8ieEF4aXMiOiJ5QXhpcyIse2F4aXM6YSxyZWRyYXc6YyxhbmltYXRpb246Zn0pfSxhZGRDb2xvckF4aXM6ZnVuY3Rpb24oYSxkLGMpe3JldHVybiB0aGlzLmNyZWF0ZUF4aXMoImNvbG9yQXhpcyIse2F4aXM6YSxyZWRyYXc6ZCxhbmltYXRpb246Y30pfSxjcmVhdGVBeGlzOmZ1bmN0aW9uKGQsYyl7dmFyIGY9dGhpcy5vcHRpb25zLApsPSJjb2xvckF4aXMiPT09ZCxlPWMucmVkcmF3LGI9Yy5hbmltYXRpb247Yz1rKGMuYXhpcyx7aW5kZXg6dGhpc1tkXS5sZW5ndGgsaXNYOiJ4QXhpcyI9PT1kfSk7dmFyIGg9bD9uZXcgcS5Db2xvckF4aXModGhpcyxjKTpuZXcgZyh0aGlzLGMpO2ZbZF09RShmW2RdfHx7fSk7ZltkXS5wdXNoKGMpO2wmJih0aGlzLmlzRGlydHlMZWdlbmQ9ITAsdGhpcy5heGVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXJpZXM9W119KSx0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuYmluZEF4ZXMoKTthLmlzRGlydHlEYXRhPSEwfSkpO2EoZSwhMCkmJnRoaXMucmVkcmF3KGIpO3JldHVybiBofSxzaG93TG9hZGluZzpmdW5jdGlvbihkKXt2YXIgYz10aGlzLGY9Yy5vcHRpb25zLGs9Yy5sb2FkaW5nRGl2LGU9Zi5sb2FkaW5nLGI9ZnVuY3Rpb24oKXtrJiZ2KGsse2xlZnQ6Yy5wbG90TGVmdCsicHgiLHRvcDpjLnBsb3RUb3ArInB4Iix3aWR0aDpjLnBsb3RXaWR0aCsicHgiLGhlaWdodDpjLnBsb3RIZWlnaHQrCiJweCJ9KX07a3x8KGMubG9hZGluZ0Rpdj1rPUwoImRpdiIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1sb2FkaW5nIGhpZ2hjaGFydHMtbG9hZGluZy1oaWRkZW4ifSxudWxsLGMuY29udGFpbmVyKSxjLmxvYWRpbmdTcGFuPUwoInNwYW4iLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtbG9hZGluZy1pbm5lciJ9LG51bGwsayksdChjLCJyZWRyYXciLGIpKTtrLmNsYXNzTmFtZT0iaGlnaGNoYXJ0cy1sb2FkaW5nIjtjLmxvYWRpbmdTcGFuLmlubmVySFRNTD1hKGQsZi5sYW5nLmxvYWRpbmcsIiIpO2Muc3R5bGVkTW9kZXx8KHYoayxDKGUuc3R5bGUse3pJbmRleDoxMH0pKSx2KGMubG9hZGluZ1NwYW4sZS5sYWJlbFN0eWxlKSxjLmxvYWRpbmdTaG93bnx8KHYoayx7b3BhY2l0eTowLGRpc3BsYXk6IiJ9KSxHKGsse29wYWNpdHk6ZS5zdHlsZS5vcGFjaXR5fHwuNX0se2R1cmF0aW9uOmUuc2hvd0R1cmF0aW9ufHwwfSkpKTtjLmxvYWRpbmdTaG93bj0hMDtiKCl9LGhpZGVMb2FkaW5nOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMub3B0aW9ucyxkPXRoaXMubG9hZGluZ0RpdjtkJiYoZC5jbGFzc05hbWU9ImhpZ2hjaGFydHMtbG9hZGluZyBoaWdoY2hhcnRzLWxvYWRpbmctaGlkZGVuIix0aGlzLnN0eWxlZE1vZGV8fEcoZCx7b3BhY2l0eTowfSx7ZHVyYXRpb246YS5sb2FkaW5nLmhpZGVEdXJhdGlvbnx8MTAwLGNvbXBsZXRlOmZ1bmN0aW9uKCl7dihkLHtkaXNwbGF5OiJub25lIn0pfX0pKTt0aGlzLmxvYWRpbmdTaG93bj0hMX0scHJvcHNSZXF1aXJlRGlydHlCb3g6ImJhY2tncm91bmRDb2xvciBib3JkZXJDb2xvciBib3JkZXJXaWR0aCBib3JkZXJSYWRpdXMgcGxvdEJhY2tncm91bmRDb2xvciBwbG90QmFja2dyb3VuZEltYWdlIHBsb3RCb3JkZXJDb2xvciBwbG90Qm9yZGVyV2lkdGggcGxvdFNoYWRvdyBzaGFkb3ciLnNwbGl0KCIgIikscHJvcHNSZXF1aXJlUmVmbG93OiJtYXJnaW4gbWFyZ2luVG9wIG1hcmdpblJpZ2h0IG1hcmdpbkJvdHRvbSBtYXJnaW5MZWZ0IHNwYWNpbmcgc3BhY2luZ1RvcCBzcGFjaW5nUmlnaHQgc3BhY2luZ0JvdHRvbSBzcGFjaW5nTGVmdCIuc3BsaXQoIiAiKSwKcHJvcHNSZXF1aXJlVXBkYXRlU2VyaWVzOiJjaGFydC5pbnZlcnRlZCBjaGFydC5wb2xhciBjaGFydC5pZ25vcmVIaWRkZW5TZXJpZXMgY2hhcnQudHlwZSBjb2xvcnMgcGxvdE9wdGlvbnMgdGltZSB0b29sdGlwIi5zcGxpdCgiICIpLGNvbGxlY3Rpb25zV2l0aFVwZGF0ZTpbInhBeGlzIiwieUF4aXMiLCJ6QXhpcyIsInNlcmllcyJdLHVwZGF0ZTpmdW5jdGlvbihkLGMsZyxwKXt2YXIgZT10aGlzLGI9e2NyZWRpdHM6ImFkZENyZWRpdHMiLHRpdGxlOiJzZXRUaXRsZSIsc3VidGl0bGU6InNldFN1YnRpdGxlIixjYXB0aW9uOiJzZXRDYXB0aW9uIn0saCxuLHUscj1kLmlzUmVzcG9uc2l2ZU9wdGlvbnMsdz1bXTtJKGUsInVwZGF0ZSIse29wdGlvbnM6ZH0pO3J8fGUuc2V0UmVzcG9uc2l2ZSghMSwhMCk7ZD1xLmNsZWFuUmVjdXJzaXZlbHkoZCxlLm9wdGlvbnMpO2soITAsZS51c2VyT3B0aW9ucyxkKTtpZihoPWQuY2hhcnQpe2soITAsZS5vcHRpb25zLmNoYXJ0LGgpOyJjbGFzc05hbWUiaW4KaCYmZS5zZXRDbGFzc05hbWUoaC5jbGFzc05hbWUpOyJyZWZsb3ciaW4gaCYmZS5zZXRSZWZsb3coaC5yZWZsb3cpO2lmKCJpbnZlcnRlZCJpbiBofHwicG9sYXIiaW4gaHx8InR5cGUiaW4gaCl7ZS5wcm9wRnJvbVNlcmllcygpO3ZhciB0PSEwfSJhbGlnblRpY2tzImluIGgmJih0PSEwKTtmKGgsZnVuY3Rpb24oYSxiKXstMSE9PWUucHJvcHNSZXF1aXJlVXBkYXRlU2VyaWVzLmluZGV4T2YoImNoYXJ0LiIrYikmJihuPSEwKTstMSE9PWUucHJvcHNSZXF1aXJlRGlydHlCb3guaW5kZXhPZihiKSYmKGUuaXNEaXJ0eUJveD0hMCk7LTEhPT1lLnByb3BzUmVxdWlyZVJlZmxvdy5pbmRleE9mKGIpJiYocj9lLmlzRGlydHlCb3g9ITA6dT0hMCl9KTshZS5zdHlsZWRNb2RlJiYic3R5bGUiaW4gaCYmZS5yZW5kZXJlci5zZXRTdHlsZShoLnN0eWxlKX0hZS5zdHlsZWRNb2RlJiZkLmNvbG9ycyYmKHRoaXMub3B0aW9ucy5jb2xvcnM9ZC5jb2xvcnMpO2QucGxvdE9wdGlvbnMmJmsoITAsdGhpcy5vcHRpb25zLnBsb3RPcHRpb25zLApkLnBsb3RPcHRpb25zKTtkLnRpbWUmJnRoaXMudGltZT09PUomJih0aGlzLnRpbWU9bmV3IEgoZC50aW1lKSk7ZihkLGZ1bmN0aW9uKGEsZCl7aWYoZVtkXSYmImZ1bmN0aW9uIj09PXR5cGVvZiBlW2RdLnVwZGF0ZSllW2RdLnVwZGF0ZShhLCExKTtlbHNlIGlmKCJmdW5jdGlvbiI9PT10eXBlb2YgZVtiW2RdXSllW2JbZF1dKGEpOyJjaGFydCIhPT1kJiYtMSE9PWUucHJvcHNSZXF1aXJlVXBkYXRlU2VyaWVzLmluZGV4T2YoZCkmJihuPSEwKX0pO3RoaXMuY29sbGVjdGlvbnNXaXRoVXBkYXRlLmZvckVhY2goZnVuY3Rpb24oYil7aWYoZFtiXSl7aWYoInNlcmllcyI9PT1iKXt2YXIgYz1bXTtlW2JdLmZvckVhY2goZnVuY3Rpb24oYixkKXtiLm9wdGlvbnMuaXNJbnRlcm5hbHx8Yy5wdXNoKGEoYi5vcHRpb25zLmluZGV4LGQpKX0pfUUoZFtiXSkuZm9yRWFjaChmdW5jdGlvbihhLGQpe3ZhciBmPUsoYS5pZCksaDtmJiYoaD1lLmdldChhLmlkKSk7aHx8KGg9ZVtiXVtjP2NbZF06ZF0pJiYKZiYmSyhoLm9wdGlvbnMuaWQpJiYoaD12b2lkIDApO2gmJmguY29sbD09PWImJihoLnVwZGF0ZShhLCExKSxnJiYoaC50b3VjaGVkPSEwKSk7IWgmJmcmJmUuY29sbGVjdGlvbnNXaXRoSW5pdFtiXSYmKGUuY29sbGVjdGlvbnNXaXRoSW5pdFtiXVswXS5hcHBseShlLFthXS5jb25jYXQoZS5jb2xsZWN0aW9uc1dpdGhJbml0W2JdWzFdfHxbXSkuY29uY2F0KFshMV0pKS50b3VjaGVkPSEwKX0pO2cmJmVbYl0uZm9yRWFjaChmdW5jdGlvbihhKXthLnRvdWNoZWR8fGEub3B0aW9ucy5pc0ludGVybmFsP2RlbGV0ZSBhLnRvdWNoZWQ6dy5wdXNoKGEpfSl9fSk7dy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EucmVtb3ZlJiZhLnJlbW92ZSghMSl9KTt0JiZlLmF4ZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLnVwZGF0ZSh7fSwhMSl9KTtuJiZlLmdldFNlcmllc09yZGVyQnlMaW5rcygpLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jaGFydCYmYS51cGRhdGUoe30sITEpfSx0aGlzKTtkLmxvYWRpbmcmJgprKCEwLGUub3B0aW9ucy5sb2FkaW5nLGQubG9hZGluZyk7dD1oJiZoLndpZHRoO2g9aCYmaC5oZWlnaHQ7bChoKSYmKGg9QShoLHR8fGUuY2hhcnRXaWR0aCkpO3V8fG0odCkmJnQhPT1lLmNoYXJ0V2lkdGh8fG0oaCkmJmghPT1lLmNoYXJ0SGVpZ2h0P2Uuc2V0U2l6ZSh0LGgscCk6YShjLCEwKSYmZS5yZWRyYXcocCk7SShlLCJhZnRlclVwZGF0ZSIse29wdGlvbnM6ZCxyZWRyYXc6YyxhbmltYXRpb246cH0pfSxzZXRTdWJ0aXRsZTpmdW5jdGlvbihhLGQpe3RoaXMuYXBwbHlEZXNjcmlwdGlvbigic3VidGl0bGUiLGEpO3RoaXMubGF5T3V0VGl0bGVzKGQpfSxzZXRDYXB0aW9uOmZ1bmN0aW9uKGEsZCl7dGhpcy5hcHBseURlc2NyaXB0aW9uKCJjYXB0aW9uIixhKTt0aGlzLmxheU91dFRpdGxlcyhkKX19KTtjLnByb3RvdHlwZS5jb2xsZWN0aW9uc1dpdGhJbml0PXt4QXhpczpbYy5wcm90b3R5cGUuYWRkQXhpcyxbITBdXSx5QXhpczpbYy5wcm90b3R5cGUuYWRkQXhpcyxbITFdXSwKc2VyaWVzOltjLnByb3RvdHlwZS5hZGRTZXJpZXNdfTtDKEIucHJvdG90eXBlLHt1cGRhdGU6ZnVuY3Rpb24oYyxmLGssbCl7ZnVuY3Rpb24gZSgpe2IuYXBwbHlPcHRpb25zKGMpO3ZhciBlPWcmJmIuaGFzRHVtbXlHcmFwaGljO2U9bnVsbD09PWIueT8hZTplO2cmJmUmJihiLmdyYXBoaWM9Zy5kZXN0cm95KCksZGVsZXRlIGIuaGFzRHVtbXlHcmFwaGljKTtkKGMsITApJiYoZyYmZy5lbGVtZW50JiZjJiZjLm1hcmtlciYmInVuZGVmaW5lZCIhPT10eXBlb2YgYy5tYXJrZXIuc3ltYm9sJiYoYi5ncmFwaGljPWcuZGVzdHJveSgpKSxjJiZjLmRhdGFMYWJlbHMmJmIuZGF0YUxhYmVsJiYoYi5kYXRhTGFiZWw9Yi5kYXRhTGFiZWwuZGVzdHJveSgpKSxiLmNvbm5lY3RvciYmKGIuY29ubmVjdG9yPWIuY29ubmVjdG9yLmRlc3Ryb3koKSkpO209Yi5pbmRleDtoLnVwZGF0ZVBhcmFsbGVsQXJyYXlzKGIsbSk7bi5kYXRhW21dPWQobi5kYXRhW21dLCEwKXx8ZChjLCEwKT9iLm9wdGlvbnM6CmEoYyxuLmRhdGFbbV0pO2guaXNEaXJ0eT1oLmlzRGlydHlEYXRhPSEwOyFoLmZpeGVkQm94JiZoLmhhc0NhcnRlc2lhblNlcmllcyYmKHAuaXNEaXJ0eUJveD0hMCk7InBvaW50Ij09PW4ubGVnZW5kVHlwZSYmKHAuaXNEaXJ0eUxlZ2VuZD0hMCk7ZiYmcC5yZWRyYXcoayl9dmFyIGI9dGhpcyxoPWIuc2VyaWVzLGc9Yi5ncmFwaGljLG0scD1oLmNoYXJ0LG49aC5vcHRpb25zO2Y9YShmLCEwKTshMT09PWw/ZSgpOmIuZmlyZVBvaW50RXZlbnQoInVwZGF0ZSIse29wdGlvbnM6Y30sZSl9LHJlbW92ZTpmdW5jdGlvbihhLGQpe3RoaXMuc2VyaWVzLnJlbW92ZVBvaW50KHRoaXMuc2VyaWVzLmRhdGEuaW5kZXhPZih0aGlzKSxhLGQpfX0pO0MoeS5wcm90b3R5cGUse2FkZFBvaW50OmZ1bmN0aW9uKGQsYyxmLGssZSl7dmFyIGI9dGhpcy5vcHRpb25zLGg9dGhpcy5kYXRhLGw9dGhpcy5jaGFydCxnPXRoaXMueEF4aXM7Zz1nJiZnLmhhc05hbWVzJiZnLm5hbWVzO3ZhciBtPWIuZGF0YSxwPQp0aGlzLnhEYXRhLG47Yz1hKGMsITApO3ZhciB1PXtzZXJpZXM6dGhpc307dGhpcy5wb2ludENsYXNzLnByb3RvdHlwZS5hcHBseU9wdGlvbnMuYXBwbHkodSxbZF0pO3ZhciByPXUueDt2YXIgdz1wLmxlbmd0aDtpZih0aGlzLnJlcXVpcmVTb3J0aW5nJiZyPHBbdy0xXSlmb3Iobj0hMDt3JiZwW3ctMV0+cjspdy0tO3RoaXMudXBkYXRlUGFyYWxsZWxBcnJheXModSwic3BsaWNlIix3LDAsMCk7dGhpcy51cGRhdGVQYXJhbGxlbEFycmF5cyh1LHcpO2cmJnUubmFtZSYmKGdbcl09dS5uYW1lKTttLnNwbGljZSh3LDAsZCk7biYmKHRoaXMuZGF0YS5zcGxpY2UodywwLG51bGwpLHRoaXMucHJvY2Vzc0RhdGEoKSk7InBvaW50Ij09PWIubGVnZW5kVHlwZSYmdGhpcy5nZW5lcmF0ZVBvaW50cygpO2YmJihoWzBdJiZoWzBdLnJlbW92ZT9oWzBdLnJlbW92ZSghMSk6KGguc2hpZnQoKSx0aGlzLnVwZGF0ZVBhcmFsbGVsQXJyYXlzKHUsInNoaWZ0IiksbS5zaGlmdCgpKSk7ITEhPT1lJiZJKHRoaXMsCiJhZGRQb2ludCIse3BvaW50OnV9KTt0aGlzLmlzRGlydHlEYXRhPXRoaXMuaXNEaXJ0eT0hMDtjJiZsLnJlZHJhdyhrKX0scmVtb3ZlUG9pbnQ6ZnVuY3Rpb24oZCxjLGYpe3ZhciBrPXRoaXMsZT1rLmRhdGEsYj1lW2RdLGg9ay5wb2ludHMsbD1rLmNoYXJ0LGc9ZnVuY3Rpb24oKXtoJiZoLmxlbmd0aD09PWUubGVuZ3RoJiZoLnNwbGljZShkLDEpO2Uuc3BsaWNlKGQsMSk7ay5vcHRpb25zLmRhdGEuc3BsaWNlKGQsMSk7ay51cGRhdGVQYXJhbGxlbEFycmF5cyhifHx7c2VyaWVzOmt9LCJzcGxpY2UiLGQsMSk7YiYmYi5kZXN0cm95KCk7ay5pc0RpcnR5PSEwO2suaXNEaXJ0eURhdGE9ITA7YyYmbC5yZWRyYXcoKX07dShmLGwpO2M9YShjLCEwKTtiP2IuZmlyZVBvaW50RXZlbnQoInJlbW92ZSIsbnVsbCxnKTpnKCl9LHJlbW92ZTpmdW5jdGlvbihkLGMsZixrKXtmdW5jdGlvbiBlKCl7Yi5kZXN0cm95KGspO2IucmVtb3ZlPW51bGw7aC5pc0RpcnR5TGVnZW5kPWguaXNEaXJ0eUJveD0KITA7aC5saW5rU2VyaWVzKCk7YShkLCEwKSYmaC5yZWRyYXcoYyl9dmFyIGI9dGhpcyxoPWIuY2hhcnQ7ITEhPT1mP0koYiwicmVtb3ZlIixudWxsLGUpOmUoKX0sdXBkYXRlOmZ1bmN0aW9uKGQsYyl7ZD1xLmNsZWFuUmVjdXJzaXZlbHkoZCx0aGlzLnVzZXJPcHRpb25zKTtJKHRoaXMsInVwZGF0ZSIse29wdGlvbnM6ZH0pO3ZhciBmPXRoaXMsbD1mLmNoYXJ0LGU9Zi51c2VyT3B0aW9ucyxiPWYuaW5pdGlhbFR5cGV8fGYudHlwZSxoPWQudHlwZXx8ZS50eXBlfHxsLm9wdGlvbnMuY2hhcnQudHlwZSxnPSEodGhpcy5oYXNEZXJpdmVkRGF0YXx8ZC5kYXRhR3JvdXBpbmd8fGgmJmghPT10aGlzLnR5cGV8fCJ1bmRlZmluZWQiIT09dHlwZW9mIGQucG9pbnRTdGFydHx8ZC5wb2ludEludGVydmFsfHxkLnBvaW50SW50ZXJ2YWxVbml0fHxkLmtleXMpLG09UFtiXS5wcm90b3R5cGUscCxuPVsiZXZlbnRPcHRpb25zIiwibmF2aWdhdG9yU2VyaWVzIiwiYmFzZVNlcmllcyJdLHU9Zi5maW5pc2hlZEFuaW1hdGluZyYmCnthbmltYXRpb246ITF9LHc9e307ZyYmKG4ucHVzaCgiZGF0YSIsImlzRGlydHlEYXRhIiwicG9pbnRzIiwicHJvY2Vzc2VkWERhdGEiLCJwcm9jZXNzZWRZRGF0YSIsInhJbmNyZW1lbnQiLCJjcm9wcGVkIiwiX2hhc1BvaW50TWFya2VycyIsIl9oYXNQb2ludExhYmVscyIsIm1hcE1hcCIsIm1hcERhdGEiLCJtaW5ZIiwibWF4WSIsIm1pblgiLCJtYXhYIiksITEhPT1kLnZpc2libGUmJm4ucHVzaCgiYXJlYSIsImdyYXBoIiksZi5wYXJhbGxlbEFycmF5cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe24ucHVzaChhKyJEYXRhIil9KSxkLmRhdGEmJihkLmRhdGFTb3J0aW5nJiZDKGYub3B0aW9ucy5kYXRhU29ydGluZyxkLmRhdGFTb3J0aW5nKSx0aGlzLnNldERhdGEoZC5kYXRhLCExKSkpO2Q9ayhlLHUse2luZGV4OiJ1bmRlZmluZWQiPT09dHlwZW9mIGUuaW5kZXg/Zi5pbmRleDplLmluZGV4LHBvaW50U3RhcnQ6YShlLnBvaW50U3RhcnQsZi54RGF0YVswXSl9LCFnJiZ7ZGF0YTpmLm9wdGlvbnMuZGF0YX0sCmQpO2cmJmQuZGF0YSYmKGQuZGF0YT1mLm9wdGlvbnMuZGF0YSk7bj1bImdyb3VwIiwibWFya2VyR3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiLCJ0cmFuc2Zvcm1Hcm91cCJdLmNvbmNhdChuKTtuLmZvckVhY2goZnVuY3Rpb24oYSl7blthXT1mW2FdO2RlbGV0ZSBmW2FdfSk7Zi5yZW1vdmUoITEsbnVsbCwhMSwhMCk7Zm9yKHAgaW4gbSlmW3BdPXZvaWQgMDtQW2h8fGJdP0MoZixQW2h8fGJdLnByb3RvdHlwZSk6cigxNywhMCxsLHttaXNzaW5nTW9kdWxlRm9yOmh8fGJ9KTtuLmZvckVhY2goZnVuY3Rpb24oYSl7ZlthXT1uW2FdfSk7Zi5pbml0KGwsZCk7aWYoZyYmdGhpcy5wb2ludHMpe3ZhciBBPWYub3B0aW9uczshMT09PUEudmlzaWJsZT8ody5ncmFwaGljPTEsdy5kYXRhTGFiZWw9MSk6Zi5faGFzUG9pbnRMYWJlbHN8fChkPUEubWFya2VyLGU9QS5kYXRhTGFiZWxzLGQmJighMT09PWQuZW5hYmxlZHx8InN5bWJvbCJpbiBkKSYmKHcuZ3JhcGhpYz0xKSxlJiYhMT09PWUuZW5hYmxlZCYmCih3LmRhdGFMYWJlbD0xKSk7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXthJiZhLnNlcmllcyYmKGEucmVzb2x2ZUNvbG9yKCksT2JqZWN0LmtleXModykubGVuZ3RoJiZhLmRlc3Ryb3lFbGVtZW50cyh3KSwhMT09PUEuc2hvd0luTGVnZW5kJiZhLmxlZ2VuZEl0ZW0mJmwubGVnZW5kLmRlc3Ryb3lJdGVtKGEpKX0sdGhpcyl9Zi5pbml0aWFsVHlwZT1iO2wubGlua1NlcmllcygpO0kodGhpcywiYWZ0ZXJVcGRhdGUiKTthKGMsITApJiZsLnJlZHJhdyhnP3ZvaWQgMDohMSl9LHNldE5hbWU6ZnVuY3Rpb24oYSl7dGhpcy5uYW1lPXRoaXMub3B0aW9ucy5uYW1lPXRoaXMudXNlck9wdGlvbnMubmFtZT1hO3RoaXMuY2hhcnQuaXNEaXJ0eUxlZ2VuZD0hMH19KTtDKGcucHJvdG90eXBlLHt1cGRhdGU6ZnVuY3Rpb24oZCxjKXt2YXIgbD10aGlzLmNoYXJ0LGc9ZCYmZC5ldmVudHN8fHt9O2Q9ayh0aGlzLnVzZXJPcHRpb25zLGQpO2wub3B0aW9uc1t0aGlzLmNvbGxdLmluZGV4T2YmJgoobC5vcHRpb25zW3RoaXMuY29sbF1bbC5vcHRpb25zW3RoaXMuY29sbF0uaW5kZXhPZih0aGlzLnVzZXJPcHRpb25zKV09ZCk7ZihsLm9wdGlvbnNbdGhpcy5jb2xsXS5ldmVudHMsZnVuY3Rpb24oYSxiKXsidW5kZWZpbmVkIj09PXR5cGVvZiBnW2JdJiYoZ1tiXT12b2lkIDApfSk7dGhpcy5kZXN0cm95KCEwKTt0aGlzLmluaXQobCxDKGQse2V2ZW50czpnfSkpO2wuaXNEaXJ0eUJveD0hMDthKGMsITApJiZsLnJlZHJhdygpfSxyZW1vdmU6ZnVuY3Rpb24oZCl7Zm9yKHZhciBjPXRoaXMuY2hhcnQsZj10aGlzLmNvbGwsaz10aGlzLnNlcmllcyxlPWsubGVuZ3RoO2UtLTspa1tlXSYma1tlXS5yZW1vdmUoITEpO24oYy5heGVzLHRoaXMpO24oY1tmXSx0aGlzKTtwKGMub3B0aW9uc1tmXSk/Yy5vcHRpb25zW2ZdLnNwbGljZSh0aGlzLm9wdGlvbnMuaW5kZXgsMSk6ZGVsZXRlIGMub3B0aW9uc1tmXTtjW2ZdLmZvckVhY2goZnVuY3Rpb24oYSxkKXthLm9wdGlvbnMuaW5kZXg9YS51c2VyT3B0aW9ucy5pbmRleD0KZH0pO3RoaXMuZGVzdHJveSgpO2MuaXNEaXJ0eUJveD0hMDthKGQsITApJiZjLnJlZHJhdygpfSxzZXRUaXRsZTpmdW5jdGlvbihhLGQpe3RoaXMudXBkYXRlKHt0aXRsZTphfSxkKX0sc2V0Q2F0ZWdvcmllczpmdW5jdGlvbihhLGQpe3RoaXMudXBkYXRlKHtjYXRlZ29yaWVzOmF9LGQpfX0pfSk7TyhxLCJwYXJ0cy9BcmVhU2VyaWVzLmpzIixbcVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL0NvbG9yLmpzIl0scVsibWl4aW5zL2xlZ2VuZC1zeW1ib2wuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEseSl7dmFyIEI9Yy5wYXJzZSxIPXkub2JqZWN0RWFjaCxEPXkucGljaztjPXkuc2VyaWVzVHlwZTt2YXIgSj1nLlNlcmllcztjKCJhcmVhIiwibGluZSIse3NvZnRUaHJlc2hvbGQ6ITEsdGhyZXNob2xkOjB9LHtzaW5nbGVTdGFja3M6ITEsZ2V0U3RhY2tQb2ludHM6ZnVuY3Rpb24oYyl7dmFyIGc9W10scT1bXSx0PXRoaXMueEF4aXMseT10aGlzLnlBeGlzLApuPXkuc3RhY2tpbmcuc3RhY2tzW3RoaXMuc3RhY2tLZXldLHI9e30sQz10aGlzLmluZGV4LEk9eS5zZXJpZXMscD1JLmxlbmd0aCxtPUQoeS5vcHRpb25zLnJldmVyc2VkU3RhY2tzLCEwKT8xOi0xLGQ7Yz1jfHx0aGlzLnBvaW50cztpZih0aGlzLm9wdGlvbnMuc3RhY2tpbmcpe2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspY1tkXS5sZWZ0TnVsbD1jW2RdLnJpZ2h0TnVsbD12b2lkIDAscltjW2RdLnhdPWNbZF07SChuLGZ1bmN0aW9uKGQsYyl7bnVsbCE9PWQudG90YWwmJnEucHVzaChjKX0pO3Euc29ydChmdW5jdGlvbihkLGMpe3JldHVybiBkLWN9KTt2YXIgbD1JLm1hcChmdW5jdGlvbihkKXtyZXR1cm4gZC52aXNpYmxlfSk7cS5mb3JFYWNoKGZ1bmN0aW9uKGMsZil7dmFyIGE9MCxrLHU7aWYocltjXSYmIXJbY10uaXNOdWxsKWcucHVzaChyW2NdKSxbLTEsMV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZz0xPT09YT8icmlnaHROdWxsIjoibGVmdE51bGwiLHc9MCxBPW5bcVtmK2FdXTsKaWYoQSlmb3IoZD1DOzA8PWQmJmQ8cDspaz1BLnBvaW50c1tkXSxrfHwoZD09PUM/cltjXVtnXT0hMDpsW2RdJiYodT1uW2NdLnBvaW50c1tkXSkmJih3LT11WzFdLXVbMF0pKSxkKz1tO3JbY11bMT09PWE/InJpZ2h0Q2xpZmYiOiJsZWZ0Q2xpZmYiXT13fSk7ZWxzZXtmb3IoZD1DOzA8PWQmJmQ8cDspe2lmKGs9bltjXS5wb2ludHNbZF0pe2E9a1sxXTticmVha31kKz1tfWE9eS50cmFuc2xhdGUoYSwwLDEsMCwxKTtnLnB1c2goe2lzTnVsbDohMCxwbG90WDp0LnRyYW5zbGF0ZShjLDAsMCwwLDEpLHg6YyxwbG90WTphLHlCb3R0b206YX0pfX0pfXJldHVybiBnfSxnZXRHcmFwaFBhdGg6ZnVuY3Rpb24oYyl7dmFyIGc9Si5wcm90b3R5cGUuZ2V0R3JhcGhQYXRoLHE9dGhpcy5vcHRpb25zLHQ9cS5zdGFja2luZyx5PXRoaXMueUF4aXMsbixyPVtdLEM9W10sST10aGlzLmluZGV4LHA9eS5zdGFja2luZy5zdGFja3NbdGhpcy5zdGFja0tleV0sbT1xLnRocmVzaG9sZCxkPU1hdGgucm91bmQoeS5nZXRUaHJlc2hvbGQocS50aHJlc2hvbGQpKTsKcT1EKHEuY29ubmVjdE51bGxzLCJwZXJjZW50Ij09PXQpO3ZhciBsPWZ1bmN0aW9uKGEsayxsKXt2YXIgZz1jW2FdO2E9dCYmcFtnLnhdLnBvaW50c1tJXTt2YXIgbj1nW2wrIk51bGwiXXx8MDtsPWdbbCsiQ2xpZmYiXXx8MDtnPSEwO2lmKGx8fG4pe3ZhciB1PShuP2FbMF06YVsxXSkrbDt2YXIgcT1hWzBdK2w7Zz0hIW59ZWxzZSF0JiZjW2tdJiZjW2tdLmlzTnVsbCYmKHU9cT1tKTsidW5kZWZpbmVkIiE9PXR5cGVvZiB1JiYoQy5wdXNoKHtwbG90WDpmLHBsb3RZOm51bGw9PT11P2Q6eS5nZXRUaHJlc2hvbGQodSksaXNOdWxsOmcsaXNDbGlmZjohMH0pLHIucHVzaCh7cGxvdFg6ZixwbG90WTpudWxsPT09cT9kOnkuZ2V0VGhyZXNob2xkKHEpLGRvQ3VydmU6ITF9KSl9O2M9Y3x8dGhpcy5wb2ludHM7dCYmKGM9dGhpcy5nZXRTdGFja1BvaW50cyhjKSk7Zm9yKG49MDtuPGMubGVuZ3RoO24rKyl7dHx8KGNbbl0ubGVmdENsaWZmPWNbbl0ucmlnaHRDbGlmZj1jW25dLmxlZnROdWxsPQpjW25dLnJpZ2h0TnVsbD12b2lkIDApO3ZhciBrPWNbbl0uaXNOdWxsO3ZhciBmPUQoY1tuXS5yZWN0UGxvdFgsY1tuXS5wbG90WCk7dmFyIGE9RChjW25dLnlCb3R0b20sZCk7aWYoIWt8fHEpcXx8bChuLG4tMSwibGVmdCIpLGsmJiF0JiZxfHwoQy5wdXNoKGNbbl0pLHIucHVzaCh7eDpuLHBsb3RYOmYscGxvdFk6YX0pKSxxfHxsKG4sbisxLCJyaWdodCIpfW49Zy5jYWxsKHRoaXMsQywhMCwhMCk7ci5yZXZlcnNlZD0hMDtrPWcuY2FsbCh0aGlzLHIsITAsITApOyhhPWtbMF0pJiYiTSI9PT1hWzBdJiYoa1swXT1bIkwiLGFbMV0sYVsyXV0pO2s9bi5jb25jYXQoayk7Zz1nLmNhbGwodGhpcyxDLCExLHEpO2sueE1hcD1uLnhNYXA7dGhpcy5hcmVhUGF0aD1rO3JldHVybiBnfSxkcmF3R3JhcGg6ZnVuY3Rpb24oKXt0aGlzLmFyZWFQYXRoPVtdO0oucHJvdG90eXBlLmRyYXdHcmFwaC5hcHBseSh0aGlzKTt2YXIgYz10aGlzLGc9dGhpcy5hcmVhUGF0aCxxPXRoaXMub3B0aW9ucyx2PVtbImFyZWEiLAoiaGlnaGNoYXJ0cy1hcmVhIix0aGlzLmNvbG9yLHEuZmlsbENvbG9yXV07dGhpcy56b25lcy5mb3JFYWNoKGZ1bmN0aW9uKGcsbil7di5wdXNoKFsiem9uZS1hcmVhLSIrbiwiaGlnaGNoYXJ0cy1hcmVhIGhpZ2hjaGFydHMtem9uZS1hcmVhLSIrbisiICIrZy5jbGFzc05hbWUsZy5jb2xvcnx8Yy5jb2xvcixnLmZpbGxDb2xvcnx8cS5maWxsQ29sb3JdKX0pO3YuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj10WzBdLHI9Y1tuXSx2PXI/ImFuaW1hdGUiOiJhdHRyIix5PXt9O3I/KHIuZW5kWD1jLnByZXZlbnRHcmFwaEFuaW1hdGlvbj9udWxsOmcueE1hcCxyLmFuaW1hdGUoe2Q6Z30pKTooeS56SW5kZXg9MCxyPWNbbl09Yy5jaGFydC5yZW5kZXJlci5wYXRoKGcpLmFkZENsYXNzKHRbMV0pLmFkZChjLmdyb3VwKSxyLmlzQXJlYT0hMCk7Yy5jaGFydC5zdHlsZWRNb2RlfHwoeS5maWxsPUQodFszXSxCKHRbMl0pLnNldE9wYWNpdHkoRChxLmZpbGxPcGFjaXR5LC43NSkpLmdldCgpKSk7CnJbdl0oeSk7ci5zdGFydFg9Zy54TWFwO3Iuc2hpZnRVbml0PXEuc3RlcD8yOjF9KX0sZHJhd0xlZ2VuZFN5bWJvbDpxLmRyYXdSZWN0YW5nbGV9KTsiIn0pO08ocSwicGFydHMvU3BsaW5lU2VyaWVzLmpzIixbcVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcpe3ZhciBjPWcucGljaztnPWcuc2VyaWVzVHlwZTtnKCJzcGxpbmUiLCJsaW5lIix7fSx7Z2V0UG9pbnRTcGxpbmU6ZnVuY3Rpb24oZyxxLEIpe3ZhciB5PXEucGxvdFh8fDAsRD1xLnBsb3RZfHwwLEo9Z1tCLTFdO0I9Z1tCKzFdO2lmKEomJiFKLmlzTnVsbCYmITEhPT1KLmRvQ3VydmUmJiFxLmlzQ2xpZmYmJkImJiFCLmlzTnVsbCYmITEhPT1CLmRvQ3VydmUmJiFxLmlzQ2xpZmYpe2c9Si5wbG90WXx8MDt2YXIgdD1CLnBsb3RYfHwwO0I9Qi5wbG90WXx8MDt2YXIgRz0wO3ZhciBMPSgxLjUqeSsoSi5wbG90WHx8MCkpLzIuNTt2YXIgdj0oMS41KkQrZykvMi41O3Q9KDEuNSp5K3QpLzIuNTt2YXIgSz0oMS41KgpEK0IpLzIuNTt0IT09TCYmKEc9KEstdikqKHQteSkvKHQtTCkrRC1LKTt2Kz1HO0srPUc7dj5nJiZ2PkQ/KHY9TWF0aC5tYXgoZyxEKSxLPTIqRC12KTp2PGcmJnY8RCYmKHY9TWF0aC5taW4oZyxEKSxLPTIqRC12KTtLPkImJks+RD8oSz1NYXRoLm1heChCLEQpLHY9MipELUspOks8QiYmSzxEJiYoSz1NYXRoLm1pbihCLEQpLHY9MipELUspO3EucmlnaHRDb250WD10O3EucmlnaHRDb250WT1LfXE9WyJDIixjKEoucmlnaHRDb250WCxKLnBsb3RYLDApLGMoSi5yaWdodENvbnRZLEoucGxvdFksMCksYyhMLHksMCksYyh2LEQsMCkseSxEXTtKLnJpZ2h0Q29udFg9Si5yaWdodENvbnRZPXZvaWQgMDtyZXR1cm4gcX19KTsiIn0pO08ocSwicGFydHMvQXJlYVNwbGluZVNlcmllcy5qcyIsW3FbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLHFbInBhcnRzL09wdGlvbnMuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEsCnkpe3k9eS5zZXJpZXNUeXBlO2c9Zy5zZXJpZXNUeXBlcy5hcmVhLnByb3RvdHlwZTt5KCJhcmVhc3BsaW5lIiwic3BsaW5lIixxLmRlZmF1bHRPcHRpb25zLnBsb3RPcHRpb25zLmFyZWEse2dldFN0YWNrUG9pbnRzOmcuZ2V0U3RhY2tQb2ludHMsZ2V0R3JhcGhQYXRoOmcuZ2V0R3JhcGhQYXRoLGRyYXdHcmFwaDpnLmRyYXdHcmFwaCxkcmF3TGVnZW5kU3ltYm9sOmMuZHJhd1JlY3RhbmdsZX0pOyIifSk7TyhxLCJwYXJ0cy9Db2x1bW5TZXJpZXMuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvQ29sb3IuanMiXSxxWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMscSx5KXsiIjt2YXIgQj1jLnBhcnNlLEg9eS5hbmltT2JqZWN0LEQ9eS5jbGFtcCxKPXkuZGVmaW5lZCx0PXkuZXh0ZW5kLEc9eS5pc051bWJlcixMPXkubWVyZ2Usdj15LnBpY2s7Yz15LnNlcmllc1R5cGU7dmFyIEs9Zy5TZXJpZXM7YygiY29sdW1uIiwKImxpbmUiLHtib3JkZXJSYWRpdXM6MCxjZW50ZXJJbkNhdGVnb3J5OiExLGdyb3VwUGFkZGluZzouMixtYXJrZXI6bnVsbCxwb2ludFBhZGRpbmc6LjEsbWluUG9pbnRMZW5ndGg6MCxjcm9wVGhyZXNob2xkOjUwLHBvaW50UmFuZ2U6bnVsbCxzdGF0ZXM6e2hvdmVyOntoYWxvOiExLGJyaWdodG5lc3M6LjF9LHNlbGVjdDp7Y29sb3I6IiNjY2NjY2MiLGJvcmRlckNvbG9yOiIjMDAwMDAwIn19LGRhdGFMYWJlbHM6e2FsaWduOnZvaWQgMCx2ZXJ0aWNhbEFsaWduOnZvaWQgMCx5OnZvaWQgMH0sc29mdFRocmVzaG9sZDohMSxzdGFydEZyb21UaHJlc2hvbGQ6ITAsc3RpY2t5VHJhY2tpbmc6ITEsdG9vbHRpcDp7ZGlzdGFuY2U6Nn0sdGhyZXNob2xkOjAsYm9yZGVyQ29sb3I6IiNmZmZmZmYifSx7Y3JvcFNob3VsZGVyOjAsZGlyZWN0VG91Y2g6ITAsdHJhY2tlckdyb3VwczpbImdyb3VwIiwiZGF0YUxhYmVsc0dyb3VwIl0sbmVnU3RhY2tzOiEwLGluaXQ6ZnVuY3Rpb24oKXtLLnByb3RvdHlwZS5pbml0LmFwcGx5KHRoaXMsCmFyZ3VtZW50cyk7dmFyIGM9dGhpcyxnPWMuY2hhcnQ7Zy5oYXNSZW5kZXJlZCYmZy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihnKXtnLnR5cGU9PT1jLnR5cGUmJihnLmlzRGlydHk9ITApfSl9LGdldENvbHVtbk1ldHJpY3M6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGc9Yy5vcHRpb25zLHE9Yy54QXhpcyx0PWMueUF4aXMscD1xLm9wdGlvbnMucmV2ZXJzZWRTdGFja3M7cD1xLnJldmVyc2VkJiYhcHx8IXEucmV2ZXJzZWQmJnA7dmFyIG0sZD17fSxsPTA7ITE9PT1nLmdyb3VwaW5nP2w9MTpjLmNoYXJ0LnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBmPWEueUF4aXMsaz1hLm9wdGlvbnM7aWYoYS50eXBlPT09Yy50eXBlJiYoYS52aXNpYmxlfHwhYy5jaGFydC5vcHRpb25zLmNoYXJ0Lmlnbm9yZUhpZGRlblNlcmllcykmJnQubGVuPT09Zi5sZW4mJnQucG9zPT09Zi5wb3Mpe2lmKGsuc3RhY2tpbmcmJiJncm91cCIhPT1rLnN0YWNraW5nKXttPWEuc3RhY2tLZXk7InVuZGVmaW5lZCI9PT0KdHlwZW9mIGRbbV0mJihkW21dPWwrKyk7dmFyIGc9ZFttXX1lbHNlITEhPT1rLmdyb3VwaW5nJiYoZz1sKyspO2EuY29sdW1uSW5kZXg9Z319KTt2YXIgaz1NYXRoLm1pbihNYXRoLmFicyhxLnRyYW5zQSkqKHEub3JkaW5hbCYmcS5vcmRpbmFsLnNsb3BlfHxnLnBvaW50UmFuZ2V8fHEuY2xvc2VzdFBvaW50UmFuZ2V8fHEudGlja0ludGVydmFsfHwxKSxxLmxlbiksZj1rKmcuZ3JvdXBQYWRkaW5nLGE9KGstMipmKS8obHx8MSk7Zz1NYXRoLm1pbihnLm1heFBvaW50V2lkdGh8fHEubGVuLHYoZy5wb2ludFdpZHRoLGEqKDEtMipnLnBvaW50UGFkZGluZykpKTtjLmNvbHVtbk1ldHJpY3M9e3dpZHRoOmcsb2Zmc2V0OihhLWcpLzIrKGYrKChjLmNvbHVtbkluZGV4fHwwKSsocD8xOjApKSphLWsvMikqKHA/LTE6MSkscGFkZGVkV2lkdGg6YSxjb2x1bW5Db3VudDpsfTtyZXR1cm4gYy5jb2x1bW5NZXRyaWNzfSxjcmlzcENvbDpmdW5jdGlvbihjLGcscSx0KXt2YXIgcD10aGlzLmNoYXJ0LAptPXRoaXMuYm9yZGVyV2lkdGgsZD0tKG0lMj8uNTowKTttPW0lMj8uNToxO3AuaW52ZXJ0ZWQmJnAucmVuZGVyZXIuaXNWTUwmJihtKz0xKTt0aGlzLm9wdGlvbnMuY3Jpc3AmJihxPU1hdGgucm91bmQoYytxKStkLGM9TWF0aC5yb3VuZChjKStkLHEtPWMpO3Q9TWF0aC5yb3VuZChnK3QpK207ZD0uNT49TWF0aC5hYnMoZykmJi41PHQ7Zz1NYXRoLnJvdW5kKGcpK207dC09ZztkJiZ0JiYoLS1nLHQrPTEpO3JldHVybnt4OmMseTpnLHdpZHRoOnEsaGVpZ2h0OnR9fSxhZGp1c3RGb3JNaXNzaW5nQ29sdW1uczpmdW5jdGlvbihjLHEsdCx2KXt2YXIgcD10aGlzLG09dGhpcy5vcHRpb25zLnN0YWNraW5nO2lmKCF0LmlzTnVsbCYmMTx2LmNvbHVtbkNvdW50KXt2YXIgZD0wLGw9MDtIaWdoY2hhcnRzLm9iamVjdEVhY2godGhpcy55QXhpcy5zdGFja2luZyYmdGhpcy55QXhpcy5zdGFja2luZy5zdGFja3MsZnVuY3Rpb24oYyl7aWYoIm51bWJlciI9PT10eXBlb2YgdC54JiYoYz1jW3QueC50b1N0cmluZygpXSkpe3ZhciBmPQpjLnBvaW50c1twLmluZGV4XSxhPWMudG90YWw7bT8oZiYmKGQ9bCksYy5oYXNWYWxpZFBvaW50cyYmbCsrKTpnLmlzQXJyYXkoZikmJihkPWZbMV0sbD1hfHwwKX19KTtjPSh0LnBsb3RYfHwwKSsoKGwtMSkqdi5wYWRkZWRXaWR0aCtxKS8yLXEtZCp2LnBhZGRlZFdpZHRofXJldHVybiBjfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGc9Yy5jaGFydCxxPWMub3B0aW9ucyx0PWMuZGVuc2U9Mj5jLmNsb3Nlc3RQb2ludFJhbmdlKmMueEF4aXMudHJhbnNBO3Q9Yy5ib3JkZXJXaWR0aD12KHEuYm9yZGVyV2lkdGgsdD8wOjEpO3ZhciBwPWMueEF4aXMsbT1jLnlBeGlzLGQ9cS50aHJlc2hvbGQsbD1jLnRyYW5zbGF0ZWRUaHJlc2hvbGQ9bS5nZXRUaHJlc2hvbGQoZCksaz12KHEubWluUG9pbnRMZW5ndGgsNSksZj1jLmdldENvbHVtbk1ldHJpY3MoKSxhPWYud2lkdGgsQT1jLmJhclc9TWF0aC5tYXgoYSwxKzIqdCksdT1jLnBvaW50WE9mZnNldD1mLm9mZnNldCxFPWMuZGF0YU1pbiwKeT1jLmRhdGFNYXg7Zy5pbnZlcnRlZCYmKGwtPS41KTtxLnBvaW50UGFkZGluZyYmKEE9TWF0aC5jZWlsKEEpKTtLLnByb3RvdHlwZS50cmFuc2xhdGUuYXBwbHkoYyk7Yy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgcj12KG4ueUJvdHRvbSxsKSx3PTk5OStNYXRoLmFicyhyKSx0PWEsZT1uLnBsb3RYfHwwO3c9RChuLnBsb3RZLC13LG0ubGVuK3cpO3ZhciBiPWUrdSxoPUEsej1NYXRoLm1pbih3LHIpLHg9TWF0aC5tYXgodyxyKS16O2lmKGsmJk1hdGguYWJzKHgpPGspe3g9azt2YXIgQz0hbS5yZXZlcnNlZCYmIW4ubmVnYXRpdmV8fG0ucmV2ZXJzZWQmJm4ubmVnYXRpdmU7RyhkKSYmRyh5KSYmbi55PT09ZCYmeTw9ZCYmKG0ubWlufHwwKTxkJiZFIT09eSYmKEM9IUMpO3o9TWF0aC5hYnMoei1sKT5rP3ItazpsLShDP2s6MCl9SihuLm9wdGlvbnMucG9pbnRXaWR0aCkmJih0PWg9TWF0aC5jZWlsKG4ub3B0aW9ucy5wb2ludFdpZHRoKSxiLT1NYXRoLnJvdW5kKCh0LWEpLwoyKSk7cS5jZW50ZXJJbkNhdGVnb3J5JiYoYj1jLmFkanVzdEZvck1pc3NpbmdDb2x1bW5zKGIsdCxuLGYpKTtuLmJhclg9YjtuLnBvaW50V2lkdGg9dDtuLnRvb2x0aXBQb3M9Zy5pbnZlcnRlZD9bbS5sZW4rbS5wb3MtZy5wbG90TGVmdC13LHAubGVuK3AucG9zLWcucGxvdFRvcC0oZXx8MCktdS1oLzIseF06W2IraC8yLHcrbS5wb3MtZy5wbG90VG9wLHhdO24uc2hhcGVUeXBlPWMucG9pbnRDbGFzcy5wcm90b3R5cGUuc2hhcGVUeXBlfHwicmVjdCI7bi5zaGFwZUFyZ3M9Yy5jcmlzcENvbC5hcHBseShjLG4uaXNOdWxsP1tiLGwsaCwwXTpbYix6LGgseF0pfSl9LGdldFN5bWJvbDpnLm5vb3AsZHJhd0xlZ2VuZFN5bWJvbDpxLmRyYXdSZWN0YW5nbGUsZHJhd0dyYXBoOmZ1bmN0aW9uKCl7dGhpcy5ncm91cFt0aGlzLmRlbnNlPyJhZGRDbGFzcyI6InJlbW92ZUNsYXNzIl0oImhpZ2hjaGFydHMtZGVuc2UtZGF0YSIpfSxwb2ludEF0dHJpYnM6ZnVuY3Rpb24oYyxnKXt2YXIgbj10aGlzLm9wdGlvbnMsCnE9dGhpcy5wb2ludEF0dHJUb09wdGlvbnN8fHt9O3ZhciBwPXEuc3Ryb2tlfHwiYm9yZGVyQ29sb3IiO3ZhciBtPXFbInN0cm9rZS13aWR0aCJdfHwiYm9yZGVyV2lkdGgiLGQ9YyYmYy5jb2xvcnx8dGhpcy5jb2xvcixsPWMmJmNbcF18fG5bcF18fHRoaXMuY29sb3J8fGQsaz1jJiZjW21dfHxuW21dfHx0aGlzW21dfHwwO3E9YyYmYy5vcHRpb25zLmRhc2hTdHlsZXx8bi5kYXNoU3R5bGU7dmFyIGY9dihjJiZjLm9wYWNpdHksbi5vcGFjaXR5LDEpO2lmKGMmJnRoaXMuem9uZXMubGVuZ3RoKXt2YXIgYT1jLmdldFpvbmUoKTtkPWMub3B0aW9ucy5jb2xvcnx8YSYmKGEuY29sb3J8fGMubm9uWm9uZWRDb2xvcil8fHRoaXMuY29sb3I7YSYmKGw9YS5ib3JkZXJDb2xvcnx8bCxxPWEuZGFzaFN0eWxlfHxxLGs9YS5ib3JkZXJXaWR0aHx8ayl9ZyYmYyYmKGM9TChuLnN0YXRlc1tnXSxjLm9wdGlvbnMuc3RhdGVzJiZjLm9wdGlvbnMuc3RhdGVzW2ddfHx7fSksZz1jLmJyaWdodG5lc3MsZD0KYy5jb2xvcnx8InVuZGVmaW5lZCIhPT10eXBlb2YgZyYmQihkKS5icmlnaHRlbihjLmJyaWdodG5lc3MpLmdldCgpfHxkLGw9Y1twXXx8bCxrPWNbbV18fGsscT1jLmRhc2hTdHlsZXx8cSxmPXYoYy5vcGFjaXR5LGYpKTtwPXtmaWxsOmQsc3Ryb2tlOmwsInN0cm9rZS13aWR0aCI6ayxvcGFjaXR5OmZ9O3EmJihwLmRhc2hzdHlsZT1xKTtyZXR1cm4gcH0sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBjPXRoaXMsZz10aGlzLmNoYXJ0LHE9Yy5vcHRpb25zLHQ9Zy5yZW5kZXJlcixwPXEuYW5pbWF0aW9uTGltaXR8fDI1MCxtO2MucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIGw9ZC5ncmFwaGljLGs9ISFsLGY9bCYmZy5wb2ludENvdW50PHA/ImFuaW1hdGUiOiJhdHRyIjtpZihHKGQucGxvdFkpJiZudWxsIT09ZC55KXttPWQuc2hhcGVBcmdzO2wmJmQuaGFzTmV3U2hhcGVUeXBlKCkmJihsPWwuZGVzdHJveSgpKTtjLmVuYWJsZWREYXRhU29ydGluZyYmKGQuc3RhcnRYUG9zPQpjLnhBeGlzLnJldmVyc2VkPy0obT9tLndpZHRoOjApOmMueEF4aXMud2lkdGgpO2x8fChkLmdyYXBoaWM9bD10W2Quc2hhcGVUeXBlXShtKS5hZGQoZC5ncm91cHx8Yy5ncm91cCkpJiZjLmVuYWJsZWREYXRhU29ydGluZyYmZy5oYXNSZW5kZXJlZCYmZy5wb2ludENvdW50PHAmJihsLmF0dHIoe3g6ZC5zdGFydFhQb3N9KSxrPSEwLGY9ImFuaW1hdGUiKTtpZihsJiZrKWxbZl0oTChtKSk7aWYocS5ib3JkZXJSYWRpdXMpbFtmXSh7cjpxLmJvcmRlclJhZGl1c30pO2cuc3R5bGVkTW9kZXx8bFtmXShjLnBvaW50QXR0cmlicyhkLGQuc2VsZWN0ZWQmJiJzZWxlY3QiKSkuc2hhZG93KCExIT09ZC5hbGxvd1NoYWRvdyYmcS5zaGFkb3csbnVsbCxxLnN0YWNraW5nJiYhcS5ib3JkZXJSYWRpdXMpO2wuYWRkQ2xhc3MoZC5nZXRDbGFzc05hbWUoKSwhMCl9ZWxzZSBsJiYoZC5ncmFwaGljPWwuZGVzdHJveSgpKX0pfSxhbmltYXRlOmZ1bmN0aW9uKGMpe3ZhciBnPXRoaXMsbj10aGlzLnlBeGlzLApxPWcub3B0aW9ucyxwPXRoaXMuY2hhcnQuaW52ZXJ0ZWQsbT17fSxkPXA/InRyYW5zbGF0ZVgiOiJ0cmFuc2xhdGVZIjtpZihjKW0uc2NhbGVZPS4wMDEsYz1EKG4udG9QaXhlbHMocS50aHJlc2hvbGQpLG4ucG9zLG4ucG9zK24ubGVuKSxwP20udHJhbnNsYXRlWD1jLW4ubGVuOm0udHJhbnNsYXRlWT1jLGcuY2xpcEJveCYmZy5zZXRDbGlwKCksZy5ncm91cC5hdHRyKG0pO2Vsc2V7dmFyIGw9Zy5ncm91cC5hdHRyKGQpO2cuZ3JvdXAuYW5pbWF0ZSh7c2NhbGVZOjF9LHQoSChnLm9wdGlvbnMuYW5pbWF0aW9uKSx7c3RlcDpmdW5jdGlvbihjLGYpe2cuZ3JvdXAmJihtW2RdPWwrZi5wb3MqKG4ucG9zLWwpLGcuZ3JvdXAuYXR0cihtKSl9fSkpfX0scmVtb3ZlOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxnPWMuY2hhcnQ7Zy5oYXNSZW5kZXJlZCYmZy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihnKXtnLnR5cGU9PT1jLnR5cGUmJihnLmlzRGlydHk9ITApfSk7Sy5wcm90b3R5cGUucmVtb3ZlLmFwcGx5KGMsCmFyZ3VtZW50cyl9fSk7IiJ9KTtPKHEsInBhcnRzL0JhclNlcmllcy5qcyIsW3FbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnKXtnPWcuc2VyaWVzVHlwZTtnKCJiYXIiLCJjb2x1bW4iLG51bGwse2ludmVydGVkOiEwfSk7IiJ9KTtPKHEsInBhcnRzL1NjYXR0ZXJTZXJpZXMuanMiLFtxWyJwYXJ0cy9HbG9iYWxzLmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyl7dmFyIHE9Yy5hZGRFdmVudDtjPWMuc2VyaWVzVHlwZTt2YXIgeT1nLlNlcmllcztjKCJzY2F0dGVyIiwibGluZSIse2xpbmVXaWR0aDowLGZpbmROZWFyZXN0UG9pbnRCeToieHkiLGppdHRlcjp7eDowLHk6MH0sbWFya2VyOntlbmFibGVkOiEwfSx0b29sdGlwOntoZWFkZXJGb3JtYXQ6JzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij5cdTI1Y2Y8L3NwYW4+IDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHgiPiB7c2VyaWVzLm5hbWV9PC9zcGFuPjxici8+Jyxwb2ludEZvcm1hdDoieDogPGI+e3BvaW50Lnh9PC9iPjxici8+eTogPGI+e3BvaW50Lnl9PC9iPjxici8+In19LAp7c29ydGVkOiExLHJlcXVpcmVTb3J0aW5nOiExLG5vU2hhcmVkVG9vbHRpcDohMCx0cmFja2VyR3JvdXBzOlsiZ3JvdXAiLCJtYXJrZXJHcm91cCIsImRhdGFMYWJlbHNHcm91cCJdLHRha2VPcmRpbmFsUG9zaXRpb246ITEsZHJhd0dyYXBoOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLmxpbmVXaWR0aCYmeS5wcm90b3R5cGUuZHJhd0dyYXBoLmNhbGwodGhpcyl9LGFwcGx5Sml0dGVyOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxnPXRoaXMub3B0aW9ucy5qaXR0ZXIscT10aGlzLnBvaW50cy5sZW5ndGg7ZyYmdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbih5LHQpe1sieCIsInkiXS5mb3JFYWNoKGZ1bmN0aW9uKEQsQil7dmFyIHY9InBsb3QiK0QudG9VcHBlckNhc2UoKTtpZihnW0RdJiYheS5pc051bGwpe3ZhciBHPWNbRCsiQXhpcyJdO3ZhciBuPWdbRF0qRy50cmFuc0E7aWYoRyYmIUcuaXNMb2cpe3ZhciByPU1hdGgubWF4KDAseVt2XS1uKTtHPU1hdGgubWluKEcubGVuLHlbdl0rCm4pO0I9MUU0Kk1hdGguc2luKHQrQipxKTt5W3ZdPXIrKEctcikqKEItTWF0aC5mbG9vcihCKSk7IngiPT09RCYmKHkuY2xpZW50WD15LnBsb3RYKX19fSl9KX19KTtxKHksImFmdGVyVHJhbnNsYXRlIixmdW5jdGlvbigpe3RoaXMuYXBwbHlKaXR0ZXImJnRoaXMuYXBwbHlKaXR0ZXIoKX0pOyIifSk7TyhxLCJtaXhpbnMvY2VudGVyZWQtc2VyaWVzLmpzIixbcVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMpe3ZhciBxPWMuaXNOdW1iZXIseT1jLnBpY2ssQj1jLnJlbGF0aXZlTGVuZ3RoLEg9Zy5kZWcycmFkO2cuQ2VudGVyZWRTZXJpZXNNaXhpbj17Z2V0Q2VudGVyOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5vcHRpb25zLHE9dGhpcy5jaGFydCx0PTIqKGMuc2xpY2VkT2Zmc2V0fHwwKSxHPXEucGxvdFdpZHRoLTIqdCxIPXEucGxvdEhlaWdodC0yKnQsdj1jLmNlbnRlcixLPU1hdGgubWluKEcsSCksbj1jLnNpemUscj1jLmlubmVyU2l6ZXx8CjA7InN0cmluZyI9PT10eXBlb2YgbiYmKG49cGFyc2VGbG9hdChuKSk7InN0cmluZyI9PT10eXBlb2YgciYmKHI9cGFyc2VGbG9hdChyKSk7Yz1beSh2WzBdLCI1MCUiKSx5KHZbMV0sIjUwJSIpLHkobiYmMD5uP3ZvaWQgMDpjLnNpemUsIjEwMCUiKSx5KHImJjA+cj92b2lkIDA6Yy5pbm5lclNpemV8fDAsIjAlIildOyFxLmFuZ3VsYXJ8fHRoaXMgaW5zdGFuY2VvZiBnLlNlcmllc3x8KGNbM109MCk7Zm9yKHY9MDs0PnY7Kyt2KW49Y1t2XSxxPTI+dnx8Mj09PXYmJi8lJC8udGVzdChuKSxjW3ZdPUIobixbRyxILEssY1syXV1bdl0pKyhxP3Q6MCk7Y1szXT5jWzJdJiYoY1szXT1jWzJdKTtyZXR1cm4gY30sZ2V0U3RhcnRBbmRFbmRSYWRpYW5zOmZ1bmN0aW9uKGMsZyl7Yz1xKGMpP2M6MDtnPXEoZykmJmc+YyYmMzYwPmctYz9nOmMrMzYwO3JldHVybntzdGFydDpIKihjKy05MCksZW5kOkgqKGcrLTkwKX19fX0pO08ocSwicGFydHMvUGllU2VyaWVzLmpzIixbcVsicGFydHMvR2xvYmFscy5qcyJdLApxWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLHFbInBhcnRzL1BvaW50LmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyxxLHkpe3ZhciBCPXkuYWRkRXZlbnQsSD15LmNsYW1wLEQ9eS5kZWZpbmVkLEo9eS5maXJlRXZlbnQsdD15LmlzTnVtYmVyLEc9eS5tZXJnZSxMPXkucGljayx2PXkucmVsYXRpdmVMZW5ndGgsSz15LnNlcmllc1R5cGUsbj15LnNldEFuaW1hdGlvbjt5PWcuQ2VudGVyZWRTZXJpZXNNaXhpbjt2YXIgcj15LmdldFN0YXJ0QW5kRW5kUmFkaWFucyxDPWcubm9vcCxJPWcuU2VyaWVzO0soInBpZSIsImxpbmUiLHtjZW50ZXI6W251bGwsbnVsbF0sY2xpcDohMSxjb2xvckJ5UG9pbnQ6ITAsZGF0YUxhYmVsczp7YWxsb3dPdmVybGFwOiEwLGNvbm5lY3RvclBhZGRpbmc6NSxjb25uZWN0b3JTaGFwZToiZml4ZWRPZmZzZXQiLGNyb29rRGlzdGFuY2U6IjcwJSIsZGlzdGFuY2U6MzAsZW5hYmxlZDohMCxmb3JtYXR0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb2ludC5pc051bGw/CnZvaWQgMDp0aGlzLnBvaW50Lm5hbWV9LHNvZnRDb25uZWN0b3I6ITAseDowfSxmaWxsQ29sb3I6dm9pZCAwLGlnbm9yZUhpZGRlblBvaW50OiEwLGluYWN0aXZlT3RoZXJQb2ludHM6ITAsbGVnZW5kVHlwZToicG9pbnQiLG1hcmtlcjpudWxsLHNpemU6bnVsbCxzaG93SW5MZWdlbmQ6ITEsc2xpY2VkT2Zmc2V0OjEwLHN0aWNreVRyYWNraW5nOiExLHRvb2x0aXA6e2ZvbGxvd1BvaW50ZXI6ITB9LGJvcmRlckNvbG9yOiIjZmZmZmZmIixib3JkZXJXaWR0aDoxLGxpbmVXaWR0aDp2b2lkIDAsc3RhdGVzOntob3Zlcjp7YnJpZ2h0bmVzczouMX19fSx7aXNDYXJ0ZXNpYW46ITEscmVxdWlyZVNvcnRpbmc6ITEsZGlyZWN0VG91Y2g6ITAsbm9TaGFyZWRUb29sdGlwOiEwLHRyYWNrZXJHcm91cHM6WyJncm91cCIsImRhdGFMYWJlbHNHcm91cCJdLGF4aXNUeXBlczpbXSxwb2ludEF0dHJpYnM6Zy5zZXJpZXNUeXBlcy5jb2x1bW4ucHJvdG90eXBlLnBvaW50QXR0cmlicyxhbmltYXRlOmZ1bmN0aW9uKGMpe3ZhciBnPQp0aGlzLGQ9Zy5wb2ludHMsbD1nLnN0YXJ0QW5nbGVSYWQ7Y3x8ZC5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBjPWQuZ3JhcGhpYyxhPWQuc2hhcGVBcmdzO2MmJmEmJihjLmF0dHIoe3I6TChkLnN0YXJ0UixnLmNlbnRlciYmZy5jZW50ZXJbM10vMiksc3RhcnQ6bCxlbmQ6bH0pLGMuYW5pbWF0ZSh7cjphLnIsc3RhcnQ6YS5zdGFydCxlbmQ6YS5lbmR9LGcub3B0aW9ucy5hbmltYXRpb24pKX0pfSxoYXNEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnByb2Nlc3NlZFhEYXRhLmxlbmd0aH0sdXBkYXRlVG90YWxzOmZ1bmN0aW9uKCl7dmFyIGMsZz0wLGQ9dGhpcy5wb2ludHMsbD1kLmxlbmd0aCxrPXRoaXMub3B0aW9ucy5pZ25vcmVIaWRkZW5Qb2ludDtmb3IoYz0wO2M8bDtjKyspe3ZhciBmPWRbY107Zys9ayYmIWYudmlzaWJsZT8wOmYuaXNOdWxsPzA6Zi55fXRoaXMudG90YWw9Zztmb3IoYz0wO2M8bDtjKyspZj1kW2NdLGYucGVyY2VudGFnZT0wPGcmJihmLnZpc2libGV8fCFrKT8KZi55L2cqMTAwOjAsZi50b3RhbD1nfSxnZW5lcmF0ZVBvaW50czpmdW5jdGlvbigpe0kucHJvdG90eXBlLmdlbmVyYXRlUG9pbnRzLmNhbGwodGhpcyk7dGhpcy51cGRhdGVUb3RhbHMoKX0sZ2V0WDpmdW5jdGlvbihjLGcsZCl7dmFyIGw9dGhpcy5jZW50ZXIsaz10aGlzLnJhZGlpP3RoaXMucmFkaWlbZC5pbmRleF06bFsyXS8yO2M9TWF0aC5hc2luKEgoKGMtbFsxXSkvKGsrZC5sYWJlbERpc3RhbmNlKSwtMSwxKSk7cmV0dXJuIGxbMF0rKGc/LTE6MSkqTWF0aC5jb3MoYykqKGsrZC5sYWJlbERpc3RhbmNlKSsoMDxkLmxhYmVsRGlzdGFuY2U/KGc/LTE6MSkqdGhpcy5vcHRpb25zLmRhdGFMYWJlbHMucGFkZGluZzowKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKGMpe3RoaXMuZ2VuZXJhdGVQb2ludHMoKTt2YXIgZz0wLGQ9dGhpcy5vcHRpb25zLGw9ZC5zbGljZWRPZmZzZXQsaz1sKyhkLmJvcmRlcldpZHRofHwwKSxmPXIoZC5zdGFydEFuZ2xlLGQuZW5kQW5nbGUpLGE9dGhpcy5zdGFydEFuZ2xlUmFkPQpmLnN0YXJ0O2Y9KHRoaXMuZW5kQW5nbGVSYWQ9Zi5lbmQpLWE7dmFyIHA9dGhpcy5wb2ludHMsbj1kLmRhdGFMYWJlbHMuZGlzdGFuY2U7ZD1kLmlnbm9yZUhpZGRlblBvaW50O3ZhciBxLHQ9cC5sZW5ndGg7Y3x8KHRoaXMuY2VudGVyPWM9dGhpcy5nZXRDZW50ZXIoKSk7Zm9yKHE9MDtxPHQ7cSsrKXt2YXIgdz1wW3FdO3ZhciB5PWErZypmO2lmKCFkfHx3LnZpc2libGUpZys9dy5wZXJjZW50YWdlLzEwMDt2YXIgRj1hK2cqZjt3LnNoYXBlVHlwZT0iYXJjIjt3LnNoYXBlQXJncz17eDpjWzBdLHk6Y1sxXSxyOmNbMl0vMixpbm5lclI6Y1szXS8yLHN0YXJ0Ok1hdGgucm91bmQoMUUzKnkpLzFFMyxlbmQ6TWF0aC5yb3VuZCgxRTMqRikvMUUzfTt3LmxhYmVsRGlzdGFuY2U9TCh3Lm9wdGlvbnMuZGF0YUxhYmVscyYmdy5vcHRpb25zLmRhdGFMYWJlbHMuZGlzdGFuY2Usbik7dy5sYWJlbERpc3RhbmNlPXYody5sYWJlbERpc3RhbmNlLHcuc2hhcGVBcmdzLnIpO3RoaXMubWF4TGFiZWxEaXN0YW5jZT0KTWF0aC5tYXgodGhpcy5tYXhMYWJlbERpc3RhbmNlfHwwLHcubGFiZWxEaXN0YW5jZSk7Rj0oRit5KS8yO0Y+MS41Kk1hdGguUEk/Ri09MipNYXRoLlBJOkY8LU1hdGguUEkvMiYmKEYrPTIqTWF0aC5QSSk7dy5zbGljZWRUcmFuc2xhdGlvbj17dHJhbnNsYXRlWDpNYXRoLnJvdW5kKE1hdGguY29zKEYpKmwpLHRyYW5zbGF0ZVk6TWF0aC5yb3VuZChNYXRoLnNpbihGKSpsKX07dmFyIEM9TWF0aC5jb3MoRikqY1syXS8yO3ZhciBlPU1hdGguc2luKEYpKmNbMl0vMjt3LnRvb2x0aXBQb3M9W2NbMF0rLjcqQyxjWzFdKy43KmVdO3cuaGFsZj1GPC1NYXRoLlBJLzJ8fEY+TWF0aC5QSS8yPzE6MDt3LmFuZ2xlPUY7eT1NYXRoLm1pbihrLHcubGFiZWxEaXN0YW5jZS81KTt3LmxhYmVsUG9zaXRpb249e25hdHVyYWw6e3g6Y1swXStDK01hdGguY29zKEYpKncubGFiZWxEaXN0YW5jZSx5OmNbMV0rZStNYXRoLnNpbihGKSp3LmxhYmVsRGlzdGFuY2V9LCJmaW5hbCI6e30sYWxpZ25tZW50OjA+CncubGFiZWxEaXN0YW5jZT8iY2VudGVyIjp3LmhhbGY/InJpZ2h0IjoibGVmdCIsY29ubmVjdG9yUG9zaXRpb246e2JyZWFrQXQ6e3g6Y1swXStDK01hdGguY29zKEYpKnkseTpjWzFdK2UrTWF0aC5zaW4oRikqeX0sdG91Y2hpbmdTbGljZUF0Ont4OmNbMF0rQyx5OmNbMV0rZX19fX1KKHRoaXMsImFmdGVyVHJhbnNsYXRlIil9LGRyYXdFbXB0eTpmdW5jdGlvbigpe3ZhciBjPXRoaXMuc3RhcnRBbmdsZVJhZCxnPXRoaXMuZW5kQW5nbGVSYWQsZD10aGlzLm9wdGlvbnM7aWYoMD09PXRoaXMudG90YWwpe3ZhciBsPXRoaXMuY2VudGVyWzBdO3ZhciBrPXRoaXMuY2VudGVyWzFdO3RoaXMuZ3JhcGh8fCh0aGlzLmdyYXBoPXRoaXMuY2hhcnQucmVuZGVyZXIuYXJjKGwsayx0aGlzLmNlbnRlclsxXS8yLDAsYyxnKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1lbXB0eS1zZXJpZXMiKS5hZGQodGhpcy5ncm91cCkpO3RoaXMuZ3JhcGguYXR0cih7ZDpIaWdoY2hhcnRzLlNWR1JlbmRlcmVyLnByb3RvdHlwZS5zeW1ib2xzLmFyYyhsLAprLHRoaXMuY2VudGVyWzJdLzIsMCx7c3RhcnQ6YyxlbmQ6Zyxpbm5lclI6dGhpcy5jZW50ZXJbM10vMn0pfSk7dGhpcy5jaGFydC5zdHlsZWRNb2RlfHx0aGlzLmdyYXBoLmF0dHIoeyJzdHJva2Utd2lkdGgiOmQuYm9yZGVyV2lkdGgsZmlsbDpkLmZpbGxDb2xvcnx8Im5vbmUiLHN0cm9rZTpkLmNvbG9yfHwiI2NjY2NjYyJ9KX1lbHNlIHRoaXMuZ3JhcGgmJih0aGlzLmdyYXBoPXRoaXMuZ3JhcGguZGVzdHJveSgpKX0scmVkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxnPWMuY2hhcnQsZD1nLnJlbmRlcmVyLGwsayxmLGEsbj1jLm9wdGlvbnMuc2hhZG93O3RoaXMuZHJhd0VtcHR5KCk7IW58fGMuc2hhZG93R3JvdXB8fGcuc3R5bGVkTW9kZXx8KGMuc2hhZG93R3JvdXA9ZC5nKCJzaGFkb3ciKS5hdHRyKHt6SW5kZXg6LTF9KS5hZGQoYy5ncm91cCkpO2MucG9pbnRzLmZvckVhY2goZnVuY3Rpb24obSl7dmFyIHA9e307az1tLmdyYXBoaWM7aWYoIW0uaXNOdWxsJiZrKXthPQptLnNoYXBlQXJncztsPW0uZ2V0VHJhbnNsYXRlKCk7aWYoIWcuc3R5bGVkTW9kZSl7dmFyIHE9bS5zaGFkb3dHcm91cDtuJiYhcSYmKHE9bS5zaGFkb3dHcm91cD1kLmcoInNoYWRvdyIpLmFkZChjLnNoYWRvd0dyb3VwKSk7cSYmcS5hdHRyKGwpO2Y9Yy5wb2ludEF0dHJpYnMobSxtLnNlbGVjdGVkJiYic2VsZWN0Iil9bS5kZWxheWVkUmVuZGVyaW5nPyhrLnNldFJhZGlhbFJlZmVyZW5jZShjLmNlbnRlcikuYXR0cihhKS5hdHRyKGwpLGcuc3R5bGVkTW9kZXx8ay5hdHRyKGYpLmF0dHIoeyJzdHJva2UtbGluZWpvaW4iOiJyb3VuZCJ9KS5zaGFkb3cobixxKSxtLmRlbGF5ZWRSZW5kZXJpbmc9ITEpOihrLnNldFJhZGlhbFJlZmVyZW5jZShjLmNlbnRlciksZy5zdHlsZWRNb2RlfHxHKCEwLHAsZiksRyghMCxwLGEsbCksay5hbmltYXRlKHApKTtrLmF0dHIoe3Zpc2liaWxpdHk6bS52aXNpYmxlPyJpbmhlcml0IjoiaGlkZGVuIn0pO2suYWRkQ2xhc3MobS5nZXRDbGFzc05hbWUoKSl9ZWxzZSBrJiYKKG0uZ3JhcGhpYz1rLmRlc3Ryb3koKSl9KX0sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBjPXRoaXMuY2hhcnQucmVuZGVyZXI7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihnKXtnLmdyYXBoaWMmJmcuaGFzTmV3U2hhcGVUeXBlKCkmJihnLmdyYXBoaWM9Zy5ncmFwaGljLmRlc3Ryb3koKSk7Zy5ncmFwaGljfHwoZy5ncmFwaGljPWNbZy5zaGFwZVR5cGVdKGcuc2hhcGVBcmdzKS5hZGQoZy5zZXJpZXMuZ3JvdXApLGcuZGVsYXllZFJlbmRlcmluZz0hMCl9KX0sc2VhcmNoUG9pbnQ6Qyxzb3J0QnlBbmdsZTpmdW5jdGlvbihjLGcpe2Muc29ydChmdW5jdGlvbihjLGwpe3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIGMuYW5nbGUmJihsLmFuZ2xlLWMuYW5nbGUpKmd9KX0sZHJhd0xlZ2VuZFN5bWJvbDpjLmRyYXdSZWN0YW5nbGUsZ2V0Q2VudGVyOnkuZ2V0Q2VudGVyLGdldFN5bWJvbDpDLGRyYXdHcmFwaDpudWxsfSx7aW5pdDpmdW5jdGlvbigpe3EucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcywKYXJndW1lbnRzKTt2YXIgYz10aGlzO2MubmFtZT1MKGMubmFtZSwiU2xpY2UiKTt2YXIgZz1mdW5jdGlvbihkKXtjLnNsaWNlKCJzZWxlY3QiPT09ZC50eXBlKX07QihjLCJzZWxlY3QiLGcpO0IoYywidW5zZWxlY3QiLGcpO3JldHVybiBjfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcy55KSYmMDw9dGhpcy55fSxzZXRWaXNpYmxlOmZ1bmN0aW9uKGMsZyl7dmFyIGQ9dGhpcyxsPWQuc2VyaWVzLGs9bC5jaGFydCxmPWwub3B0aW9ucy5pZ25vcmVIaWRkZW5Qb2ludDtnPUwoZyxmKTtjIT09ZC52aXNpYmxlJiYoZC52aXNpYmxlPWQub3B0aW9ucy52aXNpYmxlPWM9InVuZGVmaW5lZCI9PT10eXBlb2YgYz8hZC52aXNpYmxlOmMsbC5vcHRpb25zLmRhdGFbbC5kYXRhLmluZGV4T2YoZCldPWQub3B0aW9ucyxbImdyYXBoaWMiLCJkYXRhTGFiZWwiLCJjb25uZWN0b3IiLCJzaGFkb3dHcm91cCJdLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoZFthXSlkW2FdW2M/InNob3ciOiJoaWRlIl0oITApfSksCmQubGVnZW5kSXRlbSYmay5sZWdlbmQuY29sb3JpemVJdGVtKGQsYyksY3x8ImhvdmVyIiE9PWQuc3RhdGV8fGQuc2V0U3RhdGUoIiIpLGYmJihsLmlzRGlydHk9ITApLGcmJmsucmVkcmF3KCkpfSxzbGljZTpmdW5jdGlvbihjLGcsZCl7dmFyIGw9dGhpcy5zZXJpZXM7bihkLGwuY2hhcnQpO0woZywhMCk7dGhpcy5zbGljZWQ9dGhpcy5vcHRpb25zLnNsaWNlZD1EKGMpP2M6IXRoaXMuc2xpY2VkO2wub3B0aW9ucy5kYXRhW2wuZGF0YS5pbmRleE9mKHRoaXMpXT10aGlzLm9wdGlvbnM7dGhpcy5ncmFwaGljJiZ0aGlzLmdyYXBoaWMuYW5pbWF0ZSh0aGlzLmdldFRyYW5zbGF0ZSgpKTt0aGlzLnNoYWRvd0dyb3VwJiZ0aGlzLnNoYWRvd0dyb3VwLmFuaW1hdGUodGhpcy5nZXRUcmFuc2xhdGUoKSl9LGdldFRyYW5zbGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNsaWNlZD90aGlzLnNsaWNlZFRyYW5zbGF0aW9uOnt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowfX0saGFsb1BhdGg6ZnVuY3Rpb24oYyl7dmFyIGc9CnRoaXMuc2hhcGVBcmdzO3JldHVybiB0aGlzLnNsaWNlZHx8IXRoaXMudmlzaWJsZT9bXTp0aGlzLnNlcmllcy5jaGFydC5yZW5kZXJlci5zeW1ib2xzLmFyYyhnLngsZy55LGcucitjLGcucitjLHtpbm5lclI6Zy5yLTEsc3RhcnQ6Zy5zdGFydCxlbmQ6Zy5lbmR9KX0sY29ubmVjdG9yU2hhcGVzOntmaXhlZE9mZnNldDpmdW5jdGlvbihjLGcsZCl7dmFyIGw9Zy5icmVha0F0O2c9Zy50b3VjaGluZ1NsaWNlQXQ7cmV0dXJuW1siTSIsYy54LGMueV0sZC5zb2Z0Q29ubmVjdG9yP1siQyIsYy54KygibGVmdCI9PT1jLmFsaWdubWVudD8tNTo1KSxjLnksMipsLngtZy54LDIqbC55LWcueSxsLngsbC55XTpbIkwiLGwueCxsLnldLFsiTCIsZy54LGcueV1dfSxzdHJhaWdodDpmdW5jdGlvbihjLGcpe2c9Zy50b3VjaGluZ1NsaWNlQXQ7cmV0dXJuW1siTSIsYy54LGMueV0sWyJMIixnLngsZy55XV19LGNyb29rZWRMaW5lOmZ1bmN0aW9uKGMsZyxkKXtnPWcudG91Y2hpbmdTbGljZUF0O3ZhciBsPQp0aGlzLnNlcmllcyxrPWwuY2VudGVyWzBdLGY9bC5jaGFydC5wbG90V2lkdGgsYT1sLmNoYXJ0LnBsb3RMZWZ0O2w9Yy5hbGlnbm1lbnQ7dmFyIG09dGhpcy5zaGFwZUFyZ3MucjtkPXYoZC5jcm9va0Rpc3RhbmNlLDEpO2Y9ImxlZnQiPT09bD9rK20rKGYrYS1rLW0pKigxLWQpOmErKGstbSkqZDtkPVsiTCIsZixjLnldO2s9ITA7aWYoImxlZnQiPT09bD9mPmMueHx8ZjxnLng6ZjxjLnh8fGY+Zy54KWs9ITE7Yz1bWyJNIixjLngsYy55XV07ayYmYy5wdXNoKGQpO2MucHVzaChbIkwiLGcueCxnLnldKTtyZXR1cm4gY319LGdldENvbm5lY3RvclBhdGg6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLmxhYmVsUG9zaXRpb24sZz10aGlzLnNlcmllcy5vcHRpb25zLmRhdGFMYWJlbHMsZD1nLmNvbm5lY3RvclNoYXBlLGw9dGhpcy5jb25uZWN0b3JTaGFwZXM7bFtkXSYmKGQ9bFtkXSk7cmV0dXJuIGQuY2FsbCh0aGlzLHt4OmMuZmluYWwueCx5OmMuZmluYWwueSxhbGlnbm1lbnQ6Yy5hbGlnbm1lbnR9LApjLmNvbm5lY3RvclBvc2l0aW9uLGcpfX0pOyIifSk7TyhxLCJwYXJ0cy9EYXRhTGFiZWxzLmpzIixbcVsicGFydHMvR2xvYmFscy5qcyJdLHFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihnLGMpe3ZhciBxPWcubm9vcCx5PWcuc2VyaWVzVHlwZXMsQj1jLmFuaW1PYmplY3QsSD1jLmFycmF5TWF4LEQ9Yy5jbGFtcCxKPWMuZGVmaW5lZCx0PWMuZXh0ZW5kLEc9Yy5maXJlRXZlbnQsTD1jLmZvcm1hdCx2PWMuaXNBcnJheSxLPWMubWVyZ2Usbj1jLm9iamVjdEVhY2gscj1jLnBpY2ssQz1jLnJlbGF0aXZlTGVuZ3RoLEk9Yy5zcGxhdCxwPWMuc3RhYmxlU29ydCxtPWcuU2VyaWVzO2cuZGlzdHJpYnV0ZT1mdW5jdGlvbihjLGwsayl7ZnVuY3Rpb24gZChhLGMpe3JldHVybiBhLnRhcmdldC1jLnRhcmdldH12YXIgYSxtPSEwLG49YyxxPVtdO3ZhciB0PTA7dmFyIHc9bi5yZWR1Y2VkTGVufHxsO2ZvcihhPWMubGVuZ3RoO2EtLTspdCs9Y1thXS5zaXplO2lmKHQ+dyl7cChjLGZ1bmN0aW9uKGEsCmMpe3JldHVybihjLnJhbmt8fDApLShhLnJhbmt8fDApfSk7Zm9yKHQ9YT0wO3Q8PXc7KXQrPWNbYV0uc2l6ZSxhKys7cT1jLnNwbGljZShhLTEsYy5sZW5ndGgpfXAoYyxkKTtmb3IoYz1jLm1hcChmdW5jdGlvbihhKXtyZXR1cm57c2l6ZTphLnNpemUsdGFyZ2V0czpbYS50YXJnZXRdLGFsaWduOnIoYS5hbGlnbiwuNSl9fSk7bTspe2ZvcihhPWMubGVuZ3RoO2EtLTspbT1jW2FdLHQ9KE1hdGgubWluLmFwcGx5KDAsbS50YXJnZXRzKStNYXRoLm1heC5hcHBseSgwLG0udGFyZ2V0cykpLzIsbS5wb3M9RCh0LW0uc2l6ZSptLmFsaWduLDAsbC1tLnNpemUpO2E9Yy5sZW5ndGg7Zm9yKG09ITE7YS0tOykwPGEmJmNbYS0xXS5wb3MrY1thLTFdLnNpemU+Y1thXS5wb3MmJihjW2EtMV0uc2l6ZSs9Y1thXS5zaXplLGNbYS0xXS50YXJnZXRzPWNbYS0xXS50YXJnZXRzLmNvbmNhdChjW2FdLnRhcmdldHMpLGNbYS0xXS5hbGlnbj0uNSxjW2EtMV0ucG9zK2NbYS0xXS5zaXplPmwmJihjW2EtMV0ucG9zPQpsLWNbYS0xXS5zaXplKSxjLnNwbGljZShhLDEpLG09ITApfW4ucHVzaC5hcHBseShuLHEpO2E9MDtjLnNvbWUoZnVuY3Rpb24oYyl7dmFyIGQ9MDtpZihjLnRhcmdldHMuc29tZShmdW5jdGlvbigpe25bYV0ucG9zPWMucG9zK2Q7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgayYmTWF0aC5hYnMoblthXS5wb3MtblthXS50YXJnZXQpPmspcmV0dXJuIG4uc2xpY2UoMCxhKzEpLmZvckVhY2goZnVuY3Rpb24oYSl7ZGVsZXRlIGEucG9zfSksbi5yZWR1Y2VkTGVuPShuLnJlZHVjZWRMZW58fGwpLS4xKmwsbi5yZWR1Y2VkTGVuPi4xKmwmJmcuZGlzdHJpYnV0ZShuLGwsayksITA7ZCs9blthXS5zaXplO2ErK30pKXJldHVybiEwfSk7cChuLGQpfTttLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscz1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYSxjKXt2YXIgYj1jLmZpbHRlcjtyZXR1cm4gYj8oYz1iLm9wZXJhdG9yLGE9YVtiLnByb3BlcnR5XSxiPWIudmFsdWUsIj4iPT09YyYmYT5ifHwiPCI9PT0KYyYmYTxifHwiPj0iPT09YyYmYT49Ynx8Ijw9Ij09PWMmJmE8PWJ8fCI9PSI9PT1jJiZhPT1ifHwiPT09Ij09PWMmJmE9PT1iPyEwOiExKTohMH1mdW5jdGlvbiBnKGEsYyl7dmFyIGI9W10sZDtpZih2KGEpJiYhdihjKSliPWEubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBLKGEsYyl9KTtlbHNlIGlmKHYoYykmJiF2KGEpKWI9Yy5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIEsoYSxiKX0pO2Vsc2UgaWYodihhKXx8dihjKSlmb3IoZD1NYXRoLm1heChhLmxlbmd0aCxjLmxlbmd0aCk7ZC0tOyliW2RdPUsoYVtkXSxjW2RdKTtlbHNlIGI9SyhhLGMpO3JldHVybiBifXZhciBrPXRoaXMsZj1rLmNoYXJ0LGE9ay5vcHRpb25zLG09YS5kYXRhTGFiZWxzLHA9ay5wb2ludHMscSx0PWsuaGFzUmVuZGVyZWR8fDAsdz1CKGEuYW5pbWF0aW9uKS5kdXJhdGlvbix5PU1hdGgubWluKHcsMjAwKSxGPSFmLnJlbmRlcmVyLmZvckV4cG9ydCYmcihtLmRlZmVyLDA8eSksQz1mLnJlbmRlcmVyO209ZyhnKGYub3B0aW9ucy5wbG90T3B0aW9ucyYmCmYub3B0aW9ucy5wbG90T3B0aW9ucy5zZXJpZXMmJmYub3B0aW9ucy5wbG90T3B0aW9ucy5zZXJpZXMuZGF0YUxhYmVscyxmLm9wdGlvbnMucGxvdE9wdGlvbnMmJmYub3B0aW9ucy5wbG90T3B0aW9uc1trLnR5cGVdJiZmLm9wdGlvbnMucGxvdE9wdGlvbnNbay50eXBlXS5kYXRhTGFiZWxzKSxtKTtHKHRoaXMsImRyYXdEYXRhTGFiZWxzIik7aWYodihtKXx8bS5lbmFibGVkfHxrLl9oYXNQb2ludExhYmVscyl7dmFyIGU9ay5wbG90R3JvdXAoImRhdGFMYWJlbHNHcm91cCIsImRhdGEtbGFiZWxzIixGJiYhdD8iaGlkZGVuIjoiaW5oZXJpdCIsbS56SW5kZXh8fDYpO0YmJihlLmF0dHIoe29wYWNpdHk6K3R9KSx0fHxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGI9ay5kYXRhTGFiZWxzR3JvdXA7YiYmKGsudmlzaWJsZSYmZS5zaG93KCEwKSxiW2EuYW5pbWF0aW9uPyJhbmltYXRlIjoiYXR0ciJdKHtvcGFjaXR5OjF9LHtkdXJhdGlvbjp5fSkpfSx3LXkpKTtwLmZvckVhY2goZnVuY3Rpb24oYil7cT0KSShnKG0sYi5kbE9wdGlvbnN8fGIub3B0aW9ucyYmYi5vcHRpb25zLmRhdGFMYWJlbHMpKTtxLmZvckVhY2goZnVuY3Rpb24oZCxnKXt2YXIgaD1kLmVuYWJsZWQmJighYi5pc051bGx8fGIuZGF0YUxhYmVsT25OdWxsKSYmYyhiLGQpLGw9Yi5kYXRhTGFiZWxzP2IuZGF0YUxhYmVsc1tnXTpiLmRhdGFMYWJlbCxtPWIuY29ubmVjdG9ycz9iLmNvbm5lY3RvcnNbZ106Yi5jb25uZWN0b3IscD1yKGQuZGlzdGFuY2UsYi5sYWJlbERpc3RhbmNlKSxxPSFsO2lmKGgpe3ZhciB1PWIuZ2V0TGFiZWxDb25maWcoKTt2YXIgdz1yKGRbYi5mb3JtYXRQcmVmaXgrIkZvcm1hdCJdLGQuZm9ybWF0KTt1PUoodyk/TCh3LHUsZik6KGRbYi5mb3JtYXRQcmVmaXgrIkZvcm1hdHRlciJdfHxkLmZvcm1hdHRlcikuY2FsbCh1LGQpO3c9ZC5zdHlsZTt2YXIgdD1kLnJvdGF0aW9uO2Yuc3R5bGVkTW9kZXx8KHcuY29sb3I9cihkLmNvbG9yLHcuY29sb3Isay5jb2xvciwiIzAwMDAwMCIpLCJjb250cmFzdCI9PT0Kdy5jb2xvcj8oYi5jb250cmFzdENvbG9yPUMuZ2V0Q29udHJhc3QoYi5jb2xvcnx8ay5jb2xvciksdy5jb2xvcj0hSihwKSYmZC5pbnNpZGV8fDA+cHx8YS5zdGFja2luZz9iLmNvbnRyYXN0Q29sb3I6IiMwMDAwMDAiKTpkZWxldGUgYi5jb250cmFzdENvbG9yLGEuY3Vyc29yJiYody5jdXJzb3I9YS5jdXJzb3IpKTt2YXIgQT17cjpkLmJvcmRlclJhZGl1c3x8MCxyb3RhdGlvbjp0LHBhZGRpbmc6ZC5wYWRkaW5nLHpJbmRleDoxfTtmLnN0eWxlZE1vZGV8fChBLmZpbGw9ZC5iYWNrZ3JvdW5kQ29sb3IsQS5zdHJva2U9ZC5ib3JkZXJDb2xvcixBWyJzdHJva2Utd2lkdGgiXT1kLmJvcmRlcldpZHRoKTtuKEEsZnVuY3Rpb24oYSxiKXsidW5kZWZpbmVkIj09PXR5cGVvZiBhJiZkZWxldGUgQVtiXX0pfSFsfHxoJiZKKHUpP2gmJkoodSkmJihsP0EudGV4dD11OihiLmRhdGFMYWJlbHM9Yi5kYXRhTGFiZWxzfHxbXSxsPWIuZGF0YUxhYmVsc1tnXT10P0MudGV4dCh1LDAsLTk5OTksZC51c2VIVE1MKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1kYXRhLWxhYmVsIik6CkMubGFiZWwodSwwLC05OTk5LGQuc2hhcGUsbnVsbCxudWxsLGQudXNlSFRNTCxudWxsLCJkYXRhLWxhYmVsIiksZ3x8KGIuZGF0YUxhYmVsPWwpLGwuYWRkQ2xhc3MoIiBoaWdoY2hhcnRzLWRhdGEtbGFiZWwtY29sb3ItIitiLmNvbG9ySW5kZXgrIiAiKyhkLmNsYXNzTmFtZXx8IiIpKyhkLnVzZUhUTUw/IiBoaWdoY2hhcnRzLXRyYWNrZXIiOiIiKSkpLGwub3B0aW9ucz1kLGwuYXR0cihBKSxmLnN0eWxlZE1vZGV8fGwuY3NzKHcpLnNoYWRvdyhkLnNoYWRvdyksbC5hZGRlZHx8bC5hZGQoZSksZC50ZXh0UGF0aCYmIWQudXNlSFRNTCYmKGwuc2V0VGV4dFBhdGgoYi5nZXREYXRhTGFiZWxQYXRoJiZiLmdldERhdGFMYWJlbFBhdGgobCl8fGIuZ3JhcGhpYyxkLnRleHRQYXRoKSxiLmRhdGFMYWJlbFBhdGgmJiFkLnRleHRQYXRoLmVuYWJsZWQmJihiLmRhdGFMYWJlbFBhdGg9Yi5kYXRhTGFiZWxQYXRoLmRlc3Ryb3koKSkpLGsuYWxpZ25EYXRhTGFiZWwoYixsLGQsbnVsbCxxKSk6KGIuZGF0YUxhYmVsPQpiLmRhdGFMYWJlbCYmYi5kYXRhTGFiZWwuZGVzdHJveSgpLGIuZGF0YUxhYmVscyYmKDE9PT1iLmRhdGFMYWJlbHMubGVuZ3RoP2RlbGV0ZSBiLmRhdGFMYWJlbHM6ZGVsZXRlIGIuZGF0YUxhYmVsc1tnXSksZ3x8ZGVsZXRlIGIuZGF0YUxhYmVsLG0mJihiLmNvbm5lY3Rvcj1iLmNvbm5lY3Rvci5kZXN0cm95KCksYi5jb25uZWN0b3JzJiYoMT09PWIuY29ubmVjdG9ycy5sZW5ndGg/ZGVsZXRlIGIuY29ubmVjdG9yczpkZWxldGUgYi5jb25uZWN0b3JzW2ddKSkpfSl9KX1HKHRoaXMsImFmdGVyRHJhd0RhdGFMYWJlbHMiKX07bS5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWw9ZnVuY3Rpb24oYyxnLGssZixhKXt2YXIgZD10aGlzLGw9dGhpcy5jaGFydCxtPXRoaXMuaXNDYXJ0ZXNpYW4mJmwuaW52ZXJ0ZWQsbj10aGlzLmVuYWJsZWREYXRhU29ydGluZyxwPXIoYy5kbEJveCYmYy5kbEJveC5jZW50ZXJYLGMucGxvdFgsLTk5OTkpLHE9cihjLnBsb3RZLC05OTk5KSx2PWcuZ2V0QkJveCgpLAp5PWsucm90YXRpb24sZT1rLmFsaWduLGI9bC5pc0luc2lkZVBsb3QocCxNYXRoLnJvdW5kKHEpLG0pLGg9Imp1c3RpZnkiPT09cihrLm92ZXJmbG93LG4/Im5vbmUiOiJqdXN0aWZ5Iiksej10aGlzLnZpc2libGUmJiExIT09Yy52aXNpYmxlJiYoYy5zZXJpZXMuZm9yY2VETHx8biYmIWh8fGJ8fGsuaW5zaWRlJiZmJiZsLmlzSW5zaWRlUGxvdChwLG0/Zi54KzE6Zi55K2YuaGVpZ2h0LTEsbSkpO3ZhciB4PWZ1bmN0aW9uKGUpe24mJmQueEF4aXMmJiFoJiZkLnNldERhdGFMYWJlbFN0YXJ0UG9zKGMsZyxhLGIsZSl9O2lmKHope3ZhciBDPWwucmVuZGVyZXIuZm9udE1ldHJpY3MobC5zdHlsZWRNb2RlP3ZvaWQgMDprLnN0eWxlLmZvbnRTaXplLGcpLmI7Zj10KHt4Om0/dGhpcy55QXhpcy5sZW4tcTpwLHk6TWF0aC5yb3VuZChtP3RoaXMueEF4aXMubGVuLXA6cSksd2lkdGg6MCxoZWlnaHQ6MH0sZik7dChrLHt3aWR0aDp2LndpZHRoLGhlaWdodDp2LmhlaWdodH0pO3k/KGg9ITEscD0KbC5yZW5kZXJlci5yb3RDb3JyKEMseSkscD17eDpmLngrKGsueHx8MCkrZi53aWR0aC8yK3AueCx5OmYueSsoay55fHwwKSt7dG9wOjAsbWlkZGxlOi41LGJvdHRvbToxfVtrLnZlcnRpY2FsQWxpZ25dKmYuaGVpZ2h0fSx4KHApLGdbYT8iYXR0ciI6ImFuaW1hdGUiXShwKS5hdHRyKHthbGlnbjplfSkseD0oeSs3MjApJTM2MCx4PTE4MDx4JiYzNjA+eCwibGVmdCI9PT1lP3AueS09eD92LmhlaWdodDowOiJjZW50ZXIiPT09ZT8ocC54LT12LndpZHRoLzIscC55LT12LmhlaWdodC8yKToicmlnaHQiPT09ZSYmKHAueC09di53aWR0aCxwLnktPXg/MDp2LmhlaWdodCksZy5wbGFjZWQ9ITAsZy5hbGlnbkF0dHI9cCk6KHgoZiksZy5hbGlnbihrLG51bGwsZikscD1nLmFsaWduQXR0cik7aCYmMDw9Zi5oZWlnaHQ/dGhpcy5qdXN0aWZ5RGF0YUxhYmVsKGcsayxwLHYsZixhKTpyKGsuY3JvcCwhMCkmJih6PWwuaXNJbnNpZGVQbG90KHAueCxwLnkpJiZsLmlzSW5zaWRlUGxvdChwLngrdi53aWR0aCwKcC55K3YuaGVpZ2h0KSk7aWYoay5zaGFwZSYmIXkpZ1thPyJhdHRyIjoiYW5pbWF0ZSJdKHthbmNob3JYOm0/bC5wbG90V2lkdGgtYy5wbG90WTpjLnBsb3RYLGFuY2hvclk6bT9sLnBsb3RIZWlnaHQtYy5wbG90WDpjLnBsb3RZfSl9YSYmbiYmKGcucGxhY2VkPSExKTt6fHxuJiYhaHx8KGcuaGlkZSghMCksZy5wbGFjZWQ9ITEpfTttLnByb3RvdHlwZS5zZXREYXRhTGFiZWxTdGFydFBvcz1mdW5jdGlvbihjLGcsayxmLGEpe3ZhciBkPXRoaXMuY2hhcnQsbD1kLmludmVydGVkLG09dGhpcy54QXhpcyxuPW0ucmV2ZXJzZWQscD1sP2cuaGVpZ2h0LzI6Zy53aWR0aC8yO2M9KGM9Yy5wb2ludFdpZHRoKT9jLzI6MDttPWw/YS54Om4/LXAtYzptLndpZHRoLXArYzthPWw/bj90aGlzLnlBeGlzLmhlaWdodC1wK2M6LXAtYzphLnk7Zy5zdGFydFhQb3M9bTtnLnN0YXJ0WVBvcz1hO2Y/ImhpZGRlbiI9PT1nLnZpc2liaWxpdHkmJihnLnNob3coKSxnLmF0dHIoe29wYWNpdHk6MH0pLmFuaW1hdGUoe29wYWNpdHk6MX0pKToKZy5hdHRyKHtvcGFjaXR5OjF9KS5hbmltYXRlKHtvcGFjaXR5OjB9LHZvaWQgMCxnLmhpZGUpO2QuaGFzUmVuZGVyZWQmJihrJiZnLmF0dHIoe3g6Zy5zdGFydFhQb3MseTpnLnN0YXJ0WVBvc30pLGcucGxhY2VkPSEwKX07bS5wcm90b3R5cGUuanVzdGlmeURhdGFMYWJlbD1mdW5jdGlvbihjLGcsayxmLGEsbSl7dmFyIGQ9dGhpcy5jaGFydCxsPWcuYWxpZ24sbj1nLnZlcnRpY2FsQWxpZ24scD1jLmJveD8wOmMucGFkZGluZ3x8MCxxPWcueDtxPXZvaWQgMD09PXE/MDpxO3ZhciByPWcueTt2YXIgdD12b2lkIDA9PT1yPzA6cjtyPWsueCtwO2lmKDA+cil7InJpZ2h0Ij09PWwmJjA8PXE/KGcuYWxpZ249ImxlZnQiLGcuaW5zaWRlPSEwKTpxLT1yO3ZhciBlPSEwfXI9ay54K2Yud2lkdGgtcDtyPmQucGxvdFdpZHRoJiYoImxlZnQiPT09bCYmMD49cT8oZy5hbGlnbj0icmlnaHQiLGcuaW5zaWRlPSEwKTpxKz1kLnBsb3RXaWR0aC1yLGU9ITApO3I9ay55K3A7MD5yJiYoImJvdHRvbSI9PT0KbiYmMDw9dD8oZy52ZXJ0aWNhbEFsaWduPSJ0b3AiLGcuaW5zaWRlPSEwKTp0LT1yLGU9ITApO3I9ay55K2YuaGVpZ2h0LXA7cj5kLnBsb3RIZWlnaHQmJigidG9wIj09PW4mJjA+PXQ/KGcudmVydGljYWxBbGlnbj0iYm90dG9tIixnLmluc2lkZT0hMCk6dCs9ZC5wbG90SGVpZ2h0LXIsZT0hMCk7ZSYmKGcueD1xLGcueT10LGMucGxhY2VkPSFtLGMuYWxpZ24oZyx2b2lkIDAsYSkpO3JldHVybiBlfTt5LnBpZSYmKHkucGllLnByb3RvdHlwZS5kYXRhTGFiZWxQb3NpdGlvbmVycz17cmFkaWFsRGlzdHJpYnV0aW9uWTpmdW5jdGlvbihjKXtyZXR1cm4gYy50b3ArYy5kaXN0cmlidXRlQm94LnBvc30scmFkaWFsRGlzdHJpYnV0aW9uWDpmdW5jdGlvbihjLGcsayxmKXtyZXR1cm4gYy5nZXRYKGs8Zy50b3ArMnx8az5nLmJvdHRvbS0yP2Y6ayxnLmhhbGYsZyl9LGp1c3RpZnk6ZnVuY3Rpb24oYyxnLGspe3JldHVybiBrWzBdKyhjLmhhbGY/LTE6MSkqKGcrYy5sYWJlbERpc3RhbmNlKX0sCmFsaWduVG9QbG90RWRnZXM6ZnVuY3Rpb24oYyxnLGssZil7Yz1jLmdldEJCb3goKS53aWR0aDtyZXR1cm4gZz9jK2Y6ay1jLWZ9LGFsaWduVG9Db25uZWN0b3JzOmZ1bmN0aW9uKGMsZyxrLGYpe3ZhciBhPTAsZDtjLmZvckVhY2goZnVuY3Rpb24oYyl7ZD1jLmRhdGFMYWJlbC5nZXRCQm94KCkud2lkdGg7ZD5hJiYoYT1kKX0pO3JldHVybiBnP2ErZjprLWEtZn19LHkucGllLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscz1mdW5jdGlvbigpe3ZhciBjPXRoaXMsbD1jLmRhdGEsayxmPWMuY2hhcnQsYT1jLm9wdGlvbnMuZGF0YUxhYmVsc3x8e30sbj1hLmNvbm5lY3RvclBhZGRpbmcscCxxPWYucGxvdFdpZHRoLHQ9Zi5wbG90SGVpZ2h0LHc9Zi5wbG90TGVmdCx2PU1hdGgucm91bmQoZi5jaGFydFdpZHRoLzMpLHksQz1jLmNlbnRlcixlPUNbMl0vMixiPUNbMV0saCx6LHgsQixEPVtbXSxbXV0sRyxJLEwsTyxVPVswLDAsMCwwXSxSPWMuZGF0YUxhYmVsUG9zaXRpb25lcnMsVDtjLnZpc2libGUmJgooYS5lbmFibGVkfHxjLl9oYXNQb2ludExhYmVscykmJihsLmZvckVhY2goZnVuY3Rpb24oYSl7YS5kYXRhTGFiZWwmJmEudmlzaWJsZSYmYS5kYXRhTGFiZWwuc2hvcnRlbmVkJiYoYS5kYXRhTGFiZWwuYXR0cih7d2lkdGg6ImF1dG8ifSkuY3NzKHt3aWR0aDoiYXV0byIsdGV4dE92ZXJmbG93OiJjbGlwIn0pLGEuZGF0YUxhYmVsLnNob3J0ZW5lZD0hMSl9KSxtLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscy5hcHBseShjKSxsLmZvckVhY2goZnVuY3Rpb24oYil7Yi5kYXRhTGFiZWwmJihiLnZpc2libGU/KERbYi5oYWxmXS5wdXNoKGIpLGIuZGF0YUxhYmVsLl9wb3M9bnVsbCwhSihhLnN0eWxlLndpZHRoKSYmIUooYi5vcHRpb25zLmRhdGFMYWJlbHMmJmIub3B0aW9ucy5kYXRhTGFiZWxzLnN0eWxlJiZiLm9wdGlvbnMuZGF0YUxhYmVscy5zdHlsZS53aWR0aCkmJmIuZGF0YUxhYmVsLmdldEJCb3goKS53aWR0aD52JiYoYi5kYXRhTGFiZWwuY3NzKHt3aWR0aDpNYXRoLnJvdW5kKC43Kgp2KSsicHgifSksYi5kYXRhTGFiZWwuc2hvcnRlbmVkPSEwKSk6KGIuZGF0YUxhYmVsPWIuZGF0YUxhYmVsLmRlc3Ryb3koKSxiLmRhdGFMYWJlbHMmJjE9PT1iLmRhdGFMYWJlbHMubGVuZ3RoJiZkZWxldGUgYi5kYXRhTGFiZWxzKSl9KSxELmZvckVhY2goZnVuY3Rpb24oZCxsKXt2YXIgbT1kLmxlbmd0aCxwPVtdLHU7aWYobSl7Yy5zb3J0QnlBbmdsZShkLGwtLjUpO2lmKDA8Yy5tYXhMYWJlbERpc3RhbmNlKXt2YXIgdj1NYXRoLm1heCgwLGItZS1jLm1heExhYmVsRGlzdGFuY2UpO3ZhciBBPU1hdGgubWluKGIrZStjLm1heExhYmVsRGlzdGFuY2UsZi5wbG90SGVpZ2h0KTtkLmZvckVhY2goZnVuY3Rpb24oYSl7MDxhLmxhYmVsRGlzdGFuY2UmJmEuZGF0YUxhYmVsJiYoYS50b3A9TWF0aC5tYXgoMCxiLWUtYS5sYWJlbERpc3RhbmNlKSxhLmJvdHRvbT1NYXRoLm1pbihiK2UrYS5sYWJlbERpc3RhbmNlLGYucGxvdEhlaWdodCksdT1hLmRhdGFMYWJlbC5nZXRCQm94KCkuaGVpZ2h0fHwKMjEsYS5kaXN0cmlidXRlQm94PXt0YXJnZXQ6YS5sYWJlbFBvc2l0aW9uLm5hdHVyYWwueS1hLnRvcCt1LzIsc2l6ZTp1LHJhbms6YS55fSxwLnB1c2goYS5kaXN0cmlidXRlQm94KSl9KTt2PUErdS12O2cuZGlzdHJpYnV0ZShwLHYsdi81KX1mb3IoTz0wO088bTtPKyspe2s9ZFtPXTt4PWsubGFiZWxQb3NpdGlvbjtoPWsuZGF0YUxhYmVsO0w9ITE9PT1rLnZpc2libGU/ImhpZGRlbiI6ImluaGVyaXQiO0k9dj14Lm5hdHVyYWwueTtwJiZKKGsuZGlzdHJpYnV0ZUJveCkmJigidW5kZWZpbmVkIj09PXR5cGVvZiBrLmRpc3RyaWJ1dGVCb3gucG9zP0w9ImhpZGRlbiI6KEI9ay5kaXN0cmlidXRlQm94LnNpemUsST1SLnJhZGlhbERpc3RyaWJ1dGlvblkoaykpKTtkZWxldGUgay5wb3NpdGlvbkluZGV4O2lmKGEuanVzdGlmeSlHPVIuanVzdGlmeShrLGUsQyk7ZWxzZSBzd2l0Y2goYS5hbGlnblRvKXtjYXNlICJjb25uZWN0b3JzIjpHPVIuYWxpZ25Ub0Nvbm5lY3RvcnMoZCxsLHEsdyk7CmJyZWFrO2Nhc2UgInBsb3RFZGdlcyI6Rz1SLmFsaWduVG9QbG90RWRnZXMoaCxsLHEsdyk7YnJlYWs7ZGVmYXVsdDpHPVIucmFkaWFsRGlzdHJpYnV0aW9uWChjLGssSSx2KX1oLl9hdHRyPXt2aXNpYmlsaXR5OkwsYWxpZ246eC5hbGlnbm1lbnR9O1Q9ay5vcHRpb25zLmRhdGFMYWJlbHN8fHt9O2guX3Bvcz17eDpHK3IoVC54LGEueCkrKHtsZWZ0Om4scmlnaHQ6LW59W3guYWxpZ25tZW50XXx8MCkseTpJK3IoVC55LGEueSktMTB9O3guZmluYWwueD1HO3guZmluYWwueT1JO3IoYS5jcm9wLCEwKSYmKHo9aC5nZXRCQm94KCkud2lkdGgsdj1udWxsLEctejxuJiYxPT09bD8odj1NYXRoLnJvdW5kKHotRytuKSxVWzNdPU1hdGgubWF4KHYsVVszXSkpOkcrej5xLW4mJjA9PT1sJiYodj1NYXRoLnJvdW5kKEcrei1xK24pLFVbMV09TWF0aC5tYXgodixVWzFdKSksMD5JLUIvMj9VWzBdPU1hdGgubWF4KE1hdGgucm91bmQoLUkrQi8yKSxVWzBdKTpJK0IvMj50JiYoVVsyXT1NYXRoLm1heChNYXRoLnJvdW5kKEkrCkIvMi10KSxVWzJdKSksaC5zaWRlT3ZlcmZsb3c9dil9fX0pLDA9PT1IKFUpfHx0aGlzLnZlcmlmeURhdGFMYWJlbE92ZXJmbG93KFUpKSYmKHRoaXMucGxhY2VEYXRhTGFiZWxzKCksdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihiKXtUPUsoYSxiLm9wdGlvbnMuZGF0YUxhYmVscyk7aWYocD1yKFQuY29ubmVjdG9yV2lkdGgsMSkpe3ZhciBkO3k9Yi5jb25uZWN0b3I7aWYoKGg9Yi5kYXRhTGFiZWwpJiZoLl9wb3MmJmIudmlzaWJsZSYmMDxiLmxhYmVsRGlzdGFuY2Upe0w9aC5fYXR0ci52aXNpYmlsaXR5O2lmKGQ9IXkpYi5jb25uZWN0b3I9eT1mLnJlbmRlcmVyLnBhdGgoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1kYXRhLWxhYmVsLWNvbm5lY3RvciAgaGlnaGNoYXJ0cy1jb2xvci0iK2IuY29sb3JJbmRleCsoYi5jbGFzc05hbWU/IiAiK2IuY2xhc3NOYW1lOiIiKSkuYWRkKGMuZGF0YUxhYmVsc0dyb3VwKSxmLnN0eWxlZE1vZGV8fHkuYXR0cih7InN0cm9rZS13aWR0aCI6cCwKc3Ryb2tlOlQuY29ubmVjdG9yQ29sb3J8fGIuY29sb3J8fCIjNjY2NjY2In0pO3lbZD8iYXR0ciI6ImFuaW1hdGUiXSh7ZDpiLmdldENvbm5lY3RvclBhdGgoKX0pO3kuYXR0cigidmlzaWJpbGl0eSIsTCl9ZWxzZSB5JiYoYi5jb25uZWN0b3I9eS5kZXN0cm95KCkpfX0pKX0seS5waWUucHJvdG90eXBlLnBsYWNlRGF0YUxhYmVscz1mdW5jdGlvbigpe3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9Yy5kYXRhTGFiZWwsZztkJiZjLnZpc2libGUmJigoZz1kLl9wb3MpPyhkLnNpZGVPdmVyZmxvdyYmKGQuX2F0dHIud2lkdGg9TWF0aC5tYXgoZC5nZXRCQm94KCkud2lkdGgtZC5zaWRlT3ZlcmZsb3csMCksZC5jc3Moe3dpZHRoOmQuX2F0dHIud2lkdGgrInB4Iix0ZXh0T3ZlcmZsb3c6KHRoaXMub3B0aW9ucy5kYXRhTGFiZWxzLnN0eWxlfHx7fSkudGV4dE92ZXJmbG93fHwiZWxsaXBzaXMifSksZC5zaG9ydGVuZWQ9ITApLGQuYXR0cihkLl9hdHRyKSxkW2QubW92ZWQ/CiJhbmltYXRlIjoiYXR0ciJdKGcpLGQubW92ZWQ9ITApOmQmJmQuYXR0cih7eTotOTk5OX0pKTtkZWxldGUgYy5kaXN0cmlidXRlQm94fSx0aGlzKX0seS5waWUucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsPXEseS5waWUucHJvdG90eXBlLnZlcmlmeURhdGFMYWJlbE92ZXJmbG93PWZ1bmN0aW9uKGMpe3ZhciBkPXRoaXMuY2VudGVyLGc9dGhpcy5vcHRpb25zLGY9Zy5jZW50ZXIsYT1nLm1pblNpemV8fDgwLG09bnVsbCE9PWcuc2l6ZTtpZighbSl7aWYobnVsbCE9PWZbMF0pdmFyIG49TWF0aC5tYXgoZFsyXS1NYXRoLm1heChjWzFdLGNbM10pLGEpO2Vsc2Ugbj1NYXRoLm1heChkWzJdLWNbMV0tY1szXSxhKSxkWzBdKz0oY1szXS1jWzFdKS8yO251bGwhPT1mWzFdP249RChuLGEsZFsyXS1NYXRoLm1heChjWzBdLGNbMl0pKToobj1EKG4sYSxkWzJdLWNbMF0tY1syXSksZFsxXSs9KGNbMF0tY1syXSkvMik7bjxkWzJdPyhkWzJdPW4sZFszXT1NYXRoLm1pbihDKGcuaW5uZXJTaXplfHwKMCxuKSxuKSx0aGlzLnRyYW5zbGF0ZShkKSx0aGlzLmRyYXdEYXRhTGFiZWxzJiZ0aGlzLmRyYXdEYXRhTGFiZWxzKCkpOm09ITB9cmV0dXJuIG19KTt5LmNvbHVtbiYmKHkuY29sdW1uLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbD1mdW5jdGlvbihjLGcsayxmLGEpe3ZhciBkPXRoaXMuY2hhcnQuaW52ZXJ0ZWQsbD1jLnNlcmllcyxuPWMuZGxCb3h8fGMuc2hhcGVBcmdzLHA9cihjLmJlbG93LGMucGxvdFk+cih0aGlzLnRyYW5zbGF0ZWRUaHJlc2hvbGQsbC55QXhpcy5sZW4pKSxxPXIoay5pbnNpZGUsISF0aGlzLm9wdGlvbnMuc3RhY2tpbmcpO24mJihmPUsobiksMD5mLnkmJihmLmhlaWdodCs9Zi55LGYueT0wKSxuPWYueStmLmhlaWdodC1sLnlBeGlzLmxlbiwwPG4mJm48Zi5oZWlnaHQmJihmLmhlaWdodC09biksZCYmKGY9e3g6bC55QXhpcy5sZW4tZi55LWYuaGVpZ2h0LHk6bC54QXhpcy5sZW4tZi54LWYud2lkdGgsd2lkdGg6Zi5oZWlnaHQsaGVpZ2h0OmYud2lkdGh9KSxxfHwKKGQ/KGYueCs9cD8wOmYud2lkdGgsZi53aWR0aD0wKTooZi55Kz1wP2YuaGVpZ2h0OjAsZi5oZWlnaHQ9MCkpKTtrLmFsaWduPXIoay5hbGlnbiwhZHx8cT8iY2VudGVyIjpwPyJyaWdodCI6ImxlZnQiKTtrLnZlcnRpY2FsQWxpZ249cihrLnZlcnRpY2FsQWxpZ24sZHx8cT8ibWlkZGxlIjpwPyJ0b3AiOiJib3R0b20iKTttLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbC5jYWxsKHRoaXMsYyxnLGssZixhKTtrLmluc2lkZSYmYy5jb250cmFzdENvbG9yJiZnLmNzcyh7Y29sb3I6Yy5jb250cmFzdENvbG9yfSl9KX0pO08ocSwibW9kdWxlcy9vdmVybGFwcGluZy1kYXRhbGFiZWxzLnNyYy5qcyIsW3FbInBhcnRzL0NoYXJ0LmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyl7dmFyIHE9Yy5hZGRFdmVudCx5PWMuZmlyZUV2ZW50LEI9Yy5pc0FycmF5LEg9Yy5pc051bWJlcixEPWMub2JqZWN0RWFjaCxKPWMucGljaztxKGcsInJlbmRlciIsZnVuY3Rpb24oKXt2YXIgYz0KW107KHRoaXMubGFiZWxDb2xsZWN0b3JzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihnKXtjPWMuY29uY2F0KGcoKSl9KTsodGhpcy55QXhpc3x8W10pLmZvckVhY2goZnVuY3Rpb24oZyl7Zy5zdGFja2luZyYmZy5vcHRpb25zLnN0YWNrTGFiZWxzJiYhZy5vcHRpb25zLnN0YWNrTGFiZWxzLmFsbG93T3ZlcmxhcCYmRChnLnN0YWNraW5nLnN0YWNrcyxmdW5jdGlvbihnKXtEKGcsZnVuY3Rpb24oZyl7Yy5wdXNoKGcubGFiZWwpfSl9KX0pOyh0aGlzLnNlcmllc3x8W10pLmZvckVhY2goZnVuY3Rpb24oZyl7dmFyIHE9Zy5vcHRpb25zLmRhdGFMYWJlbHM7Zy52aXNpYmxlJiYoITEhPT1xLmVuYWJsZWR8fGcuX2hhc1BvaW50TGFiZWxzKSYmKGcubm9kZXN8fGcucG9pbnRzKS5mb3JFYWNoKGZ1bmN0aW9uKGcpe2cudmlzaWJsZSYmKEIoZy5kYXRhTGFiZWxzKT9nLmRhdGFMYWJlbHM6Zy5kYXRhTGFiZWw/W2cuZGF0YUxhYmVsXTpbXSkuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgbj1xLm9wdGlvbnM7CnEubGFiZWxyYW5rPUoobi5sYWJlbHJhbmssZy5sYWJlbHJhbmssZy5zaGFwZUFyZ3MmJmcuc2hhcGVBcmdzLmhlaWdodCk7bi5hbGxvd092ZXJsYXB8fGMucHVzaChxKX0pfSl9KTt0aGlzLmhpZGVPdmVybGFwcGluZ0xhYmVscyhjKX0pO2cucHJvdG90eXBlLmhpZGVPdmVybGFwcGluZ0xhYmVscz1mdW5jdGlvbihjKXt2YXIgZz10aGlzLHE9Yy5sZW5ndGgsdD1nLnJlbmRlcmVyLEIsbixyLEM9ITE7dmFyIEQ9ZnVuY3Rpb24oYyl7dmFyIGQsZz1jLmJveD8wOmMucGFkZGluZ3x8MCxmPWQ9MCxhO2lmKGMmJighYy5hbGlnbkF0dHJ8fGMucGxhY2VkKSl7dmFyIG09Yy5hbGlnbkF0dHJ8fHt4OmMuYXR0cigieCIpLHk6Yy5hdHRyKCJ5Iil9O3ZhciBuPWMucGFyZW50R3JvdXA7Yy53aWR0aHx8KGQ9Yy5nZXRCQm94KCksYy53aWR0aD1kLndpZHRoLGMuaGVpZ2h0PWQuaGVpZ2h0LGQ9dC5mb250TWV0cmljcyhudWxsLGMuZWxlbWVudCkuaCk7dmFyIHA9Yy53aWR0aC0yKmc7KGE9e2xlZnQ6IjAiLApjZW50ZXI6IjAuNSIscmlnaHQ6IjEifVtjLmFsaWduVmFsdWVdKT9mPSthKnA6SChjLngpJiZNYXRoLnJvdW5kKGMueCkhPT1jLnRyYW5zbGF0ZVgmJihmPWMueC1jLnRyYW5zbGF0ZVgpO3JldHVybnt4Om0ueCsobi50cmFuc2xhdGVYfHwwKStnLWYseTptLnkrKG4udHJhbnNsYXRlWXx8MCkrZy1kLHdpZHRoOmMud2lkdGgtMipnLGhlaWdodDpjLmhlaWdodC0yKmd9fX07Zm9yKG49MDtuPHE7bisrKWlmKEI9Y1tuXSlCLm9sZE9wYWNpdHk9Qi5vcGFjaXR5LEIubmV3T3BhY2l0eT0xLEIuYWJzb2x1dGVCb3g9RChCKTtjLnNvcnQoZnVuY3Rpb24oYyxnKXtyZXR1cm4oZy5sYWJlbHJhbmt8fDApLShjLmxhYmVscmFua3x8MCl9KTtmb3Iobj0wO248cTtuKyspe3ZhciBwPShEPWNbbl0pJiZELmFic29sdXRlQm94O2ZvcihCPW4rMTtCPHE7KytCKXt2YXIgbT0ocj1jW0JdKSYmci5hYnNvbHV0ZUJveDshcHx8IW18fEQ9PT1yfHwwPT09RC5uZXdPcGFjaXR5fHwwPT09ci5uZXdPcGFjaXR5fHwKbS54PnAueCtwLndpZHRofHxtLngrbS53aWR0aDxwLnh8fG0ueT5wLnkrcC5oZWlnaHR8fG0ueSttLmhlaWdodDxwLnl8fCgoRC5sYWJlbHJhbms8ci5sYWJlbHJhbms/RDpyKS5uZXdPcGFjaXR5PTApfX1jLmZvckVhY2goZnVuY3Rpb24oYyl7aWYoYyl7dmFyIGQ9Yy5uZXdPcGFjaXR5O2Mub2xkT3BhY2l0eSE9PWQmJihjLmFsaWduQXR0ciYmYy5wbGFjZWQ/KGNbZD8icmVtb3ZlQ2xhc3MiOiJhZGRDbGFzcyJdKCJoaWdoY2hhcnRzLWRhdGEtbGFiZWwtaGlkZGVuIiksQz0hMCxjLmFsaWduQXR0ci5vcGFjaXR5PWQsY1tjLmlzT2xkPyJhbmltYXRlIjoiYXR0ciJdKGMuYWxpZ25BdHRyLG51bGwsZnVuY3Rpb24oKXtnLnN0eWxlZE1vZGV8fGMuY3NzKHtwb2ludGVyRXZlbnRzOmQ/ImF1dG8iOiJub25lIn0pO2MudmlzaWJpbGl0eT1kPyJpbmhlcml0IjoiaGlkZGVuIjtjLnBsYWNlZD0hIWR9KSx5KGcsImFmdGVySGlkZU92ZXJsYXBwaW5nTGFiZWwiKSk6Yy5hdHRyKHtvcGFjaXR5OmR9KSk7CmMuaXNPbGQ9ITB9fSk7QyYmeShnLCJhZnRlckhpZGVBbGxPdmVybGFwcGluZ0xhYmVscyIpfX0pO08ocSwicGFydHMvSW50ZXJhY3Rpb24uanMiLFtxWyJwYXJ0cy9DaGFydC5qcyJdLHFbInBhcnRzL0dsb2JhbHMuanMiXSxxWyJwYXJ0cy9MZWdlbmQuanMiXSxxWyJwYXJ0cy9PcHRpb25zLmpzIl0scVsicGFydHMvUG9pbnQuanMiXSxxWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZyxjLHEseSxCLEgpe3ZhciBEPXkuZGVmYXVsdE9wdGlvbnMsSj1ILmFkZEV2ZW50LHQ9SC5jcmVhdGVFbGVtZW50LEc9SC5jc3MsTD1ILmRlZmluZWQsdj1ILmV4dGVuZCxLPUguZmlyZUV2ZW50LG49SC5pc0FycmF5LHI9SC5pc0Z1bmN0aW9uLEM9SC5pc051bWJlcixJPUguaXNPYmplY3QscD1ILm1lcmdlLG09SC5vYmplY3RFYWNoLGQ9SC5waWNrLGw9Yy5oYXNUb3VjaDt5PWMuU2VyaWVzO0g9Yy5zZXJpZXNUeXBlczt2YXIgaz1jLnN2Zzt2YXIgZj1jLlRyYWNrZXJNaXhpbj17ZHJhd1RyYWNrZXJQb2ludDpmdW5jdGlvbigpe3ZhciBhPQp0aGlzLGM9YS5jaGFydCxkPWMucG9pbnRlcixmPWZ1bmN0aW9uKGEpe3ZhciBjPWQuZ2V0UG9pbnRGcm9tRXZlbnQoYSk7InVuZGVmaW5lZCIhPT10eXBlb2YgYyYmKGQuaXNEaXJlY3RUb3VjaD0hMCxjLm9uTW91c2VPdmVyKGEpKX0sZzthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2c9bihhLmRhdGFMYWJlbHMpP2EuZGF0YUxhYmVsczphLmRhdGFMYWJlbD9bYS5kYXRhTGFiZWxdOltdO2EuZ3JhcGhpYyYmKGEuZ3JhcGhpYy5lbGVtZW50LnBvaW50PWEpO2cuZm9yRWFjaChmdW5jdGlvbihjKXtjLmRpdj9jLmRpdi5wb2ludD1hOmMuZWxlbWVudC5wb2ludD1hfSl9KTthLl9oYXNUcmFja2luZ3x8KGEudHJhY2tlckdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uKGcpe2lmKGFbZ10pe2FbZ10uYWRkQ2xhc3MoImhpZ2hjaGFydHMtdHJhY2tlciIpLm9uKCJtb3VzZW92ZXIiLGYpLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oYSl7ZC5vblRyYWNrZXJNb3VzZU91dChhKX0pO2lmKGwpYVtnXS5vbigidG91Y2hzdGFydCIsCmYpOyFjLnN0eWxlZE1vZGUmJmEub3B0aW9ucy5jdXJzb3ImJmFbZ10uY3NzKEcpLmNzcyh7Y3Vyc29yOmEub3B0aW9ucy5jdXJzb3J9KX19KSxhLl9oYXNUcmFja2luZz0hMCk7Syh0aGlzLCJhZnRlckRyYXdUcmFja2VyIil9LGRyYXdUcmFja2VyR3JhcGg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS5vcHRpb25zLGQ9Yy50cmFja0J5QXJlYSxmPVtdLmNvbmNhdChkP2EuYXJlYVBhdGg6YS5ncmFwaFBhdGgpLGc9YS5jaGFydCxtPWcucG9pbnRlcixuPWcucmVuZGVyZXIscD1nLm9wdGlvbnMudG9vbHRpcC5zbmFwLHE9YS50cmFja2VyLGU9ZnVuY3Rpb24oYil7aWYoZy5ob3ZlclNlcmllcyE9PWEpYS5vbk1vdXNlT3ZlcigpfSxiPSJyZ2JhKDE5MiwxOTIsMTkyLCIrKGs/LjAwMDE6LjAwMikrIikiO3E/cS5hdHRyKHtkOmZ9KTphLmdyYXBoJiYoYS50cmFja2VyPW4ucGF0aChmKS5hdHRyKHt2aXNpYmlsaXR5OmEudmlzaWJsZT8idmlzaWJsZSI6ImhpZGRlbiIsekluZGV4OjJ9KS5hZGRDbGFzcyhkPwoiaGlnaGNoYXJ0cy10cmFja2VyLWFyZWEiOiJoaWdoY2hhcnRzLXRyYWNrZXItbGluZSIpLmFkZChhLmdyb3VwKSxnLnN0eWxlZE1vZGV8fGEudHJhY2tlci5hdHRyKHsic3Ryb2tlLWxpbmVjYXAiOiJyb3VuZCIsInN0cm9rZS1saW5lam9pbiI6InJvdW5kIixzdHJva2U6YixmaWxsOmQ/Yjoibm9uZSIsInN0cm9rZS13aWR0aCI6YS5ncmFwaC5zdHJva2VXaWR0aCgpKyhkPzA6MipwKX0pLFthLnRyYWNrZXIsYS5tYXJrZXJHcm91cF0uZm9yRWFjaChmdW5jdGlvbihhKXthLmFkZENsYXNzKCJoaWdoY2hhcnRzLXRyYWNrZXIiKS5vbigibW91c2VvdmVyIixlKS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGEpe20ub25UcmFja2VyTW91c2VPdXQoYSl9KTtjLmN1cnNvciYmIWcuc3R5bGVkTW9kZSYmYS5jc3Moe2N1cnNvcjpjLmN1cnNvcn0pO2lmKGwpYS5vbigidG91Y2hzdGFydCIsZSl9KSk7Syh0aGlzLCJhZnRlckRyYXdUcmFja2VyIil9fTtILmNvbHVtbiYmKEguY29sdW1uLnByb3RvdHlwZS5kcmF3VHJhY2tlcj0KZi5kcmF3VHJhY2tlclBvaW50KTtILnBpZSYmKEgucGllLnByb3RvdHlwZS5kcmF3VHJhY2tlcj1mLmRyYXdUcmFja2VyUG9pbnQpO0guc2NhdHRlciYmKEguc2NhdHRlci5wcm90b3R5cGUuZHJhd1RyYWNrZXI9Zi5kcmF3VHJhY2tlclBvaW50KTt2KHEucHJvdG90eXBlLHtzZXRJdGVtRXZlbnRzOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZj10aGlzLGc9Zi5jaGFydC5yZW5kZXJlci5ib3hXcmFwcGVyLGs9YSBpbnN0YW5jZW9mIEIsbD0iaGlnaGNoYXJ0cy1sZWdlbmQtIisoaz8icG9pbnQiOiJzZXJpZXMiKSsiLWFjdGl2ZSIsbT1mLmNoYXJ0LnN0eWxlZE1vZGU7KGQ/W2MsYS5sZWdlbmRTeW1ib2xdOlthLmxlZ2VuZEdyb3VwXSkuZm9yRWFjaChmdW5jdGlvbihkKXtpZihkKWQub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXthLnZpc2libGUmJmYuYWxsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihjKXthIT09YyYmYy5zZXRTdGF0ZSgiaW5hY3RpdmUiLCFrKX0pO2Euc2V0U3RhdGUoImhvdmVyIik7CmEudmlzaWJsZSYmZy5hZGRDbGFzcyhsKTttfHxjLmNzcyhmLm9wdGlvbnMuaXRlbUhvdmVyU3R5bGUpfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbigpe2YuY2hhcnQuc3R5bGVkTW9kZXx8Yy5jc3MocChhLnZpc2libGU/Zi5pdGVtU3R5bGU6Zi5pdGVtSGlkZGVuU3R5bGUpKTtmLmFsbEl0ZW1zLmZvckVhY2goZnVuY3Rpb24oYyl7YSE9PWMmJmMuc2V0U3RhdGUoIiIsIWspfSk7Zy5yZW1vdmVDbGFzcyhsKTthLnNldFN0YXRlKCl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGMpe3ZhciBiPWZ1bmN0aW9uKCl7YS5zZXRWaXNpYmxlJiZhLnNldFZpc2libGUoKTtmLmFsbEl0ZW1zLmZvckVhY2goZnVuY3Rpb24oYil7YSE9PWImJmIuc2V0U3RhdGUoYS52aXNpYmxlPyJpbmFjdGl2ZSI6IiIsIWspfSl9O2cucmVtb3ZlQ2xhc3MobCk7Yz17YnJvd3NlckV2ZW50OmN9O2EuZmlyZVBvaW50RXZlbnQ/YS5maXJlUG9pbnRFdmVudCgibGVnZW5kSXRlbUNsaWNrIixjLGIpOksoYSwibGVnZW5kSXRlbUNsaWNrIiwKYyxiKX0pfSl9LGNyZWF0ZUNoZWNrYm94Rm9ySXRlbTpmdW5jdGlvbihhKXthLmNoZWNrYm94PXQoImlucHV0Iix7dHlwZToiY2hlY2tib3giLGNsYXNzTmFtZToiaGlnaGNoYXJ0cy1sZWdlbmQtY2hlY2tib3giLGNoZWNrZWQ6YS5zZWxlY3RlZCxkZWZhdWx0Q2hlY2tlZDphLnNlbGVjdGVkfSx0aGlzLm9wdGlvbnMuaXRlbUNoZWNrYm94U3R5bGUsdGhpcy5jaGFydC5jb250YWluZXIpO0ooYS5jaGVja2JveCwiY2xpY2siLGZ1bmN0aW9uKGMpe0soYS5zZXJpZXN8fGEsImNoZWNrYm94Q2xpY2siLHtjaGVja2VkOmMudGFyZ2V0LmNoZWNrZWQsaXRlbTphfSxmdW5jdGlvbigpe2Euc2VsZWN0KCl9KX0pfX0pO3YoZy5wcm90b3R5cGUse3Nob3dSZXNldFpvb206ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7Yy56b29tT3V0KCl9dmFyIGM9dGhpcyxkPUQubGFuZyxmPWMub3B0aW9ucy5jaGFydC5yZXNldFpvb21CdXR0b24sZz1mLnRoZW1lLGs9Zy5zdGF0ZXMsbD0iY2hhcnQiPT09Zi5yZWxhdGl2ZVRvfHwKInNwYWNlQm94Ij09PWYucmVsYXRpdmVUbz9udWxsOiJwbG90Qm94IjtLKHRoaXMsImJlZm9yZVNob3dSZXNldFpvb20iLG51bGwsZnVuY3Rpb24oKXtjLnJlc2V0Wm9vbUJ1dHRvbj1jLnJlbmRlcmVyLmJ1dHRvbihkLnJlc2V0Wm9vbSxudWxsLG51bGwsYSxnLGsmJmsuaG92ZXIpLmF0dHIoe2FsaWduOmYucG9zaXRpb24uYWxpZ24sdGl0bGU6ZC5yZXNldFpvb21UaXRsZX0pLmFkZENsYXNzKCJoaWdoY2hhcnRzLXJlc2V0LXpvb20iKS5hZGQoKS5hbGlnbihmLnBvc2l0aW9uLCExLGwpfSk7Syh0aGlzLCJhZnRlclNob3dSZXNldFpvb20iKX0sem9vbU91dDpmdW5jdGlvbigpe0sodGhpcywic2VsZWN0aW9uIix7cmVzZXRTZWxlY3Rpb246ITB9LHRoaXMuem9vbSl9LHpvb206ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcyxmLGc9Yy5wb2ludGVyLGs9ITEsbD1jLmludmVydGVkP2cubW91c2VEb3duWDpnLm1vdXNlRG93blk7IWF8fGEucmVzZXRTZWxlY3Rpb24/KGMuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Y9CmEuem9vbSgpfSksZy5pbml0aWF0ZWQ9ITEpOmEueEF4aXMuY29uY2F0KGEueUF4aXMpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGQ9YS5heGlzLGU9Yy5pbnZlcnRlZD9kLmxlZnQ6ZC50b3AsYj1jLmludmVydGVkP2UrZC53aWR0aDplK2QuaGVpZ2h0LGg9ZC5pc1hBeGlzLG09ITE7aWYoIWgmJmw+PWUmJmw8PWJ8fGh8fCFMKGwpKW09ITA7Z1toPyJ6b29tWCI6Inpvb21ZIl0mJm0mJihmPWQuem9vbShhLm1pbixhLm1heCksZC5kaXNwbGF5QnRuJiYoaz0hMCkpfSk7dmFyIG09Yy5yZXNldFpvb21CdXR0b247ayYmIW0/Yy5zaG93UmVzZXRab29tKCk6IWsmJkkobSkmJihjLnJlc2V0Wm9vbUJ1dHRvbj1tLmRlc3Ryb3koKSk7ZiYmYy5yZWRyYXcoZChjLm9wdGlvbnMuY2hhcnQuYW5pbWF0aW9uLGEmJmEuYW5pbWF0aW9uLDEwMD5jLnBvaW50Q291bnQpKX0scGFuOmZ1bmN0aW9uKGEsZCl7dmFyIGY9dGhpcyxnPWYuaG92ZXJQb2ludHMsaz1mLm9wdGlvbnMuY2hhcnQsbD1mLm9wdGlvbnMubWFwTmF2aWdhdGlvbiYmCmYub3B0aW9ucy5tYXBOYXZpZ2F0aW9uLmVuYWJsZWQsbTtkPSJvYmplY3QiPT09dHlwZW9mIGQ/ZDp7ZW5hYmxlZDpkLHR5cGU6IngifTtrJiZrLnBhbm5pbmcmJihrLnBhbm5pbmc9ZCk7dmFyIG49ZC50eXBlO0sodGhpcywicGFuIix7b3JpZ2luYWxFdmVudDphfSxmdW5jdGlvbigpe2cmJmcuZm9yRWFjaChmdW5jdGlvbihhKXthLnNldFN0YXRlKCl9KTt2YXIgZD1bMV07Inh5Ij09PW4/ZD1bMSwwXToieSI9PT1uJiYoZD1bMF0pO2QuZm9yRWFjaChmdW5jdGlvbihkKXt2YXIgYj1mW2Q/InhBeGlzIjoieUF4aXMiXVswXSxlPWIuaG9yaXosZz1hW2U/ImNoYXJ0WCI6ImNoYXJ0WSJdO2U9ZT8ibW91c2VEb3duWCI6Im1vdXNlRG93blkiO3ZhciBrPWZbZV0scD0oYi5wb2ludFJhbmdlfHwwKS8yLHE9Yi5yZXZlcnNlZCYmIWYuaW52ZXJ0ZWR8fCFiLnJldmVyc2VkJiZmLmludmVydGVkPy0xOjEscj1iLmdldEV4dHJlbWVzKCksdT1iLnRvVmFsdWUoay1nLCEwKStwKnE7cT1iLnRvVmFsdWUoaysKYi5sZW4tZywhMCktcCpxO3ZhciB0PXE8dTtrPXQ/cTp1O3U9dD91OnE7dmFyIHc9Yi5oYXNWZXJ0aWNhbFBhbm5pbmcoKSx2PWIucGFubmluZ1N0YXRlO2Iuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7aWYodyYmIWQmJighdnx8di5pc0RpcnR5KSl7dmFyIGI9YS5nZXRQcm9jZXNzZWREYXRhKCEwKTthPWEuZ2V0RXh0cmVtZXMoYi55RGF0YSwhMCk7dnx8KHY9e3N0YXJ0TWluOk51bWJlci5NQVhfVkFMVUUsc3RhcnRNYXg6LU51bWJlci5NQVhfVkFMVUV9KTtDKGEuZGF0YU1pbikmJkMoYS5kYXRhTWF4KSYmKHYuc3RhcnRNaW49TWF0aC5taW4oYS5kYXRhTWluLHYuc3RhcnRNaW4pLHYuc3RhcnRNYXg9TWF0aC5tYXgoYS5kYXRhTWF4LHYuc3RhcnRNYXgpKX19KTtxPU1hdGgubWluKGMucGljayhudWxsPT09dnx8dm9pZCAwPT09dj92b2lkIDA6di5zdGFydE1pbixyLmRhdGFNaW4pLHA/ci5taW46Yi50b1ZhbHVlKGIudG9QaXhlbHMoci5taW4pLWIubWluUGl4ZWxQYWRkaW5nKSk7CnA9TWF0aC5tYXgoYy5waWNrKG51bGw9PT12fHx2b2lkIDA9PT12P3ZvaWQgMDp2LnN0YXJ0TWF4LHIuZGF0YU1heCkscD9yLm1heDpiLnRvVmFsdWUoYi50b1BpeGVscyhyLm1heCkrYi5taW5QaXhlbFBhZGRpbmcpKTtiLnBhbm5pbmdTdGF0ZT12O2IuaXNPcmRpbmFsfHwodD1xLWssMDx0JiYodSs9dCxrPXEpLHQ9dS1wLDA8dCYmKHU9cCxrLT10KSxiLnNlcmllcy5sZW5ndGgmJmshPT1yLm1pbiYmdSE9PXIubWF4JiZrPj1xJiZ1PD1wJiYoYi5zZXRFeHRyZW1lcyhrLHUsITEsITEse3RyaWdnZXI6InBhbiJ9KSxmLnJlc2V0Wm9vbUJ1dHRvbnx8bHx8az09PXF8fHU9PT1wfHwhbi5tYXRjaCgieSIpfHwoZi5zaG93UmVzZXRab29tKCksYi5kaXNwbGF5QnRuPSExKSxtPSEwKSxmW2VdPWcpfSk7bSYmZi5yZWRyYXcoITEpO0coZi5jb250YWluZXIse2N1cnNvcjoibW92ZSJ9KX0pfX0pO3YoQi5wcm90b3R5cGUse3NlbGVjdDpmdW5jdGlvbihhLGMpe3ZhciBmPXRoaXMsZz1mLnNlcmllcywKaz1nLmNoYXJ0O3RoaXMuc2VsZWN0ZWRTdGFnaW5nPWE9ZChhLCFmLnNlbGVjdGVkKTtmLmZpcmVQb2ludEV2ZW50KGE/InNlbGVjdCI6InVuc2VsZWN0Iix7YWNjdW11bGF0ZTpjfSxmdW5jdGlvbigpe2Yuc2VsZWN0ZWQ9Zi5vcHRpb25zLnNlbGVjdGVkPWE7Zy5vcHRpb25zLmRhdGFbZy5kYXRhLmluZGV4T2YoZildPWYub3B0aW9ucztmLnNldFN0YXRlKGEmJiJzZWxlY3QiKTtjfHxrLmdldFNlbGVjdGVkUG9pbnRzKCkuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1hLnNlcmllczthLnNlbGVjdGVkJiZhIT09ZiYmKGEuc2VsZWN0ZWQ9YS5vcHRpb25zLnNlbGVjdGVkPSExLGMub3B0aW9ucy5kYXRhW2MuZGF0YS5pbmRleE9mKGEpXT1hLm9wdGlvbnMsYS5zZXRTdGF0ZShrLmhvdmVyUG9pbnRzJiZjLm9wdGlvbnMuaW5hY3RpdmVPdGhlclBvaW50cz8iaW5hY3RpdmUiOiIiKSxhLmZpcmVQb2ludEV2ZW50KCJ1bnNlbGVjdCIpKX0pfSk7ZGVsZXRlIHRoaXMuc2VsZWN0ZWRTdGFnaW5nfSwKb25Nb3VzZU92ZXI6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5zZXJpZXMuY2hhcnQsZD1jLnBvaW50ZXI7YT1hP2Qubm9ybWFsaXplKGEpOmQuZ2V0Q2hhcnRDb29yZGluYXRlc0Zyb21Qb2ludCh0aGlzLGMuaW52ZXJ0ZWQpO2QucnVuUG9pbnRBY3Rpb25zKGEsdGhpcyl9LG9uTW91c2VPdXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlcmllcy5jaGFydDt0aGlzLmZpcmVQb2ludEV2ZW50KCJtb3VzZU91dCIpO3RoaXMuc2VyaWVzLm9wdGlvbnMuaW5hY3RpdmVPdGhlclBvaW50c3x8KGEuaG92ZXJQb2ludHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Euc2V0U3RhdGUoKX0pO2EuaG92ZXJQb2ludHM9YS5ob3ZlclBvaW50PW51bGx9LGltcG9ydEV2ZW50czpmdW5jdGlvbigpe2lmKCF0aGlzLmhhc0ltcG9ydGVkRXZlbnRzKXt2YXIgYT10aGlzLGM9cChhLnNlcmllcy5vcHRpb25zLnBvaW50LGEub3B0aW9ucykuZXZlbnRzO2EuZXZlbnRzPWM7bShjLGZ1bmN0aW9uKGMsZCl7cihjKSYmCkooYSxkLGMpfSk7dGhpcy5oYXNJbXBvcnRlZEV2ZW50cz0hMH19LHNldFN0YXRlOmZ1bmN0aW9uKGEsYyl7dmFyIGY9dGhpcy5zZXJpZXMsZz10aGlzLnN0YXRlLGs9Zi5vcHRpb25zLnN0YXRlc1thfHwibm9ybWFsIl18fHt9LGw9RC5wbG90T3B0aW9uc1tmLnR5cGVdLm1hcmtlciYmZi5vcHRpb25zLm1hcmtlcixtPWwmJiExPT09bC5lbmFibGVkLG49bCYmbC5zdGF0ZXMmJmwuc3RhdGVzW2F8fCJub3JtYWwiXXx8e30scD0hMT09PW4uZW5hYmxlZCxlPWYuc3RhdGVNYXJrZXJHcmFwaGljLGI9dGhpcy5tYXJrZXJ8fHt9LGg9Zi5jaGFydCxxPWYuaGFsbyxyLHQ9bCYmZi5tYXJrZXJBdHRyaWJzO2E9YXx8IiI7aWYoIShhPT09dGhpcy5zdGF0ZSYmIWN8fHRoaXMuc2VsZWN0ZWQmJiJzZWxlY3QiIT09YXx8ITE9PT1rLmVuYWJsZWR8fGEmJihwfHxtJiYhMT09PW4uZW5hYmxlZCl8fGEmJmIuc3RhdGVzJiZiLnN0YXRlc1thXSYmITE9PT1iLnN0YXRlc1thXS5lbmFibGVkKSl7dGhpcy5zdGF0ZT0KYTt0JiYocj1mLm1hcmtlckF0dHJpYnModGhpcyxhKSk7aWYodGhpcy5ncmFwaGljKXtnJiZ0aGlzLmdyYXBoaWMucmVtb3ZlQ2xhc3MoImhpZ2hjaGFydHMtcG9pbnQtIitnKTthJiZ0aGlzLmdyYXBoaWMuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcG9pbnQtIithKTtpZighaC5zdHlsZWRNb2RlKXt2YXIgeT1mLnBvaW50QXR0cmlicyh0aGlzLGEpO3ZhciBBPWQoaC5vcHRpb25zLmNoYXJ0LmFuaW1hdGlvbixrLmFuaW1hdGlvbik7Zi5vcHRpb25zLmluYWN0aXZlT3RoZXJQb2ludHMmJnkub3BhY2l0eSYmKCh0aGlzLmRhdGFMYWJlbHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EmJmEuYW5pbWF0ZSh7b3BhY2l0eTp5Lm9wYWNpdHl9LEEpfSksdGhpcy5jb25uZWN0b3ImJnRoaXMuY29ubmVjdG9yLmFuaW1hdGUoe29wYWNpdHk6eS5vcGFjaXR5fSxBKSk7dGhpcy5ncmFwaGljLmFuaW1hdGUoeSxBKX1yJiZ0aGlzLmdyYXBoaWMuYW5pbWF0ZShyLGQoaC5vcHRpb25zLmNoYXJ0LmFuaW1hdGlvbiwKbi5hbmltYXRpb24sbC5hbmltYXRpb24pKTtlJiZlLmhpZGUoKX1lbHNle2lmKGEmJm4pe2c9Yi5zeW1ib2x8fGYuc3ltYm9sO2UmJmUuY3VycmVudFN5bWJvbCE9PWcmJihlPWUuZGVzdHJveSgpKTtpZihyKWlmKGUpZVtjPyJhbmltYXRlIjoiYXR0ciJdKHt4OnIueCx5OnIueX0pO2Vsc2UgZyYmKGYuc3RhdGVNYXJrZXJHcmFwaGljPWU9aC5yZW5kZXJlci5zeW1ib2woZyxyLngsci55LHIud2lkdGgsci5oZWlnaHQpLmFkZChmLm1hcmtlckdyb3VwKSxlLmN1cnJlbnRTeW1ib2w9Zyk7IWguc3R5bGVkTW9kZSYmZSYmZS5hdHRyKGYucG9pbnRBdHRyaWJzKHRoaXMsYSkpfWUmJihlW2EmJnRoaXMuaXNJbnNpZGU/InNob3ciOiJoaWRlIl0oKSxlLmVsZW1lbnQucG9pbnQ9dGhpcyl9YT1rLmhhbG87az0oZT10aGlzLmdyYXBoaWN8fGUpJiZlLnZpc2liaWxpdHl8fCJpbmhlcml0IjthJiZhLnNpemUmJmUmJiJoaWRkZW4iIT09ayYmIXRoaXMuaXNDbHVzdGVyPyhxfHwoZi5oYWxvPXE9CmgucmVuZGVyZXIucGF0aCgpLmFkZChlLnBhcmVudEdyb3VwKSkscS5zaG93KClbYz8iYW5pbWF0ZSI6ImF0dHIiXSh7ZDp0aGlzLmhhbG9QYXRoKGEuc2l6ZSl9KSxxLmF0dHIoeyJjbGFzcyI6ImhpZ2hjaGFydHMtaGFsbyBoaWdoY2hhcnRzLWNvbG9yLSIrZCh0aGlzLmNvbG9ySW5kZXgsZi5jb2xvckluZGV4KSsodGhpcy5jbGFzc05hbWU/IiAiK3RoaXMuY2xhc3NOYW1lOiIiKSx2aXNpYmlsaXR5OmssekluZGV4Oi0xfSkscS5wb2ludD10aGlzLGguc3R5bGVkTW9kZXx8cS5hdHRyKHYoe2ZpbGw6dGhpcy5jb2xvcnx8Zi5jb2xvciwiZmlsbC1vcGFjaXR5IjphLm9wYWNpdHl9LGEuYXR0cmlidXRlcykpKTpxJiZxLnBvaW50JiZxLnBvaW50LmhhbG9QYXRoJiZxLmFuaW1hdGUoe2Q6cS5wb2ludC5oYWxvUGF0aCgwKX0sbnVsbCxxLmhpZGUpO0sodGhpcywiYWZ0ZXJTZXRTdGF0ZSIpfX0saGFsb1BhdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc2VyaWVzLmNoYXJ0LnJlbmRlcmVyLnN5bWJvbHMuY2lyY2xlKE1hdGguZmxvb3IodGhpcy5wbG90WCktCmEsdGhpcy5wbG90WS1hLDIqYSwyKmEpfX0pO3YoeS5wcm90b3R5cGUse29uTW91c2VPdmVyOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxjPWEuaG92ZXJTZXJpZXM7YS5wb2ludGVyLnNldEhvdmVyQ2hhcnRJbmRleCgpO2lmKGMmJmMhPT10aGlzKWMub25Nb3VzZU91dCgpO3RoaXMub3B0aW9ucy5ldmVudHMubW91c2VPdmVyJiZLKHRoaXMsIm1vdXNlT3ZlciIpO3RoaXMuc2V0U3RhdGUoImhvdmVyIik7YS5ob3ZlclNlcmllcz10aGlzfSxvbk1vdXNlT3V0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLGM9dGhpcy5jaGFydCxkPWMudG9vbHRpcCxmPWMuaG92ZXJQb2ludDtjLmhvdmVyU2VyaWVzPW51bGw7aWYoZilmLm9uTW91c2VPdXQoKTt0aGlzJiZhLmV2ZW50cy5tb3VzZU91dCYmSyh0aGlzLCJtb3VzZU91dCIpOyFkfHx0aGlzLnN0aWNreVRyYWNraW5nfHxkLnNoYXJlZCYmIXRoaXMubm9TaGFyZWRUb29sdGlwfHxkLmhpZGUoKTtjLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Euc2V0U3RhdGUoIiIsCiEwKX0pfSxzZXRTdGF0ZTpmdW5jdGlvbihhLGMpe3ZhciBmPXRoaXMsZz1mLm9wdGlvbnMsaz1mLmdyYXBoLGw9Zy5pbmFjdGl2ZU90aGVyUG9pbnRzLG09Zy5zdGF0ZXMsbj1nLmxpbmVXaWR0aCxwPWcub3BhY2l0eSxlPWQobVthfHwibm9ybWFsIl0mJm1bYXx8Im5vcm1hbCJdLmFuaW1hdGlvbixmLmNoYXJ0Lm9wdGlvbnMuY2hhcnQuYW5pbWF0aW9uKTtnPTA7YT1hfHwiIjtpZihmLnN0YXRlIT09YSYmKFtmLmdyb3VwLGYubWFya2VyR3JvdXAsZi5kYXRhTGFiZWxzR3JvdXBdLmZvckVhY2goZnVuY3Rpb24oYil7YiYmKGYuc3RhdGUmJmIucmVtb3ZlQ2xhc3MoImhpZ2hjaGFydHMtc2VyaWVzLSIrZi5zdGF0ZSksYSYmYi5hZGRDbGFzcygiaGlnaGNoYXJ0cy1zZXJpZXMtIithKSl9KSxmLnN0YXRlPWEsIWYuY2hhcnQuc3R5bGVkTW9kZSkpe2lmKG1bYV0mJiExPT09bVthXS5lbmFibGVkKXJldHVybjthJiYobj1tW2FdLmxpbmVXaWR0aHx8bisobVthXS5saW5lV2lkdGhQbHVzfHwKMCkscD1kKG1bYV0ub3BhY2l0eSxwKSk7aWYoayYmIWsuZGFzaHN0eWxlKWZvcihtPXsic3Ryb2tlLXdpZHRoIjpufSxrLmFuaW1hdGUobSxlKTtmWyJ6b25lLWdyYXBoLSIrZ107KWZbInpvbmUtZ3JhcGgtIitnXS5hdHRyKG0pLGcrPTE7bHx8W2YuZ3JvdXAsZi5tYXJrZXJHcm91cCxmLmRhdGFMYWJlbHNHcm91cCxmLmxhYmVsQnlTZXJpZXNdLmZvckVhY2goZnVuY3Rpb24oYSl7YSYmYS5hbmltYXRlKHtvcGFjaXR5OnB9LGUpfSl9YyYmbCYmZi5wb2ludHMmJmYuc2V0QWxsUG9pbnRzVG9TdGF0ZShhKX0sc2V0QWxsUG9pbnRzVG9TdGF0ZTpmdW5jdGlvbihhKXt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2Muc2V0U3RhdGUmJmMuc2V0U3RhdGUoYSl9KX0sc2V0VmlzaWJsZTpmdW5jdGlvbihhLGMpe3ZhciBkPXRoaXMsZj1kLmNoYXJ0LGc9ZC5sZWdlbmRJdGVtLGs9Zi5vcHRpb25zLmNoYXJ0Lmlnbm9yZUhpZGRlblNlcmllcyxsPWQudmlzaWJsZTt2YXIgbT0oZC52aXNpYmxlPQphPWQub3B0aW9ucy52aXNpYmxlPWQudXNlck9wdGlvbnMudmlzaWJsZT0idW5kZWZpbmVkIj09PXR5cGVvZiBhPyFsOmEpPyJzaG93IjoiaGlkZSI7WyJncm91cCIsImRhdGFMYWJlbHNHcm91cCIsIm1hcmtlckdyb3VwIiwidHJhY2tlciIsInR0Il0uZm9yRWFjaChmdW5jdGlvbihhKXtpZihkW2FdKWRbYV1bbV0oKX0pO2lmKGYuaG92ZXJTZXJpZXM9PT1kfHwoZi5ob3ZlclBvaW50JiZmLmhvdmVyUG9pbnQuc2VyaWVzKT09PWQpZC5vbk1vdXNlT3V0KCk7ZyYmZi5sZWdlbmQuY29sb3JpemVJdGVtKGQsYSk7ZC5pc0RpcnR5PSEwO2Qub3B0aW9ucy5zdGFja2luZyYmZi5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLm9wdGlvbnMuc3RhY2tpbmcmJmEudmlzaWJsZSYmKGEuaXNEaXJ0eT0hMCl9KTtkLmxpbmtlZFNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2Muc2V0VmlzaWJsZShhLCExKX0pO2smJihmLmlzRGlydHlCb3g9ITApO0soZCxtKTshMSE9PWMmJmYucmVkcmF3KCl9LApzaG93OmZ1bmN0aW9uKCl7dGhpcy5zZXRWaXNpYmxlKCEwKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuc2V0VmlzaWJsZSghMSl9LHNlbGVjdDpmdW5jdGlvbihhKXt0aGlzLnNlbGVjdGVkPWE9dGhpcy5vcHRpb25zLnNlbGVjdGVkPSJ1bmRlZmluZWQiPT09dHlwZW9mIGE/IXRoaXMuc2VsZWN0ZWQ6YTt0aGlzLmNoZWNrYm94JiYodGhpcy5jaGVja2JveC5jaGVja2VkPWEpO0sodGhpcyxhPyJzZWxlY3QiOiJ1bnNlbGVjdCIpfSxkcmF3VHJhY2tlcjpmLmRyYXdUcmFja2VyR3JhcGh9KX0pO08ocSwicGFydHMvUmVzcG9uc2l2ZS5qcyIsW3FbInBhcnRzL0NoYXJ0LmpzIl0scVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGcsYyl7dmFyIHE9Yy5maW5kLHk9Yy5pc0FycmF5LEI9Yy5pc09iamVjdCxIPWMubWVyZ2UsRD1jLm9iamVjdEVhY2gsSj1jLnBpY2ssdD1jLnNwbGF0LEc9Yy51bmlxdWVLZXk7Zy5wcm90b3R5cGUuc2V0UmVzcG9uc2l2ZT1mdW5jdGlvbihjLGcpe3ZhciB0PQp0aGlzLm9wdGlvbnMucmVzcG9uc2l2ZSxuPVtdLHI9dGhpcy5jdXJyZW50UmVzcG9uc2l2ZTshZyYmdCYmdC5ydWxlcyYmdC5ydWxlcy5mb3JFYWNoKGZ1bmN0aW9uKGMpeyJ1bmRlZmluZWQiPT09dHlwZW9mIGMuX2lkJiYoYy5faWQ9RygpKTt0aGlzLm1hdGNoUmVzcG9uc2l2ZVJ1bGUoYyxuKX0sdGhpcyk7Zz1ILmFwcGx5KDAsbi5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIHEodC5ydWxlcyxmdW5jdGlvbihnKXtyZXR1cm4gZy5faWQ9PT1jfSkuY2hhcnRPcHRpb25zfSkpO2cuaXNSZXNwb25zaXZlT3B0aW9ucz0hMDtuPW4udG9TdHJpbmcoKXx8dm9pZCAwO24hPT0ociYmci5ydWxlSWRzKSYmKHImJnRoaXMudXBkYXRlKHIudW5kb09wdGlvbnMsYywhMCksbj8ocj10aGlzLmN1cnJlbnRPcHRpb25zKGcpLHIuaXNSZXNwb25zaXZlT3B0aW9ucz0hMCx0aGlzLmN1cnJlbnRSZXNwb25zaXZlPXtydWxlSWRzOm4sbWVyZ2VkT3B0aW9uczpnLHVuZG9PcHRpb25zOnJ9LHRoaXMudXBkYXRlKGcsCmMsITApKTp0aGlzLmN1cnJlbnRSZXNwb25zaXZlPXZvaWQgMCl9O2cucHJvdG90eXBlLm1hdGNoUmVzcG9uc2l2ZVJ1bGU9ZnVuY3Rpb24oYyxnKXt2YXIgcT1jLmNvbmRpdGlvbjsocS5jYWxsYmFja3x8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGFydFdpZHRoPD1KKHEubWF4V2lkdGgsTnVtYmVyLk1BWF9WQUxVRSkmJnRoaXMuY2hhcnRIZWlnaHQ8PUoocS5tYXhIZWlnaHQsTnVtYmVyLk1BWF9WQUxVRSkmJnRoaXMuY2hhcnRXaWR0aD49SihxLm1pbldpZHRoLDApJiZ0aGlzLmNoYXJ0SGVpZ2h0Pj1KKHEubWluSGVpZ2h0LDApfSkuY2FsbCh0aGlzKSYmZy5wdXNoKGMuX2lkKX07Zy5wcm90b3R5cGUuY3VycmVudE9wdGlvbnM9ZnVuY3Rpb24oYyl7ZnVuY3Rpb24gZyhjLG4sdixwKXt2YXIgbTtEKGMsZnVuY3Rpb24oYyxsKXtpZighcCYmLTE8cS5jb2xsZWN0aW9uc1dpdGhVcGRhdGUuaW5kZXhPZihsKSlmb3IoYz10KGMpLHZbbF09W10sbT0wO208TWF0aC5tYXgoYy5sZW5ndGgsCm5bbF0ubGVuZ3RoKTttKyspbltsXVttXSYmKHZvaWQgMD09PWNbbV0/dltsXVttXT1uW2xdW21dOih2W2xdW21dPXt9LGcoY1ttXSxuW2xdW21dLHZbbF1bbV0scCsxKSkpO2Vsc2UgQihjKT8odltsXT15KGMpP1tdOnt9LGcoYyxuW2xdfHx7fSx2W2xdLHArMSkpOnZbbF09InVuZGVmaW5lZCI9PT10eXBlb2YgbltsXT9udWxsOm5bbF19KX12YXIgcT10aGlzLG49e307ZyhjLHRoaXMub3B0aW9ucyxuLDApO3JldHVybiBufX0pO08ocSwibWFzdGVycy9oaWdoY2hhcnRzLnNyYy5qcyIsW3FbInBhcnRzL0dsb2JhbHMuanMiXV0sZnVuY3Rpb24oZyl7cmV0dXJuIGd9KTtxWyJtYXN0ZXJzL2hpZ2hjaGFydHMuc3JjLmpzIl0uX21vZHVsZXM9cTtyZXR1cm4gcVsibWFzdGVycy9oaWdoY2hhcnRzLnNyYy5qcyJdfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWhpZ2hjaGFydHMuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIDNEIGZlYXR1cmVzIGZvciBIaWdoY2hhcnRzIEpTCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGIpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGJbImRlZmF1bHQiXT1iLG1vZHVsZS5leHBvcnRzPWIpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9oaWdoY2hhcnRzLTNkIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihGKXtiKEYpO2IuSGlnaGNoYXJ0cz1GO3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIEYoYix0LGwsZCl7Yi5oYXNPd25Qcm9wZXJ0eSh0KXx8KGJbdF09ZC5hcHBseShudWxsLGwpKX1iPWI/Yi5fbW9kdWxlczp7fTtGKGIsInBhcnRzLTNkL01hdGguanMiLFtiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGIsdCl7dmFyIGw9dC5waWNrLGQ9Yi5kZWcycmFkO2IucGVyc3BlY3RpdmUzRD1mdW5jdGlvbihkLApuLHEpe249MDxxJiZxPE51bWJlci5QT1NJVElWRV9JTkZJTklUWT9xLyhkLnorbi56K3EpOjE7cmV0dXJue3g6ZC54Km4seTpkLnkqbn19O2IucGVyc3BlY3RpdmU9ZnVuY3Rpb24odyxuLHEsRCl7dmFyIG09bi5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZCx1PWwoRCxxP24uaW52ZXJ0ZWQ6ITEpLGc9e3g6bi5wbG90V2lkdGgvMix5Om4ucGxvdEhlaWdodC8yLHo6bS5kZXB0aC8yLHZkOmwobS5kZXB0aCwxKSpsKG0udmlld0Rpc3RhbmNlLDApfSxwPW4uc2NhbGUzZHx8MTtEPWQqbS5iZXRhKih1Py0xOjEpO209ZCptLmFscGhhKih1Py0xOjEpO3ZhciB0PU1hdGguY29zKG0pLHk9TWF0aC5jb3MoLUQpLGE9TWF0aC5zaW4obSksaz1NYXRoLnNpbigtRCk7cXx8KGcueCs9bi5wbG90TGVmdCxnLnkrPW4ucGxvdFRvcCk7cmV0dXJuIHcubWFwKGZ1bmN0aW9uKHgpe3ZhciBjPSh1P3gueTp4LngpLWcueDt2YXIgaD0odT94Lng6eC55KS1nLnk7eD0oeC56fHwwKS1nLno7Yz17eDp5KmMtayoKeCx5Oi1hKmsqYyt0KmgteSphKngsejp0KmsqYythKmgrdCp5Knh9O2g9Yi5wZXJzcGVjdGl2ZTNEKGMsZyxnLnZkKTtoLng9aC54KnArZy54O2gueT1oLnkqcCtnLnk7aC56PWMueipwK2cuejtyZXR1cm57eDp1P2gueTpoLngseTp1P2gueDpoLnksejpoLnp9fSl9O2IucG9pbnRDYW1lcmFEaXN0YW5jZT1mdW5jdGlvbihkLG4pe3ZhciBxPW4ub3B0aW9ucy5jaGFydC5vcHRpb25zM2QsYj1uLnBsb3RXaWR0aC8yO249bi5wbG90SGVpZ2h0LzI7cT1sKHEuZGVwdGgsMSkqbChxLnZpZXdEaXN0YW5jZSwwKStxLmRlcHRoO3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coYi1sKGQucGxvdFgsZC54KSwyKStNYXRoLnBvdyhuLWwoZC5wbG90WSxkLnkpLDIpK01hdGgucG93KHEtbChkLnBsb3RaLGQueiksMikpfTtiLnNoYXBlQXJlYT1mdW5jdGlvbihkKXt2YXIgbj0wLHE7Zm9yKHE9MDtxPGQubGVuZ3RoO3ErKyl7dmFyIGI9KHErMSklZC5sZW5ndGg7bis9ZFtxXS54KmRbYl0ueS1kW2JdLngqCmRbcV0ueX1yZXR1cm4gbi8yfTtiLnNoYXBlQXJlYTNkPWZ1bmN0aW9uKGQsbixxKXtyZXR1cm4gYi5zaGFwZUFyZWEoYi5wZXJzcGVjdGl2ZShkLG4scSkpfX0pO0YoYiwicGFydHMtM2QvU1ZHUmVuZGVyZXIuanMiLFtiWyJwYXJ0cy9Db2xvci5qcyJdLGJbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9TVkdFbGVtZW50LmpzIl0sYlsicGFydHMvU1ZHUmVuZGVyZXIuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYix0LGwsZCx3KXtmdW5jdGlvbiBuKGEsayxlLEssYyxJLGgscil7dmFyIGY9W10sdj1JLWM7cmV0dXJuIEk+YyYmSS1jPk1hdGguUEkvMisuMDAwMT8oZj1mLmNvbmNhdChuKGEsayxlLEssYyxjK01hdGguUEkvMixoLHIpKSxmPWYuY29uY2F0KG4oYSxrLGUsSyxjK01hdGguUEkvMixJLGgscikpKTpJPGMmJmMtST5NYXRoLlBJLzIrLjAwMDE/KGY9Zi5jb25jYXQobihhLGssZSxLLGMsYy1NYXRoLlBJLzIsaCxyKSksZj1mLmNvbmNhdChuKGEsCmssZSxLLGMtTWF0aC5QSS8yLEksaCxyKSkpOltbIkMiLGErZSpNYXRoLmNvcyhjKS1lKkoqdipNYXRoLnNpbihjKStoLGsrSypNYXRoLnNpbihjKStLKkoqdipNYXRoLmNvcyhjKStyLGErZSpNYXRoLmNvcyhJKStlKkoqdipNYXRoLnNpbihJKStoLGsrSypNYXRoLnNpbihJKS1LKkoqdipNYXRoLmNvcyhJKStyLGErZSpNYXRoLmNvcyhJKStoLGsrSypNYXRoLnNpbihJKStyXV19dmFyIHE9Yi5wYXJzZSxEPXcuYW5pbU9iamVjdCxtPXcuZGVmaW5lZCx1PXcuZXh0ZW5kLGc9dy5tZXJnZSxwPXcub2JqZWN0RWFjaCxFPXcucGljayx5PU1hdGguY29zLGE9TWF0aC5QSSxrPU1hdGguc2luLHg9dC5jaGFydHMsYz10LmRlZzJyYWQsaD10LnBlcnNwZWN0aXZlO3ZhciBKPTQqKE1hdGguc3FydCgyKS0xKS8zLyhhLzIpO2QucHJvdG90eXBlLnRvTGluZVBhdGg9ZnVuY3Rpb24oYSxjKXt2YXIgZT1bXTthLmZvckVhY2goZnVuY3Rpb24oYSl7ZS5wdXNoKFsiTCIsYS54LGEueV0pfSk7YS5sZW5ndGgmJgooZVswXVswXT0iTSIsYyYmZS5wdXNoKFsiWiJdKSk7cmV0dXJuIGV9O2QucHJvdG90eXBlLnRvTGluZVNlZ21lbnRzPWZ1bmN0aW9uKGEpe3ZhciBmPVtdLGU9ITA7YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2YucHVzaChlP1siTSIsYS54LGEueV06WyJMIixhLngsYS55XSk7ZT0hZX0pO3JldHVybiBmfTtkLnByb3RvdHlwZS5mYWNlM2Q9ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcyxlPXRoaXMuY3JlYXRlRWxlbWVudCgicGF0aCIpO2UudmVydGV4ZXM9W107ZS5pbnNpZGVQbG90QXJlYT0hMTtlLmVuYWJsZWQ9ITA7ZS5hdHRyPWZ1bmN0aW9uKGEpe2lmKCJvYmplY3QiPT09dHlwZW9mIGEmJihtKGEuZW5hYmxlZCl8fG0oYS52ZXJ0ZXhlcyl8fG0oYS5pbnNpZGVQbG90QXJlYSkpKXt0aGlzLmVuYWJsZWQ9RShhLmVuYWJsZWQsdGhpcy5lbmFibGVkKTt0aGlzLnZlcnRleGVzPUUoYS52ZXJ0ZXhlcyx0aGlzLnZlcnRleGVzKTt0aGlzLmluc2lkZVBsb3RBcmVhPUUoYS5pbnNpZGVQbG90QXJlYSwKdGhpcy5pbnNpZGVQbG90QXJlYSk7ZGVsZXRlIGEuZW5hYmxlZDtkZWxldGUgYS52ZXJ0ZXhlcztkZWxldGUgYS5pbnNpZGVQbG90QXJlYTt2YXIgZT1oKHRoaXMudmVydGV4ZXMseFtmLmNoYXJ0SW5kZXhdLHRoaXMuaW5zaWRlUGxvdEFyZWEpLGM9Zi50b0xpbmVQYXRoKGUsITApO2U9dC5zaGFwZUFyZWEoZSk7ZT10aGlzLmVuYWJsZWQmJjA8ZT8idmlzaWJsZSI6ImhpZGRlbiI7YS5kPWM7YS52aXNpYmlsaXR5PWV9cmV0dXJuIGwucHJvdG90eXBlLmF0dHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtlLmFuaW1hdGU9ZnVuY3Rpb24oYSl7aWYoIm9iamVjdCI9PT10eXBlb2YgYSYmKG0oYS5lbmFibGVkKXx8bShhLnZlcnRleGVzKXx8bShhLmluc2lkZVBsb3RBcmVhKSkpe3RoaXMuZW5hYmxlZD1FKGEuZW5hYmxlZCx0aGlzLmVuYWJsZWQpO3RoaXMudmVydGV4ZXM9RShhLnZlcnRleGVzLHRoaXMudmVydGV4ZXMpO3RoaXMuaW5zaWRlUGxvdEFyZWE9RShhLmluc2lkZVBsb3RBcmVhLAp0aGlzLmluc2lkZVBsb3RBcmVhKTtkZWxldGUgYS5lbmFibGVkO2RlbGV0ZSBhLnZlcnRleGVzO2RlbGV0ZSBhLmluc2lkZVBsb3RBcmVhO3ZhciBlPWgodGhpcy52ZXJ0ZXhlcyx4W2YuY2hhcnRJbmRleF0sdGhpcy5pbnNpZGVQbG90QXJlYSksYz1mLnRvTGluZVBhdGgoZSwhMCk7ZT10LnNoYXBlQXJlYShlKTtlPXRoaXMuZW5hYmxlZCYmMDxlPyJ2aXNpYmxlIjoiaGlkZGVuIjthLmQ9Yzt0aGlzLmF0dHIoInZpc2liaWxpdHkiLGUpfXJldHVybiBsLnByb3RvdHlwZS5hbmltYXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07cmV0dXJuIGUuYXR0cihhKX07ZC5wcm90b3R5cGUucG9seWhlZHJvbj1mdW5jdGlvbihhKXt2YXIgZj10aGlzLGU9dGhpcy5nKCksYz1lLmRlc3Ryb3k7dGhpcy5zdHlsZWRNb2RlfHxlLmF0dHIoeyJzdHJva2UtbGluZWpvaW4iOiJyb3VuZCJ9KTtlLmZhY2VzPVtdO2UuZGVzdHJveT1mdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8ZS5mYWNlcy5sZW5ndGg7YSsrKWUuZmFjZXNbYV0uZGVzdHJveSgpOwpyZXR1cm4gYy5jYWxsKHRoaXMpfTtlLmF0dHI9ZnVuY3Rpb24oYSxjLGsscil7aWYoIm9iamVjdCI9PT10eXBlb2YgYSYmbShhLmZhY2VzKSl7Zm9yKDtlLmZhY2VzLmxlbmd0aD5hLmZhY2VzLmxlbmd0aDspZS5mYWNlcy5wb3AoKS5kZXN0cm95KCk7Zm9yKDtlLmZhY2VzLmxlbmd0aDxhLmZhY2VzLmxlbmd0aDspZS5mYWNlcy5wdXNoKGYuZmFjZTNkKCkuYWRkKGUpKTtmb3IodmFyIGg9MDtoPGEuZmFjZXMubGVuZ3RoO2grKylmLnN0eWxlZE1vZGUmJmRlbGV0ZSBhLmZhY2VzW2hdLmZpbGwsZS5mYWNlc1toXS5hdHRyKGEuZmFjZXNbaF0sbnVsbCxrLHIpO2RlbGV0ZSBhLmZhY2VzfXJldHVybiBsLnByb3RvdHlwZS5hdHRyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07ZS5hbmltYXRlPWZ1bmN0aW9uKGEsYyxrKXtpZihhJiZhLmZhY2VzKXtmb3IoO2UuZmFjZXMubGVuZ3RoPmEuZmFjZXMubGVuZ3RoOyllLmZhY2VzLnBvcCgpLmRlc3Ryb3koKTtmb3IoO2UuZmFjZXMubGVuZ3RoPGEuZmFjZXMubGVuZ3RoOyllLmZhY2VzLnB1c2goZi5mYWNlM2QoKS5hZGQoZSkpOwpmb3IodmFyIHI9MDtyPGEuZmFjZXMubGVuZ3RoO3IrKyllLmZhY2VzW3JdLmFuaW1hdGUoYS5mYWNlc1tyXSxjLGspO2RlbGV0ZSBhLmZhY2VzfXJldHVybiBsLnByb3RvdHlwZS5hbmltYXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07cmV0dXJuIGUuYXR0cihhKX07Yj17aW5pdEFyZ3M6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcyxlPWYucmVuZGVyZXIsYz1lW2YucGF0aFR5cGUrIlBhdGgiXShhKSxrPWMuekluZGV4ZXM7Zi5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2ZbYV09ZS5wYXRoKGNbYV0pLmF0dHIoeyJjbGFzcyI6ImhpZ2hjaGFydHMtM2QtIithLHpJbmRleDprW2FdfHwwfSkuYWRkKGYpfSk7Zi5hdHRyKHsic3Ryb2tlLWxpbmVqb2luIjoicm91bmQiLHpJbmRleDprLmdyb3VwfSk7Zi5vcmlnaW5hbERlc3Ryb3k9Zi5kZXN0cm95O2YuZGVzdHJveT1mLmRlc3Ryb3lQYXJ0cztmLmZvcmNlZFNpZGVzPWMuZm9yY2VkU2lkZXN9LHNpbmdsZVNldHRlckZvclBhcnRzOmZ1bmN0aW9uKGEsCmMsZSxrLGgsZCl7dmFyIGY9e307az1bbnVsbCxudWxsLGt8fCJhdHRyIixoLGRdO3ZhciByPWUmJmUuekluZGV4ZXM7ZT8ociYmci5ncm91cCYmdGhpcy5hdHRyKHt6SW5kZXg6ci5ncm91cH0pLHAoZSxmdW5jdGlvbihjLHYpe2Zbdl09e307Zlt2XVthXT1jO3ImJihmW3ZdLnpJbmRleD1lLnpJbmRleGVzW3ZdfHwwKX0pLGtbMV09Zik6KGZbYV09YyxrWzBdPWYpO3JldHVybiB0aGlzLnByb2Nlc3NQYXJ0cy5hcHBseSh0aGlzLGspfSxwcm9jZXNzUGFydHM6ZnVuY3Rpb24oYSxjLGUsayxoKXt2YXIgZj10aGlzO2YucGFydHMuZm9yRWFjaChmdW5jdGlvbihkKXtjJiYoYT1FKGNbZF0sITEpKTtpZighMSE9PWEpZltkXVtlXShhLGssaCl9KTtyZXR1cm4gZn0sZGVzdHJveVBhcnRzOmZ1bmN0aW9uKCl7dGhpcy5wcm9jZXNzUGFydHMobnVsbCxudWxsLCJkZXN0cm95Iik7cmV0dXJuIHRoaXMub3JpZ2luYWxEZXN0cm95KCl9fTt2YXIgTT1nKGIse3BhcnRzOlsiZnJvbnQiLCJ0b3AiLAoic2lkZSJdLHBhdGhUeXBlOiJjdWJvaWQiLGF0dHI6ZnVuY3Rpb24oYSxjLGUsayl7aWYoInN0cmluZyI9PT10eXBlb2YgYSYmInVuZGVmaW5lZCIhPT10eXBlb2YgYyl7dmFyIGY9YTthPXt9O2FbZl09Y31yZXR1cm4gYS5zaGFwZUFyZ3N8fG0oYS54KT90aGlzLnNpbmdsZVNldHRlckZvclBhcnRzKCJkIixudWxsLHRoaXMucmVuZGVyZXJbdGhpcy5wYXRoVHlwZSsiUGF0aCJdKGEuc2hhcGVBcmdzfHxhKSk6bC5wcm90b3R5cGUuYXR0ci5jYWxsKHRoaXMsYSx2b2lkIDAsZSxrKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGMsZSl7aWYobShhLngpJiZtKGEueSkpe2E9dGhpcy5yZW5kZXJlclt0aGlzLnBhdGhUeXBlKyJQYXRoIl0oYSk7dmFyIGY9YS5mb3JjZWRTaWRlczt0aGlzLnNpbmdsZVNldHRlckZvclBhcnRzKCJkIixudWxsLGEsImFuaW1hdGUiLGMsZSk7dGhpcy5hdHRyKHt6SW5kZXg6YS56SW5kZXhlcy5ncm91cH0pO2YhPT10aGlzLmZvcmNlZFNpZGVzJiYodGhpcy5mb3JjZWRTaWRlcz0KZixNLmZpbGxTZXR0ZXIuY2FsbCh0aGlzLHRoaXMuZmlsbCkpfWVsc2UgbC5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsYSxjLGUpO3JldHVybiB0aGlzfSxmaWxsU2V0dGVyOmZ1bmN0aW9uKGEpe3RoaXMuZm9yY2VkU2lkZXM9dGhpcy5mb3JjZWRTaWRlc3x8W107dGhpcy5zaW5nbGVTZXR0ZXJGb3JQYXJ0cygiZmlsbCIsbnVsbCx7ZnJvbnQ6YSx0b3A6cShhKS5icmlnaHRlbigwPD10aGlzLmZvcmNlZFNpZGVzLmluZGV4T2YoInRvcCIpPzA6LjEpLmdldCgpLHNpZGU6cShhKS5icmlnaHRlbigwPD10aGlzLmZvcmNlZFNpZGVzLmluZGV4T2YoInNpZGUiKT8wOi0uMSkuZ2V0KCl9KTt0aGlzLmNvbG9yPXRoaXMuZmlsbD1hO3JldHVybiB0aGlzfX0pO2QucHJvdG90eXBlLmVsZW1lbnRzM2Q9e2Jhc2U6YixjdWJvaWQ6TX07ZC5wcm90b3R5cGUuZWxlbWVudDNkPWZ1bmN0aW9uKGEsYyl7dmFyIGU9dGhpcy5nKCk7dShlLHRoaXMuZWxlbWVudHMzZFthXSk7ZS5pbml0QXJncyhjKTsKcmV0dXJuIGV9O2QucHJvdG90eXBlLmN1Ym9pZD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lbGVtZW50M2QoImN1Ym9pZCIsYSl9O2QucHJvdG90eXBlLmN1Ym9pZFBhdGg9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gMD09PXkmJjE8YSYmNj5hP3t4OkJbYV0ueCx5OkJbYV0ueSsxMCx6OkJbYV0uen06QlswXS54PT09Qls3XS54JiY0PD1hP3t4OkJbYV0ueCsxMCx5OkJbYV0ueSx6OkJbYV0uen06MD09PUcmJjI+YXx8NTxhP3t4OkJbYV0ueCx5OkJbYV0ueSx6OkJbYV0ueisxMH06QlthXX1mdW5jdGlvbiBlKGEpe3JldHVybiBCW2FdfXZhciBmPWEueCxrPWEueSxkPWEuenx8MCx5PWEuaGVpZ2h0LHI9YS53aWR0aCxHPWEuZGVwdGgsdj14W3RoaXMuY2hhcnRJbmRleF0sej12Lm9wdGlvbnMuY2hhcnQub3B0aW9uczNkLmFscGhhLEg9MCxCPVt7eDpmLHk6ayx6OmR9LHt4OmYrcix5OmssejpkfSx7eDpmK3IseTprK3ksejpkfSx7eDpmLHk6ayt5LHo6ZH0se3g6Zix5OmsrCnksejpkK0d9LHt4OmYrcix5OmsreSx6OmQrR30se3g6ZityLHk6ayx6OmQrR30se3g6Zix5OmssejpkK0d9XSxOPVtdO0I9aChCLHYsYS5pbnNpZGVQbG90QXJlYSk7dmFyIEE9ZnVuY3Rpb24oYSx2LGYpe3ZhciBrPVtbXSwtMV0scj1hLm1hcChlKSx6PXYubWFwKGUpO2E9YS5tYXAoYyk7dj12Lm1hcChjKTswPnQuc2hhcGVBcmVhKHIpP2s9W3IsMF06MD50LnNoYXBlQXJlYSh6KT9rPVt6LDFdOmYmJihOLnB1c2goZiksaz0wPnQuc2hhcGVBcmVhKGEpP1tyLDBdOjA+dC5zaGFwZUFyZWEodik/W3osMV06W3IsMF0pO3JldHVybiBrfTt2YXIgQz1BKFszLDIsMSwwXSxbNyw2LDUsNF0sImZyb250Iik7YT1DWzBdO3ZhciBiPUNbMV07Qz1BKFsxLDYsNywwXSxbNCw1LDIsM10sInRvcCIpO3I9Q1swXTt2YXIgbj1DWzFdO0M9QShbMSwyLDUsNl0sWzAsNyw0LDNdLCJzaWRlIik7QT1DWzBdO0M9Q1sxXTsxPT09Qz9IKz0xRTYqKHYucGxvdFdpZHRoLWYpOkN8fChIKz0xRTYqZik7SCs9MTAqCighbnx8MDw9eiYmMTgwPj16fHwzNjA+eiYmMzU3LjU8ej92LnBsb3RIZWlnaHQtazoxMCtrKTsxPT09Yj9IKz0xMDAqZDpifHwoSCs9MTAwKigxRTMtZCkpO3JldHVybntmcm9udDp0aGlzLnRvTGluZVBhdGgoYSwhMCksdG9wOnRoaXMudG9MaW5lUGF0aChyLCEwKSxzaWRlOnRoaXMudG9MaW5lUGF0aChBLCEwKSx6SW5kZXhlczp7Z3JvdXA6TWF0aC5yb3VuZChIKX0sZm9yY2VkU2lkZXM6Tixpc0Zyb250OmIsaXNUb3A6bn19O2QucHJvdG90eXBlLmFyYzNkPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGsoYSl7dmFyIGU9ITEsaz17fSxjO2E9ZyhhKTtmb3IoYyBpbiBhKS0xIT09aC5pbmRleE9mKGMpJiYoa1tjXT1hW2NdLGRlbGV0ZSBhW2NdLGU9ITApO3JldHVybiBlP1trLGFdOiExfXZhciBlPXRoaXMuZygpLGY9ZS5yZW5kZXJlcixoPSJ4IHkgciBpbm5lclIgc3RhcnQgZW5kIGRlcHRoIi5zcGxpdCgiICIpO2E9ZyhhKTthLmFscGhhPShhLmFscGhhfHwwKSpjO2EuYmV0YT0oYS5iZXRhfHwKMCkqYztlLnRvcD1mLnBhdGgoKTtlLnNpZGUxPWYucGF0aCgpO2Uuc2lkZTI9Zi5wYXRoKCk7ZS5pbm49Zi5wYXRoKCk7ZS5vdXQ9Zi5wYXRoKCk7ZS5vbkFkZD1mdW5jdGlvbigpe3ZhciBhPWUucGFyZW50R3JvdXAsYz1lLmF0dHIoImNsYXNzIik7ZS50b3AuYWRkKGUpO1sib3V0IiwiaW5uIiwic2lkZTEiLCJzaWRlMiJdLmZvckVhY2goZnVuY3Rpb24oayl7ZVtrXS5hdHRyKHsiY2xhc3MiOmMrIiBoaWdoY2hhcnRzLTNkLXNpZGUifSkuYWRkKGEpfSl9O1siYWRkQ2xhc3MiLCJyZW1vdmVDbGFzcyJdLmZvckVhY2goZnVuY3Rpb24oYSl7ZVthXT1mdW5jdGlvbigpe3ZhciBjPWFyZ3VtZW50cztbInRvcCIsIm91dCIsImlubiIsInNpZGUxIiwic2lkZTIiXS5mb3JFYWNoKGZ1bmN0aW9uKGspe2Vba11bYV0uYXBwbHkoZVtrXSxjKX0pfX0pO2Uuc2V0UGF0aHM9ZnVuY3Rpb24oYSl7dmFyIGs9ZS5yZW5kZXJlci5hcmMzZFBhdGgoYSksYz0xMDAqay56VG9wO2UuYXR0cmlicz1hO2UudG9wLmF0dHIoe2Q6ay50b3AsCnpJbmRleDprLnpUb3B9KTtlLmlubi5hdHRyKHtkOmsuaW5uLHpJbmRleDprLnpJbm59KTtlLm91dC5hdHRyKHtkOmsub3V0LHpJbmRleDprLnpPdXR9KTtlLnNpZGUxLmF0dHIoe2Q6ay5zaWRlMSx6SW5kZXg6ay56U2lkZTF9KTtlLnNpZGUyLmF0dHIoe2Q6ay5zaWRlMix6SW5kZXg6ay56U2lkZTJ9KTtlLnpJbmRleD1jO2UuYXR0cih7ekluZGV4OmN9KTthLmNlbnRlciYmKGUudG9wLnNldFJhZGlhbFJlZmVyZW5jZShhLmNlbnRlciksZGVsZXRlIGEuY2VudGVyKX07ZS5zZXRQYXRocyhhKTtlLmZpbGxTZXR0ZXI9ZnVuY3Rpb24oYSl7dmFyIGU9cShhKS5icmlnaHRlbigtLjEpLmdldCgpO3RoaXMuZmlsbD1hO3RoaXMuc2lkZTEuYXR0cih7ZmlsbDplfSk7dGhpcy5zaWRlMi5hdHRyKHtmaWxsOmV9KTt0aGlzLmlubi5hdHRyKHtmaWxsOmV9KTt0aGlzLm91dC5hdHRyKHtmaWxsOmV9KTt0aGlzLnRvcC5hdHRyKHtmaWxsOmF9KTtyZXR1cm4gdGhpc307WyJvcGFjaXR5IiwidHJhbnNsYXRlWCIsCiJ0cmFuc2xhdGVZIiwidmlzaWJpbGl0eSJdLmZvckVhY2goZnVuY3Rpb24oYSl7ZVthKyJTZXR0ZXIiXT1mdW5jdGlvbihhLGspe2Vba109YTtbIm91dCIsImlubiIsInNpZGUxIiwic2lkZTIiLCJ0b3AiXS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2VbY10uYXR0cihrLGEpfSl9fSk7ZS5hdHRyPWZ1bmN0aW9uKGEpe3ZhciBjO2lmKCJvYmplY3QiPT09dHlwZW9mIGEmJihjPWsoYSkpKXt2YXIgZj1jWzBdO2FyZ3VtZW50c1swXT1jWzFdO3UoZS5hdHRyaWJzLGYpO2Uuc2V0UGF0aHMoZS5hdHRyaWJzKX1yZXR1cm4gbC5wcm90b3R5cGUuYXR0ci5hcHBseShlLGFyZ3VtZW50cyl9O2UuYW5pbWF0ZT1mdW5jdGlvbihhLGMsZil7dmFyIHI9dGhpcy5hdHRyaWJzLHY9ImRhdGEtIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDI2KS5zdWJzdHJpbmcoMiw5KTtkZWxldGUgYS5jZW50ZXI7ZGVsZXRlIGEuejtkZWxldGUgYS5hbHBoYTtkZWxldGUgYS5iZXRhO3ZhciB6PUQoRShjLHRoaXMucmVuZGVyZXIuZ2xvYmFsQW5pbWF0aW9uKSk7CmlmKHouZHVyYXRpb24pe2M9ayhhKTtlW3ZdPTA7YVt2XT0xO2VbdisiU2V0dGVyIl09dC5ub29wO2lmKGMpe3ZhciBoPWNbMF07ei5zdGVwPWZ1bmN0aW9uKGEsZSl7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gclthXSsoRShoW2FdLHJbYV0pLXJbYV0pKmUucG9zfWUucHJvcD09PXYmJmUuZWxlbS5zZXRQYXRocyhnKHIse3g6YygieCIpLHk6YygieSIpLHI6YygiciIpLGlubmVyUjpjKCJpbm5lclIiKSxzdGFydDpjKCJzdGFydCIpLGVuZDpjKCJlbmQiKSxkZXB0aDpjKCJkZXB0aCIpfSkpfX1jPXp9cmV0dXJuIGwucHJvdG90eXBlLmFuaW1hdGUuY2FsbCh0aGlzLGEsYyxmKX07ZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy50b3AuZGVzdHJveSgpO3RoaXMub3V0LmRlc3Ryb3koKTt0aGlzLmlubi5kZXN0cm95KCk7dGhpcy5zaWRlMS5kZXN0cm95KCk7dGhpcy5zaWRlMi5kZXN0cm95KCk7cmV0dXJuIGwucHJvdG90eXBlLmRlc3Ryb3kuY2FsbCh0aGlzKX07ZS5oaWRlPWZ1bmN0aW9uKCl7dGhpcy50b3AuaGlkZSgpOwp0aGlzLm91dC5oaWRlKCk7dGhpcy5pbm4uaGlkZSgpO3RoaXMuc2lkZTEuaGlkZSgpO3RoaXMuc2lkZTIuaGlkZSgpfTtlLnNob3c9ZnVuY3Rpb24oYSl7dGhpcy50b3Auc2hvdyhhKTt0aGlzLm91dC5zaG93KGEpO3RoaXMuaW5uLnNob3coYSk7dGhpcy5zaWRlMS5zaG93KGEpO3RoaXMuc2lkZTIuc2hvdyhhKX07cmV0dXJuIGV9O2QucHJvdG90eXBlLmFyYzNkUGF0aD1mdW5jdGlvbihjKXtmdW5jdGlvbiBmKGEpe2ElPTIqTWF0aC5QSTthPk1hdGguUEkmJihhPTIqTWF0aC5QSS1hKTtyZXR1cm4gYX12YXIgZT1jLngsaD1jLnksZD1jLnN0YXJ0LHg9Yy5lbmQtLjAwMDAxLGI9Yy5yLHI9Yy5pbm5lclJ8fDAsRz1jLmRlcHRofHwwLHY9Yy5hbHBoYSx6PWMuYmV0YSxIPU1hdGguY29zKGQpLEI9TWF0aC5zaW4oZCk7Yz1NYXRoLmNvcyh4KTt2YXIgcT1NYXRoLnNpbih4KSxBPWIqTWF0aC5jb3Moeik7Yio9TWF0aC5jb3Modik7dmFyIEM9cipNYXRoLmNvcyh6KSxwPXIqTWF0aC5jb3Modik7CnI9RypNYXRoLnNpbih6KTt2YXIgbT1HKk1hdGguc2luKHYpO0c9W1siTSIsZStBKkgsaCtiKkJdXTtHPUcuY29uY2F0KG4oZSxoLEEsYixkLHgsMCwwKSk7Ry5wdXNoKFsiTCIsZStDKmMsaCtwKnFdKTtHPUcuY29uY2F0KG4oZSxoLEMscCx4LGQsMCwwKSk7Ry5wdXNoKFsiWiJdKTt2YXIgdT0wPHo/TWF0aC5QSS8yOjA7ej0wPHY/MDpNYXRoLlBJLzI7dT1kPi11P2Q6eD4tdT8tdTpkO3ZhciBnPXg8YS16P3g6ZDxhLXo/YS16OngsbD0yKmEtejt2PVtbIk0iLGUrQSp5KHUpLGgrYiprKHUpXV07dj12LmNvbmNhdChuKGUsaCxBLGIsdSxnLDAsMCkpO3g+bCYmZDxsPyh2LnB1c2goWyJMIixlK0EqeShnKStyLGgrYiprKGcpK21dKSx2PXYuY29uY2F0KG4oZSxoLEEsYixnLGwscixtKSksdi5wdXNoKFsiTCIsZStBKnkobCksaCtiKmsobCldKSx2PXYuY29uY2F0KG4oZSxoLEEsYixsLHgsMCwwKSksdi5wdXNoKFsiTCIsZStBKnkoeCkrcixoK2Iqayh4KSttXSksdj12LmNvbmNhdChuKGUsCmgsQSxiLHgsbCxyLG0pKSx2LnB1c2goWyJMIixlK0EqeShsKSxoK2IqayhsKV0pLHY9di5jb25jYXQobihlLGgsQSxiLGwsZywwLDApKSk6eD5hLXomJmQ8YS16JiYodi5wdXNoKFsiTCIsZStBKk1hdGguY29zKGcpK3IsaCtiKk1hdGguc2luKGcpK21dKSx2PXYuY29uY2F0KG4oZSxoLEEsYixnLHgscixtKSksdi5wdXNoKFsiTCIsZStBKk1hdGguY29zKHgpLGgrYipNYXRoLnNpbih4KV0pLHY9di5jb25jYXQobihlLGgsQSxiLHgsZywwLDApKSk7di5wdXNoKFsiTCIsZStBKk1hdGguY29zKGcpK3IsaCtiKk1hdGguc2luKGcpK21dKTt2PXYuY29uY2F0KG4oZSxoLEEsYixnLHUscixtKSk7di5wdXNoKFsiWiJdKTt6PVtbIk0iLGUrQypILGgrcCpCXV07ej16LmNvbmNhdChuKGUsaCxDLHAsZCx4LDAsMCkpO3oucHVzaChbIkwiLGUrQypNYXRoLmNvcyh4KStyLGgrcCpNYXRoLnNpbih4KSttXSk7ej16LmNvbmNhdChuKGUsaCxDLHAseCxkLHIsbSkpO3oucHVzaChbIloiXSk7SD1bWyJNIiwKZStBKkgsaCtiKkJdLFsiTCIsZStBKkgrcixoK2IqQittXSxbIkwiLGUrQypIK3IsaCtwKkIrbV0sWyJMIixlK0MqSCxoK3AqQl0sWyJaIl1dO2U9W1siTSIsZStBKmMsaCtiKnFdLFsiTCIsZStBKmMrcixoK2IqcSttXSxbIkwiLGUrQypjK3IsaCtwKnErbV0sWyJMIixlK0MqYyxoK3AqcV0sWyJaIl1dO3E9TWF0aC5hdGFuMihtLC1yKTtoPU1hdGguYWJzKHgrcSk7Yz1NYXRoLmFicyhkK3EpO2Q9TWF0aC5hYnMoKGQreCkvMitxKTtoPWYoaCk7Yz1mKGMpO2Q9ZihkKTtkKj0xRTU7eD0xRTUqYztoKj0xRTU7cmV0dXJue3RvcDpHLHpUb3A6MUU1Kk1hdGguUEkrMSxvdXQ6dix6T3V0Ok1hdGgubWF4KGQseCxoKSxpbm46eix6SW5uOk1hdGgubWF4KGQseCxoKSxzaWRlMTpILHpTaWRlMTouOTkqaCxzaWRlMjplLHpTaWRlMjouOTkqeH19fSk7RihiLCJwYXJ0cy0zZC9UaWNrM0QuanMiLFtiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYil7dmFyIHQ9Yi5hZGRFdmVudCxsPQpiLmV4dGVuZCxkPWIud3JhcDtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7fWIuY29tcG9zZT1mdW5jdGlvbihuKXt0KG4sImFmdGVyR2V0TGFiZWxQb3NpdGlvbiIsYi5vbkFmdGVyR2V0TGFiZWxQb3NpdGlvbik7ZChuLnByb3RvdHlwZSwiZ2V0TWFya1BhdGgiLGIud3JhcEdldE1hcmtQYXRoKX07Yi5vbkFmdGVyR2V0TGFiZWxQb3NpdGlvbj1mdW5jdGlvbihkKXt2YXIgYj10aGlzLmF4aXMuYXhpczNEO2ImJmwoZC5wb3MsYi5maXgzZFBvc2l0aW9uKGQucG9zKSl9O2Iud3JhcEdldE1hcmtQYXRoPWZ1bmN0aW9uKGQpe3ZhciBiPXRoaXMuYXhpcy5heGlzM0Qsbj1kLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpO2lmKGIpe3ZhciBtPW5bMF0sdT1uWzFdO2lmKCJNIj09PW1bMF0mJiJMIj09PXVbMF0pcmV0dXJuIGI9W2IuZml4M2RQb3NpdGlvbih7eDptWzFdLHk6bVsyXSx6OjB9KSxiLmZpeDNkUG9zaXRpb24oe3g6dVsxXSx5OnVbMl0sejowfSldLAp0aGlzLmF4aXMuY2hhcnQucmVuZGVyZXIudG9MaW5lU2VnbWVudHMoYil9cmV0dXJuIG59O3JldHVybiBifSgpfSk7RihiLCJwYXJ0cy0zZC9BeGlzM0QuanMiLFtiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsicGFydHMvVGljay5qcyJdLGJbInBhcnRzLTNkL1RpY2szRC5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLHQsbCxkKXt2YXIgdz1kLmFkZEV2ZW50LG49ZC5tZXJnZSxxPWQucGljayxEPWQud3JhcCxtPWIuZGVnMnJhZCx1PWIucGVyc3BlY3RpdmUsZz1iLnBlcnNwZWN0aXZlM0QscD1iLnNoYXBlQXJlYSxFPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChhKXt0aGlzLmF4aXM9YX1kLnByb3RvdHlwZS5maXgzZFBvc2l0aW9uPWZ1bmN0aW9uKGEsayl7dmFyIGQ9dGhpcy5heGlzLGM9ZC5jaGFydDtpZigiY29sb3JBeGlzIj09PWQuY29sbHx8IWMuY2hhcnQzZHx8IWMuaXMzZCgpKXJldHVybiBhO3ZhciBoPW0qYy5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZC5hbHBoYSwKYj1tKmMub3B0aW9ucy5jaGFydC5vcHRpb25zM2QuYmV0YSx5PXEoayYmZC5vcHRpb25zLnRpdGxlLnBvc2l0aW9uM2QsZC5vcHRpb25zLmxhYmVscy5wb3NpdGlvbjNkKTtrPXEoayYmZC5vcHRpb25zLnRpdGxlLnNrZXczZCxkLm9wdGlvbnMubGFiZWxzLnNrZXczZCk7dmFyIGY9Yy5jaGFydDNkLmZyYW1lM2QsZz1jLnBsb3RMZWZ0LGU9Yy5wbG90V2lkdGgrZyxuPWMucGxvdFRvcCxsPWMucGxvdEhlaWdodCtuO2M9ITE7dmFyIHQ9MCx3PTAscj17eDowLHk6MSx6OjB9O2E9ZC5heGlzM0Quc3dhcFooe3g6YS54LHk6YS55LHo6MH0pO2lmKGQuaXNaQXhpcylpZihkLm9wcG9zaXRlKXtpZihudWxsPT09Zi5heGVzLnoudG9wKXJldHVybnt9O3c9YS55LW47YS54PWYuYXhlcy56LnRvcC54O2EueT1mLmF4ZXMuei50b3AueTtnPWYuYXhlcy56LnRvcC54RGlyO2M9IWYudG9wLmZyb250RmFjaW5nfWVsc2V7aWYobnVsbD09PWYuYXhlcy56LmJvdHRvbSlyZXR1cm57fTt3PWEueS1sO2EueD0KZi5heGVzLnouYm90dG9tLng7YS55PWYuYXhlcy56LmJvdHRvbS55O2c9Zi5heGVzLnouYm90dG9tLnhEaXI7Yz0hZi5ib3R0b20uZnJvbnRGYWNpbmd9ZWxzZSBpZihkLmhvcml6KWlmKGQub3Bwb3NpdGUpe2lmKG51bGw9PT1mLmF4ZXMueC50b3ApcmV0dXJue307dz1hLnktbjthLnk9Zi5heGVzLngudG9wLnk7YS56PWYuYXhlcy54LnRvcC56O2c9Zi5heGVzLngudG9wLnhEaXI7Yz0hZi50b3AuZnJvbnRGYWNpbmd9ZWxzZXtpZihudWxsPT09Zi5heGVzLnguYm90dG9tKXJldHVybnt9O3c9YS55LWw7YS55PWYuYXhlcy54LmJvdHRvbS55O2Euej1mLmF4ZXMueC5ib3R0b20uejtnPWYuYXhlcy54LmJvdHRvbS54RGlyO2M9IWYuYm90dG9tLmZyb250RmFjaW5nfWVsc2UgaWYoZC5vcHBvc2l0ZSl7aWYobnVsbD09PWYuYXhlcy55LnJpZ2h0KXJldHVybnt9O3Q9YS54LWU7YS54PWYuYXhlcy55LnJpZ2h0Lng7YS56PWYuYXhlcy55LnJpZ2h0Lno7Zz1mLmF4ZXMueS5yaWdodC54RGlyOwpnPXt4Omcueix5OmcueSx6Oi1nLnh9fWVsc2V7aWYobnVsbD09PWYuYXhlcy55LmxlZnQpcmV0dXJue307dD1hLngtZzthLng9Zi5heGVzLnkubGVmdC54O2Euej1mLmF4ZXMueS5sZWZ0Lno7Zz1mLmF4ZXMueS5sZWZ0LnhEaXJ9ImNoYXJ0IiE9PXkmJigiZmxhcCI9PT15P2QuaG9yaXo/KGI9TWF0aC5zaW4oaCksaD1NYXRoLmNvcyhoKSxkLm9wcG9zaXRlJiYoYj0tYiksYyYmKGI9LWIpLHI9e3g6Zy56KmIseTpoLHo6LWcueCpifSk6Zz17eDpNYXRoLmNvcyhiKSx5OjAsejpNYXRoLnNpbihiKX06Im9ydGhvIj09PXk/ZC5ob3Jpej8ocj1NYXRoLmNvcyhoKSx5PU1hdGguc2luKGIpKnIsaD0tTWF0aC5zaW4oaCksYj0tcipNYXRoLmNvcyhiKSxyPXt4OmcueSpiLWcueipoLHk6Zy56KnktZy54KmIsejpnLngqaC1nLnkqeX0saD0xL01hdGguc3FydChyLngqci54K3IueSpyLnkrci56KnIueiksYyYmKGg9LWgpLHI9e3g6aCpyLngseTpoKnIueSx6Omgqci56fSk6Zz17eDpNYXRoLmNvcyhiKSwKeTowLHo6TWF0aC5zaW4oYil9OmQuaG9yaXo/cj17eDpNYXRoLnNpbihiKSpNYXRoLnNpbihoKSx5Ok1hdGguY29zKGgpLHo6LU1hdGguY29zKGIpKk1hdGguc2luKGgpfTpnPXt4Ok1hdGguY29zKGIpLHk6MCx6Ok1hdGguc2luKGIpfSk7YS54Kz10KmcueCt3KnIueDthLnkrPXQqZy55K3cqci55O2Eueis9dCpnLnordypyLno7Yz11KFthXSxkLmNoYXJ0KVswXTtrJiYoMD5wKHUoW2Ese3g6YS54K2cueCx5OmEueStnLnksejphLnorZy56fSx7eDphLngrci54LHk6YS55K3IueSx6OmEueityLnp9XSxkLmNoYXJ0KSkmJihnPXt4Oi1nLngseTotZy55LHo6LWcuen0pLGE9dShbe3g6YS54LHk6YS55LHo6YS56fSx7eDphLngrZy54LHk6YS55K2cueSx6OmEueitnLnp9LHt4OmEueCtyLngseTphLnkrci55LHo6YS56K3Iuen1dLGQuY2hhcnQpLGMubWF0cml4PVthWzFdLngtYVswXS54LGFbMV0ueS1hWzBdLnksYVsyXS54LWFbMF0ueCxhWzJdLnktYVswXS55LGMueCxjLnldLGMubWF0cml4WzRdLT0KYy54KmMubWF0cml4WzBdK2MueSpjLm1hdHJpeFsyXSxjLm1hdHJpeFs1XS09Yy54KmMubWF0cml4WzFdK2MueSpjLm1hdHJpeFszXSk7cmV0dXJuIGN9O2QucHJvdG90eXBlLnN3YXBaPWZ1bmN0aW9uKGEsayl7dmFyIGQ9dGhpcy5heGlzO3JldHVybiBkLmlzWkF4aXM/KGs9az8wOmQuY2hhcnQucGxvdExlZnQse3g6aythLnoseTphLnksejphLngta30pOmF9O3JldHVybiBkfSgpO3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGQoKXt9ZC5jb21wb3NlPWZ1bmN0aW9uKGEpe24oITAsYS5kZWZhdWx0T3B0aW9ucyxkLmRlZmF1bHRPcHRpb25zKTthLmtlZXBQcm9wcy5wdXNoKCJheGlzM0QiKTt3KGEsImluaXQiLGQub25Jbml0KTt3KGEsImFmdGVyU2V0T3B0aW9ucyIsZC5vbkFmdGVyU2V0T3B0aW9ucyk7dyhhLCJkcmF3Q3Jvc3NoYWlyIixkLm9uRHJhd0Nyb3NzaGFpcik7dyhhLCJkZXN0cm95IixkLm9uRGVzdHJveSk7YT1hLnByb3RvdHlwZTtEKGEsImdldExpbmVQYXRoIixkLndyYXBHZXRMaW5lUGF0aCk7CkQoYSwiZ2V0UGxvdEJhbmRQYXRoIixkLndyYXBHZXRQbG90QmFuZFBhdGgpO0QoYSwiZ2V0UGxvdExpbmVQYXRoIixkLndyYXBHZXRQbG90TGluZVBhdGgpO0QoYSwiZ2V0U2xvdFdpZHRoIixkLndyYXBHZXRTbG90V2lkdGgpO0QoYSwiZ2V0VGl0bGVQb3NpdGlvbiIsZC53cmFwR2V0VGl0bGVQb3NpdGlvbik7bC5jb21wb3NlKHQpfTtkLm9uQWZ0ZXJTZXRPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxkPXRoaXMub3B0aW9uczthLmlzM2QmJmEuaXMzZCgpJiYiY29sb3JBeGlzIiE9PXRoaXMuY29sbCYmKGQudGlja1dpZHRoPXEoZC50aWNrV2lkdGgsMCksZC5ncmlkTGluZVdpZHRoPXEoZC5ncmlkTGluZVdpZHRoLDEpKX07ZC5vbkRlc3Ryb3k9ZnVuY3Rpb24oKXtbImJhY2tGcmFtZSIsImJvdHRvbUZyYW1lIiwic2lkZUZyYW1lIl0uZm9yRWFjaChmdW5jdGlvbihhKXt0aGlzW2FdJiYodGhpc1thXT10aGlzW2FdLmRlc3Ryb3koKSl9LHRoaXMpfTtkLm9uRHJhd0Nyb3NzaGFpcj0KZnVuY3Rpb24oYSl7dGhpcy5jaGFydC5pczNkKCkmJiJjb2xvckF4aXMiIT09dGhpcy5jb2xsJiZhLnBvaW50JiYoYS5wb2ludC5jcm9zc2hhaXJQb3M9dGhpcy5pc1hBeGlzP2EucG9pbnQuYXhpc1hwb3M6dGhpcy5sZW4tYS5wb2ludC5heGlzWXBvcyl9O2Qub25Jbml0PWZ1bmN0aW9uKCl7dGhpcy5heGlzM0R8fCh0aGlzLmF4aXMzRD1uZXcgRSh0aGlzKSl9O2Qud3JhcEdldExpbmVQYXRoPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmNoYXJ0LmlzM2QoKSYmImNvbG9yQXhpcyIhPT10aGlzLmNvbGw/W106YS5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX07ZC53cmFwR2V0UGxvdEJhbmRQYXRoPWZ1bmN0aW9uKGEpe2lmKCF0aGlzLmNoYXJ0LmlzM2QoKXx8ImNvbG9yQXhpcyI9PT10aGlzLmNvbGwpcmV0dXJuIGEuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7dmFyIGQ9YXJndW1lbnRzLGI9ZFsyXSxjPVtdO2Q9dGhpcy5nZXRQbG90TGluZVBhdGgoe3ZhbHVlOmRbMV19KTsKYj10aGlzLmdldFBsb3RMaW5lUGF0aCh7dmFsdWU6Yn0pO2lmKGQmJmIpZm9yKHZhciBoPTA7aDxkLmxlbmd0aDtoKz0yKXt2YXIgZz1kW2hdLHA9ZFtoKzFdLGY9YltoXSxtPWJbaCsxXTsiTSI9PT1nWzBdJiYiTCI9PT1wWzBdJiYiTSI9PT1mWzBdJiYiTCI9PT1tWzBdJiZjLnB1c2goZyxwLG0sWyJMIixmWzFdLGZbMl1dLFsiWiJdKX1yZXR1cm4gY307ZC53cmFwR2V0UGxvdExpbmVQYXRoPWZ1bmN0aW9uKGEpe3ZhciBkPXRoaXMuYXhpczNELGI9dGhpcy5jaGFydCxjPWEuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7aWYoImNvbG9yQXhpcyI9PT10aGlzLmNvbGx8fCFiLmNoYXJ0M2R8fCFiLmlzM2QoKXx8bnVsbD09PWMpcmV0dXJuIGM7dmFyIGg9Yi5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZCxnPXRoaXMuaXNaQXhpcz9iLnBsb3RXaWR0aDpoLmRlcHRoO2g9Yi5jaGFydDNkLmZyYW1lM2Q7dmFyIHA9Y1swXSxmPWNbMV07Yz1bXTsiTSI9PT1wWzBdJiYiTCI9PT0KZlswXSYmKGQ9W2Quc3dhcFooe3g6cFsxXSx5OnBbMl0sejowfSksZC5zd2FwWih7eDpwWzFdLHk6cFsyXSx6Omd9KSxkLnN3YXBaKHt4OmZbMV0seTpmWzJdLHo6MH0pLGQuc3dhcFooe3g6ZlsxXSx5OmZbMl0sejpnfSldLHRoaXMuaG9yaXo/KHRoaXMuaXNaQXhpcz8oaC5sZWZ0LnZpc2libGUmJmMucHVzaChkWzBdLGRbMl0pLGgucmlnaHQudmlzaWJsZSYmYy5wdXNoKGRbMV0sZFszXSkpOihoLmZyb250LnZpc2libGUmJmMucHVzaChkWzBdLGRbMl0pLGguYmFjay52aXNpYmxlJiZjLnB1c2goZFsxXSxkWzNdKSksaC50b3AudmlzaWJsZSYmYy5wdXNoKGRbMF0sZFsxXSksaC5ib3R0b20udmlzaWJsZSYmYy5wdXNoKGRbMl0sZFszXSkpOihoLmZyb250LnZpc2libGUmJmMucHVzaChkWzBdLGRbMl0pLGguYmFjay52aXNpYmxlJiZjLnB1c2goZFsxXSxkWzNdKSxoLmxlZnQudmlzaWJsZSYmYy5wdXNoKGRbMF0sZFsxXSksaC5yaWdodC52aXNpYmxlJiZjLnB1c2goZFsyXSxkWzNdKSksCmM9dShjLHRoaXMuY2hhcnQsITEpKTtyZXR1cm4gYi5yZW5kZXJlci50b0xpbmVTZWdtZW50cyhjKX07ZC53cmFwR2V0U2xvdFdpZHRoPWZ1bmN0aW9uKGEsZCl7dmFyIGI9dGhpcy5jaGFydCxjPXRoaXMudGlja3MsaD10aGlzLmdyaWRHcm91cDtpZih0aGlzLmNhdGVnb3JpZXMmJmIuZnJhbWVTaGFwZXMmJmIuaXMzZCgpJiZoJiZkJiZkLmxhYmVsKXtoPWguZWxlbWVudC5jaGlsZE5vZGVzWzBdLmdldEJCb3goKTt2YXIgaz1iLmZyYW1lU2hhcGVzLmxlZnQuZ2V0QkJveCgpLHA9Yi5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZDtiPXt4OmIucGxvdFdpZHRoLzIseTpiLnBsb3RIZWlnaHQvMix6OnAuZGVwdGgvMix2ZDpxKHAuZGVwdGgsMSkqcShwLnZpZXdEaXN0YW5jZSwwKX07dmFyIGYsbTtwPWQucG9zO3ZhciBlPWNbcC0xXTtjPWNbcCsxXTswIT09cCYmZSYmZS5sYWJlbC54eSYmKGY9Zyh7eDplLmxhYmVsLnh5LngseTplLmxhYmVsLnh5LnksejpudWxsfSxiLGIudmQpKTtjJiZjLmxhYmVsLnh5JiYKKG09Zyh7eDpjLmxhYmVsLnh5LngseTpjLmxhYmVsLnh5LnksejpudWxsfSxiLGIudmQpKTtjPXt4OmQubGFiZWwueHkueCx5OmQubGFiZWwueHkueSx6Om51bGx9O2M9ZyhjLGIsYi52ZCk7cmV0dXJuIE1hdGguYWJzKGY/Yy54LWYueDptP20ueC1jLng6aC54LWsueCl9cmV0dXJuIGEuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9O2Qud3JhcEdldFRpdGxlUG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGQ9YS5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTtyZXR1cm4gdGhpcy5heGlzM0Q/dGhpcy5heGlzM0QuZml4M2RQb3NpdGlvbihkLCEwKTpkfTtkLmRlZmF1bHRPcHRpb25zPXtsYWJlbHM6e3Bvc2l0aW9uM2Q6Im9mZnNldCIsc2tldzNkOiExfSx0aXRsZTp7cG9zaXRpb24zZDpudWxsLHNrZXczZDpudWxsfX07cmV0dXJuIGR9KCl9KTtGKGIsInBhcnRzLTNkL1pBeGlzLmpzIixbYlsicGFydHMvQXhpcy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSwKZnVuY3Rpb24oYix0KXt2YXIgbD10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgZD1mdW5jdGlvbihiLHApe2Q9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGQsYil7ZC5fX3Byb3RvX189Yn18fGZ1bmN0aW9uKGQsYil7Zm9yKHZhciBhIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShhKSYmKGRbYV09YlthXSl9O3JldHVybiBkKGIscCl9O3JldHVybiBmdW5jdGlvbihiLHApe2Z1bmN0aW9uIGcoKXt0aGlzLmNvbnN0cnVjdG9yPWJ9ZChiLHApO2IucHJvdG90eXBlPW51bGw9PT1wP09iamVjdC5jcmVhdGUocCk6KGcucHJvdG90eXBlPXAucHJvdG90eXBlLG5ldyBnKX19KCksZD10LmFkZEV2ZW50LHc9dC5tZXJnZSxuPXQucGljayxxPXQuc3BsYXQsRD1mdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXt9Yi5jb21wb3NlPWZ1bmN0aW9uKGcpe2QoZywiYWZ0ZXJHZXRBeGVzIixiLm9uQWZ0ZXJHZXRBeGVzKTtnPQpnLnByb3RvdHlwZTtnLmFkZFpBeGlzPWIud3JhcEFkZFpBeGlzO2cuY29sbGVjdGlvbnNXaXRoSW5pdC56QXhpcz1bZy5hZGRaQXhpc107Zy5jb2xsZWN0aW9uc1dpdGhVcGRhdGUucHVzaCgiekF4aXMiKX07Yi5vbkFmdGVyR2V0QXhlcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMsYj10aGlzLm9wdGlvbnM7Yj1iLnpBeGlzPXEoYi56QXhpc3x8e30pO2QuaXMzZCgpJiYoZC56QXhpcz1bXSxiLmZvckVhY2goZnVuY3Rpb24oYixnKXtiLmluZGV4PWc7Yi5pc1g9ITA7ZC5hZGRaQXhpcyhiKS5zZXRTY2FsZSgpfSkpfTtiLndyYXBBZGRaQXhpcz1mdW5jdGlvbihkKXtyZXR1cm4gbmV3IG0odGhpcyxkKX07cmV0dXJuIGJ9KCksbT1mdW5jdGlvbihkKXtmdW5jdGlvbiBiKGIsZyl7Yj1kLmNhbGwodGhpcyxiLGcpfHx0aGlzO2IuaXNaQXhpcz0hMDtyZXR1cm4gYn1sKGIsZCk7Yi5wcm90b3R5cGUuZ2V0U2VyaWVzRXh0cmVtZXM9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLGI9ZC5jaGFydDtkLmhhc1Zpc2libGVTZXJpZXM9CiExO2QuZGF0YU1pbj1kLmRhdGFNYXg9ZC5pZ25vcmVNaW5QYWRkaW5nPWQuaWdub3JlTWF4UGFkZGluZz12b2lkIDA7ZC5zdGFja2luZyYmZC5zdGFja2luZy5idWlsZFN0YWNrcygpO2Quc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZyl7IWcudmlzaWJsZSYmYi5vcHRpb25zLmNoYXJ0JiZiLm9wdGlvbnMuY2hhcnQuaWdub3JlSGlkZGVuU2VyaWVzfHwoZC5oYXNWaXNpYmxlU2VyaWVzPSEwLGc9Zy56RGF0YSxnLmxlbmd0aCYmKGQuZGF0YU1pbj1NYXRoLm1pbihuKGQuZGF0YU1pbixnWzBdKSxNYXRoLm1pbi5hcHBseShudWxsLGcpKSxkLmRhdGFNYXg9TWF0aC5tYXgobihkLmRhdGFNYXgsZ1swXSksTWF0aC5tYXguYXBwbHkobnVsbCxnKSkpKX0pfTtiLnByb3RvdHlwZS5zZXRBeGlzU2l6ZT1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQ7ZC5wcm90b3R5cGUuc2V0QXhpc1NpemUuY2FsbCh0aGlzKTt0aGlzLndpZHRoPXRoaXMubGVuPWIub3B0aW9ucy5jaGFydCYmYi5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZCYmCmIub3B0aW9ucy5jaGFydC5vcHRpb25zM2QuZGVwdGh8fDA7dGhpcy5yaWdodD1iLmNoYXJ0V2lkdGgtdGhpcy53aWR0aC10aGlzLmxlZnR9O2IucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24oYil7Yj13KHtvZmZzZXQ6MCxsaW5lV2lkdGg6MH0sYik7ZC5wcm90b3R5cGUuc2V0T3B0aW9ucy5jYWxsKHRoaXMsYik7dGhpcy5jb2xsPSJ6QXhpcyJ9O2IuWkNoYXJ0Q29tcG9zaXRpb249RDtyZXR1cm4gYn0oYik7cmV0dXJuIG19KTtGKGIsInBhcnRzLTNkL0NoYXJ0M0QuanMiLFtiWyJwYXJ0cy9BeGlzLmpzIl0sYlsicGFydHMtM2QvQXhpczNELmpzIl0sYlsicGFydHMvQ2hhcnQuanMiXSxiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsicGFydHMvT3B0aW9ucy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdLGJbInBhcnRzLTNkL1pBeGlzLmpzIl1dLGZ1bmN0aW9uKGIsdCxsLGQsdyxuLHEpe3ZhciBEPXcuZGVmYXVsdE9wdGlvbnMsbT1uLmFkZEV2ZW50O3c9bi5GeDt2YXIgdT0Kbi5pc0FycmF5LGc9bi5tZXJnZSxwPW4ucGljayxFPW4ud3JhcCx5PWQucGVyc3BlY3RpdmUsYTsoZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt0aGlzLmlzM2QoKSYmInNjYXR0ZXIiPT09YS5vcHRpb25zLnR5cGUmJihhLm9wdGlvbnMudHlwZT0ic2NhdHRlcjNkIil9ZnVuY3Rpb24gYygpe2lmKHRoaXMuY2hhcnQzZCYmdGhpcy5pczNkKCkpe3ZhciBhPXRoaXMucmVuZGVyZXIsYj10aGlzLm9wdGlvbnMuY2hhcnQub3B0aW9uczNkLGM9dGhpcy5jaGFydDNkLmdldDNkRnJhbWUoKSxlPXRoaXMucGxvdExlZnQsaD10aGlzLnBsb3RMZWZ0K3RoaXMucGxvdFdpZHRoLGY9dGhpcy5wbG90VG9wLGs9dGhpcy5wbG90VG9wK3RoaXMucGxvdEhlaWdodDtiPWIuZGVwdGg7dmFyIGc9ZS0oYy5sZWZ0LnZpc2libGU/Yy5sZWZ0LnNpemU6MCksbT1oKyhjLnJpZ2h0LnZpc2libGU/Yy5yaWdodC5zaXplOjApLG49Zi0oYy50b3AudmlzaWJsZT9jLnRvcC5zaXplOjApLHE9aysoYy5ib3R0b20udmlzaWJsZT8KYy5ib3R0b20uc2l6ZTowKSxsPTAtKGMuZnJvbnQudmlzaWJsZT9jLmZyb250LnNpemU6MCkscD1iKyhjLmJhY2sudmlzaWJsZT9jLmJhY2suc2l6ZTowKSx5PXRoaXMuaGFzUmVuZGVyZWQ/ImFuaW1hdGUiOiJhdHRyIjt0aGlzLmNoYXJ0M2QuZnJhbWUzZD1jO3RoaXMuZnJhbWVTaGFwZXN8fCh0aGlzLmZyYW1lU2hhcGVzPXtib3R0b206YS5wb2x5aGVkcm9uKCkuYWRkKCksdG9wOmEucG9seWhlZHJvbigpLmFkZCgpLGxlZnQ6YS5wb2x5aGVkcm9uKCkuYWRkKCkscmlnaHQ6YS5wb2x5aGVkcm9uKCkuYWRkKCksYmFjazphLnBvbHloZWRyb24oKS5hZGQoKSxmcm9udDphLnBvbHloZWRyb24oKS5hZGQoKX0pO3RoaXMuZnJhbWVTaGFwZXMuYm90dG9tW3ldKHsiY2xhc3MiOiJoaWdoY2hhcnRzLTNkLWZyYW1lIGhpZ2hjaGFydHMtM2QtZnJhbWUtYm90dG9tIix6SW5kZXg6Yy5ib3R0b20uZnJvbnRGYWNpbmc/LTFFMzoxRTMsZmFjZXM6W3tmaWxsOmQuY29sb3IoYy5ib3R0b20uY29sb3IpLmJyaWdodGVuKC4xKS5nZXQoKSwKdmVydGV4ZXM6W3t4OmcseTpxLHo6bH0se3g6bSx5OnEsejpsfSx7eDptLHk6cSx6OnB9LHt4OmcseTpxLHo6cH1dLGVuYWJsZWQ6Yy5ib3R0b20udmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLmJvdHRvbS5jb2xvcikuYnJpZ2h0ZW4oLjEpLmdldCgpLHZlcnRleGVzOlt7eDplLHk6ayx6OmJ9LHt4OmgseTprLHo6Yn0se3g6aCx5OmssejowfSx7eDplLHk6ayx6OjB9XSxlbmFibGVkOmMuYm90dG9tLnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy5ib3R0b20uY29sb3IpLmJyaWdodGVuKC0uMSkuZ2V0KCksdmVydGV4ZXM6W3t4OmcseTpxLHo6bH0se3g6Zyx5OnEsejpwfSx7eDplLHk6ayx6OmJ9LHt4OmUseTprLHo6MH1dLGVuYWJsZWQ6Yy5ib3R0b20udmlzaWJsZSYmIWMubGVmdC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuYm90dG9tLmNvbG9yKS5icmlnaHRlbigtLjEpLmdldCgpLHZlcnRleGVzOlt7eDptLHk6cSx6OnB9LHt4Om0seTpxLHo6bH0se3g6aCx5OmssejowfSx7eDpoLAp5OmssejpifV0sZW5hYmxlZDpjLmJvdHRvbS52aXNpYmxlJiYhYy5yaWdodC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuYm90dG9tLmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5OnEsejpsfSx7eDpnLHk6cSx6Omx9LHt4OmUseTprLHo6MH0se3g6aCx5OmssejowfV0sZW5hYmxlZDpjLmJvdHRvbS52aXNpYmxlJiYhYy5mcm9udC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuYm90dG9tLmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6Zyx5OnEsejpwfSx7eDptLHk6cSx6OnB9LHt4OmgseTprLHo6Yn0se3g6ZSx5OmssejpifV0sZW5hYmxlZDpjLmJvdHRvbS52aXNpYmxlJiYhYy5iYWNrLnZpc2libGV9XX0pO3RoaXMuZnJhbWVTaGFwZXMudG9wW3ldKHsiY2xhc3MiOiJoaWdoY2hhcnRzLTNkLWZyYW1lIGhpZ2hjaGFydHMtM2QtZnJhbWUtdG9wIix6SW5kZXg6Yy50b3AuZnJvbnRGYWNpbmc/LTFFMzoxRTMsZmFjZXM6W3tmaWxsOmQuY29sb3IoYy50b3AuY29sb3IpLmJyaWdodGVuKC4xKS5nZXQoKSwKdmVydGV4ZXM6W3t4OmcseTpuLHo6cH0se3g6bSx5Om4sejpwfSx7eDptLHk6bix6Omx9LHt4OmcseTpuLHo6bH1dLGVuYWJsZWQ6Yy50b3AudmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLnRvcC5jb2xvcikuYnJpZ2h0ZW4oLjEpLmdldCgpLHZlcnRleGVzOlt7eDplLHk6Zix6OjB9LHt4OmgseTpmLHo6MH0se3g6aCx5OmYsejpifSx7eDplLHk6Zix6OmJ9XSxlbmFibGVkOmMudG9wLnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy50b3AuY29sb3IpLmJyaWdodGVuKC0uMSkuZ2V0KCksdmVydGV4ZXM6W3t4OmcseTpuLHo6cH0se3g6Zyx5Om4sejpsfSx7eDplLHk6Zix6OjB9LHt4OmUseTpmLHo6Yn1dLGVuYWJsZWQ6Yy50b3AudmlzaWJsZSYmIWMubGVmdC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMudG9wLmNvbG9yKS5icmlnaHRlbigtLjEpLmdldCgpLHZlcnRleGVzOlt7eDptLHk6bix6Omx9LHt4Om0seTpuLHo6cH0se3g6aCx5OmYsejpifSx7eDpoLHk6Zix6OjB9XSxlbmFibGVkOmMudG9wLnZpc2libGUmJgohYy5yaWdodC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMudG9wLmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6Zyx5Om4sejpsfSx7eDptLHk6bix6Omx9LHt4OmgseTpmLHo6MH0se3g6ZSx5OmYsejowfV0sZW5hYmxlZDpjLnRvcC52aXNpYmxlJiYhYy5mcm9udC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMudG9wLmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5Om4sejpwfSx7eDpnLHk6bix6OnB9LHt4OmUseTpmLHo6Yn0se3g6aCx5OmYsejpifV0sZW5hYmxlZDpjLnRvcC52aXNpYmxlJiYhYy5iYWNrLnZpc2libGV9XX0pO3RoaXMuZnJhbWVTaGFwZXMubGVmdFt5XSh7ImNsYXNzIjoiaGlnaGNoYXJ0cy0zZC1mcmFtZSBoaWdoY2hhcnRzLTNkLWZyYW1lLWxlZnQiLHpJbmRleDpjLmxlZnQuZnJvbnRGYWNpbmc/LTFFMzoxRTMsZmFjZXM6W3tmaWxsOmQuY29sb3IoYy5sZWZ0LmNvbG9yKS5icmlnaHRlbiguMSkuZ2V0KCksdmVydGV4ZXM6W3t4OmcseTpxLHo6bH0se3g6ZSwKeTprLHo6MH0se3g6ZSx5OmssejpifSx7eDpnLHk6cSx6OnB9XSxlbmFibGVkOmMubGVmdC52aXNpYmxlJiYhYy5ib3R0b20udmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLmxlZnQuY29sb3IpLmJyaWdodGVuKC4xKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6Zyx5Om4sejpwfSx7eDplLHk6Zix6OmJ9LHt4OmUseTpmLHo6MH0se3g6Zyx5Om4sejpsfV0sZW5hYmxlZDpjLmxlZnQudmlzaWJsZSYmIWMudG9wLnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy5sZWZ0LmNvbG9yKS5icmlnaHRlbigtLjEpLmdldCgpLHZlcnRleGVzOlt7eDpnLHk6cSx6OnB9LHt4OmcseTpuLHo6cH0se3g6Zyx5Om4sejpsfSx7eDpnLHk6cSx6Omx9XSxlbmFibGVkOmMubGVmdC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMubGVmdC5jb2xvcikuYnJpZ2h0ZW4oLS4xKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6ZSx5OmYsejpifSx7eDplLHk6ayx6OmJ9LHt4OmUseTprLHo6MH0se3g6ZSx5OmYsejowfV0sZW5hYmxlZDpjLmxlZnQudmlzaWJsZX0sCntmaWxsOmQuY29sb3IoYy5sZWZ0LmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6Zyx5OnEsejpsfSx7eDpnLHk6bix6Omx9LHt4OmUseTpmLHo6MH0se3g6ZSx5OmssejowfV0sZW5hYmxlZDpjLmxlZnQudmlzaWJsZSYmIWMuZnJvbnQudmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLmxlZnQuY29sb3IpLmdldCgpLHZlcnRleGVzOlt7eDpnLHk6bix6OnB9LHt4OmcseTpxLHo6cH0se3g6ZSx5OmssejpifSx7eDplLHk6Zix6OmJ9XSxlbmFibGVkOmMubGVmdC52aXNpYmxlJiYhYy5iYWNrLnZpc2libGV9XX0pO3RoaXMuZnJhbWVTaGFwZXMucmlnaHRbeV0oeyJjbGFzcyI6ImhpZ2hjaGFydHMtM2QtZnJhbWUgaGlnaGNoYXJ0cy0zZC1mcmFtZS1yaWdodCIsekluZGV4OmMucmlnaHQuZnJvbnRGYWNpbmc/LTFFMzoxRTMsZmFjZXM6W3tmaWxsOmQuY29sb3IoYy5yaWdodC5jb2xvcikuYnJpZ2h0ZW4oLjEpLmdldCgpLHZlcnRleGVzOlt7eDptLHk6cSx6OnB9LHt4OmgseTprLHo6Yn0se3g6aCwKeTprLHo6MH0se3g6bSx5OnEsejpsfV0sZW5hYmxlZDpjLnJpZ2h0LnZpc2libGUmJiFjLmJvdHRvbS52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMucmlnaHQuY29sb3IpLmJyaWdodGVuKC4xKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5Om4sejpsfSx7eDpoLHk6Zix6OjB9LHt4OmgseTpmLHo6Yn0se3g6bSx5Om4sejpwfV0sZW5hYmxlZDpjLnJpZ2h0LnZpc2libGUmJiFjLnRvcC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMucmlnaHQuY29sb3IpLmJyaWdodGVuKC0uMSkuZ2V0KCksdmVydGV4ZXM6W3t4OmgseTpmLHo6MH0se3g6aCx5OmssejowfSx7eDpoLHk6ayx6OmJ9LHt4OmgseTpmLHo6Yn1dLGVuYWJsZWQ6Yy5yaWdodC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMucmlnaHQuY29sb3IpLmJyaWdodGVuKC0uMSkuZ2V0KCksdmVydGV4ZXM6W3t4Om0seTpxLHo6bH0se3g6bSx5Om4sejpsfSx7eDptLHk6bix6OnB9LHt4Om0seTpxLHo6cH1dLGVuYWJsZWQ6Yy5yaWdodC52aXNpYmxlfSwKe2ZpbGw6ZC5jb2xvcihjLnJpZ2h0LmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5Om4sejpsfSx7eDptLHk6cSx6Omx9LHt4OmgseTprLHo6MH0se3g6aCx5OmYsejowfV0sZW5hYmxlZDpjLnJpZ2h0LnZpc2libGUmJiFjLmZyb250LnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy5yaWdodC5jb2xvcikuZ2V0KCksdmVydGV4ZXM6W3t4Om0seTpxLHo6cH0se3g6bSx5Om4sejpwfSx7eDpoLHk6Zix6OmJ9LHt4OmgseTprLHo6Yn1dLGVuYWJsZWQ6Yy5yaWdodC52aXNpYmxlJiYhYy5iYWNrLnZpc2libGV9XX0pO3RoaXMuZnJhbWVTaGFwZXMuYmFja1t5XSh7ImNsYXNzIjoiaGlnaGNoYXJ0cy0zZC1mcmFtZSBoaWdoY2hhcnRzLTNkLWZyYW1lLWJhY2siLHpJbmRleDpjLmJhY2suZnJvbnRGYWNpbmc/LTFFMzoxRTMsZmFjZXM6W3tmaWxsOmQuY29sb3IoYy5iYWNrLmNvbG9yKS5icmlnaHRlbiguMSkuZ2V0KCksdmVydGV4ZXM6W3t4Om0seTpxLHo6cH0se3g6Zyx5OnEsejpwfSx7eDplLAp5OmssejpifSx7eDpoLHk6ayx6OmJ9XSxlbmFibGVkOmMuYmFjay52aXNpYmxlJiYhYy5ib3R0b20udmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLmJhY2suY29sb3IpLmJyaWdodGVuKC4xKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6Zyx5Om4sejpwfSx7eDptLHk6bix6OnB9LHt4OmgseTpmLHo6Yn0se3g6ZSx5OmYsejpifV0sZW5hYmxlZDpjLmJhY2sudmlzaWJsZSYmIWMudG9wLnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy5iYWNrLmNvbG9yKS5icmlnaHRlbigtLjEpLmdldCgpLHZlcnRleGVzOlt7eDpnLHk6cSx6OnB9LHt4OmcseTpuLHo6cH0se3g6ZSx5OmYsejpifSx7eDplLHk6ayx6OmJ9XSxlbmFibGVkOmMuYmFjay52aXNpYmxlJiYhYy5sZWZ0LnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy5iYWNrLmNvbG9yKS5icmlnaHRlbigtLjEpLmdldCgpLHZlcnRleGVzOlt7eDptLHk6bix6OnB9LHt4Om0seTpxLHo6cH0se3g6aCx5OmssejpifSx7eDpoLHk6Zix6OmJ9XSxlbmFibGVkOmMuYmFjay52aXNpYmxlJiYKIWMucmlnaHQudmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLmJhY2suY29sb3IpLmdldCgpLHZlcnRleGVzOlt7eDplLHk6Zix6OmJ9LHt4OmgseTpmLHo6Yn0se3g6aCx5OmssejpifSx7eDplLHk6ayx6OmJ9XSxlbmFibGVkOmMuYmFjay52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuYmFjay5jb2xvcikuZ2V0KCksdmVydGV4ZXM6W3t4OmcseTpxLHo6cH0se3g6bSx5OnEsejpwfSx7eDptLHk6bix6OnB9LHt4OmcseTpuLHo6cH1dLGVuYWJsZWQ6Yy5iYWNrLnZpc2libGV9XX0pO3RoaXMuZnJhbWVTaGFwZXMuZnJvbnRbeV0oeyJjbGFzcyI6ImhpZ2hjaGFydHMtM2QtZnJhbWUgaGlnaGNoYXJ0cy0zZC1mcmFtZS1mcm9udCIsekluZGV4OmMuZnJvbnQuZnJvbnRGYWNpbmc/LTFFMzoxRTMsZmFjZXM6W3tmaWxsOmQuY29sb3IoYy5mcm9udC5jb2xvcikuYnJpZ2h0ZW4oLjEpLmdldCgpLHZlcnRleGVzOlt7eDpnLHk6cSx6Omx9LHt4Om0seTpxLHo6bH0se3g6aCx5OmssejowfSx7eDplLAp5OmssejowfV0sZW5hYmxlZDpjLmZyb250LnZpc2libGUmJiFjLmJvdHRvbS52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuZnJvbnQuY29sb3IpLmJyaWdodGVuKC4xKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5Om4sejpsfSx7eDpnLHk6bix6Omx9LHt4OmUseTpmLHo6MH0se3g6aCx5OmYsejowfV0sZW5hYmxlZDpjLmZyb250LnZpc2libGUmJiFjLnRvcC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuZnJvbnQuY29sb3IpLmJyaWdodGVuKC0uMSkuZ2V0KCksdmVydGV4ZXM6W3t4OmcseTpuLHo6bH0se3g6Zyx5OnEsejpsfSx7eDplLHk6ayx6OjB9LHt4OmUseTpmLHo6MH1dLGVuYWJsZWQ6Yy5mcm9udC52aXNpYmxlJiYhYy5sZWZ0LnZpc2libGV9LHtmaWxsOmQuY29sb3IoYy5mcm9udC5jb2xvcikuYnJpZ2h0ZW4oLS4xKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5OnEsejpsfSx7eDptLHk6bix6Omx9LHt4OmgseTpmLHo6MH0se3g6aCx5OmssejowfV0sZW5hYmxlZDpjLmZyb250LnZpc2libGUmJgohYy5yaWdodC52aXNpYmxlfSx7ZmlsbDpkLmNvbG9yKGMuZnJvbnQuY29sb3IpLmdldCgpLHZlcnRleGVzOlt7eDpoLHk6Zix6OjB9LHt4OmUseTpmLHo6MH0se3g6ZSx5OmssejowfSx7eDpoLHk6ayx6OjB9XSxlbmFibGVkOmMuZnJvbnQudmlzaWJsZX0se2ZpbGw6ZC5jb2xvcihjLmZyb250LmNvbG9yKS5nZXQoKSx2ZXJ0ZXhlczpbe3g6bSx5OnEsejpsfSx7eDpnLHk6cSx6Omx9LHt4OmcseTpuLHo6bH0se3g6bSx5Om4sejpsfV0sZW5hYmxlZDpjLmZyb250LnZpc2libGV9XX0pfX1mdW5jdGlvbiBoKCl7dGhpcy5zdHlsZWRNb2RlJiYodGhpcy5yZW5kZXJlci5kZWZpbml0aW9uKHt0YWdOYW1lOiJzdHlsZSIsdGV4dENvbnRlbnQ6Ii5oaWdoY2hhcnRzLTNkLXRvcHtmaWx0ZXI6IHVybCgjaGlnaGNoYXJ0cy1icmlnaHRlcil9XG4uaGlnaGNoYXJ0cy0zZC1zaWRle2ZpbHRlcjogdXJsKCNoaWdoY2hhcnRzLWRhcmtlcil9XG4ifSksW3tuYW1lOiJkYXJrZXIiLHNsb3BlOi42fSwKe25hbWU6ImJyaWdodGVyIixzbG9wZToxLjR9XS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3RoaXMucmVuZGVyZXIuZGVmaW5pdGlvbih7dGFnTmFtZToiZmlsdGVyIixpZDoiaGlnaGNoYXJ0cy0iK2EubmFtZSxjaGlsZHJlbjpbe3RhZ05hbWU6ImZlQ29tcG9uZW50VHJhbnNmZXIiLGNoaWxkcmVuOlt7dGFnTmFtZToiZmVGdW5jUiIsdHlwZToibGluZWFyIixzbG9wZTphLnNsb3BlfSx7dGFnTmFtZToiZmVGdW5jRyIsdHlwZToibGluZWFyIixzbG9wZTphLnNsb3BlfSx7dGFnTmFtZToiZmVGdW5jQiIsdHlwZToibGluZWFyIixzbG9wZTphLnNsb3BlfV19XX0pfSx0aGlzKSl9ZnVuY3Rpb24gaygpe3ZhciBhPXRoaXMub3B0aW9uczt0aGlzLmlzM2QoKSYmKGEuc2VyaWVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihjKXsic2NhdHRlciI9PT0oYy50eXBlfHxhLmNoYXJ0LnR5cGV8fGEuY2hhcnQuZGVmYXVsdFNlcmllc1R5cGUpJiYoYy50eXBlPSJzY2F0dGVyM2QiKX0pfWZ1bmN0aW9uIG4oKXt2YXIgYT0KdGhpcy5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZDtpZih0aGlzLmNoYXJ0M2QmJnRoaXMuaXMzZCgpKXthJiYoYS5hbHBoYT1hLmFscGhhJTM2MCsoMDw9YS5hbHBoYT8wOjM2MCksYS5iZXRhPWEuYmV0YSUzNjArKDA8PWEuYmV0YT8wOjM2MCkpO3ZhciBjPXRoaXMuaW52ZXJ0ZWQsYj10aGlzLmNsaXBCb3gsZD10aGlzLm1hcmdpbjtiW2M/InkiOiJ4Il09LShkWzNdfHwwKTtiW2M/IngiOiJ5Il09LShkWzBdfHwwKTtiW2M/ImhlaWdodCI6IndpZHRoIl09dGhpcy5jaGFydFdpZHRoKyhkWzNdfHwwKSsoZFsxXXx8MCk7YltjPyJ3aWR0aCI6ImhlaWdodCJdPXRoaXMuY2hhcnRIZWlnaHQrKGRbMF18fDApKyhkWzJdfHwwKTt0aGlzLnNjYWxlM2Q9MTshMD09PWEuZml0VG9QbG90JiYodGhpcy5zY2FsZTNkPXRoaXMuY2hhcnQzZC5nZXRTY2FsZShhLmRlcHRoKSk7dGhpcy5jaGFydDNkLmZyYW1lM2Q9dGhpcy5jaGFydDNkLmdldDNkRnJhbWUoKX19ZnVuY3Rpb24gZigpe3RoaXMuaXMzZCgpJiYKKHRoaXMuaXNEaXJ0eUJveD0hMCl9ZnVuY3Rpb24gcSgpe3RoaXMuY2hhcnQzZCYmdGhpcy5pczNkKCkmJih0aGlzLmNoYXJ0M2QuZnJhbWUzZD10aGlzLmNoYXJ0M2QuZ2V0M2RGcmFtZSgpKX1mdW5jdGlvbiBlKCl7dGhpcy5jaGFydDNkfHwodGhpcy5jaGFydDNkPW5ldyBMKHRoaXMpKX1mdW5jdGlvbiBsKGEpe3JldHVybiB0aGlzLmlzM2QoKXx8YS5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX1mdW5jdGlvbiB3KGEpe3ZhciBjPXRoaXMuc2VyaWVzLmxlbmd0aDtpZih0aGlzLmlzM2QoKSlmb3IoO2MtLTspYT10aGlzLnNlcmllc1tjXSxhLnRyYW5zbGF0ZSgpLGEucmVuZGVyKCk7ZWxzZSBhLmNhbGwodGhpcyl9ZnVuY3Rpb24gdChhKXthLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpO3RoaXMuaXMzZCgpJiYodGhpcy5jb250YWluZXIuY2xhc3NOYW1lKz0iIGhpZ2hjaGFydHMtM2QtY2hhcnQiKX12YXIgTD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dGhpcy5mcmFtZTNkPQp2b2lkIDA7dGhpcy5jaGFydD1hfWEucHJvdG90eXBlLmdldDNkRnJhbWU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LGM9YS5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZCxiPWMuZnJhbWUsZT1hLnBsb3RMZWZ0LGg9YS5wbG90TGVmdCthLnBsb3RXaWR0aCxmPWEucGxvdFRvcCxrPWEucGxvdFRvcCthLnBsb3RIZWlnaHQsZz1jLmRlcHRoLG09ZnVuY3Rpb24oYyl7Yz1kLnNoYXBlQXJlYTNkKGMsYSk7cmV0dXJuLjU8Yz8xOi0uNT5jPy0xOjB9LG49bShbe3g6ZSx5OmssejpnfSx7eDpoLHk6ayx6Omd9LHt4OmgseTprLHo6MH0se3g6ZSx5OmssejowfV0pLHE9bShbe3g6ZSx5OmYsejowfSx7eDpoLHk6Zix6OjB9LHt4OmgseTpmLHo6Z30se3g6ZSx5OmYsejpnfV0pLGw9bShbe3g6ZSx5OmYsejowfSx7eDplLHk6Zix6Omd9LHt4OmUseTprLHo6Z30se3g6ZSx5OmssejowfV0pLHI9bShbe3g6aCx5OmYsejpnfSx7eDpoLHk6Zix6OjB9LHt4OmgseTprLHo6MH0se3g6aCx5OmssejpnfV0pLAp4PW0oW3t4OmUseTprLHo6MH0se3g6aCx5OmssejowfSx7eDpoLHk6Zix6OjB9LHt4OmUseTpmLHo6MH1dKTttPW0oW3t4OmUseTpmLHo6Z30se3g6aCx5OmYsejpnfSx7eDpoLHk6ayx6Omd9LHt4OmUseTprLHo6Z31dKTt2YXIgdT0hMSx3PSExLHQ9ITEsRD0hMTtbXS5jb25jYXQoYS54QXhpcyxhLnlBeGlzLGEuekF4aXMpLmZvckVhY2goZnVuY3Rpb24oYSl7YSYmKGEuaG9yaXo/YS5vcHBvc2l0ZT93PSEwOnU9ITA6YS5vcHBvc2l0ZT9EPSEwOnQ9ITApfSk7dmFyIEo9ZnVuY3Rpb24oYSxjLGIpe2Zvcih2YXIgZD1bInNpemUiLCJjb2xvciIsInZpc2libGUiXSxlPXt9LGg9MDtoPGQubGVuZ3RoO2grKylmb3IodmFyIGY9ZFtoXSxrPTA7azxhLmxlbmd0aDtrKyspaWYoIm9iamVjdCI9PT10eXBlb2YgYVtrXSl7dmFyIGc9YVtrXVtmXTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBnJiZudWxsIT09Zyl7ZVtmXT1nO2JyZWFrfX1hPWI7ITA9PT1lLnZpc2libGV8fCExPT09ZS52aXNpYmxlPwphPWUudmlzaWJsZToiYXV0byI9PT1lLnZpc2libGUmJihhPTA8Yyk7cmV0dXJue3NpemU6cChlLnNpemUsMSksY29sb3I6cChlLmNvbG9yLCJub25lIiksZnJvbnRGYWNpbmc6MDxjLHZpc2libGU6YX19O2I9e2F4ZXM6e30sYm90dG9tOkooW2IuYm90dG9tLGIudG9wLGJdLG4sdSksdG9wOkooW2IudG9wLGIuYm90dG9tLGJdLHEsdyksbGVmdDpKKFtiLmxlZnQsYi5yaWdodCxiLnNpZGUsYl0sbCx0KSxyaWdodDpKKFtiLnJpZ2h0LGIubGVmdCxiLnNpZGUsYl0scixEKSxiYWNrOkooW2IuYmFjayxiLmZyb250LGJdLG0sITApLGZyb250OkooW2IuZnJvbnQsYi5iYWNrLGJdLHgsITEpfTsiYXV0byI9PT1jLmF4aXNMYWJlbFBvc2l0aW9uPyhyPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGEudmlzaWJsZSE9PWMudmlzaWJsZXx8YS52aXNpYmxlJiZjLnZpc2libGUmJmEuZnJvbnRGYWNpbmchPT1jLmZyb250RmFjaW5nfSxjPVtdLHIoYi5sZWZ0LGIuZnJvbnQpJiZjLnB1c2goe3k6KGYraykvCjIseDplLHo6MCx4RGlyOnt4OjEseTowLHo6MH19KSxyKGIubGVmdCxiLmJhY2spJiZjLnB1c2goe3k6KGYraykvMix4OmUsejpnLHhEaXI6e3g6MCx5OjAsejotMX19KSxyKGIucmlnaHQsYi5mcm9udCkmJmMucHVzaCh7eTooZitrKS8yLHg6aCx6OjAseERpcjp7eDowLHk6MCx6OjF9fSkscihiLnJpZ2h0LGIuYmFjaykmJmMucHVzaCh7eTooZitrKS8yLHg6aCx6OmcseERpcjp7eDotMSx5OjAsejowfX0pLG49W10scihiLmJvdHRvbSxiLmZyb250KSYmbi5wdXNoKHt4OihlK2gpLzIseTprLHo6MCx4RGlyOnt4OjEseTowLHo6MH19KSxyKGIuYm90dG9tLGIuYmFjaykmJm4ucHVzaCh7eDooZStoKS8yLHk6ayx6OmcseERpcjp7eDotMSx5OjAsejowfX0pLHE9W10scihiLnRvcCxiLmZyb250KSYmcS5wdXNoKHt4OihlK2gpLzIseTpmLHo6MCx4RGlyOnt4OjEseTowLHo6MH19KSxyKGIudG9wLGIuYmFjaykmJnEucHVzaCh7eDooZStoKS8yLHk6Zix6OmcseERpcjp7eDotMSx5OjAsejowfX0pLApsPVtdLHIoYi5ib3R0b20sYi5sZWZ0KSYmbC5wdXNoKHt6OigwK2cpLzIseTprLHg6ZSx4RGlyOnt4OjAseTowLHo6LTF9fSkscihiLmJvdHRvbSxiLnJpZ2h0KSYmbC5wdXNoKHt6OigwK2cpLzIseTprLHg6aCx4RGlyOnt4OjAseTowLHo6MX19KSxrPVtdLHIoYi50b3AsYi5sZWZ0KSYmay5wdXNoKHt6OigwK2cpLzIseTpmLHg6ZSx4RGlyOnt4OjAseTowLHo6LTF9fSkscihiLnRvcCxiLnJpZ2h0KSYmay5wdXNoKHt6OigwK2cpLzIseTpmLHg6aCx4RGlyOnt4OjAseTowLHo6MX19KSxlPWZ1bmN0aW9uKGMsYixkKXtpZigwPT09Yy5sZW5ndGgpcmV0dXJuIG51bGw7aWYoMT09PWMubGVuZ3RoKXJldHVybiBjWzBdO2Zvcih2YXIgZT0wLGg9eShjLGEsITEpLGY9MTtmPGgubGVuZ3RoO2YrKylkKmhbZl1bYl0+ZCpoW2VdW2JdP2U9ZjpkKmhbZl1bYl09PT1kKmhbZV1bYl0mJmhbZl0uejxoW2VdLnomJihlPWYpO3JldHVybiBjW2VdfSxiLmF4ZXM9e3k6e2xlZnQ6ZShjLCJ4IiwtMSksCnJpZ2h0OmUoYywieCIsMSl9LHg6e3RvcDplKHEsInkiLC0xKSxib3R0b206ZShuLCJ5IiwxKX0sejp7dG9wOmUoaywieSIsLTEpLGJvdHRvbTplKGwsInkiLDEpfX0pOmIuYXhlcz17eTp7bGVmdDp7eDplLHo6MCx4RGlyOnt4OjEseTowLHo6MH19LHJpZ2h0Ont4OmgsejowLHhEaXI6e3g6MCx5OjAsejoxfX19LHg6e3RvcDp7eTpmLHo6MCx4RGlyOnt4OjEseTowLHo6MH19LGJvdHRvbTp7eTprLHo6MCx4RGlyOnt4OjEseTowLHo6MH19fSx6Ont0b3A6e3g6dD9oOmUseTpmLHhEaXI6dD97eDowLHk6MCx6OjF9Ont4OjAseTowLHo6LTF9fSxib3R0b206e3g6dD9oOmUseTprLHhEaXI6dD97eDowLHk6MCx6OjF9Ont4OjAseTowLHo6LTF9fX19O3JldHVybiBifTthLnByb3RvdHlwZS5nZXRTY2FsZT1mdW5jdGlvbihhKXt2YXIgYz10aGlzLmNoYXJ0LGI9Yy5wbG90TGVmdCxkPWMucGxvdFdpZHRoK2IsZT1jLnBsb3RUb3AsaD1jLnBsb3RIZWlnaHQrZSxmPWIrYy5wbG90V2lkdGgvMiwKaz1lK2MucGxvdEhlaWdodC8yLGc9TnVtYmVyLk1BWF9WQUxVRSxtPS1OdW1iZXIuTUFYX1ZBTFVFLG49TnVtYmVyLk1BWF9WQUxVRSxxPS1OdW1iZXIuTUFYX1ZBTFVFLGw9MTt2YXIgcD1be3g6Yix5OmUsejowfSx7eDpiLHk6ZSx6OmF9XTtbMCwxXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3AucHVzaCh7eDpkLHk6cFthXS55LHo6cFthXS56fSl9KTtbMCwxLDIsM10uZm9yRWFjaChmdW5jdGlvbihhKXtwLnB1c2goe3g6cFthXS54LHk6aCx6OnBbYV0uen0pfSk7cD15KHAsYywhMSk7cC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2c9TWF0aC5taW4oZyxhLngpO209TWF0aC5tYXgobSxhLngpO249TWF0aC5taW4obixhLnkpO3E9TWF0aC5tYXgocSxhLnkpfSk7Yj5nJiYobD1NYXRoLm1pbihsLDEtTWF0aC5hYnMoKGIrZikvKGcrZikpJTEpKTtkPG0mJihsPU1hdGgubWluKGwsKGQtZikvKG0tZikpKTtlPm4mJihsPTA+bj9NYXRoLm1pbihsLChlK2spLygtbitlK2spKTpNYXRoLm1pbihsLDEtCihlK2spLyhuK2spJTEpKTtoPHEmJihsPU1hdGgubWluKGwsTWF0aC5hYnMoKGgtaykvKHEtaykpKSk7cmV0dXJuIGx9O3JldHVybiBhfSgpO2EuQ29tcG9zaXRpb249TDthLmRlZmF1bHRPcHRpb25zPXtjaGFydDp7b3B0aW9uczNkOntlbmFibGVkOiExLGFscGhhOjAsYmV0YTowLGRlcHRoOjEwMCxmaXRUb1Bsb3Q6ITAsdmlld0Rpc3RhbmNlOjI1LGF4aXNMYWJlbFBvc2l0aW9uOm51bGwsZnJhbWU6e3Zpc2libGU6ImRlZmF1bHQiLHNpemU6MSxib3R0b206e30sdG9wOnt9LGxlZnQ6e30scmlnaHQ6e30sYmFjazp7fSxmcm9udDp7fX19fX07YS5jb21wb3NlPWZ1bmN0aW9uKHAseSl7dmFyIHI9cC5wcm90b3R5cGU7eT15LnByb3RvdHlwZTtyLmlzM2Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZCYmdGhpcy5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZC5lbmFibGVkfTtyLnByb3BzUmVxdWlyZURpcnR5Qm94LnB1c2goImNoYXJ0Lm9wdGlvbnMzZCIpOwpyLnByb3BzUmVxdWlyZVVwZGF0ZVNlcmllcy5wdXNoKCJjaGFydC5vcHRpb25zM2QiKTt5Lm1hdHJpeFNldHRlcj1mdW5jdGlvbigpe2lmKDE+dGhpcy5wb3MmJih1KHRoaXMuc3RhcnQpfHx1KHRoaXMuZW5kKSkpe3ZhciBhPXRoaXMuc3RhcnR8fFsxLDAsMCwxLDAsMF0sYz10aGlzLmVuZHx8WzEsMCwwLDEsMCwwXTt2YXIgYj1bXTtmb3IodmFyIGQ9MDs2PmQ7ZCsrKWIucHVzaCh0aGlzLnBvcypjW2RdKygxLXRoaXMucG9zKSphW2RdKX1lbHNlIGI9dGhpcy5lbmQ7dGhpcy5lbGVtLmF0dHIodGhpcy5wcm9wLGIsbnVsbCwhMCl9O2coITAsRCxhLmRlZmF1bHRPcHRpb25zKTttKHAsImluaXQiLGUpO20ocCwiYWRkU2VyaWVzIixiKTttKHAsImFmdGVyRHJhd0NoYXJ0Qm94IixjKTttKHAsImFmdGVyR2V0Q29udGFpbmVyIixoKTttKHAsImFmdGVySW5pdCIsayk7bShwLCJhZnRlclNldENoYXJ0U2l6ZSIsbik7bShwLCJiZWZvcmVSZWRyYXciLGYpO20ocCwiYmVmb3JlUmVuZGVyIiwKcSk7RShkLkNoYXJ0LnByb3RvdHlwZSwiaXNJbnNpZGVQbG90IixsKTtFKHAsInJlbmRlclNlcmllcyIsdyk7RShwLCJzZXRDbGFzc05hbWUiLHQpfX0pKGF8fChhPXt9KSk7YS5jb21wb3NlKGwsdyk7cS5aQ2hhcnRDb21wb3NpdGlvbi5jb21wb3NlKGwpO3QuY29tcG9zZShiKTsiIjtyZXR1cm4gYX0pO0YoYiwicGFydHMtM2QvU2VyaWVzLmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLHQpe3ZhciBsPXQuYWRkRXZlbnQsZD10LnBpY2ssdz1iLnBlcnNwZWN0aXZlO2woYi5TZXJpZXMsImFmdGVyVHJhbnNsYXRlIixmdW5jdGlvbigpe3RoaXMuY2hhcnQuaXMzZCgpJiZ0aGlzLnRyYW5zbGF0ZTNkUG9pbnRzKCl9KTtiLlNlcmllcy5wcm90b3R5cGUudHJhbnNsYXRlM2RQb2ludHM9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmNoYXJ0LGw9ZCh0aGlzLnpBeGlzLGIub3B0aW9ucy56QXhpc1swXSksdD1bXSxtO2ZvcihtPTA7bTwKdGhpcy5kYXRhLmxlbmd0aDttKyspe3ZhciB1PXRoaXMuZGF0YVttXTtpZihsJiZsLnRyYW5zbGF0ZSl7dmFyIGc9bC5sb2dhcml0aG1pYyYmbC52YWwybGluP2wudmFsMmxpbih1LnopOnUuejt1LnBsb3RaPWwudHJhbnNsYXRlKGcpO3UuaXNJbnNpZGU9dS5pc0luc2lkZT9nPj1sLm1pbiYmZzw9bC5tYXg6ITF9ZWxzZSB1LnBsb3RaPTA7dS5heGlzWHBvcz11LnBsb3RYO3UuYXhpc1lwb3M9dS5wbG90WTt1LmF4aXNacG9zPXUucGxvdFo7dC5wdXNoKHt4OnUucGxvdFgseTp1LnBsb3RZLHo6dS5wbG90Wn0pfWI9dyh0LGIsITApO2ZvcihtPTA7bTx0aGlzLmRhdGEubGVuZ3RoO20rKyl1PXRoaXMuZGF0YVttXSxsPWJbbV0sdS5wbG90WD1sLngsdS5wbG90WT1sLnksdS5wbG90Wj1sLnp9fSk7RihiLCJwYXJ0cy0zZC9Db2x1bW4uanMiLFtiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsicGFydHMvU3RhY2tpbmcuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYix0LApsKXtmdW5jdGlvbiBkKGIsYSl7dmFyIGQ9Yi5zZXJpZXMsZz17fSxjLGg9MTtkLmZvckVhY2goZnVuY3Rpb24oYil7Yz1tKGIub3B0aW9ucy5zdGFjayxhPzA6ZC5sZW5ndGgtMS1iLmluZGV4KTtnW2NdP2dbY10uc2VyaWVzLnB1c2goYik6KGdbY109e3NlcmllczpbYl0scG9zaXRpb246aH0saCsrKX0pO2cudG90YWxTdGFja3M9aCsxO3JldHVybiBnfWZ1bmN0aW9uIHcoYil7dmFyIGE9Yi5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTt0aGlzLmNoYXJ0LmlzM2QmJnRoaXMuY2hhcnQuaXMzZCgpJiYoYS5zdHJva2U9dGhpcy5vcHRpb25zLmVkZ2VDb2xvcnx8YS5maWxsLGFbInN0cm9rZS13aWR0aCJdPW0odGhpcy5vcHRpb25zLmVkZ2VXaWR0aCwxKSk7cmV0dXJuIGF9ZnVuY3Rpb24gbihiLGEsZCl7dmFyIGs9dGhpcy5jaGFydC5pczNkJiZ0aGlzLmNoYXJ0LmlzM2QoKTtrJiYodGhpcy5vcHRpb25zLmluYWN0aXZlT3RoZXJQb2ludHM9ITApO2IuY2FsbCh0aGlzLAphLGQpO2smJih0aGlzLm9wdGlvbnMuaW5hY3RpdmVPdGhlclBvaW50cz0hMSl9ZnVuY3Rpb24gcShiKXtmb3IodmFyIGE9W10sZD0xO2Q8YXJndW1lbnRzLmxlbmd0aDtkKyspYVtkLTFdPWFyZ3VtZW50c1tkXTtyZXR1cm4gdGhpcy5zZXJpZXMuY2hhcnQuaXMzZCgpP3RoaXMuZ3JhcGhpYyYmImciIT09dGhpcy5ncmFwaGljLmVsZW1lbnQubm9kZU5hbWU6Yi5hcHBseSh0aGlzLGEpfXZhciBEPWwuYWRkRXZlbnQsbT1sLnBpY2s7bD1sLndyYXA7dmFyIHU9Yi5wZXJzcGVjdGl2ZSxnPWIuU2VyaWVzLHA9Yi5zZXJpZXNUeXBlcyxFPWIuc3ZnO2wocC5jb2x1bW4ucHJvdG90eXBlLCJ0cmFuc2xhdGUiLGZ1bmN0aW9uKGIpe2IuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7dGhpcy5jaGFydC5pczNkKCkmJnRoaXMudHJhbnNsYXRlM2RTaGFwZXMoKX0pO2woYi5TZXJpZXMucHJvdG90eXBlLCJqdXN0aWZ5RGF0YUxhYmVsIixmdW5jdGlvbihiKXtyZXR1cm4gYXJndW1lbnRzWzJdLm91dHNpZGUzZFBsb3Q/CiExOmIuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTtwLmNvbHVtbi5wcm90b3R5cGUudHJhbnNsYXRlM2RQb2ludHM9ZnVuY3Rpb24oKXt9O3AuY29sdW1uLnByb3RvdHlwZS50cmFuc2xhdGUzZFNoYXBlcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMsYT1iLmNoYXJ0LGQ9Yi5vcHRpb25zLGc9ZC5kZXB0aCxjPShkLnN0YWNraW5nP2Quc3RhY2t8fDA6Yi5pbmRleCkqKGcrKGQuZ3JvdXBaUGFkZGluZ3x8MSkpLGg9Yi5ib3JkZXJXaWR0aCUyPy41OjAsbDthLmludmVydGVkJiYhYi55QXhpcy5yZXZlcnNlZCYmKGgqPS0xKTshMSE9PWQuZ3JvdXBpbmcmJihjPTApO2MrPWQuZ3JvdXBaUGFkZGluZ3x8MTtiLmRhdGEuZm9yRWFjaChmdW5jdGlvbihkKXtkLm91dHNpZGUzZFBsb3Q9bnVsbDtpZihudWxsIT09ZC55KXt2YXIgZj1kLnNoYXBlQXJncyxrPWQudG9vbHRpcFBvcyxlO1tbIngiLCJ3aWR0aCJdLFsieSIsImhlaWdodCJdXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2U9CmZbYVswXV0taDswPmUmJihmW2FbMV1dKz1mW2FbMF1dK2gsZlthWzBdXT0taCxlPTApO2UrZlthWzFdXT5iW2FbMF0rIkF4aXMiXS5sZW4mJjAhPT1mW2FbMV1dJiYoZlthWzFdXT1iW2FbMF0rIkF4aXMiXS5sZW4tZlthWzBdXSk7aWYoMCE9PWZbYVsxXV0mJihmW2FbMF1dPj1iW2FbMF0rIkF4aXMiXS5sZW58fGZbYVswXV0rZlthWzFdXTw9aCkpe2Zvcih2YXIgYyBpbiBmKWZbY109MDtkLm91dHNpZGUzZFBsb3Q9ITB9fSk7InJlY3QiPT09ZC5zaGFwZVR5cGUmJihkLnNoYXBlVHlwZT0iY3Vib2lkIik7Zi56PWM7Zi5kZXB0aD1nO2YuaW5zaWRlUGxvdEFyZWE9ITA7bD17eDpmLngrZi53aWR0aC8yLHk6Zi55LHo6YytnLzJ9O2EuaW52ZXJ0ZWQmJihsLng9Zi5oZWlnaHQsbC55PWQuY2xpZW50WCk7ZC5wbG90M2Q9dShbbF0sYSwhMCwhMSlbMF07az11KFt7eDprWzBdLHk6a1sxXSx6OmMrZy8yfV0sYSwhMCwhMSlbMF07ZC50b29sdGlwUG9zPVtrLngsay55XX19KTtiLno9Y307bChwLmNvbHVtbi5wcm90b3R5cGUsCiJhbmltYXRlIixmdW5jdGlvbihiKXtpZih0aGlzLmNoYXJ0LmlzM2QoKSl7dmFyIGE9YXJndW1lbnRzWzFdLGQ9dGhpcy55QXhpcyxnPXRoaXMsYz10aGlzLnlBeGlzLnJldmVyc2VkO0UmJihhP2cuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe251bGwhPT1hLnkmJihhLmhlaWdodD1hLnNoYXBlQXJncy5oZWlnaHQsYS5zaGFwZXk9YS5zaGFwZUFyZ3MueSxhLnNoYXBlQXJncy5oZWlnaHQ9MSxjfHwoYS5zaGFwZUFyZ3MueT1hLnN0YWNrWT9hLnBsb3RZK2QudHJhbnNsYXRlKGEuc3RhY2tZKTphLnBsb3RZKyhhLm5lZ2F0aXZlPy1hLmhlaWdodDphLmhlaWdodCkpKX0pOihnLmRhdGEuZm9yRWFjaChmdW5jdGlvbihhKXtudWxsIT09YS55JiYoYS5zaGFwZUFyZ3MuaGVpZ2h0PWEuaGVpZ2h0LGEuc2hhcGVBcmdzLnk9YS5zaGFwZXksYS5ncmFwaGljJiZhLmdyYXBoaWMuYW5pbWF0ZShhLnNoYXBlQXJncyxnLm9wdGlvbnMuYW5pbWF0aW9uKSl9KSx0aGlzLmRyYXdEYXRhTGFiZWxzKCkpKX1lbHNlIGIuYXBwbHkodGhpcywKW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSk7bChwLmNvbHVtbi5wcm90b3R5cGUsInBsb3RHcm91cCIsZnVuY3Rpb24oYixhLGQsZyxjLGgpeyJkYXRhTGFiZWxzR3JvdXAiIT09YSYmdGhpcy5jaGFydC5pczNkKCkmJih0aGlzW2FdJiZkZWxldGUgdGhpc1thXSxoJiYodGhpcy5jaGFydC5jb2x1bW5Hcm91cHx8KHRoaXMuY2hhcnQuY29sdW1uR3JvdXA9dGhpcy5jaGFydC5yZW5kZXJlci5nKCJjb2x1bW5Hcm91cCIpLmFkZChoKSksdGhpc1thXT10aGlzLmNoYXJ0LmNvbHVtbkdyb3VwLHRoaXMuY2hhcnQuY29sdW1uR3JvdXAuYXR0cih0aGlzLmdldFBsb3RCb3goKSksdGhpc1thXS5zdXJ2aXZlPSEwLCJncm91cCI9PT1hfHwibWFya2VyR3JvdXAiPT09YSkpJiYoYXJndW1lbnRzWzNdPSJ2aXNpYmxlIik7cmV0dXJuIGIuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSk7bChwLmNvbHVtbi5wcm90b3R5cGUsInNldFZpc2libGUiLApmdW5jdGlvbihiLGEpe3ZhciBkPXRoaXMsZztkLmNoYXJ0LmlzM2QoKSYmZC5kYXRhLmZvckVhY2goZnVuY3Rpb24oYil7Zz0oYi52aXNpYmxlPWIub3B0aW9ucy52aXNpYmxlPWE9InVuZGVmaW5lZCI9PT10eXBlb2YgYT8hbShkLnZpc2libGUsYi52aXNpYmxlKTphKT8idmlzaWJsZSI6ImhpZGRlbiI7ZC5vcHRpb25zLmRhdGFbZC5kYXRhLmluZGV4T2YoYildPWIub3B0aW9ucztiLmdyYXBoaWMmJmIuZ3JhcGhpYy5hdHRyKHt2aXNpYmlsaXR5Omd9KX0pO2IuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSk7cC5jb2x1bW4ucHJvdG90eXBlLmhhbmRsZTNkR3JvdXBpbmc9ITA7RChnLCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7aWYodGhpcy5jaGFydC5pczNkKCkmJnRoaXMuaGFuZGxlM2RHcm91cGluZyl7dmFyIGI9dGhpcy5vcHRpb25zLGE9Yi5ncm91cGluZyxnPWIuc3RhY2tpbmcsbD1tKHRoaXMueUF4aXMub3B0aW9ucy5yZXZlcnNlZFN0YWNrcywKITApLGM9MDtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBhfHxhKXthPWQodGhpcy5jaGFydCxnKTtjPWIuc3RhY2t8fDA7Zm9yKGc9MDtnPGFbY10uc2VyaWVzLmxlbmd0aCYmYVtjXS5zZXJpZXNbZ10hPT10aGlzO2crKyk7Yz0xMCooYS50b3RhbFN0YWNrcy1hW2NdLnBvc2l0aW9uKSsobD9nOi1nKTt0aGlzLnhBeGlzLnJldmVyc2VkfHwoYz0xMCphLnRvdGFsU3RhY2tzLWMpfWIuZGVwdGg9Yi5kZXB0aHx8MjU7dGhpcy56PXRoaXMuenx8MDtiLnpJbmRleD1jfX0pO2wocC5jb2x1bW4ucHJvdG90eXBlLCJwb2ludEF0dHJpYnMiLHcpO2wocC5jb2x1bW4ucHJvdG90eXBlLCJzZXRTdGF0ZSIsbik7bChwLmNvbHVtbi5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUsImhhc05ld1NoYXBlVHlwZSIscSk7cC5jb2x1bW5yYW5nZSYmKGwocC5jb2x1bW5yYW5nZS5wcm90b3R5cGUsInBvaW50QXR0cmlicyIsdyksbChwLmNvbHVtbnJhbmdlLnByb3RvdHlwZSwic2V0U3RhdGUiLG4pLApsKHAuY29sdW1ucmFuZ2UucHJvdG90eXBlLnBvaW50Q2xhc3MucHJvdG90eXBlLCJoYXNOZXdTaGFwZVR5cGUiLHEpLHAuY29sdW1ucmFuZ2UucHJvdG90eXBlLnBsb3RHcm91cD1wLmNvbHVtbi5wcm90b3R5cGUucGxvdEdyb3VwLHAuY29sdW1ucmFuZ2UucHJvdG90eXBlLnNldFZpc2libGU9cC5jb2x1bW4ucHJvdG90eXBlLnNldFZpc2libGUpO2woZy5wcm90b3R5cGUsImFsaWduRGF0YUxhYmVsIixmdW5jdGlvbihiLGEsZCxnLGMpe3ZhciBoPXRoaXMuY2hhcnQ7Zy5vdXRzaWRlM2RQbG90PWEub3V0c2lkZTNkUGxvdDtpZihoLmlzM2QoKSYmdGhpcy5pcygiY29sdW1uIikpe3ZhciBrPXRoaXMub3B0aW9ucyxsPW0oZy5pbnNpZGUsISF0aGlzLm9wdGlvbnMuc3RhY2tpbmcpLGY9aC5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZCxuPWEucG9pbnRXaWR0aC8yfHwwO2s9e3g6Yy54K24seTpjLnksejp0aGlzLnoray5kZXB0aC8yfTtoLmludmVydGVkJiYobCYmKGMud2lkdGg9MCxrLngrPQphLnNoYXBlQXJncy5oZWlnaHQvMiksOTA8PWYuYWxwaGEmJjI3MD49Zi5hbHBoYSYmKGsueSs9YS5zaGFwZUFyZ3Mud2lkdGgpKTtrPXUoW2tdLGgsITAsITEpWzBdO2MueD1rLngtbjtjLnk9YS5vdXRzaWRlM2RQbG90Py05RTk6ay55fWIuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTtsKHQucHJvdG90eXBlLCJnZXRTdGFja0JveCIsZnVuY3Rpb24oYixhLGQsZyxjLGgsbCxtKXt2YXIgZj1iLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpO2lmKGEuaXMzZCgpJiZkLmJhc2Upe3ZhciBrPStkLmJhc2Uuc3BsaXQoIiwiKVswXSxlPWEuc2VyaWVzW2tdO2s9YS5vcHRpb25zLmNoYXJ0Lm9wdGlvbnMzZDtlJiZlIGluc3RhbmNlb2YgcC5jb2x1bW4mJihlPXt4OmYueCsoYS5pbnZlcnRlZD9sOmgvMikseTpmLnksejplLm9wdGlvbnMuZGVwdGgvMn0sYS5pbnZlcnRlZCYmKGYud2lkdGg9MCw5MDw9ay5hbHBoYSYmMjcwPj1rLmFscGhhJiYKKGUueSs9aCkpLGU9dShbZV0sYSwhMCwhMSlbMF0sZi54PWUueC1oLzIsZi55PWUueSl9cmV0dXJuIGZ9KX0pO0YoYiwicGFydHMtM2QvUGllLmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLHQpe3ZhciBsPXQucGljazt0PXQud3JhcDt2YXIgZD1iLmRlZzJyYWQsdz1iLnNlcmllc1R5cGVzLG49Yi5zdmc7dCh3LnBpZS5wcm90b3R5cGUsInRyYW5zbGF0ZSIsZnVuY3Rpb24oYil7Yi5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTtpZih0aGlzLmNoYXJ0LmlzM2QoKSl7dmFyIGw9dGhpcyxtPWwub3B0aW9ucyxuPW0uZGVwdGh8fDAsZz1sLmNoYXJ0Lm9wdGlvbnMuY2hhcnQub3B0aW9uczNkLHA9Zy5hbHBoYSxxPWcuYmV0YSx0PW0uc3RhY2tpbmc/KG0uc3RhY2t8fDApKm46bC5faSpuO3QrPW4vMjshMSE9PW0uZ3JvdXBpbmcmJih0PTApO2wuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPQphLnNoYXBlQXJnczthLnNoYXBlVHlwZT0iYXJjM2QiO2Iuej10O2IuZGVwdGg9Ljc1Km47Yi5hbHBoYT1wO2IuYmV0YT1xO2IuY2VudGVyPWwuY2VudGVyO2I9KGIuZW5kK2Iuc3RhcnQpLzI7YS5zbGljZWRUcmFuc2xhdGlvbj17dHJhbnNsYXRlWDpNYXRoLnJvdW5kKE1hdGguY29zKGIpKm0uc2xpY2VkT2Zmc2V0Kk1hdGguY29zKHAqZCkpLHRyYW5zbGF0ZVk6TWF0aC5yb3VuZChNYXRoLnNpbihiKSptLnNsaWNlZE9mZnNldCpNYXRoLmNvcyhwKmQpKX19KX19KTt0KHcucGllLnByb3RvdHlwZS5wb2ludENsYXNzLnByb3RvdHlwZSwiaGFsb1BhdGgiLGZ1bmN0aW9uKGIpe3ZhciBkPWFyZ3VtZW50cztyZXR1cm4gdGhpcy5zZXJpZXMuY2hhcnQuaXMzZCgpP1tdOmIuY2FsbCh0aGlzLGRbMV0pfSk7dCh3LnBpZS5wcm90b3R5cGUsInBvaW50QXR0cmlicyIsZnVuY3Rpb24oYixkLG0pe2I9Yi5jYWxsKHRoaXMsZCxtKTttPXRoaXMub3B0aW9uczt0aGlzLmNoYXJ0LmlzM2QoKSYmIXRoaXMuY2hhcnQuc3R5bGVkTW9kZSYmCihiLnN0cm9rZT1tLmVkZ2VDb2xvcnx8ZC5jb2xvcnx8dGhpcy5jb2xvcixiWyJzdHJva2Utd2lkdGgiXT1sKG0uZWRnZVdpZHRoLDEpKTtyZXR1cm4gYn0pO3Qody5waWUucHJvdG90eXBlLCJkcmF3RGF0YUxhYmVscyIsZnVuY3Rpb24oYil7aWYodGhpcy5jaGFydC5pczNkKCkpe3ZhciBsPXRoaXMuY2hhcnQub3B0aW9ucy5jaGFydC5vcHRpb25zM2Q7dGhpcy5kYXRhLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIG09Yi5zaGFwZUFyZ3MsZz1tLnIsbj0obS5zdGFydCttLmVuZCkvMjtiPWIubGFiZWxQb3NpdGlvbjt2YXIgcT1iLmNvbm5lY3RvclBvc2l0aW9uLHQ9LWcqKDEtTWF0aC5jb3MoKG0uYWxwaGF8fGwuYWxwaGEpKmQpKSpNYXRoLnNpbihuKSxhPWcqKE1hdGguY29zKChtLmJldGF8fGwuYmV0YSkqZCktMSkqTWF0aC5jb3Mobik7W2IubmF0dXJhbCxxLmJyZWFrQXQscS50b3VjaGluZ1NsaWNlQXRdLmZvckVhY2goZnVuY3Rpb24oYil7Yi54Kz1hO2IueSs9dH0pfSl9Yi5hcHBseSh0aGlzLApbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTt0KHcucGllLnByb3RvdHlwZSwiYWRkUG9pbnQiLGZ1bmN0aW9uKGIpe2IuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7dGhpcy5jaGFydC5pczNkKCkmJnRoaXMudXBkYXRlKHRoaXMudXNlck9wdGlvbnMsITApfSk7dCh3LnBpZS5wcm90b3R5cGUsImFuaW1hdGUiLGZ1bmN0aW9uKGIpe2lmKHRoaXMuY2hhcnQuaXMzZCgpKXt2YXIgZD1hcmd1bWVudHNbMV0sbT10aGlzLm9wdGlvbnMuYW5pbWF0aW9uLHE9dGhpcy5jZW50ZXIsZz10aGlzLmdyb3VwLHA9dGhpcy5tYXJrZXJHcm91cDtuJiYoITA9PT1tJiYobT17fSksZD8oZy5vbGR0cmFuc2xhdGVYPWwoZy5vbGR0cmFuc2xhdGVYLGcudHJhbnNsYXRlWCksZy5vbGR0cmFuc2xhdGVZPWwoZy5vbGR0cmFuc2xhdGVZLGcudHJhbnNsYXRlWSksZD17dHJhbnNsYXRlWDpxWzBdLHRyYW5zbGF0ZVk6cVsxXSxzY2FsZVg6LjAwMSxzY2FsZVk6LjAwMX0sZy5hdHRyKGQpLApwJiYocC5hdHRyU2V0dGVycz1nLmF0dHJTZXR0ZXJzLHAuYXR0cihkKSkpOihkPXt0cmFuc2xhdGVYOmcub2xkdHJhbnNsYXRlWCx0cmFuc2xhdGVZOmcub2xkdHJhbnNsYXRlWSxzY2FsZVg6MSxzY2FsZVk6MX0sZy5hbmltYXRlKGQsbSkscCYmcC5hbmltYXRlKGQsbSkpKX1lbHNlIGIuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KX0pO0YoYiwicGFydHMtM2QvU2NhdHRlci5qcyIsW2JbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9Qb2ludC5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLHQsbCl7bD1sLnNlcmllc1R5cGU7dmFyIGQ9Yi5zZXJpZXNUeXBlcztsKCJzY2F0dGVyM2QiLCJzY2F0dGVyIix7dG9vbHRpcDp7cG9pbnRGb3JtYXQ6Ing6IDxiPntwb2ludC54fTwvYj48YnIvPnk6IDxiPntwb2ludC55fTwvYj48YnIvPno6IDxiPntwb2ludC56fTwvYj48YnIvPiJ9fSx7cG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGwpe3ZhciBuPQpkLnNjYXR0ZXIucHJvdG90eXBlLnBvaW50QXR0cmlicy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5jaGFydC5pczNkKCkmJmwmJihuLnpJbmRleD1iLnBvaW50Q2FtZXJhRGlzdGFuY2UobCx0aGlzLmNoYXJ0KSk7cmV0dXJuIG59LGF4aXNUeXBlczpbInhBeGlzIiwieUF4aXMiLCJ6QXhpcyJdLHBvaW50QXJyYXlNYXA6WyJ4IiwieSIsInoiXSxwYXJhbGxlbEFycmF5czpbIngiLCJ5IiwieiJdLGRpcmVjdFRvdWNoOiEwfSx7YXBwbHlPcHRpb25zOmZ1bmN0aW9uKCl7dC5wcm90b3R5cGUuYXBwbHlPcHRpb25zLmFwcGx5KHRoaXMsYXJndW1lbnRzKTsidW5kZWZpbmVkIj09PXR5cGVvZiB0aGlzLnomJih0aGlzLno9MCk7cmV0dXJuIHRoaXN9fSk7IiJ9KTtGKGIsInBhcnRzLTNkL1ZNTEF4aXMzRC5qcyIsW2JbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiKXt2YXIgdD1iLmFkZEV2ZW50LGw9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oYil7dGhpcy5heGlzPWJ9fSgpOwpyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBiKCl7fWIuY29tcG9zZT1mdW5jdGlvbihkKXtkLmtlZXBQcm9wcy5wdXNoKCJ2bWwiKTt0KGQsImluaXQiLGIub25Jbml0KTt0KGQsInJlbmRlciIsYi5vblJlbmRlcil9O2Iub25Jbml0PWZ1bmN0aW9uKCl7dGhpcy52bWx8fCh0aGlzLnZtbD1uZXcgbCh0aGlzKSl9O2Iub25SZW5kZXI9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnZtbDtiLnNpZGVGcmFtZSYmKGIuc2lkZUZyYW1lLmNzcyh7ekluZGV4OjB9KSxiLnNpZGVGcmFtZS5mcm9udC5hdHRyKHtmaWxsOmIuc2lkZUZyYW1lLmNvbG9yfSkpO2IuYm90dG9tRnJhbWUmJihiLmJvdHRvbUZyYW1lLmNzcyh7ekluZGV4OjF9KSxiLmJvdHRvbUZyYW1lLmZyb250LmF0dHIoe2ZpbGw6Yi5ib3R0b21GcmFtZS5jb2xvcn0pKTtiLmJhY2tGcmFtZSYmKGIuYmFja0ZyYW1lLmNzcyh7ekluZGV4OjB9KSxiLmJhY2tGcmFtZS5mcm9udC5hdHRyKHtmaWxsOmIuYmFja0ZyYW1lLmNvbG9yfSkpfTsKcmV0dXJuIGJ9KCl9KTtGKGIsInBhcnRzLTNkL1ZNTFJlbmRlcmVyLmpzIixbYlsicGFydHMvQXhpcy5qcyJdLGJbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdLGJbInBhcnRzLTNkL1ZNTEF4aXMzRC5qcyJdXSxmdW5jdGlvbihiLHQsbCxkLHcpe2Q9ZC5zZXRPcHRpb25zO3ZhciBuPXQuVk1MUmVuZGVyZXI7biYmKGQoe2FuaW1hdGU6ITF9KSxuLnByb3RvdHlwZS5mYWNlM2Q9bC5wcm90b3R5cGUuZmFjZTNkLG4ucHJvdG90eXBlLnBvbHloZWRyb249bC5wcm90b3R5cGUucG9seWhlZHJvbixuLnByb3RvdHlwZS5lbGVtZW50czNkPWwucHJvdG90eXBlLmVsZW1lbnRzM2Qsbi5wcm90b3R5cGUuZWxlbWVudDNkPWwucHJvdG90eXBlLmVsZW1lbnQzZCxuLnByb3RvdHlwZS5jdWJvaWQ9bC5wcm90b3R5cGUuY3Vib2lkLG4ucHJvdG90eXBlLmN1Ym9pZFBhdGg9bC5wcm90b3R5cGUuY3Vib2lkUGF0aCxuLnByb3RvdHlwZS50b0xpbmVQYXRoPQpsLnByb3RvdHlwZS50b0xpbmVQYXRoLG4ucHJvdG90eXBlLnRvTGluZVNlZ21lbnRzPWwucHJvdG90eXBlLnRvTGluZVNlZ21lbnRzLG4ucHJvdG90eXBlLmFyYzNkPWZ1bmN0aW9uKGIpe2I9bC5wcm90b3R5cGUuYXJjM2QuY2FsbCh0aGlzLGIpO2IuY3NzKHt6SW5kZXg6Yi56SW5kZXh9KTtyZXR1cm4gYn0sdC5WTUxSZW5kZXJlci5wcm90b3R5cGUuYXJjM2RQYXRoPWwucHJvdG90eXBlLmFyYzNkUGF0aCx3LmNvbXBvc2UoYikpfSk7RihiLCJtYXN0ZXJzL2hpZ2hjaGFydHMtM2Quc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWhpZ2hjaGFydHMtM2QuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDA5LTIwMTggVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oZil7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oZlsiZGVmYXVsdCJdPWYsbW9kdWxlLmV4cG9ydHM9Zik6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL2hpZ2hjaGFydHMtbW9yZSIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oQyl7ZihDKTtmLkhpZ2hjaGFydHM9QztyZXR1cm4gZn0pOmYoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihmKXtmdW5jdGlvbiBDKGYsYSxiLGUpe2YuaGFzT3duUHJvcGVydHkoYSl8fChmW2FdPWUuYXBwbHkobnVsbCxiKSl9Zj1mP2YuX21vZHVsZXM6e307QyhmLCJwYXJ0cy1tb3JlL1BhbmUuanMiLFtmWyJwYXJ0cy9DaGFydC5qcyJdLGZbInBhcnRzL0dsb2JhbHMuanMiXSxmWyJwYXJ0cy9Qb2ludGVyLmpzIl0sZlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGYsYSxiLGUpe2Z1bmN0aW9uIGgobCwKYyxwKXtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KGwtcFswXSwyKStNYXRoLnBvdyhjLXBbMV0sMikpPHBbMl0vMn12YXIgcT1lLmFkZEV2ZW50LHQ9ZS5leHRlbmQseD1lLm1lcmdlLEI9ZS5waWNrLHo9ZS5zcGxhdCxjPWEuQ2VudGVyZWRTZXJpZXNNaXhpbjtmLnByb3RvdHlwZS5jb2xsZWN0aW9uc1dpdGhVcGRhdGUucHVzaCgicGFuZSIpO2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGwsYyl7dGhpcy5vcHRpb25zPXRoaXMuY2hhcnQ9dGhpcy5jZW50ZXI9dGhpcy5iYWNrZ3JvdW5kPXZvaWQgMDt0aGlzLmNvbGw9InBhbmUiO3RoaXMuZGVmYXVsdE9wdGlvbnM9e2NlbnRlcjpbIjUwJSIsIjUwJSJdLHNpemU6Ijg1JSIsaW5uZXJTaXplOiIwJSIsc3RhcnRBbmdsZTowfTt0aGlzLmRlZmF1bHRCYWNrZ3JvdW5kT3B0aW9ucz17c2hhcGU6ImNpcmNsZSIsYm9yZGVyV2lkdGg6MSxib3JkZXJDb2xvcjoiI2NjY2NjYyIsYmFja2dyb3VuZENvbG9yOntsaW5lYXJHcmFkaWVudDp7eDE6MCwKeTE6MCx4MjowLHkyOjF9LHN0b3BzOltbMCwiI2ZmZmZmZiJdLFsxLCIjZTZlNmU2Il1dfSxmcm9tOi1OdW1iZXIuTUFYX1ZBTFVFLGlubmVyUmFkaXVzOjAsdG86TnVtYmVyLk1BWF9WQUxVRSxvdXRlclJhZGl1czoiMTA1JSJ9O3RoaXMuaW5pdChsLGMpfWwucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24obCxjKXt0aGlzLmNoYXJ0PWM7dGhpcy5iYWNrZ3JvdW5kPVtdO2MucGFuZS5wdXNoKHRoaXMpO3RoaXMuc2V0T3B0aW9ucyhsKX07bC5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbihsKXt0aGlzLm9wdGlvbnM9eCh0aGlzLmRlZmF1bHRPcHRpb25zLHRoaXMuY2hhcnQuYW5ndWxhcj97YmFja2dyb3VuZDp7fX06dm9pZCAwLGwpfTtsLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgbD10aGlzLm9wdGlvbnMsYz10aGlzLm9wdGlvbnMuYmFja2dyb3VuZCxhPXRoaXMuY2hhcnQucmVuZGVyZXI7dGhpcy5ncm91cHx8KHRoaXMuZ3JvdXA9YS5nKCJwYW5lLWdyb3VwIikuYXR0cih7ekluZGV4OmwuekluZGV4fHwKMH0pLmFkZCgpKTt0aGlzLnVwZGF0ZUNlbnRlcigpO2lmKGMpZm9yKGM9eihjKSxsPU1hdGgubWF4KGMubGVuZ3RoLHRoaXMuYmFja2dyb3VuZC5sZW5ndGh8fDApLGE9MDthPGw7YSsrKWNbYV0mJnRoaXMuYXhpcz90aGlzLnJlbmRlckJhY2tncm91bmQoeCh0aGlzLmRlZmF1bHRCYWNrZ3JvdW5kT3B0aW9ucyxjW2FdKSxhKTp0aGlzLmJhY2tncm91bmRbYV0mJih0aGlzLmJhY2tncm91bmRbYV09dGhpcy5iYWNrZ3JvdW5kW2FdLmRlc3Ryb3koKSx0aGlzLmJhY2tncm91bmQuc3BsaWNlKGEsMSkpfTtsLnByb3RvdHlwZS5yZW5kZXJCYWNrZ3JvdW5kPWZ1bmN0aW9uKGwsYyl7dmFyIGE9ImFuaW1hdGUiLHA9eyJjbGFzcyI6ImhpZ2hjaGFydHMtcGFuZSAiKyhsLmNsYXNzTmFtZXx8IiIpfTt0aGlzLmNoYXJ0LnN0eWxlZE1vZGV8fHQocCx7ZmlsbDpsLmJhY2tncm91bmRDb2xvcixzdHJva2U6bC5ib3JkZXJDb2xvciwic3Ryb2tlLXdpZHRoIjpsLmJvcmRlcldpZHRofSk7dGhpcy5iYWNrZ3JvdW5kW2NdfHwKKHRoaXMuYmFja2dyb3VuZFtjXT10aGlzLmNoYXJ0LnJlbmRlcmVyLnBhdGgoKS5hZGQodGhpcy5ncm91cCksYT0iYXR0ciIpO3RoaXMuYmFja2dyb3VuZFtjXVthXSh7ZDp0aGlzLmF4aXMuZ2V0UGxvdEJhbmRQYXRoKGwuZnJvbSxsLnRvLGwpfSkuYXR0cihwKX07bC5wcm90b3R5cGUudXBkYXRlQ2VudGVyPWZ1bmN0aW9uKGwpe3RoaXMuY2VudGVyPShsfHx0aGlzLmF4aXN8fHt9KS5jZW50ZXI9Yy5nZXRDZW50ZXIuY2FsbCh0aGlzKX07bC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGwsYyl7eCghMCx0aGlzLm9wdGlvbnMsbCk7eCghMCx0aGlzLmNoYXJ0Lm9wdGlvbnMucGFuZSxsKTt0aGlzLnNldE9wdGlvbnModGhpcy5vcHRpb25zKTt0aGlzLnJlbmRlcigpO3RoaXMuY2hhcnQuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGwpe2wucGFuZT09PXRoaXMmJihsLnBhbmU9bnVsbCxsLnVwZGF0ZSh7fSxjKSl9LHRoaXMpfTtyZXR1cm4gbH0oKTthLkNoYXJ0LnByb3RvdHlwZS5nZXRIb3ZlclBhbmU9CmZ1bmN0aW9uKGwpe3ZhciBjPXRoaXMsYTtsJiZjLnBhbmUuZm9yRWFjaChmdW5jdGlvbihwKXt2YXIgZT1sLmNoYXJ0WC1jLnBsb3RMZWZ0LG09bC5jaGFydFktYy5wbG90VG9wO2goYy5pbnZlcnRlZD9tOmUsYy5pbnZlcnRlZD9lOm0scC5jZW50ZXIpJiYoYT1wKX0pO3JldHVybiBhfTtxKGYsImFmdGVySXNJbnNpZGVQbG90IixmdW5jdGlvbihsKXt0aGlzLnBvbGFyJiYobC5pc0luc2lkZVBsb3Q9dGhpcy5wYW5lLnNvbWUoZnVuY3Rpb24oYyl7cmV0dXJuIGgobC54LGwueSxjLmNlbnRlcil9KSl9KTtxKGIsImJlZm9yZUdldEhvdmVyRGF0YSIsZnVuY3Rpb24obCl7dmFyIGM9dGhpcy5jaGFydDtjLnBvbGFyJiYoYy5ob3ZlclBhbmU9Yy5nZXRIb3ZlclBhbmUobCksbC5maWx0ZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEudmlzaWJsZSYmISghbC5zaGFyZWQmJmEuZGlyZWN0VG91Y2gpJiZCKGEub3B0aW9ucy5lbmFibGVNb3VzZVRyYWNraW5nLCEwKSYmKCFjLmhvdmVyUGFuZXx8YS54QXhpcy5wYW5lPT09CmMuaG92ZXJQYW5lKX0pfSk7cShiLCJhZnRlckdldEhvdmVyRGF0YSIsZnVuY3Rpb24oYyl7dmFyIGw9dGhpcy5jaGFydDtjLmhvdmVyUG9pbnQmJmMuaG92ZXJQb2ludC5wbG90WCYmYy5ob3ZlclBvaW50LnBsb3RZJiZsLmhvdmVyUGFuZSYmIWgoYy5ob3ZlclBvaW50LnBsb3RYLGMuaG92ZXJQb2ludC5wbG90WSxsLmhvdmVyUGFuZS5jZW50ZXIpJiYoYy5ob3ZlclBvaW50PXZvaWQgMCl9KTthLlBhbmU9ZTtyZXR1cm4gYS5QYW5lfSk7QyhmLCJwYXJ0cy1tb3JlL0hpZGRlbkF4aXMuanMiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZigpe31mLmluaXQ9ZnVuY3Rpb24oYSl7YS5nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt9O2EucmVkcmF3PWZ1bmN0aW9uKCl7dGhpcy5pc0RpcnR5PSExfTthLnJlbmRlcj1mdW5jdGlvbigpe3RoaXMuaXNEaXJ0eT0hMX07YS5jcmVhdGVMYWJlbENvbGxlY3Rvcj1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbigpe319O2Euc2V0U2NhbGU9CmZ1bmN0aW9uKCl7fTthLnNldENhdGVnb3JpZXM9ZnVuY3Rpb24oKXt9O2Euc2V0VGl0bGU9ZnVuY3Rpb24oKXt9O2EuaXNIaWRkZW49ITB9O3JldHVybiBmfSgpfSk7QyhmLCJwYXJ0cy1tb3JlL1JhZGlhbEF4aXMuanMiLFtmWyJwYXJ0cy9BeGlzLmpzIl0sZlsicGFydHMvVGljay5qcyJdLGZbInBhcnRzLW1vcmUvSGlkZGVuQXhpcy5qcyJdLGZbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihmLGEsYixlKXt2YXIgaD1lLmFkZEV2ZW50LHE9ZS5jb3JyZWN0RmxvYXQsdD1lLmRlZmluZWQseD1lLmV4dGVuZCxCPWUuZmlyZUV2ZW50LHo9ZS5tZXJnZSxjPWUucGljayxsPWUucmVsYXRpdmVMZW5ndGgsdz1lLndyYXA7ZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt9YS5pbml0PWZ1bmN0aW9uKGEpe3ZhciBoPWYucHJvdG90eXBlO2Euc2V0T3B0aW9ucz1mdW5jdGlvbihtKXttPXRoaXMub3B0aW9ucz16KGEuY29uc3RydWN0b3IuZGVmYXVsdE9wdGlvbnMsdGhpcy5kZWZhdWx0UG9sYXJPcHRpb25zLAptKTttLnBsb3RCYW5kc3x8KG0ucGxvdEJhbmRzPVtdKTtCKHRoaXMsImFmdGVyU2V0T3B0aW9ucyIpfTthLmdldE9mZnNldD1mdW5jdGlvbigpe2guZ2V0T2Zmc2V0LmNhbGwodGhpcyk7dGhpcy5jaGFydC5heGlzT2Zmc2V0W3RoaXMuc2lkZV09MH07YS5nZXRMaW5lUGF0aD1mdW5jdGlvbihtLG4sZCl7bT10aGlzLnBhbmUuY2VudGVyO3ZhciBnPXRoaXMuY2hhcnQsaz1jKG4sbVsyXS8yLXRoaXMub2Zmc2V0KTsidW5kZWZpbmVkIj09PXR5cGVvZiBkJiYoZD10aGlzLmhvcml6PzA6dGhpcy5jZW50ZXImJi10aGlzLmNlbnRlclszXS8yKTtkJiYoays9ZCk7dGhpcy5pc0NpcmN1bGFyfHwidW5kZWZpbmVkIiE9PXR5cGVvZiBuPyhuPXRoaXMuY2hhcnQucmVuZGVyZXIuc3ltYm9scy5hcmModGhpcy5sZWZ0K21bMF0sdGhpcy50b3ArbVsxXSxrLGsse3N0YXJ0OnRoaXMuc3RhcnRBbmdsZVJhZCxlbmQ6dGhpcy5lbmRBbmdsZVJhZCxvcGVuOiEwLGlubmVyUjowfSksbi54Qm91bmRzPVt0aGlzLmxlZnQrCm1bMF1dLG4ueUJvdW5kcz1bdGhpcy50b3ArbVsxXS1rXSk6KG49dGhpcy5wb3N0VHJhbnNsYXRlKHRoaXMuYW5nbGVSYWQsayksbj1bWyJNIix0aGlzLmNlbnRlclswXStnLnBsb3RMZWZ0LHRoaXMuY2VudGVyWzFdK2cucGxvdFRvcF0sWyJMIixuLngsbi55XV0pO3JldHVybiBufTthLnNldEF4aXNUcmFuc2xhdGlvbj1mdW5jdGlvbigpe2guc2V0QXhpc1RyYW5zbGF0aW9uLmNhbGwodGhpcyk7dGhpcy5jZW50ZXImJih0aGlzLnRyYW5zQT10aGlzLmlzQ2lyY3VsYXI/KHRoaXMuZW5kQW5nbGVSYWQtdGhpcy5zdGFydEFuZ2xlUmFkKS8odGhpcy5tYXgtdGhpcy5taW58fDEpOih0aGlzLmNlbnRlclsyXS10aGlzLmNlbnRlclszXSkvMi8odGhpcy5tYXgtdGhpcy5taW58fDEpLHRoaXMubWluUGl4ZWxQYWRkaW5nPXRoaXMuaXNYQXhpcz90aGlzLnRyYW5zQSp0aGlzLm1pblBvaW50T2Zmc2V0OjApfTthLmJlZm9yZVNldFRpY2tQb3NpdGlvbnM9ZnVuY3Rpb24oKXt0aGlzLmF1dG9Db25uZWN0PQp0aGlzLmlzQ2lyY3VsYXImJiJ1bmRlZmluZWQiPT09dHlwZW9mIGModGhpcy51c2VyTWF4LHRoaXMub3B0aW9ucy5tYXgpJiZxKHRoaXMuZW5kQW5nbGVSYWQtdGhpcy5zdGFydEFuZ2xlUmFkKT09PXEoMipNYXRoLlBJKTshdGhpcy5pc0NpcmN1bGFyJiZ0aGlzLmNoYXJ0LmludmVydGVkJiZ0aGlzLm1heCsrO3RoaXMuYXV0b0Nvbm5lY3QmJih0aGlzLm1heCs9dGhpcy5jYXRlZ29yaWVzJiYxfHx0aGlzLnBvaW50UmFuZ2V8fHRoaXMuY2xvc2VzdFBvaW50UmFuZ2V8fDApfTthLnNldEF4aXNTaXplPWZ1bmN0aW9uKCl7aC5zZXRBeGlzU2l6ZS5jYWxsKHRoaXMpO2lmKHRoaXMuaXNSYWRpYWwpe3RoaXMucGFuZS51cGRhdGVDZW50ZXIodGhpcyk7dmFyIG09dGhpcy5jZW50ZXI9eChbXSx0aGlzLnBhbmUuY2VudGVyKTtpZih0aGlzLmlzQ2lyY3VsYXIpdGhpcy5zZWN0b3I9dGhpcy5lbmRBbmdsZVJhZC10aGlzLnN0YXJ0QW5nbGVSYWQ7ZWxzZXt2YXIgbj10aGlzLnBvc3RUcmFuc2xhdGUodGhpcy5hbmdsZVJhZCwKbVszXS8yKTttWzBdPW4ueC10aGlzLmNoYXJ0LnBsb3RMZWZ0O21bMV09bi55LXRoaXMuY2hhcnQucGxvdFRvcH10aGlzLmxlbj10aGlzLndpZHRoPXRoaXMuaGVpZ2h0PShtWzJdLW1bM10pKmModGhpcy5zZWN0b3IsMSkvMn19O2EuZ2V0UG9zaXRpb249ZnVuY3Rpb24obSxuKXttPXRoaXMudHJhbnNsYXRlKG0pO3JldHVybiB0aGlzLnBvc3RUcmFuc2xhdGUodGhpcy5pc0NpcmN1bGFyP206dGhpcy5hbmdsZVJhZCxjKHRoaXMuaXNDaXJjdWxhcj9uOjA+bT8wOm0sdGhpcy5jZW50ZXJbMl0vMiktdGhpcy5vZmZzZXQpfTthLnBvc3RUcmFuc2xhdGU9ZnVuY3Rpb24obSxuKXt2YXIgZD10aGlzLmNoYXJ0LGc9dGhpcy5jZW50ZXI7bT10aGlzLnN0YXJ0QW5nbGVSYWQrbTtyZXR1cm57eDpkLnBsb3RMZWZ0K2dbMF0rTWF0aC5jb3MobSkqbix5OmQucGxvdFRvcCtnWzFdK01hdGguc2luKG0pKm59fTthLmdldFBsb3RCYW5kUGF0aD1mdW5jdGlvbihtLG4sZCl7dmFyIGc9ZnVuY3Rpb24oZCl7aWYoInN0cmluZyI9PT0KdHlwZW9mIGQpe3ZhciBnPXBhcnNlSW50KGQsMTApO0QudGVzdChkKSYmKGc9ZypBLzEwMCk7cmV0dXJuIGd9cmV0dXJuIGR9LGs9dGhpcy5jZW50ZXIsdT10aGlzLnN0YXJ0QW5nbGVSYWQsQT1rWzJdLzIscj1NYXRoLm1pbih0aGlzLm9mZnNldCwwKSxEPS8lJC87dmFyIGw9dGhpcy5pc0NpcmN1bGFyO3ZhciBhPWMoZyhkLm91dGVyUmFkaXVzKSxBKSxoPWcoZC5pbm5lclJhZGl1cyk7Zz1jKGcoZC50aGlja25lc3MpLDEwKTtpZigicG9seWdvbiI9PT10aGlzLm9wdGlvbnMuZ3JpZExpbmVJbnRlcnBvbGF0aW9uKXI9dGhpcy5nZXRQbG90TGluZVBhdGgoe3ZhbHVlOm19KS5jb25jYXQodGhpcy5nZXRQbG90TGluZVBhdGgoe3ZhbHVlOm4scmV2ZXJzZTohMH0pKTtlbHNle209TWF0aC5tYXgobSx0aGlzLm1pbik7bj1NYXRoLm1pbihuLHRoaXMubWF4KTttPXRoaXMudHJhbnNsYXRlKG0pO249dGhpcy50cmFuc2xhdGUobik7bHx8KGE9bXx8MCxoPW58fDApO2lmKCJjaXJjbGUiIT09CmQuc2hhcGUmJmwpZD11KyhtfHwwKSx1Kz1ufHwwO2Vsc2V7ZD0tTWF0aC5QSS8yO3U9MS41Kk1hdGguUEk7dmFyIHA9ITB9YS09cjtyPXRoaXMuY2hhcnQucmVuZGVyZXIuc3ltYm9scy5hcmModGhpcy5sZWZ0K2tbMF0sdGhpcy50b3Ara1sxXSxhLGEse3N0YXJ0Ok1hdGgubWluKGQsdSksZW5kOk1hdGgubWF4KGQsdSksaW5uZXJSOmMoaCxhLShnLXIpKSxvcGVuOnB9KTtsJiYobD0odStkKS8yLHA9dGhpcy5sZWZ0K2tbMF0ra1syXS8yKk1hdGguY29zKGwpLHIueEJvdW5kcz1sPi1NYXRoLlBJLzImJmw8TWF0aC5QSS8yP1twLHRoaXMuY2hhcnQucGxvdFdpZHRoXTpbMCxwXSxyLnlCb3VuZHM9W3RoaXMudG9wK2tbMV0ra1syXS8yKk1hdGguc2luKGwpXSxyLnlCb3VuZHNbMF0rPWw+LU1hdGguUEkmJjA+bHx8bD5NYXRoLlBJPy0xMDoxMCl9cmV0dXJuIHJ9O2EuZ2V0Q3Jvc3NoYWlyUG9zaXRpb249ZnVuY3Rpb24obSxuLGQpe3ZhciBnPW0udmFsdWUsaz10aGlzLnBhbmUuY2VudGVyOwppZih0aGlzLmlzQ2lyY3VsYXIpe2lmKHQoZykpbS5wb2ludCYmKHU9bS5wb2ludC5zaGFwZUFyZ3N8fHt9LHUuc3RhcnQmJihnPXRoaXMuY2hhcnQuaW52ZXJ0ZWQ/dGhpcy50cmFuc2xhdGUobS5wb2ludC5yZWN0UGxvdFksITApOm0ucG9pbnQueCkpO2Vsc2V7dmFyIHU9bS5jaGFydFh8fDA7dmFyIEE9bS5jaGFydFl8fDA7Zz10aGlzLnRyYW5zbGF0ZShNYXRoLmF0YW4yKEEtZCx1LW4pLXRoaXMuc3RhcnRBbmdsZVJhZCwhMCl9bT10aGlzLmdldFBvc2l0aW9uKGcpO3U9bS54O0E9bS55fWVsc2UgdChnKXx8KHU9bS5jaGFydFgsQT1tLmNoYXJ0WSksdCh1KSYmdChBKSYmKGQ9a1sxXSt0aGlzLmNoYXJ0LnBsb3RUb3AsZz10aGlzLnRyYW5zbGF0ZShNYXRoLm1pbihNYXRoLnNxcnQoTWF0aC5wb3codS1uLDIpK01hdGgucG93KEEtZCwyKSksa1syXS8yKS1rWzNdLzIsITApKTtyZXR1cm5bZyx1fHwwLEF8fDBdfTthLmdldFBsb3RMaW5lUGF0aD1mdW5jdGlvbihtKXt2YXIgbj10aGlzLApkPW4ucGFuZS5jZW50ZXIsZz1uLmNoYXJ0LGs9Zy5pbnZlcnRlZCx1PW0udmFsdWUsQT1tLnJldmVyc2Uscj1uLmdldFBvc2l0aW9uKHUpLGM9bi5wYW5lLm9wdGlvbnMuYmFja2dyb3VuZD9uLnBhbmUub3B0aW9ucy5iYWNrZ3JvdW5kWzBdfHxuLnBhbmUub3B0aW9ucy5iYWNrZ3JvdW5kOnt9LGE9Yy5pbm5lclJhZGl1c3x8IjAlIixoPWMub3V0ZXJSYWRpdXN8fCIxMDAlIjtjPWRbMF0rZy5wbG90TGVmdDt2YXIgcD1kWzFdK2cucGxvdFRvcCxlPXIueCxiPXIueSx3PW4uaGVpZ2h0O3I9ZFszXS8yO3ZhciBxO20uaXNDcm9zc2hhaXImJihiPXRoaXMuZ2V0Q3Jvc3NoYWlyUG9zaXRpb24obSxjLHApLHU9YlswXSxlPWJbMV0sYj1iWzJdKTtpZihuLmlzQ2lyY3VsYXIpdT1NYXRoLnNxcnQoTWF0aC5wb3coZS1jLDIpK01hdGgucG93KGItcCwyKSksQT0ic3RyaW5nIj09PXR5cGVvZiBhP2woYSwxKTphL3UsZz0ic3RyaW5nIj09PXR5cGVvZiBoP2woaCwxKTpoL3UsZCYmciYmKHU9ci8KdSxBPHUmJihBPXUpLGc8dSYmKGc9dSkpLGQ9W1siTSIsYytBKihlLWMpLHAtQSoocC1iKV0sWyJMIixlLSgxLWcpKihlLWMpLGIrKDEtZykqKHAtYildXTtlbHNlIGlmKCh1PW4udHJhbnNsYXRlKHUpKSYmKDA+dXx8dT53KSYmKHU9MCksImNpcmNsZSI9PT1uLm9wdGlvbnMuZ3JpZExpbmVJbnRlcnBvbGF0aW9uKWQ9bi5nZXRMaW5lUGF0aCgwLHUscik7ZWxzZSBpZihkPVtdLGdbaz8ieUF4aXMiOiJ4QXhpcyJdLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5wYW5lPT09bi5wYW5lJiYocT1kKX0pLHEpZm9yKGM9cS50aWNrUG9zaXRpb25zLHEuYXV0b0Nvbm5lY3QmJihjPWMuY29uY2F0KFtjWzBdXSkpLEEmJihjPWMuc2xpY2UoKS5yZXZlcnNlKCkpLHUmJih1Kz1yKSxlPTA7ZTxjLmxlbmd0aDtlKyspcD1xLmdldFBvc2l0aW9uKGNbZV0sdSksZC5wdXNoKGU/WyJMIixwLngscC55XTpbIk0iLHAueCxwLnldKTtyZXR1cm4gZH07YS5nZXRUaXRsZVBvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIGM9CnRoaXMuY2VudGVyLG49dGhpcy5jaGFydCxkPXRoaXMub3B0aW9ucy50aXRsZTtyZXR1cm57eDpuLnBsb3RMZWZ0K2NbMF0rKGQueHx8MCkseTpuLnBsb3RUb3ArY1sxXS17aGlnaDouNSxtaWRkbGU6LjI1LGxvdzowfVtkLmFsaWduXSpjWzJdKyhkLnl8fDApfX07YS5jcmVhdGVMYWJlbENvbGxlY3Rvcj1mdW5jdGlvbigpe3ZhciBjPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoYy5pc1JhZGlhbCYmYy50aWNrUG9zaXRpb25zJiYhMCE9PWMub3B0aW9ucy5sYWJlbHMuYWxsb3dPdmVybGFwKXJldHVybiBjLnRpY2tQb3NpdGlvbnMubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBjLnRpY2tzW25dJiZjLnRpY2tzW25dLmxhYmVsfSkuZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiEhbn0pfX19O2EuY29tcG9zZT1mdW5jdGlvbihwLGUpe2gocCwiaW5pdCIsZnVuY3Rpb24oYyl7dmFyIG49dGhpcy5jaGFydCxkPW4uaW52ZXJ0ZWQsZz1uLmFuZ3VsYXIsaz1uLnBvbGFyLHU9dGhpcy5pc1hBeGlzLApBPXRoaXMuY29sbCxyPWcmJnUsbCxtPW4ub3B0aW9ucztjPWMudXNlck9wdGlvbnMucGFuZXx8MDtjPXRoaXMucGFuZT1uLnBhbmUmJm4ucGFuZVtjXTtpZigiY29sb3JBeGlzIj09PUEpdGhpcy5pc1JhZGlhbD0hMTtlbHNle2lmKGcpe2lmKHI/Yi5pbml0KHRoaXMpOmEuaW5pdCh0aGlzKSxsPSF1KXRoaXMuZGVmYXVsdFBvbGFyT3B0aW9ucz1hLmRlZmF1bHRSYWRpYWxHYXVnZU9wdGlvbnN9ZWxzZSBrJiYoYS5pbml0KHRoaXMpLHRoaXMuZGVmYXVsdFBvbGFyT3B0aW9ucz0obD10aGlzLmhvcml6KT9hLmRlZmF1bHRDaXJjdWxhck9wdGlvbnM6eigieEF4aXMiPT09QT9wLmRlZmF1bHRPcHRpb25zOnAuZGVmYXVsdFlBeGlzT3B0aW9ucyxhLmRlZmF1bHRSYWRpYWxPcHRpb25zKSxkJiYieUF4aXMiPT09QSYmKHRoaXMuZGVmYXVsdFBvbGFyT3B0aW9ucy5zdGFja0xhYmVscz1wLmRlZmF1bHRZQXhpc09wdGlvbnMuc3RhY2tMYWJlbHMpKTtnfHxrPyh0aGlzLmlzUmFkaWFsPSEwLG0uY2hhcnQuem9vbVR5cGU9Cm51bGwsdGhpcy5sYWJlbENvbGxlY3Rvcnx8KHRoaXMubGFiZWxDb2xsZWN0b3I9dGhpcy5jcmVhdGVMYWJlbENvbGxlY3RvcigpKSx0aGlzLmxhYmVsQ29sbGVjdG9yJiZuLmxhYmVsQ29sbGVjdG9ycy5wdXNoKHRoaXMubGFiZWxDb2xsZWN0b3IpKTp0aGlzLmlzUmFkaWFsPSExO2MmJmwmJihjLmF4aXM9dGhpcyk7dGhpcy5pc0NpcmN1bGFyPWx9fSk7aChwLCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7dmFyIGw9dGhpcy5jaGFydCxuPXRoaXMub3B0aW9ucyxkPXRoaXMucGFuZSxnPWQmJmQub3B0aW9ucztsLmFuZ3VsYXImJnRoaXMuaXNYQXhpc3x8IWR8fCFsLmFuZ3VsYXImJiFsLnBvbGFyfHwodGhpcy5hbmdsZVJhZD0obi5hbmdsZXx8MCkqTWF0aC5QSS8xODAsdGhpcy5zdGFydEFuZ2xlUmFkPShnLnN0YXJ0QW5nbGUtOTApKk1hdGguUEkvMTgwLHRoaXMuZW5kQW5nbGVSYWQ9KGMoZy5lbmRBbmdsZSxnLnN0YXJ0QW5nbGUrMzYwKS05MCkqTWF0aC5QSS8xODAsdGhpcy5vZmZzZXQ9Cm4ub2Zmc2V0fHwwKX0pO2gocCwiYXV0b0xhYmVsQWxpZ24iLGZ1bmN0aW9uKGMpe3RoaXMuaXNSYWRpYWwmJihjLmFsaWduPXZvaWQgMCxjLnByZXZlbnREZWZhdWx0KCkpfSk7aChwLCJkZXN0cm95IixmdW5jdGlvbigpe2lmKHRoaXMuY2hhcnQmJnRoaXMuY2hhcnQubGFiZWxDb2xsZWN0b3JzKXt2YXIgYz10aGlzLmxhYmVsQ29sbGVjdG9yP3RoaXMuY2hhcnQubGFiZWxDb2xsZWN0b3JzLmluZGV4T2YodGhpcy5sYWJlbENvbGxlY3Rvcik6LTE7MDw9YyYmdGhpcy5jaGFydC5sYWJlbENvbGxlY3RvcnMuc3BsaWNlKGMsMSl9fSk7aChwLCJpbml0aWFsQXhpc1RyYW5zbGF0aW9uIixmdW5jdGlvbigpe3RoaXMuaXNSYWRpYWwmJnRoaXMuYmVmb3JlU2V0VGlja1Bvc2l0aW9ucygpfSk7aChlLCJhZnRlckdldFBvc2l0aW9uIixmdW5jdGlvbihjKXt0aGlzLmF4aXMuZ2V0UG9zaXRpb24mJngoYy5wb3MsdGhpcy5heGlzLmdldFBvc2l0aW9uKHRoaXMucG9zKSl9KTtoKGUsImFmdGVyR2V0TGFiZWxQb3NpdGlvbiIsCmZ1bmN0aW9uKGEpe3ZhciBuPXRoaXMuYXhpcyxkPXRoaXMubGFiZWw7aWYoZCl7dmFyIGc9ZC5nZXRCQm94KCksaz1uLm9wdGlvbnMubGFiZWxzLHU9ay55LEE9MjAscj1rLmFsaWduLG09KG4udHJhbnNsYXRlKHRoaXMucG9zKStuLnN0YXJ0QW5nbGVSYWQrTWF0aC5QSS8yKS9NYXRoLlBJKjE4MCUzNjAscD1NYXRoLnJvdW5kKG0pLGg9ImVuZCIsZT0wPnA/cCszNjA6cCxiPWUsdz0wLHE9MCx2PW51bGw9PT1rLnk/LjMqLWcuaGVpZ2h0OjA7aWYobi5pc1JhZGlhbCl7dmFyIHk9bi5nZXRQb3NpdGlvbih0aGlzLnBvcyxuLmNlbnRlclsyXS8yK2woYyhrLmRpc3RhbmNlLC0yNSksbi5jZW50ZXJbMl0vMiwtbi5jZW50ZXJbMl0vMikpOyJhdXRvIj09PWsucm90YXRpb24/ZC5hdHRyKHtyb3RhdGlvbjptfSk6bnVsbD09PXUmJih1PW4uY2hhcnQucmVuZGVyZXIuZm9udE1ldHJpY3MoZC5zdHlsZXMmJmQuc3R5bGVzLmZvbnRTaXplKS5iLWcuaGVpZ2h0LzIpO251bGw9PT1yJiYobi5pc0NpcmN1bGFyPwooZy53aWR0aD5uLmxlbipuLnRpY2tJbnRlcnZhbC8obi5tYXgtbi5taW4pJiYoQT0wKSxyPW0+QSYmbTwxODAtQT8ibGVmdCI6bT4xODArQSYmbTwzNjAtQT8icmlnaHQiOiJjZW50ZXIiKTpyPSJjZW50ZXIiLGQuYXR0cih7YWxpZ246cn0pKTtpZigiYXV0byI9PT1yJiYyPT09bi50aWNrUG9zaXRpb25zLmxlbmd0aCYmbi5pc0NpcmN1bGFyKXs5MDxlJiYxODA+ZT9lPTE4MC1lOjI3MDxlJiYzNjA+PWUmJihlPTU0MC1lKTsxODA8YiYmMzYwPj1iJiYoYj0zNjAtYik7aWYobi5wYW5lLm9wdGlvbnMuc3RhcnRBbmdsZT09PXB8fG4ucGFuZS5vcHRpb25zLnN0YXJ0QW5nbGU9PT1wKzM2MHx8bi5wYW5lLm9wdGlvbnMuc3RhcnRBbmdsZT09PXAtMzYwKWg9InN0YXJ0IjtyPS05MDw9cCYmOTA+PXB8fC0zNjA8PXAmJi0yNzA+PXB8fDI3MDw9cCYmMzYwPj1wPyJzdGFydCI9PT1oPyJyaWdodCI6ImxlZnQiOiJzdGFydCI9PT1oPyJsZWZ0IjoicmlnaHQiOzcwPGImJjExMD5iJiYocj0iY2VudGVyIik7CjE1PmV8fDE4MDw9ZSYmMTk1PmU/dz0uMypnLmhlaWdodDoxNTw9ZSYmMzU+PWU/dz0ic3RhcnQiPT09aD8wOi43NSpnLmhlaWdodDoxOTU8PWUmJjIxNT49ZT93PSJzdGFydCI9PT1oPy43NSpnLmhlaWdodDowOjM1PGUmJjkwPj1lP3c9InN0YXJ0Ij09PWg/LjI1Ki1nLmhlaWdodDpnLmhlaWdodDoyMTU8ZSYmMjcwPj1lJiYodz0ic3RhcnQiPT09aD9nLmhlaWdodDouMjUqLWcuaGVpZ2h0KTsxNT5iP3E9InN0YXJ0Ij09PWg/LjE1Ki1nLmhlaWdodDouMTUqZy5oZWlnaHQ6MTY1PGImJjE4MD49YiYmKHE9InN0YXJ0Ij09PWg/LjE1KmcuaGVpZ2h0Oi4xNSotZy5oZWlnaHQpO2QuYXR0cih7YWxpZ246cn0pO2QudHJhbnNsYXRlKHEsdyt2KX1hLnBvcy54PXkueCtrLng7YS5wb3MueT15LnkrdX19fSk7dyhlLnByb3RvdHlwZSwiZ2V0TWFya1BhdGgiLGZ1bmN0aW9uKGMsbixkLGcsayx1LEEpe3ZhciByPXRoaXMuYXhpcztyLmlzUmFkaWFsPyhjPXIuZ2V0UG9zaXRpb24odGhpcy5wb3MsCnIuY2VudGVyWzJdLzIrZyksbj1bIk0iLG4sZCwiTCIsYy54LGMueV0pOm49Yy5jYWxsKHRoaXMsbixkLGcsayx1LEEpO3JldHVybiBufSl9O2EuZGVmYXVsdENpcmN1bGFyT3B0aW9ucz17Z3JpZExpbmVXaWR0aDoxLGxhYmVsczp7YWxpZ246bnVsbCxkaXN0YW5jZToxNSx4OjAseTpudWxsLHN0eWxlOnt0ZXh0T3ZlcmZsb3c6Im5vbmUifX0sbWF4UGFkZGluZzowLG1pblBhZGRpbmc6MCxzaG93TGFzdExhYmVsOiExLHRpY2tMZW5ndGg6MH07YS5kZWZhdWx0UmFkaWFsR2F1Z2VPcHRpb25zPXtsYWJlbHM6e2FsaWduOiJjZW50ZXIiLHg6MCx5Om51bGx9LG1pbm9yR3JpZExpbmVXaWR0aDowLG1pbm9yVGlja0ludGVydmFsOiJhdXRvIixtaW5vclRpY2tMZW5ndGg6MTAsbWlub3JUaWNrUG9zaXRpb246Imluc2lkZSIsbWlub3JUaWNrV2lkdGg6MSx0aWNrTGVuZ3RoOjEwLHRpY2tQb3NpdGlvbjoiaW5zaWRlIix0aWNrV2lkdGg6Mix0aXRsZTp7cm90YXRpb246MH0sekluZGV4OjJ9OwphLmRlZmF1bHRSYWRpYWxPcHRpb25zPXtncmlkTGluZUludGVycG9sYXRpb246ImNpcmNsZSIsZ3JpZExpbmVXaWR0aDoxLGxhYmVsczp7YWxpZ246InJpZ2h0Iix4Oi0zLHk6LTJ9LHNob3dMYXN0TGFiZWw6ITEsdGl0bGU6e3g6NCx0ZXh0Om51bGwscm90YXRpb246OTB9fTtyZXR1cm4gYX0oKTtlLmNvbXBvc2UoZixhKTtyZXR1cm4gZX0pO0MoZiwicGFydHMtbW9yZS9BcmVhUmFuZ2VTZXJpZXMuanMiLFtmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMvUG9pbnQuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhLGIpe3ZhciBlPWIuZGVmaW5lZCxoPWIuZXh0ZW5kLHE9Yi5pc0FycmF5LHQ9Yi5pc051bWJlcix4PWIucGljaztiPWIuc2VyaWVzVHlwZTt2YXIgQj1mLnNlcmllc1R5cGVzLHo9Zi5TZXJpZXMucHJvdG90eXBlLGM9YS5wcm90b3R5cGU7YigiYXJlYXJhbmdlIiwiYXJlYSIse2xpbmVXaWR0aDoxLHRocmVzaG9sZDpudWxsLHRvb2x0aXA6e3BvaW50Rm9ybWF0Oic8c3BhbiBzdHlsZT0iY29sb3I6e3Nlcmllcy5jb2xvcn0iPlx1MjVjZjwvc3Bhbj4ge3Nlcmllcy5uYW1lfTogPGI+e3BvaW50Lmxvd308L2I+IC0gPGI+e3BvaW50LmhpZ2h9PC9iPjxici8+J30sCnRyYWNrQnlBcmVhOiEwLGRhdGFMYWJlbHM6e2FsaWduOnZvaWQgMCx2ZXJ0aWNhbEFsaWduOnZvaWQgMCx4TG93OjAseEhpZ2g6MCx5TG93OjAseUhpZ2g6MH19LHtwb2ludEFycmF5TWFwOlsibG93IiwiaGlnaCJdLHBvaW50VmFsS2V5OiJsb3ciLGRlZmVyVHJhbnNsYXRlUG9sYXI6ITAsdG9ZRGF0YTpmdW5jdGlvbihjKXtyZXR1cm5bYy5sb3csYy5oaWdoXX0saGlnaFRvWFk6ZnVuY3Rpb24oYyl7dmFyIGw9dGhpcy5jaGFydCxhPXRoaXMueEF4aXMucG9zdFRyYW5zbGF0ZShjLnJlY3RQbG90WCx0aGlzLnlBeGlzLmxlbi1jLnBsb3RIaWdoKTtjLnBsb3RIaWdoWD1hLngtbC5wbG90TGVmdDtjLnBsb3RIaWdoPWEueS1sLnBsb3RUb3A7Yy5wbG90TG93WD1jLnBsb3RYfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGE9Yy55QXhpcyxwPSEhYy5tb2RpZnlWYWx1ZTtCLmFyZWEucHJvdG90eXBlLnRyYW5zbGF0ZS5hcHBseShjKTtjLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciBlPQpsLmhpZ2gsbT1sLnBsb3RZO2wuaXNOdWxsP2wucGxvdFk9bnVsbDoobC5wbG90TG93PW0sbC5wbG90SGlnaD1hLnRyYW5zbGF0ZShwP2MubW9kaWZ5VmFsdWUoZSxsKTplLDAsMSwwLDEpLHAmJihsLnlCb3R0b209bC5wbG90SGlnaCkpfSk7dGhpcy5jaGFydC5wb2xhciYmdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihsKXtjLmhpZ2hUb1hZKGwpO2wudG9vbHRpcFBvcz1bKGwucGxvdEhpZ2hYK2wucGxvdExvd1gpLzIsKGwucGxvdEhpZ2grbC5wbG90TG93KS8yXX0pfSxnZXRHcmFwaFBhdGg6ZnVuY3Rpb24oYyl7dmFyIGE9W10sbD1bXSxlLGg9Qi5hcmVhLnByb3RvdHlwZS5nZXRHcmFwaFBhdGg7dmFyIG09dGhpcy5vcHRpb25zO3ZhciBuPXRoaXMuY2hhcnQucG9sYXImJiExIT09bS5jb25uZWN0RW5kcyxkPW0uY29ubmVjdE51bGxzLGc9bS5zdGVwO2M9Y3x8dGhpcy5wb2ludHM7Zm9yKGU9Yy5sZW5ndGg7ZS0tOyl7dmFyIGs9Y1tlXTtrLmlzTnVsbHx8bnx8ZHx8Y1tlKzFdJiYKIWNbZSsxXS5pc051bGx8fGwucHVzaCh7cGxvdFg6ay5wbG90WCxwbG90WTprLnBsb3RZLGRvQ3VydmU6ITF9KTt2YXIgdT17cG9sYXJQbG90WTprLnBvbGFyUGxvdFkscmVjdFBsb3RYOmsucmVjdFBsb3RYLHlCb3R0b206ay55Qm90dG9tLHBsb3RYOngoay5wbG90SGlnaFgsay5wbG90WCkscGxvdFk6ay5wbG90SGlnaCxpc051bGw6ay5pc051bGx9O2wucHVzaCh1KTthLnB1c2godSk7ay5pc051bGx8fG58fGR8fGNbZS0xXSYmIWNbZS0xXS5pc051bGx8fGwucHVzaCh7cGxvdFg6ay5wbG90WCxwbG90WTprLnBsb3RZLGRvQ3VydmU6ITF9KX1jPWguY2FsbCh0aGlzLGMpO2cmJighMD09PWcmJihnPSJsZWZ0IiksbS5zdGVwPXtsZWZ0OiJyaWdodCIsY2VudGVyOiJjZW50ZXIiLHJpZ2h0OiJsZWZ0In1bZ10pO2E9aC5jYWxsKHRoaXMsYSk7bD1oLmNhbGwodGhpcyxsKTttLnN0ZXA9ZzttPVtdLmNvbmNhdChjLGEpOyF0aGlzLmNoYXJ0LnBvbGFyJiZsWzBdJiYiTSI9PT1sWzBdWzBdJiYKKGxbMF09WyJMIixsWzBdWzFdLGxbMF1bMl1dKTt0aGlzLmdyYXBoUGF0aD1tO3RoaXMuYXJlYVBhdGg9Yy5jb25jYXQobCk7bS5pc0FyZWE9ITA7bS54TWFwPWMueE1hcDt0aGlzLmFyZWFQYXRoLnhNYXA9Yy54TWFwO3JldHVybiBtfSxkcmF3RGF0YUxhYmVsczpmdW5jdGlvbigpe3ZhciBjPXRoaXMucG9pbnRzLGE9Yy5sZW5ndGgsZSxiPVtdLGY9dGhpcy5vcHRpb25zLmRhdGFMYWJlbHMsbSxuPXRoaXMuY2hhcnQuaW52ZXJ0ZWQ7aWYocShmKSlpZigxPGYubGVuZ3RoKXt2YXIgZD1mWzBdO3ZhciBnPWZbMV19ZWxzZSBkPWZbMF0sZz17ZW5hYmxlZDohMX07ZWxzZSBkPWgoe30sZiksZC54PWYueEhpZ2gsZC55PWYueUhpZ2gsZz1oKHt9LGYpLGcueD1mLnhMb3csZy55PWYueUxvdztpZihkLmVuYWJsZWR8fHRoaXMuX2hhc1BvaW50TGFiZWxzKXtmb3IoZT1hO2UtLTspaWYobT1jW2VdKXt2YXIgaz1kLmluc2lkZT9tLnBsb3RIaWdoPG0ucGxvdExvdzptLnBsb3RIaWdoPm0ucGxvdExvdzsKbS55PW0uaGlnaDttLl9wbG90WT1tLnBsb3RZO20ucGxvdFk9bS5wbG90SGlnaDtiW2VdPW0uZGF0YUxhYmVsO20uZGF0YUxhYmVsPW0uZGF0YUxhYmVsVXBwZXI7bS5iZWxvdz1rO24/ZC5hbGlnbnx8KGQuYWxpZ249az8icmlnaHQiOiJsZWZ0Iik6ZC52ZXJ0aWNhbEFsaWdufHwoZC52ZXJ0aWNhbEFsaWduPWs/InRvcCI6ImJvdHRvbSIpfXRoaXMub3B0aW9ucy5kYXRhTGFiZWxzPWQ7ei5kcmF3RGF0YUxhYmVscyYmei5kcmF3RGF0YUxhYmVscy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7Zm9yKGU9YTtlLS07KWlmKG09Y1tlXSltLmRhdGFMYWJlbFVwcGVyPW0uZGF0YUxhYmVsLG0uZGF0YUxhYmVsPWJbZV0sZGVsZXRlIG0uZGF0YUxhYmVscyxtLnk9bS5sb3csbS5wbG90WT1tLl9wbG90WX1pZihnLmVuYWJsZWR8fHRoaXMuX2hhc1BvaW50TGFiZWxzKXtmb3IoZT1hO2UtLTspaWYobT1jW2VdKWs9Zy5pbnNpZGU/bS5wbG90SGlnaDxtLnBsb3RMb3c6bS5wbG90SGlnaD5tLnBsb3RMb3csCm0uYmVsb3c9IWssbj9nLmFsaWdufHwoZy5hbGlnbj1rPyJsZWZ0IjoicmlnaHQiKTpnLnZlcnRpY2FsQWxpZ258fChnLnZlcnRpY2FsQWxpZ249az8iYm90dG9tIjoidG9wIik7dGhpcy5vcHRpb25zLmRhdGFMYWJlbHM9Zzt6LmRyYXdEYXRhTGFiZWxzJiZ6LmRyYXdEYXRhTGFiZWxzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1pZihkLmVuYWJsZWQpZm9yKGU9YTtlLS07KWlmKG09Y1tlXSltLmRhdGFMYWJlbHM9W20uZGF0YUxhYmVsVXBwZXIsbS5kYXRhTGFiZWxdLmZpbHRlcihmdW5jdGlvbihkKXtyZXR1cm4hIWR9KTt0aGlzLm9wdGlvbnMuZGF0YUxhYmVscz1mfSxhbGlnbkRhdGFMYWJlbDpmdW5jdGlvbigpe0IuY29sdW1uLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGRyYXdQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLnBvaW50cy5sZW5ndGgsYTt6LmRyYXdQb2ludHMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2ZvcihhPTA7YTxjOyl7dmFyIGI9CnRoaXMucG9pbnRzW2FdO2Iub3JpZ1Byb3BzPXtwbG90WTpiLnBsb3RZLHBsb3RYOmIucGxvdFgsaXNJbnNpZGU6Yi5pc0luc2lkZSxuZWdhdGl2ZTpiLm5lZ2F0aXZlLHpvbmU6Yi56b25lLHk6Yi55fTtiLmxvd2VyR3JhcGhpYz1iLmdyYXBoaWM7Yi5ncmFwaGljPWIudXBwZXJHcmFwaGljO2IucGxvdFk9Yi5wbG90SGlnaDtlKGIucGxvdEhpZ2hYKSYmKGIucGxvdFg9Yi5wbG90SGlnaFgpO2IueT1iLmhpZ2g7Yi5uZWdhdGl2ZT1iLmhpZ2g8KHRoaXMub3B0aW9ucy50aHJlc2hvbGR8fDApO2Iuem9uZT10aGlzLnpvbmVzLmxlbmd0aCYmYi5nZXRab25lKCk7dGhpcy5jaGFydC5wb2xhcnx8KGIuaXNJbnNpZGU9Yi5pc1RvcEluc2lkZT0idW5kZWZpbmVkIiE9PXR5cGVvZiBiLnBsb3RZJiYwPD1iLnBsb3RZJiZiLnBsb3RZPD10aGlzLnlBeGlzLmxlbiYmMDw9Yi5wbG90WCYmYi5wbG90WDw9dGhpcy54QXhpcy5sZW4pO2ErK316LmRyYXdQb2ludHMuYXBwbHkodGhpcyxhcmd1bWVudHMpOwpmb3IoYT0wO2E8YzspYj10aGlzLnBvaW50c1thXSxiLnVwcGVyR3JhcGhpYz1iLmdyYXBoaWMsYi5ncmFwaGljPWIubG93ZXJHcmFwaGljLGgoYixiLm9yaWdQcm9wcyksZGVsZXRlIGIub3JpZ1Byb3BzLGErK30sc2V0U3RhY2tlZFBvaW50czpmLm5vb3B9LHtzZXRTdGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc3RhdGUsYj10aGlzLnNlcmllcyxoPWIuY2hhcnQucG9sYXI7ZSh0aGlzLnBsb3RIaWdoKXx8KHRoaXMucGxvdEhpZ2g9Yi55QXhpcy50b1BpeGVscyh0aGlzLmhpZ2gsITApKTtlKHRoaXMucGxvdExvdyl8fCh0aGlzLnBsb3RMb3c9dGhpcy5wbG90WT1iLnlBeGlzLnRvUGl4ZWxzKHRoaXMubG93LCEwKSk7Yi5zdGF0ZU1hcmtlckdyYXBoaWMmJihiLmxvd2VyU3RhdGVNYXJrZXJHcmFwaGljPWIuc3RhdGVNYXJrZXJHcmFwaGljLGIuc3RhdGVNYXJrZXJHcmFwaGljPWIudXBwZXJTdGF0ZU1hcmtlckdyYXBoaWMpO3RoaXMuZ3JhcGhpYz10aGlzLnVwcGVyR3JhcGhpYzsKdGhpcy5wbG90WT10aGlzLnBsb3RIaWdoO2gmJih0aGlzLnBsb3RYPXRoaXMucGxvdEhpZ2hYKTtjLnNldFN0YXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnN0YXRlPWE7dGhpcy5wbG90WT10aGlzLnBsb3RMb3c7dGhpcy5ncmFwaGljPXRoaXMubG93ZXJHcmFwaGljO2gmJih0aGlzLnBsb3RYPXRoaXMucGxvdExvd1gpO2Iuc3RhdGVNYXJrZXJHcmFwaGljJiYoYi51cHBlclN0YXRlTWFya2VyR3JhcGhpYz1iLnN0YXRlTWFya2VyR3JhcGhpYyxiLnN0YXRlTWFya2VyR3JhcGhpYz1iLmxvd2VyU3RhdGVNYXJrZXJHcmFwaGljLGIubG93ZXJTdGF0ZU1hcmtlckdyYXBoaWM9dm9pZCAwKTtjLnNldFN0YXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0saGFsb1BhdGg6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlcmllcy5jaGFydC5wb2xhcixiPVtdO3RoaXMucGxvdFk9dGhpcy5wbG90TG93O2EmJih0aGlzLnBsb3RYPXRoaXMucGxvdExvd1gpO3RoaXMuaXNJbnNpZGUmJihiPWMuaGFsb1BhdGguYXBwbHkodGhpcywKYXJndW1lbnRzKSk7dGhpcy5wbG90WT10aGlzLnBsb3RIaWdoO2EmJih0aGlzLnBsb3RYPXRoaXMucGxvdEhpZ2hYKTt0aGlzLmlzVG9wSW5zaWRlJiYoYj1iLmNvbmNhdChjLmhhbG9QYXRoLmFwcGx5KHRoaXMsYXJndW1lbnRzKSkpO3JldHVybiBifSxkZXN0cm95RWxlbWVudHM6ZnVuY3Rpb24oKXtbImxvd2VyR3JhcGhpYyIsInVwcGVyR3JhcGhpYyJdLmZvckVhY2goZnVuY3Rpb24oYyl7dGhpc1tjXSYmKHRoaXNbY109dGhpc1tjXS5kZXN0cm95KCkpfSx0aGlzKTt0aGlzLmdyYXBoaWM9bnVsbDtyZXR1cm4gYy5kZXN0cm95RWxlbWVudHMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcy5sb3cpJiZ0KHRoaXMuaGlnaCl9fSk7IiJ9KTtDKGYsInBhcnRzLW1vcmUvQXJlYVNwbGluZVJhbmdlU2VyaWVzLmpzIixbZlsicGFydHMvR2xvYmFscy5qcyJdLGZbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihmLGEpe2E9YS5zZXJpZXNUeXBlOwphKCJhcmVhc3BsaW5lcmFuZ2UiLCJhcmVhcmFuZ2UiLG51bGwse2dldFBvaW50U3BsaW5lOmYuc2VyaWVzVHlwZXMuc3BsaW5lLnByb3RvdHlwZS5nZXRQb2ludFNwbGluZX0pOyIifSk7QyhmLCJwYXJ0cy1tb3JlL0NvbHVtblJhbmdlU2VyaWVzLmpzIixbZlsicGFydHMvR2xvYmFscy5qcyJdLGZbInBhcnRzL09wdGlvbnMuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhLGIpe2E9YS5kZWZhdWx0T3B0aW9uczt2YXIgZT1iLmNsYW1wLGg9Yi5tZXJnZSxxPWIucGljaztiPWIuc2VyaWVzVHlwZTt2YXIgdD1mLm5vb3AseD1mLnNlcmllc1R5cGVzLmNvbHVtbi5wcm90b3R5cGU7YigiY29sdW1ucmFuZ2UiLCJhcmVhcmFuZ2UiLGgoYS5wbG90T3B0aW9ucy5jb2x1bW4sYS5wbG90T3B0aW9ucy5hcmVhcmFuZ2Use3BvaW50UmFuZ2U6bnVsbCxtYXJrZXI6bnVsbCxzdGF0ZXM6e2hvdmVyOntoYWxvOiExfX19KSx7dHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMsYj1hLnlBeGlzLGM9YS54QXhpcyxsPWMuc3RhcnRBbmdsZVJhZCxoLHA9YS5jaGFydCxmPWEueEF4aXMuaXNSYWRpYWwsdD1NYXRoLm1heChwLmNoYXJ0V2lkdGgscC5jaGFydEhlaWdodCkrOTk5LG07eC50cmFuc2xhdGUuYXBwbHkoYSk7YS5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgZD1uLnNoYXBlQXJncyxnPWEub3B0aW9ucy5taW5Qb2ludExlbmd0aDtuLnBsb3RIaWdoPW09ZShiLnRyYW5zbGF0ZShuLmhpZ2gsMCwxLDAsMSksLXQsdCk7bi5wbG90TG93PWUobi5wbG90WSwtdCx0KTt2YXIgaz1tO3ZhciB1PXEobi5yZWN0UGxvdFksbi5wbG90WSktbTtNYXRoLmFicyh1KTxnPyhnLT11LHUrPWcsay09Zy8yKTowPnUmJih1Kj0tMSxrLT11KTtmPyhoPW4uYmFyWCtsLG4uc2hhcGVUeXBlPSJhcmMiLG4uc2hhcGVBcmdzPWEucG9sYXJBcmMoayt1LGssaCxoK24ucG9pbnRXaWR0aCkpOihkLmhlaWdodD11LGQueT1rLG4udG9vbHRpcFBvcz1wLmludmVydGVkPwpbYi5sZW4rYi5wb3MtcC5wbG90TGVmdC1rLXUvMixjLmxlbitjLnBvcy1wLnBsb3RUb3AtZC54LWQud2lkdGgvMix1XTpbYy5sZWZ0LXAucGxvdExlZnQrZC54K2Qud2lkdGgvMixiLnBvcy1wLnBsb3RUb3Arayt1LzIsdV0pfSl9LGRpcmVjdFRvdWNoOiEwLHRyYWNrZXJHcm91cHM6WyJncm91cCIsImRhdGFMYWJlbHNHcm91cCJdLGRyYXdHcmFwaDp0LGdldFN5bWJvbDp0LGNyaXNwQ29sOmZ1bmN0aW9uKCl7cmV0dXJuIHguY3Jpc3BDb2wuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIHguZHJhd1BvaW50cy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGRyYXdUcmFja2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHguZHJhd1RyYWNrZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxnZXRDb2x1bW5NZXRyaWNzOmZ1bmN0aW9uKCl7cmV0dXJuIHguZ2V0Q29sdW1uTWV0cmljcy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHBvaW50QXR0cmliczpmdW5jdGlvbigpe3JldHVybiB4LnBvaW50QXR0cmlicy5hcHBseSh0aGlzLAphcmd1bWVudHMpfSxhbmltYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHguYW5pbWF0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHBvbGFyQXJjOmZ1bmN0aW9uKCl7cmV0dXJuIHgucG9sYXJBcmMuYXBwbHkodGhpcyxhcmd1bWVudHMpfSx0cmFuc2xhdGUzZFBvaW50czpmdW5jdGlvbigpe3JldHVybiB4LnRyYW5zbGF0ZTNkUG9pbnRzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdHJhbnNsYXRlM2RTaGFwZXM6ZnVuY3Rpb24oKXtyZXR1cm4geC50cmFuc2xhdGUzZFNoYXBlcy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSx7c2V0U3RhdGU6eC5wb2ludENsYXNzLnByb3RvdHlwZS5zZXRTdGF0ZX0pOyIifSk7QyhmLCJwYXJ0cy1tb3JlL0NvbHVtblB5cmFtaWRTZXJpZXMuanMiLFtmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGYsYSl7dmFyIGI9YS5jbGFtcCxlPWEucGljazthPWEuc2VyaWVzVHlwZTt2YXIgaD1mLnNlcmllc1R5cGVzLmNvbHVtbi5wcm90b3R5cGU7CmEoImNvbHVtbnB5cmFtaWQiLCJjb2x1bW4iLHt9LHt0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGY9YS5jaGFydCx4PWEub3B0aW9ucyxCPWEuZGVuc2U9Mj5hLmNsb3Nlc3RQb2ludFJhbmdlKmEueEF4aXMudHJhbnNBO0I9YS5ib3JkZXJXaWR0aD1lKHguYm9yZGVyV2lkdGgsQj8wOjEpO3ZhciB6PWEueUF4aXMsYz14LnRocmVzaG9sZCxsPWEudHJhbnNsYXRlZFRocmVzaG9sZD16LmdldFRocmVzaG9sZChjKSx3PWUoeC5taW5Qb2ludExlbmd0aCw1KSxwPWEuZ2V0Q29sdW1uTWV0cmljcygpLHk9cC53aWR0aCx2PWEuYmFyVz1NYXRoLm1heCh5LDErMipCKSxtPWEucG9pbnRYT2Zmc2V0PXAub2Zmc2V0O2YuaW52ZXJ0ZWQmJihsLT0uNSk7eC5wb2ludFBhZGRpbmcmJih2PU1hdGguY2VpbCh2KSk7aC50cmFuc2xhdGUuYXBwbHkoYSk7YS5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihuKXt2YXIgZD1lKG4ueUJvdHRvbSxsKSxnPTk5OStNYXRoLmFicyhkKSxrPWIobi5wbG90WSwKLWcsei5sZW4rZyk7Zz1uLnBsb3RYK207dmFyIHU9di8yLEE9TWF0aC5taW4oayxkKTtkPU1hdGgubWF4KGssZCktQTt2YXIgcjtuLmJhclg9ZztuLnBvaW50V2lkdGg9eTtuLnRvb2x0aXBQb3M9Zi5pbnZlcnRlZD9bei5sZW4rei5wb3MtZi5wbG90TGVmdC1rLGEueEF4aXMubGVuLWctdSxkXTpbZyt1LGsrei5wb3MtZi5wbG90VG9wLGRdO2s9Yysobi50b3RhbHx8bi55KTsicGVyY2VudCI9PT14LnN0YWNraW5nJiYoaz1jKygwPm4ueSk/LTEwMDoxMDApO2s9ei50b1BpeGVscyhrLCEwKTt2YXIgRD0ocj1mLnBsb3RIZWlnaHQtay0oZi5wbG90SGVpZ2h0LWwpKT91KihBLWspL3I6MDt2YXIgaD1yP3UqKEErZC1rKS9yOjA7cj1nLUQrdTtEPWcrRCt1O3ZhciBwPWcraCt1O2g9Zy1oK3U7dmFyIHE9QS13O3ZhciBFPUErZDswPm4ueSYmKHE9QSxFPUErZCt3KTtmLmludmVydGVkJiYocD1mLnBsb3RXaWR0aC1BLHI9ay0oZi5wbG90V2lkdGgtbCksRD11KihrLXApL3IsaD11KihrLShwLQpkKSkvcixyPWcrdStELEQ9ci0yKkQscD1nLWgrdSxoPWcraCt1LHE9QSxFPUErZC13LDA+bi55JiYoRT1BK2QrdykpO24uc2hhcGVUeXBlPSJwYXRoIjtuLnNoYXBlQXJncz17eDpyLHk6cSx3aWR0aDpELXIsaGVpZ2h0OmQsZDpbWyJNIixyLHFdLFsiTCIsRCxxXSxbIkwiLHAsRV0sWyJMIixoLEVdLFsiWiJdXX19KX19KTsiIn0pO0MoZiwicGFydHMtbW9yZS9HYXVnZVNlcmllcy5qcyIsW2ZbInBhcnRzL0dsb2JhbHMuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhKXt2YXIgYj1hLmNsYW1wLGU9YS5pc051bWJlcixoPWEubWVyZ2UscT1hLnBpY2ssdD1hLnBJbnQ7YT1hLnNlcmllc1R5cGU7dmFyIHg9Zi5TZXJpZXMsQj1mLlRyYWNrZXJNaXhpbjthKCJnYXVnZSIsImxpbmUiLHtkYXRhTGFiZWxzOntib3JkZXJDb2xvcjoiI2NjY2NjYyIsYm9yZGVyUmFkaXVzOjMsYm9yZGVyV2lkdGg6MSxjcm9wOiExLGRlZmVyOiExLGVuYWJsZWQ6ITAsdmVydGljYWxBbGlnbjoidG9wIiwKeToxNSx6SW5kZXg6Mn0sZGlhbDp7fSxwaXZvdDp7fSx0b29sdGlwOntoZWFkZXJGb3JtYXQ6IiJ9LHNob3dJbkxlZ2VuZDohMX0se2FuZ3VsYXI6ITAsZGlyZWN0VG91Y2g6ITAsZHJhd0dyYXBoOmYubm9vcCxmaXhlZEJveDohMCxmb3JjZURMOiEwLG5vU2hhcmVkVG9vbHRpcDohMCx0cmFja2VyR3JvdXBzOlsiZ3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiXSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnlBeGlzLGM9dGhpcy5vcHRpb25zLGw9YS5jZW50ZXI7dGhpcy5nZW5lcmF0ZVBvaW50cygpO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZil7dmFyIHA9aChjLmRpYWwsZi5kaWFsKSx3PXQocShwLnJhZGl1cywiODAlIikpKmxbMl0vMjAwLHY9dChxKHAuYmFzZUxlbmd0aCwiNzAlIikpKncvMTAwLG09dChxKHAucmVhckxlbmd0aCwiMTAlIikpKncvMTAwLG49cC5iYXNlV2lkdGh8fDMsZD1wLnRvcFdpZHRofHwxLGc9Yy5vdmVyc2hvb3Qsaz1hLnN0YXJ0QW5nbGVSYWQrCmEudHJhbnNsYXRlKGYueSxudWxsLG51bGwsbnVsbCwhMCk7aWYoZShnKXx8ITE9PT1jLndyYXApZz1lKGcpP2cvMTgwKk1hdGguUEk6MCxrPWIoayxhLnN0YXJ0QW5nbGVSYWQtZyxhLmVuZEFuZ2xlUmFkK2cpO2s9MTgwKmsvTWF0aC5QSTtmLnNoYXBlVHlwZT0icGF0aCI7Zi5zaGFwZUFyZ3M9e2Q6cC5wYXRofHxbWyJNIiwtbSwtbi8yXSxbIkwiLHYsLW4vMl0sWyJMIix3LC1kLzJdLFsiTCIsdyxkLzJdLFsiTCIsdixuLzJdLFsiTCIsLW0sbi8yXSxbIloiXV0sdHJhbnNsYXRlWDpsWzBdLHRyYW5zbGF0ZVk6bFsxXSxyb3RhdGlvbjprfTtmLnBsb3RYPWxbMF07Zi5wbG90WT1sWzFdfSl9LGRyYXdQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS5jaGFydCxiPWEueUF4aXMuY2VudGVyLGU9YS5waXZvdCxmPWEub3B0aW9ucyx0PWYucGl2b3Qsdj1jLnJlbmRlcmVyO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIG49Yi5ncmFwaGljLGQ9Yi5zaGFwZUFyZ3MsZz0KZC5kLGs9aChmLmRpYWwsYi5kaWFsKTtuPyhuLmFuaW1hdGUoZCksZC5kPWcpOmIuZ3JhcGhpYz12W2Iuc2hhcGVUeXBlXShkKS5hdHRyKHtyb3RhdGlvbjpkLnJvdGF0aW9uLHpJbmRleDoxfSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtZGlhbCIpLmFkZChhLmdyb3VwKTtpZighYy5zdHlsZWRNb2RlKWIuZ3JhcGhpY1tuPyJhbmltYXRlIjoiYXR0ciJdKHtzdHJva2U6ay5ib3JkZXJDb2xvcnx8Im5vbmUiLCJzdHJva2Utd2lkdGgiOmsuYm9yZGVyV2lkdGh8fDAsZmlsbDprLmJhY2tncm91bmRDb2xvcnx8IiMwMDAwMDAifSl9KTtlP2UuYW5pbWF0ZSh7dHJhbnNsYXRlWDpiWzBdLHRyYW5zbGF0ZVk6YlsxXX0pOihhLnBpdm90PXYuY2lyY2xlKDAsMCxxKHQucmFkaXVzLDUpKS5hdHRyKHt6SW5kZXg6Mn0pLmFkZENsYXNzKCJoaWdoY2hhcnRzLXBpdm90IikudHJhbnNsYXRlKGJbMF0sYlsxXSkuYWRkKGEuZ3JvdXApLGMuc3R5bGVkTW9kZXx8YS5waXZvdC5hdHRyKHsic3Ryb2tlLXdpZHRoIjp0LmJvcmRlcldpZHRofHwKMCxzdHJva2U6dC5ib3JkZXJDb2xvcnx8IiNjY2NjY2MiLGZpbGw6dC5iYWNrZ3JvdW5kQ29sb3J8fCIjMDAwMDAwIn0pKX0sYW5pbWF0ZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzO2F8fGMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5ncmFwaGljO2ImJihiLmF0dHIoe3JvdGF0aW9uOjE4MCpjLnlBeGlzLnN0YXJ0QW5nbGVSYWQvTWF0aC5QSX0pLGIuYW5pbWF0ZSh7cm90YXRpb246YS5zaGFwZUFyZ3Mucm90YXRpb259LGMub3B0aW9ucy5hbmltYXRpb24pKX0pfSxyZW5kZXI6ZnVuY3Rpb24oKXt0aGlzLmdyb3VwPXRoaXMucGxvdEdyb3VwKCJncm91cCIsInNlcmllcyIsdGhpcy52aXNpYmxlPyJ2aXNpYmxlIjoiaGlkZGVuIix0aGlzLm9wdGlvbnMuekluZGV4LHRoaXMuY2hhcnQuc2VyaWVzR3JvdXApO3gucHJvdG90eXBlLnJlbmRlci5jYWxsKHRoaXMpO3RoaXMuZ3JvdXAuY2xpcCh0aGlzLmNoYXJ0LmNsaXBSZWN0KX0sc2V0RGF0YTpmdW5jdGlvbihhLGMpe3gucHJvdG90eXBlLnNldERhdGEuY2FsbCh0aGlzLAphLCExKTt0aGlzLnByb2Nlc3NEYXRhKCk7dGhpcy5nZW5lcmF0ZVBvaW50cygpO3EoYywhMCkmJnRoaXMuY2hhcnQucmVkcmF3KCl9LGhhc0RhdGE6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucG9pbnRzLmxlbmd0aH0sZHJhd1RyYWNrZXI6QiYmQi5kcmF3VHJhY2tlclBvaW50fSx7c2V0U3RhdGU6ZnVuY3Rpb24oYSl7dGhpcy5zdGF0ZT1hfX0pOyIifSk7QyhmLCJwYXJ0cy1tb3JlL0JveFBsb3RTZXJpZXMuanMiLFtmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGYsYSl7dmFyIGI9YS5waWNrO2E9YS5zZXJpZXNUeXBlO3ZhciBlPWYubm9vcCxoPWYuc2VyaWVzVHlwZXM7YSgiYm94cGxvdCIsImNvbHVtbiIse3RocmVzaG9sZDpudWxsLHRvb2x0aXA6e3BvaW50Rm9ybWF0Oic8c3BhbiBzdHlsZT0iY29sb3I6e3BvaW50LmNvbG9yfSI+XHUyNWNmPC9zcGFuPiA8Yj4ge3Nlcmllcy5uYW1lfTwvYj48YnIvPk1heGltdW06IHtwb2ludC5oaWdofTxici8+VXBwZXIgcXVhcnRpbGU6IHtwb2ludC5xM308YnIvPk1lZGlhbjoge3BvaW50Lm1lZGlhbn08YnIvPkxvd2VyIHF1YXJ0aWxlOiB7cG9pbnQucTF9PGJyLz5NaW5pbXVtOiB7cG9pbnQubG93fTxici8+J30sCndoaXNrZXJMZW5ndGg6IjUwJSIsZmlsbENvbG9yOiIjZmZmZmZmIixsaW5lV2lkdGg6MSxtZWRpYW5XaWR0aDoyLHdoaXNrZXJXaWR0aDoyfSx7cG9pbnRBcnJheU1hcDpbImxvdyIsInExIiwibWVkaWFuIiwicTMiLCJoaWdoIl0sdG9ZRGF0YTpmdW5jdGlvbihhKXtyZXR1cm5bYS5sb3csYS5xMSxhLm1lZGlhbixhLnEzLGEuaGlnaF19LHBvaW50VmFsS2V5OiJoaWdoIixwb2ludEF0dHJpYnM6ZnVuY3Rpb24oKXtyZXR1cm57fX0sZHJhd0RhdGFMYWJlbHM6ZSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnlBeGlzLGI9dGhpcy5wb2ludEFycmF5TWFwO2guY29sdW1uLnByb3RvdHlwZS50cmFuc2xhdGUuYXBwbHkodGhpcyk7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihlKXtiLmZvckVhY2goZnVuY3Rpb24oYil7bnVsbCE9PWVbYl0mJihlW2IrIlBsb3QiXT1hLnRyYW5zbGF0ZShlW2JdLDAsMSwwLDEpKX0pO2UucGxvdEhpZ2g9ZS5oaWdoUGxvdH0pfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMsZT1hLm9wdGlvbnMsaD1hLmNoYXJ0LGY9aC5yZW5kZXJlcix6LGMsbCx3LHAseSx2PTAsbSxuLGQsZyxrPSExIT09YS5kb1F1YXJ0aWxlcyx1LEE9YS5vcHRpb25zLndoaXNrZXJMZW5ndGg7YS5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihyKXt2YXIgRD1yLmdyYXBoaWMsST1EPyJhbmltYXRlIjoiYXR0ciIscT1yLnNoYXBlQXJncyxHPXt9LEU9e30sRj17fSxIPXt9LHQ9ci5jb2xvcnx8YS5jb2xvcjsidW5kZWZpbmVkIiE9PXR5cGVvZiByLnBsb3RZJiYobT1NYXRoLnJvdW5kKHEud2lkdGgpLG49TWF0aC5mbG9vcihxLngpLGQ9bittLGc9TWF0aC5yb3VuZChtLzIpLHo9TWF0aC5mbG9vcihrP3IucTFQbG90OnIubG93UGxvdCksYz1NYXRoLmZsb29yKGs/ci5xM1Bsb3Q6ci5sb3dQbG90KSxsPU1hdGguZmxvb3Ioci5oaWdoUGxvdCksdz1NYXRoLmZsb29yKHIubG93UGxvdCksRHx8KHIuZ3JhcGhpYz1EPWYuZygicG9pbnQiKS5hZGQoYS5ncm91cCksci5zdGVtPWYucGF0aCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLWJveHBsb3Qtc3RlbSIpLmFkZChEKSwKQSYmKHIud2hpc2tlcnM9Zi5wYXRoKCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYm94cGxvdC13aGlza2VyIikuYWRkKEQpKSxrJiYoci5ib3g9Zi5wYXRoKHZvaWQgMCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYm94cGxvdC1ib3giKS5hZGQoRCkpLHIubWVkaWFuU2hhcGU9Zi5wYXRoKHZvaWQgMCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYm94cGxvdC1tZWRpYW4iKS5hZGQoRCkpLGguc3R5bGVkTW9kZXx8KEUuc3Ryb2tlPXIuc3RlbUNvbG9yfHxlLnN0ZW1Db2xvcnx8dCxFWyJzdHJva2Utd2lkdGgiXT1iKHIuc3RlbVdpZHRoLGUuc3RlbVdpZHRoLGUubGluZVdpZHRoKSxFLmRhc2hzdHlsZT1yLnN0ZW1EYXNoU3R5bGV8fGUuc3RlbURhc2hTdHlsZXx8ZS5kYXNoU3R5bGUsci5zdGVtLmF0dHIoRSksQSYmKEYuc3Ryb2tlPXIud2hpc2tlckNvbG9yfHxlLndoaXNrZXJDb2xvcnx8dCxGWyJzdHJva2Utd2lkdGgiXT1iKHIud2hpc2tlcldpZHRoLGUud2hpc2tlcldpZHRoLGUubGluZVdpZHRoKSwKRi5kYXNoc3R5bGU9ci53aGlza2VyRGFzaFN0eWxlfHxlLndoaXNrZXJEYXNoU3R5bGV8fGUuZGFzaFN0eWxlLHIud2hpc2tlcnMuYXR0cihGKSksayYmKEcuZmlsbD1yLmZpbGxDb2xvcnx8ZS5maWxsQ29sb3J8fHQsRy5zdHJva2U9ZS5saW5lQ29sb3J8fHQsR1sic3Ryb2tlLXdpZHRoIl09ZS5saW5lV2lkdGh8fDAsRy5kYXNoc3R5bGU9ci5ib3hEYXNoU3R5bGV8fGUuYm94RGFzaFN0eWxlfHxlLmRhc2hTdHlsZSxyLmJveC5hdHRyKEcpKSxILnN0cm9rZT1yLm1lZGlhbkNvbG9yfHxlLm1lZGlhbkNvbG9yfHx0LEhbInN0cm9rZS13aWR0aCJdPWIoci5tZWRpYW5XaWR0aCxlLm1lZGlhbldpZHRoLGUubGluZVdpZHRoKSxILmRhc2hzdHlsZT1yLm1lZGlhbkRhc2hTdHlsZXx8ZS5tZWRpYW5EYXNoU3R5bGV8fGUuZGFzaFN0eWxlLHIubWVkaWFuU2hhcGUuYXR0cihIKSkseT1yLnN0ZW0uc3Ryb2tlV2lkdGgoKSUyLzIsdj1uK2creSxEPVtbIk0iLHYsY10sWyJMIix2LGxdLFsiTSIsCnYsel0sWyJMIix2LHddXSxyLnN0ZW1bSV0oe2Q6RH0pLGsmJih5PXIuYm94LnN0cm9rZVdpZHRoKCklMi8yLHo9TWF0aC5mbG9vcih6KSt5LGM9TWF0aC5mbG9vcihjKSt5LG4rPXksZCs9eSxEPVtbIk0iLG4sY10sWyJMIixuLHpdLFsiTCIsZCx6XSxbIkwiLGQsY10sWyJMIixuLGNdLFsiWiJdXSxyLmJveFtJXSh7ZDpEfSkpLEEmJih5PXIud2hpc2tlcnMuc3Ryb2tlV2lkdGgoKSUyLzIsbCs9eSx3Kz15LHU9LyUkLy50ZXN0KEEpP2cqcGFyc2VGbG9hdChBKS8xMDA6QS8yLEQ9W1siTSIsdi11LGxdLFsiTCIsdit1LGxdLFsiTSIsdi11LHddLFsiTCIsdit1LHddXSxyLndoaXNrZXJzW0ldKHtkOkR9KSkscD1NYXRoLnJvdW5kKHIubWVkaWFuUGxvdCkseT1yLm1lZGlhblNoYXBlLnN0cm9rZVdpZHRoKCklMi8yLHArPXksRD1bWyJNIixuLHBdLFsiTCIsZCxwXV0sci5tZWRpYW5TaGFwZVtJXSh7ZDpEfSkpfSl9LHNldFN0YWNrZWRQb2ludHM6ZX0pOyIifSk7QyhmLCJwYXJ0cy1tb3JlL0Vycm9yQmFyU2VyaWVzLmpzIiwKW2ZbInBhcnRzL0dsb2JhbHMuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhKXthPWEuc2VyaWVzVHlwZTt2YXIgYj1mLm5vb3AsZT1mLnNlcmllc1R5cGVzO2EoImVycm9yYmFyIiwiYm94cGxvdCIse2NvbG9yOiIjMDAwMDAwIixncm91cGluZzohMSxsaW5rZWRUbzoiOnByZXZpb3VzIix0b29sdGlwOntwb2ludEZvcm1hdDonPHNwYW4gc3R5bGU9ImNvbG9yOntwb2ludC5jb2xvcn0iPlx1MjVjZjwvc3Bhbj4ge3Nlcmllcy5uYW1lfTogPGI+e3BvaW50Lmxvd308L2I+IC0gPGI+e3BvaW50LmhpZ2h9PC9iPjxici8+J30sd2hpc2tlcldpZHRoOm51bGx9LHt0eXBlOiJlcnJvcmJhciIscG9pbnRBcnJheU1hcDpbImxvdyIsImhpZ2giXSx0b1lEYXRhOmZ1bmN0aW9uKGEpe3JldHVyblthLmxvdyxhLmhpZ2hdfSxwb2ludFZhbEtleToiaGlnaCIsZG9RdWFydGlsZXM6ITEsZHJhd0RhdGFMYWJlbHM6ZS5hcmVhcmFuZ2U/ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvaW50VmFsS2V5OwplLmFyZWFyYW5nZS5wcm90b3R5cGUuZHJhd0RhdGFMYWJlbHMuY2FsbCh0aGlzKTt0aGlzLmRhdGEuZm9yRWFjaChmdW5jdGlvbihiKXtiLnk9YlthXX0pfTpiLGdldENvbHVtbk1ldHJpY3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saW5rZWRQYXJlbnQmJnRoaXMubGlua2VkUGFyZW50LmNvbHVtbk1ldHJpY3N8fGUuY29sdW1uLnByb3RvdHlwZS5nZXRDb2x1bW5NZXRyaWNzLmNhbGwodGhpcyl9fSk7IiJ9KTtDKGYsInBhcnRzLW1vcmUvV2F0ZXJmYWxsU2VyaWVzLmpzIixbZlsicGFydHMvQXhpcy5qcyJdLGZbInBhcnRzL0NoYXJ0LmpzIl0sZlsicGFydHMvR2xvYmFscy5qcyJdLGZbInBhcnRzL1BvaW50LmpzIl0sZlsicGFydHMvU3RhY2tpbmcuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhLGIsZSxoLHEpe3ZhciB0PXEuYWRkRXZlbnQseD1xLmFycmF5TWF4LEI9cS5hcnJheU1pbix6PXEuY29ycmVjdEZsb2F0LGM9cS5pc051bWJlcixsPXEub2JqZWN0RWFjaCwKdz1xLnBpY2s7cT1xLnNlcmllc1R5cGU7dmFyIHA9Yi5TZXJpZXMseT1iLnNlcmllc1R5cGVzLHY7KGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoKXt2YXIgZD10aGlzLndhdGVyZmFsbC5zdGFja3M7ZCYmKGQuY2hhbmdlZD0hMSxkZWxldGUgZC5hbHJlYWR5Q2hhbmdlZCl9ZnVuY3Rpb24gZCgpe3ZhciBkPXRoaXMub3B0aW9ucy5zdGFja0xhYmVscztkJiZkLmVuYWJsZWQmJnRoaXMud2F0ZXJmYWxsLnN0YWNrcyYmdGhpcy53YXRlcmZhbGwucmVuZGVyU3RhY2tUb3RhbHMoKX1mdW5jdGlvbiBnKCl7Zm9yKHZhciBkPXRoaXMuYXhlcyxnPXRoaXMuc2VyaWVzLGs9Zy5sZW5ndGg7ay0tOylnW2tdLm9wdGlvbnMuc3RhY2tpbmcmJihkLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5pc1hBeGlzfHwoZC53YXRlcmZhbGwuc3RhY2tzLmNoYW5nZWQ9ITApfSksaz0wKX1mdW5jdGlvbiBrKCl7dGhpcy53YXRlcmZhbGx8fCh0aGlzLndhdGVyZmFsbD1uZXcgdSh0aGlzKSl9dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGQpe3RoaXMuYXhpcz0KZDt0aGlzLnN0YWNrcz17Y2hhbmdlZDohMX19ZC5wcm90b3R5cGUucmVuZGVyU3RhY2tUb3RhbHM9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmF4aXMsZz1kLndhdGVyZmFsbC5zdGFja3Msaz1kLnN0YWNraW5nJiZkLnN0YWNraW5nLnN0YWNrVG90YWxHcm91cCxhPW5ldyBoKGQsZC5vcHRpb25zLnN0YWNrTGFiZWxzLCExLDAsdm9pZCAwKTt0aGlzLmR1bW15U3RhY2tJdGVtPWE7bChnLGZ1bmN0aW9uKGQpe2woZCxmdW5jdGlvbihkKXthLnRvdGFsPWQuc3RhY2tUb3RhbDtkLmxhYmVsJiYoYS5sYWJlbD1kLmxhYmVsKTtoLnByb3RvdHlwZS5yZW5kZXIuY2FsbChhLGspO2QubGFiZWw9YS5sYWJlbDtkZWxldGUgYS5sYWJlbH0pfSk7YS50b3RhbD1udWxsfTtyZXR1cm4gZH0oKTthLkNvbXBvc2l0aW9uPXU7YS5jb21wb3NlPWZ1bmN0aW9uKGEscil7dChhLCJpbml0IixrKTt0KGEsImFmdGVyQnVpbGRTdGFja3MiLGMpO3QoYSwiYWZ0ZXJSZW5kZXIiLGQpO3QociwiYmVmb3JlUmVkcmF3IiwKZyl9fSkodnx8KHY9e30pKTtxKCJ3YXRlcmZhbGwiLCJjb2x1bW4iLHtkYXRhTGFiZWxzOntpbnNpZGU6ITB9LGxpbmVXaWR0aDoxLGxpbmVDb2xvcjoiIzMzMzMzMyIsZGFzaFN0eWxlOiJEb3QiLGJvcmRlckNvbG9yOiIjMzMzMzMzIixzdGF0ZXM6e2hvdmVyOntsaW5lV2lkdGhQbHVzOjB9fX0se3BvaW50VmFsS2V5OiJ5IixzaG93TGluZTohMCxnZW5lcmF0ZVBvaW50czpmdW5jdGlvbigpe3ZhciBhO3kuY29sdW1uLnByb3RvdHlwZS5nZW5lcmF0ZVBvaW50cy5hcHBseSh0aGlzKTt2YXIgYz0wO2ZvcihhPXRoaXMucG9pbnRzLmxlbmd0aDtjPGE7YysrKXt2YXIgZD10aGlzLnBvaW50c1tjXTt2YXIgZz10aGlzLnByb2Nlc3NlZFlEYXRhW2NdO2lmKGQuaXNJbnRlcm1lZGlhdGVTdW18fGQuaXNTdW0pZC55PXooZyl9fSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsYz10aGlzLnlBeGlzLGQsZz13KGEubWluUG9pbnRMZW5ndGgsNSksaz1nLzIsdT1hLnRocmVzaG9sZCwKQT1hLnN0YWNraW5nLHI9Yy53YXRlcmZhbGwuc3RhY2tzW3RoaXMuc3RhY2tLZXldO3kuY29sdW1uLnByb3RvdHlwZS50cmFuc2xhdGUuYXBwbHkodGhpcyk7dmFyIGI9ZD11O3ZhciBlPXRoaXMucG9pbnRzO3ZhciBsPTA7Zm9yKGE9ZS5sZW5ndGg7bDxhO2wrKyl7dmFyIGg9ZVtsXTt2YXIgZj10aGlzLnByb2Nlc3NlZFlEYXRhW2xdO3ZhciBwPWguc2hhcGVBcmdzO3ZhciBxPVswLGZdO3ZhciB2PWgueTtpZihBKXtpZihyKXtxPXJbbF07aWYoIm92ZXJsYXAiPT09QSl7dmFyIHQ9cS5zdGFja1N0YXRlW3Euc3RhdGVJbmRleC0tXTt0PTA8PXY/dDp0LXY7T2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwocSwiYWJzb2x1dGVQb3MiKSYmZGVsZXRlIHEuYWJzb2x1dGVQb3M7T2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwocSwiYWJzb2x1dGVOZWciKSYmZGVsZXRlIHEuYWJzb2x1dGVOZWd9ZWxzZSAwPD12Pyh0PXEudGhyZXNob2xkK3EucG9zVG90YWwscS5wb3NUb3RhbC09dik6KHQ9CnEudGhyZXNob2xkK3EubmVnVG90YWwscS5uZWdUb3RhbC09dix0LT12KSwhcS5wb3NUb3RhbCYmT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwocSwiYWJzb2x1dGVQb3MiKSYmKHEucG9zVG90YWw9cS5hYnNvbHV0ZVBvcyxkZWxldGUgcS5hYnNvbHV0ZVBvcyksIXEubmVnVG90YWwmJk9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHEsImFic29sdXRlTmVnIikmJihxLm5lZ1RvdGFsPXEuYWJzb2x1dGVOZWcsZGVsZXRlIHEuYWJzb2x1dGVOZWcpO2guaXNTdW18fChxLmNvbm5lY3RvclRocmVzaG9sZD1xLnRocmVzaG9sZCtxLnN0YWNrVG90YWwpO2MucmV2ZXJzZWQ/KGY9MDw9dj90LXY6dCt2LHY9dCk6KGY9dCx2PXQtdik7aC5iZWxvdz1mPD13KHUsMCk7cC55PWMudHJhbnNsYXRlKGYsMCwxLDAsMSk7cC5oZWlnaHQ9TWF0aC5hYnMocC55LWMudHJhbnNsYXRlKHYsMCwxLDAsMSkpfWlmKHY9Yy53YXRlcmZhbGwuZHVtbXlTdGFja0l0ZW0pdi54PWwsdi5sYWJlbD1yW2xdLmxhYmVsLAp2LnNldE9mZnNldCh0aGlzLnBvaW50WE9mZnNldHx8MCx0aGlzLmJhcld8fDAsdGhpcy5zdGFja2VkWU5lZ1tsXSx0aGlzLnN0YWNrZWRZUG9zW2xdKX1lbHNlIHQ9TWF0aC5tYXgoYixiK3YpK3FbMF0scC55PWMudHJhbnNsYXRlKHQsMCwxLDAsMSksaC5pc1N1bT8ocC55PWMudHJhbnNsYXRlKHFbMV0sMCwxLDAsMSkscC5oZWlnaHQ9TWF0aC5taW4oYy50cmFuc2xhdGUocVswXSwwLDEsMCwxKSxjLmxlbiktcC55KTpoLmlzSW50ZXJtZWRpYXRlU3VtPygwPD12PyhmPXFbMV0rZCx2PWQpOihmPWQsdj1xWzFdK2QpLGMucmV2ZXJzZWQmJihmXj12LHZePWYsZl49dikscC55PWMudHJhbnNsYXRlKGYsMCwxLDAsMSkscC5oZWlnaHQ9TWF0aC5hYnMocC55LU1hdGgubWluKGMudHJhbnNsYXRlKHYsMCwxLDAsMSksYy5sZW4pKSxkKz1xWzFdKToocC5oZWlnaHQ9MDxmP2MudHJhbnNsYXRlKGIsMCwxLDAsMSktcC55OmMudHJhbnNsYXRlKGIsMCwxLDAsMSktYy50cmFuc2xhdGUoYi1mLDAsCjEsMCwxKSxiKz1mLGguYmVsb3c9Yjx3KHUsMCkpLDA+cC5oZWlnaHQmJihwLnkrPXAuaGVpZ2h0LHAuaGVpZ2h0Kj0tMSk7aC5wbG90WT1wLnk9TWF0aC5yb3VuZChwLnkpLXRoaXMuYm9yZGVyV2lkdGglMi8yO3AuaGVpZ2h0PU1hdGgubWF4KE1hdGgucm91bmQocC5oZWlnaHQpLC4wMDEpO2gueUJvdHRvbT1wLnkrcC5oZWlnaHQ7cC5oZWlnaHQ8PWcmJiFoLmlzTnVsbD8ocC5oZWlnaHQ9ZyxwLnktPWssaC5wbG90WT1wLnksaC5taW5Qb2ludExlbmd0aE9mZnNldD0wPmgueT8tazprKTooaC5pc051bGwmJihwLndpZHRoPTApLGgubWluUG9pbnRMZW5ndGhPZmZzZXQ9MCk7cD1oLnBsb3RZKyhoLm5lZ2F0aXZlP3AuaGVpZ2h0OjApO3RoaXMuY2hhcnQuaW52ZXJ0ZWQ/aC50b29sdGlwUG9zWzBdPWMubGVuLXA6aC50b29sdGlwUG9zWzFdPXB9fSxwcm9jZXNzRGF0YTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLm9wdGlvbnMsZD10aGlzLnlEYXRhLGc9Yy5kYXRhLGs9ZC5sZW5ndGgsdT0KYy50aHJlc2hvbGR8fDAsYixyLGUsbCxoO2ZvcihoPXI9Yj1lPWw9MDtoPGs7aCsrKXt2YXIgbT1kW2hdO3ZhciBmPWcmJmdbaF0/Z1toXTp7fTsic3VtIj09PW18fGYuaXNTdW0/ZFtoXT16KHIpOiJpbnRlcm1lZGlhdGVTdW0iPT09bXx8Zi5pc0ludGVybWVkaWF0ZVN1bT8oZFtoXT16KGIpLGI9MCk6KHIrPW0sYis9bSk7ZT1NYXRoLm1pbihyLGUpO2w9TWF0aC5tYXgocixsKX1wLnByb3RvdHlwZS5wcm9jZXNzRGF0YS5jYWxsKHRoaXMsYSk7Yy5zdGFja2luZ3x8KHRoaXMuZGF0YU1pbj1lK3UsdGhpcy5kYXRhTWF4PWwpfSx0b1lEYXRhOmZ1bmN0aW9uKGMpe3JldHVybiBjLmlzU3VtPyJzdW0iOmMuaXNJbnRlcm1lZGlhdGVTdW0/ImludGVybWVkaWF0ZVN1bSI6Yy55fSx1cGRhdGVQYXJhbGxlbEFycmF5czpmdW5jdGlvbihjLGEpe3AucHJvdG90eXBlLnVwZGF0ZVBhcmFsbGVsQXJyYXlzLmNhbGwodGhpcyxjLGEpO2lmKCJzdW0iPT09dGhpcy55RGF0YVswXXx8ImludGVybWVkaWF0ZVN1bSI9PT0KdGhpcy55RGF0YVswXSl0aGlzLnlEYXRhWzBdPW51bGx9LHBvaW50QXR0cmliczpmdW5jdGlvbihjLGEpe3ZhciBkPXRoaXMub3B0aW9ucy51cENvbG9yO2QmJiFjLm9wdGlvbnMuY29sb3ImJihjLmNvbG9yPTA8Yy55P2Q6bnVsbCk7Yz15LmNvbHVtbi5wcm90b3R5cGUucG9pbnRBdHRyaWJzLmNhbGwodGhpcyxjLGEpO2RlbGV0ZSBjLmRhc2hzdHlsZTtyZXR1cm4gY30sZ2V0R3JhcGhQYXRoOmZ1bmN0aW9uKCl7cmV0dXJuW1siTSIsMCwwXV19LGdldENyaXNwUGF0aDpmdW5jdGlvbigpe3ZhciBjPXRoaXMuZGF0YSxhPXRoaXMueUF4aXMsZD1jLmxlbmd0aCxnPU1hdGgucm91bmQodGhpcy5ncmFwaC5zdHJva2VXaWR0aCgpKSUyLzIsaz1NYXRoLnJvdW5kKHRoaXMuYm9yZGVyV2lkdGgpJTIvMix1PXRoaXMueEF4aXMucmV2ZXJzZWQsYj10aGlzLnlBeGlzLnJldmVyc2VkLHI9dGhpcy5vcHRpb25zLnN0YWNraW5nLGU9W10saDtmb3IoaD0xO2g8ZDtoKyspe3ZhciBsPWNbaF0uc2hhcGVBcmdzOwp2YXIgZj1jW2gtMV07dmFyIHA9Y1toLTFdLnNoYXBlQXJnczt2YXIgcT1hLndhdGVyZmFsbC5zdGFja3NbdGhpcy5zdGFja0tleV07dmFyIHY9MDxmLnk/LXAuaGVpZ2h0OjA7cSYmcCYmbCYmKHE9cVtoLTFdLHI/KHE9cS5jb25uZWN0b3JUaHJlc2hvbGQsdj1NYXRoLnJvdW5kKGEudHJhbnNsYXRlKHEsMCwxLDAsMSkrKGI/djowKSktZyk6dj1wLnkrZi5taW5Qb2ludExlbmd0aE9mZnNldCtrLWcsZS5wdXNoKFsiTSIsKHAueHx8MCkrKHU/MDpwLndpZHRofHwwKSx2XSxbIkwiLChsLnh8fDApKyh1P2wud2lkdGh8fDA6MCksdl0pKTshciYmZS5sZW5ndGgmJnAmJigwPmYueSYmIWJ8fDA8Zi55JiZiKSYmKGVbZS5sZW5ndGgtMl1bMl0rPXAuaGVpZ2h0LGVbZS5sZW5ndGgtMV1bMl0rPXAuaGVpZ2h0KX1yZXR1cm4gZX0sZHJhd0dyYXBoOmZ1bmN0aW9uKCl7cC5wcm90b3R5cGUuZHJhd0dyYXBoLmNhbGwodGhpcyk7dGhpcy5ncmFwaC5hdHRyKHtkOnRoaXMuZ2V0Q3Jpc3BQYXRoKCl9KX0sCnNldFN0YWNrZWRQb2ludHM6ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGQsZyxrLGMpe2lmKEIpZm9yKGs7azxCO2srKyl3LnN0YWNrU3RhdGVba10rPWM7ZWxzZSB3LnN0YWNrU3RhdGVbMF09ZCxCPXcuc3RhY2tTdGF0ZS5sZW5ndGg7dy5zdGFja1N0YXRlLnB1c2gody5zdGFja1N0YXRlW0ItMV0rZyl9dmFyIGE9dGhpcy5vcHRpb25zLGQ9dGhpcy55QXhpcy53YXRlcmZhbGwuc3RhY2tzLGc9YS50aHJlc2hvbGQsaz1nfHwwLHU9ayxiPXRoaXMuc3RhY2tLZXkscj10aGlzLnhEYXRhLGU9ci5sZW5ndGgsaCxsLGY7dGhpcy55QXhpcy5zdGFja2luZy51c2VQZXJjZW50YWdlPSExO3ZhciBwPWw9Zj1rO2lmKHRoaXMudmlzaWJsZXx8IXRoaXMuY2hhcnQub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXMpe3ZhciBxPWQuY2hhbmdlZDsoaD1kLmFscmVhZHlDaGFuZ2VkKSYmMD5oLmluZGV4T2YoYikmJihxPSEwKTtkW2JdfHwoZFtiXT17fSk7aD1kW2JdO2Zvcih2YXIgdj0wO3Y8ZTt2Kyspe3ZhciB0PQpyW3ZdO2lmKCFoW3RdfHxxKWhbdF09e25lZ1RvdGFsOjAscG9zVG90YWw6MCxzdGFja1RvdGFsOjAsdGhyZXNob2xkOjAsc3RhdGVJbmRleDowLHN0YWNrU3RhdGU6W10sbGFiZWw6cSYmaFt0XT9oW3RdLmxhYmVsOnZvaWQgMH07dmFyIHc9aFt0XTt2YXIgeT10aGlzLnlEYXRhW3ZdOzA8PXk/dy5wb3NUb3RhbCs9eTp3Lm5lZ1RvdGFsKz15O3ZhciB6PWEuZGF0YVt2XTt0PXcuYWJzb2x1dGVQb3M9dy5wb3NUb3RhbDt2YXIgeD13LmFic29sdXRlTmVnPXcubmVnVG90YWw7dy5zdGFja1RvdGFsPXQreDt2YXIgQj13LnN0YWNrU3RhdGUubGVuZ3RoO3omJnouaXNJbnRlcm1lZGlhdGVTdW0/KGMoZixsLDAsZiksZj1sLGw9ZyxrXj11LHVePWssa149dSk6eiYmei5pc1N1bT8oYyhnLHAsQiksaz1nKTooYyhrLHksMCxwKSx6JiYocCs9eSxsKz15KSk7dy5zdGF0ZUluZGV4Kys7dy50aHJlc2hvbGQ9aztrKz13LnN0YWNrVG90YWx9ZC5jaGFuZ2VkPSExO2QuYWxyZWFkeUNoYW5nZWR8fChkLmFscmVhZHlDaGFuZ2VkPQpbXSk7ZC5hbHJlYWR5Q2hhbmdlZC5wdXNoKGIpfX0sZ2V0RXh0cmVtZXM6ZnVuY3Rpb24oKXt2YXIgYz10aGlzLm9wdGlvbnMuc3RhY2tpbmc7aWYoYyl7dmFyIGE9dGhpcy55QXhpczthPWEud2F0ZXJmYWxsLnN0YWNrczt2YXIgZD10aGlzLnN0YWNrZWRZTmVnPVtdO3ZhciBnPXRoaXMuc3RhY2tlZFlQb3M9W107Im92ZXJsYXAiPT09Yz9sKGFbdGhpcy5zdGFja0tleV0sZnVuY3Rpb24oayl7ZC5wdXNoKEIoay5zdGFja1N0YXRlKSk7Zy5wdXNoKHgoay5zdGFja1N0YXRlKSl9KTpsKGFbdGhpcy5zdGFja0tleV0sZnVuY3Rpb24oayl7ZC5wdXNoKGsubmVnVG90YWwray50aHJlc2hvbGQpO2cucHVzaChrLnBvc1RvdGFsK2sudGhyZXNob2xkKX0pO3JldHVybntkYXRhTWluOkIoZCksZGF0YU1heDp4KGcpfX1yZXR1cm57ZGF0YU1pbjp0aGlzLmRhdGFNaW4sZGF0YU1heDp0aGlzLmRhdGFNYXh9fX0se2dldENsYXNzTmFtZTpmdW5jdGlvbigpe3ZhciBjPWUucHJvdG90eXBlLmdldENsYXNzTmFtZS5jYWxsKHRoaXMpOwp0aGlzLmlzU3VtP2MrPSIgaGlnaGNoYXJ0cy1zdW0iOnRoaXMuaXNJbnRlcm1lZGlhdGVTdW0mJihjKz0iIGhpZ2hjaGFydHMtaW50ZXJtZWRpYXRlLXN1bSIpO3JldHVybiBjfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIGModGhpcy55KXx8dGhpcy5pc1N1bXx8ISF0aGlzLmlzSW50ZXJtZWRpYXRlU3VtfX0pOyIiO3YuY29tcG9zZShmLGEpO3JldHVybiB2fSk7QyhmLCJwYXJ0cy1tb3JlL1BvbHlnb25TZXJpZXMuanMiLFtmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsibWl4aW5zL2xlZ2VuZC1zeW1ib2wuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhLGIpe2I9Yi5zZXJpZXNUeXBlO3ZhciBlPWYuU2VyaWVzLGg9Zi5zZXJpZXNUeXBlcztiKCJwb2x5Z29uIiwic2NhdHRlciIse21hcmtlcjp7ZW5hYmxlZDohMSxzdGF0ZXM6e2hvdmVyOntlbmFibGVkOiExfX19LHN0aWNreVRyYWNraW5nOiExLHRvb2x0aXA6e2ZvbGxvd1BvaW50ZXI6ITAscG9pbnRGb3JtYXQ6IiJ9LAp0cmFja0J5QXJlYTohMH0se3R5cGU6InBvbHlnb24iLGdldEdyYXBoUGF0aDpmdW5jdGlvbigpe2Zvcih2YXIgYT1lLnByb3RvdHlwZS5nZXRHcmFwaFBhdGguY2FsbCh0aGlzKSxiPWEubGVuZ3RoKzE7Yi0tOykoYj09PWEubGVuZ3RofHwiTSI9PT1hW2JdWzBdKSYmMDxiJiZhLnNwbGljZShiLDAsWyJaIl0pO3JldHVybiB0aGlzLmFyZWFQYXRoPWF9LGRyYXdHcmFwaDpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5maWxsQ29sb3I9dGhpcy5jb2xvcjtoLmFyZWEucHJvdG90eXBlLmRyYXdHcmFwaC5jYWxsKHRoaXMpfSxkcmF3TGVnZW5kU3ltYm9sOmEuZHJhd1JlY3RhbmdsZSxkcmF3VHJhY2tlcjplLnByb3RvdHlwZS5kcmF3VHJhY2tlcixzZXRTdGFja2VkUG9pbnRzOmYubm9vcH0pOyIifSk7QyhmLCJwYXJ0cy1tb3JlL0J1YmJsZUxlZ2VuZC5qcyIsW2ZbInBhcnRzL0NoYXJ0LmpzIl0sZlsicGFydHMvQ29sb3IuanMiXSxmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMvTGVnZW5kLmpzIl0sCmZbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihmLGEsYixlLGgpe3ZhciBxPWEucGFyc2U7YT1oLmFkZEV2ZW50O3ZhciB0PWguYXJyYXlNYXgseD1oLmFycmF5TWluLEI9aC5pc051bWJlcix6PWgubWVyZ2UsYz1oLm9iamVjdEVhY2gsbD1oLnBpY2ssdz1oLnNldE9wdGlvbnMscD1oLnN0YWJsZVNvcnQseT1oLndyYXA7IiI7dmFyIHY9Yi5TZXJpZXMsbT1iLm5vb3A7dyh7bGVnZW5kOntidWJibGVMZWdlbmQ6e2JvcmRlckNvbG9yOnZvaWQgMCxib3JkZXJXaWR0aDoyLGNsYXNzTmFtZTp2b2lkIDAsY29sb3I6dm9pZCAwLGNvbm5lY3RvckNsYXNzTmFtZTp2b2lkIDAsY29ubmVjdG9yQ29sb3I6dm9pZCAwLGNvbm5lY3RvckRpc3RhbmNlOjYwLGNvbm5lY3RvcldpZHRoOjEsZW5hYmxlZDohMSxsYWJlbHM6e2NsYXNzTmFtZTp2b2lkIDAsYWxsb3dPdmVybGFwOiExLGZvcm1hdDoiIixmb3JtYXR0ZXI6dm9pZCAwLGFsaWduOiJyaWdodCIsc3R5bGU6e2ZvbnRTaXplOjEwLApjb2xvcjp2b2lkIDB9LHg6MCx5OjB9LG1heFNpemU6NjAsbWluU2l6ZToxMCxsZWdlbmRJbmRleDowLHJhbmdlczp7dmFsdWU6dm9pZCAwLGJvcmRlckNvbG9yOnZvaWQgMCxjb2xvcjp2b2lkIDAsY29ubmVjdG9yQ29sb3I6dm9pZCAwfSxzaXplQnk6ImFyZWEiLHNpemVCeUFic29sdXRlVmFsdWU6ITEsekluZGV4OjEselRocmVzaG9sZDowfX19KTt3PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShkLGcpe3RoaXMub3B0aW9ucz10aGlzLnN5bWJvbHM9dGhpcy52aXNpYmxlPXRoaXMucmFuZ2VzPXRoaXMubW92ZW1lbnRYPXRoaXMubWF4TGFiZWw9dGhpcy5sZWdlbmRTeW1ib2w9dGhpcy5sZWdlbmRJdGVtV2lkdGg9dGhpcy5sZWdlbmRJdGVtSGVpZ2h0PXRoaXMubGVnZW5kSXRlbT10aGlzLmxlZ2VuZEdyb3VwPXRoaXMubGVnZW5kPXRoaXMuZm9udE1ldHJpY3M9dGhpcy5jaGFydD12b2lkIDA7dGhpcy5zZXRTdGF0ZT1tO3RoaXMuaW5pdChkLGcpfWEucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZCwKZyl7dGhpcy5vcHRpb25zPWQ7dGhpcy52aXNpYmxlPSEwO3RoaXMuY2hhcnQ9Zy5jaGFydDt0aGlzLmxlZ2VuZD1nfTthLnByb3RvdHlwZS5hZGRUb0xlZ2VuZD1mdW5jdGlvbihkKXtkLnNwbGljZSh0aGlzLm9wdGlvbnMubGVnZW5kSW5kZXgsMCx0aGlzKX07YS5wcm90b3R5cGUuZHJhd0xlZ2VuZFN5bWJvbD1mdW5jdGlvbihkKXt2YXIgZz10aGlzLmNoYXJ0LGs9dGhpcy5vcHRpb25zLGE9bChkLm9wdGlvbnMuaXRlbURpc3RhbmNlLDIwKSxjPWsucmFuZ2VzO3ZhciByPWsuY29ubmVjdG9yRGlzdGFuY2U7dGhpcy5mb250TWV0cmljcz1nLnJlbmRlcmVyLmZvbnRNZXRyaWNzKGsubGFiZWxzLnN0eWxlLmZvbnRTaXplLnRvU3RyaW5nKCkrInB4Iik7YyYmYy5sZW5ndGgmJkIoY1swXS52YWx1ZSk/KHAoYyxmdW5jdGlvbihkLGcpe3JldHVybiBnLnZhbHVlLWQudmFsdWV9KSx0aGlzLnJhbmdlcz1jLHRoaXMuc2V0T3B0aW9ucygpLHRoaXMucmVuZGVyKCksZz10aGlzLmdldE1heExhYmVsU2l6ZSgpLApjPXRoaXMucmFuZ2VzWzBdLnJhZGl1cyxkPTIqYyxyPXItYytnLndpZHRoLHI9MDxyP3I6MCx0aGlzLm1heExhYmVsPWcsdGhpcy5tb3ZlbWVudFg9ImxlZnQiPT09ay5sYWJlbHMuYWxpZ24/cjowLHRoaXMubGVnZW5kSXRlbVdpZHRoPWQrcithLHRoaXMubGVnZW5kSXRlbUhlaWdodD1kK3RoaXMuZm9udE1ldHJpY3MuaC8yKTpkLm9wdGlvbnMuYnViYmxlTGVnZW5kLmF1dG9SYW5nZXM9ITB9O2EucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLnJhbmdlcyxnPXRoaXMub3B0aW9ucyxrPXRoaXMuY2hhcnQuc2VyaWVzW2cuc2VyaWVzSW5kZXhdLGM9dGhpcy5sZWdlbmQuYmFzZWxpbmUsYT17InotaW5kZXgiOmcuekluZGV4LCJzdHJva2Utd2lkdGgiOmcuYm9yZGVyV2lkdGh9LHI9eyJ6LWluZGV4IjpnLnpJbmRleCwic3Ryb2tlLXdpZHRoIjpnLmNvbm5lY3RvcldpZHRofSxiPXRoaXMuZ2V0TGFiZWxTdHlsZXMoKSxlPWsub3B0aW9ucy5tYXJrZXIuZmlsbE9wYWNpdHksCmg9dGhpcy5jaGFydC5zdHlsZWRNb2RlO2QuZm9yRWFjaChmdW5jdGlvbih1LEEpe2h8fChhLnN0cm9rZT1sKHUuYm9yZGVyQ29sb3IsZy5ib3JkZXJDb2xvcixrLmNvbG9yKSxhLmZpbGw9bCh1LmNvbG9yLGcuY29sb3IsMSE9PWU/cShrLmNvbG9yKS5zZXRPcGFjaXR5KGUpLmdldCgicmdiYSIpOmsuY29sb3IpLHIuc3Ryb2tlPWwodS5jb25uZWN0b3JDb2xvcixnLmNvbm5lY3RvckNvbG9yLGsuY29sb3IpKTtkW0FdLnJhZGl1cz10aGlzLmdldFJhbmdlUmFkaXVzKHUudmFsdWUpO2RbQV09eihkW0FdLHtjZW50ZXI6ZFswXS5yYWRpdXMtZFtBXS5yYWRpdXMrY30pO2h8fHooITAsZFtBXSx7YnViYmxlU3R5bGU6eighMSxhKSxjb25uZWN0b3JTdHlsZTp6KCExLHIpLGxhYmVsU3R5bGU6Yn0pfSx0aGlzKX07YS5wcm90b3R5cGUuZ2V0TGFiZWxTdHlsZXM9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm9wdGlvbnMsZz17fSxrPSJsZWZ0Ij09PWQubGFiZWxzLmFsaWduLGE9dGhpcy5sZWdlbmQub3B0aW9ucy5ydGw7CmMoZC5sYWJlbHMuc3R5bGUsZnVuY3Rpb24oZCxrKXsiY29sb3IiIT09ayYmImZvbnRTaXplIiE9PWsmJiJ6LWluZGV4IiE9PWsmJihnW2tdPWQpfSk7cmV0dXJuIHooITEsZyx7ImZvbnQtc2l6ZSI6ZC5sYWJlbHMuc3R5bGUuZm9udFNpemUsZmlsbDpsKGQubGFiZWxzLnN0eWxlLmNvbG9yLCIjMDAwMDAwIiksInotaW5kZXgiOmQuekluZGV4LGFsaWduOmF8fGs/InJpZ2h0IjoibGVmdCJ9KX07YS5wcm90b3R5cGUuZ2V0UmFuZ2VSYWRpdXM9ZnVuY3Rpb24oZCl7dmFyIGc9dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLmNoYXJ0LnNlcmllc1t0aGlzLm9wdGlvbnMuc2VyaWVzSW5kZXhdLmdldFJhZGl1cy5jYWxsKHRoaXMsZy5yYW5nZXNbZy5yYW5nZXMubGVuZ3RoLTFdLnZhbHVlLGcucmFuZ2VzWzBdLnZhbHVlLGcubWluU2l6ZSxnLm1heFNpemUsZCl9O2EucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBkPXRoaXMuY2hhcnQucmVuZGVyZXIsZz10aGlzLm9wdGlvbnMuelRocmVzaG9sZDsKdGhpcy5zeW1ib2xzfHwodGhpcy5zeW1ib2xzPXtjb25uZWN0b3JzOltdLGJ1YmJsZUl0ZW1zOltdLGxhYmVsczpbXX0pO3RoaXMubGVnZW5kU3ltYm9sPWQuZygiYnViYmxlLWxlZ2VuZCIpO3RoaXMubGVnZW5kSXRlbT1kLmcoImJ1YmJsZS1sZWdlbmQtaXRlbSIpO3RoaXMubGVnZW5kU3ltYm9sLnRyYW5zbGF0ZVg9MDt0aGlzLmxlZ2VuZFN5bWJvbC50cmFuc2xhdGVZPTA7dGhpcy5yYW5nZXMuZm9yRWFjaChmdW5jdGlvbihkKXtkLnZhbHVlPj1nJiZ0aGlzLnJlbmRlclJhbmdlKGQpfSx0aGlzKTt0aGlzLmxlZ2VuZFN5bWJvbC5hZGQodGhpcy5sZWdlbmRJdGVtKTt0aGlzLmxlZ2VuZEl0ZW0uYWRkKHRoaXMubGVnZW5kR3JvdXApO3RoaXMuaGlkZU92ZXJsYXBwaW5nTGFiZWxzKCl9O2EucHJvdG90eXBlLnJlbmRlclJhbmdlPWZ1bmN0aW9uKGQpe3ZhciBnPXRoaXMub3B0aW9ucyxrPWcubGFiZWxzLGE9dGhpcy5jaGFydC5yZW5kZXJlcixjPXRoaXMuc3ltYm9scyxyPWMubGFiZWxzLApiPWQuY2VudGVyLGU9TWF0aC5hYnMoZC5yYWRpdXMpLGg9Zy5jb25uZWN0b3JEaXN0YW5jZXx8MCxsPWsuYWxpZ24sbj1rLnN0eWxlLmZvbnRTaXplO2g9dGhpcy5sZWdlbmQub3B0aW9ucy5ydGx8fCJsZWZ0Ij09PWw/LWg6aDtrPWcuY29ubmVjdG9yV2lkdGg7dmFyIGY9dGhpcy5yYW5nZXNbMF0ucmFkaXVzfHwwLHA9Yi1lLWcuYm9yZGVyV2lkdGgvMitrLzI7bj1uLzItKHRoaXMuZm9udE1ldHJpY3MuaC1uKS8yO3ZhciBtPWEuc3R5bGVkTW9kZTsiY2VudGVyIj09PWwmJihoPTAsZy5jb25uZWN0b3JEaXN0YW5jZT0wLGQubGFiZWxTdHlsZS5hbGlnbj0iY2VudGVyIik7bD1wK2cubGFiZWxzLnk7dmFyIHE9ZitoK2cubGFiZWxzLng7Yy5idWJibGVJdGVtcy5wdXNoKGEuY2lyY2xlKGYsYisoKHAlMT8xOi41KS0oayUyPzA6LjUpKSxlKS5hdHRyKG0/e306ZC5idWJibGVTdHlsZSkuYWRkQ2xhc3MoKG0/ImhpZ2hjaGFydHMtY29sb3ItIit0aGlzLm9wdGlvbnMuc2VyaWVzSW5kZXgrCiIgIjoiIikrImhpZ2hjaGFydHMtYnViYmxlLWxlZ2VuZC1zeW1ib2wgIisoZy5jbGFzc05hbWV8fCIiKSkuYWRkKHRoaXMubGVnZW5kU3ltYm9sKSk7Yy5jb25uZWN0b3JzLnB1c2goYS5wYXRoKGEuY3Jpc3BMaW5lKFtbIk0iLGYscF0sWyJMIixmK2gscF1dLGcuY29ubmVjdG9yV2lkdGgpKS5hdHRyKG0/e306ZC5jb25uZWN0b3JTdHlsZSkuYWRkQ2xhc3MoKG0/ImhpZ2hjaGFydHMtY29sb3ItIit0aGlzLm9wdGlvbnMuc2VyaWVzSW5kZXgrIiAiOiIiKSsiaGlnaGNoYXJ0cy1idWJibGUtbGVnZW5kLWNvbm5lY3RvcnMgIisoZy5jb25uZWN0b3JDbGFzc05hbWV8fCIiKSkuYWRkKHRoaXMubGVnZW5kU3ltYm9sKSk7ZD1hLnRleHQodGhpcy5mb3JtYXRMYWJlbChkKSxxLGwrbikuYXR0cihtP3t9OmQubGFiZWxTdHlsZSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYnViYmxlLWxlZ2VuZC1sYWJlbHMgIisoZy5sYWJlbHMuY2xhc3NOYW1lfHwiIikpLmFkZCh0aGlzLmxlZ2VuZFN5bWJvbCk7CnIucHVzaChkKTtkLnBsYWNlZD0hMDtkLmFsaWduQXR0cj17eDpxLHk6bCtufX07YS5wcm90b3R5cGUuZ2V0TWF4TGFiZWxTaXplPWZ1bmN0aW9uKCl7dmFyIGQsZzt0aGlzLnN5bWJvbHMubGFiZWxzLmZvckVhY2goZnVuY3Rpb24oayl7Zz1rLmdldEJCb3goITApO2Q9ZD9nLndpZHRoPmQud2lkdGg/ZzpkOmd9KTtyZXR1cm4gZHx8e319O2EucHJvdG90eXBlLmZvcm1hdExhYmVsPWZ1bmN0aW9uKGQpe3ZhciBnPXRoaXMub3B0aW9ucyxrPWcubGFiZWxzLmZvcm1hdHRlcjtnPWcubGFiZWxzLmZvcm1hdDt2YXIgYT10aGlzLmNoYXJ0Lm51bWJlckZvcm1hdHRlcjtyZXR1cm4gZz9oLmZvcm1hdChnLGQpOms/ay5jYWxsKGQpOmEoZC52YWx1ZSwxKX07YS5wcm90b3R5cGUuaGlkZU92ZXJsYXBwaW5nTGFiZWxzPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5jaGFydCxnPXRoaXMuc3ltYm9sczshdGhpcy5vcHRpb25zLmxhYmVscy5hbGxvd092ZXJsYXAmJmcmJihkLmhpZGVPdmVybGFwcGluZ0xhYmVscyhnLmxhYmVscyksCmcubGFiZWxzLmZvckVhY2goZnVuY3Rpb24oZCxhKXtkLm5ld09wYWNpdHk/ZC5uZXdPcGFjaXR5IT09ZC5vbGRPcGFjaXR5JiZnLmNvbm5lY3RvcnNbYV0uc2hvdygpOmcuY29ubmVjdG9yc1thXS5oaWRlKCl9KSl9O2EucHJvdG90eXBlLmdldFJhbmdlcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMubGVnZW5kLmJ1YmJsZUxlZ2VuZCxnPWQub3B0aW9ucy5yYW5nZXMsayxhPU51bWJlci5NQVhfVkFMVUUsYz0tTnVtYmVyLk1BWF9WQUxVRTtkLmNoYXJ0LnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGQpe2QuaXNCdWJibGUmJiFkLmlnbm9yZVNlcmllcyYmKGs9ZC56RGF0YS5maWx0ZXIoQiksay5sZW5ndGgmJihhPWwoZC5vcHRpb25zLnpNaW4sTWF0aC5taW4oYSxNYXRoLm1heCh4KGspLCExPT09ZC5vcHRpb25zLmRpc3BsYXlOZWdhdGl2ZT9kLm9wdGlvbnMuelRocmVzaG9sZDotTnVtYmVyLk1BWF9WQUxVRSkpKSxjPWwoZC5vcHRpb25zLnpNYXgsTWF0aC5tYXgoYyx0KGspKSkpKX0pOwp2YXIgYj1hPT09Yz9be3ZhbHVlOmN9XTpbe3ZhbHVlOmF9LHt2YWx1ZTooYStjKS8yfSx7dmFsdWU6YyxhdXRvUmFuZ2VzOiEwfV07Zy5sZW5ndGgmJmdbMF0ucmFkaXVzJiZiLnJldmVyc2UoKTtiLmZvckVhY2goZnVuY3Rpb24oZCxrKXtnJiZnW2tdJiYoYltrXT16KCExLGdba10sZCkpfSk7cmV0dXJuIGJ9O2EucHJvdG90eXBlLnByZWRpY3RCdWJibGVTaXplcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMuY2hhcnQsZz10aGlzLmZvbnRNZXRyaWNzLGs9ZC5sZWdlbmQub3B0aW9ucyxhPSJob3Jpem9udGFsIj09PWsubGF5b3V0LGM9YT9kLmxlZ2VuZC5sYXN0TGluZUhlaWdodDowLGI9ZC5wbG90U2l6ZVgsZT1kLnBsb3RTaXplWSxoPWQuc2VyaWVzW3RoaXMub3B0aW9ucy5zZXJpZXNJbmRleF07ZD1NYXRoLmNlaWwoaC5taW5QeFNpemUpO3ZhciBsPU1hdGguY2VpbChoLm1heFB4U2l6ZSk7aD1oLm9wdGlvbnMubWF4U2l6ZTt2YXIgbj1NYXRoLm1pbihlLGIpO2lmKGsuZmxvYXRpbmd8fAohLyUkLy50ZXN0KGgpKWc9bDtlbHNlIGlmKGg9cGFyc2VGbG9hdChoKSxnPShuK2MtZy5oLzIpKmgvMTAwLyhoLzEwMCsxKSxhJiZlLWc+PWJ8fCFhJiZiLWc+PWUpZz1sO3JldHVybltkLE1hdGguY2VpbChnKV19O2EucHJvdG90eXBlLnVwZGF0ZVJhbmdlcz1mdW5jdGlvbihkLGcpe3ZhciBrPXRoaXMubGVnZW5kLm9wdGlvbnMuYnViYmxlTGVnZW5kO2subWluU2l6ZT1kO2subWF4U2l6ZT1nO2sucmFuZ2VzPXRoaXMuZ2V0UmFuZ2VzKCl9O2EucHJvdG90eXBlLmNvcnJlY3RTaXplcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMubGVnZW5kLGc9dGhpcy5jaGFydC5zZXJpZXNbdGhpcy5vcHRpb25zLnNlcmllc0luZGV4XTsxPE1hdGguYWJzKE1hdGguY2VpbChnLm1heFB4U2l6ZSktdGhpcy5vcHRpb25zLm1heFNpemUpJiYodGhpcy51cGRhdGVSYW5nZXModGhpcy5vcHRpb25zLm1pblNpemUsZy5tYXhQeFNpemUpLGQucmVuZGVyKCkpfTtyZXR1cm4gYX0oKTthKGUsImFmdGVyR2V0QWxsSXRlbXMiLApmdW5jdGlvbihhKXt2YXIgZD10aGlzLmJ1YmJsZUxlZ2VuZCxnPXRoaXMub3B0aW9ucyxrPWcuYnViYmxlTGVnZW5kLGM9dGhpcy5jaGFydC5nZXRWaXNpYmxlQnViYmxlU2VyaWVzSW5kZXgoKTtkJiZkLnJhbmdlcyYmZC5yYW5nZXMubGVuZ3RoJiYoay5yYW5nZXMubGVuZ3RoJiYoay5hdXRvUmFuZ2VzPSEhay5yYW5nZXNbMF0uYXV0b1JhbmdlcyksdGhpcy5kZXN0cm95SXRlbShkKSk7MDw9YyYmZy5lbmFibGVkJiZrLmVuYWJsZWQmJihrLnNlcmllc0luZGV4PWMsdGhpcy5idWJibGVMZWdlbmQ9bmV3IGIuQnViYmxlTGVnZW5kKGssdGhpcyksdGhpcy5idWJibGVMZWdlbmQuYWRkVG9MZWdlbmQoYS5hbGxJdGVtcykpfSk7Zi5wcm90b3R5cGUuZ2V0VmlzaWJsZUJ1YmJsZVNlcmllc0luZGV4PWZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuc2VyaWVzLGQ9MDtkPGEubGVuZ3RoOyl7aWYoYVtkXSYmYVtkXS5pc0J1YmJsZSYmYVtkXS52aXNpYmxlJiZhW2RdLnpEYXRhLmxlbmd0aClyZXR1cm4gZDsKZCsrfXJldHVybi0xfTtlLnByb3RvdHlwZS5nZXRMaW5lc0hlaWdodHM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmFsbEl0ZW1zLGQ9W10sZz1hLmxlbmd0aCxrLGM9MDtmb3Ioaz0wO2s8ZztrKyspaWYoYVtrXS5sZWdlbmRJdGVtSGVpZ2h0JiYoYVtrXS5pdGVtSGVpZ2h0PWFba10ubGVnZW5kSXRlbUhlaWdodCksYVtrXT09PWFbZy0xXXx8YVtrKzFdJiZhW2tdLl9sZWdlbmRJdGVtUG9zWzFdIT09YVtrKzFdLl9sZWdlbmRJdGVtUG9zWzFdKXtkLnB1c2goe2hlaWdodDowfSk7dmFyIGI9ZFtkLmxlbmd0aC0xXTtmb3IoYztjPD1rO2MrKylhW2NdLml0ZW1IZWlnaHQ+Yi5oZWlnaHQmJihiLmhlaWdodD1hW2NdLml0ZW1IZWlnaHQpO2Iuc3RlcD1rfXJldHVybiBkfTtlLnByb3RvdHlwZS5yZXRyYW5zbGF0ZUl0ZW1zPWZ1bmN0aW9uKGEpe3ZhciBkLGcsayxjPXRoaXMub3B0aW9ucy5ydGwsYj0wO3RoaXMuYWxsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihyLGUpe2Q9ci5sZWdlbmRHcm91cC50cmFuc2xhdGVYOwpnPXIuX2xlZ2VuZEl0ZW1Qb3NbMV07aWYoKGs9ci5tb3ZlbWVudFgpfHxjJiZyLnJhbmdlcylrPWM/ZC1yLm9wdGlvbnMubWF4U2l6ZS8yOmQrayxyLmxlZ2VuZEdyb3VwLmF0dHIoe3RyYW5zbGF0ZVg6a30pO2U+YVtiXS5zdGVwJiZiKys7ci5sZWdlbmRHcm91cC5hdHRyKHt0cmFuc2xhdGVZOk1hdGgucm91bmQoZythW2JdLmhlaWdodC8yKX0pO3IuX2xlZ2VuZEl0ZW1Qb3NbMV09ZythW2JdLmhlaWdodC8yfSl9O2EodiwibGVnZW5kSXRlbUNsaWNrIixmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQsZD10aGlzLnZpc2libGUsZz10aGlzLmNoYXJ0LmxlZ2VuZDtnJiZnLmJ1YmJsZUxlZ2VuZCYmKHRoaXMudmlzaWJsZT0hZCx0aGlzLmlnbm9yZVNlcmllcz1kLGE9MDw9YS5nZXRWaXNpYmxlQnViYmxlU2VyaWVzSW5kZXgoKSxnLmJ1YmJsZUxlZ2VuZC52aXNpYmxlIT09YSYmKGcudXBkYXRlKHtidWJibGVMZWdlbmQ6e2VuYWJsZWQ6YX19KSxnLmJ1YmJsZUxlZ2VuZC52aXNpYmxlPQphKSx0aGlzLnZpc2libGU9ZCl9KTt5KGYucHJvdG90eXBlLCJkcmF3Q2hhcnRCb3giLGZ1bmN0aW9uKGEsZCxnKXt2YXIgaz10aGlzLmxlZ2VuZCxiPTA8PXRoaXMuZ2V0VmlzaWJsZUJ1YmJsZVNlcmllc0luZGV4KCk7aWYoayYmay5vcHRpb25zLmVuYWJsZWQmJmsuYnViYmxlTGVnZW5kJiZrLm9wdGlvbnMuYnViYmxlTGVnZW5kLmF1dG9SYW5nZXMmJmIpe3ZhciBlPWsuYnViYmxlTGVnZW5kLm9wdGlvbnM7Yj1rLmJ1YmJsZUxlZ2VuZC5wcmVkaWN0QnViYmxlU2l6ZXMoKTtrLmJ1YmJsZUxlZ2VuZC51cGRhdGVSYW5nZXMoYlswXSxiWzFdKTtlLnBsYWNlZHx8KGsuZ3JvdXAucGxhY2VkPSExLGsuYWxsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihkKXtkLmxlZ2VuZEdyb3VwLnRyYW5zbGF0ZVk9bnVsbH0pKTtrLnJlbmRlcigpO3RoaXMuZ2V0TWFyZ2lucygpO3RoaXMuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGQpe2QudmlzaWJsZSYmZC5yZW5kZXIoKTtlLnBsYWNlZHx8KGQuc2V0U2NhbGUoKSwKZC51cGRhdGVOYW1lcygpLGMoZC50aWNrcyxmdW5jdGlvbihkKXtkLmlzTmV3PSEwO2QuaXNOZXdMYWJlbD0hMH0pKX0pO2UucGxhY2VkPSEwO3RoaXMuZ2V0TWFyZ2lucygpO2EuY2FsbCh0aGlzLGQsZyk7ay5idWJibGVMZWdlbmQuY29ycmVjdFNpemVzKCk7ay5yZXRyYW5zbGF0ZUl0ZW1zKGsuZ2V0TGluZXNIZWlnaHRzKCkpfWVsc2UgYS5jYWxsKHRoaXMsZCxnKSxrJiZrLm9wdGlvbnMuZW5hYmxlZCYmay5idWJibGVMZWdlbmQmJihrLnJlbmRlcigpLGsucmV0cmFuc2xhdGVJdGVtcyhrLmdldExpbmVzSGVpZ2h0cygpKSl9KTtiLkJ1YmJsZUxlZ2VuZD13O3JldHVybiBiLkJ1YmJsZUxlZ2VuZH0pO0MoZiwicGFydHMtbW9yZS9CdWJibGVTZXJpZXMuanMiLFtmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMvQ29sb3IuanMiXSxmWyJwYXJ0cy9Qb2ludC5qcyJdLGZbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihmLGEsYixlKXt2YXIgaD1hLnBhcnNlLHE9ZS5hcnJheU1heCwKdD1lLmFycmF5TWluLHg9ZS5jbGFtcCxCPWUuZXh0ZW5kLHo9ZS5pc051bWJlcixjPWUucGljayxsPWUucEludDthPWUuc2VyaWVzVHlwZTtlPWYuQXhpczt2YXIgdz1mLm5vb3AscD1mLlNlcmllcyx5PWYuc2VyaWVzVHlwZXM7YSgiYnViYmxlIiwic2NhdHRlciIse2RhdGFMYWJlbHM6e2Zvcm1hdHRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvaW50Lnp9LGluc2lkZTohMCx2ZXJ0aWNhbEFsaWduOiJtaWRkbGUifSxhbmltYXRpb25MaW1pdDoyNTAsbWFya2VyOntsaW5lQ29sb3I6bnVsbCxsaW5lV2lkdGg6MSxmaWxsT3BhY2l0eTouNSxyYWRpdXM6bnVsbCxzdGF0ZXM6e2hvdmVyOntyYWRpdXNQbHVzOjB9fSxzeW1ib2w6ImNpcmNsZSJ9LG1pblNpemU6OCxtYXhTaXplOiIyMCUiLHNvZnRUaHJlc2hvbGQ6ITEsc3RhdGVzOntob3Zlcjp7aGFsbzp7c2l6ZTo1fX19LHRvb2x0aXA6e3BvaW50Rm9ybWF0OiIoe3BvaW50Lnh9LCB7cG9pbnQueX0pLCBTaXplOiB7cG9pbnQuen0ifSwKdHVyYm9UaHJlc2hvbGQ6MCx6VGhyZXNob2xkOjAsem9uZUF4aXM6InoifSx7cG9pbnRBcnJheU1hcDpbInkiLCJ6Il0scGFyYWxsZWxBcnJheXM6WyJ4IiwieSIsInoiXSx0cmFja2VyR3JvdXBzOlsiZ3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiXSxzcGVjaWFsR3JvdXA6Imdyb3VwIixidWJibGVQYWRkaW5nOiEwLHpvbmVBeGlzOiJ6IixkaXJlY3RUb3VjaDohMCxpc0J1YmJsZTohMCxwb2ludEF0dHJpYnM6ZnVuY3Rpb24oYSxjKXt2YXIgYj10aGlzLm9wdGlvbnMubWFya2VyLmZpbGxPcGFjaXR5O2E9cC5wcm90b3R5cGUucG9pbnRBdHRyaWJzLmNhbGwodGhpcyxhLGMpOzEhPT1iJiYoYS5maWxsPWgoYS5maWxsKS5zZXRPcGFjaXR5KGIpLmdldCgicmdiYSIpKTtyZXR1cm4gYX0sZ2V0UmFkaWk6ZnVuY3Rpb24oYSxjLGIpe3ZhciBkPXRoaXMuekRhdGEsZz10aGlzLnlEYXRhLGs9Yi5taW5QeFNpemUsZT1iLm1heFB4U2l6ZSxoPVtdO3ZhciByPTA7Zm9yKGI9ZC5sZW5ndGg7cjxiO3IrKyl7dmFyIGw9CmRbcl07aC5wdXNoKHRoaXMuZ2V0UmFkaXVzKGEsYyxrLGUsbCxnW3JdKSl9dGhpcy5yYWRpaT1ofSxnZXRSYWRpdXM6ZnVuY3Rpb24oYSxjLGIsZCxnLGspe3ZhciBlPXRoaXMub3B0aW9ucyxoPSJ3aWR0aCIhPT1lLnNpemVCeSxyPWUuelRocmVzaG9sZCxsPWMtYSxmPS41O2lmKG51bGw9PT1rfHxudWxsPT09ZylyZXR1cm4gbnVsbDtpZih6KGcpKXtlLnNpemVCeUFic29sdXRlVmFsdWUmJihnPU1hdGguYWJzKGctciksbD1NYXRoLm1heChjLXIsTWF0aC5hYnMoYS1yKSksYT0wKTtpZihnPGEpcmV0dXJuIGIvMi0xOzA8bCYmKGY9KGctYSkvbCl9aCYmMDw9ZiYmKGY9TWF0aC5zcXJ0KGYpKTtyZXR1cm4gTWF0aC5jZWlsKGIrZiooZC1iKSkvMn0sYW5pbWF0ZTpmdW5jdGlvbihhKXshYSYmdGhpcy5wb2ludHMubGVuZ3RoPHRoaXMub3B0aW9ucy5hbmltYXRpb25MaW1pdCYmdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1hLmdyYXBoaWM7YyYmYy53aWR0aCYmKHRoaXMuaGFzUmVuZGVyZWR8fApjLmF0dHIoe3g6YS5wbG90WCx5OmEucGxvdFksd2lkdGg6MSxoZWlnaHQ6MX0pLGMuYW5pbWF0ZSh0aGlzLm1hcmtlckF0dHJpYnMoYSksdGhpcy5vcHRpb25zLmFuaW1hdGlvbikpfSx0aGlzKX0saGFzRGF0YTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5wcm9jZXNzZWRYRGF0YS5sZW5ndGh9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBhLGM9dGhpcy5kYXRhLGI9dGhpcy5yYWRpaTt5LnNjYXR0ZXIucHJvdG90eXBlLnRyYW5zbGF0ZS5jYWxsKHRoaXMpO2ZvcihhPWMubGVuZ3RoO2EtLTspe3ZhciBkPWNbYV07dmFyIGc9Yj9iW2FdOjA7eihnKSYmZz49dGhpcy5taW5QeFNpemUvMj8oZC5tYXJrZXI9QihkLm1hcmtlcix7cmFkaXVzOmcsd2lkdGg6MipnLGhlaWdodDoyKmd9KSxkLmRsQm94PXt4OmQucGxvdFgtZyx5OmQucGxvdFktZyx3aWR0aDoyKmcsaGVpZ2h0OjIqZ30pOmQuc2hhcGVBcmdzPWQucGxvdFk9ZC5kbEJveD12b2lkIDB9fSxhbGlnbkRhdGFMYWJlbDp5LmNvbHVtbi5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWwsCmJ1aWxkS0RUcmVlOncsYXBwbHlab25lczp3fSx7aGFsb1BhdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIGIucHJvdG90eXBlLmhhbG9QYXRoLmNhbGwodGhpcywwPT09YT8wOih0aGlzLm1hcmtlcj90aGlzLm1hcmtlci5yYWRpdXN8fDA6MCkrYSl9LHR0QmVsb3c6ITF9KTtlLnByb3RvdHlwZS5iZWZvcmVQYWRkaW5nPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMubGVuLGU9dGhpcy5jaGFydCxkPTAsZz1iLGs9dGhpcy5pc1hBeGlzLGg9az8ieERhdGEiOiJ5RGF0YSIsZj10aGlzLm1pbixyPXt9LHA9TWF0aC5taW4oZS5wbG90V2lkdGgsZS5wbG90SGVpZ2h0KSx3PU51bWJlci5NQVhfVkFMVUUseT0tTnVtYmVyLk1BWF9WQUxVRSxCPXRoaXMubWF4LWYsRT1iL0IsRj1bXTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBnPWQub3B0aW9uczshZC5idWJibGVQYWRkaW5nfHwhZC52aXNpYmxlJiZlLm9wdGlvbnMuY2hhcnQuaWdub3JlSGlkZGVuU2VyaWVzfHwoYS5hbGxvd1pvb21PdXRzaWRlPQohMCxGLnB1c2goZCksayYmKFsibWluU2l6ZSIsIm1heFNpemUiXS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBhPWdbZF0sYz0vJSQvLnRlc3QoYSk7YT1sKGEpO3JbZF09Yz9wKmEvMTAwOmF9KSxkLm1pblB4U2l6ZT1yLm1pblNpemUsZC5tYXhQeFNpemU9TWF0aC5tYXgoci5tYXhTaXplLHIubWluU2l6ZSksZD1kLnpEYXRhLmZpbHRlcih6KSxkLmxlbmd0aCYmKHc9YyhnLnpNaW4seCh0KGQpLCExPT09Zy5kaXNwbGF5TmVnYXRpdmU/Zy56VGhyZXNob2xkOi1OdW1iZXIuTUFYX1ZBTFVFLHcpKSx5PWMoZy56TWF4LE1hdGgubWF4KHkscShkKSkpKSkpfSk7Ri5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBiPWNbaF0sZT1iLmxlbmd0aDtrJiZjLmdldFJhZGlpKHcseSxjKTtpZigwPEIpZm9yKDtlLS07KWlmKHooYltlXSkmJmEuZGF0YU1pbjw9YltlXSYmYltlXTw9YS5tYXgpe3ZhciByPWMucmFkaWk/Yy5yYWRpaVtlXTowO2Q9TWF0aC5taW4oKGJbZV0tZikqRS1yLGQpO2c9TWF0aC5tYXgoKGJbZV0tCmYpKkUrcixnKX19KTtGLmxlbmd0aCYmMDxCJiYhdGhpcy5sb2dhcml0aG1pYyYmKGctPWIsRSo9KGIrTWF0aC5tYXgoMCxkKS1NYXRoLm1pbihnLGIpKS9iLFtbIm1pbiIsInVzZXJNaW4iLGRdLFsibWF4IiwidXNlck1heCIsZ11dLmZvckVhY2goZnVuY3Rpb24oZCl7InVuZGVmaW5lZCI9PT10eXBlb2YgYyhhLm9wdGlvbnNbZFswXV0sYVtkWzFdXSkmJihhW2RbMF1dKz1kWzJdL0UpfSkpfTsiIn0pO0MoZiwibW9kdWxlcy9uZXR3b3JrZ3JhcGgvaW50ZWdyYXRpb25zLmpzIixbZlsicGFydHMvR2xvYmFscy5qcyJdXSxmdW5jdGlvbihmKXtmLm5ldHdvcmtncmFwaEludGVncmF0aW9ucz17dmVybGV0OnthdHRyYWN0aXZlRm9yY2VGdW5jdGlvbjpmdW5jdGlvbihhLGIpe3JldHVybihiLWEpL2F9LHJlcHVsc2l2ZUZvcmNlRnVuY3Rpb246ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYi1hKS9hKihiPmE/MTowKX0sYmFyeWNlbnRlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5ncmF2aXRhdGlvbmFsQ29uc3RhbnQsCmI9dGhpcy5iYXJ5Y2VudGVyLnhGYWN0b3IsZT10aGlzLmJhcnljZW50ZXIueUZhY3RvcjtiPShiLSh0aGlzLmJveC5sZWZ0K3RoaXMuYm94LndpZHRoKS8yKSphO2U9KGUtKHRoaXMuYm94LnRvcCt0aGlzLmJveC5oZWlnaHQpLzIpKmE7dGhpcy5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuZml4ZWRQb3NpdGlvbnx8KGEucGxvdFgtPWIvYS5tYXNzL2EuZGVncmVlLGEucGxvdFktPWUvYS5tYXNzL2EuZGVncmVlKX0pfSxyZXB1bHNpdmU6ZnVuY3Rpb24oYSxiLGUpe2I9Yip0aGlzLmRpZmZUZW1wZXJhdHVyZS9hLm1hc3MvYS5kZWdyZWU7YS5maXhlZFBvc2l0aW9ufHwoYS5wbG90WCs9ZS54KmIsYS5wbG90WSs9ZS55KmIpfSxhdHRyYWN0aXZlOmZ1bmN0aW9uKGEsYixlKXt2YXIgaD1hLmdldE1hc3MoKSxmPS1lLngqYip0aGlzLmRpZmZUZW1wZXJhdHVyZTtiPS1lLnkqYip0aGlzLmRpZmZUZW1wZXJhdHVyZTthLmZyb21Ob2RlLmZpeGVkUG9zaXRpb258fChhLmZyb21Ob2RlLnBsb3RYLT0KZipoLmZyb21Ob2RlL2EuZnJvbU5vZGUuZGVncmVlLGEuZnJvbU5vZGUucGxvdFktPWIqaC5mcm9tTm9kZS9hLmZyb21Ob2RlLmRlZ3JlZSk7YS50b05vZGUuZml4ZWRQb3NpdGlvbnx8KGEudG9Ob2RlLnBsb3RYKz1mKmgudG9Ob2RlL2EudG9Ob2RlLmRlZ3JlZSxhLnRvTm9kZS5wbG90WSs9YipoLnRvTm9kZS9hLnRvTm9kZS5kZWdyZWUpfSxpbnRlZ3JhdGU6ZnVuY3Rpb24oYSxiKXt2YXIgZT0tYS5vcHRpb25zLmZyaWN0aW9uLGg9YS5vcHRpb25zLm1heFNwZWVkLGY9KGIucGxvdFgrYi5kaXNwWC1iLnByZXZYKSplO2UqPWIucGxvdFkrYi5kaXNwWS1iLnByZXZZO3ZhciB0PU1hdGguYWJzLHg9dChmKS8oZnx8MSk7dD10KGUpLyhlfHwxKTtmPXgqTWF0aC5taW4oaCxNYXRoLmFicyhmKSk7ZT10Kk1hdGgubWluKGgsTWF0aC5hYnMoZSkpO2IucHJldlg9Yi5wbG90WCtiLmRpc3BYO2IucHJldlk9Yi5wbG90WStiLmRpc3BZO2IucGxvdFgrPWY7Yi5wbG90WSs9ZTtiLnRlbXBlcmF0dXJlPQphLnZlY3Rvckxlbmd0aCh7eDpmLHk6ZX0pfSxnZXRLOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnBvdyhhLmJveC53aWR0aCphLmJveC5oZWlnaHQvYS5ub2Rlcy5sZW5ndGgsLjUpfX0sZXVsZXI6e2F0dHJhY3RpdmVGb3JjZUZ1bmN0aW9uOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEqYS9ifSxyZXB1bHNpdmVGb3JjZUZ1bmN0aW9uOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIqYi9hfSxiYXJ5Y2VudGVyOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLmdyYXZpdGF0aW9uYWxDb25zdGFudCxiPXRoaXMuYmFyeWNlbnRlci54RmFjdG9yLGU9dGhpcy5iYXJ5Y2VudGVyLnlGYWN0b3I7dGhpcy5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGgpe2lmKCFoLmZpeGVkUG9zaXRpb24pe3ZhciBmPWguZ2V0RGVncmVlKCk7Zio9MStmLzI7aC5kaXNwWCs9KGItaC5wbG90WCkqYSpmL2guZGVncmVlO2guZGlzcFkrPShlLWgucGxvdFkpKmEqZi9oLmRlZ3JlZX19KX0scmVwdWxzaXZlOmZ1bmN0aW9uKGEsCmIsZSxoKXthLmRpc3BYKz1lLngvaCpiL2EuZGVncmVlO2EuZGlzcFkrPWUueS9oKmIvYS5kZWdyZWV9LGF0dHJhY3RpdmU6ZnVuY3Rpb24oYSxiLGUsaCl7dmFyIGY9YS5nZXRNYXNzKCksdD1lLngvaCpiO2IqPWUueS9oO2EuZnJvbU5vZGUuZml4ZWRQb3NpdGlvbnx8KGEuZnJvbU5vZGUuZGlzcFgtPXQqZi5mcm9tTm9kZS9hLmZyb21Ob2RlLmRlZ3JlZSxhLmZyb21Ob2RlLmRpc3BZLT1iKmYuZnJvbU5vZGUvYS5mcm9tTm9kZS5kZWdyZWUpO2EudG9Ob2RlLmZpeGVkUG9zaXRpb258fChhLnRvTm9kZS5kaXNwWCs9dCpmLnRvTm9kZS9hLnRvTm9kZS5kZWdyZWUsYS50b05vZGUuZGlzcFkrPWIqZi50b05vZGUvYS50b05vZGUuZGVncmVlKX0saW50ZWdyYXRlOmZ1bmN0aW9uKGEsYil7Yi5kaXNwWCs9Yi5kaXNwWCphLm9wdGlvbnMuZnJpY3Rpb247Yi5kaXNwWSs9Yi5kaXNwWSphLm9wdGlvbnMuZnJpY3Rpb247dmFyIGU9Yi50ZW1wZXJhdHVyZT1hLnZlY3Rvckxlbmd0aCh7eDpiLmRpc3BYLAp5OmIuZGlzcFl9KTswIT09ZSYmKGIucGxvdFgrPWIuZGlzcFgvZSpNYXRoLm1pbihNYXRoLmFicyhiLmRpc3BYKSxhLnRlbXBlcmF0dXJlKSxiLnBsb3RZKz1iLmRpc3BZL2UqTWF0aC5taW4oTWF0aC5hYnMoYi5kaXNwWSksYS50ZW1wZXJhdHVyZSkpfSxnZXRLOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnBvdyhhLmJveC53aWR0aCphLmJveC5oZWlnaHQvYS5ub2Rlcy5sZW5ndGgsLjMpfX19fSk7QyhmLCJtb2R1bGVzL25ldHdvcmtncmFwaC9RdWFkVHJlZS5qcyIsW2ZbInBhcnRzL0dsb2JhbHMuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhKXthPWEuZXh0ZW5kO3ZhciBiPWYuUXVhZFRyZWVOb2RlPWZ1bmN0aW9uKGEpe3RoaXMuYm94PWE7dGhpcy5ib3hTaXplPU1hdGgubWluKGEud2lkdGgsYS5oZWlnaHQpO3RoaXMubm9kZXM9W107dGhpcy5ib2R5PXRoaXMuaXNJbnRlcm5hbD0hMTt0aGlzLmlzRW1wdHk9ITB9O2EoYi5wcm90b3R5cGUse2luc2VydDpmdW5jdGlvbihhLApoKXt0aGlzLmlzSW50ZXJuYWw/dGhpcy5ub2Rlc1t0aGlzLmdldEJveFBvc2l0aW9uKGEpXS5pbnNlcnQoYSxoLTEpOih0aGlzLmlzRW1wdHk9ITEsdGhpcy5ib2R5P2g/KHRoaXMuaXNJbnRlcm5hbD0hMCx0aGlzLmRpdmlkZUJveCgpLCEwIT09dGhpcy5ib2R5JiYodGhpcy5ub2Rlc1t0aGlzLmdldEJveFBvc2l0aW9uKHRoaXMuYm9keSldLmluc2VydCh0aGlzLmJvZHksaC0xKSx0aGlzLmJvZHk9ITApLHRoaXMubm9kZXNbdGhpcy5nZXRCb3hQb3NpdGlvbihhKV0uaW5zZXJ0KGEsaC0xKSk6KGg9bmV3IGIoe3RvcDphLnBsb3RYLGxlZnQ6YS5wbG90WSx3aWR0aDouMSxoZWlnaHQ6LjF9KSxoLmJvZHk9YSxoLmlzSW50ZXJuYWw9ITEsdGhpcy5ub2Rlcy5wdXNoKGgpKToodGhpcy5pc0ludGVybmFsPSExLHRoaXMuYm9keT1hKSl9LHVwZGF0ZU1hc3NBbmRDZW50ZXI6ZnVuY3Rpb24oKXt2YXIgYT0wLGI9MCxmPTA7dGhpcy5pc0ludGVybmFsPyh0aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5pc0VtcHR5fHwKKGErPWUubWFzcyxiKz1lLnBsb3RYKmUubWFzcyxmKz1lLnBsb3RZKmUubWFzcyl9KSxiLz1hLGYvPWEpOnRoaXMuYm9keSYmKGE9dGhpcy5ib2R5Lm1hc3MsYj10aGlzLmJvZHkucGxvdFgsZj10aGlzLmJvZHkucGxvdFkpO3RoaXMubWFzcz1hO3RoaXMucGxvdFg9Yjt0aGlzLnBsb3RZPWZ9LGRpdmlkZUJveDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuYm94LndpZHRoLzIsaD10aGlzLmJveC5oZWlnaHQvMjt0aGlzLm5vZGVzWzBdPW5ldyBiKHtsZWZ0OnRoaXMuYm94LmxlZnQsdG9wOnRoaXMuYm94LnRvcCx3aWR0aDphLGhlaWdodDpofSk7dGhpcy5ub2Rlc1sxXT1uZXcgYih7bGVmdDp0aGlzLmJveC5sZWZ0K2EsdG9wOnRoaXMuYm94LnRvcCx3aWR0aDphLGhlaWdodDpofSk7dGhpcy5ub2Rlc1syXT1uZXcgYih7bGVmdDp0aGlzLmJveC5sZWZ0K2EsdG9wOnRoaXMuYm94LnRvcCtoLHdpZHRoOmEsaGVpZ2h0Omh9KTt0aGlzLm5vZGVzWzNdPW5ldyBiKHtsZWZ0OnRoaXMuYm94LmxlZnQsCnRvcDp0aGlzLmJveC50b3AraCx3aWR0aDphLGhlaWdodDpofSl9LGdldEJveFBvc2l0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEucGxvdFk8dGhpcy5ib3gudG9wK3RoaXMuYm94LmhlaWdodC8yO3JldHVybiBhLnBsb3RYPHRoaXMuYm94LmxlZnQrdGhpcy5ib3gud2lkdGgvMj9iPzA6MzpiPzE6Mn19KTtmPWYuUXVhZFRyZWU9ZnVuY3Rpb24oYSxoLGYsdCl7dGhpcy5ib3g9e2xlZnQ6YSx0b3A6aCx3aWR0aDpmLGhlaWdodDp0fTt0aGlzLm1heERlcHRoPTI1O3RoaXMucm9vdD1uZXcgYih0aGlzLmJveCwiMCIpO3RoaXMucm9vdC5pc0ludGVybmFsPSEwO3RoaXMucm9vdC5pc1Jvb3Q9ITA7dGhpcy5yb290LmRpdmlkZUJveCgpfTthKGYucHJvdG90eXBlLHtpbnNlcnROb2RlczpmdW5jdGlvbihhKXthLmZvckVhY2goZnVuY3Rpb24oYSl7dGhpcy5yb290Lmluc2VydChhLHRoaXMubWF4RGVwdGgpfSx0aGlzKX0sdmlzaXROb2RlUmVjdXJzaXZlOmZ1bmN0aW9uKGEsYixmKXt2YXIgZTsKYXx8KGE9dGhpcy5yb290KTthPT09dGhpcy5yb290JiZiJiYoZT1iKGEpKTshMSE9PWUmJihhLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoYS5pc0ludGVybmFsKXtiJiYoZT1iKGEpKTtpZighMT09PWUpcmV0dXJuO3RoaXMudmlzaXROb2RlUmVjdXJzaXZlKGEsYixmKX1lbHNlIGEuYm9keSYmYiYmYihhLmJvZHkpO2YmJmYoYSl9LHRoaXMpLGE9PT10aGlzLnJvb3QmJmYmJmYoYSkpfSxjYWxjdWxhdGVNYXNzQW5kQ2VudGVyOmZ1bmN0aW9uKCl7dGhpcy52aXNpdE5vZGVSZWN1cnNpdmUobnVsbCxudWxsLGZ1bmN0aW9uKGEpe2EudXBkYXRlTWFzc0FuZENlbnRlcigpfSl9fSl9KTtDKGYsIm1vZHVsZXMvbmV0d29ya2dyYXBoL2xheW91dHMuanMiLFtmWyJwYXJ0cy9DaGFydC5qcyJdLGZbInBhcnRzL0dsb2JhbHMuanMiXSxmWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZixhLGIpe3ZhciBlPWIuYWRkRXZlbnQsaD1iLmNsYW1wLHE9Yi5kZWZpbmVkLHQ9Yi5leHRlbmQsCng9Yi5pc0Z1bmN0aW9uLEI9Yi5waWNrLHo9Yi5zZXRBbmltYXRpb247YS5sYXlvdXRzPXsicmVpbmdvbGQtZnJ1Y2h0ZXJtYW4iOmZ1bmN0aW9uKCl7fX07dChhLmxheW91dHNbInJlaW5nb2xkLWZydWNodGVybWFuIl0ucHJvdG90eXBlLHtpbml0OmZ1bmN0aW9uKGMpe3RoaXMub3B0aW9ucz1jO3RoaXMubm9kZXM9W107dGhpcy5saW5rcz1bXTt0aGlzLnNlcmllcz1bXTt0aGlzLmJveD17eDowLHk6MCx3aWR0aDowLGhlaWdodDowfTt0aGlzLnNldEluaXRpYWxSZW5kZXJpbmcoITApO3RoaXMuaW50ZWdyYXRpb249YS5uZXR3b3JrZ3JhcGhJbnRlZ3JhdGlvbnNbYy5pbnRlZ3JhdGlvbl07dGhpcy5lbmFibGVTaW11bGF0aW9uPWMuZW5hYmxlU2ltdWxhdGlvbjt0aGlzLmF0dHJhY3RpdmVGb3JjZT1CKGMuYXR0cmFjdGl2ZUZvcmNlLHRoaXMuaW50ZWdyYXRpb24uYXR0cmFjdGl2ZUZvcmNlRnVuY3Rpb24pO3RoaXMucmVwdWxzaXZlRm9yY2U9QihjLnJlcHVsc2l2ZUZvcmNlLHRoaXMuaW50ZWdyYXRpb24ucmVwdWxzaXZlRm9yY2VGdW5jdGlvbik7CnRoaXMuYXBwcm94aW1hdGlvbj1jLmFwcHJveGltYXRpb259LHVwZGF0ZVNpbXVsYXRpb246ZnVuY3Rpb24oYSl7dGhpcy5lbmFibGVTaW11bGF0aW9uPUIoYSx0aGlzLm9wdGlvbnMuZW5hYmxlU2ltdWxhdGlvbil9LHN0YXJ0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zZXJpZXMsYj10aGlzLm9wdGlvbnM7dGhpcy5jdXJyZW50U3RlcD0wO3RoaXMuZm9yY2VzPWFbMF0mJmFbMF0uZm9yY2VzfHxbXTt0aGlzLmNoYXJ0PWFbMF0mJmFbMF0uY2hhcnQ7dGhpcy5pbml0aWFsUmVuZGVyaW5nJiYodGhpcy5pbml0UG9zaXRpb25zKCksYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuZmluaXNoZWRBbmltYXRpbmc9ITA7YS5yZW5kZXIoKX0pKTt0aGlzLnNldEsoKTt0aGlzLnJlc2V0U2ltdWxhdGlvbihiKTt0aGlzLmVuYWJsZVNpbXVsYXRpb24mJnRoaXMuc3RlcCgpfSxzdGVwOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcyxiPXRoaXMuc2VyaWVzO2MuY3VycmVudFN0ZXArKzsiYmFybmVzLWh1dCI9PT0KYy5hcHByb3hpbWF0aW9uJiYoYy5jcmVhdGVRdWFkVHJlZSgpLGMucXVhZFRyZWUuY2FsY3VsYXRlTWFzc0FuZENlbnRlcigpKTtjLmZvcmNlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2NbYSsiRm9yY2VzIl0oYy50ZW1wZXJhdHVyZSl9KTtjLmFwcGx5TGltaXRzKGMudGVtcGVyYXR1cmUpO2MudGVtcGVyYXR1cmU9Yy5jb29sRG93bihjLnN0YXJ0VGVtcGVyYXR1cmUsYy5kaWZmVGVtcGVyYXR1cmUsYy5jdXJyZW50U3RlcCk7Yy5wcmV2U3lzdGVtVGVtcGVyYXR1cmU9Yy5zeXN0ZW1UZW1wZXJhdHVyZTtjLnN5c3RlbVRlbXBlcmF0dXJlPWMuZ2V0U3lzdGVtVGVtcGVyYXR1cmUoKTtjLmVuYWJsZVNpbXVsYXRpb24mJihiLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jaGFydCYmYS5yZW5kZXIoKX0pLGMubWF4SXRlcmF0aW9ucy0tJiZpc0Zpbml0ZShjLnRlbXBlcmF0dXJlKSYmIWMuaXNTdGFibGUoKT8oYy5zaW11bGF0aW9uJiZhLndpbi5jYW5jZWxBbmltYXRpb25GcmFtZShjLnNpbXVsYXRpb24pLApjLnNpbXVsYXRpb249YS53aW4ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7Yy5zdGVwKCl9KSk6Yy5zaW11bGF0aW9uPSExKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuc2ltdWxhdGlvbiYmYS53aW4uY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5zaW11bGF0aW9uKX0sc2V0QXJlYTpmdW5jdGlvbihhLGIsZSxmKXt0aGlzLmJveD17bGVmdDphLHRvcDpiLHdpZHRoOmUsaGVpZ2h0OmZ9fSxzZXRLOmZ1bmN0aW9uKCl7dGhpcy5rPXRoaXMub3B0aW9ucy5saW5rTGVuZ3RofHx0aGlzLmludGVncmF0aW9uLmdldEsodGhpcyl9LGFkZEVsZW1lbnRzVG9Db2xsZWN0aW9uOmZ1bmN0aW9uKGEsYil7YS5mb3JFYWNoKGZ1bmN0aW9uKGEpey0xPT09Yi5pbmRleE9mKGEpJiZiLnB1c2goYSl9KX0scmVtb3ZlRWxlbWVudEZyb21Db2xsZWN0aW9uOmZ1bmN0aW9uKGEsYil7YT1iLmluZGV4T2YoYSk7LTEhPT1hJiZiLnNwbGljZShhLDEpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMubm9kZXMubGVuZ3RoPQowO3RoaXMubGlua3MubGVuZ3RoPTA7dGhpcy5zZXJpZXMubGVuZ3RoPTA7dGhpcy5yZXNldFNpbXVsYXRpb24oKX0scmVzZXRTaW11bGF0aW9uOmZ1bmN0aW9uKCl7dGhpcy5mb3JjZWRTdG9wPSExO3RoaXMuc3lzdGVtVGVtcGVyYXR1cmU9MDt0aGlzLnNldE1heEl0ZXJhdGlvbnMoKTt0aGlzLnNldFRlbXBlcmF0dXJlKCk7dGhpcy5zZXREaWZmVGVtcGVyYXR1cmUoKX0scmVzdGFydFNpbXVsYXRpb246ZnVuY3Rpb24oKXt0aGlzLnNpbXVsYXRpb24/dGhpcy5yZXNldFNpbXVsYXRpb24oKToodGhpcy5zZXRJbml0aWFsUmVuZGVyaW5nKCExKSx0aGlzLmVuYWJsZVNpbXVsYXRpb24/dGhpcy5zdGFydCgpOnRoaXMuc2V0TWF4SXRlcmF0aW9ucygxKSx0aGlzLmNoYXJ0JiZ0aGlzLmNoYXJ0LnJlZHJhdygpLHRoaXMuc2V0SW5pdGlhbFJlbmRlcmluZyghMCkpfSxzZXRNYXhJdGVyYXRpb25zOmZ1bmN0aW9uKGEpe3RoaXMubWF4SXRlcmF0aW9ucz1CKGEsdGhpcy5vcHRpb25zLm1heEl0ZXJhdGlvbnMpfSwKc2V0VGVtcGVyYXR1cmU6ZnVuY3Rpb24oKXt0aGlzLnRlbXBlcmF0dXJlPXRoaXMuc3RhcnRUZW1wZXJhdHVyZT1NYXRoLnNxcnQodGhpcy5ub2Rlcy5sZW5ndGgpfSxzZXREaWZmVGVtcGVyYXR1cmU6ZnVuY3Rpb24oKXt0aGlzLmRpZmZUZW1wZXJhdHVyZT10aGlzLnN0YXJ0VGVtcGVyYXR1cmUvKHRoaXMub3B0aW9ucy5tYXhJdGVyYXRpb25zKzEpfSxzZXRJbml0aWFsUmVuZGVyaW5nOmZ1bmN0aW9uKGEpe3RoaXMuaW5pdGlhbFJlbmRlcmluZz1hfSxjcmVhdGVRdWFkVHJlZTpmdW5jdGlvbigpe3RoaXMucXVhZFRyZWU9bmV3IGEuUXVhZFRyZWUodGhpcy5ib3gubGVmdCx0aGlzLmJveC50b3AsdGhpcy5ib3gud2lkdGgsdGhpcy5ib3guaGVpZ2h0KTt0aGlzLnF1YWRUcmVlLmluc2VydE5vZGVzKHRoaXMubm9kZXMpfSxpbml0UG9zaXRpb25zOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLmluaXRpYWxQb3NpdGlvbnM7eChhKT8oYS5jYWxsKHRoaXMpLHRoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbihhKXtxKGEucHJldlgpfHwKKGEucHJldlg9YS5wbG90WCk7cShhLnByZXZZKXx8KGEucHJldlk9YS5wbG90WSk7YS5kaXNwWD0wO2EuZGlzcFk9MH0pKToiY2lyY2xlIj09PWE/dGhpcy5zZXRDaXJjdWxhclBvc2l0aW9ucygpOnRoaXMuc2V0UmFuZG9tUG9zaXRpb25zKCl9LHNldENpcmN1bGFyUG9zaXRpb25zOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShkKXtkLmxpbmtzRnJvbS5mb3JFYWNoKGZ1bmN0aW9uKGQpe21bZC50b05vZGUuaWRdfHwobVtkLnRvTm9kZS5pZF09ITAscS5wdXNoKGQudG9Ob2RlKSxhKGQudG9Ob2RlKSl9KX12YXIgYj10aGlzLmJveCxlPXRoaXMubm9kZXMsZj0yKk1hdGguUEkvKGUubGVuZ3RoKzEpLGg9ZS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIDA9PT1hLmxpbmtzVG8ubGVuZ3RofSkscT1bXSxtPXt9LG49dGhpcy5vcHRpb25zLmluaXRpYWxQb3NpdGlvblJhZGl1cztoLmZvckVhY2goZnVuY3Rpb24oZCl7cS5wdXNoKGQpO2EoZCl9KTtxLmxlbmd0aD9lLmZvckVhY2goZnVuY3Rpb24oYSl7LTE9PT0KcS5pbmRleE9mKGEpJiZxLnB1c2goYSl9KTpxPWU7cS5mb3JFYWNoKGZ1bmN0aW9uKGEsZyl7YS5wbG90WD1hLnByZXZYPUIoYS5wbG90WCxiLndpZHRoLzIrbipNYXRoLmNvcyhnKmYpKTthLnBsb3RZPWEucHJldlk9QihhLnBsb3RZLGIuaGVpZ2h0LzIrbipNYXRoLnNpbihnKmYpKTthLmRpc3BYPTA7YS5kaXNwWT0wfSl9LHNldFJhbmRvbVBvc2l0aW9uczpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7YT1hKmEvTWF0aC5QSTtyZXR1cm4gYS09TWF0aC5mbG9vcihhKX12YXIgYj10aGlzLmJveCxlPXRoaXMubm9kZXMsZj1lLmxlbmd0aCsxO2UuZm9yRWFjaChmdW5jdGlvbihjLGUpe2MucGxvdFg9Yy5wcmV2WD1CKGMucGxvdFgsYi53aWR0aCphKGUpKTtjLnBsb3RZPWMucHJldlk9QihjLnBsb3RZLGIuaGVpZ2h0KmEoZitlKSk7Yy5kaXNwWD0wO2MuZGlzcFk9MH0pfSxmb3JjZTpmdW5jdGlvbihhKXt0aGlzLmludGVncmF0aW9uW2FdLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLAoxKSl9LGJhcnljZW50ZXJGb3JjZXM6ZnVuY3Rpb24oKXt0aGlzLmdldEJhcnljZW50ZXIoKTt0aGlzLmZvcmNlKCJiYXJ5Y2VudGVyIil9LGdldEJhcnljZW50ZXI6ZnVuY3Rpb24oKXt2YXIgYT0wLGI9MCxlPTA7dGhpcy5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2IrPWMucGxvdFgqYy5tYXNzO2UrPWMucGxvdFkqYy5tYXNzO2ErPWMubWFzc30pO3JldHVybiB0aGlzLmJhcnljZW50ZXI9e3g6Yix5OmUseEZhY3RvcjpiL2EseUZhY3RvcjplL2F9fSxiYXJuZXNIdXRBcHByb3hpbWF0aW9uOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5nZXREaXN0WFkoYSxiKSxlPXRoaXMudmVjdG9yTGVuZ3RoKGMpO2lmKGEhPT1iJiYwIT09ZSlpZihiLmlzSW50ZXJuYWwpaWYoYi5ib3hTaXplL2U8dGhpcy5vcHRpb25zLnRoZXRhJiYwIT09ZSl7dmFyIGY9dGhpcy5yZXB1bHNpdmVGb3JjZShlLHRoaXMuayk7dGhpcy5mb3JjZSgicmVwdWxzaXZlIixhLGYqYi5tYXNzLGMsZSk7dmFyIGg9ITF9ZWxzZSBoPQohMDtlbHNlIGY9dGhpcy5yZXB1bHNpdmVGb3JjZShlLHRoaXMuayksdGhpcy5mb3JjZSgicmVwdWxzaXZlIixhLGYqYi5tYXNzLGMsZSk7cmV0dXJuIGh9LHJlcHVsc2l2ZUZvcmNlczpmdW5jdGlvbigpe3ZhciBhPXRoaXM7ImJhcm5lcy1odXQiPT09YS5hcHByb3hpbWF0aW9uP2Eubm9kZXMuZm9yRWFjaChmdW5jdGlvbihjKXthLnF1YWRUcmVlLnZpc2l0Tm9kZVJlY3Vyc2l2ZShudWxsLGZ1bmN0aW9uKGIpe3JldHVybiBhLmJhcm5lc0h1dEFwcHJveGltYXRpb24oYyxiKX0pfSk6YS5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2Eubm9kZXMuZm9yRWFjaChmdW5jdGlvbihiKXtpZihjIT09YiYmIWMuZml4ZWRQb3NpdGlvbil7dmFyIGU9YS5nZXREaXN0WFkoYyxiKTt2YXIgZj1hLnZlY3Rvckxlbmd0aChlKTtpZigwIT09Zil7dmFyIGg9YS5yZXB1bHNpdmVGb3JjZShmLGEuayk7YS5mb3JjZSgicmVwdWxzaXZlIixjLGgqYi5tYXNzLGUsZil9fX0pfSl9LGF0dHJhY3RpdmVGb3JjZXM6ZnVuY3Rpb24oKXt2YXIgYT0KdGhpcyxiLGUsZjthLmxpbmtzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5mcm9tTm9kZSYmYy50b05vZGUmJihiPWEuZ2V0RGlzdFhZKGMuZnJvbU5vZGUsYy50b05vZGUpLGU9YS52ZWN0b3JMZW5ndGgoYiksMCE9PWUmJihmPWEuYXR0cmFjdGl2ZUZvcmNlKGUsYS5rKSxhLmZvcmNlKCJhdHRyYWN0aXZlIixjLGYsYixlKSkpfSl9LGFwcGx5TGltaXRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpczthLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5maXhlZFBvc2l0aW9ufHwoYS5pbnRlZ3JhdGlvbi5pbnRlZ3JhdGUoYSxjKSxhLmFwcGx5TGltaXRCb3goYyxhLmJveCksYy5kaXNwWD0wLGMuZGlzcFk9MCl9KX0sYXBwbHlMaW1pdEJveDpmdW5jdGlvbihhLGIpe3ZhciBjPWEucmFkaXVzO2EucGxvdFg9aChhLnBsb3RYLGIubGVmdCtjLGIud2lkdGgtYyk7YS5wbG90WT1oKGEucGxvdFksYi50b3ArYyxiLmhlaWdodC1jKX0sY29vbERvd246ZnVuY3Rpb24oYSxiLGUpe3JldHVybiBhLWIqCmV9LGlzU3RhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuLjAwMDAxPk1hdGguYWJzKHRoaXMuc3lzdGVtVGVtcGVyYXR1cmUtdGhpcy5wcmV2U3lzdGVtVGVtcGVyYXR1cmUpfHwwPj10aGlzLnRlbXBlcmF0dXJlfSxnZXRTeXN0ZW1UZW1wZXJhdHVyZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm5vZGVzLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiBhK2IudGVtcGVyYXR1cmV9LDApfSx2ZWN0b3JMZW5ndGg6ZnVuY3Rpb24oYSl7cmV0dXJuIE1hdGguc3FydChhLngqYS54K2EueSphLnkpfSxnZXREaXN0UjpmdW5jdGlvbihhLGIpe2E9dGhpcy5nZXREaXN0WFkoYSxiKTtyZXR1cm4gdGhpcy52ZWN0b3JMZW5ndGgoYSl9LGdldERpc3RYWTpmdW5jdGlvbihhLGIpe3ZhciBjPWEucGxvdFgtYi5wbG90WDthPWEucGxvdFktYi5wbG90WTtyZXR1cm57eDpjLHk6YSxhYnNYOk1hdGguYWJzKGMpLGFic1k6TWF0aC5hYnMoYSl9fX0pO2UoZiwicHJlZHJhdyIsZnVuY3Rpb24oKXt0aGlzLmdyYXBoTGF5b3V0c0xvb2t1cCYmCnRoaXMuZ3JhcGhMYXlvdXRzTG9va3VwLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zdG9wKCl9KX0pO2UoZiwicmVuZGVyIixmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7YS5tYXhJdGVyYXRpb25zLS0mJmlzRmluaXRlKGEudGVtcGVyYXR1cmUpJiYhYS5pc1N0YWJsZSgpJiYhYS5lbmFibGVTaW11bGF0aW9uJiYoYS5iZWZvcmVTdGVwJiZhLmJlZm9yZVN0ZXAoKSxhLnN0ZXAoKSxlPSExLGI9ITApfXZhciBiPSExO2lmKHRoaXMuZ3JhcGhMYXlvdXRzTG9va3VwKXt6KCExLHRoaXMpO2Zvcih0aGlzLmdyYXBoTGF5b3V0c0xvb2t1cC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Euc3RhcnQoKX0pOyFlOyl7dmFyIGU9ITA7dGhpcy5ncmFwaExheW91dHNMb29rdXAuZm9yRWFjaChhKX1iJiZ0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EmJmEubGF5b3V0JiZhLnJlbmRlcigpfSl9fSk7ZShmLCJiZWZvcmVQcmludCIsZnVuY3Rpb24oKXt0aGlzLmdyYXBoTGF5b3V0c0xvb2t1cCYmKHRoaXMuZ3JhcGhMYXlvdXRzTG9va3VwLmZvckVhY2goZnVuY3Rpb24oYSl7YS51cGRhdGVTaW11bGF0aW9uKCExKX0pLAp0aGlzLnJlZHJhdygpKX0pO2UoZiwiYWZ0ZXJQcmludCIsZnVuY3Rpb24oKXt0aGlzLmdyYXBoTGF5b3V0c0xvb2t1cCYmdGhpcy5ncmFwaExheW91dHNMb29rdXAuZm9yRWFjaChmdW5jdGlvbihhKXthLnVwZGF0ZVNpbXVsYXRpb24oKX0pO3RoaXMucmVkcmF3KCl9KX0pO0MoZiwibW9kdWxlcy9uZXR3b3JrZ3JhcGgvZHJhZ2dhYmxlLW5vZGVzLmpzIixbZlsicGFydHMvQ2hhcnQuanMiXSxmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGYsYSxiKXt2YXIgZT1iLmFkZEV2ZW50O2EuZHJhZ05vZGVzTWl4aW49e29uTW91c2VEb3duOmZ1bmN0aW9uKGEsYil7Yj10aGlzLmNoYXJ0LnBvaW50ZXIubm9ybWFsaXplKGIpO2EuZml4ZWRQb3NpdGlvbj17Y2hhcnRYOmIuY2hhcnRYLGNoYXJ0WTpiLmNoYXJ0WSxwbG90WDphLnBsb3RYLHBsb3RZOmEucGxvdFl9O2EuaW5EcmFnTW9kZT0hMH0sb25Nb3VzZU1vdmU6ZnVuY3Rpb24oYSxiKXtpZihhLmZpeGVkUG9zaXRpb24mJgphLmluRHJhZ01vZGUpe3ZhciBlPXRoaXMuY2hhcnQ7Yj1lLnBvaW50ZXIubm9ybWFsaXplKGIpO3ZhciBmPWEuZml4ZWRQb3NpdGlvbi5jaGFydFgtYi5jaGFydFgsaD1hLmZpeGVkUG9zaXRpb24uY2hhcnRZLWIuY2hhcnRZO2I9ZS5ncmFwaExheW91dHNMb29rdXA7aWYoNTxNYXRoLmFicyhmKXx8NTxNYXRoLmFicyhoKSlmPWEuZml4ZWRQb3NpdGlvbi5wbG90WC1mLGg9YS5maXhlZFBvc2l0aW9uLnBsb3RZLWgsZS5pc0luc2lkZVBsb3QoZixoKSYmKGEucGxvdFg9ZixhLnBsb3RZPWgsYS5oYXNEcmFnZ2VkPSEwLHRoaXMucmVkcmF3SGFsbyhhKSxiLmZvckVhY2goZnVuY3Rpb24oYSl7YS5yZXN0YXJ0U2ltdWxhdGlvbigpfSkpfX0sb25Nb3VzZVVwOmZ1bmN0aW9uKGEsYil7YS5maXhlZFBvc2l0aW9uJiZhLmhhc0RyYWdnZWQmJih0aGlzLmxheW91dC5lbmFibGVTaW11bGF0aW9uP3RoaXMubGF5b3V0LnN0YXJ0KCk6dGhpcy5jaGFydC5yZWRyYXcoKSxhLmluRHJhZ01vZGU9YS5oYXNEcmFnZ2VkPQohMSx0aGlzLm9wdGlvbnMuZml4ZWREcmFnZ2FibGV8fGRlbGV0ZSBhLmZpeGVkUG9zaXRpb24pfSxyZWRyYXdIYWxvOmZ1bmN0aW9uKGEpe2EmJnRoaXMuaGFsbyYmdGhpcy5oYWxvLmF0dHIoe2Q6YS5oYWxvUGF0aCh0aGlzLm9wdGlvbnMuc3RhdGVzLmhvdmVyLmhhbG8uc2l6ZSl9KX19O2UoZiwibG9hZCIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLGIsZix4O2EuY29udGFpbmVyJiYoYj1lKGEuY29udGFpbmVyLCJtb3VzZWRvd24iLGZ1bmN0aW9uKGIpe3ZhciBoPWEuaG92ZXJQb2ludDtoJiZoLnNlcmllcyYmaC5zZXJpZXMuaGFzRHJhZ2dhYmxlTm9kZXMmJmguc2VyaWVzLm9wdGlvbnMuZHJhZ2dhYmxlJiYoaC5zZXJpZXMub25Nb3VzZURvd24oaCxiKSxmPWUoYS5jb250YWluZXIsIm1vdXNlbW92ZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGgmJmguc2VyaWVzJiZoLnNlcmllcy5vbk1vdXNlTW92ZShoLGEpfSkseD1lKGEuY29udGFpbmVyLm93bmVyRG9jdW1lbnQsIm1vdXNldXAiLGZ1bmN0aW9uKGEpe2YoKTsKeCgpO3JldHVybiBoJiZoLnNlcmllcyYmaC5zZXJpZXMub25Nb3VzZVVwKGgsYSl9KSl9KSk7ZShhLCJkZXN0cm95IixmdW5jdGlvbigpe2IoKX0pfSl9KTtDKGYsInBhcnRzLW1vcmUvUGFja2VkQnViYmxlU2VyaWVzLmpzIixbZlsicGFydHMvQ2hhcnQuanMiXSxmWyJwYXJ0cy9Db2xvci5qcyJdLGZbInBhcnRzL0dsb2JhbHMuanMiXSxmWyJwYXJ0cy9Qb2ludC5qcyJdLGZbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihmLGEsYixlLGgpe3ZhciBxPWEucGFyc2UsdD1oLmFkZEV2ZW50LHg9aC5jbGFtcCxCPWguZGVmaW5lZCx6PWguZXh0ZW5kO2E9aC5leHRlbmRDbGFzczt2YXIgYz1oLmZpcmVFdmVudCxsPWguaXNBcnJheSx3PWguaXNOdW1iZXIscD1oLm1lcmdlLHk9aC5waWNrO2g9aC5zZXJpZXNUeXBlO3ZhciB2PWIuU2VyaWVzLG09Yi5sYXlvdXRzWyJyZWluZ29sZC1mcnVjaHRlcm1hbiJdLG49Yi5kcmFnTm9kZXNNaXhpbjtmLnByb3RvdHlwZS5nZXRTZWxlY3RlZFBhcmVudE5vZGVzPQpmdW5jdGlvbigpe3ZhciBhPVtdO3RoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUuc2VsZWN0ZWQmJmEucHVzaChkLnBhcmVudE5vZGUpfSk7cmV0dXJuIGF9O2IubmV0d29ya2dyYXBoSW50ZWdyYXRpb25zLnBhY2tlZGJ1YmJsZT17cmVwdWxzaXZlRm9yY2VGdW5jdGlvbjpmdW5jdGlvbihhLGcsYixjKXtyZXR1cm4gTWF0aC5taW4oYSwoYi5tYXJrZXIucmFkaXVzK2MubWFya2VyLnJhZGl1cykvMil9LGJhcnljZW50ZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGc9YS5vcHRpb25zLmdyYXZpdGF0aW9uYWxDb25zdGFudCxiPWEuYm94LGM9YS5ub2RlcyxlLGY7Yy5mb3JFYWNoKGZ1bmN0aW9uKGQpe2Eub3B0aW9ucy5zcGxpdFNlcmllcyYmIWQuaXNQYXJlbnROb2RlPyhlPWQuc2VyaWVzLnBhcmVudE5vZGUucGxvdFgsZj1kLnNlcmllcy5wYXJlbnROb2RlLnBsb3RZKTooZT1iLndpZHRoLzIsZj1iLmhlaWdodC8yKTtkLmZpeGVkUG9zaXRpb258fAooZC5wbG90WC09KGQucGxvdFgtZSkqZy8oZC5tYXNzKk1hdGguc3FydChjLmxlbmd0aCkpLGQucGxvdFktPShkLnBsb3RZLWYpKmcvKGQubWFzcypNYXRoLnNxcnQoYy5sZW5ndGgpKSl9KX0scmVwdWxzaXZlOmZ1bmN0aW9uKGEsZyxiLGMpe3ZhciBkPWcqdGhpcy5kaWZmVGVtcGVyYXR1cmUvYS5tYXNzL2EuZGVncmVlO2c9Yi54KmQ7Yj1iLnkqZDthLmZpeGVkUG9zaXRpb258fChhLnBsb3RYKz1nLGEucGxvdFkrPWIpO2MuZml4ZWRQb3NpdGlvbnx8KGMucGxvdFgtPWcsYy5wbG90WS09Yil9LGludGVncmF0ZTpiLm5ldHdvcmtncmFwaEludGVncmF0aW9ucy52ZXJsZXQuaW50ZWdyYXRlLGdldEs6Yi5ub29wfTtiLmxheW91dHMucGFja2VkYnViYmxlPWEobSx7YmVmb3JlU3RlcDpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5tYXJrZXImJnRoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7YSYmYS5jYWxjdWxhdGVQYXJlbnRSYWRpdXMoKX0pfSxzZXRDaXJjdWxhclBvc2l0aW9uczpmdW5jdGlvbigpe3ZhciBhPQp0aGlzLGc9YS5ib3gsYj1hLm5vZGVzLGM9MipNYXRoLlBJLyhiLmxlbmd0aCsxKSxlLGYsaD1hLm9wdGlvbnMuaW5pdGlhbFBvc2l0aW9uUmFkaXVzO2IuZm9yRWFjaChmdW5jdGlvbihkLGIpe2Eub3B0aW9ucy5zcGxpdFNlcmllcyYmIWQuaXNQYXJlbnROb2RlPyhlPWQuc2VyaWVzLnBhcmVudE5vZGUucGxvdFgsZj1kLnNlcmllcy5wYXJlbnROb2RlLnBsb3RZKTooZT1nLndpZHRoLzIsZj1nLmhlaWdodC8yKTtkLnBsb3RYPWQucHJldlg9eShkLnBsb3RYLGUraCpNYXRoLmNvcyhkLmluZGV4fHxiKmMpKTtkLnBsb3RZPWQucHJldlk9eShkLnBsb3RZLGYraCpNYXRoLnNpbihkLmluZGV4fHxiKmMpKTtkLmRpc3BYPTA7ZC5kaXNwWT0wfSl9LHJlcHVsc2l2ZUZvcmNlczpmdW5jdGlvbigpe3ZhciBhPXRoaXMsZyxiLGMsZT1hLm9wdGlvbnMuYnViYmxlUGFkZGluZzthLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5kZWdyZWU9ZC5tYXNzO2QubmVpZ2hib3Vycz0wO2Eubm9kZXMuZm9yRWFjaChmdW5jdGlvbihrKXtnPQowO2Q9PT1rfHxkLmZpeGVkUG9zaXRpb258fCFhLm9wdGlvbnMuc2VyaWVzSW50ZXJhY3Rpb24mJmQuc2VyaWVzIT09ay5zZXJpZXN8fChjPWEuZ2V0RGlzdFhZKGQsayksYj1hLnZlY3Rvckxlbmd0aChjKS0oZC5tYXJrZXIucmFkaXVzK2subWFya2VyLnJhZGl1cytlKSwwPmImJihkLmRlZ3JlZSs9LjAxLGQubmVpZ2hib3VycysrLGc9YS5yZXB1bHNpdmVGb3JjZSgtYi9NYXRoLnNxcnQoZC5uZWlnaGJvdXJzKSxhLmssZCxrKSksYS5mb3JjZSgicmVwdWxzaXZlIixkLGcqay5tYXNzLGMsayxiKSl9KX0pfSxhcHBseUxpbWl0Qm94OmZ1bmN0aW9uKGEpe2lmKHRoaXMub3B0aW9ucy5zcGxpdFNlcmllcyYmIWEuaXNQYXJlbnROb2RlJiZ0aGlzLm9wdGlvbnMucGFyZW50Tm9kZUxpbWl0KXt2YXIgZD10aGlzLmdldERpc3RYWShhLGEuc2VyaWVzLnBhcmVudE5vZGUpO3ZhciBiPWEuc2VyaWVzLnBhcmVudE5vZGVSYWRpdXMtYS5tYXJrZXIucmFkaXVzLXRoaXMudmVjdG9yTGVuZ3RoKGQpOwowPmImJmI+LTIqYS5tYXJrZXIucmFkaXVzJiYoYS5wbG90WC09LjAxKmQueCxhLnBsb3RZLT0uMDEqZC55KX1tLnByb3RvdHlwZS5hcHBseUxpbWl0Qm94LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KTtoKCJwYWNrZWRidWJibGUiLCJidWJibGUiLHttaW5TaXplOiIxMCUiLG1heFNpemU6IjUwJSIsc2l6ZUJ5OiJhcmVhIix6b25lQXhpczoieSIsY3Jpc3A6ITEsdG9vbHRpcDp7cG9pbnRGb3JtYXQ6IlZhbHVlOiB7cG9pbnQudmFsdWV9In0sZHJhZ2dhYmxlOiEwLHVzZVNpbXVsYXRpb246ITAscGFyZW50Tm9kZTp7YWxsb3dQb2ludFNlbGVjdDohMX0sZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQudmFsdWV9LHBhcmVudE5vZGVGb3JtYXR0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lfSxwYXJlbnROb2RlVGV4dFBhdGg6e2VuYWJsZWQ6ITB9LHBhZGRpbmc6MCxzdHlsZTp7dHJhbnNpdGlvbjoib3BhY2l0eSAyMDAwbXMifX0sbGF5b3V0QWxnb3JpdGhtOntpbml0aWFsUG9zaXRpb25zOiJjaXJjbGUiLAppbml0aWFsUG9zaXRpb25SYWRpdXM6MjAsYnViYmxlUGFkZGluZzo1LHBhcmVudE5vZGVMaW1pdDohMSxzZXJpZXNJbnRlcmFjdGlvbjohMCxkcmFnQmV0d2VlblNlcmllczohMSxwYXJlbnROb2RlT3B0aW9uczp7bWF4SXRlcmF0aW9uczo0MDAsZ3Jhdml0YXRpb25hbENvbnN0YW50Oi4wMyxtYXhTcGVlZDo1MCxpbml0aWFsUG9zaXRpb25SYWRpdXM6MTAwLHNlcmllc0ludGVyYWN0aW9uOiEwLG1hcmtlcjp7ZmlsbENvbG9yOm51bGwsZmlsbE9wYWNpdHk6MSxsaW5lV2lkdGg6MSxsaW5lQ29sb3I6bnVsbCxzeW1ib2w6ImNpcmNsZSJ9fSxlbmFibGVTaW11bGF0aW9uOiEwLHR5cGU6InBhY2tlZGJ1YmJsZSIsaW50ZWdyYXRpb246InBhY2tlZGJ1YmJsZSIsbWF4SXRlcmF0aW9uczoxRTMsc3BsaXRTZXJpZXM6ITEsbWF4U3BlZWQ6NSxncmF2aXRhdGlvbmFsQ29uc3RhbnQ6LjAxLGZyaWN0aW9uOi0uOTgxfX0se2hhc0RyYWdnYWJsZU5vZGVzOiEwLGZvcmNlczpbImJhcnljZW50ZXIiLAoicmVwdWxzaXZlIl0scG9pbnRBcnJheU1hcDpbInZhbHVlIl0sdHJhY2tlckdyb3VwczpbImdyb3VwIiwiZGF0YUxhYmVsc0dyb3VwIiwicGFyZW50Tm9kZXNHcm91cCJdLHBvaW50VmFsS2V5OiJ2YWx1ZSIsaXNDYXJ0ZXNpYW46ITEscmVxdWlyZVNvcnRpbmc6ITEsZGlyZWN0VG91Y2g6ITAsYXhpc1R5cGVzOltdLG5vU2hhcmVkVG9vbHRpcDohMCxzZWFyY2hQb2ludDpiLm5vb3AsYWNjdW11bGF0ZUFsbFBvaW50czpmdW5jdGlvbihhKXt2YXIgZD1hLmNoYXJ0LGI9W10sYyxlO2ZvcihjPTA7YzxkLnNlcmllcy5sZW5ndGg7YysrKWlmKGE9ZC5zZXJpZXNbY10sYS5pcygicGFja2VkYnViYmxlIikmJmEudmlzaWJsZXx8IWQub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXMpZm9yKGU9MDtlPGEueURhdGEubGVuZ3RoO2UrKyliLnB1c2goW251bGwsbnVsbCxhLnlEYXRhW2VdLGEuaW5kZXgsZSx7aWQ6ZSxtYXJrZXI6e3JhZGl1czowfX1dKTtyZXR1cm4gYn0saW5pdDpmdW5jdGlvbigpe3YucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcywKYXJndW1lbnRzKTt0KHRoaXMsInVwZGF0ZWREYXRhIixmdW5jdGlvbigpe3RoaXMuY2hhcnQuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS50eXBlPT09dGhpcy50eXBlJiYoYS5pc0RpcnR5PSEwKX0sdGhpcyl9KTtyZXR1cm4gdGhpc30scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGE9W107di5wcm90b3R5cGUucmVuZGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLm9wdGlvbnMuZGF0YUxhYmVscy5hbGxvd092ZXJsYXB8fCh0aGlzLmRhdGEuZm9yRWFjaChmdW5jdGlvbihkKXtsKGQuZGF0YUxhYmVscykmJmQuZGF0YUxhYmVscy5mb3JFYWNoKGZ1bmN0aW9uKGQpe2EucHVzaChkKX0pfSksdGhpcy5vcHRpb25zLnVzZVNpbXVsYXRpb24mJnRoaXMuY2hhcnQuaGlkZU92ZXJsYXBwaW5nTGFiZWxzKGEpKX0sc2V0VmlzaWJsZTpmdW5jdGlvbigpe3ZhciBhPXRoaXM7di5wcm90b3R5cGUuc2V0VmlzaWJsZS5hcHBseShhLGFyZ3VtZW50cyk7YS5wYXJlbnROb2RlTGF5b3V0JiZhLmdyYXBoPwphLnZpc2libGU/KGEuZ3JhcGguc2hvdygpLGEucGFyZW50Tm9kZS5kYXRhTGFiZWwmJmEucGFyZW50Tm9kZS5kYXRhTGFiZWwuc2hvdygpKTooYS5ncmFwaC5oaWRlKCksYS5wYXJlbnROb2RlTGF5b3V0LnJlbW92ZUVsZW1lbnRGcm9tQ29sbGVjdGlvbihhLnBhcmVudE5vZGUsYS5wYXJlbnROb2RlTGF5b3V0Lm5vZGVzKSxhLnBhcmVudE5vZGUuZGF0YUxhYmVsJiZhLnBhcmVudE5vZGUuZGF0YUxhYmVsLmhpZGUoKSk6YS5sYXlvdXQmJihhLnZpc2libGU/YS5sYXlvdXQuYWRkRWxlbWVudHNUb0NvbGxlY3Rpb24oYS5wb2ludHMsYS5sYXlvdXQubm9kZXMpOmEucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZCl7YS5sYXlvdXQucmVtb3ZlRWxlbWVudEZyb21Db2xsZWN0aW9uKGQsYS5sYXlvdXQubm9kZXMpfSkpfSxkcmF3RGF0YUxhYmVsczpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5kYXRhTGFiZWxzLnRleHRQYXRoLGI9dGhpcy5wb2ludHM7di5wcm90b3R5cGUuZHJhd0RhdGFMYWJlbHMuYXBwbHkodGhpcywKYXJndW1lbnRzKTt0aGlzLnBhcmVudE5vZGUmJih0aGlzLnBhcmVudE5vZGUuZm9ybWF0UHJlZml4PSJwYXJlbnROb2RlIix0aGlzLnBvaW50cz1bdGhpcy5wYXJlbnROb2RlXSx0aGlzLm9wdGlvbnMuZGF0YUxhYmVscy50ZXh0UGF0aD10aGlzLm9wdGlvbnMuZGF0YUxhYmVscy5wYXJlbnROb2RlVGV4dFBhdGgsdi5wcm90b3R5cGUuZHJhd0RhdGFMYWJlbHMuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMucG9pbnRzPWIsdGhpcy5vcHRpb25zLmRhdGFMYWJlbHMudGV4dFBhdGg9YSl9LHNlcmllc0JveDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQsYj1NYXRoLm1heCxjPU1hdGgubWluLGUsZj1bYS5wbG90TGVmdCxhLnBsb3RMZWZ0K2EucGxvdFdpZHRoLGEucGxvdFRvcCxhLnBsb3RUb3ArYS5wbG90SGVpZ2h0XTt0aGlzLmRhdGEuZm9yRWFjaChmdW5jdGlvbihhKXtCKGEucGxvdFgpJiZCKGEucGxvdFkpJiZhLm1hcmtlci5yYWRpdXMmJihlPWEubWFya2VyLnJhZGl1cyxmWzBdPQpjKGZbMF0sYS5wbG90WC1lKSxmWzFdPWIoZlsxXSxhLnBsb3RYK2UpLGZbMl09YyhmWzJdLGEucGxvdFktZSksZlszXT1iKGZbM10sYS5wbG90WStlKSl9KTtyZXR1cm4gdyhmLndpZHRoL2YuaGVpZ2h0KT9mOm51bGx9LGNhbGN1bGF0ZVBhcmVudFJhZGl1czpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VyaWVzQm94KCk7dGhpcy5wYXJlbnROb2RlUmFkaXVzPXgoTWF0aC5zcXJ0KDIqdGhpcy5wYXJlbnROb2RlTWFzcy9NYXRoLlBJKSsyMCwyMCxhP01hdGgubWF4KE1hdGguc3FydChNYXRoLnBvdyhhLndpZHRoLDIpK01hdGgucG93KGEuaGVpZ2h0LDIpKS8yKzIwLDIwKTpNYXRoLnNxcnQoMip0aGlzLnBhcmVudE5vZGVNYXNzL01hdGguUEkpKzIwKTt0aGlzLnBhcmVudE5vZGUmJih0aGlzLnBhcmVudE5vZGUubWFya2VyLnJhZGl1cz10aGlzLnBhcmVudE5vZGUucmFkaXVzPXRoaXMucGFyZW50Tm9kZVJhZGl1cyl9LGRyYXdHcmFwaDpmdW5jdGlvbigpe2lmKHRoaXMubGF5b3V0JiYKdGhpcy5sYXlvdXQub3B0aW9ucy5zcGxpdFNlcmllcyl7dmFyIGE9dGhpcy5jaGFydCxiPXRoaXMubGF5b3V0Lm9wdGlvbnMucGFyZW50Tm9kZU9wdGlvbnMubWFya2VyO2I9e2ZpbGw6Yi5maWxsQ29sb3J8fHEodGhpcy5jb2xvcikuYnJpZ2h0ZW4oLjQpLmdldCgpLG9wYWNpdHk6Yi5maWxsT3BhY2l0eSxzdHJva2U6Yi5saW5lQ29sb3J8fHRoaXMuY29sb3IsInN0cm9rZS13aWR0aCI6Yi5saW5lV2lkdGh9O3ZhciBjPXRoaXMudmlzaWJsZT8iaW5oZXJpdCI6ImhpZGRlbiI7dGhpcy5wYXJlbnROb2Rlc0dyb3VwfHwodGhpcy5wYXJlbnROb2Rlc0dyb3VwPXRoaXMucGxvdEdyb3VwKCJwYXJlbnROb2Rlc0dyb3VwIiwicGFyZW50Tm9kZSIsYywuMSxhLnNlcmllc0dyb3VwKSx0aGlzLmdyb3VwLmF0dHIoe3pJbmRleDoyfSkpO3RoaXMuY2FsY3VsYXRlUGFyZW50UmFkaXVzKCk7Yz1wKHt4OnRoaXMucGFyZW50Tm9kZS5wbG90WC10aGlzLnBhcmVudE5vZGVSYWRpdXMseTp0aGlzLnBhcmVudE5vZGUucGxvdFktCnRoaXMucGFyZW50Tm9kZVJhZGl1cyx3aWR0aDoyKnRoaXMucGFyZW50Tm9kZVJhZGl1cyxoZWlnaHQ6Mip0aGlzLnBhcmVudE5vZGVSYWRpdXN9LGIpO3RoaXMucGFyZW50Tm9kZS5ncmFwaGljfHwodGhpcy5ncmFwaD10aGlzLnBhcmVudE5vZGUuZ3JhcGhpYz1hLnJlbmRlcmVyLnN5bWJvbChiLnN5bWJvbCkuYWRkKHRoaXMucGFyZW50Tm9kZXNHcm91cCkpO3RoaXMucGFyZW50Tm9kZS5ncmFwaGljLmF0dHIoYyl9fSxjcmVhdGVQYXJlbnROb2RlczpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1hLmNoYXJ0LGM9YS5wYXJlbnROb2RlTGF5b3V0LGUsZj1hLnBhcmVudE5vZGUsaD1hLnBvaW50Q2xhc3M7YS5wYXJlbnROb2RlTWFzcz0wO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZCl7YS5wYXJlbnROb2RlTWFzcys9TWF0aC5QSSpNYXRoLnBvdyhkLm1hcmtlci5yYWRpdXMsMil9KTthLmNhbGN1bGF0ZVBhcmVudFJhZGl1cygpO2Mubm9kZXMuZm9yRWFjaChmdW5jdGlvbihkKXtkLnNlcmllc0luZGV4PT09CmEuaW5kZXgmJihlPSEwKX0pO2Muc2V0QXJlYSgwLDAsYi5wbG90V2lkdGgsYi5wbG90SGVpZ2h0KTtlfHwoZnx8KGY9KG5ldyBoKS5pbml0KHRoaXMse21hc3M6YS5wYXJlbnROb2RlUmFkaXVzLzIsbWFya2VyOntyYWRpdXM6YS5wYXJlbnROb2RlUmFkaXVzfSxkYXRhTGFiZWxzOntpbnNpZGU6ITF9LGRhdGFMYWJlbE9uTnVsbDohMCxkZWdyZWU6YS5wYXJlbnROb2RlUmFkaXVzLGlzUGFyZW50Tm9kZTohMCxzZXJpZXNJbmRleDphLmluZGV4fSkpLGEucGFyZW50Tm9kZSYmKGYucGxvdFg9YS5wYXJlbnROb2RlLnBsb3RYLGYucGxvdFk9YS5wYXJlbnROb2RlLnBsb3RZKSxhLnBhcmVudE5vZGU9ZixjLmFkZEVsZW1lbnRzVG9Db2xsZWN0aW9uKFthXSxjLnNlcmllcyksYy5hZGRFbGVtZW50c1RvQ29sbGVjdGlvbihbZl0sYy5ub2RlcykpfSxkcmF3VHJhY2tlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMucGFyZW50Tm9kZTtiLlRyYWNrZXJNaXhpbi5kcmF3VHJhY2tlclBvaW50LmNhbGwodGhpcyk7CmlmKGEpe3ZhciBnPWwoYS5kYXRhTGFiZWxzKT9hLmRhdGFMYWJlbHM6YS5kYXRhTGFiZWw/W2EuZGF0YUxhYmVsXTpbXTthLmdyYXBoaWMmJihhLmdyYXBoaWMuZWxlbWVudC5wb2ludD1hKTtnLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5kaXY/ZC5kaXYucG9pbnQ9YTpkLmVsZW1lbnQucG9pbnQ9YX0pfX0sYWRkU2VyaWVzTGF5b3V0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLmxheW91dEFsZ29yaXRobSxnPXRoaXMuY2hhcnQuZ3JhcGhMYXlvdXRzU3RvcmFnZSxjPXRoaXMuY2hhcnQuZ3JhcGhMYXlvdXRzTG9va3VwLGU9cChhLGEucGFyZW50Tm9kZU9wdGlvbnMse2VuYWJsZVNpbXVsYXRpb246dGhpcy5sYXlvdXQub3B0aW9ucy5lbmFibGVTaW11bGF0aW9ufSk7dmFyIGY9Z1thLnR5cGUrIi1zZXJpZXMiXTtmfHwoZ1thLnR5cGUrIi1zZXJpZXMiXT1mPW5ldyBiLmxheW91dHNbYS50eXBlXSxmLmluaXQoZSksYy5zcGxpY2UoZi5pbmRleCwwLGYpKTt0aGlzLnBhcmVudE5vZGVMYXlvdXQ9CmY7dGhpcy5jcmVhdGVQYXJlbnROb2RlcygpfSxhZGRMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMubGF5b3V0QWxnb3JpdGhtLGc9dGhpcy5jaGFydC5ncmFwaExheW91dHNTdG9yYWdlLGM9dGhpcy5jaGFydC5ncmFwaExheW91dHNMb29rdXAsZT10aGlzLmNoYXJ0Lm9wdGlvbnMuY2hhcnQ7Z3x8KHRoaXMuY2hhcnQuZ3JhcGhMYXlvdXRzU3RvcmFnZT1nPXt9LHRoaXMuY2hhcnQuZ3JhcGhMYXlvdXRzTG9va3VwPWM9W10pO3ZhciBmPWdbYS50eXBlXTtmfHwoYS5lbmFibGVTaW11bGF0aW9uPUIoZS5mb3JFeHBvcnQpPyFlLmZvckV4cG9ydDphLmVuYWJsZVNpbXVsYXRpb24sZ1thLnR5cGVdPWY9bmV3IGIubGF5b3V0c1thLnR5cGVdLGYuaW5pdChhKSxjLnNwbGljZShmLmluZGV4LDAsZikpO3RoaXMubGF5b3V0PWY7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXthLm1hc3M9MjthLmRlZ3JlZT0xO2EuY29sbGlzaW9uTm1iPTF9KTtmLnNldEFyZWEoMCwKMCx0aGlzLmNoYXJ0LnBsb3RXaWR0aCx0aGlzLmNoYXJ0LnBsb3RIZWlnaHQpO2YuYWRkRWxlbWVudHNUb0NvbGxlY3Rpb24oW3RoaXNdLGYuc2VyaWVzKTtmLmFkZEVsZW1lbnRzVG9Db2xsZWN0aW9uKHRoaXMucG9pbnRzLGYubm9kZXMpfSxkZWZlckxheW91dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5sYXlvdXRBbGdvcml0aG07dGhpcy52aXNpYmxlJiYodGhpcy5hZGRMYXlvdXQoKSxhLnNwbGl0U2VyaWVzJiZ0aGlzLmFkZFNlcmllc0xheW91dCgpKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxiPXRoaXMuZGF0YSxrPXRoaXMuaW5kZXgsZSxmPXRoaXMub3B0aW9ucy51c2VTaW11bGF0aW9uO3RoaXMucHJvY2Vzc2VkWERhdGE9dGhpcy54RGF0YTt0aGlzLmdlbmVyYXRlUG9pbnRzKCk7QihhLmFsbERhdGFQb2ludHMpfHwoYS5hbGxEYXRhUG9pbnRzPXRoaXMuYWNjdW11bGF0ZUFsbFBvaW50cyh0aGlzKSx0aGlzLmdldFBvaW50UmFkaXVzKCkpOwppZihmKXZhciBoPWEuYWxsRGF0YVBvaW50cztlbHNlIGg9dGhpcy5wbGFjZUJ1YmJsZXMoYS5hbGxEYXRhUG9pbnRzKSx0aGlzLm9wdGlvbnMuZHJhZ2dhYmxlPSExO2ZvcihlPTA7ZTxoLmxlbmd0aDtlKyspaWYoaFtlXVszXT09PWspe3ZhciBsPWJbaFtlXVs0XV07dmFyIG09aFtlXVsyXTtmfHwobC5wbG90WD1oW2VdWzBdLWEucGxvdExlZnQrYS5kaWZmWCxsLnBsb3RZPWhbZV1bMV0tYS5wbG90VG9wK2EuZGlmZlkpO2wubWFya2VyPXoobC5tYXJrZXIse3JhZGl1czptLHdpZHRoOjIqbSxoZWlnaHQ6MiptfSk7bC5yYWRpdXM9bX1mJiZ0aGlzLmRlZmVyTGF5b3V0KCk7Yyh0aGlzLCJhZnRlclRyYW5zbGF0ZSIpfSxjaGVja092ZXJsYXA6ZnVuY3Rpb24oYSxiKXt2YXIgZD1hWzBdLWJbMF0sZz1hWzFdLWJbMV07cmV0dXJuLS4wMDE+TWF0aC5zcXJ0KGQqZCtnKmcpLU1hdGguYWJzKGFbMl0rYlsyXSl9LHBvc2l0aW9uQnViYmxlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1NYXRoLnNxcnQsCmc9TWF0aC5hc2luLGs9TWF0aC5hY29zLGU9TWF0aC5wb3csZj1NYXRoLmFicztkPWQoZShhWzBdLWJbMF0sMikrZShhWzFdLWJbMV0sMikpO2s9aygoZShkLDIpK2UoY1syXStiWzJdLDIpLWUoY1syXSthWzJdLDIpKS8oMiooY1syXStiWzJdKSpkKSk7Zz1nKGYoYVswXS1iWzBdKS9kKTthPSgwPmFbMV0tYlsxXT8wOk1hdGguUEkpK2srZyooMD4oYVswXS1iWzBdKSooYVsxXS1iWzFdKT8xOi0xKTtyZXR1cm5bYlswXSsoYlsyXStjWzJdKSpNYXRoLnNpbihhKSxiWzFdLShiWzJdK2NbMl0pKk1hdGguY29zKGEpLGNbMl0sY1szXSxjWzRdXX0scGxhY2VCdWJibGVzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hlY2tPdmVybGFwLGQ9dGhpcy5wb3NpdGlvbkJ1YmJsZSxjPVtdLGU9MSxmPTAsaD0wO3ZhciBsPVtdO3ZhciBtO2E9YS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGJbMl0tYVsyXX0pO2lmKGEubGVuZ3RoKXtjLnB1c2goW1swLDAsYVswXVsyXSxhWzBdWzNdLGFbMF1bNF1dXSk7CmlmKDE8YS5sZW5ndGgpZm9yKGMucHVzaChbWzAsMC1hWzFdWzJdLWFbMF1bMl0sYVsxXVsyXSxhWzFdWzNdLGFbMV1bNF1dXSksbT0yO208YS5sZW5ndGg7bSsrKWFbbV1bMl09YVttXVsyXXx8MSxsPWQoY1tlXVtmXSxjW2UtMV1baF0sYVttXSksYihsLGNbZV1bMF0pPyhjLnB1c2goW10pLGg9MCxjW2UrMV0ucHVzaChkKGNbZV1bZl0sY1tlXVswXSxhW21dKSksZSsrLGY9MCk6MTxlJiZjW2UtMV1baCsxXSYmYihsLGNbZS0xXVtoKzFdKT8oaCsrLGNbZV0ucHVzaChkKGNbZV1bZl0sY1tlLTFdW2hdLGFbbV0pKSxmKyspOihmKyssY1tlXS5wdXNoKGwpKTt0aGlzLmNoYXJ0LnN0YWdlcz1jO3RoaXMuY2hhcnQucmF3UG9zaXRpb25zPVtdLmNvbmNhdC5hcHBseShbXSxjKTt0aGlzLnJlc2l6ZVJhZGl1cygpO2w9dGhpcy5jaGFydC5yYXdQb3NpdGlvbnN9cmV0dXJuIGx9LHJlc2l6ZVJhZGl1czpmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQsYj1hLnJhd1Bvc2l0aW9ucyxjPU1hdGgubWluLAplPU1hdGgubWF4LGY9YS5wbG90TGVmdCxoPWEucGxvdFRvcCxsPWEucGxvdEhlaWdodCxtPWEucGxvdFdpZHRoLG4scCxxO3ZhciB0PW49TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO3ZhciB2PXA9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2ZvcihxPTA7cTxiLmxlbmd0aDtxKyspe3ZhciB3PWJbcV1bMl07dD1jKHQsYltxXVswXS13KTt2PWUodixiW3FdWzBdK3cpO249YyhuLGJbcV1bMV0tdyk7cD1lKHAsYltxXVsxXSt3KX1xPVt2LXQscC1uXTtjPWMuYXBwbHkoW10sWyhtLWYpL3FbMF0sKGwtaCkvcVsxXV0pO2lmKDFlLTEwPE1hdGguYWJzKGMtMSkpe2ZvcihxPTA7cTxiLmxlbmd0aDtxKyspYltxXVsyXSo9Yzt0aGlzLnBsYWNlQnViYmxlcyhiKX1lbHNlIGEuZGlmZlk9bC8yK2gtbi0ocC1uKS8yLGEuZGlmZlg9bS8yK2YtdC0odi10KS8yfSxjYWxjdWxhdGVaRXh0cmVtZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMuek1pbixiPXRoaXMub3B0aW9ucy56TWF4LGM9CkluZmluaXR5LGU9LUluZmluaXR5O2lmKGEmJmIpcmV0dXJuW2EsYl07dGhpcy5jaGFydC5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLnlEYXRhLmZvckVhY2goZnVuY3Rpb24oYSl7QihhKSYmKGE+ZSYmKGU9YSksYTxjJiYoYz1hKSl9KX0pO2E9eShhLGMpO2I9eShiLGUpO3JldHVyblthLGJdfSxnZXRQb2ludFJhZGl1czpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1hLmNoYXJ0LGM9YS5vcHRpb25zLGU9Yy51c2VTaW11bGF0aW9uLGY9TWF0aC5taW4oYi5wbG90V2lkdGgsYi5wbG90SGVpZ2h0KSxoPXt9LGw9W10sbT1iLmFsbERhdGFQb2ludHMsbixwLHEsdDtbIm1pblNpemUiLCJtYXhTaXplIl0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1wYXJzZUludChjW2FdLDEwKSxkPS8lJC8udGVzdChjW2FdKTtoW2FdPWQ/ZipiLzEwMDpiKk1hdGguc3FydChtLmxlbmd0aCl9KTtiLm1pblJhZGl1cz1uPWgubWluU2l6ZS9NYXRoLnNxcnQobS5sZW5ndGgpO2IubWF4UmFkaXVzPQpwPWgubWF4U2l6ZS9NYXRoLnNxcnQobS5sZW5ndGgpO3ZhciB2PWU/YS5jYWxjdWxhdGVaRXh0cmVtZXMoKTpbbixwXTsobXx8W10pLmZvckVhY2goZnVuY3Rpb24oYixjKXtxPWU/eChiWzJdLHZbMF0sdlsxXSk6YlsyXTt0PWEuZ2V0UmFkaXVzKHZbMF0sdlsxXSxuLHAscSk7MD09PXQmJih0PW51bGwpO21bY11bMl09dDtsLnB1c2godCl9KTthLnJhZGlpPWx9LHJlZHJhd0hhbG86bi5yZWRyYXdIYWxvLG9uTW91c2VEb3duOm4ub25Nb3VzZURvd24sb25Nb3VzZU1vdmU6bi5vbk1vdXNlTW92ZSxvbk1vdXNlVXA6ZnVuY3Rpb24oYSl7aWYoYS5maXhlZFBvc2l0aW9uJiYhYS5yZW1vdmVkKXt2YXIgYixjLGQ9dGhpcy5sYXlvdXQsZT10aGlzLnBhcmVudE5vZGVMYXlvdXQ7ZSYmZC5vcHRpb25zLmRyYWdCZXR3ZWVuU2VyaWVzJiZlLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oZyl7YSYmYS5tYXJrZXImJmchPT1hLnNlcmllcy5wYXJlbnROb2RlJiYoYj1kLmdldERpc3RYWShhLGcpLGM9CmQudmVjdG9yTGVuZ3RoKGIpLWcubWFya2VyLnJhZGl1cy1hLm1hcmtlci5yYWRpdXMsMD5jJiYoZy5zZXJpZXMuYWRkUG9pbnQocChhLm9wdGlvbnMse3Bsb3RYOmEucGxvdFgscGxvdFk6YS5wbG90WX0pLCExKSxkLnJlbW92ZUVsZW1lbnRGcm9tQ29sbGVjdGlvbihhLGQubm9kZXMpLGEucmVtb3ZlKCkpKX0pO24ub25Nb3VzZVVwLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmNoYXJ0LmdyYXBoTGF5b3V0c0xvb2t1cCYmdGhpcy5jaGFydC5ncmFwaExheW91dHNMb29rdXAuZm9yRWFjaChmdW5jdGlvbihhKXthLnJlbW92ZUVsZW1lbnRGcm9tQ29sbGVjdGlvbih0aGlzLGEuc2VyaWVzKX0sdGhpcyk7dGhpcy5wYXJlbnROb2RlJiYodGhpcy5wYXJlbnROb2RlTGF5b3V0LnJlbW92ZUVsZW1lbnRGcm9tQ29sbGVjdGlvbih0aGlzLnBhcmVudE5vZGUsdGhpcy5wYXJlbnROb2RlTGF5b3V0Lm5vZGVzKSx0aGlzLnBhcmVudE5vZGUuZGF0YUxhYmVsJiYKKHRoaXMucGFyZW50Tm9kZS5kYXRhTGFiZWw9dGhpcy5wYXJlbnROb2RlLmRhdGFMYWJlbC5kZXN0cm95KCkpKTtiLlNlcmllcy5wcm90b3R5cGUuZGVzdHJveS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGFsaWduRGF0YUxhYmVsOmIuU2VyaWVzLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbH0se2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnNlcmllcy5sYXlvdXQmJnRoaXMuc2VyaWVzLmxheW91dC5yZW1vdmVFbGVtZW50RnJvbUNvbGxlY3Rpb24odGhpcyx0aGlzLnNlcmllcy5sYXlvdXQubm9kZXMpO3JldHVybiBlLnByb3RvdHlwZS5kZXN0cm95LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZmlyZVBvaW50RXZlbnQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuc2VyaWVzLm9wdGlvbnM7aWYodGhpcy5pc1BhcmVudE5vZGUmJmQucGFyZW50Tm9kZSl7dmFyIGc9ZC5hbGxvd1BvaW50U2VsZWN0O2QuYWxsb3dQb2ludFNlbGVjdD1kLnBhcmVudE5vZGUuYWxsb3dQb2ludFNlbGVjdDtlLnByb3RvdHlwZS5maXJlUG9pbnRFdmVudC5hcHBseSh0aGlzLAphcmd1bWVudHMpO2QuYWxsb3dQb2ludFNlbGVjdD1nfWVsc2UgZS5wcm90b3R5cGUuZmlyZVBvaW50RXZlbnQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxzZWxlY3Q6ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLnNlcmllcy5jaGFydDt0aGlzLmlzUGFyZW50Tm9kZT8oZC5nZXRTZWxlY3RlZFBvaW50cz1kLmdldFNlbGVjdGVkUGFyZW50Tm9kZXMsZS5wcm90b3R5cGUuc2VsZWN0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxkLmdldFNlbGVjdGVkUG9pbnRzPWIuQ2hhcnQucHJvdG90eXBlLmdldFNlbGVjdGVkUG9pbnRzKTplLnByb3RvdHlwZS5zZWxlY3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pO3QoZiwiYmVmb3JlUmVkcmF3IixmdW5jdGlvbigpe3RoaXMuYWxsRGF0YVBvaW50cyYmZGVsZXRlIHRoaXMuYWxsRGF0YVBvaW50c30pOyIifSk7QyhmLCJwYXJ0cy1tb3JlL1BvbGFyLmpzIixbZlsicGFydHMvQ2hhcnQuanMiXSxmWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZlsicGFydHMtbW9yZS9QYW5lLmpzIl0sCmZbInBhcnRzL1BvaW50ZXIuanMiXSxmWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLGZbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihmLGEsYixlLGgscSl7dmFyIHQ9cS5hZGRFdmVudCx4PXEuYW5pbU9iamVjdCxCPXEuZGVmaW5lZCx6PXEuZmluZCxjPXEuaXNOdW1iZXIsbD1xLnBpY2ssdz1xLnNwbGF0LHA9cS51bmlxdWVLZXkseT1xLndyYXAsdj1hLlNlcmllcyxtPWEuc2VyaWVzVHlwZXMsbj12LnByb3RvdHlwZTtlPWUucHJvdG90eXBlO24uc2VhcmNoUG9pbnRCeUFuZ2xlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hhcnQsYz10aGlzLnhBeGlzLnBhbmUuY2VudGVyO3JldHVybiB0aGlzLnNlYXJjaEtEVHJlZSh7Y2xpZW50WDoxODArLTE4MC9NYXRoLlBJKk1hdGguYXRhbjIoYS5jaGFydFgtY1swXS1iLnBsb3RMZWZ0LGEuY2hhcnRZLWNbMV0tYi5wbG90VG9wKX0pfTtuLmdldENvbm5lY3RvcnM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGc9ZD8xOjA7dmFyIGU9MDw9CmImJmI8PWEubGVuZ3RoLTE/YjowPmI/YS5sZW5ndGgtMStiOjA7Yj0wPmUtMT9hLmxlbmd0aC0oMStnKTplLTE7Zz1lKzE+YS5sZW5ndGgtMT9nOmUrMTt2YXIgZj1hW2JdO2c9YVtnXTt2YXIgaz1mLnBsb3RYO2Y9Zi5wbG90WTt2YXIgaD1nLnBsb3RYO3ZhciBsPWcucGxvdFk7Zz1hW2VdLnBsb3RYO2U9YVtlXS5wbG90WTtrPSgxLjUqZytrKS8yLjU7Zj0oMS41KmUrZikvMi41O2g9KDEuNSpnK2gpLzIuNTt2YXIgbT0oMS41KmUrbCkvMi41O2w9TWF0aC5zcXJ0KE1hdGgucG93KGstZywyKStNYXRoLnBvdyhmLWUsMikpO3ZhciBuPU1hdGguc3FydChNYXRoLnBvdyhoLWcsMikrTWF0aC5wb3cobS1lLDIpKTtrPU1hdGguYXRhbjIoZi1lLGstZyk7bT1NYXRoLlBJLzIrKGsrTWF0aC5hdGFuMihtLWUsaC1nKSkvMjtNYXRoLmFicyhrLW0pPk1hdGguUEkvMiYmKG0tPU1hdGguUEkpO2s9ZytNYXRoLmNvcyhtKSpsO2Y9ZStNYXRoLnNpbihtKSpsO2g9ZytNYXRoLmNvcyhNYXRoLlBJKwptKSpuO209ZStNYXRoLnNpbihNYXRoLlBJK20pKm47Zz17cmlnaHRDb250WDpoLHJpZ2h0Q29udFk6bSxsZWZ0Q29udFg6ayxsZWZ0Q29udFk6ZixwbG90WDpnLHBsb3RZOmV9O2MmJihnLnByZXZQb2ludENvbnQ9dGhpcy5nZXRDb25uZWN0b3JzKGEsYiwhMSxkKSk7cmV0dXJuIGd9O24udG9YWT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmNoYXJ0LGM9dGhpcy54QXhpczt2YXIgZD10aGlzLnlBeGlzO3ZhciBlPWEucGxvdFgsZz1hLnBsb3RZLGY9YS5zZXJpZXMsaD1iLmludmVydGVkLGw9YS55LG09aD9lOmQubGVuLWc7aCYmZiYmIWYuaXNSYWRpYWxCYXImJihhLnBsb3RZPWc9Im51bWJlciI9PT10eXBlb2YgbD9kLnRyYW5zbGF0ZShsKXx8MDowKTthLnJlY3RQbG90WD1lO2EucmVjdFBsb3RZPWc7ZC5jZW50ZXImJihtKz1kLmNlbnRlclszXS8yKTtkPWg/ZC5wb3N0VHJhbnNsYXRlKGcsbSk6Yy5wb3N0VHJhbnNsYXRlKGUsbSk7YS5wbG90WD1hLnBvbGFyUGxvdFg9ZC54LWIucGxvdExlZnQ7CmEucGxvdFk9YS5wb2xhclBsb3RZPWQueS1iLnBsb3RUb3A7dGhpcy5rZEJ5QW5nbGU/KGI9KGUvTWF0aC5QSSoxODArYy5wYW5lLm9wdGlvbnMuc3RhcnRBbmdsZSklMzYwLDA+YiYmKGIrPTM2MCksYS5jbGllbnRYPWIpOmEuY2xpZW50WD1hLnBsb3RYfTttLnNwbGluZSYmKHkobS5zcGxpbmUucHJvdG90eXBlLCJnZXRQb2ludFNwbGluZSIsZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5jaGFydC5wb2xhcj9kPyhhPXRoaXMuZ2V0Q29ubmVjdG9ycyhiLGQsITAsdGhpcy5jb25uZWN0RW5kcyksYT1bIkMiLGEucHJldlBvaW50Q29udC5yaWdodENvbnRYLGEucHJldlBvaW50Q29udC5yaWdodENvbnRZLGEubGVmdENvbnRYLGEubGVmdENvbnRZLGEucGxvdFgsYS5wbG90WV0pOmE9WyJNIixjLnBsb3RYLGMucGxvdFldOmE9YS5jYWxsKHRoaXMsYixjLGQpO3JldHVybiBhfSksbS5hcmVhc3BsaW5lcmFuZ2UmJihtLmFyZWFzcGxpbmVyYW5nZS5wcm90b3R5cGUuZ2V0UG9pbnRTcGxpbmU9bS5zcGxpbmUucHJvdG90eXBlLmdldFBvaW50U3BsaW5lKSk7CnQodiwiYWZ0ZXJUcmFuc2xhdGUiLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5jaGFydDtpZihiLnBvbGFyJiZ0aGlzLnhBeGlzKXsodGhpcy5rZEJ5QW5nbGU9Yi50b29sdGlwJiZiLnRvb2x0aXAuc2hhcmVkKT90aGlzLnNlYXJjaFBvaW50PXRoaXMuc2VhcmNoUG9pbnRCeUFuZ2xlOnRoaXMub3B0aW9ucy5maW5kTmVhcmVzdFBvaW50Qnk9Inh5IjtpZighdGhpcy5wcmV2ZW50UG9zdFRyYW5zbGF0ZSlmb3IodmFyIGM9dGhpcy5wb2ludHMsZD1jLmxlbmd0aDtkLS07KXRoaXMudG9YWShjW2RdKSwhYi5oYXNQYXJhbGxlbENvb3JkaW5hdGVzJiYhdGhpcy55QXhpcy5yZXZlcnNlZCYmY1tkXS55PHRoaXMueUF4aXMubWluJiYoY1tkXS5pc051bGw9ITApO3RoaXMuaGFzQ2xpcENpcmNsZVNldHRlcnx8KHRoaXMuaGFzQ2xpcENpcmNsZVNldHRlcj0hIXRoaXMuZXZlbnRzVG9VbmJpbmQucHVzaCh0KHRoaXMsImFmdGVyUmVuZGVyIixmdW5jdGlvbigpe2lmKGIucG9sYXIpe3ZhciBjPXRoaXMueUF4aXMucGFuZS5jZW50ZXI7CnRoaXMuY2xpcENpcmNsZT90aGlzLmNsaXBDaXJjbGUuYW5pbWF0ZSh7eDpjWzBdLHk6Y1sxXSxyOmNbMl0vMixpbm5lclI6Y1szXS8yfSk6dGhpcy5jbGlwQ2lyY2xlPWIucmVuZGVyZXIuY2xpcENpcmNsZShjWzBdLGNbMV0sY1syXS8yLGNbM10vMik7dGhpcy5ncm91cC5jbGlwKHRoaXMuY2xpcENpcmNsZSk7dGhpcy5zZXRDbGlwPWEubm9vcH19KSkpfX0se29yZGVyOjJ9KTt5KG4sImdldEdyYXBoUGF0aCIsZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ7aWYodGhpcy5jaGFydC5wb2xhcil7Yj1ifHx0aGlzLnBvaW50cztmb3IoZD0wO2Q8Yi5sZW5ndGg7ZCsrKWlmKCFiW2RdLmlzTnVsbCl7dmFyIGU9ZDticmVha31pZighMSE9PXRoaXMub3B0aW9ucy5jb25uZWN0RW5kcyYmInVuZGVmaW5lZCIhPT10eXBlb2YgZSl7dGhpcy5jb25uZWN0RW5kcz0hMDtiLnNwbGljZShiLmxlbmd0aCwwLGJbZV0pO3ZhciBnPSEwfWIuZm9yRWFjaChmdW5jdGlvbihhKXsidW5kZWZpbmVkIj09PQp0eXBlb2YgYS5wb2xhclBsb3RZJiZjLnRvWFkoYSl9KX1kPWEuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk7ZyYmYi5wb3AoKTtyZXR1cm4gZH0pO3ZhciBkPWZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcyxlPXRoaXMuY2hhcnQsZj10aGlzLm9wdGlvbnMuYW5pbWF0aW9uLGc9dGhpcy5ncm91cCxrPXRoaXMubWFya2VyR3JvdXAsaD10aGlzLnhBeGlzLmNlbnRlcixtPWUucGxvdExlZnQsbj1lLnBsb3RUb3AscCxxLHQsdjtpZihlLnBvbGFyKWlmKGQuaXNSYWRpYWxCYXIpY3x8KGQuc3RhcnRBbmdsZVJhZD1sKGQudHJhbnNsYXRlZFRocmVzaG9sZCxkLnhBeGlzLnN0YXJ0QW5nbGVSYWQpLGEuc2VyaWVzVHlwZXMucGllLnByb3RvdHlwZS5hbmltYXRlLmNhbGwoZCxjKSk7ZWxzZXtpZihlLnJlbmRlcmVyLmlzU1ZHKWlmKGY9eChmKSxkLmlzKCJjb2x1bW4iKSl7aWYoIWMpe3ZhciB3PWhbM10vMjtkLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3A9YS5ncmFwaGljOwp0PShxPWEuc2hhcGVBcmdzKSYmcS5yO3Y9cSYmcS5pbm5lclI7cCYmcSYmKHAuYXR0cih7cjp3LGlubmVyUjp3fSkscC5hbmltYXRlKHtyOnQsaW5uZXJSOnZ9LGQub3B0aW9ucy5hbmltYXRpb24pKX0pfX1lbHNlIGM/KGI9e3RyYW5zbGF0ZVg6aFswXSttLHRyYW5zbGF0ZVk6aFsxXStuLHNjYWxlWDouMDAxLHNjYWxlWTouMDAxfSxnLmF0dHIoYiksayYmay5hdHRyKGIpKTooYj17dHJhbnNsYXRlWDptLHRyYW5zbGF0ZVk6bixzY2FsZVg6MSxzY2FsZVk6MX0sZy5hbmltYXRlKGIsZiksayYmay5hbmltYXRlKGIsZikpfWVsc2UgYi5jYWxsKHRoaXMsYyl9O3kobiwiYW5pbWF0ZSIsZCk7bS5jb2x1bW4mJih2PW0uYXJlYXJhbmdlLnByb3RvdHlwZSxtPW0uY29sdW1uLnByb3RvdHlwZSxtLnBvbGFyQXJjPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPXRoaXMueEF4aXMuY2VudGVyLGY9dGhpcy55QXhpcy5sZW4sZz1lWzNdLzI7Yj1mLWIrZzthPWYtbChhLGYpK2c7dGhpcy55QXhpcy5yZXZlcnNlZCYmCigwPmImJihiPWcpLDA+YSYmKGE9ZykpO3JldHVybnt4OmVbMF0seTplWzFdLHI6Yixpbm5lclI6YSxzdGFydDpjLGVuZDpkfX0seShtLCJhbmltYXRlIixkKSx5KG0sInRyYW5zbGF0ZSIsZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5vcHRpb25zLGQ9Yi5zdGFja2luZyxlPXRoaXMuY2hhcnQsZj10aGlzLnhBeGlzLGc9dGhpcy55QXhpcyxoPWcucmV2ZXJzZWQsbD1nLmNlbnRlcixtPWYuc3RhcnRBbmdsZVJhZCxuPWYuZW5kQW5nbGVSYWQtbTt0aGlzLnByZXZlbnRQb3N0VHJhbnNsYXRlPSEwO2EuY2FsbCh0aGlzKTtpZihmLmlzUmFkaWFsKXthPXRoaXMucG9pbnRzO2Y9YS5sZW5ndGg7dmFyIHA9Zy50cmFuc2xhdGUoZy5taW4pO3ZhciB0PWcudHJhbnNsYXRlKGcubWF4KTtiPWIudGhyZXNob2xkfHwwO2lmKGUuaW52ZXJ0ZWQmJmMoYikpe3ZhciB2PWcudHJhbnNsYXRlKGIpO0IodikmJigwPnY/dj0wOnY+biYmKHY9biksdGhpcy50cmFuc2xhdGVkVGhyZXNob2xkPXYrbSl9Zm9yKDtmLS07KXtiPQphW2ZdO3ZhciB3PWIuYmFyWDt2YXIgej1iLng7dmFyIHk9Yi55O2Iuc2hhcGVUeXBlPSJhcmMiO2lmKGUuaW52ZXJ0ZWQpe2IucGxvdFk9Zy50cmFuc2xhdGUoeSk7aWYoZCYmZy5zdGFja2luZyl7aWYoeT1nLnN0YWNraW5nLnN0YWNrc1soMD55PyItIjoiIikrdGhpcy5zdGFja0tleV0sdGhpcy52aXNpYmxlJiZ5JiZ5W3pdJiYhYi5pc051bGwpe3ZhciB4PXlbel0ucG9pbnRzW3RoaXMuZ2V0U3RhY2tJbmRpY2F0b3Iodm9pZCAwLHosdGhpcy5pbmRleCkua2V5XTt2YXIgQz1nLnRyYW5zbGF0ZSh4WzBdKTt4PWcudHJhbnNsYXRlKHhbMV0pO0IoQykmJihDPXEuY2xhbXAoQywwLG4pKX19ZWxzZSBDPXYseD1iLnBsb3RZO0M+eCYmKHg9W0MsQz14XVswXSk7aWYoIWgpaWYoQzxwKUM9cDtlbHNlIGlmKHg+dCl4PXQ7ZWxzZXtpZih4PHB8fEM+dClDPXg9MH1lbHNlIGlmKHg+cCl4PXA7ZWxzZSBpZihDPHQpQz10O2Vsc2UgaWYoQz5wfHx4PHQpQz14PW47Zy5taW4+Zy5tYXgmJihDPXg9Cmg/bjowKTtDKz1tO3grPW07bCYmKGIuYmFyWD13Kz1sWzNdLzIpO3o9TWF0aC5tYXgodywwKTt5PU1hdGgubWF4KHcrYi5wb2ludFdpZHRoLDApO2Iuc2hhcGVBcmdzPXt4OmwmJmxbMF0seTpsJiZsWzFdLHI6eSxpbm5lclI6eixzdGFydDpDLGVuZDp4fTtiLm9wYWNpdHk9Qz09PXg/MDp2b2lkIDA7Yi5wbG90WT0oQih0aGlzLnRyYW5zbGF0ZWRUaHJlc2hvbGQpJiYoQzx0aGlzLnRyYW5zbGF0ZWRUaHJlc2hvbGQ/Qzp4KSktbX1lbHNlIEM9dyttLGIuc2hhcGVBcmdzPXRoaXMucG9sYXJBcmMoYi55Qm90dG9tLGIucGxvdFksQyxDK2IucG9pbnRXaWR0aCk7dGhpcy50b1hZKGIpO2UuaW52ZXJ0ZWQ/KHc9Zy5wb3N0VHJhbnNsYXRlKGIucmVjdFBsb3RZLHcrYi5wb2ludFdpZHRoLzIpLGIudG9vbHRpcFBvcz1bdy54LWUucGxvdExlZnQsdy55LWUucGxvdFRvcF0pOmIudG9vbHRpcFBvcz1bYi5wbG90WCxiLnBsb3RZXTtsJiYoYi50dEJlbG93PWIucGxvdFk+bFsxXSl9fX0pLG0uZmluZEFsaWdubWVudHM9CmZ1bmN0aW9uKGEsYil7bnVsbD09PWIuYWxpZ24mJihiLmFsaWduPTIwPGEmJjE2MD5hPyJsZWZ0IjoyMDA8YSYmMzQwPmE/InJpZ2h0IjoiY2VudGVyIik7bnVsbD09PWIudmVydGljYWxBbGlnbiYmKGIudmVydGljYWxBbGlnbj00NT5hfHwzMTU8YT8iYm90dG9tIjoxMzU8YSYmMjI1PmE/InRvcCI6Im1pZGRsZSIpO3JldHVybiBifSx2JiYodi5maW5kQWxpZ25tZW50cz1tLmZpbmRBbGlnbm1lbnRzKSx5KG0sImFsaWduRGF0YUxhYmVsIixmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9dGhpcy5jaGFydCxoPWwoZC5pbnNpZGUsISF0aGlzLm9wdGlvbnMuc3RhY2tpbmcpO2cucG9sYXI/KGE9Yi5yZWN0UGxvdFgvTWF0aC5QSSoxODAsZy5pbnZlcnRlZD8odGhpcy5mb3JjZURMPWcuaXNJbnNpZGVQbG90KGIucGxvdFgsTWF0aC5yb3VuZChiLnBsb3RZKSwhMSksaCYmYi5zaGFwZUFyZ3M/KGU9Yi5zaGFwZUFyZ3MsZT10aGlzLnlBeGlzLnBvc3RUcmFuc2xhdGUoKGUuc3RhcnQrZS5lbmQpLwoyLXRoaXMueEF4aXMuc3RhcnRBbmdsZVJhZCxiLmJhclgrYi5wb2ludFdpZHRoLzIpLGU9e3g6ZS54LWcucGxvdExlZnQseTplLnktZy5wbG90VG9wfSk6Yi50b29sdGlwUG9zJiYoZT17eDpiLnRvb2x0aXBQb3NbMF0seTpiLnRvb2x0aXBQb3NbMV19KSxkLmFsaWduPWwoZC5hbGlnbiwiY2VudGVyIiksZC52ZXJ0aWNhbEFsaWduPWwoZC52ZXJ0aWNhbEFsaWduLCJtaWRkbGUiKSk6dGhpcy5maW5kQWxpZ25tZW50cyYmKGQ9dGhpcy5maW5kQWxpZ25tZW50cyhhLGQpKSxuLmFsaWduRGF0YUxhYmVsLmNhbGwodGhpcyxiLGMsZCxlLGYpLHRoaXMuaXNSYWRpYWxCYXImJmIuc2hhcGVBcmdzJiZiLnNoYXBlQXJncy5zdGFydD09PWIuc2hhcGVBcmdzLmVuZCYmYy5oaWRlKCEwKSk6YS5jYWxsKHRoaXMsYixjLGQsZSxmKX0pKTt5KGUsImdldENvb3JkaW5hdGVzIixmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuY2hhcnQsZD17eEF4aXM6W10seUF4aXM6W119O2MucG9sYXI/Yy5heGVzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGU9CmEuaXNYQXhpcyxmPWEuY2VudGVyO2lmKCJjb2xvckF4aXMiIT09YS5jb2xsKXt2YXIgZz1iLmNoYXJ0WC1mWzBdLWMucGxvdExlZnQ7Zj1iLmNoYXJ0WS1mWzFdLWMucGxvdFRvcDtkW2U/InhBeGlzIjoieUF4aXMiXS5wdXNoKHtheGlzOmEsdmFsdWU6YS50cmFuc2xhdGUoZT9NYXRoLlBJLU1hdGguYXRhbjIoZyxmKTpNYXRoLnNxcnQoTWF0aC5wb3coZywyKStNYXRoLnBvdyhmLDIpKSwhMCl9KX19KTpkPWEuY2FsbCh0aGlzLGIpO3JldHVybiBkfSk7aC5wcm90b3R5cGUuY2xpcENpcmNsZT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1wKCksZj10aGlzLmNyZWF0ZUVsZW1lbnQoImNsaXBQYXRoIikuYXR0cih7aWQ6ZX0pLmFkZCh0aGlzLmRlZnMpO2E9ZD90aGlzLmFyYyhhLGIsYyxkLDAsMipNYXRoLlBJKS5hZGQoZik6dGhpcy5jaXJjbGUoYSxiLGMpLmFkZChmKTthLmlkPWU7YS5jbGlwUGF0aD1mO3JldHVybiBhfTt0KGYsImdldEF4ZXMiLGZ1bmN0aW9uKCl7dGhpcy5wYW5lfHwKKHRoaXMucGFuZT1bXSk7dyh0aGlzLm9wdGlvbnMucGFuZSkuZm9yRWFjaChmdW5jdGlvbihhKXtuZXcgYihhLHRoaXMpfSx0aGlzKX0pO3QoZiwiYWZ0ZXJEcmF3Q2hhcnRCb3giLGZ1bmN0aW9uKCl7dGhpcy5wYW5lLmZvckVhY2goZnVuY3Rpb24oYSl7YS5yZW5kZXIoKX0pfSk7dChhLlNlcmllcywiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQ7YS5pbnZlcnRlZCYmYS5wb2xhciYmKHRoaXMuaXNSYWRpYWxTZXJpZXM9ITAsdGhpcy5pcygiY29sdW1uIikmJih0aGlzLmlzUmFkaWFsQmFyPSEwKSl9KTt5KGYucHJvdG90eXBlLCJnZXQiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIHoodGhpcy5wYW5lLGZ1bmN0aW9uKGEpe3JldHVybiBhLm9wdGlvbnMuaWQ9PT1ifSl8fGEuY2FsbCh0aGlzLGIpfSl9KTtDKGYsIm1hc3RlcnMvaGlnaGNoYXJ0cy1tb3JlLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1oaWdoY2hhcnRzLW1vcmUuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hzdG9jayBKUyB2OC4xLjIgKDIwMjAtMDYtMTYpCgogSGlnaHN0b2NrIGFzIGEgcGx1Z2luIGZvciBIaWdoY2hhcnRzCgogKGMpIDIwMTAtMjAxOSBUb3JzdGVpbiBIb25zaQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihsKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhsWyJkZWZhdWx0Il09bCxtb2R1bGUuZXhwb3J0cz1sKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9zdG9jayIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oSyl7bChLKTtsLkhpZ2hjaGFydHM9SztyZXR1cm4gbH0pOmwoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihsKXtmdW5jdGlvbiBLKGwsdSxCLHQpe2wuaGFzT3duUHJvcGVydHkodSl8fChsW3VdPXQuYXBwbHkobnVsbCxCKSl9bD1sP2wuX21vZHVsZXM6e307SyhsLCJwYXJ0cy9OYXZpZ2F0b3JBeGlzLmpzIixbbFsicGFydHMvR2xvYmFscy5qcyJdLGxbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihsLHUpe3ZhciBCPWwuaXNUb3VjaERldmljZSx0PXUuYWRkRXZlbnQsRT11LmNvcnJlY3RGbG9hdCwKZT11LmRlZmluZWQseD11LmlzTnVtYmVyLHE9dS5waWNrLGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGMpe3RoaXMuYXhpcz1jfWMucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLmF4aXM9dm9pZCAwfTtjLnByb3RvdHlwZS50b0ZpeGVkUmFuZ2U9ZnVuY3Rpb24oYyx2LEMseil7dmFyIEE9dGhpcy5heGlzLG49QS5jaGFydDtuPW4mJm4uZml4ZWRSYW5nZTt2YXIgYT0oQS5wb2ludFJhbmdlfHwwKS8yO2M9cShDLEEudHJhbnNsYXRlKGMsITAsIUEuaG9yaXopKTt2PXEoeixBLnRyYW5zbGF0ZSh2LCEwLCFBLmhvcml6KSk7QT1uJiYodi1jKS9uO2UoQyl8fChjPUUoYythKSk7ZSh6KXx8KHY9RSh2LWEpKTsuNzxBJiYxLjM+QSYmKHo/Yz12LW46dj1jK24pO3goYykmJngodil8fChjPXY9dm9pZCAwKTtyZXR1cm57bWluOmMsbWF4OnZ9fTtyZXR1cm4gY30oKTtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBxKCl7fXEuY29tcG9zZT1mdW5jdGlvbihxKXtxLmtlZXBQcm9wcy5wdXNoKCJuYXZpZ2F0b3JBeGlzIik7CnQocSwiaW5pdCIsZnVuY3Rpb24oKXt0aGlzLm5hdmlnYXRvckF4aXN8fCh0aGlzLm5hdmlnYXRvckF4aXM9bmV3IGModGhpcykpfSk7dChxLCJ6b29tIixmdW5jdGlvbihjKXt2YXIgcT10aGlzLmNoYXJ0Lm9wdGlvbnMsej1xLm5hdmlnYXRvcixBPXRoaXMubmF2aWdhdG9yQXhpcyxuPXEuY2hhcnQucGluY2hUeXBlLGE9cS5yYW5nZVNlbGVjdG9yO3E9cS5jaGFydC56b29tVHlwZTt0aGlzLmlzWEF4aXMmJih6JiZ6LmVuYWJsZWR8fGEmJmEuZW5hYmxlZCkmJigieSI9PT1xP2Muem9vbWVkPSExOighQiYmInh5Ij09PXF8fEImJiJ4eSI9PT1uKSYmdGhpcy5vcHRpb25zLnJhbmdlJiYoej1BLnByZXZpb3VzWm9vbSxlKGMubmV3TWluKT9BLnByZXZpb3VzWm9vbT1bdGhpcy5taW4sdGhpcy5tYXhdOnomJihjLm5ld01pbj16WzBdLGMubmV3TWF4PXpbMV0sQS5wcmV2aW91c1pvb209dm9pZCAwKSkpOyJ1bmRlZmluZWQiIT09dHlwZW9mIGMuem9vbWVkJiZjLnByZXZlbnREZWZhdWx0KCl9KX07CnEuQWRkaXRpb25zQ2xhc3M9YztyZXR1cm4gcX0oKX0pO0sobCwicGFydHMvU2Nyb2xsYmFyQXhpcy5qcyIsW2xbInBhcnRzL0dsb2JhbHMuanMiXSxsWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24obCx1KXt2YXIgQj11LmFkZEV2ZW50LHQ9dS5kZWZpbmVkLEU9dS5waWNrO3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9ZS5jb21wb3NlPWZ1bmN0aW9uKGUscSl7QihlLCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7dmFyIGM9dGhpcztjLm9wdGlvbnMmJmMub3B0aW9ucy5zY3JvbGxiYXImJmMub3B0aW9ucy5zY3JvbGxiYXIuZW5hYmxlZCYmKGMub3B0aW9ucy5zY3JvbGxiYXIudmVydGljYWw9IWMuaG9yaXosYy5vcHRpb25zLnN0YXJ0T25UaWNrPWMub3B0aW9ucy5lbmRPblRpY2s9ITEsYy5zY3JvbGxiYXI9bmV3IHEoYy5jaGFydC5yZW5kZXJlcixjLm9wdGlvbnMuc2Nyb2xsYmFyLGMuY2hhcnQpLEIoYy5zY3JvbGxiYXIsImNoYW5nZWQiLGZ1bmN0aW9uKHEpe3ZhciBlPQpFKGMub3B0aW9ucyYmYy5vcHRpb25zLm1pbixjLm1pbiksdj1FKGMub3B0aW9ucyYmYy5vcHRpb25zLm1heCxjLm1heCksQz10KGMuZGF0YU1pbik/TWF0aC5taW4oZSxjLm1pbixjLmRhdGFNaW4pOmUsej0odChjLmRhdGFNYXgpP01hdGgubWF4KHYsYy5tYXgsYy5kYXRhTWF4KTp2KS1DO3QoZSkmJnQodikmJihjLmhvcml6JiYhYy5yZXZlcnNlZHx8IWMuaG9yaXomJmMucmV2ZXJzZWQ/KGU9Qyt6KnRoaXMudG8sQys9eip0aGlzLmZyb20pOihlPUMreiooMS10aGlzLmZyb20pLEMrPXoqKDEtdGhpcy50bykpLEUodGhpcy5vcHRpb25zLmxpdmVSZWRyYXcsbC5zdmcmJiFsLmlzVG91Y2hEZXZpY2UmJiF0aGlzLmNoYXJ0LmlzQm9vc3RpbmcpfHwibW91c2V1cCI9PT1xLkRPTVR5cGV8fCF0KHEuRE9NVHlwZSk/Yy5zZXRFeHRyZW1lcyhDLGUsITAsIm1vdXNlbW92ZSIhPT1xLkRPTVR5cGUscSk6dGhpcy5zZXRSYW5nZSh0aGlzLmZyb20sdGhpcy50bykpfSkpfSk7QihlLCJhZnRlclJlbmRlciIsCmZ1bmN0aW9uKCl7dmFyIGM9TWF0aC5taW4oRSh0aGlzLm9wdGlvbnMubWluLHRoaXMubWluKSx0aGlzLm1pbixFKHRoaXMuZGF0YU1pbix0aGlzLm1pbikpLHE9TWF0aC5tYXgoRSh0aGlzLm9wdGlvbnMubWF4LHRoaXMubWF4KSx0aGlzLm1heCxFKHRoaXMuZGF0YU1heCx0aGlzLm1heCkpLGU9dGhpcy5zY3JvbGxiYXIsbD10aGlzLmF4aXNUaXRsZU1hcmdpbisodGhpcy50aXRsZU9mZnNldHx8MCksQz10aGlzLmNoYXJ0LnNjcm9sbGJhcnNPZmZzZXRzLHo9dGhpcy5vcHRpb25zLm1hcmdpbnx8MDtlJiYodGhpcy5ob3Jpej8odGhpcy5vcHBvc2l0ZXx8KENbMV0rPWwpLGUucG9zaXRpb24odGhpcy5sZWZ0LHRoaXMudG9wK3RoaXMuaGVpZ2h0KzIrQ1sxXS0odGhpcy5vcHBvc2l0ZT96OjApLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMub3Bwb3NpdGV8fChDWzFdKz16KSxsPTEpOih0aGlzLm9wcG9zaXRlJiYoQ1swXSs9bCksZS5wb3NpdGlvbih0aGlzLmxlZnQrdGhpcy53aWR0aCsKMitDWzBdLSh0aGlzLm9wcG9zaXRlPzA6eiksdGhpcy50b3AsdGhpcy53aWR0aCx0aGlzLmhlaWdodCksdGhpcy5vcHBvc2l0ZSYmKENbMF0rPXopLGw9MCksQ1tsXSs9ZS5zaXplK2Uub3B0aW9ucy5tYXJnaW4saXNOYU4oYyl8fGlzTmFOKHEpfHwhdCh0aGlzLm1pbil8fCF0KHRoaXMubWF4KXx8dGhpcy5taW49PT10aGlzLm1heD9lLnNldFJhbmdlKDAsMSk6KEM9KHRoaXMubWluLWMpLyhxLWMpLGM9KHRoaXMubWF4LWMpLyhxLWMpLHRoaXMuaG9yaXomJiF0aGlzLnJldmVyc2VkfHwhdGhpcy5ob3JpeiYmdGhpcy5yZXZlcnNlZD9lLnNldFJhbmdlKEMsYyk6ZS5zZXRSYW5nZSgxLWMsMS1DKSkpfSk7QihlLCJhZnRlckdldE9mZnNldCIsZnVuY3Rpb24oKXt2YXIgYz10aGlzLmhvcml6PzI6MSxlPXRoaXMuc2Nyb2xsYmFyO2UmJih0aGlzLmNoYXJ0LnNjcm9sbGJhcnNPZmZzZXRzPVswLDBdLHRoaXMuY2hhcnQuYXhpc09mZnNldFtjXSs9ZS5zaXplK2Uub3B0aW9ucy5tYXJnaW4pfSl9OwpyZXR1cm4gZX0oKX0pO0sobCwicGFydHMvU2Nyb2xsYmFyLmpzIixbbFsicGFydHMvQXhpcy5qcyJdLGxbInBhcnRzL0dsb2JhbHMuanMiXSxsWyJwYXJ0cy9TY3JvbGxiYXJBeGlzLmpzIl0sbFsicGFydHMvVXRpbGl0aWVzLmpzIl0sbFsicGFydHMvT3B0aW9ucy5qcyJdXSxmdW5jdGlvbihsLHUsQix0LEUpe3ZhciBlPXQuYWRkRXZlbnQseD10LmNvcnJlY3RGbG9hdCxxPXQuZGVmaW5lZCxjPXQuZGVzdHJveU9iamVjdFByb3BlcnRpZXMsdj10LmZpcmVFdmVudCxKPXQubWVyZ2UsRz10LnBpY2ssQz10LnJlbW92ZUV2ZW50O3Q9RS5kZWZhdWx0T3B0aW9uczt2YXIgej11Lmhhc1RvdWNoLEE9dS5pc1RvdWNoRGV2aWNlLG49dS5zd2FwWFk9ZnVuY3Rpb24oYSxoKXtoJiZhLmZvckVhY2goZnVuY3Rpb24oZyl7Zm9yKHZhciBoPWcubGVuZ3RoLGEsbT0wO208aDttKz0yKWE9Z1ttKzFdLCJudW1iZXIiPT09dHlwZW9mIGEmJihnW20rMV09Z1ttKzJdLGdbbSsyXT1hKX0pO3JldHVybiBhfTsKRT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoaCxnLGEpe3RoaXMuX2V2ZW50cz1bXTt0aGlzLmZyb209dGhpcy5jaGFydFk9dGhpcy5jaGFydFg9MDt0aGlzLnNjcm9sbGJhcj10aGlzLmdyb3VwPXZvaWQgMDt0aGlzLnNjcm9sbGJhckJ1dHRvbnM9W107dGhpcy5zY3JvbGxiYXJHcm91cD12b2lkIDA7dGhpcy5zY3JvbGxiYXJMZWZ0PTA7dGhpcy5zY3JvbGxiYXJSaWZsZXM9dm9pZCAwO3RoaXMuc2Nyb2xsYmFyU3Ryb2tlV2lkdGg9MTt0aGlzLnRvPXRoaXMuc2l6ZT10aGlzLnNjcm9sbGJhclRvcD0wO3RoaXMudHJhY2s9dm9pZCAwO3RoaXMudHJhY2tCb3JkZXJXaWR0aD0xO3RoaXMudXNlck9wdGlvbnM9e307dGhpcy55PXRoaXMueD0wO3RoaXMuY2hhcnQ9YTt0aGlzLm9wdGlvbnM9Zzt0aGlzLnJlbmRlcmVyPWEucmVuZGVyZXI7dGhpcy5pbml0KGgsZyxhKX1hLnByb3RvdHlwZS5hZGRFdmVudHM9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLm9wdGlvbnMuaW52ZXJ0ZWQ/WzEsMF06WzAsCjFdLGc9dGhpcy5zY3JvbGxiYXJCdXR0b25zLGE9dGhpcy5zY3JvbGxiYXJHcm91cC5lbGVtZW50LG49dGhpcy50cmFjay5lbGVtZW50LG09dGhpcy5tb3VzZURvd25IYW5kbGVyLmJpbmQodGhpcyksaz10aGlzLm1vdXNlTW92ZUhhbmRsZXIuYmluZCh0aGlzKSxkPXRoaXMubW91c2VVcEhhbmRsZXIuYmluZCh0aGlzKTtoPVtbZ1toWzBdXS5lbGVtZW50LCJjbGljayIsdGhpcy5idXR0b25Ub01pbkNsaWNrLmJpbmQodGhpcyldLFtnW2hbMV1dLmVsZW1lbnQsImNsaWNrIix0aGlzLmJ1dHRvblRvTWF4Q2xpY2suYmluZCh0aGlzKV0sW24sImNsaWNrIix0aGlzLnRyYWNrQ2xpY2suYmluZCh0aGlzKV0sW2EsIm1vdXNlZG93biIsbV0sW2Eub3duZXJEb2N1bWVudCwibW91c2Vtb3ZlIixrXSxbYS5vd25lckRvY3VtZW50LCJtb3VzZXVwIixkXV07eiYmaC5wdXNoKFthLCJ0b3VjaHN0YXJ0IixtXSxbYS5vd25lckRvY3VtZW50LCJ0b3VjaG1vdmUiLGtdLFthLm93bmVyRG9jdW1lbnQsInRvdWNoZW5kIiwKZF0pO2guZm9yRWFjaChmdW5jdGlvbihkKXtlLmFwcGx5KG51bGwsZCl9KTt0aGlzLl9ldmVudHM9aH07YS5wcm90b3R5cGUuYnV0dG9uVG9NYXhDbGljaz1mdW5jdGlvbihoKXt2YXIgZz0odGhpcy50by10aGlzLmZyb20pKkcodGhpcy5vcHRpb25zLnN0ZXAsLjIpO3RoaXMudXBkYXRlUG9zaXRpb24odGhpcy5mcm9tK2csdGhpcy50bytnKTt2KHRoaXMsImNoYW5nZWQiLHtmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvLHRyaWdnZXI6InNjcm9sbGJhciIsRE9NRXZlbnQ6aH0pfTthLnByb3RvdHlwZS5idXR0b25Ub01pbkNsaWNrPWZ1bmN0aW9uKGgpe3ZhciBnPXgodGhpcy50by10aGlzLmZyb20pKkcodGhpcy5vcHRpb25zLnN0ZXAsLjIpO3RoaXMudXBkYXRlUG9zaXRpb24oeCh0aGlzLmZyb20tZykseCh0aGlzLnRvLWcpKTt2KHRoaXMsImNoYW5nZWQiLHtmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvLHRyaWdnZXI6InNjcm9sbGJhciIsRE9NRXZlbnQ6aH0pfTthLnByb3RvdHlwZS5jdXJzb3JUb1Njcm9sbGJhclBvc2l0aW9uPQpmdW5jdGlvbihoKXt2YXIgZz10aGlzLm9wdGlvbnM7Zz1nLm1pbldpZHRoPnRoaXMuY2FsY3VsYXRlZFdpZHRoP2cubWluV2lkdGg6MDtyZXR1cm57Y2hhcnRYOihoLmNoYXJ0WC10aGlzLngtdGhpcy54T2Zmc2V0KS8odGhpcy5iYXJXaWR0aC1nKSxjaGFydFk6KGguY2hhcnRZLXRoaXMueS10aGlzLnlPZmZzZXQpLyh0aGlzLmJhcldpZHRoLWcpfX07YS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciBoPXRoaXMuY2hhcnQuc2Nyb2xsZXI7dGhpcy5yZW1vdmVFdmVudHMoKTtbInRyYWNrIiwic2Nyb2xsYmFyUmlmbGVzIiwic2Nyb2xsYmFyIiwic2Nyb2xsYmFyR3JvdXAiLCJncm91cCJdLmZvckVhY2goZnVuY3Rpb24oZyl7dGhpc1tnXSYmdGhpc1tnXS5kZXN0cm95JiYodGhpc1tnXT10aGlzW2ddLmRlc3Ryb3koKSl9LHRoaXMpO2gmJnRoaXM9PT1oLnNjcm9sbGJhciYmKGguc2Nyb2xsYmFyPW51bGwsYyhoLnNjcm9sbGJhckJ1dHRvbnMpKX07YS5wcm90b3R5cGUuZHJhd1Njcm9sbGJhckJ1dHRvbj0KZnVuY3Rpb24oaCl7dmFyIGc9dGhpcy5yZW5kZXJlcixhPXRoaXMuc2Nyb2xsYmFyQnV0dG9ucyxjPXRoaXMub3B0aW9ucyxtPXRoaXMuc2l6ZTt2YXIgaz1nLmcoKS5hZGQodGhpcy5ncm91cCk7YS5wdXNoKGspO2s9Zy5yZWN0KCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtc2Nyb2xsYmFyLWJ1dHRvbiIpLmFkZChrKTt0aGlzLmNoYXJ0LnN0eWxlZE1vZGV8fGsuYXR0cih7c3Ryb2tlOmMuYnV0dG9uQm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6Yy5idXR0b25Cb3JkZXJXaWR0aCxmaWxsOmMuYnV0dG9uQmFja2dyb3VuZENvbG9yfSk7ay5hdHRyKGsuY3Jpc3Aoe3g6LS41LHk6LS41LHdpZHRoOm0rMSxoZWlnaHQ6bSsxLHI6Yy5idXR0b25Cb3JkZXJSYWRpdXN9LGsuc3Ryb2tlV2lkdGgoKSkpO2s9Zy5wYXRoKG4oW1siTSIsbS8yKyhoPy0xOjEpLG0vMi0zXSxbIkwiLG0vMisoaD8tMToxKSxtLzIrM10sWyJMIixtLzIrKGg/MjotMiksbS8yXV0sYy52ZXJ0aWNhbCkpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXNjcm9sbGJhci1hcnJvdyIpLmFkZChhW2hdKTsKdGhpcy5jaGFydC5zdHlsZWRNb2RlfHxrLmF0dHIoe2ZpbGw6Yy5idXR0b25BcnJvd0NvbG9yfSl9O2EucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oaCxnLEkpe3RoaXMuc2Nyb2xsYmFyQnV0dG9ucz1bXTt0aGlzLnJlbmRlcmVyPWg7dGhpcy51c2VyT3B0aW9ucz1nO3RoaXMub3B0aW9ucz1KKGEuZGVmYXVsdE9wdGlvbnMsZyk7dGhpcy5jaGFydD1JO3RoaXMuc2l6ZT1HKHRoaXMub3B0aW9ucy5zaXplLHRoaXMub3B0aW9ucy5oZWlnaHQpO2cuZW5hYmxlZCYmKHRoaXMucmVuZGVyKCksdGhpcy5hZGRFdmVudHMoKSl9O2EucHJvdG90eXBlLm1vdXNlRG93bkhhbmRsZXI9ZnVuY3Rpb24oaCl7aD10aGlzLmNoYXJ0LnBvaW50ZXIubm9ybWFsaXplKGgpO2g9dGhpcy5jdXJzb3JUb1Njcm9sbGJhclBvc2l0aW9uKGgpO3RoaXMuY2hhcnRYPWguY2hhcnRYO3RoaXMuY2hhcnRZPWguY2hhcnRZO3RoaXMuaW5pdFBvc2l0aW9ucz1bdGhpcy5mcm9tLHRoaXMudG9dO3RoaXMuZ3JhYmJlZENlbnRlcj0KITB9O2EucHJvdG90eXBlLm1vdXNlTW92ZUhhbmRsZXI9ZnVuY3Rpb24oaCl7dmFyIGc9dGhpcy5jaGFydC5wb2ludGVyLm5vcm1hbGl6ZShoKSxhPXRoaXMub3B0aW9ucy52ZXJ0aWNhbD8iY2hhcnRZIjoiY2hhcnRYIixjPXRoaXMuaW5pdFBvc2l0aW9uc3x8W107IXRoaXMuZ3JhYmJlZENlbnRlcnx8aC50b3VjaGVzJiYwPT09aC50b3VjaGVzWzBdW2FdfHwoZz10aGlzLmN1cnNvclRvU2Nyb2xsYmFyUG9zaXRpb24oZylbYV0sYT10aGlzW2FdLGE9Zy1hLHRoaXMuaGFzRHJhZ2dlZD0hMCx0aGlzLnVwZGF0ZVBvc2l0aW9uKGNbMF0rYSxjWzFdK2EpLHRoaXMuaGFzRHJhZ2dlZCYmdih0aGlzLCJjaGFuZ2VkIix7ZnJvbTp0aGlzLmZyb20sdG86dGhpcy50byx0cmlnZ2VyOiJzY3JvbGxiYXIiLERPTVR5cGU6aC50eXBlLERPTUV2ZW50Omh9KSl9O2EucHJvdG90eXBlLm1vdXNlVXBIYW5kbGVyPWZ1bmN0aW9uKGEpe3RoaXMuaGFzRHJhZ2dlZCYmdih0aGlzLCJjaGFuZ2VkIix7ZnJvbTp0aGlzLmZyb20sCnRvOnRoaXMudG8sdHJpZ2dlcjoic2Nyb2xsYmFyIixET01UeXBlOmEudHlwZSxET01FdmVudDphfSk7dGhpcy5ncmFiYmVkQ2VudGVyPXRoaXMuaGFzRHJhZ2dlZD10aGlzLmNoYXJ0WD10aGlzLmNoYXJ0WT1udWxsfTthLnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbihhLGcsYyxuKXt2YXIgaD10aGlzLm9wdGlvbnMudmVydGljYWwsaz0wLGQ9dGhpcy5yZW5kZXJlZD8iYW5pbWF0ZSI6ImF0dHIiO3RoaXMueD1hO3RoaXMueT1nK3RoaXMudHJhY2tCb3JkZXJXaWR0aDt0aGlzLndpZHRoPWM7dGhpcy54T2Zmc2V0PXRoaXMuaGVpZ2h0PW47dGhpcy55T2Zmc2V0PWs7aD8odGhpcy53aWR0aD10aGlzLnlPZmZzZXQ9Yz1rPXRoaXMuc2l6ZSx0aGlzLnhPZmZzZXQ9Zz0wLHRoaXMuYmFyV2lkdGg9bi0yKmMsdGhpcy54PWErPXRoaXMub3B0aW9ucy5tYXJnaW4pOih0aGlzLmhlaWdodD10aGlzLnhPZmZzZXQ9bj1nPXRoaXMuc2l6ZSx0aGlzLmJhcldpZHRoPWMtMipuLHRoaXMueSs9dGhpcy5vcHRpb25zLm1hcmdpbik7CnRoaXMuZ3JvdXBbZF0oe3RyYW5zbGF0ZVg6YSx0cmFuc2xhdGVZOnRoaXMueX0pO3RoaXMudHJhY2tbZF0oe3dpZHRoOmMsaGVpZ2h0Om59KTt0aGlzLnNjcm9sbGJhckJ1dHRvbnNbMV1bZF0oe3RyYW5zbGF0ZVg6aD8wOmMtZyx0cmFuc2xhdGVZOmg/bi1rOjB9KX07YS5wcm90b3R5cGUucmVtb3ZlRXZlbnRzPWZ1bmN0aW9uKCl7dGhpcy5fZXZlbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7Qy5hcHBseShudWxsLGEpfSk7dGhpcy5fZXZlbnRzLmxlbmd0aD0wfTthLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJlbmRlcmVyLGc9dGhpcy5vcHRpb25zLGM9dGhpcy5zaXplLGU9dGhpcy5jaGFydC5zdHlsZWRNb2RlLG07dGhpcy5ncm91cD1tPWEuZygic2Nyb2xsYmFyIikuYXR0cih7ekluZGV4OmcuekluZGV4LHRyYW5zbGF0ZVk6LTk5OTk5fSkuYWRkKCk7dGhpcy50cmFjaz1hLnJlY3QoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1zY3JvbGxiYXItdHJhY2siKS5hdHRyKHt4OjAsCnI6Zy50cmFja0JvcmRlclJhZGl1c3x8MCxoZWlnaHQ6Yyx3aWR0aDpjfSkuYWRkKG0pO2V8fHRoaXMudHJhY2suYXR0cih7ZmlsbDpnLnRyYWNrQmFja2dyb3VuZENvbG9yLHN0cm9rZTpnLnRyYWNrQm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6Zy50cmFja0JvcmRlcldpZHRofSk7dGhpcy50cmFja0JvcmRlcldpZHRoPXRoaXMudHJhY2suc3Ryb2tlV2lkdGgoKTt0aGlzLnRyYWNrLmF0dHIoe3k6LXRoaXMudHJhY2tCb3JkZXJXaWR0aCUyLzJ9KTt0aGlzLnNjcm9sbGJhckdyb3VwPWEuZygpLmFkZChtKTt0aGlzLnNjcm9sbGJhcj1hLnJlY3QoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1zY3JvbGxiYXItdGh1bWIiKS5hdHRyKHtoZWlnaHQ6Yyx3aWR0aDpjLHI6Zy5iYXJCb3JkZXJSYWRpdXN8fDB9KS5hZGQodGhpcy5zY3JvbGxiYXJHcm91cCk7dGhpcy5zY3JvbGxiYXJSaWZsZXM9YS5wYXRoKG4oW1siTSIsLTMsYy80XSxbIkwiLC0zLDIqYy8zXSxbIk0iLDAsYy80XSxbIkwiLAowLDIqYy8zXSxbIk0iLDMsYy80XSxbIkwiLDMsMipjLzNdXSxnLnZlcnRpY2FsKSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtc2Nyb2xsYmFyLXJpZmxlcyIpLmFkZCh0aGlzLnNjcm9sbGJhckdyb3VwKTtlfHwodGhpcy5zY3JvbGxiYXIuYXR0cih7ZmlsbDpnLmJhckJhY2tncm91bmRDb2xvcixzdHJva2U6Zy5iYXJCb3JkZXJDb2xvciwic3Ryb2tlLXdpZHRoIjpnLmJhckJvcmRlcldpZHRofSksdGhpcy5zY3JvbGxiYXJSaWZsZXMuYXR0cih7c3Ryb2tlOmcucmlmbGVDb2xvciwic3Ryb2tlLXdpZHRoIjoxfSkpO3RoaXMuc2Nyb2xsYmFyU3Ryb2tlV2lkdGg9dGhpcy5zY3JvbGxiYXIuc3Ryb2tlV2lkdGgoKTt0aGlzLnNjcm9sbGJhckdyb3VwLnRyYW5zbGF0ZSgtdGhpcy5zY3JvbGxiYXJTdHJva2VXaWR0aCUyLzIsLXRoaXMuc2Nyb2xsYmFyU3Ryb2tlV2lkdGglMi8yKTt0aGlzLmRyYXdTY3JvbGxiYXJCdXR0b24oMCk7dGhpcy5kcmF3U2Nyb2xsYmFyQnV0dG9uKDEpfTthLnByb3RvdHlwZS5zZXRSYW5nZT0KZnVuY3Rpb24oYSxnKXt2YXIgaD10aGlzLm9wdGlvbnMsYz1oLnZlcnRpY2FsLG09aC5taW5XaWR0aCxrPXRoaXMuYmFyV2lkdGgsZCxwPSF0aGlzLnJlbmRlcmVkfHx0aGlzLmhhc0RyYWdnZWR8fHRoaXMuY2hhcnQubmF2aWdhdG9yJiZ0aGlzLmNoYXJ0Lm5hdmlnYXRvci5oYXNEcmFnZ2VkPyJhdHRyIjoiYW5pbWF0ZSI7aWYocShrKSl7YT1NYXRoLm1heChhLDApO3ZhciByPU1hdGguY2VpbChrKmEpO3RoaXMuY2FsY3VsYXRlZFdpZHRoPWQ9eChrKk1hdGgubWluKGcsMSktcik7ZDxtJiYocj0oay1tK2QpKmEsZD1tKTttPU1hdGguZmxvb3Iocit0aGlzLnhPZmZzZXQrdGhpcy55T2Zmc2V0KTtrPWQvMi0uNTt0aGlzLmZyb209YTt0aGlzLnRvPWc7Yz8odGhpcy5zY3JvbGxiYXJHcm91cFtwXSh7dHJhbnNsYXRlWTptfSksdGhpcy5zY3JvbGxiYXJbcF0oe2hlaWdodDpkfSksdGhpcy5zY3JvbGxiYXJSaWZsZXNbcF0oe3RyYW5zbGF0ZVk6a30pLHRoaXMuc2Nyb2xsYmFyVG9wPW0sCnRoaXMuc2Nyb2xsYmFyTGVmdD0wKToodGhpcy5zY3JvbGxiYXJHcm91cFtwXSh7dHJhbnNsYXRlWDptfSksdGhpcy5zY3JvbGxiYXJbcF0oe3dpZHRoOmR9KSx0aGlzLnNjcm9sbGJhclJpZmxlc1twXSh7dHJhbnNsYXRlWDprfSksdGhpcy5zY3JvbGxiYXJMZWZ0PW0sdGhpcy5zY3JvbGxiYXJUb3A9MCk7MTI+PWQ/dGhpcy5zY3JvbGxiYXJSaWZsZXMuaGlkZSgpOnRoaXMuc2Nyb2xsYmFyUmlmbGVzLnNob3coITApOyExPT09aC5zaG93RnVsbCYmKDA+PWEmJjE8PWc/dGhpcy5ncm91cC5oaWRlKCk6dGhpcy5ncm91cC5zaG93KCkpO3RoaXMucmVuZGVyZWQ9ITB9fTthLnByb3RvdHlwZS50cmFja0NsaWNrPWZ1bmN0aW9uKGEpe3ZhciBnPXRoaXMuY2hhcnQucG9pbnRlci5ub3JtYWxpemUoYSksaD10aGlzLnRvLXRoaXMuZnJvbSxjPXRoaXMueSt0aGlzLnNjcm9sbGJhclRvcCxtPXRoaXMueCt0aGlzLnNjcm9sbGJhckxlZnQ7dGhpcy5vcHRpb25zLnZlcnRpY2FsJiZnLmNoYXJ0WT4KY3x8IXRoaXMub3B0aW9ucy52ZXJ0aWNhbCYmZy5jaGFydFg+bT90aGlzLnVwZGF0ZVBvc2l0aW9uKHRoaXMuZnJvbStoLHRoaXMudG8raCk6dGhpcy51cGRhdGVQb3NpdGlvbih0aGlzLmZyb20taCx0aGlzLnRvLWgpO3YodGhpcywiY2hhbmdlZCIse2Zyb206dGhpcy5mcm9tLHRvOnRoaXMudG8sdHJpZ2dlcjoic2Nyb2xsYmFyIixET01FdmVudDphfSl9O2EucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihhKXt0aGlzLmRlc3Ryb3koKTt0aGlzLmluaXQodGhpcy5jaGFydC5yZW5kZXJlcixKKCEwLHRoaXMub3B0aW9ucyxhKSx0aGlzLmNoYXJ0KX07YS5wcm90b3R5cGUudXBkYXRlUG9zaXRpb249ZnVuY3Rpb24oYSxnKXsxPGcmJihhPXgoMS14KGctYSkpLGc9MSk7MD5hJiYoZz14KGctYSksYT0wKTt0aGlzLmZyb209YTt0aGlzLnRvPWd9O2EuZGVmYXVsdE9wdGlvbnM9e2hlaWdodDpBPzIwOjE0LGJhckJvcmRlclJhZGl1czowLGJ1dHRvbkJvcmRlclJhZGl1czowLGxpdmVSZWRyYXc6dm9pZCAwLAptYXJnaW46MTAsbWluV2lkdGg6NixzdGVwOi4yLHpJbmRleDozLGJhckJhY2tncm91bmRDb2xvcjoiI2NjY2NjYyIsYmFyQm9yZGVyV2lkdGg6MSxiYXJCb3JkZXJDb2xvcjoiI2NjY2NjYyIsYnV0dG9uQXJyb3dDb2xvcjoiIzMzMzMzMyIsYnV0dG9uQmFja2dyb3VuZENvbG9yOiIjZTZlNmU2IixidXR0b25Cb3JkZXJDb2xvcjoiI2NjY2NjYyIsYnV0dG9uQm9yZGVyV2lkdGg6MSxyaWZsZUNvbG9yOiIjMzMzMzMzIix0cmFja0JhY2tncm91bmRDb2xvcjoiI2YyZjJmMiIsdHJhY2tCb3JkZXJDb2xvcjoiI2YyZjJmMiIsdHJhY2tCb3JkZXJXaWR0aDoxfTtyZXR1cm4gYX0oKTt1LlNjcm9sbGJhcnx8KHQuc2Nyb2xsYmFyPUooITAsRS5kZWZhdWx0T3B0aW9ucyx0LnNjcm9sbGJhciksdS5TY3JvbGxiYXI9RSxCLmNvbXBvc2UobCxFKSk7cmV0dXJuIHUuU2Nyb2xsYmFyfSk7SyhsLCJwYXJ0cy9OYXZpZ2F0b3IuanMiLFtsWyJwYXJ0cy9BeGlzLmpzIl0sbFsicGFydHMvQ2hhcnQuanMiXSwKbFsicGFydHMvQ29sb3IuanMiXSxsWyJwYXJ0cy9HbG9iYWxzLmpzIl0sbFsicGFydHMvTmF2aWdhdG9yQXhpcy5qcyJdLGxbInBhcnRzL09wdGlvbnMuanMiXSxsWyJwYXJ0cy9TY3JvbGxiYXIuanMiXSxsWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24obCx1LEIsdCxFLGUseCxxKXtCPUIucGFyc2U7dmFyIGM9ZS5kZWZhdWx0T3B0aW9ucyx2PXEuYWRkRXZlbnQsSj1xLmNsYW1wLEc9cS5jb3JyZWN0RmxvYXQsQz1xLmRlZmluZWQsej1xLmRlc3Ryb3lPYmplY3RQcm9wZXJ0aWVzLEE9cS5lcmFzZSxuPXEuZXh0ZW5kLGE9cS5maW5kLGg9cS5pc0FycmF5LGc9cS5pc051bWJlcixJPXEubWVyZ2UsRD1xLnBpY2ssbT1xLnJlbW92ZUV2ZW50LGs9cS5zcGxhdCxkPXQuaGFzVG91Y2gscD10LmlzVG91Y2hEZXZpY2U7ZT10LlNlcmllczt2YXIgcj1mdW5jdGlvbihiKXtmb3IodmFyIGY9W10seT0xO3k8YXJndW1lbnRzLmxlbmd0aDt5KyspZlt5LTFdPWFyZ3VtZW50c1t5XTtmPQpbXS5maWx0ZXIuY2FsbChmLGcpO2lmKGYubGVuZ3RoKXJldHVybiBNYXRoW2JdLmFwcGx5KDAsZil9O3E9InVuZGVmaW5lZCI9PT10eXBlb2YgdC5zZXJpZXNUeXBlcy5hcmVhc3BsaW5lPyJsaW5lIjoiYXJlYXNwbGluZSI7bihjLHtuYXZpZ2F0b3I6e2hlaWdodDo0MCxtYXJnaW46MjUsbWFza0luc2lkZTohMCxoYW5kbGVzOnt3aWR0aDo3LGhlaWdodDoxNSxzeW1ib2xzOlsibmF2aWdhdG9yLWhhbmRsZSIsIm5hdmlnYXRvci1oYW5kbGUiXSxlbmFibGVkOiEwLGxpbmVXaWR0aDoxLGJhY2tncm91bmRDb2xvcjoiI2YyZjJmMiIsYm9yZGVyQ29sb3I6IiM5OTk5OTkifSxtYXNrRmlsbDpCKCIjNjY4NWMyIikuc2V0T3BhY2l0eSguMykuZ2V0KCksb3V0bGluZUNvbG9yOiIjY2NjY2NjIixvdXRsaW5lV2lkdGg6MSxzZXJpZXM6e3R5cGU6cSxmaWxsT3BhY2l0eTouMDUsbGluZVdpZHRoOjEsY29tcGFyZTpudWxsLGRhdGFHcm91cGluZzp7YXBwcm94aW1hdGlvbjoiYXZlcmFnZSIsZW5hYmxlZDohMCwKZ3JvdXBQaXhlbFdpZHRoOjIsc21vb3RoZWQ6ITAsdW5pdHM6W1sibWlsbGlzZWNvbmQiLFsxLDIsNSwxMCwyMCwyNSw1MCwxMDAsMjAwLDUwMF1dLFsic2Vjb25kIixbMSwyLDUsMTAsMTUsMzBdXSxbIm1pbnV0ZSIsWzEsMiw1LDEwLDE1LDMwXV0sWyJob3VyIixbMSwyLDMsNCw2LDgsMTJdXSxbImRheSIsWzEsMiwzLDRdXSxbIndlZWsiLFsxLDIsM11dLFsibW9udGgiLFsxLDMsNl1dLFsieWVhciIsbnVsbF1dfSxkYXRhTGFiZWxzOntlbmFibGVkOiExLHpJbmRleDoyfSxpZDoiaGlnaGNoYXJ0cy1uYXZpZ2F0b3Itc2VyaWVzIixjbGFzc05hbWU6ImhpZ2hjaGFydHMtbmF2aWdhdG9yLXNlcmllcyIsbGluZUNvbG9yOm51bGwsbWFya2VyOntlbmFibGVkOiExfSx0aHJlc2hvbGQ6bnVsbH0seEF4aXM6e292ZXJzY3JvbGw6MCxjbGFzc05hbWU6ImhpZ2hjaGFydHMtbmF2aWdhdG9yLXhheGlzIix0aWNrTGVuZ3RoOjAsbGluZVdpZHRoOjAsZ3JpZExpbmVDb2xvcjoiI2U2ZTZlNiIsCmdyaWRMaW5lV2lkdGg6MSx0aWNrUGl4ZWxJbnRlcnZhbDoyMDAsbGFiZWxzOnthbGlnbjoibGVmdCIsc3R5bGU6e2NvbG9yOiIjOTk5OTk5In0seDozLHk6LTR9LGNyb3NzaGFpcjohMX0seUF4aXM6e2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1uYXZpZ2F0b3IteWF4aXMiLGdyaWRMaW5lV2lkdGg6MCxzdGFydE9uVGljazohMSxlbmRPblRpY2s6ITEsbWluUGFkZGluZzouMSxtYXhQYWRkaW5nOi4xLGxhYmVsczp7ZW5hYmxlZDohMX0sY3Jvc3NoYWlyOiExLHRpdGxlOnt0ZXh0Om51bGx9LHRpY2tMZW5ndGg6MCx0aWNrV2lkdGg6MH19fSk7dC5SZW5kZXJlci5wcm90b3R5cGUuc3ltYm9sc1sibmF2aWdhdG9yLWhhbmRsZSJdPWZ1bmN0aW9uKGIsZix5LGQsYSl7Yj0oYSYmYS53aWR0aHx8MCkvMjtmPU1hdGgucm91bmQoYi8zKSsuNTthPWEmJmEuaGVpZ2h0fHwwO3JldHVybltbIk0iLC1iLTEsLjVdLFsiTCIsYiwuNV0sWyJMIixiLGErLjVdLFsiTCIsLWItMSxhKy41XSxbIkwiLC1iLQoxLC41XSxbIk0iLC1mLDRdLFsiTCIsLWYsYS0zXSxbIk0iLGYtMSw0XSxbIkwiLGYtMSxhLTNdXX07dmFyIHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBiKGYpe3RoaXMuem9vbWVkTWluPXRoaXMuem9vbWVkTWF4PXRoaXMueUF4aXM9dGhpcy54QXhpcz10aGlzLnRvcD10aGlzLnNpemU9dGhpcy5zaGFkZXM9dGhpcy5yZW5kZXJlZD10aGlzLnJhbmdlPXRoaXMub3V0bGluZUhlaWdodD10aGlzLm91dGxpbmU9dGhpcy5vcHBvc2l0ZT10aGlzLm5hdmlnYXRvclNpemU9dGhpcy5uYXZpZ2F0b3JTZXJpZXM9dGhpcy5uYXZpZ2F0b3JPcHRpb25zPXRoaXMubmF2aWdhdG9yR3JvdXA9dGhpcy5uYXZpZ2F0b3JFbmFibGVkPXRoaXMubGVmdD10aGlzLmhlaWdodD10aGlzLmhhbmRsZXM9dGhpcy5jaGFydD10aGlzLmJhc2VTZXJpZXM9dm9pZCAwO3RoaXMuaW5pdChmKX1iLnByb3RvdHlwZS5kcmF3SGFuZGxlPWZ1bmN0aW9uKGYseSxiLGEpe3ZhciBkPXRoaXMubmF2aWdhdG9yT3B0aW9ucy5oYW5kbGVzLmhlaWdodDsKdGhpcy5oYW5kbGVzW3ldW2FdKGI/e3RyYW5zbGF0ZVg6TWF0aC5yb3VuZCh0aGlzLmxlZnQrdGhpcy5oZWlnaHQvMiksdHJhbnNsYXRlWTpNYXRoLnJvdW5kKHRoaXMudG9wK3BhcnNlSW50KGYsMTApKy41LWQpfTp7dHJhbnNsYXRlWDpNYXRoLnJvdW5kKHRoaXMubGVmdCtwYXJzZUludChmLDEwKSksdHJhbnNsYXRlWTpNYXRoLnJvdW5kKHRoaXMudG9wK3RoaXMuaGVpZ2h0LzItZC8yLTEpfSl9O2IucHJvdG90eXBlLmRyYXdPdXRsaW5lPWZ1bmN0aW9uKGYseSxiLGEpe3ZhciBkPXRoaXMubmF2aWdhdG9yT3B0aW9ucy5tYXNrSW5zaWRlLGc9dGhpcy5vdXRsaW5lLnN0cm9rZVdpZHRoKCkscD1nLzIsSD1nJTIvMjtnPXRoaXMub3V0bGluZUhlaWdodDt2YXIgcj10aGlzLnNjcm9sbGJhckhlaWdodHx8MCxGPXRoaXMuc2l6ZSxrPXRoaXMubGVmdC1yLHc9dGhpcy50b3A7Yj8oay09cCxiPXcreStILHk9dytmK0gsSD1bWyJNIixrK2csdy1yLUhdLFsiTCIsaytnLGJdLFsiTCIsayxiXSwKWyJMIixrLHldLFsiTCIsaytnLHldLFsiTCIsaytnLHcrRityXV0sZCYmSC5wdXNoKFsiTSIsaytnLGItcF0sWyJMIixrK2cseStwXSkpOihmKz1rK3ItSCx5Kz1rK3ItSCx3Kz1wLEg9W1siTSIsayx3XSxbIkwiLGYsd10sWyJMIixmLHcrZ10sWyJMIix5LHcrZ10sWyJMIix5LHddLFsiTCIsaytGKzIqcix3XV0sZCYmSC5wdXNoKFsiTSIsZi1wLHddLFsiTCIseStwLHddKSk7dGhpcy5vdXRsaW5lW2FdKHtkOkh9KX07Yi5wcm90b3R5cGUuZHJhd01hc2tzPWZ1bmN0aW9uKGYseSxiLGEpe3ZhciBkPXRoaXMubGVmdCxnPXRoaXMudG9wLHA9dGhpcy5oZWlnaHQ7aWYoYil7dmFyIEg9W2QsZCxkXTt2YXIgcj1bZyxnK2YsZyt5XTt2YXIgRj1bcCxwLHBdO3ZhciBrPVtmLHktZix0aGlzLnNpemUteV19ZWxzZSBIPVtkLGQrZixkK3ldLHI9W2csZyxnXSxGPVtmLHktZix0aGlzLnNpemUteV0saz1bcCxwLHBdO3RoaXMuc2hhZGVzLmZvckVhY2goZnVuY3Rpb24oZix5KXtmW2FdKHt4OkhbeV0sCnk6clt5XSx3aWR0aDpGW3ldLGhlaWdodDprW3ldfSl9KX07Yi5wcm90b3R5cGUucmVuZGVyRWxlbWVudHM9ZnVuY3Rpb24oKXt2YXIgZj10aGlzLHk9Zi5uYXZpZ2F0b3JPcHRpb25zLGI9eS5tYXNrSW5zaWRlLGQ9Zi5jaGFydCxhPWQucmVuZGVyZXIsZyxwPXtjdXJzb3I6ZC5pbnZlcnRlZD8ibnMtcmVzaXplIjoiZXctcmVzaXplIn07Zi5uYXZpZ2F0b3JHcm91cD1nPWEuZygibmF2aWdhdG9yIikuYXR0cih7ekluZGV4OjgsdmlzaWJpbGl0eToiaGlkZGVuIn0pLmFkZCgpO1shYixiLCFiXS5mb3JFYWNoKGZ1bmN0aW9uKGIsSCl7Zi5zaGFkZXNbSF09YS5yZWN0KCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtbmF2aWdhdG9yLW1hc2siKygxPT09SD8iLWluc2lkZSI6Ii1vdXRzaWRlIikpLmFkZChnKTtkLnN0eWxlZE1vZGV8fGYuc2hhZGVzW0hdLmF0dHIoe2ZpbGw6Yj95Lm1hc2tGaWxsOiJyZ2JhKDAsMCwwLDApIn0pLmNzcygxPT09SCYmcCl9KTtmLm91dGxpbmU9YS5wYXRoKCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtbmF2aWdhdG9yLW91dGxpbmUiKS5hZGQoZyk7CmQuc3R5bGVkTW9kZXx8Zi5vdXRsaW5lLmF0dHIoeyJzdHJva2Utd2lkdGgiOnkub3V0bGluZVdpZHRoLHN0cm9rZTp5Lm91dGxpbmVDb2xvcn0pO3kuaGFuZGxlcy5lbmFibGVkJiZbMCwxXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3kuaGFuZGxlcy5pbnZlcnRlZD1kLmludmVydGVkO2YuaGFuZGxlc1tiXT1hLnN5bWJvbCh5LmhhbmRsZXMuc3ltYm9sc1tiXSwteS5oYW5kbGVzLndpZHRoLzItMSwwLHkuaGFuZGxlcy53aWR0aCx5LmhhbmRsZXMuaGVpZ2h0LHkuaGFuZGxlcyk7Zi5oYW5kbGVzW2JdLmF0dHIoe3pJbmRleDo3LWJ9KS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1uYXZpZ2F0b3ItaGFuZGxlIGhpZ2hjaGFydHMtbmF2aWdhdG9yLWhhbmRsZS0iK1sibGVmdCIsInJpZ2h0Il1bYl0pLmFkZChnKTtpZighZC5zdHlsZWRNb2RlKXt2YXIgSD15LmhhbmRsZXM7Zi5oYW5kbGVzW2JdLmF0dHIoe2ZpbGw6SC5iYWNrZ3JvdW5kQ29sb3Isc3Ryb2tlOkguYm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6SC5saW5lV2lkdGh9KS5jc3MocCl9fSl9OwpiLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZil7KHRoaXMuc2VyaWVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXtmLmJhc2VTZXJpZXMmJmRlbGV0ZSBmLmJhc2VTZXJpZXMubmF2aWdhdG9yU2VyaWVzfSk7dGhpcy5kZXN0cm95KCk7SSghMCx0aGlzLmNoYXJ0Lm9wdGlvbnMubmF2aWdhdG9yLHRoaXMub3B0aW9ucyxmKTt0aGlzLmluaXQodGhpcy5jaGFydCl9O2IucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihmLHksYixkKXt2YXIgYT10aGlzLmNoYXJ0LHA9dGhpcy5zY3JvbGxiYXJIZWlnaHQsSCxyPXRoaXMueEF4aXMsaz1yLnBvaW50UmFuZ2V8fDA7dmFyIEY9ci5uYXZpZ2F0b3JBeGlzLmZha2U/YS54QXhpc1swXTpyO3ZhciB3PXRoaXMubmF2aWdhdG9yRW5hYmxlZCxoLGM9dGhpcy5yZW5kZXJlZDt2YXIgbT1hLmludmVydGVkO3ZhciBuPWEueEF4aXNbMF0ubWluUmFuZ2UsZT1hLnhBeGlzWzBdLm9wdGlvbnMubWF4UmFuZ2U7aWYoIXRoaXMuaGFzRHJhZ2dlZHx8QyhiKSl7Zj0KRyhmLWsvMik7eT1HKHkray8yKTtpZighZyhmKXx8IWcoeSkpaWYoYyliPTAsZD1EKHIud2lkdGgsRi53aWR0aCk7ZWxzZSByZXR1cm47dGhpcy5sZWZ0PUQoci5sZWZ0LGEucGxvdExlZnQrcCsobT9hLnBsb3RXaWR0aDowKSk7dGhpcy5zaXplPWg9SD1EKHIubGVuLChtP2EucGxvdEhlaWdodDphLnBsb3RXaWR0aCktMipwKTthPW0/cDpIKzIqcDtiPUQoYixyLnRvUGl4ZWxzKGYsITApKTtkPUQoZCxyLnRvUGl4ZWxzKHksITApKTtnKGIpJiZJbmZpbml0eSE9PU1hdGguYWJzKGIpfHwoYj0wLGQ9YSk7Zj1yLnRvVmFsdWUoYiwhMCk7eT1yLnRvVmFsdWUoZCwhMCk7dmFyIHo9TWF0aC5hYnMoRyh5LWYpKTt6PG4/dGhpcy5ncmFiYmVkTGVmdD9iPXIudG9QaXhlbHMoeS1uLWssITApOnRoaXMuZ3JhYmJlZFJpZ2h0JiYoZD1yLnRvUGl4ZWxzKGYrbitrLCEwKSk6QyhlKSYmRyh6LWspPmUmJih0aGlzLmdyYWJiZWRMZWZ0P2I9ci50b1BpeGVscyh5LWUtaywhMCk6dGhpcy5ncmFiYmVkUmlnaHQmJgooZD1yLnRvUGl4ZWxzKGYrZStrLCEwKSkpO3RoaXMuem9vbWVkTWF4PUooTWF0aC5tYXgoYixkKSwwLGgpO3RoaXMuem9vbWVkTWluPUoodGhpcy5maXhlZFdpZHRoP3RoaXMuem9vbWVkTWF4LXRoaXMuZml4ZWRXaWR0aDpNYXRoLm1pbihiLGQpLDAsaCk7dGhpcy5yYW5nZT10aGlzLnpvb21lZE1heC10aGlzLnpvb21lZE1pbjtoPU1hdGgucm91bmQodGhpcy56b29tZWRNYXgpO2I9TWF0aC5yb3VuZCh0aGlzLnpvb21lZE1pbik7dyYmKHRoaXMubmF2aWdhdG9yR3JvdXAuYXR0cih7dmlzaWJpbGl0eToidmlzaWJsZSJ9KSxjPWMmJiF0aGlzLmhhc0RyYWdnZWQ/ImFuaW1hdGUiOiJhdHRyIix0aGlzLmRyYXdNYXNrcyhiLGgsbSxjKSx0aGlzLmRyYXdPdXRsaW5lKGIsaCxtLGMpLHRoaXMubmF2aWdhdG9yT3B0aW9ucy5oYW5kbGVzLmVuYWJsZWQmJih0aGlzLmRyYXdIYW5kbGUoYiwwLG0sYyksdGhpcy5kcmF3SGFuZGxlKGgsMSxtLGMpKSk7dGhpcy5zY3JvbGxiYXImJihtPyhtPXRoaXMudG9wLQpwLEY9dGhpcy5sZWZ0LXArKHd8fCFGLm9wcG9zaXRlPzA6KEYudGl0bGVPZmZzZXR8fDApK0YuYXhpc1RpdGxlTWFyZ2luKSxwPUgrMipwKToobT10aGlzLnRvcCsodz90aGlzLmhlaWdodDotcCksRj10aGlzLmxlZnQtcCksdGhpcy5zY3JvbGxiYXIucG9zaXRpb24oRixtLGEscCksdGhpcy5zY3JvbGxiYXIuc2V0UmFuZ2UodGhpcy56b29tZWRNaW4vKEh8fDEpLHRoaXMuem9vbWVkTWF4LyhIfHwxKSkpO3RoaXMucmVuZGVyZWQ9ITB9fTtiLnByb3RvdHlwZS5hZGRNb3VzZUV2ZW50cz1mdW5jdGlvbigpe3ZhciBmPXRoaXMsYj1mLmNoYXJ0LGE9Yi5jb250YWluZXIscD1bXSxnLHI7Zi5tb3VzZU1vdmVIYW5kbGVyPWc9ZnVuY3Rpb24oYil7Zi5vbk1vdXNlTW92ZShiKX07Zi5tb3VzZVVwSGFuZGxlcj1yPWZ1bmN0aW9uKGIpe2Yub25Nb3VzZVVwKGIpfTtwPWYuZ2V0UGFydHNFdmVudHMoIm1vdXNlZG93biIpO3AucHVzaCh2KGIucmVuZGVyVG8sIm1vdXNlbW92ZSIsZyksdihhLm93bmVyRG9jdW1lbnQsCiJtb3VzZXVwIixyKSk7ZCYmKHAucHVzaCh2KGIucmVuZGVyVG8sInRvdWNobW92ZSIsZyksdihhLm93bmVyRG9jdW1lbnQsInRvdWNoZW5kIixyKSkscC5jb25jYXQoZi5nZXRQYXJ0c0V2ZW50cygidG91Y2hzdGFydCIpKSk7Zi5ldmVudHNUb1VuYmluZD1wO2Yuc2VyaWVzJiZmLnNlcmllc1swXSYmcC5wdXNoKHYoZi5zZXJpZXNbMF0ueEF4aXMsImZvdW5kRXh0cmVtZXMiLGZ1bmN0aW9uKCl7Yi5uYXZpZ2F0b3IubW9kaWZ5TmF2aWdhdG9yQXhpc0V4dHJlbWVzKCl9KSl9O2IucHJvdG90eXBlLmdldFBhcnRzRXZlbnRzPWZ1bmN0aW9uKGYpe3ZhciBiPXRoaXMsYT1bXTtbInNoYWRlcyIsImhhbmRsZXMiXS5mb3JFYWNoKGZ1bmN0aW9uKHkpe2JbeV0uZm9yRWFjaChmdW5jdGlvbihkLHApe2EucHVzaCh2KGQuZWxlbWVudCxmLGZ1bmN0aW9uKGYpe2JbeSsiTW91c2Vkb3duIl0oZixwKX0pKX0pfSk7cmV0dXJuIGF9O2IucHJvdG90eXBlLnNoYWRlc01vdXNlZG93bj1mdW5jdGlvbihmLApiKXtmPXRoaXMuY2hhcnQucG9pbnRlci5ub3JtYWxpemUoZik7dmFyIHk9dGhpcy5jaGFydCxhPXRoaXMueEF4aXMsZD10aGlzLnpvb21lZE1pbixwPXRoaXMubGVmdCxnPXRoaXMuc2l6ZSxyPXRoaXMucmFuZ2Usaz1mLmNoYXJ0WDt5LmludmVydGVkJiYoaz1mLmNoYXJ0WSxwPXRoaXMudG9wKTtpZigxPT09Yil0aGlzLmdyYWJiZWRDZW50ZXI9ayx0aGlzLmZpeGVkV2lkdGg9cix0aGlzLmRyYWdPZmZzZXQ9ay1kO2Vsc2V7Zj1rLXAtci8yO2lmKDA9PT1iKWY9TWF0aC5tYXgoMCxmKTtlbHNlIGlmKDI9PT1iJiZmK3I+PWcpaWYoZj1nLXIsdGhpcy5yZXZlcnNlZEV4dHJlbWVzKXtmLT1yO3ZhciB3PXRoaXMuZ2V0VW5pb25FeHRyZW1lcygpLmRhdGFNaW59ZWxzZSB2YXIgaD10aGlzLmdldFVuaW9uRXh0cmVtZXMoKS5kYXRhTWF4O2YhPT1kJiYodGhpcy5maXhlZFdpZHRoPXIsYj1hLm5hdmlnYXRvckF4aXMudG9GaXhlZFJhbmdlKGYsZityLHcsaCksQyhiLm1pbikmJnkueEF4aXNbMF0uc2V0RXh0cmVtZXMoTWF0aC5taW4oYi5taW4sCmIubWF4KSxNYXRoLm1heChiLm1pbixiLm1heCksITAsbnVsbCx7dHJpZ2dlcjoibmF2aWdhdG9yIn0pKX19O2IucHJvdG90eXBlLmhhbmRsZXNNb3VzZWRvd249ZnVuY3Rpb24oZixiKXt0aGlzLmNoYXJ0LnBvaW50ZXIubm9ybWFsaXplKGYpO2Y9dGhpcy5jaGFydDt2YXIgeT1mLnhBeGlzWzBdLGE9dGhpcy5yZXZlcnNlZEV4dHJlbWVzOzA9PT1iPyh0aGlzLmdyYWJiZWRMZWZ0PSEwLHRoaXMub3RoZXJIYW5kbGVQb3M9dGhpcy56b29tZWRNYXgsdGhpcy5maXhlZEV4dHJlbWU9YT95Lm1pbjp5Lm1heCk6KHRoaXMuZ3JhYmJlZFJpZ2h0PSEwLHRoaXMub3RoZXJIYW5kbGVQb3M9dGhpcy56b29tZWRNaW4sdGhpcy5maXhlZEV4dHJlbWU9YT95Lm1heDp5Lm1pbik7Zi5maXhlZFJhbmdlPW51bGx9O2IucHJvdG90eXBlLm9uTW91c2VNb3ZlPWZ1bmN0aW9uKGYpe3ZhciBiPXRoaXMsYT1iLmNoYXJ0LGQ9Yi5sZWZ0LGc9Yi5uYXZpZ2F0b3JTaXplLHI9Yi5yYW5nZSxrPWIuZHJhZ09mZnNldCwKdz1hLmludmVydGVkO2YudG91Y2hlcyYmMD09PWYudG91Y2hlc1swXS5wYWdlWHx8KGY9YS5wb2ludGVyLm5vcm1hbGl6ZShmKSxhPWYuY2hhcnRYLHcmJihkPWIudG9wLGE9Zi5jaGFydFkpLGIuZ3JhYmJlZExlZnQ/KGIuaGFzRHJhZ2dlZD0hMCxiLnJlbmRlcigwLDAsYS1kLGIub3RoZXJIYW5kbGVQb3MpKTpiLmdyYWJiZWRSaWdodD8oYi5oYXNEcmFnZ2VkPSEwLGIucmVuZGVyKDAsMCxiLm90aGVySGFuZGxlUG9zLGEtZCkpOmIuZ3JhYmJlZENlbnRlciYmKGIuaGFzRHJhZ2dlZD0hMCxhPGs/YT1rOmE+ZytrLXImJihhPWcray1yKSxiLnJlbmRlcigwLDAsYS1rLGEtaytyKSksYi5oYXNEcmFnZ2VkJiZiLnNjcm9sbGJhciYmRChiLnNjcm9sbGJhci5vcHRpb25zLmxpdmVSZWRyYXcsdC5zdmcmJiFwJiYhdGhpcy5jaGFydC5pc0Jvb3N0aW5nKSYmKGYuRE9NVHlwZT1mLnR5cGUsc2V0VGltZW91dChmdW5jdGlvbigpe2Iub25Nb3VzZVVwKGYpfSwwKSkpfTtiLnByb3RvdHlwZS5vbk1vdXNlVXA9CmZ1bmN0aW9uKGYpe3ZhciBiPXRoaXMuY2hhcnQsYT10aGlzLnhBeGlzLGQ9dGhpcy5zY3JvbGxiYXIscD1mLkRPTUV2ZW50fHxmLGc9Yi5pbnZlcnRlZCxyPXRoaXMucmVuZGVyZWQmJiF0aGlzLmhhc0RyYWdnZWQ/ImFuaW1hdGUiOiJhdHRyIixrPU1hdGgucm91bmQodGhpcy56b29tZWRNYXgpLHc9TWF0aC5yb3VuZCh0aGlzLnpvb21lZE1pbik7aWYodGhpcy5oYXNEcmFnZ2VkJiYoIWR8fCFkLmhhc0RyYWdnZWQpfHwic2Nyb2xsYmFyIj09PWYudHJpZ2dlcil7ZD10aGlzLmdldFVuaW9uRXh0cmVtZXMoKTtpZih0aGlzLnpvb21lZE1pbj09PXRoaXMub3RoZXJIYW5kbGVQb3MpdmFyIGg9dGhpcy5maXhlZEV4dHJlbWU7ZWxzZSBpZih0aGlzLnpvb21lZE1heD09PXRoaXMub3RoZXJIYW5kbGVQb3MpdmFyIGM9dGhpcy5maXhlZEV4dHJlbWU7dGhpcy56b29tZWRNYXg9PT10aGlzLnNpemUmJihjPXRoaXMucmV2ZXJzZWRFeHRyZW1lcz9kLmRhdGFNaW46ZC5kYXRhTWF4KTswPT09dGhpcy56b29tZWRNaW4mJgooaD10aGlzLnJldmVyc2VkRXh0cmVtZXM/ZC5kYXRhTWF4OmQuZGF0YU1pbik7YT1hLm5hdmlnYXRvckF4aXMudG9GaXhlZFJhbmdlKHRoaXMuem9vbWVkTWluLHRoaXMuem9vbWVkTWF4LGgsYyk7QyhhLm1pbikmJmIueEF4aXNbMF0uc2V0RXh0cmVtZXMoTWF0aC5taW4oYS5taW4sYS5tYXgpLE1hdGgubWF4KGEubWluLGEubWF4KSwhMCx0aGlzLmhhc0RyYWdnZWQ/ITE6bnVsbCx7dHJpZ2dlcjoibmF2aWdhdG9yIix0cmlnZ2VyT3A6Im5hdmlnYXRvci1kcmFnIixET01FdmVudDpwfSl9Im1vdXNlbW92ZSIhPT1mLkRPTVR5cGUmJiJ0b3VjaG1vdmUiIT09Zi5ET01UeXBlJiYodGhpcy5ncmFiYmVkTGVmdD10aGlzLmdyYWJiZWRSaWdodD10aGlzLmdyYWJiZWRDZW50ZXI9dGhpcy5maXhlZFdpZHRoPXRoaXMuZml4ZWRFeHRyZW1lPXRoaXMub3RoZXJIYW5kbGVQb3M9dGhpcy5oYXNEcmFnZ2VkPXRoaXMuZHJhZ09mZnNldD1udWxsKTt0aGlzLm5hdmlnYXRvckVuYWJsZWQmJih0aGlzLnNoYWRlcyYmCnRoaXMuZHJhd01hc2tzKHcsayxnLHIpLHRoaXMub3V0bGluZSYmdGhpcy5kcmF3T3V0bGluZSh3LGssZyxyKSx0aGlzLm5hdmlnYXRvck9wdGlvbnMuaGFuZGxlcy5lbmFibGVkJiZPYmplY3Qua2V5cyh0aGlzLmhhbmRsZXMpLmxlbmd0aD09PXRoaXMuaGFuZGxlcy5sZW5ndGgmJih0aGlzLmRyYXdIYW5kbGUodywwLGcsciksdGhpcy5kcmF3SGFuZGxlKGssMSxnLHIpKSl9O2IucHJvdG90eXBlLnJlbW92ZUV2ZW50cz1mdW5jdGlvbigpe3RoaXMuZXZlbnRzVG9VbmJpbmQmJih0aGlzLmV2ZW50c1RvVW5iaW5kLmZvckVhY2goZnVuY3Rpb24oZil7ZigpfSksdGhpcy5ldmVudHNUb1VuYmluZD12b2lkIDApO3RoaXMucmVtb3ZlQmFzZVNlcmllc0V2ZW50cygpfTtiLnByb3RvdHlwZS5yZW1vdmVCYXNlU2VyaWVzRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcy5iYXNlU2VyaWVzfHxbXTt0aGlzLm5hdmlnYXRvckVuYWJsZWQmJmZbMF0mJighMSE9PXRoaXMubmF2aWdhdG9yT3B0aW9ucy5hZGFwdFRvVXBkYXRlZERhdGEmJgpmLmZvckVhY2goZnVuY3Rpb24oZil7bShmLCJ1cGRhdGVkRGF0YSIsdGhpcy51cGRhdGVkRGF0YUhhbmRsZXIpfSx0aGlzKSxmWzBdLnhBeGlzJiZtKGZbMF0ueEF4aXMsImZvdW5kRXh0cmVtZXMiLHRoaXMubW9kaWZ5QmFzZUF4aXNFeHRyZW1lcykpfTtiLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGYpe3ZhciBiPWYub3B0aW9ucyxhPWIubmF2aWdhdG9yLGQ9YS5lbmFibGVkLHA9Yi5zY3JvbGxiYXIsZz1wLmVuYWJsZWQ7Yj1kP2EuaGVpZ2h0OjA7dmFyIGs9Zz9wLmhlaWdodDowO3RoaXMuaGFuZGxlcz1bXTt0aGlzLnNoYWRlcz1bXTt0aGlzLmNoYXJ0PWY7dGhpcy5zZXRCYXNlU2VyaWVzKCk7dGhpcy5oZWlnaHQ9Yjt0aGlzLnNjcm9sbGJhckhlaWdodD1rO3RoaXMuc2Nyb2xsYmFyRW5hYmxlZD1nO3RoaXMubmF2aWdhdG9yRW5hYmxlZD1kO3RoaXMubmF2aWdhdG9yT3B0aW9ucz1hO3RoaXMuc2Nyb2xsYmFyT3B0aW9ucz1wO3RoaXMub3V0bGluZUhlaWdodD1iK2s7dGhpcy5vcHBvc2l0ZT0KRChhLm9wcG9zaXRlLCEoZHx8IWYuaW52ZXJ0ZWQpKTt2YXIgdz10aGlzO2Q9dy5iYXNlU2VyaWVzO3A9Zi54QXhpcy5sZW5ndGg7Zz1mLnlBeGlzLmxlbmd0aDt2YXIgaD1kJiZkWzBdJiZkWzBdLnhBeGlzfHxmLnhBeGlzWzBdfHx7b3B0aW9uczp7fX07Zi5pc0RpcnR5Qm94PSEwO3cubmF2aWdhdG9yRW5hYmxlZD8ody54QXhpcz1uZXcgbChmLEkoe2JyZWFrczpoLm9wdGlvbnMuYnJlYWtzLG9yZGluYWw6aC5vcHRpb25zLm9yZGluYWx9LGEueEF4aXMse2lkOiJuYXZpZ2F0b3IteC1heGlzIix5QXhpczoibmF2aWdhdG9yLXktYXhpcyIsaXNYOiEwLHR5cGU6ImRhdGV0aW1lIixpbmRleDpwLGlzSW50ZXJuYWw6ITAsb2Zmc2V0OjAsa2VlcE9yZGluYWxQYWRkaW5nOiEwLHN0YXJ0T25UaWNrOiExLGVuZE9uVGljazohMSxtaW5QYWRkaW5nOjAsbWF4UGFkZGluZzowLHpvb21FbmFibGVkOiExfSxmLmludmVydGVkP3tvZmZzZXRzOltrLDAsLWssMF0sd2lkdGg6Yn06e29mZnNldHM6WzAsCi1rLDAsa10saGVpZ2h0OmJ9KSksdy55QXhpcz1uZXcgbChmLEkoYS55QXhpcyx7aWQ6Im5hdmlnYXRvci15LWF4aXMiLGFsaWduVGlja3M6ITEsb2Zmc2V0OjAsaW5kZXg6Zyxpc0ludGVybmFsOiEwLHpvb21FbmFibGVkOiExfSxmLmludmVydGVkP3t3aWR0aDpifTp7aGVpZ2h0OmJ9KSksZHx8YS5zZXJpZXMuZGF0YT93LnVwZGF0ZU5hdmlnYXRvclNlcmllcyghMSk6MD09PWYuc2VyaWVzLmxlbmd0aCYmKHcudW5iaW5kUmVkcmF3PXYoZiwiYmVmb3JlUmVkcmF3IixmdW5jdGlvbigpezA8Zi5zZXJpZXMubGVuZ3RoJiYhdy5zZXJpZXMmJih3LnNldEJhc2VTZXJpZXMoKSx3LnVuYmluZFJlZHJhdygpKX0pKSx3LnJldmVyc2VkRXh0cmVtZXM9Zi5pbnZlcnRlZCYmIXcueEF4aXMucmV2ZXJzZWR8fCFmLmludmVydGVkJiZ3LnhBeGlzLnJldmVyc2VkLHcucmVuZGVyRWxlbWVudHMoKSx3LmFkZE1vdXNlRXZlbnRzKCkpOih3LnhBeGlzPXtjaGFydDpmLG5hdmlnYXRvckF4aXM6e2Zha2U6ITB9LAp0cmFuc2xhdGU6ZnVuY3Rpb24oYixhKXt2YXIgeT1mLnhBeGlzWzBdLGQ9eS5nZXRFeHRyZW1lcygpLHA9eS5sZW4tMiprLGc9cigibWluIix5Lm9wdGlvbnMubWluLGQuZGF0YU1pbik7eT1yKCJtYXgiLHkub3B0aW9ucy5tYXgsZC5kYXRhTWF4KS1nO3JldHVybiBhP2IqeS9wK2c6cCooYi1nKS95fSx0b1BpeGVsczpmdW5jdGlvbihmKXtyZXR1cm4gdGhpcy50cmFuc2xhdGUoZil9LHRvVmFsdWU6ZnVuY3Rpb24oZil7cmV0dXJuIHRoaXMudHJhbnNsYXRlKGYsITApfX0sdy54QXhpcy5uYXZpZ2F0b3JBeGlzLmF4aXM9dy54QXhpcyx3LnhBeGlzLm5hdmlnYXRvckF4aXMudG9GaXhlZFJhbmdlPUUuQWRkaXRpb25zQ2xhc3MucHJvdG90eXBlLnRvRml4ZWRSYW5nZS5iaW5kKHcueEF4aXMubmF2aWdhdG9yQXhpcykpO2Yub3B0aW9ucy5zY3JvbGxiYXIuZW5hYmxlZCYmKGYuc2Nyb2xsYmFyPXcuc2Nyb2xsYmFyPW5ldyB4KGYucmVuZGVyZXIsSShmLm9wdGlvbnMuc2Nyb2xsYmFyLHttYXJnaW46dy5uYXZpZ2F0b3JFbmFibGVkPwowOjEwLHZlcnRpY2FsOmYuaW52ZXJ0ZWR9KSxmKSx2KHcuc2Nyb2xsYmFyLCJjaGFuZ2VkIixmdW5jdGlvbihiKXt2YXIgYT13LnNpemUseT1hKnRoaXMudG87YSo9dGhpcy5mcm9tO3cuaGFzRHJhZ2dlZD13LnNjcm9sbGJhci5oYXNEcmFnZ2VkO3cucmVuZGVyKDAsMCxhLHkpOyhmLm9wdGlvbnMuc2Nyb2xsYmFyLmxpdmVSZWRyYXd8fCJtb3VzZW1vdmUiIT09Yi5ET01UeXBlJiYidG91Y2htb3ZlIiE9PWIuRE9NVHlwZSkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXt3Lm9uTW91c2VVcChiKX0pfSkpO3cuYWRkQmFzZVNlcmllc0V2ZW50cygpO3cuYWRkQ2hhcnRFdmVudHMoKX07Yi5wcm90b3R5cGUuZ2V0VW5pb25FeHRyZW1lcz1mdW5jdGlvbihmKXt2YXIgYj10aGlzLmNoYXJ0LnhBeGlzWzBdLGE9dGhpcy54QXhpcyxkPWEub3B0aW9ucyxwPWIub3B0aW9ucyxnO2YmJm51bGw9PT1iLmRhdGFNaW58fChnPXtkYXRhTWluOkQoZCYmZC5taW4scigibWluIixwLm1pbixiLmRhdGFNaW4sCmEuZGF0YU1pbixhLm1pbikpLGRhdGFNYXg6RChkJiZkLm1heCxyKCJtYXgiLHAubWF4LGIuZGF0YU1heCxhLmRhdGFNYXgsYS5tYXgpKX0pO3JldHVybiBnfTtiLnByb3RvdHlwZS5zZXRCYXNlU2VyaWVzPWZ1bmN0aW9uKGYsYil7dmFyIGQ9dGhpcy5jaGFydCx5PXRoaXMuYmFzZVNlcmllcz1bXTtmPWZ8fGQub3B0aW9ucyYmZC5vcHRpb25zLm5hdmlnYXRvci5iYXNlU2VyaWVzfHwoZC5zZXJpZXMubGVuZ3RoP2EoZC5zZXJpZXMsZnVuY3Rpb24oZil7cmV0dXJuIWYub3B0aW9ucy5pc0ludGVybmFsfSkuaW5kZXg6MCk7KGQuc2VyaWVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihiLGEpe2Iub3B0aW9ucy5pc0ludGVybmFsfHwhYi5vcHRpb25zLnNob3dJbk5hdmlnYXRvciYmKGEhPT1mJiZiLm9wdGlvbnMuaWQhPT1mfHwhMT09PWIub3B0aW9ucy5zaG93SW5OYXZpZ2F0b3IpfHx5LnB1c2goYil9KTt0aGlzLnhBeGlzJiYhdGhpcy54QXhpcy5uYXZpZ2F0b3JBeGlzLmZha2UmJnRoaXMudXBkYXRlTmF2aWdhdG9yU2VyaWVzKCEwLApiKX07Yi5wcm90b3R5cGUudXBkYXRlTmF2aWdhdG9yU2VyaWVzPWZ1bmN0aW9uKGIsYSl7dmFyIGY9dGhpcyxkPWYuY2hhcnQseT1mLmJhc2VTZXJpZXMscCxnLHI9Zi5uYXZpZ2F0b3JPcHRpb25zLnNlcmllcyx3LGU9e2VuYWJsZU1vdXNlVHJhY2tpbmc6ITEsaW5kZXg6bnVsbCxsaW5rZWRUbzpudWxsLGdyb3VwOiJuYXYiLHBhZFhBeGlzOiExLHhBeGlzOiJuYXZpZ2F0b3IteC1heGlzIix5QXhpczoibmF2aWdhdG9yLXktYXhpcyIsc2hvd0luTGVnZW5kOiExLHN0YWNraW5nOnZvaWQgMCxpc0ludGVybmFsOiEwLHN0YXRlczp7aW5hY3RpdmU6e29wYWNpdHk6MX19fSx6PWYuc2VyaWVzPShmLnNlcmllc3x8W10pLmZpbHRlcihmdW5jdGlvbihiKXt2YXIgYT1iLmJhc2VTZXJpZXM7cmV0dXJuIDA+eS5pbmRleE9mKGEpPyhhJiYobShhLCJ1cGRhdGVkRGF0YSIsZi51cGRhdGVkRGF0YUhhbmRsZXIpLGRlbGV0ZSBhLm5hdmlnYXRvclNlcmllcyksYi5jaGFydCYmYi5kZXN0cm95KCksCiExKTohMH0pO3kmJnkubGVuZ3RoJiZ5LmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGs9Yi5uYXZpZ2F0b3JTZXJpZXMsbT1uKHtjb2xvcjpiLmNvbG9yLHZpc2libGU6Yi52aXNpYmxlfSxoKHIpP2MubmF2aWdhdG9yLnNlcmllczpyKTtrJiYhMT09PWYubmF2aWdhdG9yT3B0aW9ucy5hZGFwdFRvVXBkYXRlZERhdGF8fChlLm5hbWU9Ik5hdmlnYXRvciAiK3kubGVuZ3RoLHA9Yi5vcHRpb25zfHx7fSx3PXAubmF2aWdhdG9yT3B0aW9uc3x8e30sZz1JKHAsZSxtLHcpLGcucG9pbnRSYW5nZT1EKG0ucG9pbnRSYW5nZSx3LnBvaW50UmFuZ2UsYy5wbG90T3B0aW9uc1tnLnR5cGV8fCJsaW5lIl0ucG9pbnRSYW5nZSksbT13LmRhdGF8fG0uZGF0YSxmLmhhc05hdmlnYXRvckRhdGE9Zi5oYXNOYXZpZ2F0b3JEYXRhfHwhIW0sZy5kYXRhPW18fHAuZGF0YSYmcC5kYXRhLnNsaWNlKDApLGsmJmsub3B0aW9ucz9rLnVwZGF0ZShnLGEpOihiLm5hdmlnYXRvclNlcmllcz1kLmluaXRTZXJpZXMoZyksCmIubmF2aWdhdG9yU2VyaWVzLmJhc2VTZXJpZXM9Yix6LnB1c2goYi5uYXZpZ2F0b3JTZXJpZXMpKSl9KTtpZihyLmRhdGEmJigheXx8IXkubGVuZ3RoKXx8aChyKSlmLmhhc05hdmlnYXRvckRhdGE9ITEscj1rKHIpLHIuZm9yRWFjaChmdW5jdGlvbihiLGEpe2UubmFtZT0iTmF2aWdhdG9yICIrKHoubGVuZ3RoKzEpO2c9SShjLm5hdmlnYXRvci5zZXJpZXMse2NvbG9yOmQuc2VyaWVzW2FdJiYhZC5zZXJpZXNbYV0ub3B0aW9ucy5pc0ludGVybmFsJiZkLnNlcmllc1thXS5jb2xvcnx8ZC5vcHRpb25zLmNvbG9yc1thXXx8ZC5vcHRpb25zLmNvbG9yc1swXX0sZSxiKTtnLmRhdGE9Yi5kYXRhO2cuZGF0YSYmKGYuaGFzTmF2aWdhdG9yRGF0YT0hMCx6LnB1c2goZC5pbml0U2VyaWVzKGcpKSl9KTtiJiZ0aGlzLmFkZEJhc2VTZXJpZXNFdmVudHMoKX07Yi5wcm90b3R5cGUuYWRkQmFzZVNlcmllc0V2ZW50cz1mdW5jdGlvbigpe3ZhciBiPXRoaXMsYT1iLmJhc2VTZXJpZXN8fFtdO2FbMF0mJgphWzBdLnhBeGlzJiZ2KGFbMF0ueEF4aXMsImZvdW5kRXh0cmVtZXMiLHRoaXMubW9kaWZ5QmFzZUF4aXNFeHRyZW1lcyk7YS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3YoZiwic2hvdyIsZnVuY3Rpb24oKXt0aGlzLm5hdmlnYXRvclNlcmllcyYmdGhpcy5uYXZpZ2F0b3JTZXJpZXMuc2V0VmlzaWJsZSghMCwhMSl9KTt2KGYsImhpZGUiLGZ1bmN0aW9uKCl7dGhpcy5uYXZpZ2F0b3JTZXJpZXMmJnRoaXMubmF2aWdhdG9yU2VyaWVzLnNldFZpc2libGUoITEsITEpfSk7ITEhPT10aGlzLm5hdmlnYXRvck9wdGlvbnMuYWRhcHRUb1VwZGF0ZWREYXRhJiZmLnhBeGlzJiZ2KGYsInVwZGF0ZWREYXRhIix0aGlzLnVwZGF0ZWREYXRhSGFuZGxlcik7dihmLCJyZW1vdmUiLGZ1bmN0aW9uKCl7dGhpcy5uYXZpZ2F0b3JTZXJpZXMmJihBKGIuc2VyaWVzLHRoaXMubmF2aWdhdG9yU2VyaWVzKSxDKHRoaXMubmF2aWdhdG9yU2VyaWVzLm9wdGlvbnMpJiZ0aGlzLm5hdmlnYXRvclNlcmllcy5yZW1vdmUoITEpLApkZWxldGUgdGhpcy5uYXZpZ2F0b3JTZXJpZXMpfSl9LHRoaXMpfTtiLnByb3RvdHlwZS5nZXRCYXNlU2VyaWVzTWluPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmJhc2VTZXJpZXMucmVkdWNlKGZ1bmN0aW9uKGIsZil7cmV0dXJuIE1hdGgubWluKGIsZi54RGF0YT9mLnhEYXRhWzBdOmIpfSxiKX07Yi5wcm90b3R5cGUubW9kaWZ5TmF2aWdhdG9yQXhpc0V4dHJlbWVzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy54QXhpcyxhOyJ1bmRlZmluZWQiIT09dHlwZW9mIGIuZ2V0RXh0cmVtZXMmJighKGE9dGhpcy5nZXRVbmlvbkV4dHJlbWVzKCEwKSl8fGEuZGF0YU1pbj09PWIubWluJiZhLmRhdGFNYXg9PT1iLm1heHx8KGIubWluPWEuZGF0YU1pbixiLm1heD1hLmRhdGFNYXgpKX07Yi5wcm90b3R5cGUubW9kaWZ5QmFzZUF4aXNFeHRyZW1lcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQubmF2aWdhdG9yLGE9dGhpcy5nZXRFeHRyZW1lcygpLGQ9YS5kYXRhTWluLHA9YS5kYXRhTWF4O2E9CmEubWF4LWEubWluO3ZhciByPWIuc3RpY2tUb01pbix3PWIuc3RpY2tUb01heCxrPUQodGhpcy5vcHRpb25zLm92ZXJzY3JvbGwsMCksaD1iLnNlcmllcyYmYi5zZXJpZXNbMF0sYz0hIXRoaXMuc2V0RXh0cmVtZXM7aWYoIXRoaXMuZXZlbnRBcmdzfHwicmFuZ2VTZWxlY3RvckJ1dHRvbiIhPT10aGlzLmV2ZW50QXJncy50cmlnZ2VyKXtpZihyKXt2YXIgbT1kO3ZhciBuPW0rYX13JiYobj1wK2sscnx8KG09TWF0aC5tYXgoZCxuLWEsYi5nZXRCYXNlU2VyaWVzTWluKGgmJmgueERhdGE/aC54RGF0YVswXTotTnVtYmVyLk1BWF9WQUxVRSkpKSk7YyYmKHJ8fHcpJiZnKG0pJiYodGhpcy5taW49dGhpcy51c2VyTWluPW0sdGhpcy5tYXg9dGhpcy51c2VyTWF4PW4pfWIuc3RpY2tUb01pbj1iLnN0aWNrVG9NYXg9bnVsbH07Yi5wcm90b3R5cGUudXBkYXRlZERhdGFIYW5kbGVyPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5jaGFydC5uYXZpZ2F0b3IsYT10aGlzLm5hdmlnYXRvclNlcmllcyxkPQpiLmdldEJhc2VTZXJpZXNNaW4odGhpcy54RGF0YVswXSk7Yi5zdGlja1RvTWF4PWIucmV2ZXJzZWRFeHRyZW1lcz8wPT09TWF0aC5yb3VuZChiLnpvb21lZE1pbik6TWF0aC5yb3VuZChiLnpvb21lZE1heCk+PU1hdGgucm91bmQoYi5zaXplKTtiLnN0aWNrVG9NaW49Zyh0aGlzLnhBeGlzLm1pbikmJnRoaXMueEF4aXMubWluPD1kJiYoIXRoaXMuY2hhcnQuZml4ZWRSYW5nZXx8IWIuc3RpY2tUb01heCk7YSYmIWIuaGFzTmF2aWdhdG9yRGF0YSYmKGEub3B0aW9ucy5wb2ludFN0YXJ0PXRoaXMueERhdGFbMF0sYS5zZXREYXRhKHRoaXMub3B0aW9ucy5kYXRhLCExLG51bGwsITEpKX07Yi5wcm90b3R5cGUuYWRkQ2hhcnRFdmVudHM9ZnVuY3Rpb24oKXt0aGlzLmV2ZW50c1RvVW5iaW5kfHwodGhpcy5ldmVudHNUb1VuYmluZD1bXSk7dGhpcy5ldmVudHNUb1VuYmluZC5wdXNoKHYodGhpcy5jaGFydCwicmVkcmF3IixmdW5jdGlvbigpe3ZhciBiPXRoaXMubmF2aWdhdG9yLGE9YiYmKGIuYmFzZVNlcmllcyYmCmIuYmFzZVNlcmllc1swXSYmYi5iYXNlU2VyaWVzWzBdLnhBeGlzfHx0aGlzLnhBeGlzWzBdKTthJiZiLnJlbmRlcihhLm1pbixhLm1heCl9KSx2KHRoaXMuY2hhcnQsImdldE1hcmdpbnMiLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5uYXZpZ2F0b3IsYT1iLm9wcG9zaXRlPyJwbG90VG9wIjoibWFyZ2luQm90dG9tIjt0aGlzLmludmVydGVkJiYoYT1iLm9wcG9zaXRlPyJtYXJnaW5SaWdodCI6InBsb3RMZWZ0Iik7dGhpc1thXT0odGhpc1thXXx8MCkrKGIubmF2aWdhdG9yRW5hYmxlZHx8IXRoaXMuaW52ZXJ0ZWQ/Yi5vdXRsaW5lSGVpZ2h0OjApK2IubmF2aWdhdG9yT3B0aW9ucy5tYXJnaW59KSl9O2IucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUV2ZW50cygpO3RoaXMueEF4aXMmJihBKHRoaXMuY2hhcnQueEF4aXMsdGhpcy54QXhpcyksQSh0aGlzLmNoYXJ0LmF4ZXMsdGhpcy54QXhpcykpO3RoaXMueUF4aXMmJihBKHRoaXMuY2hhcnQueUF4aXMsdGhpcy55QXhpcyksCkEodGhpcy5jaGFydC5heGVzLHRoaXMueUF4aXMpKTsodGhpcy5zZXJpZXN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuZGVzdHJveSYmYi5kZXN0cm95KCl9KTsic2VyaWVzIHhBeGlzIHlBeGlzIHNoYWRlcyBvdXRsaW5lIHNjcm9sbGJhclRyYWNrIHNjcm9sbGJhclJpZmxlcyBzY3JvbGxiYXJHcm91cCBzY3JvbGxiYXIgbmF2aWdhdG9yR3JvdXAgcmVuZGVyZWQiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihiKXt0aGlzW2JdJiZ0aGlzW2JdLmRlc3Ryb3kmJnRoaXNbYl0uZGVzdHJveSgpO3RoaXNbYl09bnVsbH0sdGhpcyk7W3RoaXMuaGFuZGxlc10uZm9yRWFjaChmdW5jdGlvbihiKXt6KGIpfSx0aGlzKX07cmV0dXJuIGJ9KCk7dC5OYXZpZ2F0b3J8fCh0Lk5hdmlnYXRvcj13LEUuY29tcG9zZShsKSx2KHUsImJlZm9yZVNob3dSZXNldFpvb20iLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zLGY9Yi5uYXZpZ2F0b3IsYT1iLnJhbmdlU2VsZWN0b3I7aWYoKGYmJgpmLmVuYWJsZWR8fGEmJmEuZW5hYmxlZCkmJighcCYmIngiPT09Yi5jaGFydC56b29tVHlwZXx8cCYmIngiPT09Yi5jaGFydC5waW5jaFR5cGUpKXJldHVybiExfSksdih1LCJiZWZvcmVSZW5kZXIiLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5vcHRpb25zO2lmKGIubmF2aWdhdG9yLmVuYWJsZWR8fGIuc2Nyb2xsYmFyLmVuYWJsZWQpdGhpcy5zY3JvbGxlcj10aGlzLm5hdmlnYXRvcj1uZXcgdyh0aGlzKX0pLHYodSwiYWZ0ZXJTZXRDaGFydFNpemUiLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5sZWdlbmQsZj10aGlzLm5hdmlnYXRvcjtpZihmKXt2YXIgYT1iJiZiLm9wdGlvbnM7dmFyIGQ9Zi54QXhpczt2YXIgcD1mLnlBeGlzO3ZhciBnPWYuc2Nyb2xsYmFySGVpZ2h0O3RoaXMuaW52ZXJ0ZWQ/KGYubGVmdD1mLm9wcG9zaXRlP3RoaXMuY2hhcnRXaWR0aC1nLWYuaGVpZ2h0OnRoaXMuc3BhY2luZ1szXStnLGYudG9wPXRoaXMucGxvdFRvcCtnKTooZi5sZWZ0PXRoaXMucGxvdExlZnQrZywKZi50b3A9Zi5uYXZpZ2F0b3JPcHRpb25zLnRvcHx8dGhpcy5jaGFydEhlaWdodC1mLmhlaWdodC1nLXRoaXMuc3BhY2luZ1syXS0odGhpcy5yYW5nZVNlbGVjdG9yJiZ0aGlzLmV4dHJhQm90dG9tTWFyZ2luP3RoaXMucmFuZ2VTZWxlY3Rvci5nZXRIZWlnaHQoKTowKS0oYSYmImJvdHRvbSI9PT1hLnZlcnRpY2FsQWxpZ24mJiJwcm94aW1hdGUiIT09YS5sYXlvdXQmJmEuZW5hYmxlZCYmIWEuZmxvYXRpbmc/Yi5sZWdlbmRIZWlnaHQrRChhLm1hcmdpbiwxMCk6MCktKHRoaXMudGl0bGVPZmZzZXQ/dGhpcy50aXRsZU9mZnNldFsyXTowKSk7ZCYmcCYmKHRoaXMuaW52ZXJ0ZWQ/ZC5vcHRpb25zLmxlZnQ9cC5vcHRpb25zLmxlZnQ9Zi5sZWZ0OmQub3B0aW9ucy50b3A9cC5vcHRpb25zLnRvcD1mLnRvcCxkLnNldEF4aXNTaXplKCkscC5zZXRBeGlzU2l6ZSgpKX19KSx2KHUsInVwZGF0ZSIsZnVuY3Rpb24oYil7dmFyIGY9Yi5vcHRpb25zLm5hdmlnYXRvcnx8e30sYT1iLm9wdGlvbnMuc2Nyb2xsYmFyfHwKe307dGhpcy5uYXZpZ2F0b3J8fHRoaXMuc2Nyb2xsZXJ8fCFmLmVuYWJsZWQmJiFhLmVuYWJsZWR8fChJKCEwLHRoaXMub3B0aW9ucy5uYXZpZ2F0b3IsZiksSSghMCx0aGlzLm9wdGlvbnMuc2Nyb2xsYmFyLGEpLGRlbGV0ZSBiLm9wdGlvbnMubmF2aWdhdG9yLGRlbGV0ZSBiLm9wdGlvbnMuc2Nyb2xsYmFyKX0pLHYodSwiYWZ0ZXJVcGRhdGUiLGZ1bmN0aW9uKGIpe3RoaXMubmF2aWdhdG9yfHx0aGlzLnNjcm9sbGVyfHwhdGhpcy5vcHRpb25zLm5hdmlnYXRvci5lbmFibGVkJiYhdGhpcy5vcHRpb25zLnNjcm9sbGJhci5lbmFibGVkfHwodGhpcy5zY3JvbGxlcj10aGlzLm5hdmlnYXRvcj1uZXcgdyh0aGlzKSxEKGIucmVkcmF3LCEwKSYmdGhpcy5yZWRyYXcoYi5hbmltYXRpb24pKX0pLHYodSwiYWZ0ZXJBZGRTZXJpZXMiLGZ1bmN0aW9uKCl7dGhpcy5uYXZpZ2F0b3ImJnRoaXMubmF2aWdhdG9yLnNldEJhc2VTZXJpZXMobnVsbCwhMSl9KSx2KGUsImFmdGVyVXBkYXRlIixmdW5jdGlvbigpe3RoaXMuY2hhcnQubmF2aWdhdG9yJiYKIXRoaXMub3B0aW9ucy5pc0ludGVybmFsJiZ0aGlzLmNoYXJ0Lm5hdmlnYXRvci5zZXRCYXNlU2VyaWVzKG51bGwsITEpfSksdS5wcm90b3R5cGUuY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oYil7dmFyIGY9Yi5uYXZpZ2F0b3I7ZiYmYi54QXhpc1swXSYmKGI9Yi54QXhpc1swXS5nZXRFeHRyZW1lcygpLGYucmVuZGVyKGIubWluLGIubWF4KSl9KSk7dC5OYXZpZ2F0b3I9dztyZXR1cm4gdC5OYXZpZ2F0b3J9KTtLKGwsInBhcnRzL09yZGluYWxBeGlzLmpzIixbbFsicGFydHMvQXhpcy5qcyJdLGxbInBhcnRzL0dsb2JhbHMuanMiXSxsWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24obCx1LEIpe3ZhciB0PUIuYWRkRXZlbnQsRT1CLmNzcyxlPUIuZGVmaW5lZCx4PUIucGljayxxPUIudGltZVVuaXRzO0I9dS5DaGFydDt2YXIgYz11LlNlcmllcyx2OyhmdW5jdGlvbihjKXt2YXIgbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoYyl7dGhpcy5pbmRleD17fTt0aGlzLmF4aXM9Y31jLnByb3RvdHlwZS5iZWZvcmVTZXRUaWNrUG9zaXRpb25zPQpmdW5jdGlvbigpe3ZhciBjPXRoaXMuYXhpcyxlPWMub3JkaW5hbCxuPVtdLGEsaD0hMSxnPWMuZ2V0RXh0cmVtZXMoKSxxPWcubWluLEQ9Zy5tYXgsbSxrPWMuaXNYQXhpcyYmISFjLm9wdGlvbnMuYnJlYWtzO2c9Yy5vcHRpb25zLm9yZGluYWw7dmFyIGQ9TnVtYmVyLk1BWF9WQUxVRSxwPWMuY2hhcnQub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXMscjtpZihnfHxrKXtjLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIsZyl7YT1bXTtpZighKHAmJiExPT09Yi52aXNpYmxlfHwhMT09PWIudGFrZU9yZGluYWxQb3NpdGlvbiYmIWspJiYobj1uLmNvbmNhdChiLnByb2Nlc3NlZFhEYXRhKSx3PW4ubGVuZ3RoLG4uc29ydChmdW5jdGlvbihiLGYpe3JldHVybiBiLWZ9KSxkPU1hdGgubWluKGQseChiLmNsb3Nlc3RQb2ludFJhbmdlLGQpKSx3KSl7Zm9yKGc9MDtnPHctMTspbltnXSE9PW5bZysxXSYmYS5wdXNoKG5bZysxXSksZysrO2FbMF0hPT1uWzBdJiZhLnVuc2hpZnQoblswXSk7Cm49YX1iLmlzU2VyaWVzQm9vc3RpbmcmJihyPSEwKX0pO3ImJihuLmxlbmd0aD0wKTt2YXIgdz1uLmxlbmd0aDtpZigyPHcpe3ZhciBiPW5bMV0tblswXTtmb3IobT13LTE7bS0tJiYhaDspblttKzFdLW5bbV0hPT1iJiYoaD0hMCk7IWMub3B0aW9ucy5rZWVwT3JkaW5hbFBhZGRpbmcmJihuWzBdLXE+Ynx8RC1uW24ubGVuZ3RoLTFdPmIpJiYoaD0hMCl9ZWxzZSBjLm9wdGlvbnMub3ZlcnNjcm9sbCYmKDI9PT13P2Q9blsxXS1uWzBdOjE9PT13PyhkPWMub3B0aW9ucy5vdmVyc2Nyb2xsLG49W25bMF0sblswXStkXSk6ZD1lLm92ZXJzY3JvbGxQb2ludHNSYW5nZSk7aD8oYy5vcHRpb25zLm92ZXJzY3JvbGwmJihlLm92ZXJzY3JvbGxQb2ludHNSYW5nZT1kLG49bi5jb25jYXQoZS5nZXRPdmVyc2Nyb2xsUG9zaXRpb25zKCkpKSxlLnBvc2l0aW9ucz1uLGI9Yy5vcmRpbmFsMmxpbihNYXRoLm1heChxLG5bMF0pLCEwKSxtPU1hdGgubWF4KGMub3JkaW5hbDJsaW4oTWF0aC5taW4oRCxuW24ubGVuZ3RoLQoxXSksITApLDEpLGUuc2xvcGU9RD0oRC1xKS8obS1iKSxlLm9mZnNldD1xLWIqRCk6KGUub3ZlcnNjcm9sbFBvaW50c1JhbmdlPXgoYy5jbG9zZXN0UG9pbnRSYW5nZSxlLm92ZXJzY3JvbGxQb2ludHNSYW5nZSksZS5wb3NpdGlvbnM9Yy5vcmRpbmFsLnNsb3BlPWUub2Zmc2V0PXZvaWQgMCl9Yy5pc09yZGluYWw9ZyYmaDtlLmdyb3VwSW50ZXJ2YWxGYWN0b3I9bnVsbH07Yy5wcm90b3R5cGUuZ2V0RXh0ZW5kZWRQb3NpdGlvbnM9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLGU9Yy5heGlzLG49ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsYT1lLmNoYXJ0LGg9ZS5zZXJpZXNbMF0uY3VycmVudERhdGFHcm91cGluZyxnPWMuaW5kZXgscT1oP2guY291bnQraC51bml0TmFtZToicmF3IixEPWUub3B0aW9ucy5vdmVyc2Nyb2xsLG09ZS5nZXRFeHRyZW1lcygpLGs7Z3x8KGc9Yy5pbmRleD17fSk7aWYoIWdbcV0pe3ZhciBkPXtzZXJpZXM6W10sY2hhcnQ6YSxnZXRFeHRyZW1lczpmdW5jdGlvbigpe3JldHVybnttaW46bS5kYXRhTWluLAptYXg6bS5kYXRhTWF4K0R9fSxvcHRpb25zOntvcmRpbmFsOiEwfSxvcmRpbmFsOnt9LG9yZGluYWwybGluOm4ub3JkaW5hbDJsaW4sdmFsMmxpbjpuLnZhbDJsaW59O2Qub3JkaW5hbC5heGlzPWQ7ZS5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihnKXtrPXt4QXhpczpkLHhEYXRhOmcueERhdGEuc2xpY2UoKSxjaGFydDphLGRlc3Ryb3lHcm91cGVkRGF0YTp1Lm5vb3AsZ2V0UHJvY2Vzc2VkRGF0YTp1LlNlcmllcy5wcm90b3R5cGUuZ2V0UHJvY2Vzc2VkRGF0YX07ay54RGF0YT1rLnhEYXRhLmNvbmNhdChjLmdldE92ZXJzY3JvbGxQb3NpdGlvbnMoKSk7ay5vcHRpb25zPXtkYXRhR3JvdXBpbmc6aD97ZW5hYmxlZDohMCxmb3JjZWQ6ITAsYXBwcm94aW1hdGlvbjoib3BlbiIsdW5pdHM6W1toLnVuaXROYW1lLFtoLmNvdW50XV1dfTp7ZW5hYmxlZDohMX19O2cucHJvY2Vzc0RhdGEuYXBwbHkoayk7ZC5zZXJpZXMucHVzaChrKX0pO2Uub3JkaW5hbC5iZWZvcmVTZXRUaWNrUG9zaXRpb25zLmFwcGx5KHtheGlzOmR9KTsKZ1txXT1kLm9yZGluYWwucG9zaXRpb25zfXJldHVybiBnW3FdfTtjLnByb3RvdHlwZS5nZXRHcm91cEludGVydmFsRmFjdG9yPWZ1bmN0aW9uKGMsZSxuKXtuPW4ucHJvY2Vzc2VkWERhdGE7dmFyIGE9bi5sZW5ndGgsaD1bXTt2YXIgZz10aGlzLmdyb3VwSW50ZXJ2YWxGYWN0b3I7aWYoIWcpe2ZvcihnPTA7ZzxhLTE7ZysrKWhbZ109bltnKzFdLW5bZ107aC5zb3J0KGZ1bmN0aW9uKGEsZyl7cmV0dXJuIGEtZ30pO2g9aFtNYXRoLmZsb29yKGEvMildO2M9TWF0aC5tYXgoYyxuWzBdKTtlPU1hdGgubWluKGUsblthLTFdKTt0aGlzLmdyb3VwSW50ZXJ2YWxGYWN0b3I9Zz1hKmgvKGUtYyl9cmV0dXJuIGd9O2MucHJvdG90eXBlLmdldE92ZXJzY3JvbGxQb3NpdGlvbnM9ZnVuY3Rpb24oKXt2YXIgYz10aGlzLmF4aXMscT1jLm9wdGlvbnMub3ZlcnNjcm9sbCxuPXRoaXMub3ZlcnNjcm9sbFBvaW50c1JhbmdlLGE9W10saD1jLmRhdGFNYXg7aWYoZShuKSlmb3IoYS5wdXNoKGgpO2g8PWMuZGF0YU1heCsKcTspaCs9bixhLnB1c2goaCk7cmV0dXJuIGF9O2MucHJvdG90eXBlLnBvc3RQcm9jZXNzVGlja0ludGVydmFsPWZ1bmN0aW9uKGMpe3ZhciBlPXRoaXMuYXhpcyxuPXRoaXMuc2xvcGU7cmV0dXJuIG4/ZS5vcHRpb25zLmJyZWFrcz9lLmNsb3Nlc3RQb2ludFJhbmdlfHxjOmMvKG4vZS5jbG9zZXN0UG9pbnRSYW5nZSk6Y307cmV0dXJuIGN9KCk7Yy5Db21wb3NpdGlvbj1sO2MuY29tcG9zZT1mdW5jdGlvbihsLHosdil7bC5rZWVwUHJvcHMucHVzaCgib3JkaW5hbCIpO3ZhciBuPWwucHJvdG90eXBlO2wucHJvdG90eXBlLmdldFRpbWVUaWNrcz1mdW5jdGlvbihhLGMsZyxuLGwsbSxrKXt2b2lkIDA9PT1sJiYobD1bXSk7dm9pZCAwPT09bSYmKG09MCk7dmFyIGQ9MCxwLHIsdz17fSxiPVtdLGY9LU51bWJlci5NQVhfVkFMVUUseT10aGlzLm9wdGlvbnMudGlja1BpeGVsSW50ZXJ2YWwsaD10aGlzLmNoYXJ0LnRpbWUsRj1bXTtpZighdGhpcy5vcHRpb25zLm9yZGluYWwmJiF0aGlzLm9wdGlvbnMuYnJlYWtzfHwKIWx8fDM+bC5sZW5ndGh8fCJ1bmRlZmluZWQiPT09dHlwZW9mIGMpcmV0dXJuIGguZ2V0VGltZVRpY2tzLmFwcGx5KGgsYXJndW1lbnRzKTt2YXIgST1sLmxlbmd0aDtmb3IocD0wO3A8STtwKyspe3ZhciB6PXAmJmxbcC0xXT5nO2xbcF08YyYmKGQ9cCk7aWYocD09PUktMXx8bFtwKzFdLWxbcF0+NSptfHx6KXtpZihsW3BdPmYpe2ZvcihyPWguZ2V0VGltZVRpY2tzKGEsbFtkXSxsW3BdLG4pO3IubGVuZ3RoJiZyWzBdPD1mOylyLnNoaWZ0KCk7ci5sZW5ndGgmJihmPXJbci5sZW5ndGgtMV0pO0YucHVzaChiLmxlbmd0aCk7Yj1iLmNvbmNhdChyKX1kPXArMX1pZih6KWJyZWFrfXI9ci5pbmZvO2lmKGsmJnIudW5pdFJhbmdlPD1xLmhvdXIpe3A9Yi5sZW5ndGgtMTtmb3IoZD0xO2Q8cDtkKyspaWYoaC5kYXRlRm9ybWF0KCIlZCIsYltkXSkhPT1oLmRhdGVGb3JtYXQoIiVkIixiW2QtMV0pKXt3W2JbZF1dPSJkYXkiO3ZhciB2PSEwfXYmJih3W2JbMF1dPSJkYXkiKTtyLmhpZ2hlclJhbmtzPQp3fXIuc2VnbWVudFN0YXJ0cz1GO2IuaW5mbz1yO2lmKGsmJmUoeSkpe2Q9Rj1iLmxlbmd0aDt2PVtdO3ZhciBEO2ZvcihoPVtdO2QtLTspcD10aGlzLnRyYW5zbGF0ZShiW2RdKSxEJiYoaFtkXT1ELXApLHZbZF09RD1wO2guc29ydCgpO2g9aFtNYXRoLmZsb29yKGgubGVuZ3RoLzIpXTtoPC42KnkmJihoPW51bGwpO2Q9YltGLTFdPmc/Ri0xOkY7Zm9yKEQ9dm9pZCAwO2QtLTspcD12W2RdLEY9TWF0aC5hYnMoRC1wKSxEJiZGPC44KnkmJihudWxsPT09aHx8RjwuOCpoKT8od1tiW2RdXSYmIXdbYltkKzFdXT8oRj1kKzEsRD1wKTpGPWQsYi5zcGxpY2UoRiwxKSk6RD1wfXJldHVybiBifTtuLmxpbjJ2YWw9ZnVuY3Rpb24oYSxjKXt2YXIgZz10aGlzLm9yZGluYWwsaD1nLnBvc2l0aW9ucztpZihoKXt2YXIgZT1nLnNsb3BlLG09Zy5vZmZzZXQ7Zz1oLmxlbmd0aC0xO2lmKGMpaWYoMD5hKWE9aFswXTtlbHNlIGlmKGE+ZylhPWhbZ107ZWxzZXtnPU1hdGguZmxvb3IoYSk7dmFyIGs9YS0KZ31lbHNlIGZvcig7Zy0tOylpZihjPWUqZyttLGE+PWMpe2U9ZSooZysxKSttO2s9KGEtYykvKGUtYyk7YnJlYWt9cmV0dXJuInVuZGVmaW5lZCIhPT10eXBlb2YgayYmInVuZGVmaW5lZCIhPT10eXBlb2YgaFtnXT9oW2ddKyhrP2sqKGhbZysxXS1oW2ddKTowKTphfXJldHVybiBhfTtuLnZhbDJsaW49ZnVuY3Rpb24oYSxjKXt2YXIgZz10aGlzLm9yZGluYWwsaD1nLnBvc2l0aW9ucztpZihoKXt2YXIgZT1oLmxlbmd0aCxtO2ZvcihtPWU7bS0tOylpZihoW21dPT09YSl7dmFyIGs9bTticmVha31mb3IobT1lLTE7bS0tOylpZihhPmhbbV18fDA9PT1tKXthPShhLWhbbV0pLyhoW20rMV0taFttXSk7az1tK2E7YnJlYWt9Yz1jP2s6Zy5zbG9wZSooa3x8MCkrZy5vZmZzZXR9ZWxzZSBjPWE7cmV0dXJuIGN9O24ub3JkaW5hbDJsaW49bi52YWwybGluO3QobCwiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3RoaXMub3JkaW5hbHx8KHRoaXMub3JkaW5hbD1uZXcgYy5Db21wb3NpdGlvbih0aGlzKSl9KTsKdChsLCJmb3VuZEV4dHJlbWVzIixmdW5jdGlvbigpe3RoaXMuaXNYQXhpcyYmZSh0aGlzLm9wdGlvbnMub3ZlcnNjcm9sbCkmJnRoaXMubWF4PT09dGhpcy5kYXRhTWF4JiYoIXRoaXMuY2hhcnQubW91c2VJc0Rvd258fHRoaXMuaXNJbnRlcm5hbCkmJighdGhpcy5ldmVudEFyZ3N8fHRoaXMuZXZlbnRBcmdzJiYibmF2aWdhdG9yIiE9PXRoaXMuZXZlbnRBcmdzLnRyaWdnZXIpJiYodGhpcy5tYXgrPXRoaXMub3B0aW9ucy5vdmVyc2Nyb2xsLCF0aGlzLmlzSW50ZXJuYWwmJmUodGhpcy51c2VyTWluKSYmKHRoaXMubWluKz10aGlzLm9wdGlvbnMub3ZlcnNjcm9sbCkpfSk7dChsLCJhZnRlclNldFNjYWxlIixmdW5jdGlvbigpe3RoaXMuaG9yaXomJiF0aGlzLmlzRGlydHkmJih0aGlzLmlzRGlydHk9dGhpcy5pc09yZGluYWwmJnRoaXMuY2hhcnQubmF2aWdhdG9yJiYhdGhpcy5jaGFydC5uYXZpZ2F0b3IuYWRhcHRUb1VwZGF0ZWREYXRhKX0pO3QobCwiaW5pdGlhbEF4aXNUcmFuc2xhdGlvbiIsCmZ1bmN0aW9uKCl7dGhpcy5vcmRpbmFsJiYodGhpcy5vcmRpbmFsLmJlZm9yZVNldFRpY2tQb3NpdGlvbnMoKSx0aGlzLnRpY2tJbnRlcnZhbD10aGlzLm9yZGluYWwucG9zdFByb2Nlc3NUaWNrSW50ZXJ2YWwodGhpcy50aWNrSW50ZXJ2YWwpKX0pO3QoeiwicGFuIixmdW5jdGlvbihhKXt2YXIgYz10aGlzLnhBeGlzWzBdLGc9Yy5vcHRpb25zLm92ZXJzY3JvbGwsZT1hLm9yaWdpbmFsRXZlbnQuY2hhcnRYLG49dGhpcy5vcHRpb25zLmNoYXJ0JiZ0aGlzLm9wdGlvbnMuY2hhcnQucGFubmluZyxtPSExO2lmKG4mJiJ5IiE9PW4udHlwZSYmYy5vcHRpb25zLm9yZGluYWwmJmMuc2VyaWVzLmxlbmd0aCl7dmFyIGs9dGhpcy5tb3VzZURvd25YLGQ9Yy5nZXRFeHRyZW1lcygpLHA9ZC5kYXRhTWF4LHI9ZC5taW4sdz1kLm1heCxiPXRoaXMuaG92ZXJQb2ludHMsZj1jLmNsb3Nlc3RQb2ludFJhbmdlfHxjLm9yZGluYWwmJmMub3JkaW5hbC5vdmVyc2Nyb2xsUG9pbnRzUmFuZ2U7az0oay1lKS8KKGMudHJhbnNsYXRpb25TbG9wZSooYy5vcmRpbmFsLnNsb3BlfHxmKSk7dmFyIHk9e29yZGluYWw6e3Bvc2l0aW9uczpjLm9yZGluYWwuZ2V0RXh0ZW5kZWRQb3NpdGlvbnMoKX19O2Y9Yy5saW4ydmFsO3ZhciBxPWMudmFsMmxpbjtpZigheS5vcmRpbmFsLnBvc2l0aW9ucyltPSEwO2Vsc2UgaWYoMTxNYXRoLmFicyhrKSl7YiYmYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2Iuc2V0U3RhdGUoKX0pO2lmKDA+ayl7Yj15O3ZhciBGPWMub3JkaW5hbC5wb3NpdGlvbnM/Yzp5fWVsc2UgYj1jLm9yZGluYWwucG9zaXRpb25zP2M6eSxGPXk7eT1GLm9yZGluYWwucG9zaXRpb25zO3A+eVt5Lmxlbmd0aC0xXSYmeS5wdXNoKHApO3RoaXMuZml4ZWRSYW5nZT13LXI7az1jLm5hdmlnYXRvckF4aXMudG9GaXhlZFJhbmdlKG51bGwsbnVsbCxmLmFwcGx5KGIsW3EuYXBwbHkoYixbciwhMF0pK2ssITBdKSxmLmFwcGx5KEYsW3EuYXBwbHkoRixbdywhMF0pK2ssITBdKSk7ay5taW4+PU1hdGgubWluKGQuZGF0YU1pbiwKcikmJmsubWF4PD1NYXRoLm1heChwLHcpK2cmJmMuc2V0RXh0cmVtZXMoay5taW4say5tYXgsITAsITEse3RyaWdnZXI6InBhbiJ9KTt0aGlzLm1vdXNlRG93blg9ZTtFKHRoaXMuY29udGFpbmVyLHtjdXJzb3I6Im1vdmUifSl9fWVsc2UgbT0hMDttfHxuJiYveS8udGVzdChuLnR5cGUpP2cmJihjLm1heD1jLmRhdGFNYXgrZyk6YS5wcmV2ZW50RGVmYXVsdCgpfSk7dCh2LCJ1cGRhdGVkRGF0YSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLnhBeGlzO2EmJmEub3B0aW9ucy5vcmRpbmFsJiZkZWxldGUgYS5vcmRpbmFsLmluZGV4fSl9fSkodnx8KHY9e30pKTt2LmNvbXBvc2UobCxCLGMpO3JldHVybiB2fSk7SyhsLCJtb2R1bGVzL2Jyb2tlbi1heGlzLnNyYy5qcyIsW2xbInBhcnRzL0F4aXMuanMiXSxsWyJwYXJ0cy9HbG9iYWxzLmpzIl0sbFsicGFydHMvVXRpbGl0aWVzLmpzIl0sbFsicGFydHMvU3RhY2tpbmcuanMiXV0sZnVuY3Rpb24obCx1LEIsdCl7dmFyIEU9Qi5hZGRFdmVudCxlPQpCLmZpbmQseD1CLmZpcmVFdmVudCxxPUIuaXNBcnJheSxjPUIuaXNOdW1iZXIsdj1CLnBpY2ssSj11LlNlcmllcyxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhjKXt0aGlzLmhhc0JyZWFrcz0hMTt0aGlzLmF4aXM9Y31jLmlzSW5CcmVhaz1mdW5jdGlvbihjLGUpe3ZhciBuPWMucmVwZWF0fHxJbmZpbml0eSxhPWMuZnJvbSxoPWMudG8tYy5mcm9tO2U9ZT49YT8oZS1hKSVuOm4tKGEtZSklbjtyZXR1cm4gYy5pbmNsdXNpdmU/ZTw9aDplPGgmJjAhPT1lfTtjLmxpbjJWYWw9ZnVuY3Rpb24oZSl7dmFyIHE9dGhpcy5icm9rZW5BeGlzO3E9cSYmcS5icmVha0FycmF5O2lmKCFxKXJldHVybiBlO3ZhciBuO2ZvcihuPTA7bjxxLmxlbmd0aDtuKyspe3ZhciBhPXFbbl07aWYoYS5mcm9tPj1lKWJyZWFrO2Vsc2UgYS50bzxlP2UrPWEubGVuOmMuaXNJbkJyZWFrKGEsZSkmJihlKz1hLmxlbil9cmV0dXJuIGV9O2MudmFsMkxpbj1mdW5jdGlvbihlKXt2YXIgcT10aGlzLmJyb2tlbkF4aXM7cT0KcSYmcS5icmVha0FycmF5O2lmKCFxKXJldHVybiBlO3ZhciBuPWUsYTtmb3IoYT0wO2E8cS5sZW5ndGg7YSsrKXt2YXIgaD1xW2FdO2lmKGgudG88PWUpbi09aC5sZW47ZWxzZSBpZihoLmZyb20+PWUpYnJlYWs7ZWxzZSBpZihjLmlzSW5CcmVhayhoLGUpKXtuLT1lLWguZnJvbTticmVha319cmV0dXJuIG59O2MucHJvdG90eXBlLmZpbmRCcmVha0F0PWZ1bmN0aW9uKGMscSl7cmV0dXJuIGUocSxmdW5jdGlvbihlKXtyZXR1cm4gZS5mcm9tPGMmJmM8ZS50b30pfTtjLnByb3RvdHlwZS5pc0luQW55QnJlYWs9ZnVuY3Rpb24oZSxxKXt2YXIgbj10aGlzLmF4aXMsYT1uLm9wdGlvbnMuYnJlYWtzLGg9YSYmYS5sZW5ndGgsZztpZihoKXtmb3IoO2gtLTspaWYoYy5pc0luQnJlYWsoYVtoXSxlKSl7dmFyIGw9ITA7Z3x8KGc9dihhW2hdLnNob3dQb2ludHMsIW4uaXNYQXhpcykpfXZhciBEPWwmJnE/bCYmIWc6bH1yZXR1cm4gRH07Yy5wcm90b3R5cGUuc2V0QnJlYWtzPWZ1bmN0aW9uKGUsCnQpe3ZhciBuPXRoaXMsYT1uLmF4aXMsaD1xKGUpJiYhIWUubGVuZ3RoO2EuaXNEaXJ0eT1uLmhhc0JyZWFrcyE9PWg7bi5oYXNCcmVha3M9aDthLm9wdGlvbnMuYnJlYWtzPWEudXNlck9wdGlvbnMuYnJlYWtzPWU7YS5mb3JjZVJlZHJhdz0hMDthLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuaXNEaXJ0eT0hMH0pO2h8fGEudmFsMmxpbiE9PWMudmFsMkxpbnx8KGRlbGV0ZSBhLnZhbDJsaW4sZGVsZXRlIGEubGluMnZhbCk7aCYmKGEudXNlck9wdGlvbnMub3JkaW5hbD0hMSxhLmxpbjJ2YWw9Yy5saW4yVmFsLGEudmFsMmxpbj1jLnZhbDJMaW4sYS5zZXRFeHRyZW1lcz1mdW5jdGlvbihhLGMsZSxoLGspe2lmKG4uaGFzQnJlYWtzKXtmb3IodmFyIGQsZz10aGlzLm9wdGlvbnMuYnJlYWtzO2Q9bi5maW5kQnJlYWtBdChhLGcpOylhPWQudG87Zm9yKDtkPW4uZmluZEJyZWFrQXQoYyxnKTspYz1kLmZyb207YzxhJiYoYz1hKX1sLnByb3RvdHlwZS5zZXRFeHRyZW1lcy5jYWxsKHRoaXMsCmEsYyxlLGgsayl9LGEuc2V0QXhpc1RyYW5zbGF0aW9uPWZ1bmN0aW9uKGcpe2wucHJvdG90eXBlLnNldEF4aXNUcmFuc2xhdGlvbi5jYWxsKHRoaXMsZyk7bi51bml0TGVuZ3RoPW51bGw7aWYobi5oYXNCcmVha3Mpe2c9YS5vcHRpb25zLmJyZWFrc3x8W107dmFyIGU9W10saD1bXSxtPTAsayxkPWEudXNlck1pbnx8YS5taW4scD1hLnVzZXJNYXh8fGEubWF4LHI9dihhLnBvaW50UmFuZ2VQYWRkaW5nLDApLHc7Zy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2s9Yi5yZXBlYXR8fEluZmluaXR5O2MuaXNJbkJyZWFrKGIsZCkmJihkKz1iLnRvJWstZCVrKTtjLmlzSW5CcmVhayhiLHApJiYocC09cCVrLWIuZnJvbSVrKX0pO2cuZm9yRWFjaChmdW5jdGlvbihiKXtmPWIuZnJvbTtmb3Ioaz1iLnJlcGVhdHx8SW5maW5pdHk7Zi1rPmQ7KWYtPWs7Zm9yKDtmPGQ7KWYrPWs7Zm9yKHc9Zjt3PHA7dys9ayllLnB1c2goe3ZhbHVlOncsbW92ZToiaW4ifSksZS5wdXNoKHt2YWx1ZTp3KyhiLnRvLWIuZnJvbSksCm1vdmU6Im91dCIsc2l6ZTpiLmJyZWFrU2l6ZX0pfSk7ZS5zb3J0KGZ1bmN0aW9uKGIsZil7cmV0dXJuIGIudmFsdWU9PT1mLnZhbHVlPygiaW4iPT09Yi5tb3ZlPzA6MSktKCJpbiI9PT1mLm1vdmU/MDoxKTpiLnZhbHVlLWYudmFsdWV9KTt2YXIgYj0wO3ZhciBmPWQ7ZS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2IrPSJpbiI9PT1hLm1vdmU/MTotMTsxPT09YiYmImluIj09PWEubW92ZSYmKGY9YS52YWx1ZSk7MD09PWImJihoLnB1c2goe2Zyb206Zix0bzphLnZhbHVlLGxlbjphLnZhbHVlLWYtKGEuc2l6ZXx8MCl9KSxtKz1hLnZhbHVlLWYtKGEuc2l6ZXx8MCkpfSk7YS5icmVha0FycmF5PW4uYnJlYWtBcnJheT1oO24udW5pdExlbmd0aD1wLWQtbStyO3goYSwiYWZ0ZXJCcmVha3MiKTthLnN0YXRpY1NjYWxlP2EudHJhbnNBPWEuc3RhdGljU2NhbGU6bi51bml0TGVuZ3RoJiYoYS50cmFuc0EqPShwLWEubWluK3IpL24udW5pdExlbmd0aCk7ciYmKGEubWluUGl4ZWxQYWRkaW5nPWEudHJhbnNBKgphLm1pblBvaW50T2Zmc2V0KTthLm1pbj1kO2EubWF4PXB9fSk7dih0LCEwKSYmYS5jaGFydC5yZWRyYXcoKX07cmV0dXJuIGN9KCk7dT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt9ZS5jb21wb3NlPWZ1bmN0aW9uKGUscSl7ZS5rZWVwUHJvcHMucHVzaCgiYnJva2VuQXhpcyIpO3ZhciBuPUoucHJvdG90eXBlO24uZHJhd0JyZWFrcz1mdW5jdGlvbihhLGUpe3ZhciBnPXRoaXMsaD1nLnBvaW50cyxuLG0sayxkO2lmKGEmJmEuYnJva2VuQXhpcyYmYS5icm9rZW5BeGlzLmhhc0JyZWFrcyl7dmFyIHA9YS5icm9rZW5BeGlzO2UuZm9yRWFjaChmdW5jdGlvbihyKXtuPXAmJnAuYnJlYWtBcnJheXx8W107bT1hLmlzWEF4aXM/YS5taW46dihnLm9wdGlvbnMudGhyZXNob2xkLGEubWluKTtoLmZvckVhY2goZnVuY3Rpb24oZyl7ZD12KGdbInN0YWNrIityLnRvVXBwZXJDYXNlKCldLGdbcl0pO24uZm9yRWFjaChmdW5jdGlvbihiKXtpZihjKG0pJiZjKGQpKXtrPSExO2lmKG08Yi5mcm9tJiYKZD5iLnRvfHxtPmIuZnJvbSYmZDxiLmZyb20paz0icG9pbnRCcmVhayI7ZWxzZSBpZihtPGIuZnJvbSYmZD5iLmZyb20mJmQ8Yi50b3x8bT5iLmZyb20mJmQ+Yi50byYmZDxiLmZyb20paz0icG9pbnRJbkJyZWFrIjtrJiZ4KGEsayx7cG9pbnQ6Zyxicms6Yn0pfX0pfSl9KX19O24uZ2FwcGVkUGF0aD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuY3VycmVudERhdGFHcm91cGluZyxjPWEmJmEuZ2FwU2l6ZTthPXRoaXMub3B0aW9ucy5nYXBTaXplO3ZhciBnPXRoaXMucG9pbnRzLnNsaWNlKCksZT1nLmxlbmd0aC0xLG49dGhpcy55QXhpcyxtO2lmKGEmJjA8ZSlmb3IoInZhbHVlIiE9PXRoaXMub3B0aW9ucy5nYXBVbml0JiYoYSo9dGhpcy5iYXNlUG9pbnRSYW5nZSksYyYmYz5hJiZjPj10aGlzLmJhc2VQb2ludFJhbmdlJiYoYT1jKSxtPXZvaWQgMDtlLS07KW0mJiExIT09bS52aXNpYmxlfHwobT1nW2UrMV0pLGM9Z1tlXSwhMSE9PW0udmlzaWJsZSYmITEhPT1jLnZpc2libGUmJihtLngtCmMueD5hJiYobT0oYy54K20ueCkvMixnLnNwbGljZShlKzEsMCx7aXNOdWxsOiEwLHg6bX0pLG4uc3RhY2tpbmcmJnRoaXMub3B0aW9ucy5zdGFja2luZyYmKG09bi5zdGFja2luZy5zdGFja3NbdGhpcy5zdGFja0tleV1bbV09bmV3IHQobixuLm9wdGlvbnMuc3RhY2tMYWJlbHMsITEsbSx0aGlzLnN0YWNrKSxtLnRvdGFsPTApKSxtPWMpO3JldHVybiB0aGlzLmdldEdyYXBoUGF0aChnKX07RShlLCJpbml0IixmdW5jdGlvbigpe3RoaXMuYnJva2VuQXhpc3x8KHRoaXMuYnJva2VuQXhpcz1uZXcgRyh0aGlzKSl9KTtFKGUsImFmdGVySW5pdCIsZnVuY3Rpb24oKXsidW5kZWZpbmVkIiE9PXR5cGVvZiB0aGlzLmJyb2tlbkF4aXMmJnRoaXMuYnJva2VuQXhpcy5zZXRCcmVha3ModGhpcy5vcHRpb25zLmJyZWFrcywhMSl9KTtFKGUsImFmdGVyU2V0VGlja1Bvc2l0aW9ucyIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmJyb2tlbkF4aXM7aWYoYSYmYS5oYXNCcmVha3Mpe3ZhciBjPXRoaXMudGlja1Bvc2l0aW9ucywKZz10aGlzLnRpY2tQb3NpdGlvbnMuaW5mbyxlPVtdLG47Zm9yKG49MDtuPGMubGVuZ3RoO24rKylhLmlzSW5BbnlCcmVhayhjW25dKXx8ZS5wdXNoKGNbbl0pO3RoaXMudGlja1Bvc2l0aW9ucz1lO3RoaXMudGlja1Bvc2l0aW9ucy5pbmZvPWd9fSk7RShlLCJhZnRlclNldE9wdGlvbnMiLGZ1bmN0aW9uKCl7dGhpcy5icm9rZW5BeGlzJiZ0aGlzLmJyb2tlbkF4aXMuaGFzQnJlYWtzJiYodGhpcy5vcHRpb25zLm9yZGluYWw9ITEpfSk7RShxLCJhZnRlckdlbmVyYXRlUG9pbnRzIixmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5jb25uZWN0TnVsbHMsYz10aGlzLnBvaW50cyxnPXRoaXMueEF4aXMsZT10aGlzLnlBeGlzO2lmKHRoaXMuaXNEaXJ0eSlmb3IodmFyIG49Yy5sZW5ndGg7bi0tOyl7dmFyIG09Y1tuXSxrPSEobnVsbD09PW0ueSYmITE9PT1hKSYmKGcmJmcuYnJva2VuQXhpcyYmZy5icm9rZW5BeGlzLmlzSW5BbnlCcmVhayhtLngsITApfHxlJiZlLmJyb2tlbkF4aXMmJgplLmJyb2tlbkF4aXMuaXNJbkFueUJyZWFrKG0ueSwhMCkpO20udmlzaWJsZT1rPyExOiExIT09bS5vcHRpb25zLnZpc2libGV9fSk7RShxLCJhZnRlclJlbmRlciIsZnVuY3Rpb24oKXt0aGlzLmRyYXdCcmVha3ModGhpcy54QXhpcyxbIngiXSk7dGhpcy5kcmF3QnJlYWtzKHRoaXMueUF4aXMsdih0aGlzLnBvaW50QXJyYXlNYXAsWyJ5Il0pKX0pfTtyZXR1cm4gZX0oKTt1LmNvbXBvc2UobCxKKTtyZXR1cm4gdX0pO0sobCwibWFzdGVycy9tb2R1bGVzL2Jyb2tlbi1heGlzLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KTtLKGwsInBhcnRzL0RhdGFHcm91cGluZy5qcyIsW2xbInBhcnRzL0RhdGVUaW1lQXhpcy5qcyJdLGxbInBhcnRzL0dsb2JhbHMuanMiXSxsWyJwYXJ0cy9PcHRpb25zLmpzIl0sbFsicGFydHMvUG9pbnQuanMiXSxsWyJwYXJ0cy9Ub29sdGlwLmpzIl0sbFsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGwsdSxCLHQsRSxlKXsiIjt2YXIgeD1lLmFkZEV2ZW50LApxPWUuYXJyYXlNYXgsYz1lLmFycmF5TWluLHY9ZS5jb3JyZWN0RmxvYXQsSj1lLmRlZmluZWQsRz1lLmVycm9yLEM9ZS5leHRlbmQsej1lLmZvcm1hdCxBPWUuaXNOdW1iZXIsbj1lLm1lcmdlLGE9ZS5waWNrLGg9dS5BeGlzO2U9dS5TZXJpZXM7dmFyIGc9dS5hcHByb3hpbWF0aW9ucz17c3VtOmZ1bmN0aW9uKGIpe3ZhciBhPWIubGVuZ3RoO2lmKCFhJiZiLmhhc051bGxzKXZhciBkPW51bGw7ZWxzZSBpZihhKWZvcihkPTA7YS0tOylkKz1iW2FdO3JldHVybiBkfSxhdmVyYWdlOmZ1bmN0aW9uKGIpe3ZhciBhPWIubGVuZ3RoO2I9Zy5zdW0oYik7QShiKSYmYSYmKGI9dihiL2EpKTtyZXR1cm4gYn0sYXZlcmFnZXM6ZnVuY3Rpb24oKXt2YXIgYj1bXTtbXS5mb3JFYWNoLmNhbGwoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2IucHVzaChnLmF2ZXJhZ2UoYSkpfSk7cmV0dXJuInVuZGVmaW5lZCI9PT10eXBlb2YgYlswXT92b2lkIDA6Yn0sb3BlbjpmdW5jdGlvbihiKXtyZXR1cm4gYi5sZW5ndGg/CmJbMF06Yi5oYXNOdWxscz9udWxsOnZvaWQgMH0saGlnaDpmdW5jdGlvbihiKXtyZXR1cm4gYi5sZW5ndGg/cShiKTpiLmhhc051bGxzP251bGw6dm9pZCAwfSxsb3c6ZnVuY3Rpb24oYil7cmV0dXJuIGIubGVuZ3RoP2MoYik6Yi5oYXNOdWxscz9udWxsOnZvaWQgMH0sY2xvc2U6ZnVuY3Rpb24oYil7cmV0dXJuIGIubGVuZ3RoP2JbYi5sZW5ndGgtMV06Yi5oYXNOdWxscz9udWxsOnZvaWQgMH0sb2hsYzpmdW5jdGlvbihiLGEsZCxjKXtiPWcub3BlbihiKTthPWcuaGlnaChhKTtkPWcubG93KGQpO2M9Zy5jbG9zZShjKTtpZihBKGIpfHxBKGEpfHxBKGQpfHxBKGMpKXJldHVybltiLGEsZCxjXX0scmFuZ2U6ZnVuY3Rpb24oYixhKXtiPWcubG93KGIpO2E9Zy5oaWdoKGEpO2lmKEEoYil8fEEoYSkpcmV0dXJuW2IsYV07aWYobnVsbD09PWImJm51bGw9PT1hKXJldHVybiBudWxsfX0sST1mdW5jdGlvbihiLGEsZCxjKXt2YXIgZj10aGlzLHA9Zi5kYXRhLHI9Zi5vcHRpb25zJiZmLm9wdGlvbnMuZGF0YSwKZT1bXSx3PVtdLGs9W10seT1iLmxlbmd0aCxoPSEhYSxtPVtdLHE9Zi5wb2ludEFycmF5TWFwLGw9cSYmcS5sZW5ndGgsSD1bIngiXS5jb25jYXQocXx8WyJ5Il0pLHY9MCx0PTAseDtjPSJmdW5jdGlvbiI9PT10eXBlb2YgYz9jOmdbY10/Z1tjXTpnW2YuZ2V0REdBcHByb3hpbWF0aW9uJiZmLmdldERHQXBwcm94aW1hdGlvbigpfHwiYXZlcmFnZSJdO2w/cS5mb3JFYWNoKGZ1bmN0aW9uKCl7bS5wdXNoKFtdKX0pOm0ucHVzaChbXSk7dmFyIEQ9bHx8MTtmb3IoeD0wO3g8PXkmJiEoYlt4XT49ZFswXSk7eCsrKTtmb3IoeDt4PD15O3grKyl7Zm9yKDsidW5kZWZpbmVkIiE9PXR5cGVvZiBkW3YrMV0mJmJbeF0+PWRbdisxXXx8eD09PXk7KXt2YXIgdT1kW3ZdO2YuZGF0YUdyb3VwSW5mbz17c3RhcnQ6Zi5jcm9wU3RhcnQrdCxsZW5ndGg6bVswXS5sZW5ndGh9O3ZhciB6PWMuYXBwbHkoZixtKTtmLnBvaW50Q2xhc3MmJiFKKGYuZGF0YUdyb3VwSW5mby5vcHRpb25zKSYmKGYuZGF0YUdyb3VwSW5mby5vcHRpb25zPQpuKGYucG9pbnRDbGFzcy5wcm90b3R5cGUub3B0aW9uc1RvT2JqZWN0LmNhbGwoe3NlcmllczpmfSxmLm9wdGlvbnMuZGF0YVtmLmNyb3BTdGFydCt0XSkpLEguZm9yRWFjaChmdW5jdGlvbihiKXtkZWxldGUgZi5kYXRhR3JvdXBJbmZvLm9wdGlvbnNbYl19KSk7InVuZGVmaW5lZCIhPT10eXBlb2YgeiYmKGUucHVzaCh1KSx3LnB1c2goeiksay5wdXNoKGYuZGF0YUdyb3VwSW5mbykpO3Q9eDtmb3IodT0wO3U8RDt1KyspbVt1XS5sZW5ndGg9MCxtW3VdLmhhc051bGxzPSExO3YrPTE7aWYoeD09PXkpYnJlYWt9aWYoeD09PXkpYnJlYWs7aWYocSlmb3IodT1mLmNyb3BTdGFydCt4LHo9cCYmcFt1XXx8Zi5wb2ludENsYXNzLnByb3RvdHlwZS5hcHBseU9wdGlvbnMuYXBwbHkoe3NlcmllczpmfSxbclt1XV0pLHU9MDt1PGw7dSsrKXt2YXIgRT16W3FbdV1dO0EoRSk/bVt1XS5wdXNoKEUpOm51bGw9PT1FJiYobVt1XS5oYXNOdWxscz0hMCl9ZWxzZSB1PWg/YVt4XTpudWxsLEEodSk/bVswXS5wdXNoKHUpOgpudWxsPT09dSYmKG1bMF0uaGFzTnVsbHM9ITApfXJldHVybntncm91cGVkWERhdGE6ZSxncm91cGVkWURhdGE6dyxncm91cE1hcDprfX0sRD17YXBwcm94aW1hdGlvbnM6Zyxncm91cERhdGE6SX0sbT1lLnByb3RvdHlwZSxrPW0ucHJvY2Vzc0RhdGEsZD1tLmdlbmVyYXRlUG9pbnRzLHA9e2dyb3VwUGl4ZWxXaWR0aDoyLGRhdGVUaW1lTGFiZWxGb3JtYXRzOnttaWxsaXNlY29uZDpbIiVBLCAlYiAlZSwgJUg6JU06JVMuJUwiLCIlQSwgJWIgJWUsICVIOiVNOiVTLiVMIiwiLSVIOiVNOiVTLiVMIl0sc2Vjb25kOlsiJUEsICViICVlLCAlSDolTTolUyIsIiVBLCAlYiAlZSwgJUg6JU06JVMiLCItJUg6JU06JVMiXSxtaW51dGU6WyIlQSwgJWIgJWUsICVIOiVNIiwiJUEsICViICVlLCAlSDolTSIsIi0lSDolTSJdLGhvdXI6WyIlQSwgJWIgJWUsICVIOiVNIiwiJUEsICViICVlLCAlSDolTSIsIi0lSDolTSJdLGRheTpbIiVBLCAlYiAlZSwgJVkiLCIlQSwgJWIgJWUiLCItJUEsICViICVlLCAlWSJdLAp3ZWVrOlsiV2VlayBmcm9tICVBLCAlYiAlZSwgJVkiLCIlQSwgJWIgJWUiLCItJUEsICViICVlLCAlWSJdLG1vbnRoOlsiJUIgJVkiLCIlQiIsIi0lQiAlWSJdLHllYXI6WyIlWSIsIiVZIiwiLSVZIl19fSxyPXtsaW5lOnt9LHNwbGluZTp7fSxhcmVhOnt9LGFyZWFzcGxpbmU6e30sYXJlYXJhbmdlOnt9LGNvbHVtbjp7Z3JvdXBQaXhlbFdpZHRoOjEwfSxjb2x1bW5yYW5nZTp7Z3JvdXBQaXhlbFdpZHRoOjEwfSxjYW5kbGVzdGljazp7Z3JvdXBQaXhlbFdpZHRoOjEwfSxvaGxjOntncm91cFBpeGVsV2lkdGg6NX19LHc9dS5kZWZhdWx0RGF0YUdyb3VwaW5nVW5pdHM9W1sibWlsbGlzZWNvbmQiLFsxLDIsNSwxMCwyMCwyNSw1MCwxMDAsMjAwLDUwMF1dLFsic2Vjb25kIixbMSwyLDUsMTAsMTUsMzBdXSxbIm1pbnV0ZSIsWzEsMiw1LDEwLDE1LDMwXV0sWyJob3VyIixbMSwyLDMsNCw2LDgsMTJdXSxbImRheSIsWzFdXSxbIndlZWsiLFsxXV0sWyJtb250aCIsWzEsMyw2XV0sWyJ5ZWFyIiwKbnVsbF1dO20uZ2V0REdBcHByb3hpbWF0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXMoImFyZWFyYW5nZSIpPyJyYW5nZSI6dGhpcy5pcygib2hsYyIpPyJvaGxjIjp0aGlzLmlzKCJjb2x1bW4iKT8ic3VtIjoiYXZlcmFnZSJ9O20uZ3JvdXBEYXRhPUk7bS5wcm9jZXNzRGF0YT1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQsZj10aGlzLm9wdGlvbnMuZGF0YUdyb3VwaW5nLGQ9ITEhPT10aGlzLmFsbG93REcmJmYmJmEoZi5lbmFibGVkLGIub3B0aW9ucy5pc1N0b2NrKSxjPXRoaXMudmlzaWJsZXx8IWIub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXMsZyxwPXRoaXMuY3VycmVudERhdGFHcm91cGluZyxyPSExO3RoaXMuZm9yY2VDcm9wPWQ7dGhpcy5ncm91cFBpeGVsV2lkdGg9bnVsbDt0aGlzLmhhc1Byb2Nlc3NlZD0hMDtkJiYhdGhpcy5yZXF1aXJlU29ydGluZyYmKHRoaXMucmVxdWlyZVNvcnRpbmc9cj0hMCk7ZD0hMT09PWsuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwKIWQ7ciYmKHRoaXMucmVxdWlyZVNvcnRpbmc9ITEpO2lmKCFkKXt0aGlzLmRlc3Ryb3lHcm91cGVkRGF0YSgpO2Q9Zi5ncm91cEFsbD90aGlzLnhEYXRhOnRoaXMucHJvY2Vzc2VkWERhdGE7dmFyIGU9Zi5ncm91cEFsbD90aGlzLnlEYXRhOnRoaXMucHJvY2Vzc2VkWURhdGEsaD1iLnBsb3RTaXplWDtiPXRoaXMueEF4aXM7dmFyIG49Yi5vcHRpb25zLm9yZGluYWwscT10aGlzLmdyb3VwUGl4ZWxXaWR0aD1iLmdldEdyb3VwUGl4ZWxXaWR0aCYmYi5nZXRHcm91cFBpeGVsV2lkdGgoKTtpZihxKXt0aGlzLmlzRGlydHk9Zz0hMDt0aGlzLnBvaW50cz1udWxsO3I9Yi5nZXRFeHRyZW1lcygpO3ZhciB2PXIubWluO3I9ci5tYXg7bj1uJiZiLm9yZGluYWwmJmIub3JkaW5hbC5nZXRHcm91cEludGVydmFsRmFjdG9yKHYscix0aGlzKXx8MTtxPXEqKHItdikvaCpuO2g9Yi5nZXRUaW1lVGlja3MobC5BZGRpdGlvbnNDbGFzcy5wcm90b3R5cGUubm9ybWFsaXplVGltZVRpY2tJbnRlcnZhbChxLApmLnVuaXRzfHx3KSxNYXRoLm1pbih2LGRbMF0pLE1hdGgubWF4KHIsZFtkLmxlbmd0aC0xXSksYi5vcHRpb25zLnN0YXJ0T2ZXZWVrLGQsdGhpcy5jbG9zZXN0UG9pbnRSYW5nZSk7ZT1tLmdyb3VwRGF0YS5hcHBseSh0aGlzLFtkLGUsaCxmLmFwcHJveGltYXRpb25dKTtkPWUuZ3JvdXBlZFhEYXRhO249ZS5ncm91cGVkWURhdGE7dmFyIHU9MDtpZihmLnNtb290aGVkJiZkLmxlbmd0aCl7dmFyIHg9ZC5sZW5ndGgtMTtmb3IoZFt4XT1NYXRoLm1pbihkW3hdLHIpO3gtLSYmMDx4OylkW3hdKz1xLzI7ZFswXT1NYXRoLm1heChkWzBdLHYpfWZvcih4PTE7eDxoLmxlbmd0aDt4KyspaC5pbmZvLnNlZ21lbnRTdGFydHMmJi0xIT09aC5pbmZvLnNlZ21lbnRTdGFydHMuaW5kZXhPZih4KXx8KHU9TWF0aC5tYXgoaFt4XS1oW3gtMV0sdSkpO3Y9aC5pbmZvO3YuZ2FwU2l6ZT11O3RoaXMuY2xvc2VzdFBvaW50UmFuZ2U9aC5pbmZvLnRvdGFsUmFuZ2U7dGhpcy5ncm91cE1hcD1lLmdyb3VwTWFwOwppZihKKGRbMF0pJiZkWzBdPGIubWluJiZjKXtpZighSihiLm9wdGlvbnMubWluKSYmYi5taW48PWIuZGF0YU1pbnx8Yi5taW49PT1iLmRhdGFNaW4pYi5taW49TWF0aC5taW4oZFswXSxiLm1pbik7Yi5kYXRhTWluPU1hdGgubWluKGRbMF0sYi5kYXRhTWluKX1mLmdyb3VwQWxsJiYoZj10aGlzLmNyb3BEYXRhKGQsbixiLm1pbixiLm1heCwxKSxkPWYueERhdGEsbj1mLnlEYXRhKTt0aGlzLnByb2Nlc3NlZFhEYXRhPWQ7dGhpcy5wcm9jZXNzZWRZRGF0YT1ufWVsc2UgdGhpcy5ncm91cE1hcD1udWxsO3RoaXMuaGFzR3JvdXBlZERhdGE9Zzt0aGlzLmN1cnJlbnREYXRhR3JvdXBpbmc9djt0aGlzLnByZXZlbnRHcmFwaEFuaW1hdGlvbj0ocCYmcC50b3RhbFJhbmdlKSE9PSh2JiZ2LnRvdGFsUmFuZ2UpfX07bS5kZXN0cm95R3JvdXBlZERhdGE9ZnVuY3Rpb24oKXt0aGlzLmdyb3VwZWREYXRhJiYodGhpcy5ncm91cGVkRGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGIsYSl7YiYmKHRoaXMuZ3JvdXBlZERhdGFbYV09CmIuZGVzdHJveT9iLmRlc3Ryb3koKTpudWxsKX0sdGhpcyksdGhpcy5ncm91cGVkRGF0YS5sZW5ndGg9MCl9O20uZ2VuZXJhdGVQb2ludHM9ZnVuY3Rpb24oKXtkLmFwcGx5KHRoaXMpO3RoaXMuZGVzdHJveUdyb3VwZWREYXRhKCk7dGhpcy5ncm91cGVkRGF0YT10aGlzLmhhc0dyb3VwZWREYXRhP3RoaXMucG9pbnRzOm51bGx9O3godCwidXBkYXRlIixmdW5jdGlvbigpe2lmKHRoaXMuZGF0YUdyb3VwKXJldHVybiBHKDI0LCExLHRoaXMuc2VyaWVzLmNoYXJ0KSwhMX0pO3goRSwiaGVhZGVyRm9ybWF0dGVyIixmdW5jdGlvbihiKXt2YXIgYT10aGlzLmNoYXJ0LGQ9YS50aW1lLGM9Yi5sYWJlbENvbmZpZyxnPWMuc2VyaWVzLHI9Zy50b29sdGlwT3B0aW9ucyxlPWcub3B0aW9ucy5kYXRhR3JvdXBpbmcsdz1yLnhEYXRlRm9ybWF0LGs9Zy54QXhpcyxoPXJbKGIuaXNGb290ZXI/ImZvb3RlciI6ImhlYWRlciIpKyJGb3JtYXQiXTtpZihrJiYiZGF0ZXRpbWUiPT09ay5vcHRpb25zLnR5cGUmJgplJiZBKGMua2V5KSl7dmFyIG49Zy5jdXJyZW50RGF0YUdyb3VwaW5nO2U9ZS5kYXRlVGltZUxhYmVsRm9ybWF0c3x8cC5kYXRlVGltZUxhYmVsRm9ybWF0cztpZihuKWlmKHI9ZVtuLnVuaXROYW1lXSwxPT09bi5jb3VudCl3PXJbMF07ZWxzZXt3PXJbMV07dmFyIG09clsyXX1lbHNlIXcmJmUmJih3PXRoaXMuZ2V0WERhdGVGb3JtYXQoYyxyLGspKTt3PWQuZGF0ZUZvcm1hdCh3LGMua2V5KTttJiYodys9ZC5kYXRlRm9ybWF0KG0sYy5rZXkrbi50b3RhbFJhbmdlLTEpKTtnLmNoYXJ0LnN0eWxlZE1vZGUmJihoPXRoaXMuc3R5bGVkTW9kZUZvcm1hdChoKSk7Yi50ZXh0PXooaCx7cG9pbnQ6QyhjLnBvaW50LHtrZXk6d30pLHNlcmllczpnfSxhKTtiLnByZXZlbnREZWZhdWx0KCl9fSk7eChlLCJkZXN0cm95IixtLmRlc3Ryb3lHcm91cGVkRGF0YSk7eChlLCJhZnRlclNldE9wdGlvbnMiLGZ1bmN0aW9uKGIpe2I9Yi5vcHRpb25zO3ZhciBhPXRoaXMudHlwZSxkPXRoaXMuY2hhcnQub3B0aW9ucy5wbG90T3B0aW9ucywKYz1CLmRlZmF1bHRPcHRpb25zLnBsb3RPcHRpb25zW2FdLmRhdGFHcm91cGluZyxnPXRoaXMudXNlQ29tbW9uRGF0YUdyb3VwaW5nJiZwO2lmKHJbYV18fGcpY3x8KGM9bihwLHJbYV0pKSxiLmRhdGFHcm91cGluZz1uKGcsYyxkLnNlcmllcyYmZC5zZXJpZXMuZGF0YUdyb3VwaW5nLGRbYV0uZGF0YUdyb3VwaW5nLHRoaXMudXNlck9wdGlvbnMuZGF0YUdyb3VwaW5nKX0pO3goaCwiYWZ0ZXJTZXRTY2FsZSIsZnVuY3Rpb24oKXt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuaGFzUHJvY2Vzc2VkPSExfSl9KTtoLnByb3RvdHlwZS5nZXRHcm91cFBpeGVsV2lkdGg9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnNlcmllcyxmPWIubGVuZ3RoLGQsYz0wLGc9ITEscjtmb3IoZD1mO2QtLTspKHI9YltkXS5vcHRpb25zLmRhdGFHcm91cGluZykmJihjPU1hdGgubWF4KGMsYShyLmdyb3VwUGl4ZWxXaWR0aCxwLmdyb3VwUGl4ZWxXaWR0aCkpKTtmb3IoZD1mO2QtLTspKHI9YltkXS5vcHRpb25zLmRhdGFHcm91cGluZykmJgpiW2RdLmhhc1Byb2Nlc3NlZCYmKGY9KGJbZF0ucHJvY2Vzc2VkWERhdGF8fGJbZF0uZGF0YSkubGVuZ3RoLGJbZF0uZ3JvdXBQaXhlbFdpZHRofHxmPnRoaXMuY2hhcnQucGxvdFNpemVYL2N8fGYmJnIuZm9yY2VkKSYmKGc9ITApO3JldHVybiBnP2M6MH07aC5wcm90b3R5cGUuc2V0RGF0YUdyb3VwaW5nPWZ1bmN0aW9uKGIsZCl7dmFyIGY7ZD1hKGQsITApO2J8fChiPXtmb3JjZWQ6ITEsdW5pdHM6bnVsbH0pO2lmKHRoaXMgaW5zdGFuY2VvZiBoKWZvcihmPXRoaXMuc2VyaWVzLmxlbmd0aDtmLS07KXRoaXMuc2VyaWVzW2ZdLnVwZGF0ZSh7ZGF0YUdyb3VwaW5nOmJ9LCExKTtlbHNlIHRoaXMuY2hhcnQub3B0aW9ucy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLmRhdGFHcm91cGluZz1ifSwhMSk7dGhpcy5vcmRpbmFsJiYodGhpcy5vcmRpbmFsLnNsb3BlPXZvaWQgMCk7ZCYmdGhpcy5jaGFydC5yZWRyYXcoKX07dS5kYXRhR3JvdXBpbmc9RDsiIjtyZXR1cm4gRH0pO0sobCwKInBhcnRzL09ITENTZXJpZXMuanMiLFtsWyJwYXJ0cy9HbG9iYWxzLmpzIl0sbFsicGFydHMvUG9pbnQuanMiXSxsWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24obCx1LEIpe0I9Qi5zZXJpZXNUeXBlO3ZhciB0PWwuc2VyaWVzVHlwZXM7Qigib2hsYyIsImNvbHVtbiIse2xpbmVXaWR0aDoxLHRvb2x0aXA6e3BvaW50Rm9ybWF0Oic8c3BhbiBzdHlsZT0iY29sb3I6e3BvaW50LmNvbG9yfSI+XHUyNWNmPC9zcGFuPiA8Yj4ge3Nlcmllcy5uYW1lfTwvYj48YnIvPk9wZW46IHtwb2ludC5vcGVufTxici8+SGlnaDoge3BvaW50LmhpZ2h9PGJyLz5Mb3c6IHtwb2ludC5sb3d9PGJyLz5DbG9zZToge3BvaW50LmNsb3NlfTxici8+J30sdGhyZXNob2xkOm51bGwsc3RhdGVzOntob3Zlcjp7bGluZVdpZHRoOjN9fSxzdGlja3lUcmFja2luZzohMH0se2RpcmVjdFRvdWNoOiExLHBvaW50QXJyYXlNYXA6WyJvcGVuIiwiaGlnaCIsImxvdyIsImNsb3NlIl0sdG9ZRGF0YTpmdW5jdGlvbihsKXtyZXR1cm5bbC5vcGVuLApsLmhpZ2gsbC5sb3csbC5jbG9zZV19LHBvaW50VmFsS2V5OiJjbG9zZSIscG9pbnRBdHRyVG9PcHRpb25zOntzdHJva2U6ImNvbG9yIiwic3Ryb2tlLXdpZHRoIjoibGluZVdpZHRoIn0saW5pdDpmdW5jdGlvbigpe3QuY29sdW1uLnByb3RvdHlwZS5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLm9wdGlvbnMuc3RhY2tpbmc9dm9pZCAwfSxwb2ludEF0dHJpYnM6ZnVuY3Rpb24obCxlKXtlPXQuY29sdW1uLnByb3RvdHlwZS5wb2ludEF0dHJpYnMuY2FsbCh0aGlzLGwsZSk7dmFyIHg9dGhpcy5vcHRpb25zO2RlbGV0ZSBlLmZpbGw7IWwub3B0aW9ucy5jb2xvciYmeC51cENvbG9yJiZsLm9wZW48bC5jbG9zZSYmKGUuc3Ryb2tlPXgudXBDb2xvcik7cmV0dXJuIGV9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBsPXRoaXMsZT1sLnlBeGlzLHg9ISFsLm1vZGlmeVZhbHVlLHE9WyJwbG90T3BlbiIsInBsb3RIaWdoIiwicGxvdExvdyIsInBsb3RDbG9zZSIsInlCb3R0b20iXTsKdC5jb2x1bW4ucHJvdG90eXBlLnRyYW5zbGF0ZS5hcHBseShsKTtsLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGMpe1tjLm9wZW4sYy5oaWdoLGMubG93LGMuY2xvc2UsYy5sb3ddLmZvckVhY2goZnVuY3Rpb24odix1KXtudWxsIT09diYmKHgmJih2PWwubW9kaWZ5VmFsdWUodikpLGNbcVt1XV09ZS50b1BpeGVscyh2LCEwKSl9KTtjLnRvb2x0aXBQb3NbMV09Yy5wbG90SGlnaCtlLnBvcy1sLmNoYXJ0LnBsb3RUb3B9KX0sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBsPXRoaXMsZT1sLmNoYXJ0LHg9ZnVuY3Rpb24oZSxjLGwpe3ZhciBxPWVbMF07ZT1lWzFdOyJudW1iZXIiPT09dHlwZW9mIHFbMl0mJihxWzJdPU1hdGgubWF4KGwrYyxxWzJdKSk7Im51bWJlciI9PT10eXBlb2YgZVsyXSYmKGVbMl09TWF0aC5taW4obC1jLGVbMl0pKX07bC5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihxKXt2YXIgYz1xLmdyYXBoaWMsdj0hYztpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBxLnBsb3RZKXtjfHwKKHEuZ3JhcGhpYz1jPWUucmVuZGVyZXIucGF0aCgpLmFkZChsLmdyb3VwKSk7ZS5zdHlsZWRNb2RlfHxjLmF0dHIobC5wb2ludEF0dHJpYnMocSxxLnNlbGVjdGVkJiYic2VsZWN0IikpO3ZhciB1PWMuc3Ryb2tlV2lkdGgoKTt2YXIgdD11JTIvMjt2YXIgQz1NYXRoLnJvdW5kKHEucGxvdFgpLXQ7dmFyIHo9TWF0aC5yb3VuZChxLnNoYXBlQXJncy53aWR0aC8yKTt2YXIgQT1bWyJNIixDLE1hdGgucm91bmQocS55Qm90dG9tKV0sWyJMIixDLE1hdGgucm91bmQocS5wbG90SGlnaCldXTtpZihudWxsIT09cS5vcGVuKXt2YXIgbj1NYXRoLnJvdW5kKHEucGxvdE9wZW4pK3Q7QS5wdXNoKFsiTSIsQyxuXSxbIkwiLEMteixuXSk7eChBLHUvMixuKX1udWxsIT09cS5jbG9zZSYmKG49TWF0aC5yb3VuZChxLnBsb3RDbG9zZSkrdCxBLnB1c2goWyJNIixDLG5dLFsiTCIsQyt6LG5dKSx4KEEsdS8yLG4pKTtjW3Y/ImF0dHIiOiJhbmltYXRlIl0oe2Q6QX0pLmFkZENsYXNzKHEuZ2V0Q2xhc3NOYW1lKCksCiEwKX19KX0sYW5pbWF0ZTpudWxsfSx7Z2V0Q2xhc3NOYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHUucHJvdG90eXBlLmdldENsYXNzTmFtZS5jYWxsKHRoaXMpKyh0aGlzLm9wZW48dGhpcy5jbG9zZT8iIGhpZ2hjaGFydHMtcG9pbnQtdXAiOiIgaGlnaGNoYXJ0cy1wb2ludC1kb3duIil9fSk7IiJ9KTtLKGwsInBhcnRzL0NhbmRsZXN0aWNrU2VyaWVzLmpzIixbbFsicGFydHMvR2xvYmFscy5qcyJdLGxbInBhcnRzL09wdGlvbnMuanMiXSxsWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24obCx1LEIpe3U9dS5kZWZhdWx0T3B0aW9uczt2YXIgdD1CLm1lcmdlO0I9Qi5zZXJpZXNUeXBlO3ZhciBFPWwuc2VyaWVzVHlwZXM7QigiY2FuZGxlc3RpY2siLCJvaGxjIix0KHUucGxvdE9wdGlvbnMuY29sdW1uLHtzdGF0ZXM6e2hvdmVyOntsaW5lV2lkdGg6Mn19LHRvb2x0aXA6dS5wbG90T3B0aW9ucy5vaGxjLnRvb2x0aXAsdGhyZXNob2xkOm51bGwsbGluZUNvbG9yOiIjMDAwMDAwIiwKbGluZVdpZHRoOjEsdXBDb2xvcjoiI2ZmZmZmZiIsc3RpY2t5VHJhY2tpbmc6ITB9KSx7cG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGUsbCl7dmFyIHE9RS5jb2x1bW4ucHJvdG90eXBlLnBvaW50QXR0cmlicy5jYWxsKHRoaXMsZSxsKSxjPXRoaXMub3B0aW9ucyx2PWUub3BlbjxlLmNsb3NlLHU9Yy5saW5lQ29sb3J8fHRoaXMuY29sb3I7cVsic3Ryb2tlLXdpZHRoIl09Yy5saW5lV2lkdGg7cS5maWxsPWUub3B0aW9ucy5jb2xvcnx8KHY/Yy51cENvbG9yfHx0aGlzLmNvbG9yOnRoaXMuY29sb3IpO3Euc3Ryb2tlPWUub3B0aW9ucy5saW5lQ29sb3J8fCh2P2MudXBMaW5lQ29sb3J8fHU6dSk7bCYmKGU9Yy5zdGF0ZXNbbF0scS5maWxsPWUuY29sb3J8fHEuZmlsbCxxLnN0cm9rZT1lLmxpbmVDb2xvcnx8cS5zdHJva2UscVsic3Ryb2tlLXdpZHRoIl09ZS5saW5lV2lkdGh8fHFbInN0cm9rZS13aWR0aCJdKTtyZXR1cm4gcX0sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbD1lLmNoYXJ0LApxPWUueUF4aXMucmV2ZXJzZWQ7ZS5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgdj1jLmdyYXBoaWMsdT0hdjtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBjLnBsb3RZKXt2fHwoYy5ncmFwaGljPXY9bC5yZW5kZXJlci5wYXRoKCkuYWRkKGUuZ3JvdXApKTtlLmNoYXJ0LnN0eWxlZE1vZGV8fHYuYXR0cihlLnBvaW50QXR0cmlicyhjLGMuc2VsZWN0ZWQmJiJzZWxlY3QiKSkuc2hhZG93KGUub3B0aW9ucy5zaGFkb3cpO3ZhciB4PXYuc3Ryb2tlV2lkdGgoKSUyLzI7dmFyIHQ9TWF0aC5yb3VuZChjLnBsb3RYKS14O3ZhciB6PWMucGxvdE9wZW47dmFyIEE9Yy5wbG90Q2xvc2U7dmFyIG49TWF0aC5taW4oeixBKTt6PU1hdGgubWF4KHosQSk7dmFyIGE9TWF0aC5yb3VuZChjLnNoYXBlQXJncy53aWR0aC8yKTtBPXE/eiE9PWMueUJvdHRvbTpNYXRoLnJvdW5kKG4pIT09TWF0aC5yb3VuZChjLnBsb3RIaWdoKTt2YXIgaD1xP01hdGgucm91bmQobikhPT1NYXRoLnJvdW5kKGMucGxvdEhpZ2gpOgp6IT09Yy55Qm90dG9tO249TWF0aC5yb3VuZChuKSt4O3o9TWF0aC5yb3VuZCh6KSt4O3g9W107eC5wdXNoKFsiTSIsdC1hLHpdLFsiTCIsdC1hLG5dLFsiTCIsdCthLG5dLFsiTCIsdCthLHpdLFsiWiJdLFsiTSIsdCxuXSxbIkwiLHQsQT9NYXRoLnJvdW5kKHE/Yy55Qm90dG9tOmMucGxvdEhpZ2gpOm5dLFsiTSIsdCx6XSxbIkwiLHQsaD9NYXRoLnJvdW5kKHE/Yy5wbG90SGlnaDpjLnlCb3R0b20pOnpdKTt2W3U/ImF0dHIiOiJhbmltYXRlIl0oe2Q6eH0pLmFkZENsYXNzKGMuZ2V0Q2xhc3NOYW1lKCksITApfX0pfX0pOyIifSk7SyhsLCJtaXhpbnMvb24tc2VyaWVzLmpzIixbbFsicGFydHMvR2xvYmFscy5qcyJdLGxbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihsLHUpe3ZhciBCPXUuZGVmaW5lZCx0PXUuc3RhYmxlU29ydCxFPWwuc2VyaWVzVHlwZXM7cmV0dXJue2dldFBsb3RCb3g6ZnVuY3Rpb24oKXtyZXR1cm4gbC5TZXJpZXMucHJvdG90eXBlLmdldFBsb3RCb3guY2FsbCh0aGlzLm9wdGlvbnMub25TZXJpZXMmJgp0aGlzLmNoYXJ0LmdldCh0aGlzLm9wdGlvbnMub25TZXJpZXMpfHx0aGlzKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7RS5jb2x1bW4ucHJvdG90eXBlLnRyYW5zbGF0ZS5hcHBseSh0aGlzKTt2YXIgZT10aGlzLGw9ZS5vcHRpb25zLHE9ZS5jaGFydCxjPWUucG9pbnRzLHY9Yy5sZW5ndGgtMSx1LEc9bC5vblNlcmllcztHPUcmJnEuZ2V0KEcpO2w9bC5vbktleXx8InkiO3ZhciBDPUcmJkcub3B0aW9ucy5zdGVwLHo9RyYmRy5wb2ludHMsQT16JiZ6Lmxlbmd0aCxuPXEuaW52ZXJ0ZWQsYT1lLnhBeGlzLGg9ZS55QXhpcyxnPTAsSTtpZihHJiZHLnZpc2libGUmJkEpe2c9KEcucG9pbnRYT2Zmc2V0fHwwKSsoRy5iYXJXfHwwKS8yO3E9Ry5jdXJyZW50RGF0YUdyb3VwaW5nO3ZhciBEPXpbQS0xXS54KyhxP3EudG90YWxSYW5nZTowKTt0KGMsZnVuY3Rpb24oYSxjKXtyZXR1cm4gYS54LWMueH0pO2ZvcihsPSJwbG90IitsWzBdLnRvVXBwZXJDYXNlKCkrbC5zdWJzdHIoMSk7QS0tJiZjW3ZdOyl7dmFyIG09CnpbQV07cT1jW3ZdO3EueT1tLnk7aWYobS54PD1xLngmJiJ1bmRlZmluZWQiIT09dHlwZW9mIG1bbF0pe2lmKHEueDw9RCYmKHEucGxvdFk9bVtsXSxtLng8cS54JiYhQyYmKEk9eltBKzFdKSYmInVuZGVmaW5lZCIhPT10eXBlb2YgSVtsXSkpe3ZhciBrPShxLngtbS54KS8oSS54LW0ueCk7cS5wbG90WSs9ayooSVtsXS1tW2xdKTtxLnkrPWsqKEkueS1tLnkpfXYtLTtBKys7aWYoMD52KWJyZWFrfX19Yy5mb3JFYWNoKGZ1bmN0aW9uKGQscCl7ZC5wbG90WCs9ZztpZigidW5kZWZpbmVkIj09PXR5cGVvZiBkLnBsb3RZfHxuKTA8PWQucGxvdFgmJmQucGxvdFg8PWEubGVuP24/KGQucGxvdFk9YS50cmFuc2xhdGUoZC54LDAsMSwwLDEpLGQucGxvdFg9QihkLnkpP2gudHJhbnNsYXRlKGQueSwwLDAsMCwxKTowKTpkLnBsb3RZPShhLm9wcG9zaXRlPzA6ZS55QXhpcy5sZW4pK2Eub2Zmc2V0OmQuc2hhcGVBcmdzPXt9O2lmKCh1PWNbcC0xXSkmJnUucGxvdFg9PT1kLnBsb3RYKXsidW5kZWZpbmVkIj09PQp0eXBlb2YgdS5zdGFja0luZGV4JiYodS5zdGFja0luZGV4PTApO3ZhciByPXUuc3RhY2tJbmRleCsxfWQuc3RhY2tJbmRleD1yfSk7dGhpcy5vblNlcmllcz1HfX19KTtLKGwsInBhcnRzL0ZsYWdzU2VyaWVzLmpzIixbbFsicGFydHMvR2xvYmFscy5qcyJdLGxbInBhcnRzL1NWR0VsZW1lbnQuanMiXSxsWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLGxbInBhcnRzL1V0aWxpdGllcy5qcyJdLGxbIm1peGlucy9vbi1zZXJpZXMuanMiXV0sZnVuY3Rpb24obCx1LEIsdCxFKXtmdW5jdGlvbiBlKGEpe2hbYSsicGluIl09ZnVuY3Rpb24oYyxnLGUsayxkKXt2YXIgcD1kJiZkLmFuY2hvclg7ZD1kJiZkLmFuY2hvclk7ImNpcmNsZSI9PT1hJiZrPmUmJihjLT1NYXRoLnJvdW5kKChrLWUpLzIpLGU9ayk7dmFyIHI9aFthXShjLGcsZSxrKTtpZihwJiZkKXt2YXIgdz1wOyJjaXJjbGUiPT09YT93PWMrZS8yOihjPXJbMF0sZT1yWzFdLCJNIj09PWNbMF0mJiJMIj09PWVbMF0mJih3PShjWzFdK2VbMV0pLwoyKSk7ci5wdXNoKFsiTSIsdyxnPmQ/ZzpnK2tdLFsiTCIscCxkXSk7cj1yLmNvbmNhdChoLmNpcmNsZShwLTEsZC0xLDIsMikpfXJldHVybiByfX12YXIgeD10LmFkZEV2ZW50LHE9dC5kZWZpbmVkLGM9dC5pc051bWJlcix2PXQubWVyZ2UsSj10Lm9iamVjdEVhY2gsRz10LnNlcmllc1R5cGUsQz10LndyYXA7dD1sLm5vb3A7dmFyIHo9bC5SZW5kZXJlcixBPWwuU2VyaWVzLG49bC5UcmFja2VyTWl4aW4sYT1sLlZNTFJlbmRlcmVyLGg9Qi5wcm90b3R5cGUuc3ltYm9scztHKCJmbGFncyIsImNvbHVtbiIse3BvaW50UmFuZ2U6MCxhbGxvd092ZXJsYXBYOiExLHNoYXBlOiJmbGFnIixzdGFja0Rpc3RhbmNlOjEyLHRleHRBbGlnbjoiY2VudGVyIix0b29sdGlwOntwb2ludEZvcm1hdDoie3BvaW50LnRleHR9PGJyLz4ifSx0aHJlc2hvbGQ6bnVsbCx5Oi0zMCxmaWxsQ29sb3I6IiNmZmZmZmYiLGxpbmVXaWR0aDoxLHN0YXRlczp7aG92ZXI6e2xpbmVDb2xvcjoiIzAwMDAwMCIsZmlsbENvbG9yOiIjY2NkNmViIn19LApzdHlsZTp7Zm9udFNpemU6IjExcHgiLGZvbnRXZWlnaHQ6ImJvbGQifX0se3NvcnRlZDohMSxub1NoYXJlZFRvb2x0aXA6ITAsYWxsb3dERzohMSx0YWtlT3JkaW5hbFBvc2l0aW9uOiExLHRyYWNrZXJHcm91cHM6WyJtYXJrZXJHcm91cCJdLGZvcmNlQ3JvcDohMCxpbml0OkEucHJvdG90eXBlLmluaXQscG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGEsYyl7dmFyIGc9dGhpcy5vcHRpb25zLGU9YSYmYS5jb2xvcnx8dGhpcy5jb2xvcixrPWcubGluZUNvbG9yLGQ9YSYmYS5saW5lV2lkdGg7YT1hJiZhLmZpbGxDb2xvcnx8Zy5maWxsQ29sb3I7YyYmKGE9Zy5zdGF0ZXNbY10uZmlsbENvbG9yLGs9Zy5zdGF0ZXNbY10ubGluZUNvbG9yLGQ9Zy5zdGF0ZXNbY10ubGluZVdpZHRoKTtyZXR1cm57ZmlsbDphfHxlLHN0cm9rZTprfHxlLCJzdHJva2Utd2lkdGgiOmR8fGcubGluZVdpZHRofHwwfX0sdHJhbnNsYXRlOkUudHJhbnNsYXRlLGdldFBsb3RCb3g6RS5nZXRQbG90Qm94LGRyYXdQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYT0KdGhpcy5wb2ludHMsYz10aGlzLmNoYXJ0LGU9Yy5yZW5kZXJlcixoPWMuaW52ZXJ0ZWQsaz10aGlzLm9wdGlvbnMsZD1rLnkscCxyPXRoaXMueUF4aXMsdz17fSxiPVtdO2ZvcihwPWEubGVuZ3RoO3AtLTspe3ZhciBmPWFbcF07dmFyIG49KGg/Zi5wbG90WTpmLnBsb3RYKT50aGlzLnhBeGlzLmxlbjt2YXIgSD1mLnBsb3RYO3ZhciBGPWYuc3RhY2tJbmRleDt2YXIgdD1mLm9wdGlvbnMuc2hhcGV8fGsuc2hhcGU7dmFyIHg9Zi5wbG90WTsidW5kZWZpbmVkIiE9PXR5cGVvZiB4JiYoeD1mLnBsb3RZK2QtKCJ1bmRlZmluZWQiIT09dHlwZW9mIEYmJkYqay5zdGFja0Rpc3RhbmNlKSk7Zi5hbmNob3JYPUY/dm9pZCAwOmYucGxvdFg7dmFyIHo9Rj92b2lkIDA6Zi5wbG90WTt2YXIgQT0iZmxhZyIhPT10O0Y9Zi5ncmFwaGljOyJ1bmRlZmluZWQiIT09dHlwZW9mIHgmJjA8PUgmJiFuPyhGfHwoRj1mLmdyYXBoaWM9ZS5sYWJlbCgiIixudWxsLG51bGwsdCxudWxsLG51bGwsay51c2VIVE1MKSwKYy5zdHlsZWRNb2RlfHxGLmF0dHIodGhpcy5wb2ludEF0dHJpYnMoZikpLmNzcyh2KGsuc3R5bGUsZi5zdHlsZSkpLEYuYXR0cih7YWxpZ246QT8iY2VudGVyIjoibGVmdCIsd2lkdGg6ay53aWR0aCxoZWlnaHQ6ay5oZWlnaHQsInRleHQtYWxpZ24iOmsudGV4dEFsaWdufSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcG9pbnQiKS5hZGQodGhpcy5tYXJrZXJHcm91cCksZi5ncmFwaGljLmRpdiYmKGYuZ3JhcGhpYy5kaXYucG9pbnQ9ZiksYy5zdHlsZWRNb2RlfHxGLnNoYWRvdyhrLnNoYWRvdyksRi5pc05ldz0hMCksMDxIJiYoSC09Ri5zdHJva2VXaWR0aCgpJTIpLHQ9e3k6eCxhbmNob3JZOnp9LGsuYWxsb3dPdmVybGFwWCYmKHQueD1ILHQuYW5jaG9yWD1mLmFuY2hvclgpLEYuYXR0cih7dGV4dDpmLm9wdGlvbnMudGl0bGV8fGsudGl0bGV8fCJBIn0pW0YuaXNOZXc/ImF0dHIiOiJhbmltYXRlIl0odCksay5hbGxvd092ZXJsYXBYfHwod1tmLnBsb3RYXT93W2YucGxvdFhdLnNpemU9Ck1hdGgubWF4KHdbZi5wbG90WF0uc2l6ZSxGLndpZHRoKTp3W2YucGxvdFhdPXthbGlnbjpBPy41OjAsc2l6ZTpGLndpZHRoLHRhcmdldDpILGFuY2hvclg6SH0pLGYudG9vbHRpcFBvcz1bSCx4K3IucG9zLWMucGxvdFRvcF0pOkYmJihmLmdyYXBoaWM9Ri5kZXN0cm95KCkpfWsuYWxsb3dPdmVybGFwWHx8KEoodyxmdW5jdGlvbihhKXthLnBsb3RYPWEuYW5jaG9yWDtiLnB1c2goYSl9KSxsLmRpc3RyaWJ1dGUoYixoP3IubGVuOnRoaXMueEF4aXMubGVuLDEwMCksYS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBhPWIuZ3JhcGhpYyYmd1tiLnBsb3RYXTthJiYoYi5ncmFwaGljW2IuZ3JhcGhpYy5pc05ldz8iYXR0ciI6ImFuaW1hdGUiXSh7eDphLnBvcythLmFsaWduKmEuc2l6ZSxhbmNob3JYOmIuYW5jaG9yWH0pLHEoYS5wb3MpP2IuZ3JhcGhpYy5pc05ldz0hMTooYi5ncmFwaGljLmF0dHIoe3g6LTk5OTksYW5jaG9yWDotOTk5OX0pLGIuZ3JhcGhpYy5pc05ldz0hMCkpfSkpO2sudXNlSFRNTCYmCkModGhpcy5tYXJrZXJHcm91cCwib24iLGZ1bmN0aW9uKGIpe3JldHVybiB1LnByb3RvdHlwZS5vbi5hcHBseShiLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0pfSxkcmF3VHJhY2tlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMucG9pbnRzO24uZHJhd1RyYWNrZXJQb2ludC5hcHBseSh0aGlzKTthLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGc9Yy5ncmFwaGljO2cmJngoZy5lbGVtZW50LCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7MDxjLnN0YWNrSW5kZXgmJiFjLnJhaXNlZCYmKGMuX3k9Zy55LGcuYXR0cih7eTpjLl95LTh9KSxjLnJhaXNlZD0hMCk7YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EhPT1jJiZhLnJhaXNlZCYmYS5ncmFwaGljJiYoYS5ncmFwaGljLmF0dHIoe3k6YS5feX0pLGEucmFpc2VkPSExKX0pfSl9KX0sYW5pbWF0ZTpmdW5jdGlvbihhKXthJiZ0aGlzLnNldENsaXAoKX0sc2V0Q2xpcDpmdW5jdGlvbigpe0EucHJvdG90eXBlLnNldENsaXAuYXBwbHkodGhpcywKYXJndW1lbnRzKTshMSE9PXRoaXMub3B0aW9ucy5jbGlwJiZ0aGlzLnNoYXJlZENsaXBLZXkmJnRoaXMubWFya2VyR3JvdXAuY2xpcCh0aGlzLmNoYXJ0W3RoaXMuc2hhcmVkQ2xpcEtleV0pfSxidWlsZEtEVHJlZTp0LGludmVydEdyb3Vwczp0fSx7aXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiBjKHRoaXMueSl8fCJ1bmRlZmluZWQiPT09dHlwZW9mIHRoaXMueX19KTtoLmZsYWc9ZnVuY3Rpb24oYSxjLGUsbCxrKXt2YXIgZD1rJiZrLmFuY2hvclh8fGE7az1rJiZrLmFuY2hvcll8fGM7dmFyIGc9aC5jaXJjbGUoZC0xLGstMSwyLDIpO2cucHVzaChbIk0iLGQsa10sWyJMIixhLGMrbF0sWyJMIixhLGNdLFsiTCIsYStlLGNdLFsiTCIsYStlLGMrbF0sWyJMIixhLGMrbF0sWyJaIl0pO3JldHVybiBnfTtlKCJjaXJjbGUiKTtlKCJzcXVhcmUiKTt6PT09YSYmWyJjaXJjbGVwaW4iLCJmbGFnIiwic3F1YXJlcGluIl0uZm9yRWFjaChmdW5jdGlvbihjKXthLnByb3RvdHlwZS5zeW1ib2xzW2NdPQpoW2NdfSk7IiJ9KTtLKGwsInBhcnRzL1JhbmdlU2VsZWN0b3IuanMiLFtsWyJwYXJ0cy9BeGlzLmpzIl0sbFsicGFydHMvQ2hhcnQuanMiXSxsWyJwYXJ0cy9HbG9iYWxzLmpzIl0sbFsicGFydHMvT3B0aW9ucy5qcyJdLGxbInBhcnRzL1NWR0VsZW1lbnQuanMiXSxsWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24obCx1LEIsdCxFLGUpe3ZhciB4PXQuZGVmYXVsdE9wdGlvbnMscT1lLmFkZEV2ZW50LGM9ZS5jcmVhdGVFbGVtZW50LHY9ZS5jc3MsSj1lLmRlZmluZWQsRz1lLmRlc3Ryb3lPYmplY3RQcm9wZXJ0aWVzLEM9ZS5kaXNjYXJkRWxlbWVudCx6PWUuZXh0ZW5kLEE9ZS5maXJlRXZlbnQsbj1lLmlzTnVtYmVyLGE9ZS5tZXJnZSxoPWUub2JqZWN0RWFjaCxnPWUucGljayxJPWUucEludCxEPWUuc3BsYXQ7eih4LHtyYW5nZVNlbGVjdG9yOnt2ZXJ0aWNhbEFsaWduOiJ0b3AiLGJ1dHRvblRoZW1lOnt3aWR0aDoyOCxoZWlnaHQ6MTgscGFkZGluZzoyLHpJbmRleDo3fSwKZmxvYXRpbmc6ITEseDowLHk6MCxoZWlnaHQ6dm9pZCAwLGlucHV0UG9zaXRpb246e2FsaWduOiJyaWdodCIseDowLHk6MH0sYnV0dG9uUG9zaXRpb246e2FsaWduOiJsZWZ0Iix4OjAseTowfSxsYWJlbFN0eWxlOntjb2xvcjoiIzY2NjY2NiJ9fX0pO3gubGFuZz1hKHgubGFuZyx7cmFuZ2VTZWxlY3Rvclpvb206Ilpvb20iLHJhbmdlU2VsZWN0b3JGcm9tOiJGcm9tIixyYW5nZVNlbGVjdG9yVG86IlRvIn0pO3ZhciBtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShhKXt0aGlzLmJ1dHRvbnM9dm9pZCAwO3RoaXMuYnV0dG9uT3B0aW9ucz1lLnByb3RvdHlwZS5kZWZhdWx0QnV0dG9uczt0aGlzLm9wdGlvbnM9dm9pZCAwO3RoaXMuY2hhcnQ9YTt0aGlzLmluaXQoYSl9ZS5wcm90b3R5cGUuY2xpY2tCdXR0b249ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmNoYXJ0LGU9dGhpcy5idXR0b25PcHRpb25zW2FdLGI9ZC54QXhpc1swXSxmPWQuc2Nyb2xsZXImJmQuc2Nyb2xsZXIuZ2V0VW5pb25FeHRyZW1lcygpfHwKYnx8e30scD1mLmRhdGFNaW4saz1mLmRhdGFNYXgsaD1iJiZNYXRoLnJvdW5kKE1hdGgubWluKGIubWF4LGcoayxiLm1heCkpKSxtPWUudHlwZTtmPWUuX3JhbmdlO3ZhciB2LHU9ZS5kYXRhR3JvdXBpbmc7aWYobnVsbCE9PXAmJm51bGwhPT1rKXtkLmZpeGVkUmFuZ2U9Zjt1JiYodGhpcy5mb3JjZWREYXRhR3JvdXBpbmc9ITAsbC5wcm90b3R5cGUuc2V0RGF0YUdyb3VwaW5nLmNhbGwoYnx8e2NoYXJ0OnRoaXMuY2hhcnR9LHUsITEpLHRoaXMuZnJvemVuU3RhdGVzPWUucHJlc2VydmVEYXRhR3JvdXBpbmcpO2lmKCJtb250aCI9PT1tfHwieWVhciI9PT1tKWlmKGIpe209e3JhbmdlOmUsbWF4OmgsY2hhcnQ6ZCxkYXRhTWluOnAsZGF0YU1heDprfTt2YXIgdD1iLm1pbkZyb21SYW5nZS5jYWxsKG0pO24obS5uZXdNYXgpJiYoaD1tLm5ld01heCl9ZWxzZSBmPWU7ZWxzZSBpZihmKXQ9TWF0aC5tYXgoaC1mLHApLGg9TWF0aC5taW4odCtmLGspO2Vsc2UgaWYoInl0ZCI9PT1tKWlmKGIpInVuZGVmaW5lZCI9PT0KdHlwZW9mIGsmJihwPU51bWJlci5NQVhfVkFMVUUsaz1OdW1iZXIuTUlOX1ZBTFVFLGQuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7Yj1iLnhEYXRhO3A9TWF0aC5taW4oYlswXSxwKTtrPU1hdGgubWF4KGJbYi5sZW5ndGgtMV0sayl9KSxjPSExKSxoPXRoaXMuZ2V0WVRERXh0cmVtZXMoayxwLGQudGltZS51c2VVVEMpLHQ9dj1oLm1pbixoPWgubWF4O2Vsc2V7dGhpcy5kZWZlcnJlZFlURENsaWNrPWE7cmV0dXJufWVsc2UiYWxsIj09PW0mJmImJih0PXAsaD1rKTt0Kz1lLl9vZmZzZXRNaW47aCs9ZS5fb2Zmc2V0TWF4O3RoaXMuc2V0U2VsZWN0ZWQoYSk7aWYoYiliLnNldEV4dHJlbWVzKHQsaCxnKGMsMSksbnVsbCx7dHJpZ2dlcjoicmFuZ2VTZWxlY3RvckJ1dHRvbiIscmFuZ2VTZWxlY3RvckJ1dHRvbjplfSk7ZWxzZXt2YXIgeD1EKGQub3B0aW9ucy54QXhpcylbMF07dmFyIHo9eC5yYW5nZTt4LnJhbmdlPWY7dmFyIEE9eC5taW47eC5taW49djtxKGQsImxvYWQiLGZ1bmN0aW9uKCl7eC5yYW5nZT0Kejt4Lm1pbj1BfSl9fX07ZS5wcm90b3R5cGUuc2V0U2VsZWN0ZWQ9ZnVuY3Rpb24oYSl7dGhpcy5zZWxlY3RlZD10aGlzLm9wdGlvbnMuc2VsZWN0ZWQ9YX07ZS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhKXt2YXIgYz10aGlzLGQ9YS5vcHRpb25zLnJhbmdlU2VsZWN0b3IsZT1kLmJ1dHRvbnN8fGMuZGVmYXVsdEJ1dHRvbnMuc2xpY2UoKSxiPWQuc2VsZWN0ZWQsZj1mdW5jdGlvbigpe3ZhciBiPWMubWluSW5wdXQsYT1jLm1heElucHV0O2ImJmIuYmx1ciYmQShiLCJibHVyIik7YSYmYS5ibHVyJiZBKGEsImJsdXIiKX07Yy5jaGFydD1hO2Mub3B0aW9ucz1kO2MuYnV0dG9ucz1bXTtjLmJ1dHRvbk9wdGlvbnM9ZTt0aGlzLnVuTW91c2VEb3duPXEoYS5jb250YWluZXIsIm1vdXNlZG93biIsZik7dGhpcy51blJlc2l6ZT1xKGEsInJlc2l6ZSIsZik7ZS5mb3JFYWNoKGMuY29tcHV0ZUJ1dHRvblJhbmdlKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBiJiZlW2JdJiZ0aGlzLmNsaWNrQnV0dG9uKGIsCiExKTtxKGEsImxvYWQiLGZ1bmN0aW9uKCl7YS54QXhpcyYmYS54QXhpc1swXSYmcShhLnhBeGlzWzBdLCJzZXRFeHRyZW1lcyIsZnVuY3Rpb24oYil7dGhpcy5tYXgtdGhpcy5taW4hPT1hLmZpeGVkUmFuZ2UmJiJyYW5nZVNlbGVjdG9yQnV0dG9uIiE9PWIudHJpZ2dlciYmInVwZGF0ZWREYXRhIiE9PWIudHJpZ2dlciYmYy5mb3JjZWREYXRhR3JvdXBpbmcmJiFjLmZyb3plblN0YXRlcyYmdGhpcy5zZXREYXRhR3JvdXBpbmcoITEsITEpfSl9KX07ZS5wcm90b3R5cGUudXBkYXRlQnV0dG9uU3RhdGVzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxjPXRoaXMuY2hhcnQsZT1jLnhBeGlzWzBdLGc9TWF0aC5yb3VuZChlLm1heC1lLm1pbiksYj0hZS5oYXNWaXNpYmxlU2VyaWVzLGY9Yy5zY3JvbGxlciYmYy5zY3JvbGxlci5nZXRVbmlvbkV4dHJlbWVzKCl8fGUsaz1mLmRhdGFNaW4saD1mLmRhdGFNYXg7Yz1hLmdldFlUREV4dHJlbWVzKGgsayxjLnRpbWUudXNlVVRDKTt2YXIgbD1jLm1pbiwKbT1jLm1heCxxPWEuc2VsZWN0ZWQsdj1uKHEpLHU9YS5vcHRpb25zLmFsbEJ1dHRvbnNFbmFibGVkLHQ9YS5idXR0b25zO2EuYnV0dG9uT3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGMsZil7dmFyIGQ9Yy5fcmFuZ2UscD1jLnR5cGUscj1jLmNvdW50fHwxLHc9dFtmXSxuPTAseT1jLl9vZmZzZXRNYXgtYy5fb2Zmc2V0TWluO2M9Zj09PXE7dmFyIHg9ZD5oLWssRj1kPGUubWluUmFuZ2Usej0hMSxIPSExO2Q9ZD09PWc7KCJtb250aCI9PT1wfHwieWVhciI9PT1wKSYmZyszNkU1Pj04NjRFNSp7bW9udGg6MjgseWVhcjozNjV9W3BdKnIteSYmZy0zNkU1PD04NjRFNSp7bW9udGg6MzEseWVhcjozNjZ9W3BdKnIreT9kPSEwOiJ5dGQiPT09cD8oZD1tLWwreT09PWcsej0hYyk6ImFsbCI9PT1wJiYoZD1lLm1heC1lLm1pbj49aC1rLEg9IWMmJnYmJmQpO3A9IXUmJih4fHxGfHxIfHxiKTtyPWMmJmR8fGQmJiF2JiYhenx8YyYmYS5mcm96ZW5TdGF0ZXM7cD9uPTM6ciYmKHY9ITAsbj0yKTt3LnN0YXRlIT09Cm4mJih3LnNldFN0YXRlKG4pLDA9PT1uJiZxPT09ZiYmYS5zZXRTZWxlY3RlZChudWxsKSl9KX07ZS5wcm90b3R5cGUuY29tcHV0ZUJ1dHRvblJhbmdlPWZ1bmN0aW9uKGEpe3ZhciBjPWEudHlwZSxkPWEuY291bnR8fDEsZT17bWlsbGlzZWNvbmQ6MSxzZWNvbmQ6MUUzLG1pbnV0ZTo2RTQsaG91cjozNkU1LGRheTo4NjRFNSx3ZWVrOjYwNDhFNX07aWYoZVtjXSlhLl9yYW5nZT1lW2NdKmQ7ZWxzZSBpZigibW9udGgiPT09Y3x8InllYXIiPT09YylhLl9yYW5nZT04NjRFNSp7bW9udGg6MzAseWVhcjozNjV9W2NdKmQ7YS5fb2Zmc2V0TWluPWcoYS5vZmZzZXRNaW4sMCk7YS5fb2Zmc2V0TWF4PWcoYS5vZmZzZXRNYXgsMCk7YS5fcmFuZ2UrPWEuX29mZnNldE1heC1hLl9vZmZzZXRNaW59O2UucHJvdG90eXBlLnNldElucHV0VmFsdWU9ZnVuY3Rpb24oYSxjKXt2YXIgZD10aGlzLmNoYXJ0Lm9wdGlvbnMucmFuZ2VTZWxlY3RvcixlPXRoaXMuY2hhcnQudGltZSxiPXRoaXNbYSsiSW5wdXQiXTsKSihjKSYmKGIucHJldmlvdXNWYWx1ZT1iLkhDVGltZSxiLkhDVGltZT1jKTtiLnZhbHVlPWUuZGF0ZUZvcm1hdChkLmlucHV0RWRpdERhdGVGb3JtYXR8fCIlWS0lbS0lZCIsYi5IQ1RpbWUpO3RoaXNbYSsiRGF0ZUJveCJdLmF0dHIoe3RleHQ6ZS5kYXRlRm9ybWF0KGQuaW5wdXREYXRlRm9ybWF0fHwiJWIgJWUsICVZIixiLkhDVGltZSl9KX07ZS5wcm90b3R5cGUuc2hvd0lucHV0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuaW5wdXRHcm91cCxkPXRoaXNbYSsiRGF0ZUJveCJdO3YodGhpc1thKyJJbnB1dCJdLHtsZWZ0OmMudHJhbnNsYXRlWCtkLngrInB4Iix0b3A6Yy50cmFuc2xhdGVZKyJweCIsd2lkdGg6ZC53aWR0aC0yKyJweCIsaGVpZ2h0OmQuaGVpZ2h0LTIrInB4Iixib3JkZXI6IjJweCBzb2xpZCBzaWx2ZXIifSl9O2UucHJvdG90eXBlLmhpZGVJbnB1dD1mdW5jdGlvbihhKXt2KHRoaXNbYSsiSW5wdXQiXSx7Ym9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgifSk7CnRoaXMuc2V0SW5wdXRWYWx1ZShhKX07ZS5wcm90b3R5cGUuZHJhd0lucHV0PWZ1bmN0aW9uKGQpe2Z1bmN0aW9uIGUoKXt2YXIgYj1tLnZhbHVlLGE9KGguaW5wdXREYXRlUGFyc2VyfHxEYXRlLnBhcnNlKShiKSxjPWsueEF4aXNbMF0sZj1rLnNjcm9sbGVyJiZrLnNjcm9sbGVyLnhBeGlzP2suc2Nyb2xsZXIueEF4aXM6YyxkPWYuZGF0YU1pbjtmPWYuZGF0YU1heDthIT09bS5wcmV2aW91c1ZhbHVlJiYobS5wcmV2aW91c1ZhbHVlPWEsbihhKXx8KGE9Yi5zcGxpdCgiLSIpLGE9RGF0ZS5VVEMoSShhWzBdKSxJKGFbMV0pLTEsSShhWzJdKSkpLG4oYSkmJihrLnRpbWUudXNlVVRDfHwoYSs9NkU0KihuZXcgRGF0ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKSkscT9hPmcubWF4SW5wdXQuSENUaW1lP2E9dm9pZCAwOmE8ZCYmKGE9ZCk6YTxnLm1pbklucHV0LkhDVGltZT9hPXZvaWQgMDphPmYmJihhPWYpLCJ1bmRlZmluZWQiIT09dHlwZW9mIGEmJmMuc2V0RXh0cmVtZXMocT9hOmMubWluLApxP2MubWF4OmEsdm9pZCAwLHZvaWQgMCx7dHJpZ2dlcjoicmFuZ2VTZWxlY3RvcklucHV0In0pKSl9dmFyIGc9dGhpcyxrPWcuY2hhcnQsYj1rLnJlbmRlcmVyLnN0eWxlfHx7fSxmPWsucmVuZGVyZXIsaD1rLm9wdGlvbnMucmFuZ2VTZWxlY3RvcixsPWcuZGl2LHE9Im1pbiI9PT1kLG0sdSx0PXRoaXMuaW5wdXRHcm91cDt0aGlzW2QrIkxhYmVsIl09dT1mLmxhYmVsKHgubGFuZ1txPyJyYW5nZVNlbGVjdG9yRnJvbSI6InJhbmdlU2VsZWN0b3JUbyJdLHRoaXMuaW5wdXRHcm91cC5vZmZzZXQpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXJhbmdlLWxhYmVsIikuYXR0cih7cGFkZGluZzoyfSkuYWRkKHQpO3Qub2Zmc2V0Kz11LndpZHRoKzU7dGhpc1tkKyJEYXRlQm94Il09Zj1mLmxhYmVsKCIiLHQub2Zmc2V0KS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1yYW5nZS1pbnB1dCIpLmF0dHIoe3BhZGRpbmc6Mix3aWR0aDpoLmlucHV0Qm94V2lkdGh8fDkwLGhlaWdodDpoLmlucHV0Qm94SGVpZ2h0fHwKMTcsInRleHQtYWxpZ24iOiJjZW50ZXIifSkub24oImNsaWNrIixmdW5jdGlvbigpe2cuc2hvd0lucHV0KGQpO2dbZCsiSW5wdXQiXS5mb2N1cygpfSk7ay5zdHlsZWRNb2RlfHxmLmF0dHIoe3N0cm9rZTpoLmlucHV0Qm94Qm9yZGVyQ29sb3J8fCIjY2NjY2NjIiwic3Ryb2tlLXdpZHRoIjoxfSk7Zi5hZGQodCk7dC5vZmZzZXQrPWYud2lkdGgrKHE/MTA6MCk7dGhpc1tkKyJJbnB1dCJdPW09YygiaW5wdXQiLHtuYW1lOmQsY2xhc3NOYW1lOiJoaWdoY2hhcnRzLXJhbmdlLXNlbGVjdG9yIix0eXBlOiJ0ZXh0In0se3RvcDprLnBsb3RUb3ArInB4In0sbCk7ay5zdHlsZWRNb2RlfHwodS5jc3MoYShiLGgubGFiZWxTdHlsZSkpLGYuY3NzKGEoe2NvbG9yOiIjMzMzMzMzIn0sYixoLmlucHV0U3R5bGUpKSx2KG0seih7cG9zaXRpb246ImFic29sdXRlIixib3JkZXI6MCx3aWR0aDoiMXB4IixoZWlnaHQ6IjFweCIscGFkZGluZzowLHRleHRBbGlnbjoiY2VudGVyIixmb250U2l6ZTpiLmZvbnRTaXplLApmb250RmFtaWx5OmIuZm9udEZhbWlseSx0b3A6Ii05OTk5ZW0ifSxoLmlucHV0U3R5bGUpKSk7bS5vbmZvY3VzPWZ1bmN0aW9uKCl7Zy5zaG93SW5wdXQoZCl9O20ub25ibHVyPWZ1bmN0aW9uKCl7bT09PUIuZG9jLmFjdGl2ZUVsZW1lbnQmJmUoKTtnLmhpZGVJbnB1dChkKTttLmJsdXIoKX07bS5vbmNoYW5nZT1lO20ub25rZXlwcmVzcz1mdW5jdGlvbihhKXsxMz09PWEua2V5Q29kZSYmZSgpfX07ZS5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LGM9YS5vcHRpb25zLnJhbmdlU2VsZWN0b3I7YT0idG9wIj09PWMudmVydGljYWxBbGlnbj9hLnBsb3RUb3AtYS5heGlzT2Zmc2V0WzBdOjA7cmV0dXJue2J1dHRvblRvcDphK2MuYnV0dG9uUG9zaXRpb24ueSxpbnB1dFRvcDphK2MuaW5wdXRQb3NpdGlvbi55LTEwfX07ZS5wcm90b3R5cGUuZ2V0WVRERXh0cmVtZXM9ZnVuY3Rpb24oYSxjLGUpe3ZhciBkPXRoaXMuY2hhcnQudGltZSxiPW5ldyBkLkRhdGUoYSksCmY9ZC5nZXQoIkZ1bGxZZWFyIixiKTtlPWU/ZC5EYXRlLlVUQyhmLDAsMSk6K25ldyBkLkRhdGUoZiwwLDEpO2M9TWF0aC5tYXgoY3x8MCxlKTtiPWIuZ2V0VGltZSgpO3JldHVybnttYXg6TWF0aC5taW4oYXx8YixiKSxtaW46Y319O2UucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihhLGUpe3ZhciBkPXRoaXMscD1kLmNoYXJ0LGI9cC5yZW5kZXJlcixmPXAuY29udGFpbmVyLGs9cC5vcHRpb25zLGg9ay5leHBvcnRpbmcmJiExIT09ay5leHBvcnRpbmcuZW5hYmxlZCYmay5uYXZpZ2F0aW9uJiZrLm5hdmlnYXRpb24uYnV0dG9uT3B0aW9ucyxsPXgubGFuZyxuPWQuZGl2LG09ay5yYW5nZVNlbGVjdG9yLHE9ZyhrLmNoYXJ0LnN0eWxlJiZrLmNoYXJ0LnN0eWxlLnpJbmRleCwwKSsxO2s9bS5mbG9hdGluZzt2YXIgdj1kLmJ1dHRvbnM7bj1kLmlucHV0R3JvdXA7dmFyIHU9bS5idXR0b25UaGVtZSx0PW0uYnV0dG9uUG9zaXRpb24sej1tLmlucHV0UG9zaXRpb24sQT1tLmlucHV0RW5hYmxlZCwKQj11JiZ1LnN0YXRlcyxDPXAucGxvdExlZnQsRD1kLmJ1dHRvbkdyb3VwLEUsRz1kLm9wdGlvbnMudmVydGljYWxBbGlnbixJPXAubGVnZW5kLEo9SSYmSS5vcHRpb25zLEs9dC55LE49ei55LE89cC5oYXNMb2FkZWQsUD1PPyJhbmltYXRlIjoiYXR0ciIsTT0wLEw9MDtpZighMSE9PW0uZW5hYmxlZCl7ZC5yZW5kZXJlZHx8KGQuZ3JvdXA9RT1iLmcoInJhbmdlLXNlbGVjdG9yLWdyb3VwIikuYXR0cih7ekluZGV4Ojd9KS5hZGQoKSxkLmJ1dHRvbkdyb3VwPUQ9Yi5nKCJyYW5nZS1zZWxlY3Rvci1idXR0b25zIikuYWRkKEUpLGQuem9vbVRleHQ9Yi50ZXh0KGwucmFuZ2VTZWxlY3Rvclpvb20sMCwxNSkuYWRkKEQpLHAuc3R5bGVkTW9kZXx8KGQuem9vbVRleHQuY3NzKG0ubGFiZWxTdHlsZSksdVsic3Ryb2tlLXdpZHRoIl09Zyh1WyJzdHJva2Utd2lkdGgiXSwwKSksZC5idXR0b25PcHRpb25zLmZvckVhY2goZnVuY3Rpb24oYSxjKXt2W2NdPWIuYnV0dG9uKGEudGV4dCwwLDAsZnVuY3Rpb24oYil7dmFyIGY9CmEuZXZlbnRzJiZhLmV2ZW50cy5jbGljayxlO2YmJihlPWYuY2FsbChhLGIpKTshMSE9PWUmJmQuY2xpY2tCdXR0b24oYyk7ZC5pc0FjdGl2ZT0hMH0sdSxCJiZCLmhvdmVyLEImJkIuc2VsZWN0LEImJkIuZGlzYWJsZWQpLmF0dHIoeyJ0ZXh0LWFsaWduIjoiY2VudGVyIn0pLmFkZChEKX0pLCExIT09QSYmKGQuZGl2PW49YygiZGl2IixudWxsLHtwb3NpdGlvbjoicmVsYXRpdmUiLGhlaWdodDowLHpJbmRleDpxfSksZi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShuLGYpLGQuaW5wdXRHcm91cD1uPWIuZygiaW5wdXQtZ3JvdXAiKS5hZGQoRSksbi5vZmZzZXQ9MCxkLmRyYXdJbnB1dCgibWluIiksZC5kcmF3SW5wdXQoIm1heCIpKSk7ZC56b29tVGV4dFtQXSh7eDpnKEMrdC54LEMpfSk7dmFyIFE9ZyhDK3QueCxDKStkLnpvb21UZXh0LmdldEJCb3goKS53aWR0aCs1O2QuYnV0dG9uT3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7dltiXVtQXSh7eDpRfSk7USs9dltiXS53aWR0aCsKZyhtLmJ1dHRvblNwYWNpbmcsNSl9KTtDPXAucGxvdExlZnQtcC5zcGFjaW5nWzNdO2QudXBkYXRlQnV0dG9uU3RhdGVzKCk7aCYmdGhpcy50aXRsZUNvbGxpc2lvbihwKSYmInRvcCI9PT1HJiYicmlnaHQiPT09dC5hbGlnbiYmdC55K0QuZ2V0QkJveCgpLmhlaWdodC0xMjwoaC55fHwwKStoLmhlaWdodCYmKE09LTQwKTtmPXQueC1wLnNwYWNpbmdbM107InJpZ2h0Ij09PXQuYWxpZ24/Zis9TS1DOiJjZW50ZXIiPT09dC5hbGlnbiYmKGYtPUMvMik7RC5hbGlnbih7eTp0Lnksd2lkdGg6RC5nZXRCQm94KCkud2lkdGgsYWxpZ246dC5hbGlnbix4OmZ9LCEwLHAuc3BhY2luZ0JveCk7ZC5ncm91cC5wbGFjZWQ9TztkLmJ1dHRvbkdyb3VwLnBsYWNlZD1POyExIT09QSYmKE09aCYmdGhpcy50aXRsZUNvbGxpc2lvbihwKSYmInRvcCI9PT1HJiYicmlnaHQiPT09ei5hbGlnbiYmei55LW4uZ2V0QkJveCgpLmhlaWdodC0xMjwoaC55fHwwKStoLmhlaWdodCtwLnNwYWNpbmdbMF0/LTQwOjAsCiJsZWZ0Ij09PXouYWxpZ24/Zj1DOiJyaWdodCI9PT16LmFsaWduJiYoZj0tTWF0aC5tYXgocC5heGlzT2Zmc2V0WzFdLC1NKSksbi5hbGlnbih7eTp6Lnksd2lkdGg6bi5nZXRCQm94KCkud2lkdGgsYWxpZ246ei5hbGlnbix4OnoueCtmLTJ9LCEwLHAuc3BhY2luZ0JveCksaD1uLmFsaWduQXR0ci50cmFuc2xhdGVYK24uYWxpZ25PcHRpb25zLngtTStuLmdldEJCb3goKS54KzIsZj1uLmFsaWduT3B0aW9ucy53aWR0aCxsPUQuYWxpZ25BdHRyLnRyYW5zbGF0ZVgrRC5nZXRCQm94KCkueCxDPUQuZ2V0QkJveCgpLndpZHRoKzIwLCh6LmFsaWduPT09dC5hbGlnbnx8bCtDPmgmJmgrZj5sJiZLPE4rbi5nZXRCQm94KCkuaGVpZ2h0KSYmbi5hdHRyKHt0cmFuc2xhdGVYOm4uYWxpZ25BdHRyLnRyYW5zbGF0ZVgrKHAuYXhpc09mZnNldFsxXT49LU0/MDotTSksdHJhbnNsYXRlWTpuLmFsaWduQXR0ci50cmFuc2xhdGVZK0QuZ2V0QkJveCgpLmhlaWdodCsxMH0pLGQuc2V0SW5wdXRWYWx1ZSgibWluIiwKYSksZC5zZXRJbnB1dFZhbHVlKCJtYXgiLGUpLGQuaW5wdXRHcm91cC5wbGFjZWQ9Tyk7ZC5ncm91cC5hbGlnbih7dmVydGljYWxBbGlnbjpHfSwhMCxwLnNwYWNpbmdCb3gpO2E9ZC5ncm91cC5nZXRCQm94KCkuaGVpZ2h0KzIwO2U9ZC5ncm91cC5hbGlnbkF0dHIudHJhbnNsYXRlWTsiYm90dG9tIj09PUcmJihJPUomJiJib3R0b20iPT09Si52ZXJ0aWNhbEFsaWduJiZKLmVuYWJsZWQmJiFKLmZsb2F0aW5nP0kubGVnZW5kSGVpZ2h0K2coSi5tYXJnaW4sMTApOjAsYT1hK0ktMjAsTD1lLWEtKGs/MDptLnkpLShwLnRpdGxlT2Zmc2V0P3AudGl0bGVPZmZzZXRbMl06MCktMTApO2lmKCJ0b3AiPT09RylrJiYoTD0wKSxwLnRpdGxlT2Zmc2V0JiZwLnRpdGxlT2Zmc2V0WzBdJiYoTD1wLnRpdGxlT2Zmc2V0WzBdKSxMKz1wLm1hcmdpblswXS1wLnNwYWNpbmdbMF18fDA7ZWxzZSBpZigibWlkZGxlIj09PUcpaWYoTj09PUspTD0wPk4/ZSt2b2lkIDA6ZTtlbHNlIGlmKE58fEspTD0wPk58fAowPks/TC1NYXRoLm1pbihOLEspOmUtYStOYU47ZC5ncm91cC50cmFuc2xhdGUobS54LG0ueStNYXRoLmZsb29yKEwpKTshMSE9PUEmJihkLm1pbklucHV0LnN0eWxlLm1hcmdpblRvcD1kLmdyb3VwLnRyYW5zbGF0ZVkrInB4IixkLm1heElucHV0LnN0eWxlLm1hcmdpblRvcD1kLmdyb3VwLnRyYW5zbGF0ZVkrInB4Iik7ZC5yZW5kZXJlZD0hMH19O2UucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucyxjPXRoaXMuZ3JvdXAsZT1hLnksZz1hLmJ1dHRvblBvc2l0aW9uLnksYj1hLmlucHV0UG9zaXRpb24ueTtpZihhLmhlaWdodClyZXR1cm4gYS5oZWlnaHQ7YT1jP2MuZ2V0QkJveCghMCkuaGVpZ2h0KzEzK2U6MDtjPU1hdGgubWluKGIsZyk7aWYoMD5iJiYwPmd8fDA8YiYmMDxnKWErPU1hdGguYWJzKGMpO3JldHVybiBhfTtlLnByb3RvdHlwZS50aXRsZUNvbGxpc2lvbj1mdW5jdGlvbihhKXtyZXR1cm4hKGEub3B0aW9ucy50aXRsZS50ZXh0fHwKYS5vcHRpb25zLnN1YnRpdGxlLnRleHQpfTtlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYyl7dmFyIGQ9dGhpcy5jaGFydDthKCEwLGQub3B0aW9ucy5yYW5nZVNlbGVjdG9yLGMpO3RoaXMuZGVzdHJveSgpO3RoaXMuaW5pdChkKTtkLnJhbmdlU2VsZWN0b3IucmVuZGVyKCl9O2UucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS5taW5JbnB1dCxnPWEubWF4SW5wdXQ7YS51bk1vdXNlRG93bigpO2EudW5SZXNpemUoKTtHKGEuYnV0dG9ucyk7YyYmKGMub25mb2N1cz1jLm9uYmx1cj1jLm9uY2hhbmdlPW51bGwpO2cmJihnLm9uZm9jdXM9Zy5vbmJsdXI9Zy5vbmNoYW5nZT1udWxsKTtoKGEsZnVuY3Rpb24oYyxiKXtjJiYiY2hhcnQiIT09YiYmKGMgaW5zdGFuY2VvZiBFP2MuZGVzdHJveSgpOmMgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTEVsZW1lbnQmJkMoYykpO2MhPT1lLnByb3RvdHlwZVtiXSYmKGFbYl09bnVsbCl9LHRoaXMpfTtyZXR1cm4gZX0oKTsKbS5wcm90b3R5cGUuZGVmYXVsdEJ1dHRvbnM9W3t0eXBlOiJtb250aCIsY291bnQ6MSx0ZXh0OiIxbSJ9LHt0eXBlOiJtb250aCIsY291bnQ6Myx0ZXh0OiIzbSJ9LHt0eXBlOiJtb250aCIsY291bnQ6Nix0ZXh0OiI2bSJ9LHt0eXBlOiJ5dGQiLHRleHQ6IllURCJ9LHt0eXBlOiJ5ZWFyIixjb3VudDoxLHRleHQ6IjF5In0se3R5cGU6ImFsbCIsdGV4dDoiQWxsIn1dO2wucHJvdG90eXBlLm1pbkZyb21SYW5nZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmFuZ2UsYz1hLnR5cGUsZT10aGlzLm1heCxoPXRoaXMuY2hhcnQudGltZSxsPWZ1bmN0aW9uKGEsYil7dmFyIGY9InllYXIiPT09Yz8iRnVsbFllYXIiOiJNb250aCIsZD1uZXcgaC5EYXRlKGEpLGU9aC5nZXQoZixkKTtoLnNldChmLGQsZStiKTtlPT09aC5nZXQoZixkKSYmaC5zZXQoIkRhdGUiLGQsMCk7cmV0dXJuIGQuZ2V0VGltZSgpLWF9O2lmKG4oYSkpe3ZhciBiPWUtYTt2YXIgZj1hfWVsc2UgYj1lK2woZSwtYS5jb3VudCksCnRoaXMuY2hhcnQmJih0aGlzLmNoYXJ0LmZpeGVkUmFuZ2U9ZS1iKTt2YXIgbT1nKHRoaXMuZGF0YU1pbixOdW1iZXIuTUlOX1ZBTFVFKTtuKGIpfHwoYj1tKTtiPD1tJiYoYj1tLCJ1bmRlZmluZWQiPT09dHlwZW9mIGYmJihmPWwoYixhLmNvdW50KSksdGhpcy5uZXdNYXg9TWF0aC5taW4oYitmLHRoaXMuZGF0YU1heCkpO24oZSl8fChiPXZvaWQgMCk7cmV0dXJuIGJ9O0IuUmFuZ2VTZWxlY3Rvcnx8KHEodSwiYWZ0ZXJHZXRDb250YWluZXIiLGZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnJhbmdlU2VsZWN0b3IuZW5hYmxlZCYmKHRoaXMucmFuZ2VTZWxlY3Rvcj1uZXcgbSh0aGlzKSl9KSxxKHUsImJlZm9yZVJlbmRlciIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmF4ZXMsYz10aGlzLnJhbmdlU2VsZWN0b3I7YyYmKG4oYy5kZWZlcnJlZFlURENsaWNrKSYmKGMuY2xpY2tCdXR0b24oYy5kZWZlcnJlZFlURENsaWNrKSxkZWxldGUgYy5kZWZlcnJlZFlURENsaWNrKSxhLmZvckVhY2goZnVuY3Rpb24oYSl7YS51cGRhdGVOYW1lcygpOwphLnNldFNjYWxlKCl9KSx0aGlzLmdldEF4aXNNYXJnaW5zKCksYy5yZW5kZXIoKSxhPWMub3B0aW9ucy52ZXJ0aWNhbEFsaWduLGMub3B0aW9ucy5mbG9hdGluZ3x8KCJib3R0b20iPT09YT90aGlzLmV4dHJhQm90dG9tTWFyZ2luPSEwOiJtaWRkbGUiIT09YSYmKHRoaXMuZXh0cmFUb3BNYXJnaW49ITApKSl9KSxxKHUsInVwZGF0ZSIsZnVuY3Rpb24oYSl7dmFyIGM9YS5vcHRpb25zLnJhbmdlU2VsZWN0b3I7YT10aGlzLnJhbmdlU2VsZWN0b3I7dmFyIGU9dGhpcy5leHRyYUJvdHRvbU1hcmdpbixnPXRoaXMuZXh0cmFUb3BNYXJnaW47YyYmYy5lbmFibGVkJiYhSihhKSYmKHRoaXMub3B0aW9ucy5yYW5nZVNlbGVjdG9yLmVuYWJsZWQ9ITAsdGhpcy5yYW5nZVNlbGVjdG9yPW5ldyBtKHRoaXMpKTt0aGlzLmV4dHJhVG9wTWFyZ2luPXRoaXMuZXh0cmFCb3R0b21NYXJnaW49ITE7YSYmKGEucmVuZGVyKCksYz1jJiZjLnZlcnRpY2FsQWxpZ258fGEub3B0aW9ucyYmYS5vcHRpb25zLnZlcnRpY2FsQWxpZ24sCmEub3B0aW9ucy5mbG9hdGluZ3x8KCJib3R0b20iPT09Yz90aGlzLmV4dHJhQm90dG9tTWFyZ2luPSEwOiJtaWRkbGUiIT09YyYmKHRoaXMuZXh0cmFUb3BNYXJnaW49ITApKSx0aGlzLmV4dHJhQm90dG9tTWFyZ2luIT09ZXx8dGhpcy5leHRyYVRvcE1hcmdpbiE9PWcpJiYodGhpcy5pc0RpcnR5Qm94PSEwKX0pLHEodSwicmVuZGVyIixmdW5jdGlvbigpe3ZhciBhPXRoaXMucmFuZ2VTZWxlY3RvcjthJiYhYS5vcHRpb25zLmZsb2F0aW5nJiYoYS5yZW5kZXIoKSxhPWEub3B0aW9ucy52ZXJ0aWNhbEFsaWduLCJib3R0b20iPT09YT90aGlzLmV4dHJhQm90dG9tTWFyZ2luPSEwOiJtaWRkbGUiIT09YSYmKHRoaXMuZXh0cmFUb3BNYXJnaW49ITApKX0pLHEodSwiZ2V0TWFyZ2lucyIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJhbmdlU2VsZWN0b3I7YSYmKGE9YS5nZXRIZWlnaHQoKSx0aGlzLmV4dHJhVG9wTWFyZ2luJiYodGhpcy5wbG90VG9wKz1hKSx0aGlzLmV4dHJhQm90dG9tTWFyZ2luJiYKKHRoaXMubWFyZ2luQm90dG9tKz1hKSl9KSx1LnByb3RvdHlwZS5jYWxsYmFja3MucHVzaChmdW5jdGlvbihjKXtmdW5jdGlvbiBkKCl7ZT1jLnhBeGlzWzBdLmdldEV4dHJlbWVzKCk7aD1jLmxlZ2VuZDtmPW51bGw9PT1nfHx2b2lkIDA9PT1nP3ZvaWQgMDpnLm9wdGlvbnMudmVydGljYWxBbGlnbjtuKGUubWluKSYmZy5yZW5kZXIoZS5taW4sZS5tYXgpO2cmJmguZGlzcGxheSYmInRvcCI9PT1mJiZmPT09aC5vcHRpb25zLnZlcnRpY2FsQWxpZ24mJihiPWEoYy5zcGFjaW5nQm94KSxiLnk9InZlcnRpY2FsIj09PWgub3B0aW9ucy5sYXlvdXQ/Yy5wbG90VG9wOmIueStnLmdldEhlaWdodCgpLGguZ3JvdXAucGxhY2VkPSExLGguYWxpZ24oYikpfXZhciBlLGc9Yy5yYW5nZVNlbGVjdG9yLGgsYixmO2lmKGcpe3ZhciBrPXEoYy54QXhpc1swXSwiYWZ0ZXJTZXRFeHRyZW1lcyIsZnVuY3Rpb24oYSl7Zy5yZW5kZXIoYS5taW4sYS5tYXgpfSk7dmFyIGw9cShjLCJyZWRyYXciLGQpO2QoKX1xKGMsCiJkZXN0cm95IixmdW5jdGlvbigpe2cmJihsKCksaygpKX0pfSksQi5SYW5nZVNlbGVjdG9yPW0pO3JldHVybiBCLlJhbmdlU2VsZWN0b3J9KTtLKGwsInBhcnRzL1N0b2NrQ2hhcnQuanMiLFtsWyJwYXJ0cy9BeGlzLmpzIl0sbFsicGFydHMvQ2hhcnQuanMiXSxsWyJwYXJ0cy9HbG9iYWxzLmpzIl0sbFsicGFydHMvUG9pbnQuanMiXSxsWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLGxbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihsLHUsQix0LEUsZSl7dmFyIHg9ZS5hZGRFdmVudCxxPWUuYXJyYXlNYXgsYz1lLmFycmF5TWluLHY9ZS5jbGFtcCxKPWUuZGVmaW5lZCxHPWUuZXh0ZW5kLEM9ZS5maW5kLHo9ZS5mb3JtYXQsQT1lLmdldE9wdGlvbnMsbj1lLmlzTnVtYmVyLGE9ZS5pc1N0cmluZyxoPWUubWVyZ2UsZz1lLnBpY2ssST1lLnNwbGF0O2U9Qi5TZXJpZXM7dmFyIEQ9ZS5wcm90b3R5cGUsbT1ELmluaXQsaz1ELnByb2Nlc3NEYXRhLGQ9dC5wcm90b3R5cGUudG9vbHRpcEZvcm1hdHRlcjsKQi5TdG9ja0NoYXJ0PUIuc3RvY2tDaGFydD1mdW5jdGlvbihjLGQsZSl7dmFyIGI9YShjKXx8Yy5ub2RlTmFtZSxmPWFyZ3VtZW50c1tiPzE6MF0scD1mLGw9Zi5zZXJpZXMsaz1BKCksbixtPWcoZi5uYXZpZ2F0b3ImJmYubmF2aWdhdG9yLmVuYWJsZWQsay5uYXZpZ2F0b3IuZW5hYmxlZCwhMCk7Zi54QXhpcz1JKGYueEF4aXN8fHt9KS5tYXAoZnVuY3Rpb24oYSxiKXtyZXR1cm4gaCh7bWluUGFkZGluZzowLG1heFBhZGRpbmc6MCxvdmVyc2Nyb2xsOjAsb3JkaW5hbDohMCx0aXRsZTp7dGV4dDpudWxsfSxsYWJlbHM6e292ZXJmbG93OiJqdXN0aWZ5In0sc2hvd0xhc3RMYWJlbDohMH0say54QXhpcyxrLnhBeGlzJiZrLnhBeGlzW2JdLGEse3R5cGU6ImRhdGV0aW1lIixjYXRlZ29yaWVzOm51bGx9LG0/e3N0YXJ0T25UaWNrOiExLGVuZE9uVGljazohMX06bnVsbCl9KTtmLnlBeGlzPUkoZi55QXhpc3x8e30pLm1hcChmdW5jdGlvbihhLGIpe249ZyhhLm9wcG9zaXRlLCEwKTtyZXR1cm4gaCh7bGFiZWxzOnt5Oi0yfSwKb3Bwb3NpdGU6bixzaG93TGFzdExhYmVsOiEoIWEuY2F0ZWdvcmllcyYmImNhdGVnb3J5IiE9PWEudHlwZSksdGl0bGU6e3RleHQ6bnVsbH19LGsueUF4aXMsay55QXhpcyYmay55QXhpc1tiXSxhKX0pO2Yuc2VyaWVzPW51bGw7Zj1oKHtjaGFydDp7cGFubmluZzp7ZW5hYmxlZDohMCx0eXBlOiJ4In0scGluY2hUeXBlOiJ4In0sbmF2aWdhdG9yOntlbmFibGVkOm19LHNjcm9sbGJhcjp7ZW5hYmxlZDpnKGsuc2Nyb2xsYmFyLmVuYWJsZWQsITApfSxyYW5nZVNlbGVjdG9yOntlbmFibGVkOmcoay5yYW5nZVNlbGVjdG9yLmVuYWJsZWQsITApfSx0aXRsZTp7dGV4dDpudWxsfSx0b29sdGlwOntzcGxpdDpnKGsudG9vbHRpcC5zcGxpdCwhMCksY3Jvc3NoYWlyczohMH0sbGVnZW5kOntlbmFibGVkOiExfX0sZix7aXNTdG9jazohMH0pO2Yuc2VyaWVzPXAuc2VyaWVzPWw7cmV0dXJuIGI/bmV3IHUoYyxmLGUpOm5ldyB1KGYsZCl9O3goZSwic2V0T3B0aW9ucyIsZnVuY3Rpb24oYSl7dmFyIGM7CnRoaXMuY2hhcnQub3B0aW9ucy5pc1N0b2NrJiYodGhpcy5pcygiY29sdW1uIil8fHRoaXMuaXMoImNvbHVtbnJhbmdlIik/Yz17Ym9yZGVyV2lkdGg6MCxzaGFkb3c6ITF9OnRoaXMuaXMoInNjYXR0ZXIiKXx8dGhpcy5pcygic21hIil8fChjPXttYXJrZXI6e2VuYWJsZWQ6ITEscmFkaXVzOjJ9fSksYyYmKGEucGxvdE9wdGlvbnNbdGhpcy50eXBlXT1oKGEucGxvdE9wdGlvbnNbdGhpcy50eXBlXSxjKSkpfSk7eChsLCJhdXRvTGFiZWxBbGlnbiIsZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5jaGFydCxkPXRoaXMub3B0aW9ucztjPWMuX2xhYmVsUGFuZXM9Yy5fbGFiZWxQYW5lc3x8e307dmFyIGI9dGhpcy5vcHRpb25zLmxhYmVsczt0aGlzLmNoYXJ0Lm9wdGlvbnMuaXNTdG9jayYmInlBeGlzIj09PXRoaXMuY29sbCYmKGQ9ZC50b3ArIiwiK2QuaGVpZ2h0LCFjW2RdJiZiLmVuYWJsZWQmJigxNT09PWIueCYmKGIueD0wKSwidW5kZWZpbmVkIj09PXR5cGVvZiBiLmFsaWduJiYoYi5hbGlnbj0KInJpZ2h0IiksY1tkXT10aGlzLGEuYWxpZ249InJpZ2h0IixhLnByZXZlbnREZWZhdWx0KCkpKX0pO3gobCwiZGVzdHJveSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LGM9dGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMudG9wKyIsIit0aGlzLm9wdGlvbnMuaGVpZ2h0O2MmJmEuX2xhYmVsUGFuZXMmJmEuX2xhYmVsUGFuZXNbY109PT10aGlzJiZkZWxldGUgYS5fbGFiZWxQYW5lc1tjXX0pO3gobCwiZ2V0UGxvdExpbmVQYXRoIixmdW5jdGlvbihjKXtmdW5jdGlvbiBkKGMpe3ZhciBkPSJ4QXhpcyI9PT1jPyJ5QXhpcyI6InhBeGlzIjtjPWUub3B0aW9uc1tkXTtyZXR1cm4gbihjKT9bZltkXVtjXV06YShjKT9bZi5nZXQoYyldOmIubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhW2RdfSl9dmFyIGU9dGhpcyxiPXRoaXMuaXNMaW5rZWQmJiF0aGlzLnNlcmllcz90aGlzLmxpbmtlZFBhcmVudC5zZXJpZXM6dGhpcy5zZXJpZXMsZj1lLmNoYXJ0LGg9Zi5yZW5kZXJlcixwPWUubGVmdCwKaz1lLnRvcCxsLG0scSx0LHU9W10seD1bXSx6PWMudHJhbnNsYXRlZFZhbHVlLEE9Yy52YWx1ZSxCPWMuZm9yY2U7aWYoZi5vcHRpb25zLmlzU3RvY2smJiExIT09Yy5hY3Jvc3NQYW5lcyYmInhBeGlzIj09PWUuY29sbHx8InlBeGlzIj09PWUuY29sbCl7Yy5wcmV2ZW50RGVmYXVsdCgpO3g9ZChlLmNvbGwpO3ZhciBEPWUuaXNYQXhpcz9mLnlBeGlzOmYueEF4aXM7RC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKEooYS5vcHRpb25zLmlkKT8tMT09PWEub3B0aW9ucy5pZC5pbmRleE9mKCJuYXZpZ2F0b3IiKToxKXt2YXIgYj1hLmlzWEF4aXM/InlBeGlzIjoieEF4aXMiO2I9SihhLm9wdGlvbnNbYl0pP2ZbYl1bYS5vcHRpb25zW2JdXTpmW2JdWzBdO2U9PT1iJiZ4LnB1c2goYSl9fSk7dmFyIEU9eC5sZW5ndGg/W106W2UuaXNYQXhpcz9mLnlBeGlzWzBdOmYueEF4aXNbMF1dO3guZm9yRWFjaChmdW5jdGlvbihhKXstMSE9PUUuaW5kZXhPZihhKXx8QyhFLGZ1bmN0aW9uKGIpe3JldHVybiBiLnBvcz09PQphLnBvcyYmYi5sZW49PT1hLmxlbn0pfHxFLnB1c2goYSl9KTt2YXIgRz1nKHosZS50cmFuc2xhdGUoQSxudWxsLG51bGwsYy5vbGQpKTtuKEcpJiYoZS5ob3Jpej9FLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI7bT1hLnBvczt0PW0rYS5sZW47bD1xPU1hdGgucm91bmQoRytlLnRyYW5zQik7InBhc3MiIT09QiYmKGw8cHx8bD5wK2Uud2lkdGgpJiYoQj9sPXE9dihsLHAscCtlLndpZHRoKTpiPSEwKTtifHx1LnB1c2goWyJNIixsLG1dLFsiTCIscSx0XSl9KTpFLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI7bD1hLnBvcztxPWwrYS5sZW47bT10PU1hdGgucm91bmQoaytlLmhlaWdodC1HKTsicGFzcyIhPT1CJiYobTxrfHxtPmsrZS5oZWlnaHQpJiYoQj9tPXQ9dihtLGssaytlLmhlaWdodCk6Yj0hMCk7Ynx8dS5wdXNoKFsiTSIsbCxtXSxbIkwiLHEsdF0pfSkpO2MucGF0aD0wPHUubGVuZ3RoP2guY3Jpc3BQb2x5TGluZSh1LGMubGluZVdpZHRofHwxKTpudWxsfX0pO0UucHJvdG90eXBlLmNyaXNwUG9seUxpbmU9CmZ1bmN0aW9uKGEsYyl7Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDtlKz0yKXt2YXIgYj1hW2VdLGY9YVtlKzFdO2JbMV09PT1mWzFdJiYoYlsxXT1mWzFdPU1hdGgucm91bmQoYlsxXSktYyUyLzIpO2JbMl09PT1mWzJdJiYoYlsyXT1mWzJdPU1hdGgucm91bmQoYlsyXSkrYyUyLzIpfXJldHVybiBhfTt4KGwsImFmdGVySGlkZUNyb3NzaGFpciIsZnVuY3Rpb24oKXt0aGlzLmNyb3NzTGFiZWwmJih0aGlzLmNyb3NzTGFiZWw9dGhpcy5jcm9zc0xhYmVsLmhpZGUoKSl9KTt4KGwsImFmdGVyRHJhd0Nyb3NzaGFpciIsZnVuY3Rpb24oYSl7dmFyIGMsZTtpZihKKHRoaXMuY3Jvc3NoYWlyLmxhYmVsKSYmdGhpcy5jcm9zc2hhaXIubGFiZWwuZW5hYmxlZCYmdGhpcy5jcm9zcyl7dmFyIGI9dGhpcy5jaGFydCxmPXRoaXMubG9nYXJpdGhtaWMsZD10aGlzLm9wdGlvbnMuY3Jvc3NoYWlyLmxhYmVsLGg9dGhpcy5ob3JpeixrPXRoaXMub3Bwb3NpdGUsbD10aGlzLmxlZnQscD10aGlzLnRvcCxtPQp0aGlzLmNyb3NzTGFiZWwscT1kLmZvcm1hdCx0PSIiLHU9Imluc2lkZSI9PT10aGlzLm9wdGlvbnMudGlja1Bvc2l0aW9uLHY9ITEhPT10aGlzLmNyb3NzaGFpci5zbmFwLHg9MCxBPWEuZXx8dGhpcy5jcm9zcyYmdGhpcy5jcm9zcy5lLEI9YS5wb2ludDthPXRoaXMubWluO3ZhciBDPXRoaXMubWF4O2YmJihhPWYubGluMmxvZyhhKSxDPWYubGluMmxvZyhDKSk7Zj1oPyJjZW50ZXIiOms/InJpZ2h0Ij09PXRoaXMubGFiZWxBbGlnbj8icmlnaHQiOiJsZWZ0IjoibGVmdCI9PT10aGlzLmxhYmVsQWxpZ24/ImxlZnQiOiJjZW50ZXIiO218fChtPXRoaXMuY3Jvc3NMYWJlbD1iLnJlbmRlcmVyLmxhYmVsKG51bGwsbnVsbCxudWxsLGQuc2hhcGV8fCJjYWxsb3V0IikuYWRkQ2xhc3MoImhpZ2hjaGFydHMtY3Jvc3NoYWlyLWxhYmVsIisodGhpcy5zZXJpZXNbMF0mJiIgaGlnaGNoYXJ0cy1jb2xvci0iK3RoaXMuc2VyaWVzWzBdLmNvbG9ySW5kZXgpKS5hdHRyKHthbGlnbjpkLmFsaWdufHwKZixwYWRkaW5nOmcoZC5wYWRkaW5nLDgpLHI6ZyhkLmJvcmRlclJhZGl1cywzKSx6SW5kZXg6Mn0pLmFkZCh0aGlzLmxhYmVsR3JvdXApLGIuc3R5bGVkTW9kZXx8bS5hdHRyKHtmaWxsOmQuYmFja2dyb3VuZENvbG9yfHx0aGlzLnNlcmllc1swXSYmdGhpcy5zZXJpZXNbMF0uY29sb3J8fCIjNjY2NjY2IixzdHJva2U6ZC5ib3JkZXJDb2xvcnx8IiIsInN0cm9rZS13aWR0aCI6ZC5ib3JkZXJXaWR0aHx8MH0pLmNzcyhHKHtjb2xvcjoiI2ZmZmZmZiIsZm9udFdlaWdodDoibm9ybWFsIixmb250U2l6ZToiMTFweCIsdGV4dEFsaWduOiJjZW50ZXIifSxkLnN0eWxlKSkpO2g/KGY9dj9CLnBsb3RYK2w6QS5jaGFydFgscCs9az8wOnRoaXMuaGVpZ2h0KTooZj1rP3RoaXMud2lkdGgrbDowLHA9dj9CLnBsb3RZK3A6QS5jaGFydFkpO3F8fGQuZm9ybWF0dGVyfHwodGhpcy5kYXRlVGltZSYmKHQ9IiViICVkLCAlWSIpLHE9Int2YWx1ZSIrKHQ/IjoiK3Q6IiIpKyJ9Iik7dD12P0JbdGhpcy5pc1hBeGlzPwoieCI6InkiXTp0aGlzLnRvVmFsdWUoaD9BLmNoYXJ0WDpBLmNoYXJ0WSk7bS5hdHRyKHt0ZXh0OnE/eihxLHt2YWx1ZTp0fSxiKTpkLmZvcm1hdHRlci5jYWxsKHRoaXMsdCkseDpmLHk6cCx2aXNpYmlsaXR5OnQ8YXx8dD5DPyJoaWRkZW4iOiJ2aXNpYmxlIn0pO2Q9bS5nZXRCQm94KCk7aWYobihtLnkpKWlmKGgpe2lmKHUmJiFrfHwhdSYmaylwPW0ueS1kLmhlaWdodH1lbHNlIHA9bS55LWQuaGVpZ2h0LzI7aD8oYz1sLWQueCxlPWwrdGhpcy53aWR0aC1kLngpOihjPSJsZWZ0Ij09PXRoaXMubGFiZWxBbGlnbj9sOjAsZT0icmlnaHQiPT09dGhpcy5sYWJlbEFsaWduP2wrdGhpcy53aWR0aDpiLmNoYXJ0V2lkdGgpO20udHJhbnNsYXRlWDxjJiYoeD1jLW0udHJhbnNsYXRlWCk7bS50cmFuc2xhdGVYK2Qud2lkdGg+PWUmJih4PS0obS50cmFuc2xhdGVYK2Qud2lkdGgtZSkpO20uYXR0cih7eDpmK3gseTpwLGFuY2hvclg6aD9mOnRoaXMub3Bwb3NpdGU/MDpiLmNoYXJ0V2lkdGgsYW5jaG9yWTpoPwp0aGlzLm9wcG9zaXRlP2IuY2hhcnRIZWlnaHQ6MDpwK2QuaGVpZ2h0LzJ9KX19KTtELmluaXQ9ZnVuY3Rpb24oKXttLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnNldENvbXBhcmUodGhpcy5vcHRpb25zLmNvbXBhcmUpfTtELnNldENvbXBhcmU9ZnVuY3Rpb24oYSl7dGhpcy5tb2RpZnlWYWx1ZT0idmFsdWUiPT09YXx8InBlcmNlbnQiPT09YT9mdW5jdGlvbihjLGQpe3ZhciBiPXRoaXMuY29tcGFyZVZhbHVlO3JldHVybiJ1bmRlZmluZWQiIT09dHlwZW9mIGMmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGI/KGM9InZhbHVlIj09PWE/Yy1iOmMvYioxMDAtKDEwMD09PXRoaXMub3B0aW9ucy5jb21wYXJlQmFzZT8wOjEwMCksZCYmKGQuY2hhbmdlPWMpLGMpOjB9Om51bGw7dGhpcy51c2VyT3B0aW9ucy5jb21wYXJlPWE7dGhpcy5jaGFydC5oYXNSZW5kZXJlZCYmKHRoaXMuaXNEaXJ0eT0hMCl9O0QucHJvY2Vzc0RhdGE9ZnVuY3Rpb24oYSl7dmFyIGMsZD0tMSxiPSEwPT09dGhpcy5vcHRpb25zLmNvbXBhcmVTdGFydD8KMDoxO2suYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKHRoaXMueEF4aXMmJnRoaXMucHJvY2Vzc2VkWURhdGEpe3ZhciBmPXRoaXMucHJvY2Vzc2VkWERhdGE7dmFyIGU9dGhpcy5wcm9jZXNzZWRZRGF0YTt2YXIgZz1lLmxlbmd0aDt0aGlzLnBvaW50QXJyYXlNYXAmJihkPXRoaXMucG9pbnRBcnJheU1hcC5pbmRleE9mKHRoaXMub3B0aW9ucy5wb2ludFZhbEtleXx8dGhpcy5wb2ludFZhbEtleXx8InkiKSk7Zm9yKGM9MDtjPGctYjtjKyspe3ZhciBoPWVbY10mJi0xPGQ/ZVtjXVtkXTplW2NdO2lmKG4oaCkmJmZbYytiXT49dGhpcy54QXhpcy5taW4mJjAhPT1oKXt0aGlzLmNvbXBhcmVWYWx1ZT1oO2JyZWFrfX19fTt4KGUsImFmdGVyR2V0RXh0cmVtZXMiLGZ1bmN0aW9uKGEpe2E9YS5kYXRhRXh0cmVtZXM7aWYodGhpcy5tb2RpZnlWYWx1ZSYmYSl7dmFyIGQ9W3RoaXMubW9kaWZ5VmFsdWUoYS5kYXRhTWluKSx0aGlzLm1vZGlmeVZhbHVlKGEuZGF0YU1heCldO2EuZGF0YU1pbj1jKGQpOwphLmRhdGFNYXg9cShkKX19KTtsLnByb3RvdHlwZS5zZXRDb21wYXJlPWZ1bmN0aW9uKGEsYyl7dGhpcy5pc1hBeGlzfHwodGhpcy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihjKXtjLnNldENvbXBhcmUoYSl9KSxnKGMsITApJiZ0aGlzLmNoYXJ0LnJlZHJhdygpKX07dC5wcm90b3R5cGUudG9vbHRpcEZvcm1hdHRlcj1mdW5jdGlvbihhKXt2YXIgYz10aGlzLnNlcmllcy5jaGFydC5udW1iZXJGb3JtYXR0ZXI7YT1hLnJlcGxhY2UoIntwb2ludC5jaGFuZ2V9IiwoMDx0aGlzLmNoYW5nZT8iKyI6IiIpK2ModGhpcy5jaGFuZ2UsZyh0aGlzLnNlcmllcy50b29sdGlwT3B0aW9ucy5jaGFuZ2VEZWNpbWFscywyKSkpO3JldHVybiBkLmFwcGx5KHRoaXMsW2FdKX07eChlLCJyZW5kZXIiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydDtpZighKGEuaXMzZCYmYS5pczNkKCl8fGEucG9sYXIpJiZ0aGlzLnhBeGlzJiYhdGhpcy54QXhpcy5pc1JhZGlhbCl7dmFyIGM9dGhpcy55QXhpcy5sZW47CmlmKHRoaXMueEF4aXMuYXhpc0xpbmUpe3ZhciBkPWEucGxvdFRvcCthLnBsb3RIZWlnaHQtdGhpcy55QXhpcy5wb3MtdGhpcy55QXhpcy5sZW4sYj1NYXRoLmZsb29yKHRoaXMueEF4aXMuYXhpc0xpbmUuc3Ryb2tlV2lkdGgoKS8yKTswPD1kJiYoYy09TWF0aC5tYXgoYi1kLDApKX0hdGhpcy5jbGlwQm94JiZ0aGlzLmFuaW1hdGU/KHRoaXMuY2xpcEJveD1oKGEuY2xpcEJveCksdGhpcy5jbGlwQm94LndpZHRoPXRoaXMueEF4aXMubGVuLHRoaXMuY2xpcEJveC5oZWlnaHQ9Yyk6YVt0aGlzLnNoYXJlZENsaXBLZXldJiYoYVt0aGlzLnNoYXJlZENsaXBLZXldLmFuaW1hdGUoe3dpZHRoOnRoaXMueEF4aXMubGVuLGhlaWdodDpjfSksYVt0aGlzLnNoYXJlZENsaXBLZXkrIm0iXSYmYVt0aGlzLnNoYXJlZENsaXBLZXkrIm0iXS5hbmltYXRlKHt3aWR0aDp0aGlzLnhBeGlzLmxlbn0pKX19KTt4KHUsInVwZGF0ZSIsZnVuY3Rpb24oYSl7YT1hLm9wdGlvbnM7InNjcm9sbGJhciJpbiBhJiYKdGhpcy5uYXZpZ2F0b3ImJihoKCEwLHRoaXMub3B0aW9ucy5zY3JvbGxiYXIsYS5zY3JvbGxiYXIpLHRoaXMubmF2aWdhdG9yLnVwZGF0ZSh7fSwhMSksZGVsZXRlIGEuc2Nyb2xsYmFyKX0pfSk7SyhsLCJtYXN0ZXJzL21vZHVsZXMvc3RvY2suc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXN0b2NrLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoNCiBIaWdobWFwcyBKUyB2OC4xLjIgKDIwMjAtMDYtMTYpDQoNCiBIaWdobWFwcyBhcyBhIHBsdWdpbiBmb3IgSGlnaGNoYXJ0cyBvciBIaWdoc3RvY2suDQoNCiAoYykgMjAxMS0yMDE5IFRvcnN0ZWluIEhvbnNpDQoNCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQ0KKi8NCihmdW5jdGlvbihhKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhhWyJkZWZhdWx0Il09YSxtb2R1bGUuZXhwb3J0cz1hKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9tYXAiLFsiaGlnaGNoYXJ0cyJdLGZ1bmN0aW9uKHope2Eoeik7YS5IaWdoY2hhcnRzPXo7cmV0dXJuIGF9KTphKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oYSl7ZnVuY3Rpb24geihhLHIsayxuKXthLmhhc093blByb3BlcnR5KHIpfHwoYVtyXT1uLmFwcGx5KG51bGwsaykpfWE9YT9hLl9tb2R1bGVzOnt9O3ooYSwicGFydHMtbWFwL01hcEF4aXMuanMiLFthWyJwYXJ0cy9BeGlzLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEscil7dmFyIGs9ci5hZGRFdmVudCxuPXIucGljayxjPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGMpe3RoaXMuYXhpcz0NCmN9fSgpO3I9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7fWEuY29tcG9zZT1mdW5jdGlvbihhKXthLmtlZXBQcm9wcy5wdXNoKCJtYXBBeGlzIik7ayhhLCJpbml0IixmdW5jdGlvbigpe3RoaXMubWFwQXhpc3x8KHRoaXMubWFwQXhpcz1uZXcgYyh0aGlzKSl9KTtrKGEsImdldFNlcmllc0V4dHJlbWVzIixmdW5jdGlvbigpe2lmKHRoaXMubWFwQXhpcyl7dmFyIGM9W107dGhpcy5pc1hBeGlzJiYodGhpcy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhLHUpe2EudXNlTWFwR2VvbWV0cnkmJihjW3VdPWEueERhdGEsYS54RGF0YT1bXSl9KSx0aGlzLm1hcEF4aXMuc2VyaWVzWERhdGE9Yyl9fSk7ayhhLCJhZnRlckdldFNlcmllc0V4dHJlbWVzIixmdW5jdGlvbigpe2lmKHRoaXMubWFwQXhpcyl7dmFyIGM9dGhpcy5tYXBBeGlzLnNlcmllc1hEYXRhfHxbXSxhO2lmKHRoaXMuaXNYQXhpcyl7dmFyIHU9bih0aGlzLmRhdGFNaW4sTnVtYmVyLk1BWF9WQUxVRSk7dmFyIGg9bih0aGlzLmRhdGFNYXgsDQotTnVtYmVyLk1BWF9WQUxVRSk7dGhpcy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihmLHgpe2YudXNlTWFwR2VvbWV0cnkmJih1PU1hdGgubWluKHUsbihmLm1pblgsdSkpLGg9TWF0aC5tYXgoaCxuKGYubWF4WCxoKSksZi54RGF0YT1jW3hdLGE9ITApfSk7YSYmKHRoaXMuZGF0YU1pbj11LHRoaXMuZGF0YU1heD1oKTt0aGlzLm1hcEF4aXMuc2VyaWVzWERhdGE9dm9pZCAwfX19KTtrKGEsImFmdGVyU2V0QXhpc1RyYW5zbGF0aW9uIixmdW5jdGlvbigpe2lmKHRoaXMubWFwQXhpcyl7dmFyIGM9dGhpcy5jaGFydCxhPWMucGxvdFdpZHRoL2MucGxvdEhlaWdodDtjPWMueEF4aXNbMF07dmFyIHU7InlBeGlzIj09PXRoaXMuY29sbCYmInVuZGVmaW5lZCIhPT10eXBlb2YgYy50cmFuc0EmJnRoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5wcmVzZXJ2ZUFzcGVjdFJhdGlvJiYodT0hMCl9KTtpZih1JiYodGhpcy50cmFuc0E9Yy50cmFuc0E9TWF0aC5taW4odGhpcy50cmFuc0EsDQpjLnRyYW5zQSksYS89KGMubWF4LWMubWluKS8odGhpcy5tYXgtdGhpcy5taW4pLGE9MT5hP3RoaXM6YyxjPShhLm1heC1hLm1pbikqYS50cmFuc0EsYS5tYXBBeGlzLnBpeGVsUGFkZGluZz1hLmxlbi1jLGEubWluUGl4ZWxQYWRkaW5nPWEubWFwQXhpcy5waXhlbFBhZGRpbmcvMixjPWEubWFwQXhpcy5maXhUbykpe2M9Y1sxXS1hLnRvVmFsdWUoY1swXSwhMCk7Yyo9YS50cmFuc0E7aWYoTWF0aC5hYnMoYyk+YS5taW5QaXhlbFBhZGRpbmd8fGEubWluPT09YS5kYXRhTWluJiZhLm1heD09PWEuZGF0YU1heCljPTA7YS5taW5QaXhlbFBhZGRpbmctPWN9fX0pO2soYSwicmVuZGVyIixmdW5jdGlvbigpe3RoaXMubWFwQXhpcyYmKHRoaXMubWFwQXhpcy5maXhUbz12b2lkIDApfSl9O3JldHVybiBhfSgpO3IuY29tcG9zZShhKTtyZXR1cm4gcn0pO3ooYSwicGFydHMtbWFwL0NvbG9yU2VyaWVzTWl4aW4uanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl1dLGZ1bmN0aW9uKGEpe2EuY29sb3JQb2ludE1peGluPQ0Ke3NldFZpc2libGU6ZnVuY3Rpb24oYSl7dmFyIGs9dGhpcyxuPWE/InNob3ciOiJoaWRlIjtrLnZpc2libGU9ay5vcHRpb25zLnZpc2libGU9ISFhO1siZ3JhcGhpYyIsImRhdGFMYWJlbCJdLmZvckVhY2goZnVuY3Rpb24oYyl7aWYoa1tjXSlrW2NdW25dKCl9KTt0aGlzLnNlcmllcy5idWlsZEtEVHJlZSgpfX07YS5jb2xvclNlcmllc01peGluPXtvcHRpb25hbEF4aXM6ImNvbG9yQXhpcyIsY29sb3JBeGlzOjAsdHJhbnNsYXRlQ29sb3JzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxrPXRoaXMub3B0aW9ucy5udWxsQ29sb3Isbj10aGlzLmNvbG9yQXhpcyxjPXRoaXMuY29sb3JLZXk7KHRoaXMuZGF0YS5sZW5ndGg/dGhpcy5kYXRhOnRoaXMucG9pbnRzKS5mb3JFYWNoKGZ1bmN0aW9uKEMpe3ZhciB3PUMuZ2V0TmVzdGVkUHJvcGVydHkoYyk7KHc9Qy5vcHRpb25zLmNvbG9yfHwoQy5pc051bGx8fG51bGw9PT1DLnZhbHVlP2s6biYmInVuZGVmaW5lZCIhPT10eXBlb2Ygdz9uLnRvQ29sb3IodywNCkMpOkMuY29sb3J8fGEuY29sb3IpKSYmQy5jb2xvciE9PXcmJihDLmNvbG9yPXcsInBvaW50Ij09PWEub3B0aW9ucy5sZWdlbmRUeXBlJiZDLmxlZ2VuZEl0ZW0mJmEuY2hhcnQubGVnZW5kLmNvbG9yaXplSXRlbShDLEMudmlzaWJsZSkpfSl9fX0pO3ooYSwicGFydHMtbWFwL0NvbG9yQXhpcy5qcyIsW2FbInBhcnRzL0F4aXMuanMiXSxhWyJwYXJ0cy9DaGFydC5qcyJdLGFbInBhcnRzL0NvbG9yLmpzIl0sYVsicGFydHMvR2xvYmFscy5qcyJdLGFbInBhcnRzL0xlZ2VuZC5qcyJdLGFbIm1peGlucy9sZWdlbmQtc3ltYm9sLmpzIl0sYVsicGFydHMvUG9pbnQuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyLGssbixjLEMsRCxBKXt2YXIgdz10aGlzJiZ0aGlzLl9fZXh0ZW5kc3x8ZnVuY3Rpb24oKXt2YXIgYj1mdW5jdGlvbihlLGQpe2I9T2JqZWN0LnNldFByb3RvdHlwZU9mfHx7X19wcm90b19fOltdfWluc3RhbmNlb2YgQXJyYXkmJmZ1bmN0aW9uKGIsZSl7Yi5fX3Byb3RvX189DQplfXx8ZnVuY3Rpb24oYixlKXtmb3IodmFyIGQgaW4gZSllLmhhc093blByb3BlcnR5KGQpJiYoYltkXT1lW2RdKX07cmV0dXJuIGIoZSxkKX07cmV0dXJuIGZ1bmN0aW9uKGUsZCl7ZnVuY3Rpb24gdCgpe3RoaXMuY29uc3RydWN0b3I9ZX1iKGUsZCk7ZS5wcm90b3R5cGU9bnVsbD09PWQ/T2JqZWN0LmNyZWF0ZShkKToodC5wcm90b3R5cGU9ZC5wcm90b3R5cGUsbmV3IHQpfX0oKSx1PWsucGFyc2UsaD1uLm5vb3A7az1BLmFkZEV2ZW50O3ZhciBmPUEuZXJhc2UseD1BLmV4dGVuZCxsPUEuRngscT1BLmlzTnVtYmVyLHA9QS5tZXJnZSx5PUEucGljayxnPUEuc3BsYXQ7IiI7dmFyIGQ9bi5TZXJpZXM7QT1uLmNvbG9yUG9pbnRNaXhpbjt4KGQucHJvdG90eXBlLG4uY29sb3JTZXJpZXNNaXhpbik7eChELnByb3RvdHlwZSxBKTtyLnByb3RvdHlwZS5jb2xsZWN0aW9uc1dpdGhVcGRhdGUucHVzaCgiY29sb3JBeGlzIik7ci5wcm90b3R5cGUuY29sbGVjdGlvbnNXaXRoSW5pdC5jb2xvckF4aXM9DQpbci5wcm90b3R5cGUuYWRkQ29sb3JBeGlzXTt2YXIgYj1mdW5jdGlvbihiKXtmdW5jdGlvbiBlKGUsZCl7dmFyIHQ9Yi5jYWxsKHRoaXMsZSxkKXx8dGhpczt0LmJlZm9yZVBhZGRpbmc9ITE7dC5jaGFydD12b2lkIDA7dC5jb2xsPSJjb2xvckF4aXMiO3QuZGF0YUNsYXNzZXM9dm9pZCAwO3QubGVnZW5kSXRlbT12b2lkIDA7dC5sZWdlbmRJdGVtcz12b2lkIDA7dC5uYW1lPSIiO3Qub3B0aW9ucz12b2lkIDA7dC5zdG9wcz12b2lkIDA7dC52aXNpYmxlPSEwO3QuaW5pdChlLGQpO3JldHVybiB0fXcoZSxiKTtlLmJ1aWxkT3B0aW9ucz1mdW5jdGlvbihiLGUsZCl7Yj1iLm9wdGlvbnMubGVnZW5kfHx7fTt2YXIgdD1kLmxheW91dD8idmVydGljYWwiIT09ZC5sYXlvdXQ6InZlcnRpY2FsIiE9PWIubGF5b3V0O3JldHVybiBwKGUse3NpZGU6dD8yOjEscmV2ZXJzZWQ6IXR9LGQse29wcG9zaXRlOiF0LHNob3dFbXB0eTohMSx0aXRsZTpudWxsLHZpc2libGU6Yi5lbmFibGVkJiYoZD8hMSE9PQ0KZC52aXNpYmxlOiEwKX0pfTtlLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGQsdCl7dmFyIHY9ZS5idWlsZE9wdGlvbnMoZCxlLmRlZmF1bHRPcHRpb25zLHQpO3RoaXMuY29sbD0iY29sb3JBeGlzIjtiLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcyxkLHYpO3QuZGF0YUNsYXNzZXMmJnRoaXMuaW5pdERhdGFDbGFzc2VzKHQpO3RoaXMuaW5pdFN0b3BzKCk7dGhpcy5ob3Jpej0hdi5vcHBvc2l0ZTt0aGlzLnpvb21FbmFibGVkPSExfTtlLnByb3RvdHlwZS5pbml0RGF0YUNsYXNzZXM9ZnVuY3Rpb24oYil7dmFyIGU9dGhpcy5jaGFydCxkLHY9MCxnPWUub3B0aW9ucy5jaGFydC5jb2xvckNvdW50LG09dGhpcy5vcHRpb25zLGY9Yi5kYXRhQ2xhc3Nlcy5sZW5ndGg7dGhpcy5kYXRhQ2xhc3Nlcz1kPVtdO3RoaXMubGVnZW5kSXRlbXM9W107Yi5kYXRhQ2xhc3Nlcy5mb3JFYWNoKGZ1bmN0aW9uKGIsdCl7Yj1wKGIpO2QucHVzaChiKTtpZihlLnN0eWxlZE1vZGV8fCFiLmNvbG9yKSJjYXRlZ29yeSI9PT0NCm0uZGF0YUNsYXNzQ29sb3I/KGUuc3R5bGVkTW9kZXx8KHQ9ZS5vcHRpb25zLmNvbG9ycyxnPXQubGVuZ3RoLGIuY29sb3I9dFt2XSksYi5jb2xvckluZGV4PXYsdisrLHY9PT1nJiYodj0wKSk6Yi5jb2xvcj11KG0ubWluQ29sb3IpLnR3ZWVuVG8odShtLm1heENvbG9yKSwyPmY/LjU6dC8oZi0xKSl9KX07ZS5wcm90b3R5cGUuaGFzRGF0YT1mdW5jdGlvbigpe3JldHVybiEhKHRoaXMudGlja1Bvc2l0aW9uc3x8W10pLmxlbmd0aH07ZS5wcm90b3R5cGUuc2V0VGlja1Bvc2l0aW9ucz1mdW5jdGlvbigpe2lmKCF0aGlzLmRhdGFDbGFzc2VzKXJldHVybiBiLnByb3RvdHlwZS5zZXRUaWNrUG9zaXRpb25zLmNhbGwodGhpcyl9O2UucHJvdG90eXBlLmluaXRTdG9wcz1mdW5jdGlvbigpe3RoaXMuc3RvcHM9dGhpcy5vcHRpb25zLnN0b3BzfHxbWzAsdGhpcy5vcHRpb25zLm1pbkNvbG9yXSxbMSx0aGlzLm9wdGlvbnMubWF4Q29sb3JdXTt0aGlzLnN0b3BzLmZvckVhY2goZnVuY3Rpb24oYil7Yi5jb2xvcj0NCnUoYlsxXSl9KX07ZS5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbihlKXtiLnByb3RvdHlwZS5zZXRPcHRpb25zLmNhbGwodGhpcyxlKTt0aGlzLm9wdGlvbnMuY3Jvc3NoYWlyPXRoaXMub3B0aW9ucy5tYXJrZXJ9O2UucHJvdG90eXBlLnNldEF4aXNTaXplPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5sZWdlbmRTeW1ib2wsZD10aGlzLmNoYXJ0LGc9ZC5vcHRpb25zLmxlZ2VuZHx8e30sbSxmO2I/KHRoaXMubGVmdD1nPWIuYXR0cigieCIpLHRoaXMudG9wPW09Yi5hdHRyKCJ5IiksdGhpcy53aWR0aD1mPWIuYXR0cigid2lkdGgiKSx0aGlzLmhlaWdodD1iPWIuYXR0cigiaGVpZ2h0IiksdGhpcy5yaWdodD1kLmNoYXJ0V2lkdGgtZy1mLHRoaXMuYm90dG9tPWQuY2hhcnRIZWlnaHQtbS1iLHRoaXMubGVuPXRoaXMuaG9yaXo/ZjpiLHRoaXMucG9zPXRoaXMuaG9yaXo/ZzptKTp0aGlzLmxlbj0odGhpcy5ob3Jpej9nLnN5bWJvbFdpZHRoOmcuc3ltYm9sSGVpZ2h0KXx8ZS5kZWZhdWx0TGVnZW5kTGVuZ3RofTsNCmUucHJvdG90eXBlLm5vcm1hbGl6ZWRWYWx1ZT1mdW5jdGlvbihiKXt0aGlzLmxvZ2FyaXRobWljJiYoYj10aGlzLmxvZ2FyaXRobWljLmxvZzJsaW4oYikpO3JldHVybiAxLSh0aGlzLm1heC1iKS8odGhpcy5tYXgtdGhpcy5taW58fDEpfTtlLnByb3RvdHlwZS50b0NvbG9yPWZ1bmN0aW9uKGIsZSl7dmFyIGQ9dGhpcy5kYXRhQ2xhc3Nlcyx0PXRoaXMuc3RvcHMsZztpZihkKWZvcihnPWQubGVuZ3RoO2ctLTspe3ZhciBtPWRbZ107dmFyIHY9bS5mcm9tO3Q9bS50bztpZigoInVuZGVmaW5lZCI9PT10eXBlb2Ygdnx8Yj49dikmJigidW5kZWZpbmVkIj09PXR5cGVvZiB0fHxiPD10KSl7dmFyIGY9bS5jb2xvcjtlJiYoZS5kYXRhQ2xhc3M9ZyxlLmNvbG9ySW5kZXg9bS5jb2xvckluZGV4KTticmVha319ZWxzZXtiPXRoaXMubm9ybWFsaXplZFZhbHVlKGIpO2ZvcihnPXQubGVuZ3RoO2ctLSYmIShiPnRbZ11bMF0pOyk7dj10W2ddfHx0W2crMV07dD10W2crMV18fHY7Yj0xLSh0WzBdLQ0KYikvKHRbMF0tdlswXXx8MSk7Zj12LmNvbG9yLnR3ZWVuVG8odC5jb2xvcixiKX1yZXR1cm4gZn07ZS5wcm90b3R5cGUuZ2V0T2Zmc2V0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sZWdlbmRHcm91cCxkPXRoaXMuY2hhcnQuYXhpc09mZnNldFt0aGlzLnNpZGVdO2UmJih0aGlzLmF4aXNQYXJlbnQ9ZSxiLnByb3RvdHlwZS5nZXRPZmZzZXQuY2FsbCh0aGlzKSx0aGlzLmFkZGVkfHwodGhpcy5hZGRlZD0hMCx0aGlzLmxhYmVsTGVmdD0wLHRoaXMubGFiZWxSaWdodD10aGlzLndpZHRoKSx0aGlzLmNoYXJ0LmF4aXNPZmZzZXRbdGhpcy5zaWRlXT1kKX07ZS5wcm90b3R5cGUuc2V0TGVnZW5kQ29sb3I9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnJldmVyc2VkLGU9Yj8xOjA7Yj1iPzA6MTtlPXRoaXMuaG9yaXo/W2UsMCxiLDBdOlswLGIsMCxlXTt0aGlzLmxlZ2VuZENvbG9yPXtsaW5lYXJHcmFkaWVudDp7eDE6ZVswXSx5MTplWzFdLHgyOmVbMl0seTI6ZVszXX0sc3RvcHM6dGhpcy5zdG9wc319Ow0KZS5wcm90b3R5cGUuZHJhd0xlZ2VuZFN5bWJvbD1mdW5jdGlvbihiLGQpe3ZhciB0PWIucGFkZGluZyxnPWIub3B0aW9ucyxtPXRoaXMuaG9yaXosZj15KGcuc3ltYm9sV2lkdGgsbT9lLmRlZmF1bHRMZWdlbmRMZW5ndGg6MTIpLHY9eShnLnN5bWJvbEhlaWdodCxtPzEyOmUuZGVmYXVsdExlZ2VuZExlbmd0aCksYz15KGcubGFiZWxQYWRkaW5nLG0/MTY6MzApO2c9eShnLml0ZW1EaXN0YW5jZSwxMCk7dGhpcy5zZXRMZWdlbmRDb2xvcigpO2QubGVnZW5kU3ltYm9sPXRoaXMuY2hhcnQucmVuZGVyZXIucmVjdCgwLGIuYmFzZWxpbmUtMTEsZix2KS5hdHRyKHt6SW5kZXg6MX0pLmFkZChkLmxlZ2VuZEdyb3VwKTt0aGlzLmxlZ2VuZEl0ZW1XaWR0aD1mK3QrKG0/ZzpjKTt0aGlzLmxlZ2VuZEl0ZW1IZWlnaHQ9dit0KyhtP2M6MCl9O2UucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGIpe3RoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5zZXRTdGF0ZShiKX0pfTtlLnByb3RvdHlwZS5zZXRWaXNpYmxlPQ0KZnVuY3Rpb24oKXt9O2UucHJvdG90eXBlLmdldFNlcmllc0V4dHJlbWVzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5zZXJpZXMsZT1iLmxlbmd0aCxnO3RoaXMuZGF0YU1pbj1JbmZpbml0eTtmb3IodGhpcy5kYXRhTWF4PS1JbmZpbml0eTtlLS07KXt2YXIgbT1iW2VdO3ZhciBmPW0uY29sb3JLZXk9eShtLm9wdGlvbnMuY29sb3JLZXksbS5jb2xvcktleSxtLnBvaW50VmFsS2V5LG0uem9uZUF4aXMsInkiKTt2YXIgYz1tLnBvaW50QXJyYXlNYXA7dmFyIGE9bVtmKyJNaW4iXSYmbVtmKyJNYXgiXTtpZihtW2YrIkRhdGEiXSl2YXIgbD1tW2YrIkRhdGEiXTtlbHNlIGlmKGMpe2w9W107Yz1jLmluZGV4T2YoZik7dmFyIGg9bS55RGF0YTtpZigwPD1jJiZoKWZvcihnPTA7ZzxoLmxlbmd0aDtnKyspbC5wdXNoKHkoaFtnXVtjXSxoW2ddKSl9ZWxzZSBsPW0ueURhdGE7YT8obS5taW5Db2xvclZhbHVlPW1bZisiTWluIl0sbS5tYXhDb2xvclZhbHVlPW1bZisiTWF4Il0pOihsPWQucHJvdG90eXBlLmdldEV4dHJlbWVzLmNhbGwobSwNCmwpLG0ubWluQ29sb3JWYWx1ZT1sLmRhdGFNaW4sbS5tYXhDb2xvclZhbHVlPWwuZGF0YU1heCk7InVuZGVmaW5lZCIhPT10eXBlb2YgbS5taW5Db2xvclZhbHVlJiYodGhpcy5kYXRhTWluPU1hdGgubWluKHRoaXMuZGF0YU1pbixtLm1pbkNvbG9yVmFsdWUpLHRoaXMuZGF0YU1heD1NYXRoLm1heCh0aGlzLmRhdGFNYXgsbS5tYXhDb2xvclZhbHVlKSk7YXx8ZC5wcm90b3R5cGUuYXBwbHlFeHRyZW1lcy5jYWxsKG0pfX07ZS5wcm90b3R5cGUuZHJhd0Nyb3NzaGFpcj1mdW5jdGlvbihlLGQpe3ZhciBtPWQmJmQucGxvdFgsZz1kJiZkLnBsb3RZLHQ9dGhpcy5wb3MsZj10aGlzLmxlbjtpZihkKXt2YXIgYz10aGlzLnRvUGl4ZWxzKGQuZ2V0TmVzdGVkUHJvcGVydHkoZC5zZXJpZXMuY29sb3JLZXkpKTtjPHQ/Yz10LTI6Yz50K2YmJihjPXQrZisyKTtkLnBsb3RYPWM7ZC5wbG90WT10aGlzLmxlbi1jO2IucHJvdG90eXBlLmRyYXdDcm9zc2hhaXIuY2FsbCh0aGlzLGUsZCk7ZC5wbG90WD0NCm07ZC5wbG90WT1nO3RoaXMuY3Jvc3MmJiF0aGlzLmNyb3NzLmFkZGVkVG9Db2xvckF4aXMmJnRoaXMubGVnZW5kR3JvdXAmJih0aGlzLmNyb3NzLmFkZENsYXNzKCJoaWdoY2hhcnRzLWNvbG9yYXhpcy1tYXJrZXIiKS5hZGQodGhpcy5sZWdlbmRHcm91cCksdGhpcy5jcm9zcy5hZGRlZFRvQ29sb3JBeGlzPSEwLCF0aGlzLmNoYXJ0LnN0eWxlZE1vZGUmJnRoaXMuY3Jvc3NoYWlyJiZ0aGlzLmNyb3NzLmF0dHIoe2ZpbGw6dGhpcy5jcm9zc2hhaXIuY29sb3J9KSl9fTtlLnByb3RvdHlwZS5nZXRQbG90TGluZVBhdGg9ZnVuY3Rpb24oZSl7dmFyIGQ9dGhpcy5sZWZ0LG09ZS50cmFuc2xhdGVkVmFsdWUsZz10aGlzLnRvcDtyZXR1cm4gcShtKT90aGlzLmhvcml6P1tbIk0iLG0tNCxnLTZdLFsiTCIsbSs0LGctNl0sWyJMIixtLGddLFsiWiJdXTpbWyJNIixkLG1dLFsiTCIsZC02LG0rNl0sWyJMIixkLTYsbS02XSxbIloiXV06Yi5wcm90b3R5cGUuZ2V0UGxvdExpbmVQYXRoLmNhbGwodGhpcywNCmUpfTtlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZCxtKXt2YXIgZz10aGlzLmNoYXJ0LHQ9Zy5sZWdlbmQsZj1lLmJ1aWxkT3B0aW9ucyhnLHt9LGQpO3RoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7Yi5pc0RpcnR5RGF0YT0hMH0pOyhkLmRhdGFDbGFzc2VzJiZ0LmFsbEl0ZW1zfHx0aGlzLmRhdGFDbGFzc2VzKSYmdGhpcy5kZXN0cm95SXRlbXMoKTtnLm9wdGlvbnNbdGhpcy5jb2xsXT1wKHRoaXMudXNlck9wdGlvbnMsZik7Yi5wcm90b3R5cGUudXBkYXRlLmNhbGwodGhpcyxmLG0pO3RoaXMubGVnZW5kSXRlbSYmKHRoaXMuc2V0TGVnZW5kQ29sb3IoKSx0LmNvbG9yaXplSXRlbSh0aGlzLCEwKSl9O2UucHJvdG90eXBlLmRlc3Ryb3lJdGVtcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQ7dGhpcy5sZWdlbmRJdGVtP2IubGVnZW5kLmRlc3Ryb3lJdGVtKHRoaXMpOnRoaXMubGVnZW5kSXRlbXMmJnRoaXMubGVnZW5kSXRlbXMuZm9yRWFjaChmdW5jdGlvbihlKXtiLmxlZ2VuZC5kZXN0cm95SXRlbShlKX0pOw0KYi5pc0RpcnR5TGVnZW5kPSEwfTtlLnByb3RvdHlwZS5yZW1vdmU9ZnVuY3Rpb24oZSl7dGhpcy5kZXN0cm95SXRlbXMoKTtiLnByb3RvdHlwZS5yZW1vdmUuY2FsbCh0aGlzLGUpfTtlLnByb3RvdHlwZS5nZXREYXRhQ2xhc3NMZWdlbmRTeW1ib2xzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxlPWIuY2hhcnQsZD1iLmxlZ2VuZEl0ZW1zLG09ZS5vcHRpb25zLmxlZ2VuZCxnPW0udmFsdWVEZWNpbWFscyxmPW0udmFsdWVTdWZmaXh8fCIiLGM7ZC5sZW5ndGh8fGIuZGF0YUNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihtLHQpe3ZhciBsPSEwLGE9bS5mcm9tLHY9bS50byxxPWUubnVtYmVyRm9ybWF0dGVyO2M9IiI7InVuZGVmaW5lZCI9PT10eXBlb2YgYT9jPSI8ICI6InVuZGVmaW5lZCI9PT10eXBlb2YgdiYmKGM9Ij4gIik7InVuZGVmaW5lZCIhPT10eXBlb2YgYSYmKGMrPXEoYSxnKStmKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBhJiYidW5kZWZpbmVkIiE9PXR5cGVvZiB2JiYoYys9IiAtICIpOw0KInVuZGVmaW5lZCIhPT10eXBlb2YgdiYmKGMrPXEodixnKStmKTtkLnB1c2goeCh7Y2hhcnQ6ZSxuYW1lOmMsb3B0aW9uczp7fSxkcmF3TGVnZW5kU3ltYm9sOkMuZHJhd1JlY3RhbmdsZSx2aXNpYmxlOiEwLHNldFN0YXRlOmgsaXNEYXRhQ2xhc3M6ITAsc2V0VmlzaWJsZTpmdW5jdGlvbigpe2w9Yi52aXNpYmxlPSFsO2Iuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7Yi5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmRhdGFDbGFzcz09PXQmJmIuc2V0VmlzaWJsZShsKX0pfSk7ZS5sZWdlbmQuY29sb3JpemVJdGVtKHRoaXMsbCl9fSxtKSl9KTtyZXR1cm4gZH07ZS5kZWZhdWx0TGVnZW5kTGVuZ3RoPTIwMDtlLmRlZmF1bHRPcHRpb25zPXtsaW5lV2lkdGg6MCxtaW5QYWRkaW5nOjAsbWF4UGFkZGluZzowLGdyaWRMaW5lV2lkdGg6MSx0aWNrUGl4ZWxJbnRlcnZhbDo3MixzdGFydE9uVGljazohMCxlbmRPblRpY2s6ITAsb2Zmc2V0OjAsbWFya2VyOnthbmltYXRpb246e2R1cmF0aW9uOjUwfSwNCndpZHRoOi4wMSxjb2xvcjoiIzk5OTk5OSJ9LGxhYmVsczp7b3ZlcmZsb3c6Imp1c3RpZnkiLHJvdGF0aW9uOjB9LG1pbkNvbG9yOiIjZTZlYmY1IixtYXhDb2xvcjoiIzAwMzM5OSIsdGlja0xlbmd0aDo1LHNob3dJbkxlZ2VuZDohMH07ZS5rZWVwUHJvcHM9WyJsZWdlbmRHcm91cCIsImxlZ2VuZEl0ZW1IZWlnaHQiLCJsZWdlbmRJdGVtV2lkdGgiLCJsZWdlbmRJdGVtIiwibGVnZW5kU3ltYm9sIl07cmV0dXJuIGV9KGEpO0FycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGEua2VlcFByb3BzLGIua2VlcFByb3BzKTtuLkNvbG9yQXhpcz1iO1siZmlsbCIsInN0cm9rZSJdLmZvckVhY2goZnVuY3Rpb24oYil7bC5wcm90b3R5cGVbYisiU2V0dGVyIl09ZnVuY3Rpb24oKXt0aGlzLmVsZW0uYXR0cihiLHUodGhpcy5zdGFydCkudHdlZW5Ubyh1KHRoaXMuZW5kKSx0aGlzLnBvcyksbnVsbCwhMCl9fSk7ayhyLCJhZnRlckdldEF4ZXMiLGZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxkPWUub3B0aW9uczsNCnRoaXMuY29sb3JBeGlzPVtdO2QuY29sb3JBeGlzJiYoZC5jb2xvckF4aXM9ZyhkLmNvbG9yQXhpcyksZC5jb2xvckF4aXMuZm9yRWFjaChmdW5jdGlvbihkLG0pe2QuaW5kZXg9bTtuZXcgYihlLGQpfSkpfSk7ayhkLCJiaW5kQXhlcyIsZnVuY3Rpb24oKXt2YXIgYj10aGlzLmF4aXNUeXBlcztiPy0xPT09Yi5pbmRleE9mKCJjb2xvckF4aXMiKSYmYi5wdXNoKCJjb2xvckF4aXMiKTp0aGlzLmF4aXNUeXBlcz1bImNvbG9yQXhpcyJdfSk7ayhjLCJhZnRlckdldEFsbEl0ZW1zIixmdW5jdGlvbihiKXt2YXIgZT1bXSxkLGc7KHRoaXMuY2hhcnQuY29sb3JBeGlzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihnKXsoZD1nLm9wdGlvbnMpJiZkLnNob3dJbkxlZ2VuZCYmKGQuZGF0YUNsYXNzZXMmJmQudmlzaWJsZT9lPWUuY29uY2F0KGcuZ2V0RGF0YUNsYXNzTGVnZW5kU3ltYm9scygpKTpkLnZpc2libGUmJmUucHVzaChnKSxnLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKCFlLm9wdGlvbnMuc2hvd0luTGVnZW5kfHwNCmQuZGF0YUNsYXNzZXMpInBvaW50Ij09PWUub3B0aW9ucy5sZWdlbmRUeXBlP2UucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7ZihiLmFsbEl0ZW1zLGUpfSk6ZihiLmFsbEl0ZW1zLGUpfSkpfSk7Zm9yKGc9ZS5sZW5ndGg7Zy0tOyliLmFsbEl0ZW1zLnVuc2hpZnQoZVtnXSl9KTtrKGMsImFmdGVyQ29sb3JpemVJdGVtIixmdW5jdGlvbihiKXtiLnZpc2libGUmJmIuaXRlbS5sZWdlbmRDb2xvciYmYi5pdGVtLmxlZ2VuZFN5bWJvbC5hdHRyKHtmaWxsOmIuaXRlbS5sZWdlbmRDb2xvcn0pfSk7ayhjLCJhZnRlclVwZGF0ZSIsZnVuY3Rpb24oKXt2YXIgYj10aGlzLmNoYXJ0LmNvbG9yQXhpcztiJiZiLmZvckVhY2goZnVuY3Rpb24oYixlLGQpe2IudXBkYXRlKHt9LGQpfSl9KTtrKGQsImFmdGVyVHJhbnNsYXRlIixmdW5jdGlvbigpeyh0aGlzLmNoYXJ0LmNvbG9yQXhpcyYmdGhpcy5jaGFydC5jb2xvckF4aXMubGVuZ3RofHx0aGlzLmNvbG9yQXR0cmlicykmJnRoaXMudHJhbnNsYXRlQ29sb3JzKCl9KTsNCnJldHVybiBifSk7eihhLCJwYXJ0cy1tYXAvQ29sb3JNYXBTZXJpZXNNaXhpbi5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9Qb2ludC5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLHIsayl7dmFyIG49ay5kZWZpbmVkO2s9YS5ub29wO3ZhciBjPWEuc2VyaWVzVHlwZXM7YS5jb2xvck1hcFBvaW50TWl4aW49e2RhdGFMYWJlbE9uTnVsbDohMCxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT10aGlzLnZhbHVlJiZJbmZpbml0eSE9PXRoaXMudmFsdWUmJi1JbmZpbml0eSE9PXRoaXMudmFsdWV9LHNldFN0YXRlOmZ1bmN0aW9uKGMpe3IucHJvdG90eXBlLnNldFN0YXRlLmNhbGwodGhpcyxjKTt0aGlzLmdyYXBoaWMmJnRoaXMuZ3JhcGhpYy5hdHRyKHt6SW5kZXg6ImhvdmVyIj09PWM/MTowfSl9fTthLmNvbG9yTWFwU2VyaWVzTWl4aW49e3BvaW50QXJyYXlNYXA6WyJ2YWx1ZSJdLGF4aXNUeXBlczpbInhBeGlzIiwieUF4aXMiLA0KImNvbG9yQXhpcyJdLHRyYWNrZXJHcm91cHM6WyJncm91cCIsIm1hcmtlckdyb3VwIiwiZGF0YUxhYmVsc0dyb3VwIl0sZ2V0U3ltYm9sOmsscGFyYWxsZWxBcnJheXM6WyJ4IiwieSIsInZhbHVlIl0sY29sb3JLZXk6InZhbHVlIixwb2ludEF0dHJpYnM6Yy5jb2x1bW4ucHJvdG90eXBlLnBvaW50QXR0cmlicyxjb2xvckF0dHJpYnM6ZnVuY3Rpb24oYyl7dmFyIGE9e307bihjLmNvbG9yKSYmKGFbdGhpcy5jb2xvclByb3B8fCJmaWxsIl09Yy5jb2xvcik7cmV0dXJuIGF9fX0pO3ooYSwicGFydHMtbWFwL01hcE5hdmlnYXRpb24uanMiLFthWyJwYXJ0cy9DaGFydC5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyLGspe2Z1bmN0aW9uIG4oZil7ZiYmKGYucHJldmVudERlZmF1bHQmJmYucHJldmVudERlZmF1bHQoKSxmLnN0b3BQcm9wYWdhdGlvbiYmZi5zdG9wUHJvcGFnYXRpb24oKSxmLmNhbmNlbEJ1YmJsZT0hMCl9DQpmdW5jdGlvbiBjKGYpe3RoaXMuaW5pdChmKX12YXIgQz1yLmRvYyx3PWsuYWRkRXZlbnQsQT1rLmV4dGVuZCxCPWsubWVyZ2UsdT1rLm9iamVjdEVhY2gsaD1rLnBpY2s7Yy5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihmKXt0aGlzLmNoYXJ0PWY7Zi5tYXBOYXZCdXR0b25zPVtdfTtjLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZil7dmFyIGM9dGhpcy5jaGFydCxhPWMub3B0aW9ucy5tYXBOYXZpZ2F0aW9uLHEscCx5LGcsZCxiPWZ1bmN0aW9uKGIpe3RoaXMuaGFuZGxlci5jYWxsKGMsYik7bihiKX0sZT1jLm1hcE5hdkJ1dHRvbnM7ZiYmKGE9Yy5vcHRpb25zLm1hcE5hdmlnYXRpb249QihjLm9wdGlvbnMubWFwTmF2aWdhdGlvbixmKSk7Zm9yKDtlLmxlbmd0aDspZS5wb3AoKS5kZXN0cm95KCk7aChhLmVuYWJsZUJ1dHRvbnMsYS5lbmFibGVkKSYmIWMucmVuZGVyZXIuZm9yRXhwb3J0JiZ1KGEuYnV0dG9ucyxmdW5jdGlvbihtLGYpe3E9QihhLmJ1dHRvbk9wdGlvbnMsbSk7Yy5zdHlsZWRNb2RlfHwNCihwPXEudGhlbWUscC5zdHlsZT1CKHEudGhlbWUuc3R5bGUscS5zdHlsZSksZz0oeT1wLnN0YXRlcykmJnkuaG92ZXIsZD15JiZ5LnNlbGVjdCk7bT1jLnJlbmRlcmVyLmJ1dHRvbihxLnRleHQsMCwwLGIscCxnLGQsMCwiem9vbUluIj09PWY/InRvcGJ1dHRvbiI6ImJvdHRvbWJ1dHRvbiIpLmFkZENsYXNzKCJoaWdoY2hhcnRzLW1hcC1uYXZpZ2F0aW9uIGhpZ2hjaGFydHMtIit7em9vbUluOiJ6b29tLWluIix6b29tT3V0OiJ6b29tLW91dCJ9W2ZdKS5hdHRyKHt3aWR0aDpxLndpZHRoLGhlaWdodDpxLmhlaWdodCx0aXRsZTpjLm9wdGlvbnMubGFuZ1tmXSxwYWRkaW5nOnEucGFkZGluZyx6SW5kZXg6NX0pLmFkZCgpO20uaGFuZGxlcj1xLm9uY2xpY2s7dyhtLmVsZW1lbnQsImRibGNsaWNrIixuKTtlLnB1c2gobSk7dmFyIHQ9cSxsPXcoYywibG9hZCIsZnVuY3Rpb24oKXttLmFsaWduKEEodCx7d2lkdGg6bS53aWR0aCxoZWlnaHQ6MiptLmhlaWdodH0pLG51bGwsdC5hbGlnblRvKTsNCmwoKX0pfSk7dGhpcy51cGRhdGVFdmVudHMoYSl9O2MucHJvdG90eXBlLnVwZGF0ZUV2ZW50cz1mdW5jdGlvbihjKXt2YXIgZj10aGlzLmNoYXJ0O2goYy5lbmFibGVEb3VibGVDbGlja1pvb20sYy5lbmFibGVkKXx8Yy5lbmFibGVEb3VibGVDbGlja1pvb21Ubz90aGlzLnVuYmluZERibENsaWNrPXRoaXMudW5iaW5kRGJsQ2xpY2t8fHcoZi5jb250YWluZXIsImRibGNsaWNrIixmdW5jdGlvbihjKXtmLnBvaW50ZXIub25Db250YWluZXJEYmxDbGljayhjKX0pOnRoaXMudW5iaW5kRGJsQ2xpY2smJih0aGlzLnVuYmluZERibENsaWNrPXRoaXMudW5iaW5kRGJsQ2xpY2soKSk7aChjLmVuYWJsZU1vdXNlV2hlZWxab29tLGMuZW5hYmxlZCk/dGhpcy51bmJpbmRNb3VzZVdoZWVsPXRoaXMudW5iaW5kTW91c2VXaGVlbHx8dyhmLmNvbnRhaW5lciwidW5kZWZpbmVkIj09PXR5cGVvZiBDLm9ubW91c2V3aGVlbD8iRE9NTW91c2VTY3JvbGwiOiJtb3VzZXdoZWVsIixmdW5jdGlvbihjKXtmLnBvaW50ZXIub25Db250YWluZXJNb3VzZVdoZWVsKGMpOw0KbihjKTtyZXR1cm4hMX0pOnRoaXMudW5iaW5kTW91c2VXaGVlbCYmKHRoaXMudW5iaW5kTW91c2VXaGVlbD10aGlzLnVuYmluZE1vdXNlV2hlZWwoKSl9O0EoYS5wcm90b3R5cGUse2ZpdFRvQm94OmZ1bmN0aW9uKGMsYSl7W1sieCIsIndpZHRoIl0sWyJ5IiwiaGVpZ2h0Il1dLmZvckVhY2goZnVuY3Rpb24oZil7dmFyIGw9ZlswXTtmPWZbMV07Y1tsXStjW2ZdPmFbbF0rYVtmXSYmKGNbZl0+YVtmXT8oY1tmXT1hW2ZdLGNbbF09YVtsXSk6Y1tsXT1hW2xdK2FbZl0tY1tmXSk7Y1tmXT5hW2ZdJiYoY1tmXT1hW2ZdKTtjW2xdPGFbbF0mJihjW2xdPWFbbF0pfSk7cmV0dXJuIGN9LG1hcFpvb206ZnVuY3Rpb24oYyxhLGwscSxwKXt2YXIgZj10aGlzLnhBeGlzWzBdLGc9Zi5tYXgtZi5taW4sZD1oKGEsZi5taW4rZy8yKSxiPWcqYztnPXRoaXMueUF4aXNbMF07dmFyIGU9Zy5tYXgtZy5taW4sbT1oKGwsZy5taW4rZS8yKTtlKj1jO2Q9dGhpcy5maXRUb0JveCh7eDpkLWIqKHE/KHEtZi5wb3MpLw0KZi5sZW46LjUpLHk6bS1lKihwPyhwLWcucG9zKS9nLmxlbjouNSksd2lkdGg6YixoZWlnaHQ6ZX0se3g6Zi5kYXRhTWluLHk6Zy5kYXRhTWluLHdpZHRoOmYuZGF0YU1heC1mLmRhdGFNaW4saGVpZ2h0OmcuZGF0YU1heC1nLmRhdGFNaW59KTtiPWQueDw9Zi5kYXRhTWluJiZkLndpZHRoPj1mLmRhdGFNYXgtZi5kYXRhTWluJiZkLnk8PWcuZGF0YU1pbiYmZC5oZWlnaHQ+PWcuZGF0YU1heC1nLmRhdGFNaW47cSYmZi5tYXBBeGlzJiYoZi5tYXBBeGlzLmZpeFRvPVtxLWYucG9zLGFdKTtwJiZnLm1hcEF4aXMmJihnLm1hcEF4aXMuZml4VG89W3AtZy5wb3MsbF0pOyJ1bmRlZmluZWQiPT09dHlwZW9mIGN8fGI/KGYuc2V0RXh0cmVtZXModm9pZCAwLHZvaWQgMCwhMSksZy5zZXRFeHRyZW1lcyh2b2lkIDAsdm9pZCAwLCExKSk6KGYuc2V0RXh0cmVtZXMoZC54LGQueCtkLndpZHRoLCExKSxnLnNldEV4dHJlbWVzKGQueSxkLnkrZC5oZWlnaHQsITEpKTt0aGlzLnJlZHJhdygpfX0pO3coYSwNCiJiZWZvcmVSZW5kZXIiLGZ1bmN0aW9uKCl7dGhpcy5tYXBOYXZpZ2F0aW9uPW5ldyBjKHRoaXMpO3RoaXMubWFwTmF2aWdhdGlvbi51cGRhdGUoKX0pO3IuTWFwTmF2aWdhdGlvbj1jfSk7eihhLCJwYXJ0cy1tYXAvTWFwUG9pbnRlci5qcyIsW2FbInBhcnRzL1BvaW50ZXIuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyKXt2YXIgaz1yLmV4dGVuZCxuPXIucGljaztyPXIud3JhcDtrKGEucHJvdG90eXBlLHtvbkNvbnRhaW5lckRibENsaWNrOmZ1bmN0aW9uKGMpe3ZhciBhPXRoaXMuY2hhcnQ7Yz10aGlzLm5vcm1hbGl6ZShjKTthLm9wdGlvbnMubWFwTmF2aWdhdGlvbi5lbmFibGVEb3VibGVDbGlja1pvb21Ubz9hLnBvaW50ZXIuaW5DbGFzcyhjLnRhcmdldCwiaGlnaGNoYXJ0cy10cmFja2VyIikmJmEuaG92ZXJQb2ludCYmYS5ob3ZlclBvaW50Lnpvb21UbygpOmEuaXNJbnNpZGVQbG90KGMuY2hhcnRYLWEucGxvdExlZnQsYy5jaGFydFktYS5wbG90VG9wKSYmDQphLm1hcFpvb20oLjUsYS54QXhpc1swXS50b1ZhbHVlKGMuY2hhcnRYKSxhLnlBeGlzWzBdLnRvVmFsdWUoYy5jaGFydFkpLGMuY2hhcnRYLGMuY2hhcnRZKX0sb25Db250YWluZXJNb3VzZVdoZWVsOmZ1bmN0aW9uKGMpe3ZhciBhPXRoaXMuY2hhcnQ7Yz10aGlzLm5vcm1hbGl6ZShjKTt2YXIgaz1jLmRldGFpbHx8LShjLndoZWVsRGVsdGEvMTIwKTthLmlzSW5zaWRlUGxvdChjLmNoYXJ0WC1hLnBsb3RMZWZ0LGMuY2hhcnRZLWEucGxvdFRvcCkmJmEubWFwWm9vbShNYXRoLnBvdyhhLm9wdGlvbnMubWFwTmF2aWdhdGlvbi5tb3VzZVdoZWVsU2Vuc2l0aXZpdHksayksYS54QXhpc1swXS50b1ZhbHVlKGMuY2hhcnRYKSxhLnlBeGlzWzBdLnRvVmFsdWUoYy5jaGFydFkpLGMuY2hhcnRYLGMuY2hhcnRZKX19KTtyKGEucHJvdG90eXBlLCJ6b29tT3B0aW9uIixmdW5jdGlvbihjKXt2YXIgYT10aGlzLmNoYXJ0Lm9wdGlvbnMubWFwTmF2aWdhdGlvbjtuKGEuZW5hYmxlVG91Y2hab29tLGEuZW5hYmxlZCkmJg0KKHRoaXMuY2hhcnQub3B0aW9ucy5jaGFydC5waW5jaFR5cGU9Inh5Iik7Yy5hcHBseSh0aGlzLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKX0pO3IoYS5wcm90b3R5cGUsInBpbmNoVHJhbnNsYXRlIixmdW5jdGlvbihjLGEsayxuLHcsdSxoKXtjLmNhbGwodGhpcyxhLGssbix3LHUsaCk7Im1hcCI9PT10aGlzLmNoYXJ0Lm9wdGlvbnMuY2hhcnQudHlwZSYmdGhpcy5oYXNab29tJiYoYz1uLnNjYWxlWD5uLnNjYWxlWSx0aGlzLnBpbmNoVHJhbnNsYXRlRGlyZWN0aW9uKCFjLGEsayxuLHcsdSxoLGM/bi5zY2FsZVg6bi5zY2FsZVkpKX0pfSk7eihhLCJwYXJ0cy1tYXAvTWFwU2VyaWVzLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdLGFbIm1peGlucy9sZWdlbmQtc3ltYm9sLmpzIl0sYVsicGFydHMvUG9pbnQuanMiXSxhWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLHIsayxuLGMpe3ZhciB3PWMuZXh0ZW5kLHo9Yy5maXJlRXZlbnQsDQpBPWMuZ2V0TmVzdGVkUHJvcGVydHksQj1jLmlzQXJyYXksdT1jLmlzTnVtYmVyLGg9Yy5tZXJnZSxmPWMub2JqZWN0RWFjaCx4PWMucGljayxsPWMuc2VyaWVzVHlwZSxxPWMuc3BsYXQscD1hLmNvbG9yTWFwUG9pbnRNaXhpbix5PWEubm9vcCxnPWEuU2VyaWVzLGQ9YS5zZXJpZXNUeXBlcztsKCJtYXAiLCJzY2F0dGVyIix7YW5pbWF0aW9uOiExLGRhdGFMYWJlbHM6e2Nyb3A6ITEsZm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQudmFsdWV9LGluc2lkZTohMCxvdmVyZmxvdzohMSxwYWRkaW5nOjAsdmVydGljYWxBbGlnbjoibWlkZGxlIn0sbWFya2VyOm51bGwsbnVsbENvbG9yOiIjZjdmN2Y3IixzdGlja3lUcmFja2luZzohMSx0b29sdGlwOntmb2xsb3dQb2ludGVyOiEwLHBvaW50Rm9ybWF0OiJ7cG9pbnQubmFtZX06IHtwb2ludC52YWx1ZX08YnIvPiJ9LHR1cmJvVGhyZXNob2xkOjAsYWxsQXJlYXM6ITAsYm9yZGVyQ29sb3I6IiNjY2NjY2MiLGJvcmRlcldpZHRoOjEsDQpqb2luQnk6ImhjLWtleSIsc3RhdGVzOntob3Zlcjp7aGFsbzpudWxsLGJyaWdodG5lc3M6LjJ9LG5vcm1hbDp7YW5pbWF0aW9uOiEwfSxzZWxlY3Q6e2NvbG9yOiIjY2NjY2NjIn0saW5hY3RpdmU6e29wYWNpdHk6MX19fSxoKGEuY29sb3JNYXBTZXJpZXNNaXhpbix7dHlwZToibWFwIixnZXRFeHRyZW1lc0Zyb21BbGw6ITAsdXNlTWFwR2VvbWV0cnk6ITAsZm9yY2VETDohMCxzZWFyY2hQb2ludDp5LGRpcmVjdFRvdWNoOiEwLHByZXNlcnZlQXNwZWN0UmF0aW86ITAscG9pbnRBcnJheU1hcDpbInZhbHVlIl0sc2V0T3B0aW9uczpmdW5jdGlvbihiKXtiPWcucHJvdG90eXBlLnNldE9wdGlvbnMuY2FsbCh0aGlzLGIpO3ZhciBlPWIuam9pbkJ5O251bGw9PT1lJiYoZT0iX2kiKTtlPXRoaXMuam9pbkJ5PXEoZSk7ZVsxXXx8KGVbMV09ZVswXSk7cmV0dXJuIGJ9LGdldEJveDpmdW5jdGlvbihiKXt2YXIgZT1OdW1iZXIuTUFYX1ZBTFVFLGQ9LWUsYz1lLGc9LWUsZj1lLGw9ZSxoPXRoaXMueEF4aXMsDQpwPXRoaXMueUF4aXMscTsoYnx8W10pLmZvckVhY2goZnVuY3Rpb24oYil7aWYoYi5wYXRoKXsic3RyaW5nIj09PXR5cGVvZiBiLnBhdGg/Yi5wYXRoPWEuc3BsaXRQYXRoKGIucGF0aCk6Ik0iPT09Yi5wYXRoWzBdJiYoYi5wYXRoPW4ucHJvdG90eXBlLnBhdGhUb1NlZ21lbnRzKGIucGF0aCkpO3ZhciBtPWIucGF0aHx8W10sdD0tZSxoPWUscD0tZSx2PWUsdT1iLnByb3BlcnRpZXM7Yi5fZm91bmRCb3h8fChtLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGU9YltiLmxlbmd0aC0yXTtiPWJbYi5sZW5ndGgtMV07Im51bWJlciI9PT10eXBlb2YgZSYmIm51bWJlciI9PT10eXBlb2YgYiYmKGg9TWF0aC5taW4oaCxlKSx0PU1hdGgubWF4KHQsZSksdj1NYXRoLm1pbih2LGIpLHA9TWF0aC5tYXgocCxiKSl9KSxiLl9taWRYPWgrKHQtaCkqeChiLm1pZGRsZVgsdSYmdVsiaGMtbWlkZGxlLXgiXSwuNSksYi5fbWlkWT12KyhwLXYpKngoYi5taWRkbGVZLHUmJnVbImhjLW1pZGRsZS15Il0sLjUpLA0KYi5fbWF4WD10LGIuX21pblg9aCxiLl9tYXhZPXAsYi5fbWluWT12LGIubGFiZWxyYW5rPXgoYi5sYWJlbHJhbmssKHQtaCkqKHAtdikpLGIuX2ZvdW5kQm94PSEwKTtkPU1hdGgubWF4KGQsYi5fbWF4WCk7Yz1NYXRoLm1pbihjLGIuX21pblgpO2c9TWF0aC5tYXgoZyxiLl9tYXhZKTtmPU1hdGgubWluKGYsYi5fbWluWSk7bD1NYXRoLm1pbihiLl9tYXhYLWIuX21pblgsYi5fbWF4WS1iLl9taW5ZLGwpO3E9ITB9fSk7cSYmKHRoaXMubWluWT1NYXRoLm1pbihmLHgodGhpcy5taW5ZLGUpKSx0aGlzLm1heFk9TWF0aC5tYXgoZyx4KHRoaXMubWF4WSwtZSkpLHRoaXMubWluWD1NYXRoLm1pbihjLHgodGhpcy5taW5YLGUpKSx0aGlzLm1heFg9TWF0aC5tYXgoZCx4KHRoaXMubWF4WCwtZSkpLGgmJiJ1bmRlZmluZWQiPT09dHlwZW9mIGgub3B0aW9ucy5taW5SYW5nZSYmKGgubWluUmFuZ2U9TWF0aC5taW4oNSpsLCh0aGlzLm1heFgtdGhpcy5taW5YKS81LGgubWluUmFuZ2V8fGUpKSxwJiYNCiJ1bmRlZmluZWQiPT09dHlwZW9mIHAub3B0aW9ucy5taW5SYW5nZSYmKHAubWluUmFuZ2U9TWF0aC5taW4oNSpsLCh0aGlzLm1heFktdGhpcy5taW5ZKS81LHAubWluUmFuZ2V8fGUpKSl9LGhhc0RhdGE6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucHJvY2Vzc2VkWERhdGEubGVuZ3RofSxnZXRFeHRyZW1lczpmdW5jdGlvbigpe3ZhciBiPWcucHJvdG90eXBlLmdldEV4dHJlbWVzLmNhbGwodGhpcyx0aGlzLnZhbHVlRGF0YSksZT1iLmRhdGFNaW47Yj1iLmRhdGFNYXg7dGhpcy5jaGFydC5oYXNSZW5kZXJlZCYmdGhpcy5pc0RpcnR5RGF0YSYmdGhpcy5nZXRCb3godGhpcy5vcHRpb25zLmRhdGEpO3UoZSkmJih0aGlzLnZhbHVlTWluPWUpO3UoYikmJih0aGlzLnZhbHVlTWF4PWIpO3JldHVybntkYXRhTWluOnRoaXMubWluWSxkYXRhTWF4OnRoaXMubWF4WX19LHRyYW5zbGF0ZVBhdGg6ZnVuY3Rpb24oYil7dmFyIGU9dGhpcy54QXhpcyxkPXRoaXMueUF4aXMsYT1lLm1pbixjPWUudHJhbnNBLA0KZz1lLm1pblBpeGVsUGFkZGluZyxmPWQubWluLGw9ZC50cmFuc0EsaD1kLm1pblBpeGVsUGFkZGluZyxwPVtdO2ImJmIuZm9yRWFjaChmdW5jdGlvbihiKXsiTSI9PT1iWzBdP3AucHVzaChbIk0iLChiWzFdLShhfHwwKSkqYytnLChiWzJdLShmfHwwKSkqbCtoXSk6IkwiPT09YlswXT9wLnB1c2goWyJMIiwoYlsxXS0oYXx8MCkpKmMrZywoYlsyXS0oZnx8MCkpKmwraF0pOiJDIj09PWJbMF0/cC5wdXNoKFsiQyIsKGJbMV0tKGF8fDApKSpjK2csKGJbMl0tKGZ8fDApKSpsK2gsKGJbM10tKGF8fDApKSpjK2csKGJbNF0tKGZ8fDApKSpsK2gsKGJbNV0tKGF8fDApKSpjK2csKGJbNl0tKGZ8fDApKSpsK2hdKToiUSI9PT1iWzBdP3AucHVzaChbIlEiLChiWzFdLShhfHwwKSkqYytnLChiWzJdLShmfHwwKSkqbCtoLChiWzNdLShhfHwwKSkqYytnLChiWzRdLShmfHwwKSkqbCtoXSk6IloiPT09YlswXSYmcC5wdXNoKFsiWiJdKX0pO3JldHVybiBwfSxzZXREYXRhOmZ1bmN0aW9uKGIsZSxkLA0KYyl7dmFyIG09dGhpcy5vcHRpb25zLGw9dGhpcy5jaGFydC5vcHRpb25zLmNoYXJ0LHA9bCYmbC5tYXAscT1tLm1hcERhdGEsdj10aGlzLmpvaW5CeSx5PW0ua2V5c3x8dGhpcy5wb2ludEFycmF5TWFwLG49W10seD17fSxyPXRoaXMuY2hhcnQubWFwVHJhbnNmb3JtczshcSYmcCYmKHE9InN0cmluZyI9PT10eXBlb2YgcD9hLm1hcHNbcF06cCk7YiYmYi5mb3JFYWNoKGZ1bmN0aW9uKGUsZCl7dmFyIGE9MDtpZih1KGUpKWJbZF09e3ZhbHVlOmV9O2Vsc2UgaWYoQihlKSl7YltkXT17fTshbS5rZXlzJiZlLmxlbmd0aD55Lmxlbmd0aCYmInN0cmluZyI9PT10eXBlb2YgZVswXSYmKGJbZF1bImhjLWtleSJdPWVbMF0sKythKTtmb3IodmFyIGM9MDtjPHkubGVuZ3RoOysrYywrK2EpeVtjXSYmInVuZGVmaW5lZCIhPT10eXBlb2YgZVthXSYmKDA8eVtjXS5pbmRleE9mKCIuIik/ay5wcm90b3R5cGUuc2V0TmVzdGVkUHJvcGVydHkoYltkXSxlW2FdLHlbY10pOmJbZF1beVtjXV09ZVthXSl9diYmDQoiX2kiPT09dlswXSYmKGJbZF0uX2k9ZCl9KTt0aGlzLmdldEJveChiKTsodGhpcy5jaGFydC5tYXBUcmFuc2Zvcm1zPXI9bCYmbC5tYXBUcmFuc2Zvcm1zfHxxJiZxWyJoYy10cmFuc2Zvcm0iXXx8cikmJmYocixmdW5jdGlvbihiKXtiLnJvdGF0aW9uJiYoYi5jb3NBbmdsZT1NYXRoLmNvcyhiLnJvdGF0aW9uKSxiLnNpbkFuZ2xlPU1hdGguc2luKGIucm90YXRpb24pKX0pO2lmKHEpeyJGZWF0dXJlQ29sbGVjdGlvbiI9PT1xLnR5cGUmJih0aGlzLm1hcFRpdGxlPXEudGl0bGUscT1hLmdlb2pzb24ocSx0aGlzLnR5cGUsdGhpcykpO3RoaXMubWFwRGF0YT1xO3RoaXMubWFwTWFwPXt9O2ZvcihyPTA7cjxxLmxlbmd0aDtyKyspbD1xW3JdLHA9bC5wcm9wZXJ0aWVzLGwuX2k9cix2WzBdJiZwJiZwW3ZbMF1dJiYobFt2WzBdXT1wW3ZbMF1dKSx4W2xbdlswXV1dPWw7dGhpcy5tYXBNYXA9eDtpZihiJiZ2WzFdKXt2YXIgdz12WzFdO2IuZm9yRWFjaChmdW5jdGlvbihiKXtiPUEodyxiKTsNCnhbYl0mJm4ucHVzaCh4W2JdKX0pfWlmKG0uYWxsQXJlYXMpe3RoaXMuZ2V0Qm94KHEpO2I9Ynx8W107aWYodlsxXSl7dmFyIEM9dlsxXTtiLmZvckVhY2goZnVuY3Rpb24oYil7bi5wdXNoKEEoQyxiKSl9KX1uPSJ8IituLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYiYmYlt2WzBdXX0pLmpvaW4oInwiKSsifCI7cS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZbMF0mJi0xIT09bi5pbmRleE9mKCJ8IitlW3ZbMF1dKyJ8Iil8fChiLnB1c2goaChlLHt2YWx1ZTpudWxsfSkpLGM9ITEpfSl9ZWxzZSB0aGlzLmdldEJveChuKX1nLnByb3RvdHlwZS5zZXREYXRhLmNhbGwodGhpcyxiLGUsZCxjKX0sZHJhd0dyYXBoOnksZHJhd0RhdGFMYWJlbHM6eSxkb0Z1bGxUcmFuc2xhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0RpcnR5RGF0YXx8dGhpcy5jaGFydC5pc1Jlc2l6aW5nfHx0aGlzLmNoYXJ0LnJlbmRlcmVyLmlzVk1MfHwhdGhpcy5iYXNlVHJhbnN9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBiPQ0KdGhpcyxlPWIueEF4aXMsZD1iLnlBeGlzLGE9Yi5kb0Z1bGxUcmFuc2xhdGUoKTtiLmdlbmVyYXRlUG9pbnRzKCk7Yi5kYXRhLmZvckVhY2goZnVuY3Rpb24oYyl7dShjLl9taWRYKSYmdShjLl9taWRZKSYmKGMucGxvdFg9ZS50b1BpeGVscyhjLl9taWRYLCEwKSxjLnBsb3RZPWQudG9QaXhlbHMoYy5fbWlkWSwhMCkpO2EmJihjLnNoYXBlVHlwZT0icGF0aCIsYy5zaGFwZUFyZ3M9e2Q6Yi50cmFuc2xhdGVQYXRoKGMucGF0aCl9KX0pO3ooYiwiYWZ0ZXJUcmFuc2xhdGUiKX0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGIsZSl7ZT1iLnNlcmllcy5jaGFydC5zdHlsZWRNb2RlP3RoaXMuY29sb3JBdHRyaWJzKGIpOmQuY29sdW1uLnByb3RvdHlwZS5wb2ludEF0dHJpYnMuY2FsbCh0aGlzLGIsZSk7ZVsic3Ryb2tlLXdpZHRoIl09eChiLm9wdGlvbnNbdGhpcy5wb2ludEF0dHJUb09wdGlvbnMmJnRoaXMucG9pbnRBdHRyVG9PcHRpb25zWyJzdHJva2Utd2lkdGgiXXx8ImJvcmRlcldpZHRoIl0sDQoiaW5oZXJpdCIpO3JldHVybiBlfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxlPWIueEF4aXMsYz1iLnlBeGlzLGE9Yi5ncm91cCxnPWIuY2hhcnQsZj1nLnJlbmRlcmVyLGw9dGhpcy5iYXNlVHJhbnM7Yi50cmFuc2Zvcm1Hcm91cHx8KGIudHJhbnNmb3JtR3JvdXA9Zi5nKCkuYXR0cih7c2NhbGVYOjEsc2NhbGVZOjF9KS5hZGQoYSksYi50cmFuc2Zvcm1Hcm91cC5zdXJ2aXZlPSEwKTtpZihiLmRvRnVsbFRyYW5zbGF0ZSgpKWcuaGFzUmVuZGVyZWQmJiFnLnN0eWxlZE1vZGUmJmIucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5zaGFwZUFyZ3MmJihlLnNoYXBlQXJncy5maWxsPWIucG9pbnRBdHRyaWJzKGUsZS5zdGF0ZSkuZmlsbCl9KSxiLmdyb3VwPWIudHJhbnNmb3JtR3JvdXAsZC5jb2x1bW4ucHJvdG90eXBlLmRyYXdQb2ludHMuYXBwbHkoYiksYi5ncm91cD1hLGIucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZS5ncmFwaGljKXt2YXIgZD0iIjsNCmUubmFtZSYmKGQrPSJoaWdoY2hhcnRzLW5hbWUtIitlLm5hbWUucmVwbGFjZSgvIC9nLCItIikudG9Mb3dlckNhc2UoKSk7ZS5wcm9wZXJ0aWVzJiZlLnByb3BlcnRpZXNbImhjLWtleSJdJiYoZCs9IiBoaWdoY2hhcnRzLWtleS0iK2UucHJvcGVydGllc1siaGMta2V5Il0udG9Mb3dlckNhc2UoKSk7ZCYmZS5ncmFwaGljLmFkZENsYXNzKGQpO2cuc3R5bGVkTW9kZSYmZS5ncmFwaGljLmNzcyhiLnBvaW50QXR0cmlicyhlLGUuc2VsZWN0ZWQmJiJzZWxlY3QifHx2b2lkIDApKX19KSx0aGlzLmJhc2VUcmFucz17b3JpZ2luWDplLm1pbi1lLm1pblBpeGVsUGFkZGluZy9lLnRyYW5zQSxvcmlnaW5ZOmMubWluLWMubWluUGl4ZWxQYWRkaW5nL2MudHJhbnNBKyhjLnJldmVyc2VkPzA6Yy5sZW4vYy50cmFuc0EpLHRyYW5zQVg6ZS50cmFuc0EsdHJhbnNBWTpjLnRyYW5zQX0sdGhpcy50cmFuc2Zvcm1Hcm91cC5hbmltYXRlKHt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowLHNjYWxlWDoxLA0Kc2NhbGVZOjF9KTtlbHNle3ZhciBoPWUudHJhbnNBL2wudHJhbnNBWDt2YXIgcD1jLnRyYW5zQS9sLnRyYW5zQVk7dmFyIHE9ZS50b1BpeGVscyhsLm9yaWdpblgsITApO3ZhciB1PWMudG9QaXhlbHMobC5vcmlnaW5ZLCEwKTsuOTk8aCYmMS4wMT5oJiYuOTk8cCYmMS4wMT5wJiYocD1oPTEscT1NYXRoLnJvdW5kKHEpLHU9TWF0aC5yb3VuZCh1KSk7dmFyIHk9dGhpcy50cmFuc2Zvcm1Hcm91cDtpZihnLnJlbmRlcmVyLmdsb2JhbEFuaW1hdGlvbil7dmFyIG49eS5hdHRyKCJ0cmFuc2xhdGVYIik7dmFyIGs9eS5hdHRyKCJ0cmFuc2xhdGVZIik7dmFyIHI9eS5hdHRyKCJzY2FsZVgiKTt2YXIgdz15LmF0dHIoInNjYWxlWSIpO3kuYXR0cih7YW5pbWF0b3I6MH0pLmFuaW1hdGUoe2FuaW1hdG9yOjF9LHtzdGVwOmZ1bmN0aW9uKGIsZSl7eS5hdHRyKHt0cmFuc2xhdGVYOm4rKHEtbikqZS5wb3MsdHJhbnNsYXRlWTprKyh1LWspKmUucG9zLHNjYWxlWDpyKyhoLXIpKmUucG9zLHNjYWxlWTp3Kw0KKHAtdykqZS5wb3N9KX19KX1lbHNlIHkuYXR0cih7dHJhbnNsYXRlWDpxLHRyYW5zbGF0ZVk6dSxzY2FsZVg6aCxzY2FsZVk6cH0pfWcuc3R5bGVkTW9kZXx8YS5lbGVtZW50LnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIix4KGIub3B0aW9uc1tiLnBvaW50QXR0clRvT3B0aW9ucyYmYi5wb2ludEF0dHJUb09wdGlvbnNbInN0cm9rZS13aWR0aCJdfHwiYm9yZGVyV2lkdGgiXSwxKS8oaHx8MSkpO3RoaXMuZHJhd01hcERhdGFMYWJlbHMoKX0sZHJhd01hcERhdGFMYWJlbHM6ZnVuY3Rpb24oKXtnLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscy5jYWxsKHRoaXMpO3RoaXMuZGF0YUxhYmVsc0dyb3VwJiZ0aGlzLmRhdGFMYWJlbHNHcm91cC5jbGlwKHRoaXMuY2hhcnQuY2xpcFJlY3QpfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGU9Zy5wcm90b3R5cGUucmVuZGVyO2IuY2hhcnQucmVuZGVyZXIuaXNWTUwmJjNFMzxiLmRhdGEubGVuZ3RoP3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmNhbGwoYil9KToNCmUuY2FsbChiKX0sYW5pbWF0ZTpmdW5jdGlvbihiKXt2YXIgZT10aGlzLm9wdGlvbnMuYW5pbWF0aW9uLGQ9dGhpcy5ncm91cCxjPXRoaXMueEF4aXMsYT10aGlzLnlBeGlzLGc9Yy5wb3MsZj1hLnBvczt0aGlzLmNoYXJ0LnJlbmRlcmVyLmlzU1ZHJiYoITA9PT1lJiYoZT17ZHVyYXRpb246MUUzfSksYj9kLmF0dHIoe3RyYW5zbGF0ZVg6ZytjLmxlbi8yLHRyYW5zbGF0ZVk6ZithLmxlbi8yLHNjYWxlWDouMDAxLHNjYWxlWTouMDAxfSk6ZC5hbmltYXRlKHt0cmFuc2xhdGVYOmcsdHJhbnNsYXRlWTpmLHNjYWxlWDoxLHNjYWxlWToxfSxlKSl9LGFuaW1hdGVEcmlsbGRvd246ZnVuY3Rpb24oYil7dmFyIGU9dGhpcy5jaGFydC5wbG90Qm94LGQ9dGhpcy5jaGFydC5kcmlsbGRvd25MZXZlbHNbdGhpcy5jaGFydC5kcmlsbGRvd25MZXZlbHMubGVuZ3RoLTFdLGM9ZC5iQm94LGE9dGhpcy5jaGFydC5vcHRpb25zLmRyaWxsZG93bi5hbmltYXRpb247Ynx8KGI9TWF0aC5taW4oYy53aWR0aC8NCmUud2lkdGgsYy5oZWlnaHQvZS5oZWlnaHQpLGQuc2hhcGVBcmdzPXtzY2FsZVg6YixzY2FsZVk6Yix0cmFuc2xhdGVYOmMueCx0cmFuc2xhdGVZOmMueX0sdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmdyYXBoaWMmJmIuZ3JhcGhpYy5hdHRyKGQuc2hhcGVBcmdzKS5hbmltYXRlKHtzY2FsZVg6MSxzY2FsZVk6MSx0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowfSxhKX0pKX0sZHJhd0xlZ2VuZFN5bWJvbDpyLmRyYXdSZWN0YW5nbGUsYW5pbWF0ZURyaWxsdXBGcm9tOmZ1bmN0aW9uKGIpe2QuY29sdW1uLnByb3RvdHlwZS5hbmltYXRlRHJpbGx1cEZyb20uY2FsbCh0aGlzLGIpfSxhbmltYXRlRHJpbGx1cFRvOmZ1bmN0aW9uKGIpe2QuY29sdW1uLnByb3RvdHlwZS5hbmltYXRlRHJpbGx1cFRvLmNhbGwodGhpcyxiKX19KSx3KHthcHBseU9wdGlvbnM6ZnVuY3Rpb24oYixlKXt2YXIgZD10aGlzLnNlcmllcztiPWsucHJvdG90eXBlLmFwcGx5T3B0aW9ucy5jYWxsKHRoaXMsDQpiLGUpO2U9ZC5qb2luQnk7ZC5tYXBEYXRhJiZkLm1hcE1hcCYmKGU9ay5wcm90b3R5cGUuZ2V0TmVzdGVkUHJvcGVydHkuY2FsbChiLGVbMV0pLChlPSJ1bmRlZmluZWQiIT09dHlwZW9mIGUmJmQubWFwTWFwW2VdKT8oZC54eUZyb21TaGFwZSYmKGIueD1lLl9taWRYLGIueT1lLl9taWRZKSx3KGIsZSkpOmIudmFsdWU9Yi52YWx1ZXx8bnVsbCk7cmV0dXJuIGJ9LG9uTW91c2VPdmVyOmZ1bmN0aW9uKGIpe2MuY2xlYXJUaW1lb3V0KHRoaXMuY29sb3JJbnRlcnZhbCk7aWYobnVsbCE9PXRoaXMudmFsdWV8fHRoaXMuc2VyaWVzLm9wdGlvbnMubnVsbEludGVyYWN0aW9uKWsucHJvdG90eXBlLm9uTW91c2VPdmVyLmNhbGwodGhpcyxiKTtlbHNlIHRoaXMuc2VyaWVzLm9uTW91c2VPdXQoYil9LHpvb21UbzpmdW5jdGlvbigpe3ZhciBiPXRoaXMuc2VyaWVzO2IueEF4aXMuc2V0RXh0cmVtZXModGhpcy5fbWluWCx0aGlzLl9tYXhYLCExKTtiLnlBeGlzLnNldEV4dHJlbWVzKHRoaXMuX21pblksDQp0aGlzLl9tYXhZLCExKTtiLmNoYXJ0LnJlZHJhdygpfX0scCkpOyIifSk7eihhLCJwYXJ0cy1tYXAvTWFwTGluZVNlcmllcy5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyKXtyPXIuc2VyaWVzVHlwZTt2YXIgaz1hLnNlcmllc1R5cGVzO3IoIm1hcGxpbmUiLCJtYXAiLHtsaW5lV2lkdGg6MSxmaWxsQ29sb3I6Im5vbmUifSx7dHlwZToibWFwbGluZSIsY29sb3JQcm9wOiJzdHJva2UiLHBvaW50QXR0clRvT3B0aW9uczp7c3Ryb2tlOiJjb2xvciIsInN0cm9rZS13aWR0aCI6ImxpbmVXaWR0aCJ9LHBvaW50QXR0cmliczpmdW5jdGlvbihhLGMpe2E9ay5tYXAucHJvdG90eXBlLnBvaW50QXR0cmlicy5jYWxsKHRoaXMsYSxjKTthLmZpbGw9dGhpcy5vcHRpb25zLmZpbGxDb2xvcjtyZXR1cm4gYX0sZHJhd0xlZ2VuZFN5bWJvbDprLmxpbmUucHJvdG90eXBlLmRyYXdMZWdlbmRTeW1ib2x9KTsiIn0pO3ooYSwicGFydHMtbWFwL01hcFBvaW50U2VyaWVzLmpzIiwNClthWyJwYXJ0cy9HbG9iYWxzLmpzIl1dLGZ1bmN0aW9uKGEpe3ZhciByPWEubWVyZ2Usaz1hLlBvaW50LG49YS5TZXJpZXM7YT1hLnNlcmllc1R5cGU7YSgibWFwcG9pbnQiLCJzY2F0dGVyIix7ZGF0YUxhYmVsczp7Y3JvcDohMSxkZWZlcjohMSxlbmFibGVkOiEwLGZvcm1hdHRlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvaW50Lm5hbWV9LG92ZXJmbG93OiExLHN0eWxlOntjb2xvcjoiIzAwMDAwMCJ9fX0se3R5cGU6Im1hcHBvaW50Iixmb3JjZURMOiEwLGRyYXdEYXRhTGFiZWxzOmZ1bmN0aW9uKCl7bi5wcm90b3R5cGUuZHJhd0RhdGFMYWJlbHMuY2FsbCh0aGlzKTt0aGlzLmRhdGFMYWJlbHNHcm91cCYmdGhpcy5kYXRhTGFiZWxzR3JvdXAuY2xpcCh0aGlzLmNoYXJ0LmNsaXBSZWN0KX19LHthcHBseU9wdGlvbnM6ZnVuY3Rpb24oYyxhKXtjPSJ1bmRlZmluZWQiIT09dHlwZW9mIGMubGF0JiYidW5kZWZpbmVkIiE9PXR5cGVvZiBjLmxvbj9yKGMsdGhpcy5zZXJpZXMuY2hhcnQuZnJvbUxhdExvblRvUG9pbnQoYykpOg0KYztyZXR1cm4gay5wcm90b3R5cGUuYXBwbHlPcHRpb25zLmNhbGwodGhpcyxjLGEpfX0pOyIifSk7eihhLCJwYXJ0cy1tb3JlL0J1YmJsZUxlZ2VuZC5qcyIsW2FbInBhcnRzL0NoYXJ0LmpzIl0sYVsicGFydHMvQ29sb3IuanMiXSxhWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsicGFydHMvTGVnZW5kLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEscixrLG4sYyl7dmFyIHc9ci5wYXJzZTtyPWMuYWRkRXZlbnQ7dmFyIHo9Yy5hcnJheU1heCxBPWMuYXJyYXlNaW4sQj1jLmlzTnVtYmVyLHU9Yy5tZXJnZSxoPWMub2JqZWN0RWFjaCxmPWMucGljayx4PWMuc2V0T3B0aW9ucyxsPWMuc3RhYmxlU29ydCxxPWMud3JhcDsiIjt2YXIgcD1rLlNlcmllcyx5PWsubm9vcDt4KHtsZWdlbmQ6e2J1YmJsZUxlZ2VuZDp7Ym9yZGVyQ29sb3I6dm9pZCAwLGJvcmRlcldpZHRoOjIsY2xhc3NOYW1lOnZvaWQgMCxjb2xvcjp2b2lkIDAsY29ubmVjdG9yQ2xhc3NOYW1lOnZvaWQgMCwNCmNvbm5lY3RvckNvbG9yOnZvaWQgMCxjb25uZWN0b3JEaXN0YW5jZTo2MCxjb25uZWN0b3JXaWR0aDoxLGVuYWJsZWQ6ITEsbGFiZWxzOntjbGFzc05hbWU6dm9pZCAwLGFsbG93T3ZlcmxhcDohMSxmb3JtYXQ6IiIsZm9ybWF0dGVyOnZvaWQgMCxhbGlnbjoicmlnaHQiLHN0eWxlOntmb250U2l6ZToxMCxjb2xvcjp2b2lkIDB9LHg6MCx5OjB9LG1heFNpemU6NjAsbWluU2l6ZToxMCxsZWdlbmRJbmRleDowLHJhbmdlczp7dmFsdWU6dm9pZCAwLGJvcmRlckNvbG9yOnZvaWQgMCxjb2xvcjp2b2lkIDAsY29ubmVjdG9yQ29sb3I6dm9pZCAwfSxzaXplQnk6ImFyZWEiLHNpemVCeUFic29sdXRlVmFsdWU6ITEsekluZGV4OjEselRocmVzaG9sZDowfX19KTt4PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShkLGIpe3RoaXMub3B0aW9ucz10aGlzLnN5bWJvbHM9dGhpcy52aXNpYmxlPXRoaXMucmFuZ2VzPXRoaXMubW92ZW1lbnRYPXRoaXMubWF4TGFiZWw9dGhpcy5sZWdlbmRTeW1ib2w9dGhpcy5sZWdlbmRJdGVtV2lkdGg9DQp0aGlzLmxlZ2VuZEl0ZW1IZWlnaHQ9dGhpcy5sZWdlbmRJdGVtPXRoaXMubGVnZW5kR3JvdXA9dGhpcy5sZWdlbmQ9dGhpcy5mb250TWV0cmljcz10aGlzLmNoYXJ0PXZvaWQgMDt0aGlzLnNldFN0YXRlPXk7dGhpcy5pbml0KGQsYil9YS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihkLGIpe3RoaXMub3B0aW9ucz1kO3RoaXMudmlzaWJsZT0hMDt0aGlzLmNoYXJ0PWIuY2hhcnQ7dGhpcy5sZWdlbmQ9Yn07YS5wcm90b3R5cGUuYWRkVG9MZWdlbmQ9ZnVuY3Rpb24oZCl7ZC5zcGxpY2UodGhpcy5vcHRpb25zLmxlZ2VuZEluZGV4LDAsdGhpcyl9O2EucHJvdG90eXBlLmRyYXdMZWdlbmRTeW1ib2w9ZnVuY3Rpb24oZCl7dmFyIGI9dGhpcy5jaGFydCxlPXRoaXMub3B0aW9ucyxhPWYoZC5vcHRpb25zLml0ZW1EaXN0YW5jZSwyMCksYz1lLnJhbmdlczt2YXIgZz1lLmNvbm5lY3RvckRpc3RhbmNlO3RoaXMuZm9udE1ldHJpY3M9Yi5yZW5kZXJlci5mb250TWV0cmljcyhlLmxhYmVscy5zdHlsZS5mb250U2l6ZS50b1N0cmluZygpKw0KInB4Iik7YyYmYy5sZW5ndGgmJkIoY1swXS52YWx1ZSk/KGwoYyxmdW5jdGlvbihiLGUpe3JldHVybiBlLnZhbHVlLWIudmFsdWV9KSx0aGlzLnJhbmdlcz1jLHRoaXMuc2V0T3B0aW9ucygpLHRoaXMucmVuZGVyKCksYj10aGlzLmdldE1heExhYmVsU2l6ZSgpLGM9dGhpcy5yYW5nZXNbMF0ucmFkaXVzLGQ9MipjLGc9Zy1jK2Iud2lkdGgsZz0wPGc/ZzowLHRoaXMubWF4TGFiZWw9Yix0aGlzLm1vdmVtZW50WD0ibGVmdCI9PT1lLmxhYmVscy5hbGlnbj9nOjAsdGhpcy5sZWdlbmRJdGVtV2lkdGg9ZCtnK2EsdGhpcy5sZWdlbmRJdGVtSGVpZ2h0PWQrdGhpcy5mb250TWV0cmljcy5oLzIpOmQub3B0aW9ucy5idWJibGVMZWdlbmQuYXV0b1Jhbmdlcz0hMH07YS5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbigpe3ZhciBkPXRoaXMucmFuZ2VzLGI9dGhpcy5vcHRpb25zLGU9dGhpcy5jaGFydC5zZXJpZXNbYi5zZXJpZXNJbmRleF0sYT10aGlzLmxlZ2VuZC5iYXNlbGluZSxjPXsiei1pbmRleCI6Yi56SW5kZXgsDQoic3Ryb2tlLXdpZHRoIjpiLmJvcmRlcldpZHRofSxnPXsiei1pbmRleCI6Yi56SW5kZXgsInN0cm9rZS13aWR0aCI6Yi5jb25uZWN0b3JXaWR0aH0sbD10aGlzLmdldExhYmVsU3R5bGVzKCksaD1lLm9wdGlvbnMubWFya2VyLmZpbGxPcGFjaXR5LHA9dGhpcy5jaGFydC5zdHlsZWRNb2RlO2QuZm9yRWFjaChmdW5jdGlvbihtLHEpe3B8fChjLnN0cm9rZT1mKG0uYm9yZGVyQ29sb3IsYi5ib3JkZXJDb2xvcixlLmNvbG9yKSxjLmZpbGw9ZihtLmNvbG9yLGIuY29sb3IsMSE9PWg/dyhlLmNvbG9yKS5zZXRPcGFjaXR5KGgpLmdldCgicmdiYSIpOmUuY29sb3IpLGcuc3Ryb2tlPWYobS5jb25uZWN0b3JDb2xvcixiLmNvbm5lY3RvckNvbG9yLGUuY29sb3IpKTtkW3FdLnJhZGl1cz10aGlzLmdldFJhbmdlUmFkaXVzKG0udmFsdWUpO2RbcV09dShkW3FdLHtjZW50ZXI6ZFswXS5yYWRpdXMtZFtxXS5yYWRpdXMrYX0pO3B8fHUoITAsZFtxXSx7YnViYmxlU3R5bGU6dSghMSxjKSxjb25uZWN0b3JTdHlsZTp1KCExLA0KZyksbGFiZWxTdHlsZTpsfSl9LHRoaXMpfTthLnByb3RvdHlwZS5nZXRMYWJlbFN0eWxlcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMub3B0aW9ucyxiPXt9LGU9ImxlZnQiPT09ZC5sYWJlbHMuYWxpZ24sYT10aGlzLmxlZ2VuZC5vcHRpb25zLnJ0bDtoKGQubGFiZWxzLnN0eWxlLGZ1bmN0aW9uKGUsZCl7ImNvbG9yIiE9PWQmJiJmb250U2l6ZSIhPT1kJiYiei1pbmRleCIhPT1kJiYoYltkXT1lKX0pO3JldHVybiB1KCExLGIseyJmb250LXNpemUiOmQubGFiZWxzLnN0eWxlLmZvbnRTaXplLGZpbGw6ZihkLmxhYmVscy5zdHlsZS5jb2xvciwiIzAwMDAwMCIpLCJ6LWluZGV4IjpkLnpJbmRleCxhbGlnbjphfHxlPyJyaWdodCI6ImxlZnQifSl9O2EucHJvdG90eXBlLmdldFJhbmdlUmFkaXVzPWZ1bmN0aW9uKGQpe3ZhciBiPXRoaXMub3B0aW9ucztyZXR1cm4gdGhpcy5jaGFydC5zZXJpZXNbdGhpcy5vcHRpb25zLnNlcmllc0luZGV4XS5nZXRSYWRpdXMuY2FsbCh0aGlzLGIucmFuZ2VzW2IucmFuZ2VzLmxlbmd0aC0NCjFdLnZhbHVlLGIucmFuZ2VzWzBdLnZhbHVlLGIubWluU2l6ZSxiLm1heFNpemUsZCl9O2EucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBkPXRoaXMuY2hhcnQucmVuZGVyZXIsYj10aGlzLm9wdGlvbnMuelRocmVzaG9sZDt0aGlzLnN5bWJvbHN8fCh0aGlzLnN5bWJvbHM9e2Nvbm5lY3RvcnM6W10sYnViYmxlSXRlbXM6W10sbGFiZWxzOltdfSk7dGhpcy5sZWdlbmRTeW1ib2w9ZC5nKCJidWJibGUtbGVnZW5kIik7dGhpcy5sZWdlbmRJdGVtPWQuZygiYnViYmxlLWxlZ2VuZC1pdGVtIik7dGhpcy5sZWdlbmRTeW1ib2wudHJhbnNsYXRlWD0wO3RoaXMubGVnZW5kU3ltYm9sLnRyYW5zbGF0ZVk9MDt0aGlzLnJhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UudmFsdWU+PWImJnRoaXMucmVuZGVyUmFuZ2UoZSl9LHRoaXMpO3RoaXMubGVnZW5kU3ltYm9sLmFkZCh0aGlzLmxlZ2VuZEl0ZW0pO3RoaXMubGVnZW5kSXRlbS5hZGQodGhpcy5sZWdlbmRHcm91cCk7dGhpcy5oaWRlT3ZlcmxhcHBpbmdMYWJlbHMoKX07DQphLnByb3RvdHlwZS5yZW5kZXJSYW5nZT1mdW5jdGlvbihkKXt2YXIgYj10aGlzLm9wdGlvbnMsZT1iLmxhYmVscyxhPXRoaXMuY2hhcnQucmVuZGVyZXIsYz10aGlzLnN5bWJvbHMsZz1jLmxhYmVscyxmPWQuY2VudGVyLGw9TWF0aC5hYnMoZC5yYWRpdXMpLGg9Yi5jb25uZWN0b3JEaXN0YW5jZXx8MCxwPWUuYWxpZ24scT1lLnN0eWxlLmZvbnRTaXplO2g9dGhpcy5sZWdlbmQub3B0aW9ucy5ydGx8fCJsZWZ0Ij09PXA/LWg6aDtlPWIuY29ubmVjdG9yV2lkdGg7dmFyIHU9dGhpcy5yYW5nZXNbMF0ucmFkaXVzfHwwLHk9Zi1sLWIuYm9yZGVyV2lkdGgvMitlLzI7cT1xLzItKHRoaXMuZm9udE1ldHJpY3MuaC1xKS8yO3ZhciBrPWEuc3R5bGVkTW9kZTsiY2VudGVyIj09PXAmJihoPTAsYi5jb25uZWN0b3JEaXN0YW5jZT0wLGQubGFiZWxTdHlsZS5hbGlnbj0iY2VudGVyIik7cD15K2IubGFiZWxzLnk7dmFyIG49dStoK2IubGFiZWxzLng7Yy5idWJibGVJdGVtcy5wdXNoKGEuY2lyY2xlKHUsDQpmKygoeSUxPzE6LjUpLShlJTI/MDouNSkpLGwpLmF0dHIoaz97fTpkLmJ1YmJsZVN0eWxlKS5hZGRDbGFzcygoaz8iaGlnaGNoYXJ0cy1jb2xvci0iK3RoaXMub3B0aW9ucy5zZXJpZXNJbmRleCsiICI6IiIpKyJoaWdoY2hhcnRzLWJ1YmJsZS1sZWdlbmQtc3ltYm9sICIrKGIuY2xhc3NOYW1lfHwiIikpLmFkZCh0aGlzLmxlZ2VuZFN5bWJvbCkpO2MuY29ubmVjdG9ycy5wdXNoKGEucGF0aChhLmNyaXNwTGluZShbWyJNIix1LHldLFsiTCIsdStoLHldXSxiLmNvbm5lY3RvcldpZHRoKSkuYXR0cihrP3t9OmQuY29ubmVjdG9yU3R5bGUpLmFkZENsYXNzKChrPyJoaWdoY2hhcnRzLWNvbG9yLSIrdGhpcy5vcHRpb25zLnNlcmllc0luZGV4KyIgIjoiIikrImhpZ2hjaGFydHMtYnViYmxlLWxlZ2VuZC1jb25uZWN0b3JzICIrKGIuY29ubmVjdG9yQ2xhc3NOYW1lfHwiIikpLmFkZCh0aGlzLmxlZ2VuZFN5bWJvbCkpO2Q9YS50ZXh0KHRoaXMuZm9ybWF0TGFiZWwoZCksbixwK3EpLmF0dHIoaz8NCnt9OmQubGFiZWxTdHlsZSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYnViYmxlLWxlZ2VuZC1sYWJlbHMgIisoYi5sYWJlbHMuY2xhc3NOYW1lfHwiIikpLmFkZCh0aGlzLmxlZ2VuZFN5bWJvbCk7Zy5wdXNoKGQpO2QucGxhY2VkPSEwO2QuYWxpZ25BdHRyPXt4Om4seTpwK3F9fTthLnByb3RvdHlwZS5nZXRNYXhMYWJlbFNpemU9ZnVuY3Rpb24oKXt2YXIgZCxiO3RoaXMuc3ltYm9scy5sYWJlbHMuZm9yRWFjaChmdW5jdGlvbihlKXtiPWUuZ2V0QkJveCghMCk7ZD1kP2Iud2lkdGg+ZC53aWR0aD9iOmQ6Yn0pO3JldHVybiBkfHx7fX07YS5wcm90b3R5cGUuZm9ybWF0TGFiZWw9ZnVuY3Rpb24oZCl7dmFyIGI9dGhpcy5vcHRpb25zLGU9Yi5sYWJlbHMuZm9ybWF0dGVyO2I9Yi5sYWJlbHMuZm9ybWF0O3ZhciBhPXRoaXMuY2hhcnQubnVtYmVyRm9ybWF0dGVyO3JldHVybiBiP2MuZm9ybWF0KGIsZCk6ZT9lLmNhbGwoZCk6YShkLnZhbHVlLDEpfTthLnByb3RvdHlwZS5oaWRlT3ZlcmxhcHBpbmdMYWJlbHM9DQpmdW5jdGlvbigpe3ZhciBkPXRoaXMuY2hhcnQsYj10aGlzLnN5bWJvbHM7IXRoaXMub3B0aW9ucy5sYWJlbHMuYWxsb3dPdmVybGFwJiZiJiYoZC5oaWRlT3ZlcmxhcHBpbmdMYWJlbHMoYi5sYWJlbHMpLGIubGFiZWxzLmZvckVhY2goZnVuY3Rpb24oZSxkKXtlLm5ld09wYWNpdHk/ZS5uZXdPcGFjaXR5IT09ZS5vbGRPcGFjaXR5JiZiLmNvbm5lY3RvcnNbZF0uc2hvdygpOmIuY29ubmVjdG9yc1tkXS5oaWRlKCl9KSl9O2EucHJvdG90eXBlLmdldFJhbmdlcz1mdW5jdGlvbigpe3ZhciBkPXRoaXMubGVnZW5kLmJ1YmJsZUxlZ2VuZCxiPWQub3B0aW9ucy5yYW5nZXMsZSxhPU51bWJlci5NQVhfVkFMVUUsYz0tTnVtYmVyLk1BWF9WQUxVRTtkLmNoYXJ0LnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuaXNCdWJibGUmJiFiLmlnbm9yZVNlcmllcyYmKGU9Yi56RGF0YS5maWx0ZXIoQiksZS5sZW5ndGgmJihhPWYoYi5vcHRpb25zLnpNaW4sTWF0aC5taW4oYSxNYXRoLm1heChBKGUpLA0KITE9PT1iLm9wdGlvbnMuZGlzcGxheU5lZ2F0aXZlP2Iub3B0aW9ucy56VGhyZXNob2xkOi1OdW1iZXIuTUFYX1ZBTFVFKSkpLGM9ZihiLm9wdGlvbnMuek1heCxNYXRoLm1heChjLHooZSkpKSkpfSk7dmFyIGc9YT09PWM/W3t2YWx1ZTpjfV06W3t2YWx1ZTphfSx7dmFsdWU6KGErYykvMn0se3ZhbHVlOmMsYXV0b1JhbmdlczohMH1dO2IubGVuZ3RoJiZiWzBdLnJhZGl1cyYmZy5yZXZlcnNlKCk7Zy5mb3JFYWNoKGZ1bmN0aW9uKGUsZCl7YiYmYltkXSYmKGdbZF09dSghMSxiW2RdLGUpKX0pO3JldHVybiBnfTthLnByb3RvdHlwZS5wcmVkaWN0QnViYmxlU2l6ZXM9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmNoYXJ0LGI9dGhpcy5mb250TWV0cmljcyxlPWQubGVnZW5kLm9wdGlvbnMsYT0iaG9yaXpvbnRhbCI9PT1lLmxheW91dCxjPWE/ZC5sZWdlbmQubGFzdExpbmVIZWlnaHQ6MCxnPWQucGxvdFNpemVYLGY9ZC5wbG90U2l6ZVksbD1kLnNlcmllc1t0aGlzLm9wdGlvbnMuc2VyaWVzSW5kZXhdOw0KZD1NYXRoLmNlaWwobC5taW5QeFNpemUpO3ZhciBoPU1hdGguY2VpbChsLm1heFB4U2l6ZSk7bD1sLm9wdGlvbnMubWF4U2l6ZTt2YXIgcD1NYXRoLm1pbihmLGcpO2lmKGUuZmxvYXRpbmd8fCEvJSQvLnRlc3QobCkpYj1oO2Vsc2UgaWYobD1wYXJzZUZsb2F0KGwpLGI9KHArYy1iLmgvMikqbC8xMDAvKGwvMTAwKzEpLGEmJmYtYj49Z3x8IWEmJmctYj49ZiliPWg7cmV0dXJuW2QsTWF0aC5jZWlsKGIpXX07YS5wcm90b3R5cGUudXBkYXRlUmFuZ2VzPWZ1bmN0aW9uKGQsYil7dmFyIGU9dGhpcy5sZWdlbmQub3B0aW9ucy5idWJibGVMZWdlbmQ7ZS5taW5TaXplPWQ7ZS5tYXhTaXplPWI7ZS5yYW5nZXM9dGhpcy5nZXRSYW5nZXMoKX07YS5wcm90b3R5cGUuY29ycmVjdFNpemVzPWZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5sZWdlbmQsYj10aGlzLmNoYXJ0LnNlcmllc1t0aGlzLm9wdGlvbnMuc2VyaWVzSW5kZXhdOzE8TWF0aC5hYnMoTWF0aC5jZWlsKGIubWF4UHhTaXplKS10aGlzLm9wdGlvbnMubWF4U2l6ZSkmJg0KKHRoaXMudXBkYXRlUmFuZ2VzKHRoaXMub3B0aW9ucy5taW5TaXplLGIubWF4UHhTaXplKSxkLnJlbmRlcigpKX07cmV0dXJuIGF9KCk7cihuLCJhZnRlckdldEFsbEl0ZW1zIixmdW5jdGlvbihhKXt2YXIgZD10aGlzLmJ1YmJsZUxlZ2VuZCxiPXRoaXMub3B0aW9ucyxlPWIuYnViYmxlTGVnZW5kLGM9dGhpcy5jaGFydC5nZXRWaXNpYmxlQnViYmxlU2VyaWVzSW5kZXgoKTtkJiZkLnJhbmdlcyYmZC5yYW5nZXMubGVuZ3RoJiYoZS5yYW5nZXMubGVuZ3RoJiYoZS5hdXRvUmFuZ2VzPSEhZS5yYW5nZXNbMF0uYXV0b1JhbmdlcyksdGhpcy5kZXN0cm95SXRlbShkKSk7MDw9YyYmYi5lbmFibGVkJiZlLmVuYWJsZWQmJihlLnNlcmllc0luZGV4PWMsdGhpcy5idWJibGVMZWdlbmQ9bmV3IGsuQnViYmxlTGVnZW5kKGUsdGhpcyksdGhpcy5idWJibGVMZWdlbmQuYWRkVG9MZWdlbmQoYS5hbGxJdGVtcykpfSk7YS5wcm90b3R5cGUuZ2V0VmlzaWJsZUJ1YmJsZVNlcmllc0luZGV4PWZ1bmN0aW9uKCl7Zm9yKHZhciBhPQ0KdGhpcy5zZXJpZXMsZD0wO2Q8YS5sZW5ndGg7KXtpZihhW2RdJiZhW2RdLmlzQnViYmxlJiZhW2RdLnZpc2libGUmJmFbZF0uekRhdGEubGVuZ3RoKXJldHVybiBkO2QrK31yZXR1cm4tMX07bi5wcm90b3R5cGUuZ2V0TGluZXNIZWlnaHRzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5hbGxJdGVtcyxkPVtdLGI9YS5sZW5ndGgsZSxjPTA7Zm9yKGU9MDtlPGI7ZSsrKWlmKGFbZV0ubGVnZW5kSXRlbUhlaWdodCYmKGFbZV0uaXRlbUhlaWdodD1hW2VdLmxlZ2VuZEl0ZW1IZWlnaHQpLGFbZV09PT1hW2ItMV18fGFbZSsxXSYmYVtlXS5fbGVnZW5kSXRlbVBvc1sxXSE9PWFbZSsxXS5fbGVnZW5kSXRlbVBvc1sxXSl7ZC5wdXNoKHtoZWlnaHQ6MH0pO3ZhciBmPWRbZC5sZW5ndGgtMV07Zm9yKGM7Yzw9ZTtjKyspYVtjXS5pdGVtSGVpZ2h0PmYuaGVpZ2h0JiYoZi5oZWlnaHQ9YVtjXS5pdGVtSGVpZ2h0KTtmLnN0ZXA9ZX1yZXR1cm4gZH07bi5wcm90b3R5cGUucmV0cmFuc2xhdGVJdGVtcz1mdW5jdGlvbihhKXt2YXIgZCwNCmIsZSxjPXRoaXMub3B0aW9ucy5ydGwsZj0wO3RoaXMuYWxsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihnLGwpe2Q9Zy5sZWdlbmRHcm91cC50cmFuc2xhdGVYO2I9Zy5fbGVnZW5kSXRlbVBvc1sxXTtpZigoZT1nLm1vdmVtZW50WCl8fGMmJmcucmFuZ2VzKWU9Yz9kLWcub3B0aW9ucy5tYXhTaXplLzI6ZCtlLGcubGVnZW5kR3JvdXAuYXR0cih7dHJhbnNsYXRlWDplfSk7bD5hW2ZdLnN0ZXAmJmYrKztnLmxlZ2VuZEdyb3VwLmF0dHIoe3RyYW5zbGF0ZVk6TWF0aC5yb3VuZChiK2FbZl0uaGVpZ2h0LzIpfSk7Zy5fbGVnZW5kSXRlbVBvc1sxXT1iK2FbZl0uaGVpZ2h0LzJ9KX07cihwLCJsZWdlbmRJdGVtQ2xpY2siLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxkPXRoaXMudmlzaWJsZSxiPXRoaXMuY2hhcnQubGVnZW5kO2ImJmIuYnViYmxlTGVnZW5kJiYodGhpcy52aXNpYmxlPSFkLHRoaXMuaWdub3JlU2VyaWVzPWQsYT0wPD1hLmdldFZpc2libGVCdWJibGVTZXJpZXNJbmRleCgpLA0KYi5idWJibGVMZWdlbmQudmlzaWJsZSE9PWEmJihiLnVwZGF0ZSh7YnViYmxlTGVnZW5kOntlbmFibGVkOmF9fSksYi5idWJibGVMZWdlbmQudmlzaWJsZT1hKSx0aGlzLnZpc2libGU9ZCl9KTtxKGEucHJvdG90eXBlLCJkcmF3Q2hhcnRCb3giLGZ1bmN0aW9uKGEsZCxiKXt2YXIgZT10aGlzLmxlZ2VuZCxjPTA8PXRoaXMuZ2V0VmlzaWJsZUJ1YmJsZVNlcmllc0luZGV4KCk7aWYoZSYmZS5vcHRpb25zLmVuYWJsZWQmJmUuYnViYmxlTGVnZW5kJiZlLm9wdGlvbnMuYnViYmxlTGVnZW5kLmF1dG9SYW5nZXMmJmMpe3ZhciBmPWUuYnViYmxlTGVnZW5kLm9wdGlvbnM7Yz1lLmJ1YmJsZUxlZ2VuZC5wcmVkaWN0QnViYmxlU2l6ZXMoKTtlLmJ1YmJsZUxlZ2VuZC51cGRhdGVSYW5nZXMoY1swXSxjWzFdKTtmLnBsYWNlZHx8KGUuZ3JvdXAucGxhY2VkPSExLGUuYWxsSXRlbXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmxlZ2VuZEdyb3VwLnRyYW5zbGF0ZVk9bnVsbH0pKTtlLnJlbmRlcigpOw0KdGhpcy5nZXRNYXJnaW5zKCk7dGhpcy5heGVzLmZvckVhY2goZnVuY3Rpb24oYil7Yi52aXNpYmxlJiZiLnJlbmRlcigpO2YucGxhY2VkfHwoYi5zZXRTY2FsZSgpLGIudXBkYXRlTmFtZXMoKSxoKGIudGlja3MsZnVuY3Rpb24oYil7Yi5pc05ldz0hMDtiLmlzTmV3TGFiZWw9ITB9KSl9KTtmLnBsYWNlZD0hMDt0aGlzLmdldE1hcmdpbnMoKTthLmNhbGwodGhpcyxkLGIpO2UuYnViYmxlTGVnZW5kLmNvcnJlY3RTaXplcygpO2UucmV0cmFuc2xhdGVJdGVtcyhlLmdldExpbmVzSGVpZ2h0cygpKX1lbHNlIGEuY2FsbCh0aGlzLGQsYiksZSYmZS5vcHRpb25zLmVuYWJsZWQmJmUuYnViYmxlTGVnZW5kJiYoZS5yZW5kZXIoKSxlLnJldHJhbnNsYXRlSXRlbXMoZS5nZXRMaW5lc0hlaWdodHMoKSkpfSk7ay5CdWJibGVMZWdlbmQ9eDtyZXR1cm4gay5CdWJibGVMZWdlbmR9KTt6KGEsInBhcnRzLW1vcmUvQnViYmxlU2VyaWVzLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdLGFbInBhcnRzL0NvbG9yLmpzIl0sDQphWyJwYXJ0cy9Qb2ludC5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLHIsayxuKXt2YXIgYz1yLnBhcnNlLHc9bi5hcnJheU1heCx6PW4uYXJyYXlNaW4sQT1uLmNsYW1wLEI9bi5leHRlbmQsdT1uLmlzTnVtYmVyLGg9bi5waWNrLGY9bi5wSW50O3I9bi5zZXJpZXNUeXBlO249YS5BeGlzO3ZhciB4PWEubm9vcCxsPWEuU2VyaWVzLHE9YS5zZXJpZXNUeXBlcztyKCJidWJibGUiLCJzY2F0dGVyIix7ZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQuen0saW5zaWRlOiEwLHZlcnRpY2FsQWxpZ246Im1pZGRsZSJ9LGFuaW1hdGlvbkxpbWl0OjI1MCxtYXJrZXI6e2xpbmVDb2xvcjpudWxsLGxpbmVXaWR0aDoxLGZpbGxPcGFjaXR5Oi41LHJhZGl1czpudWxsLHN0YXRlczp7aG92ZXI6e3JhZGl1c1BsdXM6MH19LHN5bWJvbDoiY2lyY2xlIn0sbWluU2l6ZTo4LG1heFNpemU6IjIwJSIsc29mdFRocmVzaG9sZDohMSxzdGF0ZXM6e2hvdmVyOntoYWxvOntzaXplOjV9fX0sDQp0b29sdGlwOntwb2ludEZvcm1hdDoiKHtwb2ludC54fSwge3BvaW50Lnl9KSwgU2l6ZToge3BvaW50Lnp9In0sdHVyYm9UaHJlc2hvbGQ6MCx6VGhyZXNob2xkOjAsem9uZUF4aXM6InoifSx7cG9pbnRBcnJheU1hcDpbInkiLCJ6Il0scGFyYWxsZWxBcnJheXM6WyJ4IiwieSIsInoiXSx0cmFja2VyR3JvdXBzOlsiZ3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiXSxzcGVjaWFsR3JvdXA6Imdyb3VwIixidWJibGVQYWRkaW5nOiEwLHpvbmVBeGlzOiJ6IixkaXJlY3RUb3VjaDohMCxpc0J1YmJsZTohMCxwb2ludEF0dHJpYnM6ZnVuY3Rpb24oYSxmKXt2YXIgZz10aGlzLm9wdGlvbnMubWFya2VyLmZpbGxPcGFjaXR5O2E9bC5wcm90b3R5cGUucG9pbnRBdHRyaWJzLmNhbGwodGhpcyxhLGYpOzEhPT1nJiYoYS5maWxsPWMoYS5maWxsKS5zZXRPcGFjaXR5KGcpLmdldCgicmdiYSIpKTtyZXR1cm4gYX0sZ2V0UmFkaWk6ZnVuY3Rpb24oYSxjLGYpe3ZhciBkPXRoaXMuekRhdGEsYj10aGlzLnlEYXRhLA0KZT1mLm1pblB4U2l6ZSxnPWYubWF4UHhTaXplLGw9W107dmFyIGg9MDtmb3IoZj1kLmxlbmd0aDtoPGY7aCsrKXt2YXIgcD1kW2hdO2wucHVzaCh0aGlzLmdldFJhZGl1cyhhLGMsZSxnLHAsYltoXSkpfXRoaXMucmFkaWk9bH0sZ2V0UmFkaXVzOmZ1bmN0aW9uKGEsYyxmLGQsYixlKXt2YXIgZz10aGlzLm9wdGlvbnMsbD0id2lkdGgiIT09Zy5zaXplQnksaD1nLnpUaHJlc2hvbGQscD1jLWEscT0uNTtpZihudWxsPT09ZXx8bnVsbD09PWIpcmV0dXJuIG51bGw7aWYodShiKSl7Zy5zaXplQnlBYnNvbHV0ZVZhbHVlJiYoYj1NYXRoLmFicyhiLWgpLHA9TWF0aC5tYXgoYy1oLE1hdGguYWJzKGEtaCkpLGE9MCk7aWYoYjxhKXJldHVybiBmLzItMTswPHAmJihxPShiLWEpL3ApfWwmJjA8PXEmJihxPU1hdGguc3FydChxKSk7cmV0dXJuIE1hdGguY2VpbChmK3EqKGQtZikpLzJ9LGFuaW1hdGU6ZnVuY3Rpb24oYSl7IWEmJnRoaXMucG9pbnRzLmxlbmd0aDx0aGlzLm9wdGlvbnMuYW5pbWF0aW9uTGltaXQmJg0KdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1hLmdyYXBoaWM7YyYmYy53aWR0aCYmKHRoaXMuaGFzUmVuZGVyZWR8fGMuYXR0cih7eDphLnBsb3RYLHk6YS5wbG90WSx3aWR0aDoxLGhlaWdodDoxfSksYy5hbmltYXRlKHRoaXMubWFya2VyQXR0cmlicyhhKSx0aGlzLm9wdGlvbnMuYW5pbWF0aW9uKSl9LHRoaXMpfSxoYXNEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnByb2Nlc3NlZFhEYXRhLmxlbmd0aH0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGEsYz10aGlzLmRhdGEsZj10aGlzLnJhZGlpO3Euc2NhdHRlci5wcm90b3R5cGUudHJhbnNsYXRlLmNhbGwodGhpcyk7Zm9yKGE9Yy5sZW5ndGg7YS0tOyl7dmFyIGQ9Y1thXTt2YXIgYj1mP2ZbYV06MDt1KGIpJiZiPj10aGlzLm1pblB4U2l6ZS8yPyhkLm1hcmtlcj1CKGQubWFya2VyLHtyYWRpdXM6Yix3aWR0aDoyKmIsaGVpZ2h0OjIqYn0pLGQuZGxCb3g9e3g6ZC5wbG90WC1iLHk6ZC5wbG90WS1iLHdpZHRoOjIqDQpiLGhlaWdodDoyKmJ9KTpkLnNoYXBlQXJncz1kLnBsb3RZPWQuZGxCb3g9dm9pZCAwfX0sYWxpZ25EYXRhTGFiZWw6cS5jb2x1bW4ucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLGJ1aWxkS0RUcmVlOngsYXBwbHlab25lczp4fSx7aGFsb1BhdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIGsucHJvdG90eXBlLmhhbG9QYXRoLmNhbGwodGhpcywwPT09YT8wOih0aGlzLm1hcmtlcj90aGlzLm1hcmtlci5yYWRpdXN8fDA6MCkrYSl9LHR0QmVsb3c6ITF9KTtuLnByb3RvdHlwZS5iZWZvcmVQYWRkaW5nPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxjPXRoaXMubGVuLGc9dGhpcy5jaGFydCxkPTAsYj1jLGU9dGhpcy5pc1hBeGlzLGw9ZT8ieERhdGEiOiJ5RGF0YSIscT10aGlzLm1pbixrPXt9LG49TWF0aC5taW4oZy5wbG90V2lkdGgsZy5wbG90SGVpZ2h0KSx4PU51bWJlci5NQVhfVkFMVUUscj0tTnVtYmVyLk1BWF9WQUxVRSxDPXRoaXMubWF4LXEsQj1jL0MsRD1bXTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBkPQ0KYi5vcHRpb25zOyFiLmJ1YmJsZVBhZGRpbmd8fCFiLnZpc2libGUmJmcub3B0aW9ucy5jaGFydC5pZ25vcmVIaWRkZW5TZXJpZXN8fChhLmFsbG93Wm9vbU91dHNpZGU9ITAsRC5wdXNoKGIpLGUmJihbIm1pblNpemUiLCJtYXhTaXplIl0uZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgYT1kW2JdLGU9LyUkLy50ZXN0KGEpO2E9ZihhKTtrW2JdPWU/biphLzEwMDphfSksYi5taW5QeFNpemU9ay5taW5TaXplLGIubWF4UHhTaXplPU1hdGgubWF4KGsubWF4U2l6ZSxrLm1pblNpemUpLGI9Yi56RGF0YS5maWx0ZXIodSksYi5sZW5ndGgmJih4PWgoZC56TWluLEEoeihiKSwhMT09PWQuZGlzcGxheU5lZ2F0aXZlP2QuelRocmVzaG9sZDotTnVtYmVyLk1BWF9WQUxVRSx4KSkscj1oKGQuek1heCxNYXRoLm1heChyLHcoYikpKSkpKX0pO0QuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgZj1jW2xdLGc9Zi5sZW5ndGg7ZSYmYy5nZXRSYWRpaSh4LHIsYyk7aWYoMDxDKWZvcig7Zy0tOylpZih1KGZbZ10pJiYNCmEuZGF0YU1pbjw9ZltnXSYmZltnXTw9YS5tYXgpe3ZhciBoPWMucmFkaWk/Yy5yYWRpaVtnXTowO2Q9TWF0aC5taW4oKGZbZ10tcSkqQi1oLGQpO2I9TWF0aC5tYXgoKGZbZ10tcSkqQitoLGIpfX0pO0QubGVuZ3RoJiYwPEMmJiF0aGlzLmxvZ2FyaXRobWljJiYoYi09YyxCKj0oYytNYXRoLm1heCgwLGQpLU1hdGgubWluKGIsYykpL2MsW1sibWluIiwidXNlck1pbiIsZF0sWyJtYXgiLCJ1c2VyTWF4IixiXV0uZm9yRWFjaChmdW5jdGlvbihiKXsidW5kZWZpbmVkIj09PXR5cGVvZiBoKGEub3B0aW9uc1tiWzBdXSxhW2JbMV1dKSYmKGFbYlswXV0rPWJbMl0vQil9KSl9OyIifSk7eihhLCJwYXJ0cy1tYXAvTWFwQnViYmxlU2VyaWVzLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdLGFbInBhcnRzL1BvaW50LmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEscixrKXt2YXIgbj1rLm1lcmdlO2s9ay5zZXJpZXNUeXBlO3ZhciBjPWEuc2VyaWVzVHlwZXM7Yy5idWJibGUmJg0KaygibWFwYnViYmxlIiwiYnViYmxlIix7YW5pbWF0aW9uTGltaXQ6NTAwLHRvb2x0aXA6e3BvaW50Rm9ybWF0OiJ7cG9pbnQubmFtZX06IHtwb2ludC56fSJ9fSx7eHlGcm9tU2hhcGU6ITAsdHlwZToibWFwYnViYmxlIixwb2ludEFycmF5TWFwOlsieiJdLGdldE1hcERhdGE6Yy5tYXAucHJvdG90eXBlLmdldE1hcERhdGEsZ2V0Qm94OmMubWFwLnByb3RvdHlwZS5nZXRCb3gsc2V0RGF0YTpjLm1hcC5wcm90b3R5cGUuc2V0RGF0YSxzZXRPcHRpb25zOmMubWFwLnByb3RvdHlwZS5zZXRPcHRpb25zfSx7YXBwbHlPcHRpb25zOmZ1bmN0aW9uKGEsayl7cmV0dXJuIGEmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEubGF0JiYidW5kZWZpbmVkIiE9PXR5cGVvZiBhLmxvbj9yLnByb3RvdHlwZS5hcHBseU9wdGlvbnMuY2FsbCh0aGlzLG4oYSx0aGlzLnNlcmllcy5jaGFydC5mcm9tTGF0TG9uVG9Qb2ludChhKSksayk6Yy5tYXAucHJvdG90eXBlLnBvaW50Q2xhc3MucHJvdG90eXBlLmFwcGx5T3B0aW9ucy5jYWxsKHRoaXMsDQphLGspfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgdGhpcy56fSx0dEJlbG93OiExfSk7IiJ9KTt6KGEsInBhcnRzLW1hcC9IZWF0bWFwU2VyaWVzLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdLGFbIm1peGlucy9sZWdlbmQtc3ltYm9sLmpzIl0sYVsicGFydHMvU1ZHUmVuZGVyZXIuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyLGssbil7dmFyIGM9bi5jbGFtcCx3PW4uZXh0ZW5kLHo9bi5maXJlRXZlbnQsQT1uLmlzTnVtYmVyLEI9bi5tZXJnZSx1PW4ucGljaztuPW4uc2VyaWVzVHlwZTsiIjt2YXIgaD1hLmNvbG9yTWFwUG9pbnRNaXhpbixmPWEuU2VyaWVzLHg9ay5wcm90b3R5cGUuc3ltYm9scztuKCJoZWF0bWFwIiwic2NhdHRlciIse2FuaW1hdGlvbjohMSxib3JkZXJXaWR0aDowLG51bGxDb2xvcjoiI2Y3ZjdmNyIsZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQudmFsdWV9LA0KaW5zaWRlOiEwLHZlcnRpY2FsQWxpZ246Im1pZGRsZSIsY3JvcDohMSxvdmVyZmxvdzohMSxwYWRkaW5nOjB9LG1hcmtlcjp7c3ltYm9sOiJyZWN0IixyYWRpdXM6MCxsaW5lQ29sb3I6dm9pZCAwLHN0YXRlczp7aG92ZXI6e2xpbmVXaWR0aFBsdXM6MH0sc2VsZWN0Ont9fX0sY2xpcDohMCxwb2ludFJhbmdlOm51bGwsdG9vbHRpcDp7cG9pbnRGb3JtYXQ6Intwb2ludC54fSwge3BvaW50Lnl9OiB7cG9pbnQudmFsdWV9PGJyLz4ifSxzdGF0ZXM6e2hvdmVyOntoYWxvOiExLGJyaWdodG5lc3M6LjJ9fX0sQihhLmNvbG9yTWFwU2VyaWVzTWl4aW4se3BvaW50QXJyYXlNYXA6WyJ5IiwidmFsdWUiXSxoYXNQb2ludFNwZWNpZmljT3B0aW9uczohMCxnZXRFeHRyZW1lc0Zyb21BbGw6ITAsZGlyZWN0VG91Y2g6ITAsaW5pdDpmdW5jdGlvbigpe2YucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBhPXRoaXMub3B0aW9uczthLnBvaW50UmFuZ2U9dShhLnBvaW50UmFuZ2UsDQphLmNvbHNpemV8fDEpO3RoaXMueUF4aXMuYXhpc1BvaW50UmFuZ2U9YS5yb3dzaXplfHwxO3coeCx7ZWxsaXBzZTp4LmNpcmNsZSxyZWN0Onguc3F1YXJlfSl9LGdldFN5bWJvbDpmLnByb3RvdHlwZS5nZXRTeW1ib2wsc2V0Q2xpcDpmdW5jdGlvbihhKXt2YXIgYz10aGlzLmNoYXJ0O2YucHJvdG90eXBlLnNldENsaXAuYXBwbHkodGhpcyxhcmd1bWVudHMpOyghMSE9PXRoaXMub3B0aW9ucy5jbGlwfHxhKSYmdGhpcy5tYXJrZXJHcm91cC5jbGlwKChhfHx0aGlzLmNsaXBCb3gpJiZ0aGlzLnNoYXJlZENsaXBLZXk/Y1t0aGlzLnNoYXJlZENsaXBLZXldOmMuY2xpcFJlY3QpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsYz1hLm1hcmtlciYmYS5tYXJrZXIuc3ltYm9sfHwiIixmPXhbY10/YzoicmVjdCI7YT10aGlzLm9wdGlvbnM7dmFyIGg9LTEhPT1bImNpcmNsZSIsInNxdWFyZSJdLmluZGV4T2YoZik7dGhpcy5nZW5lcmF0ZVBvaW50cygpO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGQ9DQphLmdldENlbGxBdHRyaWJ1dGVzKCksYj17eDpNYXRoLm1pbihkLngxLGQueDIpLHk6TWF0aC5taW4oZC55MSxkLnkyKSx3aWR0aDpNYXRoLm1heChNYXRoLmFicyhkLngyLWQueDEpLDApLGhlaWdodDpNYXRoLm1heChNYXRoLmFicyhkLnkyLWQueTEpLDApfTt2YXIgZT1hLmhhc0ltYWdlPTA9PT0oYS5tYXJrZXImJmEubWFya2VyLnN5bWJvbHx8Y3x8IiIpLmluZGV4T2YoInVybCIpO2lmKGgpe3ZhciBnPU1hdGguYWJzKGIud2lkdGgtYi5oZWlnaHQpO2IueD1NYXRoLm1pbihkLngxLGQueDIpKyhiLndpZHRoPGIuaGVpZ2h0PzA6Zy8yKTtiLnk9TWF0aC5taW4oZC55MSxkLnkyKSsoYi53aWR0aDxiLmhlaWdodD9nLzI6MCk7Yi53aWR0aD1iLmhlaWdodD1NYXRoLm1pbihiLndpZHRoLGIuaGVpZ2h0KX1nPXtwbG90WDooZC54MStkLngyKS8yLHBsb3RZOihkLnkxK2QueTIpLzIsY2xpZW50WDooZC54MStkLngyKS8yLHNoYXBlVHlwZToicGF0aCIsc2hhcGVBcmdzOkIoITAsYix7ZDp4W2ZdKGIueCwNCmIueSxiLndpZHRoLGIuaGVpZ2h0KX0pfTtlJiYoYS5tYXJrZXI9e3dpZHRoOmIud2lkdGgsaGVpZ2h0OmIuaGVpZ2h0fSk7dyhhLGcpfSk7eih0aGlzLCJhZnRlclRyYW5zbGF0ZSIpfSxwb2ludEF0dHJpYnM6ZnVuY3Rpb24oYyxoKXt2YXIgbD1mLnByb3RvdHlwZS5wb2ludEF0dHJpYnMuY2FsbCh0aGlzLGMsaCkscT10aGlzLm9wdGlvbnN8fHt9LGc9dGhpcy5jaGFydC5vcHRpb25zLnBsb3RPcHRpb25zfHx7fSxkPWcuc2VyaWVzfHx7fSxiPWcuaGVhdG1hcHx8e307Zz1xLmJvcmRlckNvbG9yfHxiLmJvcmRlckNvbG9yfHxkLmJvcmRlckNvbG9yO2Q9cS5ib3JkZXJXaWR0aHx8Yi5ib3JkZXJXaWR0aHx8ZC5ib3JkZXJXaWR0aHx8bFsic3Ryb2tlLXdpZHRoIl07bC5zdHJva2U9YyYmYy5tYXJrZXImJmMubWFya2VyLmxpbmVDb2xvcnx8cS5tYXJrZXImJnEubWFya2VyLmxpbmVDb2xvcnx8Z3x8dGhpcy5jb2xvcjtsWyJzdHJva2Utd2lkdGgiXT1kO2gmJihjPUIocS5zdGF0ZXNbaF0sDQpxLm1hcmtlciYmcS5tYXJrZXIuc3RhdGVzW2hdLGMub3B0aW9ucy5zdGF0ZXMmJmMub3B0aW9ucy5zdGF0ZXNbaF18fHt9KSxoPWMuYnJpZ2h0bmVzcyxsLmZpbGw9Yy5jb2xvcnx8YS5jb2xvcihsLmZpbGwpLmJyaWdodGVuKGh8fDApLmdldCgpLGwuc3Ryb2tlPWMubGluZUNvbG9yKTtyZXR1cm4gbH0sbWFya2VyQXR0cmliczpmdW5jdGlvbihhLGMpe3ZhciBmPWEubWFya2VyfHx7fSxoPXRoaXMub3B0aW9ucy5tYXJrZXJ8fHt9LGc9YS5zaGFwZUFyZ3N8fHt9LGQ9e307aWYoYS5oYXNJbWFnZSlyZXR1cm57eDphLnBsb3RYLHk6YS5wbG90WX07aWYoYyl7dmFyIGI9aC5zdGF0ZXNbY118fHt9O3ZhciBlPWYuc3RhdGVzJiZmLnN0YXRlc1tjXXx8e307W1sid2lkdGgiLCJ4Il0sWyJoZWlnaHQiLCJ5Il1dLmZvckVhY2goZnVuY3Rpb24oYSl7ZFthWzBdXT0oZVthWzBdXXx8YlthWzBdXXx8Z1thWzBdXSkrKGVbYVswXSsiUGx1cyJdfHxiW2FbMF0rIlBsdXMiXXx8MCk7ZFthWzFdXT0NCmdbYVsxXV0rKGdbYVswXV0tZFthWzBdXSkvMn0pfXJldHVybiBjP2Q6Z30sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYoKHRoaXMub3B0aW9ucy5tYXJrZXJ8fHt9KS5lbmFibGVkfHx0aGlzLl9oYXNQb2ludE1hcmtlcnMpZi5wcm90b3R5cGUuZHJhd1BvaW50cy5jYWxsKHRoaXMpLHRoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5ncmFwaGljJiZjLmdyYXBoaWNbYS5jaGFydC5zdHlsZWRNb2RlPyJjc3MiOiJhbmltYXRlIl0oYS5jb2xvckF0dHJpYnMoYykpfSl9LGhhc0RhdGE6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucHJvY2Vzc2VkWERhdGEubGVuZ3RofSxnZXRWYWxpZFBvaW50czpmdW5jdGlvbihhLGMpe3JldHVybiBmLnByb3RvdHlwZS5nZXRWYWxpZFBvaW50cy5jYWxsKHRoaXMsYSxjLCEwKX0sZ2V0Qm94OmEubm9vcCxkcmF3TGVnZW5kU3ltYm9sOnIuZHJhd1JlY3RhbmdsZSxhbGlnbkRhdGFMYWJlbDphLnNlcmllc1R5cGVzLmNvbHVtbi5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWwsDQpnZXRFeHRyZW1lczpmdW5jdGlvbigpe3ZhciBhPWYucHJvdG90eXBlLmdldEV4dHJlbWVzLmNhbGwodGhpcyx0aGlzLnZhbHVlRGF0YSksYz1hLmRhdGFNaW47YT1hLmRhdGFNYXg7QShjKSYmKHRoaXMudmFsdWVNaW49Yyk7QShhKSYmKHRoaXMudmFsdWVNYXg9YSk7cmV0dXJuIGYucHJvdG90eXBlLmdldEV4dHJlbWVzLmNhbGwodGhpcyl9fSksQihoLHthcHBseU9wdGlvbnM6ZnVuY3Rpb24oYyxmKXtjPWEuUG9pbnQucHJvdG90eXBlLmFwcGx5T3B0aW9ucy5jYWxsKHRoaXMsYyxmKTtjLmZvcm1hdFByZWZpeD1jLmlzTnVsbHx8bnVsbD09PWMudmFsdWU/Im51bGwiOiJwb2ludCI7cmV0dXJuIGN9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gSW5maW5pdHkhPT10aGlzLnZhbHVlJiYtSW5maW5pdHkhPT10aGlzLnZhbHVlfSxoYWxvUGF0aDpmdW5jdGlvbihhKXtpZighYSlyZXR1cm5bXTt2YXIgYz10aGlzLnNoYXBlQXJncztyZXR1cm5bIk0iLGMueC1hLGMueS1hLCJMIixjLngtDQphLGMueStjLmhlaWdodCthLGMueCtjLndpZHRoK2EsYy55K2MuaGVpZ2h0K2EsYy54K2Mud2lkdGgrYSxjLnktYSwiWiJdfSxnZXRDZWxsQXR0cmlidXRlczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VyaWVzLGY9YS5vcHRpb25zLGg9KGYuY29sc2l6ZXx8MSkvMixrPShmLnJvd3NpemV8fDEpLzIsZz1hLnhBeGlzLGQ9YS55QXhpcyxiPXRoaXMub3B0aW9ucy5tYXJrZXJ8fGEub3B0aW9ucy5tYXJrZXI7YT1hLnBvaW50UGxhY2VtZW50VG9YVmFsdWUoKTt2YXIgZT11KHRoaXMucG9pbnRQYWRkaW5nLGYucG9pbnRQYWRkaW5nLDApLG09e3gxOmMoTWF0aC5yb3VuZChnLmxlbi0oZy50cmFuc2xhdGUodGhpcy54LWgsITEsITAsITEsITAsLWEpfHwwKSksLWcubGVuLDIqZy5sZW4pLHgyOmMoTWF0aC5yb3VuZChnLmxlbi0oZy50cmFuc2xhdGUodGhpcy54K2gsITEsITAsITEsITAsLWEpfHwwKSksLWcubGVuLDIqZy5sZW4pLHkxOmMoTWF0aC5yb3VuZChkLnRyYW5zbGF0ZSh0aGlzLnktDQprLCExLCEwLCExLCEwKXx8MCksLWQubGVuLDIqZC5sZW4pLHkyOmMoTWF0aC5yb3VuZChkLnRyYW5zbGF0ZSh0aGlzLnkraywhMSwhMCwhMSwhMCl8fDApLC1kLmxlbiwyKmQubGVuKX07W1sid2lkdGgiLCJ4Il0sWyJoZWlnaHQiLCJ5Il1dLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGM9YVswXTthPWFbMV07dmFyIGQ9YSsiMSIsZj1hKyIyIixnPU1hdGguYWJzKG1bZF0tbVtmXSksaD1iJiZiLmxpbmVXaWR0aHx8MCxsPU1hdGguYWJzKG1bZF0rbVtmXSkvMjtiW2NdJiZiW2NdPGcmJihtW2RdPWwtYltjXS8yLWgvMixtW2ZdPWwrYltjXS8yK2gvMik7ZSYmKCJ5Ij09PWEmJihkPWYsZj1hKyIxIiksbVtkXSs9ZSxtW2ZdLT1lKX0pO3JldHVybiBtfX0pKTsiIn0pO3ooYSwicGFydHMtbWFwL0dlb0pTT04uanMiLFthWyJwYXJ0cy9DaGFydC5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyLGspe2Z1bmN0aW9uIG4oYSwNCmMpe3ZhciBmLGg9ITEsbD1hLngscT1hLnk7YT0wO2ZvcihmPWMubGVuZ3RoLTE7YTxjLmxlbmd0aDtmPWErKyl7dmFyIHA9Y1thXVsxXT5xO3ZhciBrPWNbZl1bMV0+cTtwIT09ayYmbDwoY1tmXVswXS1jW2FdWzBdKSoocS1jW2FdWzFdKS8oY1tmXVsxXS1jW2FdWzFdKStjW2FdWzBdJiYoaD0haCl9cmV0dXJuIGh9dmFyIGM9ci53aW4sdz1rLmVycm9yLHo9ay5leHRlbmQsQT1rLmZvcm1hdCxCPWsubWVyZ2U7az1rLndyYXA7IiI7YS5wcm90b3R5cGUudHJhbnNmb3JtRnJvbUxhdExvbj1mdW5jdGlvbihhLGgpe3ZhciBmLGs9KG51bGw9PT0oZj10aGlzLnVzZXJPcHRpb25zLmNoYXJ0KXx8dm9pZCAwPT09Zj92b2lkIDA6Zi5wcm9qNCl8fGMucHJvajQ7aWYoIWspcmV0dXJuIHcoMjEsITEsdGhpcykse3g6MCx5Om51bGx9O2E9ayhoLmNycyxbYS5sb24sYS5sYXRdKTtmPWguY29zQW5nbGV8fGgucm90YXRpb24mJk1hdGguY29zKGgucm90YXRpb24pO2s9aC5zaW5BbmdsZXx8aC5yb3RhdGlvbiYmDQpNYXRoLnNpbihoLnJvdGF0aW9uKTthPWgucm90YXRpb24/W2FbMF0qZithWzFdKmssLWFbMF0qaythWzFdKmZdOmE7cmV0dXJue3g6KChhWzBdLShoLnhvZmZzZXR8fDApKSooaC5zY2FsZXx8MSkrKGgueHBhbnx8MCkpKihoLmpzb25yZXN8fDEpKyhoLmpzb25tYXJnaW5YfHwwKSx5OigoKGgueW9mZnNldHx8MCktYVsxXSkqKGguc2NhbGV8fDEpKyhoLnlwYW58fDApKSooaC5qc29ucmVzfHwxKS0oaC5qc29ubWFyZ2luWXx8MCl9fTthLnByb3RvdHlwZS50cmFuc2Zvcm1Ub0xhdExvbj1mdW5jdGlvbihhLGgpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIGMucHJvajQpdygyMSwhMSx0aGlzKTtlbHNle2E9e3g6KChhLngtKGguanNvbm1hcmdpblh8fDApKS8oaC5qc29ucmVzfHwxKS0oaC54cGFufHwwKSkvKGguc2NhbGV8fDEpKyhoLnhvZmZzZXR8fDApLHk6KCgtYS55LShoLmpzb25tYXJnaW5ZfHwwKSkvKGguanNvbnJlc3x8MSkrKGgueXBhbnx8MCkpLyhoLnNjYWxlfHwxKSsoaC55b2Zmc2V0fHwNCjApfTt2YXIgZj1oLmNvc0FuZ2xlfHxoLnJvdGF0aW9uJiZNYXRoLmNvcyhoLnJvdGF0aW9uKSxrPWguc2luQW5nbGV8fGgucm90YXRpb24mJk1hdGguc2luKGgucm90YXRpb24pO2g9Yy5wcm9qNChoLmNycywiV0dTODQiLGgucm90YXRpb24/e3g6YS54KmYrYS55Ki1rLHk6YS54KmsrYS55KmZ9OmEpO3JldHVybntsYXQ6aC55LGxvbjpoLnh9fX07YS5wcm90b3R5cGUuZnJvbVBvaW50VG9MYXRMb249ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5tYXBUcmFuc2Zvcm1zLGY7aWYoYyl7Zm9yKGYgaW4gYylpZihPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChjLGYpJiZjW2ZdLmhpdFpvbmUmJm4oe3g6YS54LHk6LWEueX0sY1tmXS5oaXRab25lLmNvb3JkaW5hdGVzWzBdKSlyZXR1cm4gdGhpcy50cmFuc2Zvcm1Ub0xhdExvbihhLGNbZl0pO3JldHVybiB0aGlzLnRyYW5zZm9ybVRvTGF0TG9uKGEsY1siZGVmYXVsdCJdKX13KDIyLCExLHRoaXMpfTthLnByb3RvdHlwZS5mcm9tTGF0TG9uVG9Qb2ludD0NCmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMubWFwVHJhbnNmb3JtcyxmO2lmKCFjKXJldHVybiB3KDIyLCExLHRoaXMpLHt4OjAseTpudWxsfTtmb3IoZiBpbiBjKWlmKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKGMsZikmJmNbZl0uaGl0Wm9uZSl7dmFyIGs9dGhpcy50cmFuc2Zvcm1Gcm9tTGF0TG9uKGEsY1tmXSk7aWYobih7eDprLngseTotay55fSxjW2ZdLmhpdFpvbmUuY29vcmRpbmF0ZXNbMF0pKXJldHVybiBrfXJldHVybiB0aGlzLnRyYW5zZm9ybUZyb21MYXRMb24oYSxjWyJkZWZhdWx0Il0pfTtyLmdlb2pzb249ZnVuY3Rpb24oYSxjLGYpe3ZhciBoPVtdLGw9W10saz1mdW5jdGlvbihhKXthLmZvckVhY2goZnVuY3Rpb24oYSxjKXswPT09Yz9sLnB1c2goWyJNIixhWzBdLC1hWzFdXSk6bC5wdXNoKFsiTCIsYVswXSwtYVsxXV0pfSl9O2M9Y3x8Im1hcCI7YS5mZWF0dXJlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBmPWEuZ2VvbWV0cnksZz1mLnR5cGU7Zj1mLmNvb3JkaW5hdGVzOw0KYT1hLnByb3BlcnRpZXM7dmFyIGQ7bD1bXTsibWFwIj09PWN8fCJtYXBidWJibGUiPT09Yz8oIlBvbHlnb24iPT09Zz8oZi5mb3JFYWNoKGspLGwucHVzaChbIloiXSkpOiJNdWx0aVBvbHlnb24iPT09ZyYmKGYuZm9yRWFjaChmdW5jdGlvbihhKXthLmZvckVhY2goayl9KSxsLnB1c2goWyJaIl0pKSxsLmxlbmd0aCYmKGQ9e3BhdGg6bH0pKToibWFwbGluZSI9PT1jPygiTGluZVN0cmluZyI9PT1nP2soZik6Ik11bHRpTGluZVN0cmluZyI9PT1nJiZmLmZvckVhY2goayksbC5sZW5ndGgmJihkPXtwYXRoOmx9KSk6Im1hcHBvaW50Ij09PWMmJiJQb2ludCI9PT1nJiYoZD17eDpmWzBdLHk6LWZbMV19KTtkJiZoLnB1c2goeihkLHtuYW1lOmEubmFtZXx8YS5OQU1FLHByb3BlcnRpZXM6YX0pKX0pO2YmJmEuY29weXJpZ2h0U2hvcnQmJihmLmNoYXJ0Lm1hcENyZWRpdHM9QShmLmNoYXJ0Lm9wdGlvbnMuY3JlZGl0cy5tYXBUZXh0LHtnZW9qc29uOmF9KSxmLmNoYXJ0Lm1hcENyZWRpdHNGdWxsPQ0KQShmLmNoYXJ0Lm9wdGlvbnMuY3JlZGl0cy5tYXBUZXh0RnVsbCx7Z2VvanNvbjphfSkpO3JldHVybiBofTtrKGEucHJvdG90eXBlLCJhZGRDcmVkaXRzIixmdW5jdGlvbihhLGMpe2M9QighMCx0aGlzLm9wdGlvbnMuY3JlZGl0cyxjKTt0aGlzLm1hcENyZWRpdHMmJihjLmhyZWY9bnVsbCk7YS5jYWxsKHRoaXMsYyk7dGhpcy5jcmVkaXRzJiZ0aGlzLm1hcENyZWRpdHNGdWxsJiZ0aGlzLmNyZWRpdHMuYXR0cih7dGl0bGU6dGhpcy5tYXBDcmVkaXRzRnVsbH0pfSl9KTt6KGEsInBhcnRzLW1hcC9NYXAuanMiLFthWyJwYXJ0cy9DaGFydC5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9PcHRpb25zLmpzIl0sYVsicGFydHMvU1ZHUmVuZGVyZXIuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxyLGssbixjKXtmdW5jdGlvbiB3KGEsYyxoLGsscCxuLGcsZCl7cmV0dXJuW1siTSIsYStwLGNdLFsiTCIsYStoLW4sY10sWyJDIixhK2gtbi8yLGMsDQphK2gsYytuLzIsYStoLGMrbl0sWyJMIixhK2gsYytrLWddLFsiQyIsYStoLGMray1nLzIsYStoLWcvMixjK2ssYStoLWcsYytrXSxbIkwiLGErZCxjK2tdLFsiQyIsYStkLzIsYytrLGEsYytrLWQvMixhLGMray1kXSxbIkwiLGEsYytwXSxbIkMiLGEsYytwLzIsYStwLzIsYyxhK3AsY10sWyJaIl1dfWs9ay5kZWZhdWx0T3B0aW9uczt2YXIgej1jLmV4dGVuZCxBPWMuZ2V0T3B0aW9ucyxCPWMubWVyZ2UsdT1jLnBpY2s7Yz1yLlJlbmRlcmVyO3ZhciBoPXIuVk1MUmVuZGVyZXI7eihrLmxhbmcse3pvb21JbjoiWm9vbSBpbiIsem9vbU91dDoiWm9vbSBvdXQifSk7ay5tYXBOYXZpZ2F0aW9uPXtidXR0b25PcHRpb25zOnthbGlnblRvOiJwbG90Qm94IixhbGlnbjoibGVmdCIsdmVydGljYWxBbGlnbjoidG9wIix4OjAsd2lkdGg6MTgsaGVpZ2h0OjE4LHBhZGRpbmc6NSxzdHlsZTp7Zm9udFNpemU6IjE1cHgiLGZvbnRXZWlnaHQ6ImJvbGQifSx0aGVtZTp7InN0cm9rZS13aWR0aCI6MSwNCiJ0ZXh0LWFsaWduIjoiY2VudGVyIn19LGJ1dHRvbnM6e3pvb21Jbjp7b25jbGljazpmdW5jdGlvbigpe3RoaXMubWFwWm9vbSguNSl9LHRleHQ6IisiLHk6MH0sem9vbU91dDp7b25jbGljazpmdW5jdGlvbigpe3RoaXMubWFwWm9vbSgyKX0sdGV4dDoiLSIseToyOH19LG1vdXNlV2hlZWxTZW5zaXRpdml0eToxLjF9O3Iuc3BsaXRQYXRoPWZ1bmN0aW9uKGEpeyJzdHJpbmciPT09dHlwZW9mIGEmJihhPWEucmVwbGFjZSgvKFtBLVphLXpdKS9nLCIgJDEgIikucmVwbGFjZSgvXlxzKi8sIiIpLnJlcGxhY2UoL1xzKiQvLCIiKSxhPWEuc3BsaXQoL1sgLDtdKy8pLm1hcChmdW5jdGlvbihhKXtyZXR1cm4vW0EtemEtel0vLnRlc3QoYSk/YTpwYXJzZUZsb2F0KGEpfSkpO3JldHVybiBuLnByb3RvdHlwZS5wYXRoVG9TZWdtZW50cyhhKX07ci5tYXBzPXt9O24ucHJvdG90eXBlLnN5bWJvbHMudG9wYnV0dG9uPWZ1bmN0aW9uKGEsYyxoLGsscCl7cD1wJiZwLnJ8fDA7cmV0dXJuIHcoYS0xLA0KYy0xLGgsayxwLHAsMCwwKX07bi5wcm90b3R5cGUuc3ltYm9scy5ib3R0b21idXR0b249ZnVuY3Rpb24oYSxjLGgsayxwKXtwPXAmJnAucnx8MDtyZXR1cm4gdyhhLTEsYy0xLGgsaywwLDAscCxwKX07Yz09PWgmJlsidG9wYnV0dG9uIiwiYm90dG9tYnV0dG9uIl0uZm9yRWFjaChmdW5jdGlvbihhKXtoLnByb3RvdHlwZS5zeW1ib2xzW2FdPW4ucHJvdG90eXBlLnN5bWJvbHNbYV19KTtyLk1hcD1yLm1hcENoYXJ0PWZ1bmN0aW9uKGMsaCxrKXt2YXIgZj0ic3RyaW5nIj09PXR5cGVvZiBjfHxjLm5vZGVOYW1lLGw9YXJndW1lbnRzW2Y/MTowXSxuPWwsZz17ZW5kT25UaWNrOiExLHZpc2libGU6ITEsbWluUGFkZGluZzowLG1heFBhZGRpbmc6MCxzdGFydE9uVGljazohMX0sZD1BKCkuY3JlZGl0czt2YXIgYj1sLnNlcmllcztsLnNlcmllcz1udWxsO2w9Qih7Y2hhcnQ6e3Bhbm5pbmc6e2VuYWJsZWQ6ITAsdHlwZToieHkifSx0eXBlOiJtYXAifSxjcmVkaXRzOnttYXBUZXh0OnUoZC5tYXBUZXh0LA0KJyBcdTAwYTkgPGEgaHJlZj0ie2dlb2pzb24uY29weXJpZ2h0VXJsfSI+e2dlb2pzb24uY29weXJpZ2h0U2hvcnR9PC9hPicpLG1hcFRleHRGdWxsOnUoZC5tYXBUZXh0RnVsbCwie2dlb2pzb24uY29weXJpZ2h0fSIpfSx0b29sdGlwOntmb2xsb3dUb3VjaE1vdmU6ITF9LHhBeGlzOmcseUF4aXM6QihnLHtyZXZlcnNlZDohMH0pfSxsLHtjaGFydDp7aW52ZXJ0ZWQ6ITEsYWxpZ25UaWNrczohMX19KTtsLnNlcmllcz1uLnNlcmllcz1iO3JldHVybiBmP25ldyBhKGMsbCxrKTpuZXcgYShsLGgpfX0pO3ooYSwibWFzdGVycy9tb2R1bGVzL21hcC5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsNCi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1hcC5qcy5tYXA="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEFubm90YXRpb25zIG1vZHVsZQoKIChjKSAyMDA5LTIwMTkgVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYSl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYVsiZGVmYXVsdCJdPWEsbW9kdWxlLmV4cG9ydHM9YSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvYW5ub3RhdGlvbnMiLFsiaGlnaGNoYXJ0cyJdLGZ1bmN0aW9uKHApe2EocCk7YS5IaWdoY2hhcnRzPXA7cmV0dXJuIGF9KTphKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oYSl7ZnVuY3Rpb24gcChhLGQsbSxlKXthLmhhc093blByb3BlcnR5KGQpfHwoYVtkXT1lLmFwcGx5KG51bGwsbSkpfWE9YT9hLl9tb2R1bGVzOnt9O3AoYSwiYW5ub3RhdGlvbnMvZXZlbnRFbWl0dGVyTWl4aW4uanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsZCl7dmFyIHE9ZC5hZGRFdmVudCxlPWQuZmlyZUV2ZW50LAp2PWQuaW5BcnJheSxiPWQub2JqZWN0RWFjaCxBPWQucGljayx6PWQucmVtb3ZlRXZlbnQ7cmV0dXJue2FkZEV2ZW50czpmdW5jdGlvbigpe3ZhciBjPXRoaXMsaD1mdW5jdGlvbihoKXtxKGgsYS5pc1RvdWNoRGV2aWNlPyJ0b3VjaHN0YXJ0IjoibW91c2Vkb3duIixmdW5jdGlvbihoKXtjLm9uTW91c2VEb3duKGgpfSl9O2godGhpcy5ncmFwaGljLmVsZW1lbnQpOyhjLmxhYmVsc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5vcHRpb25zLnVzZUhUTUwmJmMuZ3JhcGhpYy50ZXh0JiZoKGMuZ3JhcGhpYy50ZXh0LmVsZW1lbnQpfSk7YihjLm9wdGlvbnMuZXZlbnRzLGZ1bmN0aW9uKGgsYil7dmFyIGs9ZnVuY3Rpb24oZyl7ImNsaWNrIj09PWImJmMuY2FuY2VsQ2xpY2t8fGguY2FsbChjLGMuY2hhcnQucG9pbnRlci5ub3JtYWxpemUoZyksYy50YXJnZXQpfTtpZigtMT09PXYoYixjLm5vbkRPTUV2ZW50c3x8W10pKWMuZ3JhcGhpYy5vbihiLGspO2Vsc2UgcShjLGIsayl9KTtpZihjLm9wdGlvbnMuZHJhZ2dhYmxlJiYKKHEoYyxhLmlzVG91Y2hEZXZpY2U/InRvdWNobW92ZSI6ImRyYWciLGMub25EcmFnKSwhYy5ncmFwaGljLnJlbmRlcmVyLnN0eWxlZE1vZGUpKXt2YXIgcj17Y3Vyc29yOnt4OiJldy1yZXNpemUiLHk6Im5zLXJlc2l6ZSIseHk6Im1vdmUifVtjLm9wdGlvbnMuZHJhZ2dhYmxlXX07Yy5ncmFwaGljLmNzcyhyKTsoYy5sYWJlbHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2Mub3B0aW9ucy51c2VIVE1MJiZjLmdyYXBoaWMudGV4dCYmYy5ncmFwaGljLnRleHQuY3NzKHIpfSl9Yy5pc1VwZGF0aW5nfHxlKGMsImFkZCIpfSxyZW1vdmVEb2NFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZURyYWcmJih0aGlzLnJlbW92ZURyYWc9dGhpcy5yZW1vdmVEcmFnKCkpO3RoaXMucmVtb3ZlTW91c2VVcCYmKHRoaXMucmVtb3ZlTW91c2VVcD10aGlzLnJlbW92ZU1vdXNlVXAoKSl9LG9uTW91c2VEb3duOmZ1bmN0aW9uKGMpe3ZhciBoPXRoaXMsYj1oLmNoYXJ0LnBvaW50ZXI7Yy5wcmV2ZW50RGVmYXVsdCYmCmMucHJldmVudERlZmF1bHQoKTtpZigyIT09Yy5idXR0b24pe2M9Yi5ub3JtYWxpemUoYyk7dmFyIHg9Yy5jaGFydFg7dmFyIGs9Yy5jaGFydFk7aC5jYW5jZWxDbGljaz0hMTtoLmNoYXJ0Lmhhc0RyYWdnZWRBbm5vdGF0aW9uPSEwO2gucmVtb3ZlRHJhZz1xKGEuZG9jLGEuaXNUb3VjaERldmljZT8idG91Y2htb3ZlIjoibW91c2Vtb3ZlIixmdW5jdGlvbihjKXtoLmhhc0RyYWdnZWQ9ITA7Yz1iLm5vcm1hbGl6ZShjKTtjLnByZXZDaGFydFg9eDtjLnByZXZDaGFydFk9aztlKGgsImRyYWciLGMpO3g9Yy5jaGFydFg7az1jLmNoYXJ0WX0pO2gucmVtb3ZlTW91c2VVcD1xKGEuZG9jLGEuaXNUb3VjaERldmljZT8idG91Y2hlbmQiOiJtb3VzZXVwIixmdW5jdGlvbihjKXtoLmNhbmNlbENsaWNrPWguaGFzRHJhZ2dlZDtoLmhhc0RyYWdnZWQ9ITE7aC5jaGFydC5oYXNEcmFnZ2VkQW5ub3RhdGlvbj0hMTtlKEEoaC50YXJnZXQsaCksImFmdGVyVXBkYXRlIik7aC5vbk1vdXNlVXAoYyl9KX19LApvbk1vdXNlVXA6ZnVuY3Rpb24oYyl7dmFyIGg9dGhpcy5jaGFydDtjPXRoaXMudGFyZ2V0fHx0aGlzO3ZhciBiPWgub3B0aW9ucy5hbm5vdGF0aW9ucztoPWguYW5ub3RhdGlvbnMuaW5kZXhPZihjKTt0aGlzLnJlbW92ZURvY0V2ZW50cygpO2JbaF09Yy5vcHRpb25zfSxvbkRyYWc6ZnVuY3Rpb24oYyl7aWYodGhpcy5jaGFydC5pc0luc2lkZVBsb3QoYy5jaGFydFgtdGhpcy5jaGFydC5wbG90TGVmdCxjLmNoYXJ0WS10aGlzLmNoYXJ0LnBsb3RUb3ApKXt2YXIgYj10aGlzLm1vdXNlTW92ZVRvVHJhbnNsYXRpb24oYyk7IngiPT09dGhpcy5vcHRpb25zLmRyYWdnYWJsZSYmKGIueT0wKTsieSI9PT10aGlzLm9wdGlvbnMuZHJhZ2dhYmxlJiYoYi54PTApO3RoaXMucG9pbnRzLmxlbmd0aD90aGlzLnRyYW5zbGF0ZShiLngsYi55KToodGhpcy5zaGFwZXMuZm9yRWFjaChmdW5jdGlvbihjKXtjLnRyYW5zbGF0ZShiLngsYi55KX0pLHRoaXMubGFiZWxzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy50cmFuc2xhdGUoYi54LApiLnkpfSkpO3RoaXMucmVkcmF3KCExKX19LG1vdXNlTW92ZVRvUmFkaWFuczpmdW5jdGlvbihjLGIsYSl7dmFyIGg9Yy5wcmV2Q2hhcnRZLWEsaz1jLnByZXZDaGFydFgtYjthPWMuY2hhcnRZLWE7Yz1jLmNoYXJ0WC1iO3RoaXMuY2hhcnQuaW52ZXJ0ZWQmJihiPWssaz1oLGg9YixiPWMsYz1hLGE9Yik7cmV0dXJuIE1hdGguYXRhbjIoYSxjKS1NYXRoLmF0YW4yKGgsayl9LG1vdXNlTW92ZVRvVHJhbnNsYXRpb246ZnVuY3Rpb24oYyl7dmFyIGI9Yy5jaGFydFgtYy5wcmV2Q2hhcnRYO2M9Yy5jaGFydFktYy5wcmV2Q2hhcnRZO2lmKHRoaXMuY2hhcnQuaW52ZXJ0ZWQpe3ZhciBhPWM7Yz1iO2I9YX1yZXR1cm57eDpiLHk6Y319LG1vdXNlTW92ZVRvU2NhbGU6ZnVuY3Rpb24oYyxiLGEpe2I9KGMuY2hhcnRYLWJ8fDEpLyhjLnByZXZDaGFydFgtYnx8MSk7Yz0oYy5jaGFydFktYXx8MSkvKGMucHJldkNoYXJ0WS1hfHwxKTt0aGlzLmNoYXJ0LmludmVydGVkJiYoYT1jLGM9YixiPWEpO3JldHVybnt4OmIsCnk6Y319LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZURvY0V2ZW50cygpO3oodGhpcyk7dGhpcy5oY0V2ZW50cz1udWxsfX19KTtwKGEsImFubm90YXRpb25zL0NvbnRyb2xQb2ludC5qcyIsW2FbInBhcnRzL1V0aWxpdGllcy5qcyJdLGFbImFubm90YXRpb25zL2V2ZW50RW1pdHRlck1peGluLmpzIl1dLGZ1bmN0aW9uKGEsZCl7dmFyIHE9YS5tZXJnZSxlPWEucGljaztyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYSx2LGMpe3RoaXMuYWRkRXZlbnRzPWQuYWRkRXZlbnRzO3RoaXMuZ3JhcGhpYz12b2lkIDA7dGhpcy5tb3VzZU1vdmVUb1JhZGlhbnM9ZC5tb3VzZU1vdmVUb1JhZGlhbnM7dGhpcy5tb3VzZU1vdmVUb1NjYWxlPWQubW91c2VNb3ZlVG9TY2FsZTt0aGlzLm1vdXNlTW92ZVRvVHJhbnNsYXRpb249ZC5tb3VzZU1vdmVUb1RyYW5zbGF0aW9uO3RoaXMub25EcmFnPWQub25EcmFnO3RoaXMub25Nb3VzZURvd249ZC5vbk1vdXNlRG93bjt0aGlzLm9uTW91c2VVcD0KZC5vbk1vdXNlVXA7dGhpcy5yZW1vdmVEb2NFdmVudHM9ZC5yZW1vdmVEb2NFdmVudHM7dGhpcy5ub25ET01FdmVudHM9WyJkcmFnIl07dGhpcy5jaGFydD1iO3RoaXMudGFyZ2V0PWE7dGhpcy5vcHRpb25zPXY7dGhpcy5pbmRleD1lKHYuaW5kZXgsYyl9YS5wcm90b3R5cGUuc2V0VmlzaWJpbGl0eT1mdW5jdGlvbihiKXt0aGlzLmdyYXBoaWMuYXR0cigidmlzaWJpbGl0eSIsYj8idmlzaWJsZSI6ImhpZGRlbiIpO3RoaXMub3B0aW9ucy52aXNpYmxlPWJ9O2EucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQsYT10aGlzLm9wdGlvbnM7dGhpcy5ncmFwaGljPWIucmVuZGVyZXIuc3ltYm9sKGEuc3ltYm9sLDAsMCxhLndpZHRoLGEuaGVpZ2h0KS5hZGQoYi5jb250cm9sUG9pbnRzR3JvdXApLmNzcyhhLnN0eWxlKTt0aGlzLnNldFZpc2liaWxpdHkoYS52aXNpYmxlKTt0aGlzLmFkZEV2ZW50cygpfTthLnByb3RvdHlwZS5yZWRyYXc9ZnVuY3Rpb24oYil7dGhpcy5ncmFwaGljW2I/CiJhbmltYXRlIjoiYXR0ciJdKHRoaXMub3B0aW9ucy5wb3NpdGlvbmVyLmNhbGwodGhpcyx0aGlzLnRhcmdldCkpfTthLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7ZC5kZXN0cm95LmNhbGwodGhpcyk7dGhpcy5ncmFwaGljJiYodGhpcy5ncmFwaGljPXRoaXMuZ3JhcGhpYy5kZXN0cm95KCkpO3RoaXMub3B0aW9ucz10aGlzLnRhcmdldD10aGlzLmNoYXJ0PW51bGx9O2EucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbihiKXt2YXIgYT10aGlzLmNoYXJ0LGQ9dGhpcy50YXJnZXQsYz10aGlzLmluZGV4O2I9cSghMCx0aGlzLm9wdGlvbnMsYik7dGhpcy5kZXN0cm95KCk7dGhpcy5jb25zdHJ1Y3RvcihhLGQsYixjKTt0aGlzLnJlbmRlcihhLmNvbnRyb2xQb2ludHNHcm91cCk7dGhpcy5yZWRyYXcoKX07cmV0dXJuIGF9KCl9KTtwKGEsImFubm90YXRpb25zL01vY2tQb2ludC5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSwKZCl7dmFyIHE9ZC5kZWZpbmVkLGU9ZC5maXJlRXZlbnQ7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChiLGQsZSl7dGhpcy55PXRoaXMueD10aGlzLnBsb3RZPXRoaXMucGxvdFg9dGhpcy5pc0luc2lkZT12b2lkIDA7dGhpcy5tb2NrPSEwO3RoaXMuc2VyaWVzPXt2aXNpYmxlOiEwLGNoYXJ0OmIsZ2V0UGxvdEJveDphLlNlcmllcy5wcm90b3R5cGUuZ2V0UGxvdEJveH07dGhpcy50YXJnZXQ9ZHx8bnVsbDt0aGlzLm9wdGlvbnM9ZTt0aGlzLmFwcGx5T3B0aW9ucyh0aGlzLmdldE9wdGlvbnMoKSl9ZC5mcm9tUG9pbnQ9ZnVuY3Rpb24oYil7cmV0dXJuIG5ldyBkKGIuc2VyaWVzLmNoYXJ0LG51bGwse3g6Yi54LHk6Yi55LHhBeGlzOmIuc2VyaWVzLnhBeGlzLHlBeGlzOmIuc2VyaWVzLnlBeGlzfSl9O2QucG9pbnRUb1BpeGVscz1mdW5jdGlvbihiLGEpe3ZhciBkPWIuc2VyaWVzLGM9ZC5jaGFydCxoPWIucGxvdFgscj1iLnBsb3RZO2MuaW52ZXJ0ZWQmJihiLm1vY2s/KGg9Yi5wbG90WSwKcj1iLnBsb3RYKTooaD1jLnBsb3RXaWR0aC1iLnBsb3RZLHI9Yy5wbG90SGVpZ2h0LWIucGxvdFgpKTtkJiYhYSYmKGI9ZC5nZXRQbG90Qm94KCksaCs9Yi50cmFuc2xhdGVYLHIrPWIudHJhbnNsYXRlWSk7cmV0dXJue3g6aCx5OnJ9fTtkLnBvaW50VG9PcHRpb25zPWZ1bmN0aW9uKGIpe3JldHVybnt4OmIueCx5OmIueSx4QXhpczpiLnNlcmllcy54QXhpcyx5QXhpczpiLnNlcmllcy55QXhpc319O2QucHJvdG90eXBlLmhhc0R5bmFtaWNPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09PXR5cGVvZiB0aGlzLm9wdGlvbnN9O2QucHJvdG90eXBlLmdldE9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYXNEeW5hbWljT3B0aW9ucygpP3RoaXMub3B0aW9ucyh0aGlzLnRhcmdldCk6dGhpcy5vcHRpb25zfTtkLnByb3RvdHlwZS5hcHBseU9wdGlvbnM9ZnVuY3Rpb24oYil7dGhpcy5jb21tYW5kPWIuY29tbWFuZDt0aGlzLnNldEF4aXMoYiwieCIpO3RoaXMuc2V0QXhpcyhiLAoieSIpO3RoaXMucmVmcmVzaCgpfTtkLnByb3RvdHlwZS5zZXRBeGlzPWZ1bmN0aW9uKGIsZCl7ZCs9IkF4aXMiO2I9YltkXTt2YXIgZT10aGlzLnNlcmllcy5jaGFydDt0aGlzLnNlcmllc1tkXT1iIGluc3RhbmNlb2YgYS5BeGlzP2I6cShiKT9lW2RdW2JdfHxlLmdldChiKTpudWxsfTtkLnByb3RvdHlwZS50b0FuY2hvcj1mdW5jdGlvbigpe3ZhciBiPVt0aGlzLnBsb3RYLHRoaXMucGxvdFksMCwwXTt0aGlzLnNlcmllcy5jaGFydC5pbnZlcnRlZCYmKGJbMF09dGhpcy5wbG90WSxiWzFdPXRoaXMucGxvdFgpO3JldHVybiBifTtkLnByb3RvdHlwZS5nZXRMYWJlbENvbmZpZz1mdW5jdGlvbigpe3JldHVybnt4OnRoaXMueCx5OnRoaXMueSxwb2ludDp0aGlzfX07ZC5wcm90b3R5cGUuaXNJbnNpZGVQbG90PWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5wbG90WCxhPXRoaXMucGxvdFksZD10aGlzLnNlcmllcy54QXhpcyxjPXRoaXMuc2VyaWVzLnlBeGlzLGg9e3g6Yix5OmEsaXNJbnNpZGVQbG90OiEwfTsKZCYmKGguaXNJbnNpZGVQbG90PXEoYikmJjA8PWImJmI8PWQubGVuKTtjJiYoaC5pc0luc2lkZVBsb3Q9aC5pc0luc2lkZVBsb3QmJnEoYSkmJjA8PWEmJmE8PWMubGVuKTtlKHRoaXMuc2VyaWVzLmNoYXJ0LCJhZnRlcklzSW5zaWRlUGxvdCIsaCk7cmV0dXJuIGguaXNJbnNpZGVQbG90fTtkLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5zZXJpZXMsYT1iLnhBeGlzO2I9Yi55QXhpczt2YXIgZD10aGlzLmdldE9wdGlvbnMoKTthPyh0aGlzLng9ZC54LHRoaXMucGxvdFg9YS50b1BpeGVscyhkLngsITApKToodGhpcy54PW51bGwsdGhpcy5wbG90WD1kLngpO2I/KHRoaXMueT1kLnksdGhpcy5wbG90WT1iLnRvUGl4ZWxzKGQueSwhMCkpOih0aGlzLnk9bnVsbCx0aGlzLnBsb3RZPWQueSk7dGhpcy5pc0luc2lkZT10aGlzLmlzSW5zaWRlUGxvdCgpfTtkLnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24oYixhLGQsYyl7dGhpcy5oYXNEeW5hbWljT3B0aW9ucygpfHwKKHRoaXMucGxvdFgrPWQsdGhpcy5wbG90WSs9Yyx0aGlzLnJlZnJlc2hPcHRpb25zKCkpfTtkLnByb3RvdHlwZS5zY2FsZT1mdW5jdGlvbihiLGEsZCxjKXtpZighdGhpcy5oYXNEeW5hbWljT3B0aW9ucygpKXt2YXIgaD10aGlzLnBsb3RZKmM7dGhpcy5wbG90WD0oMS1kKSpiK3RoaXMucGxvdFgqZDt0aGlzLnBsb3RZPSgxLWMpKmEraDt0aGlzLnJlZnJlc2hPcHRpb25zKCl9fTtkLnByb3RvdHlwZS5yb3RhdGU9ZnVuY3Rpb24oYixhLGQpe2lmKCF0aGlzLmhhc0R5bmFtaWNPcHRpb25zKCkpe3ZhciBjPU1hdGguY29zKGQpO2Q9TWF0aC5zaW4oZCk7dmFyIGg9dGhpcy5wbG90WCxlPXRoaXMucGxvdFk7aC09YjtlLT1hO3RoaXMucGxvdFg9aCpjLWUqZCtiO3RoaXMucGxvdFk9aCpkK2UqYythO3RoaXMucmVmcmVzaE9wdGlvbnMoKX19O2QucHJvdG90eXBlLnJlZnJlc2hPcHRpb25zPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5zZXJpZXMsYT1iLnhBeGlzO2I9Yi55QXhpczt0aGlzLng9CnRoaXMub3B0aW9ucy54PWE/dGhpcy5vcHRpb25zLng9YS50b1ZhbHVlKHRoaXMucGxvdFgsITApOnRoaXMucGxvdFg7dGhpcy55PXRoaXMub3B0aW9ucy55PWI/Yi50b1ZhbHVlKHRoaXMucGxvdFksITApOnRoaXMucGxvdFl9O3JldHVybiBkfSgpfSk7cChhLCJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvY29udHJvbGxhYmxlTWl4aW4uanMiLFthWyJhbm5vdGF0aW9ucy9Db250cm9sUG9pbnQuanMiXSxhWyJhbm5vdGF0aW9ucy9Nb2NrUG9pbnQuanMiXSxhWyJwYXJ0cy9Ub29sdGlwLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsZCxtLGUpe3ZhciBxPWUuaXNPYmplY3QsYj1lLmlzU3RyaW5nLEE9ZS5tZXJnZSx6PWUuc3BsYXQ7cmV0dXJue2luaXQ6ZnVuY3Rpb24oYyxiLGEpe3RoaXMuYW5ub3RhdGlvbj1jO3RoaXMuY2hhcnQ9Yy5jaGFydDt0aGlzLm9wdGlvbnM9Yjt0aGlzLnBvaW50cz1bXTt0aGlzLmNvbnRyb2xQb2ludHM9W107dGhpcy5pbmRleD0KYTt0aGlzLmxpbmtQb2ludHMoKTt0aGlzLmFkZENvbnRyb2xQb2ludHMoKX0sYXR0cjpmdW5jdGlvbigpe3RoaXMuZ3JhcGhpYy5hdHRyLmFwcGx5KHRoaXMuZ3JhcGhpYyxhcmd1bWVudHMpfSxnZXRQb2ludHNPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5vcHRpb25zO3JldHVybiBjLnBvaW50c3x8Yy5wb2ludCYmeihjLnBvaW50KX0sYXR0cnNGcm9tT3B0aW9uczpmdW5jdGlvbihjKXt2YXIgYj10aGlzLmNvbnN0cnVjdG9yLmF0dHJzTWFwLGE9e30sZCxrPXRoaXMuY2hhcnQuc3R5bGVkTW9kZTtmb3IoZCBpbiBjKXt2YXIgZT1iW2RdOyFlfHxrJiYtMSE9PVsiZmlsbCIsInN0cm9rZSIsInN0cm9rZS13aWR0aCJdLmluZGV4T2YoZSl8fChhW2VdPWNbZF0pfXJldHVybiBhfSxhbmNob3I6ZnVuY3Rpb24oYyl7dmFyIGI9Yy5zZXJpZXMuZ2V0UGxvdEJveCgpO2M9Yy5tb2NrP2MudG9BbmNob3IoKTptLnByb3RvdHlwZS5nZXRBbmNob3IuY2FsbCh7Y2hhcnQ6Yy5zZXJpZXMuY2hhcnR9LApjKTtjPXt4OmNbMF0rKHRoaXMub3B0aW9ucy54fHwwKSx5OmNbMV0rKHRoaXMub3B0aW9ucy55fHwwKSxoZWlnaHQ6Y1syXXx8MCx3aWR0aDpjWzNdfHwwfTtyZXR1cm57cmVsYXRpdmVQb3NpdGlvbjpjLGFic29sdXRlUG9zaXRpb246QShjLHt4OmMueCtiLnRyYW5zbGF0ZVgseTpjLnkrYi50cmFuc2xhdGVZfSl9fSxwb2ludDpmdW5jdGlvbihjLGEpe2lmKGMmJmMuc2VyaWVzKXJldHVybiBjO2EmJm51bGwhPT1hLnNlcmllc3x8KHEoYyk/YT1uZXcgZCh0aGlzLmNoYXJ0LHRoaXMsYyk6YihjKT9hPXRoaXMuY2hhcnQuZ2V0KGMpfHxudWxsOiJmdW5jdGlvbiI9PT10eXBlb2YgYyYmKGE9Yy5jYWxsKGEsdGhpcyksYT1hLnNlcmllcz9hOm5ldyBkKHRoaXMuY2hhcnQsdGhpcyxjKSkpO3JldHVybiBhfSxsaW5rUG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5nZXRQb2ludHNPcHRpb25zKCksYj10aGlzLnBvaW50cyxhPWMmJmMubGVuZ3RofHwwLGQ7Zm9yKGQ9MDtkPGE7ZCsrKXt2YXIgaz0KdGhpcy5wb2ludChjW2RdLGJbZF0pO2lmKCFrKXtiLmxlbmd0aD0wO3JldHVybn1rLm1vY2smJmsucmVmcmVzaCgpO2JbZF09a31yZXR1cm4gYn0sYWRkQ29udHJvbFBvaW50czpmdW5jdGlvbigpe3ZhciBjPXRoaXMub3B0aW9ucy5jb250cm9sUG9pbnRzOyhjfHxbXSkuZm9yRWFjaChmdW5jdGlvbihiLGQpe2I9QSh0aGlzLm9wdGlvbnMuY29udHJvbFBvaW50T3B0aW9ucyxiKTtiLmluZGV4fHwoYi5pbmRleD1kKTtjW2RdPWI7dGhpcy5jb250cm9sUG9pbnRzLnB1c2gobmV3IGEodGhpcy5jaGFydCx0aGlzLGIpKX0sdGhpcyl9LHNob3VsZEJlRHJhd246ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucG9pbnRzLmxlbmd0aH0scmVuZGVyOmZ1bmN0aW9uKGMpe3RoaXMuY29udHJvbFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2MucmVuZGVyKCl9KX0scmVkcmF3OmZ1bmN0aW9uKGMpe3RoaXMuY29udHJvbFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IucmVkcmF3KGMpfSl9LHRyYW5zZm9ybTpmdW5jdGlvbihjLApiLGEsZCxrKXtpZih0aGlzLmNoYXJ0LmludmVydGVkKXt2YXIgaD1iO2I9YTthPWh9dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihnLGYpe3RoaXMudHJhbnNmb3JtUG9pbnQoYyxiLGEsZCxrLGYpfSx0aGlzKX0sdHJhbnNmb3JtUG9pbnQ6ZnVuY3Rpb24oYyxiLGEsZSxrLHkpe3ZhciBnPXRoaXMucG9pbnRzW3ldO2cubW9ja3x8KGc9dGhpcy5wb2ludHNbeV09ZC5mcm9tUG9pbnQoZykpO2dbY10oYixhLGUsayl9LHRyYW5zbGF0ZTpmdW5jdGlvbihjLGIpe3RoaXMudHJhbnNmb3JtKCJ0cmFuc2xhdGUiLG51bGwsbnVsbCxjLGIpfSx0cmFuc2xhdGVQb2ludDpmdW5jdGlvbihjLGIsYSl7dGhpcy50cmFuc2Zvcm1Qb2ludCgidHJhbnNsYXRlIixudWxsLG51bGwsYyxiLGEpfSx0cmFuc2xhdGVTaGFwZTpmdW5jdGlvbihjLGIpe3ZhciBhPXRoaXMuYW5ub3RhdGlvbi5jaGFydCxkPXRoaXMuYW5ub3RhdGlvbi51c2VyT3B0aW9ucyxrPWEuYW5ub3RhdGlvbnMuaW5kZXhPZih0aGlzLmFubm90YXRpb24pOwphPWEub3B0aW9ucy5hbm5vdGF0aW9uc1trXTt0aGlzLnRyYW5zbGF0ZVBvaW50KGMsYiwwKTthW3RoaXMuY29sbGVjdGlvbl1bdGhpcy5pbmRleF0ucG9pbnQ9dGhpcy5vcHRpb25zLnBvaW50O2RbdGhpcy5jb2xsZWN0aW9uXVt0aGlzLmluZGV4XS5wb2ludD10aGlzLm9wdGlvbnMucG9pbnR9LHJvdGF0ZTpmdW5jdGlvbihjLGIsYSl7dGhpcy50cmFuc2Zvcm0oInJvdGF0ZSIsYyxiLGEpfSxzY2FsZTpmdW5jdGlvbihjLGIsYSxkKXt0aGlzLnRyYW5zZm9ybSgic2NhbGUiLGMsYixhLGQpfSxzZXRDb250cm9sUG9pbnRzVmlzaWJpbGl0eTpmdW5jdGlvbihiKXt0aGlzLmNvbnRyb2xQb2ludHMuZm9yRWFjaChmdW5jdGlvbihjKXtjLnNldFZpc2liaWxpdHkoYil9KX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZ3JhcGhpYyYmKHRoaXMuZ3JhcGhpYz10aGlzLmdyYXBoaWMuZGVzdHJveSgpKTt0aGlzLnRyYWNrZXImJih0aGlzLnRyYWNrZXI9dGhpcy50cmFja2VyLmRlc3Ryb3koKSk7CnRoaXMuY29udHJvbFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuZGVzdHJveSgpfSk7dGhpcy5vcHRpb25zPXRoaXMuY29udHJvbFBvaW50cz10aGlzLnBvaW50cz10aGlzLmNoYXJ0PW51bGw7dGhpcy5hbm5vdGF0aW9uJiYodGhpcy5hbm5vdGF0aW9uPW51bGwpfSx1cGRhdGU6ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5hbm5vdGF0aW9uO2I9QSghMCx0aGlzLm9wdGlvbnMsYik7dmFyIGE9dGhpcy5ncmFwaGljLnBhcmVudEdyb3VwO3RoaXMuZGVzdHJveSgpO3RoaXMuY29uc3RydWN0b3IoYyxiKTt0aGlzLnJlbmRlcihhKTt0aGlzLnJlZHJhdygpfX19KTtwKGEsImFubm90YXRpb25zL2NvbnRyb2xsYWJsZS9tYXJrZXJNaXhpbi5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxkKXt2YXIgcT1kLmFkZEV2ZW50LGU9ZC5kZWZpbmVkLHY9ZC5tZXJnZSxiPWQub2JqZWN0RWFjaCxBPWQudW5pcXVlS2V5LHo9e2Fycm93Ont0YWdOYW1lOiJtYXJrZXIiLApyZW5kZXI6ITEsaWQ6ImFycm93IixyZWZZOjUscmVmWDo5LG1hcmtlcldpZHRoOjEwLG1hcmtlckhlaWdodDoxMCxjaGlsZHJlbjpbe3RhZ05hbWU6InBhdGgiLGQ6Ik0gMCAwIEwgMTAgNSBMIDAgMTAgWiIsc3Ryb2tlV2lkdGg6MH1dfSwicmV2ZXJzZS1hcnJvdyI6e3RhZ05hbWU6Im1hcmtlciIscmVuZGVyOiExLGlkOiJyZXZlcnNlLWFycm93IixyZWZZOjUscmVmWDoxLG1hcmtlcldpZHRoOjEwLG1hcmtlckhlaWdodDoxMCxjaGlsZHJlbjpbe3RhZ05hbWU6InBhdGgiLGQ6Ik0gMCA1IEwgMTAgMCBMIDEwIDEwIFoiLHN0cm9rZVdpZHRoOjB9XX19O2EuU1ZHUmVuZGVyZXIucHJvdG90eXBlLmFkZE1hcmtlcj1mdW5jdGlvbihiLGEpe3ZhciBjPXtpZDpifSxkPXtzdHJva2U6YS5jb2xvcnx8Im5vbmUiLGZpbGw6YS5jb2xvcnx8InJnYmEoMCwgMCwgMCwgMC43NSkifTtjLmNoaWxkcmVuPWEuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKGIpe3JldHVybiB2KGQsYil9KTthPXRoaXMuZGVmaW5pdGlvbih2KCEwLAp7bWFya2VyV2lkdGg6MjAsbWFya2VySGVpZ2h0OjIwLHJlZlg6MCxyZWZZOjAsb3JpZW50OiJhdXRvIn0sYSxjKSk7YS5pZD1iO3JldHVybiBhfTtkPWZ1bmN0aW9uKGIpe3JldHVybiBmdW5jdGlvbihjKXt0aGlzLmF0dHIoYiwidXJsKCMiK2MrIikiKX19O2Q9e21hcmtlckVuZFNldHRlcjpkKCJtYXJrZXItZW5kIiksbWFya2VyU3RhcnRTZXR0ZXI6ZCgibWFya2VyLXN0YXJ0Iiksc2V0SXRlbU1hcmtlcnM6ZnVuY3Rpb24oYil7dmFyIGM9Yi5vcHRpb25zLGE9Yi5jaGFydCxkPWEub3B0aW9ucy5kZWZzLGs9Yy5maWxsLHk9ZShrKSYmIm5vbmUiIT09az9rOmMuc3Ryb2tlO1sibWFya2VyU3RhcnQiLCJtYXJrZXJFbmQiXS5mb3JFYWNoKGZ1bmN0aW9uKGcpe3ZhciBmPWNbZ10saztpZihmKXtmb3IoayBpbiBkKXt2YXIgZT1kW2tdO2lmKGY9PT1lLmlkJiYibWFya2VyIj09PWUudGFnTmFtZSl7dmFyIGw9ZTticmVha319bCYmKGY9YltnXT1hLnJlbmRlcmVyLmFkZE1hcmtlcigoYy5pZHx8CkEoKSkrIi0iK2wuaWQsdihsLHtjb2xvcjp5fSkpLGIuYXR0cihnLGYuYXR0cigiaWQiKSkpfX0pfX07cShhLkNoYXJ0LCJhZnRlckdldENvbnRhaW5lciIsZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuZGVmcz12KHosdGhpcy5vcHRpb25zLmRlZnN8fHt9KTtiKHRoaXMub3B0aW9ucy5kZWZzLGZ1bmN0aW9uKGIpeyJtYXJrZXIiPT09Yi50YWdOYW1lJiYhMSE9PWIucmVuZGVyJiZ0aGlzLnJlbmRlcmVyLmFkZE1hcmtlcihiLmlkLGIpfSx0aGlzKX0pO3JldHVybiBkfSk7cChhLCJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvQ29udHJvbGxhYmxlUGF0aC5qcyIsW2FbImFubm90YXRpb25zL2NvbnRyb2xsYWJsZS9jb250cm9sbGFibGVNaXhpbi5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvbWFya2VyTWl4aW4uanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxkLG0sZSl7dmFyIHE9ZS5leHRlbmQ7ZT1lLm1lcmdlOwp2YXIgYj0icmdiYSgxOTIsMTkyLDE5MiwiKyhkLnN2Zz8uMDAwMTouMDAyKSsiKSI7ZD1mdW5jdGlvbihiLGEsYyl7dGhpcy5pbml0KGIsYSxjKTt0aGlzLmNvbGxlY3Rpb249InNoYXBlcyJ9O2QuYXR0cnNNYXA9e2Rhc2hTdHlsZToiZGFzaHN0eWxlIixzdHJva2VXaWR0aDoic3Ryb2tlLXdpZHRoIixzdHJva2U6InN0cm9rZSIsZmlsbDoiZmlsbCIsekluZGV4OiJ6SW5kZXgifTtlKCEwLGQucHJvdG90eXBlLGEse3R5cGU6InBhdGgiLHNldE1hcmtlcnM6bS5zZXRJdGVtTWFya2Vycyx0b0Q6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMuZDtpZihiKXJldHVybiJmdW5jdGlvbiI9PT10eXBlb2YgYj9iLmNhbGwodGhpcyk6YjtiPXRoaXMucG9pbnRzO3ZhciBhPWIubGVuZ3RoLGM9YSxkPWJbMF0sZT1jJiZ0aGlzLmFuY2hvcihkKS5hYnNvbHV0ZVBvc2l0aW9uLHg9MCxrPVtdO2lmKGUpZm9yKGsucHVzaChbIk0iLGUueCxlLnldKTsrK3g8YSYmYzspZD1iW3hdLGM9ZC5jb21tYW5kfHwKIkwiLGU9dGhpcy5hbmNob3IoZCkuYWJzb2x1dGVQb3NpdGlvbiwiTSI9PT1jP2sucHVzaChbYyxlLngsZS55XSk6IkwiPT09Yz9rLnB1c2goW2MsZS54LGUueV0pOiJaIj09PWMmJmsucHVzaChbY10pLGM9ZC5zZXJpZXMudmlzaWJsZTtyZXR1cm4gYz90aGlzLmNoYXJ0LnJlbmRlcmVyLmNyaXNwTGluZShrLHRoaXMuZ3JhcGhpYy5zdHJva2VXaWR0aCgpKTpudWxsfSxzaG91bGRCZURyYXduOmZ1bmN0aW9uKCl7cmV0dXJuIGEuc2hvdWxkQmVEcmF3bi5jYWxsKHRoaXMpfHwhIXRoaXMub3B0aW9ucy5kfSxyZW5kZXI6ZnVuY3Rpb24oZCl7dmFyIGU9dGhpcy5vcHRpb25zLGM9dGhpcy5hdHRyc0Zyb21PcHRpb25zKGUpO3RoaXMuZ3JhcGhpYz10aGlzLmFubm90YXRpb24uY2hhcnQucmVuZGVyZXIucGF0aChbWyJNIiwwLDBdXSkuYXR0cihjKS5hZGQoZCk7ZS5jbGFzc05hbWUmJnRoaXMuZ3JhcGhpYy5hZGRDbGFzcyhlLmNsYXNzTmFtZSk7dGhpcy50cmFja2VyPXRoaXMuYW5ub3RhdGlvbi5jaGFydC5yZW5kZXJlci5wYXRoKFtbIk0iLAowLDBdXSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtdHJhY2tlci1saW5lIikuYXR0cih7ekluZGV4OjJ9KS5hZGQoZCk7dGhpcy5hbm5vdGF0aW9uLmNoYXJ0LnN0eWxlZE1vZGV8fHRoaXMudHJhY2tlci5hdHRyKHsic3Ryb2tlLWxpbmVqb2luIjoicm91bmQiLHN0cm9rZTpiLGZpbGw6Yiwic3Ryb2tlLXdpZHRoIjp0aGlzLmdyYXBoaWMuc3Ryb2tlV2lkdGgoKSsyKmUuc25hcH0pO2EucmVuZGVyLmNhbGwodGhpcyk7cSh0aGlzLmdyYXBoaWMse21hcmtlclN0YXJ0U2V0dGVyOm0ubWFya2VyU3RhcnRTZXR0ZXIsbWFya2VyRW5kU2V0dGVyOm0ubWFya2VyRW5kU2V0dGVyfSk7dGhpcy5zZXRNYXJrZXJzKHRoaXMpfSxyZWRyYXc6ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy50b0QoKSxjPWI/ImFuaW1hdGUiOiJhdHRyIjtkPyh0aGlzLmdyYXBoaWNbY10oe2Q6ZH0pLHRoaXMudHJhY2tlcltjXSh7ZDpkfSkpOih0aGlzLmdyYXBoaWMuYXR0cih7ZDoiTSAwIC05MDAwMDAwMDAwIn0pLHRoaXMudHJhY2tlci5hdHRyKHtkOiJNIDAgLTkwMDAwMDAwMDAifSkpOwp0aGlzLmdyYXBoaWMucGxhY2VkPXRoaXMudHJhY2tlci5wbGFjZWQ9ISFkO2EucmVkcmF3LmNhbGwodGhpcyxiKX19KTtyZXR1cm4gZH0pO3AoYSwiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZVJlY3QuanMiLFthWyJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvY29udHJvbGxhYmxlTWl4aW4uanMiXSxhWyJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvQ29udHJvbGxhYmxlUGF0aC5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLGQsbSl7bT1tLm1lcmdlO3ZhciBlPWZ1bmN0aW9uKGEsYixkKXt0aGlzLmluaXQoYSxiLGQpO3RoaXMuY29sbGVjdGlvbj0ic2hhcGVzIn07ZS5hdHRyc01hcD1tKGQuYXR0cnNNYXAse3dpZHRoOiJ3aWR0aCIsaGVpZ2h0OiJoZWlnaHQifSk7bSghMCxlLnByb3RvdHlwZSxhLHt0eXBlOiJyZWN0Iix0cmFuc2xhdGU6YS50cmFuc2xhdGVTaGFwZSxyZW5kZXI6ZnVuY3Rpb24oZCl7dmFyIGI9dGhpcy5hdHRyc0Zyb21PcHRpb25zKHRoaXMub3B0aW9ucyk7CnRoaXMuZ3JhcGhpYz10aGlzLmFubm90YXRpb24uY2hhcnQucmVuZGVyZXIucmVjdCgwLC05RTksMCwwKS5hdHRyKGIpLmFkZChkKTthLnJlbmRlci5jYWxsKHRoaXMpfSxyZWRyYXc6ZnVuY3Rpb24oZCl7dmFyIGI9dGhpcy5hbmNob3IodGhpcy5wb2ludHNbMF0pLmFic29sdXRlUG9zaXRpb247aWYoYil0aGlzLmdyYXBoaWNbZD8iYW5pbWF0ZSI6ImF0dHIiXSh7eDpiLngseTpiLnksd2lkdGg6dGhpcy5vcHRpb25zLndpZHRoLGhlaWdodDp0aGlzLm9wdGlvbnMuaGVpZ2h0fSk7ZWxzZSB0aGlzLmF0dHIoe3g6MCx5Oi05RTl9KTt0aGlzLmdyYXBoaWMucGxhY2VkPSEhYjthLnJlZHJhdy5jYWxsKHRoaXMsZCl9fSk7cmV0dXJuIGV9KTtwKGEsImFubm90YXRpb25zL2NvbnRyb2xsYWJsZS9Db250cm9sbGFibGVDaXJjbGUuanMiLFthWyJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvY29udHJvbGxhYmxlTWl4aW4uanMiXSxhWyJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvQ29udHJvbGxhYmxlUGF0aC5qcyJdLAphWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxkLG0pe209bS5tZXJnZTt2YXIgZT1mdW5jdGlvbihhLGIsZCl7dGhpcy5pbml0KGEsYixkKTt0aGlzLmNvbGxlY3Rpb249InNoYXBlcyJ9O2UuYXR0cnNNYXA9bShkLmF0dHJzTWFwLHtyOiJyIn0pO20oITAsZS5wcm90b3R5cGUsYSx7dHlwZToiY2lyY2xlIix0cmFuc2xhdGU6YS50cmFuc2xhdGVTaGFwZSxyZW5kZXI6ZnVuY3Rpb24oZCl7dmFyIGI9dGhpcy5hdHRyc0Zyb21PcHRpb25zKHRoaXMub3B0aW9ucyk7dGhpcy5ncmFwaGljPXRoaXMuYW5ub3RhdGlvbi5jaGFydC5yZW5kZXJlci5jaXJjbGUoMCwtOUU5LDApLmF0dHIoYikuYWRkKGQpO2EucmVuZGVyLmNhbGwodGhpcyl9LHJlZHJhdzpmdW5jdGlvbihkKXt2YXIgYj10aGlzLmFuY2hvcih0aGlzLnBvaW50c1swXSkuYWJzb2x1dGVQb3NpdGlvbjtpZihiKXRoaXMuZ3JhcGhpY1tkPyJhbmltYXRlIjoiYXR0ciJdKHt4OmIueCx5OmIueSxyOnRoaXMub3B0aW9ucy5yfSk7CmVsc2UgdGhpcy5ncmFwaGljLmF0dHIoe3g6MCx5Oi05RTl9KTt0aGlzLmdyYXBoaWMucGxhY2VkPSEhYjthLnJlZHJhdy5jYWxsKHRoaXMsZCl9LHNldFJhZGl1czpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnMucj1hfX0pO3JldHVybiBlfSk7cChhLCJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvQ29udHJvbGxhYmxlTGFiZWwuanMiLFthWyJhbm5vdGF0aW9ucy9jb250cm9sbGFibGUvY29udHJvbGxhYmxlTWl4aW4uanMiXSxhWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsiYW5ub3RhdGlvbnMvTW9ja1BvaW50LmpzIl0sYVsicGFydHMvVG9vbHRpcC5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLGQsbSxlLHYpe3ZhciBiPXYuZXh0ZW5kLHE9di5mb3JtYXQscD12LmlzTnVtYmVyLGM9di5tZXJnZSxoPXYucGljayxyPWZ1bmN0aW9uKGIsYSxjKXt0aGlzLmluaXQoYixhLGMpO3RoaXMuY29sbGVjdGlvbj0ibGFiZWxzIn07ci5zaGFwZXNXaXRob3V0QmFja2dyb3VuZD0KWyJjb25uZWN0b3IiXTtyLmFsaWduZWRQb3NpdGlvbj1mdW5jdGlvbihiLGEpe3ZhciBjPWIuYWxpZ24sZD1iLnZlcnRpY2FsQWxpZ24sZj0oYS54fHwwKSsoYi54fHwwKSxrPShhLnl8fDApKyhiLnl8fDApLGUsbDsicmlnaHQiPT09Yz9lPTE6ImNlbnRlciI9PT1jJiYoZT0yKTtlJiYoZis9KGEud2lkdGgtKGIud2lkdGh8fDApKS9lKTsiYm90dG9tIj09PWQ/bD0xOiJtaWRkbGUiPT09ZCYmKGw9Mik7bCYmKGsrPShhLmhlaWdodC0oYi5oZWlnaHR8fDApKS9sKTtyZXR1cm57eDpNYXRoLnJvdW5kKGYpLHk6TWF0aC5yb3VuZChrKX19O3IuanVzdGlmaWVkT3B0aW9ucz1mdW5jdGlvbihiLGEsYyxkKXt2YXIgZj1jLmFsaWduLGc9Yy52ZXJ0aWNhbEFsaWduLGU9YS5ib3g/MDphLnBhZGRpbmd8fDAsaz1hLmdldEJCb3goKTthPXthbGlnbjpmLHZlcnRpY2FsQWxpZ246Zyx4OmMueCx5OmMueSx3aWR0aDphLndpZHRoLGhlaWdodDphLmhlaWdodH07Yz1kLngtYi5wbG90TGVmdDt2YXIgdD0KZC55LWIucGxvdFRvcDtkPWMrZTswPmQmJigicmlnaHQiPT09Zj9hLmFsaWduPSJsZWZ0IjphLng9LWQpO2Q9YytrLndpZHRoLWU7ZD5iLnBsb3RXaWR0aCYmKCJsZWZ0Ij09PWY/YS5hbGlnbj0icmlnaHQiOmEueD1iLnBsb3RXaWR0aC1kKTtkPXQrZTswPmQmJigiYm90dG9tIj09PWc/YS52ZXJ0aWNhbEFsaWduPSJ0b3AiOmEueT0tZCk7ZD10K2suaGVpZ2h0LWU7ZD5iLnBsb3RIZWlnaHQmJigidG9wIj09PWc/YS52ZXJ0aWNhbEFsaWduPSJib3R0b20iOmEueT1iLnBsb3RIZWlnaHQtZCk7cmV0dXJuIGF9O3IuYXR0cnNNYXA9e2JhY2tncm91bmRDb2xvcjoiZmlsbCIsYm9yZGVyQ29sb3I6InN0cm9rZSIsYm9yZGVyV2lkdGg6InN0cm9rZS13aWR0aCIsekluZGV4OiJ6SW5kZXgiLGJvcmRlclJhZGl1czoiciIscGFkZGluZzoicGFkZGluZyJ9O2MoITAsci5wcm90b3R5cGUsYSx7dHJhbnNsYXRlUG9pbnQ6ZnVuY3Rpb24oYixjKXthLnRyYW5zbGF0ZVBvaW50LmNhbGwodGhpcyxiLApjLDApfSx0cmFuc2xhdGU6ZnVuY3Rpb24oYixhKXt2YXIgYz10aGlzLmFubm90YXRpb24uY2hhcnQsZD10aGlzLmFubm90YXRpb24udXNlck9wdGlvbnMsZj1jLmFubm90YXRpb25zLmluZGV4T2YodGhpcy5hbm5vdGF0aW9uKTtmPWMub3B0aW9ucy5hbm5vdGF0aW9uc1tmXTtjLmludmVydGVkJiYoYz1iLGI9YSxhPWMpO3RoaXMub3B0aW9ucy54Kz1iO3RoaXMub3B0aW9ucy55Kz1hO2ZbdGhpcy5jb2xsZWN0aW9uXVt0aGlzLmluZGV4XS54PXRoaXMub3B0aW9ucy54O2ZbdGhpcy5jb2xsZWN0aW9uXVt0aGlzLmluZGV4XS55PXRoaXMub3B0aW9ucy55O2RbdGhpcy5jb2xsZWN0aW9uXVt0aGlzLmluZGV4XS54PXRoaXMub3B0aW9ucy54O2RbdGhpcy5jb2xsZWN0aW9uXVt0aGlzLmluZGV4XS55PXRoaXMub3B0aW9ucy55fSxyZW5kZXI6ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5vcHRpb25zLGQ9dGhpcy5hdHRyc0Zyb21PcHRpb25zKGMpLGc9Yy5zdHlsZTt0aGlzLmdyYXBoaWM9dGhpcy5hbm5vdGF0aW9uLmNoYXJ0LnJlbmRlcmVyLmxhYmVsKCIiLAowLC05OTk5LGMuc2hhcGUsbnVsbCxudWxsLGMudXNlSFRNTCxudWxsLCJhbm5vdGF0aW9uLWxhYmVsIikuYXR0cihkKS5hZGQoYik7dGhpcy5hbm5vdGF0aW9uLmNoYXJ0LnN0eWxlZE1vZGV8fCgiY29udHJhc3QiPT09Zy5jb2xvciYmKGcuY29sb3I9dGhpcy5hbm5vdGF0aW9uLmNoYXJ0LnJlbmRlcmVyLmdldENvbnRyYXN0KC0xPHIuc2hhcGVzV2l0aG91dEJhY2tncm91bmQuaW5kZXhPZihjLnNoYXBlKT8iI0ZGRkZGRiI6Yy5iYWNrZ3JvdW5kQ29sb3IpKSx0aGlzLmdyYXBoaWMuY3NzKGMuc3R5bGUpLnNoYWRvdyhjLnNoYWRvdykpO2MuY2xhc3NOYW1lJiZ0aGlzLmdyYXBoaWMuYWRkQ2xhc3MoYy5jbGFzc05hbWUpO3RoaXMuZ3JhcGhpYy5sYWJlbHJhbms9Yy5sYWJlbHJhbms7YS5yZW5kZXIuY2FsbCh0aGlzKX0scmVkcmF3OmZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMub3B0aW9ucyxkPXRoaXMudGV4dHx8Yy5mb3JtYXR8fGMudGV4dCxnPXRoaXMuZ3JhcGhpYyxmPXRoaXMucG9pbnRzWzBdOwpnLmF0dHIoe3RleHQ6ZD9xKGQsZi5nZXRMYWJlbENvbmZpZygpLHRoaXMuYW5ub3RhdGlvbi5jaGFydCk6Yy5mb3JtYXR0ZXIuY2FsbChmLHRoaXMpfSk7Yz10aGlzLmFuY2hvcihmKTsoZD10aGlzLnBvc2l0aW9uKGMpKT8oZy5hbGlnbkF0dHI9ZCxkLmFuY2hvclg9Yy5hYnNvbHV0ZVBvc2l0aW9uLngsZC5hbmNob3JZPWMuYWJzb2x1dGVQb3NpdGlvbi55LGdbYj8iYW5pbWF0ZSI6ImF0dHIiXShkKSk6Zy5hdHRyKHt4OjAseTotOTk5OX0pO2cucGxhY2VkPSEhZDthLnJlZHJhdy5jYWxsKHRoaXMsYil9LGFuY2hvcjpmdW5jdGlvbigpe3ZhciBiPWEuYW5jaG9yLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxjPXRoaXMub3B0aW9ucy54fHwwLGQ9dGhpcy5vcHRpb25zLnl8fDA7Yi5hYnNvbHV0ZVBvc2l0aW9uLngtPWM7Yi5hYnNvbHV0ZVBvc2l0aW9uLnktPWQ7Yi5yZWxhdGl2ZVBvc2l0aW9uLngtPWM7Yi5yZWxhdGl2ZVBvc2l0aW9uLnktPWQ7cmV0dXJuIGJ9LHBvc2l0aW9uOmZ1bmN0aW9uKGMpe3ZhciBhPQp0aGlzLmdyYXBoaWMsZD10aGlzLmFubm90YXRpb24uY2hhcnQsZz10aGlzLnBvaW50c1swXSxmPXRoaXMub3B0aW9ucyxuPWMuYWJzb2x1dGVQb3NpdGlvbix1PWMucmVsYXRpdmVQb3NpdGlvbjtpZihjPWcuc2VyaWVzLnZpc2libGUmJm0ucHJvdG90eXBlLmlzSW5zaWRlUGxvdC5jYWxsKGcpKXtpZihmLmRpc3RhbmNlKXZhciBsPWUucHJvdG90eXBlLmdldFBvc2l0aW9uLmNhbGwoe2NoYXJ0OmQsZGlzdGFuY2U6aChmLmRpc3RhbmNlLDE2KX0sYS53aWR0aCxhLmhlaWdodCx7cGxvdFg6dS54LHBsb3RZOnUueSxuZWdhdGl2ZTpnLm5lZ2F0aXZlLHR0QmVsb3c6Zy50dEJlbG93LGg6dS5oZWlnaHR8fHUud2lkdGh9KTtlbHNlIGYucG9zaXRpb25lcj9sPWYucG9zaXRpb25lci5jYWxsKHRoaXMpOihnPXt4Om4ueCx5Om4ueSx3aWR0aDowLGhlaWdodDowfSxsPXIuYWxpZ25lZFBvc2l0aW9uKGIoZix7d2lkdGg6YS53aWR0aCxoZWlnaHQ6YS5oZWlnaHR9KSxnKSwianVzdGlmeSI9PT0KdGhpcy5vcHRpb25zLm92ZXJmbG93JiYobD1yLmFsaWduZWRQb3NpdGlvbihyLmp1c3RpZmllZE9wdGlvbnMoZCxhLGYsbCksZykpKTtmLmNyb3AmJihmPWwueC1kLnBsb3RMZWZ0LGc9bC55LWQucGxvdFRvcCxjPWQuaXNJbnNpZGVQbG90KGYsZykmJmQuaXNJbnNpZGVQbG90KGYrYS53aWR0aCxnK2EuaGVpZ2h0KSl9cmV0dXJuIGM/bDpudWxsfX0pO2QuU1ZHUmVuZGVyZXIucHJvdG90eXBlLnN5bWJvbHMuY29ubmVjdG9yPWZ1bmN0aW9uKGIsYyxhLGQsZil7dmFyIGc9ZiYmZi5hbmNob3JYO2Y9ZiYmZi5hbmNob3JZO3ZhciBlPWEvMjtpZihwKGcpJiZwKGYpKXt2YXIgbD1bWyJNIixnLGZdXTt2YXIgdD1jLWY7MD50JiYodD0tZC10KTt0PGEmJihlPWc8YithLzI/dDphLXQpO2Y+YytkP2wucHVzaChbIkwiLGIrZSxjK2RdKTpmPGM/bC5wdXNoKFsiTCIsYitlLGNdKTpnPGI/bC5wdXNoKFsiTCIsYixjK2QvMl0pOmc+YithJiZsLnB1c2goWyJMIixiK2EsYytkLzJdKX1yZXR1cm4gbHx8CltdfTtyZXR1cm4gcn0pO3AoYSwiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZUltYWdlLmpzIixbYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZUxhYmVsLmpzIl0sYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL2NvbnRyb2xsYWJsZU1peGluLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsZCxtKXttPW0ubWVyZ2U7dmFyIGU9ZnVuY3Rpb24oYSxiLGQpe3RoaXMuaW5pdChhLGIsZCk7dGhpcy5jb2xsZWN0aW9uPSJzaGFwZXMifTtlLmF0dHJzTWFwPXt3aWR0aDoid2lkdGgiLGhlaWdodDoiaGVpZ2h0Iix6SW5kZXg6InpJbmRleCJ9O20oITAsZS5wcm90b3R5cGUsZCx7dHlwZToiaW1hZ2UiLHRyYW5zbGF0ZTpkLnRyYW5zbGF0ZVNoYXBlLHJlbmRlcjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmF0dHJzRnJvbU9wdGlvbnModGhpcy5vcHRpb25zKSxlPXRoaXMub3B0aW9uczt0aGlzLmdyYXBoaWM9dGhpcy5hbm5vdGF0aW9uLmNoYXJ0LnJlbmRlcmVyLmltYWdlKGUuc3JjLAowLC05RTksZS53aWR0aCxlLmhlaWdodCkuYXR0cihiKS5hZGQoYSk7dGhpcy5ncmFwaGljLndpZHRoPWUud2lkdGg7dGhpcy5ncmFwaGljLmhlaWdodD1lLmhlaWdodDtkLnJlbmRlci5jYWxsKHRoaXMpfSxyZWRyYXc6ZnVuY3Rpb24oZSl7dmFyIGI9dGhpcy5hbmNob3IodGhpcy5wb2ludHNbMF0pO2lmKGI9YS5wcm90b3R5cGUucG9zaXRpb24uY2FsbCh0aGlzLGIpKXRoaXMuZ3JhcGhpY1tlPyJhbmltYXRlIjoiYXR0ciJdKHt4OmIueCx5OmIueX0pO2Vsc2UgdGhpcy5ncmFwaGljLmF0dHIoe3g6MCx5Oi05RTl9KTt0aGlzLmdyYXBoaWMucGxhY2VkPSEhYjtkLnJlZHJhdy5jYWxsKHRoaXMsZSl9fSk7cmV0dXJuIGV9KTtwKGEsImFubm90YXRpb25zL2Fubm90YXRpb25zLnNyYy5qcyIsW2FbInBhcnRzL0NoYXJ0LmpzIl0sYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL2NvbnRyb2xsYWJsZU1peGluLmpzIl0sYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZVJlY3QuanMiXSwKYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZUNpcmNsZS5qcyJdLGFbImFubm90YXRpb25zL2NvbnRyb2xsYWJsZS9Db250cm9sbGFibGVQYXRoLmpzIl0sYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZUltYWdlLmpzIl0sYVsiYW5ub3RhdGlvbnMvY29udHJvbGxhYmxlL0NvbnRyb2xsYWJsZUxhYmVsLmpzIl0sYVsiYW5ub3RhdGlvbnMvQ29udHJvbFBvaW50LmpzIl0sYVsiYW5ub3RhdGlvbnMvZXZlbnRFbWl0dGVyTWl4aW4uanMiXSxhWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsiYW5ub3RhdGlvbnMvTW9ja1BvaW50LmpzIl0sYVsicGFydHMvUG9pbnRlci5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLGQsbSxlLHYsYixwLHosYyxoLHIseCxrKXthPWEucHJvdG90eXBlO3ZhciBxPWsuYWRkRXZlbnQsZz1rLmRlZmluZWQsZj1rLmRlc3Ryb3lPYmplY3RQcm9wZXJ0aWVzLG49ay5lcmFzZSx1PWsuZXh0ZW5kLApsPWsuZmluZCx0PWsuZmlyZUV2ZW50LHc9ay5tZXJnZSxDPWsucGljayxEPWsuc3BsYXQ7az1rLndyYXA7dmFyIEI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYil7dGhpcy5hbm5vdGF0aW9uPXZvaWQgMDt0aGlzLmNvbGw9ImFubm90YXRpb25zIjt0aGlzLnNoYXBlc0dyb3VwPXRoaXMubGFiZWxzR3JvdXA9dGhpcy5sYWJlbENvbGxlY3Rvcj10aGlzLmdyb3VwPXRoaXMuZ3JhcGhpYz10aGlzLmNvbGxlY3Rpb249dm9pZCAwO3RoaXMuY2hhcnQ9YTt0aGlzLnBvaW50cz1bXTt0aGlzLmNvbnRyb2xQb2ludHM9W107dGhpcy5jb2xsPSJhbm5vdGF0aW9ucyI7dGhpcy5sYWJlbHM9W107dGhpcy5zaGFwZXM9W107dGhpcy5vcHRpb25zPXcodGhpcy5kZWZhdWx0T3B0aW9ucyxiKTt0aGlzLnVzZXJPcHRpb25zPWI7Yj10aGlzLmdldExhYmVsc0FuZFNoYXBlc09wdGlvbnModGhpcy5vcHRpb25zLGIpO3RoaXMub3B0aW9ucy5sYWJlbHM9Yi5sYWJlbHM7dGhpcy5vcHRpb25zLnNoYXBlcz0KYi5zaGFwZXM7dGhpcy5pbml0KGEsdGhpcy5vcHRpb25zKX1hLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7dGhpcy5saW5rUG9pbnRzKCk7dGhpcy5hZGRDb250cm9sUG9pbnRzKCk7dGhpcy5hZGRTaGFwZXMoKTt0aGlzLmFkZExhYmVscygpO3RoaXMuc2V0TGFiZWxDb2xsZWN0b3IoKX07YS5wcm90b3R5cGUuZ2V0TGFiZWxzQW5kU2hhcGVzT3B0aW9ucz1mdW5jdGlvbihhLGIpe3ZhciBjPXt9O1sibGFiZWxzIiwic2hhcGVzIl0uZm9yRWFjaChmdW5jdGlvbihkKXthW2RdJiYoY1tkXT1EKGJbZF0pLm1hcChmdW5jdGlvbihiLGMpe3JldHVybiB3KGFbZF1bY10sYil9KSl9KTtyZXR1cm4gY307YS5wcm90b3R5cGUuYWRkU2hhcGVzPWZ1bmN0aW9uKCl7KHRoaXMub3B0aW9ucy5zaGFwZXN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7YT10aGlzLmluaXRTaGFwZShhLGIpO3coITAsdGhpcy5vcHRpb25zLnNoYXBlc1tiXSxhLm9wdGlvbnMpfSx0aGlzKX07YS5wcm90b3R5cGUuYWRkTGFiZWxzPQpmdW5jdGlvbigpeyh0aGlzLm9wdGlvbnMubGFiZWxzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhLGIpe2E9dGhpcy5pbml0TGFiZWwoYSxiKTt3KCEwLHRoaXMub3B0aW9ucy5sYWJlbHNbYl0sYS5vcHRpb25zKX0sdGhpcyl9O2EucHJvdG90eXBlLmFkZENsaXBQYXRocz1mdW5jdGlvbigpe3RoaXMuc2V0Q2xpcEF4ZXMoKTt0aGlzLmNsaXBYQXhpcyYmdGhpcy5jbGlwWUF4aXMmJih0aGlzLmNsaXBSZWN0PXRoaXMuY2hhcnQucmVuZGVyZXIuY2xpcFJlY3QodGhpcy5nZXRDbGlwQm94KCkpKX07YS5wcm90b3R5cGUuc2V0Q2xpcEF4ZXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LnhBeGlzLGI9dGhpcy5jaGFydC55QXhpcyxjPSh0aGlzLm9wdGlvbnMubGFiZWxzfHxbXSkuY29uY2F0KHRoaXMub3B0aW9ucy5zaGFwZXN8fFtdKS5yZWR1Y2UoZnVuY3Rpb24oYyxkKXtyZXR1cm5bYVtkJiZkLnBvaW50JiZkLnBvaW50LnhBeGlzXXx8Y1swXSxiW2QmJmQucG9pbnQmJmQucG9pbnQueUF4aXNdfHwKY1sxXV19LFtdKTt0aGlzLmNsaXBYQXhpcz1jWzBdO3RoaXMuY2xpcFlBeGlzPWNbMV19O2EucHJvdG90eXBlLmdldENsaXBCb3g9ZnVuY3Rpb24oKXtpZih0aGlzLmNsaXBYQXhpcyYmdGhpcy5jbGlwWUF4aXMpcmV0dXJue3g6dGhpcy5jbGlwWEF4aXMubGVmdCx5OnRoaXMuY2xpcFlBeGlzLnRvcCx3aWR0aDp0aGlzLmNsaXBYQXhpcy53aWR0aCxoZWlnaHQ6dGhpcy5jbGlwWUF4aXMuaGVpZ2h0fX07YS5wcm90b3R5cGUuc2V0TGFiZWxDb2xsZWN0b3I9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO2EubGFiZWxDb2xsZWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gYS5sYWJlbHMucmVkdWNlKGZ1bmN0aW9uKGEsYil7Yi5vcHRpb25zLmFsbG93T3ZlcmxhcHx8YS5wdXNoKGIuZ3JhcGhpYyk7cmV0dXJuIGF9LFtdKX07YS5jaGFydC5sYWJlbENvbGxlY3RvcnMucHVzaChhLmxhYmVsQ29sbGVjdG9yKX07YS5wcm90b3R5cGUuc2V0T3B0aW9ucz1mdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9dyh0aGlzLmRlZmF1bHRPcHRpb25zLAphKX07YS5wcm90b3R5cGUucmVkcmF3PWZ1bmN0aW9uKGEpe3RoaXMubGlua1BvaW50cygpO3RoaXMuZ3JhcGhpY3x8dGhpcy5yZW5kZXIoKTt0aGlzLmNsaXBSZWN0JiZ0aGlzLmNsaXBSZWN0LmFuaW1hdGUodGhpcy5nZXRDbGlwQm94KCkpO3RoaXMucmVkcmF3SXRlbXModGhpcy5zaGFwZXMsYSk7dGhpcy5yZWRyYXdJdGVtcyh0aGlzLmxhYmVscyxhKTtkLnJlZHJhdy5jYWxsKHRoaXMsYSl9O2EucHJvdG90eXBlLnJlZHJhd0l0ZW1zPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPWEubGVuZ3RoO2MtLTspdGhpcy5yZWRyYXdJdGVtKGFbY10sYil9O2EucHJvdG90eXBlLnJlbmRlckl0ZW1zPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLmxlbmd0aDtiLS07KXRoaXMucmVuZGVySXRlbShhW2JdKX07YS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydC5yZW5kZXJlcjt0aGlzLmdyYXBoaWM9YS5nKCJhbm5vdGF0aW9uIikuYXR0cih7ekluZGV4OnRoaXMub3B0aW9ucy56SW5kZXgsCnZpc2liaWxpdHk6dGhpcy5vcHRpb25zLnZpc2libGU/InZpc2libGUiOiJoaWRkZW4ifSkuYWRkKCk7dGhpcy5zaGFwZXNHcm91cD1hLmcoImFubm90YXRpb24tc2hhcGVzIikuYWRkKHRoaXMuZ3JhcGhpYykuY2xpcCh0aGlzLmNoYXJ0LnBsb3RCb3hDbGlwKTt0aGlzLmxhYmVsc0dyb3VwPWEuZygiYW5ub3RhdGlvbi1sYWJlbHMiKS5hdHRyKHt0cmFuc2xhdGVYOjAsdHJhbnNsYXRlWTowfSkuYWRkKHRoaXMuZ3JhcGhpYyk7dGhpcy5hZGRDbGlwUGF0aHMoKTt0aGlzLmNsaXBSZWN0JiZ0aGlzLmdyYXBoaWMuY2xpcCh0aGlzLmNsaXBSZWN0KTt0aGlzLnJlbmRlckl0ZW1zKHRoaXMuc2hhcGVzKTt0aGlzLnJlbmRlckl0ZW1zKHRoaXMubGFiZWxzKTt0aGlzLmFkZEV2ZW50cygpO2QucmVuZGVyLmNhbGwodGhpcyl9O2EucHJvdG90eXBlLnNldFZpc2liaWxpdHk9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5vcHRpb25zO2E9QyhhLCFiLnZpc2libGUpO3RoaXMuZ3JhcGhpYy5hdHRyKCJ2aXNpYmlsaXR5IiwKYT8idmlzaWJsZSI6ImhpZGRlbiIpO2F8fHRoaXMuc2V0Q29udHJvbFBvaW50c1Zpc2liaWxpdHkoITEpO2IudmlzaWJsZT1hfTthLnByb3RvdHlwZS5zZXRDb250cm9sUG9pbnRzVmlzaWJpbGl0eT1mdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbihiKXtiLnNldENvbnRyb2xQb2ludHNWaXNpYmlsaXR5KGEpfTtkLnNldENvbnRyb2xQb2ludHNWaXNpYmlsaXR5LmNhbGwodGhpcyxhKTt0aGlzLnNoYXBlcy5mb3JFYWNoKGIpO3RoaXMubGFiZWxzLmZvckVhY2goYil9O2EucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LGI9ZnVuY3Rpb24oYSl7YS5kZXN0cm95KCl9O3RoaXMubGFiZWxzLmZvckVhY2goYik7dGhpcy5zaGFwZXMuZm9yRWFjaChiKTt0aGlzLmNsaXBZQXhpcz10aGlzLmNsaXBYQXhpcz1udWxsO24oYS5sYWJlbENvbGxlY3RvcnMsdGhpcy5sYWJlbENvbGxlY3Rvcik7Yy5kZXN0cm95LmNhbGwodGhpcyk7ZC5kZXN0cm95LmNhbGwodGhpcyk7CmYodGhpcyxhKX07YS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhcnQucmVtb3ZlQW5ub3RhdGlvbih0aGlzKX07YS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jaGFydCxkPXRoaXMuZ2V0TGFiZWxzQW5kU2hhcGVzT3B0aW9ucyh0aGlzLnVzZXJPcHRpb25zLGEpLGY9Yy5hbm5vdGF0aW9ucy5pbmRleE9mKHRoaXMpO2E9dyghMCx0aGlzLnVzZXJPcHRpb25zLGEpO2EubGFiZWxzPWQubGFiZWxzO2Euc2hhcGVzPWQuc2hhcGVzO3RoaXMuZGVzdHJveSgpO3RoaXMuY29uc3RydWN0b3IoYyxhKTtjLm9wdGlvbnMuYW5ub3RhdGlvbnNbZl09YTt0aGlzLmlzVXBkYXRpbmc9ITA7QyhiLCEwKSYmYy5yZWRyYXcoKTt0KHRoaXMsImFmdGVyVXBkYXRlIik7dGhpcy5pc1VwZGF0aW5nPSExfTthLnByb3RvdHlwZS5pbml0U2hhcGU9ZnVuY3Rpb24oYixjKXtiPXcodGhpcy5vcHRpb25zLnNoYXBlT3B0aW9ucyx7Y29udHJvbFBvaW50T3B0aW9uczp0aGlzLm9wdGlvbnMuY29udHJvbFBvaW50T3B0aW9uc30sCmIpO2M9bmV3IGEuc2hhcGVzTWFwW2IudHlwZV0odGhpcyxiLGMpO2MuaXRlbVR5cGU9InNoYXBlIjt0aGlzLnNoYXBlcy5wdXNoKGMpO3JldHVybiBjfTthLnByb3RvdHlwZS5pbml0TGFiZWw9ZnVuY3Rpb24oYSxiKXthPXcodGhpcy5vcHRpb25zLmxhYmVsT3B0aW9ucyx7Y29udHJvbFBvaW50T3B0aW9uczp0aGlzLm9wdGlvbnMuY29udHJvbFBvaW50T3B0aW9uc30sYSk7Yj1uZXcgcCh0aGlzLGEsYik7Yi5pdGVtVHlwZT0ibGFiZWwiO3RoaXMubGFiZWxzLnB1c2goYik7cmV0dXJuIGJ9O2EucHJvdG90eXBlLnJlZHJhd0l0ZW09ZnVuY3Rpb24oYSxiKXthLmxpbmtQb2ludHMoKTthLnNob3VsZEJlRHJhd24oKT8oYS5ncmFwaGljfHx0aGlzLnJlbmRlckl0ZW0oYSksYS5yZWRyYXcoQyhiLCEwKSYmYS5ncmFwaGljLnBsYWNlZCksYS5wb2ludHMubGVuZ3RoJiZ0aGlzLmFkanVzdFZpc2liaWxpdHkoYSkpOnRoaXMuZGVzdHJveUl0ZW0oYSl9O2EucHJvdG90eXBlLmFkanVzdFZpc2liaWxpdHk9CmZ1bmN0aW9uKGEpe3ZhciBiPSExLGM9YS5ncmFwaGljO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7ITEhPT1hLnNlcmllcy52aXNpYmxlJiYhMSE9PWEudmlzaWJsZSYmKGI9ITApfSk7Yj8iaGlkZGVuIj09PWMudmlzaWJpbGl0eSYmYy5zaG93KCk6Yy5oaWRlKCl9O2EucHJvdG90eXBlLmRlc3Ryb3lJdGVtPWZ1bmN0aW9uKGEpe24odGhpc1thLml0ZW1UeXBlKyJzIl0sYSk7YS5kZXN0cm95KCl9O2EucHJvdG90eXBlLnJlbmRlckl0ZW09ZnVuY3Rpb24oYSl7YS5yZW5kZXIoImxhYmVsIj09PWEuaXRlbVR5cGU/dGhpcy5sYWJlbHNHcm91cDp0aGlzLnNoYXBlc0dyb3VwKX07YS5Db250cm9sUG9pbnQ9ejthLk1vY2tQb2ludD1yO2Euc2hhcGVzTWFwPXtyZWN0Om0sY2lyY2xlOmUscGF0aDp2LGltYWdlOmJ9O2EudHlwZXM9e307cmV0dXJuIGF9KCk7dyghMCxCLnByb3RvdHlwZSxkLGMsdyhCLnByb3RvdHlwZSx7bm9uRE9NRXZlbnRzOlsiYWRkIiwiYWZ0ZXJVcGRhdGUiLAoiZHJhZyIsInJlbW92ZSJdLGRlZmF1bHRPcHRpb25zOnt2aXNpYmxlOiEwLGRyYWdnYWJsZToieHkiLGxhYmVsT3B0aW9uczp7YWxpZ246ImNlbnRlciIsYWxsb3dPdmVybGFwOiExLGJhY2tncm91bmRDb2xvcjoicmdiYSgwLCAwLCAwLCAwLjc1KSIsYm9yZGVyQ29sb3I6ImJsYWNrIixib3JkZXJSYWRpdXM6Myxib3JkZXJXaWR0aDoxLGNsYXNzTmFtZToiIixjcm9wOiExLGZvcm1hdHRlcjpmdW5jdGlvbigpe3JldHVybiBnKHRoaXMueSk/dGhpcy55OiJBbm5vdGF0aW9uIGxhYmVsIn0sb3ZlcmZsb3c6Imp1c3RpZnkiLHBhZGRpbmc6NSxzaGFkb3c6ITEsc2hhcGU6ImNhbGxvdXQiLHN0eWxlOntmb250U2l6ZToiMTFweCIsZm9udFdlaWdodDoibm9ybWFsIixjb2xvcjoiY29udHJhc3QifSx1c2VIVE1MOiExLHZlcnRpY2FsQWxpZ246ImJvdHRvbSIseDowLHk6LTE2fSxzaGFwZU9wdGlvbnM6e3N0cm9rZToicmdiYSgwLCAwLCAwLCAwLjc1KSIsc3Ryb2tlV2lkdGg6MSxmaWxsOiJyZ2JhKDAsIDAsIDAsIDAuNzUpIiwKcjowLHNuYXA6Mn0sY29udHJvbFBvaW50T3B0aW9uczp7c3ltYm9sOiJjaXJjbGUiLHdpZHRoOjEwLGhlaWdodDoxMCxzdHlsZTp7c3Ryb2tlOiJibGFjayIsInN0cm9rZS13aWR0aCI6MixmaWxsOiJ3aGl0ZSJ9LHZpc2libGU6ITEsZXZlbnRzOnt9fSxldmVudHM6e30sekluZGV4OjZ9fSkpO2guZXh0ZW5kQW5ub3RhdGlvbj1mdW5jdGlvbihhLGIsYyxkKXtiPWJ8fEI7dyghMCxhLnByb3RvdHlwZSxiLnByb3RvdHlwZSxjKTthLnByb3RvdHlwZS5kZWZhdWx0T3B0aW9ucz13KGEucHJvdG90eXBlLmRlZmF1bHRPcHRpb25zLGR8fHt9KX07dShhLHtpbml0QW5ub3RhdGlvbjpmdW5jdGlvbihhKXthPW5ldyAoQi50eXBlc1thLnR5cGVdfHxCKSh0aGlzLGEpO3RoaXMuYW5ub3RhdGlvbnMucHVzaChhKTtyZXR1cm4gYX0sYWRkQW5ub3RhdGlvbjpmdW5jdGlvbihhLGIpe2E9dGhpcy5pbml0QW5ub3RhdGlvbihhKTt0aGlzLm9wdGlvbnMuYW5ub3RhdGlvbnMucHVzaChhLm9wdGlvbnMpOwpDKGIsITApJiZhLnJlZHJhdygpO3JldHVybiBhfSxyZW1vdmVBbm5vdGF0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYW5ub3RhdGlvbnMsYz0iYW5ub3RhdGlvbnMiPT09YS5jb2xsP2E6bChiLGZ1bmN0aW9uKGIpe3JldHVybiBiLm9wdGlvbnMuaWQ9PT1hfSk7YyYmKHQoYywicmVtb3ZlIiksbih0aGlzLm9wdGlvbnMuYW5ub3RhdGlvbnMsYy5vcHRpb25zKSxuKGIsYyksYy5kZXN0cm95KCkpfSxkcmF3QW5ub3RhdGlvbnM6ZnVuY3Rpb24oKXt0aGlzLnBsb3RCb3hDbGlwLmF0dHIodGhpcy5wbG90Qm94KTt0aGlzLmFubm90YXRpb25zLmZvckVhY2goZnVuY3Rpb24oYSl7YS5yZWRyYXcoKX0pfX0pO2EuY29sbGVjdGlvbnNXaXRoVXBkYXRlLnB1c2goImFubm90YXRpb25zIik7YS5jb2xsZWN0aW9uc1dpdGhJbml0LmFubm90YXRpb25zPVthLmFkZEFubm90YXRpb25dO2EuY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oYSl7YS5hbm5vdGF0aW9ucz1bXTthLm9wdGlvbnMuYW5ub3RhdGlvbnN8fAooYS5vcHRpb25zLmFubm90YXRpb25zPVtdKTthLnBsb3RCb3hDbGlwPXRoaXMucmVuZGVyZXIuY2xpcFJlY3QodGhpcy5wbG90Qm94KTthLmNvbnRyb2xQb2ludHNHcm91cD1hLnJlbmRlcmVyLmcoImNvbnRyb2wtcG9pbnRzIikuYXR0cih7ekluZGV4Ojk5fSkuY2xpcChhLnBsb3RCb3hDbGlwKS5hZGQoKTthLm9wdGlvbnMuYW5ub3RhdGlvbnMuZm9yRWFjaChmdW5jdGlvbihiLGMpe2I9YS5pbml0QW5ub3RhdGlvbihiKTthLm9wdGlvbnMuYW5ub3RhdGlvbnNbY109Yi5vcHRpb25zfSk7YS5kcmF3QW5ub3RhdGlvbnMoKTtxKGEsInJlZHJhdyIsYS5kcmF3QW5ub3RhdGlvbnMpO3EoYSwiZGVzdHJveSIsZnVuY3Rpb24oKXthLnBsb3RCb3hDbGlwLmRlc3Ryb3koKTthLmNvbnRyb2xQb2ludHNHcm91cC5kZXN0cm95KCl9KX0pO2soeC5wcm90b3R5cGUsIm9uQ29udGFpbmVyTW91c2VEb3duIixmdW5jdGlvbihhKXt0aGlzLmNoYXJ0Lmhhc0RyYWdnZWRBbm5vdGF0aW9ufHxhLmFwcGx5KHRoaXMsCkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTtyZXR1cm4gaC5Bbm5vdGF0aW9uPUJ9KTtwKGEsIm1peGlucy9uYXZpZ2F0aW9uLmpzIixbXSxmdW5jdGlvbigpe3JldHVybntpbml0VXBkYXRlOmZ1bmN0aW9uKGEpe2EubmF2aWdhdGlvbnx8KGEubmF2aWdhdGlvbj17dXBkYXRlczpbXSx1cGRhdGU6ZnVuY3Rpb24oYSxtKXt0aGlzLnVwZGF0ZXMuZm9yRWFjaChmdW5jdGlvbihkKXtkLnVwZGF0ZS5jYWxsKGQuY29udGV4dCxhLG0pfSl9fSl9LGFkZFVwZGF0ZTpmdW5jdGlvbihhLGQpe2QubmF2aWdhdGlvbnx8dGhpcy5pbml0VXBkYXRlKGQpO2QubmF2aWdhdGlvbi51cGRhdGVzLnB1c2goe3VwZGF0ZTphLGNvbnRleHQ6ZH0pfX19KTtwKGEsImFubm90YXRpb25zL25hdmlnYXRpb25CaW5kaW5ncy5qcyIsW2FbImFubm90YXRpb25zL2Fubm90YXRpb25zLnNyYy5qcyJdLGFbIm1peGlucy9uYXZpZ2F0aW9uLmpzIl0sYVsicGFydHMvR2xvYmFscy5qcyJdLAphWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxkLG0sZSl7ZnVuY3Rpb24gcShhKXt2YXIgYj1hLnByb3RvdHlwZS5kZWZhdWx0T3B0aW9ucy5ldmVudHMmJmEucHJvdG90eXBlLmRlZmF1bHRPcHRpb25zLmV2ZW50cy5jbGljazt5KCEwLGEucHJvdG90eXBlLmRlZmF1bHRPcHRpb25zLmV2ZW50cyx7Y2xpY2s6ZnVuY3Rpb24oYSl7dmFyIGQ9dGhpcyxmPWQuY2hhcnQubmF2aWdhdGlvbkJpbmRpbmdzLGc9Zi5hY3RpdmVBbm5vdGF0aW9uO2ImJmIuY2FsbChkLGEpO2chPT1kPyhmLmRlc2VsZWN0QW5ub3RhdGlvbigpLGYuYWN0aXZlQW5ub3RhdGlvbj1kLGQuc2V0Q29udHJvbFBvaW50c1Zpc2liaWxpdHkoITApLGMoZiwic2hvd1BvcHVwIix7YW5ub3RhdGlvbjpkLGZvcm1UeXBlOiJhbm5vdGF0aW9uLXRvb2xiYXIiLG9wdGlvbnM6Zi5hbm5vdGF0aW9uVG9GaWVsZHMoZCksb25TdWJtaXQ6ZnVuY3Rpb24oYSl7dmFyIGI9e307InJlbW92ZSI9PT1hLmFjdGlvblR5cGU/CihmLmFjdGl2ZUFubm90YXRpb249ITEsZi5jaGFydC5yZW1vdmVBbm5vdGF0aW9uKGQpKTooZi5maWVsZHNUb09wdGlvbnMoYS5maWVsZHMsYiksZi5kZXNlbGVjdEFubm90YXRpb24oKSxhPWIudHlwZU9wdGlvbnMsIm1lYXN1cmUiPT09ZC5vcHRpb25zLnR5cGUmJihhLmNyb3NzaGFpclkuZW5hYmxlZD0wIT09YS5jcm9zc2hhaXJZLnN0cm9rZVdpZHRoLGEuY3Jvc3NoYWlyWC5lbmFibGVkPTAhPT1hLmNyb3NzaGFpclguc3Ryb2tlV2lkdGgpLGQudXBkYXRlKGIpKX19KSk6KGYuZGVzZWxlY3RBbm5vdGF0aW9uKCksYyhmLCJjbG9zZVBvcHVwIikpO2EuYWN0aXZlQW5ub3RhdGlvbj0hMH19KX12YXIgYj1lLmFkZEV2ZW50LHA9ZS5hdHRyLHo9ZS5mb3JtYXQsYz1lLmZpcmVFdmVudCxoPWUuaXNBcnJheSxyPWUuaXNGdW5jdGlvbix4PWUuaXNOdW1iZXIsaz1lLmlzT2JqZWN0LHk9ZS5tZXJnZSxnPWUub2JqZWN0RWFjaCxmPWUucGljaztlPWUuc2V0T3B0aW9uczt2YXIgbj1tLmRvYywKdT1tLndpbixsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIpe3RoaXMuc2VsZWN0ZWRCdXR0b249dGhpcy5ib3VuZENsYXNzTmFtZXM9dm9pZCAwO3RoaXMuY2hhcnQ9YTt0aGlzLm9wdGlvbnM9Yjt0aGlzLmV2ZW50c1RvVW5iaW5kPVtdO3RoaXMuY29udGFpbmVyPW4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0aGlzLm9wdGlvbnMuYmluZGluZ3NDbGFzc05hbWV8fCIiKX1hLnByb3RvdHlwZS5pbml0RXZlbnRzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxjPWEuY2hhcnQsZD1hLmNvbnRhaW5lcixmPWEub3B0aW9uczthLmJvdW5kQ2xhc3NOYW1lcz17fTtnKGYuYmluZGluZ3N8fHt9LGZ1bmN0aW9uKGIpe2EuYm91bmRDbGFzc05hbWVzW2IuY2xhc3NOYW1lXT1ifSk7W10uZm9yRWFjaC5jYWxsKGQsZnVuY3Rpb24oYyl7YS5ldmVudHNUb1VuYmluZC5wdXNoKGIoYywiY2xpY2siLGZ1bmN0aW9uKGIpe3ZhciBkPWEuZ2V0QnV0dG9uRXZlbnRzKGMsYik7ZCYmYS5iaW5kaW5nc0J1dHRvbkNsaWNrKGQuYnV0dG9uLApkLmV2ZW50cyxiKX0pKX0pO2coZi5ldmVudHN8fHt9LGZ1bmN0aW9uKGMsZCl7cihjKSYmYS5ldmVudHNUb1VuYmluZC5wdXNoKGIoYSxkLGMpKX0pO2EuZXZlbnRzVG9VbmJpbmQucHVzaChiKGMuY29udGFpbmVyLCJjbGljayIsZnVuY3Rpb24oYil7IWMuY2FuY2VsQ2xpY2smJmMuaXNJbnNpZGVQbG90KGIuY2hhcnRYLWMucGxvdExlZnQsYi5jaGFydFktYy5wbG90VG9wKSYmYS5iaW5kaW5nc0NoYXJ0Q2xpY2sodGhpcyxiKX0pKTthLmV2ZW50c1RvVW5iaW5kLnB1c2goYihjLmNvbnRhaW5lcixtLmlzVG91Y2hEZXZpY2U/InRvdWNobW92ZSI6Im1vdXNlbW92ZSIsZnVuY3Rpb24oYil7YS5iaW5kaW5nc0NvbnRhaW5lck1vdXNlTW92ZSh0aGlzLGIpfSkpfTthLnByb3RvdHlwZS5pbml0VXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcztkLmFkZFVwZGF0ZShmdW5jdGlvbihiKXthLnVwZGF0ZShiKX0sdGhpcy5jaGFydCl9O2EucHJvdG90eXBlLmJpbmRpbmdzQnV0dG9uQ2xpY2s9CmZ1bmN0aW9uKGEsYixkKXt2YXIgZj10aGlzLmNoYXJ0O3RoaXMuc2VsZWN0ZWRCdXR0b25FbGVtZW50JiYoYyh0aGlzLCJkZXNlbGVjdEJ1dHRvbiIse2J1dHRvbjp0aGlzLnNlbGVjdGVkQnV0dG9uRWxlbWVudH0pLHRoaXMubmV4dEV2ZW50JiYodGhpcy5jdXJyZW50VXNlckRldGFpbHMmJiJhbm5vdGF0aW9ucyI9PT10aGlzLmN1cnJlbnRVc2VyRGV0YWlscy5jb2xsJiZmLnJlbW92ZUFubm90YXRpb24odGhpcy5jdXJyZW50VXNlckRldGFpbHMpLHRoaXMubW91c2VNb3ZlRXZlbnQ9dGhpcy5uZXh0RXZlbnQ9ITEpKTt0aGlzLnNlbGVjdGVkQnV0dG9uPWI7dGhpcy5zZWxlY3RlZEJ1dHRvbkVsZW1lbnQ9YTtjKHRoaXMsInNlbGVjdEJ1dHRvbiIse2J1dHRvbjphfSk7Yi5pbml0JiZiLmluaXQuY2FsbCh0aGlzLGEsZCk7KGIuc3RhcnR8fGIuc3RlcHMpJiZmLnJlbmRlcmVyLmJveFdyYXBwZXIuYWRkQ2xhc3MoImhpZ2hjaGFydHMtZHJhdy1tb2RlIil9O2EucHJvdG90eXBlLmJpbmRpbmdzQ2hhcnRDbGljaz0KZnVuY3Rpb24oYSxiKXthPXRoaXMuY2hhcnQ7dmFyIGQ9dGhpcy5zZWxlY3RlZEJ1dHRvbjthPWEucmVuZGVyZXIuYm94V3JhcHBlcjt2YXIgZjtpZihmPXRoaXMuYWN0aXZlQW5ub3RhdGlvbiYmIWIuYWN0aXZlQW5ub3RhdGlvbiYmYi50YXJnZXQucGFyZW50Tm9kZSl7YTp7Zj1iLnRhcmdldDt2YXIgZz11LkVsZW1lbnQucHJvdG90eXBlLGU9Zy5tYXRjaGVzfHxnLm1zTWF0Y2hlc1NlbGVjdG9yfHxnLndlYmtpdE1hdGNoZXNTZWxlY3Rvcix0PW51bGw7aWYoZy5jbG9zZXN0KXQ9Zy5jbG9zZXN0LmNhbGwoZiwiLmhpZ2hjaGFydHMtcG9wdXAiKTtlbHNle2Rve2lmKGUuY2FsbChmLCIuaGlnaGNoYXJ0cy1wb3B1cCIpKWJyZWFrIGE7Zj1mLnBhcmVudEVsZW1lbnR8fGYucGFyZW50Tm9kZX13aGlsZShudWxsIT09ZiYmMT09PWYubm9kZVR5cGUpfWY9dH1mPSFmfWYmJihjKHRoaXMsImNsb3NlUG9wdXAiKSx0aGlzLmRlc2VsZWN0QW5ub3RhdGlvbigpKTtkJiZkLnN0YXJ0JiYodGhpcy5uZXh0RXZlbnQ/Cih0aGlzLm5leHRFdmVudChiLHRoaXMuY3VycmVudFVzZXJEZXRhaWxzKSx0aGlzLnN0ZXBzJiYodGhpcy5zdGVwSW5kZXgrKyxkLnN0ZXBzW3RoaXMuc3RlcEluZGV4XT90aGlzLm1vdXNlTW92ZUV2ZW50PXRoaXMubmV4dEV2ZW50PWQuc3RlcHNbdGhpcy5zdGVwSW5kZXhdOihjKHRoaXMsImRlc2VsZWN0QnV0dG9uIix7YnV0dG9uOnRoaXMuc2VsZWN0ZWRCdXR0b25FbGVtZW50fSksYS5yZW1vdmVDbGFzcygiaGlnaGNoYXJ0cy1kcmF3LW1vZGUiKSxkLmVuZCYmZC5lbmQuY2FsbCh0aGlzLGIsdGhpcy5jdXJyZW50VXNlckRldGFpbHMpLHRoaXMubW91c2VNb3ZlRXZlbnQ9dGhpcy5uZXh0RXZlbnQ9ITEsdGhpcy5zZWxlY3RlZEJ1dHRvbj1udWxsKSkpOih0aGlzLmN1cnJlbnRVc2VyRGV0YWlscz1kLnN0YXJ0LmNhbGwodGhpcyxiKSxkLnN0ZXBzPyh0aGlzLnN0ZXBJbmRleD0wLHRoaXMuc3RlcHM9ITAsdGhpcy5tb3VzZU1vdmVFdmVudD10aGlzLm5leHRFdmVudD1kLnN0ZXBzW3RoaXMuc3RlcEluZGV4XSk6CihjKHRoaXMsImRlc2VsZWN0QnV0dG9uIix7YnV0dG9uOnRoaXMuc2VsZWN0ZWRCdXR0b25FbGVtZW50fSksYS5yZW1vdmVDbGFzcygiaGlnaGNoYXJ0cy1kcmF3LW1vZGUiKSx0aGlzLnN0ZXBzPSExLHRoaXMuc2VsZWN0ZWRCdXR0b249bnVsbCxkLmVuZCYmZC5lbmQuY2FsbCh0aGlzLGIsdGhpcy5jdXJyZW50VXNlckRldGFpbHMpKSkpfTthLnByb3RvdHlwZS5iaW5kaW5nc0NvbnRhaW5lck1vdXNlTW92ZT1mdW5jdGlvbihhLGIpe3RoaXMubW91c2VNb3ZlRXZlbnQmJnRoaXMubW91c2VNb3ZlRXZlbnQoYix0aGlzLmN1cnJlbnRVc2VyRGV0YWlscyl9O2EucHJvdG90eXBlLmZpZWxkc1RvT3B0aW9ucz1mdW5jdGlvbihhLGIpe2coYSxmdW5jdGlvbihhLGMpe3ZhciBkPXBhcnNlRmxvYXQoYSksZz1jLnNwbGl0KCIuIiksZT1iLHQ9Zy5sZW5ndGgtMTsheChkKXx8YS5tYXRjaCgvcHgvZyl8fGMubWF0Y2goL2Zvcm1hdC9nKXx8KGE9ZCk7IiIhPT1hJiYidW5kZWZpbmVkIiE9PWEmJgpnLmZvckVhY2goZnVuY3Rpb24oYixjKXt2YXIgZD1mKGdbYysxXSwiIik7dD09PWM/ZVtiXT1hOihlW2JdfHwoZVtiXT1kLm1hdGNoKC9cZC9nKT9bXTp7fSksZT1lW2JdKX0pfSk7cmV0dXJuIGJ9O2EucHJvdG90eXBlLmRlc2VsZWN0QW5ub3RhdGlvbj1mdW5jdGlvbigpe3RoaXMuYWN0aXZlQW5ub3RhdGlvbiYmKHRoaXMuYWN0aXZlQW5ub3RhdGlvbi5zZXRDb250cm9sUG9pbnRzVmlzaWJpbGl0eSghMSksdGhpcy5hY3RpdmVBbm5vdGF0aW9uPSExKX07YS5wcm90b3R5cGUuYW5ub3RhdGlvblRvRmllbGRzPWZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGMoYSxkLGYsZSl7aWYoZiYmLTE9PT13LmluZGV4T2YoZCkmJigwPD0oZi5pbmRleE9mJiZmLmluZGV4T2YoZCkpfHxmW2RdfHwhMD09PWYpKWlmKGgoYSkpZVtkXT1bXSxhLmZvckVhY2goZnVuY3Rpb24oYSxiKXtrKGEpPyhlW2RdW2JdPXt9LGcoYSxmdW5jdGlvbihhLGYpe2MoYSxmLHRbZF0sZVtkXVtiXSl9KSk6YyhhLDAsdFtkXSwKZVtkXSl9KTtlbHNlIGlmKGsoYSkpe3ZhciBuPXt9O2goZSk/KGUucHVzaChuKSxuW2RdPXt9LG49bltkXSk6ZVtkXT1uO2coYSxmdW5jdGlvbihhLGIpe2MoYSxiLDA9PT1kP2Y6dFtkXSxuKX0pfWVsc2UiZm9ybWF0Ij09PWQ/ZVtkXT1beihhLGIubGFiZWxzWzBdLnBvaW50c1swXSkudG9TdHJpbmcoKSwidGV4dCJdOmgoZSk/ZS5wdXNoKFthLGwoYSldKTplW2RdPVthLGwoYSldfXZhciBkPWIub3B0aW9ucyxlPWEuYW5ub3RhdGlvbnNFZGl0YWJsZSx0PWUubmVzdGVkT3B0aW9ucyxsPXRoaXMudXRpbHMuZ2V0RmllbGRUeXBlLG49ZihkLnR5cGUsZC5zaGFwZXMmJmQuc2hhcGVzWzBdJiZkLnNoYXBlc1swXS50eXBlLGQubGFiZWxzJiZkLmxhYmVsc1swXSYmZC5sYWJlbHNbMF0uaXRlbVR5cGUsImxhYmVsIiksdz1hLmFubm90YXRpb25zTm9uRWRpdGFibGVbZC5sYW5nS2V5XXx8W10sdT17bGFuZ0tleTpkLmxhbmdLZXksdHlwZTpufTtnKGQsZnVuY3Rpb24oYSxiKXsidHlwZU9wdGlvbnMiPT09CmI/KHVbYl09e30sZyhkW2JdLGZ1bmN0aW9uKGEsZCl7YyhhLGQsdCx1W2JdLCEwKX0pKTpjKGEsYixlW25dLHUpfSk7cmV0dXJuIHV9O2EucHJvdG90eXBlLmdldENsaWNrZWRDbGFzc05hbWVzPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi50YXJnZXQ7Yj1bXTtmb3IodmFyIGQ7YyYmKChkPXAoYywiY2xhc3MiKSkmJihiPWIuY29uY2F0KGQuc3BsaXQoIiAiKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuW2EsY119KSkpLGM9Yy5wYXJlbnROb2RlLGMhPT1hKTspO3JldHVybiBifTthLnByb3RvdHlwZS5nZXRCdXR0b25FdmVudHM9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ7dGhpcy5nZXRDbGlja2VkQ2xhc3NOYW1lcyhhLGIpLmZvckVhY2goZnVuY3Rpb24oYSl7Yy5ib3VuZENsYXNzTmFtZXNbYVswXV0mJiFkJiYoZD17ZXZlbnRzOmMuYm91bmRDbGFzc05hbWVzW2FbMF1dLGJ1dHRvbjphWzFdfSl9KTtyZXR1cm4gZH07YS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGEpe3RoaXMub3B0aW9ucz0KeSghMCx0aGlzLm9wdGlvbnMsYSk7dGhpcy5yZW1vdmVFdmVudHMoKTt0aGlzLmluaXRFdmVudHMoKX07YS5wcm90b3R5cGUucmVtb3ZlRXZlbnRzPWZ1bmN0aW9uKCl7dGhpcy5ldmVudHNUb1VuYmluZC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EoKX0pfTthLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVFdmVudHMoKX07YS5hbm5vdGF0aW9uc0VkaXRhYmxlPXtuZXN0ZWRPcHRpb25zOntsYWJlbE9wdGlvbnM6WyJzdHlsZSIsImZvcm1hdCIsImJhY2tncm91bmRDb2xvciJdLGxhYmVsczpbInN0eWxlIl0sbGFiZWw6WyJzdHlsZSJdLHN0eWxlOlsiZm9udFNpemUiLCJjb2xvciJdLGJhY2tncm91bmQ6WyJmaWxsIiwic3Ryb2tlV2lkdGgiLCJzdHJva2UiXSxpbm5lckJhY2tncm91bmQ6WyJmaWxsIiwic3Ryb2tlV2lkdGgiLCJzdHJva2UiXSxvdXRlckJhY2tncm91bmQ6WyJmaWxsIiwic3Ryb2tlV2lkdGgiLCJzdHJva2UiXSxzaGFwZU9wdGlvbnM6WyJmaWxsIiwKInN0cm9rZVdpZHRoIiwic3Ryb2tlIl0sc2hhcGVzOlsiZmlsbCIsInN0cm9rZVdpZHRoIiwic3Ryb2tlIl0sbGluZTpbInN0cm9rZVdpZHRoIiwic3Ryb2tlIl0sYmFja2dyb3VuZENvbG9yczpbITBdLGNvbm5lY3RvcjpbImZpbGwiLCJzdHJva2VXaWR0aCIsInN0cm9rZSJdLGNyb3NzaGFpclg6WyJzdHJva2VXaWR0aCIsInN0cm9rZSJdLGNyb3NzaGFpclk6WyJzdHJva2VXaWR0aCIsInN0cm9rZSJdfSxjaXJjbGU6WyJzaGFwZXMiXSx2ZXJ0aWNhbExpbmU6W10sbGFiZWw6WyJsYWJlbE9wdGlvbnMiXSxtZWFzdXJlOlsiYmFja2dyb3VuZCIsImNyb3NzaGFpclkiLCJjcm9zc2hhaXJYIl0sZmlib25hY2NpOltdLHR1bm5lbDpbImJhY2tncm91bmQiLCJsaW5lIiwiaGVpZ2h0Il0scGl0Y2hmb3JrOlsiaW5uZXJCYWNrZ3JvdW5kIiwib3V0ZXJCYWNrZ3JvdW5kIl0scmVjdDpbInNoYXBlcyJdLGNyb29rZWRMaW5lOltdLGJhc2ljQW5ub3RhdGlvbjpbXX07YS5hbm5vdGF0aW9uc05vbkVkaXRhYmxlPQp7cmVjdGFuZ2xlOlsiY3Jvc3NoYWlyWCIsImNyb3NzaGFpclkiLCJsYWJlbCJdfTtyZXR1cm4gYX0oKTtsLnByb3RvdHlwZS51dGlscz17dXBkYXRlUmVjdFNpemU6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmNoYXJ0LGQ9Yi5vcHRpb25zLnR5cGVPcHRpb25zLGY9Yy5wb2ludGVyLmdldENvb3JkaW5hdGVzKGEpO2E9Zi54QXhpc1swXS52YWx1ZS1kLnBvaW50Lng7ZD1kLnBvaW50LnktZi55QXhpc1swXS52YWx1ZTtiLnVwZGF0ZSh7dHlwZU9wdGlvbnM6e2JhY2tncm91bmQ6e3dpZHRoOmMuaW52ZXJ0ZWQ/ZDphLGhlaWdodDpjLmludmVydGVkP2E6ZH19fSl9LGdldEZpZWxkVHlwZTpmdW5jdGlvbihhKXtyZXR1cm57c3RyaW5nOiJ0ZXh0IixudW1iZXI6Im51bWJlciIsImJvb2xlYW4iOiJjaGVja2JveCJ9W3R5cGVvZiBhXX19O20uQ2hhcnQucHJvdG90eXBlLmluaXROYXZpZ2F0aW9uQmluZGluZ3M9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnM7YSYmYS5uYXZpZ2F0aW9uJiYKYS5uYXZpZ2F0aW9uLmJpbmRpbmdzJiYodGhpcy5uYXZpZ2F0aW9uQmluZGluZ3M9bmV3IGwodGhpcyxhLm5hdmlnYXRpb24pLHRoaXMubmF2aWdhdGlvbkJpbmRpbmdzLmluaXRFdmVudHMoKSx0aGlzLm5hdmlnYXRpb25CaW5kaW5ncy5pbml0VXBkYXRlKCkpfTtiKG0uQ2hhcnQsImxvYWQiLGZ1bmN0aW9uKCl7dGhpcy5pbml0TmF2aWdhdGlvbkJpbmRpbmdzKCl9KTtiKG0uQ2hhcnQsImRlc3Ryb3kiLGZ1bmN0aW9uKCl7dGhpcy5uYXZpZ2F0aW9uQmluZGluZ3MmJnRoaXMubmF2aWdhdGlvbkJpbmRpbmdzLmRlc3Ryb3koKX0pO2IobCwiZGVzZWxlY3RCdXR0b24iLGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZEJ1dHRvbkVsZW1lbnQ9bnVsbH0pO2IoYSwicmVtb3ZlIixmdW5jdGlvbigpe3RoaXMuY2hhcnQubmF2aWdhdGlvbkJpbmRpbmdzJiZ0aGlzLmNoYXJ0Lm5hdmlnYXRpb25CaW5kaW5ncy5kZXNlbGVjdEFubm90YXRpb24oKX0pO20uQW5ub3RhdGlvbiYmKHEoYSksZyhhLnR5cGVzLApmdW5jdGlvbihhKXtxKGEpfSkpO2Uoe2xhbmc6e25hdmlnYXRpb246e3BvcHVwOntzaW1wbGVTaGFwZXM6IlNpbXBsZSBzaGFwZXMiLGxpbmVzOiJMaW5lcyIsY2lyY2xlOiJDaXJjbGUiLHJlY3RhbmdsZToiUmVjdGFuZ2xlIixsYWJlbDoiTGFiZWwiLHNoYXBlT3B0aW9uczoiU2hhcGUgb3B0aW9ucyIsdHlwZU9wdGlvbnM6IkRldGFpbHMiLGZpbGw6IkZpbGwiLGZvcm1hdDoiVGV4dCIsc3Ryb2tlV2lkdGg6IkxpbmUgd2lkdGgiLHN0cm9rZToiTGluZSBjb2xvciIsdGl0bGU6IlRpdGxlIixuYW1lOiJOYW1lIixsYWJlbE9wdGlvbnM6IkxhYmVsIG9wdGlvbnMiLGxhYmVsczoiTGFiZWxzIixiYWNrZ3JvdW5kQ29sb3I6IkJhY2tncm91bmQgY29sb3IiLGJhY2tncm91bmRDb2xvcnM6IkJhY2tncm91bmQgY29sb3JzIixib3JkZXJDb2xvcjoiQm9yZGVyIGNvbG9yIixib3JkZXJSYWRpdXM6IkJvcmRlciByYWRpdXMiLGJvcmRlcldpZHRoOiJCb3JkZXIgd2lkdGgiLHN0eWxlOiJTdHlsZSIsCnBhZGRpbmc6IlBhZGRpbmciLGZvbnRTaXplOiJGb250IHNpemUiLGNvbG9yOiJDb2xvciIsaGVpZ2h0OiJIZWlnaHQiLHNoYXBlczoiU2hhcGUgb3B0aW9ucyJ9fX0sbmF2aWdhdGlvbjp7YmluZGluZ3NDbGFzc05hbWU6ImhpZ2hjaGFydHMtYmluZGluZ3MtY29udGFpbmVyIixiaW5kaW5nczp7Y2lyY2xlQW5ub3RhdGlvbjp7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLWNpcmNsZS1hbm5vdGF0aW9uIixzdGFydDpmdW5jdGlvbihhKXthPXRoaXMuY2hhcnQucG9pbnRlci5nZXRDb29yZGluYXRlcyhhKTt2YXIgYj10aGlzLmNoYXJ0Lm9wdGlvbnMubmF2aWdhdGlvbjtyZXR1cm4gdGhpcy5jaGFydC5hZGRBbm5vdGF0aW9uKHkoe2xhbmdLZXk6ImNpcmNsZSIsdHlwZToiYmFzaWNBbm5vdGF0aW9uIixzaGFwZXM6W3t0eXBlOiJjaXJjbGUiLHBvaW50Ont4QXhpczowLHlBeGlzOjAseDphLnhBeGlzWzBdLnZhbHVlLHk6YS55QXhpc1swXS52YWx1ZX0scjo1fV19LGIuYW5ub3RhdGlvbnNPcHRpb25zLApiLmJpbmRpbmdzLmNpcmNsZUFubm90YXRpb24uYW5ub3RhdGlvbnNPcHRpb25zKSl9LHN0ZXBzOltmdW5jdGlvbihhLGIpe3ZhciBjPWIub3B0aW9ucy5zaGFwZXNbMF0ucG9pbnQsZD10aGlzLmNoYXJ0LnhBeGlzWzBdLnRvUGl4ZWxzKGMueCk7Yz10aGlzLmNoYXJ0LnlBeGlzWzBdLnRvUGl4ZWxzKGMueSk7dmFyIGY9dGhpcy5jaGFydC5pbnZlcnRlZDtiLnVwZGF0ZSh7c2hhcGVzOlt7cjpNYXRoLm1heChNYXRoLnNxcnQoTWF0aC5wb3coZj9jLWEuY2hhcnRYOmQtYS5jaGFydFgsMikrTWF0aC5wb3coZj9kLWEuY2hhcnRZOmMtYS5jaGFydFksMikpLDUpfV19KX1dfSxyZWN0YW5nbGVBbm5vdGF0aW9uOntjbGFzc05hbWU6ImhpZ2hjaGFydHMtcmVjdGFuZ2xlLWFubm90YXRpb24iLHN0YXJ0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hhcnQucG9pbnRlci5nZXRDb29yZGluYXRlcyhhKTthPXRoaXMuY2hhcnQub3B0aW9ucy5uYXZpZ2F0aW9uO3ZhciBjPWIueEF4aXNbMF0udmFsdWU7CmI9Yi55QXhpc1swXS52YWx1ZTtyZXR1cm4gdGhpcy5jaGFydC5hZGRBbm5vdGF0aW9uKHkoe2xhbmdLZXk6InJlY3RhbmdsZSIsdHlwZToiYmFzaWNBbm5vdGF0aW9uIixzaGFwZXM6W3t0eXBlOiJwYXRoIixwb2ludHM6W3t4QXhpczowLHlBeGlzOjAseDpjLHk6Yn0se3hBeGlzOjAseUF4aXM6MCx4OmMseTpifSx7eEF4aXM6MCx5QXhpczowLHg6Yyx5OmJ9LHt4QXhpczowLHlBeGlzOjAseDpjLHk6Yn1dfV19LGEuYW5ub3RhdGlvbnNPcHRpb25zLGEuYmluZGluZ3MucmVjdGFuZ2xlQW5ub3RhdGlvbi5hbm5vdGF0aW9uc09wdGlvbnMpKX0sc3RlcHM6W2Z1bmN0aW9uKGEsYil7dmFyIGM9Yi5vcHRpb25zLnNoYXBlc1swXS5wb2ludHMsZD10aGlzLmNoYXJ0LnBvaW50ZXIuZ2V0Q29vcmRpbmF0ZXMoYSk7YT1kLnhBeGlzWzBdLnZhbHVlO2Q9ZC55QXhpc1swXS52YWx1ZTtjWzFdLng9YTtjWzJdLng9YTtjWzJdLnk9ZDtjWzNdLnk9ZDtiLnVwZGF0ZSh7c2hhcGVzOlt7cG9pbnRzOmN9XX0pfV19LApsYWJlbEFubm90YXRpb246e2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1sYWJlbC1hbm5vdGF0aW9uIixzdGFydDpmdW5jdGlvbihhKXthPXRoaXMuY2hhcnQucG9pbnRlci5nZXRDb29yZGluYXRlcyhhKTt2YXIgYj10aGlzLmNoYXJ0Lm9wdGlvbnMubmF2aWdhdGlvbjtyZXR1cm4gdGhpcy5jaGFydC5hZGRBbm5vdGF0aW9uKHkoe2xhbmdLZXk6ImxhYmVsIix0eXBlOiJiYXNpY0Fubm90YXRpb24iLGxhYmVsT3B0aW9uczp7Zm9ybWF0OiJ7eTouMmZ9In0sbGFiZWxzOlt7cG9pbnQ6e3hBeGlzOjAseUF4aXM6MCx4OmEueEF4aXNbMF0udmFsdWUseTphLnlBeGlzWzBdLnZhbHVlfSxvdmVyZmxvdzoibm9uZSIsY3JvcDohMH1dfSxiLmFubm90YXRpb25zT3B0aW9ucyxiLmJpbmRpbmdzLmxhYmVsQW5ub3RhdGlvbi5hbm5vdGF0aW9uc09wdGlvbnMpKX19fSxldmVudHM6e30sYW5ub3RhdGlvbnNPcHRpb25zOnt9fX0pO3JldHVybiBsfSk7cChhLCJhbm5vdGF0aW9ucy9wb3B1cC5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSwKYVsiYW5ub3RhdGlvbnMvbmF2aWdhdGlvbkJpbmRpbmdzLmpzIl0sYVsicGFydHMvUG9pbnRlci5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLGQsbSxlKXt2YXIgcD1lLmFkZEV2ZW50LGI9ZS5jcmVhdGVFbGVtZW50LHE9ZS5kZWZpbmVkLHo9ZS5nZXRPcHRpb25zLGM9ZS5pc0FycmF5LGg9ZS5pc09iamVjdCxyPWUuaXNTdHJpbmcseD1lLm9iamVjdEVhY2gsaz1lLnBpY2s7ZT1lLndyYXA7dmFyIHk9L1xkL2c7ZShtLnByb3RvdHlwZSwib25Db250YWluZXJNb3VzZURvd24iLGZ1bmN0aW9uKGEsYil7dmFyIGM9Yi50YXJnZXQmJmIudGFyZ2V0LmNsYXNzTmFtZTtyKGMpJiYwPD1jLmluZGV4T2YoImhpZ2hjaGFydHMtcG9wdXAtZmllbGQiKXx8YS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTthLlBvcHVwPWZ1bmN0aW9uKGEsYil7dGhpcy5pbml0KGEsYil9O2EuUG9wdXAucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKGEsCmMpe3RoaXMuY29udGFpbmVyPWIoImRpdiIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1wb3B1cCJ9LG51bGwsYSk7dGhpcy5sYW5nPXRoaXMuZ2V0TGFuZ3BhY2soKTt0aGlzLmljb25zVVJMPWM7dGhpcy5hZGRDbG9zZUJ0bigpfSxhZGRDbG9zZUJ0bjpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dmFyIGM9YigiZGl2Iix7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLXBvcHVwLWNsb3NlIn0sbnVsbCx0aGlzLmNvbnRhaW5lcik7Yy5zdHlsZVsiYmFja2dyb3VuZC1pbWFnZSJdPSJ1cmwoIit0aGlzLmljb25zVVJMKyJjbG9zZS5zdmcpIjtbImNsaWNrIiwidG91Y2hzdGFydCJdLmZvckVhY2goZnVuY3Rpb24oYil7cChjLGIsZnVuY3Rpb24oKXthLmNsb3NlUG9wdXAoKX0pfSl9LGFkZENvbHNDb250YWluZXI6ZnVuY3Rpb24oYSl7dmFyIGM9YigiZGl2Iix7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLXBvcHVwLWxocy1jb2wifSxudWxsLGEpO2E9YigiZGl2Iix7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLXBvcHVwLXJocy1jb2wifSwKbnVsbCxhKTtiKCJkaXYiLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtcG9wdXAtcmhzLWNvbC13cmFwcGVyIn0sbnVsbCxhKTtyZXR1cm57bGhzQ29sOmMscmhzQ29sOmF9fSxhZGRJbnB1dDpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZj1hLnNwbGl0KCIuIik7Zj1mW2YubGVuZ3RoLTFdO3ZhciBnPXRoaXMubGFuZztjPSJoaWdoY2hhcnRzLSIrYysiLSIrZjtjLm1hdGNoKHkpfHxiKCJsYWJlbCIse2lubmVySFRNTDpnW2ZdfHxmLGh0bWxGb3I6Y30sbnVsbCxkKTtiKCJpbnB1dCIse25hbWU6Yyx2YWx1ZTplWzBdLHR5cGU6ZVsxXSxjbGFzc05hbWU6ImhpZ2hjaGFydHMtcG9wdXAtZmllbGQifSxudWxsLGQpLnNldEF0dHJpYnV0ZSgiaGlnaGNoYXJ0cy1kYXRhLW5hbWUiLGEpfSxhZGRCdXR0b246ZnVuY3Rpb24oYSxjLGQsZSxsKXt2YXIgZj10aGlzLGc9dGhpcy5jbG9zZVBvcHVwLG49dGhpcy5nZXRGaWVsZHM7dmFyIGg9YigiYnV0dG9uIix7aW5uZXJIVE1MOmN9LG51bGwsYSk7WyJjbGljayIsCiJ0b3VjaHN0YXJ0Il0uZm9yRWFjaChmdW5jdGlvbihhKXtwKGgsYSxmdW5jdGlvbigpe2cuY2FsbChmKTtyZXR1cm4gZShuKGwsZCkpfSl9KTtyZXR1cm4gaH0sZ2V0RmllbGRzOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpLGQ9YS5xdWVyeVNlbGVjdG9yQWxsKCIjaGlnaGNoYXJ0cy1zZWxlY3Qtc2VyaWVzID4gb3B0aW9uOmNoZWNrZWQiKVswXTthPWEucXVlcnlTZWxlY3RvckFsbCgiI2hpZ2hjaGFydHMtc2VsZWN0LXZvbHVtZSA+IG9wdGlvbjpjaGVja2VkIilbMF07dmFyIGYsZTt2YXIgZz17YWN0aW9uVHlwZTpiLGxpbmtlZFRvOmQmJmQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpLGZpZWxkczp7fX07W10uZm9yRWFjaC5jYWxsKGMsZnVuY3Rpb24oYSl7ZT1hLmdldEF0dHJpYnV0ZSgiaGlnaGNoYXJ0cy1kYXRhLW5hbWUiKTsoZj1hLmdldEF0dHJpYnV0ZSgiaGlnaGNoYXJ0cy1kYXRhLXNlcmllcy1pZCIpKT9nLnNlcmllc0lkPWEudmFsdWU6CmU/Zy5maWVsZHNbZV09YS52YWx1ZTpnLnR5cGU9YS52YWx1ZX0pO2EmJihnLmZpZWxkc1sicGFyYW1zLnZvbHVtZVNlcmllc0lEIl09YS5nZXRBdHRyaWJ1dGUoInZhbHVlIikpO3JldHVybiBnfSxzaG93UG9wdXA6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRhaW5lcixiPWEucXVlcnlTZWxlY3RvckFsbCgiLmhpZ2hjaGFydHMtcG9wdXAtY2xvc2UiKVswXTthLmlubmVySFRNTD0iIjswPD1hLmNsYXNzTmFtZS5pbmRleE9mKCJoaWdoY2hhcnRzLWFubm90YXRpb24tdG9vbGJhciIpJiYoYS5jbGFzc0xpc3QucmVtb3ZlKCJoaWdoY2hhcnRzLWFubm90YXRpb24tdG9vbGJhciIpLGEucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpKTthLmFwcGVuZENoaWxkKGIpO2Euc3R5bGUuZGlzcGxheT0iYmxvY2sifSxjbG9zZVBvcHVwOmZ1bmN0aW9uKCl7dGhpcy5wb3B1cC5jb250YWluZXIuc3R5bGUuZGlzcGxheT0ibm9uZSJ9LHNob3dGb3JtOmZ1bmN0aW9uKGEsYixjLGQpe3RoaXMucG9wdXA9CmIubmF2aWdhdGlvbkJpbmRpbmdzLnBvcHVwO3RoaXMuc2hvd1BvcHVwKCk7ImluZGljYXRvcnMiPT09YSYmdGhpcy5pbmRpY2F0b3JzLmFkZEZvcm0uY2FsbCh0aGlzLGIsYyxkKTsiYW5ub3RhdGlvbi10b29sYmFyIj09PWEmJnRoaXMuYW5ub3RhdGlvbnMuYWRkVG9vbGJhci5jYWxsKHRoaXMsYixjLGQpOyJhbm5vdGF0aW9uLWVkaXQiPT09YSYmdGhpcy5hbm5vdGF0aW9ucy5hZGRGb3JtLmNhbGwodGhpcyxiLGMsZCk7ImZsYWciPT09YSYmdGhpcy5hbm5vdGF0aW9ucy5hZGRGb3JtLmNhbGwodGhpcyxiLGMsZCwhMCl9LGdldExhbmdwYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHooKS5sYW5nLm5hdmlnYXRpb24ucG9wdXB9LGFubm90YXRpb25zOnthZGRUb29sYmFyOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZj10aGlzLGU9dGhpcy5sYW5nLGc9dGhpcy5wb3B1cC5jb250YWluZXIsaD10aGlzLnNob3dGb3JtOy0xPT09Zy5jbGFzc05hbWUuaW5kZXhPZigiaGlnaGNoYXJ0cy1hbm5vdGF0aW9uLXRvb2xiYXIiKSYmCihnLmNsYXNzTmFtZSs9IiBoaWdoY2hhcnRzLWFubm90YXRpb24tdG9vbGJhciIpO2cuc3R5bGUudG9wPWEucGxvdFRvcCsxMCsicHgiO2IoInNwYW4iLHtpbm5lckhUTUw6ayhlW2MubGFuZ0tleV18fGMubGFuZ0tleSxjLnNoYXBlcyYmYy5zaGFwZXNbMF0udHlwZSl9LG51bGwsZyk7dmFyIG49dGhpcy5hZGRCdXR0b24oZyxlLnJlbW92ZUJ1dHRvbnx8InJlbW92ZSIsInJlbW92ZSIsZCxnKTtuLmNsYXNzTmFtZSs9IiBoaWdoY2hhcnRzLWFubm90YXRpb24tcmVtb3ZlLWJ1dHRvbiI7bi5zdHlsZVsiYmFja2dyb3VuZC1pbWFnZSJdPSJ1cmwoIit0aGlzLmljb25zVVJMKyJkZXN0cm95LnN2ZykiO249dGhpcy5hZGRCdXR0b24oZyxlLmVkaXRCdXR0b258fCJlZGl0IiwiZWRpdCIsZnVuY3Rpb24oKXtoLmNhbGwoZiwiYW5ub3RhdGlvbi1lZGl0IixhLGMsZCl9LGcpO24uY2xhc3NOYW1lKz0iIGhpZ2hjaGFydHMtYW5ub3RhdGlvbi1lZGl0LWJ1dHRvbiI7bi5zdHlsZVsiYmFja2dyb3VuZC1pbWFnZSJdPQoidXJsKCIrdGhpcy5pY29uc1VSTCsiZWRpdC5zdmcpIn0sYWRkRm9ybTpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZj10aGlzLnBvcHVwLmNvbnRhaW5lcixnPXRoaXMubGFuZztiKCJoMiIse2lubmVySFRNTDpnW2MubGFuZ0tleV18fGMubGFuZ0tleSxjbGFzc05hbWU6ImhpZ2hjaGFydHMtcG9wdXAtbWFpbi10aXRsZSJ9LG51bGwsZik7dmFyIG49YigiZGl2Iix7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLXBvcHVwLWxocy1jb2wgaGlnaGNoYXJ0cy1wb3B1cC1saHMtZnVsbCJ9LG51bGwsZik7dmFyIGg9YigiZGl2Iix7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLXBvcHVwLWJvdHRvbS1yb3cifSxudWxsLGYpO3RoaXMuYW5ub3RhdGlvbnMuYWRkRm9ybUZpZWxkcy5jYWxsKHRoaXMsbixhLCIiLGMsW10sITApO3RoaXMuYWRkQnV0dG9uKGgsZT9nLmFkZEJ1dHRvbnx8ImFkZCI6Zy5zYXZlQnV0dG9ufHwic2F2ZSIsZT8iYWRkIjoic2F2ZSIsZCxmKX0sYWRkRm9ybUZpZWxkczpmdW5jdGlvbihhLApkLGUsayxsLHQpe3ZhciBmPXRoaXMsZz10aGlzLmFubm90YXRpb25zLmFkZEZvcm1GaWVsZHMsbj10aGlzLmFkZElucHV0LHU9dGhpcy5sYW5nLG0scDt4KGssZnVuY3Rpb24oYixuKXttPSIiIT09ZT9lKyIuIituOm47aChiKSYmKCFjKGIpfHxjKGIpJiZoKGJbMF0pPyhwPXVbbl18fG4scC5tYXRjaCh5KXx8bC5wdXNoKFshMCxwLGFdKSxnLmNhbGwoZixhLGQsbSxiLGwsITEpKTpsLnB1c2goW2YsbSwiYW5ub3RhdGlvbiIsYSxiXSkpfSk7dCYmKGw9bC5zb3J0KGZ1bmN0aW9uKGEpe3JldHVybiBhWzFdLm1hdGNoKC9mb3JtYXQvZyk/LTE6MX0pLGwuZm9yRWFjaChmdW5jdGlvbihhKXshMD09PWFbMF0/Yigic3BhbiIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1hbm5vdGF0aW9uLXRpdGxlIixpbm5lckhUTUw6YVsxXX0sbnVsbCxhWzJdKTpuLmFwcGx5KGFbMF0sYS5zcGxpY2UoMSkpfSkpfX0saW5kaWNhdG9yczp7YWRkRm9ybTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5pbmRpY2F0b3JzLApmPXRoaXMubGFuZzt0aGlzLnRhYnMuaW5pdC5jYWxsKHRoaXMsYSk7Yj10aGlzLnBvcHVwLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCIuaGlnaGNoYXJ0cy10YWItaXRlbS1jb250ZW50Iik7dGhpcy5hZGRDb2xzQ29udGFpbmVyKGJbMF0pO2QuYWRkSW5kaWNhdG9yTGlzdC5jYWxsKHRoaXMsYSxiWzBdLCJhZGQiKTt2YXIgZT1iWzBdLnF1ZXJ5U2VsZWN0b3JBbGwoIi5oaWdoY2hhcnRzLXBvcHVwLXJocy1jb2wiKVswXTt0aGlzLmFkZEJ1dHRvbihlLGYuYWRkQnV0dG9ufHwiYWRkIiwiYWRkIixjLGUpO3RoaXMuYWRkQ29sc0NvbnRhaW5lcihiWzFdKTtkLmFkZEluZGljYXRvckxpc3QuY2FsbCh0aGlzLGEsYlsxXSwiZWRpdCIpO2U9YlsxXS5xdWVyeVNlbGVjdG9yQWxsKCIuaGlnaGNoYXJ0cy1wb3B1cC1yaHMtY29sIilbMF07dGhpcy5hZGRCdXR0b24oZSxmLnNhdmVCdXR0b258fCJzYXZlIiwiZWRpdCIsYyxlKTt0aGlzLmFkZEJ1dHRvbihlLGYucmVtb3ZlQnV0dG9ufHwKInJlbW92ZSIsInJlbW92ZSIsYyxlKX0sYWRkSW5kaWNhdG9yTGlzdDpmdW5jdGlvbihhLGMsZCl7dmFyIGU9dGhpcyxmPWMucXVlcnlTZWxlY3RvckFsbCgiLmhpZ2hjaGFydHMtcG9wdXAtbGhzLWNvbCIpWzBdO2M9Yy5xdWVyeVNlbGVjdG9yQWxsKCIuaGlnaGNoYXJ0cy1wb3B1cC1yaHMtY29sIilbMF07dmFyIGc9ImVkaXQiPT09ZCxoPWc/YS5zZXJpZXM6YS5vcHRpb25zLnBsb3RPcHRpb25zLG49dGhpcy5pbmRpY2F0b3JzLmFkZEZvcm1GaWVsZHMsazt2YXIgbT1iKCJ1bCIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1pbmRpY2F0b3ItbGlzdCJ9LG51bGwsZik7dmFyIHE9Yy5xdWVyeVNlbGVjdG9yQWxsKCIuaGlnaGNoYXJ0cy1wb3B1cC1yaHMtY29sLXdyYXBwZXIiKVswXTt4KGgsZnVuY3Rpb24oYyxkKXt2YXIgZj1jLm9wdGlvbnM7aWYoYy5wYXJhbXN8fGYmJmYucGFyYW1zKXt2YXIgbD1lLmluZGljYXRvcnMuZ2V0TmFtZVR5cGUoYyxkKSx1PWwudHlwZTtrPWIoImxpIix7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLWluZGljYXRvci1saXN0IiwKaW5uZXJIVE1MOmwubmFtZX0sbnVsbCxtKTtbImNsaWNrIiwidG91Y2hzdGFydCJdLmZvckVhY2goZnVuY3Rpb24oZCl7cChrLGQsZnVuY3Rpb24oKXtuLmNhbGwoZSxhLGc/YzpoW3VdLGwudHlwZSxxKTtnJiZjLm9wdGlvbnMmJmIoImlucHV0Iix7dHlwZToiaGlkZGVuIixuYW1lOiJoaWdoY2hhcnRzLWlkLSIrdSx2YWx1ZTpjLm9wdGlvbnMuaWR9LG51bGwscSkuc2V0QXR0cmlidXRlKCJoaWdoY2hhcnRzLWRhdGEtc2VyaWVzLWlkIixjLm9wdGlvbnMuaWQpfSl9KX19KTswPG0uY2hpbGROb2Rlcy5sZW5ndGgmJm0uY2hpbGROb2Rlc1swXS5jbGljaygpfSxnZXROYW1lVHlwZTpmdW5jdGlvbihiLGMpe3ZhciBkPWIub3B0aW9ucyxlPWEuc2VyaWVzVHlwZXM7ZT1lW2NdJiZlW2NdLnByb3RvdHlwZS5uYW1lQmFzZXx8Yy50b1VwcGVyQ2FzZSgpO2QmJmQudHlwZSYmKGM9Yi5vcHRpb25zLnR5cGUsZT1iLm5hbWUpO3JldHVybntuYW1lOmUsdHlwZTpjfX0sbGlzdEFsbFNlcmllczpmdW5jdGlvbihhLApjLGQsZSxoKXthPSJoaWdoY2hhcnRzLSIrYysiLXR5cGUtIithO3ZhciBmO2IoImxhYmVsIix7aW5uZXJIVE1MOnRoaXMubGFuZ1tjXXx8YyxodG1sRm9yOmF9LG51bGwsZSk7dmFyIGc9Yigic2VsZWN0Iix7bmFtZTphLGNsYXNzTmFtZToiaGlnaGNoYXJ0cy1wb3B1cC1maWVsZCJ9LG51bGwsZSk7Zy5zZXRBdHRyaWJ1dGUoImlkIiwiaGlnaGNoYXJ0cy1zZWxlY3QtIitjKTtkLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Y9YS5vcHRpb25zOyFmLnBhcmFtcyYmZi5pZCYmImhpZ2hjaGFydHMtbmF2aWdhdG9yLXNlcmllcyIhPT1mLmlkJiZiKCJvcHRpb24iLHtpbm5lckhUTUw6Zi5uYW1lfHxmLmlkLHZhbHVlOmYuaWR9LG51bGwsZyl9KTtxKGgpJiYoZy52YWx1ZT1oKX0sYWRkRm9ybUZpZWxkczpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZj1jLnBhcmFtc3x8Yy5vcHRpb25zLnBhcmFtcyxnPXRoaXMuaW5kaWNhdG9ycy5nZXROYW1lVHlwZTtlLmlubmVySFRNTD0iIjtiKCJoMyIsCntjbGFzc05hbWU6ImhpZ2hjaGFydHMtaW5kaWNhdG9yLXRpdGxlIixpbm5lckhUTUw6ZyhjLGQpLm5hbWV9LG51bGwsZSk7YigiaW5wdXQiLHt0eXBlOiJoaWRkZW4iLG5hbWU6ImhpZ2hjaGFydHMtdHlwZS0iK2QsdmFsdWU6ZH0sbnVsbCxlKTt0aGlzLmluZGljYXRvcnMubGlzdEFsbFNlcmllcy5jYWxsKHRoaXMsZCwic2VyaWVzIixhLGUsYy5saW5rZWRQYXJlbnQmJmYudm9sdW1lU2VyaWVzSUQpO2Yudm9sdW1lU2VyaWVzSUQmJnRoaXMuaW5kaWNhdG9ycy5saXN0QWxsU2VyaWVzLmNhbGwodGhpcyxkLCJ2b2x1bWUiLGEsZSxjLmxpbmtlZFBhcmVudCYmYy5saW5rZWRQYXJlbnQub3B0aW9ucy5pZCk7dGhpcy5pbmRpY2F0b3JzLmFkZFBhcmFtSW5wdXRzLmNhbGwodGhpcyxhLCJwYXJhbXMiLGYsZCxlKX0sYWRkUGFyYW1JbnB1dHM6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj10aGlzLGc9dGhpcy5pbmRpY2F0b3JzLmFkZFBhcmFtSW5wdXRzLGs9dGhpcy5hZGRJbnB1dCxuOwp4KGMsZnVuY3Rpb24oYyxsKXtuPWIrIi4iK2w7aChjKT9nLmNhbGwoZixhLG4sYyxkLGUpOiJwYXJhbXMudm9sdW1lU2VyaWVzSUQiIT09biYmay5jYWxsKGYsbixkLGUsW2MsInRleHQiXSl9KX0sZ2V0QW1vdW50OmZ1bmN0aW9uKCl7dmFyIGE9MDt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWIub3B0aW9uczsoYi5wYXJhbXN8fGMmJmMucGFyYW1zKSYmYSsrfSk7cmV0dXJuIGF9fSx0YWJzOntpbml0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudGFiczthPXRoaXMuaW5kaWNhdG9ycy5nZXRBbW91bnQuY2FsbChhKTt2YXIgYz1iLmFkZE1lbnVJdGVtLmNhbGwodGhpcywiYWRkIik7Yi5hZGRNZW51SXRlbS5jYWxsKHRoaXMsImVkaXQiLGEpO2IuYWRkQ29udGVudEl0ZW0uY2FsbCh0aGlzLCJhZGQiKTtiLmFkZENvbnRlbnRJdGVtLmNhbGwodGhpcywiZWRpdCIpO2Iuc3dpdGNoVGFicy5jYWxsKHRoaXMsYSk7Yi5zZWxlY3RUYWIuY2FsbCh0aGlzLGMsMCl9LGFkZE1lbnVJdGVtOmZ1bmN0aW9uKGEsCmMpe3ZhciBkPXRoaXMucG9wdXAuY29udGFpbmVyLGU9ImhpZ2hjaGFydHMtdGFiLWl0ZW0iLGY9dGhpcy5sYW5nOzA9PT1jJiYoZSs9IiBoaWdoY2hhcnRzLXRhYi1kaXNhYmxlZCIpO2M9Yigic3BhbiIse2lubmVySFRNTDpmW2ErIkJ1dHRvbiJdfHxhLGNsYXNzTmFtZTplfSxudWxsLGQpO2Muc2V0QXR0cmlidXRlKCJoaWdoY2hhcnRzLWRhdGEtdGFiLXR5cGUiLGEpO3JldHVybiBjfSxhZGRDb250ZW50SXRlbTpmdW5jdGlvbigpe3JldHVybiBiKCJkaXYiLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtdGFiLWl0ZW0tY29udGVudCJ9LG51bGwsdGhpcy5wb3B1cC5jb250YWluZXIpfSxzd2l0Y2hUYWJzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsYzt0aGlzLnBvcHVwLmNvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxsKCIuaGlnaGNoYXJ0cy10YWItaXRlbSIpLmZvckVhY2goZnVuY3Rpb24oZCxlKXtjPWQuZ2V0QXR0cmlidXRlKCJoaWdoY2hhcnRzLWRhdGEtdGFiLXR5cGUiKTsiZWRpdCI9PT0KYyYmMD09PWF8fFsiY2xpY2siLCJ0b3VjaHN0YXJ0Il0uZm9yRWFjaChmdW5jdGlvbihhKXtwKGQsYSxmdW5jdGlvbigpe2IudGFicy5kZXNlbGVjdEFsbC5jYWxsKGIpO2IudGFicy5zZWxlY3RUYWIuY2FsbChiLHRoaXMsZSl9KX0pfSl9LHNlbGVjdFRhYjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMucG9wdXAuY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGwoIi5oaWdoY2hhcnRzLXRhYi1pdGVtLWNvbnRlbnQiKTthLmNsYXNzTmFtZSs9IiBoaWdoY2hhcnRzLXRhYi1pdGVtLWFjdGl2ZSI7Y1tiXS5jbGFzc05hbWUrPSIgaGlnaGNoYXJ0cy10YWItaXRlbS1zaG93In0sZGVzZWxlY3RBbGw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvcHVwLmNvbnRhaW5lcixiPWEucXVlcnlTZWxlY3RvckFsbCgiLmhpZ2hjaGFydHMtdGFiLWl0ZW0iKTthPWEucXVlcnlTZWxlY3RvckFsbCgiLmhpZ2hjaGFydHMtdGFiLWl0ZW0tY29udGVudCIpO3ZhciBjO2ZvcihjPTA7YzxiLmxlbmd0aDtjKyspYltjXS5jbGFzc0xpc3QucmVtb3ZlKCJoaWdoY2hhcnRzLXRhYi1pdGVtLWFjdGl2ZSIpLAphW2NdLmNsYXNzTGlzdC5yZW1vdmUoImhpZ2hjaGFydHMtdGFiLWl0ZW0tc2hvdyIpfX19O3AoZCwic2hvd1BvcHVwIixmdW5jdGlvbihiKXt0aGlzLnBvcHVwfHwodGhpcy5wb3B1cD1uZXcgYS5Qb3B1cCh0aGlzLmNoYXJ0LmNvbnRhaW5lcix0aGlzLmNoYXJ0Lm9wdGlvbnMubmF2aWdhdGlvbi5pY29uc1VSTHx8dGhpcy5jaGFydC5vcHRpb25zLnN0b2NrVG9vbHMmJnRoaXMuY2hhcnQub3B0aW9ucy5zdG9ja1Rvb2xzLmd1aS5pY29uc1VSTHx8Imh0dHBzOi8vY29kZS5oaWdoY2hhcnRzLmNvbS84LjEuMi9nZngvc3RvY2staWNvbnMvIikpO3RoaXMucG9wdXAuc2hvd0Zvcm0oYi5mb3JtVHlwZSx0aGlzLmNoYXJ0LGIub3B0aW9ucyxiLm9uU3VibWl0KX0pO3AoZCwiY2xvc2VQb3B1cCIsZnVuY3Rpb24oKXt0aGlzLnBvcHVwJiZ0aGlzLnBvcHVwLmNsb3NlUG9wdXAoKX0pfSk7cChhLCJtYXN0ZXJzL21vZHVsZXMvYW5ub3RhdGlvbnMuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWFubm90YXRpb25zLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIERhdGEgbW9kdWxlCgogKGMpIDIwMTItMjAxOSBUb3JzdGVpbiBIb25zaQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihiKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhiWyJkZWZhdWx0Il09Yixtb2R1bGUuZXhwb3J0cz1iKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9kYXRhIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbih2KXtiKHYpO2IuSGlnaGNoYXJ0cz12O3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIHYoYixsLHYsdCl7Yi5oYXNPd25Qcm9wZXJ0eShsKXx8KGJbbF09dC5hcHBseShudWxsLHYpKX1iPWI/Yi5fbW9kdWxlczp7fTt2KGIsIm1peGlucy9hamF4LmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLGwpe3ZhciB2PWwubWVyZ2UsdD1sLm9iamVjdEVhY2g7Yi5hamF4PWZ1bmN0aW9uKGIpe3ZhciBwPQp2KCEwLHt1cmw6ITEsdHlwZToiZ2V0IixkYXRhVHlwZToianNvbiIsc3VjY2VzczohMSxlcnJvcjohMSxkYXRhOiExLGhlYWRlcnM6e319LGIpO2I9e2pzb246ImFwcGxpY2F0aW9uL2pzb24iLHhtbDoiYXBwbGljYXRpb24veG1sIix0ZXh0OiJ0ZXh0L3BsYWluIixvY3RldDoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn07dmFyIGw9bmV3IFhNTEh0dHBSZXF1ZXN0O2lmKCFwLnVybClyZXR1cm4hMTtsLm9wZW4ocC50eXBlLnRvVXBwZXJDYXNlKCkscC51cmwsITApO3AuaGVhZGVyc1siQ29udGVudC1UeXBlIl18fGwuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixiW3AuZGF0YVR5cGVdfHxiLnRleHQpO3QocC5oZWFkZXJzLGZ1bmN0aW9uKGIscCl7bC5zZXRSZXF1ZXN0SGVhZGVyKHAsYil9KTtsLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKDQ9PT1sLnJlYWR5U3RhdGUpe2lmKDIwMD09PWwuc3RhdHVzKXt2YXIgYj1sLnJlc3BvbnNlVGV4dDtpZigianNvbiI9PT0KcC5kYXRhVHlwZSl0cnl7Yj1KU09OLnBhcnNlKGIpfWNhdGNoKEEpe3AuZXJyb3ImJnAuZXJyb3IobCxBKTtyZXR1cm59cmV0dXJuIHAuc3VjY2VzcyYmcC5zdWNjZXNzKGIpfXAuZXJyb3ImJnAuZXJyb3IobCxsLnJlc3BvbnNlVGV4dCl9fTt0cnl7cC5kYXRhPUpTT04uc3RyaW5naWZ5KHAuZGF0YSl9Y2F0Y2goRCl7fWwuc2VuZChwLmRhdGF8fCEwKX07Yi5nZXRKU09OPWZ1bmN0aW9uKGwscCl7Yi5hamF4KHt1cmw6bCxzdWNjZXNzOnAsZGF0YVR5cGU6Impzb24iLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJ0ZXh0L3BsYWluIn19KX19KTt2KGIsIm1vZHVsZXMvZGF0YS5zcmMuanMiLFtiWyJwYXJ0cy9DaGFydC5qcyJdLGJbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9Qb2ludC5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLGwsdix0KXt2YXIgRz10LmFkZEV2ZW50LHA9dC5kZWZpbmVkLEg9dC5leHRlbmQsRD10LmZpcmVFdmVudCxBPXQuaXNOdW1iZXIsCkI9dC5tZXJnZSxJPXQub2JqZWN0RWFjaCxKPXQucGljayxLPXQuc3BsYXQsRT1sLmFqYXgsTD1sLndpbi5kb2N1bWVudDt0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihhLGMsZil7dGhpcy5vcHRpb25zPXRoaXMucmF3Q29sdW1ucz10aGlzLmZpcnN0Um93QXNOYW1lcz10aGlzLmNoYXJ0T3B0aW9ucz10aGlzLmNoYXJ0PXZvaWQgMDt0aGlzLmRhdGVGb3JtYXRzPXsiWVlZWS9tbS9kZCI6e3JlZ2V4Oi9eKFswLTldezR9KVtcLVwvXC5dKFswLTldezEsMn0pW1wtXC9cLl0oWzAtOV17MSwyfSkkLyxwYXJzZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/RGF0ZS5VVEMoK2FbMV0sYVsyXS0xLCthWzNdKTpOYU59fSwiZGQvbW0vWVlZWSI6e3JlZ2V4Oi9eKFswLTldezEsMn0pW1wtXC9cLl0oWzAtOV17MSwyfSlbXC1cL1wuXShbMC05XXs0fSkkLyxwYXJzZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/RGF0ZS5VVEMoK2FbM10sYVsyXS0xLCthWzFdKTpOYU59LGFsdGVybmF0aXZlOiJtbS9kZC9ZWVlZIn0sCiJtbS9kZC9ZWVlZIjp7cmVnZXg6L14oWzAtOV17MSwyfSlbXC1cL1wuXShbMC05XXsxLDJ9KVtcLVwvXC5dKFswLTldezR9KSQvLHBhcnNlcjpmdW5jdGlvbihhKXtyZXR1cm4gYT9EYXRlLlVUQygrYVszXSxhWzFdLTEsK2FbMl0pOk5hTn19LCJkZC9tbS9ZWSI6e3JlZ2V4Oi9eKFswLTldezEsMn0pW1wtXC9cLl0oWzAtOV17MSwyfSlbXC1cL1wuXShbMC05XXsyfSkkLyxwYXJzZXI6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIE5hTjt2YXIgYz0rYVszXTtjPWM+KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLTJFMz9jKzE5MDA6YysyRTM7cmV0dXJuIERhdGUuVVRDKGMsYVsyXS0xLCthWzFdKX0sYWx0ZXJuYXRpdmU6Im1tL2RkL1lZIn0sIm1tL2RkL1lZIjp7cmVnZXg6L14oWzAtOV17MSwyfSlbXC1cL1wuXShbMC05XXsxLDJ9KVtcLVwvXC5dKFswLTldezJ9KSQvLHBhcnNlcjpmdW5jdGlvbihhKXtyZXR1cm4gYT9EYXRlLlVUQygrYVszXSsyRTMsYVsxXS0xLCthWzJdKTpOYU59fX07CnRoaXMuaW5pdChhLGMsZil9Yi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhLGMsZil7dmFyIGQ9YS5kZWNpbWFsUG9pbnQ7YyYmKHRoaXMuY2hhcnRPcHRpb25zPWMpO2YmJih0aGlzLmNoYXJ0PWYpOyIuIiE9PWQmJiIsIiE9PWQmJihkPXZvaWQgMCk7dGhpcy5vcHRpb25zPWE7dGhpcy5jb2x1bW5zPWEuY29sdW1uc3x8dGhpcy5yb3dzVG9Db2x1bW5zKGEucm93cyl8fFtdO3RoaXMuZmlyc3RSb3dBc05hbWVzPUooYS5maXJzdFJvd0FzTmFtZXMsdGhpcy5maXJzdFJvd0FzTmFtZXMsITApO3RoaXMuZGVjaW1hbFJlZ2V4PWQmJm5ldyBSZWdFeHAoIl4oLT9bMC05XSspIitkKyIoWzAtOV0rKSQiKTt0aGlzLnJhd0NvbHVtbnM9W107aWYodGhpcy5jb2x1bW5zLmxlbmd0aCl7dGhpcy5kYXRhRm91bmQoKTt2YXIgZz0hMH10aGlzLmhhc1VSTE9wdGlvbihhKSYmKGNsZWFyVGltZW91dCh0aGlzLmxpdmVEYXRhVGltZW91dCksZz0hMSk7Z3x8KGc9dGhpcy5mZXRjaExpdmVEYXRhKCkpOwpnfHwoZz0hIXRoaXMucGFyc2VDU1YoKS5sZW5ndGgpO2d8fChnPSEhdGhpcy5wYXJzZVRhYmxlKCkubGVuZ3RoKTtnfHwoZz10aGlzLnBhcnNlR29vZ2xlU3ByZWFkc2hlZXQoKSk7IWcmJmEuYWZ0ZXJDb21wbGV0ZSYmYS5hZnRlckNvbXBsZXRlKCl9O2IucHJvdG90eXBlLmhhc1VSTE9wdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4hKCFhfHwhKGEucm93c1VSTHx8YS5jc3ZVUkx8fGEuY29sdW1uc1VSTCkpfTtiLnByb3RvdHlwZS5nZXRDb2x1bW5EaXN0cmlidXRpb249ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0T3B0aW9ucyxjPXRoaXMub3B0aW9ucyxmPVtdLGQ9ZnVuY3Rpb24oYSl7cmV0dXJuKGwuc2VyaWVzVHlwZXNbYXx8ImxpbmUiXS5wcm90b3R5cGUucG9pbnRBcnJheU1hcHx8WzBdKS5sZW5ndGh9LGc9YSYmYS5jaGFydCYmYS5jaGFydC50eXBlLGU9W10sYj1bXSxoPTA7Yz1jJiZjLnNlcmllc01hcHBpbmd8fGEmJmEuc2VyaWVzJiZhLnNlcmllcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm57eDowfX0pfHwKW107dmFyIGs7KGEmJmEuc2VyaWVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXtlLnB1c2goZChhLnR5cGV8fGcpKX0pO2MuZm9yRWFjaChmdW5jdGlvbihhKXtmLnB1c2goYS54fHwwKX0pOzA9PT1mLmxlbmd0aCYmZi5wdXNoKDApO2MuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgZj1uZXcgRix1PWVbaF18fGQoZykscj0oYSYmYS5zZXJpZXN8fFtdKVtoXXx8e30sdz1sLnNlcmllc1R5cGVzW3IudHlwZXx8Z3x8ImxpbmUiXS5wcm90b3R5cGUucG9pbnRBcnJheU1hcCx6PXd8fFsieSJdOyhwKGMueCl8fHIuaXNDYXJ0ZXNpYW58fCF3KSYmZi5hZGRDb2x1bW5SZWFkZXIoYy54LCJ4Iik7SShjLGZ1bmN0aW9uKGEsYyl7IngiIT09YyYmZi5hZGRDb2x1bW5SZWFkZXIoYSxjKX0pO2ZvcihrPTA7azx1O2srKylmLmhhc1JlYWRlcih6W2tdKXx8Zi5hZGRDb2x1bW5SZWFkZXIodm9pZCAwLHpba10pO2IucHVzaChmKTtoKyt9KTtjPWwuc2VyaWVzVHlwZXNbZ3x8ImxpbmUiXS5wcm90b3R5cGUucG9pbnRBcnJheU1hcDsKInVuZGVmaW5lZCI9PT10eXBlb2YgYyYmKGM9WyJ5Il0pO3RoaXMudmFsdWVDb3VudD17Z2xvYmFsOmQoZykseENvbHVtbnM6ZixpbmRpdmlkdWFsOmUsc2VyaWVzQnVpbGRlcnM6YixnbG9iYWxQb2ludEFycmF5TWFwOmN9fTtiLnByb3RvdHlwZS5kYXRhRm91bmQ9ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuc3dpdGNoUm93c0FuZENvbHVtbnMmJih0aGlzLmNvbHVtbnM9dGhpcy5yb3dzVG9Db2x1bW5zKHRoaXMuY29sdW1ucykpO3RoaXMuZ2V0Q29sdW1uRGlzdHJpYnV0aW9uKCk7dGhpcy5wYXJzZVR5cGVzKCk7ITEhPT10aGlzLnBhcnNlZCgpJiZ0aGlzLmNvbXBsZXRlKCl9O2IucHJvdG90eXBlLnBhcnNlQ1NWPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoYSxjLGYsZCl7ZnVuY3Rpb24gZyhjKXtoPWFbY107bT1hW2MtMV07cj1hW2MrMV19ZnVuY3Rpb24gYihhKXt4Lmxlbmd0aDx1KzEmJngucHVzaChbYV0pO3hbdV1beFt1XS5sZW5ndGgtMV0hPT1hJiZ4W3VdLnB1c2goYSl9ZnVuY3Rpb24gZSgpe2s+Cnl8fHk+bD8oKyt5LHE9IiIpOighaXNOYU4ocGFyc2VGbG9hdChxKSkmJmlzRmluaXRlKHEpPyhxPXBhcnNlRmxvYXQocSksYigibnVtYmVyIikpOmlzTmFOKERhdGUucGFyc2UocSkpP2IoInN0cmluZyIpOihxPXEucmVwbGFjZSgvXC8vZywiLSIpLGIoImRhdGUiKSksdy5sZW5ndGg8dSsxJiZ3LnB1c2goW10pLGZ8fCh3W3VdW2NdPXEpLHE9IiIsKyt1LCsreSl9dmFyIG49MCxoPSIiLG09IiIscj0iIixxPSIiLHk9MCx1PTA7aWYoYS50cmltKCkubGVuZ3RoJiYiIyIhPT1hLnRyaW0oKVswXSl7Zm9yKDtuPGEubGVuZ3RoO24rKyl7ZyhuKTtpZigiIyI9PT1oKXtlKCk7cmV0dXJufWlmKCciJz09PWgpZm9yKGcoKytuKTtuPGEubGVuZ3RoJiYoJyInIT09aHx8JyInPT09bXx8JyInPT09cik7KXtpZignIichPT1ofHwnIic9PT1oJiYnIichPT1tKXErPWg7ZygrK24pfWVsc2UgZCYmZFtoXT9kW2hdKGgscSkmJmUoKTpoPT09ej9lKCk6cSs9aH1lKCl9fWZ1bmN0aW9uIGYoYSl7dmFyIGM9CjAsZj0wLGQ9ITE7YS5zb21lKGZ1bmN0aW9uKGEsZCl7dmFyIGc9ITEsYj0iIjtpZigxMzxkKXJldHVybiEwO2Zvcih2YXIgZT0wO2U8YS5sZW5ndGg7ZSsrKXtkPWFbZV07dmFyIGg9YVtlKzFdO3ZhciBrPWFbZS0xXTtpZigiIyI9PT1kKWJyZWFrO2lmKCciJz09PWQpaWYoZyl7aWYoJyInIT09ayYmJyInIT09aCl7Zm9yKDsiICI9PT1oJiZlPGEubGVuZ3RoOyloPWFbKytlXTsidW5kZWZpbmVkIiE9PXR5cGVvZiByW2hdJiZyW2hdKys7Zz0hMX19ZWxzZSBnPSEwO2Vsc2UidW5kZWZpbmVkIiE9PXR5cGVvZiByW2RdPyhiPWIudHJpbSgpLGlzTmFOKERhdGUucGFyc2UoYikpPyFpc05hTihiKSYmaXNGaW5pdGUoYil8fHJbZF0rKzpyW2RdKyssYj0iIik6Yis9ZDsiLCI9PT1kJiZmKys7Ii4iPT09ZCYmYysrfX0pO2Q9clsiOyJdPnJbIiwiXT8iOyI6IiwiO2UuZGVjaW1hbFBvaW50fHwoZS5kZWNpbWFsUG9pbnQ9Yz5mPyIuIjoiLCIsZy5kZWNpbWFsUmVnZXg9bmV3IFJlZ0V4cCgiXigtP1swLTldKykiKwplLmRlY2ltYWxQb2ludCsiKFswLTldKykkIikpO3JldHVybiBkfWZ1bmN0aW9uIGQoYSxjKXt2YXIgZD1bXSxmPTAsYj0hMSxoPVtdLGs9W10sbjtpZighY3x8Yz5hLmxlbmd0aCljPWEubGVuZ3RoO2Zvcig7ZjxjO2YrKylpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBhW2ZdJiZhW2ZdJiZhW2ZdLmxlbmd0aCl7dmFyIG09YVtmXS50cmltKCkucmVwbGFjZSgvXC8vZywiICIpLnJlcGxhY2UoL1wtL2csIiAiKS5yZXBsYWNlKC9cLi9nLCIgIikuc3BsaXQoIiAiKTtkPVsiIiwiIiwiIl07Zm9yKG49MDtuPG0ubGVuZ3RoO24rKyluPGQubGVuZ3RoJiYobVtuXT1wYXJzZUludChtW25dLDEwKSxtW25dJiYoa1tuXT0ha1tuXXx8a1tuXTxtW25dP21bbl06a1tuXSwidW5kZWZpbmVkIiE9PXR5cGVvZiBoW25dP2hbbl0hPT1tW25dJiYoaFtuXT0hMSk6aFtuXT1tW25dLDMxPG1bbl0/ZFtuXT0xMDA+bVtuXT8iWVkiOiJZWVlZIjoxMjxtW25dJiYzMT49bVtuXT8oZFtuXT0iZGQiLGI9ITApOmRbbl0ubGVuZ3RofHwKKGRbbl09Im1tIikpKX1pZihiKXtmb3Iobj0wO248aC5sZW5ndGg7bisrKSExIT09aFtuXT8xMjxrW25dJiYiWVkiIT09ZFtuXSYmIllZWVkiIT09ZFtuXSYmKGRbbl09IllZIik6MTI8a1tuXSYmIm1tIj09PWRbbl0mJihkW25dPSJkZCIpOzM9PT1kLmxlbmd0aCYmImRkIj09PWRbMV0mJiJkZCI9PT1kWzJdJiYoZFsyXT0iWVkiKTthPWQuam9pbigiLyIpO3JldHVybihlLmRhdGVGb3JtYXRzfHxnLmRhdGVGb3JtYXRzKVthXT9hOihEKCJkZWR1Y2VEYXRlRmFpbGVkIiksIllZWVkvbW0vZGQiKX1yZXR1cm4iWVlZWS9tbS9kZCJ9dmFyIGc9dGhpcyxlPWF8fHRoaXMub3B0aW9ucyxiPWUuY3N2O2E9InVuZGVmaW5lZCIhPT10eXBlb2YgZS5zdGFydFJvdyYmZS5zdGFydFJvdz9lLnN0YXJ0Um93OjA7dmFyIGg9ZS5lbmRSb3d8fE51bWJlci5NQVhfVkFMVUUsaz0idW5kZWZpbmVkIiE9PXR5cGVvZiBlLnN0YXJ0Q29sdW1uJiZlLnN0YXJ0Q29sdW1uP2Uuc3RhcnRDb2x1bW46MCxsPWUuZW5kQ29sdW1ufHwKTnVtYmVyLk1BWF9WQUxVRSxtPTAseD1bXSxyPXsiLCI6MCwiOyI6MCwiXHQiOjB9O3ZhciB3PXRoaXMuY29sdW1ucz1bXTtiJiZlLmJlZm9yZVBhcnNlJiYoYj1lLmJlZm9yZVBhcnNlLmNhbGwodGhpcyxiKSk7aWYoYil7Yj1iLnJlcGxhY2UoL1xyXG4vZywiXG4iKS5yZXBsYWNlKC9cci9nLCJcbiIpLnNwbGl0KGUubGluZURlbGltaXRlcnx8IlxuIik7aWYoIWF8fDA+YSlhPTA7aWYoIWh8fGg+PWIubGVuZ3RoKWg9Yi5sZW5ndGgtMTtpZihlLml0ZW1EZWxpbWl0ZXIpdmFyIHo9ZS5pdGVtRGVsaW1pdGVyO2Vsc2Ugej1udWxsLHo9ZihiKTt2YXIgeT0wO2ZvcihtPWE7bTw9aDttKyspIiMiPT09YlttXVswXT95Kys6YyhiW21dLG0tYS15KTtlLmNvbHVtblR5cGVzJiYwIT09ZS5jb2x1bW5UeXBlcy5sZW5ndGh8fCF4Lmxlbmd0aHx8IXhbMF0ubGVuZ3RofHwiZGF0ZSIhPT14WzBdWzFdfHxlLmRhdGVGb3JtYXR8fChlLmRhdGVGb3JtYXQ9ZCh3WzBdKSk7dGhpcy5kYXRhRm91bmQoKX1yZXR1cm4gd307CmIucHJvdG90eXBlLnBhcnNlVGFibGU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsYz1hLnRhYmxlLGY9dGhpcy5jb2x1bW5zfHxbXSxkPWEuc3RhcnRSb3d8fDAsYj1hLmVuZFJvd3x8TnVtYmVyLk1BWF9WQUxVRSxlPWEuc3RhcnRDb2x1bW58fDAsdT1hLmVuZENvbHVtbnx8TnVtYmVyLk1BWF9WQUxVRTtjJiYoInN0cmluZyI9PT10eXBlb2YgYyYmKGM9TC5nZXRFbGVtZW50QnlJZChjKSksW10uZm9yRWFjaC5jYWxsKGMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRyIiksZnVuY3Rpb24oYSxjKXtjPj1kJiZjPD1iJiZbXS5mb3JFYWNoLmNhbGwoYS5jaGlsZHJlbixmdW5jdGlvbihhLGIpe3ZhciBnPWZbYi1lXSxoPTE7aWYoKCJURCI9PT1hLnRhZ05hbWV8fCJUSCI9PT1hLnRhZ05hbWUpJiZiPj1lJiZiPD11KWZvcihmW2ItZV18fChmW2ItZV09W10pLGZbYi1lXVtjLWRdPWEuaW5uZXJIVE1MO2MtZD49aCYmdm9pZCAwPT09Z1tjLWQtaF07KWdbYy1kLWhdPW51bGwsaCsrfSl9KSwKdGhpcy5kYXRhRm91bmQoKSk7cmV0dXJuIGZ9O2IucHJvdG90eXBlLmZldGNoTGl2ZURhdGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGcpe2Z1bmN0aW9uIGsoaCxrLGwpe2Z1bmN0aW9uIG0oKXtlJiZmLmxpdmVEYXRhVVJMPT09aCYmKGMubGl2ZURhdGFUaW1lb3V0PXNldFRpbWVvdXQoYSx1KSl9aWYoIWh8fDAhPT1oLmluZGV4T2YoImh0dHAiKSlyZXR1cm4gaCYmZC5lcnJvciYmZC5lcnJvcigiSW52YWxpZCBVUkwiKSwhMTtnJiYoY2xlYXJUaW1lb3V0KGMubGl2ZURhdGFUaW1lb3V0KSxmLmxpdmVEYXRhVVJMPWgpO0Uoe3VybDpoLGRhdGFUeXBlOmx8fCJqc29uIixzdWNjZXNzOmZ1bmN0aW9uKGEpe2YmJmYuc2VyaWVzJiZrKGEpO20oKX0sZXJyb3I6ZnVuY3Rpb24oYSxjKXszPisrYiYmbSgpO3JldHVybiBkLmVycm9yJiZkLmVycm9yKGMsYSl9fSk7cmV0dXJuITB9ayhoLmNzdlVSTCxmdW5jdGlvbihhKXtmLnVwZGF0ZSh7ZGF0YTp7Y3N2OmF9fSl9LCJ0ZXh0Iil8fGsoaC5yb3dzVVJMLApmdW5jdGlvbihhKXtmLnVwZGF0ZSh7ZGF0YTp7cm93czphfX0pfSl8fGsoaC5jb2x1bW5zVVJMLGZ1bmN0aW9uKGEpe2YudXBkYXRlKHtkYXRhOntjb2x1bW5zOmF9fSl9KX12YXIgYz10aGlzLGY9dGhpcy5jaGFydCxkPXRoaXMub3B0aW9ucyxiPTAsZT1kLmVuYWJsZVBvbGxpbmcsdT0xRTMqKGQuZGF0YVJlZnJlc2hSYXRlfHwyKSxoPUIoZCk7aWYoIXRoaXMuaGFzVVJMT3B0aW9uKGQpKXJldHVybiExOzFFMz51JiYodT0xRTMpO2RlbGV0ZSBkLmNzdlVSTDtkZWxldGUgZC5yb3dzVVJMO2RlbGV0ZSBkLmNvbHVtbnNVUkw7YSghMCk7cmV0dXJuIHRoaXMuaGFzVVJMT3B0aW9uKGQpfTtiLnByb3RvdHlwZS5wYXJzZUdvb2dsZVNwcmVhZHNoZWV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShjKXt2YXIgYj1bImh0dHBzOi8vc3ByZWFkc2hlZXRzLmdvb2dsZS5jb20vZmVlZHMvY2VsbHMiLGQsZSwicHVibGljL3ZhbHVlcz9hbHQ9anNvbiJdLmpvaW4oIi8iKTtFKHt1cmw6YixkYXRhVHlwZToianNvbiIsCnN1Y2Nlc3M6ZnVuY3Rpb24oZCl7YyhkKTtmLmVuYWJsZVBvbGxpbmcmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXthKGMpfSwxRTMqKGYuZGF0YVJlZnJlc2hSYXRlfHwyKSl9LGVycm9yOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGYuZXJyb3ImJmYuZXJyb3IoYyxhKX19KX12YXIgYz10aGlzLGY9dGhpcy5vcHRpb25zLGQ9Zi5nb29nbGVTcHJlYWRzaGVldEtleSxiPXRoaXMuY2hhcnQsZT1mLmdvb2dsZVNwcmVhZHNoZWV0V29ya3NoZWV0fHwxLGw9Zi5zdGFydFJvd3x8MCxoPWYuZW5kUm93fHxOdW1iZXIuTUFYX1ZBTFVFLGs9Zi5zdGFydENvbHVtbnx8MCxwPWYuZW5kQ29sdW1ufHxOdW1iZXIuTUFYX1ZBTFVFLG09MUUzKihmLmRhdGFSZWZyZXNoUmF0ZXx8Mik7NEUzPm0mJihtPTRFMyk7ZCYmKGRlbGV0ZSBmLmdvb2dsZVNwcmVhZHNoZWV0S2V5LGEoZnVuY3Rpb24oYSl7dmFyIGQ9W107YT1hLmZlZWQuZW50cnk7dmFyIGY9KGF8fFtdKS5sZW5ndGgsZz0wLGU7aWYoIWF8fDA9PT1hLmxlbmd0aClyZXR1cm4hMTsKZm9yKGU9MDtlPGY7ZSsrKXt2YXIgbT1hW2VdO2c9TWF0aC5tYXgoZyxtLmdzJGNlbGwuY29sKX1mb3IoZT0wO2U8ZztlKyspZT49ayYmZTw9cCYmKGRbZS1rXT1bXSk7Zm9yKGU9MDtlPGY7ZSsrKXttPWFbZV07Zz1tLmdzJGNlbGwucm93LTE7dmFyIHU9bS5ncyRjZWxsLmNvbC0xO2lmKHU+PWsmJnU8PXAmJmc+PWwmJmc8PWgpe3ZhciBxPW0uZ3MkY2VsbHx8bS5jb250ZW50O209bnVsbDtxLm51bWVyaWNWYWx1ZT9tPTA8PXEuJHQuaW5kZXhPZigiLyIpfHwwPD1xLiR0LmluZGV4T2YoIi0iKT9xLiR0OjA8cS4kdC5pbmRleE9mKCIlIik/MTAwKnBhcnNlRmxvYXQocS5udW1lcmljVmFsdWUpOnBhcnNlRmxvYXQocS5udW1lcmljVmFsdWUpOnEuJHQmJnEuJHQubGVuZ3RoJiYobT1xLiR0KTtkW3Uta11bZy1sXT1tfX1kLmZvckVhY2goZnVuY3Rpb24oYSl7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKykidW5kZWZpbmVkIj09PXR5cGVvZiBhW2VdJiYoYVtlXT1udWxsKX0pO2ImJmIuc2VyaWVzPwpiLnVwZGF0ZSh7ZGF0YTp7Y29sdW1uczpkfX0pOihjLmNvbHVtbnM9ZCxjLmRhdGFGb3VuZCgpKX0pKTtyZXR1cm4hMX07Yi5wcm90b3R5cGUudHJpbT1mdW5jdGlvbihhLGMpeyJzdHJpbmciPT09dHlwZW9mIGEmJihhPWEucmVwbGFjZSgvXlxzK3xccyskL2csIiIpLGMmJi9eWzAtOVxzXSskLy50ZXN0KGEpJiYoYT1hLnJlcGxhY2UoL1xzL2csIiIpKSx0aGlzLmRlY2ltYWxSZWdleCYmKGE9YS5yZXBsYWNlKHRoaXMuZGVjaW1hbFJlZ2V4LCIkMS4kMiIpKSk7cmV0dXJuIGF9O2IucHJvdG90eXBlLnBhcnNlVHlwZXM9ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5jb2x1bW5zLGM9YS5sZW5ndGg7Yy0tOyl0aGlzLnBhcnNlQ29sdW1uKGFbY10sYyl9O2IucHJvdG90eXBlLnBhcnNlQ29sdW1uPWZ1bmN0aW9uKGEsYyl7dmFyIGY9dGhpcy5yYXdDb2x1bW5zLGQ9dGhpcy5jb2x1bW5zLGI9YS5sZW5ndGgsZT10aGlzLmZpcnN0Um93QXNOYW1lcyxsPS0xIT09dGhpcy52YWx1ZUNvdW50LnhDb2x1bW5zLmluZGV4T2YoYyksCmgsaz1bXSxwPXRoaXMuY2hhcnRPcHRpb25zLG0sdD0odGhpcy5vcHRpb25zLmNvbHVtblR5cGVzfHxbXSlbY107cD1sJiYocCYmcC54QXhpcyYmImNhdGVnb3J5Ij09PUsocC54QXhpcylbMF0udHlwZXx8InN0cmluZyI9PT10KTtmb3IoZltjXXx8KGZbY109W10pO2ItLTspe3ZhciByPWtbYl18fGFbYl07dmFyIHc9dGhpcy50cmltKHIpO3ZhciB2PXRoaXMudHJpbShyLCEwKTt2YXIgQz1wYXJzZUZsb2F0KHYpOyJ1bmRlZmluZWQiPT09dHlwZW9mIGZbY11bYl0mJihmW2NdW2JdPXcpO3B8fDA9PT1iJiZlP2FbYl09IiIrdzordj09PUM/KGFbYl09QywzMTUzNkU2PEMmJiJmbG9hdCIhPT10P2EuaXNEYXRldGltZT0hMDphLmlzTnVtZXJpYz0hMCwidW5kZWZpbmVkIiE9PXR5cGVvZiBhW2IrMV0mJihtPUM+YVtiKzFdKSk6KHcmJncubGVuZ3RoJiYoaD10aGlzLnBhcnNlRGF0ZShyKSksbCYmQShoKSYmImZsb2F0IiE9PXQ/KGtbYl09cixhW2JdPWgsYS5pc0RhdGV0aW1lPSEwLCJ1bmRlZmluZWQiIT09CnR5cGVvZiBhW2IrMV0mJihyPWg+YVtiKzFdLHIhPT1tJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtJiYodGhpcy5hbHRlcm5hdGl2ZUZvcm1hdD8odGhpcy5kYXRlRm9ybWF0PXRoaXMuYWx0ZXJuYXRpdmVGb3JtYXQsYj1hLmxlbmd0aCx0aGlzLmFsdGVybmF0aXZlRm9ybWF0PXRoaXMuZGF0ZUZvcm1hdHNbdGhpcy5kYXRlRm9ybWF0XS5hbHRlcm5hdGl2ZSk6YS51bnNvcnRlZD0hMCksbT1yKSk6KGFbYl09IiI9PT13P251bGw6dywwIT09YiYmKGEuaXNEYXRldGltZXx8YS5pc051bWVyaWMpJiYoYS5taXhlZD0hMCkpKX1sJiZhLm1peGVkJiYoZFtjXT1mW2NdKTtpZihsJiZtJiZ0aGlzLm9wdGlvbnMuc29ydClmb3IoYz0wO2M8ZC5sZW5ndGg7YysrKWRbY10ucmV2ZXJzZSgpLGUmJmRbY10udW5zaGlmdChkW2NdLnBvcCgpKX07Yi5wcm90b3R5cGUucGFyc2VEYXRlPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMub3B0aW9ucy5wYXJzZURhdGUsYixkPXRoaXMub3B0aW9ucy5kYXRlRm9ybWF0fHwKdGhpcy5kYXRlRm9ybWF0LGc7aWYoYyl2YXIgZT1jKGEpO2Vsc2UgaWYoInN0cmluZyI9PT10eXBlb2YgYSl7aWYoZCkoYz10aGlzLmRhdGVGb3JtYXRzW2RdKXx8KGM9dGhpcy5kYXRlRm9ybWF0c1siWVlZWS9tbS9kZCJdKSwoZz1hLm1hdGNoKGMucmVnZXgpKSYmKGU9Yy5wYXJzZXIoZykpO2Vsc2UgZm9yKGIgaW4gdGhpcy5kYXRlRm9ybWF0cylpZihjPXRoaXMuZGF0ZUZvcm1hdHNbYl0sZz1hLm1hdGNoKGMucmVnZXgpKXt0aGlzLmRhdGVGb3JtYXQ9Yjt0aGlzLmFsdGVybmF0aXZlRm9ybWF0PWMuYWx0ZXJuYXRpdmU7ZT1jLnBhcnNlcihnKTticmVha31nfHwoZz1EYXRlLnBhcnNlKGEpLCJvYmplY3QiPT09dHlwZW9mIGcmJm51bGwhPT1nJiZnLmdldFRpbWU/ZT1nLmdldFRpbWUoKS02RTQqZy5nZXRUaW1lem9uZU9mZnNldCgpOkEoZykmJihlPWctNkU0KihuZXcgRGF0ZShnKSkuZ2V0VGltZXpvbmVPZmZzZXQoKSkpfXJldHVybiBlfTtiLnByb3RvdHlwZS5yb3dzVG9Db2x1bW5zPQpmdW5jdGlvbihhKXt2YXIgYyxiO2lmKGEpe3ZhciBkPVtdO3ZhciBnPWEubGVuZ3RoO2ZvcihjPTA7YzxnO2MrKyl7dmFyIGU9YVtjXS5sZW5ndGg7Zm9yKGI9MDtiPGU7YisrKWRbYl18fChkW2JdPVtdKSxkW2JdW2NdPWFbY11bYl19fXJldHVybiBkfTtiLnByb3RvdHlwZS5nZXREYXRhPWZ1bmN0aW9uKCl7aWYodGhpcy5jb2x1bW5zKXJldHVybiB0aGlzLnJvd3NUb0NvbHVtbnModGhpcy5jb2x1bW5zKS5zbGljZSgxKX07Yi5wcm90b3R5cGUucGFyc2VkPWZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLnBhcnNlZClyZXR1cm4gdGhpcy5vcHRpb25zLnBhcnNlZC5jYWxsKHRoaXMsdGhpcy5jb2x1bW5zKX07Yi5wcm90b3R5cGUuZ2V0RnJlZUluZGV4ZXM9ZnVuY3Rpb24oYSxjKXt2YXIgYixkPVtdLGc9W107Zm9yKGI9MDtiPGE7Yis9MSlkLnB1c2goITApO2ZvcihhPTA7YTxjLmxlbmd0aDthKz0xKXt2YXIgZT1jW2FdLmdldFJlZmVyZW5jZWRDb2x1bW5JbmRleGVzKCk7Zm9yKGI9CjA7YjxlLmxlbmd0aDtiKz0xKWRbZVtiXV09ITF9Zm9yKGI9MDtiPGQubGVuZ3RoO2IrPTEpZFtiXSYmZy5wdXNoKGIpO3JldHVybiBnfTtiLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMuY29sdW1ucyxjLGI9dGhpcy5vcHRpb25zLGQsZyxlPVtdO2lmKGIuY29tcGxldGV8fGIuYWZ0ZXJDb21wbGV0ZSl7aWYodGhpcy5maXJzdFJvd0FzTmFtZXMpZm9yKGQ9MDtkPGEubGVuZ3RoO2QrKylhW2RdLm5hbWU9YVtkXS5zaGlmdCgpO3ZhciBsPVtdO3ZhciBoPXRoaXMuZ2V0RnJlZUluZGV4ZXMoYS5sZW5ndGgsdGhpcy52YWx1ZUNvdW50LnNlcmllc0J1aWxkZXJzKTtmb3IoZD0wO2Q8dGhpcy52YWx1ZUNvdW50LnNlcmllc0J1aWxkZXJzLmxlbmd0aDtkKyspe3ZhciBrPXRoaXMudmFsdWVDb3VudC5zZXJpZXNCdWlsZGVyc1tkXTtrLnBvcHVsYXRlQ29sdW1ucyhoKSYmZS5wdXNoKGspfWZvcig7MDxoLmxlbmd0aDspe2s9bmV3IEY7ay5hZGRDb2x1bW5SZWFkZXIoMCwKIngiKTtkPWguaW5kZXhPZigwKTstMSE9PWQmJmguc3BsaWNlKGQsMSk7Zm9yKGQ9MDtkPHRoaXMudmFsdWVDb3VudC5nbG9iYWw7ZCsrKWsuYWRkQ29sdW1uUmVhZGVyKHZvaWQgMCx0aGlzLnZhbHVlQ291bnQuZ2xvYmFsUG9pbnRBcnJheU1hcFtkXSk7ay5wb3B1bGF0ZUNvbHVtbnMoaCkmJmUucHVzaChrKX0wPGUubGVuZ3RoJiYwPGVbMF0ucmVhZGVycy5sZW5ndGgmJihrPWFbZVswXS5yZWFkZXJzWzBdLmNvbHVtbkluZGV4XSwidW5kZWZpbmVkIiE9PXR5cGVvZiBrJiYoay5pc0RhdGV0aW1lP2M9ImRhdGV0aW1lIjprLmlzTnVtZXJpY3x8KGM9ImNhdGVnb3J5IikpKTtpZigiY2F0ZWdvcnkiPT09Yylmb3IoZD0wO2Q8ZS5sZW5ndGg7ZCsrKWZvcihrPWVbZF0saD0wO2g8ay5yZWFkZXJzLmxlbmd0aDtoKyspIngiPT09ay5yZWFkZXJzW2hdLmNvbmZpZ05hbWUmJihrLnJlYWRlcnNbaF0uY29uZmlnTmFtZT0ibmFtZSIpO2ZvcihkPTA7ZDxlLmxlbmd0aDtkKyspe2s9ZVtkXTtoPQpbXTtmb3IoZz0wO2c8YVswXS5sZW5ndGg7ZysrKWhbZ109ay5yZWFkKGEsZyk7bFtkXT17ZGF0YTpofTtrLm5hbWUmJihsW2RdLm5hbWU9ay5uYW1lKTsiY2F0ZWdvcnkiPT09YyYmKGxbZF0udHVyYm9UaHJlc2hvbGQ9MCl9YT17c2VyaWVzOmx9O2MmJihhLnhBeGlzPXt0eXBlOmN9LCJjYXRlZ29yeSI9PT1jJiYoYS54QXhpcy51bmlxdWVOYW1lcz0hMSkpO2IuY29tcGxldGUmJmIuY29tcGxldGUoYSk7Yi5hZnRlckNvbXBsZXRlJiZiLmFmdGVyQ29tcGxldGUoYSl9fTtiLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNoYXJ0O2EmJihhLmFmdGVyQ29tcGxldGU9ZnVuY3Rpb24oYSl7YSYmKGEueEF4aXMmJmMueEF4aXNbMF0mJmEueEF4aXMudHlwZT09PWMueEF4aXNbMF0ub3B0aW9ucy50eXBlJiZkZWxldGUgYS54QXhpcyxjLnVwZGF0ZShhLGIsITApKX0sQighMCxjLm9wdGlvbnMuZGF0YSxhKSx0aGlzLmluaXQoYy5vcHRpb25zLmRhdGEpKX07cmV0dXJuIGJ9KCk7CmwuZGF0YT1mdW5jdGlvbihiLGEsYyl7cmV0dXJuIG5ldyBsLkRhdGEoYixhLGMpfTtHKGIsImluaXQiLGZ1bmN0aW9uKGIpe3ZhciBhPXRoaXMsYz1iLmFyZ3NbMF18fHt9LGY9Yi5hcmdzWzFdO2MmJmMuZGF0YSYmIWEuaGFzRGF0YURlZiYmKGEuaGFzRGF0YURlZj0hMCxhLmRhdGE9bmV3IGwuRGF0YShIKGMuZGF0YSx7YWZ0ZXJDb21wbGV0ZTpmdW5jdGlvbihiKXt2YXIgZDtpZihPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChjLCJzZXJpZXMiKSlpZigib2JqZWN0Ij09PXR5cGVvZiBjLnNlcmllcylmb3IoZD1NYXRoLm1heChjLnNlcmllcy5sZW5ndGgsYiYmYi5zZXJpZXM/Yi5zZXJpZXMubGVuZ3RoOjApO2QtLTspe3ZhciBlPWMuc2VyaWVzW2RdfHx7fTtjLnNlcmllc1tkXT1CKGUsYiYmYi5zZXJpZXM/Yi5zZXJpZXNbZF06e30pfWVsc2UgZGVsZXRlIGMuc2VyaWVzO2M9QihiLGMpO2EuaW5pdChjLGYpfX0pLGMsYSksYi5wcmV2ZW50RGVmYXVsdCgpKX0pO3ZhciBGPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe3RoaXMucmVhZGVycz0KW107dGhpcy5wb2ludElzQXJyYXk9ITA7dGhpcy5uYW1lPXZvaWQgMH1iLnByb3RvdHlwZS5wb3B1bGF0ZUNvbHVtbnM9ZnVuY3Rpb24oYSl7dmFyIGI9ITA7dGhpcy5yZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oYil7InVuZGVmaW5lZCI9PT10eXBlb2YgYi5jb2x1bW5JbmRleCYmKGIuY29sdW1uSW5kZXg9YS5zaGlmdCgpKX0pO3RoaXMucmVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGEpeyJ1bmRlZmluZWQiPT09dHlwZW9mIGEuY29sdW1uSW5kZXgmJihiPSExKX0pO3JldHVybiBifTtiLnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5wb2ludElzQXJyYXksZD1jP1tdOnt9O3RoaXMucmVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBmPWFbZS5jb2x1bW5JbmRleF1bYl07Yz9kLnB1c2goZik6MDxlLmNvbmZpZ05hbWUuaW5kZXhPZigiLiIpP3YucHJvdG90eXBlLnNldE5lc3RlZFByb3BlcnR5KGQsZixlLmNvbmZpZ05hbWUpOmRbZS5jb25maWdOYW1lXT0KZn0pO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIHRoaXMubmFtZSYmMjw9dGhpcy5yZWFkZXJzLmxlbmd0aCl7dmFyIGc9dGhpcy5nZXRSZWZlcmVuY2VkQ29sdW1uSW5kZXhlcygpOzI8PWcubGVuZ3RoJiYoZy5zaGlmdCgpLGcuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLWJ9KSx0aGlzLm5hbWU9YVtnLnNoaWZ0KCldLm5hbWUpfXJldHVybiBkfTtiLnByb3RvdHlwZS5hZGRDb2x1bW5SZWFkZXI9ZnVuY3Rpb24oYSxiKXt0aGlzLnJlYWRlcnMucHVzaCh7Y29sdW1uSW5kZXg6YSxjb25maWdOYW1lOmJ9KTsieCIhPT1iJiYieSIhPT1iJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBiJiYodGhpcy5wb2ludElzQXJyYXk9ITEpfTtiLnByb3RvdHlwZS5nZXRSZWZlcmVuY2VkQ29sdW1uSW5kZXhlcz1mdW5jdGlvbigpe3ZhciBhLGI9W107Zm9yKGE9MDthPHRoaXMucmVhZGVycy5sZW5ndGg7YSs9MSl7dmFyIGY9dGhpcy5yZWFkZXJzW2FdOyJ1bmRlZmluZWQiIT09dHlwZW9mIGYuY29sdW1uSW5kZXgmJgpiLnB1c2goZi5jb2x1bW5JbmRleCl9cmV0dXJuIGJ9O2IucHJvdG90eXBlLmhhc1JlYWRlcj1mdW5jdGlvbihhKXt2YXIgYjtmb3IoYj0wO2I8dGhpcy5yZWFkZXJzLmxlbmd0aDtiKz0xKXt2YXIgZj10aGlzLnJlYWRlcnNbYl07aWYoZi5jb25maWdOYW1lPT09YSlyZXR1cm4hMH19O3JldHVybiBifSgpO2wuRGF0YT10O3JldHVybiBsLkRhdGF9KTt2KGIsIm1hc3RlcnMvbW9kdWxlcy9kYXRhLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEhpZ2hjaGFydHMgRHJpbGxkb3duIG1vZHVsZQoKIEF1dGhvcjogVG9yc3RlaW4gSG9uc2kKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCgoqLwooZnVuY3Rpb24oYyl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oY1siZGVmYXVsdCJdPWMsbW9kdWxlLmV4cG9ydHM9Yyk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvZHJpbGxkb3duIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihtKXtjKG0pO2MuSGlnaGNoYXJ0cz1tO3JldHVybiBjfSk6YygidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIG0oYyxtLHAsdCl7Yy5oYXNPd25Qcm9wZXJ0eShtKXx8KGNbbV09dC5hcHBseShudWxsLHApKX1jPWM/Yy5fbW9kdWxlczp7fTttKGMsIm1vZHVsZXMvZHJpbGxkb3duLnNyYy5qcyIsW2NbInBhcnRzL0NoYXJ0LmpzIl0sY1sicGFydHMvQ29sb3IuanMiXSxjWyJwYXJ0cy9HbG9iYWxzLmpzIl0sY1sicGFydHMvT3B0aW9ucy5qcyJdLGNbInBhcnRzL1BvaW50LmpzIl0sCmNbInBhcnRzL1NWR1JlbmRlcmVyLmpzIl0sY1sicGFydHMvVGljay5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjLG0scCx0LHksRSxBLGspe3Q9dC5kZWZhdWx0T3B0aW9uczt2YXIgbj1rLmFkZEV2ZW50LEY9ay5yZW1vdmVFdmVudCxCPWsuYW5pbU9iamVjdCx1PWsuZXh0ZW5kLHg9ay5maXJlRXZlbnQsRz1rLmZvcm1hdCx2PWsubWVyZ2UsQz1rLm9iamVjdEVhY2gsdz1rLnBpY2ssSD1rLnN5bmNUaW1lb3V0LEk9cC5ub29wLHE9cC5zZXJpZXNUeXBlcztrPXEucGllO3E9cS5jb2x1bW47dmFyIEQ9MTt1KHQubGFuZyx7ZHJpbGxVcFRleHQ6Ilx1MjVjMSBCYWNrIHRvIHtzZXJpZXMubmFtZX0ifSk7dC5kcmlsbGRvd249e2FjdGl2ZUF4aXNMYWJlbFN0eWxlOntjdXJzb3I6InBvaW50ZXIiLGNvbG9yOiIjMDAzMzk5Iixmb250V2VpZ2h0OiJib2xkIix0ZXh0RGVjb3JhdGlvbjoidW5kZXJsaW5lIn0sYWN0aXZlRGF0YUxhYmVsU3R5bGU6e2N1cnNvcjoicG9pbnRlciIsCmNvbG9yOiIjMDAzMzk5Iixmb250V2VpZ2h0OiJib2xkIix0ZXh0RGVjb3JhdGlvbjoidW5kZXJsaW5lIn0sYW5pbWF0aW9uOntkdXJhdGlvbjo1MDB9LGRyaWxsVXBCdXR0b246e3Bvc2l0aW9uOnthbGlnbjoicmlnaHQiLHg6LTEwLHk6MTB9fX07RS5wcm90b3R5cGUuRWxlbWVudC5wcm90b3R5cGUuZmFkZUluPWZ1bmN0aW9uKGEpe3RoaXMuYXR0cih7b3BhY2l0eTouMSx2aXNpYmlsaXR5OiJpbmhlcml0In0pLmFuaW1hdGUoe29wYWNpdHk6dyh0aGlzLm5ld09wYWNpdHksMSl9LGF8fHtkdXJhdGlvbjoyNTB9KX07Yy5wcm90b3R5cGUuYWRkU2VyaWVzQXNEcmlsbGRvd249ZnVuY3Rpb24oYSxiKXt0aGlzLmFkZFNpbmdsZVNlcmllc0FzRHJpbGxkb3duKGEsYik7dGhpcy5hcHBseURyaWxsZG93bigpfTtjLnByb3RvdHlwZS5hZGRTaW5nbGVTZXJpZXNBc0RyaWxsZG93bj1mdW5jdGlvbihhLGIpe3ZhciBkPWEuc2VyaWVzLGY9ZC54QXhpcyxlPWQueUF4aXMsZz1bXSxyPVtdLGg7dmFyIGw9CnRoaXMuc3R5bGVkTW9kZT97Y29sb3JJbmRleDp3KGEuY29sb3JJbmRleCxkLmNvbG9ySW5kZXgpfTp7Y29sb3I6YS5jb2xvcnx8ZC5jb2xvcn07dGhpcy5kcmlsbGRvd25MZXZlbHN8fCh0aGlzLmRyaWxsZG93bkxldmVscz1bXSk7dmFyIGM9ZC5vcHRpb25zLl9sZXZlbE51bWJlcnx8MDsoaD10aGlzLmRyaWxsZG93bkxldmVsc1t0aGlzLmRyaWxsZG93bkxldmVscy5sZW5ndGgtMV0pJiZoLmxldmVsTnVtYmVyIT09YyYmKGg9dm9pZCAwKTtiPXUodSh7X2RkU2VyaWVzSWQ6RCsrfSxsKSxiKTt2YXIgaz1kLnBvaW50cy5pbmRleE9mKGEpO2QuY2hhcnQuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS54QXhpcyE9PWZ8fGEuaXNEcmlsbGluZ3x8KGEub3B0aW9ucy5fZGRTZXJpZXNJZD1hLm9wdGlvbnMuX2RkU2VyaWVzSWR8fEQrKyxhLm9wdGlvbnMuX2NvbG9ySW5kZXg9YS51c2VyT3B0aW9ucy5fY29sb3JJbmRleCxhLm9wdGlvbnMuX2xldmVsTnVtYmVyPWEub3B0aW9ucy5fbGV2ZWxOdW1iZXJ8fApjLGg/KGc9aC5sZXZlbFNlcmllcyxyPWgubGV2ZWxTZXJpZXNPcHRpb25zKTooZy5wdXNoKGEpLGEucHVyZ2VkT3B0aW9ucz12KHtfZGRTZXJpZXNJZDphLm9wdGlvbnMuX2RkU2VyaWVzSWQsX2xldmVsTnVtYmVyOmEub3B0aW9ucy5fbGV2ZWxOdW1iZXIsc2VsZWN0ZWQ6YS5vcHRpb25zLnNlbGVjdGVkfSxhLnVzZXJPcHRpb25zKSxyLnB1c2goYS5wdXJnZWRPcHRpb25zKSkpfSk7YT11KHtsZXZlbE51bWJlcjpjLHNlcmllc09wdGlvbnM6ZC5vcHRpb25zLHNlcmllc1B1cmdlZE9wdGlvbnM6ZC5wdXJnZWRPcHRpb25zLGxldmVsU2VyaWVzT3B0aW9uczpyLGxldmVsU2VyaWVzOmcsc2hhcGVBcmdzOmEuc2hhcGVBcmdzLGJCb3g6YS5ncmFwaGljP2EuZ3JhcGhpYy5nZXRCQm94KCk6e30sY29sb3I6YS5pc051bGw/KG5ldyBtKGwuY29sb3IpKS5zZXRPcGFjaXR5KDApLmdldCgpOmwuY29sb3IsbG93ZXJTZXJpZXNPcHRpb25zOmIscG9pbnRPcHRpb25zOmQub3B0aW9ucy5kYXRhW2tdLApwb2ludEluZGV4Omssb2xkRXh0cmVtZXM6e3hNaW46ZiYmZi51c2VyTWluLHhNYXg6ZiYmZi51c2VyTWF4LHlNaW46ZSYmZS51c2VyTWluLHlNYXg6ZSYmZS51c2VyTWF4fSxyZXNldFpvb21CdXR0b246dGhpcy5yZXNldFpvb21CdXR0b259LGwpO3RoaXMuZHJpbGxkb3duTGV2ZWxzLnB1c2goYSk7ZiYmZi5uYW1lcyYmKGYubmFtZXMubGVuZ3RoPTApO2I9YS5sb3dlclNlcmllcz10aGlzLmFkZFNlcmllcyhiLCExKTtiLm9wdGlvbnMuX2xldmVsTnVtYmVyPWMrMTtmJiYoZi5vbGRQb3M9Zi5wb3MsZi51c2VyTWluPWYudXNlck1heD1udWxsLGUudXNlck1pbj1lLnVzZXJNYXg9bnVsbCk7ZC50eXBlPT09Yi50eXBlJiYoYi5hbmltYXRlPWIuYW5pbWF0ZURyaWxsZG93bnx8SSxiLm9wdGlvbnMuYW5pbWF0aW9uPSEwKX07Yy5wcm90b3R5cGUuYXBwbHlEcmlsbGRvd249ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmRyaWxsZG93bkxldmVscztpZihhJiYwPGEubGVuZ3RoKXt2YXIgYj1hW2EubGVuZ3RoLQoxXS5sZXZlbE51bWJlcjt0aGlzLmRyaWxsZG93bkxldmVscy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EubGV2ZWxOdW1iZXI9PT1iJiZhLmxldmVsU2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5vcHRpb25zJiZhLm9wdGlvbnMuX2xldmVsTnVtYmVyPT09YiYmYS5yZW1vdmUoITEpfSl9KX10aGlzLnJlc2V0Wm9vbUJ1dHRvbiYmKHRoaXMucmVzZXRab29tQnV0dG9uLmhpZGUoKSxkZWxldGUgdGhpcy5yZXNldFpvb21CdXR0b24pO3RoaXMucG9pbnRlci5yZXNldCgpO3RoaXMucmVkcmF3KCk7dGhpcy5zaG93RHJpbGxVcEJ1dHRvbigpO3godGhpcywiYWZ0ZXJEcmlsbGRvd24iKX07Yy5wcm90b3R5cGUuZ2V0RHJpbGxkb3duQmFja1RleHQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmRyaWxsZG93bkxldmVscztpZihhJiYwPGEubGVuZ3RoKXJldHVybiBhPWFbYS5sZW5ndGgtMV0sYS5zZXJpZXM9YS5zZXJpZXNPcHRpb25zLEcodGhpcy5vcHRpb25zLmxhbmcuZHJpbGxVcFRleHQsYSl9OwpjLnByb3RvdHlwZS5zaG93RHJpbGxVcEJ1dHRvbj1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj10aGlzLmdldERyaWxsZG93bkJhY2tUZXh0KCksZD1hLm9wdGlvbnMuZHJpbGxkb3duLmRyaWxsVXBCdXR0b24sZjtpZih0aGlzLmRyaWxsVXBCdXR0b24pdGhpcy5kcmlsbFVwQnV0dG9uLmF0dHIoe3RleHQ6Yn0pLmFsaWduKCk7ZWxzZXt2YXIgZT0oZj1kLnRoZW1lKSYmZi5zdGF0ZXM7dGhpcy5kcmlsbFVwQnV0dG9uPXRoaXMucmVuZGVyZXIuYnV0dG9uKGIsbnVsbCxudWxsLGZ1bmN0aW9uKCl7YS5kcmlsbFVwKCl9LGYsZSYmZS5ob3ZlcixlJiZlLnNlbGVjdCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtZHJpbGx1cC1idXR0b24iKS5hdHRyKHthbGlnbjpkLnBvc2l0aW9uLmFsaWduLHpJbmRleDo3fSkuYWRkKCkuYWxpZ24oZC5wb3NpdGlvbiwhMSxkLnJlbGF0aXZlVG98fCJwbG90Qm94Iil9fTtjLnByb3RvdHlwZS5kcmlsbFVwPWZ1bmN0aW9uKCl7aWYodGhpcy5kcmlsbGRvd25MZXZlbHMmJgowIT09dGhpcy5kcmlsbGRvd25MZXZlbHMubGVuZ3RoKXtmb3IodmFyIGE9dGhpcyxiPWEuZHJpbGxkb3duTGV2ZWxzLGQ9YltiLmxlbmd0aC0xXS5sZXZlbE51bWJlcixmPWIubGVuZ3RoLGU9YS5zZXJpZXMsZyxjLGgsbCxrPWZ1bmN0aW9uKGIpe2UuZm9yRWFjaChmdW5jdGlvbihhKXthLm9wdGlvbnMuX2RkU2VyaWVzSWQ9PT1iLl9kZFNlcmllc0lkJiYoZD1hKX0pO3ZhciBkPWR8fGEuYWRkU2VyaWVzKGIsITEpO2QudHlwZT09PWgudHlwZSYmZC5hbmltYXRlRHJpbGx1cFRvJiYoZC5hbmltYXRlPWQuYW5pbWF0ZURyaWxsdXBUbyk7Yj09PWMuc2VyaWVzUHVyZ2VkT3B0aW9ucyYmKGw9ZCl9O2YtLTspaWYoYz1iW2ZdLGMubGV2ZWxOdW1iZXI9PT1kKXtiLnBvcCgpO2g9Yy5sb3dlclNlcmllcztpZighaC5jaGFydClmb3IoZz1lLmxlbmd0aDtnLS07KWlmKGVbZ10ub3B0aW9ucy5pZD09PWMubG93ZXJTZXJpZXNPcHRpb25zLmlkJiZlW2ddLm9wdGlvbnMuX2xldmVsTnVtYmVyPT09CmQrMSl7aD1lW2ddO2JyZWFrfWgueERhdGE9W107Yy5sZXZlbFNlcmllc09wdGlvbnMuZm9yRWFjaChrKTt4KGEsImRyaWxsdXAiLHtzZXJpZXNPcHRpb25zOmMuc2VyaWVzUHVyZ2VkT3B0aW9uc3x8Yy5zZXJpZXNPcHRpb25zfSk7bC50eXBlPT09aC50eXBlJiYobC5kcmlsbGRvd25MZXZlbD1jLGwub3B0aW9ucy5hbmltYXRpb249YS5vcHRpb25zLmRyaWxsZG93bi5hbmltYXRpb24saC5hbmltYXRlRHJpbGx1cEZyb20mJmguY2hhcnQmJmguYW5pbWF0ZURyaWxsdXBGcm9tKGMpKTtsLm9wdGlvbnMuX2xldmVsTnVtYmVyPWQ7aC5yZW1vdmUoITEpO2wueEF4aXMmJihnPWMub2xkRXh0cmVtZXMsbC54QXhpcy5zZXRFeHRyZW1lcyhnLnhNaW4sZy54TWF4LCExKSxsLnlBeGlzLnNldEV4dHJlbWVzKGcueU1pbixnLnlNYXgsITEpKTtjLnJlc2V0Wm9vbUJ1dHRvbiYmKGEucmVzZXRab29tQnV0dG9uPWMucmVzZXRab29tQnV0dG9uLGEucmVzZXRab29tQnV0dG9uLnNob3coKSl9dGhpcy5yZWRyYXcoKTsKMD09PXRoaXMuZHJpbGxkb3duTGV2ZWxzLmxlbmd0aD90aGlzLmRyaWxsVXBCdXR0b249dGhpcy5kcmlsbFVwQnV0dG9uLmRlc3Ryb3koKTp0aGlzLmRyaWxsVXBCdXR0b24uYXR0cih7dGV4dDp0aGlzLmdldERyaWxsZG93bkJhY2tUZXh0KCl9KS5hbGlnbigpO3RoaXMuZGREdXBlcy5sZW5ndGg9W107eChhLCJkcmlsbHVwYWxsIil9fTtuKGMsImFmdGVySW5pdCIsZnVuY3Rpb24oKXt2YXIgYT10aGlzO2EuZHJpbGxkb3duPXt1cGRhdGU6ZnVuY3Rpb24oYixkKXt2KCEwLGEub3B0aW9ucy5kcmlsbGRvd24sYik7dyhkLCEwKSYmYS5yZWRyYXcoKX19fSk7bihjLCJiZWZvcmVTaG93UmVzZXRab29tIixmdW5jdGlvbigpe2lmKHRoaXMuZHJpbGxVcEJ1dHRvbilyZXR1cm4hMX0pO24oYywicmVuZGVyIixmdW5jdGlvbigpeyh0aGlzLnhBeGlzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXthLmRkUG9pbnRzPXt9O2Euc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGQsZj1iLnhEYXRhfHwKW10sZT1iLnBvaW50cztmb3IoZD0wO2Q8Zi5sZW5ndGg7ZCsrKXt2YXIgYz1iLm9wdGlvbnMuZGF0YVtkXTsibnVtYmVyIiE9PXR5cGVvZiBjJiYoYz1iLnBvaW50Q2xhc3MucHJvdG90eXBlLm9wdGlvbnNUb09iamVjdC5jYWxsKHtzZXJpZXM6Yn0sYyksYy5kcmlsbGRvd24mJihhLmRkUG9pbnRzW2ZbZF1dfHwoYS5kZFBvaW50c1tmW2RdXT1bXSksYS5kZFBvaW50c1tmW2RdXS5wdXNoKGU/ZVtkXTohMCkpKX19KTtDKGEudGlja3MsQS5wcm90b3R5cGUuZHJpbGxhYmxlKX0pfSk7cS5wcm90b3R5cGUuYW5pbWF0ZURyaWxsdXBUbz1mdW5jdGlvbihhKXtpZighYSl7dmFyIGI9dGhpcyxkPWIuZHJpbGxkb3duTGV2ZWw7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLmRhdGFMYWJlbDthLmdyYXBoaWMmJmEuZ3JhcGhpYy5oaWRlKCk7YiYmKGIuaGlkZGVuPSJoaWRkZW4iPT09Yi5hdHRyKCJ2aXNpYmlsaXR5IiksYi5oaWRkZW58fChiLmhpZGUoKSxhLmNvbm5lY3RvciYmCmEuY29ubmVjdG9yLmhpZGUoKSkpfSk7SChmdW5jdGlvbigpe2IucG9pbnRzJiZiLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7Yj1iPT09KGQmJmQucG9pbnRJbmRleCk/InNob3ciOiJmYWRlSW4iO3ZhciBjPSJzaG93Ij09PWI/ITA6dm9pZCAwLGY9YS5kYXRhTGFiZWw7aWYoYS5ncmFwaGljKWEuZ3JhcGhpY1tiXShjKTtmJiYhZi5oaWRkZW4mJihmLmZhZGVJbigpLGEuY29ubmVjdG9yJiZhLmNvbm5lY3Rvci5mYWRlSW4oKSl9KX0sTWF0aC5tYXgodGhpcy5jaGFydC5vcHRpb25zLmRyaWxsZG93bi5hbmltYXRpb24uZHVyYXRpb24tNTAsMCkpO2RlbGV0ZSB0aGlzLmFuaW1hdGV9fTtxLnByb3RvdHlwZS5hbmltYXRlRHJpbGxkb3duPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMsZD10aGlzLmNoYXJ0LGM9ZC5kcmlsbGRvd25MZXZlbHMsZSxnPUIoZC5vcHRpb25zLmRyaWxsZG93bi5hbmltYXRpb24pLHI9dGhpcy54QXhpcyxoPWQuc3R5bGVkTW9kZTthfHwoYy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Iub3B0aW9ucy5fZGRTZXJpZXNJZD09PQphLmxvd2VyU2VyaWVzT3B0aW9ucy5fZGRTZXJpZXNJZCYmKGU9YS5zaGFwZUFyZ3MsaHx8KGUuZmlsbD1hLmNvbG9yKSl9KSxlLngrPXcoci5vbGRQb3Msci5wb3MpLXIucG9zLHRoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGQ9YS5zaGFwZUFyZ3M7aHx8KGQuZmlsbD1hLmNvbG9yKTthLmdyYXBoaWMmJmEuZ3JhcGhpYy5hdHRyKGUpLmFuaW1hdGUodShhLnNoYXBlQXJncyx7ZmlsbDphLmNvbG9yfHxiLmNvbG9yfSksZyk7YS5kYXRhTGFiZWwmJmEuZGF0YUxhYmVsLmZhZGVJbihnKX0pLGRlbGV0ZSB0aGlzLmFuaW1hdGUpfTtxLnByb3RvdHlwZS5hbmltYXRlRHJpbGx1cEZyb209ZnVuY3Rpb24oYSl7dmFyIGI9Qih0aGlzLmNoYXJ0Lm9wdGlvbnMuZHJpbGxkb3duLmFuaW1hdGlvbiksZD10aGlzLmdyb3VwLGM9ZCE9PXRoaXMuY2hhcnQuY29sdW1uR3JvdXAsZT10aGlzO2UudHJhY2tlckdyb3Vwcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKGVbYV0pZVthXS5vbigibW91c2VvdmVyIil9KTsKYyYmZGVsZXRlIHRoaXMuZ3JvdXA7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgZz1mLmdyYXBoaWMsaD1hLnNoYXBlQXJncyxsPWZ1bmN0aW9uKCl7Zy5kZXN0cm95KCk7ZCYmYyYmKGQ9ZC5kZXN0cm95KCkpfTtnJiZoJiYoZGVsZXRlIGYuZ3JhcGhpYyxlLmNoYXJ0LnN0eWxlZE1vZGV8fChoLmZpbGw9YS5jb2xvciksYi5kdXJhdGlvbj9nLmFuaW1hdGUoaCx2KGIse2NvbXBsZXRlOmx9KSk6KGcuYXR0cihoKSxsKCkpKX0pfTtrJiZ1KGsucHJvdG90eXBlLHthbmltYXRlRHJpbGx1cFRvOnEucHJvdG90eXBlLmFuaW1hdGVEcmlsbHVwVG8sYW5pbWF0ZURyaWxsdXBGcm9tOnEucHJvdG90eXBlLmFuaW1hdGVEcmlsbHVwRnJvbSxhbmltYXRlRHJpbGxkb3duOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hhcnQuZHJpbGxkb3duTGV2ZWxzW3RoaXMuY2hhcnQuZHJpbGxkb3duTGV2ZWxzLmxlbmd0aC0xXSxkPXRoaXMuY2hhcnQub3B0aW9ucy5kcmlsbGRvd24uYW5pbWF0aW9uOwp0aGlzLmlzKCJpdGVtIikmJihkLmR1cmF0aW9uPTApO2lmKHRoaXMuY2VudGVyKXt2YXIgYz1iLnNoYXBlQXJncyxlPWMuc3RhcnQsZz0oYy5lbmQtZSkvdGhpcy5wb2ludHMubGVuZ3RoLGs9dGhpcy5jaGFydC5zdHlsZWRNb2RlO2F8fCh0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEsZil7dmFyIGg9YS5zaGFwZUFyZ3M7a3x8KGMuZmlsbD1iLmNvbG9yLGguZmlsbD1hLmNvbG9yKTtpZihhLmdyYXBoaWMpYS5ncmFwaGljLmF0dHIodihjLHtzdGFydDplK2YqZyxlbmQ6ZSsoZisxKSpnfSkpW2Q/ImFuaW1hdGUiOiJhdHRyIl0oaCxkKX0pLGRlbGV0ZSB0aGlzLmFuaW1hdGUpfX19KTt5LnByb3RvdHlwZS5kb0RyaWxsZG93bj1mdW5jdGlvbihhLGIsZCl7dmFyIGM9dGhpcy5zZXJpZXMuY2hhcnQsZT1jLm9wdGlvbnMuZHJpbGxkb3duLGc9KGUuc2VyaWVzfHxbXSkubGVuZ3RoO2MuZGREdXBlc3x8KGMuZGREdXBlcz1bXSk7Zm9yKDtnLS0mJiFrOylpZihlLnNlcmllc1tnXS5pZD09PQp0aGlzLmRyaWxsZG93biYmLTE9PT1jLmRkRHVwZXMuaW5kZXhPZih0aGlzLmRyaWxsZG93bikpe3ZhciBrPWUuc2VyaWVzW2ddO2MuZGREdXBlcy5wdXNoKHRoaXMuZHJpbGxkb3duKX14KGMsImRyaWxsZG93biIse3BvaW50OnRoaXMsc2VyaWVzT3B0aW9uczprLGNhdGVnb3J5OmIsb3JpZ2luYWxFdmVudDpkLHBvaW50czoidW5kZWZpbmVkIiE9PXR5cGVvZiBiJiZ0aGlzLnNlcmllcy54QXhpcy5nZXRERFBvaW50cyhiKS5zbGljZSgwKX0sZnVuY3Rpb24oYil7dmFyIGQ9Yi5wb2ludC5zZXJpZXMmJmIucG9pbnQuc2VyaWVzLmNoYXJ0LGM9Yi5zZXJpZXNPcHRpb25zO2QmJmMmJihhP2QuYWRkU2luZ2xlU2VyaWVzQXNEcmlsbGRvd24oYi5wb2ludCxjKTpkLmFkZFNlcmllc0FzRHJpbGxkb3duKGIucG9pbnQsYykpfSl9O3AuQXhpcy5wcm90b3R5cGUuZHJpbGxkb3duQ2F0ZWdvcnk9ZnVuY3Rpb24oYSxiKXtDKHRoaXMuZ2V0RERQb2ludHMoYSksZnVuY3Rpb24oZCl7ZCYmZC5zZXJpZXMmJgpkLnNlcmllcy52aXNpYmxlJiZkLmRvRHJpbGxkb3duJiZkLmRvRHJpbGxkb3duKCEwLGEsYil9KTt0aGlzLmNoYXJ0LmFwcGx5RHJpbGxkb3duKCl9O3AuQXhpcy5wcm90b3R5cGUuZ2V0RERQb2ludHM9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZGRQb2ludHMmJnRoaXMuZGRQb2ludHNbYV19O0EucHJvdG90eXBlLmRyaWxsYWJsZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucG9zLGI9dGhpcy5sYWJlbCxkPXRoaXMuYXhpcyxjPSJ4QXhpcyI9PT1kLmNvbGwmJmQuZ2V0RERQb2ludHMsZT1jJiZkLmdldEREUG9pbnRzKGEpLGc9ZC5jaGFydC5zdHlsZWRNb2RlO2MmJihiJiZlJiZlLmxlbmd0aD8oYi5kcmlsbGFibGU9ITAsYi5iYXNpY1N0eWxlc3x8Z3x8KGIuYmFzaWNTdHlsZXM9dihiLnN0eWxlcykpLGIuYWRkQ2xhc3MoImhpZ2hjaGFydHMtZHJpbGxkb3duLWF4aXMtbGFiZWwiKSxiLnJlbW92ZU9uRHJpbGxhYmxlQ2xpY2smJkYoYi5lbGVtZW50LCJjbGljayIpLGIucmVtb3ZlT25EcmlsbGFibGVDbGljaz0KbihiLmVsZW1lbnQsImNsaWNrIixmdW5jdGlvbihiKXtiLnByZXZlbnREZWZhdWx0KCk7ZC5kcmlsbGRvd25DYXRlZ29yeShhLGIpfSksZ3x8Yi5jc3MoZC5jaGFydC5vcHRpb25zLmRyaWxsZG93bi5hY3RpdmVBeGlzTGFiZWxTdHlsZSkpOmImJmIuZHJpbGxhYmxlJiZiLnJlbW92ZU9uRHJpbGxhYmxlQ2xpY2smJihnfHwoYi5zdHlsZXM9e30sYi5jc3MoYi5iYXNpY1N0eWxlcykpLGIucmVtb3ZlT25EcmlsbGFibGVDbGljaygpLGIucmVtb3ZlQ2xhc3MoImhpZ2hjaGFydHMtZHJpbGxkb3duLWF4aXMtbGFiZWwiKSkpfTtuKHksImFmdGVySW5pdCIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9YS5zZXJpZXM7YS5kcmlsbGRvd24mJm4oYSwiY2xpY2siLGZ1bmN0aW9uKGMpe2IueEF4aXMmJiExPT09Yi5jaGFydC5vcHRpb25zLmRyaWxsZG93bi5hbGxvd1BvaW50RHJpbGxkb3duP2IueEF4aXMuZHJpbGxkb3duQ2F0ZWdvcnkoYS54LGMpOmEuZG9EcmlsbGRvd24odm9pZCAwLHZvaWQgMCwKYyl9KTtyZXR1cm4gYX0pO24ocC5TZXJpZXMsImFmdGVyRHJhd0RhdGFMYWJlbHMiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydC5vcHRpb25zLmRyaWxsZG93bi5hY3RpdmVEYXRhTGFiZWxTdHlsZSxiPXRoaXMuY2hhcnQucmVuZGVyZXIsYz10aGlzLmNoYXJ0LnN0eWxlZE1vZGU7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihkKXt2YXIgZT1kLm9wdGlvbnMuZGF0YUxhYmVscyxmPXcoZC5kbE9wdGlvbnMsZSYmZS5zdHlsZSx7fSk7ZC5kcmlsbGRvd24mJmQuZGF0YUxhYmVsJiYoImNvbnRyYXN0IiE9PWEuY29sb3J8fGN8fChmLmNvbG9yPWIuZ2V0Q29udHJhc3QoZC5jb2xvcnx8dGhpcy5jb2xvcikpLGUmJmUuY29sb3ImJihmLmNvbG9yPWUuY29sb3IpLGQuZGF0YUxhYmVsLmFkZENsYXNzKCJoaWdoY2hhcnRzLWRyaWxsZG93bi1kYXRhLWxhYmVsIiksY3x8ZC5kYXRhTGFiZWwuY3NzKGEpLmNzcyhmKSl9LHRoaXMpfSk7dmFyIHo9ZnVuY3Rpb24oYSxiLGMsZil7YVtjPwoiYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKCJoaWdoY2hhcnRzLWRyaWxsZG93bi1wb2ludCIpO2Z8fGEuY3NzKHtjdXJzb3I6Yn0pfTtuKHAuU2VyaWVzLCJhZnRlckRyYXdUcmFja2VyIixmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQuc3R5bGVkTW9kZTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuZHJpbGxkb3duJiZiLmdyYXBoaWMmJnooYi5ncmFwaGljLCJwb2ludGVyIiwhMCxhKX0pfSk7bih5LCJhZnRlclNldFN0YXRlIixmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VyaWVzLmNoYXJ0LnN0eWxlZE1vZGU7dGhpcy5kcmlsbGRvd24mJnRoaXMuc2VyaWVzLmhhbG8mJiJob3ZlciI9PT10aGlzLnN0YXRlP3oodGhpcy5zZXJpZXMuaGFsbywicG9pbnRlciIsITAsYSk6dGhpcy5zZXJpZXMuaGFsbyYmeih0aGlzLnNlcmllcy5oYWxvLCJhdXRvIiwhMSxhKX0pfSk7bShjLCJtYXN0ZXJzL21vZHVsZXMvZHJpbGxkb3duLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1kcmlsbGRvd24uanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEl0ZW0gc2VyaWVzIHR5cGUgZm9yIEhpZ2hjaGFydHMKCiAoYykgMjAxOSBUb3JzdGVpbiBIb25zaQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihiKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhiWyJkZWZhdWx0Il09Yixtb2R1bGUuZXhwb3J0cz1iKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9pdGVtLXNlcmllcyIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oZCl7YihkKTtiLkhpZ2hjaGFydHM9ZDtyZXR1cm4gYn0pOmIoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihiKXtmdW5jdGlvbiBkKGIsZCxjLEMpe2IuaGFzT3duUHJvcGVydHkoZCl8fChiW2RdPUMuYXBwbHkobnVsbCxjKSl9Yj1iP2IuX21vZHVsZXM6e307ZChiLCJtb2R1bGVzL2l0ZW0tc2VyaWVzLnNyYy5qcyIsW2JbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9PcHRpb25zLmpzIl0sYlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGIsZCxjKXt2YXIgQz1jLmRlZmluZWQsCkY9Yy5leHRlbmQsRz1jLmZpcmVFdmVudCxEPWMuaXNOdW1iZXIsSD1jLm1lcmdlLEk9Yy5vYmplY3RFYWNoLEo9Yy5waWNrO2M9Yy5zZXJpZXNUeXBlO3ZhciBtPWIuc2VyaWVzVHlwZXMucGllLnByb3RvdHlwZS5wb2ludENsYXNzLnByb3RvdHlwZTtjKCJpdGVtIiwicGllIix7ZW5kQW5nbGU6dm9pZCAwLGlubmVyU2l6ZToiNDAlIixpdGVtUGFkZGluZzouMSxsYXlvdXQ6InZlcnRpY2FsIixtYXJrZXI6SChkLmRlZmF1bHRPcHRpb25zLnBsb3RPcHRpb25zLmxpbmUubWFya2VyLHtyYWRpdXM6bnVsbH0pLHJvd3M6dm9pZCAwLGNyaXNwOiExLHNob3dJbkxlZ2VuZDohMCxzdGFydEFuZ2xlOnZvaWQgMH0se21hcmtlckF0dHJpYnM6dm9pZCAwLHRyYW5zbGF0ZTpmdW5jdGlvbihhKXswPT09dGhpcy50b3RhbCYmKHRoaXMuY2VudGVyPXRoaXMuZ2V0Q2VudGVyKCkpO3RoaXMuc2xvdHN8fCh0aGlzLnNsb3RzPVtdKTtEKHRoaXMub3B0aW9ucy5zdGFydEFuZ2xlKSYmRCh0aGlzLm9wdGlvbnMuZW5kQW5nbGUpPwooYi5zZXJpZXNUeXBlcy5waWUucHJvdG90eXBlLnRyYW5zbGF0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5zbG90cz10aGlzLmdldFNsb3RzKCkpOih0aGlzLmdlbmVyYXRlUG9pbnRzKCksRyh0aGlzLCJhZnRlclRyYW5zbGF0ZSIpKX0sZ2V0U2xvdHM6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpezA8QiYmKGEucm93LmNvbENvdW50LS0sQi0tKX1mb3IodmFyIGI9dGhpcy5jZW50ZXIsYz1iWzJdLGQ9YlszXSx4LG49dGhpcy5zbG90cyxyLHksdCx1LHYsZixsLHcsaD0wLHAsej10aGlzLmVuZEFuZ2xlUmFkLXRoaXMuc3RhcnRBbmdsZVJhZCxxPU51bWJlci5NQVhfVkFMVUUsQSxlLGssZz10aGlzLm9wdGlvbnMucm93cyxtPShjLWQpL2MsRT0wPT09eiUoMipNYXRoLlBJKTtxPnRoaXMudG90YWwrKGUmJkU/ZS5sZW5ndGg6MCk7KWZvcihBPXEscT1uLmxlbmd0aD0wLGU9ayxrPVtdLGgrKyxwPWMvaC8yLGc/KGQ9KHAtZykvcCpjLDA8PWQ/cD1nOihkPTAsbT0xKSk6cD1NYXRoLmZsb29yKHAqCm0pLHg9cDswPHg7eC0tKXQ9KGQreC9wKihjLWQtaCkpLzIsdT16KnQsdj1NYXRoLmNlaWwodS9oKSxrLnB1c2goe3Jvd1JhZGl1czp0LHJvd0xlbmd0aDp1LGNvbENvdW50OnZ9KSxxKz12KzE7aWYoZSl7Zm9yKHZhciBCPUEtdGhpcy50b3RhbC0oRT9lLmxlbmd0aDowKTswPEI7KWUubWFwKGZ1bmN0aW9uKGEpe3JldHVybnthbmdsZTphLmNvbENvdW50L2Eucm93TGVuZ3RoLHJvdzphfX0pLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi5hbmdsZS1hLmFuZ2xlfSkuc2xpY2UoMCxNYXRoLm1pbihCLE1hdGguY2VpbChlLmxlbmd0aC8yKSkpLmZvckVhY2goYSk7ZS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBjPWEucm93UmFkaXVzO2Y9KGE9YS5jb2xDb3VudCk/ei9hOjA7Zm9yKHc9MDt3PD1hO3crPTEpbD10aGlzLnN0YXJ0QW5nbGVSYWQrdypmLHI9YlswXStNYXRoLmNvcyhsKSpjLHk9YlsxXStNYXRoLnNpbihsKSpjLG4ucHVzaCh7eDpyLHk6eSxhbmdsZTpsfSl9LHRoaXMpOwpuLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5hbmdsZS1iLmFuZ2xlfSk7dGhpcy5pdGVtU2l6ZT1oO3JldHVybiBufX0sZ2V0Um93czpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5yb3dzO2lmKCFhKXt2YXIgYj10aGlzLmNoYXJ0LnBsb3RXaWR0aC90aGlzLmNoYXJ0LnBsb3RIZWlnaHQ7YT1NYXRoLnNxcnQodGhpcy50b3RhbCk7aWYoMTxiKWZvcihhPU1hdGguY2VpbChhKTswPGE7KXt2YXIgYz10aGlzLnRvdGFsL2E7aWYoYy9hPmIpYnJlYWs7YS0tfWVsc2UgZm9yKGE9TWF0aC5mbG9vcihhKTthPHRoaXMudG90YWw7KXtjPXRoaXMudG90YWwvYTtpZihjL2E8YilicmVhazthKyt9fXJldHVybiBhfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMub3B0aW9ucyxjPWEuY2hhcnQucmVuZGVyZXIsZD1iLm1hcmtlcixtPXRoaXMuYm9yZGVyV2lkdGglMj8uNToxLG49MCxyPXRoaXMuZ2V0Um93cygpLHk9TWF0aC5jZWlsKHRoaXMudG90YWwvciksCnQ9dGhpcy5jaGFydC5wbG90V2lkdGgveSx1PXRoaXMuY2hhcnQucGxvdEhlaWdodC9yLHY9dGhpcy5pdGVtU2l6ZXx8TWF0aC5taW4odCx1KTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGYpe3ZhciBsLHcsaD1mLm1hcmtlcnx8e30scD1oLnN5bWJvbHx8ZC5zeW1ib2w7aD1KKGgucmFkaXVzLGQucmFkaXVzKTt2YXIgej1DKGgpPzIqaDp2LHE9eipiLml0ZW1QYWRkaW5nLEE7Zi5ncmFwaGljcz1sPWYuZ3JhcGhpY3N8fHt9O2EuY2hhcnQuc3R5bGVkTW9kZXx8KHc9YS5wb2ludEF0dHJpYnMoZixmLnNlbGVjdGVkJiYic2VsZWN0IikpO2lmKCFmLmlzTnVsbCYmZi52aXNpYmxlKXtmLmdyYXBoaWN8fChmLmdyYXBoaWM9Yy5nKCJwb2ludCIpLmFkZChhLmdyb3VwKSk7Zm9yKHZhciBlPTA7ZTxmLnk7ZSsrKXtpZihhLmNlbnRlciYmYS5zbG90cyl7dmFyIGs9YS5zbG90cy5zaGlmdCgpO3ZhciBnPWsueC12LzI7az1rLnktdi8yfWVsc2UiaG9yaXpvbnRhbCI9PT1iLmxheW91dD8KKGc9biV5KnQsaz11Kk1hdGguZmxvb3Iobi95KSk6KGc9dCpNYXRoLmZsb29yKG4vciksaz1uJXIqdSk7Zys9cTtrKz1xO3ZhciB4PUE9TWF0aC5yb3VuZCh6LTIqcSk7YS5vcHRpb25zLmNyaXNwJiYoZz1NYXRoLnJvdW5kKGcpLW0saz1NYXRoLnJvdW5kKGspK20pO2c9e3g6Zyx5Omssd2lkdGg6QSxoZWlnaHQ6eH07InVuZGVmaW5lZCIhPT10eXBlb2YgaCYmKGcucj1oKTtsW2VdP2xbZV0uYW5pbWF0ZShnKTpsW2VdPWMuc3ltYm9sKHAsbnVsbCxudWxsLG51bGwsbnVsbCx7YmFja2dyb3VuZFNpemU6IndpdGhpbiJ9KS5hdHRyKEYoZyx3KSkuYWRkKGYuZ3JhcGhpYyk7bFtlXS5pc0FjdGl2ZT0hMDtuKyt9fUkobCxmdW5jdGlvbihhLGIpe2EuaXNBY3RpdmU/YS5pc0FjdGl2ZT0hMTooYS5kZXN0cm95KCksZGVsZXRlIGxbYl0pfSl9KX0sZHJhd0RhdGFMYWJlbHM6ZnVuY3Rpb24oKXt0aGlzLmNlbnRlciYmdGhpcy5zbG90cz9iLnNlcmllc1R5cGVzLnBpZS5wcm90b3R5cGUuZHJhd0RhdGFMYWJlbHMuY2FsbCh0aGlzKToKdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXthLmRlc3Ryb3lFbGVtZW50cyh7ZGF0YUxhYmVsOjF9KX0pfSxhbmltYXRlOmZ1bmN0aW9uKGEpe2E/dGhpcy5ncm91cC5hdHRyKHtvcGFjaXR5OjB9KTp0aGlzLmdyb3VwLmFuaW1hdGUoe29wYWNpdHk6MX0sdGhpcy5vcHRpb25zLmFuaW1hdGlvbil9fSx7Y29ubmVjdG9yU2hhcGVzOm0uY29ubmVjdG9yU2hhcGVzLGdldENvbm5lY3RvclBhdGg6bS5nZXRDb25uZWN0b3JQYXRoLHNldFZpc2libGU6bS5zZXRWaXNpYmxlLGdldFRyYW5zbGF0ZTptLmdldFRyYW5zbGF0ZX0pOyIifSk7ZChiLCJtYXN0ZXJzL21vZHVsZXMvaXRlbS1zZXJpZXMuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWl0ZW0tc2VyaWVzLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIENsaWVudCBzaWRlIGV4cG9ydGluZyBtb2R1bGUKCiAoYykgMjAxNS0yMDE5IFRvcnN0ZWluIEhvbnNpIC8gT3lzdGVpbiBNb3NlbmcKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYSl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYVsiZGVmYXVsdCJdPWEsbW9kdWxlLmV4cG9ydHM9YSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvb2ZmbGluZS1leHBvcnRpbmciLFsiaGlnaGNoYXJ0cyIsImhpZ2hjaGFydHMvbW9kdWxlcy9leHBvcnRpbmciXSxmdW5jdGlvbihoKXthKGgpO2EuSGlnaGNoYXJ0cz1oO3JldHVybiBhfSk6YSgidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGgoYSxiLHEsayl7YS5oYXNPd25Qcm9wZXJ0eShiKXx8KGFbYl09ay5hcHBseShudWxsLHEpKX1hPWE/YS5fbW9kdWxlczp7fTtoKGEsIm1peGlucy9kb3dubG9hZC11cmwuanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl1dLGZ1bmN0aW9uKGEpe3ZhciBiPWEud2luLHE9Yi5uYXZpZ2F0b3IsCms9Yi5kb2N1bWVudCxuPWIuVVJMfHxiLndlYmtpdFVSTHx8YixlPS9FZGdlXC9cZCsvLnRlc3QocS51c2VyQWdlbnQpO2EuZGF0YVVSTHRvQmxvYj1mdW5jdGlvbihhKXtpZigoYT1hLm1hdGNoKC9kYXRhOihbXjtdKikoO2Jhc2U2NCk/LChbMC05QS1aYS16Ky9dKykvKSkmJjM8YS5sZW5ndGgmJmIuYXRvYiYmYi5BcnJheUJ1ZmZlciYmYi5VaW50OEFycmF5JiZiLkJsb2ImJm4uY3JlYXRlT2JqZWN0VVJMKXt2YXIgZz1iLmF0b2IoYVszXSksZD1uZXcgYi5BcnJheUJ1ZmZlcihnLmxlbmd0aCk7ZD1uZXcgYi5VaW50OEFycmF5KGQpO2Zvcih2YXIgZT0wO2U8ZC5sZW5ndGg7KytlKWRbZV09Zy5jaGFyQ29kZUF0KGUpO2E9bmV3IGIuQmxvYihbZF0se3R5cGU6YVsxXX0pO3JldHVybiBuLmNyZWF0ZU9iamVjdFVSTChhKX19O2EuZG93bmxvYWRVUkw9ZnVuY3Rpb24oZyxuKXt2YXIgZD1rLmNyZWF0ZUVsZW1lbnQoImEiKTtpZigic3RyaW5nIj09PXR5cGVvZiBnfHxnIGluc3RhbmNlb2YKU3RyaW5nfHwhcS5tc1NhdmVPck9wZW5CbG9iKXtpZihlfHwyRTY8Zy5sZW5ndGgpaWYoZz1hLmRhdGFVUkx0b0Jsb2IoZyksIWcpdGhyb3cgRXJyb3IoIkZhaWxlZCB0byBjb252ZXJ0IHRvIGJsb2IiKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBkLmRvd25sb2FkKWQuaHJlZj1nLGQuZG93bmxvYWQ9bixrLmJvZHkuYXBwZW5kQ2hpbGQoZCksZC5jbGljaygpLGsuYm9keS5yZW1vdmVDaGlsZChkKTtlbHNlIHRyeXt2YXIgaD1iLm9wZW4oZywiY2hhcnQiKTtpZigidW5kZWZpbmVkIj09PXR5cGVvZiBofHxudWxsPT09aCl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIG9wZW4gd2luZG93Iik7fWNhdGNoKEEpe2IubG9jYXRpb24uaHJlZj1nfX1lbHNlIHEubXNTYXZlT3JPcGVuQmxvYihnLG4pfX0pO2goYSwibW9kdWxlcy9vZmZsaW5lLWV4cG9ydGluZy5zcmMuanMiLFthWyJwYXJ0cy9DaGFydC5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLAphWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxiLGgsayl7ZnVuY3Rpb24gbihhLGIpe3ZhciBmPWcuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXSxjPWcuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yy50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiO2Muc3JjPWE7Yy5vbmxvYWQ9YjtjLm9uZXJyb3I9ZnVuY3Rpb24oKXtkKCJFcnJvciBsb2FkaW5nIHNjcmlwdCAiK2EpfTtmLmFwcGVuZENoaWxkKGMpfXZhciBlPWIud2luLGc9Yi5kb2MscT1rLmFkZEV2ZW50LGQ9ay5lcnJvcixGPWsuZXh0ZW5kLEE9ay5nZXRPcHRpb25zLEM9ay5tZXJnZSxEPWUuVVJMfHxlLndlYmtpdFVSTHx8ZSx4PWUubmF2aWdhdG9yLEI9L0VkZ2VcL3xUcmlkZW50XC98TVNJRSAvLnRlc3QoeC51c2VyQWdlbnQpLEc9Qj8xNTA6MDtiLkNhblZHUmVuZGVyZXI9e307Yi5zdmdUb0RhdGFVcmw9ZnVuY3Rpb24oYSl7dmFyIGI9LTE8eC51c2VyQWdlbnQuaW5kZXhPZigiV2ViS2l0IikmJjA+eC51c2VyQWdlbnQuaW5kZXhPZigiQ2hyb21lIik7CnRyeXtpZighYiYmMD54LnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImZpcmVmb3giKSlyZXR1cm4gRC5jcmVhdGVPYmplY3RVUkwobmV3IGUuQmxvYihbYV0se3R5cGU6ImltYWdlL3N2Zyt4bWw7Y2hhcnNldC11dGYtMTYifSkpfWNhdGNoKGYpe31yZXR1cm4iZGF0YTppbWFnZS9zdmcreG1sO2NoYXJzZXQ9VVRGLTgsIitlbmNvZGVVUklDb21wb25lbnQoYSl9O2IuaW1hZ2VUb0RhdGFVcmw9ZnVuY3Rpb24oYSxiLGYsYyxkLG0saCx0LHope3ZhciBsPW5ldyBlLkltYWdlLHI9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGU9Zy5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxtPWUuZ2V0Q29udGV4dCYmZS5nZXRDb250ZXh0KCIyZCIpO3RyeXtpZihtKXtlLmhlaWdodD1sLmhlaWdodCpjO2Uud2lkdGg9bC53aWR0aCpjO20uZHJhd0ltYWdlKGwsMCwwLGUud2lkdGgsZS5oZWlnaHQpO3RyeXt2YXIgeT1lLnRvRGF0YVVSTChiKTtkKHksYixmLGMpfWNhdGNoKEUpe2soYSwKYixmLGMpfX1lbHNlIGgoYSxiLGYsYyl9ZmluYWxseXt6JiZ6KGEsYixmLGMpfX0sRyl9LHU9ZnVuY3Rpb24oKXt0KGEsYixmLGMpO3omJnooYSxiLGYsYyl9O3ZhciBrPWZ1bmN0aW9uKCl7bD1uZXcgZS5JbWFnZTtrPW07bC5jcm9zc09yaWdpbj0iQW5vbnltb3VzIjtsLm9ubG9hZD1yO2wub25lcnJvcj11O2wuc3JjPWF9O2wub25sb2FkPXI7bC5vbmVycm9yPXU7bC5zcmM9YX07Yi5kb3dubG9hZFNWR0xvY2FsPWZ1bmN0aW9uKGEsZCxmLGMpe2Z1bmN0aW9uIHUoYSxiKXt2YXIgYz1hLndpZHRoLmJhc2VWYWwudmFsdWUrMipiO2I9YS5oZWlnaHQuYmFzZVZhbC52YWx1ZSsyKmI7Yz1uZXcgZS5qc1BERihiPmM/InAiOiJsIiwicHQiLFtjLGJdKTtbXS5mb3JFYWNoLmNhbGwoYS5xdWVyeVNlbGVjdG9yQWxsKCcqW3Zpc2liaWxpdHk9ImhpZGRlbiJdJyksZnVuY3Rpb24oYSl7YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpfSk7ZS5zdmcycGRmKGEsYyx7cmVtb3ZlSW52YWxpZDohMH0pOwpyZXR1cm4gYy5vdXRwdXQoImRhdGF1cmlzdHJpbmciKX1mdW5jdGlvbiBtKCl7aC5pbm5lckhUTUw9YTt2YXIgZT1oLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZXh0IiksZDtbXS5mb3JFYWNoLmNhbGwoZSxmdW5jdGlvbihhKXtbImZvbnQtZmFtaWx5IiwiZm9udC1zaXplIl0uZm9yRWFjaChmdW5jdGlvbihiKXtmb3IodmFyIGM9YTtjJiZjIT09aDspe2lmKGMuc3R5bGVbYl0pe2Euc3R5bGVbYl09Yy5zdHlsZVtiXTticmVha31jPWMucGFyZW50Tm9kZX19KTthLnN0eWxlWyJmb250LWZhbWlseSJdPWEuc3R5bGVbImZvbnQtZmFtaWx5Il0mJmEuc3R5bGVbImZvbnQtZmFtaWx5Il0uc3BsaXQoIiAiKS5zcGxpY2UoLTEpO2Q9YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGl0bGUiKTtbXS5mb3JFYWNoLmNhbGwoZCxmdW5jdGlvbihiKXthLnJlbW92ZUNoaWxkKGIpfSl9KTtlPXUoaC5maXJzdENoaWxkLDApO3RyeXtiLmRvd25sb2FkVVJMKGUsciksYyYmYygpfWNhdGNoKEgpe2YoSCl9fQp2YXIgaz0hMCx0PWQubGliVVJMfHxBKCkuZXhwb3J0aW5nLmxpYlVSTCxoPWcuY3JlYXRlRWxlbWVudCgiZGl2IiksbD1kLnR5cGV8fCJpbWFnZS9wbmciLHI9KGQuZmlsZW5hbWV8fCJjaGFydCIpKyIuIisoImltYWdlL3N2Zyt4bWwiPT09bD8ic3ZnIjpsLnNwbGl0KCIvIilbMV0pLHE9ZC5zY2FsZXx8MTt0PSIvIiE9PXQuc2xpY2UoLTEpP3QrIi8iOnQ7aWYoImltYWdlL3N2Zyt4bWwiPT09bCl0cnl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgeC5tc1NhdmVPck9wZW5CbG9iKXt2YXIgdz1uZXcgTVNCbG9iQnVpbGRlcjt3LmFwcGVuZChhKTt2YXIgcD13LmdldEJsb2IoImltYWdlL3N2Zyt4bWwiKX1lbHNlIHA9Yi5zdmdUb0RhdGFVcmwoYSk7Yi5kb3dubG9hZFVSTChwLHIpO2MmJmMoKX1jYXRjaCh5KXtmKHkpfWVsc2UgaWYoImFwcGxpY2F0aW9uL3BkZiI9PT1sKWUuanNQREYmJmUuc3ZnMnBkZj9tKCk6KGs9ITAsbih0KyJqc3BkZi5qcyIsZnVuY3Rpb24oKXtuKHQrInN2ZzJwZGYuanMiLApmdW5jdGlvbigpe20oKX0pfSkpO2Vsc2V7cD1iLnN2Z1RvRGF0YVVybChhKTt2YXIgdj1mdW5jdGlvbigpe3RyeXtELnJldm9rZU9iamVjdFVSTChwKX1jYXRjaCh5KXt9fTtiLmltYWdlVG9EYXRhVXJsKHAsbCx7fSxxLGZ1bmN0aW9uKGEpe3RyeXtiLmRvd25sb2FkVVJMKGEsciksYyYmYygpfWNhdGNoKEUpe2YoRSl9fSxmdW5jdGlvbigpe3ZhciBkPWcuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksbT1kLmdldENvbnRleHQoIjJkIiksaD1hLm1hdGNoKC9ePHN2Z1tePl0qd2lkdGhccyo9XHMqIj8oXGQrKSI/W14+XSo+LylbMV0qcSx1PWEubWF0Y2goL148c3ZnW14+XSpoZWlnaHRccyo9XHMqIj8oXGQrKSI/W14+XSo+LylbMV0qcSxwPWZ1bmN0aW9uKCl7bS5kcmF3U3ZnKGEsMCwwLGgsdSk7dHJ5e2IuZG93bmxvYWRVUkwoeC5tc1NhdmVPck9wZW5CbG9iP2QubXNUb0Jsb2IoKTpkLnRvRGF0YVVSTChsKSxyKSxjJiZjKCl9Y2F0Y2goSSl7ZihJKX1maW5hbGx5e3YoKX19O2Qud2lkdGg9Cmg7ZC5oZWlnaHQ9dTtlLmNhbnZnP3AoKTooaz0hMCxuKHQrInJnYmNvbG9yLmpzIixmdW5jdGlvbigpe24odCsiY2FudmcuanMiLGZ1bmN0aW9uKCl7cCgpfSl9KSl9LGYsZixmdW5jdGlvbigpe2smJnYoKX0pfX07YS5wcm90b3R5cGUuZ2V0U1ZHRm9yTG9jYWxFeHBvcnQ9ZnVuY3Rpb24oYSxlLGQsYyl7dmFyIGY9dGhpcyxtPTAsaCxnLGssbCxyPWZ1bmN0aW9uKCl7bT09PXcubGVuZ3RoJiZjKGYuc2FuaXRpemVTVkcoaC5pbm5lckhUTUwsZykpfSxuPWZ1bmN0aW9uKGEsYixjKXsrK207Yy5pbWFnZUVsZW1lbnQuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJocmVmIixhKTtyKCl9O2YudW5iaW5kR2V0U1ZHPXEoZiwiZ2V0U1ZHIixmdW5jdGlvbihhKXtnPWEuY2hhcnRDb3B5Lm9wdGlvbnM7aD1hLmNoYXJ0Q29weS5jb250YWluZXIuY2xvbmVOb2RlKCEwKX0pO2YuZ2V0U1ZHRm9yRXhwb3J0KGEsZSk7dmFyIHc9aC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW1hZ2UiKTsKdHJ5e2lmKCF3Lmxlbmd0aCl7YyhmLnNhbml0aXplU1ZHKGguaW5uZXJIVE1MLGcpKTtyZXR1cm59dmFyIHA9MDtmb3Ioaz13Lmxlbmd0aDtwPGs7KytwKXt2YXIgdj13W3BdOyhsPXYuZ2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJocmVmIikpP2IuaW1hZ2VUb0RhdGFVcmwobCwiaW1hZ2UvcG5nIix7aW1hZ2VFbGVtZW50OnZ9LGEuc2NhbGUsbixkLGQsZCk6KCsrbSx2LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodikscigpKX19Y2F0Y2goeSl7ZCh5KX1mLnVuYmluZEdldFNWRygpfTthLnByb3RvdHlwZS5leHBvcnRDaGFydExvY2FsPWZ1bmN0aW9uKGEsZSl7dmFyIGY9dGhpcyxjPUMoZi5vcHRpb25zLmV4cG9ydGluZyxhKSxnPWZ1bmN0aW9uKGEpeyExPT09Yy5mYWxsYmFja1RvRXhwb3J0U2VydmVyP2MuZXJyb3I/Yy5lcnJvcihjLGEpOmQoMjgsITApOmYuZXhwb3J0Q2hhcnQoYyl9O2E9ZnVuY3Rpb24oKXtyZXR1cm5bXS5zb21lLmNhbGwoZi5jb250YWluZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImltYWdlIiksCmZ1bmN0aW9uKGEpe2E9YS5nZXRBdHRyaWJ1dGUoImhyZWYiKTtyZXR1cm4iIiE9PWEmJjAhPT1hLmluZGV4T2YoImRhdGE6Iil9KX07QiYmZi5zdHlsZWRNb2RlJiYoaC5wcm90b3R5cGUuaW5saW5lV2hpdGVsaXN0PVsvXmJsb2NrU2l6ZS8sL15ib3JkZXIvLC9eY2FyZXRDb2xvci8sL15jb2xvci8sL15jb2x1bW5SdWxlLywvXmNvbHVtblJ1bGVDb2xvci8sL15jc3NGbG9hdC8sL15jdXJzb3IvLC9eZmlsbCQvLC9eZmlsbE9wYWNpdHkvLC9eZm9udC8sL15pbmxpbmVTaXplLywvXmxlbmd0aC8sL15saW5lSGVpZ2h0LywvXm9wYWNpdHkvLC9eb3V0bGluZS8sL15wYXJlbnRSdWxlLywvXnJ4JC8sL15yeSQvLC9ec3Ryb2tlLywvXnRleHRBbGlnbi8sL150ZXh0QW5jaG9yLywvXnRleHREZWNvcmF0aW9uLywvXnRyYW5zZm9ybS8sL152ZWN0b3JFZmZlY3QvLC9edmlzaWJpbGl0eS8sL154JC8sL155JC9dKTtCJiYoImFwcGxpY2F0aW9uL3BkZiI9PT1jLnR5cGV8fGYuY29udGFpbmVyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbWFnZSIpLmxlbmd0aCYmCiJpbWFnZS9zdmcreG1sIiE9PWMudHlwZSl8fCJhcHBsaWNhdGlvbi9wZGYiPT09Yy50eXBlJiZhKCk/ZygiSW1hZ2UgdHlwZSBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIGNoYXJ0L2Jyb3dzZXIuIik6Zi5nZXRTVkdGb3JMb2NhbEV4cG9ydChjLGUsZyxmdW5jdGlvbihhKXstMTxhLmluZGV4T2YoIjxmb3JlaWduT2JqZWN0IikmJiJpbWFnZS9zdmcreG1sIiE9PWMudHlwZT9nKCJJbWFnZSB0eXBlIG5vdCBzdXBwb3J0ZWRmb3IgY2hhcnRzIHdpdGggZW1iZWRkZWQgSFRNTCIpOmIuZG93bmxvYWRTVkdMb2NhbChhLEYoe2ZpbGVuYW1lOmYuZ2V0RmlsZW5hbWUoKX0sYyksZyl9KX07QyghMCxBKCkuZXhwb3J0aW5nLHtsaWJVUkw6Imh0dHBzOi8vY29kZS5oaWdoY2hhcnRzLmNvbS84LjEuMi9saWIvIixtZW51SXRlbURlZmluaXRpb25zOntkb3dubG9hZFBORzp7dGV4dEtleToiZG93bmxvYWRQTkciLG9uY2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmV4cG9ydENoYXJ0TG9jYWwoKX19LGRvd25sb2FkSlBFRzp7dGV4dEtleToiZG93bmxvYWRKUEVHIiwKb25jbGljazpmdW5jdGlvbigpe3RoaXMuZXhwb3J0Q2hhcnRMb2NhbCh7dHlwZToiaW1hZ2UvanBlZyJ9KX19LGRvd25sb2FkU1ZHOnt0ZXh0S2V5OiJkb3dubG9hZFNWRyIsb25jbGljazpmdW5jdGlvbigpe3RoaXMuZXhwb3J0Q2hhcnRMb2NhbCh7dHlwZToiaW1hZ2Uvc3ZnK3htbCJ9KX19LGRvd25sb2FkUERGOnt0ZXh0S2V5OiJkb3dubG9hZFBERiIsb25jbGljazpmdW5jdGlvbigpe3RoaXMuZXhwb3J0Q2hhcnRMb2NhbCh7dHlwZToiYXBwbGljYXRpb24vcGRmIn0pfX19fSl9KTtoKGEsIm1hc3RlcnMvbW9kdWxlcy9vZmZsaW5lLWV4cG9ydGluZy5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9b2ZmbGluZS1leHBvcnRpbmcuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDA5LTIwMTkgVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYSl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYVsiZGVmYXVsdCJdPWEsbW9kdWxlLmV4cG9ydHM9YSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvb3ZlcmxhcHBpbmctZGF0YWxhYmVscyIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oYil7YShiKTthLkhpZ2hjaGFydHM9YjtyZXR1cm4gYX0pOmEoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihhKXsoZnVuY3Rpb24oYSxjLGQsZSl7YS5oYXNPd25Qcm9wZXJ0eShjKXx8KGFbY109ZS5hcHBseShudWxsLGQpKX0pKGE/YS5fbW9kdWxlczp7fSwibWFzdGVycy9tb2R1bGVzL292ZXJsYXBwaW5nLWRhdGFsYWJlbHMuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPW92ZXJsYXBwaW5nLWRhdGFsYWJlbHMuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEV4cG9ydGluZyBtb2R1bGUKCiAoYykgMjAxMC0yMDE5IFRvcnN0ZWluIEhvbnNpCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGMpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGNbImRlZmF1bHQiXT1jLG1vZHVsZS5leHBvcnRzPWMpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2V4cG9ydGluZyIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24ocCl7YyhwKTtjLkhpZ2hjaGFydHM9cDtyZXR1cm4gY30pOmMoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihjKXtmdW5jdGlvbiBwKGMsbCxoLGspe2MuaGFzT3duUHJvcGVydHkobCl8fChjW2xdPWsuYXBwbHkobnVsbCxoKSl9Yz1jP2MuX21vZHVsZXM6e307cChjLCJtb2R1bGVzL2Z1bGwtc2NyZWVuLnNyYy5qcyIsW2NbInBhcnRzL0NoYXJ0LmpzIl0sY1sicGFydHMvR2xvYmFscy5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjLGwsaCl7dmFyIGs9aC5hZGRFdmVudDsKaD1mdW5jdGlvbigpe2Z1bmN0aW9uIGMoZSl7dGhpcy5jaGFydD1lO3RoaXMuaXNPcGVuPSExO2U9ZS5yZW5kZXJUbzt0aGlzLmJyb3dzZXJQcm9wc3x8KCJmdW5jdGlvbiI9PT10eXBlb2YgZS5yZXF1ZXN0RnVsbHNjcmVlbj90aGlzLmJyb3dzZXJQcm9wcz17ZnVsbHNjcmVlbkNoYW5nZToiZnVsbHNjcmVlbmNoYW5nZSIscmVxdWVzdEZ1bGxzY3JlZW46InJlcXVlc3RGdWxsc2NyZWVuIixleGl0RnVsbHNjcmVlbjoiZXhpdEZ1bGxzY3JlZW4ifTplLm1velJlcXVlc3RGdWxsU2NyZWVuP3RoaXMuYnJvd3NlclByb3BzPXtmdWxsc2NyZWVuQ2hhbmdlOiJtb3pmdWxsc2NyZWVuY2hhbmdlIixyZXF1ZXN0RnVsbHNjcmVlbjoibW96UmVxdWVzdEZ1bGxTY3JlZW4iLGV4aXRGdWxsc2NyZWVuOiJtb3pDYW5jZWxGdWxsU2NyZWVuIn06ZS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbj90aGlzLmJyb3dzZXJQcm9wcz17ZnVsbHNjcmVlbkNoYW5nZToid2Via2l0ZnVsbHNjcmVlbmNoYW5nZSIsCnJlcXVlc3RGdWxsc2NyZWVuOiJ3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiIsZXhpdEZ1bGxzY3JlZW46IndlYmtpdEV4aXRGdWxsc2NyZWVuIn06ZS5tc1JlcXVlc3RGdWxsc2NyZWVuJiYodGhpcy5icm93c2VyUHJvcHM9e2Z1bGxzY3JlZW5DaGFuZ2U6Ik1TRnVsbHNjcmVlbkNoYW5nZSIscmVxdWVzdEZ1bGxzY3JlZW46Im1zUmVxdWVzdEZ1bGxzY3JlZW4iLGV4aXRGdWxsc2NyZWVuOiJtc0V4aXRGdWxsc2NyZWVuIn0pKX1jLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuY2hhcnQ7aWYodGhpcy5pc09wZW4mJnRoaXMuYnJvd3NlclByb3BzJiZlLmNvbnRhaW5lci5vd25lckRvY3VtZW50IGluc3RhbmNlb2YgRG9jdW1lbnQpZS5jb250YWluZXIub3duZXJEb2N1bWVudFt0aGlzLmJyb3dzZXJQcm9wcy5leGl0RnVsbHNjcmVlbl0oKTt0aGlzLnVuYmluZEZ1bGxzY3JlZW5FdmVudCYmdGhpcy51bmJpbmRGdWxsc2NyZWVuRXZlbnQoKTt0aGlzLmlzT3Blbj0hMTsKdGhpcy5zZXRCdXR0b25UZXh0KCl9O2MucHJvdG90eXBlLm9wZW49ZnVuY3Rpb24oKXt2YXIgZT10aGlzLGM9ZS5jaGFydDtpZihlLmJyb3dzZXJQcm9wcyl7ZS51bmJpbmRGdWxsc2NyZWVuRXZlbnQ9ayhjLmNvbnRhaW5lci5vd25lckRvY3VtZW50LGUuYnJvd3NlclByb3BzLmZ1bGxzY3JlZW5DaGFuZ2UsZnVuY3Rpb24oKXtlLmlzT3Blbj8oZS5pc09wZW49ITEsZS5jbG9zZSgpKTooZS5pc09wZW49ITAsZS5zZXRCdXR0b25UZXh0KCkpfSk7dmFyIGg9Yy5yZW5kZXJUb1tlLmJyb3dzZXJQcm9wcy5yZXF1ZXN0RnVsbHNjcmVlbl0oKTtpZihoKWhbImNhdGNoIl0oZnVuY3Rpb24oKXthbGVydCgiRnVsbCBzY3JlZW4gaXMgbm90IHN1cHBvcnRlZCBpbnNpZGUgYSBmcmFtZS4iKX0pO2soYywiZGVzdHJveSIsZS51bmJpbmRGdWxsc2NyZWVuRXZlbnQpfX07Yy5wcm90b3R5cGUuc2V0QnV0dG9uVGV4dD1mdW5jdGlvbigpe3ZhciBlLGM9dGhpcy5jaGFydCxoPWMuZXhwb3J0RGl2RWxlbWVudHMsCms9Yy5vcHRpb25zLmV4cG9ydGluZyxsPW51bGw9PT0oZT1udWxsPT09a3x8dm9pZCAwPT09az92b2lkIDA6ay5idXR0b25zKXx8dm9pZCAwPT09ZT92b2lkIDA6ZS5jb250ZXh0QnV0dG9uLm1lbnVJdGVtcztlPWMub3B0aW9ucy5sYW5nOyhudWxsPT09a3x8dm9pZCAwPT09az8wOmsubWVudUl0ZW1EZWZpbml0aW9ucykmJihudWxsPT09ZXx8dm9pZCAwPT09ZT8wOmUuZXhpdEZ1bGxzY3JlZW4pJiZlLnZpZXdGdWxsc2NyZWVuJiZsJiZoJiZoLmxlbmd0aCYmKGhbbC5pbmRleE9mKCJ2aWV3RnVsbHNjcmVlbiIpXS5pbm5lckhUTUw9dGhpcy5pc09wZW4/ZS5leGl0RnVsbHNjcmVlbjprLm1lbnVJdGVtRGVmaW5pdGlvbnMudmlld0Z1bGxzY3JlZW4udGV4dHx8ZS52aWV3RnVsbHNjcmVlbil9O2MucHJvdG90eXBlLnRvZ2dsZT1mdW5jdGlvbigpe3RoaXMuaXNPcGVuP3RoaXMuY2xvc2UoKTp0aGlzLm9wZW4oKX07cmV0dXJuIGN9KCk7bC5GdWxsc2NyZWVuPWg7ayhjLCJiZWZvcmVSZW5kZXIiLApmdW5jdGlvbigpe3RoaXMuZnVsbHNjcmVlbj1uZXcgbC5GdWxsc2NyZWVuKHRoaXMpfSk7cmV0dXJuIGwuRnVsbHNjcmVlbn0pO3AoYywibWl4aW5zL25hdmlnYXRpb24uanMiLFtdLGZ1bmN0aW9uKCl7cmV0dXJue2luaXRVcGRhdGU6ZnVuY3Rpb24oYyl7Yy5uYXZpZ2F0aW9ufHwoYy5uYXZpZ2F0aW9uPXt1cGRhdGVzOltdLHVwZGF0ZTpmdW5jdGlvbihjLGgpe3RoaXMudXBkYXRlcy5mb3JFYWNoKGZ1bmN0aW9uKGspe2sudXBkYXRlLmNhbGwoay5jb250ZXh0LGMsaCl9KX19KX0sYWRkVXBkYXRlOmZ1bmN0aW9uKGMsbCl7bC5uYXZpZ2F0aW9ufHx0aGlzLmluaXRVcGRhdGUobCk7bC5uYXZpZ2F0aW9uLnVwZGF0ZXMucHVzaCh7dXBkYXRlOmMsY29udGV4dDpsfSl9fX0pO3AoYywibW9kdWxlcy9leHBvcnRpbmcuc3JjLmpzIixbY1sicGFydHMvQ2hhcnQuanMiXSxjWyJtaXhpbnMvbmF2aWdhdGlvbi5qcyJdLGNbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJwYXJ0cy9PcHRpb25zLmpzIl0sCmNbInBhcnRzL1NWR1JlbmRlcmVyLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMsbCxoLGsscCxlKXt2YXIgeD1oLmRvYyxIPWguaXNUb3VjaERldmljZSx6PWgud2luO2s9ay5kZWZhdWx0T3B0aW9uczt2YXIgdD1lLmFkZEV2ZW50LHU9ZS5jc3MseT1lLmNyZWF0ZUVsZW1lbnQsRD1lLmRpc2NhcmRFbGVtZW50LHc9ZS5leHRlbmQsST1lLmZpbmQsQj1lLmZpcmVFdmVudCxKPWUuaXNPYmplY3Qsbj1lLm1lcmdlLEU9ZS5vYmplY3RFYWNoLHE9ZS5waWNrLEs9ZS5yZW1vdmVFdmVudCxMPWUudW5pcXVlS2V5LEY9ei5uYXZpZ2F0b3IudXNlckFnZW50LEc9aC5SZW5kZXJlci5wcm90b3R5cGUuc3ltYm9scyxNPS9FZGdlXC98VHJpZGVudFwvfE1TSUUgLy50ZXN0KEYpLE49L2ZpcmVmb3gvaS50ZXN0KEYpO3coay5sYW5nLHt2aWV3RnVsbHNjcmVlbjoiVmlldyBpbiBmdWxsIHNjcmVlbiIsZXhpdEZ1bGxzY3JlZW46IkV4aXQgZnJvbSBmdWxsIHNjcmVlbiIscHJpbnRDaGFydDoiUHJpbnQgY2hhcnQiLApkb3dubG9hZFBORzoiRG93bmxvYWQgUE5HIGltYWdlIixkb3dubG9hZEpQRUc6IkRvd25sb2FkIEpQRUcgaW1hZ2UiLGRvd25sb2FkUERGOiJEb3dubG9hZCBQREYgZG9jdW1lbnQiLGRvd25sb2FkU1ZHOiJEb3dubG9hZCBTVkcgdmVjdG9yIGltYWdlIixjb250ZXh0QnV0dG9uVGl0bGU6IkNoYXJ0IGNvbnRleHQgbWVudSJ9KTtrLm5hdmlnYXRpb258fChrLm5hdmlnYXRpb249e30pO24oITAsay5uYXZpZ2F0aW9uLHtidXR0b25PcHRpb25zOnt0aGVtZTp7fSxzeW1ib2xTaXplOjE0LHN5bWJvbFg6MTIuNSxzeW1ib2xZOjEwLjUsYWxpZ246InJpZ2h0IixidXR0b25TcGFjaW5nOjMsaGVpZ2h0OjIyLHZlcnRpY2FsQWxpZ246InRvcCIsd2lkdGg6MjR9fSk7bighMCxrLm5hdmlnYXRpb24se21lbnVTdHlsZTp7Ym9yZGVyOiIxcHggc29saWQgIzk5OTk5OSIsYmFja2dyb3VuZDoiI2ZmZmZmZiIscGFkZGluZzoiNXB4IDAifSxtZW51SXRlbVN0eWxlOntwYWRkaW5nOiIwLjVlbSAxZW0iLApjb2xvcjoiIzMzMzMzMyIsYmFja2dyb3VuZDoibm9uZSIsZm9udFNpemU6SD8iMTRweCI6IjExcHgiLHRyYW5zaXRpb246ImJhY2tncm91bmQgMjUwbXMsIGNvbG9yIDI1MG1zIn0sbWVudUl0ZW1Ib3ZlclN0eWxlOntiYWNrZ3JvdW5kOiIjMzM1Y2FkIixjb2xvcjoiI2ZmZmZmZiJ9LGJ1dHRvbk9wdGlvbnM6e3N5bWJvbEZpbGw6IiM2NjY2NjYiLHN5bWJvbFN0cm9rZToiIzY2NjY2NiIsc3ltYm9sU3Ryb2tlV2lkdGg6Myx0aGVtZTp7cGFkZGluZzo1fX19KTtrLmV4cG9ydGluZz17dHlwZToiaW1hZ2UvcG5nIix1cmw6Imh0dHBzOi8vZXhwb3J0LmhpZ2hjaGFydHMuY29tLyIscHJpbnRNYXhXaWR0aDo3ODAsc2NhbGU6MixidXR0b25zOntjb250ZXh0QnV0dG9uOntjbGFzc05hbWU6ImhpZ2hjaGFydHMtY29udGV4dGJ1dHRvbiIsbWVudUNsYXNzTmFtZToiaGlnaGNoYXJ0cy1jb250ZXh0bWVudSIsc3ltYm9sOiJtZW51Iix0aXRsZUtleToiY29udGV4dEJ1dHRvblRpdGxlIixtZW51SXRlbXM6InZpZXdGdWxsc2NyZWVuIHByaW50Q2hhcnQgc2VwYXJhdG9yIGRvd25sb2FkUE5HIGRvd25sb2FkSlBFRyBkb3dubG9hZFBERiBkb3dubG9hZFNWRyIuc3BsaXQoIiAiKX19LAptZW51SXRlbURlZmluaXRpb25zOnt2aWV3RnVsbHNjcmVlbjp7dGV4dEtleToidmlld0Z1bGxzY3JlZW4iLG9uY2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmZ1bGxzY3JlZW4udG9nZ2xlKCl9fSxwcmludENoYXJ0Ont0ZXh0S2V5OiJwcmludENoYXJ0IixvbmNsaWNrOmZ1bmN0aW9uKCl7dGhpcy5wcmludCgpfX0sc2VwYXJhdG9yOntzZXBhcmF0b3I6ITB9LGRvd25sb2FkUE5HOnt0ZXh0S2V5OiJkb3dubG9hZFBORyIsb25jbGljazpmdW5jdGlvbigpe3RoaXMuZXhwb3J0Q2hhcnQoKX19LGRvd25sb2FkSlBFRzp7dGV4dEtleToiZG93bmxvYWRKUEVHIixvbmNsaWNrOmZ1bmN0aW9uKCl7dGhpcy5leHBvcnRDaGFydCh7dHlwZToiaW1hZ2UvanBlZyJ9KX19LGRvd25sb2FkUERGOnt0ZXh0S2V5OiJkb3dubG9hZFBERiIsb25jbGljazpmdW5jdGlvbigpe3RoaXMuZXhwb3J0Q2hhcnQoe3R5cGU6ImFwcGxpY2F0aW9uL3BkZiJ9KX19LGRvd25sb2FkU1ZHOnt0ZXh0S2V5OiJkb3dubG9hZFNWRyIsCm9uY2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmV4cG9ydENoYXJ0KHt0eXBlOiJpbWFnZS9zdmcreG1sIn0pfX19fTtoLnBvc3Q9ZnVuY3Rpb24oYSxiLGYpe3ZhciBkPXkoImZvcm0iLG4oe21ldGhvZDoicG9zdCIsYWN0aW9uOmEsZW5jdHlwZToibXVsdGlwYXJ0L2Zvcm0tZGF0YSJ9LGYpLHtkaXNwbGF5OiJub25lIn0seC5ib2R5KTtFKGIsZnVuY3Rpb24oYSxiKXt5KCJpbnB1dCIse3R5cGU6ImhpZGRlbiIsbmFtZTpiLHZhbHVlOmF9LG51bGwsZCl9KTtkLnN1Ym1pdCgpO0QoZCl9O2guaXNTYWZhcmkmJmgud2luLm1hdGNoTWVkaWEoInByaW50IikuYWRkTGlzdGVuZXIoZnVuY3Rpb24oYSl7aC5wcmludGluZ0NoYXJ0JiYoYS5tYXRjaGVzP2gucHJpbnRpbmdDaGFydC5iZWZvcmVQcmludCgpOmgucHJpbnRpbmdDaGFydC5hZnRlclByaW50KCkpfSk7dyhjLnByb3RvdHlwZSx7c2FuaXRpemVTVkc6ZnVuY3Rpb24oYSxiKXt2YXIgZj1hLmluZGV4T2YoIjwvc3ZnPiIpKzYsZD1hLnN1YnN0cihmKTsKYT1hLnN1YnN0cigwLGYpO2ImJmIuZXhwb3J0aW5nJiZiLmV4cG9ydGluZy5hbGxvd0hUTUwmJmQmJihkPSc8Zm9yZWlnbk9iamVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iJytiLmNoYXJ0LndpZHRoKyciIGhlaWdodD0iJytiLmNoYXJ0LmhlaWdodCsnIj48Ym9keSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+JytkKyI8L2JvZHk+PC9mb3JlaWduT2JqZWN0PiIsYT1hLnJlcGxhY2UoIjwvc3ZnPiIsZCsiPC9zdmc+IikpO2E9YS5yZXBsYWNlKC96SW5kZXg9IlteIl0rIi9nLCIiKS5yZXBsYWNlKC9zeW1ib2xOYW1lPSJbXiJdKyIvZywiIikucmVwbGFjZSgvalF1ZXJ5WzAtOV0rPSJbXiJdKyIvZywiIikucmVwbGFjZSgvdXJsXCgoInwmcXVvdDspKC4qPykoInwmcXVvdDspOz9cKS9nLCJ1cmwoJDIpIikucmVwbGFjZSgvdXJsXChbXiNdKyMvZywidXJsKCMiKS5yZXBsYWNlKC88c3ZnIC8sJzxzdmcgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiICcpLnJlcGxhY2UoLyAofE5TWzAtOV0rOilocmVmPS9nLAoiIHhsaW5rOmhyZWY9IikucmVwbGFjZSgvXG4vLCIgIikucmVwbGFjZSgvKGZpbGx8c3Ryb2tlKT0icmdiYVwoKFsgMC05XSssWyAwLTldKyxbIDAtOV0rKSwoWyAwLTlcLl0rKVwpIi9nLCckMT0icmdiKCQyKSIgJDEtb3BhY2l0eT0iJDMiJykucmVwbGFjZSgvJm5ic3A7L2csIlx1MDBhMCIpLnJlcGxhY2UoLyZzaHk7L2csIlx1MDBhZCIpO3RoaXMuaWVTYW5pdGl6ZVNWRyYmKGE9dGhpcy5pZVNhbml0aXplU1ZHKGEpKTtyZXR1cm4gYX0sZ2V0Q2hhcnRIVE1MOmZ1bmN0aW9uKCl7dGhpcy5zdHlsZWRNb2RlJiZ0aGlzLmlubGluZVN0eWxlcygpO3JldHVybiB0aGlzLmNvbnRhaW5lci5pbm5lckhUTUx9LGdldFNWRzpmdW5jdGlvbihhKXt2YXIgYixmPW4odGhpcy5vcHRpb25zLGEpO2YucGxvdE9wdGlvbnM9bih0aGlzLnVzZXJPcHRpb25zLnBsb3RPcHRpb25zLGEmJmEucGxvdE9wdGlvbnMpO2YudGltZT1uKHRoaXMudXNlck9wdGlvbnMudGltZSxhJiZhLnRpbWUpO3ZhciBkPXkoImRpdiIsCm51bGwse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOiItOTk5OWVtIix3aWR0aDp0aGlzLmNoYXJ0V2lkdGgrInB4IixoZWlnaHQ6dGhpcy5jaGFydEhlaWdodCsicHgifSx4LmJvZHkpO3ZhciBjPXRoaXMucmVuZGVyVG8uc3R5bGUud2lkdGg7dmFyIGU9dGhpcy5yZW5kZXJUby5zdHlsZS5oZWlnaHQ7Yz1mLmV4cG9ydGluZy5zb3VyY2VXaWR0aHx8Zi5jaGFydC53aWR0aHx8L3B4JC8udGVzdChjKSYmcGFyc2VJbnQoYywxMCl8fChmLmlzR2FudHQ/ODAwOjYwMCk7ZT1mLmV4cG9ydGluZy5zb3VyY2VIZWlnaHR8fGYuY2hhcnQuaGVpZ2h0fHwvcHgkLy50ZXN0KGUpJiZwYXJzZUludChlLDEwKXx8NDAwO3coZi5jaGFydCx7YW5pbWF0aW9uOiExLHJlbmRlclRvOmQsZm9yRXhwb3J0OiEwLHJlbmRlcmVyOiJTVkdSZW5kZXJlciIsd2lkdGg6YyxoZWlnaHQ6ZX0pO2YuZXhwb3J0aW5nLmVuYWJsZWQ9ITE7ZGVsZXRlIGYuZGF0YTtmLnNlcmllcz1bXTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2I9Cm4oYS51c2VyT3B0aW9ucyx7YW5pbWF0aW9uOiExLGVuYWJsZU1vdXNlVHJhY2tpbmc6ITEsc2hvd0NoZWNrYm94OiExLHZpc2libGU6YS52aXNpYmxlfSk7Yi5pc0ludGVybmFsfHxmLnNlcmllcy5wdXNoKGIpfSk7dGhpcy5heGVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS51c2VyT3B0aW9ucy5pbnRlcm5hbEtleXx8KGEudXNlck9wdGlvbnMuaW50ZXJuYWxLZXk9TCgpKX0pO3ZhciBrPW5ldyBoLkNoYXJ0KGYsdGhpcy5jYWxsYmFjayk7YSYmWyJ4QXhpcyIsInlBeGlzIiwic2VyaWVzIl0uZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgZD17fTthW2JdJiYoZFtiXT1hW2JdLGsudXBkYXRlKGQpKX0pO3RoaXMuYXhlcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPUkoay5heGVzLGZ1bmN0aW9uKGIpe3JldHVybiBiLm9wdGlvbnMuaW50ZXJuYWxLZXk9PT1hLnVzZXJPcHRpb25zLmludGVybmFsS2V5fSksZD1hLmdldEV4dHJlbWVzKCksZj1kLnVzZXJNaW47ZD1kLnVzZXJNYXg7YiYmKCJ1bmRlZmluZWQiIT09CnR5cGVvZiBmJiZmIT09Yi5taW58fCJ1bmRlZmluZWQiIT09dHlwZW9mIGQmJmQhPT1iLm1heCkmJmIuc2V0RXh0cmVtZXMoZixkLCEwLCExKX0pO2M9ay5nZXRDaGFydEhUTUwoKTtCKHRoaXMsImdldFNWRyIse2NoYXJ0Q29weTprfSk7Yz10aGlzLnNhbml0aXplU1ZHKGMsZik7Zj1udWxsO2suZGVzdHJveSgpO0QoZCk7cmV0dXJuIGN9LGdldFNWR0ZvckV4cG9ydDpmdW5jdGlvbihhLGIpe3ZhciBmPXRoaXMub3B0aW9ucy5leHBvcnRpbmc7cmV0dXJuIHRoaXMuZ2V0U1ZHKG4oe2NoYXJ0Ontib3JkZXJSYWRpdXM6MH19LGYuY2hhcnRPcHRpb25zLGIse2V4cG9ydGluZzp7c291cmNlV2lkdGg6YSYmYS5zb3VyY2VXaWR0aHx8Zi5zb3VyY2VXaWR0aCxzb3VyY2VIZWlnaHQ6YSYmYS5zb3VyY2VIZWlnaHR8fGYuc291cmNlSGVpZ2h0fX0pKX0sZ2V0RmlsZW5hbWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnVzZXJPcHRpb25zLnRpdGxlJiZ0aGlzLnVzZXJPcHRpb25zLnRpdGxlLnRleHQsCmI9dGhpcy5vcHRpb25zLmV4cG9ydGluZy5maWxlbmFtZTtpZihiKXJldHVybiBiLnJlcGxhY2UoL1wvL2csIi0iKTsic3RyaW5nIj09PXR5cGVvZiBhJiYoYj1hLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvPFwvP1tePl0rKD58JCkvZywiIikucmVwbGFjZSgvW1xzX10rL2csIi0iKS5yZXBsYWNlKC9bXmEtejAtOVwtXS9nLCIiKS5yZXBsYWNlKC9eW1wtXSsvZywiIikucmVwbGFjZSgvW1wtXSsvZywiLSIpLnN1YnN0cigwLDI0KS5yZXBsYWNlKC9bXC1dKyQvZywiIikpO2lmKCFifHw1PmIubGVuZ3RoKWI9ImNoYXJ0IjtyZXR1cm4gYn0sZXhwb3J0Q2hhcnQ6ZnVuY3Rpb24oYSxiKXtiPXRoaXMuZ2V0U1ZHRm9yRXhwb3J0KGEsYik7YT1uKHRoaXMub3B0aW9ucy5leHBvcnRpbmcsYSk7aC5wb3N0KGEudXJsLHtmaWxlbmFtZTphLmZpbGVuYW1lP2EuZmlsZW5hbWUucmVwbGFjZSgvXC8vZywiLSIpOnRoaXMuZ2V0RmlsZW5hbWUoKSx0eXBlOmEudHlwZSx3aWR0aDphLndpZHRofHwwLApzY2FsZTphLnNjYWxlLHN2ZzpifSxhLmZvcm1BdHRyaWJ1dGVzKX0sbW92ZUNvbnRhaW5lcnM6ZnVuY3Rpb24oYSl7KHRoaXMuZml4ZWREaXY/W3RoaXMuZml4ZWREaXYsdGhpcy5zY3JvbGxpbmdDb250YWluZXJdOlt0aGlzLmNvbnRhaW5lcl0pLmZvckVhY2goZnVuY3Rpb24oYil7YS5hcHBlbmRDaGlsZChiKX0pfSxiZWZvcmVQcmludDpmdW5jdGlvbigpe3ZhciBhPXguYm9keSxiPXRoaXMub3B0aW9ucy5leHBvcnRpbmcucHJpbnRNYXhXaWR0aCxmPXtjaGlsZE5vZGVzOmEuY2hpbGROb2RlcyxvcmlnRGlzcGxheTpbXSxyZXNldFBhcmFtczp2b2lkIDB9O3RoaXMuaXNQcmludGluZz0hMDt0aGlzLnBvaW50ZXIucmVzZXQobnVsbCwwKTtCKHRoaXMsImJlZm9yZVByaW50Iik7YiYmdGhpcy5jaGFydFdpZHRoPmImJihmLnJlc2V0UGFyYW1zPVt0aGlzLm9wdGlvbnMuY2hhcnQud2lkdGgsdm9pZCAwLCExXSx0aGlzLnNldFNpemUoYix2b2lkIDAsITEpKTtbXS5mb3JFYWNoLmNhbGwoZi5jaGlsZE5vZGVzLApmdW5jdGlvbihhLGIpezE9PT1hLm5vZGVUeXBlJiYoZi5vcmlnRGlzcGxheVtiXT1hLnN0eWxlLmRpc3BsYXksYS5zdHlsZS5kaXNwbGF5PSJub25lIil9KTt0aGlzLm1vdmVDb250YWluZXJzKGEpO3RoaXMucHJpbnRSZXZlcnNlSW5mbz1mfSxhZnRlclByaW50OmZ1bmN0aW9uKCl7aWYodGhpcy5wcmludFJldmVyc2VJbmZvKXt2YXIgYT10aGlzLnByaW50UmV2ZXJzZUluZm8uY2hpbGROb2RlcyxiPXRoaXMucHJpbnRSZXZlcnNlSW5mby5vcmlnRGlzcGxheSxmPXRoaXMucHJpbnRSZXZlcnNlSW5mby5yZXNldFBhcmFtczt0aGlzLm1vdmVDb250YWluZXJzKHRoaXMucmVuZGVyVG8pO1tdLmZvckVhY2guY2FsbChhLGZ1bmN0aW9uKGEsZil7MT09PWEubm9kZVR5cGUmJihhLnN0eWxlLmRpc3BsYXk9YltmXXx8IiIpfSk7dGhpcy5pc1ByaW50aW5nPSExO2YmJnRoaXMuc2V0U2l6ZS5hcHBseSh0aGlzLGYpO2RlbGV0ZSB0aGlzLnByaW50UmV2ZXJzZUluZm87ZGVsZXRlIGgucHJpbnRpbmdDaGFydDsKQih0aGlzLCJhZnRlclByaW50Iil9fSxwcmludDpmdW5jdGlvbigpe3ZhciBhPXRoaXM7YS5pc1ByaW50aW5nfHwoaC5wcmludGluZ0NoYXJ0PWEsaC5pc1NhZmFyaXx8YS5iZWZvcmVQcmludCgpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt6LmZvY3VzKCk7ei5wcmludCgpO2guaXNTYWZhcml8fHNldFRpbWVvdXQoZnVuY3Rpb24oKXthLmFmdGVyUHJpbnQoKX0sMUUzKX0sMSkpfSxjb250ZXh0TWVudTpmdW5jdGlvbihhLGIsZixkLGMsaCxrKXt2YXIgZz10aGlzLEM9Zy5vcHRpb25zLm5hdmlnYXRpb24sbD1nLmNoYXJ0V2lkdGgsQT1nLmNoYXJ0SGVpZ2h0LHI9ImNhY2hlLSIrYSxtPWdbcl0sdj1NYXRoLm1heChjLGgpO2lmKCFtKXtnLmV4cG9ydENvbnRleHRNZW51PWdbcl09bT15KCJkaXYiLHtjbGFzc05hbWU6YX0se3Bvc2l0aW9uOiJhYnNvbHV0ZSIsekluZGV4OjFFMyxwYWRkaW5nOnYrInB4Iixwb2ludGVyRXZlbnRzOiJhdXRvIn0sZy5maXhlZERpdnx8Zy5jb250YWluZXIpOwp2YXIgbj15KCJ1bCIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1tZW51In0se2xpc3RTdHlsZToibm9uZSIsbWFyZ2luOjAscGFkZGluZzowfSxtKTtnLnN0eWxlZE1vZGV8fHUobix3KHtNb3pCb3hTaGFkb3c6IjNweCAzcHggMTBweCAjODg4IixXZWJraXRCb3hTaGFkb3c6IjNweCAzcHggMTBweCAjODg4Iixib3hTaGFkb3c6IjNweCAzcHggMTBweCAjODg4In0sQy5tZW51U3R5bGUpKTttLmhpZGVNZW51PWZ1bmN0aW9uKCl7dShtLHtkaXNwbGF5OiJub25lIn0pO2smJmsuc2V0U3RhdGUoMCk7Zy5vcGVuTWVudT0hMTt1KGcucmVuZGVyVG8se292ZXJmbG93OiJoaWRkZW4ifSk7ZS5jbGVhclRpbWVvdXQobS5oaWRlVGltZXIpO0IoZywiZXhwb3J0TWVudUhpZGRlbiIpfTtnLmV4cG9ydEV2ZW50cy5wdXNoKHQobSwibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXttLmhpZGVUaW1lcj16LnNldFRpbWVvdXQobS5oaWRlTWVudSw1MDApfSksdChtLCJtb3VzZWVudGVyIixmdW5jdGlvbigpe2UuY2xlYXJUaW1lb3V0KG0uaGlkZVRpbWVyKX0pLAp0KHgsIm1vdXNldXAiLGZ1bmN0aW9uKGIpe2cucG9pbnRlci5pbkNsYXNzKGIudGFyZ2V0LGEpfHxtLmhpZGVNZW51KCl9KSx0KG0sImNsaWNrIixmdW5jdGlvbigpe2cub3Blbk1lbnUmJm0uaGlkZU1lbnUoKX0pKTtiLmZvckVhY2goZnVuY3Rpb24oYSl7InN0cmluZyI9PT10eXBlb2YgYSYmKGE9Zy5vcHRpb25zLmV4cG9ydGluZy5tZW51SXRlbURlZmluaXRpb25zW2FdKTtpZihKKGEsITApKXtpZihhLnNlcGFyYXRvcil2YXIgYj15KCJociIsbnVsbCxudWxsLG4pO2Vsc2UgYj15KCJsaSIse2NsYXNzTmFtZToiaGlnaGNoYXJ0cy1tZW51LWl0ZW0iLG9uY2xpY2s6ZnVuY3Rpb24oYil7YiYmYi5zdG9wUHJvcGFnYXRpb24oKTttLmhpZGVNZW51KCk7YS5vbmNsaWNrJiZhLm9uY2xpY2suYXBwbHkoZyxhcmd1bWVudHMpfSxpbm5lckhUTUw6YS50ZXh0fHxnLm9wdGlvbnMubGFuZ1thLnRleHRLZXldfSxudWxsLG4pLGcuc3R5bGVkTW9kZXx8KGIub25tb3VzZW92ZXI9ZnVuY3Rpb24oKXt1KHRoaXMsCkMubWVudUl0ZW1Ib3ZlclN0eWxlKX0sYi5vbm1vdXNlb3V0PWZ1bmN0aW9uKCl7dSh0aGlzLEMubWVudUl0ZW1TdHlsZSl9LHUoYix3KHtjdXJzb3I6InBvaW50ZXIifSxDLm1lbnVJdGVtU3R5bGUpKSk7Zy5leHBvcnREaXZFbGVtZW50cy5wdXNoKGIpfX0pO2cuZXhwb3J0RGl2RWxlbWVudHMucHVzaChuLG0pO2cuZXhwb3J0TWVudVdpZHRoPW0ub2Zmc2V0V2lkdGg7Zy5leHBvcnRNZW51SGVpZ2h0PW0ub2Zmc2V0SGVpZ2h0fWI9e2Rpc3BsYXk6ImJsb2NrIn07ZitnLmV4cG9ydE1lbnVXaWR0aD5sP2IucmlnaHQ9bC1mLWMtdisicHgiOmIubGVmdD1mLXYrInB4IjtkK2grZy5leHBvcnRNZW51SGVpZ2h0PkEmJiJ0b3AiIT09ay5hbGlnbk9wdGlvbnMudmVydGljYWxBbGlnbj9iLmJvdHRvbT1BLWQtdisicHgiOmIudG9wPWQraC12KyJweCI7dShtLGIpO3UoZy5yZW5kZXJUbyx7b3ZlcmZsb3c6IiJ9KTtnLm9wZW5NZW51PSEwO0IoZywiZXhwb3J0TWVudVNob3duIil9LGFkZEJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj0KdGhpcyxmPWIucmVuZGVyZXIsZD1uKGIub3B0aW9ucy5uYXZpZ2F0aW9uLmJ1dHRvbk9wdGlvbnMsYSksYz1kLm9uY2xpY2ssZT1kLm1lbnVJdGVtcyxoPWQuc3ltYm9sU2l6ZXx8MTI7Yi5idG5Db3VudHx8KGIuYnRuQ291bnQ9MCk7Yi5leHBvcnREaXZFbGVtZW50c3x8KGIuZXhwb3J0RGl2RWxlbWVudHM9W10sYi5leHBvcnRTVkdFbGVtZW50cz1bXSk7aWYoITEhPT1kLmVuYWJsZWQpe3ZhciBnPWQudGhlbWUsaz1nLnN0YXRlcyxsPWsmJmsuaG92ZXI7az1rJiZrLnNlbGVjdDt2YXIgQTtiLnN0eWxlZE1vZGV8fChnLmZpbGw9cShnLmZpbGwsIiNmZmZmZmYiKSxnLnN0cm9rZT1xKGcuc3Ryb2tlLCJub25lIikpO2RlbGV0ZSBnLnN0YXRlcztjP0E9ZnVuY3Rpb24oYSl7YSYmYS5zdG9wUHJvcGFnYXRpb24oKTtjLmNhbGwoYixhKX06ZSYmKEE9ZnVuY3Rpb24oYSl7YSYmYS5zdG9wUHJvcGFnYXRpb24oKTtiLmNvbnRleHRNZW51KHIubWVudUNsYXNzTmFtZSxlLHIudHJhbnNsYXRlWCwKci50cmFuc2xhdGVZLHIud2lkdGgsci5oZWlnaHQscik7ci5zZXRTdGF0ZSgyKX0pO2QudGV4dCYmZC5zeW1ib2w/Zy5wYWRkaW5nTGVmdD1xKGcucGFkZGluZ0xlZnQsMjUpOmQudGV4dHx8dyhnLHt3aWR0aDpkLndpZHRoLGhlaWdodDpkLmhlaWdodCxwYWRkaW5nOjB9KTtiLnN0eWxlZE1vZGV8fChnWyJzdHJva2UtbGluZWNhcCJdPSJyb3VuZCIsZy5maWxsPXEoZy5maWxsLCIjZmZmZmZmIiksZy5zdHJva2U9cShnLnN0cm9rZSwibm9uZSIpKTt2YXIgcj1mLmJ1dHRvbihkLnRleHQsMCwwLEEsZyxsLGspLmFkZENsYXNzKGEuY2xhc3NOYW1lKS5hdHRyKHt0aXRsZTpxKGIub3B0aW9ucy5sYW5nW2QuX3RpdGxlS2V5fHxkLnRpdGxlS2V5XSwiIil9KTtyLm1lbnVDbGFzc05hbWU9YS5tZW51Q2xhc3NOYW1lfHwiaGlnaGNoYXJ0cy1tZW51LSIrYi5idG5Db3VudCsrO2lmKGQuc3ltYm9sKXt2YXIgbT1mLnN5bWJvbChkLnN5bWJvbCxkLnN5bWJvbFgtaC8yLGQuc3ltYm9sWS1oLzIsCmgsaCx7d2lkdGg6aCxoZWlnaHQ6aH0pLmFkZENsYXNzKCJoaWdoY2hhcnRzLWJ1dHRvbi1zeW1ib2wiKS5hdHRyKHt6SW5kZXg6MX0pLmFkZChyKTtiLnN0eWxlZE1vZGV8fG0uYXR0cih7c3Ryb2tlOmQuc3ltYm9sU3Ryb2tlLGZpbGw6ZC5zeW1ib2xGaWxsLCJzdHJva2Utd2lkdGgiOmQuc3ltYm9sU3Ryb2tlV2lkdGh8fDF9KX1yLmFkZChiLmV4cG9ydGluZ0dyb3VwKS5hbGlnbih3KGQse3dpZHRoOnIud2lkdGgseDpxKGQueCxiLmJ1dHRvbk9mZnNldCl9KSwhMCwic3BhY2luZ0JveCIpO2IuYnV0dG9uT2Zmc2V0Kz0oci53aWR0aCtkLmJ1dHRvblNwYWNpbmcpKigicmlnaHQiPT09ZC5hbGlnbj8tMToxKTtiLmV4cG9ydFNWR0VsZW1lbnRzLnB1c2gocixtKX19LGRlc3Ryb3lFeHBvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YT9hLnRhcmdldDp0aGlzO2E9Yi5leHBvcnRTVkdFbGVtZW50czt2YXIgZj1iLmV4cG9ydERpdkVsZW1lbnRzLGQ9Yi5leHBvcnRFdmVudHMsYzthJiYoYS5mb3JFYWNoKGZ1bmN0aW9uKGEsCmQpe2EmJihhLm9uY2xpY2s9YS5vbnRvdWNoc3RhcnQ9bnVsbCxjPSJjYWNoZS0iK2EubWVudUNsYXNzTmFtZSxiW2NdJiZkZWxldGUgYltjXSxiLmV4cG9ydFNWR0VsZW1lbnRzW2RdPWEuZGVzdHJveSgpKX0pLGEubGVuZ3RoPTApO2IuZXhwb3J0aW5nR3JvdXAmJihiLmV4cG9ydGluZ0dyb3VwLmRlc3Ryb3koKSxkZWxldGUgYi5leHBvcnRpbmdHcm91cCk7ZiYmKGYuZm9yRWFjaChmdW5jdGlvbihhLGQpe2UuY2xlYXJUaW1lb3V0KGEuaGlkZVRpbWVyKTtLKGEsIm1vdXNlbGVhdmUiKTtiLmV4cG9ydERpdkVsZW1lbnRzW2RdPWEub25tb3VzZW91dD1hLm9ubW91c2VvdmVyPWEub250b3VjaHN0YXJ0PWEub25jbGljaz1udWxsO0QoYSl9KSxmLmxlbmd0aD0wKTtkJiYoZC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EoKX0pLGQubGVuZ3RoPTApfX0pO3AucHJvdG90eXBlLmlubGluZVRvQXR0cmlidXRlcz0iZmlsbCBzdHJva2Ugc3Ryb2tlTGluZWNhcCBzdHJva2VMaW5lam9pbiBzdHJva2VXaWR0aCB0ZXh0QW5jaG9yIHggeSIuc3BsaXQoIiAiKTsKcC5wcm90b3R5cGUuaW5saW5lQmxhY2tsaXN0PVsvLS8sL14oY2xpcFBhdGh8Y3NzVGV4dHxkfGhlaWdodHx3aWR0aCkkLywvXmZvbnQkLywvW2xMXW9naWNhbChXaWR0aHxIZWlnaHQpJC8sL3BlcnNwZWN0aXZlLywvVGFwSGlnaGxpZ2h0Q29sb3IvLC9edHJhbnNpdGlvbi8sL15sZW5ndGgkL107cC5wcm90b3R5cGUudW5zdHlsZWRFbGVtZW50cz1bImNsaXBQYXRoIiwiZGVmcyIsImRlc2MiXTtjLnByb3RvdHlwZS5pbmxpbmVTdHlsZXM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3JldHVybiBhLnJlcGxhY2UoLyhbQS1aXSkvZyxmdW5jdGlvbihhLGIpe3JldHVybiItIitiLnRvTG93ZXJDYXNlKCl9KX1mdW5jdGlvbiBiKGMpe2Z1bmN0aW9uIGYoYixmKXt2PXU9ITE7aWYoaCl7Zm9yKHE9aC5sZW5ndGg7cS0tJiYhdTspdT1oW3FdLnRlc3QoZik7dj0hdX0idHJhbnNmb3JtIj09PWYmJiJub25lIj09PWImJih2PSEwKTtmb3IocT1lLmxlbmd0aDtxLS0mJiF2Oyl2PWVbcV0udGVzdChmKXx8CiJmdW5jdGlvbiI9PT10eXBlb2YgYjt2fHx5W2ZdPT09YiYmInN2ZyIhPT1jLm5vZGVOYW1lfHxnW2Mubm9kZU5hbWVdW2ZdPT09Ynx8KGQmJi0xPT09ZC5pbmRleE9mKGYpP20rPWEoZikrIjoiK2IrIjsiOmImJmMuc2V0QXR0cmlidXRlKGEoZiksYikpfXZhciBtPSIiLHYsdSxxO2lmKDE9PT1jLm5vZGVUeXBlJiYtMT09PWsuaW5kZXhPZihjLm5vZGVOYW1lKSl7dmFyIHQ9ei5nZXRDb21wdXRlZFN0eWxlKGMsbnVsbCk7dmFyIHk9InN2ZyI9PT1jLm5vZGVOYW1lP3t9OnouZ2V0Q29tcHV0ZWRTdHlsZShjLnBhcmVudE5vZGUsbnVsbCk7aWYoIWdbYy5ub2RlTmFtZV0pe2w9cC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3ZnIilbMF07dmFyIHc9cC5jcmVhdGVFbGVtZW50TlMoYy5uYW1lc3BhY2VVUkksYy5ub2RlTmFtZSk7bC5hcHBlbmRDaGlsZCh3KTtnW2Mubm9kZU5hbWVdPW4oei5nZXRDb21wdXRlZFN0eWxlKHcsbnVsbCkpOyJ0ZXh0Ij09PWMubm9kZU5hbWUmJmRlbGV0ZSBnLnRleHQuZmlsbDsKbC5yZW1vdmVDaGlsZCh3KX1pZihOfHxNKWZvcih2YXIgeCBpbiB0KWYodFt4XSx4KTtlbHNlIEUodCxmKTttJiYodD1jLmdldEF0dHJpYnV0ZSgic3R5bGUiKSxjLnNldEF0dHJpYnV0ZSgic3R5bGUiLCh0P3QrIjsiOiIiKSttKSk7InN2ZyI9PT1jLm5vZGVOYW1lJiZjLnNldEF0dHJpYnV0ZSgic3Ryb2tlLXdpZHRoIiwiMXB4Iik7InRleHQiIT09Yy5ub2RlTmFtZSYmW10uZm9yRWFjaC5jYWxsKGMuY2hpbGRyZW58fGMuY2hpbGROb2RlcyxiKX19dmFyIGM9dGhpcy5yZW5kZXJlcixkPWMuaW5saW5lVG9BdHRyaWJ1dGVzLGU9Yy5pbmxpbmVCbGFja2xpc3QsaD1jLmlubGluZVdoaXRlbGlzdCxrPWMudW5zdHlsZWRFbGVtZW50cyxnPXt9LGw7Yz14LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO3UoYyx7d2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6ImhpZGRlbiJ9KTt4LmJvZHkuYXBwZW5kQ2hpbGQoYyk7dmFyIHA9Yy5jb250ZW50V2luZG93LmRvY3VtZW50O3Aub3BlbigpOwpwLndyaXRlKCc8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PC9zdmc+Jyk7cC5jbG9zZSgpO2IodGhpcy5jb250YWluZXIucXVlcnlTZWxlY3Rvcigic3ZnIikpO2wucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChsKX07Ry5tZW51PWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybltbIk0iLGEsYisyLjVdLFsiTCIsYStjLGIrMi41XSxbIk0iLGEsYitkLzIrLjVdLFsiTCIsYStjLGIrZC8yKy41XSxbIk0iLGEsYitkLTEuNV0sWyJMIixhK2MsYitkLTEuNV1dfTtHLm1lbnViYWxsPWZ1bmN0aW9uKGEsYixjLGQpe2E9W107ZD1kLzMtMjtyZXR1cm4gYT1hLmNvbmNhdCh0aGlzLmNpcmNsZShjLWQsYixkLGQpLHRoaXMuY2lyY2xlKGMtZCxiK2QrNCxkLGQpLHRoaXMuY2lyY2xlKGMtZCxiKzIqKGQrNCksZCxkKSl9O2MucHJvdG90eXBlLnJlbmRlckV4cG9ydGluZz1mdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1hLm9wdGlvbnMuZXhwb3J0aW5nLGM9Yi5idXR0b25zLGQ9YS5pc0RpcnR5RXhwb3J0aW5nfHwKIWEuZXhwb3J0U1ZHRWxlbWVudHM7YS5idXR0b25PZmZzZXQ9MDthLmlzRGlydHlFeHBvcnRpbmcmJmEuZGVzdHJveUV4cG9ydCgpO2QmJiExIT09Yi5lbmFibGVkJiYoYS5leHBvcnRFdmVudHM9W10sYS5leHBvcnRpbmdHcm91cD1hLmV4cG9ydGluZ0dyb3VwfHxhLnJlbmRlcmVyLmcoImV4cG9ydGluZy1ncm91cCIpLmF0dHIoe3pJbmRleDozfSkuYWRkKCksRShjLGZ1bmN0aW9uKGIpe2EuYWRkQnV0dG9uKGIpfSksYS5pc0RpcnR5RXhwb3J0aW5nPSExKTt0KGEsImRlc3Ryb3kiLGEuZGVzdHJveUV4cG9ydCl9O3QoYywiaW5pdCIsZnVuY3Rpb24oKXt2YXIgYT10aGlzO2EuZXhwb3J0aW5nPXt1cGRhdGU6ZnVuY3Rpb24oYixjKXthLmlzRGlydHlFeHBvcnRpbmc9ITA7bighMCxhLm9wdGlvbnMuZXhwb3J0aW5nLGIpO3EoYywhMCkmJmEucmVkcmF3KCl9fTtsLmFkZFVwZGF0ZShmdW5jdGlvbihiLGMpe2EuaXNEaXJ0eUV4cG9ydGluZz0hMDtuKCEwLGEub3B0aW9ucy5uYXZpZ2F0aW9uLApiKTtxKGMsITApJiZhLnJlZHJhdygpfSxhKX0pO2MucHJvdG90eXBlLmNhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uKGEpe2EucmVuZGVyRXhwb3J0aW5nKCk7dChhLCJyZWRyYXciLGEucmVuZGVyRXhwb3J0aW5nKX0pfSk7cChjLCJtYXN0ZXJzL21vZHVsZXMvZXhwb3J0aW5nLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1leHBvcnRpbmcuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEV4cG9ydGluZyBtb2R1bGUKCiAoYykgMjAxMC0yMDE5IFRvcnN0ZWluIEhvbnNpCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGEpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGFbImRlZmF1bHQiXT1hLG1vZHVsZS5leHBvcnRzPWEpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2V4cG9ydC1kYXRhIixbImhpZ2hjaGFydHMiLCJoaWdoY2hhcnRzL21vZHVsZXMvZXhwb3J0aW5nIl0sZnVuY3Rpb24oZSl7YShlKTthLkhpZ2hjaGFydHM9ZTtyZXR1cm4gYX0pOmEoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihhKXtmdW5jdGlvbiBlKGEsYixmLGQpe2EuaGFzT3duUHJvcGVydHkoYil8fChhW2JdPWQuYXBwbHkobnVsbCxmKSl9YT1hP2EuX21vZHVsZXM6e307ZShhLCJtaXhpbnMvYWpheC5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxiKXt2YXIgZj1iLm1lcmdlLApkPWIub2JqZWN0RWFjaDthLmFqYXg9ZnVuY3Rpb24oYil7dmFyIGE9ZighMCx7dXJsOiExLHR5cGU6ImdldCIsZGF0YVR5cGU6Impzb24iLHN1Y2Nlc3M6ITEsZXJyb3I6ITEsZGF0YTohMSxoZWFkZXJzOnt9fSxiKTtiPXtqc29uOiJhcHBsaWNhdGlvbi9qc29uIix4bWw6ImFwcGxpY2F0aW9uL3htbCIsdGV4dDoidGV4dC9wbGFpbiIsb2N0ZXQ6ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSJ9O3ZhciBjPW5ldyBYTUxIdHRwUmVxdWVzdDtpZighYS51cmwpcmV0dXJuITE7Yy5vcGVuKGEudHlwZS50b1VwcGVyQ2FzZSgpLGEudXJsLCEwKTthLmhlYWRlcnNbIkNvbnRlbnQtVHlwZSJdfHxjLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsYlthLmRhdGFUeXBlXXx8Yi50ZXh0KTtkKGEuaGVhZGVycyxmdW5jdGlvbihhLGIpe2Muc2V0UmVxdWVzdEhlYWRlcihiLGEpfSk7Yy5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXtpZig0PT09Yy5yZWFkeVN0YXRlKXtpZigyMDA9PT0KYy5zdGF0dXMpe3ZhciBiPWMucmVzcG9uc2VUZXh0O2lmKCJqc29uIj09PWEuZGF0YVR5cGUpdHJ5e2I9SlNPTi5wYXJzZShiKX1jYXRjaCh2KXthLmVycm9yJiZhLmVycm9yKGMsdik7cmV0dXJufXJldHVybiBhLnN1Y2Nlc3MmJmEuc3VjY2VzcyhiKX1hLmVycm9yJiZhLmVycm9yKGMsYy5yZXNwb25zZVRleHQpfX07dHJ5e2EuZGF0YT1KU09OLnN0cmluZ2lmeShhLmRhdGEpfWNhdGNoKHApe31jLnNlbmQoYS5kYXRhfHwhMCl9O2EuZ2V0SlNPTj1mdW5jdGlvbihiLGQpe2EuYWpheCh7dXJsOmIsc3VjY2VzczpkLGRhdGFUeXBlOiJqc29uIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoidGV4dC9wbGFpbiJ9fSl9fSk7ZShhLCJtaXhpbnMvZG93bmxvYWQtdXJsLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdXSxmdW5jdGlvbihhKXt2YXIgYj1hLndpbixmPWIubmF2aWdhdG9yLGQ9Yi5kb2N1bWVudCxlPWIuVVJMfHxiLndlYmtpdFVSTHx8Yix1PS9FZGdlXC9cZCsvLnRlc3QoZi51c2VyQWdlbnQpOwphLmRhdGFVUkx0b0Jsb2I9ZnVuY3Rpb24oYSl7aWYoKGE9YS5tYXRjaCgvZGF0YTooW147XSopKDtiYXNlNjQpPywoWzAtOUEtWmEteisvXSspLykpJiYzPGEubGVuZ3RoJiZiLmF0b2ImJmIuQXJyYXlCdWZmZXImJmIuVWludDhBcnJheSYmYi5CbG9iJiZlLmNyZWF0ZU9iamVjdFVSTCl7dmFyIGM9Yi5hdG9iKGFbM10pLGQ9bmV3IGIuQXJyYXlCdWZmZXIoYy5sZW5ndGgpO2Q9bmV3IGIuVWludDhBcnJheShkKTtmb3IodmFyIGY9MDtmPGQubGVuZ3RoOysrZilkW2ZdPWMuY2hhckNvZGVBdChmKTthPW5ldyBiLkJsb2IoW2RdLHt0eXBlOmFbMV19KTtyZXR1cm4gZS5jcmVhdGVPYmplY3RVUkwoYSl9fTthLmRvd25sb2FkVVJMPWZ1bmN0aW9uKGMscCl7dmFyIGU9ZC5jcmVhdGVFbGVtZW50KCJhIik7aWYoInN0cmluZyI9PT10eXBlb2YgY3x8YyBpbnN0YW5jZW9mIFN0cmluZ3x8IWYubXNTYXZlT3JPcGVuQmxvYil7aWYodXx8MkU2PGMubGVuZ3RoKWlmKGM9YS5kYXRhVVJMdG9CbG9iKGMpLAohYyl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGNvbnZlcnQgdG8gYmxvYiIpO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGUuZG93bmxvYWQpZS5ocmVmPWMsZS5kb3dubG9hZD1wLGQuYm9keS5hcHBlbmRDaGlsZChlKSxlLmNsaWNrKCksZC5ib2R5LnJlbW92ZUNoaWxkKGUpO2Vsc2UgdHJ5e3ZhciBCPWIub3BlbihjLCJjaGFydCIpO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIEJ8fG51bGw9PT1CKXRocm93IEVycm9yKCJGYWlsZWQgdG8gb3BlbiB3aW5kb3ciKTt9Y2F0Y2goRSl7Yi5sb2NhdGlvbi5ocmVmPWN9fWVsc2UgZi5tc1NhdmVPck9wZW5CbG9iKGMscCl9fSk7ZShhLCJtb2R1bGVzL2V4cG9ydC1kYXRhLnNyYy5qcyIsW2FbInBhcnRzL0F4aXMuanMiXSxhWyJwYXJ0cy9DaGFydC5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxiLGUsZCl7ZnVuY3Rpb24gZihhLGIpe3ZhciBjPXAubmF2aWdhdG9yLGQ9LTE8Yy51c2VyQWdlbnQuaW5kZXhPZigiV2ViS2l0IikmJgowPmMudXNlckFnZW50LmluZGV4T2YoIkNocm9tZSIpLGc9cC5VUkx8fHAud2Via2l0VVJMfHxwO3RyeXtpZihjLm1zU2F2ZU9yT3BlbkJsb2ImJnAuTVNCbG9iQnVpbGRlcil7dmFyIGU9bmV3IHAuTVNCbG9iQnVpbGRlcjtlLmFwcGVuZChhKTtyZXR1cm4gZS5nZXRCbG9iKCJpbWFnZS9zdmcreG1sIil9aWYoIWQpcmV0dXJuIGcuY3JlYXRlT2JqZWN0VVJMKG5ldyBwLkJsb2IoWyJcdWZlZmYiK2FdLHt0eXBlOmJ9KSl9Y2F0Y2goTSl7fX12YXIgdT1lLmRvYyxjPWUuc2VyaWVzVHlwZXMscD1lLndpbix2PWQuYWRkRXZlbnQsQj1kLmRlZmluZWQsRT1kLmV4dGVuZCxKPWQuZmluZCxEPWQuZmlyZUV2ZW50LEs9ZC5nZXRPcHRpb25zLEw9ZC5pc051bWJlcix3PWQucGljaztkPWQuc2V0T3B0aW9uczt2YXIgRj1lLmRvd25sb2FkVVJMO2Qoe2V4cG9ydGluZzp7Y3N2Ontjb2x1bW5IZWFkZXJGb3JtYXR0ZXI6bnVsbCxkYXRlRm9ybWF0OiIlWS0lbS0lZCAlSDolTTolUyIsZGVjaW1hbFBvaW50Om51bGwsCml0ZW1EZWxpbWl0ZXI6bnVsbCxsaW5lRGVsaW1pdGVyOiJcbiJ9LHNob3dUYWJsZTohMSx1c2VNdWx0aUxldmVsSGVhZGVyczohMCx1c2VSb3dzcGFuSGVhZGVyczohMH0sbGFuZzp7ZG93bmxvYWRDU1Y6IkRvd25sb2FkIENTViIsZG93bmxvYWRYTFM6IkRvd25sb2FkIFhMUyIsZXhwb3J0RGF0YTp7Y2F0ZWdvcnlIZWFkZXI6IkNhdGVnb3J5IixjYXRlZ29yeURhdGV0aW1lSGVhZGVyOiJEYXRlVGltZSJ9LHZpZXdEYXRhOiJWaWV3IGRhdGEgdGFibGUifX0pO3YoYiwicmVuZGVyIixmdW5jdGlvbigpe3RoaXMub3B0aW9ucyYmdGhpcy5vcHRpb25zLmV4cG9ydGluZyYmdGhpcy5vcHRpb25zLmV4cG9ydGluZy5zaG93VGFibGUmJiF0aGlzLm9wdGlvbnMuY2hhcnQuZm9yRXhwb3J0JiZ0aGlzLnZpZXdEYXRhKCl9KTtiLnByb3RvdHlwZS5zZXRVcEtleVRvQXhpcz1mdW5jdGlvbigpe2MuYXJlYXJhbmdlJiYoYy5hcmVhcmFuZ2UucHJvdG90eXBlLmtleVRvQXhpcz17bG93OiJ5IixoaWdoOiJ5In0pOwpjLmdhbnR0JiYoYy5nYW50dC5wcm90b3R5cGUua2V5VG9BeGlzPXtzdGFydDoieCIsZW5kOiJ4In0pfTtiLnByb3RvdHlwZS5nZXREYXRhUm93cz1mdW5jdGlvbihiKXt2YXIgYz10aGlzLmhhc1BhcmFsbGVsQ29vcmRpbmF0ZXMsZD10aGlzLnRpbWUsZT10aGlzLm9wdGlvbnMuZXhwb3J0aW5nJiZ0aGlzLm9wdGlvbnMuZXhwb3J0aW5nLmNzdnx8e30sZz10aGlzLnhBeGlzLHE9e30sZj1bXSxwPVtdLHQ9W10sbTt2YXIgaz10aGlzLm9wdGlvbnMubGFuZy5leHBvcnREYXRhO3ZhciB6PWsuY2F0ZWdvcnlIZWFkZXIseD1rLmNhdGVnb3J5RGF0ZXRpbWVIZWFkZXIsRz1mdW5jdGlvbihuLGMsZCl7aWYoZS5jb2x1bW5IZWFkZXJGb3JtYXR0ZXIpe3ZhciBnPWUuY29sdW1uSGVhZGVyRm9ybWF0dGVyKG4sYyxkKTtpZighMSE9PWcpcmV0dXJuIGd9cmV0dXJuIG4/biBpbnN0YW5jZW9mIGE/bi5vcHRpb25zLnRpdGxlJiZuLm9wdGlvbnMudGl0bGUudGV4dHx8KG4uZGF0ZVRpbWU/eDp6KToKYj97Y29sdW1uVGl0bGU6MTxkP2M6bi5uYW1lLHRvcExldmVsQ29sdW1uVGl0bGU6bi5uYW1lfTpuLm5hbWUrKDE8ZD8iICgiK2MrIikiOiIiKTp6fSxIPWZ1bmN0aW9uKGEsYixjKXt2YXIgbj17fSxkPXt9O2IuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgZT0oYS5rZXlUb0F4aXMmJmEua2V5VG9BeGlzW2JdfHxiKSsiQXhpcyI7ZT1MKGMpP2EuY2hhcnRbZV1bY106YVtlXTtuW2JdPWUmJmUuY2F0ZWdvcmllc3x8W107ZFtiXT1lJiZlLmRhdGVUaW1lfSk7cmV0dXJue2NhdGVnb3J5TWFwOm4sZGF0ZVRpbWVWYWx1ZUF4aXNNYXA6ZH19LHI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5kYXRhLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYS5uYW1lfSkubGVuZ3RoJiZiJiYhYi5jYXRlZ29yaWVzJiYhYS5rZXlUb0F4aXM/YS5wb2ludEFycmF5TWFwJiZhLnBvaW50QXJyYXlNYXAuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiJ4Ij09PWF9KS5sZW5ndGg/KGEucG9pbnRBcnJheU1hcC51bnNoaWZ0KCJ4IiksCmEucG9pbnRBcnJheU1hcCk6WyJ4IiwieSJdOmEucG9pbnRBcnJheU1hcHx8WyJ5Il19LGg9W107dmFyIHk9MDt0aGlzLnNldFVwS2V5VG9BeGlzKCk7dGhpcy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgeD1hLnhBeGlzLG49YS5vcHRpb25zLmtleXN8fHIoYSx4KSxmPW4ubGVuZ3RoLGw9IWEucmVxdWlyZVNvcnRpbmcmJnt9LHo9Zy5pbmRleE9mKHgpLEM9SChhLG4pLGs7aWYoITEhPT1hLm9wdGlvbnMuaW5jbHVkZUluRGF0YUV4cG9ydCYmIWEub3B0aW9ucy5pc0ludGVybmFsJiYhMSE9PWEudmlzaWJsZSl7SihoLGZ1bmN0aW9uKGEpe3JldHVybiBhWzBdPT09en0pfHxoLnB1c2goW3oseV0pO2ZvcihrPTA7azxmOyltPUcoYSxuW2tdLG4ubGVuZ3RoKSx0LnB1c2gobS5jb2x1bW5UaXRsZXx8bSksYiYmcC5wdXNoKG0udG9wTGV2ZWxDb2x1bW5UaXRsZXx8bSksaysrO3ZhciBJPXtjaGFydDphLmNoYXJ0LGF1dG9JbmNyZW1lbnQ6YS5hdXRvSW5jcmVtZW50LG9wdGlvbnM6YS5vcHRpb25zLApwb2ludEFycmF5TWFwOmEucG9pbnRBcnJheU1hcH07YS5vcHRpb25zLmRhdGEuZm9yRWFjaChmdW5jdGlvbihiLGcpe2MmJihDPUgoYSxuLGcpKTt2YXIgaD17c2VyaWVzOkl9O2EucG9pbnRDbGFzcy5wcm90b3R5cGUuYXBwbHlPcHRpb25zLmFwcGx5KGgsW2JdKTtiPWgueDt2YXIgcj1hLmRhdGFbZ10mJmEuZGF0YVtnXS5uYW1lO2s9MDtpZigheHx8Im5hbWUiPT09YS5leHBvcnRLZXl8fCFjJiZ4JiZ4Lmhhc05hbWVzJiZyKWI9cjtsJiYobFtiXSYmKGIrPSJ8IitnKSxsW2JdPSEwKTtxW2JdfHwocVtiXT1bXSxxW2JdLnhWYWx1ZXM9W10pO3FbYl0ueD1oLng7cVtiXS5uYW1lPXI7Zm9yKHFbYl0ueFZhbHVlc1t6XT1oLng7azxmOylnPW5ba10scj1oW2ddLHFbYl1beStrXT13KEMuY2F0ZWdvcnlNYXBbZ11bcl0sQy5kYXRlVGltZVZhbHVlQXhpc01hcFtnXT9kLmRhdGVGb3JtYXQoZS5kYXRlRm9ybWF0LHIpOm51bGwsciksaysrfSk7eSs9a319KTtmb3IobCBpbiBxKU9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHEsCmwpJiZmLnB1c2gocVtsXSk7dmFyIGw9Yj9bcCx0XTpbdF07Zm9yKHk9aC5sZW5ndGg7eS0tOyl7dmFyIHU9aFt5XVswXTt2YXIgdj1oW3ldWzFdO3ZhciBBPWdbdV07Zi5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEueFZhbHVlc1t1XS1iLnhWYWx1ZXNbdV19KTtrPUcoQSk7bFswXS5zcGxpY2UodiwwLGspO2ImJmxbMV0mJmxbMV0uc3BsaWNlKHYsMCxrKTtmLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5uYW1lO0EmJiFCKGIpJiYoQS5kYXRlVGltZT8oYS54IGluc3RhbmNlb2YgRGF0ZSYmKGEueD1hLnguZ2V0VGltZSgpKSxiPWQuZGF0ZUZvcm1hdChlLmRhdGVGb3JtYXQsYS54KSk6Yj1BLmNhdGVnb3JpZXM/dyhBLm5hbWVzW2EueF0sQS5jYXRlZ29yaWVzW2EueF0sYS54KTphLngpO2Euc3BsaWNlKHYsMCxiKX0pfWw9bC5jb25jYXQoZik7RCh0aGlzLCJleHBvcnREYXRhIix7ZGF0YVJvd3M6bH0pO3JldHVybiBsfTtiLnByb3RvdHlwZS5nZXRDU1Y9ZnVuY3Rpb24oYSl7dmFyIGI9CiIiLGM9dGhpcy5nZXREYXRhUm93cygpLGQ9dGhpcy5vcHRpb25zLmV4cG9ydGluZy5jc3YsZT13KGQuZGVjaW1hbFBvaW50LCIsIiE9PWQuaXRlbURlbGltaXRlciYmYT8oMS4xKS50b0xvY2FsZVN0cmluZygpWzFdOiIuIiksZz13KGQuaXRlbURlbGltaXRlciwiLCI9PT1lPyI7IjoiLCIpLGY9ZC5saW5lRGVsaW1pdGVyO2MuZm9yRWFjaChmdW5jdGlvbihhLGQpe2Zvcih2YXIgbSxrPWEubGVuZ3RoO2stLTspbT1hW2tdLCJzdHJpbmciPT09dHlwZW9mIG0mJihtPSciJyttKyciJyksIm51bWJlciI9PT10eXBlb2YgbSYmIi4iIT09ZSYmKG09bS50b1N0cmluZygpLnJlcGxhY2UoIi4iLGUpKSxhW2tdPW07Yis9YS5qb2luKGcpO2Q8Yy5sZW5ndGgtMSYmKGIrPWYpfSk7cmV0dXJuIGJ9O2IucHJvdG90eXBlLmdldFRhYmxlPWZ1bmN0aW9uKGEpe3ZhciBiPSc8dGFibGUgaWQ9ImhpZ2hjaGFydHMtZGF0YS10YWJsZS0nK3RoaXMuaW5kZXgrJyI+JyxjPXRoaXMub3B0aW9ucyxkPWE/KDEuMSkudG9Mb2NhbGVTdHJpbmcoKVsxXToKIi4iLGU9dyhjLmV4cG9ydGluZy51c2VNdWx0aUxldmVsSGVhZGVycywhMCk7YT10aGlzLmdldERhdGFSb3dzKGUpO3ZhciBmPTAsZz1lP2Euc2hpZnQoKTpudWxsLHA9YS5zaGlmdCgpLHQ9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGY9dyhlLCIiKTtiPSJ0ZXh0IisoYj8iICIrYjoiIik7Im51bWJlciI9PT10eXBlb2YgZj8oZj1mLnRvU3RyaW5nKCksIiwiPT09ZCYmKGY9Zi5yZXBsYWNlKCIuIixkKSksYj0ibnVtYmVyIik6ZXx8KGI9ImVtcHR5Iik7cmV0dXJuIjwiK2ErKGM/IiAiK2M6IiIpKycgY2xhc3M9IicrYisnIj4nK2YrIjwvIithKyI+In07ITEhPT1jLmV4cG9ydGluZy50YWJsZUNhcHRpb24mJihiKz0nPGNhcHRpb24gY2xhc3M9ImhpZ2hjaGFydHMtdGFibGUtY2FwdGlvbiI+Jyt3KGMuZXhwb3J0aW5nLnRhYmxlQ2FwdGlvbixjLnRpdGxlLnRleHQ/Yy50aXRsZS50ZXh0LnJlcGxhY2UoLyYvZywiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csCiImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC8nL2csIiYjeDI3OyIpLnJlcGxhY2UoL1wvL2csIiYjeDJGOyIpOiJDaGFydCIpKyI8L2NhcHRpb24+Iik7Zm9yKHZhciBtPTAsaz1hLmxlbmd0aDttPGs7KyttKWFbbV0ubGVuZ3RoPmYmJihmPWFbbV0ubGVuZ3RoKTtiKz1mdW5jdGlvbihhLGIsZCl7dmFyIGY9Ijx0aGVhZD4iLGc9MDtkPWR8fGImJmIubGVuZ3RoO3ZhciBoLGs9MDtpZihoPWUmJmEmJmIpe2E6aWYoaD1hLmxlbmd0aCxiLmxlbmd0aD09PWgpe2Zvcig7aC0tOylpZihhW2hdIT09YltoXSl7aD0hMTticmVhayBhfWg9ITB9ZWxzZSBoPSExO2g9IWh9aWYoaCl7Zm9yKGYrPSI8dHI+IjtnPGQ7KytnKXtoPWFbZ107dmFyIGw9YVtnKzFdO2g9PT1sPysrazprPyhmKz10KCJ0aCIsImhpZ2hjaGFydHMtdGFibGUtdG9waGVhZGluZyIsJ3Njb3BlPSJjb2wiIGNvbHNwYW49IicrKGsrMSkrJyInLGgpLGs9MCk6KGg9PT1iW2ddP2MuZXhwb3J0aW5nLnVzZVJvd3NwYW5IZWFkZXJzPwoobD0yLGRlbGV0ZSBiW2ddKToobD0xLGJbZ109IiIpOmw9MSxmKz10KCJ0aCIsImhpZ2hjaGFydHMtdGFibGUtdG9waGVhZGluZyIsJ3Njb3BlPSJjb2wiJysoMTxsPycgdmFsaWduPSJ0b3AiIHJvd3NwYW49IicrbCsnIic6IiIpLGgpKX1mKz0iPC90cj4ifWlmKGIpe2YrPSI8dHI+IjtnPTA7Zm9yKGQ9Yi5sZW5ndGg7ZzxkOysrZykidW5kZWZpbmVkIiE9PXR5cGVvZiBiW2ddJiYoZis9dCgidGgiLG51bGwsJ3Njb3BlPSJjb2wiJyxiW2ddKSk7Zis9IjwvdHI+In1yZXR1cm4gZisiPC90aGVhZD4ifShnLHAsTWF0aC5tYXgoZixwLmxlbmd0aCkpO2IrPSI8dGJvZHk+IjthLmZvckVhY2goZnVuY3Rpb24oYSl7Yis9Ijx0cj4iO2Zvcih2YXIgYz0wO2M8ZjtjKyspYis9dChjPyJ0ZCI6InRoIixudWxsLGM/IiI6J3Njb3BlPSJyb3ciJyxhW2NdKTtiKz0iPC90cj4ifSk7Yis9IjwvdGJvZHk+PC90YWJsZT4iO2E9e2h0bWw6Yn07RCh0aGlzLCJhZnRlckdldFRhYmxlIixhKTtyZXR1cm4gYS5odG1sfTsKYi5wcm90b3R5cGUuZG93bmxvYWRDU1Y9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldENTVighMCk7RihmKGEsInRleHQvY3N2Iil8fCJkYXRhOnRleHQvY3N2LFx1ZmVmZiIrZW5jb2RlVVJJQ29tcG9uZW50KGEpLHRoaXMuZ2V0RmlsZW5hbWUoKSsiLmNzdiIpfTtiLnByb3RvdHlwZS5kb3dubG9hZFhMUz1mdW5jdGlvbigpe3ZhciBhPSc8aHRtbCB4bWxuczpvPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2UiIHhtbG5zOng9InVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOmV4Y2VsIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCI+PGhlYWQ+XHgzYyEtLVtpZiBndGUgbXNvIDldPjx4bWw+PHg6RXhjZWxXb3JrYm9vaz48eDpFeGNlbFdvcmtzaGVldHM+PHg6RXhjZWxXb3Jrc2hlZXQ+PHg6TmFtZT5BcmsxPC94Ok5hbWU+PHg6V29ya3NoZWV0T3B0aW9ucz48eDpEaXNwbGF5R3JpZGxpbmVzLz48L3g6V29ya3NoZWV0T3B0aW9ucz48L3g6RXhjZWxXb3Jrc2hlZXQ+PC94OkV4Y2VsV29ya3NoZWV0cz48L3g6RXhjZWxXb3JrYm9vaz48L3htbD48IVtlbmRpZl0tLVx4M2U8c3R5bGU+dGR7Ym9yZGVyOm5vbmU7Zm9udC1mYW1pbHk6IENhbGlicmksIHNhbnMtc2VyaWY7fSAubnVtYmVye21zby1udW1iZXItZm9ybWF0OiIwLjAwIjt9IC50ZXh0eyBtc28tbnVtYmVyLWZvcm1hdDoiQCI7fTwvc3R5bGU+PG1ldGEgbmFtZT1Qcm9nSWQgY29udGVudD1FeGNlbC5TaGVldD48bWV0YSBjaGFyc2V0PVVURi04PjwvaGVhZD48Ym9keT4nKwp0aGlzLmdldFRhYmxlKCEwKSsiPC9ib2R5PjwvaHRtbD4iO0YoZihhLCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwiKXx8ImRhdGE6YXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsO2Jhc2U2NCwiK3AuYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoYSkpKSx0aGlzLmdldEZpbGVuYW1lKCkrIi54bHMiKX07Yi5wcm90b3R5cGUudmlld0RhdGE9ZnVuY3Rpb24oKXt0aGlzLmRhdGFUYWJsZURpdnx8KHRoaXMuZGF0YVRhYmxlRGl2PXUuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5kYXRhVGFibGVEaXYuY2xhc3NOYW1lPSJoaWdoY2hhcnRzLWRhdGEtdGFibGUiLHRoaXMucmVuZGVyVG8ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5kYXRhVGFibGVEaXYsdGhpcy5yZW5kZXJUby5uZXh0U2libGluZykpO3RoaXMuZGF0YVRhYmxlRGl2LmlubmVySFRNTD10aGlzLmdldFRhYmxlKCk7RCh0aGlzLCJhZnRlclZpZXdEYXRhIix0aGlzLmRhdGFUYWJsZURpdil9O2lmKGI9SygpLmV4cG9ydGluZylFKGIubWVudUl0ZW1EZWZpbml0aW9ucywKe2Rvd25sb2FkQ1NWOnt0ZXh0S2V5OiJkb3dubG9hZENTViIsb25jbGljazpmdW5jdGlvbigpe3RoaXMuZG93bmxvYWRDU1YoKX19LGRvd25sb2FkWExTOnt0ZXh0S2V5OiJkb3dubG9hZFhMUyIsb25jbGljazpmdW5jdGlvbigpe3RoaXMuZG93bmxvYWRYTFMoKX19LHZpZXdEYXRhOnt0ZXh0S2V5OiJ2aWV3RGF0YSIsb25jbGljazpmdW5jdGlvbigpe3RoaXMudmlld0RhdGEoKX19fSksYi5idXR0b25zJiZiLmJ1dHRvbnMuY29udGV4dEJ1dHRvbi5tZW51SXRlbXMucHVzaCgic2VwYXJhdG9yIiwiZG93bmxvYWRDU1YiLCJkb3dubG9hZFhMUyIsInZpZXdEYXRhIik7Yy5tYXAmJihjLm1hcC5wcm90b3R5cGUuZXhwb3J0S2V5PSJuYW1lIik7Yy5tYXBidWJibGUmJihjLm1hcGJ1YmJsZS5wcm90b3R5cGUuZXhwb3J0S2V5PSJuYW1lIik7Yy50cmVlbWFwJiYoYy50cmVlbWFwLnByb3RvdHlwZS5leHBvcnRLZXk9Im5hbWUiKX0pO2UoYSwibWFzdGVycy9tb2R1bGVzL2V4cG9ydC1kYXRhLnNyYy5qcyIsCltdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZXhwb3J0LWRhdGEuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEhpZ2hjaGFydHMgZnVubmVsIG1vZHVsZQoKIChjKSAyMDEwLTIwMTkgVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYil7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYlsiZGVmYXVsdCJdPWIsbW9kdWxlLmV4cG9ydHM9Yik6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvZnVubmVsIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihlKXtiKGUpO2IuSGlnaGNoYXJ0cz1lO3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGUoYixsLG4sZSl7Yi5oYXNPd25Qcm9wZXJ0eShsKXx8KGJbbF09ZS5hcHBseShudWxsLG4pKX12YXIgeD1iP2IuX21vZHVsZXM6e307ZSh4LCJtb2R1bGVzL2Z1bm5lbC5zcmMuanMiLFt4WyJwYXJ0cy9DaGFydC5qcyJdLHhbInBhcnRzL0dsb2JhbHMuanMiXSx4WyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZSxsLG4pe3ZhciB4PWwubm9vcCxDPWwuc2VyaWVzVHlwZSwKST1sLnNlcmllc1R5cGVzO2w9bi5hZGRFdmVudDt2YXIgSj1uLmZpcmVFdmVudCxLPW4uaXNBcnJheSxIPW4ucGljaztDKCJmdW5uZWwiLCJwaWUiLHthbmltYXRpb246ITEsY2VudGVyOlsiNTAlIiwiNTAlIl0sd2lkdGg6IjkwJSIsbmVja1dpZHRoOiIzMCUiLGhlaWdodDoiMTAwJSIsbmVja0hlaWdodDoiMjUlIixyZXZlcnNlZDohMSxzaXplOiEwLGRhdGFMYWJlbHM6e2Nvbm5lY3RvcldpZHRoOjEsdmVydGljYWxBbGlnbjoibWlkZGxlIn0sc3RhdGVzOntzZWxlY3Q6e2NvbG9yOiIjY2NjY2NjIixib3JkZXJDb2xvcjoiIzAwMDAwMCJ9fX0se2FuaW1hdGU6eCx0cmFuc2xhdGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYyl7cmV0dXJuLyUkLy50ZXN0KGEpP2MqcGFyc2VJbnQoYSwxMCkvMTAwOnBhcnNlSW50KGEsMTApfXZhciByPTAsYz10aGlzLGc9Yy5jaGFydCxmPWMub3B0aW9ucyxrPWYucmV2ZXJzZWQsZD1mLmlnbm9yZUhpZGRlblBvaW50LGI9Zy5wbG90V2lkdGg7Zz1nLnBsb3RIZWlnaHQ7CnZhciBlPTAsbD1mLmNlbnRlcixoPWEobFswXSxiKSxtPWEobFsxXSxnKSxuPWEoZi53aWR0aCxiKSx1LHY9YShmLmhlaWdodCxnKSx6PWEoZi5uZWNrV2lkdGgsYiksRz1hKGYubmVja0hlaWdodCxnKSxBPW0tdi8yK3YtRztiPWMuZGF0YTt2YXIgRCxFLEM9ImxlZnQiPT09Zi5kYXRhTGFiZWxzLnBvc2l0aW9uPzE6MCxCLHAsRix3LHEseSx0O2MuZ2V0V2lkdGhBdD1mdW5jdGlvbihhKXt2YXIgYz1tLXYvMjtyZXR1cm4gYT5BfHx2PT09Rz96OnorKG4teikqKDEtKGEtYykvKHYtRykpfTtjLmdldFg9ZnVuY3Rpb24oYSxkLGIpe3JldHVybiBoKyhkPy0xOjEpKihjLmdldFdpZHRoQXQoaz8yKm0tYTphKS8yK2IubGFiZWxEaXN0YW5jZSl9O2MuY2VudGVyPVtoLG0sdl07Yy5jZW50ZXJYPWg7Yi5mb3JFYWNoKGZ1bmN0aW9uKGEpe2QmJiExPT09YS52aXNpYmxlfHwocis9YS55KX0pO2IuZm9yRWFjaChmdW5jdGlvbihhKXt0PW51bGw7RT1yP2EueS9yOjA7cD1tLXYvMitlKnY7cT1wKwpFKnY7dT1jLmdldFdpZHRoQXQocCk7Qj1oLXUvMjtGPUIrdTt1PWMuZ2V0V2lkdGhBdChxKTt3PWgtdS8yO3k9dyt1O3A+QT8oQj13PWgtei8yLEY9eT1oK3ovMik6cT5BJiYodD1xLHU9Yy5nZXRXaWR0aEF0KEEpLHc9aC11LzIseT13K3UscT1BKTtrJiYocD0yKm0tcCxxPTIqbS1xLG51bGwhPT10JiYodD0yKm0tdCkpO0Q9W1siTSIsQixwXSxbIkwiLEYscF0sWyJMIix5LHFdXTtudWxsIT09dCYmRC5wdXNoKFsiTCIseSx0XSxbIkwiLHcsdF0pO0QucHVzaChbIkwiLHcscV0sWyJaIl0pO2Euc2hhcGVUeXBlPSJwYXRoIjthLnNoYXBlQXJncz17ZDpEfTthLnBlcmNlbnRhZ2U9MTAwKkU7YS5wbG90WD1oO2EucGxvdFk9KHArKHR8fHEpKS8yO2EudG9vbHRpcFBvcz1baCxhLnBsb3RZXTthLmRsQm94PXt4OncseTpwLHRvcFdpZHRoOkYtQixib3R0b21XaWR0aDp5LXcsaGVpZ2h0Ok1hdGguYWJzKEgodCxxKS1wKSx3aWR0aDpOYU59O2Euc2xpY2U9eDthLmhhbGY9QztkJiYhMT09PWEudmlzaWJsZXx8CihlKz1FKX0pO0ooYywiYWZ0ZXJUcmFuc2xhdGUiKX0sc29ydEJ5QW5nbGU6ZnVuY3Rpb24oYSl7YS5zb3J0KGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGEucGxvdFktYy5wbG90WX0pfSxkcmF3RGF0YUxhYmVsczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZGF0YSxiPXRoaXMub3B0aW9ucy5kYXRhTGFiZWxzLmRpc3RhbmNlLGMsZz1hLmxlbmd0aDtmb3IodGhpcy5jZW50ZXJbMl0tPTIqYjtnLS07KXt2YXIgZj1hW2ddO3ZhciBrPShjPWYuaGFsZik/MTotMTt2YXIgZD1mLnBsb3RZO2YubGFiZWxEaXN0YW5jZT1IKGYub3B0aW9ucy5kYXRhTGFiZWxzJiZmLm9wdGlvbnMuZGF0YUxhYmVscy5kaXN0YW5jZSxiKTt0aGlzLm1heExhYmVsRGlzdGFuY2U9TWF0aC5tYXgoZi5sYWJlbERpc3RhbmNlLHRoaXMubWF4TGFiZWxEaXN0YW5jZXx8MCk7dmFyIGU9dGhpcy5nZXRYKGQsYyxmKTtmLmxhYmVsUG9zaXRpb249e25hdHVyYWw6e3g6MCx5OmR9LCJmaW5hbCI6e30sYWxpZ25tZW50OmM/InJpZ2h0IjoKImxlZnQiLGNvbm5lY3RvclBvc2l0aW9uOnticmVha0F0Ont4OmUrKGYubGFiZWxEaXN0YW5jZS01KSprLHk6ZH0sdG91Y2hpbmdTbGljZUF0Ont4OmUrZi5sYWJlbERpc3RhbmNlKmsseTpkfX19fUlbdGhpcy5vcHRpb25zLmRhdGFMYWJlbHMuaW5zaWRlPyJjb2x1bW4iOiJwaWUiXS5wcm90b3R5cGUuZHJhd0RhdGFMYWJlbHMuY2FsbCh0aGlzKX0sYWxpZ25EYXRhTGFiZWw6ZnVuY3Rpb24oYSxlLGMsZyxmKXt2YXIgaz1hLnNlcmllcztnPWsub3B0aW9ucy5yZXZlcnNlZDt2YXIgZD1hLmRsQm94fHxhLnNoYXBlQXJncyxsPWMuYWxpZ24scj1jLnZlcnRpY2FsQWxpZ24sbj0oKGsub3B0aW9uc3x8e30pLmRhdGFMYWJlbHN8fHt9KS5pbnNpZGUsaD1rLmNlbnRlclsxXTtrPWsuZ2V0V2lkdGhBdCgoZz8yKmgtYS5wbG90WTphLnBsb3RZKS1kLmhlaWdodC8yK2UuaGVpZ2h0KTtrPSJtaWRkbGUiPT09cj8oZC50b3BXaWR0aC1kLmJvdHRvbVdpZHRoKS80OihrLWQuYm90dG9tV2lkdGgpLwoyO2g9ZC55O3ZhciBtPWQueDsibWlkZGxlIj09PXI/aD1kLnktZC5oZWlnaHQvMitlLmhlaWdodC8yOiJ0b3AiPT09ciYmKGg9ZC55LWQuaGVpZ2h0K2UuaGVpZ2h0K2MucGFkZGluZyk7aWYoInRvcCI9PT1yJiYhZ3x8ImJvdHRvbSI9PT1yJiZnfHwibWlkZGxlIj09PXIpInJpZ2h0Ij09PWw/bT1kLngtYy5wYWRkaW5nK2s6ImxlZnQiPT09bCYmKG09ZC54K2MucGFkZGluZy1rKTtnPXt4Om0seTpnP2gtZC5oZWlnaHQ6aCx3aWR0aDpkLmJvdHRvbVdpZHRoLGhlaWdodDpkLmhlaWdodH07Yy52ZXJ0aWNhbEFsaWduPSJib3R0b20iO24mJiFhLnZpc2libGV8fGIuU2VyaWVzLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbC5jYWxsKHRoaXMsYSxlLGMsZyxmKTtuJiYoIWEudmlzaWJsZSYmYS5kYXRhTGFiZWwmJihhLmRhdGFMYWJlbC5wbGFjZWQ9ITEpLGEuY29udHJhc3RDb2xvciYmZS5jc3Moe2NvbG9yOmEuY29udHJhc3RDb2xvcn0pKX19KTtsKGUsImFmdGVySGlkZUFsbE92ZXJsYXBwaW5nTGFiZWxzIiwKZnVuY3Rpb24oKXt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWEub3B0aW9ucyYmYS5vcHRpb25zLmRhdGFMYWJlbHM7SyhiKSYmKGI9YlswXSk7YS5pcygicGllIikmJmEucGxhY2VEYXRhTGFiZWxzJiZiJiYhYi5pbnNpZGUmJmEucGxhY2VEYXRhTGFiZWxzKCl9KX0pO0MoInB5cmFtaWQiLCJmdW5uZWwiLHtuZWNrV2lkdGg6IjAlIixuZWNrSGVpZ2h0OiIwJSIscmV2ZXJzZWQ6ITB9KTsiIn0pO2UoeCwibWFzdGVycy9tb2R1bGVzL2Z1bm5lbC5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZnVubmVsLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2htYXBzIEpTIHY4LjEuMiAoMjAyMC0wNi0xNikKCiAoYykgMjAwOS0yMDE5IFRvcnN0ZWluIEhvbnNpCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGEpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGFbImRlZmF1bHQiXT1hLG1vZHVsZS5leHBvcnRzPWEpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2hlYXRtYXAiLFsiaGlnaGNoYXJ0cyJdLGZ1bmN0aW9uKHApe2EocCk7YS5IaWdoY2hhcnRzPXA7cmV0dXJuIGF9KTphKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oYSl7ZnVuY3Rpb24gcChhLHQsbSxrKXthLmhhc093blByb3BlcnR5KHQpfHwoYVt0XT1rLmFwcGx5KG51bGwsbSkpfWE9YT9hLl9tb2R1bGVzOnt9O3AoYSwicGFydHMtbWFwL0NvbG9yU2VyaWVzTWl4aW4uanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl1dLGZ1bmN0aW9uKGEpe2EuY29sb3JQb2ludE1peGluPXtzZXRWaXNpYmxlOmZ1bmN0aW9uKGEpe3ZhciBtPXRoaXMsaz1hPyJzaG93IjoKImhpZGUiO20udmlzaWJsZT1tLm9wdGlvbnMudmlzaWJsZT0hIWE7WyJncmFwaGljIiwiZGF0YUxhYmVsIl0uZm9yRWFjaChmdW5jdGlvbihhKXtpZihtW2FdKW1bYV1ba10oKX0pO3RoaXMuc2VyaWVzLmJ1aWxkS0RUcmVlKCl9fTthLmNvbG9yU2VyaWVzTWl4aW49e29wdGlvbmFsQXhpczoiY29sb3JBeGlzIixjb2xvckF4aXM6MCx0cmFuc2xhdGVDb2xvcnM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLG09dGhpcy5vcHRpb25zLm51bGxDb2xvcixrPXRoaXMuY29sb3JBeGlzLHg9dGhpcy5jb2xvcktleTsodGhpcy5kYXRhLmxlbmd0aD90aGlzLmRhdGE6dGhpcy5wb2ludHMpLmZvckVhY2goZnVuY3Rpb24ocSl7dmFyIHY9cS5nZXROZXN0ZWRQcm9wZXJ0eSh4KTsodj1xLm9wdGlvbnMuY29sb3J8fChxLmlzTnVsbHx8bnVsbD09PXEudmFsdWU/bTprJiYidW5kZWZpbmVkIiE9PXR5cGVvZiB2P2sudG9Db2xvcih2LHEpOnEuY29sb3J8fGEuY29sb3IpKSYmcS5jb2xvciE9PXYmJihxLmNvbG9yPQp2LCJwb2ludCI9PT1hLm9wdGlvbnMubGVnZW5kVHlwZSYmcS5sZWdlbmRJdGVtJiZhLmNoYXJ0LmxlZ2VuZC5jb2xvcml6ZUl0ZW0ocSxxLnZpc2libGUpKX0pfX19KTtwKGEsInBhcnRzLW1hcC9Db2xvckF4aXMuanMiLFthWyJwYXJ0cy9BeGlzLmpzIl0sYVsicGFydHMvQ2hhcnQuanMiXSxhWyJwYXJ0cy9Db2xvci5qcyJdLGFbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9MZWdlbmQuanMiXSxhWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLGFbInBhcnRzL1BvaW50LmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsdCxtLGsseSxxLHYscil7dmFyIHg9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGM9ZnVuY3Rpb24oYixkKXtjPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihkLGIpe2QuX19wcm90b19fPWJ9fHxmdW5jdGlvbihkLGIpe2Zvcih2YXIgZiBpbiBiKWIuaGFzT3duUHJvcGVydHkoZikmJgooZFtmXT1iW2ZdKX07cmV0dXJuIGMoYixkKX07cmV0dXJuIGZ1bmN0aW9uKGIsZCl7ZnVuY3Rpb24gZSgpe3RoaXMuY29uc3RydWN0b3I9Yn1jKGIsZCk7Yi5wcm90b3R5cGU9bnVsbD09PWQ/T2JqZWN0LmNyZWF0ZShkKTooZS5wcm90b3R5cGU9ZC5wcm90b3R5cGUsbmV3IGUpfX0oKSxwPW0ucGFyc2UsQj1rLm5vb3A7bT1yLmFkZEV2ZW50O3ZhciB1PXIuZXJhc2Usdz1yLmV4dGVuZCxjPXIuRngsZz1yLmlzTnVtYmVyLEM9ci5tZXJnZSxBPXIucGljayxuPXIuc3BsYXQ7IiI7dmFyIGw9ay5TZXJpZXM7cj1rLmNvbG9yUG9pbnRNaXhpbjt3KGwucHJvdG90eXBlLGsuY29sb3JTZXJpZXNNaXhpbik7dyh2LnByb3RvdHlwZSxyKTt0LnByb3RvdHlwZS5jb2xsZWN0aW9uc1dpdGhVcGRhdGUucHVzaCgiY29sb3JBeGlzIik7dC5wcm90b3R5cGUuY29sbGVjdGlvbnNXaXRoSW5pdC5jb2xvckF4aXM9W3QucHJvdG90eXBlLmFkZENvbG9yQXhpc107dmFyIGg9ZnVuY3Rpb24oYyl7ZnVuY3Rpb24gYihkLApiKXt2YXIgZT1jLmNhbGwodGhpcyxkLGIpfHx0aGlzO2UuYmVmb3JlUGFkZGluZz0hMTtlLmNoYXJ0PXZvaWQgMDtlLmNvbGw9ImNvbG9yQXhpcyI7ZS5kYXRhQ2xhc3Nlcz12b2lkIDA7ZS5sZWdlbmRJdGVtPXZvaWQgMDtlLmxlZ2VuZEl0ZW1zPXZvaWQgMDtlLm5hbWU9IiI7ZS5vcHRpb25zPXZvaWQgMDtlLnN0b3BzPXZvaWQgMDtlLnZpc2libGU9ITA7ZS5pbml0KGQsYik7cmV0dXJuIGV9eChiLGMpO2IuYnVpbGRPcHRpb25zPWZ1bmN0aW9uKGQsZSxiKXtkPWQub3B0aW9ucy5sZWdlbmR8fHt9O3ZhciBmPWIubGF5b3V0PyJ2ZXJ0aWNhbCIhPT1iLmxheW91dDoidmVydGljYWwiIT09ZC5sYXlvdXQ7cmV0dXJuIEMoZSx7c2lkZTpmPzI6MSxyZXZlcnNlZDohZn0sYix7b3Bwb3NpdGU6IWYsc2hvd0VtcHR5OiExLHRpdGxlOm51bGwsdmlzaWJsZTpkLmVuYWJsZWQmJihiPyExIT09Yi52aXNpYmxlOiEwKX0pfTtiLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGQsZSl7dmFyIEQ9Yi5idWlsZE9wdGlvbnMoZCwKYi5kZWZhdWx0T3B0aW9ucyxlKTt0aGlzLmNvbGw9ImNvbG9yQXhpcyI7Yy5wcm90b3R5cGUuaW5pdC5jYWxsKHRoaXMsZCxEKTtlLmRhdGFDbGFzc2VzJiZ0aGlzLmluaXREYXRhQ2xhc3NlcyhlKTt0aGlzLmluaXRTdG9wcygpO3RoaXMuaG9yaXo9IUQub3Bwb3NpdGU7dGhpcy56b29tRW5hYmxlZD0hMX07Yi5wcm90b3R5cGUuaW5pdERhdGFDbGFzc2VzPWZ1bmN0aW9uKGQpe3ZhciBiPXRoaXMuY2hhcnQsYyxmPTAsYT1iLm9wdGlvbnMuY2hhcnQuY29sb3JDb3VudCxnPXRoaXMub3B0aW9ucyxsPWQuZGF0YUNsYXNzZXMubGVuZ3RoO3RoaXMuZGF0YUNsYXNzZXM9Yz1bXTt0aGlzLmxlZ2VuZEl0ZW1zPVtdO2QuZGF0YUNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihkLGUpe2Q9QyhkKTtjLnB1c2goZCk7aWYoYi5zdHlsZWRNb2RlfHwhZC5jb2xvcikiY2F0ZWdvcnkiPT09Zy5kYXRhQ2xhc3NDb2xvcj8oYi5zdHlsZWRNb2RlfHwoZT1iLm9wdGlvbnMuY29sb3JzLGE9ZS5sZW5ndGgsCmQuY29sb3I9ZVtmXSksZC5jb2xvckluZGV4PWYsZisrLGY9PT1hJiYoZj0wKSk6ZC5jb2xvcj1wKGcubWluQ29sb3IpLnR3ZWVuVG8ocChnLm1heENvbG9yKSwyPmw/LjU6ZS8obC0xKSl9KX07Yi5wcm90b3R5cGUuaGFzRGF0YT1mdW5jdGlvbigpe3JldHVybiEhKHRoaXMudGlja1Bvc2l0aW9uc3x8W10pLmxlbmd0aH07Yi5wcm90b3R5cGUuc2V0VGlja1Bvc2l0aW9ucz1mdW5jdGlvbigpe2lmKCF0aGlzLmRhdGFDbGFzc2VzKXJldHVybiBjLnByb3RvdHlwZS5zZXRUaWNrUG9zaXRpb25zLmNhbGwodGhpcyl9O2IucHJvdG90eXBlLmluaXRTdG9wcz1mdW5jdGlvbigpe3RoaXMuc3RvcHM9dGhpcy5vcHRpb25zLnN0b3BzfHxbWzAsdGhpcy5vcHRpb25zLm1pbkNvbG9yXSxbMSx0aGlzLm9wdGlvbnMubWF4Q29sb3JdXTt0aGlzLnN0b3BzLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5jb2xvcj1wKGRbMV0pfSl9O2IucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24oZCl7Yy5wcm90b3R5cGUuc2V0T3B0aW9ucy5jYWxsKHRoaXMsCmQpO3RoaXMub3B0aW9ucy5jcm9zc2hhaXI9dGhpcy5vcHRpb25zLm1hcmtlcn07Yi5wcm90b3R5cGUuc2V0QXhpc1NpemU9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLmxlZ2VuZFN5bWJvbCxlPXRoaXMuY2hhcnQsYz1lLm9wdGlvbnMubGVnZW5kfHx7fSxmLGE7ZD8odGhpcy5sZWZ0PWM9ZC5hdHRyKCJ4IiksdGhpcy50b3A9Zj1kLmF0dHIoInkiKSx0aGlzLndpZHRoPWE9ZC5hdHRyKCJ3aWR0aCIpLHRoaXMuaGVpZ2h0PWQ9ZC5hdHRyKCJoZWlnaHQiKSx0aGlzLnJpZ2h0PWUuY2hhcnRXaWR0aC1jLWEsdGhpcy5ib3R0b209ZS5jaGFydEhlaWdodC1mLWQsdGhpcy5sZW49dGhpcy5ob3Jpej9hOmQsdGhpcy5wb3M9dGhpcy5ob3Jpej9jOmYpOnRoaXMubGVuPSh0aGlzLmhvcml6P2Muc3ltYm9sV2lkdGg6Yy5zeW1ib2xIZWlnaHQpfHxiLmRlZmF1bHRMZWdlbmRMZW5ndGh9O2IucHJvdG90eXBlLm5vcm1hbGl6ZWRWYWx1ZT1mdW5jdGlvbihkKXt0aGlzLmxvZ2FyaXRobWljJiYoZD10aGlzLmxvZ2FyaXRobWljLmxvZzJsaW4oZCkpOwpyZXR1cm4gMS0odGhpcy5tYXgtZCkvKHRoaXMubWF4LXRoaXMubWlufHwxKX07Yi5wcm90b3R5cGUudG9Db2xvcj1mdW5jdGlvbihkLGIpe3ZhciBjPXRoaXMuZGF0YUNsYXNzZXMsZT10aGlzLnN0b3BzLGE7aWYoYylmb3IoYT1jLmxlbmd0aDthLS07KXt2YXIgZz1jW2FdO3ZhciBsPWcuZnJvbTtlPWcudG87aWYoKCJ1bmRlZmluZWQiPT09dHlwZW9mIGx8fGQ+PWwpJiYoInVuZGVmaW5lZCI9PT10eXBlb2YgZXx8ZDw9ZSkpe3ZhciBoPWcuY29sb3I7YiYmKGIuZGF0YUNsYXNzPWEsYi5jb2xvckluZGV4PWcuY29sb3JJbmRleCk7YnJlYWt9fWVsc2V7ZD10aGlzLm5vcm1hbGl6ZWRWYWx1ZShkKTtmb3IoYT1lLmxlbmd0aDthLS0mJiEoZD5lW2FdWzBdKTspO2w9ZVthXXx8ZVthKzFdO2U9ZVthKzFdfHxsO2Q9MS0oZVswXS1kKS8oZVswXS1sWzBdfHwxKTtoPWwuY29sb3IudHdlZW5UbyhlLmNvbG9yLGQpfXJldHVybiBofTtiLnByb3RvdHlwZS5nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt2YXIgZD0KdGhpcy5sZWdlbmRHcm91cCxiPXRoaXMuY2hhcnQuYXhpc09mZnNldFt0aGlzLnNpZGVdO2QmJih0aGlzLmF4aXNQYXJlbnQ9ZCxjLnByb3RvdHlwZS5nZXRPZmZzZXQuY2FsbCh0aGlzKSx0aGlzLmFkZGVkfHwodGhpcy5hZGRlZD0hMCx0aGlzLmxhYmVsTGVmdD0wLHRoaXMubGFiZWxSaWdodD10aGlzLndpZHRoKSx0aGlzLmNoYXJ0LmF4aXNPZmZzZXRbdGhpcy5zaWRlXT1iKX07Yi5wcm90b3R5cGUuc2V0TGVnZW5kQ29sb3I9ZnVuY3Rpb24oKXt2YXIgZD10aGlzLnJldmVyc2VkLGI9ZD8xOjA7ZD1kPzA6MTtiPXRoaXMuaG9yaXo/W2IsMCxkLDBdOlswLGQsMCxiXTt0aGlzLmxlZ2VuZENvbG9yPXtsaW5lYXJHcmFkaWVudDp7eDE6YlswXSx5MTpiWzFdLHgyOmJbMl0seTI6YlszXX0sc3RvcHM6dGhpcy5zdG9wc319O2IucHJvdG90eXBlLmRyYXdMZWdlbmRTeW1ib2w9ZnVuY3Rpb24oZCxjKXt2YXIgZT1kLnBhZGRpbmcsZj1kLm9wdGlvbnMsYT10aGlzLmhvcml6LGc9QShmLnN5bWJvbFdpZHRoLAphP2IuZGVmYXVsdExlZ2VuZExlbmd0aDoxMiksbD1BKGYuc3ltYm9sSGVpZ2h0LGE/MTI6Yi5kZWZhdWx0TGVnZW5kTGVuZ3RoKSxoPUEoZi5sYWJlbFBhZGRpbmcsYT8xNjozMCk7Zj1BKGYuaXRlbURpc3RhbmNlLDEwKTt0aGlzLnNldExlZ2VuZENvbG9yKCk7Yy5sZWdlbmRTeW1ib2w9dGhpcy5jaGFydC5yZW5kZXJlci5yZWN0KDAsZC5iYXNlbGluZS0xMSxnLGwpLmF0dHIoe3pJbmRleDoxfSkuYWRkKGMubGVnZW5kR3JvdXApO3RoaXMubGVnZW5kSXRlbVdpZHRoPWcrZSsoYT9mOmgpO3RoaXMubGVnZW5kSXRlbUhlaWdodD1sK2UrKGE/aDowKX07Yi5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZCl7dGhpcy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLnNldFN0YXRlKGQpfSl9O2IucHJvdG90eXBlLnNldFZpc2libGU9ZnVuY3Rpb24oKXt9O2IucHJvdG90eXBlLmdldFNlcmllc0V4dHJlbWVzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5zZXJpZXMsYz1iLmxlbmd0aCwKYTt0aGlzLmRhdGFNaW49SW5maW5pdHk7Zm9yKHRoaXMuZGF0YU1heD0tSW5maW5pdHk7Yy0tOyl7dmFyIGY9YltjXTt2YXIgZz1mLmNvbG9yS2V5PUEoZi5vcHRpb25zLmNvbG9yS2V5LGYuY29sb3JLZXksZi5wb2ludFZhbEtleSxmLnpvbmVBeGlzLCJ5Iik7dmFyIGg9Zi5wb2ludEFycmF5TWFwO3ZhciB6PWZbZysiTWluIl0mJmZbZysiTWF4Il07aWYoZltnKyJEYXRhIl0pdmFyIG49ZltnKyJEYXRhIl07ZWxzZSBpZihoKXtuPVtdO2g9aC5pbmRleE9mKGcpO3ZhciBrPWYueURhdGE7aWYoMDw9aCYmaylmb3IoYT0wO2E8ay5sZW5ndGg7YSsrKW4ucHVzaChBKGtbYV1baF0sa1thXSkpfWVsc2Ugbj1mLnlEYXRhO3o/KGYubWluQ29sb3JWYWx1ZT1mW2crIk1pbiJdLGYubWF4Q29sb3JWYWx1ZT1mW2crIk1heCJdKToobj1sLnByb3RvdHlwZS5nZXRFeHRyZW1lcy5jYWxsKGYsbiksZi5taW5Db2xvclZhbHVlPW4uZGF0YU1pbixmLm1heENvbG9yVmFsdWU9bi5kYXRhTWF4KTsidW5kZWZpbmVkIiE9PQp0eXBlb2YgZi5taW5Db2xvclZhbHVlJiYodGhpcy5kYXRhTWluPU1hdGgubWluKHRoaXMuZGF0YU1pbixmLm1pbkNvbG9yVmFsdWUpLHRoaXMuZGF0YU1heD1NYXRoLm1heCh0aGlzLmRhdGFNYXgsZi5tYXhDb2xvclZhbHVlKSk7enx8bC5wcm90b3R5cGUuYXBwbHlFeHRyZW1lcy5jYWxsKGYpfX07Yi5wcm90b3R5cGUuZHJhd0Nyb3NzaGFpcj1mdW5jdGlvbihiLGUpe3ZhciBkPWUmJmUucGxvdFgsYT1lJiZlLnBsb3RZLGc9dGhpcy5wb3MsbD10aGlzLmxlbjtpZihlKXt2YXIgaD10aGlzLnRvUGl4ZWxzKGUuZ2V0TmVzdGVkUHJvcGVydHkoZS5zZXJpZXMuY29sb3JLZXkpKTtoPGc/aD1nLTI6aD5nK2wmJihoPWcrbCsyKTtlLnBsb3RYPWg7ZS5wbG90WT10aGlzLmxlbi1oO2MucHJvdG90eXBlLmRyYXdDcm9zc2hhaXIuY2FsbCh0aGlzLGIsZSk7ZS5wbG90WD1kO2UucGxvdFk9YTt0aGlzLmNyb3NzJiYhdGhpcy5jcm9zcy5hZGRlZFRvQ29sb3JBeGlzJiZ0aGlzLmxlZ2VuZEdyb3VwJiYKKHRoaXMuY3Jvc3MuYWRkQ2xhc3MoImhpZ2hjaGFydHMtY29sb3JheGlzLW1hcmtlciIpLmFkZCh0aGlzLmxlZ2VuZEdyb3VwKSx0aGlzLmNyb3NzLmFkZGVkVG9Db2xvckF4aXM9ITAsIXRoaXMuY2hhcnQuc3R5bGVkTW9kZSYmdGhpcy5jcm9zc2hhaXImJnRoaXMuY3Jvc3MuYXR0cih7ZmlsbDp0aGlzLmNyb3NzaGFpci5jb2xvcn0pKX19O2IucHJvdG90eXBlLmdldFBsb3RMaW5lUGF0aD1mdW5jdGlvbihiKXt2YXIgZD10aGlzLmxlZnQsYT1iLnRyYW5zbGF0ZWRWYWx1ZSxmPXRoaXMudG9wO3JldHVybiBnKGEpP3RoaXMuaG9yaXo/W1siTSIsYS00LGYtNl0sWyJMIixhKzQsZi02XSxbIkwiLGEsZl0sWyJaIl1dOltbIk0iLGQsYV0sWyJMIixkLTYsYSs2XSxbIkwiLGQtNixhLTZdLFsiWiJdXTpjLnByb3RvdHlwZS5nZXRQbG90TGluZVBhdGguY2FsbCh0aGlzLGIpfTtiLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZCxhKXt2YXIgZT10aGlzLmNoYXJ0LGc9ZS5sZWdlbmQsbD1iLmJ1aWxkT3B0aW9ucyhlLAp7fSxkKTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuaXNEaXJ0eURhdGE9ITB9KTsoZC5kYXRhQ2xhc3NlcyYmZy5hbGxJdGVtc3x8dGhpcy5kYXRhQ2xhc3NlcykmJnRoaXMuZGVzdHJveUl0ZW1zKCk7ZS5vcHRpb25zW3RoaXMuY29sbF09Qyh0aGlzLnVzZXJPcHRpb25zLGwpO2MucHJvdG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMsbCxhKTt0aGlzLmxlZ2VuZEl0ZW0mJih0aGlzLnNldExlZ2VuZENvbG9yKCksZy5jb2xvcml6ZUl0ZW0odGhpcywhMCkpfTtiLnByb3RvdHlwZS5kZXN0cm95SXRlbXM9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLmNoYXJ0O3RoaXMubGVnZW5kSXRlbT9iLmxlZ2VuZC5kZXN0cm95SXRlbSh0aGlzKTp0aGlzLmxlZ2VuZEl0ZW1zJiZ0aGlzLmxlZ2VuZEl0ZW1zLmZvckVhY2goZnVuY3Rpb24oZCl7Yi5sZWdlbmQuZGVzdHJveUl0ZW0oZCl9KTtiLmlzRGlydHlMZWdlbmQ9ITB9O2IucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihiKXt0aGlzLmRlc3Ryb3lJdGVtcygpOwpjLnByb3RvdHlwZS5yZW1vdmUuY2FsbCh0aGlzLGIpfTtiLnByb3RvdHlwZS5nZXREYXRhQ2xhc3NMZWdlbmRTeW1ib2xzPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPWIuY2hhcnQsYT1iLmxlZ2VuZEl0ZW1zLGc9Yy5vcHRpb25zLmxlZ2VuZCxsPWcudmFsdWVEZWNpbWFscyxoPWcudmFsdWVTdWZmaXh8fCIiLG47YS5sZW5ndGh8fGIuZGF0YUNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihkLGcpe3ZhciBlPSEwLGY9ZC5mcm9tLHo9ZC50byxrPWMubnVtYmVyRm9ybWF0dGVyO249IiI7InVuZGVmaW5lZCI9PT10eXBlb2YgZj9uPSI8ICI6InVuZGVmaW5lZCI9PT10eXBlb2YgeiYmKG49Ij4gIik7InVuZGVmaW5lZCIhPT10eXBlb2YgZiYmKG4rPWsoZixsKStoKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBmJiYidW5kZWZpbmVkIiE9PXR5cGVvZiB6JiYobis9IiAtICIpOyJ1bmRlZmluZWQiIT09dHlwZW9mIHomJihuKz1rKHosbCkraCk7YS5wdXNoKHcoe2NoYXJ0OmMsbmFtZTpuLG9wdGlvbnM6e30sCmRyYXdMZWdlbmRTeW1ib2w6cS5kcmF3UmVjdGFuZ2xlLHZpc2libGU6ITAsc2V0U3RhdGU6Qixpc0RhdGFDbGFzczohMCxzZXRWaXNpYmxlOmZ1bmN0aW9uKCl7ZT1iLnZpc2libGU9IWU7Yi5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuZGF0YUNsYXNzPT09ZyYmYi5zZXRWaXNpYmxlKGUpfSl9KTtjLmxlZ2VuZC5jb2xvcml6ZUl0ZW0odGhpcyxlKX19LGQpKX0pO3JldHVybiBhfTtiLmRlZmF1bHRMZWdlbmRMZW5ndGg9MjAwO2IuZGVmYXVsdE9wdGlvbnM9e2xpbmVXaWR0aDowLG1pblBhZGRpbmc6MCxtYXhQYWRkaW5nOjAsZ3JpZExpbmVXaWR0aDoxLHRpY2tQaXhlbEludGVydmFsOjcyLHN0YXJ0T25UaWNrOiEwLGVuZE9uVGljazohMCxvZmZzZXQ6MCxtYXJrZXI6e2FuaW1hdGlvbjp7ZHVyYXRpb246NTB9LHdpZHRoOi4wMSxjb2xvcjoiIzk5OTk5OSJ9LGxhYmVsczp7b3ZlcmZsb3c6Imp1c3RpZnkiLHJvdGF0aW9uOjB9LAptaW5Db2xvcjoiI2U2ZWJmNSIsbWF4Q29sb3I6IiMwMDMzOTkiLHRpY2tMZW5ndGg6NSxzaG93SW5MZWdlbmQ6ITB9O2Iua2VlcFByb3BzPVsibGVnZW5kR3JvdXAiLCJsZWdlbmRJdGVtSGVpZ2h0IiwibGVnZW5kSXRlbVdpZHRoIiwibGVnZW5kSXRlbSIsImxlZ2VuZFN5bWJvbCJdO3JldHVybiBifShhKTtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhLmtlZXBQcm9wcyxoLmtlZXBQcm9wcyk7ay5Db2xvckF4aXM9aDtbImZpbGwiLCJzdHJva2UiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2MucHJvdG90eXBlW2ErIlNldHRlciJdPWZ1bmN0aW9uKCl7dGhpcy5lbGVtLmF0dHIoYSxwKHRoaXMuc3RhcnQpLnR3ZWVuVG8ocCh0aGlzLmVuZCksdGhpcy5wb3MpLG51bGwsITApfX0pO20odCwiYWZ0ZXJHZXRBeGVzIixmdW5jdGlvbigpe3ZhciBjPXRoaXMsYj1jLm9wdGlvbnM7dGhpcy5jb2xvckF4aXM9W107Yi5jb2xvckF4aXMmJihiLmNvbG9yQXhpcz1uKGIuY29sb3JBeGlzKSxiLmNvbG9yQXhpcy5mb3JFYWNoKGZ1bmN0aW9uKGIsCmEpe2IuaW5kZXg9YTtuZXcgaChjLGIpfSkpfSk7bShsLCJiaW5kQXhlcyIsZnVuY3Rpb24oKXt2YXIgYz10aGlzLmF4aXNUeXBlcztjPy0xPT09Yy5pbmRleE9mKCJjb2xvckF4aXMiKSYmYy5wdXNoKCJjb2xvckF4aXMiKTp0aGlzLmF4aXNUeXBlcz1bImNvbG9yQXhpcyJdfSk7bSh5LCJhZnRlckdldEFsbEl0ZW1zIixmdW5jdGlvbihjKXt2YXIgYj1bXSxkLGE7KHRoaXMuY2hhcnQuY29sb3JBeGlzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXsoZD1hLm9wdGlvbnMpJiZkLnNob3dJbkxlZ2VuZCYmKGQuZGF0YUNsYXNzZXMmJmQudmlzaWJsZT9iPWIuY29uY2F0KGEuZ2V0RGF0YUNsYXNzTGVnZW5kU3ltYm9scygpKTpkLnZpc2libGUmJmIucHVzaChhKSxhLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2lmKCFiLm9wdGlvbnMuc2hvd0luTGVnZW5kfHxkLmRhdGFDbGFzc2VzKSJwb2ludCI9PT1iLm9wdGlvbnMubGVnZW5kVHlwZT9iLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe3UoYy5hbGxJdGVtcywKYil9KTp1KGMuYWxsSXRlbXMsYil9KSl9KTtmb3IoYT1iLmxlbmd0aDthLS07KWMuYWxsSXRlbXMudW5zaGlmdChiW2FdKX0pO20oeSwiYWZ0ZXJDb2xvcml6ZUl0ZW0iLGZ1bmN0aW9uKGMpe2MudmlzaWJsZSYmYy5pdGVtLmxlZ2VuZENvbG9yJiZjLml0ZW0ubGVnZW5kU3ltYm9sLmF0dHIoe2ZpbGw6Yy5pdGVtLmxlZ2VuZENvbG9yfSl9KTttKHksImFmdGVyVXBkYXRlIixmdW5jdGlvbigpe3ZhciBjPXRoaXMuY2hhcnQuY29sb3JBeGlzO2MmJmMuZm9yRWFjaChmdW5jdGlvbihiLGMsYSl7Yi51cGRhdGUoe30sYSl9KX0pO20obCwiYWZ0ZXJUcmFuc2xhdGUiLGZ1bmN0aW9uKCl7KHRoaXMuY2hhcnQuY29sb3JBeGlzJiZ0aGlzLmNoYXJ0LmNvbG9yQXhpcy5sZW5ndGh8fHRoaXMuY29sb3JBdHRyaWJzKSYmdGhpcy50cmFuc2xhdGVDb2xvcnMoKX0pO3JldHVybiBofSk7cChhLCJwYXJ0cy1tYXAvQ29sb3JNYXBTZXJpZXNNaXhpbi5qcyIsW2FbInBhcnRzL0dsb2JhbHMuanMiXSxhWyJwYXJ0cy9Qb2ludC5qcyJdLAphWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSxwLG0pe3ZhciBrPW0uZGVmaW5lZDttPWEubm9vcDt2YXIgeD1hLnNlcmllc1R5cGVzO2EuY29sb3JNYXBQb2ludE1peGluPXtkYXRhTGFiZWxPbk51bGw6ITAsaXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiBudWxsIT09dGhpcy52YWx1ZSYmSW5maW5pdHkhPT10aGlzLnZhbHVlJiYtSW5maW5pdHkhPT10aGlzLnZhbHVlfSxzZXRTdGF0ZTpmdW5jdGlvbihhKXtwLnByb3RvdHlwZS5zZXRTdGF0ZS5jYWxsKHRoaXMsYSk7dGhpcy5ncmFwaGljJiZ0aGlzLmdyYXBoaWMuYXR0cih7ekluZGV4OiJob3ZlciI9PT1hPzE6MH0pfX07YS5jb2xvck1hcFNlcmllc01peGluPXtwb2ludEFycmF5TWFwOlsidmFsdWUiXSxheGlzVHlwZXM6WyJ4QXhpcyIsInlBeGlzIiwiY29sb3JBeGlzIl0sdHJhY2tlckdyb3VwczpbImdyb3VwIiwibWFya2VyR3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiXSxnZXRTeW1ib2w6bSxwYXJhbGxlbEFycmF5czpbIngiLAoieSIsInZhbHVlIl0sY29sb3JLZXk6InZhbHVlIixwb2ludEF0dHJpYnM6eC5jb2x1bW4ucHJvdG90eXBlLnBvaW50QXR0cmlicyxjb2xvckF0dHJpYnM6ZnVuY3Rpb24oYSl7dmFyIG09e307ayhhLmNvbG9yKSYmKG1bdGhpcy5jb2xvclByb3B8fCJmaWxsIl09YS5jb2xvcik7cmV0dXJuIG19fX0pO3AoYSwicGFydHMtbWFwL0hlYXRtYXBTZXJpZXMuanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsibWl4aW5zL2xlZ2VuZC1zeW1ib2wuanMiXSxhWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLHAsbSxrKXt2YXIgeT1rLmNsYW1wLHE9ay5leHRlbmQsdj1rLmZpcmVFdmVudCxyPWsuaXNOdW1iZXIsdD1rLm1lcmdlLHg9ay5waWNrO2s9ay5zZXJpZXNUeXBlOyIiO3ZhciBCPWEuY29sb3JNYXBQb2ludE1peGluLHU9YS5TZXJpZXMsdz1tLnByb3RvdHlwZS5zeW1ib2xzO2soImhlYXRtYXAiLCJzY2F0dGVyIix7YW5pbWF0aW9uOiExLApib3JkZXJXaWR0aDowLG51bGxDb2xvcjoiI2Y3ZjdmNyIsZGF0YUxhYmVsczp7Zm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQudmFsdWV9LGluc2lkZTohMCx2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLGNyb3A6ITEsb3ZlcmZsb3c6ITEscGFkZGluZzowfSxtYXJrZXI6e3N5bWJvbDoicmVjdCIscmFkaXVzOjAsbGluZUNvbG9yOnZvaWQgMCxzdGF0ZXM6e2hvdmVyOntsaW5lV2lkdGhQbHVzOjB9LHNlbGVjdDp7fX19LGNsaXA6ITAscG9pbnRSYW5nZTpudWxsLHRvb2x0aXA6e3BvaW50Rm9ybWF0OiJ7cG9pbnQueH0sIHtwb2ludC55fToge3BvaW50LnZhbHVlfTxici8+In0sc3RhdGVzOntob3Zlcjp7aGFsbzohMSxicmlnaHRuZXNzOi4yfX19LHQoYS5jb2xvck1hcFNlcmllc01peGluLHtwb2ludEFycmF5TWFwOlsieSIsInZhbHVlIl0saGFzUG9pbnRTcGVjaWZpY09wdGlvbnM6ITAsZ2V0RXh0cmVtZXNGcm9tQWxsOiEwLGRpcmVjdFRvdWNoOiEwLGluaXQ6ZnVuY3Rpb24oKXt1LnByb3RvdHlwZS5pbml0LmFwcGx5KHRoaXMsCmFyZ3VtZW50cyk7dmFyIGE9dGhpcy5vcHRpb25zO2EucG9pbnRSYW5nZT14KGEucG9pbnRSYW5nZSxhLmNvbHNpemV8fDEpO3RoaXMueUF4aXMuYXhpc1BvaW50UmFuZ2U9YS5yb3dzaXplfHwxO3Eodyx7ZWxsaXBzZTp3LmNpcmNsZSxyZWN0Oncuc3F1YXJlfSl9LGdldFN5bWJvbDp1LnByb3RvdHlwZS5nZXRTeW1ib2wsc2V0Q2xpcDpmdW5jdGlvbihhKXt2YXIgYz10aGlzLmNoYXJ0O3UucHJvdG90eXBlLnNldENsaXAuYXBwbHkodGhpcyxhcmd1bWVudHMpOyghMSE9PXRoaXMub3B0aW9ucy5jbGlwfHxhKSYmdGhpcy5tYXJrZXJHcm91cC5jbGlwKChhfHx0aGlzLmNsaXBCb3gpJiZ0aGlzLnNoYXJlZENsaXBLZXk/Y1t0aGlzLnNoYXJlZENsaXBLZXldOmMuY2xpcFJlY3QpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsZz1hLm1hcmtlciYmYS5tYXJrZXIuc3ltYm9sfHwiIixrPXdbZ10/ZzoicmVjdCI7YT10aGlzLm9wdGlvbnM7dmFyIG09LTEhPT1bImNpcmNsZSIsCiJzcXVhcmUiXS5pbmRleE9mKGspO3RoaXMuZ2VuZXJhdGVQb2ludHMoKTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBjPWEuZ2V0Q2VsbEF0dHJpYnV0ZXMoKSxoPXt4Ok1hdGgubWluKGMueDEsYy54MikseTpNYXRoLm1pbihjLnkxLGMueTIpLHdpZHRoOk1hdGgubWF4KE1hdGguYWJzKGMueDItYy54MSksMCksaGVpZ2h0Ok1hdGgubWF4KE1hdGguYWJzKGMueTItYy55MSksMCl9O3ZhciBuPWEuaGFzSW1hZ2U9MD09PShhLm1hcmtlciYmYS5tYXJrZXIuc3ltYm9sfHxnfHwiIikuaW5kZXhPZigidXJsIik7aWYobSl7dmFyIGI9TWF0aC5hYnMoaC53aWR0aC1oLmhlaWdodCk7aC54PU1hdGgubWluKGMueDEsYy54MikrKGgud2lkdGg8aC5oZWlnaHQ/MDpiLzIpO2gueT1NYXRoLm1pbihjLnkxLGMueTIpKyhoLndpZHRoPGguaGVpZ2h0P2IvMjowKTtoLndpZHRoPWguaGVpZ2h0PU1hdGgubWluKGgud2lkdGgsaC5oZWlnaHQpfWI9e3Bsb3RYOihjLngxK2MueDIpLwoyLHBsb3RZOihjLnkxK2MueTIpLzIsY2xpZW50WDooYy54MStjLngyKS8yLHNoYXBlVHlwZToicGF0aCIsc2hhcGVBcmdzOnQoITAsaCx7ZDp3W2tdKGgueCxoLnksaC53aWR0aCxoLmhlaWdodCl9KX07biYmKGEubWFya2VyPXt3aWR0aDpoLndpZHRoLGhlaWdodDpoLmhlaWdodH0pO3EoYSxiKX0pO3YodGhpcywiYWZ0ZXJUcmFuc2xhdGUiKX0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGMsZyl7dmFyIGs9dS5wcm90b3R5cGUucG9pbnRBdHRyaWJzLmNhbGwodGhpcyxjLGcpLG09dGhpcy5vcHRpb25zfHx7fSxuPXRoaXMuY2hhcnQub3B0aW9ucy5wbG90T3B0aW9uc3x8e30sbD1uLnNlcmllc3x8e30saD1uLmhlYXRtYXB8fHt9O249bS5ib3JkZXJDb2xvcnx8aC5ib3JkZXJDb2xvcnx8bC5ib3JkZXJDb2xvcjtsPW0uYm9yZGVyV2lkdGh8fGguYm9yZGVyV2lkdGh8fGwuYm9yZGVyV2lkdGh8fGtbInN0cm9rZS13aWR0aCJdO2suc3Ryb2tlPWMmJmMubWFya2VyJiZjLm1hcmtlci5saW5lQ29sb3J8fAptLm1hcmtlciYmbS5tYXJrZXIubGluZUNvbG9yfHxufHx0aGlzLmNvbG9yO2tbInN0cm9rZS13aWR0aCJdPWw7ZyYmKGM9dChtLnN0YXRlc1tnXSxtLm1hcmtlciYmbS5tYXJrZXIuc3RhdGVzW2ddLGMub3B0aW9ucy5zdGF0ZXMmJmMub3B0aW9ucy5zdGF0ZXNbZ118fHt9KSxnPWMuYnJpZ2h0bmVzcyxrLmZpbGw9Yy5jb2xvcnx8YS5jb2xvcihrLmZpbGwpLmJyaWdodGVuKGd8fDApLmdldCgpLGsuc3Ryb2tlPWMubGluZUNvbG9yKTtyZXR1cm4ga30sbWFya2VyQXR0cmliczpmdW5jdGlvbihhLGcpe3ZhciBjPWEubWFya2VyfHx7fSxrPXRoaXMub3B0aW9ucy5tYXJrZXJ8fHt9LG49YS5zaGFwZUFyZ3N8fHt9LGw9e307aWYoYS5oYXNJbWFnZSlyZXR1cm57eDphLnBsb3RYLHk6YS5wbG90WX07aWYoZyl7dmFyIGg9ay5zdGF0ZXNbZ118fHt9O3ZhciBtPWMuc3RhdGVzJiZjLnN0YXRlc1tnXXx8e307W1sid2lkdGgiLCJ4Il0sWyJoZWlnaHQiLCJ5Il1dLmZvckVhY2goZnVuY3Rpb24oYSl7bFthWzBdXT0KKG1bYVswXV18fGhbYVswXV18fG5bYVswXV0pKyhtW2FbMF0rIlBsdXMiXXx8aFthWzBdKyJQbHVzIl18fDApO2xbYVsxXV09blthWzFdXSsoblthWzBdXS1sW2FbMF1dKS8yfSl9cmV0dXJuIGc/bDpufSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcztpZigodGhpcy5vcHRpb25zLm1hcmtlcnx8e30pLmVuYWJsZWR8fHRoaXMuX2hhc1BvaW50TWFya2Vycyl1LnByb3RvdHlwZS5kcmF3UG9pbnRzLmNhbGwodGhpcyksdGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihjKXtjLmdyYXBoaWMmJmMuZ3JhcGhpY1thLmNoYXJ0LnN0eWxlZE1vZGU/ImNzcyI6ImFuaW1hdGUiXShhLmNvbG9yQXR0cmlicyhjKSl9KX0saGFzRGF0YTpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5wcm9jZXNzZWRYRGF0YS5sZW5ndGh9LGdldFZhbGlkUG9pbnRzOmZ1bmN0aW9uKGEsZyl7cmV0dXJuIHUucHJvdG90eXBlLmdldFZhbGlkUG9pbnRzLmNhbGwodGhpcyxhLGcsITApfSxnZXRCb3g6YS5ub29wLApkcmF3TGVnZW5kU3ltYm9sOnAuZHJhd1JlY3RhbmdsZSxhbGlnbkRhdGFMYWJlbDphLnNlcmllc1R5cGVzLmNvbHVtbi5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWwsZ2V0RXh0cmVtZXM6ZnVuY3Rpb24oKXt2YXIgYT11LnByb3RvdHlwZS5nZXRFeHRyZW1lcy5jYWxsKHRoaXMsdGhpcy52YWx1ZURhdGEpLGc9YS5kYXRhTWluO2E9YS5kYXRhTWF4O3IoZykmJih0aGlzLnZhbHVlTWluPWcpO3IoYSkmJih0aGlzLnZhbHVlTWF4PWEpO3JldHVybiB1LnByb3RvdHlwZS5nZXRFeHRyZW1lcy5jYWxsKHRoaXMpfX0pLHQoQix7YXBwbHlPcHRpb25zOmZ1bmN0aW9uKGMsZyl7Yz1hLlBvaW50LnByb3RvdHlwZS5hcHBseU9wdGlvbnMuY2FsbCh0aGlzLGMsZyk7Yy5mb3JtYXRQcmVmaXg9Yy5pc051bGx8fG51bGw9PT1jLnZhbHVlPyJudWxsIjoicG9pbnQiO3JldHVybiBjfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIEluZmluaXR5IT09dGhpcy52YWx1ZSYmLUluZmluaXR5IT09dGhpcy52YWx1ZX0sCmhhbG9QYXRoOmZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybltdO3ZhciBjPXRoaXMuc2hhcGVBcmdzO3JldHVyblsiTSIsYy54LWEsYy55LWEsIkwiLGMueC1hLGMueStjLmhlaWdodCthLGMueCtjLndpZHRoK2EsYy55K2MuaGVpZ2h0K2EsYy54K2Mud2lkdGgrYSxjLnktYSwiWiJdfSxnZXRDZWxsQXR0cmlidXRlczpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VyaWVzLGc9YS5vcHRpb25zLGs9KGcuY29sc2l6ZXx8MSkvMixtPShnLnJvd3NpemV8fDEpLzIsbj1hLnhBeGlzLGw9YS55QXhpcyxoPXRoaXMub3B0aW9ucy5tYXJrZXJ8fGEub3B0aW9ucy5tYXJrZXI7YT1hLnBvaW50UGxhY2VtZW50VG9YVmFsdWUoKTt2YXIgcD14KHRoaXMucG9pbnRQYWRkaW5nLGcucG9pbnRQYWRkaW5nLDApLGI9e3gxOnkoTWF0aC5yb3VuZChuLmxlbi0obi50cmFuc2xhdGUodGhpcy54LWssITEsITAsITEsITAsLWEpfHwwKSksLW4ubGVuLDIqbi5sZW4pLHgyOnkoTWF0aC5yb3VuZChuLmxlbi0obi50cmFuc2xhdGUodGhpcy54KwprLCExLCEwLCExLCEwLC1hKXx8MCkpLC1uLmxlbiwyKm4ubGVuKSx5MTp5KE1hdGgucm91bmQobC50cmFuc2xhdGUodGhpcy55LW0sITEsITAsITEsITApfHwwKSwtbC5sZW4sMipsLmxlbikseTI6eShNYXRoLnJvdW5kKGwudHJhbnNsYXRlKHRoaXMueSttLCExLCEwLCExLCEwKXx8MCksLWwubGVuLDIqbC5sZW4pfTtbWyJ3aWR0aCIsIngiXSxbImhlaWdodCIsInkiXV0uZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1hWzBdO2E9YVsxXTt2YXIgZD1hKyIxIixmPWErIjIiLGc9TWF0aC5hYnMoYltkXS1iW2ZdKSxrPWgmJmgubGluZVdpZHRofHwwLGw9TWF0aC5hYnMoYltkXStiW2ZdKS8yO2hbY10mJmhbY108ZyYmKGJbZF09bC1oW2NdLzItay8yLGJbZl09bCtoW2NdLzIray8yKTtwJiYoInkiPT09YSYmKGQ9ZixmPWErIjEiKSxiW2RdKz1wLGJbZl0tPXApfSk7cmV0dXJuIGJ9fSkpOyIifSk7cChhLCJtYXN0ZXJzL21vZHVsZXMvaGVhdG1hcC5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9aGVhdG1hcC5qcy5tYXA="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDE0LTIwMTkgSGlnaHNvZnQgQVMKIEF1dGhvcnM6IEpvbiBBcmlsZCBOeWdhcmQgLyBPeXN0ZWluIE1vc2VuZwoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihjKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhjWyJkZWZhdWx0Il09Yyxtb2R1bGUuZXhwb3J0cz1jKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy90cmVlbWFwIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbih3KXtjKHcpO2MuSGlnaGNoYXJ0cz13O3JldHVybiBjfSk6YygidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIHcoYyxkLHgsayl7Yy5oYXNPd25Qcm9wZXJ0eShkKXx8KGNbZF09ay5hcHBseShudWxsLHgpKX1jPWM/Yy5fbW9kdWxlczp7fTt3KGMsIm1peGlucy90cmVlLXNlcmllcy5qcyIsW2NbInBhcnRzL0NvbG9yLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMsZCl7dmFyIHg9ZC5leHRlbmQsaz1kLmlzQXJyYXksbj1kLmlzTnVtYmVyLHA9ZC5pc09iamVjdCwKZz1kLm1lcmdlLHY9ZC5waWNrO3JldHVybntnZXRDb2xvcjpmdW5jdGlvbihmLGgpe3ZhciB0PWguaW5kZXgsZD1oLm1hcE9wdGlvbnNUb0xldmVsLGc9aC5wYXJlbnRDb2xvcixwPWgucGFyZW50Q29sb3JJbmRleCxCPWguc2VyaWVzLEE9aC5jb2xvcnMseD1oLnNpYmxpbmdzLG09Qi5wb2ludHMsaz1CLmNoYXJ0Lm9wdGlvbnMuY2hhcnQseTtpZihmKXttPW1bZi5pXTtmPWRbZi5sZXZlbF18fHt9O2lmKGQ9bSYmZi5jb2xvckJ5UG9pbnQpe3ZhciB1PW0uaW5kZXglKEE/QS5sZW5ndGg6ay5jb2xvckNvdW50KTt2YXIgbj1BJiZBW3VdfWlmKCFCLmNoYXJ0LnN0eWxlZE1vZGUpe0E9bSYmbS5vcHRpb25zLmNvbG9yO2s9ZiYmZi5jb2xvcjtpZih5PWcpeT0oeT1mJiZmLmNvbG9yVmFyaWF0aW9uKSYmImJyaWdodG5lc3MiPT09eS5rZXk/Yy5wYXJzZShnKS5icmlnaHRlbih0L3gqeS50bykuZ2V0KCk6Zzt5PXYoQSxrLG4seSxCLmNvbG9yKX12YXIgdz12KG0mJm0ub3B0aW9ucy5jb2xvckluZGV4LApmJiZmLmNvbG9ySW5kZXgsdSxwLGguY29sb3JJbmRleCl9cmV0dXJue2NvbG9yOnksY29sb3JJbmRleDp3fX0sZ2V0TGV2ZWxPcHRpb25zOmZ1bmN0aW9uKGYpe3ZhciBoPW51bGw7aWYocChmKSl7aD17fTt2YXIgZD1uKGYuZnJvbSk/Zi5mcm9tOjE7dmFyIGM9Zi5sZXZlbHM7dmFyIHo9e307dmFyIHY9cChmLmRlZmF1bHRzKT9mLmRlZmF1bHRzOnt9O2soYykmJih6PWMucmVkdWNlKGZ1bmN0aW9uKGgsYyl7aWYocChjKSYmbihjLmxldmVsKSl7dmFyIGY9Zyh7fSxjKTt2YXIgdD0iYm9vbGVhbiI9PT10eXBlb2YgZi5sZXZlbElzQ29uc3RhbnQ/Zi5sZXZlbElzQ29uc3RhbnQ6di5sZXZlbElzQ29uc3RhbnQ7ZGVsZXRlIGYubGV2ZWxJc0NvbnN0YW50O2RlbGV0ZSBmLmxldmVsO2M9Yy5sZXZlbCsodD8wOmQtMSk7cChoW2NdKT94KGhbY10sZik6aFtjXT1mfXJldHVybiBofSx7fSkpO2M9bihmLnRvKT9mLnRvOjE7Zm9yKGY9MDtmPD1jO2YrKyloW2ZdPWcoe30sdixwKHpbZl0pP3pbZl06Cnt9KX1yZXR1cm4gaH0sc2V0VHJlZVZhbHVlczpmdW5jdGlvbiBKKGgsYyl7dmFyIGQ9Yy5iZWZvcmUsZz1jLmlkUm9vdCx0PWMubWFwSWRUb05vZGVbZ10saz1jLnBvaW50c1toLmldLHA9ayYmay5vcHRpb25zfHx7fSxtPTAsbj1bXTt4KGgse2xldmVsRHluYW1pYzpoLmxldmVsLSgoImJvb2xlYW4iPT09dHlwZW9mIGMubGV2ZWxJc0NvbnN0YW50P2MubGV2ZWxJc0NvbnN0YW50OjEpPzA6dC5sZXZlbCksbmFtZTp2KGsmJmsubmFtZSwiIiksdmlzaWJsZTpnPT09aC5pZHx8KCJib29sZWFuIj09PXR5cGVvZiBjLnZpc2libGU/Yy52aXNpYmxlOiExKX0pOyJmdW5jdGlvbiI9PT10eXBlb2YgZCYmKGg9ZChoLGMpKTtoLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oZCxnKXt2YXIgaz14KHt9LGMpO3goayx7aW5kZXg6ZyxzaWJsaW5nczpoLmNoaWxkcmVuLmxlbmd0aCx2aXNpYmxlOmgudmlzaWJsZX0pO2Q9SihkLGspO24ucHVzaChkKTtkLnZpc2libGUmJihtKz1kLnZhbCl9KTtoLnZpc2libGU9CjA8bXx8aC52aXNpYmxlO2Q9dihwLnZhbHVlLG0pO3goaCx7Y2hpbGRyZW46bixjaGlsZHJlblRvdGFsOm0saXNMZWFmOmgudmlzaWJsZSYmIW0sdmFsOmR9KTtyZXR1cm4gaH0sdXBkYXRlUm9vdElkOmZ1bmN0aW9uKGMpe2lmKHAoYykpe3ZhciBkPXAoYy5vcHRpb25zKT9jLm9wdGlvbnM6e307ZD12KGMucm9vdE5vZGUsZC5yb290SWQsIiIpO3AoYy51c2VyT3B0aW9ucykmJihjLnVzZXJPcHRpb25zLnJvb3RJZD1kKTtjLnJvb3ROb2RlPWR9cmV0dXJuIGR9fX0pO3coYywibWl4aW5zL2RyYXctcG9pbnQuanMiLFtdLGZ1bmN0aW9uKCl7dmFyIGM9ZnVuY3Rpb24oYyl7dmFyIGQsaz10aGlzLG49ay5ncmFwaGljLHA9Yy5hbmltYXRhYmxlQXR0cmlicyxnPWMub25Db21wbGV0ZSx2PWMuY3NzLGY9Yy5yZW5kZXJlcixoPW51bGw9PT0oZD1rLnNlcmllcyl8fHZvaWQgMD09PWQ/dm9pZCAwOmQub3B0aW9ucy5hbmltYXRpb247aWYoay5zaG91bGREcmF3KCkpbnx8KGsuZ3JhcGhpYz1uPQpmW2Muc2hhcGVUeXBlXShjLnNoYXBlQXJncykuYWRkKGMuZ3JvdXApKSxuLmNzcyh2KS5hdHRyKGMuYXR0cmlicykuYW5pbWF0ZShwLGMuaXNOZXc/ITE6aCxnKTtlbHNlIGlmKG4pe3ZhciB0PWZ1bmN0aW9uKCl7ay5ncmFwaGljPW49bi5kZXN0cm95KCk7ImZ1bmN0aW9uIj09PXR5cGVvZiBnJiZnKCl9O09iamVjdC5rZXlzKHApLmxlbmd0aD9uLmFuaW1hdGUocCx2b2lkIDAsZnVuY3Rpb24oKXt0KCl9KTp0KCl9fTtyZXR1cm4gZnVuY3Rpb24oZCl7KGQuYXR0cmlicz1kLmF0dHJpYnN8fHt9KVsiY2xhc3MiXT10aGlzLmdldENsYXNzTmFtZSgpO2MuY2FsbCh0aGlzLGQpfX0pO3coYywibW9kdWxlcy90cmVlbWFwLnNyYy5qcyIsW2NbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJtaXhpbnMvdHJlZS1zZXJpZXMuanMiXSxjWyJtaXhpbnMvZHJhdy1wb2ludC5qcyJdLGNbInBhcnRzL0NvbG9yLmpzIl0sY1sibWl4aW5zL2xlZ2VuZC1zeW1ib2wuanMiXSxjWyJwYXJ0cy9Qb2ludC5qcyJdLApjWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYyxkLHgsayxuLHAsZyl7dmFyIHY9ay5wYXJzZSxmPWcuYWRkRXZlbnQsaD1nLmNvcnJlY3RGbG9hdCx0PWcuZGVmaW5lZCx3PWcuZXJyb3Isej1nLmV4dGVuZCxLPWcuZmlyZUV2ZW50LEI9Zy5pc0FycmF5LEE9Zy5pc051bWJlcixMPWcuaXNPYmplY3QsbT1nLmlzU3RyaW5nLEQ9Zy5tZXJnZSx5PWcub2JqZWN0RWFjaCx1PWcucGljaztrPWcuc2VyaWVzVHlwZTt2YXIgTT1nLnN0YWJsZVNvcnQsRz1jLnNlcmllc1R5cGVzO2c9Yy5ub29wO3ZhciBOPWQuZ2V0Q29sb3IsTz1kLmdldExldmVsT3B0aW9ucyxFPWMuU2VyaWVzLFA9ZnVuY3Rpb24oYSxiLGUpe2U9ZXx8dGhpczt5KGEsZnVuY3Rpb24oYyxsKXtiLmNhbGwoZSxjLGwsYSl9KX0sRj1mdW5jdGlvbihhLGIsZSl7ZT1lfHx0aGlzO2E9Yi5jYWxsKGUsYSk7ITEhPT1hJiZGKGEsYixlKX0sUT1kLnVwZGF0ZVJvb3RJZCxIPSExO2soInRyZWVtYXAiLCJzY2F0dGVyIiwKe2FsbG93VHJhdmVyc2luZ1RyZWU6ITEsYW5pbWF0aW9uTGltaXQ6MjUwLHNob3dJbkxlZ2VuZDohMSxtYXJrZXI6ITEsY29sb3JCeVBvaW50OiExLGRhdGFMYWJlbHM6e2RlZmVyOiExLGVuYWJsZWQ6ITAsZm9ybWF0dGVyOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyYmdGhpcy5wb2ludD90aGlzLnBvaW50Ont9O3JldHVybiBtKGEubmFtZSk/YS5uYW1lOiIifSxpbnNpZGU6ITAsdmVydGljYWxBbGlnbjoibWlkZGxlIn0sdG9vbHRpcDp7aGVhZGVyRm9ybWF0OiIiLHBvaW50Rm9ybWF0OiI8Yj57cG9pbnQubmFtZX08L2I+OiB7cG9pbnQudmFsdWV9PGJyLz4ifSxpZ25vcmVIaWRkZW5Qb2ludDohMCxsYXlvdXRBbGdvcml0aG06InNsaWNlQW5kRGljZSIsbGF5b3V0U3RhcnRpbmdEaXJlY3Rpb246InZlcnRpY2FsIixhbHRlcm5hdGVTdGFydGluZ0RpcmVjdGlvbjohMSxsZXZlbElzQ29uc3RhbnQ6ITAsZHJpbGxVcEJ1dHRvbjp7cG9zaXRpb246e2FsaWduOiJyaWdodCIseDotMTAseToxMH19LAp0cmF2ZXJzZVVwQnV0dG9uOntwb3NpdGlvbjp7YWxpZ246InJpZ2h0Iix4Oi0xMCx5OjEwfX0sYm9yZGVyQ29sb3I6IiNlNmU2ZTYiLGJvcmRlcldpZHRoOjEsY29sb3JLZXk6ImNvbG9yVmFsdWUiLG9wYWNpdHk6LjE1LHN0YXRlczp7aG92ZXI6e2JvcmRlckNvbG9yOiIjOTk5OTk5IixicmlnaHRuZXNzOkcuaGVhdG1hcD8wOi4xLGhhbG86ITEsb3BhY2l0eTouNzUsc2hhZG93OiExfX19LHtwb2ludEFycmF5TWFwOlsidmFsdWUiXSxkaXJlY3RUb3VjaDohMCxvcHRpb25hbEF4aXM6ImNvbG9yQXhpcyIsZ2V0U3ltYm9sOmcscGFyYWxsZWxBcnJheXM6WyJ4IiwieSIsInZhbHVlIiwiY29sb3JWYWx1ZSJdLGNvbG9yS2V5OiJjb2xvclZhbHVlIix0cmFja2VyR3JvdXBzOlsiZ3JvdXAiLCJkYXRhTGFiZWxzR3JvdXAiXSxnZXRMaXN0T2ZQYXJlbnRzOmZ1bmN0aW9uKGEsYil7YT1CKGEpP2E6W107dmFyIGU9QihiKT9iOltdO2I9YS5yZWR1Y2UoZnVuY3Rpb24oYSxiLGUpe2I9dShiLnBhcmVudCwKIiIpOyJ1bmRlZmluZWQiPT09dHlwZW9mIGFbYl0mJihhW2JdPVtdKTthW2JdLnB1c2goZSk7cmV0dXJuIGF9LHsiIjpbXX0pO1AoYixmdW5jdGlvbihhLGIsYyl7IiIhPT1iJiYtMT09PWUuaW5kZXhPZihiKSYmKGEuZm9yRWFjaChmdW5jdGlvbihhKXtjWyIiXS5wdXNoKGEpfSksZGVsZXRlIGNbYl0pfSk7cmV0dXJuIGJ9LGdldFRyZWU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmRhdGEubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlkfSk7YT10aGlzLmdldExpc3RPZlBhcmVudHModGhpcy5kYXRhLGEpO3RoaXMubm9kZU1hcD1bXTtyZXR1cm4gdGhpcy5idWlsZE5vZGUoIiIsLTEsMCxhLG51bGwpfSxoYXNEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnByb2Nlc3NlZFhEYXRhLmxlbmd0aH0saW5pdDpmdW5jdGlvbihhLGIpe3ZhciBlPWMuY29sb3JNYXBTZXJpZXNNaXhpbjtlJiYodGhpcy5jb2xvckF0dHJpYnM9ZS5jb2xvckF0dHJpYnMpO3RoaXMuZXZlbnRzVG9VbmJpbmQucHVzaChmKHRoaXMsCiJzZXRPcHRpb25zIixmdW5jdGlvbihhKXthPWEudXNlck9wdGlvbnM7dChhLmFsbG93RHJpbGxUb05vZGUpJiYhdChhLmFsbG93VHJhdmVyc2luZ1RyZWUpJiYoYS5hbGxvd1RyYXZlcnNpbmdUcmVlPWEuYWxsb3dEcmlsbFRvTm9kZSxkZWxldGUgYS5hbGxvd0RyaWxsVG9Ob2RlKTt0KGEuZHJpbGxVcEJ1dHRvbikmJiF0KGEudHJhdmVyc2VVcEJ1dHRvbikmJihhLnRyYXZlcnNlVXBCdXR0b249YS5kcmlsbFVwQnV0dG9uLGRlbGV0ZSBhLmRyaWxsVXBCdXR0b24pfSkpO0UucHJvdG90eXBlLmluaXQuY2FsbCh0aGlzLGEsYik7ZGVsZXRlIHRoaXMub3BhY2l0eTt0aGlzLm9wdGlvbnMuYWxsb3dUcmF2ZXJzaW5nVHJlZSYmdGhpcy5ldmVudHNUb1VuYmluZC5wdXNoKGYodGhpcywiY2xpY2siLHRoaXMub25DbGlja0RyaWxsVG9Ob2RlKSl9LGJ1aWxkTm9kZTpmdW5jdGlvbihhLGIsZSxjLGwpe3ZhciByPXRoaXMscT1bXSxkPXIucG9pbnRzW2JdLGY9MCxDOyhjW2FdfHxbXSkuZm9yRWFjaChmdW5jdGlvbihiKXtDPQpyLmJ1aWxkTm9kZShyLnBvaW50c1tiXS5pZCxiLGUrMSxjLGEpO2Y9TWF0aC5tYXgoQy5oZWlnaHQrMSxmKTtxLnB1c2goQyl9KTtiPXtpZDphLGk6YixjaGlsZHJlbjpxLGhlaWdodDpmLGxldmVsOmUscGFyZW50OmwsdmlzaWJsZTohMX07ci5ub2RlTWFwW2IuaWRdPWI7ZCYmKGQubm9kZT1iKTtyZXR1cm4gYn0sc2V0VHJlZVZhbHVlczpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGU9Yi5vcHRpb25zLGM9Yi5ub2RlTWFwW2Iucm9vdE5vZGVdO2U9ImJvb2xlYW4iPT09dHlwZW9mIGUubGV2ZWxJc0NvbnN0YW50P2UubGV2ZWxJc0NvbnN0YW50OiEwO3ZhciBsPTAsST1bXSxxPWIucG9pbnRzW2EuaV07YS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGEpe2E9Yi5zZXRUcmVlVmFsdWVzKGEpO0kucHVzaChhKTthLmlnbm9yZXx8KGwrPWEudmFsKX0pO00oSSxmdW5jdGlvbihhLGIpe3JldHVybiBhLnNvcnRJbmRleC1iLnNvcnRJbmRleH0pO3ZhciBkPXUocSYmcS5vcHRpb25zLnZhbHVlLApsKTtxJiYocS52YWx1ZT1kKTt6KGEse2NoaWxkcmVuOkksY2hpbGRyZW5Ub3RhbDpsLGlnbm9yZTohKHUocSYmcS52aXNpYmxlLCEwKSYmMDxkKSxpc0xlYWY6YS52aXNpYmxlJiYhbCxsZXZlbER5bmFtaWM6YS5sZXZlbC0oZT8wOmMubGV2ZWwpLG5hbWU6dShxJiZxLm5hbWUsIiIpLHNvcnRJbmRleDp1KHEmJnEuc29ydEluZGV4LC1kKSx2YWw6ZH0pO3JldHVybiBhfSxjYWxjdWxhdGVDaGlsZHJlbkFyZWFzOmZ1bmN0aW9uKGEsYil7dmFyIGU9dGhpcyxjPWUub3B0aW9ucyxsPWUubWFwT3B0aW9uc1RvTGV2ZWxbYS5sZXZlbCsxXSxkPXUoZVtsJiZsLmxheW91dEFsZ29yaXRobV0mJmwubGF5b3V0QWxnb3JpdGhtLGMubGF5b3V0QWxnb3JpdGhtKSxxPWMuYWx0ZXJuYXRlU3RhcnRpbmdEaXJlY3Rpb24sZj1bXTthPWEuY2hpbGRyZW4uZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiFhLmlnbm9yZX0pO2wmJmwubGF5b3V0U3RhcnRpbmdEaXJlY3Rpb24mJihiLmRpcmVjdGlvbj0idmVydGljYWwiPT09CmwubGF5b3V0U3RhcnRpbmdEaXJlY3Rpb24/MDoxKTtmPWVbZF0oYixhKTthLmZvckVhY2goZnVuY3Rpb24oYSxjKXtjPWZbY107YS52YWx1ZXM9RChjLHt2YWw6YS5jaGlsZHJlblRvdGFsLGRpcmVjdGlvbjpxPzEtYi5kaXJlY3Rpb246Yi5kaXJlY3Rpb259KTthLnBvaW50VmFsdWVzPUQoYyx7eDpjLngvZS5heGlzUmF0aW8seToxMDAtYy55LWMuaGVpZ2h0LHdpZHRoOmMud2lkdGgvZS5heGlzUmF0aW99KTthLmNoaWxkcmVuLmxlbmd0aCYmZS5jYWxjdWxhdGVDaGlsZHJlbkFyZWFzKGEsYS52YWx1ZXMpfSl9LHNldFBvaW50VmFsdWVzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEueEF4aXMsZT1hLnlBeGlzLGM9YS5jaGFydC5zdHlsZWRNb2RlO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24obCl7dmFyIGQ9bC5ub2RlLHE9ZC5wb2ludFZhbHVlcztkPWQudmlzaWJsZTtpZihxJiZkKXtkPXEuaGVpZ2h0O3ZhciByPXEud2lkdGgsZj1xLngsaD1xLnksZz1jPzA6KGEucG9pbnRBdHRyaWJzKGwpWyJzdHJva2Utd2lkdGgiXXx8CjApJTIvMjtxPU1hdGgucm91bmQoYi50b1BpeGVscyhmLCEwKSktZztyPU1hdGgucm91bmQoYi50b1BpeGVscyhmK3IsITApKS1nO2Y9TWF0aC5yb3VuZChlLnRvUGl4ZWxzKGgsITApKS1nO2Q9TWF0aC5yb3VuZChlLnRvUGl4ZWxzKGgrZCwhMCkpLWc7bC5zaGFwZUFyZ3M9e3g6TWF0aC5taW4ocSxyKSx5Ok1hdGgubWluKGYsZCksd2lkdGg6TWF0aC5hYnMoci1xKSxoZWlnaHQ6TWF0aC5hYnMoZC1mKX07bC5wbG90WD1sLnNoYXBlQXJncy54K2wuc2hhcGVBcmdzLndpZHRoLzI7bC5wbG90WT1sLnNoYXBlQXJncy55K2wuc2hhcGVBcmdzLmhlaWdodC8yfWVsc2UgZGVsZXRlIGwucGxvdFgsZGVsZXRlIGwucGxvdFl9KX0sc2V0Q29sb3JSZWN1cnNpdmU6ZnVuY3Rpb24oYSxiLGUsYyxsKXt2YXIgZD10aGlzLHI9ZCYmZC5jaGFydDtyPXImJnIub3B0aW9ucyYmci5vcHRpb25zLmNvbG9ycztpZihhKXt2YXIgZj1OKGEse2NvbG9yczpyLGluZGV4OmMsbWFwT3B0aW9uc1RvTGV2ZWw6ZC5tYXBPcHRpb25zVG9MZXZlbCwKcGFyZW50Q29sb3I6YixwYXJlbnRDb2xvckluZGV4OmUsc2VyaWVzOmQsc2libGluZ3M6bH0pO2lmKGI9ZC5wb2ludHNbYS5pXSliLmNvbG9yPWYuY29sb3IsYi5jb2xvckluZGV4PWYuY29sb3JJbmRleDsoYS5jaGlsZHJlbnx8W10pLmZvckVhY2goZnVuY3Rpb24oYixlKXtkLnNldENvbG9yUmVjdXJzaXZlKGIsZi5jb2xvcixmLmNvbG9ySW5kZXgsZSxhLmNoaWxkcmVuLmxlbmd0aCl9KX19LGFsZ29yaXRobUdyb3VwOmZ1bmN0aW9uKGEsYixlLGMpe3RoaXMuaGVpZ2h0PWE7dGhpcy53aWR0aD1iO3RoaXMucGxvdD1jO3RoaXMuc3RhcnREaXJlY3Rpb249dGhpcy5kaXJlY3Rpb249ZTt0aGlzLmxIPXRoaXMubkg9dGhpcy5sVz10aGlzLm5XPXRoaXMudG90YWw9MDt0aGlzLmVsQXJyPVtdO3RoaXMubFA9e3RvdGFsOjAsbEg6MCxuSDowLGxXOjAsblc6MCxuUjowLGxSOjAsYXNwZWN0UmF0aW86ZnVuY3Rpb24oYSxiKXtyZXR1cm4gTWF0aC5tYXgoYS9iLGIvYSl9fTt0aGlzLmFkZEVsZW1lbnQ9CmZ1bmN0aW9uKGEpe3RoaXMubFAudG90YWw9dGhpcy5lbEFyclt0aGlzLmVsQXJyLmxlbmd0aC0xXTt0aGlzLnRvdGFsKz1hOzA9PT10aGlzLmRpcmVjdGlvbj8odGhpcy5sVz10aGlzLm5XLHRoaXMubFAubEg9dGhpcy5sUC50b3RhbC90aGlzLmxXLHRoaXMubFAubFI9dGhpcy5sUC5hc3BlY3RSYXRpbyh0aGlzLmxXLHRoaXMubFAubEgpLHRoaXMublc9dGhpcy50b3RhbC90aGlzLmhlaWdodCx0aGlzLmxQLm5IPXRoaXMubFAudG90YWwvdGhpcy5uVyx0aGlzLmxQLm5SPXRoaXMubFAuYXNwZWN0UmF0aW8odGhpcy5uVyx0aGlzLmxQLm5IKSk6KHRoaXMubEg9dGhpcy5uSCx0aGlzLmxQLmxXPXRoaXMubFAudG90YWwvdGhpcy5sSCx0aGlzLmxQLmxSPXRoaXMubFAuYXNwZWN0UmF0aW8odGhpcy5sUC5sVyx0aGlzLmxIKSx0aGlzLm5IPXRoaXMudG90YWwvdGhpcy53aWR0aCx0aGlzLmxQLm5XPXRoaXMubFAudG90YWwvdGhpcy5uSCx0aGlzLmxQLm5SPXRoaXMubFAuYXNwZWN0UmF0aW8odGhpcy5sUC5uVywKdGhpcy5uSCkpO3RoaXMuZWxBcnIucHVzaChhKX07dGhpcy5yZXNldD1mdW5jdGlvbigpe3RoaXMubFc9dGhpcy5uVz0wO3RoaXMuZWxBcnI9W107dGhpcy50b3RhbD0wfX0sYWxnb3JpdGhtQ2FsY1BvaW50czpmdW5jdGlvbihhLGIsZSxjKXt2YXIgbCxkLGYscixnPWUubFcsQz1lLmxILGs9ZS5wbG90LHA9MCxtPWUuZWxBcnIubGVuZ3RoLTE7aWYoYilnPWUublcsQz1lLm5IO2Vsc2UgdmFyIG49ZS5lbEFycltlLmVsQXJyLmxlbmd0aC0xXTtlLmVsQXJyLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoYnx8cDxtKTA9PT1lLmRpcmVjdGlvbj8obD1rLngsZD1rLnksZj1nLHI9YS9mKToobD1rLngsZD1rLnkscj1DLGY9YS9yKSxjLnB1c2goe3g6bCx5OmQsd2lkdGg6ZixoZWlnaHQ6aChyKX0pLDA9PT1lLmRpcmVjdGlvbj9rLnkrPXI6ay54Kz1mO3ArPTF9KTtlLnJlc2V0KCk7MD09PWUuZGlyZWN0aW9uP2Uud2lkdGgtPWc6ZS5oZWlnaHQtPUM7ay55PWsucGFyZW50LnkrKGsucGFyZW50LmhlaWdodC0KZS5oZWlnaHQpO2sueD1rLnBhcmVudC54KyhrLnBhcmVudC53aWR0aC1lLndpZHRoKTthJiYoZS5kaXJlY3Rpb249MS1lLmRpcmVjdGlvbik7Ynx8ZS5hZGRFbGVtZW50KG4pfSxhbGdvcml0aG1Mb3dBc3BlY3RSYXRpbzpmdW5jdGlvbihhLGIsZSl7dmFyIGM9W10sbD10aGlzLGQsZj17eDpiLngseTpiLnkscGFyZW50OmJ9LGc9MCxrPWUubGVuZ3RoLTEsaD1uZXcgdGhpcy5hbGdvcml0aG1Hcm91cChiLmhlaWdodCxiLndpZHRoLGIuZGlyZWN0aW9uLGYpO2UuZm9yRWFjaChmdW5jdGlvbihlKXtkPWUudmFsL2IudmFsKmIuaGVpZ2h0KmIud2lkdGg7aC5hZGRFbGVtZW50KGQpO2gubFAublI+aC5sUC5sUiYmbC5hbGdvcml0aG1DYWxjUG9pbnRzKGEsITEsaCxjLGYpO2c9PT1rJiZsLmFsZ29yaXRobUNhbGNQb2ludHMoYSwhMCxoLGMsZik7Zys9MX0pO3JldHVybiBjfSxhbGdvcml0aG1GaWxsOmZ1bmN0aW9uKGEsYixlKXt2YXIgYz1bXSxsLGQ9Yi5kaXJlY3Rpb24sZj1iLngsZz1iLnksCmg9Yi53aWR0aCxrPWIuaGVpZ2h0LHAsbSxuLHQ7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2w9ZS52YWwvYi52YWwqYi5oZWlnaHQqYi53aWR0aDtwPWY7bT1nOzA9PT1kPyh0PWssbj1sL3QsaC09bixmKz1uKToobj1oLHQ9bC9uLGstPXQsZys9dCk7Yy5wdXNoKHt4OnAseTptLHdpZHRoOm4saGVpZ2h0OnR9KTthJiYoZD0xLWQpfSk7cmV0dXJuIGN9LHN0cmlwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuYWxnb3JpdGhtTG93QXNwZWN0UmF0aW8oITEsYSxiKX0sc3F1YXJpZmllZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmFsZ29yaXRobUxvd0FzcGVjdFJhdGlvKCEwLGEsYil9LHNsaWNlQW5kRGljZTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmFsZ29yaXRobUZpbGwoITAsYSxiKX0sc3RyaXBlczpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmFsZ29yaXRobUZpbGwoITEsYSxiKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEub3B0aW9ucyxlPVEoYSk7CkUucHJvdG90eXBlLnRyYW5zbGF0ZS5jYWxsKGEpO3ZhciBjPWEudHJlZT1hLmdldFRyZWUoKTt2YXIgZD1hLm5vZGVNYXBbZV07YS5yZW5kZXJUcmF2ZXJzZVVwQnV0dG9uKGUpO2EubWFwT3B0aW9uc1RvTGV2ZWw9Tyh7ZnJvbTpkLmxldmVsKzEsbGV2ZWxzOmIubGV2ZWxzLHRvOmMuaGVpZ2h0LGRlZmF1bHRzOntsZXZlbElzQ29uc3RhbnQ6YS5vcHRpb25zLmxldmVsSXNDb25zdGFudCxjb2xvckJ5UG9pbnQ6Yi5jb2xvckJ5UG9pbnR9fSk7IiI9PT1lfHxkJiZkLmNoaWxkcmVuLmxlbmd0aHx8KGEuc2V0Um9vdE5vZGUoIiIsITEpLGU9YS5yb290Tm9kZSxkPWEubm9kZU1hcFtlXSk7RihhLm5vZGVNYXBbYS5yb290Tm9kZV0sZnVuY3Rpb24oYil7dmFyIGU9ITEsYz1iLnBhcmVudDtiLnZpc2libGU9ITA7aWYoY3x8IiI9PT1jKWU9YS5ub2RlTWFwW2NdO3JldHVybiBlfSk7RihhLm5vZGVNYXBbYS5yb290Tm9kZV0uY2hpbGRyZW4sZnVuY3Rpb24oYSl7dmFyIGI9ITE7YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EudmlzaWJsZT0KITA7YS5jaGlsZHJlbi5sZW5ndGgmJihiPShifHxbXSkuY29uY2F0KGEuY2hpbGRyZW4pKX0pO3JldHVybiBifSk7YS5zZXRUcmVlVmFsdWVzKGMpO2EuYXhpc1JhdGlvPWEueEF4aXMubGVuL2EueUF4aXMubGVuO2Eubm9kZU1hcFsiIl0ucG9pbnRWYWx1ZXM9ZT17eDowLHk6MCx3aWR0aDoxMDAsaGVpZ2h0OjEwMH07YS5ub2RlTWFwWyIiXS52YWx1ZXM9ZT1EKGUse3dpZHRoOmUud2lkdGgqYS5heGlzUmF0aW8sZGlyZWN0aW9uOiJ2ZXJ0aWNhbCI9PT1iLmxheW91dFN0YXJ0aW5nRGlyZWN0aW9uPzA6MSx2YWw6Yy52YWx9KTthLmNhbGN1bGF0ZUNoaWxkcmVuQXJlYXMoYyxlKTthLmNvbG9yQXhpc3x8Yi5jb2xvckJ5UG9pbnR8fGEuc2V0Q29sb3JSZWN1cnNpdmUoYS50cmVlKTtiLmFsbG93VHJhdmVyc2luZ1RyZWUmJihiPWQucG9pbnRWYWx1ZXMsYS54QXhpcy5zZXRFeHRyZW1lcyhiLngsYi54K2Iud2lkdGgsITEpLGEueUF4aXMuc2V0RXh0cmVtZXMoYi55LGIueStiLmhlaWdodCwKITEpLGEueEF4aXMuc2V0U2NhbGUoKSxhLnlBeGlzLnNldFNjYWxlKCkpO2Euc2V0UG9pbnRWYWx1ZXMoKX0sZHJhd0RhdGFMYWJlbHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9YS5tYXBPcHRpb25zVG9MZXZlbCxjLGQ7YS5wb2ludHMuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGUudmlzaWJsZX0pLmZvckVhY2goZnVuY3Rpb24oZSl7ZD1iW2Uubm9kZS5sZXZlbF07Yz17c3R5bGU6e319O2Uubm9kZS5pc0xlYWZ8fChjLmVuYWJsZWQ9ITEpO2QmJmQuZGF0YUxhYmVscyYmKGM9RChjLGQuZGF0YUxhYmVscyksYS5faGFzUG9pbnRMYWJlbHM9ITApO2Uuc2hhcGVBcmdzJiYoYy5zdHlsZS53aWR0aD1lLnNoYXBlQXJncy53aWR0aCxlLmRhdGFMYWJlbCYmZS5kYXRhTGFiZWwuY3NzKHt3aWR0aDplLnNoYXBlQXJncy53aWR0aCsicHgifSkpO2UuZGxPcHRpb25zPUQoYyxlLm9wdGlvbnMuZGF0YUxhYmVscyl9KTtFLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscy5jYWxsKHRoaXMpfSwKYWxpZ25EYXRhTGFiZWw6ZnVuY3Rpb24oYSxiLGMpe3ZhciBlPWMuc3R5bGU7IXQoZS50ZXh0T3ZlcmZsb3cpJiZiLnRleHQmJmIuZ2V0QkJveCgpLndpZHRoPmIudGV4dC50ZXh0V2lkdGgmJmIuY3NzKHt0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIix3aWR0aDplLndpZHRoKz0icHgifSk7Ry5jb2x1bW4ucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthLmRhdGFMYWJlbCYmYS5kYXRhTGFiZWwuYXR0cih7ekluZGV4OihhLm5vZGUuekluZGV4fHwwKSsxfSl9LHBvaW50QXR0cmliczpmdW5jdGlvbihhLGIpe3ZhciBjPUwodGhpcy5tYXBPcHRpb25zVG9MZXZlbCk/dGhpcy5tYXBPcHRpb25zVG9MZXZlbDp7fSxkPWEmJmNbYS5ub2RlLmxldmVsXXx8e307Yz10aGlzLm9wdGlvbnM7dmFyIGY9YiYmYy5zdGF0ZXNbYl18fHt9LGc9YSYmYS5nZXRDbGFzc05hbWUoKXx8IiI7YT17c3Ryb2tlOmEmJmEuYm9yZGVyQ29sb3J8fGQuYm9yZGVyQ29sb3J8fGYuYm9yZGVyQ29sb3J8fApjLmJvcmRlckNvbG9yLCJzdHJva2Utd2lkdGgiOnUoYSYmYS5ib3JkZXJXaWR0aCxkLmJvcmRlcldpZHRoLGYuYm9yZGVyV2lkdGgsYy5ib3JkZXJXaWR0aCksZGFzaHN0eWxlOmEmJmEuYm9yZGVyRGFzaFN0eWxlfHxkLmJvcmRlckRhc2hTdHlsZXx8Zi5ib3JkZXJEYXNoU3R5bGV8fGMuYm9yZGVyRGFzaFN0eWxlLGZpbGw6YSYmYS5jb2xvcnx8dGhpcy5jb2xvcn07LTEhPT1nLmluZGV4T2YoImhpZ2hjaGFydHMtYWJvdmUtbGV2ZWwiKT8oYS5maWxsPSJub25lIixhWyJzdHJva2Utd2lkdGgiXT0wKTotMSE9PWcuaW5kZXhPZigiaGlnaGNoYXJ0cy1pbnRlcm5hbC1ub2RlLWludGVyYWN0aXZlIik/KGI9dShmLm9wYWNpdHksYy5vcGFjaXR5KSxhLmZpbGw9dihhLmZpbGwpLnNldE9wYWNpdHkoYikuZ2V0KCksYS5jdXJzb3I9InBvaW50ZXIiKTotMSE9PWcuaW5kZXhPZigiaGlnaGNoYXJ0cy1pbnRlcm5hbC1ub2RlIik/YS5maWxsPSJub25lIjpiJiYoYS5maWxsPXYoYS5maWxsKS5icmlnaHRlbihmLmJyaWdodG5lc3MpLmdldCgpKTsKcmV0dXJuIGF9LGRyYXdQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9YS5jaGFydCxjPWIucmVuZGVyZXIsZD1iLnN0eWxlZE1vZGUsZj1hLm9wdGlvbnMsZz1kP3t9OmYuc2hhZG93LGg9Zi5ib3JkZXJSYWRpdXMsaz1iLnBvaW50Q291bnQ8Zi5hbmltYXRpb25MaW1pdCxuPWYuYWxsb3dUcmF2ZXJzaW5nVHJlZTthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBlPWIubm9kZS5sZXZlbER5bmFtaWMsbD17fSxyPXt9LHA9e30sbT0ibGV2ZWwtZ3JvdXAtIitlLHE9ISFiLmdyYXBoaWMsdD1rJiZxLHU9Yi5zaGFwZUFyZ3M7Yi5zaG91bGREcmF3KCkmJihoJiYoci5yPWgpLEQoITAsdD9sOnIscT91Ont9LGQ/e306YS5wb2ludEF0dHJpYnMoYixiLnNlbGVjdGVkJiYic2VsZWN0IikpLGEuY29sb3JBdHRyaWJzJiZkJiZ6KHAsYS5jb2xvckF0dHJpYnMoYikpLGFbbV18fChhW21dPWMuZyhtKS5hdHRyKHt6SW5kZXg6MUUzLWV9KS5hZGQoYS5ncm91cCksYVttXS5zdXJ2aXZlPQohMCkpO2IuZHJhdyh7YW5pbWF0YWJsZUF0dHJpYnM6bCxhdHRyaWJzOnIsY3NzOnAsZ3JvdXA6YVttXSxyZW5kZXJlcjpjLHNoYWRvdzpnLHNoYXBlQXJnczp1LHNoYXBlVHlwZToicmVjdCJ9KTtuJiZiLmdyYXBoaWMmJihiLmRyaWxsSWQ9Zi5pbnRlcmFjdEJ5TGVhZj9hLmRyaWxsVG9CeUxlYWYoYik6YS5kcmlsbFRvQnlHcm91cChiKSl9KX0sb25DbGlja0RyaWxsVG9Ob2RlOmZ1bmN0aW9uKGEpe3ZhciBiPShhPWEucG9pbnQpJiZhLmRyaWxsSWQ7bShiKSYmKHRoaXMuaXNEcmlsbEFsbG93ZWQ/dGhpcy5pc0RyaWxsQWxsb3dlZChiKToxKSYmKGEuc2V0U3RhdGUoIiIpLHRoaXMuc2V0Um9vdE5vZGUoYiwhMCx7dHJpZ2dlcjoiY2xpY2sifSkpfSxkcmlsbFRvQnlHcm91cDpmdW5jdGlvbihhKXt2YXIgYj0hMTsxIT09YS5ub2RlLmxldmVsLXRoaXMubm9kZU1hcFt0aGlzLnJvb3ROb2RlXS5sZXZlbHx8YS5ub2RlLmlzTGVhZnx8KGI9YS5pZCk7cmV0dXJuIGJ9LGRyaWxsVG9CeUxlYWY6ZnVuY3Rpb24oYSl7dmFyIGI9CiExO2lmKGEubm9kZS5wYXJlbnQhPT10aGlzLnJvb3ROb2RlJiZhLm5vZGUuaXNMZWFmKWZvcihhPWEubm9kZTshYjspYT10aGlzLm5vZGVNYXBbYS5wYXJlbnRdLGEucGFyZW50PT09dGhpcy5yb290Tm9kZSYmKGI9YS5pZCk7cmV0dXJuIGJ9LGRyaWxsVXA6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5vZGVNYXBbdGhpcy5yb290Tm9kZV07YSYmbShhLnBhcmVudCkmJnRoaXMuc2V0Um9vdE5vZGUoYS5wYXJlbnQsITAse3RyaWdnZXI6InRyYXZlcnNlVXBCdXR0b24ifSl9LGRyaWxsVG9Ob2RlOmZ1bmN0aW9uKGEsYil7dygzMiwhMSx2b2lkIDAseyJ0cmVlbWFwLmRyaWxsVG9Ob2RlIjoidXNlIHRyZWVtYXAuc2V0Um9vdE5vZGUifSk7dGhpcy5zZXRSb290Tm9kZShhLGIpfSxzZXRSb290Tm9kZTpmdW5jdGlvbihhLGIsYyl7YT16KHtuZXdSb290SWQ6YSxwcmV2aW91c1Jvb3RJZDp0aGlzLnJvb3ROb2RlLHJlZHJhdzp1KGIsITApLHNlcmllczp0aGlzfSxjKTtLKHRoaXMsInNldFJvb3ROb2RlIiwKYSxmdW5jdGlvbihhKXt2YXIgYj1hLnNlcmllcztiLmlkUHJldmlvdXNSb290PWEucHJldmlvdXNSb290SWQ7Yi5yb290Tm9kZT1hLm5ld1Jvb3RJZDtiLmlzRGlydHk9ITA7YS5yZWRyYXcmJmIuY2hhcnQucmVkcmF3KCl9KX0saXNEcmlsbEFsbG93ZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy50cmVlLGM9Yi5jaGlsZHJlblswXTtyZXR1cm4hKDE9PT1iLmNoaWxkcmVuLmxlbmd0aCYmKCIiPT09dGhpcy5yb290Tm9kZSYmYT09PWMuaWR8fHRoaXMucm9vdE5vZGU9PT1jLmlkJiYiIj09PWEpKX0scmVuZGVyVHJhdmVyc2VVcEJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9Yi5ub2RlTWFwW2FdLGQ9Yi5vcHRpb25zLnRyYXZlcnNlVXBCdXR0b24sZj11KGQudGV4dCxjLm5hbWUsIjwgQmFjayIpOyIiIT09YSYmKCFiLmlzRHJpbGxBbGxvd2VkfHxtKGMucGFyZW50KSYmYi5pc0RyaWxsQWxsb3dlZChjLnBhcmVudCkpP3RoaXMuZHJpbGxVcEJ1dHRvbj8odGhpcy5kcmlsbFVwQnV0dG9uLnBsYWNlZD0KITEsdGhpcy5kcmlsbFVwQnV0dG9uLmF0dHIoe3RleHQ6Zn0pLmFsaWduKCkpOihjPShhPWQudGhlbWUpJiZhLnN0YXRlcyx0aGlzLmRyaWxsVXBCdXR0b249dGhpcy5jaGFydC5yZW5kZXJlci5idXR0b24oZixudWxsLG51bGwsZnVuY3Rpb24oKXtiLmRyaWxsVXAoKX0sYSxjJiZjLmhvdmVyLGMmJmMuc2VsZWN0KS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1kcmlsbHVwLWJ1dHRvbiIpLmF0dHIoe2FsaWduOmQucG9zaXRpb24uYWxpZ24sekluZGV4Ojd9KS5hZGQoKS5hbGlnbihkLnBvc2l0aW9uLCExLGQucmVsYXRpdmVUb3x8InBsb3RCb3giKSk6Yi5kcmlsbFVwQnV0dG9uJiYoYi5kcmlsbFVwQnV0dG9uPWIuZHJpbGxVcEJ1dHRvbi5kZXN0cm95KCkpfSxidWlsZEtEVHJlZTpnLGRyYXdMZWdlbmRTeW1ib2w6bi5kcmF3UmVjdGFuZ2xlLGdldEV4dHJlbWVzOmZ1bmN0aW9uKCl7dmFyIGE9RS5wcm90b3R5cGUuZ2V0RXh0cmVtZXMuY2FsbCh0aGlzLHRoaXMuY29sb3JWYWx1ZURhdGEpLApiPWEuZGF0YU1heDt0aGlzLnZhbHVlTWluPWEuZGF0YU1pbjt0aGlzLnZhbHVlTWF4PWI7cmV0dXJuIEUucHJvdG90eXBlLmdldEV4dHJlbWVzLmNhbGwodGhpcyl9LGdldEV4dHJlbWVzRnJvbUFsbDohMCxzZXRTdGF0ZTpmdW5jdGlvbihhKXt0aGlzLm9wdGlvbnMuaW5hY3RpdmVPdGhlclBvaW50cz0hMDtFLnByb3RvdHlwZS5zZXRTdGF0ZS5jYWxsKHRoaXMsYSwhMSk7dGhpcy5vcHRpb25zLmluYWN0aXZlT3RoZXJQb2ludHM9ITF9LHV0aWxzOntyZWN1cnNpdmU6Rn19LHtkcmF3Ongsc2V0VmlzaWJsZTpHLnBpZS5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUuc2V0VmlzaWJsZSxnZXRDbGFzc05hbWU6ZnVuY3Rpb24oKXt2YXIgYT1wLnByb3RvdHlwZS5nZXRDbGFzc05hbWUuY2FsbCh0aGlzKSxiPXRoaXMuc2VyaWVzLGM9Yi5vcHRpb25zO3RoaXMubm9kZS5sZXZlbDw9Yi5ub2RlTWFwW2Iucm9vdE5vZGVdLmxldmVsP2ErPSIgaGlnaGNoYXJ0cy1hYm92ZS1sZXZlbCI6CnRoaXMubm9kZS5pc0xlYWZ8fHUoYy5pbnRlcmFjdEJ5TGVhZiwhYy5hbGxvd1RyYXZlcnNpbmdUcmVlKT90aGlzLm5vZGUuaXNMZWFmfHwoYSs9IiBoaWdoY2hhcnRzLWludGVybmFsLW5vZGUiKTphKz0iIGhpZ2hjaGFydHMtaW50ZXJuYWwtbm9kZS1pbnRlcmFjdGl2ZSI7cmV0dXJuIGF9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZHx8QSh0aGlzLnZhbHVlKX0sc2V0U3RhdGU6ZnVuY3Rpb24oYSl7cC5wcm90b3R5cGUuc2V0U3RhdGUuY2FsbCh0aGlzLGEpO3RoaXMuZ3JhcGhpYyYmdGhpcy5ncmFwaGljLmF0dHIoe3pJbmRleDoiaG92ZXIiPT09YT8xOjB9KX0sc2hvdWxkRHJhdzpmdW5jdGlvbigpe3JldHVybiBBKHRoaXMucGxvdFkpJiZudWxsIT09dGhpcy55fX0pO2YoYy5TZXJpZXMsImFmdGVyQmluZEF4ZXMiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy54QXhpcyxiPXRoaXMueUF4aXM7aWYoYSYmYilpZih0aGlzLmlzKCJ0cmVlbWFwIikpe3ZhciBjPXtlbmRPblRpY2s6ITEsCmdyaWRMaW5lV2lkdGg6MCxsaW5lV2lkdGg6MCxtaW46MCxkYXRhTWluOjAsbWluUGFkZGluZzowLG1heDoxMDAsZGF0YU1heDoxMDAsbWF4UGFkZGluZzowLHN0YXJ0T25UaWNrOiExLHRpdGxlOm51bGwsdGlja1Bvc2l0aW9uczpbXX07eihiLm9wdGlvbnMsYyk7eihhLm9wdGlvbnMsYyk7SD0hMH1lbHNlIEgmJihiLnNldE9wdGlvbnMoYi51c2VyT3B0aW9ucyksYS5zZXRPcHRpb25zKGEudXNlck9wdGlvbnMpLEg9ITEpfSk7IiJ9KTt3KGMsIm1hc3RlcnMvbW9kdWxlcy90cmVlbWFwLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD10cmVlbWFwLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFNhbmtleSBkaWFncmFtIG1vZHVsZQoKIChjKSAyMDEwLTIwMTkgVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYil7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYlsiZGVmYXVsdCJdPWIsbW9kdWxlLmV4cG9ydHM9Yik6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvc2Fua2V5IixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihuKXtiKG4pO2IuSGlnaGNoYXJ0cz1uO3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIG4oYixoLGssbCl7Yi5oYXNPd25Qcm9wZXJ0eShoKXx8KGJbaF09bC5hcHBseShudWxsLGspKX1iPWI/Yi5fbW9kdWxlczp7fTtuKGIsIm1peGlucy9ub2Rlcy5qcyIsW2JbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9Qb2ludC5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLGgsayl7dmFyIGw9ay5kZWZpbmVkLHU9ay5leHRlbmQsCnE9ay5maW5kLG49ay5waWNrO2IuTm9kZXNNaXhpbj17Y3JlYXRlTm9kZTpmdW5jdGlvbihiKXtmdW5jdGlvbiBkKGEsZCl7cmV0dXJuIHEoYSxmdW5jdGlvbihjKXtyZXR1cm4gYy5pZD09PWR9KX12YXIgYT1kKHRoaXMubm9kZXMsYikseD10aGlzLnBvaW50Q2xhc3M7aWYoIWEpe3ZhciBoPXRoaXMub3B0aW9ucy5ub2RlcyYmZCh0aGlzLm9wdGlvbnMubm9kZXMsYik7YT0obmV3IHgpLmluaXQodGhpcyx1KHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtbm9kZSIsaXNOb2RlOiEwLGlkOmIseToxfSxoKSk7YS5saW5rc1RvPVtdO2EubGlua3NGcm9tPVtdO2EuZm9ybWF0UHJlZml4PSJub2RlIjthLm5hbWU9YS5uYW1lfHxhLm9wdGlvbnMuaWR8fCIiO2EubWFzcz1uKGEub3B0aW9ucy5tYXNzLGEub3B0aW9ucy5tYXJrZXImJmEub3B0aW9ucy5tYXJrZXIucmFkaXVzLHRoaXMub3B0aW9ucy5tYXJrZXImJnRoaXMub3B0aW9ucy5tYXJrZXIucmFkaXVzLDQpO2EuZ2V0U3VtPWZ1bmN0aW9uKCl7dmFyIGQ9CjAsYj0wO2EubGlua3NUby5mb3JFYWNoKGZ1bmN0aW9uKGMpe2QrPWMud2VpZ2h0fSk7YS5saW5rc0Zyb20uZm9yRWFjaChmdW5jdGlvbihjKXtiKz1jLndlaWdodH0pO3JldHVybiBNYXRoLm1heChkLGIpfTthLm9mZnNldD1mdW5jdGlvbihkLGIpe2Zvcih2YXIgYz0wLGU9MDtlPGFbYl0ubGVuZ3RoO2UrKyl7aWYoYVtiXVtlXT09PWQpcmV0dXJuIGM7Yys9YVtiXVtlXS53ZWlnaHR9fTthLmhhc1NoYXBlPWZ1bmN0aW9uKCl7dmFyIGQ9MDthLmxpbmtzVG8uZm9yRWFjaChmdW5jdGlvbihhKXthLm91dGdvaW5nJiZkKyt9KTtyZXR1cm4hYS5saW5rc1RvLmxlbmd0aHx8ZCE9PWEubGlua3NUby5sZW5ndGh9O3RoaXMubm9kZXMucHVzaChhKX1yZXR1cm4gYX0sZ2VuZXJhdGVQb2ludHM6ZnVuY3Rpb24oKXt2YXIgaD10aGlzLmNoYXJ0LGQ9e307Yi5TZXJpZXMucHJvdG90eXBlLmdlbmVyYXRlUG9pbnRzLmNhbGwodGhpcyk7dGhpcy5ub2Rlc3x8KHRoaXMubm9kZXM9W10pO3RoaXMuY29sb3JDb3VudGVyPQowO3RoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLmxpbmtzRnJvbS5sZW5ndGg9MDthLmxpbmtzVG8ubGVuZ3RoPTA7YS5sZXZlbD1hLm9wdGlvbnMubGV2ZWx9KTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2woYS5mcm9tKSYmKGRbYS5mcm9tXXx8KGRbYS5mcm9tXT10aGlzLmNyZWF0ZU5vZGUoYS5mcm9tKSksZFthLmZyb21dLmxpbmtzRnJvbS5wdXNoKGEpLGEuZnJvbU5vZGU9ZFthLmZyb21dLGguc3R5bGVkTW9kZT9hLmNvbG9ySW5kZXg9bihhLm9wdGlvbnMuY29sb3JJbmRleCxkW2EuZnJvbV0uY29sb3JJbmRleCk6YS5jb2xvcj1hLm9wdGlvbnMuY29sb3J8fGRbYS5mcm9tXS5jb2xvcik7bChhLnRvKSYmKGRbYS50b118fChkW2EudG9dPXRoaXMuY3JlYXRlTm9kZShhLnRvKSksZFthLnRvXS5saW5rc1RvLnB1c2goYSksYS50b05vZGU9ZFthLnRvXSk7YS5uYW1lPWEubmFtZXx8YS5pZH0sdGhpcyk7dGhpcy5ub2RlTG9va3VwPWR9LHNldERhdGE6ZnVuY3Rpb24oKXt0aGlzLm5vZGVzJiYKKHRoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLmRlc3Ryb3koKX0pLHRoaXMubm9kZXMubGVuZ3RoPTApO2IuU2VyaWVzLnByb3RvdHlwZS5zZXREYXRhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZGF0YT1bXS5jb25jYXQodGhpcy5wb2ludHN8fFtdLHRoaXMubm9kZXMpO3JldHVybiBiLlNlcmllcy5wcm90b3R5cGUuZGVzdHJveS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHNldE5vZGVTdGF0ZTpmdW5jdGlvbihiKXt2YXIgZD1hcmd1bWVudHMsYT10aGlzLmlzTm9kZT90aGlzLmxpbmtzVG8uY29uY2F0KHRoaXMubGlua3NGcm9tKTpbdGhpcy5mcm9tTm9kZSx0aGlzLnRvTm9kZV07InNlbGVjdCIhPT1iJiZhLmZvckVhY2goZnVuY3Rpb24oYSl7YSYmYS5zZXJpZXMmJihoLnByb3RvdHlwZS5zZXRTdGF0ZS5hcHBseShhLGQpLGEuaXNOb2RlfHwoYS5mcm9tTm9kZS5ncmFwaGljJiZoLnByb3RvdHlwZS5zZXRTdGF0ZS5hcHBseShhLmZyb21Ob2RlLApkKSxhLnRvTm9kZSYmYS50b05vZGUuZ3JhcGhpYyYmaC5wcm90b3R5cGUuc2V0U3RhdGUuYXBwbHkoYS50b05vZGUsZCkpKX0pO2gucHJvdG90eXBlLnNldFN0YXRlLmFwcGx5KHRoaXMsZCl9fX0pO24oYiwibWl4aW5zL3RyZWUtc2VyaWVzLmpzIixbYlsicGFydHMvQ29sb3IuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYixoKXt2YXIgaz1oLmV4dGVuZCxsPWguaXNBcnJheSxuPWguaXNOdW1iZXIscT1oLmlzT2JqZWN0LHU9aC5tZXJnZSxyPWgucGljaztyZXR1cm57Z2V0Q29sb3I6ZnVuY3Rpb24oZCxhKXt2YXIgeD1hLmluZGV4LGg9YS5tYXBPcHRpb25zVG9MZXZlbCxrPWEucGFyZW50Q29sb3IsbD1hLnBhcmVudENvbG9ySW5kZXgsYz1hLnNlcmllcyxlPWEuY29sb3JzLEI9YS5zaWJsaW5ncyxtPWMucG9pbnRzLGc9Yy5jaGFydC5vcHRpb25zLmNoYXJ0LHc7aWYoZCl7bT1tW2QuaV07ZD1oW2QubGV2ZWxdfHx7fTtpZihoPW0mJmQuY29sb3JCeVBvaW50KXt2YXIgZj0KbS5pbmRleCUoZT9lLmxlbmd0aDpnLmNvbG9yQ291bnQpO3ZhciBwPWUmJmVbZl19aWYoIWMuY2hhcnQuc3R5bGVkTW9kZSl7ZT1tJiZtLm9wdGlvbnMuY29sb3I7Zz1kJiZkLmNvbG9yO2lmKHc9ayl3PSh3PWQmJmQuY29sb3JWYXJpYXRpb24pJiYiYnJpZ2h0bmVzcyI9PT13LmtleT9iLnBhcnNlKGspLmJyaWdodGVuKHgvQip3LnRvKS5nZXQoKTprO3c9cihlLGcscCx3LGMuY29sb3IpfXZhciB0PXIobSYmbS5vcHRpb25zLmNvbG9ySW5kZXgsZCYmZC5jb2xvckluZGV4LGYsbCxhLmNvbG9ySW5kZXgpfXJldHVybntjb2xvcjp3LGNvbG9ySW5kZXg6dH19LGdldExldmVsT3B0aW9uczpmdW5jdGlvbihkKXt2YXIgYT1udWxsO2lmKHEoZCkpe2E9e307dmFyIGI9bihkLmZyb20pP2QuZnJvbToxO3ZhciBoPWQubGV2ZWxzO3ZhciB2PXt9O3ZhciByPXEoZC5kZWZhdWx0cyk/ZC5kZWZhdWx0czp7fTtsKGgpJiYodj1oLnJlZHVjZShmdW5jdGlvbihhLGUpe2lmKHEoZSkmJm4oZS5sZXZlbCkpe3ZhciBjPQp1KHt9LGUpO3ZhciBtPSJib29sZWFuIj09PXR5cGVvZiBjLmxldmVsSXNDb25zdGFudD9jLmxldmVsSXNDb25zdGFudDpyLmxldmVsSXNDb25zdGFudDtkZWxldGUgYy5sZXZlbElzQ29uc3RhbnQ7ZGVsZXRlIGMubGV2ZWw7ZT1lLmxldmVsKyhtPzA6Yi0xKTtxKGFbZV0pP2soYVtlXSxjKTphW2VdPWN9cmV0dXJuIGF9LHt9KSk7aD1uKGQudG8pP2QudG86MTtmb3IoZD0wO2Q8PWg7ZCsrKWFbZF09dSh7fSxyLHEodltkXSk/dltkXTp7fSl9cmV0dXJuIGF9LHNldFRyZWVWYWx1ZXM6ZnVuY3Rpb24geihhLGIpe3ZhciBoPWIuYmVmb3JlLGw9Yi5pZFJvb3QsYz1iLm1hcElkVG9Ob2RlW2xdLGU9Yi5wb2ludHNbYS5pXSxCPWUmJmUub3B0aW9uc3x8e30sbT0wLGc9W107ayhhLHtsZXZlbER5bmFtaWM6YS5sZXZlbC0oKCJib29sZWFuIj09PXR5cGVvZiBiLmxldmVsSXNDb25zdGFudD9iLmxldmVsSXNDb25zdGFudDoxKT8wOmMubGV2ZWwpLG5hbWU6cihlJiZlLm5hbWUsIiIpLHZpc2libGU6bD09PQphLmlkfHwoImJvb2xlYW4iPT09dHlwZW9mIGIudmlzaWJsZT9iLnZpc2libGU6ITEpfSk7ImZ1bmN0aW9uIj09PXR5cGVvZiBoJiYoYT1oKGEsYikpO2EuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihjLGUpe3ZhciBmPWsoe30sYik7ayhmLHtpbmRleDplLHNpYmxpbmdzOmEuY2hpbGRyZW4ubGVuZ3RoLHZpc2libGU6YS52aXNpYmxlfSk7Yz16KGMsZik7Zy5wdXNoKGMpO2MudmlzaWJsZSYmKG0rPWMudmFsKX0pO2EudmlzaWJsZT0wPG18fGEudmlzaWJsZTtoPXIoQi52YWx1ZSxtKTtrKGEse2NoaWxkcmVuOmcsY2hpbGRyZW5Ub3RhbDptLGlzTGVhZjphLnZpc2libGUmJiFtLHZhbDpofSk7cmV0dXJuIGF9LHVwZGF0ZVJvb3RJZDpmdW5jdGlvbihhKXtpZihxKGEpKXt2YXIgYj1xKGEub3B0aW9ucyk/YS5vcHRpb25zOnt9O2I9cihhLnJvb3ROb2RlLGIucm9vdElkLCIiKTtxKGEudXNlck9wdGlvbnMpJiYoYS51c2VyT3B0aW9ucy5yb290SWQ9Yik7YS5yb290Tm9kZT1ifXJldHVybiBifX19KTsKbihiLCJtb2R1bGVzL3NhbmtleS5zcmMuanMiLFtiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsicGFydHMvQ29sb3IuanMiXSxiWyJwYXJ0cy9Qb2ludC5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdLGJbIm1peGlucy90cmVlLXNlcmllcy5qcyJdXSxmdW5jdGlvbihiLGgsayxsLG4pe3ZhciBxPWwuZGVmaW5lZCx1PWwuZmluZCxyPWwuaXNPYmplY3QsZD1sLm1lcmdlLGE9bC5waWNrLHg9bC5yZWxhdGl2ZUxlbmd0aCx6PWwuc2VyaWVzVHlwZSx2PWwuc3RhYmxlU29ydCxLPW4uZ2V0TGV2ZWxPcHRpb25zO3ooInNhbmtleSIsImNvbHVtbiIse2JvcmRlcldpZHRoOjAsY29sb3JCeVBvaW50OiEwLGN1cnZlRmFjdG9yOi4zMyxkYXRhTGFiZWxzOntlbmFibGVkOiEwLGJhY2tncm91bmRDb2xvcjoibm9uZSIsY3JvcDohMSxub2RlRm9ybWF0OnZvaWQgMCxub2RlRm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQubmFtZX0sZm9ybWF0OnZvaWQgMCxmb3JtYXR0ZXI6ZnVuY3Rpb24oKXt9LAppbnNpZGU6ITB9LGluYWN0aXZlT3RoZXJQb2ludHM6ITAsbGlua09wYWNpdHk6LjUsbWluTGlua1dpZHRoOjAsbm9kZVdpZHRoOjIwLG5vZGVQYWRkaW5nOjEwLHNob3dJbkxlZ2VuZDohMSxzdGF0ZXM6e2hvdmVyOntsaW5rT3BhY2l0eToxfSxpbmFjdGl2ZTp7bGlua09wYWNpdHk6LjEsb3BhY2l0eTouMSxhbmltYXRpb246e2R1cmF0aW9uOjUwfX19LHRvb2x0aXA6e2ZvbGxvd1BvaW50ZXI6ITAsaGVhZGVyRm9ybWF0Oic8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMHB4Ij57c2VyaWVzLm5hbWV9PC9zcGFuPjxici8+Jyxwb2ludEZvcm1hdDoie3BvaW50LmZyb21Ob2RlLm5hbWV9IFx1MjE5MiB7cG9pbnQudG9Ob2RlLm5hbWV9OiA8Yj57cG9pbnQud2VpZ2h0fTwvYj48YnIvPiIsbm9kZUZvcm1hdDoie3BvaW50Lm5hbWV9OiA8Yj57cG9pbnQuc3VtfTwvYj48YnIvPiJ9fSx7aXNDYXJ0ZXNpYW46ITEsaW52ZXJ0YWJsZTohMCxmb3JjZURMOiEwLG9yZGVyTm9kZXM6ITAscG9pbnRBcnJheU1hcDpbImZyb20iLAoidG8iXSxjcmVhdGVOb2RlOmIuTm9kZXNNaXhpbi5jcmVhdGVOb2RlLHNlYXJjaFBvaW50OmIubm9vcCxzZXREYXRhOmIuTm9kZXNNaXhpbi5zZXREYXRhLGRlc3Ryb3k6Yi5Ob2Rlc01peGluLmRlc3Ryb3ksZ2V0Tm9kZVBhZGRpbmc6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMubm9kZVBhZGRpbmd8fDA7aWYodGhpcy5ub2RlQ29sdW1ucyl7dmFyIGU9dGhpcy5ub2RlQ29sdW1ucy5yZWR1Y2UoZnVuY3Rpb24oYSxjKXtyZXR1cm4gTWF0aC5tYXgoYSxjLmxlbmd0aCl9LDApO2UqYT50aGlzLmNoYXJ0LnBsb3RTaXplWSYmKGE9dGhpcy5jaGFydC5wbG90U2l6ZVkvZSl9cmV0dXJuIGF9LGNyZWF0ZU5vZGVDb2x1bW46ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGU9dGhpcy5jaGFydCxiPVtdO2Iuc3VtPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVkdWNlKGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGErYy5nZXRTdW0oKX0sMCl9O2Iub2Zmc2V0PWZ1bmN0aW9uKGMsZSl7Zm9yKHZhciBkPQowLGYsbT1hLm5vZGVQYWRkaW5nLGc9MDtnPGIubGVuZ3RoO2crKyl7Zj1iW2ddLmdldFN1bSgpO3ZhciBCPU1hdGgubWF4KGYqZSxhLm9wdGlvbnMubWluTGlua1dpZHRoKTtmPWY/QittOjA7aWYoYltnXT09PWMpcmV0dXJue3JlbGF0aXZlVG9wOmQreChjLm9wdGlvbnMub2Zmc2V0fHwwLGYpfTtkKz1mfX07Yi50b3A9ZnVuY3Rpb24oYyl7dmFyIGI9YS5ub2RlUGFkZGluZyxkPXRoaXMucmVkdWNlKGZ1bmN0aW9uKGUsZCl7MDxlJiYoZSs9Yik7ZD1NYXRoLm1heChkLmdldFN1bSgpKmMsYS5vcHRpb25zLm1pbkxpbmtXaWR0aCk7cmV0dXJuIGUrZH0sMCk7cmV0dXJuKGUucGxvdFNpemVZLWQpLzJ9O3JldHVybiBifSxjcmVhdGVOb2RlQ29sdW1uczpmdW5jdGlvbigpe3ZhciBhPVtdO3RoaXMubm9kZXMuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgYj0tMSxlO2lmKCFxKGMub3B0aW9ucy5jb2x1bW4pKWlmKDA9PT1jLmxpbmtzVG8ubGVuZ3RoKWMuY29sdW1uPTA7ZWxzZXtmb3IoZT0KMDtlPGMubGlua3NUby5sZW5ndGg7ZSsrKXt2YXIgZD1jLmxpbmtzVG9bMF07aWYoZC5mcm9tTm9kZS5jb2x1bW4+Yil7dmFyIGY9ZC5mcm9tTm9kZTtiPWYuY29sdW1ufX1jLmNvbHVtbj1iKzE7ZiYmImhhbmdpbmciPT09Zi5vcHRpb25zLmxheW91dCYmKGMuaGFuZ3NGcm9tPWYsZT0tMSx1KGYubGlua3NGcm9tLGZ1bmN0aW9uKGEsYil7KGE9YS50b05vZGU9PT1jKSYmKGU9Yik7cmV0dXJuIGF9KSxjLmNvbHVtbis9ZSl9YVtjLmNvbHVtbl18fChhW2MuY29sdW1uXT10aGlzLmNyZWF0ZU5vZGVDb2x1bW4oKSk7YVtjLmNvbHVtbl0ucHVzaChjKX0sdGhpcyk7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspInVuZGVmaW5lZCI9PT10eXBlb2YgYVtiXSYmKGFbYl09dGhpcy5jcmVhdGVOb2RlQ29sdW1uKCkpO3JldHVybiBhfSxoYXNEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnByb2Nlc3NlZFhEYXRhLmxlbmd0aH0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGMsYil7dmFyIGU9CnRoaXMsZD1lLm1hcE9wdGlvbnNUb0xldmVsWyhjLmlzTm9kZT9jLmxldmVsOmMuZnJvbU5vZGUubGV2ZWwpfHwwXXx8e30sZz1jLm9wdGlvbnMsdz1kLnN0YXRlcyYmZC5zdGF0ZXNbYl18fHt9O2I9WyJjb2xvckJ5UG9pbnQiLCJib3JkZXJDb2xvciIsImJvcmRlcldpZHRoIiwibGlua09wYWNpdHkiXS5yZWR1Y2UoZnVuY3Rpb24oYyxiKXtjW2JdPWEod1tiXSxnW2JdLGRbYl0sZS5vcHRpb25zW2JdKTtyZXR1cm4gY30se30pO3ZhciBmPWEody5jb2xvcixnLmNvbG9yLGIuY29sb3JCeVBvaW50P2MuY29sb3I6ZC5jb2xvcik7cmV0dXJuIGMuaXNOb2RlP3tmaWxsOmYsc3Ryb2tlOmIuYm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6Yi5ib3JkZXJXaWR0aH06e2ZpbGw6aC5wYXJzZShmKS5zZXRPcGFjaXR5KGIubGlua09wYWNpdHkpLmdldCgpfX0sZ2VuZXJhdGVQb2ludHM6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMsYil7InVuZGVmaW5lZCI9PT10eXBlb2YgYy5sZXZlbCYmKGMubGV2ZWw9CmIsYy5saW5rc0Zyb20uZm9yRWFjaChmdW5jdGlvbihjKXtjLnRvTm9kZSYmYShjLnRvTm9kZSxiKzEpfSkpfWIuTm9kZXNNaXhpbi5nZW5lcmF0ZVBvaW50cy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5vcmRlck5vZGVzJiYodGhpcy5ub2Rlcy5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIDA9PT1hLmxpbmtzVG8ubGVuZ3RofSkuZm9yRWFjaChmdW5jdGlvbihjKXthKGMsMCl9KSx2KHRoaXMubm9kZXMsZnVuY3Rpb24oYSxjKXtyZXR1cm4gYS5sZXZlbC1jLmxldmVsfSkpfSx0cmFuc2xhdGVOb2RlOmZ1bmN0aW9uKGMsYil7dmFyIGU9dGhpcy50cmFuc2xhdGlvbkZhY3RvcixtPXRoaXMuY2hhcnQsZz10aGlzLm9wdGlvbnMsaD1jLmdldFN1bSgpLGY9TWF0aC5tYXgoTWF0aC5yb3VuZChoKmUpLHRoaXMub3B0aW9ucy5taW5MaW5rV2lkdGgpLHA9TWF0aC5yb3VuZChnLmJvcmRlcldpZHRoKSUyLzIsdD1iLm9mZnNldChjLGUpO2I9TWF0aC5mbG9vcihhKHQuYWJzb2x1dGVUb3AsCmIudG9wKGUpK3QucmVsYXRpdmVUb3ApKStwO3A9TWF0aC5mbG9vcih0aGlzLmNvbERpc3RhbmNlKmMuY29sdW1uK2cuYm9yZGVyV2lkdGgvMikrcDtwPW0uaW52ZXJ0ZWQ/bS5wbG90U2l6ZVgtcDpwO2U9TWF0aC5yb3VuZCh0aGlzLm5vZGVXaWR0aCk7KGMuc3VtPWgpPyhjLnNoYXBlVHlwZT0icmVjdCIsYy5ub2RlWD1wLGMubm9kZVk9YixjLnNoYXBlQXJncz1tLmludmVydGVkP3t4OnAtZSx5Om0ucGxvdFNpemVZLWItZix3aWR0aDpjLm9wdGlvbnMuaGVpZ2h0fHxnLmhlaWdodHx8ZSxoZWlnaHQ6Yy5vcHRpb25zLndpZHRofHxnLndpZHRofHxmfTp7eDpwLHk6Yix3aWR0aDpjLm9wdGlvbnMud2lkdGh8fGcud2lkdGh8fGUsaGVpZ2h0OmMub3B0aW9ucy5oZWlnaHR8fGcuaGVpZ2h0fHxmfSxjLnNoYXBlQXJncy5kaXNwbGF5PWMuaGFzU2hhcGUoKT8iIjoibm9uZSIsZz10aGlzLm1hcE9wdGlvbnNUb0xldmVsW2MubGV2ZWxdLGg9Yy5vcHRpb25zLGg9cihoKT9oLmRhdGFMYWJlbHM6Cnt9LGc9cihnKT9nLmRhdGFMYWJlbHM6e30sZz1kKHtzdHlsZTp7fX0sZyxoKSxjLmRsT3B0aW9ucz1nLGMucGxvdFk9MSxjLnRvb2x0aXBQb3M9bS5pbnZlcnRlZD9bbS5wbG90U2l6ZVktYy5zaGFwZUFyZ3MueS1jLnNoYXBlQXJncy5oZWlnaHQvMixtLnBsb3RTaXplWC1jLnNoYXBlQXJncy54LWMuc2hhcGVBcmdzLndpZHRoLzJdOltjLnNoYXBlQXJncy54K2Muc2hhcGVBcmdzLndpZHRoLzIsYy5zaGFwZUFyZ3MueStjLnNoYXBlQXJncy5oZWlnaHQvMl0pOmMuZGxPcHRpb25zPXtlbmFibGVkOiExfX0sdHJhbnNsYXRlTGluazpmdW5jdGlvbihhKXt2YXIgYj1mdW5jdGlvbihiLGMpe3ZhciBkO2M9Yi5vZmZzZXQoYSxjKSpoO3JldHVybiBNYXRoLm1pbihiLm5vZGVZK2MsYi5ub2RlWSsobnVsbD09PShkPWIuc2hhcGVBcmdzKXx8dm9pZCAwPT09ZD92b2lkIDA6ZC5oZWlnaHQpLWYpfSxjPWEuZnJvbU5vZGUsZD1hLnRvTm9kZSxnPXRoaXMuY2hhcnQsaD10aGlzLnRyYW5zbGF0aW9uRmFjdG9yLApmPU1hdGgubWF4KGEud2VpZ2h0KmgsdGhpcy5vcHRpb25zLm1pbkxpbmtXaWR0aCkscD0oZy5pbnZlcnRlZD8tdGhpcy5jb2xEaXN0YW5jZTp0aGlzLmNvbERpc3RhbmNlKSp0aGlzLm9wdGlvbnMuY3VydmVGYWN0b3IsdD1iKGMsImxpbmtzRnJvbSIpO2I9YihkLCJsaW5rc1RvIik7dmFyIGw9Yy5ub2RlWCxrPXRoaXMubm9kZVdpZHRoO2Q9ZC5jb2x1bW4qdGhpcy5jb2xEaXN0YW5jZTt2YXIgbj1hLm91dGdvaW5nLHE9ZD5sK2s7Zy5pbnZlcnRlZCYmKHQ9Zy5wbG90U2l6ZVktdCxiPShnLnBsb3RTaXplWXx8MCktYixkPWcucGxvdFNpemVYLWQsaz0tayxmPS1mLHE9bD5kKTthLnNoYXBlVHlwZT0icGF0aCI7YS5saW5rQmFzZT1bdCx0K2YsYixiK2ZdO2lmKHEmJiJudW1iZXIiPT09dHlwZW9mIGIpYS5zaGFwZUFyZ3M9e2Q6W1siTSIsbCtrLHRdLFsiQyIsbCtrK3AsdCxkLXAsYixkLGJdLFsiTCIsZCsobj9rOjApLGIrZi8yXSxbIkwiLGQsYitmXSxbIkMiLGQtcCxiK2YsbCtrK3AsCnQrZixsK2ssdCtmXSxbIloiXV19O2Vsc2UgaWYoIm51bWJlciI9PT10eXBlb2YgYil7cD1kLTIwLWY7bj1kLTIwO3E9ZDt2YXIgcj1sK2ssQT1yKzIwLHU9QStmLHg9dCx2PXQrZix6PXYrMjAsQz16KyhnLnBsb3RIZWlnaHQtdC1mKSx5PUMrMjAsRT15K2YsRj1iLEQ9RitmLEc9RCsyMCxIPXkrLjcqZixJPXEtLjcqZixKPXIrLjcqZjthLnNoYXBlQXJncz17ZDpbWyJNIixyLHhdLFsiQyIsSix4LHUsdi0uNypmLHUsel0sWyJMIix1LENdLFsiQyIsdSxILEosRSxyLEVdLFsiTCIscSxFXSxbIkMiLEksRSxwLEgscCxDXSxbIkwiLHAsR10sWyJDIixwLEQtLjcqZixJLEYscSxGXSxbIkwiLHEsRF0sWyJDIixuLEQsbixELG4sR10sWyJMIixuLENdLFsiQyIsbix5LG4seSxxLHldLFsiTCIscix5XSxbIkMiLEEseSxBLHksQSxDXSxbIkwiLEEsel0sWyJDIixBLHYsQSx2LHIsdl0sWyJaIl1dfX1hLmRsQm94PXt4OmwrKGQtbCtrKS8yLHk6dCsoYi10KS8yLGhlaWdodDpmLHdpZHRoOjB9OwphLnRvb2x0aXBQb3M9Zy5pbnZlcnRlZD9bZy5wbG90U2l6ZVktYS5kbEJveC55LWYvMixnLnBsb3RTaXplWC1hLmRsQm94LnhdOlthLmRsQm94LngsYS5kbEJveC55K2YvMl07YS55PWEucGxvdFk9MTthLmNvbG9yfHwoYS5jb2xvcj1jLmNvbG9yKX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWZ1bmN0aW9uKGIpe2Zvcih2YXIgYz1iLnNsaWNlKCksZT1hLm9wdGlvbnMubWluTGlua1dpZHRofHwwLGYsaz0wLGwscD1oLnBsb3RTaXplWS1nLmJvcmRlcldpZHRoLShiLmxlbmd0aC0xKSpkLm5vZGVQYWRkaW5nO2IubGVuZ3RoOyl7az1wL2Iuc3VtKCk7Zj0hMTtmb3IobD1iLmxlbmd0aDtsLS07KWJbbF0uZ2V0U3VtKCkqazxlJiYoYi5zcGxpY2UobCwxKSxwLT1lLGY9ITApO2lmKCFmKWJyZWFrfWIubGVuZ3RoPTA7Yy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3JldHVybiBiLnB1c2goYSl9KTtyZXR1cm4ga307dGhpcy5wcm9jZXNzZWRYRGF0YXx8dGhpcy5wcm9jZXNzRGF0YSgpOwp0aGlzLmdlbmVyYXRlUG9pbnRzKCk7dGhpcy5ub2RlQ29sdW1ucz10aGlzLmNyZWF0ZU5vZGVDb2x1bW5zKCk7dGhpcy5ub2RlV2lkdGg9eCh0aGlzLm9wdGlvbnMubm9kZVdpZHRoLHRoaXMuY2hhcnQucGxvdFNpemVYKTt2YXIgZD10aGlzLGg9dGhpcy5jaGFydCxnPXRoaXMub3B0aW9ucyxrPXRoaXMubm9kZVdpZHRoLGY9dGhpcy5ub2RlQ29sdW1uczt0aGlzLm5vZGVQYWRkaW5nPXRoaXMuZ2V0Tm9kZVBhZGRpbmcoKTt0aGlzLnRyYW5zbGF0aW9uRmFjdG9yPWYucmVkdWNlKGZ1bmN0aW9uKGEsYyl7cmV0dXJuIE1hdGgubWluKGEsYihjKSl9LEluZmluaXR5KTt0aGlzLmNvbERpc3RhbmNlPShoLnBsb3RTaXplWC1rLWcuYm9yZGVyV2lkdGgpL01hdGgubWF4KDEsZi5sZW5ndGgtMSk7ZC5tYXBPcHRpb25zVG9MZXZlbD1LKHtmcm9tOjEsbGV2ZWxzOmcubGV2ZWxzLHRvOmYubGVuZ3RoLTEsZGVmYXVsdHM6e2JvcmRlckNvbG9yOmcuYm9yZGVyQ29sb3IsYm9yZGVyUmFkaXVzOmcuYm9yZGVyUmFkaXVzLApib3JkZXJXaWR0aDpnLmJvcmRlcldpZHRoLGNvbG9yOmQuY29sb3IsY29sb3JCeVBvaW50OmcuY29sb3JCeVBvaW50LGxldmVsSXNDb25zdGFudDohMCxsaW5rQ29sb3I6Zy5saW5rQ29sb3IsbGlua0xpbmVXaWR0aDpnLmxpbmtMaW5lV2lkdGgsbGlua09wYWNpdHk6Zy5saW5rT3BhY2l0eSxzdGF0ZXM6Zy5zdGF0ZXN9fSk7Zi5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuZm9yRWFjaChmdW5jdGlvbihiKXtkLnRyYW5zbGF0ZU5vZGUoYixhKX0pfSx0aGlzKTt0aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5saW5rc0Zyb20uZm9yRWFjaChmdW5jdGlvbihhKXsoYS53ZWlnaHR8fGEuaXNOdWxsKSYmYS50byYmKGQudHJhbnNsYXRlTGluayhhKSxhLmFsbG93U2hhZG93PSExKX0pfSl9LHJlbmRlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMucG9pbnRzO3RoaXMucG9pbnRzPXRoaXMucG9pbnRzLmNvbmNhdCh0aGlzLm5vZGVzfHxbXSk7Yi5zZXJpZXNUeXBlcy5jb2x1bW4ucHJvdG90eXBlLnJlbmRlci5jYWxsKHRoaXMpOwp0aGlzLnBvaW50cz1hfSxhbmltYXRlOmIuU2VyaWVzLnByb3RvdHlwZS5hbmltYXRlfSx7YXBwbHlPcHRpb25zOmZ1bmN0aW9uKGEsYil7ay5wcm90b3R5cGUuYXBwbHlPcHRpb25zLmNhbGwodGhpcyxhLGIpO3EodGhpcy5vcHRpb25zLmxldmVsKSYmKHRoaXMub3B0aW9ucy5jb2x1bW49dGhpcy5jb2x1bW49dGhpcy5vcHRpb25zLmxldmVsKTtyZXR1cm4gdGhpc30sc2V0U3RhdGU6Yi5Ob2Rlc01peGluLnNldE5vZGVTdGF0ZSxnZXRDbGFzc05hbWU6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5pc05vZGU/ImhpZ2hjaGFydHMtbm9kZSAiOiJoaWdoY2hhcnRzLWxpbmsgIikray5wcm90b3R5cGUuZ2V0Q2xhc3NOYW1lLmNhbGwodGhpcyl9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc05vZGV8fCJudW1iZXIiPT09dHlwZW9mIHRoaXMud2VpZ2h0fX0pOyIifSk7bihiLCJtYXN0ZXJzL21vZHVsZXMvc2Fua2V5LnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1zYW5rZXkuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIERlcGVuZGVuY3kgd2hlZWwgbW9kdWxlCgogKGMpIDIwMTAtMjAxOCBUb3JzdGVpbiBIb25zaQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihhKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhhWyJkZWZhdWx0Il09YSxtb2R1bGUuZXhwb3J0cz1hKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9kZXBlbmRlbmN5LXdoZWVsIixbImhpZ2hjaGFydHMiLCJoaWdoY2hhcnRzL21vZHVsZXMvc2Fua2V5Il0sZnVuY3Rpb24oZCl7YShkKTthLkhpZ2hjaGFydHM9ZDtyZXR1cm4gYX0pOmEoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihhKXtmdW5jdGlvbiBkKGEsZixkLGwpe2EuaGFzT3duUHJvcGVydHkoZil8fChhW2ZdPWwuYXBwbHkobnVsbCxkKSl9YT1hP2EuX21vZHVsZXM6e307ZChhLCJtb2R1bGVzL2RlcGVuZGVuY3ktd2hlZWwuc3JjLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLApkKXt2YXIgZj1kLmFuaW1PYmplY3Q7ZD1kLnNlcmllc1R5cGU7dmFyIGw9YS5zZXJpZXNUeXBlcy5zYW5rZXkucHJvdG90eXBlO2QoImRlcGVuZGVuY3l3aGVlbCIsInNhbmtleSIse2NlbnRlcjpbbnVsbCxudWxsXSxjdXJ2ZUZhY3RvcjouNixzdGFydEFuZ2xlOjB9LHtvcmRlck5vZGVzOiExLGdldENlbnRlcjphLnNlcmllc1R5cGVzLnBpZS5wcm90b3R5cGUuZ2V0Q2VudGVyLGNyZWF0ZU5vZGVDb2x1bW5zOmZ1bmN0aW9uKCl7dmFyIGE9W3RoaXMuY3JlYXRlTm9kZUNvbHVtbigpXTt0aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oYyl7Yy5jb2x1bW49MDthWzBdLnB1c2goYyl9KTtyZXR1cm4gYX0sZ2V0Tm9kZVBhZGRpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLm5vZGVQYWRkaW5nL01hdGguUEl9LGNyZWF0ZU5vZGU6ZnVuY3Rpb24oYSl7dmFyIGM9bC5jcmVhdGVOb2RlLmNhbGwodGhpcyxhKTtjLmluZGV4PXRoaXMubm9kZXMubGVuZ3RoLTE7Yy5nZXRTdW09CmZ1bmN0aW9uKCl7cmV0dXJuIGMubGlua3NGcm9tLmNvbmNhdChjLmxpbmtzVG8pLnJlZHVjZShmdW5jdGlvbihhLGMpe3JldHVybiBhK2Mud2VpZ2h0fSwwKX07Yy5vZmZzZXQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gaChhKXtyZXR1cm4gYS5mcm9tTm9kZT09PWM/YS50b05vZGU6YS5mcm9tTm9kZX12YXIgcD0wLGIsZz1jLmxpbmtzRnJvbS5jb25jYXQoYy5saW5rc1RvKTtnLnNvcnQoZnVuY3Rpb24oYSxjKXtyZXR1cm4gaChhKS5pbmRleC1oKGMpLmluZGV4fSk7Zm9yKGI9MDtiPGcubGVuZ3RoO2IrKylpZihoKGdbYl0pLmluZGV4PmMuaW5kZXgpe2c9Zy5zbGljZSgwLGIpLnJldmVyc2UoKS5jb25jYXQoZy5zbGljZShiKS5yZXZlcnNlKCkpO3ZhciBuPSEwO2JyZWFrfW58fGcucmV2ZXJzZSgpO2ZvcihiPTA7YjxnLmxlbmd0aDtiKyspe2lmKGdbYl09PT1hKXJldHVybiBwO3ArPWdbYl0ud2VpZ2h0fX07cmV0dXJuIGN9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3B0aW9ucywKYz0yKk1hdGguUEkvKHRoaXMuY2hhcnQucGxvdEhlaWdodCt0aGlzLmdldE5vZGVQYWRkaW5nKCkpLG49dGhpcy5nZXRDZW50ZXIoKSxoPShkLnN0YXJ0QW5nbGUtOTApKmEuZGVnMnJhZDtsLnRyYW5zbGF0ZS5jYWxsKHRoaXMpO3RoaXMubm9kZUNvbHVtbnNbMF0uZm9yRWFjaChmdW5jdGlvbihhKXtpZihhLnN1bSl7dmFyIGI9YS5zaGFwZUFyZ3MsZz1uWzBdLHA9blsxXSxmPW5bMl0vMixrPWYtZC5ub2RlV2lkdGgsbT1oK2MqYi55O2I9aCtjKihiLnkrYi5oZWlnaHQpO2EuYW5nbGU9bSsoYi1tKS8yO2Euc2hhcGVUeXBlPSJhcmMiO2Euc2hhcGVBcmdzPXt4OmcseTpwLHI6Zixpbm5lclI6ayxzdGFydDptLGVuZDpifTthLmRsQm94PXt4OmcrTWF0aC5jb3MoKG0rYikvMikqKGYraykvMix5OnArTWF0aC5zaW4oKG0rYikvMikqKGYraykvMix3aWR0aDoxLGhlaWdodDoxfTthLmxpbmtzRnJvbS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKGEubGlua0Jhc2Upe3ZhciBiLGU9YS5saW5rQmFzZS5tYXAoZnVuY3Rpb24oZSwKbil7ZSo9Yzt2YXIgZj1NYXRoLmNvcyhoK2UpKihrKzEpLG09TWF0aC5zaW4oaCtlKSooaysxKSxsPWQuY3VydmVGYWN0b3I7Yj1NYXRoLmFicyhhLmxpbmtCYXNlWzMtbl0qYy1lKTtiPk1hdGguUEkmJihiPTIqTWF0aC5QSS1iKTtiKj1rO2I8ayYmKGwqPWIvayk7cmV0dXJue3g6ZytmLHk6cCttLGNwWDpnKygxLWwpKmYsY3BZOnArKDEtbCkqbX19KTthLnNoYXBlQXJncz17ZDpbWyJNIixlWzBdLngsZVswXS55XSxbIkEiLGssaywwLDAsMSxlWzFdLngsZVsxXS55XSxbIkMiLGVbMV0uY3BYLGVbMV0uY3BZLGVbMl0uY3BYLGVbMl0uY3BZLGVbMl0ueCxlWzJdLnldLFsiQSIsayxrLDAsMCwxLGVbM10ueCxlWzNdLnldLFsiQyIsZVszXS5jcFgsZVszXS5jcFksZVswXS5jcFgsZVswXS5jcFksZVswXS54LGVbMF0ueV1dfX19KX19KX0sYW5pbWF0ZTpmdW5jdGlvbihhKXtpZighYSl7dmFyIGM9Zih0aGlzLm9wdGlvbnMuYW5pbWF0aW9uKS5kdXJhdGlvbi8yL3RoaXMubm9kZXMubGVuZ3RoOwp0aGlzLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oYSxoKXt2YXIgZD1hLmdyYXBoaWM7ZCYmKGQuYXR0cih7b3BhY2l0eTowfSksc2V0VGltZW91dChmdW5jdGlvbigpe2QuYW5pbWF0ZSh7b3BhY2l0eToxfSx7ZHVyYXRpb246Y30pfSxjKmgpKX0sdGhpcyk7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1hLmdyYXBoaWM7IWEuaXNOb2RlJiZjJiZjLmF0dHIoe29wYWNpdHk6MH0pLmFuaW1hdGUoe29wYWNpdHk6MX0sdGhpcy5vcHRpb25zLmFuaW1hdGlvbil9LHRoaXMpfX19LHtzZXRTdGF0ZTphLk5vZGVzTWl4aW4uc2V0Tm9kZVN0YXRlLGdldERhdGFMYWJlbFBhdGg6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5zZXJpZXMuY2hhcnQucmVuZGVyZXIsZD10aGlzLnNoYXBlQXJncyxoPTA+dGhpcy5hbmdsZXx8dGhpcy5hbmdsZT5NYXRoLlBJLGY9ZC5zdGFydCxiPWQuZW5kO3RoaXMuZGF0YUxhYmVsUGF0aHx8KHRoaXMuZGF0YUxhYmVsUGF0aD1jLmFyYyh7b3BlbjohMH0pLmFkZChhKSk7CnRoaXMuZGF0YUxhYmVsUGF0aC5hdHRyKHt4OmQueCx5OmQueSxyOmQucisodGhpcy5kYXRhTGFiZWwub3B0aW9ucy5kaXN0YW5jZXx8MCksc3RhcnQ6aD9mOmIsZW5kOmg/YjpmLGNsb2Nrd2lzZToraH0pO3JldHVybiB0aGlzLmRhdGFMYWJlbFBhdGh9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KTsiIn0pO2QoYSwibWFzdGVycy9tb2R1bGVzL2RlcGVuZGVuY3ktd2hlZWwuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWRlcGVuZGVuY3ktd2hlZWwuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQogT3JnYW5pemF0aW9uIGNoYXJ0IHNlcmllcyB0eXBlCgogKGMpIDIwMTktMjAxOSBUb3JzdGVpbiBIb25zaQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihiKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhiWyJkZWZhdWx0Il09Yixtb2R1bGUuZXhwb3J0cz1iKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9vcmdhbml6YXRpb24iLFsiaGlnaGNoYXJ0cyIsImhpZ2hjaGFydHMvbW9kdWxlcy9zYW5rZXkiXSxmdW5jdGlvbihmKXtiKGYpO2IuSGlnaGNoYXJ0cz1mO3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGYoYixtLGYscil7Yi5oYXNPd25Qcm9wZXJ0eShtKXx8KGJbbV09ci5hcHBseShudWxsLGYpKX1iPWI/Yi5fbW9kdWxlczp7fTtmKGIsIm1vZHVsZXMvb3JnYW5pemF0aW9uLnNyYy5qcyIsW2JbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYixmKXt2YXIgbT0KZi5jc3Mscj1mLnBpY2ssdT1mLnNlcmllc1R5cGUsdj1mLndyYXAscT1iLnNlcmllc1R5cGVzLnNhbmtleS5wcm90b3R5cGU7dSgib3JnYW5pemF0aW9uIiwic2Fua2V5Iix7Ym9yZGVyQ29sb3I6IiM2NjY2NjYiLGJvcmRlclJhZGl1czozLGxpbmtSYWRpdXM6MTAsYm9yZGVyV2lkdGg6MSxkYXRhTGFiZWxzOntub2RlRm9ybWF0dGVyOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXtyZXR1cm4gT2JqZWN0LmtleXMoYSkucmVkdWNlKGZ1bmN0aW9uKGMsZCl7cmV0dXJuIGMrZCsiOiIrYVtkXSsiOyJ9LCdzdHlsZT0iJykrJyInfXZhciBjPXt3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixkaXNwbGF5OiJmbGV4IiwiZmxleC1kaXJlY3Rpb24iOiJyb3ciLCJhbGlnbi1pdGVtcyI6ImNlbnRlciIsImp1c3RpZnktY29udGVudCI6ImNlbnRlciJ9LGc9eyJtYXgtaGVpZ2h0IjoiMTAwJSIsImJvcmRlci1yYWRpdXMiOiI1MCUifSxkPXt3aWR0aDoiMTAwJSIscGFkZGluZzowLCJ0ZXh0LWFsaWduIjoiY2VudGVyIiwKIndoaXRlLXNwYWNlIjoibm9ybWFsIn0sZT17bWFyZ2luOjB9LHQ9e21hcmdpbjowfSxiPXtvcGFjaXR5Oi43NSxtYXJnaW46IjVweCJ9O3RoaXMucG9pbnQuaW1hZ2UmJihnWyJtYXgtd2lkdGgiXT0iMzAlIixkLndpZHRoPSI3MCUiKTt0aGlzLnNlcmllcy5jaGFydC5yZW5kZXJlci5mb3JFeHBvcnQmJihjLmRpc3BsYXk9ImJsb2NrIixkLnBvc2l0aW9uPSJhYnNvbHV0ZSIsZC5sZWZ0PXRoaXMucG9pbnQuaW1hZ2U/IjMwJSI6MCxkLnRvcD0wKTtjPSI8ZGl2ICIrYShjKSsiPiI7dGhpcy5wb2ludC5pbWFnZSYmKGMrPSc8aW1nIHNyYz0iJyt0aGlzLnBvaW50LmltYWdlKyciICcrYShnKSsiPiIpO2MrPSI8ZGl2ICIrYShkKSsiPiI7dGhpcy5wb2ludC5uYW1lJiYoYys9IjxoNCAiK2EoZSkrIj4iK3RoaXMucG9pbnQubmFtZSsiPC9oND4iKTt0aGlzLnBvaW50LnRpdGxlJiYoYys9IjxwICIrYSh0KSsiPiIrKHRoaXMucG9pbnQudGl0bGV8fCIiKSsiPC9wPiIpO3RoaXMucG9pbnQuZGVzY3JpcHRpb24mJgooYys9IjxwICIrYShiKSsiPiIrdGhpcy5wb2ludC5kZXNjcmlwdGlvbisiPC9wPiIpO3JldHVybiBjKyI8L2Rpdj48L2Rpdj4ifSxzdHlsZTp7Zm9udFdlaWdodDoibm9ybWFsIixmb250U2l6ZToiMTNweCJ9LHVzZUhUTUw6ITB9LGhhbmdpbmdJbmRlbnQ6MjAsbGlua0NvbG9yOiIjNjY2NjY2IixsaW5rTGluZVdpZHRoOjEsbm9kZVdpZHRoOjUwLHRvb2x0aXA6e25vZGVGb3JtYXQ6Intwb2ludC5uYW1lfTxicj57cG9pbnQudGl0bGV9PGJyPntwb2ludC5kZXNjcmlwdGlvbn0ifX0se3BvaW50QXR0cmliczpmdW5jdGlvbihhLGMpe3ZhciBnPXRoaXMsZD1xLnBvaW50QXR0cmlicy5jYWxsKGcsYSxjKSxlPWcubWFwT3B0aW9uc1RvTGV2ZWxbKGEuaXNOb2RlP2EubGV2ZWw6YS5mcm9tTm9kZS5sZXZlbCl8fDBdfHx7fSx0PWEub3B0aW9ucyxiPWUuc3RhdGVzJiZlLnN0YXRlc1tjXXx8e307Yz1bImJvcmRlclJhZGl1cyIsImxpbmtDb2xvciIsImxpbmtMaW5lV2lkdGgiXS5yZWR1Y2UoZnVuY3Rpb24oYSwKYyl7YVtjXT1yKGJbY10sdFtjXSxlW2NdLGcub3B0aW9uc1tjXSk7cmV0dXJuIGF9LHt9KTthLmlzTm9kZT9jLmJvcmRlclJhZGl1cyYmKGQucj1jLmJvcmRlclJhZGl1cyk6KGQuc3Ryb2tlPWMubGlua0NvbG9yLGRbInN0cm9rZS13aWR0aCJdPWMubGlua0xpbmVXaWR0aCxkZWxldGUgZC5maWxsKTtyZXR1cm4gZH0sY3JlYXRlTm9kZTpmdW5jdGlvbihhKXthPXEuY3JlYXRlTm9kZS5jYWxsKHRoaXMsYSk7YS5nZXRTdW09ZnVuY3Rpb24oKXtyZXR1cm4gMX07cmV0dXJuIGF9LGNyZWF0ZU5vZGVDb2x1bW46ZnVuY3Rpb24oKXt2YXIgYT1xLmNyZWF0ZU5vZGVDb2x1bW4uY2FsbCh0aGlzKTt2KGEsIm9mZnNldCIsZnVuY3Rpb24oYSxnLGQpe2E9YS5jYWxsKHRoaXMsZyxkKTtyZXR1cm4gZy5oYW5nc0Zyb20/e2Fic29sdXRlVG9wOmcuaGFuZ3NGcm9tLm5vZGVZfTphfSk7cmV0dXJuIGF9LHRyYW5zbGF0ZU5vZGU6ZnVuY3Rpb24oYSxjKXtxLnRyYW5zbGF0ZU5vZGUuY2FsbCh0aGlzLAphLGMpO2EuaGFuZ3NGcm9tJiYoYS5zaGFwZUFyZ3MuaGVpZ2h0LT10aGlzLm9wdGlvbnMuaGFuZ2luZ0luZGVudCx0aGlzLmNoYXJ0LmludmVydGVkfHwoYS5zaGFwZUFyZ3MueSs9dGhpcy5vcHRpb25zLmhhbmdpbmdJbmRlbnQpKTthLm5vZGVIZWlnaHQ9dGhpcy5jaGFydC5pbnZlcnRlZD9hLnNoYXBlQXJncy53aWR0aDphLnNoYXBlQXJncy5oZWlnaHR9LGN1cnZlZFBhdGg6ZnVuY3Rpb24oYSxjKXtmb3IodmFyIGc9W10sZD0wO2Q8YS5sZW5ndGg7ZCsrKXt2YXIgZT1hW2RdWzFdLGI9YVtkXVsyXTtpZigibnVtYmVyIj09PXR5cGVvZiBlJiYibnVtYmVyIj09PXR5cGVvZiBiKWlmKDA9PT1kKWcucHVzaChbIk0iLGUsYl0pO2Vsc2UgaWYoZD09PWEubGVuZ3RoLTEpZy5wdXNoKFsiTCIsZSxiXSk7ZWxzZSBpZihjKXt2YXIgaD1hW2QtMV0saz1hW2QrMV07aWYoaCYmayl7dmFyIGY9aFsxXTtoPWhbMl07dmFyIGw9a1sxXTtrPWtbMl07aWYoIm51bWJlciI9PT10eXBlb2YgZiYmIm51bWJlciI9PT0KdHlwZW9mIGwmJiJudW1iZXIiPT09dHlwZW9mIGgmJiJudW1iZXIiPT09dHlwZW9mIGsmJmYhPT1sJiZoIT09ayl7dmFyIG49ZjxsPzE6LTEscD1oPGs/MTotMTtnLnB1c2goWyJMIixlLW4qTWF0aC5taW4oTWF0aC5hYnMoZS1mKSxjKSxiLXAqTWF0aC5taW4oTWF0aC5hYnMoYi1oKSxjKV0sWyJDIixlLGIsZSxiLGUrbipNYXRoLm1pbihNYXRoLmFicyhlLWwpLGMpLGIrcCpNYXRoLm1pbihNYXRoLmFicyhiLWspLGMpXSl9fX1lbHNlIGcucHVzaChbIkwiLGUsYl0pfXJldHVybiBnfSx0cmFuc2xhdGVMaW5rOmZ1bmN0aW9uKGEpe3ZhciBjPWEuZnJvbU5vZGUsYj1hLnRvTm9kZSxkPU1hdGgucm91bmQodGhpcy5vcHRpb25zLmxpbmtMaW5lV2lkdGgpJTIvMixlPU1hdGguZmxvb3IoYy5zaGFwZUFyZ3MueCtjLnNoYXBlQXJncy53aWR0aCkrZCxmPU1hdGguZmxvb3IoYy5zaGFwZUFyZ3MueStjLnNoYXBlQXJncy5oZWlnaHQvMikrZCxoPU1hdGguZmxvb3IoYi5zaGFwZUFyZ3MueCkrCmQsaz1NYXRoLmZsb29yKGIuc2hhcGVBcmdzLnkrYi5zaGFwZUFyZ3MuaGVpZ2h0LzIpK2QsbT10aGlzLm9wdGlvbnMuaGFuZ2luZ0luZGVudDt2YXIgbD1iLm9wdGlvbnMub2Zmc2V0O3ZhciBuPS8lJC8udGVzdChsKSYmcGFyc2VJbnQobCwxMCkscD10aGlzLmNoYXJ0LmludmVydGVkO3AmJihlLT1jLnNoYXBlQXJncy53aWR0aCxoKz1iLnNoYXBlQXJncy53aWR0aCk7bD1NYXRoLmZsb29yKGgrKHA/MTotMSkqKHRoaXMuY29sRGlzdGFuY2UtdGhpcy5ub2RlV2lkdGgpLzIpK2Q7biYmKDUwPD1ufHwtNTA+PW4pJiYobD1oPU1hdGguZmxvb3IoaCsocD8tLjU6LjUpKmIuc2hhcGVBcmdzLndpZHRoKStkLGs9Yi5zaGFwZUFyZ3MueSwwPG4mJihrKz1iLnNoYXBlQXJncy5oZWlnaHQpKTtiLmhhbmdzRnJvbT09PWMmJih0aGlzLmNoYXJ0LmludmVydGVkPyhmPU1hdGguZmxvb3IoYy5zaGFwZUFyZ3MueStjLnNoYXBlQXJncy5oZWlnaHQtbS8yKStkLGs9Yi5zaGFwZUFyZ3MueStiLnNoYXBlQXJncy5oZWlnaHQpOgpmPU1hdGguZmxvb3IoYy5zaGFwZUFyZ3MueSttLzIpK2QsbD1oPU1hdGguZmxvb3IoYi5zaGFwZUFyZ3MueCtiLnNoYXBlQXJncy53aWR0aC8yKStkKTthLnBsb3RZPTE7YS5zaGFwZVR5cGU9InBhdGgiO2Euc2hhcGVBcmdzPXtkOnRoaXMuY3VydmVkUGF0aChbWyJNIixlLGZdLFsiTCIsbCxmXSxbIkwiLGwsa10sWyJMIixoLGtdXSx0aGlzLm9wdGlvbnMubGlua1JhZGl1cyl9fSxhbGlnbkRhdGFMYWJlbDpmdW5jdGlvbihhLGMsZil7aWYoZi51c2VIVE1MKXt2YXIgZD1hLnNoYXBlQXJncy53aWR0aCxlPWEuc2hhcGVBcmdzLmhlaWdodCxnPXRoaXMub3B0aW9ucy5ib3JkZXJXaWR0aCsyKnRoaXMub3B0aW9ucy5kYXRhTGFiZWxzLnBhZGRpbmc7dGhpcy5jaGFydC5pbnZlcnRlZCYmKGQ9ZSxlPWEuc2hhcGVBcmdzLndpZHRoKTtlLT1nO2QtPWc7aWYoZz1jLnRleHQpbShnLmVsZW1lbnQucGFyZW50Tm9kZSx7d2lkdGg6ZCsicHgiLGhlaWdodDplKyJweCJ9KSxtKGcuZWxlbWVudCwKe2xlZnQ6MCx0b3A6MCx3aWR0aDoiMTAwJSIsaGVpZ2h0OiIxMDAlIixvdmVyZmxvdzoiaGlkZGVuIn0pO2MuZ2V0QkJveD1mdW5jdGlvbigpe3JldHVybnt3aWR0aDpkLGhlaWdodDplfX07Yy53aWR0aD1kO2MuaGVpZ2h0PWV9Yi5zZXJpZXNUeXBlcy5jb2x1bW4ucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KTsiIn0pO2YoYiwibWFzdGVycy9tb2R1bGVzL29yZ2FuaXphdGlvbi5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9b3JnYW5pemF0aW9uLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFNvbGlkIGFuZ3VsYXIgZ2F1Z2UgbW9kdWxlCgogKGMpIDIwMTAtMjAxOSBUb3JzdGVpbiBIb25zaQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihhKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhhWyJkZWZhdWx0Il09YSxtb2R1bGUuZXhwb3J0cz1hKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9zb2xpZC1nYXVnZSIsWyJoaWdoY2hhcnRzIiwiaGlnaGNoYXJ0cy9oaWdoY2hhcnRzLW1vcmUiXSxmdW5jdGlvbihnKXthKGcpO2EuSGlnaGNoYXJ0cz1nO3JldHVybiBhfSk6YSgidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGcoYSxyLGcsYyl7YS5oYXNPd25Qcm9wZXJ0eShyKXx8KGFbcl09Yy5hcHBseShudWxsLGcpKX1hPWE/YS5fbW9kdWxlczp7fTtnKGEsIm1vZHVsZXMvc29saWQtZ2F1Z2Uuc3JjLmpzIixbYVsicGFydHMvQ29sb3IuanMiXSxhWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsibWl4aW5zL2xlZ2VuZC1zeW1ib2wuanMiXSwKYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsZyx4LGMpe3ZhciBrPWEucGFyc2Uscj1jLmNsYW1wLHU9Yy5leHRlbmQsdj1jLmlzTnVtYmVyLHk9Yy5tZXJnZSx0PWMucGljayx3PWMucEludDthPWMuc2VyaWVzVHlwZTtjPWMud3JhcDtjKGcuUmVuZGVyZXIucHJvdG90eXBlLnN5bWJvbHMsImFyYyIsZnVuY3Rpb24oZSxhLGwsYix6LGQpe2U9ZShhLGwsYix6LGQpO2Qucm91bmRlZCYmKGI9KChkLnJ8fGIpLShkLmlubmVyUnx8MCkpLzIsYT1lWzBdLGQ9ZVsyXSwiTSI9PT1hWzBdJiYiTCI9PT1kWzBdJiYoYT1bIkEiLGIsYiwwLDEsMSxhWzFdLGFbMl1dLGVbMl09WyJBIixiLGIsMCwxLDEsZFsxXSxkWzJdXSxlWzRdPWEpKTtyZXR1cm4gZX0pO3ZhciBtOyhmdW5jdGlvbihhKXt2YXIgZT17aW5pdERhdGFDbGFzc2VzOmZ1bmN0aW9uKGEpe3ZhciBlPXRoaXMuY2hhcnQsbCxkPTAsaD10aGlzLm9wdGlvbnM7dGhpcy5kYXRhQ2xhc3Nlcz1sPVtdO2EuZGF0YUNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihiLApmKXtiPXkoYik7bC5wdXNoKGIpO2IuY29sb3J8fCgiY2F0ZWdvcnkiPT09aC5kYXRhQ2xhc3NDb2xvcj8oZj1lLm9wdGlvbnMuY29sb3JzLGIuY29sb3I9ZltkKytdLGQ9PT1mLmxlbmd0aCYmKGQ9MCkpOmIuY29sb3I9ayhoLm1pbkNvbG9yKS50d2VlblRvKGsoaC5tYXhDb2xvciksZi8oYS5kYXRhQ2xhc3Nlcy5sZW5ndGgtMSkpKX0pfSxpbml0U3RvcHM6ZnVuY3Rpb24oYSl7dGhpcy5zdG9wcz1hLnN0b3BzfHxbWzAsdGhpcy5vcHRpb25zLm1pbkNvbG9yXSxbMSx0aGlzLm9wdGlvbnMubWF4Q29sb3JdXTt0aGlzLnN0b3BzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jb2xvcj1rKGFbMV0pfSl9LHRvQ29sb3I6ZnVuY3Rpb24oYSxlKXt2YXIgYj10aGlzLnN0b3BzLGQ9dGhpcy5kYXRhQ2xhc3NlcyxoO2lmKGQpZm9yKGg9ZC5sZW5ndGg7aC0tOyl7dmFyIGM9ZFtoXTt2YXIgZj1jLmZyb207Yj1jLnRvO2lmKCgidW5kZWZpbmVkIj09PXR5cGVvZiBmfHxhPj1mKSYmKCJ1bmRlZmluZWQiPT09CnR5cGVvZiBifHxhPD1iKSl7dmFyIGc9Yy5jb2xvcjtlJiYoZS5kYXRhQ2xhc3M9aCk7YnJlYWt9fWVsc2V7dGhpcy5sb2dhcml0aG1pYyYmKGE9dGhpcy52YWwybGluKGEpKTthPTEtKHRoaXMubWF4LWEpLyh0aGlzLm1heC10aGlzLm1pbik7Zm9yKGg9Yi5sZW5ndGg7aC0tJiYhKGE+YltoXVswXSk7KTtmPWJbaF18fGJbaCsxXTtiPWJbaCsxXXx8ZjthPTEtKGJbMF0tYSkvKGJbMF0tZlswXXx8MSk7Zz1mLmNvbG9yLnR3ZWVuVG8oYi5jb2xvcixhKX1yZXR1cm4gZ319O2EuaW5pdD1mdW5jdGlvbihhKXt1KGEsZSl9fSkobXx8KG09e30pKTthKCJzb2xpZGdhdWdlIiwiZ2F1Z2UiLHtjb2xvckJ5UG9pbnQ6ITAsZGF0YUxhYmVsczp7eTowfX0se2RyYXdMZWdlbmRTeW1ib2w6eC5kcmF3UmVjdGFuZ2xlLHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMueUF4aXM7bS5pbml0KGEpOyFhLmRhdGFDbGFzc2VzJiZhLm9wdGlvbnMuZGF0YUNsYXNzZXMmJmEuaW5pdERhdGFDbGFzc2VzKGEub3B0aW9ucyk7CmEuaW5pdFN0b3BzKGEub3B0aW9ucyk7Zy5zZXJpZXNUeXBlcy5nYXVnZS5wcm90b3R5cGUudHJhbnNsYXRlLmNhbGwodGhpcyl9LGRyYXdQb2ludHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS55QXhpcyxnPWMuY2VudGVyLGI9YS5vcHRpb25zLG09YS5jaGFydC5yZW5kZXJlcixkPWIub3ZlcnNob290LGg9dihkKT9kLzE4MCpNYXRoLlBJOjAsazt2KGIudGhyZXNob2xkKSYmKGs9Yy5zdGFydEFuZ2xlUmFkK2MudHJhbnNsYXRlKGIudGhyZXNob2xkLG51bGwsbnVsbCxudWxsLCEwKSk7dGhpcy50aHJlc2hvbGRBbmdsZVJhZD10KGssYy5zdGFydEFuZ2xlUmFkKTthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGYpe2lmKCFmLmlzTnVsbCl7dmFyIGQ9Zi5ncmFwaGljLGU9Yy5zdGFydEFuZ2xlUmFkK2MudHJhbnNsYXRlKGYueSxudWxsLG51bGwsbnVsbCwhMCksaz13KHQoZi5vcHRpb25zLnJhZGl1cyxiLnJhZGl1cywxMDApKSpnWzJdLzIwMCxuPXcodChmLm9wdGlvbnMuaW5uZXJSYWRpdXMsCmIuaW5uZXJSYWRpdXMsNjApKSpnWzJdLzIwMCxwPWMudG9Db2xvcihmLnksZikscT1NYXRoLm1pbihjLnN0YXJ0QW5nbGVSYWQsYy5lbmRBbmdsZVJhZCksbD1NYXRoLm1heChjLnN0YXJ0QW5nbGVSYWQsYy5lbmRBbmdsZVJhZCk7Im5vbmUiPT09cCYmKHA9Zi5jb2xvcnx8YS5jb2xvcnx8Im5vbmUiKTsibm9uZSIhPT1wJiYoZi5jb2xvcj1wKTtlPXIoZSxxLWgsbCtoKTshMT09PWIud3JhcCYmKGU9cihlLHEsbCkpO3E9TWF0aC5taW4oZSxhLnRocmVzaG9sZEFuZ2xlUmFkKTtlPU1hdGgubWF4KGUsYS50aHJlc2hvbGRBbmdsZVJhZCk7ZS1xPjIqTWF0aC5QSSYmKGU9cSsyKk1hdGguUEkpO2Yuc2hhcGVBcmdzPW49e3g6Z1swXSx5OmdbMV0scjprLGlubmVyUjpuLHN0YXJ0OnEsZW5kOmUscm91bmRlZDpiLnJvdW5kZWR9O2Yuc3RhcnRSPWs7ZD8oaz1uLmQsZC5hbmltYXRlKHUoe2ZpbGw6cH0sbikpLGsmJihuLmQ9aykpOmYuZ3JhcGhpYz1kPW0uYXJjKG4pLmF0dHIoe2ZpbGw6cCwKInN3ZWVwLWZsYWciOjB9KS5hZGQoYS5ncm91cCk7YS5jaGFydC5zdHlsZWRNb2RlfHwoInNxdWFyZSIhPT1iLmxpbmVjYXAmJmQuYXR0cih7InN0cm9rZS1saW5lY2FwIjoicm91bmQiLCJzdHJva2UtbGluZWpvaW4iOiJyb3VuZCJ9KSxkLmF0dHIoe3N0cm9rZTpiLmJvcmRlckNvbG9yfHwibm9uZSIsInN0cm9rZS13aWR0aCI6Yi5ib3JkZXJXaWR0aHx8MH0pKTtkJiZkLmFkZENsYXNzKGYuZ2V0Q2xhc3NOYW1lKCksITApfX0pfSxhbmltYXRlOmZ1bmN0aW9uKGEpe2F8fCh0aGlzLnN0YXJ0QW5nbGVSYWQ9dGhpcy50aHJlc2hvbGRBbmdsZVJhZCxnLnNlcmllc1R5cGVzLnBpZS5wcm90b3R5cGUuYW5pbWF0ZS5jYWxsKHRoaXMsYSkpfX0pOyIiO3JldHVybiBtfSk7ZyhhLCJtYXN0ZXJzL21vZHVsZXMvc29saWQtZ2F1Z2Uuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXNvbGlkLWdhdWdlLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFN0cmVhbWdyYXBoIG1vZHVsZQoKIChjKSAyMDEwLTIwMTkgVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYSl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYVsiZGVmYXVsdCJdPWEsbW9kdWxlLmV4cG9ydHM9YSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvc3RyZWFtZ3JhcGgiLFsiaGlnaGNoYXJ0cyJdLGZ1bmN0aW9uKGIpe2EoYik7YS5IaWdoY2hhcnRzPWI7cmV0dXJuIGF9KTphKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhLGQsYixjKXthLmhhc093blByb3BlcnR5KGQpfHwoYVtkXT1jLmFwcGx5KG51bGwsYikpfWE9YT9hLl9tb2R1bGVzOnt9O2IoYSwibW9kdWxlcy9zdHJlYW1ncmFwaC5zcmMuanMiLFthWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYSl7YT1hLnNlcmllc1R5cGU7YSgic3RyZWFtZ3JhcGgiLCJhcmVhc3BsaW5lIix7ZmlsbE9wYWNpdHk6MSwKbGluZVdpZHRoOjAsbWFya2VyOntlbmFibGVkOiExfSxzdGFja2luZzoic3RyZWFtIn0se25lZ1N0YWNrczohMSxzdHJlYW1TdGFja2VyOmZ1bmN0aW9uKGEsYixjKXthWzBdLT1iLnRvdGFsLzI7YVsxXS09Yi50b3RhbC8yO3RoaXMuc3RhY2tlZFlEYXRhW2NdPWF9fSk7IiJ9KTtiKGEsIm1hc3RlcnMvbW9kdWxlcy9zdHJlYW1ncmFwaC5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c3RyZWFtZ3JhcGguanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDE2LTIwMTkgSGlnaHNvZnQgQVMKIEF1dGhvcnM6IEpvbiBBcmlsZCBOeWdhcmQKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oZCl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oZFsiZGVmYXVsdCJdPWQsbW9kdWxlLmV4cG9ydHM9ZCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvc3VuYnVyc3QiLFsiaGlnaGNoYXJ0cyJdLGZ1bmN0aW9uKEMpe2QoQyk7ZC5IaWdoY2hhcnRzPUM7cmV0dXJuIGR9KTpkKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oZCl7ZnVuY3Rpb24gQyhkLGIseCxxKXtkLmhhc093blByb3BlcnR5KGIpfHwoZFtiXT1xLmFwcGx5KG51bGwseCkpfWQ9ZD9kLl9tb2R1bGVzOnt9O0MoZCwibWl4aW5zL2RyYXctcG9pbnQuanMiLFtdLGZ1bmN0aW9uKCl7dmFyIGQ9ZnVuY3Rpb24oYil7dmFyIGQscT10aGlzLHc9cS5ncmFwaGljLG09Yi5hbmltYXRhYmxlQXR0cmlicyxsPWIub25Db21wbGV0ZSx1PWIuY3NzLEI9CmIucmVuZGVyZXIsZz1udWxsPT09KGQ9cS5zZXJpZXMpfHx2b2lkIDA9PT1kP3ZvaWQgMDpkLm9wdGlvbnMuYW5pbWF0aW9uO2lmKHEuc2hvdWxkRHJhdygpKXd8fChxLmdyYXBoaWM9dz1CW2Iuc2hhcGVUeXBlXShiLnNoYXBlQXJncykuYWRkKGIuZ3JvdXApKSx3LmNzcyh1KS5hdHRyKGIuYXR0cmlicykuYW5pbWF0ZShtLGIuaXNOZXc/ITE6ZyxsKTtlbHNlIGlmKHcpe3ZhciB0PWZ1bmN0aW9uKCl7cS5ncmFwaGljPXc9dy5kZXN0cm95KCk7ImZ1bmN0aW9uIj09PXR5cGVvZiBsJiZsKCl9O09iamVjdC5rZXlzKG0pLmxlbmd0aD93LmFuaW1hdGUobSx2b2lkIDAsZnVuY3Rpb24oKXt0KCl9KTp0KCl9fTtyZXR1cm4gZnVuY3Rpb24oYil7KGIuYXR0cmlicz1iLmF0dHJpYnN8fHt9KVsiY2xhc3MiXT10aGlzLmdldENsYXNzTmFtZSgpO2QuY2FsbCh0aGlzLGIpfX0pO0MoZCwibWl4aW5zL3RyZWUtc2VyaWVzLmpzIixbZFsicGFydHMvQ29sb3IuanMiXSxkWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sCmZ1bmN0aW9uKGQsYil7dmFyIHg9Yi5leHRlbmQscT1iLmlzQXJyYXksdz1iLmlzTnVtYmVyLG09Yi5pc09iamVjdCxsPWIubWVyZ2UsdT1iLnBpY2s7cmV0dXJue2dldENvbG9yOmZ1bmN0aW9uKGIsZyl7dmFyIHQ9Zy5pbmRleCxsPWcubWFwT3B0aW9uc1RvTGV2ZWwsQj1nLnBhcmVudENvbG9yLHE9Zy5wYXJlbnRDb2xvckluZGV4LG09Zy5zZXJpZXMsRj1nLmNvbG9ycyx3PWcuc2libGluZ3Msdj1tLnBvaW50cyxHPW0uY2hhcnQub3B0aW9ucy5jaGFydCxFO2lmKGIpe3Y9dltiLmldO2I9bFtiLmxldmVsXXx8e307aWYobD12JiZiLmNvbG9yQnlQb2ludCl7dmFyIEQ9di5pbmRleCUoRj9GLmxlbmd0aDpHLmNvbG9yQ291bnQpO3ZhciB4PUYmJkZbRF19aWYoIW0uY2hhcnQuc3R5bGVkTW9kZSl7Rj12JiZ2Lm9wdGlvbnMuY29sb3I7Rz1iJiZiLmNvbG9yO2lmKEU9QilFPShFPWImJmIuY29sb3JWYXJpYXRpb24pJiYiYnJpZ2h0bmVzcyI9PT1FLmtleT9kLnBhcnNlKEIpLmJyaWdodGVuKHQvCncqRS50bykuZ2V0KCk6QjtFPXUoRixHLHgsRSxtLmNvbG9yKX12YXIgST11KHYmJnYub3B0aW9ucy5jb2xvckluZGV4LGImJmIuY29sb3JJbmRleCxELHEsZy5jb2xvckluZGV4KX1yZXR1cm57Y29sb3I6RSxjb2xvckluZGV4Okl9fSxnZXRMZXZlbE9wdGlvbnM6ZnVuY3Rpb24oYil7dmFyIGc9bnVsbDtpZihtKGIpKXtnPXt9O3ZhciBkPXcoYi5mcm9tKT9iLmZyb206MTt2YXIgdT1iLmxldmVsczt2YXIgQj17fTt2YXIgST1tKGIuZGVmYXVsdHMpP2IuZGVmYXVsdHM6e307cSh1KSYmKEI9dS5yZWR1Y2UoZnVuY3Rpb24oYixnKXtpZihtKGcpJiZ3KGcubGV2ZWwpKXt2YXIgdD1sKHt9LGcpO3ZhciB1PSJib29sZWFuIj09PXR5cGVvZiB0LmxldmVsSXNDb25zdGFudD90LmxldmVsSXNDb25zdGFudDpJLmxldmVsSXNDb25zdGFudDtkZWxldGUgdC5sZXZlbElzQ29uc3RhbnQ7ZGVsZXRlIHQubGV2ZWw7Zz1nLmxldmVsKyh1PzA6ZC0xKTttKGJbZ10pP3goYltnXSx0KTpiW2ddPXR9cmV0dXJuIGJ9LAp7fSkpO3U9dyhiLnRvKT9iLnRvOjE7Zm9yKGI9MDtiPD11O2IrKylnW2JdPWwoe30sSSxtKEJbYl0pP0JbYl06e30pfXJldHVybiBnfSxzZXRUcmVlVmFsdWVzOmZ1bmN0aW9uIFUoYixkKXt2YXIgZz1kLmJlZm9yZSxsPWQuaWRSb290LHQ9ZC5tYXBJZFRvTm9kZVtsXSxtPWQucG9pbnRzW2IuaV0scT1tJiZtLm9wdGlvbnN8fHt9LHY9MCx3PVtdO3goYix7bGV2ZWxEeW5hbWljOmIubGV2ZWwtKCgiYm9vbGVhbiI9PT10eXBlb2YgZC5sZXZlbElzQ29uc3RhbnQ/ZC5sZXZlbElzQ29uc3RhbnQ6MSk/MDp0LmxldmVsKSxuYW1lOnUobSYmbS5uYW1lLCIiKSx2aXNpYmxlOmw9PT1iLmlkfHwoImJvb2xlYW4iPT09dHlwZW9mIGQudmlzaWJsZT9kLnZpc2libGU6ITEpfSk7ImZ1bmN0aW9uIj09PXR5cGVvZiBnJiYoYj1nKGIsZCkpO2IuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihnLGwpe3ZhciB0PXgoe30sZCk7eCh0LHtpbmRleDpsLHNpYmxpbmdzOmIuY2hpbGRyZW4ubGVuZ3RoLHZpc2libGU6Yi52aXNpYmxlfSk7Cmc9VShnLHQpO3cucHVzaChnKTtnLnZpc2libGUmJih2Kz1nLnZhbCl9KTtiLnZpc2libGU9MDx2fHxiLnZpc2libGU7Zz11KHEudmFsdWUsdik7eChiLHtjaGlsZHJlbjp3LGNoaWxkcmVuVG90YWw6dixpc0xlYWY6Yi52aXNpYmxlJiYhdix2YWw6Z30pO3JldHVybiBifSx1cGRhdGVSb290SWQ6ZnVuY3Rpb24oYil7aWYobShiKSl7dmFyIGQ9bShiLm9wdGlvbnMpP2Iub3B0aW9uczp7fTtkPXUoYi5yb290Tm9kZSxkLnJvb3RJZCwiIik7bShiLnVzZXJPcHRpb25zKSYmKGIudXNlck9wdGlvbnMucm9vdElkPWQpO2Iucm9vdE5vZGU9ZH1yZXR1cm4gZH19fSk7QyhkLCJtb2R1bGVzL3RyZWVtYXAuc3JjLmpzIixbZFsicGFydHMvR2xvYmFscy5qcyJdLGRbIm1peGlucy90cmVlLXNlcmllcy5qcyJdLGRbIm1peGlucy9kcmF3LXBvaW50LmpzIl0sZFsicGFydHMvQ29sb3IuanMiXSxkWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLGRbInBhcnRzL1BvaW50LmpzIl0sZFsicGFydHMvVXRpbGl0aWVzLmpzIl1dLApmdW5jdGlvbihkLGIseCxxLHcsbSxsKXt2YXIgdT1xLnBhcnNlLEI9bC5hZGRFdmVudCxnPWwuY29ycmVjdEZsb2F0LHQ9bC5kZWZpbmVkLEk9bC5lcnJvcixDPWwuZXh0ZW5kLE09bC5maXJlRXZlbnQsTj1sLmlzQXJyYXksRj1sLmlzTnVtYmVyLFE9bC5pc09iamVjdCx2PWwuaXNTdHJpbmcsRz1sLm1lcmdlLEU9bC5vYmplY3RFYWNoLEQ9bC5waWNrO3E9bC5zZXJpZXNUeXBlO3ZhciBSPWwuc3RhYmxlU29ydCxMPWQuc2VyaWVzVHlwZXM7bD1kLm5vb3A7dmFyIE89Yi5nZXRDb2xvcixQPWIuZ2V0TGV2ZWxPcHRpb25zLEo9ZC5TZXJpZXMsZj1mdW5jdGlvbihhLGMsZSl7ZT1lfHx0aGlzO0UoYSxmdW5jdGlvbihwLGgpe2MuY2FsbChlLHAsaCxhKX0pfSxrPWZ1bmN0aW9uKGEsYyxlKXtlPWV8fHRoaXM7YT1jLmNhbGwoZSxhKTshMSE9PWEmJmsoYSxjLGUpfSx5PWIudXBkYXRlUm9vdElkLG49ITE7cSgidHJlZW1hcCIsInNjYXR0ZXIiLHthbGxvd1RyYXZlcnNpbmdUcmVlOiExLGFuaW1hdGlvbkxpbWl0OjI1MCwKc2hvd0luTGVnZW5kOiExLG1hcmtlcjohMSxjb2xvckJ5UG9pbnQ6ITEsZGF0YUxhYmVsczp7ZGVmZXI6ITEsZW5hYmxlZDohMCxmb3JtYXR0ZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzJiZ0aGlzLnBvaW50P3RoaXMucG9pbnQ6e307cmV0dXJuIHYoYS5uYW1lKT9hLm5hbWU6IiJ9LGluc2lkZTohMCx2ZXJ0aWNhbEFsaWduOiJtaWRkbGUifSx0b29sdGlwOntoZWFkZXJGb3JtYXQ6IiIscG9pbnRGb3JtYXQ6IjxiPntwb2ludC5uYW1lfTwvYj46IHtwb2ludC52YWx1ZX08YnIvPiJ9LGlnbm9yZUhpZGRlblBvaW50OiEwLGxheW91dEFsZ29yaXRobToic2xpY2VBbmREaWNlIixsYXlvdXRTdGFydGluZ0RpcmVjdGlvbjoidmVydGljYWwiLGFsdGVybmF0ZVN0YXJ0aW5nRGlyZWN0aW9uOiExLGxldmVsSXNDb25zdGFudDohMCxkcmlsbFVwQnV0dG9uOntwb3NpdGlvbjp7YWxpZ246InJpZ2h0Iix4Oi0xMCx5OjEwfX0sdHJhdmVyc2VVcEJ1dHRvbjp7cG9zaXRpb246e2FsaWduOiJyaWdodCIsCng6LTEwLHk6MTB9fSxib3JkZXJDb2xvcjoiI2U2ZTZlNiIsYm9yZGVyV2lkdGg6MSxjb2xvcktleToiY29sb3JWYWx1ZSIsb3BhY2l0eTouMTUsc3RhdGVzOntob3Zlcjp7Ym9yZGVyQ29sb3I6IiM5OTk5OTkiLGJyaWdodG5lc3M6TC5oZWF0bWFwPzA6LjEsaGFsbzohMSxvcGFjaXR5Oi43NSxzaGFkb3c6ITF9fX0se3BvaW50QXJyYXlNYXA6WyJ2YWx1ZSJdLGRpcmVjdFRvdWNoOiEwLG9wdGlvbmFsQXhpczoiY29sb3JBeGlzIixnZXRTeW1ib2w6bCxwYXJhbGxlbEFycmF5czpbIngiLCJ5IiwidmFsdWUiLCJjb2xvclZhbHVlIl0sY29sb3JLZXk6ImNvbG9yVmFsdWUiLHRyYWNrZXJHcm91cHM6WyJncm91cCIsImRhdGFMYWJlbHNHcm91cCJdLGdldExpc3RPZlBhcmVudHM6ZnVuY3Rpb24oYSxjKXthPU4oYSk/YTpbXTt2YXIgZT1OKGMpP2M6W107Yz1hLnJlZHVjZShmdW5jdGlvbihhLGMsZSl7Yz1EKGMucGFyZW50LCIiKTsidW5kZWZpbmVkIj09PXR5cGVvZiBhW2NdJiYoYVtjXT0KW10pO2FbY10ucHVzaChlKTtyZXR1cm4gYX0seyIiOltdfSk7ZihjLGZ1bmN0aW9uKGEsYyxiKXsiIiE9PWMmJi0xPT09ZS5pbmRleE9mKGMpJiYoYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2JbIiJdLnB1c2goYSl9KSxkZWxldGUgYltjXSl9KTtyZXR1cm4gY30sZ2V0VHJlZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZGF0YS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaWR9KTthPXRoaXMuZ2V0TGlzdE9mUGFyZW50cyh0aGlzLmRhdGEsYSk7dGhpcy5ub2RlTWFwPVtdO3JldHVybiB0aGlzLmJ1aWxkTm9kZSgiIiwtMSwwLGEsbnVsbCl9LGhhc0RhdGE6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMucHJvY2Vzc2VkWERhdGEubGVuZ3RofSxpbml0OmZ1bmN0aW9uKGEsYyl7dmFyIGU9ZC5jb2xvck1hcFNlcmllc01peGluO2UmJih0aGlzLmNvbG9yQXR0cmlicz1lLmNvbG9yQXR0cmlicyk7dGhpcy5ldmVudHNUb1VuYmluZC5wdXNoKEIodGhpcywic2V0T3B0aW9ucyIsZnVuY3Rpb24oYSl7YT0KYS51c2VyT3B0aW9uczt0KGEuYWxsb3dEcmlsbFRvTm9kZSkmJiF0KGEuYWxsb3dUcmF2ZXJzaW5nVHJlZSkmJihhLmFsbG93VHJhdmVyc2luZ1RyZWU9YS5hbGxvd0RyaWxsVG9Ob2RlLGRlbGV0ZSBhLmFsbG93RHJpbGxUb05vZGUpO3QoYS5kcmlsbFVwQnV0dG9uKSYmIXQoYS50cmF2ZXJzZVVwQnV0dG9uKSYmKGEudHJhdmVyc2VVcEJ1dHRvbj1hLmRyaWxsVXBCdXR0b24sZGVsZXRlIGEuZHJpbGxVcEJ1dHRvbil9KSk7Si5wcm90b3R5cGUuaW5pdC5jYWxsKHRoaXMsYSxjKTtkZWxldGUgdGhpcy5vcGFjaXR5O3RoaXMub3B0aW9ucy5hbGxvd1RyYXZlcnNpbmdUcmVlJiZ0aGlzLmV2ZW50c1RvVW5iaW5kLnB1c2goQih0aGlzLCJjbGljayIsdGhpcy5vbkNsaWNrRHJpbGxUb05vZGUpKX0sYnVpbGROb2RlOmZ1bmN0aW9uKGEsYyxlLGIsaCl7dmFyIGY9dGhpcyxwPVtdLGQ9Zi5wb2ludHNbY10saz0wLEs7KGJbYV18fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe0s9Zi5idWlsZE5vZGUoZi5wb2ludHNbY10uaWQsCmMsZSsxLGIsYSk7az1NYXRoLm1heChLLmhlaWdodCsxLGspO3AucHVzaChLKX0pO2M9e2lkOmEsaTpjLGNoaWxkcmVuOnAsaGVpZ2h0OmssbGV2ZWw6ZSxwYXJlbnQ6aCx2aXNpYmxlOiExfTtmLm5vZGVNYXBbYy5pZF09YztkJiYoZC5ub2RlPWMpO3JldHVybiBjfSxzZXRUcmVlVmFsdWVzOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMsZT1jLm9wdGlvbnMsYj1jLm5vZGVNYXBbYy5yb290Tm9kZV07ZT0iYm9vbGVhbiI9PT10eXBlb2YgZS5sZXZlbElzQ29uc3RhbnQ/ZS5sZXZlbElzQ29uc3RhbnQ6ITA7dmFyIGg9MCxmPVtdLHo9Yy5wb2ludHNbYS5pXTthLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYSl7YT1jLnNldFRyZWVWYWx1ZXMoYSk7Zi5wdXNoKGEpO2EuaWdub3JlfHwoaCs9YS52YWwpfSk7UihmLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGEuc29ydEluZGV4LWMuc29ydEluZGV4fSk7dmFyIGQ9RCh6JiZ6Lm9wdGlvbnMudmFsdWUsaCk7eiYmKHoudmFsdWU9ZCk7QyhhLHtjaGlsZHJlbjpmLApjaGlsZHJlblRvdGFsOmgsaWdub3JlOiEoRCh6JiZ6LnZpc2libGUsITApJiYwPGQpLGlzTGVhZjphLnZpc2libGUmJiFoLGxldmVsRHluYW1pYzphLmxldmVsLShlPzA6Yi5sZXZlbCksbmFtZTpEKHomJnoubmFtZSwiIiksc29ydEluZGV4OkQoeiYmei5zb3J0SW5kZXgsLWQpLHZhbDpkfSk7cmV0dXJuIGF9LGNhbGN1bGF0ZUNoaWxkcmVuQXJlYXM6ZnVuY3Rpb24oYSxjKXt2YXIgZT10aGlzLGI9ZS5vcHRpb25zLGg9ZS5tYXBPcHRpb25zVG9MZXZlbFthLmxldmVsKzFdLGY9RChlW2gmJmgubGF5b3V0QWxnb3JpdGhtXSYmaC5sYXlvdXRBbGdvcml0aG0sYi5sYXlvdXRBbGdvcml0aG0pLGQ9Yi5hbHRlcm5hdGVTdGFydGluZ0RpcmVjdGlvbixrPVtdO2E9YS5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIWEuaWdub3JlfSk7aCYmaC5sYXlvdXRTdGFydGluZ0RpcmVjdGlvbiYmKGMuZGlyZWN0aW9uPSJ2ZXJ0aWNhbCI9PT1oLmxheW91dFN0YXJ0aW5nRGlyZWN0aW9uPwowOjEpO2s9ZVtmXShjLGEpO2EuZm9yRWFjaChmdW5jdGlvbihhLGgpe2g9a1toXTthLnZhbHVlcz1HKGgse3ZhbDphLmNoaWxkcmVuVG90YWwsZGlyZWN0aW9uOmQ/MS1jLmRpcmVjdGlvbjpjLmRpcmVjdGlvbn0pO2EucG9pbnRWYWx1ZXM9RyhoLHt4OmgueC9lLmF4aXNSYXRpbyx5OjEwMC1oLnktaC5oZWlnaHQsd2lkdGg6aC53aWR0aC9lLmF4aXNSYXRpb30pO2EuY2hpbGRyZW4ubGVuZ3RoJiZlLmNhbGN1bGF0ZUNoaWxkcmVuQXJlYXMoYSxhLnZhbHVlcyl9KX0sc2V0UG9pbnRWYWx1ZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS54QXhpcyxlPWEueUF4aXMsYj1hLmNoYXJ0LnN0eWxlZE1vZGU7YS5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihoKXt2YXIgZj1oLm5vZGUsZD1mLnBvaW50VmFsdWVzO2Y9Zi52aXNpYmxlO2lmKGQmJmYpe2Y9ZC5oZWlnaHQ7dmFyIHA9ZC53aWR0aCxrPWQueCx5PWQueSxyPWI/MDooYS5wb2ludEF0dHJpYnMoaClbInN0cm9rZS13aWR0aCJdfHwKMCklMi8yO2Q9TWF0aC5yb3VuZChjLnRvUGl4ZWxzKGssITApKS1yO3A9TWF0aC5yb3VuZChjLnRvUGl4ZWxzKGsrcCwhMCkpLXI7az1NYXRoLnJvdW5kKGUudG9QaXhlbHMoeSwhMCkpLXI7Zj1NYXRoLnJvdW5kKGUudG9QaXhlbHMoeStmLCEwKSktcjtoLnNoYXBlQXJncz17eDpNYXRoLm1pbihkLHApLHk6TWF0aC5taW4oayxmKSx3aWR0aDpNYXRoLmFicyhwLWQpLGhlaWdodDpNYXRoLmFicyhmLWspfTtoLnBsb3RYPWguc2hhcGVBcmdzLngraC5zaGFwZUFyZ3Mud2lkdGgvMjtoLnBsb3RZPWguc2hhcGVBcmdzLnkraC5zaGFwZUFyZ3MuaGVpZ2h0LzJ9ZWxzZSBkZWxldGUgaC5wbG90WCxkZWxldGUgaC5wbG90WX0pfSxzZXRDb2xvclJlY3Vyc2l2ZTpmdW5jdGlvbihhLGMsZSxmLGgpe3ZhciBiPXRoaXMsZD1iJiZiLmNoYXJ0O2Q9ZCYmZC5vcHRpb25zJiZkLm9wdGlvbnMuY29sb3JzO2lmKGEpe3ZhciBwPU8oYSx7Y29sb3JzOmQsaW5kZXg6ZixtYXBPcHRpb25zVG9MZXZlbDpiLm1hcE9wdGlvbnNUb0xldmVsLApwYXJlbnRDb2xvcjpjLHBhcmVudENvbG9ySW5kZXg6ZSxzZXJpZXM6YixzaWJsaW5nczpofSk7aWYoYz1iLnBvaW50c1thLmldKWMuY29sb3I9cC5jb2xvcixjLmNvbG9ySW5kZXg9cC5jb2xvckluZGV4OyhhLmNoaWxkcmVufHxbXSkuZm9yRWFjaChmdW5jdGlvbihjLGUpe2Iuc2V0Q29sb3JSZWN1cnNpdmUoYyxwLmNvbG9yLHAuY29sb3JJbmRleCxlLGEuY2hpbGRyZW4ubGVuZ3RoKX0pfX0sYWxnb3JpdGhtR3JvdXA6ZnVuY3Rpb24oYSxjLGUsZil7dGhpcy5oZWlnaHQ9YTt0aGlzLndpZHRoPWM7dGhpcy5wbG90PWY7dGhpcy5zdGFydERpcmVjdGlvbj10aGlzLmRpcmVjdGlvbj1lO3RoaXMubEg9dGhpcy5uSD10aGlzLmxXPXRoaXMublc9dGhpcy50b3RhbD0wO3RoaXMuZWxBcnI9W107dGhpcy5sUD17dG90YWw6MCxsSDowLG5IOjAsbFc6MCxuVzowLG5SOjAsbFI6MCxhc3BlY3RSYXRpbzpmdW5jdGlvbihhLGMpe3JldHVybiBNYXRoLm1heChhL2MsYy9hKX19O3RoaXMuYWRkRWxlbWVudD0KZnVuY3Rpb24oYSl7dGhpcy5sUC50b3RhbD10aGlzLmVsQXJyW3RoaXMuZWxBcnIubGVuZ3RoLTFdO3RoaXMudG90YWwrPWE7MD09PXRoaXMuZGlyZWN0aW9uPyh0aGlzLmxXPXRoaXMublcsdGhpcy5sUC5sSD10aGlzLmxQLnRvdGFsL3RoaXMubFcsdGhpcy5sUC5sUj10aGlzLmxQLmFzcGVjdFJhdGlvKHRoaXMubFcsdGhpcy5sUC5sSCksdGhpcy5uVz10aGlzLnRvdGFsL3RoaXMuaGVpZ2h0LHRoaXMubFAubkg9dGhpcy5sUC50b3RhbC90aGlzLm5XLHRoaXMubFAublI9dGhpcy5sUC5hc3BlY3RSYXRpbyh0aGlzLm5XLHRoaXMubFAubkgpKToodGhpcy5sSD10aGlzLm5ILHRoaXMubFAubFc9dGhpcy5sUC50b3RhbC90aGlzLmxILHRoaXMubFAubFI9dGhpcy5sUC5hc3BlY3RSYXRpbyh0aGlzLmxQLmxXLHRoaXMubEgpLHRoaXMubkg9dGhpcy50b3RhbC90aGlzLndpZHRoLHRoaXMubFAublc9dGhpcy5sUC50b3RhbC90aGlzLm5ILHRoaXMubFAublI9dGhpcy5sUC5hc3BlY3RSYXRpbyh0aGlzLmxQLm5XLAp0aGlzLm5IKSk7dGhpcy5lbEFyci5wdXNoKGEpfTt0aGlzLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5sVz10aGlzLm5XPTA7dGhpcy5lbEFycj1bXTt0aGlzLnRvdGFsPTB9fSxhbGdvcml0aG1DYWxjUG9pbnRzOmZ1bmN0aW9uKGEsYyxlLGYpe3ZhciBoLGIsZCxwLGs9ZS5sVyx5PWUubEgscj1lLnBsb3Qsbj0wLGw9ZS5lbEFyci5sZW5ndGgtMTtpZihjKWs9ZS5uVyx5PWUubkg7ZWxzZSB2YXIgbT1lLmVsQXJyW2UuZWxBcnIubGVuZ3RoLTFdO2UuZWxBcnIuZm9yRWFjaChmdW5jdGlvbihhKXtpZihjfHxuPGwpMD09PWUuZGlyZWN0aW9uPyhoPXIueCxiPXIueSxkPWsscD1hL2QpOihoPXIueCxiPXIueSxwPXksZD1hL3ApLGYucHVzaCh7eDpoLHk6Yix3aWR0aDpkLGhlaWdodDpnKHApfSksMD09PWUuZGlyZWN0aW9uP3IueSs9cDpyLngrPWQ7bis9MX0pO2UucmVzZXQoKTswPT09ZS5kaXJlY3Rpb24/ZS53aWR0aC09azplLmhlaWdodC09eTtyLnk9ci5wYXJlbnQueSsoci5wYXJlbnQuaGVpZ2h0LQplLmhlaWdodCk7ci54PXIucGFyZW50LngrKHIucGFyZW50LndpZHRoLWUud2lkdGgpO2EmJihlLmRpcmVjdGlvbj0xLWUuZGlyZWN0aW9uKTtjfHxlLmFkZEVsZW1lbnQobSl9LGFsZ29yaXRobUxvd0FzcGVjdFJhdGlvOmZ1bmN0aW9uKGEsYyxlKXt2YXIgZj1bXSxoPXRoaXMsYixkPXt4OmMueCx5OmMueSxwYXJlbnQ6Y30saz0wLHk9ZS5sZW5ndGgtMSxuPW5ldyB0aGlzLmFsZ29yaXRobUdyb3VwKGMuaGVpZ2h0LGMud2lkdGgsYy5kaXJlY3Rpb24sZCk7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2I9ZS52YWwvYy52YWwqYy5oZWlnaHQqYy53aWR0aDtuLmFkZEVsZW1lbnQoYik7bi5sUC5uUj5uLmxQLmxSJiZoLmFsZ29yaXRobUNhbGNQb2ludHMoYSwhMSxuLGYsZCk7az09PXkmJmguYWxnb3JpdGhtQ2FsY1BvaW50cyhhLCEwLG4sZixkKTtrKz0xfSk7cmV0dXJuIGZ9LGFsZ29yaXRobUZpbGw6ZnVuY3Rpb24oYSxjLGUpe3ZhciBmPVtdLGgsYj1jLmRpcmVjdGlvbixkPWMueCxrPWMueSwKeT1jLndpZHRoLG49Yy5oZWlnaHQscixsLGcsbTtlLmZvckVhY2goZnVuY3Rpb24oZSl7aD1lLnZhbC9jLnZhbCpjLmhlaWdodCpjLndpZHRoO3I9ZDtsPWs7MD09PWI/KG09bixnPWgvbSx5LT1nLGQrPWcpOihnPXksbT1oL2csbi09bSxrKz1tKTtmLnB1c2goe3g6cix5Omwsd2lkdGg6ZyxoZWlnaHQ6bX0pO2EmJihiPTEtYil9KTtyZXR1cm4gZn0sc3RyaXA6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gdGhpcy5hbGdvcml0aG1Mb3dBc3BlY3RSYXRpbyghMSxhLGMpfSxzcXVhcmlmaWVkOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIHRoaXMuYWxnb3JpdGhtTG93QXNwZWN0UmF0aW8oITAsYSxjKX0sc2xpY2VBbmREaWNlOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIHRoaXMuYWxnb3JpdGhtRmlsbCghMCxhLGMpfSxzdHJpcGVzOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIHRoaXMuYWxnb3JpdGhtRmlsbCghMSxhLGMpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGM9YS5vcHRpb25zLGU9eShhKTsKSi5wcm90b3R5cGUudHJhbnNsYXRlLmNhbGwoYSk7dmFyIGY9YS50cmVlPWEuZ2V0VHJlZSgpO3ZhciBiPWEubm9kZU1hcFtlXTthLnJlbmRlclRyYXZlcnNlVXBCdXR0b24oZSk7YS5tYXBPcHRpb25zVG9MZXZlbD1QKHtmcm9tOmIubGV2ZWwrMSxsZXZlbHM6Yy5sZXZlbHMsdG86Zi5oZWlnaHQsZGVmYXVsdHM6e2xldmVsSXNDb25zdGFudDphLm9wdGlvbnMubGV2ZWxJc0NvbnN0YW50LGNvbG9yQnlQb2ludDpjLmNvbG9yQnlQb2ludH19KTsiIj09PWV8fGImJmIuY2hpbGRyZW4ubGVuZ3RofHwoYS5zZXRSb290Tm9kZSgiIiwhMSksZT1hLnJvb3ROb2RlLGI9YS5ub2RlTWFwW2VdKTtrKGEubm9kZU1hcFthLnJvb3ROb2RlXSxmdW5jdGlvbihjKXt2YXIgZT0hMSxiPWMucGFyZW50O2MudmlzaWJsZT0hMDtpZihifHwiIj09PWIpZT1hLm5vZGVNYXBbYl07cmV0dXJuIGV9KTtrKGEubm9kZU1hcFthLnJvb3ROb2RlXS5jaGlsZHJlbixmdW5jdGlvbihhKXt2YXIgYz0hMTthLmZvckVhY2goZnVuY3Rpb24oYSl7YS52aXNpYmxlPQohMDthLmNoaWxkcmVuLmxlbmd0aCYmKGM9KGN8fFtdKS5jb25jYXQoYS5jaGlsZHJlbikpfSk7cmV0dXJuIGN9KTthLnNldFRyZWVWYWx1ZXMoZik7YS5heGlzUmF0aW89YS54QXhpcy5sZW4vYS55QXhpcy5sZW47YS5ub2RlTWFwWyIiXS5wb2ludFZhbHVlcz1lPXt4OjAseTowLHdpZHRoOjEwMCxoZWlnaHQ6MTAwfTthLm5vZGVNYXBbIiJdLnZhbHVlcz1lPUcoZSx7d2lkdGg6ZS53aWR0aCphLmF4aXNSYXRpbyxkaXJlY3Rpb246InZlcnRpY2FsIj09PWMubGF5b3V0U3RhcnRpbmdEaXJlY3Rpb24/MDoxLHZhbDpmLnZhbH0pO2EuY2FsY3VsYXRlQ2hpbGRyZW5BcmVhcyhmLGUpO2EuY29sb3JBeGlzfHxjLmNvbG9yQnlQb2ludHx8YS5zZXRDb2xvclJlY3Vyc2l2ZShhLnRyZWUpO2MuYWxsb3dUcmF2ZXJzaW5nVHJlZSYmKGM9Yi5wb2ludFZhbHVlcyxhLnhBeGlzLnNldEV4dHJlbWVzKGMueCxjLngrYy53aWR0aCwhMSksYS55QXhpcy5zZXRFeHRyZW1lcyhjLnksYy55K2MuaGVpZ2h0LAohMSksYS54QXhpcy5zZXRTY2FsZSgpLGEueUF4aXMuc2V0U2NhbGUoKSk7YS5zZXRQb2ludFZhbHVlcygpfSxkcmF3RGF0YUxhYmVsczpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYz1hLm1hcE9wdGlvbnNUb0xldmVsLGUsYjthLnBvaW50cy5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZS52aXNpYmxlfSkuZm9yRWFjaChmdW5jdGlvbihmKXtiPWNbZi5ub2RlLmxldmVsXTtlPXtzdHlsZTp7fX07Zi5ub2RlLmlzTGVhZnx8KGUuZW5hYmxlZD0hMSk7YiYmYi5kYXRhTGFiZWxzJiYoZT1HKGUsYi5kYXRhTGFiZWxzKSxhLl9oYXNQb2ludExhYmVscz0hMCk7Zi5zaGFwZUFyZ3MmJihlLnN0eWxlLndpZHRoPWYuc2hhcGVBcmdzLndpZHRoLGYuZGF0YUxhYmVsJiZmLmRhdGFMYWJlbC5jc3Moe3dpZHRoOmYuc2hhcGVBcmdzLndpZHRoKyJweCJ9KSk7Zi5kbE9wdGlvbnM9RyhlLGYub3B0aW9ucy5kYXRhTGFiZWxzKX0pO0oucHJvdG90eXBlLmRyYXdEYXRhTGFiZWxzLmNhbGwodGhpcyl9LAphbGlnbkRhdGFMYWJlbDpmdW5jdGlvbihhLGMsZSl7dmFyIGY9ZS5zdHlsZTshdChmLnRleHRPdmVyZmxvdykmJmMudGV4dCYmYy5nZXRCQm94KCkud2lkdGg+Yy50ZXh0LnRleHRXaWR0aCYmYy5jc3Moe3RleHRPdmVyZmxvdzoiZWxsaXBzaXMiLHdpZHRoOmYud2lkdGgrPSJweCJ9KTtMLmNvbHVtbi5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWwuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EuZGF0YUxhYmVsJiZhLmRhdGFMYWJlbC5hdHRyKHt6SW5kZXg6KGEubm9kZS56SW5kZXh8fDApKzF9KX0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGEsYyl7dmFyIGU9USh0aGlzLm1hcE9wdGlvbnNUb0xldmVsKT90aGlzLm1hcE9wdGlvbnNUb0xldmVsOnt9LGY9YSYmZVthLm5vZGUubGV2ZWxdfHx7fTtlPXRoaXMub3B0aW9uczt2YXIgYj1jJiZlLnN0YXRlc1tjXXx8e30sZD1hJiZhLmdldENsYXNzTmFtZSgpfHwiIjthPXtzdHJva2U6YSYmYS5ib3JkZXJDb2xvcnx8Zi5ib3JkZXJDb2xvcnx8Yi5ib3JkZXJDb2xvcnx8CmUuYm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6RChhJiZhLmJvcmRlcldpZHRoLGYuYm9yZGVyV2lkdGgsYi5ib3JkZXJXaWR0aCxlLmJvcmRlcldpZHRoKSxkYXNoc3R5bGU6YSYmYS5ib3JkZXJEYXNoU3R5bGV8fGYuYm9yZGVyRGFzaFN0eWxlfHxiLmJvcmRlckRhc2hTdHlsZXx8ZS5ib3JkZXJEYXNoU3R5bGUsZmlsbDphJiZhLmNvbG9yfHx0aGlzLmNvbG9yfTstMSE9PWQuaW5kZXhPZigiaGlnaGNoYXJ0cy1hYm92ZS1sZXZlbCIpPyhhLmZpbGw9Im5vbmUiLGFbInN0cm9rZS13aWR0aCJdPTApOi0xIT09ZC5pbmRleE9mKCJoaWdoY2hhcnRzLWludGVybmFsLW5vZGUtaW50ZXJhY3RpdmUiKT8oYz1EKGIub3BhY2l0eSxlLm9wYWNpdHkpLGEuZmlsbD11KGEuZmlsbCkuc2V0T3BhY2l0eShjKS5nZXQoKSxhLmN1cnNvcj0icG9pbnRlciIpOi0xIT09ZC5pbmRleE9mKCJoaWdoY2hhcnRzLWludGVybmFsLW5vZGUiKT9hLmZpbGw9Im5vbmUiOmMmJihhLmZpbGw9dShhLmZpbGwpLmJyaWdodGVuKGIuYnJpZ2h0bmVzcykuZ2V0KCkpOwpyZXR1cm4gYX0sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYz1hLmNoYXJ0LGU9Yy5yZW5kZXJlcixmPWMuc3R5bGVkTW9kZSxiPWEub3B0aW9ucyxkPWY/e306Yi5zaGFkb3csaz1iLmJvcmRlclJhZGl1cyx5PWMucG9pbnRDb3VudDxiLmFuaW1hdGlvbkxpbWl0LG49Yi5hbGxvd1RyYXZlcnNpbmdUcmVlO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGg9Yy5ub2RlLmxldmVsRHluYW1pYyxwPXt9LGc9e30sbD17fSxtPSJsZXZlbC1ncm91cC0iK2gsUz0hIWMuZ3JhcGhpYyx6PXkmJlMsVD1jLnNoYXBlQXJncztjLnNob3VsZERyYXcoKSYmKGsmJihnLnI9ayksRyghMCx6P3A6ZyxTP1Q6e30sZj97fTphLnBvaW50QXR0cmlicyhjLGMuc2VsZWN0ZWQmJiJzZWxlY3QiKSksYS5jb2xvckF0dHJpYnMmJmYmJkMobCxhLmNvbG9yQXR0cmlicyhjKSksYVttXXx8KGFbbV09ZS5nKG0pLmF0dHIoe3pJbmRleDoxRTMtaH0pLmFkZChhLmdyb3VwKSxhW21dLnN1cnZpdmU9CiEwKSk7Yy5kcmF3KHthbmltYXRhYmxlQXR0cmliczpwLGF0dHJpYnM6Zyxjc3M6bCxncm91cDphW21dLHJlbmRlcmVyOmUsc2hhZG93OmQsc2hhcGVBcmdzOlQsc2hhcGVUeXBlOiJyZWN0In0pO24mJmMuZ3JhcGhpYyYmKGMuZHJpbGxJZD1iLmludGVyYWN0QnlMZWFmP2EuZHJpbGxUb0J5TGVhZihjKTphLmRyaWxsVG9CeUdyb3VwKGMpKX0pfSxvbkNsaWNrRHJpbGxUb05vZGU6ZnVuY3Rpb24oYSl7dmFyIGM9KGE9YS5wb2ludCkmJmEuZHJpbGxJZDt2KGMpJiYodGhpcy5pc0RyaWxsQWxsb3dlZD90aGlzLmlzRHJpbGxBbGxvd2VkKGMpOjEpJiYoYS5zZXRTdGF0ZSgiIiksdGhpcy5zZXRSb290Tm9kZShjLCEwLHt0cmlnZ2VyOiJjbGljayJ9KSl9LGRyaWxsVG9CeUdyb3VwOmZ1bmN0aW9uKGEpe3ZhciBjPSExOzEhPT1hLm5vZGUubGV2ZWwtdGhpcy5ub2RlTWFwW3RoaXMucm9vdE5vZGVdLmxldmVsfHxhLm5vZGUuaXNMZWFmfHwoYz1hLmlkKTtyZXR1cm4gY30sZHJpbGxUb0J5TGVhZjpmdW5jdGlvbihhKXt2YXIgYz0KITE7aWYoYS5ub2RlLnBhcmVudCE9PXRoaXMucm9vdE5vZGUmJmEubm9kZS5pc0xlYWYpZm9yKGE9YS5ub2RlOyFjOylhPXRoaXMubm9kZU1hcFthLnBhcmVudF0sYS5wYXJlbnQ9PT10aGlzLnJvb3ROb2RlJiYoYz1hLmlkKTtyZXR1cm4gY30sZHJpbGxVcDpmdW5jdGlvbigpe3ZhciBhPXRoaXMubm9kZU1hcFt0aGlzLnJvb3ROb2RlXTthJiZ2KGEucGFyZW50KSYmdGhpcy5zZXRSb290Tm9kZShhLnBhcmVudCwhMCx7dHJpZ2dlcjoidHJhdmVyc2VVcEJ1dHRvbiJ9KX0sZHJpbGxUb05vZGU6ZnVuY3Rpb24oYSxjKXtJKDMyLCExLHZvaWQgMCx7InRyZWVtYXAuZHJpbGxUb05vZGUiOiJ1c2UgdHJlZW1hcC5zZXRSb290Tm9kZSJ9KTt0aGlzLnNldFJvb3ROb2RlKGEsYyl9LHNldFJvb3ROb2RlOmZ1bmN0aW9uKGEsYyxlKXthPUMoe25ld1Jvb3RJZDphLHByZXZpb3VzUm9vdElkOnRoaXMucm9vdE5vZGUscmVkcmF3OkQoYywhMCksc2VyaWVzOnRoaXN9LGUpO00odGhpcywic2V0Um9vdE5vZGUiLAphLGZ1bmN0aW9uKGEpe3ZhciBjPWEuc2VyaWVzO2MuaWRQcmV2aW91c1Jvb3Q9YS5wcmV2aW91c1Jvb3RJZDtjLnJvb3ROb2RlPWEubmV3Um9vdElkO2MuaXNEaXJ0eT0hMDthLnJlZHJhdyYmYy5jaGFydC5yZWRyYXcoKX0pfSxpc0RyaWxsQWxsb3dlZDpmdW5jdGlvbihhKXt2YXIgYz10aGlzLnRyZWUsZT1jLmNoaWxkcmVuWzBdO3JldHVybiEoMT09PWMuY2hpbGRyZW4ubGVuZ3RoJiYoIiI9PT10aGlzLnJvb3ROb2RlJiZhPT09ZS5pZHx8dGhpcy5yb290Tm9kZT09PWUuaWQmJiIiPT09YSkpfSxyZW5kZXJUcmF2ZXJzZVVwQnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMsZT1jLm5vZGVNYXBbYV0sZj1jLm9wdGlvbnMudHJhdmVyc2VVcEJ1dHRvbixiPUQoZi50ZXh0LGUubmFtZSwiPCBCYWNrIik7IiIhPT1hJiYoIWMuaXNEcmlsbEFsbG93ZWR8fHYoZS5wYXJlbnQpJiZjLmlzRHJpbGxBbGxvd2VkKGUucGFyZW50KSk/dGhpcy5kcmlsbFVwQnV0dG9uPyh0aGlzLmRyaWxsVXBCdXR0b24ucGxhY2VkPQohMSx0aGlzLmRyaWxsVXBCdXR0b24uYXR0cih7dGV4dDpifSkuYWxpZ24oKSk6KGU9KGE9Zi50aGVtZSkmJmEuc3RhdGVzLHRoaXMuZHJpbGxVcEJ1dHRvbj10aGlzLmNoYXJ0LnJlbmRlcmVyLmJ1dHRvbihiLG51bGwsbnVsbCxmdW5jdGlvbigpe2MuZHJpbGxVcCgpfSxhLGUmJmUuaG92ZXIsZSYmZS5zZWxlY3QpLmFkZENsYXNzKCJoaWdoY2hhcnRzLWRyaWxsdXAtYnV0dG9uIikuYXR0cih7YWxpZ246Zi5wb3NpdGlvbi5hbGlnbix6SW5kZXg6N30pLmFkZCgpLmFsaWduKGYucG9zaXRpb24sITEsZi5yZWxhdGl2ZVRvfHwicGxvdEJveCIpKTpjLmRyaWxsVXBCdXR0b24mJihjLmRyaWxsVXBCdXR0b249Yy5kcmlsbFVwQnV0dG9uLmRlc3Ryb3koKSl9LGJ1aWxkS0RUcmVlOmwsZHJhd0xlZ2VuZFN5bWJvbDp3LmRyYXdSZWN0YW5nbGUsZ2V0RXh0cmVtZXM6ZnVuY3Rpb24oKXt2YXIgYT1KLnByb3RvdHlwZS5nZXRFeHRyZW1lcy5jYWxsKHRoaXMsdGhpcy5jb2xvclZhbHVlRGF0YSksCmM9YS5kYXRhTWF4O3RoaXMudmFsdWVNaW49YS5kYXRhTWluO3RoaXMudmFsdWVNYXg9YztyZXR1cm4gSi5wcm90b3R5cGUuZ2V0RXh0cmVtZXMuY2FsbCh0aGlzKX0sZ2V0RXh0cmVtZXNGcm9tQWxsOiEwLHNldFN0YXRlOmZ1bmN0aW9uKGEpe3RoaXMub3B0aW9ucy5pbmFjdGl2ZU90aGVyUG9pbnRzPSEwO0oucHJvdG90eXBlLnNldFN0YXRlLmNhbGwodGhpcyxhLCExKTt0aGlzLm9wdGlvbnMuaW5hY3RpdmVPdGhlclBvaW50cz0hMX0sdXRpbHM6e3JlY3Vyc2l2ZTprfX0se2RyYXc6eCxzZXRWaXNpYmxlOkwucGllLnByb3RvdHlwZS5wb2ludENsYXNzLnByb3RvdHlwZS5zZXRWaXNpYmxlLGdldENsYXNzTmFtZTpmdW5jdGlvbigpe3ZhciBhPW0ucHJvdG90eXBlLmdldENsYXNzTmFtZS5jYWxsKHRoaXMpLGM9dGhpcy5zZXJpZXMsZT1jLm9wdGlvbnM7dGhpcy5ub2RlLmxldmVsPD1jLm5vZGVNYXBbYy5yb290Tm9kZV0ubGV2ZWw/YSs9IiBoaWdoY2hhcnRzLWFib3ZlLWxldmVsIjoKdGhpcy5ub2RlLmlzTGVhZnx8RChlLmludGVyYWN0QnlMZWFmLCFlLmFsbG93VHJhdmVyc2luZ1RyZWUpP3RoaXMubm9kZS5pc0xlYWZ8fChhKz0iIGhpZ2hjaGFydHMtaW50ZXJuYWwtbm9kZSIpOmErPSIgaGlnaGNoYXJ0cy1pbnRlcm5hbC1ub2RlLWludGVyYWN0aXZlIjtyZXR1cm4gYX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlkfHxGKHRoaXMudmFsdWUpfSxzZXRTdGF0ZTpmdW5jdGlvbihhKXttLnByb3RvdHlwZS5zZXRTdGF0ZS5jYWxsKHRoaXMsYSk7dGhpcy5ncmFwaGljJiZ0aGlzLmdyYXBoaWMuYXR0cih7ekluZGV4OiJob3ZlciI9PT1hPzE6MH0pfSxzaG91bGREcmF3OmZ1bmN0aW9uKCl7cmV0dXJuIEYodGhpcy5wbG90WSkmJm51bGwhPT10aGlzLnl9fSk7QihkLlNlcmllcywiYWZ0ZXJCaW5kQXhlcyIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLnhBeGlzLGM9dGhpcy55QXhpcztpZihhJiZjKWlmKHRoaXMuaXMoInRyZWVtYXAiKSl7dmFyIGU9e2VuZE9uVGljazohMSwKZ3JpZExpbmVXaWR0aDowLGxpbmVXaWR0aDowLG1pbjowLGRhdGFNaW46MCxtaW5QYWRkaW5nOjAsbWF4OjEwMCxkYXRhTWF4OjEwMCxtYXhQYWRkaW5nOjAsc3RhcnRPblRpY2s6ITEsdGl0bGU6bnVsbCx0aWNrUG9zaXRpb25zOltdfTtDKGMub3B0aW9ucyxlKTtDKGEub3B0aW9ucyxlKTtuPSEwfWVsc2UgbiYmKGMuc2V0T3B0aW9ucyhjLnVzZXJPcHRpb25zKSxhLnNldE9wdGlvbnMoYS51c2VyT3B0aW9ucyksbj0hMSl9KTsiIn0pO0MoZCwibW9kdWxlcy9zdW5idXJzdC5zcmMuanMiLFtkWyJwYXJ0cy9HbG9iYWxzLmpzIl0sZFsicGFydHMvVXRpbGl0aWVzLmpzIl0sZFsibWl4aW5zL2RyYXctcG9pbnQuanMiXSxkWyJtaXhpbnMvdHJlZS1zZXJpZXMuanMiXV0sZnVuY3Rpb24oZCxiLEMscSl7dmFyIHc9Yi5jb3JyZWN0RmxvYXQsbT1iLmVycm9yLGw9Yi5leHRlbmQsdT1iLmlzTnVtYmVyLEI9Yi5pc09iamVjdCxnPWIuaXNTdHJpbmcsdD1iLm1lcmdlLHg9Yi5zZXJpZXNUeXBlLApJPWIuc3BsYXQ7Yj1kLkNlbnRlcmVkU2VyaWVzTWl4aW47dmFyIE09ZC5TZXJpZXMsTj1iLmdldENlbnRlcixGPXEuZ2V0Q29sb3IsUT1xLmdldExldmVsT3B0aW9ucyx2PWIuZ2V0U3RhcnRBbmRFbmRSYWRpYW5zLEc9MTgwL01hdGguUEksRT1kLnNlcmllc1R5cGVzLEQ9cS5zZXRUcmVlVmFsdWVzLFI9cS51cGRhdGVSb290SWQsTD1mdW5jdGlvbihmLGIpe3ZhciBkPVtdO2lmKHUoZikmJnUoYikmJmY8PWIpZm9yKDtmPD1iO2YrKylkLnB1c2goZik7cmV0dXJuIGR9LE89ZnVuY3Rpb24oYixkKXtkPUIoZCk/ZDp7fTt2YXIgZj0wLGs7aWYoQihiKSl7dmFyIGE9dCh7fSxiKTtiPXUoZC5mcm9tKT9kLmZyb206MDt2YXIgYz11KGQudG8pP2QudG86MDt2YXIgZT1MKGIsYyk7Yj1PYmplY3Qua2V5cyhhKS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuLTE9PT1lLmluZGV4T2YoK2EpfSk7dmFyIGc9az11KGQuZGlmZlJhZGl1cyk/ZC5kaWZmUmFkaXVzOjA7ZS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2M9CmFbY107dmFyIGI9Yy5sZXZlbFNpemUudW5pdCxlPWMubGV2ZWxTaXplLnZhbHVlOyJ3ZWlnaHQiPT09Yj9mKz1lOiJwZXJjZW50YWdlIj09PWI/KGMubGV2ZWxTaXplPXt1bml0OiJwaXhlbHMiLHZhbHVlOmUvMTAwKmd9LGstPWMubGV2ZWxTaXplLnZhbHVlKToicGl4ZWxzIj09PWImJihrLT1lKX0pO2UuZm9yRWFjaChmdW5jdGlvbihjKXt2YXIgYj1hW2NdOyJ3ZWlnaHQiPT09Yi5sZXZlbFNpemUudW5pdCYmKGI9Yi5sZXZlbFNpemUudmFsdWUsYVtjXS5sZXZlbFNpemU9e3VuaXQ6InBpeGVscyIsdmFsdWU6Yi9mKmt9KX0pO2IuZm9yRWFjaChmdW5jdGlvbihjKXthW2NdLmxldmVsU2l6ZT17dmFsdWU6MCx1bml0OiJwaXhlbHMifX0pfXJldHVybiBhfSxQPWZ1bmN0aW9uKGIpe3ZhciBmPWIubGV2ZWw7cmV0dXJue2Zyb206MDxmP2Y6MSx0bzpmK2IuaGVpZ2h0fX0sSj1mdW5jdGlvbihiLGQpe3ZhciBmPWQubWFwSWRUb05vZGVbYi5wYXJlbnRdLGs9ZC5zZXJpZXMsYT1rLmNoYXJ0LApjPWsucG9pbnRzW2IuaV07Zj1GKGIse2NvbG9yczprLm9wdGlvbnMuY29sb3JzfHxhJiZhLm9wdGlvbnMuY29sb3JzLGNvbG9ySW5kZXg6ay5jb2xvckluZGV4LGluZGV4OmQuaW5kZXgsbWFwT3B0aW9uc1RvTGV2ZWw6ZC5tYXBPcHRpb25zVG9MZXZlbCxwYXJlbnRDb2xvcjpmJiZmLmNvbG9yLHBhcmVudENvbG9ySW5kZXg6ZiYmZi5jb2xvckluZGV4LHNlcmllczpkLnNlcmllcyxzaWJsaW5nczpkLnNpYmxpbmdzfSk7Yi5jb2xvcj1mLmNvbG9yO2IuY29sb3JJbmRleD1mLmNvbG9ySW5kZXg7YyYmKGMuY29sb3I9Yi5jb2xvcixjLmNvbG9ySW5kZXg9Yi5jb2xvckluZGV4LGIuc2xpY2VkPWIuaWQhPT1kLmlkUm9vdD9jLnNsaWNlZDohMSk7cmV0dXJuIGJ9O3goInN1bmJ1cnN0IiwidHJlZW1hcCIse2NlbnRlcjpbIjUwJSIsIjUwJSJdLGNvbG9yQnlQb2ludDohMSxvcGFjaXR5OjEsZGF0YUxhYmVsczp7YWxsb3dPdmVybGFwOiEwLGRlZmVyOiEwLHJvdGF0aW9uTW9kZToiYXV0byIsCnN0eWxlOnt0ZXh0T3ZlcmZsb3c6ImVsbGlwc2lzIn19LHJvb3RJZDp2b2lkIDAsbGV2ZWxJc0NvbnN0YW50OiEwLGxldmVsU2l6ZTp7dmFsdWU6MSx1bml0OiJ3ZWlnaHQifSxzbGljZWRPZmZzZXQ6MTB9LHtkcmF3RGF0YUxhYmVsczpkLm5vb3AsZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBiPXRoaXMsZD1iLm1hcE9wdGlvbnNUb0xldmVsLGc9Yi5zaGFwZVJvb3QsbT1iLmdyb3VwLGE9Yi5oYXNSZW5kZXJlZCxjPWIucm9vdE5vZGUsZT1iLmlkUHJldmlvdXNSb290LHA9Yi5ub2RlTWFwLGg9cFtlXSxxPWgmJmguc2hhcGVBcmdzO2g9Yi5wb2ludHM7dmFyIHo9Yi5zdGFydEFuZEVuZFJhZGlhbnMsdz1iLmNoYXJ0LHY9dyYmdy5vcHRpb25zJiZ3Lm9wdGlvbnMuY2hhcnR8fHt9LEM9ImJvb2xlYW4iPT09dHlwZW9mIHYuYW5pbWF0aW9uP3YuYW5pbWF0aW9uOiEwLHI9Yi5jZW50ZXJbM10vMixEPWIuY2hhcnQucmVuZGVyZXIseD0hMSxFPSExO2lmKHY9ISEoQyYmYSYmYyE9PWUmJgpiLmRhdGFMYWJlbHNHcm91cCkpe2IuZGF0YUxhYmVsc0dyb3VwLmF0dHIoe29wYWNpdHk6MH0pO3ZhciBGPWZ1bmN0aW9uKCl7eD0hMDtiLmRhdGFMYWJlbHNHcm91cCYmYi5kYXRhTGFiZWxzR3JvdXAuYW5pbWF0ZSh7b3BhY2l0eToxLHZpc2liaWxpdHk6InZpc2libGUifSl9fWguZm9yRWFjaChmdW5jdGlvbihmKXt2YXIgaD1mLm5vZGUsaz1kW2gubGV2ZWxdO3ZhciB5PWYuc2hhcGVFeGlzdGluZ3x8e307dmFyIG49aC5zaGFwZUFyZ3N8fHt9LHY9ISghaC52aXNpYmxlfHwhaC5zaGFwZUFyZ3MpO2lmKGEmJkMpe3ZhciB4PXt9O3ZhciBLPXtlbmQ6bi5lbmQsc3RhcnQ6bi5zdGFydCxpbm5lclI6bi5pbm5lclIscjpuLnIseDpuLngseTpuLnl9O3Y/IWYuZ3JhcGhpYyYmcSYmKHg9Yz09PWYuaWQ/e3N0YXJ0Onouc3RhcnQsZW5kOnouZW5kfTpxLmVuZDw9bi5zdGFydD97c3RhcnQ6ei5lbmQsZW5kOnouZW5kfTp7c3RhcnQ6ei5zdGFydCxlbmQ6ei5zdGFydH0seC5pbm5lclI9eC5yPQpyKTpmLmdyYXBoaWMmJihlPT09Zi5pZD9LPXtpbm5lclI6cixyOnJ9OmcmJihLPWcuZW5kPD15LnN0YXJ0P3tpbm5lclI6cixyOnIsc3RhcnQ6ei5lbmQsZW5kOnouZW5kfTp7aW5uZXJSOnIscjpyLHN0YXJ0Onouc3RhcnQsZW5kOnouc3RhcnR9KSk7eT14fWVsc2UgSz1uLHk9e307eD1bbi5wbG90WCxuLnBsb3RZXTtpZighZi5ub2RlLmlzTGVhZilpZihjPT09Zi5pZCl7dmFyIEE9cFtjXTtBPUEucGFyZW50fWVsc2UgQT1mLmlkO2woZix7c2hhcGVFeGlzdGluZzpuLHRvb2x0aXBQb3M6eCxkcmlsbElkOkEsbmFtZToiIisoZi5uYW1lfHxmLmlkfHxmLmluZGV4KSxwbG90WDpuLnBsb3RYLHBsb3RZOm4ucGxvdFksdmFsdWU6aC52YWwsaXNOdWxsOiF2fSk7QT1mLm9wdGlvbnM7aD1CKG4pP246e307QT1CKEEpP0EuZGF0YUxhYmVsczp7fTtrPUkoQihrKT9rLmRhdGFMYWJlbHM6e30pWzBdO2s9dCh7c3R5bGU6e319LGssQSk7QT1rLnJvdGF0aW9uTW9kZTtpZighdShrLnJvdGF0aW9uKSl7aWYoImF1dG8iPT09CkF8fCJjaXJjdWxhciI9PT1BKWlmKDE+Zi5pbm5lckFyY0xlbmd0aCYmZi5vdXRlckFyY0xlbmd0aD5oLnJhZGl1cyl7dmFyIEg9MDtmLmRhdGFMYWJlbFBhdGgmJiJjaXJjdWxhciI9PT1BJiYoay50ZXh0UGF0aD17ZW5hYmxlZDohMH0pfWVsc2UgMTxmLmlubmVyQXJjTGVuZ3RoJiZmLm91dGVyQXJjTGVuZ3RoPjEuNSpoLnJhZGl1cz8iY2lyY3VsYXIiPT09QT9rLnRleHRQYXRoPXtlbmFibGVkOiEwLGF0dHJpYnV0ZXM6e2R5OjV9fTpBPSJwYXJhbGxlbCI6KGYuZGF0YUxhYmVsJiZmLmRhdGFMYWJlbC50ZXh0UGF0aFdyYXBwZXImJiJjaXJjdWxhciI9PT1BJiYoay50ZXh0UGF0aD17ZW5hYmxlZDohMX0pLEE9InBlcnBlbmRpY3VsYXIiKTsiYXV0byIhPT1BJiYiY2lyY3VsYXIiIT09QSYmKEg9aC5lbmQtKGguZW5kLWguc3RhcnQpLzIpO2suc3R5bGUud2lkdGg9InBhcmFsbGVsIj09PUE/TWF0aC5taW4oMi41KmgucmFkaXVzLChmLm91dGVyQXJjTGVuZ3RoK2YuaW5uZXJBcmNMZW5ndGgpLwoyKTpoLnJhZGl1czsicGVycGVuZGljdWxhciI9PT1BJiZmLnNlcmllcy5jaGFydC5yZW5kZXJlci5mb250TWV0cmljcyhrLnN0eWxlLmZvbnRTaXplKS5oPmYub3V0ZXJBcmNMZW5ndGgmJihrLnN0eWxlLndpZHRoPTEpO2suc3R5bGUud2lkdGg9TWF0aC5tYXgoay5zdHlsZS53aWR0aC0yKihrLnBhZGRpbmd8fDApLDEpO0g9SCpHJTE4MDsicGFyYWxsZWwiPT09QSYmKEgtPTkwKTs5MDxIP0gtPTE4MDotOTA+SCYmKEgrPTE4MCk7ay5yb3RhdGlvbj1IfWsudGV4dFBhdGgmJigwPT09Zi5zaGFwZUV4aXN0aW5nLmlubmVyUiYmay50ZXh0UGF0aC5lbmFibGVkPyhrLnJvdGF0aW9uPTAsay50ZXh0UGF0aC5lbmFibGVkPSExLGsuc3R5bGUud2lkdGg9TWF0aC5tYXgoMipmLnNoYXBlRXhpc3Rpbmcuci0yKihrLnBhZGRpbmd8fDApLDEpKTpmLmRsT3B0aW9ucyYmZi5kbE9wdGlvbnMudGV4dFBhdGgmJiFmLmRsT3B0aW9ucy50ZXh0UGF0aC5lbmFibGVkJiYiY2lyY3VsYXIiPT09QSYmKGsudGV4dFBhdGguZW5hYmxlZD0KITApLGsudGV4dFBhdGguZW5hYmxlZCYmKGsucm90YXRpb249MCxrLnN0eWxlLndpZHRoPU1hdGgubWF4KChmLm91dGVyQXJjTGVuZ3RoK2YuaW5uZXJBcmNMZW5ndGgpLzItMiooay5wYWRkaW5nfHwwKSwxKSkpOzA9PT1rLnJvdGF0aW9uJiYoay5yb3RhdGlvbj0uMDAxKTtmLmRsT3B0aW9ucz1rO2lmKCFFJiZ2KXtFPSEwO3ZhciBWPUZ9Zi5kcmF3KHthbmltYXRhYmxlQXR0cmliczpLLGF0dHJpYnM6bCh5LCF3LnN0eWxlZE1vZGUmJmIucG9pbnRBdHRyaWJzKGYsZi5zZWxlY3RlZCYmInNlbGVjdCIpKSxvbkNvbXBsZXRlOlYsZ3JvdXA6bSxyZW5kZXJlcjpELHNoYXBlVHlwZToiYXJjIixzaGFwZUFyZ3M6bn0pfSk7diYmRT8oYi5oYXNSZW5kZXJlZD0hMSxiLm9wdGlvbnMuZGF0YUxhYmVscy5kZWZlcj0hMCxNLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscy5jYWxsKGIpLGIuaGFzUmVuZGVyZWQ9ITAseCYmRigpKTpNLnByb3RvdHlwZS5kcmF3RGF0YUxhYmVscy5jYWxsKGIpfSxwb2ludEF0dHJpYnM6RS5jb2x1bW4ucHJvdG90eXBlLnBvaW50QXR0cmlicywKbGF5b3V0QWxnb3JpdGhtOmZ1bmN0aW9uKGIsZCxnKXt2YXIgZj1iLnN0YXJ0LGE9Yi5lbmQtZixjPWIudmFsLGU9Yi54LGs9Yi55LGg9ZyYmQihnLmxldmVsU2l6ZSkmJnUoZy5sZXZlbFNpemUudmFsdWUpP2cubGV2ZWxTaXplLnZhbHVlOjAsbT1iLnIsbD1tK2gseT1nJiZ1KGcuc2xpY2VkT2Zmc2V0KT9nLnNsaWNlZE9mZnNldDowO3JldHVybihkfHxbXSkucmVkdWNlKGZ1bmN0aW9uKGIsZCl7dmFyIGc9MS9jKmQudmFsKmEsbj1mK2cvMixwPWUrTWF0aC5jb3MobikqeTtuPWsrTWF0aC5zaW4obikqeTtkPXt4OmQuc2xpY2VkP3A6ZSx5OmQuc2xpY2VkP246ayxpbm5lclI6bSxyOmwscmFkaXVzOmgsc3RhcnQ6ZixlbmQ6ZitnfTtiLnB1c2goZCk7Zj1kLmVuZDtyZXR1cm4gYn0sW10pfSxzZXRTaGFwZUFyZ3M6ZnVuY3Rpb24oYixkLGcpe3ZhciBmPVtdLGE9Z1tiLmxldmVsKzFdO2I9Yi5jaGlsZHJlbi5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGEudmlzaWJsZX0pO2Y9dGhpcy5sYXlvdXRBbGdvcml0aG0oZCwKYixhKTtiLmZvckVhY2goZnVuY3Rpb24oYSxiKXtiPWZbYl07dmFyIGM9Yi5zdGFydCsoYi5lbmQtYi5zdGFydCkvMixkPWIuaW5uZXJSKyhiLnItYi5pbm5lclIpLzIsZT1iLmVuZC1iLnN0YXJ0O2Q9MD09PWIuaW5uZXJSJiY2LjI4PGU/e3g6Yi54LHk6Yi55fTp7eDpiLngrTWF0aC5jb3MoYykqZCx5OmIueStNYXRoLnNpbihjKSpkfTt2YXIgaz1hLnZhbD9hLmNoaWxkcmVuVG90YWw+YS52YWw/YS5jaGlsZHJlblRvdGFsOmEudmFsOmEuY2hpbGRyZW5Ub3RhbDt0aGlzLnBvaW50c1thLmldJiYodGhpcy5wb2ludHNbYS5pXS5pbm5lckFyY0xlbmd0aD1lKmIuaW5uZXJSLHRoaXMucG9pbnRzW2EuaV0ub3V0ZXJBcmNMZW5ndGg9ZSpiLnIpO2Euc2hhcGVBcmdzPXQoYix7cGxvdFg6ZC54LHBsb3RZOmQueSs0Kk1hdGguYWJzKE1hdGguY29zKGMpKX0pO2EudmFsdWVzPXQoYix7dmFsOmt9KTthLmNoaWxkcmVuLmxlbmd0aCYmdGhpcy5zZXRTaGFwZUFyZ3MoYSxhLnZhbHVlcyxnKX0sCnRoaXMpfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGQ9Yi5vcHRpb25zLGw9Yi5jZW50ZXI9Ti5jYWxsKGIpLG49Yi5zdGFydEFuZEVuZFJhZGlhbnM9dihkLnN0YXJ0QW5nbGUsZC5lbmRBbmdsZSksYT1sWzNdLzIsYz1sWzJdLzItYSxlPVIoYikscD1iLm5vZGVNYXAsaD1wJiZwW2VdLHQ9e307Yi5zaGFwZVJvb3Q9aCYmaC5zaGFwZUFyZ3M7TS5wcm90b3R5cGUudHJhbnNsYXRlLmNhbGwoYik7dmFyIHc9Yi50cmVlPWIuZ2V0VHJlZSgpO2IucmVuZGVyVHJhdmVyc2VVcEJ1dHRvbihlKTtwPWIubm9kZU1hcDtoPXBbZV07dmFyIHU9ZyhoLnBhcmVudCk/aC5wYXJlbnQ6IiI7dT1wW3VdO3ZhciBxPVAoaCk7dmFyIHg9cS5mcm9tLHI9cS50bztxPVEoe2Zyb206eCxsZXZlbHM6Yi5vcHRpb25zLmxldmVscyx0bzpyLGRlZmF1bHRzOntjb2xvckJ5UG9pbnQ6ZC5jb2xvckJ5UG9pbnQsZGF0YUxhYmVsczpkLmRhdGFMYWJlbHMsbGV2ZWxJc0NvbnN0YW50OmQubGV2ZWxJc0NvbnN0YW50LApsZXZlbFNpemU6ZC5sZXZlbFNpemUsc2xpY2VkT2Zmc2V0OmQuc2xpY2VkT2Zmc2V0fX0pO3E9TyhxLHtkaWZmUmFkaXVzOmMsZnJvbTp4LHRvOnJ9KTtEKHcse2JlZm9yZTpKLGlkUm9vdDplLGxldmVsSXNDb25zdGFudDpkLmxldmVsSXNDb25zdGFudCxtYXBPcHRpb25zVG9MZXZlbDpxLG1hcElkVG9Ob2RlOnAscG9pbnRzOmIucG9pbnRzLHNlcmllczpifSk7ZD1wWyIiXS5zaGFwZUFyZ3M9e2VuZDpuLmVuZCxyOmEsc3RhcnQ6bi5zdGFydCx2YWw6aC52YWwseDpsWzBdLHk6bFsxXX07dGhpcy5zZXRTaGFwZUFyZ3ModSxkLHEpO2IubWFwT3B0aW9uc1RvTGV2ZWw9cTtiLmRhdGEuZm9yRWFjaChmdW5jdGlvbihhKXt0W2EuaWRdJiZtKDMxLCExLGIuY2hhcnQpO3RbYS5pZF09ITB9KTt0PXt9fSxhbGlnbkRhdGFMYWJlbDpmdW5jdGlvbihiLGQsZyl7aWYoIWcudGV4dFBhdGh8fCFnLnRleHRQYXRoLmVuYWJsZWQpcmV0dXJuIEUudHJlZW1hcC5wcm90b3R5cGUuYWxpZ25EYXRhTGFiZWwuYXBwbHkodGhpcywKYXJndW1lbnRzKX0sYW5pbWF0ZTpmdW5jdGlvbihiKXt2YXIgZD10aGlzLmNoYXJ0LGY9W2QucGxvdFdpZHRoLzIsZC5wbG90SGVpZ2h0LzJdLGc9ZC5wbG90TGVmdCxhPWQucGxvdFRvcDtkPXRoaXMuZ3JvdXA7Yj8oYj17dHJhbnNsYXRlWDpmWzBdK2csdHJhbnNsYXRlWTpmWzFdK2Esc2NhbGVYOi4wMDEsc2NhbGVZOi4wMDEscm90YXRpb246MTAsb3BhY2l0eTouMDF9LGQuYXR0cihiKSk6KGI9e3RyYW5zbGF0ZVg6Zyx0cmFuc2xhdGVZOmEsc2NhbGVYOjEsc2NhbGVZOjEscm90YXRpb246MCxvcGFjaXR5OjF9LGQuYW5pbWF0ZShiLHRoaXMub3B0aW9ucy5hbmltYXRpb24pKX0sdXRpbHM6e2NhbGN1bGF0ZUxldmVsU2l6ZXM6TyxnZXRMZXZlbEZyb21BbmRUbzpQLHJhbmdlOkx9fSx7ZHJhdzpDLHNob3VsZERyYXc6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc051bGx9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sZ2V0RGF0YUxhYmVsUGF0aDpmdW5jdGlvbihiKXt2YXIgZD0KdGhpcy5zZXJpZXMuY2hhcnQucmVuZGVyZXIsZj10aGlzLnNoYXBlRXhpc3RpbmcsZz1mLnN0YXJ0LGE9Zi5lbmQsYz1nKyhhLWcpLzI7Yz0wPmMmJmM+LU1hdGguUEl8fGM+TWF0aC5QSTt2YXIgZT1mLnIrKGIub3B0aW9ucy5kaXN0YW5jZXx8MCk7Zz09PS1NYXRoLlBJLzImJncoYSk9PT13KDEuNSpNYXRoLlBJKSYmKGc9LU1hdGguUEkrTWF0aC5QSS8zNjAsYT0tTWF0aC5QSS8zNjAsYz0hMCk7aWYoYS1nPk1hdGguUEkpe2M9ITE7dmFyIGw9ITB9dGhpcy5kYXRhTGFiZWxQYXRoJiYodGhpcy5kYXRhTGFiZWxQYXRoPXRoaXMuZGF0YUxhYmVsUGF0aC5kZXN0cm95KCkpO3RoaXMuZGF0YUxhYmVsUGF0aD1kLmFyYyh7b3BlbjohMCxsb25nQXJjOmw/MTowfSkuYWRkKGIpO3RoaXMuZGF0YUxhYmVsUGF0aC5hdHRyKHtzdGFydDpjP2c6YSxlbmQ6Yz9hOmcsY2xvY2t3aXNlOitjLHg6Zi54LHk6Zi55LHI6KGUrZi5pbm5lclIpLzJ9KTtyZXR1cm4gdGhpcy5kYXRhTGFiZWxQYXRofX0pfSk7CkMoZCwibWFzdGVycy9tb2R1bGVzL3N1bmJ1cnN0LnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1zdW5idXJzdC5qcy5tYXA="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFZlY3RvciBwbG90IHNlcmllcyBtb2R1bGUKCiAoYykgMjAxMC0yMDE5IFRvcnN0ZWluIEhvbnNpCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGEpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGFbImRlZmF1bHQiXT1hLG1vZHVsZS5leHBvcnRzPWEpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL3ZlY3RvciIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oYyl7YShjKTthLkhpZ2hjaGFydHM9YztyZXR1cm4gYX0pOmEoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihhKXtmdW5jdGlvbiBjKGEsZCxjLGUpe2EuaGFzT3duUHJvcGVydHkoZCl8fChhW2RdPWUuYXBwbHkobnVsbCxjKSl9YT1hP2EuX21vZHVsZXM6e307YyhhLCJtb2R1bGVzL3ZlY3Rvci5zcmMuanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsZCl7dmFyIGM9ZC5hbmltT2JqZWN0LGU9ZC5hcnJheU1heCxnPWQucGljaztkPQpkLnNlcmllc1R5cGU7ZCgidmVjdG9yIiwic2NhdHRlciIse2xpbmVXaWR0aDoyLG1hcmtlcjpudWxsLHJvdGF0aW9uT3JpZ2luOiJjZW50ZXIiLHN0YXRlczp7aG92ZXI6e2xpbmVXaWR0aFBsdXM6MX19LHRvb2x0aXA6e3BvaW50Rm9ybWF0OiI8Yj5be3BvaW50Lnh9LCB7cG9pbnQueX1dPC9iPjxici8+TGVuZ3RoOiA8Yj57cG9pbnQubGVuZ3RofTwvYj48YnIvPkRpcmVjdGlvbjogPGI+e3BvaW50LmRpcmVjdGlvbn1cdTAwYjA8L2I+PGJyLz4ifSx2ZWN0b3JMZW5ndGg6MjB9LHtwb2ludEFycmF5TWFwOlsieSIsImxlbmd0aCIsImRpcmVjdGlvbiJdLHBhcmFsbGVsQXJyYXlzOlsieCIsInkiLCJsZW5ndGgiLCJkaXJlY3Rpb24iXSxwb2ludEF0dHJpYnM6ZnVuY3Rpb24oYSxiKXt2YXIgZj10aGlzLm9wdGlvbnM7YT1hLmNvbG9yfHx0aGlzLmNvbG9yO3ZhciBjPXRoaXMub3B0aW9ucy5saW5lV2lkdGg7YiYmKGE9Zi5zdGF0ZXNbYl0uY29sb3J8fGEsYz0oZi5zdGF0ZXNbYl0ubGluZVdpZHRofHwKYykrKGYuc3RhdGVzW2JdLmxpbmVXaWR0aFBsdXN8fDApKTtyZXR1cm57c3Ryb2tlOmEsInN0cm9rZS13aWR0aCI6Y319LG1hcmtlckF0dHJpYnM6YS5ub29wLGdldFN5bWJvbDphLm5vb3AsYXJyb3c6ZnVuY3Rpb24oYSl7YT1hLmxlbmd0aC90aGlzLmxlbmd0aE1heCp0aGlzLm9wdGlvbnMudmVjdG9yTGVuZ3RoLzIwO3ZhciBiPXtzdGFydDoxMCphLGNlbnRlcjowLGVuZDotMTAqYX1bdGhpcy5vcHRpb25zLnJvdGF0aW9uT3JpZ2luXXx8MDtyZXR1cm5bWyJNIiwwLDcqYStiXSxbIkwiLC0xLjUqYSw3KmErYl0sWyJMIiwwLDEwKmErYl0sWyJMIiwxLjUqYSw3KmErYl0sWyJMIiwwLDcqYStiXSxbIkwiLDAsLTEwKmErYl1dfSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXthLlNlcmllcy5wcm90b3R5cGUudHJhbnNsYXRlLmNhbGwodGhpcyk7dGhpcy5sZW5ndGhNYXg9ZSh0aGlzLmxlbmd0aERhdGEpfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydDt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPQpiLnBsb3RYLGQ9Yi5wbG90WTshMT09PXRoaXMub3B0aW9ucy5jbGlwfHxhLmlzSW5zaWRlUGxvdChjLGQsYS5pbnZlcnRlZCk/KGIuZ3JhcGhpY3x8KGIuZ3JhcGhpYz10aGlzLmNoYXJ0LnJlbmRlcmVyLnBhdGgoKS5hZGQodGhpcy5tYXJrZXJHcm91cCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcG9pbnQgaGlnaGNoYXJ0cy1jb2xvci0iK2coYi5jb2xvckluZGV4LGIuc2VyaWVzLmNvbG9ySW5kZXgpKSksYi5ncmFwaGljLmF0dHIoe2Q6dGhpcy5hcnJvdyhiKSx0cmFuc2xhdGVYOmMsdHJhbnNsYXRlWTpkLHJvdGF0aW9uOmIuZGlyZWN0aW9ufSksdGhpcy5jaGFydC5zdHlsZWRNb2RlfHxiLmdyYXBoaWMuYXR0cih0aGlzLnBvaW50QXR0cmlicyhiKSkpOmIuZ3JhcGhpYyYmKGIuZ3JhcGhpYz1iLmdyYXBoaWMuZGVzdHJveSgpKX0sdGhpcyl9LGRyYXdHcmFwaDphLm5vb3AsYW5pbWF0ZTpmdW5jdGlvbihhKXthP3RoaXMubWFya2VyR3JvdXAuYXR0cih7b3BhY2l0eTouMDF9KTp0aGlzLm1hcmtlckdyb3VwLmFuaW1hdGUoe29wYWNpdHk6MX0sCmModGhpcy5vcHRpb25zLmFuaW1hdGlvbikpfX0pOyIifSk7YyhhLCJtYXN0ZXJzL21vZHVsZXMvdmVjdG9yLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD12ZWN0b3IuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDE2LTIwMTkgSGlnaHNvZnQgQVMKIEF1dGhvcnM6IEpvbiBBcmlsZCBOeWdhcmQKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYil7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYlsiZGVmYXVsdCJdPWIsbW9kdWxlLmV4cG9ydHM9Yik6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvd29yZGNsb3VkIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihsKXtiKGwpO2IuSGlnaGNoYXJ0cz1sO3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGwoYixlLHosaCl7Yi5oYXNPd25Qcm9wZXJ0eShlKXx8KGJbZV09aC5hcHBseShudWxsLHopKX1iPWI/Yi5fbW9kdWxlczp7fTtsKGIsIm1peGlucy9kcmF3LXBvaW50LmpzIixbXSxmdW5jdGlvbigpe3ZhciBiPWZ1bmN0aW9uKGUpe3ZhciBiLGg9dGhpcyxwPWguZ3JhcGhpYyx0PWUuYW5pbWF0YWJsZUF0dHJpYnMsdT1lLm9uQ29tcGxldGUsbD1lLmNzcywKcT1lLnJlbmRlcmVyLHk9bnVsbD09PShiPWguc2VyaWVzKXx8dm9pZCAwPT09Yj92b2lkIDA6Yi5vcHRpb25zLmFuaW1hdGlvbjtpZihoLnNob3VsZERyYXcoKSlwfHwoaC5ncmFwaGljPXA9cVtlLnNoYXBlVHlwZV0oZS5zaGFwZUFyZ3MpLmFkZChlLmdyb3VwKSkscC5jc3MobCkuYXR0cihlLmF0dHJpYnMpLmFuaW1hdGUodCxlLmlzTmV3PyExOnksdSk7ZWxzZSBpZihwKXt2YXIgdj1mdW5jdGlvbigpe2guZ3JhcGhpYz1wPXAuZGVzdHJveSgpOyJmdW5jdGlvbiI9PT10eXBlb2YgdSYmdSgpfTtPYmplY3Qua2V5cyh0KS5sZW5ndGg/cC5hbmltYXRlKHQsdm9pZCAwLGZ1bmN0aW9uKCl7digpfSk6digpfX07cmV0dXJuIGZ1bmN0aW9uKGUpeyhlLmF0dHJpYnM9ZS5hdHRyaWJzfHx7fSlbImNsYXNzIl09dGhpcy5nZXRDbGFzc05hbWUoKTtiLmNhbGwodGhpcyxlKX19KTtsKGIsIm1peGlucy9wb2x5Z29uLmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSwKZnVuY3Rpb24oYixlKXt2YXIgbD1lLmZpbmQsaD1lLmlzQXJyYXkscD1lLmlzTnVtYmVyLHQ9Yi5kZWcycmFkLHU9ZnVuY3Rpb24oYSxjKXtjPXAoYyk/YzoxNDtjPU1hdGgucG93KDEwLGMpO3JldHVybiBNYXRoLnJvdW5kKGEqYykvY30sSD1mdW5jdGlvbihhLGMpe3ZhciBiPWNbMF0tYVswXTthPWNbMV0tYVsxXTtyZXR1cm5bWy1hLGJdLFthLC1iXV19LHE9ZnVuY3Rpb24oYSxjKXthPWEubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhWzBdKmNbMF0rYVsxXSpjWzFdfSk7cmV0dXJue21pbjpNYXRoLm1pbi5hcHBseSh0aGlzLGEpLG1heDpNYXRoLm1heC5hcHBseSh0aGlzLGEpfX0seT1mdW5jdGlvbihhLGMpe3ZhciBiPWFbMF07YT1hWzFdO3ZhciBrPXQqLWM7Yz1NYXRoLmNvcyhrKTtrPU1hdGguc2luKGspO3JldHVyblt1KGIqYy1hKmspLHUoYiprK2EqYyldfSx2PWZ1bmN0aW9uKGEsYyxiKXthPXkoW2FbMF0tY1swXSxhWzFdLWNbMV1dLGIpO3JldHVyblthWzBdK2NbMF0sYVsxXSsKY1sxXV19LEM9ZnVuY3Rpb24oYSl7dmFyIGM9YS5heGVzO2lmKCFoKGMpKXtjPVtdO3ZhciBiPWI9YS5jb25jYXQoW2FbMF1dKTtiLnJlZHVjZShmdW5jdGlvbihhLGIpe3ZhciBrPUgoYSxiKVswXTtsKGMsZnVuY3Rpb24oYSl7cmV0dXJuIGFbMF09PT1rWzBdJiZhWzFdPT09a1sxXX0pfHxjLnB1c2goayk7cmV0dXJuIGJ9KTthLmF4ZXM9Y31yZXR1cm4gY30sRj1mdW5jdGlvbihhLGMpe2E9QyhhKTtjPUMoYyk7cmV0dXJuIGEuY29uY2F0KGMpfTtyZXR1cm57Z2V0Qm91bmRpbmdCb3hGcm9tUG9seWdvbjpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzBdO2I9YlsxXTthLmxlZnQ9TWF0aC5taW4oYyxhLmxlZnQpO2EucmlnaHQ9TWF0aC5tYXgoYyxhLnJpZ2h0KTthLmJvdHRvbT1NYXRoLm1heChiLGEuYm90dG9tKTthLnRvcD1NYXRoLm1pbihiLGEudG9wKTtyZXR1cm4gYX0se2xlZnQ6TnVtYmVyLk1BWF9WQUxVRSxyaWdodDotTnVtYmVyLk1BWF9WQUxVRSwKYm90dG9tOi1OdW1iZXIuTUFYX1ZBTFVFLHRvcDpOdW1iZXIuTUFYX1ZBTFVFfSl9LGdldFBvbHlnb246ZnVuY3Rpb24oYSxiLGUsayxoKXt2YXIgYz1bYSxiXSxsPWEtZS8yO2ErPWUvMjtlPWItay8yO2IrPWsvMjtyZXR1cm5bW2wsZV0sW2EsZV0sW2EsYl0sW2wsYl1dLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gdihhLGMsLWgpfSl9LGlzUG9seWdvbnNDb2xsaWRpbmc6ZnVuY3Rpb24oYSxiKXt2YXIgYz1GKGEsYik7cmV0dXJuIWwoYyxmdW5jdGlvbihjKXt2YXIgZT1xKGEsYyk7Yz1xKGIsYyk7cmV0dXJuISEoYy5taW4+ZS5tYXh8fGMubWF4PGUubWluKX0pfSxtb3ZlUG9seWdvbjpmdW5jdGlvbihhLGIsZSl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGMpe3JldHVybltjWzBdK2EsY1sxXStiXX0pfSxyb3RhdGUyRFRvT3JpZ2luOnkscm90YXRlMkRUb1BvaW50OnZ9fSk7bChiLCJtb2R1bGVzL3dvcmRjbG91ZC5zcmMuanMiLFtiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsicGFydHMvVXRpbGl0aWVzLmpzIl0sCmJbIm1peGlucy9kcmF3LXBvaW50LmpzIl0sYlsibWl4aW5zL3BvbHlnb24uanMiXV0sZnVuY3Rpb24oYixlLGwsaCl7ZnVuY3Rpb24gcChnLGQpe3ZhciBmPSExLGE9Zy5yZWN0LGI9Zy5wb2x5Z29uLGU9Zy5sYXN0Q29sbGlkZWRXaXRoLGs9ZnVuY3Rpb24oZCl7dmFyIGY9ZC5yZWN0OyhmPSEoZi5sZWZ0PmEucmlnaHR8fGYucmlnaHQ8YS5sZWZ0fHxmLnRvcD5hLmJvdHRvbXx8Zi5ib3R0b208YS50b3ApKSYmKGcucm90YXRpb24lOTB8fGQucm90YXRpb24lOTApJiYoZj1EKGIsZC5wb2x5Z29uKSk7cmV0dXJuIGZ9O2UmJigoZj1rKGUpKXx8ZGVsZXRlIGcubGFzdENvbGxpZGVkV2l0aCk7Znx8KGY9ISFjKGQsZnVuY3Rpb24oZCl7dmFyIGY9ayhkKTtmJiYoZy5sYXN0Q29sbGlkZWRXaXRoPWQpO3JldHVybiBmfSkpO3JldHVybiBmfWZ1bmN0aW9uIHQoZyxkKXtkPTQqZzt2YXIgZj1NYXRoLmNlaWwoKE1hdGguc3FydChkKS0xKS8yKSxhPTIqZisxLGI9TWF0aC5wb3coYSwyKSxjPQohMTstLWE7MUU0Pj1nJiYoImJvb2xlYW4iPT09dHlwZW9mIGMmJmQ+PWItYSYmKGM9e3g6Zi0oYi1kKSx5Oi1mfSksYi09YSwiYm9vbGVhbiI9PT10eXBlb2YgYyYmZD49Yi1hJiYoYz17eDotZix5Oi1mKyhiLWQpfSksYi09YSwiYm9vbGVhbiI9PT10eXBlb2YgYyYmKGM9ZD49Yi1hP3t4Oi1mKyhiLWQpLHk6Zn06e3g6Zix5OmYtKGItZC1hKX0pLGMueCo9NSxjLnkqPTUpO3JldHVybiBjfWZ1bmN0aW9uIHUoZyxkLGYpe3ZhciBhPTIqTWF0aC5tYXgoTWF0aC5hYnMoZi50b3ApLE1hdGguYWJzKGYuYm90dG9tKSk7Zj0yKk1hdGgubWF4KE1hdGguYWJzKGYubGVmdCksTWF0aC5hYnMoZi5yaWdodCkpO3JldHVybiBNYXRoLm1pbigwPGY/MS9mKmc6MSwwPGE/MS9hKmQ6MSl9ZnVuY3Rpb24gSChnLGQsYSl7YT1hLnJlZHVjZShmdW5jdGlvbihhLGcpe2c9Zy5kaW1lbnNpb25zO3ZhciBkPU1hdGgubWF4KGcud2lkdGgsZy5oZWlnaHQpO2EubWF4SGVpZ2h0PU1hdGgubWF4KGEubWF4SGVpZ2h0LApnLmhlaWdodCk7YS5tYXhXaWR0aD1NYXRoLm1heChhLm1heFdpZHRoLGcud2lkdGgpO2EuYXJlYSs9ZCpkO3JldHVybiBhfSx7bWF4SGVpZ2h0OjAsbWF4V2lkdGg6MCxhcmVhOjB9KTthPU1hdGgubWF4KGEubWF4SGVpZ2h0LGEubWF4V2lkdGgsLjg1Kk1hdGguc3FydChhLmFyZWEpKTt2YXIgZj1nPmQ/Zy9kOjE7Zz1kPmc/ZC9nOjE7cmV0dXJue3dpZHRoOmEqZixoZWlnaHQ6YSpnLHJhdGlvWDpmLHJhdGlvWTpnfX1mdW5jdGlvbiBxKGEsZCxmLGIpe3ZhciBnPSExO2soYSkmJmsoZCkmJmsoZikmJmsoYikmJjA8YSYmLTE8ZCYmYj5mJiYoZz1mK2QlYSooKGItZikvKGEtMXx8MSkpKTtyZXR1cm4gZ31mdW5jdGlvbiB5KGEsZCl7dmFyIGcsYj1bXTtmb3IoZz0xOzFFND5nO2crKyliLnB1c2goYShnLGQpKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIDFFND49YT9iW2EtMV06ITF9fWZ1bmN0aW9uIHYoYSxkKXt2YXIgZz1kLndpZHRoLzIsYj0tKGQuaGVpZ2h0LzIpLGM9ZC5oZWlnaHQvCjI7cmV0dXJuISgtKGQud2lkdGgvMik8YS5sZWZ0JiZnPmEucmlnaHQmJmI8YS50b3AmJmM+YS5ib3R0b20pfWZ1bmN0aW9uIEMoZyxkKXt2YXIgYj1kLnBsYWNlZCxjPWQuZmllbGQsZT1kLnJlY3RhbmdsZSxrPWQucG9seWdvbixoPWQuc3BpcmFsLGw9MSxyPXt4OjAseTowfSxuPWcucmVjdD1hKHt9LGUpO2cucG9seWdvbj1rO2ZvcihnLnJvdGF0aW9uPWQucm90YXRpb247ITEhPT1yJiYocChnLGIpfHx2KG4sYykpOylyPWgobCksQShyKSYmKG4ubGVmdD1lLmxlZnQrci54LG4ucmlnaHQ9ZS5yaWdodCtyLngsbi50b3A9ZS50b3Arci55LG4uYm90dG9tPWUuYm90dG9tK3IueSxnLnBvbHlnb249SyhyLngsci55LGspKSxsKys7cmV0dXJuIHJ9ZnVuY3Rpb24gRihhLGQpe2lmKEEoYSkmJkEoZCkpe3ZhciBnPWQuYm90dG9tLWQudG9wO3ZhciBiPWQucmlnaHQtZC5sZWZ0O2Q9YS5yYXRpb1g7dmFyIGM9YS5yYXRpb1k7Zz1iKmQ+ZypjP2I6ZzthPUkoYSx7d2lkdGg6YS53aWR0aCtnKgpkKjIsaGVpZ2h0OmEuaGVpZ2h0K2cqYyoyfSl9cmV0dXJuIGF9dmFyIGE9ZS5leHRlbmQsYz1lLmZpbmQsej1lLmlzQXJyYXksaz1lLmlzTnVtYmVyLEE9ZS5pc09iamVjdCxJPWUubWVyZ2U7ZT1lLnNlcmllc1R5cGU7dmFyIEI9Yi5ub29wLEo9aC5nZXRCb3VuZGluZ0JveEZyb21Qb2x5Z29uLEw9aC5nZXRQb2x5Z29uLEQ9aC5pc1BvbHlnb25zQ29sbGlkaW5nLEs9aC5tb3ZlUG9seWdvbixFPWIuU2VyaWVzO2UoIndvcmRjbG91ZCIsImNvbHVtbiIse2FsbG93RXh0ZW5kUGxheWluZ0ZpZWxkOiEwLGFuaW1hdGlvbjp7ZHVyYXRpb246NTAwfSxib3JkZXJXaWR0aDowLGNsaXA6ITEsY29sb3JCeVBvaW50OiEwLG1pbkZvbnRTaXplOjEsbWF4Rm9udFNpemU6MjUscGxhY2VtZW50U3RyYXRlZ3k6ImNlbnRlciIscm90YXRpb246e2Zyb206MCxvcmllbnRhdGlvbnM6Mix0bzo5MH0sc2hvd0luTGVnZW5kOiExLHNwaXJhbDoicmVjdGFuZ3VsYXIiLHN0eWxlOntmb250RmFtaWx5OiJzYW5zLXNlcmlmIiwKZm9udFdlaWdodDoiOTAwIix3aGl0ZVNwYWNlOiJub3dyYXAifSx0b29sdGlwOntmb2xsb3dQb2ludGVyOiEwLHBvaW50Rm9ybWF0Oic8c3BhbiBzdHlsZT0iY29sb3I6e3BvaW50LmNvbG9yfSI+XHUyNWNmPC9zcGFuPiB7c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQud2VpZ2h0fTwvYj48YnIvPid9fSx7YW5pbWF0ZTpFLnByb3RvdHlwZS5hbmltYXRlLGFuaW1hdGVEcmlsbGRvd246QixhbmltYXRlRHJpbGx1cEZyb206QixzZXRDbGlwOkIsYmluZEF4ZXM6ZnVuY3Rpb24oKXt2YXIgZz17ZW5kT25UaWNrOiExLGdyaWRMaW5lV2lkdGg6MCxsaW5lV2lkdGg6MCxtYXhQYWRkaW5nOjAsc3RhcnRPblRpY2s6ITEsdGl0bGU6bnVsbCx0aWNrUG9zaXRpb25zOltdfTtFLnByb3RvdHlwZS5iaW5kQXhlcy5jYWxsKHRoaXMpO2EodGhpcy55QXhpcy5vcHRpb25zLGcpO2EodGhpcy54QXhpcy5vcHRpb25zLGcpfSxwb2ludEF0dHJpYnM6ZnVuY3Rpb24oYSxkKXthPWIuc2VyaWVzVHlwZXMuY29sdW1uLnByb3RvdHlwZS5wb2ludEF0dHJpYnMuY2FsbCh0aGlzLAphLGQpO2RlbGV0ZSBhLnN0cm9rZTtkZWxldGUgYVsic3Ryb2tlLXdpZHRoIl07cmV0dXJuIGF9LGRlcml2ZUZvbnRTaXplOmZ1bmN0aW9uKGEsZCxiKXthPWsoYSk/YTowO2Q9ayhkKT9kOjE7Yj1rKGIpP2I6MTtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLm1heChiLGEqZCkpfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxkPWIuaGFzUmVuZGVyZWQsYz1iLnhBeGlzLGU9Yi55QXhpcyxsPWIuZ3JvdXAsaD1iLm9wdGlvbnMscD1oLmFuaW1hdGlvbix0PWguYWxsb3dFeHRlbmRQbGF5aW5nRmllbGQscj1iLmNoYXJ0LnJlbmRlcmVyLG49ci50ZXh0KCkuYWRkKGwpLHE9W10sdj1iLnBsYWNlbWVudFN0cmF0ZWd5W2gucGxhY2VtZW50U3RyYXRlZ3ldLHo9aC5yb3RhdGlvbixCPWIucG9pbnRzLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS53ZWlnaHR9KSxEPU1hdGgubWF4LmFwcGx5KG51bGwsQiksRz1iLnBvaW50cy5jb25jYXQoKS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIud2VpZ2h0LQphLndlaWdodH0pO2IuZ3JvdXAuYXR0cih7c2NhbGVYOjEsc2NhbGVZOjF9KTtHLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIGM9Yi5kZXJpdmVGb250U2l6ZSgxL0QqZC53ZWlnaHQsaC5tYXhGb250U2l6ZSxoLm1pbkZvbnRTaXplKTtjPWEoe2ZvbnRTaXplOmMrInB4In0saC5zdHlsZSk7bi5jc3MoYykuYXR0cih7eDowLHk6MCx0ZXh0OmQubmFtZX0pO2M9bi5nZXRCQm94KCEwKTtkLmRpbWVuc2lvbnM9e2hlaWdodDpjLmhlaWdodCx3aWR0aDpjLndpZHRofX0pO3ZhciB3PUgoYy5sZW4sZS5sZW4sRyk7dmFyIEU9eShiLnNwaXJhbHNbaC5zcGlyYWxdLHtmaWVsZDp3fSk7Ry5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBnPWIuZGVyaXZlRm9udFNpemUoMS9EKmMud2VpZ2h0LGgubWF4Rm9udFNpemUsaC5taW5Gb250U2l6ZSk7Zz1hKHtmb250U2l6ZTpnKyJweCJ9LGguc3R5bGUpO3ZhciBmPXYoYyx7ZGF0YTpHLGZpZWxkOncscGxhY2VkOnEscm90YXRpb246en0pLGU9YShiLnBvaW50QXR0cmlicyhjLApjLnNlbGVjdGVkJiYic2VsZWN0Iikse2FsaWduOiJjZW50ZXIiLCJhbGlnbm1lbnQtYmFzZWxpbmUiOiJtaWRkbGUiLHg6Zi54LHk6Zi55LHRleHQ6Yy5uYW1lLHJvdGF0aW9uOmYucm90YXRpb259KSxuPUwoZi54LGYueSxjLmRpbWVuc2lvbnMud2lkdGgsYy5kaW1lbnNpb25zLmhlaWdodCxmLnJvdGF0aW9uKSxtPUoobikseD1DKGMse3JlY3RhbmdsZTptLHBvbHlnb246bixmaWVsZDp3LHBsYWNlZDpxLHNwaXJhbDpFLHJvdGF0aW9uOmYucm90YXRpb259KTsheCYmdCYmKHc9Rih3LG0pLHg9QyhjLHtyZWN0YW5nbGU6bSxwb2x5Z29uOm4sZmllbGQ6dyxwbGFjZWQ6cSxzcGlyYWw6RSxyb3RhdGlvbjpmLnJvdGF0aW9ufSkpO2lmKEEoeCkpe2UueCs9eC54O2UueSs9eC55O20ubGVmdCs9eC54O20ucmlnaHQrPXgueDttLnRvcCs9eC55O20uYm90dG9tKz14Lnk7Zj13O2lmKCFrKGYubGVmdCl8fGYubGVmdD5tLmxlZnQpZi5sZWZ0PW0ubGVmdDtpZighayhmLnJpZ2h0KXx8Zi5yaWdodDwKbS5yaWdodClmLnJpZ2h0PW0ucmlnaHQ7aWYoIWsoZi50b3ApfHxmLnRvcD5tLnRvcClmLnRvcD1tLnRvcDtpZighayhmLmJvdHRvbSl8fGYuYm90dG9tPG0uYm90dG9tKWYuYm90dG9tPW0uYm90dG9tO3c9ZjtxLnB1c2goYyk7Yy5pc051bGw9ITF9ZWxzZSBjLmlzTnVsbD0hMDtpZihwKXt2YXIgdT17eDplLngseTplLnl9O2Q/KGRlbGV0ZSBlLngsZGVsZXRlIGUueSk6KGUueD0wLGUueT0wKX1jLmRyYXcoe2FuaW1hdGFibGVBdHRyaWJzOnUsYXR0cmliczplLGNzczpnLGdyb3VwOmwscmVuZGVyZXI6cixzaGFwZUFyZ3M6dm9pZCAwLHNoYXBlVHlwZToidGV4dCJ9KX0pO249bi5kZXN0cm95KCk7Yz11KGMubGVuLGUubGVuLHcpO2IuZ3JvdXAuYXR0cih7c2NhbGVYOmMsc2NhbGVZOmN9KX0saGFzRGF0YTpmdW5jdGlvbigpe3JldHVybiBBKHRoaXMpJiYhMD09PXRoaXMudmlzaWJsZSYmeih0aGlzLnBvaW50cykmJjA8dGhpcy5wb2ludHMubGVuZ3RofSxwbGFjZW1lbnRTdHJhdGVneTp7cmFuZG9tOmZ1bmN0aW9uKGEsCmIpe3ZhciBjPWIuZmllbGQ7Yj1iLnJvdGF0aW9uO3JldHVybnt4Ok1hdGgucm91bmQoYy53aWR0aCooTWF0aC5yYW5kb20oKSsuNSkvMiktYy53aWR0aC8yLHk6TWF0aC5yb3VuZChjLmhlaWdodCooTWF0aC5yYW5kb20oKSsuNSkvMiktYy5oZWlnaHQvMixyb3RhdGlvbjpxKGIub3JpZW50YXRpb25zLGEuaW5kZXgsYi5mcm9tLGIudG8pfX0sY2VudGVyOmZ1bmN0aW9uKGEsYil7Yj1iLnJvdGF0aW9uO3JldHVybnt4OjAseTowLHJvdGF0aW9uOnEoYi5vcmllbnRhdGlvbnMsYS5pbmRleCxiLmZyb20sYi50byl9fX0scG9pbnRBcnJheU1hcDpbIndlaWdodCJdLHNwaXJhbHM6e2FyY2hpbWVkZWFuOmZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5maWVsZDtiPSExO2M9Yy53aWR0aCpjLndpZHRoK2MuaGVpZ2h0KmMuaGVpZ2h0O3ZhciBkPS44KmE7MUU0Pj1hJiYoYj17eDpkKk1hdGguY29zKGQpLHk6ZCpNYXRoLnNpbihkKX0sTWF0aC5taW4oTWF0aC5hYnMoYi54KSxNYXRoLmFicyhiLnkpKTwKY3x8KGI9ITEpKTtyZXR1cm4gYn0scmVjdGFuZ3VsYXI6ZnVuY3Rpb24oYSxiKXthPXQoYSxiKTtiPWIuZmllbGQ7YSYmKGEueCo9Yi5yYXRpb1gsYS55Kj1iLnJhdGlvWSk7cmV0dXJuIGF9LHNxdWFyZTp0fSx1dGlsczp7ZXh0ZW5kUGxheWluZ0ZpZWxkOkYsZ2V0Um90YXRpb246cSxpc1BvbHlnb25zQ29sbGlkaW5nOkQscm90YXRlMkRUb09yaWdpbjpoLnJvdGF0ZTJEVG9PcmlnaW4scm90YXRlMkRUb1BvaW50Omgucm90YXRlMkRUb1BvaW50fSxnZXRQbG90Qm94OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxiPWEuaW52ZXJ0ZWQsYz10aGlzW2I/InlBeGlzIjoieEF4aXMiXTtiPXRoaXNbYj8ieEF4aXMiOiJ5QXhpcyJdO3JldHVybnt0cmFuc2xhdGVYOihjP2MubGVmdDphLnBsb3RMZWZ0KSsoYz9jLmxlbjphLnBsb3RXaWR0aCkvMix0cmFuc2xhdGVZOihiP2IudG9wOmEucGxvdFRvcCkrKGI/Yi5sZW46YS5wbG90SGVpZ2h0KS8yLHNjYWxlWDoxLHNjYWxlWToxfX19LHtkcmF3OmwsCnNob3VsZERyYXc6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc051bGx9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sd2VpZ2h0OjF9KX0pO2woYiwibWFzdGVycy9tb2R1bGVzL3dvcmRjbG91ZC5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9d29yZGNsb3VkLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFgtcmFuZ2Ugc2VyaWVzCgogKGMpIDIwMTAtMjAxOSBUb3JzdGVpbiBIb25zaSwgTGFycyBBLiBWLiBDYWJyZXJhCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGIpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGJbImRlZmF1bHQiXT1iLG1vZHVsZS5leHBvcnRzPWIpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL3hyYW5nZSIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oaCl7YihoKTtiLkhpZ2hjaGFydHM9aDtyZXR1cm4gYn0pOmIoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihiKXtmdW5jdGlvbiBoKGIsbCxoLHApe2IuaGFzT3duUHJvcGVydHkobCl8fChiW2xdPXAuYXBwbHkobnVsbCxoKSl9Yj1iP2IuX21vZHVsZXM6e307aChiLCJtb2R1bGVzL3hyYW5nZS5zcmMuanMiLFtiWyJwYXJ0cy9BeGlzLmpzIl0sYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL0NvbG9yLmpzIl0sYlsicGFydHMvUG9pbnQuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sCmZ1bmN0aW9uKGIsbCxoLHAsZyl7dmFyIHg9aC5wYXJzZTtoPWcuYWRkRXZlbnQ7dmFyIHI9Zy5jbGFtcCxCPWcuY29ycmVjdEZsb2F0LEM9Zy5kZWZpbmVkLHk9Zy5maW5kLHQ9Zy5pc051bWJlcix2PWcuaXNPYmplY3QsdT1nLm1lcmdlLHc9Zy5waWNrO2c9Zy5zZXJpZXNUeXBlO3ZhciB6PWwuc2VyaWVzVHlwZXMuY29sdW1uLEE9bC5zZXJpZXNUeXBlcyxEPWwuU2VyaWVzO2coInhyYW5nZSIsImNvbHVtbiIse2NvbG9yQnlQb2ludDohMCxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvaW50LnBhcnRpYWxGaWxsO3YoYSkmJihhPWEuYW1vdW50KTtpZih0KGEpJiYwPGEpcmV0dXJuIEIoMTAwKmEpKyIlIn0saW5zaWRlOiEwLHZlcnRpY2FsQWxpZ246Im1pZGRsZSJ9LHRvb2x0aXA6e2hlYWRlckZvcm1hdDonPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBweCI+e3BvaW50Lnh9IC0ge3BvaW50LngyfTwvc3Bhbj48YnIvPicscG9pbnRGb3JtYXQ6JzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij5cdTI1Y2Y8L3NwYW4+IHtzZXJpZXMubmFtZX06IDxiPntwb2ludC55Q2F0ZWdvcnl9PC9iPjxici8+J30sCmJvcmRlclJhZGl1czozLHBvaW50UmFuZ2U6MH0se3R5cGU6InhyYW5nZSIscGFyYWxsZWxBcnJheXM6WyJ4IiwieDIiLCJ5Il0scmVxdWlyZVNvcnRpbmc6ITEsYW5pbWF0ZTpBLmxpbmUucHJvdG90eXBlLmFuaW1hdGUsY3JvcFNob3VsZGVyOjEsZ2V0RXh0cmVtZXNGcm9tQWxsOiEwLGF1dG9JbmNyZW1lbnQ6bC5ub29wLGJ1aWxkS0RUcmVlOmwubm9vcCxpbml0OmZ1bmN0aW9uKCl7QS5jb2x1bW4ucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMub3B0aW9ucy5zdGFja2luZz12b2lkIDB9LGdldENvbHVtbk1ldHJpY3M6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7Zi5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYz1hLnhBeGlzO2EueEF4aXM9YS55QXhpczthLnlBeGlzPWN9KX12YXIgZj10aGlzLmNoYXJ0O2EoKTt2YXIgZD16LnByb3RvdHlwZS5nZXRDb2x1bW5NZXRyaWNzLmNhbGwodGhpcyk7YSgpO3JldHVybiBkfSxjcm9wRGF0YTpmdW5jdGlvbihhLApmLGQsbSl7Zj1ELnByb3RvdHlwZS5jcm9wRGF0YS5jYWxsKHRoaXMsdGhpcy54MkRhdGEsZixkLG0pO2YueERhdGE9YS5zbGljZShmLnN0YXJ0LGYuZW5kKTtyZXR1cm4gZn0sZmluZFBvaW50SW5kZXg6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcy5jcm9wcGVkLGQ9dGhpcy5jcm9wU3RhcnQsbT10aGlzLnBvaW50cyxjPWEuaWQ7aWYoYyl2YXIgZT0oZT15KG0sZnVuY3Rpb24oYSl7cmV0dXJuIGEuaWQ9PT1jfSkpP2UuaW5kZXg6dm9pZCAwOyJ1bmRlZmluZWQiPT09dHlwZW9mIGUmJihlPShlPXkobSxmdW5jdGlvbihjKXtyZXR1cm4gYy54PT09YS54JiZjLngyPT09YS54MiYmIWMudG91Y2hlZH0pKT9lLmluZGV4OnZvaWQgMCk7ZiYmdChlKSYmdChkKSYmZT49ZCYmKGUtPWQpO3JldHVybiBlfSx0cmFuc2xhdGVQb2ludDpmdW5jdGlvbihhKXt2YXIgZj10aGlzLnhBeGlzLGQ9dGhpcy55QXhpcyxtPXRoaXMuY29sdW1uTWV0cmljcyxjPXRoaXMub3B0aW9ucyxlPWMubWluUG9pbnRMZW5ndGh8fAowLGI9YS5wbG90WCxnPXcoYS54MixhLngrKGEubGVufHwwKSksaz1mLnRyYW5zbGF0ZShnLDAsMCwwLDEpO2c9TWF0aC5hYnMoay1iKTt2YXIgaD10aGlzLmNoYXJ0LmludmVydGVkLGw9dyhjLmJvcmRlcldpZHRoLDEpJTIvMixuPW0ub2Zmc2V0LHE9TWF0aC5yb3VuZChtLndpZHRoKTtlJiYoZS09ZywwPmUmJihlPTApLGItPWUvMixrKz1lLzIpO2I9TWF0aC5tYXgoYiwtMTApO2s9cihrLC0xMCxmLmxlbisxMCk7QyhhLm9wdGlvbnMucG9pbnRXaWR0aCkmJihuLT0oTWF0aC5jZWlsKGEub3B0aW9ucy5wb2ludFdpZHRoKS1xKS8yLHE9TWF0aC5jZWlsKGEub3B0aW9ucy5wb2ludFdpZHRoKSk7Yy5wb2ludFBsYWNlbWVudCYmdChhLnBsb3RZKSYmZC5jYXRlZ29yaWVzJiYoYS5wbG90WT1kLnRyYW5zbGF0ZShhLnksMCwxLDAsMSxjLnBvaW50UGxhY2VtZW50KSk7YS5zaGFwZUFyZ3M9e3g6TWF0aC5mbG9vcihNYXRoLm1pbihiLGspKStsLHk6TWF0aC5mbG9vcihhLnBsb3RZK24pK2wsCndpZHRoOk1hdGgucm91bmQoTWF0aC5hYnMoay1iKSksaGVpZ2h0OnEscjp0aGlzLm9wdGlvbnMuYm9yZGVyUmFkaXVzfTtjPWEuc2hhcGVBcmdzLng7ZT1jK2Euc2hhcGVBcmdzLndpZHRoOzA+Y3x8ZT5mLmxlbj8oYz1yKGMsMCxmLmxlbiksZT1yKGUsMCxmLmxlbiksaz1lLWMsYS5kbEJveD11KGEuc2hhcGVBcmdzLHt4OmMsd2lkdGg6ZS1jLGNlbnRlclg6az9rLzI6bnVsbH0pKTphLmRsQm94PW51bGw7Yz1hLnRvb2x0aXBQb3M7ZT1oPzE6MDtrPWg/MDoxO209dGhpcy5jb2x1bW5NZXRyaWNzP3RoaXMuY29sdW1uTWV0cmljcy5vZmZzZXQ6LW0ud2lkdGgvMjtjW2VdPXIoY1tlXStnLzIqKGYucmV2ZXJzZWQ/LTE6MSkqKGg/LTE6MSksMCxmLmxlbi0xKTtjW2tdPXIoY1trXSsoaD8tMToxKSptLDAsZC5sZW4tMSk7aWYobT1hLnBhcnRpYWxGaWxsKXYobSkmJihtPW0uYW1vdW50KSx0KG0pfHwobT0wKSxkPWEuc2hhcGVBcmdzLGEucGFydFNoYXBlQXJncz17eDpkLngseTpkLnksd2lkdGg6ZC53aWR0aCwKaGVpZ2h0OmQuaGVpZ2h0LHI6dGhpcy5vcHRpb25zLmJvcmRlclJhZGl1c30sYj1NYXRoLm1heChNYXRoLnJvdW5kKGcqbSthLnBsb3RYLWIpLDApLGEuY2xpcFJlY3RBcmdzPXt4OmYucmV2ZXJzZWQ/ZC54K2ctYjpkLngseTpkLnksd2lkdGg6YixoZWlnaHQ6ZC5oZWlnaHR9fSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXt6LnByb3RvdHlwZS50cmFuc2xhdGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dGhpcy50cmFuc2xhdGVQb2ludChhKX0sdGhpcyl9LGRyYXdQb2ludDpmdW5jdGlvbihhLGYpe3ZhciBkPXRoaXMub3B0aW9ucyxiPXRoaXMuY2hhcnQucmVuZGVyZXIsYz1hLmdyYXBoaWMsZT1hLnNoYXBlVHlwZSxnPWEuc2hhcGVBcmdzLGg9YS5wYXJ0U2hhcGVBcmdzLGs9YS5jbGlwUmVjdEFyZ3MsbD1hLnBhcnRpYWxGaWxsLHA9ZC5zdGFja2luZyYmIWQuYm9yZGVyUmFkaXVzLG49YS5zdGF0ZSxxPWQuc3RhdGVzW258fCJub3JtYWwiXXx8Cnt9LHI9InVuZGVmaW5lZCI9PT10eXBlb2Ygbj8iYXR0ciI6ZjtuPXRoaXMucG9pbnRBdHRyaWJzKGEsbik7cT13KHRoaXMuY2hhcnQub3B0aW9ucy5jaGFydC5hbmltYXRpb24scS5hbmltYXRpb24pO2lmKGEuaXNOdWxsfHwhMT09PWEudmlzaWJsZSljJiYoYS5ncmFwaGljPWMuZGVzdHJveSgpKTtlbHNle2lmKGMpYy5yZWN0W2ZdKGcpO2Vsc2UgYS5ncmFwaGljPWM9Yi5nKCJwb2ludCIpLmFkZENsYXNzKGEuZ2V0Q2xhc3NOYW1lKCkpLmFkZChhLmdyb3VwfHx0aGlzLmdyb3VwKSxjLnJlY3Q9YltlXSh1KGcpKS5hZGRDbGFzcyhhLmdldENsYXNzTmFtZSgpKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1wYXJ0ZmlsbC1vcmlnaW5hbCIpLmFkZChjKTtoJiYoYy5wYXJ0UmVjdD8oYy5wYXJ0UmVjdFtmXSh1KGgpKSxjLnBhcnRpYWxDbGlwUmVjdFtmXSh1KGspKSk6KGMucGFydGlhbENsaXBSZWN0PWIuY2xpcFJlY3Qoay54LGsueSxrLndpZHRoLGsuaGVpZ2h0KSxjLnBhcnRSZWN0PWJbZV0oaCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcGFydGZpbGwtb3ZlcmxheSIpLmFkZChjKS5jbGlwKGMucGFydGlhbENsaXBSZWN0KSkpOwp0aGlzLmNoYXJ0LnN0eWxlZE1vZGV8fChjLnJlY3RbZl0obixxKS5zaGFkb3coZC5zaGFkb3csbnVsbCxwKSxoJiYodihsKXx8KGw9e30pLHYoZC5wYXJ0aWFsRmlsbCkmJihsPXUobCxkLnBhcnRpYWxGaWxsKSksYT1sLmZpbGx8fHgobi5maWxsKS5icmlnaHRlbigtLjMpLmdldCgpfHx4KGEuY29sb3J8fHRoaXMuY29sb3IpLmJyaWdodGVuKC0uMykuZ2V0KCksbi5maWxsPWEsYy5wYXJ0UmVjdFtyXShuLHEpLnNoYWRvdyhkLnNoYWRvdyxudWxsLHApKSl9fSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxmPWEuZ2V0QW5pbWF0aW9uVmVyYigpO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYil7YS5kcmF3UG9pbnQoYixmKX0pfSxnZXRBbmltYXRpb25WZXJiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhcnQucG9pbnRDb3VudDwodGhpcy5vcHRpb25zLmFuaW1hdGlvbkxpbWl0fHwyNTApPyJhbmltYXRlIjoiYXR0ciJ9fSx7cmVzb2x2ZUNvbG9yOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMuc2VyaWVzO2lmKGEub3B0aW9ucy5jb2xvckJ5UG9pbnQmJiF0aGlzLm9wdGlvbnMuY29sb3Ipe3ZhciBiPWEub3B0aW9ucy5jb2xvcnN8fGEuY2hhcnQub3B0aW9ucy5jb2xvcnM7dmFyIGQ9dGhpcy55JShiP2IubGVuZ3RoOmEuY2hhcnQub3B0aW9ucy5jaGFydC5jb2xvckNvdW50KTtiPWImJmJbZF07YS5jaGFydC5zdHlsZWRNb2RlfHwodGhpcy5jb2xvcj1iKTt0aGlzLm9wdGlvbnMuY29sb3JJbmRleHx8KHRoaXMuY29sb3JJbmRleD1kKX1lbHNlIHRoaXMuY29sb3J8fCh0aGlzLmNvbG9yPWEuY29sb3IpfSxpbml0OmZ1bmN0aW9uKCl7cC5wcm90b3R5cGUuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy55fHwodGhpcy55PTApO3JldHVybiB0aGlzfSxzZXRTdGF0ZTpmdW5jdGlvbigpe3AucHJvdG90eXBlLnNldFN0YXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnNlcmllcy5kcmF3UG9pbnQodGhpcyx0aGlzLnNlcmllcy5nZXRBbmltYXRpb25WZXJiKCkpfSwKZ2V0TGFiZWxDb25maWc6ZnVuY3Rpb24oKXt2YXIgYT1wLnByb3RvdHlwZS5nZXRMYWJlbENvbmZpZy5jYWxsKHRoaXMpLGI9dGhpcy5zZXJpZXMueUF4aXMuY2F0ZWdvcmllczthLngyPXRoaXMueDI7YS55Q2F0ZWdvcnk9dGhpcy55Q2F0ZWdvcnk9YiYmYlt0aGlzLnldO3JldHVybiBhfSx0b29sdGlwRGF0ZUtleXM6WyJ4IiwieDIiXSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgdGhpcy54JiYibnVtYmVyIj09PXR5cGVvZiB0aGlzLngyfX0pO2goYiwiYWZ0ZXJHZXRTZXJpZXNFeHRyZW1lcyIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlcmllcyxiO2lmKHRoaXMuaXNYQXhpcyl7dmFyIGQ9dyh0aGlzLmRhdGFNYXgsLU51bWJlci5NQVhfVkFMVUUpO2EuZm9yRWFjaChmdW5jdGlvbihhKXthLngyRGF0YSYmYS54MkRhdGEuZm9yRWFjaChmdW5jdGlvbihhKXthPmQmJihkPWEsYj0hMCl9KX0pO2ImJih0aGlzLmRhdGFNYXg9ZCl9fSk7IiJ9KTtoKGIsCiJtYXN0ZXJzL21vZHVsZXMveHJhbmdlLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD14cmFuZ2UuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2htYXBzIEpTIHY4LjEuMiAoMjAyMC0wNi0xNikKCiBUaWxlbWFwIG1vZHVsZQoKIChjKSAyMDEwLTIwMTkgSGlnaHNvZnQgQVMKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oZCl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oZFsiZGVmYXVsdCJdPWQsbW9kdWxlLmV4cG9ydHM9ZCk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvdGlsZW1hcCIsWyJoaWdoY2hhcnRzIiwiaGlnaGNoYXJ0cy9tb2R1bGVzL21hcCJdLGZ1bmN0aW9uKGYpe2QoZik7ZC5IaWdoY2hhcnRzPWY7cmV0dXJuIGR9KTpkKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oZCl7ZnVuY3Rpb24gZihlLGQsZix2KXtlLmhhc093blByb3BlcnR5KGQpfHwoZVtkXT12LmFwcGx5KG51bGwsZikpfWQ9ZD9kLl9tb2R1bGVzOnt9O2YoZCwibW9kdWxlcy90aWxlbWFwLnNyYy5qcyIsW2RbInBhcnRzL0dsb2JhbHMuanMiXSxkWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oZSxkKXtmdW5jdGlvbiBmKGEsYiwKYyl7YT1hLm9wdGlvbnM7cmV0dXJue3hQYWQ6KGEuY29sc2l6ZXx8MSkvLWIseVBhZDooYS5yb3dzaXplfHwxKS8tY319IiI7dmFyIHY9ZC5hZGRFdmVudCxoPWQuY2xhbXAseT1kLmV4dGVuZCx4PWQucGljaztkPWQuc2VyaWVzVHlwZTtlLnRpbGVTaGFwZVR5cGVzPXtoZXhhZ29uOnthbGlnbkRhdGFMYWJlbDplLnNlcmllc1R5cGVzLnNjYXR0ZXIucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLGdldFNlcmllc1BhZGRpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIGYoYSwzLDIpfSxoYWxvUGF0aDpmdW5jdGlvbihhKXtpZighYSlyZXR1cm5bXTt2YXIgYj10aGlzLnRpbGVFZGdlcztyZXR1cm5bWyJNIixiLngyLWEsYi55MSthXSxbIkwiLGIueDMrYSxiLnkxK2FdLFsiTCIsYi54NCsxLjUqYSxiLnkyXSxbIkwiLGIueDMrYSxiLnkzLWFdLFsiTCIsYi54Mi1hLGIueTMtYV0sWyJMIixiLngxLTEuNSphLGIueTJdLFsiWiJdXX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLApiPXRoaXMueEF4aXMsYz10aGlzLnlBeGlzLGQ9YS5wb2ludFBhZGRpbmd8fDAsZT0oYS5jb2xzaXplfHwxKS8zLGY9KGEucm93c2l6ZXx8MSkvMixuO3RoaXMuZ2VuZXJhdGVQb2ludHMoKTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciB0PWgoTWF0aC5mbG9vcihiLmxlbi1iLnRyYW5zbGF0ZShhLngtMiplLDAsMSwwLDEpKSwtYi5sZW4sMipiLmxlbiksaz1oKE1hdGguZmxvb3IoYi5sZW4tYi50cmFuc2xhdGUoYS54LWUsMCwxLDAsMSkpLC1iLmxlbiwyKmIubGVuKSxxPWgoTWF0aC5mbG9vcihiLmxlbi1iLnRyYW5zbGF0ZShhLngrZSwwLDEsMCwxKSksLWIubGVuLDIqYi5sZW4pLHU9aChNYXRoLmZsb29yKGIubGVuLWIudHJhbnNsYXRlKGEueCsyKmUsMCwxLDAsMSkpLC1iLmxlbiwyKmIubGVuKSxyPWgoTWF0aC5mbG9vcihjLnRyYW5zbGF0ZShhLnktZiwwLDEsMCwxKSksLWMubGVuLDIqYy5sZW4pLGc9aChNYXRoLmZsb29yKGMudHJhbnNsYXRlKGEueSwwLDEsCjAsMSkpLC1jLmxlbiwyKmMubGVuKSxsPWgoTWF0aC5mbG9vcihjLnRyYW5zbGF0ZShhLnkrZiwwLDEsMCwxKSksLWMubGVuLDIqYy5sZW4pLG09eChhLnBvaW50UGFkZGluZyxkKSxwPW0qTWF0aC5hYnMoay10KS9NYXRoLmFicyhsLWcpO3A9Yi5yZXZlcnNlZD8tcDpwO3ZhciB3PWIucmV2ZXJzZWQ/LW06bTttPWMucmV2ZXJzZWQ/LW06bTthLnglMiYmKG49bnx8TWF0aC5yb3VuZChNYXRoLmFicyhsLXIpLzIpKihjLnJldmVyc2VkPy0xOjEpLHIrPW4sZys9bixsKz1uKTthLnBsb3RYPWEuY2xpZW50WD0oaytxKS8yO2EucGxvdFk9Zzt0Kz1wK3c7ays9dztxLT13O3UtPXArdztyLT1tO2wrPW07YS50aWxlRWRnZXM9e3gxOnQseDI6ayx4MzpxLHg0OnUseTE6cix5MjpnLHkzOmx9O2Euc2hhcGVUeXBlPSJwYXRoIjthLnNoYXBlQXJncz17ZDpbWyJNIixrLHJdLFsiTCIscSxyXSxbIkwiLHUsZ10sWyJMIixxLGxdLFsiTCIsayxsXSxbIkwiLHQsZ10sWyJaIl1dfX0pO3RoaXMudHJhbnNsYXRlQ29sb3JzKCl9fSwKZGlhbW9uZDp7YWxpZ25EYXRhTGFiZWw6ZS5zZXJpZXNUeXBlcy5zY2F0dGVyLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbCxnZXRTZXJpZXNQYWRkaW5nOmZ1bmN0aW9uKGEpe3JldHVybiBmKGEsMiwyKX0saGFsb1BhdGg6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuW107dmFyIGI9dGhpcy50aWxlRWRnZXM7cmV0dXJuW1siTSIsYi54MixiLnkxK2FdLFsiTCIsYi54MythLGIueTJdLFsiTCIsYi54MixiLnkzLWFdLFsiTCIsYi54MS1hLGIueTJdLFsiWiJdXX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLGI9dGhpcy54QXhpcyxjPXRoaXMueUF4aXMsZD1hLnBvaW50UGFkZGluZ3x8MCxlPWEuY29sc2l6ZXx8MSxmPShhLnJvd3NpemV8fDEpLzIsbjt0aGlzLmdlbmVyYXRlUG9pbnRzKCk7dGhpcy5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgcD1oKE1hdGgucm91bmQoYi5sZW4tYi50cmFuc2xhdGUoYS54LWUsMCwxLDAsMCkpLC1iLmxlbiwyKmIubGVuKSwKaz1oKE1hdGgucm91bmQoYi5sZW4tYi50cmFuc2xhdGUoYS54LDAsMSwwLDApKSwtYi5sZW4sMipiLmxlbikscT1oKE1hdGgucm91bmQoYi5sZW4tYi50cmFuc2xhdGUoYS54K2UsMCwxLDAsMCkpLC1iLmxlbiwyKmIubGVuKSx1PWgoTWF0aC5yb3VuZChjLnRyYW5zbGF0ZShhLnktZiwwLDEsMCwwKSksLWMubGVuLDIqYy5sZW4pLHI9aChNYXRoLnJvdW5kKGMudHJhbnNsYXRlKGEueSwwLDEsMCwwKSksLWMubGVuLDIqYy5sZW4pLGc9aChNYXRoLnJvdW5kKGMudHJhbnNsYXRlKGEueStmLDAsMSwwLDApKSwtYy5sZW4sMipjLmxlbiksbD14KGEucG9pbnRQYWRkaW5nLGQpLG09bCpNYXRoLmFicyhrLXApL01hdGguYWJzKGctcik7bT1iLnJldmVyc2VkPy1tOm07bD1jLnJldmVyc2VkPy1sOmw7YS54JTImJihuPU1hdGguYWJzKGctdSkvMiooYy5yZXZlcnNlZD8tMToxKSx1Kz1uLHIrPW4sZys9bik7YS5wbG90WD1hLmNsaWVudFg9azthLnBsb3RZPXI7cCs9bTtxLT1tO3UtPWw7Zys9Cmw7YS50aWxlRWRnZXM9e3gxOnAseDI6ayx4MzpxLHkxOnUseTI6cix5MzpnfTthLnNoYXBlVHlwZT0icGF0aCI7YS5zaGFwZUFyZ3M9e2Q6W1siTSIsayx1XSxbIkwiLHEscl0sWyJMIixrLGddLFsiTCIscCxyXSxbIloiXV19fSk7dGhpcy50cmFuc2xhdGVDb2xvcnMoKX19LGNpcmNsZTp7YWxpZ25EYXRhTGFiZWw6ZS5zZXJpZXNUeXBlcy5zY2F0dGVyLnByb3RvdHlwZS5hbGlnbkRhdGFMYWJlbCxnZXRTZXJpZXNQYWRkaW5nOmZ1bmN0aW9uKGEpe3JldHVybiBmKGEsMiwyKX0saGFsb1BhdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIGUuc2VyaWVzVHlwZXMuc2NhdHRlci5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUuaGFsb1BhdGguY2FsbCh0aGlzLGErKGEmJnRoaXMucmFkaXVzKSl9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucyxiPXRoaXMueEF4aXMsYz10aGlzLnlBeGlzLGQ9YS5wb2ludFBhZGRpbmd8fDAsZT0oYS5yb3dzaXplfHwxKS8yLGY9YS5jb2xzaXplfHwKMSxuLHQsdixrLHE9ITE7dGhpcy5nZW5lcmF0ZVBvaW50cygpO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIHA9aChNYXRoLnJvdW5kKGIubGVuLWIudHJhbnNsYXRlKGEueCwwLDEsMCwwKSksLWIubGVuLDIqYi5sZW4pLGc9aChNYXRoLnJvdW5kKGMudHJhbnNsYXRlKGEueSwwLDEsMCwwKSksLWMubGVuLDIqYy5sZW4pLGw9ZCxtPSExOyJ1bmRlZmluZWQiIT09dHlwZW9mIGEucG9pbnRQYWRkaW5nJiYobD1hLnBvaW50UGFkZGluZyxxPW09ITApO2lmKCFrfHxxKW49TWF0aC5hYnMoaChNYXRoLmZsb29yKGIubGVuLWIudHJhbnNsYXRlKGEueCtmLDAsMSwwLDApKSwtYi5sZW4sMipiLmxlbiktcCksdD1NYXRoLmFicyhoKE1hdGguZmxvb3IoYy50cmFuc2xhdGUoYS55K2UsMCwxLDAsMCkpLC1jLmxlbiwyKmMubGVuKS1nKSx2PU1hdGguZmxvb3IoTWF0aC5zcXJ0KG4qbit0KnQpLzIpLGs9TWF0aC5taW4obix2LHQpLWwscSYmIW0mJihxPSExKTthLnglMiYmKGcrPQp0KihjLnJldmVyc2VkPy0xOjEpKTthLnBsb3RYPWEuY2xpZW50WD1wO2EucGxvdFk9ZzthLnJhZGl1cz1rO2Euc2hhcGVUeXBlPSJjaXJjbGUiO2Euc2hhcGVBcmdzPXt4OnAseTpnLHI6a319KTt0aGlzLnRyYW5zbGF0ZUNvbG9ycygpfX0sc3F1YXJlOnthbGlnbkRhdGFMYWJlbDplLnNlcmllc1R5cGVzLmhlYXRtYXAucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLHRyYW5zbGF0ZTplLnNlcmllc1R5cGVzLmhlYXRtYXAucHJvdG90eXBlLnRyYW5zbGF0ZSxnZXRTZXJpZXNQYWRkaW5nOmZ1bmN0aW9uKCl7fSxoYWxvUGF0aDplLnNlcmllc1R5cGVzLmhlYXRtYXAucHJvdG90eXBlLnBvaW50Q2xhc3MucHJvdG90eXBlLmhhbG9QYXRofX07dihlLkF4aXMsImFmdGVyU2V0QXhpc1RyYW5zbGF0aW9uIixmdW5jdGlvbigpe2lmKCF0aGlzLnJlY29tcHV0aW5nRm9yVGlsZW1hcCYmImNvbG9yQXhpcyIhPT10aGlzLmNvbGwpe3ZhciBhPXRoaXMsYj1hLnNlcmllcy5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGIuZ2V0U2VyaWVzUGl4ZWxQYWRkaW5nJiYKYi5nZXRTZXJpZXNQaXhlbFBhZGRpbmcoYSl9KS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4oYSYmYS5wYWRkaW5nKT4oYiYmYi5wYWRkaW5nKT9hOmJ9LHZvaWQgMCl8fHtwYWRkaW5nOjAsYXhpc0xlbmd0aEZhY3RvcjoxfSxjPU1hdGgucm91bmQoYi5wYWRkaW5nKmIuYXhpc0xlbmd0aEZhY3Rvcik7Yi5wYWRkaW5nJiYoYS5sZW4tPWMsYS5yZWNvbXB1dGluZ0ZvclRpbGVtYXA9ITAsYS5zZXRBeGlzVHJhbnNsYXRpb24oKSxkZWxldGUgYS5yZWNvbXB1dGluZ0ZvclRpbGVtYXAsYS5taW5QaXhlbFBhZGRpbmcrPWIucGFkZGluZyxhLmxlbis9Yyl9fSk7ZCgidGlsZW1hcCIsImhlYXRtYXAiLHttYXJrZXI6bnVsbCxzdGF0ZXM6e2hvdmVyOntoYWxvOntlbmFibGVkOiEwLHNpemU6MixvcGFjaXR5Oi41LGF0dHJpYnV0ZXM6e3pJbmRleDozfX19fSxwb2ludFBhZGRpbmc6Mix0aWxlU2hhcGU6ImhleGFnb24ifSx7bWFya2VyQXR0cmliczplLnNlcmllc1R5cGVzLnNjYXR0ZXIucHJvdG90eXBlLm1hcmtlckF0dHJpYnMsCnBvaW50QXR0cmliczplLnNlcmllc1R5cGVzLmNvbHVtbi5wcm90b3R5cGUucG9pbnRBdHRyaWJzLGdldFN5bWJvbDplLm5vb3AsZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBhPXRoaXM7ZS5zZXJpZXNUeXBlcy5jb2x1bW4ucHJvdG90eXBlLmRyYXdQb2ludHMuY2FsbCh0aGlzKTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIpe2IuZ3JhcGhpYyYmYi5ncmFwaGljW2EuY2hhcnQuc3R5bGVkTW9kZT8iY3NzIjoiYW5pbWF0ZSJdKGEuY29sb3JBdHRyaWJzKGIpKX0pfSxzZXRPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIGE9ZS5zZXJpZXNUeXBlcy5oZWF0bWFwLnByb3RvdHlwZS5zZXRPcHRpb25zLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7dGhpcy50aWxlU2hhcGU9ZS50aWxlU2hhcGVUeXBlc1thLnRpbGVTaGFwZV07cmV0dXJuIGF9LGFsaWduRGF0YUxhYmVsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGlsZVNoYXBlLmFsaWduRGF0YUxhYmVsLmFwcGx5KHRoaXMsCkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfSxnZXRTZXJpZXNQaXhlbFBhZGRpbmc6ZnVuY3Rpb24oYSl7dmFyIGI9YS5pc1hBeGlzLGM9dGhpcy50aWxlU2hhcGUuZ2V0U2VyaWVzUGFkZGluZyh0aGlzKTtpZighYylyZXR1cm57cGFkZGluZzowLGF4aXNMZW5ndGhGYWN0b3I6MX07dmFyIGQ9TWF0aC5yb3VuZChhLnRyYW5zbGF0ZShiPzIqYy54UGFkOmMueVBhZCwwLDEsMCwxKSk7YT1NYXRoLnJvdW5kKGEudHJhbnNsYXRlKGI/Yy54UGFkOjAsMCwxLDAsMSkpO3JldHVybntwYWRkaW5nOk1hdGguYWJzKGQtYSl8fDAsYXhpc0xlbmd0aEZhY3RvcjpiPzI6MS4xfX0sdHJhbnNsYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGlsZVNoYXBlLnRyYW5zbGF0ZS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfX0seSh7aGFsb1BhdGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZXJpZXMudGlsZVNoYXBlLmhhbG9QYXRoLmFwcGx5KHRoaXMsCkFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpfX0sZS5jb2xvclBvaW50TWl4aW4pKTsiIn0pO2YoZCwibWFzdGVycy9tb2R1bGVzL3RpbGVtYXAuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpbGVtYXAuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDE3LTIwMTkgSGlnaHNvZnQgQVMKIEF1dGhvcnM6IEpvbiBBcmlsZCBOeWdhcmQKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24oYSl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8oYVsiZGVmYXVsdCJdPWEsbW9kdWxlLmV4cG9ydHM9YSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvdmVubiIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24obSl7YShtKTthLkhpZ2hjaGFydHM9bTtyZXR1cm4gYX0pOmEoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihhKXtmdW5jdGlvbiBtKGEsZixiLEIpe2EuaGFzT3duUHJvcGVydHkoZil8fChhW2ZdPUIuYXBwbHkobnVsbCxiKSl9YT1hP2EuX21vZHVsZXM6e307bShhLCJtaXhpbnMvZHJhdy1wb2ludC5qcyIsW10sZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbihmKXt2YXIgYixhPXRoaXMsaz1hLmdyYXBoaWMsZT1mLmFuaW1hdGFibGVBdHRyaWJzLHU9Zi5vbkNvbXBsZXRlLHc9Zi5jc3MsbT1mLnJlbmRlcmVyLApyPW51bGw9PT0oYj1hLnNlcmllcyl8fHZvaWQgMD09PWI/dm9pZCAwOmIub3B0aW9ucy5hbmltYXRpb247aWYoYS5zaG91bGREcmF3KCkpa3x8KGEuZ3JhcGhpYz1rPW1bZi5zaGFwZVR5cGVdKGYuc2hhcGVBcmdzKS5hZGQoZi5ncm91cCkpLGsuY3NzKHcpLmF0dHIoZi5hdHRyaWJzKS5hbmltYXRlKGUsZi5pc05ldz8hMTpyLHUpO2Vsc2UgaWYoayl7dmFyIG49ZnVuY3Rpb24oKXthLmdyYXBoaWM9az1rLmRlc3Ryb3koKTsiZnVuY3Rpb24iPT09dHlwZW9mIHUmJnUoKX07T2JqZWN0LmtleXMoZSkubGVuZ3RoP2suYW5pbWF0ZShlLHZvaWQgMCxmdW5jdGlvbigpe24oKX0pOm4oKX19O3JldHVybiBmdW5jdGlvbihmKXsoZi5hdHRyaWJzPWYuYXR0cmlic3x8e30pWyJjbGFzcyJdPXRoaXMuZ2V0Q2xhc3NOYW1lKCk7YS5jYWxsKHRoaXMsZil9fSk7bShhLCJtaXhpbnMvZ2VvbWV0cnkuanMiLFtdLGZ1bmN0aW9uKCl7cmV0dXJue2dldEFuZ2xlQmV0d2VlblBvaW50czpmdW5jdGlvbihhLApmKXtyZXR1cm4gTWF0aC5hdGFuMihmLngtYS54LGYueS1hLnkpfSxnZXRDZW50ZXJPZlBvaW50czpmdW5jdGlvbihhKXt2YXIgZj1hLnJlZHVjZShmdW5jdGlvbihiLGYpe2IueCs9Zi54O2IueSs9Zi55O3JldHVybiBifSx7eDowLHk6MH0pO3JldHVybnt4OmYueC9hLmxlbmd0aCx5OmYueS9hLmxlbmd0aH19LGdldERpc3RhbmNlQmV0d2VlblBvaW50czpmdW5jdGlvbihhLGYpe3JldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coZi54LWEueCwyKStNYXRoLnBvdyhmLnktYS55LDIpKX19fSk7bShhLCJtaXhpbnMvZ2VvbWV0cnktY2lyY2xlcy5qcyIsW2FbIm1peGlucy9nZW9tZXRyeS5qcyJdXSxmdW5jdGlvbihhKXtmdW5jdGlvbiBmKGQsYyl7Yz1NYXRoLnBvdygxMCxjKTtyZXR1cm4gTWF0aC5yb3VuZChkKmMpL2N9ZnVuY3Rpb24gYihkKXtpZigwPj1kKXRocm93IEVycm9yKCJyYWRpdXMgb2YgY2lyY2xlIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIuIik7cmV0dXJuIE1hdGguUEkqCmQqZH1mdW5jdGlvbiBrKGQsYyl7cmV0dXJuIGQqZCpNYXRoLmFjb3MoMS1jL2QpLShkLWMpKk1hdGguc3FydChjKigyKmQtYykpfWZ1bmN0aW9uIG0oZCxjKXt2YXIgYT10KGQsYyksYj1kLnIsZT1jLnIsej1bXTtpZihhPGIrZSYmYT5NYXRoLmFicyhiLWUpKXtiKj1iO3ZhciB4PShiLWUqZSthKmEpLygyKmEpO2U9TWF0aC5zcXJ0KGIteCp4KTtiPWQueDt6PWMueDtkPWQueTt2YXIgaz1jLnk7Yz1iK3gqKHotYikvYTt4PWQreCooay1kKS9hO2Q9ZS9hKi0oay1kKTthPWUvYSotKHotYik7ej1be3g6ZihjK2QsMTQpLHk6Zih4LWEsMTQpfSx7eDpmKGMtZCwxNCkseTpmKHgrYSwxNCl9XX1yZXR1cm4gen1mdW5jdGlvbiBlKGQpe3JldHVybiBkLnJlZHVjZShmdW5jdGlvbihkLGEsYixmKXtmPWYuc2xpY2UoYisxKS5yZWR1Y2UoZnVuY3Rpb24oZCxjLGYpe3ZhciBlPVtiLGYrYisxXTtyZXR1cm4gZC5jb25jYXQobShhLGMpLm1hcChmdW5jdGlvbihkKXtkLmluZGV4ZXM9ZTtyZXR1cm4gZH0pKX0sCltdKTtyZXR1cm4gZC5jb25jYXQoZil9LFtdKX1mdW5jdGlvbiB1KGQsYyl7cmV0dXJuIHQoZCxjKTw9Yy5yKzFlLTEwfWZ1bmN0aW9uIHcoZCxjKXtyZXR1cm4hYy5zb21lKGZ1bmN0aW9uKGMpe3JldHVybiF1KGQsYyl9KX1mdW5jdGlvbiB5KGQpe3JldHVybiBlKGQpLmZpbHRlcihmdW5jdGlvbihjKXtyZXR1cm4gdyhjLGQpfSl9dmFyIHI9YS5nZXRBbmdsZUJldHdlZW5Qb2ludHMsbj1hLmdldENlbnRlck9mUG9pbnRzLHQ9YS5nZXREaXN0YW5jZUJldHdlZW5Qb2ludHM7cmV0dXJue2dldEFyZWFPZkNpcmNsZTpiLGdldEFyZWFPZkludGVyc2VjdGlvbkJldHdlZW5DaXJjbGVzOmZ1bmN0aW9uKGQpe3ZhciBjPXkoZCk7aWYoMTxjLmxlbmd0aCl7dmFyIGE9bihjKTtjPWMubWFwKGZ1bmN0aW9uKGQpe2QuYW5nbGU9cihhLGQpO3JldHVybiBkfSkuc29ydChmdW5jdGlvbihkLGMpe3JldHVybiBjLmFuZ2xlLWQuYW5nbGV9KTt2YXIgYj1jW2MubGVuZ3RoLTFdO2M9Yy5yZWR1Y2UoZnVuY3Rpb24oYywKYil7dmFyIGE9Yy5zdGFydFBvaW50LGY9bihbYSxiXSksZT1iLmluZGV4ZXMuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybi0xPGEuaW5kZXhlcy5pbmRleE9mKGQpfSkucmVkdWNlKGZ1bmN0aW9uKGMsZSl7ZT1kW2VdO3ZhciBxPXIoZSxiKSxrPXIoZSxhKTtxPWstKGstcSsoazxxPzIqTWF0aC5QSTowKSkvMjtxPXQoZix7eDplLngrZS5yKk1hdGguc2luKHEpLHk6ZS55K2UucipNYXRoLmNvcyhxKX0pO2U9ZS5yO3E+MiplJiYocT0yKmUpO2lmKCFjfHxjLndpZHRoPnEpYz17cjplLGxhcmdlQXJjOnE+ZT8xOjAsd2lkdGg6cSx4OmIueCx5OmIueX07cmV0dXJuIGN9LG51bGwpO2lmKGUpe3ZhciBxPWUucjtjLmFyY3MucHVzaChbIkEiLHEscSwwLGUubGFyZ2VBcmMsMSxlLngsZS55XSk7Yy5zdGFydFBvaW50PWJ9cmV0dXJuIGN9LHtzdGFydFBvaW50OmIsYXJjczpbXX0pLmFyY3M7aWYoMCE9PWMubGVuZ3RoJiYxIT09Yy5sZW5ndGgpe2MudW5zaGlmdChbIk0iLGIueCxiLnldKTt2YXIgZj0Ke2NlbnRlcjphLGQ6Y319fXJldHVybiBmfSxnZXRDaXJjbGVDaXJjbGVJbnRlcnNlY3Rpb246bSxnZXRDaXJjbGVzSW50ZXJzZWN0aW9uUG9pbnRzOmUsZ2V0Q2lyY2xlc0ludGVyc2VjdGlvblBvbHlnb246eSxnZXRDaXJjdWxhclNlZ21lbnRBcmVhOmssZ2V0T3ZlcmxhcEJldHdlZW5DaXJjbGVzOmZ1bmN0aW9uKGQsYyxhKXt2YXIgZT0wO2E8ZCtjJiYoYTw9TWF0aC5hYnMoYy1kKT9lPWIoZDxjP2Q6Yyk6KGU9KGQqZC1jKmMrYSphKS8oMiphKSxhLT1lLGU9ayhkLGQtZSkrayhjLGMtYSkpLGU9ZihlLDE0KSk7cmV0dXJuIGV9LGlzQ2lyY2xlMUNvbXBsZXRlbHlPdmVybGFwcGluZ0NpcmNsZTI6ZnVuY3Rpb24oZCxjKXtyZXR1cm4gdChkLGMpK2MucjxkLnIrMWUtMTB9LGlzUG9pbnRJbnNpZGVDaXJjbGU6dSxpc1BvaW50SW5zaWRlQWxsQ2lyY2xlczp3LGlzUG9pbnRPdXRzaWRlQWxsQ2lyY2xlczpmdW5jdGlvbihkLGMpe3JldHVybiFjLnNvbWUoZnVuY3Rpb24oYyl7cmV0dXJuIHUoZCwKYyl9KX0scm91bmQ6Zn19KTttKGEsIm1peGlucy9uZWxkZXItbWVhZC5qcyIsW10sZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbihhKXthPWEuc2xpY2UoMCwtMSk7Zm9yKHZhciBiPWEubGVuZ3RoLGY9W10saz1mdW5jdGlvbihhLGIpe2Euc3VtKz1iW2EuaV07cmV0dXJuIGF9LGU9MDtlPGI7ZSsrKWZbZV09YS5yZWR1Y2Uoayx7c3VtOjAsaTplfSkuc3VtL2I7cmV0dXJuIGZ9O3JldHVybntnZXRDZW50cm9pZDphLG5lbGRlck1lYWQ6ZnVuY3Rpb24oZixiKXt2YXIgaz1mdW5jdGlvbihhLGMpe3JldHVybiBhLmZ4LWMuZnh9LG09ZnVuY3Rpb24oYSxjLGIsZSl7cmV0dXJuIGMubWFwKGZ1bmN0aW9uKGMsZCl7cmV0dXJuIGEqYytiKmVbZF19KX0sZT1mdW5jdGlvbihhLGMpe2MuZng9ZihjKTthW2EubGVuZ3RoLTFdPWM7cmV0dXJuIGF9LHU9ZnVuY3Rpb24oYSl7dmFyIGM9YVswXTtyZXR1cm4gYS5tYXAoZnVuY3Rpb24oYSl7YT1tKC41LGMsLjUsYSk7YS5meD1mKGEpO3JldHVybiBhfSl9LAp3PWZ1bmN0aW9uKGEsYyxiLGUpe2E9bShiLGEsZSxjKTthLmZ4PWYoYSk7cmV0dXJuIGF9O2I9ZnVuY3Rpb24oYSl7dmFyIGM9YS5sZW5ndGgsYj1BcnJheShjKzEpO2JbMF09YTtiWzBdLmZ4PWYoYSk7Zm9yKHZhciBkPTA7ZDxjOysrZCl7dmFyIGU9YS5zbGljZSgpO2VbZF09ZVtkXT8xLjA1KmVbZF06LjAwMTtlLmZ4PWYoZSk7YltkKzFdPWV9cmV0dXJuIGJ9KGIpO2Zvcih2YXIgeT0wOzEwMD55O3krKyl7Yi5zb3J0KGspO3ZhciByPWJbYi5sZW5ndGgtMV0sbj1hKGIpLHQ9dyhuLHIsMiwtMSk7dC5meDxiWzBdLmZ4PyhyPXcobixyLDMsLTIpLGI9ZShiLHIuZng8dC5meD9yOnQpKTp0LmZ4Pj1iW2IubGVuZ3RoLTJdLmZ4P3QuZng+ci5meD8obj13KG4sciwuNSwuNSksYj1uLmZ4PHIuZng/ZShiLG4pOnUoYikpOihuPXcobixyLDEuNSwtLjUpLGI9bi5meDx0LmZ4P2UoYixuKTp1KGIpKTpiPWUoYix0KX1yZXR1cm4gYlswXX19fSk7bShhLCJtb2R1bGVzL3Zlbm4uc3JjLmpzIiwKW2FbInBhcnRzL0NvbG9yLmpzIl0sYVsicGFydHMvR2xvYmFscy5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdLGFbIm1peGlucy9kcmF3LXBvaW50LmpzIl0sYVsibWl4aW5zL2dlb21ldHJ5LmpzIl0sYVsibWl4aW5zL2dlb21ldHJ5LWNpcmNsZXMuanMiXSxhWyJtaXhpbnMvbmVsZGVyLW1lYWQuanMiXV0sZnVuY3Rpb24oYSxmLGIsbSxDLGUsdSl7ZnVuY3Rpb24gayhhLGMpe3ZhciBsPWEuc2V0cyxiPWMucmVkdWNlKGZ1bmN0aW9uKGEsYyl7dmFyIGI9LTE8bC5pbmRleE9mKGMuc2V0c1swXSk7YVtiPyJpbnRlcm5hbCI6ImV4dGVybmFsIl0ucHVzaChjLmNpcmNsZSk7cmV0dXJuIGF9LHtpbnRlcm5hbDpbXSxleHRlcm5hbDpbXX0pO2IuZXh0ZXJuYWw9Yi5leHRlcm5hbC5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIGIuaW50ZXJuYWwuc29tZShmdW5jdGlvbihjKXtyZXR1cm4hWShhLGMpfSl9KTthPVooYi5pbnRlcm5hbCxiLmV4dGVybmFsKTtjPUwoYSxiLmludGVybmFsLApiLmV4dGVybmFsKTtyZXR1cm57cG9zaXRpb246YSx3aWR0aDpjfX1mdW5jdGlvbiB5KGEpe3ZhciBjPXt9LGI9e307aWYoMDxhLmxlbmd0aCl7dmFyIGw9TShhKSxnPWEuZmlsdGVyKEEpO2EuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgcD1hLnNldHMsZD1wLmpvaW4oKTtpZihwPUEoYSk/bFtkXTp4KHAubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBsW2FdfSkpKWNbZF09cCxiW2RdPWsoYSxnKX0pfXJldHVybnttYXBPZklkVG9TaGFwZTpjLG1hcE9mSWRUb0xhYmVsVmFsdWVzOmJ9fXZhciByPWEucGFyc2U7YT1iLmFkZEV2ZW50O3ZhciBuPWIuYW5pbU9iamVjdCx0PWIuZXh0ZW5kLGQ9Yi5pc0FycmF5LGM9Yi5pc051bWJlcixxPWIuaXNPYmplY3QsQj1iLmlzU3RyaW5nLEg9Yi5tZXJnZTtiPWIuc2VyaWVzVHlwZTt2YXIgej1lLmdldEFyZWFPZkNpcmNsZSx4PWUuZ2V0QXJlYU9mSW50ZXJzZWN0aW9uQmV0d2VlbkNpcmNsZXMsVT1lLmdldENpcmNsZUNpcmNsZUludGVyc2VjdGlvbiwKVj1lLmdldENpcmNsZXNJbnRlcnNlY3Rpb25Qb2x5Z29uLEk9ZS5nZXRPdmVybGFwQmV0d2VlbkNpcmNsZXMsWT1lLmlzQ2lyY2xlMUNvbXBsZXRlbHlPdmVybGFwcGluZ0NpcmNsZTIsSj1lLmlzUG9pbnRJbnNpZGVBbGxDaXJjbGVzLFc9ZS5pc1BvaW50SW5zaWRlQ2lyY2xlLEs9ZS5pc1BvaW50T3V0c2lkZUFsbENpcmNsZXMsWD11Lm5lbGRlck1lYWQsYWE9Qy5nZXRDZW50ZXJPZlBvaW50cyxFPUMuZ2V0RGlzdGFuY2VCZXR3ZWVuUG9pbnRzLE49Zi5zZXJpZXNUeXBlcyxiYT1mdW5jdGlvbihhKXtyZXR1cm4gT2JqZWN0LmtleXMoYSkubWFwKGZ1bmN0aW9uKGMpe3JldHVybiBhW2NdfSl9LGNhPWZ1bmN0aW9uKGEpe3ZhciBjPTA7Mj09PWEubGVuZ3RoJiYoYz1hWzBdLGE9YVsxXSxjPUkoYy5yLGEucixFKGMsYSkpKTtyZXR1cm4gY30sTz1mdW5jdGlvbihhLGMpe3JldHVybiBjLnJlZHVjZShmdW5jdGlvbihjLGIpe3ZhciBnPTA7MTxiLnNldHMubGVuZ3RoJiYoZz1iLnZhbHVlLApiPWNhKGIuc2V0cy5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGFbY119KSksYj1nLWIsZz1NYXRoLnJvdW5kKGIqYioxRTExKS8xRTExKTtyZXR1cm4gYytnfSwwKX0sUD1mdW5jdGlvbihhLGMsYixkLGcpe3ZhciBsPWEoYyksZT1hKGIpO2c9Z3x8MTAwO2Q9ZHx8MWUtMTA7dmFyIHA9Yi1jLGY9MTtpZihjPj1iKXRocm93IEVycm9yKCJhIG11c3QgYmUgc21hbGxlciB0aGFuIGIuIik7aWYoMDxsKmUpdGhyb3cgRXJyb3IoImYoYSkgYW5kIGYoYikgbXVzdCBoYXZlIG9wcG9zaXRlIHNpZ25zLiIpO2lmKDA9PT1sKXZhciBoPWM7ZWxzZSBpZigwPT09ZSloPWI7ZWxzZSBmb3IoO2YrKzw9ZyYmMCE9PXYmJnA+ZDspe3A9KGItYykvMjtoPWMrcDt2YXIgdj1hKGgpOzA8bCp2P2M9aDpiPWh9cmV0dXJuIGh9LEY9ZnVuY3Rpb24oYSxjLGIpe3ZhciBkPWErYztyZXR1cm4gMD49Yj9kOnooYTxjP2E6Yyk8PWI/MDpQKGZ1bmN0aW9uKGcpe2c9SShhLGMsZyk7cmV0dXJuIGItZ30sMCxkKX0sQT0KZnVuY3Rpb24oYSl7cmV0dXJuIGQoYS5zZXRzKSYmMT09PWEuc2V0cy5sZW5ndGh9LEc9ZnVuY3Rpb24oYSxjLGIpe2M9Yy5yZWR1Y2UoZnVuY3Rpb24oYyxiKXtiPWIuci1FKGEsYik7cmV0dXJuIGI8PWM/YjpjfSxOdW1iZXIuTUFYX1ZBTFVFKTtyZXR1cm4gYz1iLnJlZHVjZShmdW5jdGlvbihjLGIpe2I9RShhLGIpLWIucjtyZXR1cm4gYjw9Yz9iOmN9LGMpfSxaPWZ1bmN0aW9uKGEsYyl7dmFyIGI9YS5yZWR1Y2UoZnVuY3Rpb24oYixkKXt2YXIgZT1kLnIvMjtyZXR1cm5be3g6ZC54LHk6ZC55fSx7eDpkLngrZSx5OmQueX0se3g6ZC54LWUseTpkLnl9LHt4OmQueCx5OmQueStlfSx7eDpkLngseTpkLnktZX1dLnJlZHVjZShmdW5jdGlvbihiLGQpe3ZhciBlPUcoZCxhLGMpO2IubWFyZ2luPGUmJihiLnBvaW50PWQsYi5tYXJnaW49ZSk7cmV0dXJuIGJ9LGIpfSx7cG9pbnQ6dm9pZCAwLG1hcmdpbjotTnVtYmVyLk1BWF9WQUxVRX0pLnBvaW50O2I9WChmdW5jdGlvbihiKXtyZXR1cm4tRyh7eDpiWzBdLAp5OmJbMV19LGEsYyl9LFtiLngsYi55XSk7Yj17eDpiWzBdLHk6YlsxXX07SihiLGEpJiZLKGIsYyl8fChiPTE8YS5sZW5ndGg/YWEoVihhKSk6e3g6YVswXS54LHk6YVswXS55fSk7cmV0dXJuIGJ9LEw9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWIucmVkdWNlKGZ1bmN0aW9uKGEsYil7cmV0dXJuIE1hdGgubWluKGIucixhKX0sSW5maW5pdHkpLGU9Yy5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIVcoYSxiKX0pO2M9ZnVuY3Rpb24oYyxkKXtyZXR1cm4gUChmdW5jdGlvbihnKXt2YXIgbD17eDphLngrZCpnLHk6YS55fTtsPUoobCxiKSYmSyhsLGUpO3JldHVybi0oYy1nKSsobD8wOk51bWJlci5NQVhfVkFMVUUpfSwwLGMpfTtyZXR1cm4gMipNYXRoLm1pbihjKGQsLTEpLGMoZCwxKSl9LFE9ZnVuY3Rpb24oYSl7dmFyIGI9YS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIDI9PT1hLnNldHMubGVuZ3RofSkucmVkdWNlKGZ1bmN0aW9uKGEsYil7Yi5zZXRzLmZvckVhY2goZnVuY3Rpb24oYywKZCxlKXtxKGFbY10pfHwoYVtjXT17b3ZlcmxhcHBpbmc6e30sdG90YWxPdmVybGFwOjB9KTthW2NdLnRvdGFsT3ZlcmxhcCs9Yi52YWx1ZTthW2NdLm92ZXJsYXBwaW5nW2VbMS1kXV09Yi52YWx1ZX0pO3JldHVybiBhfSx7fSk7YS5maWx0ZXIoQSkuZm9yRWFjaChmdW5jdGlvbihhKXt0KGEsYlthLnNldHNbMF1dKX0pO3JldHVybiBhfSxSPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG90YWxPdmVybGFwLWEudG90YWxPdmVybGFwfSxNPWZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9e307YS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLnNldHMubGVuZ3RofSkuZm9yRWFjaChmdW5jdGlvbihhKXtjW2Euc2V0c1swXV09YS5jaXJjbGU9e3g6TnVtYmVyLk1BWF9WQUxVRSx5Ok51bWJlci5NQVhfVkFMVUUscjpNYXRoLnNxcnQoYS52YWx1ZS9NYXRoLlBJKX19KTt2YXIgZD1mdW5jdGlvbihhLGMpe3ZhciBkPWEuY2lyY2xlO2QueD1jLng7ZC55PWMueTtiLnB1c2goYSl9O1EoYSk7CnZhciBlPWEuZmlsdGVyKEEpLnNvcnQoUik7ZChlLnNoaWZ0KCkse3g6MCx5OjB9KTt2YXIgZj1hLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gMj09PWEuc2V0cy5sZW5ndGh9KTtlLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGU9YS5jaXJjbGUsZz1lLnIsbD1hLm92ZXJsYXBwaW5nLHA9Yi5yZWR1Y2UoZnVuY3Rpb24oYSxkLHApe3ZhciBoPWQuY2lyY2xlLHY9RihnLGgucixsW2Quc2V0c1swXV0pLEQ9W3t4OmgueCt2LHk6aC55fSx7eDpoLngtdix5OmgueX0se3g6aC54LHk6aC55K3Z9LHt4OmgueCx5OmgueS12fV07Yi5zbGljZShwKzEpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5jaXJjbGU7YT1GKGcsYi5yLGxbYS5zZXRzWzBdXSk7RD1ELmNvbmNhdChVKHt4OmgueCx5OmgueSxyOnZ9LHt4OmIueCx5OmIueSxyOmF9KSl9KTtELmZvckVhY2goZnVuY3Rpb24oYil7ZS54PWIueDtlLnk9Yi55O3ZhciBkPU8oYyxmKTtkPGEubG9zcyYmKGEubG9zcz1kLGEuY29vcmRpbmF0ZXM9CmIpfSk7cmV0dXJuIGF9LHtsb3NzOk51bWJlci5NQVhfVkFMVUUsY29vcmRpbmF0ZXM6dm9pZCAwfSk7ZChhLHAuY29vcmRpbmF0ZXMpfSk7cmV0dXJuIGN9LFM9ZnVuY3Rpb24oYSl7dmFyIGI9e307cmV0dXJuIHEoYSkmJmMoYS52YWx1ZSkmJi0xPGEudmFsdWUmJmQoYS5zZXRzKSYmMDxhLnNldHMubGVuZ3RoJiYhYS5zZXRzLnNvbWUoZnVuY3Rpb24oYSl7dmFyIGM9ITE7IWJbYV0mJkIoYSk/YlthXT0hMDpjPSEwO3JldHVybiBjfSl9LFQ9ZnVuY3Rpb24oYSl7YT1kKGEpP2E6W107dmFyIGI9YS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtTKGIpJiZBKGIpJiYwPGIudmFsdWUmJi0xPT09YS5pbmRleE9mKGIuc2V0c1swXSkmJmEucHVzaChiLnNldHNbMF0pO3JldHVybiBhfSxbXSkuc29ydCgpLGM9YS5yZWR1Y2UoZnVuY3Rpb24oYSxjKXtTKGMpJiYhYy5zZXRzLnNvbWUoZnVuY3Rpb24oYSl7cmV0dXJuLTE9PT1iLmluZGV4T2YoYSl9KSYmKGFbYy5zZXRzLnNvcnQoKS5qb2luKCldPQpjKTtyZXR1cm4gYX0se30pO2IucmVkdWNlKGZ1bmN0aW9uKGEsYixjLGQpe2Quc2xpY2UoYysxKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2EucHVzaChiKyIsIitjKX0pO3JldHVybiBhfSxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXtpZighY1thXSl7dmFyIGI9e3NldHM6YS5zcGxpdCgiLCIpLHZhbHVlOjB9O2NbYV09Yn19KTtyZXR1cm4gYmEoYyl9LGRhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jLmJvdHRvbS1jLnRvcCxlPWMucmlnaHQtYy5sZWZ0O2Q9TWF0aC5taW4oMDxlPzEvZSphOjEsMDxkPzEvZCpiOjEpO3JldHVybntzY2FsZTpkLGNlbnRlclg6YS8yLShjLnJpZ2h0K2MubGVmdCkvMipkLGNlbnRlclk6Yi8yLShjLnRvcCtjLmJvdHRvbSkvMipkfX07YigidmVubiIsInNjYXR0ZXIiLHtib3JkZXJDb2xvcjoiI2NjY2NjYyIsYm9yZGVyRGFzaFN0eWxlOiJzb2xpZCIsYm9yZGVyV2lkdGg6MSxicmlnaHRlbjowLGNsaXA6ITEsY29sb3JCeVBvaW50OiEwLGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITAsCnZlcnRpY2FsQWxpZ246Im1pZGRsZSIsZm9ybWF0dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9pbnQubmFtZX19LGluYWN0aXZlT3RoZXJQb2ludHM6ITAsbWFya2VyOiExLG9wYWNpdHk6Ljc1LHNob3dJbkxlZ2VuZDohMSxzdGF0ZXM6e2hvdmVyOntvcGFjaXR5OjEsYm9yZGVyQ29sb3I6IiMzMzMzMzMifSxzZWxlY3Q6e2NvbG9yOiIjY2NjY2NjIixib3JkZXJDb2xvcjoiIzAwMDAwMCIsYW5pbWF0aW9uOiExfSxpbmFjdGl2ZTp7b3BhY2l0eTouMDc1fX0sdG9vbHRpcDp7cG9pbnRGb3JtYXQ6Intwb2ludC5uYW1lfToge3BvaW50LnZhbHVlfSJ9fSx7aXNDYXJ0ZXNpYW46ITEsYXhpc1R5cGVzOltdLGRpcmVjdFRvdWNoOiEwLHBvaW50QXJyYXlNYXA6WyJ2YWx1ZSJdLGluaXQ6ZnVuY3Rpb24oKXtOLnNjYXR0ZXIucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO2RlbGV0ZSB0aGlzLm9wYWNpdHl9LHRyYW5zbGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQ7CnRoaXMucHJvY2Vzc2VkWERhdGE9dGhpcy54RGF0YTt0aGlzLmdlbmVyYXRlUG9pbnRzKCk7dmFyIGI9VCh0aGlzLm9wdGlvbnMuZGF0YSk7Yj15KGIpO3ZhciBlPWIubWFwT2ZJZFRvU2hhcGUsZj1iLm1hcE9mSWRUb0xhYmVsVmFsdWVzO2I9T2JqZWN0LmtleXMoZSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybihhPWVbYV0pJiZjKGEucil9KS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXt2YXIgZD1lW2JdO2I9ZC54LWQucjt2YXIgZj1kLngrZC5yLGc9ZC55K2QucjtkPWQueS1kLnI7aWYoIWMoYS5sZWZ0KXx8YS5sZWZ0PmIpYS5sZWZ0PWI7aWYoIWMoYS5yaWdodCl8fGEucmlnaHQ8ZilhLnJpZ2h0PWY7aWYoIWMoYS50b3ApfHxhLnRvcD5kKWEudG9wPWQ7aWYoIWMoYS5ib3R0b20pfHxhLmJvdHRvbTxnKWEuYm90dG9tPWc7cmV0dXJuIGF9LHt0b3A6MCxib3R0b206MCxsZWZ0OjAscmlnaHQ6MH0pO2E9ZGEoYS5wbG90V2lkdGgsYS5wbG90SGVpZ2h0LGIpO3ZhciBnPWEuc2NhbGUsaz0KYS5jZW50ZXJYLG09YS5jZW50ZXJZO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9ZChhLnNldHMpP2Euc2V0czpbXSxsPWIuam9pbigpLHA9ZVtsXSxoPWZbbF18fHt9O2w9aC53aWR0aDtoPWgucG9zaXRpb247dmFyIHY9YS5vcHRpb25zJiZhLm9wdGlvbnMuZGF0YUxhYmVscztpZihwKXtpZihwLnIpdmFyIG49e3g6aytwLngqZyx5Om0rcC55KmcscjpwLnIqZ307ZWxzZSBwLmQmJihwPXAuZCxwLmZvckVhY2goZnVuY3Rpb24oYSl7Ik0iPT09YVswXT8oYVsxXT1rK2FbMV0qZyxhWzJdPW0rYVsyXSpnKToiQSI9PT1hWzBdJiYoYVsxXSo9ZyxhWzJdKj1nLGFbNl09aythWzZdKmcsYVs3XT1tK2FbN10qZyl9KSxuPXtkOnB9KTtoPyhoLng9aytoLngqZyxoLnk9bStoLnkqZyk6aD17fTtjKGwpJiYobD1NYXRoLnJvdW5kKGwqZykpfWEuc2hhcGVBcmdzPW47aCYmbiYmKGEucGxvdFg9aC54LGEucGxvdFk9aC55KTtsJiZuJiYoYS5kbE9wdGlvbnM9SCghMCx7c3R5bGU6e3dpZHRoOmx9fSwKcSh2KSYmdikpO2EubmFtZT1hLm9wdGlvbnMubmFtZXx8Yi5qb2luKCJcdTIyMjkiKX0pfSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEuY2hhcnQsYz1hLmdyb3VwLGU9Yi5yZW5kZXJlcjsoYS5wb2ludHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3ZhciBsPXt6SW5kZXg6ZChmLnNldHMpP2Yuc2V0cy5sZW5ndGg6MH0sZz1mLnNoYXBlQXJncztiLnN0eWxlZE1vZGV8fHQobCxhLnBvaW50QXR0cmlicyhmLGYuc3RhdGUpKTtmLmRyYXcoe2lzTmV3OiFmLmdyYXBoaWMsYW5pbWF0YWJsZUF0dHJpYnM6ZyxhdHRyaWJzOmwsZ3JvdXA6YyxyZW5kZXJlcjplLHNoYXBlVHlwZTpnJiZnLmQ/InBhdGgiOiJjaXJjbGUifSl9KX0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5vcHRpb25zfHx7fTthPUgoYyx7Y29sb3I6YSYmYS5jb2xvcn0sYSYmYS5vcHRpb25zfHx7fSxiJiZjLnN0YXRlc1tiXXx8e30pO3JldHVybntmaWxsOnIoYS5jb2xvcikuc2V0T3BhY2l0eShhLm9wYWNpdHkpLmJyaWdodGVuKGEuYnJpZ2h0bmVzcykuZ2V0KCksCnN0cm9rZTphLmJvcmRlckNvbG9yLCJzdHJva2Utd2lkdGgiOmEuYm9yZGVyV2lkdGgsZGFzaHN0eWxlOmEuYm9yZGVyRGFzaFN0eWxlfX0sYW5pbWF0ZTpmdW5jdGlvbihhKXtpZighYSl7dmFyIGI9bih0aGlzLm9wdGlvbnMuYW5pbWF0aW9uKTt0aGlzLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBjPWEuc2hhcGVBcmdzO2lmKGEuZ3JhcGhpYyYmYyl7dmFyIGQ9e30sZT17fTtjLmQ/ZC5vcGFjaXR5PS4wMDE6KGQucj0wLGUucj1jLnIpO2EuZ3JhcGhpYy5hdHRyKGQpLmFuaW1hdGUoZSxiKTtjLmQmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXthJiZhLmdyYXBoaWMmJmEuZ3JhcGhpYy5hbmltYXRlKHtvcGFjaXR5OjF9KX0sYi5kdXJhdGlvbil9fSx0aGlzKX19LHV0aWxzOnthZGRPdmVybGFwVG9TZXRzOlEsZ2VvbWV0cnk6QyxnZW9tZXRyeUNpcmNsZXM6ZSxnZXRMYWJlbFdpZHRoOkwsZ2V0TWFyZ2luRnJvbUNpcmNsZXM6RyxnZXREaXN0YW5jZUJldHdlZW5DaXJjbGVzQnlPdmVybGFwOkYsCmxheW91dEdyZWVkeVZlbm46TSxsb3NzOk8sbmVsZGVyTWVhZDp1LHByb2Nlc3NWZW5uRGF0YTpULHNvcnRCeVRvdGFsT3ZlcmxhcDpSfX0se2RyYXc6bSxzaG91bGREcmF3OmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnNoYXBlQXJnc30saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybiBjKHRoaXMudmFsdWUpfX0pO2EoTi52ZW5uLCJhZnRlclNldE9wdGlvbnMiLGZ1bmN0aW9uKGEpe3ZhciBiPWEub3B0aW9ucy5zdGF0ZXM7dGhpcy5pcygidmVubiIpJiZPYmplY3Qua2V5cyhiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2JbYV0uaGFsbz0hMX0pfSl9KTttKGEsIm1hc3RlcnMvbW9kdWxlcy92ZW5uLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD12ZW5uLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgR2FudHQgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEdhbnR0IHNlcmllcwoKIChjKSAyMDE2LTIwMTkgTGFycyBBLiBWLiBDYWJyZXJhCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGMpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGNbImRlZmF1bHQiXT1jLG1vZHVsZS5leHBvcnRzPWMpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2dhbnR0IixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihKKXtjKEopO2MuSGlnaGNoYXJ0cz1KO3JldHVybiBjfSk6YygidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIEooYyxsLHUseil7Yy5oYXNPd25Qcm9wZXJ0eShsKXx8KGNbbF09ei5hcHBseShudWxsLHUpKX1jPWM/Yy5fbW9kdWxlczp7fTtKKGMsInBhcnRzLWdhbnR0L1RyZWUuanMiLFtjWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYyl7dmFyIGw9Yy5leHRlbmQsdT1jLmlzTnVtYmVyLHo9Yy5waWNrLHg9ZnVuY3Rpb24obCx5KXt2YXIgaz1sLnJlZHVjZShmdW5jdGlvbihiLApnKXt2YXIgbT16KGcucGFyZW50LCIiKTsidW5kZWZpbmVkIj09PXR5cGVvZiBiW21dJiYoYlttXT1bXSk7YlttXS5wdXNoKGcpO3JldHVybiBifSx7fSk7T2JqZWN0LmtleXMoaykuZm9yRWFjaChmdW5jdGlvbihiLGcpe3ZhciBtPWtbYl07IiIhPT1iJiYtMT09PXkuaW5kZXhPZihiKSYmKG0uZm9yRWFjaChmdW5jdGlvbihiKXtnWyIiXS5wdXNoKGIpfSksZGVsZXRlIGdbYl0pfSk7cmV0dXJuIGt9LEE9ZnVuY3Rpb24oYyx5LGssYixnLG0pe3ZhciB0PTAsSD0wLEk9bSYmbS5hZnRlcixFPW0mJm0uYmVmb3JlO3k9e2RhdGE6YixkZXB0aDprLTEsaWQ6YyxsZXZlbDprLHBhcmVudDp5fTt2YXIgcCxhOyJmdW5jdGlvbiI9PT10eXBlb2YgRSYmRSh5LG0pO0U9KGdbY118fFtdKS5tYXAoZnVuY3Rpb24odyl7dmFyIGU9QSh3LmlkLGMsaysxLHcsZyxtKSxDPXcuc3RhcnQ7dz0hMD09PXcubWlsZXN0b25lP0M6dy5lbmQ7cD0hdShwKXx8QzxwP0M6cDthPSF1KGEpfHx3PmE/dzphO3Q9dCsKMStlLmRlc2NlbmRhbnRzO0g9TWF0aC5tYXgoZS5oZWlnaHQrMSxIKTtyZXR1cm4gZX0pO2ImJihiLnN0YXJ0PXooYi5zdGFydCxwKSxiLmVuZD16KGIuZW5kLGEpKTtsKHkse2NoaWxkcmVuOkUsZGVzY2VuZGFudHM6dCxoZWlnaHQ6SH0pOyJmdW5jdGlvbiI9PT10eXBlb2YgSSYmSSh5LG0pO3JldHVybiB5fTtyZXR1cm57Z2V0TGlzdE9mUGFyZW50czp4LGdldE5vZGU6QSxnZXRUcmVlOmZ1bmN0aW9uKGwseSl7dmFyIGs9bC5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGIuaWR9KTtsPXgobCxrKTtyZXR1cm4gQSgiIixudWxsLDEsbnVsbCxsLHkpfX19KTtKKGMsInBhcnRzLWdhbnR0L1RyZWVHcmlkVGljay5qcyIsW2NbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjKXt2YXIgbD1jLmFkZEV2ZW50LHU9Yy5kZWZpbmVkLHo9Yy5pc09iamVjdCx4PWMuaXNOdW1iZXIsQT1jLnBpY2ssRD1jLndyYXAseTsoZnVuY3Rpb24oayl7ZnVuY3Rpb24gYigpe3RoaXMudHJlZUdyaWR8fAoodGhpcy50cmVlR3JpZD1uZXcgYyh0aGlzKSl9ZnVuY3Rpb24gZyhiLHApe2I9Yi50cmVlR3JpZDt2YXIgYT0hYi5sYWJlbEljb24sdz1wLnJlbmRlcmVyLGU9cC54eSxDPXAub3B0aW9ucyxxPUMud2lkdGgsZj1DLmhlaWdodCxkPWUueC1xLzItQy5wYWRkaW5nO2U9ZS55LWYvMjt2YXIgdj1wLmNvbGxhcHNlZD85MDoxODAsRz1wLnNob3cmJngoZSksQj1iLmxhYmVsSWNvbjtCfHwoYi5sYWJlbEljb249Qj13LnBhdGgody5zeW1ib2xzW0MudHlwZV0oQy54LEMueSxxLGYpKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1sYWJlbC1pY29uIikuYWRkKHAuZ3JvdXApKTtHfHxCLmF0dHIoe3k6LTk5OTl9KTt3LnN0eWxlZE1vZGV8fEIuYXR0cih7InN0cm9rZS13aWR0aCI6MSxmaWxsOkEocC5jb2xvciwiIzY2NjY2NiIpfSkuY3NzKHtjdXJzb3I6InBvaW50ZXIiLHN0cm9rZTpDLmxpbmVDb2xvcixzdHJva2VXaWR0aDpDLmxpbmVXaWR0aH0pO0JbYT8iYXR0ciI6ImFuaW1hdGUiXSh7dHJhbnNsYXRlWDpkLAp0cmFuc2xhdGVZOmUscm90YXRpb246dn0pfWZ1bmN0aW9uIG0oYixwLGEsdyxlLEMscSxmLGQpe3ZhciB2PUEodGhpcy5vcHRpb25zJiZ0aGlzLm9wdGlvbnMubGFiZWxzLEMpO0M9dGhpcy5wb3M7dmFyIEc9dGhpcy5heGlzLEI9InRyZWVncmlkIj09PUcub3B0aW9ucy50eXBlO2I9Yi5hcHBseSh0aGlzLFtwLGEsdyxlLHYscSxmLGRdKTtCJiYocD12JiZ6KHYuc3ltYm9sLCEwKT92LnN5bWJvbDp7fSx2PXYmJngodi5pbmRlbnRhdGlvbik/di5pbmRlbnRhdGlvbjowLEM9KEM9KEc9Ry50cmVlR3JpZC5tYXBPZlBvc1RvR3JpZE5vZGUpJiZHW0NdKSYmQy5kZXB0aHx8MSxiLngrPXAud2lkdGgrMipwLnBhZGRpbmcrKEMtMSkqdik7cmV0dXJuIGJ9ZnVuY3Rpb24gdChiKXt2YXIgcD10aGlzLGE9cC5wb3Msdz1wLmF4aXMsZT1wLmxhYmVsLEM9dy50cmVlR3JpZC5tYXBPZlBvc1RvR3JpZE5vZGUscT13Lm9wdGlvbnMsZj1BKHAub3B0aW9ucyYmcC5vcHRpb25zLmxhYmVscyxxJiZxLmxhYmVscyksCmQ9ZiYmeihmLnN5bWJvbCwhMCk/Zi5zeW1ib2w6e30sdj0oQz1DJiZDW2FdKSYmQy5kZXB0aDtxPSJ0cmVlZ3JpZCI9PT1xLnR5cGU7dmFyIEc9LTE8dy50aWNrUG9zaXRpb25zLmluZGV4T2YoYSk7YT13LmNoYXJ0LnN0eWxlZE1vZGU7cSYmQyYmZSYmZS5lbGVtZW50JiZlLmFkZENsYXNzKCJoaWdoY2hhcnRzLXRyZWVncmlkLW5vZGUtbGV2ZWwtIit2KTtiLmFwcGx5KHAsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTtxJiZlJiZlLmVsZW1lbnQmJkMmJkMuZGVzY2VuZGFudHMmJjA8Qy5kZXNjZW5kYW50cyYmKHc9dy50cmVlR3JpZC5pc0NvbGxhcHNlZChDKSxnKHAse2NvbG9yOiFhJiZlLnN0eWxlcyYmZS5zdHlsZXMuY29sb3J8fCIiLGNvbGxhcHNlZDp3LGdyb3VwOmUucGFyZW50R3JvdXAsb3B0aW9uczpkLHJlbmRlcmVyOmUucmVuZGVyZXIsc2hvdzpHLHh5OmUueHl9KSxkPSJoaWdoY2hhcnRzLXRyZWVncmlkLW5vZGUtIisodz8iZXhwYW5kZWQiOgoiY29sbGFwc2VkIiksZS5hZGRDbGFzcygiaGlnaGNoYXJ0cy10cmVlZ3JpZC1ub2RlLSIrKHc/ImNvbGxhcHNlZCI6ImV4cGFuZGVkIikpLnJlbW92ZUNsYXNzKGQpLGF8fGUuY3NzKHtjdXJzb3I6InBvaW50ZXIifSksW2UscC50cmVlR3JpZC5sYWJlbEljb25dLmZvckVhY2goZnVuY3Rpb24oZCl7ZCYmIWQuYXR0YWNoZWRUcmVlR3JpZEV2ZW50cyYmKGwoZC5lbGVtZW50LCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7ZS5hZGRDbGFzcygiaGlnaGNoYXJ0cy10cmVlZ3JpZC1ub2RlLWFjdGl2ZSIpO2UucmVuZGVyZXIuc3R5bGVkTW9kZXx8ZS5jc3Moe3RleHREZWNvcmF0aW9uOiJ1bmRlcmxpbmUifSl9KSxsKGQuZWxlbWVudCwibW91c2VvdXQiLGZ1bmN0aW9uKCl7dmFyIGQ9dShmLnN0eWxlKT9mLnN0eWxlOnt9O2UucmVtb3ZlQ2xhc3MoImhpZ2hjaGFydHMtdHJlZWdyaWQtbm9kZS1hY3RpdmUiKTtlLnJlbmRlcmVyLnN0eWxlZE1vZGV8fGUuY3NzKHt0ZXh0RGVjb3JhdGlvbjpkLnRleHREZWNvcmF0aW9ufSl9KSwKbChkLmVsZW1lbnQsImNsaWNrIixmdW5jdGlvbigpe3AudHJlZUdyaWQudG9nZ2xlQ29sbGFwc2UoKX0pLGQuYXR0YWNoZWRUcmVlR3JpZEV2ZW50cz0hMCl9KSl9dmFyIEg9ITE7ay5jb21wb3NlPWZ1bmN0aW9uKGcpe0h8fChsKGcsImluaXQiLGIpLEQoZy5wcm90b3R5cGUsImdldExhYmVsUG9zaXRpb24iLG0pLEQoZy5wcm90b3R5cGUsInJlbmRlckxhYmVsIix0KSxnLnByb3RvdHlwZS5jb2xsYXBzZT1mdW5jdGlvbihiKXt0aGlzLnRyZWVHcmlkLmNvbGxhcHNlKGIpfSxnLnByb3RvdHlwZS5leHBhbmQ9ZnVuY3Rpb24oYil7dGhpcy50cmVlR3JpZC5leHBhbmQoYil9LGcucHJvdG90eXBlLnRvZ2dsZUNvbGxhcHNlPWZ1bmN0aW9uKGIpe3RoaXMudHJlZUdyaWQudG9nZ2xlQ29sbGFwc2UoYil9LEg9ITApfTt2YXIgYz1mdW5jdGlvbigpe2Z1bmN0aW9uIGIoYil7dGhpcy50aWNrPWJ9Yi5wcm90b3R5cGUuY29sbGFwc2U9ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy50aWNrLHc9YS5heGlzLAplPXcuYnJva2VuQXhpcztlJiZ3LnRyZWVHcmlkLm1hcE9mUG9zVG9HcmlkTm9kZSYmKGE9dy50cmVlR3JpZC5jb2xsYXBzZSh3LnRyZWVHcmlkLm1hcE9mUG9zVG9HcmlkTm9kZVthLnBvc10pLGUuc2V0QnJlYWtzKGEsQShiLCEwKSkpfTtiLnByb3RvdHlwZS5leHBhbmQ9ZnVuY3Rpb24oYil7dmFyIGE9dGhpcy50aWNrLHc9YS5heGlzLGU9dy5icm9rZW5BeGlzO2UmJncudHJlZUdyaWQubWFwT2ZQb3NUb0dyaWROb2RlJiYoYT13LnRyZWVHcmlkLmV4cGFuZCh3LnRyZWVHcmlkLm1hcE9mUG9zVG9HcmlkTm9kZVthLnBvc10pLGUuc2V0QnJlYWtzKGEsQShiLCEwKSkpfTtiLnByb3RvdHlwZS50b2dnbGVDb2xsYXBzZT1mdW5jdGlvbihiKXt2YXIgYT10aGlzLnRpY2ssdz1hLmF4aXMsZT13LmJyb2tlbkF4aXM7ZSYmdy50cmVlR3JpZC5tYXBPZlBvc1RvR3JpZE5vZGUmJihhPXcudHJlZUdyaWQudG9nZ2xlQ29sbGFwc2Uody50cmVlR3JpZC5tYXBPZlBvc1RvR3JpZE5vZGVbYS5wb3NdKSwKZS5zZXRCcmVha3MoYSxBKGIsITApKSl9O3JldHVybiBifSgpO2suQWRkaXRpb25zPWN9KSh5fHwoeT17fSkpO3JldHVybiB5fSk7SihjLCJtaXhpbnMvdHJlZS1zZXJpZXMuanMiLFtjWyJwYXJ0cy9Db2xvci5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjLGwpe3ZhciB1PWwuZXh0ZW5kLHo9bC5pc0FycmF5LHg9bC5pc051bWJlcixBPWwuaXNPYmplY3QsRD1sLm1lcmdlLHk9bC5waWNrO3JldHVybntnZXRDb2xvcjpmdW5jdGlvbihrLGIpe3ZhciBnPWIuaW5kZXgsbT1iLm1hcE9wdGlvbnNUb0xldmVsLHQ9Yi5wYXJlbnRDb2xvcixIPWIucGFyZW50Q29sb3JJbmRleCxsPWIuc2VyaWVzLEU9Yi5jb2xvcnMscD1iLnNpYmxpbmdzLGE9bC5wb2ludHMsdz1sLmNoYXJ0Lm9wdGlvbnMuY2hhcnQsZTtpZihrKXthPWFbay5pXTtrPW1bay5sZXZlbF18fHt9O2lmKG09YSYmay5jb2xvckJ5UG9pbnQpe3ZhciBDPWEuaW5kZXglKEU/RS5sZW5ndGg6dy5jb2xvckNvdW50KTsKdmFyIHE9RSYmRVtDXX1pZighbC5jaGFydC5zdHlsZWRNb2RlKXtFPWEmJmEub3B0aW9ucy5jb2xvcjt3PWsmJmsuY29sb3I7aWYoZT10KWU9KGU9ayYmay5jb2xvclZhcmlhdGlvbikmJiJicmlnaHRuZXNzIj09PWUua2V5P2MucGFyc2UodCkuYnJpZ2h0ZW4oZy9wKmUudG8pLmdldCgpOnQ7ZT15KEUsdyxxLGUsbC5jb2xvcil9dmFyIGY9eShhJiZhLm9wdGlvbnMuY29sb3JJbmRleCxrJiZrLmNvbG9ySW5kZXgsQyxILGIuY29sb3JJbmRleCl9cmV0dXJue2NvbG9yOmUsY29sb3JJbmRleDpmfX0sZ2V0TGV2ZWxPcHRpb25zOmZ1bmN0aW9uKGspe3ZhciBiPW51bGw7aWYoQShrKSl7Yj17fTt2YXIgZz14KGsuZnJvbSk/ay5mcm9tOjE7dmFyIG09ay5sZXZlbHM7dmFyIHQ9e307dmFyIEg9QShrLmRlZmF1bHRzKT9rLmRlZmF1bHRzOnt9O3oobSkmJih0PW0ucmVkdWNlKGZ1bmN0aW9uKGIsbSl7aWYoQShtKSYmeChtLmxldmVsKSl7dmFyIHA9RCh7fSxtKTt2YXIgYT0iYm9vbGVhbiI9PT0KdHlwZW9mIHAubGV2ZWxJc0NvbnN0YW50P3AubGV2ZWxJc0NvbnN0YW50OkgubGV2ZWxJc0NvbnN0YW50O2RlbGV0ZSBwLmxldmVsSXNDb25zdGFudDtkZWxldGUgcC5sZXZlbDttPW0ubGV2ZWwrKGE/MDpnLTEpO0EoYlttXSk/dShiW21dLHApOmJbbV09cH1yZXR1cm4gYn0se30pKTttPXgoay50byk/ay50bzoxO2ZvcihrPTA7azw9bTtrKyspYltrXT1EKHt9LEgsQSh0W2tdKT90W2tdOnt9KX1yZXR1cm4gYn0sc2V0VHJlZVZhbHVlczpmdW5jdGlvbiBtKGIsZyl7dmFyIHQ9Zy5iZWZvcmUsSD1nLmlkUm9vdCxjPWcubWFwSWRUb05vZGVbSF0sRT1nLnBvaW50c1tiLmldLHA9RSYmRS5vcHRpb25zfHx7fSxhPTAsdz1bXTt1KGIse2xldmVsRHluYW1pYzpiLmxldmVsLSgoImJvb2xlYW4iPT09dHlwZW9mIGcubGV2ZWxJc0NvbnN0YW50P2cubGV2ZWxJc0NvbnN0YW50OjEpPzA6Yy5sZXZlbCksbmFtZTp5KEUmJkUubmFtZSwiIiksdmlzaWJsZTpIPT09Yi5pZHx8KCJib29sZWFuIj09PQp0eXBlb2YgZy52aXNpYmxlP2cudmlzaWJsZTohMSl9KTsiZnVuY3Rpb24iPT09dHlwZW9mIHQmJihiPXQoYixnKSk7Yi5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGUsQyl7dmFyIHE9dSh7fSxnKTt1KHEse2luZGV4OkMsc2libGluZ3M6Yi5jaGlsZHJlbi5sZW5ndGgsdmlzaWJsZTpiLnZpc2libGV9KTtlPW0oZSxxKTt3LnB1c2goZSk7ZS52aXNpYmxlJiYoYSs9ZS52YWwpfSk7Yi52aXNpYmxlPTA8YXx8Yi52aXNpYmxlO3Q9eShwLnZhbHVlLGEpO3UoYix7Y2hpbGRyZW46dyxjaGlsZHJlblRvdGFsOmEsaXNMZWFmOmIudmlzaWJsZSYmIWEsdmFsOnR9KTtyZXR1cm4gYn0sdXBkYXRlUm9vdElkOmZ1bmN0aW9uKGIpe2lmKEEoYikpe3ZhciBnPUEoYi5vcHRpb25zKT9iLm9wdGlvbnM6e307Zz15KGIucm9vdE5vZGUsZy5yb290SWQsIiIpO0EoYi51c2VyT3B0aW9ucykmJihiLnVzZXJPcHRpb25zLnJvb3RJZD1nKTtiLnJvb3ROb2RlPWd9cmV0dXJuIGd9fX0pO0ooYywicGFydHMtZ2FudHQvR3JpZEF4aXMuanMiLApbY1sicGFydHMvQXhpcy5qcyJdLGNbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJwYXJ0cy9PcHRpb25zLmpzIl0sY1sicGFydHMvVGljay5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjLGwsdSx6LHgpe3ZhciBBPXUuZGF0ZUZvcm1hdCxEPXguYWRkRXZlbnQseT14LmRlZmluZWQsaz14LmVyYXNlLGI9eC5maW5kLGc9eC5pc0FycmF5LG09eC5pc051bWJlcix0PXgubWVyZ2UsSD14LnBpY2ssST14LnRpbWVVbml0cyxFPXgud3JhcDt1PWwuQ2hhcnQ7dmFyIHA9ZnVuY3Rpb24oZSl7dmFyIGE9ZS5vcHRpb25zO2EubGFiZWxzfHwoYS5sYWJlbHM9e30pO2EubGFiZWxzLmFsaWduPUgoYS5sYWJlbHMuYWxpZ24sImNlbnRlciIpO2UuY2F0ZWdvcmllc3x8KGEuc2hvd0xhc3RMYWJlbD0hMSk7ZS5sYWJlbFJvdGF0aW9uPTA7YS5sYWJlbHMucm90YXRpb249MH07IiI7Yy5wcm90b3R5cGUuZ2V0TWF4TGFiZWxEaW1lbnNpb25zPWZ1bmN0aW9uKGUsYSl7dmFyIHE9e3dpZHRoOjAsCmhlaWdodDowfTthLmZvckVhY2goZnVuY3Rpb24oZil7Zj1lW2ZdO2lmKHguaXNPYmplY3QoZiwhMCkpe3ZhciBkPXguaXNPYmplY3QoZi5sYWJlbCwhMCk/Zi5sYWJlbDp7fTtmPWQuZ2V0QkJveD9kLmdldEJCb3goKS5oZWlnaHQ6MDtkLnRleHRTdHImJiFtKGQudGV4dFB4TGVuZ3RoKSYmKGQudGV4dFB4TGVuZ3RoPWQuZ2V0QkJveCgpLndpZHRoKTtkPW0oZC50ZXh0UHhMZW5ndGgpP01hdGgucm91bmQoZC50ZXh0UHhMZW5ndGgpOjA7cS5oZWlnaHQ9TWF0aC5tYXgoZixxLmhlaWdodCk7cS53aWR0aD1NYXRoLm1heChkLHEud2lkdGgpfX0pO3JldHVybiBxfTtsLmRhdGVGb3JtYXRzLlc9ZnVuY3Rpb24oZSl7ZT1uZXcgdGhpcy5EYXRlKGUpO3ZhciBhPSh0aGlzLmdldCgiRGF5IixlKSs2KSU3LHE9bmV3IHRoaXMuRGF0ZShlLnZhbHVlT2YoKSk7dGhpcy5zZXQoIkRhdGUiLHEsdGhpcy5nZXQoIkRhdGUiLGUpLWErMyk7YT1uZXcgdGhpcy5EYXRlKHRoaXMuZ2V0KCJGdWxsWWVhciIsCnEpLDAsMSk7NCE9PXRoaXMuZ2V0KCJEYXkiLGEpJiYodGhpcy5zZXQoIk1vbnRoIixlLDApLHRoaXMuc2V0KCJEYXRlIixlLDErKDExLXRoaXMuZ2V0KCJEYXkiLGEpKSU3KSk7cmV0dXJuKDErTWF0aC5mbG9vcigocS52YWx1ZU9mKCktYS52YWx1ZU9mKCkpLzYwNDhFNSkpLnRvU3RyaW5nKCl9O2wuZGF0ZUZvcm1hdHMuRT1mdW5jdGlvbihhKXtyZXR1cm4gQSgiJWEiLGEsITApLmNoYXJBdCgwKX07RCh1LCJhZnRlclNldENoYXJ0U2l6ZSIsZnVuY3Rpb24oKXt0aGlzLmF4ZXMuZm9yRWFjaChmdW5jdGlvbihhKXsoYS5ncmlkJiZhLmdyaWQuY29sdW1uc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRBeGlzU2l6ZSgpO2Euc2V0QXhpc1RyYW5zbGF0aW9uKCl9KX0pfSk7RCh6LCJhZnRlckdldExhYmVsUG9zaXRpb24iLGZ1bmN0aW9uKGEpe3ZhciBlPXRoaXMubGFiZWwscT10aGlzLmF4aXMsZj1xLnJldmVyc2VkLGQ9cS5jaGFydCx2PXEub3B0aW9ucy5ncmlkfHx7fSxHPQpxLm9wdGlvbnMubGFiZWxzLEI9Ry5hbGlnbixyPXcuU2lkZVtxLnNpZGVdLGg9YS50aWNrbWFya09mZnNldCxuPXEudGlja1Bvc2l0aW9ucyxGPXRoaXMucG9zLWg7bj1tKG5bYS5pbmRleCsxXSk/blthLmluZGV4KzFdLWg6cS5tYXgraDt2YXIgYj1xLnRpY2tTaXplKCJ0aWNrIik7aD1iP2JbMF06MDtiPWI/YlsxXS8yOjA7aWYoITA9PT12LmVuYWJsZWQpe2lmKCJ0b3AiPT09cil7dj1xLnRvcCtxLm9mZnNldDt2YXIgSz12LWh9ZWxzZSJib3R0b20iPT09cj8oSz1kLmNoYXJ0SGVpZ2h0LXEuYm90dG9tK3Eub2Zmc2V0LHY9SytoKToodj1xLnRvcCtxLmxlbi1xLnRyYW5zbGF0ZShmP246RiksSz1xLnRvcCtxLmxlbi1xLnRyYW5zbGF0ZShmP0Y6bikpOyJyaWdodCI9PT1yPyhyPWQuY2hhcnRXaWR0aC1xLnJpZ2h0K3Eub2Zmc2V0LGY9citoKToibGVmdCI9PT1yPyhmPXEubGVmdCtxLm9mZnNldCxyPWYtaCk6KHI9TWF0aC5yb3VuZChxLmxlZnQrcS50cmFuc2xhdGUoZj9uOkYpKS0KYixmPU1hdGgucm91bmQocS5sZWZ0K3EudHJhbnNsYXRlKGY/RjpuKSktYik7dGhpcy5zbG90V2lkdGg9Zi1yO2EucG9zLng9ImxlZnQiPT09Qj9yOiJyaWdodCI9PT1CP2Y6cisoZi1yKS8yO2EucG9zLnk9Sysodi1LKS8yO2Q9ZC5yZW5kZXJlci5mb250TWV0cmljcyhHLnN0eWxlLmZvbnRTaXplLGUuZWxlbWVudCk7ZT1lLmdldEJCb3goKS5oZWlnaHQ7Ry51c2VIVE1MP2EucG9zLnkrPWQuYistKGUvMik6KGU9TWF0aC5yb3VuZChlL2QuaCksYS5wb3MueSs9KGQuYi0oZC5oLWQuZikpLzIrLSgoZS0xKSpkLmgvMikpO2EucG9zLngrPXEuaG9yaXomJkcueHx8MH19KTt2YXIgYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dGhpcy5heGlzPWF9YS5wcm90b3R5cGUuaXNPdXRlckF4aXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmF4aXMsZT1hLmdyaWQuY29sdW1uSW5kZXgsZj1hLmxpbmtlZFBhcmVudCYmYS5saW5rZWRQYXJlbnQuZ3JpZC5jb2x1bW5zfHxhLmdyaWQuY29sdW1ucyxkPQplP2EubGlua2VkUGFyZW50OmEsdj0tMSxHPTA7YS5jaGFydFthLmNvbGxdLmZvckVhY2goZnVuY3Rpb24oZixyKXtmLnNpZGUhPT1hLnNpZGV8fGYub3B0aW9ucy5pc0ludGVybmFsfHwoRz1yLGY9PT1kJiYodj1yKSl9KTtyZXR1cm4gRz09PXYmJihtKGUpP2YubGVuZ3RoPT09ZTohMCl9O3JldHVybiBhfSgpLHc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fWUuY29tcG9zZT1mdW5jdGlvbihhKXtjLmtlZXBQcm9wcy5wdXNoKCJncmlkIik7RShhLnByb3RvdHlwZSwidW5zcXVpc2giLGUud3JhcFVuc3F1aXNoKTtEKGEsImluaXQiLGUub25Jbml0KTtEKGEsImFmdGVyR2V0T2Zmc2V0IixlLm9uQWZ0ZXJHZXRPZmZzZXQpO0QoYSwiYWZ0ZXJHZXRUaXRsZVBvc2l0aW9uIixlLm9uQWZ0ZXJHZXRUaXRsZVBvc2l0aW9uKTtEKGEsImFmdGVySW5pdCIsZS5vbkFmdGVySW5pdCk7RChhLCJhZnRlclJlbmRlciIsZS5vbkFmdGVyUmVuZGVyKTtEKGEsImFmdGVyU2V0QXhpc1RyYW5zbGF0aW9uIiwKZS5vbkFmdGVyU2V0QXhpc1RyYW5zbGF0aW9uKTtEKGEsImFmdGVyU2V0T3B0aW9ucyIsZS5vbkFmdGVyU2V0T3B0aW9ucyk7RChhLCJhZnRlclNldE9wdGlvbnMiLGUub25BZnRlclNldE9wdGlvbnMyKTtEKGEsImFmdGVyU2V0U2NhbGUiLGUub25BZnRlclNldFNjYWxlKTtEKGEsImFmdGVyVGlja1NpemUiLGUub25BZnRlclRpY2tTaXplKTtEKGEsInRyaW1UaWNrcyIsZS5vblRyaW1UaWNrcyk7RChhLCJkZXN0cm95IixlLm9uRGVzdHJveSl9O2Uub25BZnRlckdldE9mZnNldD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuZ3JpZDsoYSYmYS5jb2x1bW5zfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXthLmdldE9mZnNldCgpfSl9O2Uub25BZnRlckdldFRpdGxlUG9zaXRpb249ZnVuY3Rpb24oYSl7aWYoITA9PT0odGhpcy5vcHRpb25zLmdyaWR8fHt9KS5lbmFibGVkKXt2YXIgcT10aGlzLmF4aXNUaXRsZSxmPXRoaXMuaGVpZ2h0LGQ9dGhpcy5ob3Jpeix2PXRoaXMubGVmdCxHPXRoaXMub2Zmc2V0LApCPXRoaXMub3Bwb3NpdGUscj10aGlzLm9wdGlvbnMudGl0bGUsaD12b2lkIDA9PT1yP3t9OnI7cj10aGlzLnRvcDt2YXIgbj10aGlzLndpZHRoLEY9dGhpcy50aWNrU2l6ZSgpLGI9cSYmcS5nZXRCQm94KCkud2lkdGgsSz1oLnh8fDAsdz1oLnl8fDAsQz1IKGgubWFyZ2luLGQ/NToxMCk7cT10aGlzLmNoYXJ0LnJlbmRlcmVyLmZvbnRNZXRyaWNzKGguc3R5bGUmJmguc3R5bGUuZm9udFNpemUscSkuZjtGPShkP3IrZjp2KSsoZD8xOi0xKSooQj8tMToxKSooRj9GWzBdLzI6MCkrKHRoaXMuc2lkZT09PWUuU2lkZS5ib3R0b20/cTowKTthLnRpdGxlUG9zaXRpb24ueD1kP3YtYi8yLUMrSzpGKyhCP246MCkrRytLO2EudGl0bGVQb3NpdGlvbi55PWQ/Ri0oQj9mOjApKyhCP3E6LXEpLzIrRyt3OnItQyt3fX07ZS5vbkFmdGVySW5pdD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuY2hhcnQsZT10aGlzLm9wdGlvbnMuZ3JpZDtlPXZvaWQgMD09PWU/e306ZTt2YXIgZj10aGlzLnVzZXJPcHRpb25zOwplLmVuYWJsZWQmJihwKHRoaXMpLEUodGhpcywibGFiZWxGb3JtYXR0ZXIiLGZ1bmN0aW9uKGQpe3ZhciBhPXRoaXMuYXhpcyxoPXRoaXMudmFsdWUsbj1hLnRpY2tQb3NpdGlvbnMsZj0oYS5pc0xpbmtlZD9hLmxpbmtlZFBhcmVudDphKS5zZXJpZXNbMF0sZT1oPT09blswXTtuPWg9PT1uW24ubGVuZ3RoLTFdO2Y9ZiYmYihmLm9wdGlvbnMuZGF0YSxmdW5jdGlvbihuKXtyZXR1cm4gblthLmlzWEF4aXM/IngiOiJ5Il09PT1ofSk7dGhpcy5pc0ZpcnN0PWU7dGhpcy5pc0xhc3Q9bjt0aGlzLnBvaW50PWY7cmV0dXJuIGQuY2FsbCh0aGlzKX0pKTtpZihlLmNvbHVtbnMpZm9yKHZhciBkPXRoaXMuZ3JpZC5jb2x1bW5zPVtdLHY9dGhpcy5ncmlkLmNvbHVtbkluZGV4PTA7Kyt2PGUuY29sdW1ucy5sZW5ndGg7KXt2YXIgRz10KGYsZS5jb2x1bW5zW2UuY29sdW1ucy5sZW5ndGgtdi0xXSx7bGlua2VkVG86MCx0eXBlOiJjYXRlZ29yeSJ9KTtkZWxldGUgRy5ncmlkLmNvbHVtbnM7Rz1uZXcgYyh0aGlzLmNoYXJ0LApHKTtHLmdyaWQuaXNDb2x1bW49ITA7Ry5ncmlkLmNvbHVtbkluZGV4PXY7ayhhLmF4ZXMsRyk7ayhhW3RoaXMuY29sbF0sRyk7ZC5wdXNoKEcpfX07ZS5vbkFmdGVyUmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5ncmlkLHE9dGhpcy5vcHRpb25zLGY9dGhpcy5jaGFydC5yZW5kZXJlcjtpZighMD09PShxLmdyaWR8fHt9KS5lbmFibGVkKXt0aGlzLm1heExhYmVsRGltZW5zaW9ucz10aGlzLmdldE1heExhYmVsRGltZW5zaW9ucyh0aGlzLnRpY2tzLHRoaXMudGlja1Bvc2l0aW9ucyk7dGhpcy5yaWdodFdhbGwmJnRoaXMucmlnaHRXYWxsLmRlc3Ryb3koKTtpZih0aGlzLmdyaWQmJnRoaXMuZ3JpZC5pc091dGVyQXhpcygpJiZ0aGlzLmF4aXNMaW5lKXt2YXIgZD1xLmxpbmVXaWR0aDtpZihkKXt2YXIgdj10aGlzLmdldExpbmVQYXRoKGQpLGI9dlswXSxCPXZbMV0scj0oKHRoaXMudGlja1NpemUoInRpY2siKXx8WzFdKVswXS0xKSoodGhpcy5zaWRlPT09ZS5TaWRlLnRvcHx8dGhpcy5zaWRlPT09CmUuU2lkZS5sZWZ0Py0xOjEpOyJNIj09PWJbMF0mJiJMIj09PUJbMF0mJih0aGlzLmhvcml6PyhiWzJdKz1yLEJbMl0rPXIpOihiWzFdKz1yLEJbMV0rPXIpKTt0aGlzLmdyaWQuYXhpc0xpbmVFeHRyYT90aGlzLmdyaWQuYXhpc0xpbmVFeHRyYS5hbmltYXRlKHtkOnZ9KToodGhpcy5ncmlkLmF4aXNMaW5lRXh0cmE9Zi5wYXRoKHYpLmF0dHIoe3pJbmRleDo3fSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtYXhpcy1saW5lIikuYWRkKHRoaXMuYXhpc0dyb3VwKSxmLnN0eWxlZE1vZGV8fHRoaXMuZ3JpZC5heGlzTGluZUV4dHJhLmF0dHIoe3N0cm9rZTpxLmxpbmVDb2xvciwic3Ryb2tlLXdpZHRoIjpkfSkpO3RoaXMuYXhpc0xpbmVbdGhpcy5zaG93QXhpcz8ic2hvdyI6ImhpZGUiXSghMCl9fShhJiZhLmNvbHVtbnN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGgpe2gucmVuZGVyKCl9KX19O2Uub25BZnRlclNldEF4aXNUcmFuc2xhdGlvbj1mdW5jdGlvbigpe3ZhciBhPXRoaXMudGlja1Bvc2l0aW9ucyYmCnRoaXMudGlja1Bvc2l0aW9ucy5pbmZvLGU9dGhpcy5vcHRpb25zLGY9ZS5ncmlkfHx7fSxkPXRoaXMudXNlck9wdGlvbnMubGFiZWxzfHx7fTt0aGlzLmhvcml6JiYoITA9PT1mLmVuYWJsZWQmJnRoaXMuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZCl7ZC5vcHRpb25zLnBvaW50UmFuZ2U9MH0pLGEmJmUuZGF0ZVRpbWVMYWJlbEZvcm1hdHMmJmUubGFiZWxzJiYheShkLmFsaWduKSYmKCExPT09ZS5kYXRlVGltZUxhYmVsRm9ybWF0c1thLnVuaXROYW1lXS5yYW5nZXx8MTxhLmNvdW50KSYmKGUubGFiZWxzLmFsaWduPSJsZWZ0Iix5KGQueCl8fChlLmxhYmVscy54PTMpKSl9O2Uub25BZnRlclNldE9wdGlvbnM9ZnVuY3Rpb24oYSl7dmFyIGU9dGhpcy5vcHRpb25zO2E9YS51c2VyT3B0aW9uczt2YXIgZj1lJiZ4LmlzT2JqZWN0KGUuZ3JpZCwhMCk/ZS5ncmlkOnt9O2lmKCEwPT09Zi5lbmFibGVkKXt2YXIgZD10KCEwLHtjbGFzc05hbWU6ImhpZ2hjaGFydHMtZ3JpZC1heGlzICIrKGEuY2xhc3NOYW1lfHwKIiIpLGRhdGVUaW1lTGFiZWxGb3JtYXRzOntob3VyOntsaXN0OlsiJUg6JU0iLCIlSCJdfSxkYXk6e2xpc3Q6WyIlQSwgJWUuICVCIiwiJWEsICVlLiAlYiIsIiVFIl19LHdlZWs6e2xpc3Q6WyJXZWVrICVXIiwiVyVXIl19LG1vbnRoOntsaXN0OlsiJUIiLCIlYiIsIiVvIl19fSxncmlkOntib3JkZXJXaWR0aDoxfSxsYWJlbHM6e3BhZGRpbmc6MixzdHlsZTp7Zm9udFNpemU6IjEzcHgifX0sbWFyZ2luOjAsdGl0bGU6e3RleHQ6bnVsbCxyZXNlcnZlU3BhY2U6ITEscm90YXRpb246MH0sdW5pdHM6W1sibWlsbGlzZWNvbmQiLFsxLDEwLDEwMF1dLFsic2Vjb25kIixbMSwxMF1dLFsibWludXRlIixbMSw1LDE1XV0sWyJob3VyIixbMSw2XV0sWyJkYXkiLFsxXV0sWyJ3ZWVrIixbMV1dLFsibW9udGgiLFsxXV0sWyJ5ZWFyIixudWxsXV19LGEpOyJ4QXhpcyI9PT10aGlzLmNvbGwmJih5KGEubGlua2VkVG8pJiYheShhLnRpY2tQaXhlbEludGVydmFsKSYmKGQudGlja1BpeGVsSW50ZXJ2YWw9CjM1MCkseShhLnRpY2tQaXhlbEludGVydmFsKXx8IXkoYS5saW5rZWRUbyl8fHkoYS50aWNrUG9zaXRpb25lcil8fHkoYS50aWNrSW50ZXJ2YWwpfHwoZC50aWNrUG9zaXRpb25lcj1mdW5jdGlvbihhLGYpe3ZhciBlPXRoaXMubGlua2VkUGFyZW50JiZ0aGlzLmxpbmtlZFBhcmVudC50aWNrUG9zaXRpb25zJiZ0aGlzLmxpbmtlZFBhcmVudC50aWNrUG9zaXRpb25zLmluZm87aWYoZSl7dmFyIHIsaD1kLnVuaXRzO2ZvcihyPTA7cjxoLmxlbmd0aDtyKyspaWYoaFtyXVswXT09PWUudW5pdE5hbWUpe3ZhciBuPXI7YnJlYWt9aWYoaFtuKzFdKXt2YXIgRj1oW24rMV1bMF07dmFyIHY9KGhbbisxXVsxXXx8WzFdKVswXX1lbHNlInllYXIiPT09ZS51bml0TmFtZSYmKEY9InllYXIiLHY9MTAqZS5jb3VudCk7ZT1JW0ZdO3RoaXMudGlja0ludGVydmFsPWUqdjtyZXR1cm4gdGhpcy5nZXRUaW1lVGlja3Moe3VuaXRSYW5nZTplLGNvdW50OnYsdW5pdE5hbWU6Rn0sYSxmLHRoaXMub3B0aW9ucy5zdGFydE9mV2Vlayl9fSkpOwp0KCEwLHRoaXMub3B0aW9ucyxkKTt0aGlzLmhvcml6JiYoZS5taW5QYWRkaW5nPUgoYS5taW5QYWRkaW5nLDApLGUubWF4UGFkZGluZz1IKGEubWF4UGFkZGluZywwKSk7bShlLmdyaWQuYm9yZGVyV2lkdGgpJiYoZS50aWNrV2lkdGg9ZS5saW5lV2lkdGg9Zi5ib3JkZXJXaWR0aCl9fTtlLm9uQWZ0ZXJTZXRPcHRpb25zMj1mdW5jdGlvbihhKXthPShhPWEudXNlck9wdGlvbnMpJiZhLmdyaWR8fHt9O3ZhciBlPWEuY29sdW1uczthLmVuYWJsZWQmJmUmJnQoITAsdGhpcy5vcHRpb25zLGVbZS5sZW5ndGgtMV0pfTtlLm9uQWZ0ZXJTZXRTY2FsZT1mdW5jdGlvbigpeyh0aGlzLmdyaWQuY29sdW1uc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYSl7YS5zZXRTY2FsZSgpfSl9O2Uub25BZnRlclRpY2tTaXplPWZ1bmN0aW9uKGEpe3ZhciBlPWMuZGVmYXVsdExlZnRBeGlzT3B0aW9ucyxmPXRoaXMuaG9yaXosZD10aGlzLm1heExhYmVsRGltZW5zaW9ucyx2PXRoaXMub3B0aW9ucy5ncmlkO3Y9CnZvaWQgMD09PXY/e306djt2LmVuYWJsZWQmJmQmJihlPTIqTWF0aC5hYnMoZS5sYWJlbHMueCksZj1mP3YuY2VsbEhlaWdodHx8ZStkLmhlaWdodDplK2Qud2lkdGgsZyhhLnRpY2tTaXplKT9hLnRpY2tTaXplWzBdPWY6YS50aWNrU2l6ZT1bZiwwXSl9O2Uub25EZXN0cm95PWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXMuZ3JpZDsoZS5jb2x1bW5zfHxbXSkuZm9yRWFjaChmdW5jdGlvbihmKXtmLmRlc3Ryb3koYS5rZWVwRXZlbnRzKX0pO2UuY29sdW1ucz12b2lkIDB9O2Uub25Jbml0PWZ1bmN0aW9uKGUpe2U9ZS51c2VyT3B0aW9uc3x8e307dmFyIGI9ZS5ncmlkfHx7fTtiLmVuYWJsZWQmJnkoYi5ib3JkZXJDb2xvcikmJihlLnRpY2tDb2xvcj1lLmxpbmVDb2xvcj1iLmJvcmRlckNvbG9yKTt0aGlzLmdyaWR8fCh0aGlzLmdyaWQ9bmV3IGEodGhpcykpfTtlLm9uVHJpbVRpY2tzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcHRpb25zLGU9dGhpcy5jYXRlZ29yaWVzLGY9dGhpcy50aWNrUG9zaXRpb25zLApkPWZbMF0sdj1mW2YubGVuZ3RoLTFdLGI9dGhpcy5saW5rZWRQYXJlbnQmJnRoaXMubGlua2VkUGFyZW50Lm1pbnx8dGhpcy5taW4sQj10aGlzLmxpbmtlZFBhcmVudCYmdGhpcy5saW5rZWRQYXJlbnQubWF4fHx0aGlzLm1heCxyPXRoaXMudGlja0ludGVydmFsOyEwIT09KGEuZ3JpZHx8e30pLmVuYWJsZWR8fGV8fCF0aGlzLmhvcml6JiYhdGhpcy5pc0xpbmtlZHx8KGQ8YiYmZCtyPmImJiFhLnN0YXJ0T25UaWNrJiYoZlswXT1iKSx2PkImJnYtcjxCJiYhYS5lbmRPblRpY2smJihmW2YubGVuZ3RoLTFdPUIpKX07ZS53cmFwVW5zcXVpc2g9ZnVuY3Rpb24oYSl7dmFyIGU9dGhpcy5vcHRpb25zLmdyaWQ7cmV0dXJuITA9PT0odm9pZCAwPT09ZT97fTplKS5lbmFibGVkJiZ0aGlzLmNhdGVnb3JpZXM/dGhpcy50aWNrSW50ZXJ2YWw6YS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9O3JldHVybiBlfSgpOyhmdW5jdGlvbihhKXthPWEuU2lkZXx8CihhLlNpZGU9e30pO2FbYS50b3A9MF09InRvcCI7YVthLnJpZ2h0PTFdPSJyaWdodCI7YVthLmJvdHRvbT0yXT0iYm90dG9tIjthW2EubGVmdD0zXT0ibGVmdCJ9KSh3fHwodz17fSkpO3cuY29tcG9zZShjKTtyZXR1cm4gd30pO0ooYywibW9kdWxlcy9icm9rZW4tYXhpcy5zcmMuanMiLFtjWyJwYXJ0cy9BeGlzLmpzIl0sY1sicGFydHMvR2xvYmFscy5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdLGNbInBhcnRzL1N0YWNraW5nLmpzIl1dLGZ1bmN0aW9uKGMsbCx1LHope3ZhciB4PXUuYWRkRXZlbnQsQT11LmZpbmQsRD11LmZpcmVFdmVudCx5PXUuaXNBcnJheSxrPXUuaXNOdW1iZXIsYj11LnBpY2ssZz1sLlNlcmllcyxtPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhiKXt0aGlzLmhhc0JyZWFrcz0hMTt0aGlzLmF4aXM9Yn1nLmlzSW5CcmVhaz1mdW5jdGlvbihiLGcpe3ZhciBtPWIucmVwZWF0fHxJbmZpbml0eSxwPWIuZnJvbSxhPWIudG8tYi5mcm9tO2c9Zz49cD8oZy1wKSVtOgptLShwLWcpJW07cmV0dXJuIGIuaW5jbHVzaXZlP2c8PWE6ZzxhJiYwIT09Z307Zy5saW4yVmFsPWZ1bmN0aW9uKGIpe3ZhciBtPXRoaXMuYnJva2VuQXhpczttPW0mJm0uYnJlYWtBcnJheTtpZighbSlyZXR1cm4gYjt2YXIgaztmb3Ioaz0wO2s8bS5sZW5ndGg7aysrKXt2YXIgcD1tW2tdO2lmKHAuZnJvbT49YilicmVhaztlbHNlIHAudG88Yj9iKz1wLmxlbjpnLmlzSW5CcmVhayhwLGIpJiYoYis9cC5sZW4pfXJldHVybiBifTtnLnZhbDJMaW49ZnVuY3Rpb24oYil7dmFyIG09dGhpcy5icm9rZW5BeGlzO209bSYmbS5icmVha0FycmF5O2lmKCFtKXJldHVybiBiO3ZhciBrPWIscDtmb3IocD0wO3A8bS5sZW5ndGg7cCsrKXt2YXIgYT1tW3BdO2lmKGEudG88PWIpay09YS5sZW47ZWxzZSBpZihhLmZyb20+PWIpYnJlYWs7ZWxzZSBpZihnLmlzSW5CcmVhayhhLGIpKXtrLT1iLWEuZnJvbTticmVha319cmV0dXJuIGt9O2cucHJvdG90eXBlLmZpbmRCcmVha0F0PWZ1bmN0aW9uKGIsZyl7cmV0dXJuIEEoZywKZnVuY3Rpb24oZyl7cmV0dXJuIGcuZnJvbTxiJiZiPGcudG99KX07Zy5wcm90b3R5cGUuaXNJbkFueUJyZWFrPWZ1bmN0aW9uKG0sayl7dmFyIHQ9dGhpcy5heGlzLHA9dC5vcHRpb25zLmJyZWFrcyxhPXAmJnAubGVuZ3RoLHc7aWYoYSl7Zm9yKDthLS07KWlmKGcuaXNJbkJyZWFrKHBbYV0sbSkpe3ZhciBlPSEwO3d8fCh3PWIocFthXS5zaG93UG9pbnRzLCF0LmlzWEF4aXMpKX12YXIgQz1lJiZrP2UmJiF3OmV9cmV0dXJuIEN9O2cucHJvdG90eXBlLnNldEJyZWFrcz1mdW5jdGlvbihtLGspe3ZhciB0PXRoaXMscD10LmF4aXMsYT15KG0pJiYhIW0ubGVuZ3RoO3AuaXNEaXJ0eT10Lmhhc0JyZWFrcyE9PWE7dC5oYXNCcmVha3M9YTtwLm9wdGlvbnMuYnJlYWtzPXAudXNlck9wdGlvbnMuYnJlYWtzPW07cC5mb3JjZVJlZHJhdz0hMDtwLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuaXNEaXJ0eT0hMH0pO2F8fHAudmFsMmxpbiE9PWcudmFsMkxpbnx8KGRlbGV0ZSBwLnZhbDJsaW4sCmRlbGV0ZSBwLmxpbjJ2YWwpO2EmJihwLnVzZXJPcHRpb25zLm9yZGluYWw9ITEscC5saW4ydmFsPWcubGluMlZhbCxwLnZhbDJsaW49Zy52YWwyTGluLHAuc2V0RXh0cmVtZXM9ZnVuY3Rpb24oYSxlLGIscSxmKXtpZih0Lmhhc0JyZWFrcyl7Zm9yKHZhciBkLHY9dGhpcy5vcHRpb25zLmJyZWFrcztkPXQuZmluZEJyZWFrQXQoYSx2KTspYT1kLnRvO2Zvcig7ZD10LmZpbmRCcmVha0F0KGUsdik7KWU9ZC5mcm9tO2U8YSYmKGU9YSl9Yy5wcm90b3R5cGUuc2V0RXh0cmVtZXMuY2FsbCh0aGlzLGEsZSxiLHEsZil9LHAuc2V0QXhpc1RyYW5zbGF0aW9uPWZ1bmN0aW9uKGEpe2MucHJvdG90eXBlLnNldEF4aXNUcmFuc2xhdGlvbi5jYWxsKHRoaXMsYSk7dC51bml0TGVuZ3RoPW51bGw7aWYodC5oYXNCcmVha3Mpe2E9cC5vcHRpb25zLmJyZWFrc3x8W107dmFyIGU9W10sdz1bXSxxPTAsZixkPXAudXNlck1pbnx8cC5taW4sdj1wLnVzZXJNYXh8fHAubWF4LEc9YihwLnBvaW50UmFuZ2VQYWRkaW5nLAowKSxCO2EuZm9yRWFjaChmdW5jdGlvbihhKXtmPWEucmVwZWF0fHxJbmZpbml0eTtnLmlzSW5CcmVhayhhLGQpJiYoZCs9YS50byVmLWQlZik7Zy5pc0luQnJlYWsoYSx2KSYmKHYtPXYlZi1hLmZyb20lZil9KTthLmZvckVhY2goZnVuY3Rpb24oYSl7aD1hLmZyb207Zm9yKGY9YS5yZXBlYXR8fEluZmluaXR5O2gtZj5kOyloLT1mO2Zvcig7aDxkOyloKz1mO2ZvcihCPWg7Qjx2O0IrPWYpZS5wdXNoKHt2YWx1ZTpCLG1vdmU6ImluIn0pLGUucHVzaCh7dmFsdWU6QisoYS50by1hLmZyb20pLG1vdmU6Im91dCIsc2l6ZTphLmJyZWFrU2l6ZX0pfSk7ZS5zb3J0KGZ1bmN0aW9uKGEsaCl7cmV0dXJuIGEudmFsdWU9PT1oLnZhbHVlPygiaW4iPT09YS5tb3ZlPzA6MSktKCJpbiI9PT1oLm1vdmU/MDoxKTphLnZhbHVlLWgudmFsdWV9KTt2YXIgcj0wO3ZhciBoPWQ7ZS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3IrPSJpbiI9PT1hLm1vdmU/MTotMTsxPT09ciYmImluIj09PWEubW92ZSYmKGg9YS52YWx1ZSk7CjA9PT1yJiYody5wdXNoKHtmcm9tOmgsdG86YS52YWx1ZSxsZW46YS52YWx1ZS1oLShhLnNpemV8fDApfSkscSs9YS52YWx1ZS1oLShhLnNpemV8fDApKX0pO3AuYnJlYWtBcnJheT10LmJyZWFrQXJyYXk9dzt0LnVuaXRMZW5ndGg9di1kLXErRztEKHAsImFmdGVyQnJlYWtzIik7cC5zdGF0aWNTY2FsZT9wLnRyYW5zQT1wLnN0YXRpY1NjYWxlOnQudW5pdExlbmd0aCYmKHAudHJhbnNBKj0odi1wLm1pbitHKS90LnVuaXRMZW5ndGgpO0cmJihwLm1pblBpeGVsUGFkZGluZz1wLnRyYW5zQSpwLm1pblBvaW50T2Zmc2V0KTtwLm1pbj1kO3AubWF4PXZ9fSk7YihrLCEwKSYmcC5jaGFydC5yZWRyYXcoKX07cmV0dXJuIGd9KCk7bD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9dC5jb21wb3NlPWZ1bmN0aW9uKHQsYyl7dC5rZWVwUHJvcHMucHVzaCgiYnJva2VuQXhpcyIpO3ZhciBsPWcucHJvdG90eXBlO2wuZHJhd0JyZWFrcz1mdW5jdGlvbihnLGEpe3ZhciB3PXRoaXMsZT13LnBvaW50cywKbSxxLGYsZDtpZihnJiZnLmJyb2tlbkF4aXMmJmcuYnJva2VuQXhpcy5oYXNCcmVha3Mpe3ZhciB2PWcuYnJva2VuQXhpczthLmZvckVhY2goZnVuY3Rpb24oYSl7bT12JiZ2LmJyZWFrQXJyYXl8fFtdO3E9Zy5pc1hBeGlzP2cubWluOmIody5vcHRpb25zLnRocmVzaG9sZCxnLm1pbik7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Q9YihlWyJzdGFjayIrYS50b1VwcGVyQ2FzZSgpXSxlW2FdKTttLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoayhxKSYmayhkKSl7Zj0hMTtpZihxPGEuZnJvbSYmZD5hLnRvfHxxPmEuZnJvbSYmZDxhLmZyb20pZj0icG9pbnRCcmVhayI7ZWxzZSBpZihxPGEuZnJvbSYmZD5hLmZyb20mJmQ8YS50b3x8cT5hLmZyb20mJmQ+YS50byYmZDxhLmZyb20pZj0icG9pbnRJbkJyZWFrIjtmJiZEKGcsZix7cG9pbnQ6ZSxicms6YX0pfX0pfSl9KX19O2wuZ2FwcGVkUGF0aD1mdW5jdGlvbigpe3ZhciBiPXRoaXMuY3VycmVudERhdGFHcm91cGluZyxhPWImJmIuZ2FwU2l6ZTsKYj10aGlzLm9wdGlvbnMuZ2FwU2l6ZTt2YXIgdz10aGlzLnBvaW50cy5zbGljZSgpLGU9dy5sZW5ndGgtMSxnPXRoaXMueUF4aXMscTtpZihiJiYwPGUpZm9yKCJ2YWx1ZSIhPT10aGlzLm9wdGlvbnMuZ2FwVW5pdCYmKGIqPXRoaXMuYmFzZVBvaW50UmFuZ2UpLGEmJmE+YiYmYT49dGhpcy5iYXNlUG9pbnRSYW5nZSYmKGI9YSkscT12b2lkIDA7ZS0tOylxJiYhMSE9PXEudmlzaWJsZXx8KHE9d1tlKzFdKSxhPXdbZV0sITEhPT1xLnZpc2libGUmJiExIT09YS52aXNpYmxlJiYocS54LWEueD5iJiYocT0oYS54K3EueCkvMix3LnNwbGljZShlKzEsMCx7aXNOdWxsOiEwLHg6cX0pLGcuc3RhY2tpbmcmJnRoaXMub3B0aW9ucy5zdGFja2luZyYmKHE9Zy5zdGFja2luZy5zdGFja3NbdGhpcy5zdGFja0tleV1bcV09bmV3IHooZyxnLm9wdGlvbnMuc3RhY2tMYWJlbHMsITEscSx0aGlzLnN0YWNrKSxxLnRvdGFsPTApKSxxPWEpO3JldHVybiB0aGlzLmdldEdyYXBoUGF0aCh3KX07eCh0LCJpbml0IiwKZnVuY3Rpb24oKXt0aGlzLmJyb2tlbkF4aXN8fCh0aGlzLmJyb2tlbkF4aXM9bmV3IG0odGhpcykpfSk7eCh0LCJhZnRlckluaXQiLGZ1bmN0aW9uKCl7InVuZGVmaW5lZCIhPT10eXBlb2YgdGhpcy5icm9rZW5BeGlzJiZ0aGlzLmJyb2tlbkF4aXMuc2V0QnJlYWtzKHRoaXMub3B0aW9ucy5icmVha3MsITEpfSk7eCh0LCJhZnRlclNldFRpY2tQb3NpdGlvbnMiLGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5icm9rZW5BeGlzO2lmKGImJmIuaGFzQnJlYWtzKXt2YXIgYT10aGlzLnRpY2tQb3NpdGlvbnMsZz10aGlzLnRpY2tQb3NpdGlvbnMuaW5mbyxlPVtdLG07Zm9yKG09MDttPGEubGVuZ3RoO20rKyliLmlzSW5BbnlCcmVhayhhW21dKXx8ZS5wdXNoKGFbbV0pO3RoaXMudGlja1Bvc2l0aW9ucz1lO3RoaXMudGlja1Bvc2l0aW9ucy5pbmZvPWd9fSk7eCh0LCJhZnRlclNldE9wdGlvbnMiLGZ1bmN0aW9uKCl7dGhpcy5icm9rZW5BeGlzJiZ0aGlzLmJyb2tlbkF4aXMuaGFzQnJlYWtzJiYodGhpcy5vcHRpb25zLm9yZGluYWw9CiExKX0pO3goYywiYWZ0ZXJHZW5lcmF0ZVBvaW50cyIsZnVuY3Rpb24oKXt2YXIgYj10aGlzLm9wdGlvbnMuY29ubmVjdE51bGxzLGE9dGhpcy5wb2ludHMsZz10aGlzLnhBeGlzLGU9dGhpcy55QXhpcztpZih0aGlzLmlzRGlydHkpZm9yKHZhciBtPWEubGVuZ3RoO20tLTspe3ZhciBxPWFbbV0sZj0hKG51bGw9PT1xLnkmJiExPT09YikmJihnJiZnLmJyb2tlbkF4aXMmJmcuYnJva2VuQXhpcy5pc0luQW55QnJlYWsocS54LCEwKXx8ZSYmZS5icm9rZW5BeGlzJiZlLmJyb2tlbkF4aXMuaXNJbkFueUJyZWFrKHEueSwhMCkpO3EudmlzaWJsZT1mPyExOiExIT09cS5vcHRpb25zLnZpc2libGV9fSk7eChjLCJhZnRlclJlbmRlciIsZnVuY3Rpb24oKXt0aGlzLmRyYXdCcmVha3ModGhpcy54QXhpcyxbIngiXSk7dGhpcy5kcmF3QnJlYWtzKHRoaXMueUF4aXMsYih0aGlzLnBvaW50QXJyYXlNYXAsWyJ5Il0pKX0pfTtyZXR1cm4gdH0oKTtsLmNvbXBvc2UoYyxnKTtyZXR1cm4gbH0pO0ooYywKInBhcnRzLWdhbnR0L1RyZWVHcmlkQXhpcy5qcyIsW2NbInBhcnRzL0F4aXMuanMiXSxjWyJwYXJ0cy9UaWNrLmpzIl0sY1sicGFydHMtZ2FudHQvVHJlZS5qcyJdLGNbInBhcnRzLWdhbnR0L1RyZWVHcmlkVGljay5qcyJdLGNbIm1peGlucy90cmVlLXNlcmllcy5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjLGwsdSx6LHgsQSl7dmFyIEQ9QS5hZGRFdmVudCx5PUEuZmluZCxrPUEuZmlyZUV2ZW50LGI9QS5pc051bWJlcixnPUEuaXNPYmplY3QsbT1BLmlzU3RyaW5nLHQ9QS5tZXJnZSxIPUEucGljayxJPUEud3JhcCxFOyhmdW5jdGlvbihwKXtmdW5jdGlvbiBhKGEsZCl7dmFyIGg9YS5jb2xsYXBzZVN0YXJ0fHwwO2E9YS5jb2xsYXBzZUVuZHx8MDthPj1kJiYoaC09LjUpO3JldHVybntmcm9tOmgsdG86YSxzaG93UG9pbnRzOiExfX1mdW5jdGlvbiB3KGEsZCxoKXt2YXIgbj1bXSxmPVtdLGU9e30sYj17fSxyPS0xLHY9ImJvb2xlYW4iPT09dHlwZW9mIGQ/CmQ6ITE7YT11LmdldFRyZWUoYSx7YWZ0ZXI6ZnVuY3Rpb24oYSl7YT1iW2EucG9zXTt2YXIgaD0wLG49MDthLmNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24oYSl7bis9KGEuZGVzY2VuZGFudHN8fDApKzE7aD1NYXRoLm1heCgoYS5oZWlnaHR8fDApKzEsaCl9KTthLmRlc2NlbmRhbnRzPW47YS5oZWlnaHQ9aDthLmNvbGxhcHNlZCYmZi5wdXNoKGEpfSxiZWZvcmU6ZnVuY3Rpb24oYSl7dmFyIGg9ZyhhLmRhdGEsITApP2EuZGF0YTp7fSxkPW0oaC5uYW1lKT9oLm5hbWU6IiIsZj1lW2EucGFyZW50XTtmPWcoZiwhMCk/YltmLnBvc106bnVsbDt2YXIgRj1mdW5jdGlvbihhKXtyZXR1cm4gYS5uYW1lPT09ZH0sQjt2JiZnKGYsITApJiYoQj15KGYuY2hpbGRyZW4sRikpPyhGPUIucG9zLEIubm9kZXMucHVzaChhKSk6Rj1yKys7YltGXXx8KGJbRl09Qj17ZGVwdGg6Zj9mLmRlcHRoKzE6MCxuYW1lOmQsbm9kZXM6W2FdLGNoaWxkcmVuOltdLHBvczpGfSwtMSE9PUYmJm4ucHVzaChkKSxnKGYsCiEwKSYmZi5jaGlsZHJlbi5wdXNoKEIpKTttKGEuaWQpJiYoZVthLmlkXT1hKTtCJiYhMD09PWguY29sbGFwc2VkJiYoQi5jb2xsYXBzZWQ9ITApO2EucG9zPUZ9fSk7Yj1mdW5jdGlvbihhLGgpe3ZhciBuPWZ1bmN0aW9uKGEsZCxmKXt2YXIgZT1kKygtMT09PWQ/MDpoLTEpLGI9KGUtZCkvMixyPWQrYjthLm5vZGVzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGg9YS5kYXRhO2coaCwhMCkmJihoLnk9ZCsoaC5zZXJpZXNJbmRleHx8MCksZGVsZXRlIGguc2VyaWVzSW5kZXgpO2EucG9zPXJ9KTtmW3JdPWE7YS5wb3M9cjthLnRpY2ttYXJrT2Zmc2V0PWIrLjU7YS5jb2xsYXBzZVN0YXJ0PWUrLjU7YS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uKGEpe24oYSxlKzEsZik7ZT0oYS5jb2xsYXBzZUVuZHx8MCktLjV9KTthLmNvbGxhcHNlRW5kPWUrLjU7cmV0dXJuIGZ9O3JldHVybiBuKGFbIi0xIl0sLTEse30pfShiLGgpO3JldHVybntjYXRlZ29yaWVzOm4sbWFwT2ZJZFRvTm9kZTplLAptYXBPZlBvc1RvR3JpZE5vZGU6Yixjb2xsYXBzZWROb2RlczpmLHRyZWU6YX19ZnVuY3Rpb24gZShhKXthLnRhcmdldC5heGVzLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4idHJlZWdyaWQiPT09YS5vcHRpb25zLnR5cGV9KS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3ZhciBoPWQub3B0aW9uc3x8e30sbj1oLmxhYmVscyxmPWgudW5pcXVlTmFtZXMsZT0wO2lmKCFkLnRyZWVHcmlkLm1hcE9mUG9zVG9HcmlkTm9kZXx8ZC5zZXJpZXMuc29tZShmdW5jdGlvbihhKXtyZXR1cm4hYS5oYXNSZW5kZXJlZHx8YS5pc0RpcnR5RGF0YXx8YS5pc0RpcnR5fSkpaD1kLnNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSxoKXtoLnZpc2libGUmJigoaC5vcHRpb25zLmRhdGF8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGgpe2coaCwhMCkmJihoLnNlcmllc0luZGV4PWUsYS5wdXNoKGgpKX0pLCEwPT09ZiYmZSsrKTtyZXR1cm4gYX0sW10pLGg9dyhoLGZ8fCExLCEwPT09Zj9lOjEpLGQuY2F0ZWdvcmllcz1oLmNhdGVnb3JpZXMsCmQudHJlZUdyaWQubWFwT2ZQb3NUb0dyaWROb2RlPWgubWFwT2ZQb3NUb0dyaWROb2RlLGQuaGFzTmFtZXM9ITAsZC50cmVlR3JpZC50cmVlPWgudHJlZSxkLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBoPShhLm9wdGlvbnMuZGF0YXx8W10pLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gZyhhLCEwKT90KGEpOmF9KTthLnZpc2libGUmJmEuc2V0RGF0YShoLCExKX0pLGQudHJlZUdyaWQubWFwT3B0aW9uc1RvTGV2ZWw9eC5nZXRMZXZlbE9wdGlvbnMoe2RlZmF1bHRzOm4sZnJvbToxLGxldmVsczpuJiZuLmxldmVscyx0bzpkLnRyZWVHcmlkLnRyZWUmJmQudHJlZUdyaWQudHJlZS5oZWlnaHR9KSwiYmVmb3JlUmVuZGVyIj09PWEudHlwZSYmKGQudHJlZUdyaWQuY29sbGFwc2VkTm9kZXM9aC5jb2xsYXBzZWROb2Rlcyl9KX1mdW5jdGlvbiBjKGEsZCl7dmFyIGg9dGhpcy50cmVlR3JpZC5tYXBPcHRpb25zVG9MZXZlbHx8e30sbj10aGlzLnRpY2tzLGY9bltkXSxlO2lmKCJ0cmVlZ3JpZCI9PT0KdGhpcy5vcHRpb25zLnR5cGUmJnRoaXMudHJlZUdyaWQubWFwT2ZQb3NUb0dyaWROb2RlKXt2YXIgYj10aGlzLnRyZWVHcmlkLm1hcE9mUG9zVG9HcmlkTm9kZVtkXTsoaD1oW2IuZGVwdGhdKSYmKGU9e2xhYmVsczpofSk7Zj8oZi5wYXJhbWV0ZXJzLmNhdGVnb3J5PWIubmFtZSxmLm9wdGlvbnM9ZSxmLmFkZExhYmVsKCkpOm5bZF09bmV3IGwodGhpcyxkLHZvaWQgMCx2b2lkIDAse2NhdGVnb3J5OmIubmFtZSx0aWNrbWFya09mZnNldDpiLnRpY2ttYXJrT2Zmc2V0LG9wdGlvbnM6ZX0pfWVsc2UgYS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9ZnVuY3Rpb24gcShhKXt2YXIgZD10aGlzLm9wdGlvbnM7ZD0oZD1kJiZkLmxhYmVscykmJmIoZC5pbmRlbnRhdGlvbik/ZC5pbmRlbnRhdGlvbjowO3ZhciBoPWEuYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpO2lmKCJ0cmVlZ3JpZCI9PT10aGlzLm9wdGlvbnMudHlwZSYmCnRoaXMudHJlZUdyaWQubWFwT2ZQb3NUb0dyaWROb2RlKXt2YXIgbj10aGlzLnRyZWVHcmlkLm1hcE9mUG9zVG9HcmlkTm9kZVstMV0uaGVpZ2h0fHwwO2gud2lkdGgrPWQqKG4tMSl9cmV0dXJuIGh9ZnVuY3Rpb24gZihhLGQsaCl7dmFyIG49dGhpcyxmPSJ0cmVlZ3JpZCI9PT1oLnR5cGU7bi50cmVlR3JpZHx8KG4udHJlZUdyaWQ9bmV3IEcobikpO2YmJihEKGQsImJlZm9yZVJlbmRlciIsZSksRChkLCJiZWZvcmVSZWRyYXciLGUpLEQoZCwiYWRkU2VyaWVzIixmdW5jdGlvbihhKXthLm9wdGlvbnMuZGF0YSYmKGE9dyhhLm9wdGlvbnMuZGF0YSxoLnVuaXF1ZU5hbWVzfHwhMSwxKSxuLnRyZWVHcmlkLmNvbGxhcHNlZE5vZGVzPShuLnRyZWVHcmlkLmNvbGxhcHNlZE5vZGVzfHxbXSkuY29uY2F0KGEuY29sbGFwc2VkTm9kZXMpKX0pLEQobiwiZm91bmRFeHRyZW1lcyIsZnVuY3Rpb24oKXtuLnRyZWVHcmlkLmNvbGxhcHNlZE5vZGVzJiZuLnRyZWVHcmlkLmNvbGxhcHNlZE5vZGVzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGg9Cm4udHJlZUdyaWQuY29sbGFwc2UoYSk7bi5icm9rZW5BeGlzJiYobi5icm9rZW5BeGlzLnNldEJyZWFrcyhoLCExKSxuLnRyZWVHcmlkLmNvbGxhcHNlZE5vZGVzJiYobi50cmVlR3JpZC5jb2xsYXBzZWROb2Rlcz1uLnRyZWVHcmlkLmNvbGxhcHNlZE5vZGVzLmZpbHRlcihmdW5jdGlvbihoKXtyZXR1cm4gYS5jb2xsYXBzZVN0YXJ0IT09aC5jb2xsYXBzZVN0YXJ0fHxhLmNvbGxhcHNlRW5kIT09aC5jb2xsYXBzZUVuZH0pKSl9KX0pLEQobiwiYWZ0ZXJCcmVha3MiLGZ1bmN0aW9uKCl7dmFyIGE7InlBeGlzIj09PW4uY29sbCYmIW4uc3RhdGljU2NhbGUmJihudWxsPT09KGE9bi5jaGFydC5vcHRpb25zLmNoYXJ0KXx8dm9pZCAwPT09YT8wOmEuaGVpZ2h0KSYmKG4uaXNEaXJ0eT0hMCl9KSxoPXQoe2dyaWQ6e2VuYWJsZWQ6ITB9LGxhYmVsczp7YWxpZ246ImxlZnQiLGxldmVsczpbe2xldmVsOnZvaWQgMH0se2xldmVsOjEsc3R5bGU6e2ZvbnRXZWlnaHQ6ImJvbGQifX1dLHN5bWJvbDp7dHlwZToidHJpYW5nbGUiLAp4Oi01LHk6LTUsaGVpZ2h0OjEwLHdpZHRoOjEwLHBhZGRpbmc6NX19LHVuaXF1ZU5hbWVzOiExfSxoLHtyZXZlcnNlZDohMCxncmlkOntjb2x1bW5zOnZvaWQgMH19KSk7YS5hcHBseShuLFtkLGhdKTtmJiYobi5oYXNOYW1lcz0hMCxuLm9wdGlvbnMuc2hvd0xhc3RMYWJlbD0hMCl9ZnVuY3Rpb24gZChhKXt2YXIgZD10aGlzLm9wdGlvbnM7InRyZWVncmlkIj09PWQudHlwZT8odGhpcy5taW49SCh0aGlzLnVzZXJNaW4sZC5taW4sdGhpcy5kYXRhTWluKSx0aGlzLm1heD1IKHRoaXMudXNlck1heCxkLm1heCx0aGlzLmRhdGFNYXgpLGsodGhpcywiZm91bmRFeHRyZW1lcyIpLHRoaXMuc2V0QXhpc1RyYW5zbGF0aW9uKCEwKSx0aGlzLnRpY2ttYXJrT2Zmc2V0PS41LHRoaXMudGlja0ludGVydmFsPTEsdGhpcy50aWNrUG9zaXRpb25zPXRoaXMudHJlZUdyaWQubWFwT2ZQb3NUb0dyaWROb2RlP3RoaXMudHJlZUdyaWQuZ2V0VGlja1Bvc2l0aW9ucygpOltdKTphLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLAoxKSl9dmFyIHY9ITE7cC5jb21wb3NlPWZ1bmN0aW9uKGEpe3Z8fChJKGEucHJvdG90eXBlLCJnZW5lcmF0ZVRpY2siLGMpLEkoYS5wcm90b3R5cGUsImdldE1heExhYmVsRGltZW5zaW9ucyIscSksSShhLnByb3RvdHlwZSwiaW5pdCIsZiksSShhLnByb3RvdHlwZSwic2V0VGlja0ludGVydmFsIixkKSx6LmNvbXBvc2UobCksdj0hMCl9O3ZhciBHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZChhKXt0aGlzLmF4aXM9YX1kLnByb3RvdHlwZS5jb2xsYXBzZT1mdW5jdGlvbihkKXt2YXIgaD10aGlzLmF4aXMsbj1oLm9wdGlvbnMuYnJlYWtzfHxbXTtkPWEoZCxoLm1heCk7bi5wdXNoKGQpO3JldHVybiBufTtkLnByb3RvdHlwZS5leHBhbmQ9ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcy5heGlzLG49aC5vcHRpb25zLmJyZWFrc3x8W10sZj1hKGQsaC5tYXgpO3JldHVybiBuLnJlZHVjZShmdW5jdGlvbihhLGQpe2QudG89PT1mLnRvJiZkLmZyb209PT1mLmZyb218fGEucHVzaChkKTtyZXR1cm4gYX0sCltdKX07ZC5wcm90b3R5cGUuZ2V0VGlja1Bvc2l0aW9ucz1mdW5jdGlvbigpe3ZhciBhPXRoaXMuYXhpcztyZXR1cm4gT2JqZWN0LmtleXMoYS50cmVlR3JpZC5tYXBPZlBvc1RvR3JpZE5vZGV8fHt9KS5yZWR1Y2UoZnVuY3Rpb24oZCxuKXtuPStuOyEoYS5taW48PW4mJmEubWF4Pj1uKXx8YS5icm9rZW5BeGlzJiZhLmJyb2tlbkF4aXMuaXNJbkFueUJyZWFrKG4pfHxkLnB1c2gobik7cmV0dXJuIGR9LFtdKX07ZC5wcm90b3R5cGUuaXNDb2xsYXBzZWQ9ZnVuY3Rpb24oZCl7dmFyIGg9dGhpcy5heGlzLG49aC5vcHRpb25zLmJyZWFrc3x8W10sZj1hKGQsaC5tYXgpO3JldHVybiBuLnNvbWUoZnVuY3Rpb24oYSl7cmV0dXJuIGEuZnJvbT09PWYuZnJvbSYmYS50bz09PWYudG99KX07ZC5wcm90b3R5cGUudG9nZ2xlQ29sbGFwc2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXNDb2xsYXBzZWQoYSk/dGhpcy5leHBhbmQoYSk6dGhpcy5jb2xsYXBzZShhKX07cmV0dXJuIGR9KCk7cC5BZGRpdGlvbnM9Ckd9KShFfHwoRT17fSkpO2MucHJvdG90eXBlLnV0aWxzPXtnZXROb2RlOnUuZ2V0Tm9kZX07RS5jb21wb3NlKGMpO3JldHVybiBFfSk7SihjLCJwYXJ0cy1nYW50dC9DdXJyZW50RGF0ZUluZGljYXRvci5qcyIsW2NbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJwYXJ0cy9PcHRpb25zLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl0sY1sicGFydHMvUGxvdExpbmVPckJhbmQuanMiXV0sZnVuY3Rpb24oYyxsLHUseil7dmFyIHg9bC5kYXRlRm9ybWF0O2w9dS5hZGRFdmVudDt2YXIgQT11Lm1lcmdlO3U9dS53cmFwO3ZhciBEPXtjdXJyZW50RGF0ZUluZGljYXRvcjohMCxjb2xvcjoiI2NjZDZlYiIsd2lkdGg6MixsYWJlbDp7Zm9ybWF0OiIlYSwgJWIgJWQgJVksICVIOiVNIixmb3JtYXR0ZXI6ZnVuY3Rpb24oYyxrKXtyZXR1cm4geChrLGMpfSxyb3RhdGlvbjowLHN0eWxlOntmb250U2l6ZToiMTBweCJ9fX07bChjLkF4aXMsImFmdGVyU2V0T3B0aW9ucyIsZnVuY3Rpb24oKXt2YXIgYz0KdGhpcy5vcHRpb25zLGs9Yy5jdXJyZW50RGF0ZUluZGljYXRvcjtrJiYoaz0ib2JqZWN0Ij09PXR5cGVvZiBrP0EoRCxrKTpBKEQpLGsudmFsdWU9bmV3IERhdGUsYy5wbG90TGluZXN8fChjLnBsb3RMaW5lcz1bXSksYy5wbG90TGluZXMucHVzaChrKSl9KTtsKHosInJlbmRlciIsZnVuY3Rpb24oKXt0aGlzLmxhYmVsJiZ0aGlzLmxhYmVsLmF0dHIoe3RleHQ6dGhpcy5nZXRMYWJlbFRleHQodGhpcy5vcHRpb25zLmxhYmVsKX0pfSk7dSh6LnByb3RvdHlwZSwiZ2V0TGFiZWxUZXh0IixmdW5jdGlvbihjLGspe3ZhciBiPXRoaXMub3B0aW9ucztyZXR1cm4gYi5jdXJyZW50RGF0ZUluZGljYXRvciYmYi5sYWJlbCYmImZ1bmN0aW9uIj09PXR5cGVvZiBiLmxhYmVsLmZvcm1hdHRlcj8oYi52YWx1ZT1uZXcgRGF0ZSxiLmxhYmVsLmZvcm1hdHRlci5jYWxsKHRoaXMsYi52YWx1ZSxiLmxhYmVsLmZvcm1hdCkpOmMuY2FsbCh0aGlzLGspfSl9KTtKKGMsIm1vZHVsZXMvc3RhdGljLXNjYWxlLnNyYy5qcyIsCltjWyJwYXJ0cy9HbG9iYWxzLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMsbCl7dmFyIHU9bC5hZGRFdmVudCx6PWwuZGVmaW5lZCx4PWwuaXNOdW1iZXIsQT1sLnBpY2s7bD1jLkNoYXJ0O3UoYy5BeGlzLCJhZnRlclNldE9wdGlvbnMiLGZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5jaGFydC5vcHRpb25zJiZ0aGlzLmNoYXJ0Lm9wdGlvbnMuY2hhcnQ7IXRoaXMuaG9yaXomJngodGhpcy5vcHRpb25zLnN0YXRpY1NjYWxlKSYmKCFjLmhlaWdodHx8Yy5zY3JvbGxhYmxlUGxvdEFyZWEmJmMuc2Nyb2xsYWJsZVBsb3RBcmVhLm1pbkhlaWdodCkmJih0aGlzLnN0YXRpY1NjYWxlPXRoaXMub3B0aW9ucy5zdGF0aWNTY2FsZSl9KTtsLnByb3RvdHlwZS5hZGp1c3RIZWlnaHQ9ZnVuY3Rpb24oKXsiYWRqdXN0SGVpZ2h0IiE9PXRoaXMucmVkcmF3VHJpZ2dlciYmKCh0aGlzLmF4ZXN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBsPWMuY2hhcnQsaz0hIWwuaW5pdGlhdGVkU2NhbGUmJgpsLm9wdGlvbnMuYW5pbWF0aW9uLGI9Yy5vcHRpb25zLnN0YXRpY1NjYWxlO2lmKGMuc3RhdGljU2NhbGUmJnooYy5taW4pKXt2YXIgZz1BKGMuYnJva2VuQXhpcyYmYy5icm9rZW5BeGlzLnVuaXRMZW5ndGgsYy5tYXgrYy50aWNrSW50ZXJ2YWwtYy5taW4pKmI7Zz1NYXRoLm1heChnLGIpO2I9Zy1sLnBsb3RIZWlnaHQ7MTw9TWF0aC5hYnMoYikmJihsLnBsb3RIZWlnaHQ9ZyxsLnJlZHJhd1RyaWdnZXI9ImFkanVzdEhlaWdodCIsbC5zZXRTaXplKHZvaWQgMCxsLmNoYXJ0SGVpZ2h0K2IsaykpO2Muc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYil7KGI9Yi5zaGFyZWRDbGlwS2V5JiZsW2Iuc2hhcmVkQ2xpcEtleV0pJiZiLmF0dHIoe2hlaWdodDpsLnBsb3RIZWlnaHR9KX0pfX0pLHRoaXMuaW5pdGlhdGVkU2NhbGU9ITApO3RoaXMucmVkcmF3VHJpZ2dlcj1udWxsfTt1KGwsInJlbmRlciIsbC5wcm90b3R5cGUuYWRqdXN0SGVpZ2h0KX0pO0ooYywicGFydHMtZ2FudHQvUGF0aGZpbmRlckFsZ29yaXRobXMuanMiLApbY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGwoYixtLGMpe2M9Y3x8MDt2YXIgZz1iLmxlbmd0aC0xO20tPTFlLTc7Zm9yKHZhciBrLHQ7Yzw9ZzspaWYoaz1nK2M+PjEsdD1tLWJba10ueE1pbiwwPHQpYz1rKzE7ZWxzZSBpZigwPnQpZz1rLTE7ZWxzZSByZXR1cm4gaztyZXR1cm4gMDxjP2MtMTowfWZ1bmN0aW9uIHUoYixtKXtmb3IodmFyIGc9bChiLG0ueCsxKSsxO2ctLTspe3ZhciBjO2lmKGM9YltnXS54TWF4Pj1tLngpYz1iW2ddLGM9bS54PD1jLnhNYXgmJm0ueD49Yy54TWluJiZtLnk8PWMueU1heCYmbS55Pj1jLnlNaW47aWYoYylyZXR1cm4gZ31yZXR1cm4tMX1mdW5jdGlvbiB6KGIpe3ZhciBnPVtdO2lmKGIubGVuZ3RoKXtnLnB1c2goWyJNIixiWzBdLnN0YXJ0LngsYlswXS5zdGFydC55XSk7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDsrK2MpZy5wdXNoKFsiTCIsYltjXS5lbmQueCxiW2NdLmVuZC55XSl9cmV0dXJuIGd9ZnVuY3Rpb24geChiLApjKXtiLnlNaW49ayhiLnlNaW4sYy55TWluKTtiLnlNYXg9eShiLnlNYXgsYy55TWF4KTtiLnhNaW49ayhiLnhNaW4sYy54TWluKTtiLnhNYXg9eShiLnhNYXgsYy54TWF4KX12YXIgQT1jLmV4dGVuZCxEPWMucGljayx5PU1hdGgubWluLGs9TWF0aC5tYXgsYj1NYXRoLmFicztyZXR1cm57c3RyYWlnaHQ6ZnVuY3Rpb24oYixjKXtyZXR1cm57cGF0aDpbWyJNIixiLngsYi55XSxbIkwiLGMueCxjLnldXSxvYnN0YWNsZXM6W3tzdGFydDpiLGVuZDpjfV19fSxzaW1wbGVDb25uZWN0OkEoZnVuY3Rpb24oZyxjLGspe2Z1bmN0aW9uIG0oYSxmLGQsYixlKXthPXt4OmEueCx5OmEueX07YVtmXT1kW2J8fGZdKyhlfHwwKTtyZXR1cm4gYX1mdW5jdGlvbiBsKGEsZixkKXt2YXIgZT1iKGZbZF0tYVtkKyJNaW4iXSk+YihmW2RdLWFbZCsiTWF4Il0pO3JldHVybiBtKGYsZCxhLGQrKGU/Ik1heCI6Ik1pbiIpLGU/MTotMSl9dmFyIHQ9W10scD1EKGsuc3RhcnREaXJlY3Rpb25YLGIoYy54LWcueCk+CmIoYy55LWcueSkpPyJ4IjoieSIsYT1rLmNoYXJ0T2JzdGFjbGVzLHc9dShhLGcpO2s9dShhLGMpO2lmKC0xPGspe3ZhciBlPWFba107az1sKGUsYyxwKTtlPXtzdGFydDprLGVuZDpjfTt2YXIgQz1rfWVsc2UgQz1jOy0xPHcmJihhPWFbd10saz1sKGEsZyxwKSx0LnB1c2goe3N0YXJ0OmcsZW5kOmt9KSxrW3BdPj1nW3BdPT09a1twXT49Q1twXSYmKHA9InkiPT09cD8ieCI6InkiLGM9Z1twXTxjW3BdLHQucHVzaCh7c3RhcnQ6ayxlbmQ6bShrLHAsYSxwKyhjPyJNYXgiOiJNaW4iKSxjPzE6LTEpfSkscD0ieSI9PT1wPyJ4IjoieSIpKTtnPXQubGVuZ3RoP3RbdC5sZW5ndGgtMV0uZW5kOmc7az1tKGcscCxDKTt0LnB1c2goe3N0YXJ0OmcsZW5kOmt9KTtwPW0oaywieSI9PT1wPyJ4IjoieSIsQyk7dC5wdXNoKHtzdGFydDprLGVuZDpwfSk7dC5wdXNoKGUpO3JldHVybntwYXRoOnoodCksb2JzdGFjbGVzOnR9fSx7cmVxdWlyZXNPYnN0YWNsZXM6ITB9KSxmYXN0QXZvaWQ6QShmdW5jdGlvbihnLApjLHQpe2Z1bmN0aW9uIG0oYSxkLGgpe3ZhciBuLGY9YS54PGQueD8xOi0xO2lmKGEueDxkLngpe3ZhciBiPWE7dmFyIGU9ZH1lbHNlIGI9ZCxlPWE7aWYoYS55PGQueSl7dmFyIHY9YTt2YXIgRj1kfWVsc2Ugdj1kLEY9YTtmb3Iobj0wPmY/eShsKEIsZS54KSxCLmxlbmd0aC0xKTowO0Jbbl0mJigwPGYmJkJbbl0ueE1pbjw9ZS54fHwwPmYmJkJbbl0ueE1heD49Yi54KTspe2lmKEJbbl0ueE1pbjw9ZS54JiZCW25dLnhNYXg+PWIueCYmQltuXS55TWluPD1GLnkmJkJbbl0ueU1heD49di55KXJldHVybiBoP3t5OmEueSx4OmEueDxkLng/QltuXS54TWluLTE6QltuXS54TWF4KzEsb2JzdGFjbGU6QltuXX06e3g6YS54LHk6YS55PGQueT9CW25dLnlNaW4tMTpCW25dLnlNYXgrMSxvYnN0YWNsZTpCW25dfTtuKz1mfXJldHVybiBkfWZ1bmN0aW9uIEEoYSxkLGgsZixlKXt2YXIgbj1lLnNvZnQsdj1lLmhhcmQscj1mPyJ4IjoieSIsYz17eDpkLngseTpkLnl9LEI9e3g6ZC54LHk6ZC55fTsKZT1hW3IrIk1heCJdPj1uW3IrIk1heCJdO249YVtyKyJNaW4iXTw9bltyKyJNaW4iXTt2YXIgRz1hW3IrIk1heCJdPj12W3IrIk1heCJdO3Y9YVtyKyJNaW4iXTw9dltyKyJNaW4iXTt2YXIgRj1iKGFbcisiTWluIl0tZFtyXSksZz1iKGFbcisiTWF4Il0tZFtyXSk7aD0xMD5iKEYtZyk/ZFtyXTxoW3JdOmc8RjtCW3JdPWFbcisiTWluIl07Y1tyXT1hW3IrIk1heCJdO2E9bShkLEIsZilbcl0hPT1CW3JdO2Q9bShkLGMsZilbcl0hPT1jW3JdO2g9YT9kP2g6ITA6ZD8hMTpoO2g9bj9lP2g6ITA6ZT8hMTpoO3JldHVybiB2P0c/aDohMDpHPyExOmh9ZnVuY3Rpb24gRShhLGgsYil7aWYoYS54PT09aC54JiZhLnk9PT1oLnkpcmV0dXJuW107dmFyIG49Yj8ieCI6InkiLGU9dC5vYnN0YWNsZU9wdGlvbnMubWFyZ2luO3ZhciByPXtzb2Z0Ont4TWluOmYseE1heDpkLHlNaW46dix5TWF4Okd9LGhhcmQ6dC5oYXJkQm91bmRzfTt2YXIgYz11KEIsYSk7aWYoLTE8Yyl7Yz1CW2NdO3I9QShjLGEsCmgsYixyKTt4KGMsdC5oYXJkQm91bmRzKTt2YXIgZz1iP3t5OmEueSx4OmNbcj8ieE1heCI6InhNaW4iXSsocj8xOi0xKX06e3g6YS54LHk6Y1tyPyJ5TWF4IjoieU1pbiJdKyhyPzE6LTEpfTt2YXIgRj11KEIsZyk7LTE8RiYmKEY9QltGXSx4KEYsdC5oYXJkQm91bmRzKSxnW25dPXI/ayhjW24rIk1heCJdLWUrMSwoRltuKyJNaW4iXStjW24rIk1heCJdKS8yKTp5KGNbbisiTWluIl0rZS0xLChGW24rIk1heCJdK2NbbisiTWluIl0pLzIpLGEueD09PWcueCYmYS55PT09Zy55PyhDJiYoZ1tuXT1yP2soY1tuKyJNYXgiXSxGW24rIk1heCJdKSsxOnkoY1tuKyJNaW4iXSxGW24rIk1pbiJdKS0xKSxDPSFDKTpDPSExKTthPVt7c3RhcnQ6YSxlbmQ6Z31dfWVsc2Ugbj1tKGEse3g6Yj9oLng6YS54LHk6Yj9hLnk6aC55fSxiKSxhPVt7c3RhcnQ6YSxlbmQ6e3g6bi54LHk6bi55fX1dLG5bYj8ieCI6InkiXSE9PWhbYj8ieCI6InkiXSYmKHI9QShuLm9ic3RhY2xlLG4saCwhYixyKSx4KG4ub2JzdGFjbGUsCnQuaGFyZEJvdW5kcykscj17eDpiP24ueDpuLm9ic3RhY2xlW3I/InhNYXgiOiJ4TWluIl0rKHI/MTotMSkseTpiP24ub2JzdGFjbGVbcj8ieU1heCI6InlNaW4iXSsocj8xOi0xKTpuLnl9LGI9IWIsYT1hLmNvbmNhdChFKHt4Om4ueCx5Om4ueX0scixiKSkpO3JldHVybiBhPWEuY29uY2F0KEUoYVthLmxlbmd0aC0xXS5lbmQsaCwhYikpfWZ1bmN0aW9uIHAoYSxkLGgpe3ZhciBuPXkoYS54TWF4LWQueCxkLngtYS54TWluKTx5KGEueU1heC1kLnksZC55LWEueU1pbik7aD1BKGEsZCxoLG4se3NvZnQ6dC5oYXJkQm91bmRzLGhhcmQ6dC5oYXJkQm91bmRzfSk7cmV0dXJuIG4/e3k6ZC55LHg6YVtoPyJ4TWF4IjoieE1pbiJdKyhoPzE6LTEpfTp7eDpkLngseTphW2g/InlNYXgiOiJ5TWluIl0rKGg/MTotMSl9fXZhciBhPUQodC5zdGFydERpcmVjdGlvblgsYihjLngtZy54KT5iKGMueS1nLnkpKSx3PWE/IngiOiJ5IixlPVtdLEM9ITEscT10Lm9ic3RhY2xlTWV0cmljcyxmPXkoZy54LApjLngpLXEubWF4V2lkdGgtMTAsZD1rKGcueCxjLngpK3EubWF4V2lkdGgrMTAsdj15KGcueSxjLnkpLXEubWF4SGVpZ2h0LTEwLEc9ayhnLnksYy55KStxLm1heEhlaWdodCsxMCxCPXQuY2hhcnRPYnN0YWNsZXM7dmFyIHI9bChCLGYpO3E9bChCLGQpO0I9Qi5zbGljZShyLHErMSk7aWYoLTE8KHE9dShCLGMpKSl7dmFyIGg9cChCW3FdLGMsZyk7ZS5wdXNoKHtlbmQ6YyxzdGFydDpofSk7Yz1ofWZvcig7LTE8KHE9dShCLGMpKTspcj0wPmNbd10tZ1t3XSxoPXt4OmMueCx5OmMueX0saFt3XT1CW3FdW3I/dysiTWF4Ijp3KyJNaW4iXSsocj8xOi0xKSxlLnB1c2goe2VuZDpjLHN0YXJ0Omh9KSxjPWg7Zz1FKGcsYyxhKTtnPWcuY29uY2F0KGUucmV2ZXJzZSgpKTtyZXR1cm57cGF0aDp6KGcpLG9ic3RhY2xlczpnfX0se3JlcXVpcmVzT2JzdGFjbGVzOiEwfSl9fSk7SihjLCJwYXJ0cy1nYW50dC9BcnJvd1N5bWJvbHMuanMiLFtjWyJwYXJ0cy9TVkdSZW5kZXJlci5qcyJdXSxmdW5jdGlvbihjKXtjLnByb3RvdHlwZS5zeW1ib2xzLmFycm93PQpmdW5jdGlvbihjLHUseix4KXtyZXR1cm5bWyJNIixjLHUreC8yXSxbIkwiLGMreix1XSxbIkwiLGMsdSt4LzJdLFsiTCIsYyt6LHUreF1dfTtjLnByb3RvdHlwZS5zeW1ib2xzWyJhcnJvdy1oYWxmIl09ZnVuY3Rpb24obCx1LHoseCl7cmV0dXJuIGMucHJvdG90eXBlLnN5bWJvbHMuYXJyb3cobCx1LHovMix4KX07Yy5wcm90b3R5cGUuc3ltYm9sc1sidHJpYW5nbGUtbGVmdCJdPWZ1bmN0aW9uKGMsdSx6LHgpe3JldHVybltbIk0iLGMreix1XSxbIkwiLGMsdSt4LzJdLFsiTCIsYyt6LHUreF0sWyJaIl1dfTtjLnByb3RvdHlwZS5zeW1ib2xzWyJhcnJvdy1maWxsZWQiXT1jLnByb3RvdHlwZS5zeW1ib2xzWyJ0cmlhbmdsZS1sZWZ0Il07Yy5wcm90b3R5cGUuc3ltYm9sc1sidHJpYW5nbGUtbGVmdC1oYWxmIl09ZnVuY3Rpb24obCx1LHoseCl7cmV0dXJuIGMucHJvdG90eXBlLnN5bWJvbHNbInRyaWFuZ2xlLWxlZnQiXShsLHUsei8yLHgpfTtjLnByb3RvdHlwZS5zeW1ib2xzWyJhcnJvdy1maWxsZWQtaGFsZiJdPQpjLnByb3RvdHlwZS5zeW1ib2xzWyJ0cmlhbmdsZS1sZWZ0LWhhbGYiXX0pO0ooYywicGFydHMtZ2FudHQvUGF0aGZpbmRlci5qcyIsW2NbInBhcnRzL0NoYXJ0LmpzIl0sY1sicGFydHMvR2xvYmFscy5qcyJdLGNbInBhcnRzL09wdGlvbnMuanMiXSxjWyJwYXJ0cy9Qb2ludC5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdLGNbInBhcnRzLWdhbnR0L1BhdGhmaW5kZXJBbGdvcml0aG1zLmpzIl1dLGZ1bmN0aW9uKGMsbCx1LHoseCxBKXtmdW5jdGlvbiBEKGEpe3ZhciBkPWEuc2hhcGVBcmdzO3JldHVybiBkP3t4TWluOmQueCx4TWF4OmQueCtkLndpZHRoLHlNaW46ZC55LHlNYXg6ZC55K2QuaGVpZ2h0fTooZD1hLmdyYXBoaWMmJmEuZ3JhcGhpYy5nZXRCQm94KCkpP3t4TWluOmEucGxvdFgtZC53aWR0aC8yLHhNYXg6YS5wbG90WCtkLndpZHRoLzIseU1pbjphLnBsb3RZLWQuaGVpZ2h0LzIseU1heDphLnBsb3RZK2QuaGVpZ2h0LzJ9Om51bGx9ZnVuY3Rpb24geShiKXtmb3IodmFyIGQ9CmIubGVuZ3RoLGY9MCxlLGMscj1bXSxoPWZ1bmN0aW9uKGQsYixmKXtmPWEoZiwxMCk7dmFyIG49ZC55TWF4K2Y+Yi55TWluLWYmJmQueU1pbi1mPGIueU1heCtmLGU9ZC54TWF4K2Y+Yi54TWluLWYmJmQueE1pbi1mPGIueE1heCtmLGM9bj9kLnhNaW4+Yi54TWF4P2QueE1pbi1iLnhNYXg6Yi54TWluLWQueE1heDpJbmZpbml0eSxyPWU/ZC55TWluPmIueU1heD9kLnlNaW4tYi55TWF4OmIueU1pbi1kLnlNYXg6SW5maW5pdHk7cmV0dXJuIGUmJm4/Zj9oKGQsYixNYXRoLmZsb29yKGYvMikpOkluZmluaXR5OnEoYyxyKX07ZjxkOysrZilmb3IoZT1mKzE7ZTxkOysrZSljPWgoYltmXSxiW2VdKSw4MD5jJiZyLnB1c2goYyk7ci5wdXNoKDgwKTtyZXR1cm4gQyhNYXRoLmZsb29yKHIuc29ydChmdW5jdGlvbihhLGQpe3JldHVybiBhLWR9KVtNYXRoLmZsb29yKHIubGVuZ3RoLzEwKV0vMi0xKSwxKX1mdW5jdGlvbiBrKGEsZCxiKXt0aGlzLmluaXQoYSxkLGIpfWZ1bmN0aW9uIGIoYSl7dGhpcy5pbml0KGEpfQpmdW5jdGlvbiBnKGEpe2lmKGEub3B0aW9ucy5wYXRoZmluZGVyfHxhLnNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtiLm9wdGlvbnMmJkUoITAsYi5vcHRpb25zLmNvbm5lY3RvcnM9Yi5vcHRpb25zLmNvbm5lY3RvcnN8fHt9LGIub3B0aW9ucy5wYXRoZmluZGVyKTtyZXR1cm4gYXx8Yi5vcHRpb25zJiZiLm9wdGlvbnMucGF0aGZpbmRlcn0sITEpKUUoITAsYS5vcHRpb25zLmNvbm5lY3RvcnM9YS5vcHRpb25zLmNvbm5lY3RvcnN8fHt9LGEub3B0aW9ucy5wYXRoZmluZGVyKSxIKCdXQVJOSU5HOiBQYXRoZmluZGVyIG9wdGlvbnMgaGF2ZSBiZWVuIHJlbmFtZWQuIFVzZSAiY2hhcnQuY29ubmVjdG9ycyIgb3IgInNlcmllcy5jb25uZWN0b3JzIiBpbnN0ZWFkLicpfSIiO3ZhciBtPXguYWRkRXZlbnQsdD14LmRlZmluZWQsSD14LmVycm9yLEk9eC5leHRlbmQsRT14Lm1lcmdlLHA9eC5vYmplY3RFYWNoLGE9eC5waWNrLHc9eC5zcGxhdCxlPWwuZGVnMnJhZCxDPU1hdGgubWF4LHE9Ck1hdGgubWluO0kodS5kZWZhdWx0T3B0aW9ucyx7Y29ubmVjdG9yczp7dHlwZToic3RyYWlnaHQiLGxpbmVXaWR0aDoxLG1hcmtlcjp7ZW5hYmxlZDohMSxhbGlnbjoiY2VudGVyIix2ZXJ0aWNhbEFsaWduOiJtaWRkbGUiLGluc2lkZTohMSxsaW5lV2lkdGg6MX0sc3RhcnRNYXJrZXI6e3N5bWJvbDoiZGlhbW9uZCJ9LGVuZE1hcmtlcjp7c3ltYm9sOiJhcnJvdy1maWxsZWQifX19KTtrLnByb3RvdHlwZT17aW5pdDpmdW5jdGlvbihhLGQsYil7dGhpcy5mcm9tUG9pbnQ9YTt0aGlzLnRvUG9pbnQ9ZDt0aGlzLm9wdGlvbnM9Yjt0aGlzLmNoYXJ0PWEuc2VyaWVzLmNoYXJ0O3RoaXMucGF0aGZpbmRlcj10aGlzLmNoYXJ0LnBhdGhmaW5kZXJ9LHJlbmRlclBhdGg6ZnVuY3Rpb24oYSxkLGIpe3ZhciBlPXRoaXMuY2hhcnQsZj1lLnN0eWxlZE1vZGUsYz1lLnBhdGhmaW5kZXIsaD0hZS5vcHRpb25zLmNoYXJ0LmZvckV4cG9ydCYmITEhPT1iLG49dGhpcy5ncmFwaGljcyYmdGhpcy5ncmFwaGljcy5wYXRoOwpjLmdyb3VwfHwoYy5ncm91cD1lLnJlbmRlcmVyLmcoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1wYXRoZmluZGVyLWdyb3VwIikuYXR0cih7ekluZGV4Oi0xfSkuYWRkKGUuc2VyaWVzR3JvdXApKTtjLmdyb3VwLnRyYW5zbGF0ZShlLnBsb3RMZWZ0LGUucGxvdFRvcCk7biYmbi5yZW5kZXJlcnx8KG49ZS5yZW5kZXJlci5wYXRoKCkuYWRkKGMuZ3JvdXApLGZ8fG4uYXR0cih7b3BhY2l0eTowfSkpO24uYXR0cihkKTthPXtkOmF9O2Z8fChhLm9wYWNpdHk9MSk7bltoPyJhbmltYXRlIjoiYXR0ciJdKGEsYik7dGhpcy5ncmFwaGljcz10aGlzLmdyYXBoaWNzfHx7fTt0aGlzLmdyYXBoaWNzLnBhdGg9bn0sYWRkTWFya2VyOmZ1bmN0aW9uKGEsZCxiKXt2YXIgZj10aGlzLmZyb21Qb2ludC5zZXJpZXMuY2hhcnQsYz1mLnBhdGhmaW5kZXI7Zj1mLnJlbmRlcmVyO3ZhciByPSJzdGFydCI9PT1hP3RoaXMuZnJvbVBvaW50OnRoaXMudG9Qb2ludCxoPXIuZ2V0UGF0aGZpbmRlckFuY2hvclBvaW50KGQpOwppZihkLmVuYWJsZWQmJigoYj0ic3RhcnQiPT09YT9iWzFdOmJbYi5sZW5ndGgtMl0pJiYiTSI9PT1iWzBdfHwiTCI9PT1iWzBdKSl7Yj17eDpiWzFdLHk6YlsyXX07Yj1yLmdldFJhZGlhbnNUb1ZlY3RvcihiLGgpO2g9ci5nZXRNYXJrZXJWZWN0b3IoYixkLnJhZGl1cyxoKTtiPS1iL2U7aWYoZC53aWR0aCYmZC5oZWlnaHQpe3ZhciBuPWQud2lkdGg7dmFyIHY9ZC5oZWlnaHR9ZWxzZSBuPXY9MipkLnJhZGl1czt0aGlzLmdyYXBoaWNzPXRoaXMuZ3JhcGhpY3N8fHt9O2g9e3g6aC54LW4vMix5OmgueS12LzIsd2lkdGg6bixoZWlnaHQ6dixyb3RhdGlvbjpiLHJvdGF0aW9uT3JpZ2luWDpoLngscm90YXRpb25PcmlnaW5ZOmgueX07dGhpcy5ncmFwaGljc1thXT90aGlzLmdyYXBoaWNzW2FdLmFuaW1hdGUoaCk6KHRoaXMuZ3JhcGhpY3NbYV09Zi5zeW1ib2woZC5zeW1ib2wpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXBvaW50LWNvbm5lY3RpbmctcGF0aC0iK2ErIi1tYXJrZXIiKS5hdHRyKGgpLmFkZChjLmdyb3VwKSwKZi5zdHlsZWRNb2RlfHx0aGlzLmdyYXBoaWNzW2FdLmF0dHIoe2ZpbGw6ZC5jb2xvcnx8dGhpcy5mcm9tUG9pbnQuY29sb3Isc3Ryb2tlOmQubGluZUNvbG9yLCJzdHJva2Utd2lkdGgiOmQubGluZVdpZHRoLG9wYWNpdHk6MH0pLmFuaW1hdGUoe29wYWNpdHk6MX0sci5zZXJpZXMub3B0aW9ucy5hbmltYXRpb24pKX19LGdldFBhdGg6ZnVuY3Rpb24oYSl7dmFyIGQ9dGhpcy5wYXRoZmluZGVyLGI9dGhpcy5jaGFydCxlPWQuYWxnb3JpdGhtc1thLnR5cGVdLGY9ZC5jaGFydE9ic3RhY2xlcztpZigiZnVuY3Rpb24iIT09dHlwZW9mIGUpSCgnIicrYS50eXBlKyciIGlzIG5vdCBhIFBhdGhmaW5kZXIgYWxnb3JpdGhtLicpO2Vsc2UgcmV0dXJuIGUucmVxdWlyZXNPYnN0YWNsZXMmJiFmJiYoZj1kLmNoYXJ0T2JzdGFjbGVzPWQuZ2V0Q2hhcnRPYnN0YWNsZXMoYSksYi5vcHRpb25zLmNvbm5lY3RvcnMuYWxnb3JpdGhtTWFyZ2luPWEuYWxnb3JpdGhtTWFyZ2luLGQuY2hhcnRPYnN0YWNsZU1ldHJpY3M9CmQuZ2V0T2JzdGFjbGVNZXRyaWNzKGYpKSxlKHRoaXMuZnJvbVBvaW50LmdldFBhdGhmaW5kZXJBbmNob3JQb2ludChhLnN0YXJ0TWFya2VyKSx0aGlzLnRvUG9pbnQuZ2V0UGF0aGZpbmRlckFuY2hvclBvaW50KGEuZW5kTWFya2VyKSxFKHtjaGFydE9ic3RhY2xlczpmLGxpbmVPYnN0YWNsZXM6ZC5saW5lT2JzdGFjbGVzfHxbXSxvYnN0YWNsZU1ldHJpY3M6ZC5jaGFydE9ic3RhY2xlTWV0cmljcyxoYXJkQm91bmRzOnt4TWluOjAseE1heDpiLnBsb3RXaWR0aCx5TWluOjAseU1heDpiLnBsb3RIZWlnaHR9LG9ic3RhY2xlT3B0aW9uczp7bWFyZ2luOmEuYWxnb3JpdGhtTWFyZ2lufSxzdGFydERpcmVjdGlvblg6ZC5nZXRBbGdvcml0aG1TdGFydERpcmVjdGlvbihhLnN0YXJ0TWFya2VyKX0sYSkpfSxyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmZyb21Qb2ludCxkPWEuc2VyaWVzLGI9ZC5jaGFydCxlPWIucGF0aGZpbmRlcixjPUUoYi5vcHRpb25zLmNvbm5lY3RvcnMsZC5vcHRpb25zLmNvbm5lY3RvcnMsCmEub3B0aW9ucy5jb25uZWN0b3JzLHRoaXMub3B0aW9ucykscj17fTtiLnN0eWxlZE1vZGV8fChyLnN0cm9rZT1jLmxpbmVDb2xvcnx8YS5jb2xvcixyWyJzdHJva2Utd2lkdGgiXT1jLmxpbmVXaWR0aCxjLmRhc2hTdHlsZSYmKHIuZGFzaHN0eWxlPWMuZGFzaFN0eWxlKSk7clsiY2xhc3MiXT0iaGlnaGNoYXJ0cy1wb2ludC1jb25uZWN0aW5nLXBhdGggaGlnaGNoYXJ0cy1jb2xvci0iK2EuY29sb3JJbmRleDtjPUUocixjKTt0KGMubWFya2VyLnJhZGl1cyl8fChjLm1hcmtlci5yYWRpdXM9cShDKE1hdGguY2VpbCgoYy5hbGdvcml0aG1NYXJnaW58fDgpLzIpLTEsMSksNSkpO2E9dGhpcy5nZXRQYXRoKGMpO2I9YS5wYXRoO2Eub2JzdGFjbGVzJiYoZS5saW5lT2JzdGFjbGVzPWUubGluZU9ic3RhY2xlc3x8W10sZS5saW5lT2JzdGFjbGVzPWUubGluZU9ic3RhY2xlcy5jb25jYXQoYS5vYnN0YWNsZXMpKTt0aGlzLnJlbmRlclBhdGgoYixyLGQub3B0aW9ucy5hbmltYXRpb24pO3RoaXMuYWRkTWFya2VyKCJzdGFydCIsCkUoYy5tYXJrZXIsYy5zdGFydE1hcmtlciksYik7dGhpcy5hZGRNYXJrZXIoImVuZCIsRShjLm1hcmtlcixjLmVuZE1hcmtlciksYil9LGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmdyYXBoaWNzJiYocCh0aGlzLmdyYXBoaWNzLGZ1bmN0aW9uKGEpe2EuZGVzdHJveSgpfSksZGVsZXRlIHRoaXMuZ3JhcGhpY3MpfX07Yi5wcm90b3R5cGU9e2FsZ29yaXRobXM6QSxpbml0OmZ1bmN0aW9uKGEpe3RoaXMuY2hhcnQ9YTt0aGlzLmNvbm5lY3Rpb25zPVtdO20oYSwicmVkcmF3IixmdW5jdGlvbigpe3RoaXMucGF0aGZpbmRlci51cGRhdGUoKX0pfSx1cGRhdGU6ZnVuY3Rpb24oYSl7dmFyIGQ9dGhpcy5jaGFydCxiPXRoaXMsZT1iLmNvbm5lY3Rpb25zO2IuY29ubmVjdGlvbnM9W107ZC5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLnZpc2libGUmJiFhLm9wdGlvbnMuaXNJbnRlcm5hbCYmYS5wb2ludHMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgaCxlPWEub3B0aW9ucyYmYS5vcHRpb25zLmNvbm5lY3QmJgp3KGEub3B0aW9ucy5jb25uZWN0KTthLnZpc2libGUmJiExIT09YS5pc0luc2lkZSYmZSYmZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2g9ZC5nZXQoInN0cmluZyI9PT10eXBlb2YgZT9lOmUudG8pO2ggaW5zdGFuY2VvZiB6JiZoLnNlcmllcy52aXNpYmxlJiZoLnZpc2libGUmJiExIT09aC5pc0luc2lkZSYmYi5jb25uZWN0aW9ucy5wdXNoKG5ldyBrKGEsaCwic3RyaW5nIj09PXR5cGVvZiBlP3t9OmUpKX0pfSl9KTtmb3IodmFyIGY9MCxjLGgsbj1lLmxlbmd0aCxnPWIuY29ubmVjdGlvbnMubGVuZ3RoO2Y8bjsrK2Ype2g9ITE7Zm9yKGM9MDtjPGc7KytjKWlmKGVbZl0uZnJvbVBvaW50PT09Yi5jb25uZWN0aW9uc1tjXS5mcm9tUG9pbnQmJmVbZl0udG9Qb2ludD09PWIuY29ubmVjdGlvbnNbY10udG9Qb2ludCl7Yi5jb25uZWN0aW9uc1tjXS5ncmFwaGljcz1lW2ZdLmdyYXBoaWNzO2g9ITA7YnJlYWt9aHx8ZVtmXS5kZXN0cm95KCl9ZGVsZXRlIHRoaXMuY2hhcnRPYnN0YWNsZXM7ZGVsZXRlIHRoaXMubGluZU9ic3RhY2xlczsKYi5yZW5kZXJDb25uZWN0aW9ucyhhKX0scmVuZGVyQ29ubmVjdGlvbnM6ZnVuY3Rpb24oYSl7YT90aGlzLmNoYXJ0LnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBkPWZ1bmN0aW9uKCl7dmFyIGQ9YS5jaGFydC5wYXRoZmluZGVyOyhkJiZkLmNvbm5lY3Rpb25zfHxbXSkuZm9yRWFjaChmdW5jdGlvbihkKXtkLmZyb21Qb2ludCYmZC5mcm9tUG9pbnQuc2VyaWVzPT09YSYmZC5yZW5kZXIoKX0pO2EucGF0aGZpbmRlclJlbW92ZVJlbmRlckV2ZW50JiYoYS5wYXRoZmluZGVyUmVtb3ZlUmVuZGVyRXZlbnQoKSxkZWxldGUgYS5wYXRoZmluZGVyUmVtb3ZlUmVuZGVyRXZlbnQpfTshMT09PWEub3B0aW9ucy5hbmltYXRpb24/ZCgpOmEucGF0aGZpbmRlclJlbW92ZVJlbmRlckV2ZW50PW0oYSwiYWZ0ZXJBbmltYXRlIixkKX0pOnRoaXMuY29ubmVjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihhKXthLnJlbmRlcigpfSl9LGdldENoYXJ0T2JzdGFjbGVzOmZ1bmN0aW9uKGIpe2Zvcih2YXIgZD0KW10sZT10aGlzLmNoYXJ0LnNlcmllcyxmPWEoYi5hbGdvcml0aG1NYXJnaW4sMCksYyxyPTAsaD1lLmxlbmd0aDtyPGg7KytyKWlmKGVbcl0udmlzaWJsZSYmIWVbcl0ub3B0aW9ucy5pc0ludGVybmFsKWZvcih2YXIgbj0wLGc9ZVtyXS5wb2ludHMubGVuZ3RoLHc7bjxnOysrbil3PWVbcl0ucG9pbnRzW25dLHcudmlzaWJsZSYmKHc9RCh3KSkmJmQucHVzaCh7eE1pbjp3LnhNaW4tZix4TWF4OncueE1heCtmLHlNaW46dy55TWluLWYseU1heDp3LnlNYXgrZn0pO2Q9ZC5zb3J0KGZ1bmN0aW9uKGEsZCl7cmV0dXJuIGEueE1pbi1kLnhNaW59KTt0KGIuYWxnb3JpdGhtTWFyZ2luKXx8KGM9Yi5hbGdvcml0aG1NYXJnaW49eShkKSxkLmZvckVhY2goZnVuY3Rpb24oYSl7YS54TWluLT1jO2EueE1heCs9YzthLnlNaW4tPWM7YS55TWF4Kz1jfSkpO3JldHVybiBkfSxnZXRPYnN0YWNsZU1ldHJpY3M6ZnVuY3Rpb24oYSl7Zm9yKHZhciBkPTAsYj0wLGUsZixjPWEubGVuZ3RoO2MtLTspZT1hW2NdLnhNYXgtCmFbY10ueE1pbixmPWFbY10ueU1heC1hW2NdLnlNaW4sZDxlJiYoZD1lKSxiPGYmJihiPWYpO3JldHVybnttYXhIZWlnaHQ6YixtYXhXaWR0aDpkfX0sZ2V0QWxnb3JpdGhtU3RhcnREaXJlY3Rpb246ZnVuY3Rpb24oYSl7dmFyIGQ9InRvcCIhPT1hLnZlcnRpY2FsQWxpZ24mJiJib3R0b20iIT09YS52ZXJ0aWNhbEFsaWduO3JldHVybiJsZWZ0IiE9PWEuYWxpZ24mJiJyaWdodCIhPT1hLmFsaWduP2Q/dm9pZCAwOiExOmQ/ITA6dm9pZCAwfX07bC5Db25uZWN0aW9uPWs7bC5QYXRoZmluZGVyPWI7SSh6LnByb3RvdHlwZSx7Z2V0UGF0aGZpbmRlckFuY2hvclBvaW50OmZ1bmN0aW9uKGEpe3ZhciBkPUQodGhpcyk7c3dpdGNoKGEuYWxpZ24pe2Nhc2UgInJpZ2h0Ijp2YXIgYj0ieE1heCI7YnJlYWs7Y2FzZSAibGVmdCI6Yj0ieE1pbiJ9c3dpdGNoKGEudmVydGljYWxBbGlnbil7Y2FzZSAidG9wIjp2YXIgZT0ieU1pbiI7YnJlYWs7Y2FzZSAiYm90dG9tIjplPSJ5TWF4In1yZXR1cm57eDpiPwpkW2JdOihkLnhNaW4rZC54TWF4KS8yLHk6ZT9kW2VdOihkLnlNaW4rZC55TWF4KS8yfX0sZ2V0UmFkaWFuc1RvVmVjdG9yOmZ1bmN0aW9uKGEsZCl7dmFyIGI7dChkKXx8KGI9RCh0aGlzKSkmJihkPXt4OihiLnhNaW4rYi54TWF4KS8yLHk6KGIueU1pbitiLnlNYXgpLzJ9KTtyZXR1cm4gTWF0aC5hdGFuMihkLnktYS55LGEueC1kLngpfSxnZXRNYXJrZXJWZWN0b3I6ZnVuY3Rpb24oYSxkLGIpe3ZhciBlPTIqTWF0aC5QSSxmPUQodGhpcyksYz1mLnhNYXgtZi54TWluLGg9Zi55TWF4LWYueU1pbixuPU1hdGguYXRhbjIoaCxjKSxnPSExO2MvPTI7dmFyIHc9aC8yLHE9Zi54TWluK2M7Zj1mLnlNaW4rdztmb3IodmFyIGs9cSx2PWYscD17fSxtPTEsdD0xO2E8LU1hdGguUEk7KWErPWU7Zm9yKDthPk1hdGguUEk7KWEtPWU7ZT1NYXRoLnRhbihhKTthPi1uJiZhPD1uPyh0PS0xLGc9ITApOmE+biYmYTw9TWF0aC5QSS1uP3Q9LTE6YT5NYXRoLlBJLW58fGE8PS0oTWF0aC5QSS1uKT8obT0KLTEsZz0hMCk6bT0tMTtnPyhrKz1tKmMsdis9dCpjKmUpOihrKz1oLygyKmUpKm0sdis9dCp3KTtiLnghPT1xJiYoaz1iLngpO2IueSE9PWYmJih2PWIueSk7cC54PWsrZCpNYXRoLmNvcyhhKTtwLnk9di1kKk1hdGguc2luKGEpO3JldHVybiBwfX0pO2MucHJvdG90eXBlLmNhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uKGEpeyExIT09YS5vcHRpb25zLmNvbm5lY3RvcnMuZW5hYmxlZCYmKGcoYSksdGhpcy5wYXRoZmluZGVyPW5ldyBiKHRoaXMpLHRoaXMucGF0aGZpbmRlci51cGRhdGUoITApKX0pfSk7SihjLCJtb2R1bGVzL3hyYW5nZS5zcmMuanMiLFtjWyJwYXJ0cy9BeGlzLmpzIl0sY1sicGFydHMvR2xvYmFscy5qcyJdLGNbInBhcnRzL0NvbG9yLmpzIl0sY1sicGFydHMvUG9pbnQuanMiXSxjWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYyxsLHUseix4KXt2YXIgQT11LnBhcnNlO3U9eC5hZGRFdmVudDt2YXIgRD14LmNsYW1wLHk9eC5jb3JyZWN0RmxvYXQsaz14LmRlZmluZWQsCmI9eC5maW5kLGc9eC5pc051bWJlcixtPXguaXNPYmplY3QsdD14Lm1lcmdlLEg9eC5waWNrO3g9eC5zZXJpZXNUeXBlO3ZhciBJPWwuc2VyaWVzVHlwZXMuY29sdW1uLEU9bC5zZXJpZXNUeXBlcyxwPWwuU2VyaWVzO3goInhyYW5nZSIsImNvbHVtbiIse2NvbG9yQnlQb2ludDohMCxkYXRhTGFiZWxzOntmb3JtYXR0ZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBvaW50LnBhcnRpYWxGaWxsO20oYSkmJihhPWEuYW1vdW50KTtpZihnKGEpJiYwPGEpcmV0dXJuIHkoMTAwKmEpKyIlIn0saW5zaWRlOiEwLHZlcnRpY2FsQWxpZ246Im1pZGRsZSJ9LHRvb2x0aXA6e2hlYWRlckZvcm1hdDonPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTBweCI+e3BvaW50Lnh9IC0ge3BvaW50LngyfTwvc3Bhbj48YnIvPicscG9pbnRGb3JtYXQ6JzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij5cdTI1Y2Y8L3NwYW4+IHtzZXJpZXMubmFtZX06IDxiPntwb2ludC55Q2F0ZWdvcnl9PC9iPjxici8+J30sCmJvcmRlclJhZGl1czozLHBvaW50UmFuZ2U6MH0se3R5cGU6InhyYW5nZSIscGFyYWxsZWxBcnJheXM6WyJ4IiwieDIiLCJ5Il0scmVxdWlyZVNvcnRpbmc6ITEsYW5pbWF0ZTpFLmxpbmUucHJvdG90eXBlLmFuaW1hdGUsY3JvcFNob3VsZGVyOjEsZ2V0RXh0cmVtZXNGcm9tQWxsOiEwLGF1dG9JbmNyZW1lbnQ6bC5ub29wLGJ1aWxkS0RUcmVlOmwubm9vcCxpbml0OmZ1bmN0aW9uKCl7RS5jb2x1bW4ucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMub3B0aW9ucy5zdGFja2luZz12b2lkIDB9LGdldENvbHVtbk1ldHJpY3M6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7Yi5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYj1hLnhBeGlzO2EueEF4aXM9YS55QXhpczthLnlBeGlzPWJ9KX12YXIgYj10aGlzLmNoYXJ0O2EoKTt2YXIgZT1JLnByb3RvdHlwZS5nZXRDb2x1bW5NZXRyaWNzLmNhbGwodGhpcyk7YSgpO3JldHVybiBlfSxjcm9wRGF0YTpmdW5jdGlvbihhLApiLGUsYyl7Yj1wLnByb3RvdHlwZS5jcm9wRGF0YS5jYWxsKHRoaXMsdGhpcy54MkRhdGEsYixlLGMpO2IueERhdGE9YS5zbGljZShiLnN0YXJ0LGIuZW5kKTtyZXR1cm4gYn0sZmluZFBvaW50SW5kZXg6ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5jcm9wcGVkLGU9dGhpcy5jcm9wU3RhcnQsaz10aGlzLnBvaW50cyxxPWEuaWQ7aWYocSl2YXIgZj0oZj1iKGssZnVuY3Rpb24oYSl7cmV0dXJuIGEuaWQ9PT1xfSkpP2YuaW5kZXg6dm9pZCAwOyJ1bmRlZmluZWQiPT09dHlwZW9mIGYmJihmPShmPWIoayxmdW5jdGlvbihkKXtyZXR1cm4gZC54PT09YS54JiZkLngyPT09YS54MiYmIWQudG91Y2hlZH0pKT9mLmluZGV4OnZvaWQgMCk7YyYmZyhmKSYmZyhlKSYmZj49ZSYmKGYtPWUpO3JldHVybiBmfSx0cmFuc2xhdGVQb2ludDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnhBeGlzLGU9dGhpcy55QXhpcyxjPXRoaXMuY29sdW1uTWV0cmljcyxxPXRoaXMub3B0aW9ucyxmPXEubWluUG9pbnRMZW5ndGh8fAowLGQ9YS5wbG90WCx2PUgoYS54MixhLngrKGEubGVufHwwKSkscD1iLnRyYW5zbGF0ZSh2LDAsMCwwLDEpO3Y9TWF0aC5hYnMocC1kKTt2YXIgQj10aGlzLmNoYXJ0LmludmVydGVkLHI9SChxLmJvcmRlcldpZHRoLDEpJTIvMixoPWMub2Zmc2V0LG49TWF0aC5yb3VuZChjLndpZHRoKTtmJiYoZi09diwwPmYmJihmPTApLGQtPWYvMixwKz1mLzIpO2Q9TWF0aC5tYXgoZCwtMTApO3A9RChwLC0xMCxiLmxlbisxMCk7ayhhLm9wdGlvbnMucG9pbnRXaWR0aCkmJihoLT0oTWF0aC5jZWlsKGEub3B0aW9ucy5wb2ludFdpZHRoKS1uKS8yLG49TWF0aC5jZWlsKGEub3B0aW9ucy5wb2ludFdpZHRoKSk7cS5wb2ludFBsYWNlbWVudCYmZyhhLnBsb3RZKSYmZS5jYXRlZ29yaWVzJiYoYS5wbG90WT1lLnRyYW5zbGF0ZShhLnksMCwxLDAsMSxxLnBvaW50UGxhY2VtZW50KSk7YS5zaGFwZUFyZ3M9e3g6TWF0aC5mbG9vcihNYXRoLm1pbihkLHApKStyLHk6TWF0aC5mbG9vcihhLnBsb3RZK2gpK3IsCndpZHRoOk1hdGgucm91bmQoTWF0aC5hYnMocC1kKSksaGVpZ2h0Om4scjp0aGlzLm9wdGlvbnMuYm9yZGVyUmFkaXVzfTtxPWEuc2hhcGVBcmdzLng7Zj1xK2Euc2hhcGVBcmdzLndpZHRoOzA+cXx8Zj5iLmxlbj8ocT1EKHEsMCxiLmxlbiksZj1EKGYsMCxiLmxlbikscD1mLXEsYS5kbEJveD10KGEuc2hhcGVBcmdzLHt4OnEsd2lkdGg6Zi1xLGNlbnRlclg6cD9wLzI6bnVsbH0pKTphLmRsQm94PW51bGw7cT1hLnRvb2x0aXBQb3M7Zj1CPzE6MDtwPUI/MDoxO2M9dGhpcy5jb2x1bW5NZXRyaWNzP3RoaXMuY29sdW1uTWV0cmljcy5vZmZzZXQ6LWMud2lkdGgvMjtxW2ZdPUQocVtmXSt2LzIqKGIucmV2ZXJzZWQ/LTE6MSkqKEI/LTE6MSksMCxiLmxlbi0xKTtxW3BdPUQocVtwXSsoQj8tMToxKSpjLDAsZS5sZW4tMSk7aWYoYz1hLnBhcnRpYWxGaWxsKW0oYykmJihjPWMuYW1vdW50KSxnKGMpfHwoYz0wKSxlPWEuc2hhcGVBcmdzLGEucGFydFNoYXBlQXJncz17eDplLngseTplLnksd2lkdGg6ZS53aWR0aCwKaGVpZ2h0OmUuaGVpZ2h0LHI6dGhpcy5vcHRpb25zLmJvcmRlclJhZGl1c30sZD1NYXRoLm1heChNYXRoLnJvdW5kKHYqYythLnBsb3RYLWQpLDApLGEuY2xpcFJlY3RBcmdzPXt4OmIucmV2ZXJzZWQ/ZS54K3YtZDplLngseTplLnksd2lkdGg6ZCxoZWlnaHQ6ZS5oZWlnaHR9fSx0cmFuc2xhdGU6ZnVuY3Rpb24oKXtJLnByb3RvdHlwZS50cmFuc2xhdGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dGhpcy50cmFuc2xhdGVQb2ludChhKX0sdGhpcyl9LGRyYXdQb2ludDpmdW5jdGlvbihhLGIpe3ZhciBlPXRoaXMub3B0aW9ucyxjPXRoaXMuY2hhcnQucmVuZGVyZXIsZz1hLmdyYXBoaWMsZj1hLnNoYXBlVHlwZSxkPWEuc2hhcGVBcmdzLHc9YS5wYXJ0U2hhcGVBcmdzLGs9YS5jbGlwUmVjdEFyZ3MscD1hLnBhcnRpYWxGaWxsLHI9ZS5zdGFja2luZyYmIWUuYm9yZGVyUmFkaXVzLGg9YS5zdGF0ZSxuPWUuc3RhdGVzW2h8fCJub3JtYWwiXXx8Cnt9LEY9InVuZGVmaW5lZCI9PT10eXBlb2YgaD8iYXR0ciI6YjtoPXRoaXMucG9pbnRBdHRyaWJzKGEsaCk7bj1IKHRoaXMuY2hhcnQub3B0aW9ucy5jaGFydC5hbmltYXRpb24sbi5hbmltYXRpb24pO2lmKGEuaXNOdWxsfHwhMT09PWEudmlzaWJsZSlnJiYoYS5ncmFwaGljPWcuZGVzdHJveSgpKTtlbHNle2lmKGcpZy5yZWN0W2JdKGQpO2Vsc2UgYS5ncmFwaGljPWc9Yy5nKCJwb2ludCIpLmFkZENsYXNzKGEuZ2V0Q2xhc3NOYW1lKCkpLmFkZChhLmdyb3VwfHx0aGlzLmdyb3VwKSxnLnJlY3Q9Y1tmXSh0KGQpKS5hZGRDbGFzcyhhLmdldENsYXNzTmFtZSgpKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1wYXJ0ZmlsbC1vcmlnaW5hbCIpLmFkZChnKTt3JiYoZy5wYXJ0UmVjdD8oZy5wYXJ0UmVjdFtiXSh0KHcpKSxnLnBhcnRpYWxDbGlwUmVjdFtiXSh0KGspKSk6KGcucGFydGlhbENsaXBSZWN0PWMuY2xpcFJlY3Qoay54LGsueSxrLndpZHRoLGsuaGVpZ2h0KSxnLnBhcnRSZWN0PWNbZl0odykuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcGFydGZpbGwtb3ZlcmxheSIpLmFkZChnKS5jbGlwKGcucGFydGlhbENsaXBSZWN0KSkpOwp0aGlzLmNoYXJ0LnN0eWxlZE1vZGV8fChnLnJlY3RbYl0oaCxuKS5zaGFkb3coZS5zaGFkb3csbnVsbCxyKSx3JiYobShwKXx8KHA9e30pLG0oZS5wYXJ0aWFsRmlsbCkmJihwPXQocCxlLnBhcnRpYWxGaWxsKSksYT1wLmZpbGx8fEEoaC5maWxsKS5icmlnaHRlbigtLjMpLmdldCgpfHxBKGEuY29sb3J8fHRoaXMuY29sb3IpLmJyaWdodGVuKC0uMykuZ2V0KCksaC5maWxsPWEsZy5wYXJ0UmVjdFtGXShoLG4pLnNoYWRvdyhlLnNoYWRvdyxudWxsLHIpKSl9fSxkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEuZ2V0QW5pbWF0aW9uVmVyYigpO2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZSl7YS5kcmF3UG9pbnQoZSxiKX0pfSxnZXRBbmltYXRpb25WZXJiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhcnQucG9pbnRDb3VudDwodGhpcy5vcHRpb25zLmFuaW1hdGlvbkxpbWl0fHwyNTApPyJhbmltYXRlIjoiYXR0ciJ9fSx7cmVzb2x2ZUNvbG9yOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMuc2VyaWVzO2lmKGEub3B0aW9ucy5jb2xvckJ5UG9pbnQmJiF0aGlzLm9wdGlvbnMuY29sb3Ipe3ZhciBiPWEub3B0aW9ucy5jb2xvcnN8fGEuY2hhcnQub3B0aW9ucy5jb2xvcnM7dmFyIGU9dGhpcy55JShiP2IubGVuZ3RoOmEuY2hhcnQub3B0aW9ucy5jaGFydC5jb2xvckNvdW50KTtiPWImJmJbZV07YS5jaGFydC5zdHlsZWRNb2RlfHwodGhpcy5jb2xvcj1iKTt0aGlzLm9wdGlvbnMuY29sb3JJbmRleHx8KHRoaXMuY29sb3JJbmRleD1lKX1lbHNlIHRoaXMuY29sb3J8fCh0aGlzLmNvbG9yPWEuY29sb3IpfSxpbml0OmZ1bmN0aW9uKCl7ei5wcm90b3R5cGUuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy55fHwodGhpcy55PTApO3JldHVybiB0aGlzfSxzZXRTdGF0ZTpmdW5jdGlvbigpe3oucHJvdG90eXBlLnNldFN0YXRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnNlcmllcy5kcmF3UG9pbnQodGhpcyx0aGlzLnNlcmllcy5nZXRBbmltYXRpb25WZXJiKCkpfSwKZ2V0TGFiZWxDb25maWc6ZnVuY3Rpb24oKXt2YXIgYT16LnByb3RvdHlwZS5nZXRMYWJlbENvbmZpZy5jYWxsKHRoaXMpLGI9dGhpcy5zZXJpZXMueUF4aXMuY2F0ZWdvcmllczthLngyPXRoaXMueDI7YS55Q2F0ZWdvcnk9dGhpcy55Q2F0ZWdvcnk9YiYmYlt0aGlzLnldO3JldHVybiBhfSx0b29sdGlwRGF0ZUtleXM6WyJ4IiwieDIiXSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIm51bWJlciI9PT10eXBlb2YgdGhpcy54JiYibnVtYmVyIj09PXR5cGVvZiB0aGlzLngyfX0pO3UoYywiYWZ0ZXJHZXRTZXJpZXNFeHRyZW1lcyIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlcmllcyxiO2lmKHRoaXMuaXNYQXhpcyl7dmFyIGU9SCh0aGlzLmRhdGFNYXgsLU51bWJlci5NQVhfVkFMVUUpO2EuZm9yRWFjaChmdW5jdGlvbihhKXthLngyRGF0YSYmYS54MkRhdGEuZm9yRWFjaChmdW5jdGlvbihhKXthPmUmJihlPWEsYj0hMCl9KX0pO2ImJih0aGlzLmRhdGFNYXg9ZSl9fSk7IiJ9KTtKKGMsCiJwYXJ0cy1nYW50dC9HYW50dFNlcmllcy5qcyIsW2NbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJwYXJ0cy9PcHRpb25zLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMsbCx1KXt2YXIgej1sLmRhdGVGb3JtYXQseD11LmlzTnVtYmVyLEE9dS5tZXJnZSxEPXUucGljaztsPXUuc2VyaWVzVHlwZTt2YXIgeT11LnNwbGF0LGs9Yy5zZXJpZXNUeXBlcy54cmFuZ2U7bCgiZ2FudHQiLCJ4cmFuZ2UiLHtncm91cGluZzohMSxkYXRhTGFiZWxzOntlbmFibGVkOiEwfSx0b29sdGlwOntoZWFkZXJGb3JtYXQ6JzxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHgiPntzZXJpZXMubmFtZX08L3NwYW4+PGJyLz4nLHBvaW50Rm9ybWF0Om51bGwscG9pbnRGb3JtYXR0ZXI6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnNlcmllcyxjPWIuY2hhcnQudG9vbHRpcCxrPWIueEF4aXMsdD1iLnRvb2x0aXBPcHRpb25zLmRhdGVUaW1lTGFiZWxGb3JtYXRzLGw9ay5vcHRpb25zLnN0YXJ0T2ZXZWVrLAp4PWIudG9vbHRpcE9wdGlvbnMsdT14LnhEYXRlRm9ybWF0O2I9dGhpcy5vcHRpb25zLm1pbGVzdG9uZTt2YXIgcD0iPGI+IisodGhpcy5uYW1lfHx0aGlzLnlDYXRlZ29yeSkrIjwvYj4iO2lmKHgucG9pbnRGb3JtYXQpcmV0dXJuIHRoaXMudG9vbHRpcEZvcm1hdHRlcih4LnBvaW50Rm9ybWF0KTt1fHwodT15KGMuZ2V0RGF0ZUZvcm1hdChrLmNsb3Nlc3RQb2ludFJhbmdlLHRoaXMuc3RhcnQsbCx0KSlbMF0pO2M9eih1LHRoaXMuc3RhcnQpO2s9eih1LHRoaXMuZW5kKTtwKz0iPGJyLz4iO3JldHVybiBiP3ArKGMrIjxici8+Iik6cCsoIlN0YXJ0OiAiK2MrIjxici8+RW5kOiAiKSsoaysiPGJyLz4iKX19LGNvbm5lY3RvcnM6e3R5cGU6InNpbXBsZUNvbm5lY3QiLGFuaW1hdGlvbjp7cmV2ZXJzZWQ6ITB9LHN0YXJ0TWFya2VyOntlbmFibGVkOiEwLHN5bWJvbDoiYXJyb3ctZmlsbGVkIixyYWRpdXM6NCxmaWxsOiIjZmEwIixhbGlnbjoibGVmdCJ9LGVuZE1hcmtlcjp7ZW5hYmxlZDohMSwKYWxpZ246InJpZ2h0In19fSx7cG9pbnRBcnJheU1hcDpbInN0YXJ0IiwiZW5kIiwieSJdLGtleWJvYXJkTW92ZVZlcnRpY2FsOiExLHRyYW5zbGF0ZVBvaW50OmZ1bmN0aW9uKGIpe2sucHJvdG90eXBlLnRyYW5zbGF0ZVBvaW50LmNhbGwodGhpcyxiKTtpZihiLm9wdGlvbnMubWlsZXN0b25lKXt2YXIgYz1iLnNoYXBlQXJnczt2YXIgbT1jLmhlaWdodDtiLnNoYXBlQXJncz17eDpjLngtbS8yLHk6Yy55LHdpZHRoOm0saGVpZ2h0Om19fX0sZHJhd1BvaW50OmZ1bmN0aW9uKGIsYyl7dmFyIGc9dGhpcy5vcHRpb25zLHQ9dGhpcy5jaGFydC5yZW5kZXJlcixsPWIuc2hhcGVBcmdzLHU9Yi5wbG90WSx5PWIuZ3JhcGhpYyxwPWIuc2VsZWN0ZWQmJiJzZWxlY3QiLGE9Zy5zdGFja2luZyYmIWcuYm9yZGVyUmFkaXVzO2lmKGIub3B0aW9ucy5taWxlc3RvbmUpaWYoeCh1KSYmbnVsbCE9PWIueSYmITEhPT1iLnZpc2libGUpe2w9dC5zeW1ib2xzLmRpYW1vbmQobC54LGwueSxsLndpZHRoLGwuaGVpZ2h0KTsKaWYoeSl5W2NdKHtkOmx9KTtlbHNlIGIuZ3JhcGhpYz10LnBhdGgobCkuYWRkQ2xhc3MoYi5nZXRDbGFzc05hbWUoKSwhMCkuYWRkKGIuZ3JvdXB8fHRoaXMuZ3JvdXApO3RoaXMuY2hhcnQuc3R5bGVkTW9kZXx8Yi5ncmFwaGljLmF0dHIodGhpcy5wb2ludEF0dHJpYnMoYixwKSkuc2hhZG93KGcuc2hhZG93LG51bGwsYSl9ZWxzZSB5JiYoYi5ncmFwaGljPXkuZGVzdHJveSgpKTtlbHNlIGsucHJvdG90eXBlLmRyYXdQb2ludC5jYWxsKHRoaXMsYixjKX0sc2V0RGF0YTpjLlNlcmllcy5wcm90b3R5cGUuc2V0RGF0YSxzZXRHYW50dFBvaW50QWxpYXNlczpmdW5jdGlvbihiKXtmdW5jdGlvbiBjKGMsZyl7InVuZGVmaW5lZCIhPT10eXBlb2YgZyYmKGJbY109Zyl9YygieCIsRChiLnN0YXJ0LGIueCkpO2MoIngyIixEKGIuZW5kLGIueDIpKTtjKCJwYXJ0aWFsRmlsbCIsRChiLmNvbXBsZXRlZCxiLnBhcnRpYWxGaWxsKSk7YygiY29ubmVjdCIsRChiLmRlcGVuZGVuY3ksYi5jb25uZWN0KSl9fSwKQShrLnByb3RvdHlwZS5wb2ludENsYXNzLnByb3RvdHlwZSx7YXBwbHlPcHRpb25zOmZ1bmN0aW9uKGIsZyl7Yj1BKGIpO2Muc2VyaWVzVHlwZXMuZ2FudHQucHJvdG90eXBlLnNldEdhbnR0UG9pbnRBbGlhc2VzKGIpO3JldHVybiBiPWsucHJvdG90eXBlLnBvaW50Q2xhc3MucHJvdG90eXBlLmFwcGx5T3B0aW9ucy5jYWxsKHRoaXMsYixnKX0saXNWYWxpZDpmdW5jdGlvbigpe3JldHVybigibnVtYmVyIj09PXR5cGVvZiB0aGlzLnN0YXJ0fHwibnVtYmVyIj09PXR5cGVvZiB0aGlzLngpJiYoIm51bWJlciI9PT10eXBlb2YgdGhpcy5lbmR8fCJudW1iZXIiPT09dHlwZW9mIHRoaXMueDJ8fHRoaXMubWlsZXN0b25lKX19KSk7IiJ9KTtKKGMsInBhcnRzLWdhbnR0L0dhbnR0Q2hhcnQuanMiLFtjWyJwYXJ0cy9DaGFydC5qcyJdLGNbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYyxsLHUpe3ZhciB6PXUuZ2V0T3B0aW9ucyx4PXUuaXNBcnJheSwKQT11Lm1lcmdlLEQ9dS5zcGxhdDtsLmdhbnR0Q2hhcnQ9ZnVuY3Rpb24odSxrLGIpe3ZhciBnPSJzdHJpbmciPT09dHlwZW9mIHV8fHUubm9kZU5hbWUsbT1rLnNlcmllcyx0PXooKSx5LEk9aztrPWFyZ3VtZW50c1tnPzE6MF07eChrLnhBeGlzKXx8KGsueEF4aXM9W2sueEF4aXN8fHt9LHt9XSk7ay54QXhpcz1rLnhBeGlzLm1hcChmdW5jdGlvbihiLGMpezE9PT1jJiYoeT0wKTtyZXR1cm4gQSh0LnhBeGlzLHtncmlkOntlbmFibGVkOiEwfSxvcHBvc2l0ZTohMCxsaW5rZWRUbzp5fSxiLHt0eXBlOiJkYXRldGltZSJ9KX0pO2sueUF4aXM9RChrLnlBeGlzfHx7fSkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBBKHQueUF4aXMse2dyaWQ6e2VuYWJsZWQ6ITB9LHN0YXRpY1NjYWxlOjUwLHJldmVyc2VkOiEwLHR5cGU6Yi5jYXRlZ29yaWVzP2IudHlwZToidHJlZWdyaWQifSxiKX0pO2suc2VyaWVzPW51bGw7az1BKCEwLHtjaGFydDp7dHlwZToiZ2FudHQifSx0aXRsZTp7dGV4dDpudWxsfSwKbGVnZW5kOntlbmFibGVkOiExfX0sayx7aXNHYW50dDohMH0pO2suc2VyaWVzPUkuc2VyaWVzPW07KGsuc2VyaWVzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihiKXtiLmRhdGEmJmIuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2wuc2VyaWVzVHlwZXMuZ2FudHQucHJvdG90eXBlLnNldEdhbnR0UG9pbnRBbGlhc2VzKGIpfSl9KTtyZXR1cm4gZz9uZXcgYyh1LGssYik6bmV3IGMoayxrKX19KTtKKGMsInBhcnRzL1Njcm9sbGJhckF4aXMuanMiLFtjWyJwYXJ0cy9HbG9iYWxzLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMsbCl7dmFyIHU9bC5hZGRFdmVudCx6PWwuZGVmaW5lZCx4PWwucGljaztyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBsKCl7fWwuY29tcG9zZT1mdW5jdGlvbihsLHkpe3UobCwiYWZ0ZXJJbml0IixmdW5jdGlvbigpe3ZhciBrPXRoaXM7ay5vcHRpb25zJiZrLm9wdGlvbnMuc2Nyb2xsYmFyJiZrLm9wdGlvbnMuc2Nyb2xsYmFyLmVuYWJsZWQmJgooay5vcHRpb25zLnNjcm9sbGJhci52ZXJ0aWNhbD0hay5ob3JpeixrLm9wdGlvbnMuc3RhcnRPblRpY2s9ay5vcHRpb25zLmVuZE9uVGljaz0hMSxrLnNjcm9sbGJhcj1uZXcgeShrLmNoYXJ0LnJlbmRlcmVyLGsub3B0aW9ucy5zY3JvbGxiYXIsay5jaGFydCksdShrLnNjcm9sbGJhciwiY2hhbmdlZCIsZnVuY3Rpb24oYil7dmFyIGc9eChrLm9wdGlvbnMmJmsub3B0aW9ucy5taW4say5taW4pLG09eChrLm9wdGlvbnMmJmsub3B0aW9ucy5tYXgsay5tYXgpLGw9eihrLmRhdGFNaW4pP01hdGgubWluKGcsay5taW4say5kYXRhTWluKTpnLHU9KHooay5kYXRhTWF4KT9NYXRoLm1heChtLGsubWF4LGsuZGF0YU1heCk6bSktbDt6KGcpJiZ6KG0pJiYoay5ob3JpeiYmIWsucmV2ZXJzZWR8fCFrLmhvcml6JiZrLnJldmVyc2VkPyhnPWwrdSp0aGlzLnRvLGwrPXUqdGhpcy5mcm9tKTooZz1sK3UqKDEtdGhpcy5mcm9tKSxsKz11KigxLXRoaXMudG8pKSx4KHRoaXMub3B0aW9ucy5saXZlUmVkcmF3LApjLnN2ZyYmIWMuaXNUb3VjaERldmljZSYmIXRoaXMuY2hhcnQuaXNCb29zdGluZyl8fCJtb3VzZXVwIj09PWIuRE9NVHlwZXx8IXooYi5ET01UeXBlKT9rLnNldEV4dHJlbWVzKGwsZywhMCwibW91c2Vtb3ZlIiE9PWIuRE9NVHlwZSxiKTp0aGlzLnNldFJhbmdlKHRoaXMuZnJvbSx0aGlzLnRvKSl9KSl9KTt1KGwsImFmdGVyUmVuZGVyIixmdW5jdGlvbigpe3ZhciBjPU1hdGgubWluKHgodGhpcy5vcHRpb25zLm1pbix0aGlzLm1pbiksdGhpcy5taW4seCh0aGlzLmRhdGFNaW4sdGhpcy5taW4pKSxiPU1hdGgubWF4KHgodGhpcy5vcHRpb25zLm1heCx0aGlzLm1heCksdGhpcy5tYXgseCh0aGlzLmRhdGFNYXgsdGhpcy5tYXgpKSxnPXRoaXMuc2Nyb2xsYmFyLG09dGhpcy5heGlzVGl0bGVNYXJnaW4rKHRoaXMudGl0bGVPZmZzZXR8fDApLGw9dGhpcy5jaGFydC5zY3JvbGxiYXJzT2Zmc2V0cyx1PXRoaXMub3B0aW9ucy5tYXJnaW58fDA7ZyYmKHRoaXMuaG9yaXo/KHRoaXMub3Bwb3NpdGV8fAoobFsxXSs9bSksZy5wb3NpdGlvbih0aGlzLmxlZnQsdGhpcy50b3ArdGhpcy5oZWlnaHQrMitsWzFdLSh0aGlzLm9wcG9zaXRlP3U6MCksdGhpcy53aWR0aCx0aGlzLmhlaWdodCksdGhpcy5vcHBvc2l0ZXx8KGxbMV0rPXUpLG09MSk6KHRoaXMub3Bwb3NpdGUmJihsWzBdKz1tKSxnLnBvc2l0aW9uKHRoaXMubGVmdCt0aGlzLndpZHRoKzIrbFswXS0odGhpcy5vcHBvc2l0ZT8wOnUpLHRoaXMudG9wLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpLHRoaXMub3Bwb3NpdGUmJihsWzBdKz11KSxtPTApLGxbbV0rPWcuc2l6ZStnLm9wdGlvbnMubWFyZ2luLGlzTmFOKGMpfHxpc05hTihiKXx8IXoodGhpcy5taW4pfHwheih0aGlzLm1heCl8fHRoaXMubWluPT09dGhpcy5tYXg/Zy5zZXRSYW5nZSgwLDEpOihsPSh0aGlzLm1pbi1jKS8oYi1jKSxjPSh0aGlzLm1heC1jKS8oYi1jKSx0aGlzLmhvcml6JiYhdGhpcy5yZXZlcnNlZHx8IXRoaXMuaG9yaXomJnRoaXMucmV2ZXJzZWQ/Zy5zZXRSYW5nZShsLApjKTpnLnNldFJhbmdlKDEtYywxLWwpKSl9KTt1KGwsImFmdGVyR2V0T2Zmc2V0IixmdW5jdGlvbigpe3ZhciBjPXRoaXMuaG9yaXo/MjoxLGI9dGhpcy5zY3JvbGxiYXI7YiYmKHRoaXMuY2hhcnQuc2Nyb2xsYmFyc09mZnNldHM9WzAsMF0sdGhpcy5jaGFydC5heGlzT2Zmc2V0W2NdKz1iLnNpemUrYi5vcHRpb25zLm1hcmdpbil9KX07cmV0dXJuIGx9KCl9KTtKKGMsInBhcnRzL1Njcm9sbGJhci5qcyIsW2NbInBhcnRzL0F4aXMuanMiXSxjWyJwYXJ0cy9HbG9iYWxzLmpzIl0sY1sicGFydHMvU2Nyb2xsYmFyQXhpcy5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdLGNbInBhcnRzL09wdGlvbnMuanMiXV0sZnVuY3Rpb24oYyxsLHUseix4KXt2YXIgQT16LmFkZEV2ZW50LEQ9ei5jb3JyZWN0RmxvYXQseT16LmRlZmluZWQsaz16LmRlc3Ryb3lPYmplY3RQcm9wZXJ0aWVzLGI9ei5maXJlRXZlbnQsZz16Lm1lcmdlLG09ei5waWNrLHQ9ei5yZW1vdmVFdmVudDt6PXguZGVmYXVsdE9wdGlvbnM7CnZhciBIPWwuaGFzVG91Y2gsST1sLmlzVG91Y2hEZXZpY2UsRT1sLnN3YXBYWT1mdW5jdGlvbihiLGEpe2EmJmIuZm9yRWFjaChmdW5jdGlvbihhKXtmb3IodmFyIGI9YS5sZW5ndGgsYyxnPTA7ZzxiO2crPTIpYz1hW2crMV0sIm51bWJlciI9PT10eXBlb2YgYyYmKGFbZysxXT1hW2crMl0sYVtnKzJdPWMpfSk7cmV0dXJuIGJ9O3g9ZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGEsYixjKXt0aGlzLl9ldmVudHM9W107dGhpcy5mcm9tPXRoaXMuY2hhcnRZPXRoaXMuY2hhcnRYPTA7dGhpcy5zY3JvbGxiYXI9dGhpcy5ncm91cD12b2lkIDA7dGhpcy5zY3JvbGxiYXJCdXR0b25zPVtdO3RoaXMuc2Nyb2xsYmFyR3JvdXA9dm9pZCAwO3RoaXMuc2Nyb2xsYmFyTGVmdD0wO3RoaXMuc2Nyb2xsYmFyUmlmbGVzPXZvaWQgMDt0aGlzLnNjcm9sbGJhclN0cm9rZVdpZHRoPTE7dGhpcy50bz10aGlzLnNpemU9dGhpcy5zY3JvbGxiYXJUb3A9MDt0aGlzLnRyYWNrPXZvaWQgMDt0aGlzLnRyYWNrQm9yZGVyV2lkdGg9CjE7dGhpcy51c2VyT3B0aW9ucz17fTt0aGlzLnk9dGhpcy54PTA7dGhpcy5jaGFydD1jO3RoaXMub3B0aW9ucz1iO3RoaXMucmVuZGVyZXI9Yy5yZW5kZXJlcjt0aGlzLmluaXQoYSxiLGMpfWMucHJvdG90eXBlLmFkZEV2ZW50cz1mdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucy5pbnZlcnRlZD9bMSwwXTpbMCwxXSxiPXRoaXMuc2Nyb2xsYmFyQnV0dG9ucyxjPXRoaXMuc2Nyb2xsYmFyR3JvdXAuZWxlbWVudCxnPXRoaXMudHJhY2suZWxlbWVudCxrPXRoaXMubW91c2VEb3duSGFuZGxlci5iaW5kKHRoaXMpLGY9dGhpcy5tb3VzZU1vdmVIYW5kbGVyLmJpbmQodGhpcyksZD10aGlzLm1vdXNlVXBIYW5kbGVyLmJpbmQodGhpcyk7YT1bW2JbYVswXV0uZWxlbWVudCwiY2xpY2siLHRoaXMuYnV0dG9uVG9NaW5DbGljay5iaW5kKHRoaXMpXSxbYlthWzFdXS5lbGVtZW50LCJjbGljayIsdGhpcy5idXR0b25Ub01heENsaWNrLmJpbmQodGhpcyldLFtnLCJjbGljayIsdGhpcy50cmFja0NsaWNrLmJpbmQodGhpcyldLApbYywibW91c2Vkb3duIixrXSxbYy5vd25lckRvY3VtZW50LCJtb3VzZW1vdmUiLGZdLFtjLm93bmVyRG9jdW1lbnQsIm1vdXNldXAiLGRdXTtIJiZhLnB1c2goW2MsInRvdWNoc3RhcnQiLGtdLFtjLm93bmVyRG9jdW1lbnQsInRvdWNobW92ZSIsZl0sW2Mub3duZXJEb2N1bWVudCwidG91Y2hlbmQiLGRdKTthLmZvckVhY2goZnVuY3Rpb24oYSl7QS5hcHBseShudWxsLGEpfSk7dGhpcy5fZXZlbnRzPWF9O2MucHJvdG90eXBlLmJ1dHRvblRvTWF4Q2xpY2s9ZnVuY3Rpb24oYSl7dmFyIGM9KHRoaXMudG8tdGhpcy5mcm9tKSptKHRoaXMub3B0aW9ucy5zdGVwLC4yKTt0aGlzLnVwZGF0ZVBvc2l0aW9uKHRoaXMuZnJvbStjLHRoaXMudG8rYyk7Yih0aGlzLCJjaGFuZ2VkIix7ZnJvbTp0aGlzLmZyb20sdG86dGhpcy50byx0cmlnZ2VyOiJzY3JvbGxiYXIiLERPTUV2ZW50OmF9KX07Yy5wcm90b3R5cGUuYnV0dG9uVG9NaW5DbGljaz1mdW5jdGlvbihhKXt2YXIgYz1EKHRoaXMudG8tdGhpcy5mcm9tKSoKbSh0aGlzLm9wdGlvbnMuc3RlcCwuMik7dGhpcy51cGRhdGVQb3NpdGlvbihEKHRoaXMuZnJvbS1jKSxEKHRoaXMudG8tYykpO2IodGhpcywiY2hhbmdlZCIse2Zyb206dGhpcy5mcm9tLHRvOnRoaXMudG8sdHJpZ2dlcjoic2Nyb2xsYmFyIixET01FdmVudDphfSl9O2MucHJvdG90eXBlLmN1cnNvclRvU2Nyb2xsYmFyUG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5vcHRpb25zO2I9Yi5taW5XaWR0aD50aGlzLmNhbGN1bGF0ZWRXaWR0aD9iLm1pbldpZHRoOjA7cmV0dXJue2NoYXJ0WDooYS5jaGFydFgtdGhpcy54LXRoaXMueE9mZnNldCkvKHRoaXMuYmFyV2lkdGgtYiksY2hhcnRZOihhLmNoYXJ0WS10aGlzLnktdGhpcy55T2Zmc2V0KS8odGhpcy5iYXJXaWR0aC1iKX19O2MucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LnNjcm9sbGVyO3RoaXMucmVtb3ZlRXZlbnRzKCk7WyJ0cmFjayIsInNjcm9sbGJhclJpZmxlcyIsInNjcm9sbGJhciIsCiJzY3JvbGxiYXJHcm91cCIsImdyb3VwIl0uZm9yRWFjaChmdW5jdGlvbihhKXt0aGlzW2FdJiZ0aGlzW2FdLmRlc3Ryb3kmJih0aGlzW2FdPXRoaXNbYV0uZGVzdHJveSgpKX0sdGhpcyk7YSYmdGhpcz09PWEuc2Nyb2xsYmFyJiYoYS5zY3JvbGxiYXI9bnVsbCxrKGEuc2Nyb2xsYmFyQnV0dG9ucykpfTtjLnByb3RvdHlwZS5kcmF3U2Nyb2xsYmFyQnV0dG9uPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucmVuZGVyZXIsYz10aGlzLnNjcm9sbGJhckJ1dHRvbnMsZz10aGlzLm9wdGlvbnMsaz10aGlzLnNpemU7dmFyIGY9Yi5nKCkuYWRkKHRoaXMuZ3JvdXApO2MucHVzaChmKTtmPWIucmVjdCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXNjcm9sbGJhci1idXR0b24iKS5hZGQoZik7dGhpcy5jaGFydC5zdHlsZWRNb2RlfHxmLmF0dHIoe3N0cm9rZTpnLmJ1dHRvbkJvcmRlckNvbG9yLCJzdHJva2Utd2lkdGgiOmcuYnV0dG9uQm9yZGVyV2lkdGgsZmlsbDpnLmJ1dHRvbkJhY2tncm91bmRDb2xvcn0pOwpmLmF0dHIoZi5jcmlzcCh7eDotLjUseTotLjUsd2lkdGg6aysxLGhlaWdodDprKzEscjpnLmJ1dHRvbkJvcmRlclJhZGl1c30sZi5zdHJva2VXaWR0aCgpKSk7Zj1iLnBhdGgoRShbWyJNIixrLzIrKGE/LTE6MSksay8yLTNdLFsiTCIsay8yKyhhPy0xOjEpLGsvMiszXSxbIkwiLGsvMisoYT8yOi0yKSxrLzJdXSxnLnZlcnRpY2FsKSkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtc2Nyb2xsYmFyLWFycm93IikuYWRkKGNbYV0pO3RoaXMuY2hhcnQuc3R5bGVkTW9kZXx8Zi5hdHRyKHtmaWxsOmcuYnV0dG9uQXJyb3dDb2xvcn0pfTtjLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGEsYixlKXt0aGlzLnNjcm9sbGJhckJ1dHRvbnM9W107dGhpcy5yZW5kZXJlcj1hO3RoaXMudXNlck9wdGlvbnM9Yjt0aGlzLm9wdGlvbnM9ZyhjLmRlZmF1bHRPcHRpb25zLGIpO3RoaXMuY2hhcnQ9ZTt0aGlzLnNpemU9bSh0aGlzLm9wdGlvbnMuc2l6ZSx0aGlzLm9wdGlvbnMuaGVpZ2h0KTtiLmVuYWJsZWQmJih0aGlzLnJlbmRlcigpLAp0aGlzLmFkZEV2ZW50cygpKX07Yy5wcm90b3R5cGUubW91c2VEb3duSGFuZGxlcj1mdW5jdGlvbihhKXthPXRoaXMuY2hhcnQucG9pbnRlci5ub3JtYWxpemUoYSk7YT10aGlzLmN1cnNvclRvU2Nyb2xsYmFyUG9zaXRpb24oYSk7dGhpcy5jaGFydFg9YS5jaGFydFg7dGhpcy5jaGFydFk9YS5jaGFydFk7dGhpcy5pbml0UG9zaXRpb25zPVt0aGlzLmZyb20sdGhpcy50b107dGhpcy5ncmFiYmVkQ2VudGVyPSEwfTtjLnByb3RvdHlwZS5tb3VzZU1vdmVIYW5kbGVyPWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuY2hhcnQucG9pbnRlci5ub3JtYWxpemUoYSksZT10aGlzLm9wdGlvbnMudmVydGljYWw/ImNoYXJ0WSI6ImNoYXJ0WCIsZz10aGlzLmluaXRQb3NpdGlvbnN8fFtdOyF0aGlzLmdyYWJiZWRDZW50ZXJ8fGEudG91Y2hlcyYmMD09PWEudG91Y2hlc1swXVtlXXx8KGM9dGhpcy5jdXJzb3JUb1Njcm9sbGJhclBvc2l0aW9uKGMpW2VdLGU9dGhpc1tlXSxlPWMtZSx0aGlzLmhhc0RyYWdnZWQ9CiEwLHRoaXMudXBkYXRlUG9zaXRpb24oZ1swXStlLGdbMV0rZSksdGhpcy5oYXNEcmFnZ2VkJiZiKHRoaXMsImNoYW5nZWQiLHtmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvLHRyaWdnZXI6InNjcm9sbGJhciIsRE9NVHlwZTphLnR5cGUsRE9NRXZlbnQ6YX0pKX07Yy5wcm90b3R5cGUubW91c2VVcEhhbmRsZXI9ZnVuY3Rpb24oYSl7dGhpcy5oYXNEcmFnZ2VkJiZiKHRoaXMsImNoYW5nZWQiLHtmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvLHRyaWdnZXI6InNjcm9sbGJhciIsRE9NVHlwZTphLnR5cGUsRE9NRXZlbnQ6YX0pO3RoaXMuZ3JhYmJlZENlbnRlcj10aGlzLmhhc0RyYWdnZWQ9dGhpcy5jaGFydFg9dGhpcy5jaGFydFk9bnVsbH07Yy5wcm90b3R5cGUucG9zaXRpb249ZnVuY3Rpb24oYSxiLGMsZyl7dmFyIGU9dGhpcy5vcHRpb25zLnZlcnRpY2FsLGY9MCxkPXRoaXMucmVuZGVyZWQ/ImFuaW1hdGUiOiJhdHRyIjt0aGlzLng9YTt0aGlzLnk9Yit0aGlzLnRyYWNrQm9yZGVyV2lkdGg7CnRoaXMud2lkdGg9Yzt0aGlzLnhPZmZzZXQ9dGhpcy5oZWlnaHQ9Zzt0aGlzLnlPZmZzZXQ9ZjtlPyh0aGlzLndpZHRoPXRoaXMueU9mZnNldD1jPWY9dGhpcy5zaXplLHRoaXMueE9mZnNldD1iPTAsdGhpcy5iYXJXaWR0aD1nLTIqYyx0aGlzLng9YSs9dGhpcy5vcHRpb25zLm1hcmdpbik6KHRoaXMuaGVpZ2h0PXRoaXMueE9mZnNldD1nPWI9dGhpcy5zaXplLHRoaXMuYmFyV2lkdGg9Yy0yKmcsdGhpcy55Kz10aGlzLm9wdGlvbnMubWFyZ2luKTt0aGlzLmdyb3VwW2RdKHt0cmFuc2xhdGVYOmEsdHJhbnNsYXRlWTp0aGlzLnl9KTt0aGlzLnRyYWNrW2RdKHt3aWR0aDpjLGhlaWdodDpnfSk7dGhpcy5zY3JvbGxiYXJCdXR0b25zWzFdW2RdKHt0cmFuc2xhdGVYOmU/MDpjLWIsdHJhbnNsYXRlWTplP2ctZjowfSl9O2MucHJvdG90eXBlLnJlbW92ZUV2ZW50cz1mdW5jdGlvbigpe3RoaXMuX2V2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3QuYXBwbHkobnVsbCxhKX0pO3RoaXMuX2V2ZW50cy5sZW5ndGg9CjB9O2MucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmVuZGVyZXIsYj10aGlzLm9wdGlvbnMsYz10aGlzLnNpemUsZz10aGlzLmNoYXJ0LnN0eWxlZE1vZGUsazt0aGlzLmdyb3VwPWs9YS5nKCJzY3JvbGxiYXIiKS5hdHRyKHt6SW5kZXg6Yi56SW5kZXgsdHJhbnNsYXRlWTotOTk5OTl9KS5hZGQoKTt0aGlzLnRyYWNrPWEucmVjdCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXNjcm9sbGJhci10cmFjayIpLmF0dHIoe3g6MCxyOmIudHJhY2tCb3JkZXJSYWRpdXN8fDAsaGVpZ2h0OmMsd2lkdGg6Y30pLmFkZChrKTtnfHx0aGlzLnRyYWNrLmF0dHIoe2ZpbGw6Yi50cmFja0JhY2tncm91bmRDb2xvcixzdHJva2U6Yi50cmFja0JvcmRlckNvbG9yLCJzdHJva2Utd2lkdGgiOmIudHJhY2tCb3JkZXJXaWR0aH0pO3RoaXMudHJhY2tCb3JkZXJXaWR0aD10aGlzLnRyYWNrLnN0cm9rZVdpZHRoKCk7dGhpcy50cmFjay5hdHRyKHt5Oi10aGlzLnRyYWNrQm9yZGVyV2lkdGglCjIvMn0pO3RoaXMuc2Nyb2xsYmFyR3JvdXA9YS5nKCkuYWRkKGspO3RoaXMuc2Nyb2xsYmFyPWEucmVjdCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXNjcm9sbGJhci10aHVtYiIpLmF0dHIoe2hlaWdodDpjLHdpZHRoOmMscjpiLmJhckJvcmRlclJhZGl1c3x8MH0pLmFkZCh0aGlzLnNjcm9sbGJhckdyb3VwKTt0aGlzLnNjcm9sbGJhclJpZmxlcz1hLnBhdGgoRShbWyJNIiwtMyxjLzRdLFsiTCIsLTMsMipjLzNdLFsiTSIsMCxjLzRdLFsiTCIsMCwyKmMvM10sWyJNIiwzLGMvNF0sWyJMIiwzLDIqYy8zXV0sYi52ZXJ0aWNhbCkpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXNjcm9sbGJhci1yaWZsZXMiKS5hZGQodGhpcy5zY3JvbGxiYXJHcm91cCk7Z3x8KHRoaXMuc2Nyb2xsYmFyLmF0dHIoe2ZpbGw6Yi5iYXJCYWNrZ3JvdW5kQ29sb3Isc3Ryb2tlOmIuYmFyQm9yZGVyQ29sb3IsInN0cm9rZS13aWR0aCI6Yi5iYXJCb3JkZXJXaWR0aH0pLHRoaXMuc2Nyb2xsYmFyUmlmbGVzLmF0dHIoe3N0cm9rZTpiLnJpZmxlQ29sb3IsCiJzdHJva2Utd2lkdGgiOjF9KSk7dGhpcy5zY3JvbGxiYXJTdHJva2VXaWR0aD10aGlzLnNjcm9sbGJhci5zdHJva2VXaWR0aCgpO3RoaXMuc2Nyb2xsYmFyR3JvdXAudHJhbnNsYXRlKC10aGlzLnNjcm9sbGJhclN0cm9rZVdpZHRoJTIvMiwtdGhpcy5zY3JvbGxiYXJTdHJva2VXaWR0aCUyLzIpO3RoaXMuZHJhd1Njcm9sbGJhckJ1dHRvbigwKTt0aGlzLmRyYXdTY3JvbGxiYXJCdXR0b24oMSl9O2MucHJvdG90eXBlLnNldFJhbmdlPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5vcHRpb25zLGc9Yy52ZXJ0aWNhbCxrPWMubWluV2lkdGgsZj10aGlzLmJhcldpZHRoLGQsdj0hdGhpcy5yZW5kZXJlZHx8dGhpcy5oYXNEcmFnZ2VkfHx0aGlzLmNoYXJ0Lm5hdmlnYXRvciYmdGhpcy5jaGFydC5uYXZpZ2F0b3IuaGFzRHJhZ2dlZD8iYXR0ciI6ImFuaW1hdGUiO2lmKHkoZikpe2E9TWF0aC5tYXgoYSwwKTt2YXIgbD1NYXRoLmNlaWwoZiphKTt0aGlzLmNhbGN1bGF0ZWRXaWR0aD1kPUQoZioKTWF0aC5taW4oYiwxKS1sKTtkPGsmJihsPShmLWsrZCkqYSxkPWspO2s9TWF0aC5mbG9vcihsK3RoaXMueE9mZnNldCt0aGlzLnlPZmZzZXQpO2Y9ZC8yLS41O3RoaXMuZnJvbT1hO3RoaXMudG89YjtnPyh0aGlzLnNjcm9sbGJhckdyb3VwW3ZdKHt0cmFuc2xhdGVZOmt9KSx0aGlzLnNjcm9sbGJhclt2XSh7aGVpZ2h0OmR9KSx0aGlzLnNjcm9sbGJhclJpZmxlc1t2XSh7dHJhbnNsYXRlWTpmfSksdGhpcy5zY3JvbGxiYXJUb3A9ayx0aGlzLnNjcm9sbGJhckxlZnQ9MCk6KHRoaXMuc2Nyb2xsYmFyR3JvdXBbdl0oe3RyYW5zbGF0ZVg6a30pLHRoaXMuc2Nyb2xsYmFyW3ZdKHt3aWR0aDpkfSksdGhpcy5zY3JvbGxiYXJSaWZsZXNbdl0oe3RyYW5zbGF0ZVg6Zn0pLHRoaXMuc2Nyb2xsYmFyTGVmdD1rLHRoaXMuc2Nyb2xsYmFyVG9wPTApOzEyPj1kP3RoaXMuc2Nyb2xsYmFyUmlmbGVzLmhpZGUoKTp0aGlzLnNjcm9sbGJhclJpZmxlcy5zaG93KCEwKTshMT09PWMuc2hvd0Z1bGwmJigwPj0KYSYmMTw9Yj90aGlzLmdyb3VwLmhpZGUoKTp0aGlzLmdyb3VwLnNob3coKSk7dGhpcy5yZW5kZXJlZD0hMH19O2MucHJvdG90eXBlLnRyYWNrQ2xpY2s9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcy5jaGFydC5wb2ludGVyLm5vcm1hbGl6ZShhKSxlPXRoaXMudG8tdGhpcy5mcm9tLGc9dGhpcy55K3RoaXMuc2Nyb2xsYmFyVG9wLGs9dGhpcy54K3RoaXMuc2Nyb2xsYmFyTGVmdDt0aGlzLm9wdGlvbnMudmVydGljYWwmJmMuY2hhcnRZPmd8fCF0aGlzLm9wdGlvbnMudmVydGljYWwmJmMuY2hhcnRYPms/dGhpcy51cGRhdGVQb3NpdGlvbih0aGlzLmZyb20rZSx0aGlzLnRvK2UpOnRoaXMudXBkYXRlUG9zaXRpb24odGhpcy5mcm9tLWUsdGhpcy50by1lKTtiKHRoaXMsImNoYW5nZWQiLHtmcm9tOnRoaXMuZnJvbSx0bzp0aGlzLnRvLHRyaWdnZXI6InNjcm9sbGJhciIsRE9NRXZlbnQ6YX0pfTtjLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYSl7dGhpcy5kZXN0cm95KCk7dGhpcy5pbml0KHRoaXMuY2hhcnQucmVuZGVyZXIsCmcoITAsdGhpcy5vcHRpb25zLGEpLHRoaXMuY2hhcnQpfTtjLnByb3RvdHlwZS51cGRhdGVQb3NpdGlvbj1mdW5jdGlvbihhLGIpezE8YiYmKGE9RCgxLUQoYi1hKSksYj0xKTswPmEmJihiPUQoYi1hKSxhPTApO3RoaXMuZnJvbT1hO3RoaXMudG89Yn07Yy5kZWZhdWx0T3B0aW9ucz17aGVpZ2h0Okk/MjA6MTQsYmFyQm9yZGVyUmFkaXVzOjAsYnV0dG9uQm9yZGVyUmFkaXVzOjAsbGl2ZVJlZHJhdzp2b2lkIDAsbWFyZ2luOjEwLG1pbldpZHRoOjYsc3RlcDouMix6SW5kZXg6MyxiYXJCYWNrZ3JvdW5kQ29sb3I6IiNjY2NjY2MiLGJhckJvcmRlcldpZHRoOjEsYmFyQm9yZGVyQ29sb3I6IiNjY2NjY2MiLGJ1dHRvbkFycm93Q29sb3I6IiMzMzMzMzMiLGJ1dHRvbkJhY2tncm91bmRDb2xvcjoiI2U2ZTZlNiIsYnV0dG9uQm9yZGVyQ29sb3I6IiNjY2NjY2MiLGJ1dHRvbkJvcmRlcldpZHRoOjEscmlmbGVDb2xvcjoiIzMzMzMzMyIsdHJhY2tCYWNrZ3JvdW5kQ29sb3I6IiNmMmYyZjIiLAp0cmFja0JvcmRlckNvbG9yOiIjZjJmMmYyIix0cmFja0JvcmRlcldpZHRoOjF9O3JldHVybiBjfSgpO2wuU2Nyb2xsYmFyfHwoei5zY3JvbGxiYXI9ZyghMCx4LmRlZmF1bHRPcHRpb25zLHouc2Nyb2xsYmFyKSxsLlNjcm9sbGJhcj14LHUuY29tcG9zZShjLHgpKTtyZXR1cm4gbC5TY3JvbGxiYXJ9KTtKKGMsInBhcnRzL1JhbmdlU2VsZWN0b3IuanMiLFtjWyJwYXJ0cy9BeGlzLmpzIl0sY1sicGFydHMvQ2hhcnQuanMiXSxjWyJwYXJ0cy9HbG9iYWxzLmpzIl0sY1sicGFydHMvT3B0aW9ucy5qcyJdLGNbInBhcnRzL1NWR0VsZW1lbnQuanMiXSxjWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYyxsLHUseix4LEEpe3ZhciBEPXouZGVmYXVsdE9wdGlvbnMseT1BLmFkZEV2ZW50LGs9QS5jcmVhdGVFbGVtZW50LGI9QS5jc3MsZz1BLmRlZmluZWQsbT1BLmRlc3Ryb3lPYmplY3RQcm9wZXJ0aWVzLHQ9QS5kaXNjYXJkRWxlbWVudCxIPUEuZXh0ZW5kLEk9QS5maXJlRXZlbnQsCkU9QS5pc051bWJlcixwPUEubWVyZ2UsYT1BLm9iamVjdEVhY2gsdz1BLnBpY2ssZT1BLnBJbnQsQz1BLnNwbGF0O0goRCx7cmFuZ2VTZWxlY3Rvcjp7dmVydGljYWxBbGlnbjoidG9wIixidXR0b25UaGVtZTp7d2lkdGg6MjgsaGVpZ2h0OjE4LHBhZGRpbmc6Mix6SW5kZXg6N30sZmxvYXRpbmc6ITEseDowLHk6MCxoZWlnaHQ6dm9pZCAwLGlucHV0UG9zaXRpb246e2FsaWduOiJyaWdodCIseDowLHk6MH0sYnV0dG9uUG9zaXRpb246e2FsaWduOiJsZWZ0Iix4OjAseTowfSxsYWJlbFN0eWxlOntjb2xvcjoiIzY2NjY2NiJ9fX0pO0QubGFuZz1wKEQubGFuZyx7cmFuZ2VTZWxlY3Rvclpvb206Ilpvb20iLHJhbmdlU2VsZWN0b3JGcm9tOiJGcm9tIixyYW5nZVNlbGVjdG9yVG86IlRvIn0pO3ZhciBxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZihhKXt0aGlzLmJ1dHRvbnM9dm9pZCAwO3RoaXMuYnV0dG9uT3B0aW9ucz1mLnByb3RvdHlwZS5kZWZhdWx0QnV0dG9uczt0aGlzLm9wdGlvbnM9dm9pZCAwOwp0aGlzLmNoYXJ0PWE7dGhpcy5pbml0KGEpfWYucHJvdG90eXBlLmNsaWNrQnV0dG9uPWZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5jaGFydCxlPXRoaXMuYnV0dG9uT3B0aW9uc1thXSxmPWQueEF4aXNbMF0saD1kLnNjcm9sbGVyJiZkLnNjcm9sbGVyLmdldFVuaW9uRXh0cmVtZXMoKXx8Znx8e30sbj1oLmRhdGFNaW4sZz1oLmRhdGFNYXgsaz1mJiZNYXRoLnJvdW5kKE1hdGgubWluKGYubWF4LHcoZyxmLm1heCkpKSx2PWUudHlwZTtoPWUuX3JhbmdlO3ZhciBsLHA9ZS5kYXRhR3JvdXBpbmc7aWYobnVsbCE9PW4mJm51bGwhPT1nKXtkLmZpeGVkUmFuZ2U9aDtwJiYodGhpcy5mb3JjZWREYXRhR3JvdXBpbmc9ITAsYy5wcm90b3R5cGUuc2V0RGF0YUdyb3VwaW5nLmNhbGwoZnx8e2NoYXJ0OnRoaXMuY2hhcnR9LHAsITEpLHRoaXMuZnJvemVuU3RhdGVzPWUucHJlc2VydmVEYXRhR3JvdXBpbmcpO2lmKCJtb250aCI9PT12fHwieWVhciI9PT12KWlmKGYpe3Y9e3JhbmdlOmUsbWF4OmssCmNoYXJ0OmQsZGF0YU1pbjpuLGRhdGFNYXg6Z307dmFyIG09Zi5taW5Gcm9tUmFuZ2UuY2FsbCh2KTtFKHYubmV3TWF4KSYmKGs9di5uZXdNYXgpfWVsc2UgaD1lO2Vsc2UgaWYoaCltPU1hdGgubWF4KGstaCxuKSxrPU1hdGgubWluKG0raCxnKTtlbHNlIGlmKCJ5dGQiPT09dilpZihmKSJ1bmRlZmluZWQiPT09dHlwZW9mIGcmJihuPU51bWJlci5NQVhfVkFMVUUsZz1OdW1iZXIuTUlOX1ZBTFVFLGQuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7YT1hLnhEYXRhO249TWF0aC5taW4oYVswXSxuKTtnPU1hdGgubWF4KGFbYS5sZW5ndGgtMV0sZyl9KSxiPSExKSxrPXRoaXMuZ2V0WVRERXh0cmVtZXMoZyxuLGQudGltZS51c2VVVEMpLG09bD1rLm1pbixrPWsubWF4O2Vsc2V7dGhpcy5kZWZlcnJlZFlURENsaWNrPWE7cmV0dXJufWVsc2UiYWxsIj09PXYmJmYmJihtPW4saz1nKTttKz1lLl9vZmZzZXRNaW47ays9ZS5fb2Zmc2V0TWF4O3RoaXMuc2V0U2VsZWN0ZWQoYSk7aWYoZilmLnNldEV4dHJlbWVzKG0sCmssdyhiLDEpLG51bGwse3RyaWdnZXI6InJhbmdlU2VsZWN0b3JCdXR0b24iLHJhbmdlU2VsZWN0b3JCdXR0b246ZX0pO2Vsc2V7dmFyIHE9QyhkLm9wdGlvbnMueEF4aXMpWzBdO3ZhciB0PXEucmFuZ2U7cS5yYW5nZT1oO3ZhciB1PXEubWluO3EubWluPWw7eShkLCJsb2FkIixmdW5jdGlvbigpe3EucmFuZ2U9dDtxLm1pbj11fSl9fX07Zi5wcm90b3R5cGUuc2V0U2VsZWN0ZWQ9ZnVuY3Rpb24oYSl7dGhpcy5zZWxlY3RlZD10aGlzLm9wdGlvbnMuc2VsZWN0ZWQ9YX07Zi5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9YS5vcHRpb25zLnJhbmdlU2VsZWN0b3IsZD1jLmJ1dHRvbnN8fGIuZGVmYXVsdEJ1dHRvbnMuc2xpY2UoKSxlPWMuc2VsZWN0ZWQsaD1mdW5jdGlvbigpe3ZhciBhPWIubWluSW5wdXQsYz1iLm1heElucHV0O2EmJmEuYmx1ciYmSShhLCJibHVyIik7YyYmYy5ibHVyJiZJKGMsImJsdXIiKX07Yi5jaGFydD1hO2Iub3B0aW9ucz1jO2IuYnV0dG9ucz0KW107Yi5idXR0b25PcHRpb25zPWQ7dGhpcy51bk1vdXNlRG93bj15KGEuY29udGFpbmVyLCJtb3VzZWRvd24iLGgpO3RoaXMudW5SZXNpemU9eShhLCJyZXNpemUiLGgpO2QuZm9yRWFjaChiLmNvbXB1dGVCdXR0b25SYW5nZSk7InVuZGVmaW5lZCIhPT10eXBlb2YgZSYmZFtlXSYmdGhpcy5jbGlja0J1dHRvbihlLCExKTt5KGEsImxvYWQiLGZ1bmN0aW9uKCl7YS54QXhpcyYmYS54QXhpc1swXSYmeShhLnhBeGlzWzBdLCJzZXRFeHRyZW1lcyIsZnVuY3Rpb24oYyl7dGhpcy5tYXgtdGhpcy5taW4hPT1hLmZpeGVkUmFuZ2UmJiJyYW5nZVNlbGVjdG9yQnV0dG9uIiE9PWMudHJpZ2dlciYmInVwZGF0ZWREYXRhIiE9PWMudHJpZ2dlciYmYi5mb3JjZWREYXRhR3JvdXBpbmcmJiFiLmZyb3plblN0YXRlcyYmdGhpcy5zZXREYXRhR3JvdXBpbmcoITEsITEpfSl9KX07Zi5wcm90b3R5cGUudXBkYXRlQnV0dG9uU3RhdGVzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMuY2hhcnQsYz1iLnhBeGlzWzBdLAplPU1hdGgucm91bmQoYy5tYXgtYy5taW4pLGY9IWMuaGFzVmlzaWJsZVNlcmllcyxoPWIuc2Nyb2xsZXImJmIuc2Nyb2xsZXIuZ2V0VW5pb25FeHRyZW1lcygpfHxjLG49aC5kYXRhTWluLGc9aC5kYXRhTWF4O2I9YS5nZXRZVERFeHRyZW1lcyhnLG4sYi50aW1lLnVzZVVUQyk7dmFyIGs9Yi5taW4sbD1iLm1heCxwPWEuc2VsZWN0ZWQsbT1FKHApLHE9YS5vcHRpb25zLmFsbEJ1dHRvbnNFbmFibGVkLHQ9YS5idXR0b25zO2EuYnV0dG9uT3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGIsZCl7dmFyIGg9Yi5fcmFuZ2Uscj1iLnR5cGUsRj1iLmNvdW50fHwxLHY9dFtkXSxCPTAsRz1iLl9vZmZzZXRNYXgtYi5fb2Zmc2V0TWluO2I9ZD09PXA7dmFyIHc9aD5nLW4sSz1oPGMubWluUmFuZ2UsdT0hMSxQPSExO2g9aD09PWU7KCJtb250aCI9PT1yfHwieWVhciI9PT1yKSYmZSszNkU1Pj04NjRFNSp7bW9udGg6MjgseWVhcjozNjV9W3JdKkYtRyYmZS0zNkU1PD04NjRFNSp7bW9udGg6MzEseWVhcjozNjZ9W3JdKgpGK0c/aD0hMDoieXRkIj09PXI/KGg9bC1rK0c9PT1lLHU9IWIpOiJhbGwiPT09ciYmKGg9Yy5tYXgtYy5taW4+PWctbixQPSFiJiZtJiZoKTtyPSFxJiYod3x8S3x8UHx8Zik7Rj1iJiZofHxoJiYhbSYmIXV8fGImJmEuZnJvemVuU3RhdGVzO3I/Qj0zOkYmJihtPSEwLEI9Mik7di5zdGF0ZSE9PUImJih2LnNldFN0YXRlKEIpLDA9PT1CJiZwPT09ZCYmYS5zZXRTZWxlY3RlZChudWxsKSl9KX07Zi5wcm90b3R5cGUuY29tcHV0ZUJ1dHRvblJhbmdlPWZ1bmN0aW9uKGEpe3ZhciBiPWEudHlwZSxjPWEuY291bnR8fDEsZD17bWlsbGlzZWNvbmQ6MSxzZWNvbmQ6MUUzLG1pbnV0ZTo2RTQsaG91cjozNkU1LGRheTo4NjRFNSx3ZWVrOjYwNDhFNX07aWYoZFtiXSlhLl9yYW5nZT1kW2JdKmM7ZWxzZSBpZigibW9udGgiPT09Ynx8InllYXIiPT09YilhLl9yYW5nZT04NjRFNSp7bW9udGg6MzAseWVhcjozNjV9W2JdKmM7YS5fb2Zmc2V0TWluPXcoYS5vZmZzZXRNaW4sMCk7YS5fb2Zmc2V0TWF4PQp3KGEub2Zmc2V0TWF4LDApO2EuX3JhbmdlKz1hLl9vZmZzZXRNYXgtYS5fb2Zmc2V0TWlufTtmLnByb3RvdHlwZS5zZXRJbnB1dFZhbHVlPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jaGFydC5vcHRpb25zLnJhbmdlU2VsZWN0b3IsZD10aGlzLmNoYXJ0LnRpbWUsZT10aGlzW2ErIklucHV0Il07ZyhiKSYmKGUucHJldmlvdXNWYWx1ZT1lLkhDVGltZSxlLkhDVGltZT1iKTtlLnZhbHVlPWQuZGF0ZUZvcm1hdChjLmlucHV0RWRpdERhdGVGb3JtYXR8fCIlWS0lbS0lZCIsZS5IQ1RpbWUpO3RoaXNbYSsiRGF0ZUJveCJdLmF0dHIoe3RleHQ6ZC5kYXRlRm9ybWF0KGMuaW5wdXREYXRlRm9ybWF0fHwiJWIgJWUsICVZIixlLkhDVGltZSl9KX07Zi5wcm90b3R5cGUuc2hvd0lucHV0PWZ1bmN0aW9uKGEpe3ZhciBjPXRoaXMuaW5wdXRHcm91cCxkPXRoaXNbYSsiRGF0ZUJveCJdO2IodGhpc1thKyJJbnB1dCJdLHtsZWZ0OmMudHJhbnNsYXRlWCtkLngrInB4Iix0b3A6Yy50cmFuc2xhdGVZKwoicHgiLHdpZHRoOmQud2lkdGgtMisicHgiLGhlaWdodDpkLmhlaWdodC0yKyJweCIsYm9yZGVyOiIycHggc29saWQgc2lsdmVyIn0pfTtmLnByb3RvdHlwZS5oaWRlSW5wdXQ9ZnVuY3Rpb24oYSl7Yih0aGlzW2ErIklucHV0Il0se2JvcmRlcjowLHdpZHRoOiIxcHgiLGhlaWdodDoiMXB4In0pO3RoaXMuc2V0SW5wdXRWYWx1ZShhKX07Zi5wcm90b3R5cGUuZHJhd0lucHV0PWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoKXt2YXIgYT1tLnZhbHVlLGI9KG4uaW5wdXREYXRlUGFyc2VyfHxEYXRlLnBhcnNlKShhKSxjPWYueEF4aXNbMF0saD1mLnNjcm9sbGVyJiZmLnNjcm9sbGVyLnhBeGlzP2Yuc2Nyb2xsZXIueEF4aXM6YyxnPWguZGF0YU1pbjtoPWguZGF0YU1heDtiIT09bS5wcmV2aW91c1ZhbHVlJiYobS5wcmV2aW91c1ZhbHVlPWIsRShiKXx8KGI9YS5zcGxpdCgiLSIpLGI9RGF0ZS5VVEMoZShiWzBdKSxlKGJbMV0pLTEsZShiWzJdKSkpLEUoYikmJihmLnRpbWUudXNlVVRDfHwoYis9CjZFNCoobmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCkpLGw/Yj5kLm1heElucHV0LkhDVGltZT9iPXZvaWQgMDpiPGcmJihiPWcpOmI8ZC5taW5JbnB1dC5IQ1RpbWU/Yj12b2lkIDA6Yj5oJiYoYj1oKSwidW5kZWZpbmVkIiE9PXR5cGVvZiBiJiZjLnNldEV4dHJlbWVzKGw/YjpjLm1pbixsP2MubWF4OmIsdm9pZCAwLHZvaWQgMCx7dHJpZ2dlcjoicmFuZ2VTZWxlY3RvcklucHV0In0pKSl9dmFyIGQ9dGhpcyxmPWQuY2hhcnQsZz1mLnJlbmRlcmVyLnN0eWxlfHx7fSxoPWYucmVuZGVyZXIsbj1mLm9wdGlvbnMucmFuZ2VTZWxlY3RvcixGPWQuZGl2LGw9Im1pbiI9PT1hLG0scSx0PXRoaXMuaW5wdXRHcm91cDt0aGlzW2ErIkxhYmVsIl09cT1oLmxhYmVsKEQubGFuZ1tsPyJyYW5nZVNlbGVjdG9yRnJvbSI6InJhbmdlU2VsZWN0b3JUbyJdLHRoaXMuaW5wdXRHcm91cC5vZmZzZXQpLmFkZENsYXNzKCJoaWdoY2hhcnRzLXJhbmdlLWxhYmVsIikuYXR0cih7cGFkZGluZzoyfSkuYWRkKHQpOwp0Lm9mZnNldCs9cS53aWR0aCs1O3RoaXNbYSsiRGF0ZUJveCJdPWg9aC5sYWJlbCgiIix0Lm9mZnNldCkuYWRkQ2xhc3MoImhpZ2hjaGFydHMtcmFuZ2UtaW5wdXQiKS5hdHRyKHtwYWRkaW5nOjIsd2lkdGg6bi5pbnB1dEJveFdpZHRofHw5MCxoZWlnaHQ6bi5pbnB1dEJveEhlaWdodHx8MTcsInRleHQtYWxpZ24iOiJjZW50ZXIifSkub24oImNsaWNrIixmdW5jdGlvbigpe2Quc2hvd0lucHV0KGEpO2RbYSsiSW5wdXQiXS5mb2N1cygpfSk7Zi5zdHlsZWRNb2RlfHxoLmF0dHIoe3N0cm9rZTpuLmlucHV0Qm94Qm9yZGVyQ29sb3J8fCIjY2NjY2NjIiwic3Ryb2tlLXdpZHRoIjoxfSk7aC5hZGQodCk7dC5vZmZzZXQrPWgud2lkdGgrKGw/MTA6MCk7dGhpc1thKyJJbnB1dCJdPW09aygiaW5wdXQiLHtuYW1lOmEsY2xhc3NOYW1lOiJoaWdoY2hhcnRzLXJhbmdlLXNlbGVjdG9yIix0eXBlOiJ0ZXh0In0se3RvcDpmLnBsb3RUb3ArInB4In0sRik7Zi5zdHlsZWRNb2RlfHwocS5jc3MocChnLApuLmxhYmVsU3R5bGUpKSxoLmNzcyhwKHtjb2xvcjoiIzMzMzMzMyJ9LGcsbi5pbnB1dFN0eWxlKSksYihtLEgoe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHBhZGRpbmc6MCx0ZXh0QWxpZ246ImNlbnRlciIsZm9udFNpemU6Zy5mb250U2l6ZSxmb250RmFtaWx5OmcuZm9udEZhbWlseSx0b3A6Ii05OTk5ZW0ifSxuLmlucHV0U3R5bGUpKSk7bS5vbmZvY3VzPWZ1bmN0aW9uKCl7ZC5zaG93SW5wdXQoYSl9O20ub25ibHVyPWZ1bmN0aW9uKCl7bT09PXUuZG9jLmFjdGl2ZUVsZW1lbnQmJmMoKTtkLmhpZGVJbnB1dChhKTttLmJsdXIoKX07bS5vbmNoYW5nZT1jO20ub25rZXlwcmVzcz1mdW5jdGlvbihhKXsxMz09PWEua2V5Q29kZSYmYygpfX07Zi5wcm90b3R5cGUuZ2V0UG9zaXRpb249ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LGI9YS5vcHRpb25zLnJhbmdlU2VsZWN0b3I7YT0idG9wIj09PWIudmVydGljYWxBbGlnbj9hLnBsb3RUb3AtCmEuYXhpc09mZnNldFswXTowO3JldHVybntidXR0b25Ub3A6YStiLmJ1dHRvblBvc2l0aW9uLnksaW5wdXRUb3A6YStiLmlucHV0UG9zaXRpb24ueS0xMH19O2YucHJvdG90eXBlLmdldFlUREV4dHJlbWVzPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmNoYXJ0LnRpbWUsZT1uZXcgZC5EYXRlKGEpLGg9ZC5nZXQoIkZ1bGxZZWFyIixlKTtjPWM/ZC5EYXRlLlVUQyhoLDAsMSk6K25ldyBkLkRhdGUoaCwwLDEpO2I9TWF0aC5tYXgoYnx8MCxjKTtlPWUuZ2V0VGltZSgpO3JldHVybnttYXg6TWF0aC5taW4oYXx8ZSxlKSxtaW46Yn19O2YucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMsZD1jLmNoYXJ0LGU9ZC5yZW5kZXJlcixoPWQuY29udGFpbmVyLG49ZC5vcHRpb25zLGY9bi5leHBvcnRpbmcmJiExIT09bi5leHBvcnRpbmcuZW5hYmxlZCYmbi5uYXZpZ2F0aW9uJiZuLm5hdmlnYXRpb24uYnV0dG9uT3B0aW9ucyxnPUQubGFuZyxsPWMuZGl2LG09bi5yYW5nZVNlbGVjdG9yLApwPXcobi5jaGFydC5zdHlsZSYmbi5jaGFydC5zdHlsZS56SW5kZXgsMCkrMTtuPW0uZmxvYXRpbmc7dmFyIHE9Yy5idXR0b25zO2w9Yy5pbnB1dEdyb3VwO3ZhciB2PW0uYnV0dG9uVGhlbWUsdD1tLmJ1dHRvblBvc2l0aW9uLHU9bS5pbnB1dFBvc2l0aW9uLHg9bS5pbnB1dEVuYWJsZWQseT12JiZ2LnN0YXRlcyx6PWQucGxvdExlZnQsQT1jLmJ1dHRvbkdyb3VwLEMsRT1jLm9wdGlvbnMudmVydGljYWxBbGlnbixIPWQubGVnZW5kLEk9SCYmSC5vcHRpb25zLEo9dC55LE49dS55LE89ZC5oYXNMb2FkZWQsUT1PPyJhbmltYXRlIjoiYXR0ciIsTT0wLEw9MDtpZighMSE9PW0uZW5hYmxlZCl7Yy5yZW5kZXJlZHx8KGMuZ3JvdXA9Qz1lLmcoInJhbmdlLXNlbGVjdG9yLWdyb3VwIikuYXR0cih7ekluZGV4Ojd9KS5hZGQoKSxjLmJ1dHRvbkdyb3VwPUE9ZS5nKCJyYW5nZS1zZWxlY3Rvci1idXR0b25zIikuYWRkKEMpLGMuem9vbVRleHQ9ZS50ZXh0KGcucmFuZ2VTZWxlY3Rvclpvb20sMCwKMTUpLmFkZChBKSxkLnN0eWxlZE1vZGV8fChjLnpvb21UZXh0LmNzcyhtLmxhYmVsU3R5bGUpLHZbInN0cm9rZS13aWR0aCJdPXcodlsic3Ryb2tlLXdpZHRoIl0sMCkpLGMuYnV0dG9uT3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7cVtiXT1lLmJ1dHRvbihhLnRleHQsMCwwLGZ1bmN0aW9uKGgpe3ZhciBkPWEuZXZlbnRzJiZhLmV2ZW50cy5jbGljayxlO2QmJihlPWQuY2FsbChhLGgpKTshMSE9PWUmJmMuY2xpY2tCdXR0b24oYik7Yy5pc0FjdGl2ZT0hMH0sdix5JiZ5LmhvdmVyLHkmJnkuc2VsZWN0LHkmJnkuZGlzYWJsZWQpLmF0dHIoeyJ0ZXh0LWFsaWduIjoiY2VudGVyIn0pLmFkZChBKX0pLCExIT09eCYmKGMuZGl2PWw9aygiZGl2IixudWxsLHtwb3NpdGlvbjoicmVsYXRpdmUiLGhlaWdodDowLHpJbmRleDpwfSksaC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShsLGgpLGMuaW5wdXRHcm91cD1sPWUuZygiaW5wdXQtZ3JvdXAiKS5hZGQoQyksbC5vZmZzZXQ9MCxjLmRyYXdJbnB1dCgibWluIiksCmMuZHJhd0lucHV0KCJtYXgiKSkpO2Muem9vbVRleHRbUV0oe3g6dyh6K3QueCx6KX0pO3ZhciBSPXcoeit0LngseikrYy56b29tVGV4dC5nZXRCQm94KCkud2lkdGgrNTtjLmJ1dHRvbk9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihhLGIpe3FbYl1bUV0oe3g6Un0pO1IrPXFbYl0ud2lkdGgrdyhtLmJ1dHRvblNwYWNpbmcsNSl9KTt6PWQucGxvdExlZnQtZC5zcGFjaW5nWzNdO2MudXBkYXRlQnV0dG9uU3RhdGVzKCk7ZiYmdGhpcy50aXRsZUNvbGxpc2lvbihkKSYmInRvcCI9PT1FJiYicmlnaHQiPT09dC5hbGlnbiYmdC55K0EuZ2V0QkJveCgpLmhlaWdodC0xMjwoZi55fHwwKStmLmhlaWdodCYmKE09LTQwKTtoPXQueC1kLnNwYWNpbmdbM107InJpZ2h0Ij09PXQuYWxpZ24/aCs9TS16OiJjZW50ZXIiPT09dC5hbGlnbiYmKGgtPXovMik7QS5hbGlnbih7eTp0Lnksd2lkdGg6QS5nZXRCQm94KCkud2lkdGgsYWxpZ246dC5hbGlnbix4Omh9LCEwLGQuc3BhY2luZ0JveCk7Yy5ncm91cC5wbGFjZWQ9Ck87Yy5idXR0b25Hcm91cC5wbGFjZWQ9TzshMSE9PXgmJihNPWYmJnRoaXMudGl0bGVDb2xsaXNpb24oZCkmJiJ0b3AiPT09RSYmInJpZ2h0Ij09PXUuYWxpZ24mJnUueS1sLmdldEJCb3goKS5oZWlnaHQtMTI8KGYueXx8MCkrZi5oZWlnaHQrZC5zcGFjaW5nWzBdPy00MDowLCJsZWZ0Ij09PXUuYWxpZ24/aD16OiJyaWdodCI9PT11LmFsaWduJiYoaD0tTWF0aC5tYXgoZC5heGlzT2Zmc2V0WzFdLC1NKSksbC5hbGlnbih7eTp1Lnksd2lkdGg6bC5nZXRCQm94KCkud2lkdGgsYWxpZ246dS5hbGlnbix4OnUueCtoLTJ9LCEwLGQuc3BhY2luZ0JveCksZj1sLmFsaWduQXR0ci50cmFuc2xhdGVYK2wuYWxpZ25PcHRpb25zLngtTStsLmdldEJCb3goKS54KzIsaD1sLmFsaWduT3B0aW9ucy53aWR0aCxnPUEuYWxpZ25BdHRyLnRyYW5zbGF0ZVgrQS5nZXRCQm94KCkueCx6PUEuZ2V0QkJveCgpLndpZHRoKzIwLCh1LmFsaWduPT09dC5hbGlnbnx8Zyt6PmYmJmYraD5nJiZKPE4rbC5nZXRCQm94KCkuaGVpZ2h0KSYmCmwuYXR0cih7dHJhbnNsYXRlWDpsLmFsaWduQXR0ci50cmFuc2xhdGVYKyhkLmF4aXNPZmZzZXRbMV0+PS1NPzA6LU0pLHRyYW5zbGF0ZVk6bC5hbGlnbkF0dHIudHJhbnNsYXRlWStBLmdldEJCb3goKS5oZWlnaHQrMTB9KSxjLnNldElucHV0VmFsdWUoIm1pbiIsYSksYy5zZXRJbnB1dFZhbHVlKCJtYXgiLGIpLGMuaW5wdXRHcm91cC5wbGFjZWQ9Tyk7Yy5ncm91cC5hbGlnbih7dmVydGljYWxBbGlnbjpFfSwhMCxkLnNwYWNpbmdCb3gpO2E9Yy5ncm91cC5nZXRCQm94KCkuaGVpZ2h0KzIwO2I9Yy5ncm91cC5hbGlnbkF0dHIudHJhbnNsYXRlWTsiYm90dG9tIj09PUUmJihIPUkmJiJib3R0b20iPT09SS52ZXJ0aWNhbEFsaWduJiZJLmVuYWJsZWQmJiFJLmZsb2F0aW5nP0gubGVnZW5kSGVpZ2h0K3coSS5tYXJnaW4sMTApOjAsYT1hK0gtMjAsTD1iLWEtKG4/MDptLnkpLShkLnRpdGxlT2Zmc2V0P2QudGl0bGVPZmZzZXRbMl06MCktMTApO2lmKCJ0b3AiPT09RSluJiYoTD0wKSxkLnRpdGxlT2Zmc2V0JiYKZC50aXRsZU9mZnNldFswXSYmKEw9ZC50aXRsZU9mZnNldFswXSksTCs9ZC5tYXJnaW5bMF0tZC5zcGFjaW5nWzBdfHwwO2Vsc2UgaWYoIm1pZGRsZSI9PT1FKWlmKE49PT1KKUw9MD5OP2Irdm9pZCAwOmI7ZWxzZSBpZihOfHxKKUw9MD5OfHwwPko/TC1NYXRoLm1pbihOLEopOmItYStOYU47Yy5ncm91cC50cmFuc2xhdGUobS54LG0ueStNYXRoLmZsb29yKEwpKTshMSE9PXgmJihjLm1pbklucHV0LnN0eWxlLm1hcmdpblRvcD1jLmdyb3VwLnRyYW5zbGF0ZVkrInB4IixjLm1heElucHV0LnN0eWxlLm1hcmdpblRvcD1jLmdyb3VwLnRyYW5zbGF0ZVkrInB4Iik7Yy5yZW5kZXJlZD0hMH19O2YucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbigpe3ZhciBhPXRoaXMub3B0aW9ucyxiPXRoaXMuZ3JvdXAsYz1hLnksZT1hLmJ1dHRvblBvc2l0aW9uLnksZj1hLmlucHV0UG9zaXRpb24ueTtpZihhLmhlaWdodClyZXR1cm4gYS5oZWlnaHQ7YT1iP2IuZ2V0QkJveCghMCkuaGVpZ2h0KzEzKwpjOjA7Yj1NYXRoLm1pbihmLGUpO2lmKDA+ZiYmMD5lfHwwPGYmJjA8ZSlhKz1NYXRoLmFicyhiKTtyZXR1cm4gYX07Zi5wcm90b3R5cGUudGl0bGVDb2xsaXNpb249ZnVuY3Rpb24oYSl7cmV0dXJuIShhLm9wdGlvbnMudGl0bGUudGV4dHx8YS5vcHRpb25zLnN1YnRpdGxlLnRleHQpfTtmLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jaGFydDtwKCEwLGIub3B0aW9ucy5yYW5nZVNlbGVjdG9yLGEpO3RoaXMuZGVzdHJveSgpO3RoaXMuaW5pdChiKTtiLnJhbmdlU2VsZWN0b3IucmVuZGVyKCl9O2YucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGM9Yi5taW5JbnB1dCxlPWIubWF4SW5wdXQ7Yi51bk1vdXNlRG93bigpO2IudW5SZXNpemUoKTttKGIuYnV0dG9ucyk7YyYmKGMub25mb2N1cz1jLm9uYmx1cj1jLm9uY2hhbmdlPW51bGwpO2UmJihlLm9uZm9jdXM9ZS5vbmJsdXI9ZS5vbmNoYW5nZT1udWxsKTthKGIsZnVuY3Rpb24oYSwKYyl7YSYmImNoYXJ0IiE9PWMmJihhIGluc3RhbmNlb2YgeD9hLmRlc3Ryb3koKTphIGluc3RhbmNlb2Ygd2luZG93LkhUTUxFbGVtZW50JiZ0KGEpKTthIT09Zi5wcm90b3R5cGVbY10mJihiW2NdPW51bGwpfSx0aGlzKX07cmV0dXJuIGZ9KCk7cS5wcm90b3R5cGUuZGVmYXVsdEJ1dHRvbnM9W3t0eXBlOiJtb250aCIsY291bnQ6MSx0ZXh0OiIxbSJ9LHt0eXBlOiJtb250aCIsY291bnQ6Myx0ZXh0OiIzbSJ9LHt0eXBlOiJtb250aCIsY291bnQ6Nix0ZXh0OiI2bSJ9LHt0eXBlOiJ5dGQiLHRleHQ6IllURCJ9LHt0eXBlOiJ5ZWFyIixjb3VudDoxLHRleHQ6IjF5In0se3R5cGU6ImFsbCIsdGV4dDoiQWxsIn1dO2MucHJvdG90eXBlLm1pbkZyb21SYW5nZT1mdW5jdGlvbigpe3ZhciBhPXRoaXMucmFuZ2UsYj1hLnR5cGUsYz10aGlzLm1heCxlPXRoaXMuY2hhcnQudGltZSxnPWZ1bmN0aW9uKGEsYyl7dmFyIGg9InllYXIiPT09Yj8iRnVsbFllYXIiOiJNb250aCIsZD1uZXcgZS5EYXRlKGEpLApuPWUuZ2V0KGgsZCk7ZS5zZXQoaCxkLG4rYyk7bj09PWUuZ2V0KGgsZCkmJmUuc2V0KCJEYXRlIixkLDApO3JldHVybiBkLmdldFRpbWUoKS1hfTtpZihFKGEpKXt2YXIgaz1jLWE7dmFyIGg9YX1lbHNlIGs9YytnKGMsLWEuY291bnQpLHRoaXMuY2hhcnQmJih0aGlzLmNoYXJ0LmZpeGVkUmFuZ2U9Yy1rKTt2YXIgbj13KHRoaXMuZGF0YU1pbixOdW1iZXIuTUlOX1ZBTFVFKTtFKGspfHwoaz1uKTtrPD1uJiYoaz1uLCJ1bmRlZmluZWQiPT09dHlwZW9mIGgmJihoPWcoayxhLmNvdW50KSksdGhpcy5uZXdNYXg9TWF0aC5taW4oaytoLHRoaXMuZGF0YU1heCkpO0UoYyl8fChrPXZvaWQgMCk7cmV0dXJuIGt9O3UuUmFuZ2VTZWxlY3Rvcnx8KHkobCwiYWZ0ZXJHZXRDb250YWluZXIiLGZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnJhbmdlU2VsZWN0b3IuZW5hYmxlZCYmKHRoaXMucmFuZ2VTZWxlY3Rvcj1uZXcgcSh0aGlzKSl9KSx5KGwsImJlZm9yZVJlbmRlciIsZnVuY3Rpb24oKXt2YXIgYT0KdGhpcy5heGVzLGI9dGhpcy5yYW5nZVNlbGVjdG9yO2ImJihFKGIuZGVmZXJyZWRZVERDbGljaykmJihiLmNsaWNrQnV0dG9uKGIuZGVmZXJyZWRZVERDbGljayksZGVsZXRlIGIuZGVmZXJyZWRZVERDbGljayksYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EudXBkYXRlTmFtZXMoKTthLnNldFNjYWxlKCl9KSx0aGlzLmdldEF4aXNNYXJnaW5zKCksYi5yZW5kZXIoKSxhPWIub3B0aW9ucy52ZXJ0aWNhbEFsaWduLGIub3B0aW9ucy5mbG9hdGluZ3x8KCJib3R0b20iPT09YT90aGlzLmV4dHJhQm90dG9tTWFyZ2luPSEwOiJtaWRkbGUiIT09YSYmKHRoaXMuZXh0cmFUb3BNYXJnaW49ITApKSl9KSx5KGwsInVwZGF0ZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS5vcHRpb25zLnJhbmdlU2VsZWN0b3I7YT10aGlzLnJhbmdlU2VsZWN0b3I7dmFyIGM9dGhpcy5leHRyYUJvdHRvbU1hcmdpbixlPXRoaXMuZXh0cmFUb3BNYXJnaW47YiYmYi5lbmFibGVkJiYhZyhhKSYmKHRoaXMub3B0aW9ucy5yYW5nZVNlbGVjdG9yLmVuYWJsZWQ9CiEwLHRoaXMucmFuZ2VTZWxlY3Rvcj1uZXcgcSh0aGlzKSk7dGhpcy5leHRyYVRvcE1hcmdpbj10aGlzLmV4dHJhQm90dG9tTWFyZ2luPSExO2EmJihhLnJlbmRlcigpLGI9YiYmYi52ZXJ0aWNhbEFsaWdufHxhLm9wdGlvbnMmJmEub3B0aW9ucy52ZXJ0aWNhbEFsaWduLGEub3B0aW9ucy5mbG9hdGluZ3x8KCJib3R0b20iPT09Yj90aGlzLmV4dHJhQm90dG9tTWFyZ2luPSEwOiJtaWRkbGUiIT09YiYmKHRoaXMuZXh0cmFUb3BNYXJnaW49ITApKSx0aGlzLmV4dHJhQm90dG9tTWFyZ2luIT09Y3x8dGhpcy5leHRyYVRvcE1hcmdpbiE9PWUpJiYodGhpcy5pc0RpcnR5Qm94PSEwKX0pLHkobCwicmVuZGVyIixmdW5jdGlvbigpe3ZhciBhPXRoaXMucmFuZ2VTZWxlY3RvcjthJiYhYS5vcHRpb25zLmZsb2F0aW5nJiYoYS5yZW5kZXIoKSxhPWEub3B0aW9ucy52ZXJ0aWNhbEFsaWduLCJib3R0b20iPT09YT90aGlzLmV4dHJhQm90dG9tTWFyZ2luPSEwOiJtaWRkbGUiIT09YSYmKHRoaXMuZXh0cmFUb3BNYXJnaW49CiEwKSl9KSx5KGwsImdldE1hcmdpbnMiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5yYW5nZVNlbGVjdG9yO2EmJihhPWEuZ2V0SGVpZ2h0KCksdGhpcy5leHRyYVRvcE1hcmdpbiYmKHRoaXMucGxvdFRvcCs9YSksdGhpcy5leHRyYUJvdHRvbU1hcmdpbiYmKHRoaXMubWFyZ2luQm90dG9tKz1hKSl9KSxsLnByb3RvdHlwZS5jYWxsYmFja3MucHVzaChmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7Yz1hLnhBeGlzWzBdLmdldEV4dHJlbWVzKCk7Zj1hLmxlZ2VuZDtoPW51bGw9PT1lfHx2b2lkIDA9PT1lP3ZvaWQgMDplLm9wdGlvbnMudmVydGljYWxBbGlnbjtFKGMubWluKSYmZS5yZW5kZXIoYy5taW4sYy5tYXgpO2UmJmYuZGlzcGxheSYmInRvcCI9PT1oJiZoPT09Zi5vcHRpb25zLnZlcnRpY2FsQWxpZ24mJihnPXAoYS5zcGFjaW5nQm94KSxnLnk9InZlcnRpY2FsIj09PWYub3B0aW9ucy5sYXlvdXQ/YS5wbG90VG9wOmcueStlLmdldEhlaWdodCgpLGYuZ3JvdXAucGxhY2VkPSExLGYuYWxpZ24oZykpfQp2YXIgYyxlPWEucmFuZ2VTZWxlY3RvcixmLGcsaDtpZihlKXt2YXIgbj15KGEueEF4aXNbMF0sImFmdGVyU2V0RXh0cmVtZXMiLGZ1bmN0aW9uKGEpe2UucmVuZGVyKGEubWluLGEubWF4KX0pO3ZhciBrPXkoYSwicmVkcmF3IixiKTtiKCl9eShhLCJkZXN0cm95IixmdW5jdGlvbigpe2UmJihrKCksbigpKX0pfSksdS5SYW5nZVNlbGVjdG9yPXEpO3JldHVybiB1LlJhbmdlU2VsZWN0b3J9KTtKKGMsInBhcnRzL05hdmlnYXRvckF4aXMuanMiLFtjWyJwYXJ0cy9HbG9iYWxzLmpzIl0sY1sicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGMsbCl7dmFyIHU9Yy5pc1RvdWNoRGV2aWNlLHo9bC5hZGRFdmVudCx4PWwuY29ycmVjdEZsb2F0LEE9bC5kZWZpbmVkLEQ9bC5pc051bWJlcix5PWwucGljayxrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihiKXt0aGlzLmF4aXM9Yn1iLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy5heGlzPXZvaWQgMH07Yi5wcm90b3R5cGUudG9GaXhlZFJhbmdlPQpmdW5jdGlvbihiLGMsayxsKXt2YXIgZz10aGlzLmF4aXMsbT1nLmNoYXJ0O209bSYmbS5maXhlZFJhbmdlO3ZhciBwPShnLnBvaW50UmFuZ2V8fDApLzI7Yj15KGssZy50cmFuc2xhdGUoYiwhMCwhZy5ob3JpeikpO2M9eShsLGcudHJhbnNsYXRlKGMsITAsIWcuaG9yaXopKTtnPW0mJihjLWIpL207QShrKXx8KGI9eChiK3ApKTtBKGwpfHwoYz14KGMtcCkpOy43PGcmJjEuMz5nJiYobD9iPWMtbTpjPWIrbSk7RChiKSYmRChjKXx8KGI9Yz12b2lkIDApO3JldHVybnttaW46YixtYXg6Y319O3JldHVybiBifSgpO3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXt9Yi5jb21wb3NlPWZ1bmN0aW9uKGIpe2Iua2VlcFByb3BzLnB1c2goIm5hdmlnYXRvckF4aXMiKTt6KGIsImluaXQiLGZ1bmN0aW9uKCl7dGhpcy5uYXZpZ2F0b3JBeGlzfHwodGhpcy5uYXZpZ2F0b3JBeGlzPW5ldyBrKHRoaXMpKX0pO3ooYiwiem9vbSIsZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5jaGFydC5vcHRpb25zLApnPWMubmF2aWdhdG9yLGs9dGhpcy5uYXZpZ2F0b3JBeGlzLGw9Yy5jaGFydC5waW5jaFR5cGUsbT1jLnJhbmdlU2VsZWN0b3I7Yz1jLmNoYXJ0Lnpvb21UeXBlO3RoaXMuaXNYQXhpcyYmKGcmJmcuZW5hYmxlZHx8bSYmbS5lbmFibGVkKSYmKCJ5Ij09PWM/Yi56b29tZWQ9ITE6KCF1JiYieHkiPT09Y3x8dSYmInh5Ij09PWwpJiZ0aGlzLm9wdGlvbnMucmFuZ2UmJihnPWsucHJldmlvdXNab29tLEEoYi5uZXdNaW4pP2sucHJldmlvdXNab29tPVt0aGlzLm1pbix0aGlzLm1heF06ZyYmKGIubmV3TWluPWdbMF0sYi5uZXdNYXg9Z1sxXSxrLnByZXZpb3VzWm9vbT12b2lkIDApKSk7InVuZGVmaW5lZCIhPT10eXBlb2YgYi56b29tZWQmJmIucHJldmVudERlZmF1bHQoKX0pfTtiLkFkZGl0aW9uc0NsYXNzPWs7cmV0dXJuIGJ9KCl9KTtKKGMsInBhcnRzL05hdmlnYXRvci5qcyIsW2NbInBhcnRzL0F4aXMuanMiXSxjWyJwYXJ0cy9DaGFydC5qcyJdLGNbInBhcnRzL0NvbG9yLmpzIl0sY1sicGFydHMvR2xvYmFscy5qcyJdLApjWyJwYXJ0cy9OYXZpZ2F0b3JBeGlzLmpzIl0sY1sicGFydHMvT3B0aW9ucy5qcyJdLGNbInBhcnRzL1Njcm9sbGJhci5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihjLGwsdSx6LHgsQSxELHkpe3U9dS5wYXJzZTt2YXIgaz1BLmRlZmF1bHRPcHRpb25zLGI9eS5hZGRFdmVudCxnPXkuY2xhbXAsbT15LmNvcnJlY3RGbG9hdCx0PXkuZGVmaW5lZCxIPXkuZGVzdHJveU9iamVjdFByb3BlcnRpZXMsST15LmVyYXNlLEU9eS5leHRlbmQscD15LmZpbmQsYT15LmlzQXJyYXksdz15LmlzTnVtYmVyLGU9eS5tZXJnZSxDPXkucGljayxxPXkucmVtb3ZlRXZlbnQsZj15LnNwbGF0LGQ9ei5oYXNUb3VjaCx2PXouaXNUb3VjaERldmljZTtBPXouU2VyaWVzO3ZhciBHPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyliW2MtMV09YXJndW1lbnRzW2NdO2I9W10uZmlsdGVyLmNhbGwoYix3KTtpZihiLmxlbmd0aClyZXR1cm4gTWF0aFthXS5hcHBseSgwLApiKX07eT0idW5kZWZpbmVkIj09PXR5cGVvZiB6LnNlcmllc1R5cGVzLmFyZWFzcGxpbmU/ImxpbmUiOiJhcmVhc3BsaW5lIjtFKGsse25hdmlnYXRvcjp7aGVpZ2h0OjQwLG1hcmdpbjoyNSxtYXNrSW5zaWRlOiEwLGhhbmRsZXM6e3dpZHRoOjcsaGVpZ2h0OjE1LHN5bWJvbHM6WyJuYXZpZ2F0b3ItaGFuZGxlIiwibmF2aWdhdG9yLWhhbmRsZSJdLGVuYWJsZWQ6ITAsbGluZVdpZHRoOjEsYmFja2dyb3VuZENvbG9yOiIjZjJmMmYyIixib3JkZXJDb2xvcjoiIzk5OTk5OSJ9LG1hc2tGaWxsOnUoIiM2Njg1YzIiKS5zZXRPcGFjaXR5KC4zKS5nZXQoKSxvdXRsaW5lQ29sb3I6IiNjY2NjY2MiLG91dGxpbmVXaWR0aDoxLHNlcmllczp7dHlwZTp5LGZpbGxPcGFjaXR5Oi4wNSxsaW5lV2lkdGg6MSxjb21wYXJlOm51bGwsZGF0YUdyb3VwaW5nOnthcHByb3hpbWF0aW9uOiJhdmVyYWdlIixlbmFibGVkOiEwLGdyb3VwUGl4ZWxXaWR0aDoyLHNtb290aGVkOiEwLHVuaXRzOltbIm1pbGxpc2Vjb25kIiwKWzEsMiw1LDEwLDIwLDI1LDUwLDEwMCwyMDAsNTAwXV0sWyJzZWNvbmQiLFsxLDIsNSwxMCwxNSwzMF1dLFsibWludXRlIixbMSwyLDUsMTAsMTUsMzBdXSxbImhvdXIiLFsxLDIsMyw0LDYsOCwxMl1dLFsiZGF5IixbMSwyLDMsNF1dLFsid2VlayIsWzEsMiwzXV0sWyJtb250aCIsWzEsMyw2XV0sWyJ5ZWFyIixudWxsXV19LGRhdGFMYWJlbHM6e2VuYWJsZWQ6ITEsekluZGV4OjJ9LGlkOiJoaWdoY2hhcnRzLW5hdmlnYXRvci1zZXJpZXMiLGNsYXNzTmFtZToiaGlnaGNoYXJ0cy1uYXZpZ2F0b3Itc2VyaWVzIixsaW5lQ29sb3I6bnVsbCxtYXJrZXI6e2VuYWJsZWQ6ITF9LHRocmVzaG9sZDpudWxsfSx4QXhpczp7b3ZlcnNjcm9sbDowLGNsYXNzTmFtZToiaGlnaGNoYXJ0cy1uYXZpZ2F0b3IteGF4aXMiLHRpY2tMZW5ndGg6MCxsaW5lV2lkdGg6MCxncmlkTGluZUNvbG9yOiIjZTZlNmU2IixncmlkTGluZVdpZHRoOjEsdGlja1BpeGVsSW50ZXJ2YWw6MjAwLGxhYmVsczp7YWxpZ246ImxlZnQiLApzdHlsZTp7Y29sb3I6IiM5OTk5OTkifSx4OjMseTotNH0sY3Jvc3NoYWlyOiExfSx5QXhpczp7Y2xhc3NOYW1lOiJoaWdoY2hhcnRzLW5hdmlnYXRvci15YXhpcyIsZ3JpZExpbmVXaWR0aDowLHN0YXJ0T25UaWNrOiExLGVuZE9uVGljazohMSxtaW5QYWRkaW5nOi4xLG1heFBhZGRpbmc6LjEsbGFiZWxzOntlbmFibGVkOiExfSxjcm9zc2hhaXI6ITEsdGl0bGU6e3RleHQ6bnVsbH0sdGlja0xlbmd0aDowLHRpY2tXaWR0aDowfX19KTt6LlJlbmRlcmVyLnByb3RvdHlwZS5zeW1ib2xzWyJuYXZpZ2F0b3ItaGFuZGxlIl09ZnVuY3Rpb24oYSxiLGMsZSxkKXthPShkJiZkLndpZHRofHwwKS8yO2I9TWF0aC5yb3VuZChhLzMpKy41O2Q9ZCYmZC5oZWlnaHR8fDA7cmV0dXJuW1siTSIsLWEtMSwuNV0sWyJMIixhLC41XSxbIkwiLGEsZCsuNV0sWyJMIiwtYS0xLGQrLjVdLFsiTCIsLWEtMSwuNV0sWyJNIiwtYiw0XSxbIkwiLC1iLGQtM10sWyJNIixiLTEsNF0sWyJMIixiLTEsZC0zXV19O3ZhciBCPQpmdW5jdGlvbigpe2Z1bmN0aW9uIGwoYSl7dGhpcy56b29tZWRNaW49dGhpcy56b29tZWRNYXg9dGhpcy55QXhpcz10aGlzLnhBeGlzPXRoaXMudG9wPXRoaXMuc2l6ZT10aGlzLnNoYWRlcz10aGlzLnJlbmRlcmVkPXRoaXMucmFuZ2U9dGhpcy5vdXRsaW5lSGVpZ2h0PXRoaXMub3V0bGluZT10aGlzLm9wcG9zaXRlPXRoaXMubmF2aWdhdG9yU2l6ZT10aGlzLm5hdmlnYXRvclNlcmllcz10aGlzLm5hdmlnYXRvck9wdGlvbnM9dGhpcy5uYXZpZ2F0b3JHcm91cD10aGlzLm5hdmlnYXRvckVuYWJsZWQ9dGhpcy5sZWZ0PXRoaXMuaGVpZ2h0PXRoaXMuaGFuZGxlcz10aGlzLmNoYXJ0PXRoaXMuYmFzZVNlcmllcz12b2lkIDA7dGhpcy5pbml0KGEpfWwucHJvdG90eXBlLmRyYXdIYW5kbGU9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGg9dGhpcy5uYXZpZ2F0b3JPcHRpb25zLmhhbmRsZXMuaGVpZ2h0O3RoaXMuaGFuZGxlc1tiXVtlXShjP3t0cmFuc2xhdGVYOk1hdGgucm91bmQodGhpcy5sZWZ0Kwp0aGlzLmhlaWdodC8yKSx0cmFuc2xhdGVZOk1hdGgucm91bmQodGhpcy50b3ArcGFyc2VJbnQoYSwxMCkrLjUtaCl9Ont0cmFuc2xhdGVYOk1hdGgucm91bmQodGhpcy5sZWZ0K3BhcnNlSW50KGEsMTApKSx0cmFuc2xhdGVZOk1hdGgucm91bmQodGhpcy50b3ArdGhpcy5oZWlnaHQvMi1oLzItMSl9KX07bC5wcm90b3R5cGUuZHJhd091dGxpbmU9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGg9dGhpcy5uYXZpZ2F0b3JPcHRpb25zLm1hc2tJbnNpZGUsZD10aGlzLm91dGxpbmUuc3Ryb2tlV2lkdGgoKSxuPWQvMixmPWQlMi8yO2Q9dGhpcy5vdXRsaW5lSGVpZ2h0O3ZhciBnPXRoaXMuc2Nyb2xsYmFySGVpZ2h0fHwwLGs9dGhpcy5zaXplLGw9dGhpcy5sZWZ0LWcsbT10aGlzLnRvcDtjPyhsLT1uLGM9bStiK2YsYj1tK2ErZixmPVtbIk0iLGwrZCxtLWctZl0sWyJMIixsK2QsY10sWyJMIixsLGNdLFsiTCIsbCxiXSxbIkwiLGwrZCxiXSxbIkwiLGwrZCxtK2srZ11dLGgmJmYucHVzaChbIk0iLApsK2QsYy1uXSxbIkwiLGwrZCxiK25dKSk6KGErPWwrZy1mLGIrPWwrZy1mLG0rPW4sZj1bWyJNIixsLG1dLFsiTCIsYSxtXSxbIkwiLGEsbStkXSxbIkwiLGIsbStkXSxbIkwiLGIsbV0sWyJMIixsK2srMipnLG1dXSxoJiZmLnB1c2goWyJNIixhLW4sbV0sWyJMIixiK24sbV0pKTt0aGlzLm91dGxpbmVbZV0oe2Q6Zn0pfTtsLnByb3RvdHlwZS5kcmF3TWFza3M9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGQ9dGhpcy5sZWZ0LGg9dGhpcy50b3Asbj10aGlzLmhlaWdodDtpZihjKXt2YXIgZj1bZCxkLGRdO3ZhciBnPVtoLGgrYSxoK2JdO3ZhciBrPVtuLG4sbl07dmFyIGw9W2EsYi1hLHRoaXMuc2l6ZS1iXX1lbHNlIGY9W2QsZCthLGQrYl0sZz1baCxoLGhdLGs9W2EsYi1hLHRoaXMuc2l6ZS1iXSxsPVtuLG4sbl07dGhpcy5zaGFkZXMuZm9yRWFjaChmdW5jdGlvbihhLGIpe2FbZV0oe3g6ZltiXSx5OmdbYl0sd2lkdGg6a1tiXSxoZWlnaHQ6bFtiXX0pfSl9O2wucHJvdG90eXBlLnJlbmRlckVsZW1lbnRzPQpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYj1hLm5hdmlnYXRvck9wdGlvbnMsYz1iLm1hc2tJbnNpZGUsZT1hLmNoYXJ0LGQ9ZS5yZW5kZXJlcixmLGc9e2N1cnNvcjplLmludmVydGVkPyJucy1yZXNpemUiOiJldy1yZXNpemUifTthLm5hdmlnYXRvckdyb3VwPWY9ZC5nKCJuYXZpZ2F0b3IiKS5hdHRyKHt6SW5kZXg6OCx2aXNpYmlsaXR5OiJoaWRkZW4ifSkuYWRkKCk7WyFjLGMsIWNdLmZvckVhY2goZnVuY3Rpb24oYyxoKXthLnNoYWRlc1toXT1kLnJlY3QoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1uYXZpZ2F0b3ItbWFzayIrKDE9PT1oPyItaW5zaWRlIjoiLW91dHNpZGUiKSkuYWRkKGYpO2Uuc3R5bGVkTW9kZXx8YS5zaGFkZXNbaF0uYXR0cih7ZmlsbDpjP2IubWFza0ZpbGw6InJnYmEoMCwwLDAsMCkifSkuY3NzKDE9PT1oJiZnKX0pO2Eub3V0bGluZT1kLnBhdGgoKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1uYXZpZ2F0b3Itb3V0bGluZSIpLmFkZChmKTtlLnN0eWxlZE1vZGV8fGEub3V0bGluZS5hdHRyKHsic3Ryb2tlLXdpZHRoIjpiLm91dGxpbmVXaWR0aCwKc3Ryb2tlOmIub3V0bGluZUNvbG9yfSk7Yi5oYW5kbGVzLmVuYWJsZWQmJlswLDFdLmZvckVhY2goZnVuY3Rpb24oYyl7Yi5oYW5kbGVzLmludmVydGVkPWUuaW52ZXJ0ZWQ7YS5oYW5kbGVzW2NdPWQuc3ltYm9sKGIuaGFuZGxlcy5zeW1ib2xzW2NdLC1iLmhhbmRsZXMud2lkdGgvMi0xLDAsYi5oYW5kbGVzLndpZHRoLGIuaGFuZGxlcy5oZWlnaHQsYi5oYW5kbGVzKTthLmhhbmRsZXNbY10uYXR0cih7ekluZGV4OjctY30pLmFkZENsYXNzKCJoaWdoY2hhcnRzLW5hdmlnYXRvci1oYW5kbGUgaGlnaGNoYXJ0cy1uYXZpZ2F0b3ItaGFuZGxlLSIrWyJsZWZ0IiwicmlnaHQiXVtjXSkuYWRkKGYpO2lmKCFlLnN0eWxlZE1vZGUpe3ZhciBoPWIuaGFuZGxlczthLmhhbmRsZXNbY10uYXR0cih7ZmlsbDpoLmJhY2tncm91bmRDb2xvcixzdHJva2U6aC5ib3JkZXJDb2xvciwic3Ryb2tlLXdpZHRoIjpoLmxpbmVXaWR0aH0pLmNzcyhnKX19KX07bC5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGEpeyh0aGlzLnNlcmllc3x8CltdKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuYmFzZVNlcmllcyYmZGVsZXRlIGEuYmFzZVNlcmllcy5uYXZpZ2F0b3JTZXJpZXN9KTt0aGlzLmRlc3Ryb3koKTtlKCEwLHRoaXMuY2hhcnQub3B0aW9ucy5uYXZpZ2F0b3IsdGhpcy5vcHRpb25zLGEpO3RoaXMuaW5pdCh0aGlzLmNoYXJ0KX07bC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGEsYixjLGUpe3ZhciBkPXRoaXMuY2hhcnQsaD10aGlzLnNjcm9sbGJhckhlaWdodCxmLG49dGhpcy54QXhpcyxrPW4ucG9pbnRSYW5nZXx8MDt2YXIgbD1uLm5hdmlnYXRvckF4aXMuZmFrZT9kLnhBeGlzWzBdOm47dmFyIHA9dGhpcy5uYXZpZ2F0b3JFbmFibGVkLHEscj10aGlzLnJlbmRlcmVkO3ZhciBGPWQuaW52ZXJ0ZWQ7dmFyIHU9ZC54QXhpc1swXS5taW5SYW5nZSx2PWQueEF4aXNbMF0ub3B0aW9ucy5tYXhSYW5nZTtpZighdGhpcy5oYXNEcmFnZ2VkfHx0KGMpKXthPW0oYS1rLzIpO2I9bShiK2svMik7aWYoIXcoYSl8fCF3KGIpKWlmKHIpYz0KMCxlPUMobi53aWR0aCxsLndpZHRoKTtlbHNlIHJldHVybjt0aGlzLmxlZnQ9QyhuLmxlZnQsZC5wbG90TGVmdCtoKyhGP2QucGxvdFdpZHRoOjApKTt0aGlzLnNpemU9cT1mPUMobi5sZW4sKEY/ZC5wbG90SGVpZ2h0OmQucGxvdFdpZHRoKS0yKmgpO2Q9Rj9oOmYrMipoO2M9QyhjLG4udG9QaXhlbHMoYSwhMCkpO2U9QyhlLG4udG9QaXhlbHMoYiwhMCkpO3coYykmJkluZmluaXR5IT09TWF0aC5hYnMoYyl8fChjPTAsZT1kKTthPW4udG9WYWx1ZShjLCEwKTtiPW4udG9WYWx1ZShlLCEwKTt2YXIgeD1NYXRoLmFicyhtKGItYSkpO3g8dT90aGlzLmdyYWJiZWRMZWZ0P2M9bi50b1BpeGVscyhiLXUtaywhMCk6dGhpcy5ncmFiYmVkUmlnaHQmJihlPW4udG9QaXhlbHMoYSt1K2ssITApKTp0KHYpJiZtKHgtayk+diYmKHRoaXMuZ3JhYmJlZExlZnQ/Yz1uLnRvUGl4ZWxzKGItdi1rLCEwKTp0aGlzLmdyYWJiZWRSaWdodCYmKGU9bi50b1BpeGVscyhhK3YraywhMCkpKTt0aGlzLnpvb21lZE1heD0KZyhNYXRoLm1heChjLGUpLDAscSk7dGhpcy56b29tZWRNaW49Zyh0aGlzLmZpeGVkV2lkdGg/dGhpcy56b29tZWRNYXgtdGhpcy5maXhlZFdpZHRoOk1hdGgubWluKGMsZSksMCxxKTt0aGlzLnJhbmdlPXRoaXMuem9vbWVkTWF4LXRoaXMuem9vbWVkTWluO3E9TWF0aC5yb3VuZCh0aGlzLnpvb21lZE1heCk7Yz1NYXRoLnJvdW5kKHRoaXMuem9vbWVkTWluKTtwJiYodGhpcy5uYXZpZ2F0b3JHcm91cC5hdHRyKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIn0pLHI9ciYmIXRoaXMuaGFzRHJhZ2dlZD8iYW5pbWF0ZSI6ImF0dHIiLHRoaXMuZHJhd01hc2tzKGMscSxGLHIpLHRoaXMuZHJhd091dGxpbmUoYyxxLEYsciksdGhpcy5uYXZpZ2F0b3JPcHRpb25zLmhhbmRsZXMuZW5hYmxlZCYmKHRoaXMuZHJhd0hhbmRsZShjLDAsRixyKSx0aGlzLmRyYXdIYW5kbGUocSwxLEYscikpKTt0aGlzLnNjcm9sbGJhciYmKEY/KEY9dGhpcy50b3AtaCxsPXRoaXMubGVmdC1oKyhwfHwhbC5vcHBvc2l0ZT8wOgoobC50aXRsZU9mZnNldHx8MCkrbC5heGlzVGl0bGVNYXJnaW4pLGg9ZisyKmgpOihGPXRoaXMudG9wKyhwP3RoaXMuaGVpZ2h0Oi1oKSxsPXRoaXMubGVmdC1oKSx0aGlzLnNjcm9sbGJhci5wb3NpdGlvbihsLEYsZCxoKSx0aGlzLnNjcm9sbGJhci5zZXRSYW5nZSh0aGlzLnpvb21lZE1pbi8oZnx8MSksdGhpcy56b29tZWRNYXgvKGZ8fDEpKSk7dGhpcy5yZW5kZXJlZD0hMH19O2wucHJvdG90eXBlLmFkZE1vdXNlRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxjPWEuY2hhcnQsZT1jLmNvbnRhaW5lcixmPVtdLGcsazthLm1vdXNlTW92ZUhhbmRsZXI9Zz1mdW5jdGlvbihiKXthLm9uTW91c2VNb3ZlKGIpfTthLm1vdXNlVXBIYW5kbGVyPWs9ZnVuY3Rpb24oYil7YS5vbk1vdXNlVXAoYil9O2Y9YS5nZXRQYXJ0c0V2ZW50cygibW91c2Vkb3duIik7Zi5wdXNoKGIoYy5yZW5kZXJUbywibW91c2Vtb3ZlIixnKSxiKGUub3duZXJEb2N1bWVudCwibW91c2V1cCIsaykpO2QmJihmLnB1c2goYihjLnJlbmRlclRvLAoidG91Y2htb3ZlIixnKSxiKGUub3duZXJEb2N1bWVudCwidG91Y2hlbmQiLGspKSxmLmNvbmNhdChhLmdldFBhcnRzRXZlbnRzKCJ0b3VjaHN0YXJ0IikpKTthLmV2ZW50c1RvVW5iaW5kPWY7YS5zZXJpZXMmJmEuc2VyaWVzWzBdJiZmLnB1c2goYihhLnNlcmllc1swXS54QXhpcywiZm91bmRFeHRyZW1lcyIsZnVuY3Rpb24oKXtjLm5hdmlnYXRvci5tb2RpZnlOYXZpZ2F0b3JBeGlzRXh0cmVtZXMoKX0pKX07bC5wcm90b3R5cGUuZ2V0UGFydHNFdmVudHM9ZnVuY3Rpb24oYSl7dmFyIGM9dGhpcyxlPVtdO1sic2hhZGVzIiwiaGFuZGxlcyJdLmZvckVhY2goZnVuY3Rpb24oZCl7Y1tkXS5mb3JFYWNoKGZ1bmN0aW9uKGgsZil7ZS5wdXNoKGIoaC5lbGVtZW50LGEsZnVuY3Rpb24oYSl7Y1tkKyJNb3VzZWRvd24iXShhLGYpfSkpfSl9KTtyZXR1cm4gZX07bC5wcm90b3R5cGUuc2hhZGVzTW91c2Vkb3duPWZ1bmN0aW9uKGEsYil7YT10aGlzLmNoYXJ0LnBvaW50ZXIubm9ybWFsaXplKGEpOwp2YXIgYz10aGlzLmNoYXJ0LGU9dGhpcy54QXhpcyxkPXRoaXMuem9vbWVkTWluLGg9dGhpcy5sZWZ0LGY9dGhpcy5zaXplLGc9dGhpcy5yYW5nZSxuPWEuY2hhcnRYO2MuaW52ZXJ0ZWQmJihuPWEuY2hhcnRZLGg9dGhpcy50b3ApO2lmKDE9PT1iKXRoaXMuZ3JhYmJlZENlbnRlcj1uLHRoaXMuZml4ZWRXaWR0aD1nLHRoaXMuZHJhZ09mZnNldD1uLWQ7ZWxzZXthPW4taC1nLzI7aWYoMD09PWIpYT1NYXRoLm1heCgwLGEpO2Vsc2UgaWYoMj09PWImJmErZz49ZilpZihhPWYtZyx0aGlzLnJldmVyc2VkRXh0cmVtZXMpe2EtPWc7dmFyIGs9dGhpcy5nZXRVbmlvbkV4dHJlbWVzKCkuZGF0YU1pbn1lbHNlIHZhciBsPXRoaXMuZ2V0VW5pb25FeHRyZW1lcygpLmRhdGFNYXg7YSE9PWQmJih0aGlzLmZpeGVkV2lkdGg9ZyxiPWUubmF2aWdhdG9yQXhpcy50b0ZpeGVkUmFuZ2UoYSxhK2csayxsKSx0KGIubWluKSYmYy54QXhpc1swXS5zZXRFeHRyZW1lcyhNYXRoLm1pbihiLm1pbixiLm1heCksCk1hdGgubWF4KGIubWluLGIubWF4KSwhMCxudWxsLHt0cmlnZ2VyOiJuYXZpZ2F0b3IifSkpfX07bC5wcm90b3R5cGUuaGFuZGxlc01vdXNlZG93bj1mdW5jdGlvbihhLGIpe3RoaXMuY2hhcnQucG9pbnRlci5ub3JtYWxpemUoYSk7YT10aGlzLmNoYXJ0O3ZhciBjPWEueEF4aXNbMF0sZT10aGlzLnJldmVyc2VkRXh0cmVtZXM7MD09PWI/KHRoaXMuZ3JhYmJlZExlZnQ9ITAsdGhpcy5vdGhlckhhbmRsZVBvcz10aGlzLnpvb21lZE1heCx0aGlzLmZpeGVkRXh0cmVtZT1lP2MubWluOmMubWF4KToodGhpcy5ncmFiYmVkUmlnaHQ9ITAsdGhpcy5vdGhlckhhbmRsZVBvcz10aGlzLnpvb21lZE1pbix0aGlzLmZpeGVkRXh0cmVtZT1lP2MubWF4OmMubWluKTthLmZpeGVkUmFuZ2U9bnVsbH07bC5wcm90b3R5cGUub25Nb3VzZU1vdmU9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPWIuY2hhcnQsZT1iLmxlZnQsZD1iLm5hdmlnYXRvclNpemUsaD1iLnJhbmdlLGY9Yi5kcmFnT2Zmc2V0LGc9Yy5pbnZlcnRlZDsKYS50b3VjaGVzJiYwPT09YS50b3VjaGVzWzBdLnBhZ2VYfHwoYT1jLnBvaW50ZXIubm9ybWFsaXplKGEpLGM9YS5jaGFydFgsZyYmKGU9Yi50b3AsYz1hLmNoYXJ0WSksYi5ncmFiYmVkTGVmdD8oYi5oYXNEcmFnZ2VkPSEwLGIucmVuZGVyKDAsMCxjLWUsYi5vdGhlckhhbmRsZVBvcykpOmIuZ3JhYmJlZFJpZ2h0PyhiLmhhc0RyYWdnZWQ9ITAsYi5yZW5kZXIoMCwwLGIub3RoZXJIYW5kbGVQb3MsYy1lKSk6Yi5ncmFiYmVkQ2VudGVyJiYoYi5oYXNEcmFnZ2VkPSEwLGM8Zj9jPWY6Yz5kK2YtaCYmKGM9ZCtmLWgpLGIucmVuZGVyKDAsMCxjLWYsYy1mK2gpKSxiLmhhc0RyYWdnZWQmJmIuc2Nyb2xsYmFyJiZDKGIuc2Nyb2xsYmFyLm9wdGlvbnMubGl2ZVJlZHJhdyx6LnN2ZyYmIXYmJiF0aGlzLmNoYXJ0LmlzQm9vc3RpbmcpJiYoYS5ET01UeXBlPWEudHlwZSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5vbk1vdXNlVXAoYSl9LDApKSl9O2wucHJvdG90eXBlLm9uTW91c2VVcD1mdW5jdGlvbihhKXt2YXIgYj0KdGhpcy5jaGFydCxjPXRoaXMueEF4aXMsZT10aGlzLnNjcm9sbGJhcixkPWEuRE9NRXZlbnR8fGEsaD1iLmludmVydGVkLGY9dGhpcy5yZW5kZXJlZCYmIXRoaXMuaGFzRHJhZ2dlZD8iYW5pbWF0ZSI6ImF0dHIiLGc9TWF0aC5yb3VuZCh0aGlzLnpvb21lZE1heCksaz1NYXRoLnJvdW5kKHRoaXMuem9vbWVkTWluKTtpZih0aGlzLmhhc0RyYWdnZWQmJighZXx8IWUuaGFzRHJhZ2dlZCl8fCJzY3JvbGxiYXIiPT09YS50cmlnZ2VyKXtlPXRoaXMuZ2V0VW5pb25FeHRyZW1lcygpO2lmKHRoaXMuem9vbWVkTWluPT09dGhpcy5vdGhlckhhbmRsZVBvcyl2YXIgbD10aGlzLmZpeGVkRXh0cmVtZTtlbHNlIGlmKHRoaXMuem9vbWVkTWF4PT09dGhpcy5vdGhlckhhbmRsZVBvcyl2YXIgbT10aGlzLmZpeGVkRXh0cmVtZTt0aGlzLnpvb21lZE1heD09PXRoaXMuc2l6ZSYmKG09dGhpcy5yZXZlcnNlZEV4dHJlbWVzP2UuZGF0YU1pbjplLmRhdGFNYXgpOzA9PT10aGlzLnpvb21lZE1pbiYmKGw9CnRoaXMucmV2ZXJzZWRFeHRyZW1lcz9lLmRhdGFNYXg6ZS5kYXRhTWluKTtjPWMubmF2aWdhdG9yQXhpcy50b0ZpeGVkUmFuZ2UodGhpcy56b29tZWRNaW4sdGhpcy56b29tZWRNYXgsbCxtKTt0KGMubWluKSYmYi54QXhpc1swXS5zZXRFeHRyZW1lcyhNYXRoLm1pbihjLm1pbixjLm1heCksTWF0aC5tYXgoYy5taW4sYy5tYXgpLCEwLHRoaXMuaGFzRHJhZ2dlZD8hMTpudWxsLHt0cmlnZ2VyOiJuYXZpZ2F0b3IiLHRyaWdnZXJPcDoibmF2aWdhdG9yLWRyYWciLERPTUV2ZW50OmR9KX0ibW91c2Vtb3ZlIiE9PWEuRE9NVHlwZSYmInRvdWNobW92ZSIhPT1hLkRPTVR5cGUmJih0aGlzLmdyYWJiZWRMZWZ0PXRoaXMuZ3JhYmJlZFJpZ2h0PXRoaXMuZ3JhYmJlZENlbnRlcj10aGlzLmZpeGVkV2lkdGg9dGhpcy5maXhlZEV4dHJlbWU9dGhpcy5vdGhlckhhbmRsZVBvcz10aGlzLmhhc0RyYWdnZWQ9dGhpcy5kcmFnT2Zmc2V0PW51bGwpO3RoaXMubmF2aWdhdG9yRW5hYmxlZCYmKHRoaXMuc2hhZGVzJiYKdGhpcy5kcmF3TWFza3MoayxnLGgsZiksdGhpcy5vdXRsaW5lJiZ0aGlzLmRyYXdPdXRsaW5lKGssZyxoLGYpLHRoaXMubmF2aWdhdG9yT3B0aW9ucy5oYW5kbGVzLmVuYWJsZWQmJk9iamVjdC5rZXlzKHRoaXMuaGFuZGxlcykubGVuZ3RoPT09dGhpcy5oYW5kbGVzLmxlbmd0aCYmKHRoaXMuZHJhd0hhbmRsZShrLDAsaCxmKSx0aGlzLmRyYXdIYW5kbGUoZywxLGgsZikpKX07bC5wcm90b3R5cGUucmVtb3ZlRXZlbnRzPWZ1bmN0aW9uKCl7dGhpcy5ldmVudHNUb1VuYmluZCYmKHRoaXMuZXZlbnRzVG9VbmJpbmQuZm9yRWFjaChmdW5jdGlvbihhKXthKCl9KSx0aGlzLmV2ZW50c1RvVW5iaW5kPXZvaWQgMCk7dGhpcy5yZW1vdmVCYXNlU2VyaWVzRXZlbnRzKCl9O2wucHJvdG90eXBlLnJlbW92ZUJhc2VTZXJpZXNFdmVudHM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmJhc2VTZXJpZXN8fFtdO3RoaXMubmF2aWdhdG9yRW5hYmxlZCYmYVswXSYmKCExIT09dGhpcy5uYXZpZ2F0b3JPcHRpb25zLmFkYXB0VG9VcGRhdGVkRGF0YSYmCmEuZm9yRWFjaChmdW5jdGlvbihhKXtxKGEsInVwZGF0ZWREYXRhIix0aGlzLnVwZGF0ZWREYXRhSGFuZGxlcil9LHRoaXMpLGFbMF0ueEF4aXMmJnEoYVswXS54QXhpcywiZm91bmRFeHRyZW1lcyIsdGhpcy5tb2RpZnlCYXNlQXhpc0V4dHJlbWVzKSl9O2wucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYSl7dmFyIGQ9YS5vcHRpb25zLGg9ZC5uYXZpZ2F0b3IsZj1oLmVuYWJsZWQsZz1kLnNjcm9sbGJhcixrPWcuZW5hYmxlZDtkPWY/aC5oZWlnaHQ6MDt2YXIgbD1rP2cuaGVpZ2h0OjA7dGhpcy5oYW5kbGVzPVtdO3RoaXMuc2hhZGVzPVtdO3RoaXMuY2hhcnQ9YTt0aGlzLnNldEJhc2VTZXJpZXMoKTt0aGlzLmhlaWdodD1kO3RoaXMuc2Nyb2xsYmFySGVpZ2h0PWw7dGhpcy5zY3JvbGxiYXJFbmFibGVkPWs7dGhpcy5uYXZpZ2F0b3JFbmFibGVkPWY7dGhpcy5uYXZpZ2F0b3JPcHRpb25zPWg7dGhpcy5zY3JvbGxiYXJPcHRpb25zPWc7dGhpcy5vdXRsaW5lSGVpZ2h0PWQrbDt0aGlzLm9wcG9zaXRlPQpDKGgub3Bwb3NpdGUsIShmfHwhYS5pbnZlcnRlZCkpO3ZhciBtPXRoaXM7Zj1tLmJhc2VTZXJpZXM7Zz1hLnhBeGlzLmxlbmd0aDtrPWEueUF4aXMubGVuZ3RoO3ZhciBwPWYmJmZbMF0mJmZbMF0ueEF4aXN8fGEueEF4aXNbMF18fHtvcHRpb25zOnt9fTthLmlzRGlydHlCb3g9ITA7bS5uYXZpZ2F0b3JFbmFibGVkPyhtLnhBeGlzPW5ldyBjKGEsZSh7YnJlYWtzOnAub3B0aW9ucy5icmVha3Msb3JkaW5hbDpwLm9wdGlvbnMub3JkaW5hbH0saC54QXhpcyx7aWQ6Im5hdmlnYXRvci14LWF4aXMiLHlBeGlzOiJuYXZpZ2F0b3IteS1heGlzIixpc1g6ITAsdHlwZToiZGF0ZXRpbWUiLGluZGV4OmcsaXNJbnRlcm5hbDohMCxvZmZzZXQ6MCxrZWVwT3JkaW5hbFBhZGRpbmc6ITAsc3RhcnRPblRpY2s6ITEsZW5kT25UaWNrOiExLG1pblBhZGRpbmc6MCxtYXhQYWRkaW5nOjAsem9vbUVuYWJsZWQ6ITF9LGEuaW52ZXJ0ZWQ/e29mZnNldHM6W2wsMCwtbCwwXSx3aWR0aDpkfTp7b2Zmc2V0czpbMCwKLWwsMCxsXSxoZWlnaHQ6ZH0pKSxtLnlBeGlzPW5ldyBjKGEsZShoLnlBeGlzLHtpZDoibmF2aWdhdG9yLXktYXhpcyIsYWxpZ25UaWNrczohMSxvZmZzZXQ6MCxpbmRleDprLGlzSW50ZXJuYWw6ITAsem9vbUVuYWJsZWQ6ITF9LGEuaW52ZXJ0ZWQ/e3dpZHRoOmR9OntoZWlnaHQ6ZH0pKSxmfHxoLnNlcmllcy5kYXRhP20udXBkYXRlTmF2aWdhdG9yU2VyaWVzKCExKTowPT09YS5zZXJpZXMubGVuZ3RoJiYobS51bmJpbmRSZWRyYXc9YihhLCJiZWZvcmVSZWRyYXciLGZ1bmN0aW9uKCl7MDxhLnNlcmllcy5sZW5ndGgmJiFtLnNlcmllcyYmKG0uc2V0QmFzZVNlcmllcygpLG0udW5iaW5kUmVkcmF3KCkpfSkpLG0ucmV2ZXJzZWRFeHRyZW1lcz1hLmludmVydGVkJiYhbS54QXhpcy5yZXZlcnNlZHx8IWEuaW52ZXJ0ZWQmJm0ueEF4aXMucmV2ZXJzZWQsbS5yZW5kZXJFbGVtZW50cygpLG0uYWRkTW91c2VFdmVudHMoKSk6KG0ueEF4aXM9e2NoYXJ0OmEsbmF2aWdhdG9yQXhpczp7ZmFrZTohMH0sCnRyYW5zbGF0ZTpmdW5jdGlvbihiLGMpe3ZhciBlPWEueEF4aXNbMF0sZD1lLmdldEV4dHJlbWVzKCksaD1lLmxlbi0yKmwsZj1HKCJtaW4iLGUub3B0aW9ucy5taW4sZC5kYXRhTWluKTtlPUcoIm1heCIsZS5vcHRpb25zLm1heCxkLmRhdGFNYXgpLWY7cmV0dXJuIGM/YiplL2grZjpoKihiLWYpL2V9LHRvUGl4ZWxzOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRyYW5zbGF0ZShhKX0sdG9WYWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy50cmFuc2xhdGUoYSwhMCl9fSxtLnhBeGlzLm5hdmlnYXRvckF4aXMuYXhpcz1tLnhBeGlzLG0ueEF4aXMubmF2aWdhdG9yQXhpcy50b0ZpeGVkUmFuZ2U9eC5BZGRpdGlvbnNDbGFzcy5wcm90b3R5cGUudG9GaXhlZFJhbmdlLmJpbmQobS54QXhpcy5uYXZpZ2F0b3JBeGlzKSk7YS5vcHRpb25zLnNjcm9sbGJhci5lbmFibGVkJiYoYS5zY3JvbGxiYXI9bS5zY3JvbGxiYXI9bmV3IEQoYS5yZW5kZXJlcixlKGEub3B0aW9ucy5zY3JvbGxiYXIse21hcmdpbjptLm5hdmlnYXRvckVuYWJsZWQ/CjA6MTAsdmVydGljYWw6YS5pbnZlcnRlZH0pLGEpLGIobS5zY3JvbGxiYXIsImNoYW5nZWQiLGZ1bmN0aW9uKGIpe3ZhciBjPW0uc2l6ZSxlPWMqdGhpcy50bztjKj10aGlzLmZyb207bS5oYXNEcmFnZ2VkPW0uc2Nyb2xsYmFyLmhhc0RyYWdnZWQ7bS5yZW5kZXIoMCwwLGMsZSk7KGEub3B0aW9ucy5zY3JvbGxiYXIubGl2ZVJlZHJhd3x8Im1vdXNlbW92ZSIhPT1iLkRPTVR5cGUmJiJ0b3VjaG1vdmUiIT09Yi5ET01UeXBlKSYmc2V0VGltZW91dChmdW5jdGlvbigpe20ub25Nb3VzZVVwKGIpfSl9KSk7bS5hZGRCYXNlU2VyaWVzRXZlbnRzKCk7bS5hZGRDaGFydEV2ZW50cygpfTtsLnByb3RvdHlwZS5nZXRVbmlvbkV4dHJlbWVzPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hhcnQueEF4aXNbMF0sYz10aGlzLnhBeGlzLGU9Yy5vcHRpb25zLGQ9Yi5vcHRpb25zLGg7YSYmbnVsbD09PWIuZGF0YU1pbnx8KGg9e2RhdGFNaW46QyhlJiZlLm1pbixHKCJtaW4iLGQubWluLGIuZGF0YU1pbiwKYy5kYXRhTWluLGMubWluKSksZGF0YU1heDpDKGUmJmUubWF4LEcoIm1heCIsZC5tYXgsYi5kYXRhTWF4LGMuZGF0YU1heCxjLm1heCkpfSk7cmV0dXJuIGh9O2wucHJvdG90eXBlLnNldEJhc2VTZXJpZXM9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNoYXJ0LGU9dGhpcy5iYXNlU2VyaWVzPVtdO2E9YXx8Yy5vcHRpb25zJiZjLm9wdGlvbnMubmF2aWdhdG9yLmJhc2VTZXJpZXN8fChjLnNlcmllcy5sZW5ndGg/cChjLnNlcmllcyxmdW5jdGlvbihhKXtyZXR1cm4hYS5vcHRpb25zLmlzSW50ZXJuYWx9KS5pbmRleDowKTsoYy5zZXJpZXN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGIsYyl7Yi5vcHRpb25zLmlzSW50ZXJuYWx8fCFiLm9wdGlvbnMuc2hvd0luTmF2aWdhdG9yJiYoYyE9PWEmJmIub3B0aW9ucy5pZCE9PWF8fCExPT09Yi5vcHRpb25zLnNob3dJbk5hdmlnYXRvcil8fGUucHVzaChiKX0pO3RoaXMueEF4aXMmJiF0aGlzLnhBeGlzLm5hdmlnYXRvckF4aXMuZmFrZSYmdGhpcy51cGRhdGVOYXZpZ2F0b3JTZXJpZXMoITAsCmIpfTtsLnByb3RvdHlwZS51cGRhdGVOYXZpZ2F0b3JTZXJpZXM9ZnVuY3Rpb24oYixjKXt2YXIgZD10aGlzLGg9ZC5jaGFydCxnPWQuYmFzZVNlcmllcyxuLGwsbT1kLm5hdmlnYXRvck9wdGlvbnMuc2VyaWVzLHAscj17ZW5hYmxlTW91c2VUcmFja2luZzohMSxpbmRleDpudWxsLGxpbmtlZFRvOm51bGwsZ3JvdXA6Im5hdiIscGFkWEF4aXM6ITEseEF4aXM6Im5hdmlnYXRvci14LWF4aXMiLHlBeGlzOiJuYXZpZ2F0b3IteS1heGlzIixzaG93SW5MZWdlbmQ6ITEsc3RhY2tpbmc6dm9pZCAwLGlzSW50ZXJuYWw6ITAsc3RhdGVzOntpbmFjdGl2ZTp7b3BhY2l0eToxfX19LHQ9ZC5zZXJpZXM9KGQuc2VyaWVzfHxbXSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3ZhciBiPWEuYmFzZVNlcmllcztyZXR1cm4gMD5nLmluZGV4T2YoYik/KGImJihxKGIsInVwZGF0ZWREYXRhIixkLnVwZGF0ZWREYXRhSGFuZGxlciksZGVsZXRlIGIubmF2aWdhdG9yU2VyaWVzKSxhLmNoYXJ0JiZhLmRlc3Ryb3koKSwKITEpOiEwfSk7ZyYmZy5sZW5ndGgmJmcuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgZj1iLm5hdmlnYXRvclNlcmllcyxxPUUoe2NvbG9yOmIuY29sb3IsdmlzaWJsZTpiLnZpc2libGV9LGEobSk/ay5uYXZpZ2F0b3Iuc2VyaWVzOm0pO2YmJiExPT09ZC5uYXZpZ2F0b3JPcHRpb25zLmFkYXB0VG9VcGRhdGVkRGF0YXx8KHIubmFtZT0iTmF2aWdhdG9yICIrZy5sZW5ndGgsbj1iLm9wdGlvbnN8fHt9LHA9bi5uYXZpZ2F0b3JPcHRpb25zfHx7fSxsPWUobixyLHEscCksbC5wb2ludFJhbmdlPUMocS5wb2ludFJhbmdlLHAucG9pbnRSYW5nZSxrLnBsb3RPcHRpb25zW2wudHlwZXx8ImxpbmUiXS5wb2ludFJhbmdlKSxxPXAuZGF0YXx8cS5kYXRhLGQuaGFzTmF2aWdhdG9yRGF0YT1kLmhhc05hdmlnYXRvckRhdGF8fCEhcSxsLmRhdGE9cXx8bi5kYXRhJiZuLmRhdGEuc2xpY2UoMCksZiYmZi5vcHRpb25zP2YudXBkYXRlKGwsYyk6KGIubmF2aWdhdG9yU2VyaWVzPWguaW5pdFNlcmllcyhsKSwKYi5uYXZpZ2F0b3JTZXJpZXMuYmFzZVNlcmllcz1iLHQucHVzaChiLm5hdmlnYXRvclNlcmllcykpKX0pO2lmKG0uZGF0YSYmKCFnfHwhZy5sZW5ndGgpfHxhKG0pKWQuaGFzTmF2aWdhdG9yRGF0YT0hMSxtPWYobSksbS5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7ci5uYW1lPSJOYXZpZ2F0b3IgIisodC5sZW5ndGgrMSk7bD1lKGsubmF2aWdhdG9yLnNlcmllcyx7Y29sb3I6aC5zZXJpZXNbYl0mJiFoLnNlcmllc1tiXS5vcHRpb25zLmlzSW50ZXJuYWwmJmguc2VyaWVzW2JdLmNvbG9yfHxoLm9wdGlvbnMuY29sb3JzW2JdfHxoLm9wdGlvbnMuY29sb3JzWzBdfSxyLGEpO2wuZGF0YT1hLmRhdGE7bC5kYXRhJiYoZC5oYXNOYXZpZ2F0b3JEYXRhPSEwLHQucHVzaChoLmluaXRTZXJpZXMobCkpKX0pO2ImJnRoaXMuYWRkQmFzZVNlcmllc0V2ZW50cygpfTtsLnByb3RvdHlwZS5hZGRCYXNlU2VyaWVzRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxjPWEuYmFzZVNlcmllc3x8W107Y1swXSYmCmNbMF0ueEF4aXMmJmIoY1swXS54QXhpcywiZm91bmRFeHRyZW1lcyIsdGhpcy5tb2RpZnlCYXNlQXhpc0V4dHJlbWVzKTtjLmZvckVhY2goZnVuY3Rpb24oYyl7YihjLCJzaG93IixmdW5jdGlvbigpe3RoaXMubmF2aWdhdG9yU2VyaWVzJiZ0aGlzLm5hdmlnYXRvclNlcmllcy5zZXRWaXNpYmxlKCEwLCExKX0pO2IoYywiaGlkZSIsZnVuY3Rpb24oKXt0aGlzLm5hdmlnYXRvclNlcmllcyYmdGhpcy5uYXZpZ2F0b3JTZXJpZXMuc2V0VmlzaWJsZSghMSwhMSl9KTshMSE9PXRoaXMubmF2aWdhdG9yT3B0aW9ucy5hZGFwdFRvVXBkYXRlZERhdGEmJmMueEF4aXMmJmIoYywidXBkYXRlZERhdGEiLHRoaXMudXBkYXRlZERhdGFIYW5kbGVyKTtiKGMsInJlbW92ZSIsZnVuY3Rpb24oKXt0aGlzLm5hdmlnYXRvclNlcmllcyYmKEkoYS5zZXJpZXMsdGhpcy5uYXZpZ2F0b3JTZXJpZXMpLHQodGhpcy5uYXZpZ2F0b3JTZXJpZXMub3B0aW9ucykmJnRoaXMubmF2aWdhdG9yU2VyaWVzLnJlbW92ZSghMSksCmRlbGV0ZSB0aGlzLm5hdmlnYXRvclNlcmllcyl9KX0sdGhpcyl9O2wucHJvdG90eXBlLmdldEJhc2VTZXJpZXNNaW49ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYmFzZVNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gTWF0aC5taW4oYSxiLnhEYXRhP2IueERhdGFbMF06YSl9LGEpfTtsLnByb3RvdHlwZS5tb2RpZnlOYXZpZ2F0b3JBeGlzRXh0cmVtZXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnhBeGlzLGI7InVuZGVmaW5lZCIhPT10eXBlb2YgYS5nZXRFeHRyZW1lcyYmKCEoYj10aGlzLmdldFVuaW9uRXh0cmVtZXMoITApKXx8Yi5kYXRhTWluPT09YS5taW4mJmIuZGF0YU1heD09PWEubWF4fHwoYS5taW49Yi5kYXRhTWluLGEubWF4PWIuZGF0YU1heCkpfTtsLnByb3RvdHlwZS5tb2RpZnlCYXNlQXhpc0V4dHJlbWVzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydC5uYXZpZ2F0b3IsYj10aGlzLmdldEV4dHJlbWVzKCksYz1iLmRhdGFNaW4sZT1iLmRhdGFNYXg7Yj0KYi5tYXgtYi5taW47dmFyIGQ9YS5zdGlja1RvTWluLGY9YS5zdGlja1RvTWF4LGc9Qyh0aGlzLm9wdGlvbnMub3ZlcnNjcm9sbCwwKSxrPWEuc2VyaWVzJiZhLnNlcmllc1swXSxsPSEhdGhpcy5zZXRFeHRyZW1lcztpZighdGhpcy5ldmVudEFyZ3N8fCJyYW5nZVNlbGVjdG9yQnV0dG9uIiE9PXRoaXMuZXZlbnRBcmdzLnRyaWdnZXIpe2lmKGQpe3ZhciBtPWM7dmFyIHA9bStifWYmJihwPWUrZyxkfHwobT1NYXRoLm1heChjLHAtYixhLmdldEJhc2VTZXJpZXNNaW4oayYmay54RGF0YT9rLnhEYXRhWzBdOi1OdW1iZXIuTUFYX1ZBTFVFKSkpKTtsJiYoZHx8ZikmJncobSkmJih0aGlzLm1pbj10aGlzLnVzZXJNaW49bSx0aGlzLm1heD10aGlzLnVzZXJNYXg9cCl9YS5zdGlja1RvTWluPWEuc3RpY2tUb01heD1udWxsfTtsLnByb3RvdHlwZS51cGRhdGVkRGF0YUhhbmRsZXI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0Lm5hdmlnYXRvcixiPXRoaXMubmF2aWdhdG9yU2VyaWVzLGM9CmEuZ2V0QmFzZVNlcmllc01pbih0aGlzLnhEYXRhWzBdKTthLnN0aWNrVG9NYXg9YS5yZXZlcnNlZEV4dHJlbWVzPzA9PT1NYXRoLnJvdW5kKGEuem9vbWVkTWluKTpNYXRoLnJvdW5kKGEuem9vbWVkTWF4KT49TWF0aC5yb3VuZChhLnNpemUpO2Euc3RpY2tUb01pbj13KHRoaXMueEF4aXMubWluKSYmdGhpcy54QXhpcy5taW48PWMmJighdGhpcy5jaGFydC5maXhlZFJhbmdlfHwhYS5zdGlja1RvTWF4KTtiJiYhYS5oYXNOYXZpZ2F0b3JEYXRhJiYoYi5vcHRpb25zLnBvaW50U3RhcnQ9dGhpcy54RGF0YVswXSxiLnNldERhdGEodGhpcy5vcHRpb25zLmRhdGEsITEsbnVsbCwhMSkpfTtsLnByb3RvdHlwZS5hZGRDaGFydEV2ZW50cz1mdW5jdGlvbigpe3RoaXMuZXZlbnRzVG9VbmJpbmR8fCh0aGlzLmV2ZW50c1RvVW5iaW5kPVtdKTt0aGlzLmV2ZW50c1RvVW5iaW5kLnB1c2goYih0aGlzLmNoYXJ0LCJyZWRyYXciLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5uYXZpZ2F0b3IsYj1hJiYoYS5iYXNlU2VyaWVzJiYKYS5iYXNlU2VyaWVzWzBdJiZhLmJhc2VTZXJpZXNbMF0ueEF4aXN8fHRoaXMueEF4aXNbMF0pO2ImJmEucmVuZGVyKGIubWluLGIubWF4KX0pLGIodGhpcy5jaGFydCwiZ2V0TWFyZ2lucyIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLm5hdmlnYXRvcixiPWEub3Bwb3NpdGU/InBsb3RUb3AiOiJtYXJnaW5Cb3R0b20iO3RoaXMuaW52ZXJ0ZWQmJihiPWEub3Bwb3NpdGU/Im1hcmdpblJpZ2h0IjoicGxvdExlZnQiKTt0aGlzW2JdPSh0aGlzW2JdfHwwKSsoYS5uYXZpZ2F0b3JFbmFibGVkfHwhdGhpcy5pbnZlcnRlZD9hLm91dGxpbmVIZWlnaHQ6MCkrYS5uYXZpZ2F0b3JPcHRpb25zLm1hcmdpbn0pKX07bC5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMucmVtb3ZlRXZlbnRzKCk7dGhpcy54QXhpcyYmKEkodGhpcy5jaGFydC54QXhpcyx0aGlzLnhBeGlzKSxJKHRoaXMuY2hhcnQuYXhlcyx0aGlzLnhBeGlzKSk7dGhpcy55QXhpcyYmKEkodGhpcy5jaGFydC55QXhpcyx0aGlzLnlBeGlzKSwKSSh0aGlzLmNoYXJ0LmF4ZXMsdGhpcy55QXhpcykpOyh0aGlzLnNlcmllc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYSl7YS5kZXN0cm95JiZhLmRlc3Ryb3koKX0pOyJzZXJpZXMgeEF4aXMgeUF4aXMgc2hhZGVzIG91dGxpbmUgc2Nyb2xsYmFyVHJhY2sgc2Nyb2xsYmFyUmlmbGVzIHNjcm9sbGJhckdyb3VwIHNjcm9sbGJhciBuYXZpZ2F0b3JHcm91cCByZW5kZXJlZCIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3RoaXNbYV0mJnRoaXNbYV0uZGVzdHJveSYmdGhpc1thXS5kZXN0cm95KCk7dGhpc1thXT1udWxsfSx0aGlzKTtbdGhpcy5oYW5kbGVzXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0goYSl9LHRoaXMpfTtyZXR1cm4gbH0oKTt6Lk5hdmlnYXRvcnx8KHouTmF2aWdhdG9yPUIseC5jb21wb3NlKGMpLGIobCwiYmVmb3JlU2hvd1Jlc2V0Wm9vbSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnMsYj1hLm5hdmlnYXRvcixjPWEucmFuZ2VTZWxlY3RvcjtpZigoYiYmCmIuZW5hYmxlZHx8YyYmYy5lbmFibGVkKSYmKCF2JiYieCI9PT1hLmNoYXJ0Lnpvb21UeXBlfHx2JiYieCI9PT1hLmNoYXJ0LnBpbmNoVHlwZSkpcmV0dXJuITF9KSxiKGwsImJlZm9yZVJlbmRlciIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9wdGlvbnM7aWYoYS5uYXZpZ2F0b3IuZW5hYmxlZHx8YS5zY3JvbGxiYXIuZW5hYmxlZCl0aGlzLnNjcm9sbGVyPXRoaXMubmF2aWdhdG9yPW5ldyBCKHRoaXMpfSksYihsLCJhZnRlclNldENoYXJ0U2l6ZSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxlZ2VuZCxiPXRoaXMubmF2aWdhdG9yO2lmKGIpe3ZhciBjPWEmJmEub3B0aW9uczt2YXIgZD1iLnhBeGlzO3ZhciBlPWIueUF4aXM7dmFyIGY9Yi5zY3JvbGxiYXJIZWlnaHQ7dGhpcy5pbnZlcnRlZD8oYi5sZWZ0PWIub3Bwb3NpdGU/dGhpcy5jaGFydFdpZHRoLWYtYi5oZWlnaHQ6dGhpcy5zcGFjaW5nWzNdK2YsYi50b3A9dGhpcy5wbG90VG9wK2YpOihiLmxlZnQ9dGhpcy5wbG90TGVmdCtmLApiLnRvcD1iLm5hdmlnYXRvck9wdGlvbnMudG9wfHx0aGlzLmNoYXJ0SGVpZ2h0LWIuaGVpZ2h0LWYtdGhpcy5zcGFjaW5nWzJdLSh0aGlzLnJhbmdlU2VsZWN0b3ImJnRoaXMuZXh0cmFCb3R0b21NYXJnaW4/dGhpcy5yYW5nZVNlbGVjdG9yLmdldEhlaWdodCgpOjApLShjJiYiYm90dG9tIj09PWMudmVydGljYWxBbGlnbiYmInByb3hpbWF0ZSIhPT1jLmxheW91dCYmYy5lbmFibGVkJiYhYy5mbG9hdGluZz9hLmxlZ2VuZEhlaWdodCtDKGMubWFyZ2luLDEwKTowKS0odGhpcy50aXRsZU9mZnNldD90aGlzLnRpdGxlT2Zmc2V0WzJdOjApKTtkJiZlJiYodGhpcy5pbnZlcnRlZD9kLm9wdGlvbnMubGVmdD1lLm9wdGlvbnMubGVmdD1iLmxlZnQ6ZC5vcHRpb25zLnRvcD1lLm9wdGlvbnMudG9wPWIudG9wLGQuc2V0QXhpc1NpemUoKSxlLnNldEF4aXNTaXplKCkpfX0pLGIobCwidXBkYXRlIixmdW5jdGlvbihhKXt2YXIgYj1hLm9wdGlvbnMubmF2aWdhdG9yfHx7fSxjPWEub3B0aW9ucy5zY3JvbGxiYXJ8fAp7fTt0aGlzLm5hdmlnYXRvcnx8dGhpcy5zY3JvbGxlcnx8IWIuZW5hYmxlZCYmIWMuZW5hYmxlZHx8KGUoITAsdGhpcy5vcHRpb25zLm5hdmlnYXRvcixiKSxlKCEwLHRoaXMub3B0aW9ucy5zY3JvbGxiYXIsYyksZGVsZXRlIGEub3B0aW9ucy5uYXZpZ2F0b3IsZGVsZXRlIGEub3B0aW9ucy5zY3JvbGxiYXIpfSksYihsLCJhZnRlclVwZGF0ZSIsZnVuY3Rpb24oYSl7dGhpcy5uYXZpZ2F0b3J8fHRoaXMuc2Nyb2xsZXJ8fCF0aGlzLm9wdGlvbnMubmF2aWdhdG9yLmVuYWJsZWQmJiF0aGlzLm9wdGlvbnMuc2Nyb2xsYmFyLmVuYWJsZWR8fCh0aGlzLnNjcm9sbGVyPXRoaXMubmF2aWdhdG9yPW5ldyBCKHRoaXMpLEMoYS5yZWRyYXcsITApJiZ0aGlzLnJlZHJhdyhhLmFuaW1hdGlvbikpfSksYihsLCJhZnRlckFkZFNlcmllcyIsZnVuY3Rpb24oKXt0aGlzLm5hdmlnYXRvciYmdGhpcy5uYXZpZ2F0b3Iuc2V0QmFzZVNlcmllcyhudWxsLCExKX0pLGIoQSwiYWZ0ZXJVcGRhdGUiLGZ1bmN0aW9uKCl7dGhpcy5jaGFydC5uYXZpZ2F0b3ImJgohdGhpcy5vcHRpb25zLmlzSW50ZXJuYWwmJnRoaXMuY2hhcnQubmF2aWdhdG9yLnNldEJhc2VTZXJpZXMobnVsbCwhMSl9KSxsLnByb3RvdHlwZS5jYWxsYmFja3MucHVzaChmdW5jdGlvbihhKXt2YXIgYj1hLm5hdmlnYXRvcjtiJiZhLnhBeGlzWzBdJiYoYT1hLnhBeGlzWzBdLmdldEV4dHJlbWVzKCksYi5yZW5kZXIoYS5taW4sYS5tYXgpKX0pKTt6Lk5hdmlnYXRvcj1CO3JldHVybiB6Lk5hdmlnYXRvcn0pO0ooYywibWFzdGVycy9tb2R1bGVzL2dhbnR0LnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1nYW50dC5qcy5tYXA="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFRpbWVsaW5lIHNlcmllcwoKIChjKSAyMDEwLTIwMTkgSGlnaHNvZnQgQVMKIEF1dGhvcjogRGFuaWVsIFN0dWRlbmNraQoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihjKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhjWyJkZWZhdWx0Il09Yyxtb2R1bGUuZXhwb3J0cz1jKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy90aW1lbGluZSIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24obCl7YyhsKTtjLkhpZ2hjaGFydHM9bDtyZXR1cm4gY30pOmMoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihjKXtmdW5jdGlvbiBsKGMsbCxxLHIpe2MuaGFzT3duUHJvcGVydHkobCl8fChjW2xdPXIuYXBwbHkobnVsbCxxKSl9Yz1jP2MuX21vZHVsZXM6e307bChjLCJtb2R1bGVzL3RpbWVsaW5lLnNyYy5qcyIsW2NbInBhcnRzL0dsb2JhbHMuanMiXSxjWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLGNbInBhcnRzL1BvaW50LmpzIl0sY1sicGFydHMvU1ZHRWxlbWVudC5qcyJdLGNbInBhcnRzL1V0aWxpdGllcy5qcyJdXSwKZnVuY3Rpb24oYyxsLHEscixmKXt2YXIgcD1mLmFkZEV2ZW50LHg9Zi5hcnJheU1heCx5PWYuYXJyYXlNaW4sdT1mLmRlZmluZWQsej1mLmlzTnVtYmVyLHQ9Zi5tZXJnZSxBPWYub2JqZWN0RWFjaCxuPWYucGljaztmPWYuc2VyaWVzVHlwZTt2YXIgbT1jLlNlcmllcyx2PWMuc2VyaWVzVHlwZXM7ZigidGltZWxpbmUiLCJsaW5lIix7Y29sb3JCeVBvaW50OiEwLHN0aWNreVRyYWNraW5nOiExLGlnbm9yZUhpZGRlblBvaW50OiEwLGxlZ2VuZFR5cGU6InBvaW50IixsaW5lV2lkdGg6NCx0b29sdGlwOntoZWFkZXJGb3JtYXQ6JzxzcGFuIHN0eWxlPSJjb2xvcjp7cG9pbnQuY29sb3J9Ij5cdTI1Y2Y8L3NwYW4+IDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHgiPiB7cG9pbnQua2V5fTwvc3Bhbj48YnIvPicscG9pbnRGb3JtYXQ6Intwb2ludC5kZXNjcmlwdGlvbn0ifSxzdGF0ZXM6e2hvdmVyOntsaW5lV2lkdGhQbHVzOjB9fSxkYXRhTGFiZWxzOntlbmFibGVkOiEwLGFsbG93T3ZlcmxhcDohMCwKYWx0ZXJuYXRlOiEwLGJhY2tncm91bmRDb2xvcjoiI2ZmZmZmZiIsYm9yZGVyV2lkdGg6MSxib3JkZXJDb2xvcjoiIzk5OTk5OSIsYm9yZGVyUmFkaXVzOjMsY29sb3I6IiMzMzMzMzMiLGNvbm5lY3RvcldpZHRoOjEsZGlzdGFuY2U6MTAwLGZvcm1hdHRlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VyaWVzLmNoYXJ0LnN0eWxlZE1vZGU/IjxzcGFuPlx1MjVjZiA8L3NwYW4+IjonPHNwYW4gc3R5bGU9ImNvbG9yOicrdGhpcy5wb2ludC5jb2xvcisnIj5cdTI1Y2YgPC9zcGFuPic7cmV0dXJuIGErPSc8c3BhbiBjbGFzcz0iaGlnaGNoYXJ0cy1zdHJvbmciPicrKHRoaXMua2V5fHwiIikrIjwvc3Bhbj48YnIvPiIrKHRoaXMucG9pbnQubGFiZWx8fCIiKX0sc3R5bGU6e3RleHRPdXRsaW5lOiJub25lIixmb250V2VpZ2h0OiJub3JtYWwiLGZvbnRTaXplOiIxMnB4In0sc2hhZG93OiExLHZlcnRpY2FsQWxpZ246Im1pZGRsZSJ9LG1hcmtlcjp7ZW5hYmxlZFRocmVzaG9sZDowLHN5bWJvbDoic3F1YXJlIiwKcmFkaXVzOjYsbGluZVdpZHRoOjIsaGVpZ2h0OjE1fSxzaG93SW5MZWdlbmQ6ITEsY29sb3JLZXk6IngifSx7dHJhY2tlckdyb3VwczpbIm1hcmtlckdyb3VwIiwiZGF0YUxhYmVsc0dyb3VwIl0sZHJhd0xlZ2VuZFN5bWJvbDpsLmRyYXdSZWN0YW5nbGUsZHJhd1RyYWNrZXI6Yy5UcmFja2VyTWl4aW4uZHJhd1RyYWNrZXJQb2ludCxpbml0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpczttLnByb3RvdHlwZS5pbml0LmFwcGx5KGEsYXJndW1lbnRzKTtwKGEsImFmdGVyVHJhbnNsYXRlIixmdW5jdGlvbigpe3ZhciBiLGs9TnVtYmVyLk1BWF9WQUxVRTthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuaXNJbnNpZGU9YS5pc0luc2lkZSYmYS52aXNpYmxlO2EudmlzaWJsZSYmIWEuaXNOdWxsJiYodShiKSYmKGs9TWF0aC5taW4oayxNYXRoLmFicyhhLnBsb3RYLWIpKSksYj1hLnBsb3RYKX0pO2EuY2xvc2VzdFBvaW50UmFuZ2VQeD1rfSk7cChhLCJkcmF3RGF0YUxhYmVscyIsZnVuY3Rpb24oKXthLmRpc3RyaWJ1dGVETCgpfSk7CnAoYSwiYWZ0ZXJEcmF3RGF0YUxhYmVscyIsZnVuY3Rpb24oKXt2YXIgYjthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKGI9YS5kYXRhTGFiZWwpcmV0dXJuIGIuYW5pbWF0ZT1mdW5jdGlvbihhKXt0aGlzLnRhcmdldFBvc2l0aW9uJiYodGhpcy50YXJnZXRQb3NpdGlvbj1hKTtyZXR1cm4gci5wcm90b3R5cGUuYW5pbWF0ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGIudGFyZ2V0UG9zaXRpb258fChiLnRhcmdldFBvc2l0aW9uPXt9KSxhLmRyYXdDb25uZWN0b3IoKX0pfSk7cChhLmNoYXJ0LCJhZnRlckhpZGVPdmVybGFwcGluZ0xhYmVsIixmdW5jdGlvbigpe2EucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jb25uZWN0b3ImJmEuZGF0YUxhYmVsJiZhLmRhdGFMYWJlbC5vbGRPcGFjaXR5IT09YS5kYXRhTGFiZWwubmV3T3BhY2l0eSYmYS5hbGlnbkNvbm5lY3RvcigpfSl9KX0sYWxpZ25EYXRhTGFiZWw6ZnVuY3Rpb24oYSxiLGssYyl7dmFyIGQ9dGhpcy5jaGFydC5pbnZlcnRlZCwKZz10aGlzLnZpc2liaWxpdHlNYXAuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiBhfSksZT10aGlzLnZpc2libGVQb2ludHNDb3VudCxoPWcuaW5kZXhPZihhKTtnPXRoaXMub3B0aW9ucy5kYXRhTGFiZWxzO3ZhciB3PWEudXNlckRMT3B0aW9uc3x8e307aD1nLmFsdGVybmF0ZT9oJiZoIT09ZS0xPzI6MS41OjE7ZT1NYXRoLmZsb29yKHRoaXMueEF4aXMubGVuL2UpO3ZhciBmPWIucGFkZGluZztpZihhLnZpc2libGUpe3ZhciBsPU1hdGguYWJzKHcueHx8YS5vcHRpb25zLmRhdGFMYWJlbHMueCk7ZD8oZD0yKihsLWYpLWEuaXRlbUhlaWdodC8yLGQ9e3dpZHRoOmQrInB4Iix0ZXh0T3ZlcmZsb3c6Yi53aWR0aC9kKmIuaGVpZ2h0LzI+ZSpoPyJlbGxpcHNpcyI6Im5vbmUifSk6ZD17d2lkdGg6KHcud2lkdGh8fGcud2lkdGh8fGUqaC0yKmYpKyJweCJ9O2IuY3NzKGQpO3RoaXMuY2hhcnQuc3R5bGVkTW9kZXx8Yi5zaGFkb3coZy5zaGFkb3cpfW0ucHJvdG90eXBlLmFsaWduRGF0YUxhYmVsLmFwcGx5KHRoaXMsCmFyZ3VtZW50cyl9LHByb2Nlc3NEYXRhOmZ1bmN0aW9uKCl7dmFyIGE9MCxiO3RoaXMudmlzaWJpbGl0eU1hcD10aGlzLmdldFZpc2liaWxpdHlNYXAoKTt0aGlzLnZpc2liaWxpdHlNYXAuZm9yRWFjaChmdW5jdGlvbihiKXtiJiZhKyt9KTt0aGlzLnZpc2libGVQb2ludHNDb3VudD1hO2ZvcihiPTA7Yjx0aGlzLnhEYXRhLmxlbmd0aDtiKyspdGhpcy55RGF0YVtiXT0xO20ucHJvdG90eXBlLnByb2Nlc3NEYXRhLmNhbGwodGhpcyxhcmd1bWVudHMpfSxnZXRYRXh0cmVtZXM6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczthPWEuZmlsdGVyKGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGIucG9pbnRzW2NdLmlzVmFsaWQoKSYmYi5wb2ludHNbY10udmlzaWJsZX0pO3JldHVybnttaW46eShhKSxtYXg6eChhKX19LGdlbmVyYXRlUG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpczttLnByb3RvdHlwZS5nZW5lcmF0ZVBvaW50cy5hcHBseShhKTthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGIsayl7Yi5hcHBseU9wdGlvbnMoe3g6YS54RGF0YVtrXX0sCmEueERhdGFba10pfSl9LGdldFZpc2liaWxpdHlNYXA6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5kYXRhLmxlbmd0aD90aGlzLmRhdGE6dGhpcy51c2VyT3B0aW9ucy5kYXRhKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEmJiExIT09YS52aXNpYmxlJiYhYS5pc051bGw/YTohMX0pfSxkaXN0cmlidXRlREw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9YS5vcHRpb25zLmRhdGFMYWJlbHMsayxjLGQ9e30sZz0xLGU9Yi5kaXN0YW5jZTthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGgpe2gudmlzaWJsZSYmIWguaXNOdWxsJiYoaz1oLm9wdGlvbnMsYz1oLm9wdGlvbnMuZGF0YUxhYmVscyxhLmhhc1JlbmRlcmVkfHwoaC51c2VyRExPcHRpb25zPXQoe30sYykpLGRbYS5jaGFydC5pbnZlcnRlZD8ieCI6InkiXT1iLmFsdGVybmF0ZSYmZyUyPy1lOmUsay5kYXRhTGFiZWxzPXQoZCxoLnVzZXJETE9wdGlvbnMpLGcrKyl9KX0sbWFya2VyQXR0cmliczpmdW5jdGlvbihhLGIpe3ZhciBrPXRoaXMub3B0aW9ucy5tYXJrZXIsCmM9YS5tYXJrZXJ8fHt9LGQ9Yy5zeW1ib2x8fGsuc3ltYm9sLGc9bihjLndpZHRoLGsud2lkdGgsdGhpcy5jbG9zZXN0UG9pbnRSYW5nZVB4KSxlPW4oYy5oZWlnaHQsay5oZWlnaHQpLGg9MDtpZih0aGlzLnhBeGlzLmRhdGVUaW1lKXJldHVybiB2LmxpbmUucHJvdG90eXBlLm1hcmtlckF0dHJpYnMuY2FsbCh0aGlzLGEsYik7YiYmKGs9ay5zdGF0ZXNbYl18fHt9LGI9Yy5zdGF0ZXMmJmMuc3RhdGVzW2JdfHx7fSxoPW4oYi5yYWRpdXMsay5yYWRpdXMsaCsoay5yYWRpdXNQbHVzfHwwKSkpO2EuaGFzSW1hZ2U9ZCYmMD09PWQuaW5kZXhPZigidXJsIik7cmV0dXJue3g6TWF0aC5mbG9vcihhLnBsb3RYKS1nLzItaC8yLHk6YS5wbG90WS1lLzItaC8yLHdpZHRoOmcraCxoZWlnaHQ6ZStofX0sYmluZEF4ZXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzO20ucHJvdG90eXBlLmJpbmRBeGVzLmNhbGwoYSk7WyJ4QXhpcyIsInlBeGlzIl0uZm9yRWFjaChmdW5jdGlvbihiKXsieEF4aXMiIT09Ynx8CmFbYl0udXNlck9wdGlvbnMudHlwZXx8KGFbYl0uY2F0ZWdvcmllcz1hW2JdLmhhc05hbWVzPSEwKX0pfX0se2luaXQ6ZnVuY3Rpb24oKXt2YXIgYT1xLnByb3RvdHlwZS5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTthLm5hbWU9bihhLm5hbWUsIkV2ZW50Iik7YS55PTE7cmV0dXJuIGF9LGlzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9PXRoaXMub3B0aW9ucy55fSxzZXRWaXNpYmxlOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5zZXJpZXM7Yj1uKGIsYy5vcHRpb25zLmlnbm9yZUhpZGRlblBvaW50KTt2LnBpZS5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUuc2V0VmlzaWJsZS5jYWxsKHRoaXMsYSwhMSk7Yy5wcm9jZXNzRGF0YSgpO2ImJmMuY2hhcnQucmVkcmF3KCl9LHNldFN0YXRlOmZ1bmN0aW9uKCl7dmFyIGE9bS5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUuc2V0U3RhdGU7dGhpcy5pc051bGx8fGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxnZXRDb25uZWN0b3JQYXRoOmZ1bmN0aW9uKCl7dmFyIGE9CnRoaXMuc2VyaWVzLmNoYXJ0LGI9dGhpcy5zZXJpZXMueEF4aXMubGVuLGM9YS5pbnZlcnRlZCxmPWM/IngyIjoieTIiLGQ9dGhpcy5kYXRhTGFiZWwsZz1kLnRhcmdldFBvc2l0aW9uLGU9e3gxOnRoaXMucGxvdFgseTE6dGhpcy5wbG90WSx4Mjp0aGlzLnBsb3RYLHkyOnooZy55KT9nLnk6ZC55fSxoPShkLmFsaWduQXR0cnx8ZClbZlswXV08dGhpcy5zZXJpZXMueUF4aXMubGVuLzI7YyYmKGU9e3gxOnRoaXMucGxvdFkseTE6Yi10aGlzLnBsb3RYLHgyOmcueHx8ZC54LHkyOmItdGhpcy5wbG90WH0pO2gmJihlW2ZdKz1kW2M/IndpZHRoIjoiaGVpZ2h0Il0pO0EoZSxmdW5jdGlvbihhLGIpe2VbYl0tPShkLmFsaWduQXR0cnx8ZClbYlswXV19KTtyZXR1cm4gYS5yZW5kZXJlci5jcmlzcExpbmUoW1siTSIsZS54MSxlLnkxXSxbIkwiLGUueDIsZS55Ml1dLGQub3B0aW9ucy5jb25uZWN0b3JXaWR0aCl9LGRyYXdDb25uZWN0b3I6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlcmllczt0aGlzLmNvbm5lY3Rvcnx8Cih0aGlzLmNvbm5lY3Rvcj1hLmNoYXJ0LnJlbmRlcmVyLnBhdGgodGhpcy5nZXRDb25uZWN0b3JQYXRoKCkpLmF0dHIoe3pJbmRleDotMX0pLmFkZCh0aGlzLmRhdGFMYWJlbCkpO3RoaXMuc2VyaWVzLmNoYXJ0LmlzSW5zaWRlUGxvdCh0aGlzLmRhdGFMYWJlbC54LHRoaXMuZGF0YUxhYmVsLnkpJiZ0aGlzLmFsaWduQ29ubmVjdG9yKCl9LGFsaWduQ29ubmVjdG9yOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zZXJpZXMsYj10aGlzLmNvbm5lY3RvcixjPXRoaXMuZGF0YUxhYmVsLGY9dGhpcy5kYXRhTGFiZWwub3B0aW9ucz10KGEub3B0aW9ucy5kYXRhTGFiZWxzLHRoaXMub3B0aW9ucy5kYXRhTGFiZWxzKSxkPXRoaXMuc2VyaWVzLmNoYXJ0LGc9Yi5nZXRCQm94KCksZT1nLngrYy50cmFuc2xhdGVYO2c9Zy55K2MudHJhbnNsYXRlWTtkLmludmVydGVkP2ctPWMub3B0aW9ucy5jb25uZWN0b3JXaWR0aC8yOmUrPWMub3B0aW9ucy5jb25uZWN0b3JXaWR0aC8yO2Q9ZC5pc0luc2lkZVBsb3QoZSwKZyk7YltkPyJhbmltYXRlIjoiYXR0ciJdKHtkOnRoaXMuZ2V0Q29ubmVjdG9yUGF0aCgpfSk7YS5jaGFydC5zdHlsZWRNb2RlfHxiLmF0dHIoe3N0cm9rZTpmLmNvbm5lY3RvckNvbG9yfHx0aGlzLmNvbG9yLCJzdHJva2Utd2lkdGgiOmYuY29ubmVjdG9yV2lkdGgsb3BhY2l0eTpjW3UoYy5uZXdPcGFjaXR5KT8ibmV3T3BhY2l0eSI6Im9wYWNpdHkiXX0pfX0pOyIifSk7bChjLCJtYXN0ZXJzL21vZHVsZXMvdGltZWxpbmUuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXRpbWVsaW5lLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIFN1cHBvcnQgZm9yIHBhcmFsbGVsIGNvb3JkaW5hdGVzIGluIEhpZ2hjaGFydHMKCiAoYykgMjAxMC0yMDE5IFBhd2VsIEZ1cwoKIExpY2Vuc2U6IHd3dy5oaWdoY2hhcnRzLmNvbS9saWNlbnNlCiovCihmdW5jdGlvbihiKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhiWyJkZWZhdWx0Il09Yixtb2R1bGUuZXhwb3J0cz1iKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9wYXJhbGxlbC1jb29yZGluYXRlcyIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oZyl7YihnKTtiLkhpZ2hjaGFydHM9ZztyZXR1cm4gYn0pOmIoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihiKXtmdW5jdGlvbiBnKGIsayxsLGQpe2IuaGFzT3duUHJvcGVydHkoayl8fChiW2tdPWQuYXBwbHkobnVsbCxsKSl9Yj1iP2IuX21vZHVsZXM6e307ZyhiLCJtb2R1bGVzL3BhcmFsbGVsLWNvb3JkaW5hdGVzLnNyYy5qcyIsW2JbInBhcnRzL0F4aXMuanMiXSxiWyJwYXJ0cy9DaGFydC5qcyJdLGJbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sCmZ1bmN0aW9uKGIsayxsLGQpe2Z1bmN0aW9uIGcoYSl7dmFyIGM9dGhpcy5zZXJpZXMmJnRoaXMuc2VyaWVzLmNoYXJ0LG49YS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksYjtpZihjJiZjLmhhc1BhcmFsbGVsQ29vcmRpbmF0ZXMmJiFwKG4uZm9ybWF0dGVkVmFsdWUpKXt2YXIgZT1jLnlBeGlzW3RoaXMueF07dmFyIGY9ZS5vcHRpb25zO2M9KGI9cihmLnRvb2x0aXBWYWx1ZUZvcm1hdCxmLmxhYmVscy5mb3JtYXQpKT94KGIsdCh0aGlzLHt2YWx1ZTp0aGlzLnl9KSxjKTplLmRhdGVUaW1lP2MudGltZS5kYXRlRm9ybWF0KGMudGltZS5yZXNvbHZlRFRMRm9ybWF0KGYuZGF0ZVRpbWVMYWJlbEZvcm1hdHNbZS50aWNrUG9zaXRpb25zLmluZm8udW5pdE5hbWVdKS5tYWluLHRoaXMueSk6Zi5jYXRlZ29yaWVzP2YuY2F0ZWdvcmllc1t0aGlzLnldOnRoaXMueTtuLmZvcm1hdHRlZFZhbHVlPW4ucG9pbnQuZm9ybWF0dGVkVmFsdWU9Y31yZXR1cm4gbn0KdmFyIGg9ZC5hZGRFdmVudCx5PWQuYXJyYXlNYXgsej1kLmFycmF5TWluLHA9ZC5kZWZpbmVkLEE9ZC5lcmFzZSx0PWQuZXh0ZW5kLHg9ZC5mb3JtYXQsbT1kLm1lcmdlLHI9ZC5waWNrLEI9ZC5zZXRPcHRpb25zLHU9ZC5zcGxhdCxDPWQud3JhcDtkPWsucHJvdG90eXBlO3ZhciB2PXtsaW5lV2lkdGg6MCx0aWNrTGVuZ3RoOjAsb3Bwb3NpdGU6ITAsdHlwZToiY2F0ZWdvcnkifTtCKHtjaGFydDp7cGFyYWxsZWxDb29yZGluYXRlczohMSxwYXJhbGxlbEF4ZXM6e2xpbmVXaWR0aDoxLHRpdGxlOnt0ZXh0OiIiLHJlc2VydmVTcGFjZTohMX0sbGFiZWxzOnt4OjAseTo0LGFsaWduOiJjZW50ZXIiLHJlc2VydmVTcGFjZTohMX0sb2Zmc2V0OjB9fX0pO2goaywiaW5pdCIsZnVuY3Rpb24oYSl7YT1hLmFyZ3NbMF07dmFyIGM9dShhLnlBeGlzfHx7fSksYj1bXSxkPWMubGVuZ3RoO2lmKHRoaXMuaGFzUGFyYWxsZWxDb29yZGluYXRlcz1hLmNoYXJ0JiZhLmNoYXJ0LnBhcmFsbGVsQ29vcmRpbmF0ZXMpe2Zvcih0aGlzLnNldFBhcmFsbGVsSW5mbyhhKTtkPD0KdGhpcy5wYXJhbGxlbEluZm8uY291bnRlcjtkKyspYi5wdXNoKHt9KTthLmxlZ2VuZHx8KGEubGVnZW5kPXt9KTsidW5kZWZpbmVkIj09PXR5cGVvZiBhLmxlZ2VuZC5lbmFibGVkJiYoYS5sZWdlbmQuZW5hYmxlZD0hMSk7bSghMCxhLHtib29zdDp7c2VyaWVzVGhyZXNob2xkOk51bWJlci5NQVhfVkFMVUV9LHBsb3RPcHRpb25zOntzZXJpZXM6e2Jvb3N0VGhyZXNob2xkOk51bWJlci5NQVhfVkFMVUV9fX0pO2EueUF4aXM9Yy5jb25jYXQoYik7YS54QXhpcz1tKHYsdShhLnhBeGlzfHx7fSlbMF0pfX0pO2goaywidXBkYXRlIixmdW5jdGlvbihhKXthPWEub3B0aW9uczthLmNoYXJ0JiYocChhLmNoYXJ0LnBhcmFsbGVsQ29vcmRpbmF0ZXMpJiYodGhpcy5oYXNQYXJhbGxlbENvb3JkaW5hdGVzPWEuY2hhcnQucGFyYWxsZWxDb29yZGluYXRlcyksdGhpcy5vcHRpb25zLmNoYXJ0LnBhcmFsbGVsQXhlcz1tKHRoaXMub3B0aW9ucy5jaGFydC5wYXJhbGxlbEF4ZXMsYS5jaGFydC5wYXJhbGxlbEF4ZXMpKTsKdGhpcy5oYXNQYXJhbGxlbENvb3JkaW5hdGVzJiYoYS5zZXJpZXMmJnRoaXMuc2V0UGFyYWxsZWxJbmZvKGEpLHRoaXMueUF4aXMuZm9yRWFjaChmdW5jdGlvbihhKXthLnVwZGF0ZSh7fSwhMSl9KSl9KTt0KGQse3NldFBhcmFsbGVsSW5mbzpmdW5jdGlvbihhKXt2YXIgYz10aGlzO2E9YS5zZXJpZXM7Yy5wYXJhbGxlbEluZm89e2NvdW50ZXI6MH07YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuZGF0YSYmKGMucGFyYWxsZWxJbmZvLmNvdW50ZXI9TWF0aC5tYXgoYy5wYXJhbGxlbEluZm8uY291bnRlcixhLmRhdGEubGVuZ3RoLTEpKX0pfX0pO2gobC5TZXJpZXMsImJpbmRBeGVzIixmdW5jdGlvbihhKXtpZih0aGlzLmNoYXJ0Lmhhc1BhcmFsbGVsQ29vcmRpbmF0ZXMpe3ZhciBjPXRoaXM7dGhpcy5jaGFydC5heGVzLmZvckVhY2goZnVuY3Rpb24oYSl7Yy5pbnNlcnQoYS5zZXJpZXMpO2EuaXNEaXJ0eT0hMH0pO2MueEF4aXM9dGhpcy5jaGFydC54QXhpc1swXTtjLnlBeGlzPXRoaXMuY2hhcnQueUF4aXNbMF07CmEucHJldmVudERlZmF1bHQoKX19KTtoKGwuU2VyaWVzLCJhZnRlclRyYW5zbGF0ZSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0LGM9dGhpcy5wb2ludHMsYj1jJiZjLmxlbmd0aCxkPU51bWJlci5NQVhfVkFMVUUsZTtpZih0aGlzLmNoYXJ0Lmhhc1BhcmFsbGVsQ29vcmRpbmF0ZXMpe2ZvcihlPTA7ZTxiO2UrKyl7dmFyIGY9Y1tlXTtpZihwKGYueSkpe2YucGxvdFg9YS5wb2xhcj9hLnlBeGlzW2VdLmFuZ2xlUmFkfHwwOmEuaW52ZXJ0ZWQ/YS5wbG90SGVpZ2h0LWEueUF4aXNbZV0udG9wK2EucGxvdFRvcDphLnlBeGlzW2VdLmxlZnQtYS5wbG90TGVmdDtmLmNsaWVudFg9Zi5wbG90WDtmLnBsb3RZPWEueUF4aXNbZV0udHJhbnNsYXRlKGYueSwhMSwhMCxudWxsLCEwKTsidW5kZWZpbmVkIiE9PXR5cGVvZiB3JiYoZD1NYXRoLm1pbihkLE1hdGguYWJzKGYucGxvdFgtdykpKTt2YXIgdz1mLnBsb3RYO2YuaXNJbnNpZGU9YS5pc0luc2lkZVBsb3QoZi5wbG90WCxmLnBsb3RZLAphLmludmVydGVkKX1lbHNlIGYuaXNOdWxsPSEwfXRoaXMuY2xvc2VzdFBvaW50UmFuZ2VQeD1kfX0se29yZGVyOjF9KTtoKGwuU2VyaWVzLCJkZXN0cm95IixmdW5jdGlvbigpe3RoaXMuY2hhcnQuaGFzUGFyYWxsZWxDb29yZGluYXRlcyYmKHRoaXMuY2hhcnQuYXhlc3x8W10pLmZvckVhY2goZnVuY3Rpb24oYSl7YSYmYS5zZXJpZXMmJihBKGEuc2VyaWVzLHRoaXMpLGEuaXNEaXJ0eT1hLmZvcmNlUmVkcmF3PSEwKX0sdGhpcyl9KTtbImxpbmUiLCJzcGxpbmUiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0MobC5zZXJpZXNUeXBlc1thXS5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUsImdldExhYmVsQ29uZmlnIixnKX0pO3ZhciBEPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXt0aGlzLmF4aXM9YX1hLnByb3RvdHlwZS5zZXRQb3NpdGlvbj1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuYXhpcyxlPWMuY2hhcnQsZj0oKHRoaXMucG9zaXRpb258fDApKy41KS8oZS5wYXJhbGxlbEluZm8uY291bnRlcisKMSk7ZS5wb2xhcj9iLmFuZ2xlPTM2MCpmOihiW2FbMF1dPTEwMCpmKyIlIixjW2FbMV1dPWJbYVsxXV09MCxjW2FbMl1dPWJbYVsyXV09bnVsbCxjW2FbM11dPWJbYVszXV09bnVsbCl9O3JldHVybiBhfSgpLHE7KGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7dmFyIGI9dGhpcy5jaGFydCxjPXRoaXMucGFyYWxsZWxDb29yZGluYXRlcyxkPVsibGVmdCIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIl07aWYoYi5oYXNQYXJhbGxlbENvb3JkaW5hdGVzKWlmKGIuaW52ZXJ0ZWQmJihkPWQucmV2ZXJzZSgpKSx0aGlzLmlzWEF4aXMpdGhpcy5vcHRpb25zPW0odGhpcy5vcHRpb25zLHYsYS51c2VyT3B0aW9ucyk7ZWxzZXt2YXIgZT1iLnlBeGlzLmluZGV4T2YodGhpcyk7dGhpcy5vcHRpb25zPW0odGhpcy5vcHRpb25zLHRoaXMuY2hhcnQub3B0aW9ucy5jaGFydC5wYXJhbGxlbEF4ZXMsYS51c2VyT3B0aW9ucyk7Yy5wb3NpdGlvbj1yKGMucG9zaXRpb24sMDw9ZT9lOmIueUF4aXMubGVuZ3RoKTsKYy5zZXRQb3NpdGlvbihkLHRoaXMub3B0aW9ucyl9fWZ1bmN0aW9uIGQoYSl7dmFyIGI9dGhpcy5jaGFydCxjPXRoaXMucGFyYWxsZWxDb29yZGluYXRlcztpZihjJiZiJiZiLmhhc1BhcmFsbGVsQ29vcmRpbmF0ZXMmJiF0aGlzLmlzWEF4aXMpe3ZhciBkPWMucG9zaXRpb24sZT1bXTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EudmlzaWJsZSYmcChhLnlEYXRhW2RdKSYmZS5wdXNoKGEueURhdGFbZF0pfSk7dGhpcy5kYXRhTWluPXooZSk7dGhpcy5kYXRhTWF4PXkoZSk7YS5wcmV2ZW50RGVmYXVsdCgpfX1mdW5jdGlvbiBnKCl7dGhpcy5wYXJhbGxlbENvb3JkaW5hdGVzfHwodGhpcy5wYXJhbGxlbENvb3JkaW5hdGVzPW5ldyBEKHRoaXMpKX1hLmNvbXBvc2U9ZnVuY3Rpb24oYSl7YS5rZWVwUHJvcHMucHVzaCgicGFyYWxsZWwiKTtoKGEsImluaXQiLGcpO2goYSwiYWZ0ZXJTZXRPcHRpb25zIixiKTtoKGEsImdldFNlcmllc0V4dHJlbWVzIixkKX19KShxfHwocT17fSkpOwpxLmNvbXBvc2UoYik7cmV0dXJuIHF9KTtnKGIsIm1hc3RlcnMvbW9kdWxlcy9wYXJhbGxlbC1jb29yZGluYXRlcy5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFyYWxsZWwtY29vcmRpbmF0ZXMuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEJ1bGxldCBncmFwaCBzZXJpZXMgdHlwZSBmb3IgSGlnaGNoYXJ0cwoKIChjKSAyMDEwLTIwMTkgS2FjcGVyIE1hZGVqCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGEpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGFbImRlZmF1bHQiXT1hLG1vZHVsZS5leHBvcnRzPWEpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2J1bGxldCIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24oZCl7YShkKTthLkhpZ2hjaGFydHM9ZDtyZXR1cm4gYX0pOmEoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihhKXtmdW5jdGlvbiBkKGEsYixuLGQpe2EuaGFzT3duUHJvcGVydHkoYil8fChhW2JdPWQuYXBwbHkobnVsbCxuKSl9YT1hP2EuX21vZHVsZXM6e307ZChhLCJtb2R1bGVzL2J1bGxldC5zcmMuanMiLFthWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGEsYil7dmFyIGQ9Yi5pc051bWJlcixyPWIubWVyZ2Usaz1iLnBpY2ssdD1iLnJlbGF0aXZlTGVuZ3RoOwpiPWIuc2VyaWVzVHlwZTt2YXIgZj1hLnNlcmllc1R5cGVzLmNvbHVtbi5wcm90b3R5cGU7YigiYnVsbGV0IiwiY29sdW1uIix7dGFyZ2V0T3B0aW9uczp7d2lkdGg6IjE0MCUiLGhlaWdodDozLGJvcmRlcldpZHRoOjB9LHRvb2x0aXA6e3BvaW50Rm9ybWF0Oic8c3BhbiBzdHlsZT0iY29sb3I6e3Nlcmllcy5jb2xvcn0iPlx1MjVjZjwvc3Bhbj4ge3Nlcmllcy5uYW1lfTogPGI+e3BvaW50Lnl9PC9iPi4gVGFyZ2V0OiA8Yj57cG9pbnQudGFyZ2V0fTwvYj48YnIvPid9fSx7cG9pbnRBcnJheU1hcDpbInkiLCJ0YXJnZXQiXSxwYXJhbGxlbEFycmF5czpbIngiLCJ5IiwidGFyZ2V0Il0sZHJhd1BvaW50czpmdW5jdGlvbigpe3ZhciBhPXRoaXMsbD1hLmNoYXJ0LGI9YS5vcHRpb25zLG49Yi5hbmltYXRpb25MaW1pdHx8MjUwO2YuZHJhd1BvaW50cy5hcHBseSh0aGlzKTthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBwPWMub3B0aW9ucyxlPWMudGFyZ2V0R3JhcGhpYyxmPWMudGFyZ2V0LAptPWMueTtpZihkKGYpJiZudWxsIT09Zil7dmFyIGc9cihiLnRhcmdldE9wdGlvbnMscC50YXJnZXRPcHRpb25zKTt2YXIgdT1nLmhlaWdodDt2YXIgaD1jLnNoYXBlQXJnczt2YXIgcT10KGcud2lkdGgsaC53aWR0aCk7dmFyIHY9YS55QXhpcy50cmFuc2xhdGUoZiwhMSwhMCwhMSwhMCktZy5oZWlnaHQvMi0uNTtoPWEuY3Jpc3BDb2wuYXBwbHkoe2NoYXJ0OmwsYm9yZGVyV2lkdGg6Zy5ib3JkZXJXaWR0aCxvcHRpb25zOntjcmlzcDpiLmNyaXNwfX0sW2gueCtoLndpZHRoLzItcS8yLHYscSx1XSk7ZT8oZVtsLnBvaW50Q291bnQ8bj8iYW5pbWF0ZSI6ImF0dHIiXShoKSxkKG0pJiZudWxsIT09bT9lLmVsZW1lbnQucG9pbnQ9YzplLmVsZW1lbnQucG9pbnQ9dm9pZCAwKTpjLnRhcmdldEdyYXBoaWM9ZT1sLnJlbmRlcmVyLnJlY3QoKS5hdHRyKGgpLmFkZChhLmdyb3VwKTtsLnN0eWxlZE1vZGV8fGUuYXR0cih7ZmlsbDprKGcuY29sb3IscC5jb2xvcixhLnpvbmVzLmxlbmd0aCYmKGMuZ2V0Wm9uZS5jYWxsKHtzZXJpZXM6YSwKeDpjLngseTpmLG9wdGlvbnM6e319KS5jb2xvcnx8YS5jb2xvcil8fHZvaWQgMCxjLmNvbG9yLGEuY29sb3IpLHN0cm9rZTprKGcuYm9yZGVyQ29sb3IsYy5ib3JkZXJDb2xvcixhLm9wdGlvbnMuYm9yZGVyQ29sb3IpLCJzdHJva2Utd2lkdGgiOmcuYm9yZGVyV2lkdGh9KTtkKG0pJiZudWxsIT09bSYmKGUuZWxlbWVudC5wb2ludD1jKTtlLmFkZENsYXNzKGMuZ2V0Q2xhc3NOYW1lKCkrIiBoaWdoY2hhcnRzLWJ1bGxldC10YXJnZXQiLCEwKX1lbHNlIGUmJihjLnRhcmdldEdyYXBoaWM9ZS5kZXN0cm95KCkpfSl9LGdldEV4dHJlbWVzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudGFyZ2V0RGF0YTthPWYuZ2V0RXh0cmVtZXMuY2FsbCh0aGlzLGEpO2ImJmIubGVuZ3RoJiYoYj1mLmdldEV4dHJlbWVzLmNhbGwodGhpcyxiKSxkKGIuZGF0YU1pbikmJihhLmRhdGFNaW49TWF0aC5taW4oayhhLmRhdGFNaW4sSW5maW5pdHkpLGIuZGF0YU1pbikpLGQoYi5kYXRhTWF4KSYmKGEuZGF0YU1heD0KTWF0aC5tYXgoayhhLmRhdGFNYXgsLUluZmluaXR5KSxiLmRhdGFNYXgpKSk7cmV0dXJuIGF9fSx7ZGVzdHJveTpmdW5jdGlvbigpe3RoaXMudGFyZ2V0R3JhcGhpYyYmKHRoaXMudGFyZ2V0R3JhcGhpYz10aGlzLnRhcmdldEdyYXBoaWMuZGVzdHJveSgpKTtmLnBvaW50Q2xhc3MucHJvdG90eXBlLmRlc3Ryb3kuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pOyIifSk7ZChhLCJtYXN0ZXJzL21vZHVsZXMvYnVsbGV0LnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1idWxsZXQuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIENvbG9yQXhpcyBtb2R1bGUKCiAoYykgMjAxMi0yMDE5IFBhd2VsIFBvdGFjemVrCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGIpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGJbImRlZmF1bHQiXT1iLG1vZHVsZS5leHBvcnRzPWIpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2NvbG9yLWF4aXMiLFsiaGlnaGNoYXJ0cyJdLGZ1bmN0aW9uKG0pe2IobSk7Yi5IaWdoY2hhcnRzPW07cmV0dXJuIGJ9KTpiKCJ1bmRlZmluZWQiIT09dHlwZW9mIEhpZ2hjaGFydHM/SGlnaGNoYXJ0czp2b2lkIDApfSkoZnVuY3Rpb24oYil7ZnVuY3Rpb24gbShiLGssZyxuKXtiLmhhc093blByb3BlcnR5KGspfHwoYltrXT1uLmFwcGx5KG51bGwsZykpfWI9Yj9iLl9tb2R1bGVzOnt9O20oYiwicGFydHMtbWFwL0NvbG9yU2VyaWVzTWl4aW4uanMiLFtiWyJwYXJ0cy9HbG9iYWxzLmpzIl1dLGZ1bmN0aW9uKGIpe2IuY29sb3JQb2ludE1peGluPXtzZXRWaXNpYmxlOmZ1bmN0aW9uKGIpe3ZhciBnPXRoaXMsbj1iPwoic2hvdyI6ImhpZGUiO2cudmlzaWJsZT1nLm9wdGlvbnMudmlzaWJsZT0hIWI7WyJncmFwaGljIiwiZGF0YUxhYmVsIl0uZm9yRWFjaChmdW5jdGlvbihiKXtpZihnW2JdKWdbYl1bbl0oKX0pO3RoaXMuc2VyaWVzLmJ1aWxkS0RUcmVlKCl9fTtiLmNvbG9yU2VyaWVzTWl4aW49e29wdGlvbmFsQXhpczoiY29sb3JBeGlzIixjb2xvckF4aXM6MCx0cmFuc2xhdGVDb2xvcnM6ZnVuY3Rpb24oKXt2YXIgYj10aGlzLGc9dGhpcy5vcHRpb25zLm51bGxDb2xvcixuPXRoaXMuY29sb3JBeGlzLG09dGhpcy5jb2xvcktleTsodGhpcy5kYXRhLmxlbmd0aD90aGlzLmRhdGE6dGhpcy5wb2ludHMpLmZvckVhY2goZnVuY3Rpb24ocCl7dmFyIGs9cC5nZXROZXN0ZWRQcm9wZXJ0eShtKTsoaz1wLm9wdGlvbnMuY29sb3J8fChwLmlzTnVsbHx8bnVsbD09PXAudmFsdWU/ZzpuJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBrP24udG9Db2xvcihrLHApOnAuY29sb3J8fGIuY29sb3IpKSYmcC5jb2xvciE9PWsmJgoocC5jb2xvcj1rLCJwb2ludCI9PT1iLm9wdGlvbnMubGVnZW5kVHlwZSYmcC5sZWdlbmRJdGVtJiZiLmNoYXJ0LmxlZ2VuZC5jb2xvcml6ZUl0ZW0ocCxwLnZpc2libGUpKX0pfX19KTttKGIsInBhcnRzLW1hcC9Db2xvckF4aXMuanMiLFtiWyJwYXJ0cy9BeGlzLmpzIl0sYlsicGFydHMvQ2hhcnQuanMiXSxiWyJwYXJ0cy9Db2xvci5qcyJdLGJbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9MZWdlbmQuanMiXSxiWyJtaXhpbnMvbGVnZW5kLXN5bWJvbC5qcyJdLGJbInBhcnRzL1BvaW50LmpzIl0sYlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGIsayxnLG4sbSxwLEEscSl7dmFyIEI9dGhpcyYmdGhpcy5fX2V4dGVuZHN8fGZ1bmN0aW9uKCl7dmFyIGI9ZnVuY3Rpb24oZCxhKXtiPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbihhLGUpe2EuX19wcm90b19fPWV9fHxmdW5jdGlvbihhLGUpe2Zvcih2YXIgYyBpbiBlKWUuaGFzT3duUHJvcGVydHkoYykmJgooYVtjXT1lW2NdKX07cmV0dXJuIGIoZCxhKX07cmV0dXJuIGZ1bmN0aW9uKGQsYSl7ZnVuY3Rpb24gZigpe3RoaXMuY29uc3RydWN0b3I9ZH1iKGQsYSk7ZC5wcm90b3R5cGU9bnVsbD09PWE/T2JqZWN0LmNyZWF0ZShhKTooZi5wcm90b3R5cGU9YS5wcm90b3R5cGUsbmV3IGYpfX0oKSx1PWcucGFyc2UsQz1uLm5vb3A7Zz1xLmFkZEV2ZW50O3ZhciB6PXEuZXJhc2UseD1xLmV4dGVuZCxEPXEuRngsRT1xLmlzTnVtYmVyLHk9cS5tZXJnZSx0PXEucGljayxGPXEuc3BsYXQ7IiI7dmFyIHY9bi5TZXJpZXM7cT1uLmNvbG9yUG9pbnRNaXhpbjt4KHYucHJvdG90eXBlLG4uY29sb3JTZXJpZXNNaXhpbik7eChBLnByb3RvdHlwZSxxKTtrLnByb3RvdHlwZS5jb2xsZWN0aW9uc1dpdGhVcGRhdGUucHVzaCgiY29sb3JBeGlzIik7ay5wcm90b3R5cGUuY29sbGVjdGlvbnNXaXRoSW5pdC5jb2xvckF4aXM9W2sucHJvdG90eXBlLmFkZENvbG9yQXhpc107dmFyIHc9ZnVuY3Rpb24oYil7ZnVuY3Rpb24gZChhLApmKXt2YXIgZT1iLmNhbGwodGhpcyxhLGYpfHx0aGlzO2UuYmVmb3JlUGFkZGluZz0hMTtlLmNoYXJ0PXZvaWQgMDtlLmNvbGw9ImNvbG9yQXhpcyI7ZS5kYXRhQ2xhc3Nlcz12b2lkIDA7ZS5sZWdlbmRJdGVtPXZvaWQgMDtlLmxlZ2VuZEl0ZW1zPXZvaWQgMDtlLm5hbWU9IiI7ZS5vcHRpb25zPXZvaWQgMDtlLnN0b3BzPXZvaWQgMDtlLnZpc2libGU9ITA7ZS5pbml0KGEsZik7cmV0dXJuIGV9QihkLGIpO2QuYnVpbGRPcHRpb25zPWZ1bmN0aW9uKGEsZixlKXthPWEub3B0aW9ucy5sZWdlbmR8fHt9O3ZhciBjPWUubGF5b3V0PyJ2ZXJ0aWNhbCIhPT1lLmxheW91dDoidmVydGljYWwiIT09YS5sYXlvdXQ7cmV0dXJuIHkoZix7c2lkZTpjPzI6MSxyZXZlcnNlZDohY30sZSx7b3Bwb3NpdGU6IWMsc2hvd0VtcHR5OiExLHRpdGxlOm51bGwsdmlzaWJsZTphLmVuYWJsZWQmJihlPyExIT09ZS52aXNpYmxlOiEwKX0pfTtkLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGEsZil7dmFyIGU9ZC5idWlsZE9wdGlvbnMoYSwKZC5kZWZhdWx0T3B0aW9ucyxmKTt0aGlzLmNvbGw9ImNvbG9yQXhpcyI7Yi5wcm90b3R5cGUuaW5pdC5jYWxsKHRoaXMsYSxlKTtmLmRhdGFDbGFzc2VzJiZ0aGlzLmluaXREYXRhQ2xhc3NlcyhmKTt0aGlzLmluaXRTdG9wcygpO3RoaXMuaG9yaXo9IWUub3Bwb3NpdGU7dGhpcy56b29tRW5hYmxlZD0hMX07ZC5wcm90b3R5cGUuaW5pdERhdGFDbGFzc2VzPWZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuY2hhcnQsZSxjPTAsYj1mLm9wdGlvbnMuY2hhcnQuY29sb3JDb3VudCxkPXRoaXMub3B0aW9ucyxoPWEuZGF0YUNsYXNzZXMubGVuZ3RoO3RoaXMuZGF0YUNsYXNzZXM9ZT1bXTt0aGlzLmxlZ2VuZEl0ZW1zPVtdO2EuZGF0YUNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihhLHIpe2E9eShhKTtlLnB1c2goYSk7aWYoZi5zdHlsZWRNb2RlfHwhYS5jb2xvcikiY2F0ZWdvcnkiPT09ZC5kYXRhQ2xhc3NDb2xvcj8oZi5zdHlsZWRNb2RlfHwocj1mLm9wdGlvbnMuY29sb3JzLGI9ci5sZW5ndGgsCmEuY29sb3I9cltjXSksYS5jb2xvckluZGV4PWMsYysrLGM9PT1iJiYoYz0wKSk6YS5jb2xvcj11KGQubWluQ29sb3IpLnR3ZWVuVG8odShkLm1heENvbG9yKSwyPmg/LjU6ci8oaC0xKSl9KX07ZC5wcm90b3R5cGUuaGFzRGF0YT1mdW5jdGlvbigpe3JldHVybiEhKHRoaXMudGlja1Bvc2l0aW9uc3x8W10pLmxlbmd0aH07ZC5wcm90b3R5cGUuc2V0VGlja1Bvc2l0aW9ucz1mdW5jdGlvbigpe2lmKCF0aGlzLmRhdGFDbGFzc2VzKXJldHVybiBiLnByb3RvdHlwZS5zZXRUaWNrUG9zaXRpb25zLmNhbGwodGhpcyl9O2QucHJvdG90eXBlLmluaXRTdG9wcz1mdW5jdGlvbigpe3RoaXMuc3RvcHM9dGhpcy5vcHRpb25zLnN0b3BzfHxbWzAsdGhpcy5vcHRpb25zLm1pbkNvbG9yXSxbMSx0aGlzLm9wdGlvbnMubWF4Q29sb3JdXTt0aGlzLnN0b3BzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5jb2xvcj11KGFbMV0pfSl9O2QucHJvdG90eXBlLnNldE9wdGlvbnM9ZnVuY3Rpb24oYSl7Yi5wcm90b3R5cGUuc2V0T3B0aW9ucy5jYWxsKHRoaXMsCmEpO3RoaXMub3B0aW9ucy5jcm9zc2hhaXI9dGhpcy5vcHRpb25zLm1hcmtlcn07ZC5wcm90b3R5cGUuc2V0QXhpc1NpemU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmxlZ2VuZFN5bWJvbCxmPXRoaXMuY2hhcnQsZT1mLm9wdGlvbnMubGVnZW5kfHx7fSxjLGI7YT8odGhpcy5sZWZ0PWU9YS5hdHRyKCJ4IiksdGhpcy50b3A9Yz1hLmF0dHIoInkiKSx0aGlzLndpZHRoPWI9YS5hdHRyKCJ3aWR0aCIpLHRoaXMuaGVpZ2h0PWE9YS5hdHRyKCJoZWlnaHQiKSx0aGlzLnJpZ2h0PWYuY2hhcnRXaWR0aC1lLWIsdGhpcy5ib3R0b209Zi5jaGFydEhlaWdodC1jLWEsdGhpcy5sZW49dGhpcy5ob3Jpej9iOmEsdGhpcy5wb3M9dGhpcy5ob3Jpej9lOmMpOnRoaXMubGVuPSh0aGlzLmhvcml6P2Uuc3ltYm9sV2lkdGg6ZS5zeW1ib2xIZWlnaHQpfHxkLmRlZmF1bHRMZWdlbmRMZW5ndGh9O2QucHJvdG90eXBlLm5vcm1hbGl6ZWRWYWx1ZT1mdW5jdGlvbihhKXt0aGlzLmxvZ2FyaXRobWljJiYoYT10aGlzLmxvZ2FyaXRobWljLmxvZzJsaW4oYSkpOwpyZXR1cm4gMS0odGhpcy5tYXgtYSkvKHRoaXMubWF4LXRoaXMubWlufHwxKX07ZC5wcm90b3R5cGUudG9Db2xvcj1mdW5jdGlvbihhLGYpe3ZhciBlPXRoaXMuZGF0YUNsYXNzZXMsYz10aGlzLnN0b3BzLGI7aWYoZSlmb3IoYj1lLmxlbmd0aDtiLS07KXt2YXIgZD1lW2JdO3ZhciBoPWQuZnJvbTtjPWQudG87aWYoKCJ1bmRlZmluZWQiPT09dHlwZW9mIGh8fGE+PWgpJiYoInVuZGVmaW5lZCI9PT10eXBlb2YgY3x8YTw9Yykpe3ZhciBsPWQuY29sb3I7ZiYmKGYuZGF0YUNsYXNzPWIsZi5jb2xvckluZGV4PWQuY29sb3JJbmRleCk7YnJlYWt9fWVsc2V7YT10aGlzLm5vcm1hbGl6ZWRWYWx1ZShhKTtmb3IoYj1jLmxlbmd0aDtiLS0mJiEoYT5jW2JdWzBdKTspO2g9Y1tiXXx8Y1tiKzFdO2M9Y1tiKzFdfHxoO2E9MS0oY1swXS1hKS8oY1swXS1oWzBdfHwxKTtsPWguY29sb3IudHdlZW5UbyhjLmNvbG9yLGEpfXJldHVybiBsfTtkLnByb3RvdHlwZS5nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt2YXIgYT0KdGhpcy5sZWdlbmRHcm91cCxmPXRoaXMuY2hhcnQuYXhpc09mZnNldFt0aGlzLnNpZGVdO2EmJih0aGlzLmF4aXNQYXJlbnQ9YSxiLnByb3RvdHlwZS5nZXRPZmZzZXQuY2FsbCh0aGlzKSx0aGlzLmFkZGVkfHwodGhpcy5hZGRlZD0hMCx0aGlzLmxhYmVsTGVmdD0wLHRoaXMubGFiZWxSaWdodD10aGlzLndpZHRoKSx0aGlzLmNoYXJ0LmF4aXNPZmZzZXRbdGhpcy5zaWRlXT1mKX07ZC5wcm90b3R5cGUuc2V0TGVnZW5kQ29sb3I9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnJldmVyc2VkLGY9YT8xOjA7YT1hPzA6MTtmPXRoaXMuaG9yaXo/W2YsMCxhLDBdOlswLGEsMCxmXTt0aGlzLmxlZ2VuZENvbG9yPXtsaW5lYXJHcmFkaWVudDp7eDE6ZlswXSx5MTpmWzFdLHgyOmZbMl0seTI6ZlszXX0sc3RvcHM6dGhpcy5zdG9wc319O2QucHJvdG90eXBlLmRyYXdMZWdlbmRTeW1ib2w9ZnVuY3Rpb24oYSxmKXt2YXIgYj1hLnBhZGRpbmcsYz1hLm9wdGlvbnMscj10aGlzLmhvcml6LGw9dChjLnN5bWJvbFdpZHRoLApyP2QuZGVmYXVsdExlZ2VuZExlbmd0aDoxMiksaD10KGMuc3ltYm9sSGVpZ2h0LHI/MTI6ZC5kZWZhdWx0TGVnZW5kTGVuZ3RoKSxnPXQoYy5sYWJlbFBhZGRpbmcscj8xNjozMCk7Yz10KGMuaXRlbURpc3RhbmNlLDEwKTt0aGlzLnNldExlZ2VuZENvbG9yKCk7Zi5sZWdlbmRTeW1ib2w9dGhpcy5jaGFydC5yZW5kZXJlci5yZWN0KDAsYS5iYXNlbGluZS0xMSxsLGgpLmF0dHIoe3pJbmRleDoxfSkuYWRkKGYubGVnZW5kR3JvdXApO3RoaXMubGVnZW5kSXRlbVdpZHRoPWwrYisocj9jOmcpO3RoaXMubGVnZW5kSXRlbUhlaWdodD1oK2IrKHI/ZzowKX07ZC5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oYSl7dGhpcy5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihiKXtiLnNldFN0YXRlKGEpfSl9O2QucHJvdG90eXBlLnNldFZpc2libGU9ZnVuY3Rpb24oKXt9O2QucHJvdG90eXBlLmdldFNlcmllc0V4dHJlbWVzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zZXJpZXMsYj1hLmxlbmd0aCwKZTt0aGlzLmRhdGFNaW49SW5maW5pdHk7Zm9yKHRoaXMuZGF0YU1heD0tSW5maW5pdHk7Yi0tOyl7dmFyIGM9YVtiXTt2YXIgZD1jLmNvbG9yS2V5PXQoYy5vcHRpb25zLmNvbG9yS2V5LGMuY29sb3JLZXksYy5wb2ludFZhbEtleSxjLnpvbmVBeGlzLCJ5Iik7dmFyIGw9Yy5wb2ludEFycmF5TWFwO3ZhciBoPWNbZCsiTWluIl0mJmNbZCsiTWF4Il07aWYoY1tkKyJEYXRhIl0pdmFyIGc9Y1tkKyJEYXRhIl07ZWxzZSBpZihsKXtnPVtdO2w9bC5pbmRleE9mKGQpO3ZhciBrPWMueURhdGE7aWYoMDw9bCYmaylmb3IoZT0wO2U8ay5sZW5ndGg7ZSsrKWcucHVzaCh0KGtbZV1bbF0sa1tlXSkpfWVsc2UgZz1jLnlEYXRhO2g/KGMubWluQ29sb3JWYWx1ZT1jW2QrIk1pbiJdLGMubWF4Q29sb3JWYWx1ZT1jW2QrIk1heCJdKTooZz12LnByb3RvdHlwZS5nZXRFeHRyZW1lcy5jYWxsKGMsZyksYy5taW5Db2xvclZhbHVlPWcuZGF0YU1pbixjLm1heENvbG9yVmFsdWU9Zy5kYXRhTWF4KTsidW5kZWZpbmVkIiE9PQp0eXBlb2YgYy5taW5Db2xvclZhbHVlJiYodGhpcy5kYXRhTWluPU1hdGgubWluKHRoaXMuZGF0YU1pbixjLm1pbkNvbG9yVmFsdWUpLHRoaXMuZGF0YU1heD1NYXRoLm1heCh0aGlzLmRhdGFNYXgsYy5tYXhDb2xvclZhbHVlKSk7aHx8di5wcm90b3R5cGUuYXBwbHlFeHRyZW1lcy5jYWxsKGMpfX07ZC5wcm90b3R5cGUuZHJhd0Nyb3NzaGFpcj1mdW5jdGlvbihhLGYpe3ZhciBkPWYmJmYucGxvdFgsYz1mJiZmLnBsb3RZLGw9dGhpcy5wb3MsZz10aGlzLmxlbjtpZihmKXt2YXIgaD10aGlzLnRvUGl4ZWxzKGYuZ2V0TmVzdGVkUHJvcGVydHkoZi5zZXJpZXMuY29sb3JLZXkpKTtoPGw/aD1sLTI6aD5sK2cmJihoPWwrZysyKTtmLnBsb3RYPWg7Zi5wbG90WT10aGlzLmxlbi1oO2IucHJvdG90eXBlLmRyYXdDcm9zc2hhaXIuY2FsbCh0aGlzLGEsZik7Zi5wbG90WD1kO2YucGxvdFk9Yzt0aGlzLmNyb3NzJiYhdGhpcy5jcm9zcy5hZGRlZFRvQ29sb3JBeGlzJiZ0aGlzLmxlZ2VuZEdyb3VwJiYKKHRoaXMuY3Jvc3MuYWRkQ2xhc3MoImhpZ2hjaGFydHMtY29sb3JheGlzLW1hcmtlciIpLmFkZCh0aGlzLmxlZ2VuZEdyb3VwKSx0aGlzLmNyb3NzLmFkZGVkVG9Db2xvckF4aXM9ITAsIXRoaXMuY2hhcnQuc3R5bGVkTW9kZSYmdGhpcy5jcm9zc2hhaXImJnRoaXMuY3Jvc3MuYXR0cih7ZmlsbDp0aGlzLmNyb3NzaGFpci5jb2xvcn0pKX19O2QucHJvdG90eXBlLmdldFBsb3RMaW5lUGF0aD1mdW5jdGlvbihhKXt2YXIgZD10aGlzLmxlZnQsZT1hLnRyYW5zbGF0ZWRWYWx1ZSxjPXRoaXMudG9wO3JldHVybiBFKGUpP3RoaXMuaG9yaXo/W1siTSIsZS00LGMtNl0sWyJMIixlKzQsYy02XSxbIkwiLGUsY10sWyJaIl1dOltbIk0iLGQsZV0sWyJMIixkLTYsZSs2XSxbIkwiLGQtNixlLTZdLFsiWiJdXTpiLnByb3RvdHlwZS5nZXRQbG90TGluZVBhdGguY2FsbCh0aGlzLGEpfTtkLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oYSxmKXt2YXIgZT10aGlzLmNoYXJ0LGM9ZS5sZWdlbmQsbD1kLmJ1aWxkT3B0aW9ucyhlLAp7fSxhKTt0aGlzLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuaXNEaXJ0eURhdGE9ITB9KTsoYS5kYXRhQ2xhc3NlcyYmYy5hbGxJdGVtc3x8dGhpcy5kYXRhQ2xhc3NlcykmJnRoaXMuZGVzdHJveUl0ZW1zKCk7ZS5vcHRpb25zW3RoaXMuY29sbF09eSh0aGlzLnVzZXJPcHRpb25zLGwpO2IucHJvdG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMsbCxmKTt0aGlzLmxlZ2VuZEl0ZW0mJih0aGlzLnNldExlZ2VuZENvbG9yKCksYy5jb2xvcml6ZUl0ZW0odGhpcywhMCkpfTtkLnByb3RvdHlwZS5kZXN0cm95SXRlbXM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNoYXJ0O3RoaXMubGVnZW5kSXRlbT9hLmxlZ2VuZC5kZXN0cm95SXRlbSh0aGlzKTp0aGlzLmxlZ2VuZEl0ZW1zJiZ0aGlzLmxlZ2VuZEl0ZW1zLmZvckVhY2goZnVuY3Rpb24oYil7YS5sZWdlbmQuZGVzdHJveUl0ZW0oYil9KTthLmlzRGlydHlMZWdlbmQ9ITB9O2QucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihhKXt0aGlzLmRlc3Ryb3lJdGVtcygpOwpiLnByb3RvdHlwZS5yZW1vdmUuY2FsbCh0aGlzLGEpfTtkLnByb3RvdHlwZS5nZXREYXRhQ2xhc3NMZWdlbmRTeW1ib2xzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPWEuY2hhcnQsZD1hLmxlZ2VuZEl0ZW1zLGM9Yi5vcHRpb25zLmxlZ2VuZCxsPWMudmFsdWVEZWNpbWFscyxnPWMudmFsdWVTdWZmaXh8fCIiLGg7ZC5sZW5ndGh8fGEuZGF0YUNsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihjLGUpe3ZhciBmPSEwLGs9Yy5mcm9tLG09Yy50byxuPWIubnVtYmVyRm9ybWF0dGVyO2g9IiI7InVuZGVmaW5lZCI9PT10eXBlb2Ygaz9oPSI8ICI6InVuZGVmaW5lZCI9PT10eXBlb2YgbSYmKGg9Ij4gIik7InVuZGVmaW5lZCIhPT10eXBlb2YgayYmKGgrPW4oayxsKStnKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBrJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBtJiYoaCs9IiAtICIpOyJ1bmRlZmluZWQiIT09dHlwZW9mIG0mJihoKz1uKG0sbCkrZyk7ZC5wdXNoKHgoe2NoYXJ0OmIsbmFtZTpoLG9wdGlvbnM6e30sCmRyYXdMZWdlbmRTeW1ib2w6cC5kcmF3UmVjdGFuZ2xlLHZpc2libGU6ITAsc2V0U3RhdGU6Qyxpc0RhdGFDbGFzczohMCxzZXRWaXNpYmxlOmZ1bmN0aW9uKCl7Zj1hLnZpc2libGU9IWY7YS5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXthLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuZGF0YUNsYXNzPT09ZSYmYS5zZXRWaXNpYmxlKGYpfSl9KTtiLmxlZ2VuZC5jb2xvcml6ZUl0ZW0odGhpcyxmKX19LGMpKX0pO3JldHVybiBkfTtkLmRlZmF1bHRMZWdlbmRMZW5ndGg9MjAwO2QuZGVmYXVsdE9wdGlvbnM9e2xpbmVXaWR0aDowLG1pblBhZGRpbmc6MCxtYXhQYWRkaW5nOjAsZ3JpZExpbmVXaWR0aDoxLHRpY2tQaXhlbEludGVydmFsOjcyLHN0YXJ0T25UaWNrOiEwLGVuZE9uVGljazohMCxvZmZzZXQ6MCxtYXJrZXI6e2FuaW1hdGlvbjp7ZHVyYXRpb246NTB9LHdpZHRoOi4wMSxjb2xvcjoiIzk5OTk5OSJ9LGxhYmVsczp7b3ZlcmZsb3c6Imp1c3RpZnkiLHJvdGF0aW9uOjB9LAptaW5Db2xvcjoiI2U2ZWJmNSIsbWF4Q29sb3I6IiMwMDMzOTkiLHRpY2tMZW5ndGg6NSxzaG93SW5MZWdlbmQ6ITB9O2Qua2VlcFByb3BzPVsibGVnZW5kR3JvdXAiLCJsZWdlbmRJdGVtSGVpZ2h0IiwibGVnZW5kSXRlbVdpZHRoIiwibGVnZW5kSXRlbSIsImxlZ2VuZFN5bWJvbCJdO3JldHVybiBkfShiKTtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShiLmtlZXBQcm9wcyx3LmtlZXBQcm9wcyk7bi5Db2xvckF4aXM9dztbImZpbGwiLCJzdHJva2UiXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe0QucHJvdG90eXBlW2IrIlNldHRlciJdPWZ1bmN0aW9uKCl7dGhpcy5lbGVtLmF0dHIoYix1KHRoaXMuc3RhcnQpLnR3ZWVuVG8odSh0aGlzLmVuZCksdGhpcy5wb3MpLG51bGwsITApfX0pO2coaywiYWZ0ZXJHZXRBeGVzIixmdW5jdGlvbigpe3ZhciBiPXRoaXMsZD1iLm9wdGlvbnM7dGhpcy5jb2xvckF4aXM9W107ZC5jb2xvckF4aXMmJihkLmNvbG9yQXhpcz1GKGQuY29sb3JBeGlzKSxkLmNvbG9yQXhpcy5mb3JFYWNoKGZ1bmN0aW9uKGEsCmQpe2EuaW5kZXg9ZDtuZXcgdyhiLGEpfSkpfSk7Zyh2LCJiaW5kQXhlcyIsZnVuY3Rpb24oKXt2YXIgYj10aGlzLmF4aXNUeXBlcztiPy0xPT09Yi5pbmRleE9mKCJjb2xvckF4aXMiKSYmYi5wdXNoKCJjb2xvckF4aXMiKTp0aGlzLmF4aXNUeXBlcz1bImNvbG9yQXhpcyJdfSk7ZyhtLCJhZnRlckdldEFsbEl0ZW1zIixmdW5jdGlvbihiKXt2YXIgZD1bXSxhLGY7KHRoaXMuY2hhcnQuY29sb3JBeGlzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihlKXsoYT1lLm9wdGlvbnMpJiZhLnNob3dJbkxlZ2VuZCYmKGEuZGF0YUNsYXNzZXMmJmEudmlzaWJsZT9kPWQuY29uY2F0KGUuZ2V0RGF0YUNsYXNzTGVnZW5kU3ltYm9scygpKTphLnZpc2libGUmJmQucHVzaChlKSxlLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKCFjLm9wdGlvbnMuc2hvd0luTGVnZW5kfHxhLmRhdGFDbGFzc2VzKSJwb2ludCI9PT1jLm9wdGlvbnMubGVnZW5kVHlwZT9jLnBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ooYi5hbGxJdGVtcywKYSl9KTp6KGIuYWxsSXRlbXMsYyl9KSl9KTtmb3IoZj1kLmxlbmd0aDtmLS07KWIuYWxsSXRlbXMudW5zaGlmdChkW2ZdKX0pO2cobSwiYWZ0ZXJDb2xvcml6ZUl0ZW0iLGZ1bmN0aW9uKGIpe2IudmlzaWJsZSYmYi5pdGVtLmxlZ2VuZENvbG9yJiZiLml0ZW0ubGVnZW5kU3ltYm9sLmF0dHIoe2ZpbGw6Yi5pdGVtLmxlZ2VuZENvbG9yfSl9KTtnKG0sImFmdGVyVXBkYXRlIixmdW5jdGlvbigpe3ZhciBiPXRoaXMuY2hhcnQuY29sb3JBeGlzO2ImJmIuZm9yRWFjaChmdW5jdGlvbihiLGEsZil7Yi51cGRhdGUoe30sZil9KX0pO2codiwiYWZ0ZXJUcmFuc2xhdGUiLGZ1bmN0aW9uKCl7KHRoaXMuY2hhcnQuY29sb3JBeGlzJiZ0aGlzLmNoYXJ0LmNvbG9yQXhpcy5sZW5ndGh8fHRoaXMuY29sb3JBdHRyaWJzKSYmdGhpcy50cmFuc2xhdGVDb2xvcnMoKX0pO3JldHVybiB3fSk7bShiLCJtYXN0ZXJzL21vZHVsZXMvY29sb3JheGlzLnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1jb2xvcmF4aXMuanMubWFw"></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDA5LTIwMTkgU2ViYXN0aWFuIEJvY2hhbiwgUmFmYWwgU2ViZXN0amFuc2tpCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGIpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGJbImRlZmF1bHQiXT1iLG1vZHVsZS5leHBvcnRzPWIpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2R1bWJiZWxsIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihmKXtiKGYpO2IuSGlnaGNoYXJ0cz1mO3JldHVybiBifSk6YigidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGYoYixjLGYscil7Yi5oYXNPd25Qcm9wZXJ0eShjKXx8KGJbY109ci5hcHBseShudWxsLGYpKX1iPWI/Yi5fbW9kdWxlczp7fTtmKGIsIm1vZHVsZXMvZHVtYmJlbGwuc3JjLmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLGMpe3ZhciBmPWIuU1ZHUmVuZGVyZXIscj1jLmV4dGVuZCxoPWMucGljazsKYz1jLnNlcmllc1R5cGU7dmFyIHA9Yi5zZXJpZXNUeXBlcyx1PWIuU2VyaWVzLnByb3RvdHlwZSxsPXAuYXJlYXJhbmdlLnByb3RvdHlwZSx0PXAuY29sdW1uLnByb3RvdHlwZSxtPWwucG9pbnRDbGFzcy5wcm90b3R5cGU7YygiZHVtYmJlbGwiLCJhcmVhcmFuZ2UiLHt0cmFja0J5QXJlYTohMSxmaWxsQ29sb3I6Im5vbmUiLGxpbmVXaWR0aDowLHBvaW50UmFuZ2U6MSxjb25uZWN0b3JXaWR0aDoxLHN0aWNreVRyYWNraW5nOiExLGdyb3VwUGFkZGluZzouMixjcmlzcDohMSxwb2ludFBhZGRpbmc6LjEsbG93Q29sb3I6IiMzMzMzMzMiLHN0YXRlczp7aG92ZXI6e2xpbmVXaWR0aFBsdXM6MCxjb25uZWN0b3JXaWR0aFBsdXM6MSxoYWxvOiExfX19LHt0cmFja2VyR3JvdXBzOlsiZ3JvdXAiLCJtYXJrZXJHcm91cCIsImRhdGFMYWJlbHNHcm91cCJdLGRyYXdUcmFja2VyOmIuVHJhY2tlck1peGluLmRyYXdUcmFja2VyUG9pbnQsZHJhd0dyYXBoOmIubm9vcCxjcmlzcENvbDp0LmNyaXNwQ29sLApnZXRDb25uZWN0b3JBdHRyaWJzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY2hhcnQsZT1hLm9wdGlvbnMsZz10aGlzLm9wdGlvbnMsZD10aGlzLnhBeGlzLG49dGhpcy55QXhpcyxjPWgoZS5jb25uZWN0b3JXaWR0aCxnLmNvbm5lY3RvcldpZHRoKSxsPWgoZS5jb25uZWN0b3JDb2xvcixnLmNvbm5lY3RvckNvbG9yLGUuY29sb3IsYS56b25lP2Euem9uZS5jb2xvcjp2b2lkIDAsYS5jb2xvcikscD1oKGcuc3RhdGVzJiZnLnN0YXRlcy5ob3ZlciYmZy5zdGF0ZXMuaG92ZXIuY29ubmVjdG9yV2lkdGhQbHVzLDEpLG09aChlLmRhc2hTdHlsZSxnLmRhc2hTdHlsZSkscT1oKGEucGxvdExvdyxhLnBsb3RZKSxrPW4udG9QaXhlbHMoZy50aHJlc2hvbGR8fDAsITApO2s9aChhLnBsb3RIaWdoLGIuaW52ZXJ0ZWQ/bi5sZW4tazprKTthLnN0YXRlJiYoYys9cCk7MD5xP3E9MDpxPj1uLmxlbiYmKHE9bi5sZW4pOzA+az9rPTA6az49bi5sZW4mJihrPW4ubGVuKTtpZigwPmEucGxvdFh8fGEucGxvdFg+CmQubGVuKWM9MDthLnVwcGVyR3JhcGhpYyYmKGQ9e3k6YS55LHpvbmU6YS56b25lfSxhLnk9YS5oaWdoLGEuem9uZT1hLnpvbmU/YS5nZXRab25lKCk6dm9pZCAwLGw9aChlLmNvbm5lY3RvckNvbG9yLGcuY29ubmVjdG9yQ29sb3IsZS5jb2xvcixhLnpvbmU/YS56b25lLmNvbG9yOnZvaWQgMCxhLmNvbG9yKSxyKGEsZCkpO2E9e2Q6Zi5wcm90b3R5cGUuY3Jpc3BMaW5lKFtbIk0iLGEucGxvdFgscV0sWyJMIixhLnBsb3RYLGtdXSxjLCJjZWlsIil9O2Iuc3R5bGVkTW9kZXx8KGEuc3Ryb2tlPWwsYVsic3Ryb2tlLXdpZHRoIl09YyxtJiYoYS5kYXNoc3R5bGU9bSkpO3JldHVybiBhfSxkcmF3Q29ubmVjdG9yOmZ1bmN0aW9uKGEpe3ZhciBiPWgodGhpcy5vcHRpb25zLmFuaW1hdGlvbkxpbWl0LDI1MCk7Yj1hLmNvbm5lY3RvciYmdGhpcy5jaGFydC5wb2ludENvdW50PGI/ImFuaW1hdGUiOiJhdHRyIjthLmNvbm5lY3Rvcnx8KGEuY29ubmVjdG9yPXRoaXMuY2hhcnQucmVuZGVyZXIucGF0aCgpLmFkZENsYXNzKCJoaWdoY2hhcnRzLWxvbGxpcG9wLXN0ZW0iKS5hdHRyKHt6SW5kZXg6LTF9KS5hZGQodGhpcy5tYXJrZXJHcm91cCkpOwphLmNvbm5lY3RvcltiXSh0aGlzLmdldENvbm5lY3RvckF0dHJpYnMoYSkpfSxnZXRDb2x1bW5NZXRyaWNzOmZ1bmN0aW9uKCl7dmFyIGE9dC5nZXRDb2x1bW5NZXRyaWNzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthLm9mZnNldCs9YS53aWR0aC8yO3JldHVybiBhfSx0cmFuc2xhdGVQb2ludDpsLnRyYW5zbGF0ZSxzZXRTaGFwZUFyZ3M6cC5jb2x1bW5yYW5nZS5wcm90b3R5cGUudHJhbnNsYXRlLHRyYW5zbGF0ZTpmdW5jdGlvbigpe3RoaXMuc2V0U2hhcGVBcmdzLmFwcGx5KHRoaXMpO3RoaXMudHJhbnNsYXRlUG9pbnQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMucG9pbnRzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9YS5zaGFwZUFyZ3MsZT1hLnBvaW50V2lkdGg7YS5wbG90WD1iLng7Yi54PWEucGxvdFgtZS8yO2EudG9vbHRpcFBvcz1udWxsfSk7dGhpcy5jb2x1bW5NZXRyaWNzLm9mZnNldC09dGhpcy5jb2x1bW5NZXRyaWNzLndpZHRoLzJ9LHNlcmllc0RyYXdQb2ludHM6bC5kcmF3UG9pbnRzLApkcmF3UG9pbnRzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jaGFydCxiPXRoaXMucG9pbnRzLmxlbmd0aCxlPXRoaXMubG93Q29sb3I9dGhpcy5vcHRpb25zLmxvd0NvbG9yLGc9MDtmb3IodGhpcy5zZXJpZXNEcmF3UG9pbnRzLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtnPGI7KXt2YXIgZD10aGlzLnBvaW50c1tnXTt0aGlzLmRyYXdDb25uZWN0b3IoZCk7ZC51cHBlckdyYXBoaWMmJihkLnVwcGVyR3JhcGhpYy5lbGVtZW50LnBvaW50PWQsZC51cHBlckdyYXBoaWMuYWRkQ2xhc3MoImhpZ2hjaGFydHMtbG9sbGlwb3AtaGlnaCIpKTtkLmNvbm5lY3Rvci5lbGVtZW50LnBvaW50PWQ7aWYoZC5sb3dlckdyYXBoaWMpe3ZhciBjPWQuem9uZSYmZC56b25lLmNvbG9yO2M9aChkLm9wdGlvbnMubG93Q29sb3IsZSxkLm9wdGlvbnMuY29sb3IsYyxkLmNvbG9yLHRoaXMuY29sb3IpO2Euc3R5bGVkTW9kZXx8ZC5sb3dlckdyYXBoaWMuYXR0cih7ZmlsbDpjfSk7ZC5sb3dlckdyYXBoaWMuYWRkQ2xhc3MoImhpZ2hjaGFydHMtbG9sbGlwb3AtbG93Iil9ZysrfX0sCm1hcmtlckF0dHJpYnM6ZnVuY3Rpb24oKXt2YXIgYT1sLm1hcmtlckF0dHJpYnMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EueD1NYXRoLmZsb29yKGEueCk7YS55PU1hdGguZmxvb3IoYS55KTtyZXR1cm4gYX0scG9pbnRBdHRyaWJzOmZ1bmN0aW9uKGEsYil7dmFyIGU9dS5wb2ludEF0dHJpYnMuYXBwbHkodGhpcyxhcmd1bWVudHMpOyJob3ZlciI9PT1iJiZkZWxldGUgZS5maWxsO3JldHVybiBlfX0se2Rlc3Ryb3lFbGVtZW50czptLmRlc3Ryb3lFbGVtZW50cyxpc1ZhbGlkOm0uaXNWYWxpZCxwb2ludFNldFN0YXRlOm0uc2V0U3RhdGUsc2V0U3RhdGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlcmllcyxiPWEuY2hhcnQsZT1hLm9wdGlvbnMubWFya2VyLGM9dGhpcy5vcHRpb25zLGQ9aChjLmxvd0NvbG9yLGEub3B0aW9ucy5sb3dDb2xvcixjLmNvbG9yLHRoaXMuem9uZSYmdGhpcy56b25lLmNvbG9yLHRoaXMuY29sb3IsYS5jb2xvciksZj0iYXR0ciI7dGhpcy5wb2ludFNldFN0YXRlLmFwcGx5KHRoaXMsCmFyZ3VtZW50cyk7dGhpcy5zdGF0ZXx8KGY9ImFuaW1hdGUiLHRoaXMubG93ZXJHcmFwaGljJiYhYi5zdHlsZWRNb2RlJiYodGhpcy5sb3dlckdyYXBoaWMuYXR0cih7ZmlsbDpkfSksdGhpcy51cHBlckdyYXBoaWMmJihiPXt5OnRoaXMueSx6b25lOnRoaXMuem9uZX0sdGhpcy55PXRoaXMuaGlnaCx0aGlzLnpvbmU9dGhpcy56b25lP3RoaXMuZ2V0Wm9uZSgpOnZvaWQgMCxlPWgodGhpcy5tYXJrZXI/dGhpcy5tYXJrZXIuZmlsbENvbG9yOnZvaWQgMCxlP2UuZmlsbENvbG9yOnZvaWQgMCxjLmNvbG9yLHRoaXMuem9uZT90aGlzLnpvbmUuY29sb3I6dm9pZCAwLHRoaXMuY29sb3IpLHRoaXMudXBwZXJHcmFwaGljLmF0dHIoe2ZpbGw6ZX0pLHIodGhpcyxiKSkpKTt0aGlzLmNvbm5lY3RvcltmXShhLmdldENvbm5lY3RvckF0dHJpYnModGhpcykpfX0pOyIifSk7ZihiLCJtYXN0ZXJzL21vZHVsZXMvZHVtYmJlbGwuc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWR1bWJiZWxsLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDA5LTIwMTkgU2ViYXN0aWFuIEJvY2hhbiwgUmFmYWwgU2ViZXN0amFuc2tpCgogTGljZW5zZTogd3d3LmhpZ2hjaGFydHMuY29tL2xpY2Vuc2UKKi8KKGZ1bmN0aW9uKGEpeyJvYmplY3QiPT09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/KGFbImRlZmF1bHQiXT1hLG1vZHVsZS5leHBvcnRzPWEpOiJmdW5jdGlvbiI9PT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiaGlnaGNoYXJ0cy9tb2R1bGVzL2xvbGxpcG9wIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbihiKXthKGIpO2EuSGlnaGNoYXJ0cz1iO3JldHVybiBhfSk6YSgidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxmLGIsYyl7YS5oYXNPd25Qcm9wZXJ0eShmKXx8KGFbZl09Yy5hcHBseShudWxsLGIpKX1hPWE/YS5fbW9kdWxlczp7fTtiKGEsIm1vZHVsZXMvbG9sbGlwb3Auc3JjLmpzIixbYVsicGFydHMvR2xvYmFscy5qcyJdLGFbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihhLGIpe2I9Yi5zZXJpZXNUeXBlO3ZhciBlPWEuc2VyaWVzVHlwZXMuYXJlYS5wcm90b3R5cGUsCmM9YS5zZXJpZXNUeXBlcy5jb2x1bW4ucHJvdG90eXBlO2IoImxvbGxpcG9wIiwiZHVtYmJlbGwiLHtsb3dDb2xvcjp2b2lkIDAsdGhyZXNob2xkOjAsY29ubmVjdG9yV2lkdGg6MSxncm91cFBhZGRpbmc6LjIscG9pbnRQYWRkaW5nOi4xLHN0YXRlczp7aG92ZXI6e2xpbmVXaWR0aFBsdXM6MCxjb25uZWN0b3JXaWR0aFBsdXM6MSxoYWxvOiExfX0sdG9vbHRpcDp7cG9pbnRGb3JtYXQ6JzxzcGFuIHN0eWxlPSJjb2xvcjp7c2VyaWVzLmNvbG9yfSI+XHUyNWNmPC9zcGFuPiB7c2VyaWVzLm5hbWV9OiA8Yj57cG9pbnQueX08L2I+PGJyLz4nfX0se3BvaW50QXJyYXlNYXA6WyJ5Il0scG9pbnRWYWxLZXk6InkiLHRvWURhdGE6ZnVuY3Rpb24oYil7cmV0dXJuW2EucGljayhiLnksYi5sb3cpXX0sdHJhbnNsYXRlUG9pbnQ6ZS50cmFuc2xhdGUsZHJhd1BvaW50OmUuZHJhd1BvaW50cyxkcmF3RGF0YUxhYmVsczpjLmRyYXdEYXRhTGFiZWxzLHNldFNoYXBlQXJnczpjLnRyYW5zbGF0ZX0se3BvaW50U2V0U3RhdGU6ZS5wb2ludENsYXNzLnByb3RvdHlwZS5zZXRTdGF0ZSwKc2V0U3RhdGU6YS5zZXJpZXNUeXBlcy5kdW1iYmVsbC5wcm90b3R5cGUucG9pbnRDbGFzcy5wcm90b3R5cGUuc2V0U3RhdGUsaW5pdDpmdW5jdGlvbihiLGQsYyl7YS5pc09iamVjdChkKSYmImxvdyJpbiBkJiYoZC55PWQubG93LGRlbGV0ZSBkLmxvdyk7cmV0dXJuIGEuUG9pbnQucHJvdG90eXBlLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0pOyIifSk7YihhLCJtYXN0ZXJzL21vZHVsZXMvbG9sbGlwb3Auc3JjLmpzIixbXSxmdW5jdGlvbigpe30pfSk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPWxvbGxpcG9wLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIChjKSAyMDA5LTIwMTkgVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoqLwooZnVuY3Rpb24obSl7Im9iamVjdCI9PT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8obVsiZGVmYXVsdCJdPW0sbW9kdWxlLmV4cG9ydHM9bSk6ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKCJoaWdoY2hhcnRzL21vZHVsZXMvc2VyaWVzLWxhYmVsIixbImhpZ2hjaGFydHMiXSxmdW5jdGlvbih3KXttKHcpO20uSGlnaGNoYXJ0cz13O3JldHVybiBtfSk6bSgidW5kZWZpbmVkIiE9PXR5cGVvZiBIaWdoY2hhcnRzP0hpZ2hjaGFydHM6dm9pZCAwKX0pKGZ1bmN0aW9uKG0pe2Z1bmN0aW9uIHcobSx4LHcsdSl7bS5oYXNPd25Qcm9wZXJ0eSh4KXx8KG1beF09dS5hcHBseShudWxsLHcpKX1tPW0/bS5fbW9kdWxlczp7fTt3KG0sIm1vZHVsZXMvc2VyaWVzLWxhYmVsLnNyYy5qcyIsW21bInBhcnRzL0NoYXJ0LmpzIl0sbVsicGFydHMvR2xvYmFscy5qcyJdLG1bInBhcnRzL1NWR1JlbmRlcmVyLmpzIl0sbVsicGFydHMvVXRpbGl0aWVzLmpzIl1dLApmdW5jdGlvbihtLHgsdyx1KXtmdW5jdGlvbiBBKGUsZCxhLGwsZixnKXtlPShnLWQpKihhLWUpLShsLWQpKihmLWUpO3JldHVybiAwPGU/ITA6ISgwPmUpfWZ1bmN0aW9uIEIoZSxkLGEsbCxmLGcsYixrKXtyZXR1cm4gQShlLGQsZixnLGIsaykhPT1BKGEsbCxmLGcsYixrKSYmQShlLGQsYSxsLGYsZykhPT1BKGUsZCxhLGwsYixrKX1mdW5jdGlvbiBFKGUsZCxhLGwsZixnLGIsayl7cmV0dXJuIEIoZSxkLGUrYSxkLGYsZyxiLGspfHxCKGUrYSxkLGUrYSxkK2wsZixnLGIsayl8fEIoZSxkK2wsZSthLGQrbCxmLGcsYixrKXx8QihlLGQsZSxkK2wsZixnLGIsayl9ZnVuY3Rpb24gRihlKXtpZih0aGlzLnJlbmRlcmVyKXt2YXIgZD10aGlzLGE9QyhkLnJlbmRlcmVyLmdsb2JhbEFuaW1hdGlvbikuZHVyYXRpb247ZC5sYWJlbFNlcmllcz1bXTtkLmxhYmVsU2VyaWVzTWF4U3VtPTA7dS5jbGVhclRpbWVvdXQoZC5zZXJpZXNMYWJlbFRpbWVyKTtkLnNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGwpe3ZhciBmPQpsLm9wdGlvbnMubGFiZWwsZz1sLmxhYmVsQnlTZXJpZXMsYj1nJiZnLmNsb3Nlc3Q7Zi5lbmFibGVkJiZsLnZpc2libGUmJihsLmdyYXBofHxsLmFyZWEpJiYhbC5pc1Nlcmllc0Jvb3N0aW5nJiYoZC5sYWJlbFNlcmllcy5wdXNoKGwpLGYubWluRm9udFNpemUmJmYubWF4Rm9udFNpemUmJihsLnN1bT1sLnlEYXRhLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybihhfHwwKSsoYnx8MCl9LDApLGQubGFiZWxTZXJpZXNNYXhTdW09TWF0aC5tYXgoZC5sYWJlbFNlcmllc01heFN1bSxsLnN1bSkpLCJsb2FkIj09PWUudHlwZSYmKGE9TWF0aC5tYXgoYSxDKGwub3B0aW9ucy5hbmltYXRpb24pLmR1cmF0aW9uKSksYiYmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGJbMF0ucGxvdFg/Zy5hbmltYXRlKHt4OmJbMF0ucGxvdFgrYlsxXSx5OmJbMF0ucGxvdFkrYlsyXX0pOmcuYXR0cih7b3BhY2l0eTowfSkpKX0pO2Quc2VyaWVzTGFiZWxUaW1lcj1JKGZ1bmN0aW9uKCl7ZC5zZXJpZXMmJmQubGFiZWxTZXJpZXMmJgpkLmRyYXdTZXJpZXNMYWJlbHMoKX0sZC5yZW5kZXJlci5mb3JFeHBvcnR8fCFhPzA6YSl9fXZhciBHPXUuYWRkRXZlbnQsQz11LmFuaW1PYmplY3QsSD11LmV4dGVuZCxKPXUuZmlyZUV2ZW50LEs9dS5mb3JtYXQsRD11LmlzTnVtYmVyLHo9dS5waWNrLEw9dS5zZXRPcHRpb25zLEk9dS5zeW5jVGltZW91dDsiIjt4PXguU2VyaWVzO0woe3Bsb3RPcHRpb25zOntzZXJpZXM6e2xhYmVsOntlbmFibGVkOiEwLGNvbm5lY3RvckFsbG93ZWQ6ITEsY29ubmVjdG9yTmVpZ2hib3VyRGlzdGFuY2U6MjQsZm9ybWF0OnZvaWQgMCxmb3JtYXR0ZXI6dm9pZCAwLG1pbkZvbnRTaXplOm51bGwsbWF4Rm9udFNpemU6bnVsbCxvbkFyZWE6bnVsbCxzdHlsZTp7Zm9udFdlaWdodDoiYm9sZCJ9LGJveGVzVG9Bdm9pZDpbXX19fX0pO3cucHJvdG90eXBlLnN5bWJvbHMuY29ubmVjdG9yPWZ1bmN0aW9uKGUsZCxhLGwsZil7dmFyIGc9ZiYmZi5hbmNob3JYO2Y9ZiYmZi5hbmNob3JZO3ZhciBiPWEvMjtpZihEKGcpJiYKRChmKSl7dmFyIGs9W1siTSIsZyxmXV07dmFyIGg9ZC1mOzA+aCYmKGg9LWwtaCk7aDxhJiYoYj1nPGUrYS8yP2g6YS1oKTtmPmQrbD9rLnB1c2goWyJMIixlK2IsZCtsXSk6ZjxkP2sucHVzaChbIkwiLGUrYixkXSk6ZzxlP2sucHVzaChbIkwiLGUsZCtsLzJdKTpnPmUrYSYmay5wdXNoKFsiTCIsZSthLGQrbC8yXSl9cmV0dXJuIGt8fFtdfTt4LnByb3RvdHlwZS5nZXRQb2ludHNPbkdyYXBoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShiKXt2YXIgYz1NYXRoLnJvdW5kKGIucGxvdFgvOCkrIiwiK01hdGgucm91bmQoYi5wbG90WS84KTtuW2NdfHwobltjXT0xLGEucHVzaChiKSl9aWYodGhpcy54QXhpc3x8dGhpcy55QXhpcyl7dmFyIGQ9dGhpcy5wb2ludHMsYT1bXSxsO3ZhciBmPXRoaXMuZ3JhcGh8fHRoaXMuYXJlYTt2YXIgZz1mLmVsZW1lbnQ7dmFyIGI9dGhpcy5jaGFydC5pbnZlcnRlZCxrPXRoaXMueEF4aXM7dmFyIGg9dGhpcy55QXhpczt2YXIgbT1iP2gucG9zOmsucG9zO2I9CmI/ay5wb3M6aC5wb3M7az16KHRoaXMub3B0aW9ucy5sYWJlbC5vbkFyZWEsISF0aGlzLmFyZWEpO3ZhciB5PWguZ2V0VGhyZXNob2xkKHRoaXMub3B0aW9ucy50aHJlc2hvbGQpLG49e307aWYodGhpcy5nZXRQb2ludFNwbGluZSYmZy5nZXRQb2ludEF0TGVuZ3RoJiYhayYmZC5sZW5ndGg8dGhpcy5jaGFydC5wbG90U2l6ZVgvMTYpe2lmKGYudG9EKXt2YXIgYz1mLmF0dHIoImQiKTtmLmF0dHIoe2Q6Zi50b0R9KX12YXIgdj1nLmdldFRvdGFsTGVuZ3RoKCk7Zm9yKGw9MDtsPHY7bCs9MTYpaD1nLmdldFBvaW50QXRMZW5ndGgobCksZSh7Y2hhcnRYOm0raC54LGNoYXJ0WTpiK2gueSxwbG90WDpoLngscGxvdFk6aC55fSk7YyYmZi5hdHRyKHtkOmN9KTtoPWRbZC5sZW5ndGgtMV07aC5jaGFydFg9bStoLnBsb3RYO2guY2hhcnRZPWIraC5wbG90WTtlKGgpfWVsc2UgZm9yKHY9ZC5sZW5ndGgsbD0wO2w8djtsKz0xKXtoPWRbbF07Yz1kW2wtMV07aC5jaGFydFg9bStoLnBsb3RYO2guY2hhcnRZPQpiK2gucGxvdFk7ayYmKGguY2hhcnRDZW50ZXJZPWIrKGgucGxvdFkreihoLnlCb3R0b20seSkpLzIpO2lmKDA8bCYmKGY9TWF0aC5hYnMoaC5jaGFydFgtYy5jaGFydFgpLGc9TWF0aC5hYnMoaC5jaGFydFktYy5jaGFydFkpLGY9TWF0aC5tYXgoZixnKSwxNjxmKSlmb3IoZj1NYXRoLmNlaWwoZi8xNiksZz0xO2c8ZjtnKz0xKWUoe2NoYXJ0WDpjLmNoYXJ0WCtnL2YqKGguY2hhcnRYLWMuY2hhcnRYKSxjaGFydFk6Yy5jaGFydFkrZy9mKihoLmNoYXJ0WS1jLmNoYXJ0WSksY2hhcnRDZW50ZXJZOmMuY2hhcnRDZW50ZXJZK2cvZiooaC5jaGFydENlbnRlclktYy5jaGFydENlbnRlclkpLHBsb3RYOmMucGxvdFgrZy9mKihoLnBsb3RYLWMucGxvdFgpLHBsb3RZOmMucGxvdFkrZy9mKihoLnBsb3RZLWMucGxvdFkpfSk7RChoLnBsb3RZKSYmZShoKX1yZXR1cm4gYX19O3gucHJvdG90eXBlLmxhYmVsRm9udFNpemU9ZnVuY3Rpb24oZSxkKXtyZXR1cm4gZSt0aGlzLnN1bS90aGlzLmNoYXJ0LmxhYmVsU2VyaWVzTWF4U3VtKgooZC1lKSsicHgifTt4LnByb3RvdHlwZS5jaGVja0NsZWFyUG9pbnQ9ZnVuY3Rpb24oZSxkLGEsbCl7dmFyIGY9TnVtYmVyLk1BWF9WQUxVRSxnPU51bWJlci5NQVhfVkFMVUUsYixrPXoodGhpcy5vcHRpb25zLmxhYmVsLm9uQXJlYSwhIXRoaXMuYXJlYSksaD1rfHx0aGlzLm9wdGlvbnMubGFiZWwuY29ubmVjdG9yQWxsb3dlZCxtPXRoaXMuY2hhcnQseTtmb3IoeT0wO3k8bS5ib3hlc1RvQXZvaWQubGVuZ3RoO3krPTEpe3ZhciBuPW0uYm94ZXNUb0F2b2lkW3ldO3ZhciBjPWUrYS53aWR0aDt2YXIgdj1kO3ZhciBxPWQrYS5oZWlnaHQ7aWYoIShlPm4ucmlnaHR8fGM8bi5sZWZ0fHx2Pm4uYm90dG9tfHxxPG4udG9wKSlyZXR1cm4hMX1mb3IoeT0wO3k8bS5zZXJpZXMubGVuZ3RoO3krPTEpaWYodj1tLnNlcmllc1t5XSxuPXYuaW50ZXJwb2xhdGVkUG9pbnRzLHYudmlzaWJsZSYmbil7Zm9yKGM9MTtjPG4ubGVuZ3RoO2MrPTEpe2lmKG5bY10uY2hhcnRYPj1lLTE2JiZuW2MtMV0uY2hhcnRYPD0KZSthLndpZHRoKzE2KXtpZihFKGUsZCxhLndpZHRoLGEuaGVpZ2h0LG5bYy0xXS5jaGFydFgsbltjLTFdLmNoYXJ0WSxuW2NdLmNoYXJ0WCxuW2NdLmNoYXJ0WSkpcmV0dXJuITE7dGhpcz09PXYmJiFiJiZsJiYoYj1FKGUtMTYsZC0xNixhLndpZHRoKzMyLGEuaGVpZ2h0KzMyLG5bYy0xXS5jaGFydFgsbltjLTFdLmNoYXJ0WSxuW2NdLmNoYXJ0WCxuW2NdLmNoYXJ0WSkpfWlmKChofHxiKSYmKHRoaXMhPT12fHxrKSl7cT1lK2Eud2lkdGgvMi1uW2NdLmNoYXJ0WDt2YXIgdT1kK2EuaGVpZ2h0LzItbltjXS5jaGFydFk7Zj1NYXRoLm1pbihmLHEqcSt1KnUpfX1pZighayYmaCYmdGhpcz09PXYmJihsJiYhYnx8ZjxNYXRoLnBvdyh0aGlzLm9wdGlvbnMubGFiZWwuY29ubmVjdG9yTmVpZ2hib3VyRGlzdGFuY2UsMikpKXtmb3IoYz0xO2M8bi5sZW5ndGg7Yys9MSlpZihiPU1hdGgubWluKE1hdGgucG93KGUrYS53aWR0aC8yLW5bY10uY2hhcnRYLDIpK01hdGgucG93KGQrYS5oZWlnaHQvCjItbltjXS5jaGFydFksMiksTWF0aC5wb3coZS1uW2NdLmNoYXJ0WCwyKStNYXRoLnBvdyhkLW5bY10uY2hhcnRZLDIpLE1hdGgucG93KGUrYS53aWR0aC1uW2NdLmNoYXJ0WCwyKStNYXRoLnBvdyhkLW5bY10uY2hhcnRZLDIpLE1hdGgucG93KGUrYS53aWR0aC1uW2NdLmNoYXJ0WCwyKStNYXRoLnBvdyhkK2EuaGVpZ2h0LW5bY10uY2hhcnRZLDIpLE1hdGgucG93KGUtbltjXS5jaGFydFgsMikrTWF0aC5wb3coZCthLmhlaWdodC1uW2NdLmNoYXJ0WSwyKSksYjxnKXtnPWI7dmFyIHA9bltjXX1iPSEwfX1yZXR1cm4hbHx8Yj97eDplLHk6ZCx3ZWlnaHQ6Zi0ocD9nOjApLGNvbm5lY3RvclBvaW50OnB9OiExfTttLnByb3RvdHlwZS5kcmF3U2VyaWVzTGFiZWxzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxkPXRoaXMubGFiZWxTZXJpZXM7ZS5ib3hlc1RvQXZvaWQ9W107ZC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EuaW50ZXJwb2xhdGVkUG9pbnRzPWEuZ2V0UG9pbnRzT25HcmFwaCgpOyhhLm9wdGlvbnMubGFiZWwuYm94ZXNUb0F2b2lkfHwKW10pLmZvckVhY2goZnVuY3Rpb24oYSl7ZS5ib3hlc1RvQXZvaWQucHVzaChhKX0pfSk7ZS5zZXJpZXMuZm9yRWFjaChmdW5jdGlvbihhKXtmdW5jdGlvbiBkKGEsYixjKXt2YXIgZD1NYXRoLm1heChoLHooeCwtSW5maW5pdHkpKSxlPU1hdGgubWluKGgrdSx6KEEsSW5maW5pdHkpKTtyZXR1cm4gYT5kJiZhPD1lLWMud2lkdGgmJmI+PW0mJmI8PW0rbi1jLmhlaWdodH12YXIgZj1hLm9wdGlvbnMubGFiZWw7aWYoZiYmKGEueEF4aXN8fGEueUF4aXMpKXt2YXIgZz1bXSxiLGssaD0oaz1lLmludmVydGVkKT9hLnlBeGlzLnBvczphLnhBeGlzLnBvcyxtPWs/YS54QXhpcy5wb3M6YS55QXhpcy5wb3MsdT1lLmludmVydGVkP2EueUF4aXMubGVuOmEueEF4aXMubGVuLG49ZS5pbnZlcnRlZD9hLnhBeGlzLmxlbjphLnlBeGlzLmxlbixjPWEuaW50ZXJwb2xhdGVkUG9pbnRzLHY9eihmLm9uQXJlYSwhIWEuYXJlYSkscT1hLmxhYmVsQnlTZXJpZXMsdz0hcTt2YXIgcD1mLm1pbkZvbnRTaXplOwp2YXIgcj1mLm1heEZvbnRTaXplO3ZhciB0PSJoaWdoY2hhcnRzLWNvbG9yLSIreihhLmNvbG9ySW5kZXgsIm5vbmUiKTtpZih2JiYhayl7az1bYS54QXhpcy50b1BpeGVscyhhLnhEYXRhWzBdKSxhLnhBeGlzLnRvUGl4ZWxzKGEueERhdGFbYS54RGF0YS5sZW5ndGgtMV0pXTt2YXIgeD1NYXRoLm1pbi5hcHBseShNYXRoLGspO3ZhciBBPU1hdGgubWF4LmFwcGx5KE1hdGgsayl9aWYoYS52aXNpYmxlJiYhYS5pc1Nlcmllc0Jvb3N0aW5nJiZjKXtxfHwocT1hLm5hbWUsInN0cmluZyI9PT10eXBlb2YgZi5mb3JtYXQ/cT1LKGYuZm9ybWF0LGEsZSk6Zi5mb3JtYXR0ZXImJihxPWYuZm9ybWF0dGVyLmNhbGwoYSkpLGEubGFiZWxCeVNlcmllcz1xPWUucmVuZGVyZXIubGFiZWwocSwwLC05OTk5LCJjb25uZWN0b3IiKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1zZXJpZXMtbGFiZWwgaGlnaGNoYXJ0cy1zZXJpZXMtbGFiZWwtIithLmluZGV4KyIgIisoYS5vcHRpb25zLmNsYXNzTmFtZXx8IiIpKwoiICIrdCksZS5yZW5kZXJlci5zdHlsZWRNb2RlfHwocS5jc3MoSCh7Y29sb3I6dj9lLnJlbmRlcmVyLmdldENvbnRyYXN0KGEuY29sb3IpOmEuY29sb3J9LGYuc3R5bGV8fHt9KSkscS5hdHRyKHtvcGFjaXR5OmUucmVuZGVyZXIuZm9yRXhwb3J0PzE6MCxzdHJva2U6YS5jb2xvciwic3Ryb2tlLXdpZHRoIjoxfSkpLHAmJnImJnEuY3NzKHtmb250U2l6ZTphLmxhYmVsRm9udFNpemUocCxyKX0pLHEuYXR0cih7cGFkZGluZzowLHpJbmRleDozfSkuYWRkKCkpO3A9cS5nZXRCQm94KCk7cC53aWR0aD1NYXRoLnJvdW5kKHAud2lkdGgpO2ZvcihrPWMubGVuZ3RoLTE7MDxrOy0tayl2PyhyPWNba10uY2hhcnRYLXAud2lkdGgvMix0PWNba10uY2hhcnRDZW50ZXJZLXAuaGVpZ2h0LzIsZChyLHQscCkmJihiPWEuY2hlY2tDbGVhclBvaW50KHIsdCxwKSkpOihyPWNba10uY2hhcnRYKzMsdD1jW2tdLmNoYXJ0WS1wLmhlaWdodC0zLGQocix0LHApJiYoYj1hLmNoZWNrQ2xlYXJQb2ludChyLHQsCnAsITApKSxiJiZnLnB1c2goYikscj1jW2tdLmNoYXJ0WCszLHQ9Y1trXS5jaGFydFkrMyxkKHIsdCxwKSYmKGI9YS5jaGVja0NsZWFyUG9pbnQocix0LHAsITApKSxiJiZnLnB1c2goYikscj1jW2tdLmNoYXJ0WC1wLndpZHRoLTMsdD1jW2tdLmNoYXJ0WSszLGQocix0LHApJiYoYj1hLmNoZWNrQ2xlYXJQb2ludChyLHQscCwhMCkpLGImJmcucHVzaChiKSxyPWNba10uY2hhcnRYLXAud2lkdGgtMyx0PWNba10uY2hhcnRZLXAuaGVpZ2h0LTMsZChyLHQscCkmJihiPWEuY2hlY2tDbGVhclBvaW50KHIsdCxwLCEwKSkpLGImJmcucHVzaChiKTtpZihmLmNvbm5lY3RvckFsbG93ZWQmJiFnLmxlbmd0aCYmIXYpZm9yKHI9aCt1LXAud2lkdGg7cj49aDtyLT0xNilmb3IodD1tO3Q8bStuLXAuaGVpZ2h0O3QrPTE2KShiPWEuY2hlY2tDbGVhclBvaW50KHIsdCxwLCEwKSkmJmcucHVzaChiKTtpZihnLmxlbmd0aCl7aWYoZy5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIud2VpZ2h0LWEud2VpZ2h0fSksCmI9Z1swXSxlLmJveGVzVG9Bdm9pZC5wdXNoKHtsZWZ0OmIueCxyaWdodDpiLngrcC53aWR0aCx0b3A6Yi55LGJvdHRvbTpiLnkrcC5oZWlnaHR9KSwoYz1NYXRoLnNxcnQoTWF0aC5wb3coTWF0aC5hYnMoYi54LShxLnh8fDApKSwyKStNYXRoLnBvdyhNYXRoLmFicyhiLnktKHEueXx8MCkpLDIpKSkmJmEubGFiZWxCeVNlcmllcyYmKGc9e29wYWNpdHk6ZS5yZW5kZXJlci5mb3JFeHBvcnQ/MTowLHg6Yi54LHk6Yi55fSxmPXtvcGFjaXR5OjF9LDEwPj1jJiYoZj17eDpnLngseTpnLnl9LGc9e30pLGM9dm9pZCAwLHcmJihjPUMoYS5vcHRpb25zLmFuaW1hdGlvbiksYy5kdXJhdGlvbio9LjIpLGEubGFiZWxCeVNlcmllcy5hdHRyKEgoZyx7YW5jaG9yWDpiLmNvbm5lY3RvclBvaW50JiZiLmNvbm5lY3RvclBvaW50LnBsb3RYK2gsYW5jaG9yWTpiLmNvbm5lY3RvclBvaW50JiZiLmNvbm5lY3RvclBvaW50LnBsb3RZK219KSkuYW5pbWF0ZShmLGMpLGEub3B0aW9ucy5rZE5vdz0hMCxhLmJ1aWxkS0RUcmVlKCksCmE9YS5zZWFyY2hQb2ludCh7Y2hhcnRYOmIueCxjaGFydFk6Yi55fSwhMCkpKXEuY2xvc2VzdD1bYSxiLngtKGEucGxvdFh8fDApLGIueS0oYS5wbG90WXx8MCldfWVsc2UgcSYmKGEubGFiZWxCeVNlcmllcz1xLmRlc3Ryb3koKSl9ZWxzZSBxJiYoYS5sYWJlbEJ5U2VyaWVzPXEuZGVzdHJveSgpKX19KTtKKGUsImFmdGVyRHJhd1Nlcmllc0xhYmVscyIpfTtHKG0sImxvYWQiLEYpO0cobSwicmVkcmF3IixGKX0pO3cobSwibWFzdGVycy9tb2R1bGVzL3Nlcmllcy1sYWJlbC5zcmMuanMiLFtdLGZ1bmN0aW9uKCl7fSl9KTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2VyaWVzLWxhYmVsLmpzLm1hcA=="></script>
|
|
<script src="data:application/javascript;base64,LyoqDQogKiBAbGljZW5zZSBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS80LjAvIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCAoQ0MgQlktU0EgNC4wKQ0KICogQGF1dGhvciAgTGFycyBDYWJyZXJhDQogKiBAdmVyc2lvbiAxLjAuOQ0KICovDQoNCi8vIEpTTGludCBvcHRpb25zOg0KLypnbG9iYWwgSGlnaGNoYXJ0cywgd2luZG93Ki8NCg0KKGZ1bmN0aW9uIChIKSB7DQogICAgLy8gQ2hlY2sgaWYgb2JqZWN0IGlzIGFycmF5DQogICAgZnVuY3Rpb24gaXNBcnJheShvYmopIHsNCiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBBcnJheV0nOw0KICAgIH0NCg0KDQogICAgLy8gU2V0cyB1cCBtb3Rpb24gcmVhZHkgdG8gdXNlDQogICAgZnVuY3Rpb24gTW90aW9uKGNoYXJ0KSB7DQogICAgICAgIHZhciBtb3Rpb24gPSB0aGlzOw0KDQogICAgICAgIHRoaXMuY2hhcnQgPSBjaGFydDsNCiAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlOw0KICAgICAgICB0aGlzLm9wdGlvbnMgPSBILm1lcmdlKHRoaXMuZGVmYXVsdE9wdGlvbnMsIHRoaXMuY2hhcnQub3B0aW9ucy5tb3Rpb24pOw0KICAgICAgICB0aGlzLmRhdGFTZXJpZXMgPSBbXTsNCiAgICAgICAgdGhpcy5kYXRhTGVuZ3RoID0gMDsNCiAgICAgICAgbW90aW9uLm9wdGlvbnMuc2VyaWVzID0gSC5zcGxhdChtb3Rpb24ub3B0aW9ucy5zZXJpZXMpOw0KICAgICAgICBIaWdoY2hhcnRzLmVhY2godGhpcy5jaGFydC5zZXJpZXMsIGZ1bmN0aW9uIChzZXJpZXMsIGluZGV4KSB7DQogICAgICAgICAgICBpZiAobW90aW9uLm9wdGlvbnMuc2VyaWVzLmluZGV4T2YoaW5kZXgpID49IDApIHsNCiAgICAgICAgICAgICAgICBtb3Rpb24uZGF0YVNlcmllc1tpbmRleF0gPSBzZXJpZXM7DQogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpZXMuZGF0YS5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICBpZiAoc2VyaWVzLmRhdGFbaV0uc2VxdWVuY2UpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIG1vdGlvbi5kYXRhTGVuZ3RoID0gTWF0aC5tYXgobW90aW9uLmRhdGFMZW5ndGgsIHNlcmllcy5kYXRhW2ldLnNlcXVlbmNlLmxlbmd0aCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0pOw0KDQogICAgICAgIC8vIFBsYXktY29udHJvbHMgSFRNTC1kaXYNCiAgICAgICAgdGhpcy5wbGF5Q29udHJvbHMgPSBILmNyZWF0ZUVsZW1lbnQoJ2RpdicsIHsNCiAgICAgICAgICAgIGlkOiAncGxheS1jb250cm9scycNCiAgICAgICAgfSwgbnVsbCwgdGhpcy5jaGFydC5yZW5kZXJUbywgbnVsbCk7DQoNCiAgICAgICAgLy8gUGxheS9wYXVzZSBIVE1MLWJ1dHRvbg0KICAgICAgICB0aGlzLnBsYXlQYXVzZUJ0biA9IEguY3JlYXRlRWxlbWVudCgnYnV0dG9uJywgew0KICAgICAgICAgICAgaWQ6ICdwbGF5LXBhdXNlLWJ1dHRvbicsDQogICAgICAgICAgICB0aXRsZTogJ3BsYXknDQogICAgICAgIH0sIG51bGwsIHRoaXMucGxheUNvbnRyb2xzLCBudWxsKTsNCiAgICAgICAgdGhpcy5wbGF5UGF1c2VCdG4uY2xhc3NOYW1lID0gdGhpcy5vcHRpb25zLnBsYXlJY29uOw0KDQogICAgICAgIC8vIFBsYXktcmFuZ2UgSFRNTC1pbnB1dA0KICAgICAgICB0aGlzLnBsYXlSYW5nZSA9IEguY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7DQogICAgICAgICAgICBpZDogJ3BsYXktcmFuZ2UnLA0KICAgICAgICAgICAgdHlwZTogJ3JhbmdlJywNCiAgICAgICAgICAgIG1pbjogMCwNCiAgICAgICAgICAgIG1heDogdGhpcy5kYXRhTGVuZ3RoIC0gMSwNCiAgICAgICAgICAgIHN0ZXA6IHRoaXMub3B0aW9ucy5tYWduZXQuc3RlcA0KICAgICAgICB9LCBudWxsLCB0aGlzLnBsYXlDb250cm9scywgbnVsbCk7DQogICAgICAgIC8vIEltcG9ydGFudDogbWF4IG11c3QgYmUgc2V0IGJlZm9yZSB2YWx1ZSBpbiBvcmRlciB0byBhbGxvdyBmb3INCiAgICAgICAgLy8gaGlnaGVyIG51bWJlcnMgdGhhbiAxMDAuDQogICAgICAgIHRoaXMucGxheVJhbmdlLnZhbHVlID0gSC5waWNrKHRoaXMub3B0aW9ucy5zdGFydEluZGV4LCB0aGlzLmRhdGFMZW5ndGggLSAxKTsNCg0KICAgICAgICAvLyBQbGF5LXJhbmdlIEhUTUwtb3V0cHV0DQogICAgICAgIHRoaXMucGxheU91dHB1dCA9IEguY3JlYXRlRWxlbWVudCgnbGFiZWwnLCB7DQogICAgICAgICAgICBpZDogJ3BsYXktb3V0cHV0JywNCiAgICAgICAgICAgIG5hbWU6IHRoaXMub3B0aW9ucy5heGlzTGFiZWwNCiAgICAgICAgfSwgbnVsbCwgdGhpcy5wbGF5Q29udHJvbHMsIG51bGwpOw0KICAgICAgICBpZiAoaXNBcnJheSh0aGlzLm9wdGlvbnMubGFiZWxzKSkgew0KICAgICAgICAgICAgdGhpcy5wbGF5T3V0cHV0LmlubmVySFRNTCA9IHRoaXMub3B0aW9ucy5sYWJlbHNbdGhpcy5kYXRhTGVuZ3RoIC0gMV0gfHwgJyc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLnBsYXlPdXRwdXQuaW5uZXJIVE1MID0gdGhpcy5kYXRhTGVuZ3RoIC0gMTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENvbW1vbiBrZXkgZXZlbnQgaGFuZGxlciBmdW5jdGlvbg0KICAgICAgICBmdW5jdGlvbiBoYW5kbGVLZXlFdmVudHMoZSkgew0KICAgICAgICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50Ow0KICAgICAgICAgICAgc3dpdGNoIChlLndoaWNoKSB7DQogICAgICAgICAgICBjYXNlIDMyOiAvLyBTcGFjZQ0KICAgICAgICAgICAgICAgIG1vdGlvbi50b2dnbGVQbGF5UGF1c2UoKTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgMzc6IC8vIExlZnQNCiAgICAgICAgICAgICAgICBtb3Rpb24ucGxheVJhbmdlLnZhbHVlID0gbW90aW9uLnJvdW5kKHBhcnNlRmxvYXQobW90aW9uLnBsYXlSYW5nZS52YWx1ZSkgLSAxKTsNCiAgICAgICAgICAgICAgICBtb3Rpb24udXBkYXRlQ2hhcnQobW90aW9uLnBsYXlSYW5nZS52YWx1ZSk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlIDM5OiAvLyBSaWdodA0KICAgICAgICAgICAgICAgIG1vdGlvbi5wbGF5UmFuZ2UudmFsdWUgPSBtb3Rpb24ucm91bmQocGFyc2VGbG9hdChtb3Rpb24ucGxheVJhbmdlLnZhbHVlKSArIDEpOw0KICAgICAgICAgICAgICAgIG1vdGlvbi51cGRhdGVDaGFydChtb3Rpb24ucGxheVJhbmdlLnZhbHVlKTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGRlZmF1bHQ6DQogICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQmluZCBjb250cm9scyB0byBldmVudHMNCiAgICAgICAgSGlnaGNoYXJ0cy5hZGRFdmVudCh0aGlzLnBsYXlQYXVzZUJ0biwgJ2NsaWNrJywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgbW90aW9uLnRvZ2dsZVBsYXlQYXVzZSgpOw0KICAgICAgICB9KTsNCiAgICAgICAgSGlnaGNoYXJ0cy5hZGRFdmVudCh0aGlzLnBsYXlSYW5nZSwgJ21vdXNldXAnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBtb3Rpb24uYXR0cmFjdFRvU3RlcCgpOw0KICAgICAgICB9KTsNCiAgICAgICAgSGlnaGNoYXJ0cy5hZGRFdmVudCh0aGlzLnBsYXlSYW5nZSwgJ2lucHV0JywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgbW90aW9uLnVwZGF0ZUNoYXJ0KHRoaXMudmFsdWUpOw0KICAgICAgICB9KTsNCg0KICAgICAgICAvLyBSZXF1ZXN0IGZvY3VzIHRvIHRoZSBjb250cm9scyB3aGVuIGNsaWNraW5nIG9uIGNvbnRyb2xzIGRpdg0KICAgICAgICBIaWdoY2hhcnRzLmFkZEV2ZW50KHRoaXMucGxheUNvbnRyb2xzLCAnY2xpY2snLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICBtb3Rpb24ucGxheVJhbmdlLmZvY3VzKCk7DQogICAgICAgIH0pOw0KICAgICAgICAvLyBCaW5kIGtleXMgdG8gZXZlbnRzDQogICAgICAgIEhpZ2hjaGFydHMuYWRkRXZlbnQodGhpcy5wbGF5UGF1c2VCdG4sICdrZXlkb3duJywgaGFuZGxlS2V5RXZlbnRzKTsNCiAgICAgICAgSGlnaGNoYXJ0cy5hZGRFdmVudCh0aGlzLnBsYXlSYW5nZSwgJ2tleWRvd24nLCBoYW5kbGVLZXlFdmVudHMpOw0KDQogICAgICAgIC8vIEluaXRpYWwgdmFsdWUNCiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gcGFyc2VGbG9hdCh0aGlzLnBsYXlSYW5nZS52YWx1ZSk7DQoNCiAgICAgICAgLy8gSW5pdGlhbCB1cGRhdGUNCiAgICAgICAgdGhpcy51cGRhdGVDaGFydCh0aGlzLmlucHV0VmFsdWUpOw0KDQogICAgICAgIC8vIEF1dG8tcGxheQ0KICAgICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9QbGF5KSB7DQogICAgICAgICAgICB0aGlzLnBsYXkoKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIERlZmF1bHQgb3B0aW9ucyBmb3IgTW90aW9uDQogICAgTW90aW9uLnByb3RvdHlwZS5kZWZhdWx0T3B0aW9ucyA9IHsNCiAgICAgICAgZW5hYmxlZDogdHJ1ZSwNCiAgICAgICAgYXhpc0xhYmVsOiAneWVhcicsDQogICAgICAgIGF1dG9QbGF5IDogZmFsc2UsDQogICAgICAgIGxvb3A6IGZhbHNlLA0KICAgICAgICBzZXJpZXM6IDAsDQogICAgICAgIHVwZGF0ZUludGVydmFsOiAxMCwNCiAgICAgICAgbWFnbmV0OiB7DQogICAgICAgICAgICByb3VuZDogJ3JvdW5kJywNCiAgICAgICAgICAgIHN0ZXA6IDAuMDENCiAgICAgICAgfSwNCiAgICAgICAgcGxheUljb246ICJmYSBmYS1wbGF5IiwNCiAgICAgICAgcGF1c2VJY29uOiAiZmEgZmEtcGF1c2UiDQogICAgfTsNCg0KICAgIC8vIFRvZ2dsZXMgYmV0d2VlbiBQbGF5IGFuZCBQYXVzZSBzdGF0ZXMsIGFuZCBtYWtlcyBjYWxscyB0byBjaGFuZ2VCdXR0b25UeXBlKCkNCiAgICAvLyBGcm9tIGh0dHA6Ly93d3cuY3JlYXRpdmVibG9xLmNvbS9odG1sNS9idWlsZC1jdXN0b20taHRtbDUtdmlkZW8tcGxheWVyLTkxMzQ0NzMNCiAgICBNb3Rpb24ucHJvdG90eXBlLnRvZ2dsZVBsYXlQYXVzZSA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgdGhpc1t0aGlzLnBhdXNlZCA/ICdwbGF5JyA6ICdwYXVzZSddKCk7DQogICAgfTsNCg0KICAgIC8vIFBsYXlzIHRoZSBtb3Rpb24sIGNvbnRpbnVvdXNseSB1cGRhdGluZyB0aGUgY2hhcnQNCiAgICBNb3Rpb24ucHJvdG90eXBlLnBsYXkgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgIHZhciBtb3Rpb24gPSB0aGlzOw0KICAgICAgICBpZiAodGhpcy5wYXVzZWQgJiYgcGFyc2VGbG9hdCh0aGlzLnBsYXlSYW5nZS52YWx1ZSkgPT09IHBhcnNlRmxvYXQodGhpcy5wbGF5UmFuZ2UubWF4KSkgew0KICAgICAgICAgICAgdGhpcy5yZXNldCgpOw0KICAgICAgICB9DQogICAgICAgIHRoaXMuY2hhbmdlQnV0dG9uVHlwZSgncGF1c2UnKTsNCiAgICAgICAgdGhpcy5wYXVzZWQgPSBmYWxzZTsNCiAgICAgICAgdGhpcy50aW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgIG1vdGlvbi5wbGF5VXBkYXRlKCk7DQogICAgICAgIH0sIHRoaXMub3B0aW9ucy51cGRhdGVJbnRlcnZhbCk7DQogICAgfTsNCg0KICAgIC8vIFBhdXNlcyB0aGUgbW90aW9uLCB3aGljaCBzdG9wcyB1cGRhdGluZyB0aGUgY2hhcnQNCiAgICBNb3Rpb24ucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkgew0KICAgICAgICB0aGlzLmNoYW5nZUJ1dHRvblR5cGUoJ3BsYXknKTsNCiAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlOw0KICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVyKTsNCiAgICAgICAgdGhpcy5hdHRyYWN0VG9TdGVwKCk7DQogICAgfTsNCg0KICAgIC8vIFJlc2V0cyB0aGUgbW90aW9uIGFuZCB1cGRhdGVzIHRoZSBjaGFydC4gRG9lcyBub3QgcGF1c2UNCiAgICBNb3Rpb24ucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gKCkgew0KICAgICAgICB0aGlzLnBsYXlSYW5nZS52YWx1ZSA9IHRoaXMucGxheVJhbmdlLm1pbjsNCiAgICAgICAgdGhpcy51cGRhdGVDaGFydCh0aGlzLnBsYXlSYW5nZS52YWx1ZSk7DQogICAgfTsNCg0KICAgIC8vIFVwZGF0ZXMgYSBidXR0b24ncyB0aXRsZSwgaW5uZXJIVE1MIGFuZCBDU1MgY2xhc3MgdG8gYSBjZXJ0YWluIHZhbHVlDQogICAgTW90aW9uLnByb3RvdHlwZS5jaGFuZ2VCdXR0b25UeXBlID0gZnVuY3Rpb24gKHZhbHVlKSB7DQogICAgICAgIHRoaXMucGxheVBhdXNlQnRuLnRpdGxlID0gdmFsdWU7DQogICAgICAgIHRoaXMucGxheVBhdXNlQnRuLmNsYXNzTmFtZSA9IHZhbHVlICsgIiAiOw0KICAgICAgICBpZiAodmFsdWUgPT0gJ3BsYXknKSB7DQogICAgICAgICAgICB0aGlzLnBsYXlQYXVzZUJ0bi5jbGFzc05hbWUgKz0gdGhpcy5vcHRpb25zLnBsYXlJY29uOw0KICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09ICdwYXVzZScpIHsNCiAgICAgICAgICAgIHRoaXMucGxheVBhdXNlQnRuLmNsYXNzTmFtZSArPSB0aGlzLm9wdGlvbnMucGF1c2VJY29uOzsNCiAgICAgICAgfQ0KICAgIH07DQoNCiAgICAvLyBDYWxsZWQgY29udGludW91c2x5IHdoaWxlIHBsYXlpbmcNCiAgICBNb3Rpb24ucHJvdG90eXBlLnBsYXlVcGRhdGUgPSBmdW5jdGlvbiAoKSB7DQogICAgICAgIGlmICghdGhpcy5wYXVzZWQpIHsNCiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHBhcnNlRmxvYXQodGhpcy5wbGF5UmFuZ2UudmFsdWUpOw0KICAgICAgICAgICAgdGhpcy5wbGF5UmFuZ2UudmFsdWUgPSB0aGlzLmlucHV0VmFsdWUgKyB0aGlzLm9wdGlvbnMubWFnbmV0LnN0ZXA7DQogICAgICAgICAgICB0aGlzLmF0dHJhY3RUb1N0ZXAoKTsNCiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhcnQodGhpcy5wbGF5UmFuZ2UudmFsdWUpOyAvLyBVc2UgcGxheVJhbmdlLnZhbHVlIHRvIGdldCB1cGRhdGVkIHZhbHVlDQogICAgICAgICAgICBpZiAodGhpcy5wbGF5UmFuZ2UudmFsdWUgPj0gcGFyc2VGbG9hdCh0aGlzLnBsYXlSYW5nZS5tYXgpKSB7IC8vIEF1dG8tcGF1c2UNCiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxvb3ApIHsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpOw0KICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgIHRoaXMucGF1c2UoKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9Ow0KDQogICAgLy8gVXBkYXRlcyBjaGFydCBkYXRhIGFuZCByZWRyYXdzIHRoZSBjaGFydA0KICAgIE1vdGlvbi5wcm90b3R5cGUudXBkYXRlQ2hhcnQgPSBmdW5jdGlvbiAoaW5wdXRWYWx1ZSkgew0KICAgICAgICB2YXIgc2VyaWVzS2V5LA0KICAgICAgICAgICAgc2VyaWVzLA0KICAgICAgICAgICAgcG9pbnQsDQogICAgICAgICAgICByb3VuZGVkSW5wdXQgPSB0aGlzLnJvdW5kKGlucHV0VmFsdWUpLA0KICAgICAgICAgICAgaTsNCiAgICAgICAgaWYgKHRoaXMuY3VycmVudEF4aXNWYWx1ZSAhPT0gcm91bmRlZElucHV0KSB7DQogICAgICAgICAgICB0aGlzLmN1cnJlbnRBeGlzVmFsdWUgPSByb3VuZGVkSW5wdXQ7DQogICAgICAgICAgICB0aGlzLmNoYXJ0Lm9wdGlvbnMubW90aW9uLnN0YXJ0SW5kZXggPSByb3VuZGVkSW5wdXQ7DQogICAgICAgICAgICBmb3IgKHNlcmllc0tleSBpbiB0aGlzLmRhdGFTZXJpZXMpIHsNCiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhU2VyaWVzLmhhc093blByb3BlcnR5KHNlcmllc0tleSkpIHsNCiAgICAgICAgICAgICAgICAgICAgc2VyaWVzID0gdGhpcy5kYXRhU2VyaWVzW3Nlcmllc0tleV07DQogICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZXJpZXMuZGF0YS5sZW5ndGg7IGkrKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQgPSBzZXJpZXMuZGF0YVtpXTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50LnNlcXVlbmNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50LnVwZGF0ZShwb2ludC5zZXF1ZW5jZVtyb3VuZGVkSW5wdXRdLCBmYWxzZSwgZmFsc2UpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvcjonLCBlLCAnIFxuYXQgcG9pbnQ6JywgcG9pbnQsICcgXG53aXRoIG5ldyB2YWx1ZTonLCBwb2ludC5zZXF1ZW5jZVtyb3VuZGVkSW5wdXRdKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHRoaXMuY2hhcnQucmVkcmF3KCk7DQogICAgICAgICAgICB0aGlzLmF0dHJhY3RUb1N0ZXAoKTsNCiAgICAgICAgfQ0KICAgIH07DQoNCiAgICAvLyBNb3ZlcyBvdXRwdXQgdmFsdWUgdG8gZGF0YSBwb2ludA0KICAgIE1vdGlvbi5wcm90b3R5cGUuYXR0cmFjdFRvU3RlcCA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgaWYgKGlzQXJyYXkodGhpcy5vcHRpb25zLmxhYmVscykpIHsNCiAgICAgICAgICAgIHRoaXMucGxheU91dHB1dC5pbm5lckhUTUwgPSB0aGlzLm9wdGlvbnMubGFiZWxzW3RoaXMucm91bmQodGhpcy5wbGF5UmFuZ2UudmFsdWUpXSB8fCAnJzsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIHRoaXMucGxheU91dHB1dC5pbm5lckhUTUwgPSB0aGlzLnJvdW5kKHRoaXMucGxheVJhbmdlLnZhbHVlKTsNCiAgICAgICAgfQ0KICAgIH07DQoNCiAgICAvLyBSZXR1cm5zIGFuIGludGVnZXIgcm91bmRlZCB1cCwgZG93biBvciBldmVuIGRlcGVuZGluZyBvbg0KICAgIC8vIG1vdGlvbi5tYWduZXQucm91bmQgb3B0aW9ucy4NCiAgICBNb3Rpb24ucHJvdG90eXBlLnJvdW5kID0gZnVuY3Rpb24gKG51bWJlcikgew0KICAgICAgICByZXR1cm4gTWF0aFt0aGlzLm9wdGlvbnMubWFnbmV0LnJvdW5kXShudW1iZXIpOw0KICAgIH07DQoNCiAgICAvLyBJbml0aWF0ZXMgbW90aW9uIGF1dG9tYXRpY2FsbHkgaWYgbW90aW9uIG9wdGlvbnMgb2JqZWN0IGV4aXN0cyBhbmQNCiAgICAvLyBpcyBub3QgZGlzYWJsZWQNCiAgICBILkNoYXJ0LnByb3RvdHlwZS5jYWxsYmFja3MucHVzaChmdW5jdGlvbiAoY2hhcnQpIHsNCiAgICAgICAgaWYgKGNoYXJ0Lm9wdGlvbnMubW90aW9uICYmIGNoYXJ0Lm9wdGlvbnMubW90aW9uLmVuYWJsZWQpIHsNCiAgICAgICAgICAgIGNoYXJ0Lm1vdGlvbiA9IG5ldyBNb3Rpb24oY2hhcnQpOw0KICAgICAgICB9DQogICAgfSk7DQoNCiAgICBILk1vdGlvbiA9IE1vdGlvbjsNCn0oSGlnaGNoYXJ0cykpOw0K"></script>
|
|
<script src="data:application/javascript;base64,dmFyIEhDRGVmYXVsdHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgSGlnaGNoYXJ0cy5nZXRPcHRpb25zKCksIHt9KTsNCg0KZnVuY3Rpb24gUmVzZXRIaWdoY2hhcnRzT3B0aW9ucygpIHsNCiAgICAvLyBGb3J0dW5hdGVseSwgSGlnaGNoYXJ0cyByZXR1cm5zIHRoZSByZWZlcmVuY2UgdG8gZGVmYXVsdE9wdGlvbnMgaXRzZWxmDQogICAgLy8gV2UgY2FuIG1hbmlwdWxhdGUgdGhpcyBhbmQgZGVsZXRlIGFsbCB0aGUgcHJvcGVydGllcw0KICAgIHZhciBkZWZhdWx0T3B0aW9ucyA9IEhpZ2hjaGFydHMuZ2V0T3B0aW9ucygpOw0KICAgIGZvciAodmFyIHByb3AgaW4gZGVmYXVsdE9wdGlvbnMpIHsNCiAgICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0T3B0aW9uc1twcm9wXSAhPT0gJ2Z1bmN0aW9uJykgZGVsZXRlIGRlZmF1bHRPcHRpb25zW3Byb3BdOw0KICAgIH0NCiAgICAvLyBGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHRzIHRoYXQgd2UgY2FwdHVyZWQgaW5pdGlhbGx5LCB0aGlzIHJlc2V0cyB0aGUgdGhlbWUNCiAgICBIaWdoY2hhcnRzLnNldE9wdGlvbnMoSENEZWZhdWx0cyk7DQp9DQo="></script>
|
|
<script src="data:application/javascript;base64,LyoKIEhpZ2hjaGFydHMgSlMgdjguMS4yICgyMDIwLTA2LTE2KQoKIEJvb3N0IG1vZHVsZQoKIChjKSAyMDEwLTIwMTkgSGlnaHNvZnQgQVMKIEF1dGhvcjogVG9yc3RlaW4gSG9uc2kKCiBMaWNlbnNlOiB3d3cuaGlnaGNoYXJ0cy5jb20vbGljZW5zZQoKIFRoaXMgaXMgYSBIaWdoY2hhcnRzIG1vZHVsZSB0aGF0IGRyYXdzIGxvbmcgZGF0YSBzZXJpZXMgb24gYSBjYW52YXMgaW4gb3JkZXIKIHRvIGluY3JlYXNlIHBlcmZvcm1hbmNlIG9mIHRoZSBpbml0aWFsIGxvYWQgdGltZSBhbmQgdG9vbHRpcCByZXNwb25zaXZlbmVzcy4KCiBDb21wYXRpYmxlIHdpdGggV2ViR0wgY29tcGF0aWJsZSBicm93c2VycyAobm90IElFIDwgMTEpLgoKIElmIHRoaXMgbW9kdWxlIGlzIHRha2VuIGluIGFzIHBhcnQgb2YgdGhlIGNvcmUKIC0gQWxsIHRoZSBsb2FkaW5nIGxvZ2ljIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBjb3JlLiBVcGRhdGUgc3R5bGVzIGluIHRoZQogICBjb3JlLgogLSBNb3N0IG9mIHRoZSBtZXRob2Qgd3JhcHMgc2hvdWxkIHByb2JhYmx5IGJlIGFkZGVkIGRpcmVjdGx5IGluIHBhcmVudAogICBtZXRob2RzLgoKIE5vdGVzIGZvciBib29zdCBtb2RlCiAtIEFyZWEgbGluZXMgYXJlIG5vdCBkcmF3bgogLSBMaW5lcyBhcmUgbm90IGRyYXduIG9uIHNjYXR0ZXIgY2hhcnRzCiAtIFpvbmVzIGFuZCBuZWdhdGl2ZUNvbG9yIGRvbid0IHdvcmsKIC0gRGFzaCBzdHlsZXMgYXJlIG5vdCByZW5kZXJlZCBvbiBsaW5lcy4KIC0gQ29sdW1ucyBhcmUgYWx3YXlzIG9uZSBwaXhlbCB3aWRlLiBEb24ndCBzZXQgdGhlIHRocmVzaG9sZCB0b28gbG93LgogLSBEaXNhYmxlIGFuaW1hdGlvbnMKIC0gTWFya2VyIHNoYXBlcyBhcmUgbm90IHN1cHBvcnRlZDogbWFya2VycyB3aWxsIGFsd2F5cyBiZSBjaXJjbGVzLCBleGNlcHQKICAgaGVhdG1hcCBzZXJpZXMsIHdoZXJlIG1hcmtlcnMgYXJlIGFsd2F5cyByZWN0YW5nbGVzLgoKIE9wdGltaXppbmcgdGlwcyBmb3IgdXNlcnMKIC0gU2V0IGV4dHJlbWVzIChtaW4sIG1heCkgZXhwbGljaXRseSBvbiB0aGUgYXhlcyBpbiBvcmRlciBmb3IgSGlnaGNoYXJ0cyB0bwogICBhdm9pZCBjb21wdXRpbmcgZXh0cmVtZXMuCiAtIFNldCBlbmFibGVNb3VzZVRyYWNraW5nIHRvIGZhbHNlIG9uIHRoZSBzZXJpZXMgdG8gaW1wcm92ZSB0b3RhbCByZW5kZXJpbmcKICAgICAgdGltZS4KIC0gVGhlIGRlZmF1bHQgdGhyZXNob2xkIGlzIHNldCBiYXNlZCBvbiBvbmUgc2VyaWVzLiBJZiB5b3UgaGF2ZSBtdWx0aXBsZSwKICAgZGVuc2Ugc2VyaWVzLCB0aGUgY29tYmluZWQgbnVtYmVyIG9mIHBvaW50cyBkcmF3biBnZXRzIGhpZ2hlciwgYW5kIHlvdSBtYXkKICAgd2FudCB0byBzZXQgdGhlIHRocmVzaG9sZCBsb3dlciBpbiBvcmRlciB0byB1c2Ugb3B0aW1pemF0aW9ucy4KIC0gSWYgZHJhd2luZyBsYXJnZSBzY2F0dGVyIGNoYXJ0cywgaXQncyBiZW5lZmljaWFsIHRvIHNldCB0aGUgbWFya2VyIHJhZGl1cwogICB0byBhIHZhbHVlIGxlc3MgdGhhbiAxLiBUaGlzIGlzIHRvIGFkZCBhZGRpdGlvbmFsIHNwYWNpbmcgdG8gbWFrZSB0aGUgY2hhcnQKICAgbW9yZSByZWFkYWJsZS4KIC0gSWYgdGhlIHZhbHVlIGluY3JlbWVudHMgb24gYm90aCB0aGUgWCBhbmQgWSBheGlzIGFyZW4ndCBzbWFsbCwgY29uc2lkZXIKICAgc2V0dGluZyB1c2VHUFVUcmFuc2xhdGlvbnMgdG8gdHJ1ZSBvbiB0aGUgYm9vc3Qgc2V0dGluZ3Mgb2JqZWN0LiBJZiB5b3UgZG8KICAgdGhpcyBhbmQgdGhlIGluY3JlbWVudHMgYXJlIHNtYWxsIChlLmcuIGRhdGV0aW1lIGF4aXMgd2l0aCBzbWFsbCB0aW1lCiAgIGluY3JlbWVudHMpIGl0IG1heSBjYXVzZSByZW5kZXJpbmcgaXNzdWVzIGR1ZSB0byBmbG9hdGluZyBwb2ludCByb3VuZGluZwogICBlcnJvcnMsIHNvIHlvdXIgbWlsbGFnZSBtYXkgdmFyeS4KCiBTZXR0aW5ncwogICAgVGhlcmUgYXJlIHR3byB3YXlzIG9mIHNldHRpbmcgdGhlIGJvb3N0IHRocmVzaG9sZDoKICAgIC0gUGVyIHNlcmllczogYm9vc3QgYmFzZWQgb24gbnVtYmVyIG9mIHBvaW50cyBpbiBpbmRpdmlkdWFsIHNlcmllcwogICAgLSBQZXIgY2hhcnQ6IGJvb3N0IGJhc2VkIG9uIHRoZSBudW1iZXIgb2Ygc2VyaWVzCgogIFRvIHNldCB0aGUgc2VyaWVzIGJvb3N0IHRocmVzaG9sZCwgc2V0IHNlcmllc0Jvb3N0VGhyZXNob2xkIG9uIHRoZSBjaGFydAogIG9iamVjdC4KICBUbyBzZXQgdGhlIHNlcmllcy1zcGVjaWZpYyB0aHJlc2hvbGQsIHNldCBib29zdFRocmVzaG9sZCBvbiB0aGUgc2VyaWVzCiAgb2JqZWN0LgoKICBJbiBhZGRpdGlvbiwgdGhlIGZvbGxvd2luZyBjYW4gYmUgc2V0IGluIHRoZSBib29zdCBvYmplY3Q6CiAgewogICAgICAvL1dldGhlciBvciBub3QgdG8gdXNlIGFscGhhIGJsZW5kaW5nCiAgICAgIHVzZUFscGhhOiBib29sZWFuIC0gZGVmYXVsdDogdHJ1ZQogICAgICAvL1NldCB0byB0cnVlIHRvIHBlcmZvcm0gdHJhbnNsYXRpb25zIG9uIHRoZSBHUFUuCiAgICAgIC8vTXVjaCBmYXN0ZXIsIGJ1dCBtYXkgY2F1c2UgcmVuZGVyaW5nIGlzc3VlcwogICAgICAvL3doZW4gdXNpbmcgdmFsdWVzIGZhciBmcm9tIDAgZHVlIHRvIGZsb2F0aW5nIHBvaW50CiAgICAgIC8vcm91bmRpbmcgaXNzdWVzCiAgICAgIHVzZUdQVVRyYW5zbGF0aW9uczogYm9vbGVhbiAtIGRlZmF1bHQ6IGZhbHNlCiAgICAgIC8vVXNlIHByZS1hbGxvY2F0ZWQgYnVmZmVycywgbXVjaCBmYXN0ZXIsCiAgICAgIC8vYnV0IG1heSBjYXVzZSByZW5kZXJpbmcgaXNzdWVzIHdpdGggc29tZSBkYXRhIHNldHMKICAgICAgdXNlUHJlYWxsb2NhdGVkOiBib29sZWFuIC0gZGVmYXVsdDogZmFsc2UKICB9CiovCihmdW5jdGlvbihiKXsib2JqZWN0Ij09PXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhiWyJkZWZhdWx0Il09Yixtb2R1bGUuZXhwb3J0cz1iKToiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoImhpZ2hjaGFydHMvbW9kdWxlcy9ib29zdCIsWyJoaWdoY2hhcnRzIl0sZnVuY3Rpb24obil7YihuKTtiLkhpZ2hjaGFydHM9bjtyZXR1cm4gYn0pOmIoInVuZGVmaW5lZCIhPT10eXBlb2YgSGlnaGNoYXJ0cz9IaWdoY2hhcnRzOnZvaWQgMCl9KShmdW5jdGlvbihiKXtmdW5jdGlvbiBuKGIsbCxFLG0pe2IuaGFzT3duUHJvcGVydHkobCl8fChiW2xdPW0uYXBwbHkobnVsbCxFKSl9Yj1iP2IuX21vZHVsZXM6e307bihiLCJtb2R1bGVzL2Jvb3N0L2Jvb3N0YWJsZXMuanMiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuImFyZWEgYXJlYXJhbmdlIGNvbHVtbiBjb2x1bW5yYW5nZSBiYXIgbGluZSBzY2F0dGVyIGhlYXRtYXAgYnViYmxlIHRyZWVtYXAiLnNwbGl0KCIgIil9KTsKbihiLCJtb2R1bGVzL2Jvb3N0L2Jvb3N0YWJsZS1tYXAuanMiLFtiWyJtb2R1bGVzL2Jvb3N0L2Jvb3N0YWJsZXMuanMiXV0sZnVuY3Rpb24oYil7dmFyIHY9e307Yi5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZbYl09MX0pO3JldHVybiB2fSk7bihiLCJtb2R1bGVzL2Jvb3N0L3dnbC1zaGFkZXIuanMiLFtiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYil7dmFyIHY9Yi5jbGFtcCxFPWIuZXJyb3IsbT1iLnBpY2s7cmV0dXJuIGZ1bmN0aW9uKGQpe2Z1bmN0aW9uIGIoKXtrLmxlbmd0aCYmRSgiW2hpZ2hjaGFydHMgYm9vc3RdIHNoYWRlciBlcnJvciAtICIray5qb2luKCJcbiIpKX1mdW5jdGlvbiBnKGMsYSl7dmFyIGU9ZC5jcmVhdGVTaGFkZXIoInZlcnRleCI9PT1hP2QuVkVSVEVYX1NIQURFUjpkLkZSQUdNRU5UX1NIQURFUik7ZC5zaGFkZXJTb3VyY2UoZSxjKTtkLmNvbXBpbGVTaGFkZXIoZSk7cmV0dXJuIGQuZ2V0U2hhZGVyUGFyYW1ldGVyKGUsZC5DT01QSUxFX1NUQVRVUyk/CmU6KGsucHVzaCgid2hlbiBjb21waWxpbmcgIithKyIgc2hhZGVyOlxuIitkLmdldFNoYWRlckluZm9Mb2coZSkpLCExKX1mdW5jdGlvbiB6KCl7ZnVuY3Rpb24gYyhjKXtyZXR1cm4gZC5nZXRVbmlmb3JtTG9jYXRpb24oYSxjKX12YXIgSD1nKCIjdmVyc2lvbiAxMDBcbiNkZWZpbmUgTE4xMCAyLjMwMjU4NTA5Mjk5NDA0NlxucHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuYXR0cmlidXRlIHZlYzQgYVZlcnRleFBvc2l0aW9uO1xuYXR0cmlidXRlIHZlYzQgYUNvbG9yO1xudmFyeWluZyBoaWdocCB2ZWMyIHBvc2l0aW9uO1xudmFyeWluZyBoaWdocCB2ZWM0IHZDb2xvcjtcbnVuaWZvcm0gbWF0NCB1UE1hdHJpeDtcbnVuaWZvcm0gZmxvYXQgcFNpemU7XG51bmlmb3JtIGZsb2F0IHRyYW5zbGF0ZWRUaHJlc2hvbGQ7XG51bmlmb3JtIGJvb2wgaGFzVGhyZXNob2xkO1xudW5pZm9ybSBib29sIHNraXBUcmFuc2xhdGlvbjtcbnVuaWZvcm0gZmxvYXQgeEF4aXNUcmFucztcbnVuaWZvcm0gZmxvYXQgeEF4aXNNaW47XG51bmlmb3JtIGZsb2F0IHhBeGlzTWluUGFkO1xudW5pZm9ybSBmbG9hdCB4QXhpc1BvaW50UmFuZ2U7XG51bmlmb3JtIGZsb2F0IHhBeGlzTGVuO1xudW5pZm9ybSBib29sICB4QXhpc1Bvc3RUcmFuc2xhdGU7XG51bmlmb3JtIGZsb2F0IHhBeGlzT3JkaW5hbFNsb3BlO1xudW5pZm9ybSBmbG9hdCB4QXhpc09yZGluYWxPZmZzZXQ7XG51bmlmb3JtIGZsb2F0IHhBeGlzUG9zO1xudW5pZm9ybSBib29sICB4QXhpc0NWU0Nvb3JkO1xudW5pZm9ybSBib29sICB4QXhpc0lzTG9nO1xudW5pZm9ybSBib29sICB4QXhpc1JldmVyc2VkO1xudW5pZm9ybSBmbG9hdCB5QXhpc1RyYW5zO1xudW5pZm9ybSBmbG9hdCB5QXhpc01pbjtcbnVuaWZvcm0gZmxvYXQgeUF4aXNNaW5QYWQ7XG51bmlmb3JtIGZsb2F0IHlBeGlzUG9pbnRSYW5nZTtcbnVuaWZvcm0gZmxvYXQgeUF4aXNMZW47XG51bmlmb3JtIGJvb2wgIHlBeGlzUG9zdFRyYW5zbGF0ZTtcbnVuaWZvcm0gZmxvYXQgeUF4aXNPcmRpbmFsU2xvcGU7XG51bmlmb3JtIGZsb2F0IHlBeGlzT3JkaW5hbE9mZnNldDtcbnVuaWZvcm0gZmxvYXQgeUF4aXNQb3M7XG51bmlmb3JtIGJvb2wgIHlBeGlzQ1ZTQ29vcmQ7XG51bmlmb3JtIGJvb2wgIHlBeGlzSXNMb2c7XG51bmlmb3JtIGJvb2wgIHlBeGlzUmV2ZXJzZWQ7XG51bmlmb3JtIGJvb2wgIGlzQnViYmxlO1xudW5pZm9ybSBib29sICBidWJibGVTaXplQnlBcmVhO1xudW5pZm9ybSBmbG9hdCBidWJibGVaTWluO1xudW5pZm9ybSBmbG9hdCBidWJibGVaTWF4O1xudW5pZm9ybSBmbG9hdCBidWJibGVaVGhyZXNob2xkO1xudW5pZm9ybSBmbG9hdCBidWJibGVNaW5TaXplO1xudW5pZm9ybSBmbG9hdCBidWJibGVNYXhTaXplO1xudW5pZm9ybSBib29sICBidWJibGVTaXplQWJzO1xudW5pZm9ybSBib29sICBpc0ludmVydGVkO1xuZmxvYXQgYnViYmxlUmFkaXVzKCl7XG5mbG9hdCB2YWx1ZSA9IGFWZXJ0ZXhQb3NpdGlvbi53O1xuZmxvYXQgek1heCA9IGJ1YmJsZVpNYXg7XG5mbG9hdCB6TWluID0gYnViYmxlWk1pbjtcbmZsb2F0IHJhZGl1cyA9IDAuMDtcbmZsb2F0IHBvcyA9IDAuMDtcbmZsb2F0IHpSYW5nZSA9IHpNYXggLSB6TWluO1xuaWYgKGJ1YmJsZVNpemVBYnMpe1xudmFsdWUgPSB2YWx1ZSAtIGJ1YmJsZVpUaHJlc2hvbGQ7XG56TWF4ID0gbWF4KHpNYXggLSBidWJibGVaVGhyZXNob2xkLCB6TWluIC0gYnViYmxlWlRocmVzaG9sZCk7XG56TWluID0gMC4wO1xufVxuaWYgKHZhbHVlIDwgek1pbil7XG5yYWRpdXMgPSBidWJibGVaTWluIC8gMi4wIC0gMS4wO1xufSBlbHNlIHtcbnBvcyA9IHpSYW5nZSA+IDAuMCA/ICh2YWx1ZSAtIHpNaW4pIC8gelJhbmdlIDogMC41O1xuaWYgKGJ1YmJsZVNpemVCeUFyZWEgJiYgcG9zID4gMC4wKXtcbnBvcyA9IHNxcnQocG9zKTtcbn1cbnJhZGl1cyA9IGNlaWwoYnViYmxlTWluU2l6ZSArIHBvcyAqIChidWJibGVNYXhTaXplIC0gYnViYmxlTWluU2l6ZSkpIC8gMi4wO1xufVxucmV0dXJuIHJhZGl1cyAqIDIuMDtcbn1cbmZsb2F0IHRyYW5zbGF0ZShmbG9hdCB2YWwsXG5mbG9hdCBwb2ludFBsYWNlbWVudCxcbmZsb2F0IGxvY2FsQSxcbmZsb2F0IGxvY2FsTWluLFxuZmxvYXQgbWluUGl4ZWxQYWRkaW5nLFxuZmxvYXQgcG9pbnRSYW5nZSxcbmZsb2F0IGxlbixcbmJvb2wgIGN2c0Nvb3JkLFxuYm9vbCAgaXNMb2csXG5ib29sICByZXZlcnNlZFxuKXtcbmZsb2F0IHNpZ24gPSAxLjA7XG5mbG9hdCBjdnNPZmZzZXQgPSAwLjA7XG5pZiAoY3ZzQ29vcmQpIHtcbnNpZ24gKj0gLTEuMDtcbmN2c09mZnNldCA9IGxlbjtcbn1cbmlmIChpc0xvZykge1xudmFsID0gbG9nKHZhbCkgLyBMTjEwO1xufVxuaWYgKHJldmVyc2VkKSB7XG5zaWduICo9IC0xLjA7XG5jdnNPZmZzZXQgLT0gc2lnbiAqIGxlbjtcbn1cbnJldHVybiBzaWduICogKHZhbCAtIGxvY2FsTWluKSAqIGxvY2FsQSArIGN2c09mZnNldCArIFxuKHNpZ24gKiBtaW5QaXhlbFBhZGRpbmcpO1xufVxuZmxvYXQgeFRvUGl4ZWxzKGZsb2F0IHZhbHVlKSB7XG5pZiAoc2tpcFRyYW5zbGF0aW9uKXtcbnJldHVybiB2YWx1ZTsvLyArIHhBeGlzUG9zO1xufVxucmV0dXJuIHRyYW5zbGF0ZSh2YWx1ZSwgMC4wLCB4QXhpc1RyYW5zLCB4QXhpc01pbiwgeEF4aXNNaW5QYWQsIHhBeGlzUG9pbnRSYW5nZSwgeEF4aXNMZW4sIHhBeGlzQ1ZTQ29vcmQsIHhBeGlzSXNMb2csIHhBeGlzUmV2ZXJzZWQpOy8vICsgeEF4aXNQb3M7XG59XG5mbG9hdCB5VG9QaXhlbHMoZmxvYXQgdmFsdWUsIGZsb2F0IGNoZWNrVHJlc2hvbGQpIHtcbmZsb2F0IHY7XG5pZiAoc2tpcFRyYW5zbGF0aW9uKXtcbnYgPSB2YWx1ZTsvLyArIHlBeGlzUG9zO1xufSBlbHNlIHtcbnYgPSB0cmFuc2xhdGUodmFsdWUsIDAuMCwgeUF4aXNUcmFucywgeUF4aXNNaW4sIHlBeGlzTWluUGFkLCB5QXhpc1BvaW50UmFuZ2UsIHlBeGlzTGVuLCB5QXhpc0NWU0Nvb3JkLCB5QXhpc0lzTG9nLCB5QXhpc1JldmVyc2VkKTsvLyArIHlBeGlzUG9zO1xuaWYgKHYgPiB5QXhpc0xlbikge1xudiA9IHlBeGlzTGVuO1xufVxufVxuaWYgKGNoZWNrVHJlc2hvbGQgPiAwLjAgJiYgaGFzVGhyZXNob2xkKSB7XG52ID0gbWluKHYsIHRyYW5zbGF0ZWRUaHJlc2hvbGQpO1xufVxucmV0dXJuIHY7XG59XG52b2lkIG1haW4odm9pZCkge1xuaWYgKGlzQnViYmxlKXtcbmdsX1BvaW50U2l6ZSA9IGJ1YmJsZVJhZGl1cygpO1xufSBlbHNlIHtcbmdsX1BvaW50U2l6ZSA9IHBTaXplO1xufVxudkNvbG9yID0gYUNvbG9yO1xuaWYgKHNraXBUcmFuc2xhdGlvbiAmJiBpc0ludmVydGVkKSB7XG5nbF9Qb3NpdGlvbiA9IHVQTWF0cml4ICogdmVjNChhVmVydGV4UG9zaXRpb24ueSArIHlBeGlzUG9zLCBhVmVydGV4UG9zaXRpb24ueCArIHhBeGlzUG9zLCAwLjAsIDEuMCk7XG59IGVsc2UgaWYgKGlzSW52ZXJ0ZWQpIHtcbmdsX1Bvc2l0aW9uID0gdVBNYXRyaXggKiB2ZWM0KHlUb1BpeGVscyhhVmVydGV4UG9zaXRpb24ueSwgYVZlcnRleFBvc2l0aW9uLnopICsgeUF4aXNQb3MsIHhUb1BpeGVscyhhVmVydGV4UG9zaXRpb24ueCkgKyB4QXhpc1BvcywgMC4wLCAxLjApO1xufSBlbHNlIHtcbmdsX1Bvc2l0aW9uID0gdVBNYXRyaXggKiB2ZWM0KHhUb1BpeGVscyhhVmVydGV4UG9zaXRpb24ueCkgKyB4QXhpc1BvcywgeVRvUGl4ZWxzKGFWZXJ0ZXhQb3NpdGlvbi55LCBhVmVydGV4UG9zaXRpb24ueikgKyB5QXhpc1BvcywgMC4wLCAxLjApO1xufVxufSIsCiJ2ZXJ0ZXgiKSxlPWcoInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbnVuaWZvcm0gdmVjNCBmaWxsQ29sb3I7XG52YXJ5aW5nIGhpZ2hwIHZlYzIgcG9zaXRpb247XG52YXJ5aW5nIGhpZ2hwIHZlYzQgdkNvbG9yO1xudW5pZm9ybSBzYW1wbGVyMkQgdVNhbXBsZXI7XG51bmlmb3JtIGJvb2wgaXNDaXJjbGU7XG51bmlmb3JtIGJvb2wgaGFzQ29sb3I7XG52b2lkIG1haW4odm9pZCkge1xudmVjNCBjb2wgPSBmaWxsQ29sb3I7XG52ZWM0IHRjb2w7XG5pZiAoaGFzQ29sb3IpIHtcbmNvbCA9IHZDb2xvcjtcbn1cbmlmIChpc0NpcmNsZSkge1xudGNvbCA9IHRleHR1cmUyRCh1U2FtcGxlciwgZ2xfUG9pbnRDb29yZC5zdCk7XG5jb2wgKj0gdGNvbDtcbmlmICh0Y29sLnIgPCAwLjApIHtcbmRpc2NhcmQ7XG59IGVsc2Uge1xuZ2xfRnJhZ0NvbG9yID0gY29sO1xufVxufSBlbHNlIHtcbmdsX0ZyYWdDb2xvciA9IGNvbDtcbn1cbn0iLCJmcmFnbWVudCIpO2lmKCFIfHwhZSlyZXR1cm4gYT0hMSwKYigpLCExO2E9ZC5jcmVhdGVQcm9ncmFtKCk7ZC5hdHRhY2hTaGFkZXIoYSxIKTtkLmF0dGFjaFNoYWRlcihhLGUpO2QubGlua1Byb2dyYW0oYSk7aWYoIWQuZ2V0UHJvZ3JhbVBhcmFtZXRlcihhLGQuTElOS19TVEFUVVMpKXJldHVybiBrLnB1c2goZC5nZXRQcm9ncmFtSW5mb0xvZyhhKSksYigpLGE9ITE7ZC51c2VQcm9ncmFtKGEpO2QuYmluZEF0dHJpYkxvY2F0aW9uKGEsMCwiYVZlcnRleFBvc2l0aW9uIik7dz1jKCJ1UE1hdHJpeCIpO3A9YygicFNpemUiKTtmPWMoImZpbGxDb2xvciIpO0I9YygiaXNCdWJibGUiKTtPPWMoImJ1YmJsZVNpemVBYnMiKTtoPWMoImJ1YmJsZVNpemVCeUFyZWEiKTtJPWMoInVTYW1wbGVyIik7bD1jKCJza2lwVHJhbnNsYXRpb24iKTtHPWMoImlzQ2lyY2xlIik7dD1jKCJpc0ludmVydGVkIik7cmV0dXJuITB9ZnVuY3Rpb24gcShjLGspe2QmJmEmJihjPXJbY109cltjXXx8ZC5nZXRVbmlmb3JtTG9jYXRpb24oYSxjKSxkLnVuaWZvcm0xZihjLGspKX0KdmFyIHI9e30sYSx3LHAsZixCLE8saCxsLEcsdCxrPVtdLEk7cmV0dXJuIGQmJiF6KCk/ITE6e3BzVW5pZm9ybTpmdW5jdGlvbigpe3JldHVybiBwfSxwVW5pZm9ybTpmdW5jdGlvbigpe3JldHVybiB3fSxmaWxsQ29sb3JVbmlmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LHNldEJ1YmJsZVVuaWZvcm1zOmZ1bmN0aW9uKGMsayxlKXt2YXIgdD1jLm9wdGlvbnMsYj1OdW1iZXIuTUFYX1ZBTFVFLHA9LU51bWJlci5NQVhfVkFMVUU7ZCYmYSYmImJ1YmJsZSI9PT1jLnR5cGUmJihiPW0odC56TWluLHYoaywhMT09PXQuZGlzcGxheU5lZ2F0aXZlP3QuelRocmVzaG9sZDotTnVtYmVyLk1BWF9WQUxVRSxiKSkscD1tKHQuek1heCxNYXRoLm1heChwLGUpKSxkLnVuaWZvcm0xaShCLDEpLGQudW5pZm9ybTFpKEcsMSksZC51bmlmb3JtMWkoaCwid2lkdGgiIT09Yy5vcHRpb25zLnNpemVCeSksZC51bmlmb3JtMWkoTyxjLm9wdGlvbnMuc2l6ZUJ5QWJzb2x1dGVWYWx1ZSkscSgiYnViYmxlWk1pbiIsCmIpLHEoImJ1YmJsZVpNYXgiLHApLHEoImJ1YmJsZVpUaHJlc2hvbGQiLGMub3B0aW9ucy56VGhyZXNob2xkKSxxKCJidWJibGVNaW5TaXplIixjLm1pblB4U2l6ZSkscSgiYnViYmxlTWF4U2l6ZSIsYy5tYXhQeFNpemUpKX0sYmluZDpmdW5jdGlvbigpe2QmJmEmJmQudXNlUHJvZ3JhbShhKX0scHJvZ3JhbTpmdW5jdGlvbigpe3JldHVybiBhfSxjcmVhdGU6eixzZXRVbmlmb3JtOnEsc2V0UE1hdHJpeDpmdW5jdGlvbihjKXtkJiZhJiZkLnVuaWZvcm1NYXRyaXg0ZnYodywhMSxjKX0sc2V0Q29sb3I6ZnVuY3Rpb24oYyl7ZCYmYSYmZC51bmlmb3JtNGYoZixjWzBdLzI1NSxjWzFdLzI1NSxjWzJdLzI1NSxjWzNdKX0sc2V0UG9pbnRTaXplOmZ1bmN0aW9uKGMpe2QmJmEmJmQudW5pZm9ybTFmKHAsYyl9LHNldFNraXBUcmFuc2xhdGlvbjpmdW5jdGlvbihjKXtkJiZhJiZkLnVuaWZvcm0xaShsLCEwPT09Yz8xOjApfSxzZXRUZXh0dXJlOmZ1bmN0aW9uKGMpe2QmJmEmJmQudW5pZm9ybTFpKEksCmMpfSxzZXREcmF3QXNDaXJjbGU6ZnVuY3Rpb24oYyl7ZCYmYSYmZC51bmlmb3JtMWkoRyxjPzE6MCl9LHJlc2V0OmZ1bmN0aW9uKCl7ZCYmYSYmKGQudW5pZm9ybTFpKEIsMCksZC51bmlmb3JtMWkoRywwKSl9LHNldEludmVydGVkOmZ1bmN0aW9uKGMpe2QmJmEmJmQudW5pZm9ybTFpKHQsYyl9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtkJiZhJiYoZC5kZWxldGVQcm9ncmFtKGEpLGE9ITEpfX19fSk7bihiLCJtb2R1bGVzL2Jvb3N0L3dnbC12YnVmZmVyLmpzIixbXSxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihiLGwsRSl7ZnVuY3Rpb24gbSgpe2QmJihiLmRlbGV0ZUJ1ZmZlcihkKSx2PWQ9ITEpO3E9MDtnPUV8fDI7cj1bXX12YXIgZD0hMSx2PSExLGc9RXx8Mix6PSExLHE9MCxyO3JldHVybntkZXN0cm95Om0sYmluZDpmdW5jdGlvbigpe2lmKCFkKXJldHVybiExO2IudmVydGV4QXR0cmliUG9pbnRlcih2LGcsYi5GTE9BVCwhMSwwLDApfSxkYXRhOnIsYnVpbGQ6ZnVuY3Rpb24oYSwKdyxwKXt2YXIgZjtyPWF8fFtdO2lmKCEociYmMCE9PXIubGVuZ3RofHx6KSlyZXR1cm4gbSgpLCExO2c9cHx8ZztkJiZiLmRlbGV0ZUJ1ZmZlcihkKTt6fHwoZj1uZXcgRmxvYXQzMkFycmF5KHIpKTtkPWIuY3JlYXRlQnVmZmVyKCk7Yi5iaW5kQnVmZmVyKGIuQVJSQVlfQlVGRkVSLGQpO2IuYnVmZmVyRGF0YShiLkFSUkFZX0JVRkZFUix6fHxmLGIuU1RBVElDX0RSQVcpO3Y9Yi5nZXRBdHRyaWJMb2NhdGlvbihsLnByb2dyYW0oKSx3KTtiLmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHYpO3JldHVybiEwfSxyZW5kZXI6ZnVuY3Rpb24oYSxtLHApe3ZhciBmPXo/ei5sZW5ndGg6ci5sZW5ndGg7aWYoIWR8fCFmKXJldHVybiExO2lmKCFhfHxhPmZ8fDA+YSlhPTA7aWYoIW18fG0+ZiltPWY7Yi5kcmF3QXJyYXlzKGJbKHB8fCJwb2ludHMiKS50b1VwcGVyQ2FzZSgpXSxhL2csKG0tYSkvZyk7cmV0dXJuITB9LGFsbG9jYXRlOmZ1bmN0aW9uKGEpe3E9LTE7ej1uZXcgRmxvYXQzMkFycmF5KDQqCmEpfSxwdXNoOmZ1bmN0aW9uKGEsYixkLGYpe3omJih6WysrcV09YSx6WysrcV09Yix6WysrcV09ZCx6WysrcV09Zil9fX19KTtuKGIsIm1vZHVsZXMvYm9vc3Qvd2dsLXJlbmRlcmVyLmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbIm1vZHVsZXMvYm9vc3Qvd2dsLXNoYWRlci5qcyJdLGJbIm1vZHVsZXMvYm9vc3Qvd2dsLXZidWZmZXIuanMiXSxiWyJwYXJ0cy9Db2xvci5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdXSxmdW5jdGlvbihiLGwsRSxtLGQpe3ZhciB2PW0ucGFyc2UsZz1kLmlzTnVtYmVyLHo9ZC5pc09iamVjdCxxPWQubWVyZ2Uscj1kLm9iamVjdEVhY2gsYT1kLnBpY2ssdz1iLndpbi5kb2N1bWVudDtyZXR1cm4gZnVuY3Rpb24oZCl7ZnVuY3Rpb24gcChjKXtpZihjLmlzU2VyaWVzQm9vc3Rpbmcpe3ZhciBhPSEhYy5vcHRpb25zLnN0YWNraW5nO3ZhciBlPWMueERhdGF8fGMub3B0aW9ucy54RGF0YXx8Yy5wcm9jZXNzZWRYRGF0YTthPShhP2MuZGF0YTplfHwKYy5vcHRpb25zLmRhdGEpLmxlbmd0aDsidHJlZW1hcCI9PT1jLnR5cGU/YSo9MTI6ImhlYXRtYXAiPT09Yy50eXBlP2EqPTY6bWFbYy50eXBlXSYmKGEqPTIpO3JldHVybiBhfXJldHVybiAwfWZ1bmN0aW9uIEIoKXtlLmNsZWFyKGUuQ09MT1JfQlVGRkVSX0JJVHxlLkRFUFRIX0JVRkZFUl9CSVQpfWZ1bmN0aW9uIE8oYyxhKXtmdW5jdGlvbiBlKGMpe2MmJihhLmNvbG9yRGF0YS5wdXNoKGNbMF0pLGEuY29sb3JEYXRhLnB1c2goY1sxXSksYS5jb2xvckRhdGEucHVzaChjWzJdKSxhLmNvbG9yRGF0YS5wdXNoKGNbM10pKX1mdW5jdGlvbiBiKGMsYSxiLGssZCl7ZShkKTt5LnVzZVByZWFsbG9jYXRlZD9ILnB1c2goYyxhLGI/MTowLGt8fDEpOihOLnB1c2goYyksTi5wdXNoKGEpLE4ucHVzaChiPzE6MCksTi5wdXNoKGt8fDEpKX1mdW5jdGlvbiBrKCl7YS5zZWdtZW50cy5sZW5ndGgmJihhLnNlZ21lbnRzW2Euc2VnbWVudHMubGVuZ3RoLTFdLnRvPU4ubGVuZ3RoKX1mdW5jdGlvbiBkKCl7YS5zZWdtZW50cy5sZW5ndGgmJgphLnNlZ21lbnRzW2Euc2VnbWVudHMubGVuZ3RoLTFdLmZyb209PT1OLmxlbmd0aHx8KGsoKSxhLnNlZ21lbnRzLnB1c2goe2Zyb206Ti5sZW5ndGh9KSl9ZnVuY3Rpb24gdChjLGEsayxkLHQpe2UodCk7YihjK2ssYSk7ZSh0KTtiKGMsYSk7ZSh0KTtiKGMsYStkKTtlKHQpO2IoYyxhK2QpO2UodCk7YihjK2ssYStkKTtlKHQpO2IoYytrLGEpfWZ1bmN0aW9uIHAoYyxlKXt5LnVzZUdQVVRyYW5zbGF0aW9uc3x8KGEuc2tpcFRyYW5zbGF0aW9uPSEwLGMueD13LnRvUGl4ZWxzKGMueCwhMCksYy55PW4udG9QaXhlbHMoYy55LCEwKSk7ZT9OPVtjLngsYy55LDAsMl0uY29uY2F0KE4pOmIoYy54LGMueSwwLDIpfXZhciBaPWMucG9pbnRBcnJheU1hcCYmImxvdyxoaWdoIj09PWMucG9pbnRBcnJheU1hcC5qb2luKCIsIiksUD1jLmNoYXJ0LGY9Yy5vcHRpb25zLEc9ISFmLnN0YWNraW5nLEk9Zi5kYXRhLGc9Yy54QXhpcy5nZXRFeHRyZW1lcygpLGg9Zy5taW47Zz1nLm1heDt2YXIgQj1jLnlBeGlzLmdldEV4dHJlbWVzKCksCnE9Qi5taW47Qj1CLm1heDt2YXIgbD1jLnhEYXRhfHxmLnhEYXRhfHxjLnByb2Nlc3NlZFhEYXRhLE89Yy55RGF0YXx8Zi55RGF0YXx8Yy5wcm9jZXNzZWRZRGF0YSxyPWMuekRhdGF8fGYuekRhdGF8fGMucHJvY2Vzc2VkWkRhdGEsbj1jLnlBeGlzLHc9Yy54QXhpcyxFPWMuY2hhcnQucGxvdFdpZHRoLEo9IWx8fDA9PT1sLmxlbmd0aCxMPWYuY29ubmVjdE51bGxzLHU9Yy5wb2ludHN8fCExLEY9ITEsSz0hMSxRO2w9Rz9jLmRhdGE6bHx8STt2YXIgWD17eDpOdW1iZXIuTUFYX1ZBTFVFLHk6MH0sTT17eDotTnVtYmVyLk1BWF9WQUxVRSx5OjB9LFQ9MCxXPSExLEQ9LTEsUz0hMSxVPSExLGthPSJ1bmRlZmluZWQiPT09dHlwZW9mIFAuaW5kZXgsZmE9ITEsaGE9ITE7dmFyIHg9ITE7dmFyIHphPW1hW2MudHlwZV0saWE9ITEsc2E9ITAsdGE9ITAsWT1mLnpvbmVzfHwhMSxWPSExLHVhPWYudGhyZXNob2xkLGphPSExO2lmKCEoZi5ib29zdERhdGEmJjA8Zi5ib29zdERhdGEubGVuZ3RoKSl7Zi5nYXBTaXplJiYKKGphPSJ2YWx1ZSIhPT1mLmdhcFVuaXQ/Zi5nYXBTaXplKmMuY2xvc2VzdFBvaW50UmFuZ2U6Zi5nYXBTaXplKTtZJiYoWS5zb21lKGZ1bmN0aW9uKGMpe3JldHVybiJ1bmRlZmluZWQiPT09dHlwZW9mIGMudmFsdWU/KFY9bmV3IG0oYy5jb2xvciksITApOiExfSksVnx8KFY9Yy5wb2ludEF0dHJpYnMmJmMucG9pbnRBdHRyaWJzKCkuZmlsbHx8Yy5jb2xvcixWPW5ldyBtKFYpKSk7UC5pbnZlcnRlZCYmKEU9Yy5jaGFydC5wbG90SGVpZ2h0KTtjLmNsb3Nlc3RQb2ludFJhbmdlUHg9TnVtYmVyLk1BWF9WQUxVRTtkKCk7aWYodSYmMDx1Lmxlbmd0aClhLnNraXBUcmFuc2xhdGlvbj0hMCxhLmRyYXdNb2RlPSJ0cmlhbmdsZXMiLHVbMF0ubm9kZSYmdVswXS5ub2RlLmxldmVsRHluYW1pYyYmdS5zb3J0KGZ1bmN0aW9uKGMsYSl7aWYoYy5ub2RlKXtpZihjLm5vZGUubGV2ZWxEeW5hbWljPmEubm9kZS5sZXZlbER5bmFtaWMpcmV0dXJuIDE7aWYoYy5ub2RlLmxldmVsRHluYW1pYzxhLm5vZGUubGV2ZWxEeW5hbWljKXJldHVybi0xfXJldHVybiAwfSksCnUuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZT1hLnBsb3RZO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIGUmJiFpc05hTihlKSYmbnVsbCE9PWEueSl7ZT1hLnNoYXBlQXJnczt2YXIgYj1QLnN0eWxlZE1vZGU/YS5zZXJpZXMuY29sb3JBdHRyaWJzKGEpOmI9YS5zZXJpZXMucG9pbnRBdHRyaWJzKGEpO2E9Ylsic3Ryb2tlLXdpZHRoIl18fDA7eD12KGIuZmlsbCkucmdiYTt4WzBdLz0yNTU7eFsxXS89MjU1O3hbMl0vPTI1NTsidHJlZW1hcCI9PT1jLnR5cGUmJihhPWF8fDEsUT12KGIuc3Ryb2tlKS5yZ2JhLFFbMF0vPTI1NSxRWzFdLz0yNTUsUVsyXS89MjU1LHQoZS54LGUueSxlLndpZHRoLGUuaGVpZ2h0LFEpLGEvPTIpOyJoZWF0bWFwIj09PWMudHlwZSYmUC5pbnZlcnRlZCYmKGUueD13Lmxlbi1lLngsZS55PW4ubGVuLWUueSxlLndpZHRoPS1lLndpZHRoLGUuaGVpZ2h0PS1lLmhlaWdodCk7dChlLngrYSxlLnkrYSxlLndpZHRoLTIqYSxlLmhlaWdodC0yKmEseCl9fSk7ZWxzZXtmb3IoO0Q8CmwubGVuZ3RoLTE7KXt2YXIgQz1sWysrRF07aWYoa2EpYnJlYWs7dT1JJiZJW0RdOyFKJiZ6KHUsITApJiZ1LmNvbG9yJiYoeD12KHUuY29sb3IpLnJnYmEseFswXS89MjU1LHhbMV0vPTI1NSx4WzJdLz0yNTUpO2lmKEope3U9Q1swXTt2YXIgQT1DWzFdO2xbRCsxXSYmKFU9bFtEKzFdWzBdKTtsW0QtMV0mJihTPWxbRC0xXVswXSk7aWYoMzw9Qy5sZW5ndGgpe3ZhciB2YT1DWzJdO0NbMl0+YS56TWF4JiYoYS56TWF4PUNbMl0pO0NbMl08YS56TWluJiYoYS56TWluPUNbMl0pfX1lbHNlIHU9QyxBPU9bRF0sbFtEKzFdJiYoVT1sW0QrMV0pLGxbRC0xXSYmKFM9bFtELTFdKSxyJiZyLmxlbmd0aCYmKHZhPXJbRF0scltEXT5hLnpNYXgmJihhLnpNYXg9cltEXSkscltEXTxhLnpNaW4mJihhLnpNaW49cltEXSkpO2lmKEx8fG51bGwhPT11JiZudWxsIT09QSl7VSYmVT49aCYmVTw9ZyYmKGZhPSEwKTtTJiZTPj1oJiZTPD1nJiYoaGE9ITApO2lmKFope0omJihBPUMuc2xpY2UoMSwzKSk7dmFyIGJhPQpBWzBdO0E9QVsxXX1lbHNlIEcmJih1PUMueCxBPUMuc3RhY2tZLGJhPUEtQy55KTtudWxsIT09cSYmInVuZGVmaW5lZCIhPT10eXBlb2YgcSYmbnVsbCE9PUImJiJ1bmRlZmluZWQiIT09dHlwZW9mIEImJihzYT1BPj1xJiZBPD1CKTt1PmcmJk0ueDxnJiYoTS54PXUsTS55PUEpO3U8aCYmWC54PmgmJihYLng9dSxYLnk9QSk7aWYobnVsbCE9PUF8fCFMKWlmKG51bGwhPT1BJiYoc2F8fGZhfHxoYSkpe2lmKChVPj1ofHx1Pj1oKSYmKFM8PWd8fHU8PWcpJiYoaWE9ITApLGlhfHxmYXx8aGEpe2phJiZ1LVM+amEmJmQoKTtZJiYoeD1WLnJnYmEsWS5zb21lKGZ1bmN0aW9uKGMsYSl7YT1ZW2EtMV07aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgYy52YWx1ZSYmQTw9Yy52YWx1ZSl7aWYoIWF8fEE+PWEudmFsdWUpeD12KGMuY29sb3IpLnJnYmE7cmV0dXJuITB9cmV0dXJuITF9KSx4WzBdLz0yNTUseFsxXS89MjU1LHhbMl0vPTI1NSk7aWYoIXkudXNlR1BVVHJhbnNsYXRpb25zJiYoYS5za2lwVHJhbnNsYXRpb249CiEwLHU9dy50b1BpeGVscyh1LCEwKSxBPW4udG9QaXhlbHMoQSwhMCksdT5FJiYicG9pbnRzIj09PWEuZHJhd01vZGUpKWNvbnRpbnVlO2lmKHphKXtDPWJhO2lmKCExPT09YmF8fCJ1bmRlZmluZWQiPT09dHlwZW9mIGJhKUM9MD5BP0E6MDtafHxHfHwoQz1NYXRoLm1heChudWxsPT09dWE/cTp1YSxxKSk7eS51c2VHUFVUcmFuc2xhdGlvbnN8fChDPW4udG9QaXhlbHMoQywhMCkpO2IodSxDLDAsMCx4KX1hLmhhc01hcmtlcnMmJmlhJiYhMSE9PUYmJihjLmNsb3Nlc3RQb2ludFJhbmdlUHg9TWF0aC5taW4oYy5jbG9zZXN0UG9pbnRSYW5nZVB4LE1hdGguYWJzKHUtRikpKTsheS51c2VHUFVUcmFuc2xhdGlvbnMmJiF5LnVzZVByZWFsbG9jYXRlZCYmRiYmMT5NYXRoLmFicyh1LUYpJiZLJiYxPk1hdGguYWJzKEEtSyk/eS5kZWJ1Zy5zaG93U2tpcFN1bW1hcnkmJisrVDooZi5zdGVwJiYhdGEmJmIodSxLLDAsMix4KSxiKHUsQSwwLCJidWJibGUiPT09Yy50eXBlP3ZhfHwxOjIseCksRj0KdSxLPUEsVz0hMCx0YT0hMSl9fWVsc2UgZCgpfWVsc2UgZCgpfXkuZGVidWcuc2hvd1NraXBTdW1tYXJ5JiZjb25zb2xlLmxvZygic2tpcHBlZCBwb2ludHM6IixUKTtXfHwhMT09PUx8fCJsaW5lX3N0cmlwIiE9PWMuZHJhd01vZGV8fChYLng8TnVtYmVyLk1BWF9WQUxVRSYmcChYLCEwKSxNLng+LU51bWJlci5NQVhfVkFMVUUmJnAoTSkpfWsoKX19ZnVuY3Rpb24gaCgpe0Y9W107Vy5kYXRhPU49W107TD1bXTtIJiZILmRlc3Ryb3koKX1mdW5jdGlvbiBKKGEpe2MmJihjLnNldFVuaWZvcm0oInhBeGlzVHJhbnMiLGEudHJhbnNBKSxjLnNldFVuaWZvcm0oInhBeGlzTWluIixhLm1pbiksYy5zZXRVbmlmb3JtKCJ4QXhpc01pblBhZCIsYS5taW5QaXhlbFBhZGRpbmcpLGMuc2V0VW5pZm9ybSgieEF4aXNQb2ludFJhbmdlIixhLnBvaW50UmFuZ2UpLGMuc2V0VW5pZm9ybSgieEF4aXNMZW4iLGEubGVuKSxjLnNldFVuaWZvcm0oInhBeGlzUG9zIixhLnBvcyksYy5zZXRVbmlmb3JtKCJ4QXhpc0NWU0Nvb3JkIiwKIWEuaG9yaXopLGMuc2V0VW5pZm9ybSgieEF4aXNJc0xvZyIsISFhLmxvZ2FyaXRobWljKSxjLnNldFVuaWZvcm0oInhBeGlzUmV2ZXJzZWQiLCEhYS5yZXZlcnNlZCkpfWZ1bmN0aW9uIEcoYSl7YyYmKGMuc2V0VW5pZm9ybSgieUF4aXNUcmFucyIsYS50cmFuc0EpLGMuc2V0VW5pZm9ybSgieUF4aXNNaW4iLGEubWluKSxjLnNldFVuaWZvcm0oInlBeGlzTWluUGFkIixhLm1pblBpeGVsUGFkZGluZyksYy5zZXRVbmlmb3JtKCJ5QXhpc1BvaW50UmFuZ2UiLGEucG9pbnRSYW5nZSksYy5zZXRVbmlmb3JtKCJ5QXhpc0xlbiIsYS5sZW4pLGMuc2V0VW5pZm9ybSgieUF4aXNQb3MiLGEucG9zKSxjLnNldFVuaWZvcm0oInlBeGlzQ1ZTQ29vcmQiLCFhLmhvcml6KSxjLnNldFVuaWZvcm0oInlBeGlzSXNMb2ciLCEhYS5sb2dhcml0aG1pYyksYy5zZXRVbmlmb3JtKCJ5QXhpc1JldmVyc2VkIiwhIWEucmV2ZXJzZWQpKX1mdW5jdGlvbiB0KGEsZSl7Yy5zZXRVbmlmb3JtKCJoYXNUaHJlc2hvbGQiLAphKTtjLnNldFVuaWZvcm0oInRyYW5zbGF0ZWRUaHJlc2hvbGQiLGUpfWZ1bmN0aW9uIGsoayl7aWYoayluPWsuY2hhcnRXaWR0aHx8ODAwLEs9ay5jaGFydEhlaWdodHx8NDAwO2Vsc2UgcmV0dXJuITE7aWYoIShlJiZuJiZLJiZjKSlyZXR1cm4hMTt5LmRlYnVnLnRpbWVSZW5kZXJpbmcmJmNvbnNvbGUudGltZSgiZ2wgcmVuZGVyaW5nIik7ZS5jYW52YXMud2lkdGg9bjtlLmNhbnZhcy5oZWlnaHQ9SztjLmJpbmQoKTtlLnZpZXdwb3J0KDAsMCxuLEspO2Muc2V0UE1hdHJpeChbMi9uLDAsMCwwLDAsLSgyL0spLDAsMCwwLDAsLTIsMCwtMSwxLC0xLDFdKTsxPHkubGluZVdpZHRoJiYhYi5pc01TJiZlLmxpbmVXaWR0aCh5LmxpbmVXaWR0aCk7SC5idWlsZChXLmRhdGEsImFWZXJ0ZXhQb3NpdGlvbiIsNCk7SC5iaW5kKCk7Yy5zZXRJbnZlcnRlZChrLmludmVydGVkKTtGLmZvckVhY2goZnVuY3Rpb24oYixkKXt2YXIgZj1iLnNlcmllcy5vcHRpb25zLHA9Zi5tYXJrZXI7dmFyIGg9InVuZGVmaW5lZCIhPT0KdHlwZW9mIGYubGluZVdpZHRoP2YubGluZVdpZHRoOjE7dmFyIEk9Zi50aHJlc2hvbGQsbD1nKEkpLEI9Yi5zZXJpZXMueUF4aXMuZ2V0VGhyZXNob2xkKEkpO0k9YShmLm1hcmtlcj9mLm1hcmtlci5lbmFibGVkOm51bGwsYi5zZXJpZXMueEF4aXMuaXNSYWRpYWw/ITA6bnVsbCxiLnNlcmllcy5jbG9zZXN0UG9pbnRSYW5nZVB4PjIqKChmLm1hcmtlcj9mLm1hcmtlci5yYWRpdXM6MTApfHwxMCkpO3A9TVtwJiZwLnN5bWJvbHx8Yi5zZXJpZXMuc3ltYm9sXXx8TS5jaXJjbGU7aWYoISgwPT09Yi5zZWdtZW50cy5sZW5ndGh8fGIuc2VnbWVudHNsZW5ndGgmJmIuc2VnbWVudHNbMF0uZnJvbT09PWIuc2VnbWVudHNbMF0udG8pKXtwLmlzUmVhZHkmJihlLmJpbmRUZXh0dXJlKGUuVEVYVFVSRV8yRCxwLmhhbmRsZSksYy5zZXRUZXh0dXJlKHAuaGFuZGxlKSk7ay5zdHlsZWRNb2RlP3A9Yi5zZXJpZXMubWFya2VyR3JvdXAmJmIuc2VyaWVzLm1hcmtlckdyb3VwLmdldFN0eWxlKCJmaWxsIik6CihwPWIuc2VyaWVzLnBvaW50QXR0cmlicyYmYi5zZXJpZXMucG9pbnRBdHRyaWJzKCkuZmlsbHx8Yi5zZXJpZXMuY29sb3IsZi5jb2xvckJ5UG9pbnQmJihwPWIuc2VyaWVzLmNoYXJ0Lm9wdGlvbnMuY29sb3JzW2RdKSk7Yi5zZXJpZXMuZmlsbE9wYWNpdHkmJmYuZmlsbE9wYWNpdHkmJihwPShuZXcgbShwKSkuc2V0T3BhY2l0eShhKGYuZmlsbE9wYWNpdHksMSkpLmdldCgpKTtwPXYocCkucmdiYTt5LnVzZUFscGhhfHwocFszXT0xKTsibGluZXMiPT09Yi5kcmF3TW9kZSYmeS51c2VBbHBoYSYmMT5wWzNdJiYocFszXS89MTApOyJhZGQiPT09Zi5ib29zdEJsZW5kaW5nPyhlLmJsZW5kRnVuYyhlLlNSQ19BTFBIQSxlLk9ORSksZS5ibGVuZEVxdWF0aW9uKGUuRlVOQ19BREQpKToibXVsdCI9PT1mLmJvb3N0QmxlbmRpbmd8fCJtdWx0aXBseSI9PT1mLmJvb3N0QmxlbmRpbmc/ZS5ibGVuZEZ1bmMoZS5EU1RfQ09MT1IsZS5aRVJPKToiZGFya2VuIj09PWYuYm9vc3RCbGVuZGluZz8oZS5ibGVuZEZ1bmMoZS5PTkUsCmUuT05FKSxlLmJsZW5kRXF1YXRpb24oZS5GVU5DX01JTikpOmUuYmxlbmRGdW5jU2VwYXJhdGUoZS5TUkNfQUxQSEEsZS5PTkVfTUlOVVNfU1JDX0FMUEhBLGUuT05FLGUuT05FX01JTlVTX1NSQ19BTFBIQSk7Yy5yZXNldCgpOzA8Yi5jb2xvckRhdGEubGVuZ3RoJiYoYy5zZXRVbmlmb3JtKCJoYXNDb2xvciIsMSksZD1FKGUsYyksZC5idWlsZChiLmNvbG9yRGF0YSwiYUNvbG9yIiw0KSxkLmJpbmQoKSk7Yy5zZXRDb2xvcihwKTtKKGIuc2VyaWVzLnhBeGlzKTtHKGIuc2VyaWVzLnlBeGlzKTt0KGwsQik7InBvaW50cyI9PT1iLmRyYXdNb2RlJiYoZi5tYXJrZXImJmcoZi5tYXJrZXIucmFkaXVzKT9jLnNldFBvaW50U2l6ZSgyKmYubWFya2VyLnJhZGl1cyk6Yy5zZXRQb2ludFNpemUoMSkpO2Muc2V0U2tpcFRyYW5zbGF0aW9uKGIuc2tpcFRyYW5zbGF0aW9uKTsiYnViYmxlIj09PWIuc2VyaWVzLnR5cGUmJmMuc2V0QnViYmxlVW5pZm9ybXMoYi5zZXJpZXMsYi56TWluLGIuek1heCk7CmMuc2V0RHJhd0FzQ2lyY2xlKGthW2Iuc2VyaWVzLnR5cGVdfHwhMSk7aWYoMDxofHwibGluZV9zdHJpcCIhPT1iLmRyYXdNb2RlKWZvcihoPTA7aDxiLnNlZ21lbnRzLmxlbmd0aDtoKyspSC5yZW5kZXIoYi5zZWdtZW50c1toXS5mcm9tLGIuc2VnbWVudHNbaF0udG8sYi5kcmF3TW9kZSk7aWYoYi5oYXNNYXJrZXJzJiZJKWZvcihmLm1hcmtlciYmZyhmLm1hcmtlci5yYWRpdXMpP2Muc2V0UG9pbnRTaXplKDIqZi5tYXJrZXIucmFkaXVzKTpjLnNldFBvaW50U2l6ZSgxMCksYy5zZXREcmF3QXNDaXJjbGUoITApLGg9MDtoPGIuc2VnbWVudHMubGVuZ3RoO2grKylILnJlbmRlcihiLnNlZ21lbnRzW2hdLmZyb20sYi5zZWdtZW50c1toXS50bywiUE9JTlRTIil9fSk7eS5kZWJ1Zy50aW1lUmVuZGVyaW5nJiZjb25zb2xlLnRpbWVFbmQoImdsIHJlbmRlcmluZyIpO2QmJmQoKTtoKCl9ZnVuY3Rpb24gSShhKXtCKCk7aWYoYS5yZW5kZXJlci5mb3JFeHBvcnQpcmV0dXJuIGsoYSk7VD9rKGEpOgpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7SShhKX0sMSl9dmFyIGM9ITEsSD0hMSxlPSExLG49MCxLPTAsTj0hMSxMPSExLFc9e30sVD0hMSxGPVtdLE09e30sbWE9e2NvbHVtbjohMCxjb2x1bW5yYW5nZTohMCxiYXI6ITAsYXJlYTohMCxhcmVhcmFuZ2U6ITB9LGthPXtzY2F0dGVyOiEwLGJ1YmJsZTohMH0seT17cG9pbnRTaXplOjEsbGluZVdpZHRoOjEsZmlsbENvbG9yOiIjQUEwMEFBIix1c2VBbHBoYTohMCx1c2VQcmVhbGxvY2F0ZWQ6ITEsdXNlR1BVVHJhbnNsYXRpb25zOiExLGRlYnVnOnt0aW1lUmVuZGVyaW5nOiExLHRpbWVTZXJpZXNQcm9jZXNzaW5nOiExLHRpbWVTZXR1cDohMSx0aW1lQnVmZmVyQ29weTohMSx0aW1lS0RUcmVlOiExLHNob3dTa2lwU3VtbWFyeTohMX19O3JldHVybiBXPXthbGxvY2F0ZUJ1ZmZlckZvclNpbmdsZVNlcmllczpmdW5jdGlvbihhKXt2YXIgYz0wO3kudXNlUHJlYWxsb2NhdGVkJiYoYS5pc1Nlcmllc0Jvb3N0aW5nJiYoYz1wKGEpKSxILmFsbG9jYXRlKGMpKX0sCnB1c2hTZXJpZXM6ZnVuY3Rpb24oYSl7MDxGLmxlbmd0aCYmRltGLmxlbmd0aC0xXS5oYXNNYXJrZXJzJiYoRltGLmxlbmd0aC0xXS5tYXJrZXJUbz1MLmxlbmd0aCk7eS5kZWJ1Zy50aW1lU2VyaWVzUHJvY2Vzc2luZyYmY29uc29sZS50aW1lKCJidWlsZGluZyAiK2EudHlwZSsiIHNlcmllcyIpO0YucHVzaCh7c2VnbWVudHM6W10sbWFya2VyRnJvbTpMLmxlbmd0aCxjb2xvckRhdGE6W10sc2VyaWVzOmEsek1pbjpOdW1iZXIuTUFYX1ZBTFVFLHpNYXg6LU51bWJlci5NQVhfVkFMVUUsaGFzTWFya2VyczphLm9wdGlvbnMubWFya2VyPyExIT09YS5vcHRpb25zLm1hcmtlci5lbmFibGVkOiExLHNob3dNYXJrZXJzOiEwLGRyYXdNb2RlOnthcmVhOiJsaW5lcyIsYXJlYXJhbmdlOiJsaW5lcyIsYXJlYXNwbGluZToibGluZV9zdHJpcCIsY29sdW1uOiJsaW5lcyIsY29sdW1ucmFuZ2U6ImxpbmVzIixiYXI6ImxpbmVzIixsaW5lOiJsaW5lX3N0cmlwIixzY2F0dGVyOiJwb2ludHMiLGhlYXRtYXA6InRyaWFuZ2xlcyIsCnRyZWVtYXA6InRyaWFuZ2xlcyIsYnViYmxlOiJwb2ludHMifVthLnR5cGVdfHwibGluZV9zdHJpcCJ9KTtPKGEsRltGLmxlbmd0aC0xXSk7eS5kZWJ1Zy50aW1lU2VyaWVzUHJvY2Vzc2luZyYmY29uc29sZS50aW1lRW5kKCJidWlsZGluZyAiK2EudHlwZSsiIHNlcmllcyIpfSxzZXRTaXplOmZ1bmN0aW9uKGEsYil7bj09PWEmJks9PT1ifHwhY3x8KG49YSxLPWIsYy5iaW5kKCksYy5zZXRQTWF0cml4KFsyL24sMCwwLDAsMCwtKDIvSyksMCwwLDAsMCwtMiwwLC0xLDEsLTEsMV0pKX0saW5pdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIFR9LHNldFRocmVzaG9sZDp0LGluaXQ6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBrKGEsYyl7dmFyIGI9e2lzUmVhZHk6ITEsdGV4dHVyZTp3LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLGhhbmRsZTplLmNyZWF0ZVRleHR1cmUoKX0saz1iLnRleHR1cmUuZ2V0Q29udGV4dCgiMmQiKTtNW2FdPWI7Yi50ZXh0dXJlLndpZHRoPTUxMjtiLnRleHR1cmUuaGVpZ2h0PQo1MTI7ay5tb3pJbWFnZVNtb290aGluZ0VuYWJsZWQ9ITE7ay53ZWJraXRJbWFnZVNtb290aGluZ0VuYWJsZWQ9ITE7ay5tc0ltYWdlU21vb3RoaW5nRW5hYmxlZD0hMTtrLmltYWdlU21vb3RoaW5nRW5hYmxlZD0hMTtrLnN0cm9rZVN0eWxlPSJyZ2JhKDI1NSwgMjU1LCAyNTUsIDApIjtrLmZpbGxTdHlsZT0iI0ZGRiI7YyhrKTt0cnl7ZS5hY3RpdmVUZXh0dXJlKGUuVEVYVFVSRTApLGUuYmluZFRleHR1cmUoZS5URVhUVVJFXzJELGIuaGFuZGxlKSxlLnRleEltYWdlMkQoZS5URVhUVVJFXzJELDAsZS5SR0JBLGUuUkdCQSxlLlVOU0lHTkVEX0JZVEUsYi50ZXh0dXJlKSxlLnRleFBhcmFtZXRlcmkoZS5URVhUVVJFXzJELGUuVEVYVFVSRV9XUkFQX1MsZS5DTEFNUF9UT19FREdFKSxlLnRleFBhcmFtZXRlcmkoZS5URVhUVVJFXzJELGUuVEVYVFVSRV9XUkFQX1QsZS5DTEFNUF9UT19FREdFKSxlLnRleFBhcmFtZXRlcmkoZS5URVhUVVJFXzJELGUuVEVYVFVSRV9NQUdfRklMVEVSLGUuTElORUFSKSwKZS50ZXhQYXJhbWV0ZXJpKGUuVEVYVFVSRV8yRCxlLlRFWFRVUkVfTUlOX0ZJTFRFUixlLkxJTkVBUiksZS5iaW5kVGV4dHVyZShlLlRFWFRVUkVfMkQsbnVsbCksYi5pc1JlYWR5PSEwfWNhdGNoKFIpe319dmFyIGQ9MCxmPVsid2ViZ2wiLCJleHBlcmltZW50YWwtd2ViZ2wiLCJtb3otd2ViZ2wiLCJ3ZWJraXQtM2QiXTtUPSExO2lmKCFhKXJldHVybiExO2Zvcih5LmRlYnVnLnRpbWVTZXR1cCYmY29uc29sZS50aW1lKCJnbCBzZXR1cCIpO2Q8Zi5sZW5ndGgmJiEoZT1hLmdldENvbnRleHQoZltkXSx7fSkpO2QrKyk7aWYoZSlifHxoKCk7ZWxzZSByZXR1cm4hMTtlLmVuYWJsZShlLkJMRU5EKTtlLmJsZW5kRnVuYyhlLlNSQ19BTFBIQSxlLk9ORV9NSU5VU19TUkNfQUxQSEEpO2UuZGlzYWJsZShlLkRFUFRIX1RFU1QpO2UuZGVwdGhGdW5jKGUuTEVTUyk7Yz1sKGUpO2lmKCFjKXJldHVybiExO0g9RShlLGMpO2soImNpcmNsZSIsZnVuY3Rpb24oYSl7YS5iZWdpblBhdGgoKTthLmFyYygyNTYsCjI1NiwyNTYsMCwyKk1hdGguUEkpO2Euc3Ryb2tlKCk7YS5maWxsKCl9KTtrKCJzcXVhcmUiLGZ1bmN0aW9uKGEpe2EuZmlsbFJlY3QoMCwwLDUxMiw1MTIpfSk7aygiZGlhbW9uZCIsZnVuY3Rpb24oYSl7YS5iZWdpblBhdGgoKTthLm1vdmVUbygyNTYsMCk7YS5saW5lVG8oNTEyLDI1Nik7YS5saW5lVG8oMjU2LDUxMik7YS5saW5lVG8oMCwyNTYpO2EubGluZVRvKDI1NiwwKTthLmZpbGwoKX0pO2soInRyaWFuZ2xlIixmdW5jdGlvbihhKXthLmJlZ2luUGF0aCgpO2EubW92ZVRvKDAsNTEyKTthLmxpbmVUbygyNTYsMCk7YS5saW5lVG8oNTEyLDUxMik7YS5saW5lVG8oMCw1MTIpO2EuZmlsbCgpfSk7aygidHJpYW5nbGUtZG93biIsZnVuY3Rpb24oYSl7YS5iZWdpblBhdGgoKTthLm1vdmVUbygwLDApO2EubGluZVRvKDI1Niw1MTIpO2EubGluZVRvKDUxMiwwKTthLmxpbmVUbygwLDApO2EuZmlsbCgpfSk7VD0hMDt5LmRlYnVnLnRpbWVTZXR1cCYmY29uc29sZS50aW1lRW5kKCJnbCBzZXR1cCIpOwpyZXR1cm4hMH0scmVuZGVyOkksc2V0dGluZ3M6eSx2YWxpZDpmdW5jdGlvbigpe3JldHVybiExIT09ZX0sY2xlYXI6QixmbHVzaDpoLHNldFhBeGlzOkosc2V0WUF4aXM6RyxkYXRhOk4sZ2w6ZnVuY3Rpb24oKXtyZXR1cm4gZX0sYWxsb2NhdGVCdWZmZXI6ZnVuY3Rpb24oYSl7dmFyIGM9MDt5LnVzZVByZWFsbG9jYXRlZCYmKGEuc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oYSl7YS5pc1Nlcmllc0Jvb3N0aW5nJiYoYys9cChhKSl9KSxILmFsbG9jYXRlKGMpKX0sZGVzdHJveTpmdW5jdGlvbigpe2goKTtILmRlc3Ryb3koKTtjLmRlc3Ryb3koKTtlJiYocihNLGZ1bmN0aW9uKGEpe2EuaGFuZGxlJiZlLmRlbGV0ZVRleHR1cmUoYS5oYW5kbGUpfSksZS5jYW52YXMud2lkdGg9MSxlLmNhbnZhcy5oZWlnaHQ9MSl9LHNldE9wdGlvbnM6ZnVuY3Rpb24oYSl7cSghMCx5LGEpfX19fSk7bihiLCJtb2R1bGVzL2Jvb3N0L2Jvb3N0LWF0dGFjaC5qcyIsW2JbIm1vZHVsZXMvYm9vc3Qvd2dsLXJlbmRlcmVyLmpzIl0sCmJbInBhcnRzL0dsb2JhbHMuanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYixsLG4pe3ZhciBtPWwuZG9jLGQ9bi5lcnJvcix2PW0uY3JlYXRlRWxlbWVudCgiY2FudmFzIik7cmV0dXJuIGZ1bmN0aW9uKGcsbil7dmFyIHE9Zy5jaGFydFdpZHRoLHI9Zy5jaGFydEhlaWdodCxhPWcsdz1nLnNlcmllc0dyb3VwfHxuLmdyb3VwLHA9bS5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJ3d3cuaHR0cDovL3czLm9yZy9UUi9TVkcxMS9mZWF0dXJlI0V4dGVuc2liaWxpdHkiLCIxLjEiKTthPWcuaXNDaGFydFNlcmllc0Jvb3N0aW5nKCk/ZzpuO3A9ITE7YS5yZW5kZXJUYXJnZXR8fChhLmNhbnZhcz12LGcucmVuZGVyZXIuZm9yRXhwb3J0fHwhcD8oYS5yZW5kZXJUYXJnZXQ9Zy5yZW5kZXJlci5pbWFnZSgiIiwwLDAscSxyKS5hZGRDbGFzcygiaGlnaGNoYXJ0cy1ib29zdC1jYW52YXMiKS5hZGQodyksYS5ib29zdENsZWFyPWZ1bmN0aW9uKCl7YS5yZW5kZXJUYXJnZXQuYXR0cih7aHJlZjoiIn0pfSwKYS5ib29zdENvcHk9ZnVuY3Rpb24oKXthLmJvb3N0UmVzaXplVGFyZ2V0KCk7YS5yZW5kZXJUYXJnZXQuYXR0cih7aHJlZjphLmNhbnZhcy50b0RhdGFVUkwoImltYWdlL3BuZyIpfSl9KTooYS5yZW5kZXJUYXJnZXRGbz1nLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoImZvcmVpZ25PYmplY3QiKS5hZGQodyksYS5yZW5kZXJUYXJnZXQ9bS5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxhLnJlbmRlclRhcmdldEN0eD1hLnJlbmRlclRhcmdldC5nZXRDb250ZXh0KCIyZCIpLGEucmVuZGVyVGFyZ2V0Rm8uZWxlbWVudC5hcHBlbmRDaGlsZChhLnJlbmRlclRhcmdldCksYS5ib29zdENsZWFyPWZ1bmN0aW9uKCl7YS5yZW5kZXJUYXJnZXQud2lkdGg9YS5jYW52YXMud2lkdGg7YS5yZW5kZXJUYXJnZXQuaGVpZ2h0PWEuY2FudmFzLmhlaWdodH0sYS5ib29zdENvcHk9ZnVuY3Rpb24oKXthLnJlbmRlclRhcmdldC53aWR0aD1hLmNhbnZhcy53aWR0aDthLnJlbmRlclRhcmdldC5oZWlnaHQ9YS5jYW52YXMuaGVpZ2h0OwphLnJlbmRlclRhcmdldEN0eC5kcmF3SW1hZ2UoYS5jYW52YXMsMCwwKX0pLGEuYm9vc3RSZXNpemVUYXJnZXQ9ZnVuY3Rpb24oKXtxPWcuY2hhcnRXaWR0aDtyPWcuY2hhcnRIZWlnaHQ7KGEucmVuZGVyVGFyZ2V0Rm98fGEucmVuZGVyVGFyZ2V0KS5hdHRyKHt4OjAseTowLHdpZHRoOnEsaGVpZ2h0OnJ9KS5jc3Moe3BvaW50ZXJFdmVudHM6Im5vbmUiLG1peGVkQmxlbmRNb2RlOiJub3JtYWwiLG9wYWNpdHk6MX0pO2EgaW5zdGFuY2VvZiBsLkNoYXJ0JiZhLm1hcmtlckdyb3VwLnRyYW5zbGF0ZShnLnBsb3RMZWZ0LGcucGxvdFRvcCl9LGEuYm9vc3RDbGlwUmVjdD1nLnJlbmRlcmVyLmNsaXBSZWN0KCksKGEucmVuZGVyVGFyZ2V0Rm98fGEucmVuZGVyVGFyZ2V0KS5jbGlwKGEuYm9vc3RDbGlwUmVjdCksYSBpbnN0YW5jZW9mIGwuQ2hhcnQmJihhLm1hcmtlckdyb3VwPWEucmVuZGVyZXIuZygpLmFkZCh3KSxhLm1hcmtlckdyb3VwLnRyYW5zbGF0ZShuLnhBeGlzLnBvcyxuLnlBeGlzLnBvcykpKTsKYS5jYW52YXMud2lkdGg9cTthLmNhbnZhcy5oZWlnaHQ9cjthLmJvb3N0Q2xpcFJlY3QuYXR0cihnLmdldEJvb3N0Q2xpcFJlY3QoYSkpO2EuYm9vc3RSZXNpemVUYXJnZXQoKTthLmJvb3N0Q2xlYXIoKTthLm9nbHx8KGEub2dsPWIoZnVuY3Rpb24oKXthLm9nbC5zZXR0aW5ncy5kZWJ1Zy50aW1lQnVmZmVyQ29weSYmY29uc29sZS50aW1lKCJidWZmZXIgY29weSIpO2EuYm9vc3RDb3B5KCk7YS5vZ2wuc2V0dGluZ3MuZGVidWcudGltZUJ1ZmZlckNvcHkmJmNvbnNvbGUudGltZUVuZCgiYnVmZmVyIGNvcHkiKX0pLGEub2dsLmluaXQoYS5jYW52YXMpfHxkKCJbaGlnaGNoYXJ0cyBib29zdF0gLSB1bmFibGUgdG8gaW5pdCBXZWJHTCByZW5kZXJlciIpLGEub2dsLnNldE9wdGlvbnMoZy5vcHRpb25zLmJvb3N0fHx7fSksYSBpbnN0YW5jZW9mIGwuQ2hhcnQmJmEub2dsLmFsbG9jYXRlQnVmZmVyKGcpKTthLm9nbC5zZXRTaXplKHEscik7cmV0dXJuIGEub2dsfX0pO24oYiwibW9kdWxlcy9ib29zdC9ib29zdC11dGlscy5qcyIsCltiWyJwYXJ0cy9HbG9iYWxzLmpzIl0sYlsibW9kdWxlcy9ib29zdC9ib29zdGFibGUtbWFwLmpzIl0sYlsibW9kdWxlcy9ib29zdC9ib29zdC1hdHRhY2guanMiXSxiWyJwYXJ0cy9VdGlsaXRpZXMuanMiXV0sZnVuY3Rpb24oYixsLG4sbSl7ZnVuY3Rpb24gZCgpe2Zvcih2YXIgYT1bXSxiPTA7Yjxhcmd1bWVudHMubGVuZ3RoO2IrKylhW2JdPWFyZ3VtZW50c1tiXTt2YXIgZD0tTnVtYmVyLk1BWF9WQUxVRTthLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgYSYmbnVsbCE9PWEmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGEubGVuZ3RoJiYwPGEubGVuZ3RoKXJldHVybiBkPWEubGVuZ3RoLCEwfSk7cmV0dXJuIGR9ZnVuY3Rpb24gdihhLGIsZCl7YSYmYi5yZW5kZXJUYXJnZXQmJmIuY2FudmFzJiYhKGR8fGIuY2hhcnQpLmlzQ2hhcnRTZXJpZXNCb29zdGluZygpJiZhLnJlbmRlcihkfHxiLmNoYXJ0KX1mdW5jdGlvbiBnKGEsYil7YSYmYi5yZW5kZXJUYXJnZXQmJgpiLmNhbnZhcyYmIWIuY2hhcnQuaXNDaGFydFNlcmllc0Jvb3N0aW5nKCkmJmEuYWxsb2NhdGVCdWZmZXJGb3JTaW5nbGVTZXJpZXMoYil9ZnVuY3Rpb24geihhLGIsZCxnLGgsbCl7aD1ofHwwO2c9Z3x8M0UzO2Zvcih2YXIgZj1oK2csdD0hMDt0JiZoPGYmJmg8YS5sZW5ndGg7KXQ9YihhW2hdLGgpLCsraDt0JiYoaDxhLmxlbmd0aD9sP3ooYSxiLGQsZyxoLGwpOnIucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3IucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCl7eihhLGIsZCxnLGgpfSk6c2V0VGltZW91dChmdW5jdGlvbigpe3ooYSxiLGQsZyxoKX0pOmQmJmQoKSl9ZnVuY3Rpb24gcSgpe3ZhciBiPTAsZCxnPVsid2ViZ2wiLCJleHBlcmltZW50YWwtd2ViZ2wiLCJtb3otd2ViZ2wiLCJ3ZWJraXQtM2QiXSxsPSExO2lmKCJ1bmRlZmluZWQiIT09dHlwZW9mIHIuV2ViR0xSZW5kZXJpbmdDb250ZXh0KWZvcihkPWEuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7YjxnLmxlbmd0aDtiKyspdHJ5e2lmKGw9CmQuZ2V0Q29udGV4dChnW2JdKSwidW5kZWZpbmVkIiE9PXR5cGVvZiBsJiZudWxsIT09bClyZXR1cm4hMH1jYXRjaChoKXt9cmV0dXJuITF9dmFyIHI9Yi53aW4sYT1iLmRvYyx3PW0ucGljazttPXtwYXRpZW50TWF4OmQsYm9vc3RFbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiB3KGEmJmEub3B0aW9ucyYmYS5vcHRpb25zLmJvb3N0JiZhLm9wdGlvbnMuYm9vc3QuZW5hYmxlZCwhMCl9LHNob3VsZEZvcmNlQ2hhcnRTZXJpZXNCb29zdGluZzpmdW5jdGlvbihhKXt2YXIgYj0wLGc9MCxwPXcoYS5vcHRpb25zLmJvb3N0JiZhLm9wdGlvbnMuYm9vc3QuYWxsb3dGb3JjZSwhMCk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgYS5ib29zdEZvcmNlQ2hhcnRCb29zdClyZXR1cm4gYS5ib29zdEZvcmNlQ2hhcnRCb29zdDtpZigxPGEuc2VyaWVzLmxlbmd0aClmb3IodmFyIGg9MDtoPGEuc2VyaWVzLmxlbmd0aDtoKyspe3ZhciBtPWEuc2VyaWVzW2hdOzAhPT1tLm9wdGlvbnMuYm9vc3RUaHJlc2hvbGQmJgohMSE9PW0udmlzaWJsZSYmImhlYXRtYXAiIT09bS50eXBlJiYobFttLnR5cGVdJiYrK2csZChtLnByb2Nlc3NlZFhEYXRhLG0ub3B0aW9ucy5kYXRhLG0ucG9pbnRzKT49KG0ub3B0aW9ucy5ib29zdFRocmVzaG9sZHx8TnVtYmVyLk1BWF9WQUxVRSkmJisrYil9YS5ib29zdEZvcmNlQ2hhcnRCb29zdD1wJiYoZz09PWEuc2VyaWVzLmxlbmd0aCYmMDxifHw1PGIpO3JldHVybiBhLmJvb3N0Rm9yY2VDaGFydEJvb3N0fSxyZW5kZXJJZk5vdFNlcmllc0Jvb3N0aW5nOnYsYWxsb2NhdGVJZk5vdFNlcmllc0Jvb3N0aW5nOmcsZWFjaEFzeW5jOnosaGFzV2ViR0xTdXBwb3J0OnEscG9pbnREcmF3SGFuZGxlcjpmdW5jdGlvbihhKXt2YXIgYj0hMDt0aGlzLmNoYXJ0Lm9wdGlvbnMmJnRoaXMuY2hhcnQub3B0aW9ucy5ib29zdCYmKGI9InVuZGVmaW5lZCI9PT10eXBlb2YgdGhpcy5jaGFydC5vcHRpb25zLmJvb3N0LmVuYWJsZWQ/ITA6dGhpcy5jaGFydC5vcHRpb25zLmJvb3N0LmVuYWJsZWQpOwppZighYnx8IXRoaXMuaXNTZXJpZXNCb29zdGluZylyZXR1cm4gYS5jYWxsKHRoaXMpO3RoaXMuY2hhcnQuaXNCb29zdGluZz0hMDtpZihhPW4odGhpcy5jaGFydCx0aGlzKSlnKGEsdGhpcyksYS5wdXNoU2VyaWVzKHRoaXMpO3YoYSx0aGlzKX19O2IuaGFzV2ViR0xTdXBwb3J0PXE7cmV0dXJuIG19KTtuKGIsIm1vZHVsZXMvYm9vc3QvYm9vc3QtaW5pdC5qcyIsW2JbInBhcnRzL0NoYXJ0LmpzIl0sYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1V0aWxpdGllcy5qcyJdLGJbIm1vZHVsZXMvYm9vc3QvYm9vc3QtdXRpbHMuanMiXSxiWyJtb2R1bGVzL2Jvb3N0L2Jvb3N0LWF0dGFjaC5qcyJdXSxmdW5jdGlvbihiLGwsbixtLGQpe3ZhciB2PW4uYWRkRXZlbnQsZz1uLmV4dGVuZCx6PW4uZmlyZUV2ZW50LHE9bi53cmFwLHI9bC5TZXJpZXMsYT1sLnNlcmllc1R5cGVzLHc9ZnVuY3Rpb24oKXt9LHA9bS5lYWNoQXN5bmMsZj1tLnBvaW50RHJhd0hhbmRsZXIsQj1tLmFsbG9jYXRlSWZOb3RTZXJpZXNCb29zdGluZywKRT1tLnJlbmRlcklmTm90U2VyaWVzQm9vc3RpbmcsaD1tLnNob3VsZEZvcmNlQ2hhcnRTZXJpZXNCb29zdGluZyxKO3JldHVybiBmdW5jdGlvbigpe2coci5wcm90b3R5cGUse3JlbmRlckNhbnZhczpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxjKXt2YXIgYj0hMSxkPSJ1bmRlZmluZWQiPT09dHlwZW9mIGcuaW5kZXgsaz0hMDtpZighZCl7aWYocGEpe3ZhciB0PWFbMF07dmFyIGY9YVsxXX1lbHNlIHQ9YSxmPW1bY107bGE/KHBhJiYoZj1hLnNsaWNlKDEsMykpLGI9ZlswXSxmPWZbMV0pOm5hJiYodD1hLngsZj1hLnN0YWNrWSxiPWYtYS55KTt3YXx8KGs9Zj49diYmZjw9TSk7aWYobnVsbCE9PWYmJnQ+PXEmJnQ8PXImJmspaWYoYT1lLnRvUGl4ZWxzKHQsITApLHkpe2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIFJ8fGE9PT1PKXtsYXx8KGI9Zik7aWYoInVuZGVmaW5lZCI9PT10eXBlb2YgYWF8fGY+ZGEpZGE9ZixhYT1jO2lmKCJ1bmRlZmluZWQiPT09dHlwZW9mIFJ8fGI8Y2EpY2E9CmIsUj1jfWEhPT1PJiYoInVuZGVmaW5lZCIhPT10eXBlb2YgUiYmKGY9aC50b1BpeGVscyhkYSwhMCksUD1oLnRvUGl4ZWxzKGNhLCEwKSxlYShhLGYsYWEpLFAhPT1mJiZlYShhLFAsUikpLFI9YWE9dm9pZCAwLE89YSl9ZWxzZSBmPU1hdGguY2VpbChoLnRvUGl4ZWxzKGYsITApKSxlYShhLGYsYyl9cmV0dXJuIWR9ZnVuY3Rpb24gYigpe3ooaywicmVuZGVyZWRDYW52YXMiKTtkZWxldGUgay5idWlsZEtEVHJlZTtrLmJ1aWxkS0RUcmVlKCk7cmEuZGVidWcudGltZUtEVHJlZSYmY29uc29sZS50aW1lRW5kKCJrZCB0cmVlIGJ1aWxkaW5nIil9dmFyIGs9dGhpcyxmPWsub3B0aW9uc3x8e30sYz0hMSxnPWsuY2hhcnQsZT10aGlzLnhBeGlzLGg9dGhpcy55QXhpcyxsPWYueERhdGF8fGsucHJvY2Vzc2VkWERhdGEsbT1mLnlEYXRhfHxrLnByb2Nlc3NlZFlEYXRhLG49Zi5kYXRhO2M9ZS5nZXRFeHRyZW1lcygpO3ZhciBxPWMubWluLHI9Yy5tYXg7Yz1oLmdldEV4dHJlbWVzKCk7dmFyIHY9CmMubWluLE09Yy5tYXgsTD17fSxPLHk9ISFrLnNhbXBsaW5nLFo9ITEhPT1mLmVuYWJsZU1vdXNlVHJhY2tpbmcsUD1oLmdldFRocmVzaG9sZChmLnRocmVzaG9sZCksbGE9ay5wb2ludEFycmF5TWFwJiYibG93LGhpZ2giPT09ay5wb2ludEFycmF5TWFwLmpvaW4oIiwiKSxuYT0hIWYuc3RhY2tpbmcsb2E9ay5jcm9wU3RhcnR8fDAsd2E9ay5yZXF1aXJlU29ydGluZyxwYT0hbCxjYSxkYSxSLGFhLHhhPSJ4Ij09PWYuZmluZE5lYXJlc3RQb2ludEJ5LHFhPXRoaXMueERhdGF8fHRoaXMub3B0aW9ucy54RGF0YXx8dGhpcy5wcm9jZXNzZWRYRGF0YXx8ITEsZWE9ZnVuY3Rpb24oYSxjLGIpe2E9TWF0aC5jZWlsKGEpO0o9eGE/YTphKyIsIitjO1omJiFMW0pdJiYoTFtKXT0hMCxnLmludmVydGVkJiYoYT1lLmxlbi1hLGM9aC5sZW4tYykseWEucHVzaCh7eDpxYT9xYVtvYStiXTohMSxjbGllbnRYOmEscGxvdFg6YSxwbG90WTpjLGk6b2ErYn0pKX07Yz1kKGcsayk7Zy5pc0Jvb3N0aW5nPQohMDt2YXIgcmE9Yy5zZXR0aW5ncztpZih0aGlzLnZpc2libGUpeyh0aGlzLnBvaW50c3x8dGhpcy5ncmFwaCkmJnRoaXMuZGVzdHJveUdyYXBoaWNzKCk7Zy5pc0NoYXJ0U2VyaWVzQm9vc3RpbmcoKT8odGhpcy5tYXJrZXJHcm91cCYmdGhpcy5tYXJrZXJHcm91cCE9PWcubWFya2VyR3JvdXAmJnRoaXMubWFya2VyR3JvdXAuZGVzdHJveSgpLHRoaXMubWFya2VyR3JvdXA9Zy5tYXJrZXJHcm91cCx0aGlzLnJlbmRlclRhcmdldCYmKHRoaXMucmVuZGVyVGFyZ2V0PXRoaXMucmVuZGVyVGFyZ2V0LmRlc3Ryb3koKSkpOih0aGlzLm1hcmtlckdyb3VwPT09Zy5tYXJrZXJHcm91cCYmKHRoaXMubWFya2VyR3JvdXA9dm9pZCAwKSx0aGlzLm1hcmtlckdyb3VwPWsucGxvdEdyb3VwKCJtYXJrZXJHcm91cCIsIm1hcmtlcnMiLCEwLDEsZy5zZXJpZXNHcm91cCkpO3ZhciB5YT10aGlzLnBvaW50cz1bXTtrLmJ1aWxkS0RUcmVlPXc7YyYmKEIoYyx0aGlzKSxjLnB1c2hTZXJpZXMoayksRShjLHRoaXMsCmcpKTtnLnJlbmRlcmVyLmZvckV4cG9ydHx8KHJhLmRlYnVnLnRpbWVLRFRyZWUmJmNvbnNvbGUudGltZSgia2QgdHJlZSBidWlsZGluZyIpLHAobmE/ay5kYXRhOmx8fG4sYSxiKSl9fX0pO1siaGVhdG1hcCIsInRyZWVtYXAiXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2FbYl0mJnEoYVtiXS5wcm90b3R5cGUsImRyYXdQb2ludHMiLGYpfSk7YS5idWJibGUmJihkZWxldGUgYS5idWJibGUucHJvdG90eXBlLmJ1aWxkS0RUcmVlLHEoYS5idWJibGUucHJvdG90eXBlLCJtYXJrZXJBdHRyaWJzIixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pc1Nlcmllc0Jvb3N0aW5nPyExOmEuYXBwbHkodGhpcyxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KSk7YS5zY2F0dGVyLnByb3RvdHlwZS5maWxsPSEwO2coYS5hcmVhLnByb3RvdHlwZSx7ZmlsbDohMCxmaWxsT3BhY2l0eTohMCxzYW1wbGluZzohMH0pO2coYS5jb2x1bW4ucHJvdG90eXBlLHtmaWxsOiEwLHNhbXBsaW5nOiEwfSk7Yi5wcm90b3R5cGUuY2FsbGJhY2tzLnB1c2goZnVuY3Rpb24oYSl7dihhLAoicHJlZHJhdyIsZnVuY3Rpb24oKXthLmJvb3N0Rm9yY2VDaGFydEJvb3N0PXZvaWQgMDthLmJvb3N0Rm9yY2VDaGFydEJvb3N0PWgoYSk7YS5pc0Jvb3N0aW5nPSExOyFhLmlzQ2hhcnRTZXJpZXNCb29zdGluZygpJiZhLmRpZEJvb3N0JiYoYS5kaWRCb29zdD0hMSk7YS5ib29zdENsZWFyJiZhLmJvb3N0Q2xlYXIoKTthLmNhbnZhcyYmYS5vZ2wmJmEuaXNDaGFydFNlcmllc0Jvb3N0aW5nKCkmJihhLmRpZEJvb3N0PSEwLGEub2dsLmFsbG9jYXRlQnVmZmVyKGEpKTthLm1hcmtlckdyb3VwJiZhLnhBeGlzJiYwPGEueEF4aXMubGVuZ3RoJiZhLnlBeGlzJiYwPGEueUF4aXMubGVuZ3RoJiZhLm1hcmtlckdyb3VwLnRyYW5zbGF0ZShhLnhBeGlzWzBdLnBvcyxhLnlBeGlzWzBdLnBvcyl9KTt2KGEsInJlbmRlciIsZnVuY3Rpb24oKXthLm9nbCYmYS5pc0NoYXJ0U2VyaWVzQm9vc3RpbmcoKSYmYS5vZ2wucmVuZGVyKGEpfSl9KX19KTtuKGIsIm1vZHVsZXMvYm9vc3QvYm9vc3Qtb3ZlcnJpZGVzLmpzIiwKW2JbInBhcnRzL0NoYXJ0LmpzIl0sYlsicGFydHMvR2xvYmFscy5qcyJdLGJbInBhcnRzL1BvaW50LmpzIl0sYlsicGFydHMvVXRpbGl0aWVzLmpzIl0sYlsibW9kdWxlcy9ib29zdC9ib29zdC11dGlscy5qcyJdLGJbIm1vZHVsZXMvYm9vc3QvYm9vc3RhYmxlcy5qcyJdLGJbIm1vZHVsZXMvYm9vc3QvYm9vc3RhYmxlLW1hcC5qcyJdXSxmdW5jdGlvbihiLGwsbixtLGQsTCxnKXt2YXIgdj1tLmFkZEV2ZW50LHE9bS5lcnJvcixyPW0uZ2V0T3B0aW9ucyxhPW0uaXNBcnJheSx3PW0uaXNOdW1iZXIscD1tLnBpY2ssZj1tLndyYXAsQj1kLmJvb3N0RW5hYmxlZCxFPWQuc2hvdWxkRm9yY2VDaGFydFNlcmllc0Jvb3N0aW5nLGg9bC5TZXJpZXMsSj1sLnNlcmllc1R5cGVzLEc9cigpLnBsb3RPcHRpb25zO2IucHJvdG90eXBlLmlzQ2hhcnRTZXJpZXNCb29zdGluZz1mdW5jdGlvbigpe3JldHVybiBwKHRoaXMub3B0aW9ucy5ib29zdCYmdGhpcy5vcHRpb25zLmJvb3N0LnNlcmllc1RocmVzaG9sZCwKNTApPD10aGlzLnNlcmllcy5sZW5ndGh8fEUodGhpcyl9O2IucHJvdG90eXBlLmdldEJvb3N0Q2xpcFJlY3Q9ZnVuY3Rpb24oYSl7dmFyIGI9e3g6dGhpcy5wbG90TGVmdCx5OnRoaXMucGxvdFRvcCx3aWR0aDp0aGlzLnBsb3RXaWR0aCxoZWlnaHQ6dGhpcy5wbG90SGVpZ2h0fTthPT09dGhpcyYmdGhpcy55QXhpcy5mb3JFYWNoKGZ1bmN0aW9uKGEpe2IueT1NYXRoLm1pbihhLnBvcyxiLnkpO2IuaGVpZ2h0PU1hdGgubWF4KGEucG9zLXRoaXMucGxvdFRvcCthLmxlbixiLmhlaWdodCl9LHRoaXMpO3JldHVybiBifTtoLnByb3RvdHlwZS5nZXRQb2ludD1mdW5jdGlvbihhKXt2YXIgYj1hLGQ9dGhpcy54RGF0YXx8dGhpcy5vcHRpb25zLnhEYXRhfHx0aGlzLnByb2Nlc3NlZFhEYXRhfHwhMTshYXx8YSBpbnN0YW5jZW9mIHRoaXMucG9pbnRDbGFzc3x8KGI9KG5ldyB0aGlzLnBvaW50Q2xhc3MpLmluaXQodGhpcyx0aGlzLm9wdGlvbnMuZGF0YVthLmldLGQ/ZFthLmldOnZvaWQgMCksCmIuY2F0ZWdvcnk9cCh0aGlzLnhBeGlzLmNhdGVnb3JpZXM/dGhpcy54QXhpcy5jYXRlZ29yaWVzW2IueF06Yi54LGIueCksYi5kaXN0PWEuZGlzdCxiLmRpc3RYPWEuZGlzdFgsYi5wbG90WD1hLnBsb3RYLGIucGxvdFk9YS5wbG90WSxiLmluZGV4PWEuaSxiLmlzSW5zaWRlPXRoaXMuaXNQb2ludEluc2lkZShhKSk7cmV0dXJuIGJ9O2YoaC5wcm90b3R5cGUsInNlYXJjaFBvaW50IixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nZXRQb2ludChhLmFwcGx5KHRoaXMsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpKX0pO2Yobi5wcm90b3R5cGUsImhhbG9QYXRoIixmdW5jdGlvbihhKXt2YXIgYj10aGlzLnNlcmllcyxkPXRoaXMucGxvdFgsYz10aGlzLnBsb3RZLGY9Yi5jaGFydC5pbnZlcnRlZDtiLmlzU2VyaWVzQm9vc3RpbmcmJmYmJih0aGlzLnBsb3RYPWIueUF4aXMubGVuLWMsdGhpcy5wbG90WT1iLnhBeGlzLmxlbi1kKTt2YXIgZT1hLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLAoxKSk7Yi5pc1Nlcmllc0Jvb3N0aW5nJiZmJiYodGhpcy5wbG90WD1kLHRoaXMucGxvdFk9Yyk7cmV0dXJuIGV9KTtmKGgucHJvdG90eXBlLCJtYXJrZXJBdHRyaWJzIixmdW5jdGlvbihhLGIpe3ZhciBkPWIucGxvdFgsYz1iLnBsb3RZLGY9dGhpcy5jaGFydC5pbnZlcnRlZDt0aGlzLmlzU2VyaWVzQm9vc3RpbmcmJmYmJihiLnBsb3RYPXRoaXMueUF4aXMubGVuLWMsYi5wbG90WT10aGlzLnhBeGlzLmxlbi1kKTt2YXIgZT1hLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTt0aGlzLmlzU2VyaWVzQm9vc3RpbmcmJmYmJihiLnBsb3RYPWQsYi5wbG90WT1jKTtyZXR1cm4gZX0pO3YoaCwiZGVzdHJveSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9YS5jaGFydDtiLm1hcmtlckdyb3VwPT09YS5tYXJrZXJHcm91cCYmKGEubWFya2VyR3JvdXA9bnVsbCk7Yi5ob3ZlclBvaW50cyYmKGIuaG92ZXJQb2ludHM9Yi5ob3ZlclBvaW50cy5maWx0ZXIoZnVuY3Rpb24oYil7cmV0dXJuIGIuc2VyaWVzPT09CmF9KSk7Yi5ob3ZlclBvaW50JiZiLmhvdmVyUG9pbnQuc2VyaWVzPT09YSYmKGIuaG92ZXJQb2ludD1udWxsKX0pO2YoaC5wcm90b3R5cGUsImdldEV4dHJlbWVzIixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pc1Nlcmllc0Jvb3N0aW5nJiZ0aGlzLmhhc0V4dHJlbWVzJiZ0aGlzLmhhc0V4dHJlbWVzKCk/e306YS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTtbInRyYW5zbGF0ZSIsImdlbmVyYXRlUG9pbnRzIiwiZHJhd1RyYWNrZXIiLCJkcmF3UG9pbnRzIiwicmVuZGVyIl0uZm9yRWFjaChmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGIpe3ZhciBjPXRoaXMub3B0aW9ucy5zdGFja2luZyYmKCJ0cmFuc2xhdGUiPT09YXx8ImdlbmVyYXRlUG9pbnRzIj09PWEpO2lmKCF0aGlzLmlzU2VyaWVzQm9vc3Rpbmd8fGN8fCFCKHRoaXMuY2hhcnQpfHwiaGVhdG1hcCI9PT10aGlzLnR5cGV8fCJ0cmVlbWFwIj09PXRoaXMudHlwZXx8IWdbdGhpcy50eXBlXXx8CjA9PT10aGlzLm9wdGlvbnMuYm9vc3RUaHJlc2hvbGQpYi5jYWxsKHRoaXMpO2Vsc2UgaWYodGhpc1thKyJDYW52YXMiXSl0aGlzW2ErIkNhbnZhcyJdKCl9ZihoLnByb3RvdHlwZSxhLGIpOyJ0cmFuc2xhdGUiPT09YSYmImNvbHVtbiBiYXIgYXJlYXJhbmdlIGNvbHVtbnJhbmdlIGhlYXRtYXAgdHJlZW1hcCIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe0pbZF0mJmYoSltkXS5wcm90b3R5cGUsYSxiKX0pfSk7ZihoLnByb3RvdHlwZSwicHJvY2Vzc0RhdGEiLGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGQoYSl7cmV0dXJuIGYuY2hhcnQuaXNDaGFydFNlcmllc0Jvb3N0aW5nKCl8fChhP2EubGVuZ3RoOjApPj0oZi5vcHRpb25zLmJvb3N0VGhyZXNob2xkfHxOdW1iZXIuTUFYX1ZBTFVFKX12YXIgZj10aGlzLGM9dGhpcy5vcHRpb25zLmRhdGE7Qih0aGlzLmNoYXJ0KSYmZ1t0aGlzLnR5cGVdPyhkKGMpJiYiaGVhdG1hcCIhPT10aGlzLnR5cGUmJiJ0cmVlbWFwIiE9PXRoaXMudHlwZSYmCiF0aGlzLm9wdGlvbnMuc3RhY2tpbmcmJnRoaXMuaGFzRXh0cmVtZXMmJnRoaXMuaGFzRXh0cmVtZXMoITApfHwoYi5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksYz10aGlzLnByb2Nlc3NlZFhEYXRhKSwodGhpcy5pc1Nlcmllc0Jvb3N0aW5nPWQoYykpPyhjPXRoaXMuZ2V0Rmlyc3RWYWxpZFBvaW50KHRoaXMub3B0aW9ucy5kYXRhKSx3KGMpfHxhKGMpfHxxKDEyLCExLHRoaXMuY2hhcnQpLHRoaXMuZW50ZXJCb29zdCgpKTp0aGlzLmV4aXRCb29zdCYmdGhpcy5leGl0Qm9vc3QoKSk6Yi5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSl9KTt2KGgsImhpZGUiLGZ1bmN0aW9uKCl7dGhpcy5jYW52YXMmJnRoaXMucmVuZGVyVGFyZ2V0JiYodGhpcy5vZ2wmJnRoaXMub2dsLmNsZWFyKCksdGhpcy5ib29zdENsZWFyKCkpfSk7aC5wcm90b3R5cGUuZW50ZXJCb29zdD1mdW5jdGlvbigpe3RoaXMuYWx0ZXJlZEJ5Qm9vc3Q9CltdO1siYWxsb3dERyIsImRpcmVjdFRvdWNoIiwic3RpY2t5VHJhY2tpbmciXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3RoaXMuYWx0ZXJlZEJ5Qm9vc3QucHVzaCh7cHJvcDphLHZhbDp0aGlzW2FdLG93bjpPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLGEpfSl9LHRoaXMpO3RoaXMuZGlyZWN0VG91Y2g9dGhpcy5hbGxvd0RHPSExO3RoaXMuZmluaXNoZWRBbmltYXRpbmc9dGhpcy5zdGlja3lUcmFja2luZz0hMDt0aGlzLmxhYmVsQnlTZXJpZXMmJih0aGlzLmxhYmVsQnlTZXJpZXM9dGhpcy5sYWJlbEJ5U2VyaWVzLmRlc3Ryb3koKSl9O2gucHJvdG90eXBlLmV4aXRCb29zdD1mdW5jdGlvbigpeyh0aGlzLmFsdGVyZWRCeUJvb3N0fHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXthLm93bj90aGlzW2EucHJvcF09YS52YWw6ZGVsZXRlIHRoaXNbYS5wcm9wXX0sdGhpcyk7dGhpcy5ib29zdENsZWFyJiZ0aGlzLmJvb3N0Q2xlYXIoKX07aC5wcm90b3R5cGUuaGFzRXh0cmVtZXM9ZnVuY3Rpb24oYSl7dmFyIGI9CnRoaXMub3B0aW9ucyxkPXRoaXMueEF4aXMmJnRoaXMueEF4aXMub3B0aW9ucyxjPXRoaXMueUF4aXMmJnRoaXMueUF4aXMub3B0aW9ucyxmPXRoaXMuY29sb3JBeGlzJiZ0aGlzLmNvbG9yQXhpcy5vcHRpb25zO3JldHVybiBiLmRhdGEubGVuZ3RoPihiLmJvb3N0VGhyZXNob2xkfHxOdW1iZXIuTUFYX1ZBTFVFKSYmdyhjLm1pbikmJncoYy5tYXgpJiYoIWF8fHcoZC5taW4pJiZ3KGQubWF4KSkmJighZnx8dyhmLm1pbikmJncoZi5tYXgpKX07aC5wcm90b3R5cGUuZGVzdHJveUdyYXBoaWNzPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPXRoaXMucG9pbnRzLGQsYztpZihiKWZvcihjPTA7YzxiLmxlbmd0aDtjKz0xKShkPWJbY10pJiZkLmRlc3Ryb3lFbGVtZW50cyYmZC5kZXN0cm95RWxlbWVudHMoKTtbImdyYXBoIiwiYXJlYSIsInRyYWNrZXIiXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2FbYl0mJihhW2JdPWFbYl0uZGVzdHJveSgpKX0pfTtMLmZvckVhY2goZnVuY3Rpb24oYSl7R1thXSYmCihHW2FdLmJvb3N0VGhyZXNob2xkPTVFMyxHW2FdLmJvb3N0RGF0YT1bXSxKW2FdLnByb3RvdHlwZS5maWxsT3BhY2l0eT0hMCl9KX0pO24oYiwibW9kdWxlcy9ib29zdC9uYW1lZC1jb2xvcnMuanMiLFtiWyJwYXJ0cy9Db2xvci5qcyJdXSxmdW5jdGlvbihiKXt2YXIgbD17YWxpY2VibHVlOiIjZjBmOGZmIixhbnRpcXVld2hpdGU6IiNmYWViZDciLGFxdWE6IiMwMGZmZmYiLGFxdWFtYXJpbmU6IiM3ZmZmZDQiLGF6dXJlOiIjZjBmZmZmIixiZWlnZToiI2Y1ZjVkYyIsYmlzcXVlOiIjZmZlNGM0IixibGFjazoiIzAwMDAwMCIsYmxhbmNoZWRhbG1vbmQ6IiNmZmViY2QiLGJsdWU6IiMwMDAwZmYiLGJsdWV2aW9sZXQ6IiM4YTJiZTIiLGJyb3duOiIjYTUyYTJhIixidXJseXdvb2Q6IiNkZWI4ODciLGNhZGV0Ymx1ZToiIzVmOWVhMCIsY2hhcnRyZXVzZToiIzdmZmYwMCIsY2hvY29sYXRlOiIjZDI2OTFlIixjb3JhbDoiI2ZmN2Y1MCIsY29ybmZsb3dlcmJsdWU6IiM2NDk1ZWQiLGNvcm5zaWxrOiIjZmZmOGRjIiwKY3JpbXNvbjoiI2RjMTQzYyIsY3lhbjoiIzAwZmZmZiIsZGFya2JsdWU6IiMwMDAwOGIiLGRhcmtjeWFuOiIjMDA4YjhiIixkYXJrZ29sZGVucm9kOiIjYjg4NjBiIixkYXJrZ3JheToiI2E5YTlhOSIsZGFya2dyZWVuOiIjMDA2NDAwIixkYXJra2hha2k6IiNiZGI3NmIiLGRhcmttYWdlbnRhOiIjOGIwMDhiIixkYXJrb2xpdmVncmVlbjoiIzU1NmIyZiIsZGFya29yYW5nZToiI2ZmOGMwMCIsZGFya29yY2hpZDoiIzk5MzJjYyIsZGFya3JlZDoiIzhiMDAwMCIsZGFya3NhbG1vbjoiI2U5OTY3YSIsZGFya3NlYWdyZWVuOiIjOGZiYzhmIixkYXJrc2xhdGVibHVlOiIjNDgzZDhiIixkYXJrc2xhdGVncmF5OiIjMmY0ZjRmIixkYXJrdHVycXVvaXNlOiIjMDBjZWQxIixkYXJrdmlvbGV0OiIjOTQwMGQzIixkZWVwcGluazoiI2ZmMTQ5MyIsZGVlcHNreWJsdWU6IiMwMGJmZmYiLGRpbWdyYXk6IiM2OTY5NjkiLGRvZGdlcmJsdWU6IiMxZTkwZmYiLGZlbGRzcGFyOiIjZDE5Mjc1IixmaXJlYnJpY2s6IiNiMjIyMjIiLApmbG9yYWx3aGl0ZToiI2ZmZmFmMCIsZm9yZXN0Z3JlZW46IiMyMjhiMjIiLGZ1Y2hzaWE6IiNmZjAwZmYiLGdhaW5zYm9ybzoiI2RjZGNkYyIsZ2hvc3R3aGl0ZToiI2Y4ZjhmZiIsZ29sZDoiI2ZmZDcwMCIsZ29sZGVucm9kOiIjZGFhNTIwIixncmF5OiIjODA4MDgwIixncmVlbjoiIzAwODAwMCIsZ3JlZW55ZWxsb3c6IiNhZGZmMmYiLGhvbmV5ZGV3OiIjZjBmZmYwIixob3RwaW5rOiIjZmY2OWI0IixpbmRpYW5yZWQ6IiNjZDVjNWMiLGluZGlnbzoiIzRiMDA4MiIsaXZvcnk6IiNmZmZmZjAiLGtoYWtpOiIjZjBlNjhjIixsYXZlbmRlcjoiI2U2ZTZmYSIsbGF2ZW5kZXJibHVzaDoiI2ZmZjBmNSIsbGF3bmdyZWVuOiIjN2NmYzAwIixsZW1vbmNoaWZmb246IiNmZmZhY2QiLGxpZ2h0Ymx1ZToiI2FkZDhlNiIsbGlnaHRjb3JhbDoiI2YwODA4MCIsbGlnaHRjeWFuOiIjZTBmZmZmIixsaWdodGdvbGRlbnJvZHllbGxvdzoiI2ZhZmFkMiIsbGlnaHRncmV5OiIjZDNkM2QzIixsaWdodGdyZWVuOiIjOTBlZTkwIiwKbGlnaHRwaW5rOiIjZmZiNmMxIixsaWdodHNhbG1vbjoiI2ZmYTA3YSIsbGlnaHRzZWFncmVlbjoiIzIwYjJhYSIsbGlnaHRza3libHVlOiIjODdjZWZhIixsaWdodHNsYXRlYmx1ZToiIzg0NzBmZiIsbGlnaHRzbGF0ZWdyYXk6IiM3Nzg4OTkiLGxpZ2h0c3RlZWxibHVlOiIjYjBjNGRlIixsaWdodHllbGxvdzoiI2ZmZmZlMCIsbGltZToiIzAwZmYwMCIsbGltZWdyZWVuOiIjMzJjZDMyIixsaW5lbjoiI2ZhZjBlNiIsbWFnZW50YToiI2ZmMDBmZiIsbWFyb29uOiIjODAwMDAwIixtZWRpdW1hcXVhbWFyaW5lOiIjNjZjZGFhIixtZWRpdW1ibHVlOiIjMDAwMGNkIixtZWRpdW1vcmNoaWQ6IiNiYTU1ZDMiLG1lZGl1bXB1cnBsZToiIzkzNzBkOCIsbWVkaXVtc2VhZ3JlZW46IiMzY2IzNzEiLG1lZGl1bXNsYXRlYmx1ZToiIzdiNjhlZSIsbWVkaXVtc3ByaW5nZ3JlZW46IiMwMGZhOWEiLG1lZGl1bXR1cnF1b2lzZToiIzQ4ZDFjYyIsbWVkaXVtdmlvbGV0cmVkOiIjYzcxNTg1IixtaWRuaWdodGJsdWU6IiMxOTE5NzAiLAptaW50Y3JlYW06IiNmNWZmZmEiLG1pc3R5cm9zZToiI2ZmZTRlMSIsbW9jY2FzaW46IiNmZmU0YjUiLG5hdmFqb3doaXRlOiIjZmZkZWFkIixuYXZ5OiIjMDAwMDgwIixvbGRsYWNlOiIjZmRmNWU2IixvbGl2ZToiIzgwODAwMCIsb2xpdmVkcmFiOiIjNmI4ZTIzIixvcmFuZ2U6IiNmZmE1MDAiLG9yYW5nZXJlZDoiI2ZmNDUwMCIsb3JjaGlkOiIjZGE3MGQ2IixwYWxlZ29sZGVucm9kOiIjZWVlOGFhIixwYWxlZ3JlZW46IiM5OGZiOTgiLHBhbGV0dXJxdW9pc2U6IiNhZmVlZWUiLHBhbGV2aW9sZXRyZWQ6IiNkODcwOTMiLHBhcGF5YXdoaXA6IiNmZmVmZDUiLHBlYWNocHVmZjoiI2ZmZGFiOSIscGVydToiI2NkODUzZiIscGluazoiI2ZmYzBjYiIscGx1bToiI2RkYTBkZCIscG93ZGVyYmx1ZToiI2IwZTBlNiIscHVycGxlOiIjODAwMDgwIixyZWQ6IiNmZjAwMDAiLHJvc3licm93bjoiI2JjOGY4ZiIscm95YWxibHVlOiIjNDE2OWUxIixzYWRkbGVicm93bjoiIzhiNDUxMyIsc2FsbW9uOiIjZmE4MDcyIiwKc2FuZHlicm93bjoiI2Y0YTQ2MCIsc2VhZ3JlZW46IiMyZThiNTciLHNlYXNoZWxsOiIjZmZmNWVlIixzaWVubmE6IiNhMDUyMmQiLHNpbHZlcjoiI2MwYzBjMCIsc2t5Ymx1ZToiIzg3Y2VlYiIsc2xhdGVibHVlOiIjNmE1YWNkIixzbGF0ZWdyYXk6IiM3MDgwOTAiLHNub3c6IiNmZmZhZmEiLHNwcmluZ2dyZWVuOiIjMDBmZjdmIixzdGVlbGJsdWU6IiM0NjgyYjQiLHRhbjoiI2QyYjQ4YyIsdGVhbDoiIzAwODA4MCIsdGhpc3RsZToiI2Q4YmZkOCIsdG9tYXRvOiIjZmY2MzQ3Iix0dXJxdW9pc2U6IiM0MGUwZDAiLHZpb2xldDoiI2VlODJlZSIsdmlvbGV0cmVkOiIjZDAyMDkwIix3aGVhdDoiI2Y1ZGViMyIsd2hpdGU6IiNmZmZmZmYiLHdoaXRlc21va2U6IiNmNWY1ZjUiLHllbGxvdzoiI2ZmZmYwMCIseWVsbG93Z3JlZW46IiM5YWNkMzIifTtyZXR1cm4gYi5uYW1lcz1sfSk7bihiLCJtb2R1bGVzL2Jvb3N0L2Jvb3N0LmpzIixbYlsicGFydHMvR2xvYmFscy5qcyJdLGJbIm1vZHVsZXMvYm9vc3QvYm9vc3QtdXRpbHMuanMiXSwKYlsibW9kdWxlcy9ib29zdC9ib29zdC1pbml0LmpzIl0sYlsicGFydHMvVXRpbGl0aWVzLmpzIl1dLGZ1bmN0aW9uKGIsbCxuLG0pe209bS5lcnJvcjtsPWwuaGFzV2ViR0xTdXBwb3J0O2woKT9uKCk6InVuZGVmaW5lZCIhPT10eXBlb2YgYi5pbml0Q2FudmFzQm9vc3Q/Yi5pbml0Q2FudmFzQm9vc3QoKTptKDI2KX0pO24oYiwibWFzdGVycy9tb2R1bGVzL2Jvb3N0LnNyYy5qcyIsW10sZnVuY3Rpb24oKXt9KX0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1ib29zdC5qcy5tYXA="></script>
|
|
<script src="data:application/javascript;base64,SFRNTFdpZGdldHMud2lkZ2V0KHsNCg0KICBuYW1lOiAnaGlnaGNoYXJ0JywNCg0KICB0eXBlOiAnb3V0cHV0JywNCg0KICBpbml0aWFsaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgew0KDQogICAgcmV0dXJuIHsNCiAgICAgIC8vIFRPRE86IGFkZCBpbnN0YW5jZSBmaWVsZHMgYXMgcmVxdWlyZWQNCiAgICB9Ow0KDQogIH0sDQoNCiAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKGVsLCB4LCBpbnN0YW5jZSkgew0KICAgIA0KICAgIGlmKHguZGVidWcpIHsNCiAgICAgIHdpbmRvdy54Y2xvbmUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHgpKTsNCiAgICAgIHdpbmRvdy5lbGNsb25lID0gJChlbCk7DQogICAgICBjb25zb2xlLmxvZyhlbCk7DQogICAgICBjb25zb2xlLmxvZygiaGNfb3B0cyIsIHguaGNfb3B0cyk7DQogICAgICBjb25zb2xlLmxvZygidGhlbWUiLCB4LnRoZW1lKTsNCiAgICAgIGNvbnNvbGUubG9nKCJjb25mX29wdHMiLCB4LmNvbmZfb3B0cyk7DQogICAgfQ0KDQogICAgaWYoeC5mb250cyAhPT0gdW5kZWZpbmVkKSB7DQogICAgICANCiAgICAgIHguZm9udHMgPSAoKHR5cGVvZih4LmZvbnRzKSA9PSAic3RyaW5nIikgPyBbeC5mb250c10gOiB4LmZvbnRzKTsNCiAgICANCiAgICAgIHguZm9udHMuZm9yRWFjaChmdW5jdGlvbihzKXsNCiAgICAgICAgLyogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80NzI0NjA2ICovDQogICAgICAgIHZhciB1cmxmb250ID0gJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT0nICsgczsNCiAgICAgICAgaWYgKCEkKCJsaW5rW2hyZWY9JyIgKyB1cmxmb250ICsgIiddIikubGVuZ3RoKSB7DQogICAgICAgICAgJCgnPGxpbmsgaHJlZj0iJyArIHVybGZvbnQgKyAnIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4nKS5hcHBlbmRUbygiaGVhZCIpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgfSk7DQogICAgICANCiAgICB9DQogICAgDQogICAgUmVzZXRIaWdoY2hhcnRzT3B0aW9ucygpOw0KICAgIA0KICAgIGlmKHgudGhlbWUgIT09IG51bGwpIHsNCiAgICAgIA0KICAgICAgaWYoeC5kZWJ1ZykgY29uc29sZS5sb2coImFkZGluZyBUSEVNRSIpOw0KICAgICAgDQogICAgICBIaWdoY2hhcnRzLnNldE9wdGlvbnMoeC50aGVtZSk7DQogICAgICANCiAgICB9DQogICAgDQogICAgaWYoKHgudGhlbWUgJiYgeC50aGVtZS5jaGFydC5kaXZCYWNrZ3JvdW5kSW1hZ2UgIT09IHVuZGVmaW5lZCkgfA0KICAgICAgICAgKHguaGNfb3B0cy5jaGFydCAgJiYgeC5oY19vcHRzLmNoYXJ0LmRpdkJhY2tncm91bmRJbWFnZSAhPT0gdW5kZWZpbmVkKSkgew0KICAgICAgICAgICANCiAgICAgIGlmKHguZGVidWcpIGNvbnNvbGUubG9nKCJhZGRpbmcgQmFja2dyb3VuZEltYWdlIik7ICAgICANCiAgICAgICAgICAgDQogICAgICB2YXIgYmtncm5kID0geC50aGVtZS5jaGFydC5kaXZCYWNrZ3JvdW5kSW1hZ2UgfHwgeC5oY19vcHRzLmNoYXJ0LmRpdkJhY2tncm91bmRJbWFnZTsNCiAgICAgIA0KICAgICAgSGlnaGNoYXJ0cy53cmFwKEhpZ2hjaGFydHMuQ2hhcnQucHJvdG90eXBlLCAiZ2V0Q29udGFpbmVyIiwgZnVuY3Rpb24gKHByb2NlZWQpIHsNCiAgICAgICAgDQogICAgICAgIHByb2NlZWQuY2FsbCh0aGlzKTsNCiAgICAgICAgDQogICAgICAgICQoIiMiICsgZWwuaWQpLmNzcygiYmFja2dyb3VuZC1pbWFnZSIsICJ1cmwoIiArIGJrZ3JuZCArICIpIik7DQogICAgICAgICQoIiMiICsgZWwuaWQpLmNzcygiLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemUiLCAiY292ZXIiKTsNCiAgICAgICAgJCgiIyIgKyBlbC5pZCkuY3NzKCItbW96LWJhY2tncm91bmQtc2l6ZSIsICJjb3ZlciIpOw0KICAgICAgICAkKCIjIiArIGVsLmlkKS5jc3MoIi1vLWJhY2tncm91bmQtc2l6ZSIsICJjb3ZlciIpOw0KICAgICAgICAkKCIjIiArIGVsLmlkKS5jc3MoImJhY2tncm91bmQtc2l6ZSIsICJjb3ZlciIpOw0KICAgICAgICANCiAgICAgIH0pOw0KICAgICAgDQogICAgfQ0KICAgIA0KICAgIEhpZ2hjaGFydHMuc2V0T3B0aW9ucyh4LmNvbmZfb3B0cyk7DQogICAgDQogICAgaWYoeC50eXBlID09ICJjaGFydCIpIHsNCiAgICAgIGlmKHguZGVidWcpIGNvbnNvbGUubG9nKCJjaGFydGluZyBDSEFSVCIpOw0KICAgICAgJCgiIyIgKyBlbC5pZCkuaGlnaGNoYXJ0cyh4LmhjX29wdHMpOw0KICAgIH0gZWxzZSBpZiAoeC50eXBlID09ICJzdG9jayIpIHsNCiAgICAgIGlmKHguZGVidWcpIGNvbnNvbGUubG9nKCJjaGFydGluZyBTVE9DSyIpOw0KICAgICAgJCgiIyIgKyBlbC5pZCkuaGlnaGNoYXJ0cygnU3RvY2tDaGFydCcsIHguaGNfb3B0cyk7ICANCiAgICB9IGVsc2UgaWYgKHgudHlwZSA9PSAibWFwIil7DQogICAgICBpZih4LmRlYnVnKSBjb25zb2xlLmxvZygiY2hhcnRpbmcgTUFQIik7DQoNCiAgICAgIHguaGNfb3B0cy5zZXJpZXMgPSB4LmhjX29wdHMuc2VyaWVzLm1hcChmdW5jdGlvbihlKXsNCiAgICAgICAgaWYoZS5nZW9qc29uID09PSB0cnVlKSB7DQogICAgICAgICAgaWYoeC5kZWJ1ZykgY29uc29sZS5sb2coImdlb2pzb25cblx0IiwgZS50eXBlLCAiXG5cdCIsIHR5cGVvZihlLnNlcmllcykpOw0KICAgICAgICAgIGUuZGF0YSA9IEhpZ2hjaGFydHMuZ2VvanNvbihlLmRhdGEsIGUudHlwZSk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuIGU7DQogICAgICB9KTsNCiAgICAgIA0KICAgICAgJCgiIyIgKyBlbC5pZCkuaGlnaGNoYXJ0cygnTWFwJywgeC5oY19vcHRzKTsgDQogICAgICANCiAgICAgIGlmKHguaGNfb3B0cy5tYXBOYXZpZ2F0aW9uICE9PSB1bmRlZmluZWQgJiYgeC5oY19vcHRzLm1hcE5hdmlnYXRpb24uZW5hYmxlZCA9PT0gdHJ1ZSl7DQogICAgICAgIC8qIGlmIGhhdmUgbmF2aWdhdGlvbiBvcHRpb24gYW5kIGVuYWJsZWQgdHJ1ZTogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy83NjAwNDU0ICovDQogICAgICAgICQoIiMiICsgZWwuaWQpLmJpbmQoICdtb3VzZXdoZWVsIERPTU1vdXNlU2Nyb2xsJywgZnVuY3Rpb24gKCBlICkgew0KICAgICAgICAgIHZhciBlMCA9IGUub3JpZ2luYWxFdmVudCwNCiAgICAgICAgICBkZWx0YSA9IGUwLndoZWVsRGVsdGEgfHwgLWUwLmRldGFpbDsNCiAgICAgICAgICB0aGlzLnNjcm9sbFRvcCArPSAoIGRlbHRhIDwgMCA/IDEgOiAtMSApICogMzA7DQogICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KDQogICAgICAgIH0pOw0KICAgICAgICANCiAgICAgIH0NCiAgICAgIA0KICAgIH0NCiAgICANCiAgICBpZih4LmhjX29wdHMubW90aW9uICE9PSB1bmRlZmluZWQpIHsNCiAgICAgIA0KICAgICAgJCgiIyIgKyBlbC5pZCkuY3NzKHsicG9zaXRpb24iIDogInJlbGF0aXZlIiB9KTsNCiAgICAgIA0KICAgICAgaWYoeC5kZWJ1ZykgY29uc29sZS5sb2coInNldHRpbmcgTU9USU9OIG9wdGlvbnMiKTsNCiAgICAgIA0KICAgICAgdmFyIHBjID0gJCgkKCIjIiArIGVsLmlkKS5maW5kKCIjcGxheS1jb250cm9scyIpWzBdKTsNCiAgICAgIA0KICAgICAgdmFyIGN0ID0geC50aGVtZS5jaGFydDsNCiAgICAgIA0KICAgICAgaWYoY3QuYmFja2dyb3VuZENvbG9yICE9PSB1bmRlZmluZWQpICQocGMuZmluZCgiI3BsYXktcGF1c2UtYnV0dG9uIilbMF0pLmNzcyh7YmFja2dyb3VuZENvbG9yIDogeC50aGVtZS5jaGFydC5iYWNrZ3JvdW5kQ29sb3J9KTsNCiAgICAgIGlmKGN0LnN0eWxlICE9PSB1bmRlZmluZWQpICAkKHBjLmZpbmQoIiNwbGF5LW91dHB1dCIpWzBdKS5jc3MoeC50aGVtZS5jaGFydC5zdHlsZSk7DQogICAgICBpZihjdC5zdHlsZSAhPT0gdW5kZWZpbmVkICYmIGN0LnN0eWxlLmNvbG9yICE9PSB1bmRlZmluZWQpICQocGMuZmluZCgiI3BsYXktcGF1c2UtYnV0dG9uIilbMF0pLmNzcyh7Y29sb3IgOiB4LnRoZW1lLmNoYXJ0LnN0eWxlLmNvbG9yfSk7DQogICAgICANCiAgICAgIA0KICAgIH0gDQogICAgDQogIH0sDQoNCiAgcmVzaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCwgaW5zdGFuY2UpIHsNCiAgICANCiAgICAvKiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE4NDQ1Nzg0LyAqLw0KICAgIHZhciBjaGFydCA9ICQoIiMiICtlbC5pZCkuaGlnaGNoYXJ0cygpOw0KICAgIA0KICAgIGlmIChjaGFydCAmJiBjaGFydC5vcHRpb25zLmNoYXJ0LnJlZmxvdyA9PT0gdHJ1ZSkgeyAgLy8gX2NoZWNrIGZvciByZWZsb3cgb3B0aW9uXw0KICAgICAgdmFyIHcgPSBjaGFydC5yZW5kZXJUby5jbGllbnRXaWR0aDsgDQogICAgICB2YXIgaCA9IGNoYXJ0LnJlbmRlclRvLmNsaWVudEhlaWdodDsgDQogICAgICBjaGFydC5zZXRTaXplKHcsIGgpOyANCiAgICB9DQogICAgDQoNCiAgfQ0KDQp9KTsNCg=="></script>
|
|
<link href="data:text/css,%2Edt%2Dcrosstalk%2Dfade%20%7B%0Aopacity%3A%200%2E2%3B%0A%7D%0Ahtml%20body%20div%2EDTS%20div%2EdataTables%5FscrollBody%20%7B%0Abackground%3A%20none%3B%0A%7D%0A%0Atable%2EdataTable%20%7B%0Adisplay%3A%20table%3B%0A%7D%0A" rel="stylesheet" />
|
|
<script src="data:application/javascript;base64,KGZ1bmN0aW9uKCkgewoKLy8gc29tZSBoZWxwZXIgZnVuY3Rpb25zOiB1c2luZyBhIGdsb2JhbCBvYmplY3QgRFRXaWRnZXQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZAovLyBpbiBKUygpIGNvZGUsIGUuZy4gZGF0YXRhYmxlKG9wdGlvbnMgPSBsaXN0KGZvbyA9IEpTKCdjb2RlJykpKTsgdW5saWtlIFIncwovLyBkeW5hbWljIHNjb3BpbmcsIHdoZW4gJ2NvZGUnIGlzIGV2YWwoKSdlZCwgSmF2YVNjcmlwdCBkb2VzIG5vdCBrbm93IG9iamVjdHMKLy8gZnJvbSB0aGUgInBhcmVudCBmcmFtZSIsIGUuZy4gSlMoJ0RUV2lkZ2V0Jykgd2lsbCBub3Qgd29yayB1bmxlc3MgaXQgd2FzIG1hZGUKLy8gYSBnbG9iYWwgb2JqZWN0CnZhciBEVFdpZGdldCA9IHt9OwoKLy8gMTIzNDU2NjY2Ljc4OTAgLT4gMTIzLDQ1Niw2NjYuNzg5MAp2YXIgbWFya0ludGVydmFsID0gZnVuY3Rpb24oZCwgZGlnaXRzLCBpbnRlcnZhbCwgbWFyaywgZGVjTWFyaywgcHJlY2lzaW9uKSB7CiAgeCA9IHByZWNpc2lvbiA/IGQudG9QcmVjaXNpb24oZGlnaXRzKSA6IGQudG9GaXhlZChkaWdpdHMpOwogIGlmICghL14tP1tcZC5dKyQvLnRlc3QoeCkpIHJldHVybiB4OwogIHZhciB4diA9IHguc3BsaXQoJy4nKTsKICBpZiAoeHYubGVuZ3RoID4gMikgcmV0dXJuIHg7ICAvLyBzaG91bGQgaGF2ZSBhdCBtb3N0IG9uZSBkZWNpbWFsIHBvaW50CiAgeHZbMF0gPSB4dlswXS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcQig/PShcXGR7JyArIGludGVydmFsICsgJ30pKyg/IVxcZCkpJywgJ2cnKSwgbWFyayk7CiAgcmV0dXJuIHh2LmpvaW4oZGVjTWFyayk7Cn07CgpEVFdpZGdldC5mb3JtYXRDdXJyZW5jeSA9IGZ1bmN0aW9uKGRhdGEsIGN1cnJlbmN5LCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrLCBiZWZvcmUpIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YSk7CiAgaWYgKGlzTmFOKGQpKSByZXR1cm4gJyc7CiAgdmFyIHJlcyA9IG1hcmtJbnRlcnZhbChkLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrKTsKICByZXMgPSBiZWZvcmUgPyAoL14tLy50ZXN0KHJlcykgPyAnLScgKyBjdXJyZW5jeSArIHJlcy5yZXBsYWNlKC9eLS8sICcnKSA6IGN1cnJlbmN5ICsgcmVzKSA6CiAgICByZXMgKyBjdXJyZW5jeTsKICByZXR1cm4gcmVzOwp9OwoKRFRXaWRnZXQuZm9ybWF0U3RyaW5nID0gZnVuY3Rpb24oZGF0YSwgcHJlZml4LCBzdWZmaXgpIHsKICB2YXIgZCA9IGRhdGE7CiAgaWYgKGQgPT09IG51bGwpIHJldHVybiAnJzsKICByZXR1cm4gcHJlZml4ICsgZCArIHN1ZmZpeDsKfTsKCkRUV2lkZ2V0LmZvcm1hdFBlcmNlbnRhZ2UgPSBmdW5jdGlvbihkYXRhLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrKSB7CiAgdmFyIGQgPSBwYXJzZUZsb2F0KGRhdGEpOwogIGlmIChpc05hTihkKSkgcmV0dXJuICcnOwogIHJldHVybiBtYXJrSW50ZXJ2YWwoZCAqIDEwMCwgZGlnaXRzLCBpbnRlcnZhbCwgbWFyaywgZGVjTWFyaykgKyAnJSc7Cn07CgpEVFdpZGdldC5mb3JtYXRSb3VuZCA9IGZ1bmN0aW9uKGRhdGEsIGRpZ2l0cywgaW50ZXJ2YWwsIG1hcmssIGRlY01hcmspIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YSk7CiAgaWYgKGlzTmFOKGQpKSByZXR1cm4gJyc7CiAgcmV0dXJuIG1hcmtJbnRlcnZhbChkLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrKTsKfTsKCkRUV2lkZ2V0LmZvcm1hdFNpZ25pZiA9IGZ1bmN0aW9uKGRhdGEsIGRpZ2l0cywgaW50ZXJ2YWwsIG1hcmssIGRlY01hcmspIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YSk7CiAgaWYgKGlzTmFOKGQpKSByZXR1cm4gJyc7CiAgcmV0dXJuIG1hcmtJbnRlcnZhbChkLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrLCB0cnVlKTsKfTsKCkRUV2lkZ2V0LmZvcm1hdERhdGUgPSBmdW5jdGlvbihkYXRhLCBtZXRob2QsIHBhcmFtcykgewogIHZhciBkID0gZGF0YTsKICBpZiAoZCA9PT0gbnVsbCkgcmV0dXJuICcnOwogIC8vIChuZXcgRGF0ZSgnMjAxNS0xMC0yOCcpKS50b0RhdGVTdHJpbmcoKSBtYXkgcmV0dXJuIDIwMTUtMTAtMjcgYmVjYXVzZSB0aGUKICAvLyBhY3R1YWwgdGltZSBjcmVhdGVkIGNvdWxkIGJlIGxpa2UgJ1R1ZSBPY3QgMjcgMjAxNSAxOTowMDowMCBHTVQtMDUwMCAoQ0RUKScsCiAgLy8gaS5lLiB0aGUgZGF0ZS1vbmx5IHN0cmluZyBpcyB0cmVhdGVkIGFzIFVUQyB0aW1lIGluc3RlYWQgb2YgbG9jYWwgdGltZQogIGlmICgobWV0aG9kID09PSAndG9EYXRlU3RyaW5nJyB8fCBtZXRob2QgPT09ICd0b0xvY2FsZURhdGVTdHJpbmcnKSAmJiAvXlxkezQsfVxEXGR7Mn1cRFxkezJ9JC8udGVzdChkKSkgewogICAgZCA9IGQuc3BsaXQoL1xELyk7CiAgICBkID0gbmV3IERhdGUoZFswXSwgZFsxXSAtIDEsIGRbMl0pOwogIH0gZWxzZSB7CiAgICBkID0gbmV3IERhdGUoZCk7CiAgfQogIHJldHVybiBkW21ldGhvZF0uYXBwbHkoZCwgcGFyYW1zKTsKfTsKCndpbmRvdy5EVFdpZGdldCA9IERUV2lkZ2V0OwoKdmFyIHRyYW5zcG9zZUFycmF5MkQgPSBmdW5jdGlvbihhKSB7CiAgcmV0dXJuIGEubGVuZ3RoID09PSAwID8gYSA6IEhUTUxXaWRnZXRzLnRyYW5zcG9zZUFycmF5MkQoYSk7Cn07Cgp2YXIgY3Jvc3N0YWxrUGx1Z2luc0luc3RhbGxlZCA9IGZhbHNlOwoKZnVuY3Rpb24gbWF5YmVJbnN0YWxsQ3Jvc3N0YWxrUGx1Z2lucygpIHsKICBpZiAoY3Jvc3N0YWxrUGx1Z2luc0luc3RhbGxlZCkKICAgIHJldHVybjsKICBjcm9zc3RhbGtQbHVnaW5zSW5zdGFsbGVkID0gdHJ1ZTsKCiAgJC5mbi5kYXRhVGFibGUuZXh0LmFmbkZpbHRlcmluZy5wdXNoKAogICAgZnVuY3Rpb24ob1NldHRpbmdzLCBhRGF0YSwgaURhdGFJbmRleCkgewogICAgICB2YXIgY3RmaWx0ZXIgPSBvU2V0dGluZ3MublRhYmxlLmN0ZmlsdGVyOwogICAgICBpZiAoY3RmaWx0ZXIgJiYgIWN0ZmlsdGVyW2lEYXRhSW5kZXhdKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgIHZhciBjdHNlbGVjdCA9IG9TZXR0aW5ncy5uVGFibGUuY3RzZWxlY3Q7CiAgICAgIGlmIChjdHNlbGVjdCAmJiAhY3RzZWxlY3RbaURhdGFJbmRleF0pCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgKTsKfQoKSFRNTFdpZGdldHMud2lkZ2V0KHsKICBuYW1lOiAiZGF0YXRhYmxlcyIsCiAgdHlwZTogIm91dHB1dCIsCiAgcmVuZGVyT25OdWxsVmFsdWU6IHRydWUsCiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICQoZWwpLmh0bWwoJyZuYnNwOycpOwogICAgcmV0dXJuIHsKICAgICAgZGF0YTogbnVsbCwKICAgICAgY3RmaWx0ZXJIYW5kbGU6IG5ldyBjcm9zc3RhbGsuRmlsdGVySGFuZGxlKCksCiAgICAgIGN0ZmlsdGVyU3Vic2NyaXB0aW9uOiBudWxsLAogICAgICBjdHNlbGVjdEhhbmRsZTogbmV3IGNyb3NzdGFsay5TZWxlY3Rpb25IYW5kbGUoKSwKICAgICAgY3RzZWxlY3RTdWJzY3JpcHRpb246IG51bGwKICAgIH07CiAgfSwKICByZW5kZXJWYWx1ZTogZnVuY3Rpb24oZWwsIGRhdGEsIGluc3RhbmNlKSB7CiAgICBpZiAoZWwub2Zmc2V0V2lkdGggPT09IDAgfHwgZWwub2Zmc2V0SGVpZ2h0ID09PSAwKSB7CiAgICAgIGluc3RhbmNlLmRhdGEgPSBkYXRhOwogICAgICByZXR1cm47CiAgICB9CiAgICBpbnN0YW5jZS5kYXRhID0gbnVsbDsKICAgIHZhciAkZWwgPSAkKGVsKTsKICAgICRlbC5lbXB0eSgpOwoKICAgIGlmIChkYXRhID09PSBudWxsKSB7CiAgICAgICRlbC5hcHBlbmQoJyZuYnNwOycpOwogICAgICAvLyBjbGVhciBwcmV2aW91cyBTaGlueSBpbnB1dHMgKGlmIGFueSkKICAgICAgZm9yICh2YXIgaSBpbiBpbnN0YW5jZS5jbGVhcklucHV0cykgaW5zdGFuY2UuY2xlYXJJbnB1dHNbaV0oKTsKICAgICAgaW5zdGFuY2UuY2xlYXJJbnB1dHMgPSB7fTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBjcm9zc3RhbGtPcHRpb25zID0gZGF0YS5jcm9zc3RhbGtPcHRpb25zOwogICAgaWYgKCFjcm9zc3RhbGtPcHRpb25zKSBjcm9zc3RhbGtPcHRpb25zID0gewogICAgICAna2V5JzogbnVsbCwgJ2dyb3VwJzogbnVsbAogICAgfTsKICAgIGlmIChjcm9zc3RhbGtPcHRpb25zLmdyb3VwKSB7CiAgICAgIG1heWJlSW5zdGFsbENyb3NzdGFsa1BsdWdpbnMoKTsKICAgICAgaW5zdGFuY2UuY3RmaWx0ZXJIYW5kbGUuc2V0R3JvdXAoY3Jvc3N0YWxrT3B0aW9ucy5ncm91cCk7CiAgICAgIGluc3RhbmNlLmN0c2VsZWN0SGFuZGxlLnNldEdyb3VwKGNyb3NzdGFsa09wdGlvbnMuZ3JvdXApOwogICAgfQoKICAgIC8vIGlmIHdlIGFyZSBpbiB0aGUgdmlld2VyIHRoZW4gd2UgYWx3YXlzIHdhbnQgdG8gZmlsbENvbnRhaW5lciBhbmQKICAgIC8vIGFuZCBhdXRvSGlkZU5hdmlnYXRpb24gKHVubGVzcyB0aGUgdXNlciBoYXMgZXhwbGljaXRseSBzZXQgdGhlc2UpCiAgICBpZiAod2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUpIHsKICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KCJmaWxsQ29udGFpbmVyIikpCiAgICAgICAgZGF0YS5maWxsQ29udGFpbmVyID0gdHJ1ZTsKICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KCJhdXRvSGlkZU5hdmlnYXRpb24iKSkKICAgICAgICBkYXRhLmF1dG9IaWRlTmF2aWdhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLy8gcHJvcGFnYXRlIGZpbGxDb250YWluZXIgdG8gaW5zdGFuY2UgKHNvIHdlIGhhdmUgaXQgaW4gcmVzaXplKQogICAgaW5zdGFuY2UuZmlsbENvbnRhaW5lciA9IGRhdGEuZmlsbENvbnRhaW5lcjsKCiAgICB2YXIgY2VsbHMgPSBkYXRhLmRhdGE7CgogICAgaWYgKGNlbGxzIGluc3RhbmNlb2YgQXJyYXkpIGNlbGxzID0gdHJhbnNwb3NlQXJyYXkyRChjZWxscyk7CgogICAgJGVsLmFwcGVuZChkYXRhLmNvbnRhaW5lcik7CiAgICB2YXIgJHRhYmxlID0gJGVsLmZpbmQoJ3RhYmxlJyk7CiAgICBpZiAoZGF0YS5jbGFzcykgJHRhYmxlLmFkZENsYXNzKGRhdGEuY2xhc3MpOwogICAgaWYgKGRhdGEuY2FwdGlvbikgJHRhYmxlLnByZXBlbmQoZGF0YS5jYXB0aW9uKTsKCiAgICBpZiAoIWRhdGEuc2VsZWN0aW9uKSBkYXRhLnNlbGVjdGlvbiA9IHsKICAgICAgbW9kZTogJ25vbmUnLCBzZWxlY3RlZDogbnVsbCwgdGFyZ2V0OiAncm93Jywgc2VsZWN0YWJsZTogbnVsbAogICAgfTsKICAgIGlmIChIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgZGF0YS5zZWxlY3Rpb24ubW9kZSAhPT0gJ25vbmUnICYmCiAgICAgICAgZGF0YS5zZWxlY3Rpb24udGFyZ2V0ID09PSAncm93K2NvbHVtbicpIHsKICAgICAgaWYgKCR0YWJsZS5jaGlsZHJlbigndGZvb3QnKS5sZW5ndGggPT09IDApIHsKICAgICAgICAkdGFibGUuYXBwZW5kKCQoJzx0Zm9vdD4nKSk7CiAgICAgICAgJHRhYmxlLmZpbmQoJ3RoZWFkIHRyJykuY2xvbmUoKS5hcHBlbmRUbygkdGFibGUuZmluZCgndGZvb3QnKSk7CiAgICAgIH0KICAgIH0KCiAgICAvLyBjb2x1bW4gZmlsdGVycwogICAgdmFyIGZpbHRlclJvdzsKICAgIHN3aXRjaCAoZGF0YS5maWx0ZXIpIHsKICAgICAgY2FzZSAndG9wJzoKICAgICAgICAkdGFibGUuY2hpbGRyZW4oJ3RoZWFkJykuYXBwZW5kKGRhdGEuZmlsdGVySFRNTCk7CiAgICAgICAgZmlsdGVyUm93ID0gJHRhYmxlLmZpbmQoJ3RoZWFkIHRyOmxhc3QgdGQnKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnYm90dG9tJzoKICAgICAgICBpZiAoJHRhYmxlLmNoaWxkcmVuKCd0Zm9vdCcpLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgJHRhYmxlLmFwcGVuZCgkKCc8dGZvb3Q+JykpOwogICAgICAgIH0KICAgICAgICAkdGFibGUuY2hpbGRyZW4oJ3Rmb290JykucHJlcGVuZChkYXRhLmZpbHRlckhUTUwpOwogICAgICAgIGZpbHRlclJvdyA9ICR0YWJsZS5maW5kKCd0Zm9vdCB0cjpmaXJzdCB0ZCcpOwogICAgICAgIGJyZWFrOwogICAgfQoKICAgIHZhciBvcHRpb25zID0geyBzZWFyY2hEZWxheTogMTAwMCB9OwogICAgaWYgKGNlbGxzICE9PSBudWxsKSAkLmV4dGVuZChvcHRpb25zLCB7CiAgICAgIGRhdGE6IGNlbGxzCiAgICB9KTsKCiAgICAvLyBvcHRpb25zIGZvciBmaWxsQ29udGFpbmVyCiAgICB2YXIgYm9vdHN0cmFwQWN0aXZlID0gdHlwZW9mKCQuZm4ucG9wb3ZlcikgIT0gJ3VuZGVmaW5lZCc7CiAgICBpZiAoaW5zdGFuY2UuZmlsbENvbnRhaW5lcikgewoKICAgICAgLy8gZm9yY2Ugc2Nyb2xsWC9zY3JvbGxZIGFuZCB0dXJuIG9mZiBhdXRvV2lkdGgKICAgICAgb3B0aW9ucy5zY3JvbGxYID0gdHJ1ZTsKICAgICAgb3B0aW9ucy5zY3JvbGxZID0gIjEwMHB4IjsgLy8gY2FuIGJlIGFueSB2YWx1ZSwgd2UnbGwgYWRqdXN0IGJlbG93CgogICAgICAvLyBpZiB3ZSBhcmVuJ3QgcGFnaW5hdGluZyB0aGVuIG1vdmUgYXJvdW5kIHRoZSBpbmZvL2ZpbHRlciBjb250cm9scwogICAgICAvLyB0byBzYXZlIHNwYWNlIGF0IHRoZSBib3R0b20gYW5kIHJlcGhyYXNlIHRoZSBpbmZvIGNhbGxiYWNrCiAgICAgIGlmIChkYXRhLm9wdGlvbnMucGFnaW5nID09PSBmYWxzZSkgewoKICAgICAgICAvLyB3ZSBrbm93IGhvdyB0byBkbyB0aGlzIGNsZWFubHkgZm9yIGJvb3RzdHJhcCwgbm90IHNvIG11Y2gKICAgICAgICAvLyBmb3Igb3RoZXIgdGhlbWVzL2xheW91dHMKICAgICAgICBpZiAoYm9vdHN0cmFwQWN0aXZlKSB7CiAgICAgICAgICBvcHRpb25zLmRvbSA9ICI8J3Jvdyc8J2NvbC1zbS00J2k+PCdjb2wtc20tOCdmPj4iICsKICAgICAgICAgICAgICAgICAgICAgICAgIjwncm93JzwnY29sLXNtLTEyJ3RyPj4iOwogICAgICAgIH0KCiAgICAgICAgb3B0aW9ucy5mbkluZm9DYWxsYmFjayA9IGZ1bmN0aW9uKG9TZXR0aW5ncywgaVN0YXJ0LCBpRW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaU1heCwgaVRvdGFsLCBzUHJlKSB7CiAgICAgICAgICByZXR1cm4gTnVtYmVyKGlUb3RhbCkudG9Mb2NhbGVTdHJpbmcoKSArICIgcmVjb3JkcyI7CiAgICAgICAgfTsKICAgICAgfQogICAgfQoKICAgIC8vIGF1dG8gaGlkZSBuYXZpZ2F0aW9uIGlmIHJlcXVlc3RlZAogICAgLy8gTm90ZSwgdGhpcyBvbmx5IHdvcmtzIG9uIGNsaWVudC1zaWRlIHByb2Nlc3NpbmcgbW9kZSBhcyBvbiBzZXJ2ZXItc2lkZSwKICAgIC8vIGNlbGxzIChkYXRhLmRhdGEpIGlzIG51bGw7IEluIGFkZGl0aW9uLCB3ZSByZXF1aXJlIHRoZSBwYWdlTGVuZ3RoIG9wdGlvbgogICAgLy8gYmVpbmcgcHJvdmlkZWQgZXhwbGljaXRseSB0byBlbmFibGUgdGhpcy4gRGVzcGl0ZSB3ZSBtYXkgYmUgYWJsZSB0byBkZWR1Y2UKICAgIC8vIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHBhZ2VMZW5ndGgsIGl0IG1heSBjb21wbGljYXRlIHRoaW5ncyBzbyB3ZSdkIHJhdGhlcgogICAgLy8gcHV0IHRoaXMgcmVzcG9uc2libGl0eSB0byB1c2VycyBhbmQgd2FybiB0aGVtIG9uIHRoZSBSIHNpZGUuCiAgICBpZiAoZGF0YS5hdXRvSGlkZU5hdmlnYXRpb24gPT09IHRydWUgJiYgZGF0YS5vcHRpb25zLnBhZ2luZyAhPT0gZmFsc2UpIHsKICAgICAgLy8gc3RyaXAgYWxsIG5hdiBpZiBsZW5ndGggPj0gY2VsbHMKICAgICAgaWYgKChjZWxscyBpbnN0YW5jZW9mIEFycmF5KSAmJiBkYXRhLm9wdGlvbnMucGFnZUxlbmd0aCA+PSBjZWxscy5sZW5ndGgpCiAgICAgICAgb3B0aW9ucy5kb20gPSBib290c3RyYXBBY3RpdmUgPyAiPCdyb3cnPCdjb2wtc20tMTIndHI+PiIgOiAidCI7CiAgICAgIC8vIGFsdGVybmF0aXZlbHkgbGVhbiB0aGluZ3Mgb3V0IGZvciBmbGV4ZGFzaGJvYXJkIG1vYmlsZSBwb3J0cmFpdAogICAgICBlbHNlIGlmIChib290c3RyYXBBY3RpdmUgJiYgd2luZG93LkZsZXhEYXNoYm9hcmQgJiYgd2luZG93LkZsZXhEYXNoYm9hcmQuaXNNb2JpbGVQaG9uZSgpKQogICAgICAgIG9wdGlvbnMuZG9tID0gIjwncm93JzwnY29sLXNtLTEyJ2Y+PiIgKwogICAgICAgICAgICAgICAgICAgICAgIjwncm93JzwnY29sLXNtLTEyJ3RyPj4iICArCiAgICAgICAgICAgICAgICAgICAgICAiPCdyb3cnPCdjb2wtc20tMTIncD4+IjsKICAgIH0KCiAgICAkLmV4dGVuZCh0cnVlLCBvcHRpb25zLCBkYXRhLm9wdGlvbnMgfHwge30pOwoKICAgIHZhciBzZWFyY2hDb2xzID0gb3B0aW9ucy5zZWFyY2hDb2xzOwogICAgaWYgKHNlYXJjaENvbHMpIHsKICAgICAgc2VhcmNoQ29scyA9IHNlYXJjaENvbHMubWFwKGZ1bmN0aW9uKHgpIHsKICAgICAgICByZXR1cm4geCA9PT0gbnVsbCA/ICcnIDogeC5zZWFyY2g7CiAgICAgIH0pOwogICAgICAvLyBGSVhNRTogdGhpcyBtZWFucyBJIGRvbid0IHJlc3BlY3QgdGhlIGVzY2FwZVJlZ2V4IHNldHRpbmcKICAgICAgZGVsZXRlIG9wdGlvbnMuc2VhcmNoQ29sczsKICAgIH0KCiAgICAvLyBzZXJ2ZXItc2lkZSBwcm9jZXNzaW5nPwogICAgdmFyIHNlcnZlciA9IG9wdGlvbnMuc2VydmVyU2lkZSA9PT0gdHJ1ZTsKCiAgICAvLyB1c2UgdGhlIGRhdGFTcmMgZnVuY3Rpb24gdG8gcHJlLXByb2Nlc3MgSlNPTiBkYXRhIHJldHVybmVkIGZyb20gUgogICAgdmFyIERUX3Jvd3NfYWxsID0gW10sIERUX3Jvd3NfY3VycmVudCA9IFtdOwogICAgaWYgKHNlcnZlciAmJiBIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgdHlwZW9mIG9wdGlvbnMuYWpheCA9PT0gJ29iamVjdCcgJiYKICAgICAgICAvXnNlc3Npb25cL1tcZGEtel0rXC9kYXRhb2JqLy50ZXN0KG9wdGlvbnMuYWpheC51cmwpICYmICFvcHRpb25zLmFqYXguZGF0YVNyYykgewogICAgICBvcHRpb25zLmFqYXguZGF0YVNyYyA9IGZ1bmN0aW9uKGpzb24pIHsKICAgICAgICBEVF9yb3dzX2FsbCA9ICQubWFrZUFycmF5KGpzb24uRFRfcm93c19hbGwpOwogICAgICAgIERUX3Jvd3NfY3VycmVudCA9ICQubWFrZUFycmF5KGpzb24uRFRfcm93c19jdXJyZW50KTsKICAgICAgICB2YXIgZGF0YSA9IGpzb24uZGF0YTsKICAgICAgICBpZiAoIWNvbFJlb3JkZXJFbmFibGVkKCkpIHJldHVybiBkYXRhOwogICAgICAgIHZhciB0YWJsZSA9ICR0YWJsZS5EYXRhVGFibGUoKSwgb3JkZXIgPSB0YWJsZS5jb2xSZW9yZGVyLm9yZGVyKCksIGZsYWcgPSB0cnVlLCBpLCBqLCByb3c7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IG9yZGVyLmxlbmd0aDsgKytpKSBpZiAob3JkZXJbaV0gIT09IGkpIGZsYWcgPSBmYWxzZTsKICAgICAgICBpZiAoZmxhZykgcmV0dXJuIGRhdGE7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsKICAgICAgICAgIHJvdyA9IGRhdGFbaV0uc2xpY2UoKTsKICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBvcmRlci5sZW5ndGg7ICsraikgZGF0YVtpXVtqXSA9IHJvd1tvcmRlcltqXV07CiAgICAgICAgfQogICAgICAgIHJldHVybiBkYXRhOwogICAgICB9OwogICAgfQoKICAgIHZhciB0aGl6ID0gdGhpczsKICAgIGlmIChpbnN0YW5jZS5maWxsQ29udGFpbmVyKSAkdGFibGUub24oJ2luaXQuZHQnLCBmdW5jdGlvbihlKSB7CiAgICAgIHRoaXouZmlsbEF2YWlsYWJsZUhlaWdodChlbCwgJChlbCkuaW5uZXJIZWlnaHQoKSk7CiAgICB9KTsKICAgIC8vIElmIHRoZSBwYWdlIGNvbnRhaW5zIHNlcnZlcmFsIGRhdGF0YWJsZXMgYW5kIG9uZSBvZiB3aGljaCBlbmFibGVzIGNvbFJlb3JkZXIsCiAgICAvLyB0aGUgdGFibGUuY29sUmVvcmRlci5vcmRlcigpIGZ1bmN0aW9uIHdpbGwgZXhpc3QgYnV0IHRocm93cyBlcnJvciB3aGVuIGNhbGxlZC4KICAgIC8vIFNvIGl0IHNlZW1zIGxpa2UgdGhlIG9ubHkgd2F5IHRvIGtub3cgaWYgY29sUmVvcmRlciBpcyBlbmFibGVkIG9yIG5vdCBpcyB0bwogICAgLy8gY2hlY2sgdGhlIG9wdGlvbnMuCiAgICB2YXIgY29sUmVvcmRlckVuYWJsZWQgPSBmdW5jdGlvbigpIHsgcmV0dXJuICJjb2xSZW9yZGVyIiBpbiBvcHRpb25zOyB9OwogICAgdmFyIHRhYmxlID0gJHRhYmxlLkRhdGFUYWJsZShvcHRpb25zKTsKICAgICRlbC5kYXRhKCdkYXRhdGFibGUnLCB0YWJsZSk7CgogICAgLy8gVW5yZWdpc3RlciBwcmV2aW91cyBDcm9zc3RhbGsgZXZlbnQgc3Vic2NyaXB0aW9ucywgaWYgdGhleSBleGlzdAogICAgaWYgKGluc3RhbmNlLmN0ZmlsdGVyU3Vic2NyaXB0aW9uKSB7CiAgICAgIGluc3RhbmNlLmN0ZmlsdGVySGFuZGxlLm9mZigiY2hhbmdlIiwgaW5zdGFuY2UuY3RmaWx0ZXJTdWJzY3JpcHRpb24pOwogICAgICBpbnN0YW5jZS5jdGZpbHRlclN1YnNjcmlwdGlvbiA9IG51bGw7CiAgICB9CiAgICBpZiAoaW5zdGFuY2UuY3RzZWxlY3RTdWJzY3JpcHRpb24pIHsKICAgICAgaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUub2ZmKCJjaGFuZ2UiLCBpbnN0YW5jZS5jdHNlbGVjdFN1YnNjcmlwdGlvbik7CiAgICAgIGluc3RhbmNlLmN0c2VsZWN0U3Vic2NyaXB0aW9uID0gbnVsbDsKICAgIH0KCiAgICBpZiAoIWNyb3NzdGFsa09wdGlvbnMuZ3JvdXApIHsKICAgICAgJHRhYmxlWzBdLmN0ZmlsdGVyID0gbnVsbDsKICAgICAgJHRhYmxlWzBdLmN0c2VsZWN0ID0gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBrZXkgPSBjcm9zc3RhbGtPcHRpb25zLmtleTsKICAgICAgZnVuY3Rpb24ga2V5c1RvTWF0Y2hlcyhrZXlzKSB7CiAgICAgICAgaWYgKCFrZXlzKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIHNlbGVjdGVkS2V5cyA9IHt9OwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHNlbGVjdGVkS2V5c1trZXlzW2ldXSA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgbWF0Y2hlcyA9IHt9OwogICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBrZXkubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1trZXlbal1dKQogICAgICAgICAgICAgIG1hdGNoZXNbal0gPSB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIG1hdGNoZXM7CiAgICAgICAgfQogICAgICB9CgogICAgICBmdW5jdGlvbiBhcHBseUNyb3NzdGFsa0ZpbHRlcihlKSB7CiAgICAgICAgJHRhYmxlWzBdLmN0ZmlsdGVyID0ga2V5c1RvTWF0Y2hlcyhlLnZhbHVlKTsKICAgICAgICB0YWJsZS5kcmF3KCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2UuY3RmaWx0ZXJTdWJzY3JpcHRpb24gPSBpbnN0YW5jZS5jdGZpbHRlckhhbmRsZS5vbigiY2hhbmdlIiwgYXBwbHlDcm9zc3RhbGtGaWx0ZXIpOwogICAgICBhcHBseUNyb3NzdGFsa0ZpbHRlcih7dmFsdWU6IGluc3RhbmNlLmN0ZmlsdGVySGFuZGxlLmZpbHRlcmVkS2V5c30pOwoKICAgICAgZnVuY3Rpb24gYXBwbHlDcm9zc3RhbGtTZWxlY3Rpb24oZSkgewogICAgICAgIGlmIChlLnNlbmRlciAhPT0gaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUpIHsKICAgICAgICAgIHRhYmxlCiAgICAgICAgICAgIC5yb3dzKCcuJyArIHNlbENsYXNzLCB7c2VhcmNoOiAnYXBwbGllZCd9KQogICAgICAgICAgICAubm9kZXMoKQogICAgICAgICAgICAudG8kKCkKICAgICAgICAgICAgLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgIGlmIChzZWxlY3RlZFJvd3MpCiAgICAgICAgICAgIGNoYW5nZUlucHV0KCdyb3dzX3NlbGVjdGVkJywgc2VsZWN0ZWRSb3dzKCksIHZvaWQgMCwgdHJ1ZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZS5zZW5kZXIgIT09IGluc3RhbmNlLmN0c2VsZWN0SGFuZGxlICYmIGUudmFsdWUgJiYgZS52YWx1ZS5sZW5ndGgpIHsKICAgICAgICAgIHZhciBtYXRjaGVzID0ga2V5c1RvTWF0Y2hlcyhlLnZhbHVlKTsKCiAgICAgICAgICAvLyBwZXJzaXN0ZW50IHNlbGVjdGlvbiB3aXRoIHBsb3RseSAoJiBsZWFmbGV0KQogICAgICAgICAgdmFyIGN0T3B0cyA9IGNyb3NzdGFsay52YXIoInBsb3RseUNyb3NzdGFsa09wdHMiKS5nZXQoKSB8fCB7fTsKICAgICAgICAgIGlmIChjdE9wdHMucGVyc2lzdGVudCA9PT0gdHJ1ZSkgewogICAgICAgICAgICB2YXIgbWF0Y2hlcyA9ICQuZXh0ZW5kKG1hdGNoZXMsICR0YWJsZVswXS5jdHNlbGVjdCk7CiAgICAgICAgICB9CgogICAgICAgICAgJHRhYmxlWzBdLmN0c2VsZWN0ID0gbWF0Y2hlczsKICAgICAgICAgIHRhYmxlLmRyYXcoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKCR0YWJsZVswXS5jdHNlbGVjdCkgewogICAgICAgICAgICAkdGFibGVbMF0uY3RzZWxlY3QgPSBudWxsOwogICAgICAgICAgICB0YWJsZS5kcmF3KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGluc3RhbmNlLmN0c2VsZWN0U3Vic2NyaXB0aW9uID0gaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUub24oImNoYW5nZSIsIGFwcGx5Q3Jvc3N0YWxrU2VsZWN0aW9uKTsKICAgICAgLy8gVE9ETzogVGhpcyBuZXh0IGxpbmUgZG9lc24ndCBzZWVtIHRvIHdvcmsgd2hlbiByZW5kZXJEYXRhVGFibGUgaXMgdXNlZAogICAgICBhcHBseUNyb3NzdGFsa1NlbGVjdGlvbih7dmFsdWU6IGluc3RhbmNlLmN0c2VsZWN0SGFuZGxlLnZhbHVlfSk7CiAgICB9CgogICAgdmFyIGluQXJyYXkgPSBmdW5jdGlvbih2YWwsIGFycmF5KSB7CiAgICAgIHJldHVybiAkLmluQXJyYXkodmFsLCAkLm1ha2VBcnJheShhcnJheSkpID4gLTE7CiAgICB9OwoKICAgIC8vIGVuY29kZSArIHRvICUyQiB3aGVuIHNlYXJjaGluZyBpbiB0aGUgdGFibGUgb24gc2VydmVyIHNpZGUsIGJlY2F1c2UKICAgIC8vIHNoaW55OjpwYXJzZVF1ZXJ5U3RyaW5nKCkgdHJlYXRzICsgYXMgc3BhY2VzLCBhbmQgRGF0YVRhYmxlcyBkb2VzIG5vdAogICAgLy8gZW5jb2RlICsgdG8gJTJCIChvciAlIHRvICUyNSkgd2hlbiBzZW5kaW5nIHRoZSByZXF1ZXN0CiAgICB2YXIgZW5jb2RlX3BsdXMgPSBmdW5jdGlvbih4KSB7CiAgICAgIHJldHVybiBzZXJ2ZXIgPyB4LnJlcGxhY2UoLyUvZywgJyUyNScpLnJlcGxhY2UoL1wrL2csICclMkInKSA6IHg7CiAgICB9OwoKICAgIC8vIHNlYXJjaCB0aGUgaS10aCBjb2x1bW4KICAgIHZhciBzZWFyY2hDb2x1bW4gPSBmdW5jdGlvbihpLCB2YWx1ZSkgewogICAgICB2YXIgcmVnZXggPSBmYWxzZSwgY2kgPSB0cnVlOwogICAgICBpZiAob3B0aW9ucy5zZWFyY2gpIHsKICAgICAgICByZWdleCA9IG9wdGlvbnMuc2VhcmNoLnJlZ2V4LAogICAgICAgIGNpID0gb3B0aW9ucy5zZWFyY2guY2FzZUluc2Vuc2l0aXZlICE9PSBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gdGFibGUuY29sdW1uKGkpLnNlYXJjaChlbmNvZGVfcGx1cyh2YWx1ZSksIHJlZ2V4LCAhcmVnZXgsIGNpKTsKICAgIH07CgogICAgaWYgKGRhdGEuZmlsdGVyICE9PSAnbm9uZScpIHsKCiAgICAgIGZpbHRlclJvdy5lYWNoKGZ1bmN0aW9uKGksIHRkKSB7CgogICAgICAgIHZhciAkdGQgPSAkKHRkKSwgdHlwZSA9ICR0ZC5kYXRhKCd0eXBlJyksIGZpbHRlcjsKICAgICAgICB2YXIgJGlucHV0ID0gJHRkLmNoaWxkcmVuKCdkaXYnKS5maXJzdCgpLmNoaWxkcmVuKCdpbnB1dCcpOwogICAgICAgICRpbnB1dC5wcm9wKCdkaXNhYmxlZCcsICF0YWJsZS5zZXR0aW5ncygpWzBdLmFvQ29sdW1uc1tpXS5iU2VhcmNoYWJsZSB8fCB0eXBlID09PSAnZGlzYWJsZWQnKTsKICAgICAgICAkaW5wdXQub24oJ2lucHV0IGJsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICRpbnB1dC5uZXh0KCdzcGFuJykudG9nZ2xlKEJvb2xlYW4oJGlucHV0LnZhbCgpKSk7CiAgICAgICAgfSk7CiAgICAgICAgLy8gQm9vdHN0cmFwIHNldHMgcG9pbnRlci1ldmVudHMgdG8gbm9uZSBhbmQgd2Ugd29uJ3QgYmUgYWJsZSB0byBjbGljawogICAgICAgIC8vIHRoZSBjbGVhciBidXR0b24KICAgICAgICAkaW5wdXQubmV4dCgnc3BhbicpLmNzcygncG9pbnRlci1ldmVudHMnLCAnYXV0bycpLmhpZGUoKS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICQodGhpcykuaGlkZSgpLnByZXYoJ2lucHV0JykudmFsKCcnKS50cmlnZ2VyKCdpbnB1dCcpLmZvY3VzKCk7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIHNlYXJjaENvbDsgIC8vIHNlYXJjaCBzdHJpbmcgZm9yIHRoaXMgY29sdW1uCiAgICAgICAgaWYgKHNlYXJjaENvbHMgJiYgc2VhcmNoQ29sc1tpXSkgewogICAgICAgICAgc2VhcmNoQ29sID0gc2VhcmNoQ29sc1tpXTsKICAgICAgICAgICRpbnB1dC52YWwoc2VhcmNoQ29sKS50cmlnZ2VyKCdpbnB1dCcpOwogICAgICAgIH0KICAgICAgICB2YXIgJHggPSAkdGQuY2hpbGRyZW4oJ2RpdicpLmxhc3QoKTsKCiAgICAgICAgLy8gcmVtb3ZlIHRoZSBvdmVyZmxvdzogaGlkZGVuIGF0dHJpYnV0ZSBvZiB0aGUgc2Nyb2xsSGVhZAogICAgICAgIC8vIChvdGhlcndpc2UgdGhlIHNjcm9sbGluZyB0YWJsZSBib2R5IG9ic2N1cmVzIHRoZSBmaWx0ZXJzKQogICAgICAgIC8vIFRoZSB3b3JrYXJvdW5kIGFuZCB0aGUgZGlzY3Vzc2lvbiBmcm9tCiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3JzdHVkaW8vRFQvaXNzdWVzLzU1NCNpc3N1ZWNvbW1lbnQtNTE4MDA3MzQ3CiAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBmaWx0ZXIgc2VsZWN0aW9uIHdpbGwgbm90IGJlIGFuY2hvcmVkIHRvIHRoZSB2YWx1ZXMKICAgICAgICAvLyB3aGVuIHRoZSBjb2x1bW5zIG51bWJlciBpcyBtYW55IGFuZCBzY3JvbGxYIGlzIGVuYWJsZWQuCiAgICAgICAgdmFyIHNjcm9sbEhlYWQgPSAkKGVsKS5maW5kKCcuZGF0YVRhYmxlc19zY3JvbGxIZWFkLC5kYXRhVGFibGVzX3Njcm9sbEZvb3QnKTsKICAgICAgICB2YXIgY3NzT3ZlcmZsb3dIZWFkID0gc2Nyb2xsSGVhZC5jc3MoJ292ZXJmbG93Jyk7CiAgICAgICAgdmFyIHNjcm9sbEJvZHkgPSAkKGVsKS5maW5kKCcuZGF0YVRhYmxlc19zY3JvbGxCb2R5Jyk7CiAgICAgICAgdmFyIGNzc092ZXJmbG93Qm9keSA9IHNjcm9sbEJvZHkuY3NzKCdvdmVyZmxvdycpOwogICAgICAgIHZhciBzY3JvbGxUYWJsZSA9ICQoZWwpLmZpbmQoJy5kYXRhVGFibGVzX3Njcm9sbCcpOwogICAgICAgIHZhciBjc3NPdmVyZmxvd1RhYmxlID0gc2Nyb2xsVGFibGUuY3NzKCdvdmVyZmxvdycpOwogICAgICAgIGlmIChjc3NPdmVyZmxvd0hlYWQgPT09ICdoaWRkZW4nKSB7CiAgICAgICAgICAkeC5vbignc2hvdyBoaWRlJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoZS50eXBlID09PSAnc2hvdycpIHsKICAgICAgICAgICAgICBzY3JvbGxIZWFkLmNzcygnb3ZlcmZsb3cnLCAndmlzaWJsZScpOwogICAgICAgICAgICAgIHNjcm9sbEJvZHkuY3NzKCdvdmVyZmxvdycsICd2aXNpYmxlJyk7CiAgICAgICAgICAgICAgc2Nyb2xsVGFibGUuY3NzKCdvdmVyZmxvdy14JywgJ3Njcm9sbCcpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHNjcm9sbEhlYWQuY3NzKCdvdmVyZmxvdycsIGNzc092ZXJmbG93SGVhZCk7CiAgICAgICAgICAgICAgc2Nyb2xsQm9keS5jc3MoJ292ZXJmbG93JywgY3NzT3ZlcmZsb3dCb2R5KTsKICAgICAgICAgICAgICBzY3JvbGxUYWJsZS5jc3MoJ292ZXJmbG93LXgnLCBjc3NPdmVyZmxvd1RhYmxlKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgICAkeC5jc3MoJ3otaW5kZXgnLCAyNSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaW5BcnJheSh0eXBlLCBbJ2ZhY3RvcicsICdsb2dpY2FsJ10pKSB7CiAgICAgICAgICAkaW5wdXQub24oewogICAgICAgICAgICBjbGljazogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgJGlucHV0LnBhcmVudCgpLmhpZGUoKTsgJHguc2hvdygpLnRyaWdnZXIoJ3Nob3cnKTsgZmlsdGVyWzBdLnNlbGVjdGl6ZS5mb2N1cygpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgaWYgKCRpbnB1dC52YWwoKSA9PT0gJycpIGZpbHRlclswXS5zZWxlY3RpemUuc2V0VmFsdWUoW10pOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHZhciAkaW5wdXQyID0gJHguY2hpbGRyZW4oJ3NlbGVjdCcpOwogICAgICAgICAgZmlsdGVyID0gJGlucHV0Mi5zZWxlY3RpemUoewogICAgICAgICAgICBvcHRpb25zOiAkaW5wdXQyLmRhdGEoJ29wdGlvbnMnKS5tYXAoZnVuY3Rpb24odiwgaSkgewogICAgICAgICAgICAgIHJldHVybiAoe3RleHQ6IHYsIHZhbHVlOiB2fSk7CiAgICAgICAgICAgIH0pLAogICAgICAgICAgICBwbHVnaW5zOiBbJ3JlbW92ZV9idXR0b24nXSwKICAgICAgICAgICAgaGlkZVNlbGVjdGVkOiB0cnVlLAogICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHZhbHVlID0gW107IC8vIGNvbXBhdGliaWxpdHkgd2l0aCBqUXVlcnkgMy4wCiAgICAgICAgICAgICAgJGlucHV0LnZhbCh2YWx1ZS5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgOiAnJyk7CiAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCkgJGlucHV0LnRyaWdnZXIoJ2lucHV0Jyk7CiAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3RpdGxlJywgJGlucHV0LnZhbCgpKTsKICAgICAgICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAgICAgICB0YWJsZS5jb2x1bW4oaSkuc2VhcmNoKHZhbHVlLmxlbmd0aCA/IGVuY29kZV9wbHVzKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkgOiAnJykuZHJhdygpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyB0dXJuIG9mZiBmaWx0ZXIgaWYgbm90aGluZyBzZWxlY3RlZAogICAgICAgICAgICAgICR0ZC5kYXRhKCdmaWx0ZXInLCB2YWx1ZS5sZW5ndGggPiAwKTsKICAgICAgICAgICAgICB0YWJsZS5kcmF3KCk7ICAvLyByZWRyYXcgdGFibGUsIGFuZCBmaWx0ZXJzIHdpbGwgYmUgYXBwbGllZAogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIGlmIChzZWFyY2hDb2wpIGZpbHRlclswXS5zZWxlY3RpemUuc2V0VmFsdWUoSlNPTi5wYXJzZShzZWFyY2hDb2wpKTsKICAgICAgICAgIGZpbHRlclswXS5zZWxlY3RpemUub24oJ2JsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJHguaGlkZSgpLnRyaWdnZXIoJ2hpZGUnKTsgJGlucHV0LnBhcmVudCgpLnNob3coKTsgJGlucHV0LnRyaWdnZXIoJ2JsdXInKTsKICAgICAgICAgIH0pOwogICAgICAgICAgZmlsdGVyLm5leHQoJ2RpdicpLmNzcygnbWFyZ2luLWJvdHRvbScsICdhdXRvJyk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnY2hhcmFjdGVyJykgewogICAgICAgICAgdmFyIGZ1biA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZWFyY2hDb2x1bW4oaSwgJGlucHV0LnZhbCgpKS5kcmF3KCk7CiAgICAgICAgICB9OwogICAgICAgICAgaWYgKHNlcnZlcikgewogICAgICAgICAgICBmdW4gPSAkLmZuLmRhdGFUYWJsZS51dGlsLnRocm90dGxlKGZ1biwgb3B0aW9ucy5zZWFyY2hEZWxheSk7CiAgICAgICAgICB9CiAgICAgICAgICAkaW5wdXQub24oJ2lucHV0JywgZnVuKTsKICAgICAgICB9IGVsc2UgaWYgKGluQXJyYXkodHlwZSwgWydudW1iZXInLCAnaW50ZWdlcicsICdkYXRlJywgJ3RpbWUnXSkpIHsKICAgICAgICAgIHZhciAkeDAgPSAkeDsKICAgICAgICAgICR4ID0gJHgwLmNoaWxkcmVuKCdkaXYnKS5maXJzdCgpOwogICAgICAgICAgJHgwLmNzcyh7CiAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNmZmYnLAogICAgICAgICAgICAnYm9yZGVyJzogJzFweCAjZGRkIHNvbGlkJywKICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnNHB4JywKICAgICAgICAgICAgJ3BhZGRpbmcnOiBkYXRhLnZlcnRpY2FsID8gJzM1cHggMjBweCc6ICcyMHB4IDIwcHggMTBweCAyMHB4JwogICAgICAgICAgfSk7CiAgICAgICAgICB2YXIgJHNwYW5zID0gJHgwLmNoaWxkcmVuKCdzcGFuJykuY3NzKHsKICAgICAgICAgICAgJ21hcmdpbi10b3AnOiBkYXRhLnZlcnRpY2FsID8gJzAnIDogJzEwcHgnLAogICAgICAgICAgICAnd2hpdGUtc3BhY2UnOiAnbm93cmFwJwogICAgICAgICAgfSk7CiAgICAgICAgICB2YXIgJHNwYW4xID0gJHNwYW5zLmZpcnN0KCksICRzcGFuMiA9ICRzcGFucy5sYXN0KCk7CiAgICAgICAgICB2YXIgcjEgPSArJHguZGF0YSgnbWluJyksIHIyID0gKyR4LmRhdGEoJ21heCcpOwogICAgICAgICAgLy8gd2hlbiB0aGUgbnVtYmVycyBhcmUgdG9vIHNtYWxsIG9yIGhhdmUgbWFueSBkZWNpbWFsIHBsYWNlcywgdGhlCiAgICAgICAgICAvLyBzbGlkZXIgbWF5IGhhdmUgbnVtZXJpYyBwcmVjaXNpb24gcHJvYmxlbXMgKCMxNTApCiAgICAgICAgICB2YXIgc2NhbGUgPSBNYXRoLnBvdygxMCwgTWF0aC5tYXgoMCwgKyR4LmRhdGEoJ3NjYWxlJykgfHwgMCkpOwogICAgICAgICAgcjEgPSBNYXRoLnJvdW5kKHIxICogc2NhbGUpOyByMiA9IE1hdGgucm91bmQocjIgKiBzY2FsZSk7CiAgICAgICAgICB2YXIgc2NhbGVCYWNrID0gZnVuY3Rpb24oeCwgc2NhbGUpIHsKICAgICAgICAgICAgaWYgKHNjYWxlID09PSAxKSByZXR1cm4geDsKICAgICAgICAgICAgdmFyIGQgPSBNYXRoLnJvdW5kKE1hdGgubG9nKHNjYWxlKSAvIE1hdGgubG9nKDEwKSk7CiAgICAgICAgICAgIC8vIHRvIGF2b2lkIHByb2JsZW1zIGxpa2UgMy40MjMvMTAwIC0+IDAuMDM0MjMwMDAwMDAwMDAwMDAzCiAgICAgICAgICAgIHJldHVybiAoeCAvIHNjYWxlKS50b0ZpeGVkKGQpOwogICAgICAgICAgfTsKICAgICAgICAgIHZhciBzbGlkZXJfbWluID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHJldHVybiBmaWx0ZXIubm9VaVNsaWRlcignb3B0aW9ucycpLnJhbmdlLm1pbjsKICAgICAgICAgIH07CiAgICAgICAgICB2YXIgc2xpZGVyX21heCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICByZXR1cm4gZmlsdGVyLm5vVWlTbGlkZXIoJ29wdGlvbnMnKS5yYW5nZS5tYXg7CiAgICAgICAgICB9OwogICAgICAgICAgJGlucHV0Lm9uKHsKICAgICAgICAgICAgZm9jdXM6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICR4MC5zaG93KCkudHJpZ2dlcignc2hvdycpOwogICAgICAgICAgICAgIC8vIGZpcnN0LCBtYWtlIHN1cmUgdGhlIHNsaWRlciBkaXYgbGVhdmVzIGF0IGxlYXN0IDIwcHggYmV0d2VlbgogICAgICAgICAgICAgIC8vIHRoZSB0d28gKHNsaWRlciB2YWx1ZSkgc3BhbidzCiAgICAgICAgICAgICAgJHgwLndpZHRoKE1hdGgubWF4KDE2MCwgJHNwYW4xLm91dGVyV2lkdGgoKSArICRzcGFuMi5vdXRlcldpZHRoKCkgKyAyMCkpOwogICAgICAgICAgICAgIC8vIHRoZW4sIGlmIHRoZSBpbnB1dCBpcyByZWFsbHkgd2lkZSBvciBzbGlkZXIgaXMgdmVydGljYWwsCiAgICAgICAgICAgICAgLy8gbWFrZSB0aGUgc2xpZGVyIHRoZSBzYW1lIHdpZHRoIGFzIHRoZSBpbnB1dAogICAgICAgICAgICAgIGlmICgkeDAub3V0ZXJXaWR0aCgpIDwgJGlucHV0Lm91dGVyV2lkdGgoKSB8fCBkYXRhLnZlcnRpY2FsKSB7CiAgICAgICAgICAgICAgICAkeDAub3V0ZXJXaWR0aCgkaW5wdXQub3V0ZXJXaWR0aCgpKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZSBzbGlkZXIgZGl2IGRvZXMgbm90IHJlYWNoIGJleW9uZCB0aGUgcmlnaHQgbWFyZ2luCiAgICAgICAgICAgICAgaWYgKCQod2luZG93KS53aWR0aCgpIDwgJHgwLm9mZnNldCgpLmxlZnQgKyAkeDAud2lkdGgoKSkgewogICAgICAgICAgICAgICAgJHgwLm9mZnNldCh7CiAgICAgICAgICAgICAgICAgICdsZWZ0JzogJGlucHV0Lm9mZnNldCgpLmxlZnQgKyAkaW5wdXQub3V0ZXJXaWR0aCgpIC0gJHgwLm91dGVyV2lkdGgoKQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICBibHVyOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAkeDAuaGlkZSgpLnRyaWdnZXIoJ2hpZGUnKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIGlmICgkaW5wdXQudmFsKCkgPT09ICcnKSBmaWx0ZXIudmFsKFtzbGlkZXJfbWluKCksIHNsaWRlcl9tYXgoKV0pOwogICAgICAgICAgICB9LAogICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhciB2ID0gJGlucHV0LnZhbCgpLnJlcGxhY2UoL1xzL2csICcnKTsKICAgICAgICAgICAgICBpZiAodiA9PT0gJycpIHJldHVybjsKICAgICAgICAgICAgICB2ID0gdi5zcGxpdCgnLi4uJyk7CiAgICAgICAgICAgICAgaWYgKHYubGVuZ3RoICE9PSAyKSB7CiAgICAgICAgICAgICAgICAkaW5wdXQucGFyZW50KCkuYWRkQ2xhc3MoJ2hhcy1lcnJvcicpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAodlswXSA9PT0gJycpIHZbMF0gPSBzbGlkZXJfbWluKCk7CiAgICAgICAgICAgICAgaWYgKHZbMV0gPT09ICcnKSB2WzFdID0gc2xpZGVyX21heCgpOwogICAgICAgICAgICAgICRpbnB1dC5wYXJlbnQoKS5yZW1vdmVDbGFzcygnaGFzLWVycm9yJyk7CiAgICAgICAgICAgICAgLy8gdHJlYXQgZGF0ZSBhcyBVVEMgdGltZSBhdCBtaWRuaWdodAogICAgICAgICAgICAgIHZhciBzdHJUaW1lID0gZnVuY3Rpb24oeCkgewogICAgICAgICAgICAgICAgdmFyIHMgPSB0eXBlID09PSAnZGF0ZScgPyAnVDAwOjAwOjAwWicgOiAnJzsKICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IERhdGUoeCArIHMpLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgIC8vIGFkZCAxMCBtaW51dGVzIHRvIGRhdGUgc2luY2UgaXQgZG9lcyBub3QgaHVydCB0aGUgZGF0ZSwgYW5kCiAgICAgICAgICAgICAgICAvLyBpdCBoZWxwcyBhdm9pZCB0aGUgdHJpY2t5IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgcHJvYmxlbXMsCiAgICAgICAgICAgICAgICAvLyBlLmcuIHNvbWV0aW1lcyB0aGUgZGF0ZSBtYXkgYmUgYSBmZXcgbWlsbGlzZWNvbmRzIGVhcmxpZXIKICAgICAgICAgICAgICAgIC8vIHRoYW4gdGhlIG1pZG5pZ2h0IGR1ZSB0byBwcmVjaXNpb24gcHJvYmxlbXMgaW4gbm9VaVNsaWRlcgogICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT09ICdkYXRlJyA/IHQgKyAzNjAwMDAwIDogdDsKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIGlmIChpbkFycmF5KHR5cGUsIFsnZGF0ZScsICd0aW1lJ10pKSB7CiAgICAgICAgICAgICAgICB2WzBdID0gc3RyVGltZSh2WzBdKTsKICAgICAgICAgICAgICAgIHZbMV0gPSBzdHJUaW1lKHZbMV0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAodlswXSAhPSBzbGlkZXJfbWluKCkpIHZbMF0gKj0gc2NhbGU7CiAgICAgICAgICAgICAgaWYgKHZbMV0gIT0gc2xpZGVyX21heCgpKSB2WzFdICo9IHNjYWxlOwogICAgICAgICAgICAgIGZpbHRlci52YWwodik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgdmFyIGZvcm1hdERhdGUgPSBmdW5jdGlvbihkLCBpc29GbXQpIHsKICAgICAgICAgICAgZCA9IHNjYWxlQmFjayhkLCBzY2FsZSk7CiAgICAgICAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJykgcmV0dXJuIGQ7CiAgICAgICAgICAgIGlmICh0eXBlID09PSAnaW50ZWdlcicpIHJldHVybiBwYXJzZUludChkKTsKICAgICAgICAgICAgdmFyIHggPSBuZXcgRGF0ZSgrZCk7CiAgICAgICAgICAgIHZhciBmbXQgPSAoJ2ZpbHRlckRhdGVGbXQnIGluIGRhdGEpID8gZGF0YS5maWx0ZXJEYXRlRm10W2ldIDogdW5kZWZpbmVkOwogICAgICAgICAgICBpZiAoZm10ICE9PSB1bmRlZmluZWQgJiYgaXNvRm10ID09PSBmYWxzZSkgcmV0dXJuIHhbZm10Lm1ldGhvZF0uYXBwbHkoeCwgZm10LnBhcmFtcyk7CiAgICAgICAgICAgIGlmICh0eXBlID09PSAnZGF0ZScpIHsKICAgICAgICAgICAgICB2YXIgcGFkMCA9IGZ1bmN0aW9uKHgpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoJzAnICsgeCkuc3Vic3RyKC0yLCAyKTsKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIHJldHVybiB4LmdldFVUQ0Z1bGxZZWFyKCkgKyAnLScgKyBwYWQwKDEgKyB4LmdldFVUQ01vbnRoKCkpCiAgICAgICAgICAgICAgICAgICAgICArICctJyArIHBhZDAoeC5nZXRVVENEYXRlKCkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHJldHVybiB4LnRvSVNPU3RyaW5nKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH07CiAgICAgICAgICB2YXIgb3B0cyA9IHR5cGUgPT09ICdkYXRlJyA/IHsgc3RlcDogNjAgKiA2MCAqIDEwMDAgfSA6CiAgICAgICAgICAgICAgICAgICAgIHR5cGUgPT09ICdpbnRlZ2VyJyA/IHsgc3RlcDogMSB9IDoge307CgogICAgICAgICAgb3B0cy5vcmllbnRhdGlvbiA9IGRhdGEudmVydGljYWwgPyAndmVydGljYWwnOiAnaG9yaXpvbnRhbCc7CiAgICAgICAgICBvcHRzLmRpcmVjdGlvbiA9IGRhdGEudmVydGljYWwgPyAncnRsJzogJ2x0cic7CgogICAgICAgICAgZmlsdGVyID0gJHgubm9VaVNsaWRlcigkLmV4dGVuZCh7CiAgICAgICAgICAgIHN0YXJ0OiBbcjEsIHIyXSwKICAgICAgICAgICAgcmFuZ2U6IHttaW46IHIxLCBtYXg6IHIyfSwKICAgICAgICAgICAgY29ubmVjdDogdHJ1ZQogICAgICAgICAgfSwgb3B0cykpOwogICAgICAgICAgaWYgKHNjYWxlID4gMSkgKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgdDEgPSByMSwgdDIgPSByMjsKICAgICAgICAgICAgdmFyIHZhbCA9IGZpbHRlci52YWwoKTsKICAgICAgICAgICAgd2hpbGUgKHZhbFswXSA+IHIxIHx8IHZhbFsxXSA8IHIyKSB7CiAgICAgICAgICAgICAgaWYgKHZhbFswXSA+IHIxKSB7CiAgICAgICAgICAgICAgICB0MSAtPSB2YWxbMF0gLSByMTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKHZhbFsxXSA8IHIyKSB7CiAgICAgICAgICAgICAgICB0MiArPSByMiAtIHZhbFsxXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZmlsdGVyID0gJHgubm9VaVNsaWRlcigkLmV4dGVuZCh7CiAgICAgICAgICAgICAgICBzdGFydDogW3QxLCB0Ml0sCiAgICAgICAgICAgICAgICByYW5nZToge21pbjogdDEsIG1heDogdDJ9LAogICAgICAgICAgICAgICAgY29ubmVjdDogdHJ1ZQogICAgICAgICAgICAgIH0sIG9wdHMpLCB0cnVlKTsKICAgICAgICAgICAgICB2YWwgPSBmaWx0ZXIudmFsKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcjEgID0gdDE7IHIyID0gdDI7CiAgICAgICAgICB9KSgpOwogICAgICAgICAgdmFyIHVwZGF0ZVNsaWRlclRleHQgPSBmdW5jdGlvbih2MSwgdjIpIHsKICAgICAgICAgICAgJHNwYW4xLnRleHQoZm9ybWF0RGF0ZSh2MSwgZmFsc2UpKTsgJHNwYW4yLnRleHQoZm9ybWF0RGF0ZSh2MiwgZmFsc2UpKTsKICAgICAgICAgIH07CiAgICAgICAgICB1cGRhdGVTbGlkZXJUZXh0KHIxLCByMik7CiAgICAgICAgICB2YXIgdXBkYXRlU2xpZGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgdmFsID0gZmlsdGVyLnZhbCgpOwogICAgICAgICAgICAvLyB0dXJuIG9mZiBmaWx0ZXIgaWYgaW4gZnVsbCByYW5nZQogICAgICAgICAgICAkdGQuZGF0YSgnZmlsdGVyJywgdmFsWzBdID4gc2xpZGVyX21pbigpIHx8IHZhbFsxXSA8IHNsaWRlcl9tYXgoKSk7CiAgICAgICAgICAgIHZhciB2MSA9IGZvcm1hdERhdGUodmFsWzBdKSwgdjIgPSBmb3JtYXREYXRlKHZhbFsxXSksIGl2YWw7CiAgICAgICAgICAgIGlmICgkdGQuZGF0YSgnZmlsdGVyJykpIHsKICAgICAgICAgICAgICBpdmFsID0gdjEgKyAnIC4uLiAnICsgdjI7CiAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3RpdGxlJywgaXZhbCkudmFsKGl2YWwpLnRyaWdnZXIoJ2lucHV0Jyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJGlucHV0LmF0dHIoJ3RpdGxlJywgJycpLnZhbCgnJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdXBkYXRlU2xpZGVyVGV4dCh2YWxbMF0sIHZhbFsxXSk7CiAgICAgICAgICAgIGlmIChlLnR5cGUgPT09ICdzbGlkZScpIHJldHVybjsgIC8vIG5vIHNlYXJjaGluZyB3aGVuIHNsaWRpbmcgb25seQogICAgICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAgICAgdGFibGUuY29sdW1uKGkpLnNlYXJjaCgkdGQuZGF0YSgnZmlsdGVyJykgPyBpdmFsIDogJycpLmRyYXcoKTsKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGFibGUuZHJhdygpOwogICAgICAgICAgfTsKICAgICAgICAgIGZpbHRlci5vbih7CiAgICAgICAgICAgIHNldDogdXBkYXRlU2xpZGVyLAogICAgICAgICAgICBzbGlkZTogdXBkYXRlU2xpZGVyCiAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIC8vIHNlcnZlci1zaWRlIHByb2Nlc3Npbmcgd2lsbCBiZSBoYW5kbGVkIGJ5IFIgKG9yIHdoYXRldmVyIHNlcnZlcgogICAgICAgIC8vIGxhbmd1YWdlIHlvdSB1c2UpOyB0aGUgZm9sbG93aW5nIGNvZGUgaXMgb25seSBuZWVkZWQgZm9yIGNsaWVudC1zaWRlCiAgICAgICAgLy8gcHJvY2Vzc2luZwogICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgIC8vIGlmIGEgc2VhcmNoIHN0cmluZyBoYXMgYmVlbiBwcmUtc2V0LCBzZWFyY2ggbm93CiAgICAgICAgICBpZiAoc2VhcmNoQ29sKSBzZWFyY2hDb2x1bW4oaSwgc2VhcmNoQ29sKS5kcmF3KCk7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgY3VzdG9tRmlsdGVyID0gZnVuY3Rpb24oc2V0dGluZ3MsIGRhdGEsIGRhdGFJbmRleCkgewogICAgICAgICAgLy8gdGhlcmUgaXMgbm8gd2F5IHRvIGF0dGFjaCBhIHNlYXJjaCBmdW5jdGlvbiB0byBhIHNwZWNpZmljIHRhYmxlLAogICAgICAgICAgLy8gYW5kIHdlIG5lZWQgdG8gbWFrZSBzdXJlIGEgZ2xvYmFsIHNlYXJjaCBmdW5jdGlvbiBpcyBub3QgYXBwbGllZCB0bwogICAgICAgICAgLy8gYWxsIHRhYmxlcyAoaS5lLiBhIHJhbmdlIGZpbHRlciBpbiBhIHByZXZpb3VzIHRhYmxlIHNob3VsZCBub3QgYmUKICAgICAgICAgIC8vIGFwcGxpZWQgdG8gdGhlIGN1cnJlbnQgdGFibGUpOyB3ZSB1c2UgdGhlIHNldHRpbmdzIG9iamVjdCB0bwogICAgICAgICAgLy8gZGV0ZXJtaW5lIGlmIHdlIHdhbnQgdG8gcGVyZm9ybSBzZWFyY2hpbmcgb24gdGhlIGN1cnJlbnQgdGFibGUsCiAgICAgICAgICAvLyBzaW5jZSBzZXR0aW5ncy5zVGFibGVJZCB3aWxsIGJlIGRpZmZlcmVudCB0byBkaWZmZXJlbnQgdGFibGVzCiAgICAgICAgICBpZiAodGFibGUuc2V0dGluZ3MoKVswXSAhPT0gc2V0dGluZ3MpIHJldHVybiB0cnVlOwogICAgICAgICAgLy8gbm8gZmlsdGVyIG9uIHRoaXMgY29sdW1uIG9yIG5vIG5lZWQgdG8gZmlsdGVyIHRoaXMgY29sdW1uCiAgICAgICAgICBpZiAodHlwZW9mIGZpbHRlciA9PT0gJ3VuZGVmaW5lZCcgfHwgISR0ZC5kYXRhKCdmaWx0ZXInKSkgcmV0dXJuIHRydWU7CgogICAgICAgICAgdmFyIHIgPSBmaWx0ZXIudmFsKCksIHYsIHIwLCByMTsKICAgICAgICAgIHZhciBpX2RhdGEgPSBmdW5jdGlvbihpKSB7CiAgICAgICAgICAgIGlmICghY29sUmVvcmRlckVuYWJsZWQoKSkgcmV0dXJuIGk7CiAgICAgICAgICAgIHZhciBvcmRlciA9IHRhYmxlLmNvbFJlb3JkZXIub3JkZXIoKSwgazsKICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IG9yZGVyLmxlbmd0aDsgKytrKSBpZiAob3JkZXJba10gPT09IGkpIHJldHVybiBrOwogICAgICAgICAgICByZXR1cm4gaTsgLy8gaW4gdGhlb3J5IGl0IHdpbGwgbmV2ZXIgYmUgaGVyZS4uLgogICAgICAgICAgfQogICAgICAgICAgdiA9IGRhdGFbaV9kYXRhKGkpXTsKICAgICAgICAgIGlmICh0eXBlID09PSAnbnVtYmVyJyB8fCB0eXBlID09PSAnaW50ZWdlcicpIHsKICAgICAgICAgICAgdiA9IHBhcnNlRmxvYXQodik7CiAgICAgICAgICAgIC8vIGhvdyB0byBoYW5kbGUgTmFOPyBjdXJyZW50bHkgZXhjbHVkZSB0aGVzZSByb3dzCiAgICAgICAgICAgIGlmIChpc05hTih2KSkgcmV0dXJuKGZhbHNlKTsKICAgICAgICAgICAgcjAgPSBwYXJzZUZsb2F0KHNjYWxlQmFjayhyWzBdLCBzY2FsZSkpCiAgICAgICAgICAgIHIxID0gcGFyc2VGbG9hdChzY2FsZUJhY2soclsxXSwgc2NhbGUpKTsKICAgICAgICAgICAgaWYgKHYgPj0gcjAgJiYgdiA8PSByMSkgcmV0dXJuIHRydWU7CiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdkYXRlJyB8fCB0eXBlID09PSAndGltZScpIHsKICAgICAgICAgICAgdiA9IG5ldyBEYXRlKHYpOwogICAgICAgICAgICByMCA9IG5ldyBEYXRlKHJbMF0gLyBzY2FsZSk7IHIxID0gbmV3IERhdGUoclsxXSAvIHNjYWxlKTsKICAgICAgICAgICAgaWYgKHYgPj0gcjAgJiYgdiA8PSByMSkgcmV0dXJuIHRydWU7CiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdmYWN0b3InKSB7CiAgICAgICAgICAgIGlmIChyLmxlbmd0aCA9PT0gMCB8fCBpbkFycmF5KHYsIHIpKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2xvZ2ljYWwnKSB7CiAgICAgICAgICAgIGlmIChyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIGlmIChpbkFycmF5KHYgPT09ICcnID8gJ25hJyA6IHYsIHIpKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9OwoKICAgICAgICAkLmZuLmRhdGFUYWJsZS5leHQuc2VhcmNoLnB1c2goY3VzdG9tRmlsdGVyKTsKCiAgICAgICAgLy8gc2VhcmNoIGZvciB0aGUgcHJlc2V0IHNlYXJjaCBzdHJpbmdzIGlmIGl0IGlzIG5vbi1lbXB0eQogICAgICAgIGlmIChzZWFyY2hDb2wpIHsKICAgICAgICAgIGlmIChpbkFycmF5KHR5cGUsIFsnZmFjdG9yJywgJ2xvZ2ljYWwnXSkpIHsKICAgICAgICAgICAgZmlsdGVyWzBdLnNlbGVjdGl6ZS5zZXRWYWx1ZShKU09OLnBhcnNlKHNlYXJjaENvbCkpOwogICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnY2hhcmFjdGVyJykgewogICAgICAgICAgICAkaW5wdXQudHJpZ2dlcignaW5wdXQnKTsKICAgICAgICAgIH0gZWxzZSBpZiAoaW5BcnJheSh0eXBlLCBbJ251bWJlcicsICdpbnRlZ2VyJywgJ2RhdGUnLCAndGltZSddKSkgewogICAgICAgICAgICAkaW5wdXQudHJpZ2dlcignY2hhbmdlJyk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgfSk7CgogICAgfQoKICAgIC8vIGhpZ2hsaWdodCBzZWFyY2gga2V5d29yZHMKICAgIHZhciBoaWdobGlnaHQgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGJvZHkgPSAkKHRhYmxlLnRhYmxlKCkuYm9keSgpKTsKICAgICAgLy8gcmVtb3ZpbmcgdGhlIG9sZCBoaWdobGlnaHRpbmcgZmlyc3QKICAgICAgYm9keS51bmhpZ2hsaWdodCgpOwoKICAgICAgLy8gZG9uJ3QgaGlnaGxpZ2h0IHRoZSAibm90IGZvdW5kIiByb3csIHNvIHdlIGdldCB0aGUgcm93cyB1c2luZyB0aGUgYXBpCiAgICAgIGlmICh0YWJsZS5yb3dzKHsgZmlsdGVyOiAnYXBwbGllZCcgfSkuZGF0YSgpLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwogICAgICAvLyBoaWdobGlnaHQgZ2xvYmFsIHNlYXJjaCBrZXl3b3JkcwogICAgICBib2R5LmhpZ2hsaWdodCgkLnRyaW0odGFibGUuc2VhcmNoKCkpLnNwbGl0KC9ccysvKSk7CiAgICAgIC8vIHRoZW4gaGlnaGxpZ2h0IGtleXdvcmRzIGZyb20gaW5kaXZpZHVhbCBjb2x1bW4gZmlsdGVycwogICAgICBpZiAoZmlsdGVyUm93KSBmaWx0ZXJSb3cuZWFjaChmdW5jdGlvbihpLCB0ZCkgewogICAgICAgIHZhciAkdGQgPSAkKHRkKSwgdHlwZSA9ICR0ZC5kYXRhKCd0eXBlJyk7CiAgICAgICAgaWYgKHR5cGUgIT09ICdjaGFyYWN0ZXInKSByZXR1cm47CiAgICAgICAgdmFyICRpbnB1dCA9ICR0ZC5jaGlsZHJlbignZGl2JykuZmlyc3QoKS5jaGlsZHJlbignaW5wdXQnKTsKICAgICAgICB2YXIgY29sdW1uID0gdGFibGUuY29sdW1uKGkpLm5vZGVzKCkudG8kKCksCiAgICAgICAgICAgIHZhbCA9ICQudHJpbSgkaW5wdXQudmFsKCkpOwogICAgICAgIGlmICh0eXBlICE9PSAnY2hhcmFjdGVyJyB8fCB2YWwgPT09ICcnKSByZXR1cm47CiAgICAgICAgY29sdW1uLmhpZ2hsaWdodCh2YWwuc3BsaXQoL1xzKy8pKTsKICAgICAgfSk7CiAgICB9OwoKICAgIGlmIChvcHRpb25zLnNlYXJjaEhpZ2hsaWdodCkgewogICAgICB0YWJsZQogICAgICAub24oJ2RyYXcuZHQuZHRoIGNvbHVtbi12aXNpYmlsaXR5LmR0LmR0aCBjb2x1bW4tcmVvcmRlci5kdC5kdGgnLCBoaWdobGlnaHQpCiAgICAgIC5vbignZGVzdHJveScsIGZ1bmN0aW9uKCkgewogICAgICAgIC8vIHJlbW92ZSBldmVudCBoYW5kbGVyCiAgICAgICAgdGFibGUub2ZmKCdkcmF3LmR0LmR0aCBjb2x1bW4tdmlzaWJpbGl0eS5kdC5kdGggY29sdW1uLXJlb3JkZXIuZHQuZHRoJyk7CiAgICAgIH0pOwoKICAgICAgLy8gU2V0IHRoZSBvcHRpb24gZm9yIGVzY2FwaW5nIHJlZ2V4IGNoYXJhY3RlcnMgaW4gb3VyIHNlYXJjaCBzdHJpbmcuICBUaGlzIHdpbGwgYmUgdXNlZAogICAgICAvLyBmb3IgYWxsIGZ1dHVyZSBtYXRjaGluZy4KICAgICAgalF1ZXJ5LmZuLmhpZ2hsaWdodC5vcHRpb25zLmVzY2FwZVJlZ2V4ID0gKCFvcHRpb25zLnNlYXJjaCB8fCAhb3B0aW9ucy5zZWFyY2gucmVnZXgpOwoKICAgICAgLy8gaW5pdGlhbCBoaWdobGlnaHQgZm9yIHN0YXRlIHNhdmVkIGNvbmRpdGlvbnMgYW5kIGluaXRpYWwgc3RhdGVzCiAgICAgIGhpZ2hsaWdodCgpOwogICAgfQoKICAgIC8vIHJ1biB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gb24gdGhlIHRhYmxlIGluc3RhbmNlCiAgICBpZiAodHlwZW9mIGRhdGEuY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIGRhdGEuY2FsbGJhY2sodGFibGUpOwoKICAgIC8vIGRvdWJsZSBjbGljayB0byBlZGl0IHRoZSBjZWxsLCByb3csIGNvbHVtbiwgb3IgYWxsIGNlbGxzCiAgICBpZiAoZGF0YS5lZGl0YWJsZSkgdGFibGUub24oJ2RibGNsaWNrLmR0JywgJ3Rib2R5IHRkJywgZnVuY3Rpb24oZSkgewogICAgICAvLyBvbmx5IGJyaW5nIHVwIHRoZSBlZGl0b3Igd2hlbiB0aGUgY2VsbCBpdHNlbGYgaXMgZGJjbGlja2VkLCBhbmQgaWdub3JlCiAgICAgIC8vIG90aGVyIGRiY2xpY2sgZXZlbnRzIGJ1YmJsZWQgdXAgKGUuZy4gZnJvbSB0aGUgPGlucHV0PikKICAgICAgaWYgKGUudGFyZ2V0ICE9PSB0aGlzKSByZXR1cm47CiAgICAgIHZhciB0YXJnZXQgPSBbXSwgaW1tZWRpYXRlID0gZmFsc2U7CiAgICAgIHN3aXRjaCAoZGF0YS5lZGl0YWJsZS50YXJnZXQpIHsKICAgICAgICBjYXNlICdjZWxsJzoKICAgICAgICAgIHRhcmdldCA9IFt0aGlzXTsKICAgICAgICAgIGltbWVkaWF0ZSA9IHRydWU7ICAvLyBlZGl0IHdpbGwgdGFrZSBlZmZlY3QgaW1tZWRpYXRlbHkKICAgICAgICAgIGJyZWFrOwogICAgICAgIGNhc2UgJ3Jvdyc6CiAgICAgICAgICB0YXJnZXQgPSB0YWJsZS5jZWxscyh0YWJsZS5jZWxsKHRoaXMpLmluZGV4KCkucm93LCAnKicpLm5vZGVzKCk7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdjb2x1bW4nOgogICAgICAgICAgdGFyZ2V0ID0gdGFibGUuY2VsbHMoJyonLCB0YWJsZS5jZWxsKHRoaXMpLmluZGV4KCkuY29sdW1uKS5ub2RlcygpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAnYWxsJzoKICAgICAgICAgIHRhcmdldCA9IHRhYmxlLmNlbGxzKCkubm9kZXMoKTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICB0aHJvdyAnVGhlIGVkaXRhYmxlIHBhcmFtZXRlciBtdXN0IGJlICJjZWxsIiwgInJvdyIsICJjb2x1bW4iLCBvciAiYWxsIic7CiAgICAgIH0KICAgICAgdmFyIGRpc2FibGVDb2xzID0gZGF0YS5lZGl0YWJsZS5kaXNhYmxlID8gZGF0YS5lZGl0YWJsZS5kaXNhYmxlLmNvbHVtbnMgOiBudWxsOwogICAgICB2YXIgbnVtZXJpY0NvbHMgPSBkYXRhLmVkaXRhYmxlLm51bWVyaWM7CiAgICAgIHZhciBhcmVhQ29scyA9IGRhdGEuZWRpdGFibGUuYXJlYTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YXJnZXQubGVuZ3RoOyBpKyspIHsKICAgICAgICAoZnVuY3Rpb24oY2VsbCwgY3VycmVudCkgewogICAgICAgICAgdmFyICRjZWxsID0gJChjZWxsKSwgaHRtbCA9ICRjZWxsLmh0bWwoKTsKICAgICAgICAgIHZhciBfY2VsbCA9IHRhYmxlLmNlbGwoY2VsbCksIHZhbHVlID0gX2NlbGwuZGF0YSgpLCBpbmRleCA9IF9jZWxsLmluZGV4KCkuY29sdW1uOwogICAgICAgICAgdmFyICRpbnB1dDsKICAgICAgICAgIGlmIChpbkFycmF5KGluZGV4LCBudW1lcmljQ29scykpIHsKICAgICAgICAgICAgJGlucHV0ID0gJCgnPGlucHV0IHR5cGU9Im51bWJlciI+Jyk7CiAgICAgICAgICB9IGVsc2UgaWYgKGluQXJyYXkoaW5kZXgsIGFyZWFDb2xzKSkgewogICAgICAgICAgICAkaW5wdXQgPSAkKCc8dGV4dGFyZWE+PC90ZXh0YXJlYT4nKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRpbnB1dCA9ICQoJzxpbnB1dCB0eXBlPSJ0ZXh0Ij4nKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICghaW1tZWRpYXRlKSB7CiAgICAgICAgICAgICRjZWxsLmRhdGEoJ2lucHV0JywgJGlucHV0KS5kYXRhKCdodG1sJywgaHRtbCk7CiAgICAgICAgICAgICRpbnB1dC5hdHRyKCd0aXRsZScsICdIaXQgQ3RybCtFbnRlciB0byBmaW5pc2ggZWRpdGluZywgb3IgRXNjIHRvIGNhbmNlbCcpOwogICAgICAgICAgfQogICAgICAgICAgJGlucHV0LnZhbCh2YWx1ZSk7CiAgICAgICAgICBpZiAoaW5BcnJheShpbmRleCwgZGlzYWJsZUNvbHMpKSB7CiAgICAgICAgICAgICRpbnB1dC5hdHRyKCdyZWFkb25seScsICcnKS5jc3MoJ2ZpbHRlcicsICdpbnZlcnQoMjUlKScpOwogICAgICAgICAgfQogICAgICAgICAgJGNlbGwuZW1wdHkoKS5hcHBlbmQoJGlucHV0KTsKICAgICAgICAgIGlmIChjZWxsID09PSBjdXJyZW50KSAkaW5wdXQuZm9jdXMoKTsKICAgICAgICAgICRpbnB1dC5jc3MoJ3dpZHRoJywgJzEwMCUnKTsKCiAgICAgICAgICBpZiAoaW1tZWRpYXRlKSAkaW5wdXQub24oJ2JsdXInLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHZhciB2YWx1ZU5ldyA9ICRpbnB1dC52YWwoKTsKICAgICAgICAgICAgaWYgKHZhbHVlTmV3ICE9IHZhbHVlKSB7CiAgICAgICAgICAgICAgX2NlbGwuZGF0YSh2YWx1ZU5ldyk7CiAgICAgICAgICAgICAgaWYgKEhUTUxXaWRnZXRzLnNoaW55TW9kZSkgewogICAgICAgICAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxfZWRpdCcsIFtjZWxsSW5mbyhjZWxsKV0sICdEVC5jZWxsSW5mbycsIG51bGwsIHtwcmlvcml0eTogJ2V2ZW50J30pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAvLyBmb3Igc2VydmVyLXNpZGUgcHJvY2Vzc2luZywgdXNlcnMgaGF2ZSB0byBjYWxsIHJlcGxhY2VEYXRhKCkgdG8gdXBkYXRlIHRoZSB0YWJsZQogICAgICAgICAgICAgIGlmICghc2VydmVyKSB0YWJsZS5kcmF3KGZhbHNlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAkY2VsbC5odG1sKGh0bWwpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KS5vbigna2V5dXAnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIC8vIGhpdCBFc2NhcGUgdG8gY2FuY2VsIGVkaXRpbmcKICAgICAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMjcpICRpbnB1dC50cmlnZ2VyKCdibHVyJyk7CiAgICAgICAgICB9KTsKCiAgICAgICAgICAvLyBidWxrIGVkaXQgKHJvdywgY29sdW1uLCBvciBhbGwpCiAgICAgICAgICBpZiAoIWltbWVkaWF0ZSkgJGlucHV0Lm9uKCdrZXl1cCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHJlbW92ZUlucHV0ID0gZnVuY3Rpb24oJGNlbGwsIHJlc3RvcmUpIHsKICAgICAgICAgICAgICAkY2VsbC5kYXRhKCdpbnB1dCcpLnJlbW92ZSgpOwogICAgICAgICAgICAgIGlmIChyZXN0b3JlKSAkY2VsbC5odG1sKCRjZWxsLmRhdGEoJ2h0bWwnKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMjcpIHsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhcmdldC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcmVtb3ZlSW5wdXQoJCh0YXJnZXRbaV0pLCB0cnVlKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5rZXlDb2RlID09PSAxMyAmJiBlLmN0cmxLZXkpIHsKICAgICAgICAgICAgICAvLyBDdHJsICsgRW50ZXIKICAgICAgICAgICAgICB2YXIgY2VsbCwgJGNlbGwsIF9jZWxsLCBjZWxsRGF0YSA9IFtdOwogICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFyZ2V0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjZWxsID0gdGFyZ2V0W2ldOyAkY2VsbCA9ICQoY2VsbCk7IF9jZWxsID0gdGFibGUuY2VsbChjZWxsKTsKICAgICAgICAgICAgICAgIF9jZWxsLmRhdGEoJGNlbGwuZGF0YSgnaW5wdXQnKS52YWwoKSk7CiAgICAgICAgICAgICAgICBIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgY2VsbERhdGEucHVzaChjZWxsSW5mbyhjZWxsKSk7CiAgICAgICAgICAgICAgICByZW1vdmVJbnB1dCgkY2VsbCwgZmFsc2UpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoSFRNTFdpZGdldHMuc2hpbnlNb2RlKSB7CiAgICAgICAgICAgICAgICBjaGFuZ2VJbnB1dCgnY2VsbF9lZGl0JywgY2VsbERhdGEsICdEVC5jZWxsSW5mbycsIG51bGwsIHtwcmlvcml0eTogImV2ZW50In0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAoIXNlcnZlcikgdGFibGUuZHJhdyhmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0pKHRhcmdldFtpXSwgdGhpcyk7CiAgICAgIH0KICAgIH0pOwoKICAgIC8vIGludGVyYWN0aW9uIHdpdGggc2hpbnkKICAgIGlmICghSFRNTFdpZGdldHMuc2hpbnlNb2RlICYmICFjcm9zc3RhbGtPcHRpb25zLmdyb3VwKSByZXR1cm47CgogICAgdmFyIG1ldGhvZHMgPSB7fTsKICAgIHZhciBzaGlueURhdGEgPSB7fTsKCiAgICBtZXRob2RzLnVwZGF0ZUNhcHRpb24gPSBmdW5jdGlvbihjYXB0aW9uKSB7CiAgICAgIGlmICghY2FwdGlvbikgcmV0dXJuOwogICAgICAkdGFibGUuY2hpbGRyZW4oJ2NhcHRpb24nKS5yZXBsYWNlV2l0aChjYXB0aW9uKTsKICAgIH0KCiAgICAvLyByZWdpc3RlciBjbGVhciBmdW5jdGlvbnMgdG8gcmVtb3ZlIGlucHV0IHZhbHVlcyB3aGVuIHRoZSB0YWJsZSBpcyByZW1vdmVkCiAgICBpbnN0YW5jZS5jbGVhcklucHV0cyA9IHt9OwoKICAgIHZhciBjaGFuZ2VJbnB1dCA9IGZ1bmN0aW9uKGlkLCB2YWx1ZSwgdHlwZSwgbm9Dcm9zc3RhbGssIG9wdHMpIHsKICAgICAgdmFyIGV2ZW50ID0gaWQ7CiAgICAgIGlkID0gZWwuaWQgKyAnXycgKyBpZDsKICAgICAgaWYgKHR5cGUpIGlkID0gaWQgKyAnOicgKyB0eXBlOwogICAgICAvLyBkbyBub3QgdXBkYXRlIGlmIHRoZSBuZXcgdmFsdWUgaXMgdGhlIHNhbWUgYXMgb2xkIHZhbHVlCiAgICAgIGlmIChldmVudCAhPT0gJ2NlbGxfZWRpdCcgJiYgIS9fY2xpY2tlZCQvLnRlc3QoZXZlbnQpICYmIHNoaW55RGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkgJiYgc2hpbnlEYXRhW2lkXSA9PT0gSlNPTi5zdHJpbmdpZnkodmFsdWUpKQogICAgICAgIHJldHVybjsKICAgICAgc2hpbnlEYXRhW2lkXSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTsKICAgICAgaWYgKEhUTUxXaWRnZXRzLnNoaW55TW9kZSAmJiBTaGlueS5zZXRJbnB1dFZhbHVlKSB7CiAgICAgICAgU2hpbnkuc2V0SW5wdXRWYWx1ZShpZCwgdmFsdWUsIG9wdHMpOwogICAgICAgIGlmICghaW5zdGFuY2UuY2xlYXJJbnB1dHNbaWRdKSBpbnN0YW5jZS5jbGVhcklucHV0c1tpZF0gPSBmdW5jdGlvbigpIHsKICAgICAgICAgIFNoaW55LnNldElucHV0VmFsdWUoaWQsIG51bGwpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gSEFDSwogICAgICBpZiAoZXZlbnQgPT09ICJyb3dzX3NlbGVjdGVkIiAmJiAhbm9Dcm9zc3RhbGspIHsKICAgICAgICBpZiAoY3Jvc3N0YWxrT3B0aW9ucy5ncm91cCkgewogICAgICAgICAgdmFyIGtleXMgPSBjcm9zc3RhbGtPcHRpb25zLmtleTsKICAgICAgICAgIHZhciBzZWxlY3RlZEtleXMgPSBudWxsOwogICAgICAgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgICAgIHNlbGVjdGVkS2V5cyA9IFtdOwogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGFycmF5J3MgY29udGVudHMgdXNlIDEtYmFzZWQgcm93IG51bWJlcnMsIHNvIHdlIG11c3QKICAgICAgICAgICAgICAvLyBjb252ZXJ0IHRvIDAtYmFzZWQgYmVmb3JlIGluZGV4aW5nIGludG8gdGhlIGtleXMgYXJyYXkuCiAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzLnB1c2goa2V5c1t2YWx1ZVtpXSAtIDFdKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUuc2V0KHNlbGVjdGVkS2V5cyk7CiAgICAgICAgfQogICAgICB9CiAgICB9OwoKICAgIHZhciBhZGRPbmUgPSBmdW5jdGlvbih4KSB7CiAgICAgIHJldHVybiB4Lm1hcChmdW5jdGlvbihpKSB7IHJldHVybiAxICsgaTsgfSk7CiAgICB9OwoKICAgIHZhciB1bmlxdWUgPSBmdW5jdGlvbih4KSB7CiAgICAgIHZhciB1eCA9IFtdOwogICAgICAkLmVhY2goeCwgZnVuY3Rpb24oaSwgZWwpewogICAgICAgIGlmICgkLmluQXJyYXkoZWwsIHV4KSA9PT0gLTEpIHV4LnB1c2goZWwpOwogICAgICB9KTsKICAgICAgcmV0dXJuIHV4OwogICAgfQoKICAgIC8vIGNoYW5nZSB0aGUgcm93IGluZGV4IG9mIGEgY2VsbAogICAgdmFyIHR3ZWFrQ2VsbEluZGV4ID0gZnVuY3Rpb24oY2VsbCkgewogICAgICB2YXIgaW5mbyA9IGNlbGwuaW5kZXgoKTsKICAgICAgLy8gc29tZSBjZWxsIG1heSBub3QgYmUgdmFsaWQuIGUuZywgIzc1OQogICAgICAvLyB3aGVuIHVzaW5nIHRoZSBSb3dHcm91cCBleHRlbnNpb24sIGRhdGF0YWJsZXMgd2lsbAogICAgICAvLyBnZW5lcmF0ZSB0aGUgcm93IGxhYmVsIGFuZCB0aGUgY2VsbHMgYXJlIG5vdCBwYXJ0IG9mCiAgICAgIC8vIHRoZSBkYXRhIHRodXMgY29udGFpbiBubyByb3cvY29sIGluZm8KICAgICAgaWYgKGluZm8gPT09IHVuZGVmaW5lZCkKICAgICAgICByZXR1cm4ge3JvdzogbnVsbCwgY29sOiBudWxsfTsKICAgICAgaWYgKHNlcnZlcikgewogICAgICAgIGluZm8ucm93ID0gRFRfcm93c19jdXJyZW50W2luZm8ucm93XTsKICAgICAgfSBlbHNlIHsKICAgICAgICBpbmZvLnJvdyArPSAxOwogICAgICB9CiAgICAgIHJldHVybiB7cm93OiBpbmZvLnJvdywgY29sOiBpbmZvLmNvbHVtbn07CiAgICB9CgogICAgdmFyIGNsZWFuU2VsZWN0ZWRWYWx1ZXMgPSBmdW5jdGlvbigpIHsKICAgICAgY2hhbmdlSW5wdXQoJ3Jvd3Nfc2VsZWN0ZWQnLCBbXSk7CiAgICAgIGNoYW5nZUlucHV0KCdjb2x1bW5zX3NlbGVjdGVkJywgW10pOwogICAgICBjaGFuZ2VJbnB1dCgnY2VsbHNfc2VsZWN0ZWQnLCB0cmFuc3Bvc2VBcnJheTJEKFtdKSwgJ3NoaW55Lm1hdHJpeCcpOwogICAgfQogICAgLy8gIzgyOCB3ZSBzaG91bGQgY2xlYW4gdGhlIHNlbGVjdGlvbiBvbiB0aGUgc2VydmVyLXNpZGUgd2hlbiB0aGUgdGFibGUgcmVsb2FkcwogICAgY2xlYW5TZWxlY3RlZFZhbHVlcygpOwoKICAgIC8vIGEgZmxhZyB0byBpbmRpY2F0ZXMgaWYgc2VsZWN0IGV4dGVuc2lvbiBpcyBpbml0aWFsaXplZCBvciBub3QKICAgIHZhciBmbGFnU2VsZWN0RXh0ID0gdGFibGUuc2V0dGluZ3MoKVswXS5fc2VsZWN0ICE9PSB1bmRlZmluZWQ7CiAgICAvLyB0aGUgU2VsZWN0IGV4dGVuc2lvbiBzaG91bGQgb25seSBiZSB1c2VkIGluIHRoZSBjbGllbnQgbW9kZSBhbmQKICAgIC8vIHdoZW4gdGhlIHNlbGVjdGlvbi5tb2RlIGlzIHNldCB0byBub25lCiAgICBpZiAoZGF0YS5zZWxlY3Rpb24ubW9kZSA9PT0gJ25vbmUnICYmICFzZXJ2ZXIgJiYgZmxhZ1NlbGVjdEV4dCkgewogICAgICB2YXIgdXBkYXRlUm93c1NlbGVjdGVkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHJvd3MgPSB0YWJsZS5yb3dzKHtzZWxlY3RlZDogdHJ1ZX0pOwogICAgICAgIHZhciBzZWxlY3RlZCA9IFtdOwogICAgICAgICQuZWFjaChyb3dzLmluZGV4ZXMoKS50b0FycmF5KCksIGZ1bmN0aW9uKGksIHYpIHsKICAgICAgICAgIHNlbGVjdGVkLnB1c2godiArIDEpOwogICAgICAgIH0pOwogICAgICAgIGNoYW5nZUlucHV0KCdyb3dzX3NlbGVjdGVkJywgc2VsZWN0ZWQpOwogICAgICB9CiAgICAgIHZhciB1cGRhdGVDb2xzU2VsZWN0ZWQgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgY29sdW1ucyA9IHRhYmxlLmNvbHVtbnMoe3NlbGVjdGVkOiB0cnVlfSk7CiAgICAgICAgY2hhbmdlSW5wdXQoJ2NvbHVtbnNfc2VsZWN0ZWQnLCBjb2x1bW5zLmluZGV4ZXMoKS50b0FycmF5KCkpOwogICAgICB9CiAgICAgIHZhciB1cGRhdGVDZWxsc1NlbGVjdGVkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGNlbGxzID0gdGFibGUuY2VsbHMoe3NlbGVjdGVkOiB0cnVlfSk7CiAgICAgICAgdmFyIHNlbGVjdGVkID0gW107CiAgICAgICAgY2VsbHMuZXZlcnkoZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgcm93ID0gdGhpcy5pbmRleCgpLnJvdzsKICAgICAgICAgIHZhciBjb2wgPSB0aGlzLmluZGV4KCkuY29sdW1uOwogICAgICAgICAgc2VsZWN0ZWQgPSBzZWxlY3RlZC5jb25jYXQoW1tyb3cgKyAxLCBjb2xdXSk7CiAgICAgICAgfSk7CiAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxzX3NlbGVjdGVkJywgdHJhbnNwb3NlQXJyYXkyRChzZWxlY3RlZCksICdzaGlueS5tYXRyaXgnKTsKICAgICAgfQogICAgICB0YWJsZS5vbignc2VsZWN0IGRlc2VsZWN0JywgZnVuY3Rpb24oZSwgZHQsIHR5cGUsIGluZGV4ZXMpIHsKICAgICAgICB1cGRhdGVSb3dzU2VsZWN0ZWQoKTsKICAgICAgICB1cGRhdGVDb2xzU2VsZWN0ZWQoKTsKICAgICAgICB1cGRhdGVDZWxsc1NlbGVjdGVkKCk7CiAgICAgIH0pCiAgICB9CgogICAgdmFyIHNlbE1vZGUgPSBkYXRhLnNlbGVjdGlvbi5tb2RlLCBzZWxUYXJnZXQgPSBkYXRhLnNlbGVjdGlvbi50YXJnZXQ7CiAgICB2YXIgc2VsRGlzYWJsZSA9IGRhdGEuc2VsZWN0aW9uLnNlbGVjdGFibGUgPT09IGZhbHNlOwogICAgaWYgKGluQXJyYXkoc2VsTW9kZSwgWydzaW5nbGUnLCAnbXVsdGlwbGUnXSkpIHsKICAgICAgdmFyIHNlbENsYXNzID0gaW5BcnJheShkYXRhLnN0eWxlLCBbJ2Jvb3RzdHJhcCcsICdib290c3RyYXA0J10pID8gJ2FjdGl2ZScgOiAnc2VsZWN0ZWQnOwogICAgICAvLyBzZWxlY3RlZDE6IHJvdyBpbmRpY2VzOyBzZWxlY3RlZDI6IGNvbHVtbiBpbmRpY2VzCiAgICAgIHZhciBpbml0U2VsID0gZnVuY3Rpb24oeCkgewogICAgICAgIGlmICh4ID09PSBudWxsIHx8IHR5cGVvZiB4ID09PSAnYm9vbGVhbicgfHwgc2VsVGFyZ2V0ID09PSAnY2VsbCcpIHsKICAgICAgICAgIHJldHVybiB7cm93czogW10sIGNvbHM6IFtdfTsKICAgICAgICB9IGVsc2UgaWYgKHNlbFRhcmdldCA9PT0gJ3JvdycpIHsKICAgICAgICAgIHJldHVybiB7cm93czogJC5tYWtlQXJyYXkoeCksIGNvbHM6IFtdfTsKICAgICAgICB9IGVsc2UgaWYgKHNlbFRhcmdldCA9PT0gJ2NvbHVtbicpIHsKICAgICAgICAgIHJldHVybiB7cm93czogW10sIGNvbHM6ICQubWFrZUFycmF5KHgpfTsKICAgICAgICB9IGVsc2UgaWYgKHNlbFRhcmdldCA9PT0gJ3Jvdytjb2x1bW4nKSB7CiAgICAgICAgICByZXR1cm4ge3Jvd3M6ICQubWFrZUFycmF5KHgucm93cyksIGNvbHM6ICQubWFrZUFycmF5KHguY29scyl9OwogICAgICAgIH0KICAgICAgfQogICAgICB2YXIgc2VsZWN0ZWQgPSBkYXRhLnNlbGVjdGlvbi5zZWxlY3RlZDsKICAgICAgdmFyIHNlbGVjdGVkMSA9IGluaXRTZWwoc2VsZWN0ZWQpLnJvd3MsIHNlbGVjdGVkMiA9IGluaXRTZWwoc2VsZWN0ZWQpLmNvbHM7CiAgICAgIC8vIHNlbGVjdGFibGUgc2hvdWxkIGNvbnRhaW4gZWl0aGVyIGFsbCBwb3NpdGl2ZSBvciBhbGwgbm9uLXBvc2l0aXZlIHZhbHVlcywgbm90IGJvdGgKICAgICAgLy8gcG9zaXRpdmUgdmFsdWVzIGluZGljYXRlICJzZWxlY3RhYmxlIiB3aGlsZSBub24tcG9zaXRpdmUgdmFsdWVzIG1lYW5zICJub25zZWxlY3RhYmxlIgogICAgICAvLyB0aGUgYXNzZXJ0aW9uIGlzIHBlcmZvcm1lZCBvbiBSIHNpZGUuIChvbmx5IGNvbHVtbiBpbmRpY2lkZXMgY291bGQgYmUgemVybyB3aGljaCBpbmRpY2F0ZXMKICAgICAgLy8gdGhlIHJvdyBuYW1lKQogICAgICB2YXIgc2VsZWN0YWJsZSA9IGRhdGEuc2VsZWN0aW9uLnNlbGVjdGFibGU7CiAgICAgIHZhciBzZWxlY3RhYmxlMSA9IGluaXRTZWwoc2VsZWN0YWJsZSkucm93cywgc2VsZWN0YWJsZTIgPSBpbml0U2VsKHNlbGVjdGFibGUpLmNvbHM7CgogICAgICAvLyBBZnRlciB1c2VycyByZW9yZGVyIHRoZSByb3dzIG9yIGZpbHRlciB0aGUgdGFibGUsIHdlIGNhbm5vdCB1c2UgdGhlIHRhYmxlIGluZGV4CiAgICAgIC8vIGRpcmVjdGx5LiBJbnN0ZWFkLCB3ZSBuZWVkIHRoaXMgZnVuY3Rpb24gdG8gZmluZCBvdXQgdGhlIHJvd3MgYmV0d2VlbiB0aGUgdHdvIGNsaWNrcy4KICAgICAgLy8gSWYgdXNlciBmaWx0ZXIgdGhlIHRhYmxlIGFnYWluIGJldHdlZW4gdGhlIHN0YXJ0IGNsaWNrIGFuZCB0aGUgZW5kIGNsaWNrLCB0aGUgYmVoYXZpb3IKICAgICAgLy8gd291bGQgYmUgdW5kZWZpbmVkLCBidXQgaXQgc2hvdWxkIG5vdCBiZSBhIHByb2JsZW0uCiAgICAgIHZhciBzaGlmdFNlbFJvd3NJbmRleCA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQpIHsKICAgICAgICB2YXIgaW5kZXhlcyA9IHNlcnZlciA/IERUX3Jvd3NfYWxsIDogdGFibGUucm93cyh7IHNlYXJjaDogJ2FwcGxpZWQnIH0pLmluZGV4ZXMoKS50b0FycmF5KCk7CiAgICAgICAgc3RhcnQgPSBpbmRleGVzLmluZGV4T2Yoc3RhcnQpOyBlbmQgPSBpbmRleGVzLmluZGV4T2YoZW5kKTsKICAgICAgICAvLyBpZiBzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQsIHdlIG5lZWQgdG8gc3dhcAogICAgICAgIGlmIChzdGFydCA+IGVuZCkgewogICAgICAgICAgdmFyIHRtcCA9IGVuZDsgZW5kID0gc3RhcnQ7IHN0YXJ0ID0gdG1wOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaW5kZXhlcy5zbGljZShzdGFydCwgZW5kICsgMSk7CiAgICAgIH0KCiAgICAgIHZhciBzZXJ2ZXJSb3dJbmRleCA9IGZ1bmN0aW9uKGNsaWVudFJvd0luZGV4KSB7CiAgICAgICAgcmV0dXJuIHNlcnZlciA/IERUX3Jvd3NfY3VycmVudFtjbGllbnRSb3dJbmRleF0gOiBjbGllbnRSb3dJbmRleCArIDE7CiAgICAgIH0KCiAgICAgIC8vIHJvdywgY29sdW1uLCBvciBjZWxsIHNlbGVjdGlvbgogICAgICB2YXIgbGFzdENsaWNrZWRSb3c7CiAgICAgIGlmIChpbkFycmF5KHNlbFRhcmdldCwgWydyb3cnLCAncm93K2NvbHVtbiddKSkgewogICAgICAgIC8vIEdldCB0aGUgY3VycmVudCBzZWxlY3RlZCByb3dzLiBJdCB3aWxsIGFsc28KICAgICAgICAvLyB1cGRhdGUgdGhlIHNlbGVjdGVkMSdzIHZhbHVlIGJhc2VkIG9uIHRoZSBjdXJyZW50IHJvdyBzZWxlY3Rpb24gc3RhdGUKICAgICAgICAvLyBOb3RlIHdlIGNhbid0IHB1dCB0aGlzIGZ1bmN0aW9uIGluc2lkZSBzZWxlY3RSb3dzKCkgZGlyZWN0bHksCiAgICAgICAgLy8gdGhlIHJlYXNvbiBpcyBtZXRob2Quc2VsZWN0Um93cygpIHdpbGwgb3ZlcnJpZGUgc2VsZWN0ZWQxJ3MgdmFsdWUgYnV0IHRoaXMKICAgICAgICAvLyBmdW5jdGlvbiB3aWxsIGFkZCByb3dzIHRvIHNlbGVjdGVkMSAoa2VlcCB0aGUgZXhpc3Rpbmcgc2VsZWN0aW9uKSwgd2hpY2ggaXMKICAgICAgICAvLyBpbmNvbnNpc3RlbnQgd2l0aCBjb2x1bW4gYW5kIGNlbGwgc2VsZWN0aW9uLgogICAgICAgIHZhciBzZWxlY3RlZFJvd3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciByb3dzID0gdGFibGUucm93cygnLicgKyBzZWxDbGFzcyk7CiAgICAgICAgICB2YXIgaWR4ID0gcm93cy5pbmRleGVzKCkudG9BcnJheSgpOwogICAgICAgICAgaWYgKCFzZXJ2ZXIpIHsKICAgICAgICAgICAgc2VsZWN0ZWQxID0gYWRkT25lKGlkeCk7CiAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZDE7CiAgICAgICAgICB9CiAgICAgICAgICBpZHggPSBpZHgubWFwKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgcmV0dXJuIERUX3Jvd3NfY3VycmVudFtpXTsKICAgICAgICAgIH0pOwogICAgICAgICAgc2VsZWN0ZWQxID0gc2VsTW9kZSA9PT0gJ211bHRpcGxlJyA/IHVuaXF1ZShzZWxlY3RlZDEuY29uY2F0KGlkeCkpIDogaWR4OwogICAgICAgICAgcmV0dXJuIHNlbGVjdGVkMTsKICAgICAgICB9CiAgICAgICAgLy8gQ2hhbmdlIHNlbGVjdGVkMSdzIHZhbHVlIGJhc2VkIG9uIHNlbGVjdGFibGUxLCB0aGVuIHJlZnJlc2ggdGhlIHJvdyBzdGF0ZQogICAgICAgIHZhciBvbmx5S2VlcFNlbGVjdGFibGVSb3dzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBpZiAoc2VsRGlzYWJsZSkgeyAvLyB1c2VycyBjYW4ndCBzZWxlY3Q7IHVzZWZ1bCB3aGVuIG9ubHkgd2FudCBiYWNrZW5kIHNlbGVjdAogICAgICAgICAgICBzZWxlY3RlZDEgPSBbXTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHNlbGVjdGFibGUxLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwogICAgICAgICAgdmFyIG5vbnNlbGVjdGFibGUgPSBzZWxlY3RhYmxlMVswXSA8PSAwOwogICAgICAgICAgaWYgKG5vbnNlbGVjdGFibGUpIHsKICAgICAgICAgICAgLy8gc2hvdWxkIG1ha2Ugc2VsZWN0YWJsZTEgcG9zaXRpdmUKICAgICAgICAgICAgc2VsZWN0ZWQxID0gJChzZWxlY3RlZDEpLm5vdChzZWxlY3RhYmxlMS5tYXAoZnVuY3Rpb24oaSkgeyByZXR1cm4gLWk7IH0pKS5nZXQoKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlbGVjdGVkMSA9ICQoc2VsZWN0ZWQxKS5maWx0ZXIoc2VsZWN0YWJsZTEpLmdldCgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBDaGFuZ2Ugc2VsZWN0ZWQxJ3MgdmFsdWUgYmFzZWQgb24gc2VsZWN0YWJsZTEsIHRoZW4KICAgICAgICAvLyByZWZyZXNoIHRoZSByb3cgc2VsZWN0aW9uIHN0YXRlIGFjY29yZGluZyB0byB2YWx1ZXMgaW4gc2VsZWN0ZWQxCiAgICAgICAgdmFyIHNlbGVjdFJvd3MgPSBmdW5jdGlvbihpZ25vcmVTZWxlY3RhYmxlKSB7CiAgICAgICAgICBpZiAoIWlnbm9yZVNlbGVjdGFibGUpIG9ubHlLZWVwU2VsZWN0YWJsZVJvd3MoKTsKICAgICAgICAgIHRhYmxlLiQoJ3RyLicgKyBzZWxDbGFzcykucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgaWYgKHNlbGVjdGVkMS5sZW5ndGggPT09IDApIHJldHVybjsKICAgICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgICAgdGFibGUucm93cyh7cGFnZTogJ2N1cnJlbnQnfSkuZXZlcnkoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgaWYgKGluQXJyYXkoRFRfcm93c19jdXJyZW50W3RoaXMuaW5kZXgoKV0sIHNlbGVjdGVkMSkpIHsKICAgICAgICAgICAgICAgICQodGhpcy5ub2RlKCkpLmFkZENsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIHNlbGVjdGVkMCA9IHNlbGVjdGVkMS5tYXAoZnVuY3Rpb24oaSkgeyByZXR1cm4gaSAtIDE7IH0pOwogICAgICAgICAgICAkKHRhYmxlLnJvd3Moc2VsZWN0ZWQwKS5ub2RlcygpKS5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHRhYmxlLm9uKCdtb3VzZWRvd24uZHQnLCAndGJvZHkgdHInLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLCB0aGlzUm93ID0gdGFibGUucm93KHRoaXMpOwogICAgICAgICAgaWYgKHNlbE1vZGUgPT09ICdtdWx0aXBsZScpIHsKICAgICAgICAgICAgaWYgKGUuc2hpZnRLZXkgJiYgbGFzdENsaWNrZWRSb3cgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgIC8vIHNlbGVjdCBvciBkZS1zZWxlY3QgZGVwZW5kcyBvbiB0aGUgbGFzdCBjbGlja2VkIHJvdydzIHN0YXR1cwogICAgICAgICAgICAgIHZhciBmbGFnU2VsID0gISR0aGlzLmhhc0NsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICB2YXIgY3J0Q2xpY2tlZFJvdyA9IHNlcnZlclJvd0luZGV4KHRoaXNSb3cuaW5kZXgoKSk7CiAgICAgICAgICAgICAgaWYgKHNlcnZlcikgewogICAgICAgICAgICAgICAgdmFyIHJvd3NJbmRleCA9IHNoaWZ0U2VsUm93c0luZGV4KGxhc3RDbGlja2VkUm93LCBjcnRDbGlja2VkUm93KTsKICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBjdXJyZW50IHBhZ2UncyBzZWxDbGFzcwogICAgICAgICAgICAgICAgcm93c0luZGV4Lm1hcChmdW5jdGlvbihpKSB7CiAgICAgICAgICAgICAgICAgIHZhciByb3dJbmRleCA9IERUX3Jvd3NfY3VycmVudC5pbmRleE9mKGkpOwogICAgICAgICAgICAgICAgICBpZiAocm93SW5kZXggPj0gMCkgewogICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSB0YWJsZS5yb3cocm93SW5kZXgpLm5vZGVzKCkudG8kKCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGZsYWdSb3dTZWwgPSAhcm93Lmhhc0NsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZmxhZ1NlbCA9PT0gZmxhZ1Jvd1NlbCkgcm93LnRvZ2dsZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAvLyB1cGRhdGUgc2VsZWN0ZWQxCiAgICAgICAgICAgICAgICBpZiAoZmxhZ1NlbCkgewogICAgICAgICAgICAgICAgICBzZWxlY3RlZDEgPSB1bmlxdWUoc2VsZWN0ZWQxLmNvbmNhdChyb3dzSW5kZXgpKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkMSA9IHNlbGVjdGVkMS5maWx0ZXIoZnVuY3Rpb24oaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWluQXJyYXkoaW5kZXgsIHJvd3NJbmRleCk7CiAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBqcyBzdGFydHMgZnJvbSAwCiAgICAgICAgICAgICAgICBzaGlmdFNlbFJvd3NJbmRleChsYXN0Q2xpY2tlZFJvdyAtIDEsIGNydENsaWNrZWRSb3cgLSAxKS5tYXAoZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IHRhYmxlLnJvdyh2YWx1ZSkubm9kZXMoKS50byQoKTsKICAgICAgICAgICAgICAgICAgdmFyIGZsYWdSb3dTZWwgPSAhcm93Lmhhc0NsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICAgICAgaWYgKGZsYWdTZWwgPT09IGZsYWdSb3dTZWwpIHJvdy50b2dnbGVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICR0aGlzLnRvZ2dsZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCR0aGlzLmhhc0NsYXNzKHNlbENsYXNzKSkgewogICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICB0YWJsZS4kKCd0ci4nICsgc2VsQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChzZXJ2ZXIgJiYgISR0aGlzLmhhc0NsYXNzKHNlbENsYXNzKSkgewogICAgICAgICAgICB2YXIgaWQgPSBEVF9yb3dzX2N1cnJlbnRbdGhpc1Jvdy5pbmRleCgpXTsKICAgICAgICAgICAgLy8gcmVtb3ZlIGlkIGZyb20gc2VsZWN0ZWQxIHNpbmNlIGl0cyBjbGFzcyAuc2VsZWN0ZWQgaGFzIGJlZW4gcmVtb3ZlZAogICAgICAgICAgICBpZiAoaW5BcnJheShpZCwgc2VsZWN0ZWQxKSkgc2VsZWN0ZWQxLnNwbGljZSgkLmluQXJyYXkoaWQsIHNlbGVjdGVkMSksIDEpOwogICAgICAgICAgfQogICAgICAgICAgc2VsZWN0ZWRSb3dzKCk7IC8vIHVwZGF0ZSBzZWxlY3RlZDEncyB2YWx1ZSBiYXNlZCBvbiBzZWxDbGFzcwogICAgICAgICAgc2VsZWN0Um93cyhmYWxzZSk7IC8vIG9ubHkga2VlcCB0aGUgc2VsZWN0YWJsZSByb3dzCiAgICAgICAgICBjaGFuZ2VJbnB1dCgncm93c19zZWxlY3RlZCcsIHNlbGVjdGVkMSk7CiAgICAgICAgICBjaGFuZ2VJbnB1dCgncm93X2xhc3RfY2xpY2tlZCcsIHNlcnZlclJvd0luZGV4KHRoaXNSb3cuaW5kZXgoKSksIG51bGwsIG51bGwsIHtwcmlvcml0eTogJ2V2ZW50J30pOwogICAgICAgICAgbGFzdENsaWNrZWRSb3cgPSBzZXJ2ZXJSb3dJbmRleCh0aGlzUm93LmluZGV4KCkpOwogICAgICAgIH0pOwogICAgICAgIHNlbGVjdFJvd3MoZmFsc2UpOyAgLy8gaW4gY2FzZSB1c2VycyBoYXZlIHNwZWNpZmllZCBwcmUtc2VsZWN0ZWQgcm93cwogICAgICAgIC8vIHJlc3RvcmUgc2VsZWN0ZWQgcm93cyBhZnRlciB0aGUgdGFibGUgaXMgcmVkcmF3biAoZS5nLiBzb3J0L3NlYXJjaC9wYWdlKTsKICAgICAgICAvLyBjbGllbnQtc2lkZSB0YWJsZXMgd2lsbCBwcmVzZXJ2ZSB0aGUgc2VsZWN0aW9ucyBhdXRvbWF0aWNhbGx5OyBmb3IKICAgICAgICAvLyBzZXJ2ZXItc2lkZSB0YWJsZXMsIHdlIGhhdmUgdG8gKnJlYWwqIHJvdyBpbmRpY2VzIGFyZSBpbiBgc2VsZWN0ZWQxYAogICAgICAgIGNoYW5nZUlucHV0KCdyb3dzX3NlbGVjdGVkJywgc2VsZWN0ZWQxKTsKICAgICAgICBpZiAoc2VydmVyKSB0YWJsZS5vbignZHJhdy5kdCcsIGZ1bmN0aW9uKGUpIHsgc2VsZWN0Um93cyhmYWxzZSk7IH0pOwogICAgICAgIG1ldGhvZHMuc2VsZWN0Um93cyA9IGZ1bmN0aW9uKHNlbGVjdGVkLCBpZ25vcmVTZWxlY3RhYmxlKSB7CiAgICAgICAgICBzZWxlY3RlZDEgPSAkLm1ha2VBcnJheShzZWxlY3RlZCk7CiAgICAgICAgICBzZWxlY3RSb3dzKGlnbm9yZVNlbGVjdGFibGUpOwogICAgICAgICAgY2hhbmdlSW5wdXQoJ3Jvd3Nfc2VsZWN0ZWQnLCBzZWxlY3RlZDEpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGluQXJyYXkoc2VsVGFyZ2V0LCBbJ2NvbHVtbicsICdyb3crY29sdW1uJ10pKSB7CiAgICAgICAgaWYgKHNlbFRhcmdldCA9PT0gJ3Jvdytjb2x1bW4nKSB7CiAgICAgICAgICAkKHRhYmxlLmNvbHVtbnMoKS5mb290ZXIoKSkuY3NzKCdjdXJzb3InLCAncG9pbnRlcicpOwogICAgICAgIH0KICAgICAgICAvLyB1cGRhdGUgc2VsZWN0ZWQyJ3MgdmFsdWUgYmFzZWQgb24gc2VsZWN0YWJsZTIKICAgICAgICB2YXIgb25seUtlZXBTZWxlY3RhYmxlQ29scyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgaWYgKHNlbERpc2FibGUpIHsgLy8gdXNlcnMgY2FuJ3Qgc2VsZWN0OyB1c2VmdWwgd2hlbiBvbmx5IHdhbnQgYmFja2VuZCBzZWxlY3QKICAgICAgICAgICAgc2VsZWN0ZWQyID0gW107CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChzZWxlY3RhYmxlMi5sZW5ndGggPT09IDApIHJldHVybjsKICAgICAgICAgIHZhciBub25zZWxlY3RhYmxlID0gc2VsZWN0YWJsZTJbMF0gPD0gMDsKICAgICAgICAgIGlmIChub25zZWxlY3RhYmxlKSB7CiAgICAgICAgICAgIC8vIG5lZWQgdG8gbWFrZSBzZWxlY3RhYmxlMiBwb3NpdGl2ZQogICAgICAgICAgICBzZWxlY3RlZDIgPSAkKHNlbGVjdGVkMikubm90KHNlbGVjdGFibGUyLm1hcChmdW5jdGlvbihpKSB7IHJldHVybiAtaTsgfSkpLmdldCgpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2VsZWN0ZWQyID0gJChzZWxlY3RlZDIpLmZpbHRlcihzZWxlY3RhYmxlMikuZ2V0KCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIHVwZGF0ZSBzZWxlY3RlZDIgYW5kIHRoZW4KICAgICAgICAvLyByZWZyZXNoIHRoZSBjb2wgc2VsZWN0aW9uIHN0YXRlIGFjY29yZGluZyB0byB2YWx1ZXMgaW4gc2VsZWN0ZWQyCiAgICAgICAgdmFyIHNlbGVjdENvbHMgPSBmdW5jdGlvbihpZ25vcmVTZWxlY3RhYmxlKSB7CiAgICAgICAgICBpZiAoIWlnbm9yZVNlbGVjdGFibGUpIG9ubHlLZWVwU2VsZWN0YWJsZUNvbHMoKTsKICAgICAgICAgIC8vIGlmIHNlbGVjdGVkMiBpcyBub3QgYSB2YWxpZGUgaW5kZXggKGUuZy4sIGxhcmdlciB0aGFuIHRoZSBjb2x1bW4gbnVtYmVyKQogICAgICAgICAgLy8gdGFibGUuY29sdW1ucyhzZWxlY3RlZDIpIHdpbGwgZmFpbCBhbmQgcmVzdWx0IGluIGEgYmxhbmsgdGFibGUKICAgICAgICAgIC8vIHRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIHRhYmxlLnJvd3MoKSwgd2hlcmUgdGhlIG91dC1vZi1yYW5nZSBpbmRleGVzCiAgICAgICAgICAvLyBkb2Vzbid0IGFmZmVjdCBhdCBhbGwKICAgICAgICAgIHNlbGVjdGVkMiA9ICQoc2VsZWN0ZWQyKS5maWx0ZXIodGFibGUuY29sdW1ucygpLmluZGV4ZXMoKSkuZ2V0KCk7CiAgICAgICAgICB0YWJsZS5jb2x1bW5zKCkubm9kZXMoKS5mbGF0dGVuKCkudG8kKCkucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgaWYgKHNlbGVjdGVkMi5sZW5ndGggPiAwKQogICAgICAgICAgICB0YWJsZS5jb2x1bW5zKHNlbGVjdGVkMikubm9kZXMoKS5mbGF0dGVuKCkudG8kKCkuYWRkQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgIH0KICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciBjb2xJZHggPSBzZWxUYXJnZXQgPT09ICdjb2x1bW4nID8gdGFibGUuY2VsbCh0aGlzKS5pbmRleCgpLmNvbHVtbiA6CiAgICAgICAgICAgICAgJC5pbkFycmF5KHRoaXMsIHRhYmxlLmNvbHVtbnMoKS5mb290ZXIoKSksCiAgICAgICAgICAgICAgdGhpc0NvbCA9ICQodGFibGUuY29sdW1uKGNvbElkeCkubm9kZXMoKSk7CiAgICAgICAgICBpZiAoY29sSWR4ID09PSAtMSkgcmV0dXJuOwogICAgICAgICAgaWYgKHRoaXNDb2wuaGFzQ2xhc3Moc2VsQ2xhc3MpKSB7CiAgICAgICAgICAgIHRoaXNDb2wucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICBzZWxlY3RlZDIuc3BsaWNlKCQuaW5BcnJheShjb2xJZHgsIHNlbGVjdGVkMiksIDEpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHNlbE1vZGUgPT09ICdzaW5nbGUnKSAkKHRhYmxlLmNlbGxzKCkubm9kZXMoKSkucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICB0aGlzQ29sLmFkZENsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgc2VsZWN0ZWQyID0gc2VsTW9kZSA9PT0gJ3NpbmdsZScgPyBbY29sSWR4XSA6IHVuaXF1ZShzZWxlY3RlZDIuY29uY2F0KFtjb2xJZHhdKSk7CiAgICAgICAgICB9CiAgICAgICAgICBzZWxlY3RDb2xzKGZhbHNlKTsgLy8gdXBkYXRlIHNlbGVjdGVkMiBiYXNlZCBvbiBzZWxlY3RhYmxlCiAgICAgICAgICBjaGFuZ2VJbnB1dCgnY29sdW1uc19zZWxlY3RlZCcsIHNlbGVjdGVkMik7CiAgICAgICAgfQogICAgICAgIGlmIChzZWxUYXJnZXQgPT09ICdjb2x1bW4nKSB7CiAgICAgICAgICAkKHRhYmxlLnRhYmxlKCkuYm9keSgpKS5vbignY2xpY2suZHQnLCAndGQnLCBjYWxsYmFjayk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICQodGFibGUudGFibGUoKS5mb290ZXIoKSkub24oJ2NsaWNrLmR0JywgJ3RyIHRoJywgY2FsbGJhY2spOwogICAgICAgIH0KICAgICAgICBzZWxlY3RDb2xzKGZhbHNlKTsgIC8vIGluIGNhc2UgdXNlcnMgaGF2ZSBzcGVjaWZpZWQgcHJlLXNlbGVjdGVkIGNvbHVtbnMKICAgICAgICBjaGFuZ2VJbnB1dCgnY29sdW1uc19zZWxlY3RlZCcsIHNlbGVjdGVkMik7CiAgICAgICAgaWYgKHNlcnZlcikgdGFibGUub24oJ2RyYXcuZHQnLCBmdW5jdGlvbihlKSB7IHNlbGVjdENvbHMoZmFsc2UpOyB9KTsKICAgICAgICBtZXRob2RzLnNlbGVjdENvbHVtbnMgPSBmdW5jdGlvbihzZWxlY3RlZCwgaWdub3JlU2VsZWN0YWJsZSkgewogICAgICAgICAgc2VsZWN0ZWQyID0gJC5tYWtlQXJyYXkoc2VsZWN0ZWQpOwogICAgICAgICAgc2VsZWN0Q29scyhpZ25vcmVTZWxlY3RhYmxlKTsKICAgICAgICAgIGNoYW5nZUlucHV0KCdjb2x1bW5zX3NlbGVjdGVkJywgc2VsZWN0ZWQyKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmIChzZWxUYXJnZXQgPT09ICdjZWxsJykgewogICAgICAgIHZhciBzZWxlY3RlZDMgPSBbXSwgc2VsZWN0YWJsZTMgPSBbXTsKICAgICAgICBpZiAoc2VsZWN0ZWQgIT09IG51bGwpIHNlbGVjdGVkMyA9IHNlbGVjdGVkOwogICAgICAgIGlmIChzZWxlY3RhYmxlICE9PSBudWxsICYmIHR5cGVvZiBzZWxlY3RhYmxlICE9PSAnYm9vbGVhbicpIHNlbGVjdGFibGUzID0gc2VsZWN0YWJsZTsKICAgICAgICB2YXIgZmluZEluZGV4ID0gZnVuY3Rpb24oaWosIHNlbCkgewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWwubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGlqWzBdID09PSBzZWxbaV1bMF0gJiYgaWpbMV0gPT09IHNlbFtpXVsxXSkgcmV0dXJuIGk7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfQogICAgICAgICAvLyBDaGFuZ2Ugc2VsZWN0ZWQzJ3MgdmFsdWUgYmFzZWQgb24gc2VsZWN0YWJsZTMsIHRoZW4gcmVmcmVzaCB0aGUgY2VsbCBzdGF0ZQogICAgICAgIHZhciBvbmx5S2VlcFNlbGVjdGFibGVDZWxscyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgaWYgKHNlbERpc2FibGUpIHsgLy8gdXNlcnMgY2FuJ3Qgc2VsZWN0OyB1c2VmdWwgd2hlbiBvbmx5IHdhbnQgYmFja2VuZCBzZWxlY3QKICAgICAgICAgICAgc2VsZWN0ZWQzID0gW107CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChzZWxlY3RhYmxlMy5sZW5ndGggPT09IDApIHJldHVybjsKICAgICAgICAgIHZhciBub25zZWxlY3RhYmxlID0gc2VsZWN0YWJsZTNbMF1bMF0gPD0gMDsKICAgICAgICAgIHZhciBvdXQgPSBbXTsKICAgICAgICAgIGlmIChub25zZWxlY3RhYmxlKSB7CiAgICAgICAgICAgIHNlbGVjdGVkMy5tYXAoZnVuY3Rpb24oaWopIHsKICAgICAgICAgICAgICAvLyBzaG91bGQgbWFrZSBzZWxlY3RhYmxlMyBwb3NpdGl2ZQogICAgICAgICAgICAgIGlmIChmaW5kSW5kZXgoWy1palswXSwgLWlqWzFdXSwgc2VsZWN0YWJsZTMpID09PSAtMSkgeyBvdXQucHVzaChpaik7IH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxlY3RlZDMubWFwKGZ1bmN0aW9uKGlqKSB7CiAgICAgICAgICAgICAgaWYgKGZpbmRJbmRleChpaiwgc2VsZWN0YWJsZTMpID4gLTEpIHsgb3V0LnB1c2goaWopOyB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgICAgc2VsZWN0ZWQzID0gb3V0OwogICAgICAgIH0KICAgICAgICAvLyBDaGFuZ2Ugc2VsZWN0ZWQzJ3MgdmFsdWUgYmFzZWQgb24gc2VsZWN0YWJsZTMsIHRoZW4KICAgICAgICAvLyByZWZyZXNoIHRoZSBjZWxsIHNlbGVjdGlvbiBzdGF0ZSBhY2NvcmRpbmcgdG8gdmFsdWVzIGluIHNlbGVjdGVkMwogICAgICAgIHZhciBzZWxlY3RDZWxscyA9IGZ1bmN0aW9uKGlnbm9yZVNlbGVjdGFibGUpIHsKICAgICAgICAgIGlmICghaWdub3JlU2VsZWN0YWJsZSkgb25seUtlZXBTZWxlY3RhYmxlQ2VsbHMoKTsKICAgICAgICAgIHRhYmxlLiQoJ3RkLicgKyBzZWxDbGFzcykucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgaWYgKHNlbGVjdGVkMy5sZW5ndGggPT09IDApIHJldHVybjsKICAgICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgICAgdGFibGUuY2VsbHMoe3BhZ2U6ICdjdXJyZW50J30pLmV2ZXJ5KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhciBpbmZvID0gdHdlYWtDZWxsSW5kZXgodGhpcyk7CiAgICAgICAgICAgICAgaWYgKGZpbmRJbmRleChbaW5mby5yb3csIGluZm8uY29sXSwgc2VsZWN0ZWQzKSA+IC0xKQogICAgICAgICAgICAgICAgJCh0aGlzLm5vZGUoKSkuYWRkQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNlbGVjdGVkMy5tYXAoZnVuY3Rpb24oaWopIHsKICAgICAgICAgICAgICAkKHRhYmxlLmNlbGwoaWpbMF0gLSAxLCBpalsxXSkubm9kZSgpKS5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgdGFibGUub24oJ2NsaWNrLmR0JywgJ3Rib2R5IHRkJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLCBpbmZvID0gdHdlYWtDZWxsSW5kZXgodGFibGUuY2VsbCh0aGlzKSk7CiAgICAgICAgICBpZiAoJHRoaXMuaGFzQ2xhc3Moc2VsQ2xhc3MpKSB7CiAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgc2VsZWN0ZWQzLnNwbGljZShmaW5kSW5kZXgoW2luZm8ucm93LCBpbmZvLmNvbF0sIHNlbGVjdGVkMyksIDEpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHNlbE1vZGUgPT09ICdzaW5nbGUnKSAkKHRhYmxlLmNlbGxzKCkubm9kZXMoKSkucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICAkdGhpcy5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIHNlbGVjdGVkMyA9IHNlbE1vZGUgPT09ICdzaW5nbGUnID8gW1tpbmZvLnJvdywgaW5mby5jb2xdXSA6CiAgICAgICAgICAgICAgdW5pcXVlKHNlbGVjdGVkMy5jb25jYXQoW1tpbmZvLnJvdywgaW5mby5jb2xdXSkpOwogICAgICAgICAgfQogICAgICAgICAgc2VsZWN0Q2VsbHMoZmFsc2UpOyAvLyBtdXN0IGNhbGwgdGhpcyB0byB1cGRhdGUgc2VsZWN0ZWQzIGJhc2VkIG9uIHNlbGVjdGFibGUzCiAgICAgICAgICBjaGFuZ2VJbnB1dCgnY2VsbHNfc2VsZWN0ZWQnLCB0cmFuc3Bvc2VBcnJheTJEKHNlbGVjdGVkMyksICdzaGlueS5tYXRyaXgnKTsKICAgICAgICB9KTsKICAgICAgICBzZWxlY3RDZWxscyhmYWxzZSk7ICAvLyBpbiBjYXNlIHVzZXJzIGhhdmUgc3BlY2lmaWVkIHByZS1zZWxlY3RlZCBjb2x1bW5zCiAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxzX3NlbGVjdGVkJywgdHJhbnNwb3NlQXJyYXkyRChzZWxlY3RlZDMpLCAnc2hpbnkubWF0cml4Jyk7CgogICAgICAgIGlmIChzZXJ2ZXIpIHRhYmxlLm9uKCdkcmF3LmR0JywgZnVuY3Rpb24oZSkgeyBzZWxlY3RDZWxscyhmYWxzZSk7IH0pOwogICAgICAgIG1ldGhvZHMuc2VsZWN0Q2VsbHMgPSBmdW5jdGlvbihzZWxlY3RlZCwgaWdub3JlU2VsZWN0YWJsZSkgewogICAgICAgICAgc2VsZWN0ZWQzID0gc2VsZWN0ZWQgPyBzZWxlY3RlZCA6IFtdOwogICAgICAgICAgc2VsZWN0Q2VsbHMoaWdub3JlU2VsZWN0YWJsZSk7CiAgICAgICAgICBjaGFuZ2VJbnB1dCgnY2VsbHNfc2VsZWN0ZWQnLCB0cmFuc3Bvc2VBcnJheTJEKHNlbGVjdGVkMyksICdzaGlueS5tYXRyaXgnKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyBleHBvc2Ugc29tZSB0YWJsZSBpbmZvIHRvIFNoaW55CiAgICB2YXIgdXBkYXRlVGFibGVJbmZvID0gZnVuY3Rpb24oZSwgc2V0dGluZ3MpIHsKICAgICAgLy8gVE9ETzogaXMgYW55b25lIGludGVyZXN0ZWQgaW4gdGhlIHBhZ2UgaW5mbz8KICAgICAgLy8gY2hhbmdlSW5wdXQoJ3BhZ2VfaW5mbycsIHRhYmxlLnBhZ2UuaW5mbygpKTsKICAgICAgdmFyIHVwZGF0ZVJvd0luZm8gPSBmdW5jdGlvbihpZCwgbW9kaWZpZXIpIHsKICAgICAgICB2YXIgaWR4OwogICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgIGlkeCA9IG1vZGlmaWVyLnBhZ2UgPT09ICdjdXJyZW50JyA/IERUX3Jvd3NfY3VycmVudCA6IERUX3Jvd3NfYWxsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgcm93cyA9IHRhYmxlLnJvd3MoJC5leHRlbmQoewogICAgICAgICAgICBzZWFyY2g6ICdhcHBsaWVkJywKICAgICAgICAgICAgcGFnZTogJ2FsbCcKICAgICAgICAgIH0sIG1vZGlmaWVyKSk7CiAgICAgICAgICBpZHggPSBhZGRPbmUocm93cy5pbmRleGVzKCkudG9BcnJheSgpKTsKICAgICAgICB9CiAgICAgICAgY2hhbmdlSW5wdXQoJ3Jvd3MnICsgJ18nICsgaWQsIGlkeCk7CiAgICAgIH07CiAgICAgIHVwZGF0ZVJvd0luZm8oJ2N1cnJlbnQnLCB7cGFnZTogJ2N1cnJlbnQnfSk7CiAgICAgIHVwZGF0ZVJvd0luZm8oJ2FsbCcsIHt9KTsKICAgIH0KICAgIHRhYmxlLm9uKCdkcmF3LmR0JywgdXBkYXRlVGFibGVJbmZvKTsKICAgIHVwZGF0ZVRhYmxlSW5mbygpOwoKICAgIC8vIHN0YXRlIGluZm8KICAgIHRhYmxlLm9uKCdkcmF3LmR0IGNvbHVtbi12aXNpYmlsaXR5LmR0JywgZnVuY3Rpb24oKSB7CiAgICAgIGNoYW5nZUlucHV0KCdzdGF0ZScsIHRhYmxlLnN0YXRlKCkpOwogICAgfSk7CiAgICBjaGFuZ2VJbnB1dCgnc3RhdGUnLCB0YWJsZS5zdGF0ZSgpKTsKCiAgICAvLyBzZWFyY2ggaW5mbwogICAgdmFyIHVwZGF0ZVNlYXJjaEluZm8gPSBmdW5jdGlvbigpIHsKICAgICAgY2hhbmdlSW5wdXQoJ3NlYXJjaCcsIHRhYmxlLnNlYXJjaCgpKTsKICAgICAgaWYgKGZpbHRlclJvdykgY2hhbmdlSW5wdXQoJ3NlYXJjaF9jb2x1bW5zJywgZmlsdGVyUm93LnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24odGQpIHsKICAgICAgICByZXR1cm4gJCh0ZCkuZmluZCgnaW5wdXQnKS5maXJzdCgpLnZhbCgpOwogICAgICB9KSk7CiAgICB9CiAgICB0YWJsZS5vbignZHJhdy5kdCcsIHVwZGF0ZVNlYXJjaEluZm8pOwogICAgdXBkYXRlU2VhcmNoSW5mbygpOwoKICAgIHZhciBjZWxsSW5mbyA9IGZ1bmN0aW9uKHRoaXopIHsKICAgICAgdmFyIGluZm8gPSB0d2Vha0NlbGxJbmRleCh0YWJsZS5jZWxsKHRoaXopKTsKICAgICAgaW5mby52YWx1ZSA9IHRhYmxlLmNlbGwodGhpeikuZGF0YSgpOwogICAgICByZXR1cm4gaW5mbzsKICAgIH0KICAgIC8vIHRoZSBjdXJyZW50IGNlbGwgY2xpY2tlZCBvbgogICAgdGFibGUub24oJ2NsaWNrLmR0JywgJ3Rib2R5IHRkJywgZnVuY3Rpb24oKSB7CiAgICAgIGNoYW5nZUlucHV0KCdjZWxsX2NsaWNrZWQnLCBjZWxsSW5mbyh0aGlzKSwgbnVsbCwgbnVsbCwge3ByaW9yaXR5OiAnZXZlbnQnfSk7CiAgICB9KQogICAgY2hhbmdlSW5wdXQoJ2NlbGxfY2xpY2tlZCcsIHt9KTsKCiAgICAvLyBkbyBub3QgdHJpZ2dlciB0YWJsZSBzZWxlY3Rpb24gd2hlbiBjbGlja2luZyBvbiBsaW5rcyB1bmxlc3MgdGhleSBoYXZlIGNsYXNzZXMKICAgIHRhYmxlLm9uKCdjbGljay5kdCcsICd0Ym9keSB0ZCBhJywgZnVuY3Rpb24oZSkgewogICAgICBpZiAodGhpcy5jbGFzc05hbWUgPT09ICcnKSBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgfSk7CgogICAgbWV0aG9kcy5hZGRSb3cgPSBmdW5jdGlvbihkYXRhLCByb3duYW1lLCByZXNldFBhZ2luZykgewogICAgICB2YXIgbiA9IHRhYmxlLmNvbHVtbnMoKS5pbmRleGVzKCkubGVuZ3RoLCBkID0gbiAtIGRhdGEubGVuZ3RoOwogICAgICBpZiAoZCA9PT0gMSkgewogICAgICAgIGRhdGEgPSByb3duYW1lLmNvbmNhdChkYXRhKQogICAgICB9IGVsc2UgaWYgKGQgIT09IDApIHsKICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTsKICAgICAgICBjb25zb2xlLmxvZyh0YWJsZS5jb2x1bW5zKCkuaW5kZXhlcygpKTsKICAgICAgICB0aHJvdyAnTmV3IGRhdGEgbXVzdCBiZSBvZiB0aGUgc2FtZSBsZW5ndGggYXMgY3VycmVudCBkYXRhICgnICsgbiArICcpJzsKICAgICAgfTsKICAgICAgdGFibGUucm93LmFkZChkYXRhKS5kcmF3KHJlc2V0UGFnaW5nKTsKICAgIH0KCiAgICBtZXRob2RzLnVwZGF0ZVNlYXJjaCA9IGZ1bmN0aW9uKGtleXdvcmRzKSB7CiAgICAgIGlmIChrZXl3b3Jkcy5nbG9iYWwgIT09IG51bGwpCiAgICAgICAgJCh0YWJsZS50YWJsZSgpLmNvbnRhaW5lcigpKS5maW5kKCdpbnB1dFt0eXBlPXNlYXJjaF0nKS5maXJzdCgpCiAgICAgICAgICAgICAudmFsKGtleXdvcmRzLmdsb2JhbCkudHJpZ2dlcignaW5wdXQnKTsKICAgICAgdmFyIGNvbHVtbnMgPSBrZXl3b3Jkcy5jb2x1bW5zOwogICAgICBpZiAoIWZpbHRlclJvdyB8fCBjb2x1bW5zID09PSBudWxsKSByZXR1cm47CiAgICAgIGZpbHRlclJvdy50b0FycmF5KCkubWFwKGZ1bmN0aW9uKHRkLCBpKSB7CiAgICAgICAgdmFyIHYgPSB0eXBlb2YgY29sdW1ucyA9PT0gJ3N0cmluZycgPyBjb2x1bW5zIDogY29sdW1uc1tpXTsKICAgICAgICBpZiAodHlwZW9mIHYgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICBjb25zb2xlLmxvZygnVGhlIHNlYXJjaCBrZXl3b3JkIGZvciBjb2x1bW4gJyArIGkgKyAnIGlzIHVuZGVmaW5lZCcpCiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICQodGQpLmZpbmQoJ2lucHV0JykuZmlyc3QoKS52YWwodik7CiAgICAgICAgc2VhcmNoQ29sdW1uKGksIHYpOwogICAgICB9KTsKICAgICAgdGFibGUuZHJhdygpOwogICAgfQoKICAgIG1ldGhvZHMuaGlkZUNvbHMgPSBmdW5jdGlvbihoaWRlLCByZXNldCkgewogICAgICBpZiAocmVzZXQpIHRhYmxlLmNvbHVtbnMoKS52aXNpYmxlKHRydWUsIGZhbHNlKTsKICAgICAgdGFibGUuY29sdW1ucyhoaWRlKS52aXNpYmxlKGZhbHNlKTsKICAgIH0KCiAgICBtZXRob2RzLnNob3dDb2xzID0gZnVuY3Rpb24oc2hvdywgcmVzZXQpIHsKICAgICAgaWYgKHJlc2V0KSB0YWJsZS5jb2x1bW5zKCkudmlzaWJsZShmYWxzZSwgZmFsc2UpOwogICAgICB0YWJsZS5jb2x1bW5zKHNob3cpLnZpc2libGUodHJ1ZSk7CiAgICB9CgogICAgbWV0aG9kcy5jb2xSZW9yZGVyID0gZnVuY3Rpb24ob3JkZXIsIG9yaWdPcmRlcikgewogICAgICB0YWJsZS5jb2xSZW9yZGVyLm9yZGVyKG9yZGVyLCBvcmlnT3JkZXIpOwogICAgfQoKICAgIG1ldGhvZHMuc2VsZWN0UGFnZSA9IGZ1bmN0aW9uKHBhZ2UpIHsKICAgICAgaWYgKHRhYmxlLnBhZ2UuaW5mbygpLnBhZ2VzIDwgcGFnZSB8fCBwYWdlIDwgMSkgewogICAgICAgIHRocm93ICdTZWxlY3RlZCBwYWdlIGlzIG91dCBvZiByYW5nZSc7CiAgICAgIH07CiAgICAgIHRhYmxlLnBhZ2UocGFnZSAtIDEpLmRyYXcoZmFsc2UpOwogICAgfQoKICAgIG1ldGhvZHMucmVsb2FkRGF0YSA9IGZ1bmN0aW9uKHJlc2V0UGFnaW5nLCBjbGVhclNlbGVjdGlvbikgewogICAgICAvLyBlbXB0eSBzZWxlY3Rpb25zIGZpcnN0IGlmIG5lY2Vzc2FyeQogICAgICBpZiAobWV0aG9kcy5zZWxlY3RSb3dzICYmIGluQXJyYXkoJ3JvdycsIGNsZWFyU2VsZWN0aW9uKSkgbWV0aG9kcy5zZWxlY3RSb3dzKFtdKTsKICAgICAgaWYgKG1ldGhvZHMuc2VsZWN0Q29sdW1ucyAmJiBpbkFycmF5KCdjb2x1bW4nLCBjbGVhclNlbGVjdGlvbikpIG1ldGhvZHMuc2VsZWN0Q29sdW1ucyhbXSk7CiAgICAgIGlmIChtZXRob2RzLnNlbGVjdENlbGxzICYmIGluQXJyYXkoJ2NlbGwnLCBjbGVhclNlbGVjdGlvbikpIG1ldGhvZHMuc2VsZWN0Q2VsbHMoW10pOwogICAgICB0YWJsZS5hamF4LnJlbG9hZChudWxsLCByZXNldFBhZ2luZyk7CiAgICB9CgogICAgdGFibGUuc2hpbnlNZXRob2RzID0gbWV0aG9kczsKICB9LAogIHJlc2l6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQsIGluc3RhbmNlKSB7CiAgICBpZiAoaW5zdGFuY2UuZGF0YSkgdGhpcy5yZW5kZXJWYWx1ZShlbCwgaW5zdGFuY2UuZGF0YSwgaW5zdGFuY2UpOwoKICAgIC8vIGR5bmFtaWNhbGx5IGFkanVzdCBoZWlnaHQgaWYgZmlsbENvbnRhaW5lciA9IFRSVUUKICAgIGlmIChpbnN0YW5jZS5maWxsQ29udGFpbmVyKQogICAgICB0aGlzLmZpbGxBdmFpbGFibGVIZWlnaHQoZWwsIGhlaWdodCk7CgogICAgdGhpcy5hZGp1c3RXaWR0aChlbCk7CiAgfSwKCiAgLy8gZHluYW1pY2FsbHkgc2V0IHRoZSBzY3JvbGwgYm9keSB0byBmaWxsIGF2YWlsYWJsZSBoZWlnaHQKICAvLyAodXNlZCB3aXRoIGZpbGxDb250YWluZXIgPSBUUlVFKQogIGZpbGxBdmFpbGFibGVIZWlnaHQ6IGZ1bmN0aW9uKGVsLCBhdmFpbGFibGVIZWlnaHQpIHsKCiAgICAvLyBzZWUgaG93IG11Y2ggb2YgdGhlIHRhYmxlIGlzIG9jY3VwaWVkIGJ5IGhlYWRlci9mb290ZXIgZWxlbWVudHMKICAgIC8vIGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIGEgdGFyZ2V0IHNjcm9sbCBib2R5IGhlaWdodAogICAgdmFyIGR0V3JhcHBlciA9ICQoZWwpLmZpbmQoJ2Rpdi5kYXRhVGFibGVzX3dyYXBwZXInKTsKICAgIHZhciBkdFNjcm9sbEJvZHkgPSAkKGVsKS5maW5kKCQoJ2Rpdi5kYXRhVGFibGVzX3Njcm9sbEJvZHknKSk7CiAgICB2YXIgZnJhbWluZ0hlaWdodCA9IGR0V3JhcHBlci5pbm5lckhlaWdodCgpIC0gZHRTY3JvbGxCb2R5LmlubmVySGVpZ2h0KCk7CiAgICB2YXIgc2Nyb2xsQm9keUhlaWdodCA9IGF2YWlsYWJsZUhlaWdodCAtIGZyYW1pbmdIZWlnaHQ7CgogICAgLy8gc2V0IHRoZSBoZWlnaHQKICAgIGR0U2Nyb2xsQm9keS5oZWlnaHQoc2Nyb2xsQm9keUhlaWdodCArICdweCcpOwogIH0sCgogIC8vIGFkanVzdCB0aGUgd2lkdGggb2YgY29sdW1uczsgcmVtb3ZlIHRoZSBoYXJkLWNvZGVkIHdpZHRocyBvbiB0YWJsZSBhbmQgdGhlCiAgLy8gc2Nyb2xsIGhlYWRlciB3aGVuIHNjcm9sbFgvWSBhcmUgZW5hYmxlZAogIGFkanVzdFdpZHRoOiBmdW5jdGlvbihlbCkgewogICAgdmFyICRlbCA9ICQoZWwpLCB0YWJsZSA9ICRlbC5kYXRhKCdkYXRhdGFibGUnKTsKICAgIGlmICh0YWJsZSkgdGFibGUuY29sdW1ucy5hZGp1c3QoKTsKICAgICRlbC5maW5kKCcuZGF0YVRhYmxlc19zY3JvbGxIZWFkSW5uZXInKS5jc3MoJ3dpZHRoJywgJycpCiAgICAgICAgLmNoaWxkcmVuKCd0YWJsZScpLmNzcygnbWFyZ2luLWxlZnQnLCAnJyk7CiAgfQp9KTsKCiAgaWYgKCFIVE1MV2lkZ2V0cy5zaGlueU1vZGUpIHJldHVybjsKCiAgU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoJ2RhdGF0YWJsZS1jYWxscycsIGZ1bmN0aW9uKGRhdGEpIHsKICAgIHZhciBpZCA9IGRhdGEuaWQ7CiAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7CiAgICB2YXIgdGFibGUgPSBlbCA/ICQoZWwpLmRhdGEoJ2RhdGF0YWJsZScpIDogbnVsbDsKICAgIGlmICghdGFibGUpIHsKICAgICAgY29uc29sZS5sb2coIkNvdWxkbid0IGZpbmQgdGFibGUgd2l0aCBpZCAiICsgaWQpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIG1ldGhvZHMgPSB0YWJsZS5zaGlueU1ldGhvZHMsIGNhbGwgPSBkYXRhLmNhbGw7CiAgICBpZiAobWV0aG9kc1tjYWxsLm1ldGhvZF0pIHsKICAgICAgbWV0aG9kc1tjYWxsLm1ldGhvZF0uYXBwbHkodGFibGUsIGNhbGwuYXJncyk7CiAgICB9IGVsc2UgewogICAgICBjb25zb2xlLmxvZygiVW5rbm93biBtZXRob2QgIiArIGNhbGwubWV0aG9kKTsKICAgIH0KICB9KTsKCn0pKCk7Cg=="></script>
|
|
<link href="data:text/css,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%2Ctable%2EdataTable%20thead%20%2Esorting%5Fasc%5Fdisabled%2Ctable%2EdataTable%20thead%20%2Esorting%5Fdesc%5Fdisabled%7Bcursor%3Apointer%3B%2Acursor%3Ahand%3Bbackground%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%7Bbox%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%3Etable%3Ethead%3Etr%3Eth%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Etd%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Eth%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Etd%7Bvertical%2Dalign%3Amiddle%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Eth%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Etd%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Eth%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Etd%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%2EdataTable%2C%2EdataTables%5Fwrapper%2Eno%2Dfooter%20div%2EdataTables%5FscrollBody%3Etable%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,%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%0Adiv%2Edatatables%20%7B%0Acolor%3A%20%23333%3B%0A%7D%0A" rel="stylesheet" />
|
|
<script src="data:application/javascript;base64,LyohCiAgIENvcHlyaWdodCAyMDA4LTIwMTkgU3ByeU1lZGlhIEx0ZC4KCiBUaGlzIHNvdXJjZSBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGF2YWlsYWJsZSB1bmRlciB0aGUgZm9sbG93aW5nIGxpY2Vuc2U6CiAgIE1JVCBsaWNlbnNlIC0gaHR0cDovL2RhdGF0YWJsZXMubmV0L2xpY2Vuc2UKCiBUaGlzIHNvdXJjZSBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIGxpY2Vuc2UgZmlsZXMgZm9yIGRldGFpbHMuCgogRm9yIGRldGFpbHMgcGxlYXNlIHJlZmVyIHRvOiBodHRwOi8vd3d3LmRhdGF0YWJsZXMubmV0CiBEYXRhVGFibGVzIDEuMTAuMjAKIMKpMjAwOC0yMDE5IFNwcnlNZWRpYSBMdGQgLSBkYXRhdGFibGVzLm5ldC9saWNlbnNlCiovCnZhciAkanNjb21wPSRqc2NvbXB8fHt9OyRqc2NvbXAuc2NvcGU9e307JGpzY29tcC5maW5kSW50ZXJuYWw9ZnVuY3Rpb24oZix6LHkpe2YgaW5zdGFuY2VvZiBTdHJpbmcmJihmPVN0cmluZyhmKSk7Zm9yKHZhciBwPWYubGVuZ3RoLEg9MDtIPHA7SCsrKXt2YXIgTD1mW0hdO2lmKHouY2FsbCh5LEwsSCxmKSlyZXR1cm57aTpILHY6TH19cmV0dXJue2k6LTEsdjp2b2lkIDB9fTskanNjb21wLkFTU1VNRV9FUzU9ITE7JGpzY29tcC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTskanNjb21wLkFTU1VNRV9OT19OQVRJVkVfU0VUPSExOyRqc2NvbXAuU0lNUExFX0ZST1VORF9QT0xZRklMTD0hMTsKJGpzY29tcC5kZWZpbmVQcm9wZXJ0eT0kanNjb21wLkFTU1VNRV9FUzV8fCJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuZGVmaW5lUHJvcGVydGllcz9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24oZix6LHkpe2YhPUFycmF5LnByb3RvdHlwZSYmZiE9T2JqZWN0LnByb3RvdHlwZSYmKGZbel09eS52YWx1ZSl9OyRqc2NvbXAuZ2V0R2xvYmFsPWZ1bmN0aW9uKGYpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3c9PT1mP2Y6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWwmJm51bGwhPWdsb2JhbD9nbG9iYWw6Zn07JGpzY29tcC5nbG9iYWw9JGpzY29tcC5nZXRHbG9iYWwodGhpcyk7CiRqc2NvbXAucG9seWZpbGw9ZnVuY3Rpb24oZix6LHkscCl7aWYoeil7eT0kanNjb21wLmdsb2JhbDtmPWYuc3BsaXQoIi4iKTtmb3IocD0wO3A8Zi5sZW5ndGgtMTtwKyspe3ZhciBIPWZbcF07SCBpbiB5fHwoeVtIXT17fSk7eT15W0hdfWY9ZltmLmxlbmd0aC0xXTtwPXlbZl07ej16KHApO3ohPXAmJm51bGwhPXomJiRqc2NvbXAuZGVmaW5lUHJvcGVydHkoeSxmLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6en0pfX07JGpzY29tcC5wb2x5ZmlsbCgiQXJyYXkucHJvdG90eXBlLmZpbmQiLGZ1bmN0aW9uKGYpe3JldHVybiBmP2Y6ZnVuY3Rpb24oZix5KXtyZXR1cm4gJGpzY29tcC5maW5kSW50ZXJuYWwodGhpcyxmLHkpLnZ9fSwiZXM2IiwiZXMzIik7CihmdW5jdGlvbihmKXsiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxmdW5jdGlvbih6KXtyZXR1cm4gZih6LHdpbmRvdyxkb2N1bWVudCl9KToib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHoseSl7enx8KHo9d2luZG93KTt5fHwoeT0idW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3c/cmVxdWlyZSgianF1ZXJ5Iik6cmVxdWlyZSgianF1ZXJ5IikoeikpO3JldHVybiBmKHkseix6LmRvY3VtZW50KX06ZihqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGYseix5LHApe2Z1bmN0aW9uIEgoYSl7dmFyIGIsYyxkPXt9O2YuZWFjaChhLGZ1bmN0aW9uKGUsaCl7KGI9ZS5tYXRjaCgvXihbXkEtWl0rPykoW0EtWl0pLykpJiYtMSE9PSJhIGFhIGFpIGFvIGFzIGIgZm4gaSBtIG8gcyAiLmluZGV4T2YoYlsxXSsiICIpJiYoYz1lLnJlcGxhY2UoYlswXSxiWzJdLnRvTG93ZXJDYXNlKCkpLApkW2NdPWUsIm8iPT09YlsxXSYmSChhW2VdKSl9KTthLl9odW5nYXJpYW5NYXA9ZH1mdW5jdGlvbiBMKGEsYixjKXthLl9odW5nYXJpYW5NYXB8fEgoYSk7dmFyIGQ7Zi5lYWNoKGIsZnVuY3Rpb24oZSxoKXtkPWEuX2h1bmdhcmlhbk1hcFtlXTtkPT09cHx8IWMmJmJbZF0hPT1wfHwoIm8iPT09ZC5jaGFyQXQoMCk/KGJbZF18fChiW2RdPXt9KSxmLmV4dGVuZCghMCxiW2RdLGJbZV0pLEwoYVtkXSxiW2RdLGMpKTpiW2RdPWJbZV0pfSl9ZnVuY3Rpb24gR2EoYSl7dmFyIGI9cS5kZWZhdWx0cy5vTGFuZ3VhZ2UsYz1iLnNEZWNpbWFsO2MmJkhhKGMpO2lmKGEpe3ZhciBkPWEuc1plcm9SZWNvcmRzOyFhLnNFbXB0eVRhYmxlJiZkJiYiTm8gZGF0YSBhdmFpbGFibGUgaW4gdGFibGUiPT09Yi5zRW1wdHlUYWJsZSYmTShhLGEsInNaZXJvUmVjb3JkcyIsInNFbXB0eVRhYmxlIik7IWEuc0xvYWRpbmdSZWNvcmRzJiZkJiYiTG9hZGluZy4uLiI9PT1iLnNMb2FkaW5nUmVjb3JkcyYmTShhLGEsCiJzWmVyb1JlY29yZHMiLCJzTG9hZGluZ1JlY29yZHMiKTthLnNJbmZvVGhvdXNhbmRzJiYoYS5zVGhvdXNhbmRzPWEuc0luZm9UaG91c2FuZHMpOyhhPWEuc0RlY2ltYWwpJiZjIT09YSYmSGEoYSl9fWZ1bmN0aW9uIGpiKGEpe0YoYSwib3JkZXJpbmciLCJiU29ydCIpO0YoYSwib3JkZXJNdWx0aSIsImJTb3J0TXVsdGkiKTtGKGEsIm9yZGVyQ2xhc3NlcyIsImJTb3J0Q2xhc3NlcyIpO0YoYSwib3JkZXJDZWxsc1RvcCIsImJTb3J0Q2VsbHNUb3AiKTtGKGEsIm9yZGVyIiwiYWFTb3J0aW5nIik7RihhLCJvcmRlckZpeGVkIiwiYWFTb3J0aW5nRml4ZWQiKTtGKGEsInBhZ2luZyIsImJQYWdpbmF0ZSIpO0YoYSwicGFnaW5nVHlwZSIsInNQYWdpbmF0aW9uVHlwZSIpO0YoYSwicGFnZUxlbmd0aCIsImlEaXNwbGF5TGVuZ3RoIik7RihhLCJzZWFyY2hpbmciLCJiRmlsdGVyIik7ImJvb2xlYW4iPT09dHlwZW9mIGEuc1Njcm9sbFgmJihhLnNTY3JvbGxYPWEuc1Njcm9sbFg/IjEwMCUiOgoiIik7ImJvb2xlYW4iPT09dHlwZW9mIGEuc2Nyb2xsWCYmKGEuc2Nyb2xsWD1hLnNjcm9sbFg/IjEwMCUiOiIiKTtpZihhPWEuYW9TZWFyY2hDb2xzKWZvcih2YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2IrKylhW2JdJiZMKHEubW9kZWxzLm9TZWFyY2gsYVtiXSl9ZnVuY3Rpb24ga2IoYSl7RihhLCJvcmRlcmFibGUiLCJiU29ydGFibGUiKTtGKGEsIm9yZGVyRGF0YSIsImFEYXRhU29ydCIpO0YoYSwib3JkZXJTZXF1ZW5jZSIsImFzU29ydGluZyIpO0YoYSwib3JkZXJEYXRhVHlwZSIsInNvcnREYXRhVHlwZSIpO3ZhciBiPWEuYURhdGFTb3J0OyJudW1iZXIiIT09dHlwZW9mIGJ8fGYuaXNBcnJheShiKXx8KGEuYURhdGFTb3J0PVtiXSl9ZnVuY3Rpb24gbGIoYSl7aWYoIXEuX19icm93c2VyKXt2YXIgYj17fTtxLl9fYnJvd3Nlcj1iO3ZhciBjPWYoIjxkaXYvPiIpLmNzcyh7cG9zaXRpb246ImZpeGVkIix0b3A6MCxsZWZ0Oi0xKmYoeikuc2Nyb2xsTGVmdCgpLGhlaWdodDoxLHdpZHRoOjEsCm92ZXJmbG93OiJoaWRkZW4ifSkuYXBwZW5kKGYoIjxkaXYvPiIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MSxsZWZ0OjEsd2lkdGg6MTAwLG92ZXJmbG93OiJzY3JvbGwifSkuYXBwZW5kKGYoIjxkaXYvPiIpLmNzcyh7d2lkdGg6IjEwMCUiLGhlaWdodDoxMH0pKSkuYXBwZW5kVG8oImJvZHkiKSxkPWMuY2hpbGRyZW4oKSxlPWQuY2hpbGRyZW4oKTtiLmJhcldpZHRoPWRbMF0ub2Zmc2V0V2lkdGgtZFswXS5jbGllbnRXaWR0aDtiLmJTY3JvbGxPdmVyc2l6ZT0xMDA9PT1lWzBdLm9mZnNldFdpZHRoJiYxMDAhPT1kWzBdLmNsaWVudFdpZHRoO2IuYlNjcm9sbGJhckxlZnQ9MSE9PU1hdGgucm91bmQoZS5vZmZzZXQoKS5sZWZ0KTtiLmJCb3VuZGluZz1jWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoPyEwOiExO2MucmVtb3ZlKCl9Zi5leHRlbmQoYS5vQnJvd3NlcixxLl9fYnJvd3Nlcik7YS5vU2Nyb2xsLmlCYXJXaWR0aD1xLl9fYnJvd3Nlci5iYXJXaWR0aH0KZnVuY3Rpb24gbWIoYSxiLGMsZCxlLGgpe3ZhciBnPSExO2lmKGMhPT1wKXt2YXIgaz1jO2c9ITB9Zm9yKDtkIT09ZTspYS5oYXNPd25Qcm9wZXJ0eShkKSYmKGs9Zz9iKGssYVtkXSxkLGEpOmFbZF0sZz0hMCxkKz1oKTtyZXR1cm4ga31mdW5jdGlvbiBJYShhLGIpe3ZhciBjPXEuZGVmYXVsdHMuY29sdW1uLGQ9YS5hb0NvbHVtbnMubGVuZ3RoO2M9Zi5leHRlbmQoe30scS5tb2RlbHMub0NvbHVtbixjLHtuVGg6Yj9iOnkuY3JlYXRlRWxlbWVudCgidGgiKSxzVGl0bGU6Yy5zVGl0bGU/Yy5zVGl0bGU6Yj9iLmlubmVySFRNTDoiIixhRGF0YVNvcnQ6Yy5hRGF0YVNvcnQ/Yy5hRGF0YVNvcnQ6W2RdLG1EYXRhOmMubURhdGE/Yy5tRGF0YTpkLGlkeDpkfSk7YS5hb0NvbHVtbnMucHVzaChjKTtjPWEuYW9QcmVTZWFyY2hDb2xzO2NbZF09Zi5leHRlbmQoe30scS5tb2RlbHMub1NlYXJjaCxjW2RdKTttYShhLGQsZihiKS5kYXRhKCkpfWZ1bmN0aW9uIG1hKGEsYixjKXtiPWEuYW9Db2x1bW5zW2JdOwp2YXIgZD1hLm9DbGFzc2VzLGU9ZihiLm5UaCk7aWYoIWIuc1dpZHRoT3JpZyl7Yi5zV2lkdGhPcmlnPWUuYXR0cigid2lkdGgiKXx8bnVsbDt2YXIgaD0oZS5hdHRyKCJzdHlsZSIpfHwiIikubWF0Y2goL3dpZHRoOlxzKihcZCtbcHhlbSVdKykvKTtoJiYoYi5zV2lkdGhPcmlnPWhbMV0pfWMhPT1wJiZudWxsIT09YyYmKGtiKGMpLEwocS5kZWZhdWx0cy5jb2x1bW4sYywhMCksYy5tRGF0YVByb3A9PT1wfHxjLm1EYXRhfHwoYy5tRGF0YT1jLm1EYXRhUHJvcCksYy5zVHlwZSYmKGIuX3NNYW51YWxUeXBlPWMuc1R5cGUpLGMuY2xhc3NOYW1lJiYhYy5zQ2xhc3MmJihjLnNDbGFzcz1jLmNsYXNzTmFtZSksYy5zQ2xhc3MmJmUuYWRkQ2xhc3MoYy5zQ2xhc3MpLGYuZXh0ZW5kKGIsYyksTShiLGMsInNXaWR0aCIsInNXaWR0aE9yaWciKSxjLmlEYXRhU29ydCE9PXAmJihiLmFEYXRhU29ydD1bYy5pRGF0YVNvcnRdKSxNKGIsYywiYURhdGFTb3J0IikpO3ZhciBnPWIubURhdGEsaz1VKGcpLApsPWIubVJlbmRlcj9VKGIubVJlbmRlcik6bnVsbDtjPWZ1bmN0aW9uKGEpe3JldHVybiJzdHJpbmciPT09dHlwZW9mIGEmJi0xIT09YS5pbmRleE9mKCJAIil9O2IuX2JBdHRyU3JjPWYuaXNQbGFpbk9iamVjdChnKSYmKGMoZy5zb3J0KXx8YyhnLnR5cGUpfHxjKGcuZmlsdGVyKSk7Yi5fc2V0dGVyPW51bGw7Yi5mbkdldERhdGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWsoYSxiLHAsYyk7cmV0dXJuIGwmJmI/bChkLGIsYSxjKTpkfTtiLmZuU2V0RGF0YT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIFEoZykoYSxiLGMpfTsibnVtYmVyIiE9PXR5cGVvZiBnJiYoYS5fcm93UmVhZE9iamVjdD0hMCk7YS5vRmVhdHVyZXMuYlNvcnR8fChiLmJTb3J0YWJsZT0hMSxlLmFkZENsYXNzKGQuc1NvcnRhYmxlTm9uZSkpO2E9LTEhPT1mLmluQXJyYXkoImFzYyIsYi5hc1NvcnRpbmcpO2M9LTEhPT1mLmluQXJyYXkoImRlc2MiLGIuYXNTb3J0aW5nKTtiLmJTb3J0YWJsZSYmKGF8fGMpP2EmJiFjPyhiLnNTb3J0aW5nQ2xhc3M9CmQuc1NvcnRhYmxlQXNjLGIuc1NvcnRpbmdDbGFzc0pVST1kLnNTb3J0SlVJQXNjQWxsb3dlZCk6IWEmJmM/KGIuc1NvcnRpbmdDbGFzcz1kLnNTb3J0YWJsZURlc2MsYi5zU29ydGluZ0NsYXNzSlVJPWQuc1NvcnRKVUlEZXNjQWxsb3dlZCk6KGIuc1NvcnRpbmdDbGFzcz1kLnNTb3J0YWJsZSxiLnNTb3J0aW5nQ2xhc3NKVUk9ZC5zU29ydEpVSSk6KGIuc1NvcnRpbmdDbGFzcz1kLnNTb3J0YWJsZU5vbmUsYi5zU29ydGluZ0NsYXNzSlVJPSIiKX1mdW5jdGlvbiBhYShhKXtpZighMSE9PWEub0ZlYXR1cmVzLmJBdXRvV2lkdGgpe3ZhciBiPWEuYW9Db2x1bW5zO0phKGEpO2Zvcih2YXIgYz0wLGQ9Yi5sZW5ndGg7YzxkO2MrKyliW2NdLm5UaC5zdHlsZS53aWR0aD1iW2NdLnNXaWR0aH1iPWEub1Njcm9sbDsiIj09PWIuc1kmJiIiPT09Yi5zWHx8bmEoYSk7QShhLG51bGwsImNvbHVtbi1zaXppbmciLFthXSl9ZnVuY3Rpb24gYmEoYSxiKXthPW9hKGEsImJWaXNpYmxlIik7cmV0dXJuIm51bWJlciI9PT0KdHlwZW9mIGFbYl0/YVtiXTpudWxsfWZ1bmN0aW9uIGNhKGEsYil7YT1vYShhLCJiVmlzaWJsZSIpO2I9Zi5pbkFycmF5KGIsYSk7cmV0dXJuLTEhPT1iP2I6bnVsbH1mdW5jdGlvbiBXKGEpe3ZhciBiPTA7Zi5lYWNoKGEuYW9Db2x1bW5zLGZ1bmN0aW9uKGEsZCl7ZC5iVmlzaWJsZSYmIm5vbmUiIT09ZihkLm5UaCkuY3NzKCJkaXNwbGF5IikmJmIrK30pO3JldHVybiBifWZ1bmN0aW9uIG9hKGEsYil7dmFyIGM9W107Zi5tYXAoYS5hb0NvbHVtbnMsZnVuY3Rpb24oYSxlKXthW2JdJiZjLnB1c2goZSl9KTtyZXR1cm4gY31mdW5jdGlvbiBLYShhKXt2YXIgYj1hLmFvQ29sdW1ucyxjPWEuYW9EYXRhLGQ9cS5leHQudHlwZS5kZXRlY3QsZSxoLGc7dmFyIGs9MDtmb3IoZT1iLmxlbmd0aDtrPGU7aysrKXt2YXIgZj1iW2tdO3ZhciBuPVtdO2lmKCFmLnNUeXBlJiZmLl9zTWFudWFsVHlwZSlmLnNUeXBlPWYuX3NNYW51YWxUeXBlO2Vsc2UgaWYoIWYuc1R5cGUpe3ZhciBtPTA7Zm9yKGg9CmQubGVuZ3RoO208aDttKyspe3ZhciB3PTA7Zm9yKGc9Yy5sZW5ndGg7dzxnO3crKyl7blt3XT09PXAmJihuW3ddPUkoYSx3LGssInR5cGUiKSk7dmFyIHU9ZFttXShuW3ddLGEpO2lmKCF1JiZtIT09ZC5sZW5ndGgtMSlicmVhaztpZigiaHRtbCI9PT11KWJyZWFrfWlmKHUpe2Yuc1R5cGU9dTticmVha319Zi5zVHlwZXx8KGYuc1R5cGU9InN0cmluZyIpfX19ZnVuY3Rpb24gbmIoYSxiLGMsZCl7dmFyIGUsaCxnLGs9YS5hb0NvbHVtbnM7aWYoYilmb3IoZT1iLmxlbmd0aC0xOzA8PWU7ZS0tKXt2YXIgbD1iW2VdO3ZhciBuPWwudGFyZ2V0cyE9PXA/bC50YXJnZXRzOmwuYVRhcmdldHM7Zi5pc0FycmF5KG4pfHwobj1bbl0pO3ZhciBtPTA7Zm9yKGg9bi5sZW5ndGg7bTxoO20rKylpZigibnVtYmVyIj09PXR5cGVvZiBuW21dJiYwPD1uW21dKXtmb3IoO2subGVuZ3RoPD1uW21dOylJYShhKTtkKG5bbV0sbCl9ZWxzZSBpZigibnVtYmVyIj09PXR5cGVvZiBuW21dJiYwPm5bbV0pZChrLmxlbmd0aCsKblttXSxsKTtlbHNlIGlmKCJzdHJpbmciPT09dHlwZW9mIG5bbV0pe3ZhciB3PTA7Zm9yKGc9ay5sZW5ndGg7dzxnO3crKykoIl9hbGwiPT1uW21dfHxmKGtbd10ublRoKS5oYXNDbGFzcyhuW21dKSkmJmQodyxsKX19aWYoYylmb3IoZT0wLGE9Yy5sZW5ndGg7ZTxhO2UrKylkKGUsY1tlXSl9ZnVuY3Rpb24gUihhLGIsYyxkKXt2YXIgZT1hLmFvRGF0YS5sZW5ndGgsaD1mLmV4dGVuZCghMCx7fSxxLm1vZGVscy5vUm93LHtzcmM6Yz8iZG9tIjoiZGF0YSIsaWR4OmV9KTtoLl9hRGF0YT1iO2EuYW9EYXRhLnB1c2goaCk7Zm9yKHZhciBnPWEuYW9Db2x1bW5zLGs9MCxsPWcubGVuZ3RoO2s8bDtrKyspZ1trXS5zVHlwZT1udWxsO2EuYWlEaXNwbGF5TWFzdGVyLnB1c2goZSk7Yj1hLnJvd0lkRm4oYik7YiE9PXAmJihhLmFJZHNbYl09aCk7IWMmJmEub0ZlYXR1cmVzLmJEZWZlclJlbmRlcnx8TGEoYSxlLGMsZCk7cmV0dXJuIGV9ZnVuY3Rpb24gcGEoYSxiKXt2YXIgYztiIGluc3RhbmNlb2YKZnx8KGI9ZihiKSk7cmV0dXJuIGIubWFwKGZ1bmN0aW9uKGIsZSl7Yz1NYShhLGUpO3JldHVybiBSKGEsYy5kYXRhLGUsYy5jZWxscyl9KX1mdW5jdGlvbiBJKGEsYixjLGQpe3ZhciBlPWEuaURyYXcsaD1hLmFvQ29sdW1uc1tjXSxnPWEuYW9EYXRhW2JdLl9hRGF0YSxrPWguc0RlZmF1bHRDb250ZW50LGY9aC5mbkdldERhdGEoZyxkLHtzZXR0aW5nczphLHJvdzpiLGNvbDpjfSk7aWYoZj09PXApcmV0dXJuIGEuaURyYXdFcnJvciE9ZSYmbnVsbD09PWsmJihPKGEsMCwiUmVxdWVzdGVkIHVua25vd24gcGFyYW1ldGVyICIrKCJmdW5jdGlvbiI9PXR5cGVvZiBoLm1EYXRhPyJ7ZnVuY3Rpb259IjoiJyIraC5tRGF0YSsiJyIpKyIgZm9yIHJvdyAiK2IrIiwgY29sdW1uICIrYyw0KSxhLmlEcmF3RXJyb3I9ZSksaztpZigoZj09PWd8fG51bGw9PT1mKSYmbnVsbCE9PWsmJmQhPT1wKWY9aztlbHNlIGlmKCJmdW5jdGlvbiI9PT10eXBlb2YgZilyZXR1cm4gZi5jYWxsKGcpO3JldHVybiBudWxsPT09CmYmJiJkaXNwbGF5Ij09ZD8iIjpmfWZ1bmN0aW9uIG9iKGEsYixjLGQpe2EuYW9Db2x1bW5zW2NdLmZuU2V0RGF0YShhLmFvRGF0YVtiXS5fYURhdGEsZCx7c2V0dGluZ3M6YSxyb3c6Yixjb2w6Y30pfWZ1bmN0aW9uIE5hKGEpe3JldHVybiBmLm1hcChhLm1hdGNoKC8oXFwufFteXC5dKSsvZyl8fFsiIl0sZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXFxcLi9nLCIuIil9KX1mdW5jdGlvbiBVKGEpe2lmKGYuaXNQbGFpbk9iamVjdChhKSl7dmFyIGI9e307Zi5lYWNoKGEsZnVuY3Rpb24oYSxjKXtjJiYoYlthXT1VKGMpKX0pO3JldHVybiBmdW5jdGlvbihhLGMsaCxnKXt2YXIgZD1iW2NdfHxiLl87cmV0dXJuIGQhPT1wP2QoYSxjLGgsZyk6YX19aWYobnVsbD09PWEpcmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhfTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpcmV0dXJuIGZ1bmN0aW9uKGIsYyxoLGcpe3JldHVybiBhKGIsYyxoLGcpfTtpZigic3RyaW5nIiE9PXR5cGVvZiBhfHwKLTE9PT1hLmluZGV4T2YoIi4iKSYmLTE9PT1hLmluZGV4T2YoIlsiKSYmLTE9PT1hLmluZGV4T2YoIigiKSlyZXR1cm4gZnVuY3Rpb24oYixjKXtyZXR1cm4gYlthXX07dmFyIGM9ZnVuY3Rpb24oYSxiLGgpe2lmKCIiIT09aCl7dmFyIGQ9TmEoaCk7Zm9yKHZhciBlPTAsbD1kLmxlbmd0aDtlPGw7ZSsrKXtoPWRbZV0ubWF0Y2goZGEpO3ZhciBuPWRbZV0ubWF0Y2goWCk7aWYoaCl7ZFtlXT1kW2VdLnJlcGxhY2UoZGEsIiIpOyIiIT09ZFtlXSYmKGE9YVtkW2VdXSk7bj1bXTtkLnNwbGljZSgwLGUrMSk7ZD1kLmpvaW4oIi4iKTtpZihmLmlzQXJyYXkoYSkpZm9yKGU9MCxsPWEubGVuZ3RoO2U8bDtlKyspbi5wdXNoKGMoYVtlXSxiLGQpKTthPWhbMF0uc3Vic3RyaW5nKDEsaFswXS5sZW5ndGgtMSk7YT0iIj09PWE/bjpuLmpvaW4oYSk7YnJlYWt9ZWxzZSBpZihuKXtkW2VdPWRbZV0ucmVwbGFjZShYLCIiKTthPWFbZFtlXV0oKTtjb250aW51ZX1pZihudWxsPT09YXx8YVtkW2VdXT09PQpwKXJldHVybiBwO2E9YVtkW2VdXX19cmV0dXJuIGF9O3JldHVybiBmdW5jdGlvbihiLGUpe3JldHVybiBjKGIsZSxhKX19ZnVuY3Rpb24gUShhKXtpZihmLmlzUGxhaW5PYmplY3QoYSkpcmV0dXJuIFEoYS5fKTtpZihudWxsPT09YSlyZXR1cm4gZnVuY3Rpb24oKXt9O2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSlyZXR1cm4gZnVuY3Rpb24oYixkLGUpe2EoYiwic2V0IixkLGUpfTtpZigic3RyaW5nIiE9PXR5cGVvZiBhfHwtMT09PWEuaW5kZXhPZigiLiIpJiYtMT09PWEuaW5kZXhPZigiWyIpJiYtMT09PWEuaW5kZXhPZigiKCIpKXJldHVybiBmdW5jdGlvbihiLGQpe2JbYV09ZH07dmFyIGI9ZnVuY3Rpb24oYSxkLGUpe2U9TmEoZSk7dmFyIGM9ZVtlLmxlbmd0aC0xXTtmb3IodmFyIGcsayxsPTAsbj1lLmxlbmd0aC0xO2w8bjtsKyspe2c9ZVtsXS5tYXRjaChkYSk7az1lW2xdLm1hdGNoKFgpO2lmKGcpe2VbbF09ZVtsXS5yZXBsYWNlKGRhLCIiKTthW2VbbF1dPVtdO2M9ZS5zbGljZSgpOwpjLnNwbGljZSgwLGwrMSk7Zz1jLmpvaW4oIi4iKTtpZihmLmlzQXJyYXkoZCkpZm9yKGs9MCxuPWQubGVuZ3RoO2s8bjtrKyspYz17fSxiKGMsZFtrXSxnKSxhW2VbbF1dLnB1c2goYyk7ZWxzZSBhW2VbbF1dPWQ7cmV0dXJufWsmJihlW2xdPWVbbF0ucmVwbGFjZShYLCIiKSxhPWFbZVtsXV0oZCkpO2lmKG51bGw9PT1hW2VbbF1dfHxhW2VbbF1dPT09cClhW2VbbF1dPXt9O2E9YVtlW2xdXX1pZihjLm1hdGNoKFgpKWFbYy5yZXBsYWNlKFgsIiIpXShkKTtlbHNlIGFbYy5yZXBsYWNlKGRhLCIiKV09ZH07cmV0dXJuIGZ1bmN0aW9uKGMsZCl7cmV0dXJuIGIoYyxkLGEpfX1mdW5jdGlvbiBPYShhKXtyZXR1cm4gSihhLmFvRGF0YSwiX2FEYXRhIil9ZnVuY3Rpb24gcWEoYSl7YS5hb0RhdGEubGVuZ3RoPTA7YS5haURpc3BsYXlNYXN0ZXIubGVuZ3RoPTA7YS5haURpc3BsYXkubGVuZ3RoPTA7YS5hSWRzPXt9fWZ1bmN0aW9uIHJhKGEsYixjKXtmb3IodmFyIGQ9LTEsZT0wLGg9YS5sZW5ndGg7ZTwKaDtlKyspYVtlXT09Yj9kPWU6YVtlXT5iJiZhW2VdLS07IC0xIT1kJiZjPT09cCYmYS5zcGxpY2UoZCwxKX1mdW5jdGlvbiBlYShhLGIsYyxkKXt2YXIgZT1hLmFvRGF0YVtiXSxoLGc9ZnVuY3Rpb24oYyxkKXtmb3IoO2MuY2hpbGROb2Rlcy5sZW5ndGg7KWMucmVtb3ZlQ2hpbGQoYy5maXJzdENoaWxkKTtjLmlubmVySFRNTD1JKGEsYixkLCJkaXNwbGF5Iil9O2lmKCJkb20iIT09YyYmKGMmJiJhdXRvIiE9PWN8fCJkb20iIT09ZS5zcmMpKXt2YXIgaz1lLmFuQ2VsbHM7aWYoaylpZihkIT09cClnKGtbZF0sZCk7ZWxzZSBmb3IoYz0wLGg9ay5sZW5ndGg7YzxoO2MrKylnKGtbY10sYyl9ZWxzZSBlLl9hRGF0YT1NYShhLGUsZCxkPT09cD9wOmUuX2FEYXRhKS5kYXRhO2UuX2FTb3J0RGF0YT1udWxsO2UuX2FGaWx0ZXJEYXRhPW51bGw7Zz1hLmFvQ29sdW1ucztpZihkIT09cClnW2RdLnNUeXBlPW51bGw7ZWxzZXtjPTA7Zm9yKGg9Zy5sZW5ndGg7YzxoO2MrKylnW2NdLnNUeXBlPW51bGw7ClBhKGEsZSl9fWZ1bmN0aW9uIE1hKGEsYixjLGQpe3ZhciBlPVtdLGg9Yi5maXJzdENoaWxkLGcsaz0wLGwsbj1hLmFvQ29sdW1ucyxtPWEuX3Jvd1JlYWRPYmplY3Q7ZD1kIT09cD9kOm0/e306W107dmFyIHc9ZnVuY3Rpb24oYSxiKXtpZigic3RyaW5nIj09PXR5cGVvZiBhKXt2YXIgYz1hLmluZGV4T2YoIkAiKTstMSE9PWMmJihjPWEuc3Vic3RyaW5nKGMrMSksUShhKShkLGIuZ2V0QXR0cmlidXRlKGMpKSl9fSx1PWZ1bmN0aW9uKGEpe2lmKGM9PT1wfHxjPT09aylnPW5ba10sbD1mLnRyaW0oYS5pbm5lckhUTUwpLGcmJmcuX2JBdHRyU3JjPyhRKGcubURhdGEuXykoZCxsKSx3KGcubURhdGEuc29ydCxhKSx3KGcubURhdGEudHlwZSxhKSx3KGcubURhdGEuZmlsdGVyLGEpKTptPyhnLl9zZXR0ZXJ8fChnLl9zZXR0ZXI9UShnLm1EYXRhKSksZy5fc2V0dGVyKGQsbCkpOmRba109bDtrKyt9O2lmKGgpZm9yKDtoOyl7dmFyIHE9aC5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpO2lmKCJURCI9PQpxfHwiVEgiPT1xKXUoaCksZS5wdXNoKGgpO2g9aC5uZXh0U2libGluZ31lbHNlIGZvcihlPWIuYW5DZWxscyxoPTAscT1lLmxlbmd0aDtoPHE7aCsrKXUoZVtoXSk7KGI9Yi5maXJzdENoaWxkP2I6Yi5uVHIpJiYoYj1iLmdldEF0dHJpYnV0ZSgiaWQiKSkmJlEoYS5yb3dJZCkoZCxiKTtyZXR1cm57ZGF0YTpkLGNlbGxzOmV9fWZ1bmN0aW9uIExhKGEsYixjLGQpe3ZhciBlPWEuYW9EYXRhW2JdLGg9ZS5fYURhdGEsZz1bXSxrLGw7aWYobnVsbD09PWUublRyKXt2YXIgbj1jfHx5LmNyZWF0ZUVsZW1lbnQoInRyIik7ZS5uVHI9bjtlLmFuQ2VsbHM9ZztuLl9EVF9Sb3dJbmRleD1iO1BhKGEsZSk7dmFyIG09MDtmb3Ioaz1hLmFvQ29sdW1ucy5sZW5ndGg7bTxrO20rKyl7dmFyIHc9YS5hb0NvbHVtbnNbbV07dmFyIHA9KGw9Yz8hMTohMCk/eS5jcmVhdGVFbGVtZW50KHcuc0NlbGxUeXBlKTpkW21dO3AuX0RUX0NlbGxJbmRleD17cm93OmIsY29sdW1uOm19O2cucHVzaChwKTtpZihsfHwKIShjJiYhdy5tUmVuZGVyJiZ3Lm1EYXRhPT09bXx8Zi5pc1BsYWluT2JqZWN0KHcubURhdGEpJiZ3Lm1EYXRhLl89PT1tKyIuZGlzcGxheSIpKXAuaW5uZXJIVE1MPUkoYSxiLG0sImRpc3BsYXkiKTt3LnNDbGFzcyYmKHAuY2xhc3NOYW1lKz0iICIrdy5zQ2xhc3MpO3cuYlZpc2libGUmJiFjP24uYXBwZW5kQ2hpbGQocCk6IXcuYlZpc2libGUmJmMmJnAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwKTt3LmZuQ3JlYXRlZENlbGwmJncuZm5DcmVhdGVkQ2VsbC5jYWxsKGEub0luc3RhbmNlLHAsSShhLGIsbSksaCxiLG0pfUEoYSwiYW9Sb3dDcmVhdGVkQ2FsbGJhY2siLG51bGwsW24saCxiLGddKX1lLm5Uci5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKX1mdW5jdGlvbiBQYShhLGIpe3ZhciBjPWIublRyLGQ9Yi5fYURhdGE7aWYoYyl7aWYoYT1hLnJvd0lkRm4oZCkpYy5pZD1hO2QuRFRfUm93Q2xhc3MmJihhPWQuRFRfUm93Q2xhc3Muc3BsaXQoIiAiKSxiLl9fcm93Yz1iLl9fcm93Yz8KdGEoYi5fX3Jvd2MuY29uY2F0KGEpKTphLGYoYykucmVtb3ZlQ2xhc3MoYi5fX3Jvd2Muam9pbigiICIpKS5hZGRDbGFzcyhkLkRUX1Jvd0NsYXNzKSk7ZC5EVF9Sb3dBdHRyJiZmKGMpLmF0dHIoZC5EVF9Sb3dBdHRyKTtkLkRUX1Jvd0RhdGEmJmYoYykuZGF0YShkLkRUX1Jvd0RhdGEpfX1mdW5jdGlvbiBwYihhKXt2YXIgYixjLGQ9YS5uVEhlYWQsZT1hLm5URm9vdCxoPTA9PT1mKCJ0aCwgdGQiLGQpLmxlbmd0aCxnPWEub0NsYXNzZXMsaz1hLmFvQ29sdW1ucztoJiYoYz1mKCI8dHIvPiIpLmFwcGVuZFRvKGQpKTt2YXIgbD0wO2ZvcihiPWsubGVuZ3RoO2w8YjtsKyspe3ZhciBuPWtbbF07dmFyIG09ZihuLm5UaCkuYWRkQ2xhc3Mobi5zQ2xhc3MpO2gmJm0uYXBwZW5kVG8oYyk7YS5vRmVhdHVyZXMuYlNvcnQmJihtLmFkZENsYXNzKG4uc1NvcnRpbmdDbGFzcyksITEhPT1uLmJTb3J0YWJsZSYmKG0uYXR0cigidGFiaW5kZXgiLGEuaVRhYkluZGV4KS5hdHRyKCJhcmlhLWNvbnRyb2xzIiwKYS5zVGFibGVJZCksUWEoYSxuLm5UaCxsKSkpO24uc1RpdGxlIT1tWzBdLmlubmVySFRNTCYmbS5odG1sKG4uc1RpdGxlKTtSYShhLCJoZWFkZXIiKShhLG0sbixnKX1oJiZmYShhLmFvSGVhZGVyLGQpO2YoZCkuZmluZCgiPnRyIikuYXR0cigicm9sZSIsInJvdyIpO2YoZCkuZmluZCgiPnRyPnRoLCA+dHI+dGQiKS5hZGRDbGFzcyhnLnNIZWFkZXJUSCk7ZihlKS5maW5kKCI+dHI+dGgsID50cj50ZCIpLmFkZENsYXNzKGcuc0Zvb3RlclRIKTtpZihudWxsIT09ZSlmb3IoYT1hLmFvRm9vdGVyWzBdLGw9MCxiPWEubGVuZ3RoO2w8YjtsKyspbj1rW2xdLG4ublRmPWFbbF0uY2VsbCxuLnNDbGFzcyYmZihuLm5UZikuYWRkQ2xhc3Mobi5zQ2xhc3MpfWZ1bmN0aW9uIGhhKGEsYixjKXt2YXIgZCxlLGg9W10sZz1bXSxrPWEuYW9Db2x1bW5zLmxlbmd0aDtpZihiKXtjPT09cCYmKGM9ITEpO3ZhciBsPTA7Zm9yKGQ9Yi5sZW5ndGg7bDxkO2wrKyl7aFtsXT1iW2xdLnNsaWNlKCk7aFtsXS5uVHI9CmJbbF0ublRyO2ZvcihlPWstMTswPD1lO2UtLSlhLmFvQ29sdW1uc1tlXS5iVmlzaWJsZXx8Y3x8aFtsXS5zcGxpY2UoZSwxKTtnLnB1c2goW10pfWw9MDtmb3IoZD1oLmxlbmd0aDtsPGQ7bCsrKXtpZihhPWhbbF0ublRyKWZvcig7ZT1hLmZpcnN0Q2hpbGQ7KWEucmVtb3ZlQ2hpbGQoZSk7ZT0wO2ZvcihiPWhbbF0ubGVuZ3RoO2U8YjtlKyspe3ZhciBuPWs9MTtpZihnW2xdW2VdPT09cCl7YS5hcHBlbmRDaGlsZChoW2xdW2VdLmNlbGwpO2ZvcihnW2xdW2VdPTE7aFtsK2tdIT09cCYmaFtsXVtlXS5jZWxsPT1oW2wra11bZV0uY2VsbDspZ1tsK2tdW2VdPTEsaysrO2Zvcig7aFtsXVtlK25dIT09cCYmaFtsXVtlXS5jZWxsPT1oW2xdW2Urbl0uY2VsbDspe2ZvcihjPTA7YzxrO2MrKylnW2wrY11bZStuXT0xO24rK31mKGhbbF1bZV0uY2VsbCkuYXR0cigicm93c3BhbiIsaykuYXR0cigiY29sc3BhbiIsbil9fX19fWZ1bmN0aW9uIFMoYSl7dmFyIGI9QShhLCJhb1ByZURyYXdDYWxsYmFjayIsCiJwcmVEcmF3IixbYV0pO2lmKC0xIT09Zi5pbkFycmF5KCExLGIpKUsoYSwhMSk7ZWxzZXtiPVtdO3ZhciBjPTAsZD1hLmFzU3RyaXBlQ2xhc3NlcyxlPWQubGVuZ3RoLGg9YS5vTGFuZ3VhZ2UsZz1hLmlJbml0RGlzcGxheVN0YXJ0LGs9InNzcCI9PUQoYSksbD1hLmFpRGlzcGxheTthLmJEcmF3aW5nPSEwO2chPT1wJiYtMSE9PWcmJihhLl9pRGlzcGxheVN0YXJ0PWs/ZzpnPj1hLmZuUmVjb3Jkc0Rpc3BsYXkoKT8wOmcsYS5pSW5pdERpc3BsYXlTdGFydD0tMSk7Zz1hLl9pRGlzcGxheVN0YXJ0O3ZhciBuPWEuZm5EaXNwbGF5RW5kKCk7aWYoYS5iRGVmZXJMb2FkaW5nKWEuYkRlZmVyTG9hZGluZz0hMSxhLmlEcmF3KyssSyhhLCExKTtlbHNlIGlmKCFrKWEuaURyYXcrKztlbHNlIGlmKCFhLmJEZXN0cm95aW5nJiYhcWIoYSkpcmV0dXJuO2lmKDAhPT1sLmxlbmd0aClmb3IoaD1rP2EuYW9EYXRhLmxlbmd0aDpuLGs9az8wOmc7azxoO2srKyl7dmFyIG09bFtrXSx3PWEuYW9EYXRhW21dOwpudWxsPT09dy5uVHImJkxhKGEsbSk7dmFyIHU9dy5uVHI7aWYoMCE9PWUpe3ZhciBxPWRbYyVlXTt3Ll9zUm93U3RyaXBlIT1xJiYoZih1KS5yZW1vdmVDbGFzcyh3Ll9zUm93U3RyaXBlKS5hZGRDbGFzcyhxKSx3Ll9zUm93U3RyaXBlPXEpfUEoYSwiYW9Sb3dDYWxsYmFjayIsbnVsbCxbdSx3Ll9hRGF0YSxjLGssbV0pO2IucHVzaCh1KTtjKyt9ZWxzZSBjPWguc1plcm9SZWNvcmRzLDE9PWEuaURyYXcmJiJhamF4Ij09RChhKT9jPWguc0xvYWRpbmdSZWNvcmRzOmguc0VtcHR5VGFibGUmJjA9PT1hLmZuUmVjb3Jkc1RvdGFsKCkmJihjPWguc0VtcHR5VGFibGUpLGJbMF09ZigiPHRyLz4iLHsiY2xhc3MiOmU/ZFswXToiIn0pLmFwcGVuZChmKCI8dGQgLz4iLHt2YWxpZ246InRvcCIsY29sU3BhbjpXKGEpLCJjbGFzcyI6YS5vQ2xhc3Nlcy5zUm93RW1wdHl9KS5odG1sKGMpKVswXTtBKGEsImFvSGVhZGVyQ2FsbGJhY2siLCJoZWFkZXIiLFtmKGEublRIZWFkKS5jaGlsZHJlbigidHIiKVswXSwKT2EoYSksZyxuLGxdKTtBKGEsImFvRm9vdGVyQ2FsbGJhY2siLCJmb290ZXIiLFtmKGEublRGb290KS5jaGlsZHJlbigidHIiKVswXSxPYShhKSxnLG4sbF0pO2Q9ZihhLm5UQm9keSk7ZC5jaGlsZHJlbigpLmRldGFjaCgpO2QuYXBwZW5kKGYoYikpO0EoYSwiYW9EcmF3Q2FsbGJhY2siLCJkcmF3IixbYV0pO2EuYlNvcnRlZD0hMTthLmJGaWx0ZXJlZD0hMTthLmJEcmF3aW5nPSExfX1mdW5jdGlvbiBWKGEsYil7dmFyIGM9YS5vRmVhdHVyZXMsZD1jLmJGaWx0ZXI7Yy5iU29ydCYmcmIoYSk7ZD9pYShhLGEub1ByZXZpb3VzU2VhcmNoKTphLmFpRGlzcGxheT1hLmFpRGlzcGxheU1hc3Rlci5zbGljZSgpOyEwIT09YiYmKGEuX2lEaXNwbGF5U3RhcnQ9MCk7YS5fZHJhd0hvbGQ9YjtTKGEpO2EuX2RyYXdIb2xkPSExfWZ1bmN0aW9uIHNiKGEpe3ZhciBiPWEub0NsYXNzZXMsYz1mKGEublRhYmxlKTtjPWYoIjxkaXYvPiIpLmluc2VydEJlZm9yZShjKTt2YXIgZD1hLm9GZWF0dXJlcyxlPQpmKCI8ZGl2Lz4iLHtpZDphLnNUYWJsZUlkKyJfd3JhcHBlciIsImNsYXNzIjpiLnNXcmFwcGVyKyhhLm5URm9vdD8iIjoiICIrYi5zTm9Gb290ZXIpfSk7YS5uSG9sZGluZz1jWzBdO2EublRhYmxlV3JhcHBlcj1lWzBdO2EublRhYmxlUmVpbnNlcnRCZWZvcmU9YS5uVGFibGUubmV4dFNpYmxpbmc7Zm9yKHZhciBoPWEuc0RvbS5zcGxpdCgiIiksZyxrLGwsbixtLHAsdT0wO3U8aC5sZW5ndGg7dSsrKXtnPW51bGw7az1oW3VdO2lmKCI8Ij09ayl7bD1mKCI8ZGl2Lz4iKVswXTtuPWhbdSsxXTtpZigiJyI9PW58fCciJz09bil7bT0iIjtmb3IocD0yO2hbdStwXSE9bjspbSs9aFt1K3BdLHArKzsiSCI9PW0/bT1iLnNKVUlIZWFkZXI6IkYiPT1tJiYobT1iLnNKVUlGb290ZXIpOy0xIT1tLmluZGV4T2YoIi4iKT8obj1tLnNwbGl0KCIuIiksbC5pZD1uWzBdLnN1YnN0cigxLG5bMF0ubGVuZ3RoLTEpLGwuY2xhc3NOYW1lPW5bMV0pOiIjIj09bS5jaGFyQXQoMCk/bC5pZD1tLnN1YnN0cigxLAptLmxlbmd0aC0xKTpsLmNsYXNzTmFtZT1tO3UrPXB9ZS5hcHBlbmQobCk7ZT1mKGwpfWVsc2UgaWYoIj4iPT1rKWU9ZS5wYXJlbnQoKTtlbHNlIGlmKCJsIj09ayYmZC5iUGFnaW5hdGUmJmQuYkxlbmd0aENoYW5nZSlnPXRiKGEpO2Vsc2UgaWYoImYiPT1rJiZkLmJGaWx0ZXIpZz11YihhKTtlbHNlIGlmKCJyIj09ayYmZC5iUHJvY2Vzc2luZylnPXZiKGEpO2Vsc2UgaWYoInQiPT1rKWc9d2IoYSk7ZWxzZSBpZigiaSI9PWsmJmQuYkluZm8pZz14YihhKTtlbHNlIGlmKCJwIj09ayYmZC5iUGFnaW5hdGUpZz15YihhKTtlbHNlIGlmKDAhPT1xLmV4dC5mZWF0dXJlLmxlbmd0aClmb3IobD1xLmV4dC5mZWF0dXJlLHA9MCxuPWwubGVuZ3RoO3A8bjtwKyspaWYoaz09bFtwXS5jRmVhdHVyZSl7Zz1sW3BdLmZuSW5pdChhKTticmVha31nJiYobD1hLmFhbkZlYXR1cmVzLGxba118fChsW2tdPVtdKSxsW2tdLnB1c2goZyksZS5hcHBlbmQoZykpfWMucmVwbGFjZVdpdGgoZSk7YS5uSG9sZGluZz0KbnVsbH1mdW5jdGlvbiBmYShhLGIpe2I9ZihiKS5jaGlsZHJlbigidHIiKTt2YXIgYyxkLGU7YS5zcGxpY2UoMCxhLmxlbmd0aCk7dmFyIGg9MDtmb3IoZT1iLmxlbmd0aDtoPGU7aCsrKWEucHVzaChbXSk7aD0wO2ZvcihlPWIubGVuZ3RoO2g8ZTtoKyspe3ZhciBnPWJbaF07Zm9yKGM9Zy5maXJzdENoaWxkO2M7KXtpZigiVEQiPT1jLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCl8fCJUSCI9PWMubm9kZU5hbWUudG9VcHBlckNhc2UoKSl7dmFyIGs9MSpjLmdldEF0dHJpYnV0ZSgiY29sc3BhbiIpO3ZhciBsPTEqYy5nZXRBdHRyaWJ1dGUoInJvd3NwYW4iKTtrPWsmJjAhPT1rJiYxIT09az9rOjE7bD1sJiYwIT09bCYmMSE9PWw/bDoxO3ZhciBuPTA7Zm9yKGQ9YVtoXTtkW25dOyluKys7dmFyIG09bjt2YXIgcD0xPT09az8hMDohMTtmb3IoZD0wO2Q8aztkKyspZm9yKG49MDtuPGw7bisrKWFbaCtuXVttK2RdPXtjZWxsOmMsdW5pcXVlOnB9LGFbaCtuXS5uVHI9Z31jPWMubmV4dFNpYmxpbmd9fX0KZnVuY3Rpb24gdWEoYSxiLGMpe3ZhciBkPVtdO2N8fChjPWEuYW9IZWFkZXIsYiYmKGM9W10sZmEoYyxiKSkpO2I9MDtmb3IodmFyIGU9Yy5sZW5ndGg7YjxlO2IrKylmb3IodmFyIGg9MCxnPWNbYl0ubGVuZ3RoO2g8ZztoKyspIWNbYl1baF0udW5pcXVlfHxkW2hdJiZhLmJTb3J0Q2VsbHNUb3B8fChkW2hdPWNbYl1baF0uY2VsbCk7cmV0dXJuIGR9ZnVuY3Rpb24gdmEoYSxiLGMpe0EoYSwiYW9TZXJ2ZXJQYXJhbXMiLCJzZXJ2ZXJQYXJhbXMiLFtiXSk7aWYoYiYmZi5pc0FycmF5KGIpKXt2YXIgZD17fSxlPS8oLio/KVxbXF0kLztmLmVhY2goYixmdW5jdGlvbihhLGIpeyhhPWIubmFtZS5tYXRjaChlKSk/KGE9YVswXSxkW2FdfHwoZFthXT1bXSksZFthXS5wdXNoKGIudmFsdWUpKTpkW2IubmFtZV09Yi52YWx1ZX0pO2I9ZH12YXIgaD1hLmFqYXgsZz1hLm9JbnN0YW5jZSxrPWZ1bmN0aW9uKGIpe0EoYSxudWxsLCJ4aHIiLFthLGIsYS5qcVhIUl0pO2MoYil9O2lmKGYuaXNQbGFpbk9iamVjdChoKSYmCmguZGF0YSl7dmFyIGw9aC5kYXRhO3ZhciBuPSJmdW5jdGlvbiI9PT10eXBlb2YgbD9sKGIsYSk6bDtiPSJmdW5jdGlvbiI9PT10eXBlb2YgbCYmbj9uOmYuZXh0ZW5kKCEwLGIsbik7ZGVsZXRlIGguZGF0YX1uPXtkYXRhOmIsc3VjY2VzczpmdW5jdGlvbihiKXt2YXIgYz1iLmVycm9yfHxiLnNFcnJvcjtjJiZPKGEsMCxjKTthLmpzb249YjtrKGIpfSxkYXRhVHlwZToianNvbiIsY2FjaGU6ITEsdHlwZTphLnNTZXJ2ZXJNZXRob2QsZXJyb3I6ZnVuY3Rpb24oYixjLGQpe2Q9QShhLG51bGwsInhociIsW2EsbnVsbCxhLmpxWEhSXSk7LTE9PT1mLmluQXJyYXkoITAsZCkmJigicGFyc2VyZXJyb3IiPT1jP08oYSwwLCJJbnZhbGlkIEpTT04gcmVzcG9uc2UiLDEpOjQ9PT1iLnJlYWR5U3RhdGUmJk8oYSwwLCJBamF4IGVycm9yIiw3KSk7SyhhLCExKX19O2Eub0FqYXhEYXRhPWI7QShhLG51bGwsInByZVhociIsW2EsYl0pO2EuZm5TZXJ2ZXJEYXRhP2EuZm5TZXJ2ZXJEYXRhLmNhbGwoZywKYS5zQWpheFNvdXJjZSxmLm1hcChiLGZ1bmN0aW9uKGEsYil7cmV0dXJue25hbWU6Yix2YWx1ZTphfX0pLGssYSk6YS5zQWpheFNvdXJjZXx8InN0cmluZyI9PT10eXBlb2YgaD9hLmpxWEhSPWYuYWpheChmLmV4dGVuZChuLHt1cmw6aHx8YS5zQWpheFNvdXJjZX0pKToiZnVuY3Rpb24iPT09dHlwZW9mIGg/YS5qcVhIUj1oLmNhbGwoZyxiLGssYSk6KGEuanFYSFI9Zi5hamF4KGYuZXh0ZW5kKG4saCkpLGguZGF0YT1sKX1mdW5jdGlvbiBxYihhKXtyZXR1cm4gYS5iQWpheERhdGFHZXQ/KGEuaURyYXcrKyxLKGEsITApLHZhKGEsemIoYSksZnVuY3Rpb24oYil7QWIoYSxiKX0pLCExKTohMH1mdW5jdGlvbiB6YihhKXt2YXIgYj1hLmFvQ29sdW1ucyxjPWIubGVuZ3RoLGQ9YS5vRmVhdHVyZXMsZT1hLm9QcmV2aW91c1NlYXJjaCxoPWEuYW9QcmVTZWFyY2hDb2xzLGc9W10saz1ZKGEpO3ZhciBsPWEuX2lEaXNwbGF5U3RhcnQ7dmFyIG49ITEhPT1kLmJQYWdpbmF0ZT9hLl9pRGlzcGxheUxlbmd0aDoKLTE7dmFyIG09ZnVuY3Rpb24oYSxiKXtnLnB1c2goe25hbWU6YSx2YWx1ZTpifSl9O20oInNFY2hvIixhLmlEcmF3KTttKCJpQ29sdW1ucyIsYyk7bSgic0NvbHVtbnMiLEooYiwic05hbWUiKS5qb2luKCIsIikpO20oImlEaXNwbGF5U3RhcnQiLGwpO20oImlEaXNwbGF5TGVuZ3RoIixuKTt2YXIgcD17ZHJhdzphLmlEcmF3LGNvbHVtbnM6W10sb3JkZXI6W10sc3RhcnQ6bCxsZW5ndGg6bixzZWFyY2g6e3ZhbHVlOmUuc1NlYXJjaCxyZWdleDplLmJSZWdleH19O2ZvcihsPTA7bDxjO2wrKyl7dmFyIHU9YltsXTt2YXIgc2E9aFtsXTtuPSJmdW5jdGlvbiI9PXR5cGVvZiB1Lm1EYXRhPyJmdW5jdGlvbiI6dS5tRGF0YTtwLmNvbHVtbnMucHVzaCh7ZGF0YTpuLG5hbWU6dS5zTmFtZSxzZWFyY2hhYmxlOnUuYlNlYXJjaGFibGUsb3JkZXJhYmxlOnUuYlNvcnRhYmxlLHNlYXJjaDp7dmFsdWU6c2Euc1NlYXJjaCxyZWdleDpzYS5iUmVnZXh9fSk7bSgibURhdGFQcm9wXyIrbCxuKTtkLmJGaWx0ZXImJgoobSgic1NlYXJjaF8iK2wsc2Euc1NlYXJjaCksbSgiYlJlZ2V4XyIrbCxzYS5iUmVnZXgpLG0oImJTZWFyY2hhYmxlXyIrbCx1LmJTZWFyY2hhYmxlKSk7ZC5iU29ydCYmbSgiYlNvcnRhYmxlXyIrbCx1LmJTb3J0YWJsZSl9ZC5iRmlsdGVyJiYobSgic1NlYXJjaCIsZS5zU2VhcmNoKSxtKCJiUmVnZXgiLGUuYlJlZ2V4KSk7ZC5iU29ydCYmKGYuZWFjaChrLGZ1bmN0aW9uKGEsYil7cC5vcmRlci5wdXNoKHtjb2x1bW46Yi5jb2wsZGlyOmIuZGlyfSk7bSgiaVNvcnRDb2xfIithLGIuY29sKTttKCJzU29ydERpcl8iK2EsYi5kaXIpfSksbSgiaVNvcnRpbmdDb2xzIixrLmxlbmd0aCkpO2I9cS5leHQubGVnYWN5LmFqYXg7cmV0dXJuIG51bGw9PT1iP2Euc0FqYXhTb3VyY2U/ZzpwOmI/ZzpwfWZ1bmN0aW9uIEFiKGEsYil7dmFyIGM9ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYlthXSE9PXA/YlthXTpiW2NdfSxkPXdhKGEsYiksZT1jKCJzRWNobyIsImRyYXciKSxoPWMoImlUb3RhbFJlY29yZHMiLAoicmVjb3Jkc1RvdGFsIik7Yz1jKCJpVG90YWxEaXNwbGF5UmVjb3JkcyIsInJlY29yZHNGaWx0ZXJlZCIpO2lmKGUpe2lmKDEqZTxhLmlEcmF3KXJldHVybjthLmlEcmF3PTEqZX1xYShhKTthLl9pUmVjb3Jkc1RvdGFsPXBhcnNlSW50KGgsMTApO2EuX2lSZWNvcmRzRGlzcGxheT1wYXJzZUludChjLDEwKTtlPTA7Zm9yKGg9ZC5sZW5ndGg7ZTxoO2UrKylSKGEsZFtlXSk7YS5haURpc3BsYXk9YS5haURpc3BsYXlNYXN0ZXIuc2xpY2UoKTthLmJBamF4RGF0YUdldD0hMTtTKGEpO2EuX2JJbml0Q29tcGxldGV8fHhhKGEsYik7YS5iQWpheERhdGFHZXQ9ITA7SyhhLCExKX1mdW5jdGlvbiB3YShhLGIpe2E9Zi5pc1BsYWluT2JqZWN0KGEuYWpheCkmJmEuYWpheC5kYXRhU3JjIT09cD9hLmFqYXguZGF0YVNyYzphLnNBamF4RGF0YVByb3A7cmV0dXJuImRhdGEiPT09YT9iLmFhRGF0YXx8YlthXToiIiE9PWE/VShhKShiKTpifWZ1bmN0aW9uIHViKGEpe3ZhciBiPWEub0NsYXNzZXMsYz0KYS5zVGFibGVJZCxkPWEub0xhbmd1YWdlLGU9YS5vUHJldmlvdXNTZWFyY2gsaD1hLmFhbkZlYXR1cmVzLGc9JzxpbnB1dCB0eXBlPSJzZWFyY2giIGNsYXNzPSInK2Iuc0ZpbHRlcklucHV0KyciLz4nLGs9ZC5zU2VhcmNoO2s9ay5tYXRjaCgvX0lOUFVUXy8pP2sucmVwbGFjZSgiX0lOUFVUXyIsZyk6aytnO2I9ZigiPGRpdi8+Iix7aWQ6aC5mP251bGw6YysiX2ZpbHRlciIsImNsYXNzIjpiLnNGaWx0ZXJ9KS5hcHBlbmQoZigiPGxhYmVsLz4iKS5hcHBlbmQoaykpO2g9ZnVuY3Rpb24oKXt2YXIgYj10aGlzLnZhbHVlP3RoaXMudmFsdWU6IiI7YiE9ZS5zU2VhcmNoJiYoaWEoYSx7c1NlYXJjaDpiLGJSZWdleDplLmJSZWdleCxiU21hcnQ6ZS5iU21hcnQsYkNhc2VJbnNlbnNpdGl2ZTplLmJDYXNlSW5zZW5zaXRpdmV9KSxhLl9pRGlzcGxheVN0YXJ0PTAsUyhhKSl9O2c9bnVsbCE9PWEuc2VhcmNoRGVsYXk/YS5zZWFyY2hEZWxheToic3NwIj09PUQoYSk/NDAwOjA7dmFyIGw9ZigiaW5wdXQiLApiKS52YWwoZS5zU2VhcmNoKS5hdHRyKCJwbGFjZWhvbGRlciIsZC5zU2VhcmNoUGxhY2Vob2xkZXIpLm9uKCJrZXl1cC5EVCBzZWFyY2guRFQgaW5wdXQuRFQgcGFzdGUuRFQgY3V0LkRUIixnP1NhKGgsZyk6aCkub24oImtleXByZXNzLkRUIixmdW5jdGlvbihhKXtpZigxMz09YS5rZXlDb2RlKXJldHVybiExfSkuYXR0cigiYXJpYS1jb250cm9scyIsYyk7ZihhLm5UYWJsZSkub24oInNlYXJjaC5kdC5EVCIsZnVuY3Rpb24oYixjKXtpZihhPT09Yyl0cnl7bFswXSE9PXkuYWN0aXZlRWxlbWVudCYmbC52YWwoZS5zU2VhcmNoKX1jYXRjaCh3KXt9fSk7cmV0dXJuIGJbMF19ZnVuY3Rpb24gaWEoYSxiLGMpe3ZhciBkPWEub1ByZXZpb3VzU2VhcmNoLGU9YS5hb1ByZVNlYXJjaENvbHMsaD1mdW5jdGlvbihhKXtkLnNTZWFyY2g9YS5zU2VhcmNoO2QuYlJlZ2V4PWEuYlJlZ2V4O2QuYlNtYXJ0PWEuYlNtYXJ0O2QuYkNhc2VJbnNlbnNpdGl2ZT1hLmJDYXNlSW5zZW5zaXRpdmV9LGc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuYkVzY2FwZVJlZ2V4IT09CnA/IWEuYkVzY2FwZVJlZ2V4OmEuYlJlZ2V4fTtLYShhKTtpZigic3NwIiE9RChhKSl7QmIoYSxiLnNTZWFyY2gsYyxnKGIpLGIuYlNtYXJ0LGIuYkNhc2VJbnNlbnNpdGl2ZSk7aChiKTtmb3IoYj0wO2I8ZS5sZW5ndGg7YisrKUNiKGEsZVtiXS5zU2VhcmNoLGIsZyhlW2JdKSxlW2JdLmJTbWFydCxlW2JdLmJDYXNlSW5zZW5zaXRpdmUpO0RiKGEpfWVsc2UgaChiKTthLmJGaWx0ZXJlZD0hMDtBKGEsbnVsbCwic2VhcmNoIixbYV0pfWZ1bmN0aW9uIERiKGEpe2Zvcih2YXIgYj1xLmV4dC5zZWFyY2gsYz1hLmFpRGlzcGxheSxkLGUsaD0wLGc9Yi5sZW5ndGg7aDxnO2grKyl7Zm9yKHZhciBrPVtdLGw9MCxuPWMubGVuZ3RoO2w8bjtsKyspZT1jW2xdLGQ9YS5hb0RhdGFbZV0sYltoXShhLGQuX2FGaWx0ZXJEYXRhLGUsZC5fYURhdGEsbCkmJmsucHVzaChlKTtjLmxlbmd0aD0wO2YubWVyZ2UoYyxrKX19ZnVuY3Rpb24gQ2IoYSxiLGMsZCxlLGgpe2lmKCIiIT09Yil7dmFyIGc9W10saz0KYS5haURpc3BsYXk7ZD1UYShiLGQsZSxoKTtmb3IoZT0wO2U8ay5sZW5ndGg7ZSsrKWI9YS5hb0RhdGFba1tlXV0uX2FGaWx0ZXJEYXRhW2NdLGQudGVzdChiKSYmZy5wdXNoKGtbZV0pO2EuYWlEaXNwbGF5PWd9fWZ1bmN0aW9uIEJiKGEsYixjLGQsZSxoKXtlPVRhKGIsZCxlLGgpO3ZhciBnPWEub1ByZXZpb3VzU2VhcmNoLnNTZWFyY2gsaz1hLmFpRGlzcGxheU1hc3RlcjtoPVtdOzAhPT1xLmV4dC5zZWFyY2gubGVuZ3RoJiYoYz0hMCk7dmFyIGY9RWIoYSk7aWYoMD49Yi5sZW5ndGgpYS5haURpc3BsYXk9ay5zbGljZSgpO2Vsc2V7aWYoZnx8Y3x8ZHx8Zy5sZW5ndGg+Yi5sZW5ndGh8fDAhPT1iLmluZGV4T2YoZyl8fGEuYlNvcnRlZClhLmFpRGlzcGxheT1rLnNsaWNlKCk7Yj1hLmFpRGlzcGxheTtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKWUudGVzdChhLmFvRGF0YVtiW2NdXS5fc0ZpbHRlclJvdykmJmgucHVzaChiW2NdKTthLmFpRGlzcGxheT1ofX1mdW5jdGlvbiBUYShhLGIsCmMsZCl7YT1iP2E6VWEoYSk7YyYmKGE9Il4oPz0uKj8iK2YubWFwKGEubWF0Y2goLyJbXiJdKyJ8W14gXSsvZyl8fFsiIl0sZnVuY3Rpb24oYSl7aWYoJyInPT09YS5jaGFyQXQoMCkpe3ZhciBiPWEubWF0Y2goL14iKC4qKSIkLyk7YT1iP2JbMV06YX1yZXR1cm4gYS5yZXBsYWNlKCciJywiIil9KS5qb2luKCIpKD89Lio/IikrIikuKiQiKTtyZXR1cm4gbmV3IFJlZ0V4cChhLGQ/ImkiOiIiKX1mdW5jdGlvbiBFYihhKXt2YXIgYj1hLmFvQ29sdW1ucyxjLGQsZT1xLmV4dC50eXBlLnNlYXJjaDt2YXIgaD0hMTt2YXIgZz0wO2ZvcihjPWEuYW9EYXRhLmxlbmd0aDtnPGM7ZysrKXt2YXIgaz1hLmFvRGF0YVtnXTtpZighay5fYUZpbHRlckRhdGEpe3ZhciBmPVtdO3ZhciBuPTA7Zm9yKGQ9Yi5sZW5ndGg7bjxkO24rKyl7aD1iW25dO2lmKGguYlNlYXJjaGFibGUpe3ZhciBtPUkoYSxnLG4sImZpbHRlciIpO2VbaC5zVHlwZV0mJihtPWVbaC5zVHlwZV0obSkpO251bGw9PT1tJiYobT0iIik7CiJzdHJpbmciIT09dHlwZW9mIG0mJm0udG9TdHJpbmcmJihtPW0udG9TdHJpbmcoKSl9ZWxzZSBtPSIiO20uaW5kZXhPZiYmLTEhPT1tLmluZGV4T2YoIiYiKSYmKHlhLmlubmVySFRNTD1tLG09JGI/eWEudGV4dENvbnRlbnQ6eWEuaW5uZXJUZXh0KTttLnJlcGxhY2UmJihtPW0ucmVwbGFjZSgvW1xyXG5cdTIwMjhdL2csIiIpKTtmLnB1c2gobSl9ay5fYUZpbHRlckRhdGE9ZjtrLl9zRmlsdGVyUm93PWYuam9pbigiICAiKTtoPSEwfX1yZXR1cm4gaH1mdW5jdGlvbiBGYihhKXtyZXR1cm57c2VhcmNoOmEuc1NlYXJjaCxzbWFydDphLmJTbWFydCxyZWdleDphLmJSZWdleCxjYXNlSW5zZW5zaXRpdmU6YS5iQ2FzZUluc2Vuc2l0aXZlfX1mdW5jdGlvbiBHYihhKXtyZXR1cm57c1NlYXJjaDphLnNlYXJjaCxiU21hcnQ6YS5zbWFydCxiUmVnZXg6YS5yZWdleCxiQ2FzZUluc2Vuc2l0aXZlOmEuY2FzZUluc2Vuc2l0aXZlfX1mdW5jdGlvbiB4YihhKXt2YXIgYj1hLnNUYWJsZUlkLGM9YS5hYW5GZWF0dXJlcy5pLApkPWYoIjxkaXYvPiIseyJjbGFzcyI6YS5vQ2xhc3Nlcy5zSW5mbyxpZDpjP251bGw6YisiX2luZm8ifSk7Y3x8KGEuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46SGIsc05hbWU6ImluZm9ybWF0aW9uIn0pLGQuYXR0cigicm9sZSIsInN0YXR1cyIpLmF0dHIoImFyaWEtbGl2ZSIsInBvbGl0ZSIpLGYoYS5uVGFibGUpLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLGIrIl9pbmZvIikpO3JldHVybiBkWzBdfWZ1bmN0aW9uIEhiKGEpe3ZhciBiPWEuYWFuRmVhdHVyZXMuaTtpZigwIT09Yi5sZW5ndGgpe3ZhciBjPWEub0xhbmd1YWdlLGQ9YS5faURpc3BsYXlTdGFydCsxLGU9YS5mbkRpc3BsYXlFbmQoKSxoPWEuZm5SZWNvcmRzVG90YWwoKSxnPWEuZm5SZWNvcmRzRGlzcGxheSgpLGs9Zz9jLnNJbmZvOmMuc0luZm9FbXB0eTtnIT09aCYmKGsrPSIgIitjLnNJbmZvRmlsdGVyZWQpO2srPWMuc0luZm9Qb3N0Rml4O2s9SWIoYSxrKTtjPWMuZm5JbmZvQ2FsbGJhY2s7bnVsbCE9PWMmJihrPWMuY2FsbChhLm9JbnN0YW5jZSwKYSxkLGUsaCxnLGspKTtmKGIpLmh0bWwoayl9fWZ1bmN0aW9uIEliKGEsYil7dmFyIGM9YS5mbkZvcm1hdE51bWJlcixkPWEuX2lEaXNwbGF5U3RhcnQrMSxlPWEuX2lEaXNwbGF5TGVuZ3RoLGg9YS5mblJlY29yZHNEaXNwbGF5KCksZz0tMT09PWU7cmV0dXJuIGIucmVwbGFjZSgvX1NUQVJUXy9nLGMuY2FsbChhLGQpKS5yZXBsYWNlKC9fRU5EXy9nLGMuY2FsbChhLGEuZm5EaXNwbGF5RW5kKCkpKS5yZXBsYWNlKC9fTUFYXy9nLGMuY2FsbChhLGEuZm5SZWNvcmRzVG90YWwoKSkpLnJlcGxhY2UoL19UT1RBTF8vZyxjLmNhbGwoYSxoKSkucmVwbGFjZSgvX1BBR0VfL2csYy5jYWxsKGEsZz8xOk1hdGguY2VpbChkL2UpKSkucmVwbGFjZSgvX1BBR0VTXy9nLGMuY2FsbChhLGc/MTpNYXRoLmNlaWwoaC9lKSkpfWZ1bmN0aW9uIGphKGEpe3ZhciBiPWEuaUluaXREaXNwbGF5U3RhcnQsYz1hLmFvQ29sdW1uczt2YXIgZD1hLm9GZWF0dXJlczt2YXIgZT1hLmJEZWZlckxvYWRpbmc7aWYoYS5iSW5pdGlhbGlzZWQpe3NiKGEpOwpwYihhKTtoYShhLGEuYW9IZWFkZXIpO2hhKGEsYS5hb0Zvb3Rlcik7SyhhLCEwKTtkLmJBdXRvV2lkdGgmJkphKGEpO3ZhciBoPTA7Zm9yKGQ9Yy5sZW5ndGg7aDxkO2grKyl7dmFyIGc9Y1toXTtnLnNXaWR0aCYmKGcublRoLnN0eWxlLndpZHRoPUIoZy5zV2lkdGgpKX1BKGEsbnVsbCwicHJlSW5pdCIsW2FdKTtWKGEpO2M9RChhKTtpZigic3NwIiE9Y3x8ZSkiYWpheCI9PWM/dmEoYSxbXSxmdW5jdGlvbihjKXt2YXIgZD13YShhLGMpO2ZvcihoPTA7aDxkLmxlbmd0aDtoKyspUihhLGRbaF0pO2EuaUluaXREaXNwbGF5U3RhcnQ9YjtWKGEpO0soYSwhMSk7eGEoYSxjKX0sYSk6KEsoYSwhMSkseGEoYSkpfWVsc2Ugc2V0VGltZW91dChmdW5jdGlvbigpe2phKGEpfSwyMDApfWZ1bmN0aW9uIHhhKGEsYil7YS5fYkluaXRDb21wbGV0ZT0hMDsoYnx8YS5vSW5pdC5hYURhdGEpJiZhYShhKTtBKGEsbnVsbCwicGx1Z2luLWluaXQiLFthLGJdKTtBKGEsImFvSW5pdENvbXBsZXRlIiwiaW5pdCIsClthLGJdKX1mdW5jdGlvbiBWYShhLGIpe2I9cGFyc2VJbnQoYiwxMCk7YS5faURpc3BsYXlMZW5ndGg9YjtXYShhKTtBKGEsbnVsbCwibGVuZ3RoIixbYSxiXSl9ZnVuY3Rpb24gdGIoYSl7dmFyIGI9YS5vQ2xhc3NlcyxjPWEuc1RhYmxlSWQsZD1hLmFMZW5ndGhNZW51LGU9Zi5pc0FycmF5KGRbMF0pLGg9ZT9kWzBdOmQ7ZD1lP2RbMV06ZDtlPWYoIjxzZWxlY3QvPiIse25hbWU6YysiX2xlbmd0aCIsImFyaWEtY29udHJvbHMiOmMsImNsYXNzIjpiLnNMZW5ndGhTZWxlY3R9KTtmb3IodmFyIGc9MCxrPWgubGVuZ3RoO2c8aztnKyspZVswXVtnXT1uZXcgT3B0aW9uKCJudW1iZXIiPT09dHlwZW9mIGRbZ10/YS5mbkZvcm1hdE51bWJlcihkW2ddKTpkW2ddLGhbZ10pO3ZhciBsPWYoIjxkaXY+PGxhYmVsLz48L2Rpdj4iKS5hZGRDbGFzcyhiLnNMZW5ndGgpO2EuYWFuRmVhdHVyZXMubHx8KGxbMF0uaWQ9YysiX2xlbmd0aCIpO2wuY2hpbGRyZW4oKS5hcHBlbmQoYS5vTGFuZ3VhZ2Uuc0xlbmd0aE1lbnUucmVwbGFjZSgiX01FTlVfIiwKZVswXS5vdXRlckhUTUwpKTtmKCJzZWxlY3QiLGwpLnZhbChhLl9pRGlzcGxheUxlbmd0aCkub24oImNoYW5nZS5EVCIsZnVuY3Rpb24oYil7VmEoYSxmKHRoaXMpLnZhbCgpKTtTKGEpfSk7ZihhLm5UYWJsZSkub24oImxlbmd0aC5kdC5EVCIsZnVuY3Rpb24oYixjLGQpe2E9PT1jJiZmKCJzZWxlY3QiLGwpLnZhbChkKX0pO3JldHVybiBsWzBdfWZ1bmN0aW9uIHliKGEpe3ZhciBiPWEuc1BhZ2luYXRpb25UeXBlLGM9cS5leHQucGFnZXJbYl0sZD0iZnVuY3Rpb24iPT09dHlwZW9mIGMsZT1mdW5jdGlvbihhKXtTKGEpfTtiPWYoIjxkaXYvPiIpLmFkZENsYXNzKGEub0NsYXNzZXMuc1BhZ2luZytiKVswXTt2YXIgaD1hLmFhbkZlYXR1cmVzO2R8fGMuZm5Jbml0KGEsYixlKTtoLnB8fChiLmlkPWEuc1RhYmxlSWQrIl9wYWdpbmF0ZSIsYS5hb0RyYXdDYWxsYmFjay5wdXNoKHtmbjpmdW5jdGlvbihhKXtpZihkKXt2YXIgYj1hLl9pRGlzcGxheVN0YXJ0LGc9YS5faURpc3BsYXlMZW5ndGgsCmY9YS5mblJlY29yZHNEaXNwbGF5KCksbT0tMT09PWc7Yj1tPzA6TWF0aC5jZWlsKGIvZyk7Zz1tPzE6TWF0aC5jZWlsKGYvZyk7Zj1jKGIsZyk7dmFyIHA7bT0wO2ZvcihwPWgucC5sZW5ndGg7bTxwO20rKylSYShhLCJwYWdlQnV0dG9uIikoYSxoLnBbbV0sbSxmLGIsZyl9ZWxzZSBjLmZuVXBkYXRlKGEsZSl9LHNOYW1lOiJwYWdpbmF0aW9uIn0pKTtyZXR1cm4gYn1mdW5jdGlvbiBYYShhLGIsYyl7dmFyIGQ9YS5faURpc3BsYXlTdGFydCxlPWEuX2lEaXNwbGF5TGVuZ3RoLGg9YS5mblJlY29yZHNEaXNwbGF5KCk7MD09PWh8fC0xPT09ZT9kPTA6Im51bWJlciI9PT10eXBlb2YgYj8oZD1iKmUsZD5oJiYoZD0wKSk6ImZpcnN0Ij09Yj9kPTA6InByZXZpb3VzIj09Yj8oZD0wPD1lP2QtZTowLDA+ZCYmKGQ9MCkpOiJuZXh0Ij09Yj9kK2U8aCYmKGQrPWUpOiJsYXN0Ij09Yj9kPU1hdGguZmxvb3IoKGgtMSkvZSkqZTpPKGEsMCwiVW5rbm93biBwYWdpbmcgYWN0aW9uOiAiK2IsNSk7Yj0KYS5faURpc3BsYXlTdGFydCE9PWQ7YS5faURpc3BsYXlTdGFydD1kO2ImJihBKGEsbnVsbCwicGFnZSIsW2FdKSxjJiZTKGEpKTtyZXR1cm4gYn1mdW5jdGlvbiB2YihhKXtyZXR1cm4gZigiPGRpdi8+Iix7aWQ6YS5hYW5GZWF0dXJlcy5yP251bGw6YS5zVGFibGVJZCsiX3Byb2Nlc3NpbmciLCJjbGFzcyI6YS5vQ2xhc3Nlcy5zUHJvY2Vzc2luZ30pLmh0bWwoYS5vTGFuZ3VhZ2Uuc1Byb2Nlc3NpbmcpLmluc2VydEJlZm9yZShhLm5UYWJsZSlbMF19ZnVuY3Rpb24gSyhhLGIpe2Eub0ZlYXR1cmVzLmJQcm9jZXNzaW5nJiZmKGEuYWFuRmVhdHVyZXMucikuY3NzKCJkaXNwbGF5IixiPyJibG9jayI6Im5vbmUiKTtBKGEsbnVsbCwicHJvY2Vzc2luZyIsW2EsYl0pfWZ1bmN0aW9uIHdiKGEpe3ZhciBiPWYoYS5uVGFibGUpO2IuYXR0cigicm9sZSIsImdyaWQiKTt2YXIgYz1hLm9TY3JvbGw7aWYoIiI9PT1jLnNYJiYiIj09PWMuc1kpcmV0dXJuIGEublRhYmxlO3ZhciBkPWMuc1gsZT1jLnNZLApoPWEub0NsYXNzZXMsZz1iLmNoaWxkcmVuKCJjYXB0aW9uIiksaz1nLmxlbmd0aD9nWzBdLl9jYXB0aW9uU2lkZTpudWxsLGw9ZihiWzBdLmNsb25lTm9kZSghMSkpLG49ZihiWzBdLmNsb25lTm9kZSghMSkpLG09Yi5jaGlsZHJlbigidGZvb3QiKTttLmxlbmd0aHx8KG09bnVsbCk7bD1mKCI8ZGl2Lz4iLHsiY2xhc3MiOmguc1Njcm9sbFdyYXBwZXJ9KS5hcHBlbmQoZigiPGRpdi8+Iix7ImNsYXNzIjpoLnNTY3JvbGxIZWFkfSkuY3NzKHtvdmVyZmxvdzoiaGlkZGVuIixwb3NpdGlvbjoicmVsYXRpdmUiLGJvcmRlcjowLHdpZHRoOmQ/ZD9CKGQpOm51bGw6IjEwMCUifSkuYXBwZW5kKGYoIjxkaXYvPiIseyJjbGFzcyI6aC5zU2Nyb2xsSGVhZElubmVyfSkuY3NzKHsiYm94LXNpemluZyI6ImNvbnRlbnQtYm94Iix3aWR0aDpjLnNYSW5uZXJ8fCIxMDAlIn0pLmFwcGVuZChsLnJlbW92ZUF0dHIoImlkIikuY3NzKCJtYXJnaW4tbGVmdCIsMCkuYXBwZW5kKCJ0b3AiPT09az9nOm51bGwpLmFwcGVuZChiLmNoaWxkcmVuKCJ0aGVhZCIpKSkpKS5hcHBlbmQoZigiPGRpdi8+IiwKeyJjbGFzcyI6aC5zU2Nyb2xsQm9keX0pLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIixvdmVyZmxvdzoiYXV0byIsd2lkdGg6ZD9CKGQpOm51bGx9KS5hcHBlbmQoYikpO20mJmwuYXBwZW5kKGYoIjxkaXYvPiIseyJjbGFzcyI6aC5zU2Nyb2xsRm9vdH0pLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiIsYm9yZGVyOjAsd2lkdGg6ZD9kP0IoZCk6bnVsbDoiMTAwJSJ9KS5hcHBlbmQoZigiPGRpdi8+Iix7ImNsYXNzIjpoLnNTY3JvbGxGb290SW5uZXJ9KS5hcHBlbmQobi5yZW1vdmVBdHRyKCJpZCIpLmNzcygibWFyZ2luLWxlZnQiLDApLmFwcGVuZCgiYm90dG9tIj09PWs/ZzpudWxsKS5hcHBlbmQoYi5jaGlsZHJlbigidGZvb3QiKSkpKSk7Yj1sLmNoaWxkcmVuKCk7dmFyIHA9YlswXTtoPWJbMV07dmFyIHU9bT9iWzJdOm51bGw7aWYoZClmKGgpLm9uKCJzY3JvbGwuRFQiLGZ1bmN0aW9uKGEpe2E9dGhpcy5zY3JvbGxMZWZ0O3Auc2Nyb2xsTGVmdD1hO20mJih1LnNjcm9sbExlZnQ9YSl9KTsKZihoKS5jc3MoZSYmYy5iQ29sbGFwc2U/Im1heC1oZWlnaHQiOiJoZWlnaHQiLGUpO2EublNjcm9sbEhlYWQ9cDthLm5TY3JvbGxCb2R5PWg7YS5uU2Nyb2xsRm9vdD11O2EuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46bmEsc05hbWU6InNjcm9sbGluZyJ9KTtyZXR1cm4gbFswXX1mdW5jdGlvbiBuYShhKXt2YXIgYj1hLm9TY3JvbGwsYz1iLnNYLGQ9Yi5zWElubmVyLGU9Yi5zWTtiPWIuaUJhcldpZHRoO3ZhciBoPWYoYS5uU2Nyb2xsSGVhZCksZz1oWzBdLnN0eWxlLGs9aC5jaGlsZHJlbigiZGl2IiksbD1rWzBdLnN0eWxlLG49ay5jaGlsZHJlbigidGFibGUiKTtrPWEublNjcm9sbEJvZHk7dmFyIG09ZihrKSx3PWsuc3R5bGUsdT1mKGEublNjcm9sbEZvb3QpLmNoaWxkcmVuKCJkaXYiKSxxPXUuY2hpbGRyZW4oInRhYmxlIiksdD1mKGEublRIZWFkKSxyPWYoYS5uVGFibGUpLHY9clswXSx6YT12LnN0eWxlLFQ9YS5uVEZvb3Q/ZihhLm5URm9vdCk6bnVsbCxBPWEub0Jyb3dzZXIsCng9QS5iU2Nyb2xsT3ZlcnNpemUsYWM9SihhLmFvQ29sdW1ucywiblRoIiksWWE9W10seT1bXSx6PVtdLEM9W10sRyxIPWZ1bmN0aW9uKGEpe2E9YS5zdHlsZTthLnBhZGRpbmdUb3A9IjAiO2EucGFkZGluZ0JvdHRvbT0iMCI7YS5ib3JkZXJUb3BXaWR0aD0iMCI7YS5ib3JkZXJCb3R0b21XaWR0aD0iMCI7YS5oZWlnaHQ9MH07dmFyIEQ9ay5zY3JvbGxIZWlnaHQ+ay5jbGllbnRIZWlnaHQ7aWYoYS5zY3JvbGxCYXJWaXMhPT1EJiZhLnNjcm9sbEJhclZpcyE9PXApYS5zY3JvbGxCYXJWaXM9RCxhYShhKTtlbHNle2Euc2Nyb2xsQmFyVmlzPUQ7ci5jaGlsZHJlbigidGhlYWQsIHRmb290IikucmVtb3ZlKCk7aWYoVCl7dmFyIEU9VC5jbG9uZSgpLnByZXBlbmRUbyhyKTt2YXIgRj1ULmZpbmQoInRyIik7RT1FLmZpbmQoInRyIil9dmFyIEk9dC5jbG9uZSgpLnByZXBlbmRUbyhyKTt0PXQuZmluZCgidHIiKTtEPUkuZmluZCgidHIiKTtJLmZpbmQoInRoLCB0ZCIpLnJlbW92ZUF0dHIoInRhYmluZGV4Iik7CmN8fCh3LndpZHRoPSIxMDAlIixoWzBdLnN0eWxlLndpZHRoPSIxMDAlIik7Zi5lYWNoKHVhKGEsSSksZnVuY3Rpb24oYixjKXtHPWJhKGEsYik7Yy5zdHlsZS53aWR0aD1hLmFvQ29sdW1uc1tHXS5zV2lkdGh9KTtUJiZOKGZ1bmN0aW9uKGEpe2Euc3R5bGUud2lkdGg9IiJ9LEUpO2g9ci5vdXRlcldpZHRoKCk7IiI9PT1jPyh6YS53aWR0aD0iMTAwJSIseCYmKHIuZmluZCgidGJvZHkiKS5oZWlnaHQoKT5rLm9mZnNldEhlaWdodHx8InNjcm9sbCI9PW0uY3NzKCJvdmVyZmxvdy15IikpJiYoemEud2lkdGg9QihyLm91dGVyV2lkdGgoKS1iKSksaD1yLm91dGVyV2lkdGgoKSk6IiIhPT1kJiYoemEud2lkdGg9QihkKSxoPXIub3V0ZXJXaWR0aCgpKTtOKEgsRCk7TihmdW5jdGlvbihhKXt6LnB1c2goYS5pbm5lckhUTUwpO1lhLnB1c2goQihmKGEpLmNzcygid2lkdGgiKSkpfSxEKTtOKGZ1bmN0aW9uKGEsYil7LTEhPT1mLmluQXJyYXkoYSxhYykmJihhLnN0eWxlLndpZHRoPVlhW2JdKX0sCnQpO2YoRCkuaGVpZ2h0KDApO1QmJihOKEgsRSksTihmdW5jdGlvbihhKXtDLnB1c2goYS5pbm5lckhUTUwpO3kucHVzaChCKGYoYSkuY3NzKCJ3aWR0aCIpKSl9LEUpLE4oZnVuY3Rpb24oYSxiKXthLnN0eWxlLndpZHRoPXlbYl19LEYpLGYoRSkuaGVpZ2h0KDApKTtOKGZ1bmN0aW9uKGEsYil7YS5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImRhdGFUYWJsZXNfc2l6aW5nIj4nK3pbYl0rIjwvZGl2PiI7YS5jaGlsZE5vZGVzWzBdLnN0eWxlLmhlaWdodD0iMCI7YS5jaGlsZE5vZGVzWzBdLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iO2Euc3R5bGUud2lkdGg9WWFbYl19LEQpO1QmJk4oZnVuY3Rpb24oYSxiKXthLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iZGF0YVRhYmxlc19zaXppbmciPicrQ1tiXSsiPC9kaXY+IjthLmNoaWxkTm9kZXNbMF0uc3R5bGUuaGVpZ2h0PSIwIjthLmNoaWxkTm9kZXNbMF0uc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiI7YS5zdHlsZS53aWR0aD15W2JdfSxFKTtyLm91dGVyV2lkdGgoKTwKaD8oRj1rLnNjcm9sbEhlaWdodD5rLm9mZnNldEhlaWdodHx8InNjcm9sbCI9PW0uY3NzKCJvdmVyZmxvdy15Iik/aCtiOmgseCYmKGsuc2Nyb2xsSGVpZ2h0Pmsub2Zmc2V0SGVpZ2h0fHwic2Nyb2xsIj09bS5jc3MoIm92ZXJmbG93LXkiKSkmJih6YS53aWR0aD1CKEYtYikpLCIiIT09YyYmIiI9PT1kfHxPKGEsMSwiUG9zc2libGUgY29sdW1uIG1pc2FsaWdubWVudCIsNikpOkY9IjEwMCUiO3cud2lkdGg9QihGKTtnLndpZHRoPUIoRik7VCYmKGEublNjcm9sbEZvb3Quc3R5bGUud2lkdGg9QihGKSk7IWUmJngmJih3LmhlaWdodD1CKHYub2Zmc2V0SGVpZ2h0K2IpKTtjPXIub3V0ZXJXaWR0aCgpO25bMF0uc3R5bGUud2lkdGg9QihjKTtsLndpZHRoPUIoYyk7ZD1yLmhlaWdodCgpPmsuY2xpZW50SGVpZ2h0fHwic2Nyb2xsIj09bS5jc3MoIm92ZXJmbG93LXkiKTtlPSJwYWRkaW5nIisoQS5iU2Nyb2xsYmFyTGVmdD8iTGVmdCI6IlJpZ2h0Iik7bFtlXT1kP2IrInB4IjoiMHB4IjtUJiYKKHFbMF0uc3R5bGUud2lkdGg9QihjKSx1WzBdLnN0eWxlLndpZHRoPUIoYyksdVswXS5zdHlsZVtlXT1kP2IrInB4IjoiMHB4Iik7ci5jaGlsZHJlbigiY29sZ3JvdXAiKS5pbnNlcnRCZWZvcmUoci5jaGlsZHJlbigidGhlYWQiKSk7bS50cmlnZ2VyKCJzY3JvbGwiKTshYS5iU29ydGVkJiYhYS5iRmlsdGVyZWR8fGEuX2RyYXdIb2xkfHwoay5zY3JvbGxUb3A9MCl9fWZ1bmN0aW9uIE4oYSxiLGMpe2Zvcih2YXIgZD0wLGU9MCxoPWIubGVuZ3RoLGcsaztlPGg7KXtnPWJbZV0uZmlyc3RDaGlsZDtmb3Ioaz1jP2NbZV0uZmlyc3RDaGlsZDpudWxsO2c7KTE9PT1nLm5vZGVUeXBlJiYoYz9hKGcsayxkKTphKGcsZCksZCsrKSxnPWcubmV4dFNpYmxpbmcsaz1jP2submV4dFNpYmxpbmc6bnVsbDtlKyt9fWZ1bmN0aW9uIEphKGEpe3ZhciBiPWEublRhYmxlLGM9YS5hb0NvbHVtbnMsZD1hLm9TY3JvbGwsZT1kLnNZLGg9ZC5zWCxnPWQuc1hJbm5lcixrPWMubGVuZ3RoLGw9b2EoYSwiYlZpc2libGUiKSwKbj1mKCJ0aCIsYS5uVEhlYWQpLG09Yi5nZXRBdHRyaWJ1dGUoIndpZHRoIikscD1iLnBhcmVudE5vZGUsdT0hMSxxLHQ9YS5vQnJvd3NlcjtkPXQuYlNjcm9sbE92ZXJzaXplOyhxPWIuc3R5bGUud2lkdGgpJiYtMSE9PXEuaW5kZXhPZigiJSIpJiYobT1xKTtmb3IocT0wO3E8bC5sZW5ndGg7cSsrKXt2YXIgcj1jW2xbcV1dO251bGwhPT1yLnNXaWR0aCYmKHIuc1dpZHRoPUpiKHIuc1dpZHRoT3JpZyxwKSx1PSEwKX1pZihkfHwhdSYmIWgmJiFlJiZrPT1XKGEpJiZrPT1uLmxlbmd0aClmb3IocT0wO3E8aztxKyspbD1iYShhLHEpLG51bGwhPT1sJiYoY1tsXS5zV2lkdGg9QihuLmVxKHEpLndpZHRoKCkpKTtlbHNle2s9ZihiKS5jbG9uZSgpLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLnJlbW92ZUF0dHIoImlkIik7ay5maW5kKCJ0Ym9keSB0ciIpLnJlbW92ZSgpO3ZhciB2PWYoIjx0ci8+IikuYXBwZW5kVG8oay5maW5kKCJ0Ym9keSIpKTtrLmZpbmQoInRoZWFkLCB0Zm9vdCIpLnJlbW92ZSgpOwprLmFwcGVuZChmKGEublRIZWFkKS5jbG9uZSgpKS5hcHBlbmQoZihhLm5URm9vdCkuY2xvbmUoKSk7ay5maW5kKCJ0Zm9vdCB0aCwgdGZvb3QgdGQiKS5jc3MoIndpZHRoIiwiIik7bj11YShhLGsuZmluZCgidGhlYWQiKVswXSk7Zm9yKHE9MDtxPGwubGVuZ3RoO3ErKylyPWNbbFtxXV0sbltxXS5zdHlsZS53aWR0aD1udWxsIT09ci5zV2lkdGhPcmlnJiYiIiE9PXIuc1dpZHRoT3JpZz9CKHIuc1dpZHRoT3JpZyk6IiIsci5zV2lkdGhPcmlnJiZoJiZmKG5bcV0pLmFwcGVuZChmKCI8ZGl2Lz4iKS5jc3Moe3dpZHRoOnIuc1dpZHRoT3JpZyxtYXJnaW46MCxwYWRkaW5nOjAsYm9yZGVyOjAsaGVpZ2h0OjF9KSk7aWYoYS5hb0RhdGEubGVuZ3RoKWZvcihxPTA7cTxsLmxlbmd0aDtxKyspdT1sW3FdLHI9Y1t1XSxmKEtiKGEsdSkpLmNsb25lKCExKS5hcHBlbmQoci5zQ29udGVudFBhZGRpbmcpLmFwcGVuZFRvKHYpO2YoIltuYW1lXSIsaykucmVtb3ZlQXR0cigibmFtZSIpO3I9ZigiPGRpdi8+IikuY3NzKGh8fAplP3twb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MCxoZWlnaHQ6MSxyaWdodDowLG92ZXJmbG93OiJoaWRkZW4ifTp7fSkuYXBwZW5kKGspLmFwcGVuZFRvKHApO2gmJmc/ay53aWR0aChnKTpoPyhrLmNzcygid2lkdGgiLCJhdXRvIiksay5yZW1vdmVBdHRyKCJ3aWR0aCIpLGsud2lkdGgoKTxwLmNsaWVudFdpZHRoJiZtJiZrLndpZHRoKHAuY2xpZW50V2lkdGgpKTplP2sud2lkdGgocC5jbGllbnRXaWR0aCk6bSYmay53aWR0aChtKTtmb3IocT1lPTA7cTxsLmxlbmd0aDtxKyspcD1mKG5bcV0pLGc9cC5vdXRlcldpZHRoKCktcC53aWR0aCgpLHA9dC5iQm91bmRpbmc/TWF0aC5jZWlsKG5bcV0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpOnAub3V0ZXJXaWR0aCgpLGUrPXAsY1tsW3FdXS5zV2lkdGg9QihwLWcpO2Iuc3R5bGUud2lkdGg9QihlKTtyLnJlbW92ZSgpfW0mJihiLnN0eWxlLndpZHRoPUIobSkpOyFtJiYhaHx8YS5fcmVzekV2dHx8KGI9ZnVuY3Rpb24oKXtmKHopLm9uKCJyZXNpemUuRFQtIisKYS5zSW5zdGFuY2UsU2EoZnVuY3Rpb24oKXthYShhKX0pKX0sZD9zZXRUaW1lb3V0KGIsMUUzKTpiKCksYS5fcmVzekV2dD0hMCl9ZnVuY3Rpb24gSmIoYSxiKXtpZighYSlyZXR1cm4gMDthPWYoIjxkaXYvPiIpLmNzcygid2lkdGgiLEIoYSkpLmFwcGVuZFRvKGJ8fHkuYm9keSk7Yj1hWzBdLm9mZnNldFdpZHRoO2EucmVtb3ZlKCk7cmV0dXJuIGJ9ZnVuY3Rpb24gS2IoYSxiKXt2YXIgYz1MYihhLGIpO2lmKDA+YylyZXR1cm4gbnVsbDt2YXIgZD1hLmFvRGF0YVtjXTtyZXR1cm4gZC5uVHI/ZC5hbkNlbGxzW2JdOmYoIjx0ZC8+IikuaHRtbChJKGEsYyxiLCJkaXNwbGF5IikpWzBdfWZ1bmN0aW9uIExiKGEsYil7Zm9yKHZhciBjLGQ9LTEsZT0tMSxoPTAsZz1hLmFvRGF0YS5sZW5ndGg7aDxnO2grKyljPUkoYSxoLGIsImRpc3BsYXkiKSsiIixjPWMucmVwbGFjZShiYywiIiksYz1jLnJlcGxhY2UoLyZuYnNwOy9nLCIgIiksYy5sZW5ndGg+ZCYmKGQ9Yy5sZW5ndGgsZT1oKTtyZXR1cm4gZX0KZnVuY3Rpb24gQihhKXtyZXR1cm4gbnVsbD09PWE/IjBweCI6Im51bWJlciI9PXR5cGVvZiBhPzA+YT8iMHB4IjphKyJweCI6YS5tYXRjaCgvXGQkLyk/YSsicHgiOmF9ZnVuY3Rpb24gWShhKXt2YXIgYj1bXSxjPWEuYW9Db2x1bW5zO3ZhciBkPWEuYWFTb3J0aW5nRml4ZWQ7dmFyIGU9Zi5pc1BsYWluT2JqZWN0KGQpO3ZhciBoPVtdO3ZhciBnPWZ1bmN0aW9uKGEpe2EubGVuZ3RoJiYhZi5pc0FycmF5KGFbMF0pP2gucHVzaChhKTpmLm1lcmdlKGgsYSl9O2YuaXNBcnJheShkKSYmZyhkKTtlJiZkLnByZSYmZyhkLnByZSk7ZyhhLmFhU29ydGluZyk7ZSYmZC5wb3N0JiZnKGQucG9zdCk7Zm9yKGE9MDthPGgubGVuZ3RoO2ErKyl7dmFyIGs9aFthXVswXTtnPWNba10uYURhdGFTb3J0O2Q9MDtmb3IoZT1nLmxlbmd0aDtkPGU7ZCsrKXt2YXIgbD1nW2RdO3ZhciBuPWNbbF0uc1R5cGV8fCJzdHJpbmciO2hbYV0uX2lkeD09PXAmJihoW2FdLl9pZHg9Zi5pbkFycmF5KGhbYV1bMV0sY1tsXS5hc1NvcnRpbmcpKTsKYi5wdXNoKHtzcmM6ayxjb2w6bCxkaXI6aFthXVsxXSxpbmRleDpoW2FdLl9pZHgsdHlwZTpuLGZvcm1hdHRlcjpxLmV4dC50eXBlLm9yZGVyW24rIi1wcmUiXX0pfX1yZXR1cm4gYn1mdW5jdGlvbiByYihhKXt2YXIgYixjPVtdLGQ9cS5leHQudHlwZS5vcmRlcixlPWEuYW9EYXRhLGg9MCxnPWEuYWlEaXNwbGF5TWFzdGVyO0thKGEpO3ZhciBrPVkoYSk7dmFyIGY9MDtmb3IoYj1rLmxlbmd0aDtmPGI7ZisrKXt2YXIgbj1rW2ZdO24uZm9ybWF0dGVyJiZoKys7TWIoYSxuLmNvbCl9aWYoInNzcCIhPUQoYSkmJjAhPT1rLmxlbmd0aCl7Zj0wO2ZvcihiPWcubGVuZ3RoO2Y8YjtmKyspY1tnW2ZdXT1mO2g9PT1rLmxlbmd0aD9nLnNvcnQoZnVuY3Rpb24oYSxiKXt2YXIgZCxoPWsubGVuZ3RoLGc9ZVthXS5fYVNvcnREYXRhLGY9ZVtiXS5fYVNvcnREYXRhO2ZvcihkPTA7ZDxoO2QrKyl7dmFyIGw9a1tkXTt2YXIgbT1nW2wuY29sXTt2YXIgbj1mW2wuY29sXTttPW08bj8tMTptPm4/MTowOwppZigwIT09bSlyZXR1cm4iYXNjIj09PWwuZGlyP206LW19bT1jW2FdO249Y1tiXTtyZXR1cm4gbTxuPy0xOm0+bj8xOjB9KTpnLnNvcnQoZnVuY3Rpb24oYSxiKXt2YXIgaCxnPWsubGVuZ3RoLGY9ZVthXS5fYVNvcnREYXRhLGw9ZVtiXS5fYVNvcnREYXRhO2ZvcihoPTA7aDxnO2grKyl7dmFyIG09a1toXTt2YXIgbj1mW20uY29sXTt2YXIgcD1sW20uY29sXTttPWRbbS50eXBlKyItIittLmRpcl18fGRbInN0cmluZy0iK20uZGlyXTtuPW0obixwKTtpZigwIT09bilyZXR1cm4gbn1uPWNbYV07cD1jW2JdO3JldHVybiBuPHA/LTE6bj5wPzE6MH0pfWEuYlNvcnRlZD0hMH1mdW5jdGlvbiBOYihhKXt2YXIgYj1hLmFvQ29sdW1ucyxjPVkoYSk7YT1hLm9MYW5ndWFnZS5vQXJpYTtmb3IodmFyIGQ9MCxlPWIubGVuZ3RoO2Q8ZTtkKyspe3ZhciBoPWJbZF07dmFyIGc9aC5hc1NvcnRpbmc7dmFyIGs9aC5zVGl0bGUucmVwbGFjZSgvPC4qPz4vZywiIik7dmFyIGY9aC5uVGg7Zi5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtc29ydCIpOwpoLmJTb3J0YWJsZSYmKDA8Yy5sZW5ndGgmJmNbMF0uY29sPT1kPyhmLnNldEF0dHJpYnV0ZSgiYXJpYS1zb3J0IiwiYXNjIj09Y1swXS5kaXI/ImFzY2VuZGluZyI6ImRlc2NlbmRpbmciKSxoPWdbY1swXS5pbmRleCsxXXx8Z1swXSk6aD1nWzBdLGsrPSJhc2MiPT09aD9hLnNTb3J0QXNjZW5kaW5nOmEuc1NvcnREZXNjZW5kaW5nKTtmLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsayl9fWZ1bmN0aW9uIFphKGEsYixjLGQpe3ZhciBlPWEuYWFTb3J0aW5nLGg9YS5hb0NvbHVtbnNbYl0uYXNTb3J0aW5nLGc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLl9pZHg7Yz09PXAmJihjPWYuaW5BcnJheShhWzFdLGgpKTtyZXR1cm4gYysxPGgubGVuZ3RoP2MrMTpiP251bGw6MH07Im51bWJlciI9PT10eXBlb2YgZVswXSYmKGU9YS5hYVNvcnRpbmc9W2VdKTtjJiZhLm9GZWF0dXJlcy5iU29ydE11bHRpPyhjPWYuaW5BcnJheShiLEooZSwiMCIpKSwtMSE9PWM/KGI9ZyhlW2NdLCEwKSxudWxsPT09CmImJjE9PT1lLmxlbmd0aCYmKGI9MCksbnVsbD09PWI/ZS5zcGxpY2UoYywxKTooZVtjXVsxXT1oW2JdLGVbY10uX2lkeD1iKSk6KGUucHVzaChbYixoWzBdLDBdKSxlW2UubGVuZ3RoLTFdLl9pZHg9MCkpOmUubGVuZ3RoJiZlWzBdWzBdPT1iPyhiPWcoZVswXSksZS5sZW5ndGg9MSxlWzBdWzFdPWhbYl0sZVswXS5faWR4PWIpOihlLmxlbmd0aD0wLGUucHVzaChbYixoWzBdXSksZVswXS5faWR4PTApO1YoYSk7ImZ1bmN0aW9uIj09dHlwZW9mIGQmJmQoYSl9ZnVuY3Rpb24gUWEoYSxiLGMsZCl7dmFyIGU9YS5hb0NvbHVtbnNbY107JGEoYix7fSxmdW5jdGlvbihiKXshMSE9PWUuYlNvcnRhYmxlJiYoYS5vRmVhdHVyZXMuYlByb2Nlc3Npbmc/KEsoYSwhMCksc2V0VGltZW91dChmdW5jdGlvbigpe1phKGEsYyxiLnNoaWZ0S2V5LGQpOyJzc3AiIT09RChhKSYmSyhhLCExKX0sMCkpOlphKGEsYyxiLnNoaWZ0S2V5LGQpKX0pfWZ1bmN0aW9uIEFhKGEpe3ZhciBiPWEuYUxhc3RTb3J0LApjPWEub0NsYXNzZXMuc1NvcnRDb2x1bW4sZD1ZKGEpLGU9YS5vRmVhdHVyZXMsaDtpZihlLmJTb3J0JiZlLmJTb3J0Q2xhc3Nlcyl7ZT0wO2ZvcihoPWIubGVuZ3RoO2U8aDtlKyspe3ZhciBnPWJbZV0uc3JjO2YoSihhLmFvRGF0YSwiYW5DZWxscyIsZykpLnJlbW92ZUNsYXNzKGMrKDI+ZT9lKzE6MykpfWU9MDtmb3IoaD1kLmxlbmd0aDtlPGg7ZSsrKWc9ZFtlXS5zcmMsZihKKGEuYW9EYXRhLCJhbkNlbGxzIixnKSkuYWRkQ2xhc3MoYysoMj5lP2UrMTozKSl9YS5hTGFzdFNvcnQ9ZH1mdW5jdGlvbiBNYihhLGIpe3ZhciBjPWEuYW9Db2x1bW5zW2JdLGQ9cS5leHQub3JkZXJbYy5zU29ydERhdGFUeXBlXSxlO2QmJihlPWQuY2FsbChhLm9JbnN0YW5jZSxhLGIsY2EoYSxiKSkpO2Zvcih2YXIgaCxnPXEuZXh0LnR5cGUub3JkZXJbYy5zVHlwZSsiLXByZSJdLGs9MCxmPWEuYW9EYXRhLmxlbmd0aDtrPGY7aysrKWlmKGM9YS5hb0RhdGFba10sYy5fYVNvcnREYXRhfHwoYy5fYVNvcnREYXRhPQpbXSksIWMuX2FTb3J0RGF0YVtiXXx8ZCloPWQ/ZVtrXTpJKGEsayxiLCJzb3J0IiksYy5fYVNvcnREYXRhW2JdPWc/ZyhoKTpofWZ1bmN0aW9uIEJhKGEpe2lmKGEub0ZlYXR1cmVzLmJTdGF0ZVNhdmUmJiFhLmJEZXN0cm95aW5nKXt2YXIgYj17dGltZTorbmV3IERhdGUsc3RhcnQ6YS5faURpc3BsYXlTdGFydCxsZW5ndGg6YS5faURpc3BsYXlMZW5ndGgsb3JkZXI6Zi5leHRlbmQoITAsW10sYS5hYVNvcnRpbmcpLHNlYXJjaDpGYihhLm9QcmV2aW91c1NlYXJjaCksY29sdW1uczpmLm1hcChhLmFvQ29sdW1ucyxmdW5jdGlvbihiLGQpe3JldHVybnt2aXNpYmxlOmIuYlZpc2libGUsc2VhcmNoOkZiKGEuYW9QcmVTZWFyY2hDb2xzW2RdKX19KX07QShhLCJhb1N0YXRlU2F2ZVBhcmFtcyIsInN0YXRlU2F2ZVBhcmFtcyIsW2EsYl0pO2Eub1NhdmVkU3RhdGU9YjthLmZuU3RhdGVTYXZlQ2FsbGJhY2suY2FsbChhLm9JbnN0YW5jZSxhLGIpfX1mdW5jdGlvbiBPYihhLGIsYyl7dmFyIGQsCmUsaD1hLmFvQ29sdW1ucztiPWZ1bmN0aW9uKGIpe2lmKGImJmIudGltZSl7dmFyIGc9QShhLCJhb1N0YXRlTG9hZFBhcmFtcyIsInN0YXRlTG9hZFBhcmFtcyIsW2EsYl0pO2lmKC0xPT09Zi5pbkFycmF5KCExLGcpJiYoZz1hLmlTdGF0ZUR1cmF0aW9uLCEoMDxnJiZiLnRpbWU8K25ldyBEYXRlLTFFMypnfHxiLmNvbHVtbnMmJmgubGVuZ3RoIT09Yi5jb2x1bW5zLmxlbmd0aCkpKXthLm9Mb2FkZWRTdGF0ZT1mLmV4dGVuZCghMCx7fSxiKTtiLnN0YXJ0IT09cCYmKGEuX2lEaXNwbGF5U3RhcnQ9Yi5zdGFydCxhLmlJbml0RGlzcGxheVN0YXJ0PWIuc3RhcnQpO2IubGVuZ3RoIT09cCYmKGEuX2lEaXNwbGF5TGVuZ3RoPWIubGVuZ3RoKTtiLm9yZGVyIT09cCYmKGEuYWFTb3J0aW5nPVtdLGYuZWFjaChiLm9yZGVyLGZ1bmN0aW9uKGIsYyl7YS5hYVNvcnRpbmcucHVzaChjWzBdPj1oLmxlbmd0aD9bMCxjWzFdXTpjKX0pKTtiLnNlYXJjaCE9PXAmJmYuZXh0ZW5kKGEub1ByZXZpb3VzU2VhcmNoLApHYihiLnNlYXJjaCkpO2lmKGIuY29sdW1ucylmb3IoZD0wLGU9Yi5jb2x1bW5zLmxlbmd0aDtkPGU7ZCsrKWc9Yi5jb2x1bW5zW2RdLGcudmlzaWJsZSE9PXAmJihoW2RdLmJWaXNpYmxlPWcudmlzaWJsZSksZy5zZWFyY2ghPT1wJiZmLmV4dGVuZChhLmFvUHJlU2VhcmNoQ29sc1tkXSxHYihnLnNlYXJjaCkpO0EoYSwiYW9TdGF0ZUxvYWRlZCIsInN0YXRlTG9hZGVkIixbYSxiXSl9fWMoKX07aWYoYS5vRmVhdHVyZXMuYlN0YXRlU2F2ZSl7dmFyIGc9YS5mblN0YXRlTG9hZENhbGxiYWNrLmNhbGwoYS5vSW5zdGFuY2UsYSxiKTtnIT09cCYmYihnKX1lbHNlIGMoKX1mdW5jdGlvbiBDYShhKXt2YXIgYj1xLnNldHRpbmdzO2E9Zi5pbkFycmF5KGEsSihiLCJuVGFibGUiKSk7cmV0dXJuLTEhPT1hP2JbYV06bnVsbH1mdW5jdGlvbiBPKGEsYixjLGQpe2M9IkRhdGFUYWJsZXMgd2FybmluZzogIisoYT8idGFibGUgaWQ9IithLnNUYWJsZUlkKyIgLSAiOiIiKStjO2QmJihjKz0iLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGVycm9yLCBwbGVhc2Ugc2VlIGh0dHA6Ly9kYXRhdGFibGVzLm5ldC90bi8iKwpkKTtpZihiKXouY29uc29sZSYmY29uc29sZS5sb2cmJmNvbnNvbGUubG9nKGMpO2Vsc2UgaWYoYj1xLmV4dCxiPWIuc0Vyck1vZGV8fGIuZXJyTW9kZSxhJiZBKGEsbnVsbCwiZXJyb3IiLFthLGQsY10pLCJhbGVydCI9PWIpYWxlcnQoYyk7ZWxzZXtpZigidGhyb3ciPT1iKXRocm93IEVycm9yKGMpOyJmdW5jdGlvbiI9PXR5cGVvZiBiJiZiKGEsZCxjKX19ZnVuY3Rpb24gTShhLGIsYyxkKXtmLmlzQXJyYXkoYyk/Zi5lYWNoKGMsZnVuY3Rpb24oYyxkKXtmLmlzQXJyYXkoZCk/TShhLGIsZFswXSxkWzFdKTpNKGEsYixkKX0pOihkPT09cCYmKGQ9YyksYltjXSE9PXAmJihhW2RdPWJbY10pKX1mdW5jdGlvbiBhYihhLGIsYyl7dmFyIGQ7Zm9yKGQgaW4gYilpZihiLmhhc093blByb3BlcnR5KGQpKXt2YXIgZT1iW2RdO2YuaXNQbGFpbk9iamVjdChlKT8oZi5pc1BsYWluT2JqZWN0KGFbZF0pfHwoYVtkXT17fSksZi5leHRlbmQoITAsYVtkXSxlKSk6YyYmImRhdGEiIT09ZCYmImFhRGF0YSIhPT0KZCYmZi5pc0FycmF5KGUpP2FbZF09ZS5zbGljZSgpOmFbZF09ZX1yZXR1cm4gYX1mdW5jdGlvbiAkYShhLGIsYyl7ZihhKS5vbigiY2xpY2suRFQiLGIsZnVuY3Rpb24oYil7ZihhKS5ibHVyKCk7YyhiKX0pLm9uKCJrZXlwcmVzcy5EVCIsYixmdW5jdGlvbihhKXsxMz09PWEud2hpY2gmJihhLnByZXZlbnREZWZhdWx0KCksYyhhKSl9KS5vbigic2VsZWN0c3RhcnQuRFQiLGZ1bmN0aW9uKCl7cmV0dXJuITF9KX1mdW5jdGlvbiBFKGEsYixjLGQpe2MmJmFbYl0ucHVzaCh7Zm46YyxzTmFtZTpkfSl9ZnVuY3Rpb24gQShhLGIsYyxkKXt2YXIgZT1bXTtiJiYoZT1mLm1hcChhW2JdLnNsaWNlKCkucmV2ZXJzZSgpLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGIuZm4uYXBwbHkoYS5vSW5zdGFuY2UsZCl9KSk7bnVsbCE9PWMmJihiPWYuRXZlbnQoYysiLmR0IiksZihhLm5UYWJsZSkudHJpZ2dlcihiLGQpLGUucHVzaChiLnJlc3VsdCkpO3JldHVybiBlfWZ1bmN0aW9uIFdhKGEpe3ZhciBiPWEuX2lEaXNwbGF5U3RhcnQsCmM9YS5mbkRpc3BsYXlFbmQoKSxkPWEuX2lEaXNwbGF5TGVuZ3RoO2I+PWMmJihiPWMtZCk7Yi09YiVkO2lmKC0xPT09ZHx8MD5iKWI9MDthLl9pRGlzcGxheVN0YXJ0PWJ9ZnVuY3Rpb24gUmEoYSxiKXthPWEucmVuZGVyZXI7dmFyIGM9cS5leHQucmVuZGVyZXJbYl07cmV0dXJuIGYuaXNQbGFpbk9iamVjdChhKSYmYVtiXT9jW2FbYl1dfHxjLl86InN0cmluZyI9PT10eXBlb2YgYT9jW2FdfHxjLl86Yy5ffWZ1bmN0aW9uIEQoYSl7cmV0dXJuIGEub0ZlYXR1cmVzLmJTZXJ2ZXJTaWRlPyJzc3AiOmEuYWpheHx8YS5zQWpheFNvdXJjZT8iYWpheCI6ImRvbSJ9ZnVuY3Rpb24ga2EoYSxiKXt2YXIgYz1QYi5udW1iZXJzX2xlbmd0aCxkPU1hdGguZmxvb3IoYy8yKTtiPD1jP2E9WigwLGIpOmE8PWQ/KGE9WigwLGMtMiksYS5wdXNoKCJlbGxpcHNpcyIpLGEucHVzaChiLTEpKTooYT49Yi0xLWQ/YT1aKGItKGMtMiksYik6KGE9WihhLWQrMixhK2QtMSksYS5wdXNoKCJlbGxpcHNpcyIpLAphLnB1c2goYi0xKSksYS5zcGxpY2UoMCwwLCJlbGxpcHNpcyIpLGEuc3BsaWNlKDAsMCwwKSk7YS5EVF9lbD0ic3BhbiI7cmV0dXJuIGF9ZnVuY3Rpb24gSGEoYSl7Zi5lYWNoKHtudW06ZnVuY3Rpb24oYil7cmV0dXJuIERhKGIsYSl9LCJudW0tZm10IjpmdW5jdGlvbihiKXtyZXR1cm4gRGEoYixhLGJiKX0sImh0bWwtbnVtIjpmdW5jdGlvbihiKXtyZXR1cm4gRGEoYixhLEVhKX0sImh0bWwtbnVtLWZtdCI6ZnVuY3Rpb24oYil7cmV0dXJuIERhKGIsYSxFYSxiYil9fSxmdW5jdGlvbihiLGMpe0MudHlwZS5vcmRlcltiK2ErIi1wcmUiXT1jO2IubWF0Y2goL15odG1sXC0vKSYmKEMudHlwZS5zZWFyY2hbYithXT1DLnR5cGUuc2VhcmNoLmh0bWwpfSl9ZnVuY3Rpb24gUWIoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9W0NhKHRoaXNbcS5leHQuaUFwaUluZGV4XSldLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKTtyZXR1cm4gcS5leHQuaW50ZXJuYWxbYV0uYXBwbHkodGhpcywKYil9fXZhciBxPWZ1bmN0aW9uKGEpe3RoaXMuJD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmFwaSghMCkuJChhLGIpfTt0aGlzLl89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5hcGkoITApLnJvd3MoYSxiKS5kYXRhKCl9O3RoaXMuYXBpPWZ1bmN0aW9uKGEpe3JldHVybiBhP25ldyB2KENhKHRoaXNbQy5pQXBpSW5kZXhdKSk6bmV3IHYodGhpcyl9O3RoaXMuZm5BZGREYXRhPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5hcGkoITApO2E9Zi5pc0FycmF5KGEpJiYoZi5pc0FycmF5KGFbMF0pfHxmLmlzUGxhaW5PYmplY3QoYVswXSkpP2Mucm93cy5hZGQoYSk6Yy5yb3cuYWRkKGEpOyhiPT09cHx8YikmJmMuZHJhdygpO3JldHVybiBhLmZsYXR0ZW4oKS50b0FycmF5KCl9O3RoaXMuZm5BZGp1c3RDb2x1bW5TaXppbmc9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5hcGkoITApLmNvbHVtbnMuYWRqdXN0KCksYz1iLnNldHRpbmdzKClbMF0sZD1jLm9TY3JvbGw7YT09PXB8fGE/Yi5kcmF3KCExKToKKCIiIT09ZC5zWHx8IiIhPT1kLnNZKSYmbmEoYyl9O3RoaXMuZm5DbGVhclRhYmxlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYXBpKCEwKS5jbGVhcigpOyhhPT09cHx8YSkmJmIuZHJhdygpfTt0aGlzLmZuQ2xvc2U9ZnVuY3Rpb24oYSl7dGhpcy5hcGkoITApLnJvdyhhKS5jaGlsZC5oaWRlKCl9O3RoaXMuZm5EZWxldGVSb3c9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuYXBpKCEwKTthPWQucm93cyhhKTt2YXIgZT1hLnNldHRpbmdzKClbMF0saD1lLmFvRGF0YVthWzBdWzBdXTthLnJlbW92ZSgpO2ImJmIuY2FsbCh0aGlzLGUsaCk7KGM9PT1wfHxjKSYmZC5kcmF3KCk7cmV0dXJuIGh9O3RoaXMuZm5EZXN0cm95PWZ1bmN0aW9uKGEpe3RoaXMuYXBpKCEwKS5kZXN0cm95KGEpfTt0aGlzLmZuRHJhdz1mdW5jdGlvbihhKXt0aGlzLmFwaSghMCkuZHJhdyhhKX07dGhpcy5mbkZpbHRlcj1mdW5jdGlvbihhLGIsYyxkLGUsZil7ZT10aGlzLmFwaSghMCk7bnVsbD09PWJ8fGI9PT1wPwplLnNlYXJjaChhLGMsZCxmKTplLmNvbHVtbihiKS5zZWFyY2goYSxjLGQsZik7ZS5kcmF3KCl9O3RoaXMuZm5HZXREYXRhPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5hcGkoITApO2lmKGEhPT1wKXt2YXIgZD1hLm5vZGVOYW1lP2Eubm9kZU5hbWUudG9Mb3dlckNhc2UoKToiIjtyZXR1cm4gYiE9PXB8fCJ0ZCI9PWR8fCJ0aCI9PWQ/Yy5jZWxsKGEsYikuZGF0YSgpOmMucm93KGEpLmRhdGEoKXx8bnVsbH1yZXR1cm4gYy5kYXRhKCkudG9BcnJheSgpfTt0aGlzLmZuR2V0Tm9kZXM9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5hcGkoITApO3JldHVybiBhIT09cD9iLnJvdyhhKS5ub2RlKCk6Yi5yb3dzKCkubm9kZXMoKS5mbGF0dGVuKCkudG9BcnJheSgpfTt0aGlzLmZuR2V0UG9zaXRpb249ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5hcGkoITApLGM9YS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpO3JldHVybiJUUiI9PWM/Yi5yb3coYSkuaW5kZXgoKToiVEQiPT1jfHwiVEgiPT1jPyhhPWIuY2VsbChhKS5pbmRleCgpLApbYS5yb3csYS5jb2x1bW5WaXNpYmxlLGEuY29sdW1uXSk6bnVsbH07dGhpcy5mbklzT3Blbj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hcGkoITApLnJvdyhhKS5jaGlsZC5pc1Nob3duKCl9O3RoaXMuZm5PcGVuPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5hcGkoITApLnJvdyhhKS5jaGlsZChiLGMpLnNob3coKS5jaGlsZCgpWzBdfTt0aGlzLmZuUGFnZUNoYW5nZT1mdW5jdGlvbihhLGIpe2E9dGhpcy5hcGkoITApLnBhZ2UoYSk7KGI9PT1wfHxiKSYmYS5kcmF3KCExKX07dGhpcy5mblNldENvbHVtblZpcz1mdW5jdGlvbihhLGIsYyl7YT10aGlzLmFwaSghMCkuY29sdW1uKGEpLnZpc2libGUoYik7KGM9PT1wfHxjKSYmYS5jb2x1bW5zLmFkanVzdCgpLmRyYXcoKX07dGhpcy5mblNldHRpbmdzPWZ1bmN0aW9uKCl7cmV0dXJuIENhKHRoaXNbQy5pQXBpSW5kZXhdKX07dGhpcy5mblNvcnQ9ZnVuY3Rpb24oYSl7dGhpcy5hcGkoITApLm9yZGVyKGEpLmRyYXcoKX07dGhpcy5mblNvcnRMaXN0ZW5lcj0KZnVuY3Rpb24oYSxiLGMpe3RoaXMuYXBpKCEwKS5vcmRlci5saXN0ZW5lcihhLGIsYyl9O3RoaXMuZm5VcGRhdGU9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgaD10aGlzLmFwaSghMCk7Yz09PXB8fG51bGw9PT1jP2gucm93KGIpLmRhdGEoYSk6aC5jZWxsKGIsYykuZGF0YShhKTsoZT09PXB8fGUpJiZoLmNvbHVtbnMuYWRqdXN0KCk7KGQ9PT1wfHxkKSYmaC5kcmF3KCk7cmV0dXJuIDB9O3RoaXMuZm5WZXJzaW9uQ2hlY2s9Qy5mblZlcnNpb25DaGVjazt2YXIgYj10aGlzLGM9YT09PXAsZD10aGlzLmxlbmd0aDtjJiYoYT17fSk7dGhpcy5vQXBpPXRoaXMuaW50ZXJuYWw9Qy5pbnRlcm5hbDtmb3IodmFyIGUgaW4gcS5leHQuaW50ZXJuYWwpZSYmKHRoaXNbZV09UWIoZSkpO3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXt9LGc9MTxkP2FiKGUsYSwhMCk6YSxrPTAsbDtlPXRoaXMuZ2V0QXR0cmlidXRlKCJpZCIpO3ZhciBuPSExLG09cS5kZWZhdWx0cyx3PWYodGhpcyk7aWYoInRhYmxlIiE9CnRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlPKG51bGwsMCwiTm9uLXRhYmxlIG5vZGUgaW5pdGlhbGlzYXRpb24gKCIrdGhpcy5ub2RlTmFtZSsiKSIsMik7ZWxzZXtqYihtKTtrYihtLmNvbHVtbik7TChtLG0sITApO0wobS5jb2x1bW4sbS5jb2x1bW4sITApO0wobSxmLmV4dGVuZChnLHcuZGF0YSgpKSwhMCk7dmFyIHU9cS5zZXR0aW5ncztrPTA7Zm9yKGw9dS5sZW5ndGg7azxsO2srKyl7dmFyIHQ9dVtrXTtpZih0Lm5UYWJsZT09dGhpc3x8dC5uVEhlYWQmJnQublRIZWFkLnBhcmVudE5vZGU9PXRoaXN8fHQublRGb290JiZ0Lm5URm9vdC5wYXJlbnROb2RlPT10aGlzKXt2YXIgdj1nLmJSZXRyaWV2ZSE9PXA/Zy5iUmV0cmlldmU6bS5iUmV0cmlldmU7aWYoY3x8dilyZXR1cm4gdC5vSW5zdGFuY2U7aWYoZy5iRGVzdHJveSE9PXA/Zy5iRGVzdHJveTptLmJEZXN0cm95KXt0Lm9JbnN0YW5jZS5mbkRlc3Ryb3koKTticmVha31lbHNle08odCwwLCJDYW5ub3QgcmVpbml0aWFsaXNlIERhdGFUYWJsZSIsCjMpO3JldHVybn19aWYodC5zVGFibGVJZD09dGhpcy5pZCl7dS5zcGxpY2UoaywxKTticmVha319aWYobnVsbD09PWV8fCIiPT09ZSl0aGlzLmlkPWU9IkRhdGFUYWJsZXNfVGFibGVfIitxLmV4dC5fdW5pcXVlKys7dmFyIHI9Zi5leHRlbmQoITAse30scS5tb2RlbHMub1NldHRpbmdzLHtzRGVzdHJveVdpZHRoOndbMF0uc3R5bGUud2lkdGgsc0luc3RhbmNlOmUsc1RhYmxlSWQ6ZX0pO3IublRhYmxlPXRoaXM7ci5vQXBpPWIuaW50ZXJuYWw7ci5vSW5pdD1nO3UucHVzaChyKTtyLm9JbnN0YW5jZT0xPT09Yi5sZW5ndGg/Yjp3LmRhdGFUYWJsZSgpO2piKGcpO0dhKGcub0xhbmd1YWdlKTtnLmFMZW5ndGhNZW51JiYhZy5pRGlzcGxheUxlbmd0aCYmKGcuaURpc3BsYXlMZW5ndGg9Zi5pc0FycmF5KGcuYUxlbmd0aE1lbnVbMF0pP2cuYUxlbmd0aE1lbnVbMF1bMF06Zy5hTGVuZ3RoTWVudVswXSk7Zz1hYihmLmV4dGVuZCghMCx7fSxtKSxnKTtNKHIub0ZlYXR1cmVzLGcsImJQYWdpbmF0ZSBiTGVuZ3RoQ2hhbmdlIGJGaWx0ZXIgYlNvcnQgYlNvcnRNdWx0aSBiSW5mbyBiUHJvY2Vzc2luZyBiQXV0b1dpZHRoIGJTb3J0Q2xhc3NlcyBiU2VydmVyU2lkZSBiRGVmZXJSZW5kZXIiLnNwbGl0KCIgIikpOwpNKHIsZyxbImFzU3RyaXBlQ2xhc3NlcyIsImFqYXgiLCJmblNlcnZlckRhdGEiLCJmbkZvcm1hdE51bWJlciIsInNTZXJ2ZXJNZXRob2QiLCJhYVNvcnRpbmciLCJhYVNvcnRpbmdGaXhlZCIsImFMZW5ndGhNZW51Iiwic1BhZ2luYXRpb25UeXBlIiwic0FqYXhTb3VyY2UiLCJzQWpheERhdGFQcm9wIiwiaVN0YXRlRHVyYXRpb24iLCJzRG9tIiwiYlNvcnRDZWxsc1RvcCIsImlUYWJJbmRleCIsImZuU3RhdGVMb2FkQ2FsbGJhY2siLCJmblN0YXRlU2F2ZUNhbGxiYWNrIiwicmVuZGVyZXIiLCJzZWFyY2hEZWxheSIsInJvd0lkIixbImlDb29raWVEdXJhdGlvbiIsImlTdGF0ZUR1cmF0aW9uIl0sWyJvU2VhcmNoIiwib1ByZXZpb3VzU2VhcmNoIl0sWyJhb1NlYXJjaENvbHMiLCJhb1ByZVNlYXJjaENvbHMiXSxbImlEaXNwbGF5TGVuZ3RoIiwiX2lEaXNwbGF5TGVuZ3RoIl1dKTtNKHIub1Njcm9sbCxnLFtbInNTY3JvbGxYIiwic1giXSxbInNTY3JvbGxYSW5uZXIiLCJzWElubmVyIl0sClsic1Njcm9sbFkiLCJzWSJdLFsiYlNjcm9sbENvbGxhcHNlIiwiYkNvbGxhcHNlIl1dKTtNKHIub0xhbmd1YWdlLGcsImZuSW5mb0NhbGxiYWNrIik7RShyLCJhb0RyYXdDYWxsYmFjayIsZy5mbkRyYXdDYWxsYmFjaywidXNlciIpO0UociwiYW9TZXJ2ZXJQYXJhbXMiLGcuZm5TZXJ2ZXJQYXJhbXMsInVzZXIiKTtFKHIsImFvU3RhdGVTYXZlUGFyYW1zIixnLmZuU3RhdGVTYXZlUGFyYW1zLCJ1c2VyIik7RShyLCJhb1N0YXRlTG9hZFBhcmFtcyIsZy5mblN0YXRlTG9hZFBhcmFtcywidXNlciIpO0UociwiYW9TdGF0ZUxvYWRlZCIsZy5mblN0YXRlTG9hZGVkLCJ1c2VyIik7RShyLCJhb1Jvd0NhbGxiYWNrIixnLmZuUm93Q2FsbGJhY2ssInVzZXIiKTtFKHIsImFvUm93Q3JlYXRlZENhbGxiYWNrIixnLmZuQ3JlYXRlZFJvdywidXNlciIpO0UociwiYW9IZWFkZXJDYWxsYmFjayIsZy5mbkhlYWRlckNhbGxiYWNrLCJ1c2VyIik7RShyLCJhb0Zvb3RlckNhbGxiYWNrIixnLmZuRm9vdGVyQ2FsbGJhY2ssCiJ1c2VyIik7RShyLCJhb0luaXRDb21wbGV0ZSIsZy5mbkluaXRDb21wbGV0ZSwidXNlciIpO0UociwiYW9QcmVEcmF3Q2FsbGJhY2siLGcuZm5QcmVEcmF3Q2FsbGJhY2ssInVzZXIiKTtyLnJvd0lkRm49VShnLnJvd0lkKTtsYihyKTt2YXIgeD1yLm9DbGFzc2VzO2YuZXh0ZW5kKHgscS5leHQuY2xhc3NlcyxnLm9DbGFzc2VzKTt3LmFkZENsYXNzKHguc1RhYmxlKTtyLmlJbml0RGlzcGxheVN0YXJ0PT09cCYmKHIuaUluaXREaXNwbGF5U3RhcnQ9Zy5pRGlzcGxheVN0YXJ0LHIuX2lEaXNwbGF5U3RhcnQ9Zy5pRGlzcGxheVN0YXJ0KTtudWxsIT09Zy5pRGVmZXJMb2FkaW5nJiYoci5iRGVmZXJMb2FkaW5nPSEwLGU9Zi5pc0FycmF5KGcuaURlZmVyTG9hZGluZyksci5faVJlY29yZHNEaXNwbGF5PWU/Zy5pRGVmZXJMb2FkaW5nWzBdOmcuaURlZmVyTG9hZGluZyxyLl9pUmVjb3Jkc1RvdGFsPWU/Zy5pRGVmZXJMb2FkaW5nWzFdOmcuaURlZmVyTG9hZGluZyk7dmFyIHk9ci5vTGFuZ3VhZ2U7CmYuZXh0ZW5kKCEwLHksZy5vTGFuZ3VhZ2UpO3kuc1VybCYmKGYuYWpheCh7ZGF0YVR5cGU6Impzb24iLHVybDp5LnNVcmwsc3VjY2VzczpmdW5jdGlvbihhKXtHYShhKTtMKG0ub0xhbmd1YWdlLGEpO2YuZXh0ZW5kKCEwLHksYSk7amEocil9LGVycm9yOmZ1bmN0aW9uKCl7amEocil9fSksbj0hMCk7bnVsbD09PWcuYXNTdHJpcGVDbGFzc2VzJiYoci5hc1N0cmlwZUNsYXNzZXM9W3guc1N0cmlwZU9kZCx4LnNTdHJpcGVFdmVuXSk7ZT1yLmFzU3RyaXBlQ2xhc3Nlczt2YXIgej13LmNoaWxkcmVuKCJ0Ym9keSIpLmZpbmQoInRyIikuZXEoMCk7LTEhPT1mLmluQXJyYXkoITAsZi5tYXAoZSxmdW5jdGlvbihhLGIpe3JldHVybiB6Lmhhc0NsYXNzKGEpfSkpJiYoZigidGJvZHkgdHIiLHRoaXMpLnJlbW92ZUNsYXNzKGUuam9pbigiICIpKSxyLmFzRGVzdHJveVN0cmlwZXM9ZS5zbGljZSgpKTtlPVtdO3U9dGhpcy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGhlYWQiKTswIT09dS5sZW5ndGgmJgooZmEoci5hb0hlYWRlcix1WzBdKSxlPXVhKHIpKTtpZihudWxsPT09Zy5hb0NvbHVtbnMpZm9yKHU9W10saz0wLGw9ZS5sZW5ndGg7azxsO2srKyl1LnB1c2gobnVsbCk7ZWxzZSB1PWcuYW9Db2x1bW5zO2s9MDtmb3IobD11Lmxlbmd0aDtrPGw7aysrKUlhKHIsZT9lW2tdOm51bGwpO25iKHIsZy5hb0NvbHVtbkRlZnMsdSxmdW5jdGlvbihhLGIpe21hKHIsYSxiKX0pO2lmKHoubGVuZ3RoKXt2YXIgQj1mdW5jdGlvbihhLGIpe3JldHVybiBudWxsIT09YS5nZXRBdHRyaWJ1dGUoImRhdGEtIitiKT9iOm51bGx9O2YoelswXSkuY2hpbGRyZW4oInRoLCB0ZCIpLmVhY2goZnVuY3Rpb24oYSxiKXt2YXIgYz1yLmFvQ29sdW1uc1thXTtpZihjLm1EYXRhPT09YSl7dmFyIGQ9QihiLCJzb3J0Iil8fEIoYiwib3JkZXIiKTtiPUIoYiwiZmlsdGVyIil8fEIoYiwic2VhcmNoIik7aWYobnVsbCE9PWR8fG51bGwhPT1iKWMubURhdGE9e186YSsiLmRpc3BsYXkiLHNvcnQ6bnVsbCE9PWQ/YSsiLkBkYXRhLSIrCmQ6cCx0eXBlOm51bGwhPT1kP2ErIi5AZGF0YS0iK2Q6cCxmaWx0ZXI6bnVsbCE9PWI/YSsiLkBkYXRhLSIrYjpwfSxtYShyLGEpfX0pfXZhciBDPXIub0ZlYXR1cmVzO2U9ZnVuY3Rpb24oKXtpZihnLmFhU29ydGluZz09PXApe3ZhciBhPXIuYWFTb3J0aW5nO2s9MDtmb3IobD1hLmxlbmd0aDtrPGw7aysrKWFba11bMV09ci5hb0NvbHVtbnNba10uYXNTb3J0aW5nWzBdfUFhKHIpO0MuYlNvcnQmJkUociwiYW9EcmF3Q2FsbGJhY2siLGZ1bmN0aW9uKCl7aWYoci5iU29ydGVkKXt2YXIgYT1ZKHIpLGI9e307Zi5lYWNoKGEsZnVuY3Rpb24oYSxjKXtiW2Muc3JjXT1jLmRpcn0pO0EocixudWxsLCJvcmRlciIsW3IsYSxiXSk7TmIocil9fSk7RShyLCJhb0RyYXdDYWxsYmFjayIsZnVuY3Rpb24oKXsoci5iU29ydGVkfHwic3NwIj09PUQocil8fEMuYkRlZmVyUmVuZGVyKSYmQWEocil9LCJzYyIpO2E9dy5jaGlsZHJlbigiY2FwdGlvbiIpLmVhY2goZnVuY3Rpb24oKXt0aGlzLl9jYXB0aW9uU2lkZT0KZih0aGlzKS5jc3MoImNhcHRpb24tc2lkZSIpfSk7dmFyIGI9dy5jaGlsZHJlbigidGhlYWQiKTswPT09Yi5sZW5ndGgmJihiPWYoIjx0aGVhZC8+IikuYXBwZW5kVG8odykpO3IublRIZWFkPWJbMF07Yj13LmNoaWxkcmVuKCJ0Ym9keSIpOzA9PT1iLmxlbmd0aCYmKGI9ZigiPHRib2R5Lz4iKS5hcHBlbmRUbyh3KSk7ci5uVEJvZHk9YlswXTtiPXcuY2hpbGRyZW4oInRmb290Iik7MD09PWIubGVuZ3RoJiYwPGEubGVuZ3RoJiYoIiIhPT1yLm9TY3JvbGwuc1h8fCIiIT09ci5vU2Nyb2xsLnNZKSYmKGI9ZigiPHRmb290Lz4iKS5hcHBlbmRUbyh3KSk7MD09PWIubGVuZ3RofHwwPT09Yi5jaGlsZHJlbigpLmxlbmd0aD93LmFkZENsYXNzKHguc05vRm9vdGVyKTowPGIubGVuZ3RoJiYoci5uVEZvb3Q9YlswXSxmYShyLmFvRm9vdGVyLHIublRGb290KSk7aWYoZy5hYURhdGEpZm9yKGs9MDtrPGcuYWFEYXRhLmxlbmd0aDtrKyspUihyLGcuYWFEYXRhW2tdKTtlbHNlKHIuYkRlZmVyTG9hZGluZ3x8CiJkb20iPT1EKHIpKSYmcGEocixmKHIublRCb2R5KS5jaGlsZHJlbigidHIiKSk7ci5haURpc3BsYXk9ci5haURpc3BsYXlNYXN0ZXIuc2xpY2UoKTtyLmJJbml0aWFsaXNlZD0hMDshMT09PW4mJmphKHIpfTtnLmJTdGF0ZVNhdmU/KEMuYlN0YXRlU2F2ZT0hMCxFKHIsImFvRHJhd0NhbGxiYWNrIixCYSwic3RhdGVfc2F2ZSIpLE9iKHIsZyxlKSk6ZSgpfX0pO2I9bnVsbDtyZXR1cm4gdGhpc30sQyx0LHgsY2I9e30sUmI9L1tcclxuXHUyMDI4XS9nLEVhPS88Lio/Pi9nLGNjPS9eXGR7Miw0fVtcLlwvXC1dXGR7MSwyfVtcLlwvXC1dXGR7MSwyfShbVCBdezF9XGR7MSwyfVs6XC5dXGR7Mn0oW1wuOl1cZHsyfSk/KT8kLyxkYz0vKFwvfFwufFwqfFwrfFw/fFx8fFwofFwpfFxbfFxdfFx7fFx9fFxcfFwkfFxefFwtKS9nLGJiPS9bJywkwqPigqzCpSVcdTIwMDlcdTIwMkZcdTIwQkRcdTIwYTlcdTIwQkFyZmvJg86eXS9naSxQPWZ1bmN0aW9uKGEpe3JldHVybiBhJiYhMCE9PWEmJiItIiE9PWE/ITE6CiEwfSxTYj1mdW5jdGlvbihhKXt2YXIgYj1wYXJzZUludChhLDEwKTtyZXR1cm4haXNOYU4oYikmJmlzRmluaXRlKGEpP2I6bnVsbH0sVGI9ZnVuY3Rpb24oYSxiKXtjYltiXXx8KGNiW2JdPW5ldyBSZWdFeHAoVWEoYiksImciKSk7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYSYmIi4iIT09Yj9hLnJlcGxhY2UoL1wuL2csIiIpLnJlcGxhY2UoY2JbYl0sIi4iKTphfSxkYj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9InN0cmluZyI9PT10eXBlb2YgYTtpZihQKGEpKXJldHVybiEwO2ImJmQmJihhPVRiKGEsYikpO2MmJmQmJihhPWEucmVwbGFjZShiYiwiIikpO3JldHVybiFpc05hTihwYXJzZUZsb2F0KGEpKSYmaXNGaW5pdGUoYSl9LFViPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gUChhKT8hMDpQKGEpfHwic3RyaW5nIj09PXR5cGVvZiBhP2RiKGEucmVwbGFjZShFYSwiIiksYixjKT8hMDpudWxsOm51bGx9LEo9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9MCxoPWEubGVuZ3RoO2lmKGMhPT0KcClmb3IoO2U8aDtlKyspYVtlXSYmYVtlXVtiXSYmZC5wdXNoKGFbZV1bYl1bY10pO2Vsc2UgZm9yKDtlPGg7ZSsrKWFbZV0mJmQucHVzaChhW2VdW2JdKTtyZXR1cm4gZH0sbGE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9W10saD0wLGc9Yi5sZW5ndGg7aWYoZCE9PXApZm9yKDtoPGc7aCsrKWFbYltoXV1bY10mJmUucHVzaChhW2JbaF1dW2NdW2RdKTtlbHNlIGZvcig7aDxnO2grKyllLnB1c2goYVtiW2hdXVtjXSk7cmV0dXJuIGV9LFo9ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXTtpZihiPT09cCl7Yj0wO3ZhciBkPWF9ZWxzZSBkPWIsYj1hO2ZvcihhPWI7YTxkO2ErKyljLnB1c2goYSk7cmV0dXJuIGN9LFZiPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWFbY10mJmIucHVzaChhW2NdKTtyZXR1cm4gYn0sdGE9ZnVuY3Rpb24oYSl7YTp7aWYoISgyPmEubGVuZ3RoKSl7dmFyIGI9YS5zbGljZSgpLnNvcnQoKTtmb3IodmFyIGM9YlswXSxkPTEsCmU9Yi5sZW5ndGg7ZDxlO2QrKyl7aWYoYltkXT09PWMpe2I9ITE7YnJlYWsgYX1jPWJbZF19fWI9ITB9aWYoYilyZXR1cm4gYS5zbGljZSgpO2I9W107ZT1hLmxlbmd0aDt2YXIgaCxnPTA7ZD0wO2E6Zm9yKDtkPGU7ZCsrKXtjPWFbZF07Zm9yKGg9MDtoPGc7aCsrKWlmKGJbaF09PT1jKWNvbnRpbnVlIGE7Yi5wdXNoKGMpO2crK31yZXR1cm4gYn07cS51dGlsPXt0aHJvdHRsZTpmdW5jdGlvbihhLGIpe3ZhciBjPWIhPT1wP2I6MjAwLGQsZTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYj10aGlzLGc9K25ldyBEYXRlLGY9YXJndW1lbnRzO2QmJmc8ZCtjPyhjbGVhclRpbWVvdXQoZSksZT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZD1wO2EuYXBwbHkoYixmKX0sYykpOihkPWcsYS5hcHBseShiLGYpKX19LGVzY2FwZVJlZ2V4OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoZGMsIlxcJDEiKX19O3ZhciBGPWZ1bmN0aW9uKGEsYixjKXthW2JdIT09cCYmKGFbY109YVtiXSl9LGRhPS9cWy4qP1xdJC8sClg9L1woXCkkLyxVYT1xLnV0aWwuZXNjYXBlUmVnZXgseWE9ZigiPGRpdj4iKVswXSwkYj15YS50ZXh0Q29udGVudCE9PXAsYmM9LzwuKj8+L2csU2E9cS51dGlsLnRocm90dGxlLFdiPVtdLEc9QXJyYXkucHJvdG90eXBlLGVjPWZ1bmN0aW9uKGEpe3ZhciBiLGM9cS5zZXR0aW5ncyxkPWYubWFwKGMsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5uVGFibGV9KTtpZihhKXtpZihhLm5UYWJsZSYmYS5vQXBpKXJldHVyblthXTtpZihhLm5vZGVOYW1lJiYidGFibGUiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXt2YXIgZT1mLmluQXJyYXkoYSxkKTtyZXR1cm4tMSE9PWU/W2NbZV1dOm51bGx9aWYoYSYmImZ1bmN0aW9uIj09PXR5cGVvZiBhLnNldHRpbmdzKXJldHVybiBhLnNldHRpbmdzKCkudG9BcnJheSgpOyJzdHJpbmciPT09dHlwZW9mIGE/Yj1mKGEpOmEgaW5zdGFuY2VvZiBmJiYoYj1hKX1lbHNlIHJldHVybltdO2lmKGIpcmV0dXJuIGIubWFwKGZ1bmN0aW9uKGEpe2U9Zi5pbkFycmF5KHRoaXMsCmQpO3JldHVybi0xIT09ZT9jW2VdOm51bGx9KS50b0FycmF5KCl9O3ZhciB2PWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YgdikpcmV0dXJuIG5ldyB2KGEsYik7dmFyIGM9W10sZD1mdW5jdGlvbihhKXsoYT1lYyhhKSkmJmMucHVzaC5hcHBseShjLGEpfTtpZihmLmlzQXJyYXkoYSkpZm9yKHZhciBlPTAsaD1hLmxlbmd0aDtlPGg7ZSsrKWQoYVtlXSk7ZWxzZSBkKGEpO3RoaXMuY29udGV4dD10YShjKTtiJiZmLm1lcmdlKHRoaXMsYik7dGhpcy5zZWxlY3Rvcj17cm93czpudWxsLGNvbHM6bnVsbCxvcHRzOm51bGx9O3YuZXh0ZW5kKHRoaXMsdGhpcyxXYil9O3EuQXBpPXY7Zi5leHRlbmQodi5wcm90b3R5cGUse2FueTpmdW5jdGlvbigpe3JldHVybiAwIT09dGhpcy5jb3VudCgpfSxjb25jYXQ6Ry5jb25jYXQsY29udGV4dDpbXSxjb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZsYXR0ZW4oKS5sZW5ndGh9LGVhY2g6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz0KdGhpcy5sZW5ndGg7YjxjO2IrKylhLmNhbGwodGhpcyx0aGlzW2JdLGIsdGhpcyk7cmV0dXJuIHRoaXN9LGVxOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY29udGV4dDtyZXR1cm4gYi5sZW5ndGg+YT9uZXcgdihiW2FdLHRoaXNbYV0pOm51bGx9LGZpbHRlcjpmdW5jdGlvbihhKXt2YXIgYj1bXTtpZihHLmZpbHRlciliPUcuZmlsdGVyLmNhbGwodGhpcyxhLHRoaXMpO2Vsc2UgZm9yKHZhciBjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKWEuY2FsbCh0aGlzLHRoaXNbY10sYyx0aGlzKSYmYi5wdXNoKHRoaXNbY10pO3JldHVybiBuZXcgdih0aGlzLmNvbnRleHQsYil9LGZsYXR0ZW46ZnVuY3Rpb24oKXt2YXIgYT1bXTtyZXR1cm4gbmV3IHYodGhpcy5jb250ZXh0LGEuY29uY2F0LmFwcGx5KGEsdGhpcy50b0FycmF5KCkpKX0sam9pbjpHLmpvaW4saW5kZXhPZjpHLmluZGV4T2Z8fGZ1bmN0aW9uKGEsYil7Yj1ifHwwO2Zvcih2YXIgYz10aGlzLmxlbmd0aDtiPGM7YisrKWlmKHRoaXNbYl09PT0KYSlyZXR1cm4gYjtyZXR1cm4tMX0saXRlcmF0b3I6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9W10saCxnLGY9dGhpcy5jb250ZXh0LGwsbj10aGlzLnNlbGVjdG9yOyJzdHJpbmciPT09dHlwZW9mIGEmJihkPWMsYz1iLGI9YSxhPSExKTt2YXIgbT0wO2ZvcihoPWYubGVuZ3RoO208aDttKyspe3ZhciBxPW5ldyB2KGZbbV0pO2lmKCJ0YWJsZSI9PT1iKXt2YXIgdT1jLmNhbGwocSxmW21dLG0pO3UhPT1wJiZlLnB1c2godSl9ZWxzZSBpZigiY29sdW1ucyI9PT1ifHwicm93cyI9PT1iKXU9Yy5jYWxsKHEsZlttXSx0aGlzW21dLG0pLHUhPT1wJiZlLnB1c2godSk7ZWxzZSBpZigiY29sdW1uIj09PWJ8fCJjb2x1bW4tcm93cyI9PT1ifHwicm93Ij09PWJ8fCJjZWxsIj09PWIpe3ZhciB0PXRoaXNbbV07ImNvbHVtbi1yb3dzIj09PWImJihsPUZhKGZbbV0sbi5vcHRzKSk7dmFyIHg9MDtmb3IoZz10Lmxlbmd0aDt4PGc7eCsrKXU9dFt4XSx1PSJjZWxsIj09PWI/Yy5jYWxsKHEsZlttXSx1LnJvdywKdS5jb2x1bW4sbSx4KTpjLmNhbGwocSxmW21dLHUsbSx4LGwpLHUhPT1wJiZlLnB1c2godSl9fXJldHVybiBlLmxlbmd0aHx8ZD8oYT1uZXcgdihmLGE/ZS5jb25jYXQuYXBwbHkoW10sZSk6ZSksYj1hLnNlbGVjdG9yLGIucm93cz1uLnJvd3MsYi5jb2xzPW4uY29scyxiLm9wdHM9bi5vcHRzLGEpOnRoaXN9LGxhc3RJbmRleE9mOkcubGFzdEluZGV4T2Z8fGZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuaW5kZXhPZi5hcHBseSh0aGlzLnRvQXJyYXkucmV2ZXJzZSgpLGFyZ3VtZW50cyl9LGxlbmd0aDowLG1hcDpmdW5jdGlvbihhKXt2YXIgYj1bXTtpZihHLm1hcCliPUcubWFwLmNhbGwodGhpcyxhLHRoaXMpO2Vsc2UgZm9yKHZhciBjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKWIucHVzaChhLmNhbGwodGhpcyx0aGlzW2NdLGMpKTtyZXR1cm4gbmV3IHYodGhpcy5jb250ZXh0LGIpfSxwbHVjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGJbYV19KX0sCnBvcDpHLnBvcCxwdXNoOkcucHVzaCxyZWR1Y2U6Ry5yZWR1Y2V8fGZ1bmN0aW9uKGEsYil7cmV0dXJuIG1iKHRoaXMsYSxiLDAsdGhpcy5sZW5ndGgsMSl9LHJlZHVjZVJpZ2h0OkcucmVkdWNlUmlnaHR8fGZ1bmN0aW9uKGEsYil7cmV0dXJuIG1iKHRoaXMsYSxiLHRoaXMubGVuZ3RoLTEsLTEsLTEpfSxyZXZlcnNlOkcucmV2ZXJzZSxzZWxlY3RvcjpudWxsLHNoaWZ0Okcuc2hpZnQsc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHYodGhpcy5jb250ZXh0LHRoaXMpfSxzb3J0Okcuc29ydCxzcGxpY2U6Ry5zcGxpY2UsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBHLnNsaWNlLmNhbGwodGhpcyl9LHRvJDpmdW5jdGlvbigpe3JldHVybiBmKHRoaXMpfSx0b0pRdWVyeTpmdW5jdGlvbigpe3JldHVybiBmKHRoaXMpfSx1bmlxdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHYodGhpcy5jb250ZXh0LHRhKHRoaXMpKX0sdW5zaGlmdDpHLnVuc2hpZnR9KTt2LmV4dGVuZD1mdW5jdGlvbihhLApiLGMpe2lmKGMubGVuZ3RoJiZiJiYoYiBpbnN0YW5jZW9mIHZ8fGIuX19kdF93cmFwcGVyKSl7dmFyIGQsZT1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQ9Yi5hcHBseShhLGFyZ3VtZW50cyk7di5leHRlbmQoZCxkLGMubWV0aG9kRXh0KTtyZXR1cm4gZH19O3ZhciBoPTA7Zm9yKGQ9Yy5sZW5ndGg7aDxkO2grKyl7dmFyIGc9Y1toXTtiW2cubmFtZV09ImZ1bmN0aW9uIj09PWcudHlwZT9lKGEsZy52YWwsZyk6Im9iamVjdCI9PT1nLnR5cGU/e306Zy52YWw7YltnLm5hbWVdLl9fZHRfd3JhcHBlcj0hMDt2LmV4dGVuZChhLGJbZy5uYW1lXSxnLnByb3BFeHQpfX19O3YucmVnaXN0ZXI9dD1mdW5jdGlvbihhLGIpe2lmKGYuaXNBcnJheShhKSlmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspdi5yZWdpc3RlcihhW2NdLGIpO2Vsc2V7ZD1hLnNwbGl0KCIuIik7dmFyIGU9V2IsaDthPTA7Zm9yKGM9ZC5sZW5ndGg7YTxjO2ErKyl7dmFyIGc9KGg9LTEhPT0KZFthXS5pbmRleE9mKCIoKSIpKT9kW2FdLnJlcGxhY2UoIigpIiwiIik6ZFthXTthOnt2YXIgaz0wO2Zvcih2YXIgbD1lLmxlbmd0aDtrPGw7aysrKWlmKGVba10ubmFtZT09PWcpe2s9ZVtrXTticmVhayBhfWs9bnVsbH1rfHwoaz17bmFtZTpnLHZhbDp7fSxtZXRob2RFeHQ6W10scHJvcEV4dDpbXSx0eXBlOiJvYmplY3QifSxlLnB1c2goaykpO2E9PT1jLTE/KGsudmFsPWIsay50eXBlPSJmdW5jdGlvbiI9PT10eXBlb2YgYj8iZnVuY3Rpb24iOmYuaXNQbGFpbk9iamVjdChiKT8ib2JqZWN0Ijoib3RoZXIiKTplPWg/ay5tZXRob2RFeHQ6ay5wcm9wRXh0fX19O3YucmVnaXN0ZXJQbHVyYWw9eD1mdW5jdGlvbihhLGIsYyl7di5yZWdpc3RlcihhLGMpO3YucmVnaXN0ZXIoYixmdW5jdGlvbigpe3ZhciBhPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBhPT09dGhpcz90aGlzOmEgaW5zdGFuY2VvZiB2P2EubGVuZ3RoP2YuaXNBcnJheShhWzBdKT9uZXcgdihhLmNvbnRleHQsCmFbMF0pOmFbMF06cDphfSl9O3ZhciBmYz1mdW5jdGlvbihhLGIpe2lmKCJudW1iZXIiPT09dHlwZW9mIGEpcmV0dXJuW2JbYV1dO3ZhciBjPWYubWFwKGIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5uVGFibGV9KTtyZXR1cm4gZihjKS5maWx0ZXIoYSkubWFwKGZ1bmN0aW9uKGEpe2E9Zi5pbkFycmF5KHRoaXMsYyk7cmV0dXJuIGJbYV19KS50b0FycmF5KCl9O3QoInRhYmxlcygpIixmdW5jdGlvbihhKXtyZXR1cm4gYT9uZXcgdihmYyhhLHRoaXMuY29udGV4dCkpOnRoaXN9KTt0KCJ0YWJsZSgpIixmdW5jdGlvbihhKXthPXRoaXMudGFibGVzKGEpO3ZhciBiPWEuY29udGV4dDtyZXR1cm4gYi5sZW5ndGg/bmV3IHYoYlswXSk6YX0pO3goInRhYmxlcygpLm5vZGVzKCkiLCJ0YWJsZSgpLm5vZGUoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5UYWJsZX0sMSl9KTt4KCJ0YWJsZXMoKS5ib2R5KCkiLCJ0YWJsZSgpLmJvZHkoKSIsCmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhKXtyZXR1cm4gYS5uVEJvZHl9LDEpfSk7eCgidGFibGVzKCkuaGVhZGVyKCkiLCJ0YWJsZSgpLmhlYWRlcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRIZWFkfSwxKX0pO3goInRhYmxlcygpLmZvb3RlcigpIiwidGFibGUoKS5mb290ZXIoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5URm9vdH0sMSl9KTt4KCJ0YWJsZXMoKS5jb250YWluZXJzKCkiLCJ0YWJsZSgpLmNvbnRhaW5lcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRhYmxlV3JhcHBlcn0sMSl9KTt0KCJkcmF3KCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7InBhZ2UiPT09CmE/UyhiKTooInN0cmluZyI9PT10eXBlb2YgYSYmKGE9ImZ1bGwtaG9sZCI9PT1hPyExOiEwKSxWKGIsITE9PT1hKSl9KX0pO3QoInBhZ2UoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1wP3RoaXMucGFnZS5pbmZvKCkucGFnZTp0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7WGEoYixhKX0pfSk7dCgicGFnZS5pbmZvKCkiLGZ1bmN0aW9uKGEpe2lmKDA9PT10aGlzLmNvbnRleHQubGVuZ3RoKXJldHVybiBwO2E9dGhpcy5jb250ZXh0WzBdO3ZhciBiPWEuX2lEaXNwbGF5U3RhcnQsYz1hLm9GZWF0dXJlcy5iUGFnaW5hdGU/YS5faURpc3BsYXlMZW5ndGg6LTEsZD1hLmZuUmVjb3Jkc0Rpc3BsYXkoKSxlPS0xPT09YztyZXR1cm57cGFnZTplPzA6TWF0aC5mbG9vcihiL2MpLHBhZ2VzOmU/MTpNYXRoLmNlaWwoZC9jKSxzdGFydDpiLGVuZDphLmZuRGlzcGxheUVuZCgpLGxlbmd0aDpjLHJlY29yZHNUb3RhbDphLmZuUmVjb3Jkc1RvdGFsKCkscmVjb3Jkc0Rpc3BsYXk6ZCwKc2VydmVyU2lkZToic3NwIj09PUQoYSl9fSk7dCgicGFnZS5sZW4oKSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1wPzAhPT10aGlzLmNvbnRleHQubGVuZ3RoP3RoaXMuY29udGV4dFswXS5faURpc3BsYXlMZW5ndGg6cDp0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7VmEoYixhKX0pfSk7dmFyIFhiPWZ1bmN0aW9uKGEsYixjKXtpZihjKXt2YXIgZD1uZXcgdihhKTtkLm9uZSgiZHJhdyIsZnVuY3Rpb24oKXtjKGQuYWpheC5qc29uKCkpfSl9aWYoInNzcCI9PUQoYSkpVihhLGIpO2Vsc2V7SyhhLCEwKTt2YXIgZT1hLmpxWEhSO2UmJjQhPT1lLnJlYWR5U3RhdGUmJmUuYWJvcnQoKTt2YShhLFtdLGZ1bmN0aW9uKGMpe3FhKGEpO2M9d2EoYSxjKTtmb3IodmFyIGQ9MCxlPWMubGVuZ3RoO2Q8ZTtkKyspUihhLGNbZF0pO1YoYSxiKTtLKGEsITEpfSl9fTt0KCJhamF4Lmpzb24oKSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRleHQ7aWYoMDxhLmxlbmd0aClyZXR1cm4gYVswXS5qc29ufSk7CnQoImFqYXgucGFyYW1zKCkiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jb250ZXh0O2lmKDA8YS5sZW5ndGgpcmV0dXJuIGFbMF0ub0FqYXhEYXRhfSk7dCgiYWpheC5yZWxvYWQoKSIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGMpe1hiKGMsITE9PT1iLGEpfSl9KTt0KCJhamF4LnVybCgpIixmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbnRleHQ7aWYoYT09PXApe2lmKDA9PT1iLmxlbmd0aClyZXR1cm4gcDtiPWJbMF07cmV0dXJuIGIuYWpheD9mLmlzUGxhaW5PYmplY3QoYi5hamF4KT9iLmFqYXgudXJsOmIuYWpheDpiLnNBamF4U291cmNlfXJldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7Zi5pc1BsYWluT2JqZWN0KGIuYWpheCk/Yi5hamF4LnVybD1hOmIuYWpheD1hfSl9KTt0KCJhamF4LnVybCgpLmxvYWQoKSIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGMpe1hiKGMsCiExPT09YixhKX0pfSk7dmFyIGViPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGg9W10sZyxrLGw7dmFyIG49dHlwZW9mIGI7YiYmInN0cmluZyIhPT1uJiYiZnVuY3Rpb24iIT09biYmYi5sZW5ndGghPT1wfHwoYj1bYl0pO249MDtmb3Ioaz1iLmxlbmd0aDtuPGs7bisrKXt2YXIgbT1iW25dJiZiW25dLnNwbGl0JiYhYltuXS5tYXRjaCgvW1xbXCg6XS8pP2Jbbl0uc3BsaXQoIiwiKTpbYltuXV07dmFyIHE9MDtmb3IobD1tLmxlbmd0aDtxPGw7cSsrKShnPWMoInN0cmluZyI9PT10eXBlb2YgbVtxXT9mLnRyaW0obVtxXSk6bVtxXSkpJiZnLmxlbmd0aCYmKGg9aC5jb25jYXQoZykpfWE9Qy5zZWxlY3RvclthXTtpZihhLmxlbmd0aClmb3Iobj0wLGs9YS5sZW5ndGg7bjxrO24rKyloPWFbbl0oZCxlLGgpO3JldHVybiB0YShoKX0sZmI9ZnVuY3Rpb24oYSl7YXx8KGE9e30pO2EuZmlsdGVyJiZhLnNlYXJjaD09PXAmJihhLnNlYXJjaD1hLmZpbHRlcik7cmV0dXJuIGYuZXh0ZW5kKHtzZWFyY2g6Im5vbmUiLApvcmRlcjoiY3VycmVudCIscGFnZToiYWxsIn0sYSl9LGdiPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2IrKylpZigwPGFbYl0ubGVuZ3RoKXJldHVybiBhWzBdPWFbYl0sYVswXS5sZW5ndGg9MSxhLmxlbmd0aD0xLGEuY29udGV4dD1bYS5jb250ZXh0W2JdXSxhO2EubGVuZ3RoPTA7cmV0dXJuIGF9LEZhPWZ1bmN0aW9uKGEsYil7dmFyIGM9W10sZD1hLmFpRGlzcGxheTt2YXIgZT1hLmFpRGlzcGxheU1hc3Rlcjt2YXIgaD1iLnNlYXJjaDt2YXIgZz1iLm9yZGVyO2I9Yi5wYWdlO2lmKCJzc3AiPT1EKGEpKXJldHVybiJyZW1vdmVkIj09PWg/W106WigwLGUubGVuZ3RoKTtpZigiY3VycmVudCI9PWIpZm9yKGc9YS5faURpc3BsYXlTdGFydCxhPWEuZm5EaXNwbGF5RW5kKCk7ZzxhO2crKyljLnB1c2goZFtnXSk7ZWxzZSBpZigiY3VycmVudCI9PWd8fCJhcHBsaWVkIj09ZylpZigibm9uZSI9PWgpYz1lLnNsaWNlKCk7ZWxzZSBpZigiYXBwbGllZCI9PWgpYz0KZC5zbGljZSgpO2Vsc2V7aWYoInJlbW92ZWQiPT1oKXt2YXIgaz17fTtnPTA7Zm9yKGE9ZC5sZW5ndGg7ZzxhO2crKylrW2RbZ11dPW51bGw7Yz1mLm1hcChlLGZ1bmN0aW9uKGEpe3JldHVybiBrLmhhc093blByb3BlcnR5KGEpP251bGw6YX0pfX1lbHNlIGlmKCJpbmRleCI9PWd8fCJvcmlnaW5hbCI9PWcpZm9yKGc9MCxhPWEuYW9EYXRhLmxlbmd0aDtnPGE7ZysrKSJub25lIj09aD9jLnB1c2goZyk6KGU9Zi5pbkFycmF5KGcsZCksKC0xPT09ZSYmInJlbW92ZWQiPT1ofHwwPD1lJiYiYXBwbGllZCI9PWgpJiZjLnB1c2goZykpO3JldHVybiBjfSxnYz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGViKCJyb3ciLGIsZnVuY3Rpb24oYil7dmFyIGU9U2IoYiksZz1hLmFvRGF0YTtpZihudWxsIT09ZSYmIWMpcmV0dXJuW2VdO2R8fChkPUZhKGEsYykpO2lmKG51bGwhPT1lJiYtMSE9PWYuaW5BcnJheShlLGQpKXJldHVybltlXTtpZihudWxsPT09Ynx8Yj09PXB8fCIiPT09YilyZXR1cm4gZDsKaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBiKXJldHVybiBmLm1hcChkLGZ1bmN0aW9uKGEpe3ZhciBjPWdbYV07cmV0dXJuIGIoYSxjLl9hRGF0YSxjLm5Ucik/YTpudWxsfSk7aWYoYi5ub2RlTmFtZSl7ZT1iLl9EVF9Sb3dJbmRleDt2YXIgaz1iLl9EVF9DZWxsSW5kZXg7aWYoZSE9PXApcmV0dXJuIGdbZV0mJmdbZV0ublRyPT09Yj9bZV06W107aWYoaylyZXR1cm4gZ1trLnJvd10mJmdbay5yb3ddLm5Ucj09PWIucGFyZW50Tm9kZT9bay5yb3ddOltdO2U9ZihiKS5jbG9zZXN0KCIqW2RhdGEtZHQtcm93XSIpO3JldHVybiBlLmxlbmd0aD9bZS5kYXRhKCJkdC1yb3ciKV06W119aWYoInN0cmluZyI9PT10eXBlb2YgYiYmIiMiPT09Yi5jaGFyQXQoMCkmJihlPWEuYUlkc1tiLnJlcGxhY2UoL14jLywiIildLGUhPT1wKSlyZXR1cm5bZS5pZHhdO2U9VmIobGEoYS5hb0RhdGEsZCwiblRyIikpO3JldHVybiBmKGUpLmZpbHRlcihiKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fRFRfUm93SW5kZXh9KS50b0FycmF5KCl9LAphLGMpfTt0KCJyb3dzKCkiLGZ1bmN0aW9uKGEsYil7YT09PXA/YT0iIjpmLmlzUGxhaW5PYmplY3QoYSkmJihiPWEsYT0iIik7Yj1mYihiKTt2YXIgYz10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYyl7cmV0dXJuIGdjKGMsYSxiKX0sMSk7Yy5zZWxlY3Rvci5yb3dzPWE7Yy5zZWxlY3Rvci5vcHRzPWI7cmV0dXJuIGN9KTt0KCJyb3dzKCkubm9kZXMoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IixmdW5jdGlvbihhLGIpe3JldHVybiBhLmFvRGF0YVtiXS5uVHJ8fHB9LDEpfSk7dCgicm93cygpLmRhdGEoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcighMCwicm93cyIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gbGEoYS5hb0RhdGEsYiwiX2FEYXRhIil9LDEpfSk7eCgicm93cygpLmNhY2hlKCkiLCJyb3coKS5jYWNoZSgpIixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IixmdW5jdGlvbihiLGMpe2I9Yi5hb0RhdGFbY107CnJldHVybiJzZWFyY2giPT09YT9iLl9hRmlsdGVyRGF0YTpiLl9hU29ydERhdGF9LDEpfSk7eCgicm93cygpLmludmFsaWRhdGUoKSIsInJvdygpLmludmFsaWRhdGUoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInJvdyIsZnVuY3Rpb24oYixjKXtlYShiLGMsYSl9KX0pO3goInJvd3MoKS5pbmRleGVzKCkiLCJyb3coKS5pbmRleCgpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJyb3ciLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGJ9LDEpfSk7eCgicm93cygpLmlkcygpIiwicm93KCkuaWQoKSIsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9dGhpcy5jb250ZXh0LGQ9MCxlPWMubGVuZ3RoO2Q8ZTtkKyspZm9yKHZhciBoPTAsZz10aGlzW2RdLmxlbmd0aDtoPGc7aCsrKXt2YXIgZj1jW2RdLnJvd0lkRm4oY1tkXS5hb0RhdGFbdGhpc1tkXVtoXV0uX2FEYXRhKTtiLnB1c2goKCEwPT09YT8iIyI6IiIpK2YpfXJldHVybiBuZXcgdihjLGIpfSk7eCgicm93cygpLnJlbW92ZSgpIiwKInJvdygpLnJlbW92ZSgpIixmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5pdGVyYXRvcigicm93IixmdW5jdGlvbihiLGMsZCl7dmFyIGU9Yi5hb0RhdGEsaD1lW2NdLGcsZjtlLnNwbGljZShjLDEpO3ZhciBsPTA7Zm9yKGc9ZS5sZW5ndGg7bDxnO2wrKyl7dmFyIG49ZVtsXTt2YXIgbT1uLmFuQ2VsbHM7bnVsbCE9PW4ublRyJiYobi5uVHIuX0RUX1Jvd0luZGV4PWwpO2lmKG51bGwhPT1tKWZvcihuPTAsZj1tLmxlbmd0aDtuPGY7bisrKW1bbl0uX0RUX0NlbGxJbmRleC5yb3c9bH1yYShiLmFpRGlzcGxheU1hc3RlcixjKTtyYShiLmFpRGlzcGxheSxjKTtyYShhW2RdLGMsITEpOzA8Yi5faVJlY29yZHNEaXNwbGF5JiZiLl9pUmVjb3Jkc0Rpc3BsYXktLTtXYShiKTtjPWIucm93SWRGbihoLl9hRGF0YSk7YyE9PXAmJmRlbGV0ZSBiLmFJZHNbY119KTt0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsZD1hLmFvRGF0YS5sZW5ndGg7YjxkO2IrKylhLmFvRGF0YVtiXS5pZHg9CmJ9KTtyZXR1cm4gdGhpc30pO3QoInJvd3MuYWRkKCkiLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXt2YXIgYyxkPVtdO3ZhciBnPTA7Zm9yKGM9YS5sZW5ndGg7ZzxjO2crKyl7dmFyIGY9YVtnXTtmLm5vZGVOYW1lJiYiVFIiPT09Zi5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpP2QucHVzaChwYShiLGYpWzBdKTpkLnB1c2goUihiLGYpKX1yZXR1cm4gZH0sMSksYz10aGlzLnJvd3MoLTEpO2MucG9wKCk7Zi5tZXJnZShjLGIpO3JldHVybiBjfSk7dCgicm93KCkiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGdiKHRoaXMucm93cyhhLGIpKX0pO3QoInJvdygpLmRhdGEoKSIsZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jb250ZXh0O2lmKGE9PT1wKXJldHVybiBiLmxlbmd0aCYmdGhpcy5sZW5ndGg/YlswXS5hb0RhdGFbdGhpc1swXV0uX2FEYXRhOnA7dmFyIGM9YlswXS5hb0RhdGFbdGhpc1swXV07Yy5fYURhdGE9YTtmLmlzQXJyYXkoYSkmJmMublRyLmlkJiYKUShiWzBdLnJvd0lkKShhLGMublRyLmlkKTtlYShiWzBdLHRoaXNbMF0sImRhdGEiKTtyZXR1cm4gdGhpc30pO3QoInJvdygpLm5vZGUoKSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRleHQ7cmV0dXJuIGEubGVuZ3RoJiZ0aGlzLmxlbmd0aD9hWzBdLmFvRGF0YVt0aGlzWzBdXS5uVHJ8fG51bGw6bnVsbH0pO3QoInJvdy5hZGQoKSIsZnVuY3Rpb24oYSl7YSBpbnN0YW5jZW9mIGYmJmEubGVuZ3RoJiYoYT1hWzBdKTt2YXIgYj10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7cmV0dXJuIGEubm9kZU5hbWUmJiJUUiI9PT1hLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk/cGEoYixhKVswXTpSKGIsYSl9KTtyZXR1cm4gdGhpcy5yb3coYlswXSl9KTt2YXIgaGM9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9W10saD1mdW5jdGlvbihiLGMpe2lmKGYuaXNBcnJheShiKXx8YiBpbnN0YW5jZW9mIGYpZm9yKHZhciBkPTAsZz1iLmxlbmd0aDtkPGc7ZCsrKWgoYltkXSxjKTtlbHNlIGIubm9kZU5hbWUmJgoidHIiPT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP2UucHVzaChiKTooZD1mKCI8dHI+PHRkLz48L3RyPiIpLmFkZENsYXNzKGMpLGYoInRkIixkKS5hZGRDbGFzcyhjKS5odG1sKGIpWzBdLmNvbFNwYW49VyhhKSxlLnB1c2goZFswXSkpfTtoKGMsZCk7Yi5fZGV0YWlscyYmYi5fZGV0YWlscy5kZXRhY2goKTtiLl9kZXRhaWxzPWYoZSk7Yi5fZGV0YWlsc1Nob3cmJmIuX2RldGFpbHMuaW5zZXJ0QWZ0ZXIoYi5uVHIpfSxoYj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuY29udGV4dDtjLmxlbmd0aCYmKGE9Y1swXS5hb0RhdGFbYiE9PXA/YjphWzBdXSkmJmEuX2RldGFpbHMmJihhLl9kZXRhaWxzLnJlbW92ZSgpLGEuX2RldGFpbHNTaG93PXAsYS5fZGV0YWlscz1wKX0sWWI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmNvbnRleHQ7Yy5sZW5ndGgmJmEubGVuZ3RoJiYoYT1jWzBdLmFvRGF0YVthWzBdXSxhLl9kZXRhaWxzJiYoKGEuX2RldGFpbHNTaG93PWIpP2EuX2RldGFpbHMuaW5zZXJ0QWZ0ZXIoYS5uVHIpOgphLl9kZXRhaWxzLmRldGFjaCgpLGljKGNbMF0pKSl9LGljPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyB2KGEpLGM9YS5hb0RhdGE7Yi5vZmYoImRyYXcuZHQuRFRfZGV0YWlscyBjb2x1bW4tdmlzaWJpbGl0eS5kdC5EVF9kZXRhaWxzIGRlc3Ryb3kuZHQuRFRfZGV0YWlscyIpOzA8SihjLCJfZGV0YWlscyIpLmxlbmd0aCYmKGIub24oImRyYXcuZHQuRFRfZGV0YWlscyIsZnVuY3Rpb24oZCxlKXthPT09ZSYmYi5yb3dzKHtwYWdlOiJjdXJyZW50In0pLmVxKDApLmVhY2goZnVuY3Rpb24oYSl7YT1jW2FdO2EuX2RldGFpbHNTaG93JiZhLl9kZXRhaWxzLmluc2VydEFmdGVyKGEublRyKX0pfSksYi5vbigiY29sdW1uLXZpc2liaWxpdHkuZHQuRFRfZGV0YWlscyIsZnVuY3Rpb24oYixlLGYsZyl7aWYoYT09PWUpZm9yKGU9VyhlKSxmPTAsZz1jLmxlbmd0aDtmPGc7ZisrKWI9Y1tmXSxiLl9kZXRhaWxzJiZiLl9kZXRhaWxzLmNoaWxkcmVuKCJ0ZFtjb2xzcGFuXSIpLmF0dHIoImNvbHNwYW4iLAplKX0pLGIub24oImRlc3Ryb3kuZHQuRFRfZGV0YWlscyIsZnVuY3Rpb24oZCxlKXtpZihhPT09ZSlmb3IoZD0wLGU9Yy5sZW5ndGg7ZDxlO2QrKyljW2RdLl9kZXRhaWxzJiZoYihiLGQpfSkpfTt0KCJyb3coKS5jaGlsZCgpIixmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuY29udGV4dDtpZihhPT09cClyZXR1cm4gYy5sZW5ndGgmJnRoaXMubGVuZ3RoP2NbMF0uYW9EYXRhW3RoaXNbMF1dLl9kZXRhaWxzOnA7ITA9PT1hP3RoaXMuY2hpbGQuc2hvdygpOiExPT09YT9oYih0aGlzKTpjLmxlbmd0aCYmdGhpcy5sZW5ndGgmJmhjKGNbMF0sY1swXS5hb0RhdGFbdGhpc1swXV0sYSxiKTtyZXR1cm4gdGhpc30pO3QoWyJyb3coKS5jaGlsZC5zaG93KCkiLCJyb3coKS5jaGlsZCgpLnNob3coKSJdLGZ1bmN0aW9uKGEpe1liKHRoaXMsITApO3JldHVybiB0aGlzfSk7dChbInJvdygpLmNoaWxkLmhpZGUoKSIsInJvdygpLmNoaWxkKCkuaGlkZSgpIl0sZnVuY3Rpb24oKXtZYih0aGlzLCExKTsKcmV0dXJuIHRoaXN9KTt0KFsicm93KCkuY2hpbGQucmVtb3ZlKCkiLCJyb3coKS5jaGlsZCgpLnJlbW92ZSgpIl0sZnVuY3Rpb24oKXtoYih0aGlzKTtyZXR1cm4gdGhpc30pO3QoInJvdygpLmNoaWxkLmlzU2hvd24oKSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRleHQ7cmV0dXJuIGEubGVuZ3RoJiZ0aGlzLmxlbmd0aD9hWzBdLmFvRGF0YVt0aGlzWzBdXS5fZGV0YWlsc1Nob3d8fCExOiExfSk7dmFyIGpjPS9eKFteOl0rKToobmFtZXx2aXNJZHh8dmlzaWJsZSkkLyxaYj1mdW5jdGlvbihhLGIsYyxkLGUpe2M9W107ZD0wO2Zvcih2YXIgZj1lLmxlbmd0aDtkPGY7ZCsrKWMucHVzaChJKGEsZVtkXSxiKSk7cmV0dXJuIGN9LGtjPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmFvQ29sdW1ucyxlPUooZCwic05hbWUiKSxoPUooZCwiblRoIik7cmV0dXJuIGViKCJjb2x1bW4iLGIsZnVuY3Rpb24oYil7dmFyIGc9U2IoYik7aWYoIiI9PT1iKXJldHVybiBaKGQubGVuZ3RoKTtpZihudWxsIT09CmcpcmV0dXJuWzA8PWc/ZzpkLmxlbmd0aCtnXTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGIpe3ZhciBsPUZhKGEsYyk7cmV0dXJuIGYubWFwKGQsZnVuY3Rpb24oYyxkKXtyZXR1cm4gYihkLFpiKGEsZCwwLDAsbCksaFtkXSk/ZDpudWxsfSl9dmFyIG49InN0cmluZyI9PT10eXBlb2YgYj9iLm1hdGNoKGpjKToiIjtpZihuKXN3aXRjaChuWzJdKXtjYXNlICJ2aXNJZHgiOmNhc2UgInZpc2libGUiOmc9cGFyc2VJbnQoblsxXSwxMCk7aWYoMD5nKXt2YXIgbT1mLm1hcChkLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuYlZpc2libGU/YjpudWxsfSk7cmV0dXJuW21bbS5sZW5ndGgrZ11dfXJldHVybltiYShhLGcpXTtjYXNlICJuYW1lIjpyZXR1cm4gZi5tYXAoZSxmdW5jdGlvbihhLGIpe3JldHVybiBhPT09blsxXT9iOm51bGx9KTtkZWZhdWx0OnJldHVybltdfWlmKGIubm9kZU5hbWUmJmIuX0RUX0NlbGxJbmRleClyZXR1cm5bYi5fRFRfQ2VsbEluZGV4LmNvbHVtbl07Zz1mKGgpLmZpbHRlcihiKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5pbkFycmF5KHRoaXMsCmgpfSkudG9BcnJheSgpO2lmKGcubGVuZ3RofHwhYi5ub2RlTmFtZSlyZXR1cm4gZztnPWYoYikuY2xvc2VzdCgiKltkYXRhLWR0LWNvbHVtbl0iKTtyZXR1cm4gZy5sZW5ndGg/W2cuZGF0YSgiZHQtY29sdW1uIildOltdfSxhLGMpfTt0KCJjb2x1bW5zKCkiLGZ1bmN0aW9uKGEsYil7YT09PXA/YT0iIjpmLmlzUGxhaW5PYmplY3QoYSkmJihiPWEsYT0iIik7Yj1mYihiKTt2YXIgYz10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYyl7cmV0dXJuIGtjKGMsYSxiKX0sMSk7Yy5zZWxlY3Rvci5jb2xzPWE7Yy5zZWxlY3Rvci5vcHRzPWI7cmV0dXJuIGN9KTt4KCJjb2x1bW5zKCkuaGVhZGVyKCkiLCJjb2x1bW4oKS5oZWFkZXIoKSIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uIixmdW5jdGlvbihhLGIpe3JldHVybiBhLmFvQ29sdW1uc1tiXS5uVGh9LDEpfSk7eCgiY29sdW1ucygpLmZvb3RlcigpIiwiY29sdW1uKCkuZm9vdGVyKCkiLGZ1bmN0aW9uKGEsCmIpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuYW9Db2x1bW5zW2JdLm5UZn0sMSl9KTt4KCJjb2x1bW5zKCkuZGF0YSgpIiwiY29sdW1uKCkuZGF0YSgpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4tcm93cyIsWmIsMSl9KTt4KCJjb2x1bW5zKCkuZGF0YVNyYygpIiwiY29sdW1uKCkuZGF0YVNyYygpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuYW9Db2x1bW5zW2JdLm1EYXRhfSwxKX0pO3goImNvbHVtbnMoKS5jYWNoZSgpIiwiY29sdW1uKCkuY2FjaGUoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbi1yb3dzIixmdW5jdGlvbihiLGMsZCxlLGYpe3JldHVybiBsYShiLmFvRGF0YSxmLCJzZWFyY2giPT09YT8iX2FGaWx0ZXJEYXRhIjoiX2FTb3J0RGF0YSIsYyl9LDEpfSk7eCgiY29sdW1ucygpLm5vZGVzKCkiLAoiY29sdW1uKCkubm9kZXMoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uLXJvd3MiLGZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGxhKGEuYW9EYXRhLGUsImFuQ2VsbHMiLGIpfSwxKX0pO3goImNvbHVtbnMoKS52aXNpYmxlKCkiLCJjb2x1bW4oKS52aXNpYmxlKCkiLGZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPXRoaXMuaXRlcmF0b3IoImNvbHVtbiIsZnVuY3Rpb24oYixjKXtpZihhPT09cClyZXR1cm4gYi5hb0NvbHVtbnNbY10uYlZpc2libGU7dmFyIGQ9Yi5hb0NvbHVtbnMsZT1kW2NdLGg9Yi5hb0RhdGEsbjtpZihhIT09cCYmZS5iVmlzaWJsZSE9PWEpe2lmKGEpe3ZhciBtPWYuaW5BcnJheSghMCxKKGQsImJWaXNpYmxlIiksYysxKTtkPTA7Zm9yKG49aC5sZW5ndGg7ZDxuO2QrKyl7dmFyIHE9aFtkXS5uVHI7Yj1oW2RdLmFuQ2VsbHM7cSYmcS5pbnNlcnRCZWZvcmUoYltjXSxiW21dfHxudWxsKX19ZWxzZSBmKEooYi5hb0RhdGEsImFuQ2VsbHMiLApjKSkuZGV0YWNoKCk7ZS5iVmlzaWJsZT1hfX0pO2EhPT1wJiZ0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oZCl7aGEoZCxkLmFvSGVhZGVyKTtoYShkLGQuYW9Gb290ZXIpO2QuYWlEaXNwbGF5Lmxlbmd0aHx8ZihkLm5UQm9keSkuZmluZCgidGRbY29sc3Bhbl0iKS5hdHRyKCJjb2xzcGFuIixXKGQpKTtCYShkKTtjLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKGMsZCl7QShjLG51bGwsImNvbHVtbi12aXNpYmlsaXR5IixbYyxkLGEsYl0pfSk7KGI9PT1wfHxiKSYmYy5jb2x1bW5zLmFkanVzdCgpfSk7cmV0dXJuIGR9KTt4KCJjb2x1bW5zKCkuaW5kZXhlcygpIiwiY29sdW1uKCkuaW5kZXgoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbiIsZnVuY3Rpb24oYixjKXtyZXR1cm4idmlzaWJsZSI9PT1hP2NhKGIsYyk6Y30sMSl9KTt0KCJjb2x1bW5zLmFkanVzdCgpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7YWEoYSl9LAoxKX0pO3QoImNvbHVtbi5pbmRleCgpIixmdW5jdGlvbihhLGIpe2lmKDAhPT10aGlzLmNvbnRleHQubGVuZ3RoKXt2YXIgYz10aGlzLmNvbnRleHRbMF07aWYoImZyb21WaXNpYmxlIj09PWF8fCJ0b0RhdGEiPT09YSlyZXR1cm4gYmEoYyxiKTtpZigiZnJvbURhdGEiPT09YXx8InRvVmlzaWJsZSI9PT1hKXJldHVybiBjYShjLGIpfX0pO3QoImNvbHVtbigpIixmdW5jdGlvbihhLGIpe3JldHVybiBnYih0aGlzLmNvbHVtbnMoYSxiKSl9KTt2YXIgbGM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuYW9EYXRhLGU9RmEoYSxjKSxoPVZiKGxhKGQsZSwiYW5DZWxscyIpKSxnPWYoW10uY29uY2F0LmFwcGx5KFtdLGgpKSxrLGw9YS5hb0NvbHVtbnMubGVuZ3RoLG4sbSxxLHUsdCx2O3JldHVybiBlYigiY2VsbCIsYixmdW5jdGlvbihiKXt2YXIgYz0iZnVuY3Rpb24iPT09dHlwZW9mIGI7aWYobnVsbD09PWJ8fGI9PT1wfHxjKXtuPVtdO209MDtmb3IocT1lLmxlbmd0aDttPHE7bSsrKWZvcihrPQplW21dLHU9MDt1PGw7dSsrKXQ9e3JvdzprLGNvbHVtbjp1fSxjPyh2PWRba10sYih0LEkoYSxrLHUpLHYuYW5DZWxscz92LmFuQ2VsbHNbdV06bnVsbCkmJm4ucHVzaCh0KSk6bi5wdXNoKHQpO3JldHVybiBufWlmKGYuaXNQbGFpbk9iamVjdChiKSlyZXR1cm4gYi5jb2x1bW4hPT1wJiZiLnJvdyE9PXAmJi0xIT09Zi5pbkFycmF5KGIucm93LGUpP1tiXTpbXTtjPWcuZmlsdGVyKGIpLm1hcChmdW5jdGlvbihhLGIpe3JldHVybntyb3c6Yi5fRFRfQ2VsbEluZGV4LnJvdyxjb2x1bW46Yi5fRFRfQ2VsbEluZGV4LmNvbHVtbn19KS50b0FycmF5KCk7aWYoYy5sZW5ndGh8fCFiLm5vZGVOYW1lKXJldHVybiBjO3Y9ZihiKS5jbG9zZXN0KCIqW2RhdGEtZHQtcm93XSIpO3JldHVybiB2Lmxlbmd0aD9be3Jvdzp2LmRhdGEoImR0LXJvdyIpLGNvbHVtbjp2LmRhdGEoImR0LWNvbHVtbiIpfV06W119LGEsYyl9O3QoImNlbGxzKCkiLGZ1bmN0aW9uKGEsYixjKXtmLmlzUGxhaW5PYmplY3QoYSkmJgooYS5yb3c9PT1wPyhjPWEsYT1udWxsKTooYz1iLGI9bnVsbCkpO2YuaXNQbGFpbk9iamVjdChiKSYmKGM9YixiPW51bGwpO2lmKG51bGw9PT1ifHxiPT09cClyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGIpe3JldHVybiBsYyhiLGEsZmIoYykpfSk7dmFyIGQ9Yz97cGFnZTpjLnBhZ2Usb3JkZXI6Yy5vcmRlcixzZWFyY2g6Yy5zZWFyY2h9Ont9LGU9dGhpcy5jb2x1bW5zKGIsZCksaD10aGlzLnJvd3MoYSxkKSxnLGssbCxuO2Q9dGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEsYil7YT1bXTtnPTA7Zm9yKGs9aFtiXS5sZW5ndGg7ZzxrO2crKylmb3IobD0wLG49ZVtiXS5sZW5ndGg7bDxuO2wrKylhLnB1c2goe3JvdzpoW2JdW2ddLGNvbHVtbjplW2JdW2xdfSk7cmV0dXJuIGF9LDEpO2Q9YyYmYy5zZWxlY3RlZD90aGlzLmNlbGxzKGQsYyk6ZDtmLmV4dGVuZChkLnNlbGVjdG9yLHtjb2xzOmIscm93czphLG9wdHM6Y30pO3JldHVybiBkfSk7eCgiY2VsbHMoKS5ub2RlcygpIiwKImNlbGwoKS5ub2RlKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNlbGwiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4oYT1hLmFvRGF0YVtiXSkmJmEuYW5DZWxscz9hLmFuQ2VsbHNbY106cH0sMSl9KTt0KCJjZWxscygpLmRhdGEoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY2VsbCIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBJKGEsYixjKX0sMSl9KTt4KCJjZWxscygpLmNhY2hlKCkiLCJjZWxsKCkuY2FjaGUoKSIsZnVuY3Rpb24oYSl7YT0ic2VhcmNoIj09PWE/Il9hRmlsdGVyRGF0YSI6Il9hU29ydERhdGEiO3JldHVybiB0aGlzLml0ZXJhdG9yKCJjZWxsIixmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGIuYW9EYXRhW2NdW2FdW2RdfSwxKX0pO3goImNlbGxzKCkucmVuZGVyKCkiLCJjZWxsKCkucmVuZGVyKCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjZWxsIixmdW5jdGlvbihiLGMsZCl7cmV0dXJuIEkoYixjLGQsYSl9LAoxKX0pO3goImNlbGxzKCkuaW5kZXhlcygpIiwiY2VsbCgpLmluZGV4KCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNlbGwiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm57cm93OmIsY29sdW1uOmMsY29sdW1uVmlzaWJsZTpjYShhLGMpfX0sMSl9KTt4KCJjZWxscygpLmludmFsaWRhdGUoKSIsImNlbGwoKS5pbnZhbGlkYXRlKCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjZWxsIixmdW5jdGlvbihiLGMsZCl7ZWEoYixjLGEsZCl9KX0pO3QoImNlbGwoKSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBnYih0aGlzLmNlbGxzKGEsYixjKSl9KTt0KCJjZWxsKCkuZGF0YSgpIixmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbnRleHQsYz10aGlzWzBdO2lmKGE9PT1wKXJldHVybiBiLmxlbmd0aCYmYy5sZW5ndGg/SShiWzBdLGNbMF0ucm93LGNbMF0uY29sdW1uKTpwO29iKGJbMF0sY1swXS5yb3csY1swXS5jb2x1bW4sYSk7ZWEoYlswXSxjWzBdLnJvdywKImRhdGEiLGNbMF0uY29sdW1uKTtyZXR1cm4gdGhpc30pO3QoIm9yZGVyKCkiLGZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jb250ZXh0O2lmKGE9PT1wKXJldHVybiAwIT09Yy5sZW5ndGg/Y1swXS5hYVNvcnRpbmc6cDsibnVtYmVyIj09PXR5cGVvZiBhP2E9W1thLGJdXTphLmxlbmd0aCYmIWYuaXNBcnJheShhWzBdKSYmKGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXtiLmFhU29ydGluZz1hLnNsaWNlKCl9KX0pO3QoIm9yZGVyLmxpc3RlbmVyKCkiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGQpe1FhKGQsYSxiLGMpfSl9KTt0KCJvcmRlci5maXhlZCgpIixmdW5jdGlvbihhKXtpZighYSl7dmFyIGI9dGhpcy5jb250ZXh0O2I9Yi5sZW5ndGg/YlswXS5hYVNvcnRpbmdGaXhlZDpwO3JldHVybiBmLmlzQXJyYXkoYik/e3ByZTpifToKYn1yZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGIpe2IuYWFTb3J0aW5nRml4ZWQ9Zi5leHRlbmQoITAse30sYSl9KX0pO3QoWyJjb2x1bW5zKCkub3JkZXIoKSIsImNvbHVtbigpLm9yZGVyKCkiXSxmdW5jdGlvbihhKXt2YXIgYj10aGlzO3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYyxkKXt2YXIgZT1bXTtmLmVhY2goYltkXSxmdW5jdGlvbihiLGMpe2UucHVzaChbYyxhXSl9KTtjLmFhU29ydGluZz1lfSl9KTt0KCJzZWFyY2goKSIsZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcy5jb250ZXh0O3JldHVybiBhPT09cD8wIT09ZS5sZW5ndGg/ZVswXS5vUHJldmlvdXNTZWFyY2guc1NlYXJjaDpwOnRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihlKXtlLm9GZWF0dXJlcy5iRmlsdGVyJiZpYShlLGYuZXh0ZW5kKHt9LGUub1ByZXZpb3VzU2VhcmNoLHtzU2VhcmNoOmErIiIsYlJlZ2V4Om51bGw9PT1iPyExOmIsYlNtYXJ0Om51bGw9PT0KYz8hMDpjLGJDYXNlSW5zZW5zaXRpdmU6bnVsbD09PWQ/ITA6ZH0pLDEpfSl9KTt4KCJjb2x1bW5zKCkuc2VhcmNoKCkiLCJjb2x1bW4oKS5zZWFyY2goKSIsZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbiIsZnVuY3Rpb24oZSxoKXt2YXIgZz1lLmFvUHJlU2VhcmNoQ29scztpZihhPT09cClyZXR1cm4gZ1toXS5zU2VhcmNoO2Uub0ZlYXR1cmVzLmJGaWx0ZXImJihmLmV4dGVuZChnW2hdLHtzU2VhcmNoOmErIiIsYlJlZ2V4Om51bGw9PT1iPyExOmIsYlNtYXJ0Om51bGw9PT1jPyEwOmMsYkNhc2VJbnNlbnNpdGl2ZTpudWxsPT09ZD8hMDpkfSksaWEoZSxlLm9QcmV2aW91c1NlYXJjaCwxKSl9KX0pO3QoInN0YXRlKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGV4dC5sZW5ndGg/dGhpcy5jb250ZXh0WzBdLm9TYXZlZFN0YXRlOm51bGx9KTt0KCJzdGF0ZS5jbGVhcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsCmZ1bmN0aW9uKGEpe2EuZm5TdGF0ZVNhdmVDYWxsYmFjay5jYWxsKGEub0luc3RhbmNlLGEse30pfSl9KTt0KCJzdGF0ZS5sb2FkZWQoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZXh0Lmxlbmd0aD90aGlzLmNvbnRleHRbMF0ub0xvYWRlZFN0YXRlOm51bGx9KTt0KCJzdGF0ZS5zYXZlKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhKXtCYShhKX0pfSk7cS52ZXJzaW9uQ2hlY2s9cS5mblZlcnNpb25DaGVjaz1mdW5jdGlvbihhKXt2YXIgYj1xLnZlcnNpb24uc3BsaXQoIi4iKTthPWEuc3BsaXQoIi4iKTtmb3IodmFyIGMsZCxlPTAsZj1hLmxlbmd0aDtlPGY7ZSsrKWlmKGM9cGFyc2VJbnQoYltlXSwxMCl8fDAsZD1wYXJzZUludChhW2VdLDEwKXx8MCxjIT09ZClyZXR1cm4gYz5kO3JldHVybiEwfTtxLmlzRGF0YVRhYmxlPXEuZm5Jc0RhdGFUYWJsZT1mdW5jdGlvbihhKXt2YXIgYj1mKGEpLmdldCgwKSxjPSExO2lmKGEgaW5zdGFuY2VvZgpxLkFwaSlyZXR1cm4hMDtmLmVhY2gocS5zZXR0aW5ncyxmdW5jdGlvbihhLGUpe2E9ZS5uU2Nyb2xsSGVhZD9mKCJ0YWJsZSIsZS5uU2Nyb2xsSGVhZClbMF06bnVsbDt2YXIgZD1lLm5TY3JvbGxGb290P2YoInRhYmxlIixlLm5TY3JvbGxGb290KVswXTpudWxsO2lmKGUublRhYmxlPT09Ynx8YT09PWJ8fGQ9PT1iKWM9ITB9KTtyZXR1cm4gY307cS50YWJsZXM9cS5mblRhYmxlcz1mdW5jdGlvbihhKXt2YXIgYj0hMTtmLmlzUGxhaW5PYmplY3QoYSkmJihiPWEuYXBpLGE9YS52aXNpYmxlKTt2YXIgYz1mLm1hcChxLnNldHRpbmdzLGZ1bmN0aW9uKGIpe2lmKCFhfHxhJiZmKGIublRhYmxlKS5pcygiOnZpc2libGUiKSlyZXR1cm4gYi5uVGFibGV9KTtyZXR1cm4gYj9uZXcgdihjKTpjfTtxLmNhbWVsVG9IdW5nYXJpYW49TDt0KCIkKCkiLGZ1bmN0aW9uKGEsYil7Yj10aGlzLnJvd3MoYikubm9kZXMoKTtiPWYoYik7cmV0dXJuIGYoW10uY29uY2F0KGIuZmlsdGVyKGEpLnRvQXJyYXkoKSwKYi5maW5kKGEpLnRvQXJyYXkoKSkpfSk7Zi5lYWNoKFsib24iLCJvbmUiLCJvZmYiXSxmdW5jdGlvbihhLGIpe3QoYisiKCkiLGZ1bmN0aW9uKCl7dmFyIGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTthWzBdPWYubWFwKGFbMF0uc3BsaXQoL1xzLyksZnVuY3Rpb24oYSl7cmV0dXJuIGEubWF0Y2goL1wuZHRcYi8pP2E6YSsiLmR0In0pLmpvaW4oIiAiKTt2YXIgZD1mKHRoaXMudGFibGVzKCkubm9kZXMoKSk7ZFtiXS5hcHBseShkLGEpO3JldHVybiB0aGlzfSl9KTt0KCJjbGVhcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7cWEoYSl9KX0pO3QoInNldHRpbmdzKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB2KHRoaXMuY29udGV4dCx0aGlzLmNvbnRleHQpfSk7dCgiaW5pdCgpIixmdW5jdGlvbigpe3ZhciBhPXRoaXMuY29udGV4dDtyZXR1cm4gYS5sZW5ndGg/YVswXS5vSW5pdDpudWxsfSk7dCgiZGF0YSgpIiwKZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe3JldHVybiBKKGEuYW9EYXRhLCJfYURhdGEiKX0pLmZsYXR0ZW4oKX0pO3QoImRlc3Ryb3koKSIsZnVuY3Rpb24oYSl7YT1hfHwhMTtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGIpe3ZhciBjPWIublRhYmxlV3JhcHBlci5wYXJlbnROb2RlLGQ9Yi5vQ2xhc3NlcyxlPWIublRhYmxlLGg9Yi5uVEJvZHksZz1iLm5USGVhZCxrPWIublRGb290LGw9ZihlKTtoPWYoaCk7dmFyIG49ZihiLm5UYWJsZVdyYXBwZXIpLG09Zi5tYXAoYi5hb0RhdGEsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRyfSkscDtiLmJEZXN0cm95aW5nPSEwO0EoYiwiYW9EZXN0cm95Q2FsbGJhY2siLCJkZXN0cm95IixbYl0pO2F8fChuZXcgdihiKSkuY29sdW1ucygpLnZpc2libGUoITApO24ub2ZmKCIuRFQiKS5maW5kKCI6bm90KHRib2R5ICopIikub2ZmKCIuRFQiKTtmKHopLm9mZigiLkRULSIrYi5zSW5zdGFuY2UpOwplIT1nLnBhcmVudE5vZGUmJihsLmNoaWxkcmVuKCJ0aGVhZCIpLmRldGFjaCgpLGwuYXBwZW5kKGcpKTtrJiZlIT1rLnBhcmVudE5vZGUmJihsLmNoaWxkcmVuKCJ0Zm9vdCIpLmRldGFjaCgpLGwuYXBwZW5kKGspKTtiLmFhU29ydGluZz1bXTtiLmFhU29ydGluZ0ZpeGVkPVtdO0FhKGIpO2YobSkucmVtb3ZlQ2xhc3MoYi5hc1N0cmlwZUNsYXNzZXMuam9pbigiICIpKTtmKCJ0aCwgdGQiLGcpLnJlbW92ZUNsYXNzKGQuc1NvcnRhYmxlKyIgIitkLnNTb3J0YWJsZUFzYysiICIrZC5zU29ydGFibGVEZXNjKyIgIitkLnNTb3J0YWJsZU5vbmUpO2guY2hpbGRyZW4oKS5kZXRhY2goKTtoLmFwcGVuZChtKTtnPWE/InJlbW92ZSI6ImRldGFjaCI7bFtnXSgpO25bZ10oKTshYSYmYyYmKGMuaW5zZXJ0QmVmb3JlKGUsYi5uVGFibGVSZWluc2VydEJlZm9yZSksbC5jc3MoIndpZHRoIixiLnNEZXN0cm95V2lkdGgpLnJlbW92ZUNsYXNzKGQuc1RhYmxlKSwocD1iLmFzRGVzdHJveVN0cmlwZXMubGVuZ3RoKSYmCmguY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKGEpe2YodGhpcykuYWRkQ2xhc3MoYi5hc0Rlc3Ryb3lTdHJpcGVzW2ElcF0pfSkpO2M9Zi5pbkFycmF5KGIscS5zZXR0aW5ncyk7LTEhPT1jJiZxLnNldHRpbmdzLnNwbGljZShjLDEpfSl9KTtmLmVhY2goWyJjb2x1bW4iLCJyb3ciLCJjZWxsIl0sZnVuY3Rpb24oYSxiKXt0KGIrInMoKS5ldmVyeSgpIixmdW5jdGlvbihhKXt2YXIgYz10aGlzLnNlbGVjdG9yLm9wdHMsZT10aGlzO3JldHVybiB0aGlzLml0ZXJhdG9yKGIsZnVuY3Rpb24oZCxmLGssbCxuKXthLmNhbGwoZVtiXShmLCJjZWxsIj09PWI/azpjLCJjZWxsIj09PWI/YzpwKSxmLGssbCxuKX0pfSl9KTt0KCJpMThuKCkiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmNvbnRleHRbMF07YT1VKGEpKGQub0xhbmd1YWdlKTthPT09cCYmKGE9Yik7YyE9PXAmJmYuaXNQbGFpbk9iamVjdChhKSYmKGE9YVtjXSE9PXA/YVtjXTphLl8pO3JldHVybiBhLnJlcGxhY2UoIiVkIixjKX0pOwpxLnZlcnNpb249IjEuMTAuMjAiO3Euc2V0dGluZ3M9W107cS5tb2RlbHM9e307cS5tb2RlbHMub1NlYXJjaD17YkNhc2VJbnNlbnNpdGl2ZTohMCxzU2VhcmNoOiIiLGJSZWdleDohMSxiU21hcnQ6ITB9O3EubW9kZWxzLm9Sb3c9e25UcjpudWxsLGFuQ2VsbHM6bnVsbCxfYURhdGE6W10sX2FTb3J0RGF0YTpudWxsLF9hRmlsdGVyRGF0YTpudWxsLF9zRmlsdGVyUm93Om51bGwsX3NSb3dTdHJpcGU6IiIsc3JjOm51bGwsaWR4Oi0xfTtxLm1vZGVscy5vQ29sdW1uPXtpZHg6bnVsbCxhRGF0YVNvcnQ6bnVsbCxhc1NvcnRpbmc6bnVsbCxiU2VhcmNoYWJsZTpudWxsLGJTb3J0YWJsZTpudWxsLGJWaXNpYmxlOm51bGwsX3NNYW51YWxUeXBlOm51bGwsX2JBdHRyU3JjOiExLGZuQ3JlYXRlZENlbGw6bnVsbCxmbkdldERhdGE6bnVsbCxmblNldERhdGE6bnVsbCxtRGF0YTpudWxsLG1SZW5kZXI6bnVsbCxuVGg6bnVsbCxuVGY6bnVsbCxzQ2xhc3M6bnVsbCxzQ29udGVudFBhZGRpbmc6bnVsbCwKc0RlZmF1bHRDb250ZW50Om51bGwsc05hbWU6bnVsbCxzU29ydERhdGFUeXBlOiJzdGQiLHNTb3J0aW5nQ2xhc3M6bnVsbCxzU29ydGluZ0NsYXNzSlVJOm51bGwsc1RpdGxlOm51bGwsc1R5cGU6bnVsbCxzV2lkdGg6bnVsbCxzV2lkdGhPcmlnOm51bGx9O3EuZGVmYXVsdHM9e2FhRGF0YTpudWxsLGFhU29ydGluZzpbWzAsImFzYyJdXSxhYVNvcnRpbmdGaXhlZDpbXSxhamF4Om51bGwsYUxlbmd0aE1lbnU6WzEwLDI1LDUwLDEwMF0sYW9Db2x1bW5zOm51bGwsYW9Db2x1bW5EZWZzOm51bGwsYW9TZWFyY2hDb2xzOltdLGFzU3RyaXBlQ2xhc3NlczpudWxsLGJBdXRvV2lkdGg6ITAsYkRlZmVyUmVuZGVyOiExLGJEZXN0cm95OiExLGJGaWx0ZXI6ITAsYkluZm86ITAsYkxlbmd0aENoYW5nZTohMCxiUGFnaW5hdGU6ITAsYlByb2Nlc3Npbmc6ITEsYlJldHJpZXZlOiExLGJTY3JvbGxDb2xsYXBzZTohMSxiU2VydmVyU2lkZTohMSxiU29ydDohMCxiU29ydE11bHRpOiEwLGJTb3J0Q2VsbHNUb3A6ITEsCmJTb3J0Q2xhc3NlczohMCxiU3RhdGVTYXZlOiExLGZuQ3JlYXRlZFJvdzpudWxsLGZuRHJhd0NhbGxiYWNrOm51bGwsZm5Gb290ZXJDYWxsYmFjazpudWxsLGZuRm9ybWF0TnVtYmVyOmZ1bmN0aW9uKGEpe3JldHVybiBhLnRvU3RyaW5nKCkucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg/IVxkKSkvZyx0aGlzLm9MYW5ndWFnZS5zVGhvdXNhbmRzKX0sZm5IZWFkZXJDYWxsYmFjazpudWxsLGZuSW5mb0NhbGxiYWNrOm51bGwsZm5Jbml0Q29tcGxldGU6bnVsbCxmblByZURyYXdDYWxsYmFjazpudWxsLGZuUm93Q2FsbGJhY2s6bnVsbCxmblNlcnZlckRhdGE6bnVsbCxmblNlcnZlclBhcmFtczpudWxsLGZuU3RhdGVMb2FkQ2FsbGJhY2s6ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBKU09OLnBhcnNlKCgtMT09PWEuaVN0YXRlRHVyYXRpb24/c2Vzc2lvblN0b3JhZ2U6bG9jYWxTdG9yYWdlKS5nZXRJdGVtKCJEYXRhVGFibGVzXyIrYS5zSW5zdGFuY2UrIl8iK2xvY2F0aW9uLnBhdGhuYW1lKSl9Y2F0Y2goYil7fX0sCmZuU3RhdGVMb2FkUGFyYW1zOm51bGwsZm5TdGF0ZUxvYWRlZDpudWxsLGZuU3RhdGVTYXZlQ2FsbGJhY2s6ZnVuY3Rpb24oYSxiKXt0cnl7KC0xPT09YS5pU3RhdGVEdXJhdGlvbj9zZXNzaW9uU3RvcmFnZTpsb2NhbFN0b3JhZ2UpLnNldEl0ZW0oIkRhdGFUYWJsZXNfIithLnNJbnN0YW5jZSsiXyIrbG9jYXRpb24ucGF0aG5hbWUsSlNPTi5zdHJpbmdpZnkoYikpfWNhdGNoKGMpe319LGZuU3RhdGVTYXZlUGFyYW1zOm51bGwsaVN0YXRlRHVyYXRpb246NzIwMCxpRGVmZXJMb2FkaW5nOm51bGwsaURpc3BsYXlMZW5ndGg6MTAsaURpc3BsYXlTdGFydDowLGlUYWJJbmRleDowLG9DbGFzc2VzOnt9LG9MYW5ndWFnZTp7b0FyaWE6e3NTb3J0QXNjZW5kaW5nOiI6IGFjdGl2YXRlIHRvIHNvcnQgY29sdW1uIGFzY2VuZGluZyIsc1NvcnREZXNjZW5kaW5nOiI6IGFjdGl2YXRlIHRvIHNvcnQgY29sdW1uIGRlc2NlbmRpbmcifSxvUGFnaW5hdGU6e3NGaXJzdDoiRmlyc3QiLHNMYXN0OiJMYXN0IiwKc05leHQ6Ik5leHQiLHNQcmV2aW91czoiUHJldmlvdXMifSxzRW1wdHlUYWJsZToiTm8gZGF0YSBhdmFpbGFibGUgaW4gdGFibGUiLHNJbmZvOiJTaG93aW5nIF9TVEFSVF8gdG8gX0VORF8gb2YgX1RPVEFMXyBlbnRyaWVzIixzSW5mb0VtcHR5OiJTaG93aW5nIDAgdG8gMCBvZiAwIGVudHJpZXMiLHNJbmZvRmlsdGVyZWQ6IihmaWx0ZXJlZCBmcm9tIF9NQVhfIHRvdGFsIGVudHJpZXMpIixzSW5mb1Bvc3RGaXg6IiIsc0RlY2ltYWw6IiIsc1Rob3VzYW5kczoiLCIsc0xlbmd0aE1lbnU6IlNob3cgX01FTlVfIGVudHJpZXMiLHNMb2FkaW5nUmVjb3JkczoiTG9hZGluZy4uLiIsc1Byb2Nlc3Npbmc6IlByb2Nlc3NpbmcuLi4iLHNTZWFyY2g6IlNlYXJjaDoiLHNTZWFyY2hQbGFjZWhvbGRlcjoiIixzVXJsOiIiLHNaZXJvUmVjb3JkczoiTm8gbWF0Y2hpbmcgcmVjb3JkcyBmb3VuZCJ9LG9TZWFyY2g6Zi5leHRlbmQoe30scS5tb2RlbHMub1NlYXJjaCksc0FqYXhEYXRhUHJvcDoiZGF0YSIsCnNBamF4U291cmNlOm51bGwsc0RvbToibGZydGlwIixzZWFyY2hEZWxheTpudWxsLHNQYWdpbmF0aW9uVHlwZToic2ltcGxlX251bWJlcnMiLHNTY3JvbGxYOiIiLHNTY3JvbGxYSW5uZXI6IiIsc1Njcm9sbFk6IiIsc1NlcnZlck1ldGhvZDoiR0VUIixyZW5kZXJlcjpudWxsLHJvd0lkOiJEVF9Sb3dJZCJ9O0gocS5kZWZhdWx0cyk7cS5kZWZhdWx0cy5jb2x1bW49e2FEYXRhU29ydDpudWxsLGlEYXRhU29ydDotMSxhc1NvcnRpbmc6WyJhc2MiLCJkZXNjIl0sYlNlYXJjaGFibGU6ITAsYlNvcnRhYmxlOiEwLGJWaXNpYmxlOiEwLGZuQ3JlYXRlZENlbGw6bnVsbCxtRGF0YTpudWxsLG1SZW5kZXI6bnVsbCxzQ2VsbFR5cGU6InRkIixzQ2xhc3M6IiIsc0NvbnRlbnRQYWRkaW5nOiIiLHNEZWZhdWx0Q29udGVudDpudWxsLHNOYW1lOiIiLHNTb3J0RGF0YVR5cGU6InN0ZCIsc1RpdGxlOm51bGwsc1R5cGU6bnVsbCxzV2lkdGg6bnVsbH07SChxLmRlZmF1bHRzLmNvbHVtbik7cS5tb2RlbHMub1NldHRpbmdzPQp7b0ZlYXR1cmVzOntiQXV0b1dpZHRoOm51bGwsYkRlZmVyUmVuZGVyOm51bGwsYkZpbHRlcjpudWxsLGJJbmZvOm51bGwsYkxlbmd0aENoYW5nZTpudWxsLGJQYWdpbmF0ZTpudWxsLGJQcm9jZXNzaW5nOm51bGwsYlNlcnZlclNpZGU6bnVsbCxiU29ydDpudWxsLGJTb3J0TXVsdGk6bnVsbCxiU29ydENsYXNzZXM6bnVsbCxiU3RhdGVTYXZlOm51bGx9LG9TY3JvbGw6e2JDb2xsYXBzZTpudWxsLGlCYXJXaWR0aDowLHNYOm51bGwsc1hJbm5lcjpudWxsLHNZOm51bGx9LG9MYW5ndWFnZTp7Zm5JbmZvQ2FsbGJhY2s6bnVsbH0sb0Jyb3dzZXI6e2JTY3JvbGxPdmVyc2l6ZTohMSxiU2Nyb2xsYmFyTGVmdDohMSxiQm91bmRpbmc6ITEsYmFyV2lkdGg6MH0sYWpheDpudWxsLGFhbkZlYXR1cmVzOltdLGFvRGF0YTpbXSxhaURpc3BsYXk6W10sYWlEaXNwbGF5TWFzdGVyOltdLGFJZHM6e30sYW9Db2x1bW5zOltdLGFvSGVhZGVyOltdLGFvRm9vdGVyOltdLG9QcmV2aW91c1NlYXJjaDp7fSwKYW9QcmVTZWFyY2hDb2xzOltdLGFhU29ydGluZzpudWxsLGFhU29ydGluZ0ZpeGVkOltdLGFzU3RyaXBlQ2xhc3NlczpudWxsLGFzRGVzdHJveVN0cmlwZXM6W10sc0Rlc3Ryb3lXaWR0aDowLGFvUm93Q2FsbGJhY2s6W10sYW9IZWFkZXJDYWxsYmFjazpbXSxhb0Zvb3RlckNhbGxiYWNrOltdLGFvRHJhd0NhbGxiYWNrOltdLGFvUm93Q3JlYXRlZENhbGxiYWNrOltdLGFvUHJlRHJhd0NhbGxiYWNrOltdLGFvSW5pdENvbXBsZXRlOltdLGFvU3RhdGVTYXZlUGFyYW1zOltdLGFvU3RhdGVMb2FkUGFyYW1zOltdLGFvU3RhdGVMb2FkZWQ6W10sc1RhYmxlSWQ6IiIsblRhYmxlOm51bGwsblRIZWFkOm51bGwsblRGb290Om51bGwsblRCb2R5Om51bGwsblRhYmxlV3JhcHBlcjpudWxsLGJEZWZlckxvYWRpbmc6ITEsYkluaXRpYWxpc2VkOiExLGFvT3BlblJvd3M6W10sc0RvbTpudWxsLHNlYXJjaERlbGF5Om51bGwsc1BhZ2luYXRpb25UeXBlOiJ0d29fYnV0dG9uIixpU3RhdGVEdXJhdGlvbjowLAphb1N0YXRlU2F2ZTpbXSxhb1N0YXRlTG9hZDpbXSxvU2F2ZWRTdGF0ZTpudWxsLG9Mb2FkZWRTdGF0ZTpudWxsLHNBamF4U291cmNlOm51bGwsc0FqYXhEYXRhUHJvcDpudWxsLGJBamF4RGF0YUdldDohMCxqcVhIUjpudWxsLGpzb246cCxvQWpheERhdGE6cCxmblNlcnZlckRhdGE6bnVsbCxhb1NlcnZlclBhcmFtczpbXSxzU2VydmVyTWV0aG9kOm51bGwsZm5Gb3JtYXROdW1iZXI6bnVsbCxhTGVuZ3RoTWVudTpudWxsLGlEcmF3OjAsYkRyYXdpbmc6ITEsaURyYXdFcnJvcjotMSxfaURpc3BsYXlMZW5ndGg6MTAsX2lEaXNwbGF5U3RhcnQ6MCxfaVJlY29yZHNUb3RhbDowLF9pUmVjb3Jkc0Rpc3BsYXk6MCxvQ2xhc3Nlczp7fSxiRmlsdGVyZWQ6ITEsYlNvcnRlZDohMSxiU29ydENlbGxzVG9wOm51bGwsb0luaXQ6bnVsbCxhb0Rlc3Ryb3lDYWxsYmFjazpbXSxmblJlY29yZHNUb3RhbDpmdW5jdGlvbigpe3JldHVybiJzc3AiPT1EKHRoaXMpPzEqdGhpcy5faVJlY29yZHNUb3RhbDoKdGhpcy5haURpc3BsYXlNYXN0ZXIubGVuZ3RofSxmblJlY29yZHNEaXNwbGF5OmZ1bmN0aW9uKCl7cmV0dXJuInNzcCI9PUQodGhpcyk/MSp0aGlzLl9pUmVjb3Jkc0Rpc3BsYXk6dGhpcy5haURpc3BsYXkubGVuZ3RofSxmbkRpc3BsYXlFbmQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl9pRGlzcGxheUxlbmd0aCxiPXRoaXMuX2lEaXNwbGF5U3RhcnQsYz1iK2EsZD10aGlzLmFpRGlzcGxheS5sZW5ndGgsZT10aGlzLm9GZWF0dXJlcyxmPWUuYlBhZ2luYXRlO3JldHVybiBlLmJTZXJ2ZXJTaWRlPyExPT09Znx8LTE9PT1hP2IrZDpNYXRoLm1pbihiK2EsdGhpcy5faVJlY29yZHNEaXNwbGF5KTohZnx8Yz5kfHwtMT09PWE/ZDpjfSxvSW5zdGFuY2U6bnVsbCxzSW5zdGFuY2U6bnVsbCxpVGFiSW5kZXg6MCxuU2Nyb2xsSGVhZDpudWxsLG5TY3JvbGxGb290Om51bGwsYUxhc3RTb3J0OltdLG9QbHVnaW5zOnt9LHJvd0lkRm46bnVsbCxyb3dJZDpudWxsfTtxLmV4dD1DPXtidXR0b25zOnt9LApjbGFzc2VzOnt9LGJ1aWxkZXI6Ii1zb3VyY2UtIixlcnJNb2RlOiJhbGVydCIsZmVhdHVyZTpbXSxzZWFyY2g6W10sc2VsZWN0b3I6e2NlbGw6W10sY29sdW1uOltdLHJvdzpbXX0saW50ZXJuYWw6e30sbGVnYWN5OnthamF4Om51bGx9LHBhZ2VyOnt9LHJlbmRlcmVyOntwYWdlQnV0dG9uOnt9LGhlYWRlcjp7fX0sb3JkZXI6e30sdHlwZTp7ZGV0ZWN0OltdLHNlYXJjaDp7fSxvcmRlcjp7fX0sX3VuaXF1ZTowLGZuVmVyc2lvbkNoZWNrOnEuZm5WZXJzaW9uQ2hlY2ssaUFwaUluZGV4OjAsb0pVSUNsYXNzZXM6e30sc1ZlcnNpb246cS52ZXJzaW9ufTtmLmV4dGVuZChDLHthZm5GaWx0ZXJpbmc6Qy5zZWFyY2gsYVR5cGVzOkMudHlwZS5kZXRlY3Qsb2ZuU2VhcmNoOkMudHlwZS5zZWFyY2gsb1NvcnQ6Qy50eXBlLm9yZGVyLGFmblNvcnREYXRhOkMub3JkZXIsYW9GZWF0dXJlczpDLmZlYXR1cmUsb0FwaTpDLmludGVybmFsLG9TdGRDbGFzc2VzOkMuY2xhc3NlcyxvUGFnaW5hdGlvbjpDLnBhZ2VyfSk7CmYuZXh0ZW5kKHEuZXh0LmNsYXNzZXMse3NUYWJsZToiZGF0YVRhYmxlIixzTm9Gb290ZXI6Im5vLWZvb3RlciIsc1BhZ2VCdXR0b246InBhZ2luYXRlX2J1dHRvbiIsc1BhZ2VCdXR0b25BY3RpdmU6ImN1cnJlbnQiLHNQYWdlQnV0dG9uRGlzYWJsZWQ6ImRpc2FibGVkIixzU3RyaXBlT2RkOiJvZGQiLHNTdHJpcGVFdmVuOiJldmVuIixzUm93RW1wdHk6ImRhdGFUYWJsZXNfZW1wdHkiLHNXcmFwcGVyOiJkYXRhVGFibGVzX3dyYXBwZXIiLHNGaWx0ZXI6ImRhdGFUYWJsZXNfZmlsdGVyIixzSW5mbzoiZGF0YVRhYmxlc19pbmZvIixzUGFnaW5nOiJkYXRhVGFibGVzX3BhZ2luYXRlIHBhZ2luZ18iLHNMZW5ndGg6ImRhdGFUYWJsZXNfbGVuZ3RoIixzUHJvY2Vzc2luZzoiZGF0YVRhYmxlc19wcm9jZXNzaW5nIixzU29ydEFzYzoic29ydGluZ19hc2MiLHNTb3J0RGVzYzoic29ydGluZ19kZXNjIixzU29ydGFibGU6InNvcnRpbmciLHNTb3J0YWJsZUFzYzoic29ydGluZ19hc2NfZGlzYWJsZWQiLApzU29ydGFibGVEZXNjOiJzb3J0aW5nX2Rlc2NfZGlzYWJsZWQiLHNTb3J0YWJsZU5vbmU6InNvcnRpbmdfZGlzYWJsZWQiLHNTb3J0Q29sdW1uOiJzb3J0aW5nXyIsc0ZpbHRlcklucHV0OiIiLHNMZW5ndGhTZWxlY3Q6IiIsc1Njcm9sbFdyYXBwZXI6ImRhdGFUYWJsZXNfc2Nyb2xsIixzU2Nyb2xsSGVhZDoiZGF0YVRhYmxlc19zY3JvbGxIZWFkIixzU2Nyb2xsSGVhZElubmVyOiJkYXRhVGFibGVzX3Njcm9sbEhlYWRJbm5lciIsc1Njcm9sbEJvZHk6ImRhdGFUYWJsZXNfc2Nyb2xsQm9keSIsc1Njcm9sbEZvb3Q6ImRhdGFUYWJsZXNfc2Nyb2xsRm9vdCIsc1Njcm9sbEZvb3RJbm5lcjoiZGF0YVRhYmxlc19zY3JvbGxGb290SW5uZXIiLHNIZWFkZXJUSDoiIixzRm9vdGVyVEg6IiIsc1NvcnRKVUlBc2M6IiIsc1NvcnRKVUlEZXNjOiIiLHNTb3J0SlVJOiIiLHNTb3J0SlVJQXNjQWxsb3dlZDoiIixzU29ydEpVSURlc2NBbGxvd2VkOiIiLHNTb3J0SlVJV3JhcHBlcjoiIixzU29ydEljb246IiIsCnNKVUlIZWFkZXI6IiIsc0pVSUZvb3RlcjoiIn0pO3ZhciBQYj1xLmV4dC5wYWdlcjtmLmV4dGVuZChQYix7c2ltcGxlOmZ1bmN0aW9uKGEsYil7cmV0dXJuWyJwcmV2aW91cyIsIm5leHQiXX0sZnVsbDpmdW5jdGlvbihhLGIpe3JldHVyblsiZmlyc3QiLCJwcmV2aW91cyIsIm5leHQiLCJsYXN0Il19LG51bWJlcnM6ZnVuY3Rpb24oYSxiKXtyZXR1cm5ba2EoYSxiKV19LHNpbXBsZV9udW1iZXJzOmZ1bmN0aW9uKGEsYil7cmV0dXJuWyJwcmV2aW91cyIsa2EoYSxiKSwibmV4dCJdfSxmdWxsX251bWJlcnM6ZnVuY3Rpb24oYSxiKXtyZXR1cm5bImZpcnN0IiwicHJldmlvdXMiLGthKGEsYiksIm5leHQiLCJsYXN0Il19LGZpcnN0X2xhc3RfbnVtYmVyczpmdW5jdGlvbihhLGIpe3JldHVyblsiZmlyc3QiLGthKGEsYiksImxhc3QiXX0sX251bWJlcnM6a2EsbnVtYmVyc19sZW5ndGg6N30pO2YuZXh0ZW5kKCEwLHEuZXh0LnJlbmRlcmVyLHtwYWdlQnV0dG9uOntfOmZ1bmN0aW9uKGEsYiwKYyxkLGUsaCl7dmFyIGc9YS5vQ2xhc3NlcyxrPWEub0xhbmd1YWdlLm9QYWdpbmF0ZSxsPWEub0xhbmd1YWdlLm9BcmlhLnBhZ2luYXRlfHx7fSxuLG0scT0wLHQ9ZnVuY3Rpb24oYixkKXt2YXIgcCxyPWcuc1BhZ2VCdXR0b25EaXNhYmxlZCx1PWZ1bmN0aW9uKGIpe1hhKGEsYi5kYXRhLmFjdGlvbiwhMCl9O3ZhciB3PTA7Zm9yKHA9ZC5sZW5ndGg7dzxwO3crKyl7dmFyIHY9ZFt3XTtpZihmLmlzQXJyYXkodikpe3ZhciB4PWYoIjwiKyh2LkRUX2VsfHwiZGl2IikrIi8+IikuYXBwZW5kVG8oYik7dCh4LHYpfWVsc2V7bj1udWxsO209djt4PWEuaVRhYkluZGV4O3N3aXRjaCh2KXtjYXNlICJlbGxpcHNpcyI6Yi5hcHBlbmQoJzxzcGFuIGNsYXNzPSJlbGxpcHNpcyI+JiN4MjAyNjs8L3NwYW4+Jyk7YnJlYWs7Y2FzZSAiZmlyc3QiOm49ay5zRmlyc3Q7MD09PWUmJih4PS0xLG0rPSIgIityKTticmVhaztjYXNlICJwcmV2aW91cyI6bj1rLnNQcmV2aW91czswPT09ZSYmKHg9LTEsbSs9CiIgIityKTticmVhaztjYXNlICJuZXh0IjpuPWsuc05leHQ7ZT09PWgtMSYmKHg9LTEsbSs9IiAiK3IpO2JyZWFrO2Nhc2UgImxhc3QiOm49ay5zTGFzdDtlPT09aC0xJiYoeD0tMSxtKz0iICIrcik7YnJlYWs7ZGVmYXVsdDpuPXYrMSxtPWU9PT12P2cuc1BhZ2VCdXR0b25BY3RpdmU6IiJ9bnVsbCE9PW4mJih4PWYoIjxhPiIseyJjbGFzcyI6Zy5zUGFnZUJ1dHRvbisiICIrbSwiYXJpYS1jb250cm9scyI6YS5zVGFibGVJZCwiYXJpYS1sYWJlbCI6bFt2XSwiZGF0YS1kdC1pZHgiOnEsdGFiaW5kZXg6eCxpZDowPT09YyYmInN0cmluZyI9PT10eXBlb2Ygdj9hLnNUYWJsZUlkKyJfIit2Om51bGx9KS5odG1sKG4pLmFwcGVuZFRvKGIpLCRhKHgse2FjdGlvbjp2fSx1KSxxKyspfX19O3RyeXt2YXIgdj1mKGIpLmZpbmQoeS5hY3RpdmVFbGVtZW50KS5kYXRhKCJkdC1pZHgiKX1jYXRjaChtYyl7fXQoZihiKS5lbXB0eSgpLGQpO3YhPT1wJiZmKGIpLmZpbmQoIltkYXRhLWR0LWlkeD0iKwp2KyJdIikuZm9jdXMoKX19fSk7Zi5leHRlbmQocS5leHQudHlwZS5kZXRlY3QsW2Z1bmN0aW9uKGEsYil7Yj1iLm9MYW5ndWFnZS5zRGVjaW1hbDtyZXR1cm4gZGIoYSxiKT8ibnVtIitiOm51bGx9LGZ1bmN0aW9uKGEsYil7aWYoYSYmIShhIGluc3RhbmNlb2YgRGF0ZSkmJiFjYy50ZXN0KGEpKXJldHVybiBudWxsO2I9RGF0ZS5wYXJzZShhKTtyZXR1cm4gbnVsbCE9PWImJiFpc05hTihiKXx8UChhKT8iZGF0ZSI6bnVsbH0sZnVuY3Rpb24oYSxiKXtiPWIub0xhbmd1YWdlLnNEZWNpbWFsO3JldHVybiBkYihhLGIsITApPyJudW0tZm10IitiOm51bGx9LGZ1bmN0aW9uKGEsYil7Yj1iLm9MYW5ndWFnZS5zRGVjaW1hbDtyZXR1cm4gVWIoYSxiKT8iaHRtbC1udW0iK2I6bnVsbH0sZnVuY3Rpb24oYSxiKXtiPWIub0xhbmd1YWdlLnNEZWNpbWFsO3JldHVybiBVYihhLGIsITApPyJodG1sLW51bS1mbXQiK2I6bnVsbH0sZnVuY3Rpb24oYSxiKXtyZXR1cm4gUChhKXx8InN0cmluZyI9PT0KdHlwZW9mIGEmJi0xIT09YS5pbmRleE9mKCI8Iik/Imh0bWwiOm51bGx9XSk7Zi5leHRlbmQocS5leHQudHlwZS5zZWFyY2gse2h0bWw6ZnVuY3Rpb24oYSl7cmV0dXJuIFAoYSk/YToic3RyaW5nIj09PXR5cGVvZiBhP2EucmVwbGFjZShSYiwiICIpLnJlcGxhY2UoRWEsIiIpOiIifSxzdHJpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuIFAoYSk/YToic3RyaW5nIj09PXR5cGVvZiBhP2EucmVwbGFjZShSYiwiICIpOmF9fSk7dmFyIERhPWZ1bmN0aW9uKGEsYixjLGQpe2lmKDAhPT1hJiYoIWF8fCItIj09PWEpKXJldHVybi1JbmZpbml0eTtiJiYoYT1UYihhLGIpKTthLnJlcGxhY2UmJihjJiYoYT1hLnJlcGxhY2UoYywiIikpLGQmJihhPWEucmVwbGFjZShkLCIiKSkpO3JldHVybiAxKmF9O2YuZXh0ZW5kKEMudHlwZS5vcmRlcix7ImRhdGUtcHJlIjpmdW5jdGlvbihhKXthPURhdGUucGFyc2UoYSk7cmV0dXJuIGlzTmFOKGEpPy1JbmZpbml0eTphfSwiaHRtbC1wcmUiOmZ1bmN0aW9uKGEpe3JldHVybiBQKGEpPwoiIjphLnJlcGxhY2U/YS5yZXBsYWNlKC88Lio/Pi9nLCIiKS50b0xvd2VyQ2FzZSgpOmErIiJ9LCJzdHJpbmctcHJlIjpmdW5jdGlvbihhKXtyZXR1cm4gUChhKT8iIjoic3RyaW5nIj09PXR5cGVvZiBhP2EudG9Mb3dlckNhc2UoKTphLnRvU3RyaW5nP2EudG9TdHJpbmcoKToiIn0sInN0cmluZy1hc2MiOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE8Yj8tMTphPmI/MTowfSwic3RyaW5nLWRlc2MiOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE8Yj8xOmE+Yj8tMTowfX0pO0hhKCIiKTtmLmV4dGVuZCghMCxxLmV4dC5yZW5kZXJlcix7aGVhZGVyOntfOmZ1bmN0aW9uKGEsYixjLGQpe2YoYS5uVGFibGUpLm9uKCJvcmRlci5kdC5EVCIsZnVuY3Rpb24oZSxmLGcsayl7YT09PWYmJihlPWMuaWR4LGIucmVtb3ZlQ2xhc3MoYy5zU29ydGluZ0NsYXNzKyIgIitkLnNTb3J0QXNjKyIgIitkLnNTb3J0RGVzYykuYWRkQ2xhc3MoImFzYyI9PWtbZV0/ZC5zU29ydEFzYzoiZGVzYyI9PWtbZV0/ZC5zU29ydERlc2M6CmMuc1NvcnRpbmdDbGFzcykpfSl9LGpxdWVyeXVpOmZ1bmN0aW9uKGEsYixjLGQpe2YoIjxkaXYvPiIpLmFkZENsYXNzKGQuc1NvcnRKVUlXcmFwcGVyKS5hcHBlbmQoYi5jb250ZW50cygpKS5hcHBlbmQoZigiPHNwYW4vPiIpLmFkZENsYXNzKGQuc1NvcnRJY29uKyIgIitjLnNTb3J0aW5nQ2xhc3NKVUkpKS5hcHBlbmRUbyhiKTtmKGEublRhYmxlKS5vbigib3JkZXIuZHQuRFQiLGZ1bmN0aW9uKGUsZixnLGspe2E9PT1mJiYoZT1jLmlkeCxiLnJlbW92ZUNsYXNzKGQuc1NvcnRBc2MrIiAiK2Quc1NvcnREZXNjKS5hZGRDbGFzcygiYXNjIj09a1tlXT9kLnNTb3J0QXNjOiJkZXNjIj09a1tlXT9kLnNTb3J0RGVzYzpjLnNTb3J0aW5nQ2xhc3MpLGIuZmluZCgic3Bhbi4iK2Quc1NvcnRJY29uKS5yZW1vdmVDbGFzcyhkLnNTb3J0SlVJQXNjKyIgIitkLnNTb3J0SlVJRGVzYysiICIrZC5zU29ydEpVSSsiICIrZC5zU29ydEpVSUFzY0FsbG93ZWQrIiAiK2Quc1NvcnRKVUlEZXNjQWxsb3dlZCkuYWRkQ2xhc3MoImFzYyI9PQprW2VdP2Quc1NvcnRKVUlBc2M6ImRlc2MiPT1rW2VdP2Quc1NvcnRKVUlEZXNjOmMuc1NvcnRpbmdDbGFzc0pVSSkpfSl9fX0pO3ZhciBpYj1mdW5jdGlvbihhKXtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBhP2EucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKTphfTtxLnJlbmRlcj17bnVtYmVyOmZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJue2Rpc3BsYXk6ZnVuY3Rpb24oZil7aWYoIm51bWJlciIhPT10eXBlb2YgZiYmInN0cmluZyIhPT10eXBlb2YgZilyZXR1cm4gZjt2YXIgZz0wPmY/Ii0iOiIiLGg9cGFyc2VGbG9hdChmKTtpZihpc05hTihoKSlyZXR1cm4gaWIoZik7aD1oLnRvRml4ZWQoYyk7Zj1NYXRoLmFicyhoKTtoPXBhcnNlSW50KGYsMTApO2Y9Yz9iKyhmLWgpLnRvRml4ZWQoYykuc3Vic3RyaW5nKDIpOiIiO3JldHVybiBnKyhkfHwiIikraC50b1N0cmluZygpLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csCmEpK2YrKGV8fCIiKX19fSx0ZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2Rpc3BsYXk6aWIsZmlsdGVyOmlifX19O2YuZXh0ZW5kKHEuZXh0LmludGVybmFsLHtfZm5FeHRlcm5BcGlGdW5jOlFiLF9mbkJ1aWxkQWpheDp2YSxfZm5BamF4VXBkYXRlOnFiLF9mbkFqYXhQYXJhbWV0ZXJzOnpiLF9mbkFqYXhVcGRhdGVEcmF3OkFiLF9mbkFqYXhEYXRhU3JjOndhLF9mbkFkZENvbHVtbjpJYSxfZm5Db2x1bW5PcHRpb25zOm1hLF9mbkFkanVzdENvbHVtblNpemluZzphYSxfZm5WaXNpYmxlVG9Db2x1bW5JbmRleDpiYSxfZm5Db2x1bW5JbmRleFRvVmlzaWJsZTpjYSxfZm5WaXNibGVDb2x1bW5zOlcsX2ZuR2V0Q29sdW1uczpvYSxfZm5Db2x1bW5UeXBlczpLYSxfZm5BcHBseUNvbHVtbkRlZnM6bmIsX2ZuSHVuZ2FyaWFuTWFwOkgsX2ZuQ2FtZWxUb0h1bmdhcmlhbjpMLF9mbkxhbmd1YWdlQ29tcGF0OkdhLF9mbkJyb3dzZXJEZXRlY3Q6bGIsX2ZuQWRkRGF0YTpSLF9mbkFkZFRyOnBhLF9mbk5vZGVUb0RhdGFJbmRleDpmdW5jdGlvbihhLApiKXtyZXR1cm4gYi5fRFRfUm93SW5kZXghPT1wP2IuX0RUX1Jvd0luZGV4Om51bGx9LF9mbk5vZGVUb0NvbHVtbkluZGV4OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5pbkFycmF5KGMsYS5hb0RhdGFbYl0uYW5DZWxscyl9LF9mbkdldENlbGxEYXRhOkksX2ZuU2V0Q2VsbERhdGE6b2IsX2ZuU3BsaXRPYmpOb3RhdGlvbjpOYSxfZm5HZXRPYmplY3REYXRhRm46VSxfZm5TZXRPYmplY3REYXRhRm46USxfZm5HZXREYXRhTWFzdGVyOk9hLF9mbkNsZWFyVGFibGU6cWEsX2ZuRGVsZXRlSW5kZXg6cmEsX2ZuSW52YWxpZGF0ZTplYSxfZm5HZXRSb3dFbGVtZW50czpNYSxfZm5DcmVhdGVUcjpMYSxfZm5CdWlsZEhlYWQ6cGIsX2ZuRHJhd0hlYWQ6aGEsX2ZuRHJhdzpTLF9mblJlRHJhdzpWLF9mbkFkZE9wdGlvbnNIdG1sOnNiLF9mbkRldGVjdEhlYWRlcjpmYSxfZm5HZXRVbmlxdWVUaHM6dWEsX2ZuRmVhdHVyZUh0bWxGaWx0ZXI6dWIsX2ZuRmlsdGVyQ29tcGxldGU6aWEsX2ZuRmlsdGVyQ3VzdG9tOkRiLApfZm5GaWx0ZXJDb2x1bW46Q2IsX2ZuRmlsdGVyOkJiLF9mbkZpbHRlckNyZWF0ZVNlYXJjaDpUYSxfZm5Fc2NhcGVSZWdleDpVYSxfZm5GaWx0ZXJEYXRhOkViLF9mbkZlYXR1cmVIdG1sSW5mbzp4YixfZm5VcGRhdGVJbmZvOkhiLF9mbkluZm9NYWNyb3M6SWIsX2ZuSW5pdGlhbGlzZTpqYSxfZm5Jbml0Q29tcGxldGU6eGEsX2ZuTGVuZ3RoQ2hhbmdlOlZhLF9mbkZlYXR1cmVIdG1sTGVuZ3RoOnRiLF9mbkZlYXR1cmVIdG1sUGFnaW5hdGU6eWIsX2ZuUGFnZUNoYW5nZTpYYSxfZm5GZWF0dXJlSHRtbFByb2Nlc3Npbmc6dmIsX2ZuUHJvY2Vzc2luZ0Rpc3BsYXk6SyxfZm5GZWF0dXJlSHRtbFRhYmxlOndiLF9mblNjcm9sbERyYXc6bmEsX2ZuQXBwbHlUb0NoaWxkcmVuOk4sX2ZuQ2FsY3VsYXRlQ29sdW1uV2lkdGhzOkphLF9mblRocm90dGxlOlNhLF9mbkNvbnZlcnRUb1dpZHRoOkpiLF9mbkdldFdpZGVzdE5vZGU6S2IsX2ZuR2V0TWF4TGVuU3RyaW5nOkxiLF9mblN0cmluZ1RvQ3NzOkIsCl9mblNvcnRGbGF0dGVuOlksX2ZuU29ydDpyYixfZm5Tb3J0QXJpYTpOYixfZm5Tb3J0TGlzdGVuZXI6WmEsX2ZuU29ydEF0dGFjaExpc3RlbmVyOlFhLF9mblNvcnRpbmdDbGFzc2VzOkFhLF9mblNvcnREYXRhOk1iLF9mblNhdmVTdGF0ZTpCYSxfZm5Mb2FkU3RhdGU6T2IsX2ZuU2V0dGluZ3NGcm9tTm9kZTpDYSxfZm5Mb2c6TyxfZm5NYXA6TSxfZm5CaW5kQWN0aW9uOiRhLF9mbkNhbGxiYWNrUmVnOkUsX2ZuQ2FsbGJhY2tGaXJlOkEsX2ZuTGVuZ3RoT3ZlcmZsb3c6V2EsX2ZuUmVuZGVyZXI6UmEsX2ZuRGF0YVNvdXJjZTpELF9mblJvd0F0dHJpYnV0ZXM6UGEsX2ZuRXh0ZW5kOmFiLF9mbkNhbGN1bGF0ZUVuZDpmdW5jdGlvbigpe319KTtmLmZuLmRhdGFUYWJsZT1xO3EuJD1mO2YuZm4uZGF0YVRhYmxlU2V0dGluZ3M9cS5zZXR0aW5ncztmLmZuLmRhdGFUYWJsZUV4dD1xLmV4dDtmLmZuLkRhdGFUYWJsZT1mdW5jdGlvbihhKXtyZXR1cm4gZih0aGlzKS5kYXRhVGFibGUoYSkuYXBpKCl9OwpmLmVhY2gocSxmdW5jdGlvbihhLGIpe2YuZm4uRGF0YVRhYmxlW2FdPWJ9KTtyZXR1cm4gZi5mbi5kYXRhVGFibGV9KTsK"></script>
|
|
<script src="data:application/javascript;base64,LyohCgpKU1ppcCAtIEEgSmF2YXNjcmlwdCBjbGFzcyBmb3IgZ2VuZXJhdGluZyBhbmQgcmVhZGluZyB6aXAgZmlsZXMKPGh0dHA6Ly9zdHVhcnRrLmNvbS9qc3ppcD4KCihjKSAyMDA5LTIwMTQgU3R1YXJ0IEtuaWdodGxleSA8c3R1YXJ0IFthdF0gc3R1YXJ0ay5jb20+CkR1YWwgbGljZW5jZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIG9yIEdQTHYzLiBTZWUgaHR0cHM6Ly9yYXcuZ2l0aHViLmNvbS9TdHVrL2pzemlwL21hc3Rlci9MSUNFTlNFLm1hcmtkb3duLgoKSlNaaXAgdXNlcyB0aGUgbGlicmFyeSBwYWtvIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSA6Cmh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlY2EvcGFrby9ibG9iL21hc3Rlci9MSUNFTlNFCiovCiFmdW5jdGlvbihhKXtpZigib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlKW1vZHVsZS5leHBvcnRzPWEoKTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpZGVmaW5lKFtdLGEpO2Vsc2V7dmFyIGI7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/Yj13aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Yj1nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmJiYoYj1zZWxmKSxiLkpTWmlwPWEoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGEoYixjLGQpe2Z1bmN0aW9uIGUoZyxoKXtpZighY1tnXSl7aWYoIWJbZ10pe3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFoJiZpKXJldHVybiBpKGcsITApO2lmKGYpcmV0dXJuIGYoZywhMCk7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrZysiJyIpfXZhciBqPWNbZ109e2V4cG9ydHM6e319O2JbZ11bMF0uY2FsbChqLmV4cG9ydHMsZnVuY3Rpb24oYSl7dmFyIGM9YltnXVsxXVthXTtyZXR1cm4gZShjP2M6YSl9LGosai5leHBvcnRzLGEsYixjLGQpfXJldHVybiBjW2ddLmV4cG9ydHN9Zm9yKHZhciBmPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGc9MDtnPGQubGVuZ3RoO2crKyllKGRbZ10pO3JldHVybiBlfSh7MTpbZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgZD0iQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iO2MuZW5jb2RlPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGUsZixnLGgsaSxqPSIiLGs9MDtrPGEubGVuZ3RoOyliPWEuY2hhckNvZGVBdChrKyspLGM9YS5jaGFyQ29kZUF0KGsrKyksZT1hLmNoYXJDb2RlQXQoaysrKSxmPWI+PjIsZz0oMyZiKTw8NHxjPj40LGg9KDE1JmMpPDwyfGU+PjYsaT02MyZlLGlzTmFOKGMpP2g9aT02NDppc05hTihlKSYmKGk9NjQpLGo9aitkLmNoYXJBdChmKStkLmNoYXJBdChnKStkLmNoYXJBdChoKStkLmNoYXJBdChpKTtyZXR1cm4gan0sYy5kZWNvZGU9ZnVuY3Rpb24oYSl7dmFyIGIsYyxlLGYsZyxoLGksaj0iIixrPTA7Zm9yKGE9YS5yZXBsYWNlKC9bXkEtWmEtejAtOVwrXC9cPV0vZywiIik7azxhLmxlbmd0aDspZj1kLmluZGV4T2YoYS5jaGFyQXQoaysrKSksZz1kLmluZGV4T2YoYS5jaGFyQXQoaysrKSksaD1kLmluZGV4T2YoYS5jaGFyQXQoaysrKSksaT1kLmluZGV4T2YoYS5jaGFyQXQoaysrKSksYj1mPDwyfGc+PjQsYz0oMTUmZyk8PDR8aD4+MixlPSgzJmgpPDw2fGksais9U3RyaW5nLmZyb21DaGFyQ29kZShiKSw2NCE9aCYmKGorPVN0cmluZy5mcm9tQ2hhckNvZGUoYykpLDY0IT1pJiYoais9U3RyaW5nLmZyb21DaGFyQ29kZShlKSk7cmV0dXJuIGp9fSx7fV0sMjpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYygpe3RoaXMuY29tcHJlc3NlZFNpemU9MCx0aGlzLnVuY29tcHJlc3NlZFNpemU9MCx0aGlzLmNyYzMyPTAsdGhpcy5jb21wcmVzc2lvbk1ldGhvZD1udWxsLHRoaXMuY29tcHJlc3NlZENvbnRlbnQ9bnVsbH1jLnByb3RvdHlwZT17Z2V0Q29udGVudDpmdW5jdGlvbigpe3JldHVybiBudWxsfSxnZXRDb21wcmVzc2VkQ29udGVudDpmdW5jdGlvbigpe3JldHVybiBudWxsfX0sYi5leHBvcnRzPWN9LHt9XSwzOltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2MuU1RPUkU9e21hZ2ljOiJceDAwXHgwMCIsY29tcHJlc3M6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHVuY29tcHJlc3M6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LGNvbXByZXNzSW5wdXRUeXBlOm51bGwsdW5jb21wcmVzc0lucHV0VHlwZTpudWxsfSxjLkRFRkxBVEU9YSgiLi9mbGF0ZSIpfSx7Ii4vZmxhdGUiOjh9XSw0OltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz1hKCIuL3V0aWxzIiksZD1bMCwxOTk2OTU5ODk0LDM5OTM5MTk3ODgsMjU2NzUyNDc5NCwxMjQ2MzQxMzcsMTg4NjA1NzYxNSwzOTE1NjIxNjg1LDI2NTczOTIwMzUsMjQ5MjY4Mjc0LDIwNDQ1MDgzMjQsMzc3MjExNTIzMCwyNTQ3MTc3ODY0LDE2Mjk0MTk5NSwyMTI1NTYxMDIxLDM4ODc2MDcwNDcsMjQyODQ0NDA0OSw0OTg1MzY1NDgsMTc4OTkyNzY2Niw0MDg5MDE2NjQ4LDIyMjcwNjEyMTQsNDUwNTQ4ODYxLDE4NDMyNTg2MDMsNDEwNzU4MDc1MywyMjExNjc3NjM5LDMyNTg4Mzk5MCwxNjg0Nzc3MTUyLDQyNTExMjIwNDIsMjMyMTkyNjYzNiwzMzU2MzM0ODcsMTY2MTM2NTQ2NSw0MTk1MzAyNzU1LDIzNjYxMTUzMTcsOTk3MDczMDk2LDEyODE5NTM4ODYsMzU3OTg1NTMzMiwyNzI0Njg4MjQyLDEwMDY4ODgxNDUsMTI1ODYwNzY4NywzNTI0MTAxNjI5LDI3Njg5NDI0NDMsOTAxMDk3NzIyLDExMTkwMDA2ODQsMzY4NjUxNzIwNiwyODk4MDY1NzI4LDg1MzA0NDQ1MSwxMTcyMjY2MTAxLDM3MDUwMTU3NTksMjg4MjYxNjY2NSw2NTE3Njc5ODAsMTM3MzUwMzU0NiwzMzY5NTU0MzA0LDMyMTgxMDQ1OTgsNTY1NTA3MjUzLDE0NTQ2MjE3MzEsMzQ4NTExMTcwNSwzMDk5NDM2MzAzLDY3MTI2Njk3NCwxNTk0MTk4MDI0LDMzMjI3MzA5MzAsMjk3MDM0NzgxMiw3OTU4MzU1MjcsMTQ4MzIzMDIyNSwzMjQ0MzY3Mjc1LDMwNjAxNDk1NjUsMTk5NDE0NjE5MiwzMTE1ODUzNCwyNTYzOTA3NzcyLDQwMjM3MTc5MzAsMTkwNzQ1OTQ2NSwxMTI2MzcyMTUsMjY4MDE1MzI1MywzOTA0NDI3MDU5LDIwMTM3NzYyOTAsMjUxNzIyMDM2LDI1MTcyMTUzNzQsMzc3NTgzMDA0MCwyMTM3NjU2NzYzLDE0MTM3NjgxMywyNDM5Mjc3NzE5LDM4NjUyNzEyOTcsMTgwMjE5NTQ0NCw0NzY4NjQ4NjYsMjIzODAwMTM2OCw0MDY2NTA4ODc4LDE4MTIzNzA5MjUsNDUzMDkyNzMxLDIxODE2MjUwMjUsNDExMTQ1MTIyMywxNzA2MDg4OTAyLDMxNDA0MjcwNCwyMzQ0NTMyMjAyLDQyNDAwMTc1MzIsMTY1ODY1ODI3MSwzNjY2MTk5NzcsMjM2MjY3MDMyMyw0MjI0OTk0NDA1LDEzMDM1MzU5NjAsOTg0OTYxNDg2LDI3NDcwMDcwOTIsMzU2OTAzNzUzOCwxMjU2MTcwODE3LDEwMzc2MDQzMTEsMjc2NTIxMDczMywzNTU0MDc5OTk1LDExMzEwMTQ1MDYsODc5Njc5OTk2LDI5MDkyNDM0NjIsMzY2Mzc3MTg1NiwxMTQxMTI0NDY3LDg1NTg0MjI3NywyODUyODAxNjMxLDM3MDg2NDg2NDksMTM0MjUzMzk0OCw2NTQ0NTkzMDYsMzE4ODM5NjA0OCwzMzczMDE1MTc0LDE0NjY0Nzk5MDksNTQ0MTc5NjM1LDMxMTA1MjM5MTMsMzQ2MjUyMjAxNSwxNTkxNjcxMDU0LDcwMjEzODc3NiwyOTY2NDYwNDUwLDMzNTI3OTk0MTIsMTUwNDkxODgwNyw3ODM1NTE4NzMsMzA4MjY0MDQ0MywzMjMzNDQyOTg5LDM5ODgyOTIzODQsMjU5NjI1NDY0Niw2MjMxNzA2OCwxOTU3ODEwODQyLDM5Mzk4NDU5NDUsMjY0NzgxNjExMSw4MTQ3MDk5NywxOTQzODAzNTIzLDM4MTQ5MTg5MzAsMjQ4OTU5NjgwNCwyMjUyNzQ0MzAsMjA1Mzc5MDM3NiwzODI2MTc1NzU1LDI0NjY5MDYwMTMsMTY3ODE2NzQzLDIwOTc2NTEzNzcsNDAyNzU1MjU4MCwyMjY1NDkwMzg2LDUwMzQ0NDA3MiwxNzYyMDUwODE0LDQxNTA0MTcyNDUsMjE1NDEyOTM1NSw0MjY1MjIyMjUsMTg1MjUwNzg3OSw0Mjc1MzEzNTI2LDIzMTIzMTc5MjAsMjgyNzUzNjI2LDE3NDI1NTU4NTIsNDE4OTcwODE0MywyMzk0ODc3OTQ1LDM5NzkxNzc2MywxNjIyMTgzNjM3LDM2MDQzOTA4ODgsMjcxNDg2NjU1OCw5NTM3Mjk3MzIsMTM0MDA3NjYyNiwzNTE4NzE5OTg1LDI3OTczNjA5OTksMTA2ODgyODM4MSwxMjE5NjM4ODU5LDM2MjQ3NDE4NTAsMjkzNjY3NTE0OCw5MDYxODU0NjIsMTA5MDgxMjUxMiwzNzQ3NjcyMDAzLDI4MjUzNzk2NjksODI5MzI5MTM1LDExODEzMzUxNjEsMzQxMjE3NzgwNCwzMTYwODM0ODQyLDYyODA4NTQwOCwxMzgyNjA1MzY2LDM0MjMzNjkxMDksMzEzODA3ODQ2Nyw1NzA1NjIyMzMsMTQyNjQwMDgxNSwzMzE3MzE2NTQyLDI5OTg3MzM2MDgsNzMzMjM5OTU0LDE1NTUyNjE5NTYsMzI2ODkzNTU5MSwzMDUwMzYwNjI1LDc1MjQ1OTQwMywxNTQxMzIwMjIxLDI2MDcwNzE5MjAsMzk2NTk3MzAzMCwxOTY5OTIyOTcyLDQwNzM1NDk4LDI2MTc4MzcyMjUsMzk0MzU3NzE1MSwxOTEzMDg3ODc3LDgzOTA4MzcxLDI1MTIzNDE2MzQsMzgwMzc0MDY5MiwyMDc1MjA4NjIyLDIxMzI2MTExMiwyNDYzMjcyNjAzLDM4NTU5OTAyODUsMjA5NDg1NDA3MSwxOTg5NTg4ODEsMjI2MjAyOTAxMiw0MDU3MjYwNjEwLDE3NTkzNTk5OTIsNTM0NDE0MTkwLDIxNzY3MTg1NDEsNDEzOTMyOTExNSwxODczODM2MDAxLDQxNDY2NDU2NywyMjgyMjQ4OTM0LDQyNzkyMDAzNjgsMTcxMTY4NDU1NCwyODUyODExMTYsMjQwNTgwMTcyNyw0MTY3MjE2NzQ1LDE2MzQ0Njc3OTUsMzc2MjI5NzAxLDI2ODUwNjc4OTYsMzYwODAwNzQwNiwxMzA4OTE4NjEyLDk1NjU0MzkzOCwyODA4NTU1MTA1LDM0OTU5NTgyNjMsMTIzMTYzNjMwMSwxMDQ3NDI3MDM1LDI5MzI5NTk4MTgsMzY1NDcwMzgzNiwxMDg4MzU5MjcwLDkzNjkxOGUzLDI4NDc3MTQ4OTksMzczNjgzNzgyOSwxMjAyOTAwODYzLDgxNzIzMzg5NywzMTgzMzQyMTA4LDM0MDEyMzcxMzAsMTQwNDI3NzU1Miw2MTU4MTgxNTAsMzEzNDIwNzQ5MywzNDUzNDIxMjAzLDE0MjM4NTc0NDksNjAxNDUwNDMxLDMwMDk4Mzc2MTQsMzI5NDcxMDQ1NiwxNTY3MTAzNzQ2LDcxMTkyODcyNCwzMDIwNjY4NDcxLDMyNzIzODAwNjUsMTUxMDMzNDIzNSw3NTUxNjcxMTddO2IuZXhwb3J0cz1mdW5jdGlvbihhLGIpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgYXx8IWEubGVuZ3RoKXJldHVybiAwO3ZhciBlPSJzdHJpbmciIT09Yy5nZXRUeXBlT2YoYSk7InVuZGVmaW5lZCI9PXR5cGVvZiBiJiYoYj0wKTt2YXIgZj0wLGc9MCxoPTA7Yj0tMV5iO2Zvcih2YXIgaT0wLGo9YS5sZW5ndGg7aj5pO2krKyloPWU/YVtpXTphLmNoYXJDb2RlQXQoaSksZz0yNTUmKGJeaCksZj1kW2ddLGI9Yj4+PjheZjtyZXR1cm4tMV5ifX0seyIuL3V0aWxzIjoyMX1dLDU6W2Z1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoKXt0aGlzLmRhdGE9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMuaW5kZXg9MH12YXIgZD1hKCIuL3V0aWxzIik7Yy5wcm90b3R5cGU9e2NoZWNrT2Zmc2V0OmZ1bmN0aW9uKGEpe3RoaXMuY2hlY2tJbmRleCh0aGlzLmluZGV4K2EpfSxjaGVja0luZGV4OmZ1bmN0aW9uKGEpe2lmKHRoaXMubGVuZ3RoPGF8fDA+YSl0aHJvdyBuZXcgRXJyb3IoIkVuZCBvZiBkYXRhIHJlYWNoZWQgKGRhdGEgbGVuZ3RoID0gIit0aGlzLmxlbmd0aCsiLCBhc2tlZCBpbmRleCA9ICIrYSsiKS4gQ29ycnVwdGVkIHppcCA/Iil9LHNldEluZGV4OmZ1bmN0aW9uKGEpe3RoaXMuY2hlY2tJbmRleChhKSx0aGlzLmluZGV4PWF9LHNraXA6ZnVuY3Rpb24oYSl7dGhpcy5zZXRJbmRleCh0aGlzLmluZGV4K2EpfSxieXRlQXQ6ZnVuY3Rpb24oKXt9LHJlYWRJbnQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz0wO2Zvcih0aGlzLmNoZWNrT2Zmc2V0KGEpLGI9dGhpcy5pbmRleCthLTE7Yj49dGhpcy5pbmRleDtiLS0pYz0oYzw8OCkrdGhpcy5ieXRlQXQoYik7cmV0dXJuIHRoaXMuaW5kZXgrPWEsY30scmVhZFN0cmluZzpmdW5jdGlvbihhKXtyZXR1cm4gZC50cmFuc2Zvcm1Ubygic3RyaW5nIix0aGlzLnJlYWREYXRhKGEpKX0scmVhZERhdGE6ZnVuY3Rpb24oKXt9LGxhc3RJbmRleE9mU2lnbmF0dXJlOmZ1bmN0aW9uKCl7fSxyZWFkRGF0ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMucmVhZEludCg0KTtyZXR1cm4gbmV3IERhdGUoKGE+PjI1JjEyNykrMTk4MCwoYT4+MjEmMTUpLTEsYT4+MTYmMzEsYT4+MTEmMzEsYT4+NSY2MywoMzEmYSk8PDEpfX0sYi5leHBvcnRzPWN9LHsiLi91dGlscyI6MjF9XSw2OltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2MuYmFzZTY0PSExLGMuYmluYXJ5PSExLGMuZGlyPSExLGMuY3JlYXRlRm9sZGVycz0hMSxjLmRhdGU9bnVsbCxjLmNvbXByZXNzaW9uPW51bGwsYy5jb21wcmVzc2lvbk9wdGlvbnM9bnVsbCxjLmNvbW1lbnQ9bnVsbCxjLnVuaXhQZXJtaXNzaW9ucz1udWxsLGMuZG9zUGVybWlzc2lvbnM9bnVsbH0se31dLDc6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7dmFyIGQ9YSgiLi91dGlscyIpO2Muc3RyaW5nMmJpbmFyeT1mdW5jdGlvbihhKXtyZXR1cm4gZC5zdHJpbmcyYmluYXJ5KGEpfSxjLnN0cmluZzJVaW50OEFycmF5PWZ1bmN0aW9uKGEpe3JldHVybiBkLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixhKX0sYy51aW50OEFycmF5MlN0cmluZz1mdW5jdGlvbihhKXtyZXR1cm4gZC50cmFuc2Zvcm1Ubygic3RyaW5nIixhKX0sYy5zdHJpbmcyQmxvYj1mdW5jdGlvbihhKXt2YXIgYj1kLnRyYW5zZm9ybVRvKCJhcnJheWJ1ZmZlciIsYSk7cmV0dXJuIGQuYXJyYXlCdWZmZXIyQmxvYihiKX0sYy5hcnJheUJ1ZmZlcjJCbG9iPWZ1bmN0aW9uKGEpe3JldHVybiBkLmFycmF5QnVmZmVyMkJsb2IoYSl9LGMudHJhbnNmb3JtVG89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZC50cmFuc2Zvcm1UbyhhLGIpfSxjLmdldFR5cGVPZj1mdW5jdGlvbihhKXtyZXR1cm4gZC5nZXRUeXBlT2YoYSl9LGMuY2hlY2tTdXBwb3J0PWZ1bmN0aW9uKGEpe3JldHVybiBkLmNoZWNrU3VwcG9ydChhKX0sYy5NQVhfVkFMVUVfMTZCSVRTPWQuTUFYX1ZBTFVFXzE2QklUUyxjLk1BWF9WQUxVRV8zMkJJVFM9ZC5NQVhfVkFMVUVfMzJCSVRTLGMucHJldHR5PWZ1bmN0aW9uKGEpe3JldHVybiBkLnByZXR0eShhKX0sYy5maW5kQ29tcHJlc3Npb249ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZmluZENvbXByZXNzaW9uKGEpfSxjLmlzUmVnRXhwPWZ1bmN0aW9uKGEpe3JldHVybiBkLmlzUmVnRXhwKGEpfX0seyIuL3V0aWxzIjoyMX1dLDg6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7dmFyIGQ9InVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5JiYidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQxNkFycmF5JiYidW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQzMkFycmF5LGU9YSgicGFrbyIpO2MudW5jb21wcmVzc0lucHV0VHlwZT1kPyJ1aW50OGFycmF5IjoiYXJyYXkiLGMuY29tcHJlc3NJbnB1dFR5cGU9ZD8idWludDhhcnJheSI6ImFycmF5IixjLm1hZ2ljPSJcYlx4MDAiLGMuY29tcHJlc3M9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZS5kZWZsYXRlUmF3KGEse2xldmVsOmIubGV2ZWx8fC0xfSl9LGMudW5jb21wcmVzcz1mdW5jdGlvbihhKXtyZXR1cm4gZS5pbmZsYXRlUmF3KGEpfX0se3Bha286MjR9XSw5OltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGEsYil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBjPyh0aGlzLmZpbGVzPXt9LHRoaXMuY29tbWVudD1udWxsLHRoaXMucm9vdD0iIixhJiZ0aGlzLmxvYWQoYSxiKSx2b2lkKHRoaXMuY2xvbmU9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgYztmb3IodmFyIGIgaW4gdGhpcykiZnVuY3Rpb24iIT10eXBlb2YgdGhpc1tiXSYmKGFbYl09dGhpc1tiXSk7cmV0dXJuIGF9KSk6bmV3IGMoYSxiKX12YXIgZD1hKCIuL2Jhc2U2NCIpO2MucHJvdG90eXBlPWEoIi4vb2JqZWN0IiksYy5wcm90b3R5cGUubG9hZD1hKCIuL2xvYWQiKSxjLnN1cHBvcnQ9YSgiLi9zdXBwb3J0IiksYy5kZWZhdWx0cz1hKCIuL2RlZmF1bHRzIiksYy51dGlscz1hKCIuL2RlcHJlY2F0ZWRQdWJsaWNVdGlscyIpLGMuYmFzZTY0PXtlbmNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZW5jb2RlKGEpfSxkZWNvZGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGQuZGVjb2RlKGEpfX0sYy5jb21wcmVzc2lvbnM9YSgiLi9jb21wcmVzc2lvbnMiKSxiLmV4cG9ydHM9Y30seyIuL2Jhc2U2NCI6MSwiLi9jb21wcmVzc2lvbnMiOjMsIi4vZGVmYXVsdHMiOjYsIi4vZGVwcmVjYXRlZFB1YmxpY1V0aWxzIjo3LCIuL2xvYWQiOjEwLCIuL29iamVjdCI6MTMsIi4vc3VwcG9ydCI6MTd9XSwxMDpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9YSgiLi9iYXNlNjQiKSxkPWEoIi4vemlwRW50cmllcyIpO2IuZXhwb3J0cz1mdW5jdGlvbihhLGIpe3ZhciBlLGYsZyxoO2ZvcihiPWJ8fHt9LGIuYmFzZTY0JiYoYT1jLmRlY29kZShhKSksZj1uZXcgZChhLGIpLGU9Zi5maWxlcyxnPTA7ZzxlLmxlbmd0aDtnKyspaD1lW2ddLHRoaXMuZmlsZShoLmZpbGVOYW1lLGguZGVjb21wcmVzc2VkLHtiaW5hcnk6ITAsb3B0aW1pemVkQmluYXJ5U3RyaW5nOiEwLGRhdGU6aC5kYXRlLGRpcjpoLmRpcixjb21tZW50OmguZmlsZUNvbW1lbnQubGVuZ3RoP2guZmlsZUNvbW1lbnQ6bnVsbCx1bml4UGVybWlzc2lvbnM6aC51bml4UGVybWlzc2lvbnMsZG9zUGVybWlzc2lvbnM6aC5kb3NQZXJtaXNzaW9ucyxjcmVhdGVGb2xkZXJzOmIuY3JlYXRlRm9sZGVyc30pO3JldHVybiBmLnppcENvbW1lbnQubGVuZ3RoJiYodGhpcy5jb21tZW50PWYuemlwQ29tbWVudCksdGhpc319LHsiLi9iYXNlNjQiOjEsIi4vemlwRW50cmllcyI6MjJ9XSwxMTpbZnVuY3Rpb24oYSxiKXsoZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2IuZXhwb3J0cz1mdW5jdGlvbihiLGMpe3JldHVybiBuZXcgYShiLGMpfSxiLmV4cG9ydHMudGVzdD1mdW5jdGlvbihiKXtyZXR1cm4gYS5pc0J1ZmZlcihiKX19KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBCdWZmZXI/QnVmZmVyOnZvaWQgMCl9LHt9XSwxMjpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhhKXt0aGlzLmRhdGE9YSx0aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RoLHRoaXMuaW5kZXg9MH12YXIgZD1hKCIuL3VpbnQ4QXJyYXlSZWFkZXIiKTtjLnByb3RvdHlwZT1uZXcgZCxjLnByb3RvdHlwZS5yZWFkRGF0YT1mdW5jdGlvbihhKXt0aGlzLmNoZWNrT2Zmc2V0KGEpO3ZhciBiPXRoaXMuZGF0YS5zbGljZSh0aGlzLmluZGV4LHRoaXMuaW5kZXgrYSk7cmV0dXJuIHRoaXMuaW5kZXgrPWEsYn0sYi5leHBvcnRzPWN9LHsiLi91aW50OEFycmF5UmVhZGVyIjoxOH1dLDEzOltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijt2YXIgYz1hKCIuL3N1cHBvcnQiKSxkPWEoIi4vdXRpbHMiKSxlPWEoIi4vY3JjMzIiKSxmPWEoIi4vc2lnbmF0dXJlIiksZz1hKCIuL2RlZmF1bHRzIiksaD1hKCIuL2Jhc2U2NCIpLGk9YSgiLi9jb21wcmVzc2lvbnMiKSxqPWEoIi4vY29tcHJlc3NlZE9iamVjdCIpLGs9YSgiLi9ub2RlQnVmZmVyIiksbD1hKCIuL3V0ZjgiKSxtPWEoIi4vc3RyaW5nV3JpdGVyIiksbj1hKCIuL3VpbnQ4QXJyYXlXcml0ZXIiKSxvPWZ1bmN0aW9uKGEpe2lmKGEuX2RhdGEgaW5zdGFuY2VvZiBqJiYoYS5fZGF0YT1hLl9kYXRhLmdldENvbnRlbnQoKSxhLm9wdGlvbnMuYmluYXJ5PSEwLGEub3B0aW9ucy5iYXNlNjQ9ITEsInVpbnQ4YXJyYXkiPT09ZC5nZXRUeXBlT2YoYS5fZGF0YSkpKXt2YXIgYj1hLl9kYXRhO2EuX2RhdGE9bmV3IFVpbnQ4QXJyYXkoYi5sZW5ndGgpLDAhPT1iLmxlbmd0aCYmYS5fZGF0YS5zZXQoYiwwKX1yZXR1cm4gYS5fZGF0YX0scD1mdW5jdGlvbihhKXt2YXIgYj1vKGEpLGU9ZC5nZXRUeXBlT2YoYik7cmV0dXJuInN0cmluZyI9PT1lPyFhLm9wdGlvbnMuYmluYXJ5JiZjLm5vZGVidWZmZXI/ayhiLCJ1dGYtOCIpOmEuYXNCaW5hcnkoKTpifSxxPWZ1bmN0aW9uKGEpe3ZhciBiPW8odGhpcyk7cmV0dXJuIG51bGw9PT1ifHwidW5kZWZpbmVkIj09dHlwZW9mIGI/IiI6KHRoaXMub3B0aW9ucy5iYXNlNjQmJihiPWguZGVjb2RlKGIpKSxiPWEmJnRoaXMub3B0aW9ucy5iaW5hcnk/RC51dGY4ZGVjb2RlKGIpOmQudHJhbnNmb3JtVG8oInN0cmluZyIsYiksYXx8dGhpcy5vcHRpb25zLmJpbmFyeXx8KGI9ZC50cmFuc2Zvcm1Ubygic3RyaW5nIixELnV0ZjhlbmNvZGUoYikpKSxiKX0scj1mdW5jdGlvbihhLGIsYyl7dGhpcy5uYW1lPWEsdGhpcy5kaXI9Yy5kaXIsdGhpcy5kYXRlPWMuZGF0ZSx0aGlzLmNvbW1lbnQ9Yy5jb21tZW50LHRoaXMudW5peFBlcm1pc3Npb25zPWMudW5peFBlcm1pc3Npb25zLHRoaXMuZG9zUGVybWlzc2lvbnM9Yy5kb3NQZXJtaXNzaW9ucyx0aGlzLl9kYXRhPWIsdGhpcy5vcHRpb25zPWMsdGhpcy5faW5pdGlhbE1ldGFkYXRhPXtkaXI6Yy5kaXIsZGF0ZTpjLmRhdGV9fTtyLnByb3RvdHlwZT17YXNUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHEuY2FsbCh0aGlzLCEwKX0sYXNCaW5hcnk6ZnVuY3Rpb24oKXtyZXR1cm4gcS5jYWxsKHRoaXMsITEpfSxhc05vZGVCdWZmZXI6ZnVuY3Rpb24oKXt2YXIgYT1wKHRoaXMpO3JldHVybiBkLnRyYW5zZm9ybVRvKCJub2RlYnVmZmVyIixhKX0sYXNVaW50OEFycmF5OmZ1bmN0aW9uKCl7dmFyIGE9cCh0aGlzKTtyZXR1cm4gZC50cmFuc2Zvcm1UbygidWludDhhcnJheSIsYSl9LGFzQXJyYXlCdWZmZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hc1VpbnQ4QXJyYXkoKS5idWZmZXJ9fTt2YXIgcz1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9IiI7Zm9yKGM9MDtiPmM7YysrKWQrPVN0cmluZy5mcm9tQ2hhckNvZGUoMjU1JmEpLGE+Pj49ODtyZXR1cm4gZH0sdD1mdW5jdGlvbigpe3ZhciBhLGIsYz17fTtmb3IoYT0wO2E8YXJndW1lbnRzLmxlbmd0aDthKyspZm9yKGIgaW4gYXJndW1lbnRzW2FdKWFyZ3VtZW50c1thXS5oYXNPd25Qcm9wZXJ0eShiKSYmInVuZGVmaW5lZCI9PXR5cGVvZiBjW2JdJiYoY1tiXT1hcmd1bWVudHNbYV1bYl0pO3JldHVybiBjfSx1PWZ1bmN0aW9uKGEpe3JldHVybiBhPWF8fHt9LGEuYmFzZTY0IT09ITB8fG51bGwhPT1hLmJpbmFyeSYmdm9pZCAwIT09YS5iaW5hcnl8fChhLmJpbmFyeT0hMCksYT10KGEsZyksYS5kYXRlPWEuZGF0ZXx8bmV3IERhdGUsbnVsbCE9PWEuY29tcHJlc3Npb24mJihhLmNvbXByZXNzaW9uPWEuY29tcHJlc3Npb24udG9VcHBlckNhc2UoKSksYX0sdj1mdW5jdGlvbihhLGIsYyl7dmFyIGUsZj1kLmdldFR5cGVPZihiKTtpZihjPXUoYyksInN0cmluZyI9PXR5cGVvZiBjLnVuaXhQZXJtaXNzaW9ucyYmKGMudW5peFBlcm1pc3Npb25zPXBhcnNlSW50KGMudW5peFBlcm1pc3Npb25zLDgpKSxjLnVuaXhQZXJtaXNzaW9ucyYmMTYzODQmYy51bml4UGVybWlzc2lvbnMmJihjLmRpcj0hMCksYy5kb3NQZXJtaXNzaW9ucyYmMTYmYy5kb3NQZXJtaXNzaW9ucyYmKGMuZGlyPSEwKSxjLmRpciYmKGE9eChhKSksYy5jcmVhdGVGb2xkZXJzJiYoZT13KGEpKSYmeS5jYWxsKHRoaXMsZSwhMCksYy5kaXJ8fG51bGw9PT1ifHwidW5kZWZpbmVkIj09dHlwZW9mIGIpYy5iYXNlNjQ9ITEsYy5iaW5hcnk9ITEsYj1udWxsLGY9bnVsbDtlbHNlIGlmKCJzdHJpbmciPT09ZiljLmJpbmFyeSYmIWMuYmFzZTY0JiZjLm9wdGltaXplZEJpbmFyeVN0cmluZyE9PSEwJiYoYj1kLnN0cmluZzJiaW5hcnkoYikpO2Vsc2V7aWYoYy5iYXNlNjQ9ITEsYy5iaW5hcnk9ITAsIShmfHxiIGluc3RhbmNlb2YgaikpdGhyb3cgbmV3IEVycm9yKCJUaGUgZGF0YSBvZiAnIithKyInIGlzIGluIGFuIHVuc3VwcG9ydGVkIGZvcm1hdCAhIik7ImFycmF5YnVmZmVyIj09PWYmJihiPWQudHJhbnNmb3JtVG8oInVpbnQ4YXJyYXkiLGIpKX12YXIgZz1uZXcgcihhLGIsYyk7cmV0dXJuIHRoaXMuZmlsZXNbYV09ZyxnfSx3PWZ1bmN0aW9uKGEpeyIvIj09YS5zbGljZSgtMSkmJihhPWEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtMSkpO3ZhciBiPWEubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gYj4wP2Euc3Vic3RyaW5nKDAsYik6IiJ9LHg9ZnVuY3Rpb24oYSl7cmV0dXJuIi8iIT1hLnNsaWNlKC0xKSYmKGErPSIvIiksYX0seT1mdW5jdGlvbihhLGIpe3JldHVybiBiPSJ1bmRlZmluZWQiIT10eXBlb2YgYj9iOiExLGE9eChhKSx0aGlzLmZpbGVzW2FdfHx2LmNhbGwodGhpcyxhLG51bGwse2RpcjohMCxjcmVhdGVGb2xkZXJzOmJ9KSx0aGlzLmZpbGVzW2FdfSx6PWZ1bmN0aW9uKGEsYixjKXt2YXIgZixnPW5ldyBqO3JldHVybiBhLl9kYXRhIGluc3RhbmNlb2Ygaj8oZy51bmNvbXByZXNzZWRTaXplPWEuX2RhdGEudW5jb21wcmVzc2VkU2l6ZSxnLmNyYzMyPWEuX2RhdGEuY3JjMzIsMD09PWcudW5jb21wcmVzc2VkU2l6ZXx8YS5kaXI/KGI9aS5TVE9SRSxnLmNvbXByZXNzZWRDb250ZW50PSIiLGcuY3JjMzI9MCk6YS5fZGF0YS5jb21wcmVzc2lvbk1ldGhvZD09PWIubWFnaWM/Zy5jb21wcmVzc2VkQ29udGVudD1hLl9kYXRhLmdldENvbXByZXNzZWRDb250ZW50KCk6KGY9YS5fZGF0YS5nZXRDb250ZW50KCksZy5jb21wcmVzc2VkQ29udGVudD1iLmNvbXByZXNzKGQudHJhbnNmb3JtVG8oYi5jb21wcmVzc0lucHV0VHlwZSxmKSxjKSkpOihmPXAoYSksKCFmfHwwPT09Zi5sZW5ndGh8fGEuZGlyKSYmKGI9aS5TVE9SRSxmPSIiKSxnLnVuY29tcHJlc3NlZFNpemU9Zi5sZW5ndGgsZy5jcmMzMj1lKGYpLGcuY29tcHJlc3NlZENvbnRlbnQ9Yi5jb21wcmVzcyhkLnRyYW5zZm9ybVRvKGIuY29tcHJlc3NJbnB1dFR5cGUsZiksYykpLGcuY29tcHJlc3NlZFNpemU9Zy5jb21wcmVzc2VkQ29udGVudC5sZW5ndGgsZy5jb21wcmVzc2lvbk1ldGhvZD1iLm1hZ2ljLGd9LEE9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hO3JldHVybiBhfHwoYz1iPzE2ODkzOjMzMjA0KSwoNjU1MzUmYyk8PDE2fSxCPWZ1bmN0aW9uKGEpe3JldHVybiA2MyYoYXx8MCl9LEM9ZnVuY3Rpb24oYSxiLGMsZyxoKXt2YXIgaSxqLGssbSxuPShjLmNvbXByZXNzZWRDb250ZW50LGQudHJhbnNmb3JtVG8oInN0cmluZyIsbC51dGY4ZW5jb2RlKGIubmFtZSkpKSxvPWIuY29tbWVudHx8IiIscD1kLnRyYW5zZm9ybVRvKCJzdHJpbmciLGwudXRmOGVuY29kZShvKSkscT1uLmxlbmd0aCE9PWIubmFtZS5sZW5ndGgscj1wLmxlbmd0aCE9PW8ubGVuZ3RoLHQ9Yi5vcHRpb25zLHU9IiIsdj0iIix3PSIiO2s9Yi5faW5pdGlhbE1ldGFkYXRhLmRpciE9PWIuZGlyP2IuZGlyOnQuZGlyLG09Yi5faW5pdGlhbE1ldGFkYXRhLmRhdGUhPT1iLmRhdGU/Yi5kYXRlOnQuZGF0ZTt2YXIgeD0wLHk9MDtrJiYoeHw9MTYpLCJVTklYIj09PWg/KHk9Nzk4LHh8PUEoYi51bml4UGVybWlzc2lvbnMsaykpOih5PTIwLHh8PUIoYi5kb3NQZXJtaXNzaW9ucyxrKSksaT1tLmdldEhvdXJzKCksaTw8PTYsaXw9bS5nZXRNaW51dGVzKCksaTw8PTUsaXw9bS5nZXRTZWNvbmRzKCkvMixqPW0uZ2V0RnVsbFllYXIoKS0xOTgwLGo8PD00LGp8PW0uZ2V0TW9udGgoKSsxLGo8PD01LGp8PW0uZ2V0RGF0ZSgpLHEmJih2PXMoMSwxKStzKGUobiksNCkrbix1Kz0idXAiK3Modi5sZW5ndGgsMikrdiksciYmKHc9cygxLDEpK3ModGhpcy5jcmMzMihwKSw0KStwLHUrPSJ1YyIrcyh3Lmxlbmd0aCwyKSt3KTt2YXIgej0iIjt6Kz0iXG5ceDAwIix6Kz1xfHxyPyJceDAwXGIiOiJceDAwXHgwMCIseis9Yy5jb21wcmVzc2lvbk1ldGhvZCx6Kz1zKGksMikseis9cyhqLDIpLHorPXMoYy5jcmMzMiw0KSx6Kz1zKGMuY29tcHJlc3NlZFNpemUsNCkseis9cyhjLnVuY29tcHJlc3NlZFNpemUsNCkseis9cyhuLmxlbmd0aCwyKSx6Kz1zKHUubGVuZ3RoLDIpO3ZhciBDPWYuTE9DQUxfRklMRV9IRUFERVIreituK3UsRD1mLkNFTlRSQUxfRklMRV9IRUFERVIrcyh5LDIpK3orcyhwLmxlbmd0aCwyKSsiXHgwMFx4MDBceDAwXHgwMCIrcyh4LDQpK3MoZyw0KStuK3UrcDtyZXR1cm57ZmlsZVJlY29yZDpDLGRpclJlY29yZDpELGNvbXByZXNzZWRPYmplY3Q6Y319LEQ9e2xvYWQ6ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIkxvYWQgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLiBJcyB0aGUgZmlsZSBqc3ppcC1sb2FkLmpzIGluY2x1ZGVkID8iKX0sZmlsdGVyOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGY9W107Zm9yKGIgaW4gdGhpcy5maWxlcyl0aGlzLmZpbGVzLmhhc093blByb3BlcnR5KGIpJiYoZD10aGlzLmZpbGVzW2JdLGU9bmV3IHIoZC5uYW1lLGQuX2RhdGEsdChkLm9wdGlvbnMpKSxjPWIuc2xpY2UodGhpcy5yb290Lmxlbmd0aCxiLmxlbmd0aCksYi5zbGljZSgwLHRoaXMucm9vdC5sZW5ndGgpPT09dGhpcy5yb290JiZhKGMsZSkmJmYucHVzaChlKSk7cmV0dXJuIGZ9LGZpbGU6ZnVuY3Rpb24oYSxiLGMpe2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXtpZihkLmlzUmVnRXhwKGEpKXt2YXIgZT1hO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbihhLGIpe3JldHVybiFiLmRpciYmZS50ZXN0KGEpfSl9cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKGIsYyl7cmV0dXJuIWMuZGlyJiZiPT09YX0pWzBdfHxudWxsfXJldHVybiBhPXRoaXMucm9vdCthLHYuY2FsbCh0aGlzLGEsYixjKSx0aGlzfSxmb2xkZXI6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIHRoaXM7aWYoZC5pc1JlZ0V4cChhKSlyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oYixjKXtyZXR1cm4gYy5kaXImJmEudGVzdChiKX0pO3ZhciBiPXRoaXMucm9vdCthLGM9eS5jYWxsKHRoaXMsYiksZT10aGlzLmNsb25lKCk7cmV0dXJuIGUucm9vdD1jLm5hbWUsZX0scmVtb3ZlOmZ1bmN0aW9uKGEpe2E9dGhpcy5yb290K2E7dmFyIGI9dGhpcy5maWxlc1thXTtpZihifHwoIi8iIT1hLnNsaWNlKC0xKSYmKGErPSIvIiksYj10aGlzLmZpbGVzW2FdKSxiJiYhYi5kaXIpZGVsZXRlIHRoaXMuZmlsZXNbYV07ZWxzZSBmb3IodmFyIGM9dGhpcy5maWx0ZXIoZnVuY3Rpb24oYixjKXtyZXR1cm4gYy5uYW1lLnNsaWNlKDAsYS5sZW5ndGgpPT09YX0pLGQ9MDtkPGMubGVuZ3RoO2QrKylkZWxldGUgdGhpcy5maWxlc1tjW2RdLm5hbWVdO3JldHVybiB0aGlzfSxnZW5lcmF0ZTpmdW5jdGlvbihhKXthPXQoYXx8e30se2Jhc2U2NDohMCxjb21wcmVzc2lvbjoiU1RPUkUiLGNvbXByZXNzaW9uT3B0aW9uczpudWxsLHR5cGU6ImJhc2U2NCIscGxhdGZvcm06IkRPUyIsY29tbWVudDpudWxsLG1pbWVUeXBlOiJhcHBsaWNhdGlvbi96aXAifSksZC5jaGVja1N1cHBvcnQoYS50eXBlKSwoImRhcndpbiI9PT1hLnBsYXRmb3JtfHwiZnJlZWJzZCI9PT1hLnBsYXRmb3JtfHwibGludXgiPT09YS5wbGF0Zm9ybXx8InN1bm9zIj09PWEucGxhdGZvcm0pJiYoYS5wbGF0Zm9ybT0iVU5JWCIpLCJ3aW4zMiI9PT1hLnBsYXRmb3JtJiYoYS5wbGF0Zm9ybT0iRE9TIik7dmFyIGIsYyxlPVtdLGc9MCxqPTAsaz1kLnRyYW5zZm9ybVRvKCJzdHJpbmciLHRoaXMudXRmOGVuY29kZShhLmNvbW1lbnR8fHRoaXMuY29tbWVudHx8IiIpKTtmb3IodmFyIGwgaW4gdGhpcy5maWxlcylpZih0aGlzLmZpbGVzLmhhc093blByb3BlcnR5KGwpKXt2YXIgbz10aGlzLmZpbGVzW2xdLHA9by5vcHRpb25zLmNvbXByZXNzaW9ufHxhLmNvbXByZXNzaW9uLnRvVXBwZXJDYXNlKCkscT1pW3BdO2lmKCFxKXRocm93IG5ldyBFcnJvcihwKyIgaXMgbm90IGEgdmFsaWQgY29tcHJlc3Npb24gbWV0aG9kICEiKTt2YXIgcj1vLm9wdGlvbnMuY29tcHJlc3Npb25PcHRpb25zfHxhLmNvbXByZXNzaW9uT3B0aW9uc3x8e30sdT16LmNhbGwodGhpcyxvLHEsciksdj1DLmNhbGwodGhpcyxsLG8sdSxnLGEucGxhdGZvcm0pO2crPXYuZmlsZVJlY29yZC5sZW5ndGgrdS5jb21wcmVzc2VkU2l6ZSxqKz12LmRpclJlY29yZC5sZW5ndGgsZS5wdXNoKHYpfXZhciB3PSIiO3c9Zi5DRU5UUkFMX0RJUkVDVE9SWV9FTkQrIlx4MDBceDAwXHgwMFx4MDAiK3MoZS5sZW5ndGgsMikrcyhlLmxlbmd0aCwyKStzKGosNCkrcyhnLDQpK3Moay5sZW5ndGgsMikrazt2YXIgeD1hLnR5cGUudG9Mb3dlckNhc2UoKTtmb3IoYj0idWludDhhcnJheSI9PT14fHwiYXJyYXlidWZmZXIiPT09eHx8ImJsb2IiPT09eHx8Im5vZGVidWZmZXIiPT09eD9uZXcgbihnK2ordy5sZW5ndGgpOm5ldyBtKGcrait3Lmxlbmd0aCksYz0wO2M8ZS5sZW5ndGg7YysrKWIuYXBwZW5kKGVbY10uZmlsZVJlY29yZCksYi5hcHBlbmQoZVtjXS5jb21wcmVzc2VkT2JqZWN0LmNvbXByZXNzZWRDb250ZW50KTtmb3IoYz0wO2M8ZS5sZW5ndGg7YysrKWIuYXBwZW5kKGVbY10uZGlyUmVjb3JkKTtiLmFwcGVuZCh3KTt2YXIgeT1iLmZpbmFsaXplKCk7c3dpdGNoKGEudHlwZS50b0xvd2VyQ2FzZSgpKXtjYXNlInVpbnQ4YXJyYXkiOmNhc2UiYXJyYXlidWZmZXIiOmNhc2Uibm9kZWJ1ZmZlciI6cmV0dXJuIGQudHJhbnNmb3JtVG8oYS50eXBlLnRvTG93ZXJDYXNlKCkseSk7Y2FzZSJibG9iIjpyZXR1cm4gZC5hcnJheUJ1ZmZlcjJCbG9iKGQudHJhbnNmb3JtVG8oImFycmF5YnVmZmVyIix5KSxhLm1pbWVUeXBlKTtjYXNlImJhc2U2NCI6cmV0dXJuIGEuYmFzZTY0P2guZW5jb2RlKHkpOnk7ZGVmYXVsdDpyZXR1cm4geX19LGNyYzMyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGUoYSxiKX0sdXRmOGVuY29kZTpmdW5jdGlvbihhKXtyZXR1cm4gZC50cmFuc2Zvcm1Ubygic3RyaW5nIixsLnV0ZjhlbmNvZGUoYSkpfSx1dGY4ZGVjb2RlOmZ1bmN0aW9uKGEpe3JldHVybiBsLnV0ZjhkZWNvZGUoYSl9fTtiLmV4cG9ydHM9RH0seyIuL2Jhc2U2NCI6MSwiLi9jb21wcmVzc2VkT2JqZWN0IjoyLCIuL2NvbXByZXNzaW9ucyI6MywiLi9jcmMzMiI6NCwiLi9kZWZhdWx0cyI6NiwiLi9ub2RlQnVmZmVyIjoxMSwiLi9zaWduYXR1cmUiOjE0LCIuL3N0cmluZ1dyaXRlciI6MTYsIi4vc3VwcG9ydCI6MTcsIi4vdWludDhBcnJheVdyaXRlciI6MTksIi4vdXRmOCI6MjAsIi4vdXRpbHMiOjIxfV0sMTQ6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7Yy5MT0NBTF9GSUxFX0hFQURFUj0iUEsDBCIsYy5DRU5UUkFMX0ZJTEVfSEVBREVSPSJQSwECIixjLkNFTlRSQUxfRElSRUNUT1JZX0VORD0iUEsFBiIsYy5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SPSJQSwYHIixjLlpJUDY0X0NFTlRSQUxfRElSRUNUT1JZX0VORD0iUEsGBiIsYy5EQVRBX0RFU0NSSVBUT1I9IlBLB1xiIn0se31dLDE1OltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGEsYil7dGhpcy5kYXRhPWEsYnx8KHRoaXMuZGF0YT1lLnN0cmluZzJiaW5hcnkodGhpcy5kYXRhKSksdGhpcy5sZW5ndGg9dGhpcy5kYXRhLmxlbmd0aCx0aGlzLmluZGV4PTB9dmFyIGQ9YSgiLi9kYXRhUmVhZGVyIiksZT1hKCIuL3V0aWxzIik7Yy5wcm90b3R5cGU9bmV3IGQsYy5wcm90b3R5cGUuYnl0ZUF0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRhdGEuY2hhckNvZGVBdChhKX0sYy5wcm90b3R5cGUubGFzdEluZGV4T2ZTaWduYXR1cmU9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZGF0YS5sYXN0SW5kZXhPZihhKX0sYy5wcm90b3R5cGUucmVhZERhdGE9ZnVuY3Rpb24oYSl7dGhpcy5jaGVja09mZnNldChhKTt2YXIgYj10aGlzLmRhdGEuc2xpY2UodGhpcy5pbmRleCx0aGlzLmluZGV4K2EpO3JldHVybiB0aGlzLmluZGV4Kz1hLGJ9LGIuZXhwb3J0cz1jfSx7Ii4vZGF0YVJlYWRlciI6NSwiLi91dGlscyI6MjF9XSwxNjpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9YSgiLi91dGlscyIpLGQ9ZnVuY3Rpb24oKXt0aGlzLmRhdGE9W119O2QucHJvdG90eXBlPXthcHBlbmQ6ZnVuY3Rpb24oYSl7YT1jLnRyYW5zZm9ybVRvKCJzdHJpbmciLGEpLHRoaXMuZGF0YS5wdXNoKGEpfSxmaW5hbGl6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGEuam9pbigiIil9fSxiLmV4cG9ydHM9ZH0seyIuL3V0aWxzIjoyMX1dLDE3OltmdW5jdGlvbihhLGIsYyl7KGZ1bmN0aW9uKGEpeyJ1c2Ugc3RyaWN0IjtpZihjLmJhc2U2ND0hMCxjLmFycmF5PSEwLGMuc3RyaW5nPSEwLGMuYXJyYXlidWZmZXI9InVuZGVmaW5lZCIhPXR5cGVvZiBBcnJheUJ1ZmZlciYmInVuZGVmaW5lZCIhPXR5cGVvZiBVaW50OEFycmF5LGMubm9kZWJ1ZmZlcj0idW5kZWZpbmVkIiE9dHlwZW9mIGEsYy51aW50OGFycmF5PSJ1bmRlZmluZWQiIT10eXBlb2YgVWludDhBcnJheSwidW5kZWZpbmVkIj09dHlwZW9mIEFycmF5QnVmZmVyKWMuYmxvYj0hMTtlbHNle3ZhciBiPW5ldyBBcnJheUJ1ZmZlcigwKTt0cnl7Yy5ibG9iPTA9PT1uZXcgQmxvYihbYl0se3R5cGU6ImFwcGxpY2F0aW9uL3ppcCJ9KS5zaXplfWNhdGNoKGQpe3RyeXt2YXIgZT13aW5kb3cuQmxvYkJ1aWxkZXJ8fHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlcnx8d2luZG93Lk1vekJsb2JCdWlsZGVyfHx3aW5kb3cuTVNCbG9iQnVpbGRlcixmPW5ldyBlO2YuYXBwZW5kKGIpLGMuYmxvYj0wPT09Zi5nZXRCbG9iKCJhcHBsaWNhdGlvbi96aXAiKS5zaXplfWNhdGNoKGQpe2MuYmxvYj0hMX19fX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIEJ1ZmZlcj9CdWZmZXI6dm9pZCAwKX0se31dLDE4OltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGEpe2EmJih0aGlzLmRhdGE9YSx0aGlzLmxlbmd0aD10aGlzLmRhdGEubGVuZ3RoLHRoaXMuaW5kZXg9MCl9dmFyIGQ9YSgiLi9kYXRhUmVhZGVyIik7Yy5wcm90b3R5cGU9bmV3IGQsYy5wcm90b3R5cGUuYnl0ZUF0PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRhdGFbYV19LGMucHJvdG90eXBlLmxhc3RJbmRleE9mU2lnbmF0dXJlPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1hLmNoYXJDb2RlQXQoMCksYz1hLmNoYXJDb2RlQXQoMSksZD1hLmNoYXJDb2RlQXQoMiksZT1hLmNoYXJDb2RlQXQoMyksZj10aGlzLmxlbmd0aC00O2Y+PTA7LS1mKWlmKHRoaXMuZGF0YVtmXT09PWImJnRoaXMuZGF0YVtmKzFdPT09YyYmdGhpcy5kYXRhW2YrMl09PT1kJiZ0aGlzLmRhdGFbZiszXT09PWUpcmV0dXJuIGY7cmV0dXJuLTF9LGMucHJvdG90eXBlLnJlYWREYXRhPWZ1bmN0aW9uKGEpe2lmKHRoaXMuY2hlY2tPZmZzZXQoYSksMD09PWEpcmV0dXJuIG5ldyBVaW50OEFycmF5KDApO3ZhciBiPXRoaXMuZGF0YS5zdWJhcnJheSh0aGlzLmluZGV4LHRoaXMuaW5kZXgrYSk7cmV0dXJuIHRoaXMuaW5kZXgrPWEsYn0sYi5leHBvcnRzPWN9LHsiLi9kYXRhUmVhZGVyIjo1fV0sMTk6W2Z1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO3ZhciBjPWEoIi4vdXRpbHMiKSxkPWZ1bmN0aW9uKGEpe3RoaXMuZGF0YT1uZXcgVWludDhBcnJheShhKSx0aGlzLmluZGV4PTB9O2QucHJvdG90eXBlPXthcHBlbmQ6ZnVuY3Rpb24oYSl7MCE9PWEubGVuZ3RoJiYoYT1jLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixhKSx0aGlzLmRhdGEuc2V0KGEsdGhpcy5pbmRleCksdGhpcy5pbmRleCs9YS5sZW5ndGgpfSxmaW5hbGl6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGF9fSxiLmV4cG9ydHM9ZH0seyIuL3V0aWxzIjoyMX1dLDIwOltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Zvcih2YXIgZD1hKCIuL3V0aWxzIiksZT1hKCIuL3N1cHBvcnQiKSxmPWEoIi4vbm9kZUJ1ZmZlciIpLGc9bmV3IEFycmF5KDI1NiksaD0wOzI1Nj5oO2grKylnW2hdPWg+PTI1Mj82Omg+PTI0OD81Omg+PTI0MD80Omg+PTIyND8zOmg+PTE5Mj8yOjE7Z1syNTRdPWdbMjU0XT0xO3ZhciBpPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxmLGcsaD1hLmxlbmd0aCxpPTA7Zm9yKGY9MDtoPmY7ZisrKWM9YS5jaGFyQ29kZUF0KGYpLDU1Mjk2PT09KDY0NTEyJmMpJiZoPmYrMSYmKGQ9YS5jaGFyQ29kZUF0KGYrMSksNTYzMjA9PT0oNjQ1MTImZCkmJihjPTY1NTM2KyhjLTU1Mjk2PDwxMCkrKGQtNTYzMjApLGYrKykpLGkrPTEyOD5jPzE6MjA0OD5jPzI6NjU1MzY+Yz8zOjQ7Zm9yKGI9ZS51aW50OGFycmF5P25ldyBVaW50OEFycmF5KGkpOm5ldyBBcnJheShpKSxnPTAsZj0wO2k+ZztmKyspYz1hLmNoYXJDb2RlQXQoZiksNTUyOTY9PT0oNjQ1MTImYykmJmg+ZisxJiYoZD1hLmNoYXJDb2RlQXQoZisxKSw1NjMyMD09PSg2NDUxMiZkKSYmKGM9NjU1MzYrKGMtNTUyOTY8PDEwKSsoZC01NjMyMCksZisrKSksMTI4PmM/YltnKytdPWM6MjA0OD5jPyhiW2crK109MTkyfGM+Pj42LGJbZysrXT0xMjh8NjMmYyk6NjU1MzY+Yz8oYltnKytdPTIyNHxjPj4+MTIsYltnKytdPTEyOHxjPj4+NiY2MyxiW2crK109MTI4fDYzJmMpOihiW2crK109MjQwfGM+Pj4xOCxiW2crK109MTI4fGM+Pj4xMiY2MyxiW2crK109MTI4fGM+Pj42JjYzLGJbZysrXT0xMjh8NjMmYyk7cmV0dXJuIGJ9LGo9ZnVuY3Rpb24oYSxiKXt2YXIgYztmb3IoYj1ifHxhLmxlbmd0aCxiPmEubGVuZ3RoJiYoYj1hLmxlbmd0aCksYz1iLTE7Yz49MCYmMTI4PT09KDE5MiZhW2NdKTspYy0tO3JldHVybiAwPmM/YjowPT09Yz9iOmMrZ1thW2NdXT5iP2M6Yn0saz1mdW5jdGlvbihhKXt2YXIgYixjLGUsZixoPWEubGVuZ3RoLGk9bmV3IEFycmF5KDIqaCk7Zm9yKGM9MCxiPTA7aD5iOylpZihlPWFbYisrXSwxMjg+ZSlpW2MrK109ZTtlbHNlIGlmKGY9Z1tlXSxmPjQpaVtjKytdPTY1NTMzLGIrPWYtMTtlbHNle2ZvcihlJj0yPT09Zj8zMTozPT09Zj8xNTo3O2Y+MSYmaD5iOyllPWU8PDZ8NjMmYVtiKytdLGYtLTtmPjE/aVtjKytdPTY1NTMzOjY1NTM2PmU/aVtjKytdPWU6KGUtPTY1NTM2LGlbYysrXT01NTI5NnxlPj4xMCYxMDIzLGlbYysrXT01NjMyMHwxMDIzJmUpfXJldHVybiBpLmxlbmd0aCE9PWMmJihpLnN1YmFycmF5P2k9aS5zdWJhcnJheSgwLGMpOmkubGVuZ3RoPWMpLGQuYXBwbHlGcm9tQ2hhckNvZGUoaSl9O2MudXRmOGVuY29kZT1mdW5jdGlvbihhKXtyZXR1cm4gZS5ub2RlYnVmZmVyP2YoYSwidXRmLTgiKTppKGEpfSxjLnV0ZjhkZWNvZGU9ZnVuY3Rpb24oYSl7aWYoZS5ub2RlYnVmZmVyKXJldHVybiBkLnRyYW5zZm9ybVRvKCJub2RlYnVmZmVyIixhKS50b1N0cmluZygidXRmLTgiKTthPWQudHJhbnNmb3JtVG8oZS51aW50OGFycmF5PyJ1aW50OGFycmF5IjoiYXJyYXkiLGEpO2Zvcih2YXIgYj1bXSxjPTAsZj1hLmxlbmd0aCxnPTY1NTM2O2Y+Yzspe3ZhciBoPWooYSxNYXRoLm1pbihjK2csZikpO2IucHVzaChlLnVpbnQ4YXJyYXk/ayhhLnN1YmFycmF5KGMsaCkpOmsoYS5zbGljZShjLGgpKSksYz1ofXJldHVybiBiLmpvaW4oIiIpfX0seyIuL25vZGVCdWZmZXIiOjExLCIuL3N1cHBvcnQiOjE3LCIuL3V0aWxzIjoyMX1dLDIxOltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSl7cmV0dXJuIGF9ZnVuY3Rpb24gZShhLGIpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7KytjKWJbY109MjU1JmEuY2hhckNvZGVBdChjKTtyZXR1cm4gYn1mdW5jdGlvbiBmKGEpe3ZhciBiPTY1NTM2LGQ9W10sZT1hLmxlbmd0aCxmPWMuZ2V0VHlwZU9mKGEpLGc9MCxoPSEwO3RyeXtzd2l0Y2goZil7Y2FzZSJ1aW50OGFycmF5IjpTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbmV3IFVpbnQ4QXJyYXkoMCkpO2JyZWFrO2Nhc2Uibm9kZWJ1ZmZlciI6U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGooMCkpfX1jYXRjaChpKXtoPSExfWlmKCFoKXtmb3IodmFyIGs9IiIsbD0wO2w8YS5sZW5ndGg7bCsrKWsrPVN0cmluZy5mcm9tQ2hhckNvZGUoYVtsXSk7cmV0dXJuIGt9Zm9yKDtlPmcmJmI+MTspdHJ5e2QucHVzaCgiYXJyYXkiPT09Znx8Im5vZGVidWZmZXIiPT09Zj9TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsYS5zbGljZShnLE1hdGgubWluKGcrYixlKSkpOlN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxhLnN1YmFycmF5KGcsTWF0aC5taW4oZytiLGUpKSkpLGcrPWJ9Y2F0Y2goaSl7Yj1NYXRoLmZsb29yKGIvMil9cmV0dXJuIGQuam9pbigiIil9ZnVuY3Rpb24gZyhhLGIpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWJbY109YVtjXTtyZXR1cm4gYn12YXIgaD1hKCIuL3N1cHBvcnQiKSxpPWEoIi4vY29tcHJlc3Npb25zIiksaj1hKCIuL25vZGVCdWZmZXIiKTtjLnN0cmluZzJiaW5hcnk9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGM9MDtjPGEubGVuZ3RoO2MrKyliKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSZhLmNoYXJDb2RlQXQoYykpO3JldHVybiBifSxjLmFycmF5QnVmZmVyMkJsb2I9ZnVuY3Rpb24oYSxiKXtjLmNoZWNrU3VwcG9ydCgiYmxvYiIpLGI9Ynx8ImFwcGxpY2F0aW9uL3ppcCI7dHJ5e3JldHVybiBuZXcgQmxvYihbYV0se3R5cGU6Yn0pfWNhdGNoKGQpe3RyeXt2YXIgZT13aW5kb3cuQmxvYkJ1aWxkZXJ8fHdpbmRvdy5XZWJLaXRCbG9iQnVpbGRlcnx8d2luZG93Lk1vekJsb2JCdWlsZGVyfHx3aW5kb3cuTVNCbG9iQnVpbGRlcixmPW5ldyBlO3JldHVybiBmLmFwcGVuZChhKSxmLmdldEJsb2IoYil9Y2F0Y2goZCl7dGhyb3cgbmV3IEVycm9yKCJCdWcgOiBjYW4ndCBjb25zdHJ1Y3QgdGhlIEJsb2IuIil9fX0sYy5hcHBseUZyb21DaGFyQ29kZT1mO3ZhciBrPXt9O2suc3RyaW5nPXtzdHJpbmc6ZCxhcnJheTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLG5ldyBBcnJheShhLmxlbmd0aCkpfSxhcnJheWJ1ZmZlcjpmdW5jdGlvbihhKXtyZXR1cm4gay5zdHJpbmcudWludDhhcnJheShhKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSxuZXcgVWludDhBcnJheShhLmxlbmd0aCkpfSxub2RlYnVmZmVyOmZ1bmN0aW9uKGEpe3JldHVybiBlKGEsaihhLmxlbmd0aCkpfX0say5hcnJheT17c3RyaW5nOmYsYXJyYXk6ZCxhcnJheWJ1ZmZlcjpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYSkuYnVmZmVyfSx1aW50OGFycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVWludDhBcnJheShhKX0sbm9kZWJ1ZmZlcjpmdW5jdGlvbihhKXtyZXR1cm4gaihhKX19LGsuYXJyYXlidWZmZXI9e3N0cmluZzpmdW5jdGlvbihhKXtyZXR1cm4gZihuZXcgVWludDhBcnJheShhKSl9LGFycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBnKG5ldyBVaW50OEFycmF5KGEpLG5ldyBBcnJheShhLmJ5dGVMZW5ndGgpKX0sYXJyYXlidWZmZXI6ZCx1aW50OGFycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgVWludDhBcnJheShhKX0sbm9kZWJ1ZmZlcjpmdW5jdGlvbihhKXtyZXR1cm4gaihuZXcgVWludDhBcnJheShhKSl9fSxrLnVpbnQ4YXJyYXk9e3N0cmluZzpmLGFycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBnKGEsbmV3IEFycmF5KGEubGVuZ3RoKSl9LGFycmF5YnVmZmVyOmZ1bmN0aW9uKGEpe3JldHVybiBhLmJ1ZmZlcn0sdWludDhhcnJheTpkLG5vZGVidWZmZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGooYSl9fSxrLm5vZGVidWZmZXI9e3N0cmluZzpmLGFycmF5OmZ1bmN0aW9uKGEpe3JldHVybiBnKGEsbmV3IEFycmF5KGEubGVuZ3RoKSl9LGFycmF5YnVmZmVyOmZ1bmN0aW9uKGEpe3JldHVybiBrLm5vZGVidWZmZXIudWludDhhcnJheShhKS5idWZmZXJ9LHVpbnQ4YXJyYXk6ZnVuY3Rpb24oYSl7cmV0dXJuIGcoYSxuZXcgVWludDhBcnJheShhLmxlbmd0aCkpfSxub2RlYnVmZmVyOmR9LGMudHJhbnNmb3JtVG89ZnVuY3Rpb24oYSxiKXtpZihifHwoYj0iIiksIWEpcmV0dXJuIGI7Yy5jaGVja1N1cHBvcnQoYSk7dmFyIGQ9Yy5nZXRUeXBlT2YoYiksZT1rW2RdW2FdKGIpO3JldHVybiBlfSxjLmdldFR5cGVPZj1mdW5jdGlvbihhKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGE/InN0cmluZyI6IltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKT8iYXJyYXkiOmgubm9kZWJ1ZmZlciYmai50ZXN0KGEpPyJub2RlYnVmZmVyIjpoLnVpbnQ4YXJyYXkmJmEgaW5zdGFuY2VvZiBVaW50OEFycmF5PyJ1aW50OGFycmF5IjpoLmFycmF5YnVmZmVyJiZhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXI/ImFycmF5YnVmZmVyIjp2b2lkIDB9LGMuY2hlY2tTdXBwb3J0PWZ1bmN0aW9uKGEpe3ZhciBiPWhbYS50b0xvd2VyQ2FzZSgpXTtpZighYil0aHJvdyBuZXcgRXJyb3IoYSsiIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyIil9LGMuTUFYX1ZBTFVFXzE2QklUUz02NTUzNSxjLk1BWF9WQUxVRV8zMkJJVFM9LTEsYy5wcmV0dHk9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPSIiO2ZvcihjPTA7YzwoYXx8IiIpLmxlbmd0aDtjKyspYj1hLmNoYXJDb2RlQXQoYyksZCs9IlxceCIrKDE2PmI/IjAiOiIiKStiLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO3JldHVybiBkfSxjLmZpbmRDb21wcmVzc2lvbj1mdW5jdGlvbihhKXtmb3IodmFyIGIgaW4gaSlpZihpLmhhc093blByb3BlcnR5KGIpJiZpW2JdLm1hZ2ljPT09YSlyZXR1cm4gaVtiXTtyZXR1cm4gbnVsbH0sYy5pc1JlZ0V4cD1mdW5jdGlvbihhKXtyZXR1cm4iW29iamVjdCBSZWdFeHBdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhKX19LHsiLi9jb21wcmVzc2lvbnMiOjMsIi4vbm9kZUJ1ZmZlciI6MTEsIi4vc3VwcG9ydCI6MTd9XSwyMjpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhhLGIpe3RoaXMuZmlsZXM9W10sdGhpcy5sb2FkT3B0aW9ucz1iLGEmJnRoaXMubG9hZChhKX12YXIgZD1hKCIuL3N0cmluZ1JlYWRlciIpLGU9YSgiLi9ub2RlQnVmZmVyUmVhZGVyIiksZj1hKCIuL3VpbnQ4QXJyYXlSZWFkZXIiKSxnPWEoIi4vdXRpbHMiKSxoPWEoIi4vc2lnbmF0dXJlIiksaT1hKCIuL3ppcEVudHJ5Iiksaj1hKCIuL3N1cHBvcnQiKSxrPWEoIi4vb2JqZWN0Iik7Yy5wcm90b3R5cGU9e2NoZWNrU2lnbmF0dXJlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucmVhZGVyLnJlYWRTdHJpbmcoNCk7aWYoYiE9PWEpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIG9yIGJ1ZyA6IHVuZXhwZWN0ZWQgc2lnbmF0dXJlICgiK2cucHJldHR5KGIpKyIsIGV4cGVjdGVkICIrZy5wcmV0dHkoYSkrIikiKX0scmVhZEJsb2NrRW5kT2ZDZW50cmFsOmZ1bmN0aW9uKCl7dGhpcy5kaXNrTnVtYmVyPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5kaXNrV2l0aENlbnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclJlY29yZHNPblRoaXNEaXNrPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksdGhpcy5jZW50cmFsRGlyUmVjb3Jkcz10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuY2VudHJhbERpclNpemU9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmNlbnRyYWxEaXJPZmZzZXQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLnppcENvbW1lbnRMZW5ndGg9dGhpcy5yZWFkZXIucmVhZEludCgyKSx0aGlzLnppcENvbW1lbnQ9dGhpcy5yZWFkZXIucmVhZFN0cmluZyh0aGlzLnppcENvbW1lbnRMZW5ndGgpLHRoaXMuemlwQ29tbWVudD1rLnV0ZjhkZWNvZGUodGhpcy56aXBDb21tZW50KX0scmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWw6ZnVuY3Rpb24oKXt0aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZT10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMudmVyc2lvbk1hZGVCeT10aGlzLnJlYWRlci5yZWFkU3RyaW5nKDIpLHRoaXMudmVyc2lvbk5lZWRlZD10aGlzLnJlYWRlci5yZWFkSW50KDIpLHRoaXMuZGlza051bWJlcj10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMuZGlza1dpdGhDZW50cmFsRGlyU3RhcnQ9dGhpcy5yZWFkZXIucmVhZEludCg0KSx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzT25UaGlzRGlzaz10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuY2VudHJhbERpclJlY29yZHM9dGhpcy5yZWFkZXIucmVhZEludCg4KSx0aGlzLmNlbnRyYWxEaXJTaXplPXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy5jZW50cmFsRGlyT2Zmc2V0PXRoaXMucmVhZGVyLnJlYWRJbnQoOCksdGhpcy56aXA2NEV4dGVuc2libGVEYXRhPXt9O2Zvcih2YXIgYSxiLGMsZD10aGlzLnppcDY0RW5kT2ZDZW50cmFsU2l6ZS00NCxlPTA7ZD5lOylhPXRoaXMucmVhZGVyLnJlYWRJbnQoMiksYj10aGlzLnJlYWRlci5yZWFkSW50KDQpLGM9dGhpcy5yZWFkZXIucmVhZFN0cmluZyhiKSx0aGlzLnppcDY0RXh0ZW5zaWJsZURhdGFbYV09e2lkOmEsbGVuZ3RoOmIsdmFsdWU6Y319LHJlYWRCbG9ja1ppcDY0RW5kT2ZDZW50cmFsTG9jYXRvcjpmdW5jdGlvbigpe2lmKHRoaXMuZGlza1dpdGhaaXA2NENlbnRyYWxEaXJTdGFydD10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMucmVsYXRpdmVPZmZzZXRFbmRPZlppcDY0Q2VudHJhbERpcj10aGlzLnJlYWRlci5yZWFkSW50KDgpLHRoaXMuZGlza3NDb3VudD10aGlzLnJlYWRlci5yZWFkSW50KDQpLHRoaXMuZGlza3NDb3VudD4xKXRocm93IG5ldyBFcnJvcigiTXVsdGktdm9sdW1lcyB6aXAgYXJlIG5vdCBzdXBwb3J0ZWQiKX0scmVhZExvY2FsRmlsZXM6ZnVuY3Rpb24oKXt2YXIgYSxiO2ZvcihhPTA7YTx0aGlzLmZpbGVzLmxlbmd0aDthKyspYj10aGlzLmZpbGVzW2FdLHRoaXMucmVhZGVyLnNldEluZGV4KGIubG9jYWxIZWFkZXJPZmZzZXQpLHRoaXMuY2hlY2tTaWduYXR1cmUoaC5MT0NBTF9GSUxFX0hFQURFUiksYi5yZWFkTG9jYWxQYXJ0KHRoaXMucmVhZGVyKSxiLmhhbmRsZVVURjgoKSxiLnByb2Nlc3NBdHRyaWJ1dGVzKCl9LHJlYWRDZW50cmFsRGlyOmZ1bmN0aW9uKCl7dmFyIGE7Zm9yKHRoaXMucmVhZGVyLnNldEluZGV4KHRoaXMuY2VudHJhbERpck9mZnNldCk7dGhpcy5yZWFkZXIucmVhZFN0cmluZyg0KT09PWguQ0VOVFJBTF9GSUxFX0hFQURFUjspYT1uZXcgaSh7emlwNjQ6dGhpcy56aXA2NH0sdGhpcy5sb2FkT3B0aW9ucyksYS5yZWFkQ2VudHJhbFBhcnQodGhpcy5yZWFkZXIpLHRoaXMuZmlsZXMucHVzaChhKX0scmVhZEVuZE9mQ2VudHJhbDpmdW5jdGlvbigpe3ZhciBhPXRoaXMucmVhZGVyLmxhc3RJbmRleE9mU2lnbmF0dXJlKGguQ0VOVFJBTF9ESVJFQ1RPUllfRU5EKTtpZigtMT09PWEpe3ZhciBiPSEwO3RyeXt0aGlzLnJlYWRlci5zZXRJbmRleCgwKSx0aGlzLmNoZWNrU2lnbmF0dXJlKGguTE9DQUxfRklMRV9IRUFERVIpLGI9ITF9Y2F0Y2goYyl7fXRocm93IG5ldyBFcnJvcihiPyJDYW4ndCBmaW5kIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSA6IGlzIHRoaXMgYSB6aXAgZmlsZSA/IElmIGl0IGlzLCBzZWUgaHR0cDovL3N0dWsuZ2l0aHViLmlvL2pzemlwL2RvY3VtZW50YXRpb24vaG93dG8vcmVhZF96aXAuaHRtbCI6IkNvcnJ1cHRlZCB6aXAgOiBjYW4ndCBmaW5kIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSIpfWlmKHRoaXMucmVhZGVyLnNldEluZGV4KGEpLHRoaXMuY2hlY2tTaWduYXR1cmUoaC5DRU5UUkFMX0RJUkVDVE9SWV9FTkQpLHRoaXMucmVhZEJsb2NrRW5kT2ZDZW50cmFsKCksdGhpcy5kaXNrTnVtYmVyPT09Zy5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmRpc2tXaXRoQ2VudHJhbERpclN0YXJ0PT09Zy5NQVhfVkFMVUVfMTZCSVRTfHx0aGlzLmNlbnRyYWxEaXJSZWNvcmRzT25UaGlzRGlzaz09PWcuTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5jZW50cmFsRGlyUmVjb3Jkcz09PWcuTUFYX1ZBTFVFXzE2QklUU3x8dGhpcy5jZW50cmFsRGlyU2l6ZT09PWcuTUFYX1ZBTFVFXzMyQklUU3x8dGhpcy5jZW50cmFsRGlyT2Zmc2V0PT09Zy5NQVhfVkFMVUVfMzJCSVRTKXtpZih0aGlzLnppcDY0PSEwLGE9dGhpcy5yZWFkZXIubGFzdEluZGV4T2ZTaWduYXR1cmUoaC5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9MT0NBVE9SKSwtMT09PWEpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIDogY2FuJ3QgZmluZCB0aGUgWklQNjQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IGxvY2F0b3IiKTt0aGlzLnJlYWRlci5zZXRJbmRleChhKSx0aGlzLmNoZWNrU2lnbmF0dXJlKGguWklQNjRfQ0VOVFJBTF9ESVJFQ1RPUllfTE9DQVRPUiksdGhpcy5yZWFkQmxvY2taaXA2NEVuZE9mQ2VudHJhbExvY2F0b3IoKSx0aGlzLnJlYWRlci5zZXRJbmRleCh0aGlzLnJlbGF0aXZlT2Zmc2V0RW5kT2ZaaXA2NENlbnRyYWxEaXIpLHRoaXMuY2hlY2tTaWduYXR1cmUoaC5aSVA2NF9DRU5UUkFMX0RJUkVDVE9SWV9FTkQpLHRoaXMucmVhZEJsb2NrWmlwNjRFbmRPZkNlbnRyYWwoKX19LHByZXBhcmVSZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGI9Zy5nZXRUeXBlT2YoYSk7dGhpcy5yZWFkZXI9InN0cmluZyIhPT1ifHxqLnVpbnQ4YXJyYXk/Im5vZGVidWZmZXIiPT09Yj9uZXcgZShhKTpuZXcgZihnLnRyYW5zZm9ybVRvKCJ1aW50OGFycmF5IixhKSk6bmV3IGQoYSx0aGlzLmxvYWRPcHRpb25zLm9wdGltaXplZEJpbmFyeVN0cmluZyl9LGxvYWQ6ZnVuY3Rpb24oYSl7dGhpcy5wcmVwYXJlUmVhZGVyKGEpLHRoaXMucmVhZEVuZE9mQ2VudHJhbCgpLHRoaXMucmVhZENlbnRyYWxEaXIoKSx0aGlzLnJlYWRMb2NhbEZpbGVzKCl9fSxiLmV4cG9ydHM9Y30seyIuL25vZGVCdWZmZXJSZWFkZXIiOjEyLCIuL29iamVjdCI6MTMsIi4vc2lnbmF0dXJlIjoxNCwiLi9zdHJpbmdSZWFkZXIiOjE1LCIuL3N1cHBvcnQiOjE3LCIuL3VpbnQ4QXJyYXlSZWFkZXIiOjE4LCIuL3V0aWxzIjoyMSwiLi96aXBFbnRyeSI6MjN9XSwyMzpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhhLGIpe3RoaXMub3B0aW9ucz1hLHRoaXMubG9hZE9wdGlvbnM9Yn12YXIgZD1hKCIuL3N0cmluZ1JlYWRlciIpLGU9YSgiLi91dGlscyIpLGY9YSgiLi9jb21wcmVzc2VkT2JqZWN0IiksZz1hKCIuL29iamVjdCIpLGg9MCxpPTM7Yy5wcm90b3R5cGU9e2lzRW5jcnlwdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIDE9PT0oMSZ0aGlzLmJpdEZsYWcpfSx1c2VVVEY4OmZ1bmN0aW9uKCl7cmV0dXJuIDIwNDg9PT0oMjA0OCZ0aGlzLmJpdEZsYWcpfSxwcmVwYXJlQ29tcHJlc3NlZENvbnRlbnQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbigpe3ZhciBkPWEuaW5kZXg7YS5zZXRJbmRleChiKTt2YXIgZT1hLnJlYWREYXRhKGMpO3JldHVybiBhLnNldEluZGV4KGQpLGV9fSxwcmVwYXJlQ29udGVudDpmdW5jdGlvbihhLGIsYyxkLGYpe3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWUudHJhbnNmb3JtVG8oZC51bmNvbXByZXNzSW5wdXRUeXBlLHRoaXMuZ2V0Q29tcHJlc3NlZENvbnRlbnQoKSksYj1kLnVuY29tcHJlc3MoYSk7aWYoYi5sZW5ndGghPT1mKXRocm93IG5ldyBFcnJvcigiQnVnIDogdW5jb21wcmVzc2VkIGRhdGEgc2l6ZSBtaXNtYXRjaCIpO3JldHVybiBifX0scmVhZExvY2FsUGFydDpmdW5jdGlvbihhKXt2YXIgYixjO2lmKGEuc2tpcCgyMiksdGhpcy5maWxlTmFtZUxlbmd0aD1hLnJlYWRJbnQoMiksYz1hLnJlYWRJbnQoMiksdGhpcy5maWxlTmFtZT1hLnJlYWRTdHJpbmcodGhpcy5maWxlTmFtZUxlbmd0aCksYS5za2lwKGMpLC0xPT10aGlzLmNvbXByZXNzZWRTaXplfHwtMT09dGhpcy51bmNvbXByZXNzZWRTaXplKXRocm93IG5ldyBFcnJvcigiQnVnIG9yIGNvcnJ1cHRlZCB6aXAgOiBkaWRuJ3QgZ2V0IGVub3VnaCBpbmZvcm1hdGlvbnMgZnJvbSB0aGUgY2VudHJhbCBkaXJlY3RvcnkgKGNvbXByZXNzZWRTaXplID09IC0xIHx8IHVuY29tcHJlc3NlZFNpemUgPT0gLTEpIik7aWYoYj1lLmZpbmRDb21wcmVzc2lvbih0aGlzLmNvbXByZXNzaW9uTWV0aG9kKSxudWxsPT09Yil0aHJvdyBuZXcgRXJyb3IoIkNvcnJ1cHRlZCB6aXAgOiBjb21wcmVzc2lvbiAiK2UucHJldHR5KHRoaXMuY29tcHJlc3Npb25NZXRob2QpKyIgdW5rbm93biAoaW5uZXIgZmlsZSA6ICIrdGhpcy5maWxlTmFtZSsiKSIpO2lmKHRoaXMuZGVjb21wcmVzc2VkPW5ldyBmLHRoaXMuZGVjb21wcmVzc2VkLmNvbXByZXNzZWRTaXplPXRoaXMuY29tcHJlc3NlZFNpemUsdGhpcy5kZWNvbXByZXNzZWQudW5jb21wcmVzc2VkU2l6ZT10aGlzLnVuY29tcHJlc3NlZFNpemUsdGhpcy5kZWNvbXByZXNzZWQuY3JjMzI9dGhpcy5jcmMzMix0aGlzLmRlY29tcHJlc3NlZC5jb21wcmVzc2lvbk1ldGhvZD10aGlzLmNvbXByZXNzaW9uTWV0aG9kLHRoaXMuZGVjb21wcmVzc2VkLmdldENvbXByZXNzZWRDb250ZW50PXRoaXMucHJlcGFyZUNvbXByZXNzZWRDb250ZW50KGEsYS5pbmRleCx0aGlzLmNvbXByZXNzZWRTaXplLGIpLHRoaXMuZGVjb21wcmVzc2VkLmdldENvbnRlbnQ9dGhpcy5wcmVwYXJlQ29udGVudChhLGEuaW5kZXgsdGhpcy5jb21wcmVzc2VkU2l6ZSxiLHRoaXMudW5jb21wcmVzc2VkU2l6ZSksdGhpcy5sb2FkT3B0aW9ucy5jaGVja0NSQzMyJiYodGhpcy5kZWNvbXByZXNzZWQ9ZS50cmFuc2Zvcm1Ubygic3RyaW5nIix0aGlzLmRlY29tcHJlc3NlZC5nZXRDb250ZW50KCkpLGcuY3JjMzIodGhpcy5kZWNvbXByZXNzZWQpIT09dGhpcy5jcmMzMikpdGhyb3cgbmV3IEVycm9yKCJDb3JydXB0ZWQgemlwIDogQ1JDMzIgbWlzbWF0Y2giKX0scmVhZENlbnRyYWxQYXJ0OmZ1bmN0aW9uKGEpe2lmKHRoaXMudmVyc2lvbk1hZGVCeT1hLnJlYWRJbnQoMiksdGhpcy52ZXJzaW9uTmVlZGVkPWEucmVhZEludCgyKSx0aGlzLmJpdEZsYWc9YS5yZWFkSW50KDIpLHRoaXMuY29tcHJlc3Npb25NZXRob2Q9YS5yZWFkU3RyaW5nKDIpLHRoaXMuZGF0ZT1hLnJlYWREYXRlKCksdGhpcy5jcmMzMj1hLnJlYWRJbnQoNCksdGhpcy5jb21wcmVzc2VkU2l6ZT1hLnJlYWRJbnQoNCksdGhpcy51bmNvbXByZXNzZWRTaXplPWEucmVhZEludCg0KSx0aGlzLmZpbGVOYW1lTGVuZ3RoPWEucmVhZEludCgyKSx0aGlzLmV4dHJhRmllbGRzTGVuZ3RoPWEucmVhZEludCgyKSx0aGlzLmZpbGVDb21tZW50TGVuZ3RoPWEucmVhZEludCgyKSx0aGlzLmRpc2tOdW1iZXJTdGFydD1hLnJlYWRJbnQoMiksdGhpcy5pbnRlcm5hbEZpbGVBdHRyaWJ1dGVzPWEucmVhZEludCgyKSx0aGlzLmV4dGVybmFsRmlsZUF0dHJpYnV0ZXM9YS5yZWFkSW50KDQpLHRoaXMubG9jYWxIZWFkZXJPZmZzZXQ9YS5yZWFkSW50KDQpLHRoaXMuaXNFbmNyeXB0ZWQoKSl0aHJvdyBuZXcgRXJyb3IoIkVuY3J5cHRlZCB6aXAgYXJlIG5vdCBzdXBwb3J0ZWQiKTt0aGlzLmZpbGVOYW1lPWEucmVhZFN0cmluZyh0aGlzLmZpbGVOYW1lTGVuZ3RoKSx0aGlzLnJlYWRFeHRyYUZpZWxkcyhhKSx0aGlzLnBhcnNlWklQNjRFeHRyYUZpZWxkKGEpLHRoaXMuZmlsZUNvbW1lbnQ9YS5yZWFkU3RyaW5nKHRoaXMuZmlsZUNvbW1lbnRMZW5ndGgpfSxwcm9jZXNzQXR0cmlidXRlczpmdW5jdGlvbigpe3RoaXMudW5peFBlcm1pc3Npb25zPW51bGwsdGhpcy5kb3NQZXJtaXNzaW9ucz1udWxsO3ZhciBhPXRoaXMudmVyc2lvbk1hZGVCeT4+ODt0aGlzLmRpcj0xNiZ0aGlzLmV4dGVybmFsRmlsZUF0dHJpYnV0ZXM/ITA6ITEsYT09PWgmJih0aGlzLmRvc1Blcm1pc3Npb25zPTYzJnRoaXMuZXh0ZXJuYWxGaWxlQXR0cmlidXRlcyksYT09PWkmJih0aGlzLnVuaXhQZXJtaXNzaW9ucz10aGlzLmV4dGVybmFsRmlsZUF0dHJpYnV0ZXM+PjE2JjY1NTM1KSx0aGlzLmRpcnx8Ii8iIT09dGhpcy5maWxlTmFtZS5zbGljZSgtMSl8fCh0aGlzLmRpcj0hMCl9LHBhcnNlWklQNjRFeHRyYUZpZWxkOmZ1bmN0aW9uKCl7aWYodGhpcy5leHRyYUZpZWxkc1sxXSl7dmFyIGE9bmV3IGQodGhpcy5leHRyYUZpZWxkc1sxXS52YWx1ZSk7dGhpcy51bmNvbXByZXNzZWRTaXplPT09ZS5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy51bmNvbXByZXNzZWRTaXplPWEucmVhZEludCg4KSksdGhpcy5jb21wcmVzc2VkU2l6ZT09PWUuTUFYX1ZBTFVFXzMyQklUUyYmKHRoaXMuY29tcHJlc3NlZFNpemU9YS5yZWFkSW50KDgpKSx0aGlzLmxvY2FsSGVhZGVyT2Zmc2V0PT09ZS5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5sb2NhbEhlYWRlck9mZnNldD1hLnJlYWRJbnQoOCkpLHRoaXMuZGlza051bWJlclN0YXJ0PT09ZS5NQVhfVkFMVUVfMzJCSVRTJiYodGhpcy5kaXNrTnVtYmVyU3RhcnQ9YS5yZWFkSW50KDQpKX19LHJlYWRFeHRyYUZpZWxkczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT1hLmluZGV4O2Zvcih0aGlzLmV4dHJhRmllbGRzPXRoaXMuZXh0cmFGaWVsZHN8fHt9O2EuaW5kZXg8ZSt0aGlzLmV4dHJhRmllbGRzTGVuZ3RoOyliPWEucmVhZEludCgyKSxjPWEucmVhZEludCgyKSxkPWEucmVhZFN0cmluZyhjKSx0aGlzLmV4dHJhRmllbGRzW2JdPXtpZDpiLGxlbmd0aDpjLHZhbHVlOmR9fSxoYW5kbGVVVEY4OmZ1bmN0aW9uKCl7aWYodGhpcy51c2VVVEY4KCkpdGhpcy5maWxlTmFtZT1nLnV0ZjhkZWNvZGUodGhpcy5maWxlTmFtZSksdGhpcy5maWxlQ29tbWVudD1nLnV0ZjhkZWNvZGUodGhpcy5maWxlQ29tbWVudCk7ZWxzZXt2YXIgYT10aGlzLmZpbmRFeHRyYUZpZWxkVW5pY29kZVBhdGgoKTtudWxsIT09YSYmKHRoaXMuZmlsZU5hbWU9YSk7dmFyIGI9dGhpcy5maW5kRXh0cmFGaWVsZFVuaWNvZGVDb21tZW50KCk7bnVsbCE9PWImJih0aGlzLmZpbGVDb21tZW50PWIpfX0sZmluZEV4dHJhRmllbGRVbmljb2RlUGF0aDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZXh0cmFGaWVsZHNbMjg3ODldO2lmKGEpe3ZhciBiPW5ldyBkKGEudmFsdWUpO3JldHVybiAxIT09Yi5yZWFkSW50KDEpP251bGw6Zy5jcmMzMih0aGlzLmZpbGVOYW1lKSE9PWIucmVhZEludCg0KT9udWxsOmcudXRmOGRlY29kZShiLnJlYWRTdHJpbmcoYS5sZW5ndGgtNSkpCn1yZXR1cm4gbnVsbH0sZmluZEV4dHJhRmllbGRVbmljb2RlQ29tbWVudDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZXh0cmFGaWVsZHNbMjU0NjFdO2lmKGEpe3ZhciBiPW5ldyBkKGEudmFsdWUpO3JldHVybiAxIT09Yi5yZWFkSW50KDEpP251bGw6Zy5jcmMzMih0aGlzLmZpbGVDb21tZW50KSE9PWIucmVhZEludCg0KT9udWxsOmcudXRmOGRlY29kZShiLnJlYWRTdHJpbmcoYS5sZW5ndGgtNSkpfXJldHVybiBudWxsfX0sYi5leHBvcnRzPWN9LHsiLi9jb21wcmVzc2VkT2JqZWN0IjoyLCIuL29iamVjdCI6MTMsIi4vc3RyaW5nUmVhZGVyIjoxNSwiLi91dGlscyI6MjF9XSwyNDpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9YSgiLi9saWIvdXRpbHMvY29tbW9uIikuYXNzaWduLGQ9YSgiLi9saWIvZGVmbGF0ZSIpLGU9YSgiLi9saWIvaW5mbGF0ZSIpLGY9YSgiLi9saWIvemxpYi9jb25zdGFudHMiKSxnPXt9O2MoZyxkLGUsZiksYi5leHBvcnRzPWd9LHsiLi9saWIvZGVmbGF0ZSI6MjUsIi4vbGliL2luZmxhdGUiOjI2LCIuL2xpYi91dGlscy9jb21tb24iOjI3LCIuL2xpYi96bGliL2NvbnN0YW50cyI6MzB9XSwyNTpbZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEsYil7dmFyIGM9bmV3IHMoYik7aWYoYy5wdXNoKGEsITApLGMuZXJyKXRocm93IGMubXNnO3JldHVybiBjLnJlc3VsdH1mdW5jdGlvbiBlKGEsYil7cmV0dXJuIGI9Ynx8e30sYi5yYXc9ITAsZChhLGIpfWZ1bmN0aW9uIGYoYSxiKXtyZXR1cm4gYj1ifHx7fSxiLmd6aXA9ITAsZChhLGIpfXZhciBnPWEoIi4vemxpYi9kZWZsYXRlLmpzIiksaD1hKCIuL3V0aWxzL2NvbW1vbiIpLGk9YSgiLi91dGlscy9zdHJpbmdzIiksaj1hKCIuL3psaWIvbWVzc2FnZXMiKSxrPWEoIi4vemxpYi96c3RyZWFtIiksbD0wLG09NCxuPTAsbz0xLHA9LTEscT0wLHI9OCxzPWZ1bmN0aW9uKGEpe3RoaXMub3B0aW9ucz1oLmFzc2lnbih7bGV2ZWw6cCxtZXRob2Q6cixjaHVua1NpemU6MTYzODQsd2luZG93Qml0czoxNSxtZW1MZXZlbDo4LHN0cmF0ZWd5OnEsdG86IiJ9LGF8fHt9KTt2YXIgYj10aGlzLm9wdGlvbnM7Yi5yYXcmJmIud2luZG93Qml0cz4wP2Iud2luZG93Qml0cz0tYi53aW5kb3dCaXRzOmIuZ3ppcCYmYi53aW5kb3dCaXRzPjAmJmIud2luZG93Qml0czwxNiYmKGIud2luZG93Qml0cys9MTYpLHRoaXMuZXJyPTAsdGhpcy5tc2c9IiIsdGhpcy5lbmRlZD0hMSx0aGlzLmNodW5rcz1bXSx0aGlzLnN0cm09bmV3IGssdGhpcy5zdHJtLmF2YWlsX291dD0wO3ZhciBjPWcuZGVmbGF0ZUluaXQyKHRoaXMuc3RybSxiLmxldmVsLGIubWV0aG9kLGIud2luZG93Qml0cyxiLm1lbUxldmVsLGIuc3RyYXRlZ3kpO2lmKGMhPT1uKXRocm93IG5ldyBFcnJvcihqW2NdKTtiLmhlYWRlciYmZy5kZWZsYXRlU2V0SGVhZGVyKHRoaXMuc3RybSxiLmhlYWRlcil9O3MucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9dGhpcy5zdHJtLGY9dGhpcy5vcHRpb25zLmNodW5rU2l6ZTtpZih0aGlzLmVuZGVkKXJldHVybiExO2Q9Yj09PX5+Yj9iOmI9PT0hMD9tOmwsZS5pbnB1dD0ic3RyaW5nIj09dHlwZW9mIGE/aS5zdHJpbmcyYnVmKGEpOmEsZS5uZXh0X2luPTAsZS5hdmFpbF9pbj1lLmlucHV0Lmxlbmd0aDtkb3tpZigwPT09ZS5hdmFpbF9vdXQmJihlLm91dHB1dD1uZXcgaC5CdWY4KGYpLGUubmV4dF9vdXQ9MCxlLmF2YWlsX291dD1mKSxjPWcuZGVmbGF0ZShlLGQpLGMhPT1vJiZjIT09bilyZXR1cm4gdGhpcy5vbkVuZChjKSx0aGlzLmVuZGVkPSEwLCExOygwPT09ZS5hdmFpbF9vdXR8fDA9PT1lLmF2YWlsX2luJiZkPT09bSkmJnRoaXMub25EYXRhKCJzdHJpbmciPT09dGhpcy5vcHRpb25zLnRvP2kuYnVmMmJpbnN0cmluZyhoLnNocmlua0J1ZihlLm91dHB1dCxlLm5leHRfb3V0KSk6aC5zaHJpbmtCdWYoZS5vdXRwdXQsZS5uZXh0X291dCkpfXdoaWxlKChlLmF2YWlsX2luPjB8fDA9PT1lLmF2YWlsX291dCkmJmMhPT1vKTtyZXR1cm4gZD09PW0/KGM9Zy5kZWZsYXRlRW5kKHRoaXMuc3RybSksdGhpcy5vbkVuZChjKSx0aGlzLmVuZGVkPSEwLGM9PT1uKTohMH0scy5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKGEpe3RoaXMuY2h1bmtzLnB1c2goYSl9LHMucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKGEpe2E9PT1uJiYodGhpcy5yZXN1bHQ9InN0cmluZyI9PT10aGlzLm9wdGlvbnMudG8/dGhpcy5jaHVua3Muam9pbigiIik6aC5mbGF0dGVuQ2h1bmtzKHRoaXMuY2h1bmtzKSksdGhpcy5jaHVua3M9W10sdGhpcy5lcnI9YSx0aGlzLm1zZz10aGlzLnN0cm0ubXNnfSxjLkRlZmxhdGU9cyxjLmRlZmxhdGU9ZCxjLmRlZmxhdGVSYXc9ZSxjLmd6aXA9Zn0seyIuL3V0aWxzL2NvbW1vbiI6MjcsIi4vdXRpbHMvc3RyaW5ncyI6MjgsIi4vemxpYi9kZWZsYXRlLmpzIjozMiwiLi96bGliL21lc3NhZ2VzIjozNywiLi96bGliL3pzdHJlYW0iOjM5fV0sMjY6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIpe3ZhciBjPW5ldyBtKGIpO2lmKGMucHVzaChhLCEwKSxjLmVycil0aHJvdyBjLm1zZztyZXR1cm4gYy5yZXN1bHR9ZnVuY3Rpb24gZShhLGIpe3JldHVybiBiPWJ8fHt9LGIucmF3PSEwLGQoYSxiKX12YXIgZj1hKCIuL3psaWIvaW5mbGF0ZS5qcyIpLGc9YSgiLi91dGlscy9jb21tb24iKSxoPWEoIi4vdXRpbHMvc3RyaW5ncyIpLGk9YSgiLi96bGliL2NvbnN0YW50cyIpLGo9YSgiLi96bGliL21lc3NhZ2VzIiksaz1hKCIuL3psaWIvenN0cmVhbSIpLGw9YSgiLi96bGliL2d6aGVhZGVyIiksbT1mdW5jdGlvbihhKXt0aGlzLm9wdGlvbnM9Zy5hc3NpZ24oe2NodW5rU2l6ZToxNjM4NCx3aW5kb3dCaXRzOjAsdG86IiJ9LGF8fHt9KTt2YXIgYj10aGlzLm9wdGlvbnM7Yi5yYXcmJmIud2luZG93Qml0cz49MCYmYi53aW5kb3dCaXRzPDE2JiYoYi53aW5kb3dCaXRzPS1iLndpbmRvd0JpdHMsMD09PWIud2luZG93Qml0cyYmKGIud2luZG93Qml0cz0tMTUpKSwhKGIud2luZG93Qml0cz49MCYmYi53aW5kb3dCaXRzPDE2KXx8YSYmYS53aW5kb3dCaXRzfHwoYi53aW5kb3dCaXRzKz0zMiksYi53aW5kb3dCaXRzPjE1JiZiLndpbmRvd0JpdHM8NDgmJjA9PT0oMTUmYi53aW5kb3dCaXRzKSYmKGIud2luZG93Qml0c3w9MTUpLHRoaXMuZXJyPTAsdGhpcy5tc2c9IiIsdGhpcy5lbmRlZD0hMSx0aGlzLmNodW5rcz1bXSx0aGlzLnN0cm09bmV3IGssdGhpcy5zdHJtLmF2YWlsX291dD0wO3ZhciBjPWYuaW5mbGF0ZUluaXQyKHRoaXMuc3RybSxiLndpbmRvd0JpdHMpO2lmKGMhPT1pLlpfT0spdGhyb3cgbmV3IEVycm9yKGpbY10pO3RoaXMuaGVhZGVyPW5ldyBsLGYuaW5mbGF0ZUdldEhlYWRlcih0aGlzLnN0cm0sdGhpcy5oZWFkZXIpfTttLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGosayxsPXRoaXMuc3RybSxtPXRoaXMub3B0aW9ucy5jaHVua1NpemU7aWYodGhpcy5lbmRlZClyZXR1cm4hMTtkPWI9PT1+fmI/YjpiPT09ITA/aS5aX0ZJTklTSDppLlpfTk9fRkxVU0gsbC5pbnB1dD0ic3RyaW5nIj09dHlwZW9mIGE/aC5iaW5zdHJpbmcyYnVmKGEpOmEsbC5uZXh0X2luPTAsbC5hdmFpbF9pbj1sLmlucHV0Lmxlbmd0aDtkb3tpZigwPT09bC5hdmFpbF9vdXQmJihsLm91dHB1dD1uZXcgZy5CdWY4KG0pLGwubmV4dF9vdXQ9MCxsLmF2YWlsX291dD1tKSxjPWYuaW5mbGF0ZShsLGkuWl9OT19GTFVTSCksYyE9PWkuWl9TVFJFQU1fRU5EJiZjIT09aS5aX09LKXJldHVybiB0aGlzLm9uRW5kKGMpLHRoaXMuZW5kZWQ9ITAsITE7bC5uZXh0X291dCYmKDA9PT1sLmF2YWlsX291dHx8Yz09PWkuWl9TVFJFQU1fRU5EfHwwPT09bC5hdmFpbF9pbiYmZD09PWkuWl9GSU5JU0gpJiYoInN0cmluZyI9PT10aGlzLm9wdGlvbnMudG8/KGU9aC51dGY4Ym9yZGVyKGwub3V0cHV0LGwubmV4dF9vdXQpLGo9bC5uZXh0X291dC1lLGs9aC5idWYyc3RyaW5nKGwub3V0cHV0LGUpLGwubmV4dF9vdXQ9aixsLmF2YWlsX291dD1tLWosaiYmZy5hcnJheVNldChsLm91dHB1dCxsLm91dHB1dCxlLGosMCksdGhpcy5vbkRhdGEoaykpOnRoaXMub25EYXRhKGcuc2hyaW5rQnVmKGwub3V0cHV0LGwubmV4dF9vdXQpKSl9d2hpbGUobC5hdmFpbF9pbj4wJiZjIT09aS5aX1NUUkVBTV9FTkQpO3JldHVybiBjPT09aS5aX1NUUkVBTV9FTkQmJihkPWkuWl9GSU5JU0gpLGQ9PT1pLlpfRklOSVNIPyhjPWYuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pLHRoaXMub25FbmQoYyksdGhpcy5lbmRlZD0hMCxjPT09aS5aX09LKTohMH0sbS5wcm90b3R5cGUub25EYXRhPWZ1bmN0aW9uKGEpe3RoaXMuY2h1bmtzLnB1c2goYSl9LG0ucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKGEpe2E9PT1pLlpfT0smJih0aGlzLnJlc3VsdD0ic3RyaW5nIj09PXRoaXMub3B0aW9ucy50bz90aGlzLmNodW5rcy5qb2luKCIiKTpnLmZsYXR0ZW5DaHVua3ModGhpcy5jaHVua3MpKSx0aGlzLmNodW5rcz1bXSx0aGlzLmVycj1hLHRoaXMubXNnPXRoaXMuc3RybS5tc2d9LGMuSW5mbGF0ZT1tLGMuaW5mbGF0ZT1kLGMuaW5mbGF0ZVJhdz1lLGMudW5nemlwPWR9LHsiLi91dGlscy9jb21tb24iOjI3LCIuL3V0aWxzL3N0cmluZ3MiOjI4LCIuL3psaWIvY29uc3RhbnRzIjozMCwiLi96bGliL2d6aGVhZGVyIjozMywiLi96bGliL2luZmxhdGUuanMiOjM1LCIuL3psaWIvbWVzc2FnZXMiOjM3LCIuL3psaWIvenN0cmVhbSI6Mzl9XSwyNzpbZnVuY3Rpb24oYSxiLGMpeyJ1c2Ugc3RyaWN0Ijt2YXIgZD0idW5kZWZpbmVkIiE9dHlwZW9mIFVpbnQ4QXJyYXkmJiJ1bmRlZmluZWQiIT10eXBlb2YgVWludDE2QXJyYXkmJiJ1bmRlZmluZWQiIT10eXBlb2YgSW50MzJBcnJheTtjLmFzc2lnbj1mdW5jdGlvbihhKXtmb3IodmFyIGI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2IubGVuZ3RoOyl7dmFyIGM9Yi5zaGlmdCgpO2lmKGMpe2lmKCJvYmplY3QiIT10eXBlb2YgYyl0aHJvdyBuZXcgVHlwZUVycm9yKGMrIm11c3QgYmUgbm9uLW9iamVjdCIpO2Zvcih2YXIgZCBpbiBjKWMuaGFzT3duUHJvcGVydHkoZCkmJihhW2RdPWNbZF0pfX1yZXR1cm4gYX0sYy5zaHJpbmtCdWY9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5sZW5ndGg9PT1iP2E6YS5zdWJhcnJheT9hLnN1YmFycmF5KDAsYik6KGEubGVuZ3RoPWIsYSl9O3ZhciBlPXthcnJheVNldDpmdW5jdGlvbihhLGIsYyxkLGUpe2lmKGIuc3ViYXJyYXkmJmEuc3ViYXJyYXkpcmV0dXJuIHZvaWQgYS5zZXQoYi5zdWJhcnJheShjLGMrZCksZSk7Zm9yKHZhciBmPTA7ZD5mO2YrKylhW2UrZl09YltjK2ZdfSxmbGF0dGVuQ2h1bmtzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZztmb3IoZD0wLGI9MCxjPWEubGVuZ3RoO2M+YjtiKyspZCs9YVtiXS5sZW5ndGg7Zm9yKGc9bmV3IFVpbnQ4QXJyYXkoZCksZT0wLGI9MCxjPWEubGVuZ3RoO2M+YjtiKyspZj1hW2JdLGcuc2V0KGYsZSksZSs9Zi5sZW5ndGg7cmV0dXJuIGd9fSxmPXthcnJheVNldDpmdW5jdGlvbihhLGIsYyxkLGUpe2Zvcih2YXIgZj0wO2Q+ZjtmKyspYVtlK2ZdPWJbYytmXX0sZmxhdHRlbkNodW5rczpmdW5jdGlvbihhKXtyZXR1cm5bXS5jb25jYXQuYXBwbHkoW10sYSl9fTtjLnNldFR5cGVkPWZ1bmN0aW9uKGEpe2E/KGMuQnVmOD1VaW50OEFycmF5LGMuQnVmMTY9VWludDE2QXJyYXksYy5CdWYzMj1JbnQzMkFycmF5LGMuYXNzaWduKGMsZSkpOihjLkJ1Zjg9QXJyYXksYy5CdWYxNj1BcnJheSxjLkJ1ZjMyPUFycmF5LGMuYXNzaWduKGMsZikpfSxjLnNldFR5cGVkKGQpfSx7fV0sMjg6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIpe2lmKDY1NTM3PmImJihhLnN1YmFycmF5JiZnfHwhYS5zdWJhcnJheSYmZikpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxlLnNocmlua0J1ZihhLGIpKTtmb3IodmFyIGM9IiIsZD0wO2I+ZDtkKyspYys9U3RyaW5nLmZyb21DaGFyQ29kZShhW2RdKTtyZXR1cm4gY312YXIgZT1hKCIuL2NvbW1vbiIpLGY9ITAsZz0hMDt0cnl7U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLFswXSl9Y2F0Y2goaCl7Zj0hMX10cnl7U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLG5ldyBVaW50OEFycmF5KDEpKX1jYXRjaChoKXtnPSExfWZvcih2YXIgaT1uZXcgZS5CdWY4KDI1Niksaj0wOzI1Nj5qO2orKylpW2pdPWo+PTI1Mj82Omo+PTI0OD81Omo+PTI0MD80Omo+PTIyND8zOmo+PTE5Mj8yOjE7aVsyNTRdPWlbMjU0XT0xLGMuc3RyaW5nMmJ1Zj1mdW5jdGlvbihhKXt2YXIgYixjLGQsZixnLGg9YS5sZW5ndGgsaT0wO2ZvcihmPTA7aD5mO2YrKyljPWEuY2hhckNvZGVBdChmKSw1NTI5Nj09PSg2NDUxMiZjKSYmaD5mKzEmJihkPWEuY2hhckNvZGVBdChmKzEpLDU2MzIwPT09KDY0NTEyJmQpJiYoYz02NTUzNisoYy01NTI5Njw8MTApKyhkLTU2MzIwKSxmKyspKSxpKz0xMjg+Yz8xOjIwNDg+Yz8yOjY1NTM2PmM/Mzo0O2ZvcihiPW5ldyBlLkJ1ZjgoaSksZz0wLGY9MDtpPmc7ZisrKWM9YS5jaGFyQ29kZUF0KGYpLDU1Mjk2PT09KDY0NTEyJmMpJiZoPmYrMSYmKGQ9YS5jaGFyQ29kZUF0KGYrMSksNTYzMjA9PT0oNjQ1MTImZCkmJihjPTY1NTM2KyhjLTU1Mjk2PDwxMCkrKGQtNTYzMjApLGYrKykpLDEyOD5jP2JbZysrXT1jOjIwNDg+Yz8oYltnKytdPTE5MnxjPj4+NixiW2crK109MTI4fDYzJmMpOjY1NTM2PmM/KGJbZysrXT0yMjR8Yz4+PjEyLGJbZysrXT0xMjh8Yz4+PjYmNjMsYltnKytdPTEyOHw2MyZjKTooYltnKytdPTI0MHxjPj4+MTgsYltnKytdPTEyOHxjPj4+MTImNjMsYltnKytdPTEyOHxjPj4+NiY2MyxiW2crK109MTI4fDYzJmMpO3JldHVybiBifSxjLmJ1ZjJiaW5zdHJpbmc9ZnVuY3Rpb24oYSl7cmV0dXJuIGQoYSxhLmxlbmd0aCl9LGMuYmluc3RyaW5nMmJ1Zj1mdW5jdGlvbihhKXtmb3IodmFyIGI9bmV3IGUuQnVmOChhLmxlbmd0aCksYz0wLGQ9Yi5sZW5ndGg7ZD5jO2MrKyliW2NdPWEuY2hhckNvZGVBdChjKTtyZXR1cm4gYn0sYy5idWYyc3RyaW5nPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaD1ifHxhLmxlbmd0aCxqPW5ldyBBcnJheSgyKmgpO2ZvcihlPTAsYz0wO2g+YzspaWYoZj1hW2MrK10sMTI4PmYpaltlKytdPWY7ZWxzZSBpZihnPWlbZl0sZz40KWpbZSsrXT02NTUzMyxjKz1nLTE7ZWxzZXtmb3IoZiY9Mj09PWc/MzE6Mz09PWc/MTU6NztnPjEmJmg+YzspZj1mPDw2fDYzJmFbYysrXSxnLS07Zz4xP2pbZSsrXT02NTUzMzo2NTUzNj5mP2pbZSsrXT1mOihmLT02NTUzNixqW2UrK109NTUyOTZ8Zj4+MTAmMTAyMyxqW2UrK109NTYzMjB8MTAyMyZmKX1yZXR1cm4gZChqLGUpfSxjLnV0Zjhib3JkZXI9ZnVuY3Rpb24oYSxiKXt2YXIgYztmb3IoYj1ifHxhLmxlbmd0aCxiPmEubGVuZ3RoJiYoYj1hLmxlbmd0aCksYz1iLTE7Yz49MCYmMTI4PT09KDE5MiZhW2NdKTspYy0tO3JldHVybiAwPmM/YjowPT09Yz9iOmMraVthW2NdXT5iP2M6Yn19LHsiLi9jb21tb24iOjI3fV0sMjk6W2Z1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoYSxiLGMsZCl7Zm9yKHZhciBlPTY1NTM1JmF8MCxmPWE+Pj4xNiY2NTUzNXwwLGc9MDswIT09Yzspe2c9Yz4yZTM/MmUzOmMsYy09ZztkbyBlPWUrYltkKytdfDAsZj1mK2V8MDt3aGlsZSgtLWcpO2UlPTY1NTIxLGYlPTY1NTIxfXJldHVybiBlfGY8PDE2fDB9Yi5leHBvcnRzPWN9LHt9XSwzMDpbZnVuY3Rpb24oYSxiKXtiLmV4cG9ydHM9e1pfTk9fRkxVU0g6MCxaX1BBUlRJQUxfRkxVU0g6MSxaX1NZTkNfRkxVU0g6MixaX0ZVTExfRkxVU0g6MyxaX0ZJTklTSDo0LFpfQkxPQ0s6NSxaX1RSRUVTOjYsWl9PSzowLFpfU1RSRUFNX0VORDoxLFpfTkVFRF9ESUNUOjIsWl9FUlJOTzotMSxaX1NUUkVBTV9FUlJPUjotMixaX0RBVEFfRVJST1I6LTMsWl9CVUZfRVJST1I6LTUsWl9OT19DT01QUkVTU0lPTjowLFpfQkVTVF9TUEVFRDoxLFpfQkVTVF9DT01QUkVTU0lPTjo5LFpfREVGQVVMVF9DT01QUkVTU0lPTjotMSxaX0ZJTFRFUkVEOjEsWl9IVUZGTUFOX09OTFk6MixaX1JMRTozLFpfRklYRUQ6NCxaX0RFRkFVTFRfU1RSQVRFR1k6MCxaX0JJTkFSWTowLFpfVEVYVDoxLFpfVU5LTk9XTjoyLFpfREVGTEFURUQ6OH19LHt9XSwzMTpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYygpe2Zvcih2YXIgYSxiPVtdLGM9MDsyNTY+YztjKyspe2E9Yztmb3IodmFyIGQ9MDs4PmQ7ZCsrKWE9MSZhPzM5ODgyOTIzODReYT4+PjE6YT4+PjE7YltjXT1hfXJldHVybiBifWZ1bmN0aW9uIGQoYSxiLGMsZCl7dmFyIGY9ZSxnPWQrYzthPS0xXmE7Zm9yKHZhciBoPWQ7Zz5oO2grKylhPWE+Pj44XmZbMjU1JihhXmJbaF0pXTtyZXR1cm4tMV5hfXZhciBlPWMoKTtiLmV4cG9ydHM9ZH0se31dLDMyOltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSxiKXtyZXR1cm4gYS5tc2c9R1tiXSxifWZ1bmN0aW9uIGUoYSl7cmV0dXJuKGE8PDEpLShhPjQ/OTowKX1mdW5jdGlvbiBmKGEpe2Zvcih2YXIgYj1hLmxlbmd0aDstLWI+PTA7KWFbYl09MH1mdW5jdGlvbiBnKGEpe3ZhciBiPWEuc3RhdGUsYz1iLnBlbmRpbmc7Yz5hLmF2YWlsX291dCYmKGM9YS5hdmFpbF9vdXQpLDAhPT1jJiYoQy5hcnJheVNldChhLm91dHB1dCxiLnBlbmRpbmdfYnVmLGIucGVuZGluZ19vdXQsYyxhLm5leHRfb3V0KSxhLm5leHRfb3V0Kz1jLGIucGVuZGluZ19vdXQrPWMsYS50b3RhbF9vdXQrPWMsYS5hdmFpbF9vdXQtPWMsYi5wZW5kaW5nLT1jLDA9PT1iLnBlbmRpbmcmJihiLnBlbmRpbmdfb3V0PTApKX1mdW5jdGlvbiBoKGEsYil7RC5fdHJfZmx1c2hfYmxvY2soYSxhLmJsb2NrX3N0YXJ0Pj0wP2EuYmxvY2tfc3RhcnQ6LTEsYS5zdHJzdGFydC1hLmJsb2NrX3N0YXJ0LGIpLGEuYmxvY2tfc3RhcnQ9YS5zdHJzdGFydCxnKGEuc3RybSl9ZnVuY3Rpb24gaShhLGIpe2EucGVuZGluZ19idWZbYS5wZW5kaW5nKytdPWJ9ZnVuY3Rpb24gaihhLGIpe2EucGVuZGluZ19idWZbYS5wZW5kaW5nKytdPWI+Pj44JjI1NSxhLnBlbmRpbmdfYnVmW2EucGVuZGluZysrXT0yNTUmYn1mdW5jdGlvbiBrKGEsYixjLGQpe3ZhciBlPWEuYXZhaWxfaW47cmV0dXJuIGU+ZCYmKGU9ZCksMD09PWU/MDooYS5hdmFpbF9pbi09ZSxDLmFycmF5U2V0KGIsYS5pbnB1dCxhLm5leHRfaW4sZSxjKSwxPT09YS5zdGF0ZS53cmFwP2EuYWRsZXI9RShhLmFkbGVyLGIsZSxjKToyPT09YS5zdGF0ZS53cmFwJiYoYS5hZGxlcj1GKGEuYWRsZXIsYixlLGMpKSxhLm5leHRfaW4rPWUsYS50b3RhbF9pbis9ZSxlKX1mdW5jdGlvbiBsKGEsYil7dmFyIGMsZCxlPWEubWF4X2NoYWluX2xlbmd0aCxmPWEuc3Ryc3RhcnQsZz1hLnByZXZfbGVuZ3RoLGg9YS5uaWNlX21hdGNoLGk9YS5zdHJzdGFydD5hLndfc2l6ZS1qYj9hLnN0cnN0YXJ0LShhLndfc2l6ZS1qYik6MCxqPWEud2luZG93LGs9YS53X21hc2ssbD1hLnByZXYsbT1hLnN0cnN0YXJ0K2liLG49altmK2ctMV0sbz1qW2YrZ107YS5wcmV2X2xlbmd0aD49YS5nb29kX21hdGNoJiYoZT4+PTIpLGg+YS5sb29rYWhlYWQmJihoPWEubG9va2FoZWFkKTtkbyBpZihjPWIsaltjK2ddPT09byYmaltjK2ctMV09PT1uJiZqW2NdPT09altmXSYmalsrK2NdPT09altmKzFdKXtmKz0yLGMrKztkbzt3aGlsZShqWysrZl09PT1qWysrY10mJmpbKytmXT09PWpbKytjXSYmalsrK2ZdPT09alsrK2NdJiZqWysrZl09PT1qWysrY10mJmpbKytmXT09PWpbKytjXSYmalsrK2ZdPT09alsrK2NdJiZqWysrZl09PT1qWysrY10mJmpbKytmXT09PWpbKytjXSYmbT5mKTtpZihkPWliLShtLWYpLGY9bS1pYixkPmcpe2lmKGEubWF0Y2hfc3RhcnQ9YixnPWQsZD49aClicmVhaztuPWpbZitnLTFdLG89altmK2ddfX13aGlsZSgoYj1sW2Ima10pPmkmJjAhPT0tLWUpO3JldHVybiBnPD1hLmxvb2thaGVhZD9nOmEubG9va2FoZWFkfWZ1bmN0aW9uIG0oYSl7dmFyIGIsYyxkLGUsZixnPWEud19zaXplO2Rve2lmKGU9YS53aW5kb3dfc2l6ZS1hLmxvb2thaGVhZC1hLnN0cnN0YXJ0LGEuc3Ryc3RhcnQ+PWcrKGctamIpKXtDLmFycmF5U2V0KGEud2luZG93LGEud2luZG93LGcsZywwKSxhLm1hdGNoX3N0YXJ0LT1nLGEuc3Ryc3RhcnQtPWcsYS5ibG9ja19zdGFydC09ZyxjPWEuaGFzaF9zaXplLGI9YztkbyBkPWEuaGVhZFstLWJdLGEuaGVhZFtiXT1kPj1nP2QtZzowO3doaWxlKC0tYyk7Yz1nLGI9YztkbyBkPWEucHJldlstLWJdLGEucHJldltiXT1kPj1nP2QtZzowO3doaWxlKC0tYyk7ZSs9Z31pZigwPT09YS5zdHJtLmF2YWlsX2luKWJyZWFrO2lmKGM9ayhhLnN0cm0sYS53aW5kb3csYS5zdHJzdGFydCthLmxvb2thaGVhZCxlKSxhLmxvb2thaGVhZCs9YyxhLmxvb2thaGVhZCthLmluc2VydD49aGIpZm9yKGY9YS5zdHJzdGFydC1hLmluc2VydCxhLmluc19oPWEud2luZG93W2ZdLGEuaW5zX2g9KGEuaW5zX2g8PGEuaGFzaF9zaGlmdF5hLndpbmRvd1tmKzFdKSZhLmhhc2hfbWFzazthLmluc2VydCYmKGEuaW5zX2g9KGEuaW5zX2g8PGEuaGFzaF9zaGlmdF5hLndpbmRvd1tmK2hiLTFdKSZhLmhhc2hfbWFzayxhLnByZXZbZiZhLndfbWFza109YS5oZWFkW2EuaW5zX2hdLGEuaGVhZFthLmluc19oXT1mLGYrKyxhLmluc2VydC0tLCEoYS5sb29rYWhlYWQrYS5pbnNlcnQ8aGIpKTspO313aGlsZShhLmxvb2thaGVhZDxqYiYmMCE9PWEuc3RybS5hdmFpbF9pbil9ZnVuY3Rpb24gbihhLGIpe3ZhciBjPTY1NTM1O2ZvcihjPmEucGVuZGluZ19idWZfc2l6ZS01JiYoYz1hLnBlbmRpbmdfYnVmX3NpemUtNSk7Oyl7aWYoYS5sb29rYWhlYWQ8PTEpe2lmKG0oYSksMD09PWEubG9va2FoZWFkJiZiPT09SClyZXR1cm4gc2I7aWYoMD09PWEubG9va2FoZWFkKWJyZWFrfWEuc3Ryc3RhcnQrPWEubG9va2FoZWFkLGEubG9va2FoZWFkPTA7dmFyIGQ9YS5ibG9ja19zdGFydCtjO2lmKCgwPT09YS5zdHJzdGFydHx8YS5zdHJzdGFydD49ZCkmJihhLmxvb2thaGVhZD1hLnN0cnN0YXJ0LWQsYS5zdHJzdGFydD1kLGgoYSwhMSksMD09PWEuc3RybS5hdmFpbF9vdXQpKXJldHVybiBzYjtpZihhLnN0cnN0YXJ0LWEuYmxvY2tfc3RhcnQ+PWEud19zaXplLWpiJiYoaChhLCExKSwwPT09YS5zdHJtLmF2YWlsX291dCkpcmV0dXJuIHNifXJldHVybiBhLmluc2VydD0wLGI9PT1LPyhoKGEsITApLDA9PT1hLnN0cm0uYXZhaWxfb3V0P3ViOnZiKTphLnN0cnN0YXJ0PmEuYmxvY2tfc3RhcnQmJihoKGEsITEpLDA9PT1hLnN0cm0uYXZhaWxfb3V0KT9zYjpzYn1mdW5jdGlvbiBvKGEsYil7Zm9yKHZhciBjLGQ7Oyl7aWYoYS5sb29rYWhlYWQ8amIpe2lmKG0oYSksYS5sb29rYWhlYWQ8amImJmI9PT1IKXJldHVybiBzYjtpZigwPT09YS5sb29rYWhlYWQpYnJlYWt9aWYoYz0wLGEubG9va2FoZWFkPj1oYiYmKGEuaW5zX2g9KGEuaW5zX2g8PGEuaGFzaF9zaGlmdF5hLndpbmRvd1thLnN0cnN0YXJ0K2hiLTFdKSZhLmhhc2hfbWFzayxjPWEucHJldlthLnN0cnN0YXJ0JmEud19tYXNrXT1hLmhlYWRbYS5pbnNfaF0sYS5oZWFkW2EuaW5zX2hdPWEuc3Ryc3RhcnQpLDAhPT1jJiZhLnN0cnN0YXJ0LWM8PWEud19zaXplLWpiJiYoYS5tYXRjaF9sZW5ndGg9bChhLGMpKSxhLm1hdGNoX2xlbmd0aD49aGIpaWYoZD1ELl90cl90YWxseShhLGEuc3Ryc3RhcnQtYS5tYXRjaF9zdGFydCxhLm1hdGNoX2xlbmd0aC1oYiksYS5sb29rYWhlYWQtPWEubWF0Y2hfbGVuZ3RoLGEubWF0Y2hfbGVuZ3RoPD1hLm1heF9sYXp5X21hdGNoJiZhLmxvb2thaGVhZD49aGIpe2EubWF0Y2hfbGVuZ3RoLS07ZG8gYS5zdHJzdGFydCsrLGEuaW5zX2g9KGEuaW5zX2g8PGEuaGFzaF9zaGlmdF5hLndpbmRvd1thLnN0cnN0YXJ0K2hiLTFdKSZhLmhhc2hfbWFzayxjPWEucHJldlthLnN0cnN0YXJ0JmEud19tYXNrXT1hLmhlYWRbYS5pbnNfaF0sYS5oZWFkW2EuaW5zX2hdPWEuc3Ryc3RhcnQ7d2hpbGUoMCE9PS0tYS5tYXRjaF9sZW5ndGgpO2Euc3Ryc3RhcnQrK31lbHNlIGEuc3Ryc3RhcnQrPWEubWF0Y2hfbGVuZ3RoLGEubWF0Y2hfbGVuZ3RoPTAsYS5pbnNfaD1hLndpbmRvd1thLnN0cnN0YXJ0XSxhLmluc19oPShhLmluc19oPDxhLmhhc2hfc2hpZnReYS53aW5kb3dbYS5zdHJzdGFydCsxXSkmYS5oYXNoX21hc2s7ZWxzZSBkPUQuX3RyX3RhbGx5KGEsMCxhLndpbmRvd1thLnN0cnN0YXJ0XSksYS5sb29rYWhlYWQtLSxhLnN0cnN0YXJ0Kys7aWYoZCYmKGgoYSwhMSksMD09PWEuc3RybS5hdmFpbF9vdXQpKXJldHVybiBzYn1yZXR1cm4gYS5pbnNlcnQ9YS5zdHJzdGFydDxoYi0xP2Euc3Ryc3RhcnQ6aGItMSxiPT09Sz8oaChhLCEwKSwwPT09YS5zdHJtLmF2YWlsX291dD91Yjp2Yik6YS5sYXN0X2xpdCYmKGgoYSwhMSksMD09PWEuc3RybS5hdmFpbF9vdXQpP3NiOnRifWZ1bmN0aW9uIHAoYSxiKXtmb3IodmFyIGMsZCxlOzspe2lmKGEubG9va2FoZWFkPGpiKXtpZihtKGEpLGEubG9va2FoZWFkPGpiJiZiPT09SClyZXR1cm4gc2I7aWYoMD09PWEubG9va2FoZWFkKWJyZWFrfWlmKGM9MCxhLmxvb2thaGVhZD49aGImJihhLmluc19oPShhLmluc19oPDxhLmhhc2hfc2hpZnReYS53aW5kb3dbYS5zdHJzdGFydCtoYi0xXSkmYS5oYXNoX21hc2ssYz1hLnByZXZbYS5zdHJzdGFydCZhLndfbWFza109YS5oZWFkW2EuaW5zX2hdLGEuaGVhZFthLmluc19oXT1hLnN0cnN0YXJ0KSxhLnByZXZfbGVuZ3RoPWEubWF0Y2hfbGVuZ3RoLGEucHJldl9tYXRjaD1hLm1hdGNoX3N0YXJ0LGEubWF0Y2hfbGVuZ3RoPWhiLTEsMCE9PWMmJmEucHJldl9sZW5ndGg8YS5tYXhfbGF6eV9tYXRjaCYmYS5zdHJzdGFydC1jPD1hLndfc2l6ZS1qYiYmKGEubWF0Y2hfbGVuZ3RoPWwoYSxjKSxhLm1hdGNoX2xlbmd0aDw9NSYmKGEuc3RyYXRlZ3k9PT1TfHxhLm1hdGNoX2xlbmd0aD09PWhiJiZhLnN0cnN0YXJ0LWEubWF0Y2hfc3RhcnQ+NDA5NikmJihhLm1hdGNoX2xlbmd0aD1oYi0xKSksYS5wcmV2X2xlbmd0aD49aGImJmEubWF0Y2hfbGVuZ3RoPD1hLnByZXZfbGVuZ3RoKXtlPWEuc3Ryc3RhcnQrYS5sb29rYWhlYWQtaGIsZD1ELl90cl90YWxseShhLGEuc3Ryc3RhcnQtMS1hLnByZXZfbWF0Y2gsYS5wcmV2X2xlbmd0aC1oYiksYS5sb29rYWhlYWQtPWEucHJldl9sZW5ndGgtMSxhLnByZXZfbGVuZ3RoLT0yO2RvKythLnN0cnN0YXJ0PD1lJiYoYS5pbnNfaD0oYS5pbnNfaDw8YS5oYXNoX3NoaWZ0XmEud2luZG93W2Euc3Ryc3RhcnQraGItMV0pJmEuaGFzaF9tYXNrLGM9YS5wcmV2W2Euc3Ryc3RhcnQmYS53X21hc2tdPWEuaGVhZFthLmluc19oXSxhLmhlYWRbYS5pbnNfaF09YS5zdHJzdGFydCk7d2hpbGUoMCE9PS0tYS5wcmV2X2xlbmd0aCk7aWYoYS5tYXRjaF9hdmFpbGFibGU9MCxhLm1hdGNoX2xlbmd0aD1oYi0xLGEuc3Ryc3RhcnQrKyxkJiYoaChhLCExKSwwPT09YS5zdHJtLmF2YWlsX291dCkpcmV0dXJuIHNifWVsc2UgaWYoYS5tYXRjaF9hdmFpbGFibGUpe2lmKGQ9RC5fdHJfdGFsbHkoYSwwLGEud2luZG93W2Euc3Ryc3RhcnQtMV0pLGQmJmgoYSwhMSksYS5zdHJzdGFydCsrLGEubG9va2FoZWFkLS0sMD09PWEuc3RybS5hdmFpbF9vdXQpcmV0dXJuIHNifWVsc2UgYS5tYXRjaF9hdmFpbGFibGU9MSxhLnN0cnN0YXJ0KyssYS5sb29rYWhlYWQtLX1yZXR1cm4gYS5tYXRjaF9hdmFpbGFibGUmJihkPUQuX3RyX3RhbGx5KGEsMCxhLndpbmRvd1thLnN0cnN0YXJ0LTFdKSxhLm1hdGNoX2F2YWlsYWJsZT0wKSxhLmluc2VydD1hLnN0cnN0YXJ0PGhiLTE/YS5zdHJzdGFydDpoYi0xLGI9PT1LPyhoKGEsITApLDA9PT1hLnN0cm0uYXZhaWxfb3V0P3ViOnZiKTphLmxhc3RfbGl0JiYoaChhLCExKSwwPT09YS5zdHJtLmF2YWlsX291dCk/c2I6dGJ9ZnVuY3Rpb24gcShhLGIpe2Zvcih2YXIgYyxkLGUsZixnPWEud2luZG93Ozspe2lmKGEubG9va2FoZWFkPD1pYil7aWYobShhKSxhLmxvb2thaGVhZDw9aWImJmI9PT1IKXJldHVybiBzYjtpZigwPT09YS5sb29rYWhlYWQpYnJlYWt9aWYoYS5tYXRjaF9sZW5ndGg9MCxhLmxvb2thaGVhZD49aGImJmEuc3Ryc3RhcnQ+MCYmKGU9YS5zdHJzdGFydC0xLGQ9Z1tlXSxkPT09Z1srK2VdJiZkPT09Z1srK2VdJiZkPT09Z1srK2VdKSl7Zj1hLnN0cnN0YXJ0K2liO2RvO3doaWxlKGQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmQ9PT1nWysrZV0mJmY+ZSk7YS5tYXRjaF9sZW5ndGg9aWItKGYtZSksYS5tYXRjaF9sZW5ndGg+YS5sb29rYWhlYWQmJihhLm1hdGNoX2xlbmd0aD1hLmxvb2thaGVhZCl9aWYoYS5tYXRjaF9sZW5ndGg+PWhiPyhjPUQuX3RyX3RhbGx5KGEsMSxhLm1hdGNoX2xlbmd0aC1oYiksYS5sb29rYWhlYWQtPWEubWF0Y2hfbGVuZ3RoLGEuc3Ryc3RhcnQrPWEubWF0Y2hfbGVuZ3RoLGEubWF0Y2hfbGVuZ3RoPTApOihjPUQuX3RyX3RhbGx5KGEsMCxhLndpbmRvd1thLnN0cnN0YXJ0XSksYS5sb29rYWhlYWQtLSxhLnN0cnN0YXJ0KyspLGMmJihoKGEsITEpLDA9PT1hLnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gc2J9cmV0dXJuIGEuaW5zZXJ0PTAsYj09PUs/KGgoYSwhMCksMD09PWEuc3RybS5hdmFpbF9vdXQ/dWI6dmIpOmEubGFzdF9saXQmJihoKGEsITEpLDA9PT1hLnN0cm0uYXZhaWxfb3V0KT9zYjp0Yn1mdW5jdGlvbiByKGEsYil7Zm9yKHZhciBjOzspe2lmKDA9PT1hLmxvb2thaGVhZCYmKG0oYSksMD09PWEubG9va2FoZWFkKSl7aWYoYj09PUgpcmV0dXJuIHNiO2JyZWFrfWlmKGEubWF0Y2hfbGVuZ3RoPTAsYz1ELl90cl90YWxseShhLDAsYS53aW5kb3dbYS5zdHJzdGFydF0pLGEubG9va2FoZWFkLS0sYS5zdHJzdGFydCsrLGMmJihoKGEsITEpLDA9PT1hLnN0cm0uYXZhaWxfb3V0KSlyZXR1cm4gc2J9cmV0dXJuIGEuaW5zZXJ0PTAsYj09PUs/KGgoYSwhMCksMD09PWEuc3RybS5hdmFpbF9vdXQ/dWI6dmIpOmEubGFzdF9saXQmJihoKGEsITEpLDA9PT1hLnN0cm0uYXZhaWxfb3V0KT9zYjp0Yn1mdW5jdGlvbiBzKGEpe2Eud2luZG93X3NpemU9MiphLndfc2l6ZSxmKGEuaGVhZCksYS5tYXhfbGF6eV9tYXRjaD1CW2EubGV2ZWxdLm1heF9sYXp5LGEuZ29vZF9tYXRjaD1CW2EubGV2ZWxdLmdvb2RfbGVuZ3RoLGEubmljZV9tYXRjaD1CW2EubGV2ZWxdLm5pY2VfbGVuZ3RoLGEubWF4X2NoYWluX2xlbmd0aD1CW2EubGV2ZWxdLm1heF9jaGFpbixhLnN0cnN0YXJ0PTAsYS5ibG9ja19zdGFydD0wLGEubG9va2FoZWFkPTAsYS5pbnNlcnQ9MCxhLm1hdGNoX2xlbmd0aD1hLnByZXZfbGVuZ3RoPWhiLTEsYS5tYXRjaF9hdmFpbGFibGU9MCxhLmluc19oPTB9ZnVuY3Rpb24gdCgpe3RoaXMuc3RybT1udWxsLHRoaXMuc3RhdHVzPTAsdGhpcy5wZW5kaW5nX2J1Zj1udWxsLHRoaXMucGVuZGluZ19idWZfc2l6ZT0wLHRoaXMucGVuZGluZ19vdXQ9MCx0aGlzLnBlbmRpbmc9MCx0aGlzLndyYXA9MCx0aGlzLmd6aGVhZD1udWxsLHRoaXMuZ3ppbmRleD0wLHRoaXMubWV0aG9kPVksdGhpcy5sYXN0X2ZsdXNoPS0xLHRoaXMud19zaXplPTAsdGhpcy53X2JpdHM9MCx0aGlzLndfbWFzaz0wLHRoaXMud2luZG93PW51bGwsdGhpcy53aW5kb3dfc2l6ZT0wLHRoaXMucHJldj1udWxsLHRoaXMuaGVhZD1udWxsLHRoaXMuaW5zX2g9MCx0aGlzLmhhc2hfc2l6ZT0wLHRoaXMuaGFzaF9iaXRzPTAsdGhpcy5oYXNoX21hc2s9MCx0aGlzLmhhc2hfc2hpZnQ9MCx0aGlzLmJsb2NrX3N0YXJ0PTAsdGhpcy5tYXRjaF9sZW5ndGg9MCx0aGlzLnByZXZfbWF0Y2g9MCx0aGlzLm1hdGNoX2F2YWlsYWJsZT0wLHRoaXMuc3Ryc3RhcnQ9MCx0aGlzLm1hdGNoX3N0YXJ0PTAsdGhpcy5sb29rYWhlYWQ9MCx0aGlzLnByZXZfbGVuZ3RoPTAsdGhpcy5tYXhfY2hhaW5fbGVuZ3RoPTAsdGhpcy5tYXhfbGF6eV9tYXRjaD0wLHRoaXMubGV2ZWw9MCx0aGlzLnN0cmF0ZWd5PTAsdGhpcy5nb29kX21hdGNoPTAsdGhpcy5uaWNlX21hdGNoPTAsdGhpcy5keW5fbHRyZWU9bmV3IEMuQnVmMTYoMipmYiksdGhpcy5keW5fZHRyZWU9bmV3IEMuQnVmMTYoMiooMipkYisxKSksdGhpcy5ibF90cmVlPW5ldyBDLkJ1ZjE2KDIqKDIqZWIrMSkpLGYodGhpcy5keW5fbHRyZWUpLGYodGhpcy5keW5fZHRyZWUpLGYodGhpcy5ibF90cmVlKSx0aGlzLmxfZGVzYz1udWxsLHRoaXMuZF9kZXNjPW51bGwsdGhpcy5ibF9kZXNjPW51bGwsdGhpcy5ibF9jb3VudD1uZXcgQy5CdWYxNihnYisxKSx0aGlzLmhlYXA9bmV3IEMuQnVmMTYoMipjYisxKSxmKHRoaXMuaGVhcCksdGhpcy5oZWFwX2xlbj0wLHRoaXMuaGVhcF9tYXg9MCx0aGlzLmRlcHRoPW5ldyBDLkJ1ZjE2KDIqY2IrMSksZih0aGlzLmRlcHRoKSx0aGlzLmxfYnVmPTAsdGhpcy5saXRfYnVmc2l6ZT0wLHRoaXMubGFzdF9saXQ9MCx0aGlzLmRfYnVmPTAsdGhpcy5vcHRfbGVuPTAsdGhpcy5zdGF0aWNfbGVuPTAsdGhpcy5tYXRjaGVzPTAsdGhpcy5pbnNlcnQ9MCx0aGlzLmJpX2J1Zj0wLHRoaXMuYmlfdmFsaWQ9MH1mdW5jdGlvbiB1KGEpe3ZhciBiO3JldHVybiBhJiZhLnN0YXRlPyhhLnRvdGFsX2luPWEudG90YWxfb3V0PTAsYS5kYXRhX3R5cGU9WCxiPWEuc3RhdGUsYi5wZW5kaW5nPTAsYi5wZW5kaW5nX291dD0wLGIud3JhcDwwJiYoYi53cmFwPS1iLndyYXApLGIuc3RhdHVzPWIud3JhcD9sYjpxYixhLmFkbGVyPTI9PT1iLndyYXA/MDoxLGIubGFzdF9mbHVzaD1ILEQuX3RyX2luaXQoYiksTSk6ZChhLE8pfWZ1bmN0aW9uIHYoYSl7dmFyIGI9dShhKTtyZXR1cm4gYj09PU0mJnMoYS5zdGF0ZSksYn1mdW5jdGlvbiB3KGEsYil7cmV0dXJuIGEmJmEuc3RhdGU/MiE9PWEuc3RhdGUud3JhcD9POihhLnN0YXRlLmd6aGVhZD1iLE0pOk99ZnVuY3Rpb24geChhLGIsYyxlLGYsZyl7aWYoIWEpcmV0dXJuIE87dmFyIGg9MTtpZihiPT09UiYmKGI9NiksMD5lPyhoPTAsZT0tZSk6ZT4xNSYmKGg9MixlLT0xNiksMT5mfHxmPlp8fGMhPT1ZfHw4PmV8fGU+MTV8fDA+Ynx8Yj45fHwwPmd8fGc+VilyZXR1cm4gZChhLE8pOzg9PT1lJiYoZT05KTt2YXIgaT1uZXcgdDtyZXR1cm4gYS5zdGF0ZT1pLGkuc3RybT1hLGkud3JhcD1oLGkuZ3poZWFkPW51bGwsaS53X2JpdHM9ZSxpLndfc2l6ZT0xPDxpLndfYml0cyxpLndfbWFzaz1pLndfc2l6ZS0xLGkuaGFzaF9iaXRzPWYrNyxpLmhhc2hfc2l6ZT0xPDxpLmhhc2hfYml0cyxpLmhhc2hfbWFzaz1pLmhhc2hfc2l6ZS0xLGkuaGFzaF9zaGlmdD1+figoaS5oYXNoX2JpdHMraGItMSkvaGIpLGkud2luZG93PW5ldyBDLkJ1ZjgoMippLndfc2l6ZSksaS5oZWFkPW5ldyBDLkJ1ZjE2KGkuaGFzaF9zaXplKSxpLnByZXY9bmV3IEMuQnVmMTYoaS53X3NpemUpLGkubGl0X2J1ZnNpemU9MTw8Zis2LGkucGVuZGluZ19idWZfc2l6ZT00KmkubGl0X2J1ZnNpemUsaS5wZW5kaW5nX2J1Zj1uZXcgQy5CdWY4KGkucGVuZGluZ19idWZfc2l6ZSksaS5kX2J1Zj1pLmxpdF9idWZzaXplPj4xLGkubF9idWY9MyppLmxpdF9idWZzaXplLGkubGV2ZWw9YixpLnN0cmF0ZWd5PWcsaS5tZXRob2Q9Yyx2KGEpfWZ1bmN0aW9uIHkoYSxiKXtyZXR1cm4geChhLGIsWSwkLF8sVyl9ZnVuY3Rpb24geihhLGIpe3ZhciBjLGgsayxsO2lmKCFhfHwhYS5zdGF0ZXx8Yj5MfHwwPmIpcmV0dXJuIGE/ZChhLE8pOk87aWYoaD1hLnN0YXRlLCFhLm91dHB1dHx8IWEuaW5wdXQmJjAhPT1hLmF2YWlsX2lufHxoLnN0YXR1cz09PXJiJiZiIT09SylyZXR1cm4gZChhLDA9PT1hLmF2YWlsX291dD9ROk8pO2lmKGguc3RybT1hLGM9aC5sYXN0X2ZsdXNoLGgubGFzdF9mbHVzaD1iLGguc3RhdHVzPT09bGIpaWYoMj09PWgud3JhcClhLmFkbGVyPTAsaShoLDMxKSxpKGgsMTM5KSxpKGgsOCksaC5nemhlYWQ/KGkoaCwoaC5nemhlYWQudGV4dD8xOjApKyhoLmd6aGVhZC5oY3JjPzI6MCkrKGguZ3poZWFkLmV4dHJhPzQ6MCkrKGguZ3poZWFkLm5hbWU/ODowKSsoaC5nemhlYWQuY29tbWVudD8xNjowKSksaShoLDI1NSZoLmd6aGVhZC50aW1lKSxpKGgsaC5nemhlYWQudGltZT4+OCYyNTUpLGkoaCxoLmd6aGVhZC50aW1lPj4xNiYyNTUpLGkoaCxoLmd6aGVhZC50aW1lPj4yNCYyNTUpLGkoaCw5PT09aC5sZXZlbD8yOmguc3RyYXRlZ3k+PVR8fGgubGV2ZWw8Mj80OjApLGkoaCwyNTUmaC5nemhlYWQub3MpLGguZ3poZWFkLmV4dHJhJiZoLmd6aGVhZC5leHRyYS5sZW5ndGgmJihpKGgsMjU1JmguZ3poZWFkLmV4dHJhLmxlbmd0aCksaShoLGguZ3poZWFkLmV4dHJhLmxlbmd0aD4+OCYyNTUpKSxoLmd6aGVhZC5oY3JjJiYoYS5hZGxlcj1GKGEuYWRsZXIsaC5wZW5kaW5nX2J1ZixoLnBlbmRpbmcsMCkpLGguZ3ppbmRleD0wLGguc3RhdHVzPW1iKTooaShoLDApLGkoaCwwKSxpKGgsMCksaShoLDApLGkoaCwwKSxpKGgsOT09PWgubGV2ZWw/MjpoLnN0cmF0ZWd5Pj1UfHxoLmxldmVsPDI/NDowKSxpKGgsd2IpLGguc3RhdHVzPXFiKTtlbHNle3ZhciBtPVkrKGgud19iaXRzLTg8PDQpPDw4LG49LTE7bj1oLnN0cmF0ZWd5Pj1UfHxoLmxldmVsPDI/MDpoLmxldmVsPDY/MTo2PT09aC5sZXZlbD8yOjMsbXw9bjw8NiwwIT09aC5zdHJzdGFydCYmKG18PWtiKSxtKz0zMS1tJTMxLGguc3RhdHVzPXFiLGooaCxtKSwwIT09aC5zdHJzdGFydCYmKGooaCxhLmFkbGVyPj4+MTYpLGooaCw2NTUzNSZhLmFkbGVyKSksYS5hZGxlcj0xfWlmKGguc3RhdHVzPT09bWIpaWYoaC5nemhlYWQuZXh0cmEpe2ZvcihrPWgucGVuZGluZztoLmd6aW5kZXg8KDY1NTM1JmguZ3poZWFkLmV4dHJhLmxlbmd0aCkmJihoLnBlbmRpbmchPT1oLnBlbmRpbmdfYnVmX3NpemV8fChoLmd6aGVhZC5oY3JjJiZoLnBlbmRpbmc+ayYmKGEuYWRsZXI9RihhLmFkbGVyLGgucGVuZGluZ19idWYsaC5wZW5kaW5nLWssaykpLGcoYSksaz1oLnBlbmRpbmcsaC5wZW5kaW5nIT09aC5wZW5kaW5nX2J1Zl9zaXplKSk7KWkoaCwyNTUmaC5nemhlYWQuZXh0cmFbaC5nemluZGV4XSksaC5nemluZGV4Kys7aC5nemhlYWQuaGNyYyYmaC5wZW5kaW5nPmsmJihhLmFkbGVyPUYoYS5hZGxlcixoLnBlbmRpbmdfYnVmLGgucGVuZGluZy1rLGspKSxoLmd6aW5kZXg9PT1oLmd6aGVhZC5leHRyYS5sZW5ndGgmJihoLmd6aW5kZXg9MCxoLnN0YXR1cz1uYil9ZWxzZSBoLnN0YXR1cz1uYjtpZihoLnN0YXR1cz09PW5iKWlmKGguZ3poZWFkLm5hbWUpe2s9aC5wZW5kaW5nO2Rve2lmKGgucGVuZGluZz09PWgucGVuZGluZ19idWZfc2l6ZSYmKGguZ3poZWFkLmhjcmMmJmgucGVuZGluZz5rJiYoYS5hZGxlcj1GKGEuYWRsZXIsaC5wZW5kaW5nX2J1ZixoLnBlbmRpbmctayxrKSksZyhhKSxrPWgucGVuZGluZyxoLnBlbmRpbmc9PT1oLnBlbmRpbmdfYnVmX3NpemUpKXtsPTE7YnJlYWt9bD1oLmd6aW5kZXg8aC5nemhlYWQubmFtZS5sZW5ndGg/MjU1JmguZ3poZWFkLm5hbWUuY2hhckNvZGVBdChoLmd6aW5kZXgrKyk6MCxpKGgsbCl9d2hpbGUoMCE9PWwpO2guZ3poZWFkLmhjcmMmJmgucGVuZGluZz5rJiYoYS5hZGxlcj1GKGEuYWRsZXIsaC5wZW5kaW5nX2J1ZixoLnBlbmRpbmctayxrKSksMD09PWwmJihoLmd6aW5kZXg9MCxoLnN0YXR1cz1vYil9ZWxzZSBoLnN0YXR1cz1vYjtpZihoLnN0YXR1cz09PW9iKWlmKGguZ3poZWFkLmNvbW1lbnQpe2s9aC5wZW5kaW5nO2Rve2lmKGgucGVuZGluZz09PWgucGVuZGluZ19idWZfc2l6ZSYmKGguZ3poZWFkLmhjcmMmJmgucGVuZGluZz5rJiYoYS5hZGxlcj1GKGEuYWRsZXIsaC5wZW5kaW5nX2J1ZixoLnBlbmRpbmctayxrKSksZyhhKSxrPWgucGVuZGluZyxoLnBlbmRpbmc9PT1oLnBlbmRpbmdfYnVmX3NpemUpKXtsPTE7YnJlYWt9bD1oLmd6aW5kZXg8aC5nemhlYWQuY29tbWVudC5sZW5ndGg/MjU1JmguZ3poZWFkLmNvbW1lbnQuY2hhckNvZGVBdChoLmd6aW5kZXgrKyk6MCxpKGgsbCl9d2hpbGUoMCE9PWwpO2guZ3poZWFkLmhjcmMmJmgucGVuZGluZz5rJiYoYS5hZGxlcj1GKGEuYWRsZXIsaC5wZW5kaW5nX2J1ZixoLnBlbmRpbmctayxrKSksMD09PWwmJihoLnN0YXR1cz1wYil9ZWxzZSBoLnN0YXR1cz1wYjtpZihoLnN0YXR1cz09PXBiJiYoaC5nemhlYWQuaGNyYz8oaC5wZW5kaW5nKzI+aC5wZW5kaW5nX2J1Zl9zaXplJiZnKGEpLGgucGVuZGluZysyPD1oLnBlbmRpbmdfYnVmX3NpemUmJihpKGgsMjU1JmEuYWRsZXIpLGkoaCxhLmFkbGVyPj44JjI1NSksYS5hZGxlcj0wLGguc3RhdHVzPXFiKSk6aC5zdGF0dXM9cWIpLDAhPT1oLnBlbmRpbmcpe2lmKGcoYSksMD09PWEuYXZhaWxfb3V0KXJldHVybiBoLmxhc3RfZmx1c2g9LTEsTX1lbHNlIGlmKDA9PT1hLmF2YWlsX2luJiZlKGIpPD1lKGMpJiZiIT09SylyZXR1cm4gZChhLFEpO2lmKGguc3RhdHVzPT09cmImJjAhPT1hLmF2YWlsX2luKXJldHVybiBkKGEsUSk7aWYoMCE9PWEuYXZhaWxfaW58fDAhPT1oLmxvb2thaGVhZHx8YiE9PUgmJmguc3RhdHVzIT09cmIpe3ZhciBvPWguc3RyYXRlZ3k9PT1UP3IoaCxiKTpoLnN0cmF0ZWd5PT09VT9xKGgsYik6QltoLmxldmVsXS5mdW5jKGgsYik7aWYoKG89PT11Ynx8bz09PXZiKSYmKGguc3RhdHVzPXJiKSxvPT09c2J8fG89PT11YilyZXR1cm4gMD09PWEuYXZhaWxfb3V0JiYoaC5sYXN0X2ZsdXNoPS0xKSxNO2lmKG89PT10YiYmKGI9PT1JP0QuX3RyX2FsaWduKGgpOmIhPT1MJiYoRC5fdHJfc3RvcmVkX2Jsb2NrKGgsMCwwLCExKSxiPT09SiYmKGYoaC5oZWFkKSwwPT09aC5sb29rYWhlYWQmJihoLnN0cnN0YXJ0PTAsaC5ibG9ja19zdGFydD0wLGguaW5zZXJ0PTApKSksZyhhKSwwPT09YS5hdmFpbF9vdXQpKXJldHVybiBoLmxhc3RfZmx1c2g9LTEsTX1yZXR1cm4gYiE9PUs/TTpoLndyYXA8PTA/TjooMj09PWgud3JhcD8oaShoLDI1NSZhLmFkbGVyKSxpKGgsYS5hZGxlcj4+OCYyNTUpLGkoaCxhLmFkbGVyPj4xNiYyNTUpLGkoaCxhLmFkbGVyPj4yNCYyNTUpLGkoaCwyNTUmYS50b3RhbF9pbiksaShoLGEudG90YWxfaW4+PjgmMjU1KSxpKGgsYS50b3RhbF9pbj4+MTYmMjU1KSxpKGgsYS50b3RhbF9pbj4+MjQmMjU1KSk6KGooaCxhLmFkbGVyPj4+MTYpLGooaCw2NTUzNSZhLmFkbGVyKSksZyhhKSxoLndyYXA+MCYmKGgud3JhcD0taC53cmFwKSwwIT09aC5wZW5kaW5nP006Til9ZnVuY3Rpb24gQShhKXt2YXIgYjtyZXR1cm4gYSYmYS5zdGF0ZT8oYj1hLnN0YXRlLnN0YXR1cyxiIT09bGImJmIhPT1tYiYmYiE9PW5iJiZiIT09b2ImJmIhPT1wYiYmYiE9PXFiJiZiIT09cmI/ZChhLE8pOihhLnN0YXRlPW51bGwsYj09PXFiP2QoYSxQKTpNKSk6T312YXIgQixDPWEoIi4uL3V0aWxzL2NvbW1vbiIpLEQ9YSgiLi90cmVlcyIpLEU9YSgiLi9hZGxlcjMyIiksRj1hKCIuL2NyYzMyIiksRz1hKCIuL21lc3NhZ2VzIiksSD0wLEk9MSxKPTMsSz00LEw9NSxNPTAsTj0xLE89LTIsUD0tMyxRPS01LFI9LTEsUz0xLFQ9MixVPTMsVj00LFc9MCxYPTIsWT04LFo9OSwkPTE1LF89OCxhYj0yOSxiYj0yNTYsY2I9YmIrMSthYixkYj0zMCxlYj0xOSxmYj0yKmNiKzEsZ2I9MTUsaGI9MyxpYj0yNTgsamI9aWIraGIrMSxrYj0zMixsYj00MixtYj02OSxuYj03MyxvYj05MSxwYj0xMDMscWI9MTEzLHJiPTY2NixzYj0xLHRiPTIsdWI9Myx2Yj00LHdiPTMseGI9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLmdvb2RfbGVuZ3RoPWEsdGhpcy5tYXhfbGF6eT1iLHRoaXMubmljZV9sZW5ndGg9Yyx0aGlzLm1heF9jaGFpbj1kLHRoaXMuZnVuYz1lfTtCPVtuZXcgeGIoMCwwLDAsMCxuKSxuZXcgeGIoNCw0LDgsNCxvKSxuZXcgeGIoNCw1LDE2LDgsbyksbmV3IHhiKDQsNiwzMiwzMixvKSxuZXcgeGIoNCw0LDE2LDE2LHApLG5ldyB4Yig4LDE2LDMyLDMyLHApLG5ldyB4Yig4LDE2LDEyOCwxMjgscCksbmV3IHhiKDgsMzIsMTI4LDI1NixwKSxuZXcgeGIoMzIsMTI4LDI1OCwxMDI0LHApLG5ldyB4YigzMiwyNTgsMjU4LDQwOTYscCldLGMuZGVmbGF0ZUluaXQ9eSxjLmRlZmxhdGVJbml0Mj14LGMuZGVmbGF0ZVJlc2V0PXYsYy5kZWZsYXRlUmVzZXRLZWVwPXUsYy5kZWZsYXRlU2V0SGVhZGVyPXcsYy5kZWZsYXRlPXosYy5kZWZsYXRlRW5kPUEsYy5kZWZsYXRlSW5mbz0icGFrbyBkZWZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSJ9LHsiLi4vdXRpbHMvY29tbW9uIjoyNywiLi9hZGxlcjMyIjoyOSwiLi9jcmMzMiI6MzEsIi4vbWVzc2FnZXMiOjM3LCIuL3RyZWVzIjozOH1dLDMzOltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKCl7dGhpcy50ZXh0PTAsdGhpcy50aW1lPTAsdGhpcy54ZmxhZ3M9MCx0aGlzLm9zPTAsdGhpcy5leHRyYT1udWxsLHRoaXMuZXh0cmFfbGVuPTAsdGhpcy5uYW1lPSIiLHRoaXMuY29tbWVudD0iIix0aGlzLmhjcmM9MCx0aGlzLmRvbmU9ITF9Yi5leHBvcnRzPWN9LHt9XSwzNDpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9MzAsZD0xMjtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiKXt2YXIgZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyx4LHkseixBLEIsQztlPWEuc3RhdGUsZj1hLm5leHRfaW4sQj1hLmlucHV0LGc9ZisoYS5hdmFpbF9pbi01KSxoPWEubmV4dF9vdXQsQz1hLm91dHB1dCxpPWgtKGItYS5hdmFpbF9vdXQpLGo9aCsoYS5hdmFpbF9vdXQtMjU3KSxrPWUuZG1heCxsPWUud3NpemUsbT1lLndoYXZlLG49ZS53bmV4dCxvPWUud2luZG93LHA9ZS5ob2xkLHE9ZS5iaXRzLHI9ZS5sZW5jb2RlLHM9ZS5kaXN0Y29kZSx0PSgxPDxlLmxlbmJpdHMpLTEsdT0oMTw8ZS5kaXN0Yml0cyktMTthOmRvezE1PnEmJihwKz1CW2YrK108PHEscSs9OCxwKz1CW2YrK108PHEscSs9OCksdj1yW3AmdF07Yjpmb3IoOzspe2lmKHc9dj4+PjI0LHA+Pj49dyxxLT13LHc9dj4+PjE2JjI1NSwwPT09dylDW2grK109NjU1MzUmdjtlbHNle2lmKCEoMTYmdykpe2lmKDA9PT0oNjQmdykpe3Y9clsoNjU1MzUmdikrKHAmKDE8PHcpLTEpXTtjb250aW51ZSBifWlmKDMyJncpe2UubW9kZT1kO2JyZWFrIGF9YS5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSIsZS5tb2RlPWM7YnJlYWsgYX14PTY1NTM1JnYsdyY9MTUsdyYmKHc+cSYmKHArPUJbZisrXTw8cSxxKz04KSx4Kz1wJigxPDx3KS0xLHA+Pj49dyxxLT13KSwxNT5xJiYocCs9QltmKytdPDxxLHErPTgscCs9QltmKytdPDxxLHErPTgpLHY9c1twJnVdO2M6Zm9yKDs7KXtpZih3PXY+Pj4yNCxwPj4+PXcscS09dyx3PXY+Pj4xNiYyNTUsISgxNiZ3KSl7aWYoMD09PSg2NCZ3KSl7dj1zWyg2NTUzNSZ2KSsocCYoMTw8dyktMSldO2NvbnRpbnVlIGN9YS5tc2c9ImludmFsaWQgZGlzdGFuY2UgY29kZSIsZS5tb2RlPWM7YnJlYWsgYX1pZih5PTY1NTM1JnYsdyY9MTUsdz5xJiYocCs9QltmKytdPDxxLHErPTgsdz5xJiYocCs9QltmKytdPDxxLHErPTgpKSx5Kz1wJigxPDx3KS0xLHk+ayl7YS5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixlLm1vZGU9YzticmVhayBhfWlmKHA+Pj49dyxxLT13LHc9aC1pLHk+dyl7aWYodz15LXcsdz5tJiZlLnNhbmUpe2EubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsZS5tb2RlPWM7YnJlYWsgYX1pZih6PTAsQT1vLDA9PT1uKXtpZih6Kz1sLXcseD53KXt4LT13O2RvIENbaCsrXT1vW3orK107d2hpbGUoLS13KTt6PWgteSxBPUN9fWVsc2UgaWYodz5uKXtpZih6Kz1sK24tdyx3LT1uLHg+dyl7eC09dztkbyBDW2grK109b1t6KytdO3doaWxlKC0tdyk7aWYoej0wLHg+bil7dz1uLHgtPXc7ZG8gQ1toKytdPW9beisrXTt3aGlsZSgtLXcpO3o9aC15LEE9Q319fWVsc2UgaWYoeis9bi13LHg+dyl7eC09dztkbyBDW2grK109b1t6KytdO3doaWxlKC0tdyk7ej1oLXksQT1DfWZvcig7eD4yOylDW2grK109QVt6KytdLENbaCsrXT1BW3orK10sQ1toKytdPUFbeisrXSx4LT0zO3gmJihDW2grK109QVt6KytdLHg+MSYmKENbaCsrXT1BW3orK10pKX1lbHNle3o9aC15O2RvIENbaCsrXT1DW3orK10sQ1toKytdPUNbeisrXSxDW2grK109Q1t6KytdLHgtPTM7d2hpbGUoeD4yKTt4JiYoQ1toKytdPUNbeisrXSx4PjEmJihDW2grK109Q1t6KytdKSl9YnJlYWt9fWJyZWFrfX13aGlsZShnPmYmJmo+aCk7eD1xPj4zLGYtPXgscS09eDw8MyxwJj0oMTw8cSktMSxhLm5leHRfaW49ZixhLm5leHRfb3V0PWgsYS5hdmFpbF9pbj1nPmY/NSsoZy1mKTo1LShmLWcpLGEuYXZhaWxfb3V0PWo+aD8yNTcrKGotaCk6MjU3LShoLWopLGUuaG9sZD1wLGUuYml0cz1xfX0se31dLDM1OltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSl7cmV0dXJuKGE+Pj4yNCYyNTUpKyhhPj4+OCY2NTI4MCkrKCg2NTI4MCZhKTw8OCkrKCgyNTUmYSk8PDI0KX1mdW5jdGlvbiBlKCl7dGhpcy5tb2RlPTAsdGhpcy5sYXN0PSExLHRoaXMud3JhcD0wLHRoaXMuaGF2ZWRpY3Q9ITEsdGhpcy5mbGFncz0wLHRoaXMuZG1heD0wLHRoaXMuY2hlY2s9MCx0aGlzLnRvdGFsPTAsdGhpcy5oZWFkPW51bGwsdGhpcy53Yml0cz0wLHRoaXMud3NpemU9MCx0aGlzLndoYXZlPTAsdGhpcy53bmV4dD0wLHRoaXMud2luZG93PW51bGwsdGhpcy5ob2xkPTAsdGhpcy5iaXRzPTAsdGhpcy5sZW5ndGg9MCx0aGlzLm9mZnNldD0wLHRoaXMuZXh0cmE9MCx0aGlzLmxlbmNvZGU9bnVsbCx0aGlzLmRpc3Rjb2RlPW51bGwsdGhpcy5sZW5iaXRzPTAsdGhpcy5kaXN0Yml0cz0wLHRoaXMubmNvZGU9MCx0aGlzLm5sZW49MCx0aGlzLm5kaXN0PTAsdGhpcy5oYXZlPTAsdGhpcy5uZXh0PW51bGwsdGhpcy5sZW5zPW5ldyByLkJ1ZjE2KDMyMCksdGhpcy53b3JrPW5ldyByLkJ1ZjE2KDI4OCksdGhpcy5sZW5keW49bnVsbCx0aGlzLmRpc3RkeW49bnVsbCx0aGlzLnNhbmU9MCx0aGlzLmJhY2s9MCx0aGlzLndhcz0wfWZ1bmN0aW9uIGYoYSl7dmFyIGI7cmV0dXJuIGEmJmEuc3RhdGU/KGI9YS5zdGF0ZSxhLnRvdGFsX2luPWEudG90YWxfb3V0PWIudG90YWw9MCxhLm1zZz0iIixiLndyYXAmJihhLmFkbGVyPTEmYi53cmFwKSxiLm1vZGU9SyxiLmxhc3Q9MCxiLmhhdmVkaWN0PTAsYi5kbWF4PTMyNzY4LGIuaGVhZD1udWxsLGIuaG9sZD0wLGIuYml0cz0wLGIubGVuY29kZT1iLmxlbmR5bj1uZXcgci5CdWYzMihvYiksYi5kaXN0Y29kZT1iLmRpc3RkeW49bmV3IHIuQnVmMzIocGIpLGIuc2FuZT0xLGIuYmFjaz0tMSxDKTpGfWZ1bmN0aW9uIGcoYSl7dmFyIGI7cmV0dXJuIGEmJmEuc3RhdGU/KGI9YS5zdGF0ZSxiLndzaXplPTAsYi53aGF2ZT0wLGIud25leHQ9MCxmKGEpKTpGfWZ1bmN0aW9uIGgoYSxiKXt2YXIgYyxkO3JldHVybiBhJiZhLnN0YXRlPyhkPWEuc3RhdGUsMD5iPyhjPTAsYj0tYik6KGM9KGI+PjQpKzEsNDg+YiYmKGImPTE1KSksYiYmKDg+Ynx8Yj4xNSk/RjoobnVsbCE9PWQud2luZG93JiZkLndiaXRzIT09YiYmKGQud2luZG93PW51bGwpLGQud3JhcD1jLGQud2JpdHM9YixnKGEpKSk6Rn1mdW5jdGlvbiBpKGEsYil7dmFyIGMsZDtyZXR1cm4gYT8oZD1uZXcgZSxhLnN0YXRlPWQsZC53aW5kb3c9bnVsbCxjPWgoYSxiKSxjIT09QyYmKGEuc3RhdGU9bnVsbCksYyk6Rn1mdW5jdGlvbiBqKGEpe3JldHVybiBpKGEscmIpfWZ1bmN0aW9uIGsoYSl7aWYoc2Ipe3ZhciBiO2ZvcihwPW5ldyByLkJ1ZjMyKDUxMikscT1uZXcgci5CdWYzMigzMiksYj0wOzE0ND5iOylhLmxlbnNbYisrXT04O2Zvcig7MjU2PmI7KWEubGVuc1tiKytdPTk7Zm9yKDsyODA+YjspYS5sZW5zW2IrK109Nztmb3IoOzI4OD5iOylhLmxlbnNbYisrXT04O2Zvcih2KHgsYS5sZW5zLDAsMjg4LHAsMCxhLndvcmsse2JpdHM6OX0pLGI9MDszMj5iOylhLmxlbnNbYisrXT01O3YoeSxhLmxlbnMsMCwzMixxLDAsYS53b3JrLHtiaXRzOjV9KSxzYj0hMX1hLmxlbmNvZGU9cCxhLmxlbmJpdHM9OSxhLmRpc3Rjb2RlPXEsYS5kaXN0Yml0cz01fWZ1bmN0aW9uIGwoYSxiLGMsZCl7dmFyIGUsZj1hLnN0YXRlO3JldHVybiBudWxsPT09Zi53aW5kb3cmJihmLndzaXplPTE8PGYud2JpdHMsZi53bmV4dD0wLGYud2hhdmU9MCxmLndpbmRvdz1uZXcgci5CdWY4KGYud3NpemUpKSxkPj1mLndzaXplPyhyLmFycmF5U2V0KGYud2luZG93LGIsYy1mLndzaXplLGYud3NpemUsMCksZi53bmV4dD0wLGYud2hhdmU9Zi53c2l6ZSk6KGU9Zi53c2l6ZS1mLnduZXh0LGU+ZCYmKGU9ZCksci5hcnJheVNldChmLndpbmRvdyxiLGMtZCxlLGYud25leHQpLGQtPWUsZD8oci5hcnJheVNldChmLndpbmRvdyxiLGMtZCxkLDApLGYud25leHQ9ZCxmLndoYXZlPWYud3NpemUpOihmLnduZXh0Kz1lLGYud25leHQ9PT1mLndzaXplJiYoZi53bmV4dD0wKSxmLndoYXZlPGYud3NpemUmJihmLndoYXZlKz1lKSkpLDB9ZnVuY3Rpb24gbShhLGIpe3ZhciBjLGUsZixnLGgsaSxqLG0sbixvLHAscSxvYixwYixxYixyYixzYix0Yix1Yix2Yix3Yix4Yix5Yix6YixBYj0wLEJiPW5ldyByLkJ1ZjgoNCksQ2I9WzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdO2lmKCFhfHwhYS5zdGF0ZXx8IWEub3V0cHV0fHwhYS5pbnB1dCYmMCE9PWEuYXZhaWxfaW4pcmV0dXJuIEY7Yz1hLnN0YXRlLGMubW9kZT09PVYmJihjLm1vZGU9VyksaD1hLm5leHRfb3V0LGY9YS5vdXRwdXQsaj1hLmF2YWlsX291dCxnPWEubmV4dF9pbixlPWEuaW5wdXQsaT1hLmF2YWlsX2luLG09Yy5ob2xkLG49Yy5iaXRzLG89aSxwPWoseGI9QzthOmZvcig7Oylzd2l0Y2goYy5tb2RlKXtjYXNlIEs6aWYoMD09PWMud3JhcCl7Yy5tb2RlPVc7YnJlYWt9Zm9yKDsxNj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9aWYoMiZjLndyYXAmJjM1NjE1PT09bSl7Yy5jaGVjaz0wLEJiWzBdPTI1NSZtLEJiWzFdPW0+Pj44JjI1NSxjLmNoZWNrPXQoYy5jaGVjayxCYiwyLDApLG09MCxuPTAsYy5tb2RlPUw7YnJlYWt9aWYoYy5mbGFncz0wLGMuaGVhZCYmKGMuaGVhZC5kb25lPSExKSwhKDEmYy53cmFwKXx8KCgoMjU1Jm0pPDw4KSsobT4+OCkpJTMxKXthLm1zZz0iaW5jb3JyZWN0IGhlYWRlciBjaGVjayIsYy5tb2RlPWxiO2JyZWFrfWlmKCgxNSZtKSE9PUope2EubXNnPSJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCIsYy5tb2RlPWxiO2JyZWFrfWlmKG0+Pj49NCxuLT00LHdiPSgxNSZtKSs4LDA9PT1jLndiaXRzKWMud2JpdHM9d2I7ZWxzZSBpZih3Yj5jLndiaXRzKXthLm1zZz0iaW52YWxpZCB3aW5kb3cgc2l6ZSIsYy5tb2RlPWxiO2JyZWFrfWMuZG1heD0xPDx3YixhLmFkbGVyPWMuY2hlY2s9MSxjLm1vZGU9NTEyJm0/VDpWLG09MCxuPTA7YnJlYWs7Y2FzZSBMOmZvcig7MTY+bjspe2lmKDA9PT1pKWJyZWFrIGE7aS0tLG0rPWVbZysrXTw8bixuKz04fWlmKGMuZmxhZ3M9bSwoMjU1JmMuZmxhZ3MpIT09Sil7YS5tc2c9InVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIixjLm1vZGU9bGI7YnJlYWt9aWYoNTczNDQmYy5mbGFncyl7YS5tc2c9InVua25vd24gaGVhZGVyIGZsYWdzIHNldCIsYy5tb2RlPWxiO2JyZWFrfWMuaGVhZCYmKGMuaGVhZC50ZXh0PW0+PjgmMSksNTEyJmMuZmxhZ3MmJihCYlswXT0yNTUmbSxCYlsxXT1tPj4+OCYyNTUsYy5jaGVjaz10KGMuY2hlY2ssQmIsMiwwKSksbT0wLG49MCxjLm1vZGU9TTtjYXNlIE06Zm9yKDszMj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9Yy5oZWFkJiYoYy5oZWFkLnRpbWU9bSksNTEyJmMuZmxhZ3MmJihCYlswXT0yNTUmbSxCYlsxXT1tPj4+OCYyNTUsQmJbMl09bT4+PjE2JjI1NSxCYlszXT1tPj4+MjQmMjU1LGMuY2hlY2s9dChjLmNoZWNrLEJiLDQsMCkpLG09MCxuPTAsYy5tb2RlPU47Y2FzZSBOOmZvcig7MTY+bjspe2lmKDA9PT1pKWJyZWFrIGE7aS0tLG0rPWVbZysrXTw8bixuKz04fWMuaGVhZCYmKGMuaGVhZC54ZmxhZ3M9MjU1Jm0sYy5oZWFkLm9zPW0+PjgpLDUxMiZjLmZsYWdzJiYoQmJbMF09MjU1Jm0sQmJbMV09bT4+PjgmMjU1LGMuY2hlY2s9dChjLmNoZWNrLEJiLDIsMCkpLG09MCxuPTAsYy5tb2RlPU87Y2FzZSBPOmlmKDEwMjQmYy5mbGFncyl7Zm9yKDsxNj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9Yy5sZW5ndGg9bSxjLmhlYWQmJihjLmhlYWQuZXh0cmFfbGVuPW0pLDUxMiZjLmZsYWdzJiYoQmJbMF09MjU1Jm0sQmJbMV09bT4+PjgmMjU1LGMuY2hlY2s9dChjLmNoZWNrLEJiLDIsMCkpLG09MCxuPTB9ZWxzZSBjLmhlYWQmJihjLmhlYWQuZXh0cmE9bnVsbCk7Yy5tb2RlPVA7Y2FzZSBQOmlmKDEwMjQmYy5mbGFncyYmKHE9Yy5sZW5ndGgscT5pJiYocT1pKSxxJiYoYy5oZWFkJiYod2I9Yy5oZWFkLmV4dHJhX2xlbi1jLmxlbmd0aCxjLmhlYWQuZXh0cmF8fChjLmhlYWQuZXh0cmE9bmV3IEFycmF5KGMuaGVhZC5leHRyYV9sZW4pKSxyLmFycmF5U2V0KGMuaGVhZC5leHRyYSxlLGcscSx3YikpLDUxMiZjLmZsYWdzJiYoYy5jaGVjaz10KGMuY2hlY2ssZSxxLGcpKSxpLT1xLGcrPXEsYy5sZW5ndGgtPXEpLGMubGVuZ3RoKSlicmVhayBhO2MubGVuZ3RoPTAsYy5tb2RlPVE7Y2FzZSBROmlmKDIwNDgmYy5mbGFncyl7aWYoMD09PWkpYnJlYWsgYTtxPTA7ZG8gd2I9ZVtnK3ErK10sYy5oZWFkJiZ3YiYmYy5sZW5ndGg8NjU1MzYmJihjLmhlYWQubmFtZSs9U3RyaW5nLmZyb21DaGFyQ29kZSh3YikpO3doaWxlKHdiJiZpPnEpO2lmKDUxMiZjLmZsYWdzJiYoYy5jaGVjaz10KGMuY2hlY2ssZSxxLGcpKSxpLT1xLGcrPXEsd2IpYnJlYWsgYX1lbHNlIGMuaGVhZCYmKGMuaGVhZC5uYW1lPW51bGwpO2MubGVuZ3RoPTAsYy5tb2RlPVI7Y2FzZSBSOmlmKDQwOTYmYy5mbGFncyl7aWYoMD09PWkpYnJlYWsgYTtxPTA7ZG8gd2I9ZVtnK3ErK10sYy5oZWFkJiZ3YiYmYy5sZW5ndGg8NjU1MzYmJihjLmhlYWQuY29tbWVudCs9U3RyaW5nLmZyb21DaGFyQ29kZSh3YikpO3doaWxlKHdiJiZpPnEpO2lmKDUxMiZjLmZsYWdzJiYoYy5jaGVjaz10KGMuY2hlY2ssZSxxLGcpKSxpLT1xLGcrPXEsd2IpYnJlYWsgYX1lbHNlIGMuaGVhZCYmKGMuaGVhZC5jb21tZW50PW51bGwpO2MubW9kZT1TO2Nhc2UgUzppZig1MTImYy5mbGFncyl7Zm9yKDsxNj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9aWYobSE9PSg2NTUzNSZjLmNoZWNrKSl7YS5tc2c9ImhlYWRlciBjcmMgbWlzbWF0Y2giLGMubW9kZT1sYjticmVha31tPTAsbj0wfWMuaGVhZCYmKGMuaGVhZC5oY3JjPWMuZmxhZ3M+PjkmMSxjLmhlYWQuZG9uZT0hMCksYS5hZGxlcj1jLmNoZWNrPTAsYy5tb2RlPVY7YnJlYWs7Y2FzZSBUOmZvcig7MzI+bjspe2lmKDA9PT1pKWJyZWFrIGE7aS0tLG0rPWVbZysrXTw8bixuKz04fWEuYWRsZXI9Yy5jaGVjaz1kKG0pLG09MCxuPTAsYy5tb2RlPVU7Y2FzZSBVOmlmKDA9PT1jLmhhdmVkaWN0KXJldHVybiBhLm5leHRfb3V0PWgsYS5hdmFpbF9vdXQ9aixhLm5leHRfaW49ZyxhLmF2YWlsX2luPWksYy5ob2xkPW0sYy5iaXRzPW4sRTthLmFkbGVyPWMuY2hlY2s9MSxjLm1vZGU9VjtjYXNlIFY6aWYoYj09PUF8fGI9PT1CKWJyZWFrIGE7Y2FzZSBXOmlmKGMubGFzdCl7bT4+Pj03Jm4sbi09NyZuLGMubW9kZT1pYjticmVha31mb3IoOzM+bjspe2lmKDA9PT1pKWJyZWFrIGE7aS0tLG0rPWVbZysrXTw8bixuKz04fXN3aXRjaChjLmxhc3Q9MSZtLG0+Pj49MSxuLT0xLDMmbSl7Y2FzZSAwOmMubW9kZT1YO2JyZWFrO2Nhc2UgMTppZihrKGMpLGMubW9kZT1iYixiPT09Qil7bT4+Pj0yLG4tPTI7YnJlYWsgYX1icmVhaztjYXNlIDI6Yy5tb2RlPSQ7YnJlYWs7Y2FzZSAzOmEubXNnPSJpbnZhbGlkIGJsb2NrIHR5cGUiLGMubW9kZT1sYn1tPj4+PTIsbi09MjticmVhaztjYXNlIFg6Zm9yKG0+Pj49NyZuLG4tPTcmbjszMj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9aWYoKDY1NTM1Jm0pIT09KG0+Pj4xNl42NTUzNSkpe2EubXNnPSJpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzIixjLm1vZGU9bGI7YnJlYWt9aWYoYy5sZW5ndGg9NjU1MzUmbSxtPTAsbj0wLGMubW9kZT1ZLGI9PT1CKWJyZWFrIGE7Y2FzZSBZOmMubW9kZT1aO2Nhc2UgWjppZihxPWMubGVuZ3RoKXtpZihxPmkmJihxPWkpLHE+aiYmKHE9aiksMD09PXEpYnJlYWsgYTtyLmFycmF5U2V0KGYsZSxnLHEsaCksaS09cSxnKz1xLGotPXEsaCs9cSxjLmxlbmd0aC09cTticmVha31jLm1vZGU9VjticmVhaztjYXNlICQ6Zm9yKDsxND5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9aWYoYy5ubGVuPSgzMSZtKSsyNTcsbT4+Pj01LG4tPTUsYy5uZGlzdD0oMzEmbSkrMSxtPj4+PTUsbi09NSxjLm5jb2RlPSgxNSZtKSs0LG0+Pj49NCxuLT00LGMubmxlbj4yODZ8fGMubmRpc3Q+MzApe2EubXNnPSJ0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyIsYy5tb2RlPWxiO2JyZWFrfWMuaGF2ZT0wLGMubW9kZT1fO2Nhc2UgXzpmb3IoO2MuaGF2ZTxjLm5jb2RlOyl7Zm9yKDszPm47KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1jLmxlbnNbQ2JbYy5oYXZlKytdXT03Jm0sbT4+Pj0zLG4tPTN9Zm9yKDtjLmhhdmU8MTk7KWMubGVuc1tDYltjLmhhdmUrK11dPTA7aWYoYy5sZW5jb2RlPWMubGVuZHluLGMubGVuYml0cz03LHliPXtiaXRzOmMubGVuYml0c30seGI9dih3LGMubGVucywwLDE5LGMubGVuY29kZSwwLGMud29yayx5YiksYy5sZW5iaXRzPXliLmJpdHMseGIpe2EubXNnPSJpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQiLGMubW9kZT1sYjticmVha31jLmhhdmU9MCxjLm1vZGU9YWI7Y2FzZSBhYjpmb3IoO2MuaGF2ZTxjLm5sZW4rYy5uZGlzdDspe2Zvcig7QWI9Yy5sZW5jb2RlW20mKDE8PGMubGVuYml0cyktMV0scWI9QWI+Pj4yNCxyYj1BYj4+PjE2JjI1NSxzYj02NTUzNSZBYiwhKG4+PXFiKTspe2lmKDA9PT1pKWJyZWFrIGE7aS0tLG0rPWVbZysrXTw8bixuKz04fWlmKDE2PnNiKW0+Pj49cWIsbi09cWIsYy5sZW5zW2MuaGF2ZSsrXT1zYjtlbHNle2lmKDE2PT09c2Ipe2Zvcih6Yj1xYisyO3piPm47KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1pZihtPj4+PXFiLG4tPXFiLDA9PT1jLmhhdmUpe2EubXNnPSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0IixjLm1vZGU9bGI7YnJlYWt9d2I9Yy5sZW5zW2MuaGF2ZS0xXSxxPTMrKDMmbSksbT4+Pj0yLG4tPTJ9ZWxzZSBpZigxNz09PXNiKXtmb3IoemI9cWIrMzt6Yj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9bT4+Pj1xYixuLT1xYix3Yj0wLHE9MysoNyZtKSxtPj4+PTMsbi09M31lbHNle2Zvcih6Yj1xYis3O3piPm47KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1tPj4+PXFiLG4tPXFiLHdiPTAscT0xMSsoMTI3Jm0pLG0+Pj49NyxuLT03fWlmKGMuaGF2ZStxPmMubmxlbitjLm5kaXN0KXthLm1zZz0iaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCIsYy5tb2RlPWxiO2JyZWFrfWZvcig7cS0tOyljLmxlbnNbYy5oYXZlKytdPXdifX1pZihjLm1vZGU9PT1sYilicmVhaztpZigwPT09Yy5sZW5zWzI1Nl0pe2EubXNnPSJpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2siLGMubW9kZT1sYjticmVha31pZihjLmxlbmJpdHM9OSx5Yj17Yml0czpjLmxlbmJpdHN9LHhiPXYoeCxjLmxlbnMsMCxjLm5sZW4sYy5sZW5jb2RlLDAsYy53b3JrLHliKSxjLmxlbmJpdHM9eWIuYml0cyx4Yil7YS5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldCIsYy5tb2RlPWxiO2JyZWFrfWlmKGMuZGlzdGJpdHM9NixjLmRpc3Rjb2RlPWMuZGlzdGR5bix5Yj17Yml0czpjLmRpc3RiaXRzfSx4Yj12KHksYy5sZW5zLGMubmxlbixjLm5kaXN0LGMuZGlzdGNvZGUsMCxjLndvcmsseWIpLGMuZGlzdGJpdHM9eWIuYml0cyx4Yil7YS5tc2c9ImludmFsaWQgZGlzdGFuY2VzIHNldCIsYy5tb2RlPWxiO2JyZWFrfWlmKGMubW9kZT1iYixiPT09QilicmVhayBhO2Nhc2UgYmI6Yy5tb2RlPWNiO2Nhc2UgY2I6aWYoaT49NiYmaj49MjU4KXthLm5leHRfb3V0PWgsYS5hdmFpbF9vdXQ9aixhLm5leHRfaW49ZyxhLmF2YWlsX2luPWksYy5ob2xkPW0sYy5iaXRzPW4sdShhLHApLGg9YS5uZXh0X291dCxmPWEub3V0cHV0LGo9YS5hdmFpbF9vdXQsZz1hLm5leHRfaW4sZT1hLmlucHV0LGk9YS5hdmFpbF9pbixtPWMuaG9sZCxuPWMuYml0cyxjLm1vZGU9PT1WJiYoYy5iYWNrPS0xKTsKYnJlYWt9Zm9yKGMuYmFjaz0wO0FiPWMubGVuY29kZVttJigxPDxjLmxlbmJpdHMpLTFdLHFiPUFiPj4+MjQscmI9QWI+Pj4xNiYyNTUsc2I9NjU1MzUmQWIsIShuPj1xYik7KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1pZihyYiYmMD09PSgyNDAmcmIpKXtmb3IodGI9cWIsdWI9cmIsdmI9c2I7QWI9Yy5sZW5jb2RlW3ZiKygobSYoMTw8dGIrdWIpLTEpPj50YildLHFiPUFiPj4+MjQscmI9QWI+Pj4xNiYyNTUsc2I9NjU1MzUmQWIsIShuPj10YitxYik7KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1tPj4+PXRiLG4tPXRiLGMuYmFjays9dGJ9aWYobT4+Pj1xYixuLT1xYixjLmJhY2srPXFiLGMubGVuZ3RoPXNiLDA9PT1yYil7Yy5tb2RlPWhiO2JyZWFrfWlmKDMyJnJiKXtjLmJhY2s9LTEsYy5tb2RlPVY7YnJlYWt9aWYoNjQmcmIpe2EubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLGMubW9kZT1sYjticmVha31jLmV4dHJhPTE1JnJiLGMubW9kZT1kYjtjYXNlIGRiOmlmKGMuZXh0cmEpe2Zvcih6Yj1jLmV4dHJhO3piPm47KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1jLmxlbmd0aCs9bSYoMTw8Yy5leHRyYSktMSxtPj4+PWMuZXh0cmEsbi09Yy5leHRyYSxjLmJhY2srPWMuZXh0cmF9Yy53YXM9Yy5sZW5ndGgsYy5tb2RlPWViO2Nhc2UgZWI6Zm9yKDtBYj1jLmRpc3Rjb2RlW20mKDE8PGMuZGlzdGJpdHMpLTFdLHFiPUFiPj4+MjQscmI9QWI+Pj4xNiYyNTUsc2I9NjU1MzUmQWIsIShuPj1xYik7KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1pZigwPT09KDI0MCZyYikpe2Zvcih0Yj1xYix1Yj1yYix2Yj1zYjtBYj1jLmRpc3Rjb2RlW3ZiKygobSYoMTw8dGIrdWIpLTEpPj50YildLHFiPUFiPj4+MjQscmI9QWI+Pj4xNiYyNTUsc2I9NjU1MzUmQWIsIShuPj10YitxYik7KXtpZigwPT09aSlicmVhayBhO2ktLSxtKz1lW2crK108PG4sbis9OH1tPj4+PXRiLG4tPXRiLGMuYmFjays9dGJ9aWYobT4+Pj1xYixuLT1xYixjLmJhY2srPXFiLDY0JnJiKXthLm1zZz0iaW52YWxpZCBkaXN0YW5jZSBjb2RlIixjLm1vZGU9bGI7YnJlYWt9Yy5vZmZzZXQ9c2IsYy5leHRyYT0xNSZyYixjLm1vZGU9ZmI7Y2FzZSBmYjppZihjLmV4dHJhKXtmb3IoemI9Yy5leHRyYTt6Yj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9Yy5vZmZzZXQrPW0mKDE8PGMuZXh0cmEpLTEsbT4+Pj1jLmV4dHJhLG4tPWMuZXh0cmEsYy5iYWNrKz1jLmV4dHJhfWlmKGMub2Zmc2V0PmMuZG1heCl7YS5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixjLm1vZGU9bGI7YnJlYWt9Yy5tb2RlPWdiO2Nhc2UgZ2I6aWYoMD09PWopYnJlYWsgYTtpZihxPXAtaixjLm9mZnNldD5xKXtpZihxPWMub2Zmc2V0LXEscT5jLndoYXZlJiZjLnNhbmUpe2EubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsYy5tb2RlPWxiO2JyZWFrfXE+Yy53bmV4dD8ocS09Yy53bmV4dCxvYj1jLndzaXplLXEpOm9iPWMud25leHQtcSxxPmMubGVuZ3RoJiYocT1jLmxlbmd0aCkscGI9Yy53aW5kb3d9ZWxzZSBwYj1mLG9iPWgtYy5vZmZzZXQscT1jLmxlbmd0aDtxPmomJihxPWopLGotPXEsYy5sZW5ndGgtPXE7ZG8gZltoKytdPXBiW29iKytdO3doaWxlKC0tcSk7MD09PWMubGVuZ3RoJiYoYy5tb2RlPWNiKTticmVhaztjYXNlIGhiOmlmKDA9PT1qKWJyZWFrIGE7ZltoKytdPWMubGVuZ3RoLGotLSxjLm1vZGU9Y2I7YnJlYWs7Y2FzZSBpYjppZihjLndyYXApe2Zvcig7MzI+bjspe2lmKDA9PT1pKWJyZWFrIGE7aS0tLG18PWVbZysrXTw8bixuKz04fWlmKHAtPWosYS50b3RhbF9vdXQrPXAsYy50b3RhbCs9cCxwJiYoYS5hZGxlcj1jLmNoZWNrPWMuZmxhZ3M/dChjLmNoZWNrLGYscCxoLXApOnMoYy5jaGVjayxmLHAsaC1wKSkscD1qLChjLmZsYWdzP206ZChtKSkhPT1jLmNoZWNrKXthLm1zZz0iaW5jb3JyZWN0IGRhdGEgY2hlY2siLGMubW9kZT1sYjticmVha31tPTAsbj0wfWMubW9kZT1qYjtjYXNlIGpiOmlmKGMud3JhcCYmYy5mbGFncyl7Zm9yKDszMj5uOyl7aWYoMD09PWkpYnJlYWsgYTtpLS0sbSs9ZVtnKytdPDxuLG4rPTh9aWYobSE9PSg0Mjk0OTY3Mjk1JmMudG90YWwpKXthLm1zZz0iaW5jb3JyZWN0IGxlbmd0aCBjaGVjayIsYy5tb2RlPWxiO2JyZWFrfW09MCxuPTB9Yy5tb2RlPWtiO2Nhc2Uga2I6eGI9RDticmVhayBhO2Nhc2UgbGI6eGI9RzticmVhayBhO2Nhc2UgbWI6cmV0dXJuIEg7Y2FzZSBuYjpkZWZhdWx0OnJldHVybiBGfXJldHVybiBhLm5leHRfb3V0PWgsYS5hdmFpbF9vdXQ9aixhLm5leHRfaW49ZyxhLmF2YWlsX2luPWksYy5ob2xkPW0sYy5iaXRzPW4sKGMud3NpemV8fHAhPT1hLmF2YWlsX291dCYmYy5tb2RlPGxiJiYoYy5tb2RlPGlifHxiIT09eikpJiZsKGEsYS5vdXRwdXQsYS5uZXh0X291dCxwLWEuYXZhaWxfb3V0KT8oYy5tb2RlPW1iLEgpOihvLT1hLmF2YWlsX2luLHAtPWEuYXZhaWxfb3V0LGEudG90YWxfaW4rPW8sYS50b3RhbF9vdXQrPXAsYy50b3RhbCs9cCxjLndyYXAmJnAmJihhLmFkbGVyPWMuY2hlY2s9Yy5mbGFncz90KGMuY2hlY2ssZixwLGEubmV4dF9vdXQtcCk6cyhjLmNoZWNrLGYscCxhLm5leHRfb3V0LXApKSxhLmRhdGFfdHlwZT1jLmJpdHMrKGMubGFzdD82NDowKSsoYy5tb2RlPT09Vj8xMjg6MCkrKGMubW9kZT09PWJifHxjLm1vZGU9PT1ZPzI1NjowKSwoMD09PW8mJjA9PT1wfHxiPT09eikmJnhiPT09QyYmKHhiPUkpLHhiKX1mdW5jdGlvbiBuKGEpe2lmKCFhfHwhYS5zdGF0ZSlyZXR1cm4gRjt2YXIgYj1hLnN0YXRlO3JldHVybiBiLndpbmRvdyYmKGIud2luZG93PW51bGwpLGEuc3RhdGU9bnVsbCxDfWZ1bmN0aW9uIG8oYSxiKXt2YXIgYztyZXR1cm4gYSYmYS5zdGF0ZT8oYz1hLnN0YXRlLDA9PT0oMiZjLndyYXApP0Y6KGMuaGVhZD1iLGIuZG9uZT0hMSxDKSk6Rn12YXIgcCxxLHI9YSgiLi4vdXRpbHMvY29tbW9uIikscz1hKCIuL2FkbGVyMzIiKSx0PWEoIi4vY3JjMzIiKSx1PWEoIi4vaW5mZmFzdCIpLHY9YSgiLi9pbmZ0cmVlcyIpLHc9MCx4PTEseT0yLHo9NCxBPTUsQj02LEM9MCxEPTEsRT0yLEY9LTIsRz0tMyxIPS00LEk9LTUsSj04LEs9MSxMPTIsTT0zLE49NCxPPTUsUD02LFE9NyxSPTgsUz05LFQ9MTAsVT0xMSxWPTEyLFc9MTMsWD0xNCxZPTE1LFo9MTYsJD0xNyxfPTE4LGFiPTE5LGJiPTIwLGNiPTIxLGRiPTIyLGViPTIzLGZiPTI0LGdiPTI1LGhiPTI2LGliPTI3LGpiPTI4LGtiPTI5LGxiPTMwLG1iPTMxLG5iPTMyLG9iPTg1MixwYj01OTIscWI9MTUscmI9cWIsc2I9ITA7Yy5pbmZsYXRlUmVzZXQ9ZyxjLmluZmxhdGVSZXNldDI9aCxjLmluZmxhdGVSZXNldEtlZXA9ZixjLmluZmxhdGVJbml0PWosYy5pbmZsYXRlSW5pdDI9aSxjLmluZmxhdGU9bSxjLmluZmxhdGVFbmQ9bixjLmluZmxhdGVHZXRIZWFkZXI9byxjLmluZmxhdGVJbmZvPSJwYWtvIGluZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpIn0seyIuLi91dGlscy9jb21tb24iOjI3LCIuL2FkbGVyMzIiOjI5LCIuL2NyYzMyIjozMSwiLi9pbmZmYXN0IjozNCwiLi9pbmZ0cmVlcyI6MzZ9XSwzNjpbZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9YSgiLi4vdXRpbHMvY29tbW9uIiksZD0xNSxlPTg1MixmPTU5MixnPTAsaD0xLGk9MixqPVszLDQsNSw2LDcsOCw5LDEwLDExLDEzLDE1LDE3LDE5LDIzLDI3LDMxLDM1LDQzLDUxLDU5LDY3LDgzLDk5LDExNSwxMzEsMTYzLDE5NSwyMjcsMjU4LDAsMF0saz1bMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTcsMTcsMTcsMTcsMTgsMTgsMTgsMTgsMTksMTksMTksMTksMjAsMjAsMjAsMjAsMjEsMjEsMjEsMjEsMTYsNzIsNzhdLGw9WzEsMiwzLDQsNSw3LDksMTMsMTcsMjUsMzMsNDksNjUsOTcsMTI5LDE5MywyNTcsMzg1LDUxMyw3NjksMTAyNSwxNTM3LDIwNDksMzA3Myw0MDk3LDYxNDUsODE5MywxMjI4OSwxNjM4NSwyNDU3NywwLDBdLG09WzE2LDE2LDE2LDE2LDE3LDE3LDE4LDE4LDE5LDE5LDIwLDIwLDIxLDIxLDIyLDIyLDIzLDIzLDI0LDI0LDI1LDI1LDI2LDI2LDI3LDI3LDI4LDI4LDI5LDI5LDY0LDY0XTtiLmV4cG9ydHM9ZnVuY3Rpb24oYSxiLG4sbyxwLHEscixzKXt2YXIgdCx1LHYsdyx4LHkseixBLEIsQz1zLmJpdHMsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49bnVsbCxPPTAsUD1uZXcgYy5CdWYxNihkKzEpLFE9bmV3IGMuQnVmMTYoZCsxKSxSPW51bGwsUz0wO2ZvcihEPTA7ZD49RDtEKyspUFtEXT0wO2ZvcihFPTA7bz5FO0UrKylQW2JbbitFXV0rKztmb3IoSD1DLEc9ZDtHPj0xJiYwPT09UFtHXTtHLS0pO2lmKEg+RyYmKEg9RyksMD09PUcpcmV0dXJuIHBbcSsrXT0yMDk3MTUyMCxwW3ErK109MjA5NzE1MjAscy5iaXRzPTEsMDtmb3IoRj0xO0c+RiYmMD09PVBbRl07RisrKTtmb3IoRj5IJiYoSD1GKSxLPTEsRD0xO2Q+PUQ7RCsrKWlmKEs8PD0xLEstPVBbRF0sMD5LKXJldHVybi0xO2lmKEs+MCYmKGE9PT1nfHwxIT09RykpcmV0dXJuLTE7Zm9yKFFbMV09MCxEPTE7ZD5EO0QrKylRW0QrMV09UVtEXStQW0RdO2ZvcihFPTA7bz5FO0UrKykwIT09YltuK0VdJiYocltRW2JbbitFXV0rK109RSk7aWYoYT09PWc/KE49Uj1yLHk9MTkpOmE9PT1oPyhOPWosTy09MjU3LFI9ayxTLT0yNTcseT0yNTYpOihOPWwsUj1tLHk9LTEpLE09MCxFPTAsRD1GLHg9cSxJPUgsSj0wLHY9LTEsTD0xPDxILHc9TC0xLGE9PT1oJiZMPmV8fGE9PT1pJiZMPmYpcmV0dXJuIDE7Zm9yKHZhciBUPTA7Oyl7VCsrLHo9RC1KLHJbRV08eT8oQT0wLEI9cltFXSk6cltFXT55PyhBPVJbUytyW0VdXSxCPU5bTytyW0VdXSk6KEE9OTYsQj0wKSx0PTE8PEQtSix1PTE8PEksRj11O2RvIHUtPXQscFt4KyhNPj5KKSt1XT16PDwyNHxBPDwxNnxCfDA7d2hpbGUoMCE9PXUpO2Zvcih0PTE8PEQtMTtNJnQ7KXQ+Pj0xO2lmKDAhPT10PyhNJj10LTEsTSs9dCk6TT0wLEUrKywwPT09LS1QW0RdKXtpZihEPT09RylicmVhaztEPWJbbityW0VdXX1pZihEPkgmJihNJncpIT09dil7Zm9yKDA9PT1KJiYoSj1IKSx4Kz1GLEk9RC1KLEs9MTw8STtHPkkrSiYmKEstPVBbSStKXSwhKDA+PUspKTspSSsrLEs8PD0xO2lmKEwrPTE8PEksYT09PWgmJkw+ZXx8YT09PWkmJkw+ZilyZXR1cm4gMTt2PU0mdyxwW3ZdPUg8PDI0fEk8PDE2fHgtcXwwfX1yZXR1cm4gMCE9PU0mJihwW3grTV09RC1KPDwyNHw2NDw8MTZ8MCkscy5iaXRzPUgsMH19LHsiLi4vdXRpbHMvY29tbW9uIjoyN31dLDM3OltmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0IjtiLmV4cG9ydHM9ezI6Im5lZWQgZGljdGlvbmFyeSIsMToic3RyZWFtIGVuZCIsMDoiIiwiLTEiOiJmaWxlIGVycm9yIiwiLTIiOiJzdHJlYW0gZXJyb3IiLCItMyI6ImRhdGEgZXJyb3IiLCItNCI6Imluc3VmZmljaWVudCBtZW1vcnkiLCItNSI6ImJ1ZmZlciBlcnJvciIsIi02IjoiaW5jb21wYXRpYmxlIHZlcnNpb24ifX0se31dLDM4OltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSl7Zm9yKHZhciBiPWEubGVuZ3RoOy0tYj49MDspYVtiXT0wfWZ1bmN0aW9uIGUoYSl7cmV0dXJuIDI1Nj5hP2diW2FdOmdiWzI1NisoYT4+PjcpXX1mdW5jdGlvbiBmKGEsYil7YS5wZW5kaW5nX2J1ZlthLnBlbmRpbmcrK109MjU1JmIsYS5wZW5kaW5nX2J1ZlthLnBlbmRpbmcrK109Yj4+PjgmMjU1fWZ1bmN0aW9uIGcoYSxiLGMpe2EuYmlfdmFsaWQ+Vi1jPyhhLmJpX2J1Znw9Yjw8YS5iaV92YWxpZCY2NTUzNSxmKGEsYS5iaV9idWYpLGEuYmlfYnVmPWI+PlYtYS5iaV92YWxpZCxhLmJpX3ZhbGlkKz1jLVYpOihhLmJpX2J1Znw9Yjw8YS5iaV92YWxpZCY2NTUzNSxhLmJpX3ZhbGlkKz1jKX1mdW5jdGlvbiBoKGEsYixjKXtnKGEsY1syKmJdLGNbMipiKzFdKX1mdW5jdGlvbiBpKGEsYil7dmFyIGM9MDtkbyBjfD0xJmEsYT4+Pj0xLGM8PD0xO3doaWxlKC0tYj4wKTtyZXR1cm4gYz4+PjF9ZnVuY3Rpb24gaihhKXsxNj09PWEuYmlfdmFsaWQ/KGYoYSxhLmJpX2J1ZiksYS5iaV9idWY9MCxhLmJpX3ZhbGlkPTApOmEuYmlfdmFsaWQ+PTgmJihhLnBlbmRpbmdfYnVmW2EucGVuZGluZysrXT0yNTUmYS5iaV9idWYsYS5iaV9idWY+Pj04LGEuYmlfdmFsaWQtPTgpfWZ1bmN0aW9uIGsoYSxiKXt2YXIgYyxkLGUsZixnLGgsaT1iLmR5bl90cmVlLGo9Yi5tYXhfY29kZSxrPWIuc3RhdF9kZXNjLnN0YXRpY190cmVlLGw9Yi5zdGF0X2Rlc2MuaGFzX3N0cmVlLG09Yi5zdGF0X2Rlc2MuZXh0cmFfYml0cyxuPWIuc3RhdF9kZXNjLmV4dHJhX2Jhc2Usbz1iLnN0YXRfZGVzYy5tYXhfbGVuZ3RoLHA9MDtmb3IoZj0wO1U+PWY7ZisrKWEuYmxfY291bnRbZl09MDtmb3IoaVsyKmEuaGVhcFthLmhlYXBfbWF4XSsxXT0wLGM9YS5oZWFwX21heCsxO1Q+YztjKyspZD1hLmhlYXBbY10sZj1pWzIqaVsyKmQrMV0rMV0rMSxmPm8mJihmPW8scCsrKSxpWzIqZCsxXT1mLGQ+anx8KGEuYmxfY291bnRbZl0rKyxnPTAsZD49biYmKGc9bVtkLW5dKSxoPWlbMipkXSxhLm9wdF9sZW4rPWgqKGYrZyksbCYmKGEuc3RhdGljX2xlbis9aCooa1syKmQrMV0rZykpKTtpZigwIT09cCl7ZG97Zm9yKGY9by0xOzA9PT1hLmJsX2NvdW50W2ZdOylmLS07YS5ibF9jb3VudFtmXS0tLGEuYmxfY291bnRbZisxXSs9MixhLmJsX2NvdW50W29dLS0scC09Mn13aGlsZShwPjApO2ZvcihmPW87MCE9PWY7Zi0tKWZvcihkPWEuYmxfY291bnRbZl07MCE9PWQ7KWU9YS5oZWFwWy0tY10sZT5qfHwoaVsyKmUrMV0hPT1mJiYoYS5vcHRfbGVuKz0oZi1pWzIqZSsxXSkqaVsyKmVdLGlbMiplKzFdPWYpLGQtLSl9fWZ1bmN0aW9uIGwoYSxiLGMpe3ZhciBkLGUsZj1uZXcgQXJyYXkoVSsxKSxnPTA7Zm9yKGQ9MTtVPj1kO2QrKylmW2RdPWc9ZytjW2QtMV08PDE7Zm9yKGU9MDtiPj1lO2UrKyl7dmFyIGg9YVsyKmUrMV07MCE9PWgmJihhWzIqZV09aShmW2hdKyssaCkpfX1mdW5jdGlvbiBtKCl7dmFyIGEsYixjLGQsZSxmPW5ldyBBcnJheShVKzEpO2ZvcihjPTAsZD0wO08tMT5kO2QrKylmb3IoaWJbZF09YyxhPTA7YTwxPDxfW2RdO2ErKyloYltjKytdPWQ7Zm9yKGhiW2MtMV09ZCxlPTAsZD0wOzE2PmQ7ZCsrKWZvcihqYltkXT1lLGE9MDthPDE8PGFiW2RdO2ErKylnYltlKytdPWQ7Zm9yKGU+Pj03O1I+ZDtkKyspZm9yKGpiW2RdPWU8PDcsYT0wO2E8MTw8YWJbZF0tNzthKyspZ2JbMjU2K2UrK109ZDtmb3IoYj0wO1U+PWI7YisrKWZbYl09MDtmb3IoYT0wOzE0Mz49YTspZWJbMiphKzFdPTgsYSsrLGZbOF0rKztmb3IoOzI1NT49YTspZWJbMiphKzFdPTksYSsrLGZbOV0rKztmb3IoOzI3OT49YTspZWJbMiphKzFdPTcsYSsrLGZbN10rKztmb3IoOzI4Nz49YTspZWJbMiphKzFdPTgsYSsrLGZbOF0rKztmb3IobChlYixRKzEsZiksYT0wO1I+YTthKyspZmJbMiphKzFdPTUsZmJbMiphXT1pKGEsNSk7a2I9bmV3IG5iKGViLF8sUCsxLFEsVSksbGI9bmV3IG5iKGZiLGFiLDAsUixVKSxtYj1uZXcgbmIobmV3IEFycmF5KDApLGJiLDAsUyxXKX1mdW5jdGlvbiBuKGEpe3ZhciBiO2ZvcihiPTA7UT5iO2IrKylhLmR5bl9sdHJlZVsyKmJdPTA7Zm9yKGI9MDtSPmI7YisrKWEuZHluX2R0cmVlWzIqYl09MDtmb3IoYj0wO1M+YjtiKyspYS5ibF90cmVlWzIqYl09MDthLmR5bl9sdHJlZVsyKlhdPTEsYS5vcHRfbGVuPWEuc3RhdGljX2xlbj0wLGEubGFzdF9saXQ9YS5tYXRjaGVzPTB9ZnVuY3Rpb24gbyhhKXthLmJpX3ZhbGlkPjg/ZihhLGEuYmlfYnVmKTphLmJpX3ZhbGlkPjAmJihhLnBlbmRpbmdfYnVmW2EucGVuZGluZysrXT1hLmJpX2J1ZiksYS5iaV9idWY9MCxhLmJpX3ZhbGlkPTB9ZnVuY3Rpb24gcChhLGIsYyxkKXtvKGEpLGQmJihmKGEsYyksZihhLH5jKSksRS5hcnJheVNldChhLnBlbmRpbmdfYnVmLGEud2luZG93LGIsYyxhLnBlbmRpbmcpLGEucGVuZGluZys9Y31mdW5jdGlvbiBxKGEsYixjLGQpe3ZhciBlPTIqYixmPTIqYztyZXR1cm4gYVtlXTxhW2ZdfHxhW2VdPT09YVtmXSYmZFtiXTw9ZFtjXX1mdW5jdGlvbiByKGEsYixjKXtmb3IodmFyIGQ9YS5oZWFwW2NdLGU9Yzw8MTtlPD1hLmhlYXBfbGVuJiYoZTxhLmhlYXBfbGVuJiZxKGIsYS5oZWFwW2UrMV0sYS5oZWFwW2VdLGEuZGVwdGgpJiZlKyssIXEoYixkLGEuaGVhcFtlXSxhLmRlcHRoKSk7KWEuaGVhcFtjXT1hLmhlYXBbZV0sYz1lLGU8PD0xO2EuaGVhcFtjXT1kfWZ1bmN0aW9uIHMoYSxiLGMpe3ZhciBkLGYsaSxqLGs9MDtpZigwIT09YS5sYXN0X2xpdClkbyBkPWEucGVuZGluZ19idWZbYS5kX2J1ZisyKmtdPDw4fGEucGVuZGluZ19idWZbYS5kX2J1ZisyKmsrMV0sZj1hLnBlbmRpbmdfYnVmW2EubF9idWYra10saysrLDA9PT1kP2goYSxmLGIpOihpPWhiW2ZdLGgoYSxpK1ArMSxiKSxqPV9baV0sMCE9PWomJihmLT1pYltpXSxnKGEsZixqKSksZC0tLGk9ZShkKSxoKGEsaSxjKSxqPWFiW2ldLDAhPT1qJiYoZC09amJbaV0sZyhhLGQsaikpKTt3aGlsZShrPGEubGFzdF9saXQpO2goYSxYLGIpfWZ1bmN0aW9uIHQoYSxiKXt2YXIgYyxkLGUsZj1iLmR5bl90cmVlLGc9Yi5zdGF0X2Rlc2Muc3RhdGljX3RyZWUsaD1iLnN0YXRfZGVzYy5oYXNfc3RyZWUsaT1iLnN0YXRfZGVzYy5lbGVtcyxqPS0xO2ZvcihhLmhlYXBfbGVuPTAsYS5oZWFwX21heD1ULGM9MDtpPmM7YysrKTAhPT1mWzIqY10/KGEuaGVhcFsrK2EuaGVhcF9sZW5dPWo9YyxhLmRlcHRoW2NdPTApOmZbMipjKzFdPTA7Zm9yKDthLmhlYXBfbGVuPDI7KWU9YS5oZWFwWysrYS5oZWFwX2xlbl09Mj5qPysrajowLGZbMiplXT0xLGEuZGVwdGhbZV09MCxhLm9wdF9sZW4tLSxoJiYoYS5zdGF0aWNfbGVuLT1nWzIqZSsxXSk7Zm9yKGIubWF4X2NvZGU9aixjPWEuaGVhcF9sZW4+PjE7Yz49MTtjLS0pcihhLGYsYyk7ZT1pO2RvIGM9YS5oZWFwWzFdLGEuaGVhcFsxXT1hLmhlYXBbYS5oZWFwX2xlbi0tXSxyKGEsZiwxKSxkPWEuaGVhcFsxXSxhLmhlYXBbLS1hLmhlYXBfbWF4XT1jLGEuaGVhcFstLWEuaGVhcF9tYXhdPWQsZlsyKmVdPWZbMipjXStmWzIqZF0sYS5kZXB0aFtlXT0oYS5kZXB0aFtjXT49YS5kZXB0aFtkXT9hLmRlcHRoW2NdOmEuZGVwdGhbZF0pKzEsZlsyKmMrMV09ZlsyKmQrMV09ZSxhLmhlYXBbMV09ZSsrLHIoYSxmLDEpO3doaWxlKGEuaGVhcF9sZW4+PTIpO2EuaGVhcFstLWEuaGVhcF9tYXhdPWEuaGVhcFsxXSxrKGEsYiksbChmLGosYS5ibF9jb3VudCl9ZnVuY3Rpb24gdShhLGIsYyl7dmFyIGQsZSxmPS0xLGc9YlsxXSxoPTAsaT03LGo9NDtmb3IoMD09PWcmJihpPTEzOCxqPTMpLGJbMiooYysxKSsxXT02NTUzNSxkPTA7Yz49ZDtkKyspZT1nLGc9YlsyKihkKzEpKzFdLCsraDxpJiZlPT09Z3x8KGo+aD9hLmJsX3RyZWVbMiplXSs9aDowIT09ZT8oZSE9PWYmJmEuYmxfdHJlZVsyKmVdKyssYS5ibF90cmVlWzIqWV0rKyk6MTA+PWg/YS5ibF90cmVlWzIqWl0rKzphLmJsX3RyZWVbMiokXSsrLGg9MCxmPWUsMD09PWc/KGk9MTM4LGo9Myk6ZT09PWc/KGk9NixqPTMpOihpPTcsaj00KSl9ZnVuY3Rpb24gdihhLGIsYyl7dmFyIGQsZSxmPS0xLGk9YlsxXSxqPTAsaz03LGw9NDtmb3IoMD09PWkmJihrPTEzOCxsPTMpLGQ9MDtjPj1kO2QrKylpZihlPWksaT1iWzIqKGQrMSkrMV0sISgrK2o8ayYmZT09PWkpKXtpZihsPmope2RvIGgoYSxlLGEuYmxfdHJlZSk7d2hpbGUoMCE9PS0tail9ZWxzZSAwIT09ZT8oZSE9PWYmJihoKGEsZSxhLmJsX3RyZWUpLGotLSksaChhLFksYS5ibF90cmVlKSxnKGEsai0zLDIpKToxMD49aj8oaChhLFosYS5ibF90cmVlKSxnKGEsai0zLDMpKTooaChhLCQsYS5ibF90cmVlKSxnKGEsai0xMSw3KSk7aj0wLGY9ZSwwPT09aT8oaz0xMzgsbD0zKTplPT09aT8oaz02LGw9Myk6KGs9NyxsPTQpfX1mdW5jdGlvbiB3KGEpe3ZhciBiO2Zvcih1KGEsYS5keW5fbHRyZWUsYS5sX2Rlc2MubWF4X2NvZGUpLHUoYSxhLmR5bl9kdHJlZSxhLmRfZGVzYy5tYXhfY29kZSksdChhLGEuYmxfZGVzYyksYj1TLTE7Yj49MyYmMD09PWEuYmxfdHJlZVsyKmNiW2JdKzFdO2ItLSk7cmV0dXJuIGEub3B0X2xlbis9MyooYisxKSs1KzUrNCxifWZ1bmN0aW9uIHgoYSxiLGMsZCl7dmFyIGU7Zm9yKGcoYSxiLTI1Nyw1KSxnKGEsYy0xLDUpLGcoYSxkLTQsNCksZT0wO2Q+ZTtlKyspZyhhLGEuYmxfdHJlZVsyKmNiW2VdKzFdLDMpO3YoYSxhLmR5bl9sdHJlZSxiLTEpLHYoYSxhLmR5bl9kdHJlZSxjLTEpfWZ1bmN0aW9uIHkoYSl7dmFyIGIsYz00MDkzNjI0NDQ3O2ZvcihiPTA7MzE+PWI7YisrLGM+Pj49MSlpZigxJmMmJjAhPT1hLmR5bl9sdHJlZVsyKmJdKXJldHVybiBHO2lmKDAhPT1hLmR5bl9sdHJlZVsxOF18fDAhPT1hLmR5bl9sdHJlZVsyMF18fDAhPT1hLmR5bl9sdHJlZVsyNl0pcmV0dXJuIEg7Zm9yKGI9MzI7UD5iO2IrKylpZigwIT09YS5keW5fbHRyZWVbMipiXSlyZXR1cm4gSDtyZXR1cm4gR31mdW5jdGlvbiB6KGEpe3BifHwobSgpLHBiPSEwKSxhLmxfZGVzYz1uZXcgb2IoYS5keW5fbHRyZWUsa2IpLGEuZF9kZXNjPW5ldyBvYihhLmR5bl9kdHJlZSxsYiksYS5ibF9kZXNjPW5ldyBvYihhLmJsX3RyZWUsbWIpLGEuYmlfYnVmPTAsYS5iaV92YWxpZD0wLG4oYSl9ZnVuY3Rpb24gQShhLGIsYyxkKXtnKGEsKEo8PDEpKyhkPzE6MCksMykscChhLGIsYywhMCl9ZnVuY3Rpb24gQihhKXtnKGEsSzw8MSwzKSxoKGEsWCxlYiksaihhKX1mdW5jdGlvbiBDKGEsYixjLGQpe3ZhciBlLGYsaD0wO2EubGV2ZWw+MD8oYS5zdHJtLmRhdGFfdHlwZT09PUkmJihhLnN0cm0uZGF0YV90eXBlPXkoYSkpLHQoYSxhLmxfZGVzYyksdChhLGEuZF9kZXNjKSxoPXcoYSksZT1hLm9wdF9sZW4rMys3Pj4+MyxmPWEuc3RhdGljX2xlbiszKzc+Pj4zLGU+PWYmJihlPWYpKTplPWY9Yys1LGU+PWMrNCYmLTEhPT1iP0EoYSxiLGMsZCk6YS5zdHJhdGVneT09PUZ8fGY9PT1lPyhnKGEsKEs8PDEpKyhkPzE6MCksMykscyhhLGViLGZiKSk6KGcoYSwoTDw8MSkrKGQ/MTowKSwzKSx4KGEsYS5sX2Rlc2MubWF4X2NvZGUrMSxhLmRfZGVzYy5tYXhfY29kZSsxLGgrMSkscyhhLGEuZHluX2x0cmVlLGEuZHluX2R0cmVlKSksbihhKSxkJiZvKGEpfWZ1bmN0aW9uIEQoYSxiLGMpe3JldHVybiBhLnBlbmRpbmdfYnVmW2EuZF9idWYrMiphLmxhc3RfbGl0XT1iPj4+OCYyNTUsYS5wZW5kaW5nX2J1ZlthLmRfYnVmKzIqYS5sYXN0X2xpdCsxXT0yNTUmYixhLnBlbmRpbmdfYnVmW2EubF9idWYrYS5sYXN0X2xpdF09MjU1JmMsYS5sYXN0X2xpdCsrLDA9PT1iP2EuZHluX2x0cmVlWzIqY10rKzooYS5tYXRjaGVzKyssYi0tLGEuZHluX2x0cmVlWzIqKGhiW2NdK1ArMSldKyssYS5keW5fZHRyZWVbMiplKGIpXSsrKSxhLmxhc3RfbGl0PT09YS5saXRfYnVmc2l6ZS0xfXZhciBFPWEoIi4uL3V0aWxzL2NvbW1vbiIpLEY9NCxHPTAsSD0xLEk9MixKPTAsSz0xLEw9MixNPTMsTj0yNTgsTz0yOSxQPTI1NixRPVArMStPLFI9MzAsUz0xOSxUPTIqUSsxLFU9MTUsVj0xNixXPTcsWD0yNTYsWT0xNixaPTE3LCQ9MTgsXz1bMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwXSxhYj1bMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxM10sYmI9WzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwzLDddLGNiPVsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSxkYj01MTIsZWI9bmV3IEFycmF5KDIqKFErMikpO2QoZWIpO3ZhciBmYj1uZXcgQXJyYXkoMipSKTtkKGZiKTt2YXIgZ2I9bmV3IEFycmF5KGRiKTtkKGdiKTt2YXIgaGI9bmV3IEFycmF5KE4tTSsxKTtkKGhiKTt2YXIgaWI9bmV3IEFycmF5KE8pO2QoaWIpO3ZhciBqYj1uZXcgQXJyYXkoUik7ZChqYik7dmFyIGtiLGxiLG1iLG5iPWZ1bmN0aW9uKGEsYixjLGQsZSl7dGhpcy5zdGF0aWNfdHJlZT1hLHRoaXMuZXh0cmFfYml0cz1iLHRoaXMuZXh0cmFfYmFzZT1jLHRoaXMuZWxlbXM9ZCx0aGlzLm1heF9sZW5ndGg9ZSx0aGlzLmhhc19zdHJlZT1hJiZhLmxlbmd0aH0sb2I9ZnVuY3Rpb24oYSxiKXt0aGlzLmR5bl90cmVlPWEsdGhpcy5tYXhfY29kZT0wLHRoaXMuc3RhdF9kZXNjPWJ9LHBiPSExO2MuX3RyX2luaXQ9eixjLl90cl9zdG9yZWRfYmxvY2s9QSxjLl90cl9mbHVzaF9ibG9jaz1DLGMuX3RyX3RhbGx5PUQsYy5fdHJfYWxpZ249Qn0seyIuLi91dGlscy9jb21tb24iOjI3fV0sMzk6W2Z1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoKXt0aGlzLmlucHV0PW51bGwsdGhpcy5uZXh0X2luPTAsdGhpcy5hdmFpbF9pbj0wLHRoaXMudG90YWxfaW49MCx0aGlzLm91dHB1dD1udWxsLHRoaXMubmV4dF9vdXQ9MCx0aGlzLmF2YWlsX291dD0wLHRoaXMudG90YWxfb3V0PTAsdGhpcy5tc2c9IiIsdGhpcy5zdGF0ZT1udWxsLHRoaXMuZGF0YV90eXBlPTIsdGhpcy5hZGxlcj0wfWIuZXhwb3J0cz1jfSx7fV19LHt9LFs5XSkoOSl9KTs="></script>
|
|
<script src="data:application/javascript;base64,LyohIHBkZm1ha2UgdjAuMS4zNiwgQGxpY2Vuc2UgTUlULCBAbGluayBodHRwOi8vcGRmbWFrZS5vcmcgKi8KKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHsKCWlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JykKCQltb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTsKCWVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKQoJCWRlZmluZShbXSwgZmFjdG9yeSk7CgllbHNlIHsKCQl2YXIgYSA9IGZhY3RvcnkoKTsKCQlmb3IodmFyIGkgaW4gYSkgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyA/IGV4cG9ydHMgOiByb290KVtpXSA9IGFbaV07Cgl9Cn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbigpIHsKcmV0dXJuIC8qKioqKiovIChmdW5jdGlvbihtb2R1bGVzKSB7IC8vIHdlYnBhY2tCb290c3RyYXAKLyoqKioqKi8gCS8vIFRoZSBtb2R1bGUgY2FjaGUKLyoqKioqKi8gCXZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307Ci8qKioqKiovCi8qKioqKiovIAkvLyBUaGUgcmVxdWlyZSBmdW5jdGlvbgovKioqKioqLyAJZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkgewovKioqKioqLwovKioqKioqLyAJCS8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZQovKioqKioqLyAJCWlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7Ci8qKioqKiovIAkJCXJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzOwovKioqKioqLyAJCX0KLyoqKioqKi8gCQkvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKQovKioqKioqLyAJCXZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKLyoqKioqKi8gCQkJaTogbW9kdWxlSWQsCi8qKioqKiovIAkJCWw6IGZhbHNlLAovKioqKioqLyAJCQlleHBvcnRzOiB7fQovKioqKioqLyAJCX07Ci8qKioqKiovCi8qKioqKiovIAkJLy8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uCi8qKioqKiovIAkJbW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7Ci8qKioqKiovCi8qKioqKiovIAkJLy8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZAovKioqKioqLyAJCW1vZHVsZS5sID0gdHJ1ZTsKLyoqKioqKi8KLyoqKioqKi8gCQkvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZQovKioqKioqLyAJCXJldHVybiBtb2R1bGUuZXhwb3J0czsKLyoqKioqKi8gCX0KLyoqKioqKi8KLyoqKioqKi8KLyoqKioqKi8gCS8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pCi8qKioqKiovIAlfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzOwovKioqKioqLwovKioqKioqLyAJLy8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGUKLyoqKioqKi8gCV9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7Ci8qKioqKiovCi8qKioqKiovIAkvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHMKLyoqKioqKi8gCV9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikgewovKioqKioqLyAJCWlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHsKLyoqKioqKi8gCQkJT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsKLyoqKioqKi8gCQkJCWNvbmZpZ3VyYWJsZTogZmFsc2UsCi8qKioqKiovIAkJCQllbnVtZXJhYmxlOiB0cnVlLAovKioqKioqLyAJCQkJZ2V0OiBnZXR0ZXIKLyoqKioqKi8gCQkJfSk7Ci8qKioqKiovIAkJfQovKioqKioqLyAJfTsKLyoqKioqKi8KLyoqKioqKi8gCS8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzCi8qKioqKiovIAlfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHsKLyoqKioqKi8gCQl2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID8KLyoqKioqKi8gCQkJZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDoKLyoqKioqKi8gCQkJZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTsKLyoqKioqKi8gCQlfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7Ci8qKioqKiovIAkJcmV0dXJuIGdldHRlcjsKLyoqKioqKi8gCX07Ci8qKioqKiovCi8qKioqKiovIAkvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwKLyoqKioqKi8gCV9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTsKLyoqKioqKi8KLyoqKioqKi8gCS8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fCi8qKioqKiovIAlfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSAiIjsKLyoqKioqKi8KLyoqKioqKi8gCS8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0cwovKioqKioqLyAJcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMTIyKTsKLyoqKioqKi8gfSkKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLyoqKioqKi8gKFsKLyogMCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKZnVuY3Rpb24gaXNTdHJpbmcodmFyaWFibGUpIHsKCXJldHVybiB0eXBlb2YgdmFyaWFibGUgPT09ICdzdHJpbmcnIHx8IHZhcmlhYmxlIGluc3RhbmNlb2YgU3RyaW5nOwp9CgpmdW5jdGlvbiBpc051bWJlcih2YXJpYWJsZSkgewoJcmV0dXJuIHR5cGVvZiB2YXJpYWJsZSA9PT0gJ251bWJlcicgfHwgdmFyaWFibGUgaW5zdGFuY2VvZiBOdW1iZXI7Cn0KCmZ1bmN0aW9uIGlzQm9vbGVhbih2YXJpYWJsZSkgewoJcmV0dXJuIHR5cGVvZiB2YXJpYWJsZSA9PT0gJ2Jvb2xlYW4nOwp9CgpmdW5jdGlvbiBpc0FycmF5KHZhcmlhYmxlKSB7CglyZXR1cm4gQXJyYXkuaXNBcnJheSh2YXJpYWJsZSk7Cn0KCmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFyaWFibGUpIHsKCXJldHVybiB0eXBlb2YgdmFyaWFibGUgPT09ICdmdW5jdGlvbic7Cn0KCmZ1bmN0aW9uIGlzT2JqZWN0KHZhcmlhYmxlKSB7CglyZXR1cm4gdmFyaWFibGUgIT09IG51bGwgJiYgdHlwZW9mIHZhcmlhYmxlID09PSAnb2JqZWN0JzsKfQoKZnVuY3Rpb24gaXNOdWxsKHZhcmlhYmxlKSB7CglyZXR1cm4gdmFyaWFibGUgPT09IG51bGw7Cn0KCmZ1bmN0aW9uIGlzVW5kZWZpbmVkKHZhcmlhYmxlKSB7CglyZXR1cm4gdmFyaWFibGUgPT09IHVuZGVmaW5lZDsKfQoKZnVuY3Rpb24gcGFjaygpIHsKCXZhciByZXN1bHQgPSB7fTsKCglmb3IgKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQl2YXIgb2JqID0gYXJndW1lbnRzW2ldOwoKCQlpZiAob2JqKSB7CgkJCWZvciAodmFyIGtleSBpbiBvYmopIHsKCQkJCWlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkgewoJCQkJCXJlc3VsdFtrZXldID0gb2JqW2tleV07CgkJCQl9CgkJCX0KCQl9Cgl9CgoJcmV0dXJuIHJlc3VsdDsKfQoKZnVuY3Rpb24gb2Zmc2V0VmVjdG9yKHZlY3RvciwgeCwgeSkgewoJc3dpdGNoICh2ZWN0b3IudHlwZSkgewoJCWNhc2UgJ2VsbGlwc2UnOgoJCWNhc2UgJ3JlY3QnOgoJCQl2ZWN0b3IueCArPSB4OwoJCQl2ZWN0b3IueSArPSB5OwoJCQlicmVhazsKCQljYXNlICdsaW5lJzoKCQkJdmVjdG9yLngxICs9IHg7CgkJCXZlY3Rvci54MiArPSB4OwoJCQl2ZWN0b3IueTEgKz0geTsKCQkJdmVjdG9yLnkyICs9IHk7CgkJCWJyZWFrOwoJCWNhc2UgJ3BvbHlsaW5lJzoKCQkJZm9yICh2YXIgaSA9IDAsIGwgPSB2ZWN0b3IucG9pbnRzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCQkJdmVjdG9yLnBvaW50c1tpXS54ICs9IHg7CgkJCQl2ZWN0b3IucG9pbnRzW2ldLnkgKz0geTsKCQkJfQoJCQlicmVhazsKCX0KfQoKZnVuY3Rpb24gZm9udFN0cmluZ2lmeShrZXksIHZhbCkgewoJaWYgKGtleSA9PT0gJ2ZvbnQnKSB7CgkJcmV0dXJuICdmb250JzsKCX0KCXJldHVybiB2YWw7Cn0KCm1vZHVsZS5leHBvcnRzID0gewoJaXNTdHJpbmc6IGlzU3RyaW5nLAoJaXNOdW1iZXI6IGlzTnVtYmVyLAoJaXNCb29sZWFuOiBpc0Jvb2xlYW4sCglpc0FycmF5OiBpc0FycmF5LAoJaXNGdW5jdGlvbjogaXNGdW5jdGlvbiwKCWlzT2JqZWN0OiBpc09iamVjdCwKCWlzTnVsbDogaXNOdWxsLAoJaXNVbmRlZmluZWQ6IGlzVW5kZWZpbmVkLAoJcGFjazogcGFjaywKCWZvbnRTdHJpbmdpZnk6IGZvbnRTdHJpbmdpZnksCglvZmZzZXRWZWN0b3I6IG9mZnNldFZlY3Rvcgp9OwoKCi8qKiovIH0pLAovKiAxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCkgey8qIQogKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci4KICoKICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGZlcm9zc0BmZXJvc3Mub3JnPiA8aHR0cDovL2Zlcm9zcy5vcmc+CiAqIEBsaWNlbnNlICBNSVQKICovCi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovCgoKCnZhciBiYXNlNjQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNCkKdmFyIGllZWU3NTQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNSkKdmFyIGlzQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc2KQoKZXhwb3J0cy5CdWZmZXIgPSBCdWZmZXIKZXhwb3J0cy5TbG93QnVmZmVyID0gU2xvd0J1ZmZlcgpleHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTAKCi8qKgogKiBJZiBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgOgogKiAgID09PSB0cnVlICAgIFVzZSBVaW50OEFycmF5IGltcGxlbWVudGF0aW9uIChmYXN0ZXN0KQogKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpCiAqCiAqIEJyb3dzZXJzIHRoYXQgc3VwcG9ydCB0eXBlZCBhcnJheXMgYXJlIElFIDEwKywgRmlyZWZveCA0KywgQ2hyb21lIDcrLCBTYWZhcmkgNS4xKywKICogT3BlcmEgMTEuNissIGlPUyA0LjIrLgogKgogKiBEdWUgdG8gdmFyaW91cyBicm93c2VyIGJ1Z3MsIHNvbWV0aW1lcyB0aGUgT2JqZWN0IGltcGxlbWVudGF0aW9uIHdpbGwgYmUgdXNlZCBldmVuCiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLgogKgogKiBOb3RlOgogKgogKiAgIC0gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWAgaW5zdGFuY2VzLAogKiAgICAgU2VlOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU0MzguCiAqCiAqICAgLSBDaHJvbWUgOS0xMCBpcyBtaXNzaW5nIHRoZSBgVHlwZWRBcnJheS5wcm90b3R5cGUuc3ViYXJyYXlgIGZ1bmN0aW9uLgogKgogKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZgogKiAgICAgaW5jb3JyZWN0IGxlbmd0aCBpbiBzb21lIHNpdHVhdGlvbnMuCgogKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleQogKiBnZXQgdGhlIE9iamVjdCBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgc2xvd2VyIGJ1dCBiZWhhdmVzIGNvcnJlY3RseS4KICovCkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZAogID8gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQKICA6IHR5cGVkQXJyYXlTdXBwb3J0KCkKCi8qCiAqIEV4cG9ydCBrTWF4TGVuZ3RoIGFmdGVyIHR5cGVkIGFycmF5IHN1cHBvcnQgaXMgZGV0ZXJtaW5lZC4KICovCmV4cG9ydHMua01heExlbmd0aCA9IGtNYXhMZW5ndGgoKQoKZnVuY3Rpb24gdHlwZWRBcnJheVN1cHBvcnQgKCkgewogIHRyeSB7CiAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSkKICAgIGFyci5fX3Byb3RvX18gPSB7X19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSwgZm9vOiBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9fQogICAgcmV0dXJuIGFyci5mb28oKSA9PT0gNDIgJiYgLy8gdHlwZWQgYXJyYXkgaW5zdGFuY2VzIGNhbiBiZSBhdWdtZW50ZWQKICAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YAogICAgICAgIGFyci5zdWJhcnJheSgxLCAxKS5ieXRlTGVuZ3RoID09PSAwIC8vIGllMTAgaGFzIGJyb2tlbiBgc3ViYXJyYXlgCiAgfSBjYXRjaCAoZSkgewogICAgcmV0dXJuIGZhbHNlCiAgfQp9CgpmdW5jdGlvbiBrTWF4TGVuZ3RoICgpIHsKICByZXR1cm4gQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQKICAgID8gMHg3ZmZmZmZmZgogICAgOiAweDNmZmZmZmZmCn0KCmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlciAodGhhdCwgbGVuZ3RoKSB7CiAgaWYgKGtNYXhMZW5ndGgoKSA8IGxlbmd0aCkgewogICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoJykKICB9CiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2UKICAgIHRoYXQgPSBuZXcgVWludDhBcnJheShsZW5ndGgpCiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGUKICB9IGVsc2UgewogICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzcwogICAgaWYgKHRoYXQgPT09IG51bGwpIHsKICAgICAgdGhhdCA9IG5ldyBCdWZmZXIobGVuZ3RoKQogICAgfQogICAgdGhhdC5sZW5ndGggPSBsZW5ndGgKICB9CgogIHJldHVybiB0aGF0Cn0KCi8qKgogKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGhhdmUgdGhlaXIKICogcHJvdG90eXBlIGNoYW5nZWQgdG8gYEJ1ZmZlci5wcm90b3R5cGVgLiBGdXJ0aGVybW9yZSwgYEJ1ZmZlcmAgaXMgYSBzdWJjbGFzcyBvZgogKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzCiAqIGFuZCB0aGUgYFVpbnQ4QXJyYXlgIG1ldGhvZHMuIFNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0CiAqIHJldHVybnMgYSBzaW5nbGUgb2N0ZXQuCiAqCiAqIFRoZSBgVWludDhBcnJheWAgcHJvdG90eXBlIHJlbWFpbnMgdW5tb2RpZmllZC4KICovCgpmdW5jdGlvbiBCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7CiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJiAhKHRoaXMgaW5zdGFuY2VvZiBCdWZmZXIpKSB7CiAgICByZXR1cm4gbmV3IEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkKICB9CgogIC8vIENvbW1vbiBjYXNlLgogIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykgewogICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgJ0lmIGVuY29kaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJwogICAgICApCiAgICB9CiAgICByZXR1cm4gYWxsb2NVbnNhZmUodGhpcywgYXJnKQogIH0KICByZXR1cm4gZnJvbSh0aGlzLCBhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkKfQoKQnVmZmVyLnBvb2xTaXplID0gODE5MiAvLyBub3QgdXNlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uCgovLyBUT0RPOiBMZWdhY3ksIG5vdCBuZWVkZWQgYW55bW9yZS4gUmVtb3ZlIGluIG5leHQgbWFqb3IgdmVyc2lvbi4KQnVmZmVyLl9hdWdtZW50ID0gZnVuY3Rpb24gKGFycikgewogIGFyci5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlCiAgcmV0dXJuIGFycgp9CgpmdW5jdGlvbiBmcm9tICh0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7CiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKQogIH0KCiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdmFsdWUgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgewogICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKQogIH0KCiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHsKICAgIHJldHVybiBmcm9tU3RyaW5nKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KQogIH0KCiAgcmV0dXJuIGZyb21PYmplY3QodGhhdCwgdmFsdWUpCn0KCi8qKgogKiBGdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCdWZmZXIoYXJnLCBlbmNvZGluZykgYnV0IHRocm93cyBhIFR5cGVFcnJvcgogKiBpZiB2YWx1ZSBpcyBhIG51bWJlci4KICogQnVmZmVyLmZyb20oc3RyWywgZW5jb2RpbmddKQogKiBCdWZmZXIuZnJvbShhcnJheSkKICogQnVmZmVyLmZyb20oYnVmZmVyKQogKiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSkKICoqLwpCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7CiAgcmV0dXJuIGZyb20obnVsbCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkKfQoKaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CiAgQnVmZmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBVaW50OEFycmF5LnByb3RvdHlwZQogIEJ1ZmZlci5fX3Byb3RvX18gPSBVaW50OEFycmF5CiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC5zcGVjaWVzICYmCiAgICAgIEJ1ZmZlcltTeW1ib2wuc3BlY2llc10gPT09IEJ1ZmZlcikgewogICAgLy8gRml4IHN1YmFycmF5KCkgaW4gRVMyMDE2LiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvOTcKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIsIFN5bWJvbC5zcGVjaWVzLCB7CiAgICAgIHZhbHVlOiBudWxsLAogICAgICBjb25maWd1cmFibGU6IHRydWUKICAgIH0pCiAgfQp9CgpmdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7CiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignInNpemUiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKQogIH0gZWxzZSBpZiAoc2l6ZSA8IDApIHsKICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCcic2l6ZSIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKQogIH0KfQoKZnVuY3Rpb24gYWxsb2MgKHRoYXQsIHNpemUsIGZpbGwsIGVuY29kaW5nKSB7CiAgYXNzZXJ0U2l6ZShzaXplKQogIGlmIChzaXplIDw9IDApIHsKICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkKICB9CiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkgewogICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXMKICAgIC8vIHByZXZlbnRzIGFjY2lkZW50YWxseSBzZW5kaW5nIGluIGEgbnVtYmVyIHRoYXQgd291bGQKICAgIC8vIGJlIGludGVycHJldHRlZCBhcyBhIHN0YXJ0IG9mZnNldC4KICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnCiAgICAgID8gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbCwgZW5jb2RpbmcpCiAgICAgIDogY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbCkKICB9CiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKQp9CgovKioKICogQ3JlYXRlcyBhIG5ldyBmaWxsZWQgQnVmZmVyIGluc3RhbmNlLgogKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pCiAqKi8KQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7CiAgcmV0dXJuIGFsbG9jKG51bGwsIHNpemUsIGZpbGwsIGVuY29kaW5nKQp9CgpmdW5jdGlvbiBhbGxvY1Vuc2FmZSAodGhhdCwgc2l6ZSkgewogIGFzc2VydFNpemUoc2l6ZSkKICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUgPCAwID8gMCA6IGNoZWNrZWQoc2l6ZSkgfCAwKQogIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgIHRoYXRbaV0gPSAwCiAgICB9CiAgfQogIHJldHVybiB0aGF0Cn0KCi8qKgogKiBFcXVpdmFsZW50IHRvIEJ1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLgogKiAqLwpCdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkgewogIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKQp9Ci8qKgogKiBFcXVpdmFsZW50IHRvIFNsb3dCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS4KICovCkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkgewogIHJldHVybiBhbGxvY1Vuc2FmZShudWxsLCBzaXplKQp9CgpmdW5jdGlvbiBmcm9tU3RyaW5nICh0aGF0LCBzdHJpbmcsIGVuY29kaW5nKSB7CiAgaWYgKHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycgfHwgZW5jb2RpbmcgPT09ICcnKSB7CiAgICBlbmNvZGluZyA9ICd1dGY4JwogIH0KCiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJyJlbmNvZGluZyIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpCiAgfQoKICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDAKICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbmd0aCkKCiAgdmFyIGFjdHVhbCA9IHRoYXQud3JpdGUoc3RyaW5nLCBlbmNvZGluZykKCiAgaWYgKGFjdHVhbCAhPT0gbGVuZ3RoKSB7CiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGwKICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuCiAgICAvLyAnYWJ4eGNkJyB3aWxsIGJlIHRyZWF0ZWQgYXMgJ2FiJykKICAgIHRoYXQgPSB0aGF0LnNsaWNlKDAsIGFjdHVhbCkKICB9CgogIHJldHVybiB0aGF0Cn0KCmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKHRoYXQsIGFycmF5KSB7CiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMAogIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuZ3RoKQogIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHsKICAgIHRoYXRbaV0gPSBhcnJheVtpXSAmIDI1NQogIH0KICByZXR1cm4gdGhhdAp9CgpmdW5jdGlvbiBmcm9tQXJyYXlCdWZmZXIgKHRoYXQsIGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpIHsKICBhcnJheS5ieXRlTGVuZ3RoIC8vIHRoaXMgdGhyb3dzIGlmIGBhcnJheWAgaXMgbm90IGEgdmFsaWQgQXJyYXlCdWZmZXIKCiAgaWYgKGJ5dGVPZmZzZXQgPCAwIHx8IGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7CiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCdvZmZzZXRcJyBpcyBvdXQgb2YgYm91bmRzJykKICB9CgogIGlmIChhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCArIChsZW5ndGggfHwgMCkpIHsKICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcJ2xlbmd0aFwnIGlzIG91dCBvZiBib3VuZHMnKQogIH0KCiAgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCAmJiBsZW5ndGggPT09IHVuZGVmaW5lZCkgewogICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSkKICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7CiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0KQogIH0gZWxzZSB7CiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpCiAgfQoKICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZQogICAgdGhhdCA9IGFycmF5CiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGUKICB9IGVsc2UgewogICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzcwogICAgdGhhdCA9IGZyb21BcnJheUxpa2UodGhhdCwgYXJyYXkpCiAgfQogIHJldHVybiB0aGF0Cn0KCmZ1bmN0aW9uIGZyb21PYmplY3QgKHRoYXQsIG9iaikgewogIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqKSkgewogICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwCiAgICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIGxlbikKCiAgICBpZiAodGhhdC5sZW5ndGggPT09IDApIHsKICAgICAgcmV0dXJuIHRoYXQKICAgIH0KCiAgICBvYmouY29weSh0aGF0LCAwLCAwLCBsZW4pCiAgICByZXR1cm4gdGhhdAogIH0KCiAgaWYgKG9iaikgewogICAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmCiAgICAgICAgb2JqLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB8fCAnbGVuZ3RoJyBpbiBvYmopIHsKICAgICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBpc25hbihvYmoubGVuZ3RoKSkgewogICAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgMCkKICAgICAgfQogICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmopCiAgICB9CgogICAgaWYgKG9iai50eXBlID09PSAnQnVmZmVyJyAmJiBpc0FycmF5KG9iai5kYXRhKSkgewogICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmouZGF0YSkKICAgIH0KICB9CgogIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4nKQp9CgpmdW5jdGlvbiBjaGVja2VkIChsZW5ndGgpIHsKICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBrTWF4TGVuZ3RoKClgIGhlcmUgYmVjYXVzZSB0aGF0IGZhaWxzIHdoZW4KICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLikKICBpZiAobGVuZ3RoID49IGtNYXhMZW5ndGgoKSkgewogICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gJyArCiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsga01heExlbmd0aCgpLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKQogIH0KICByZXR1cm4gbGVuZ3RoIHwgMAp9CgpmdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHsKICBpZiAoK2xlbmd0aCAhPSBsZW5ndGgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXEKICAgIGxlbmd0aCA9IDAKICB9CiAgcmV0dXJuIEJ1ZmZlci5hbGxvYygrbGVuZ3RoKQp9CgpCdWZmZXIuaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlciAoYikgewogIHJldHVybiAhIShiICE9IG51bGwgJiYgYi5faXNCdWZmZXIpCn0KCkJ1ZmZlci5jb21wYXJlID0gZnVuY3Rpb24gY29tcGFyZSAoYSwgYikgewogIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMnKQogIH0KCiAgaWYgKGEgPT09IGIpIHJldHVybiAwCgogIHZhciB4ID0gYS5sZW5ndGgKICB2YXIgeSA9IGIubGVuZ3RoCgogIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7CiAgICBpZiAoYVtpXSAhPT0gYltpXSkgewogICAgICB4ID0gYVtpXQogICAgICB5ID0gYltpXQogICAgICBicmVhawogICAgfQogIH0KCiAgaWYgKHggPCB5KSByZXR1cm4gLTEKICBpZiAoeSA8IHgpIHJldHVybiAxCiAgcmV0dXJuIDAKfQoKQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykgewogIHN3aXRjaCAoU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpKSB7CiAgICBjYXNlICdoZXgnOgogICAgY2FzZSAndXRmOCc6CiAgICBjYXNlICd1dGYtOCc6CiAgICBjYXNlICdhc2NpaSc6CiAgICBjYXNlICdsYXRpbjEnOgogICAgY2FzZSAnYmluYXJ5JzoKICAgIGNhc2UgJ2Jhc2U2NCc6CiAgICBjYXNlICd1Y3MyJzoKICAgIGNhc2UgJ3Vjcy0yJzoKICAgIGNhc2UgJ3V0ZjE2bGUnOgogICAgY2FzZSAndXRmLTE2bGUnOgogICAgICByZXR1cm4gdHJ1ZQogICAgZGVmYXVsdDoKICAgICAgcmV0dXJuIGZhbHNlCiAgfQp9CgpCdWZmZXIuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0IChsaXN0LCBsZW5ndGgpIHsKICBpZiAoIWlzQXJyYXkobGlzdCkpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJyJsaXN0IiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKQogIH0KCiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7CiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApCiAgfQoKICB2YXIgaQogIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCkgewogICAgbGVuZ3RoID0gMAogICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHsKICAgICAgbGVuZ3RoICs9IGxpc3RbaV0ubGVuZ3RoCiAgICB9CiAgfQoKICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbmd0aCkKICB2YXIgcG9zID0gMAogIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7CiAgICB2YXIgYnVmID0gbGlzdFtpXQogICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgewogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCcibGlzdCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJykKICAgIH0KICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKQogICAgcG9zICs9IGJ1Zi5sZW5ndGgKICB9CiAgcmV0dXJuIGJ1ZmZlcgp9CgpmdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7CiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihzdHJpbmcpKSB7CiAgICByZXR1cm4gc3RyaW5nLmxlbmd0aAogIH0KICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3ID09PSAnZnVuY3Rpb24nICYmCiAgICAgIChBcnJheUJ1ZmZlci5pc1ZpZXcoc3RyaW5nKSB8fCBzdHJpbmcgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikpIHsKICAgIHJldHVybiBzdHJpbmcuYnl0ZUxlbmd0aAogIH0KICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHsKICAgIHN0cmluZyA9ICcnICsgc3RyaW5nCiAgfQoKICB2YXIgbGVuID0gc3RyaW5nLmxlbmd0aAogIGlmIChsZW4gPT09IDApIHJldHVybiAwCgogIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvbgogIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlCiAgZm9yICg7OykgewogICAgc3dpdGNoIChlbmNvZGluZykgewogICAgICBjYXNlICdhc2NpaSc6CiAgICAgIGNhc2UgJ2xhdGluMSc6CiAgICAgIGNhc2UgJ2JpbmFyeSc6CiAgICAgICAgcmV0dXJuIGxlbgogICAgICBjYXNlICd1dGY4JzoKICAgICAgY2FzZSAndXRmLTgnOgogICAgICBjYXNlIHVuZGVmaW5lZDoKICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGgKICAgICAgY2FzZSAndWNzMic6CiAgICAgIGNhc2UgJ3Vjcy0yJzoKICAgICAgY2FzZSAndXRmMTZsZSc6CiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzoKICAgICAgICByZXR1cm4gbGVuICogMgogICAgICBjYXNlICdoZXgnOgogICAgICAgIHJldHVybiBsZW4gPj4+IDEKICAgICAgY2FzZSAnYmFzZTY0JzoKICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aAogICAgICBkZWZhdWx0OgogICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoIC8vIGFzc3VtZSB1dGY4CiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKQogICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZQogICAgfQogIH0KfQpCdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGgKCmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHsKICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZQoKICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0ICJ0aGlzLmxlbmd0aCA8PSBNQVhfVUlOVDMyIiBzaW5jZSBpdCdzIGEgcmVhZC1vbmx5CiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS4KCiAgLy8gVGhpcyBiZWhhdmVzIG5laXRoZXIgbGlrZSBTdHJpbmcgbm9yIFVpbnQ4QXJyYXkgaW4gdGhhdCB3ZSBzZXQgc3RhcnQvZW5kCiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLgogIC8vIHVuZGVmaW5lZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBwZXIgRUNNQS0yNjIgNnRoIEVkaXRpb24sCiAgLy8gU2VjdGlvbiAxMy4zLjMuNyBSdW50aW1lIFNlbWFudGljczogS2V5ZWRCaW5kaW5nSW5pdGlhbGl6YXRpb24uCiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7CiAgICBzdGFydCA9IDAKICB9CiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzIKICAvLyBjb2VyY2lvbiBmYWlsIGJlbG93LgogIGlmIChzdGFydCA+IHRoaXMubGVuZ3RoKSB7CiAgICByZXR1cm4gJycKICB9CgogIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkgewogICAgZW5kID0gdGhpcy5sZW5ndGgKICB9CgogIGlmIChlbmQgPD0gMCkgewogICAgcmV0dXJuICcnCiAgfQoKICAvLyBGb3JjZSBjb2Vyc2lvbiB0byB1aW50MzIuIFRoaXMgd2lsbCBhbHNvIGNvZXJjZSBmYWxzZXkvTmFOIHZhbHVlcyB0byAwLgogIGVuZCA+Pj49IDAKICBzdGFydCA+Pj49IDAKCiAgaWYgKGVuZCA8PSBzdGFydCkgewogICAgcmV0dXJuICcnCiAgfQoKICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4JwoKICB3aGlsZSAodHJ1ZSkgewogICAgc3dpdGNoIChlbmNvZGluZykgewogICAgICBjYXNlICdoZXgnOgogICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKQoKICAgICAgY2FzZSAndXRmOCc6CiAgICAgIGNhc2UgJ3V0Zi04JzoKICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpCgogICAgICBjYXNlICdhc2NpaSc6CiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZCkKCiAgICAgIGNhc2UgJ2xhdGluMSc6CiAgICAgIGNhc2UgJ2JpbmFyeSc6CiAgICAgICAgcmV0dXJuIGxhdGluMVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpCgogICAgICBjYXNlICdiYXNlNjQnOgogICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKQoKICAgICAgY2FzZSAndWNzMic6CiAgICAgIGNhc2UgJ3Vjcy0yJzoKICAgICAgY2FzZSAndXRmMTZsZSc6CiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzoKICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpCgogICAgICBkZWZhdWx0OgogICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKQogICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKCkKICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWUKICAgIH0KICB9Cn0KCi8vIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIGFuZCBgaXMtYnVmZmVyYCAoaW4gU2FmYXJpIDUtNykgdG8gZGV0ZWN0Ci8vIEJ1ZmZlciBpbnN0YW5jZXMuCkJ1ZmZlci5wcm90b3R5cGUuX2lzQnVmZmVyID0gdHJ1ZQoKZnVuY3Rpb24gc3dhcCAoYiwgbiwgbSkgewogIHZhciBpID0gYltuXQogIGJbbl0gPSBiW21dCiAgYlttXSA9IGkKfQoKQnVmZmVyLnByb3RvdHlwZS5zd2FwMTYgPSBmdW5jdGlvbiBzd2FwMTYgKCkgewogIHZhciBsZW4gPSB0aGlzLmxlbmd0aAogIGlmIChsZW4gJSAyICE9PSAwKSB7CiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMnKQogIH0KICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7CiAgICBzd2FwKHRoaXMsIGksIGkgKyAxKQogIH0KICByZXR1cm4gdGhpcwp9CgpCdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7CiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoCiAgaWYgKGxlbiAlIDQgIT09IDApIHsKICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpCiAgfQogIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHsKICAgIHN3YXAodGhpcywgaSwgaSArIDMpCiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgMikKICB9CiAgcmV0dXJuIHRoaXMKfQoKQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkgewogIHZhciBsZW4gPSB0aGlzLmxlbmd0aAogIGlmIChsZW4gJSA4ICE9PSAwKSB7CiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKQogIH0KICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7CiAgICBzd2FwKHRoaXMsIGksIGkgKyA3KQogICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDYpCiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSkKICAgIHN3YXAodGhpcywgaSArIDMsIGkgKyA0KQogIH0KICByZXR1cm4gdGhpcwp9CgpCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkgewogIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aCB8IDAKICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJycKICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCAwLCBsZW5ndGgpCiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpCn0KCkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7CiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKQogIGlmICh0aGlzID09PSBiKSByZXR1cm4gdHJ1ZQogIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMAp9CgpCdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHsKICB2YXIgc3RyID0gJycKICB2YXIgbWF4ID0gZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFUwogIGlmICh0aGlzLmxlbmd0aCA+IDApIHsKICAgIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkubWF0Y2goLy57Mn0vZykuam9pbignICcpCiAgICBpZiAodGhpcy5sZW5ndGggPiBtYXgpIHN0ciArPSAnIC4uLiAnCiAgfQogIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nCn0KCkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7CiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIodGFyZ2V0KSkgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpCiAgfQoKICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkgewogICAgc3RhcnQgPSAwCiAgfQogIGlmIChlbmQgPT09IHVuZGVmaW5lZCkgewogICAgZW5kID0gdGFyZ2V0ID8gdGFyZ2V0Lmxlbmd0aCA6IDAKICB9CiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7CiAgICB0aGlzU3RhcnQgPSAwCiAgfQogIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHsKICAgIHRoaXNFbmQgPSB0aGlzLmxlbmd0aAogIH0KCiAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPiB0YXJnZXQubGVuZ3RoIHx8IHRoaXNTdGFydCA8IDAgfHwgdGhpc0VuZCA+IHRoaXMubGVuZ3RoKSB7CiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb3V0IG9mIHJhbmdlIGluZGV4JykKICB9CgogIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCAmJiBzdGFydCA+PSBlbmQpIHsKICAgIHJldHVybiAwCiAgfQogIGlmICh0aGlzU3RhcnQgPj0gdGhpc0VuZCkgewogICAgcmV0dXJuIC0xCiAgfQogIGlmIChzdGFydCA+PSBlbmQpIHsKICAgIHJldHVybiAxCiAgfQoKICBzdGFydCA+Pj49IDAKICBlbmQgPj4+PSAwCiAgdGhpc1N0YXJ0ID4+Pj0gMAogIHRoaXNFbmQgPj4+PSAwCgogIGlmICh0aGlzID09PSB0YXJnZXQpIHJldHVybiAwCgogIHZhciB4ID0gdGhpc0VuZCAtIHRoaXNTdGFydAogIHZhciB5ID0gZW5kIC0gc3RhcnQKICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSkKCiAgdmFyIHRoaXNDb3B5ID0gdGhpcy5zbGljZSh0aGlzU3RhcnQsIHRoaXNFbmQpCiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZCkKCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7CiAgICAgIHggPSB0aGlzQ29weVtpXQogICAgICB5ID0gdGFyZ2V0Q29weVtpXQogICAgICBicmVhawogICAgfQogIH0KCiAgaWYgKHggPCB5KSByZXR1cm4gLTEKICBpZiAoeSA8IHgpIHJldHVybiAxCiAgcmV0dXJuIDAKfQoKLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLAovLyBPUiB0aGUgbGFzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPD0gYGJ5dGVPZmZzZXRgLgovLwovLyBBcmd1bWVudHM6Ci8vIC0gYnVmZmVyIC0gYSBCdWZmZXIgdG8gc2VhcmNoCi8vIC0gdmFsIC0gYSBzdHJpbmcsIEJ1ZmZlciwgb3IgbnVtYmVyCi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMgovLyAtIGVuY29kaW5nIC0gYW4gb3B0aW9uYWwgZW5jb2RpbmcsIHJlbGV2YW50IGlzIHZhbCBpcyBhIHN0cmluZwovLyAtIGRpciAtIHRydWUgZm9yIGluZGV4T2YsIGZhbHNlIGZvciBsYXN0SW5kZXhPZgpmdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHsKICAvLyBFbXB0eSBidWZmZXIgbWVhbnMgbm8gbWF0Y2gKICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xCgogIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0CiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykgewogICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0CiAgICBieXRlT2Zmc2V0ID0gMAogIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA+IDB4N2ZmZmZmZmYpIHsKICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmCiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgLTB4ODAwMDAwMDApIHsKICAgIGJ5dGVPZmZzZXQgPSAtMHg4MDAwMDAwMAogIH0KICBieXRlT2Zmc2V0ID0gK2J5dGVPZmZzZXQgIC8vIENvZXJjZSB0byBOdW1iZXIuCiAgaWYgKGlzTmFOKGJ5dGVPZmZzZXQpKSB7CiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCAiZm9vIiwgZXRjLCBzZWFyY2ggd2hvbGUgYnVmZmVyCiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSkKICB9CgogIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyCiAgaWYgKGJ5dGVPZmZzZXQgPCAwKSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCArIGJ5dGVPZmZzZXQKICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIubGVuZ3RoKSB7CiAgICBpZiAoZGlyKSByZXR1cm4gLTEKICAgIGVsc2UgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggLSAxCiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkgewogICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDAKICAgIGVsc2UgcmV0dXJuIC0xCiAgfQoKICAvLyBOb3JtYWxpemUgdmFsCiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7CiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKQogIH0KCiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2YKICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbCkpIHsKICAgIC8vIFNwZWNpYWwgY2FzZTogbG9va2luZyBmb3IgZW1wdHkgc3RyaW5nL2J1ZmZlciBhbHdheXMgZmFpbHMKICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSB7CiAgICAgIHJldHVybiAtMQogICAgfQogICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikKICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7CiAgICB2YWwgPSB2YWwgJiAweEZGIC8vIFNlYXJjaCBmb3IgYSBieXRlIHZhbHVlIFswLTI1NV0KICAgIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJgogICAgICAgIHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIGlmIChkaXIpIHsKICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KQogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KQogICAgICB9CiAgICB9CiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgWyB2YWwgXSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikKICB9CgogIHRocm93IG5ldyBUeXBlRXJyb3IoJ3ZhbCBtdXN0IGJlIHN0cmluZywgbnVtYmVyIG9yIEJ1ZmZlcicpCn0KCmZ1bmN0aW9uIGFycmF5SW5kZXhPZiAoYXJyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHsKICB2YXIgaW5kZXhTaXplID0gMQogIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoCiAgdmFyIHZhbExlbmd0aCA9IHZhbC5sZW5ndGgKCiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHsKICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpCiAgICBpZiAoZW5jb2RpbmcgPT09ICd1Y3MyJyB8fCBlbmNvZGluZyA9PT0gJ3Vjcy0yJyB8fAogICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHsKICAgICAgaWYgKGFyci5sZW5ndGggPCAyIHx8IHZhbC5sZW5ndGggPCAyKSB7CiAgICAgICAgcmV0dXJuIC0xCiAgICAgIH0KICAgICAgaW5kZXhTaXplID0gMgogICAgICBhcnJMZW5ndGggLz0gMgogICAgICB2YWxMZW5ndGggLz0gMgogICAgICBieXRlT2Zmc2V0IC89IDIKICAgIH0KICB9CgogIGZ1bmN0aW9uIHJlYWQgKGJ1ZiwgaSkgewogICAgaWYgKGluZGV4U2l6ZSA9PT0gMSkgewogICAgICByZXR1cm4gYnVmW2ldCiAgICB9IGVsc2UgewogICAgICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRShpICogaW5kZXhTaXplKQogICAgfQogIH0KCiAgdmFyIGkKICBpZiAoZGlyKSB7CiAgICB2YXIgZm91bmRJbmRleCA9IC0xCiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpIDwgYXJyTGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHJlYWQoYXJyLCBpKSA9PT0gcmVhZCh2YWwsIGZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4KSkgewogICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGkKICAgICAgICBpZiAoaSAtIGZvdW5kSW5kZXggKyAxID09PSB2YWxMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4ICogaW5kZXhTaXplCiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSBpIC09IGkgLSBmb3VuZEluZGV4CiAgICAgICAgZm91bmRJbmRleCA9IC0xCiAgICAgIH0KICAgIH0KICB9IGVsc2UgewogICAgaWYgKGJ5dGVPZmZzZXQgKyB2YWxMZW5ndGggPiBhcnJMZW5ndGgpIGJ5dGVPZmZzZXQgPSBhcnJMZW5ndGggLSB2YWxMZW5ndGgKICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7CiAgICAgIHZhciBmb3VuZCA9IHRydWUKICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB2YWxMZW5ndGg7IGorKykgewogICAgICAgIGlmIChyZWFkKGFyciwgaSArIGopICE9PSByZWFkKHZhbCwgaikpIHsKICAgICAgICAgIGZvdW5kID0gZmFsc2UKICAgICAgICAgIGJyZWFrCiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGkKICAgIH0KICB9CgogIHJldHVybiAtMQp9CgpCdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHsKICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMQp9CgpCdWZmZXIucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBpbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7CiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUpCn0KCkJ1ZmZlci5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbiBsYXN0SW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykgewogIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSkKfQoKZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkgewogIG9mZnNldCA9IE51bWJlcihvZmZzZXQpIHx8IDAKICB2YXIgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldAogIGlmICghbGVuZ3RoKSB7CiAgICBsZW5ndGggPSByZW1haW5pbmcKICB9IGVsc2UgewogICAgbGVuZ3RoID0gTnVtYmVyKGxlbmd0aCkKICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHsKICAgICAgbGVuZ3RoID0gcmVtYWluaW5nCiAgICB9CiAgfQoKICAvLyBtdXN0IGJlIGFuIGV2ZW4gbnVtYmVyIG9mIGRpZ2l0cwogIHZhciBzdHJMZW4gPSBzdHJpbmcubGVuZ3RoCiAgaWYgKHN0ckxlbiAlIDIgIT09IDApIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgaGV4IHN0cmluZycpCgogIGlmIChsZW5ndGggPiBzdHJMZW4gLyAyKSB7CiAgICBsZW5ndGggPSBzdHJMZW4gLyAyCiAgfQogIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpCiAgICBpZiAoaXNOYU4ocGFyc2VkKSkgcmV0dXJuIGkKICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHBhcnNlZAogIH0KICByZXR1cm4gaQp9CgpmdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkgewogIHJldHVybiBibGl0QnVmZmVyKHV0ZjhUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpCn0KCmZ1bmN0aW9uIGFzY2lpV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkgewogIHJldHVybiBibGl0QnVmZmVyKGFzY2lpVG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKQp9CgpmdW5jdGlvbiBsYXRpbjFXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7CiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKQp9CgpmdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7CiAgcmV0dXJuIGJsaXRCdWZmZXIoYmFzZTY0VG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKQp9CgpmdW5jdGlvbiB1Y3MyV3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkgewogIHJldHVybiBibGl0QnVmZmVyKHV0ZjE2bGVUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpCn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiB3cml0ZSAoc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpIHsKICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKQogIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgewogICAgZW5jb2RpbmcgPSAndXRmOCcKICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoCiAgICBvZmZzZXQgPSAwCiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgZW5jb2RpbmcpCiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykgewogICAgZW5jb2RpbmcgPSBvZmZzZXQKICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoCiAgICBvZmZzZXQgPSAwCiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgb2Zmc2V0WywgbGVuZ3RoXVssIGVuY29kaW5nXSkKICB9IGVsc2UgaWYgKGlzRmluaXRlKG9mZnNldCkpIHsKICAgIG9mZnNldCA9IG9mZnNldCB8IDAKICAgIGlmIChpc0Zpbml0ZShsZW5ndGgpKSB7CiAgICAgIGxlbmd0aCA9IGxlbmd0aCB8IDAKICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnCiAgICB9IGVsc2UgewogICAgICBlbmNvZGluZyA9IGxlbmd0aAogICAgICBsZW5ndGggPSB1bmRlZmluZWQKICAgIH0KICAvLyBsZWdhY3kgd3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0LCBsZW5ndGgpIC0gcmVtb3ZlIGluIHYwLjEzCiAgfSBlbHNlIHsKICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgJ0J1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkJwogICAgKQogIH0KCiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0CiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkIHx8IGxlbmd0aCA+IHJlbWFpbmluZykgbGVuZ3RoID0gcmVtYWluaW5nCgogIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7CiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byB3cml0ZSBvdXRzaWRlIGJ1ZmZlciBib3VuZHMnKQogIH0KCiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCcKCiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2UKICBmb3IgKDs7KSB7CiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7CiAgICAgIGNhc2UgJ2hleCc6CiAgICAgICAgcmV0dXJuIGhleFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpCgogICAgICBjYXNlICd1dGY4JzoKICAgICAgY2FzZSAndXRmLTgnOgogICAgICAgIHJldHVybiB1dGY4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkKCiAgICAgIGNhc2UgJ2FzY2lpJzoKICAgICAgICByZXR1cm4gYXNjaWlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKQoKICAgICAgY2FzZSAnbGF0aW4xJzoKICAgICAgY2FzZSAnYmluYXJ5JzoKICAgICAgICByZXR1cm4gbGF0aW4xV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkKCiAgICAgIGNhc2UgJ2Jhc2U2NCc6CiAgICAgICAgLy8gV2FybmluZzogbWF4TGVuZ3RoIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgaW4gYmFzZTY0V3JpdGUKICAgICAgICByZXR1cm4gYmFzZTY0V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkKCiAgICAgIGNhc2UgJ3VjczInOgogICAgICBjYXNlICd1Y3MtMic6CiAgICAgIGNhc2UgJ3V0ZjE2bGUnOgogICAgICBjYXNlICd1dGYtMTZsZSc6CiAgICAgICAgcmV0dXJuIHVjczJXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKQoKICAgICAgZGVmYXVsdDoKICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZykKICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpCiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlCiAgICB9CiAgfQp9CgpCdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7CiAgcmV0dXJuIHsKICAgIHR5cGU6ICdCdWZmZXInLAogICAgZGF0YTogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyIHx8IHRoaXMsIDApCiAgfQp9CgpmdW5jdGlvbiBiYXNlNjRTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7CiAgaWYgKHN0YXJ0ID09PSAwICYmIGVuZCA9PT0gYnVmLmxlbmd0aCkgewogICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1ZikKICB9IGVsc2UgewogICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1Zi5zbGljZShzdGFydCwgZW5kKSkKICB9Cn0KCmZ1bmN0aW9uIHV0ZjhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7CiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKQogIHZhciByZXMgPSBbXQoKICB2YXIgaSA9IHN0YXJ0CiAgd2hpbGUgKGkgPCBlbmQpIHsKICAgIHZhciBmaXJzdEJ5dGUgPSBidWZbaV0KICAgIHZhciBjb2RlUG9pbnQgPSBudWxsCiAgICB2YXIgYnl0ZXNQZXJTZXF1ZW5jZSA9IChmaXJzdEJ5dGUgPiAweEVGKSA/IDQKICAgICAgOiAoZmlyc3RCeXRlID4gMHhERikgPyAzCiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpID8gMgogICAgICA6IDEKCiAgICBpZiAoaSArIGJ5dGVzUGVyU2VxdWVuY2UgPD0gZW5kKSB7CiAgICAgIHZhciBzZWNvbmRCeXRlLCB0aGlyZEJ5dGUsIGZvdXJ0aEJ5dGUsIHRlbXBDb2RlUG9pbnQKCiAgICAgIHN3aXRjaCAoYnl0ZXNQZXJTZXF1ZW5jZSkgewogICAgICAgIGNhc2UgMToKICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPCAweDgwKSB7CiAgICAgICAgICAgIGNvZGVQb2ludCA9IGZpcnN0Qnl0ZQogICAgICAgICAgfQogICAgICAgICAgYnJlYWsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXQogICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHsKICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweDFGKSA8PCAweDYgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpCiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3RikgewogICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnQKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgYnJlYWsKICAgICAgICBjYXNlIDM6CiAgICAgICAgICBzZWNvbmRCeXRlID0gYnVmW2kgKyAxXQogICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXQogICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwKSB7CiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweEMgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4NiB8ICh0aGlyZEJ5dGUgJiAweDNGKQogICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0ZGICYmICh0ZW1wQ29kZVBvaW50IDwgMHhEODAwIHx8IHRlbXBDb2RlUG9pbnQgPiAweERGRkYpKSB7CiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgICBicmVhawogICAgICAgIGNhc2UgNDoKICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdCiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdCiAgICAgICAgICBmb3VydGhCeXRlID0gYnVmW2kgKyAzXQogICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwICYmIChmb3VydGhCeXRlICYgMHhDMCkgPT09IDB4ODApIHsKICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4MTIgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4QyB8ICh0aGlyZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAoZm91cnRoQnl0ZSAmIDB4M0YpCiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHhGRkZGICYmIHRlbXBDb2RlUG9pbnQgPCAweDExMDAwMCkgewogICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnQKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkgewogICAgICAvLyB3ZSBkaWQgbm90IGdlbmVyYXRlIGEgdmFsaWQgY29kZVBvaW50IHNvIGluc2VydCBhCiAgICAgIC8vIHJlcGxhY2VtZW50IGNoYXIgKFUrRkZGRCkgYW5kIGFkdmFuY2Ugb25seSAxIGJ5dGUKICAgICAgY29kZVBvaW50ID0gMHhGRkZECiAgICAgIGJ5dGVzUGVyU2VxdWVuY2UgPSAxCiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA+IDB4RkZGRikgewogICAgICAvLyBlbmNvZGUgdG8gdXRmMTYgKHN1cnJvZ2F0ZSBwYWlyIGRhbmNlKQogICAgICBjb2RlUG9pbnQgLT0gMHgxMDAwMAogICAgICByZXMucHVzaChjb2RlUG9pbnQgPj4+IDEwICYgMHgzRkYgfCAweEQ4MDApCiAgICAgIGNvZGVQb2ludCA9IDB4REMwMCB8IGNvZGVQb2ludCAmIDB4M0ZGCiAgICB9CgogICAgcmVzLnB1c2goY29kZVBvaW50KQogICAgaSArPSBieXRlc1BlclNlcXVlbmNlCiAgfQoKICByZXR1cm4gZGVjb2RlQ29kZVBvaW50c0FycmF5KHJlcykKfQoKLy8gQmFzZWQgb24gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjI3NDcyNzIvNjgwNzQyLCB0aGUgYnJvd3NlciB3aXRoCi8vIHRoZSBsb3dlc3QgbGltaXQgaXMgQ2hyb21lLCB3aXRoIDB4MTAwMDAgYXJncy4KLy8gV2UgZ28gMSBtYWduaXR1ZGUgbGVzcywgZm9yIHNhZmV0eQp2YXIgTUFYX0FSR1VNRU5UU19MRU5HVEggPSAweDEwMDAKCmZ1bmN0aW9uIGRlY29kZUNvZGVQb2ludHNBcnJheSAoY29kZVBvaW50cykgewogIHZhciBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aAogIGlmIChsZW4gPD0gTUFYX0FSR1VNRU5UU19MRU5HVEgpIHsKICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY29kZVBvaW50cykgLy8gYXZvaWQgZXh0cmEgc2xpY2UoKQogIH0KCiAgLy8gRGVjb2RlIGluIGNodW5rcyB0byBhdm9pZCAiY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkIi4KICB2YXIgcmVzID0gJycKICB2YXIgaSA9IDAKICB3aGlsZSAoaSA8IGxlbikgewogICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoCiAgICAgIFN0cmluZywKICAgICAgY29kZVBvaW50cy5zbGljZShpLCBpICs9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKQogICAgKQogIH0KICByZXR1cm4gcmVzCn0KCmZ1bmN0aW9uIGFzY2lpU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkgewogIHZhciByZXQgPSAnJwogIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZCkKCiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHsKICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpCiAgfQogIHJldHVybiByZXQKfQoKZnVuY3Rpb24gbGF0aW4xU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkgewogIHZhciByZXQgPSAnJwogIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZCkKCiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHsKICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSkKICB9CiAgcmV0dXJuIHJldAp9CgpmdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7CiAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGgKCiAgaWYgKCFzdGFydCB8fCBzdGFydCA8IDApIHN0YXJ0ID0gMAogIGlmICghZW5kIHx8IGVuZCA8IDAgfHwgZW5kID4gbGVuKSBlbmQgPSBsZW4KCiAgdmFyIG91dCA9ICcnCiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHsKICAgIG91dCArPSB0b0hleChidWZbaV0pCiAgfQogIHJldHVybiBvdXQKfQoKZnVuY3Rpb24gdXRmMTZsZVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHsKICB2YXIgYnl0ZXMgPSBidWYuc2xpY2Uoc3RhcnQsIGVuZCkKICB2YXIgcmVzID0gJycKICBmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAyKSB7CiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSArIGJ5dGVzW2kgKyAxXSAqIDI1NikKICB9CiAgcmV0dXJuIHJlcwp9CgpCdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHsKICB2YXIgbGVuID0gdGhpcy5sZW5ndGgKICBzdGFydCA9IH5+c3RhcnQKICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kCgogIGlmIChzdGFydCA8IDApIHsKICAgIHN0YXJ0ICs9IGxlbgogICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwCiAgfSBlbHNlIGlmIChzdGFydCA+IGxlbikgewogICAgc3RhcnQgPSBsZW4KICB9CgogIGlmIChlbmQgPCAwKSB7CiAgICBlbmQgKz0gbGVuCiAgICBpZiAoZW5kIDwgMCkgZW5kID0gMAogIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7CiAgICBlbmQgPSBsZW4KICB9CgogIGlmIChlbmQgPCBzdGFydCkgZW5kID0gc3RhcnQKCiAgdmFyIG5ld0J1ZgogIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgewogICAgbmV3QnVmID0gdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKQogICAgbmV3QnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGUKICB9IGVsc2UgewogICAgdmFyIHNsaWNlTGVuID0gZW5kIC0gc3RhcnQKICAgIG5ld0J1ZiA9IG5ldyBCdWZmZXIoc2xpY2VMZW4sIHVuZGVmaW5lZCkKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2xpY2VMZW47ICsraSkgewogICAgICBuZXdCdWZbaV0gPSB0aGlzW2kgKyBzdGFydF0KICAgIH0KICB9CgogIHJldHVybiBuZXdCdWYKfQoKLyoKICogTmVlZCB0byBtYWtlIHN1cmUgdGhhdCBidWZmZXIgaXNuJ3QgdHJ5aW5nIHRvIHdyaXRlIG91dCBvZiBib3VuZHMuCiAqLwpmdW5jdGlvbiBjaGVja09mZnNldCAob2Zmc2V0LCBleHQsIGxlbmd0aCkgewogIGlmICgob2Zmc2V0ICUgMSkgIT09IDAgfHwgb2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ29mZnNldCBpcyBub3QgdWludCcpCiAgaWYgKG9mZnNldCArIGV4dCA+IGxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgnKQp9CgpCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50TEUgPSBmdW5jdGlvbiByZWFkVUludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpCgogIHZhciB2YWwgPSB0aGlzW29mZnNldF0KICB2YXIgbXVsID0gMQogIHZhciBpID0gMAogIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7CiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bAogIH0KCiAgcmV0dXJuIHZhbAp9CgpCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkUgPSBmdW5jdGlvbiByZWFkVUludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAogIGlmICghbm9Bc3NlcnQpIHsKICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpCiAgfQoKICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdCiAgdmFyIG11bCA9IDEKICB3aGlsZSAoYnl0ZUxlbmd0aCA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHsKICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF0gKiBtdWwKICB9CgogIHJldHVybiB2YWwKfQoKQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDggKG9mZnNldCwgbm9Bc3NlcnQpIHsKICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKQogIHJldHVybiB0aGlzW29mZnNldF0KfQoKQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKQogIHJldHVybiB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KQp9CgpCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpCiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgOCkgfCB0aGlzW29mZnNldCArIDFdCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aCkKCiAgcmV0dXJuICgodGhpc1tvZmZzZXRdKSB8CiAgICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHwKICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArCiAgICAgICh0aGlzW29mZnNldCArIDNdICogMHgxMDAwMDAwKQp9CgpCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpCgogIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArCiAgICAoKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHwKICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHwKICAgIHRoaXNbb2Zmc2V0ICsgM10pCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpCgogIHZhciB2YWwgPSB0aGlzW29mZnNldF0KICB2YXIgbXVsID0gMQogIHZhciBpID0gMAogIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7CiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bAogIH0KICBtdWwgKj0gMHg4MAoKICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKQoKICByZXR1cm4gdmFsCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZEludEJFID0gZnVuY3Rpb24gcmVhZEludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpCgogIHZhciBpID0gYnl0ZUxlbmd0aAogIHZhciBtdWwgPSAxCiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1pXQogIHdoaWxlIChpID4gMCAmJiAobXVsICo9IDB4MTAwKSkgewogICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1pXSAqIG11bAogIH0KICBtdWwgKj0gMHg4MAoKICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKQoKICByZXR1cm4gdmFsCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDggPSBmdW5jdGlvbiByZWFkSW50OCAob2Zmc2V0LCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpCiAgaWYgKCEodGhpc1tvZmZzZXRdICYgMHg4MCkpIHJldHVybiAodGhpc1tvZmZzZXRdKQogIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKQp9CgpCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKQogIHZhciB2YWwgPSB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KQogIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWwKfQoKQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aCkKICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAxXSB8ICh0aGlzW29mZnNldF0gPDwgOCkKICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyTEUgPSBmdW5jdGlvbiByZWFkSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpCgogIHJldHVybiAodGhpc1tvZmZzZXRdKSB8CiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8CiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfAogICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpCgogIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDI0KSB8CiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfAogICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfAogICAgKHRoaXNbb2Zmc2V0ICsgM10pCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZEZsb2F0TEUgPSBmdW5jdGlvbiByZWFkRmxvYXRMRSAob2Zmc2V0LCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpCiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDIzLCA0KQp9CgpCdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFID0gZnVuY3Rpb24gcmVhZEZsb2F0QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHsKICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKQogIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgMjMsIDQpCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUxFID0gZnVuY3Rpb24gcmVhZERvdWJsZUxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aCkKICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgdHJ1ZSwgNTIsIDgpCn0KCkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFID0gZnVuY3Rpb24gcmVhZERvdWJsZUJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aCkKICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDUyLCA4KQp9CgpmdW5jdGlvbiBjaGVja0ludCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7CiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignImJ1ZmZlciIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpCiAgaWYgKHZhbHVlID4gbWF4IHx8IHZhbHVlIDwgbWluKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignInZhbHVlIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJykKICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpCn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50TEUgPSBmdW5jdGlvbiB3cml0ZVVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHsKICB2YWx1ZSA9ICt2YWx1ZQogIG9mZnNldCA9IG9mZnNldCB8IDAKICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDAKICBpZiAoIW5vQXNzZXJ0KSB7CiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxCiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMCkKICB9CgogIHZhciBtdWwgPSAxCiAgdmFyIGkgPSAwCiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGCiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHsKICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRgogIH0KCiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGgKfQoKQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkgewogIHZhbHVlID0gK3ZhbHVlCiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMAogIGlmICghbm9Bc3NlcnQpIHsKICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDEKICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKQogIH0KCiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMQogIHZhciBtdWwgPSAxCiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRgogIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkgewogICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGCiAgfQoKICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aAp9CgpCdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgewogIHZhbHVlID0gK3ZhbHVlCiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApCiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKQogIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpCiAgcmV0dXJuIG9mZnNldCArIDEKfQoKZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7CiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmYgKyB2YWx1ZSArIDEKICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDIpOyBpIDwgajsgKytpKSB7CiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PgogICAgICAobGl0dGxlRW5kaWFuID8gaSA6IDEgLSBpKSAqIDgKICB9Cn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKQogIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgewogICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZikKICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpCiAgfSBlbHNlIHsKICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpCiAgfQogIHJldHVybiBvZmZzZXQgKyAyCn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKQogIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgewogICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KQogICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpCiAgfSBlbHNlIHsKICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKQogIH0KICByZXR1cm4gb2Zmc2V0ICsgMgp9CgpmdW5jdGlvbiBvYmplY3RXcml0ZVVJbnQzMiAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4pIHsKICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDEKICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgKytpKSB7CiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgPj4+IChsaXR0bGVFbmRpYW4gPyBpIDogMyAtIGkpICogOCkgJiAweGZmCiAgfQp9CgpCdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgewogIHZhbHVlID0gK3ZhbHVlCiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApCiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNCkKICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KQogICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOCkKICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpCiAgfSBlbHNlIHsKICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpCiAgfQogIHJldHVybiBvZmZzZXQgKyA0Cn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMCkKICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpCiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNikKICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpCiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZikKICB9IGVsc2UgewogICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpCiAgfQogIHJldHVybiBvZmZzZXQgKyA0Cn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgewogICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKQoKICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KQogIH0KCiAgdmFyIGkgPSAwCiAgdmFyIG11bCA9IDEKICB2YXIgc3ViID0gMAogIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRgogIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7CiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgLSAxXSAhPT0gMCkgewogICAgICBzdWIgPSAxCiAgICB9CiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGCiAgfQoKICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aAp9CgpCdWZmZXIucHJvdG90eXBlLndyaXRlSW50QkUgPSBmdW5jdGlvbiB3cml0ZUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkgewogIHZhbHVlID0gK3ZhbHVlCiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGlmICghbm9Bc3NlcnQpIHsKICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSkKCiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdCkKICB9CgogIHZhciBpID0gYnl0ZUxlbmd0aCAtIDEKICB2YXIgbXVsID0gMQogIHZhciBzdWIgPSAwCiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRgogIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkgewogICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHsKICAgICAgc3ViID0gMQogICAgfQogICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRgogIH0KCiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGgKfQoKQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApCiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgdmFsdWUgPSBNYXRoLmZsb29yKHZhbHVlKQogIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMQogIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpCiAgcmV0dXJuIG9mZnNldCArIDEKfQoKQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKQogIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgewogICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZikKICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpCiAgfSBlbHNlIHsKICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpCiAgfQogIHJldHVybiBvZmZzZXQgKyAyCn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgewogIHZhbHVlID0gK3ZhbHVlCiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMCkKICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gOCkKICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKQogIH0gZWxzZSB7CiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSkKICB9CiAgcmV0dXJuIG9mZnNldCArIDIKfQoKQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgdmFsdWUgPSArdmFsdWUKICBvZmZzZXQgPSBvZmZzZXQgfCAwCiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApCiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7CiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKQogICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOCkKICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KQogICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpCiAgfSBlbHNlIHsKICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpCiAgfQogIHJldHVybiBvZmZzZXQgKyA0Cn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgewogIHZhbHVlID0gK3ZhbHVlCiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMAogIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKQogIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMQogIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkgewogICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNCkKICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KQogICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOCkKICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKQogIH0gZWxzZSB7CiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSkKICB9CiAgcmV0dXJuIG9mZnNldCArIDQKfQoKZnVuY3Rpb24gY2hlY2tJRUVFNzU0IChidWYsIHZhbHVlLCBvZmZzZXQsIGV4dCwgbWF4LCBtaW4pIHsKICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpCiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKQp9CgpmdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHsKICBpZiAoIW5vQXNzZXJ0KSB7CiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOCkKICB9CiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgMjMsIDQpCiAgcmV0dXJuIG9mZnNldCArIDQKfQoKQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpCn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgewogIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydCkKfQoKZnVuY3Rpb24gd3JpdGVEb3VibGUgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkgewogIGlmICghbm9Bc3NlcnQpIHsKICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpCiAgfQogIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KQogIHJldHVybiBvZmZzZXQgKyA4Cn0KCkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7CiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KQp9CgpCdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkgewogIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpCn0KCi8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aCkKQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkgewogIGlmICghc3RhcnQpIHN0YXJ0ID0gMAogIGlmICghZW5kICYmIGVuZCAhPT0gMCkgZW5kID0gdGhpcy5sZW5ndGgKICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoCiAgaWYgKCF0YXJnZXRTdGFydCkgdGFyZ2V0U3RhcnQgPSAwCiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0CgogIC8vIENvcHkgMCBieXRlczsgd2UncmUgZG9uZQogIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMAogIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMAoKICAvLyBGYXRhbCBlcnJvciBjb25kaXRpb25zCiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkgewogICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMnKQogIH0KICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpCiAgaWYgKGVuZCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcycpCgogIC8vIEFyZSB3ZSBvb2I/CiAgaWYgKGVuZCA+IHRoaXMubGVuZ3RoKSBlbmQgPSB0aGlzLmxlbmd0aAogIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkgewogICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnQKICB9CgogIHZhciBsZW4gPSBlbmQgLSBzdGFydAogIHZhciBpCgogIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkgewogICAgLy8gZGVzY2VuZGluZyBjb3B5IGZyb20gZW5kCiAgICBmb3IgKGkgPSBsZW4gLSAxOyBpID49IDA7IC0taSkgewogICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XQogICAgfQogIH0gZWxzZSBpZiAobGVuIDwgMTAwMCB8fCAhQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHsKICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnQKICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XQogICAgfQogIH0gZWxzZSB7CiAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbCgKICAgICAgdGFyZ2V0LAogICAgICB0aGlzLnN1YmFycmF5KHN0YXJ0LCBzdGFydCArIGxlbiksCiAgICAgIHRhcmdldFN0YXJ0CiAgICApCiAgfQoKICByZXR1cm4gbGVuCn0KCi8vIFVzYWdlOgovLyAgICBidWZmZXIuZmlsbChudW1iZXJbLCBvZmZzZXRbLCBlbmRdXSkKLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pCi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKQpCdWZmZXIucHJvdG90eXBlLmZpbGwgPSBmdW5jdGlvbiBmaWxsICh2YWwsIHN0YXJ0LCBlbmQsIGVuY29kaW5nKSB7CiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczoKICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHsKICAgIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdzdHJpbmcnKSB7CiAgICAgIGVuY29kaW5nID0gc3RhcnQKICAgICAgc3RhcnQgPSAwCiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoCiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7CiAgICAgIGVuY29kaW5nID0gZW5kCiAgICAgIGVuZCA9IHRoaXMubGVuZ3RoCiAgICB9CiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkgewogICAgICB2YXIgY29kZSA9IHZhbC5jaGFyQ29kZUF0KDApCiAgICAgIGlmIChjb2RlIDwgMjU2KSB7CiAgICAgICAgdmFsID0gY29kZQogICAgICB9CiAgICB9CiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7CiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2VuY29kaW5nIG11c3QgYmUgYSBzdHJpbmcnKQogICAgfQogICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkgewogICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpCiAgICB9CiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgewogICAgdmFsID0gdmFsICYgMjU1CiAgfQoKICAvLyBJbnZhbGlkIHJhbmdlcyBhcmUgbm90IHNldCB0byBhIGRlZmF1bHQsIHNvIGNhbiByYW5nZSBjaGVjayBlYXJseS4KICBpZiAoc3RhcnQgPCAwIHx8IHRoaXMubGVuZ3RoIDwgc3RhcnQgfHwgdGhpcy5sZW5ndGggPCBlbmQpIHsKICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKQogIH0KCiAgaWYgKGVuZCA8PSBzdGFydCkgewogICAgcmV0dXJuIHRoaXMKICB9CgogIHN0YXJ0ID0gc3RhcnQgPj4+IDAKICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoIDogZW5kID4+PiAwCgogIGlmICghdmFsKSB2YWwgPSAwCgogIHZhciBpCiAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7CiAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7CiAgICAgIHRoaXNbaV0gPSB2YWwKICAgIH0KICB9IGVsc2UgewogICAgdmFyIGJ5dGVzID0gQnVmZmVyLmlzQnVmZmVyKHZhbCkKICAgICAgPyB2YWwKICAgICAgOiB1dGY4VG9CeXRlcyhuZXcgQnVmZmVyKHZhbCwgZW5jb2RpbmcpLnRvU3RyaW5nKCkpCiAgICB2YXIgbGVuID0gYnl0ZXMubGVuZ3RoCiAgICBmb3IgKGkgPSAwOyBpIDwgZW5kIC0gc3RhcnQ7ICsraSkgewogICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXQogICAgfQogIH0KCiAgcmV0dXJuIHRoaXMKfQoKLy8gSEVMUEVSIEZVTkNUSU9OUwovLyA9PT09PT09PT09PT09PT09Cgp2YXIgSU5WQUxJRF9CQVNFNjRfUkUgPSAvW14rXC8wLTlBLVphLXotX10vZwoKZnVuY3Rpb24gYmFzZTY0Y2xlYW4gKHN0cikgewogIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcbiBhbmQgXHQgZnJvbSB0aGUgc3RyaW5nLCBiYXNlNjQtanMgZG9lcyBub3QKICBzdHIgPSBzdHJpbmd0cmltKHN0cikucmVwbGFjZShJTlZBTElEX0JBU0U2NF9SRSwgJycpCiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJwogIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnCiAgLy8gTm9kZSBhbGxvd3MgZm9yIG5vbi1wYWRkZWQgYmFzZTY0IHN0cmluZ3MgKG1pc3NpbmcgdHJhaWxpbmcgPT09KSwgYmFzZTY0LWpzIGRvZXMgbm90CiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7CiAgICBzdHIgPSBzdHIgKyAnPScKICB9CiAgcmV0dXJuIHN0cgp9CgpmdW5jdGlvbiBzdHJpbmd0cmltIChzdHIpIHsKICBpZiAoc3RyLnRyaW0pIHJldHVybiBzdHIudHJpbSgpCiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpCn0KCmZ1bmN0aW9uIHRvSGV4IChuKSB7CiAgaWYgKG4gPCAxNikgcmV0dXJuICcwJyArIG4udG9TdHJpbmcoMTYpCiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpCn0KCmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7CiAgdW5pdHMgPSB1bml0cyB8fCBJbmZpbml0eQogIHZhciBjb2RlUG9pbnQKICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aAogIHZhciBsZWFkU3Vycm9nYXRlID0gbnVsbAogIHZhciBieXRlcyA9IFtdCgogIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgIGNvZGVQb2ludCA9IHN0cmluZy5jaGFyQ29kZUF0KGkpCgogICAgLy8gaXMgc3Vycm9nYXRlIGNvbXBvbmVudAogICAgaWYgKGNvZGVQb2ludCA+IDB4RDdGRiAmJiBjb2RlUG9pbnQgPCAweEUwMDApIHsKICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWQKICAgICAgaWYgKCFsZWFkU3Vycm9nYXRlKSB7CiAgICAgICAgLy8gbm8gbGVhZCB5ZXQKICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7CiAgICAgICAgICAvLyB1bmV4cGVjdGVkIHRyYWlsCiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRCkKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfSBlbHNlIGlmIChpICsgMSA9PT0gbGVuZ3RoKSB7CiAgICAgICAgICAvLyB1bnBhaXJlZCBsZWFkCiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRCkKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAvLyB2YWxpZCBsZWFkCiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludAoKICAgICAgICBjb250aW51ZQogICAgICB9CgogICAgICAvLyAyIGxlYWRzIGluIGEgcm93CiAgICAgIGlmIChjb2RlUG9pbnQgPCAweERDMDApIHsKICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRCkKICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50CiAgICAgICAgY29udGludWUKICAgICAgfQoKICAgICAgLy8gdmFsaWQgc3Vycm9nYXRlIHBhaXIKICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMAogICAgfSBlbHNlIGlmIChsZWFkU3Vycm9nYXRlKSB7CiAgICAgIC8vIHZhbGlkIGJtcCBjaGFyLCBidXQgbGFzdCBjaGFyIHdhcyBhIGxlYWQKICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpCiAgICB9CgogICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGwKCiAgICAvLyBlbmNvZGUgdXRmOAogICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHsKICAgICAgaWYgKCh1bml0cyAtPSAxKSA8IDApIGJyZWFrCiAgICAgIGJ5dGVzLnB1c2goY29kZVBvaW50KQogICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkgewogICAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWsKICAgICAgYnl0ZXMucHVzaCgKICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCwKICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MAogICAgICApCiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHsKICAgICAgaWYgKCh1bml0cyAtPSAzKSA8IDApIGJyZWFrCiAgICAgIGJ5dGVzLnB1c2goCiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsCiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLAogICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwCiAgICAgICkKICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMTAwMDApIHsKICAgICAgaWYgKCh1bml0cyAtPSA0KSA8IDApIGJyZWFrCiAgICAgIGJ5dGVzLnB1c2goCiAgICAgICAgY29kZVBvaW50ID4+IDB4MTIgfCAweEYwLAogICAgICAgIGNvZGVQb2ludCA+PiAweEMgJiAweDNGIHwgMHg4MCwKICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsCiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODAKICAgICAgKQogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvZGUgcG9pbnQnKQogICAgfQogIH0KCiAgcmV0dXJuIGJ5dGVzCn0KCmZ1bmN0aW9uIGFzY2lpVG9CeXRlcyAoc3RyKSB7CiAgdmFyIGJ5dGVBcnJheSA9IFtdCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHsKICAgIC8vIE5vZGUncyBjb2RlIHNlZW1zIHRvIGJlIGRvaW5nIHRoaXMgYW5kIG5vdCAmIDB4N0YuLgogICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKQogIH0KICByZXR1cm4gYnl0ZUFycmF5Cn0KCmZ1bmN0aW9uIHV0ZjE2bGVUb0J5dGVzIChzdHIsIHVuaXRzKSB7CiAgdmFyIGMsIGhpLCBsbwogIHZhciBieXRlQXJyYXkgPSBbXQogIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7CiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWsKCiAgICBjID0gc3RyLmNoYXJDb2RlQXQoaSkKICAgIGhpID0gYyA+PiA4CiAgICBsbyA9IGMgJSAyNTYKICAgIGJ5dGVBcnJheS5wdXNoKGxvKQogICAgYnl0ZUFycmF5LnB1c2goaGkpCiAgfQoKICByZXR1cm4gYnl0ZUFycmF5Cn0KCmZ1bmN0aW9uIGJhc2U2NFRvQnl0ZXMgKHN0cikgewogIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSkKfQoKZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgaWYgKChpICsgb2Zmc2V0ID49IGRzdC5sZW5ndGgpIHx8IChpID49IHNyYy5sZW5ndGgpKSBicmVhawogICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldCiAgfQogIHJldHVybiBpCn0KCmZ1bmN0aW9uIGlzbmFuICh2YWwpIHsKICByZXR1cm4gdmFsICE9PSB2YWwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmUKfQoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oNykpKQoKLyoqKi8gfSksCi8qIDIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKdmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHsgdmVyc2lvbjogJzIuNS4zJyB9OwppZiAodHlwZW9mIF9fZSA9PSAnbnVtYmVyJykgX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZgoKCi8qKiovIH0pLAovKiAzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTsKdmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpOwp2YXIgY3R4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJzsKCnZhciAkZXhwb3J0ID0gZnVuY3Rpb24gKHR5cGUsIG5hbWUsIHNvdXJjZSkgewogIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GOwogIHZhciBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HOwogIHZhciBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TOwogIHZhciBJU19QUk9UTyA9IHR5cGUgJiAkZXhwb3J0LlA7CiAgdmFyIElTX0JJTkQgPSB0eXBlICYgJGV4cG9ydC5COwogIHZhciBJU19XUkFQID0gdHlwZSAmICRleHBvcnQuVzsKICB2YXIgZXhwb3J0cyA9IElTX0dMT0JBTCA/IGNvcmUgOiBjb3JlW25hbWVdIHx8IChjb3JlW25hbWVdID0ge30pOwogIHZhciBleHBQcm90byA9IGV4cG9ydHNbUFJPVE9UWVBFXTsKICB2YXIgdGFyZ2V0ID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXTsKICB2YXIga2V5LCBvd24sIG91dDsKICBpZiAoSVNfR0xPQkFMKSBzb3VyY2UgPSBuYW1lOwogIGZvciAoa2V5IGluIHNvdXJjZSkgewogICAgLy8gY29udGFpbnMgaW4gbmF0aXZlCiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkOwogICAgaWYgKG93biAmJiBrZXkgaW4gZXhwb3J0cykgY29udGludWU7CiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZAogICAgb3V0ID0gb3duID8gdGFyZ2V0W2tleV0gOiBzb3VyY2Vba2V5XTsKICAgIC8vIHByZXZlbnQgZ2xvYmFsIHBvbGx1dGlvbiBmb3IgbmFtZXNwYWNlcwogICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV0KICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0CiAgICA6IElTX0JJTkQgJiYgb3duID8gY3R4KG91dCwgZ2xvYmFsKQogICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnkKICAgIDogSVNfV1JBUCAmJiB0YXJnZXRba2V5XSA9PSBvdXQgPyAoZnVuY3Rpb24gKEMpIHsKICAgICAgdmFyIEYgPSBmdW5jdGlvbiAoYSwgYiwgYykgewogICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgQykgewogICAgICAgICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7CiAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIG5ldyBDKCk7CiAgICAgICAgICAgIGNhc2UgMTogcmV0dXJuIG5ldyBDKGEpOwogICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQyhhLCBiKTsKICAgICAgICAgIH0gcmV0dXJuIG5ldyBDKGEsIGIsIGMpOwogICAgICAgIH0gcmV0dXJuIEMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgfTsKICAgICAgRltQUk9UT1RZUEVdID0gQ1tQUk9UT1RZUEVdOwogICAgICByZXR1cm4gRjsKICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kcwogICAgfSkob3V0KSA6IElTX1BST1RPICYmIHR5cGVvZiBvdXQgPT0gJ2Z1bmN0aW9uJyA/IGN0eChGdW5jdGlvbi5jYWxsLCBvdXQpIDogb3V0OwogICAgLy8gZXhwb3J0IHByb3RvIG1ldGhvZHMgdG8gY29yZS4lQ09OU1RSVUNUT1IlLm1ldGhvZHMuJU5BTUUlCiAgICBpZiAoSVNfUFJPVE8pIHsKICAgICAgKGV4cG9ydHMudmlydHVhbCB8fCAoZXhwb3J0cy52aXJ0dWFsID0ge30pKVtrZXldID0gb3V0OwogICAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUucHJvdG90eXBlLiVOQU1FJQogICAgICBpZiAodHlwZSAmICRleHBvcnQuUiAmJiBleHBQcm90byAmJiAhZXhwUHJvdG9ba2V5XSkgaGlkZShleHBQcm90bywga2V5LCBvdXQpOwogICAgfQogIH0KfTsKLy8gdHlwZSBiaXRtYXAKJGV4cG9ydC5GID0gMTsgICAvLyBmb3JjZWQKJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWwKJGV4cG9ydC5TID0gNDsgICAvLyBzdGF0aWMKJGV4cG9ydC5QID0gODsgICAvLyBwcm90bwokZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmQKJGV4cG9ydC5XID0gMzI7ICAvLyB3cmFwCiRleHBvcnQuVSA9IDY0OyAgLy8gc2FmZQokZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWAKbW9kdWxlLmV4cG9ydHMgPSAkZXhwb3J0OwoKCi8qKiovIH0pLAovKiA0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciBzdG9yZSA9IF9fd2VicGFja19yZXF1aXJlX18oNjUpKCd3a3MnKTsKdmFyIHVpZCA9IF9fd2VicGFja19yZXF1aXJlX18oMzgpOwp2YXIgU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCkuU3ltYm9sOwp2YXIgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJzsKCnZhciAkZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHsKICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID0KICAgIFVTRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdIHx8IChVU0VfU1lNQk9MID8gU3ltYm9sIDogdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7Cn07CgokZXhwb3J0cy5zdG9yZSA9IHN0b3JlOwoKCi8qKiovIH0pLAovKiA1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIFRoYW5rJ3MgSUU4IGZvciBoaXMgZnVubnkgZGVmaW5lUHJvcGVydHkKbW9kdWxlLmV4cG9ydHMgPSAhX193ZWJwYWNrX3JlcXVpcmVfXygxOSkoZnVuY3Rpb24gKCkgewogIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3Owp9KTsKCgovKioqLyB9KSwKLyogNiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKdmFyIElFOF9ET01fREVGSU5FID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5NSk7CnZhciB0b1ByaW1pdGl2ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNTgpOwp2YXIgZFAgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7CgpleHBvcnRzLmYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpID8gT2JqZWN0LmRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykgewogIGFuT2JqZWN0KE8pOwogIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTsKICBhbk9iamVjdChBdHRyaWJ1dGVzKTsKICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7CiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7CiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9CiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCEnKTsKICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTsKICByZXR1cm4gTzsKfTsKCgovKioqLyB9KSwKLyogNyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgp2YXIgZzsKCi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlCmcgPSAoZnVuY3Rpb24oKSB7CglyZXR1cm4gdGhpczsKfSkoKTsKCnRyeSB7CgkvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUCkKCWcgPSBnIHx8IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCkgfHwgKDEsZXZhbCkoInRoaXMiKTsKfSBjYXRjaChlKSB7CgkvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZQoJaWYodHlwZW9mIHdpbmRvdyA9PT0gIm9iamVjdCIpCgkJZyA9IHdpbmRvdzsKfQoKLy8gZyBjYW4gc3RpbGwgYmUgdW5kZWZpbmVkLCBidXQgbm90aGluZyB0byBkbyBhYm91dCBpdC4uLgovLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQncwovLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59Cgptb2R1bGUuZXhwb3J0cyA9IGc7CgoKLyoqKi8gfSksCi8qIDggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyLCBfX2Rpcm5hbWUpIHsKCmZ1bmN0aW9uIFZpcnR1YWxGaWxlU3lzdGVtKCkgewoJdGhpcy5maWxlU3lzdGVtID0ge307Cgl0aGlzLmJhc2VTeXN0ZW0gPSB7fTsKfQoKVmlydHVhbEZpbGVTeXN0ZW0ucHJvdG90eXBlLnJlYWRGaWxlU3luYyA9IGZ1bmN0aW9uIChmaWxlbmFtZSkgewoJZmlsZW5hbWUgPSBmaXhGaWxlbmFtZShmaWxlbmFtZSk7CgoJdmFyIGJhc2U2NGNvbnRlbnQgPSB0aGlzLmJhc2VTeXN0ZW1bZmlsZW5hbWVdOwoJaWYgKGJhc2U2NGNvbnRlbnQpIHsKCQlyZXR1cm4gbmV3IEJ1ZmZlcihiYXNlNjRjb250ZW50LCAnYmFzZTY0Jyk7Cgl9CgoJdmFyIGNvbnRlbnQgPSB0aGlzLmZpbGVTeXN0ZW1bZmlsZW5hbWVdOwoJaWYgKGNvbnRlbnQpIHsKCQlyZXR1cm4gY29udGVudDsKCX0KCgl0aHJvdyAnRmlsZSBcJycgKyBmaWxlbmFtZSArICdcJyBub3QgZm91bmQgaW4gdmlydHVhbCBmaWxlIHN5c3RlbSc7Cn07CgpWaXJ0dWFsRmlsZVN5c3RlbS5wcm90b3R5cGUud3JpdGVGaWxlU3luYyA9IGZ1bmN0aW9uIChmaWxlbmFtZSwgY29udGVudCkgewoJdGhpcy5maWxlU3lzdGVtW2ZpeEZpbGVuYW1lKGZpbGVuYW1lKV0gPSBjb250ZW50Owp9OwoKVmlydHVhbEZpbGVTeXN0ZW0ucHJvdG90eXBlLmJpbmRGUyA9IGZ1bmN0aW9uIChkYXRhKSB7Cgl0aGlzLmJhc2VTeXN0ZW0gPSBkYXRhIHx8IHt9Owp9OwoKCmZ1bmN0aW9uIGZpeEZpbGVuYW1lKGZpbGVuYW1lKSB7CglpZiAoZmlsZW5hbWUuaW5kZXhPZihfX2Rpcm5hbWUpID09PSAwKSB7CgkJZmlsZW5hbWUgPSBmaWxlbmFtZS5zdWJzdHJpbmcoX19kaXJuYW1lLmxlbmd0aCk7Cgl9CgoJaWYgKGZpbGVuYW1lLmluZGV4T2YoJy8nKSA9PT0gMCkgewoJCWZpbGVuYW1lID0gZmlsZW5hbWUuc3Vic3RyaW5nKDEpOwoJfQoKCXJldHVybiBmaWxlbmFtZTsKfQoKbW9kdWxlLmV4cG9ydHMgPSBuZXcgVmlydHVhbEZpbGVTeXN0ZW0oKTsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlciwgIi8iKSkKCi8qKiovIH0pLAovKiA5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJzsKfTsKCgovKioqLyB9KSwKLyogMTAgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjgKdmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoCiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGYKICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmMKICA6IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7CmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWYKCgovKioqLyB9KSwKLyogMTEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyCnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTsKCi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdAovLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXMKLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYQovLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLgoKdmFyIGNhY2hlZFNldFRpbWVvdXQ7CnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7CgpmdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkgewogICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7Cn0KZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpOwp9CihmdW5jdGlvbiAoKSB7CiAgICB0cnkgewogICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDsKICAgICAgICB9CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7CiAgICB9CiAgICB0cnkgewogICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0OwogICAgICAgIH0KICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0OwogICAgfQp9ICgpKQpmdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikgewogICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHsKICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnMKICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApOwogICAgfQogICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWQKICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkgewogICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0OwogICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7CiAgICB9CiAgICB0cnkgewogICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3MKICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApOwogICAgfSBjYXRjaChlKXsKICAgICAgICB0cnkgewogICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHkKICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApOwogICAgICAgIH0gY2F0Y2goZSl7CiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yCiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTsKICAgICAgICB9CiAgICB9CgoKfQpmdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7CiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHsKICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnMKICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7CiAgICB9CiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkCiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHsKICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7CiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpOwogICAgfQogICAgdHJ5IHsKICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzCiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpOwogICAgfSBjYXRjaCAoZSl7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseQogICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTsKICAgICAgICB9IGNhdGNoIChlKXsKICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuCiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXQKICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7CiAgICAgICAgfQogICAgfQoKCgp9CnZhciBxdWV1ZSA9IFtdOwp2YXIgZHJhaW5pbmcgPSBmYWxzZTsKdmFyIGN1cnJlbnRRdWV1ZTsKdmFyIHF1ZXVlSW5kZXggPSAtMTsKCmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHsKICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGRyYWluaW5nID0gZmFsc2U7CiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkgewogICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7CiAgICB9IGVsc2UgewogICAgICAgIHF1ZXVlSW5kZXggPSAtMTsKICAgIH0KICAgIGlmIChxdWV1ZS5sZW5ndGgpIHsKICAgICAgICBkcmFpblF1ZXVlKCk7CiAgICB9Cn0KCmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7CiAgICBpZiAoZHJhaW5pbmcpIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTsKICAgIGRyYWluaW5nID0gdHJ1ZTsKCiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoOwogICAgd2hpbGUobGVuKSB7CiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7CiAgICAgICAgcXVldWUgPSBbXTsKICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7CiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHsKICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBxdWV1ZUluZGV4ID0gLTE7CiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoOwogICAgfQogICAgY3VycmVudFF1ZXVlID0gbnVsbDsKICAgIGRyYWluaW5nID0gZmFsc2U7CiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7Cn0KCnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7CiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHsKICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTsKICAgICAgICB9CiAgICB9CiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpOwogICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHsKICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpOwogICAgfQp9OwoKLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0cwpmdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHsKICAgIHRoaXMuZnVuID0gZnVuOwogICAgdGhpcy5hcnJheSA9IGFycmF5Owp9Ckl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHsKICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpOwp9Owpwcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInOwpwcm9jZXNzLmJyb3dzZXIgPSB0cnVlOwpwcm9jZXNzLmVudiA9IHt9Owpwcm9jZXNzLmFyZ3YgPSBbXTsKcHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzCnByb2Nlc3MudmVyc2lvbnMgPSB7fTsKCmZ1bmN0aW9uIG5vb3AoKSB7fQoKcHJvY2Vzcy5vbiA9IG5vb3A7CnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wOwpwcm9jZXNzLm9uY2UgPSBub29wOwpwcm9jZXNzLm9mZiA9IG5vb3A7CnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wOwpwcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7CnByb2Nlc3MuZW1pdCA9IG5vb3A7CnByb2Nlc3MucHJlcGVuZExpc3RlbmVyID0gbm9vcDsKcHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDsKCnByb2Nlc3MubGlzdGVuZXJzID0gZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIFtdIH0KCnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7Cn07Cgpwcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9Owpwcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikgewogICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTsKfTsKcHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTsKCgovKioqLyB9KSwKLyogMTIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIE51bWJlclQsIFByb3BlcnR5RGVzY3JpcHRvcjsKCiAgTnVtYmVyVCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpLk51bWJlcjsKCiAgZXhwb3J0cy5yZXNvbHZlTGVuZ3RoID0gZnVuY3Rpb24obGVuZ3RoLCBzdHJlYW0sIHBhcmVudCkgewogICAgdmFyIHJlczsKICAgIGlmICh0eXBlb2YgbGVuZ3RoID09PSAnbnVtYmVyJykgewogICAgICByZXMgPSBsZW5ndGg7CiAgICB9IGVsc2UgaWYgKHR5cGVvZiBsZW5ndGggPT09ICdmdW5jdGlvbicpIHsKICAgICAgcmVzID0gbGVuZ3RoLmNhbGwocGFyZW50LCBwYXJlbnQpOwogICAgfSBlbHNlIGlmIChwYXJlbnQgJiYgdHlwZW9mIGxlbmd0aCA9PT0gJ3N0cmluZycpIHsKICAgICAgcmVzID0gcGFyZW50W2xlbmd0aF07CiAgICB9IGVsc2UgaWYgKHN0cmVhbSAmJiBsZW5ndGggaW5zdGFuY2VvZiBOdW1iZXJUKSB7CiAgICAgIHJlcyA9IGxlbmd0aC5kZWNvZGUoc3RyZWFtKTsKICAgIH0KICAgIGlmIChpc05hTihyZXMpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGEgZml4ZWQgc2l6ZScpOwogICAgfQogICAgcmV0dXJuIHJlczsKICB9OwoKICBQcm9wZXJ0eURlc2NyaXB0b3IgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBQcm9wZXJ0eURlc2NyaXB0b3Iob3B0cykgewogICAgICB2YXIga2V5LCB2YWw7CiAgICAgIGlmIChvcHRzID09IG51bGwpIHsKICAgICAgICBvcHRzID0ge307CiAgICAgIH0KICAgICAgdGhpcy5lbnVtZXJhYmxlID0gdHJ1ZTsKICAgICAgdGhpcy5jb25maWd1cmFibGUgPSB0cnVlOwogICAgICBmb3IgKGtleSBpbiBvcHRzKSB7CiAgICAgICAgdmFsID0gb3B0c1trZXldOwogICAgICAgIHRoaXNba2V5XSA9IHZhbDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBQcm9wZXJ0eURlc2NyaXB0b3I7CgogIH0pKCk7CgogIGV4cG9ydHMuUHJvcGVydHlEZXNjcmlwdG9yID0gUHJvcGVydHlEZXNjcmlwdG9yOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGRQID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKdmFyIGNyZWF0ZURlc2MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTsKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkgewogIHJldHVybiBkUC5mKG9iamVjdCwga2V5LCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7Cn0gOiBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7CiAgb2JqZWN0W2tleV0gPSB2YWx1ZTsKICByZXR1cm4gb2JqZWN0Owp9OwoKCi8qKiovIH0pLAovKiAxNCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpOwptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkgewogIGlmICghaXNPYmplY3QoaXQpKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhbiBvYmplY3QhJyk7CiAgcmV0dXJuIGl0Owp9OwoKCi8qKiovIH0pLAovKiAxNSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy4KLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQovLyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAovLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUKLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwovLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgovLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCgptb2R1bGUuZXhwb3J0cyA9IFN0cmVhbTsKCnZhciBFRSA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpLkV2ZW50RW1pdHRlcjsKdmFyIGluaGVyaXRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7Cgppbmhlcml0cyhTdHJlYW0sIEVFKTsKU3RyZWFtLlJlYWRhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSk7ClN0cmVhbS5Xcml0YWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ2KTsKU3RyZWFtLkR1cGxleCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ3KTsKU3RyZWFtLlRyYW5zZm9ybSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ4KTsKU3RyZWFtLlBhc3NUaHJvdWdoID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDkpOwoKLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC40LngKU3RyZWFtLlN0cmVhbSA9IFN0cmVhbTsKCgoKLy8gb2xkLXN0eWxlIHN0cmVhbXMuICBOb3RlIHRoYXQgdGhlIHBpcGUgbWV0aG9kICh0aGUgb25seSByZWxldmFudAovLyBwYXJ0IG9mIHRoaXMgY2xhc3MpIGlzIG92ZXJyaWRkZW4gaW4gdGhlIFJlYWRhYmxlIGNsYXNzLgoKZnVuY3Rpb24gU3RyZWFtKCkgewogIEVFLmNhbGwodGhpcyk7Cn0KClN0cmVhbS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uKGRlc3QsIG9wdGlvbnMpIHsKICB2YXIgc291cmNlID0gdGhpczsKCiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7CiAgICBpZiAoZGVzdC53cml0YWJsZSkgewogICAgICBpZiAoZmFsc2UgPT09IGRlc3Qud3JpdGUoY2h1bmspICYmIHNvdXJjZS5wYXVzZSkgewogICAgICAgIHNvdXJjZS5wYXVzZSgpOwogICAgICB9CiAgICB9CiAgfQoKICBzb3VyY2Uub24oJ2RhdGEnLCBvbmRhdGEpOwoKICBmdW5jdGlvbiBvbmRyYWluKCkgewogICAgaWYgKHNvdXJjZS5yZWFkYWJsZSAmJiBzb3VyY2UucmVzdW1lKSB7CiAgICAgIHNvdXJjZS5yZXN1bWUoKTsKICAgIH0KICB9CgogIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7CgogIC8vIElmIHRoZSAnZW5kJyBvcHRpb24gaXMgbm90IHN1cHBsaWVkLCBkZXN0LmVuZCgpIHdpbGwgYmUgY2FsbGVkIHdoZW4KICAvLyBzb3VyY2UgZ2V0cyB0aGUgJ2VuZCcgb3IgJ2Nsb3NlJyBldmVudHMuICBPbmx5IGRlc3QuZW5kKCkgb25jZS4KICBpZiAoIWRlc3QuX2lzU3RkaW8gJiYgKCFvcHRpb25zIHx8IG9wdGlvbnMuZW5kICE9PSBmYWxzZSkpIHsKICAgIHNvdXJjZS5vbignZW5kJywgb25lbmQpOwogICAgc291cmNlLm9uKCdjbG9zZScsIG9uY2xvc2UpOwogIH0KCiAgdmFyIGRpZE9uRW5kID0gZmFsc2U7CiAgZnVuY3Rpb24gb25lbmQoKSB7CiAgICBpZiAoZGlkT25FbmQpIHJldHVybjsKICAgIGRpZE9uRW5kID0gdHJ1ZTsKCiAgICBkZXN0LmVuZCgpOwogIH0KCgogIGZ1bmN0aW9uIG9uY2xvc2UoKSB7CiAgICBpZiAoZGlkT25FbmQpIHJldHVybjsKICAgIGRpZE9uRW5kID0gdHJ1ZTsKCiAgICBpZiAodHlwZW9mIGRlc3QuZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgZGVzdC5kZXN0cm95KCk7CiAgfQoKICAvLyBkb24ndCBsZWF2ZSBkYW5nbGluZyBwaXBlcyB3aGVuIHRoZXJlIGFyZSBlcnJvcnMuCiAgZnVuY3Rpb24gb25lcnJvcihlcikgewogICAgY2xlYW51cCgpOwogICAgaWYgKEVFLmxpc3RlbmVyQ291bnQodGhpcywgJ2Vycm9yJykgPT09IDApIHsKICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCBzdHJlYW0gZXJyb3IgaW4gcGlwZS4KICAgIH0KICB9CgogIHNvdXJjZS5vbignZXJyb3InLCBvbmVycm9yKTsKICBkZXN0Lm9uKCdlcnJvcicsIG9uZXJyb3IpOwoKICAvLyByZW1vdmUgYWxsIHRoZSBldmVudCBsaXN0ZW5lcnMgdGhhdCB3ZXJlIGFkZGVkLgogIGZ1bmN0aW9uIGNsZWFudXAoKSB7CiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpOwogICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTsKCiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTsKICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTsKCiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7CiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpOwoKICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xlYW51cCk7CiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xlYW51cCk7CgogICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTsKICB9CgogIHNvdXJjZS5vbignZW5kJywgY2xlYW51cCk7CiAgc291cmNlLm9uKCdjbG9zZScsIGNsZWFudXApOwoKICBkZXN0Lm9uKCdjbG9zZScsIGNsZWFudXApOwoKICBkZXN0LmVtaXQoJ3BpcGUnLCBzb3VyY2UpOwoKICAvLyBBbGxvdyBmb3IgdW5peC1saWtlIHVzYWdlOiBBLnBpcGUoQikucGlwZShDKQogIHJldHVybiBkZXN0Owp9OwoKCi8qKiovIH0pLAovKiAxNiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLgovLwovLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQovLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi8vICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAovLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0Ci8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZQovLyBmb2xsb3dpbmcgY29uZGl0aW9uczoKLy8KLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgovLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KCi8vIGEgZHVwbGV4IHN0cmVhbSBpcyBqdXN0IGEgc3RyZWFtIHRoYXQgaXMgYm90aCByZWFkYWJsZSBhbmQgd3JpdGFibGUuCi8vIFNpbmNlIEpTIGRvZXNuJ3QgaGF2ZSBtdWx0aXBsZSBwcm90b3R5cGFsIGluaGVyaXRhbmNlLCB0aGlzIGNsYXNzCi8vIHByb3RvdHlwYWxseSBpbmhlcml0cyBmcm9tIFJlYWRhYmxlLCBhbmQgdGhlbiBwYXJhc2l0aWNhbGx5IGZyb20KLy8gV3JpdGFibGUuCgoKCi8qPHJlcGxhY2VtZW50PiovCgp2YXIgcHJvY2Vzc05leHRUaWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMikubmV4dFRpY2s7Ci8qPC9yZXBsYWNlbWVudD4qLwoKLyo8cmVwbGFjZW1lbnQ+Ki8KdmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7CiAgdmFyIGtleXMgPSBbXTsKICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7CiAgICBrZXlzLnB1c2goa2V5KTsKICB9cmV0dXJuIGtleXM7Cn07Ci8qPC9yZXBsYWNlbWVudD4qLwoKbW9kdWxlLmV4cG9ydHMgPSBEdXBsZXg7CgovKjxyZXBsYWNlbWVudD4qLwp2YXIgdXRpbCA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpOwp1dGlsLmluaGVyaXRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7Ci8qPC9yZXBsYWNlbWVudD4qLwoKdmFyIFJlYWRhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Myk7CnZhciBXcml0YWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpOwoKdXRpbC5pbmhlcml0cyhEdXBsZXgsIFJlYWRhYmxlKTsKCnZhciBrZXlzID0gb2JqZWN0S2V5cyhXcml0YWJsZS5wcm90b3R5cGUpOwpmb3IgKHZhciB2ID0gMDsgdiA8IGtleXMubGVuZ3RoOyB2KyspIHsKICB2YXIgbWV0aG9kID0ga2V5c1t2XTsKICBpZiAoIUR1cGxleC5wcm90b3R5cGVbbWV0aG9kXSkgRHVwbGV4LnByb3RvdHlwZVttZXRob2RdID0gV3JpdGFibGUucHJvdG90eXBlW21ldGhvZF07Cn0KCmZ1bmN0aW9uIER1cGxleChvcHRpb25zKSB7CiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHJldHVybiBuZXcgRHVwbGV4KG9wdGlvbnMpOwoKICBSZWFkYWJsZS5jYWxsKHRoaXMsIG9wdGlvbnMpOwogIFdyaXRhYmxlLmNhbGwodGhpcywgb3B0aW9ucyk7CgogIGlmIChvcHRpb25zICYmIG9wdGlvbnMucmVhZGFibGUgPT09IGZhbHNlKSB0aGlzLnJlYWRhYmxlID0gZmFsc2U7CgogIGlmIChvcHRpb25zICYmIG9wdGlvbnMud3JpdGFibGUgPT09IGZhbHNlKSB0aGlzLndyaXRhYmxlID0gZmFsc2U7CgogIHRoaXMuYWxsb3dIYWxmT3BlbiA9IHRydWU7CiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5hbGxvd0hhbGZPcGVuID09PSBmYWxzZSkgdGhpcy5hbGxvd0hhbGZPcGVuID0gZmFsc2U7CgogIHRoaXMub25jZSgnZW5kJywgb25lbmQpOwp9CgovLyB0aGUgbm8taGFsZi1vcGVuIGVuZm9yY2VyCmZ1bmN0aW9uIG9uZW5kKCkgewogIC8vIGlmIHdlIGFsbG93IGhhbGYtb3BlbiBzdGF0ZSwgb3IgaWYgdGhlIHdyaXRhYmxlIHNpZGUgZW5kZWQsCiAgLy8gdGhlbiB3ZSdyZSBvay4KICBpZiAodGhpcy5hbGxvd0hhbGZPcGVuIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQpIHJldHVybjsKCiAgLy8gbm8gbW9yZSBkYXRhIGNhbiBiZSB3cml0dGVuLgogIC8vIEJ1dCBhbGxvdyBtb3JlIHdyaXRlcyB0byBoYXBwZW4gaW4gdGhpcyB0aWNrLgogIHByb2Nlc3NOZXh0VGljayhvbkVuZE5ULCB0aGlzKTsKfQoKZnVuY3Rpb24gb25FbmROVChzZWxmKSB7CiAgc2VsZi5lbmQoKTsKfQoKT2JqZWN0LmRlZmluZVByb3BlcnR5KER1cGxleC5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7CiAgZ2V0OiBmdW5jdGlvbiAoKSB7CiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7CiAgfSwKICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtCiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0CiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkgewogICAgICByZXR1cm47CiAgICB9CgogICAgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseQogICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkCiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlOwogICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTsKICB9Cn0pOwoKRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7CiAgdGhpcy5wdXNoKG51bGwpOwogIHRoaXMuZW5kKCk7CgogIHByb2Nlc3NOZXh0VGljayhjYiwgZXJyKTsKfTsKCmZ1bmN0aW9uIGZvckVhY2goeHMsIGYpIHsKICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgZih4c1tpXSwgaSk7CiAgfQp9CgovKioqLyB9KSwKLyogMTcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzCnZhciBJT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NCk7CnZhciBkZWZpbmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Nik7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgcmV0dXJuIElPYmplY3QoZGVmaW5lZChpdCkpOwp9OwoKCi8qKiovIH0pLAovKiAxOCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgp2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkgewogIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGl0LCBrZXkpOwp9OwoKCi8qKiovIH0pLAovKiAxOSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7CiAgdHJ5IHsKICAgIHJldHVybiAhIWV4ZWMoKTsKICB9IGNhdGNoIChlKSB7CiAgICByZXR1cm4gdHJ1ZTsKICB9Cn07CgoKLyoqKi8gfSksCi8qIDIwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZwp2YXIgYUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Nyk7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHsKICBhRnVuY3Rpb24oZm4pOwogIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjsKICBzd2l0Y2ggKGxlbmd0aCkgewogICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHsKICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSk7CiAgICB9OwogICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHsKICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7CiAgICB9OwogICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHsKICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7CiAgICB9OwogIH0KICByZXR1cm4gZnVuY3Rpb24gKC8qIC4uLmFyZ3MgKi8pIHsKICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpOwogIH07Cn07CgoKLyoqKi8gfSksCi8qIDIxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCmlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9uJykgewogIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlCiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHsKICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yCiAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwgewogICAgICBjb25zdHJ1Y3RvcjogewogICAgICAgIHZhbHVlOiBjdG9yLAogICAgICAgIGVudW1lcmFibGU6IGZhbHNlLAogICAgICAgIHdyaXRhYmxlOiB0cnVlLAogICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZQogICAgICB9CiAgICB9KTsKICB9Owp9IGVsc2UgewogIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzCiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHsKICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yCiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fQogICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZQogICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKQogICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yCiAgfQp9CgoKLyoqKi8gfSksCi8qIDIyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBEZWNvZGVTdHJlYW0sIEZpeGVkLCBOdW1iZXJULAogICAgX19oYXNQcm9wID0ge30uaGFzT3duUHJvcGVydHksCiAgICBfX2V4dGVuZHMgPSBmdW5jdGlvbihjaGlsZCwgcGFyZW50KSB7IGZvciAodmFyIGtleSBpbiBwYXJlbnQpIHsgaWYgKF9faGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfTsKCiAgRGVjb2RlU3RyZWFtID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MSk7CgogIE51bWJlclQgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBOdW1iZXJUKHR5cGUsIGVuZGlhbikgewogICAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgICB0aGlzLmVuZGlhbiA9IGVuZGlhbiAhPSBudWxsID8gZW5kaWFuIDogJ0JFJzsKICAgICAgdGhpcy5mbiA9IHRoaXMudHlwZTsKICAgICAgaWYgKHRoaXMudHlwZVt0aGlzLnR5cGUubGVuZ3RoIC0gMV0gIT09ICc4JykgewogICAgICAgIHRoaXMuZm4gKz0gdGhpcy5lbmRpYW47CiAgICAgIH0KICAgIH0KCiAgICBOdW1iZXJULnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBEZWNvZGVTdHJlYW0uVFlQRVNbdGhpcy50eXBlXTsKICAgIH07CgogICAgTnVtYmVyVC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oc3RyZWFtKSB7CiAgICAgIHJldHVybiBzdHJlYW1bJ3JlYWQnICsgdGhpcy5mbl0oKTsKICAgIH07CgogICAgTnVtYmVyVC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyZWFtLCB2YWwpIHsKICAgICAgcmV0dXJuIHN0cmVhbVsnd3JpdGUnICsgdGhpcy5mbl0odmFsKTsKICAgIH07CgogICAgcmV0dXJuIE51bWJlclQ7CgogIH0pKCk7CgogIGV4cG9ydHMuTnVtYmVyID0gTnVtYmVyVDsKCiAgZXhwb3J0cy51aW50OCA9IG5ldyBOdW1iZXJUKCdVSW50OCcpOwoKICBleHBvcnRzLnVpbnQxNmJlID0gZXhwb3J0cy51aW50MTYgPSBuZXcgTnVtYmVyVCgnVUludDE2JywgJ0JFJyk7CgogIGV4cG9ydHMudWludDE2bGUgPSBuZXcgTnVtYmVyVCgnVUludDE2JywgJ0xFJyk7CgogIGV4cG9ydHMudWludDI0YmUgPSBleHBvcnRzLnVpbnQyNCA9IG5ldyBOdW1iZXJUKCdVSW50MjQnLCAnQkUnKTsKCiAgZXhwb3J0cy51aW50MjRsZSA9IG5ldyBOdW1iZXJUKCdVSW50MjQnLCAnTEUnKTsKCiAgZXhwb3J0cy51aW50MzJiZSA9IGV4cG9ydHMudWludDMyID0gbmV3IE51bWJlclQoJ1VJbnQzMicsICdCRScpOwoKICBleHBvcnRzLnVpbnQzMmxlID0gbmV3IE51bWJlclQoJ1VJbnQzMicsICdMRScpOwoKICBleHBvcnRzLmludDggPSBuZXcgTnVtYmVyVCgnSW50OCcpOwoKICBleHBvcnRzLmludDE2YmUgPSBleHBvcnRzLmludDE2ID0gbmV3IE51bWJlclQoJ0ludDE2JywgJ0JFJyk7CgogIGV4cG9ydHMuaW50MTZsZSA9IG5ldyBOdW1iZXJUKCdJbnQxNicsICdMRScpOwoKICBleHBvcnRzLmludDI0YmUgPSBleHBvcnRzLmludDI0ID0gbmV3IE51bWJlclQoJ0ludDI0JywgJ0JFJyk7CgogIGV4cG9ydHMuaW50MjRsZSA9IG5ldyBOdW1iZXJUKCdJbnQyNCcsICdMRScpOwoKICBleHBvcnRzLmludDMyYmUgPSBleHBvcnRzLmludDMyID0gbmV3IE51bWJlclQoJ0ludDMyJywgJ0JFJyk7CgogIGV4cG9ydHMuaW50MzJsZSA9IG5ldyBOdW1iZXJUKCdJbnQzMicsICdMRScpOwoKICBleHBvcnRzLmZsb2F0YmUgPSBleHBvcnRzLmZsb2F0ID0gbmV3IE51bWJlclQoJ0Zsb2F0JywgJ0JFJyk7CgogIGV4cG9ydHMuZmxvYXRsZSA9IG5ldyBOdW1iZXJUKCdGbG9hdCcsICdMRScpOwoKICBleHBvcnRzLmRvdWJsZWJlID0gZXhwb3J0cy5kb3VibGUgPSBuZXcgTnVtYmVyVCgnRG91YmxlJywgJ0JFJyk7CgogIGV4cG9ydHMuZG91YmxlbGUgPSBuZXcgTnVtYmVyVCgnRG91YmxlJywgJ0xFJyk7CgogIEZpeGVkID0gKGZ1bmN0aW9uKF9zdXBlcikgewogICAgX19leHRlbmRzKEZpeGVkLCBfc3VwZXIpOwoKICAgIGZ1bmN0aW9uIEZpeGVkKHNpemUsIGVuZGlhbiwgZnJhY0JpdHMpIHsKICAgICAgaWYgKGZyYWNCaXRzID09IG51bGwpIHsKICAgICAgICBmcmFjQml0cyA9IHNpemUgPj4gMTsKICAgICAgfQogICAgICBGaXhlZC5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzLCAiSW50IiArIHNpemUsIGVuZGlhbik7CiAgICAgIHRoaXMuX3BvaW50ID0gMSA8PCBmcmFjQml0czsKICAgIH0KCiAgICBGaXhlZC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oc3RyZWFtKSB7CiAgICAgIHJldHVybiBGaXhlZC5fX3N1cGVyX18uZGVjb2RlLmNhbGwodGhpcywgc3RyZWFtKSAvIHRoaXMuX3BvaW50OwogICAgfTsKCiAgICBGaXhlZC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyZWFtLCB2YWwpIHsKICAgICAgcmV0dXJuIEZpeGVkLl9fc3VwZXJfXy5lbmNvZGUuY2FsbCh0aGlzLCBzdHJlYW0sIHZhbCAqIHRoaXMuX3BvaW50IHwgMCk7CiAgICB9OwoKICAgIHJldHVybiBGaXhlZDsKCiAgfSkoTnVtYmVyVCk7CgogIGV4cG9ydHMuRml4ZWQgPSBGaXhlZDsKCiAgZXhwb3J0cy5maXhlZDE2YmUgPSBleHBvcnRzLmZpeGVkMTYgPSBuZXcgRml4ZWQoMTYsICdCRScpOwoKICBleHBvcnRzLmZpeGVkMTZsZSA9IG5ldyBGaXhlZCgxNiwgJ0xFJyk7CgogIGV4cG9ydHMuZml4ZWQzMmJlID0gZXhwb3J0cy5maXhlZDMyID0gbmV3IEZpeGVkKDMyLCAnQkUnKTsKCiAgZXhwb3J0cy5maXhlZDMybGUgPSBuZXcgRml4ZWQoMzIsICdMRScpOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMjMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSB7fTsKCgovKioqLyB9KSwKLyogMjQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKdmFyICRhdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjA3KSh0cnVlKTsKCi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKCkKX193ZWJwYWNrX3JlcXVpcmVfXyg2MSkoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7CiAgdGhpcy5fdCA9IFN0cmluZyhpdGVyYXRlZCk7IC8vIHRhcmdldAogIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4Ci8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KCkKfSwgZnVuY3Rpb24gKCkgewogIHZhciBPID0gdGhpcy5fdDsKICB2YXIgaW5kZXggPSB0aGlzLl9pOwogIHZhciBwb2ludDsKICBpZiAoaW5kZXggPj0gTy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTsKICBwb2ludCA9ICRhdChPLCBpbmRleCk7CiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7CiAgcmV0dXJuIHsgdmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZSB9Owp9KTsKCgovKioqLyB9KSwKLyogMjUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKEJ1ZmZlcikgey8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLgovLwovLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQovLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi8vICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAovLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0Ci8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZQovLyBmb2xsb3dpbmcgY29uZGl0aW9uczoKLy8KLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgovLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KCi8vIE5PVEU6IFRoZXNlIHR5cGUgY2hlY2tpbmcgZnVuY3Rpb25zIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIGBpbnN0YW5jZW9mYAovLyBiZWNhdXNlIGl0IGlzIGZyYWdpbGUgYW5kIGNhbiBiZSBlYXNpbHkgZmFrZWQgd2l0aCBgT2JqZWN0LmNyZWF0ZSgpYC4KCmZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7CiAgaWYgKEFycmF5LmlzQXJyYXkpIHsKICAgIHJldHVybiBBcnJheS5pc0FycmF5KGFyZyk7CiAgfQogIHJldHVybiBvYmplY3RUb1N0cmluZyhhcmcpID09PSAnW29iamVjdCBBcnJheV0nOwp9CmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7CgpmdW5jdGlvbiBpc0Jvb2xlYW4oYXJnKSB7CiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJzsKfQpleHBvcnRzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjsKCmZ1bmN0aW9uIGlzTnVsbChhcmcpIHsKICByZXR1cm4gYXJnID09PSBudWxsOwp9CmV4cG9ydHMuaXNOdWxsID0gaXNOdWxsOwoKZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7CiAgcmV0dXJuIGFyZyA9PSBudWxsOwp9CmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDsKCmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykgewogIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJzsKfQpleHBvcnRzLmlzTnVtYmVyID0gaXNOdW1iZXI7CgpmdW5jdGlvbiBpc1N0cmluZyhhcmcpIHsKICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZyc7Cn0KZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nOwoKZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7CiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnOwp9CmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDsKCmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykgewogIHJldHVybiBhcmcgPT09IHZvaWQgMDsKfQpleHBvcnRzLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7CgpmdW5jdGlvbiBpc1JlZ0V4cChyZSkgewogIHJldHVybiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nOwp9CmV4cG9ydHMuaXNSZWdFeHAgPSBpc1JlZ0V4cDsKCmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykgewogIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7Cn0KZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0OwoKZnVuY3Rpb24gaXNEYXRlKGQpIHsKICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoZCkgPT09ICdbb2JqZWN0IERhdGVdJzsKfQpleHBvcnRzLmlzRGF0ZSA9IGlzRGF0ZTsKCmZ1bmN0aW9uIGlzRXJyb3IoZSkgewogIHJldHVybiAob2JqZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXScgfHwgZSBpbnN0YW5jZW9mIEVycm9yKTsKfQpleHBvcnRzLmlzRXJyb3IgPSBpc0Vycm9yOwoKZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHsKICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJzsKfQpleHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uOwoKZnVuY3Rpb24gaXNQcmltaXRpdmUoYXJnKSB7CiAgcmV0dXJuIGFyZyA9PT0gbnVsbCB8fAogICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHwKICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicgfHwKICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHwKICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2wKICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3VuZGVmaW5lZCc7Cn0KZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlOwoKZXhwb3J0cy5pc0J1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcjsKCmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHsKICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pOwp9CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDI2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihCdWZmZXIpIHsvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgoKLyoKUERGT2JqZWN0IC0gY29udmVydHMgSmF2YVNjcmlwdCB0eXBlcyBpbnRvIHRoZWlyIGNvcnJpc3BvbmRpbmcgUERGIHR5cGVzLgpCeSBEZXZvbiBHb3ZldHQKICovCgooZnVuY3Rpb24oKSB7CiAgdmFyIFBERk9iamVjdCwgUERGUmVmZXJlbmNlOwoKICBQREZPYmplY3QgPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgZXNjYXBhYmxlLCBlc2NhcGFibGVSZSwgcGFkLCBzd2FwQnl0ZXM7CgogICAgZnVuY3Rpb24gUERGT2JqZWN0KCkge30KCiAgICBwYWQgPSBmdW5jdGlvbihzdHIsIGxlbmd0aCkgewogICAgICByZXR1cm4gKEFycmF5KGxlbmd0aCArIDEpLmpvaW4oJzAnKSArIHN0cikuc2xpY2UoLWxlbmd0aCk7CiAgICB9OwoKICAgIGVzY2FwYWJsZVJlID0gL1tcblxyXHRcYlxmXChcKVxcXS9nOwoKICAgIGVzY2FwYWJsZSA9IHsKICAgICAgJ1xuJzogJ1xcbicsCiAgICAgICdccic6ICdcXHInLAogICAgICAnXHQnOiAnXFx0JywKICAgICAgJ1xiJzogJ1xcYicsCiAgICAgICdcZic6ICdcXGYnLAogICAgICAnXFwnOiAnXFxcXCcsCiAgICAgICcoJzogJ1xcKCcsCiAgICAgICcpJzogJ1xcKScKICAgIH07CgogICAgc3dhcEJ5dGVzID0gZnVuY3Rpb24oYnVmZikgewogICAgICB2YXIgYSwgaSwgaiwgbCwgcmVmOwogICAgICBsID0gYnVmZi5sZW5ndGg7CiAgICAgIGlmIChsICYgMHgwMSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigiQnVmZmVyIGxlbmd0aCBtdXN0IGJlIGV2ZW4iKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmb3IgKGkgPSBqID0gMCwgcmVmID0gbCAtIDE7IGogPCByZWY7IGkgPSBqICs9IDIpIHsKICAgICAgICAgIGEgPSBidWZmW2ldOwogICAgICAgICAgYnVmZltpXSA9IGJ1ZmZbaSArIDFdOwogICAgICAgICAgYnVmZltpICsgMV0gPSBhOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gYnVmZjsKICAgIH07CgogICAgUERGT2JqZWN0LmNvbnZlcnQgPSBmdW5jdGlvbihvYmplY3QpIHsKICAgICAgdmFyIGUsIGksIGlzVW5pY29kZSwgaXRlbXMsIGosIGtleSwgb3V0LCByZWYsIHN0cmluZywgdmFsOwogICAgICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ3N0cmluZycpIHsKICAgICAgICByZXR1cm4gJy8nICsgb2JqZWN0OwogICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFN0cmluZykgewogICAgICAgIHN0cmluZyA9IG9iamVjdDsKICAgICAgICBpc1VuaWNvZGUgPSBmYWxzZTsKICAgICAgICBmb3IgKGkgPSBqID0gMCwgcmVmID0gc3RyaW5nLmxlbmd0aDsgaiA8IHJlZjsgaSA9IGogKz0gMSkgewogICAgICAgICAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KGkpID4gMHg3ZikgewogICAgICAgICAgICBpc1VuaWNvZGUgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGlzVW5pY29kZSkgewogICAgICAgICAgc3RyaW5nID0gc3dhcEJ5dGVzKG5ldyBCdWZmZXIoJ1x1ZmVmZicgKyBzdHJpbmcsICd1dGYxNmxlJykpLnRvU3RyaW5nKCdiaW5hcnknKTsKICAgICAgICB9CiAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UoZXNjYXBhYmxlUmUsIGZ1bmN0aW9uKGMpIHsKICAgICAgICAgIHJldHVybiBlc2NhcGFibGVbY107CiAgICAgICAgfSk7CiAgICAgICAgcmV0dXJuICcoJyArIHN0cmluZyArICcpJzsKICAgICAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqZWN0KSkgewogICAgICAgIHJldHVybiAnPCcgKyBvYmplY3QudG9TdHJpbmcoJ2hleCcpICsgJz4nOwogICAgICB9IGVsc2UgaWYgKG9iamVjdCBpbnN0YW5jZW9mIFBERlJlZmVyZW5jZSkgewogICAgICAgIHJldHVybiBvYmplY3QudG9TdHJpbmcoKTsKICAgICAgfSBlbHNlIGlmIChvYmplY3QgaW5zdGFuY2VvZiBEYXRlKSB7CiAgICAgICAgcmV0dXJuICcoRDonICsgcGFkKG9iamVjdC5nZXRVVENGdWxsWWVhcigpLCA0KSArIHBhZChvYmplY3QuZ2V0VVRDTW9udGgoKSArIDEsIDIpICsgcGFkKG9iamVjdC5nZXRVVENEYXRlKCksIDIpICsgcGFkKG9iamVjdC5nZXRVVENIb3VycygpLCAyKSArIHBhZChvYmplY3QuZ2V0VVRDTWludXRlcygpLCAyKSArIHBhZChvYmplY3QuZ2V0VVRDU2Vjb25kcygpLCAyKSArICdaKSc7CiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvYmplY3QpKSB7CiAgICAgICAgaXRlbXMgPSAoKGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIGssIGxlbiwgcmVzdWx0czsKICAgICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgICAgIGZvciAoayA9IDAsIGxlbiA9IG9iamVjdC5sZW5ndGg7IGsgPCBsZW47IGsrKykgewogICAgICAgICAgICBlID0gb2JqZWN0W2tdOwogICAgICAgICAgICByZXN1bHRzLnB1c2goUERGT2JqZWN0LmNvbnZlcnQoZSkpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgICAgfSkoKSkuam9pbignICcpOwogICAgICAgIHJldHVybiAnWycgKyBpdGVtcyArICddJzsKICAgICAgfSBlbHNlIGlmICh7fS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT09ICdbb2JqZWN0IE9iamVjdF0nKSB7CiAgICAgICAgb3V0ID0gWyc8PCddOwogICAgICAgIGZvciAoa2V5IGluIG9iamVjdCkgewogICAgICAgICAgdmFsID0gb2JqZWN0W2tleV07CiAgICAgICAgICBvdXQucHVzaCgnLycgKyBrZXkgKyAnICcgKyBQREZPYmplY3QuY29udmVydCh2YWwpKTsKICAgICAgICB9CiAgICAgICAgb3V0LnB1c2goJz4+Jyk7CiAgICAgICAgcmV0dXJuIG91dC5qb2luKCdcbicpOwogICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdudW1iZXInKSB7CiAgICAgICAgcmV0dXJuIFBERk9iamVjdC5udW1iZXIob2JqZWN0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gJycgKyBvYmplY3Q7CiAgICAgIH0KICAgIH07CgogICAgUERGT2JqZWN0Lm51bWJlciA9IGZ1bmN0aW9uKG4pIHsKICAgICAgaWYgKG4gPiAtMWUyMSAmJiBuIDwgMWUyMSkgewogICAgICAgIHJldHVybiBNYXRoLnJvdW5kKG4gKiAxZTYpIC8gMWU2OwogICAgICB9CiAgICAgIHRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgbnVtYmVyOiAiICsgbik7CiAgICB9OwoKICAgIHJldHVybiBQREZPYmplY3Q7CgogIH0pKCk7CgogIG1vZHVsZS5leHBvcnRzID0gUERGT2JqZWN0OwoKICBQREZSZWZlcmVuY2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg3KTsKCn0pLmNhbGwodGhpcyk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDI3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHsKICByZXR1cm4gewogICAgZW51bWVyYWJsZTogIShiaXRtYXAgJiAxKSwKICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSwKICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLAogICAgdmFsdWU6IHZhbHVlCiAgfTsKfTsKCgovKioqLyB9KSwKLyogMjggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKX193ZWJwYWNrX3JlcXVpcmVfXygyMDEpOwp2YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7CnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CnZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTsKdmFyIFRPX1NUUklOR19UQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpKCd0b1N0cmluZ1RhZycpOwoKdmFyIERPTUl0ZXJhYmxlcyA9ICgnQ1NTUnVsZUxpc3QsQ1NTU3R5bGVEZWNsYXJhdGlvbixDU1NWYWx1ZUxpc3QsQ2xpZW50UmVjdExpc3QsRE9NUmVjdExpc3QsRE9NU3RyaW5nTGlzdCwnICsKICAnRE9NVG9rZW5MaXN0LERhdGFUcmFuc2Zlckl0ZW1MaXN0LEZpbGVMaXN0LEhUTUxBbGxDb2xsZWN0aW9uLEhUTUxDb2xsZWN0aW9uLEhUTUxGb3JtRWxlbWVudCxIVE1MU2VsZWN0RWxlbWVudCwnICsKICAnTWVkaWFMaXN0LE1pbWVUeXBlQXJyYXksTmFtZWROb2RlTWFwLE5vZGVMaXN0LFBhaW50UmVxdWVzdExpc3QsUGx1Z2luLFBsdWdpbkFycmF5LFNWR0xlbmd0aExpc3QsU1ZHTnVtYmVyTGlzdCwnICsKICAnU1ZHUGF0aFNlZ0xpc3QsU1ZHUG9pbnRMaXN0LFNWR1N0cmluZ0xpc3QsU1ZHVHJhbnNmb3JtTGlzdCxTb3VyY2VCdWZmZXJMaXN0LFN0eWxlU2hlZXRMaXN0LFRleHRUcmFja0N1ZUxpc3QsJyArCiAgJ1RleHRUcmFja0xpc3QsVG91Y2hMaXN0Jykuc3BsaXQoJywnKTsKCmZvciAodmFyIGkgPSAwOyBpIDwgRE9NSXRlcmFibGVzLmxlbmd0aDsgaSsrKSB7CiAgdmFyIE5BTUUgPSBET01JdGVyYWJsZXNbaV07CiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbTkFNRV07CiAgdmFyIHByb3RvID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTsKICBpZiAocHJvdG8gJiYgIXByb3RvW1RPX1NUUklOR19UQUddKSBoaWRlKHByb3RvLCBUT19TVFJJTkdfVEFHLCBOQU1FKTsKICBJdGVyYXRvcnNbTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7Cn0KCgovKioqLyB9KSwKLyogMjkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pCnZhciAka2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTAxKTsKdmFyIGVudW1CdWdLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Nik7Cgptb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykgewogIHJldHVybiAka2V5cyhPLCBlbnVtQnVnS2V5cyk7Cn07CgoKLyoqKi8gfSksCi8qIDMwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIDcuMS4xMyBUb09iamVjdChhcmd1bWVudCkKdmFyIGRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU2KTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHsKICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTsKfTsKCgovKioqLyB9KSwKLyogMzEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuCi8vCi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLy8gIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwovLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQKLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlCi8vIGZvbGxvd2luZyBjb25kaXRpb25zOgovLwovLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAovLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLy8KLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgovLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOCi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAovLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IKLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRQovLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgoKZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkgewogIHRoaXMuX2V2ZW50cyA9IHRoaXMuX2V2ZW50cyB8fCB7fTsKICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkOwp9Cm1vZHVsZS5leHBvcnRzID0gRXZlbnRFbWl0dGVyOwoKLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC4xMC54CkV2ZW50RW1pdHRlci5FdmVudEVtaXR0ZXIgPSBFdmVudEVtaXR0ZXI7CgpFdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHMgPSB1bmRlZmluZWQ7CkV2ZW50RW1pdHRlci5wcm90b3R5cGUuX21heExpc3RlbmVycyA9IHVuZGVmaW5lZDsKCi8vIEJ5IGRlZmF1bHQgRXZlbnRFbWl0dGVycyB3aWxsIHByaW50IGEgd2FybmluZyBpZiBtb3JlIHRoYW4gMTAgbGlzdGVuZXJzIGFyZQovLyBhZGRlZCB0byBpdC4gVGhpcyBpcyBhIHVzZWZ1bCBkZWZhdWx0IHdoaWNoIGhlbHBzIGZpbmRpbmcgbWVtb3J5IGxlYWtzLgpFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycyA9IDEwOwoKLy8gT2J2aW91c2x5IG5vdCBhbGwgRW1pdHRlcnMgc2hvdWxkIGJlIGxpbWl0ZWQgdG8gMTAuIFRoaXMgZnVuY3Rpb24gYWxsb3dzCi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLgpFdmVudEVtaXR0ZXIucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uKG4pIHsKICBpZiAoIWlzTnVtYmVyKG4pIHx8IG4gPCAwIHx8IGlzTmFOKG4pKQogICAgdGhyb3cgVHlwZUVycm9yKCduIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTsKICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSBuOwogIHJldHVybiB0aGlzOwp9OwoKRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24odHlwZSkgewogIHZhciBlciwgaGFuZGxlciwgbGVuLCBhcmdzLCBpLCBsaXN0ZW5lcnM7CgogIGlmICghdGhpcy5fZXZlbnRzKQogICAgdGhpcy5fZXZlbnRzID0ge307CgogIC8vIElmIHRoZXJlIGlzIG5vICdlcnJvcicgZXZlbnQgbGlzdGVuZXIgdGhlbiB0aHJvdy4KICBpZiAodHlwZSA9PT0gJ2Vycm9yJykgewogICAgaWYgKCF0aGlzLl9ldmVudHMuZXJyb3IgfHwKICAgICAgICAoaXNPYmplY3QodGhpcy5fZXZlbnRzLmVycm9yKSAmJiAhdGhpcy5fZXZlbnRzLmVycm9yLmxlbmd0aCkpIHsKICAgICAgZXIgPSBhcmd1bWVudHNbMV07CiAgICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7CiAgICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50CiAgICAgIH0gZWxzZSB7CiAgICAgICAgLy8gQXQgbGVhc3QgZ2l2ZSBzb21lIGtpbmQgb2YgY29udGV4dCB0byB0aGUgdXNlcgogICAgICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoJ1VuY2F1Z2h0LCB1bnNwZWNpZmllZCAiZXJyb3IiIGV2ZW50LiAoJyArIGVyICsgJyknKTsKICAgICAgICBlcnIuY29udGV4dCA9IGVyOwogICAgICAgIHRocm93IGVycjsKICAgICAgfQogICAgfQogIH0KCiAgaGFuZGxlciA9IHRoaXMuX2V2ZW50c1t0eXBlXTsKCiAgaWYgKGlzVW5kZWZpbmVkKGhhbmRsZXIpKQogICAgcmV0dXJuIGZhbHNlOwoKICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkgewogICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7CiAgICAgIC8vIGZhc3QgY2FzZXMKICAgICAgY2FzZSAxOgogICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAyOgogICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBhcmd1bWVudHNbMV0pOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDM6CiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGFyZ3VtZW50c1sxXSwgYXJndW1lbnRzWzJdKTsKICAgICAgICBicmVhazsKICAgICAgLy8gc2xvd2VyCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CiAgICAgICAgaGFuZGxlci5hcHBseSh0aGlzLCBhcmdzKTsKICAgIH0KICB9IGVsc2UgaWYgKGlzT2JqZWN0KGhhbmRsZXIpKSB7CiAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTsKICAgIGxpc3RlbmVycyA9IGhhbmRsZXIuc2xpY2UoKTsKICAgIGxlbiA9IGxpc3RlbmVycy5sZW5ndGg7CiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCiAgICAgIGxpc3RlbmVyc1tpXS5hcHBseSh0aGlzLCBhcmdzKTsKICB9CgogIHJldHVybiB0cnVlOwp9OwoKRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7CiAgdmFyIG07CgogIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpCiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpOwoKICBpZiAoIXRoaXMuX2V2ZW50cykKICAgIHRoaXMuX2V2ZW50cyA9IHt9OwoKICAvLyBUbyBhdm9pZCByZWN1cnNpb24gaW4gdGhlIGNhc2UgdGhhdCB0eXBlID09PSAibmV3TGlzdGVuZXIiISBCZWZvcmUKICAvLyBhZGRpbmcgaXQgdG8gdGhlIGxpc3RlbmVycywgZmlyc3QgZW1pdCAibmV3TGlzdGVuZXIiLgogIGlmICh0aGlzLl9ldmVudHMubmV3TGlzdGVuZXIpCiAgICB0aGlzLmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSwKICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGxpc3RlbmVyLmxpc3RlbmVyKSA/CiAgICAgICAgICAgICAgbGlzdGVuZXIubGlzdGVuZXIgOiBsaXN0ZW5lcik7CgogIGlmICghdGhpcy5fZXZlbnRzW3R5cGVdKQogICAgLy8gT3B0aW1pemUgdGhlIGNhc2Ugb2Ygb25lIGxpc3RlbmVyLiBEb24ndCBuZWVkIHRoZSBleHRyYSBhcnJheSBvYmplY3QuCiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjsKICBlbHNlIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pKQogICAgLy8gSWYgd2UndmUgYWxyZWFkeSBnb3QgYW4gYXJyYXksIGp1c3QgYXBwZW5kLgogICAgdGhpcy5fZXZlbnRzW3R5cGVdLnB1c2gobGlzdGVuZXIpOwogIGVsc2UKICAgIC8vIEFkZGluZyB0aGUgc2Vjb25kIGVsZW1lbnQsIG5lZWQgdG8gY2hhbmdlIHRvIGFycmF5LgogICAgdGhpcy5fZXZlbnRzW3R5cGVdID0gW3RoaXMuX2V2ZW50c1t0eXBlXSwgbGlzdGVuZXJdOwoKICAvLyBDaGVjayBmb3IgbGlzdGVuZXIgbGVhawogIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pICYmICF0aGlzLl9ldmVudHNbdHlwZV0ud2FybmVkKSB7CiAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX21heExpc3RlbmVycykpIHsKICAgICAgbSA9IHRoaXMuX21heExpc3RlbmVyczsKICAgIH0gZWxzZSB7CiAgICAgIG0gPSBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVyczsKICAgIH0KCiAgICBpZiAobSAmJiBtID4gMCAmJiB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoID4gbSkgewogICAgICB0aGlzLl9ldmVudHNbdHlwZV0ud2FybmVkID0gdHJ1ZTsKICAgICAgY29uc29sZS5lcnJvcignKG5vZGUpIHdhcm5pbmc6IHBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgJyArCiAgICAgICAgICAgICAgICAgICAgJ2xlYWsgZGV0ZWN0ZWQuICVkIGxpc3RlbmVycyBhZGRlZC4gJyArCiAgICAgICAgICAgICAgICAgICAgJ1VzZSBlbWl0dGVyLnNldE1heExpc3RlbmVycygpIHRvIGluY3JlYXNlIGxpbWl0LicsCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLmxlbmd0aCk7CiAgICAgIGlmICh0eXBlb2YgY29uc29sZS50cmFjZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIC8vIG5vdCBzdXBwb3J0ZWQgaW4gSUUgMTAKICAgICAgICBjb25zb2xlLnRyYWNlKCk7CiAgICAgIH0KICAgIH0KICB9CgogIHJldHVybiB0aGlzOwp9OwoKRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI7CgpFdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikgewogIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpCiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpOwoKICB2YXIgZmlyZWQgPSBmYWxzZTsKCiAgZnVuY3Rpb24gZygpIHsKICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgZyk7CgogICAgaWYgKCFmaXJlZCkgewogICAgICBmaXJlZCA9IHRydWU7CiAgICAgIGxpc3RlbmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICB9CiAgfQoKICBnLmxpc3RlbmVyID0gbGlzdGVuZXI7CiAgdGhpcy5vbih0eXBlLCBnKTsKCiAgcmV0dXJuIHRoaXM7Cn07CgovLyBlbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWZmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZApFdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHsKICB2YXIgbGlzdCwgcG9zaXRpb24sIGxlbmd0aCwgaTsKCiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSkKICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7CgogIGlmICghdGhpcy5fZXZlbnRzIHx8ICF0aGlzLl9ldmVudHNbdHlwZV0pCiAgICByZXR1cm4gdGhpczsKCiAgbGlzdCA9IHRoaXMuX2V2ZW50c1t0eXBlXTsKICBsZW5ndGggPSBsaXN0Lmxlbmd0aDsKICBwb3NpdGlvbiA9IC0xOwoKICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHwKICAgICAgKGlzRnVuY3Rpb24obGlzdC5saXN0ZW5lcikgJiYgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7CiAgICBkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdOwogICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcikKICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3RlbmVyKTsKCiAgfSBlbHNlIGlmIChpc09iamVjdChsaXN0KSkgewogICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gPiAwOykgewogICAgICBpZiAobGlzdFtpXSA9PT0gbGlzdGVuZXIgfHwKICAgICAgICAgIChsaXN0W2ldLmxpc3RlbmVyICYmIGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSkgewogICAgICAgIHBvc2l0aW9uID0gaTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQoKICAgIGlmIChwb3NpdGlvbiA8IDApCiAgICAgIHJldHVybiB0aGlzOwoKICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSkgewogICAgICBsaXN0Lmxlbmd0aCA9IDA7CiAgICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07CiAgICB9IGVsc2UgewogICAgICBsaXN0LnNwbGljZShwb3NpdGlvbiwgMSk7CiAgICB9CgogICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcikKICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3RlbmVyKTsKICB9CgogIHJldHVybiB0aGlzOwp9OwoKRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBmdW5jdGlvbih0eXBlKSB7CiAgdmFyIGtleSwgbGlzdGVuZXJzOwoKICBpZiAoIXRoaXMuX2V2ZW50cykKICAgIHJldHVybiB0aGlzOwoKICAvLyBub3QgbGlzdGVuaW5nIGZvciByZW1vdmVMaXN0ZW5lciwgbm8gbmVlZCB0byBlbWl0CiAgaWYgKCF0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKQogICAgICB0aGlzLl9ldmVudHMgPSB7fTsKICAgIGVsc2UgaWYgKHRoaXMuX2V2ZW50c1t0eXBlXSkKICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLy8gZW1pdCByZW1vdmVMaXN0ZW5lciBmb3IgYWxsIGxpc3RlbmVycyBvbiBhbGwgZXZlbnRzCiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsKICAgIGZvciAoa2V5IGluIHRoaXMuX2V2ZW50cykgewogICAgICBpZiAoa2V5ID09PSAncmVtb3ZlTGlzdGVuZXInKSBjb250aW51ZTsKICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTsKICAgIH0KICAgIHRoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCdyZW1vdmVMaXN0ZW5lcicpOwogICAgdGhpcy5fZXZlbnRzID0ge307CiAgICByZXR1cm4gdGhpczsKICB9CgogIGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50c1t0eXBlXTsKCiAgaWYgKGlzRnVuY3Rpb24obGlzdGVuZXJzKSkgewogICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpOwogIH0gZWxzZSBpZiAobGlzdGVuZXJzKSB7CiAgICAvLyBMSUZPIG9yZGVyCiAgICB3aGlsZSAobGlzdGVuZXJzLmxlbmd0aCkKICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnNbbGlzdGVuZXJzLmxlbmd0aCAtIDFdKTsKICB9CiAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTsKCiAgcmV0dXJuIHRoaXM7Cn07CgpFdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uKHR5cGUpIHsKICB2YXIgcmV0OwogIGlmICghdGhpcy5fZXZlbnRzIHx8ICF0aGlzLl9ldmVudHNbdHlwZV0pCiAgICByZXQgPSBbXTsKICBlbHNlIGlmIChpc0Z1bmN0aW9uKHRoaXMuX2V2ZW50c1t0eXBlXSkpCiAgICByZXQgPSBbdGhpcy5fZXZlbnRzW3R5cGVdXTsKICBlbHNlCiAgICByZXQgPSB0aGlzLl9ldmVudHNbdHlwZV0uc2xpY2UoKTsKICByZXR1cm4gcmV0Owp9OwoKRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24odHlwZSkgewogIGlmICh0aGlzLl9ldmVudHMpIHsKICAgIHZhciBldmxpc3RlbmVyID0gdGhpcy5fZXZlbnRzW3R5cGVdOwoKICAgIGlmIChpc0Z1bmN0aW9uKGV2bGlzdGVuZXIpKQogICAgICByZXR1cm4gMTsKICAgIGVsc2UgaWYgKGV2bGlzdGVuZXIpCiAgICAgIHJldHVybiBldmxpc3RlbmVyLmxlbmd0aDsKICB9CiAgcmV0dXJuIDA7Cn07CgpFdmVudEVtaXR0ZXIubGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uKGVtaXR0ZXIsIHR5cGUpIHsKICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KHR5cGUpOwp9OwoKZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHsKICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJzsKfQoKZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7CiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInOwp9CgpmdW5jdGlvbiBpc09iamVjdChhcmcpIHsKICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsOwp9CgpmdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHsKICByZXR1cm4gYXJnID09PSB2b2lkIDA7Cn0KCgovKioqLyB9KSwKLyogMzIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2VzcykgewoKaWYgKCFwcm9jZXNzLnZlcnNpb24gfHwKICAgIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MC4nKSA9PT0gMCB8fAogICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLicpID09PSAwICYmIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MS44LicpICE9PSAwKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSB7IG5leHRUaWNrOiBuZXh0VGljayB9Owp9IGVsc2UgewogIG1vZHVsZS5leHBvcnRzID0gcHJvY2Vzcwp9CgpmdW5jdGlvbiBuZXh0VGljayhmbiwgYXJnMSwgYXJnMiwgYXJnMykgewogIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJyJjYWxsYmFjayIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7CiAgfQogIHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoOwogIHZhciBhcmdzLCBpOwogIHN3aXRjaCAobGVuKSB7CiAgY2FzZSAwOgogIGNhc2UgMToKICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZuKTsKICBjYXNlIDI6CiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tPbmUoKSB7CiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSk7CiAgICB9KTsKICBjYXNlIDM6CiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUd28oKSB7CiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSwgYXJnMik7CiAgICB9KTsKICBjYXNlIDQ6CiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUaHJlZSgpIHsKICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyLCBhcmczKTsKICAgIH0pOwogIGRlZmF1bHQ6CiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiAtIDEpOwogICAgaSA9IDA7CiAgICB3aGlsZSAoaSA8IGFyZ3MubGVuZ3RoKSB7CiAgICAgIGFyZ3NbaSsrXSA9IGFyZ3VtZW50c1tpXTsKICAgIH0KICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGljaygpIHsKICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7CiAgICB9KTsKICB9Cn0KCgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxMSkpKQoKLyoqKi8gfSksCi8qIDMzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIGVzbGludC1kaXNhYmxlIG5vZGUvbm8tZGVwcmVjYXRlZC1hcGkgKi8KdmFyIGJ1ZmZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMSkKdmFyIEJ1ZmZlciA9IGJ1ZmZlci5CdWZmZXIKCi8vIGFsdGVybmF0aXZlIHRvIHVzaW5nIE9iamVjdC5rZXlzIGZvciBvbGQgYnJvd3NlcnMKZnVuY3Rpb24gY29weVByb3BzIChzcmMsIGRzdCkgewogIGZvciAodmFyIGtleSBpbiBzcmMpIHsKICAgIGRzdFtrZXldID0gc3JjW2tleV0KICB9Cn0KaWYgKEJ1ZmZlci5mcm9tICYmIEJ1ZmZlci5hbGxvYyAmJiBCdWZmZXIuYWxsb2NVbnNhZmUgJiYgQnVmZmVyLmFsbG9jVW5zYWZlU2xvdykgewogIG1vZHVsZS5leHBvcnRzID0gYnVmZmVyCn0gZWxzZSB7CiAgLy8gQ29weSBwcm9wZXJ0aWVzIGZyb20gcmVxdWlyZSgnYnVmZmVyJykKICBjb3B5UHJvcHMoYnVmZmVyLCBleHBvcnRzKQogIGV4cG9ydHMuQnVmZmVyID0gU2FmZUJ1ZmZlcgp9CgpmdW5jdGlvbiBTYWZlQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkgewogIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpCn0KCi8vIENvcHkgc3RhdGljIG1ldGhvZHMgZnJvbSBCdWZmZXIKY29weVByb3BzKEJ1ZmZlciwgU2FmZUJ1ZmZlcikKClNhZmVCdWZmZXIuZnJvbSA9IGZ1bmN0aW9uIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkgewogIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKQogIH0KICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKQp9CgpTYWZlQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7CiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpCiAgfQogIHZhciBidWYgPSBCdWZmZXIoc2l6ZSkKICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7CiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykgewogICAgICBidWYuZmlsbChmaWxsLCBlbmNvZGluZykKICAgIH0gZWxzZSB7CiAgICAgIGJ1Zi5maWxsKGZpbGwpCiAgICB9CiAgfSBlbHNlIHsKICAgIGJ1Zi5maWxsKDApCiAgfQogIHJldHVybiBidWYKfQoKU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIChzaXplKSB7CiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpCiAgfQogIHJldHVybiBCdWZmZXIoc2l6ZSkKfQoKU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkgewogIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKQogIH0KICByZXR1cm4gYnVmZmVyLlNsb3dCdWZmZXIoc2l6ZSkKfQoKCi8qKiovIH0pLAovKiAzNCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKCnZhciBUWVBFRF9PSyA9ICAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnKSAmJgogICAgICAgICAgICAgICAgKHR5cGVvZiBVaW50MTZBcnJheSAhPT0gJ3VuZGVmaW5lZCcpICYmCiAgICAgICAgICAgICAgICAodHlwZW9mIEludDMyQXJyYXkgIT09ICd1bmRlZmluZWQnKTsKCmZ1bmN0aW9uIF9oYXMob2JqLCBrZXkpIHsKICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KTsKfQoKZXhwb3J0cy5hc3NpZ24gPSBmdW5jdGlvbiAob2JqIC8qZnJvbTEsIGZyb20yLCBmcm9tMywgLi4uKi8pIHsKICB2YXIgc291cmNlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7CiAgd2hpbGUgKHNvdXJjZXMubGVuZ3RoKSB7CiAgICB2YXIgc291cmNlID0gc291cmNlcy5zaGlmdCgpOwogICAgaWYgKCFzb3VyY2UpIHsgY29udGludWU7IH0KCiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHsKICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzb3VyY2UgKyAnbXVzdCBiZSBub24tb2JqZWN0Jyk7CiAgICB9CgogICAgZm9yICh2YXIgcCBpbiBzb3VyY2UpIHsKICAgICAgaWYgKF9oYXMoc291cmNlLCBwKSkgewogICAgICAgIG9ialtwXSA9IHNvdXJjZVtwXTsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIG9iajsKfTsKCgovLyByZWR1Y2UgYnVmZmVyIHNpemUsIGF2b2lkaW5nIG1lbSBjb3B5CmV4cG9ydHMuc2hyaW5rQnVmID0gZnVuY3Rpb24gKGJ1Ziwgc2l6ZSkgewogIGlmIChidWYubGVuZ3RoID09PSBzaXplKSB7IHJldHVybiBidWY7IH0KICBpZiAoYnVmLnN1YmFycmF5KSB7IHJldHVybiBidWYuc3ViYXJyYXkoMCwgc2l6ZSk7IH0KICBidWYubGVuZ3RoID0gc2l6ZTsKICByZXR1cm4gYnVmOwp9OwoKCnZhciBmblR5cGVkID0gewogIGFycmF5U2V0OiBmdW5jdGlvbiAoZGVzdCwgc3JjLCBzcmNfb2ZmcywgbGVuLCBkZXN0X29mZnMpIHsKICAgIGlmIChzcmMuc3ViYXJyYXkgJiYgZGVzdC5zdWJhcnJheSkgewogICAgICBkZXN0LnNldChzcmMuc3ViYXJyYXkoc3JjX29mZnMsIHNyY19vZmZzICsgbGVuKSwgZGVzdF9vZmZzKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgLy8gRmFsbGJhY2sgdG8gb3JkaW5hcnkgYXJyYXkKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgZGVzdFtkZXN0X29mZnMgKyBpXSA9IHNyY1tzcmNfb2ZmcyArIGldOwogICAgfQogIH0sCiAgLy8gSm9pbiBhcnJheSBvZiBjaHVua3MgdG8gc2luZ2xlIGFycmF5LgogIGZsYXR0ZW5DaHVua3M6IGZ1bmN0aW9uIChjaHVua3MpIHsKICAgIHZhciBpLCBsLCBsZW4sIHBvcywgY2h1bmssIHJlc3VsdDsKCiAgICAvLyBjYWxjdWxhdGUgZGF0YSBsZW5ndGgKICAgIGxlbiA9IDA7CiAgICBmb3IgKGkgPSAwLCBsID0gY2h1bmtzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgICBsZW4gKz0gY2h1bmtzW2ldLmxlbmd0aDsKICAgIH0KCiAgICAvLyBqb2luIGNodW5rcwogICAgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkobGVuKTsKICAgIHBvcyA9IDA7CiAgICBmb3IgKGkgPSAwLCBsID0gY2h1bmtzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgICBjaHVuayA9IGNodW5rc1tpXTsKICAgICAgcmVzdWx0LnNldChjaHVuaywgcG9zKTsKICAgICAgcG9zICs9IGNodW5rLmxlbmd0aDsKICAgIH0KCiAgICByZXR1cm4gcmVzdWx0OwogIH0KfTsKCnZhciBmblVudHlwZWQgPSB7CiAgYXJyYXlTZXQ6IGZ1bmN0aW9uIChkZXN0LCBzcmMsIHNyY19vZmZzLCBsZW4sIGRlc3Rfb2ZmcykgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICBkZXN0W2Rlc3Rfb2ZmcyArIGldID0gc3JjW3NyY19vZmZzICsgaV07CiAgICB9CiAgfSwKICAvLyBKb2luIGFycmF5IG9mIGNodW5rcyB0byBzaW5nbGUgYXJyYXkuCiAgZmxhdHRlbkNodW5rczogZnVuY3Rpb24gKGNodW5rcykgewogICAgcmV0dXJuIFtdLmNvbmNhdC5hcHBseShbXSwgY2h1bmtzKTsKICB9Cn07CgoKLy8gRW5hYmxlL0Rpc2FibGUgdHlwZWQgYXJyYXlzIHVzZSwgZm9yIHRlc3RpbmcKLy8KZXhwb3J0cy5zZXRUeXBlZCA9IGZ1bmN0aW9uIChvbikgewogIGlmIChvbikgewogICAgZXhwb3J0cy5CdWY4ICA9IFVpbnQ4QXJyYXk7CiAgICBleHBvcnRzLkJ1ZjE2ID0gVWludDE2QXJyYXk7CiAgICBleHBvcnRzLkJ1ZjMyID0gSW50MzJBcnJheTsKICAgIGV4cG9ydHMuYXNzaWduKGV4cG9ydHMsIGZuVHlwZWQpOwogIH0gZWxzZSB7CiAgICBleHBvcnRzLkJ1ZjggID0gQXJyYXk7CiAgICBleHBvcnRzLkJ1ZjE2ID0gQXJyYXk7CiAgICBleHBvcnRzLkJ1ZjMyID0gQXJyYXk7CiAgICBleHBvcnRzLmFzc2lnbihleHBvcnRzLCBmblVudHlwZWQpOwogIH0KfTsKCmV4cG9ydHMuc2V0VHlwZWQoVFlQRURfT0spOwoKCi8qKiovIH0pLAovKiAzNSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgpleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTsKCgovKioqLyB9KSwKLyogMzYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pCnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpOwp2YXIgZFBzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDApOwp2YXIgZW51bUJ1Z0tleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY2KTsKdmFyIElFX1BST1RPID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NCkoJ0lFX1BST1RPJyk7CnZhciBFbXB0eSA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTsKdmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnOwoKLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZQp2YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHsKICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1ZwogIHZhciBpZnJhbWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk2KSgnaWZyYW1lJyk7CiAgdmFyIGkgPSBlbnVtQnVnS2V5cy5sZW5ndGg7CiAgdmFyIGx0ID0gJzwnOwogIHZhciBndCA9ICc+JzsKICB2YXIgaWZyYW1lRG9jdW1lbnQ7CiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgX193ZWJwYWNrX3JlcXVpcmVfXygyMDUpLmFwcGVuZENoaWxkKGlmcmFtZSk7CiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybAogIC8vIGNyZWF0ZURpY3QgPSBpZnJhbWUuY29udGVudFdpbmRvdy5PYmplY3Q7CiAgLy8gaHRtbC5yZW1vdmVDaGlsZChpZnJhbWUpOwogIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7CiAgaWZyYW1lRG9jdW1lbnQub3BlbigpOwogIGlmcmFtZURvY3VtZW50LndyaXRlKGx0ICsgJ3NjcmlwdCcgKyBndCArICdkb2N1bWVudC5GPU9iamVjdCcgKyBsdCArICcvc2NyaXB0JyArIGd0KTsKICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpOwogIGNyZWF0ZURpY3QgPSBpZnJhbWVEb2N1bWVudC5GOwogIHdoaWxlIChpLS0pIGRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dOwogIHJldHVybiBjcmVhdGVEaWN0KCk7Cn07Cgptb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHsKICB2YXIgcmVzdWx0OwogIGlmIChPICE9PSBudWxsKSB7CiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7CiAgICByZXN1bHQgPSBuZXcgRW1wdHkoKTsKICAgIEVtcHR5W1BST1RPVFlQRV0gPSBudWxsOwogICAgLy8gYWRkICJfX3Byb3RvX18iIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGwKICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPOwogIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7CiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRQcyhyZXN1bHQsIFByb3BlcnRpZXMpOwp9OwoKCi8qKiovIH0pLAovKiAzNyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyA3LjEuMTUgVG9MZW5ndGgKdmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oNjMpOwp2YXIgbWluID0gTWF0aC5taW47Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTEKfTsKCgovKioqLyB9KSwKLyogMzggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKdmFyIGlkID0gMDsKdmFyIHB4ID0gTWF0aC5yYW5kb20oKTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7CiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTsKfTsKCgovKioqLyB9KSwKLyogMzkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGRlZiA9IF9fd2VicGFja19yZXF1aXJlX18oNikuZjsKdmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpOwp2YXIgVEFHID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KSgndG9TdHJpbmdUYWcnKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCB0YWcsIHN0YXQpIHsKICBpZiAoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSkgZGVmKGl0LCBUQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogdGFnIH0pOwp9OwoKCi8qKiovIH0pLAovKiA0MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgTUVUQSA9IF9fd2VicGFja19yZXF1aXJlX18oMzgpKCdtZXRhJyk7CnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7CnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTsKdmFyIHNldERlc2MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpLmY7CnZhciBpZCA9IDA7CnZhciBpc0V4dGVuc2libGUgPSBPYmplY3QuaXNFeHRlbnNpYmxlIHx8IGZ1bmN0aW9uICgpIHsKICByZXR1cm4gdHJ1ZTsKfTsKdmFyIEZSRUVaRSA9ICFfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KShmdW5jdGlvbiAoKSB7CiAgcmV0dXJuIGlzRXh0ZW5zaWJsZShPYmplY3QucHJldmVudEV4dGVuc2lvbnMoe30pKTsKfSk7CnZhciBzZXRNZXRhID0gZnVuY3Rpb24gKGl0KSB7CiAgc2V0RGVzYyhpdCwgTUVUQSwgeyB2YWx1ZTogewogICAgaTogJ08nICsgKytpZCwgLy8gb2JqZWN0IElECiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEcwogIH0gfSk7Cn07CnZhciBmYXN0S2V5ID0gZnVuY3Rpb24gKGl0LCBjcmVhdGUpIHsKICAvLyByZXR1cm4gcHJpbWl0aXZlIHdpdGggcHJlZml4CiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7CiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7CiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdAogICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gJ0YnOwogICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGEKICAgIGlmICghY3JlYXRlKSByZXR1cm4gJ0UnOwogICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGEKICAgIHNldE1ldGEoaXQpOwogIC8vIHJldHVybiBvYmplY3QgSUQKICB9IHJldHVybiBpdFtNRVRBXS5pOwp9Owp2YXIgZ2V0V2VhayA9IGZ1bmN0aW9uIChpdCwgY3JlYXRlKSB7CiAgaWYgKCFoYXMoaXQsIE1FVEEpKSB7CiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdAogICAgaWYgKCFpc0V4dGVuc2libGUoaXQpKSByZXR1cm4gdHJ1ZTsKICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhCiAgICBpZiAoIWNyZWF0ZSkgcmV0dXJuIGZhbHNlOwogICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGEKICAgIHNldE1ldGEoaXQpOwogIC8vIHJldHVybiBoYXNoIHdlYWsgY29sbGVjdGlvbnMgSURzCiAgfSByZXR1cm4gaXRbTUVUQV0udzsKfTsKLy8gYWRkIG1ldGFkYXRhIG9uIGZyZWV6ZS1mYW1pbHkgbWV0aG9kcyBjYWxsaW5nCnZhciBvbkZyZWV6ZSA9IGZ1bmN0aW9uIChpdCkgewogIGlmIChGUkVFWkUgJiYgbWV0YS5ORUVEICYmIGlzRXh0ZW5zaWJsZShpdCkgJiYgIWhhcyhpdCwgTUVUQSkpIHNldE1ldGEoaXQpOwogIHJldHVybiBpdDsKfTsKdmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHsKICBLRVk6IE1FVEEsCiAgTkVFRDogZmFsc2UsCiAgZmFzdEtleTogZmFzdEtleSwKICBnZXRXZWFrOiBnZXRXZWFrLAogIG9uRnJlZXplOiBvbkZyZWV6ZQp9OwoKCi8qKiovIH0pLAovKiA0MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgY3R4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CnZhciBjYWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTEpOwp2YXIgaXNBcnJheUl0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMik7CnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpOwp2YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTsKdmFyIGdldEl0ZXJGbiA9IF9fd2VicGFja19yZXF1aXJlX18oNjcpOwp2YXIgQlJFQUsgPSB7fTsKdmFyIFJFVFVSTiA9IHt9Owp2YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCBlbnRyaWVzLCBmbiwgdGhhdCwgSVRFUkFUT1IpIHsKICB2YXIgaXRlckZuID0gSVRFUkFUT1IgPyBmdW5jdGlvbiAoKSB7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSk7CiAgdmFyIGYgPSBjdHgoZm4sIHRoYXQsIGVudHJpZXMgPyAyIDogMSk7CiAgdmFyIGluZGV4ID0gMDsKICB2YXIgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0OwogIGlmICh0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdGVyYWJsZSArICcgaXMgbm90IGl0ZXJhYmxlIScpOwogIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvcgogIGlmIChpc0FycmF5SXRlcihpdGVyRm4pKSBmb3IgKGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7CiAgICByZXN1bHQgPSBlbnRyaWVzID8gZihhbk9iamVjdChzdGVwID0gaXRlcmFibGVbaW5kZXhdKVswXSwgc3RlcFsxXSkgOiBmKGl0ZXJhYmxlW2luZGV4XSk7CiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDsKICB9IGVsc2UgZm9yIChpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOykgewogICAgcmVzdWx0ID0gY2FsbChpdGVyYXRvciwgZiwgc3RlcC52YWx1ZSwgZW50cmllcyk7CiAgICBpZiAocmVzdWx0ID09PSBCUkVBSyB8fCByZXN1bHQgPT09IFJFVFVSTikgcmV0dXJuIHJlc3VsdDsKICB9Cn07CmV4cG9ydHMuQlJFQUsgPSBCUkVBSzsKZXhwb3J0cy5SRVRVUk4gPSBSRVRVUk47CgoKLyoqKi8gfSksCi8qIDQyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgp2YXIgaXNTdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzU3RyaW5nOwp2YXIgaXNOdW1iZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzTnVtYmVyOwp2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzT2JqZWN0Owp2YXIgaXNBcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNBcnJheTsKdmFyIExpbmVCcmVha2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3OCk7Cgp2YXIgTEVBRElORyA9IC9eKFxzKSsvZzsKdmFyIFRSQUlMSU5HID0gLyhccykrJC9nOwoKLyoqCiAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVGV4dFRvb2xzIC0gdGV4dCBtZWFzdXJlbWVudCB1dGlsaXR5CiAqCiAqIEBjb25zdHJ1Y3RvcgogKiBAcGFyYW0ge0ZvbnRQcm92aWRlcn0gZm9udFByb3ZpZGVyCiAqLwpmdW5jdGlvbiBUZXh0VG9vbHMoZm9udFByb3ZpZGVyKSB7Cgl0aGlzLmZvbnRQcm92aWRlciA9IGZvbnRQcm92aWRlcjsKfQoKLyoqCiAqIENvbnZlcnRzIGFuIGFycmF5IG9mIHN0cmluZ3MgKG9yIGlubGluZS1kZWZpbml0aW9uLW9iamVjdHMpIGludG8gYSBjb2xsZWN0aW9uCiAqIG9mIGlubGluZXMgYW5kIGNhbGN1bGF0ZWQgbWluV2lkdGgvbWF4V2lkdGguCiAqIGFuZCB0aGVpciBtaW4vbWF4IHdpZHRocwogKiBAcGFyYW0gIHtPYmplY3R9IHRleHRBcnJheSAtIGFuIGFycmF5IG9mIGlubGluZS1kZWZpbml0aW9uLW9iamVjdHMgKG9yIHN0cmluZ3MpCiAqIEBwYXJhbSAge09iamVjdH0gc3R5bGVDb250ZXh0U3RhY2sgY3VycmVudCBzdHlsZSBzdGFjawogKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24gb2YgaW5saW5lcywgbWluV2lkdGgsIG1heFdpZHRoCiAqLwpUZXh0VG9vbHMucHJvdG90eXBlLmJ1aWxkSW5saW5lcyA9IGZ1bmN0aW9uICh0ZXh0QXJyYXksIHN0eWxlQ29udGV4dFN0YWNrKSB7Cgl2YXIgbWVhc3VyZWQgPSBtZWFzdXJlKHRoaXMuZm9udFByb3ZpZGVyLCB0ZXh0QXJyYXksIHN0eWxlQ29udGV4dFN0YWNrKTsKCgl2YXIgbWluV2lkdGggPSAwLAoJCW1heFdpZHRoID0gMCwKCQljdXJyZW50TGluZVdpZHRoOwoKCW1lYXN1cmVkLmZvckVhY2goZnVuY3Rpb24gKGlubGluZSkgewoJCW1pbldpZHRoID0gTWF0aC5tYXgobWluV2lkdGgsIGlubGluZS53aWR0aCAtIGlubGluZS5sZWFkaW5nQ3V0IC0gaW5saW5lLnRyYWlsaW5nQ3V0KTsKCgkJaWYgKCFjdXJyZW50TGluZVdpZHRoKSB7CgkJCWN1cnJlbnRMaW5lV2lkdGggPSB7d2lkdGg6IDAsIGxlYWRpbmdDdXQ6IGlubGluZS5sZWFkaW5nQ3V0LCB0cmFpbGluZ0N1dDogMH07CgkJfQoKCQljdXJyZW50TGluZVdpZHRoLndpZHRoICs9IGlubGluZS53aWR0aDsKCQljdXJyZW50TGluZVdpZHRoLnRyYWlsaW5nQ3V0ID0gaW5saW5lLnRyYWlsaW5nQ3V0OwoKCQltYXhXaWR0aCA9IE1hdGgubWF4KG1heFdpZHRoLCBnZXRUcmltbWVkV2lkdGgoY3VycmVudExpbmVXaWR0aCkpOwoKCQlpZiAoaW5saW5lLmxpbmVFbmQpIHsKCQkJY3VycmVudExpbmVXaWR0aCA9IG51bGw7CgkJfQoJfSk7CgoJaWYgKGdldFN0eWxlUHJvcGVydHkoe30sIHN0eWxlQ29udGV4dFN0YWNrLCAnbm9XcmFwJywgZmFsc2UpKSB7CgkJbWluV2lkdGggPSBtYXhXaWR0aDsKCX0KCglyZXR1cm4gewoJCWl0ZW1zOiBtZWFzdXJlZCwKCQltaW5XaWR0aDogbWluV2lkdGgsCgkJbWF4V2lkdGg6IG1heFdpZHRoCgl9OwoKCWZ1bmN0aW9uIGdldFRyaW1tZWRXaWR0aChpdGVtKSB7CgkJcmV0dXJuIE1hdGgubWF4KDAsIGl0ZW0ud2lkdGggLSBpdGVtLmxlYWRpbmdDdXQgLSBpdGVtLnRyYWlsaW5nQ3V0KTsKCX0KfTsKCi8qKgogKiBSZXR1cm5zIHNpemUgb2YgdGhlIHNwZWNpZmllZCBzdHJpbmcgKHdpdGhvdXQgYnJlYWtpbmcgaXQpIHVzaW5nIHRoZSBjdXJyZW50IHN0eWxlCiAqIEBwYXJhbSAge1N0cmluZ30gdGV4dCAgICAgICAgICAgICAgdGV4dCB0byBiZSBtZWFzdXJlZAogKiBAcGFyYW0gIHtPYmplY3R9IHN0eWxlQ29udGV4dFN0YWNrIGN1cnJlbnQgc3R5bGUgc3RhY2sKICogQHJldHVybiB7T2JqZWN0fSAgICAgICAgICAgICAgICAgICBzaXplIG9mIHRoZSBzcGVjaWZpZWQgc3RyaW5nCiAqLwpUZXh0VG9vbHMucHJvdG90eXBlLnNpemVPZlN0cmluZyA9IGZ1bmN0aW9uICh0ZXh0LCBzdHlsZUNvbnRleHRTdGFjaykgewoJdGV4dCA9IHRleHQgPyB0ZXh0LnRvU3RyaW5nKCkucmVwbGFjZSgvXHQvZywgJyAgICAnKSA6ICcnOwoKCS8vVE9ETzogcmVmYWN0b3IgLSBleHRyYWN0IGZyb20gbWVhc3VyZQoJdmFyIGZvbnROYW1lID0gZ2V0U3R5bGVQcm9wZXJ0eSh7fSwgc3R5bGVDb250ZXh0U3RhY2ssICdmb250JywgJ1JvYm90bycpOwoJdmFyIGZvbnRTaXplID0gZ2V0U3R5bGVQcm9wZXJ0eSh7fSwgc3R5bGVDb250ZXh0U3RhY2ssICdmb250U2l6ZScsIDEyKTsKCXZhciBmb250RmVhdHVyZXMgPSBnZXRTdHlsZVByb3BlcnR5KHt9LCBzdHlsZUNvbnRleHRTdGFjaywgJ2ZvbnRGZWF0dXJlcycsIG51bGwpOwoJdmFyIGJvbGQgPSBnZXRTdHlsZVByb3BlcnR5KHt9LCBzdHlsZUNvbnRleHRTdGFjaywgJ2JvbGQnLCBmYWxzZSk7Cgl2YXIgaXRhbGljcyA9IGdldFN0eWxlUHJvcGVydHkoe30sIHN0eWxlQ29udGV4dFN0YWNrLCAnaXRhbGljcycsIGZhbHNlKTsKCXZhciBsaW5lSGVpZ2h0ID0gZ2V0U3R5bGVQcm9wZXJ0eSh7fSwgc3R5bGVDb250ZXh0U3RhY2ssICdsaW5lSGVpZ2h0JywgMSk7Cgl2YXIgY2hhcmFjdGVyU3BhY2luZyA9IGdldFN0eWxlUHJvcGVydHkoe30sIHN0eWxlQ29udGV4dFN0YWNrLCAnY2hhcmFjdGVyU3BhY2luZycsIDApOwoKCXZhciBmb250ID0gdGhpcy5mb250UHJvdmlkZXIucHJvdmlkZUZvbnQoZm9udE5hbWUsIGJvbGQsIGl0YWxpY3MpOwoKCXJldHVybiB7CgkJd2lkdGg6IHdpZHRoT2ZTdHJpbmcodGV4dCwgZm9udCwgZm9udFNpemUsIGNoYXJhY3RlclNwYWNpbmcsIGZvbnRGZWF0dXJlcyksCgkJaGVpZ2h0OiBmb250LmxpbmVIZWlnaHQoZm9udFNpemUpICogbGluZUhlaWdodCwKCQlmb250U2l6ZTogZm9udFNpemUsCgkJbGluZUhlaWdodDogbGluZUhlaWdodCwKCQlhc2NlbmRlcjogZm9udC5hc2NlbmRlciAvIDEwMDAgKiBmb250U2l6ZSwKCQlkZXNjZW5kZXI6IGZvbnQuZGVzY2VuZGVyIC8gMTAwMCAqIGZvbnRTaXplCgl9Owp9OwoKVGV4dFRvb2xzLnByb3RvdHlwZS53aWR0aE9mU3RyaW5nID0gZnVuY3Rpb24gKHRleHQsIGZvbnQsIGZvbnRTaXplLCBjaGFyYWN0ZXJTcGFjaW5nLCBmb250RmVhdHVyZXMpIHsKCXJldHVybiB3aWR0aE9mU3RyaW5nKHRleHQsIGZvbnQsIGZvbnRTaXplLCBjaGFyYWN0ZXJTcGFjaW5nLCBmb250RmVhdHVyZXMpOwp9OwoKZnVuY3Rpb24gc3BsaXRXb3Jkcyh0ZXh0LCBub1dyYXApIHsKCXZhciByZXN1bHRzID0gW107Cgl0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cdC9nLCAnICAgICcpOwoKCWlmIChub1dyYXApIHsKCQlyZXN1bHRzLnB1c2goe3RleHQ6IHRleHR9KTsKCQlyZXR1cm4gcmVzdWx0czsKCX0KCgl2YXIgYnJlYWtlciA9IG5ldyBMaW5lQnJlYWtlcih0ZXh0KTsKCXZhciBsYXN0ID0gMDsKCXZhciBiazsKCgl3aGlsZSAoYmsgPSBicmVha2VyLm5leHRCcmVhaygpKSB7CgkJdmFyIHdvcmQgPSB0ZXh0LnNsaWNlKGxhc3QsIGJrLnBvc2l0aW9uKTsKCgkJaWYgKGJrLnJlcXVpcmVkIHx8IHdvcmQubWF0Y2goL1xyP1xuJHxcciQvKSkgeyAvLyBuZXcgbGluZQoJCQl3b3JkID0gd29yZC5yZXBsYWNlKC9ccj9cbiR8XHIkLywgJycpOwoJCQlyZXN1bHRzLnB1c2goe3RleHQ6IHdvcmQsIGxpbmVFbmQ6IHRydWV9KTsKCQl9IGVsc2UgewoJCQlyZXN1bHRzLnB1c2goe3RleHQ6IHdvcmR9KTsKCQl9CgoJCWxhc3QgPSBiay5wb3NpdGlvbjsKCX0KCglyZXR1cm4gcmVzdWx0czsKfQoKZnVuY3Rpb24gY29weVN0eWxlKHNvdXJjZSwgZGVzdGluYXRpb24pIHsKCWRlc3RpbmF0aW9uID0gZGVzdGluYXRpb24gfHwge307Cglzb3VyY2UgPSBzb3VyY2UgfHwge307IC8vVE9ETzogZGVmYXVsdCBzdHlsZQoKCWZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsKCQlpZiAoa2V5ICE9ICd0ZXh0JyAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSkgewoJCQlkZXN0aW5hdGlvbltrZXldID0gc291cmNlW2tleV07CgkJfQoJfQoKCXJldHVybiBkZXN0aW5hdGlvbjsKfQoKZnVuY3Rpb24gbm9ybWFsaXplVGV4dEFycmF5KGFycmF5LCBzdHlsZUNvbnRleHRTdGFjaykgewoJZnVuY3Rpb24gZmxhdHRlbihhcnJheSkgewoJCXJldHVybiBhcnJheS5yZWR1Y2UoZnVuY3Rpb24gKHByZXYsIGN1cikgewoJCQl2YXIgY3VycmVudCA9IGlzQXJyYXkoY3VyLnRleHQpID8gZmxhdHRlbihjdXIudGV4dCkgOiBjdXI7CgkJCXZhciBtb3JlID0gW10uY29uY2F0KGN1cnJlbnQpLnNvbWUoQXJyYXkuaXNBcnJheSk7CgkJCXJldHVybiBwcmV2LmNvbmNhdChtb3JlID8gZmxhdHRlbihjdXJyZW50KSA6IGN1cnJlbnQpOwoJCX0sIFtdKTsKCX0KCgl2YXIgcmVzdWx0cyA9IFtdOwoKCWlmICghaXNBcnJheShhcnJheSkpIHsKCQlhcnJheSA9IFthcnJheV07Cgl9CgoJYXJyYXkgPSBmbGF0dGVuKGFycmF5KTsKCglmb3IgKHZhciBpID0gMCwgbCA9IGFycmF5Lmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCXZhciBpdGVtID0gYXJyYXlbaV07CgkJdmFyIHN0eWxlID0gbnVsbDsKCQl2YXIgd29yZHM7CgoJCXZhciBub1dyYXAgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0gfHwge30sIHN0eWxlQ29udGV4dFN0YWNrLCAnbm9XcmFwJywgZmFsc2UpOwoJCWlmIChpc09iamVjdChpdGVtKSkgewoJCQl3b3JkcyA9IHNwbGl0V29yZHMobm9ybWFsaXplU3RyaW5nKGl0ZW0udGV4dCksIG5vV3JhcCk7CgkJCXN0eWxlID0gY29weVN0eWxlKGl0ZW0pOwoJCX0gZWxzZSB7CgkJCXdvcmRzID0gc3BsaXRXb3Jkcyhub3JtYWxpemVTdHJpbmcoaXRlbSksIG5vV3JhcCk7CgkJfQoKCQlmb3IgKHZhciBpMiA9IDAsIGwyID0gd29yZHMubGVuZ3RoOyBpMiA8IGwyOyBpMisrKSB7CgkJCXZhciByZXN1bHQgPSB7CgkJCQl0ZXh0OiB3b3Jkc1tpMl0udGV4dAoJCQl9OwoKCQkJaWYgKHdvcmRzW2kyXS5saW5lRW5kKSB7CgkJCQlyZXN1bHQubGluZUVuZCA9IHRydWU7CgkJCX0KCgkJCWNvcHlTdHlsZShzdHlsZSwgcmVzdWx0KTsKCgkJCXJlc3VsdHMucHVzaChyZXN1bHQpOwoJCX0KCX0KCglyZXR1cm4gcmVzdWx0czsKfQoKZnVuY3Rpb24gbm9ybWFsaXplU3RyaW5nKHZhbHVlKSB7CglpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkgewoJCXJldHVybiAnJzsKCX0gZWxzZSBpZiAoaXNOdW1iZXIodmFsdWUpKSB7CgkJcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7Cgl9IGVsc2UgaWYgKGlzU3RyaW5nKHZhbHVlKSkgewoJCXJldHVybiB2YWx1ZTsKCX0gZWxzZSB7CgkJcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCk7Cgl9Cn0KCmZ1bmN0aW9uIGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssIHByb3BlcnR5LCBkZWZhdWx0VmFsdWUpIHsKCXZhciB2YWx1ZTsKCglpZiAoaXRlbVtwcm9wZXJ0eV0gIT09IHVuZGVmaW5lZCAmJiBpdGVtW3Byb3BlcnR5XSAhPT0gbnVsbCkgewoJCS8vIGl0ZW0gZGVmaW5lcyB0aGlzIHByb3BlcnR5CgkJcmV0dXJuIGl0ZW1bcHJvcGVydHldOwoJfQoKCWlmICghc3R5bGVDb250ZXh0U3RhY2spIHsKCQlyZXR1cm4gZGVmYXVsdFZhbHVlOwoJfQoKCXN0eWxlQ29udGV4dFN0YWNrLmF1dG8oaXRlbSwgZnVuY3Rpb24gKCkgewoJCXZhbHVlID0gc3R5bGVDb250ZXh0U3RhY2suZ2V0UHJvcGVydHkocHJvcGVydHkpOwoJfSk7CgoJaWYgKHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHsKCQlyZXR1cm4gdmFsdWU7Cgl9IGVsc2UgewoJCXJldHVybiBkZWZhdWx0VmFsdWU7Cgl9Cn0KCmZ1bmN0aW9uIG1lYXN1cmUoZm9udFByb3ZpZGVyLCB0ZXh0QXJyYXksIHN0eWxlQ29udGV4dFN0YWNrKSB7Cgl2YXIgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZVRleHRBcnJheSh0ZXh0QXJyYXksIHN0eWxlQ29udGV4dFN0YWNrKTsKCglpZiAobm9ybWFsaXplZC5sZW5ndGgpIHsKCQl2YXIgbGVhZGluZ0luZGVudCA9IGdldFN0eWxlUHJvcGVydHkobm9ybWFsaXplZFswXSwgc3R5bGVDb250ZXh0U3RhY2ssICdsZWFkaW5nSW5kZW50JywgMCk7CgoJCWlmIChsZWFkaW5nSW5kZW50KSB7CgkJCW5vcm1hbGl6ZWRbMF0ubGVhZGluZ0N1dCA9IC1sZWFkaW5nSW5kZW50OwoJCQlub3JtYWxpemVkWzBdLmxlYWRpbmdJbmRlbnQgPSBsZWFkaW5nSW5kZW50OwoJCX0KCX0KCglub3JtYWxpemVkLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKCQl2YXIgZm9udE5hbWUgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnZm9udCcsICdSb2JvdG8nKTsKCQl2YXIgZm9udFNpemUgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnZm9udFNpemUnLCAxMik7CgkJdmFyIGZvbnRGZWF0dXJlcyA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdmb250RmVhdHVyZXMnLCBudWxsKTsKCQl2YXIgYm9sZCA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdib2xkJywgZmFsc2UpOwoJCXZhciBpdGFsaWNzID0gZ2V0U3R5bGVQcm9wZXJ0eShpdGVtLCBzdHlsZUNvbnRleHRTdGFjaywgJ2l0YWxpY3MnLCBmYWxzZSk7CgkJdmFyIGNvbG9yID0gZ2V0U3R5bGVQcm9wZXJ0eShpdGVtLCBzdHlsZUNvbnRleHRTdGFjaywgJ2NvbG9yJywgJ2JsYWNrJyk7CgkJdmFyIGRlY29yYXRpb24gPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnZGVjb3JhdGlvbicsIG51bGwpOwoJCXZhciBkZWNvcmF0aW9uQ29sb3IgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnZGVjb3JhdGlvbkNvbG9yJywgbnVsbCk7CgkJdmFyIGRlY29yYXRpb25TdHlsZSA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdkZWNvcmF0aW9uU3R5bGUnLCBudWxsKTsKCQl2YXIgYmFja2dyb3VuZCA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdiYWNrZ3JvdW5kJywgbnVsbCk7CgkJdmFyIGxpbmVIZWlnaHQgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnbGluZUhlaWdodCcsIDEpOwoJCXZhciBjaGFyYWN0ZXJTcGFjaW5nID0gZ2V0U3R5bGVQcm9wZXJ0eShpdGVtLCBzdHlsZUNvbnRleHRTdGFjaywgJ2NoYXJhY3RlclNwYWNpbmcnLCAwKTsKCQl2YXIgbGluayA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdsaW5rJywgbnVsbCk7CgkJdmFyIGxpbmtUb1BhZ2UgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnbGlua1RvUGFnZScsIG51bGwpOwoJCXZhciBub1dyYXAgPSBnZXRTdHlsZVByb3BlcnR5KGl0ZW0sIHN0eWxlQ29udGV4dFN0YWNrLCAnbm9XcmFwJywgbnVsbCk7CgkJdmFyIHByZXNlcnZlTGVhZGluZ1NwYWNlcyA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdwcmVzZXJ2ZUxlYWRpbmdTcGFjZXMnLCBmYWxzZSk7CgoJCXZhciBmb250ID0gZm9udFByb3ZpZGVyLnByb3ZpZGVGb250KGZvbnROYW1lLCBib2xkLCBpdGFsaWNzKTsKCgkJaXRlbS53aWR0aCA9IHdpZHRoT2ZTdHJpbmcoaXRlbS50ZXh0LCBmb250LCBmb250U2l6ZSwgY2hhcmFjdGVyU3BhY2luZywgZm9udEZlYXR1cmVzKTsKCQlpdGVtLmhlaWdodCA9IGZvbnQubGluZUhlaWdodChmb250U2l6ZSkgKiBsaW5lSGVpZ2h0OwoKCQl2YXIgbGVhZGluZ1NwYWNlcyA9IGl0ZW0udGV4dC5tYXRjaChMRUFESU5HKTsKCgkJaWYgKCFpdGVtLmxlYWRpbmdDdXQpIHsKCQkJaXRlbS5sZWFkaW5nQ3V0ID0gMDsKCQl9CgoJCWlmIChsZWFkaW5nU3BhY2VzICYmICFwcmVzZXJ2ZUxlYWRpbmdTcGFjZXMpIHsKCQkJaXRlbS5sZWFkaW5nQ3V0ICs9IHdpZHRoT2ZTdHJpbmcobGVhZGluZ1NwYWNlc1swXSwgZm9udCwgZm9udFNpemUsIGNoYXJhY3RlclNwYWNpbmcsIGZvbnRGZWF0dXJlcyk7CgkJfQoKCQl2YXIgdHJhaWxpbmdTcGFjZXMgPSBpdGVtLnRleHQubWF0Y2goVFJBSUxJTkcpOwoJCWlmICh0cmFpbGluZ1NwYWNlcykgewoJCQlpdGVtLnRyYWlsaW5nQ3V0ID0gd2lkdGhPZlN0cmluZyh0cmFpbGluZ1NwYWNlc1swXSwgZm9udCwgZm9udFNpemUsIGNoYXJhY3RlclNwYWNpbmcsIGZvbnRGZWF0dXJlcyk7CgkJfSBlbHNlIHsKCQkJaXRlbS50cmFpbGluZ0N1dCA9IDA7CgkJfQoKCQlpdGVtLmFsaWdubWVudCA9IGdldFN0eWxlUHJvcGVydHkoaXRlbSwgc3R5bGVDb250ZXh0U3RhY2ssICdhbGlnbm1lbnQnLCAnbGVmdCcpOwoJCWl0ZW0uZm9udCA9IGZvbnQ7CgkJaXRlbS5mb250U2l6ZSA9IGZvbnRTaXplOwoJCWl0ZW0uZm9udEZlYXR1cmVzID0gZm9udEZlYXR1cmVzOwoJCWl0ZW0uY2hhcmFjdGVyU3BhY2luZyA9IGNoYXJhY3RlclNwYWNpbmc7CgkJaXRlbS5jb2xvciA9IGNvbG9yOwoJCWl0ZW0uZGVjb3JhdGlvbiA9IGRlY29yYXRpb247CgkJaXRlbS5kZWNvcmF0aW9uQ29sb3IgPSBkZWNvcmF0aW9uQ29sb3I7CgkJaXRlbS5kZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CgkJaXRlbS5iYWNrZ3JvdW5kID0gYmFja2dyb3VuZDsKCQlpdGVtLmxpbmsgPSBsaW5rOwoJCWl0ZW0ubGlua1RvUGFnZSA9IGxpbmtUb1BhZ2U7CgkJaXRlbS5ub1dyYXAgPSBub1dyYXA7Cgl9KTsKCglyZXR1cm4gbm9ybWFsaXplZDsKfQoKZnVuY3Rpb24gd2lkdGhPZlN0cmluZyh0ZXh0LCBmb250LCBmb250U2l6ZSwgY2hhcmFjdGVyU3BhY2luZywgZm9udEZlYXR1cmVzKSB7CglyZXR1cm4gZm9udC53aWR0aE9mU3RyaW5nKHRleHQsIGZvbnRTaXplLCBmb250RmVhdHVyZXMpICsgKChjaGFyYWN0ZXJTcGFjaW5nIHx8IDApICogKHRleHQubGVuZ3RoIC0gMSkpOwp9Cgptb2R1bGUuZXhwb3J0cyA9IFRleHRUb29sczsKCgovKioqLyB9KSwKLyogNDMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQp2YXIgVW5pY29kZVRyaWUsIGluZmxhdGU7CgppbmZsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3OSk7CgpVbmljb2RlVHJpZSA9IChmdW5jdGlvbigpIHsKICB2YXIgREFUQV9CTE9DS19MRU5HVEgsIERBVEFfR1JBTlVMQVJJVFksIERBVEFfTUFTSywgSU5ERVhfMV9PRkZTRVQsIElOREVYXzJfQkxPQ0tfTEVOR1RILCBJTkRFWF8yX0JNUF9MRU5HVEgsIElOREVYXzJfTUFTSywgSU5ERVhfU0hJRlQsIExTQ1BfSU5ERVhfMl9MRU5HVEgsIExTQ1BfSU5ERVhfMl9PRkZTRVQsIE9NSVRURURfQk1QX0lOREVYXzFfTEVOR1RILCBTSElGVF8xLCBTSElGVF8xXzIsIFNISUZUXzIsIFVURjhfMkJfSU5ERVhfMl9MRU5HVEgsIFVURjhfMkJfSU5ERVhfMl9PRkZTRVQ7CgogIFNISUZUXzEgPSA2ICsgNTsKCiAgU0hJRlRfMiA9IDU7CgogIFNISUZUXzFfMiA9IFNISUZUXzEgLSBTSElGVF8yOwoKICBPTUlUVEVEX0JNUF9JTkRFWF8xX0xFTkdUSCA9IDB4MTAwMDAgPj4gU0hJRlRfMTsKCiAgSU5ERVhfMl9CTE9DS19MRU5HVEggPSAxIDw8IFNISUZUXzFfMjsKCiAgSU5ERVhfMl9NQVNLID0gSU5ERVhfMl9CTE9DS19MRU5HVEggLSAxOwoKICBJTkRFWF9TSElGVCA9IDI7CgogIERBVEFfQkxPQ0tfTEVOR1RIID0gMSA8PCBTSElGVF8yOwoKICBEQVRBX01BU0sgPSBEQVRBX0JMT0NLX0xFTkdUSCAtIDE7CgogIExTQ1BfSU5ERVhfMl9PRkZTRVQgPSAweDEwMDAwID4+IFNISUZUXzI7CgogIExTQ1BfSU5ERVhfMl9MRU5HVEggPSAweDQwMCA+PiBTSElGVF8yOwoKICBJTkRFWF8yX0JNUF9MRU5HVEggPSBMU0NQX0lOREVYXzJfT0ZGU0VUICsgTFNDUF9JTkRFWF8yX0xFTkdUSDsKCiAgVVRGOF8yQl9JTkRFWF8yX09GRlNFVCA9IElOREVYXzJfQk1QX0xFTkdUSDsKCiAgVVRGOF8yQl9JTkRFWF8yX0xFTkdUSCA9IDB4ODAwID4+IDY7CgogIElOREVYXzFfT0ZGU0VUID0gVVRGOF8yQl9JTkRFWF8yX09GRlNFVCArIFVURjhfMkJfSU5ERVhfMl9MRU5HVEg7CgogIERBVEFfR1JBTlVMQVJJVFkgPSAxIDw8IElOREVYX1NISUZUOwoKICBmdW5jdGlvbiBVbmljb2RlVHJpZShkYXRhKSB7CiAgICB2YXIgaXNCdWZmZXIsIHVuY29tcHJlc3NlZExlbmd0aCwgdmlldzsKICAgIGlzQnVmZmVyID0gdHlwZW9mIGRhdGEucmVhZFVJbnQzMkJFID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkYXRhLnNsaWNlID09PSAnZnVuY3Rpb24nOwogICAgaWYgKGlzQnVmZmVyIHx8IGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7CiAgICAgIGlmIChpc0J1ZmZlcikgewogICAgICAgIHRoaXMuaGlnaFN0YXJ0ID0gZGF0YS5yZWFkVUludDMyQkUoMCk7CiAgICAgICAgdGhpcy5lcnJvclZhbHVlID0gZGF0YS5yZWFkVUludDMyQkUoNCk7CiAgICAgICAgdW5jb21wcmVzc2VkTGVuZ3RoID0gZGF0YS5yZWFkVUludDMyQkUoOCk7CiAgICAgICAgZGF0YSA9IGRhdGEuc2xpY2UoMTIpOwogICAgICB9IGVsc2UgewogICAgICAgIHZpZXcgPSBuZXcgRGF0YVZpZXcoZGF0YS5idWZmZXIpOwogICAgICAgIHRoaXMuaGlnaFN0YXJ0ID0gdmlldy5nZXRVaW50MzIoMCk7CiAgICAgICAgdGhpcy5lcnJvclZhbHVlID0gdmlldy5nZXRVaW50MzIoNCk7CiAgICAgICAgdW5jb21wcmVzc2VkTGVuZ3RoID0gdmlldy5nZXRVaW50MzIoOCk7CiAgICAgICAgZGF0YSA9IGRhdGEuc3ViYXJyYXkoMTIpOwogICAgICB9CiAgICAgIGRhdGEgPSBpbmZsYXRlKGRhdGEsIG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZExlbmd0aCkpOwogICAgICBkYXRhID0gaW5mbGF0ZShkYXRhLCBuZXcgVWludDhBcnJheSh1bmNvbXByZXNzZWRMZW5ndGgpKTsKICAgICAgdGhpcy5kYXRhID0gbmV3IFVpbnQzMkFycmF5KGRhdGEuYnVmZmVyKTsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuZGF0YSA9IGRhdGEuZGF0YSwgdGhpcy5oaWdoU3RhcnQgPSBkYXRhLmhpZ2hTdGFydCwgdGhpcy5lcnJvclZhbHVlID0gZGF0YS5lcnJvclZhbHVlOwogICAgfQogIH0KCiAgVW5pY29kZVRyaWUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGNvZGVQb2ludCkgewogICAgdmFyIGluZGV4OwogICAgaWYgKGNvZGVQb2ludCA8IDAgfHwgY29kZVBvaW50ID4gMHgxMGZmZmYpIHsKICAgICAgcmV0dXJuIHRoaXMuZXJyb3JWYWx1ZTsKICAgIH0KICAgIGlmIChjb2RlUG9pbnQgPCAweGQ4MDAgfHwgKGNvZGVQb2ludCA+IDB4ZGJmZiAmJiBjb2RlUG9pbnQgPD0gMHhmZmZmKSkgewogICAgICBpbmRleCA9ICh0aGlzLmRhdGFbY29kZVBvaW50ID4+IFNISUZUXzJdIDw8IElOREVYX1NISUZUKSArIChjb2RlUG9pbnQgJiBEQVRBX01BU0spOwogICAgICByZXR1cm4gdGhpcy5kYXRhW2luZGV4XTsKICAgIH0KICAgIGlmIChjb2RlUG9pbnQgPD0gMHhmZmZmKSB7CiAgICAgIGluZGV4ID0gKHRoaXMuZGF0YVtMU0NQX0lOREVYXzJfT0ZGU0VUICsgKChjb2RlUG9pbnQgLSAweGQ4MDApID4+IFNISUZUXzIpXSA8PCBJTkRFWF9TSElGVCkgKyAoY29kZVBvaW50ICYgREFUQV9NQVNLKTsKICAgICAgcmV0dXJuIHRoaXMuZGF0YVtpbmRleF07CiAgICB9CiAgICBpZiAoY29kZVBvaW50IDwgdGhpcy5oaWdoU3RhcnQpIHsKICAgICAgaW5kZXggPSB0aGlzLmRhdGFbKElOREVYXzFfT0ZGU0VUIC0gT01JVFRFRF9CTVBfSU5ERVhfMV9MRU5HVEgpICsgKGNvZGVQb2ludCA+PiBTSElGVF8xKV07CiAgICAgIGluZGV4ID0gdGhpcy5kYXRhW2luZGV4ICsgKChjb2RlUG9pbnQgPj4gU0hJRlRfMikgJiBJTkRFWF8yX01BU0spXTsKICAgICAgaW5kZXggPSAoaW5kZXggPDwgSU5ERVhfU0hJRlQpICsgKGNvZGVQb2ludCAmIERBVEFfTUFTSyk7CiAgICAgIHJldHVybiB0aGlzLmRhdGFbaW5kZXhdOwogICAgfQogICAgcmV0dXJuIHRoaXMuZGF0YVt0aGlzLmRhdGEubGVuZ3RoIC0gREFUQV9HUkFOVUxBUklUWV07CiAgfTsKCiAgcmV0dXJuIFVuaWNvZGVUcmllOwoKfSkoKTsKCm1vZHVsZS5leHBvcnRzID0gVW5pY29kZVRyaWU7CgoKLyoqKi8gfSksCi8qIDQ0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgp2YXIgaXNTdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzU3RyaW5nOwoKZnVuY3Rpb24gYnVpbGRDb2x1bW5XaWR0aHMoY29sdW1ucywgYXZhaWxhYmxlV2lkdGgpIHsKCXZhciBhdXRvQ29sdW1ucyA9IFtdLAoJCWF1dG9NaW4gPSAwLCBhdXRvTWF4ID0gMCwKCQlzdGFyQ29sdW1ucyA9IFtdLAoJCXN0YXJNYXhNaW4gPSAwLAoJCXN0YXJNYXhNYXggPSAwLAoJCWZpeGVkQ29sdW1ucyA9IFtdLAoJCWluaXRpYWxfYXZhaWxhYmxlV2lkdGggPSBhdmFpbGFibGVXaWR0aDsKCgljb2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbHVtbikgewoJCWlmIChpc0F1dG9Db2x1bW4oY29sdW1uKSkgewoJCQlhdXRvQ29sdW1ucy5wdXNoKGNvbHVtbik7CgkJCWF1dG9NaW4gKz0gY29sdW1uLl9taW5XaWR0aDsKCQkJYXV0b01heCArPSBjb2x1bW4uX21heFdpZHRoOwoJCX0gZWxzZSBpZiAoaXNTdGFyQ29sdW1uKGNvbHVtbikpIHsKCQkJc3RhckNvbHVtbnMucHVzaChjb2x1bW4pOwoJCQlzdGFyTWF4TWluID0gTWF0aC5tYXgoc3Rhck1heE1pbiwgY29sdW1uLl9taW5XaWR0aCk7CgkJCXN0YXJNYXhNYXggPSBNYXRoLm1heChzdGFyTWF4TWF4LCBjb2x1bW4uX21heFdpZHRoKTsKCQl9IGVsc2UgewoJCQlmaXhlZENvbHVtbnMucHVzaChjb2x1bW4pOwoJCX0KCX0pOwoKCWZpeGVkQ29sdW1ucy5mb3JFYWNoKGZ1bmN0aW9uIChjb2wpIHsKCQkvLyB3aWR0aCBzcGVjaWZpZWQgYXMgJQoJCWlmIChpc1N0cmluZyhjb2wud2lkdGgpICYmIC9cZCslLy50ZXN0KGNvbC53aWR0aCkpIHsKCQkJY29sLndpZHRoID0gcGFyc2VGbG9hdChjb2wud2lkdGgpICogaW5pdGlhbF9hdmFpbGFibGVXaWR0aCAvIDEwMDsKCQl9CgkJaWYgKGNvbC53aWR0aCA8IChjb2wuX21pbldpZHRoKSAmJiBjb2wuZWxhc3RpY1dpZHRoKSB7CgkJCWNvbC5fY2FsY1dpZHRoID0gY29sLl9taW5XaWR0aDsKCQl9IGVsc2UgewoJCQljb2wuX2NhbGNXaWR0aCA9IGNvbC53aWR0aDsKCQl9CgoJCWF2YWlsYWJsZVdpZHRoIC09IGNvbC5fY2FsY1dpZHRoOwoJfSk7CgoJLy8gaHR0cDovL3d3dy5mcmVlc29mdC5vcmcvQ0lFL1JGQy8xOTQyLzE4Lmh0bQoJLy8gaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMi90YWJsZXMuaHRtbCN3aWR0aC1sYXlvdXQKCS8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtdGFibGVzLWFsZ29yaXRobXMvT3ZlcnZpZXcuc3JjLmh0bQoJdmFyIG1pblcgPSBhdXRvTWluICsgc3Rhck1heE1pbiAqIHN0YXJDb2x1bW5zLmxlbmd0aDsKCXZhciBtYXhXID0gYXV0b01heCArIHN0YXJNYXhNYXggKiBzdGFyQ29sdW1ucy5sZW5ndGg7CglpZiAobWluVyA+PSBhdmFpbGFibGVXaWR0aCkgewoJCS8vIGNhc2UgMSAtIHRoZXJlJ3Mgbm8gd2F5IHRvIGZpdCBhbGwgY29sdW1ucyB3aXRoaW4gYXZhaWxhYmxlIHdpZHRoCgkJLy8gdGhhdCdzIGFjdHVhbGx5IHByZXR0eSBiYWQgc2l0dWF0aW9uIHdpdGggUERGIGFzIHdlIGhhdmUgbm8gaG9yaXpvbnRhbCBzY3JvbGwKCQkvLyBubyBlYXN5IHdvcmthcm91bmQgKHVubGVzcyB3ZSBkZWNpZGUsIGluIHRoZSBmdXR1cmUsIHRvIHNwbGl0IHNpbmdsZSB3b3JkcykKCQkvLyBjdXJyZW50bHkgd2Ugc2ltcGx5IHVzZSBtaW5XaWR0aHMgZm9yIGFsbCBjb2x1bW5zCgkJYXV0b0NvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sKSB7CgkJCWNvbC5fY2FsY1dpZHRoID0gY29sLl9taW5XaWR0aDsKCQl9KTsKCgkJc3RhckNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sKSB7CgkJCWNvbC5fY2FsY1dpZHRoID0gc3Rhck1heE1pbjsgLy8gc3Rhck1heE1pbiBhbHJlYWR5IGNvbnRhaW5zIHBhZGRpbmcKCQl9KTsKCX0gZWxzZSB7CgkJaWYgKG1heFcgPCBhdmFpbGFibGVXaWR0aCkgewoJCQkvLyBjYXNlIDIgLSB3ZSBjYW4gZml0IHJlc3Qgb2YgdGhlIHRhYmxlIHdpdGhpbiBhdmFpbGFibGUgc3BhY2UKCQkJYXV0b0NvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sKSB7CgkJCQljb2wuX2NhbGNXaWR0aCA9IGNvbC5fbWF4V2lkdGg7CgkJCQlhdmFpbGFibGVXaWR0aCAtPSBjb2wuX2NhbGNXaWR0aDsKCQkJfSk7CgkJfSBlbHNlIHsKCQkJLy8gbWF4VyBpcyB0b28gbGFyZ2UsIGJ1dCBtaW5XIGZpdHMgd2l0aGluIGF2YWlsYWJsZSB3aWR0aAoJCQl2YXIgVyA9IGF2YWlsYWJsZVdpZHRoIC0gbWluVzsKCQkJdmFyIEQgPSBtYXhXIC0gbWluVzsKCgkJCWF1dG9Db2x1bW5zLmZvckVhY2goZnVuY3Rpb24gKGNvbCkgewoJCQkJdmFyIGQgPSBjb2wuX21heFdpZHRoIC0gY29sLl9taW5XaWR0aDsKCQkJCWNvbC5fY2FsY1dpZHRoID0gY29sLl9taW5XaWR0aCArIGQgKiBXIC8gRDsKCQkJCWF2YWlsYWJsZVdpZHRoIC09IGNvbC5fY2FsY1dpZHRoOwoJCQl9KTsKCQl9CgoJCWlmIChzdGFyQ29sdW1ucy5sZW5ndGggPiAwKSB7CgkJCXZhciBzdGFyU2l6ZSA9IGF2YWlsYWJsZVdpZHRoIC8gc3RhckNvbHVtbnMubGVuZ3RoOwoKCQkJc3RhckNvbHVtbnMuZm9yRWFjaChmdW5jdGlvbiAoY29sKSB7CgkJCQljb2wuX2NhbGNXaWR0aCA9IHN0YXJTaXplOwoJCQl9KTsKCQl9Cgl9Cn0KCmZ1bmN0aW9uIGlzQXV0b0NvbHVtbihjb2x1bW4pIHsKCXJldHVybiBjb2x1bW4ud2lkdGggPT09ICdhdXRvJzsKfQoKZnVuY3Rpb24gaXNTdGFyQ29sdW1uKGNvbHVtbikgewoJcmV0dXJuIGNvbHVtbi53aWR0aCA9PT0gbnVsbCB8fCBjb2x1bW4ud2lkdGggPT09IHVuZGVmaW5lZCB8fCBjb2x1bW4ud2lkdGggPT09ICcqJyB8fCBjb2x1bW4ud2lkdGggPT09ICdzdGFyJzsKfQoKLy9UT0RPOiByZWZhY3RvciBhbmQgcmV1c2UgaW4gbWVhc3VyZVRhYmxlCmZ1bmN0aW9uIG1lYXN1cmVNaW5NYXgoY29sdW1ucykgewoJdmFyIHJlc3VsdCA9IHttaW46IDAsIG1heDogMH07CgoJdmFyIG1heFN0YXIgPSB7bWluOiAwLCBtYXg6IDB9OwoJdmFyIHN0YXJDb3VudCA9IDA7CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBjb2x1bW5zLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCXZhciBjID0gY29sdW1uc1tpXTsKCgkJaWYgKGlzU3RhckNvbHVtbihjKSkgewoJCQltYXhTdGFyLm1pbiA9IE1hdGgubWF4KG1heFN0YXIubWluLCBjLl9taW5XaWR0aCk7CgkJCW1heFN0YXIubWF4ID0gTWF0aC5tYXgobWF4U3Rhci5tYXgsIGMuX21heFdpZHRoKTsKCQkJc3RhckNvdW50Kys7CgkJfSBlbHNlIGlmIChpc0F1dG9Db2x1bW4oYykpIHsKCQkJcmVzdWx0Lm1pbiArPSBjLl9taW5XaWR0aDsKCQkJcmVzdWx0Lm1heCArPSBjLl9tYXhXaWR0aDsKCQl9IGVsc2UgewoJCQlyZXN1bHQubWluICs9ICgoYy53aWR0aCAhPT0gdW5kZWZpbmVkICYmIGMud2lkdGgpIHx8IGMuX21pbldpZHRoKTsKCQkJcmVzdWx0Lm1heCArPSAoKGMud2lkdGggIT09IHVuZGVmaW5lZCAmJiBjLndpZHRoKSB8fCBjLl9tYXhXaWR0aCk7CgkJfQoJfQoKCWlmIChzdGFyQ291bnQpIHsKCQlyZXN1bHQubWluICs9IHN0YXJDb3VudCAqIG1heFN0YXIubWluOwoJCXJlc3VsdC5tYXggKz0gc3RhckNvdW50ICogbWF4U3Rhci5tYXg7Cgl9CgoJcmV0dXJuIHJlc3VsdDsKfQoKLyoqCiAqIENhbGN1bGF0ZXMgY29sdW1uIHdpZHRocwogKiBAcHJpdmF0ZQogKi8KbW9kdWxlLmV4cG9ydHMgPSB7CglidWlsZENvbHVtbldpZHRoczogYnVpbGRDb2x1bW5XaWR0aHMsCgltZWFzdXJlTWluTWF4OiBtZWFzdXJlTWluTWF4LAoJaXNBdXRvQ29sdW1uOiBpc0F1dG9Db2x1bW4sCglpc1N0YXJDb2x1bW46IGlzU3RhckNvbHVtbgp9OwoKCi8qKiovIH0pLAovKiA0NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgzKTsKZXhwb3J0cy5TdHJlYW0gPSBleHBvcnRzOwpleHBvcnRzLlJlYWRhYmxlID0gZXhwb3J0czsKZXhwb3J0cy5Xcml0YWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpOwpleHBvcnRzLkR1cGxleCA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpOwpleHBvcnRzLlRyYW5zZm9ybSA9IF9fd2VicGFja19yZXF1aXJlX18oODYpOwpleHBvcnRzLlBhc3NUaHJvdWdoID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDUpOwoKCi8qKiovIH0pLAovKiA0NiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihwcm9jZXNzLCBzZXRJbW1lZGlhdGUsIGdsb2JhbCkgey8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLgovLwovLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQovLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi8vICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAovLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0Ci8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZQovLyBmb2xsb3dpbmcgY29uZGl0aW9uczoKLy8KLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgovLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KCi8vIEEgYml0IHNpbXBsZXIgdGhhbiByZWFkYWJsZSBzdHJlYW1zLgovLyBJbXBsZW1lbnQgYW4gYXN5bmMgLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIGNiKSwgYW5kIGl0J2xsIGhhbmRsZSBhbGwKLy8gdGhlIGRyYWluIGV2ZW50IGVtaXNzaW9uIGFuZCBidWZmZXJpbmcuCgoKCi8qPHJlcGxhY2VtZW50PiovCgp2YXIgcHJvY2Vzc05leHRUaWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMikubmV4dFRpY2s7Ci8qPC9yZXBsYWNlbWVudD4qLwoKbW9kdWxlLmV4cG9ydHMgPSBXcml0YWJsZTsKCi8qIDxyZXBsYWNlbWVudD4gKi8KZnVuY3Rpb24gV3JpdGVSZXEoY2h1bmssIGVuY29kaW5nLCBjYikgewogIHRoaXMuY2h1bmsgPSBjaHVuazsKICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7CiAgdGhpcy5jYWxsYmFjayA9IGNiOwogIHRoaXMubmV4dCA9IG51bGw7Cn0KCi8vIEl0IHNlZW1zIGEgbGlua2VkIGxpc3QgYnV0IGl0IGlzIG5vdAovLyB0aGVyZSB3aWxsIGJlIG9ubHkgMiBvZiB0aGVzZSBmb3IgZWFjaCBzdHJlYW0KZnVuY3Rpb24gQ29ya2VkUmVxdWVzdChzdGF0ZSkgewogIHZhciBfdGhpcyA9IHRoaXM7CgogIHRoaXMubmV4dCA9IG51bGw7CiAgdGhpcy5lbnRyeSA9IG51bGw7CiAgdGhpcy5maW5pc2ggPSBmdW5jdGlvbiAoKSB7CiAgICBvbkNvcmtlZEZpbmlzaChfdGhpcywgc3RhdGUpOwogIH07Cn0KLyogPC9yZXBsYWNlbWVudD4gKi8KCi8qPHJlcGxhY2VtZW50PiovCnZhciBhc3luY1dyaXRlID0gIXByb2Nlc3MuYnJvd3NlciAmJiBbJ3YwLjEwJywgJ3YwLjkuJ10uaW5kZXhPZihwcm9jZXNzLnZlcnNpb24uc2xpY2UoMCwgNSkpID4gLTEgPyBzZXRJbW1lZGlhdGUgOiBwcm9jZXNzTmV4dFRpY2s7Ci8qPC9yZXBsYWNlbWVudD4qLwoKLyo8cmVwbGFjZW1lbnQ+Ki8KdmFyIER1cGxleDsKLyo8L3JlcGxhY2VtZW50PiovCgpXcml0YWJsZS5Xcml0YWJsZVN0YXRlID0gV3JpdGFibGVTdGF0ZTsKCi8qPHJlcGxhY2VtZW50PiovCnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7CnV0aWwuaW5oZXJpdHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTsKLyo8L3JlcGxhY2VtZW50PiovCgovKjxyZXBsYWNlbWVudD4qLwp2YXIgaW50ZXJuYWxVdGlsID0gewogIGRlcHJlY2F0ZTogX193ZWJwYWNrX3JlcXVpcmVfXygxNDQpCn07Ci8qPC9yZXBsYWNlbWVudD4qLwoKLyo8cmVwbGFjZW1lbnQ+Ki8KdmFyIFN0cmVhbSA9IF9fd2VicGFja19yZXF1aXJlX18oODQpOwovKjwvcmVwbGFjZW1lbnQ+Ki8KCi8qPHJlcGxhY2VtZW50PiovCgp2YXIgQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMykuQnVmZmVyOwp2YXIgT3VyVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5IHx8IGZ1bmN0aW9uICgpIHt9OwpmdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKSB7CiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTsKfQpmdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikgewogIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5Owp9CgovKjwvcmVwbGFjZW1lbnQ+Ki8KCnZhciBkZXN0cm95SW1wbCA9IF9fd2VicGFja19yZXF1aXJlX18oODUpOwoKdXRpbC5pbmhlcml0cyhXcml0YWJsZSwgU3RyZWFtKTsKCmZ1bmN0aW9uIG5vcCgpIHt9CgpmdW5jdGlvbiBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkgewogIER1cGxleCA9IER1cGxleCB8fCBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTsKCiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CgogIC8vIER1cGxleCBzdHJlYW1zIGFyZSBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZSwgYnV0IHNoYXJlCiAgLy8gdGhlIHNhbWUgb3B0aW9ucyBvYmplY3QuCiAgLy8gSG93ZXZlciwgc29tZSBjYXNlcyByZXF1aXJlIHNldHRpbmcgb3B0aW9ucyB0byBkaWZmZXJlbnQKICAvLyB2YWx1ZXMgZm9yIHRoZSByZWFkYWJsZSBhbmQgdGhlIHdyaXRhYmxlIHNpZGVzIG9mIHRoZSBkdXBsZXggc3RyZWFtLgogIC8vIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkgYXMgcmVhZGFibGVYWFggYW5kIHdyaXRhYmxlWFhYLgogIHZhciBpc0R1cGxleCA9IHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleDsKCiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoaXMgc3RyZWFtCiAgLy8gY29udGFpbnMgYnVmZmVycyBvciBvYmplY3RzLgogIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlOwoKICBpZiAoaXNEdXBsZXgpIHRoaXMub2JqZWN0TW9kZSA9IHRoaXMub2JqZWN0TW9kZSB8fCAhIW9wdGlvbnMud3JpdGFibGVPYmplY3RNb2RlOwoKICAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggd3JpdGUoKSBzdGFydHMgcmV0dXJuaW5nIGZhbHNlCiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyB0aGF0IHdlIGFsd2F5cyByZXR1cm4gZmFsc2UgaWYKICAvLyB0aGUgZW50aXJlIGJ1ZmZlciBpcyBub3QgZmx1c2hlZCBpbW1lZGlhdGVseSBvbiB3cml0ZSgpCiAgdmFyIGh3bSA9IG9wdGlvbnMuaGlnaFdhdGVyTWFyazsKICB2YXIgd3JpdGFibGVId20gPSBvcHRpb25zLndyaXRhYmxlSGlnaFdhdGVyTWFyazsKICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0OwoKICBpZiAoaHdtIHx8IGh3bSA9PT0gMCkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtO2Vsc2UgaWYgKGlzRHVwbGV4ICYmICh3cml0YWJsZUh3bSB8fCB3cml0YWJsZUh3bSA9PT0gMCkpIHRoaXMuaGlnaFdhdGVyTWFyayA9IHdyaXRhYmxlSHdtO2Vsc2UgdGhpcy5oaWdoV2F0ZXJNYXJrID0gZGVmYXVsdEh3bTsKCiAgLy8gY2FzdCB0byBpbnRzLgogIHRoaXMuaGlnaFdhdGVyTWFyayA9IE1hdGguZmxvb3IodGhpcy5oaWdoV2F0ZXJNYXJrKTsKCiAgLy8gaWYgX2ZpbmFsIGhhcyBiZWVuIGNhbGxlZAogIHRoaXMuZmluYWxDYWxsZWQgPSBmYWxzZTsKCiAgLy8gZHJhaW4gZXZlbnQgZmxhZy4KICB0aGlzLm5lZWREcmFpbiA9IGZhbHNlOwogIC8vIGF0IHRoZSBzdGFydCBvZiBjYWxsaW5nIGVuZCgpCiAgdGhpcy5lbmRpbmcgPSBmYWxzZTsKICAvLyB3aGVuIGVuZCgpIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHJldHVybmVkCiAgdGhpcy5lbmRlZCA9IGZhbHNlOwogIC8vIHdoZW4gJ2ZpbmlzaCcgaXMgZW1pdHRlZAogIHRoaXMuZmluaXNoZWQgPSBmYWxzZTsKCiAgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkCiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTsKCiAgLy8gc2hvdWxkIHdlIGRlY29kZSBzdHJpbmdzIGludG8gYnVmZmVycyBiZWZvcmUgcGFzc2luZyB0byBfd3JpdGU/CiAgLy8gdGhpcyBpcyBoZXJlIHNvIHRoYXQgc29tZSBub2RlLWNvcmUgc3RyZWFtcyBjYW4gb3B0aW1pemUgc3RyaW5nCiAgLy8gaGFuZGxpbmcgYXQgYSBsb3dlciBsZXZlbC4KICB2YXIgbm9EZWNvZGUgPSBvcHRpb25zLmRlY29kZVN0cmluZ3MgPT09IGZhbHNlOwogIHRoaXMuZGVjb2RlU3RyaW5ncyA9ICFub0RlY29kZTsKCiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZwogIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS4KICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guCiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7CgogIC8vIG5vdCBhbiBhY3R1YWwgYnVmZmVyIHdlIGtlZXAgdHJhY2sgb2YsIGJ1dCBhIG1lYXN1cmVtZW50CiAgLy8gb2YgaG93IG11Y2ggd2UncmUgd2FpdGluZyB0byBnZXQgcHVzaGVkIHRvIHNvbWUgdW5kZXJseWluZwogIC8vIHNvY2tldCBvciBmaWxlLgogIHRoaXMubGVuZ3RoID0gMDsKCiAgLy8gYSBmbGFnIHRvIHNlZSB3aGVuIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSB3cml0ZS4KICB0aGlzLndyaXRpbmcgPSBmYWxzZTsKCiAgLy8gd2hlbiB0cnVlIGFsbCB3cml0ZXMgd2lsbCBiZSBidWZmZXJlZCB1bnRpbCAudW5jb3JrKCkgY2FsbAogIHRoaXMuY29ya2VkID0gMDsKCiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgb253cml0ZSBjYiBpcyBjYWxsZWQgaW1tZWRpYXRlbHksCiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnkKICAvLyBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCAibGF0ZXIiIHNob3VsZCBnZW5lcmFsbHkgYWxzbwogIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSBjYWxsLgogIHRoaXMuc3luYyA9IHRydWU7CgogIC8vIGEgZmxhZyB0byBrbm93IGlmIHdlJ3JlIHByb2Nlc3NpbmcgcHJldmlvdXNseSBidWZmZXJlZCBpdGVtcywgd2hpY2gKICAvLyBtYXkgY2FsbCB0aGUgX3dyaXRlKCkgY2FsbGJhY2sgaW4gdGhlIHNhbWUgdGljaywgc28gdGhhdCB3ZSBkb24ndAogIC8vIGVuZCB1cCBpbiBhbiBvdmVybGFwcGVkIG9ud3JpdGUgc2l0dWF0aW9uLgogIHRoaXMuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlOwoKICAvLyB0aGUgY2FsbGJhY2sgdGhhdCdzIHBhc3NlZCB0byBfd3JpdGUoY2h1bmssY2IpCiAgdGhpcy5vbndyaXRlID0gZnVuY3Rpb24gKGVyKSB7CiAgICBvbndyaXRlKHN0cmVhbSwgZXIpOwogIH07CgogIC8vIHRoZSBjYWxsYmFjayB0aGF0IHRoZSB1c2VyIHN1cHBsaWVzIHRvIHdyaXRlKGNodW5rLGVuY29kaW5nLGNiKQogIHRoaXMud3JpdGVjYiA9IG51bGw7CgogIC8vIHRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC4KICB0aGlzLndyaXRlbGVuID0gMDsKCiAgdGhpcy5idWZmZXJlZFJlcXVlc3QgPSBudWxsOwogIHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7CgogIC8vIG51bWJlciBvZiBwZW5kaW5nIHVzZXItc3VwcGxpZWQgd3JpdGUgY2FsbGJhY2tzCiAgLy8gdGhpcyBtdXN0IGJlIDAgYmVmb3JlICdmaW5pc2gnIGNhbiBiZSBlbWl0dGVkCiAgdGhpcy5wZW5kaW5nY2IgPSAwOwoKICAvLyBlbWl0IHByZWZpbmlzaCBpZiB0aGUgb25seSB0aGluZyB3ZSdyZSB3YWl0aW5nIGZvciBpcyBfd3JpdGUgY2JzCiAgLy8gVGhpcyBpcyByZWxldmFudCBmb3Igc3luY2hyb25vdXMgVHJhbnNmb3JtIHN0cmVhbXMKICB0aGlzLnByZWZpbmlzaGVkID0gZmFsc2U7CgogIC8vIFRydWUgaWYgdGhlIGVycm9yIHdhcyBhbHJlYWR5IGVtaXR0ZWQgYW5kIHNob3VsZCBub3QgYmUgdGhyb3duIGFnYWluCiAgdGhpcy5lcnJvckVtaXR0ZWQgPSBmYWxzZTsKCiAgLy8gY291bnQgYnVmZmVyZWQgcmVxdWVzdHMKICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDsKCiAgLy8gYWxsb2NhdGUgdGhlIGZpcnN0IENvcmtlZFJlcXVlc3QsIHRoZXJlIGlzIGFsd2F5cwogIC8vIG9uZSBhbGxvY2F0ZWQgYW5kIGZyZWUgdG8gdXNlLCBhbmQgd2UgbWFpbnRhaW4gYXQgbW9zdCB0d28KICB0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHRoaXMpOwp9CgpXcml0YWJsZVN0YXRlLnByb3RvdHlwZS5nZXRCdWZmZXIgPSBmdW5jdGlvbiBnZXRCdWZmZXIoKSB7CiAgdmFyIGN1cnJlbnQgPSB0aGlzLmJ1ZmZlcmVkUmVxdWVzdDsKICB2YXIgb3V0ID0gW107CiAgd2hpbGUgKGN1cnJlbnQpIHsKICAgIG91dC5wdXNoKGN1cnJlbnQpOwogICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDsKICB9CiAgcmV0dXJuIG91dDsKfTsKCihmdW5jdGlvbiAoKSB7CiAgdHJ5IHsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZVN0YXRlLnByb3RvdHlwZSwgJ2J1ZmZlcicsIHsKICAgICAgZ2V0OiBpbnRlcm5hbFV0aWwuZGVwcmVjYXRlKGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWZmZXIoKTsKICAgICAgfSwgJ193cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyICcgKyAnaW5zdGVhZC4nLCAnREVQMDAwMycpCiAgICB9KTsKICB9IGNhdGNoIChfKSB7fQp9KSgpOwoKLy8gVGVzdCBfd3JpdGFibGVTdGF0ZSBmb3IgaW5oZXJpdGFuY2UgdG8gYWNjb3VudCBmb3IgRHVwbGV4IHN0cmVhbXMsCi8vIHdob3NlIHByb3RvdHlwZSBjaGFpbiBvbmx5IHBvaW50cyB0byBSZWFkYWJsZS4KdmFyIHJlYWxIYXNJbnN0YW5jZTsKaWYgKHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLmhhc0luc3RhbmNlICYmIHR5cGVvZiBGdW5jdGlvbi5wcm90b3R5cGVbU3ltYm9sLmhhc0luc3RhbmNlXSA9PT0gJ2Z1bmN0aW9uJykgewogIHJlYWxIYXNJbnN0YW5jZSA9IEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZSwgU3ltYm9sLmhhc0luc3RhbmNlLCB7CiAgICB2YWx1ZTogZnVuY3Rpb24gKG9iamVjdCkgewogICAgICBpZiAocmVhbEhhc0luc3RhbmNlLmNhbGwodGhpcywgb2JqZWN0KSkgcmV0dXJuIHRydWU7CiAgICAgIGlmICh0aGlzICE9PSBXcml0YWJsZSkgcmV0dXJuIGZhbHNlOwoKICAgICAgcmV0dXJuIG9iamVjdCAmJiBvYmplY3QuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBXcml0YWJsZVN0YXRlOwogICAgfQogIH0pOwp9IGVsc2UgewogIHJlYWxIYXNJbnN0YW5jZSA9IGZ1bmN0aW9uIChvYmplY3QpIHsKICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiB0aGlzOwogIH07Cn0KCmZ1bmN0aW9uIFdyaXRhYmxlKG9wdGlvbnMpIHsKICBEdXBsZXggPSBEdXBsZXggfHwgX193ZWJwYWNrX3JlcXVpcmVfXygxNik7CgogIC8vIFdyaXRhYmxlIGN0b3IgaXMgYXBwbGllZCB0byBEdXBsZXhlcywgdG9vLgogIC8vIGByZWFsSGFzSW5zdGFuY2VgIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHVzaW5nIHBsYWluIGBpbnN0YW5jZW9mYAogIC8vIHdvdWxkIHJldHVybiBmYWxzZSwgYXMgbm8gYF93cml0YWJsZVN0YXRlYCBwcm9wZXJ0eSBpcyBhdHRhY2hlZC4KCiAgLy8gVHJ5aW5nIHRvIHVzZSB0aGUgY3VzdG9tIGBpbnN0YW5jZW9mYCBmb3IgV3JpdGFibGUgaGVyZSB3aWxsIGFsc28gYnJlYWsgdGhlCiAgLy8gTm9kZS5qcyBMYXp5VHJhbnNmb3JtIGltcGxlbWVudGF0aW9uLCB3aGljaCBoYXMgYSBub24tdHJpdmlhbCBnZXR0ZXIgZm9yCiAgLy8gYF93cml0YWJsZVN0YXRlYCB0aGF0IHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLgogIGlmICghcmVhbEhhc0luc3RhbmNlLmNhbGwoV3JpdGFibGUsIHRoaXMpICYmICEodGhpcyBpbnN0YW5jZW9mIER1cGxleCkpIHsKICAgIHJldHVybiBuZXcgV3JpdGFibGUob3B0aW9ucyk7CiAgfQoKICB0aGlzLl93cml0YWJsZVN0YXRlID0gbmV3IFdyaXRhYmxlU3RhdGUob3B0aW9ucywgdGhpcyk7CgogIC8vIGxlZ2FjeS4KICB0aGlzLndyaXRhYmxlID0gdHJ1ZTsKCiAgaWYgKG9wdGlvbnMpIHsKICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGUgPSBvcHRpb25zLndyaXRlOwoKICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZXYgPT09ICdmdW5jdGlvbicpIHRoaXMuX3dyaXRldiA9IG9wdGlvbnMud3JpdGV2OwoKICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95OwoKICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5maW5hbCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmluYWwgPSBvcHRpb25zLmZpbmFsOwogIH0KCiAgU3RyZWFtLmNhbGwodGhpcyk7Cn0KCi8vIE90aGVyd2lzZSBwZW9wbGUgY2FuIHBpcGUgV3JpdGFibGUgc3RyZWFtcywgd2hpY2ggaXMganVzdCB3cm9uZy4KV3JpdGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoKSB7CiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignQ2Fubm90IHBpcGUsIG5vdCByZWFkYWJsZScpKTsKfTsKCmZ1bmN0aW9uIHdyaXRlQWZ0ZXJFbmQoc3RyZWFtLCBjYikgewogIHZhciBlciA9IG5ldyBFcnJvcignd3JpdGUgYWZ0ZXIgZW5kJyk7CiAgLy8gVE9ETzogZGVmZXIgZXJyb3IgZXZlbnRzIGNvbnNpc3RlbnRseSBldmVyeXdoZXJlLCBub3QganVzdCB0aGUgY2IKICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7CiAgcHJvY2Vzc05leHRUaWNrKGNiLCBlcik7Cn0KCi8vIENoZWNrcyB0aGF0IGEgdXNlci1zdXBwbGllZCBjaHVuayBpcyB2YWxpZCwgZXNwZWNpYWxseSBmb3IgdGhlIHBhcnRpY3VsYXIKLy8gbW9kZSB0aGUgc3RyZWFtIGlzIGluLiBDdXJyZW50bHkgdGhpcyBtZWFucyB0aGF0IGBudWxsYCBpcyBuZXZlciBhY2NlcHRlZAovLyBhbmQgdW5kZWZpbmVkL25vbi1zdHJpbmcgdmFsdWVzIGFyZSBvbmx5IGFsbG93ZWQgaW4gb2JqZWN0IG1vZGUuCmZ1bmN0aW9uIHZhbGlkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGNiKSB7CiAgdmFyIHZhbGlkID0gdHJ1ZTsKICB2YXIgZXIgPSBmYWxzZTsKCiAgaWYgKGNodW5rID09PSBudWxsKSB7CiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ01heSBub3Qgd3JpdGUgbnVsbCB2YWx1ZXMgdG8gc3RyZWFtJyk7CiAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmIGNodW5rICE9PSB1bmRlZmluZWQgJiYgIXN0YXRlLm9iamVjdE1vZGUpIHsKICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpOwogIH0KICBpZiAoZXIpIHsKICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTsKICAgIHByb2Nlc3NOZXh0VGljayhjYiwgZXIpOwogICAgdmFsaWQgPSBmYWxzZTsKICB9CiAgcmV0dXJuIHZhbGlkOwp9CgpXcml0YWJsZS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikgewogIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7CiAgdmFyIHJldCA9IGZhbHNlOwogIHZhciBpc0J1ZiA9ICFzdGF0ZS5vYmplY3RNb2RlICYmIF9pc1VpbnQ4QXJyYXkoY2h1bmspOwoKICBpZiAoaXNCdWYgJiYgIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHsKICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7CiAgfQoKICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYiA9IGVuY29kaW5nOwogICAgZW5jb2RpbmcgPSBudWxsOwogIH0KCiAgaWYgKGlzQnVmKSBlbmNvZGluZyA9ICdidWZmZXInO2Vsc2UgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7CgogIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIGNiID0gbm9wOwoKICBpZiAoc3RhdGUuZW5kZWQpIHdyaXRlQWZ0ZXJFbmQodGhpcywgY2IpO2Vsc2UgaWYgKGlzQnVmIHx8IHZhbGlkQ2h1bmsodGhpcywgc3RhdGUsIGNodW5rLCBjYikpIHsKICAgIHN0YXRlLnBlbmRpbmdjYisrOwogICAgcmV0ID0gd3JpdGVPckJ1ZmZlcih0aGlzLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpOwogIH0KCiAgcmV0dXJuIHJldDsKfTsKCldyaXRhYmxlLnByb3RvdHlwZS5jb3JrID0gZnVuY3Rpb24gKCkgewogIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7CgogIHN0YXRlLmNvcmtlZCsrOwp9OwoKV3JpdGFibGUucHJvdG90eXBlLnVuY29yayA9IGZ1bmN0aW9uICgpIHsKICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlOwoKICBpZiAoc3RhdGUuY29ya2VkKSB7CiAgICBzdGF0ZS5jb3JrZWQtLTsKCiAgICBpZiAoIXN0YXRlLndyaXRpbmcgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSBjbGVhckJ1ZmZlcih0aGlzLCBzdGF0ZSk7CiAgfQp9OwoKV3JpdGFibGUucHJvdG90eXBlLnNldERlZmF1bHRFbmNvZGluZyA9IGZ1bmN0aW9uIHNldERlZmF1bHRFbmNvZGluZyhlbmNvZGluZykgewogIC8vIG5vZGU6OlBhcnNlRW5jb2RpbmcoKSByZXF1aXJlcyBsb3dlciBjYXNlLgogIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSBlbmNvZGluZyA9IGVuY29kaW5nLnRvTG93ZXJDYXNlKCk7CiAgaWYgKCEoWydoZXgnLCAndXRmOCcsICd1dGYtOCcsICdhc2NpaScsICdiaW5hcnknLCAnYmFzZTY0JywgJ3VjczInLCAndWNzLTInLCAndXRmMTZsZScsICd1dGYtMTZsZScsICdyYXcnXS5pbmRleE9mKChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpKSA+IC0xKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKTsKICB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZyA9IGVuY29kaW5nOwogIHJldHVybiB0aGlzOwp9OwoKZnVuY3Rpb24gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZykgewogIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiBzdGF0ZS5kZWNvZGVTdHJpbmdzICE9PSBmYWxzZSAmJiB0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7CiAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZyk7CiAgfQogIHJldHVybiBjaHVuazsKfQoKLy8gaWYgd2UncmUgYWxyZWFkeSB3cml0aW5nIHNvbWV0aGluZywgdGhlbiBqdXN0IHB1dCB0aGlzCi8vIGluIHRoZSBxdWV1ZSwgYW5kIHdhaXQgb3VyIHR1cm4uICBPdGhlcndpc2UsIGNhbGwgX3dyaXRlCi8vIElmIHdlIHJldHVybiBmYWxzZSwgdGhlbiB3ZSBuZWVkIGEgZHJhaW4gZXZlbnQsIHNvIHNldCB0aGF0IGZsYWcuCmZ1bmN0aW9uIHdyaXRlT3JCdWZmZXIoc3RyZWFtLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpIHsKICBpZiAoIWlzQnVmKSB7CiAgICB2YXIgbmV3Q2h1bmsgPSBkZWNvZGVDaHVuayhzdGF0ZSwgY2h1bmssIGVuY29kaW5nKTsKICAgIGlmIChjaHVuayAhPT0gbmV3Q2h1bmspIHsKICAgICAgaXNCdWYgPSB0cnVlOwogICAgICBlbmNvZGluZyA9ICdidWZmZXInOwogICAgICBjaHVuayA9IG5ld0NodW5rOwogICAgfQogIH0KICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7CgogIHN0YXRlLmxlbmd0aCArPSBsZW47CgogIHZhciByZXQgPSBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrOwogIC8vIHdlIG11c3QgZW5zdXJlIHRoYXQgcHJldmlvdXMgbmVlZERyYWluIHdpbGwgbm90IGJlIHJlc2V0IHRvIGZhbHNlLgogIGlmICghcmV0KSBzdGF0ZS5uZWVkRHJhaW4gPSB0cnVlOwoKICBpZiAoc3RhdGUud3JpdGluZyB8fCBzdGF0ZS5jb3JrZWQpIHsKICAgIHZhciBsYXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDsKICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSB7CiAgICAgIGNodW5rOiBjaHVuaywKICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nLAogICAgICBpc0J1ZjogaXNCdWYsCiAgICAgIGNhbGxiYWNrOiBjYiwKICAgICAgbmV4dDogbnVsbAogICAgfTsKICAgIGlmIChsYXN0KSB7CiAgICAgIGxhc3QubmV4dCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7CiAgICB9IGVsc2UgewogICAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0OwogICAgfQogICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgKz0gMTsKICB9IGVsc2UgewogICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTsKICB9CgogIHJldHVybiByZXQ7Cn0KCmZ1bmN0aW9uIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgd3JpdGV2LCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpIHsKICBzdGF0ZS53cml0ZWxlbiA9IGxlbjsKICBzdGF0ZS53cml0ZWNiID0gY2I7CiAgc3RhdGUud3JpdGluZyA9IHRydWU7CiAgc3RhdGUuc3luYyA9IHRydWU7CiAgaWYgKHdyaXRldikgc3RyZWFtLl93cml0ZXYoY2h1bmssIHN0YXRlLm9ud3JpdGUpO2Vsc2Ugc3RyZWFtLl93cml0ZShjaHVuaywgZW5jb2RpbmcsIHN0YXRlLm9ud3JpdGUpOwogIHN0YXRlLnN5bmMgPSBmYWxzZTsKfQoKZnVuY3Rpb24gb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYikgewogIC0tc3RhdGUucGVuZGluZ2NiOwoKICBpZiAoc3luYykgewogICAgLy8gZGVmZXIgdGhlIGNhbGxiYWNrIGlmIHdlIGFyZSBiZWluZyBjYWxsZWQgc3luY2hyb25vdXNseQogICAgLy8gdG8gYXZvaWQgcGlsaW5nIHVwIHRoaW5ncyBvbiB0aGUgc3RhY2sKICAgIHByb2Nlc3NOZXh0VGljayhjYiwgZXIpOwogICAgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGFuZCBpdCB3aWxsIGFsd2F5cyBoYXBwZW4KICAgIC8vIGFmdGVyIGVycm9yCiAgICBwcm9jZXNzTmV4dFRpY2soZmluaXNoTWF5YmUsIHN0cmVhbSwgc3RhdGUpOwogICAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7CiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7CiAgfSBlbHNlIHsKICAgIC8vIHRoZSBjYWxsZXIgZXhwZWN0IHRoaXMgdG8gaGFwcGVuIGJlZm9yZSBpZgogICAgLy8gaXQgaXMgYXN5bmMKICAgIGNiKGVyKTsKICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlOwogICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpOwogICAgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGJ1dCBmaW5pc2ggbXVzdAogICAgLy8gYWx3YXlzIGZvbGxvdyBlcnJvcgogICAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7CiAgfQp9CgpmdW5jdGlvbiBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpIHsKICBzdGF0ZS53cml0aW5nID0gZmFsc2U7CiAgc3RhdGUud3JpdGVjYiA9IG51bGw7CiAgc3RhdGUubGVuZ3RoIC09IHN0YXRlLndyaXRlbGVuOwogIHN0YXRlLndyaXRlbGVuID0gMDsKfQoKZnVuY3Rpb24gb253cml0ZShzdHJlYW0sIGVyKSB7CiAgdmFyIHN0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlOwogIHZhciBzeW5jID0gc3RhdGUuc3luYzsKICB2YXIgY2IgPSBzdGF0ZS53cml0ZWNiOwoKICBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpOwoKICBpZiAoZXIpIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpO2Vsc2UgewogICAgLy8gQ2hlY2sgaWYgd2UncmUgYWN0dWFsbHkgcmVhZHkgdG8gZmluaXNoLCBidXQgZG9uJ3QgZW1pdCB5ZXQKICAgIHZhciBmaW5pc2hlZCA9IG5lZWRGaW5pc2goc3RhdGUpOwoKICAgIGlmICghZmluaXNoZWQgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIHsKICAgICAgY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSk7CiAgICB9CgogICAgaWYgKHN5bmMpIHsKICAgICAgLyo8cmVwbGFjZW1lbnQ+Ki8KICAgICAgYXN5bmNXcml0ZShhZnRlcldyaXRlLCBzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpOwogICAgICAvKjwvcmVwbGFjZW1lbnQ+Ki8KICAgIH0gZWxzZSB7CiAgICAgIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTsKICAgIH0KICB9Cn0KCmZ1bmN0aW9uIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKSB7CiAgaWYgKCFmaW5pc2hlZCkgb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpOwogIHN0YXRlLnBlbmRpbmdjYi0tOwogIGNiKCk7CiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7Cn0KCi8vIE11c3QgZm9yY2UgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIG9uIG5leHRUaWNrLCBzbyB0aGF0IHdlIGRvbid0Ci8vIGVtaXQgJ2RyYWluJyBiZWZvcmUgdGhlIHdyaXRlKCkgY29uc3VtZXIgZ2V0cyB0aGUgJ2ZhbHNlJyByZXR1cm4KLy8gdmFsdWUsIGFuZCBoYXMgYSBjaGFuY2UgdG8gYXR0YWNoIGEgJ2RyYWluJyBsaXN0ZW5lci4KZnVuY3Rpb24gb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpIHsKICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLm5lZWREcmFpbikgewogICAgc3RhdGUubmVlZERyYWluID0gZmFsc2U7CiAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKTsKICB9Cn0KCi8vIGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGluIHRoZSBidWZmZXIgd2FpdGluZywgdGhlbiBwcm9jZXNzIGl0CmZ1bmN0aW9uIGNsZWFyQnVmZmVyKHN0cmVhbSwgc3RhdGUpIHsKICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gdHJ1ZTsKICB2YXIgZW50cnkgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3Q7CgogIGlmIChzdHJlYW0uX3dyaXRldiAmJiBlbnRyeSAmJiBlbnRyeS5uZXh0KSB7CiAgICAvLyBGYXN0IGNhc2UsIHdyaXRlIGV2ZXJ5dGhpbmcgdXNpbmcgX3dyaXRldigpCiAgICB2YXIgbCA9IHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50OwogICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShsKTsKICAgIHZhciBob2xkZXIgPSBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7CiAgICBob2xkZXIuZW50cnkgPSBlbnRyeTsKCiAgICB2YXIgY291bnQgPSAwOwogICAgdmFyIGFsbEJ1ZmZlcnMgPSB0cnVlOwogICAgd2hpbGUgKGVudHJ5KSB7CiAgICAgIGJ1ZmZlcltjb3VudF0gPSBlbnRyeTsKICAgICAgaWYgKCFlbnRyeS5pc0J1ZikgYWxsQnVmZmVycyA9IGZhbHNlOwogICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7CiAgICAgIGNvdW50ICs9IDE7CiAgICB9CiAgICBidWZmZXIuYWxsQnVmZmVycyA9IGFsbEJ1ZmZlcnM7CgogICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB0cnVlLCBzdGF0ZS5sZW5ndGgsIGJ1ZmZlciwgJycsIGhvbGRlci5maW5pc2gpOwoKICAgIC8vIGRvV3JpdGUgaXMgYWxtb3N0IGFsd2F5cyBhc3luYywgZGVmZXIgdGhlc2UgdG8gc2F2ZSBhIGJpdCBvZiB0aW1lCiAgICAvLyBhcyB0aGUgaG90IHBhdGggZW5kcyB3aXRoIGRvV3JpdGUKICAgIHN0YXRlLnBlbmRpbmdjYisrOwogICAgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7CiAgICBpZiAoaG9sZGVyLm5leHQpIHsKICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gaG9sZGVyLm5leHQ7CiAgICAgIGhvbGRlci5uZXh0ID0gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHN0YXRlKTsKICAgIH0KICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDsKICB9IGVsc2UgewogICAgLy8gU2xvdyBjYXNlLCB3cml0ZSBjaHVua3Mgb25lLWJ5LW9uZQogICAgd2hpbGUgKGVudHJ5KSB7CiAgICAgIHZhciBjaHVuayA9IGVudHJ5LmNodW5rOwogICAgICB2YXIgZW5jb2RpbmcgPSBlbnRyeS5lbmNvZGluZzsKICAgICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7CiAgICAgIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDsKCiAgICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmFsc2UsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYik7CiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDsKICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLTsKICAgICAgLy8gaWYgd2UgZGlkbid0IGNhbGwgdGhlIG9ud3JpdGUgaW1tZWRpYXRlbHksIHRoZW4KICAgICAgLy8gaXQgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHdhaXQgdW50aWwgaXQgZG9lcy4KICAgICAgLy8gYWxzbywgdGhhdCBtZWFucyB0aGF0IHRoZSBjaHVuayBhbmQgY2IgYXJlIGN1cnJlbnRseQogICAgICAvLyBiZWluZyBwcm9jZXNzZWQsIHNvIG1vdmUgdGhlIGJ1ZmZlciBjb3VudGVyIHBhc3QgdGhlbS4KICAgICAgaWYgKHN0YXRlLndyaXRpbmcpIHsKICAgICAgICBicmVhazsKICAgICAgfQogICAgfQoKICAgIGlmIChlbnRyeSA9PT0gbnVsbCkgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7CiAgfQoKICBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPSBlbnRyeTsKICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7Cn0KCldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikgewogIGNiKG5ldyBFcnJvcignX3dyaXRlKCkgaXMgbm90IGltcGxlbWVudGVkJykpOwp9OwoKV3JpdGFibGUucHJvdG90eXBlLl93cml0ZXYgPSBudWxsOwoKV3JpdGFibGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTsKCiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSBjaHVuazsKICAgIGNodW5rID0gbnVsbDsKICAgIGVuY29kaW5nID0gbnVsbDsKICB9IGVsc2UgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2IgPSBlbmNvZGluZzsKICAgIGVuY29kaW5nID0gbnVsbDsKICB9CgogIGlmIChjaHVuayAhPT0gbnVsbCAmJiBjaHVuayAhPT0gdW5kZWZpbmVkKSB0aGlzLndyaXRlKGNodW5rLCBlbmNvZGluZyk7CgogIC8vIC5lbmQoKSBmdWxseSB1bmNvcmtzCiAgaWYgKHN0YXRlLmNvcmtlZCkgewogICAgc3RhdGUuY29ya2VkID0gMTsKICAgIHRoaXMudW5jb3JrKCk7CiAgfQoKICAvLyBpZ25vcmUgdW5uZWNlc3NhcnkgZW5kKCkgY2FsbHMuCiAgaWYgKCFzdGF0ZS5lbmRpbmcgJiYgIXN0YXRlLmZpbmlzaGVkKSBlbmRXcml0YWJsZSh0aGlzLCBzdGF0ZSwgY2IpOwp9OwoKZnVuY3Rpb24gbmVlZEZpbmlzaChzdGF0ZSkgewogIHJldHVybiBzdGF0ZS5lbmRpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9PT0gbnVsbCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLndyaXRpbmc7Cn0KZnVuY3Rpb24gY2FsbEZpbmFsKHN0cmVhbSwgc3RhdGUpIHsKICBzdHJlYW0uX2ZpbmFsKGZ1bmN0aW9uIChlcnIpIHsKICAgIHN0YXRlLnBlbmRpbmdjYi0tOwogICAgaWYgKGVycikgewogICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpOwogICAgfQogICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlOwogICAgc3RyZWFtLmVtaXQoJ3ByZWZpbmlzaCcpOwogICAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7CiAgfSk7Cn0KZnVuY3Rpb24gcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpIHsKICBpZiAoIXN0YXRlLnByZWZpbmlzaGVkICYmICFzdGF0ZS5maW5hbENhbGxlZCkgewogICAgaWYgKHR5cGVvZiBzdHJlYW0uX2ZpbmFsID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIHN0YXRlLnBlbmRpbmdjYisrOwogICAgICBzdGF0ZS5maW5hbENhbGxlZCA9IHRydWU7CiAgICAgIHByb2Nlc3NOZXh0VGljayhjYWxsRmluYWwsIHN0cmVhbSwgc3RhdGUpOwogICAgfSBlbHNlIHsKICAgICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlOwogICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKSB7CiAgdmFyIG5lZWQgPSBuZWVkRmluaXNoKHN0YXRlKTsKICBpZiAobmVlZCkgewogICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpOwogICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkgewogICAgICBzdGF0ZS5maW5pc2hlZCA9IHRydWU7CiAgICAgIHN0cmVhbS5lbWl0KCdmaW5pc2gnKTsKICAgIH0KICB9CiAgcmV0dXJuIG5lZWQ7Cn0KCmZ1bmN0aW9uIGVuZFdyaXRhYmxlKHN0cmVhbSwgc3RhdGUsIGNiKSB7CiAgc3RhdGUuZW5kaW5nID0gdHJ1ZTsKICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTsKICBpZiAoY2IpIHsKICAgIGlmIChzdGF0ZS5maW5pc2hlZCkgcHJvY2Vzc05leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCdmaW5pc2gnLCBjYik7CiAgfQogIHN0YXRlLmVuZGVkID0gdHJ1ZTsKICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZTsKfQoKZnVuY3Rpb24gb25Db3JrZWRGaW5pc2goY29ya1JlcSwgc3RhdGUsIGVycikgewogIHZhciBlbnRyeSA9IGNvcmtSZXEuZW50cnk7CiAgY29ya1JlcS5lbnRyeSA9IG51bGw7CiAgd2hpbGUgKGVudHJ5KSB7CiAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjazsKICAgIHN0YXRlLnBlbmRpbmdjYi0tOwogICAgY2IoZXJyKTsKICAgIGVudHJ5ID0gZW50cnkubmV4dDsKICB9CiAgaWYgKHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSkgewogICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlLm5leHQgPSBjb3JrUmVxOwogIH0gZWxzZSB7CiAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBjb3JrUmVxOwogIH0KfQoKT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlLnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHsKICBnZXQ6IGZ1bmN0aW9uICgpIHsKICAgIGlmICh0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkOwogIH0sCiAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHsKICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbQogICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldAogICAgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5CiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWQKICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7CiAgfQp9KTsKCldyaXRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTsKV3JpdGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7CldyaXRhYmxlLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7CiAgdGhpcy5lbmQoKTsKICBjYihlcnIpOwp9OwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxMSksIF9fd2VicGFja19yZXF1aXJlX18oMTQyKS5zZXRJbW1lZGlhdGUsIF9fd2VicGFja19yZXF1aXJlX18oNykpKQoKLyoqKi8gfSksCi8qIDQ3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgp2YXIgQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMykuQnVmZmVyOwoKdmFyIGlzRW5jb2RpbmcgPSBCdWZmZXIuaXNFbmNvZGluZyB8fCBmdW5jdGlvbiAoZW5jb2RpbmcpIHsKICBlbmNvZGluZyA9ICcnICsgZW5jb2Rpbmc7CiAgc3dpdGNoIChlbmNvZGluZyAmJiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKSB7CiAgICBjYXNlICdoZXgnOmNhc2UgJ3V0ZjgnOmNhc2UgJ3V0Zi04JzpjYXNlICdhc2NpaSc6Y2FzZSAnYmluYXJ5JzpjYXNlICdiYXNlNjQnOmNhc2UgJ3VjczInOmNhc2UgJ3Vjcy0yJzpjYXNlICd1dGYxNmxlJzpjYXNlICd1dGYtMTZsZSc6Y2FzZSAncmF3JzoKICAgICAgcmV0dXJuIHRydWU7CiAgICBkZWZhdWx0OgogICAgICByZXR1cm4gZmFsc2U7CiAgfQp9OwoKZnVuY3Rpb24gX25vcm1hbGl6ZUVuY29kaW5nKGVuYykgewogIGlmICghZW5jKSByZXR1cm4gJ3V0ZjgnOwogIHZhciByZXRyaWVkOwogIHdoaWxlICh0cnVlKSB7CiAgICBzd2l0Y2ggKGVuYykgewogICAgICBjYXNlICd1dGY4JzoKICAgICAgY2FzZSAndXRmLTgnOgogICAgICAgIHJldHVybiAndXRmOCc7CiAgICAgIGNhc2UgJ3VjczInOgogICAgICBjYXNlICd1Y3MtMic6CiAgICAgIGNhc2UgJ3V0ZjE2bGUnOgogICAgICBjYXNlICd1dGYtMTZsZSc6CiAgICAgICAgcmV0dXJuICd1dGYxNmxlJzsKICAgICAgY2FzZSAnbGF0aW4xJzoKICAgICAgY2FzZSAnYmluYXJ5JzoKICAgICAgICByZXR1cm4gJ2xhdGluMSc7CiAgICAgIGNhc2UgJ2Jhc2U2NCc6CiAgICAgIGNhc2UgJ2FzY2lpJzoKICAgICAgY2FzZSAnaGV4JzoKICAgICAgICByZXR1cm4gZW5jOwogICAgICBkZWZhdWx0OgogICAgICAgIGlmIChyZXRyaWVkKSByZXR1cm47IC8vIHVuZGVmaW5lZAogICAgICAgIGVuYyA9ICgnJyArIGVuYykudG9Mb3dlckNhc2UoKTsKICAgICAgICByZXRyaWVkID0gdHJ1ZTsKICAgIH0KICB9Cn07CgovLyBEbyBub3QgY2FjaGUgYEJ1ZmZlci5pc0VuY29kaW5nYCB3aGVuIGNoZWNraW5nIGVuY29kaW5nIG5hbWVzIGFzIHNvbWUKLy8gbW9kdWxlcyBtb25rZXktcGF0Y2ggaXQgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIGVuY29kaW5ncwpmdW5jdGlvbiBub3JtYWxpemVFbmNvZGluZyhlbmMpIHsKICB2YXIgbmVuYyA9IF9ub3JtYWxpemVFbmNvZGluZyhlbmMpOwogIGlmICh0eXBlb2YgbmVuYyAhPT0gJ3N0cmluZycgJiYgKEJ1ZmZlci5pc0VuY29kaW5nID09PSBpc0VuY29kaW5nIHx8ICFpc0VuY29kaW5nKGVuYykpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmMpOwogIHJldHVybiBuZW5jIHx8IGVuYzsKfQoKLy8gU3RyaW5nRGVjb2RlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGVmZmljaWVudGx5IHNwbGl0dGluZyBhIHNlcmllcyBvZgovLyBidWZmZXJzIGludG8gYSBzZXJpZXMgb2YgSlMgc3RyaW5ncyB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IG11bHRpLWJ5dGUKLy8gY2hhcmFjdGVycy4KZXhwb3J0cy5TdHJpbmdEZWNvZGVyID0gU3RyaW5nRGVjb2RlcjsKZnVuY3Rpb24gU3RyaW5nRGVjb2RlcihlbmNvZGluZykgewogIHRoaXMuZW5jb2RpbmcgPSBub3JtYWxpemVFbmNvZGluZyhlbmNvZGluZyk7CiAgdmFyIG5iOwogIHN3aXRjaCAodGhpcy5lbmNvZGluZykgewogICAgY2FzZSAndXRmMTZsZSc6CiAgICAgIHRoaXMudGV4dCA9IHV0ZjE2VGV4dDsKICAgICAgdGhpcy5lbmQgPSB1dGYxNkVuZDsKICAgICAgbmIgPSA0OwogICAgICBicmVhazsKICAgIGNhc2UgJ3V0ZjgnOgogICAgICB0aGlzLmZpbGxMYXN0ID0gdXRmOEZpbGxMYXN0OwogICAgICBuYiA9IDQ7CiAgICAgIGJyZWFrOwogICAgY2FzZSAnYmFzZTY0JzoKICAgICAgdGhpcy50ZXh0ID0gYmFzZTY0VGV4dDsKICAgICAgdGhpcy5lbmQgPSBiYXNlNjRFbmQ7CiAgICAgIG5iID0gMzsKICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICB0aGlzLndyaXRlID0gc2ltcGxlV3JpdGU7CiAgICAgIHRoaXMuZW5kID0gc2ltcGxlRW5kOwogICAgICByZXR1cm47CiAgfQogIHRoaXMubGFzdE5lZWQgPSAwOwogIHRoaXMubGFzdFRvdGFsID0gMDsKICB0aGlzLmxhc3RDaGFyID0gQnVmZmVyLmFsbG9jVW5zYWZlKG5iKTsKfQoKU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoYnVmKSB7CiAgaWYgKGJ1Zi5sZW5ndGggPT09IDApIHJldHVybiAnJzsKICB2YXIgcjsKICB2YXIgaTsKICBpZiAodGhpcy5sYXN0TmVlZCkgewogICAgciA9IHRoaXMuZmlsbExhc3QoYnVmKTsKICAgIGlmIChyID09PSB1bmRlZmluZWQpIHJldHVybiAnJzsKICAgIGkgPSB0aGlzLmxhc3ROZWVkOwogICAgdGhpcy5sYXN0TmVlZCA9IDA7CiAgfSBlbHNlIHsKICAgIGkgPSAwOwogIH0KICBpZiAoaSA8IGJ1Zi5sZW5ndGgpIHJldHVybiByID8gciArIHRoaXMudGV4dChidWYsIGkpIDogdGhpcy50ZXh0KGJ1ZiwgaSk7CiAgcmV0dXJuIHIgfHwgJyc7Cn07CgpTdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSB1dGY4RW5kOwoKLy8gUmV0dXJucyBvbmx5IGNvbXBsZXRlIGNoYXJhY3RlcnMgaW4gYSBCdWZmZXIKU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUudGV4dCA9IHV0ZjhUZXh0OwoKLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBwYXJ0aWFsIG5vbi1VVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlcgpTdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5maWxsTGFzdCA9IGZ1bmN0aW9uIChidWYpIHsKICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7CiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIHRoaXMubGFzdE5lZWQpOwogICAgcmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgdGhpcy5sYXN0VG90YWwpOwogIH0KICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIGJ1Zi5sZW5ndGgpOwogIHRoaXMubGFzdE5lZWQgLT0gYnVmLmxlbmd0aDsKfTsKCi8vIENoZWNrcyB0aGUgdHlwZSBvZiBhIFVURi04IGJ5dGUsIHdoZXRoZXIgaXQncyBBU0NJSSwgYSBsZWFkaW5nIGJ5dGUsIG9yIGEKLy8gY29udGludWF0aW9uIGJ5dGUuCmZ1bmN0aW9uIHV0ZjhDaGVja0J5dGUoYnl0ZSkgewogIGlmIChieXRlIDw9IDB4N0YpIHJldHVybiAwO2Vsc2UgaWYgKGJ5dGUgPj4gNSA9PT0gMHgwNikgcmV0dXJuIDI7ZWxzZSBpZiAoYnl0ZSA+PiA0ID09PSAweDBFKSByZXR1cm4gMztlbHNlIGlmIChieXRlID4+IDMgPT09IDB4MUUpIHJldHVybiA0OwogIHJldHVybiAtMTsKfQoKLy8gQ2hlY2tzIGF0IG1vc3QgMyBieXRlcyBhdCB0aGUgZW5kIG9mIGEgQnVmZmVyIGluIG9yZGVyIHRvIGRldGVjdCBhbgovLyBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyLiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzICgyLCAzLCBvciA0KQovLyBuZWVkZWQgdG8gY29tcGxldGUgdGhlIFVURi04IGNoYXJhY3RlciAoaWYgYXBwbGljYWJsZSkgYXJlIHJldHVybmVkLgpmdW5jdGlvbiB1dGY4Q2hlY2tJbmNvbXBsZXRlKHNlbGYsIGJ1ZiwgaSkgewogIHZhciBqID0gYnVmLmxlbmd0aCAtIDE7CiAgaWYgKGogPCBpKSByZXR1cm4gMDsKICB2YXIgbmIgPSB1dGY4Q2hlY2tCeXRlKGJ1ZltqXSk7CiAgaWYgKG5iID49IDApIHsKICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDE7CiAgICByZXR1cm4gbmI7CiAgfQogIGlmICgtLWogPCBpKSByZXR1cm4gMDsKICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTsKICBpZiAobmIgPj0gMCkgewogICAgaWYgKG5iID4gMCkgc2VsZi5sYXN0TmVlZCA9IG5iIC0gMjsKICAgIHJldHVybiBuYjsKICB9CiAgaWYgKC0taiA8IGkpIHJldHVybiAwOwogIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pOwogIGlmIChuYiA+PSAwKSB7CiAgICBpZiAobmIgPiAwKSB7CiAgICAgIGlmIChuYiA9PT0gMikgbmIgPSAwO2Vsc2Ugc2VsZi5sYXN0TmVlZCA9IG5iIC0gMzsKICAgIH0KICAgIHJldHVybiBuYjsKICB9CiAgcmV0dXJuIDA7Cn0KCi8vIFZhbGlkYXRlcyBhcyBtYW55IGNvbnRpbnVhdGlvbiBieXRlcyBmb3IgYSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3RlciBhcwovLyBuZWVkZWQgb3IgYXJlIGF2YWlsYWJsZS4gSWYgd2Ugc2VlIGEgbm9uLWNvbnRpbnVhdGlvbiBieXRlIHdoZXJlIHdlIGV4cGVjdAovLyBvbmUsIHdlICJyZXBsYWNlIiB0aGUgdmFsaWRhdGVkIGNvbnRpbnVhdGlvbiBieXRlcyB3ZSd2ZSBzZWVuIHNvIGZhciB3aXRoCi8vIFVURi04IHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgKCdcdWZmZmQnKSwgdG8gbWF0Y2ggdjgncyBVVEYtOCBkZWNvZGluZwovLyBiZWhhdmlvci4gVGhlIGNvbnRpbnVhdGlvbiBieXRlIGNoZWNrIGlzIGluY2x1ZGVkIHRocmVlIHRpbWVzIGluIHRoZSBjYXNlCi8vIHdoZXJlIGFsbCBvZiB0aGUgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIGNoYXJhY3RlciBleGlzdCBpbiB0aGUgc2FtZSBidWZmZXIuCi8vIEl0IGlzIGFsc28gZG9uZSB0aGlzIHdheSBhcyBhIHNsaWdodCBwZXJmb3JtYW5jZSBpbmNyZWFzZSBpbnN0ZWFkIG9mIHVzaW5nIGEKLy8gbG9vcC4KZnVuY3Rpb24gdXRmOENoZWNrRXh0cmFCeXRlcyhzZWxmLCBidWYsIHApIHsKICBpZiAoKGJ1ZlswXSAmIDB4QzApICE9PSAweDgwKSB7CiAgICBzZWxmLmxhc3ROZWVkID0gMDsKICAgIHJldHVybiAnXHVmZmZkJy5yZXBlYXQocCk7CiAgfQogIGlmIChzZWxmLmxhc3ROZWVkID4gMSAmJiBidWYubGVuZ3RoID4gMSkgewogICAgaWYgKChidWZbMV0gJiAweEMwKSAhPT0gMHg4MCkgewogICAgICBzZWxmLmxhc3ROZWVkID0gMTsKICAgICAgcmV0dXJuICdcdWZmZmQnLnJlcGVhdChwICsgMSk7CiAgICB9CiAgICBpZiAoc2VsZi5sYXN0TmVlZCA+IDIgJiYgYnVmLmxlbmd0aCA+IDIpIHsKICAgICAgaWYgKChidWZbMl0gJiAweEMwKSAhPT0gMHg4MCkgewogICAgICAgIHNlbGYubGFzdE5lZWQgPSAyOwogICAgICAgIHJldHVybiAnXHVmZmZkJy5yZXBlYXQocCArIDIpOwogICAgICB9CiAgICB9CiAgfQp9CgovLyBBdHRlbXB0cyB0byBjb21wbGV0ZSBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXIuCmZ1bmN0aW9uIHV0ZjhGaWxsTGFzdChidWYpIHsKICB2YXIgcCA9IHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZDsKICB2YXIgciA9IHV0ZjhDaGVja0V4dHJhQnl0ZXModGhpcywgYnVmLCBwKTsKICBpZiAociAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcjsKICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7CiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCB0aGlzLmxhc3ROZWVkKTsKICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTsKICB9CiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgcCwgMCwgYnVmLmxlbmd0aCk7CiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoOwp9CgovLyBSZXR1cm5zIGFsbCBjb21wbGV0ZSBVVEYtOCBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyLiBJZiB0aGUgQnVmZmVyIGVuZGVkIG9uIGEKLy8gcGFydGlhbCBjaGFyYWN0ZXIsIHRoZSBjaGFyYWN0ZXIncyBieXRlcyBhcmUgYnVmZmVyZWQgdW50aWwgdGhlIHJlcXVpcmVkCi8vIG51bWJlciBvZiBieXRlcyBhcmUgYXZhaWxhYmxlLgpmdW5jdGlvbiB1dGY4VGV4dChidWYsIGkpIHsKICB2YXIgdG90YWwgPSB1dGY4Q2hlY2tJbmNvbXBsZXRlKHRoaXMsIGJ1ZiwgaSk7CiAgaWYgKCF0aGlzLmxhc3ROZWVkKSByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGY4JywgaSk7CiAgdGhpcy5sYXN0VG90YWwgPSB0b3RhbDsKICB2YXIgZW5kID0gYnVmLmxlbmd0aCAtICh0b3RhbCAtIHRoaXMubGFzdE5lZWQpOwogIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIDAsIGVuZCk7CiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGksIGVuZCk7Cn0KCi8vIEZvciBVVEYtOCwgYSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgZm9yIGVhY2ggYnVmZmVyZWQgYnl0ZSBvZiBhIChwYXJ0aWFsKQovLyBjaGFyYWN0ZXIgbmVlZHMgdG8gYmUgYWRkZWQgdG8gdGhlIG91dHB1dC4KZnVuY3Rpb24gdXRmOEVuZChidWYpIHsKICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7CiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgJ1x1ZmZmZCcucmVwZWF0KHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZCk7CiAgcmV0dXJuIHI7Cn0KCi8vIFVURi0xNkxFIHR5cGljYWxseSBuZWVkcyB0d28gYnl0ZXMgcGVyIGNoYXJhY3RlciwgYnV0IGV2ZW4gaWYgd2UgaGF2ZSBhbiBldmVuCi8vIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUsIHdlIG5lZWQgdG8gY2hlY2sgaWYgd2UgZW5kIG9uIGEgbGVhZGluZy9oaWdoCi8vIHN1cnJvZ2F0ZS4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0IHR3byBieXRlcyBpbiBvcmRlciB0bwovLyBkZWNvZGUgdGhlIGxhc3QgY2hhcmFjdGVyIHByb3Blcmx5LgpmdW5jdGlvbiB1dGYxNlRleHQoYnVmLCBpKSB7CiAgaWYgKChidWYubGVuZ3RoIC0gaSkgJSAyID09PSAwKSB7CiAgICB2YXIgciA9IGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGkpOwogICAgaWYgKHIpIHsKICAgICAgdmFyIGMgPSByLmNoYXJDb2RlQXQoci5sZW5ndGggLSAxKTsKICAgICAgaWYgKGMgPj0gMHhEODAwICYmIGMgPD0gMHhEQkZGKSB7CiAgICAgICAgdGhpcy5sYXN0TmVlZCA9IDI7CiAgICAgICAgdGhpcy5sYXN0VG90YWwgPSA0OwogICAgICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdOwogICAgICAgIHRoaXMubGFzdENoYXJbMV0gPSBidWZbYnVmLmxlbmd0aCAtIDFdOwogICAgICAgIHJldHVybiByLnNsaWNlKDAsIC0xKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuIHI7CiAgfQogIHRoaXMubGFzdE5lZWQgPSAxOwogIHRoaXMubGFzdFRvdGFsID0gMjsKICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTsKICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSwgYnVmLmxlbmd0aCAtIDEpOwp9CgovLyBGb3IgVVRGLTE2TEUgd2UgZG8gbm90IGV4cGxpY2l0bHkgYXBwZW5kIHNwZWNpYWwgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyBpZiB3ZQovLyBlbmQgb24gYSBwYXJ0aWFsIGNoYXJhY3Rlciwgd2Ugc2ltcGx5IGxldCB2OCBoYW5kbGUgdGhhdC4KZnVuY3Rpb24gdXRmMTZFbmQoYnVmKSB7CiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnOwogIGlmICh0aGlzLmxhc3ROZWVkKSB7CiAgICB2YXIgZW5kID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkOwogICAgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCd1dGYxNmxlJywgMCwgZW5kKTsKICB9CiAgcmV0dXJuIHI7Cn0KCmZ1bmN0aW9uIGJhc2U2NFRleHQoYnVmLCBpKSB7CiAgdmFyIG4gPSAoYnVmLmxlbmd0aCAtIGkpICUgMzsKICBpZiAobiA9PT0gMCkgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSk7CiAgdGhpcy5sYXN0TmVlZCA9IDMgLSBuOwogIHRoaXMubGFzdFRvdGFsID0gMzsKICBpZiAobiA9PT0gMSkgewogICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07CiAgfSBlbHNlIHsKICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdOwogICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07CiAgfQogIHJldHVybiBidWYudG9TdHJpbmcoJ2Jhc2U2NCcsIGksIGJ1Zi5sZW5ndGggLSBuKTsKfQoKZnVuY3Rpb24gYmFzZTY0RW5kKGJ1ZikgewogIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJzsKICBpZiAodGhpcy5sYXN0TmVlZCkgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCdiYXNlNjQnLCAwLCAzIC0gdGhpcy5sYXN0TmVlZCk7CiAgcmV0dXJuIHI7Cn0KCi8vIFBhc3MgYnl0ZXMgb24gdGhyb3VnaCBmb3Igc2luZ2xlLWJ5dGUgZW5jb2RpbmdzIChlLmcuIGFzY2lpLCBsYXRpbjEsIGhleCkKZnVuY3Rpb24gc2ltcGxlV3JpdGUoYnVmKSB7CiAgcmV0dXJuIGJ1Zi50b1N0cmluZyh0aGlzLmVuY29kaW5nKTsKfQoKZnVuY3Rpb24gc2ltcGxlRW5kKGJ1ZikgewogIHJldHVybiBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnOwp9CgovKioqLyB9KSwKLyogNDggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24ocHJvY2VzcykgewoKdmFyIEJ1ZmZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyOwp2YXIgVHJhbnNmb3JtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSkuVHJhbnNmb3JtOwp2YXIgYmluZGluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTUwKTsKdmFyIHV0aWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ5KTsKdmFyIGFzc2VydCA9IF9fd2VicGFja19yZXF1aXJlX18oODgpLm9rOwp2YXIga01heExlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oMSkua01heExlbmd0aDsKdmFyIGtSYW5nZUVycm9yTWVzc2FnZSA9ICdDYW5ub3QgY3JlYXRlIGZpbmFsIEJ1ZmZlci4gSXQgd291bGQgYmUgbGFyZ2VyICcgKyAndGhhbiAweCcgKyBrTWF4TGVuZ3RoLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnOwoKLy8gemxpYiBkb2Vzbid0IHByb3ZpZGUgdGhlc2UsIHNvIGtsdWRnZSB0aGVtIGluIGZvbGxvd2luZyB0aGUgc2FtZQovLyBjb25zdCBuYW1pbmcgc2NoZW1lIHpsaWIgdXNlcy4KYmluZGluZy5aX01JTl9XSU5ET1dCSVRTID0gODsKYmluZGluZy5aX01BWF9XSU5ET1dCSVRTID0gMTU7CmJpbmRpbmcuWl9ERUZBVUxUX1dJTkRPV0JJVFMgPSAxNTsKCi8vIGZld2VyIHRoYW4gNjQgYnl0ZXMgcGVyIGNodW5rIGlzIHN0dXBpZC4KLy8gdGVjaG5pY2FsbHkgaXQgY291bGQgd29yayB3aXRoIGFzIGZldyBhcyA4LCBidXQgZXZlbiA2NCBieXRlcwovLyBpcyBhYnN1cmRseSBsb3cuICBVc3VhbGx5IGEgTUIgb3IgbW9yZSBpcyBiZXN0LgpiaW5kaW5nLlpfTUlOX0NIVU5LID0gNjQ7CmJpbmRpbmcuWl9NQVhfQ0hVTksgPSBJbmZpbml0eTsKYmluZGluZy5aX0RFRkFVTFRfQ0hVTksgPSAxNiAqIDEwMjQ7CgpiaW5kaW5nLlpfTUlOX01FTUxFVkVMID0gMTsKYmluZGluZy5aX01BWF9NRU1MRVZFTCA9IDk7CmJpbmRpbmcuWl9ERUZBVUxUX01FTUxFVkVMID0gODsKCmJpbmRpbmcuWl9NSU5fTEVWRUwgPSAtMTsKYmluZGluZy5aX01BWF9MRVZFTCA9IDk7CmJpbmRpbmcuWl9ERUZBVUxUX0xFVkVMID0gYmluZGluZy5aX0RFRkFVTFRfQ09NUFJFU1NJT047CgovLyBleHBvc2UgYWxsIHRoZSB6bGliIGNvbnN0YW50cwp2YXIgYmtleXMgPSBPYmplY3Qua2V5cyhiaW5kaW5nKTsKZm9yICh2YXIgYmsgPSAwOyBiayA8IGJrZXlzLmxlbmd0aDsgYmsrKykgewogIHZhciBia2V5ID0gYmtleXNbYmtdOwogIGlmIChia2V5Lm1hdGNoKC9eWi8pKSB7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgYmtleSwgewogICAgICBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogYmluZGluZ1tia2V5XSwgd3JpdGFibGU6IGZhbHNlCiAgICB9KTsKICB9Cn0KCi8vIHRyYW5zbGF0aW9uIHRhYmxlIGZvciByZXR1cm4gY29kZXMuCnZhciBjb2RlcyA9IHsKICBaX09LOiBiaW5kaW5nLlpfT0ssCiAgWl9TVFJFQU1fRU5EOiBiaW5kaW5nLlpfU1RSRUFNX0VORCwKICBaX05FRURfRElDVDogYmluZGluZy5aX05FRURfRElDVCwKICBaX0VSUk5POiBiaW5kaW5nLlpfRVJSTk8sCiAgWl9TVFJFQU1fRVJST1I6IGJpbmRpbmcuWl9TVFJFQU1fRVJST1IsCiAgWl9EQVRBX0VSUk9SOiBiaW5kaW5nLlpfREFUQV9FUlJPUiwKICBaX01FTV9FUlJPUjogYmluZGluZy5aX01FTV9FUlJPUiwKICBaX0JVRl9FUlJPUjogYmluZGluZy5aX0JVRl9FUlJPUiwKICBaX1ZFUlNJT05fRVJST1I6IGJpbmRpbmcuWl9WRVJTSU9OX0VSUk9SCn07Cgp2YXIgY2tleXMgPSBPYmplY3Qua2V5cyhjb2Rlcyk7CmZvciAodmFyIGNrID0gMDsgY2sgPCBja2V5cy5sZW5ndGg7IGNrKyspIHsKICB2YXIgY2tleSA9IGNrZXlzW2NrXTsKICBjb2Rlc1tjb2Rlc1tja2V5XV0gPSBja2V5Owp9CgpPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ2NvZGVzJywgewogIGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiBPYmplY3QuZnJlZXplKGNvZGVzKSwgd3JpdGFibGU6IGZhbHNlCn0pOwoKZXhwb3J0cy5EZWZsYXRlID0gRGVmbGF0ZTsKZXhwb3J0cy5JbmZsYXRlID0gSW5mbGF0ZTsKZXhwb3J0cy5HemlwID0gR3ppcDsKZXhwb3J0cy5HdW56aXAgPSBHdW56aXA7CmV4cG9ydHMuRGVmbGF0ZVJhdyA9IERlZmxhdGVSYXc7CmV4cG9ydHMuSW5mbGF0ZVJhdyA9IEluZmxhdGVSYXc7CmV4cG9ydHMuVW56aXAgPSBVbnppcDsKCmV4cG9ydHMuY3JlYXRlRGVmbGF0ZSA9IGZ1bmN0aW9uIChvKSB7CiAgcmV0dXJuIG5ldyBEZWZsYXRlKG8pOwp9OwoKZXhwb3J0cy5jcmVhdGVJbmZsYXRlID0gZnVuY3Rpb24gKG8pIHsKICByZXR1cm4gbmV3IEluZmxhdGUobyk7Cn07CgpleHBvcnRzLmNyZWF0ZURlZmxhdGVSYXcgPSBmdW5jdGlvbiAobykgewogIHJldHVybiBuZXcgRGVmbGF0ZVJhdyhvKTsKfTsKCmV4cG9ydHMuY3JlYXRlSW5mbGF0ZVJhdyA9IGZ1bmN0aW9uIChvKSB7CiAgcmV0dXJuIG5ldyBJbmZsYXRlUmF3KG8pOwp9OwoKZXhwb3J0cy5jcmVhdGVHemlwID0gZnVuY3Rpb24gKG8pIHsKICByZXR1cm4gbmV3IEd6aXAobyk7Cn07CgpleHBvcnRzLmNyZWF0ZUd1bnppcCA9IGZ1bmN0aW9uIChvKSB7CiAgcmV0dXJuIG5ldyBHdW56aXAobyk7Cn07CgpleHBvcnRzLmNyZWF0ZVVuemlwID0gZnVuY3Rpb24gKG8pIHsKICByZXR1cm4gbmV3IFVuemlwKG8pOwp9OwoKLy8gQ29udmVuaWVuY2UgbWV0aG9kcy4KLy8gY29tcHJlc3MvZGVjb21wcmVzcyBhIHN0cmluZyBvciBidWZmZXIgaW4gb25lIHN0ZXAuCmV4cG9ydHMuZGVmbGF0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7CiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYWxsYmFjayA9IG9wdHM7CiAgICBvcHRzID0ge307CiAgfQogIHJldHVybiB6bGliQnVmZmVyKG5ldyBEZWZsYXRlKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTsKfTsKCmV4cG9ydHMuZGVmbGF0ZVN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7CiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBEZWZsYXRlKG9wdHMpLCBidWZmZXIpOwp9OwoKZXhwb3J0cy5nemlwID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHsKICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHsKICAgIGNhbGxiYWNrID0gb3B0czsKICAgIG9wdHMgPSB7fTsKICB9CiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IEd6aXAob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spOwp9OwoKZXhwb3J0cy5nemlwU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHsKICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IEd6aXAob3B0cyksIGJ1ZmZlcik7Cn07CgpleHBvcnRzLmRlZmxhdGVSYXcgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykgewogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2FsbGJhY2sgPSBvcHRzOwogICAgb3B0cyA9IHt9OwogIH0KICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgRGVmbGF0ZVJhdyhvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7Cn07CgpleHBvcnRzLmRlZmxhdGVSYXdTeW5jID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cykgewogIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgRGVmbGF0ZVJhdyhvcHRzKSwgYnVmZmVyKTsKfTsKCmV4cG9ydHMudW56aXAgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykgewogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2FsbGJhY2sgPSBvcHRzOwogICAgb3B0cyA9IHt9OwogIH0KICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgVW56aXAob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spOwp9OwoKZXhwb3J0cy51bnppcFN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7CiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBVbnppcChvcHRzKSwgYnVmZmVyKTsKfTsKCmV4cG9ydHMuaW5mbGF0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7CiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYWxsYmFjayA9IG9wdHM7CiAgICBvcHRzID0ge307CiAgfQogIHJldHVybiB6bGliQnVmZmVyKG5ldyBJbmZsYXRlKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTsKfTsKCmV4cG9ydHMuaW5mbGF0ZVN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7CiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBJbmZsYXRlKG9wdHMpLCBidWZmZXIpOwp9OwoKZXhwb3J0cy5ndW56aXAgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykgewogIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2FsbGJhY2sgPSBvcHRzOwogICAgb3B0cyA9IHt9OwogIH0KICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgR3VuemlwKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTsKfTsKCmV4cG9ydHMuZ3VuemlwU3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHsKICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IEd1bnppcChvcHRzKSwgYnVmZmVyKTsKfTsKCmV4cG9ydHMuaW5mbGF0ZVJhdyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7CiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7CiAgICBjYWxsYmFjayA9IG9wdHM7CiAgICBvcHRzID0ge307CiAgfQogIHJldHVybiB6bGliQnVmZmVyKG5ldyBJbmZsYXRlUmF3KG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTsKfTsKCmV4cG9ydHMuaW5mbGF0ZVJhd1N5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7CiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBJbmZsYXRlUmF3KG9wdHMpLCBidWZmZXIpOwp9OwoKZnVuY3Rpb24gemxpYkJ1ZmZlcihlbmdpbmUsIGJ1ZmZlciwgY2FsbGJhY2spIHsKICB2YXIgYnVmZmVycyA9IFtdOwogIHZhciBucmVhZCA9IDA7CgogIGVuZ2luZS5vbignZXJyb3InLCBvbkVycm9yKTsKICBlbmdpbmUub24oJ2VuZCcsIG9uRW5kKTsKCiAgZW5naW5lLmVuZChidWZmZXIpOwogIGZsb3coKTsKCiAgZnVuY3Rpb24gZmxvdygpIHsKICAgIHZhciBjaHVuazsKICAgIHdoaWxlIChudWxsICE9PSAoY2h1bmsgPSBlbmdpbmUucmVhZCgpKSkgewogICAgICBidWZmZXJzLnB1c2goY2h1bmspOwogICAgICBucmVhZCArPSBjaHVuay5sZW5ndGg7CiAgICB9CiAgICBlbmdpbmUub25jZSgncmVhZGFibGUnLCBmbG93KTsKICB9CgogIGZ1bmN0aW9uIG9uRXJyb3IoZXJyKSB7CiAgICBlbmdpbmUucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uRW5kKTsKICAgIGVuZ2luZS5yZW1vdmVMaXN0ZW5lcigncmVhZGFibGUnLCBmbG93KTsKICAgIGNhbGxiYWNrKGVycik7CiAgfQoKICBmdW5jdGlvbiBvbkVuZCgpIHsKICAgIHZhciBidWY7CiAgICB2YXIgZXJyID0gbnVsbDsKCiAgICBpZiAobnJlYWQgPj0ga01heExlbmd0aCkgewogICAgICBlcnIgPSBuZXcgUmFuZ2VFcnJvcihrUmFuZ2VFcnJvck1lc3NhZ2UpOwogICAgfSBlbHNlIHsKICAgICAgYnVmID0gQnVmZmVyLmNvbmNhdChidWZmZXJzLCBucmVhZCk7CiAgICB9CgogICAgYnVmZmVycyA9IFtdOwogICAgZW5naW5lLmNsb3NlKCk7CiAgICBjYWxsYmFjayhlcnIsIGJ1Zik7CiAgfQp9CgpmdW5jdGlvbiB6bGliQnVmZmVyU3luYyhlbmdpbmUsIGJ1ZmZlcikgewogIGlmICh0eXBlb2YgYnVmZmVyID09PSAnc3RyaW5nJykgYnVmZmVyID0gQnVmZmVyLmZyb20oYnVmZmVyKTsKCiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignTm90IGEgc3RyaW5nIG9yIGJ1ZmZlcicpOwoKICB2YXIgZmx1c2hGbGFnID0gZW5naW5lLl9maW5pc2hGbHVzaEZsYWc7CgogIHJldHVybiBlbmdpbmUuX3Byb2Nlc3NDaHVuayhidWZmZXIsIGZsdXNoRmxhZyk7Cn0KCi8vIGdlbmVyaWMgemxpYgovLyBtaW5pbWFsIDItYnl0ZSBoZWFkZXIKZnVuY3Rpb24gRGVmbGF0ZShvcHRzKSB7CiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlZmxhdGUpKSByZXR1cm4gbmV3IERlZmxhdGUob3B0cyk7CiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuREVGTEFURSk7Cn0KCmZ1bmN0aW9uIEluZmxhdGUob3B0cykgewogIGlmICghKHRoaXMgaW5zdGFuY2VvZiBJbmZsYXRlKSkgcmV0dXJuIG5ldyBJbmZsYXRlKG9wdHMpOwogIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLklORkxBVEUpOwp9CgovLyBnemlwIC0gYmlnZ2VyIGhlYWRlciwgc2FtZSBkZWZsYXRlIGNvbXByZXNzaW9uCmZ1bmN0aW9uIEd6aXAob3B0cykgewogIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHemlwKSkgcmV0dXJuIG5ldyBHemlwKG9wdHMpOwogIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLkdaSVApOwp9CgpmdW5jdGlvbiBHdW56aXAob3B0cykgewogIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHdW56aXApKSByZXR1cm4gbmV3IEd1bnppcChvcHRzKTsKICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5HVU5aSVApOwp9CgovLyByYXcgLSBubyBoZWFkZXIKZnVuY3Rpb24gRGVmbGF0ZVJhdyhvcHRzKSB7CiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlZmxhdGVSYXcpKSByZXR1cm4gbmV3IERlZmxhdGVSYXcob3B0cyk7CiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuREVGTEFURVJBVyk7Cn0KCmZ1bmN0aW9uIEluZmxhdGVSYXcob3B0cykgewogIGlmICghKHRoaXMgaW5zdGFuY2VvZiBJbmZsYXRlUmF3KSkgcmV0dXJuIG5ldyBJbmZsYXRlUmF3KG9wdHMpOwogIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLklORkxBVEVSQVcpOwp9CgovLyBhdXRvLWRldGVjdCBoZWFkZXIuCmZ1bmN0aW9uIFVuemlwKG9wdHMpIHsKICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVW56aXApKSByZXR1cm4gbmV3IFVuemlwKG9wdHMpOwogIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLlVOWklQKTsKfQoKZnVuY3Rpb24gaXNWYWxpZEZsdXNoRmxhZyhmbGFnKSB7CiAgcmV0dXJuIGZsYWcgPT09IGJpbmRpbmcuWl9OT19GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfUEFSVElBTF9GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfU1lOQ19GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfRlVMTF9GTFVTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfRklOSVNIIHx8IGZsYWcgPT09IGJpbmRpbmcuWl9CTE9DSzsKfQoKLy8gdGhlIFpsaWIgY2xhc3MgdGhleSBhbGwgaW5oZXJpdCBmcm9tCi8vIFRoaXMgdGhpbmcgbWFuYWdlcyB0aGUgcXVldWUgb2YgcmVxdWVzdHMsIGFuZCByZXR1cm5zCi8vIHRydWUgb3IgZmFsc2UgaWYgdGhlcmUgaXMgYW55dGhpbmcgaW4gdGhlIHF1ZXVlIHdoZW4KLy8geW91IGNhbGwgdGhlIC53cml0ZSgpIG1ldGhvZC4KCmZ1bmN0aW9uIFpsaWIob3B0cywgbW9kZSkgewogIHZhciBfdGhpcyA9IHRoaXM7CgogIHRoaXMuX29wdHMgPSBvcHRzID0gb3B0cyB8fCB7fTsKICB0aGlzLl9jaHVua1NpemUgPSBvcHRzLmNodW5rU2l6ZSB8fCBleHBvcnRzLlpfREVGQVVMVF9DSFVOSzsKCiAgVHJhbnNmb3JtLmNhbGwodGhpcywgb3B0cyk7CgogIGlmIChvcHRzLmZsdXNoICYmICFpc1ZhbGlkRmx1c2hGbGFnKG9wdHMuZmx1c2gpKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZmx1c2ggZmxhZzogJyArIG9wdHMuZmx1c2gpOwogIH0KICBpZiAob3B0cy5maW5pc2hGbHVzaCAmJiAhaXNWYWxpZEZsdXNoRmxhZyhvcHRzLmZpbmlzaEZsdXNoKSkgewogICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZsdXNoIGZsYWc6ICcgKyBvcHRzLmZpbmlzaEZsdXNoKTsKICB9CgogIHRoaXMuX2ZsdXNoRmxhZyA9IG9wdHMuZmx1c2ggfHwgYmluZGluZy5aX05PX0ZMVVNIOwogIHRoaXMuX2ZpbmlzaEZsdXNoRmxhZyA9IHR5cGVvZiBvcHRzLmZpbmlzaEZsdXNoICE9PSAndW5kZWZpbmVkJyA/IG9wdHMuZmluaXNoRmx1c2ggOiBiaW5kaW5nLlpfRklOSVNIOwoKICBpZiAob3B0cy5jaHVua1NpemUpIHsKICAgIGlmIChvcHRzLmNodW5rU2l6ZSA8IGV4cG9ydHMuWl9NSU5fQ0hVTksgfHwgb3B0cy5jaHVua1NpemUgPiBleHBvcnRzLlpfTUFYX0NIVU5LKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjaHVuayBzaXplOiAnICsgb3B0cy5jaHVua1NpemUpOwogICAgfQogIH0KCiAgaWYgKG9wdHMud2luZG93Qml0cykgewogICAgaWYgKG9wdHMud2luZG93Qml0cyA8IGV4cG9ydHMuWl9NSU5fV0lORE9XQklUUyB8fCBvcHRzLndpbmRvd0JpdHMgPiBleHBvcnRzLlpfTUFYX1dJTkRPV0JJVFMpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHdpbmRvd0JpdHM6ICcgKyBvcHRzLndpbmRvd0JpdHMpOwogICAgfQogIH0KCiAgaWYgKG9wdHMubGV2ZWwpIHsKICAgIGlmIChvcHRzLmxldmVsIDwgZXhwb3J0cy5aX01JTl9MRVZFTCB8fCBvcHRzLmxldmVsID4gZXhwb3J0cy5aX01BWF9MRVZFTCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29tcHJlc3Npb24gbGV2ZWw6ICcgKyBvcHRzLmxldmVsKTsKICAgIH0KICB9CgogIGlmIChvcHRzLm1lbUxldmVsKSB7CiAgICBpZiAob3B0cy5tZW1MZXZlbCA8IGV4cG9ydHMuWl9NSU5fTUVNTEVWRUwgfHwgb3B0cy5tZW1MZXZlbCA+IGV4cG9ydHMuWl9NQVhfTUVNTEVWRUwpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1lbUxldmVsOiAnICsgb3B0cy5tZW1MZXZlbCk7CiAgICB9CiAgfQoKICBpZiAob3B0cy5zdHJhdGVneSkgewogICAgaWYgKG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0ZJTFRFUkVEICYmIG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0hVRkZNQU5fT05MWSAmJiBvcHRzLnN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9STEUgJiYgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfRklYRUQgJiYgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWSkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyYXRlZ3k6ICcgKyBvcHRzLnN0cmF0ZWd5KTsKICAgIH0KICB9CgogIGlmIChvcHRzLmRpY3Rpb25hcnkpIHsKICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKG9wdHMuZGljdGlvbmFyeSkpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRpY3Rpb25hcnk6IGl0IHNob3VsZCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpOwogICAgfQogIH0KCiAgdGhpcy5faGFuZGxlID0gbmV3IGJpbmRpbmcuWmxpYihtb2RlKTsKCiAgdmFyIHNlbGYgPSB0aGlzOwogIHRoaXMuX2hhZEVycm9yID0gZmFsc2U7CiAgdGhpcy5faGFuZGxlLm9uZXJyb3IgPSBmdW5jdGlvbiAobWVzc2FnZSwgZXJybm8pIHsKICAgIC8vIHRoZXJlIGlzIG5vIHdheSB0byBjbGVhbmx5IHJlY292ZXIuCiAgICAvLyBjb250aW51aW5nIG9ubHkgb2JzY3VyZXMgcHJvYmxlbXMuCiAgICBfY2xvc2Uoc2VsZik7CiAgICBzZWxmLl9oYWRFcnJvciA9IHRydWU7CgogICAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpOwogICAgZXJyb3IuZXJybm8gPSBlcnJubzsKICAgIGVycm9yLmNvZGUgPSBleHBvcnRzLmNvZGVzW2Vycm5vXTsKICAgIHNlbGYuZW1pdCgnZXJyb3InLCBlcnJvcik7CiAgfTsKCiAgdmFyIGxldmVsID0gZXhwb3J0cy5aX0RFRkFVTFRfQ09NUFJFU1NJT047CiAgaWYgKHR5cGVvZiBvcHRzLmxldmVsID09PSAnbnVtYmVyJykgbGV2ZWwgPSBvcHRzLmxldmVsOwoKICB2YXIgc3RyYXRlZ3kgPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWTsKICBpZiAodHlwZW9mIG9wdHMuc3RyYXRlZ3kgPT09ICdudW1iZXInKSBzdHJhdGVneSA9IG9wdHMuc3RyYXRlZ3k7CgogIHRoaXMuX2hhbmRsZS5pbml0KG9wdHMud2luZG93Qml0cyB8fCBleHBvcnRzLlpfREVGQVVMVF9XSU5ET1dCSVRTLCBsZXZlbCwgb3B0cy5tZW1MZXZlbCB8fCBleHBvcnRzLlpfREVGQVVMVF9NRU1MRVZFTCwgc3RyYXRlZ3ksIG9wdHMuZGljdGlvbmFyeSk7CgogIHRoaXMuX2J1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSh0aGlzLl9jaHVua1NpemUpOwogIHRoaXMuX29mZnNldCA9IDA7CiAgdGhpcy5fbGV2ZWwgPSBsZXZlbDsKICB0aGlzLl9zdHJhdGVneSA9IHN0cmF0ZWd5OwoKICB0aGlzLm9uY2UoJ2VuZCcsIHRoaXMuY2xvc2UpOwoKICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ19jbG9zZWQnLCB7CiAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuICFfdGhpcy5faGFuZGxlOwogICAgfSwKICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKfQoKdXRpbC5pbmhlcml0cyhabGliLCBUcmFuc2Zvcm0pOwoKWmxpYi5wcm90b3R5cGUucGFyYW1zID0gZnVuY3Rpb24gKGxldmVsLCBzdHJhdGVneSwgY2FsbGJhY2spIHsKICBpZiAobGV2ZWwgPCBleHBvcnRzLlpfTUlOX0xFVkVMIHx8IGxldmVsID4gZXhwb3J0cy5aX01BWF9MRVZFTCkgewogICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgY29tcHJlc3Npb24gbGV2ZWw6ICcgKyBsZXZlbCk7CiAgfQogIGlmIChzdHJhdGVneSAhPSBleHBvcnRzLlpfRklMVEVSRUQgJiYgc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0hVRkZNQU5fT05MWSAmJiBzdHJhdGVneSAhPSBleHBvcnRzLlpfUkxFICYmIHN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9GSVhFRCAmJiBzdHJhdGVneSAhPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWSkgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBzdHJhdGVneTogJyArIHN0cmF0ZWd5KTsKICB9CgogIGlmICh0aGlzLl9sZXZlbCAhPT0gbGV2ZWwgfHwgdGhpcy5fc3RyYXRlZ3kgIT09IHN0cmF0ZWd5KSB7CiAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICB0aGlzLmZsdXNoKGJpbmRpbmcuWl9TWU5DX0ZMVVNILCBmdW5jdGlvbiAoKSB7CiAgICAgIGFzc2VydChzZWxmLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7CiAgICAgIHNlbGYuX2hhbmRsZS5wYXJhbXMobGV2ZWwsIHN0cmF0ZWd5KTsKICAgICAgaWYgKCFzZWxmLl9oYWRFcnJvcikgewogICAgICAgIHNlbGYuX2xldmVsID0gbGV2ZWw7CiAgICAgICAgc2VsZi5fc3RyYXRlZ3kgPSBzdHJhdGVneTsKICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7CiAgICAgIH0KICAgIH0pOwogIH0gZWxzZSB7CiAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTsKICB9Cn07CgpabGliLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHsKICBhc3NlcnQodGhpcy5faGFuZGxlLCAnemxpYiBiaW5kaW5nIGNsb3NlZCcpOwogIHJldHVybiB0aGlzLl9oYW5kbGUucmVzZXQoKTsKfTsKCi8vIFRoaXMgaXMgdGhlIF9mbHVzaCBmdW5jdGlvbiBjYWxsZWQgYnkgdGhlIHRyYW5zZm9ybSBjbGFzcywKLy8gaW50ZXJuYWxseSwgd2hlbiB0aGUgbGFzdCBjaHVuayBoYXMgYmVlbiB3cml0dGVuLgpabGliLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICB0aGlzLl90cmFuc2Zvcm0oQnVmZmVyLmFsbG9jKDApLCAnJywgY2FsbGJhY2spOwp9OwoKWmxpYi5wcm90b3R5cGUuZmx1c2ggPSBmdW5jdGlvbiAoa2luZCwgY2FsbGJhY2spIHsKICB2YXIgX3RoaXMyID0gdGhpczsKCiAgdmFyIHdzID0gdGhpcy5fd3JpdGFibGVTdGF0ZTsKCiAgaWYgKHR5cGVvZiBraW5kID09PSAnZnVuY3Rpb24nIHx8IGtpbmQgPT09IHVuZGVmaW5lZCAmJiAhY2FsbGJhY2spIHsKICAgIGNhbGxiYWNrID0ga2luZDsKICAgIGtpbmQgPSBiaW5kaW5nLlpfRlVMTF9GTFVTSDsKICB9CgogIGlmICh3cy5lbmRlZCkgewogICAgaWYgKGNhbGxiYWNrKSBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTsKICB9IGVsc2UgaWYgKHdzLmVuZGluZykgewogICAgaWYgKGNhbGxiYWNrKSB0aGlzLm9uY2UoJ2VuZCcsIGNhbGxiYWNrKTsKICB9IGVsc2UgaWYgKHdzLm5lZWREcmFpbikgewogICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgIHRoaXMub25jZSgnZHJhaW4nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmV0dXJuIF90aGlzMi5mbHVzaChraW5kLCBjYWxsYmFjayk7CiAgICAgIH0pOwogICAgfQogIH0gZWxzZSB7CiAgICB0aGlzLl9mbHVzaEZsYWcgPSBraW5kOwogICAgdGhpcy53cml0ZShCdWZmZXIuYWxsb2MoMCksICcnLCBjYWxsYmFjayk7CiAgfQp9OwoKWmxpYi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICBfY2xvc2UodGhpcywgY2FsbGJhY2spOwogIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTlQsIHRoaXMpOwp9OwoKZnVuY3Rpb24gX2Nsb3NlKGVuZ2luZSwgY2FsbGJhY2spIHsKICBpZiAoY2FsbGJhY2spIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2spOwoKICAvLyBDYWxsZXIgbWF5IGludm9rZSAuY2xvc2UgYWZ0ZXIgYSB6bGliIGVycm9yICh3aGljaCB3aWxsIG51bGwgX2hhbmRsZSkuCiAgaWYgKCFlbmdpbmUuX2hhbmRsZSkgcmV0dXJuOwoKICBlbmdpbmUuX2hhbmRsZS5jbG9zZSgpOwogIGVuZ2luZS5faGFuZGxlID0gbnVsbDsKfQoKZnVuY3Rpb24gZW1pdENsb3NlTlQoc2VsZikgewogIHNlbGYuZW1pdCgnY2xvc2UnKTsKfQoKWmxpYi5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgdmFyIGZsdXNoRmxhZzsKICB2YXIgd3MgPSB0aGlzLl93cml0YWJsZVN0YXRlOwogIHZhciBlbmRpbmcgPSB3cy5lbmRpbmcgfHwgd3MuZW5kZWQ7CiAgdmFyIGxhc3QgPSBlbmRpbmcgJiYgKCFjaHVuayB8fCB3cy5sZW5ndGggPT09IGNodW5rLmxlbmd0aCk7CgogIGlmIChjaHVuayAhPT0gbnVsbCAmJiAhQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkgcmV0dXJuIGNiKG5ldyBFcnJvcignaW52YWxpZCBpbnB1dCcpKTsKCiAgaWYgKCF0aGlzLl9oYW5kbGUpIHJldHVybiBjYihuZXcgRXJyb3IoJ3psaWIgYmluZGluZyBjbG9zZWQnKSk7CgogIC8vIElmIGl0J3MgdGhlIGxhc3QgY2h1bmssIG9yIGEgZmluYWwgZmx1c2gsIHdlIHVzZSB0aGUgWl9GSU5JU0ggZmx1c2ggZmxhZwogIC8vIChvciB3aGF0ZXZlciBmbGFnIHdhcyBwcm92aWRlZCB1c2luZyBvcHRzLmZpbmlzaEZsdXNoKS4KICAvLyBJZiBpdCdzIGV4cGxpY2l0bHkgZmx1c2hpbmcgYXQgc29tZSBvdGhlciB0aW1lLCB0aGVuIHdlIHVzZQogIC8vIFpfRlVMTF9GTFVTSC4gT3RoZXJ3aXNlLCB1c2UgWl9OT19GTFVTSCBmb3IgbWF4aW11bSBjb21wcmVzc2lvbgogIC8vIGdvb2RuZXNzLgogIGlmIChsYXN0KSBmbHVzaEZsYWcgPSB0aGlzLl9maW5pc2hGbHVzaEZsYWc7ZWxzZSB7CiAgICBmbHVzaEZsYWcgPSB0aGlzLl9mbHVzaEZsYWc7CiAgICAvLyBvbmNlIHdlJ3ZlIGZsdXNoZWQgdGhlIGxhc3Qgb2YgdGhlIHF1ZXVlLCBzdG9wIGZsdXNoaW5nIGFuZAogICAgLy8gZ28gYmFjayB0byB0aGUgbm9ybWFsIGJlaGF2aW9yLgogICAgaWYgKGNodW5rLmxlbmd0aCA+PSB3cy5sZW5ndGgpIHsKICAgICAgdGhpcy5fZmx1c2hGbGFnID0gdGhpcy5fb3B0cy5mbHVzaCB8fCBiaW5kaW5nLlpfTk9fRkxVU0g7CiAgICB9CiAgfQoKICB0aGlzLl9wcm9jZXNzQ2h1bmsoY2h1bmssIGZsdXNoRmxhZywgY2IpOwp9OwoKWmxpYi5wcm90b3R5cGUuX3Byb2Nlc3NDaHVuayA9IGZ1bmN0aW9uIChjaHVuaywgZmx1c2hGbGFnLCBjYikgewogIHZhciBhdmFpbEluQmVmb3JlID0gY2h1bmsgJiYgY2h1bmsubGVuZ3RoOwogIHZhciBhdmFpbE91dEJlZm9yZSA9IHRoaXMuX2NodW5rU2l6ZSAtIHRoaXMuX29mZnNldDsKICB2YXIgaW5PZmYgPSAwOwoKICB2YXIgc2VsZiA9IHRoaXM7CgogIHZhciBhc3luYyA9IHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJzsKCiAgaWYgKCFhc3luYykgewogICAgdmFyIGJ1ZmZlcnMgPSBbXTsKICAgIHZhciBucmVhZCA9IDA7CgogICAgdmFyIGVycm9yOwogICAgdGhpcy5vbignZXJyb3InLCBmdW5jdGlvbiAoZXIpIHsKICAgICAgZXJyb3IgPSBlcjsKICAgIH0pOwoKICAgIGFzc2VydCh0aGlzLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7CiAgICBkbyB7CiAgICAgIHZhciByZXMgPSB0aGlzLl9oYW5kbGUud3JpdGVTeW5jKGZsdXNoRmxhZywgY2h1bmssIC8vIGluCiAgICAgIGluT2ZmLCAvLyBpbl9vZmYKICAgICAgYXZhaWxJbkJlZm9yZSwgLy8gaW5fbGVuCiAgICAgIHRoaXMuX2J1ZmZlciwgLy8gb3V0CiAgICAgIHRoaXMuX29mZnNldCwgLy9vdXRfb2ZmCiAgICAgIGF2YWlsT3V0QmVmb3JlKTsgLy8gb3V0X2xlbgogICAgfSB3aGlsZSAoIXRoaXMuX2hhZEVycm9yICYmIGNhbGxiYWNrKHJlc1swXSwgcmVzWzFdKSk7CgogICAgaWYgKHRoaXMuX2hhZEVycm9yKSB7CiAgICAgIHRocm93IGVycm9yOwogICAgfQoKICAgIGlmIChucmVhZCA+PSBrTWF4TGVuZ3RoKSB7CiAgICAgIF9jbG9zZSh0aGlzKTsKICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3Ioa1JhbmdlRXJyb3JNZXNzYWdlKTsKICAgIH0KCiAgICB2YXIgYnVmID0gQnVmZmVyLmNvbmNhdChidWZmZXJzLCBucmVhZCk7CiAgICBfY2xvc2UodGhpcyk7CgogICAgcmV0dXJuIGJ1ZjsKICB9CgogIGFzc2VydCh0aGlzLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7CiAgdmFyIHJlcSA9IHRoaXMuX2hhbmRsZS53cml0ZShmbHVzaEZsYWcsIGNodW5rLCAvLyBpbgogIGluT2ZmLCAvLyBpbl9vZmYKICBhdmFpbEluQmVmb3JlLCAvLyBpbl9sZW4KICB0aGlzLl9idWZmZXIsIC8vIG91dAogIHRoaXMuX29mZnNldCwgLy9vdXRfb2ZmCiAgYXZhaWxPdXRCZWZvcmUpOyAvLyBvdXRfbGVuCgogIHJlcS5idWZmZXIgPSBjaHVuazsKICByZXEuY2FsbGJhY2sgPSBjYWxsYmFjazsKCiAgZnVuY3Rpb24gY2FsbGJhY2soYXZhaWxJbkFmdGVyLCBhdmFpbE91dEFmdGVyKSB7CiAgICAvLyBXaGVuIHRoZSBjYWxsYmFjayBpcyB1c2VkIGluIGFuIGFzeW5jIHdyaXRlLCB0aGUgY2FsbGJhY2sncwogICAgLy8gY29udGV4dCBpcyB0aGUgYHJlcWAgb2JqZWN0IHRoYXQgd2FzIGNyZWF0ZWQuIFRoZSByZXEgb2JqZWN0CiAgICAvLyBpcyA9PT0gdGhpcy5faGFuZGxlLCBhbmQgdGhhdCdzIHdoeSBpdCdzIGltcG9ydGFudCB0byBudWxsCiAgICAvLyBvdXQgdGhlIHZhbHVlcyBhZnRlciB0aGV5IGFyZSBkb25lIGJlaW5nIHVzZWQuIGB0aGlzLl9oYW5kbGVgCiAgICAvLyBjYW4gc3RheSBpbiBtZW1vcnkgbG9uZ2VyIHRoYW4gdGhlIGNhbGxiYWNrIGFuZCBidWZmZXIgYXJlIG5lZWRlZC4KICAgIGlmICh0aGlzKSB7CiAgICAgIHRoaXMuYnVmZmVyID0gbnVsbDsKICAgICAgdGhpcy5jYWxsYmFjayA9IG51bGw7CiAgICB9CgogICAgaWYgKHNlbGYuX2hhZEVycm9yKSByZXR1cm47CgogICAgdmFyIGhhdmUgPSBhdmFpbE91dEJlZm9yZSAtIGF2YWlsT3V0QWZ0ZXI7CiAgICBhc3NlcnQoaGF2ZSA+PSAwLCAnaGF2ZSBzaG91bGQgbm90IGdvIGRvd24nKTsKCiAgICBpZiAoaGF2ZSA+IDApIHsKICAgICAgdmFyIG91dCA9IHNlbGYuX2J1ZmZlci5zbGljZShzZWxmLl9vZmZzZXQsIHNlbGYuX29mZnNldCArIGhhdmUpOwogICAgICBzZWxmLl9vZmZzZXQgKz0gaGF2ZTsKICAgICAgLy8gc2VydmUgc29tZSBvdXRwdXQgdG8gdGhlIGNvbnN1bWVyLgogICAgICBpZiAoYXN5bmMpIHsKICAgICAgICBzZWxmLnB1c2gob3V0KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBidWZmZXJzLnB1c2gob3V0KTsKICAgICAgICBucmVhZCArPSBvdXQubGVuZ3RoOwogICAgICB9CiAgICB9CgogICAgLy8gZXhoYXVzdGVkIHRoZSBvdXRwdXQgYnVmZmVyLCBvciB1c2VkIGFsbCB0aGUgaW5wdXQgY3JlYXRlIGEgbmV3IG9uZS4KICAgIGlmIChhdmFpbE91dEFmdGVyID09PSAwIHx8IHNlbGYuX29mZnNldCA+PSBzZWxmLl9jaHVua1NpemUpIHsKICAgICAgYXZhaWxPdXRCZWZvcmUgPSBzZWxmLl9jaHVua1NpemU7CiAgICAgIHNlbGYuX29mZnNldCA9IDA7CiAgICAgIHNlbGYuX2J1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShzZWxmLl9jaHVua1NpemUpOwogICAgfQoKICAgIGlmIChhdmFpbE91dEFmdGVyID09PSAwKSB7CiAgICAgIC8vIE5vdCBhY3R1YWxseSBkb25lLiAgTmVlZCB0byByZXByb2Nlc3MuCiAgICAgIC8vIEFsc28sIHVwZGF0ZSB0aGUgYXZhaWxJbkJlZm9yZSB0byB0aGUgYXZhaWxJbkFmdGVyIHZhbHVlLAogICAgICAvLyBzbyB0aGF0IGlmIHdlIGhhdmUgdG8gaGl0IGl0IGEgdGhpcmQgKGZvdXJ0aCwgZXRjLikgdGltZSwKICAgICAgLy8gaXQnbGwgaGF2ZSB0aGUgY29ycmVjdCBieXRlIGNvdW50cy4KICAgICAgaW5PZmYgKz0gYXZhaWxJbkJlZm9yZSAtIGF2YWlsSW5BZnRlcjsKICAgICAgYXZhaWxJbkJlZm9yZSA9IGF2YWlsSW5BZnRlcjsKCiAgICAgIGlmICghYXN5bmMpIHJldHVybiB0cnVlOwoKICAgICAgdmFyIG5ld1JlcSA9IHNlbGYuX2hhbmRsZS53cml0ZShmbHVzaEZsYWcsIGNodW5rLCBpbk9mZiwgYXZhaWxJbkJlZm9yZSwgc2VsZi5fYnVmZmVyLCBzZWxmLl9vZmZzZXQsIHNlbGYuX2NodW5rU2l6ZSk7CiAgICAgIG5ld1JlcS5jYWxsYmFjayA9IGNhbGxiYWNrOyAvLyB0aGlzIHNhbWUgZnVuY3Rpb24KICAgICAgbmV3UmVxLmJ1ZmZlciA9IGNodW5rOwogICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCFhc3luYykgcmV0dXJuIGZhbHNlOwoKICAgIC8vIGZpbmlzaGVkIHdpdGggdGhlIGNodW5rLgogICAgY2IoKTsKICB9Cn07Cgp1dGlsLmluaGVyaXRzKERlZmxhdGUsIFpsaWIpOwp1dGlsLmluaGVyaXRzKEluZmxhdGUsIFpsaWIpOwp1dGlsLmluaGVyaXRzKEd6aXAsIFpsaWIpOwp1dGlsLmluaGVyaXRzKEd1bnppcCwgWmxpYik7CnV0aWwuaW5oZXJpdHMoRGVmbGF0ZVJhdywgWmxpYik7CnV0aWwuaW5oZXJpdHMoSW5mbGF0ZVJhdywgWmxpYik7CnV0aWwuaW5oZXJpdHMoVW56aXAsIFpsaWIpOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxMSkpKQoKLyoqKi8gfSksCi8qIDQ5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwsIHByb2Nlc3MpIHsvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy4KLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQovLyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAovLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUKLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwovLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgovLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCgp2YXIgZm9ybWF0UmVnRXhwID0gLyVbc2RqJV0vZzsKZXhwb3J0cy5mb3JtYXQgPSBmdW5jdGlvbihmKSB7CiAgaWYgKCFpc1N0cmluZyhmKSkgewogICAgdmFyIG9iamVjdHMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIG9iamVjdHMucHVzaChpbnNwZWN0KGFyZ3VtZW50c1tpXSkpOwogICAgfQogICAgcmV0dXJuIG9iamVjdHMuam9pbignICcpOwogIH0KCiAgdmFyIGkgPSAxOwogIHZhciBhcmdzID0gYXJndW1lbnRzOwogIHZhciBsZW4gPSBhcmdzLmxlbmd0aDsKICB2YXIgc3RyID0gU3RyaW5nKGYpLnJlcGxhY2UoZm9ybWF0UmVnRXhwLCBmdW5jdGlvbih4KSB7CiAgICBpZiAoeCA9PT0gJyUlJykgcmV0dXJuICclJzsKICAgIGlmIChpID49IGxlbikgcmV0dXJuIHg7CiAgICBzd2l0Y2ggKHgpIHsKICAgICAgY2FzZSAnJXMnOiByZXR1cm4gU3RyaW5nKGFyZ3NbaSsrXSk7CiAgICAgIGNhc2UgJyVkJzogcmV0dXJuIE51bWJlcihhcmdzW2krK10pOwogICAgICBjYXNlICclaic6CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcmdzW2krK10pOwogICAgICAgIH0gY2F0Y2ggKF8pIHsKICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7CiAgICAgICAgfQogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiB4OwogICAgfQogIH0pOwogIGZvciAodmFyIHggPSBhcmdzW2ldOyBpIDwgbGVuOyB4ID0gYXJnc1srK2ldKSB7CiAgICBpZiAoaXNOdWxsKHgpIHx8ICFpc09iamVjdCh4KSkgewogICAgICBzdHIgKz0gJyAnICsgeDsKICAgIH0gZWxzZSB7CiAgICAgIHN0ciArPSAnICcgKyBpbnNwZWN0KHgpOwogICAgfQogIH0KICByZXR1cm4gc3RyOwp9OwoKCi8vIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuCi8vIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuCi8vIElmIC0tbm8tZGVwcmVjYXRpb24gaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuCmV4cG9ydHMuZGVwcmVjYXRlID0gZnVuY3Rpb24oZm4sIG1zZykgewogIC8vIEFsbG93IGZvciBkZXByZWNhdGluZyB0aGluZ3MgaW4gdGhlIHByb2Nlc3Mgb2Ygc3RhcnRpbmcgdXAuCiAgaWYgKGlzVW5kZWZpbmVkKGdsb2JhbC5wcm9jZXNzKSkgewogICAgcmV0dXJuIGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gZXhwb3J0cy5kZXByZWNhdGUoZm4sIG1zZykuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgIH07CiAgfQoKICBpZiAocHJvY2Vzcy5ub0RlcHJlY2F0aW9uID09PSB0cnVlKSB7CiAgICByZXR1cm4gZm47CiAgfQoKICB2YXIgd2FybmVkID0gZmFsc2U7CiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHsKICAgIGlmICghd2FybmVkKSB7CiAgICAgIGlmIChwcm9jZXNzLnRocm93RGVwcmVjYXRpb24pIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKICAgICAgfSBlbHNlIGlmIChwcm9jZXNzLnRyYWNlRGVwcmVjYXRpb24pIHsKICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY29uc29sZS5lcnJvcihtc2cpOwogICAgICB9CiAgICAgIHdhcm5lZCA9IHRydWU7CiAgICB9CiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICB9CgogIHJldHVybiBkZXByZWNhdGVkOwp9OwoKCnZhciBkZWJ1Z3MgPSB7fTsKdmFyIGRlYnVnRW52aXJvbjsKZXhwb3J0cy5kZWJ1Z2xvZyA9IGZ1bmN0aW9uKHNldCkgewogIGlmIChpc1VuZGVmaW5lZChkZWJ1Z0Vudmlyb24pKQogICAgZGVidWdFbnZpcm9uID0gcHJvY2Vzcy5lbnYuTk9ERV9ERUJVRyB8fCAnJzsKICBzZXQgPSBzZXQudG9VcHBlckNhc2UoKTsKICBpZiAoIWRlYnVnc1tzZXRdKSB7CiAgICBpZiAobmV3IFJlZ0V4cCgnXFxiJyArIHNldCArICdcXGInLCAnaScpLnRlc3QoZGVidWdFbnZpcm9uKSkgewogICAgICB2YXIgcGlkID0gcHJvY2Vzcy5waWQ7CiAgICAgIGRlYnVnc1tzZXRdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIG1zZyA9IGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cyk7CiAgICAgICAgY29uc29sZS5lcnJvcignJXMgJWQ6ICVzJywgc2V0LCBwaWQsIG1zZyk7CiAgICAgIH07CiAgICB9IGVsc2UgewogICAgICBkZWJ1Z3Nbc2V0XSA9IGZ1bmN0aW9uKCkge307CiAgICB9CiAgfQogIHJldHVybiBkZWJ1Z3Nbc2V0XTsKfTsKCgovKioKICogRWNob3MgdGhlIHZhbHVlIG9mIGEgdmFsdWUuIFRyeXMgdG8gcHJpbnQgdGhlIHZhbHVlIG91dAogKiBpbiB0aGUgYmVzdCB3YXkgcG9zc2libGUgZ2l2ZW4gdGhlIGRpZmZlcmVudCB0eXBlcy4KICoKICogQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIHByaW50IG91dC4KICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uYWwgb3B0aW9ucyBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIG91dHB1dC4KICovCi8qIGxlZ2FjeTogb2JqLCBzaG93SGlkZGVuLCBkZXB0aCwgY29sb3JzKi8KZnVuY3Rpb24gaW5zcGVjdChvYmosIG9wdHMpIHsKICAvLyBkZWZhdWx0IG9wdGlvbnMKICB2YXIgY3R4ID0gewogICAgc2VlbjogW10sCiAgICBzdHlsaXplOiBzdHlsaXplTm9Db2xvcgogIH07CiAgLy8gbGVnYWN5Li4uCiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMykgY3R4LmRlcHRoID0gYXJndW1lbnRzWzJdOwogIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDQpIGN0eC5jb2xvcnMgPSBhcmd1bWVudHNbM107CiAgaWYgKGlzQm9vbGVhbihvcHRzKSkgewogICAgLy8gbGVnYWN5Li4uCiAgICBjdHguc2hvd0hpZGRlbiA9IG9wdHM7CiAgfSBlbHNlIGlmIChvcHRzKSB7CiAgICAvLyBnb3QgYW4gIm9wdGlvbnMiIG9iamVjdAogICAgZXhwb3J0cy5fZXh0ZW5kKGN0eCwgb3B0cyk7CiAgfQogIC8vIHNldCBkZWZhdWx0IG9wdGlvbnMKICBpZiAoaXNVbmRlZmluZWQoY3R4LnNob3dIaWRkZW4pKSBjdHguc2hvd0hpZGRlbiA9IGZhbHNlOwogIGlmIChpc1VuZGVmaW5lZChjdHguZGVwdGgpKSBjdHguZGVwdGggPSAyOwogIGlmIChpc1VuZGVmaW5lZChjdHguY29sb3JzKSkgY3R4LmNvbG9ycyA9IGZhbHNlOwogIGlmIChpc1VuZGVmaW5lZChjdHguY3VzdG9tSW5zcGVjdCkpIGN0eC5jdXN0b21JbnNwZWN0ID0gdHJ1ZTsKICBpZiAoY3R4LmNvbG9ycykgY3R4LnN0eWxpemUgPSBzdHlsaXplV2l0aENvbG9yOwogIHJldHVybiBmb3JtYXRWYWx1ZShjdHgsIG9iaiwgY3R4LmRlcHRoKTsKfQpleHBvcnRzLmluc3BlY3QgPSBpbnNwZWN0OwoKCi8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSNncmFwaGljcwppbnNwZWN0LmNvbG9ycyA9IHsKICAnYm9sZCcgOiBbMSwgMjJdLAogICdpdGFsaWMnIDogWzMsIDIzXSwKICAndW5kZXJsaW5lJyA6IFs0LCAyNF0sCiAgJ2ludmVyc2UnIDogWzcsIDI3XSwKICAnd2hpdGUnIDogWzM3LCAzOV0sCiAgJ2dyZXknIDogWzkwLCAzOV0sCiAgJ2JsYWNrJyA6IFszMCwgMzldLAogICdibHVlJyA6IFszNCwgMzldLAogICdjeWFuJyA6IFszNiwgMzldLAogICdncmVlbicgOiBbMzIsIDM5XSwKICAnbWFnZW50YScgOiBbMzUsIDM5XSwKICAncmVkJyA6IFszMSwgMzldLAogICd5ZWxsb3cnIDogWzMzLCAzOV0KfTsKCi8vIERvbid0IHVzZSAnYmx1ZScgbm90IHZpc2libGUgb24gY21kLmV4ZQppbnNwZWN0LnN0eWxlcyA9IHsKICAnc3BlY2lhbCc6ICdjeWFuJywKICAnbnVtYmVyJzogJ3llbGxvdycsCiAgJ2Jvb2xlYW4nOiAneWVsbG93JywKICAndW5kZWZpbmVkJzogJ2dyZXknLAogICdudWxsJzogJ2JvbGQnLAogICdzdHJpbmcnOiAnZ3JlZW4nLAogICdkYXRlJzogJ21hZ2VudGEnLAogIC8vICJuYW1lIjogaW50ZW50aW9uYWxseSBub3Qgc3R5bGluZwogICdyZWdleHAnOiAncmVkJwp9OwoKCmZ1bmN0aW9uIHN0eWxpemVXaXRoQ29sb3Ioc3RyLCBzdHlsZVR5cGUpIHsKICB2YXIgc3R5bGUgPSBpbnNwZWN0LnN0eWxlc1tzdHlsZVR5cGVdOwoKICBpZiAoc3R5bGUpIHsKICAgIHJldHVybiAnXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMF0gKyAnbScgKyBzdHIgKwogICAgICAgICAgICdcdTAwMWJbJyArIGluc3BlY3QuY29sb3JzW3N0eWxlXVsxXSArICdtJzsKICB9IGVsc2UgewogICAgcmV0dXJuIHN0cjsKICB9Cn0KCgpmdW5jdGlvbiBzdHlsaXplTm9Db2xvcihzdHIsIHN0eWxlVHlwZSkgewogIHJldHVybiBzdHI7Cn0KCgpmdW5jdGlvbiBhcnJheVRvSGFzaChhcnJheSkgewogIHZhciBoYXNoID0ge307CgogIGFycmF5LmZvckVhY2goZnVuY3Rpb24odmFsLCBpZHgpIHsKICAgIGhhc2hbdmFsXSA9IHRydWU7CiAgfSk7CgogIHJldHVybiBoYXNoOwp9CgoKZnVuY3Rpb24gZm9ybWF0VmFsdWUoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzKSB7CiAgLy8gUHJvdmlkZSBhIGhvb2sgZm9yIHVzZXItc3BlY2lmaWVkIGluc3BlY3QgZnVuY3Rpb25zLgogIC8vIENoZWNrIHRoYXQgdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggYW4gaW5zcGVjdCBmdW5jdGlvbiBvbiBpdAogIGlmIChjdHguY3VzdG9tSW5zcGVjdCAmJgogICAgICB2YWx1ZSAmJgogICAgICBpc0Z1bmN0aW9uKHZhbHVlLmluc3BlY3QpICYmCiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHV0aWwgbW9kdWxlLCBpdCdzIGluc3BlY3QgZnVuY3Rpb24gaXMgc3BlY2lhbAogICAgICB2YWx1ZS5pbnNwZWN0ICE9PSBleHBvcnRzLmluc3BlY3QgJiYKICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suCiAgICAgICEodmFsdWUuY29uc3RydWN0b3IgJiYgdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlID09PSB2YWx1ZSkpIHsKICAgIHZhciByZXQgPSB2YWx1ZS5pbnNwZWN0KHJlY3Vyc2VUaW1lcywgY3R4KTsKICAgIGlmICghaXNTdHJpbmcocmV0KSkgewogICAgICByZXQgPSBmb3JtYXRWYWx1ZShjdHgsIHJldCwgcmVjdXJzZVRpbWVzKTsKICAgIH0KICAgIHJldHVybiByZXQ7CiAgfQoKICAvLyBQcmltaXRpdmUgdHlwZXMgY2Fubm90IGhhdmUgcHJvcGVydGllcwogIHZhciBwcmltaXRpdmUgPSBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSk7CiAgaWYgKHByaW1pdGl2ZSkgewogICAgcmV0dXJuIHByaW1pdGl2ZTsKICB9CgogIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC4KICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTsKICB2YXIgdmlzaWJsZUtleXMgPSBhcnJheVRvSGFzaChrZXlzKTsKCiAgaWYgKGN0eC5zaG93SGlkZGVuKSB7CiAgICBrZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModmFsdWUpOwogIH0KCiAgLy8gSUUgZG9lc24ndCBtYWtlIGVycm9yIGZpZWxkcyBub24tZW51bWVyYWJsZQogIC8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9pZS9kd3c1MnNidCh2PXZzLjk0KS5hc3B4CiAgaWYgKGlzRXJyb3IodmFsdWUpCiAgICAgICYmIChrZXlzLmluZGV4T2YoJ21lc3NhZ2UnKSA+PSAwIHx8IGtleXMuaW5kZXhPZignZGVzY3JpcHRpb24nKSA+PSAwKSkgewogICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTsKICB9CgogIC8vIFNvbWUgdHlwZSBvZiBvYmplY3Qgd2l0aG91dCBwcm9wZXJ0aWVzIGNhbiBiZSBzaG9ydGN1dHRlZC4KICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHsKICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkgewogICAgICB2YXIgbmFtZSA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnOwogICAgICByZXR1cm4gY3R4LnN0eWxpemUoJ1tGdW5jdGlvbicgKyBuYW1lICsgJ10nLCAnc3BlY2lhbCcpOwogICAgfQogICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkgewogICAgICByZXR1cm4gY3R4LnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ3JlZ2V4cCcpOwogICAgfQogICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHsKICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAnZGF0ZScpOwogICAgfQogICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7CiAgICAgIHJldHVybiBmb3JtYXRFcnJvcih2YWx1ZSk7CiAgICB9CiAgfQoKICB2YXIgYmFzZSA9ICcnLCBhcnJheSA9IGZhbHNlLCBicmFjZXMgPSBbJ3snLCAnfSddOwoKICAvLyBNYWtlIEFycmF5IHNheSB0aGF0IHRoZXkgYXJlIEFycmF5CiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7CiAgICBhcnJheSA9IHRydWU7CiAgICBicmFjZXMgPSBbJ1snLCAnXSddOwogIH0KCiAgLy8gTWFrZSBmdW5jdGlvbnMgc2F5IHRoYXQgdGhleSBhcmUgZnVuY3Rpb25zCiAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7CiAgICB2YXIgbiA9IHZhbHVlLm5hbWUgPyAnOiAnICsgdmFsdWUubmFtZSA6ICcnOwogICAgYmFzZSA9ICcgW0Z1bmN0aW9uJyArIG4gKyAnXSc7CiAgfQoKICAvLyBNYWtlIFJlZ0V4cHMgc2F5IHRoYXQgdGhleSBhcmUgUmVnRXhwcwogIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHsKICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpOwogIH0KCiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlCiAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHsKICAgIGJhc2UgPSAnICcgKyBEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKHZhbHVlKTsKICB9CgogIC8vIE1ha2UgZXJyb3Igd2l0aCBtZXNzYWdlIGZpcnN0IHNheSB0aGUgZXJyb3IKICBpZiAoaXNFcnJvcih2YWx1ZSkpIHsKICAgIGJhc2UgPSAnICcgKyBmb3JtYXRFcnJvcih2YWx1ZSk7CiAgfQoKICBpZiAoa2V5cy5sZW5ndGggPT09IDAgJiYgKCFhcnJheSB8fCB2YWx1ZS5sZW5ndGggPT0gMCkpIHsKICAgIHJldHVybiBicmFjZXNbMF0gKyBiYXNlICsgYnJhY2VzWzFdOwogIH0KCiAgaWYgKHJlY3Vyc2VUaW1lcyA8IDApIHsKICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHsKICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpOwogICAgfQogIH0KCiAgY3R4LnNlZW4ucHVzaCh2YWx1ZSk7CgogIHZhciBvdXRwdXQ7CiAgaWYgKGFycmF5KSB7CiAgICBvdXRwdXQgPSBmb3JtYXRBcnJheShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXlzKTsKICB9IGVsc2UgewogICAgb3V0cHV0ID0ga2V5cy5tYXAoZnVuY3Rpb24oa2V5KSB7CiAgICAgIHJldHVybiBmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXksIGFycmF5KTsKICAgIH0pOwogIH0KCiAgY3R4LnNlZW4ucG9wKCk7CgogIHJldHVybiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcyk7Cn0KCgpmdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkgewogIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpCiAgICByZXR1cm4gY3R4LnN0eWxpemUoJ3VuZGVmaW5lZCcsICd1bmRlZmluZWQnKTsKICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7CiAgICB2YXIgc2ltcGxlID0gJ1wnJyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKS5yZXBsYWNlKC9eInwiJC9nLCAnJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLycvZywgIlxcJyIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXCIvZywgJyInKSArICdcJyc7CiAgICByZXR1cm4gY3R4LnN0eWxpemUoc2ltcGxlLCAnc3RyaW5nJyk7CiAgfQogIGlmIChpc051bWJlcih2YWx1ZSkpCiAgICByZXR1cm4gY3R4LnN0eWxpemUoJycgKyB2YWx1ZSwgJ251bWJlcicpOwogIGlmIChpc0Jvb2xlYW4odmFsdWUpKQogICAgcmV0dXJuIGN0eC5zdHlsaXplKCcnICsgdmFsdWUsICdib29sZWFuJyk7CiAgLy8gRm9yIHNvbWUgcmVhc29uIHR5cGVvZiBudWxsIGlzICJvYmplY3QiLCBzbyBzcGVjaWFsIGNhc2UgaGVyZS4KICBpZiAoaXNOdWxsKHZhbHVlKSkKICAgIHJldHVybiBjdHguc3R5bGl6ZSgnbnVsbCcsICdudWxsJyk7Cn0KCgpmdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkgewogIHJldHVybiAnWycgKyBFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgKyAnXSc7Cn0KCgpmdW5jdGlvbiBmb3JtYXRBcnJheShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXlzKSB7CiAgdmFyIG91dHB1dCA9IFtdOwogIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgKytpKSB7CiAgICBpZiAoaGFzT3duUHJvcGVydHkodmFsdWUsIFN0cmluZyhpKSkpIHsKICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywKICAgICAgICAgIFN0cmluZyhpKSwgdHJ1ZSkpOwogICAgfSBlbHNlIHsKICAgICAgb3V0cHV0LnB1c2goJycpOwogICAgfQogIH0KICBrZXlzLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CiAgICBpZiAoIWtleS5tYXRjaCgvXlxkKyQvKSkgewogICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLAogICAgICAgICAga2V5LCB0cnVlKSk7CiAgICB9CiAgfSk7CiAgcmV0dXJuIG91dHB1dDsKfQoKCmZ1bmN0aW9uIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpIHsKICB2YXIgbmFtZSwgc3RyLCBkZXNjOwogIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBrZXkpIHx8IHsgdmFsdWU6IHZhbHVlW2tleV0gfTsKICBpZiAoZGVzYy5nZXQpIHsKICAgIGlmIChkZXNjLnNldCkgewogICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0dldHRlci9TZXR0ZXJdJywgJ3NwZWNpYWwnKTsKICAgIH0gZWxzZSB7CiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyXScsICdzcGVjaWFsJyk7CiAgICB9CiAgfSBlbHNlIHsKICAgIGlmIChkZXNjLnNldCkgewogICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW1NldHRlcl0nLCAnc3BlY2lhbCcpOwogICAgfQogIH0KICBpZiAoIWhhc093blByb3BlcnR5KHZpc2libGVLZXlzLCBrZXkpKSB7CiAgICBuYW1lID0gJ1snICsga2V5ICsgJ10nOwogIH0KICBpZiAoIXN0cikgewogICAgaWYgKGN0eC5zZWVuLmluZGV4T2YoZGVzYy52YWx1ZSkgPCAwKSB7CiAgICAgIGlmIChpc051bGwocmVjdXJzZVRpbWVzKSkgewogICAgICAgIHN0ciA9IGZvcm1hdFZhbHVlKGN0eCwgZGVzYy52YWx1ZSwgbnVsbCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCByZWN1cnNlVGltZXMgLSAxKTsKICAgICAgfQogICAgICBpZiAoc3RyLmluZGV4T2YoJ1xuJykgPiAtMSkgewogICAgICAgIGlmIChhcnJheSkgewogICAgICAgICAgc3RyID0gc3RyLnNwbGl0KCdcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7CiAgICAgICAgICAgIHJldHVybiAnICAnICsgbGluZTsKICAgICAgICAgIH0pLmpvaW4oJ1xuJykuc3Vic3RyKDIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBzdHIgPSAnXG4nICsgc3RyLnNwbGl0KCdcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7CiAgICAgICAgICAgIHJldHVybiAnICAgJyArIGxpbmU7CiAgICAgICAgICB9KS5qb2luKCdcbicpOwogICAgICAgIH0KICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tDaXJjdWxhcl0nLCAnc3BlY2lhbCcpOwogICAgfQogIH0KICBpZiAoaXNVbmRlZmluZWQobmFtZSkpIHsKICAgIGlmIChhcnJheSAmJiBrZXkubWF0Y2goL15cZCskLykpIHsKICAgICAgcmV0dXJuIHN0cjsKICAgIH0KICAgIG5hbWUgPSBKU09OLnN0cmluZ2lmeSgnJyArIGtleSk7CiAgICBpZiAobmFtZS5tYXRjaCgvXiIoW2EtekEtWl9dW2EtekEtWl8wLTldKikiJC8pKSB7CiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cigxLCBuYW1lLmxlbmd0aCAtIDIpOwogICAgICBuYW1lID0gY3R4LnN0eWxpemUobmFtZSwgJ25hbWUnKTsKICAgIH0gZWxzZSB7CiAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoLycvZywgIlxcJyIpCiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcIi9nLCAnIicpCiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyheInwiJCkvZywgIiciKTsKICAgICAgbmFtZSA9IGN0eC5zdHlsaXplKG5hbWUsICdzdHJpbmcnKTsKICAgIH0KICB9CgogIHJldHVybiBuYW1lICsgJzogJyArIHN0cjsKfQoKCmZ1bmN0aW9uIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKSB7CiAgdmFyIG51bUxpbmVzRXN0ID0gMDsKICB2YXIgbGVuZ3RoID0gb3V0cHV0LnJlZHVjZShmdW5jdGlvbihwcmV2LCBjdXIpIHsKICAgIG51bUxpbmVzRXN0Kys7CiAgICBpZiAoY3VyLmluZGV4T2YoJ1xuJykgPj0gMCkgbnVtTGluZXNFc3QrKzsKICAgIHJldHVybiBwcmV2ICsgY3VyLnJlcGxhY2UoL1x1MDAxYlxbXGRcZD9tL2csICcnKS5sZW5ndGggKyAxOwogIH0sIDApOwoKICBpZiAobGVuZ3RoID4gNjApIHsKICAgIHJldHVybiBicmFjZXNbMF0gKwogICAgICAgICAgIChiYXNlID09PSAnJyA/ICcnIDogYmFzZSArICdcbiAnKSArCiAgICAgICAgICAgJyAnICsKICAgICAgICAgICBvdXRwdXQuam9pbignLFxuICAnKSArCiAgICAgICAgICAgJyAnICsKICAgICAgICAgICBicmFjZXNbMV07CiAgfQoKICByZXR1cm4gYnJhY2VzWzBdICsgYmFzZSArICcgJyArIG91dHB1dC5qb2luKCcsICcpICsgJyAnICsgYnJhY2VzWzFdOwp9CgoKLy8gTk9URTogVGhlc2UgdHlwZSBjaGVja2luZyBmdW5jdGlvbnMgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYGluc3RhbmNlb2ZgCi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLgpmdW5jdGlvbiBpc0FycmF5KGFyKSB7CiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXIpOwp9CmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7CgpmdW5jdGlvbiBpc0Jvb2xlYW4oYXJnKSB7CiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJzsKfQpleHBvcnRzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjsKCmZ1bmN0aW9uIGlzTnVsbChhcmcpIHsKICByZXR1cm4gYXJnID09PSBudWxsOwp9CmV4cG9ydHMuaXNOdWxsID0gaXNOdWxsOwoKZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7CiAgcmV0dXJuIGFyZyA9PSBudWxsOwp9CmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDsKCmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykgewogIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJzsKfQpleHBvcnRzLmlzTnVtYmVyID0gaXNOdW1iZXI7CgpmdW5jdGlvbiBpc1N0cmluZyhhcmcpIHsKICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZyc7Cn0KZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nOwoKZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7CiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnOwp9CmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDsKCmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykgewogIHJldHVybiBhcmcgPT09IHZvaWQgMDsKfQpleHBvcnRzLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7CgpmdW5jdGlvbiBpc1JlZ0V4cChyZSkgewogIHJldHVybiBpc09iamVjdChyZSkgJiYgb2JqZWN0VG9TdHJpbmcocmUpID09PSAnW29iamVjdCBSZWdFeHBdJzsKfQpleHBvcnRzLmlzUmVnRXhwID0gaXNSZWdFeHA7CgpmdW5jdGlvbiBpc09iamVjdChhcmcpIHsKICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsOwp9CmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDsKCmZ1bmN0aW9uIGlzRGF0ZShkKSB7CiAgcmV0dXJuIGlzT2JqZWN0KGQpICYmIG9iamVjdFRvU3RyaW5nKGQpID09PSAnW29iamVjdCBEYXRlXSc7Cn0KZXhwb3J0cy5pc0RhdGUgPSBpc0RhdGU7CgpmdW5jdGlvbiBpc0Vycm9yKGUpIHsKICByZXR1cm4gaXNPYmplY3QoZSkgJiYKICAgICAgKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7Cn0KZXhwb3J0cy5pc0Vycm9yID0gaXNFcnJvcjsKCmZ1bmN0aW9uIGlzRnVuY3Rpb24oYXJnKSB7CiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7Cn0KZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjsKCmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykgewogIHJldHVybiBhcmcgPT09IG51bGwgfHwKICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nIHx8CiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8CiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8CiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnIHx8ICAvLyBFUzYgc3ltYm9sCiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnOwp9CmV4cG9ydHMuaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZTsKCmV4cG9ydHMuaXNCdWZmZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1MSk7CgpmdW5jdGlvbiBvYmplY3RUb1N0cmluZyhvKSB7CiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTsKfQoKCmZ1bmN0aW9uIHBhZChuKSB7CiAgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4udG9TdHJpbmcoMTApIDogbi50b1N0cmluZygxMCk7Cn0KCgp2YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsCiAgICAgICAgICAgICAgJ09jdCcsICdOb3YnLCAnRGVjJ107CgovLyAyNiBGZWIgMTY6MTk6MzQKZnVuY3Rpb24gdGltZXN0YW1wKCkgewogIHZhciBkID0gbmV3IERhdGUoKTsKICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSwKICAgICAgICAgICAgICBwYWQoZC5nZXRNaW51dGVzKCkpLAogICAgICAgICAgICAgIHBhZChkLmdldFNlY29uZHMoKSldLmpvaW4oJzonKTsKICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpOwp9CgoKLy8gbG9nIGlzIGp1c3QgYSB0aGluIHdyYXBwZXIgdG8gY29uc29sZS5sb2cgdGhhdCBwcmVwZW5kcyBhIHRpbWVzdGFtcApleHBvcnRzLmxvZyA9IGZ1bmN0aW9uKCkgewogIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cykpOwp9OwoKCi8qKgogKiBJbmhlcml0IHRoZSBwcm90b3R5cGUgbWV0aG9kcyBmcm9tIG9uZSBjb25zdHJ1Y3RvciBpbnRvIGFub3RoZXIuCiAqCiAqIFRoZSBGdW5jdGlvbi5wcm90b3R5cGUuaW5oZXJpdHMgZnJvbSBsYW5nLmpzIHJld3JpdHRlbiBhcyBhIHN0YW5kYWxvbmUKICogZnVuY3Rpb24gKG5vdCBvbiBGdW5jdGlvbi5wcm90b3R5cGUpLiBOT1RFOiBJZiB0aGlzIGZpbGUgaXMgdG8gYmUgbG9hZGVkCiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlCiAqIGZ1bmN0aW9ucyBhcyBwcm90b3R5cGUgc2V0dXAgdXNpbmcgbm9ybWFsIEphdmFTY3JpcHQgZG9lcyBub3Qgd29yayBhcwogKiBleHBlY3RlZCBkdXJpbmcgYm9vdHN0cmFwcGluZyAoc2VlIG1pcnJvci5qcyBpbiByMTE0OTAzKS4KICoKICogQHBhcmFtIHtmdW5jdGlvbn0gY3RvciBDb25zdHJ1Y3RvciBmdW5jdGlvbiB3aGljaCBuZWVkcyB0byBpbmhlcml0IHRoZQogKiAgICAgcHJvdG90eXBlLgogKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS4KICovCmV4cG9ydHMuaW5oZXJpdHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1Mik7CgpleHBvcnRzLl9leHRlbmQgPSBmdW5jdGlvbihvcmlnaW4sIGFkZCkgewogIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIGFkZCBpc24ndCBhbiBvYmplY3QKICBpZiAoIWFkZCB8fCAhaXNPYmplY3QoYWRkKSkgcmV0dXJuIG9yaWdpbjsKCiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhZGQpOwogIHZhciBpID0ga2V5cy5sZW5ndGg7CiAgd2hpbGUgKGktLSkgewogICAgb3JpZ2luW2tleXNbaV1dID0gYWRkW2tleXNbaV1dOwogIH0KICByZXR1cm4gb3JpZ2luOwp9OwoKZnVuY3Rpb24gaGFzT3duUHJvcGVydHkob2JqLCBwcm9wKSB7CiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOwp9CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyg3KSwgX193ZWJwYWNrX3JlcXVpcmVfXygxMSkpKQoKLyoqKi8gfSksCi8qIDUwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihCdWZmZXIpIHsvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgooZnVuY3Rpb24oKSB7CiAgdmFyIEVtYmVkZGVkRm9udCwgUERGRm9udCwgU3RhbmRhcmRGb250LCBmb250a2l0OwoKICBmb250a2l0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjcpOwoKICBQREZGb250ID0gKGZ1bmN0aW9uKCkgewogICAgUERGRm9udC5vcGVuID0gZnVuY3Rpb24oZG9jdW1lbnQsIHNyYywgZmFtaWx5LCBpZCkgewogICAgICB2YXIgZm9udDsKICAgICAgaWYgKHR5cGVvZiBzcmMgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgaWYgKFN0YW5kYXJkRm9udC5pc1N0YW5kYXJkRm9udChzcmMpKSB7CiAgICAgICAgICByZXR1cm4gbmV3IFN0YW5kYXJkRm9udChkb2N1bWVudCwgc3JjLCBpZCk7CiAgICAgICAgfQogICAgICAgIGZvbnQgPSBmb250a2l0Lm9wZW5TeW5jKHNyYywgZmFtaWx5KTsKICAgICAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIoc3JjKSkgewogICAgICAgIGZvbnQgPSBmb250a2l0LmNyZWF0ZShzcmMsIGZhbWlseSk7CiAgICAgIH0gZWxzZSBpZiAoc3JjIGluc3RhbmNlb2YgVWludDhBcnJheSkgewogICAgICAgIGZvbnQgPSBmb250a2l0LmNyZWF0ZShuZXcgQnVmZmVyKHNyYyksIGZhbWlseSk7CiAgICAgIH0gZWxzZSBpZiAoc3JjIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHsKICAgICAgICBmb250ID0gZm9udGtpdC5jcmVhdGUobmV3IEJ1ZmZlcihuZXcgVWludDhBcnJheShzcmMpKSwgZmFtaWx5KTsKICAgICAgfQogICAgICBpZiAoZm9udCA9PSBudWxsKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSBzdXBwb3J0ZWQgZm9udCBmb3JtYXQgb3Igc3RhbmRhcmQgUERGIGZvbnQuJyk7CiAgICAgIH0KICAgICAgcmV0dXJuIG5ldyBFbWJlZGRlZEZvbnQoZG9jdW1lbnQsIGZvbnQsIGlkKTsKICAgIH07CgogICAgZnVuY3Rpb24gUERGRm9udCgpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgY29uc3RydWN0IGEgUERGRm9udCBkaXJlY3RseS4nKTsKICAgIH0KCiAgICBQREZGb250LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbih0ZXh0KSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzJyk7CiAgICB9OwoKICAgIFBERkZvbnQucHJvdG90eXBlLndpZHRoT2ZTdHJpbmcgPSBmdW5jdGlvbih0ZXh0KSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzJyk7CiAgICB9OwoKICAgIFBERkZvbnQucHJvdG90eXBlLnJlZiA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5kaWN0aW9uYXJ5ICE9IG51bGwgPyB0aGlzLmRpY3Rpb25hcnkgOiB0aGlzLmRpY3Rpb25hcnkgPSB0aGlzLmRvY3VtZW50LnJlZigpOwogICAgfTsKCiAgICBQREZGb250LnByb3RvdHlwZS5maW5hbGl6ZSA9IGZ1bmN0aW9uKCkgewogICAgICBpZiAodGhpcy5lbWJlZGRlZCB8fCAodGhpcy5kaWN0aW9uYXJ5ID09IG51bGwpKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuZW1iZWQoKTsKICAgICAgcmV0dXJuIHRoaXMuZW1iZWRkZWQgPSB0cnVlOwogICAgfTsKCiAgICBQREZGb250LnByb3RvdHlwZS5lbWJlZCA9IGZ1bmN0aW9uKCkgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ011c3QgYmUgaW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcycpOwogICAgfTsKCiAgICBQREZGb250LnByb3RvdHlwZS5saW5lSGVpZ2h0ID0gZnVuY3Rpb24oc2l6ZSwgaW5jbHVkZUdhcCkgewogICAgICB2YXIgZ2FwOwogICAgICBpZiAoaW5jbHVkZUdhcCA9PSBudWxsKSB7CiAgICAgICAgaW5jbHVkZUdhcCA9IGZhbHNlOwogICAgICB9CiAgICAgIGdhcCA9IGluY2x1ZGVHYXAgPyB0aGlzLmxpbmVHYXAgOiAwOwogICAgICByZXR1cm4gKHRoaXMuYXNjZW5kZXIgKyBnYXAgLSB0aGlzLmRlc2NlbmRlcikgLyAxMDAwICogc2l6ZTsKICAgIH07CgogICAgcmV0dXJuIFBERkZvbnQ7CgogIH0pKCk7CgogIG1vZHVsZS5leHBvcnRzID0gUERGRm9udDsKCiAgU3RhbmRhcmRGb250ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOTIpOwoKICBFbWJlZGRlZEZvbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5NCk7Cgp9KS5jYWxsKHRoaXMpOwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyKSkKCi8qKiovIH0pLAovKiA1MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyKSB7Ly8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIERlY29kZVN0cmVhbSwgaWNvbnY7CgogIHRyeSB7CiAgICBpY29udiA9IF9fd2VicGFja19yZXF1aXJlX18oNTIpOwogIH0gY2F0Y2ggKF9lcnJvcikge30KCiAgRGVjb2RlU3RyZWFtID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIGtleTsKCiAgICBmdW5jdGlvbiBEZWNvZGVTdHJlYW0oYnVmZmVyKSB7CiAgICAgIHRoaXMuYnVmZmVyID0gYnVmZmVyOwogICAgICB0aGlzLnBvcyA9IDA7CiAgICAgIHRoaXMubGVuZ3RoID0gdGhpcy5idWZmZXIubGVuZ3RoOwogICAgfQoKICAgIERlY29kZVN0cmVhbS5UWVBFUyA9IHsKICAgICAgVUludDg6IDEsCiAgICAgIFVJbnQxNjogMiwKICAgICAgVUludDI0OiAzLAogICAgICBVSW50MzI6IDQsCiAgICAgIEludDg6IDEsCiAgICAgIEludDE2OiAyLAogICAgICBJbnQyNDogMywKICAgICAgSW50MzI6IDQsCiAgICAgIEZsb2F0OiA0LAogICAgICBEb3VibGU6IDgKICAgIH07CgogICAgZm9yIChrZXkgaW4gQnVmZmVyLnByb3RvdHlwZSkgewogICAgICBpZiAoa2V5LnNsaWNlKDAsIDQpID09PSAncmVhZCcpIHsKICAgICAgICAoZnVuY3Rpb24oa2V5KSB7CiAgICAgICAgICB2YXIgYnl0ZXM7CiAgICAgICAgICBieXRlcyA9IERlY29kZVN0cmVhbS5UWVBFU1trZXkucmVwbGFjZSgvcmVhZHxbQkxdRS9nLCAnJyldOwogICAgICAgICAgcmV0dXJuIERlY29kZVN0cmVhbS5wcm90b3R5cGVba2V5XSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgcmV0OwogICAgICAgICAgICByZXQgPSB0aGlzLmJ1ZmZlcltrZXldKHRoaXMucG9zKTsKICAgICAgICAgICAgdGhpcy5wb3MgKz0gYnl0ZXM7CiAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgICB9OwogICAgICAgIH0pKGtleSk7CiAgICAgIH0KICAgIH0KCiAgICBEZWNvZGVTdHJlYW0ucHJvdG90eXBlLnJlYWRTdHJpbmcgPSBmdW5jdGlvbihsZW5ndGgsIGVuY29kaW5nKSB7CiAgICAgIHZhciBidWYsIGJ5dGUsIGksIF9pLCBfcmVmOwogICAgICBpZiAoZW5jb2RpbmcgPT0gbnVsbCkgewogICAgICAgIGVuY29kaW5nID0gJ2FzY2lpJzsKICAgICAgfQogICAgICBzd2l0Y2ggKGVuY29kaW5nKSB7CiAgICAgICAgY2FzZSAndXRmMTZsZSc6CiAgICAgICAgY2FzZSAndWNzMic6CiAgICAgICAgY2FzZSAndXRmOCc6CiAgICAgICAgY2FzZSAnYXNjaWknOgogICAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnRvU3RyaW5nKGVuY29kaW5nLCB0aGlzLnBvcywgdGhpcy5wb3MgKz0gbGVuZ3RoKTsKICAgICAgICBjYXNlICd1dGYxNmJlJzoKICAgICAgICAgIGJ1ZiA9IG5ldyBCdWZmZXIodGhpcy5yZWFkQnVmZmVyKGxlbmd0aCkpOwogICAgICAgICAgZm9yIChpID0gX2kgPSAwLCBfcmVmID0gYnVmLmxlbmd0aCAtIDE7IF9pIDwgX3JlZjsgaSA9IF9pICs9IDIpIHsKICAgICAgICAgICAgYnl0ZSA9IGJ1ZltpXTsKICAgICAgICAgICAgYnVmW2ldID0gYnVmW2kgKyAxXTsKICAgICAgICAgICAgYnVmW2kgKyAxXSA9IGJ5dGU7CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJyk7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIGJ1ZiA9IHRoaXMucmVhZEJ1ZmZlcihsZW5ndGgpOwogICAgICAgICAgaWYgKGljb252KSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgcmV0dXJuIGljb252LmRlY29kZShidWYsIGVuY29kaW5nKTsKICAgICAgICAgICAgfSBjYXRjaCAoX2Vycm9yKSB7fQogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGJ1ZjsKICAgICAgfQogICAgfTsKCiAgICBEZWNvZGVTdHJlYW0ucHJvdG90eXBlLnJlYWRCdWZmZXIgPSBmdW5jdGlvbihsZW5ndGgpIHsKICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLnNsaWNlKHRoaXMucG9zLCB0aGlzLnBvcyArPSBsZW5ndGgpOwogICAgfTsKCiAgICBEZWNvZGVTdHJlYW0ucHJvdG90eXBlLnJlYWRVSW50MjRCRSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKHRoaXMucmVhZFVJbnQxNkJFKCkgPDwgOCkgKyB0aGlzLnJlYWRVSW50OCgpOwogICAgfTsKCiAgICBEZWNvZGVTdHJlYW0ucHJvdG90eXBlLnJlYWRVSW50MjRMRSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5yZWFkVUludDE2TEUoKSArICh0aGlzLnJlYWRVSW50OCgpIDw8IDE2KTsKICAgIH07CgogICAgRGVjb2RlU3RyZWFtLnByb3RvdHlwZS5yZWFkSW50MjRCRSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gKHRoaXMucmVhZEludDE2QkUoKSA8PCA4KSArIHRoaXMucmVhZFVJbnQ4KCk7CiAgICB9OwoKICAgIERlY29kZVN0cmVhbS5wcm90b3R5cGUucmVhZEludDI0TEUgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMucmVhZFVJbnQxNkxFKCkgKyAodGhpcy5yZWFkSW50OCgpIDw8IDE2KTsKICAgIH07CgogICAgcmV0dXJuIERlY29kZVN0cmVhbTsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBEZWNvZGVTdHJlYW07Cgp9KS5jYWxsKHRoaXMpOwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyKSkKCi8qKiovIH0pLAovKiA1MiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihwcm9jZXNzKSB7CgovLyBTb21lIGVudmlyb25tZW50cyBkb24ndCBoYXZlIGdsb2JhbCBCdWZmZXIgKGUuZy4gUmVhY3QgTmF0aXZlKS4KLy8gU29sdXRpb24gd291bGQgYmUgaW5zdGFsbGluZyBucG0gbW9kdWxlcyAiYnVmZmVyIiBhbmQgInN0cmVhbSIgZXhwbGljaXRseS4KdmFyIEJ1ZmZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyOwoKdmFyIGJvbUhhbmRsaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzApLAogICAgaWNvbnYgPSBtb2R1bGUuZXhwb3J0czsKCi8vIEFsbCBjb2RlY3MgYW5kIGFsaWFzZXMgYXJlIGtlcHQgaGVyZSwga2V5ZWQgYnkgZW5jb2RpbmcgbmFtZS9hbGlhcy4KLy8gVGhleSBhcmUgbGF6eSBsb2FkZWQgaW4gYGljb252LmdldENvZGVjYCBmcm9tIGBlbmNvZGluZ3MvaW5kZXguanNgLgppY29udi5lbmNvZGluZ3MgPSBudWxsOwoKLy8gQ2hhcmFjdGVycyBlbWl0dGVkIGluIGNhc2Ugb2YgZXJyb3IuCmljb252LmRlZmF1bHRDaGFyVW5pY29kZSA9ICfvv70nOwppY29udi5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUgPSAnPyc7CgovLyBQdWJsaWMgQVBJLgppY29udi5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoc3RyLCBlbmNvZGluZywgb3B0aW9ucykgewogICAgc3RyID0gIiIgKyAoc3RyIHx8ICIiKTsgLy8gRW5zdXJlIHN0cmluZy4KCiAgICB2YXIgZW5jb2RlciA9IGljb252LmdldEVuY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpOwoKICAgIHZhciByZXMgPSBlbmNvZGVyLndyaXRlKHN0cik7CiAgICB2YXIgdHJhaWwgPSBlbmNvZGVyLmVuZCgpOwogICAgCiAgICByZXR1cm4gKHRyYWlsICYmIHRyYWlsLmxlbmd0aCA+IDApID8gQnVmZmVyLmNvbmNhdChbcmVzLCB0cmFpbF0pIDogcmVzOwp9CgppY29udi5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoYnVmLCBlbmNvZGluZywgb3B0aW9ucykgewogICAgaWYgKHR5cGVvZiBidWYgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgaWYgKCFpY29udi5za2lwRGVjb2RlV2FybmluZykgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCdJY29udi1saXRlIHdhcm5pbmc6IGRlY29kZSgpLWluZyBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuIFJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2h0dWNoa2luL2ljb252LWxpdGUvd2lraS9Vc2UtQnVmZmVycy13aGVuLWRlY29kaW5nJyk7CiAgICAgICAgICAgIGljb252LnNraXBEZWNvZGVXYXJuaW5nID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGJ1ZiA9IG5ldyBCdWZmZXIoIiIgKyAoYnVmIHx8ICIiKSwgImJpbmFyeSIpOyAvLyBFbnN1cmUgYnVmZmVyLgogICAgfQoKICAgIHZhciBkZWNvZGVyID0gaWNvbnYuZ2V0RGVjb2RlcihlbmNvZGluZywgb3B0aW9ucyk7CgogICAgdmFyIHJlcyA9IGRlY29kZXIud3JpdGUoYnVmKTsKICAgIHZhciB0cmFpbCA9IGRlY29kZXIuZW5kKCk7CgogICAgcmV0dXJuIHRyYWlsID8gKHJlcyArIHRyYWlsKSA6IHJlczsKfQoKaWNvbnYuZW5jb2RpbmdFeGlzdHMgPSBmdW5jdGlvbiBlbmNvZGluZ0V4aXN0cyhlbmMpIHsKICAgIHRyeSB7CiAgICAgICAgaWNvbnYuZ2V0Q29kZWMoZW5jKTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0KCi8vIExlZ2FjeSBhbGlhc2VzIHRvIGNvbnZlcnQgZnVuY3Rpb25zCmljb252LnRvRW5jb2RpbmcgPSBpY29udi5lbmNvZGU7Cmljb252LmZyb21FbmNvZGluZyA9IGljb252LmRlY29kZTsKCi8vIFNlYXJjaCBmb3IgYSBjb2RlYyBpbiBpY29udi5lbmNvZGluZ3MuIENhY2hlIGNvZGVjIGRhdGEgaW4gaWNvbnYuX2NvZGVjRGF0YUNhY2hlLgppY29udi5fY29kZWNEYXRhQ2FjaGUgPSB7fTsKaWNvbnYuZ2V0Q29kZWMgPSBmdW5jdGlvbiBnZXRDb2RlYyhlbmNvZGluZykgewogICAgaWYgKCFpY29udi5lbmNvZGluZ3MpCiAgICAgICAgaWNvbnYuZW5jb2RpbmdzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzEpOyAvLyBMYXp5IGxvYWQgYWxsIGVuY29kaW5nIGRlZmluaXRpb25zLgogICAgCiAgICAvLyBDYW5vbmljYWxpemUgZW5jb2RpbmcgbmFtZTogc3RyaXAgYWxsIG5vbi1hbHBoYW51bWVyaWMgY2hhcnMgYW5kIGFwcGVuZGVkIHllYXIuCiAgICB2YXIgZW5jID0gKCcnK2VuY29kaW5nKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teMC05YS16XXw6XGR7NH0kL2csICIiKTsKCiAgICAvLyBUcmF2ZXJzZSBpY29udi5lbmNvZGluZ3MgdG8gZmluZCBhY3R1YWwgY29kZWMuCiAgICB2YXIgY29kZWNPcHRpb25zID0ge307CiAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIHZhciBjb2RlYyA9IGljb252Ll9jb2RlY0RhdGFDYWNoZVtlbmNdOwogICAgICAgIGlmIChjb2RlYykKICAgICAgICAgICAgcmV0dXJuIGNvZGVjOwoKICAgICAgICB2YXIgY29kZWNEZWYgPSBpY29udi5lbmNvZGluZ3NbZW5jXTsKCiAgICAgICAgc3dpdGNoICh0eXBlb2YgY29kZWNEZWYpIHsKICAgICAgICAgICAgY2FzZSAic3RyaW5nIjogLy8gRGlyZWN0IGFsaWFzIHRvIG90aGVyIGVuY29kaW5nLgogICAgICAgICAgICAgICAgZW5jID0gY29kZWNEZWY7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgIm9iamVjdCI6IC8vIEFsaWFzIHdpdGggb3B0aW9ucy4gQ2FuIGJlIGxheWVyZWQuCiAgICAgICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gY29kZWNEZWYpCiAgICAgICAgICAgICAgICAgICAgY29kZWNPcHRpb25zW2tleV0gPSBjb2RlY0RlZltrZXldOwoKICAgICAgICAgICAgICAgIGlmICghY29kZWNPcHRpb25zLmVuY29kaW5nTmFtZSkKICAgICAgICAgICAgICAgICAgICBjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lID0gZW5jOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBlbmMgPSBjb2RlY0RlZi50eXBlOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICJmdW5jdGlvbiI6IC8vIENvZGVjIGl0c2VsZi4KICAgICAgICAgICAgICAgIGlmICghY29kZWNPcHRpb25zLmVuY29kaW5nTmFtZSkKICAgICAgICAgICAgICAgICAgICBjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lID0gZW5jOwoKICAgICAgICAgICAgICAgIC8vIFRoZSBjb2RlYyBmdW5jdGlvbiBtdXN0IGxvYWQgYWxsIHRhYmxlcyBhbmQgcmV0dXJuIG9iamVjdCB3aXRoIC5lbmNvZGVyIGFuZCAuZGVjb2RlciBtZXRob2RzLgogICAgICAgICAgICAgICAgLy8gSXQnbGwgYmUgY2FsbGVkIG9ubHkgb25jZSAoZm9yIGVhY2ggZGlmZmVyZW50IG9wdGlvbnMgb2JqZWN0KS4KICAgICAgICAgICAgICAgIGNvZGVjID0gbmV3IGNvZGVjRGVmKGNvZGVjT3B0aW9ucywgaWNvbnYpOwoKICAgICAgICAgICAgICAgIGljb252Ll9jb2RlY0RhdGFDYWNoZVtjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lXSA9IGNvZGVjOyAvLyBTYXZlIGl0IHRvIGJlIHJldXNlZCBsYXRlci4KICAgICAgICAgICAgICAgIHJldHVybiBjb2RlYzsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nIG5vdCByZWNvZ25pemVkOiAnIiArIGVuY29kaW5nICsgIicgKHNlYXJjaGVkIGFzOiAnIitlbmMrIicpIik7CiAgICAgICAgfQogICAgfQp9CgppY29udi5nZXRFbmNvZGVyID0gZnVuY3Rpb24gZ2V0RW5jb2RlcihlbmNvZGluZywgb3B0aW9ucykgewogICAgdmFyIGNvZGVjID0gaWNvbnYuZ2V0Q29kZWMoZW5jb2RpbmcpLAogICAgICAgIGVuY29kZXIgPSBuZXcgY29kZWMuZW5jb2RlcihvcHRpb25zLCBjb2RlYyk7CgogICAgaWYgKGNvZGVjLmJvbUF3YXJlICYmIG9wdGlvbnMgJiYgb3B0aW9ucy5hZGRCT00pCiAgICAgICAgZW5jb2RlciA9IG5ldyBib21IYW5kbGluZy5QcmVwZW5kQk9NKGVuY29kZXIsIG9wdGlvbnMpOwoKICAgIHJldHVybiBlbmNvZGVyOwp9CgppY29udi5nZXREZWNvZGVyID0gZnVuY3Rpb24gZ2V0RGVjb2RlcihlbmNvZGluZywgb3B0aW9ucykgewogICAgdmFyIGNvZGVjID0gaWNvbnYuZ2V0Q29kZWMoZW5jb2RpbmcpLAogICAgICAgIGRlY29kZXIgPSBuZXcgY29kZWMuZGVjb2RlcihvcHRpb25zLCBjb2RlYyk7CgogICAgaWYgKGNvZGVjLmJvbUF3YXJlICYmICEob3B0aW9ucyAmJiBvcHRpb25zLnN0cmlwQk9NID09PSBmYWxzZSkpCiAgICAgICAgZGVjb2RlciA9IG5ldyBib21IYW5kbGluZy5TdHJpcEJPTShkZWNvZGVyLCBvcHRpb25zKTsKCiAgICByZXR1cm4gZGVjb2RlcjsKfQoKCi8vIExvYWQgZXh0ZW5zaW9ucyBpbiBOb2RlLiBBbGwgb2YgdGhlbSBhcmUgb21pdHRlZCBpbiBCcm93c2VyaWZ5IGJ1aWxkIHZpYSAnYnJvd3NlcicgZmllbGQgaW4gcGFja2FnZS5qc29uLgp2YXIgbm9kZVZlciA9IHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZTsKaWYgKG5vZGVWZXIpIHsKCiAgICAvLyBMb2FkIHN0cmVhbWluZyBzdXBwb3J0IGluIE5vZGUgdjAuMTArCiAgICB2YXIgbm9kZVZlckFyciA9IG5vZGVWZXIuc3BsaXQoIi4iKS5tYXAoTnVtYmVyKTsKICAgIGlmIChub2RlVmVyQXJyWzBdID4gMCB8fCBub2RlVmVyQXJyWzFdID49IDEwKSB7CiAgICAgICAgX193ZWJwYWNrX3JlcXVpcmVfXygxODUpKGljb252KTsKICAgIH0KCiAgICAvLyBMb2FkIE5vZGUgcHJpbWl0aXZlIGV4dGVuc2lvbnMuCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4NikoaWNvbnYpOwp9CgppZiAoZmFsc2UpIHsKICAgIGNvbnNvbGUuZXJyb3IoImljb252LWxpdGUgd2FybmluZzogamF2YXNjcmlwdCBmaWxlcyB1c2UgZW5jb2RpbmcgZGlmZmVyZW50IGZyb20gdXRmLTguIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXNodHVjaGtpbi9pY29udi1saXRlL3dpa2kvSmF2YXNjcmlwdC1zb3VyY2UtZmlsZS1lbmNvZGluZ3MgZm9yIG1vcmUgaW5mby4iKTsKfQoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oMTEpKSkKCi8qKiovIH0pLAovKiA1MyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IFtbIjAiLCJcdTAwMDAiLDEyNywi4oKsIl0sWyI4MTQwIiwi5LiC5LiE5LiF5LiG5LiP5LiS5LiX5Lif5Lig5Lih5Lij5Lim5Lip5Liu5Liv5Lix5Liz5Li15Li35Li85LmA5LmB5LmC5LmE5LmG5LmK5LmR5LmV5LmX5Lma5Lmb5Lmi5Lmj5Lmk5Lml5Lmn5Lmo5LmqIiw1LCLkubLkubQiLDksIuS5vyIsNiwi5LqH5LqKIl0sWyI4MTgwIiwi5LqQ5LqW5LqX5LqZ5Lqc5Lqd5Lqe5Lqj5Lqq5Lqv5Lqw5Lqx5Lq05Lq25Lq35Lq45Lq55Lq85Lq95Lq+5LuI5LuM5LuP5LuQ5LuS5Lua5Lub5Luc5Lug5Lui5Lum5Lun5Lup5Lut5Luu5Luv5Lux5Lu05Lu45Lu55Lu65Lu85Lu+5LyA5LyCIiw2LCLkvIvkvIzkvJIiLDQsIuS8nOS8neS8oeS8o+S8qOS8qeS8rOS8reS8ruS8seS8s+S8teS8t+S8ueS8u+S8viIsNCwi5L2E5L2F5L2HIiw1LCLkvZLkvZTkvZbkvaHkvaLkvabkvajkvarkvavkva3kva7kvbHkvbLkvbXkvbfkvbjkvbnkvbrkvb3kvoDkvoHkvoLkvoXkvobkvofkvorkvozkvo7kvpDkvpLkvpPkvpXkvpbkvpjkvpnkvprkvpzkvp7kvp/kvqHkvqIiXSxbIjgyNDAiLCLkvqTkvqvkvq3kvrAiLDQsIuS+tiIsOCwi5L+A5L+B5L+C5L+G5L+H5L+I5L+J5L+L5L+M5L+N5L+SIiw0LCLkv5nkv5vkv6Dkv6Lkv6Tkv6Xkv6fkv6vkv6zkv7Dkv7Lkv7Tkv7Xkv7bkv7fkv7nkv7vkv7zkv73kv78iLDExXSxbIjgyODAiLCLlgIvlgI7lgJDlgJHlgJPlgJXlgJblgJflgJvlgJ3lgJ7lgKDlgKLlgKPlgKTlgKflgKvlgK8iLDEwLCLlgLvlgL3lgL/lgYDlgYHlgYLlgYTlgYXlgYblgYnlgYrlgYvlgY3lgZAiLDQsIuWBluWBl+WBmOWBmeWBm+WBnSIsNywi5YGmIiw1LCLlga0iLDgsIuWBuOWBueWBuuWBvOWBveWCgeWCguWCg+WChOWChuWCh+WCieWCiuWCi+WCjOWCjiIsMjAsIuWCpOWCpuWCquWCq+WCrSIsNCwi5YKzIiw2LCLlgrwiXSxbIjgzNDAiLCLlgr0iLDE3LCLlg5AiLDUsIuWDl+WDmOWDmeWDmyIsMTAsIuWDqOWDqeWDquWDq+WDr+WDsOWDseWDsuWDtOWDtiIsNCwi5YO8Iiw5LCLlhIgiXSxbIjgzODAiLCLlhInlhIrlhIwiLDUsIuWEkyIsMTMsIuWEoiIsMjgsIuWFguWFh+WFiuWFjOWFjuWFj+WFkOWFkuWFk+WFl+WFmOWFmeWFm+WFnSIsNCwi5YWj5YWk5YWm5YWn5YWp5YWq5YWv5YWy5YW65YW+5YW/5YaD5YaE5YaG5YaH5YaK5YaL5YaO5YaP5YaQ5YaR5YaT5YaU5YaY5Yaa5Yad5Yae5Yaf5Yah5Yaj5YamIiw0LCLlhq3lhq7lhrTlhrjlhrnlhrrlhr7lhr/lh4Hlh4Llh4Plh4Xlh4jlh4rlh43lh47lh5Dlh5IiLDVdLFsiODQ0MCIsIuWHmOWHmeWHmuWHnOWHnuWHn+WHouWHo+WHpSIsNSwi5Yes5Yeu5Yex5Yey5Ye05Ye35Ye+5YiE5YiF5YiJ5YiL5YiM5YiP5YiQ5YiT5YiU5YiV5Yic5Yie5Yif5Yih5Yii5Yij5Yil5Yim5Yin5Yiq5Yis5Yiv5Yix5Yiy5Yi05Yi15Yi85Yi+5YmEIiw1LCLliYvliY7liY/liZLliZPliZXliZfliZgiXSxbIjg0ODAiLCLliZnliZrliZvliZ3liZ/liaDliaLliaPliaTliabliajliavliazlia3lia7libDlibHlibMiLDksIuWJvuWKgOWKgyIsNCwi5YqJIiw2LCLlipHlipLlipQiLDYsIuWKnOWKpOWKpeWKpuWKp+WKruWKr+WKsOWKtCIsOSwi5YuA5YuB5YuC5YuE5YuF5YuG5YuI5YuK5YuM5YuN5YuO5YuP5YuR5YuT5YuU5YuV5YuX5YuZIiw1LCLli6Dli6Hli6Lli6Pli6UiLDEwLCLli7EiLDcsIuWLu+WLvOWLveWMgeWMguWMg+WMhOWMh+WMieWMiuWMi+WMjOWMjiJdLFsiODU0MCIsIuWMkeWMkuWMk+WMlOWMmOWMm+WMnOWMnuWMn+WMouWMpOWMpeWMp+WMqOWMqeWMq+WMrOWMreWMryIsOSwi5Yy85Yy95Y2A5Y2C5Y2E5Y2G5Y2L5Y2M5Y2N5Y2Q5Y2U5Y2Y5Y2Z5Y2b5Y2d5Y2l5Y2o5Y2q5Y2s5Y2t5Y2y5Y225Y255Y275Y285Y295Y2+5Y6A5Y6B5Y6D5Y6H5Y6I5Y6K5Y6O5Y6PIl0sWyI4NTgwIiwi5Y6QIiw0LCLljpbljpfljpnljpvljpzljp7ljqDljqHljqTljqfljqrljqvljqzljq3ljq8iLDYsIuWOt+WOuOWOueWOuuWOvOWOveWOvuWPgOWPgyIsNCwi5Y+O5Y+P5Y+Q5Y+S5Y+T5Y+V5Y+a5Y+c5Y+d5Y+e5Y+h5Y+i5Y+n5Y+05Y+65Y++5Y+/5ZCA5ZCC5ZCF5ZCH5ZCL5ZCU5ZCY5ZCZ5ZCa5ZCc5ZCi5ZCk5ZCl5ZCq5ZCw5ZCz5ZC25ZC35ZC65ZC95ZC/5ZGB5ZGC5ZGE5ZGF5ZGH5ZGJ5ZGM5ZGN5ZGO5ZGP5ZGR5ZGa5ZGdIiw0LCLlkaPlkaXlkaflkakiLDcsIuWRtOWRueWRuuWRvuWRv+WSgeWSg+WSheWSh+WSiOWSieWSiuWSjeWSkeWSk+WSl+WSmOWSnOWSnuWSn+WSoOWSoSJdLFsiODY0MCIsIuWSouWSpeWSruWSsOWSsuWSteWStuWSt+WSueWSuuWSvOWSvuWTg+WTheWTiuWTi+WTluWTmOWTm+WToCIsNCwi5ZOr5ZOs5ZOv5ZOw5ZOx5ZO0Iiw1LCLlk7vlk77llIDllILllIPllITllIXllIjllIoiLDQsIuWUkuWUk+WUlSIsNSwi5ZSc5ZSd5ZSe5ZSf5ZSh5ZSl5ZSmIl0sWyI4NjgwIiwi5ZSo5ZSp5ZSr5ZSt5ZSy5ZS05ZS15ZS25ZS45ZS55ZS65ZS75ZS95ZWA5ZWC5ZWF5ZWH5ZWI5ZWLIiw0LCLllZHllZLllZPllZTllZciLDQsIuWVneWVnuWVn+WVoOWVouWVo+WVqOWVqeWVq+WVryIsNSwi5ZW55ZW65ZW95ZW/5ZaF5ZaG5ZaM5ZaN5ZaO5ZaQ5ZaS5ZaT5ZaV5ZaW5ZaX5Zaa5Zab5Zae5ZagIiw2LCLllqgiLDgsIuWWsuWWtOWWtuWWuOWWuuWWvOWWvyIsNCwi5ZeG5ZeH5ZeI5ZeK5ZeL5ZeO5ZeP5ZeQ5ZeV5ZeXIiw0LCLll57ll6Dll6Lll6fll6nll63ll67ll7Dll7Hll7Tll7bll7giLDQsIuWXv+WYguWYg+WYhOWYhSJdLFsiODc0MCIsIuWYhuWYh+WYiuWYi+WYjeWYkCIsNywi5ZiZ5Zia5Zic5Zid5Zig5Zih5Zii5Zil5Zim5Zio5Zip5Ziq5Zir5Ziu5Ziv5Ziw5Ziz5Zi15Zi35Zi45Zi65Zi85Zi95Zi+5ZmAIiwxMSwi5ZmPIiw0LCLlmZXlmZblmZrlmZvlmZ0iLDRdLFsiODc4MCIsIuWZo+WZpeWZpuWZp+WZreWZruWZr+WZsOWZsuWZs+WZtOWZteWZt+WZuOWZueWZuuWZvSIsNywi5ZqHIiw2LCLlmpDlmpHlmpLlmpQiLDE0LCLlmqQiLDEwLCLlmrAiLDYsIuWauOWaueWauuWau+WavSIsMTIsIuWbiyIsOCwi5ZuV5ZuW5ZuY5ZuZ5Zuc5Zuj5ZulIiw1LCLlm6zlm67lm6/lm7Llm7Plm7blm7flm7jlm7vlm7zlnIDlnIHlnILlnIXlnIflnIsiLDZdLFsiODg0MCIsIuWckiIsOSwi5Zyd5Zye5Zyg5Zyh5Zyi5Zyk5Zyl5Zym5Zyn5Zyr5Zyx5Zyy5Zy0Iiw0LCLlnLzlnL3lnL/lnYHlnYPlnYTlnYXlnYblnYjlnYnlnYvlnZIiLDQsIuWdmOWdmeWdouWdo+WdpeWdp+WdrOWdruWdsOWdseWdsuWdtOWdteWduOWdueWduuWdveWdvuWdv+WegCJdLFsiODg4MCIsIuWegeWeh+WeiOWeieWeiuWejSIsNCwi5Z6UIiw2LCLlnpzlnp3lnp7lnp/lnqXlnqjlnqrlnqzlnq/lnrDlnrHlnrPlnrXlnrblnrflnrkiLDgsIuWfhCIsNiwi5Z+M5Z+N5Z+Q5Z+R5Z+T5Z+W5Z+X5Z+b5Z+c5Z+e5Z+h5Z+i5Z+j5Z+lIiw3LCLln67ln7Dln7Hln7Lln7Pln7Xln7bln7fln7vln7zln77ln7/loIHloIPloITloIXloIjloInloIrloIzloI7loI/loJDloJLloJPloJTloJbloJfloJjloJrloJvloJzloJ3loJ/loKLloKPloKUiLDQsIuWgqyIsNCwi5aCx5aCy5aCz5aC05aC2Iiw3XSxbIjg5NDAiLCLloL4iLDUsIuWhhSIsNiwi5aGO5aGP5aGQ5aGS5aGT5aGV5aGW5aGX5aGZIiw0LCLloZ8iLDUsIuWhpiIsNCwi5aGtIiwxNiwi5aG/5aKC5aKE5aKG5aKH5aKI5aKK5aKL5aKMIl0sWyI4OTgwIiwi5aKNIiw0LCLlopQiLDQsIuWim+WinOWineWioCIsNywi5aKqIiwxNywi5aK95aK+5aK/5aOA5aOC5aOD5aOE5aOGIiwxMCwi5aOS5aOT5aOU5aOWIiwxMywi5aOlIiw1LCLlo63lo6/lo7Hlo7Llo7Tlo7Xlo7flo7jlo7oiLDcsIuWkg+WkheWkhuWkiCIsNCwi5aSO5aSQ5aSR5aSS5aST5aSX5aSY5aSb5aSd5aSe5aSg5aSh5aSi5aSj5aSm5aSo5aSs5aSw5aSy5aSz5aS15aS25aS7Il0sWyI4YTQwIiwi5aS95aS+5aS/5aWA5aWD5aWF5aWG5aWK5aWM5aWN5aWQ5aWS5aWT5aWZ5aWbIiw0LCLlpaHlpaPlpaTlpaYiLDEyLCLlpbXlpbflpbrlpbvlpbzlpb7lpb/lpoDlpoXlponlpovlpozlpo7lpo/lppDlppHlppTlppXlppjlpprlppvlppzlpp3lpp/lpqDlpqHlpqLlpqYiXSxbIjhhODAiLCLlpqflpqzlpq3lprDlprHlprMiLDUsIuWmuuWmvOWmveWmvyIsNiwi5aeH5aeI5aeJ5aeM5aeN5aeO5aeP5aeV5aeW5aeZ5aeb5aeeIiw0LCLlp6Tlp6blp6flp6nlp6rlp6vlp60iLDExLCLlp7rlp7zlp73lp77lqIDlqILlqIrlqIvlqI3lqI7lqI/lqJDlqJLlqJTlqJXlqJblqJflqJnlqJrlqJvlqJ3lqJ7lqKHlqKLlqKTlqKblqKflqKjlqKoiLDYsIuWos+WoteWotyIsNCwi5ai95ai+5ai/5amBIiw0LCLlqYflqYjlqYsiLDksIuWpluWpl+WpmOWpmeWpmyIsNV0sWyI4YjQwIiwi5amh5amj5amk5aml5amm5amo5amp5amrIiw4LCLlqbjlqbnlqbvlqbzlqb3lqb7lqoAiLDE3LCLlqpMiLDYsIuWqnCIsMTMsIuWqq+WqrCJdLFsiOGI4MCIsIuWqrSIsNCwi5aq05aq25aq35aq5Iiw0LCLlqr/lq4Dlq4MiLDUsIuWriuWri+WrjSIsNCwi5auT5auV5auX5auZ5aua5aub5aud5aue5auf5aui5auk5aul5aun5auo5auq5ausIiw0LCLlq7IiLDIyLCLlrIoiLDExLCLlrJgiLDI1LCLlrLPlrLXlrLblrLgiLDcsIuWtgSIsNl0sWyI4YzQwIiwi5a2IIiw3LCLlrZLlrZblrZ7lraDlraHlraflrajlravlra3lra7lra/lrbLlrbTlrbblrbflrbjlrbnlrbvlrbzlrb7lrb/lroLlroblrorlro3lro7lrpDlrpHlrpLlrpTlrpblrp/lrqflrqjlrqnlrqzlrq3lrq7lrq/lrrHlrrLlrrflrrrlrrvlrrzlr4Dlr4Hlr4Plr4jlr4nlr4rlr4vlr43lr47lr48iXSxbIjhjODAiLCLlr5Hlr5QiLDgsIuWvoOWvouWvo+WvpuWvp+WvqSIsNCwi5a+v5a+xIiw2LCLlr73lr77lsIDlsILlsIPlsIXlsIflsIjlsIvlsIzlsI3lsI7lsJDlsJLlsJPlsJflsJnlsJvlsJ7lsJ/lsKDlsKHlsKPlsKblsKjlsKnlsKrlsKvlsK3lsK7lsK/lsLDlsLLlsLPlsLXlsLblsLflsYPlsYTlsYblsYflsYzlsY3lsZLlsZPlsZTlsZblsZflsZjlsZrlsZvlsZzlsZ3lsZ/lsaLlsaTlsaciLDYsIuWxsOWxsiIsNiwi5bG75bG85bG95bG+5bKA5bKDIiw0LCLlsonlsorlsovlso7lso/lspLlspPlspXlsp0iLDQsIuWypCIsNF0sWyI4ZDQwIiwi5bKq5bKu5bKv5bKw5bKy5bK05bK25bK55bK65bK75bK85bK+5bOA5bOC5bOD5bOFIiw1LCLls4wiLDUsIuWzkyIsNSwi5bOaIiw2LCLls6Lls6Pls6fls6nls6vls6zls67ls6/ls7EiLDksIuWzvCIsNF0sWyI4ZDgwIiwi5bSB5bSE5bSF5bSIIiw1LCLltI8iLDQsIuW0leW0l+W0mOW0meW0muW0nOW0neW0nyIsNCwi5bSl5bSo5bSq5bSr5bSs5bSvIiw0LCLltLUiLDcsIuW0vyIsNywi5bWI5bWJ5bWNIiwxMCwi5bWZ5bWa5bWc5bWeIiwxMCwi5bWq5bWt5bWu5bWw5bWx5bWy5bWz5bW1IiwxMiwi5baDIiwyMSwi5baa5bab5bac5bae5baf5bagIl0sWyI4ZTQwIiwi5bahIiwyMSwi5ba4IiwxMiwi5beGIiw2LCLlt44iLDEyLCLlt5zlt5/lt6Dlt6Plt6Tlt6rlt6zlt60iXSxbIjhlODAiLCLlt7Dlt7Xlt7blt7giLDQsIuW3v+W4gOW4hOW4h+W4ieW4iuW4i+W4jeW4juW4kuW4k+W4l+W4niIsNywi5bioIiw0LCLluK/luLDluLIiLDQsIuW4ueW4uuW4vuW4v+W5gOW5geW5g+W5hiIsNSwi5bmNIiw2LCLluZYiLDQsIuW5nOW5neW5n+W5oOW5oyIsMTQsIuW5teW5t+W5ueW5vuW6geW6guW6g+W6heW6iOW6ieW6jOW6jeW6juW6kuW6mOW6m+W6neW6oeW6ouW6o+W6pOW6qCIsNCwi5bquIiw0LCLlurTlurrlurvlurzlur3lur8iLDZdLFsiOGY0MCIsIuW7huW7h+W7iOW7iyIsNSwi5buU5buV5buX5buY5buZ5bua5bucIiwxMSwi5bup5burIiw4LCLlu7Xlu7jlu7nlu7vlu7zlu73lvIXlvIblvIflvInlvIzlvI3lvI7lvJDlvJLlvJTlvJblvJnlvJrlvJzlvJ3lvJ7lvKHlvKLlvKPlvKQiXSxbIjhmODAiLCLlvKjlvKvlvKzlvK7lvLDlvLIiLDYsIuW8u+W8veW8vuW8v+W9gSIsMTQsIuW9keW9lOW9meW9muW9m+W9nOW9nuW9n+W9oOW9o+W9peW9p+W9qOW9q+W9ruW9r+W9suW9tOW9teW9tuW9uOW9uuW9veW9vuW9v+W+g+W+huW+jeW+juW+j+W+keW+k+W+lOW+luW+muW+m+W+neW+nuW+n+W+oOW+oiIsNSwi5b6p5b6r5b6s5b6vIiw1LCLlvrblvrjlvrnlvrrlvrvlvr4iLDQsIuW/h+W/iOW/iuW/i+W/juW/k+W/lOW/leW/muW/m+W/nOW/nuW/n+W/ouW/o+W/peW/puW/qOW/qeW/rOW/r+W/sOW/suW/s+W/tOW/tuW/t+W/ueW/uuW/vOaAhyJdLFsiOTA0MCIsIuaAiOaAieaAi+aAjOaAkOaAkeaAk+aAl+aAmOaAmuaAnuaAn+aAouaAo+aApOaArOaAreaAruaAsCIsNCwi5oC2Iiw0LCLmgL3mgL7mgYDmgYQiLDYsIuaBjOaBjuaBj+aBkeaBk+aBlOaBluaBl+aBmOaBm+aBnOaBnuaBn+aBoOaBoeaBpeaBpuaBruaBseaBsuaBtOaBteaBt+aBvuaCgCJdLFsiOTA4MCIsIuaCgeaCguaCheaChuaCh+aCiOaCiuaCi+aCjuaCj+aCkOaCkeaCk+aCleaCl+aCmOaCmeaCnOaCnuaCoeaCouaCpOaCpeaCp+aCqeaCquaCruaCsOaCs+aCteaCtuaCt+aCueaCuuaCvSIsNywi5oOH5oOI5oOJ5oOMIiw0LCLmg5Lmg5Pmg5Tmg5bmg5fmg5nmg5vmg57mg6EiLDQsIuaDquaDseaDsuaDteaDt+aDuOaDuyIsNCwi5oSC5oSD5oSE5oSF5oSH5oSK5oSL5oSM5oSQIiw0LCLmhJbmhJfmhJjmhJnmhJvmhJzmhJ3mhJ7mhKHmhKLmhKXmhKjmhKnmhKrmhKwiLDE4LCLmhYAiLDZdLFsiOTE0MCIsIuaFh+aFieaFi+aFjeaFj+aFkOaFkuaFk+aFlOaFliIsNiwi5oWe5oWf5oWg5oWh5oWj5oWk5oWl5oWm5oWpIiw2LCLmhbHmhbLmhbPmhbTmhbbmhbgiLDE4LCLmhozmho3mho8iLDQsIuaGlSJdLFsiOTE4MCIsIuaGliIsNiwi5oaeIiw4LCLmhqrmhqvmhq0iLDksIuaGuCIsNSwi5oa/5oeA5oeB5oeDIiw0LCLmh4nmh4wiLDQsIuaHk+aHlSIsMTYsIuaHpyIsMTMsIuaHtiIsOCwi5oiAIiw1LCLmiIfmiInmiJPmiJTmiJnmiJzmiJ3miJ7miKDmiKPmiKbmiKfmiKjmiKnmiKvmiK3miK/miLDmiLHmiLLmiLXmiLbmiLgiLDQsIuaJguaJhOaJheaJhuaJiiJdLFsiOTI0MCIsIuaJj+aJkOaJleaJluaJl+aJmeaJmuaJnCIsNiwi5omk5oml5omo5omx5omy5om05om15om35om45om65om75om95oqB5oqC5oqD5oqF5oqG5oqH5oqI5oqLIiw1LCLmipTmipnmipzmip3mip7miqPmiqbmiqfmiqnmiqrmiq3miq7miq/mirDmirLmirPmirTmirbmirfmirjmirrmir7mi4Dmi4EiXSxbIjkyODAiLCLmi4Pmi4vmi4/mi5Hmi5Xmi53mi57mi6Dmi6Hmi6Tmi6rmi6vmi7Dmi7Lmi7Xmi7jmi7nmi7rmi7vmjIDmjIPmjITmjIXmjIbmjIrmjIvmjIzmjI3mjI/mjJDmjJLmjJPmjJTmjJXmjJfmjJjmjJnmjJzmjKbmjKfmjKnmjKzmjK3mjK7mjLDmjLHmjLMiLDUsIuaMu+aMvOaMvuaMv+aNgOaNgeaNhOaNh+aNiOaNiuaNkeaNkuaNk+aNlOaNliIsNywi5o2g5o2k5o2l5o2m5o2o5o2q5o2r5o2s5o2v5o2w5o2y5o2z5o205o215o245o255o285o295o2+5o2/5o6B5o6D5o6E5o6F5o6G5o6L5o6N5o6R5o6T5o6U5o6V5o6X5o6ZIiw2LCLmjqHmjqTmjqbmjqvmjq/mjrHmjrLmjrXmjrbmjrnmjrvmjr3mjr/mj4AiXSxbIjkzNDAiLCLmj4Hmj4Lmj4Pmj4Xmj4fmj4jmj4rmj4vmj4zmj5Hmj5Pmj5Tmj5Xmj5ciLDYsIuaPn+aPouaPpCIsNCwi5o+r5o+s5o+u5o+v5o+w5o+x5o+z5o+15o+35o+55o+65o+75o+85o++5pCD5pCE5pCGIiw0LCLmkI3mkI7mkJHmkJLmkJUiLDUsIuaQneaQn+aQouaQo+aQpCJdLFsiOTM4MCIsIuaQpeaQp+aQqOaQqeaQq+aQriIsNSwi5pC1Iiw0LCLmkLvmkLzmkL7mkYDmkYLmkYPmkYnmkYsiLDYsIuaRk+aRleaRluaRl+aRmSIsNCwi5pGfIiw3LCLmkajmkarmkavmkazmka4iLDksIuaRuyIsNiwi5pKD5pKG5pKIIiw4LCLmkpPmkpTmkpfmkpjmkprmkpvmkpzmkp3mkp8iLDQsIuaSpeaSpuaSp+aSqOaSquaSq+aSr+aSseaSsuaSs+aStOaStuaSueaSu+aSveaSvuaSv+aTgeaTg+aThOaThiIsNiwi5pOP5pOR5pOT5pOU5pOV5pOW5pOZ5pOaIl0sWyI5NDQwIiwi5pOb5pOc5pOd5pOf5pOg5pOh5pOj5pOl5pOnIiwyNCwi5pSBIiw3LCLmlIoiLDcsIuaUkyIsNCwi5pSZIiw4XSxbIjk0ODAiLCLmlKLmlKPmlKTmlKYiLDQsIuaUrOaUreaUsOaUseaUsuaUs+aUt+aUuuaUvOaUveaVgCIsNCwi5pWG5pWH5pWK5pWL5pWN5pWO5pWQ5pWS5pWT5pWU5pWX5pWY5pWa5pWc5pWf5pWg5pWh5pWk5pWl5pWn5pWo5pWp5pWq5pWt5pWu5pWv5pWx5pWz5pW15pW25pW4IiwxNCwi5paI5paJ5paK5paN5paO5paP5paS5paU5paV5paW5paY5paa5pad5pae5pag5pai5paj5pam5pao5paq5pas5pau5paxIiw3LCLmlrrmlrvmlr7mlr/ml4Dml4Lml4fml4jml4nml4rml43ml5Dml5Hml5Pml5Tml5Xml5giLDcsIuaXoeaXo+aXpOaXquaXqyJdLFsiOTU0MCIsIuaXsuaXs+aXtOaXteaXuOaXueaXuyIsNCwi5piB5piE5piF5piH5piI5piJ5piL5piN5piQ5piR5piS5piW5piX5piY5pia5pib5pic5pie5pih5pii5pij5pik5pim5pip5piq5pir5pis5piu5piw5piy5piz5pi3Iiw0LCLmmL3mmL/mmYDmmYLmmYQiLDYsIuaZjeaZjuaZkOaZkeaZmCJdLFsiOTU4MCIsIuaZmeaZm+aZnOaZneaZnuaZoOaZouaZo+aZpeaZp+aZqSIsNCwi5pmx5pmy5pmz5pm15pm45pm55pm75pm85pm95pm/5pqA5pqB5pqD5pqF5pqG5pqI5pqJ5pqK5pqL5pqN5pqO5pqP5pqQ5pqS5pqT5pqU5pqV5pqYIiw0LCLmmp4iLDgsIuaaqSIsNCwi5pqvIiw0LCLmmrXmmrbmmrfmmrjmmrrmmrvmmrzmmr3mmr8iLDI1LCLmm5rmm54iLDcsIuabp+abqOabqiIsNSwi5pux5pu15pu25pu45pu65pu75pu95pyB5pyC5pyDIl0sWyI5NjQwIiwi5pyE5pyF5pyG5pyH5pyM5pyO5pyP5pyR5pyS5pyT5pyW5pyY5pyZ5pya5pyc5pye5pygIiw1LCLmnKfmnKnmnK7mnLDmnLLmnLPmnLbmnLfmnLjmnLnmnLvmnLzmnL7mnL/mnYHmnYTmnYXmnYfmnYrmnYvmnY3mnZLmnZTmnZXmnZciLDQsIuadneadouado+adpOadpuadp+adq+adrOadruadseadtOadtiJdLFsiOTY4MCIsIuaduOadueaduuadu+adveaegOaeguaeg+aeheaehuaeiOaeiuaejOaejeaejuaej+aekeaekuaek+aelOaeluaemeaem+aen+aeoOaeoeaepOaepuaeqeaerOaeruaeseaesuaetOaeuSIsNywi5p+C5p+FIiw5LCLmn5Xmn5bmn5fmn5vmn5/mn6Hmn6Pmn6Tmn6bmn6fmn6jmn6rmn6vmn63mn67mn7Lmn7UiLDcsIuafvuaggeagguagg+aghOaghuagjeagkOagkuaglOagleagmCIsNCwi5qCe5qCf5qCg5qCiIiw2LCLmoKsiLDYsIuagtOagteagtuaguuagu+agv+ahh+ahi+ahjeahj+ahkuahliIsNV0sWyI5NzQwIiwi5qGc5qGd5qGe5qGf5qGq5qGsIiw3LCLmobXmobgiLDgsIuaiguaihOaihyIsNywi5qKQ5qKR5qKS5qKU5qKV5qKW5qKYIiw5LCLmoqPmoqTmoqXmoqnmoqrmoqvmoqzmoq7morHmorLmorTmorbmorfmorgiXSxbIjk3ODAiLCLmorkiLDYsIuajgeajgyIsNSwi5qOK5qOM5qOO5qOP5qOQ5qOR5qOT5qOU5qOW5qOX5qOZ5qObIiw0LCLmo6Hmo6Lmo6QiLDksIuajr+ajsuajs+ajtOajtuajt+ajuOaju+ajveajvuajv+akgOakguakg+akhOakhiIsNCwi5qSM5qSP5qSR5qSTIiwxMSwi5qSh5qSi5qSj5qSlIiw3LCLmpK7mpK/mpLHmpLLmpLPmpLXmpLbmpLfmpLjmpLrmpLvmpLzmpL7mpYDmpYHmpYMiLDE2LCLmpZXmpZbmpZjmpZnmpZvmpZzmpZ8iXSxbIjk4NDAiLCLmpaHmpaLmpaTmpaXmpafmpajmpanmparmpazmpa3mpa/mpbDmpbIiLDQsIualuualu+alvealvualv+amgeamg+amheamiuami+amjOamjiIsNSwi5qaW5qaX5qaZ5qaa5qadIiw5LCLmpqnmpqrmpqzmpq7mpq/mprDmprLmprPmprXmprbmprjmprnmprrmprzmpr0iXSxbIjk4ODAiLCLmpr7mpr/mp4Dmp4IiLDcsIuani+anjeanj+ankeankuank+anlSIsNSwi5qec5qed5qee5qehIiwxMSwi5qeu5qev5qew5qex5qezIiw5LCLmp77mqIAiLDksIuaoiyIsMTEsIuaomSIsNSwi5qig5qiiIiw1LCLmqKnmqKvmqKzmqK3mqK7mqLDmqLLmqLPmqLTmqLYiLDYsIuaovyIsNCwi5qmF5qmG5qmIIiw3LCLmqZEiLDYsIuapmiJdLFsiOTk0MCIsIuapnCIsNCwi5qmi5qmj5qmk5qmmIiwxMCwi5qmyIiw2LCLmqbrmqbvmqb3mqb7mqb/mqoHmqoLmqoPmqoUiLDgsIuaqj+aqkiIsNCwi5qqYIiw3LCLmqqEiLDVdLFsiOTk4MCIsIuaqp+aqqOaqquaqrSIsMTE0LCLmrKXmrKbmrKgiLDZdLFsiOWE0MCIsIuasr+assOasseass+astOasteastuasuOasu+asvOasveasv+atgOatgeatguathOatheatiOatiuati+atjSIsMTEsIuatmiIsNywi5q2o5q2p5q2rIiwxMywi5q265q295q2+5q2/5q6A5q6F5q6IIl0sWyI5YTgwIiwi5q6M5q6O5q6P5q6Q5q6R5q6U5q6V5q6X5q6Y5q6Z5q6cIiw0LCLmrqIiLDcsIuauqyIsNywi5q625q64Iiw2LCLmr4Dmr4Pmr4Tmr4YiLDQsIuavjOavjuavkOavkeavmOavmuavnCIsNCwi5q+iIiw3LCLmr6zmr63mr67mr7Dmr7Hmr7Lmr7Tmr7bmr7fmr7jmr7rmr7vmr7zmr74iLDYsIuawiCIsNCwi5rCO5rCS5rCX5rCc5rCd5rCe5rCg5rCj5rCl5rCr5rCs5rCt5rCx5rCz5rC25rC35rC55rC65rC75rC85rC+5rC/5rGD5rGE5rGF5rGI5rGLIiw0LCLmsZHmsZLmsZPmsZbmsZgiXSxbIjliNDAiLCLmsZnmsZrmsaLmsaPmsaXmsabmsafmsasiLDQsIuaxseaxs+axteaxt+axuOaxuuaxu+axvOaxv+aygOayhOayh+ayiuayi+ayjeayjuaykeaykuayleayluayl+aymOaymuaynOayneaynuayoOayouayqOayrOayr+aysOaytOayteaytuayt+ayuuazgOazgeazguazg+azhuazh+aziOazi+azjeazjuazj+azkeazkuazmCJdLFsiOWI4MCIsIuazmeazmuaznOazneazn+azpOazpuazp+azqeazrOazreazsuaztOazueazv+a0gOa0gua0g+a0hea0hua0iOa0iea0iua0jea0j+a0kOa0kea0k+a0lOa0lea0lua0mOa0nOa0nea0nyIsNSwi5rSm5rSo5rSp5rSs5rSt5rSv5rSw5rS05rS25rS35rS45rS65rS/5rWA5rWC5rWE5rWJ5rWM5rWQ5rWV5rWW5rWX5rWY5rWb5rWd5rWf5rWh5rWi5rWk5rWl5rWn5rWo5rWr5rWs5rWt5rWw5rWx5rWy5rWz5rW15rW25rW55rW65rW75rW9Iiw0LCLmtoPmtoTmtobmtofmtormtovmto3mto/mtpDmtpLmtpYiLDQsIua2nOa2oua2pea2rOa2rea2sOa2sea2s+a2tOa2tua2t+a2uSIsNSwi5reB5reC5reD5reI5reJ5reKIl0sWyI5YzQwIiwi5reN5reO5reP5reQ5reS5reT5reU5reV5reX5rea5reb5rec5ref5rei5rej5rel5ren5reo5rep5req5ret5rev5rew5rey5re05re15re25re45re65re9Iiw3LCLmuIbmuIfmuIjmuInmuIvmuI/muJLmuJPmuJXmuJjmuJnmuJvmuJzmuJ7muJ/muKLmuKbmuKfmuKjmuKrmuKzmuK7muLDmuLHmuLPmuLUiXSxbIjljODAiLCLmuLbmuLfmuLnmuLsiLDcsIua5hSIsNywi5rmP5rmQ5rmR5rmS5rmV5rmX5rmZ5rma5rmc5rmd5rme5rmgIiwxMCwi5rms5rmt5rmvIiwxNCwi5rqA5rqB5rqC5rqE5rqH5rqI5rqKIiw0LCLmupEiLDYsIua6mea6mua6m+a6nea6nua6oOa6oea6o+a6pOa6pua6qOa6qea6q+a6rOa6rea6rua6sOa6s+a6tea6uOa6uea6vOa6vua6v+a7gOa7g+a7hOa7hea7hua7iOa7iea7iua7jOa7jea7jua7kOa7kua7lua7mOa7mea7m+a7nOa7nea7o+a7p+a7qiIsNV0sWyI5ZDQwIiwi5ruw5rux5ruy5ruz5ru15ru25ru35ru45ru6Iiw3LCLmvIPmvITmvIXmvIfmvIjmvIoiLDQsIua8kOa8kea8kua8liIsOSwi5ryh5ryi5ryj5ryl5rym5ryn5ryo5rys5ryu5ryw5ryy5ry05ry15ry3Iiw2LCLmvL/mvYDmvYHmvYIiXSxbIjlkODAiLCLmvYPmvYTmvYXmvYjmvYnmvYrmvYzmvY4iLDksIua9mea9mua9m+a9nea9n+a9oOa9oea9o+a9pOa9pea9pyIsNSwi5r2v5r2w5r2x5r2z5r215r225r235r255r275r29Iiw2LCLmvoXmvobmvofmvormvovmvo8iLDEyLCLmvp3mvp7mvp/mvqDmvqIiLDQsIua+qCIsMTAsIua+tOa+tea+t+a+uOa+uiIsNSwi5r+B5r+DIiw1LCLmv4oiLDYsIua/kyIsMTAsIua/n+a/oua/o+a/pOa/pSJdLFsiOWU0MCIsIua/piIsNywi5r+wIiwzMiwi54CSIiw3LCLngJwiLDYsIueApCIsNl0sWyI5ZTgwIiwi54CrIiw5LCLngLbngLfngLjngLoiLDE3LCLngY3ngY7ngZAiLDEzLCLngZ8iLDExLCLnga7ngbHngbLngbPngbTngbfngbnngbrngbvngb3ngoHngoLngoPngoTngobngofngojngovngozngo3ngo/ngpDngpHngpPngpfngpjngprngpvngp4iLDEyLCLngrDngrLngrTngrXngrbngrrngr7ngr/ng4Tng4Xng4bng4fng4nng4siLDEyLCLng5oiXSxbIjlmNDAiLCLng5zng53ng57ng6Dng6Hng6Lng6Png6Xng6rng67ng7AiLDYsIueDuOeDuueDu+eDvOeDviIsMTAsIueEiyIsNCwi54SR54SS54SU54SX54SbIiwxMCwi54SnIiw3LCLnhLLnhLPnhLQiXSxbIjlmODAiLCLnhLXnhLciLDEzLCLnhYbnhYfnhYjnhYnnhYvnhY3nhY8iLDEyLCLnhZ3nhZ8iLDQsIueFpeeFqSIsNCwi54Wv54Ww54Wx54W054W154W254W354W554W754W854W+Iiw1LCLnhoUiLDQsIueGi+eGjOeGjeeGjueGkOeGkeeGkueGk+eGleeGlueGl+eGmiIsNCwi54ahIiw2LCLnhqnnhqrnhqvnhq0iLDUsIueGtOeGtueGt+eGuOeGuiIsOCwi54eEIiw5LCLnh48iLDRdLFsiYTA0MCIsIueHliIsOSwi54eh54ei54ej54ek54em54eoIiw1LCLnh68iLDksIueHuiIsMTEsIueIhyIsMTldLFsiYTA4MCIsIueIm+eInOeIniIsOSwi54ip54ir54it54iu54iv54iy54iz54i054i654i854i+54mAIiw2LCLniYnniYrniYvniY7niY/niZDniZHniZPniZTniZXniZfniZjniZrniZzniZ7niaDniaPniaTniaXniajniarniavniaznia3nibDnibHnibPnibTnibbnibfnibjnibvnibznib3nioLnioPnioUiLDQsIueKjOeKjueKkOeKkeeKkyIsMTEsIueKoCIsMTEsIueKrueKseeKsueKs+eKteeKuiIsNiwi54uF54uG54uH54uJ54uK54uL54uM54uP54uR54uT54uU54uV54uW54uY54ua54ubIl0sWyJhMWExIiwi44CA44CB44CCwrfLicuHwqjjgIPjgIXigJTvvZ7igJbigKbigJjigJnigJzigJ3jgJTjgJXjgIgiLDcsIuOAluOAl+OAkOOAkcKxw5fDt+KItuKIp+KIqOKIkeKIj+KIquKIqeKIiOKIt+KImuKKpeKIpeKIoOKMkuKKmeKIq+KIruKJoeKJjOKJiOKIveKIneKJoOKJruKJr+KJpOKJpeKInuKIteKItOKZguKZgMKw4oCy4oCz4oSD77yEwqTvv6Dvv6HigLDCp+KEluKYhuKYheKXi+KXj+KXjuKXh+KXhuKWoeKWoOKWs+KWsuKAu+KGkuKGkOKGkeKGk+OAkyJdLFsiYTJhMSIsIuKFsCIsOV0sWyJhMmIxIiwi4pKIIiwxOSwi4pG0IiwxOSwi4pGgIiw5XSxbImEyZTUiLCLjiKAiLDldLFsiYTJmMSIsIuKFoCIsMTFdLFsiYTNhMSIsIu+8ge+8gu+8g++/pe+8hSIsODgsIu+/oyJdLFsiYTRhMSIsIuOBgSIsODJdLFsiYTVhMSIsIuOCoSIsODVdLFsiYTZhMSIsIs6RIiwxNiwizqMiLDZdLFsiYTZjMSIsIs6xIiwxNiwiz4MiLDZdLFsiYTZlMCIsIu+4te+4tu+4ue+4uu+4v++5gO+4ve+4vu+5ge+5gu+5g++5hCJdLFsiYTZlZSIsIu+4u++4vO+4t++4uO+4sSJdLFsiYTZmNCIsIu+4s++4tCJdLFsiYTdhMSIsItCQIiw1LCLQgdCWIiwyNV0sWyJhN2QxIiwi0LAiLDUsItGR0LYiLDI1XSxbImE4NDAiLCLLisuLy5nigJPigJXigKXigLXihIXihInihpbihpfihpjihpniiJXiiJ/iiKPiiZLiiabiiafiir/ilZAiLDM1LCLiloEiLDZdLFsiYTg4MCIsIuKWiCIsNywi4paT4paU4paV4pa84pa94pei4pej4pek4pel4piJ4oqV44CS44Cd44CeIl0sWyJhOGExIiwixIHDoceOw6DEk8OpxJvDqMSrw63HkMOsxY3Ds8eSw7LFq8O6x5TDuceWx5jHmsecw7zDqsmRIl0sWyJhOGJkIiwixYTFiCJdLFsiYThjMCIsIsmhIl0sWyJhOGM1Iiwi44SFIiwzNl0sWyJhOTQwIiwi44ChIiw4LCLjiqPjjo7jjo/jjpzjjp3jjp7jjqHjj4Tjj47jj5Hjj5Ljj5XvuLDvv6Lvv6QiXSxbImE5NTkiLCLihKHjiLEiXSxbImE5NWMiLCLigJAiXSxbImE5NjAiLCLjg7zjgpvjgpzjg73jg77jgIbjgp3jgp7vuYkiLDksIu+5lO+5le+5lu+5l++5mSIsOF0sWyJhOTgwIiwi77miIiw0LCLvuajvuanvuarvuasiXSxbImE5OTYiLCLjgIciXSxbImE5YTQiLCLilIAiLDc1XSxbImFhNDAiLCLni5zni53ni5/ni6IiLDUsIueLqueLq+eLteeLtueLueeLveeLvueLv+eMgOeMgueMhCIsNSwi54yL54yM54yN54yP54yQ54yR54yS54yU54yY54yZ54ya54yf54yg54yj54yk54ym54yn54yo54yt54yv54yw54yy54yz54y154y254y654y754y854y9542AIiw4XSxbImFhODAiLCLnjYnnjYrnjYvnjYznjY7njY/njZHnjZPnjZTnjZXnjZbnjZgiLDcsIueNoSIsMTAsIueNrueNsOeNsSJdLFsiYWI0MCIsIueNsiIsMTEsIueNvyIsNCwi546F546G546I546K546M546N546P546Q546S546T546U546V546X546Y546Z546a546c546d546e546g546h546jIiw1LCLnjqrnjqznjq3njrHnjrTnjrXnjrbnjrjnjrnnjrznjr3njr7njr/nj4Hnj4MiLDRdLFsiYWI4MCIsIuePi+ePjOePjuePkiIsNiwi54+a54+b54+c54+d54+f54+h54+i54+j54+k54+m54+o54+q54+r54+s54+u54+v54+w54+x54+zIiw0XSxbImFjNDAiLCLnj7giLDEwLCLnkITnkIfnkIjnkIvnkIznkI3nkI7nkJEiLDgsIueQnCIsNSwi55Cj55Ck55Cn55Cp55Cr55Ct55Cv55Cx55Cy55C3Iiw0LCLnkL3nkL7nkL/nkYDnkYIiLDExXSxbImFjODAiLCLnkY4iLDYsIueRlueRmOeRneeRoCIsMTIsIueRrueRr+eRsSIsNCwi55G455G555G6Il0sWyJhZDQwIiwi55G755G855G955G/55KC55KE55KF55KG55KI55KJ55KK55KM55KN55KP55KRIiwxMCwi55Kd55KfIiw3LCLnkqoiLDE1LCLnkrsiLDEyXSxbImFkODAiLCLnk4giLDksIueTkyIsOCwi55Od55Of55Oh55Ol55OnIiw2LCLnk7Dnk7Hnk7IiXSxbImFlNDAiLCLnk7Pnk7Xnk7giLDYsIueUgOeUgeeUgueUg+eUhSIsNywi55SO55SQ55SS55SU55SV55SW55SX55Sb55Sd55Se55SgIiw0LCLnlKbnlKfnlKrnlK7nlLTnlLbnlLnnlLznlL3nlL/nlYHnlYLnlYPnlYTnlYbnlYfnlYnnlYrnlY3nlZDnlZHnlZLnlZPnlZXnlZbnlZfnlZgiXSxbImFlODAiLCLnlZ0iLDcsIueVp+eVqOeVqeeVqyIsNiwi55Wz55W155W255W355W6Iiw0LCLnloDnloHnloLnloTnloXnlociXSxbImFmNDAiLCLnlojnlonnlornloznlo3nlo7nlpDnlpPnlpXnlpjnlpvnlpznlp7nlqLnlqYiLDQsIueWreeWtueWt+eWuueWu+eWv+eXgOeXgeeXhueXi+eXjOeXjueXj+eXkOeXkeeXk+eXl+eXmeeXmueXnOeXneeXn+eXoOeXoeeXpeeXqeeXrOeXreeXrueXr+eXsueXs+eXteeXtueXt+eXuOeXuueXu+eXveeXvueYgueYhOeYhueYhyJdLFsiYWY4MCIsIueYiOeYieeYi+eYjeeYjueYj+eYkeeYkueYk+eYlOeYlueYmueYnOeYneeYnueYoeeYo+eYp+eYqOeYrOeYrueYr+eYseeYsueYtueYt+eYueeYuueYu+eYveeZgeeZgueZhCJdLFsiYjA0MCIsIueZhSIsNiwi55mOIiw1LCLnmZXnmZciLDQsIueZneeZn+eZoOeZoeeZoueZpCIsNiwi55ms55mt55mu55mwIiw3LCLnmbnnmbrnmbznmb/nmoDnmoHnmoPnmoXnmonnmornmoznmo3nmo/nmpDnmpLnmpTnmpXnmpfnmpjnmprnmpsiXSxbImIwODAiLCLnmpwiLDcsIueapSIsOCwi55qv55qw55qz55q1Iiw5LCLnm4Dnm4Hnm4PllYrpmL/ln4PmjKjlk47llInlk4DnmpHnmYzolLznn67oib7noo3niLHpmpjpno3msKjlronkv7rmjInmmpflsrjog7rmoYjogq7mmILnm47lh7nmlZbnhqznv7HoooTlgrLlpaXmh4rmvrPoiq3mjYzmiZLlj63lkKfnrIblhavnlqTlt7Tmi5Tot4vpnbbmiorogJnlnZ3pnLjnvaLniLjnmb3mn4/nmb7mkYbkvbDotKXmi5znqJfmlpHnj63mkKzmibPoiKzpooHmnb/niYjmia7mi4zkvLTnk6PljYrlip7nu4rpgqbluK7moobmppzohoDnu5Hmo5Lno4XomozplZHlgo3osKToi57og57ljIXopJLliaUiXSxbImIxNDAiLCLnm4Tnm4fnm4nnm4vnm4znm5Pnm5Xnm5nnm5rnm5znm53nm57nm6AiLDQsIuebpiIsNywi55uw55uz55u155u255u355u655u755u955u/55yA55yC55yD55yF55yG55yK55yM55yOIiwxMCwi55yb55yc55yd55ye55yh55yj55yk55yl55yn55yq55yrIl0sWyJiMTgwIiwi55ys55yu55ywIiw0LCLnnLnnnLvnnL3nnL7nnL/nnYLnnYTnnYXnnYbnnYgiLDcsIuedkiIsNywi552c6JaE6Zu55L+d5aCh6aWx5a6d5oqx5oql5pq06LG56bKN54iG5p2v56KR5oKy5Y2R5YyX6L6I6IOM6LSd6ZKh5YCN54uI5aSH5oOr54SZ6KKr5aWU6Iuv5pys56yo5bSp57u355St5rO16Lmm6L+46YC86by75q+U6YSZ56yU5b2856Kn6JOW6JS95q+V5q+Z5q+W5biB5bqH55e56Zet5pWd5byK5b+F6L6f5aOB6IeC6YG/6Zmb6Z6t6L6557yW6LSs5omB5L6/5Y+Y5Y2e6L6o6L6p6L6r6YGN5qCH5b2q6IaY6KGo6bOW5oaL5Yir55iq5b2s5paM5r+S5ruo5a6+5pGI5YW15Yaw5p+E5LiZ56eJ6aW854KzIl0sWyJiMjQwIiwi552d552e552f552g552k552n552p552q552tIiwxMSwi552655275528556B556C556D556GIiw1LCLnno/nnpDnnpMiLDExLCLnnqHnnqPnnqTnnqbnnqjnnqvnnq3nnq7nnq/nnrHnnrLnnrTnnrYiLDRdLFsiYjI4MCIsIueevOeevuefgCIsMTIsIuefjiIsOCwi55+Y55+Z55+a55+dIiw0LCLnn6Tnl4Xlubbnjrvoj6Dmkq3mi6jpkrXms6LljZrli4PmkI/pk4LnrpTkvK/luJvoiLbohJbohormuKTms4rpqbPmjZXljZzlk7rooaXln6DkuI3luIPmraXnsL/pg6jmgJbmk6bnjJzoo4HmnZDmiY3otKLnnazouKnph4flvanoj5zolKHppJDlj4LompXmrovmg63mg6jngb/oi43oiLHku5Pmsqfol4/mk43ns5nmp73mm7nojYnljpXnrZbkvqflhozmtYvlsYLoua3mj5Llj4nojKzojLbmn6XnorTmkL3lr5/lspTlt67or6fmi4bmn7TosbrmkIDmjrronYnppovosJfnvKDpk7LkuqfpmJDpoqTmmIznjJYiXSxbImIzNDAiLCLnn6bnn6jnn6rnn6/nn7Dnn7Hnn7Lnn7Tnn7Xnn7fnn7nnn7rnn7vnn7znoIMiLDUsIuegiuegi+egjuegj+egkOegk+egleegmeegm+egnuegoOegoeegouegpOegqOegquegq+egruegr+egseegsuegs+egteegtuegveegv+ehgeehguehg+ehhOehhuehiOehieehiuehi+ehjeehj+ehkeehk+ehlOehmOehmeehmiJdLFsiYjM4MCIsIuehm+ehnOehniIsMTEsIuehryIsNywi56G456G556G656G756G9Iiw2LCLlnLrlsJ3luLjplb/lgb/ogqDljoLmlZ7nlYXllLHlgKHotoXmioTpkp7mnJ3lmLLmva7lt6LlkLXngpLovabmia/mkqTmjqPlvbvmvojpg7Toh6PovrDlsJjmmajlv7HmsonpmYjotoHooazmkpHnp7Dln47mqZnmiJDlkYjkuZjnqIvmg6nmvoTor5rmib/pgJ7pqovnp6TlkIPnl7TmjIHljJnmsaDov5/lvJvpqbDogLvpvb/kvojlsLrotaTnv4XmlqXngr3lhYXlhrLomavltIflrqDmir3phaznlbTouIznqKDmhIHnrbnku4fnu7jnnoXkuJHoh63liJ3lh7rmqbHljqjouofplITpm4/mu4HpmaTmpZoiXSxbImI0NDAiLCLnooTnooXnoobnoojnoornoovnoo/nopDnopLnopTnopXnopbnopnnop3nop7noqDnoqLnoqTnoqbnoqgiLDcsIueiteeitueit+eiuOeiuueiu+eivOeiveeiv+ejgOejguejg+ejhOejhuejh+ejiOejjOejjeejjuejj+ejkeejkuejk+ejluejl+ejmOejmiIsOV0sWyJiNDgwIiwi56Ok56Ol56Om56On56Op56Oq56Or56OtIiw0LCLno7Pno7Xno7bno7jno7nno7siLDUsIuekguekg+ekhOekhiIsNiwi56GA5YKo55+X5pCQ6Kem5aSE5o+j5bed56m/5qS95Lyg6Ii55ZaY5Liy55au56qX5bmi5bqK6Zev5Yib5ZC554KK5o226ZSk5Z6C5pil5qS/6YaH5ZSH5rez57qv6KCi5oiz57uw55a16Iyo56OB6ZuM6L6e5oWI55O36K+N5q2k5Yi66LWQ5qyh6IGq6JGx5Zux5YyG5LuO5Lib5YeR57KX6YaL57CH5L+D6Lm/56+h56qc5pGn5bSU5YKs6ISG55iB57K55res57+g5p2R5a2Y5a+456OL5pKu5pCT5o6q5oyr6ZSZ5pCt6L6+562U55ip5omT5aSn5ZGG5q255YKj5oi05bim5q6G5Luj6LS36KKL5b6F6YCuIl0sWyJiNTQwIiwi56SNIiw1LCLnpJQiLDksIueknyIsNCwi56SlIiwxNCwi56S1Iiw0LCLnpL3npL/npYLnpYPnpYTnpYXnpYfnpYoiLDgsIuellOelleelmOelmeeloeeloyJdLFsiYjU4MCIsIuelpOelpuelqeelquelq+elrOelruelsCIsNiwi56W556W7Iiw0LCLnpoLnpoPnpobnpofnpojnponnpovnpoznpo3npo7nppDnppHnppLmgKDogL3mi4XkuLnljZXpg7jmjrjog4bml6bmsK7kvYbmg67mt6Hor57lvLnom4vlvZPmjKHlhZrojaHmoaPliIDmjaPouYjlgJLlspvnpbflr7zliLDnqLvmgrzpgZPnm5flvrflvpfnmoTouaznga/nmbvnrYnnnqrlh7PpgpPloKTkvY7mu7Tov6rmlYznrJvni4TmtqTnv5/lq6HmirXlupXlnLDokoLnrKzluJ3lvJ/pgJLnvJTpoqDmjoLmu4fnopjngrnlhbjpnZvlnqvnlLXkvYPnlLjlupfmg6blpaDmt4Dmrr/noonlj7zpm5Xlh4vliIHmjonlkIrpkpPosIPot4zniLnnop/onbbov63osI3lj6AiXSxbImI2NDAiLCLnppMiLDYsIuemmyIsMTEsIuemqCIsMTAsIuemtCIsNCwi56a856a/56eC56eE56eF56eH56eI56eK56eM56eO56eP56eQ56eT56eU56eW56eX56eZIiw1LCLnp6Dnp6Hnp6Lnp6Xnp6jnp6oiXSxbImI2ODAiLCLnp6znp67np7EiLDYsIuenueenuuenvOenvuenv+eogeeohOeoheeoh+eoiOeoieeoiueojOeojyIsNCwi56iV56iW56iY56iZ56ib56ic5LiB55uv5Y+u6ZKJ6aG26byO6ZSt5a6a6K6i5Lii5Lic5Yas6JGj5oeC5Yqo5qCL5L6X5oGr5Ya75rSe5YWc5oqW5paX6Zmh6LGG6YCX55eY6YO9552j5q+S54qK54us6K+75aC155256LWM5p2c6ZWA6IKa5bqm5rih5aaS56uv55+t6ZS75q615pat57yO5aCG5YWR6Zif5a+55aKp5ZCo6Lmy5pWm6aG/5Zuk6ZKd55u+6YGB5o6H5ZOG5aSa5aS65Z6b6Lqy5py16Le66Ii15YmB5oOw5aCV6Ju+5bOo6bmF5L+E6aKd6K655ail5oG25Y6E5om86YGP6YSC6aW/5oGp6ICM5YS/6ICz5bCU6aW15rSx5LqMIl0sWyJiNzQwIiwi56id56if56ih56ii56ikIiwxNCwi56i056i156i256i456i656i+56mAIiw1LCLnqYciLDksIuepkiIsNCwi56mYIiwxNl0sWyJiNzgwIiwi56mpIiw2LCLnqbHnqbLnqbPnqbXnqbvnqbznqb3nqb7nqoLnqoXnqofnqonnqornqovnqoznqo7nqo/nqpDnqpPnqpTnqpnnqprnqpvnqp7nqqHnqqLotLDlj5HnvZrnrY/kvJDkuY/pmIDms5Xnj5Dol6nluIbnlarnv7vmqIrnn77pkpLnuYHlh6Hng6blj43ov5TojIPotKnniq/ppa3ms5vlnYroirPmlrnogqrmiL/pmLLlpqjku7/orr/nurrmlL7oj7LpnZ7llaHpo57ogqXljKror73lkKDogrrlup/msrjotLnoiqzphZrlkKnmsJvliIbnurflnZ/nhJrmsb7nsonlpYvku73lv7/mhKTnsqrkuLDlsIHmnqvonILls7DplIvpo47nlq/ng73pgKLlhq/nvJ3orr3lpYnlh6TkvZvlkKblpKvmlbfogqTlrbXmibbmi4LovpDluYXmsJ/nrKbkvI/kv5jmnI0iXSxbImI4NDAiLCLnqqPnqqTnqqfnqqnnqqrnqqvnqq4iLDQsIueqtCIsMTAsIuergCIsMTAsIuerjCIsOSwi56uX56uY56ua56ub56uc56ud56uh56ui56uk56unIiw1LCLnq67nq7Dnq7Hnq7Lnq7MiXSxbImI4ODAiLCLnq7QiLDQsIueru+ervOervuesgOesgeesguesheesh+esieesjOesjeesjueskOeskuesk+esluesl+esmOesmuesnOesneesn+esoeesoueso+esp+esqeesrea1rua2quemj+iiseW8l+eUq+aKmui+heS/r+mHnOaWp+iEr+iFkeW6nOiFkOi1tOWJr+imhui1i+WkjeWCheS7mOmYnOeItuiFuei0n+WvjOiuo+mZhOWmh+e8muWSkOWZtuWYjuivpeaUueamgumSmeeblua6ieW5sueUmOadhuafkeerv+iCnei1tuaEn+enhuaVoui1o+WGiOWImumSoue8uOiCm+e6suWyl+a4r+adoOevmeeai+mrmOiGj+e+lOezleaQnumVkOeov+WRiuWTpeatjOaQgeaIiOm4veiDs+eWmeWJsumdqeiRm+agvOibpOmYgemalOmTrOS4quWQhOe7meaguei3n+iAleabtOW6mue+uSJdLFsiYjk0MCIsIuesr+essOessuestOesteestuest+esueesu+esveesvyIsNSwi562G562I562K562N562O562T562V562X562Z562c562e562f562h562jIiwxMCwi562v562w562z562056225624562656285629562/566B566C566D566E566GIiw2LCLnro7nro8iXSxbImI5ODAiLCLnrpHnrpLnrpPnrpbnrpjnrpnnrprnrpvnrp7nrp/nrqDnrqPnrqTnrqXnrq7nrq/nrrDnrrLnrrPnrrXnrrbnrrfnrrkiLDcsIuevguevg+evhOWfguiAv+ail+W3peaUu+WKn+aBrem+muS+m+i6rOWFrOWuq+W8k+W3qeaxnuaLsei0oeWFsemSqeWLvuayn+iLn+eLl+WeouaehOi0reWkn+i+nOiPh+WSleeujeS8sOayveWtpOWnkem8k+WPpOibiumqqOiwt+iCoeaVhemhvuWbuumbh+WIrueTnOWJkOWvoeaMguikguS5luaLkOaAquajuuWFs+WumOWGoOingueuoemmhue9kOaDr+eBjOi0r+WFieW5v+mAm+eRsOinhOWcreehheW9kum+n+mXuui9qOmsvOivoeeZuOahguafnOi3qui0teWIvei+iua7muajjemUhemDreWbveaenOijuei/h+WTiCJdLFsiYmE0MCIsIuevheeviOevieeviuevi+evjeevjuevj+evkOevkuevlCIsNCwi56+b56+c56+e56+f56+g56+i56+j56+k56+n56+o56+p56+r56+s56+t56+v56+w56+yIiw0LCLnr7jnr7nnr7rnr7vnr73nr78iLDcsIuewiOewieewiuewjeewjuewkCIsNSwi57CX57CY57CZIl0sWyJiYTgwIiwi57CaIiw0LCLnsKAiLDUsIuewqOewqeewqyIsMTIsIuewuSIsNSwi57GC6aq45a2p5rW35rCm5Lql5a6z6aqH6YWj5oao6YKv6Z+p5ZCr5ra15a+S5Ye95ZaK572V57+w5pK85o2N5pex5oa+5oKN54SK5rGX5rGJ5aSv5p2t6Iiq5aOV5ZqO6LGq5q+r6YOd5aW96ICX5Y+35rWp5ZG15Zad6I236I+P5qC456a+5ZKM5L2V5ZCI55uS6LKJ6ZiC5rKz5ra46LWr6KSQ6bmk6LS65Zi/6buR55eV5b6I54ug5oGo5ZO85Lqo5qiq6KGh5oGS6L2w5ZOE54OY6Jm56bi/5rSq5a6P5byY57qi5ZaJ5L6v54y05ZC85Y6a5YCZ5ZCO5ZG85LmO5b+955Ga5aO26JGr6IOh6J2054uQ57OK5rmWIl0sWyJiYjQwIiwi57GDIiw5LCLnsY4iLDM2LCLnsbUiLDUsIuexviIsOV0sWyJiYjgwIiwi57KI57KKIiw2LCLnspPnspTnspbnspnnsprnspvnsqDnsqHnsqPnsqbnsqfnsqjnsqnnsqvnsqznsq3nsq/nsrDnsrQiLDQsIueyuueyu+W8p+iZjuWUrOaKpOS6kuayquaIt+iKseWTl+WNjueMvua7keeUu+WIkuWMluivneankOW+iuaAgOa3ruWdj+asoueOr+ahk+i/mOe8k+aNouaCo+WUpOeXquixoueElea2o+WupuW5u+iNkuaFjOm7hOejuuidl+ewp+eah+WHsOaDtueFjOaZg+W5jOaBjeiwjueBsOaMpei+ieW+veaBouiblOWbnuavgeaClOaFp+WNieaDoOaZpui0v+enveS8mueDqeaxh+ius+ivsue7mOiNpOaYj+Wpmumtgua1kea3t+ixgea0u+S8meeBq+iOt+aIluaDkemcjei0p+eluOWHu+WcvuWfuuacuueVuOeoveenr+eulSJdLFsiYmM0MCIsIueyv+ezgOezguezg+ezhOezhuezieezi+ezjiIsNiwi57OY57Oa57Ob57Od57Oe57OhIiw2LCLns6kiLDUsIuezsCIsNywi57O557O657O8IiwxMywi57SLIiw1XSxbImJjODAiLCLntJEiLDE0LCLntKHntKPntKTntKXntKbntKjntKnntKrntKzntK3ntK7ntLAiLDYsIuiCjOmlpei/uea/gOiupem4oeWnrOe7qee8ieWQieaegeajmOi+keexjembhuWPiuaApeeWvuaxsuWNs+Wriee6p+aMpOWHoOiEiuW3seiTn+aKgOWGgOWto+S8juelreWJguaCuOa1juWvhOWvguiuoeiusOaXouW/jOmZheWmk+e7p+e6quWYieaet+WkueS9s+WutuWKoOiNmumiiui0vueUsumSvuWBh+eovOS7t+aetumpvuWrgeatvOebkeWdmuWwluesuumXtOeFjuWFvOiCqeiJsOWluOe8hOiMp+ajgOafrOeiseeht+aLo+aNoeeugOS/reWJquWHj+iNkOanm+mJtOi3tei0seingemUrueureS7tiJdLFsiYmQ0MCIsIue0tyIsNTQsIue1ryIsN10sWyJiZDgwIiwi57W4IiwzMiwi5YGl6Iiw5YmR6aWv5riQ5rqF5ran5bu65YO15aec5bCG5rWG5rGf55aG6JKL5qGo5aWW6K6y5Yyg6YWx6ZmN6JWJ5qSS56SB54Sm6IO25Lqk6YOK5rWH6aqE5aiH5Zq85pCF6ZOw55+r5L6l6ISa54uh6KeS6aW657y057ue5Ym/5pWZ6YW16L2/6L6D5Y+r56qW5o+t5o6l55qG56e46KGX6Zi25oiq5Yqr6IqC5qGU5p2w5o23552r56ut5rSB57uT6Kej5aeQ5oiS6JeJ6Iql55WM5YCf5LuL55al6K+r5bGK5be+562L5pak6YeR5LuK5rSl6KWf57Sn6ZSm5LuF6LCo6L+b6Z2z5pmL56aB6L+R54Os5rW4Il0sWyJiZTQwIiwi57aZIiwxMiwi57anIiw2LCLntq8iLDQyXSxbImJlODAiLCLnt5oiLDMyLCLlsL3lirLojYblhaLojI7nnZvmmbbpsrjkuqzmg4rnsr7nsrPnu4/kupXorabmma/poojpnZnlooPmlazplZzlvoTnl4npnZbnq5/nq57lh4Dngq/nqpjmj6rnqbbnuqDnjpbpn63kuYXngbjkuZ3phZLljqnmlZHml6foh7zoiIXlko7lsLHnlprpnqDmi5jni5nnlr3lsYXpqbnoj4rlsYDlkoDnn6nkuL7msq7ogZrmi5Lmja7lt6jlhbfot53ouJ7plK/kv7Hlj6Xmg6fngqzliafmjZDpuYPlqJ/lgKbnnLfljbfnu6LmkoXmlKvmionmjpjlgJTniLXop4nlhrPor4Dnu53lnYfoj4zpkqflhpvlkJvls7siXSxbImJmNDAiLCLnt7siLDYyXSxbImJmODAiLCLnuLrnuLwiLDQsIue5giIsNCwi57mIIiwyMSwi5L+K56uj5rWa6YOh6aqP5ZaA5ZKW5Y2h5ZKv5byA5o+p5qW35Yev5oWo5YiK5aCq5YuY5Z2O56CN55yL5bq35oW357Og5omb5oqX5Lqi54KV6ICD5ou354Ok6Z2g5Z236Iub5p+v5qO156OV6aKX56eR5aOz5ZKz5Y+v5ri05YWL5Yi75a6i6K++6IKv5ZWD5Z6m5oGz5Z2R5ZCt56m65oGQ5a2U5o6n5oqg5Y+j5omj5a+H5p6v5ZOt56qf6Ium6YW35bqT6KOk5aS45Z6u5oyO6Leo6IOv5Z2X56235L6p5b+r5a695qy+5Yyh562Q54uC5qGG55+/55y25pe35Ya15LqP55uU5bK/56ql6JG15aWO6a2B5YKAIl0sWyJjMDQwIiwi57meIiwzNSwi57qDIiwyMywi57qc57qd57qeIl0sWyJjMDgwIiwi57qu57q057q757q857uW57uk57us57u557yK57yQ57ye57y357y557y7Iiw2LCLnvYPnvYYiLDksIue9kue9k+mmiOaEp+a6g+WdpOaYhuaNhuWbsOaLrOaJqeW7k+mYlOWeg+aLieWWh+icoeiFiui+o+WVpuiOseadpei1luiTneWpquagj+aLpuevrumYkeWFsOa+nOiwsOaPveiniOaHkue8hueDgua7peeQheamlOeLvOW7iumDjuacl+a1quaNnuWKs+eJouiAgeS9rOWnpemFqueDmea2neWLkuS5kOmbt+mVreiVvuejiue0r+WEoeWekuaTguiCi+exu+azquajsealnuWGt+WOmOaiqOeKgem7juevseeLuOemu+a8k+eQhuadjumHjOmypOekvOiOieiNlOWQj+agl+S4veWOieWKseegvuWOhuWIqeWCiOS+i+S/kCJdLFsiYzE0MCIsIue9lue9mee9m+e9nOe9nee9nue9oOe9oyIsNCwi572r572s572t572v572w572z57215722572357245726572757285729572/576A576CIiw3LCLnvovnvo3nvo8iLDQsIue+lSIsNCwi576b576c576g576i576j576l576m576oIiw2LCLnvrEiXSxbImMxODAiLCLnvrMiLDQsIue+uue+u+e+vue/gOe/gue/g+e/hOe/hue/h+e/iOe/iee/i+e/jee/jyIsNCwi57+W57+X57+ZIiw1LCLnv6Lnv6Pnl6Lnq4vnspLmsqXpmrblipvnkoPlk6nkv6nogZTojrLov57plbDlu4nmgJzmtp/luJjmlZvohLjpk77mgYvngrznu4Pnsq7lh4nmooHnsrHoia/kuKTovobph4/mmb7kuq7osIXmkqnogYrlg5rnlpfnh47lr6Xovr3mvabkuobmkoLplaPlu5bmlpnliJfoo4Lng4jliqPnjI7nkLPmnpfno7fpnJbkuLTpgrvps57mt4vlh5votYHlkJ3mi47njrLoj7Hpm7bpvoTpk4PkvLbnvprlh4zngbXpmbXlsq3pooblj6bku6TmupznkInmprTnoavppo/nlZnliJjnmKTmtYHmn7Plha3pvpnogYvlkpnnrLznqr8iXSxbImMyNDAiLCLnv6Tnv6fnv6jnv6rnv6vnv6znv63nv6/nv7Lnv7QiLDYsIue/vee/vue/v+iAguiAh+iAiOiAieiAiuiAjuiAj+iAkeiAk+iAmuiAm+iAneiAnuiAn+iAoeiAo+iApOiAqyIsNSwi6ICy6IC06IC56IC66IC86IC+6IGA6IGB6IGE6IGF6IGH6IGI6IGJ6IGO6IGP6IGQ6IGR6IGT6IGV6IGW6IGXIl0sWyJjMjgwIiwi6IGZ6IGbIiwxMywi6IGrIiw1LCLogbIiLDExLCLpmoblnoTmi6LpmYfmpbzlqITmkILnr5PmvI/pmYvoiqbljaLpooXlupDngonmjrPljaTomY/psoHpupPnoozpnLLot6/otYLpub/mvZ7npoTlvZXpmYbmiK7pqbTlkJXpk53kvqPml4XlsaXlsaHnvJXomZHmsK/lvovnjofmu6Tnu7/ls6bmjJvlrarmu6bljbXkubHmjqDnlaXmiqHova7kvKbku5HmsqbnurborrrokJ3onrrnvZfpgLvplKPnrqnpqqHoo7jokL3mtJvpqobnu5zlpojpurvnjpvnoIHomoLpqazpqoLlmJvlkJfln4vkubDpuqbljZbov4johInnnpLpppLom67mu6HolJPmm7zmhaLmvKsiXSxbImMzNDAiLCLogb7ogoHogoLogoXogojogorogo0iLDUsIuiClOiCleiCl+iCmeiCnuiCo+iCpuiCp+iCqOiCrOiCsOiCs+iCteiCtuiCuOiCueiCu+iDheiDhyIsNCwi6IOPIiw2LCLog5jog5/og6Dog6Log6Pog6bog67og7Xog7fog7nog7vog77og7/ohIDohIHohIPohITohIXohIfohIjohIsiXSxbImMzODAiLCLohIzohJXohJfohJnohJvohJzohJ3ohJ8iLDEyLCLohK3ohK7ohLDohLPohLTohLXohLfohLkiLDQsIuiEv+iwqeiKkuiMq+ebsuawk+W/meiOveeMq+iMhemUmuavm+efm+mThuWNr+iMguWGkuW4veiyjOi0uOS5iOeOq+aemuaihemFtumcieeFpOayoeecieWqkumVgeavj+e+juaYp+WvkOWmueWqmumXqOmXt+S7rOiQjOiSmeaqrOebn+mUsOeMm+aipuWtn+ecr+mGmumdoeeznOi/t+iwnOW8peexs+enmOinheazjOicnOWvhuW5guajieecoOe7teWGleWFjeWLieWoqee8hemdouiLl+aPj+eehOiXkOenkua4uuW6meWmmeiUkeeBreawkeaKv+eav+aVj+aCr+mXveaYjuien+m4o+mTreWQjeWRveiwrOaRuCJdLFsiYzQ0MCIsIuiFgCIsNSwi6IWH6IWJ6IWN6IWO6IWP6IWS6IWW6IWX6IWY6IWbIiw0LCLohaHohaLohaPohaTohabohajoharohavohazoha/ohbLohbPohbXohbbohbfohbjohoHohoMiLDQsIuiGieiGi+iGjOiGjeiGjuiGkOiGkiIsNSwi6IaZ6Iaa6IaeIiw0LCLohqTohqUiXSxbImM0ODAiLCLohqfohqnohqsiLDcsIuiGtCIsNSwi6Ia86Ia96Ia+6Ia/6IeE6IeF6IeH6IeI6IeJ6IeL6IeNIiw2LCLmkbnomJHmqKHohpzno6jmkanprZTmirnmnKvojqvloqjpu5jmsqvmvKDlr57pmYzosIvniZ/mn5Dmi4fniaHkuqnlp4bmr43lopPmmq7luZXli5/mhZXmnKjnm67nnabniafnqYbmi7/lk6rlkZDpkqDpgqPlqJznurPmsJbkuYPlpbbogJDlpYjljZfnlLfpmr7lm4rmjKDohJHmgbzpl7nmt5blkaLppoHlhoXlq6nog73lpq7pnJPlgKrms6XlsLzmi5/kvaDljL/ohbvpgIbmurrolKvmi4jlubTnor7mkrXmjbvlv7XlqJjphb/puJ/lsL/mjY/ogYLlrb3lla7plYrplY3mtoXmgqjmn6Dni57lh53lroEiXSxbImM1NDAiLCLoh5QiLDE0LCLoh6Toh6Xoh6boh6joh6noh6voh64iLDQsIuiHtSIsNSwi6Ie96Ie/6IiD6IiHIiw0LCLoiI7oiI/oiJHoiJPoiJUiLDUsIuiIneiIoOiIpOiIpeiIpuiIp+iIqeiIruiIsuiIuuiIvOiIveiIvyJdLFsiYzU4MCIsIuiJgOiJgeiJguiJg+iJheiJhuiJiOiJiuiJjOiJjeiJjuiJkCIsNywi6ImZ6Imb6Imc6Imd6Ime6ImgIiw3LCLoianmi6fms57niZvmia3pkq7nur3ohJPmtZPlhpzlvITlpbTliqrmgJLlpbPmmpbomZDnlp/mjKrmh6bns6/or7rlk6bmrKfpuKXmrrTol5XlkZXlgbbmsqTllarotrTniKzluJXmgJXnkLbmi43mjpLniYzlvpjmuYPmtL7mlIDmvZjnm5jno5Dnm7znlZTliKTlj5vkuZPlup7ml4HogKrog5bmipvlkobliKjngq7ooo3ot5Hms6Hlkbjog5rln7noo7TotZTpmarphY3kvanmspvllrfnm4bnoLDmiqjng7nmvo7lva3ok6zmo5rnobznr7fohqjmnIvpuY/mjafnorDlna/noJLpnLnmibnmiqvliojnkLXmr5ciXSxbImM2NDAiLCLoiaroiavoiazoia3oibHoibXoibboibfoibjoibvoibzoioDoioHoioPoioXoioboiofoionoiozoipDoipPoipToipXoipboiproipvoip7oiqDoiqLoiqPoiqfoirLoirXoirboirroirvoirzoir/oi4Doi4Loi4Poi4Xoi4boi4noi5Doi5boi5noi5roi53oi6Loi6foi6joi6noi6roi6zoi63oi67oi7Doi7Loi7Poi7Xoi7boi7giXSxbImM2ODAiLCLoi7roi7wiLDQsIuiMiuiMi+iMjeiMkOiMkuiMk+iMluiMmOiMmeiMnSIsOSwi6Iyp6Iyq6Iyu6Iyw6Iyy6Iy36Iy76Iy95ZWk6IS+55ay55qu5Yy555ee5YO75bGB6K2s56+H5YGP54mH6aqX6aOY5ryC55Oi56Wo5pKH556l5ou86aKR6LSr5ZOB6IGY5LmS5Z2q6Iu56JCN5bmz5Yet55O26K+E5bGP5Z2h5rO86aKH5amG56C06a2E6L+r57KV5YmW5omR6ZO65LuG6I6G6JGh6I+p6JKy5Z+U5py05ZyD5pmu5rWm6LCx5pud54CR5pyf5qy65qCW5oia5aa75LiD5YeE5ryG5p+S5rKP5YW25qOL5aWH5q2n55Wm5bSO6ISQ6b2Q5peX56WI56WB6aqR6LW35bKC5Lme5LyB5ZCv5aWR56CM5Zmo5rCU6L+E5byD5rG95rOj6K6r5o6QIl0sWyJjNzQwIiwi6Iy+6Iy/6I2B6I2C6I2E6I2F6I2I6I2KIiw0LCLojZPojZUiLDQsIuiNneiNouiNsCIsNiwi6I256I266I2+Iiw2LCLojofojojojorojovojozojo3ojo/ojpDojpHojpTojpXojpbojpfojpnojprojp3ojp/ojqEiLDYsIuiOrOiOreiOriJdLFsiYzc4MCIsIuiOr+iOteiOu+iOvuiOv+iPguiPg+iPhOiPhuiPiOiPieiPi+iPjeiPjuiPkOiPkeiPkuiPk+iPleiPl+iPmeiPmuiPm+iPnuiPouiPo+iPpOiPpuiPp+iPqOiPq+iPrOiPreaBsOa0veeJteaJpumSjumTheWNg+i/geetvuS7n+iwpuS5vum7lOmSsemSs+WJjea9nOmBo+a1heiwtOWgkeW1jOasoOatieaequWRm+iFlOe+jOWimeiUt+W8uuaKouaph+mUueaVsuaChOahpeeep+S5lOS+qOW3p+memOaSrOe/mOWzreS/j+eqjeWIh+iMhOS4lOaAr+eqg+mSpuS+teS6suenpueQtOWLpOiKueaTkuemveWvneaygemdkui9u+awouWAvuWNv+a4heaTjuaZtOawsOaDhemht+ivt+W6hueQvOept+eni+S4mOmCseeQg+axguWbmumFi+azhei2i+WMuuibhuabsui6r+WxiOmpsea4oCJdLFsiYzg0MCIsIuiPruiPr+iPsyIsNCwi6I+66I+76I+86I++6I+/6JCA6JCC6JCF6JCH6JCI6JCJ6JCK6JCQ6JCSIiw1LCLokJnokJrokJvokJ4iLDUsIuiQqSIsNywi6JCyIiw1LCLokLnokLrokLvokL4iLDcsIuiRh+iRiOiRiSJdLFsiYzg4MCIsIuiRiiIsNiwi6JGSIiw0LCLokZjokZ3okZ7okZ/okaDokaLokaQiLDQsIuiRquiRruiRr+iRsOiRsuiRtOiRt+iRueiRu+iRvOWPluWotum+i+i2o+WOu+WciOmip+adg+mGm+azieWFqOeXiuaLs+eKrOWIuOWKnee8uueClOeYuOWNtOm5iuamt+ehrumbgOijmee+pOeEtueHg+WGieafk+eTpOWjpOaUmOWat+iuqemltuaJsOe7leaDueeDreWjrOS7geS6uuW/jemfp+S7u+iupOWIg+Wmiue6q+aJlOS7jeaXpeaIjuiMuOiTieiNo+iejeeGlOa6tuWuuee7kuWGl+aPieaflOiCieiMueigleWEkuWtuuWmgui+seS5s+axneWFpeikpei9r+mYruiViueRnumUkOmXsOa2puiLpeW8seaSkua0kuiQqOiFrumzg+Whnui1m+S4ieWPgSJdLFsiYzk0MCIsIuiRvSIsNCwi6JKD6JKE6JKF6JKG6JKK6JKN6JKPIiw3LCLokpjokprokpvokp3okp7okp/okqDokqIiLDEyLCLokrDokrHokrPokrXokrbokrfokrvokrzokr7ok4Dok4Lok4Pok4Xok4bok4fok4jok4vok4zok47ok4/ok5Lok5Tok5Xok5ciXSxbImM5ODAiLCLok5giLDQsIuiTnuiToeiTouiTpOiTpyIsNCwi6JOt6JOu6JOv6JOxIiwxMCwi6JO96JO+6JSA6JSB6JSC5Lye5pWj5qGR5ZeT5Lin5pCU6aqa5omr5auC55Gf6Imy5rap5qOu5YOn6I6O56CC5p2A5Yi55rKZ57qx5YK75ZWl54We562b5pmS54+K6Iur5p2J5bGx5Yig54W96KGr6Zeq6ZmV5pOF6LWh6Iaz5ZaE5rGV5omH57yu5aKS5Lyk5ZWG6LWP5pmM5LiK5bCa6KOz5qKi5o2O56iN54On6IqN5Yu66Z+25bCR5ZOo6YK157uN5aWi6LWK6JuH6IiM6IiN6LWm5pGE5bCE5oWR5raJ56S+6K6+56C355Sz5ZG75Ly46Lqr5rex5aig57uF56We5rKI5a6h5am255Sa6IK+5oWO5riX5aOw55Sf55Sl54my5Y2H57uzIl0sWyJjYTQwIiwi6JSDIiw4LCLolI3olI7olI/olJDolJLolJTolJXolJbolJjolJnolJvolJzolJ3olJ7olKDolKIiLDgsIuiUrSIsOSwi6JS+Iiw0LCLolYTolYXolYbolYfolYsiLDEwXSxbImNhODAiLCLolZfolZjolZrolZvolZzolZ3olZ8iLDQsIuiVpeiVpuiVp+iVqSIsOCwi6JWz6JW16JW26JW36JW46JW86JW96JW/6JaA6JaB55yB55ub5Ymp6IOc5Zyj5biI5aSx54uu5pa95rm/6K+X5bC46Jmx5Y2B55+z5ou+5pe25LuA6aOf6JqA5a6e6K+G5Y+y55+i5L2/5bGO6am25aeL5byP56S65aOr5LiW5p+/5LqL5out6KqT6YCd5Yq/5piv5Zec5Zms6YCC5LuV5L6N6YeK6aWw5rCP5biC5oGD5a6k6KeG6K+V5pS25omL6aaW5a6I5a+/5o6I5ZSu5Y+X55im5YW96JSs5p6i5qKz5q6K5oqS6L6T5Y+U6IiS5reR55aP5Lmm6LWO5a2w54af6Jav5pqR5puZ572y6JyA6buN6byg5bGe5pyv6L+w5qCR5p2f5oiN56uW5aKF5bq25pWw5ryxIl0sWyJjYjQwIiwi6JaC6JaD6JaG6JaIIiw2LCLolpAiLDEwLCLolp0iLDYsIuiWpeiWpuiWp+iWqeiWq+iWrOiWreiWsSIsNSwi6Ja46Ja6Iiw2LCLol4IiLDYsIuiXiiIsNCwi6JeR6JeSIl0sWyJjYjgwIiwi6JeU6JeWIiw1LCLol50iLDYsIuiXpeiXpuiXp+iXqOiXqiIsMTQsIuaBleWIt+iAjeaRlOihsOeUqeW4heagk+aLtOmcnOWPjOeIveiwgeawtOedoeeojuWQrueerOmhuuiInOivtOehleaclOeDgeaWr+aSleWYtuaAneengeWPuOS4neatu+iChuWvuuWXo+Wbm+S8uuS8vOmlsuW3s+advuiAuOaAgumigumAgeWui+iuvOivteaQnOiJmOaTnuWXveiLj+mFpeS/l+e0oOmAn+eyn+WDs+Whkea6r+Wuv+ivieiCg+mFuOiSnOeul+iZvemai+maj+e7pemrk+eijuWygeepl+mBgumap+eln+WtmeaNn+esi+iTkeaireWUhue8qeeQkOe0oumUgeaJgOWhjOS7luWug+WlueWhlCJdLFsiY2M0MCIsIuiXueiXuuiXvOiXveiXvuiYgCIsNCwi6JiGIiwxMCwi6JiS6JiT6JiU6JiV6JiXIiwxNSwi6Jio6JiqIiwxMywi6Ji56Ji66Ji76Ji96Ji+6Ji/6JmAIl0sWyJjYzgwIiwi6JmBIiwxMSwi6JmS6JmT6JmVIiw0LCLomZvomZzomZ3omZ/omaDomaHomaMiLDcsIueNreaMnui5i+i4j+iDjuiLlOaKrOWPsOazsOmFnuWkquaAgeaxsOWdjeaRiui0queYq+a7qeWdm+aqgOeXsOa9reiwreiwiOWdpuavr+iikueis+aOouWPueeCreaxpOWhmOaQquWgguajoOiGm+WUkOezluWAmOi6uua3jOi2n+eDq+aOj+a2m+a7lOe7puiQhOahg+mAg+a3mOmZtuiuqOWll+eJueiXpOiFvueWvOiqiuair+WJlOi4oumUkeaPkOmimOi5hOWVvOS9k+abv+Waj+aDlea2leWJg+WxieWkqea3u+Whq+eUsOeUnOaBrOiIlOiFhuaMkeadoei/ouecuui3s+i0tOmTgeW4luWOheWQrOeDgyJdLFsiY2Q0MCIsIuiZreiZr+iZsOiZsiIsNiwi6JqDIiw2LCLomo4iLDQsIuialOialiIsNSwi6JqeIiw0LCLomqXomqbomqvomq3omq7omrLomrPomrfomrjomrnomrsiLDQsIuibgeibguibg+ibheibiOibjOibjeibkuibk+ibleibluibl+ibmuibnCJdLFsiY2Q4MCIsIuibneiboOiboeibouibo+ibpeibpuibp+ibqOibquibq+ibrOibr+ibteibtuibt+ibuuibu+ibvOibveibv+icgeichOicheichuici+icjOicjuicj+ickOickeiclOicluaxgOW7t+WBnOS6reW6reaMuuiJh+mAmuahkOmFruees+WQjOmTnOW9pOerpeahtuaNheetkue7n+eXm+WBt+aKleWktOmAj+WHuOeng+eqgeWbvuW+kumAlOa2guWxoOWcn+WQkOWFlOa5jeWbouaOqOmik+iFv+icleikqumAgOWQnuWxr+iHgOaLluaJmOiEsem4temZgOmprumpvOakreWmpeaLk+WUvuaMluWTh+ibmea0vOWog+eTpuiinOatquWkluixjOW8r+a5vueOqemhveS4uOeDt+WujOeil+aMveaZmuealuaDi+Wum+WpieS4h+iFleaxqueOi+S6oeaeiee9keW+gOaXuuacm+W/mOWmhOWogSJdLFsiY2U0MCIsIuicmeicm+icneicn+icoOicpOicpuicp+icqOicquicq+icrOicreicr+icsOicsuics+icteictuicuOicueicuuicvOicveidgCIsNiwi6J2K6J2L6J2N6J2P6J2Q6J2R6J2S6J2U6J2V6J2W6J2Y6J2aIiw1LCLonaHonaLonaYiLDcsIuidr+idseidsuids+idtSJdLFsiY2U4MCIsIuidt+iduOidueiduuidv+iegOiegeiehOiehuieh+ieieieiuiejOiejiIsNCwi6J6U6J6V6J6W6J6YIiw2LCLonqAiLDQsIuW3jeW+ruWNsemfpui/neahheWbtOWUr+aDn+S4uua9jee7tOiLh+iQjuWnlOS8n+S8quWwvue6rOacquiUmuWRs+eVj+iDg+WWgumtj+S9jea4reiwk+WwieaFsOWNq+eYn+a4qeiaiuaWh+mXu+e6ueWQu+eos+e0iumXruWXoee/geeTruaMneicl+a2oeeqneaIkeaWoeWNp+aPoeayg+W3q+WRnOmSqOS5jOaxoeivrOWxi+aXoOiKnOaip+WQvuWQtOavi+atpuS6lOaNguWNiOiInuS8jeS+ruWdnuaIiumbvuaZpOeJqeWLv+WKoeaCn+ivr+aYlOeGmeaekOilv+ehkuefveaZsOWYu+WQuOmUoeeJuiJdLFsiY2Y0MCIsIuiepeiepuiep+ieqeiequieruiesOieseiesuietOietuiet+ieuOieueieu+ievOievuiev+ifgSIsNCwi6J+H6J+I6J+J6J+MIiw0LCLon5QiLDYsIuifnOifneifnuifn+ifoeifouifo+ifpOifpuifp+ifqOifqeifq+ifrOifreifryIsOV0sWyJjZjgwIiwi6J+66J+76J+86J+96J+/6KCA6KCB6KCC6KCEIiw1LCLooIsiLDcsIuiglOigl+igmOigmeigmuignCIsNCwi6KCj56iA5oGv5biM5oKJ6Iad5aSV5oOc54aE54Ov5rqq5rGQ54qA5qqE6KKt5bit5Lmg5aqz5Zac6ZOj5rSX57O76ZqZ5oiP57uG556O6Jm+5Yyj6Zye6L6W5pqH5bOh5L6g54ut5LiL5Y6m5aSP5ZCT5o6A6ZSo5YWI5LuZ6bKc57qk5ZK46LSk6KGU6Ii36Zey5raO5bym5auM5pi+6Zmp546w54yu5Y6/6IW66aaF576h5a6q6Zm36ZmQ57q/55u45Y6i6ZW26aaZ566x6KWE5rmY5Lmh57+U56Wl6K+m5oOz5ZON5Lqr6aG55be35qmh5YOP5ZCR6LGh6JCn56Gd6ZyE5YmK5ZOu5Zqj6ZSA5raI5a615reG5pmTIl0sWyJkMDQwIiwi6KCkIiwxMywi6KCzIiw1LCLooLrooLvooL3ooL7ooL/ooYHooYLooYPooYYiLDUsIuihjiIsNSwi6KGV6KGW6KGY6KGaIiw2LCLooabooafooarooa3ooa/oobHoobPoobToobXoobboobjoobnooboiXSxbImQwODAiLCLoobvoobzoooDoooPooobooofooonooorooozooo7ooo/oopDoopHoopPoopToopXoopciLDQsIuiinSIsNCwi6KKj6KKlIiw1LCLlsI/lrZ3moKHogpbllbjnrJHmlYjmpZTkupvmrYfonY7pnovljY/mjJ/mkLrpgqrmlpzog4HosJDlhpnmorDljbjon7nmh4jms4Tms7vosKLlsZHolqroiq/plIzmrKPovpvmlrDlv7vlv4Pkv6HooYXmmJ/ohaXnjKnmg7rlhbTliJHlnovlvaLpgqLooYzphpLlubjmnY/mgKflp5PlhYTlh7bog7jljIjmsbnpm4TnhorkvJHkv67nvp7mnL3ll4XplIjnp4Doopbnu6Plop/miIzpnIDomZrlmJjpobvlvpDorrjok4TphZflj5nml63luo/nlZzmgaTnta7lqb/nu6rnu63ovanllqflrqPmgqzml4vnjoQiXSxbImQxNDAiLCLooqzooq7ooq/oorDoorIiLDQsIuiiuOiiueiiuuiiu+iiveiivuiiv+ijgOijg+ijhOijh+ijiOijiuiji+ijjOijjeijj+ijkOijkeijk+ijluijl+ijmiIsNCwi6KOg6KOh6KOm6KOn6KOpIiw2LCLoo7Loo7Xoo7boo7foo7roo7voo73oo7/opIDopIHopIMiLDVdLFsiZDE4MCIsIuikieikiyIsNCwi6KSR6KSUIiw0LCLopJwiLDQsIuikouiko+ikpOikpuikp+ikqOikqeikrOikreikruikr+ikseiksuiks+ikteikt+mAieeZo+ecqee7mumdtOiWm+WtpueptOmbquihgOWLi+eGj+W+quaXrOivouWvu+mpr+W3oeauieaxm+iureiur+mAiui/heWOi+aKvOm4pum4reWRgOS4q+iKveeJmeianOW0luihmea2r+mbheWTkeS6muiutueEieWSvemYieeDn+a3ueebkOS4peeglOickuWyqeW7tuiogOminOmYjueCjuayv+WlhOaOqeecvOihjea8lOiJs+WgsOeHleWOjOegmumbgeWUgeW9pueEsOWutOiwmumqjOaug+Wkrum4r+enp+adqOaJrOS9r+eWoee+iua0i+mYs+awp+S7sOeXkuWFu+agt+a8vumCgOiFsOWmlueRtiJdLFsiZDI0MCIsIuikuCIsOCwi6KWC6KWD6KWFIiwyNCwi6KWgIiw1LCLopaciLDE5LCLopbwiXSxbImQyODAiLCLopb3opb7opoDopoLopoTopoXopociLDI2LCLmkYflsKfpgaXnqpHosKPlp5rlkqzoiIDoja/opoHogIDmpLDlmY7ogLbniLfph47lhrbkuZ/pobXmjpbkuJrlj7bmm7PohYvlpJzmtrLkuIDlo7nljLvmj5bpk7Hkvp3kvIrooaPpopDlpLfpgZfnp7vku6rog7DnlpHmsoLlrpzlp6jlvZ3mpIXomoHlgJrlt7LkuZnnn6Pku6XoibrmipHmmJPpgpHlsbnkur/lvbnoh4bpgLjogoTnlqvkuqboo5TmhI/mr4Xlv4bkuYnnm4rmuqLor6Porq7osIror5HlvILnv7znv4znu47ojLXojavlm6Dmrrfpn7PpmLTlp7vlkJ/pk7bmt6vlr4Xppa7lsLnlvJXpmpAiXSxbImQzNDAiLCLopqIiLDMwLCLop4Pop43op5Pop5Top5Xop5fop5jop5nop5vop53op5/op6Dop6Hop6Lop6Top6fop6jop6nop6rop6zop63op67op7Dop7Hop7Lop7QiLDZdLFsiZDM4MCIsIuinuyIsNCwi6KiBIiw1LCLoqIgiLDIxLCLljbDoi7HmqLHlqbTpubDlupTnvKjojrnokKTokKXojafonYfov47otaLnm4jlvbHpopbnoazmmKDlk5/mi6XkvaPoh4Pnl4jlurjpm43ouIrom7nlko/ms7PmtozmsLjmgb/li4fnlKjlub3kvJjmgqDlv6flsKTnlLHpgq7pk4DnirnmsrnmuLjphYnmnInlj4vlj7PkvZHph4nor7Hlj4jlubzov4Lmt6Tkuo7nm4LmpobomZ7mhJroiIbkvZnkv57pgL7psbzmhInmuJ3muJTpmoXkuojlqLHpm6jkuI7lsb/nprnlrofor63nvr3njonln5/oiovpg4HlkIHpgYfllrvls6rlvqHmhIjmrLLni7HogrLoqokiXSxbImQ0NDAiLCLoqJ4iLDMxLCLoqL8iLDgsIuipiSIsMjFdLFsiZDQ4MCIsIuipnyIsMjUsIuipuiIsNiwi5rW05a+T6KOV6aKE6LGr6amt6biz5riK5Yak5YWD5Z6j6KKB5Y6f5o+06L6V5Zut5ZGY5ZyG54y/5rqQ57yY6L+c6IuR5oS/5oCo6Zmi5puw57qm6LaK6LeD6ZKl5bKz57Kk5pyI5oKm6ZiF6ICY5LqR6YOn5YyA6Zmo5YWB6L+Q6JW06YWd5pmV6Z+15a2V5Yyd56C45p2C5qC95ZOJ54G+5a6w6L295YaN5Zyo5ZKx5pSS5pqC6LWe6LWD6ISP6JGs6YGt57Of5Ye/6Je75p6j5pep5r6h6Jqk6LqB5Zmq6YCg55qC54G254el6LSj5oup5YiZ5rO96LS85oCO5aKe5oaO5pu+6LWg5omO5Zaz5rij5pyt6L2nIl0sWyJkNTQwIiwi6KqBIiw3LCLoqosiLDcsIuiqlCIsNDZdLFsiZDU4MCIsIuirgyIsMzIsIumToemXuOecqOagheamqOWSi+S5jeeCuOiviOaRmOaWi+WuheeqhOWAuuWvqOeeu+avoeipueeymOayvuebj+aWqei+l+W0reWxleiYuOagiOWNoOaImOermea5m+e7veaon+eroOW9sOa8s+W8oOaOjOa2qOadluS4iOW4kOi0puS7l+iDgOeYtOmanOaLm+aYreaJvuayvOi1teeFp+e9qeWFhuiCh+WPrOmBruaKmOWTsuibsOi+meiAhemUl+iUl+i/mea1meePjeaWn+ecn+eUhOegp+iHu+i0numSiOS+puaeleeWueiviumch+aMr+mVh+mYteiSuOaMo+edgeW+geeLsOS6ieaAlOaVtOaLr+ato+aUvyJdLFsiZDY0MCIsIuirpCIsMzQsIuisiCIsMjddLFsiZDY4MCIsIuispOispeispyIsMzAsIuW4p+eXh+mDkeivgeiKneaeneaUr+WQseicmOefpeiCouiEguaxgeS5i+e7h+iBjOebtOakjeauluaJp+WAvOS+hOWdgOaMh+atoui2vuWPquaXqOe6uOW/l+aMmuaOt+iHs+iHtOe9ruW4nOWzmeWItuaZuuenqeeomui0qOeCmeeXlOa7nuayu+eqkuS4reebheW/oOmSn+iht+e7iOenjeiCv+mHjeS7suS8l+iIn+WRqOW3nua0suivjOeypei9tOiCmOW4muWSkueaseWumeaYvOmqpOePoOagquibm+acseeMquivuOivm+mAkOerueeDm+eFruaLhOeeqeWYseS4u+iRl+afseWKqeibgOi0rumTuOetkSJdLFsiZDc0MCIsIuithiIsMzEsIuitpyIsNCwi6K2tIiwyNV0sWyJkNzgwIiwi6K6HIiwyNCwi6K6s6K6x6K676K+H6K+Q6K+q6LCJ6LCe5L2P5rOo56Wd6am75oqT54iq5ou95LiT56CW6L2s5pKw6LWa56+G5qGp5bqE6KOF5aaG5pKe5aOu54q25qSO6ZSl6L+96LWY5Z2g57yA6LCG5YeG5o2J5ouZ5Y2T5qGM55Ci6IyB6YWM5ZWE552A54G85rWK5YW55ZKo6LWE5ae/5ruL5reE5a2c57Sr5LuU57G95ruT5a2Q6Ieq5riN5a2X6ayD5qOV6Liq5a6X57u85oC757q16YK56LWw5aWP5o+N56ef6Laz5Y2S5peP56WW6K+F6Zi757uE6ZK757qC5Zi06YaJ5pyA572q5bCK6YG15pio5bem5L2Q5p+e5YGa5L2c5Z2Q5bqnIl0sWyJkODQwIiwi6LC4Iiw4LCLosYLosYPosYTosYXosYjosYrosYvosY0iLDcsIuixluixl+ixmOixmeixmyIsNSwi6LGjIiw2LCLosawiLDYsIuixtOixteixtuixt+ixuyIsNiwi6LKD6LKE6LKG6LKHIl0sWyJkODgwIiwi6LKI6LKL6LKNIiw2LCLospXospbospfospkiLDIwLCLkuo3kuIzlhYDkuJDlu7/ljYXkuJXkupjkuJ7prLLlrazlmankuKjnprrkuL/ljJXkuYflpK3niLvlja7msJDlm5/og6Tpppfmr5Pnnb7pvJfkuLbkup/pvJDkuZzkuankupPoiojlrZvllazlmI/ku4Tljo3ljp3ljqPljqXljq7pnaXotZ3ljJrlj7XljKbljK7ljL7otZzljabljaPliILliIjliI7liK3liLPliL/liYDliYzliZ7liaHliZzokq/lib3lioLlioHlipDlipPlhoLnvZTkurvku4Pku4nku4Lku6jku6Hku6vku57kvJvku7PkvKLkvaTku7XkvKXkvKfkvInkvKvkvZ7kvafmlLjkvZrkvZ0iXSxbImQ5NDAiLCLosq4iLDYyXSxbImQ5ODAiLCLos60iLDMyLCLkvZ/kvZfkvLLkvL3kvbbkvbTkvpHkvonkvoPkvo/kvb7kvbvkvqrkvbzkvqzkvpTkv6bkv6jkv6rkv4Xkv5rkv6Pkv5zkv5Hkv5/kv7jlgKnlgYzkv7PlgKzlgI/lgK7lgK3kv77lgJzlgIzlgKXlgKjlgb7lgYPlgZXlgYjlgY7lgazlgbvlgqXlgqflgqnlgrrlg5blhIblg63lg6zlg6blg67lhIflhIvku53msL3kvZjkvaXkv47pvqDmsYbnsbTlha7lt73pu4npppjlhoHlpJTli7nljI3oqIfljJDlh6vlpJnlhZXkuqDlhZbkurPooa7ooqTkurXohJToo5LnpoDlrLTooIPnvrjlhqvlhrHlhr3lhrwiXSxbImRhNDAiLCLotI4iLDE0LCLotKDotZHotZLotZfotZ/otaXotajotanotarotazota7ota/otbHotbLotbgiLDgsIui2gui2g+i2hui2h+i2iOi2iei2jCIsNCwi6LaS6LaT6LaVIiw5LCLotqDotqEiXSxbImRhODAiLCLotqLotqQiLDEyLCLotrLotrbotrfotrnotrvotr3ot4Dot4Hot4Lot4Xot4fot4jot4not4rot43ot5Dot5Lot5Pot5Tlh4flhpblhqLlhqXorqDorqborqforqrorrTorrXorrfor4Lor4Por4vor4/or47or5Lor5Por5Tor5bor5jor5nor5zor5/or6Dor6Tor6jor6nor67or7Dor7Por7bor7nor7zor7/osIDosILosITosIfosIzosI/osJHosJLosJTosJXosJbosJnosJvosJjosJ3osJ/osKDosKHosKXosKfosKrosKvosK7osK/osLLosLPosLXosLbljanljbrpmJ3pmKLpmKHpmLHpmKrpmL3pmLzpmYLpmYnpmZTpmZ/pmafpmazpmbLpmbTpmojpmo3pmpfpmrDpgpfpgpvpgp3pgpnpgqzpgqHpgrTpgrPpgrbpgroiXSxbImRiNDAiLCLot5Xot5jot5not5zot6Dot6Hot6Lot6Xot6bot6fot6not63ot67ot7Dot7Hot7Lot7Tot7bot7zot74iLDYsIui4hui4h+i4iOi4i+i4jei4jui4kOi4kei4kui4k+i4lSIsNywi6Lig6Lih6LikIiw0LCLouKvouK3ouLDouLLouLPouLTouLbouLfouLjouLvouLzouL4iXSxbImRiODAiLCLouL/ouYPouYXouYbouYwiLDQsIui5kyIsNSwi6LmaIiwxMSwi6Lmn6Lmo6Lmq6Lmr6Lmu6Lmx6YK46YKw6YOP6YOF6YK+6YOQ6YOE6YOH6YOT6YOm6YOi6YOc6YOX6YOb6YOr6YOv6YO+6YSE6YSi6YSe6YSj6YSx6YSv6YS56YWD6YWG5YiN5aWC5Yqi5Yqs5Yqt5Yq+5ZO/5YuQ5YuW5Yuw5Y+f54eu55+N5bu05Ye15Ye86ayv5Y625byB55Wa5bev5Z2M5Z6p5Z6h5aG+5aK85aOF5aOR5Zyp5Zys5Zyq5Zyz5Zy55Zyu5Zyv5Z2c5Zy75Z2C5Z2p5Z6F5Z2r5Z6G5Z285Z275Z2o5Z2t5Z225Z2z5Z6t5Z6k5Z6M5Z6y5Z+P5Z6n5Z605Z6T5Z6g5Z+V5Z+Y5Z+a5Z+Z5Z+S5Z645Z+05Z+v5Z+45Z+k5Z+dIl0sWyJkYzQwIiwi6Lmz6Lm16Lm3Iiw0LCLoub3oub7ouoDouoLouoPouoTouobouogiLDYsIui6kei6kui6k+i6lSIsNiwi6Lqd6LqfIiwxMSwi6Lqt6Lqu6Lqw6Lqx6LqzIiw2LCLoursiLDddLFsiZGM4MCIsIui7gyIsMTAsIui7jyIsMjEsIuWgi+WgjeWfveWfreWggOWgnuWgmeWhhOWgoOWhpeWhrOWigeWiieWimuWigOmmqOm8meaHv+iJueiJveiJv+iKj+iKiuiKqOiKhOiKjuiKkeiKl+iKmeiKq+iKuOiKvuiKsOiLiOiLiuiLo+iKmOiKt+iKruiLi+iLjOiLgeiKqeiKtOiKoeiKquiKn+iLhOiLjuiKpOiLoeiMieiLt+iLpOiMj+iMh+iLnOiLtOiLkuiLmOiMjOiLu+iLk+iMkeiMmuiMhuiMlOiMleiLoOiLleiMnOiNkeiNm+iNnOiMiOiOkuiMvOiMtOiMseiOm+iNnuiMr+iNj+iNh+iNg+iNn+iNgOiMl+iNoOiMreiMuuiMs+iNpuiNpSJdLFsiZGQ0MCIsIui7pSIsNjJdLFsiZGQ4MCIsIui8pCIsMzIsIuiNqOiMm+iNqeiNrOiNquiNreiNruiOsOiNuOiOs+iOtOiOoOiOquiOk+iOnOiOheiNvOiOtuiOqeiNveiOuOiNu+iOmOiOnuiOqOiOuuiOvOiPgeiQgeiPpeiPmOWgh+iQmOiQi+iPneiPveiPluiQnOiQuOiQkeiQhuiPlOiPn+iQj+iQg+iPuOiPueiPquiPheiPgOiQpuiPsOiPoeiRnOiRkeiRmuiRmeiRs+iSh+iSiOiRuuiSieiRuOiQvOiRhuiRqeiRtuiSjOiSjuiQseiRreiTgeiTjeiTkOiTpuiSveiTk+iTiuiSv+iSuuiToOiSoeiSueiStOiSl+iTpeiTo+iUjOeUjeiUuOiTsOiUueiUn+iUuiJdLFsiZGU0MCIsIui9hSIsMzIsIui9qui+gOi+jOi+kui+nei+oOi+oei+oui+pOi+pei+pui+p+i+qui+rOi+rei+rui+r+i+sui+s+i+tOi+tei+t+i+uOi+uui+u+i+vOi+v+i/gOi/g+i/hiJdLFsiZGU4MCIsIui/iSIsNCwi6L+P6L+S6L+W6L+X6L+a6L+g6L+h6L+j6L+n6L+s6L+v6L+x6L+y6L+06L+16L+26L+66L+76L+86L++6L+/6YCH6YCI6YCM6YCO6YCT6YCV6YCY6JWW6JS76JO/6JO86JWZ6JWI6JWo6JWk6JWe6JW6556i6JWD6JWy6JW76Jak6Jao6JaH6JaP6JW56Jau6Jac6JaF6Ja56Ja36Jaw6JeT6JeB6Jec6Je/6Jin6JiF6Jip6JiW6Ji85bu+5byI5aS85aWB6IC35aWV5aWa5aWY5YyP5bCi5bCl5bCs5bC05omM5omq5oqf5oq75ouK5oua5ouX5ouu5oyi5ou25oy55o2L5o2D5o6t5o+25o2x5o265o6O5o605o2t5o6s5o6K5o2p5o6u5o685o+y5o+45o+g5o+/5o+E5o+e5o+O5pGS5o+G5o6+5pGF5pGB5pCL5pCb5pCg5pCM5pCm5pCh5pGe5pKE5pGt5pKWIl0sWyJkZjQwIiwi6YCZ6YCc6YCj6YCk6YCl6YCnIiw1LCLpgLAiLDQsIumAt+mAuemAuumAvemAv+mBgOmBg+mBhemBhumBiCIsNCwi6YGO6YGU6YGV6YGW6YGZ6YGa6YGcIiw1LCLpgaTpgabpgafpganpgarpgavpgazpga8iLDQsIumBtiIsNiwi6YG+6YKBIl0sWyJkZjgwIiwi6YKE6YKF6YKG6YKH6YKJ6YKK6YKMIiw0LCLpgpLpgpTpgpbpgpjpgprpgpzpgp7pgp/pgqDpgqTpgqXpgqfpgqjpgqnpgqvpgq3pgrLpgrfpgrzpgr3pgr/pg4Dmkbrmkrfmkrjmkpnmkrrmk4Dmk5Dmk5fmk6Tmk6LmlInmlKXmlK7lvIvlv5LnlJnlvJHljZ/lj7Hlj73lj6nlj6jlj7vlkJLlkJblkIblkYvlkZLlkZPlkZTlkZblkYPlkKHlkZflkZnlkKPlkLLlkoLlkpTlkbflkbHlkaTlkprlkpvlkoTlkbblkablkp3lk5Dlkq3lk4LlkrTlk5Llkqflkqblk5Plk5TlkbLlkqPlk5Xlkrvlkr/lk4zlk5nlk5rlk5zlkqnlkqrlkqTlk53lk4/lk57llJvlk6fllKDlk73llJTlk7PllKLllKPllI/llJHllKfllKrllafllo/llrXllYnlla3llYHllZXllL/llZDllLwiXSxbImUwNDAiLCLpg4Lpg4Ppg4bpg4jpg4npg4vpg4zpg43pg5Lpg5Tpg5Xpg5bpg5jpg5npg5rpg57pg5/pg6Dpg6Ppg6Tpg6Xpg6npg6rpg6zpg67pg7Dpg7Hpg7Lpg7Ppg7Xpg7bpg7fpg7npg7rpg7vpg7zpg7/phIDphIHphIPphIUiLDE5LCLphJrphJvphJwiXSxbImUwODAiLCLphJ3phJ/phKDphKHphKQiLDEwLCLphLDphLIiLDYsIumEuiIsOCwi6YWE5ZS35ZWW5ZW15ZW25ZW35ZSz5ZSw5ZWc5ZaL5ZeS5ZaD5Zax5Za55ZaI5ZaB5Zaf5ZW+5ZeW5ZaR5ZW75Zef5Za95Za+5ZaU5ZaZ5Zeq5Ze35ZeJ5Zif5ZeR5Zer5Zes5ZeU5Zem5Zed5ZeE5Zev5Zel5Zey5Zez5ZeM5ZeN5Zeo5Ze15Zek6L6U5Zie5ZiI5ZiM5ZiB5Zik5Zij5Ze+5ZiA5Zin5Zit5ZmY5Zi55ZmX5Zis5ZmN5Zmi5ZmZ5Zmc5ZmM5ZmU5ZqG5Zmk5Zmx5Zmr5Zm75Zm85ZqF5ZqT5Zqv5ZuU5ZuX5Zud5Zuh5Zu15Zur5Zu55Zu/5ZyE5ZyK5ZyJ5Zyc5biP5biZ5biU5biR5bix5bi75bi8Il0sWyJlMTQwIiwi6YWF6YWH6YWI6YWR6YWT6YWU6YWV6YWW6YWY6YWZ6YWb6YWc6YWf6YWg6YWm6YWn6YWo6YWr6YWt6YWz6YW66YW76YW86YaAIiw0LCLphobphojphorpho7pho/phpMiLDYsIumGnCIsNSwi6YakIiw1LCLphqvphqzphrDphrHphrLphrPphrbphrfphrjphrnphrsiXSxbImUxODAiLCLphrwiLDEwLCLph4jph4vph5Dph5IiLDksIumHnSIsOCwi5bi35bmE5bmU5bmb5bme5bmh5bKM5bG65bKN5bKQ5bKW5bKI5bKY5bKZ5bKR5bKa5bKc5bK15bKi5bK95bKs5bKr5bKx5bKj5bOB5bK35bOE5bOS5bOk5bOL5bOl5bSC5bSD5bSn5bSm5bSu5bSk5bSe5bSG5bSb5bWY5bS+5bS05bS95bWs5bWb5bWv5bWd5bWr5bWL5bWK5bWp5bW05baC5baZ5bad6LGz5ba35beF5b2z5b235b6C5b6H5b6J5b6M5b6V5b6Z5b6c5b6o5b6t5b615b686KGi5b2h54qt54qw54q054q354q454uD54uB54uO54uN54uS54uo54uv54up54uy54u054u354yB54uz54yD54u6Il0sWyJlMjQwIiwi6YemIiw2Ml0sWyJlMjgwIiwi6YilIiwzMiwi54u754yX54yT54yh54yK54ye54yd54yV54yi54y554yl54ys54y454yx542Q542N542X542g542s542v542+6Iib5aSl6aOn5aSk5aSC6aWj6aWnIiw1LCLppbTppbfppb3ppoDppoTppofpporppo3pppDpppHpppPpppTpppXluoDlupHluovlupbluqXluqDlurnlurXlur7lurPotZPlu5Llu5Hlu5vlu6jlu6rohrrlv4Tlv4nlv5blv4/mgIPlv67mgITlv6Hlv6Tlv77mgIXmgIblv6rlv63lv7jmgJnmgLXmgKbmgJvmgI/mgI3mgKnmgKvmgIrmgL/mgKHmgbjmgbnmgbvmgbrmgYIiXSxbImUzNDAiLCLpiYYiLDQ1LCLpibUiLDE2XSxbImUzODAiLCLpioYiLDcsIumKjyIsMjQsIuaBquaBveaCluaCmuaCreaCneaCg+aCkuaCjOaCm+aDrOaCu+aCseaDneaDmOaDhuaDmuaCtOaEoOaEpuaEleaEo+aDtOaEgOaEjuaEq+aFiuaFteaGrOaGlOaGp+aGt+aHlOaHteW/nemas+mXqemXq+mXsemXs+mXtemXtumXvOmXvumYg+mYhOmYhumYiOmYiumYi+mYjOmYjemYj+mYkumYlemYlumYl+mYmemYmuS4rOeIv+aIleawteaxlOaxnOaxiuayo+ayheaykOaylOayjOaxqOaxqeaxtOaxtuayhuayqeazkOazlOayreazt+azuOazseazl+aysuazoOazluazuuazq+azruayseazk+azr+azviJdLFsiZTQ0MCIsIumKqCIsNSwi6YqvIiwyNCwi6YuJIiwzMV0sWyJlNDgwIiwi6YupIiwzMiwi5rS55rSn5rSM5rWD5rWI5rSH5rSE5rSZ5rSO5rSr5rWN5rSu5rS15rSa5rWP5rWS5rWU5rSz5raR5rWv5rae5rag5rWe5raT5raU5rWc5rWg5rW85rWj5ria5reH5reF5ree5riO5ra/5reg5riR5rem5red5reZ5riW5rar5riM5rau5rir5rmu5rmO5rmr5rqy5rmf5rqG5rmT5rmU5riy5ril5rmE5ruf5rqx5rqY5rug5ryt5rui5rql5rqn5rq95rq75rq35ruX5rq05ruP5rqP5ruC5rqf5r2i5r2G5r2H5ryk5ryV5ru55ryv5ry25r2L5r205ryq5ryJ5ryp5r6J5r6N5r6M5r245r2y5r285r265r+RIl0sWyJlNTQwIiwi6YyKIiw1MSwi6Yy/IiwxMF0sWyJlNTgwIiwi6Y2KIiwzMSwi6Y2r5r+J5r6n5r655r625r+C5r+h5r+u5r+e5r+g5r+v54Ca54Cj54Cb54C554C154GP54Ge5a6A5a6E5a6V5a6T5a6l5a6455Sv6aqe5pC05a+k5a+u6KSw5a+w6LmH6KyH6L626L+T6L+V6L+l6L+u6L+k6L+p6L+m6L+z6L+o6YCF6YCE6YCL6YCm6YCR6YCN6YCW6YCh6YC16YC26YCt6YCv6YGE6YGR6YGS6YGQ6YGo6YGY6YGi6YGb5pq56YG06YG96YKC6YKI6YKD6YKL5b2Q5b2X5b2W5b2Y5bC75ZKr5bGQ5bGZ5a2x5bGj5bGm57685byq5byp5byt6Im05by86ay75bGu5aaB5aaD5aaN5aap5aaq5aajIl0sWyJlNjQwIiwi6Y2sIiwzNCwi6Y6QIiwyN10sWyJlNjgwIiwi6Y6sIiwyOSwi6Y+L6Y+M6Y+N5aaX5aeK5aar5aae5aak5aeS5aay5aav5aeX5aa+5aiF5aiG5aed5aiI5aej5aeY5ae55aiM5aiJ5aiy5ai05aiR5aij5aiT5amA5amn5amK5amV5ai85ami5am16IOs5aqq5aqb5am35am65aq+5aur5aqy5auS5auU5aq45aug5auj5aux5auW5aum5auY5auc5ayJ5ayX5ayW5ayy5ay35a2A5bCV5bCc5a2a5a2l5a2z5a2R5a2T5a2i6am16am36am46am66am/6am96aqA6aqB6aqF6aqI6aqK6aqQ6aqS6aqT6aqW6aqY6aqb6aqc6aqd6aqf6aqg6aqi6aqj6aql6aqn57qf57qh57qj57ql57qo57qpIl0sWyJlNzQwIiwi6Y+OIiw3LCLpj5ciLDU0XSxbImU3ODAiLCLpkI4iLDMyLCLnuq3nurDnur7nu4Dnu4Hnu4Lnu4nnu4vnu4znu5Dnu5Tnu5fnu5vnu6Dnu6Hnu6jnu6vnu67nu6/nu7Hnu7LnvI3nu7bnu7rnu7vnu77nvIHnvILnvIPnvIfnvIjnvIvnvIznvI/nvJHnvJLnvJfnvJnnvJznvJvnvJ/nvKEiLDYsIue8que8q+e8rOe8ree8ryIsNCwi57y15bm655W/5beb55S+6YKV546O546R546u546i546f54+P54+C54+R5463546z54+A54+J54+I54+l54+Z6aG855CK54+p54+n54+e546654+y55CP55Cq55Gb55Cm55Cl55Co55Cw55Cu55CsIl0sWyJlODQwIiwi6ZCvIiwxNCwi6ZC/Iiw0Mywi6ZGs6ZGt6ZGu6ZGvIl0sWyJlODgwIiwi6ZGwIiwyMCwi6ZKR6ZKW6ZKY6ZOH6ZOP6ZOT6ZOU6ZOa6ZOm6ZO76ZSc6ZSg55Cb55Ca55GB55Gc55GX55GV55GZ55G355Gt55G+55Kc55KO55KA55KB55KH55KL55Ke55Ko55Kp55KQ55Kn55OS55K66Z+q6Z+r6Z+s5p2M5p2T5p2e5p2I5p2p5p6l5p6H5p2q5p2z5p6Y5p6n5p215p6o5p6e5p6t5p6L5p235p285p+w5qCJ5p+Y5qCK5p+p5p6w5qCM5p+Z5p615p+a5p6z5p+d5qCA5p+D5p645p+i5qCO5p+B5p+95qCy5qCz5qGg5qGh5qGO5qGi5qGE5qGk5qKD5qCd5qGV5qGm5qGB5qGn5qGA5qC+5qGK5qGJ5qCp5qK15qKP5qG05qG35qKT5qGr5qOC5qWu5qO85qSf5qSg5qO5Il0sWyJlOTQwIiwi6ZSn6ZSz6ZS96ZWD6ZWI6ZWL6ZWV6ZWa6ZWg6ZWu6ZW06ZW16ZW3Iiw3LCLploAiLDQyXSxbImU5ODAiLCLplqsiLDMyLCLmpKTmo7DmpIvmpIHmpZfmo6PmpJDmpbHmpLnmpaDmpYLmpZ3mpoTmpavmpoDmppjmpbjmpLTmp4zmpofmpojmp47mponmpabmpaPmpbnmppvmpqfmprvmpqvmpq3mp5TmprHmp4Hmp4rmp5/mppXmp6Dmpo3mp7/mqK/mp63mqJfmqJjmqaXmp7LmqYTmqL7mqqDmqZDmqZvmqLXmqo7mqbnmqL3mqKjmqZjmqbzmqpHmqpDmqqnmqpfmqqvnjLfnjZLmroHmroLmrofmroTmrpLmrpPmro3mrprmrpvmrqHmrqrovavova3ovbHovbLovbPovbXovbbovbjovbfovbnovbrovbzovb7ovoHovoLovoTovofovosiXSxbImVhNDAiLCLpl4wiLDI3LCLpl6zpl7/pmIfpmJPpmJjpmJvpmJ7pmKDpmKMiLDYsIumYq+mYrOmYremYr+mYsOmYt+mYuOmYuemYuumYvumZgemZg+mZiumZjumZj+mZkemZkumZk+mZlumZlyJdLFsiZWE4MCIsIumZmOmZmemZmumZnOmZnemZnumZoOmZo+mZpemZpumZq+mZrSIsNCwi6Zmz6Zm4IiwxMiwi6ZqH6ZqJ6ZqK6L6N6L6O6L6P6L6Y6L6a6LuO5oiL5oiX5oib5oif5oii5oih5oil5oik5ois6Ien55Ov55O055O/55SP55SR55ST5pS05peu5pev5pew5piK5piZ5p2y5piD5piV5piA54KF5pu35pid5pi05pix5pi25pi16ICG5pmf5pmU5pmB5pmP5pmW5pmh5pmX5pm35pqE5pqM5pqn5pqd5pq+5pub5puc5pum5pup6LSy6LSz6LS26LS76LS96LWA6LWF6LWG6LWI6LWJ6LWH6LWN6LWV6LWZ6KeH6KeK6KeL6KeM6KeO6KeP6KeQ6KeR54mu54qf54md54mm54mv54m+54m/54qE54qL54qN54qP54qS5oyI5oyy5o6wIl0sWyJlYjQwIiwi6ZqM6ZqO6ZqR6ZqS6ZqT6ZqV6ZqW6Zqa6Zqb6ZqdIiw5LCLpmqgiLDcsIumasemasumatOmatemat+mauOmauumau+mav+mbgumbg+mbiOmbiumbi+mbkOmbkembk+mblOmbliIsOSwi6ZuhIiw2LCLpm6siXSxbImViODAiLCLpm6zpm63pm67pm7Dpm7Hpm7Lpm7Tpm7Xpm7jpm7rpm7vpm7zpm73pm7/pnILpnIPpnIXpnIrpnIvpnIzpnJDpnJHpnJLpnJTpnJXpnJciLDQsIumcnemcn+mcoOaQv+aTmOiAhOavquavs+avveavteavueawheawh+awhuawjeawleawmOawmeawmuawoeawqeawpOawquawsuaUteaVleaVq+eJjeeJkueJlueIsOiZouWIluiCn+iCnOiCk+iCvOaciuiCveiCseiCq+iCreiCtOiCt+iDp+iDqOiDqeiDquiDm+iDguiDhOiDmeiDjeiDl+ackOiDneiDq+iDseiDtOiDreiEjeiEjuiDsuiDvOacleiEkuixmuiEtuiEnuiErOiEmOiEsuiFiOiFjOiFk+iFtOiFmeiFmuiFseiFoOiFqeiFvOiFveiFreiFp+WhjeWqteiGiOiGguiGkea7leiGo+iGquiHjOacpuiHiuiGuyJdLFsiZWM0MCIsIumcoSIsOCwi6Zyr6Zys6Zyu6Zyv6Zyx6ZyzIiw0LCLpnLrpnLvpnLzpnL3pnL8iLDE4LCLpnZTpnZXpnZfpnZjpnZrpnZzpnZ3pnZ/pnaPpnaTpnabpnafpnajpnaoiLDddLFsiZWM4MCIsIumdsumdtemdtyIsNCwi6Z29Iiw3LCLpnoYiLDQsIumejOmejumej+mekOmek+melemelumel+memSIsNCwi6IeB6Iam5qyk5qy35qy55q2D5q2G5q2Z6aOR6aOS6aOT6aOV6aOZ6aOa5q6z5b2A5q+C6Kez5paQ6b2R5paT5pa85peG5peE5peD5peM5peO5peS5peW54KA54Kc54KW54Kd54K754OA54K354Kr54Kx54Oo54OK54SQ54ST54SW54Sv54Sx54Wz54Wc54Wo54WF54Wy54WK54W454W654aY54az54a154ao54ag54eg54eU54en54e554id54io54Gs54SY54Wm54a55oi+5oi95omD5omI5omJ56S756WA56WG56WJ56Wb56Wc56WT56Wa56Wi56WX56Wg56Wv56Wn56W656aF56aK56aa56an56az5b+R5b+QIl0sWyJlZDQwIiwi6Z6e6Z6f6Z6h6Z6i6Z6kIiw2LCLpnqzpnq7pnrDpnrHpnrPpnrUiLDQ2XSxbImVkODAiLCLpn6Tpn6Xpn6jpn64iLDQsIumftOmftyIsMjMsIuaAvOaBneaBmuaBp+aBgeaBmeaBo+aCq+aEhuaEjeaFneaGqeaGneaHi+aHkeaIhuiCgOiBv+ayk+aztua3vOeftuefuOeggOegieegl+egmOegkeaWq+egreegnOegneegueeguuegu+egn+egvOegpeegrOego+egqeehjuehreehluehl+egpuehkOehh+ehjOehqueim+eik+eimueih+einOeioeeio+eisueiueeipeejlOejmeejieejrOejsuekheejtOekk+ekpOeknuektOm+m+m7uem7u+m7vOebseechOecjeebueech+eciOecmuecouecmeecreecpuecteecuOedkOedkeedh+edg+edmuedqCJdLFsiZWU0MCIsIumgjyIsNjJdLFsiZWU4MCIsIumhjiIsMzIsIuedouedpeedv+eejeedveeegOeejOeekeeen+eeoOeesOeeteeeveeUuueVgOeVjueVi+eViOeVm+eVsueVueeWg+e9mOe9oee9n+ipiOe9qOe9tOe9see9uee+gee9vuebjeebpeigsumShemShumSh+mSi+mSiumSjOmSjemSj+mSkOmSlOmSl+mSlemSmumSm+mSnOmSo+mSpOmSq+mSqumSremSrOmSr+mSsOmSsumStOmStiIsNCwi6ZK86ZK96ZK/6ZOE6ZOIIiw2LCLpk5Dpk5Hpk5Lpk5Xpk5bpk5fpk5npk5jpk5vpk57pk5/pk6Dpk6Lpk6Tpk6Xpk6fpk6jpk6oiXSxbImVmNDAiLCLpoa8iLDUsIumii+mijumikumilemimemio+miqCIsMzcsIumjj+mjkOmjlOmjlumjl+mjm+mjnOmjnemjoCIsNF0sWyJlZjgwIiwi6aOl6aOm6aOpIiwzMCwi6ZOp6ZOr6ZOu6ZOv6ZOz6ZO06ZO16ZO36ZO56ZO86ZO96ZO/6ZSD6ZSC6ZSG6ZSH6ZSJ6ZSK6ZSN6ZSO6ZSP6ZSSIiw0LCLplJjplJvplJ3plJ7plJ/plKLplKrplKvplKnplKzplLHplLLplLTplLbplLfplLjplLzplL7plL/plYLplLXplYTplYXplYbplYnplYzplY7plY/plZLplZPplZTplZbplZfplZjplZnplZvplZ7plZ/plZ3plaHplaLplaQiLDgsIumVr+mVsemVsumVs+mUuuefp+efrOmbieenleenreeno+enq+eohuW1h+eog+eogueonueolCJdLFsiZjA0MCIsIumkiCIsNCwi6aSO6aSP6aSRIiwyOCwi6aSvIiwyNl0sWyJmMDgwIiwi6aWKIiw5LCLppZYiLDEyLCLppaTppabppbPppbjppbnppbvppb7ppoLppoPpponnqLnnqLfnqZHpu4/ppqXnqbDnmojnmo7nmpPnmpnnmqTnk57nk6DnlKzpuKDpuKLpuKgiLDQsIum4sum4sem4tum4uOm4t+m4uem4uum4vum5gem5gum5hOm5hum5h+m5iOm5iem5i+m5jOm5jum5kem5lem5l+m5mum5m+m5nOm5num5o+m5piIsNiwi6bmx6bmt6bmz55aS55aU55aW55ag55ad55as55aj55az55a055a455eE55ax55aw55eD55eC55eW55eN55ej55eo55em55ek55er55en55iD55ex55e855e/55iQ55iA55iF55iM55iX55iK55il55iY55iV55iZIl0sWyJmMTQwIiwi6aaM6aaO6aaaIiwxMCwi6aam6aan6aapIiw0N10sWyJmMTgwIiwi6aeZIiwzMiwi55ib55i855ii55ig55mA55it55iw55i/55i155mD55i+55iz55mN55me55mU55mc55mW55mr55mv57+K56um56m456m556qA56qG56qI56qV56qm56qg56qs56qo56qt56qz6KGk6KGp6KGy6KG96KG/6KKC6KKi6KOG6KK36KK86KOJ6KOi6KOO6KOj6KOl6KOx6KSa6KO86KOo6KO+6KOw6KSh6KSZ6KST6KSb6KSK6KS06KSr6KS26KWB6KWm6KW755aL6IOl55qy55q055+c6ICS6ICU6ICW6ICc6ICg6ICi6ICl6ICm6ICn6ICp6ICo6ICx6ICL6IC16IGD6IGG6IGN6IGS6IGp6IGx6KaD6aG46aKA6aKDIl0sWyJmMjQwIiwi6ae6Iiw2Ml0sWyJmMjgwIiwi6ai5IiwzMiwi6aKJ6aKM6aKN6aKP6aKU6aKa6aKb6aKe6aKf6aKh6aKi6aKl6aKm6JmN6JmU6Jms6Jmu6Jm/6Jm66Jm86Jm76Jqo6JqN6JqL6Jqs6Jqd6Jqn6Jqj6Jqq6JqT6Jqp6Jq26JuE6Jq16JuO6Jqw6Jq66Jqx6Jqv6JuJ6JuP6Jq06Jup6Jux6Juy6Jut6Juz6JuQ6JyT6Jue6Ju06Juf6JuY6JuR6JyD6JyH6Ju46JyI6JyK6JyN6JyJ6Jyj6Jy76Jye6Jyl6Jyu6Jya6Jy+6J2I6Jy06Jyx6Jyp6Jy36Jy/6J6C6Jyi6J296J2+6J276J2g6J2w6J2M6J2u6J6L6J2T6J2j6J286J2k6J2Z6J2l6J6T6J6v6J6o6J+SIl0sWyJmMzQwIiwi6amaIiwxNywi6amy6aqD6aqJ6aqN6aqO6aqU6aqV6aqZ6aqm6aqpIiw2LCLpqrLpqrPpqrTpqrXpqrnpqrvpqr3pqr7pqr/pq4Ppq4Tpq4YiLDQsIumrjemrjumrj+mrkOmrkumrlOmrlemrlumrl+mrmemrmumrm+mrnCJdLFsiZjM4MCIsIumrnemrnumroOmroumro+mrpOmrpemrp+mrqOmrqemrqumrrOmrrumrsCIsOCwi6au66au8Iiw2LCLprITprIXprIbon4bonojonoXonq3onpfonoPonqvon6XonqzonrXonrPon4von5Ponr3on5Hon4Don4ron5von6ron6Don67ooJbooJPon77ooIrooJvooKHooLnooLznvLbnvYLnvYTnvYXoiJDnq7rnq73nrIjnrIPnrITnrJXnrIrnrKvnrI/nrYfnrLjnrKrnrJnnrK7nrLHnrKDnrKXnrKTnrLPnrL7nrJ7nrZjnrZrnrYXnrbXnrYznrZ3nraDnra7nrbvnraLnrbLnrbHnrpDnrqbnrqfnrrjnrqznrp3nrqjnroXnrqrnrpznrqLnrqvnrrTnr5Hnr4Hnr4znr53nr5rnr6Xnr6bnr6rnsIznr77nr7znsI/nsJbnsIsiXSxbImY0NDAiLCLprIfprIkiLDUsIumskOmskemskumslCIsMTAsIumsoOmsoemsoumspCIsMTAsIumssOmssemssyIsNywi6ay96ay+6ay/6a2A6a2G6a2K6a2L6a2M6a2O6a2Q6a2S6a2T6a2VIiw1XSxbImY0ODAiLCLprZsiLDMyLCLnsJ/nsKrnsKbnsLjnsYHnsYDoh77oiIHoiILoiIToh6zooYToiKHoiKLoiKPoiK3oiK/oiKjoiKvoiLjoiLvoiLPoiLToiL7oiYToiYnoiYvoiY/oiZroiZ/oiajoob7oooXooojoo5joo5/opZ7nvp3nvp/nvqfnvq/nvrDnvrLnsbzmlYnnspHnsp3nspznsp7nsqLnsrLnsrznsr3ns4Hns4fns4zns43ns4jns4Xns5fns6joia7mmqjnvr/nv47nv5Xnv6Xnv6Hnv6bnv6nnv67nv7Pns7jntbfntqbntq7nuYfnupvpurjpurTotbPotoTotpTotpHotrHotafota3osYfosYnphYrphZDphY7phY/phaQiXSxbImY1NDAiLCLprbwiLDYyXSxbImY1ODAiLCLprrsiLDMyLCLphaLphaHphbDphanpha/phb3phb7phbLphbTphbnphozphoXphpDpho3phpHphqLphqPphqrphq3phq7phq/phrXphrTphrrosZXpub7otrjot6vouIXouZnouanotrXotr/otrzotrrot4Tot5bot5fot5rot57ot47ot4/ot5vot4bot6zot7fot7jot6Pot7not7vot6TouInot73ouJTouJ3ouJ/ouKzouK7ouKPouK/ouLrouYDouLnouLXouL3ouLHouYnouYHouYLouZHouZLouYroubDoubboubzoua/oubTouoXouo/oupToupDoupzoup7osbjosoLosorosoXospjospTmlpvop5bop57op5rop5wiXSxbImY2NDAiLCLpr5wiLDYyXSxbImY2ODAiLCLpsJsiLDMyLCLop6Xop6vop6/oqL7orKbpnZPpm6npm7Ppm6/pnIbpnIHpnIjpnI/pnI7pnKrpnK3pnLDpnL7pvoDpvoPpvoUiLDUsIum+jOm7vum8i+m8jemauemavOmavembjumbkueev+mboOmKjumKrumLiOmMvumNqumPiumOj+mQvumRq+mxv+mygumyhemyhumyh+myiOeoo+myi+myjumykOmykemykumylOmylemymumym+myniIsNSwi6bKlIiw0LCLpsqvpsq3psq7psrAiLDcsIumyuumyu+myvOmyvemzhOmzhemzhumzh+mziumziyJdLFsiZjc0MCIsIumwvCIsNjJdLFsiZjc4MCIsIumxu+mxvemxvumygOmyg+myhOmyiemyiumyjOmyj+myk+mylumyl+mymOmymemynemyqumyrOmyr+myuemyviIsNCwi6bOI6bOJ6bOR6bOS6bOa6bOb6bOg6bOh6bOMIiw0LCLps5Pps5Tps5Xps5fps5jps5nps5zps53ps5/ps6LpnbzpnoXpnpHpnpLpnpTpnq/pnqvpnqPpnrLpnrTpqrHpqrDpqrfpuZjpqrbpqrrpqrzpq4Hpq4Dpq4Xpq4Lpq4vpq4zpq5HprYXprYPprYfprYnprYjprY3prZHpo6jppI3ppK7ppZXppZTpq5/pq6Hpq6bpq6/pq6vpq7vpq63pq7nprIjprI/prJPprJ/prKPpur3pur7nuLvpuoLpuofpuojpuovpupLpj5bpup3pup/pu5vpu5zpu53pu6Dpu5/pu6Lpu6npu6fpu6Xpu6rpu6/pvKLpvKzpvK/pvLnpvLfpvL3pvL7pvYQiXSxbImY4NDAiLCLps6MiLDYyXSxbImY4ODAiLCLptKIiLDMyXSxbImY5NDAiLCLptYMiLDYyXSxbImY5ODAiLCLptoIiLDMyXSxbImZhNDAiLCLptqMiLDYyXSxbImZhODAiLCLpt6IiLDMyXSxbImZiNDAiLCLpuIMiLDI3LCLpuKTpuKfpuK7puLDpuLTpuLvpuLzpuYDpuY3puZDpuZLpuZPpuZTpuZbpuZnpuZ3puZ/puaDpuaHpuaLpuaXpua7pua/pubLpubQiLDksIum6gCJdLFsiZmI4MCIsIum6gem6g+m6hOm6hem6hum6iem6ium6jCIsNSwi6bqUIiw4LCLpup7puqAiLDUsIum6p+m6qOm6qem6qiJdLFsiZmM0MCIsIum6qyIsOCwi6bq16bq26bq36bq56bq66bq86bq/Iiw0LCLpu4Xpu4bpu4fpu4jpu4rpu4vpu4zpu5Dpu5Lpu5Ppu5Xpu5bpu5fpu5npu5rpu57pu6Hpu6Ppu6Tpu6bpu6jpu6vpu6zpu63pu67pu7AiLDgsIum7uum7vem7vyIsNl0sWyJmYzgwIiwi6byGIiw0LCLpvIzpvI/pvJHpvJLpvJTpvJXpvJbpvJjpvJoiLDUsIum8oem8oyIsOCwi6byt6byu6byw6byxIl0sWyJmZDQwIiwi6byyIiw0LCLpvLjpvLrpvLzpvL8iLDQsIum9hSIsMTAsIum9kiIsMzhdLFsiZmQ4MCIsIum9uSIsNSwi6b6B6b6C6b6NIiwxMSwi6b6c6b6d6b6e6b6hIiw0LCLvpKzvpbnvppXvp6fvp7EiXSxbImZlNDAiLCLvqIzvqI3vqI7vqI/vqJHvqJPvqJTvqJjvqJ/vqKDvqKHvqKPvqKTvqKfvqKjvqKkiXV0KCi8qKiovIH0pLAovKiA1NCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5ncwp2YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7Ci8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMKbW9kdWxlLmV4cG9ydHMgPSBPYmplY3QoJ3onKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKSA/IE9iamVjdCA6IGZ1bmN0aW9uIChpdCkgewogIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTsKfTsKCgovKioqLyB9KSwKLyogNTUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKdmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkgewogIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7Cn07CgoKLyoqKi8gfSksCi8qIDU2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgIiArIGl0KTsKICByZXR1cm4gaXQ7Cn07CgoKLyoqKi8gfSksCi8qIDU3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciBwSUUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KTsKdmFyIGNyZWF0ZURlc2MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTsKdmFyIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpOwp2YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU4KTsKdmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpOwp2YXIgSUU4X0RPTV9ERUZJTkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk1KTsKdmFyIGdPUEQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOwoKZXhwb3J0cy5mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KSA/IGdPUEQgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkgewogIE8gPSB0b0lPYmplY3QoTyk7CiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpOwogIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHsKICAgIHJldHVybiBnT1BEKE8sIFApOwogIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfQogIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTsKfTsKCgovKioqLyB9KSwKLyogNTggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gNy4xLjEgVG9QcmltaXRpdmUoaW5wdXQgWywgUHJlZmVycmVkVHlwZV0pCnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7Ci8vIGluc3RlYWQgb2YgdGhlIEVTNiBzcGVjIHZlcnNpb24sIHdlIGRpZG4ndCBpbXBsZW1lbnQgQEB0b1ByaW1pdGl2ZSBjYXNlCi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBTKSB7CiAgaWYgKCFpc09iamVjdChpdCkpIHJldHVybiBpdDsKICB2YXIgZm4sIHZhbDsKICBpZiAoUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDsKICBpZiAodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSkgcmV0dXJuIHZhbDsKICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7CiAgdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKTsKfTsKCgovKioqLyB9KSwKLyogNTkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gbW9zdCBPYmplY3QgbWV0aG9kcyBieSBFUzYgc2hvdWxkIGFjY2VwdCBwcmltaXRpdmVzCnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKdmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpOwp2YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoS0VZLCBleGVjKSB7CiAgdmFyIGZuID0gKGNvcmUuT2JqZWN0IHx8IHt9KVtLRVldIHx8IE9iamVjdFtLRVldOwogIHZhciBleHAgPSB7fTsKICBleHBbS0VZXSA9IGV4ZWMoZm4pOwogICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24gKCkgeyBmbigxKTsgfSksICdPYmplY3QnLCBleHApOwp9OwoKCi8qKiovIH0pLAovKiA2MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IHsgImRlZmF1bHQiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwMCksIF9fZXNNb2R1bGU6IHRydWUgfTsKCi8qKiovIH0pLAovKiA2MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cgp2YXIgTElCUkFSWSA9IF9fd2VicGFja19yZXF1aXJlX18oNjIpOwp2YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7CnZhciByZWRlZmluZSA9IF9fd2VicGFja19yZXF1aXJlX18oOTkpOwp2YXIgaGlkZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTMpOwp2YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7CnZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTsKdmFyICRpdGVyQ3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDMpOwp2YXIgc2V0VG9TdHJpbmdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTsKdmFyIGdldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDYpOwp2YXIgSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpKCdpdGVyYXRvcicpOwp2YXIgQlVHR1kgPSAhKFtdLmtleXMgJiYgJ25leHQnIGluIFtdLmtleXMoKSk7IC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGAKdmFyIEZGX0lURVJBVE9SID0gJ0BAaXRlcmF0b3InOwp2YXIgS0VZUyA9ICdrZXlzJzsKdmFyIFZBTFVFUyA9ICd2YWx1ZXMnOwoKdmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9OwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKSB7CiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpOwogIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbiAoa2luZCkgewogICAgaWYgKCFCVUdHWSAmJiBraW5kIGluIHByb3RvKSByZXR1cm4gcHJvdG9ba2luZF07CiAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTsKICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07CiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9OwogIH07CiAgdmFyIFRBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJzsKICB2YXIgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTOwogIHZhciBWQUxVRVNfQlVHID0gZmFsc2U7CiAgdmFyIHByb3RvID0gQmFzZS5wcm90b3R5cGU7CiAgdmFyICRuYXRpdmUgPSBwcm90b1tJVEVSQVRPUl0gfHwgcHJvdG9bRkZfSVRFUkFUT1JdIHx8IERFRkFVTFQgJiYgcHJvdG9bREVGQVVMVF07CiAgdmFyICRkZWZhdWx0ID0gKCFCVUdHWSAmJiAkbmF0aXZlKSB8fCBnZXRNZXRob2QoREVGQVVMVCk7CiAgdmFyICRlbnRyaWVzID0gREVGQVVMVCA/ICFERUZfVkFMVUVTID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoJ2VudHJpZXMnKSA6IHVuZGVmaW5lZDsKICB2YXIgJGFueU5hdGl2ZSA9IE5BTUUgPT0gJ0FycmF5JyA/IHByb3RvLmVudHJpZXMgfHwgJG5hdGl2ZSA6ICRuYXRpdmU7CiAgdmFyIG1ldGhvZHMsIGtleSwgSXRlcmF0b3JQcm90b3R5cGU7CiAgLy8gRml4IG5hdGl2ZQogIGlmICgkYW55TmF0aXZlKSB7CiAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSgpKSk7CiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgSXRlcmF0b3JQcm90b3R5cGUubmV4dCkgewogICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzCiAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpOwogICAgICAvLyBmaXggZm9yIHNvbWUgb2xkIGVuZ2luZXMKICAgICAgaWYgKCFMSUJSQVJZICYmICFoYXMoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SKSkgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpOwogICAgfQogIH0KICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGCiAgaWYgKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUykgewogICAgVkFMVUVTX0JVRyA9IHRydWU7CiAgICAkZGVmYXVsdCA9IGZ1bmN0aW9uIHZhbHVlcygpIHsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTsKICB9CiAgLy8gRGVmaW5lIGl0ZXJhdG9yCiAgaWYgKCghTElCUkFSWSB8fCBGT1JDRUQpICYmIChCVUdHWSB8fCBWQUxVRVNfQlVHIHx8ICFwcm90b1tJVEVSQVRPUl0pKSB7CiAgICBoaWRlKHByb3RvLCBJVEVSQVRPUiwgJGRlZmF1bHQpOwogIH0KICAvLyBQbHVnIGZvciBsaWJyYXJ5CiAgSXRlcmF0b3JzW05BTUVdID0gJGRlZmF1bHQ7CiAgSXRlcmF0b3JzW1RBR10gPSByZXR1cm5UaGlzOwogIGlmIChERUZBVUxUKSB7CiAgICBtZXRob2RzID0gewogICAgICB2YWx1ZXM6IERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLAogICAgICBrZXlzOiBJU19TRVQgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChLRVlTKSwKICAgICAgZW50cmllczogJGVudHJpZXMKICAgIH07CiAgICBpZiAoRk9SQ0VEKSBmb3IgKGtleSBpbiBtZXRob2RzKSB7CiAgICAgIGlmICghKGtleSBpbiBwcm90bykpIHJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7CiAgICB9IGVsc2UgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoQlVHR1kgfHwgVkFMVUVTX0JVRyksIE5BTUUsIG1ldGhvZHMpOwogIH0KICByZXR1cm4gbWV0aG9kczsKfTsKCgovKioqLyB9KSwKLyogNjIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSB0cnVlOwoKCi8qKiovIH0pLAovKiA2MyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovLyA3LjEuNCBUb0ludGVnZXIKdmFyIGNlaWwgPSBNYXRoLmNlaWw7CnZhciBmbG9vciA9IE1hdGguZmxvb3I7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7Cn07CgoKLyoqKi8gfSksCi8qIDY0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciBzaGFyZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY1KSgna2V5cycpOwp2YXIgdWlkID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOCk7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkgewogIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7Cn07CgoKLyoqKi8gfSksCi8qIDY1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTsKdmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nOwp2YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkgewogIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0ge30pOwp9OwoKCi8qKiovIH0pLAovKiA2NiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovLyBJRSA4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzCm1vZHVsZS5leHBvcnRzID0gKAogICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnCikuc3BsaXQoJywnKTsKCgovKioqLyB9KSwKLyogNjcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY4KTsKdmFyIElURVJBVE9SID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KSgnaXRlcmF0b3InKTsKdmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpOwptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMikuZ2V0SXRlcmF0b3JNZXRob2QgPSBmdW5jdGlvbiAoaXQpIHsKICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdCiAgICB8fCBpdFsnQEBpdGVyYXRvciddCiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldOwp9OwoKCi8qKiovIH0pLAovKiA2OCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBnZXR0aW5nIHRhZyBmcm9tIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKQp2YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7CnZhciBUQUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpKCd0b1N0cmluZ1RhZycpOwovLyBFUzMgd3JvbmcgaGVyZQp2YXIgQVJHID0gY29mKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJzsKCi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yCnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkgewogIHRyeSB7CiAgICByZXR1cm4gaXRba2V5XTsKICB9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH0KfTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgdmFyIE8sIFQsIEI7CiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgPyAnVW5kZWZpbmVkJyA6IGl0ID09PSBudWxsID8gJ051bGwnCiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2UKICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFQKICAgIC8vIGJ1aWx0aW5UYWcgY2FzZQogICAgOiBBUkcgPyBjb2YoTykKICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2sKICAgIDogKEIgPSBjb2YoTykpID09ICdPYmplY3QnICYmIHR5cGVvZiBPLmNhbGxlZSA9PSAnZnVuY3Rpb24nID8gJ0FyZ3VtZW50cycgOiBCOwp9OwoKCi8qKiovIH0pLAovKiA2OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKCnZhciBfaXRlcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMyk7Cgp2YXIgX2l0ZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2l0ZXJhdG9yKTsKCnZhciBfc3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTYpOwoKdmFyIF9zeW1ib2wyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3ltYm9sKTsKCnZhciBfdHlwZW9mID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09ICJmdW5jdGlvbiIgJiYgdHlwZW9mIF9pdGVyYXRvcjIuZGVmYXVsdCA9PT0gInN5bWJvbCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSAiZnVuY3Rpb24iICYmIG9iai5jb25zdHJ1Y3RvciA9PT0gX3N5bWJvbDIuZGVmYXVsdCAmJiBvYmogIT09IF9zeW1ib2wyLmRlZmF1bHQucHJvdG90eXBlID8gInN5bWJvbCIgOiB0eXBlb2Ygb2JqOyB9OwoKZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0KCmV4cG9ydHMuZGVmYXVsdCA9IHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSAiZnVuY3Rpb24iICYmIF90eXBlb2YoX2l0ZXJhdG9yMi5kZWZhdWx0KSA9PT0gInN5bWJvbCIgPyBmdW5jdGlvbiAob2JqKSB7CiAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICJ1bmRlZmluZWQiID8gInVuZGVmaW5lZCIgOiBfdHlwZW9mKG9iaik7Cn0gOiBmdW5jdGlvbiAob2JqKSB7CiAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gImZ1bmN0aW9uIiAmJiBvYmouY29uc3RydWN0b3IgPT09IF9zeW1ib2wyLmRlZmF1bHQgJiYgb2JqICE9PSBfc3ltYm9sMi5kZWZhdWx0LnByb3RvdHlwZSA/ICJzeW1ib2wiIDogdHlwZW9mIG9iaiA9PT0gInVuZGVmaW5lZCIgPyAidW5kZWZpbmVkIiA6IF90eXBlb2Yob2JqKTsKfTsKCi8qKiovIH0pLAovKiA3MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpleHBvcnRzLmYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpOwoKCi8qKiovIH0pLAovKiA3MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7CnZhciBjb3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTsKdmFyIExJQlJBUlkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYyKTsKdmFyIHdrc0V4dCA9IF9fd2VicGFja19yZXF1aXJlX18oNzApOwp2YXIgZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpLmY7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHsKICB2YXIgJFN5bWJvbCA9IGNvcmUuU3ltYm9sIHx8IChjb3JlLlN5bWJvbCA9IExJQlJBUlkgPyB7fSA6IGdsb2JhbC5TeW1ib2wgfHwge30pOwogIGlmIChuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKSBkZWZpbmVQcm9wZXJ0eSgkU3ltYm9sLCBuYW1lLCB7IHZhbHVlOiB3a3NFeHQuZihuYW1lKSB9KTsKfTsKCgovKioqLyB9KSwKLyogNzIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczsKCgovKioqLyB9KSwKLyogNzMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKCgovKioqLyB9KSwKLyogNzQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193ZWJwYWNrX3JlcXVpcmVfXygyMjMpLCBfX2VzTW9kdWxlOiB0cnVlIH07CgovKioqLyB9KSwKLyogNzUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRZUEUpIHsKICBpZiAoIWlzT2JqZWN0KGl0KSB8fCBpdC5fdCAhPT0gVFlQRSkgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCEnKTsKICByZXR1cm4gaXQ7Cn07CgoKLyoqKi8gfSksCi8qIDc2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nOwoKbW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIChhcnIpIHsKICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7Cn07CgoKLyoqKi8gfSksCi8qIDc3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgpmdW5jdGlvbiBUcmF2ZXJzYWxUcmFja2VyKCkgewoJdGhpcy5ldmVudHMgPSB7fTsKfQoKVHJhdmVyc2FsVHJhY2tlci5wcm90b3R5cGUuc3RhcnRUcmFja2luZyA9IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHsKCXZhciBjYWxsYmFja3MgPSB0aGlzLmV2ZW50c1tldmVudF0gfHwgKHRoaXMuZXZlbnRzW2V2ZW50XSA9IFtdKTsKCglpZiAoY2FsbGJhY2tzLmluZGV4T2YoY2FsbGJhY2spIDwgMCkgewoJCWNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKCX0KfTsKClRyYXZlcnNhbFRyYWNrZXIucHJvdG90eXBlLnN0b3BUcmFja2luZyA9IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHsKCXZhciBjYWxsYmFja3MgPSB0aGlzLmV2ZW50c1tldmVudF07CgoJaWYgKCFjYWxsYmFja3MpIHsKCQlyZXR1cm47Cgl9CgoJdmFyIGluZGV4ID0gY2FsbGJhY2tzLmluZGV4T2YoY2FsbGJhY2spOwoJaWYgKGluZGV4ID49IDApIHsKCQljYWxsYmFja3Muc3BsaWNlKGluZGV4LCAxKTsKCX0KfTsKClRyYXZlcnNhbFRyYWNrZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbiAoZXZlbnQpIHsKCXZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTsKCXZhciBjYWxsYmFja3MgPSB0aGlzLmV2ZW50c1tldmVudF07CgoJaWYgKCFjYWxsYmFja3MpIHsKCQlyZXR1cm47Cgl9CgoJY2FsbGJhY2tzLmZvckVhY2goZnVuY3Rpb24gKGNhbGxiYWNrKSB7CgkJY2FsbGJhY2suYXBwbHkodGhpcywgYXJncyk7Cgl9KTsKfTsKClRyYXZlcnNhbFRyYWNrZXIucHJvdG90eXBlLmF1dG8gPSBmdW5jdGlvbiAoZXZlbnQsIGNhbGxiYWNrLCBpbm5lckZ1bmN0aW9uKSB7Cgl0aGlzLnN0YXJ0VHJhY2tpbmcoZXZlbnQsIGNhbGxiYWNrKTsKCWlubmVyRnVuY3Rpb24oKTsKCXRoaXMuc3RvcFRyYWNraW5nKGV2ZW50LCBjYWxsYmFjayk7Cn07Cgptb2R1bGUuZXhwb3J0cyA9IFRyYXZlcnNhbFRyYWNrZXI7CgoKLyoqKi8gfSksCi8qIDc4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBBSSwgQUwsIEJBLCBCSywgQ0IsIENJX0JSSywgQ0osIENQX0JSSywgQ1IsIERJX0JSSywgSUQsIElOX0JSSywgTEYsIExpbmVCcmVha2VyLCBOTCwgTlMsIFBSX0JSSywgU0EsIFNHLCBTUCwgVW5pY29kZVRyaWUsIFdKLCBYWCwgYmFzZTY0LCBjaGFyYWN0ZXJDbGFzc2VzLCBjbGFzc1RyaWUsIGRhdGEsIGZzLCBwYWlyVGFibGUsIF9yZWYsIF9yZWYxOwoKICBVbmljb2RlVHJpZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDMpOwoKICAKCiAgYmFzZTY0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzEpOwoKICBfcmVmID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzIpLCBCSyA9IF9yZWYuQkssIENSID0gX3JlZi5DUiwgTEYgPSBfcmVmLkxGLCBOTCA9IF9yZWYuTkwsIENCID0gX3JlZi5DQiwgQkEgPSBfcmVmLkJBLCBTUCA9IF9yZWYuU1AsIFdKID0gX3JlZi5XSiwgU1AgPSBfcmVmLlNQLCBCSyA9IF9yZWYuQkssIExGID0gX3JlZi5MRiwgTkwgPSBfcmVmLk5MLCBBSSA9IF9yZWYuQUksIEFMID0gX3JlZi5BTCwgU0EgPSBfcmVmLlNBLCBTRyA9IF9yZWYuU0csIFhYID0gX3JlZi5YWCwgQ0ogPSBfcmVmLkNKLCBJRCA9IF9yZWYuSUQsIE5TID0gX3JlZi5OUywgY2hhcmFjdGVyQ2xhc3NlcyA9IF9yZWYuY2hhcmFjdGVyQ2xhc3NlczsKCiAgX3JlZjEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzMyksIERJX0JSSyA9IF9yZWYxLkRJX0JSSywgSU5fQlJLID0gX3JlZjEuSU5fQlJLLCBDSV9CUksgPSBfcmVmMS5DSV9CUkssIENQX0JSSyA9IF9yZWYxLkNQX0JSSywgUFJfQlJLID0gX3JlZjEuUFJfQlJLLCBwYWlyVGFibGUgPSBfcmVmMS5wYWlyVGFibGU7CgogIGRhdGEgPSBiYXNlNjQudG9CeXRlQXJyYXkoIkFBNElBQUFBQUFBQUFocWc1VlY3Tkp0WnZ6N2ZUQzh6VTVkZXBsVWxNclFvV3FtcWFoRDVTbzBhaXBZV3JVaFZGU1ZCUTEwaVNUdFV0VzZuS0RWRjZrN2Q3NWVRZkVVYkZjUTlLaUZTOTB0UUVvbGNQMjNuckxQbU8rZXNyLytmMzlyci9hMjkzdC9lNy9QOG5tZnZsejBPNlJ2ckJKQUR0YkJOYUQ4OElPS1RPbU9yQ3FodTl6RTc3MHZjMXBCVi94TDVkeGoyVjdaajRGR1NvbUZLU3RDV05sVjdoRzFWYWJaZloxTGFIYkZyUnd6ekxqelBvaTFVSERubFYvbFdiaGdJSUp2TEJwL3B1N0FIRWRSbklZK1JPZFh4ZzRmTnBNZFR4Vm5ubTA4T2pvemVqQVZzQnF3cXo4a2RkR1JsUnhzZDhjNTVkTlpvUHVleDZhN0R0NkwwTk5iMDNzcWdUbFIyL09UN2VUdDBZMFducFVYeExzcDVTTUFOYzREc21YNHpKVUJRdnpud2V4bTl0c01IK0M5dVJZTVBPZDk2WkhCMjlOWmpDSU0ybmZPN3RzbVF2ZVgzbDJyN2Z0ME40L1NSSjdrTzZZOFpDYWV1VVE0Z01UWjY3Y3A3VGd4dmxORHNQZ09CZFppMllUYW01UTdtMyswMGwrWEc3UHJEZTZZb1BtSGdLK3lMaWg3ZkFSMTZaRkNlRDlXdk9WdCtnZk5XL0tUNS9NNnJiLzlLRVJ0K04xbGFkNVJuZVZqenhYSHNMb2Z1VStUdnJFc3IzKzI2c1Z6NVdKaDZML3N2b1BLM3FlcEZIOWJ5c0Rsald0RDFGN0tyeHpXMWk5citlL05MeFYvYWN0czd6dW8zMDRKOSt0M1BkNlk2dThmM0VBcXhOUmd2NURaamFJM3VueXZrdkhQeWEvdjNtV1ZZT0MzOHFCcTExK3lIWjJiQXlQMUhia1Y5MnZkbm83cjJseHo5VXdDZENKVmZkMTROTGNwTzJDYWRIUy9YUEo5ZG9YZ3o1dkx2LzFPQlZTM2dYMEQ5bjZMaU5JRGZwaWxPOVJzTGdaMlcvd0l5OFcvUmg5M2pmb3o0cW1SVjJ4RWx2NnAybFJYUWRPNi9DdjhmNW5HbjN1MHdMWGpobnZDbGFiTDFvKzd5dklwdkxmVC94c0tHMzB5L3NUdnEzMGlhOUN6eHA5ZHI5di9lN1luL08wUUpYeHhCT0ptY2VQL0RCRmExcTF2Nm91ZG4vZTZxYy8zN2RVb052bllMNHBsUTlPb25lWU9oL3I4Zk9GbTd5bDdGRVRIWTlkWGQ1SzJuL3FFYzUzZE9FZTFUVEpjdkNmcDFkcFRDMzM0bDB2eWFGTDZtdHRORWJGanpPK1pWMm1MazBxYzNCcnhKNGQ5Z3dlTW1qUm9yeGI3dmljMHJTcTZENHd6QXlGV2FzMVRxUEUwc0xJOFhMQXJ5Qzh0UENoYU4zQUxFWlNXbXRCMzRTeVpjeFhZbi9FNFRnMExlTUlQaGdQS0Q5enlIR014eGh4bkREaWg3ZUk4NnhFQ1RNOHpvZFVDZGdmZlVtUmg0clE4enlBNm93L0FlaSswMWE4T01memlRUStHQUVraHdOL2NxVUZZQVZ6QTlleDRuNmpndHNpTXZYZjVCdFh4RVU0aFNwaHZ4M3Y4KzlhdThlRWVrRUVwa3JrbmUvekIxTStIQVB1WEl6M3BheEtsZmU4YURNZkdXQVg2TWQ2UHV1QWRLSEZWSCsrRWQ1TEVqaTk0WjV6ZWlKSXhibVdlTjdycjEvWmNhQmw1L25pbWRIc0hnSUgvc3N5TFVYWjRmRFE0NkhuQmIraFFxRzh5TmlLUnJYTC9iMUlQWURVc3UzZEZLdFJNY2pxbFJ2T05kNHhCdk91ZngyY1VIdWs4cG1HMUQ3UHlPUW1VbWx1aXNWRlM5T1dTOGZQSWU4TGlDdGp3SktuRUM5aHJTOXVLbUlTSTNXYTUrdmRYVUc5ZHR5ZnI3Zy9vSnYyd2J6ZVpVODM4RzZtRXZudFViM1NWVi9mQlo2SC9zTCtsRWx6ZVJySHkyWGJlN1VXWDFxNXNnT1E4MXJ2KzJiYWVqNGZQNG01TWYvR2tveGZEdFQzKytLUDdkbzlKbjI2YWE2eEFoQ2Y1TDlSWlZma1dLQ2NqSTFlWWJtMnBsdlRFcWtEeEtDNDAyYkd6WENZYUdudUFMSGFiQlQxZEZMdU9TQjdSb3JPUEVoWmFoMU5qWklnUi9VRkdmSzNwMUVsWW5ldk9NQkRMVVJkcElqckkrcVprNHNmZkdiUkZpWHVFbWRGamlBT0RsUUNKdklhQjFyVzYxTGpnM3k0ZVM0TEFjU2dEeHhaUXMwRFlhMTV3QTAzMlorbEdVZnBveU9yRm8zbWcxc1JRdE4vZkhIQ3gzVHJNOGVUcmxkTWJZaXNETFhiVURvWE1MZWpTcTBmVU51TzFtdVgwZ0VhOHZneWVna3FpcXFiQzNXMFM0Y0M5S210OE11Uy9oRk83WGVpM2Y4clN2SWpldmVNTTdreGpVaXhPcmw2Z0pzaGU0SlU3UGhPSHBmclJZdnU3eW9BWkthM0J1eWsySitLNVcrbk5UejFuaEpEaFJVZkRKTGlVWHhqeFhDSmVlYU9lL3I3SGxCUC91VVJjLzVlZmFaRVB4cjU1UWozOXJmVExrdWdVR3lNcndvN0hBZ2xmRWpEcmllaEYxalh0d0prUG9pWWtZUTVhb1hTQTdxYkNCR0txNWh3dHUyVmtwSTl4VkRvcC8xeHJDNTJlaUl2Q29QV3g0bExsNDBqbTl1cHZ5Y1ZQZnBhSDkvbzJENHhLWHBlTmpFMkhQUVJTKzNSRmFZVGM0VHh3N0R2cTVYNkpCUnd6czltdm9CNDlCSzZiK1hnc1pWSllpSW5UbFNYWis2MkZUMThta0ZWY1BLQ0pzb0Y1YWhiMTlXaGVaTFVZc1N3ZHJyVk0zYVEyWEU2U3pVMnhIRFM2aVdrb2RrNUFGNkY4V1VObW11c2hpOGFWcE1Qd2lJZkVpUVdvM0NBcE9ORFJqcmhEaVZua2FGc2FQNXJqSUprbXNONlYyNmxpNUxOTTNKeEdTeUtnb21rblR5eXJoY253djlRY3FhcTV1dEFoNDRXMzBTV284UTBYSEtSMGdsUEY0ZldzdDFGVUNuazJ3b0ZxM2l5OWZBYnpjako4ZnZTamdLVk9mbjE0UkRxeVF1SWdhR0padXN3VHl3ZENGU2E4OVNha01mNmZlKzlLYVFNWVFsS3hpSkJjenVQU2hvNHdtQmpkQSthZzZRVU9yMkdkcGNiU2w1MUF5NmtoaEJ0NVVYZHJueGM3WkdNeEN2ejk2QTRvTG9jeGgyK3B4KzF6a3lMYWNDR3J4blB6VFJTZ3JMS3BTdEZwSDVwcEtXbTdQZ01LWnR3Z3l0S0xPamJHQ09RTFRtK0tPb3dxYTFzZHV0OXJhajFDWkZrWkQwamJhS05McEpVYXJTSDVRa254MVlpT3hkQTVMNmQ1c2ZJL3VubWtTRjY1SWMvQXZ0WHQ5OFBucmR3bDV2Z3BwUTNkWXpXRndrblpzeTZ4aDJsbG1MeHBlZ0Y4YXlMd25pa25sWFJIaUY0aHp6cmdCOGpRNHdkSXFjYUhDRUF4eUp3Q2VHa1hQQlpZU3JyR2E0dk13WnZOTjlhSzBGNEpCT0s5bVE4ZzhFakViSVFWd3ZmUzJEOEd1Q1lzZHF3cVNXYlFyZldkVFJVSk1xbXBuV1BheDRaN0UxMzdJNmJySGJ2anBQbGZOWnBGMWQ3UFA3SEIvTVBIY0hWS1RNaExPNGYzQ1pjYWNjWkVPaVMyRHBLaVFCNUtYREorT3NwY3o0cVRSQ1J4Z3JLRVFJZ1VrS0xUS0t3c2tkeDJEV28zYmczUEVvQjVoMm5BMjRvbHdmS1NSK1FSNlRBdkVEaS8wY3poVVQ1OVJabU8xTUdlS0dlRWZ1T1NQV2ZMK1hLbWhxcFptT1ZSOW1KVk5EUEtPUzQ5THErVW0xMFlzQnliekRNdGVtbFBDT0pFdEU4emFYaHNhcUVzOWJuZ1NKR2hsT1RUTWxDWGx5OVF2NWNSTjNQVkxLN3pvTXB0dXRmN2lodXRyUS9YajdWcWVDZFV3bGVUVEtrbE9JOFdlcDloN2ZDWTBrVnREdElXS251YldBdmJOWnRzUlJxT1lsODAydmViUEVrWlJTWmM2d1hPZlB0cFB0TjVISTYzRVVGZnN5N1UvVExyOE5rSXphWTN2eDRBMjh4NzY1WFpNelJaVHBNazgxWUlNdXdKNSsvem9DdVpqMXdHbmFIT2J4YTVycEtaajRXaFQ2NzBtYVJ3MDR3MGUzY1pXNzRaMGFaZTJuMDVoalpheG02dXJlbno4RWY1TzZZdTFKMmFxWUFscXNDWHM1WkI1bzFKSjVsM3hrVFZyOHJKUTA5TkxzQnFSUkRUMklJak9QbWNKYTZ4UTFSNXlHUDlqQXNqMjN4WURUZXpkeXFHOFlXWjd2SkJJV0s1NksraURnY0hpbWlRT1RJYXNOU3VhMWZPQnhzS01NRUtkMTVqeFRsKzNDeXZHQ1IrVXlSd3VTSTJYdXdSSVBvTk5jbFBpaGZKaGFxMm1La05pandZTFk2ZmVxb2hrdHVrbUkzS0R2T3BON0l0Q3FISGhOdUtseE1mQkFFTzVMalcyUktoNmxFNUhkMWR0QU9vcGFjL1o0RmRzTnNqTWhYei91ZzhKR21iVkpUQStWT0JKWGRyWXlKY0luNStPRWVvSzhrV0VXRit3ZEc4WnRaSEtTcXVXRHREVnloRlBrUlZxZ3VLRmtMa0tDejQ2aGNVMVNVWTlvSjJTaytkbXEwa2dscWs0a3FLVDFDVjlKREVMUGpLMVdzV0drRVhGODdnOVA5OGU1ZmYwbUl1cG0vdzZ2YzNrQ2VxMDRYNWJnSlFsY01GUmpsRldtU2sra3NzWENBVmlrZmVBbE11enBVdkNTZFhpRytkYzZLcklpTHh4aGJFVnVLZjd2VzdLbURRSTk1YlplM0g5bU4zLzc3RjZmWjJZeC9GOXlDbGxsajhnWHBMV0xwZDUrdjkwaU9hRmE5c2Q3UHZ4MGxOYTFvMStia2laNjl3Q2lDMng5VUliNi9ib0JDdU5NQi9IWVIwUkM2K0ZEOU9lNXFyZ1FsNkpiWHRrYVluMHdrZE5oUk9McXlodjZjS3Z5TWoxRnZzMm8zT09Lb01ZVHViR0VOTGZZNUY2SDlkOHdYMWNuSU5zdnord1pGUXUzemhXVmx3SnZ3QkVwNjlEcXUvWm5rQmYzbklmYng0VEs3ek9WSkg1c0dKWCtJTXdrbjF2VkJuMzhHYnBUZzliSm5NY1RPYjVGNkNpNWdPbjlGY3k2UXpjdStGTDZtWUpKK2YyWlpKR2RhMVZxcnVaMEpSWEl0cDhYMGFUakljSmd6ZGFYbGhhN3E3a1Y0ZWJyTXN1bmZzUnlSYTlxWXVyeUJIQTBoYzFLVnNLZEUrb0kwbGpMbVNBeU16ZThsV21jNS9sUTE4c2x5VFZDL3ZBRFRjK1NOTTUrK2d6dFRCTHo0bTBhVlVLY2ZnT0VFeHVLVm9tSjdYUURadXppTURqRzZKUDl0Z1I3SlhaVGVvOVJHZXRXL1htOS9UZ1BKcFRnSEFDUE9Hdm15Mm1EbTlmbDA5V2VNbTlzUVVBWFAzU3UydUFwZUN3SlZUNWlXQ1hEZ21jdVRzRmdVOU5tNi9QdXNKelNiRFFJTWZsNklOWS9PQUV2WlJONTRCU1NYVUNsTTUxaW02V245VmhWYW1LSm16T2FGSkVyZ0pjczBldEZaNDBMSUYzRVBrakZUakdtQWhzZDE3NE5uT3dKVzhUZEoxRGphK0U2V2E2RlZTMjJIYWoxRERBNDc0RWVzb01QNW5ic3BBUEpMV0o4clljUDFEd0NzbGhubitnVEZtK3NTOXdZK1U2U29nQWE5dGl3cG94dWFGZXFtMk9LK3VvelI2U2ZpTENPUHozNkxpRGx6WHI2VVdkN0JwWTZtbHJOQU5rVE9lbWU1RWdubkFrUVJUR285VDZpWXhiVUtmR0pjSTlCK3ViMlBjeVVPZ3B3WGJPZjNiSEZXdHlnRDdGWWJSaGIrdmt6aTg3ZEIwSmVYbC92QnBCVXo5M1Z0cVppN0FMN0MxVm93VEYrdEdteXVydzdEQmNrdGMrVU1ZMEUxMEp3NFVSb2pmOE5kYU5wTjZFMXE0K096KzRZZVB0TUx5OEZQUlAiKTsKCiAgY2xhc3NUcmllID0gbmV3IFVuaWNvZGVUcmllKGRhdGEpOwoKICBMaW5lQnJlYWtlciA9IChmdW5jdGlvbigpIHsKICAgIHZhciBCcmVhaywgbWFwQ2xhc3MsIG1hcEZpcnN0OwoKICAgIGZ1bmN0aW9uIExpbmVCcmVha2VyKHN0cmluZykgewogICAgICB0aGlzLnN0cmluZyA9IHN0cmluZzsKICAgICAgdGhpcy5wb3MgPSAwOwogICAgICB0aGlzLmxhc3RQb3MgPSAwOwogICAgICB0aGlzLmN1ckNsYXNzID0gbnVsbDsKICAgICAgdGhpcy5uZXh0Q2xhc3MgPSBudWxsOwogICAgfQoKICAgIExpbmVCcmVha2VyLnByb3RvdHlwZS5uZXh0Q29kZVBvaW50ID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjb2RlLCBuZXh0OwogICAgICBjb2RlID0gdGhpcy5zdHJpbmcuY2hhckNvZGVBdCh0aGlzLnBvcysrKTsKICAgICAgbmV4dCA9IHRoaXMuc3RyaW5nLmNoYXJDb2RlQXQodGhpcy5wb3MpOwogICAgICBpZiAoKDB4ZDgwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHhkYmZmKSAmJiAoMHhkYzAwIDw9IG5leHQgJiYgbmV4dCA8PSAweGRmZmYpKSB7CiAgICAgICAgdGhpcy5wb3MrKzsKICAgICAgICByZXR1cm4gKChjb2RlIC0gMHhkODAwKSAqIDB4NDAwKSArIChuZXh0IC0gMHhkYzAwKSArIDB4MTAwMDA7CiAgICAgIH0KICAgICAgcmV0dXJuIGNvZGU7CiAgICB9OwoKICAgIG1hcENsYXNzID0gZnVuY3Rpb24oYykgewogICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICBjYXNlIEFJOgogICAgICAgICAgcmV0dXJuIEFMOwogICAgICAgIGNhc2UgU0E6CiAgICAgICAgY2FzZSBTRzoKICAgICAgICBjYXNlIFhYOgogICAgICAgICAgcmV0dXJuIEFMOwogICAgICAgIGNhc2UgQ0o6CiAgICAgICAgICByZXR1cm4gTlM7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHJldHVybiBjOwogICAgICB9CiAgICB9OwoKICAgIG1hcEZpcnN0ID0gZnVuY3Rpb24oYykgewogICAgICBzd2l0Y2ggKGMpIHsKICAgICAgICBjYXNlIExGOgogICAgICAgIGNhc2UgTkw6CiAgICAgICAgICByZXR1cm4gQks7CiAgICAgICAgY2FzZSBDQjoKICAgICAgICAgIHJldHVybiBCQTsKICAgICAgICBjYXNlIFNQOgogICAgICAgICAgcmV0dXJuIFdKOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICByZXR1cm4gYzsKICAgICAgfQogICAgfTsKCiAgICBMaW5lQnJlYWtlci5wcm90b3R5cGUubmV4dENoYXJDbGFzcyA9IGZ1bmN0aW9uKGZpcnN0KSB7CiAgICAgIGlmIChmaXJzdCA9PSBudWxsKSB7CiAgICAgICAgZmlyc3QgPSBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gbWFwQ2xhc3MoY2xhc3NUcmllLmdldCh0aGlzLm5leHRDb2RlUG9pbnQoKSkpOwogICAgfTsKCiAgICBCcmVhayA9IChmdW5jdGlvbigpIHsKICAgICAgZnVuY3Rpb24gQnJlYWsocG9zaXRpb24sIHJlcXVpcmVkKSB7CiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uOwogICAgICAgIHRoaXMucmVxdWlyZWQgPSByZXF1aXJlZCAhPSBudWxsID8gcmVxdWlyZWQgOiBmYWxzZTsKICAgICAgfQoKICAgICAgcmV0dXJuIEJyZWFrOwoKICAgIH0pKCk7CgogICAgTGluZUJyZWFrZXIucHJvdG90eXBlLm5leHRCcmVhayA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgY3VyLCBsYXN0Q2xhc3MsIHNob3VsZEJyZWFrOwogICAgICBpZiAodGhpcy5jdXJDbGFzcyA9PSBudWxsKSB7CiAgICAgICAgdGhpcy5jdXJDbGFzcyA9IG1hcEZpcnN0KHRoaXMubmV4dENoYXJDbGFzcygpKTsKICAgICAgfQogICAgICB3aGlsZSAodGhpcy5wb3MgPCB0aGlzLnN0cmluZy5sZW5ndGgpIHsKICAgICAgICB0aGlzLmxhc3RQb3MgPSB0aGlzLnBvczsKICAgICAgICBsYXN0Q2xhc3MgPSB0aGlzLm5leHRDbGFzczsKICAgICAgICB0aGlzLm5leHRDbGFzcyA9IHRoaXMubmV4dENoYXJDbGFzcygpOwogICAgICAgIGlmICh0aGlzLmN1ckNsYXNzID09PSBCSyB8fCAodGhpcy5jdXJDbGFzcyA9PT0gQ1IgJiYgdGhpcy5uZXh0Q2xhc3MgIT09IExGKSkgewogICAgICAgICAgdGhpcy5jdXJDbGFzcyA9IG1hcEZpcnN0KG1hcENsYXNzKHRoaXMubmV4dENsYXNzKSk7CiAgICAgICAgICByZXR1cm4gbmV3IEJyZWFrKHRoaXMubGFzdFBvcywgdHJ1ZSk7CiAgICAgICAgfQogICAgICAgIGN1ciA9IChmdW5jdGlvbigpIHsKICAgICAgICAgIHN3aXRjaCAodGhpcy5uZXh0Q2xhc3MpIHsKICAgICAgICAgICAgY2FzZSBTUDoKICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJDbGFzczsKICAgICAgICAgICAgY2FzZSBCSzoKICAgICAgICAgICAgY2FzZSBMRjoKICAgICAgICAgICAgY2FzZSBOTDoKICAgICAgICAgICAgICByZXR1cm4gQks7CiAgICAgICAgICAgIGNhc2UgQ1I6CiAgICAgICAgICAgICAgcmV0dXJuIENSOwogICAgICAgICAgICBjYXNlIENCOgogICAgICAgICAgICAgIHJldHVybiBCQTsKICAgICAgICAgIH0KICAgICAgICB9KS5jYWxsKHRoaXMpOwogICAgICAgIGlmIChjdXIgIT0gbnVsbCkgewogICAgICAgICAgdGhpcy5jdXJDbGFzcyA9IGN1cjsKICAgICAgICAgIGlmICh0aGlzLm5leHRDbGFzcyA9PT0gQ0IpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBCcmVhayh0aGlzLmxhc3RQb3MpOwogICAgICAgICAgfQogICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIHNob3VsZEJyZWFrID0gZmFsc2U7CiAgICAgICAgc3dpdGNoIChwYWlyVGFibGVbdGhpcy5jdXJDbGFzc11bdGhpcy5uZXh0Q2xhc3NdKSB7CiAgICAgICAgICBjYXNlIERJX0JSSzoKICAgICAgICAgICAgc2hvdWxkQnJlYWsgPSB0cnVlOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgSU5fQlJLOgogICAgICAgICAgICBzaG91bGRCcmVhayA9IGxhc3RDbGFzcyA9PT0gU1A7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBDSV9CUks6CiAgICAgICAgICAgIHNob3VsZEJyZWFrID0gbGFzdENsYXNzID09PSBTUDsKICAgICAgICAgICAgaWYgKCFzaG91bGRCcmVhaykgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSBDUF9CUks6CiAgICAgICAgICAgIGlmIChsYXN0Q2xhc3MgIT09IFNQKSB7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdGhpcy5jdXJDbGFzcyA9IHRoaXMubmV4dENsYXNzOwogICAgICAgIGlmIChzaG91bGRCcmVhaykgewogICAgICAgICAgcmV0dXJuIG5ldyBCcmVhayh0aGlzLmxhc3RQb3MpOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAodGhpcy5wb3MgPj0gdGhpcy5zdHJpbmcubGVuZ3RoKSB7CiAgICAgICAgaWYgKHRoaXMubGFzdFBvcyA8IHRoaXMuc3RyaW5nLmxlbmd0aCkgewogICAgICAgICAgdGhpcy5sYXN0UG9zID0gdGhpcy5zdHJpbmcubGVuZ3RoOwogICAgICAgICAgcmV0dXJuIG5ldyBCcmVhayh0aGlzLnN0cmluZy5sZW5ndGgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIExpbmVCcmVha2VyOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IExpbmVCcmVha2VyOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogNzkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKdmFyIFRJTkZfT0sgPSAwOwp2YXIgVElORl9EQVRBX0VSUk9SID0gLTM7CgpmdW5jdGlvbiBUcmVlKCkgewogIHRoaXMudGFibGUgPSBuZXcgVWludDE2QXJyYXkoMTYpOyAgIC8qIHRhYmxlIG9mIGNvZGUgbGVuZ3RoIGNvdW50cyAqLwogIHRoaXMudHJhbnMgPSBuZXcgVWludDE2QXJyYXkoMjg4KTsgIC8qIGNvZGUgLT4gc3ltYm9sIHRyYW5zbGF0aW9uIHRhYmxlICovCn0KCmZ1bmN0aW9uIERhdGEoc291cmNlLCBkZXN0KSB7CiAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7CiAgdGhpcy5zb3VyY2VJbmRleCA9IDA7CiAgdGhpcy50YWcgPSAwOwogIHRoaXMuYml0Y291bnQgPSAwOwogIAogIHRoaXMuZGVzdCA9IGRlc3Q7CiAgdGhpcy5kZXN0TGVuID0gMDsKICAKICB0aGlzLmx0cmVlID0gbmV3IFRyZWUoKTsgIC8qIGR5bmFtaWMgbGVuZ3RoL3N5bWJvbCB0cmVlICovCiAgdGhpcy5kdHJlZSA9IG5ldyBUcmVlKCk7ICAvKiBkeW5hbWljIGRpc3RhbmNlIHRyZWUgKi8KfQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoKICogLS0gdW5pbml0aWFsaXplZCBnbG9iYWwgZGF0YSAoc3RhdGljIHN0cnVjdHVyZXMpIC0tICoKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgp2YXIgc2x0cmVlID0gbmV3IFRyZWUoKTsKdmFyIHNkdHJlZSA9IG5ldyBUcmVlKCk7CgovKiBleHRyYSBiaXRzIGFuZCBiYXNlIHRhYmxlcyBmb3IgbGVuZ3RoIGNvZGVzICovCnZhciBsZW5ndGhfYml0cyA9IG5ldyBVaW50OEFycmF5KDMwKTsKdmFyIGxlbmd0aF9iYXNlID0gbmV3IFVpbnQxNkFycmF5KDMwKTsKCi8qIGV4dHJhIGJpdHMgYW5kIGJhc2UgdGFibGVzIGZvciBkaXN0YW5jZSBjb2RlcyAqLwp2YXIgZGlzdF9iaXRzID0gbmV3IFVpbnQ4QXJyYXkoMzApOwp2YXIgZGlzdF9iYXNlID0gbmV3IFVpbnQxNkFycmF5KDMwKTsKCi8qIHNwZWNpYWwgb3JkZXJpbmcgb2YgY29kZSBsZW5ndGggY29kZXMgKi8KdmFyIGNsY2lkeCA9IG5ldyBVaW50OEFycmF5KFsKICAxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LAogIDEwLCA1LCAxMSwgNCwgMTIsIDMsIDEzLCAyLAogIDE0LCAxLCAxNQpdKTsKCi8qIHVzZWQgYnkgdGluZl9kZWNvZGVfdHJlZXMsIGF2b2lkcyBhbGxvY2F0aW9ucyBldmVyeSBjYWxsICovCnZhciBjb2RlX3RyZWUgPSBuZXcgVHJlZSgpOwp2YXIgbGVuZ3RocyA9IG5ldyBVaW50OEFycmF5KDI4OCArIDMyKTsKCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICoKICogLS0gdXRpbGl0eSBmdW5jdGlvbnMgLS0gKgogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyogYnVpbGQgZXh0cmEgYml0cyBhbmQgYmFzZSB0YWJsZXMgKi8KZnVuY3Rpb24gdGluZl9idWlsZF9iaXRzX2Jhc2UoYml0cywgYmFzZSwgZGVsdGEsIGZpcnN0KSB7CiAgdmFyIGksIHN1bTsKCiAgLyogYnVpbGQgYml0cyB0YWJsZSAqLwogIGZvciAoaSA9IDA7IGkgPCBkZWx0YTsgKytpKSBiaXRzW2ldID0gMDsKICBmb3IgKGkgPSAwOyBpIDwgMzAgLSBkZWx0YTsgKytpKSBiaXRzW2kgKyBkZWx0YV0gPSBpIC8gZGVsdGEgfCAwOwoKICAvKiBidWlsZCBiYXNlIHRhYmxlICovCiAgZm9yIChzdW0gPSBmaXJzdCwgaSA9IDA7IGkgPCAzMDsgKytpKSB7CiAgICBiYXNlW2ldID0gc3VtOwogICAgc3VtICs9IDEgPDwgYml0c1tpXTsKICB9Cn0KCi8qIGJ1aWxkIHRoZSBmaXhlZCBodWZmbWFuIHRyZWVzICovCmZ1bmN0aW9uIHRpbmZfYnVpbGRfZml4ZWRfdHJlZXMobHQsIGR0KSB7CiAgdmFyIGk7CgogIC8qIGJ1aWxkIGZpeGVkIGxlbmd0aCB0cmVlICovCiAgZm9yIChpID0gMDsgaSA8IDc7ICsraSkgbHQudGFibGVbaV0gPSAwOwoKICBsdC50YWJsZVs3XSA9IDI0OwogIGx0LnRhYmxlWzhdID0gMTUyOwogIGx0LnRhYmxlWzldID0gMTEyOwoKICBmb3IgKGkgPSAwOyBpIDwgMjQ7ICsraSkgbHQudHJhbnNbaV0gPSAyNTYgKyBpOwogIGZvciAoaSA9IDA7IGkgPCAxNDQ7ICsraSkgbHQudHJhbnNbMjQgKyBpXSA9IGk7CiAgZm9yIChpID0gMDsgaSA8IDg7ICsraSkgbHQudHJhbnNbMjQgKyAxNDQgKyBpXSA9IDI4MCArIGk7CiAgZm9yIChpID0gMDsgaSA8IDExMjsgKytpKSBsdC50cmFuc1syNCArIDE0NCArIDggKyBpXSA9IDE0NCArIGk7CgogIC8qIGJ1aWxkIGZpeGVkIGRpc3RhbmNlIHRyZWUgKi8KICBmb3IgKGkgPSAwOyBpIDwgNTsgKytpKSBkdC50YWJsZVtpXSA9IDA7CgogIGR0LnRhYmxlWzVdID0gMzI7CgogIGZvciAoaSA9IDA7IGkgPCAzMjsgKytpKSBkdC50cmFuc1tpXSA9IGk7Cn0KCi8qIGdpdmVuIGFuIGFycmF5IG9mIGNvZGUgbGVuZ3RocywgYnVpbGQgYSB0cmVlICovCnZhciBvZmZzID0gbmV3IFVpbnQxNkFycmF5KDE2KTsKCmZ1bmN0aW9uIHRpbmZfYnVpbGRfdHJlZSh0LCBsZW5ndGhzLCBvZmYsIG51bSkgewogIHZhciBpLCBzdW07CgogIC8qIGNsZWFyIGNvZGUgbGVuZ3RoIGNvdW50IHRhYmxlICovCiAgZm9yIChpID0gMDsgaSA8IDE2OyArK2kpIHQudGFibGVbaV0gPSAwOwoKICAvKiBzY2FuIHN5bWJvbCBsZW5ndGhzLCBhbmQgc3VtIGNvZGUgbGVuZ3RoIGNvdW50cyAqLwogIGZvciAoaSA9IDA7IGkgPCBudW07ICsraSkgdC50YWJsZVtsZW5ndGhzW29mZiArIGldXSsrOwoKICB0LnRhYmxlWzBdID0gMDsKCiAgLyogY29tcHV0ZSBvZmZzZXQgdGFibGUgZm9yIGRpc3RyaWJ1dGlvbiBzb3J0ICovCiAgZm9yIChzdW0gPSAwLCBpID0gMDsgaSA8IDE2OyArK2kpIHsKICAgIG9mZnNbaV0gPSBzdW07CiAgICBzdW0gKz0gdC50YWJsZVtpXTsKICB9CgogIC8qIGNyZWF0ZSBjb2RlLT5zeW1ib2wgdHJhbnNsYXRpb24gdGFibGUgKHN5bWJvbHMgc29ydGVkIGJ5IGNvZGUpICovCiAgZm9yIChpID0gMDsgaSA8IG51bTsgKytpKSB7CiAgICBpZiAobGVuZ3Roc1tvZmYgKyBpXSkgdC50cmFuc1tvZmZzW2xlbmd0aHNbb2ZmICsgaV1dKytdID0gaTsKICB9Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKgogKiAtLSBkZWNvZGUgZnVuY3Rpb25zIC0tICoKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyogZ2V0IG9uZSBiaXQgZnJvbSBzb3VyY2Ugc3RyZWFtICovCmZ1bmN0aW9uIHRpbmZfZ2V0Yml0KGQpIHsKICAvKiBjaGVjayBpZiB0YWcgaXMgZW1wdHkgKi8KICBpZiAoIWQuYml0Y291bnQtLSkgewogICAgLyogbG9hZCBuZXh0IHRhZyAqLwogICAgZC50YWcgPSBkLnNvdXJjZVtkLnNvdXJjZUluZGV4KytdOwogICAgZC5iaXRjb3VudCA9IDc7CiAgfQoKICAvKiBzaGlmdCBiaXQgb3V0IG9mIHRhZyAqLwogIHZhciBiaXQgPSBkLnRhZyAmIDE7CiAgZC50YWcgPj4+PSAxOwoKICByZXR1cm4gYml0Owp9CgovKiByZWFkIGEgbnVtIGJpdCB2YWx1ZSBmcm9tIGEgc3RyZWFtIGFuZCBhZGQgYmFzZSAqLwpmdW5jdGlvbiB0aW5mX3JlYWRfYml0cyhkLCBudW0sIGJhc2UpIHsKICBpZiAoIW51bSkKICAgIHJldHVybiBiYXNlOwoKICB3aGlsZSAoZC5iaXRjb3VudCA8IDI0KSB7CiAgICBkLnRhZyB8PSBkLnNvdXJjZVtkLnNvdXJjZUluZGV4KytdIDw8IGQuYml0Y291bnQ7CiAgICBkLmJpdGNvdW50ICs9IDg7CiAgfQoKICB2YXIgdmFsID0gZC50YWcgJiAoMHhmZmZmID4+PiAoMTYgLSBudW0pKTsKICBkLnRhZyA+Pj49IG51bTsKICBkLmJpdGNvdW50IC09IG51bTsKICByZXR1cm4gdmFsICsgYmFzZTsKfQoKLyogZ2l2ZW4gYSBkYXRhIHN0cmVhbSBhbmQgYSB0cmVlLCBkZWNvZGUgYSBzeW1ib2wgKi8KZnVuY3Rpb24gdGluZl9kZWNvZGVfc3ltYm9sKGQsIHQpIHsKICB3aGlsZSAoZC5iaXRjb3VudCA8IDI0KSB7CiAgICBkLnRhZyB8PSBkLnNvdXJjZVtkLnNvdXJjZUluZGV4KytdIDw8IGQuYml0Y291bnQ7CiAgICBkLmJpdGNvdW50ICs9IDg7CiAgfQogIAogIHZhciBzdW0gPSAwLCBjdXIgPSAwLCBsZW4gPSAwOwogIHZhciB0YWcgPSBkLnRhZzsKCiAgLyogZ2V0IG1vcmUgYml0cyB3aGlsZSBjb2RlIHZhbHVlIGlzIGFib3ZlIHN1bSAqLwogIGRvIHsKICAgIGN1ciA9IDIgKiBjdXIgKyAodGFnICYgMSk7CiAgICB0YWcgPj4+PSAxOwogICAgKytsZW47CgogICAgc3VtICs9IHQudGFibGVbbGVuXTsKICAgIGN1ciAtPSB0LnRhYmxlW2xlbl07CiAgfSB3aGlsZSAoY3VyID49IDApOwogIAogIGQudGFnID0gdGFnOwogIGQuYml0Y291bnQgLT0gbGVuOwoKICByZXR1cm4gdC50cmFuc1tzdW0gKyBjdXJdOwp9CgovKiBnaXZlbiBhIGRhdGEgc3RyZWFtLCBkZWNvZGUgZHluYW1pYyB0cmVlcyBmcm9tIGl0ICovCmZ1bmN0aW9uIHRpbmZfZGVjb2RlX3RyZWVzKGQsIGx0LCBkdCkgewogIHZhciBobGl0LCBoZGlzdCwgaGNsZW47CiAgdmFyIGksIG51bSwgbGVuZ3RoOwoKICAvKiBnZXQgNSBiaXRzIEhMSVQgKDI1Ny0yODYpICovCiAgaGxpdCA9IHRpbmZfcmVhZF9iaXRzKGQsIDUsIDI1Nyk7CgogIC8qIGdldCA1IGJpdHMgSERJU1QgKDEtMzIpICovCiAgaGRpc3QgPSB0aW5mX3JlYWRfYml0cyhkLCA1LCAxKTsKCiAgLyogZ2V0IDQgYml0cyBIQ0xFTiAoNC0xOSkgKi8KICBoY2xlbiA9IHRpbmZfcmVhZF9iaXRzKGQsIDQsIDQpOwoKICBmb3IgKGkgPSAwOyBpIDwgMTk7ICsraSkgbGVuZ3Roc1tpXSA9IDA7CgogIC8qIHJlYWQgY29kZSBsZW5ndGhzIGZvciBjb2RlIGxlbmd0aCBhbHBoYWJldCAqLwogIGZvciAoaSA9IDA7IGkgPCBoY2xlbjsgKytpKSB7CiAgICAvKiBnZXQgMyBiaXRzIGNvZGUgbGVuZ3RoICgwLTcpICovCiAgICB2YXIgY2xlbiA9IHRpbmZfcmVhZF9iaXRzKGQsIDMsIDApOwogICAgbGVuZ3Roc1tjbGNpZHhbaV1dID0gY2xlbjsKICB9CgogIC8qIGJ1aWxkIGNvZGUgbGVuZ3RoIHRyZWUgKi8KICB0aW5mX2J1aWxkX3RyZWUoY29kZV90cmVlLCBsZW5ndGhzLCAwLCAxOSk7CgogIC8qIGRlY29kZSBjb2RlIGxlbmd0aHMgZm9yIHRoZSBkeW5hbWljIHRyZWVzICovCiAgZm9yIChudW0gPSAwOyBudW0gPCBobGl0ICsgaGRpc3Q7KSB7CiAgICB2YXIgc3ltID0gdGluZl9kZWNvZGVfc3ltYm9sKGQsIGNvZGVfdHJlZSk7CgogICAgc3dpdGNoIChzeW0pIHsKICAgICAgY2FzZSAxNjoKICAgICAgICAvKiBjb3B5IHByZXZpb3VzIGNvZGUgbGVuZ3RoIDMtNiB0aW1lcyAocmVhZCAyIGJpdHMpICovCiAgICAgICAgdmFyIHByZXYgPSBsZW5ndGhzW251bSAtIDFdOwogICAgICAgIGZvciAobGVuZ3RoID0gdGluZl9yZWFkX2JpdHMoZCwgMiwgMyk7IGxlbmd0aDsgLS1sZW5ndGgpIHsKICAgICAgICAgIGxlbmd0aHNbbnVtKytdID0gcHJldjsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMTc6CiAgICAgICAgLyogcmVwZWF0IGNvZGUgbGVuZ3RoIDAgZm9yIDMtMTAgdGltZXMgKHJlYWQgMyBiaXRzKSAqLwogICAgICAgIGZvciAobGVuZ3RoID0gdGluZl9yZWFkX2JpdHMoZCwgMywgMyk7IGxlbmd0aDsgLS1sZW5ndGgpIHsKICAgICAgICAgIGxlbmd0aHNbbnVtKytdID0gMDsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMTg6CiAgICAgICAgLyogcmVwZWF0IGNvZGUgbGVuZ3RoIDAgZm9yIDExLTEzOCB0aW1lcyAocmVhZCA3IGJpdHMpICovCiAgICAgICAgZm9yIChsZW5ndGggPSB0aW5mX3JlYWRfYml0cyhkLCA3LCAxMSk7IGxlbmd0aDsgLS1sZW5ndGgpIHsKICAgICAgICAgIGxlbmd0aHNbbnVtKytdID0gMDsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgLyogdmFsdWVzIDAtMTUgcmVwcmVzZW50IHRoZSBhY3R1YWwgY29kZSBsZW5ndGhzICovCiAgICAgICAgbGVuZ3Roc1tudW0rK10gPSBzeW07CiAgICAgICAgYnJlYWs7CiAgICB9CiAgfQoKICAvKiBidWlsZCBkeW5hbWljIHRyZWVzICovCiAgdGluZl9idWlsZF90cmVlKGx0LCBsZW5ndGhzLCAwLCBobGl0KTsKICB0aW5mX2J1aWxkX3RyZWUoZHQsIGxlbmd0aHMsIGhsaXQsIGhkaXN0KTsKfQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKgogKiAtLSBibG9jayBpbmZsYXRlIGZ1bmN0aW9ucyAtLSAqCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgovKiBnaXZlbiBhIHN0cmVhbSBhbmQgdHdvIHRyZWVzLCBpbmZsYXRlIGEgYmxvY2sgb2YgZGF0YSAqLwpmdW5jdGlvbiB0aW5mX2luZmxhdGVfYmxvY2tfZGF0YShkLCBsdCwgZHQpIHsKICB3aGlsZSAoMSkgewogICAgdmFyIHN5bSA9IHRpbmZfZGVjb2RlX3N5bWJvbChkLCBsdCk7CgogICAgLyogY2hlY2sgZm9yIGVuZCBvZiBibG9jayAqLwogICAgaWYgKHN5bSA9PT0gMjU2KSB7CiAgICAgIHJldHVybiBUSU5GX09LOwogICAgfQoKICAgIGlmIChzeW0gPCAyNTYpIHsKICAgICAgZC5kZXN0W2QuZGVzdExlbisrXSA9IHN5bTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBsZW5ndGgsIGRpc3QsIG9mZnM7CiAgICAgIHZhciBpOwoKICAgICAgc3ltIC09IDI1NzsKCiAgICAgIC8qIHBvc3NpYmx5IGdldCBtb3JlIGJpdHMgZnJvbSBsZW5ndGggY29kZSAqLwogICAgICBsZW5ndGggPSB0aW5mX3JlYWRfYml0cyhkLCBsZW5ndGhfYml0c1tzeW1dLCBsZW5ndGhfYmFzZVtzeW1dKTsKCiAgICAgIGRpc3QgPSB0aW5mX2RlY29kZV9zeW1ib2woZCwgZHQpOwoKICAgICAgLyogcG9zc2libHkgZ2V0IG1vcmUgYml0cyBmcm9tIGRpc3RhbmNlIGNvZGUgKi8KICAgICAgb2ZmcyA9IGQuZGVzdExlbiAtIHRpbmZfcmVhZF9iaXRzKGQsIGRpc3RfYml0c1tkaXN0XSwgZGlzdF9iYXNlW2Rpc3RdKTsKCiAgICAgIC8qIGNvcHkgbWF0Y2ggKi8KICAgICAgZm9yIChpID0gb2ZmczsgaSA8IG9mZnMgKyBsZW5ndGg7ICsraSkgewogICAgICAgIGQuZGVzdFtkLmRlc3RMZW4rK10gPSBkLmRlc3RbaV07CiAgICAgIH0KICAgIH0KICB9Cn0KCi8qIGluZmxhdGUgYW4gdW5jb21wcmVzc2VkIGJsb2NrIG9mIGRhdGEgKi8KZnVuY3Rpb24gdGluZl9pbmZsYXRlX3VuY29tcHJlc3NlZF9ibG9jayhkKSB7CiAgdmFyIGxlbmd0aCwgaW52bGVuZ3RoOwogIHZhciBpOwogIAogIC8qIHVucmVhZCBmcm9tIGJpdGJ1ZmZlciAqLwogIHdoaWxlIChkLmJpdGNvdW50ID4gOCkgewogICAgZC5zb3VyY2VJbmRleC0tOwogICAgZC5iaXRjb3VudCAtPSA4OwogIH0KCiAgLyogZ2V0IGxlbmd0aCAqLwogIGxlbmd0aCA9IGQuc291cmNlW2Quc291cmNlSW5kZXggKyAxXTsKICBsZW5ndGggPSAyNTYgKiBsZW5ndGggKyBkLnNvdXJjZVtkLnNvdXJjZUluZGV4XTsKCiAgLyogZ2V0IG9uZSdzIGNvbXBsZW1lbnQgb2YgbGVuZ3RoICovCiAgaW52bGVuZ3RoID0gZC5zb3VyY2VbZC5zb3VyY2VJbmRleCArIDNdOwogIGludmxlbmd0aCA9IDI1NiAqIGludmxlbmd0aCArIGQuc291cmNlW2Quc291cmNlSW5kZXggKyAyXTsKCiAgLyogY2hlY2sgbGVuZ3RoICovCiAgaWYgKGxlbmd0aCAhPT0gKH5pbnZsZW5ndGggJiAweDAwMDBmZmZmKSkKICAgIHJldHVybiBUSU5GX0RBVEFfRVJST1I7CgogIGQuc291cmNlSW5kZXggKz0gNDsKCiAgLyogY29weSBibG9jayAqLwogIGZvciAoaSA9IGxlbmd0aDsgaTsgLS1pKQogICAgZC5kZXN0W2QuZGVzdExlbisrXSA9IGQuc291cmNlW2Quc291cmNlSW5kZXgrK107CgogIC8qIG1ha2Ugc3VyZSB3ZSBzdGFydCBuZXh0IGJsb2NrIG9uIGEgYnl0ZSBib3VuZGFyeSAqLwogIGQuYml0Y291bnQgPSAwOwoKICByZXR1cm4gVElORl9PSzsKfQoKLyogaW5mbGF0ZSBzdHJlYW0gZnJvbSBzb3VyY2UgdG8gZGVzdCAqLwpmdW5jdGlvbiB0aW5mX3VuY29tcHJlc3Moc291cmNlLCBkZXN0KSB7CiAgdmFyIGQgPSBuZXcgRGF0YShzb3VyY2UsIGRlc3QpOwogIHZhciBiZmluYWwsIGJ0eXBlLCByZXM7CgogIGRvIHsKICAgIC8qIHJlYWQgZmluYWwgYmxvY2sgZmxhZyAqLwogICAgYmZpbmFsID0gdGluZl9nZXRiaXQoZCk7CgogICAgLyogcmVhZCBibG9jayB0eXBlICgyIGJpdHMpICovCiAgICBidHlwZSA9IHRpbmZfcmVhZF9iaXRzKGQsIDIsIDApOwoKICAgIC8qIGRlY29tcHJlc3MgYmxvY2sgKi8KICAgIHN3aXRjaCAoYnR5cGUpIHsKICAgICAgY2FzZSAwOgogICAgICAgIC8qIGRlY29tcHJlc3MgdW5jb21wcmVzc2VkIGJsb2NrICovCiAgICAgICAgcmVzID0gdGluZl9pbmZsYXRlX3VuY29tcHJlc3NlZF9ibG9jayhkKTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAxOgogICAgICAgIC8qIGRlY29tcHJlc3MgYmxvY2sgd2l0aCBmaXhlZCBodWZmbWFuIHRyZWVzICovCiAgICAgICAgcmVzID0gdGluZl9pbmZsYXRlX2Jsb2NrX2RhdGEoZCwgc2x0cmVlLCBzZHRyZWUpOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDI6CiAgICAgICAgLyogZGVjb21wcmVzcyBibG9jayB3aXRoIGR5bmFtaWMgaHVmZm1hbiB0cmVlcyAqLwogICAgICAgIHRpbmZfZGVjb2RlX3RyZWVzKGQsIGQubHRyZWUsIGQuZHRyZWUpOwogICAgICAgIHJlcyA9IHRpbmZfaW5mbGF0ZV9ibG9ja19kYXRhKGQsIGQubHRyZWUsIGQuZHRyZWUpOwogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgIHJlcyA9IFRJTkZfREFUQV9FUlJPUjsKICAgIH0KCiAgICBpZiAocmVzICE9PSBUSU5GX09LKQogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEgZXJyb3InKTsKCiAgfSB3aGlsZSAoIWJmaW5hbCk7CgogIGlmIChkLmRlc3RMZW4gPCBkLmRlc3QubGVuZ3RoKSB7CiAgICBpZiAodHlwZW9mIGQuZGVzdC5zbGljZSA9PT0gJ2Z1bmN0aW9uJykKICAgICAgcmV0dXJuIGQuZGVzdC5zbGljZSgwLCBkLmRlc3RMZW4pOwogICAgZWxzZQogICAgICByZXR1cm4gZC5kZXN0LnN1YmFycmF5KDAsIGQuZGVzdExlbik7CiAgfQogIAogIHJldHVybiBkLmRlc3Q7Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tICoKICogLS0gaW5pdGlhbGl6YXRpb24gLS0gKgogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLyogYnVpbGQgZml4ZWQgaHVmZm1hbiB0cmVlcyAqLwp0aW5mX2J1aWxkX2ZpeGVkX3RyZWVzKHNsdHJlZSwgc2R0cmVlKTsKCi8qIGJ1aWxkIGV4dHJhIGJpdHMgYW5kIGJhc2UgdGFibGVzICovCnRpbmZfYnVpbGRfYml0c19iYXNlKGxlbmd0aF9iaXRzLCBsZW5ndGhfYmFzZSwgNCwgMyk7CnRpbmZfYnVpbGRfYml0c19iYXNlKGRpc3RfYml0cywgZGlzdF9iYXNlLCAyLCAxKTsKCi8qIGZpeCBhIHNwZWNpYWwgY2FzZSAqLwpsZW5ndGhfYml0c1syOF0gPSAwOwpsZW5ndGhfYmFzZVsyOF0gPSAyNTg7Cgptb2R1bGUuZXhwb3J0cyA9IHRpbmZfdW5jb21wcmVzczsKCgovKioqLyB9KSwKLyogODAgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCnZhciBpc1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNTdHJpbmc7CnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc0FycmF5Owp2YXIgaXNVbmRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzVW5kZWZpbmVkOwp2YXIgaXNOdWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc051bGw7CgovKioKICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBTdHlsZUNvbnRleHRTdGFjayB1c2VkIGZvciBzdHlsZSBpbmhlcml0YW5jZSBhbmQgc3R5bGUgb3ZlcnJpZGVzCiAqCiAqIEBjb25zdHJ1Y3RvcgogKiBAdGhpcyB7U3R5bGVDb250ZXh0U3RhY2t9CiAqIEBwYXJhbSB7T2JqZWN0fSBuYW1lZCBzdHlsZXMgZGljdGlvbmFyeQogKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uYWwgZGVmYXVsdCBzdHlsZSBkZWZpbml0aW9uCiAqLwpmdW5jdGlvbiBTdHlsZUNvbnRleHRTdGFjayhzdHlsZURpY3Rpb25hcnksIGRlZmF1bHRTdHlsZSkgewoJdGhpcy5kZWZhdWx0U3R5bGUgPSBkZWZhdWx0U3R5bGUgfHwge307Cgl0aGlzLnN0eWxlRGljdGlvbmFyeSA9IHN0eWxlRGljdGlvbmFyeTsKCXRoaXMuc3R5bGVPdmVycmlkZXMgPSBbXTsKfQoKLyoqCiAqIENyZWF0ZXMgY2xvbmVkIHZlcnNpb24gb2YgY3VycmVudCBzdGFjawogKiBAcmV0dXJuIHtTdHlsZUNvbnRleHRTdGFja30gY3VycmVudCBzdGFjayBzbmFwc2hvdAogKi8KU3R5bGVDb250ZXh0U3RhY2sucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkgewoJdmFyIHN0YWNrID0gbmV3IFN0eWxlQ29udGV4dFN0YWNrKHRoaXMuc3R5bGVEaWN0aW9uYXJ5LCB0aGlzLmRlZmF1bHRTdHlsZSk7CgoJdGhpcy5zdHlsZU92ZXJyaWRlcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CgkJc3RhY2suc3R5bGVPdmVycmlkZXMucHVzaChpdGVtKTsKCX0pOwoKCXJldHVybiBzdGFjazsKfTsKCi8qKgogKiBQdXNoZXMgc3R5bGUtbmFtZSBvciBzdHlsZS1vdmVycmlkZXMtb2JqZWN0IG9udG8gdGhlIHN0YWNrIGZvciBmdXR1cmUgZXZhbHVhdGlvbgogKgogKiBAcGFyYW0ge1N0cmluZ3xPYmplY3R9IHN0eWxlTmFtZU9yT3ZlcnJpZGUgc3R5bGUtbmFtZSAocmVmZXJyaW5nIHRvIHN0eWxlRGljdGlvbmFyeSkgb3IKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgbmV3IGRpY3Rpb25hcnkgZGVmaW5pbmcgb3ZlcnJpZGluZyBwcm9wZXJ0aWVzCiAqLwpTdHlsZUNvbnRleHRTdGFjay5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChzdHlsZU5hbWVPck92ZXJyaWRlKSB7Cgl0aGlzLnN0eWxlT3ZlcnJpZGVzLnB1c2goc3R5bGVOYW1lT3JPdmVycmlkZSk7Cn07CgovKioKICogUmVtb3ZlcyBsYXN0IHN0eWxlLW5hbWUgb3Igc3R5bGUtb3ZlcnJpZGVzLW9iamVjdCBmcm9tIHRoZSBzdGFjawogKgogKiBAcGFyYW0ge051bWJlcn0gaG93TWFueSAtIG9wdGlvbmFsIG51bWJlciBvZiBlbGVtZW50cyB0byBiZSBwb3BwZWQgKGlmIG5vdCBzcGVjaWZpZWQsCiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lIGVsZW1lbnQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIHN0YWNrKQogKi8KU3R5bGVDb250ZXh0U3RhY2sucHJvdG90eXBlLnBvcCA9IGZ1bmN0aW9uIChob3dNYW55KSB7Cglob3dNYW55ID0gaG93TWFueSB8fCAxOwoKCXdoaWxlIChob3dNYW55LS0gPiAwKSB7CgkJdGhpcy5zdHlsZU92ZXJyaWRlcy5wb3AoKTsKCX0KfTsKCi8qKgogKiBDcmVhdGVzIGEgc2V0IG9mIG5hbWVkIHN0eWxlcyBvci9hbmQgYSBzdHlsZS1vdmVycmlkZXMtb2JqZWN0IGJhc2VkIG9uIHRoZSBpdGVtLAogKiBwdXNoZXMgdGhvc2UgZWxlbWVudHMgb250byB0aGUgc3RhY2sgZm9yIGZ1dHVyZSBldmFsdWF0aW9uIGFuZCByZXR1cm5zIHRoZSBudW1iZXIKICogb2YgZWxlbWVudHMgcHVzaGVkLCBzbyB0aGV5IGNhbiBiZSBlYXNpbHkgcG9wZWQgdGhlbi4KICoKICogQHBhcmFtIHtPYmplY3R9IGl0ZW0gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25hbCBzdHlsZSBwcm9wZXJ0eSBhbmQvb3Igc3R5bGUgb3ZlcnJpZGVzCiAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBwdXNoZWQgb250byB0aGUgc3RhY2sKICovClN0eWxlQ29udGV4dFN0YWNrLnByb3RvdHlwZS5hdXRvcHVzaCA9IGZ1bmN0aW9uIChpdGVtKSB7CglpZiAoaXNTdHJpbmcoaXRlbSkpIHsKCQlyZXR1cm4gMDsKCX0KCgl2YXIgc3R5bGVOYW1lcyA9IFtdOwoKCWlmIChpdGVtLnN0eWxlKSB7CgkJaWYgKGlzQXJyYXkoaXRlbS5zdHlsZSkpIHsKCQkJc3R5bGVOYW1lcyA9IGl0ZW0uc3R5bGU7CgkJfSBlbHNlIHsKCQkJc3R5bGVOYW1lcyA9IFtpdGVtLnN0eWxlXTsKCQl9Cgl9CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBzdHlsZU5hbWVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCXRoaXMucHVzaChzdHlsZU5hbWVzW2ldKTsKCX0KCgl2YXIgc3R5bGVQcm9wZXJ0aWVzID0gWwoJCSdmb250JywKCQknZm9udFNpemUnLAoJCSdmb250RmVhdHVyZXMnLAoJCSdib2xkJywKCQknaXRhbGljcycsCgkJJ2FsaWdubWVudCcsCgkJJ2NvbG9yJywKCQknY29sdW1uR2FwJywKCQknZmlsbENvbG9yJywKCQknZGVjb3JhdGlvbicsCgkJJ2RlY29yYXRpb25TdHlsZScsCgkJJ2RlY29yYXRpb25Db2xvcicsCgkJJ2JhY2tncm91bmQnLAoJCSdsaW5lSGVpZ2h0JywKCQknY2hhcmFjdGVyU3BhY2luZycsCgkJJ25vV3JhcCcsCgkJJ21hcmtlckNvbG9yJywKCQknbGVhZGluZ0luZGVudCcKCQkJLy8ndGFibGVDZWxsUGFkZGluZycKCQkJLy8gJ2NlbGxCb3JkZXInLAoJCQkvLyAnaGVhZGVyQ2VsbEJvcmRlcicsCgkJCS8vICdvZGRSb3dDZWxsQm9yZGVyJywKCQkJLy8gJ2V2ZW5Sb3dDZWxsQm9yZGVyJywKCQkJLy8gJ3RhYmxlQm9yZGVyJwoJXTsKCXZhciBzdHlsZU92ZXJyaWRlT2JqZWN0ID0ge307Cgl2YXIgcHVzaFN0eWxlT3ZlcnJpZGVPYmplY3QgPSBmYWxzZTsKCglzdHlsZVByb3BlcnRpZXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CgkJaWYgKCFpc1VuZGVmaW5lZChpdGVtW2tleV0pICYmICFpc051bGwoaXRlbVtrZXldKSkgewoJCQlzdHlsZU92ZXJyaWRlT2JqZWN0W2tleV0gPSBpdGVtW2tleV07CgkJCXB1c2hTdHlsZU92ZXJyaWRlT2JqZWN0ID0gdHJ1ZTsKCQl9Cgl9KTsKCglpZiAocHVzaFN0eWxlT3ZlcnJpZGVPYmplY3QpIHsKCQl0aGlzLnB1c2goc3R5bGVPdmVycmlkZU9iamVjdCk7Cgl9CgoJcmV0dXJuIHN0eWxlTmFtZXMubGVuZ3RoICsgKHB1c2hTdHlsZU92ZXJyaWRlT2JqZWN0ID8gMSA6IDApOwp9OwoKLyoqCiAqIEF1dG9tYXRpY2FsbHkgcHVzaGVzIGVsZW1lbnRzIG9udG8gdGhlIHN0YWNrLCB1c2luZyBhdXRvcHVzaCBiYXNlZCBvbiBpdGVtLAogKiBleGVjdXRlcyBjYWxsYmFjayBhbmQgdGhlbiBwb3BzIGVsZW1lbnRzIGJhY2suIFJldHVybnMgdmFsdWUgcmV0dXJuZWQgYnkgY2FsbGJhY2sKICoKICogQHBhcmFtICB7T2JqZWN0fSAgIGl0ZW0gLSBhbiBvYmplY3Qgd2l0aCBvcHRpb25hbCBzdHlsZSBwcm9wZXJ0eSBhbmQvb3Igc3R5bGUgb3ZlcnJpZGVzCiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgYmV0d2VlbiBhdXRvcHVzaCBhbmQgcG9wCiAqIEByZXR1cm4ge09iamVjdH0gdmFsdWUgcmV0dXJuZWQgYnkgY2FsbGJhY2sKICovClN0eWxlQ29udGV4dFN0YWNrLnByb3RvdHlwZS5hdXRvID0gZnVuY3Rpb24gKGl0ZW0sIGNhbGxiYWNrKSB7Cgl2YXIgcHVzaGVkSXRlbXMgPSB0aGlzLmF1dG9wdXNoKGl0ZW0pOwoJdmFyIHJlc3VsdCA9IGNhbGxiYWNrKCk7CgoJaWYgKHB1c2hlZEl0ZW1zID4gMCkgewoJCXRoaXMucG9wKHB1c2hlZEl0ZW1zKTsKCX0KCglyZXR1cm4gcmVzdWx0Owp9OwoKLyoqCiAqIEV2YWx1YXRlcyBzdGFjayBhbmQgcmV0dXJucyB2YWx1ZSBvZiBhIG5hbWVkIHByb3BlcnR5CiAqCiAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wZXJ0eSAtIHByb3BlcnR5IG5hbWUKICogQHJldHVybiBwcm9wZXJ0eSB2YWx1ZSBvciBudWxsIGlmIG5vdCBmb3VuZAogKi8KU3R5bGVDb250ZXh0U3RhY2sucHJvdG90eXBlLmdldFByb3BlcnR5ID0gZnVuY3Rpb24gKHByb3BlcnR5KSB7CglpZiAodGhpcy5zdHlsZU92ZXJyaWRlcykgewoJCWZvciAodmFyIGkgPSB0aGlzLnN0eWxlT3ZlcnJpZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CgkJCXZhciBpdGVtID0gdGhpcy5zdHlsZU92ZXJyaWRlc1tpXTsKCgkJCWlmIChpc1N0cmluZyhpdGVtKSkgewoJCQkJLy8gbmFtZWQtc3R5bGUtb3ZlcnJpZGUKCQkJCXZhciBzdHlsZSA9IHRoaXMuc3R5bGVEaWN0aW9uYXJ5W2l0ZW1dOwoJCQkJaWYgKHN0eWxlICYmICFpc1VuZGVmaW5lZChzdHlsZVtwcm9wZXJ0eV0pICYmICFpc051bGwoc3R5bGVbcHJvcGVydHldKSkgewoJCQkJCXJldHVybiBzdHlsZVtwcm9wZXJ0eV07CgkJCQl9CgkJCX0gZWxzZSBpZiAoIWlzVW5kZWZpbmVkKGl0ZW1bcHJvcGVydHldKSAmJiAhaXNOdWxsKGl0ZW1bcHJvcGVydHldKSkgewoJCQkJLy8gc3R5bGUtb3ZlcnJpZGVzLW9iamVjdAoJCQkJcmV0dXJuIGl0ZW1bcHJvcGVydHldOwoJCQl9CgkJfQoJfQoKCXJldHVybiB0aGlzLmRlZmF1bHRTdHlsZSAmJiB0aGlzLmRlZmF1bHRTdHlsZVtwcm9wZXJ0eV07Cn07Cgptb2R1bGUuZXhwb3J0cyA9IFN0eWxlQ29udGV4dFN0YWNrOwoKCi8qKiovIH0pLAovKiA4MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKdmFyIFRyYXZlcnNhbFRyYWNrZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc3KTsKdmFyIGlzU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc1N0cmluZzsKCi8qKgogKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIERvY3VtZW50Q29udGV4dCAtIGEgc3RvcmUgZm9yIGN1cnJlbnQgeCwgeSBwb3NpdGlvbnMgYW5kIGF2YWlsYWJsZSB3aWR0aC9oZWlnaHQuCiAqIEl0IGZhY2lsaXRhdGVzIGNvbHVtbiBkaXZpc2lvbnMgYW5kIHZlcnRpY2FsIHN5bmMKICovCmZ1bmN0aW9uIERvY3VtZW50Q29udGV4dChwYWdlU2l6ZSwgcGFnZU1hcmdpbnMpIHsKCXRoaXMucGFnZXMgPSBbXTsKCgl0aGlzLnBhZ2VNYXJnaW5zID0gcGFnZU1hcmdpbnM7CgoJdGhpcy54ID0gcGFnZU1hcmdpbnMubGVmdDsKCXRoaXMuYXZhaWxhYmxlV2lkdGggPSBwYWdlU2l6ZS53aWR0aCAtIHBhZ2VNYXJnaW5zLmxlZnQgLSBwYWdlTWFyZ2lucy5yaWdodDsKCXRoaXMuYXZhaWxhYmxlSGVpZ2h0ID0gMDsKCXRoaXMucGFnZSA9IC0xOwoKCXRoaXMuc25hcHNob3RzID0gW107CgoJdGhpcy5lbmRpbmdDZWxsID0gbnVsbDsKCgl0aGlzLnRyYWNrZXIgPSBuZXcgVHJhdmVyc2FsVHJhY2tlcigpOwoKCXRoaXMuYWRkUGFnZShwYWdlU2l6ZSk7CgoJdGhpcy5oYXNCYWNrZ3JvdW5kID0gZmFsc2U7Cn0KCkRvY3VtZW50Q29udGV4dC5wcm90b3R5cGUuYmVnaW5Db2x1bW5Hcm91cCA9IGZ1bmN0aW9uICgpIHsKCXRoaXMuc25hcHNob3RzLnB1c2goewoJCXg6IHRoaXMueCwKCQl5OiB0aGlzLnksCgkJYXZhaWxhYmxlSGVpZ2h0OiB0aGlzLmF2YWlsYWJsZUhlaWdodCwKCQlhdmFpbGFibGVXaWR0aDogdGhpcy5hdmFpbGFibGVXaWR0aCwKCQlwYWdlOiB0aGlzLnBhZ2UsCgkJYm90dG9tTW9zdDogewoJCQl4OiB0aGlzLngsCgkJCXk6IHRoaXMueSwKCQkJYXZhaWxhYmxlSGVpZ2h0OiB0aGlzLmF2YWlsYWJsZUhlaWdodCwKCQkJYXZhaWxhYmxlV2lkdGg6IHRoaXMuYXZhaWxhYmxlV2lkdGgsCgkJCXBhZ2U6IHRoaXMucGFnZQoJCX0sCgkJZW5kaW5nQ2VsbDogdGhpcy5lbmRpbmdDZWxsLAoJCWxhc3RDb2x1bW5XaWR0aDogdGhpcy5sYXN0Q29sdW1uV2lkdGgKCX0pOwoKCXRoaXMubGFzdENvbHVtbldpZHRoID0gMDsKfTsKCkRvY3VtZW50Q29udGV4dC5wcm90b3R5cGUuYmVnaW5Db2x1bW4gPSBmdW5jdGlvbiAod2lkdGgsIG9mZnNldCwgZW5kaW5nQ2VsbCkgewoJdmFyIHNhdmVkID0gdGhpcy5zbmFwc2hvdHNbdGhpcy5zbmFwc2hvdHMubGVuZ3RoIC0gMV07CgoJdGhpcy5jYWxjdWxhdGVCb3R0b21Nb3N0KHNhdmVkKTsKCgl0aGlzLmVuZGluZ0NlbGwgPSBlbmRpbmdDZWxsOwoJdGhpcy5wYWdlID0gc2F2ZWQucGFnZTsKCXRoaXMueCA9IHRoaXMueCArIHRoaXMubGFzdENvbHVtbldpZHRoICsgKG9mZnNldCB8fCAwKTsKCXRoaXMueSA9IHNhdmVkLnk7Cgl0aGlzLmF2YWlsYWJsZVdpZHRoID0gd2lkdGg7CS8vc2F2ZWQuYXZhaWxhYmxlV2lkdGggLSBvZmZzZXQ7Cgl0aGlzLmF2YWlsYWJsZUhlaWdodCA9IHNhdmVkLmF2YWlsYWJsZUhlaWdodDsKCgl0aGlzLmxhc3RDb2x1bW5XaWR0aCA9IHdpZHRoOwp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5jYWxjdWxhdGVCb3R0b21Nb3N0ID0gZnVuY3Rpb24gKGRlc3RDb250ZXh0KSB7CglpZiAodGhpcy5lbmRpbmdDZWxsKSB7CgkJdGhpcy5zYXZlQ29udGV4dEluRW5kaW5nQ2VsbCh0aGlzLmVuZGluZ0NlbGwpOwoJCXRoaXMuZW5kaW5nQ2VsbCA9IG51bGw7Cgl9IGVsc2UgewoJCWRlc3RDb250ZXh0LmJvdHRvbU1vc3QgPSBib3R0b21Nb3N0Q29udGV4dCh0aGlzLCBkZXN0Q29udGV4dC5ib3R0b21Nb3N0KTsKCX0KfTsKCkRvY3VtZW50Q29udGV4dC5wcm90b3R5cGUubWFya0VuZGluZyA9IGZ1bmN0aW9uIChlbmRpbmdDZWxsKSB7Cgl0aGlzLnBhZ2UgPSBlbmRpbmdDZWxsLl9jb2x1bW5FbmRpbmdDb250ZXh0LnBhZ2U7Cgl0aGlzLnggPSBlbmRpbmdDZWxsLl9jb2x1bW5FbmRpbmdDb250ZXh0Lng7Cgl0aGlzLnkgPSBlbmRpbmdDZWxsLl9jb2x1bW5FbmRpbmdDb250ZXh0Lnk7Cgl0aGlzLmF2YWlsYWJsZVdpZHRoID0gZW5kaW5nQ2VsbC5fY29sdW1uRW5kaW5nQ29udGV4dC5hdmFpbGFibGVXaWR0aDsKCXRoaXMuYXZhaWxhYmxlSGVpZ2h0ID0gZW5kaW5nQ2VsbC5fY29sdW1uRW5kaW5nQ29udGV4dC5hdmFpbGFibGVIZWlnaHQ7Cgl0aGlzLmxhc3RDb2x1bW5XaWR0aCA9IGVuZGluZ0NlbGwuX2NvbHVtbkVuZGluZ0NvbnRleHQubGFzdENvbHVtbldpZHRoOwp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5zYXZlQ29udGV4dEluRW5kaW5nQ2VsbCA9IGZ1bmN0aW9uIChlbmRpbmdDZWxsKSB7CgllbmRpbmdDZWxsLl9jb2x1bW5FbmRpbmdDb250ZXh0ID0gewoJCXBhZ2U6IHRoaXMucGFnZSwKCQl4OiB0aGlzLngsCgkJeTogdGhpcy55LAoJCWF2YWlsYWJsZUhlaWdodDogdGhpcy5hdmFpbGFibGVIZWlnaHQsCgkJYXZhaWxhYmxlV2lkdGg6IHRoaXMuYXZhaWxhYmxlV2lkdGgsCgkJbGFzdENvbHVtbldpZHRoOiB0aGlzLmxhc3RDb2x1bW5XaWR0aAoJfTsKfTsKCkRvY3VtZW50Q29udGV4dC5wcm90b3R5cGUuY29tcGxldGVDb2x1bW5Hcm91cCA9IGZ1bmN0aW9uIChoZWlnaHQpIHsKCXZhciBzYXZlZCA9IHRoaXMuc25hcHNob3RzLnBvcCgpOwoKCXRoaXMuY2FsY3VsYXRlQm90dG9tTW9zdChzYXZlZCk7CgoJdGhpcy5lbmRpbmdDZWxsID0gbnVsbDsKCXRoaXMueCA9IHNhdmVkLng7CgoJdmFyIHkgPSBzYXZlZC5ib3R0b21Nb3N0Lnk7CglpZiAoaGVpZ2h0KSB7CgkJaWYgKHNhdmVkLnBhZ2UgPT09IHNhdmVkLmJvdHRvbU1vc3QucGFnZSkgewoJCQlpZiAoKHNhdmVkLnkgKyBoZWlnaHQpID4geSkgewoJCQkJeSA9IHNhdmVkLnkgKyBoZWlnaHQ7CgkJCX0KCQl9IGVsc2UgewoJCQl5ICs9IGhlaWdodDsKCQl9Cgl9CgoJdGhpcy55ID0geTsKCXRoaXMucGFnZSA9IHNhdmVkLmJvdHRvbU1vc3QucGFnZTsKCXRoaXMuYXZhaWxhYmxlV2lkdGggPSBzYXZlZC5hdmFpbGFibGVXaWR0aDsKCXRoaXMuYXZhaWxhYmxlSGVpZ2h0ID0gc2F2ZWQuYm90dG9tTW9zdC5hdmFpbGFibGVIZWlnaHQ7CglpZiAoaGVpZ2h0KSB7CgkJdGhpcy5hdmFpbGFibGVIZWlnaHQgLT0gKHkgLSBzYXZlZC5ib3R0b21Nb3N0LnkpOwoJfQoJdGhpcy5sYXN0Q29sdW1uV2lkdGggPSBzYXZlZC5sYXN0Q29sdW1uV2lkdGg7Cn07CgpEb2N1bWVudENvbnRleHQucHJvdG90eXBlLmFkZE1hcmdpbiA9IGZ1bmN0aW9uIChsZWZ0LCByaWdodCkgewoJdGhpcy54ICs9IGxlZnQ7Cgl0aGlzLmF2YWlsYWJsZVdpZHRoIC09IGxlZnQgKyAocmlnaHQgfHwgMCk7Cn07CgpEb2N1bWVudENvbnRleHQucHJvdG90eXBlLm1vdmVEb3duID0gZnVuY3Rpb24gKG9mZnNldCkgewoJdGhpcy55ICs9IG9mZnNldDsKCXRoaXMuYXZhaWxhYmxlSGVpZ2h0IC09IG9mZnNldDsKCglyZXR1cm4gdGhpcy5hdmFpbGFibGVIZWlnaHQgPiAwOwp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5pbml0aWFsaXplUGFnZSA9IGZ1bmN0aW9uICgpIHsKCXRoaXMueSA9IHRoaXMucGFnZU1hcmdpbnMudG9wOwoJdGhpcy5hdmFpbGFibGVIZWlnaHQgPSB0aGlzLmdldEN1cnJlbnRQYWdlKCkucGFnZVNpemUuaGVpZ2h0IC0gdGhpcy5wYWdlTWFyZ2lucy50b3AgLSB0aGlzLnBhZ2VNYXJnaW5zLmJvdHRvbTsKCXRoaXMucGFnZVNuYXBzaG90KCkuYXZhaWxhYmxlV2lkdGggPSB0aGlzLmdldEN1cnJlbnRQYWdlKCkucGFnZVNpemUud2lkdGggLSB0aGlzLnBhZ2VNYXJnaW5zLmxlZnQgLSB0aGlzLnBhZ2VNYXJnaW5zLnJpZ2h0Owp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5wYWdlU25hcHNob3QgPSBmdW5jdGlvbiAoKSB7CglpZiAodGhpcy5zbmFwc2hvdHNbMF0pIHsKCQlyZXR1cm4gdGhpcy5zbmFwc2hvdHNbMF07Cgl9IGVsc2UgewoJCXJldHVybiB0aGlzOwoJfQp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5tb3ZlVG8gPSBmdW5jdGlvbiAoeCwgeSkgewoJaWYgKHggIT09IHVuZGVmaW5lZCAmJiB4ICE9PSBudWxsKSB7CgkJdGhpcy54ID0geDsKCQl0aGlzLmF2YWlsYWJsZVdpZHRoID0gdGhpcy5nZXRDdXJyZW50UGFnZSgpLnBhZ2VTaXplLndpZHRoIC0gdGhpcy54IC0gdGhpcy5wYWdlTWFyZ2lucy5yaWdodDsKCX0KCWlmICh5ICE9PSB1bmRlZmluZWQgJiYgeSAhPT0gbnVsbCkgewoJCXRoaXMueSA9IHk7CgkJdGhpcy5hdmFpbGFibGVIZWlnaHQgPSB0aGlzLmdldEN1cnJlbnRQYWdlKCkucGFnZVNpemUuaGVpZ2h0IC0gdGhpcy55IC0gdGhpcy5wYWdlTWFyZ2lucy5ib3R0b207Cgl9Cn07CgpEb2N1bWVudENvbnRleHQucHJvdG90eXBlLmJlZ2luRGV0YWNoZWRCbG9jayA9IGZ1bmN0aW9uICgpIHsKCXRoaXMuc25hcHNob3RzLnB1c2goewoJCXg6IHRoaXMueCwKCQl5OiB0aGlzLnksCgkJYXZhaWxhYmxlSGVpZ2h0OiB0aGlzLmF2YWlsYWJsZUhlaWdodCwKCQlhdmFpbGFibGVXaWR0aDogdGhpcy5hdmFpbGFibGVXaWR0aCwKCQlwYWdlOiB0aGlzLnBhZ2UsCgkJZW5kaW5nQ2VsbDogdGhpcy5lbmRpbmdDZWxsLAoJCWxhc3RDb2x1bW5XaWR0aDogdGhpcy5sYXN0Q29sdW1uV2lkdGgKCX0pOwp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5lbmREZXRhY2hlZEJsb2NrID0gZnVuY3Rpb24gKCkgewoJdmFyIHNhdmVkID0gdGhpcy5zbmFwc2hvdHMucG9wKCk7CgoJdGhpcy54ID0gc2F2ZWQueDsKCXRoaXMueSA9IHNhdmVkLnk7Cgl0aGlzLmF2YWlsYWJsZVdpZHRoID0gc2F2ZWQuYXZhaWxhYmxlV2lkdGg7Cgl0aGlzLmF2YWlsYWJsZUhlaWdodCA9IHNhdmVkLmF2YWlsYWJsZUhlaWdodDsKCXRoaXMucGFnZSA9IHNhdmVkLnBhZ2U7Cgl0aGlzLmVuZGluZ0NlbGwgPSBzYXZlZC5lbmRpbmdDZWxsOwoJdGhpcy5sYXN0Q29sdW1uV2lkdGggPSBzYXZlZC5sYXN0Q29sdW1uV2lkdGg7Cn07CgpmdW5jdGlvbiBwYWdlT3JpZW50YXRpb24ocGFnZU9yaWVudGF0aW9uU3RyaW5nLCBjdXJyZW50UGFnZU9yaWVudGF0aW9uKSB7CglpZiAocGFnZU9yaWVudGF0aW9uU3RyaW5nID09PSB1bmRlZmluZWQpIHsKCQlyZXR1cm4gY3VycmVudFBhZ2VPcmllbnRhdGlvbjsKCX0gZWxzZSBpZiAoaXNTdHJpbmcocGFnZU9yaWVudGF0aW9uU3RyaW5nKSAmJiAocGFnZU9yaWVudGF0aW9uU3RyaW5nLnRvTG93ZXJDYXNlKCkgPT09ICdsYW5kc2NhcGUnKSkgewoJCXJldHVybiAnbGFuZHNjYXBlJzsKCX0gZWxzZSB7CgkJcmV0dXJuICdwb3J0cmFpdCc7Cgl9Cn0KCnZhciBnZXRQYWdlU2l6ZSA9IGZ1bmN0aW9uIChjdXJyZW50UGFnZSwgbmV3UGFnZU9yaWVudGF0aW9uKSB7CgoJbmV3UGFnZU9yaWVudGF0aW9uID0gcGFnZU9yaWVudGF0aW9uKG5ld1BhZ2VPcmllbnRhdGlvbiwgY3VycmVudFBhZ2UucGFnZVNpemUub3JpZW50YXRpb24pOwoKCWlmIChuZXdQYWdlT3JpZW50YXRpb24gIT09IGN1cnJlbnRQYWdlLnBhZ2VTaXplLm9yaWVudGF0aW9uKSB7CgkJcmV0dXJuIHsKCQkJb3JpZW50YXRpb246IG5ld1BhZ2VPcmllbnRhdGlvbiwKCQkJd2lkdGg6IGN1cnJlbnRQYWdlLnBhZ2VTaXplLmhlaWdodCwKCQkJaGVpZ2h0OiBjdXJyZW50UGFnZS5wYWdlU2l6ZS53aWR0aAoJCX07Cgl9IGVsc2UgewoJCXJldHVybiB7CgkJCW9yaWVudGF0aW9uOiBjdXJyZW50UGFnZS5wYWdlU2l6ZS5vcmllbnRhdGlvbiwKCQkJd2lkdGg6IGN1cnJlbnRQYWdlLnBhZ2VTaXplLndpZHRoLAoJCQloZWlnaHQ6IGN1cnJlbnRQYWdlLnBhZ2VTaXplLmhlaWdodAoJCX07Cgl9Cgp9OwoKCkRvY3VtZW50Q29udGV4dC5wcm90b3R5cGUubW92ZVRvTmV4dFBhZ2UgPSBmdW5jdGlvbiAocGFnZU9yaWVudGF0aW9uKSB7Cgl2YXIgbmV4dFBhZ2VJbmRleCA9IHRoaXMucGFnZSArIDE7CgoJdmFyIHByZXZQYWdlID0gdGhpcy5wYWdlOwoJdmFyIHByZXZZID0gdGhpcy55OwoKCXZhciBjcmVhdGVOZXdQYWdlID0gbmV4dFBhZ2VJbmRleCA+PSB0aGlzLnBhZ2VzLmxlbmd0aDsKCWlmIChjcmVhdGVOZXdQYWdlKSB7CgkJdmFyIGN1cnJlbnRBdmFpbGFibGVXaWR0aCA9IHRoaXMuYXZhaWxhYmxlV2lkdGg7CgkJdmFyIGN1cnJlbnRQYWdlT3JpZW50YXRpb24gPSB0aGlzLmdldEN1cnJlbnRQYWdlKCkucGFnZVNpemUub3JpZW50YXRpb247CgoJCXZhciBwYWdlU2l6ZSA9IGdldFBhZ2VTaXplKHRoaXMuZ2V0Q3VycmVudFBhZ2UoKSwgcGFnZU9yaWVudGF0aW9uKTsKCQl0aGlzLmFkZFBhZ2UocGFnZVNpemUpOwoKCQlpZiAoY3VycmVudFBhZ2VPcmllbnRhdGlvbiA9PT0gcGFnZVNpemUub3JpZW50YXRpb24pIHsKCQkJdGhpcy5hdmFpbGFibGVXaWR0aCA9IGN1cnJlbnRBdmFpbGFibGVXaWR0aDsKCQl9Cgl9IGVsc2UgewoJCXRoaXMucGFnZSA9IG5leHRQYWdlSW5kZXg7CgkJdGhpcy5pbml0aWFsaXplUGFnZSgpOwoJfQoKCXJldHVybiB7CgkJbmV3UGFnZUNyZWF0ZWQ6IGNyZWF0ZU5ld1BhZ2UsCgkJcHJldlBhZ2U6IHByZXZQYWdlLAoJCXByZXZZOiBwcmV2WSwKCQl5OiB0aGlzLnkKCX07Cn07CgoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5hZGRQYWdlID0gZnVuY3Rpb24gKHBhZ2VTaXplKSB7Cgl2YXIgcGFnZSA9IHtpdGVtczogW10sIHBhZ2VTaXplOiBwYWdlU2l6ZX07Cgl0aGlzLnBhZ2VzLnB1c2gocGFnZSk7Cgl0aGlzLnBhZ2UgPSB0aGlzLnBhZ2VzLmxlbmd0aCAtIDE7Cgl0aGlzLmluaXRpYWxpemVQYWdlKCk7CgoJdGhpcy50cmFja2VyLmVtaXQoJ3BhZ2VBZGRlZCcpOwoKCXJldHVybiBwYWdlOwp9OwoKRG9jdW1lbnRDb250ZXh0LnByb3RvdHlwZS5nZXRDdXJyZW50UGFnZSA9IGZ1bmN0aW9uICgpIHsKCWlmICh0aGlzLnBhZ2UgPCAwIHx8IHRoaXMucGFnZSA+PSB0aGlzLnBhZ2VzLmxlbmd0aCkgewoJCXJldHVybiBudWxsOwoJfQoKCXJldHVybiB0aGlzLnBhZ2VzW3RoaXMucGFnZV07Cn07CgpEb2N1bWVudENvbnRleHQucHJvdG90eXBlLmdldEN1cnJlbnRQb3NpdGlvbiA9IGZ1bmN0aW9uICgpIHsKCXZhciBwYWdlU2l6ZSA9IHRoaXMuZ2V0Q3VycmVudFBhZ2UoKS5wYWdlU2l6ZTsKCXZhciBpbm5lckhlaWdodCA9IHBhZ2VTaXplLmhlaWdodCAtIHRoaXMucGFnZU1hcmdpbnMudG9wIC0gdGhpcy5wYWdlTWFyZ2lucy5ib3R0b207Cgl2YXIgaW5uZXJXaWR0aCA9IHBhZ2VTaXplLndpZHRoIC0gdGhpcy5wYWdlTWFyZ2lucy5sZWZ0IC0gdGhpcy5wYWdlTWFyZ2lucy5yaWdodDsKCglyZXR1cm4gewoJCXBhZ2VOdW1iZXI6IHRoaXMucGFnZSArIDEsCgkJcGFnZU9yaWVudGF0aW9uOiBwYWdlU2l6ZS5vcmllbnRhdGlvbiwKCQlwYWdlSW5uZXJIZWlnaHQ6IGlubmVySGVpZ2h0LAoJCXBhZ2VJbm5lcldpZHRoOiBpbm5lcldpZHRoLAoJCWxlZnQ6IHRoaXMueCwKCQl0b3A6IHRoaXMueSwKCQl2ZXJ0aWNhbFJhdGlvOiAoKHRoaXMueSAtIHRoaXMucGFnZU1hcmdpbnMudG9wKSAvIGlubmVySGVpZ2h0KSwKCQlob3Jpem9udGFsUmF0aW86ICgodGhpcy54IC0gdGhpcy5wYWdlTWFyZ2lucy5sZWZ0KSAvIGlubmVyV2lkdGgpCgl9Owp9OwoKZnVuY3Rpb24gYm90dG9tTW9zdENvbnRleHQoYzEsIGMyKSB7Cgl2YXIgcjsKCglpZiAoYzEucGFnZSA+IGMyLnBhZ2UpIHsKCQlyID0gYzE7Cgl9IGVsc2UgaWYgKGMyLnBhZ2UgPiBjMS5wYWdlKSB7CgkJciA9IGMyOwoJfSBlbHNlIHsKCQlyID0gKGMxLnkgPiBjMi55KSA/IGMxIDogYzI7Cgl9CgoJcmV0dXJuIHsKCQlwYWdlOiByLnBhZ2UsCgkJeDogci54LAoJCXk6IHIueSwKCQlhdmFpbGFibGVIZWlnaHQ6IHIuYXZhaWxhYmxlSGVpZ2h0LAoJCWF2YWlsYWJsZVdpZHRoOiByLmF2YWlsYWJsZVdpZHRoCgl9Owp9Cgptb2R1bGUuZXhwb3J0cyA9IERvY3VtZW50Q29udGV4dDsKCgovKioqLyB9KSwKLyogODIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCi8qKgogKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIExpbmUKICoKICogQGNvbnN0cnVjdG9yCiAqIEB0aGlzIHtMaW5lfQogKiBAcGFyYW0ge051bWJlcn0gTWF4aW11bSB3aWR0aCB0aGlzIGxpbmUgY2FuIGhhdmUKICovCmZ1bmN0aW9uIExpbmUobWF4V2lkdGgpIHsKCXRoaXMubWF4V2lkdGggPSBtYXhXaWR0aDsKCXRoaXMubGVhZGluZ0N1dCA9IDA7Cgl0aGlzLnRyYWlsaW5nQ3V0ID0gMDsKCXRoaXMuaW5saW5lV2lkdGhzID0gMDsKCXRoaXMuaW5saW5lcyA9IFtdOwp9CgpMaW5lLnByb3RvdHlwZS5nZXRBc2NlbmRlckhlaWdodCA9IGZ1bmN0aW9uICgpIHsKCXZhciB5ID0gMDsKCgl0aGlzLmlubGluZXMuZm9yRWFjaChmdW5jdGlvbiAoaW5saW5lKSB7CgkJeSA9IE1hdGgubWF4KHksIGlubGluZS5mb250LmFzY2VuZGVyIC8gMTAwMCAqIGlubGluZS5mb250U2l6ZSk7Cgl9KTsKCXJldHVybiB5Owp9OwoKTGluZS5wcm90b3R5cGUuaGFzRW5vdWdoU3BhY2VGb3JJbmxpbmUgPSBmdW5jdGlvbiAoaW5saW5lKSB7CglpZiAodGhpcy5pbmxpbmVzLmxlbmd0aCA9PT0gMCkgewoJCXJldHVybiB0cnVlOwoJfQoJaWYgKHRoaXMubmV3TGluZUZvcmNlZCkgewoJCXJldHVybiBmYWxzZTsKCX0KCglyZXR1cm4gdGhpcy5pbmxpbmVXaWR0aHMgKyBpbmxpbmUud2lkdGggLSB0aGlzLmxlYWRpbmdDdXQgLSAoaW5saW5lLnRyYWlsaW5nQ3V0IHx8IDApIDw9IHRoaXMubWF4V2lkdGg7Cn07CgpMaW5lLnByb3RvdHlwZS5hZGRJbmxpbmUgPSBmdW5jdGlvbiAoaW5saW5lKSB7CglpZiAodGhpcy5pbmxpbmVzLmxlbmd0aCA9PT0gMCkgewoJCXRoaXMubGVhZGluZ0N1dCA9IGlubGluZS5sZWFkaW5nQ3V0IHx8IDA7Cgl9Cgl0aGlzLnRyYWlsaW5nQ3V0ID0gaW5saW5lLnRyYWlsaW5nQ3V0IHx8IDA7CgoJaW5saW5lLnggPSB0aGlzLmlubGluZVdpZHRocyAtIHRoaXMubGVhZGluZ0N1dDsKCgl0aGlzLmlubGluZXMucHVzaChpbmxpbmUpOwoJdGhpcy5pbmxpbmVXaWR0aHMgKz0gaW5saW5lLndpZHRoOwoKCWlmIChpbmxpbmUubGluZUVuZCkgewoJCXRoaXMubmV3TGluZUZvcmNlZCA9IHRydWU7Cgl9Cn07CgpMaW5lLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uICgpIHsKCXJldHVybiB0aGlzLmlubGluZVdpZHRocyAtIHRoaXMubGVhZGluZ0N1dCAtIHRoaXMudHJhaWxpbmdDdXQ7Cn07CgovKioKICogUmV0dXJucyBsaW5lIGhlaWdodAogKiBAcmV0dXJuIHtOdW1iZXJ9CiAqLwpMaW5lLnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbiAoKSB7Cgl2YXIgbWF4ID0gMDsKCgl0aGlzLmlubGluZXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkgewoJCW1heCA9IE1hdGgubWF4KG1heCwgaXRlbS5oZWlnaHQgfHwgMCk7Cgl9KTsKCglyZXR1cm4gbWF4Owp9OwoKbW9kdWxlLmV4cG9ydHMgPSBMaW5lOwoKCi8qKiovIH0pLAovKiA4MyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwsIHByb2Nlc3MpIHsvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy4KLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQovLyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAovLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUKLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwovLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgovLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCgoKCi8qPHJlcGxhY2VtZW50PiovCgp2YXIgcHJvY2Vzc05leHRUaWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMikubmV4dFRpY2s7Ci8qPC9yZXBsYWNlbWVudD4qLwoKbW9kdWxlLmV4cG9ydHMgPSBSZWFkYWJsZTsKCi8qPHJlcGxhY2VtZW50PiovCnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nik7Ci8qPC9yZXBsYWNlbWVudD4qLwoKLyo8cmVwbGFjZW1lbnQ+Ki8KdmFyIER1cGxleDsKLyo8L3JlcGxhY2VtZW50PiovCgpSZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZTsKCi8qPHJlcGxhY2VtZW50PiovCnZhciBFRSA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpLkV2ZW50RW1pdHRlcjsKCnZhciBFRWxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbiAoZW1pdHRlciwgdHlwZSkgewogIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGg7Cn07Ci8qPC9yZXBsYWNlbWVudD4qLwoKLyo8cmVwbGFjZW1lbnQ+Ki8KdmFyIFN0cmVhbSA9IF9fd2VicGFja19yZXF1aXJlX18oODQpOwovKjwvcmVwbGFjZW1lbnQ+Ki8KCi8qPHJlcGxhY2VtZW50PiovCgp2YXIgQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMykuQnVmZmVyOwp2YXIgT3VyVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5IHx8IGZ1bmN0aW9uICgpIHt9OwpmdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKSB7CiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTsKfQpmdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikgewogIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5Owp9CgovKjwvcmVwbGFjZW1lbnQ+Ki8KCi8qPHJlcGxhY2VtZW50PiovCnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7CnV0aWwuaW5oZXJpdHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTsKLyo8L3JlcGxhY2VtZW50PiovCgovKjxyZXBsYWNlbWVudD4qLwp2YXIgZGVidWdVdGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzkpOwp2YXIgZGVidWcgPSB2b2lkIDA7CmlmIChkZWJ1Z1V0aWwgJiYgZGVidWdVdGlsLmRlYnVnbG9nKSB7CiAgZGVidWcgPSBkZWJ1Z1V0aWwuZGVidWdsb2coJ3N0cmVhbScpOwp9IGVsc2UgewogIGRlYnVnID0gZnVuY3Rpb24gKCkge307Cn0KLyo8L3JlcGxhY2VtZW50PiovCgp2YXIgQnVmZmVyTGlzdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQwKTsKdmFyIGRlc3Ryb3lJbXBsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4NSk7CnZhciBTdHJpbmdEZWNvZGVyOwoKdXRpbC5pbmhlcml0cyhSZWFkYWJsZSwgU3RyZWFtKTsKCnZhciBrUHJveHlFdmVudHMgPSBbJ2Vycm9yJywgJ2Nsb3NlJywgJ2Rlc3Ryb3knLCAncGF1c2UnLCAncmVzdW1lJ107CgpmdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIoZW1pdHRlciwgZXZlbnQsIGZuKSB7CiAgLy8gU2FkbHkgdGhpcyBpcyBub3QgY2FjaGVhYmxlIGFzIHNvbWUgbGlicmFyaWVzIGJ1bmRsZSB0aGVpciBvd24KICAvLyBldmVudCBlbWl0dGVyIGltcGxlbWVudGF0aW9uIHdpdGggdGhlbS4KICBpZiAodHlwZW9mIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIoZXZlbnQsIGZuKTsKCiAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIGFueQogIC8vIHVzZXJsYW5kIG9uZXMuICBORVZFUiBETyBUSElTLiBUaGlzIGlzIGhlcmUgb25seSBiZWNhdXNlIHRoaXMgY29kZSBuZWVkcwogIC8vIHRvIGNvbnRpbnVlIHRvIHdvcmsgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBOb2RlLmpzIHRoYXQgZG8gbm90IGluY2x1ZGUKICAvLyB0aGUgcHJlcGVuZExpc3RlbmVyKCkgbWV0aG9kLiBUaGUgZ29hbCBpcyB0byBldmVudHVhbGx5IHJlbW92ZSB0aGlzIGhhY2suCiAgaWYgKCFlbWl0dGVyLl9ldmVudHMgfHwgIWVtaXR0ZXIuX2V2ZW50c1tldmVudF0pIGVtaXR0ZXIub24oZXZlbnQsIGZuKTtlbHNlIGlmIChpc0FycmF5KGVtaXR0ZXIuX2V2ZW50c1tldmVudF0pKSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdLnVuc2hpZnQoZm4pO2Vsc2UgZW1pdHRlci5fZXZlbnRzW2V2ZW50XSA9IFtmbiwgZW1pdHRlci5fZXZlbnRzW2V2ZW50XV07Cn0KCmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7CiAgRHVwbGV4ID0gRHVwbGV4IHx8IF9fd2VicGFja19yZXF1aXJlX18oMTYpOwoKICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCiAgLy8gRHVwbGV4IHN0cmVhbXMgYXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBidXQgc2hhcmUKICAvLyB0aGUgc2FtZSBvcHRpb25zIG9iamVjdC4KICAvLyBIb3dldmVyLCBzb21lIGNhc2VzIHJlcXVpcmUgc2V0dGluZyBvcHRpb25zIHRvIGRpZmZlcmVudAogIC8vIHZhbHVlcyBmb3IgdGhlIHJlYWRhYmxlIGFuZCB0aGUgd3JpdGFibGUgc2lkZXMgb2YgdGhlIGR1cGxleCBzdHJlYW0uCiAgLy8gVGhlc2Ugb3B0aW9ucyBjYW4gYmUgcHJvdmlkZWQgc2VwYXJhdGVseSBhcyByZWFkYWJsZVhYWCBhbmQgd3JpdGFibGVYWFguCiAgdmFyIGlzRHVwbGV4ID0gc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4OwoKICAvLyBvYmplY3Qgc3RyZWFtIGZsYWcuIFVzZWQgdG8gbWFrZSByZWFkKG4pIGlnbm9yZSBuIGFuZCB0bwogIC8vIG1ha2UgYWxsIHRoZSBidWZmZXIgbWVyZ2luZyBhbmQgbGVuZ3RoIGNoZWNrcyBnbyBhd2F5CiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7CgogIGlmIChpc0R1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7CgogIC8vIHRoZSBwb2ludCBhdCB3aGljaCBpdCBzdG9wcyBjYWxsaW5nIF9yZWFkKCkgdG8gZmlsbCB0aGUgYnVmZmVyCiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyAiZG9uJ3QgY2FsbCBfcmVhZCBwcmVlbXB0aXZlbHkgZXZlciIKICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrOwogIHZhciByZWFkYWJsZUh3bSA9IG9wdGlvbnMucmVhZGFibGVIaWdoV2F0ZXJNYXJrOwogIHZhciBkZWZhdWx0SHdtID0gdGhpcy5vYmplY3RNb2RlID8gMTYgOiAxNiAqIDEwMjQ7CgogIGlmIChod20gfHwgaHdtID09PSAwKSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod207ZWxzZSBpZiAoaXNEdXBsZXggJiYgKHJlYWRhYmxlSHdtIHx8IHJlYWRhYmxlSHdtID09PSAwKSkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gcmVhZGFibGVId207ZWxzZSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBkZWZhdWx0SHdtOwoKICAvLyBjYXN0IHRvIGludHMuCiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gTWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspOwoKICAvLyBBIGxpbmtlZCBsaXN0IGlzIHVzZWQgdG8gc3RvcmUgZGF0YSBjaHVua3MgaW5zdGVhZCBvZiBhbiBhcnJheSBiZWNhdXNlIHRoZQogIC8vIGxpbmtlZCBsaXN0IGNhbiByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgYmVnaW5uaW5nIGZhc3RlciB0aGFuCiAgLy8gYXJyYXkuc2hpZnQoKQogIHRoaXMuYnVmZmVyID0gbmV3IEJ1ZmZlckxpc3QoKTsKICB0aGlzLmxlbmd0aCA9IDA7CiAgdGhpcy5waXBlcyA9IG51bGw7CiAgdGhpcy5waXBlc0NvdW50ID0gMDsKICB0aGlzLmZsb3dpbmcgPSBudWxsOwogIHRoaXMuZW5kZWQgPSBmYWxzZTsKICB0aGlzLmVuZEVtaXR0ZWQgPSBmYWxzZTsKICB0aGlzLnJlYWRpbmcgPSBmYWxzZTsKCiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgZXZlbnQgJ3JlYWRhYmxlJy8nZGF0YScgaXMgZW1pdHRlZAogIC8vIGltbWVkaWF0ZWx5LCBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlCiAgLy8gYW55IGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsICJsYXRlciIgc2hvdWxkIGdlbmVyYWxseSBhbHNvCiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHJlYWQgY2FsbC4KICB0aGlzLnN5bmMgPSB0cnVlOwoKICAvLyB3aGVuZXZlciB3ZSByZXR1cm4gbnVsbCwgdGhlbiB3ZSBzZXQgYSBmbGFnIHRvIHNheQogIC8vIHRoYXQgd2UncmUgYXdhaXRpbmcgYSAncmVhZGFibGUnIGV2ZW50IGVtaXNzaW9uLgogIHRoaXMubmVlZFJlYWRhYmxlID0gZmFsc2U7CiAgdGhpcy5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTsKICB0aGlzLnJlYWRhYmxlTGlzdGVuaW5nID0gZmFsc2U7CiAgdGhpcy5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTsKCiAgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkCiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTsKCiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZwogIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS4KICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guCiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7CgogIC8vIHRoZSBudW1iZXIgb2Ygd3JpdGVycyB0aGF0IGFyZSBhd2FpdGluZyBhIGRyYWluIGV2ZW50IGluIC5waXBlKClzCiAgdGhpcy5hd2FpdERyYWluID0gMDsKCiAgLy8gaWYgdHJ1ZSwgYSBtYXliZVJlYWRNb3JlIGhhcyBiZWVuIHNjaGVkdWxlZAogIHRoaXMucmVhZGluZ01vcmUgPSBmYWxzZTsKCiAgdGhpcy5kZWNvZGVyID0gbnVsbDsKICB0aGlzLmVuY29kaW5nID0gbnVsbDsKICBpZiAob3B0aW9ucy5lbmNvZGluZykgewogICAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NykuU3RyaW5nRGVjb2RlcjsKICAgIHRoaXMuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKG9wdGlvbnMuZW5jb2RpbmcpOwogICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7CiAgfQp9CgpmdW5jdGlvbiBSZWFkYWJsZShvcHRpb25zKSB7CiAgRHVwbGV4ID0gRHVwbGV4IHx8IF9fd2VicGFja19yZXF1aXJlX18oMTYpOwoKICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZGFibGUpKSByZXR1cm4gbmV3IFJlYWRhYmxlKG9wdGlvbnMpOwoKICB0aGlzLl9yZWFkYWJsZVN0YXRlID0gbmV3IFJlYWRhYmxlU3RhdGUob3B0aW9ucywgdGhpcyk7CgogIC8vIGxlZ2FjeQogIHRoaXMucmVhZGFibGUgPSB0cnVlOwoKICBpZiAob3B0aW9ucykgewogICAgaWYgKHR5cGVvZiBvcHRpb25zLnJlYWQgPT09ICdmdW5jdGlvbicpIHRoaXMuX3JlYWQgPSBvcHRpb25zLnJlYWQ7CgogICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7CiAgfQoKICBTdHJlYW0uY2FsbCh0aGlzKTsKfQoKT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHsKICBnZXQ6IGZ1bmN0aW9uICgpIHsKICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkOwogIH0sCiAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHsKICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbQogICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldAogICAgaWYgKCF0aGlzLl9yZWFkYWJsZVN0YXRlKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5CiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWQKICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7CiAgfQp9KTsKClJlYWRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTsKUmVhZGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7ClJlYWRhYmxlLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7CiAgdGhpcy5wdXNoKG51bGwpOwogIGNiKGVycik7Cn07CgovLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci4KLy8gVGhpcyByZXR1cm5zIHRydWUgaWYgdGhlIGhpZ2hXYXRlck1hcmsgaGFzIG5vdCBiZWVuIGhpdCB5ZXQsCi8vIHNpbWlsYXIgdG8gaG93IFdyaXRhYmxlLndyaXRlKCkgcmV0dXJucyB0cnVlIGlmIHlvdSBzaG91bGQKLy8gd3JpdGUoKSBzb21lIG1vcmUuClJlYWRhYmxlLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykgewogIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7CiAgdmFyIHNraXBDaHVua0NoZWNrOwoKICBpZiAoIXN0YXRlLm9iamVjdE1vZGUpIHsKICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7CiAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgc3RhdGUuZGVmYXVsdEVuY29kaW5nOwogICAgICBpZiAoZW5jb2RpbmcgIT09IHN0YXRlLmVuY29kaW5nKSB7CiAgICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpOwogICAgICAgIGVuY29kaW5nID0gJyc7CiAgICAgIH0KICAgICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlOwogICAgfQogIH0gZWxzZSB7CiAgICBza2lwQ2h1bmtDaGVjayA9IHRydWU7CiAgfQoKICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBjaHVuaywgZW5jb2RpbmcsIGZhbHNlLCBza2lwQ2h1bmtDaGVjayk7Cn07CgovLyBVbnNoaWZ0IHNob3VsZCAqYWx3YXlzKiBiZSBzb21ldGhpbmcgZGlyZWN0bHkgb3V0IG9mIHJlYWQoKQpSZWFkYWJsZS5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uIChjaHVuaykgewogIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIGNodW5rLCBudWxsLCB0cnVlLCBmYWxzZSk7Cn07CgpmdW5jdGlvbiByZWFkYWJsZUFkZENodW5rKHN0cmVhbSwgY2h1bmssIGVuY29kaW5nLCBhZGRUb0Zyb250LCBza2lwQ2h1bmtDaGVjaykgewogIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTsKICBpZiAoY2h1bmsgPT09IG51bGwpIHsKICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTsKICAgIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSk7CiAgfSBlbHNlIHsKICAgIHZhciBlcjsKICAgIGlmICghc2tpcENodW5rQ2hlY2spIGVyID0gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuayk7CiAgICBpZiAoZXIpIHsKICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpOwogICAgfSBlbHNlIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rICYmIGNodW5rLmxlbmd0aCA+IDApIHsKICAgICAgaWYgKHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgIXN0YXRlLm9iamVjdE1vZGUgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGNodW5rKSAhPT0gQnVmZmVyLnByb3RvdHlwZSkgewogICAgICAgIGNodW5rID0gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuayk7CiAgICAgIH0KCiAgICAgIGlmIChhZGRUb0Zyb250KSB7CiAgICAgICAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignc3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnQnKSk7ZWxzZSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgdHJ1ZSk7CiAgICAgIH0gZWxzZSBpZiAoc3RhdGUuZW5kZWQpIHsKICAgICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3N0cmVhbS5wdXNoKCkgYWZ0ZXIgRU9GJykpOwogICAgICB9IGVsc2UgewogICAgICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTsKICAgICAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhZW5jb2RpbmcpIHsKICAgICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7CiAgICAgICAgICBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuay5sZW5ndGggIT09IDApIGFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBmYWxzZSk7ZWxzZSBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpOwogICAgICAgIH0KICAgICAgfQogICAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkgewogICAgICBzdGF0ZS5yZWFkaW5nID0gZmFsc2U7CiAgICB9CiAgfQoKICByZXR1cm4gbmVlZE1vcmVEYXRhKHN0YXRlKTsKfQoKZnVuY3Rpb24gYWRkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGFkZFRvRnJvbnQpIHsKICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgIXN0YXRlLnN5bmMpIHsKICAgIHN0cmVhbS5lbWl0KCdkYXRhJywgY2h1bmspOwogICAgc3RyZWFtLnJlYWQoMCk7CiAgfSBlbHNlIHsKICAgIC8vIHVwZGF0ZSB0aGUgYnVmZmVyIGluZm8uCiAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7CiAgICBpZiAoYWRkVG9Gcm9udCkgc3RhdGUuYnVmZmVyLnVuc2hpZnQoY2h1bmspO2Vsc2Ugc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspOwoKICAgIGlmIChzdGF0ZS5uZWVkUmVhZGFibGUpIGVtaXRSZWFkYWJsZShzdHJlYW0pOwogIH0KICBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpOwp9CgpmdW5jdGlvbiBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKSB7CiAgdmFyIGVyOwogIGlmICghX2lzVWludDhBcnJheShjaHVuaykgJiYgdHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7CiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsnKTsKICB9CiAgcmV0dXJuIGVyOwp9CgovLyBpZiBpdCdzIHBhc3QgdGhlIGhpZ2ggd2F0ZXIgbWFyaywgd2UgY2FuIHB1c2ggaW4gc29tZSBtb3JlLgovLyBBbHNvLCBpZiB3ZSBoYXZlIG5vIGRhdGEgeWV0LCB3ZSBjYW4gc3RhbmQgc29tZQovLyBtb3JlIGJ5dGVzLiAgVGhpcyBpcyB0byB3b3JrIGFyb3VuZCBjYXNlcyB3aGVyZSBod209MCwKLy8gc3VjaCBhcyB0aGUgcmVwbC4gIEFsc28sIGlmIHRoZSBwdXNoKCkgdHJpZ2dlcmVkIGEKLy8gcmVhZGFibGUgZXZlbnQsIGFuZCB0aGUgdXNlciBjYWxsZWQgcmVhZChsYXJnZU51bWJlcikgc3VjaCB0aGF0Ci8vIG5lZWRSZWFkYWJsZSB3YXMgc2V0LCB0aGVuIHdlIG91Z2h0IHRvIHB1c2ggbW9yZSwgc28gdGhhdCBhbm90aGVyCi8vICdyZWFkYWJsZScgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuCmZ1bmN0aW9uIG5lZWRNb3JlRGF0YShzdGF0ZSkgewogIHJldHVybiAhc3RhdGUuZW5kZWQgJiYgKHN0YXRlLm5lZWRSZWFkYWJsZSB8fCBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCk7Cn0KClJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHsKICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID09PSBmYWxzZTsKfTsKCi8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgpSZWFkYWJsZS5wcm90b3R5cGUuc2V0RW5jb2RpbmcgPSBmdW5jdGlvbiAoZW5jKSB7CiAgaWYgKCFTdHJpbmdEZWNvZGVyKSBTdHJpbmdEZWNvZGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NykuU3RyaW5nRGVjb2RlcjsKICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpOwogIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2RpbmcgPSBlbmM7CiAgcmV0dXJuIHRoaXM7Cn07CgovLyBEb24ndCByYWlzZSB0aGUgaHdtID4gOE1CCnZhciBNQVhfSFdNID0gMHg4MDAwMDA7CmZ1bmN0aW9uIGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pIHsKICBpZiAobiA+PSBNQVhfSFdNKSB7CiAgICBuID0gTUFYX0hXTTsKICB9IGVsc2UgewogICAgLy8gR2V0IHRoZSBuZXh0IGhpZ2hlc3QgcG93ZXIgb2YgMiB0byBwcmV2ZW50IGluY3JlYXNpbmcgaHdtIGV4Y2Vzc2l2ZWx5IGluCiAgICAvLyB0aW55IGFtb3VudHMKICAgIG4tLTsKICAgIG4gfD0gbiA+Pj4gMTsKICAgIG4gfD0gbiA+Pj4gMjsKICAgIG4gfD0gbiA+Pj4gNDsKICAgIG4gfD0gbiA+Pj4gODsKICAgIG4gfD0gbiA+Pj4gMTY7CiAgICBuKys7CiAgfQogIHJldHVybiBuOwp9CgovLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZwovLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LgpmdW5jdGlvbiBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKSB7CiAgaWYgKG4gPD0gMCB8fCBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIHJldHVybiAwOwogIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXR1cm4gMTsKICBpZiAobiAhPT0gbikgewogICAgLy8gT25seSBmbG93IG9uZSBidWZmZXIgYXQgYSB0aW1lCiAgICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGgpIHJldHVybiBzdGF0ZS5idWZmZXIuaGVhZC5kYXRhLmxlbmd0aDtlbHNlIHJldHVybiBzdGF0ZS5sZW5ndGg7CiAgfQogIC8vIElmIHdlJ3JlIGFza2luZyBmb3IgbW9yZSB0aGFuIHRoZSBjdXJyZW50IGh3bSwgdGhlbiByYWlzZSB0aGUgaHdtLgogIGlmIChuID4gc3RhdGUuaGlnaFdhdGVyTWFyaykgc3RhdGUuaGlnaFdhdGVyTWFyayA9IGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pOwogIGlmIChuIDw9IHN0YXRlLmxlbmd0aCkgcmV0dXJuIG47CiAgLy8gRG9uJ3QgaGF2ZSBlbm91Z2gKICBpZiAoIXN0YXRlLmVuZGVkKSB7CiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlOwogICAgcmV0dXJuIDA7CiAgfQogIHJldHVybiBzdGF0ZS5sZW5ndGg7Cn0KCi8vIHlvdSBjYW4gb3ZlcnJpZGUgZWl0aGVyIHRoaXMgbWV0aG9kLCBvciB0aGUgYXN5bmMgX3JlYWQobikgYmVsb3cuClJlYWRhYmxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG4pIHsKICBkZWJ1ZygncmVhZCcsIG4pOwogIG4gPSBwYXJzZUludChuLCAxMCk7CiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTsKICB2YXIgbk9yaWcgPSBuOwoKICBpZiAobiAhPT0gMCkgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7CgogIC8vIGlmIHdlJ3JlIGRvaW5nIHJlYWQoMCkgdG8gdHJpZ2dlciBhIHJlYWRhYmxlIGV2ZW50LCBidXQgd2UKICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyCiAgLy8gdGhlICdyZWFkYWJsZScgZXZlbnQgYW5kIG1vdmUgb24uCiAgaWYgKG4gPT09IDAgJiYgc3RhdGUubmVlZFJlYWRhYmxlICYmIChzdGF0ZS5sZW5ndGggPj0gc3RhdGUuaGlnaFdhdGVyTWFyayB8fCBzdGF0ZS5lbmRlZCkpIHsKICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKTsKICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO2Vsc2UgZW1pdFJlYWRhYmxlKHRoaXMpOwogICAgcmV0dXJuIG51bGw7CiAgfQoKICBuID0gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSk7CgogIC8vIGlmIHdlJ3ZlIGVuZGVkLCBhbmQgd2UncmUgbm93IGNsZWFyLCB0aGVuIGZpbmlzaCBpdCB1cC4KICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgewogICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgZW5kUmVhZGFibGUodGhpcyk7CiAgICByZXR1cm4gbnVsbDsKICB9CgogIC8vIEFsbCB0aGUgYWN0dWFsIGNodW5rIGdlbmVyYXRpb24gbG9naWMgbmVlZHMgdG8gYmUKICAvLyAqYmVsb3cqIHRoZSBjYWxsIHRvIF9yZWFkLiAgVGhlIHJlYXNvbiBpcyB0aGF0IGluIGNlcnRhaW4KICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkCiAgLy8gbWF5IGJlIGEgY29tcGxldGVseSBzeW5jaHJvbm91cyBvcGVyYXRpb24gd2hpY2ggbWF5IGNoYW5nZQogIC8vIHRoZSBzdGF0ZSBvZiB0aGUgcmVhZCBidWZmZXIsIHByb3ZpZGluZyBlbm91Z2ggZGF0YSB3aGVuCiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guCiAgLy8KICAvLyBTbywgdGhlIHN0ZXBzIGFyZToKICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvCiAgLy8gYSByZWFkIGZyb20gdGhlIGJ1ZmZlci4KICAvLwogIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuCiAgLy8gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGFzeW5jaHJvbm91cywgb3Igc3luY2hyb25vdXMuICBZZXMsIGl0IGlzCiAgLy8gZGVlcGx5IHVnbHkgdG8gd3JpdGUgQVBJcyB0aGlzIHdheSwgYnV0IHRoYXQgc3RpbGwgZG9lc24ndCBtZWFuCiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZQogIC8vIGRlc2lnbmVkIHRvIGJlIHN5bmMvYXN5bmMgYWdub3N0aWMuCiAgLy8gVGFrZSBub3RlIGlmIHRoZSBfcmVhZCBjYWxsIGlzIHN5bmMgb3IgYXN5bmMgKGllLCBpZiB0aGUgcmVhZCBjYWxsCiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdAogIC8vICdyZWFkYWJsZScgZXRjLgogIC8vCiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLgoKICAvLyBpZiB3ZSBuZWVkIGEgcmVhZGFibGUgZXZlbnQsIHRoZW4gd2UgbmVlZCB0byBkbyBzb21lIHJlYWRpbmcuCiAgdmFyIGRvUmVhZCA9IHN0YXRlLm5lZWRSZWFkYWJsZTsKICBkZWJ1ZygnbmVlZCByZWFkYWJsZScsIGRvUmVhZCk7CgogIC8vIGlmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZQogIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgfHwgc3RhdGUubGVuZ3RoIC0gbiA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHsKICAgIGRvUmVhZCA9IHRydWU7CiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpOwogIH0KCiAgLy8gaG93ZXZlciwgaWYgd2UndmUgZW5kZWQsIHRoZW4gdGhlcmUncyBubyBwb2ludCwgYW5kIGlmIHdlJ3JlIGFscmVhZHkKICAvLyByZWFkaW5nLCB0aGVuIGl0J3MgdW5uZWNlc3NhcnkuCiAgaWYgKHN0YXRlLmVuZGVkIHx8IHN0YXRlLnJlYWRpbmcpIHsKICAgIGRvUmVhZCA9IGZhbHNlOwogICAgZGVidWcoJ3JlYWRpbmcgb3IgZW5kZWQnLCBkb1JlYWQpOwogIH0gZWxzZSBpZiAoZG9SZWFkKSB7CiAgICBkZWJ1ZygnZG8gcmVhZCcpOwogICAgc3RhdGUucmVhZGluZyA9IHRydWU7CiAgICBzdGF0ZS5zeW5jID0gdHJ1ZTsKICAgIC8vIGlmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuCiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlOwogICAgLy8gY2FsbCBpbnRlcm5hbCByZWFkIG1ldGhvZAogICAgdGhpcy5fcmVhZChzdGF0ZS5oaWdoV2F0ZXJNYXJrKTsKICAgIHN0YXRlLnN5bmMgPSBmYWxzZTsKICAgIC8vIElmIF9yZWFkIHB1c2hlZCBkYXRhIHN5bmNocm9ub3VzbHksIHRoZW4gYHJlYWRpbmdgIHdpbGwgYmUgZmFsc2UsCiAgICAvLyBhbmQgd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgbXVjaCBkYXRhIHdlIGNhbiByZXR1cm4gdG8gdGhlIHVzZXIuCiAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIG4gPSBob3dNdWNoVG9SZWFkKG5PcmlnLCBzdGF0ZSk7CiAgfQoKICB2YXIgcmV0OwogIGlmIChuID4gMCkgcmV0ID0gZnJvbUxpc3Qobiwgc3RhdGUpO2Vsc2UgcmV0ID0gbnVsbDsKCiAgaWYgKHJldCA9PT0gbnVsbCkgewogICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTsKICAgIG4gPSAwOwogIH0gZWxzZSB7CiAgICBzdGF0ZS5sZW5ndGggLT0gbjsKICB9CgogIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHsKICAgIC8vIElmIHdlIGhhdmUgbm90aGluZyBpbiB0aGUgYnVmZmVyLCB0aGVuIHdlIHdhbnQgdG8ga25vdwogICAgLy8gYXMgc29vbiBhcyB3ZSAqZG8qIGdldCBzb21ldGhpbmcgaW50byB0aGUgYnVmZmVyLgogICAgaWYgKCFzdGF0ZS5lbmRlZCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTsKCiAgICAvLyBJZiB3ZSB0cmllZCB0byByZWFkKCkgcGFzdCB0aGUgRU9GLCB0aGVuIGVtaXQgZW5kIG9uIHRoZSBuZXh0IHRpY2suCiAgICBpZiAobk9yaWcgIT09IG4gJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpOwogIH0KCiAgaWYgKHJldCAhPT0gbnVsbCkgdGhpcy5lbWl0KCdkYXRhJywgcmV0KTsKCiAgcmV0dXJuIHJldDsKfTsKCmZ1bmN0aW9uIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSkgewogIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuOwogIGlmIChzdGF0ZS5kZWNvZGVyKSB7CiAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpOwogICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkgewogICAgICBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7CiAgICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDsKICAgIH0KICB9CiAgc3RhdGUuZW5kZWQgPSB0cnVlOwoKICAvLyBlbWl0ICdyZWFkYWJsZScgbm93IHRvIG1ha2Ugc3VyZSBpdCBnZXRzIHBpY2tlZCB1cC4KICBlbWl0UmVhZGFibGUoc3RyZWFtKTsKfQoKLy8gRG9uJ3QgZW1pdCByZWFkYWJsZSByaWdodCBhd2F5IGluIHN5bmMgbW9kZSwgYmVjYXVzZSB0aGlzIGNhbiB0cmlnZ2VyCi8vIGFub3RoZXIgcmVhZCgpIGNhbGwgPT4gc3RhY2sgb3ZlcmZsb3cuICBUaGlzIHdheSwgaXQgbWlnaHQgdHJpZ2dlcgovLyBhIG5leHRUaWNrIHJlY3Vyc2lvbiB3YXJuaW5nLCBidXQgdGhhdCdzIG5vdCBzbyBiYWQuCmZ1bmN0aW9uIGVtaXRSZWFkYWJsZShzdHJlYW0pIHsKICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7CiAgc3RhdGUubmVlZFJlYWRhYmxlID0gZmFsc2U7CiAgaWYgKCFzdGF0ZS5lbWl0dGVkUmVhZGFibGUpIHsKICAgIGRlYnVnKCdlbWl0UmVhZGFibGUnLCBzdGF0ZS5mbG93aW5nKTsKICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IHRydWU7CiAgICBpZiAoc3RhdGUuc3luYykgcHJvY2Vzc05leHRUaWNrKGVtaXRSZWFkYWJsZV8sIHN0cmVhbSk7ZWxzZSBlbWl0UmVhZGFibGVfKHN0cmVhbSk7CiAgfQp9CgpmdW5jdGlvbiBlbWl0UmVhZGFibGVfKHN0cmVhbSkgewogIGRlYnVnKCdlbWl0IHJlYWRhYmxlJyk7CiAgc3RyZWFtLmVtaXQoJ3JlYWRhYmxlJyk7CiAgZmxvdyhzdHJlYW0pOwp9CgovLyBhdCB0aGlzIHBvaW50LCB0aGUgdXNlciBoYXMgcHJlc3VtYWJseSBzZWVuIHRoZSAncmVhZGFibGUnIGV2ZW50LAovLyBhbmQgY2FsbGVkIHJlYWQoKSB0byBjb25zdW1lIHNvbWUgZGF0YS4gIHRoYXQgbWF5IGhhdmUgdHJpZ2dlcmVkCi8vIGluIHR1cm4gYW5vdGhlciBfcmVhZChuKSBjYWxsLCBpbiB3aGljaCBjYXNlIHJlYWRpbmcgPSB0cnVlIGlmCi8vIGl0J3MgaW4gcHJvZ3Jlc3MuCi8vIEhvd2V2ZXIsIGlmIHdlJ3JlIG5vdCBlbmRlZCwgb3IgcmVhZGluZywgYW5kIHRoZSBsZW5ndGggPCBod20sCi8vIHRoZW4gZ28gYWhlYWQgYW5kIHRyeSB0byByZWFkIHNvbWUgbW9yZSBwcmVlbXB0aXZlbHkuCmZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSkgewogIGlmICghc3RhdGUucmVhZGluZ01vcmUpIHsKICAgIHN0YXRlLnJlYWRpbmdNb3JlID0gdHJ1ZTsKICAgIHByb2Nlc3NOZXh0VGljayhtYXliZVJlYWRNb3JlXywgc3RyZWFtLCBzdGF0ZSk7CiAgfQp9CgpmdW5jdGlvbiBtYXliZVJlYWRNb3JlXyhzdHJlYW0sIHN0YXRlKSB7CiAgdmFyIGxlbiA9IHN0YXRlLmxlbmd0aDsKICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLmVuZGVkICYmIHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHsKICAgIGRlYnVnKCdtYXliZVJlYWRNb3JlIHJlYWQgMCcpOwogICAgc3RyZWFtLnJlYWQoMCk7CiAgICBpZiAobGVuID09PSBzdGF0ZS5sZW5ndGgpCiAgICAgIC8vIGRpZG4ndCBnZXQgYW55IGRhdGEsIHN0b3Agc3Bpbm5pbmcuCiAgICAgIGJyZWFrO2Vsc2UgbGVuID0gc3RhdGUubGVuZ3RoOwogIH0KICBzdGF0ZS5yZWFkaW5nTW9yZSA9IGZhbHNlOwp9CgovLyBhYnN0cmFjdCBtZXRob2QuICB0byBiZSBvdmVycmlkZGVuIGluIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuCi8vIGNhbGwgY2IoZXIsIGRhdGEpIHdoZXJlIGRhdGEgaXMgPD0gbiBpbiBsZW5ndGguCi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCAibGVuZ3RoIiBpcyBzb21ld2hhdAovLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuClJlYWRhYmxlLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7CiAgdGhpcy5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignX3JlYWQoKSBpcyBub3QgaW1wbGVtZW50ZWQnKSk7Cn07CgpSZWFkYWJsZS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uIChkZXN0LCBwaXBlT3B0cykgewogIHZhciBzcmMgPSB0aGlzOwogIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7CgogIHN3aXRjaCAoc3RhdGUucGlwZXNDb3VudCkgewogICAgY2FzZSAwOgogICAgICBzdGF0ZS5waXBlcyA9IGRlc3Q7CiAgICAgIGJyZWFrOwogICAgY2FzZSAxOgogICAgICBzdGF0ZS5waXBlcyA9IFtzdGF0ZS5waXBlcywgZGVzdF07CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgc3RhdGUucGlwZXMucHVzaChkZXN0KTsKICAgICAgYnJlYWs7CiAgfQogIHN0YXRlLnBpcGVzQ291bnQgKz0gMTsKICBkZWJ1ZygncGlwZSBjb3VudD0lZCBvcHRzPSVqJywgc3RhdGUucGlwZXNDb3VudCwgcGlwZU9wdHMpOwoKICB2YXIgZG9FbmQgPSAoIXBpcGVPcHRzIHx8IHBpcGVPcHRzLmVuZCAhPT0gZmFsc2UpICYmIGRlc3QgIT09IHByb2Nlc3Muc3Rkb3V0ICYmIGRlc3QgIT09IHByb2Nlc3Muc3RkZXJyOwoKICB2YXIgZW5kRm4gPSBkb0VuZCA/IG9uZW5kIDogdW5waXBlOwogIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBwcm9jZXNzTmV4dFRpY2soZW5kRm4pO2Vsc2Ugc3JjLm9uY2UoJ2VuZCcsIGVuZEZuKTsKCiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpOwogIGZ1bmN0aW9uIG9udW5waXBlKHJlYWRhYmxlLCB1bnBpcGVJbmZvKSB7CiAgICBkZWJ1Zygnb251bnBpcGUnKTsKICAgIGlmIChyZWFkYWJsZSA9PT0gc3JjKSB7CiAgICAgIGlmICh1bnBpcGVJbmZvICYmIHVucGlwZUluZm8uaGFzVW5waXBlZCA9PT0gZmFsc2UpIHsKICAgICAgICB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPSB0cnVlOwogICAgICAgIGNsZWFudXAoKTsKICAgICAgfQogICAgfQogIH0KCiAgZnVuY3Rpb24gb25lbmQoKSB7CiAgICBkZWJ1Zygnb25lbmQnKTsKICAgIGRlc3QuZW5kKCk7CiAgfQoKICAvLyB3aGVuIHRoZSBkZXN0IGRyYWlucywgaXQgcmVkdWNlcyB0aGUgYXdhaXREcmFpbiBjb3VudGVyCiAgLy8gb24gdGhlIHNvdXJjZS4gIFRoaXMgd291bGQgYmUgbW9yZSBlbGVnYW50IHdpdGggYSAub25jZSgpCiAgLy8gaGFuZGxlciBpbiBmbG93KCksIGJ1dCBhZGRpbmcgYW5kIHJlbW92aW5nIHJlcGVhdGVkbHkgaXMKICAvLyB0b28gc2xvdy4KICB2YXIgb25kcmFpbiA9IHBpcGVPbkRyYWluKHNyYyk7CiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTsKCiAgdmFyIGNsZWFuZWRVcCA9IGZhbHNlOwogIGZ1bmN0aW9uIGNsZWFudXAoKSB7CiAgICBkZWJ1ZygnY2xlYW51cCcpOwogICAgLy8gY2xlYW51cCBldmVudCBoYW5kbGVycyBvbmNlIHRoZSBwaXBlIGlzIGJyb2tlbgogICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTsKICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2ZpbmlzaCcsIG9uZmluaXNoKTsKICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7CiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpOwogICAgZGVzdC5yZW1vdmVMaXN0ZW5lcigndW5waXBlJywgb251bnBpcGUpOwogICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7CiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIHVucGlwZSk7CiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpOwoKICAgIGNsZWFuZWRVcCA9IHRydWU7CgogICAgLy8gaWYgdGhlIHJlYWRlciBpcyB3YWl0aW5nIGZvciBhIGRyYWluIGV2ZW50IGZyb20gdGhpcwogICAgLy8gc3BlY2lmaWMgd3JpdGVyLCB0aGVuIGl0IHdvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHN0YXJ0CiAgICAvLyBmbG93aW5nIGFnYWluLgogICAgLy8gU28sIGlmIHRoaXMgaXMgYXdhaXRpbmcgYSBkcmFpbiwgdGhlbiB3ZSBqdXN0IGNhbGwgaXQgbm93LgogICAgLy8gSWYgd2UgZG9uJ3Qga25vdywgdGhlbiBhc3N1bWUgdGhhdCB3ZSBhcmUgd2FpdGluZyBmb3Igb25lLgogICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4gJiYgKCFkZXN0Ll93cml0YWJsZVN0YXRlIHx8IGRlc3QuX3dyaXRhYmxlU3RhdGUubmVlZERyYWluKSkgb25kcmFpbigpOwogIH0KCiAgLy8gSWYgdGhlIHVzZXIgcHVzaGVzIG1vcmUgZGF0YSB3aGlsZSB3ZSdyZSB3cml0aW5nIHRvIGRlc3QgdGhlbiB3ZSdsbCBlbmQgdXAKICAvLyBpbiBvbmRhdGEgYWdhaW4uIEhvd2V2ZXIsIHdlIG9ubHkgd2FudCB0byBpbmNyZWFzZSBhd2FpdERyYWluIG9uY2UgYmVjYXVzZQogIC8vIGRlc3Qgd2lsbCBvbmx5IGVtaXQgb25lICdkcmFpbicgZXZlbnQgZm9yIHRoZSBtdWx0aXBsZSB3cml0ZXMuCiAgLy8gPT4gSW50cm9kdWNlIGEgZ3VhcmQgb24gaW5jcmVhc2luZyBhd2FpdERyYWluLgogIHZhciBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7CiAgc3JjLm9uKCdkYXRhJywgb25kYXRhKTsKICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHsKICAgIGRlYnVnKCdvbmRhdGEnKTsKICAgIGluY3JlYXNlZEF3YWl0RHJhaW4gPSBmYWxzZTsKICAgIHZhciByZXQgPSBkZXN0LndyaXRlKGNodW5rKTsKICAgIGlmIChmYWxzZSA9PT0gcmV0ICYmICFpbmNyZWFzZWRBd2FpdERyYWluKSB7CiAgICAgIC8vIElmIHRoZSB1c2VyIHVucGlwZWQgZHVyaW5nIGBkZXN0LndyaXRlKClgLCBpdCBpcyBwb3NzaWJsZQogICAgICAvLyB0byBnZXQgc3R1Y2sgaW4gYSBwZXJtYW5lbnRseSBwYXVzZWQgc3RhdGUgaWYgdGhhdCB3cml0ZQogICAgICAvLyBhbHNvIHJldHVybmVkIGZhbHNlLgogICAgICAvLyA9PiBDaGVjayB3aGV0aGVyIGBkZXN0YCBpcyBzdGlsbCBhIHBpcGluZyBkZXN0aW5hdGlvbi4KICAgICAgaWYgKChzdGF0ZS5waXBlc0NvdW50ID09PSAxICYmIHN0YXRlLnBpcGVzID09PSBkZXN0IHx8IHN0YXRlLnBpcGVzQ291bnQgPiAxICYmIGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpICE9PSAtMSkgJiYgIWNsZWFuZWRVcCkgewogICAgICAgIGRlYnVnKCdmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UnLCBzcmMuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbik7CiAgICAgICAgc3JjLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4rKzsKICAgICAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gdHJ1ZTsKICAgICAgfQogICAgICBzcmMucGF1c2UoKTsKICAgIH0KICB9CgogIC8vIGlmIHRoZSBkZXN0IGhhcyBhbiBlcnJvciwgdGhlbiBzdG9wIHBpcGluZyBpbnRvIGl0LgogIC8vIGhvd2V2ZXIsIGRvbid0IHN1cHByZXNzIHRoZSB0aHJvd2luZyBiZWhhdmlvciBmb3IgdGhpcy4KICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7CiAgICBkZWJ1Zygnb25lcnJvcicsIGVyKTsKICAgIHVucGlwZSgpOwogICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTsKICAgIGlmIChFRWxpc3RlbmVyQ291bnQoZGVzdCwgJ2Vycm9yJykgPT09IDApIGRlc3QuZW1pdCgnZXJyb3InLCBlcik7CiAgfQoKICAvLyBNYWtlIHN1cmUgb3VyIGVycm9yIGhhbmRsZXIgaXMgYXR0YWNoZWQgYmVmb3JlIHVzZXJsYW5kIG9uZXMuCiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpOwoKICAvLyBCb3RoIGNsb3NlIGFuZCBmaW5pc2ggc2hvdWxkIHRyaWdnZXIgdW5waXBlLCBidXQgb25seSBvbmNlLgogIGZ1bmN0aW9uIG9uY2xvc2UoKSB7CiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7CiAgICB1bnBpcGUoKTsKICB9CiAgZGVzdC5vbmNlKCdjbG9zZScsIG9uY2xvc2UpOwogIGZ1bmN0aW9uIG9uZmluaXNoKCkgewogICAgZGVidWcoJ29uZmluaXNoJyk7CiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpOwogICAgdW5waXBlKCk7CiAgfQogIGRlc3Qub25jZSgnZmluaXNoJywgb25maW5pc2gpOwoKICBmdW5jdGlvbiB1bnBpcGUoKSB7CiAgICBkZWJ1ZygndW5waXBlJyk7CiAgICBzcmMudW5waXBlKGRlc3QpOwogIH0KCiAgLy8gdGVsbCB0aGUgZGVzdCB0aGF0IGl0J3MgYmVpbmcgcGlwZWQgdG8KICBkZXN0LmVtaXQoJ3BpcGUnLCBzcmMpOwoKICAvLyBzdGFydCB0aGUgZmxvdyBpZiBpdCBoYXNuJ3QgYmVlbiBzdGFydGVkIGFscmVhZHkuCiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7CiAgICBkZWJ1ZygncGlwZSByZXN1bWUnKTsKICAgIHNyYy5yZXN1bWUoKTsKICB9CgogIHJldHVybiBkZXN0Owp9OwoKZnVuY3Rpb24gcGlwZU9uRHJhaW4oc3JjKSB7CiAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgIHZhciBzdGF0ZSA9IHNyYy5fcmVhZGFibGVTdGF0ZTsKICAgIGRlYnVnKCdwaXBlT25EcmFpbicsIHN0YXRlLmF3YWl0RHJhaW4pOwogICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4pIHN0YXRlLmF3YWl0RHJhaW4tLTsKICAgIGlmIChzdGF0ZS5hd2FpdERyYWluID09PSAwICYmIEVFbGlzdGVuZXJDb3VudChzcmMsICdkYXRhJykpIHsKICAgICAgc3RhdGUuZmxvd2luZyA9IHRydWU7CiAgICAgIGZsb3coc3JjKTsKICAgIH0KICB9Owp9CgpSZWFkYWJsZS5wcm90b3R5cGUudW5waXBlID0gZnVuY3Rpb24gKGRlc3QpIHsKICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlOwogIHZhciB1bnBpcGVJbmZvID0geyBoYXNVbnBpcGVkOiBmYWxzZSB9OwoKICAvLyBpZiB3ZSdyZSBub3QgcGlwaW5nIGFueXdoZXJlLCB0aGVuIGRvIG5vdGhpbmcuCiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDApIHJldHVybiB0aGlzOwoKICAvLyBqdXN0IG9uZSBkZXN0aW5hdGlvbi4gIG1vc3QgY29tbW9uIGNhc2UuCiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHsKICAgIC8vIHBhc3NlZCBpbiBvbmUsIGJ1dCBpdCdzIG5vdCB0aGUgcmlnaHQgb25lLgogICAgaWYgKGRlc3QgJiYgZGVzdCAhPT0gc3RhdGUucGlwZXMpIHJldHVybiB0aGlzOwoKICAgIGlmICghZGVzdCkgZGVzdCA9IHN0YXRlLnBpcGVzOwoKICAgIC8vIGdvdCBhIG1hdGNoLgogICAgc3RhdGUucGlwZXMgPSBudWxsOwogICAgc3RhdGUucGlwZXNDb3VudCA9IDA7CiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7CiAgICBpZiAoZGVzdCkgZGVzdC5lbWl0KCd1bnBpcGUnLCB0aGlzLCB1bnBpcGVJbmZvKTsKICAgIHJldHVybiB0aGlzOwogIH0KCiAgLy8gc2xvdyBjYXNlLiBtdWx0aXBsZSBwaXBlIGRlc3RpbmF0aW9ucy4KCiAgaWYgKCFkZXN0KSB7CiAgICAvLyByZW1vdmUgYWxsLgogICAgdmFyIGRlc3RzID0gc3RhdGUucGlwZXM7CiAgICB2YXIgbGVuID0gc3RhdGUucGlwZXNDb3VudDsKICAgIHN0YXRlLnBpcGVzID0gbnVsbDsKICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwOwogICAgc3RhdGUuZmxvd2luZyA9IGZhbHNlOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgZGVzdHNbaV0uZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7CiAgICB9cmV0dXJuIHRoaXM7CiAgfQoKICAvLyB0cnkgdG8gZmluZCB0aGUgcmlnaHQgb25lLgogIHZhciBpbmRleCA9IGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpOwogIGlmIChpbmRleCA9PT0gLTEpIHJldHVybiB0aGlzOwoKICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpOwogIHN0YXRlLnBpcGVzQ291bnQgLT0gMTsKICBpZiAoc3RhdGUucGlwZXNDb3VudCA9PT0gMSkgc3RhdGUucGlwZXMgPSBzdGF0ZS5waXBlc1swXTsKCiAgZGVzdC5lbWl0KCd1bnBpcGUnLCB0aGlzLCB1bnBpcGVJbmZvKTsKCiAgcmV0dXJuIHRoaXM7Cn07CgovLyBzZXQgdXAgZGF0YSBldmVudHMgaWYgdGhleSBhcmUgYXNrZWQgZm9yCi8vIEVuc3VyZSByZWFkYWJsZSBsaXN0ZW5lcnMgZXZlbnR1YWxseSBnZXQgc29tZXRoaW5nClJlYWRhYmxlLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldiwgZm4pIHsKICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsIGV2LCBmbik7CgogIGlmIChldiA9PT0gJ2RhdGEnKSB7CiAgICAvLyBTdGFydCBmbG93aW5nIG9uIG5leHQgdGljayBpZiBzdHJlYW0gaXNuJ3QgZXhwbGljaXRseSBwYXVzZWQKICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgIT09IGZhbHNlKSB0aGlzLnJlc3VtZSgpOwogIH0gZWxzZSBpZiAoZXYgPT09ICdyZWFkYWJsZScpIHsKICAgIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7CiAgICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQgJiYgIXN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nKSB7CiAgICAgIHN0YXRlLnJlYWRhYmxlTGlzdGVuaW5nID0gc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTsKICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7CiAgICAgIGlmICghc3RhdGUucmVhZGluZykgewogICAgICAgIHByb2Nlc3NOZXh0VGljayhuUmVhZGluZ05leHRUaWNrLCB0aGlzKTsKICAgICAgfSBlbHNlIGlmIChzdGF0ZS5sZW5ndGgpIHsKICAgICAgICBlbWl0UmVhZGFibGUodGhpcyk7CiAgICAgIH0KICAgIH0KICB9CgogIHJldHVybiByZXM7Cn07ClJlYWRhYmxlLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IFJlYWRhYmxlLnByb3RvdHlwZS5vbjsKCmZ1bmN0aW9uIG5SZWFkaW5nTmV4dFRpY2soc2VsZikgewogIGRlYnVnKCdyZWFkYWJsZSBuZXh0dGljayByZWFkIDAnKTsKICBzZWxmLnJlYWQoMCk7Cn0KCi8vIHBhdXNlKCkgYW5kIHJlc3VtZSgpIGFyZSByZW1uYW50cyBvZiB0aGUgbGVnYWN5IHJlYWRhYmxlIHN0cmVhbSBBUEkKLy8gSWYgdGhlIHVzZXIgdXNlcyB0aGVtLCB0aGVuIHN3aXRjaCBpbnRvIG9sZCBtb2RlLgpSZWFkYWJsZS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24gKCkgewogIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7CiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7CiAgICBkZWJ1ZygncmVzdW1lJyk7CiAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTsKICAgIHJlc3VtZSh0aGlzLCBzdGF0ZSk7CiAgfQogIHJldHVybiB0aGlzOwp9OwoKZnVuY3Rpb24gcmVzdW1lKHN0cmVhbSwgc3RhdGUpIHsKICBpZiAoIXN0YXRlLnJlc3VtZVNjaGVkdWxlZCkgewogICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZTsKICAgIHByb2Nlc3NOZXh0VGljayhyZXN1bWVfLCBzdHJlYW0sIHN0YXRlKTsKICB9Cn0KCmZ1bmN0aW9uIHJlc3VtZV8oc3RyZWFtLCBzdGF0ZSkgewogIGlmICghc3RhdGUucmVhZGluZykgewogICAgZGVidWcoJ3Jlc3VtZSByZWFkIDAnKTsKICAgIHN0cmVhbS5yZWFkKDApOwogIH0KCiAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gZmFsc2U7CiAgc3RhdGUuYXdhaXREcmFpbiA9IDA7CiAgc3RyZWFtLmVtaXQoJ3Jlc3VtZScpOwogIGZsb3coc3RyZWFtKTsKICBpZiAoc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUucmVhZGluZykgc3RyZWFtLnJlYWQoMCk7Cn0KClJlYWRhYmxlLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHsKICBkZWJ1ZygnY2FsbCBwYXVzZSBmbG93aW5nPSVqJywgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKTsKICBpZiAoZmFsc2UgIT09IHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZykgewogICAgZGVidWcoJ3BhdXNlJyk7CiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBmYWxzZTsKICAgIHRoaXMuZW1pdCgncGF1c2UnKTsKICB9CiAgcmV0dXJuIHRoaXM7Cn07CgpmdW5jdGlvbiBmbG93KHN0cmVhbSkgewogIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTsKICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpOwogIHdoaWxlIChzdGF0ZS5mbG93aW5nICYmIHN0cmVhbS5yZWFkKCkgIT09IG51bGwpIHt9Cn0KCi8vIHdyYXAgYW4gb2xkLXN0eWxlIHN0cmVhbSBhcyB0aGUgYXN5bmMgZGF0YSBzb3VyY2UuCi8vIFRoaXMgaXMgKm5vdCogcGFydCBvZiB0aGUgcmVhZGFibGUgc3RyZWFtIGludGVyZmFjZS4KLy8gSXQgaXMgYW4gdWdseSB1bmZvcnR1bmF0ZSBtZXNzIG9mIGhpc3RvcnkuClJlYWRhYmxlLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHN0cmVhbSkgewogIHZhciBfdGhpcyA9IHRoaXM7CgogIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7CiAgdmFyIHBhdXNlZCA9IGZhbHNlOwoKICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHsKICAgIGRlYnVnKCd3cmFwcGVkIGVuZCcpOwogICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIXN0YXRlLmVuZGVkKSB7CiAgICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7CiAgICAgIGlmIChjaHVuayAmJiBjaHVuay5sZW5ndGgpIF90aGlzLnB1c2goY2h1bmspOwogICAgfQoKICAgIF90aGlzLnB1c2gobnVsbCk7CiAgfSk7CgogIHN0cmVhbS5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuaykgewogICAgZGVidWcoJ3dyYXBwZWQgZGF0YScpOwogICAgaWYgKHN0YXRlLmRlY29kZXIpIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7CgogICAgLy8gZG9uJ3Qgc2tpcCBvdmVyIGZhbHN5IHZhbHVlcyBpbiBvYmplY3RNb2RlCiAgICBpZiAoc3RhdGUub2JqZWN0TW9kZSAmJiAoY2h1bmsgPT09IG51bGwgfHwgY2h1bmsgPT09IHVuZGVmaW5lZCkpIHJldHVybjtlbHNlIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiAoIWNodW5rIHx8ICFjaHVuay5sZW5ndGgpKSByZXR1cm47CgogICAgdmFyIHJldCA9IF90aGlzLnB1c2goY2h1bmspOwogICAgaWYgKCFyZXQpIHsKICAgICAgcGF1c2VkID0gdHJ1ZTsKICAgICAgc3RyZWFtLnBhdXNlKCk7CiAgICB9CiAgfSk7CgogIC8vIHByb3h5IGFsbCB0aGUgb3RoZXIgbWV0aG9kcy4KICAvLyBpbXBvcnRhbnQgd2hlbiB3cmFwcGluZyBmaWx0ZXJzIGFuZCBkdXBsZXhlcy4KICBmb3IgKHZhciBpIGluIHN0cmVhbSkgewogICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7CiAgICAgIHRoaXNbaV0gPSBmdW5jdGlvbiAobWV0aG9kKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKICAgICAgICAgIHJldHVybiBzdHJlYW1bbWV0aG9kXS5hcHBseShzdHJlYW0sIGFyZ3VtZW50cyk7CiAgICAgICAgfTsKICAgICAgfShpKTsKICAgIH0KICB9CgogIC8vIHByb3h5IGNlcnRhaW4gaW1wb3J0YW50IGV2ZW50cy4KICBmb3IgKHZhciBuID0gMDsgbiA8IGtQcm94eUV2ZW50cy5sZW5ndGg7IG4rKykgewogICAgc3RyZWFtLm9uKGtQcm94eUV2ZW50c1tuXSwgdGhpcy5lbWl0LmJpbmQodGhpcywga1Byb3h5RXZlbnRzW25dKSk7CiAgfQoKICAvLyB3aGVuIHdlIHRyeSB0byBjb25zdW1lIHNvbWUgbW9yZSBieXRlcywgc2ltcGx5IHVucGF1c2UgdGhlCiAgLy8gdW5kZXJseWluZyBzdHJlYW0uCiAgdGhpcy5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7CiAgICBkZWJ1Zygnd3JhcHBlZCBfcmVhZCcsIG4pOwogICAgaWYgKHBhdXNlZCkgewogICAgICBwYXVzZWQgPSBmYWxzZTsKICAgICAgc3RyZWFtLnJlc3VtZSgpOwogICAgfQogIH07CgogIHJldHVybiB0aGlzOwp9OwoKLy8gZXhwb3NlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LgpSZWFkYWJsZS5fZnJvbUxpc3QgPSBmcm9tTGlzdDsKCi8vIFBsdWNrIG9mZiBuIGJ5dGVzIGZyb20gYW4gYXJyYXkgb2YgYnVmZmVycy4KLy8gTGVuZ3RoIGlzIHRoZSBjb21iaW5lZCBsZW5ndGhzIG9mIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgbGlzdC4KLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmcKLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS4KZnVuY3Rpb24gZnJvbUxpc3Qobiwgc3RhdGUpIHsKICAvLyBub3RoaW5nIGJ1ZmZlcmVkCiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7CgogIHZhciByZXQ7CiAgaWYgKHN0YXRlLm9iamVjdE1vZGUpIHJldCA9IHN0YXRlLmJ1ZmZlci5zaGlmdCgpO2Vsc2UgaWYgKCFuIHx8IG4gPj0gc3RhdGUubGVuZ3RoKSB7CiAgICAvLyByZWFkIGl0IGFsbCwgdHJ1bmNhdGUgdGhlIGxpc3QKICAgIGlmIChzdGF0ZS5kZWNvZGVyKSByZXQgPSBzdGF0ZS5idWZmZXIuam9pbignJyk7ZWxzZSBpZiAoc3RhdGUuYnVmZmVyLmxlbmd0aCA9PT0gMSkgcmV0ID0gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YTtlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKTsKICAgIHN0YXRlLmJ1ZmZlci5jbGVhcigpOwogIH0gZWxzZSB7CiAgICAvLyByZWFkIHBhcnQgb2YgbGlzdAogICAgcmV0ID0gZnJvbUxpc3RQYXJ0aWFsKG4sIHN0YXRlLmJ1ZmZlciwgc3RhdGUuZGVjb2Rlcik7CiAgfQoKICByZXR1cm4gcmV0Owp9CgovLyBFeHRyYWN0cyBvbmx5IGVub3VnaCBidWZmZXJlZCBkYXRhIHRvIHNhdGlzZnkgdGhlIGFtb3VudCByZXF1ZXN0ZWQuCi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nCi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuCmZ1bmN0aW9uIGZyb21MaXN0UGFydGlhbChuLCBsaXN0LCBoYXNTdHJpbmdzKSB7CiAgdmFyIHJldDsKICBpZiAobiA8IGxpc3QuaGVhZC5kYXRhLmxlbmd0aCkgewogICAgLy8gc2xpY2UgaXMgdGhlIHNhbWUgZm9yIGJ1ZmZlcnMgYW5kIHN0cmluZ3MKICAgIHJldCA9IGxpc3QuaGVhZC5kYXRhLnNsaWNlKDAsIG4pOwogICAgbGlzdC5oZWFkLmRhdGEgPSBsaXN0LmhlYWQuZGF0YS5zbGljZShuKTsKICB9IGVsc2UgaWYgKG4gPT09IGxpc3QuaGVhZC5kYXRhLmxlbmd0aCkgewogICAgLy8gZmlyc3QgY2h1bmsgaXMgYSBwZXJmZWN0IG1hdGNoCiAgICByZXQgPSBsaXN0LnNoaWZ0KCk7CiAgfSBlbHNlIHsKICAgIC8vIHJlc3VsdCBzcGFucyBtb3JlIHRoYW4gb25lIGJ1ZmZlcgogICAgcmV0ID0gaGFzU3RyaW5ncyA/IGNvcHlGcm9tQnVmZmVyU3RyaW5nKG4sIGxpc3QpIDogY29weUZyb21CdWZmZXIobiwgbGlzdCk7CiAgfQogIHJldHVybiByZXQ7Cn0KCi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgY2hhcmFjdGVycyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGEKLy8gY2h1bmtzLgovLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZwovLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LgpmdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSB7CiAgdmFyIHAgPSBsaXN0LmhlYWQ7CiAgdmFyIGMgPSAxOwogIHZhciByZXQgPSBwLmRhdGE7CiAgbiAtPSByZXQubGVuZ3RoOwogIHdoaWxlIChwID0gcC5uZXh0KSB7CiAgICB2YXIgc3RyID0gcC5kYXRhOwogICAgdmFyIG5iID0gbiA+IHN0ci5sZW5ndGggPyBzdHIubGVuZ3RoIDogbjsKICAgIGlmIChuYiA9PT0gc3RyLmxlbmd0aCkgcmV0ICs9IHN0cjtlbHNlIHJldCArPSBzdHIuc2xpY2UoMCwgbik7CiAgICBuIC09IG5iOwogICAgaWYgKG4gPT09IDApIHsKICAgICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSB7CiAgICAgICAgKytjOwogICAgICAgIGlmIChwLm5leHQpIGxpc3QuaGVhZCA9IHAubmV4dDtlbHNlIGxpc3QuaGVhZCA9IGxpc3QudGFpbCA9IG51bGw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbGlzdC5oZWFkID0gcDsKICAgICAgICBwLmRhdGEgPSBzdHIuc2xpY2UobmIpOwogICAgICB9CiAgICAgIGJyZWFrOwogICAgfQogICAgKytjOwogIH0KICBsaXN0Lmxlbmd0aCAtPSBjOwogIHJldHVybiByZXQ7Cn0KCi8vIENvcGllcyBhIHNwZWNpZmllZCBhbW91bnQgb2YgYnl0ZXMgZnJvbSB0aGUgbGlzdCBvZiBidWZmZXJlZCBkYXRhIGNodW5rcy4KLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmcKLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS4KZnVuY3Rpb24gY29weUZyb21CdWZmZXIobiwgbGlzdCkgewogIHZhciByZXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobik7CiAgdmFyIHAgPSBsaXN0LmhlYWQ7CiAgdmFyIGMgPSAxOwogIHAuZGF0YS5jb3B5KHJldCk7CiAgbiAtPSBwLmRhdGEubGVuZ3RoOwogIHdoaWxlIChwID0gcC5uZXh0KSB7CiAgICB2YXIgYnVmID0gcC5kYXRhOwogICAgdmFyIG5iID0gbiA+IGJ1Zi5sZW5ndGggPyBidWYubGVuZ3RoIDogbjsKICAgIGJ1Zi5jb3B5KHJldCwgcmV0Lmxlbmd0aCAtIG4sIDAsIG5iKTsKICAgIG4gLT0gbmI7CiAgICBpZiAobiA9PT0gMCkgewogICAgICBpZiAobmIgPT09IGJ1Zi5sZW5ndGgpIHsKICAgICAgICArK2M7CiAgICAgICAgaWYgKHAubmV4dCkgbGlzdC5oZWFkID0gcC5uZXh0O2Vsc2UgbGlzdC5oZWFkID0gbGlzdC50YWlsID0gbnVsbDsKICAgICAgfSBlbHNlIHsKICAgICAgICBsaXN0LmhlYWQgPSBwOwogICAgICAgIHAuZGF0YSA9IGJ1Zi5zbGljZShuYik7CiAgICAgIH0KICAgICAgYnJlYWs7CiAgICB9CiAgICArK2M7CiAgfQogIGxpc3QubGVuZ3RoIC09IGM7CiAgcmV0dXJuIHJldDsKfQoKZnVuY3Rpb24gZW5kUmVhZGFibGUoc3RyZWFtKSB7CiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlOwoKICAvLyBJZiB3ZSBnZXQgaGVyZSBiZWZvcmUgY29uc3VtaW5nIGFsbCB0aGUgYnl0ZXMsIHRoZW4gdGhhdCBpcyBhCiAgLy8gYnVnIGluIG5vZGUuICBTaG91bGQgbmV2ZXIgaGFwcGVuLgogIGlmIChzdGF0ZS5sZW5ndGggPiAwKSB0aHJvdyBuZXcgRXJyb3IoJyJlbmRSZWFkYWJsZSgpIiBjYWxsZWQgb24gbm9uLWVtcHR5IHN0cmVhbScpOwoKICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQpIHsKICAgIHN0YXRlLmVuZGVkID0gdHJ1ZTsKICAgIHByb2Nlc3NOZXh0VGljayhlbmRSZWFkYWJsZU5ULCBzdGF0ZSwgc3RyZWFtKTsKICB9Cn0KCmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkgewogIC8vIENoZWNrIHRoYXQgd2UgZGlkbid0IGdldCBvbmUgbGFzdCB1bnNoaWZ0LgogIGlmICghc3RhdGUuZW5kRW1pdHRlZCAmJiBzdGF0ZS5sZW5ndGggPT09IDApIHsKICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlOwogICAgc3RyZWFtLnJlYWRhYmxlID0gZmFsc2U7CiAgICBzdHJlYW0uZW1pdCgnZW5kJyk7CiAgfQp9CgpmdW5jdGlvbiBmb3JFYWNoKHhzLCBmKSB7CiAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgIGYoeHNbaV0sIGkpOwogIH0KfQoKZnVuY3Rpb24gaW5kZXhPZih4cywgeCkgewogIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICBpZiAoeHNbaV0gPT09IHgpIHJldHVybiBpOwogIH0KICByZXR1cm4gLTE7Cn0KLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oNyksIF9fd2VicGFja19yZXF1aXJlX18oMTEpKSkKCi8qKiovIH0pLAovKiA4NCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpLkV2ZW50RW1pdHRlcjsKCgovKioqLyB9KSwKLyogODUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCi8qPHJlcGxhY2VtZW50PiovCgp2YXIgcHJvY2Vzc05leHRUaWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMikubmV4dFRpY2s7Ci8qPC9yZXBsYWNlbWVudD4qLwoKLy8gdW5kb2N1bWVudGVkIGNiKCkgQVBJLCBuZWVkZWQgZm9yIGNvcmUsIG5vdCBmb3IgcHVibGljIEFQSQpmdW5jdGlvbiBkZXN0cm95KGVyciwgY2IpIHsKICB2YXIgX3RoaXMgPSB0aGlzOwoKICB2YXIgcmVhZGFibGVEZXN0cm95ZWQgPSB0aGlzLl9yZWFkYWJsZVN0YXRlICYmIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkOwogIHZhciB3cml0YWJsZURlc3Ryb3llZCA9IHRoaXMuX3dyaXRhYmxlU3RhdGUgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7CgogIGlmIChyZWFkYWJsZURlc3Ryb3llZCB8fCB3cml0YWJsZURlc3Ryb3llZCkgewogICAgaWYgKGNiKSB7CiAgICAgIGNiKGVycik7CiAgICB9IGVsc2UgaWYgKGVyciAmJiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUgfHwgIXRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkKSkgewogICAgICBwcm9jZXNzTmV4dFRpY2soZW1pdEVycm9yTlQsIHRoaXMsIGVycik7CiAgICB9CiAgICByZXR1cm4gdGhpczsKICB9CgogIC8vIHdlIHNldCBkZXN0cm95ZWQgdG8gdHJ1ZSBiZWZvcmUgZmlyaW5nIGVycm9yIGNhbGxiYWNrcyBpbiBvcmRlcgogIC8vIHRvIG1ha2UgaXQgcmUtZW50cmFuY2Ugc2FmZSBpbiBjYXNlIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2l0aGluIGNhbGxiYWNrcwoKICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSkgewogICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB0cnVlOwogIH0KCiAgLy8gaWYgdGhpcyBpcyBhIGR1cGxleCBzdHJlYW0gbWFyayB0aGUgd3JpdGFibGUgcGFydCBhcyBkZXN0cm95ZWQgYXMgd2VsbAogIGlmICh0aGlzLl93cml0YWJsZVN0YXRlKSB7CiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZCA9IHRydWU7CiAgfQoKICB0aGlzLl9kZXN0cm95KGVyciB8fCBudWxsLCBmdW5jdGlvbiAoZXJyKSB7CiAgICBpZiAoIWNiICYmIGVycikgewogICAgICBwcm9jZXNzTmV4dFRpY2soZW1pdEVycm9yTlQsIF90aGlzLCBlcnIpOwogICAgICBpZiAoX3RoaXMuX3dyaXRhYmxlU3RhdGUpIHsKICAgICAgICBfdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlOwogICAgICB9CiAgICB9IGVsc2UgaWYgKGNiKSB7CiAgICAgIGNiKGVycik7CiAgICB9CiAgfSk7CgogIHJldHVybiB0aGlzOwp9CgpmdW5jdGlvbiB1bmRlc3Ryb3koKSB7CiAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUpIHsKICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7CiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmcgPSBmYWxzZTsKICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kZWQgPSBmYWxzZTsKICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5kRW1pdHRlZCA9IGZhbHNlOwogIH0KCiAgaWYgKHRoaXMuX3dyaXRhYmxlU3RhdGUpIHsKICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7CiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGVkID0gZmFsc2U7CiAgICB0aGlzLl93cml0YWJsZVN0YXRlLmVuZGluZyA9IGZhbHNlOwogICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZCA9IGZhbHNlOwogICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSBmYWxzZTsKICB9Cn0KCmZ1bmN0aW9uIGVtaXRFcnJvck5UKHNlbGYsIGVycikgewogIHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpOwp9Cgptb2R1bGUuZXhwb3J0cyA9IHsKICBkZXN0cm95OiBkZXN0cm95LAogIHVuZGVzdHJveTogdW5kZXN0cm95Cn07CgovKioqLyB9KSwKLyogODYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy4KLy8KLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQovLyAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAovLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUKLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci8vCi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgovLwovLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwovLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgovLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCgovLyBhIHRyYW5zZm9ybSBzdHJlYW0gaXMgYSByZWFkYWJsZS93cml0YWJsZSBzdHJlYW0gd2hlcmUgeW91IGRvCi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgImZpbHRlciIsCi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlCi8vIHNvbWUgYml0cyBwYXNzIHRocm91Z2gsIGFuZCBvdGhlcnMgYXJlIHNpbXBseSBpZ25vcmVkLiAgKFRoYXQgd291bGQKLy8gYmUgYSB2YWxpZCBleGFtcGxlIG9mIGEgdHJhbnNmb3JtLCBvZiBjb3Vyc2UuKQovLwovLyBXaGlsZSB0aGUgb3V0cHV0IGlzIGNhdXNhbGx5IHJlbGF0ZWQgdG8gdGhlIGlucHV0LCBpdCdzIG5vdCBhCi8vIG5lY2Vzc2FyaWx5IHN5bW1ldHJpYyBvciBzeW5jaHJvbm91cyB0cmFuc2Zvcm1hdGlvbi4gIEZvciBleGFtcGxlLAovLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW4KLy8gZW1pdCBhIHNpbmdsZSBjb21wcmVzc2VkIGNodW5rIHNvbWUgdGltZSBpbiB0aGUgZnV0dXJlLgovLwovLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6Ci8vCi8vIFRoZSBUcmFuc2Zvcm0gc3RyZWFtIGhhcyBhbGwgdGhlIGFzcGVjdHMgb2YgdGhlIHJlYWRhYmxlIGFuZCB3cml0YWJsZQovLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpCi8vIGludGVybmFsbHksIGFuZCByZXR1cm5zIGZhbHNlIGlmIHRoZXJlJ3MgYSBsb3Qgb2YgcGVuZGluZyB3cml0ZXMKLy8gYnVmZmVyZWQgdXAuICBXaGVuIHlvdSBjYWxsIHJlYWQoKSwgdGhhdCBjYWxscyBfcmVhZChuKSB1bnRpbAovLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuCi8vCi8vIEluIGEgdHJhbnNmb3JtIHN0cmVhbSwgdGhlIHdyaXR0ZW4gZGF0YSBpcyBwbGFjZWQgaW4gYSBidWZmZXIuICBXaGVuCi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlCi8vIGJ1ZmZlcmVkIF93cml0ZSBjYidzIGFzIGl0IGNvbnN1bWVzIGNodW5rcy4gIElmIGNvbnN1bWluZyBhIHNpbmdsZQovLyB3cml0dGVuIGNodW5rIHdvdWxkIHJlc3VsdCBpbiBtdWx0aXBsZSBvdXRwdXQgY2h1bmtzLCB0aGVuIHRoZSBmaXJzdAovLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG8KLy8gdGhlIHJlYWQgYnVmZmVyLCBhbmQgd2lsbCBjYXVzZSBpdCB0byBlbWl0ICdyZWFkYWJsZScgaWYgbmVjZXNzYXJ5LgovLwovLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsCi8vIHNpbmNlIF9yZWFkIGhhcyB0byBiZSBjYWxsZWQgdG8gc3RhcnQgcHJvY2Vzc2luZyBhIG5ldyBjaHVuay4gIEhvd2V2ZXIsCi8vIGEgcGF0aG9sb2dpY2FsIGluZmxhdGUgdHlwZSBvZiB0cmFuc2Zvcm0gY2FuIGNhdXNlIGV4Y2Vzc2l2ZSBidWZmZXJpbmcKLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXMKLy8gaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlciBmcm9tIDAtMjU1LCBhbmQgdGhlbiByZXN1bHRzIGluIHRoYXQgbWFueQovLyBieXRlcyBvZiBvdXRwdXQuICBXcml0aW5nIHRoZSA0IGJ5dGVzIHtmZixmZixmZixmZn0gd291bGQgcmVzdWx0IGluCi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbAovLyBhbW91bnQgb2YgaW5wdXQsIGFuZCBlbmQgdXAgd2l0aCBhIHZlcnkgbGFyZ2UgYW1vdW50IG9mIG91dHB1dC4gIEluCi8vIHN1Y2ggYSBwYXRob2xvZ2ljYWwgaW5mbGF0aW5nIG1lY2hhbmlzbSwgdGhlcmUnZCBiZSBubyB3YXkgdG8gdGVsbAovLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZAovLyBjYXVzZSB0aGUgc3lzdGVtIHRvIHJ1biBvdXQgb2YgbWVtb3J5LgovLwovLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rCi8vIHdvdWxkIGJlIGNvbnN1bWVkLCBhbmQgdGhlbiB0aGUgcmVzdCB3b3VsZCB3YWl0ICh1bi10cmFuc2Zvcm1lZCkgdW50aWwKLy8gdGhlIHJlc3VsdHMgb2YgdGhlIHByZXZpb3VzIHRyYW5zZm9ybWVkIGNodW5rIHdlcmUgY29uc3VtZWQuCgoKCm1vZHVsZS5leHBvcnRzID0gVHJhbnNmb3JtOwoKdmFyIER1cGxleCA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpOwoKLyo8cmVwbGFjZW1lbnQ+Ki8KdmFyIHV0aWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI1KTsKdXRpbC5pbmhlcml0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpOwovKjwvcmVwbGFjZW1lbnQ+Ki8KCnV0aWwuaW5oZXJpdHMoVHJhbnNmb3JtLCBEdXBsZXgpOwoKZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0oZXIsIGRhdGEpIHsKICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTsKICB0cy50cmFuc2Zvcm1pbmcgPSBmYWxzZTsKCiAgdmFyIGNiID0gdHMud3JpdGVjYjsKCiAgaWYgKCFjYikgewogICAgcmV0dXJuIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ3dyaXRlIGNhbGxiYWNrIGNhbGxlZCBtdWx0aXBsZSB0aW1lcycpKTsKICB9CgogIHRzLndyaXRlY2h1bmsgPSBudWxsOwogIHRzLndyaXRlY2IgPSBudWxsOwoKICBpZiAoZGF0YSAhPSBudWxsKSAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGAKICAgIHRoaXMucHVzaChkYXRhKTsKCiAgY2IoZXIpOwoKICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlOwogIHJzLnJlYWRpbmcgPSBmYWxzZTsKICBpZiAocnMubmVlZFJlYWRhYmxlIHx8IHJzLmxlbmd0aCA8IHJzLmhpZ2hXYXRlck1hcmspIHsKICAgIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7CiAgfQp9CgpmdW5jdGlvbiBUcmFuc2Zvcm0ob3B0aW9ucykgewogIGlmICghKHRoaXMgaW5zdGFuY2VvZiBUcmFuc2Zvcm0pKSByZXR1cm4gbmV3IFRyYW5zZm9ybShvcHRpb25zKTsKCiAgRHVwbGV4LmNhbGwodGhpcywgb3B0aW9ucyk7CgogIHRoaXMuX3RyYW5zZm9ybVN0YXRlID0gewogICAgYWZ0ZXJUcmFuc2Zvcm06IGFmdGVyVHJhbnNmb3JtLmJpbmQodGhpcyksCiAgICBuZWVkVHJhbnNmb3JtOiBmYWxzZSwKICAgIHRyYW5zZm9ybWluZzogZmFsc2UsCiAgICB3cml0ZWNiOiBudWxsLAogICAgd3JpdGVjaHVuazogbnVsbCwKICAgIHdyaXRlZW5jb2Rpbmc6IG51bGwKICB9OwoKICAvLyBzdGFydCBvdXQgYXNraW5nIGZvciBhIHJlYWRhYmxlIGV2ZW50IG9uY2UgZGF0YSBpcyB0cmFuc2Zvcm1lZC4KICB0aGlzLl9yZWFkYWJsZVN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7CgogIC8vIHdlIGhhdmUgaW1wbGVtZW50ZWQgdGhlIF9yZWFkIG1ldGhvZCwgYW5kIGRvbmUgdGhlIG90aGVyIHRoaW5ncwogIC8vIHRoYXQgUmVhZGFibGUgd2FudHMgYmVmb3JlIHRoZSBmaXJzdCBfcmVhZCBjYWxsLCBzbyB1bnNldCB0aGUKICAvLyBzeW5jIGd1YXJkIGZsYWcuCiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7CgogIGlmIChvcHRpb25zKSB7CiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTsKCiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoID0gb3B0aW9ucy5mbHVzaDsKICB9CgogIC8vIFdoZW4gdGhlIHdyaXRhYmxlIHNpZGUgZmluaXNoZXMsIHRoZW4gZmx1c2ggb3V0IGFueXRoaW5nIHJlbWFpbmluZy4KICB0aGlzLm9uKCdwcmVmaW5pc2gnLCBwcmVmaW5pc2gpOwp9CgpmdW5jdGlvbiBwcmVmaW5pc2goKSB7CiAgdmFyIF90aGlzID0gdGhpczsKCiAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgewogICAgdGhpcy5fZmx1c2goZnVuY3Rpb24gKGVyLCBkYXRhKSB7CiAgICAgIGRvbmUoX3RoaXMsIGVyLCBkYXRhKTsKICAgIH0pOwogIH0gZWxzZSB7CiAgICBkb25lKHRoaXMsIG51bGwsIG51bGwpOwogIH0KfQoKVHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykgewogIHRoaXMuX3RyYW5zZm9ybVN0YXRlLm5lZWRUcmFuc2Zvcm0gPSBmYWxzZTsKICByZXR1cm4gRHVwbGV4LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcywgY2h1bmssIGVuY29kaW5nKTsKfTsKCi8vIFRoaXMgaXMgdGhlIHBhcnQgd2hlcmUgeW91IGRvIHN0dWZmIQovLyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGluIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuCi8vICdjaHVuaycgaXMgYW4gaW5wdXQgY2h1bmsuCi8vCi8vIENhbGwgYHB1c2gobmV3Q2h1bmspYCB0byBwYXNzIGFsb25nIHRyYW5zZm9ybWVkIG91dHB1dAovLyB0byB0aGUgcmVhZGFibGUgc2lkZS4gIFlvdSBtYXkgY2FsbCAncHVzaCcgemVybyBvciBtb3JlIHRpbWVzLgovLwovLyBDYWxsIGBjYihlcnIpYCB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgY2h1bmsuICBJZiB5b3UgcGFzcwovLyBhbiBlcnJvciwgdGhlbiB0aGF0J2xsIHB1dCB0aGUgaHVydCBvbiB0aGUgd2hvbGUgb3BlcmF0aW9uLiAgSWYgeW91Ci8vIG5ldmVyIGNhbGwgY2IoKSwgdGhlbiB5b3UnbGwgbmV2ZXIgZ2V0IGFub3RoZXIgY2h1bmsuClRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgdGhyb3cgbmV3IEVycm9yKCdfdHJhbnNmb3JtKCkgaXMgbm90IGltcGxlbWVudGVkJyk7Cn07CgpUcmFuc2Zvcm0ucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7CiAgdHMud3JpdGVjYiA9IGNiOwogIHRzLndyaXRlY2h1bmsgPSBjaHVuazsKICB0cy53cml0ZWVuY29kaW5nID0gZW5jb2Rpbmc7CiAgaWYgKCF0cy50cmFuc2Zvcm1pbmcpIHsKICAgIHZhciBycyA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7CiAgICBpZiAodHMubmVlZFRyYW5zZm9ybSB8fCBycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykgdGhpcy5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTsKICB9Cn07CgovLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBhcmdzIGFyZSBoZXJlLgovLyBfdHJhbnNmb3JtIGRvZXMgYWxsIHRoZSB3b3JrLgovLyBUaGF0IHdlIGdvdCBoZXJlIG1lYW5zIHRoYXQgdGhlIHJlYWRhYmxlIHNpZGUgd2FudHMgbW9yZSBkYXRhLgpUcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHsKICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTsKCiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgdHMud3JpdGVjYiAmJiAhdHMudHJhbnNmb3JtaW5nKSB7CiAgICB0cy50cmFuc2Zvcm1pbmcgPSB0cnVlOwogICAgdGhpcy5fdHJhbnNmb3JtKHRzLndyaXRlY2h1bmssIHRzLndyaXRlZW5jb2RpbmcsIHRzLmFmdGVyVHJhbnNmb3JtKTsKICB9IGVsc2UgewogICAgLy8gbWFyayB0aGF0IHdlIG5lZWQgYSB0cmFuc2Zvcm0sIHNvIHRoYXQgYW55IGRhdGEgdGhhdCBjb21lcyBpbgogICAgLy8gd2lsbCBnZXQgcHJvY2Vzc2VkLCBub3cgdGhhdCB3ZSd2ZSBhc2tlZCBmb3IgaXQuCiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTsKICB9Cn07CgpUcmFuc2Zvcm0ucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHsKICB2YXIgX3RoaXMyID0gdGhpczsKCiAgRHVwbGV4LnByb3RvdHlwZS5fZGVzdHJveS5jYWxsKHRoaXMsIGVyciwgZnVuY3Rpb24gKGVycjIpIHsKICAgIGNiKGVycjIpOwogICAgX3RoaXMyLmVtaXQoJ2Nsb3NlJyk7CiAgfSk7Cn07CgpmdW5jdGlvbiBkb25lKHN0cmVhbSwgZXIsIGRhdGEpIHsKICBpZiAoZXIpIHJldHVybiBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7CgogIGlmIChkYXRhICE9IG51bGwpIC8vIHNpbmdsZSBlcXVhbHMgY2hlY2sgZm9yIGJvdGggYG51bGxgIGFuZCBgdW5kZWZpbmVkYAogICAgc3RyZWFtLnB1c2goZGF0YSk7CgogIC8vIGlmIHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgd3JpdGUgYnVmZmVyLCB0aGVuIHRoYXQgbWVhbnMKICAvLyB0aGF0IG5vdGhpbmcgbW9yZSB3aWxsIGV2ZXIgYmUgcHJvdmlkZWQKICBpZiAoc3RyZWFtLl93cml0YWJsZVN0YXRlLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3MubGVuZ3RoICE9IDAnKTsKCiAgaWYgKHN0cmVhbS5fdHJhbnNmb3JtU3RhdGUudHJhbnNmb3JtaW5nKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiBzdGlsbCB0cmFuc2Zvcm1pbmcnKTsKCiAgcmV0dXJuIHN0cmVhbS5wdXNoKG51bGwpOwp9CgovKioqLyB9KSwKLyogODcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKEJ1ZmZlcikgey8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CgovKgpQREZSZWZlcmVuY2UgLSByZXByZXNlbnRzIGEgcmVmZXJlbmNlIHRvIGFub3RoZXIgb2JqZWN0IGluIHRoZSBQREYgb2JqZWN0IGhlaXJhcmNoeQpCeSBEZXZvbiBHb3ZldHQKICovCgooZnVuY3Rpb24oKSB7CiAgdmFyIFBERk9iamVjdCwgUERGUmVmZXJlbmNlLCBzdHJlYW0sIHpsaWIsCiAgICBiaW5kID0gZnVuY3Rpb24oZm4sIG1lKXsgcmV0dXJuIGZ1bmN0aW9uKCl7IHJldHVybiBmbi5hcHBseShtZSwgYXJndW1lbnRzKTsgfTsgfSwKICAgIGV4dGVuZCA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoaGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfSwKICAgIGhhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCiAgemxpYiA9IF9fd2VicGFja19yZXF1aXJlX18oNDgpOwoKICBzdHJlYW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTsKCiAgUERGUmVmZXJlbmNlID0gKGZ1bmN0aW9uKHN1cGVyQ2xhc3MpIHsKICAgIGV4dGVuZChQREZSZWZlcmVuY2UsIHN1cGVyQ2xhc3MpOwoKICAgIGZ1bmN0aW9uIFBERlJlZmVyZW5jZShkb2N1bWVudCwgaWQsIGRhdGEpIHsKICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50OwogICAgICB0aGlzLmlkID0gaWQ7CiAgICAgIHRoaXMuZGF0YSA9IGRhdGEgIT0gbnVsbCA/IGRhdGEgOiB7fTsKICAgICAgdGhpcy5maW5hbGl6ZSA9IGJpbmQodGhpcy5maW5hbGl6ZSwgdGhpcyk7CiAgICAgIFBERlJlZmVyZW5jZS5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzLCB7CiAgICAgICAgZGVjb2RlU3RyaW5nczogZmFsc2UKICAgICAgfSk7CiAgICAgIHRoaXMuZ2VuID0gMDsKICAgICAgdGhpcy5kZWZsYXRlID0gbnVsbDsKICAgICAgdGhpcy5jb21wcmVzcyA9IHRoaXMuZG9jdW1lbnQuY29tcHJlc3MgJiYgIXRoaXMuZGF0YS5GaWx0ZXI7CiAgICAgIHRoaXMudW5jb21wcmVzc2VkTGVuZ3RoID0gMDsKICAgICAgdGhpcy5jaHVua3MgPSBbXTsKICAgIH0KCiAgICBQREZSZWZlcmVuY2UucHJvdG90eXBlLmluaXREZWZsYXRlID0gZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuZGF0YS5GaWx0ZXIgPSAnRmxhdGVEZWNvZGUnOwogICAgICB0aGlzLmRlZmxhdGUgPSB6bGliLmNyZWF0ZURlZmxhdGUoKTsKICAgICAgdGhpcy5kZWZsYXRlLm9uKCdkYXRhJywgKGZ1bmN0aW9uKF90aGlzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGNodW5rKSB7CiAgICAgICAgICBfdGhpcy5jaHVua3MucHVzaChjaHVuayk7CiAgICAgICAgICByZXR1cm4gX3RoaXMuZGF0YS5MZW5ndGggKz0gY2h1bmsubGVuZ3RoOwogICAgICAgIH07CiAgICAgIH0pKHRoaXMpKTsKICAgICAgcmV0dXJuIHRoaXMuZGVmbGF0ZS5vbignZW5kJywgdGhpcy5maW5hbGl6ZSk7CiAgICB9OwoKICAgIFBERlJlZmVyZW5jZS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24oY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykgewogICAgICB2YXIgYmFzZTsKICAgICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoY2h1bmspKSB7CiAgICAgICAgY2h1bmsgPSBuZXcgQnVmZmVyKGNodW5rICsgJ1xuJywgJ2JpbmFyeScpOwogICAgICB9CiAgICAgIHRoaXMudW5jb21wcmVzc2VkTGVuZ3RoICs9IGNodW5rLmxlbmd0aDsKICAgICAgaWYgKChiYXNlID0gdGhpcy5kYXRhKS5MZW5ndGggPT0gbnVsbCkgewogICAgICAgIGJhc2UuTGVuZ3RoID0gMDsKICAgICAgfQogICAgICBpZiAodGhpcy5jb21wcmVzcykgewogICAgICAgIGlmICghdGhpcy5kZWZsYXRlKSB7CiAgICAgICAgICB0aGlzLmluaXREZWZsYXRlKCk7CiAgICAgICAgfQogICAgICAgIHRoaXMuZGVmbGF0ZS53cml0ZShjaHVuayk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5jaHVua3MucHVzaChjaHVuayk7CiAgICAgICAgdGhpcy5kYXRhLkxlbmd0aCArPSBjaHVuay5sZW5ndGg7CiAgICAgIH0KICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICB9OwoKICAgIFBERlJlZmVyZW5jZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oY2h1bmspIHsKICAgICAgUERGUmVmZXJlbmNlLl9fc3VwZXJfXy5lbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgaWYgKHRoaXMuZGVmbGF0ZSkgewogICAgICAgIHJldHVybiB0aGlzLmRlZmxhdGUuZW5kKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUoKTsKICAgICAgfQogICAgfTsKCiAgICBQREZSZWZlcmVuY2UucHJvdG90eXBlLmZpbmFsaXplID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjaHVuaywgaSwgbGVuLCByZWY7CiAgICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5kb2N1bWVudC5fb2Zmc2V0OwogICAgICB0aGlzLmRvY3VtZW50Ll93cml0ZSh0aGlzLmlkICsgIiAiICsgdGhpcy5nZW4gKyAiIG9iaiIpOwogICAgICB0aGlzLmRvY3VtZW50Ll93cml0ZShQREZPYmplY3QuY29udmVydCh0aGlzLmRhdGEpKTsKICAgICAgaWYgKHRoaXMuY2h1bmtzLmxlbmd0aCkgewogICAgICAgIHRoaXMuZG9jdW1lbnQuX3dyaXRlKCdzdHJlYW0nKTsKICAgICAgICByZWYgPSB0aGlzLmNodW5rczsKICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgIGNodW5rID0gcmVmW2ldOwogICAgICAgICAgdGhpcy5kb2N1bWVudC5fd3JpdGUoY2h1bmspOwogICAgICAgIH0KICAgICAgICB0aGlzLmNodW5rcy5sZW5ndGggPSAwOwogICAgICAgIHRoaXMuZG9jdW1lbnQuX3dyaXRlKCdcbmVuZHN0cmVhbScpOwogICAgICB9CiAgICAgIHRoaXMuZG9jdW1lbnQuX3dyaXRlKCdlbmRvYmonKTsKICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuX3JlZkVuZCh0aGlzKTsKICAgIH07CgogICAgUERGUmVmZXJlbmNlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5pZCArICIgIiArIHRoaXMuZ2VuICsgIiBSIjsKICAgIH07CgogICAgcmV0dXJuIFBERlJlZmVyZW5jZTsKCiAgfSkoc3RyZWFtLldyaXRhYmxlKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBQREZSZWZlcmVuY2U7CgogIFBERk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpOwoKfSkuY2FsbCh0aGlzKTsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlcikpCgovKioqLyB9KSwKLyogODggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7CgovLyBjb21wYXJlIGFuZCBpc0J1ZmZlciB0YWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL2Jsb2IvNjgwZTllNWU0ODhmMjJhYWMyNzU5OWE1N2RjODQ0YTYzMTU5MjhkZC9pbmRleC5qcwovLyBvcmlnaW5hbCBub3RpY2U6CgovKiEKICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuCiAqCiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPgogKiBAbGljZW5zZSAgTUlUCiAqLwpmdW5jdGlvbiBjb21wYXJlKGEsIGIpIHsKICBpZiAoYSA9PT0gYikgewogICAgcmV0dXJuIDA7CiAgfQoKICB2YXIgeCA9IGEubGVuZ3RoOwogIHZhciB5ID0gYi5sZW5ndGg7CgogIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7CiAgICBpZiAoYVtpXSAhPT0gYltpXSkgewogICAgICB4ID0gYVtpXTsKICAgICAgeSA9IGJbaV07CiAgICAgIGJyZWFrOwogICAgfQogIH0KCiAgaWYgKHggPCB5KSB7CiAgICByZXR1cm4gLTE7CiAgfQogIGlmICh5IDwgeCkgewogICAgcmV0dXJuIDE7CiAgfQogIHJldHVybiAwOwp9CmZ1bmN0aW9uIGlzQnVmZmVyKGIpIHsKICBpZiAoZ2xvYmFsLkJ1ZmZlciAmJiB0eXBlb2YgZ2xvYmFsLkJ1ZmZlci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJykgewogICAgcmV0dXJuIGdsb2JhbC5CdWZmZXIuaXNCdWZmZXIoYik7CiAgfQogIHJldHVybiAhIShiICE9IG51bGwgJiYgYi5faXNCdWZmZXIpOwp9CgovLyBiYXNlZCBvbiBub2RlIGFzc2VydCwgb3JpZ2luYWwgbm90aWNlOgoKLy8gaHR0cDovL3dpa2kuY29tbW9uanMub3JnL3dpa2kvVW5pdF9UZXN0aW5nLzEuMAovLwovLyBUSElTIElTIE5PVCBURVNURUQgTk9SIExJS0VMWSBUTyBXT1JLIE9VVFNJREUgVjghCi8vCi8vIE9yaWdpbmFsbHkgZnJvbSBuYXJ3aGFsLmpzIChodHRwOi8vbmFyd2hhbGpzLm9yZykKLy8gQ29weXJpZ2h0IChjKSAyMDA5IFRob21hcyBSb2JpbnNvbiA8Mjgwbm9ydGguY29tPgovLwovLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICdTb2Z0d2FyZScpLCB0bwovLyBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQovLyByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLy8gc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLy8KLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAovLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLy8gQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KLy8gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgovLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KCnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OSk7CnZhciBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5Owp2YXIgcFNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlOwp2YXIgZnVuY3Rpb25zSGF2ZU5hbWVzID0gKGZ1bmN0aW9uICgpIHsKICByZXR1cm4gZnVuY3Rpb24gZm9vKCkge30ubmFtZSA9PT0gJ2Zvbyc7Cn0oKSk7CmZ1bmN0aW9uIHBUb1N0cmluZyAob2JqKSB7CiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopOwp9CmZ1bmN0aW9uIGlzVmlldyhhcnJidWYpIHsKICBpZiAoaXNCdWZmZXIoYXJyYnVmKSkgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICBpZiAodHlwZW9mIGdsb2JhbC5BcnJheUJ1ZmZlciAhPT0gJ2Z1bmN0aW9uJykgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICBpZiAodHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJykgewogICAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyhhcnJidWYpOwogIH0KICBpZiAoIWFycmJ1ZikgewogICAgcmV0dXJuIGZhbHNlOwogIH0KICBpZiAoYXJyYnVmIGluc3RhbmNlb2YgRGF0YVZpZXcpIHsKICAgIHJldHVybiB0cnVlOwogIH0KICBpZiAoYXJyYnVmLmJ1ZmZlciAmJiBhcnJidWYuYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHsKICAgIHJldHVybiB0cnVlOwogIH0KICByZXR1cm4gZmFsc2U7Cn0KLy8gMS4gVGhlIGFzc2VydCBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgdGhyb3cKLy8gQXNzZXJ0aW9uRXJyb3IncyB3aGVuIHBhcnRpY3VsYXIgY29uZGl0aW9ucyBhcmUgbm90IG1ldC4gVGhlCi8vIGFzc2VydCBtb2R1bGUgbXVzdCBjb25mb3JtIHRvIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlLgoKdmFyIGFzc2VydCA9IG1vZHVsZS5leHBvcnRzID0gb2s7CgovLyAyLiBUaGUgQXNzZXJ0aW9uRXJyb3IgaXMgZGVmaW5lZCBpbiBhc3NlcnQuCi8vIG5ldyBhc3NlcnQuQXNzZXJ0aW9uRXJyb3IoeyBtZXNzYWdlOiBtZXNzYWdlLAovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsOiBhY3R1YWwsCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogZXhwZWN0ZWQgfSkKCnZhciByZWdleCA9IC9ccypmdW5jdGlvblxzKyhbXlwoXHNdKilccyovOwovLyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vbGpoYXJiL2Z1bmN0aW9uLnByb3RvdHlwZS5uYW1lL2Jsb2IvYWRlZWVlYzhiZmNjNjA2OGIxODdkN2Q5ZmIzZDViYjFkM2EzMDg5OS9pbXBsZW1lbnRhdGlvbi5qcwpmdW5jdGlvbiBnZXROYW1lKGZ1bmMpIHsKICBpZiAoIXV0aWwuaXNGdW5jdGlvbihmdW5jKSkgewogICAgcmV0dXJuOwogIH0KICBpZiAoZnVuY3Rpb25zSGF2ZU5hbWVzKSB7CiAgICByZXR1cm4gZnVuYy5uYW1lOwogIH0KICB2YXIgc3RyID0gZnVuYy50b1N0cmluZygpOwogIHZhciBtYXRjaCA9IHN0ci5tYXRjaChyZWdleCk7CiAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdOwp9CmFzc2VydC5Bc3NlcnRpb25FcnJvciA9IGZ1bmN0aW9uIEFzc2VydGlvbkVycm9yKG9wdGlvbnMpIHsKICB0aGlzLm5hbWUgPSAnQXNzZXJ0aW9uRXJyb3InOwogIHRoaXMuYWN0dWFsID0gb3B0aW9ucy5hY3R1YWw7CiAgdGhpcy5leHBlY3RlZCA9IG9wdGlvbnMuZXhwZWN0ZWQ7CiAgdGhpcy5vcGVyYXRvciA9IG9wdGlvbnMub3BlcmF0b3I7CiAgaWYgKG9wdGlvbnMubWVzc2FnZSkgewogICAgdGhpcy5tZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlOwogICAgdGhpcy5nZW5lcmF0ZWRNZXNzYWdlID0gZmFsc2U7CiAgfSBlbHNlIHsKICAgIHRoaXMubWVzc2FnZSA9IGdldE1lc3NhZ2UodGhpcyk7CiAgICB0aGlzLmdlbmVyYXRlZE1lc3NhZ2UgPSB0cnVlOwogIH0KICB2YXIgc3RhY2tTdGFydEZ1bmN0aW9uID0gb3B0aW9ucy5zdGFja1N0YXJ0RnVuY3Rpb24gfHwgZmFpbDsKICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHsKICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHN0YWNrU3RhcnRGdW5jdGlvbik7CiAgfSBlbHNlIHsKICAgIC8vIG5vbiB2OCBicm93c2VycyBzbyB3ZSBjYW4gaGF2ZSBhIHN0YWNrdHJhY2UKICAgIHZhciBlcnIgPSBuZXcgRXJyb3IoKTsKICAgIGlmIChlcnIuc3RhY2spIHsKICAgICAgdmFyIG91dCA9IGVyci5zdGFjazsKCiAgICAgIC8vIHRyeSB0byBzdHJpcCB1c2VsZXNzIGZyYW1lcwogICAgICB2YXIgZm5fbmFtZSA9IGdldE5hbWUoc3RhY2tTdGFydEZ1bmN0aW9uKTsKICAgICAgdmFyIGlkeCA9IG91dC5pbmRleE9mKCdcbicgKyBmbl9uYW1lKTsKICAgICAgaWYgKGlkeCA+PSAwKSB7CiAgICAgICAgLy8gb25jZSB3ZSBoYXZlIGxvY2F0ZWQgdGhlIGZ1bmN0aW9uIGZyYW1lCiAgICAgICAgLy8gd2UgbmVlZCB0byBzdHJpcCBvdXQgZXZlcnl0aGluZyBiZWZvcmUgaXQgKGFuZCBpdHMgbGluZSkKICAgICAgICB2YXIgbmV4dF9saW5lID0gb3V0LmluZGV4T2YoJ1xuJywgaWR4ICsgMSk7CiAgICAgICAgb3V0ID0gb3V0LnN1YnN0cmluZyhuZXh0X2xpbmUgKyAxKTsKICAgICAgfQoKICAgICAgdGhpcy5zdGFjayA9IG91dDsKICAgIH0KICB9Cn07CgovLyBhc3NlcnQuQXNzZXJ0aW9uRXJyb3IgaW5zdGFuY2VvZiBFcnJvcgp1dGlsLmluaGVyaXRzKGFzc2VydC5Bc3NlcnRpb25FcnJvciwgRXJyb3IpOwoKZnVuY3Rpb24gdHJ1bmNhdGUocywgbikgewogIGlmICh0eXBlb2YgcyA9PT0gJ3N0cmluZycpIHsKICAgIHJldHVybiBzLmxlbmd0aCA8IG4gPyBzIDogcy5zbGljZSgwLCBuKTsKICB9IGVsc2UgewogICAgcmV0dXJuIHM7CiAgfQp9CmZ1bmN0aW9uIGluc3BlY3Qoc29tZXRoaW5nKSB7CiAgaWYgKGZ1bmN0aW9uc0hhdmVOYW1lcyB8fCAhdXRpbC5pc0Z1bmN0aW9uKHNvbWV0aGluZykpIHsKICAgIHJldHVybiB1dGlsLmluc3BlY3Qoc29tZXRoaW5nKTsKICB9CiAgdmFyIHJhd25hbWUgPSBnZXROYW1lKHNvbWV0aGluZyk7CiAgdmFyIG5hbWUgPSByYXduYW1lID8gJzogJyArIHJhd25hbWUgOiAnJzsKICByZXR1cm4gJ1tGdW5jdGlvbicgKyAgbmFtZSArICddJzsKfQpmdW5jdGlvbiBnZXRNZXNzYWdlKHNlbGYpIHsKICByZXR1cm4gdHJ1bmNhdGUoaW5zcGVjdChzZWxmLmFjdHVhbCksIDEyOCkgKyAnICcgKwogICAgICAgICBzZWxmLm9wZXJhdG9yICsgJyAnICsKICAgICAgICAgdHJ1bmNhdGUoaW5zcGVjdChzZWxmLmV4cGVjdGVkKSwgMTI4KTsKfQoKLy8gQXQgcHJlc2VudCBvbmx5IHRoZSB0aHJlZSBrZXlzIG1lbnRpb25lZCBhYm92ZSBhcmUgdXNlZCBhbmQKLy8gdW5kZXJzdG9vZCBieSB0aGUgc3BlYy4gSW1wbGVtZW50YXRpb25zIG9yIHN1YiBtb2R1bGVzIGNhbiBwYXNzCi8vIG90aGVyIGtleXMgdG8gdGhlIEFzc2VydGlvbkVycm9yJ3MgY29uc3RydWN0b3IgLSB0aGV5IHdpbGwgYmUKLy8gaWdub3JlZC4KCi8vIDMuIEFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHRocm93IGFuIEFzc2VydGlvbkVycm9yCi8vIHdoZW4gYSBjb3JyZXNwb25kaW5nIGNvbmRpdGlvbiBpcyBub3QgbWV0LCB3aXRoIGEgbWVzc2FnZSB0aGF0Ci8vIG1heSBiZSB1bmRlZmluZWQgaWYgbm90IHByb3ZpZGVkLiAgQWxsIGFzc2VydGlvbiBtZXRob2RzIHByb3ZpZGUKLy8gYm90aCB0aGUgYWN0dWFsIGFuZCBleHBlY3RlZCB2YWx1ZXMgdG8gdGhlIGFzc2VydGlvbiBlcnJvciBmb3IKLy8gZGlzcGxheSBwdXJwb3Nlcy4KCmZ1bmN0aW9uIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgb3BlcmF0b3IsIHN0YWNrU3RhcnRGdW5jdGlvbikgewogIHRocm93IG5ldyBhc3NlcnQuQXNzZXJ0aW9uRXJyb3IoewogICAgbWVzc2FnZTogbWVzc2FnZSwKICAgIGFjdHVhbDogYWN0dWFsLAogICAgZXhwZWN0ZWQ6IGV4cGVjdGVkLAogICAgb3BlcmF0b3I6IG9wZXJhdG9yLAogICAgc3RhY2tTdGFydEZ1bmN0aW9uOiBzdGFja1N0YXJ0RnVuY3Rpb24KICB9KTsKfQoKLy8gRVhURU5TSU9OISBhbGxvd3MgZm9yIHdlbGwgYmVoYXZlZCBlcnJvcnMgZGVmaW5lZCBlbHNld2hlcmUuCmFzc2VydC5mYWlsID0gZmFpbDsKCi8vIDQuIFB1cmUgYXNzZXJ0aW9uIHRlc3RzIHdoZXRoZXIgYSB2YWx1ZSBpcyB0cnV0aHksIGFzIGRldGVybWluZWQKLy8gYnkgISFndWFyZC4KLy8gYXNzZXJ0Lm9rKGd1YXJkLCBtZXNzYWdlX29wdCk7Ci8vIFRoaXMgc3RhdGVtZW50IGlzIGVxdWl2YWxlbnQgdG8gYXNzZXJ0LmVxdWFsKHRydWUsICEhZ3VhcmQsCi8vIG1lc3NhZ2Vfb3B0KTsuIFRvIHRlc3Qgc3RyaWN0bHkgZm9yIHRoZSB2YWx1ZSB0cnVlLCB1c2UKLy8gYXNzZXJ0LnN0cmljdEVxdWFsKHRydWUsIGd1YXJkLCBtZXNzYWdlX29wdCk7LgoKZnVuY3Rpb24gb2sodmFsdWUsIG1lc3NhZ2UpIHsKICBpZiAoIXZhbHVlKSBmYWlsKHZhbHVlLCB0cnVlLCBtZXNzYWdlLCAnPT0nLCBhc3NlcnQub2spOwp9CmFzc2VydC5vayA9IG9rOwoKLy8gNS4gVGhlIGVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBzaGFsbG93LCBjb2VyY2l2ZSBlcXVhbGl0eSB3aXRoCi8vID09LgovLyBhc3NlcnQuZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpOwoKYXNzZXJ0LmVxdWFsID0gZnVuY3Rpb24gZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewogIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJz09JywgYXNzZXJ0LmVxdWFsKTsKfTsKCi8vIDYuIFRoZSBub24tZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIGZvciB3aGV0aGVyIHR3byBvYmplY3RzIGFyZSBub3QgZXF1YWwKLy8gd2l0aCAhPSBhc3NlcnQubm90RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpOwoKYXNzZXJ0Lm5vdEVxdWFsID0gZnVuY3Rpb24gbm90RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewogIGlmIChhY3R1YWwgPT0gZXhwZWN0ZWQpIHsKICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJyE9JywgYXNzZXJ0Lm5vdEVxdWFsKTsKICB9Cn07CgovLyA3LiBUaGUgZXF1aXZhbGVuY2UgYXNzZXJ0aW9uIHRlc3RzIGEgZGVlcCBlcXVhbGl0eSByZWxhdGlvbi4KLy8gYXNzZXJ0LmRlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7Cgphc3NlcnQuZGVlcEVxdWFsID0gZnVuY3Rpb24gZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKICBpZiAoIV9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZmFsc2UpKSB7CiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdkZWVwRXF1YWwnLCBhc3NlcnQuZGVlcEVxdWFsKTsKICB9Cn07Cgphc3NlcnQuZGVlcFN0cmljdEVxdWFsID0gZnVuY3Rpb24gZGVlcFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKICBpZiAoIV9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgdHJ1ZSkpIHsKICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJ2RlZXBTdHJpY3RFcXVhbCcsIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwpOwogIH0KfTsKCmZ1bmN0aW9uIF9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgc3RyaWN0LCBtZW1vcykgewogIC8vIDcuMS4gQWxsIGlkZW50aWNhbCB2YWx1ZXMgYXJlIGVxdWl2YWxlbnQsIGFzIGRldGVybWluZWQgYnkgPT09LgogIGlmIChhY3R1YWwgPT09IGV4cGVjdGVkKSB7CiAgICByZXR1cm4gdHJ1ZTsKICB9IGVsc2UgaWYgKGlzQnVmZmVyKGFjdHVhbCkgJiYgaXNCdWZmZXIoZXhwZWN0ZWQpKSB7CiAgICByZXR1cm4gY29tcGFyZShhY3R1YWwsIGV4cGVjdGVkKSA9PT0gMDsKCiAgLy8gNy4yLiBJZiB0aGUgZXhwZWN0ZWQgdmFsdWUgaXMgYSBEYXRlIG9iamVjdCwgdGhlIGFjdHVhbCB2YWx1ZSBpcwogIC8vIGVxdWl2YWxlbnQgaWYgaXQgaXMgYWxzbyBhIERhdGUgb2JqZWN0IHRoYXQgcmVmZXJzIHRvIHRoZSBzYW1lIHRpbWUuCiAgfSBlbHNlIGlmICh1dGlsLmlzRGF0ZShhY3R1YWwpICYmIHV0aWwuaXNEYXRlKGV4cGVjdGVkKSkgewogICAgcmV0dXJuIGFjdHVhbC5nZXRUaW1lKCkgPT09IGV4cGVjdGVkLmdldFRpbWUoKTsKCiAgLy8gNy4zIElmIHRoZSBleHBlY3RlZCB2YWx1ZSBpcyBhIFJlZ0V4cCBvYmplY3QsIHRoZSBhY3R1YWwgdmFsdWUgaXMKICAvLyBlcXVpdmFsZW50IGlmIGl0IGlzIGFsc28gYSBSZWdFeHAgb2JqZWN0IHdpdGggdGhlIHNhbWUgc291cmNlIGFuZAogIC8vIHByb3BlcnRpZXMgKGBnbG9iYWxgLCBgbXVsdGlsaW5lYCwgYGxhc3RJbmRleGAsIGBpZ25vcmVDYXNlYCkuCiAgfSBlbHNlIGlmICh1dGlsLmlzUmVnRXhwKGFjdHVhbCkgJiYgdXRpbC5pc1JlZ0V4cChleHBlY3RlZCkpIHsKICAgIHJldHVybiBhY3R1YWwuc291cmNlID09PSBleHBlY3RlZC5zb3VyY2UgJiYKICAgICAgICAgICBhY3R1YWwuZ2xvYmFsID09PSBleHBlY3RlZC5nbG9iYWwgJiYKICAgICAgICAgICBhY3R1YWwubXVsdGlsaW5lID09PSBleHBlY3RlZC5tdWx0aWxpbmUgJiYKICAgICAgICAgICBhY3R1YWwubGFzdEluZGV4ID09PSBleHBlY3RlZC5sYXN0SW5kZXggJiYKICAgICAgICAgICBhY3R1YWwuaWdub3JlQ2FzZSA9PT0gZXhwZWN0ZWQuaWdub3JlQ2FzZTsKCiAgLy8gNy40LiBPdGhlciBwYWlycyB0aGF0IGRvIG5vdCBib3RoIHBhc3MgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnLAogIC8vIGVxdWl2YWxlbmNlIGlzIGRldGVybWluZWQgYnkgPT0uCiAgfSBlbHNlIGlmICgoYWN0dWFsID09PSBudWxsIHx8IHR5cGVvZiBhY3R1YWwgIT09ICdvYmplY3QnKSAmJgogICAgICAgICAgICAgKGV4cGVjdGVkID09PSBudWxsIHx8IHR5cGVvZiBleHBlY3RlZCAhPT0gJ29iamVjdCcpKSB7CiAgICByZXR1cm4gc3RyaWN0ID8gYWN0dWFsID09PSBleHBlY3RlZCA6IGFjdHVhbCA9PSBleHBlY3RlZDsKCiAgLy8gSWYgYm90aCB2YWx1ZXMgYXJlIGluc3RhbmNlcyBvZiB0eXBlZCBhcnJheXMsIHdyYXAgdGhlaXIgdW5kZXJseWluZwogIC8vIEFycmF5QnVmZmVycyBpbiBhIEJ1ZmZlciBlYWNoIHRvIGluY3JlYXNlIHBlcmZvcm1hbmNlCiAgLy8gVGhpcyBvcHRpbWl6YXRpb24gcmVxdWlyZXMgdGhlIGFycmF5cyB0byBoYXZlIHRoZSBzYW1lIHR5cGUgYXMgY2hlY2tlZCBieQogIC8vIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgKGFrYSBwVG9TdHJpbmcpLiBOZXZlciBwZXJmb3JtIGJpbmFyeQogIC8vIGNvbXBhcmlzb25zIGZvciBGbG9hdCpBcnJheXMsIHRob3VnaCwgc2luY2UgZS5nLiArMCA9PT0gLTAgYnV0IHRoZWlyCiAgLy8gYml0IHBhdHRlcm5zIGFyZSBub3QgaWRlbnRpY2FsLgogIH0gZWxzZSBpZiAoaXNWaWV3KGFjdHVhbCkgJiYgaXNWaWV3KGV4cGVjdGVkKSAmJgogICAgICAgICAgICAgcFRvU3RyaW5nKGFjdHVhbCkgPT09IHBUb1N0cmluZyhleHBlY3RlZCkgJiYKICAgICAgICAgICAgICEoYWN0dWFsIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5IHx8CiAgICAgICAgICAgICAgIGFjdHVhbCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkpIHsKICAgIHJldHVybiBjb21wYXJlKG5ldyBVaW50OEFycmF5KGFjdHVhbC5idWZmZXIpLAogICAgICAgICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWQuYnVmZmVyKSkgPT09IDA7CgogIC8vIDcuNSBGb3IgYWxsIG90aGVyIE9iamVjdCBwYWlycywgaW5jbHVkaW5nIEFycmF5IG9iamVjdHMsIGVxdWl2YWxlbmNlIGlzCiAgLy8gZGV0ZXJtaW5lZCBieSBoYXZpbmcgdGhlIHNhbWUgbnVtYmVyIG9mIG93bmVkIHByb3BlcnRpZXMgKGFzIHZlcmlmaWVkCiAgLy8gd2l0aCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwpLCB0aGUgc2FtZSBzZXQgb2Yga2V5cwogIC8vIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgb3JkZXIpLCBlcXVpdmFsZW50IHZhbHVlcyBmb3IgZXZlcnkKICAvLyBjb3JyZXNwb25kaW5nIGtleSwgYW5kIGFuIGlkZW50aWNhbCAncHJvdG90eXBlJyBwcm9wZXJ0eS4gTm90ZTogdGhpcwogIC8vIGFjY291bnRzIGZvciBib3RoIG5hbWVkIGFuZCBpbmRleGVkIHByb3BlcnRpZXMgb24gQXJyYXlzLgogIH0gZWxzZSBpZiAoaXNCdWZmZXIoYWN0dWFsKSAhPT0gaXNCdWZmZXIoZXhwZWN0ZWQpKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfSBlbHNlIHsKICAgIG1lbW9zID0gbWVtb3MgfHwge2FjdHVhbDogW10sIGV4cGVjdGVkOiBbXX07CgogICAgdmFyIGFjdHVhbEluZGV4ID0gbWVtb3MuYWN0dWFsLmluZGV4T2YoYWN0dWFsKTsKICAgIGlmIChhY3R1YWxJbmRleCAhPT0gLTEpIHsKICAgICAgaWYgKGFjdHVhbEluZGV4ID09PSBtZW1vcy5leHBlY3RlZC5pbmRleE9mKGV4cGVjdGVkKSkgewogICAgICAgIHJldHVybiB0cnVlOwogICAgICB9CiAgICB9CgogICAgbWVtb3MuYWN0dWFsLnB1c2goYWN0dWFsKTsKICAgIG1lbW9zLmV4cGVjdGVkLnB1c2goZXhwZWN0ZWQpOwoKICAgIHJldHVybiBvYmpFcXVpdihhY3R1YWwsIGV4cGVjdGVkLCBzdHJpY3QsIG1lbW9zKTsKICB9Cn0KCmZ1bmN0aW9uIGlzQXJndW1lbnRzKG9iamVjdCkgewogIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PSAnW29iamVjdCBBcmd1bWVudHNdJzsKfQoKZnVuY3Rpb24gb2JqRXF1aXYoYSwgYiwgc3RyaWN0LCBhY3R1YWxWaXNpdGVkT2JqZWN0cykgewogIGlmIChhID09PSBudWxsIHx8IGEgPT09IHVuZGVmaW5lZCB8fCBiID09PSBudWxsIHx8IGIgPT09IHVuZGVmaW5lZCkKICAgIHJldHVybiBmYWxzZTsKICAvLyBpZiBvbmUgaXMgYSBwcmltaXRpdmUsIHRoZSBvdGhlciBtdXN0IGJlIHNhbWUKICBpZiAodXRpbC5pc1ByaW1pdGl2ZShhKSB8fCB1dGlsLmlzUHJpbWl0aXZlKGIpKQogICAgcmV0dXJuIGEgPT09IGI7CiAgaWYgKHN0cmljdCAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYSkgIT09IE9iamVjdC5nZXRQcm90b3R5cGVPZihiKSkKICAgIHJldHVybiBmYWxzZTsKICB2YXIgYUlzQXJncyA9IGlzQXJndW1lbnRzKGEpOwogIHZhciBiSXNBcmdzID0gaXNBcmd1bWVudHMoYik7CiAgaWYgKChhSXNBcmdzICYmICFiSXNBcmdzKSB8fCAoIWFJc0FyZ3MgJiYgYklzQXJncykpCiAgICByZXR1cm4gZmFsc2U7CiAgaWYgKGFJc0FyZ3MpIHsKICAgIGEgPSBwU2xpY2UuY2FsbChhKTsKICAgIGIgPSBwU2xpY2UuY2FsbChiKTsKICAgIHJldHVybiBfZGVlcEVxdWFsKGEsIGIsIHN0cmljdCk7CiAgfQogIHZhciBrYSA9IG9iamVjdEtleXMoYSk7CiAgdmFyIGtiID0gb2JqZWN0S2V5cyhiKTsKICB2YXIga2V5LCBpOwogIC8vIGhhdmluZyB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcyAoa2V5cyBpbmNvcnBvcmF0ZXMKICAvLyBoYXNPd25Qcm9wZXJ0eSkKICBpZiAoa2EubGVuZ3RoICE9PSBrYi5sZW5ndGgpCiAgICByZXR1cm4gZmFsc2U7CiAgLy90aGUgc2FtZSBzZXQgb2Yga2V5cyAoYWx0aG91Z2ggbm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIG9yZGVyKSwKICBrYS5zb3J0KCk7CiAga2Iuc29ydCgpOwogIC8vfn5+Y2hlYXAga2V5IHRlc3QKICBmb3IgKGkgPSBrYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewogICAgaWYgKGthW2ldICE9PSBrYltpXSkKICAgICAgcmV0dXJuIGZhbHNlOwogIH0KICAvL2VxdWl2YWxlbnQgdmFsdWVzIGZvciBldmVyeSBjb3JyZXNwb25kaW5nIGtleSwgYW5kCiAgLy9+fn5wb3NzaWJseSBleHBlbnNpdmUgZGVlcCB0ZXN0CiAgZm9yIChpID0ga2EubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgIGtleSA9IGthW2ldOwogICAgaWYgKCFfZGVlcEVxdWFsKGFba2V5XSwgYltrZXldLCBzdHJpY3QsIGFjdHVhbFZpc2l0ZWRPYmplY3RzKSkKICAgICAgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gdHJ1ZTsKfQoKLy8gOC4gVGhlIG5vbi1lcXVpdmFsZW5jZSBhc3NlcnRpb24gdGVzdHMgZm9yIGFueSBkZWVwIGluZXF1YWxpdHkuCi8vIGFzc2VydC5ub3REZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpOwoKYXNzZXJ0Lm5vdERlZXBFcXVhbCA9IGZ1bmN0aW9uIG5vdERlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CiAgaWYgKF9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZmFsc2UpKSB7CiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdub3REZWVwRXF1YWwnLCBhc3NlcnQubm90RGVlcEVxdWFsKTsKICB9Cn07Cgphc3NlcnQubm90RGVlcFN0cmljdEVxdWFsID0gbm90RGVlcFN0cmljdEVxdWFsOwpmdW5jdGlvbiBub3REZWVwU3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgewogIGlmIChfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHRydWUpKSB7CiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdub3REZWVwU3RyaWN0RXF1YWwnLCBub3REZWVwU3RyaWN0RXF1YWwpOwogIH0KfQoKCi8vIDkuIFRoZSBzdHJpY3QgZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIHN0cmljdCBlcXVhbGl0eSwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uCi8vIGFzc2VydC5zdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7Cgphc3NlcnQuc3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBzdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CiAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHsKICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJz09PScsIGFzc2VydC5zdHJpY3RFcXVhbCk7CiAgfQp9OwoKLy8gMTAuIFRoZSBzdHJpY3Qgbm9uLWVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBmb3Igc3RyaWN0IGluZXF1YWxpdHksIGFzCi8vIGRldGVybWluZWQgYnkgIT09LiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTsKCmFzc2VydC5ub3RTdHJpY3RFcXVhbCA9IGZ1bmN0aW9uIG5vdFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHsKICBpZiAoYWN0dWFsID09PSBleHBlY3RlZCkgewogICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnIT09JywgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKTsKICB9Cn07CgpmdW5jdGlvbiBleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSB7CiAgaWYgKCFhY3R1YWwgfHwgIWV4cGVjdGVkKSB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGV4cGVjdGVkKSA9PSAnW29iamVjdCBSZWdFeHBdJykgewogICAgcmV0dXJuIGV4cGVjdGVkLnRlc3QoYWN0dWFsKTsKICB9CgogIHRyeSB7CiAgICBpZiAoYWN0dWFsIGluc3RhbmNlb2YgZXhwZWN0ZWQpIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgfSBjYXRjaCAoZSkgewogICAgLy8gSWdub3JlLiAgVGhlIGluc3RhbmNlb2YgY2hlY2sgZG9lc24ndCB3b3JrIGZvciBhcnJvdyBmdW5jdGlvbnMuCiAgfQoKICBpZiAoRXJyb3IuaXNQcm90b3R5cGVPZihleHBlY3RlZCkpIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgogIHJldHVybiBleHBlY3RlZC5jYWxsKHt9LCBhY3R1YWwpID09PSB0cnVlOwp9CgpmdW5jdGlvbiBfdHJ5QmxvY2soYmxvY2spIHsKICB2YXIgZXJyb3I7CiAgdHJ5IHsKICAgIGJsb2NrKCk7CiAgfSBjYXRjaCAoZSkgewogICAgZXJyb3IgPSBlOwogIH0KICByZXR1cm4gZXJyb3I7Cn0KCmZ1bmN0aW9uIF90aHJvd3Moc2hvdWxkVGhyb3csIGJsb2NrLCBleHBlY3RlZCwgbWVzc2FnZSkgewogIHZhciBhY3R1YWw7CgogIGlmICh0eXBlb2YgYmxvY2sgIT09ICdmdW5jdGlvbicpIHsKICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJyJibG9jayIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7CiAgfQoKICBpZiAodHlwZW9mIGV4cGVjdGVkID09PSAnc3RyaW5nJykgewogICAgbWVzc2FnZSA9IGV4cGVjdGVkOwogICAgZXhwZWN0ZWQgPSBudWxsOwogIH0KCiAgYWN0dWFsID0gX3RyeUJsb2NrKGJsb2NrKTsKCiAgbWVzc2FnZSA9IChleHBlY3RlZCAmJiBleHBlY3RlZC5uYW1lID8gJyAoJyArIGV4cGVjdGVkLm5hbWUgKyAnKS4nIDogJy4nKSArCiAgICAgICAgICAgIChtZXNzYWdlID8gJyAnICsgbWVzc2FnZSA6ICcuJyk7CgogIGlmIChzaG91bGRUaHJvdyAmJiAhYWN0dWFsKSB7CiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsICdNaXNzaW5nIGV4cGVjdGVkIGV4Y2VwdGlvbicgKyBtZXNzYWdlKTsKICB9CgogIHZhciB1c2VyUHJvdmlkZWRNZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnOwogIHZhciBpc1Vud2FudGVkRXhjZXB0aW9uID0gIXNob3VsZFRocm93ICYmIHV0aWwuaXNFcnJvcihhY3R1YWwpOwogIHZhciBpc1VuZXhwZWN0ZWRFeGNlcHRpb24gPSAhc2hvdWxkVGhyb3cgJiYgYWN0dWFsICYmICFleHBlY3RlZDsKCiAgaWYgKChpc1Vud2FudGVkRXhjZXB0aW9uICYmCiAgICAgIHVzZXJQcm92aWRlZE1lc3NhZ2UgJiYKICAgICAgZXhwZWN0ZWRFeGNlcHRpb24oYWN0dWFsLCBleHBlY3RlZCkpIHx8CiAgICAgIGlzVW5leHBlY3RlZEV4Y2VwdGlvbikgewogICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCAnR290IHVud2FudGVkIGV4Y2VwdGlvbicgKyBtZXNzYWdlKTsKICB9CgogIGlmICgoc2hvdWxkVGhyb3cgJiYgYWN0dWFsICYmIGV4cGVjdGVkICYmCiAgICAgICFleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSkgfHwgKCFzaG91bGRUaHJvdyAmJiBhY3R1YWwpKSB7CiAgICB0aHJvdyBhY3R1YWw7CiAgfQp9CgovLyAxMS4gRXhwZWN0ZWQgdG8gdGhyb3cgYW4gZXJyb3I6Ci8vIGFzc2VydC50aHJvd3MoYmxvY2ssIEVycm9yX29wdCwgbWVzc2FnZV9vcHQpOwoKYXNzZXJ0LnRocm93cyA9IGZ1bmN0aW9uKGJsb2NrLCAvKm9wdGlvbmFsKi9lcnJvciwgLypvcHRpb25hbCovbWVzc2FnZSkgewogIF90aHJvd3ModHJ1ZSwgYmxvY2ssIGVycm9yLCBtZXNzYWdlKTsKfTsKCi8vIEVYVEVOU0lPTiEgVGhpcyBpcyBhbm5veWluZyB0byB3cml0ZSBvdXRzaWRlIHRoaXMgbW9kdWxlLgphc3NlcnQuZG9lc05vdFRocm93ID0gZnVuY3Rpb24oYmxvY2ssIC8qb3B0aW9uYWwqL2Vycm9yLCAvKm9wdGlvbmFsKi9tZXNzYWdlKSB7CiAgX3Rocm93cyhmYWxzZSwgYmxvY2ssIGVycm9yLCBtZXNzYWdlKTsKfTsKCmFzc2VydC5pZkVycm9yID0gZnVuY3Rpb24oZXJyKSB7IGlmIChlcnIpIHRocm93IGVycjsgfTsKCnZhciBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG9iaikgewogIHZhciBrZXlzID0gW107CiAgZm9yICh2YXIga2V5IGluIG9iaikgewogICAgaWYgKGhhc093bi5jYWxsKG9iaiwga2V5KSkga2V5cy5wdXNoKGtleSk7CiAgfQogIHJldHVybiBrZXlzOwp9OwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oNykpKQoKLyoqKi8gfSksCi8qIDg5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyBOb3RlOiBhZGxlcjMyIHRha2VzIDEyJSBmb3IgbGV2ZWwgMCBhbmQgMiUgZm9yIGxldmVsIDYuCi8vIEl0IGlzbid0IHdvcnRoIGl0IHRvIG1ha2UgYWRkaXRpb25hbCBvcHRpbWl6YXRpb25zIGFzIGluIG9yaWdpbmFsLgovLyBTbWFsbCBzaXplIGlzIHByZWZlcmFibGUuCgovLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW4KLy8KLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi8vCi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAovLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLy8KLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZQovLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQovLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgovLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgoKZnVuY3Rpb24gYWRsZXIzMihhZGxlciwgYnVmLCBsZW4sIHBvcykgewogIHZhciBzMSA9IChhZGxlciAmIDB4ZmZmZikgfDAsCiAgICAgIHMyID0gKChhZGxlciA+Pj4gMTYpICYgMHhmZmZmKSB8MCwKICAgICAgbiA9IDA7CgogIHdoaWxlIChsZW4gIT09IDApIHsKICAgIC8vIFNldCBsaW1pdCB+IHR3aWNlIGxlc3MgdGhhbiA1NTUyLCB0byBrZWVwCiAgICAvLyBzMiBpbiAzMS1iaXRzLCBiZWNhdXNlIHdlIGZvcmNlIHNpZ25lZCBpbnRzLgogICAgLy8gaW4gb3RoZXIgY2FzZSAlPSB3aWxsIGZhaWwuCiAgICBuID0gbGVuID4gMjAwMCA/IDIwMDAgOiBsZW47CiAgICBsZW4gLT0gbjsKCiAgICBkbyB7CiAgICAgIHMxID0gKHMxICsgYnVmW3BvcysrXSkgfDA7CiAgICAgIHMyID0gKHMyICsgczEpIHwwOwogICAgfSB3aGlsZSAoLS1uKTsKCiAgICBzMSAlPSA2NTUyMTsKICAgIHMyICU9IDY1NTIxOwogIH0KCiAgcmV0dXJuIChzMSB8IChzMiA8PCAxNikpIHwwOwp9CgoKbW9kdWxlLmV4cG9ydHMgPSBhZGxlcjMyOwoKCi8qKiovIH0pLAovKiA5MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKLy8gTm90ZTogd2UgY2FuJ3QgZ2V0IHNpZ25pZmljYW50IHNwZWVkIGJvb3N0IGhlcmUuCi8vIFNvIHdyaXRlIGNvZGUgdG8gbWluaW1pemUgc2l6ZSAtIG5vIHByZWdlbmVyYXRlZCB0YWJsZXMKLy8gYW5kIGFycmF5IHRvb2xzIGRlcGVuZGVuY2llcy4KCi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcgovLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpbgovLwovLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAovLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMKLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KLy8KLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsCi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQKLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgovLwovLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdAovLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlCi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlCi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUKLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uCgovLyBVc2Ugb3JkaW5hcnkgYXJyYXksIHNpbmNlIHVudHlwZWQgbWFrZXMgbm8gYm9vc3QgaGVyZQpmdW5jdGlvbiBtYWtlVGFibGUoKSB7CiAgdmFyIGMsIHRhYmxlID0gW107CgogIGZvciAodmFyIG4gPSAwOyBuIDwgMjU2OyBuKyspIHsKICAgIGMgPSBuOwogICAgZm9yICh2YXIgayA9IDA7IGsgPCA4OyBrKyspIHsKICAgICAgYyA9ICgoYyAmIDEpID8gKDB4RURCODgzMjAgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTsKICAgIH0KICAgIHRhYmxlW25dID0gYzsKICB9CgogIHJldHVybiB0YWJsZTsKfQoKLy8gQ3JlYXRlIHRhYmxlIG9uIGxvYWQuIEp1c3QgMjU1IHNpZ25lZCBsb25ncy4gTm90IGEgcHJvYmxlbS4KdmFyIGNyY1RhYmxlID0gbWFrZVRhYmxlKCk7CgoKZnVuY3Rpb24gY3JjMzIoY3JjLCBidWYsIGxlbiwgcG9zKSB7CiAgdmFyIHQgPSBjcmNUYWJsZSwKICAgICAgZW5kID0gcG9zICsgbGVuOwoKICBjcmMgXj0gLTE7CgogIGZvciAodmFyIGkgPSBwb3M7IGkgPCBlbmQ7IGkrKykgewogICAgY3JjID0gKGNyYyA+Pj4gOCkgXiB0WyhjcmMgXiBidWZbaV0pICYgMHhGRl07CiAgfQoKICByZXR1cm4gKGNyYyBeICgtMSkpOyAvLyA+Pj4gMDsKfQoKCm1vZHVsZS5leHBvcnRzID0gY3JjMzI7CgoKLyoqKi8gfSksCi8qIDkxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gW1siYTE0MCIsIu6ThiIsNjJdLFsiYTE4MCIsIu6UhSIsMzJdLFsiYTI0MCIsIu6UpiIsNjJdLFsiYTI4MCIsIu6VpSIsMzJdLFsiYTJhYiIsIu6dpiIsNV0sWyJhMmUzIiwi4oKs7p2tIl0sWyJhMmVmIiwi7p2u7p2vIl0sWyJhMmZkIiwi7p2w7p2xIl0sWyJhMzQwIiwi7paGIiw2Ml0sWyJhMzgwIiwi7peFIiwzMSwi44CAIl0sWyJhNDQwIiwi7pemIiw2Ml0sWyJhNDgwIiwi7pilIiwzMl0sWyJhNGY0Iiwi7p2yIiwxMF0sWyJhNTQwIiwi7pmGIiw2Ml0sWyJhNTgwIiwi7pqFIiwzMl0sWyJhNWY3Iiwi7p29Iiw3XSxbImE2NDAiLCLumqYiLDYyXSxbImE2ODAiLCLum6UiLDMyXSxbImE2YjkiLCLunoUiLDddLFsiYTZkOSIsIu6ejSIsNl0sWyJhNmVjIiwi7p6U7p6VIl0sWyJhNmYzIiwi7p6WIl0sWyJhNmY2Iiwi7p6XIiw4XSxbImE3NDAiLCLunIYiLDYyXSxbImE3ODAiLCLunYUiLDMyXSxbImE3YzIiLCLunqAiLDE0XSxbImE3ZjIiLCLunq8iLDEyXSxbImE4OTYiLCLunrwiLDEwXSxbImE4YmMiLCLun4ciXSxbImE4YmYiLCLHuSJdLFsiYThjMSIsIu6fie6fiu6fi+6fjCJdLFsiYThlYSIsIu6fjSIsMjBdLFsiYTk1OCIsIu6foiJdLFsiYTk1YiIsIu6foyJdLFsiYTk1ZCIsIu6fpO6fpe6fpiJdLFsiYTk4OSIsIuOAvuK/sCIsMTFdLFsiYTk5NyIsIu6ftCIsMTJdLFsiYTlmMCIsIu6ggSIsMTRdLFsiYWFhMSIsIu6AgCIsOTNdLFsiYWJhMSIsIu6BniIsOTNdLFsiYWNhMSIsIu6CvCIsOTNdLFsiYWRhMSIsIu6EmiIsOTNdLFsiYWVhMSIsIu6FuCIsOTNdLFsiYWZhMSIsIu6HliIsOTNdLFsiZDdmYSIsIu6gkCIsNF0sWyJmOGExIiwi7oi0Iiw5M10sWyJmOWExIiwi7oqSIiw5M10sWyJmYWExIiwi7ouwIiw5M10sWyJmYmExIiwi7o2OIiw5M10sWyJmY2ExIiwi7o6sIiw5M10sWyJmZGExIiwi7pCKIiw5M10sWyJmZTUwIiwi4rqB7qCW7qCX7qCY4rqE45Gz45GH4rqI4rqL7qCe45ae45ia45iO4rqM4rqX46Wu46SY7qCm46eP46ef46mz46eQ7qCr7qCs462O47Gu47Og4rqn7qCx7qCy4rqq5IGW5IWf4rqu5Iy34rqz4rq24rq37qC75I6x5I6s4rq75I+d5JOW5Jmh5JmM7qGDIl0sWyJmZTgwIiwi5Jyj5Jyp5J285J6N4ruK5KWH5KW65KW95KaC5KaD5KaF5KaG5Kaf5Kab5Ka35Ka27qGU7qGV5LKj5LKf5LKg5LKh5LG35LKi5LSTIiw2LCLktq7uoaTukagiLDkzXV0KCi8qKiovIH0pLAovKiA5MiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IFtbIjAiLCJcdTAwMDAiLDEyN10sWyJhMTQwIiwi44CA77yM44CB44CC77yO4oCn77yb77ya77yf77yB77iw4oCm4oCl77mQ77mR77mSwrfvuZTvuZXvuZbvuZfvvZzigJPvuLHigJTvuLPilbTvuLTvuY/vvIjvvInvuLXvuLbvvZvvvZ3vuLfvuLjjgJTjgJXvuLnvuLrjgJDjgJHvuLvvuLzjgIrjgIvvuL3vuL7jgIjjgInvuL/vuYDjgIzjgI3vuYHvuYLjgI7jgI/vuYPvuYTvuZnvuZoiXSxbImExYTEiLCLvuZvvuZzvuZ3vuZ7igJjigJnigJzigJ3jgJ3jgJ7igLXigLLvvIPvvIbvvIrigLvCp+OAg+KXi+KXj+KWs+KWsuKXjuKYhuKYheKXh+KXhuKWoeKWoOKWveKWvOOKo+KEhcKv77+j77y/y43vuYnvuYrvuY3vuY7vuYvvuYzvuZ/vuaDvuaHvvIvvvI3Dl8O3wrHiiJrvvJzvvJ7vvJ3iiabiiafiiaDiiJ7iiZLiiaHvuaIiLDQsIu+9nuKIqeKIquKKpeKIoOKIn+KKv+OPkuOPkeKIq+KIruKIteKItOKZgOKZguKKleKKmeKGkeKGk+KGkOKGkuKGluKGl+KGmeKGmOKIpeKIo++8jyJdLFsiYTI0MCIsIu+8vOKIle+5qO+8hO+/peOAku+/oO+/oe+8he+8oOKEg+KEie+5qe+5qu+5q+OPleOOnOOOneOOnuOPjuOOoeOOjuOOj+OPhMKw5YWZ5YWb5YWe5YWd5YWh5YWj5Zen55Op57OO4paBIiw3LCLilo/ilo7ilo3ilozilovilorilonilLzilLTilKzilKTilJzilpTilIDilILilpXilIzilJDilJTilJjila0iXSxbImEyYTEiLCLila7ilbDila/ilZDilZ7ilarilaHil6Lil6Pil6Xil6TilbHilbLilbPvvJAiLDksIuKFoCIsOSwi44ChIiw4LCLljYHljYTljYXvvKEiLDI1LCLvvYEiLDIxXSxbImEzNDAiLCLvvZfvvZjvvZnvvZrOkSIsMTYsIs6jIiw2LCLOsSIsMTYsIs+DIiw2LCLjhIUiLDEwXSxbImEzYTEiLCLjhJAiLDI1LCLLmcuJy4rLh8uLIl0sWyJhM2UxIiwi4oKsIl0sWyJhNDQwIiwi5LiA5LmZ5LiB5LiD5LmD5Lmd5LqG5LqM5Lq65YS/5YWl5YWr5Yeg5YiA5YiB5Yqb5YyV5Y2B5Y2c5Y+I5LiJ5LiL5LiI5LiK5Lir5Li45Yeh5LmF5LmI5Lmf5Lme5LqO5Lqh5YWA5YiD5Yu65Y2D5Y+J5Y+j5Zyf5aOr5aSV5aSn5aWz5a2Q5a2R5a2T5a+45bCP5bCi5bC45bGx5bed5bel5bex5bey5bez5be+5bmy5bu+5byL5byT5omNIl0sWyJhNGExIiwi5LiR5LiQ5LiN5Lit5Liw5Li55LmL5bC55LqI5LqR5LqV5LqS5LqU5Lqi5LuB5LuA5LuD5LuG5LuH5LuN5LuK5LuL5LuE5YWD5YWB5YWn5YWt5YWu5YWs5YaX5Ye25YiG5YiH5YiI5Yu75Yu+5Yu/5YyW5Yy55Y2I5Y2H5Y2F5Y2e5Y6E5Y+L5Y+K5Y+N5aOs5aSp5aSr5aSq5aSt5a2U5bCR5bCk5bC65bGv5be05bm75bu/5byU5byV5b+D5oiI5oi25omL5omO5pSv5paH5paX5pak5pa55pel5puw5pyI5pyo5qyg5q2i5q255q+L5q+U5q+b5rCP5rC054Gr54iq54i254i754mH54mZ54mb54qs546L5LiZIl0sWyJhNTQwIiwi5LiW5LiV5LiU5LiY5Li75LmN5LmP5LmO5Lul5LuY5LuU5LuV5LuW5LuX5Luj5Luk5LuZ5Lue5YWF5YWE5YaJ5YaK5Yas5Ye55Ye65Ye45YiK5Yqg5Yqf5YyF5YyG5YyX5Yyd5Luf5Y2K5Y2J5Y2h5Y2g5Y2v5Y2u5Y675Y+v5Y+k5Y+z5Y+s5Y+u5Y+p5Y+o5Y+85Y+45Y+15Y+r5Y+m5Y+q5Y+y5Y+x5Y+w5Y+l5Y+t5Y+75Zub5Zua5aSWIl0sWyJhNWExIiwi5aSu5aSx5aW05aW25a2V5a6D5bC85beo5ben5bem5biC5biD5bmz5bm85byB5byY5byX5b+F5oiK5omT5omU5omS5omR5pal5pem5pyu5pys5pyq5pyr5pyt5q2j5q+N5rCR5rCQ5rC45rGB5rGA5rC+54qv546E546J55Oc55Om55SY55Sf55So55Sp55Sw55Sx55Sy55Sz55aL55m955qu55q/55uu55+b55+i55+z56S656a+56m056uL5Lie5Lif5LmS5LmT5Lmp5LqZ5Lqk5Lqm5Lql5Lu/5LyJ5LyZ5LyK5LyV5LyN5LyQ5LyR5LyP5Luy5Lu25Lu75Luw5Luz5Lu95LyB5LyL5YWJ5YWH5YWG5YWI5YWoIl0sWyJhNjQwIiwi5YWx5YaN5Yaw5YiX5YiR5YiS5YiO5YiW5Yqj5YyI5Yyh5Yyg5Y2w5Y2x5ZCJ5ZCP5ZCM5ZCK5ZCQ5ZCB5ZCL5ZCE5ZCR5ZCN5ZCI5ZCD5ZCO5ZCG5ZCS5Zug5Zue5Zud5Zyz5Zyw5Zyo5Zyt5Zys5Zyv5Zyp5aSZ5aSa5aS35aS45aaE5aW45aaD5aW95aW55aaC5aaB5a2X5a2Y5a6H5a6I5a6F5a6J5a+65bCW5bG55bee5biG5bm25bm0Il0sWyJhNmExIiwi5byP5byb5b+Z5b+W5oiO5oiM5oiN5oiQ5omj5omb5omY5pS25pep5peo5pes5pet5puy5puz5pyJ5py95py05pyx5py15qyh5q2k5q275rCW5rGd5rGX5rGZ5rGf5rGg5rGQ5rGV5rGh5rGb5rGN5rGO54Gw54mf54md55m+56u557Gz57O457y2576K57696ICB6ICD6ICM6ICS6ICz6IG/6IKJ6IKL6IKM6Iej6Ieq6Iez6Ie86IiM6Iib6Iif6Imu6Imy6Im+6Jmr6KGA6KGM6KGj6KW/6Zih5Liy5Lqo5L2N5L2P5L2H5L2X5L2e5Ly05L2b5L2V5Lyw5L2Q5L2R5Ly95Ly65Ly45L2D5L2U5Ly85L2G5L2jIl0sWyJhNzQwIiwi5L2c5L2g5Lyv5L2O5Ly25L2Z5L2d5L2I5L2a5YWM5YWL5YWN5YW15Ya25Ya35Yil5Yik5Yip5Yiq5Yio5Yqr5Yqp5Yqq5Yqs5Yyj5Y2z5Y215ZCd5ZCt5ZCe5ZC+5ZCm5ZGO5ZCn5ZGG5ZGD5ZCz5ZGI5ZGC5ZCb5ZCp5ZGK5ZC55ZC75ZC45ZCu5ZC15ZC25ZCg5ZC85ZGA5ZCx5ZCr5ZCf5ZCs5Zuq5Zuw5Zuk5Zur5Z2K5Z2R5Z2A5Z2NIl0sWyJhN2ExIiwi5Z2H5Z2O5Zy+5Z2Q5Z2P5Zy75aOv5aS+5aad5aaS5aao5aae5aaj5aaZ5aaW5aaN5aak5aaT5aaK5aal5a2d5a2c5a2a5a2b5a6M5a6L5a6P5bCs5bGA5bGB5bC/5bC+5bKQ5bKR5bKU5bKM5ber5biM5bqP5bqH5bqK5bu35byE5byf5b2k5b2i5b235b255b+Y5b+M5b+X5b+N5b+x5b+r5b+45b+q5oiS5oiR5oqE5oqX5oqW5oqA5om25oqJ5omt5oqK5om85om+5om55omz5oqS5omv5oqY5omu5oqV5oqT5oqR5oqG5pS55pS75pS45pex5pu05p2f5p2O5p2P5p2Q5p2R5p2c5p2W5p2e5p2J5p2G5p2gIl0sWyJhODQwIiwi5p2T5p2X5q2l5q+P5rGC5rGe5rKZ5rKB5rKI5rKJ5rKF5rKb5rGq5rG65rKQ5rGw5rKM5rGo5rKW5rKS5rG95rKD5rGy5rG+5rG05rKG5rG25rKN5rKU5rKY5rKC54G254G854G954G454mi54mh54mg54uE54uC546W55Ss55Sr55S355S455qC55uv55+j56eB56eA56a/56m257O7572V6IKW6IKT6IKd6IKY6IKb6IKa6IKy6Imv6IqSIl0sWyJhOGExIiwi6IqL6IqN6KaL6KeS6KiA6LC36LGG6LGV6LKd6LWk6LWw6Laz6Lqr6LuK6L6b6L6w6L+C6L+G6L+F6L+E5beh6YKR6YKi6YKq6YKm6YKj6YWJ6YeG6YeM6Ziy6Ziu6Zix6Ziq6Zis5Lim5LmW5Lmz5LqL5Lqb5Lqe5Lqr5Lqs5L2v5L6d5L6N5L2z5L2/5L2s5L6b5L6L5L6G5L6D5L2w5L215L6I5L2p5L275L6W5L2+5L6P5L6R5L265YWU5YWS5YWV5YWp5YW35YW25YW45Ya95Ye95Yi75Yi45Yi35Yi65Yiw5Yiu5Yi25YmB5Yq+5Yq75Y2S5Y2U5Y2T5Y2R5Y2m5Y235Y245Y255Y+W5Y+U5Y+X5ZGz5ZG1Il0sWyJhOTQwIiwi5ZKW5ZG45ZKV5ZKA5ZG75ZG35ZKE5ZKS5ZKG5ZG85ZKQ5ZGx5ZG25ZKM5ZKa5ZGi5ZGo5ZKL5ZG95ZKO5Zu65Z6D5Z235Z2q5Z2p5Z2h5Z2m5Z2k5Z285aSc5aWJ5aWH5aWI5aWE5aWU5aa+5aa75aeU5aa55aau5aeR5aeG5aeQ5aeN5aeL5aeT5aeK5aav5aaz5aeS5aeF5a2f5a2k5a2j5a6X5a6a5a6Y5a6c5a6Z5a6b5bCa5bGI5bGFIl0sWyJhOWExIiwi5bGG5bK35bKh5bK45bKp5bKr5bKx5bKz5biY5bia5biW5biV5bib5biR5bm45bqa5bqX5bqc5bqV5bqW5bu25bym5byn5byp5b6A5b6B5b2/5b285b+d5b+g5b+95b+15b+/5oCP5oCU5oCv5oC15oCW5oCq5oCV5oCh5oCn5oCp5oCr5oCb5oiW5oiV5oi/5oi+5omA5om/5ouJ5ouM5ouE5oq/5ouC5oq55ouS5oub5oqr5ouT5ouU5ouL5ouI5oqo5oq95oq85ouQ5ouZ5ouH5ouN5oq15oua5oqx5ouY5ouW5ouX5ouG5oqs5ouO5pS+5pan5pa85pe65piU5piT5piM5piG5piC5piO5piA5piP5piV5piKIl0sWyJhYTQwIiwi5piH5pyN5pyL5p2t5p6L5p6V5p2x5p6c5p2z5p235p6H5p6d5p6X5p2v5p2w5p2/5p6J5p2+5p6Q5p215p6a5p6T5p285p2q5p2y5qyj5q2m5q2n5q2/5rCT5rCb5rOj5rOo5rOz5rKx5rOM5rOl5rKz5rK95rK+5rK85rOi5rKr5rOV5rOT5rK45rOE5rK55rOB5rKu5rOX5rOF5rOx5rK/5rK75rOh5rOb5rOK5rKs5rOv5rOc5rOW5rOgIl0sWyJhYWExIiwi54KV54KO54KS54KK54KZ54is54it54i454mI54mn54mp54uA54uO54uZ54uX54uQ546p546o546f546r546l55S955ad55aZ55aa55qE55uC55uy55u055+l55+956S+56WA56WB56eJ56eI56m656m556u657O+572U576M576L6ICF6IK66IKl6IKi6IKx6IKh6IKr6IKp6IK06IKq6IKv6Iel6Ie+6IiN6Iqz6Iqd6IqZ6Iqt6Iq96Iqf6Iq56Iqx6Iqs6Iql6Iqv6Iq46Iqj6Iqw6Iq+6Iq36JmO6Jmx5Yid6KGo6LuL6L+O6L+U6L+R6YK16YK46YKx6YK26YeH6YeR6ZW36ZaA6Zic6ZmA6Zi/6Zi76ZmEIl0sWyJhYjQwIiwi6ZmC6Zq56Zuo6Z2S6Z2e5Lqf5Lqt5Lqu5L+h5L615L6v5L6/5L+g5L+R5L+P5L+d5L+D5L625L+Y5L+f5L+K5L+X5L6u5L+Q5L+E5L+C5L+a5L+O5L+e5L635YWX5YaS5YaR5Yag5YmO5YmD5YmK5YmN5YmM5YmL5YmH5YuH5YuJ5YuD5YuB5YyN5Y2X5Y275Y6a5Y+b5ZKs5ZOA5ZKo5ZOO5ZOJ5ZK45ZKm5ZKz5ZOH5ZOC5ZK95ZKq5ZOBIl0sWyJhYmExIiwi5ZOE5ZOI5ZKv5ZKr5ZKx5ZK75ZKp5ZKn5ZK/5Zu/5Z6C5Z6L5Z6g5Z6j5Z6i5Z+O5Z6u5Z6T5aWV5aWR5aWP5aWO5aWQ5aec5aeY5ae/5aej5aeo5aiD5ael5aeq5aea5aem5aiB5ae75a2p5a6j5a6m5a6k5a6i5a6l5bCB5bGO5bGP5bGN5bGL5bOZ5bOS5be35bid5bil5bif5bm95bqg5bqm5bu65byI5byt5b2l5b6I5b6F5b6K5b6L5b6H5b6M5b6J5oCS5oCd5oCg5oCl5oCO5oCo5oGN5oGw5oGo5oGi5oGG5oGD5oGs5oGr5oGq5oGk5omB5ouc5oyW5oyJ5ou85out5oyB5ouu5ou95oyH5oux5ou3Il0sWyJhYzQwIiwi5ouv5ous5ou+5ou05oyR5oyC5pS/5pWF5par5pa95pei5pil5pit5pig5pin5piv5pif5pio5pix5pik5pu35p+/5p+T5p+x5p+U5p+Q5p+s5p625p6v5p+15p+p5p+v5p+E5p+R5p605p+a5p+l5p645p+P5p+e5p+z5p6w5p+Z5p+i5p+d5p+S5q2q5q6D5q6G5q615q+S5q+X5rCf5rOJ5rSL5rSy5rSq5rWB5rSl5rSM5rSx5rSe5rSXIl0sWyJhY2ExIiwi5rS75rS95rS+5rS25rSb5rO15rS55rSn5rS45rSp5rSu5rS15rSO5rSr54Kr54K654Kz54Ks54Kv54Kt54K454Ku54Kk54iw54my54mv54m054up54ug54uh546354+K5467546y54+N54+A546z55Sa55St55WP55WM55WO55WL55ar55ak55al55ai55aj55m455qG55qH55qI55uI55uG55uD55uF55yB55u555u455yJ55yL55u+55u855yH55+c56CC56CU56CM56CN56WG56WJ56WI56WH56a556a656eR56eS56eL56m/56qB56u/56u957G957SC57SF57SA57SJ57SH57SE57SG57y4576O576/6ICEIl0sWyJhZDQwIiwi6ICQ6ICN6ICR6IC26IOW6IOl6IOa6IOD6IOE6IOM6IOh6IOb6IOO6IOe6IOk6IOd6Ie06Iii6Iun6IyD6IyF6Iuj6Iub6Ium6IyE6Iul6IyC6IyJ6IuS6IuX6Iux6IyB6Iuc6IuU6IuR6Iue6IuT6Iuf6Iuv6IyG6JmQ6Jm56Jm76Jm66KGN6KGr6KaB6KeU6KiI6KiC6KiD6LKe6LKg6LW06LWz6La06LuN6LuM6L+w6L+m6L+i6L+q6L+lIl0sWyJhZGExIiwi6L+t6L+r6L+k6L+o6YOK6YOO6YOB6YOD6YWL6YWK6YeN6ZaC6ZmQ6ZmL6ZmM6ZmN6Z2i6Z2p6Z+L6Z+t6Z+z6aCB6aKo6aOb6aOf6aaW6aaZ5LmY5Lqz5YCM5YCN5YCj5L+v5YCm5YCl5L+45YCp5YCW5YCG5YC85YCf5YCa5YCS5YCR5L+65YCA5YCU5YCo5L+x5YCh5YCL5YCZ5YCY5L+z5L+u5YCt5YCq5L++5YCr5YCJ5YW85Yak5Yal5Yai5YeN5YeM5YeG5YeL5YmW5Ymc5YmU5Ymb5Ymd5Yyq5Y2/5Y6f5Y6d5Y+f5ZOo5ZSQ5ZSB5ZS35ZO85ZOl5ZOy5ZSG5ZO65ZSU5ZOp5ZOt5ZOh5ZSJ5ZOu5ZOqIl0sWyJhZTQwIiwi5ZOm5ZSn5ZSH5ZO95ZSP5ZyD5ZyE5Z+C5Z+U5Z+L5Z+D5aCJ5aSP5aWX5aWY5aWa5aiR5aiY5aic5aif5aib5aiT5aes5aig5aij5aip5ail5aiM5aiJ5a2r5bGY5a6w5a6z5a625a605a6u5a615a655a645bCE5bGR5bGV5bGQ5bOt5bO95bO75bOq5bOo5bOw5bO25bSB5bO05beu5bit5bir5bqr5bqt5bqn5byx5b6S5b6R5b6Q5oGZIl0sWyJhZWExIiwi5oGj5oGl5oGQ5oGV5oGt5oGp5oGv5oKE5oKf5oKa5oKN5oKU5oKM5oKF5oKW5omH5ouz5oyI5ou/5o2O5oy+5oyv5o2V5o2C5o2G5o2P5o2J5oy65o2Q5oy95oyq5oyr5oyo5o2N5o2M5pWI5pWJ5paZ5peB5peF5pmC5pmJ5pmP5pmD5pmS5pmM5pmF5pmB5pu45pyU5pyV5pyX5qCh5qC45qGI5qGG5qGT5qC55qGC5qGU5qCp5qKz5qCX5qGM5qGR5qC95p+05qGQ5qGA5qC85qGD5qCq5qGF5qCT5qCY5qGB5q6K5q6J5q635rCj5rCn5rCo5rCm5rCk5rOw5rWq5raV5raI5raH5rWm5rW45rW35rWZ5raTIl0sWyJhZjQwIiwi5rWs5raJ5rWu5rWa5rW05rWp5raM5raK5rW55raF5rWl5raU54OK54OY54Ok54OZ54OI54OP54i554m554u854u554u954u454u3546G54+t55CJ54+u54+g54+q54+e55WU55Wd55Wc55Wa55WZ55a+55eF55eH55ay55az55a955a855a555eC55a455qL55qw55uK55uN55uO55yp55yf55yg55yo55+p56Cw56Cn56C456Cd56C056C3Il0sWyJhZmExIiwi56Cl56Ct56Cg56Cf56Cy56WV56WQ56Wg56Wf56WW56We56Wd56WX56Wa56ek56ej56en56ef56em56ep56eY56qE56qI56uZ56yG56yR57KJ57Sh57SX57SL57SK57Sg57Si57SU57SQ57SV57Sa57Sc57SN57SZ57Sb57y6572f576U57+F57+B6ICG6ICY6ICV6ICZ6ICX6IC96IC/6IOx6ISC6IOw6ISF6IOt6IO06ISG6IO46IOz6ISI6IO96ISK6IO86IOv6Iet6Ies6IiA6IiQ6Iiq6Iir6Iio6Iis6Iq76Iyr6I2S6I2U6I2K6Iy46I2Q6I2J6Iy16Iy06I2P6Iyy6Iy56Iy26IyX6I2A6Iyx6Iyo6I2DIl0sWyJiMDQwIiwi6JmU6JqK6Jqq6JqT6Jqk6Jqp6JqM6Jqj6Jqc6KGw6KG36KKB6KKC6KG96KG56KiY6KiQ6KiO6KiM6KiV6KiK6KiX6KiT6KiW6KiP6KiR6LGI6LG66LG56LKh6LKi6LW36Lqs6LuS6LuU6LuP6L6x6YCB6YCG6L+36YCA6L+66L+06YCD6L+96YCF6L+46YKV6YOh6YOd6YOi6YWS6YWN6YWM6YeY6Yed6YeX6Yec6YeZ6ZaD6Zmi6Zmj6ZmhIl0sWyJiMGExIiwi6Zmb6Zmd6Zmk6ZmY6Zme6Zq76aOi6aas6aqo6auY6ayl6ayy6ay85Lm+5YG65YG95YGc5YGH5YGD5YGM5YGa5YGJ5YGl5YG25YGO5YGV5YG15YG05YG35YGP5YCP5YGv5YGt5YWc5YaV5Yew5Ymq5Ymv5YuS5YuZ5YuY5YuV5YyQ5YyP5YyZ5Yy/5Y2A5Yy+5Y+D5pu85ZWG5ZWq5ZWm5ZWE5ZWe5ZWh5ZWD5ZWK5ZSx5ZWW5ZWP5ZWV5ZSv5ZWk5ZS45ZSu5ZWc5ZSs5ZWj5ZSz5ZWB5ZWX5ZyI5ZyL5ZyJ5Z+f5aCF5aCK5aCG5Z+g5Z+k5Z+65aCC5aC15Z+35Z+55aSg5aWi5ai25amB5amJ5amm5amq5amAIl0sWyJiMTQwIiwi5ai85ami5ama5amG5amK5a2w5a+H5a+F5a+E5a+C5a6/5a+G5bCJ5bCI5bCH5bGg5bGc5bGd5bSH5bSG5bSO5bSb5bSW5bSi5bSR5bSp5bSU5bSZ5bSk5bSn5bSX5bei5bi45bi25biz5bi35bq35bq45bq25bq15bq+5by15by35b2X5b2s5b2p5b2r5b6X5b6Z5b6e5b6Y5b6h5b6g5b6c5oG/5oKj5oKJ5oKg5oKo5oOL5oK05oOm5oK9Il0sWyJiMWExIiwi5oOF5oK75oK15oOc5oK85oOY5oOV5oOG5oOf5oK45oOa5oOH5oia5oib5omI5o6g5o6n5o2y5o6W5o6i5o6l5o235o2n5o6Y5o6q5o2x5o6p5o6J5o6D5o6b5o2r5o6o5o6E5o6I5o6Z5o6h5o6s5o6S5o6P5o6A5o275o2p5o2o5o265pWd5pWW5pWR5pWZ5pWX5ZWf5pWP5pWY5pWV5pWU5pac5pab5pas5peP5peL5peM5peO5pmd5pma5pmk5pmo5pmm5pme5pu55YuX5pyb5qKB5qKv5qKi5qKT5qK15qG/5qG25qKx5qKn5qKX5qKw5qKD5qOE5qKt5qKG5qKF5qKU5qKd5qKo5qKf5qKh5qKC5qyy5q66Il0sWyJiMjQwIiwi5q+r5q+s5rCr5raO5ra85rez5reZ5ray5reh5reM5rek5re75re65riF5reH5reL5rav5reR5rau5ree5re55ra45re35re15reF5reS5ria5ra15rea5rer5reY5req5rex5reu5reo5reG5reE5raq5res5ra/5rem54O554SJ54SK54O954Ov54i954m954qB54yc54yb54yW54yT54yZ546H55CF55CK55CD55CG54++55CN55Og55O2Il0sWyJiMmExIiwi55O355Sc55Si55Wl55Wm55Wi55Ww55aP55eU55eV55a155eK55eN55qO55uU55uS55ub55y355y+55y855y255y455y656Gr56GD56GO56Wl56Wo56Wt56e756qS56qV56yg56yo56yb56ys56ym56yZ56ye56yu57KS57KX57KV57WG57WD57Wx57Su57S557S857WA57Sw57Sz57WE57Sv57WC57Sy57Sx57y9576e576a57+M57+O57+S6ICc6IGK6IGG6ISv6ISW6ISj6ISr6ISp6ISw6ISk6IiC6Ii16Ii36Ii26Ii56I6O6I6e6I6Y6I246I6i6I6W6I696I6r6I6S6I6K6I6T6I6J6I6g6I236I276I28Il0sWyJiMzQwIiwi6I6G6I6n6JmV5b2q6JuH6JuA6Jq26JuE6Jq16JuG6JuL6Jqx6Jqv6JuJ6KGT6KKe6KKI6KKr6KKS6KKW6KKN6KKL6KaT6KaP6Kiq6Kid6Kij6Kil6Kix6Kit6Kif6Kib6Kii6LGJ6LGa6LKp6LKs6LKr6LKo6LKq6LKn6LWn6LWm6La+6La66Lub6Luf6YCZ6YCN6YCa6YCX6YCj6YCf6YCd6YCQ6YCV6YCe6YCg6YCP6YCi6YCW6YCb6YCUIl0sWyJiM2ExIiwi6YOo6YOt6YO96YWX6YeO6Ye16Yem6Yej6Yen6Yet6Yep6ZaJ6Zmq6Zm16Zmz6Zm46Zmw6Zm06Zm26Zm36Zms6ZuA6Zuq6Zup56ug56uf6aCC6aCD6a2a6bOl6bm16bm/6bql6bq75YKi5YKN5YKF5YKZ5YKR5YKA5YKW5YKY5YKa5pyA5Yex5Ymy5Ym05Ym15Ymp5Yue5Yud5Yub5Y2a5Y6l5ZW75ZaA5Zan5ZW85ZaK5Zad5ZaY5ZaC5Zac5Zaq5ZaU5ZaH5ZaL5ZaD5Zaz5Zau5Zaf5ZS+5Zay5Zaa5Za75Zas5Zax5ZW+5ZaJ5Zar5ZaZ5ZyN5aCv5aCq5aC05aCk5aCw5aCx5aCh5aCd5aCg5aO55aO65aWgIl0sWyJiNDQwIiwi5am35aqa5am/5aqS5aqb5aqn5a2z5a2x5a+S5a+M5a+T5a+Q5bCK5bCL5bCx5bWM5bWQ5bS05bWH5be95bmF5bi95bmA5bmD5bm+5buK5buB5buC5buE5by85b2t5b6p5b6q5b6o5oOR5oOh5oKy5oK25oOg5oSc5oSj5oO65oSV5oOw5oO75oO05oWo5oOx5oSO5oO25oSJ5oSA5oSS5oif5omJ5o6j5o6M5o+P5o+A5o+p5o+J5o+G5o+NIl0sWyJiNGExIiwi5o+S5o+j5o+Q5o+h5o+W5o+t5o+u5o225o+05o+q5o+b5pGS5o+a5o+55pWe5pWm5pWi5pWj5paR5paQ5pav5pmu5pmw5pm05pm25pmv5pqR5pm65pm+5pm35pu+5pu/5pyf5pyd5qO65qOV5qOg5qOY5qOX5qSF5qOf5qO15qOu5qOn5qO55qOS5qOy5qOj5qOL5qON5qSN5qSS5qSO5qOJ5qOa5qWu5qO75qy+5qy65qy95q6Y5q6W5q685q+v5rCu5rCv5rCs5riv5ri45rmU5rih5riy5rmn5rmK5rig5ril5rij5rib5rmb5rmY5rik5rmW5rmu5rit5rim5rmv5ri05rmN5ri65ris5rmD5rid5ri+5ruLIl0sWyJiNTQwIiwi5rqJ5riZ5rmO5rmj5rmE5rmy5rmp5rmf54SZ54Sa54Sm54Sw54Sh54S254Wu54Sc54mM54qE54qA54y254yl54y054yp55C655Cq55Cz55Ci55Cl55C155C255C055Cv55Cb55Cm55Co55Sl55Sm55Wr55Wq55ei55eb55ej55eZ55eY55ee55eg55m755m855qW55qT55q055uc552P55+t56Gd56Gs56Gv56iN56iI56iL56iF56iA56qYIl0sWyJiNWExIiwi56qX56qW56ul56uj562J562W562G562Q562S562U562N562L562P562R57Kf57Kl57We57WQ57Wo57WV57Sr57Wu57Wy57Wh57Wm57Wi57Ww57Wz5ZaE57+U57+V6ICL6IGS6IKF6IWV6IWU6IWL6IWR6IWO6IS56IWG6IS+6IWM6IWT6IW06IiS6Iic6I+p6JCD6I+46JCN6I+g6I+F6JCL6I+B6I+v6I+x6I+06JGX6JCK6I+w6JCM6I+M6I+96I+y6I+K6JC46JCO6JCE6I+c6JCH6I+U6I+f6Jmb6Juf6JuZ6Jut6JuU6Jub6Juk6JuQ6Jue6KGX6KOB6KOC6KKx6KaD6KaW6Ki76Kmg6KmV6Kme6Ki86KmBIl0sWyJiNjQwIiwi6KmU6Kmb6KmQ6KmG6Ki06Ki66Ki26KmW6LGh6LKC6LKv6LK86LKz6LK96LOB6LK76LOA6LK06LK36LK26LK/6LK46LaK6LaF6LaB6LeO6Led6LeL6Lea6LeR6LeM6Leb6LeG6Lu76Lu46Lu86L6c6YCu6YC16YCx6YC46YCy6YC26YSC6YO16YSJ6YO+6YWj6YWl6YeP6YiU6YiV6Yij6YiJ6Yie6YiN6YiQ6YiH6YiR6ZaU6ZaP6ZaL6ZaRIl0sWyJiNmExIiwi6ZaT6ZaS6ZaO6ZqK6ZqO6ZqL6Zm96ZqF6ZqG6ZqN6Zmy6ZqE6ZuB6ZuF6ZuE6ZuG6ZuH6Zuv6Zuy6Z+M6aCF6aCG6aCI6aOn6aOq6aOv6aOp6aOy6aOt6aau6aat6buD6buN6buR5LqC5YKt5YK15YKy5YKz5YOF5YK+5YKs5YK35YK75YKv5YOH5Ym/5Ym35Ym95Yuf5Yum5Yuk5Yui5Yuj5Yyv5Zef5Zeo5ZeT5Zem5ZeO5Zec5ZeH5ZeR5Zej5Zek5Zev5Zea5Zeh5ZeF5ZeG5Zel5ZeJ5ZyS5ZyT5aGe5aGR5aGY5aGX5aGa5aGU5aGr5aGM5aGt5aGK5aGi5aGS5aGL5aWn5auB5auJ5auM5aq+5aq95aq8Il0sWyJiNzQwIiwi5aqz5auC5aqy5bWp5bWv5bmM5bm55buJ5buI5byS5b2Z5b6s5b6u5oSa5oSP5oWI5oSf5oOz5oSb5oO55oSB5oSI5oWO5oWM5oWE5oWN5oS+5oS05oSn5oSN5oSG5oS35oih5oii5pCT5pC+5pCe5pCq5pCt5pC95pCs5pCP5pCc5pCU5pCN5pC25pCW5pCX5pCG5pWs5paf5paw5pqX5pqJ5pqH5pqI5pqW5pqE5pqY5pqN5pyD5qaU5qWtIl0sWyJiN2ExIiwi5qWa5qW35qWg5qWU5qW15qSw5qaC5qWK5qWo5qWr5qWe5qWT5qW55qaG5qWd5qWj5qWb5q2H5q2y5q+A5q6/5q+T5q+95rqi5rqv5ruT5rq25ruC5rqQ5rqd5ruH5ruF5rql5rqY5rq85rq65rqr5ruR5rqW5rqc5ruE5ruU5rqq5rqn5rq054WO54WZ54Wp54Wk54WJ54Wn54Wc54Ws54Wm54WM54Wl54We54WG54Wo54WW54i654mS54y3542F54y/54y+55Gv55Ga55GV55Gf55Ge55GB55C/55GZ55Gb55Gc55W255W455iA55ew55iB55ey55ex55e655e/55e055ez55ue55uf552b552r552m552e552jIl0sWyJiODQwIiwi5525552q552s552c552l552o552i55+u56KO56Kw56KX56KY56KM56KJ56G856KR56KT56G/56W656W/56aB6JCs56a956ic56ia56ig56iU56if56ie56qf56qg562356+A562g562u562n57Kx57Kz57K157aT57W557aR57aB57aP57Wb572u572p572q572y576p576o576k6IGW6IGY6IKG6IKE6IWx6IWw6IW46IWl6IWu6IWz6IWrIl0sWyJiOGExIiwi6IW56IW66IWm6IiF6ImH6JKC6JG36JC96JCx6JG16JGm6JGr6JGJ6JGs6JGb6JC86JC16JGh6JGj6JGp6JGt6JGG6Jme6Jmc6Jmf6Ju56JyT6JyI6JyH6JyA6Ju+6Ju76JyC6JyD6JyG6JyK6KGZ6KOf6KOU6KOZ6KOc6KOY6KOd6KOh6KOK6KOV6KOS6Kac6Kej6Kmr6Kmy6Kmz6Kmm6Kmp6Kmw6KqH6Km86Kmj6Kqg6Kmx6KqF6Kmt6Kmi6Kmu6Kms6Km56Km76Ki+6Kmo6LGi6LKK6LKJ6LOK6LOH6LOI6LOE6LKy6LOD6LOC6LOF6Leh6Lef6Leo6Lev6Lez6Le66Leq6Lek6Lem6Lqy6LyD6LyJ6Lu+6LyKIl0sWyJiOTQwIiwi6L6f6L6y6YGL6YGK6YGT6YGC6YGU6YC86YGV6YGQ6YGH6YGP6YGO6YGN6YGR6YC+6YGB6YSS6YSX6YWs6YWq6YWp6YeJ6Yi36YmX6Yi46Yi96YmA6Yi+6Ymb6YmL6Ymk6YmR6Yi06YmJ6YmN6YmF6Yi56Yi/6Yma6ZaY6ZqY6ZqU6ZqV6ZuN6ZuL6ZuJ6ZuK6Zu36Zu76Zu56Zu26Z2W6Z206Z226aCQ6aCR6aCT6aCK6aCS6aCM6aO86aO0Il0sWyJiOWExIiwi6aO96aO+6aaz6aax6aa06auh6bOp6bqC6byO6byT6byg5YOn5YOu5YOl5YOW5YOt5YOa5YOV5YOP5YOR5YOx5YOO5YOp5YWi5Yez5YqD5YqC5Yyx5Y6t5Ze+5ZiA5Zib5ZiX5Ze95ZiU5ZiG5ZiJ5ZiN5ZiO5Ze35ZiW5Zif5ZiI5ZiQ5Ze25ZyY5ZyW5aG15aG+5aKD5aKT5aKK5aG55aKF5aG95aO95aSl5aSi5aSk5aWq5aWp5auh5aum5aup5auX5auW5auY5auj5a215a+e5a+n5a+h5a+l5a+m5a+o5a+i5a+k5a+f5bCN5bGi5baE5baH5bmb5bmj5bmV5bmX5bmU5buT5buW5byK5b2G5b2w5b655oWHIl0sWyJiYTQwIiwi5oS/5oWL5oW35oWi5oWj5oWf5oWa5oWY5oW15oiq5pKH5pGY5pGU5pKk5pG45pGf5pG65pGR5pGn5pC05pGt5pG75pWy5pah5peX5peW5pqi5pqo5pqd5qac5qao5qaV5qeB5qau5qeT5qeL5qab5qa35qa75qar5qa05qeQ5qeN5qat5qeM5qam5qeD5qaj5q2J5q2M5rCz5ryz5ryU5ru+5ryT5ru05ryp5ry+5ryg5rys5ryP5ryC5ryiIl0sWyJiYWExIiwi5ru/5ruv5ryG5ryx5ry45ryy5ryj5ryV5ryr5ryv5r6I5ryq5rus5ryB5ruy5ruM5ru354aU54aZ54W954aK54aE54aS54i+54qS54qW542E542Q55Gk55Gj55Gq55Gw55Gt55SE55aR55in55iN55iL55iJ55iT55uh55uj556E5529552/552h56OB56Kf56Kn56Kz56Kp56Kj56aO56aP56aN56iu56ix56qq56qp56ut56uv566h566V566L5621566X566d566U566P5664566H566E57K557K957K+57a757aw57ac57a957a+57ag57eK57a057ay57ax57a657ai57a/57a157a457at57eS57eH57asIl0sWyJiYjQwIiwi572w57+g57+h57+f6IGe6IGa6IKH6IWQ6IaA6IaP6IaI6IaK6IW/6IaC6Ien6Ie66IiH6IiU6Iie6ImL6JOJ6JK/6JOG6JOE6JKZ6JKe6JKy6JKc6JOL6JK46JOA6JOT6JKQ6JK86JOR6JOK6Jy/6Jyc6Jy76Jyi6Jyl6Jy06JyY6J2V6Jy36Jyp6KOz6KSC6KO06KO56KO46KO96KOo6KSa6KOv6Kqm6KqM6Kqe6Kqj6KqN6Kqh6KqT6KqkIl0sWyJiYmExIiwi6Kqq6Kql6Kqo6KqY6KqR6Kqa6Kqn6LGq6LKN6LKM6LOT6LOR6LOS6LWr6LaZ6LaV6Le86LyU6LyS6LyV6LyT6L6j6YGg6YGY6YGc6YGj6YGZ6YGe6YGi6YGd6YGb6YSZ6YSY6YSe6YW16YW46YW36YW06Ym46YqA6YqF6YqY6YqW6Ym76YqT6Yqc6Yqo6Ym86YqR6Zah6Zao6Zap6Zaj6Zal6Zak6ZqZ6Zqc6Zqb6ZuM6ZuS6ZyA6Z286Z6F6Z+26aCX6aCY6aKv6aKx6aSD6aSF6aSM6aSJ6aeB6aqv6aqw6aum6a2B6a2C6bO06bO26bOz6bq86by76b2K5YSE5YSA5YO75YO15YO55YSC5YSI5YSJ5YSF5YecIl0sWyJiYzQwIiwi5YqH5YqI5YqJ5YqN5YqK5Yuw5Y6y5Ziu5Zi75Zi55Ziy5Zi/5Zi05Zip5ZmT5ZmO5ZmX5Zm05Zi25Ziv5Ziw5aKA5aKf5aKe5aKz5aKc5aKu5aKp5aKm5aWt5ayJ5au75ayL5au15ayM5ayI5a+u5a+s5a+p5a+r5bGk5bGl5bad5baU5bmi5bmf5bmh5bui5bua5buf5bud5buj5bug5b2I5b2x5b635b615oW25oWn5oWu5oWd5oWV5oaCIl0sWyJiY2ExIiwi5oW85oWw5oWr5oW+5oan5oaQ5oar5oaO5oas5oaa5oak5oaU5oau5oiu5pGp5pGv5pG55pKe5pKy5pKI5pKQ5pKw5pKl5pKT5pKV5pKp5pKS5pKu5pKt5pKr5pKa5pKs5pKZ5pKi5pKz5pW15pW35pW45pqu5pqr5pq05pqx5qij5qif5qeo5qiB5qie5qiZ5qe95qih5qiT5qiK5qez5qiC5qiF5qet5qiR5q2Q5q2O5q6k5q+F5q+G5ry/5r285r6E5r2R5r2m5r2U5r6G5r2t5r2b5r245r2u5r6O5r265r2w5r2k5r6X5r2Y5ruV5r2v5r2g5r2f54af54as54ax54ao54mW54qb542O542X55Gp55KL55KDIl0sWyJiZDQwIiwi55G+55KA55W/55ig55ip55if55ik55im55ih55ii55qa55q655uk556O556H556M556R556L56OL56OF56K656OK56K+56OV56K856OQ56i/56i856mA56i956i356i756qv56qu566t566x56+E566056+G56+H56+B566g56+M57OK57eg57e057ev57e757eY57es57ed57eo57ej57ea57ee57ep57ae57eZ57ey57e557215723576vIl0sWyJiZGExIiwi57+p6ICm6Iab6Iac6Iad6Iag6Iaa6IaY6JSX6JS96JSa6JOu6JSs6JSt6JST6JSR6JSj6JSh6JSU6JOs6JSl6JO/6JSG6J6C6J206J226J2g6J2m6J246J2o6J2Z6J2X6J2M6J2T6KGb6KGd6KSQ6KSH6KSS6KST6KSV6KSK6Kq86KuS6KuH6KuE6KqV6KuL6Ku46Kqy6KuJ6KuC6Kq/6Kqw6KuW6KuN6Kq26Kq56Kub6LGM6LGO6LGs6LOg6LOe6LOm6LOk6LOs6LOt6LOi6LOj6LOc6LOq6LOh6LWt6Laf6Laj6Lir6LiQ6Lid6Lii6LiP6Lip6Lif6Lih6Lie6Lq66Lyd6Lyb6Lyf6Lyp6Lym6Lyq6Lyc6LyeIl0sWyJiZTQwIiwi6Lyl6YGp6YGu6YGo6YGt6YG36YSw6YSt6YSn6YSx6YaH6YaJ6YaL6YaD6YuF6Yq76Yq36Yuq6Yqs6Yuk6YuB6Yqz6Yq86YuS6YuH6Yuw6Yqy6Zat6Zax6ZyE6ZyG6ZyH6ZyJ6Z2g6Z6N6Z6L6Z6P6aCh6aCr6aCc6aKz6aSK6aST6aSS6aSY6aed6aeQ6aef6aeb6aeR6aeV6aeS6aeZ6aq36auu6auv6ayn6a2F6a2E6a236a2v6bSG6bSJIl0sWyJiZWExIiwi6bSD6bqp6bq+6buO5aKo6b2S5YSS5YSY5YSU5YSQ5YSV5YaA5Yaq5Yed5YqR5YqT5Yuz5ZmZ5Zmr5Zm55Zmp5Zmk5Zm45Zmq5Zmo5Zml5Zmx5Zmv5Zms5Zmi5Zm25aOB5aK+5aOH5aOF5aWu5ayd5ay05a245a+w5bCO5b2K5oay5oaR5oap5oaK5oeN5oa25oa+5oeK5oeI5oiw5pOF5pOB5pOL5pK75pK85pOa5pOE5pOH5pOC5pON5pK/5pOS5pOU5pK+5pW05puG5puJ5pq55puE5puH5pq45qi95qi45qi65qmZ5qmr5qmY5qi55qmE5qmi5qmh5qmL5qmH5qi15qmf5qmI5q2Z5q235rCF5r+C5r6x5r6hIl0sWyJiZjQwIiwi5r+D5r6k5r+B5r6n5r6z5r+A5r655r625r6m5r6g5r6054a+54eJ54eQ54eS54eI54eV54a554eO54eZ54ec54eD54eE542o55Kc55Kj55KY55Kf55Ke55Oi55SM55SN55i055i455i655un55ul556g556e556f556l56Oo56Oa56Os56On56am56mN56mO56mG56mM56mL56q656+Z57CR56+J56+k56+b56+h56+p56+m57OV57OW57iKIl0sWyJiZmExIiwi57iR57iI57ib57ij57ie57id57iJ57iQ5725576y57+w57+x57+u6ICo6Iaz6Iap6Iao6Ie76IiI6ImY6ImZ6JWK6JWZ6JWI6JWo6JWp6JWD6JWJ6JWt6JWq6JWe6J6D6J6f6J6e6J6i6J6N6KGh6KSq6KSy6KSl6KSr6KSh6Kaq6Kam6Kum6Ku66Kur6Kux6KyA6Kuc6Kun6Kuu6Ku+6KyB6KyC6Ku36Kut6Kuz6Ku26Ku86LGr6LGt6LKT6LO06LmE6Lix6Li06LmC6Li56Li16Ly76Lyv6Ly46Lyz6L6o6L6m6YG16YG06YG46YGy6YG86YG66YS06YaS6Yyg6Yy26Yu46Yyz6Yyv6Yyi6Yu86Yyr6YyE6YyaIl0sWyJjMDQwIiwi6YyQ6Yym6Yyh6YyV6Yyu6YyZ6Za76Zqn6Zqo6Zqq6ZuV6ZyO6ZyR6ZyW6ZyN6ZyT6ZyP6Z2b6Z2c6Z2m6Z6Y6aCw6aC46aC76aC36aCt6aC56aCk6aSQ6aSo6aSe6aSb6aSh6aSa6aet6aei6aex6aq46aq86au76aut6ayo6a6R6bSV6bSj6bSm6bSo6bSS6bSb6buY6buU6b6N6b6c5YSq5YSf5YSh5YSy5Yu15ZqO5ZqA5ZqQ5ZqF5ZqHIl0sWyJjMGExIiwi5ZqP5aOV5aOT5aOR5aOO5ayw5ayq5ayk5a265bC35bGo5ba85ba65ba95ba45bmr5b2M5b695oeJ5oeC5oeH5oem5oeL5oiy5oi05pOO5pOK5pOY5pOg5pOw5pOm5pOs5pOx5pOi5pOt5paC5paD5puZ5puW5qqA5qqU5qqE5qqi5qqc5qub5qqj5qm+5qqX5qqQ5qqg5q2c5q6u5q+a5rCI5r+Y5r+x5r+f5r+g5r+b5r+k5r+r5r+v5r6A5r+s5r+h5r+p5r+V5r+u5r+w54en54ef54eu54em54el54et54es54e054eg54i154mG542w542y55Kp55Kw55Km55Ko55mG55mC55mM55uq556z556q556w556sIl0sWyJjMTQwIiwi556n556t55+v56O356O656O056Ov56SB56an56aq56mX56q/57CH57CN56++56+357CM56+g57Og57Oc57Oe57Oi57Of57OZ57Od57iu57i+57mG57i357iy57mD57ir57i957ix57mF57mB57i057i557mI57i157i/57iv572E57+z57+86IGx6IGy6IGw6IGv6IGz6IeG6IeD6Ia66IeC6IeA6Ia/6Ia96IeJ6Ia+6Ieo6IiJ6Imx6JaqIl0sWyJjMWExIiwi6JaE6JW+6Jac6JaR6JaU6Jav6Jab6JaH6Jao6JaK6Jmn6J+A6J+R6J6z6J+S6J+G6J6r6J676J666J+I6J+L6KS76KS26KWE6KS46KS96Kas6KyO6KyX6KyZ6Kyb6KyK6Kyg6Kyd6KyE6KyQ6LGB6LC/6LGz6LO66LO96LO86LO46LO76Lao6LmJ6LmL6LmI6LmK6L2E6Ly+6L2C6L2F6Ly/6YG/6YG96YKE6YKB6YKC6YKA6YS56Yaj6Yae6Yac6Y2N6Y6C6Yyo6Y216Y2K6Y2l6Y2L6YyY6Y2+6Y2s6Y2b6Y2w6Y2a6Y2U6ZeK6ZeL6ZeM6ZeI6ZeG6Zqx6Zq46ZuW6Zyc6Zye6Z6g6Z+T6aGG6aK26aS16aiBIl0sWyJjMjQwIiwi6ae/6a6u6a6r6a6q6a6t6bS76bS/6bqL6buP6bue6buc6bud6bub6by+6b2L5Y+i5ZqV5Zqu5aOZ5aOY5ay45b2d5oej5oiz5pO05pOy5pO+5pSG5pO65pO75pO35pa35puc5pym5qqz5qqs5quD5qq75qq45quC5qqu5qqv5q2f5q245q6v54CJ54CL5r++54CG5r+654CR54CP54e754e854e+54e45423542155Kn55K/55SV55mW55mYIl0sWyJjMmExIiwi55mS5569556/5567556856SO56au56mh56mi56mg56uE56uF57Cr57Cn57Cq57Ce57Cj57Ch57On57mU57mV57me57ma57mh57mS57mZ572I57+557+76IG36IG26IeN6IeP6IiK6JeP6Jap6JeN6JeQ6JeJ6Jaw6Ja66Ja56Jam6J+v6J+s6J+y6J+g6KaG6Kay6Ke06Kyo6Ky56Kys6Kyr6LGQ6LSF6LmZ6Lmj6Lmm6Lmk6Lmf6LmV6LuA6L2J6L2N6YKH6YKD6YKI6Yar6Yas6YeQ6Y6U6Y6K6Y6W6Y6i6Y6z6Y6u6Y6s6Y6w6Y6Y6Y6a6Y6X6ZeU6ZeW6ZeQ6ZeV6Zui6Zuc6ZuZ6Zub6Zue6Zyk6Z6j6Z6mIl0sWyJjMzQwIiwi6Z6t6Z+56aGN6aGP6aGM6aGO6aGT6aK66aS+6aS/6aS96aSu6aal6aiO6auB6ayD6ayG6a2P6a2O6a2N6a+K6a+J6a+96a+I6a+A6bWR6bWd6bWg6bug6byV6bys5YSz5Zql5aOe5aOf5aOi5a+16b6Q5bus5oey5oe35oe25oe15pSA5pSP5pug5pud5qul5qud5qua5quT54Cb54Cf54Co54Ca54Cd54CV54CY54iG54iN54mY54qi5424Il0sWyJjM2ExIiwi542655K955OK55Oj55aH55aG55mf55mh55+H56SZ56ax56mr56mp57C+57C/57C457C957C357GA57mr57mt57m557mp57mq576F57mz5762576557646IeY6Jep6Jed6Jeq6JeV6Jek6Jel6Je36J+76KCF6KCN6J+56J++6KWg6KWf6KWW6KWe6K2B6K2c6K2Y6K2J6K2a6K2O6K2P6K2G6K2Z6LSI6LSK6Lm86Lmy6LqH6Lm26Lms6Lm66Lm06L2U6L2O6L6t6YKK6YKL6Yax6Yau6Y+h6Y+R6Y+f6Y+D6Y+I6Y+c6Y+d6Y+W6Y+i6Y+N6Y+Y6Y+k6Y+X6Y+o6Zec6Zq06Zuj6Zyq6Zyn6Z2h6Z+c6Z+76aGeIl0sWyJjNDQwIiwi6aGY6aGb6aK86aWF6aWJ6aiW6aiZ6ayN6a+o6a+n6a+W6a+b6baJ6bWh6bWy6bWq6bWs6bqS6bqX6bqT6bq05Yu45Zqo5Zq35Zq25Zq05Zq85aOk5a2A5a2D5a295a+25beJ5oe45oe65pSY5pSU5pSZ5pum5pyn5qus54C+54Cw54Cy54iQ542755OP55mi55ml56Sm56Sq56Ss56Sr56uH56u257GM57GD57GN57Ov57Ow6L6u57m957m8Il0sWyJjNGExIiwi57qC572M6ICA6Iea6Imm6Je76Je56JiR6Je66JiG6JiL6JiH6JiK6KCU6KCV6KWk6Ka66Ke46K2w6K2s6K2m6K2v6K2f6K2r6LSP6LSN6LqJ6LqB6LqF6LqC6Ya06YeL6ZCY6ZCD6Y+96Zeh6Zyw6aOE6aWS6aWR6aao6air6aiw6ai36ai16bCT6bCN6bm56bq16buo6byv6b2f6b2j6b2h5YS35YS45ZuB5ZuA5ZuC5aSU5bGs5beN5oe85oe+5pSd5pSc5paV5pup5qu75qyE5qu65q6y54GM54ib54qn55OW55OU55mp55+T57GQ57qP57qM57686JiX6Jit6Jia6KCj6KCi6KCh6KCf6KWq6KWs6Ka96K20Il0sWyJjNTQwIiwi6K236K296LST6LqK6LqN6LqL6L2f6L6v6Ya66ZCu6ZCz6ZC16ZC66ZC46ZCy6ZCr6Zei6Zy46Zy56Zyy6Z+/6aGn6aGl6aWX6amF6amD6amA6ai+6auP6a2U6a2R6bCt6bCl6bav6ba06beC6ba46bqd6buv6byZ6b2c6b2m6b2n5YS85YS75ZuI5ZuK5ZuJ5a2/5beU5beS5b2O5oe/5pSk5qyK5q2h54GR54GY546A55Ok55aK55mu55msIl0sWyJjNWExIiwi56az57Gg57Gf6IG+6IG96Ief6KWy6KWv6Ke86K6A6LSW6LSX6LqR6LqT6L2h6YWI6ZGE6ZGR6ZGS6Zy96Zy+6Z+D6Z+B6aGr6aWV6amV6amN6auS6aya6bGJ6bCx6bC+6bC76beT6beX6by06b2s6b2q6b6U5ZuM5beW5oiA5pSj5pSr5pSq5pus5qyQ55Oa56uK57Gk57Gj57Gl57qT57qW57qU6Iei6Ji46Ji/6KCx6K6K6YKQ6YKP6ZGj6ZGg6ZGk6Z2o6aGv6aWc6ama6amb6amX6auT6auU6auR6bGU6bGX6bGW6bel6bqf6bu05ZuR5aOp5pSs54Ge55mx55my55+X572Q576I6KC26KC56KGi6K6T6K6SIl0sWyJjNjQwIiwi6K6W6Im36LSb6YeA6ZGq6Z2C6Z2I6Z2E6Z+G6aGw6amf6ayi6a2Y6bGf6be56be66bm86bm96byH6b236b2y5buz5qyW54Gj57Gs57Gu6KC76KeA6Lqh6YeB6ZGy6ZGw6aGx6aWe6auW6ayj6buM54Gk55+a6K6a6ZG36Z+J6ami6aml57qc6K6c6Lqq6YeF6ZG96ZG+6ZG86bG36bG46bu36LGU6ZG/6bia54io6amq6ayx6bib6bie57GyIl0sWyJjOTQwIiwi5LmC5Lmc5Ye15Yya5Y6C5LiH5LiM5LmH5LqN5ZuX76iM5bGu5b2z5LiP5YaH5LiO5Liu5LqT5LuC5LuJ5LuI5YaY5Yu85Y2s5Y655Zyg5aSD5aSs5bCQ5be/5peh5q6z5q+M5rCU54i/5Lix5Li85Luo5Luc5Lup5Luh5Lud5Lua5YiM5Yyc5Y2M5Zyi5Zyj5aSX5aSv5a6B5a6E5bCS5bC75bG05bGz5biE5bqA5bqC5b+J5oiJ5omQ5rCVIl0sWyJjOWExIiwi5rC25rGD5rC/5rC754qu54qw546K56a46IKK6Zie5LyO5LyY5Lys5Lu15LyU5Lux5LyA5Lu35LyI5Lyd5LyC5LyF5Lyi5LyT5LyE5Lu05LyS5Yax5YiT5YiJ5YiQ5Yqm5Yyi5Yyf5Y2N5Y6K5ZCH5Zuh5Zuf5Zyu5Zyq5Zy05aS85aaA5aW85aaF5aW75aW+5aW35aW/5a2W5bCV5bCl5bG85bG65bG75bG+5bef5bm15bqE5byC5bya5b205b+V5b+U5b+P5omc5ome5omk5omh5omm5omi5omZ5omg5oma5oml5pev5peu5py+5py55py45py75py65py/5py85pyz5rCY5rGG5rGS5rGc5rGP5rGK5rGU5rGLIl0sWyJjYTQwIiwi5rGM54Gx54me54q054q1546O55Sq55m/56m1572R6Im46Im86IqA6Im96Im/6JmN6KW+6YKZ6YKX6YKY6YKb6YKU6Zii6Zik6Zig6Zij5L2W5Ly75L2i5L2J5L2T5L2k5Ly+5L2n5L2S5L2f5L2B5L2Y5Lyt5Lyz5Ly/5L2h5YaP5Ya55Yic5Yie5Yih5Yqt5Yqu5YyJ5Y2j5Y2y5Y6O5Y6P5ZCw5ZC35ZCq5ZGU5ZGF5ZCZ5ZCc5ZCl5ZCYIl0sWyJjYWExIiwi5ZC95ZGP5ZGB5ZCo5ZCk5ZGH5Zuu5Zun5Zul5Z2B5Z2F5Z2M5Z2J5Z2L5Z2S5aSG5aWA5aam5aaY5aag5aaX5aaO5aai5aaQ5aaP5aan5aah5a6O5a6S5bCo5bCq5bKN5bKP5bKI5bKL5bKJ5bKS5bKK5bKG5bKT5bKV5beg5biK5biO5bqL5bqJ5bqM5bqI5bqN5byF5byd5b245b225b+S5b+R5b+Q5b+t5b+o5b+u5b+z5b+h5b+k5b+j5b+65b+v5b+35b+75oCA5b+05oi65oqD5oqM5oqO5oqP5oqU5oqH5omx5om75om65omw5oqB5oqI5om35om95omy5om05pS35pew5pe05pez5pey5pe15p2F5p2HIl0sWyJjYjQwIiwi5p2Z5p2V5p2M5p2I5p2d5p2N5p2a5p2L5q+Q5rCZ5rCa5rG45rGn5rGr5rKE5rKL5rKP5rGx5rGv5rGp5rKa5rGt5rKH5rKV5rKc5rGm5rGz5rGl5rG75rKO54G054G654mj54q/54q954uD54uG54uB54q654uF546V546X546T546U546S55S655S555aU55aV55qB56S96IC06IKV6IKZ6IKQ6IKS6IKc6IqQ6IqP6IqF6IqO6IqR6IqTIl0sWyJjYmExIiwi6IqK6IqD6IqE6LG46L+J6L6/6YKf6YKh6YKl6YKe6YKn6YKg6Ziw6Zio6Ziv6Zit5Liz5L6Y5L285L6F5L295L6A5L6H5L225L205L6J5L6E5L235L2M5L6X5L2q5L6a5L255L6B5L245L6Q5L6c5L6U5L6e5L6S5L6C5L6V5L2r5L2u5Yae5Ya85Ya+5Yi15Yiy5Yiz5YmG5Yix5Yq85YyK5YyL5Yy85Y6S5Y6U5ZKH5ZG/5ZKB5ZKR5ZKC5ZKI5ZGr5ZG65ZG+5ZGl5ZGs5ZG05ZGm5ZKN5ZGv5ZGh5ZGg5ZKY5ZGj5ZGn5ZGk5Zu35Zu55Z2v5Z2y5Z2t5Z2r5Z2x5Z2w5Z225Z6A5Z215Z275Z2z5Z205Z2iIl0sWyJjYzQwIiwi5Z2o5Z295aSM5aWF5aa15aa65aeP5aeO5aay5aeM5aeB5aa25aa85aeD5aeW5aax5aa95aeA5aeI5aa05aeH5a2i5a2l5a6T5a6V5bGE5bGH5bKu5bKk5bKg5bK15bKv5bKo5bKs5bKf5bKj5bKt5bKi5bKq5bKn5bKd5bKl5bK25bKw5bKm5biX5biU5biZ5byo5byi5byj5byk5b2U5b6C5b2+5b295b+e5b+l5oCt5oCm5oCZ5oCy5oCLIl0sWyJjY2ExIiwi5oC05oCK5oCX5oCz5oCa5oCe5oCs5oCi5oCN5oCQ5oCu5oCT5oCR5oCM5oCJ5oCc5oiU5oi95oqt5oq05ouR5oq+5oqq5oq25ouK5oqu5oqz5oqv5oq75oqp5oqw5oq45pS95pao5pa75piJ5pe85piE5piS5piI5pe75piD5piL5piN5piF5pe95piR5piQ5pu25pyK5p6F5p2s5p6O5p6S5p225p275p6Y5p6G5p6E5p205p6N5p6M5p265p6f5p6R5p6Z5p6D5p295p6B5p245p255p6U5qyl5q6A5q2+5q+e5rCd5rKT5rOs5rOr5rOu5rOZ5rK25rOU5rKt5rOn5rK35rOQ5rOC5rK65rOD5rOG5rOt5rOyIl0sWyJjZDQwIiwi5rOS5rOd5rK05rKK5rKd5rKA5rOe5rOA5rSw5rON5rOH5rKw5rO55rOP5rOp5rOR54KU54KY54KF54KT54KG54KE54KR54KW54KC54Ka54KD54mq54uW54uL54uY54uJ54uc54uS54uU54ua54uM54uR546k546h546t546m546i546g546s546d55Od55Oo55S/55WA55S+55aM55aY55qv55uz55ux55uw55u155+455+855+555+755+6Il0sWyJjZGExIiwi55+356WC56S/56eF56m456m756u757G157O96IC16IKP6IKu6IKj6IK46IK16IKt6Iig6Iqg6IuA6Iqr6Iqa6IqY6Iqb6Iq16Iqn6Iqu6Iq86Iqe6Iq66Iq06Iqo6Iqh6Iqp6IuC6Iqk6IuD6Iq26Iqi6Jmw6Jmv6Jmt6Jmu6LGW6L+S6L+L6L+T6L+N6L+W6L+V6L+X6YKy6YK06YKv6YKz6YKw6Zi56Zi96Zi86Zi66ZmD5L+N5L+F5L+T5L6y5L+J5L+L5L+B5L+U5L+c5L+Z5L675L6z5L+b5L+H5L+W5L665L+A5L655L+s5YmE5YmJ5YuA5YuC5Yy95Y285Y6X5Y6W5Y6Z5Y6Y5ZK65ZKh5ZKt5ZKl5ZOPIl0sWyJjZTQwIiwi5ZOD6IyN5ZK35ZKu5ZOW5ZK25ZOF5ZOG5ZKg5ZGw5ZK85ZKi5ZK+5ZGy5ZOe5ZKw5Z615Z6e5Z6f5Z6k5Z6M5Z6X5Z6d5Z6b5Z6U5Z6Y5Z6P5Z6Z5Z6l5Z6a5Z6V5aO05aSN5aWT5aeh5aee5aeu5aiA5aex5aed5ae65ae95ae85ae25aek5aey5ae35aeb5aep5aez5ae15aeg5ae+5ae05aet5a6o5bGM5bOQ5bOY5bOM5bOX5bOL5bObIl0sWyJjZWExIiwi5bOe5bOa5bOJ5bOH5bOK5bOW5bOT5bOU5bOP5bOI5bOG5bOO5bOf5bO45be55bih5bii5bij5big5bik5bqw5bqk5bqi5bqb5bqj5bql5byH5byu5b2W5b6G5oC35oC55oGU5oGy5oGe5oGF5oGT5oGH5oGJ5oGb5oGM5oGA5oGC5oGf5oCk5oGE5oGY5oGm5oGu5omC5omD5ouP5oyN5oyL5ou15oyO5oyD5our5ou55oyP5oyM5ou45ou25oyA5oyT5oyU5ou65oyV5ou75ouw5pWB5pWD5paq5pa/5pi25pih5piy5pi15pic5pim5pii5piz5pir5pi65pid5pi05pi55piu5pyP5pyQ5p+B5p+y5p+I5p66Il0sWyJjZjQwIiwi5p+c5p675p+45p+Y5p+A5p635p+F5p+r5p+k5p+f5p615p+N5p6z5p+35p+25p+u5p+j5p+C5p655p+O5p+n5p+w5p6y5p+85p+G5p+t5p+M5p6u5p+m5p+b5p+65p+J5p+K5p+D5p+q5p+L5qyo5q6C5q6E5q625q+W5q+Y5q+g5rCg5rCh5rSo5rS05rSt5rSf5rS85rS/5rSS5rSK5rOa5rSz5rSE5rSZ5rS65rSa5rSR5rSA5rSd5rWCIl0sWyJjZmExIiwi5rSB5rSY5rS35rSD5rSP5rWA5rSH5rSg5rSs5rSI5rSi5rSJ5rSQ54K354Kf54K+54Kx54Kw54Kh54K054K154Kp54mB54mJ54mK54ms54mw54mz54mu54uK54uk54uo54ur54uf54uq54um54uj546F54+M54+C54+I54+F546554625461546054+r546/54+H546+54+D54+G546454+L55Os55Ou55Su55WH55WI55an55aq55m555uE55yI55yD55yE55yF55yK55u355u755u655+n55+o56CG56CR56CS56CF56CQ56CP56CO56CJ56CD56CT56WK56WM56WL56WF56WE56eV56eN56eP56eW56eO56qAIl0sWyJkMDQwIiwi56m+56uR56yA56yB57G657G457G557G/57KA57KB57SD57SI57SB572Y576R576N576+6ICH6ICO6ICP6ICU6IC36IOY6IOH6IOg6IOR6IOI6IOC6IOQ6IOF6IOj6IOZ6IOc6IOK6IOV6IOJ6IOP6IOX6IOm6ION6Ie/6Iih6IqU6IuZ6Iu+6Iu56IyH6Iuo6IyA6IuV6Iy66Iur6IuW6Iu06Ius6Iuh6Iuy6Iu16IyM6Iu76Iu26Iuw6IuqIl0sWyJkMGExIiwi6Iuk6Iug6Iu66Iuz6Iut6Jm36Jm06Jm86Jmz6KGB6KGO6KGn6KGq6KGp6KeT6KiE6KiH6LWy6L+j6L+h6L+u6L+g6YOx6YK96YK/6YOV6YOF6YK+6YOH6YOL6YOI6YeU6YeT6ZmU6ZmP6ZmR6ZmT6ZmK6ZmO5YCe5YCF5YCH5YCT5YCi5YCw5YCb5L+15L+05YCz5YC35YCs5L+25L+35YCX5YCc5YCg5YCn5YC15YCv5YCx5YCO5YWa5YaU5YaT5YeK5YeE5YeF5YeI5YeO5Ymh5Yma5YmS5Yme5Ymf5YmV5Ymi5YuN5YyO5Y6e5ZSm5ZOi5ZSX5ZSS5ZOn5ZOz5ZOk5ZSa5ZO/5ZSE5ZSI5ZOr5ZSR5ZSF5ZOxIl0sWyJkMTQwIiwi5ZSK5ZO75ZO35ZO45ZOg5ZSO5ZSD5ZSL5ZyB5ZyC5Z+M5aCy5Z+V5Z+S5Z665Z+G5Z695Z685Z645Z625Z6/5Z+H5Z+Q5Z655Z+B5aSO5aWK5aiZ5aiW5ait5aiu5aiV5aiP5aiX5aiK5aie5aiz5a2s5a6n5a6t5a6s5bCD5bGW5bGU5bOs5bO/5bOu5bOx5bO35bSA5bO55bip5bio5bqo5bqu5bqq5bqs5byz5byw5b2n5oGd5oGa5oGnIl0sWyJkMWExIiwi5oGB5oKi5oKI5oKA5oKS5oKB5oKd5oKD5oKV5oKb5oKX5oKH5oKc5oKO5oiZ5omG5ouy5oyQ5o2W5oys5o2E5o2F5oy25o2D5o+k5oy55o2L5o2K5oy85oyp5o2B5oy05o2Y5o2U5o2Z5oyt5o2H5oyz5o2a5o2R5oy45o2X5o2A5o2I5pWK5pWG5peG5peD5peE5peC5pmK5pmf5pmH5pmR5pyS5pyT5qCf5qCa5qGJ5qCy5qCz5qC75qGL5qGP5qCW5qCx5qCc5qC15qCr5qCt5qCv5qGO5qGE5qC05qCd5qCS5qCU5qCm5qCo5qCu5qGN5qC65qCl5qCg5qys5qyv5qyt5qyx5qy05q2t6IKC5q6I5q+m5q+kIl0sWyJkMjQwIiwi5q+o5q+j5q+i5q+n5rCl5rW65rWj5rWk5rW25rSN5rWh5raS5rWY5rWi5rWt5rWv5raR5raN5rev5rW/5raG5rWe5rWn5rWg5raX5rWw5rW85rWf5raC5raY5rSv5rWo5raL5rW+5raA5raE5rSW5raD5rW75rW95rW15raQ54Oc54OT54OR54Od54OL57y554Oi54OX54OS54Oe54Og54OU54ON54OF54OG54OH54Oa54OO54Oh54mC54m4Il0sWyJkMmExIiwi54m354m254yA54u654u054u+54u254uz54u754yB54+T54+Z54+l54+W546854+n54+j54+p54+c54+S54+b54+U54+d54+a54+X54+Y54+o55Oe55Of55O055O155Sh55Wb55Wf55aw55eB55a755eE55eA55a/55a255a655qK55uJ55yd55yb55yQ55yT55yS55yj55yR55yV55yZ55ya55yi55yn56Cj56Cs56Ci56C156Cv56Co56Cu56Cr56Ch56Cp56Cz56Cq56Cx56WU56Wb56WP56Wc56WT56WS56WR56er56es56eg56eu56et56eq56ec56ee56ed56qG56qJ56qF56qL56qM56qK56qH56uY56yQIl0sWyJkMzQwIiwi56yE56yT56yF56yP56yI56yK56yO56yJ56yS57KE57KR57KK57KM57KI57KN57KF57Se57Sd57SR57SO57SY57SW57ST57Sf57SS57SP57SM572c572h572e572g572d572b576W576S57+D57+C57+A6ICW6IC+6IC56IO66IOy6IO56IO16ISB6IO76ISA6IiB6Iiv6Iil6Iyz6Iyt6I2E6IyZ6I2R6Iyl6I2W6Iy/6I2B6Iym6Iyc6IyiIl0sWyJkM2ExIiwi6I2C6I2O6Iyb6Iyq6IyI6Iy86I2N6IyW6Iyk6Iyg6Iy36Iyv6Iyp6I2H6I2F6I2M6I2T6Iye6Iys6I2L6Iyn6I2I6JmT6JmS6Jqi6Jqo6JqW6JqN6JqR6Jqe6JqH6JqX6JqG6JqL6Jqa6JqF6Jql6JqZ6Jqh6Jqn6JqV6JqY6JqO6Jqd6JqQ6JqU6KGD6KGE6KGt6KG16KG26KGy6KKA6KGx6KG/6KGv6KKD6KG+6KG06KG86KiS6LGH6LGX6LG76LKk6LKj6LW26LW46La16La36La26LuR6LuT6L++6L+16YCC6L+/6L+76YCE6L+86L+26YOW6YOg6YOZ6YOa6YOj6YOf6YOl6YOY6YOb6YOX6YOc6YOk6YWQIl0sWyJkNDQwIiwi6YWO6YWP6YeV6Yei6Yea6Zmc6Zmf6Zq86aOj6auf6ayv5Lm/5YGw5YGq5YGh5YGe5YGg5YGT5YGL5YGd5YGy5YGI5YGN5YGB5YGb5YGK5YGi5YCV5YGF5YGf5YGp5YGr5YGj5YGk5YGG5YGA5YGu5YGz5YGX5YGR5YeQ5Ymr5Ymt5Yms5Ymu5YuW5YuT5Yyt5Y6c5ZW15ZW25ZS85ZWN5ZWQ5ZS05ZSq5ZWR5ZWi5ZS25ZS15ZSw5ZWS5ZWFIl0sWyJkNGExIiwi5ZSM5ZSy5ZWl5ZWO5ZS55ZWI5ZSt5ZS75ZWA5ZWL5ZyK5ZyH5Z+75aCU5Z+i5Z+25Z+c5Z+05aCA5Z+t5Z+95aCI5Z+45aCL5Z+z5Z+P5aCH5Z+u5Z+j5Z+y5Z+l5Z+s5Z+h5aCO5Z+85aCQ5Z+n5aCB5aCM5Z+x5Z+p5Z+w5aCN5aCE5aWc5amg5amY5amV5amn5ame5ai45ai15amt5amQ5amf5aml5ams5amT5amk5amX5amD5amd5amS5amE5amb5amI5aqO5ai+5amN5ai55amM5amw5amp5amH5amR5amW5amC5amc5a2y5a2u5a+B5a+A5bGZ5bSe5bSL5bSd5bSa5bSg5bSM5bSo5bSN5bSm5bSl5bSPIl0sWyJkNTQwIiwi5bSw5bSS5bSj5bSf5bSu5bi+5bi05bqx5bq05bq55bqy5bqz5by25by45b6b5b6W5b6f5oKK5oKQ5oKG5oK+5oKw5oK65oOT5oOU5oOP5oOk5oOZ5oOd5oOI5oKx5oOb5oK35oOK5oK/5oOD5oON5oOA5oyy5o2l5o6K5o6C5o295o695o6e5o6t5o6d5o6X5o6r5o6O5o2v5o6H5o6Q5o2u5o6v5o215o6c5o2t5o6u5o285o6k5oy75o6fIl0sWyJkNWExIiwi5o245o6F5o6B5o6R5o6N5o2w5pWT5peN5pml5pmh5pmb5pmZ5pmc5pmi5pyY5qG55qKH5qKQ5qKc5qGt5qGu5qKu5qKr5qWW5qGv5qKj5qKs5qKp5qG15qG05qKy5qKP5qG35qKS5qG85qGr5qGy5qKq5qKA5qGx5qG+5qKb5qKW5qKL5qKg5qKJ5qKk5qG45qG75qKR5qKM5qKK5qG95qy25qyz5qy35qy45q6R5q6P5q6N5q6O5q6M5rCq5reA5rar5ra05raz5rm05ras5rep5rei5ra35re25reU5riA5reI5reg5ref5reW5ra+5rel5rec5red5reb5re05reK5ra95ret5rew5ra65reV5reC5reP5reJIl0sWyJkNjQwIiwi5reQ5rey5reT5re95reX5reN5rej5ra754O654SN54O354SX54O054SM54Ow54SE54Oz54SQ54O854O/54SG54ST54SA54O454O254SL54SC54SO54m+54m754m854m/54yd54yX54yH54yR54yY54yK54yI54u/54yP54ye546I54+254+454+155CE55CB54+955CH55CA54+654+854+/55CM55CL54+055CI55Wk55Wj55eO55eS55ePIl0sWyJkNmExIiwi55eL55eM55eR55eQ55qP55qJ55uT55y555yv55yt55yx55yy55y055yz55y955yl55y755y156GI56GS56GJ56GN56GK56GM56Cm56GF56GQ56Wk56Wn56Wp56Wq56Wj56Wr56Wh56a756e656e456e256e356qP56qU56qQ56y1562H56y056yl56yw56yi56yk56yz56yY56yq56yd56yx56yr56yt56yv56yy56y456ya56yj57KU57KY57KW57Kj57S157S957S457S257S657WF57Ss57Sp57WB57WH57S+57S/57WK57S757So572j576V576c576d576b57+K57+L57+N57+Q57+R57+H57+P57+J6ICfIl0sWyJkNzQwIiwi6ICe6ICb6IGH6IGD6IGI6ISY6ISl6ISZ6ISb6ISt6ISf6ISs6ISe6ISh6ISV6ISn6ISd6ISi6IiR6Ii46Iiz6Ii66Ii06Iiy6Im06I6Q6I6j6I6o6I6N6I266I2z6I6k6I206I6P6I6B6I6V6I6Z6I216I6U6I6p6I296I6D6I6M6I6d6I6b6I6q6I6L6I2+6I6l6I6v6I6I6I6X6I6w6I2/6I6m6I6H6I6u6I226I6a6JmZ6JmW6Jq/6Jq3Il0sWyJkN2ExIiwi6JuC6JuB6JuF6Jq66Jqw6JuI6Jq56Jqz6Jq46JuM6Jq06Jq76Jq86JuD6Jq96Jq+6KGS6KKJ6KKV6KKo6KKi6KKq6KKa6KKR6KKh6KKf6KKY6KKn6KKZ6KKb6KKX6KKk6KKs6KKM6KKT6KKO6KaC6KeW6KeZ6KeV6Kiw6Kin6Kis6Kie6LC56LC76LGc6LGd6LG96LKl6LW96LW76LW56La86LeC6La56La/6LeB6LuY6Lue6Lud6Luc6LuX6Lug6Luh6YCk6YCL6YCR6YCc6YCM6YCh6YOv6YOq6YOw6YO06YOy6YOz6YOU6YOr6YOs6YOp6YWW6YWY6YWa6YWT6YWV6Yes6Ye06Yex6Yez6Ye46Yek6Ye56YeqIl0sWyJkODQwIiwi6Yer6Ye36Yeo6Yeu6ZW66ZaG6ZaI6Zm86Zmt6Zmr6Zmx6Zmv6Zq/6Z2q6aCE6aOl6aaX5YKb5YKV5YKU5YKe5YKL5YKj5YKD5YKM5YKO5YKd5YGo5YKc5YKS5YKC5YKH5YWf5YeU5YyS5YyR5Y6k5Y6n5ZaR5Zao5Zal5Zat5ZW35ZmF5Zai5ZaT5ZaI5ZaP5Za15ZaB5Zaj5ZaS5Zak5ZW95ZaM5Zam5ZW/5ZaV5Zah5ZaO5ZyM5aCp5aC3Il0sWyJkOGExIiwi5aCZ5aCe5aCn5aCj5aCo5Z+15aGI5aCl5aCc5aCb5aCz5aC/5aC25aCu5aC55aC45aCt5aCs5aC75aWh5aqv5aqU5aqf5am65aqi5aqe5am45aqm5am85aql5aqs5aqV5aqu5ai35aqE5aqK5aqX5aqD5aqL5aqp5am75am95aqM5aqc5aqP5aqT5aqd5a+q5a+N5a+L5a+U5a+R5a+K5a+O5bCM5bCw5bS35bWD5bWr5bWB5bWL5bS/5bS15bWR5bWO5bWV5bSz5bS65bWS5bS95bSx5bWZ5bWC5bS55bWJ5bS45bS85bSy5bS25bWA5bWF5bmE5bmB5b2Y5b6m5b6l5b6r5oOJ5oK55oOM5oOi5oOO5oOE5oSUIl0sWyJkOTQwIiwi5oOy5oSK5oSW5oSF5oO15oST5oO45oO85oO+5oOB5oSD5oSY5oSd5oSQ5oO/5oSE5oSL5omK5o6U5o6x5o6w5o+O5o+l5o+o5o+v5o+D5pKd5o+z5o+K5o+g5o+25o+V5o+y5o+15pGh5o+f5o6+5o+d5o+c5o+E5o+Y5o+T5o+C5o+H5o+M5o+L5o+I5o+w5o+X5o+Z5pSy5pWn5pWq5pWk5pWc5pWo5pWl5paM5pad5pae5pau5peQ5peSIl0sWyJkOWExIiwi5pm85pms5pm75pqA5pmx5pm55pmq5pmy5pyB5qSM5qOT5qSE5qOc5qSq5qOs5qOq5qOx5qSP5qOW5qO35qOr5qOk5qO25qST5qSQ5qOz5qOh5qSH5qOM5qSI5qWw5qK05qSR5qOv5qOG5qSU5qO45qOQ5qO95qO85qOo5qSL5qSK5qSX5qOO5qOI5qOd5qOe5qOm5qO05qOR5qSG5qOU5qOp5qSV5qSl5qOH5qy55qy75qy/5qy85q6U5q6X5q6Z5q6V5q695q+w5q+y5q+z5rCw5re85rmG5rmH5rif5rmJ5rqI5ri85ri95rmF5rmi5rir5ri/5rmB5rmd5rmz5ric5riz5rmL5rmA5rmR5ri75riD5riu5rmeIl0sWyJkYTQwIiwi5rmo5rmc5rmh5rix5rio5rmg5rmx5rmr5ri55rii5riw5rmT5rml5rin5rm45rmk5rm35rmV5rm55rmS5rmm5ri15ri25rma54Sg54Se54Sv54O754Su54Sx54Sj54Sl54Si54Sy54Sf54So54S654Sb54mL54ma54qI54qJ54qG54qF54qL54yS54yL54yw54yi54yx54yz54yn54yy54yt54ym54yj54y154yM55Cu55Cs55Cw55Cr55CWIl0sWyJkYWExIiwi55Ca55Ch55Ct55Cx55Ck55Cj55Cd55Cp55Cg55Cy55O755Sv55Wv55Ws55en55ea55eh55em55ed55ef55ek55eX55qV55qS55ua552G552H552E552N552F552K552O552L552M55+e55+s56Gg56Gk56Gl56Gc56Gt56Gx56Gq56Gu56Gw56Gp56Go56Ge56Gi56W056Wz56Wy56Ww56iC56iK56iD56iM56iE56qZ56um56uk562K56y7562E562I562M562O562A562Y562F57Ki57Ke57Ko57Kh57WY57Wv57Wj57WT57WW57Wn57Wq57WP57Wt57Wc57Wr57WS57WU57Wp57WR57Wf57WO57y+57y/572lIl0sWyJkYjQwIiwi572m576i576g576h57+X6IGR6IGP6IGQ6IO+6IOU6IWD6IWK6IWS6IWP6IWH6IS96IWN6IS66Iem6Ieu6Ie36Ie46Ie56IiE6Ii86Ii96Ii/6Im16Iy76I+P6I+56JCj6I+A6I+o6JCS6I+n6I+k6I+86I+26JCQ6I+G6I+I6I+r6I+j6I6/6JCB6I+d6I+l6I+Y6I+/6I+h6I+L6I+O6I+W6I+16I+J6JCJ6JCP6I+e6JCR6JCG6I+C6I+zIl0sWyJkYmExIiwi6I+V6I+66I+H6I+R6I+q6JCT6I+D6I+s6I+u6I+E6I+76I+X6I+i6JCb6I+b6I++6JuY6Jui6Jum6JuT6Juj6Jua6Juq6Jud6Jur6Juc6Jus6Jup6JuX6Juo6JuR6KGI6KGW6KGV6KK66KOX6KK56KK46KOA6KK+6KK26KK86KK36KK96KKy6KSB6KOJ6KaV6KaY6KaX6Ked6Kea6Keb6KmO6KmN6Ki56KmZ6KmA6KmX6KmY6KmE6KmF6KmS6KmI6KmR6KmK6KmM6KmP6LGf6LKB6LKA6LK66LK+6LKw6LK56LK16LaE6LaA6LaJ6LeY6LeT6LeN6LeH6LeW6Lec6LeP6LeV6LeZ6LeI6LeX6LeF6Luv6Lu36Lu6Il0sWyJkYzQwIiwi6Lu56Lum6Luu6Lul6Lu16Lun6Luo6Lu26Lur6Lux6Lus6Lu06Lup6YCt6YC06YCv6YSG6YSs6YSE6YO/6YO86YSI6YO56YO76YSB6YSA6YSH6YSF6YSD6YWh6YWk6YWf6YWi6YWg6YiB6YiK6Yil6YiD6Yia6Yim6YiP6YiM6YiA6YiS6Ye/6Ye96YiG6YiE6Yin6YiC6Yic6Yik6YiZ6YiX6YiF6YiW6ZW76ZaN6ZaM6ZaQ6ZqH6Zm+6ZqIIl0sWyJkY2ExIiwi6ZqJ6ZqD6ZqA6ZuC6ZuI6ZuD6Zux6Zuw6Z2s6Z2w6Z2u6aCH6aKp6aOr6bOm6bu55LqD5LqE5Lq25YK95YK/5YOG5YKu5YOE5YOK5YK05YOI5YOC5YKw5YOB5YK65YKx5YOL5YOJ5YK25YK45YeX5Ym65Ym45Ym75Ym85ZeD5Zeb5ZeM5ZeQ5ZeL5ZeK5Zed5ZeA5ZeU5ZeE5Zep5Za/5ZeS5ZaN5ZeP5ZeV5Zei5ZeW5ZeI5Zey5ZeN5ZeZ5ZeC5ZyU5aGT5aGo5aGk5aGP5aGN5aGJ5aGv5aGV5aGO5aGd5aGZ5aGl5aGb5aC95aGj5aGx5aO85auH5auE5auL5aq65aq45aqx5aq15aqw5aq/5auI5aq75auGIl0sWyJkZDQwIiwi5aq35auA5auK5aq05aq25auN5aq55aqQ5a+W5a+Y5a+Z5bCf5bCz5bWx5bWj5bWK5bWl5bWy5bWs5bWe5bWo5bWn5bWi5bew5bmP5bmO5bmK5bmN5bmL5buF5buM5buG5buL5buH5b2A5b6v5b6t5oO35oWJ5oWK5oSr5oWF5oS25oSy5oSu5oWG5oSv5oWP5oSp5oWA5oig6YWo5oij5oil5oik5o+F5o+x5o+r5pCQ5pCS5pCJ5pCg5pCkIl0sWyJkZGExIiwi5pCz5pGD5pCf5pCV5pCY5pC55pC35pCi5pCj5pCM5pCm5pCw5pCo5pGB5pC15pCv5pCK5pCa5pGA5pCl5pCn5pCL5o+n5pCb5pCu5pCh5pCO5pWv5paS5peT5pqG5pqM5pqV5pqQ5pqL5pqK5pqZ5pqU5pm45pyg5qWm5qWf5qS45qWO5qWi5qWx5qS/5qWF5qWq5qS55qWC5qWX5qWZ5qW65qWI5qWJ5qS15qWs5qSz5qS95qWl5qOw5qW45qS05qWp5qWA5qWv5qWE5qW25qWY5qWB5qW05qWM5qS75qWL5qS35qWc5qWP5qWR5qSy5qWS5qSv5qW75qS85q2G5q2F5q2D5q2C5q2I5q2B5q6b76iN5q+75q+8Il0sWyJkZTQwIiwi5q+55q+35q+45rqb5ruW5ruI5rqP5ruA5rqf5rqT5rqU5rqg5rqx5rq55ruG5ruS5rq95ruB5rqe5ruJ5rq35rqw5ruN5rqm5ruP5rqy5rq+5ruD5ruc5ruY5rqZ5rqS5rqO5rqN5rqk5rqh5rq/5rqz5ruQ5ruK5rqX5rqu5rqj54WH54WU54WS54Wj54Wg54WB54Wd54Wi54Wy54W454Wq54Wh54WC54WY54WD54WL54Ww54Wf54WQ54WTIl0sWyJkZWExIiwi54WE54WN54Wa54mP54qN54qM54qR54qQ54qO54y8542C54y754y6542A542K542J55GE55GK55GL55GS55GR55GX55GA55GP55GQ55GO55GC55GG55GN55GU55Oh55O/55O+55O955Sd55W555W35qaD55ev55iP55iD55e355e+55e855e555e455iQ55e755e255et55e155e955qZ55q155ud552V552f552g552S552W552a552p552n552U552Z552t55+g56KH56Ka56KU56KP56KE56KV56KF56KG56Kh56KD56G556KZ56KA56KW56G756W856aC56W956W556iR56iY56iZ56iS56iX56iV56ii56iTIl0sWyJkZjQwIiwi56ib56iQ56qj56qi56qe56ur562m562k562t5620562p562y562l562z562x562w562h56245622562j57Ky57K057Kv57aI57aG57aA57aN57W/57aF57W657aO57W757aD57W857aM57aU57aE57W957aS572t572r572n572o572s576m576l576n57+b57+c6ICh6IWk6IWg6IW36IWc6IWp6IWb6IWi6IWy5pyh6IWe6IW26IWn6IWvIl0sWyJkZmExIiwi6IWE6IWh6Iid6ImJ6ImE6ImA6ImC6ImF6JOx6JC/6JGW6JG26JG56JKP6JKN6JGl6JGR6JGA6JKG6JGn6JCw6JGN6JG96JGa6JGZ6JG06JGz6JGd6JSH6JGe6JC36JC66JC06JG66JGD6JG46JCy6JGF6JCp6I+Z6JGL6JCv6JGC6JCt6JGf6JGw6JC56JGO6JGM6JGS6JGv6JOF6JKO6JC76JGH6JC26JCz6JGo6JG+6JGE6JCr6JGg6JGU6JGu6JGQ6JyL6JyE6Ju36JyM6Ju66JuW6Ju16J2N6Ju46JyO6JyJ6JyB6Ju26JyN6JyF6KOW6KOL6KON6KOO6KOe6KOb6KOa6KOM6KOQ6KaF6Kab6Kef6Kel6KekIl0sWyJlMDQwIiwi6Keh6Keg6Kei6Kec6Kem6Km26KqG6Km/6Kmh6Ki/6Km36KqC6KqE6Km16KqD6KqB6Km06Km66LC86LGL6LGK6LGl6LGk6LGm6LKG6LKE6LKF6LOM6LWo6LWp6LaR6LaM6LaO6LaP6LaN6LaT6LaU6LaQ6LaS6Lew6Leg6Les6Lex6Leu6LeQ6Lep6Lej6Lei6Len6Ley6Ler6Le06LyG6Lu/6LyB6LyA6LyF6LyH6LyI6LyC6LyL6YGS6YC/Il0sWyJlMGExIiwi6YGE6YGJ6YC96YSQ6YSN6YSP6YSR6YSW6YSU6YSL6YSO6YWu6YWv6YmI6YmS6Yiw6Yi66Ymm6Yiz6Yml6Yme6YqD6Yiu6YmK6YmG6Ymt6Yms6YmP6Ymg6Ymn6Ymv6Yi26Ymh6Ymw6Yix6YmU6Ymj6YmQ6Ymy6YmO6YmT6YmM6YmW6Yiy6Zaf6Zac6Zae6Zab6ZqS6ZqT6ZqR6ZqX6ZuO6Zu66Zu96Zu46Zu16Z2z6Z236Z246Z2y6aCP6aCN6aCO6aKs6aO26aO56aav6aay6aaw6aa16aqt6aqr6a2b6bOq6bOt6bOn6bqA6bu95YOm5YOU5YOX5YOo5YOz5YOb5YOq5YOd5YOk5YOT5YOs5YOw5YOv5YOj5YOgIl0sWyJlMTQwIiwi5YeY5YqA5YqB5Yup5Yur5Yyw5Y6s5Zin5ZiV5ZiM5ZiS5Ze85ZiP5Zic5ZiB5ZiT5ZiC5Ze65Zid5ZiE5Ze/5Ze55aKJ5aG85aKQ5aKY5aKG5aKB5aG/5aG05aKL5aG65aKH5aKR5aKO5aG25aKC5aKI5aG75aKU5aKP5aO+5aWr5auc5auu5aul5auV5auq5aua5aut5aur5auz5aui5aug5aub5aus5aue5aud5auZ5auo5auf5a235a+gIl0sWyJlMWExIiwi5a+j5bGj5baC5baA5bW95baG5bW65baB5bW35baK5baJ5baI5bW+5bW85baN5bW55bW/5bmY5bmZ5bmT5buY5buR5buX5buO5buc5buV5buZ5buS5buU5b2E5b2D5b2v5b625oSs5oSo5oWB5oWe5oWx5oWz5oWS5oWT5oWy5oWs5oaA5oW05oWU5oW65oWb5oWl5oS75oWq5oWh5oWW5oip5oin5oir5pCr5pGN5pGb5pGd5pG05pG25pGy5pGz5pG95pG15pGm5pKm5pGO5pKC5pGe5pGc5pGL5pGT5pGg5pGQ5pG/5pC/5pGs5pGr5pGZ5pGl5pG35pWz5pag5pqh5pqg5pqf5pyF5pyE5pyi5qax5qa25qeJIl0sWyJlMjQwIiwi5qag5qeO5qaW5qaw5qas5qa85qaR5qaZ5qaO5qan5qaN5qap5qa+5qav5qa/5qeE5qa95qak5qeU5qa55qeK5qaa5qeP5qaz5qaT5qaq5qah5qae5qeZ5qaX5qaQ5qeC5qa15qal5qeG5q2K5q2N5q2L5q6e5q6f5q6g5q+D5q+E5q++5ruO5ru15rux5ryD5ryl5ru45ry35ru75ryu5ryJ5r2O5ryZ5rya5ryn5ryY5ry75ryS5rut5ryKIl0sWyJlMmExIiwi5ry25r2z5ru55ruu5ryt5r2A5ryw5ry85ry15rur5ryH5ryO5r2D5ryF5ru95ru25ry55ryc5ru85ry65ryf5ryN5rye5ryI5ryh54aH54aQ54aJ54aA54aF54aC54aP54W754aG54aB54aX54mE54mT54qX54qV54qT542D542N542R542M55Gi55Gz55Gx55G155Gy55Gn55Gu55SA55SC55SD55W955aQ55iW55iI55iM55iV55iR55iK55iU55q4556B5528556F556C552u556A552v552+556D56Ky56Kq56K056Kt56Ko56G+56Kr56Ke56Kl56Kg56Ks56Ki56Kk56aY56aK56aL56aW56aV56aU56aTIl0sWyJlMzQwIiwi56aX56aI56aS56aQ56ir56mK56iw56iv56io56im56qo56qr56qs56uu566I566c566K566R566Q566W566N566M566b566O566F566Y5YqE566Z566k566C57K757K/57K857K657an57a357eC57aj57aq57eB57eA57eF57ad57eO57eE57eG57eL57eM57av57a557aW57a857af57am57au57ap57ah57eJ572z57+i57+j57+l57+eIl0sWyJlM2ExIiwi6ICk6IGd6IGc6IaJ6IaG6IaD6IaH6IaN6IaM6IaL6IiV6JKX6JKk6JKh6JKf6JK66JOO6JOC6JKs6JKu6JKr6JK56JK06JOB6JON6JKq6JKa6JKx6JOQ6JKd6JKn6JK76JKi6JKU6JOH6JOM6JKb6JKp6JKv6JKo6JOW6JKY6JK26JOP6JKg6JOX6JOU6JOS6JOb6JKw6JKR6Jmh6Jyz6Jyj6Jyo6J2r6J2A6Jyu6Jye6Jyh6JyZ6Jyb6J2D6Jys6J2B6Jy+6J2G6Jyg6Jyy6Jyq6Jyt6Jy86JyS6Jy66Jyx6Jy16J2C6Jym6Jyn6Jy46Jyk6Jya6Jyw6JyR6KO36KOn6KOx6KOy6KO66KO+6KOu6KO86KO26KO7Il0sWyJlNDQwIiwi6KOw6KOs6KOr6Kad6Kah6Kaf6Kae6Kep6Ker6Keo6Kqr6KqZ6KqL6KqS6KqP6KqW6LC96LGo6LGp6LOV6LOP6LOX6LaW6LiJ6LiC6Le/6LiN6Le96LiK6LiD6LiH6LiG6LiF6Le+6LiA6LiE6LyQ6LyR6LyO6LyN6YSj6YSc6YSg6YSi6YSf6YSd6YSa6YSk6YSh6YSb6YW66YWy6YW56YWz6Yql6Yqk6Ym26Yqb6Ym66Yqg6YqU6Yqq6YqNIl0sWyJlNGExIiwi6Yqm6Yqa6Yqr6Ym56YqX6Ym/6Yqj6Yuu6YqO6YqC6YqV6Yqi6Ym96YqI6Yqh6YqK6YqG6YqM6YqZ6Yqn6Ym+6YqH6Yqp6Yqd6YqL6Yit6Zqe6Zqh6Zu/6Z2Y6Z296Z266Z2+6Z6D6Z6A6Z6C6Z276Z6E6Z6B6Z2/6Z+O6Z+N6aCW6aKt6aKu6aSC6aSA6aSH6aad6aac6aeD6aa56aa76aa66aeC6aa96aeH6aqx6auj6aun6ay+6ay/6a2g6a2h6a2f6bOx6bOy6bO16bqn5YO/5YSD5YSw5YO45YSG5YSH5YO25YO+5YSL5YSM5YO95YSK5YqL5YqM5Yux5Yuv5ZmI5ZmC5ZmM5Zi15ZmB5ZmK5ZmJ5ZmG5ZmYIl0sWyJlNTQwIiwi5Zma5ZmA5Ziz5Zi95Zis5Zi+5Zi45Ziq5Zi65Zya5aKr5aKd5aKx5aKg5aKj5aKv5aKs5aKl5aKh5aO/5au/5au05au95au35au25ayD5au45ayC5au55ayB5ayH5ayF5ayP5bGn5baZ5baX5baf5baS5bai5baT5baV5bag5bac5bah5baa5bae5bmp5bmd5bmg5bmc57ez5bub5bue5buh5b2J5b6y5oaL5oaD5oW55oax5oaw5oai5oaJIl0sWyJlNWExIiwi5oab5oaT5oav5oat5oaf5oaS5oaq5oah5oaN5oWm5oaz5oit5pGu5pGw5pKW5pKg5pKF5pKX5pKc5pKP5pKL5pKK5pKM5pKj5pKf5pGo5pKx5pKY5pW25pW65pW55pW75pay5paz5pq15pqw5pqp5pqy5pq35pqq5pqv5qiA5qiG5qiX5qel5qe45qiV5qex5qek5qig5qe/5qes5qei5qib5qid5qe+5qin5qey5qeu5qiU5qe35qen5qmA5qiI5qem5qe75qiN5qe85qer5qiJ5qiE5qiY5qil5qiP5qe25qim5qiH5qe05qiW5q2R5q6l5q6j5q6i5q6m5rCB5rCA5q+/5rCC5r2B5rym5r2+5r6H5r+G5r6SIl0sWyJlNjQwIiwi5r6N5r6J5r6M5r2i5r2P5r6F5r2a5r6W5r225r2s5r6C5r2V5r2y5r2S5r2Q5r2X5r6U5r6T5r2d5ryA5r2h5r2r5r295r2n5r6Q5r2T5r6L5r2p5r2/5r6V5r2j5r235r2q5r2754ay54av54ab54aw54ag54aa54ap54a154ad54al54ae54ak54ah54aq54ac54an54az54qY54qa542Y542S542e542f542g542d542b542h542a542ZIl0sWyJlNmExIiwi542i55KH55KJ55KK55KG55KB55G955KF55KI55G855G555SI55SH55W+55il55ie55iZ55id55ic55ij55ia55io55ib55qc55qd55qe55qb556N556P556J556I56ON56K756OP56OM56OR56OO56OU56OI56OD56OE56OJ56aa56ah56ag56ac56ai56ab5q2256i556qy56q056qz566356+L566+566s56+O566v566556+K566157OF57OI57OM57OL57e357eb57eq57en57eX57eh57iD57e657em57e257ex57ew57eu57ef5722576s576w576t57+t57+r57+q57+s57+m57+o6IGk6IGn6Iaj6IafIl0sWyJlNzQwIiwi6Iae6IaV6Iai6IaZ6IaX6IiW6ImP6ImT6ImS6ImQ6ImO6ImR6JSk6JS76JSP6JSA6JSp6JSO6JSJ6JSN6JSf6JSK6JSn6JSc6JO76JSr6JO66JSI6JSM6JO06JSq6JOy6JSV6JO36JOr6JOz6JO86JSS6JOq6JOp6JSW6JO+6JSo6JSd6JSu6JSC6JO96JSe6JO26JSx6JSm6JOn6JOo6JOw6JOv6JO56JSY6JSg6JSw6JSL6JSZ6JSv6JmiIl0sWyJlN2ExIiwi6J2W6J2j6J2k6J236J+h6J2z6J2Y6J2U6J2b6J2S6J2h6J2a6J2R6J2e6J2t6J2q6J2Q6J2O6J2f6J2d6J2v6J2s6J266J2u6J2c6J2l6J2P6J276J216J2i6J2n6J2p6KGa6KSF6KSM6KSU6KSL6KSX6KSY6KSZ6KSG6KSW6KSR6KSO6KSJ6Kai6Kak6Kaj6Ket6Kew6Kes6KuP6KuG6Kq46KuT6KuR6KuU6KuV6Kq76KuX6Kq+6KuA6KuF6KuY6KuD6Kq66Kq96KuZ6LC+6LGN6LKP6LOl6LOf6LOZ6LOo6LOa6LOd6LOn6Lag6Lac6Lah6Lab6Lig6Lij6Lil6Lik6Liu6LiV6Lib6LiW6LiR6LiZ6Lim6LinIl0sWyJlODQwIiwi6LiU6LiS6LiY6LiT6Lic6LiX6Lia6Lys6Lyk6LyY6Lya6Lyg6Lyj6LyW6LyX6YGz6YGw6YGv6YGn6YGr6YSv6YSr6YSp6YSq6YSy6YSm6YSu6YaF6YaG6YaK6YaB6YaC6YaE6YaA6YuQ6YuD6YuE6YuA6YuZ6Yq26YuP6Yux6Yuf6YuY6Yup6YuX6Yud6YuM6Yuv6YuC6Yuo6YuK6YuI6YuO6Yum6YuN6YuV6YuJ6Yug6Yue6Yun6YuR6YuTIl0sWyJlOGExIiwi6Yq16Yuh6YuG6Yq06ZW86Zas6Zar6Zau6Zaw6Zqk6Zqi6ZuT6ZyF6ZyI6ZyC6Z2a6Z6K6Z6O6Z6I6Z+Q6Z+P6aCe6aCd6aCm6aCp6aCo6aCg6aCb6aCn6aKy6aSI6aO66aSR6aSU6aSW6aSX6aSV6aec6aeN6aeP6aeT6aeU6aeO6aeJ6aeW6aeY6aeL6aeX6aeM6aqz6aus6aur6auz6auy6aux6a2G6a2D6a2n6a206a2x6a2m6a226a216a2w6a2o6a2k6a2s6bO86bO66bO96bO/6bO36bSH6bSA6bO56bO76bSI6bSF6bSE6bqD6buT6byP6byQ5YSc5YST5YSX5YSa5YSR5Yee5Yy05Y+h5Zmw5Zmg5ZmuIl0sWyJlOTQwIiwi5Zmz5Zmm5Zmj5Zmt5Zmy5Zme5Zm35Zyc5Zyb5aOI5aK95aOJ5aK/5aK65aOC5aK85aOG5ayX5ayZ5ayb5ayh5ayU5ayT5ayQ5ayW5ayo5aya5ayg5aye5a+v5bas5bax5bap5ban5ba15baw5bau5baq5bao5bay5bat5bav5ba05bmn5bmo5bmm5bmv5bup5bun5bum5buo5bul5b2L5b685oad5oao5oaW5oeF5oa05oeG5oeB5oeM5oa6Il0sWyJlOWExIiwi5oa/5oa45oaM5pOX5pOW5pOQ5pOP5pOJ5pK95pKJ5pOD5pOb5pOz5pOZ5pSz5pW/5pW85pai5puI5pq+5puA5puK5puL5puP5pq95pq75pq65puM5pyj5qi05qmm5qmJ5qmn5qiy5qmo5qi+5qmd5qmt5qm25qmb5qmR5qio5qma5qi75qi/5qmB5qmq5qmk5qmQ5qmP5qmU5qmv5qmp5qmg5qi85qme5qmW5qmV5qmN5qmO5qmG5q2V5q2U5q2W5q6n5q6q5q6r5q+I5q+H5rCE5rCD5rCG5r6t5r+L5r6j5r+H5r685r+O5r+I5r2e5r+E5r695r6e5r+K5r6o54CE5r6l5r6u5r665r6s5r6q5r+P5r6/5r64Il0sWyJlYTQwIiwi5r6i5r+J5r6r5r+N5r6v5r6y5r6w54eF54eC54a/54a454eW54eA54eB54eL54eU54eK54eH54eP54a954eY54a854eG54ea54eb54qd54qe542p542m542n542s542l542r542q55G/55Ka55Kg55KU55KS55KV55Kh55SL55aA55iv55it55ix55i955iz55i855i155iy55iw55q755um556a556d556h556c556b556i556j556V556ZIl0sWyJlYWExIiwi556X56Od56Op56Ol56Oq56Oe56Oj56Ob56Oh56Oi56Ot56Of56Og56ak56mE56mI56mH56q256q456q156qx56q356+e56+j56+n56+d56+V56+l56+a56+o56+556+U56+q56+i56+c56+r56+Y56+f57OS57OU57OX57OQ57OR57iS57ih57iX57iM57if57ig57iT57iO57ic57iV57ia57ii57iL57iP57iW57iN57iU57il57ik572D572757285726576x57+v6ICq6ICp6IGs6Iax6Iam6Iau6Ia56Ia16Iar6Iaw6Ias6Ia06Iay6Ia36Ian6Iey6ImV6ImW6ImX6JWW6JWF6JWr6JWN6JWT6JWh6JWYIl0sWyJlYjQwIiwi6JWA6JWG6JWk6JWB6JWi6JWE6JWR6JWH6JWj6JS+6JWb6JWx6JWO6JWu6JW16JWV6JWn6JWg6JaM6JWm6JWd6JWU6JWl6JWs6Jmj6Jml6Jmk6J6b6J6P6J6X6J6T6J6S6J6I6J6B6J6W6J6Y6J256J6H6J6j6J6F6J6Q6J6R6J6d6J6E6J6U6J6c6J6a6J6J6KSe6KSm6KSw6KSt6KSu6KSn6KSx6KSi6KSp6KSj6KSv6KSs6KSf6Kex6KugIl0sWyJlYmExIiwi6Kui6Kuy6Ku06Ku16Kud6KyU6Kuk6Kuf6Kuw6KuI6Kue6Kuh6Kuo6Ku/6Kuv6Ku76LKR6LKS6LKQ6LO16LOu6LOx6LOw6LOz6LWs6LWu6Lal6Lan6Liz6Li+6Li46LmA6LmF6Li26Li86Li96LmB6Liw6Li/6Lq96Ly26Lyu6Ly16Lyy6Ly56Ly36Ly06YG26YG56YG76YKG6YO66YSz6YS16YS26YaT6YaQ6YaR6YaN6YaP6Yyn6Yye6YyI6Yyf6YyG6YyP6Y266Yy46Yy86Yyb6Yyj6YyS6YyB6Y2G6Yyt6YyO6YyN6YuL6Yyd6Yu66Yyl6YyT6Yu56Yu36Yy06YyC6Yyk6Yu/6Yyp6Yy56Yy16Yyq6YyU6YyMIl0sWyJlYzQwIiwi6YyL6Yu+6YyJ6YyA6Yu76YyW6Za86ZeN6Za+6Za56Za66Za26Za/6Za16Za96Zqp6ZuU6ZyL6ZyS6ZyQ6Z6Z6Z6X6Z6U6Z+w6Z+46aC16aCv6aCy6aSk6aSf6aSn6aSp6aae6aeu6aes6ael6aek6aew6aej6aeq6aep6aen6aq56aq/6aq06aq76au26au66au56au36ayz6a6A6a6F6a6H6a286a2+6a276a6C6a6T6a6S6a6Q6a266a6VIl0sWyJlY2ExIiwi6a296a6I6bSl6bSX6bSg6bSe6bSU6bSp6bSd6bSY6bSi6bSQ6bSZ6bSf6bqI6bqG6bqH6bqu6bqt6buV6buW6bu66byS6by95YSm5YSl5YSi5YSk5YSg5YSp5Yu05ZqT5ZqM5ZqN5ZqG5ZqE5ZqD5Zm+5ZqC5Zm/5ZqB5aOW5aOU5aOP5aOS5ayt5ayl5ayy5ayj5ays5ayn5aym5ayv5ayu5a275a+x5a+y5ba35bms5bmq5b6+5b675oeD5oa15oa85oen5oeg5oel5oek5oeo5oee5pOv5pOp5pOj5pOr5pOk5pOo5paB5paA5pa25pea5puS5qqN5qqW5qqB5qql5qqJ5qqf5qqb5qqh5qqe5qqH5qqT5qqOIl0sWyJlZDQwIiwi5qqV5qqD5qqo5qqk5qqR5qm/5qqm5qqa5qqF5qqM5qqS5q2b5q6t5rCJ5r+M5r6p5r+05r+U5r+j5r+c5r+t5r+n5r+m5r+e5r+y5r+d5r+i5r+o54eh54ex54eo54ey54ek54ew54ei542z542u542v55KX55Ky55Kr55KQ55Kq55Kt55Kx55Kl55Kv55SQ55SR55SS55SP55aE55mD55mI55mJ55mH55qk55up5561556r556y55635562Il0sWyJlZGExIiwi5560556x556o55+w56Oz56O956SC56O756O856Oy56SF56O556O+56SE56ar56ao56mc56mb56mW56mY56mU56ma56q+56uA56uB57CF57CP56+y57CA56+/56+757CO56+057CL56+z57CC57CJ57CD57CB56+456+957CG56+w56+x57CQ57CK57Oo57it57i857mC57iz6aGI57i457iq57mJ57mA57mH57ip57mM57iw57i757i257mE57i6572F572/572+572957+057+y6ICs6Ia76IeE6IeM6IeK6IeF6IeH6Ia86Iep6Imb6Ima6Imc6JaD6JaA6JaP6Jan6JaV6Jag6JaL6Jaj6JW76Jak6Jaa6JaeIl0sWyJlZTQwIiwi6JW36JW86JaJ6Jah6JW66JW46JWX6JaO6JaW6JaG6JaN6JaZ6Jad6JaB6Jai6JaC6JaI6JaF6JW56JW26JaY6JaQ6Jaf6Jmo6J6+6J6q6J6t6J+F6J6w6J6s6J656J616J686J6u6J+J6J+D6J+C6J+M6J636J6v6J+E6J+K6J606J626J6/6J646J696J+e6J6y6KS16KSz6KS86KS+6KWB6KWS6KS36KWC6Kat6Kav6Kau6Key6Kez6KyeIl0sWyJlZWExIiwi6KyY6KyW6KyR6KyF6KyL6Kyi6KyP6KyS6KyV6KyH6KyN6KyI6KyG6Kyc6KyT6Kya6LGP6LGw6LGy6LGx6LGv6LKV6LKU6LO56LWv6LmO6LmN6LmT6LmQ6LmM6LmH6L2D6L2A6YKF6YG+6YS46Yaa6Yai6Yab6YaZ6Yaf6Yah6Yad6Yag6Y6h6Y6D6Y6v6Y2k6Y2W6Y2H6Y286Y2Y6Y2c6Y226Y2J6Y2Q6Y2R6Y2g6Y2t6Y6P6Y2M6Y2q6Y256Y2X6Y2V6Y2S6Y2P6Y2x6Y236Y276Y2h6Y2e6Y2j6Y2n6Y6A6Y2O6Y2Z6ZeH6ZeA6ZeJ6ZeD6ZeF6Za36Zqu6Zqw6Zqs6Zyg6Zyf6ZyY6Zyd6ZyZ6Z6a6Z6h6Z6cIl0sWyJlZjQwIiwi6Z6e6Z6d6Z+V6Z+U6Z+x6aGB6aGE6aGK6aGJ6aGF6aGD6aSl6aSr6aSs6aSq6aSz6aSy6aSv6aSt6aSx6aSw6aaY6aaj6aah6aiC6ae66ae06ae36ae56ae46ae26ae76ae96ae+6ae86aiD6aq+6au+6au96ayB6au86a2I6a6a6a6o6a6e6a6b6a6m6a6h6a6l6a6k6a6G6a6i6a6g6a6v6bSz6bWB6bWn6bS26bSu6bSv6bSx6bS46bSwIl0sWyJlZmExIiwi6bWF6bWC6bWD6bS+6bS36bWA6bS957+16bSt6bqK6bqJ6bqN6bqw6buI6bua6bu76bu/6byk6byj6byi6b2U6b6g5YSx5YSt5YSu5ZqY5Zqc5ZqX5Zqa5Zqd5ZqZ5aWw5ay85bGp5bGq5beA5bmt5bmu5oeY5oef5oet5oeu5oex5oeq5oew5oer5oeW5oep5pO/5pSE5pO95pO45pSB5pSD5pO85paU5peb5pua5pub5puY5quF5qq55qq95quh5quG5qq65qq25qq35quH5qq05qqt5q2e5q+J5rCL54CH54CM54CN54CB54CF54CU54CO5r+/54CA5r+754Cm5r+85r+354CK54iB54e/54e554iD54e95422Il0sWyJmMDQwIiwi55K455OA55K155OB55K+55K255K755OC55SU55ST55mc55mk55mZ55mQ55mT55mX55ma55qm55q955us55+C556656O/56SM56ST56SU56SJ56SQ56SS56SR56at56as56mf57Cc57Cp57CZ57Cg57Cf57Ct57Cd57Cm57Co57Ci57Cl57Cw57mc57mQ57mW57mj57mY57mi57mf57mR57mg57mX57mT5761576z57+357+46IG16IeR6IeSIl0sWyJmMGExIiwi6IeQ6Imf6Ime6Ja06JeG6JeA6JeD6JeC6Jaz6Ja16Ja96JeH6JeE6Ja/6JeL6JeO6JeI6JeF6Jax6Ja26JeS6Jik6Ja46Ja36Ja+6Jmp6J+n6J+m6J+i6J+b6J+r6J+q6J+l6J+f6J+z6J+k6J+U6J+c6J+T6J+t6J+Y6J+j6J6k6J+X6J+Z6KCB6J+06J+o6J+d6KWT6KWL6KWP6KWM6KWG6KWQ6KWR6KWJ6Kyq6Kyn6Kyj6Kyz6Kyw6Ky16K2H6Kyv6Ky86Ky+6Kyx6Kyl6Ky36Kym6Ky26Kyu6Kyk6Ky76Ky96Ky66LGC6LG16LKZ6LKY6LKX6LO+6LSE6LSC6LSA6Lmc6Lmi6Lmg6LmX6LmW6Lme6Lml6LmnIl0sWyJmMTQwIiwi6Lmb6Lma6Lmh6Lmd6Lmp6LmU6L2G6L2H6L2I6L2L6YSo6YS66YS76YS+6Yao6Yal6Yan6Yav6Yaq6Y616Y6M6Y6S6Y636Y6b6Y6d6Y6J6Y6n6Y6O6Y6q6Y6e6Y6m6Y6V6Y6I6Y6Z6Y6f6Y6N6Y6x6Y6R6Y6y6Y6k6Y6o6Y606Y6j6Y6l6ZeS6ZeT6ZeR6Zqz6ZuX6Zua5beC6Zuf6ZuY6Zud6Zyj6Zyi6Zyl6Z6s6Z6u6Z6o6Z6r6Z6k6Z6qIl0sWyJmMWExIiwi6Z6i6Z6l6Z+X6Z+Z6Z+W6Z+Y6Z+66aGQ6aGR6aGS6aK46aWB6aS86aS66aiP6aiL6aiJ6aiN6aiE6aiR6aiK6aiF6aiH6aiG6auA6auc6ayI6ayE6ayF6ayp6ay16a2K6a2M6a2L6a+H6a+G6a+D6a6/6a+B6a616a646a+T6a626a+E6a656a696bWc6bWT6bWP6bWK6bWb6bWL6bWZ6bWW6bWM6bWX6bWS6bWU6bWf6bWY6bWa6bqO6bqM6buf6byB6byA6byW6byl6byr6byq6byp6byo6b2M6b2V5YS05YS15YqW5Yu35Y605Zqr5Zqt5Zqm5Zqn5Zqq5Zqs5aOa5aOd5aOb5aSS5ay95ay+5ay/5beD5bmwIl0sWyJmMjQwIiwi5b6/5oe75pSH5pSQ5pSN5pSJ5pSM5pSO5paE5pee5ped5pue5qun5qug5quM5quR5quZ5quL5quf5quc5quQ5qur5quP5quN5que5q2g5q6w5rCM54CZ54Cn54Cg54CW54Cr54Ch54Ci54Cj54Cp54CX54Ck54Cc54Cq54iM54iK54iH54iC54iF54ql54qm54qk54qj54qh55OL55OF55K355OD55SW55mg55+J55+K55+E55+x56Sd56SbIl0sWyJmMmExIiwi56Sh56Sc56SX56Se56aw56mn56mo57Cz57C857C557Cs57C757Os57Oq57m257m157m457mw57m357mv57m657my57m057mo572L572K576D576G576357+957++6IG46IeX6IeV6Imk6Imh6Imj6Jer6Jex6Jet6JeZ6Jeh6Jeo6Jea6JeX6Jes6Jey6Je46JeY6Jef6Jej6Jec6JeR6Jew6Jem6Jev6Jee6Jei6KCA6J+66KCD6J+26J+36KCJ6KCM6KCL6KCG6J+86KCI6J+/6KCK6KCC6KWi6KWa6KWb6KWX6KWh6KWc6KWY6KWd6KWZ6KaI6Ka36Ka26Ke26K2Q6K2I6K2K6K2A6K2T6K2W6K2U6K2L6K2VIl0sWyJmMzQwIiwi6K2R6K2C6K2S6K2X6LGD6LG36LG26LKa6LSG6LSH6LSJ6Las6Laq6Lat6Lar6Lmt6Lm46Lmz6Lmq6Lmv6Lm76LuC6L2S6L2R6L2P6L2Q6L2T6L606YWA6YS/6Yaw6Yat6Y+e6Y+H6Y+P6Y+C6Y+a6Y+Q6Y+56Y+s6Y+M6Y+Z6Y6p6Y+m6Y+K6Y+U6Y+u6Y+j6Y+V6Y+E6Y+O6Y+A6Y+S6Y+n6ZW96Zea6Zeb6Zuh6Zyp6Zyr6Zys6Zyo6ZymIl0sWyJmM2ExIiwi6Z6z6Z636Z626Z+d6Z+e6Z+f6aGc6aGZ6aGd6aGX6aK/6aK96aK76aK+6aWI6aWH6aWD6aam6aan6aia6aiV6ail6aid6aik6aib6aii6aig6ain6aij6aie6aic6aiU6auC6ayL6ayK6ayO6ayM6ay36a+q6a+r6a+g6a+e6a+k6a+m6a+i6a+w6a+U6a+X6a+s6a+c6a+Z6a+l6a+V6a+h6a+a6bW36baB6baK6baE6baI6bWx6baA6bW46baG6baL6baM6bW96bWr6bW06bW16bWw6bWp6baF6bWz6bW76baC6bWv6bW56bW/6baH6bWo6bqU6bqR6buA6bu86byt6b2A6b2B6b2N6b2W6b2X6b2Y5Yy35ZqyIl0sWyJmNDQwIiwi5Zq15Zqz5aOj5a2F5beG5beH5buu5buv5b+A5b+B5oe55pSX5pSW5pSV5pST5pef5puo5puj5puk5quz5quw5quq5quo5qu55qux5quu5quv54C854C154Cv54C354C054Cx54GC54C454C/54C654C554GA54C754Cz54GB54iT54iU54qo5429542855K655qr55qq55q+55ut55+M55+O55+P55+N55+y56Sl56Sj56Sn56So56Sk56SpIl0sWyJmNGExIiwi56ay56mu56ms56mt56u357GJ57GI57GK57GH57GF57Ou57m757m+57qB57qA576657+/6IG56Ieb6IeZ6IiL6Imo6Imp6Jii6Je/6JiB6Je+6Jib6JiA6Je26JiE6JiJ6JiF6JiM6Je96KCZ6KCQ6KCR6KCX6KCT6KCW6KWj6KWm6Ka56Ke36K2g6K2q6K2d6K2o6K2j6K2l6K2n6K2t6Lau6LqG6LqI6LqE6L2Z6L2W6L2X6L2V6L2Y6L2a6YKN6YWD6YWB6Ya36Ya16Yay6Yaz6ZCL6ZCT6Y+76ZCg6ZCP6ZCU6Y++6ZCV6ZCQ6ZCo6ZCZ6ZCN6Y+16ZCA6Y+36ZCH6ZCO6ZCW6ZCS6Y+66ZCJ6Y+46ZCK6Y+/Il0sWyJmNTQwIiwi6Y+86ZCM6Y+26ZCR6ZCG6Zee6Zeg6Zef6Zyu6Zyv6Z656Z676Z+96Z++6aGg6aGi6aGj6aGf6aOB6aOC6aWQ6aWO6aWZ6aWM6aWL6aWT6aiy6ai06aix6ais6aiq6ai26aip6aiu6ai46ait6auH6auK6auG6ayQ6ayS6ayR6bCL6bCI6a+36bCF6bCS6a+46bGA6bCH6bCO6bCG6bCX6bCU6bCJ6baf6baZ6bak6bad6baS6baY6baQ6babIl0sWyJmNWExIiwi6bag6baU6bac6baq6baX6bah6baa6bai6bao6bae6baj6ba/6bap6baW6bam6ban6bqZ6bqb6bqa6bul6buk6bun6bum6byw6byu6b2b6b2g6b2e6b2d6b2Z6b6R5YS65YS55YqY5YqX5ZuD5Zq95Zq+5a2I5a2H5beL5beP5bux5oe95pSb5qyC5qu85qyD5qu45qyA54GD54GE54GK54GI54GJ54GF54GG54id54ia54iZ542+55SX55mq55+Q56St56Sx56Sv57GU57GT57Oy57qK57qH57qI57qL57qG57qN572N57676ICw6Ied6JiY6Jiq6Jim6Jif6Jij6Jic6JiZ6Jin6Jiu6Jih6Jig6Jip6Jie6JilIl0sWyJmNjQwIiwi6KCp6KCd6KCb6KCg6KCk6KCc6KCr6KGK6KWt6KWp6KWu6KWr6Ke66K256K246K2F6K266K276LSQ6LSU6Lav6LqO6LqM6L2e6L2b6L2d6YWG6YWE6YWF6Ya56ZC/6ZC76ZC26ZCp6ZC96ZC86ZCw6ZC56ZCq6ZC36ZCs6ZGA6ZCx6Zel6Zek6Zej6Zy16Zy66Z6/6Z+h6aGk6aOJ6aOG6aOA6aWY6aWW6ai56ai96amG6amE6amC6amB6ai6Il0sWyJmNmExIiwi6ai/6auN6ayV6ayX6ayY6ayW6ay66a2S6bCr6bCd6bCc6bCs6bCj6bCo6bCp6bCk6bCh6ba36ba26ba86beB6beH6beK6beP6ba+6beF6beD6ba76ba16beO6ba56ba66bas6beI6bax6bat6beM6baz6beN6bay6bm66bqc6bur6buu6but6byb6byY6bya6byx6b2O6b2l6b2k6b6S5Lq55ZuG5ZuF5ZuL5aWx5a2L5a2M5beV5beR5buy5pSh5pSg5pSm5pSi5qyL5qyI5qyJ5rCN54GV54GW54GX54GS54ie54if54qp542/55OY55OV55OZ55OX55mt55qt56S156a056mw56mx57GX57Gc57GZ57Gb57GaIl0sWyJmNzQwIiwi57O057Ox57qR572P576H6Iee6Imr6Ji06Ji16Jiz6Jis6Jiy6Ji26KCs6KCo6KCm6KCq6KCl6KWx6Ka/6Ka+6Ke76K2+6K6E6K6C6K6G6K6F6K2/6LSV6LqV6LqU6Lqa6LqS6LqQ6LqW6LqX6L2g6L2i6YWH6ZGM6ZGQ6ZGK6ZGL6ZGP6ZGH6ZGF6ZGI6ZGJ6ZGG6Zy/6Z+j6aGq6aGp6aOL6aWU6aWb6amO6amT6amU6amM6amP6amI6amKIl0sWyJmN2ExIiwi6amJ6amS6amQ6auQ6ayZ6ayr6ay76a2W6a2V6bGG6bGI6bC/6bGE6bC56bCz6bGB6bC86bC36bC06bCy6bC96bC26beb6beS6bee6bea6beL6beQ6bec6beR6bef6bep6beZ6beY6beW6be16beV6bed6bq26buw6by16byz6byy6b2C6b2r6b6V6b6i5YS95YqZ5aOo5aOn5aWy5a2N5beY6KCv5b2P5oiB5oiD5oiE5pSp5pSl5paW5pur5qyR5qyS5qyP5q+K54Gb54Ga54ii546C546B546D55mw55+U57Gn57Gm57qV6Ims6Ji66JmA6Ji56Ji86Jix6Ji76Ji+6KCw6KCy6KCu6KCz6KW26KW06KWz6Ke+Il0sWyJmODQwIiwi6K6M6K6O6K6L6K6I6LGF6LSZ6LqY6L2k6L2j6Ya86ZGi6ZGV6ZGd6ZGX6ZGe6Z+E6Z+F6aCA6amW6amZ6aye6ayf6ayg6bGS6bGY6bGQ6bGK6bGN6bGL6bGV6bGZ6bGM6bGO6be76be36bev6bej6ber6be46bek6be26beh6beu6bem6bey6bew6bei6bes6be06bez6beo6bet6buC6buQ6buy6buz6byG6byc6by46by36by26b2D6b2PIl0sWyJmOGExIiwi6b2x6b2w6b2u6b2v5ZuT5ZuN5a2O5bGt5pSt5put5puu5qyT54Gf54Gh54Gd54Gg54ij55Ob55Ol55+V56S456a356a257Gq57qX576J6Imt6JmD6KC46KC36KC16KGL6K6U6K6V6Lqe6Lqf6Lqg6Lqd6Ya+6Ya96YeC6ZGr6ZGo6ZGp6Zul6Z2G6Z2D6Z2H6Z+H6Z+l6ame6auV6a2Z6bGj6bGn6bGm6bGi6bGe6bGg6biC6be+6biH6biD6biG6biF6biA6biB6biJ6be/6be96biE6bqg6bye6b2G6b206b216b225ZuU5pSu5pa45qyY5qyZ5qyX5qya54Gi54im54qq55+Y55+Z56S557Gp57Gr57O257qaIl0sWyJmOTQwIiwi57qY57qb57qZ6Ieg6Ieh6JmG6JmH6JmI6KW56KW66KW86KW76Ke/6K6Y6K6Z6Lql6Lqk6Lqj6ZGu6ZGt6ZGv6ZGx6ZGz6Z2J6aGy6aWf6bGo6bGu6bGt6biL6biN6biQ6biP6biS6biR6bqh6bu16byJ6b2H6b246b276b266b255Zye54Gm57Gv6KC86Lay6Lqm6YeD6ZG06ZG46ZG26ZG16amg6bG06bGz6bGx6bG16biU6biT6bu26byKIl0sWyJmOWExIiwi6b6k54Go54Gl57O36Jmq6KC+6KC96KC/6K6e6LKc6Lqp6LuJ6Z2L6aGz6aG06aOM6aWh6aar6amk6amm6amn6ayk6biV6biX6b2I5oiH5qye54in6JmM6Lqo6ZKC6ZKA6ZKB6amp6amo6ayu6biZ54ip6JmL6K6f6ZKD6bG56bq355m16amr6bG66bid54Gp54Gq6bqk6b2+6b2J6b6Y56KB6Yq56KOP5aK75oGS57Kn5au64pWU4pWm4pWX4pWg4pWs4pWj4pWa4pWp4pWd4pWS4pWk4pWV4pWe4pWq4pWh4pWY4pWn4pWb4pWT4pWl4pWW4pWf4pWr4pWi4pWZ4pWo4pWc4pWR4pWQ4pWt4pWu4pWw4pWv4paTIl1dCgovKioqLyB9KSwKLyogOTMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIEFycmF5VCwgTnVtYmVyVCwgdXRpbHM7CgogIE51bWJlclQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKS5OdW1iZXI7CgogIHV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7CgogIEFycmF5VCA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIEFycmF5VCh0eXBlLCBsZW5ndGgsIGxlbmd0aFR5cGUpIHsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7CiAgICAgIHRoaXMubGVuZ3RoVHlwZSA9IGxlbmd0aFR5cGUgIT0gbnVsbCA/IGxlbmd0aFR5cGUgOiAnY291bnQnOwogICAgfQoKICAgIEFycmF5VC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oc3RyZWFtLCBwYXJlbnQpIHsKICAgICAgdmFyIGN0eCwgaSwgbGVuZ3RoLCBwb3MsIHJlcywgdGFyZ2V0LCBfaTsKICAgICAgcG9zID0gc3RyZWFtLnBvczsKICAgICAgcmVzID0gW107CiAgICAgIGN0eCA9IHBhcmVudDsKICAgICAgaWYgKHRoaXMubGVuZ3RoICE9IG51bGwpIHsKICAgICAgICBsZW5ndGggPSB1dGlscy5yZXNvbHZlTGVuZ3RoKHRoaXMubGVuZ3RoLCBzdHJlYW0sIHBhcmVudCk7CiAgICAgIH0KICAgICAgaWYgKHRoaXMubGVuZ3RoIGluc3RhbmNlb2YgTnVtYmVyVCkgewogICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHJlcywgewogICAgICAgICAgcGFyZW50OiB7CiAgICAgICAgICAgIHZhbHVlOiBwYXJlbnQKICAgICAgICAgIH0sCiAgICAgICAgICBfc3RhcnRPZmZzZXQ6IHsKICAgICAgICAgICAgdmFsdWU6IHBvcwogICAgICAgICAgfSwKICAgICAgICAgIF9jdXJyZW50T2Zmc2V0OiB7CiAgICAgICAgICAgIHZhbHVlOiAwLAogICAgICAgICAgICB3cml0YWJsZTogdHJ1ZQogICAgICAgICAgfSwKICAgICAgICAgIF9sZW5ndGg6IHsKICAgICAgICAgICAgdmFsdWU6IGxlbmd0aAogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGN0eCA9IHJlczsKICAgICAgfQogICAgICBpZiAoKGxlbmd0aCA9PSBudWxsKSB8fCB0aGlzLmxlbmd0aFR5cGUgPT09ICdieXRlcycpIHsKICAgICAgICB0YXJnZXQgPSBsZW5ndGggIT0gbnVsbCA/IHN0cmVhbS5wb3MgKyBsZW5ndGggOiAocGFyZW50ICE9IG51bGwgPyBwYXJlbnQuX2xlbmd0aCA6IHZvaWQgMCkgPyBwYXJlbnQuX3N0YXJ0T2Zmc2V0ICsgcGFyZW50Ll9sZW5ndGggOiBzdHJlYW0ubGVuZ3RoOwogICAgICAgIHdoaWxlIChzdHJlYW0ucG9zIDwgdGFyZ2V0KSB7CiAgICAgICAgICByZXMucHVzaCh0aGlzLnR5cGUuZGVjb2RlKHN0cmVhbSwgY3R4KSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGZvciAoaSA9IF9pID0gMDsgX2kgPCBsZW5ndGg7IGkgPSBfaSArPSAxKSB7CiAgICAgICAgICByZXMucHVzaCh0aGlzLnR5cGUuZGVjb2RlKHN0cmVhbSwgY3R4KSk7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiByZXM7CiAgICB9OwoKICAgIEFycmF5VC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKGFycmF5LCBjdHgpIHsKICAgICAgdmFyIGl0ZW0sIHNpemUsIF9pLCBfbGVuOwogICAgICBpZiAoIWFycmF5KSB7CiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS5zaXplKG51bGwsIGN0eCkgKiB1dGlscy5yZXNvbHZlTGVuZ3RoKHRoaXMubGVuZ3RoLCBudWxsLCBjdHgpOwogICAgICB9CiAgICAgIHNpemUgPSAwOwogICAgICBpZiAodGhpcy5sZW5ndGggaW5zdGFuY2VvZiBOdW1iZXJUKSB7CiAgICAgICAgc2l6ZSArPSB0aGlzLmxlbmd0aC5zaXplKCk7CiAgICAgICAgY3R4ID0gewogICAgICAgICAgcGFyZW50OiBjdHgKICAgICAgICB9OwogICAgICB9CiAgICAgIGZvciAoX2kgPSAwLCBfbGVuID0gYXJyYXkubGVuZ3RoOyBfaSA8IF9sZW47IF9pKyspIHsKICAgICAgICBpdGVtID0gYXJyYXlbX2ldOwogICAgICAgIHNpemUgKz0gdGhpcy50eXBlLnNpemUoaXRlbSwgY3R4KTsKICAgICAgfQogICAgICByZXR1cm4gc2l6ZTsKICAgIH07CgogICAgQXJyYXlULnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIGFycmF5LCBwYXJlbnQpIHsKICAgICAgdmFyIGN0eCwgaSwgaXRlbSwgcHRyLCBfaSwgX2xlbjsKICAgICAgY3R4ID0gcGFyZW50OwogICAgICBpZiAodGhpcy5sZW5ndGggaW5zdGFuY2VvZiBOdW1iZXJUKSB7CiAgICAgICAgY3R4ID0gewogICAgICAgICAgcG9pbnRlcnM6IFtdLAogICAgICAgICAgc3RhcnRPZmZzZXQ6IHN0cmVhbS5wb3MsCiAgICAgICAgICBwYXJlbnQ6IHBhcmVudAogICAgICAgIH07CiAgICAgICAgY3R4LnBvaW50ZXJPZmZzZXQgPSBzdHJlYW0ucG9zICsgdGhpcy5zaXplKGFycmF5LCBjdHgpOwogICAgICAgIHRoaXMubGVuZ3RoLmVuY29kZShzdHJlYW0sIGFycmF5Lmxlbmd0aCk7CiAgICAgIH0KICAgICAgZm9yIChfaSA9IDAsIF9sZW4gPSBhcnJheS5sZW5ndGg7IF9pIDwgX2xlbjsgX2krKykgewogICAgICAgIGl0ZW0gPSBhcnJheVtfaV07CiAgICAgICAgdGhpcy50eXBlLmVuY29kZShzdHJlYW0sIGl0ZW0sIGN0eCk7CiAgICAgIH0KICAgICAgaWYgKHRoaXMubGVuZ3RoIGluc3RhbmNlb2YgTnVtYmVyVCkgewogICAgICAgIGkgPSAwOwogICAgICAgIHdoaWxlIChpIDwgY3R4LnBvaW50ZXJzLmxlbmd0aCkgewogICAgICAgICAgcHRyID0gY3R4LnBvaW50ZXJzW2krK107CiAgICAgICAgICBwdHIudHlwZS5lbmNvZGUoc3RyZWFtLCBwdHIudmFsKTsKICAgICAgICB9CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIEFycmF5VDsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBBcnJheVQ7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiA5NCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuNy4xCihmdW5jdGlvbigpIHsKICB2YXIgU3RydWN0LCB1dGlsczsKCiAgdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTsKCiAgU3RydWN0ID0gKGZ1bmN0aW9uKCkgewogICAgZnVuY3Rpb24gU3RydWN0KGZpZWxkcykgewogICAgICB0aGlzLmZpZWxkcyA9IGZpZWxkcyAhPSBudWxsID8gZmllbGRzIDoge307CiAgICB9CgogICAgU3RydWN0LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIHBhcmVudCwgbGVuZ3RoKSB7CiAgICAgIHZhciByZXMsIF9yZWY7CiAgICAgIGlmIChsZW5ndGggPT0gbnVsbCkgewogICAgICAgIGxlbmd0aCA9IDA7CiAgICAgIH0KICAgICAgcmVzID0gdGhpcy5fc2V0dXAoc3RyZWFtLCBwYXJlbnQsIGxlbmd0aCk7CiAgICAgIHRoaXMuX3BhcnNlRmllbGRzKHN0cmVhbSwgcmVzLCB0aGlzLmZpZWxkcyk7CiAgICAgIGlmICgoX3JlZiA9IHRoaXMucHJvY2VzcykgIT0gbnVsbCkgewogICAgICAgIF9yZWYuY2FsbChyZXMsIHN0cmVhbSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlczsKICAgIH07CgogICAgU3RydWN0LnByb3RvdHlwZS5fc2V0dXAgPSBmdW5jdGlvbihzdHJlYW0sIHBhcmVudCwgbGVuZ3RoKSB7CiAgICAgIHZhciByZXM7CiAgICAgIHJlcyA9IHt9OwogICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhyZXMsIHsKICAgICAgICBwYXJlbnQ6IHsKICAgICAgICAgIHZhbHVlOiBwYXJlbnQKICAgICAgICB9LAogICAgICAgIF9zdGFydE9mZnNldDogewogICAgICAgICAgdmFsdWU6IHN0cmVhbS5wb3MKICAgICAgICB9LAogICAgICAgIF9jdXJyZW50T2Zmc2V0OiB7CiAgICAgICAgICB2YWx1ZTogMCwKICAgICAgICAgIHdyaXRhYmxlOiB0cnVlCiAgICAgICAgfSwKICAgICAgICBfbGVuZ3RoOiB7CiAgICAgICAgICB2YWx1ZTogbGVuZ3RoCiAgICAgICAgfQogICAgICB9KTsKICAgICAgcmV0dXJuIHJlczsKICAgIH07CgogICAgU3RydWN0LnByb3RvdHlwZS5fcGFyc2VGaWVsZHMgPSBmdW5jdGlvbihzdHJlYW0sIHJlcywgZmllbGRzKSB7CiAgICAgIHZhciBrZXksIHR5cGUsIHZhbDsKICAgICAgZm9yIChrZXkgaW4gZmllbGRzKSB7CiAgICAgICAgdHlwZSA9IGZpZWxkc1trZXldOwogICAgICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgdmFsID0gdHlwZS5jYWxsKHJlcywgcmVzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFsID0gdHlwZS5kZWNvZGUoc3RyZWFtLCByZXMpOwogICAgICAgIH0KICAgICAgICBpZiAodmFsICE9PSB2b2lkIDApIHsKICAgICAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiB1dGlscy5Qcm9wZXJ0eURlc2NyaXB0b3IpIHsKICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlcywga2V5LCB2YWwpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVzW2tleV0gPSB2YWw7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJlcy5fY3VycmVudE9mZnNldCA9IHN0cmVhbS5wb3MgLSByZXMuX3N0YXJ0T2Zmc2V0OwogICAgICB9CiAgICB9OwoKICAgIFN0cnVjdC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKHZhbCwgcGFyZW50LCBpbmNsdWRlUG9pbnRlcnMpIHsKICAgICAgdmFyIGN0eCwga2V5LCBzaXplLCB0eXBlLCBfcmVmOwogICAgICBpZiAodmFsID09IG51bGwpIHsKICAgICAgICB2YWwgPSB7fTsKICAgICAgfQogICAgICBpZiAoaW5jbHVkZVBvaW50ZXJzID09IG51bGwpIHsKICAgICAgICBpbmNsdWRlUG9pbnRlcnMgPSB0cnVlOwogICAgICB9CiAgICAgIGN0eCA9IHsKICAgICAgICBwYXJlbnQ6IHBhcmVudCwKICAgICAgICB2YWw6IHZhbCwKICAgICAgICBwb2ludGVyU2l6ZTogMAogICAgICB9OwogICAgICBzaXplID0gMDsKICAgICAgX3JlZiA9IHRoaXMuZmllbGRzOwogICAgICBmb3IgKGtleSBpbiBfcmVmKSB7CiAgICAgICAgdHlwZSA9IF9yZWZba2V5XTsKICAgICAgICBpZiAodHlwZS5zaXplICE9IG51bGwpIHsKICAgICAgICAgIHNpemUgKz0gdHlwZS5zaXplKHZhbFtrZXldLCBjdHgpOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoaW5jbHVkZVBvaW50ZXJzKSB7CiAgICAgICAgc2l6ZSArPSBjdHgucG9pbnRlclNpemU7CiAgICAgIH0KICAgICAgcmV0dXJuIHNpemU7CiAgICB9OwoKICAgIFN0cnVjdC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyZWFtLCB2YWwsIHBhcmVudCkgewogICAgICB2YXIgY3R4LCBpLCBrZXksIHB0ciwgdHlwZSwgX3JlZiwgX3JlZjE7CiAgICAgIGlmICgoX3JlZiA9IHRoaXMucHJlRW5jb2RlKSAhPSBudWxsKSB7CiAgICAgICAgX3JlZi5jYWxsKHZhbCwgc3RyZWFtKTsKICAgICAgfQogICAgICBjdHggPSB7CiAgICAgICAgcG9pbnRlcnM6IFtdLAogICAgICAgIHN0YXJ0T2Zmc2V0OiBzdHJlYW0ucG9zLAogICAgICAgIHBhcmVudDogcGFyZW50LAogICAgICAgIHZhbDogdmFsLAogICAgICAgIHBvaW50ZXJTaXplOiAwCiAgICAgIH07CiAgICAgIGN0eC5wb2ludGVyT2Zmc2V0ID0gc3RyZWFtLnBvcyArIHRoaXMuc2l6ZSh2YWwsIGN0eCwgZmFsc2UpOwogICAgICBfcmVmMSA9IHRoaXMuZmllbGRzOwogICAgICBmb3IgKGtleSBpbiBfcmVmMSkgewogICAgICAgIHR5cGUgPSBfcmVmMVtrZXldOwogICAgICAgIGlmICh0eXBlLmVuY29kZSAhPSBudWxsKSB7CiAgICAgICAgICB0eXBlLmVuY29kZShzdHJlYW0sIHZhbFtrZXldLCBjdHgpOwogICAgICAgIH0KICAgICAgfQogICAgICBpID0gMDsKICAgICAgd2hpbGUgKGkgPCBjdHgucG9pbnRlcnMubGVuZ3RoKSB7CiAgICAgICAgcHRyID0gY3R4LnBvaW50ZXJzW2krK107CiAgICAgICAgcHRyLnR5cGUuZW5jb2RlKHN0cmVhbSwgcHRyLnZhbCwgcHRyLnBhcmVudCk7CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIFN0cnVjdDsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBTdHJ1Y3Q7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiA5NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9ICFfX3dlYnBhY2tfcmVxdWlyZV9fKDUpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KShmdW5jdGlvbiAoKSB7CiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShfX3dlYnBhY2tfcmVxdWlyZV9fKDk2KSgnZGl2JyksICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3Owp9KTsKCgovKioqLyB9KSwKLyogOTYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKdmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCkuZG9jdW1lbnQ7Ci8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRQp2YXIgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7CiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTsKfTsKCgovKioqLyB9KSwKLyogOTcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHsKICBpZiAodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpIHRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7CiAgcmV0dXJuIGl0Owp9OwoKCi8qKiovIH0pLAovKiA5OCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChkb25lLCB2YWx1ZSkgewogIHJldHVybiB7IHZhbHVlOiB2YWx1ZSwgZG9uZTogISFkb25lIH07Cn07CgoKLyoqKi8gfSksCi8qIDk5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CgoKLyoqKi8gfSksCi8qIDEwMCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgZFAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOwp2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKdmFyIGdldEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTsKCm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7CiAgYW5PYmplY3QoTyk7CiAgdmFyIGtleXMgPSBnZXRLZXlzKFByb3BlcnRpZXMpOwogIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDsKICB2YXIgaSA9IDA7CiAgdmFyIFA7CiAgd2hpbGUgKGxlbmd0aCA+IGkpIGRQLmYoTywgUCA9IGtleXNbaSsrXSwgUHJvcGVydGllc1tQXSk7CiAgcmV0dXJuIE87Cn07CgoKLyoqKi8gfSksCi8qIDEwMSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7CnZhciB0b0lPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTsKdmFyIGFycmF5SW5kZXhPZiA9IF9fd2VicGFja19yZXF1aXJlX18oMjA0KShmYWxzZSk7CnZhciBJRV9QUk9UTyA9IF9fd2VicGFja19yZXF1aXJlX18oNjQpKCdJRV9QUk9UTycpOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykgewogIHZhciBPID0gdG9JT2JqZWN0KG9iamVjdCk7CiAgdmFyIGkgPSAwOwogIHZhciByZXN1bHQgPSBbXTsKICB2YXIga2V5OwogIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7CiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5cwogIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7CiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpOwogIH0KICByZXR1cm4gcmVzdWx0Owp9OwoKCi8qKiovIH0pLAovKiAxMDIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oNjMpOwp2YXIgbWF4ID0gTWF0aC5tYXg7CnZhciBtaW4gPSBNYXRoLm1pbjsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkgewogIGluZGV4ID0gdG9JbnRlZ2VyKGluZGV4KTsKICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTsKfTsKCgovKioqLyB9KSwKLyogMTAzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjE1KSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDEwNCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KQp2YXIgY29mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7Cm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykgewogIHJldHVybiBjb2YoYXJnKSA9PSAnQXJyYXknOwp9OwoKCi8qKiovIH0pLAovKiAxMDUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMTkuMS4yLjcgLyAxNS4yLjMuNCBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKQp2YXIgJGtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMSk7CnZhciBoaWRkZW5LZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NikuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7CgpleHBvcnRzLmYgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB8fCBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKE8pIHsKICByZXR1cm4gJGtleXMoTywgaGlkZGVuS2V5cyk7Cn07CgoKLyoqKi8gfSksCi8qIDEwNiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKCmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsKICBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIik7CiAgfQp9OwoKLyoqKi8gfSksCi8qIDEwNyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKCnZhciBfZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc0KTsKCnZhciBfZGVmaW5lUHJvcGVydHkyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVmaW5lUHJvcGVydHkpOwoKZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0KCmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsKICAgICAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOwogICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7CiAgICAgIGlmICgidmFsdWUiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOwogICAgICAoMCwgX2RlZmluZVByb3BlcnR5Mi5kZWZhdWx0KSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsKICAgIH0KICB9CgogIHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7CiAgICBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOwogICAgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7CiAgICByZXR1cm4gQ29uc3RydWN0b3I7CiAgfTsKfSgpOwoKLyoqKi8gfSksCi8qIDEwOCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cgp2YXIgZFAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpLmY7CnZhciBjcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTsKdmFyIHJlZGVmaW5lQWxsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDkpOwp2YXIgY3R4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CnZhciBhbkluc3RhbmNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTApOwp2YXIgZm9yT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKTsKdmFyICRpdGVyRGVmaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MSk7CnZhciBzdGVwID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5OCk7CnZhciBzZXRTcGVjaWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjgpOwp2YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwp2YXIgZmFzdEtleSA9IF9fd2VicGFja19yZXF1aXJlX18oNDApLmZhc3RLZXk7CnZhciB2YWxpZGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNzUpOwp2YXIgU0laRSA9IERFU0NSSVBUT1JTID8gJ19zJyA6ICdzaXplJzsKCnZhciBnZXRFbnRyeSA9IGZ1bmN0aW9uICh0aGF0LCBrZXkpIHsKICAvLyBmYXN0IGNhc2UKICB2YXIgaW5kZXggPSBmYXN0S2V5KGtleSk7CiAgdmFyIGVudHJ5OwogIGlmIChpbmRleCAhPT0gJ0YnKSByZXR1cm4gdGhhdC5faVtpbmRleF07CiAgLy8gZnJvemVuIG9iamVjdCBjYXNlCiAgZm9yIChlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pIHsKICAgIGlmIChlbnRyeS5rID09IGtleSkgcmV0dXJuIGVudHJ5OwogIH0KfTsKCm1vZHVsZS5leHBvcnRzID0gewogIGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbiAod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUikgewogICAgdmFyIEMgPSB3cmFwcGVyKGZ1bmN0aW9uICh0aGF0LCBpdGVyYWJsZSkgewogICAgICBhbkluc3RhbmNlKHRoYXQsIEMsIE5BTUUsICdfaScpOwogICAgICB0aGF0Ll90ID0gTkFNRTsgICAgICAgICAvLyBjb2xsZWN0aW9uIHR5cGUKICAgICAgdGhhdC5faSA9IGNyZWF0ZShudWxsKTsgLy8gaW5kZXgKICAgICAgdGhhdC5fZiA9IHVuZGVmaW5lZDsgICAgLy8gZmlyc3QgZW50cnkKICAgICAgdGhhdC5fbCA9IHVuZGVmaW5lZDsgICAgLy8gbGFzdCBlbnRyeQogICAgICB0aGF0W1NJWkVdID0gMDsgICAgICAgICAvLyBzaXplCiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTsKICAgIH0pOwogICAgcmVkZWZpbmVBbGwoQy5wcm90b3R5cGUsIHsKICAgICAgLy8gMjMuMS4zLjEgTWFwLnByb3RvdHlwZS5jbGVhcigpCiAgICAgIC8vIDIzLjIuMy4yIFNldC5wcm90b3R5cGUuY2xlYXIoKQogICAgICBjbGVhcjogZnVuY3Rpb24gY2xlYXIoKSB7CiAgICAgICAgZm9yICh2YXIgdGhhdCA9IHZhbGlkYXRlKHRoaXMsIE5BTUUpLCBkYXRhID0gdGhhdC5faSwgZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKSB7CiAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTsKICAgICAgICAgIGlmIChlbnRyeS5wKSBlbnRyeS5wID0gZW50cnkucC5uID0gdW5kZWZpbmVkOwogICAgICAgICAgZGVsZXRlIGRhdGFbZW50cnkuaV07CiAgICAgICAgfQogICAgICAgIHRoYXQuX2YgPSB0aGF0Ll9sID0gdW5kZWZpbmVkOwogICAgICAgIHRoYXRbU0laRV0gPSAwOwogICAgICB9LAogICAgICAvLyAyMy4xLjMuMyBNYXAucHJvdG90eXBlLmRlbGV0ZShrZXkpCiAgICAgIC8vIDIzLjIuMy40IFNldC5wcm90b3R5cGUuZGVsZXRlKHZhbHVlKQogICAgICAnZGVsZXRlJzogZnVuY3Rpb24gKGtleSkgewogICAgICAgIHZhciB0aGF0ID0gdmFsaWRhdGUodGhpcywgTkFNRSk7CiAgICAgICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KTsKICAgICAgICBpZiAoZW50cnkpIHsKICAgICAgICAgIHZhciBuZXh0ID0gZW50cnkubjsKICAgICAgICAgIHZhciBwcmV2ID0gZW50cnkucDsKICAgICAgICAgIGRlbGV0ZSB0aGF0Ll9pW2VudHJ5LmldOwogICAgICAgICAgZW50cnkuciA9IHRydWU7CiAgICAgICAgICBpZiAocHJldikgcHJldi5uID0gbmV4dDsKICAgICAgICAgIGlmIChuZXh0KSBuZXh0LnAgPSBwcmV2OwogICAgICAgICAgaWYgKHRoYXQuX2YgPT0gZW50cnkpIHRoYXQuX2YgPSBuZXh0OwogICAgICAgICAgaWYgKHRoYXQuX2wgPT0gZW50cnkpIHRoYXQuX2wgPSBwcmV2OwogICAgICAgICAgdGhhdFtTSVpFXS0tOwogICAgICAgIH0gcmV0dXJuICEhZW50cnk7CiAgICAgIH0sCiAgICAgIC8vIDIzLjIuMy42IFNldC5wcm90b3R5cGUuZm9yRWFjaChjYWxsYmFja2ZuLCB0aGlzQXJnID0gdW5kZWZpbmVkKQogICAgICAvLyAyMy4xLjMuNSBNYXAucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZCkKICAgICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhhdCA9IHVuZGVmaW5lZCAqLykgewogICAgICAgIHZhbGlkYXRlKHRoaXMsIE5BTUUpOwogICAgICAgIHZhciBmID0gY3R4KGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCAzKTsKICAgICAgICB2YXIgZW50cnk7CiAgICAgICAgd2hpbGUgKGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhpcy5fZikgewogICAgICAgICAgZihlbnRyeS52LCBlbnRyeS5rLCB0aGlzKTsKICAgICAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeQogICAgICAgICAgd2hpbGUgKGVudHJ5ICYmIGVudHJ5LnIpIGVudHJ5ID0gZW50cnkucDsKICAgICAgICB9CiAgICAgIH0sCiAgICAgIC8vIDIzLjEuMy43IE1hcC5wcm90b3R5cGUuaGFzKGtleSkKICAgICAgLy8gMjMuMi4zLjcgU2V0LnByb3RvdHlwZS5oYXModmFsdWUpCiAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSkgewogICAgICAgIHJldHVybiAhIWdldEVudHJ5KHZhbGlkYXRlKHRoaXMsIE5BTUUpLCBrZXkpOwogICAgICB9CiAgICB9KTsKICAgIGlmIChERVNDUklQVE9SUykgZFAoQy5wcm90b3R5cGUsICdzaXplJywgewogICAgICBnZXQ6IGZ1bmN0aW9uICgpIHsKICAgICAgICByZXR1cm4gdmFsaWRhdGUodGhpcywgTkFNRSlbU0laRV07CiAgICAgIH0KICAgIH0pOwogICAgcmV0dXJuIEM7CiAgfSwKICBkZWY6IGZ1bmN0aW9uICh0aGF0LCBrZXksIHZhbHVlKSB7CiAgICB2YXIgZW50cnkgPSBnZXRFbnRyeSh0aGF0LCBrZXkpOwogICAgdmFyIHByZXYsIGluZGV4OwogICAgLy8gY2hhbmdlIGV4aXN0aW5nIGVudHJ5CiAgICBpZiAoZW50cnkpIHsKICAgICAgZW50cnkudiA9IHZhbHVlOwogICAgLy8gY3JlYXRlIG5ldyBlbnRyeQogICAgfSBlbHNlIHsKICAgICAgdGhhdC5fbCA9IGVudHJ5ID0gewogICAgICAgIGk6IGluZGV4ID0gZmFzdEtleShrZXksIHRydWUpLCAvLyA8LSBpbmRleAogICAgICAgIGs6IGtleSwgICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSBrZXkKICAgICAgICB2OiB2YWx1ZSwgICAgICAgICAgICAgICAgICAgICAgLy8gPC0gdmFsdWUKICAgICAgICBwOiBwcmV2ID0gdGhhdC5fbCwgICAgICAgICAgICAgLy8gPC0gcHJldmlvdXMgZW50cnkKICAgICAgICBuOiB1bmRlZmluZWQsICAgICAgICAgICAgICAgICAgLy8gPC0gbmV4dCBlbnRyeQogICAgICAgIHI6IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAvLyA8LSByZW1vdmVkCiAgICAgIH07CiAgICAgIGlmICghdGhhdC5fZikgdGhhdC5fZiA9IGVudHJ5OwogICAgICBpZiAocHJldikgcHJldi5uID0gZW50cnk7CiAgICAgIHRoYXRbU0laRV0rKzsKICAgICAgLy8gYWRkIHRvIGluZGV4CiAgICAgIGlmIChpbmRleCAhPT0gJ0YnKSB0aGF0Ll9pW2luZGV4XSA9IGVudHJ5OwogICAgfSByZXR1cm4gdGhhdDsKICB9LAogIGdldEVudHJ5OiBnZXRFbnRyeSwKICBzZXRTdHJvbmc6IGZ1bmN0aW9uIChDLCBOQU1FLCBJU19NQVApIHsKICAgIC8vIGFkZCAua2V5cywgLnZhbHVlcywgLmVudHJpZXMsIFtAQGl0ZXJhdG9yXQogICAgLy8gMjMuMS4zLjQsIDIzLjEuMy44LCAyMy4xLjMuMTEsIDIzLjEuMy4xMiwgMjMuMi4zLjUsIDIzLjIuMy44LCAyMy4yLjMuMTAsIDIzLjIuMy4xMQogICAgJGl0ZXJEZWZpbmUoQywgTkFNRSwgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7CiAgICAgIHRoaXMuX3QgPSB2YWxpZGF0ZShpdGVyYXRlZCwgTkFNRSk7IC8vIHRhcmdldAogICAgICB0aGlzLl9rID0ga2luZDsgICAgICAgICAgICAgICAgICAgICAvLyBraW5kCiAgICAgIHRoaXMuX2wgPSB1bmRlZmluZWQ7ICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzCiAgICB9LCBmdW5jdGlvbiAoKSB7CiAgICAgIHZhciB0aGF0ID0gdGhpczsKICAgICAgdmFyIGtpbmQgPSB0aGF0Ll9rOwogICAgICB2YXIgZW50cnkgPSB0aGF0Ll9sOwogICAgICAvLyByZXZlcnQgdG8gdGhlIGxhc3QgZXhpc3RpbmcgZW50cnkKICAgICAgd2hpbGUgKGVudHJ5ICYmIGVudHJ5LnIpIGVudHJ5ID0gZW50cnkucDsKICAgICAgLy8gZ2V0IG5leHQgZW50cnkKICAgICAgaWYgKCF0aGF0Ll90IHx8ICEodGhhdC5fbCA9IGVudHJ5ID0gZW50cnkgPyBlbnRyeS5uIDogdGhhdC5fdC5fZikpIHsKICAgICAgICAvLyBvciBmaW5pc2ggdGhlIGl0ZXJhdGlvbgogICAgICAgIHRoYXQuX3QgPSB1bmRlZmluZWQ7CiAgICAgICAgcmV0dXJuIHN0ZXAoMSk7CiAgICAgIH0KICAgICAgLy8gcmV0dXJuIHN0ZXAgYnkga2luZAogICAgICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiBzdGVwKDAsIGVudHJ5LmspOwogICAgICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHN0ZXAoMCwgZW50cnkudik7CiAgICAgIHJldHVybiBzdGVwKDAsIFtlbnRyeS5rLCBlbnRyeS52XSk7CiAgICB9LCBJU19NQVAgPyAnZW50cmllcycgOiAndmFsdWVzJywgIUlTX01BUCwgdHJ1ZSk7CgogICAgLy8gYWRkIFtAQHNwZWNpZXNdLCAyMy4xLjIuMiwgMjMuMi4yLjIKICAgIHNldFNwZWNpZXMoTkFNRSk7CiAgfQp9OwoKCi8qKiovIH0pLAovKiAxMDkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGhpZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIHNhZmUpIHsKICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7CiAgICBpZiAoc2FmZSAmJiB0YXJnZXRba2V5XSkgdGFyZ2V0W2tleV0gPSBzcmNba2V5XTsKICAgIGVsc2UgaGlkZSh0YXJnZXQsIGtleSwgc3JjW2tleV0pOwogIH0gcmV0dXJuIHRhcmdldDsKfTsKCgovKioqLyB9KSwKLyogMTEwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpIHsKICBpZiAoIShpdCBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSB8fCAoZm9yYmlkZGVuRmllbGQgIT09IHVuZGVmaW5lZCAmJiBmb3JiaWRkZW5GaWVsZCBpbiBpdCkpIHsKICAgIHRocm93IFR5cGVFcnJvcihuYW1lICsgJzogaW5jb3JyZWN0IGludm9jYXRpb24hJyk7CiAgfSByZXR1cm4gaXQ7Cn07CgoKLyoqKi8gfSksCi8qIDExMSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yCnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpOwptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHZhbHVlLCBlbnRyaWVzKSB7CiAgdHJ5IHsKICAgIHJldHVybiBlbnRyaWVzID8gZm4oYW5PYmplY3QodmFsdWUpWzBdLCB2YWx1ZVsxXSkgOiBmbih2YWx1ZSk7CiAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbikKICB9IGNhdGNoIChlKSB7CiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddOwogICAgaWYgKHJldCAhPT0gdW5kZWZpbmVkKSBhbk9iamVjdChyZXQuY2FsbChpdGVyYXRvcikpOwogICAgdGhyb3cgZTsKICB9Cn07CgoKLyoqKi8gfSksCi8qIDExMiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yCnZhciBJdGVyYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTsKdmFyIElURVJBVE9SID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KSgnaXRlcmF0b3InKTsKdmFyIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkgewogIHJldHVybiBpdCAhPT0gdW5kZWZpbmVkICYmIChJdGVyYXRvcnMuQXJyYXkgPT09IGl0IHx8IEFycmF5UHJvdG9bSVRFUkFUT1JdID09PSBpdCk7Cn07CgoKLyoqKi8gfSksCi8qIDExMyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cgp2YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7CnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKdmFyIG1ldGEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQwKTsKdmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7CnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7CnZhciByZWRlZmluZUFsbCA9IF9fd2VicGFja19yZXF1aXJlX18oMTA5KTsKdmFyIGZvck9mID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MSk7CnZhciBhbkluc3RhbmNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTApOwp2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpOwp2YXIgc2V0VG9TdHJpbmdUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTsKdmFyIGRQID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KS5mOwp2YXIgZWFjaCA9IF9fd2VicGFja19yZXF1aXJlX18oMjI5KSgwKTsKdmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE5BTUUsIHdyYXBwZXIsIG1ldGhvZHMsIGNvbW1vbiwgSVNfTUFQLCBJU19XRUFLKSB7CiAgdmFyIEJhc2UgPSBnbG9iYWxbTkFNRV07CiAgdmFyIEMgPSBCYXNlOwogIHZhciBBRERFUiA9IElTX01BUCA/ICdzZXQnIDogJ2FkZCc7CiAgdmFyIHByb3RvID0gQyAmJiBDLnByb3RvdHlwZTsKICB2YXIgTyA9IHt9OwogIGlmICghREVTQ1JJUFRPUlMgfHwgdHlwZW9mIEMgIT0gJ2Z1bmN0aW9uJyB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkgewogICAgbmV3IEMoKS5lbnRyaWVzKCkubmV4dCgpOwogIH0pKSkgewogICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3IKICAgIEMgPSBjb21tb24uZ2V0Q29uc3RydWN0b3Iod3JhcHBlciwgTkFNRSwgSVNfTUFQLCBBRERFUik7CiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwgbWV0aG9kcyk7CiAgICBtZXRhLk5FRUQgPSB0cnVlOwogIH0gZWxzZSB7CiAgICBDID0gd3JhcHBlcihmdW5jdGlvbiAodGFyZ2V0LCBpdGVyYWJsZSkgewogICAgICBhbkluc3RhbmNlKHRhcmdldCwgQywgTkFNRSwgJ19jJyk7CiAgICAgIHRhcmdldC5fYyA9IG5ldyBCYXNlKCk7CiAgICAgIGlmIChpdGVyYWJsZSAhPSB1bmRlZmluZWQpIGZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRhcmdldFtBRERFUl0sIHRhcmdldCk7CiAgICB9KTsKICAgIGVhY2goJ2FkZCxjbGVhcixkZWxldGUsZm9yRWFjaCxnZXQsaGFzLHNldCxrZXlzLHZhbHVlcyxlbnRyaWVzLHRvSlNPTicuc3BsaXQoJywnKSwgZnVuY3Rpb24gKEtFWSkgewogICAgICB2YXIgSVNfQURERVIgPSBLRVkgPT0gJ2FkZCcgfHwgS0VZID09ICdzZXQnOwogICAgICBpZiAoS0VZIGluIHByb3RvICYmICEoSVNfV0VBSyAmJiBLRVkgPT0gJ2NsZWFyJykpIGhpZGUoQy5wcm90b3R5cGUsIEtFWSwgZnVuY3Rpb24gKGEsIGIpIHsKICAgICAgICBhbkluc3RhbmNlKHRoaXMsIEMsIEtFWSk7CiAgICAgICAgaWYgKCFJU19BRERFUiAmJiBJU19XRUFLICYmICFpc09iamVjdChhKSkgcmV0dXJuIEtFWSA9PSAnZ2V0JyA/IHVuZGVmaW5lZCA6IGZhbHNlOwogICAgICAgIHZhciByZXN1bHQgPSB0aGlzLl9jW0tFWV0oYSA9PT0gMCA/IDAgOiBhLCBiKTsKICAgICAgICByZXR1cm4gSVNfQURERVIgPyB0aGlzIDogcmVzdWx0OwogICAgICB9KTsKICAgIH0pOwogICAgSVNfV0VBSyB8fCBkUChDLnByb3RvdHlwZSwgJ3NpemUnLCB7CiAgICAgIGdldDogZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiB0aGlzLl9jLnNpemU7CiAgICAgIH0KICAgIH0pOwogIH0KCiAgc2V0VG9TdHJpbmdUYWcoQywgTkFNRSk7CgogIE9bTkFNRV0gPSBDOwogICRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5XICsgJGV4cG9ydC5GLCBPKTsKCiAgaWYgKCFJU19XRUFLKSBjb21tb24uc2V0U3Ryb25nKEMsIE5BTUUsIElTX01BUCk7CgogIHJldHVybiBDOwp9OwoKCi8qKiovIH0pLAovKiAxMTQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTgp2YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oNjgpOwp2YXIgZnJvbSA9IF9fd2VicGFja19yZXF1aXJlX18oMjMzKTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTkFNRSkgewogIHJldHVybiBmdW5jdGlvbiB0b0pTT04oKSB7CiAgICBpZiAoY2xhc3NvZih0aGlzKSAhPSBOQU1FKSB0aHJvdyBUeXBlRXJyb3IoTkFNRSArICIjdG9KU09OIGlzbid0IGdlbmVyaWMiKTsKICAgIHJldHVybiBmcm9tKHRoaXMpOwogIH07Cn07CgoKLyoqKi8gfSksCi8qIDExNSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgovLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vCnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTExFQ1RJT04pIHsKICAkZXhwb3J0KCRleHBvcnQuUywgQ09MTEVDVElPTiwgeyBvZjogZnVuY3Rpb24gb2YoKSB7CiAgICB2YXIgbGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aDsKICAgIHZhciBBID0gbmV3IEFycmF5KGxlbmd0aCk7CiAgICB3aGlsZSAobGVuZ3RoLS0pIEFbbGVuZ3RoXSA9IGFyZ3VtZW50c1tsZW5ndGhdOwogICAgcmV0dXJuIG5ldyB0aGlzKEEpOwogIH0gfSk7Cn07CgoKLyoqKi8gfSksCi8qIDExNiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgovLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL3Byb3Bvc2FsLXNldG1hcC1vZmZyb20vCnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKdmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oOTcpOwp2YXIgY3R4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7CnZhciBmb3JPZiA9IF9fd2VicGFja19yZXF1aXJlX18oNDEpOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09MTEVDVElPTikgewogICRleHBvcnQoJGV4cG9ydC5TLCBDT0xMRUNUSU9OLCB7IGZyb206IGZ1bmN0aW9uIGZyb20oc291cmNlIC8qICwgbWFwRm4sIHRoaXNBcmcgKi8pIHsKICAgIHZhciBtYXBGbiA9IGFyZ3VtZW50c1sxXTsKICAgIHZhciBtYXBwaW5nLCBBLCBuLCBjYjsKICAgIGFGdW5jdGlvbih0aGlzKTsKICAgIG1hcHBpbmcgPSBtYXBGbiAhPT0gdW5kZWZpbmVkOwogICAgaWYgKG1hcHBpbmcpIGFGdW5jdGlvbihtYXBGbik7CiAgICBpZiAoc291cmNlID09IHVuZGVmaW5lZCkgcmV0dXJuIG5ldyB0aGlzKCk7CiAgICBBID0gW107CiAgICBpZiAobWFwcGluZykgewogICAgICBuID0gMDsKICAgICAgY2IgPSBjdHgobWFwRm4sIGFyZ3VtZW50c1syXSwgMik7CiAgICAgIGZvck9mKHNvdXJjZSwgZmFsc2UsIGZ1bmN0aW9uIChuZXh0SXRlbSkgewogICAgICAgIEEucHVzaChjYihuZXh0SXRlbSwgbisrKSk7CiAgICAgIH0pOwogICAgfSBlbHNlIHsKICAgICAgZm9yT2Yoc291cmNlLCBmYWxzZSwgQS5wdXNoLCBBKTsKICAgIH0KICAgIHJldHVybiBuZXcgdGhpcyhBKTsKICB9IH0pOwp9OwoKCi8qKiovIH0pLAovKiAxMTcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogQ29weXJpZ2h0IDIwMTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoqLwoKdmFyIEJyb3RsaUlucHV0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTgpLkJyb3RsaUlucHV0Owp2YXIgQnJvdGxpT3V0cHV0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTgpLkJyb3RsaU91dHB1dDsKdmFyIEJyb3RsaUJpdFJlYWRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMjg1KTsKdmFyIEJyb3RsaURpY3Rpb25hcnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExOSk7CnZhciBIdWZmbWFuQ29kZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTIwKS5IdWZmbWFuQ29kZTsKdmFyIEJyb3RsaUJ1aWxkSHVmZm1hblRhYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjApLkJyb3RsaUJ1aWxkSHVmZm1hblRhYmxlOwp2YXIgQ29udGV4dCA9IF9fd2VicGFja19yZXF1aXJlX18oMjg5KTsKdmFyIFByZWZpeCA9IF9fd2VicGFja19yZXF1aXJlX18oMjkwKTsKdmFyIFRyYW5zZm9ybSA9IF9fd2VicGFja19yZXF1aXJlX18oMjkxKTsKCnZhciBrRGVmYXVsdENvZGVMZW5ndGggPSA4Owp2YXIga0NvZGVMZW5ndGhSZXBlYXRDb2RlID0gMTY7CnZhciBrTnVtTGl0ZXJhbENvZGVzID0gMjU2Owp2YXIga051bUluc2VydEFuZENvcHlDb2RlcyA9IDcwNDsKdmFyIGtOdW1CbG9ja0xlbmd0aENvZGVzID0gMjY7CnZhciBrTGl0ZXJhbENvbnRleHRCaXRzID0gNjsKdmFyIGtEaXN0YW5jZUNvbnRleHRCaXRzID0gMjsKCnZhciBIVUZGTUFOX1RBQkxFX0JJVFMgPSA4Owp2YXIgSFVGRk1BTl9UQUJMRV9NQVNLID0gMHhmZjsKLyogTWF4aW11bSBwb3NzaWJsZSBIdWZmbWFuIHRhYmxlIHNpemUgZm9yIGFuIGFscGhhYmV0IHNpemUgb2YgNzA0LCBtYXggY29kZQogKiBsZW5ndGggMTUgYW5kIHJvb3QgdGFibGUgYml0cyA4LiAqLwp2YXIgSFVGRk1BTl9NQVhfVEFCTEVfU0laRSA9IDEwODA7Cgp2YXIgQ09ERV9MRU5HVEhfQ09ERVMgPSAxODsKdmFyIGtDb2RlTGVuZ3RoQ29kZU9yZGVyID0gbmV3IFVpbnQ4QXJyYXkoWwogIDEsIDIsIDMsIDQsIDAsIDUsIDE3LCA2LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwKXSk7Cgp2YXIgTlVNX0RJU1RBTkNFX1NIT1JUX0NPREVTID0gMTY7CnZhciBrRGlzdGFuY2VTaG9ydENvZGVJbmRleE9mZnNldCA9IG5ldyBVaW50OEFycmF5KFsKICAzLCAyLCAxLCAwLCAzLCAzLCAzLCAzLCAzLCAzLCAyLCAyLCAyLCAyLCAyLCAyCl0pOwoKdmFyIGtEaXN0YW5jZVNob3J0Q29kZVZhbHVlT2Zmc2V0ID0gbmV3IEludDhBcnJheShbCiAgMCwgMCwgMCwgMCwgLTEsIDEsIC0yLCAyLCAtMywgMywgLTEsIDEsIC0yLCAyLCAtMywgMwpdKTsKCnZhciBrTWF4SHVmZm1hblRhYmxlU2l6ZSA9IG5ldyBVaW50MTZBcnJheShbCiAgMjU2LCA0MDIsIDQzNiwgNDY4LCA1MDAsIDUzNCwgNTY2LCA1OTgsIDYzMCwgNjYyLCA2OTQsIDcyNiwgNzU4LCA3OTAsIDgyMiwKICA4NTQsIDg4NiwgOTIwLCA5NTIsIDk4NCwgMTAxNiwgMTA0OCwgMTA4MApdKTsKCmZ1bmN0aW9uIERlY29kZVdpbmRvd0JpdHMoYnIpIHsKICB2YXIgbjsKICBpZiAoYnIucmVhZEJpdHMoMSkgPT09IDApIHsKICAgIHJldHVybiAxNjsKICB9CiAgCiAgbiA9IGJyLnJlYWRCaXRzKDMpOwogIGlmIChuID4gMCkgewogICAgcmV0dXJuIDE3ICsgbjsKICB9CiAgCiAgbiA9IGJyLnJlYWRCaXRzKDMpOwogIGlmIChuID4gMCkgewogICAgcmV0dXJuIDggKyBuOwogIH0KICAKICByZXR1cm4gMTc7Cn0KCi8qIERlY29kZXMgYSBudW1iZXIgaW4gdGhlIHJhbmdlIFswLi4yNTVdLCBieSByZWFkaW5nIDEgLSAxMSBiaXRzLiAqLwpmdW5jdGlvbiBEZWNvZGVWYXJMZW5VaW50OChicikgewogIGlmIChici5yZWFkQml0cygxKSkgewogICAgdmFyIG5iaXRzID0gYnIucmVhZEJpdHMoMyk7CiAgICBpZiAobmJpdHMgPT09IDApIHsKICAgICAgcmV0dXJuIDE7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gYnIucmVhZEJpdHMobmJpdHMpICsgKDEgPDwgbmJpdHMpOwogICAgfQogIH0KICByZXR1cm4gMDsKfQoKZnVuY3Rpb24gTWV0YUJsb2NrTGVuZ3RoKCkgewogIHRoaXMubWV0YV9ibG9ja19sZW5ndGggPSAwOwogIHRoaXMuaW5wdXRfZW5kID0gMDsKICB0aGlzLmlzX3VuY29tcHJlc3NlZCA9IDA7CiAgdGhpcy5pc19tZXRhZGF0YSA9IGZhbHNlOwp9CgpmdW5jdGlvbiBEZWNvZGVNZXRhQmxvY2tMZW5ndGgoYnIpIHsKICB2YXIgb3V0ID0gbmV3IE1ldGFCbG9ja0xlbmd0aDsgIAogIHZhciBzaXplX25pYmJsZXM7CiAgdmFyIHNpemVfYnl0ZXM7CiAgdmFyIGk7CiAgCiAgb3V0LmlucHV0X2VuZCA9IGJyLnJlYWRCaXRzKDEpOwogIGlmIChvdXQuaW5wdXRfZW5kICYmIGJyLnJlYWRCaXRzKDEpKSB7CiAgICByZXR1cm4gb3V0OwogIH0KICAKICBzaXplX25pYmJsZXMgPSBici5yZWFkQml0cygyKSArIDQ7CiAgaWYgKHNpemVfbmliYmxlcyA9PT0gNykgewogICAgb3V0LmlzX21ldGFkYXRhID0gdHJ1ZTsKICAgIAogICAgaWYgKGJyLnJlYWRCaXRzKDEpICE9PSAwKQogICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcmVzZXJ2ZWQgYml0Jyk7CiAgICAKICAgIHNpemVfYnl0ZXMgPSBici5yZWFkQml0cygyKTsKICAgIGlmIChzaXplX2J5dGVzID09PSAwKQogICAgICByZXR1cm4gb3V0OwogICAgCiAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZV9ieXRlczsgaSsrKSB7CiAgICAgIHZhciBuZXh0X2J5dGUgPSBici5yZWFkQml0cyg4KTsKICAgICAgaWYgKGkgKyAxID09PSBzaXplX2J5dGVzICYmIHNpemVfYnl0ZXMgPiAxICYmIG5leHRfYnl0ZSA9PT0gMCkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2l6ZSBieXRlJyk7CiAgICAgIAogICAgICBvdXQubWV0YV9ibG9ja19sZW5ndGggfD0gbmV4dF9ieXRlIDw8IChpICogOCk7CiAgICB9CiAgfSBlbHNlIHsKICAgIGZvciAoaSA9IDA7IGkgPCBzaXplX25pYmJsZXM7ICsraSkgewogICAgICB2YXIgbmV4dF9uaWJibGUgPSBici5yZWFkQml0cyg0KTsKICAgICAgaWYgKGkgKyAxID09PSBzaXplX25pYmJsZXMgJiYgc2l6ZV9uaWJibGVzID4gNCAmJiBuZXh0X25pYmJsZSA9PT0gMCkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2l6ZSBuaWJibGUnKTsKICAgICAgCiAgICAgIG91dC5tZXRhX2Jsb2NrX2xlbmd0aCB8PSBuZXh0X25pYmJsZSA8PCAoaSAqIDQpOwogICAgfQogIH0KICAKICArK291dC5tZXRhX2Jsb2NrX2xlbmd0aDsKICAKICBpZiAoIW91dC5pbnB1dF9lbmQgJiYgIW91dC5pc19tZXRhZGF0YSkgewogICAgb3V0LmlzX3VuY29tcHJlc3NlZCA9IGJyLnJlYWRCaXRzKDEpOwogIH0KICAKICByZXR1cm4gb3V0Owp9CgovKiBEZWNvZGVzIHRoZSBuZXh0IEh1ZmZtYW4gY29kZSBmcm9tIGJpdC1zdHJlYW0uICovCmZ1bmN0aW9uIFJlYWRTeW1ib2wodGFibGUsIGluZGV4LCBicikgewogIHZhciBzdGFydF9pbmRleCA9IGluZGV4OwogIAogIHZhciBuYml0czsKICBici5maWxsQml0V2luZG93KCk7CiAgaW5kZXggKz0gKGJyLnZhbF8gPj4+IGJyLmJpdF9wb3NfKSAmIEhVRkZNQU5fVEFCTEVfTUFTSzsKICBuYml0cyA9IHRhYmxlW2luZGV4XS5iaXRzIC0gSFVGRk1BTl9UQUJMRV9CSVRTOwogIGlmIChuYml0cyA+IDApIHsKICAgIGJyLmJpdF9wb3NfICs9IEhVRkZNQU5fVEFCTEVfQklUUzsKICAgIGluZGV4ICs9IHRhYmxlW2luZGV4XS52YWx1ZTsKICAgIGluZGV4ICs9IChici52YWxfID4+PiBici5iaXRfcG9zXykgJiAoKDEgPDwgbmJpdHMpIC0gMSk7CiAgfQogIGJyLmJpdF9wb3NfICs9IHRhYmxlW2luZGV4XS5iaXRzOwogIHJldHVybiB0YWJsZVtpbmRleF0udmFsdWU7Cn0KCmZ1bmN0aW9uIFJlYWRIdWZmbWFuQ29kZUxlbmd0aHMoY29kZV9sZW5ndGhfY29kZV9sZW5ndGhzLCBudW1fc3ltYm9scywgY29kZV9sZW5ndGhzLCBicikgewogIHZhciBzeW1ib2wgPSAwOwogIHZhciBwcmV2X2NvZGVfbGVuID0ga0RlZmF1bHRDb2RlTGVuZ3RoOwogIHZhciByZXBlYXQgPSAwOwogIHZhciByZXBlYXRfY29kZV9sZW4gPSAwOwogIHZhciBzcGFjZSA9IDMyNzY4OwogIAogIHZhciB0YWJsZSA9IFtdOwogIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7IGkrKykKICAgIHRhYmxlLnB1c2gobmV3IEh1ZmZtYW5Db2RlKDAsIDApKTsKICAKICBCcm90bGlCdWlsZEh1ZmZtYW5UYWJsZSh0YWJsZSwgMCwgNSwgY29kZV9sZW5ndGhfY29kZV9sZW5ndGhzLCBDT0RFX0xFTkdUSF9DT0RFUyk7CgogIHdoaWxlIChzeW1ib2wgPCBudW1fc3ltYm9scyAmJiBzcGFjZSA+IDApIHsKICAgIHZhciBwID0gMDsKICAgIHZhciBjb2RlX2xlbjsKICAgIAogICAgYnIucmVhZE1vcmVJbnB1dCgpOwogICAgYnIuZmlsbEJpdFdpbmRvdygpOwogICAgcCArPSAoYnIudmFsXyA+Pj4gYnIuYml0X3Bvc18pICYgMzE7CiAgICBici5iaXRfcG9zXyArPSB0YWJsZVtwXS5iaXRzOwogICAgY29kZV9sZW4gPSB0YWJsZVtwXS52YWx1ZSAmIDB4ZmY7CiAgICBpZiAoY29kZV9sZW4gPCBrQ29kZUxlbmd0aFJlcGVhdENvZGUpIHsKICAgICAgcmVwZWF0ID0gMDsKICAgICAgY29kZV9sZW5ndGhzW3N5bWJvbCsrXSA9IGNvZGVfbGVuOwogICAgICBpZiAoY29kZV9sZW4gIT09IDApIHsKICAgICAgICBwcmV2X2NvZGVfbGVuID0gY29kZV9sZW47CiAgICAgICAgc3BhY2UgLT0gMzI3NjggPj4gY29kZV9sZW47CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIHZhciBleHRyYV9iaXRzID0gY29kZV9sZW4gLSAxNDsKICAgICAgdmFyIG9sZF9yZXBlYXQ7CiAgICAgIHZhciByZXBlYXRfZGVsdGE7CiAgICAgIHZhciBuZXdfbGVuID0gMDsKICAgICAgaWYgKGNvZGVfbGVuID09PSBrQ29kZUxlbmd0aFJlcGVhdENvZGUpIHsKICAgICAgICBuZXdfbGVuID0gcHJldl9jb2RlX2xlbjsKICAgICAgfQogICAgICBpZiAocmVwZWF0X2NvZGVfbGVuICE9PSBuZXdfbGVuKSB7CiAgICAgICAgcmVwZWF0ID0gMDsKICAgICAgICByZXBlYXRfY29kZV9sZW4gPSBuZXdfbGVuOwogICAgICB9CiAgICAgIG9sZF9yZXBlYXQgPSByZXBlYXQ7CiAgICAgIGlmIChyZXBlYXQgPiAwKSB7CiAgICAgICAgcmVwZWF0IC09IDI7CiAgICAgICAgcmVwZWF0IDw8PSBleHRyYV9iaXRzOwogICAgICB9CiAgICAgIHJlcGVhdCArPSBici5yZWFkQml0cyhleHRyYV9iaXRzKSArIDM7CiAgICAgIHJlcGVhdF9kZWx0YSA9IHJlcGVhdCAtIG9sZF9yZXBlYXQ7CiAgICAgIGlmIChzeW1ib2wgKyByZXBlYXRfZGVsdGEgPiBudW1fc3ltYm9scykgewogICAgICAgIHRocm93IG5ldyBFcnJvcignW1JlYWRIdWZmbWFuQ29kZUxlbmd0aHNdIHN5bWJvbCArIHJlcGVhdF9kZWx0YSA+IG51bV9zeW1ib2xzJyk7CiAgICAgIH0KICAgICAgCiAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgcmVwZWF0X2RlbHRhOyB4KyspCiAgICAgICAgY29kZV9sZW5ndGhzW3N5bWJvbCArIHhdID0gcmVwZWF0X2NvZGVfbGVuOwogICAgICAKICAgICAgc3ltYm9sICs9IHJlcGVhdF9kZWx0YTsKICAgICAgCiAgICAgIGlmIChyZXBlYXRfY29kZV9sZW4gIT09IDApIHsKICAgICAgICBzcGFjZSAtPSByZXBlYXRfZGVsdGEgPDwgKDE1IC0gcmVwZWF0X2NvZGVfbGVuKTsKICAgICAgfQogICAgfQogIH0KICBpZiAoc3BhY2UgIT09IDApIHsKICAgIHRocm93IG5ldyBFcnJvcigiW1JlYWRIdWZmbWFuQ29kZUxlbmd0aHNdIHNwYWNlID0gIiArIHNwYWNlKTsKICB9CiAgCiAgZm9yICg7IHN5bWJvbCA8IG51bV9zeW1ib2xzOyBzeW1ib2wrKykKICAgIGNvZGVfbGVuZ3Roc1tzeW1ib2xdID0gMDsKfQoKZnVuY3Rpb24gUmVhZEh1ZmZtYW5Db2RlKGFscGhhYmV0X3NpemUsIHRhYmxlcywgdGFibGUsIGJyKSB7CiAgdmFyIHRhYmxlX3NpemUgPSAwOwogIHZhciBzaW1wbGVfY29kZV9vcl9za2lwOwogIHZhciBjb2RlX2xlbmd0aHMgPSBuZXcgVWludDhBcnJheShhbHBoYWJldF9zaXplKTsKICAKICBici5yZWFkTW9yZUlucHV0KCk7CiAgCiAgLyogc2ltcGxlX2NvZGVfb3Jfc2tpcCBpcyB1c2VkIGFzIGZvbGxvd3M6CiAgICAgMSBmb3Igc2ltcGxlIGNvZGU7CiAgICAgMCBmb3Igbm8gc2tpcHBpbmcsIDIgc2tpcHMgMiBjb2RlIGxlbmd0aHMsIDMgc2tpcHMgMyBjb2RlIGxlbmd0aHMgKi8KICBzaW1wbGVfY29kZV9vcl9za2lwID0gYnIucmVhZEJpdHMoMik7CiAgaWYgKHNpbXBsZV9jb2RlX29yX3NraXAgPT09IDEpIHsKICAgIC8qIFJlYWQgc3ltYm9scywgY29kZXMgJiBjb2RlIGxlbmd0aHMgZGlyZWN0bHkuICovCiAgICB2YXIgaTsKICAgIHZhciBtYXhfYml0c19jb3VudGVyID0gYWxwaGFiZXRfc2l6ZSAtIDE7CiAgICB2YXIgbWF4X2JpdHMgPSAwOwogICAgdmFyIHN5bWJvbHMgPSBuZXcgSW50MzJBcnJheSg0KTsKICAgIHZhciBudW1fc3ltYm9scyA9IGJyLnJlYWRCaXRzKDIpICsgMTsKICAgIHdoaWxlIChtYXhfYml0c19jb3VudGVyKSB7CiAgICAgIG1heF9iaXRzX2NvdW50ZXIgPj49IDE7CiAgICAgICsrbWF4X2JpdHM7CiAgICB9CgogICAgZm9yIChpID0gMDsgaSA8IG51bV9zeW1ib2xzOyArK2kpIHsKICAgICAgc3ltYm9sc1tpXSA9IGJyLnJlYWRCaXRzKG1heF9iaXRzKSAlIGFscGhhYmV0X3NpemU7CiAgICAgIGNvZGVfbGVuZ3Roc1tzeW1ib2xzW2ldXSA9IDI7CiAgICB9CiAgICBjb2RlX2xlbmd0aHNbc3ltYm9sc1swXV0gPSAxOwogICAgc3dpdGNoIChudW1fc3ltYm9scykgewogICAgICBjYXNlIDE6CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgMzoKICAgICAgICBpZiAoKHN5bWJvbHNbMF0gPT09IHN5bWJvbHNbMV0pIHx8CiAgICAgICAgICAgIChzeW1ib2xzWzBdID09PSBzeW1ib2xzWzJdKSB8fAogICAgICAgICAgICAoc3ltYm9sc1sxXSA9PT0gc3ltYm9sc1syXSkpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignW1JlYWRIdWZmbWFuQ29kZV0gaW52YWxpZCBzeW1ib2xzJyk7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgICBjYXNlIDI6CiAgICAgICAgaWYgKHN5bWJvbHNbMF0gPT09IHN5bWJvbHNbMV0pIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignW1JlYWRIdWZmbWFuQ29kZV0gaW52YWxpZCBzeW1ib2xzJyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGNvZGVfbGVuZ3Roc1tzeW1ib2xzWzFdXSA9IDE7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgNDoKICAgICAgICBpZiAoKHN5bWJvbHNbMF0gPT09IHN5bWJvbHNbMV0pIHx8CiAgICAgICAgICAgIChzeW1ib2xzWzBdID09PSBzeW1ib2xzWzJdKSB8fAogICAgICAgICAgICAoc3ltYm9sc1swXSA9PT0gc3ltYm9sc1szXSkgfHwKICAgICAgICAgICAgKHN5bWJvbHNbMV0gPT09IHN5bWJvbHNbMl0pIHx8CiAgICAgICAgICAgIChzeW1ib2xzWzFdID09PSBzeW1ib2xzWzNdKSB8fAogICAgICAgICAgICAoc3ltYm9sc1syXSA9PT0gc3ltYm9sc1szXSkpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignW1JlYWRIdWZmbWFuQ29kZV0gaW52YWxpZCBzeW1ib2xzJyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChici5yZWFkQml0cygxKSkgewogICAgICAgICAgY29kZV9sZW5ndGhzW3N5bWJvbHNbMl1dID0gMzsKICAgICAgICAgIGNvZGVfbGVuZ3Roc1tzeW1ib2xzWzNdXSA9IDM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNvZGVfbGVuZ3Roc1tzeW1ib2xzWzBdXSA9IDI7CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgfQogIH0gZWxzZSB7ICAvKiBEZWNvZGUgSHVmZm1hbi1jb2RlZCBjb2RlIGxlbmd0aHMuICovCiAgICB2YXIgaTsKICAgIHZhciBjb2RlX2xlbmd0aF9jb2RlX2xlbmd0aHMgPSBuZXcgVWludDhBcnJheShDT0RFX0xFTkdUSF9DT0RFUyk7CiAgICB2YXIgc3BhY2UgPSAzMjsKICAgIHZhciBudW1fY29kZXMgPSAwOwogICAgLyogU3RhdGljIEh1ZmZtYW4gY29kZSBmb3IgdGhlIGNvZGUgbGVuZ3RoIGNvZGUgbGVuZ3RocyAqLwogICAgdmFyIGh1ZmYgPSBbCiAgICAgIG5ldyBIdWZmbWFuQ29kZSgyLCAwKSwgbmV3IEh1ZmZtYW5Db2RlKDIsIDQpLCBuZXcgSHVmZm1hbkNvZGUoMiwgMyksIG5ldyBIdWZmbWFuQ29kZSgzLCAyKSwgCiAgICAgIG5ldyBIdWZmbWFuQ29kZSgyLCAwKSwgbmV3IEh1ZmZtYW5Db2RlKDIsIDQpLCBuZXcgSHVmZm1hbkNvZGUoMiwgMyksIG5ldyBIdWZmbWFuQ29kZSg0LCAxKSwKICAgICAgbmV3IEh1ZmZtYW5Db2RlKDIsIDApLCBuZXcgSHVmZm1hbkNvZGUoMiwgNCksIG5ldyBIdWZmbWFuQ29kZSgyLCAzKSwgbmV3IEh1ZmZtYW5Db2RlKDMsIDIpLCAKICAgICAgbmV3IEh1ZmZtYW5Db2RlKDIsIDApLCBuZXcgSHVmZm1hbkNvZGUoMiwgNCksIG5ldyBIdWZmbWFuQ29kZSgyLCAzKSwgbmV3IEh1ZmZtYW5Db2RlKDQsIDUpCiAgICBdOwogICAgZm9yIChpID0gc2ltcGxlX2NvZGVfb3Jfc2tpcDsgaSA8IENPREVfTEVOR1RIX0NPREVTICYmIHNwYWNlID4gMDsgKytpKSB7CiAgICAgIHZhciBjb2RlX2xlbl9pZHggPSBrQ29kZUxlbmd0aENvZGVPcmRlcltpXTsKICAgICAgdmFyIHAgPSAwOwogICAgICB2YXIgdjsKICAgICAgYnIuZmlsbEJpdFdpbmRvdygpOwogICAgICBwICs9IChici52YWxfID4+PiBici5iaXRfcG9zXykgJiAxNTsKICAgICAgYnIuYml0X3Bvc18gKz0gaHVmZltwXS5iaXRzOwogICAgICB2ID0gaHVmZltwXS52YWx1ZTsKICAgICAgY29kZV9sZW5ndGhfY29kZV9sZW5ndGhzW2NvZGVfbGVuX2lkeF0gPSB2OwogICAgICBpZiAodiAhPT0gMCkgewogICAgICAgIHNwYWNlIC09ICgzMiA+PiB2KTsKICAgICAgICArK251bV9jb2RlczsKICAgICAgfQogICAgfQogICAgCiAgICBpZiAoIShudW1fY29kZXMgPT09IDEgfHwgc3BhY2UgPT09IDApKQogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1tSZWFkSHVmZm1hbkNvZGVdIGludmFsaWQgbnVtX2NvZGVzIG9yIHNwYWNlJyk7CiAgICAKICAgIFJlYWRIdWZmbWFuQ29kZUxlbmd0aHMoY29kZV9sZW5ndGhfY29kZV9sZW5ndGhzLCBhbHBoYWJldF9zaXplLCBjb2RlX2xlbmd0aHMsIGJyKTsKICB9CiAgCiAgdGFibGVfc2l6ZSA9IEJyb3RsaUJ1aWxkSHVmZm1hblRhYmxlKHRhYmxlcywgdGFibGUsIEhVRkZNQU5fVEFCTEVfQklUUywgY29kZV9sZW5ndGhzLCBhbHBoYWJldF9zaXplKTsKICAKICBpZiAodGFibGVfc2l6ZSA9PT0gMCkgewogICAgdGhyb3cgbmV3IEVycm9yKCJbUmVhZEh1ZmZtYW5Db2RlXSBCdWlsZEh1ZmZtYW5UYWJsZSBmYWlsZWQ6ICIpOwogIH0KICAKICByZXR1cm4gdGFibGVfc2l6ZTsKfQoKZnVuY3Rpb24gUmVhZEJsb2NrTGVuZ3RoKHRhYmxlLCBpbmRleCwgYnIpIHsKICB2YXIgY29kZTsKICB2YXIgbmJpdHM7CiAgY29kZSA9IFJlYWRTeW1ib2wodGFibGUsIGluZGV4LCBicik7CiAgbmJpdHMgPSBQcmVmaXgua0Jsb2NrTGVuZ3RoUHJlZml4Q29kZVtjb2RlXS5uYml0czsKICByZXR1cm4gUHJlZml4LmtCbG9ja0xlbmd0aFByZWZpeENvZGVbY29kZV0ub2Zmc2V0ICsgYnIucmVhZEJpdHMobmJpdHMpOwp9CgpmdW5jdGlvbiBUcmFuc2xhdGVTaG9ydENvZGVzKGNvZGUsIHJpbmdidWZmZXIsIGluZGV4KSB7CiAgdmFyIHZhbDsKICBpZiAoY29kZSA8IE5VTV9ESVNUQU5DRV9TSE9SVF9DT0RFUykgewogICAgaW5kZXggKz0ga0Rpc3RhbmNlU2hvcnRDb2RlSW5kZXhPZmZzZXRbY29kZV07CiAgICBpbmRleCAmPSAzOwogICAgdmFsID0gcmluZ2J1ZmZlcltpbmRleF0gKyBrRGlzdGFuY2VTaG9ydENvZGVWYWx1ZU9mZnNldFtjb2RlXTsKICB9IGVsc2UgewogICAgdmFsID0gY29kZSAtIE5VTV9ESVNUQU5DRV9TSE9SVF9DT0RFUyArIDE7CiAgfQogIHJldHVybiB2YWw7Cn0KCmZ1bmN0aW9uIE1vdmVUb0Zyb250KHYsIGluZGV4KSB7CiAgdmFyIHZhbHVlID0gdltpbmRleF07CiAgdmFyIGkgPSBpbmRleDsKICBmb3IgKDsgaTsgLS1pKSB2W2ldID0gdltpIC0gMV07CiAgdlswXSA9IHZhbHVlOwp9CgpmdW5jdGlvbiBJbnZlcnNlTW92ZVRvRnJvbnRUcmFuc2Zvcm0odiwgdl9sZW4pIHsKICB2YXIgbXRmID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICB2YXIgaTsKICBmb3IgKGkgPSAwOyBpIDwgMjU2OyArK2kpIHsKICAgIG10ZltpXSA9IGk7CiAgfQogIGZvciAoaSA9IDA7IGkgPCB2X2xlbjsgKytpKSB7CiAgICB2YXIgaW5kZXggPSB2W2ldOwogICAgdltpXSA9IG10ZltpbmRleF07CiAgICBpZiAoaW5kZXgpIE1vdmVUb0Zyb250KG10ZiwgaW5kZXgpOwogIH0KfQoKLyogQ29udGFpbnMgYSBjb2xsZWN0aW9uIG9mIGh1ZmZtYW4gdHJlZXMgd2l0aCB0aGUgc2FtZSBhbHBoYWJldCBzaXplLiAqLwpmdW5jdGlvbiBIdWZmbWFuVHJlZUdyb3VwKGFscGhhYmV0X3NpemUsIG51bV9odHJlZXMpIHsKICB0aGlzLmFscGhhYmV0X3NpemUgPSBhbHBoYWJldF9zaXplOwogIHRoaXMubnVtX2h0cmVlcyA9IG51bV9odHJlZXM7CiAgdGhpcy5jb2RlcyA9IG5ldyBBcnJheShudW1faHRyZWVzICsgbnVtX2h0cmVlcyAqIGtNYXhIdWZmbWFuVGFibGVTaXplWyhhbHBoYWJldF9zaXplICsgMzEpID4+PiA1XSk7ICAKICB0aGlzLmh0cmVlcyA9IG5ldyBVaW50MzJBcnJheShudW1faHRyZWVzKTsKfQoKSHVmZm1hblRyZWVHcm91cC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oYnIpIHsKICB2YXIgaTsKICB2YXIgdGFibGVfc2l6ZTsKICB2YXIgbmV4dCA9IDA7CiAgZm9yIChpID0gMDsgaSA8IHRoaXMubnVtX2h0cmVlczsgKytpKSB7CiAgICB0aGlzLmh0cmVlc1tpXSA9IG5leHQ7CiAgICB0YWJsZV9zaXplID0gUmVhZEh1ZmZtYW5Db2RlKHRoaXMuYWxwaGFiZXRfc2l6ZSwgdGhpcy5jb2RlcywgbmV4dCwgYnIpOwogICAgbmV4dCArPSB0YWJsZV9zaXplOwogIH0KfTsKCmZ1bmN0aW9uIERlY29kZUNvbnRleHRNYXAoY29udGV4dF9tYXBfc2l6ZSwgYnIpIHsKICB2YXIgb3V0ID0geyBudW1faHRyZWVzOiBudWxsLCBjb250ZXh0X21hcDogbnVsbCB9OwogIHZhciB1c2VfcmxlX2Zvcl96ZXJvczsKICB2YXIgbWF4X3J1bl9sZW5ndGhfcHJlZml4ID0gMDsKICB2YXIgdGFibGU7CiAgdmFyIGk7CiAgCiAgYnIucmVhZE1vcmVJbnB1dCgpOwogIHZhciBudW1faHRyZWVzID0gb3V0Lm51bV9odHJlZXMgPSBEZWNvZGVWYXJMZW5VaW50OChicikgKyAxOwoKICB2YXIgY29udGV4dF9tYXAgPSBvdXQuY29udGV4dF9tYXAgPSBuZXcgVWludDhBcnJheShjb250ZXh0X21hcF9zaXplKTsKICBpZiAobnVtX2h0cmVlcyA8PSAxKSB7CiAgICByZXR1cm4gb3V0OwogIH0KCiAgdXNlX3JsZV9mb3JfemVyb3MgPSBici5yZWFkQml0cygxKTsKICBpZiAodXNlX3JsZV9mb3JfemVyb3MpIHsKICAgIG1heF9ydW5fbGVuZ3RoX3ByZWZpeCA9IGJyLnJlYWRCaXRzKDQpICsgMTsKICB9CiAgCiAgdGFibGUgPSBbXTsKICBmb3IgKGkgPSAwOyBpIDwgSFVGRk1BTl9NQVhfVEFCTEVfU0laRTsgaSsrKSB7CiAgICB0YWJsZVtpXSA9IG5ldyBIdWZmbWFuQ29kZSgwLCAwKTsKICB9CiAgCiAgUmVhZEh1ZmZtYW5Db2RlKG51bV9odHJlZXMgKyBtYXhfcnVuX2xlbmd0aF9wcmVmaXgsIHRhYmxlLCAwLCBicik7CiAgCiAgZm9yIChpID0gMDsgaSA8IGNvbnRleHRfbWFwX3NpemU7KSB7CiAgICB2YXIgY29kZTsKCiAgICBici5yZWFkTW9yZUlucHV0KCk7CiAgICBjb2RlID0gUmVhZFN5bWJvbCh0YWJsZSwgMCwgYnIpOwogICAgaWYgKGNvZGUgPT09IDApIHsKICAgICAgY29udGV4dF9tYXBbaV0gPSAwOwogICAgICArK2k7CiAgICB9IGVsc2UgaWYgKGNvZGUgPD0gbWF4X3J1bl9sZW5ndGhfcHJlZml4KSB7CiAgICAgIHZhciByZXBzID0gMSArICgxIDw8IGNvZGUpICsgYnIucmVhZEJpdHMoY29kZSk7CiAgICAgIHdoaWxlICgtLXJlcHMpIHsKICAgICAgICBpZiAoaSA+PSBjb250ZXh0X21hcF9zaXplKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIltEZWNvZGVDb250ZXh0TWFwXSBpID49IGNvbnRleHRfbWFwX3NpemUiKTsKICAgICAgICB9CiAgICAgICAgY29udGV4dF9tYXBbaV0gPSAwOwogICAgICAgICsraTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgY29udGV4dF9tYXBbaV0gPSBjb2RlIC0gbWF4X3J1bl9sZW5ndGhfcHJlZml4OwogICAgICArK2k7CiAgICB9CiAgfQogIGlmIChici5yZWFkQml0cygxKSkgewogICAgSW52ZXJzZU1vdmVUb0Zyb250VHJhbnNmb3JtKGNvbnRleHRfbWFwLCBjb250ZXh0X21hcF9zaXplKTsKICB9CiAgCiAgcmV0dXJuIG91dDsKfQoKZnVuY3Rpb24gRGVjb2RlQmxvY2tUeXBlKG1heF9ibG9ja190eXBlLCB0cmVlcywgdHJlZV90eXBlLCBibG9ja190eXBlcywgcmluZ2J1ZmZlcnMsIGluZGV4ZXMsIGJyKSB7CiAgdmFyIHJpbmdidWZmZXIgPSB0cmVlX3R5cGUgKiAyOwogIHZhciBpbmRleCA9IHRyZWVfdHlwZTsKICB2YXIgdHlwZV9jb2RlID0gUmVhZFN5bWJvbCh0cmVlcywgdHJlZV90eXBlICogSFVGRk1BTl9NQVhfVEFCTEVfU0laRSwgYnIpOwogIHZhciBibG9ja190eXBlOwogIGlmICh0eXBlX2NvZGUgPT09IDApIHsKICAgIGJsb2NrX3R5cGUgPSByaW5nYnVmZmVyc1tyaW5nYnVmZmVyICsgKGluZGV4ZXNbaW5kZXhdICYgMSldOwogIH0gZWxzZSBpZiAodHlwZV9jb2RlID09PSAxKSB7CiAgICBibG9ja190eXBlID0gcmluZ2J1ZmZlcnNbcmluZ2J1ZmZlciArICgoaW5kZXhlc1tpbmRleF0gLSAxKSAmIDEpXSArIDE7CiAgfSBlbHNlIHsKICAgIGJsb2NrX3R5cGUgPSB0eXBlX2NvZGUgLSAyOwogIH0KICBpZiAoYmxvY2tfdHlwZSA+PSBtYXhfYmxvY2tfdHlwZSkgewogICAgYmxvY2tfdHlwZSAtPSBtYXhfYmxvY2tfdHlwZTsKICB9CiAgYmxvY2tfdHlwZXNbdHJlZV90eXBlXSA9IGJsb2NrX3R5cGU7CiAgcmluZ2J1ZmZlcnNbcmluZ2J1ZmZlciArIChpbmRleGVzW2luZGV4XSAmIDEpXSA9IGJsb2NrX3R5cGU7CiAgKytpbmRleGVzW2luZGV4XTsKfQoKZnVuY3Rpb24gQ29weVVuY29tcHJlc3NlZEJsb2NrVG9PdXRwdXQob3V0cHV0LCBsZW4sIHBvcywgcmluZ2J1ZmZlciwgcmluZ2J1ZmZlcl9tYXNrLCBicikgewogIHZhciByYl9zaXplID0gcmluZ2J1ZmZlcl9tYXNrICsgMTsKICB2YXIgcmJfcG9zID0gcG9zICYgcmluZ2J1ZmZlcl9tYXNrOwogIHZhciBicl9wb3MgPSBici5wb3NfICYgQnJvdGxpQml0UmVhZGVyLklCVUZfTUFTSzsKICB2YXIgbmJ5dGVzOwoKICAvKiBGb3Igc2hvcnQgbGVuZ3RocyBjb3B5IGJ5dGUtYnktYnl0ZSAqLwogIGlmIChsZW4gPCA4IHx8IGJyLmJpdF9wb3NfICsgKGxlbiA8PCAzKSA8IGJyLmJpdF9lbmRfcG9zXykgewogICAgd2hpbGUgKGxlbi0tID4gMCkgewogICAgICBici5yZWFkTW9yZUlucHV0KCk7CiAgICAgIHJpbmdidWZmZXJbcmJfcG9zKytdID0gYnIucmVhZEJpdHMoOCk7CiAgICAgIGlmIChyYl9wb3MgPT09IHJiX3NpemUpIHsKICAgICAgICBvdXRwdXQud3JpdGUocmluZ2J1ZmZlciwgcmJfc2l6ZSk7CiAgICAgICAgcmJfcG9zID0gMDsKICAgICAgfQogICAgfQogICAgcmV0dXJuOwogIH0KCiAgaWYgKGJyLmJpdF9lbmRfcG9zXyA8IDMyKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1tDb3B5VW5jb21wcmVzc2VkQmxvY2tUb091dHB1dF0gYnIuYml0X2VuZF9wb3NfIDwgMzInKTsKICB9CgogIC8qIENvcHkgcmVtYWluaW5nIDAtNCBieXRlcyBmcm9tIGJyLnZhbF8gdG8gcmluZ2J1ZmZlci4gKi8KICB3aGlsZSAoYnIuYml0X3Bvc18gPCAzMikgewogICAgcmluZ2J1ZmZlcltyYl9wb3NdID0gKGJyLnZhbF8gPj4+IGJyLmJpdF9wb3NfKTsKICAgIGJyLmJpdF9wb3NfICs9IDg7CiAgICArK3JiX3BvczsKICAgIC0tbGVuOwogIH0KCiAgLyogQ29weSByZW1haW5pbmcgYnl0ZXMgZnJvbSBici5idWZfIHRvIHJpbmdidWZmZXIuICovCiAgbmJ5dGVzID0gKGJyLmJpdF9lbmRfcG9zXyAtIGJyLmJpdF9wb3NfKSA+PiAzOwogIGlmIChicl9wb3MgKyBuYnl0ZXMgPiBCcm90bGlCaXRSZWFkZXIuSUJVRl9NQVNLKSB7CiAgICB2YXIgdGFpbCA9IEJyb3RsaUJpdFJlYWRlci5JQlVGX01BU0sgKyAxIC0gYnJfcG9zOwogICAgZm9yICh2YXIgeCA9IDA7IHggPCB0YWlsOyB4KyspCiAgICAgIHJpbmdidWZmZXJbcmJfcG9zICsgeF0gPSBici5idWZfW2JyX3BvcyArIHhdOwogICAgCiAgICBuYnl0ZXMgLT0gdGFpbDsKICAgIHJiX3BvcyArPSB0YWlsOwogICAgbGVuIC09IHRhaWw7CiAgICBicl9wb3MgPSAwOwogIH0KCiAgZm9yICh2YXIgeCA9IDA7IHggPCBuYnl0ZXM7IHgrKykKICAgIHJpbmdidWZmZXJbcmJfcG9zICsgeF0gPSBici5idWZfW2JyX3BvcyArIHhdOwogIAogIHJiX3BvcyArPSBuYnl0ZXM7CiAgbGVuIC09IG5ieXRlczsKCiAgLyogSWYgd2Ugd3JvdGUgcGFzdCB0aGUgbG9naWNhbCBlbmQgb2YgdGhlIHJpbmdidWZmZXIsIGNvcHkgdGhlIHRhaWwgb2YgdGhlCiAgICAgcmluZ2J1ZmZlciB0byBpdHMgYmVnaW5uaW5nIGFuZCBmbHVzaCB0aGUgcmluZ2J1ZmZlciB0byB0aGUgb3V0cHV0LiAqLwogIGlmIChyYl9wb3MgPj0gcmJfc2l6ZSkgewogICAgb3V0cHV0LndyaXRlKHJpbmdidWZmZXIsIHJiX3NpemUpOwogICAgcmJfcG9zIC09IHJiX3NpemU7ICAgIAogICAgZm9yICh2YXIgeCA9IDA7IHggPCByYl9wb3M7IHgrKykKICAgICAgcmluZ2J1ZmZlclt4XSA9IHJpbmdidWZmZXJbcmJfc2l6ZSArIHhdOwogIH0KCiAgLyogSWYgd2UgaGF2ZSBtb3JlIHRvIGNvcHkgdGhhbiB0aGUgcmVtYWluaW5nIHNpemUgb2YgdGhlIHJpbmdidWZmZXIsIHRoZW4gd2UKICAgICBmaXJzdCBmaWxsIHRoZSByaW5nYnVmZmVyIGZyb20gdGhlIGlucHV0IGFuZCB0aGVuIGZsdXNoIHRoZSByaW5nYnVmZmVyIHRvCiAgICAgdGhlIG91dHB1dCAqLwogIHdoaWxlIChyYl9wb3MgKyBsZW4gPj0gcmJfc2l6ZSkgewogICAgbmJ5dGVzID0gcmJfc2l6ZSAtIHJiX3BvczsKICAgIGlmIChici5pbnB1dF8ucmVhZChyaW5nYnVmZmVyLCByYl9wb3MsIG5ieXRlcykgPCBuYnl0ZXMpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdbQ29weVVuY29tcHJlc3NlZEJsb2NrVG9PdXRwdXRdIG5vdCBlbm91Z2ggYnl0ZXMnKTsKICAgIH0KICAgIG91dHB1dC53cml0ZShyaW5nYnVmZmVyLCByYl9zaXplKTsKICAgIGxlbiAtPSBuYnl0ZXM7CiAgICByYl9wb3MgPSAwOwogIH0KCiAgLyogQ29weSBzdHJhaWdodCBmcm9tIHRoZSBpbnB1dCBvbnRvIHRoZSByaW5nYnVmZmVyLiBUaGUgcmluZ2J1ZmZlciB3aWxsIGJlCiAgICAgZmx1c2hlZCB0byB0aGUgb3V0cHV0IGF0IGEgbGF0ZXIgdGltZS4gKi8KICBpZiAoYnIuaW5wdXRfLnJlYWQocmluZ2J1ZmZlciwgcmJfcG9zLCBsZW4pIDwgbGVuKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ1tDb3B5VW5jb21wcmVzc2VkQmxvY2tUb091dHB1dF0gbm90IGVub3VnaCBieXRlcycpOwogIH0KCiAgLyogUmVzdG9yZSB0aGUgc3RhdGUgb2YgdGhlIGJpdCByZWFkZXIuICovCiAgYnIucmVzZXQoKTsKfQoKLyogQWR2YW5jZXMgdGhlIGJpdCByZWFkZXIgcG9zaXRpb24gdG8gdGhlIG5leHQgYnl0ZSBib3VuZGFyeSBhbmQgdmVyaWZpZXMKICAgdGhhdCBhbnkgc2tpcHBlZCBiaXRzIGFyZSBzZXQgdG8gemVyby4gKi8KZnVuY3Rpb24gSnVtcFRvQnl0ZUJvdW5kYXJ5KGJyKSB7CiAgdmFyIG5ld19iaXRfcG9zID0gKGJyLmJpdF9wb3NfICsgNykgJiB+NzsKICB2YXIgcGFkX2JpdHMgPSBici5yZWFkQml0cyhuZXdfYml0X3BvcyAtIGJyLmJpdF9wb3NfKTsKICByZXR1cm4gcGFkX2JpdHMgPT0gMDsKfQoKZnVuY3Rpb24gQnJvdGxpRGVjb21wcmVzc2VkU2l6ZShidWZmZXIpIHsKICB2YXIgaW5wdXQgPSBuZXcgQnJvdGxpSW5wdXQoYnVmZmVyKTsKICB2YXIgYnIgPSBuZXcgQnJvdGxpQml0UmVhZGVyKGlucHV0KTsKICBEZWNvZGVXaW5kb3dCaXRzKGJyKTsKICB2YXIgb3V0ID0gRGVjb2RlTWV0YUJsb2NrTGVuZ3RoKGJyKTsKICByZXR1cm4gb3V0Lm1ldGFfYmxvY2tfbGVuZ3RoOwp9CgpleHBvcnRzLkJyb3RsaURlY29tcHJlc3NlZFNpemUgPSBCcm90bGlEZWNvbXByZXNzZWRTaXplOwoKZnVuY3Rpb24gQnJvdGxpRGVjb21wcmVzc0J1ZmZlcihidWZmZXIsIG91dHB1dF9zaXplKSB7CiAgdmFyIGlucHV0ID0gbmV3IEJyb3RsaUlucHV0KGJ1ZmZlcik7CiAgCiAgaWYgKG91dHB1dF9zaXplID09IG51bGwpIHsKICAgIG91dHB1dF9zaXplID0gQnJvdGxpRGVjb21wcmVzc2VkU2l6ZShidWZmZXIpOwogIH0KICAKICB2YXIgb3V0cHV0X2J1ZmZlciA9IG5ldyBVaW50OEFycmF5KG91dHB1dF9zaXplKTsKICB2YXIgb3V0cHV0ID0gbmV3IEJyb3RsaU91dHB1dChvdXRwdXRfYnVmZmVyKTsKICAKICBCcm90bGlEZWNvbXByZXNzKGlucHV0LCBvdXRwdXQpOwogIAogIGlmIChvdXRwdXQucG9zIDwgb3V0cHV0LmJ1ZmZlci5sZW5ndGgpIHsKICAgIG91dHB1dC5idWZmZXIgPSBvdXRwdXQuYnVmZmVyLnN1YmFycmF5KDAsIG91dHB1dC5wb3MpOwogIH0KICAKICByZXR1cm4gb3V0cHV0LmJ1ZmZlcjsKfQoKZXhwb3J0cy5Ccm90bGlEZWNvbXByZXNzQnVmZmVyID0gQnJvdGxpRGVjb21wcmVzc0J1ZmZlcjsKCmZ1bmN0aW9uIEJyb3RsaURlY29tcHJlc3MoaW5wdXQsIG91dHB1dCkgewogIHZhciBpOwogIHZhciBwb3MgPSAwOwogIHZhciBpbnB1dF9lbmQgPSAwOwogIHZhciB3aW5kb3dfYml0cyA9IDA7CiAgdmFyIG1heF9iYWNrd2FyZF9kaXN0YW5jZTsKICB2YXIgbWF4X2Rpc3RhbmNlID0gMDsKICB2YXIgcmluZ2J1ZmZlcl9zaXplOwogIHZhciByaW5nYnVmZmVyX21hc2s7CiAgdmFyIHJpbmdidWZmZXI7CiAgdmFyIHJpbmdidWZmZXJfZW5kOwogIC8qIFRoaXMgcmluZyBidWZmZXIgaG9sZHMgYSBmZXcgcGFzdCBjb3B5IGRpc3RhbmNlcyB0aGF0IHdpbGwgYmUgdXNlZCBieSAqLwogIC8qIHNvbWUgc3BlY2lhbCBkaXN0YW5jZSBjb2Rlcy4gKi8KICB2YXIgZGlzdF9yYiA9IFsgMTYsIDE1LCAxMSwgNCBdOwogIHZhciBkaXN0X3JiX2lkeCA9IDA7CiAgLyogVGhlIHByZXZpb3VzIDIgYnl0ZXMgdXNlZCBmb3IgY29udGV4dC4gKi8KICB2YXIgcHJldl9ieXRlMSA9IDA7CiAgdmFyIHByZXZfYnl0ZTIgPSAwOwogIHZhciBoZ3JvdXAgPSBbbmV3IEh1ZmZtYW5UcmVlR3JvdXAoMCwgMCksIG5ldyBIdWZmbWFuVHJlZUdyb3VwKDAsIDApLCBuZXcgSHVmZm1hblRyZWVHcm91cCgwLCAwKV07CiAgdmFyIGJsb2NrX3R5cGVfdHJlZXM7CiAgdmFyIGJsb2NrX2xlbl90cmVlczsKICB2YXIgYnI7CgogIC8qIFdlIG5lZWQgdGhlIHNsYWNrIHJlZ2lvbiBmb3IgdGhlIGZvbGxvd2luZyByZWFzb25zOgogICAgICAgLSBhbHdheXMgZG9pbmcgdHdvIDgtYnl0ZSBjb3BpZXMgZm9yIGZhc3QgYmFja3dhcmQgY29weWluZwogICAgICAgLSB0cmFuc2Zvcm1zCiAgICAgICAtIGZsdXNoaW5nIHRoZSBpbnB1dCByaW5nYnVmZmVyIHdoZW4gZGVjb2RpbmcgdW5jb21wcmVzc2VkIGJsb2NrcyAqLwogIHZhciBrUmluZ0J1ZmZlcldyaXRlQWhlYWRTbGFjayA9IDEyOCArIEJyb3RsaUJpdFJlYWRlci5SRUFEX1NJWkU7CgogIGJyID0gbmV3IEJyb3RsaUJpdFJlYWRlcihpbnB1dCk7CgogIC8qIERlY29kZSB3aW5kb3cgc2l6ZS4gKi8KICB3aW5kb3dfYml0cyA9IERlY29kZVdpbmRvd0JpdHMoYnIpOwogIG1heF9iYWNrd2FyZF9kaXN0YW5jZSA9ICgxIDw8IHdpbmRvd19iaXRzKSAtIDE2OwoKICByaW5nYnVmZmVyX3NpemUgPSAxIDw8IHdpbmRvd19iaXRzOwogIHJpbmdidWZmZXJfbWFzayA9IHJpbmdidWZmZXJfc2l6ZSAtIDE7CiAgcmluZ2J1ZmZlciA9IG5ldyBVaW50OEFycmF5KHJpbmdidWZmZXJfc2l6ZSArIGtSaW5nQnVmZmVyV3JpdGVBaGVhZFNsYWNrICsgQnJvdGxpRGljdGlvbmFyeS5tYXhEaWN0aW9uYXJ5V29yZExlbmd0aCk7CiAgcmluZ2J1ZmZlcl9lbmQgPSByaW5nYnVmZmVyX3NpemU7CgogIGJsb2NrX3R5cGVfdHJlZXMgPSBbXTsKICBibG9ja19sZW5fdHJlZXMgPSBbXTsKICBmb3IgKHZhciB4ID0gMDsgeCA8IDMgKiBIVUZGTUFOX01BWF9UQUJMRV9TSVpFOyB4KyspIHsKICAgIGJsb2NrX3R5cGVfdHJlZXNbeF0gPSBuZXcgSHVmZm1hbkNvZGUoMCwgMCk7CiAgICBibG9ja19sZW5fdHJlZXNbeF0gPSBuZXcgSHVmZm1hbkNvZGUoMCwgMCk7CiAgfQoKICB3aGlsZSAoIWlucHV0X2VuZCkgewogICAgdmFyIG1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbiA9IDA7CiAgICB2YXIgaXNfdW5jb21wcmVzc2VkOwogICAgdmFyIGJsb2NrX2xlbmd0aCA9IFsgMSA8PCAyOCwgMSA8PCAyOCwgMSA8PCAyOCBdOwogICAgdmFyIGJsb2NrX3R5cGUgPSBbIDAgXTsKICAgIHZhciBudW1fYmxvY2tfdHlwZXMgPSBbIDEsIDEsIDEgXTsKICAgIHZhciBibG9ja190eXBlX3JiID0gWyAwLCAxLCAwLCAxLCAwLCAxIF07CiAgICB2YXIgYmxvY2tfdHlwZV9yYl9pbmRleCA9IFsgMCBdOwogICAgdmFyIGRpc3RhbmNlX3Bvc3RmaXhfYml0czsKICAgIHZhciBudW1fZGlyZWN0X2Rpc3RhbmNlX2NvZGVzOwogICAgdmFyIGRpc3RhbmNlX3Bvc3RmaXhfbWFzazsKICAgIHZhciBudW1fZGlzdGFuY2VfY29kZXM7CiAgICB2YXIgY29udGV4dF9tYXAgPSBudWxsOwogICAgdmFyIGNvbnRleHRfbW9kZXMgPSBudWxsOwogICAgdmFyIG51bV9saXRlcmFsX2h0cmVlczsKICAgIHZhciBkaXN0X2NvbnRleHRfbWFwID0gbnVsbDsKICAgIHZhciBudW1fZGlzdF9odHJlZXM7CiAgICB2YXIgY29udGV4dF9vZmZzZXQgPSAwOwogICAgdmFyIGNvbnRleHRfbWFwX3NsaWNlID0gbnVsbDsKICAgIHZhciBsaXRlcmFsX2h0cmVlX2luZGV4ID0gMDsKICAgIHZhciBkaXN0X2NvbnRleHRfb2Zmc2V0ID0gMDsKICAgIHZhciBkaXN0X2NvbnRleHRfbWFwX3NsaWNlID0gbnVsbDsKICAgIHZhciBkaXN0X2h0cmVlX2luZGV4ID0gMDsKICAgIHZhciBjb250ZXh0X2xvb2t1cF9vZmZzZXQxID0gMDsKICAgIHZhciBjb250ZXh0X2xvb2t1cF9vZmZzZXQyID0gMDsKICAgIHZhciBjb250ZXh0X21vZGU7CiAgICB2YXIgaHRyZWVfY29tbWFuZDsKCiAgICBmb3IgKGkgPSAwOyBpIDwgMzsgKytpKSB7CiAgICAgIGhncm91cFtpXS5jb2RlcyA9IG51bGw7CiAgICAgIGhncm91cFtpXS5odHJlZXMgPSBudWxsOwogICAgfQoKICAgIGJyLnJlYWRNb3JlSW5wdXQoKTsKICAgIAogICAgdmFyIF9vdXQgPSBEZWNvZGVNZXRhQmxvY2tMZW5ndGgoYnIpOwogICAgbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuID0gX291dC5tZXRhX2Jsb2NrX2xlbmd0aDsKICAgIGlmIChwb3MgKyBtZXRhX2Jsb2NrX3JlbWFpbmluZ19sZW4gPiBvdXRwdXQuYnVmZmVyLmxlbmd0aCkgewogICAgICAvKiBXZSBuZWVkIHRvIGdyb3cgdGhlIG91dHB1dCBidWZmZXIgdG8gZml0IHRoZSBhZGRpdGlvbmFsIGRhdGEuICovCiAgICAgIHZhciB0bXAgPSBuZXcgVWludDhBcnJheSggcG9zICsgbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuICk7CiAgICAgIHRtcC5zZXQoIG91dHB1dC5idWZmZXIgKTsKICAgICAgb3V0cHV0LmJ1ZmZlciA9IHRtcDsKICAgIH0gICAgCiAgICBpbnB1dF9lbmQgPSBfb3V0LmlucHV0X2VuZDsKICAgIGlzX3VuY29tcHJlc3NlZCA9IF9vdXQuaXNfdW5jb21wcmVzc2VkOwogICAgCiAgICBpZiAoX291dC5pc19tZXRhZGF0YSkgewogICAgICBKdW1wVG9CeXRlQm91bmRhcnkoYnIpOwogICAgICAKICAgICAgZm9yICg7IG1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbiA+IDA7IC0tbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuKSB7CiAgICAgICAgYnIucmVhZE1vcmVJbnB1dCgpOwogICAgICAgIC8qIFJlYWQgb25lIGJ5dGUgYW5kIGlnbm9yZSBpdC4gKi8KICAgICAgICBici5yZWFkQml0cyg4KTsKICAgICAgfQogICAgICAKICAgICAgY29udGludWU7CiAgICB9CiAgICAKICAgIGlmIChtZXRhX2Jsb2NrX3JlbWFpbmluZ19sZW4gPT09IDApIHsKICAgICAgY29udGludWU7CiAgICB9CiAgICAKICAgIGlmIChpc191bmNvbXByZXNzZWQpIHsKICAgICAgYnIuYml0X3Bvc18gPSAoYnIuYml0X3Bvc18gKyA3KSAmIH43OwogICAgICBDb3B5VW5jb21wcmVzc2VkQmxvY2tUb091dHB1dChvdXRwdXQsIG1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbiwgcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaW5nYnVmZmVyLCByaW5nYnVmZmVyX21hc2ssIGJyKTsKICAgICAgcG9zICs9IG1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbjsKICAgICAgY29udGludWU7CiAgICB9CiAgICAKICAgIGZvciAoaSA9IDA7IGkgPCAzOyArK2kpIHsKICAgICAgbnVtX2Jsb2NrX3R5cGVzW2ldID0gRGVjb2RlVmFyTGVuVWludDgoYnIpICsgMTsKICAgICAgaWYgKG51bV9ibG9ja190eXBlc1tpXSA+PSAyKSB7CiAgICAgICAgUmVhZEh1ZmZtYW5Db2RlKG51bV9ibG9ja190eXBlc1tpXSArIDIsIGJsb2NrX3R5cGVfdHJlZXMsIGkgKiBIVUZGTUFOX01BWF9UQUJMRV9TSVpFLCBicik7CiAgICAgICAgUmVhZEh1ZmZtYW5Db2RlKGtOdW1CbG9ja0xlbmd0aENvZGVzLCBibG9ja19sZW5fdHJlZXMsIGkgKiBIVUZGTUFOX01BWF9UQUJMRV9TSVpFLCBicik7CiAgICAgICAgYmxvY2tfbGVuZ3RoW2ldID0gUmVhZEJsb2NrTGVuZ3RoKGJsb2NrX2xlbl90cmVlcywgaSAqIEhVRkZNQU5fTUFYX1RBQkxFX1NJWkUsIGJyKTsKICAgICAgICBibG9ja190eXBlX3JiX2luZGV4W2ldID0gMTsKICAgICAgfQogICAgfQogICAgCiAgICBici5yZWFkTW9yZUlucHV0KCk7CiAgICAKICAgIGRpc3RhbmNlX3Bvc3RmaXhfYml0cyA9IGJyLnJlYWRCaXRzKDIpOwogICAgbnVtX2RpcmVjdF9kaXN0YW5jZV9jb2RlcyA9IE5VTV9ESVNUQU5DRV9TSE9SVF9DT0RFUyArIChici5yZWFkQml0cyg0KSA8PCBkaXN0YW5jZV9wb3N0Zml4X2JpdHMpOwogICAgZGlzdGFuY2VfcG9zdGZpeF9tYXNrID0gKDEgPDwgZGlzdGFuY2VfcG9zdGZpeF9iaXRzKSAtIDE7CiAgICBudW1fZGlzdGFuY2VfY29kZXMgPSAobnVtX2RpcmVjdF9kaXN0YW5jZV9jb2RlcyArICg0OCA8PCBkaXN0YW5jZV9wb3N0Zml4X2JpdHMpKTsKICAgIGNvbnRleHRfbW9kZXMgPSBuZXcgVWludDhBcnJheShudW1fYmxvY2tfdHlwZXNbMF0pOwoKICAgIGZvciAoaSA9IDA7IGkgPCBudW1fYmxvY2tfdHlwZXNbMF07ICsraSkgewogICAgICAgYnIucmVhZE1vcmVJbnB1dCgpOwogICAgICAgY29udGV4dF9tb2Rlc1tpXSA9IChici5yZWFkQml0cygyKSA8PCAxKTsKICAgIH0KICAgIAogICAgdmFyIF9vMSA9IERlY29kZUNvbnRleHRNYXAobnVtX2Jsb2NrX3R5cGVzWzBdIDw8IGtMaXRlcmFsQ29udGV4dEJpdHMsIGJyKTsKICAgIG51bV9saXRlcmFsX2h0cmVlcyA9IF9vMS5udW1faHRyZWVzOwogICAgY29udGV4dF9tYXAgPSBfbzEuY29udGV4dF9tYXA7CiAgICAKICAgIHZhciBfbzIgPSBEZWNvZGVDb250ZXh0TWFwKG51bV9ibG9ja190eXBlc1syXSA8PCBrRGlzdGFuY2VDb250ZXh0Qml0cywgYnIpOwogICAgbnVtX2Rpc3RfaHRyZWVzID0gX28yLm51bV9odHJlZXM7CiAgICBkaXN0X2NvbnRleHRfbWFwID0gX28yLmNvbnRleHRfbWFwOwogICAgCiAgICBoZ3JvdXBbMF0gPSBuZXcgSHVmZm1hblRyZWVHcm91cChrTnVtTGl0ZXJhbENvZGVzLCBudW1fbGl0ZXJhbF9odHJlZXMpOwogICAgaGdyb3VwWzFdID0gbmV3IEh1ZmZtYW5UcmVlR3JvdXAoa051bUluc2VydEFuZENvcHlDb2RlcywgbnVtX2Jsb2NrX3R5cGVzWzFdKTsKICAgIGhncm91cFsyXSA9IG5ldyBIdWZmbWFuVHJlZUdyb3VwKG51bV9kaXN0YW5jZV9jb2RlcywgbnVtX2Rpc3RfaHRyZWVzKTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgMzsgKytpKSB7CiAgICAgIGhncm91cFtpXS5kZWNvZGUoYnIpOwogICAgfQoKICAgIGNvbnRleHRfbWFwX3NsaWNlID0gMDsKICAgIGRpc3RfY29udGV4dF9tYXBfc2xpY2UgPSAwOwogICAgY29udGV4dF9tb2RlID0gY29udGV4dF9tb2Rlc1tibG9ja190eXBlWzBdXTsKICAgIGNvbnRleHRfbG9va3VwX29mZnNldDEgPSBDb250ZXh0Lmxvb2t1cE9mZnNldHNbY29udGV4dF9tb2RlXTsKICAgIGNvbnRleHRfbG9va3VwX29mZnNldDIgPSBDb250ZXh0Lmxvb2t1cE9mZnNldHNbY29udGV4dF9tb2RlICsgMV07CiAgICBodHJlZV9jb21tYW5kID0gaGdyb3VwWzFdLmh0cmVlc1swXTsKCiAgICB3aGlsZSAobWV0YV9ibG9ja19yZW1haW5pbmdfbGVuID4gMCkgewogICAgICB2YXIgY21kX2NvZGU7CiAgICAgIHZhciByYW5nZV9pZHg7CiAgICAgIHZhciBpbnNlcnRfY29kZTsKICAgICAgdmFyIGNvcHlfY29kZTsKICAgICAgdmFyIGluc2VydF9sZW5ndGg7CiAgICAgIHZhciBjb3B5X2xlbmd0aDsKICAgICAgdmFyIGRpc3RhbmNlX2NvZGU7CiAgICAgIHZhciBkaXN0YW5jZTsKICAgICAgdmFyIGNvbnRleHQ7CiAgICAgIHZhciBqOwogICAgICB2YXIgY29weV9kc3Q7CgogICAgICBici5yZWFkTW9yZUlucHV0KCk7CiAgICAgIAogICAgICBpZiAoYmxvY2tfbGVuZ3RoWzFdID09PSAwKSB7CiAgICAgICAgRGVjb2RlQmxvY2tUeXBlKG51bV9ibG9ja190eXBlc1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZV90cmVlcywgMSwgYmxvY2tfdHlwZSwgYmxvY2tfdHlwZV9yYiwKICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZV9yYl9pbmRleCwgYnIpOwogICAgICAgIGJsb2NrX2xlbmd0aFsxXSA9IFJlYWRCbG9ja0xlbmd0aChibG9ja19sZW5fdHJlZXMsIEhVRkZNQU5fTUFYX1RBQkxFX1NJWkUsIGJyKTsKICAgICAgICBodHJlZV9jb21tYW5kID0gaGdyb3VwWzFdLmh0cmVlc1tibG9ja190eXBlWzFdXTsKICAgICAgfQogICAgICAtLWJsb2NrX2xlbmd0aFsxXTsKICAgICAgY21kX2NvZGUgPSBSZWFkU3ltYm9sKGhncm91cFsxXS5jb2RlcywgaHRyZWVfY29tbWFuZCwgYnIpOwogICAgICByYW5nZV9pZHggPSBjbWRfY29kZSA+PiA2OwogICAgICBpZiAocmFuZ2VfaWR4ID49IDIpIHsKICAgICAgICByYW5nZV9pZHggLT0gMjsKICAgICAgICBkaXN0YW5jZV9jb2RlID0gLTE7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGlzdGFuY2VfY29kZSA9IDA7CiAgICAgIH0KICAgICAgaW5zZXJ0X2NvZGUgPSBQcmVmaXgua0luc2VydFJhbmdlTHV0W3JhbmdlX2lkeF0gKyAoKGNtZF9jb2RlID4+IDMpICYgNyk7CiAgICAgIGNvcHlfY29kZSA9IFByZWZpeC5rQ29weVJhbmdlTHV0W3JhbmdlX2lkeF0gKyAoY21kX2NvZGUgJiA3KTsKICAgICAgaW5zZXJ0X2xlbmd0aCA9IFByZWZpeC5rSW5zZXJ0TGVuZ3RoUHJlZml4Q29kZVtpbnNlcnRfY29kZV0ub2Zmc2V0ICsKICAgICAgICAgIGJyLnJlYWRCaXRzKFByZWZpeC5rSW5zZXJ0TGVuZ3RoUHJlZml4Q29kZVtpbnNlcnRfY29kZV0ubmJpdHMpOwogICAgICBjb3B5X2xlbmd0aCA9IFByZWZpeC5rQ29weUxlbmd0aFByZWZpeENvZGVbY29weV9jb2RlXS5vZmZzZXQgKwogICAgICAgICAgYnIucmVhZEJpdHMoUHJlZml4LmtDb3B5TGVuZ3RoUHJlZml4Q29kZVtjb3B5X2NvZGVdLm5iaXRzKTsKICAgICAgcHJldl9ieXRlMSA9IHJpbmdidWZmZXJbcG9zLTEgJiByaW5nYnVmZmVyX21hc2tdOwogICAgICBwcmV2X2J5dGUyID0gcmluZ2J1ZmZlcltwb3MtMiAmIHJpbmdidWZmZXJfbWFza107CiAgICAgIGZvciAoaiA9IDA7IGogPCBpbnNlcnRfbGVuZ3RoOyArK2opIHsKICAgICAgICBici5yZWFkTW9yZUlucHV0KCk7CgogICAgICAgIGlmIChibG9ja19sZW5ndGhbMF0gPT09IDApIHsKICAgICAgICAgIERlY29kZUJsb2NrVHlwZShudW1fYmxvY2tfdHlwZXNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tfdHlwZV90cmVlcywgMCwgYmxvY2tfdHlwZSwgYmxvY2tfdHlwZV9yYiwKICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja190eXBlX3JiX2luZGV4LCBicik7CiAgICAgICAgICBibG9ja19sZW5ndGhbMF0gPSBSZWFkQmxvY2tMZW5ndGgoYmxvY2tfbGVuX3RyZWVzLCAwLCBicik7CiAgICAgICAgICBjb250ZXh0X29mZnNldCA9IGJsb2NrX3R5cGVbMF0gPDwga0xpdGVyYWxDb250ZXh0Qml0czsKICAgICAgICAgIGNvbnRleHRfbWFwX3NsaWNlID0gY29udGV4dF9vZmZzZXQ7CiAgICAgICAgICBjb250ZXh0X21vZGUgPSBjb250ZXh0X21vZGVzW2Jsb2NrX3R5cGVbMF1dOwogICAgICAgICAgY29udGV4dF9sb29rdXBfb2Zmc2V0MSA9IENvbnRleHQubG9va3VwT2Zmc2V0c1tjb250ZXh0X21vZGVdOwogICAgICAgICAgY29udGV4dF9sb29rdXBfb2Zmc2V0MiA9IENvbnRleHQubG9va3VwT2Zmc2V0c1tjb250ZXh0X21vZGUgKyAxXTsKICAgICAgICB9CiAgICAgICAgY29udGV4dCA9IChDb250ZXh0Lmxvb2t1cFtjb250ZXh0X2xvb2t1cF9vZmZzZXQxICsgcHJldl9ieXRlMV0gfAogICAgICAgICAgICAgICAgICAgQ29udGV4dC5sb29rdXBbY29udGV4dF9sb29rdXBfb2Zmc2V0MiArIHByZXZfYnl0ZTJdKTsKICAgICAgICBsaXRlcmFsX2h0cmVlX2luZGV4ID0gY29udGV4dF9tYXBbY29udGV4dF9tYXBfc2xpY2UgKyBjb250ZXh0XTsKICAgICAgICAtLWJsb2NrX2xlbmd0aFswXTsKICAgICAgICBwcmV2X2J5dGUyID0gcHJldl9ieXRlMTsKICAgICAgICBwcmV2X2J5dGUxID0gUmVhZFN5bWJvbChoZ3JvdXBbMF0uY29kZXMsIGhncm91cFswXS5odHJlZXNbbGl0ZXJhbF9odHJlZV9pbmRleF0sIGJyKTsKICAgICAgICByaW5nYnVmZmVyW3BvcyAmIHJpbmdidWZmZXJfbWFza10gPSBwcmV2X2J5dGUxOwogICAgICAgIGlmICgocG9zICYgcmluZ2J1ZmZlcl9tYXNrKSA9PT0gcmluZ2J1ZmZlcl9tYXNrKSB7CiAgICAgICAgICBvdXRwdXQud3JpdGUocmluZ2J1ZmZlciwgcmluZ2J1ZmZlcl9zaXplKTsKICAgICAgICB9CiAgICAgICAgKytwb3M7CiAgICAgIH0KICAgICAgbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuIC09IGluc2VydF9sZW5ndGg7CiAgICAgIGlmIChtZXRhX2Jsb2NrX3JlbWFpbmluZ19sZW4gPD0gMCkgYnJlYWs7CgogICAgICBpZiAoZGlzdGFuY2VfY29kZSA8IDApIHsKICAgICAgICB2YXIgY29udGV4dDsKICAgICAgICAKICAgICAgICBici5yZWFkTW9yZUlucHV0KCk7CiAgICAgICAgaWYgKGJsb2NrX2xlbmd0aFsyXSA9PT0gMCkgewogICAgICAgICAgRGVjb2RlQmxvY2tUeXBlKG51bV9ibG9ja190eXBlc1syXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja190eXBlX3RyZWVzLCAyLCBibG9ja190eXBlLCBibG9ja190eXBlX3JiLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3R5cGVfcmJfaW5kZXgsIGJyKTsKICAgICAgICAgIGJsb2NrX2xlbmd0aFsyXSA9IFJlYWRCbG9ja0xlbmd0aChibG9ja19sZW5fdHJlZXMsIDIgKiBIVUZGTUFOX01BWF9UQUJMRV9TSVpFLCBicik7CiAgICAgICAgICBkaXN0X2NvbnRleHRfb2Zmc2V0ID0gYmxvY2tfdHlwZVsyXSA8PCBrRGlzdGFuY2VDb250ZXh0Qml0czsKICAgICAgICAgIGRpc3RfY29udGV4dF9tYXBfc2xpY2UgPSBkaXN0X2NvbnRleHRfb2Zmc2V0OwogICAgICAgIH0KICAgICAgICAtLWJsb2NrX2xlbmd0aFsyXTsKICAgICAgICBjb250ZXh0ID0gKGNvcHlfbGVuZ3RoID4gNCA/IDMgOiBjb3B5X2xlbmd0aCAtIDIpICYgMHhmZjsKICAgICAgICBkaXN0X2h0cmVlX2luZGV4ID0gZGlzdF9jb250ZXh0X21hcFtkaXN0X2NvbnRleHRfbWFwX3NsaWNlICsgY29udGV4dF07CiAgICAgICAgZGlzdGFuY2VfY29kZSA9IFJlYWRTeW1ib2woaGdyb3VwWzJdLmNvZGVzLCBoZ3JvdXBbMl0uaHRyZWVzW2Rpc3RfaHRyZWVfaW5kZXhdLCBicik7CiAgICAgICAgaWYgKGRpc3RhbmNlX2NvZGUgPj0gbnVtX2RpcmVjdF9kaXN0YW5jZV9jb2RlcykgewogICAgICAgICAgdmFyIG5iaXRzOwogICAgICAgICAgdmFyIHBvc3RmaXg7CiAgICAgICAgICB2YXIgb2Zmc2V0OwogICAgICAgICAgZGlzdGFuY2VfY29kZSAtPSBudW1fZGlyZWN0X2Rpc3RhbmNlX2NvZGVzOwogICAgICAgICAgcG9zdGZpeCA9IGRpc3RhbmNlX2NvZGUgJiBkaXN0YW5jZV9wb3N0Zml4X21hc2s7CiAgICAgICAgICBkaXN0YW5jZV9jb2RlID4+PSBkaXN0YW5jZV9wb3N0Zml4X2JpdHM7CiAgICAgICAgICBuYml0cyA9IChkaXN0YW5jZV9jb2RlID4+IDEpICsgMTsKICAgICAgICAgIG9mZnNldCA9ICgoMiArIChkaXN0YW5jZV9jb2RlICYgMSkpIDw8IG5iaXRzKSAtIDQ7CiAgICAgICAgICBkaXN0YW5jZV9jb2RlID0gbnVtX2RpcmVjdF9kaXN0YW5jZV9jb2RlcyArCiAgICAgICAgICAgICAgKChvZmZzZXQgKyBici5yZWFkQml0cyhuYml0cykpIDw8CiAgICAgICAgICAgICAgIGRpc3RhbmNlX3Bvc3RmaXhfYml0cykgKyBwb3N0Zml4OwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyogQ29udmVydCB0aGUgZGlzdGFuY2UgY29kZSB0byB0aGUgYWN0dWFsIGRpc3RhbmNlIGJ5IHBvc3NpYmx5IGxvb2tpbmcgKi8KICAgICAgLyogdXAgcGFzdCBkaXN0bmFjZXMgZnJvbSB0aGUgcmluZ2J1ZmZlci4gKi8KICAgICAgZGlzdGFuY2UgPSBUcmFuc2xhdGVTaG9ydENvZGVzKGRpc3RhbmNlX2NvZGUsIGRpc3RfcmIsIGRpc3RfcmJfaWR4KTsKICAgICAgaWYgKGRpc3RhbmNlIDwgMCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignW0Jyb3RsaURlY29tcHJlc3NdIGludmFsaWQgZGlzdGFuY2UnKTsKICAgICAgfQoKICAgICAgaWYgKHBvcyA8IG1heF9iYWNrd2FyZF9kaXN0YW5jZSAmJgogICAgICAgICAgbWF4X2Rpc3RhbmNlICE9PSBtYXhfYmFja3dhcmRfZGlzdGFuY2UpIHsKICAgICAgICBtYXhfZGlzdGFuY2UgPSBwb3M7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbWF4X2Rpc3RhbmNlID0gbWF4X2JhY2t3YXJkX2Rpc3RhbmNlOwogICAgICB9CgogICAgICBjb3B5X2RzdCA9IHBvcyAmIHJpbmdidWZmZXJfbWFzazsKCiAgICAgIGlmIChkaXN0YW5jZSA+IG1heF9kaXN0YW5jZSkgewogICAgICAgIGlmIChjb3B5X2xlbmd0aCA+PSBCcm90bGlEaWN0aW9uYXJ5Lm1pbkRpY3Rpb25hcnlXb3JkTGVuZ3RoICYmCiAgICAgICAgICAgIGNvcHlfbGVuZ3RoIDw9IEJyb3RsaURpY3Rpb25hcnkubWF4RGljdGlvbmFyeVdvcmRMZW5ndGgpIHsKICAgICAgICAgIHZhciBvZmZzZXQgPSBCcm90bGlEaWN0aW9uYXJ5Lm9mZnNldHNCeUxlbmd0aFtjb3B5X2xlbmd0aF07CiAgICAgICAgICB2YXIgd29yZF9pZCA9IGRpc3RhbmNlIC0gbWF4X2Rpc3RhbmNlIC0gMTsKICAgICAgICAgIHZhciBzaGlmdCA9IEJyb3RsaURpY3Rpb25hcnkuc2l6ZUJpdHNCeUxlbmd0aFtjb3B5X2xlbmd0aF07CiAgICAgICAgICB2YXIgbWFzayA9ICgxIDw8IHNoaWZ0KSAtIDE7CiAgICAgICAgICB2YXIgd29yZF9pZHggPSB3b3JkX2lkICYgbWFzazsKICAgICAgICAgIHZhciB0cmFuc2Zvcm1faWR4ID0gd29yZF9pZCA+PiBzaGlmdDsKICAgICAgICAgIG9mZnNldCArPSB3b3JkX2lkeCAqIGNvcHlfbGVuZ3RoOwogICAgICAgICAgaWYgKHRyYW5zZm9ybV9pZHggPCBUcmFuc2Zvcm0ua051bVRyYW5zZm9ybXMpIHsKICAgICAgICAgICAgdmFyIGxlbiA9IFRyYW5zZm9ybS50cmFuc2Zvcm1EaWN0aW9uYXJ5V29yZChyaW5nYnVmZmVyLCBjb3B5X2RzdCwgb2Zmc2V0LCBjb3B5X2xlbmd0aCwgdHJhbnNmb3JtX2lkeCk7CiAgICAgICAgICAgIGNvcHlfZHN0ICs9IGxlbjsKICAgICAgICAgICAgcG9zICs9IGxlbjsKICAgICAgICAgICAgbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuIC09IGxlbjsKICAgICAgICAgICAgaWYgKGNvcHlfZHN0ID49IHJpbmdidWZmZXJfZW5kKSB7CiAgICAgICAgICAgICAgb3V0cHV0LndyaXRlKHJpbmdidWZmZXIsIHJpbmdidWZmZXJfc2l6ZSk7CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgZm9yICh2YXIgX3ggPSAwOyBfeCA8IChjb3B5X2RzdCAtIHJpbmdidWZmZXJfZW5kKTsgX3grKykKICAgICAgICAgICAgICAgIHJpbmdidWZmZXJbX3hdID0gcmluZ2J1ZmZlcltyaW5nYnVmZmVyX2VuZCArIF94XTsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGJhY2t3YXJkIHJlZmVyZW5jZS4gcG9zOiAiICsgcG9zICsgIiBkaXN0YW5jZTogIiArIGRpc3RhbmNlICsKICAgICAgICAgICAgICAiIGxlbjogIiArIGNvcHlfbGVuZ3RoICsgIiBieXRlcyBsZWZ0OiAiICsgbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGJhY2t3YXJkIHJlZmVyZW5jZS4gcG9zOiAiICsgcG9zICsgIiBkaXN0YW5jZTogIiArIGRpc3RhbmNlICsKICAgICAgICAgICAgIiBsZW46ICIgKyBjb3B5X2xlbmd0aCArICIgYnl0ZXMgbGVmdDogIiArIG1ldGFfYmxvY2tfcmVtYWluaW5nX2xlbik7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGlmIChkaXN0YW5jZV9jb2RlID4gMCkgewogICAgICAgICAgZGlzdF9yYltkaXN0X3JiX2lkeCAmIDNdID0gZGlzdGFuY2U7CiAgICAgICAgICArK2Rpc3RfcmJfaWR4OwogICAgICAgIH0KCiAgICAgICAgaWYgKGNvcHlfbGVuZ3RoID4gbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYmFja3dhcmQgcmVmZXJlbmNlLiBwb3M6ICIgKyBwb3MgKyAiIGRpc3RhbmNlOiAiICsgZGlzdGFuY2UgKwogICAgICAgICAgICAiIGxlbjogIiArIGNvcHlfbGVuZ3RoICsgIiBieXRlcyBsZWZ0OiAiICsgbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuKTsKICAgICAgICB9CgogICAgICAgIGZvciAoaiA9IDA7IGogPCBjb3B5X2xlbmd0aDsgKytqKSB7CiAgICAgICAgICByaW5nYnVmZmVyW3BvcyAmIHJpbmdidWZmZXJfbWFza10gPSByaW5nYnVmZmVyWyhwb3MgLSBkaXN0YW5jZSkgJiByaW5nYnVmZmVyX21hc2tdOwogICAgICAgICAgaWYgKChwb3MgJiByaW5nYnVmZmVyX21hc2spID09PSByaW5nYnVmZmVyX21hc2spIHsKICAgICAgICAgICAgb3V0cHV0LndyaXRlKHJpbmdidWZmZXIsIHJpbmdidWZmZXJfc2l6ZSk7CiAgICAgICAgICB9CiAgICAgICAgICArK3BvczsKICAgICAgICAgIC0tbWV0YV9ibG9ja19yZW1haW5pbmdfbGVuOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLyogV2hlbiB3ZSBnZXQgaGVyZSwgd2UgbXVzdCBoYXZlIGluc2VydGVkIGF0IGxlYXN0IG9uZSBsaXRlcmFsIGFuZCAqLwogICAgICAvKiBtYWRlIGEgY29weSBvZiBhdCBsZWFzdCBsZW5ndGggdHdvLCB0aGVyZWZvcmUgYWNjZXNzaW5nIHRoZSBsYXN0IDIgKi8KICAgICAgLyogYnl0ZXMgaXMgdmFsaWQuICovCiAgICAgIHByZXZfYnl0ZTEgPSByaW5nYnVmZmVyWyhwb3MgLSAxKSAmIHJpbmdidWZmZXJfbWFza107CiAgICAgIHByZXZfYnl0ZTIgPSByaW5nYnVmZmVyWyhwb3MgLSAyKSAmIHJpbmdidWZmZXJfbWFza107CiAgICB9CgogICAgLyogUHJvdGVjdCBwb3MgZnJvbSBvdmVyZmxvdywgd3JhcCBpdCBhcm91bmQgYXQgZXZlcnkgR0Igb2YgaW5wdXQgZGF0YSAqLwogICAgcG9zICY9IDB4M2ZmZmZmZmY7CiAgfQoKICBvdXRwdXQud3JpdGUocmluZ2J1ZmZlciwgcG9zICYgcmluZ2J1ZmZlcl9tYXNrKTsKfQoKZXhwb3J0cy5Ccm90bGlEZWNvbXByZXNzID0gQnJvdGxpRGVjb21wcmVzczsKCkJyb3RsaURpY3Rpb25hcnkuaW5pdCgpOwoKCi8qKiovIH0pLAovKiAxMTggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKZnVuY3Rpb24gQnJvdGxpSW5wdXQoYnVmZmVyKSB7CiAgdGhpcy5idWZmZXIgPSBidWZmZXI7CiAgdGhpcy5wb3MgPSAwOwp9CgpCcm90bGlJbnB1dC5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKGJ1ZiwgaSwgY291bnQpIHsKICBpZiAodGhpcy5wb3MgKyBjb3VudCA+IHRoaXMuYnVmZmVyLmxlbmd0aCkgewogICAgY291bnQgPSB0aGlzLmJ1ZmZlci5sZW5ndGggLSB0aGlzLnBvczsKICB9CiAgCiAgZm9yICh2YXIgcCA9IDA7IHAgPCBjb3VudDsgcCsrKQogICAgYnVmW2kgKyBwXSA9IHRoaXMuYnVmZmVyW3RoaXMucG9zICsgcF07CiAgCiAgdGhpcy5wb3MgKz0gY291bnQ7CiAgcmV0dXJuIGNvdW50Owp9CgpleHBvcnRzLkJyb3RsaUlucHV0ID0gQnJvdGxpSW5wdXQ7CgpmdW5jdGlvbiBCcm90bGlPdXRwdXQoYnVmKSB7CiAgdGhpcy5idWZmZXIgPSBidWY7CiAgdGhpcy5wb3MgPSAwOwp9CgpCcm90bGlPdXRwdXQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmLCBjb3VudCkgewogIGlmICh0aGlzLnBvcyArIGNvdW50ID4gdGhpcy5idWZmZXIubGVuZ3RoKQogICAgdGhyb3cgbmV3IEVycm9yKCdPdXRwdXQgYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2gnKTsKICAKICB0aGlzLmJ1ZmZlci5zZXQoYnVmLnN1YmFycmF5KDAsIGNvdW50KSwgdGhpcy5wb3MpOwogIHRoaXMucG9zICs9IGNvdW50OwogIHJldHVybiBjb3VudDsKfTsKCmV4cG9ydHMuQnJvdGxpT3V0cHV0ID0gQnJvdGxpT3V0cHV0OwoKCi8qKiovIH0pLAovKiAxMTkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogQ29weXJpZ2h0IDIwMTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgQ29sbGVjdGlvbiBvZiBzdGF0aWMgZGljdGlvbmFyeSB3b3Jkcy4KKi8KCnZhciBkYXRhID0gX193ZWJwYWNrX3JlcXVpcmVfXygyODYpOwpleHBvcnRzLmluaXQgPSBmdW5jdGlvbigpIHsKICBleHBvcnRzLmRpY3Rpb25hcnkgPSBkYXRhLmluaXQoKTsKfTsKCmV4cG9ydHMub2Zmc2V0c0J5TGVuZ3RoID0gbmV3IFVpbnQzMkFycmF5KFsKICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgIDQwOTYsICA5MjE2LCAyMTUwNCwgMzU4NDAsIDQ0MDMyLAogNTMyNDgsIDYzNDg4LCA3NDc1MiwgODcwNDAsIDkzNjk2LCAxMDA4NjQsIDEwNDcwNCwgMTA2NzUyLCAxMDg5MjgsIDExMzUzNiwKIDExNTk2OCwgMTE4NTI4LCAxMTk4NzIsIDEyMTI4MCwgMTIyMDE2LApdKTsKCmV4cG9ydHMuc2l6ZUJpdHNCeUxlbmd0aCA9IG5ldyBVaW50OEFycmF5KFsKICAwLCAgMCwgIDAsICAwLCAxMCwgMTAsIDExLCAxMSwgMTAsIDEwLAogMTAsIDEwLCAxMCwgIDksICA5LCAgOCwgIDcsICA3LCAgOCwgIDcsCiAgNywgIDYsICA2LCAgNSwgIDUsCl0pOwoKZXhwb3J0cy5taW5EaWN0aW9uYXJ5V29yZExlbmd0aCA9IDQ7CmV4cG9ydHMubWF4RGljdGlvbmFyeVdvcmRMZW5ndGggPSAyNDsKCgovKioqLyB9KSwKLyogMTIwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCmZ1bmN0aW9uIEh1ZmZtYW5Db2RlKGJpdHMsIHZhbHVlKSB7CiAgdGhpcy5iaXRzID0gYml0czsgICAvKiBudW1iZXIgb2YgYml0cyB1c2VkIGZvciB0aGlzIHN5bWJvbCAqLwogIHRoaXMudmFsdWUgPSB2YWx1ZTsgLyogc3ltYm9sIHZhbHVlIG9yIHRhYmxlIG9mZnNldCAqLwp9CgpleHBvcnRzLkh1ZmZtYW5Db2RlID0gSHVmZm1hbkNvZGU7Cgp2YXIgTUFYX0xFTkdUSCA9IDE1OwoKLyogUmV0dXJucyByZXZlcnNlKHJldmVyc2Uoa2V5LCBsZW4pICsgMSwgbGVuKSwgd2hlcmUgcmV2ZXJzZShrZXksIGxlbikgaXMgdGhlCiAgIGJpdC13aXNlIHJldmVyc2FsIG9mIHRoZSBsZW4gbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiBrZXkuICovCmZ1bmN0aW9uIEdldE5leHRLZXkoa2V5LCBsZW4pIHsKICB2YXIgc3RlcCA9IDEgPDwgKGxlbiAtIDEpOwogIHdoaWxlIChrZXkgJiBzdGVwKSB7CiAgICBzdGVwID4+PSAxOwogIH0KICByZXR1cm4gKGtleSAmIChzdGVwIC0gMSkpICsgc3RlcDsKfQoKLyogU3RvcmVzIGNvZGUgaW4gdGFibGVbMF0sIHRhYmxlW3N0ZXBdLCB0YWJsZVsyKnN0ZXBdLCAuLi4sIHRhYmxlW2VuZF0gKi8KLyogQXNzdW1lcyB0aGF0IGVuZCBpcyBhbiBpbnRlZ2VyIG11bHRpcGxlIG9mIHN0ZXAgKi8KZnVuY3Rpb24gUmVwbGljYXRlVmFsdWUodGFibGUsIGksIHN0ZXAsIGVuZCwgY29kZSkgewogIGRvIHsKICAgIGVuZCAtPSBzdGVwOwogICAgdGFibGVbaSArIGVuZF0gPSBuZXcgSHVmZm1hbkNvZGUoY29kZS5iaXRzLCBjb2RlLnZhbHVlKTsKICB9IHdoaWxlIChlbmQgPiAwKTsKfQoKLyogUmV0dXJucyB0aGUgdGFibGUgd2lkdGggb2YgdGhlIG5leHQgMm5kIGxldmVsIHRhYmxlLiBjb3VudCBpcyB0aGUgaGlzdG9ncmFtCiAgIG9mIGJpdCBsZW5ndGhzIGZvciB0aGUgcmVtYWluaW5nIHN5bWJvbHMsIGxlbiBpcyB0aGUgY29kZSBsZW5ndGggb2YgdGhlIG5leHQKICAgcHJvY2Vzc2VkIHN5bWJvbCAqLwpmdW5jdGlvbiBOZXh0VGFibGVCaXRTaXplKGNvdW50LCBsZW4sIHJvb3RfYml0cykgewogIHZhciBsZWZ0ID0gMSA8PCAobGVuIC0gcm9vdF9iaXRzKTsKICB3aGlsZSAobGVuIDwgTUFYX0xFTkdUSCkgewogICAgbGVmdCAtPSBjb3VudFtsZW5dOwogICAgaWYgKGxlZnQgPD0gMCkgYnJlYWs7CiAgICArK2xlbjsKICAgIGxlZnQgPDw9IDE7CiAgfQogIHJldHVybiBsZW4gLSByb290X2JpdHM7Cn0KCmV4cG9ydHMuQnJvdGxpQnVpbGRIdWZmbWFuVGFibGUgPSBmdW5jdGlvbihyb290X3RhYmxlLCB0YWJsZSwgcm9vdF9iaXRzLCBjb2RlX2xlbmd0aHMsIGNvZGVfbGVuZ3Roc19zaXplKSB7CiAgdmFyIHN0YXJ0X3RhYmxlID0gdGFibGU7CiAgdmFyIGNvZGU7ICAgICAgICAgICAgLyogY3VycmVudCB0YWJsZSBlbnRyeSAqLwogIHZhciBsZW47ICAgICAgICAgICAgIC8qIGN1cnJlbnQgY29kZSBsZW5ndGggKi8KICB2YXIgc3ltYm9sOyAgICAgICAgICAvKiBzeW1ib2wgaW5kZXggaW4gb3JpZ2luYWwgb3Igc29ydGVkIHRhYmxlICovCiAgdmFyIGtleTsgICAgICAgICAgICAgLyogcmV2ZXJzZWQgcHJlZml4IGNvZGUgKi8KICB2YXIgc3RlcDsgICAgICAgICAgICAvKiBzdGVwIHNpemUgdG8gcmVwbGljYXRlIHZhbHVlcyBpbiBjdXJyZW50IHRhYmxlICovCiAgdmFyIGxvdzsgICAgICAgICAgICAgLyogbG93IGJpdHMgZm9yIGN1cnJlbnQgcm9vdCBlbnRyeSAqLwogIHZhciBtYXNrOyAgICAgICAgICAgIC8qIG1hc2sgZm9yIGxvdyBiaXRzICovCiAgdmFyIHRhYmxlX2JpdHM7ICAgICAgLyoga2V5IGxlbmd0aCBvZiBjdXJyZW50IHRhYmxlICovCiAgdmFyIHRhYmxlX3NpemU7ICAgICAgLyogc2l6ZSBvZiBjdXJyZW50IHRhYmxlICovCiAgdmFyIHRvdGFsX3NpemU7ICAgICAgLyogc3VtIG9mIHJvb3QgdGFibGUgc2l6ZSBhbmQgMm5kIGxldmVsIHRhYmxlIHNpemVzICovCiAgdmFyIHNvcnRlZDsgICAgICAgICAgLyogc3ltYm9scyBzb3J0ZWQgYnkgY29kZSBsZW5ndGggKi8KICB2YXIgY291bnQgPSBuZXcgSW50MzJBcnJheShNQVhfTEVOR1RIICsgMSk7ICAvKiBudW1iZXIgb2YgY29kZXMgb2YgZWFjaCBsZW5ndGggKi8KICB2YXIgb2Zmc2V0ID0gbmV3IEludDMyQXJyYXkoTUFYX0xFTkdUSCArIDEpOyAgLyogb2Zmc2V0cyBpbiBzb3J0ZWQgdGFibGUgZm9yIGVhY2ggbGVuZ3RoICovCgogIHNvcnRlZCA9IG5ldyBJbnQzMkFycmF5KGNvZGVfbGVuZ3Roc19zaXplKTsKCiAgLyogYnVpbGQgaGlzdG9ncmFtIG9mIGNvZGUgbGVuZ3RocyAqLwogIGZvciAoc3ltYm9sID0gMDsgc3ltYm9sIDwgY29kZV9sZW5ndGhzX3NpemU7IHN5bWJvbCsrKSB7CiAgICBjb3VudFtjb2RlX2xlbmd0aHNbc3ltYm9sXV0rKzsKICB9CgogIC8qIGdlbmVyYXRlIG9mZnNldHMgaW50byBzb3J0ZWQgc3ltYm9sIHRhYmxlIGJ5IGNvZGUgbGVuZ3RoICovCiAgb2Zmc2V0WzFdID0gMDsKICBmb3IgKGxlbiA9IDE7IGxlbiA8IE1BWF9MRU5HVEg7IGxlbisrKSB7CiAgICBvZmZzZXRbbGVuICsgMV0gPSBvZmZzZXRbbGVuXSArIGNvdW50W2xlbl07CiAgfQoKICAvKiBzb3J0IHN5bWJvbHMgYnkgbGVuZ3RoLCBieSBzeW1ib2wgb3JkZXIgd2l0aGluIGVhY2ggbGVuZ3RoICovCiAgZm9yIChzeW1ib2wgPSAwOyBzeW1ib2wgPCBjb2RlX2xlbmd0aHNfc2l6ZTsgc3ltYm9sKyspIHsKICAgIGlmIChjb2RlX2xlbmd0aHNbc3ltYm9sXSAhPT0gMCkgewogICAgICBzb3J0ZWRbb2Zmc2V0W2NvZGVfbGVuZ3Roc1tzeW1ib2xdXSsrXSA9IHN5bWJvbDsKICAgIH0KICB9CiAgCiAgdGFibGVfYml0cyA9IHJvb3RfYml0czsKICB0YWJsZV9zaXplID0gMSA8PCB0YWJsZV9iaXRzOwogIHRvdGFsX3NpemUgPSB0YWJsZV9zaXplOwoKICAvKiBzcGVjaWFsIGNhc2UgY29kZSB3aXRoIG9ubHkgb25lIHZhbHVlICovCiAgaWYgKG9mZnNldFtNQVhfTEVOR1RIXSA9PT0gMSkgewogICAgZm9yIChrZXkgPSAwOyBrZXkgPCB0b3RhbF9zaXplOyArK2tleSkgewogICAgICByb290X3RhYmxlW3RhYmxlICsga2V5XSA9IG5ldyBIdWZmbWFuQ29kZSgwLCBzb3J0ZWRbMF0gJiAweGZmZmYpOwogICAgfQogICAgCiAgICByZXR1cm4gdG90YWxfc2l6ZTsKICB9CgogIC8qIGZpbGwgaW4gcm9vdCB0YWJsZSAqLwogIGtleSA9IDA7CiAgc3ltYm9sID0gMDsKICBmb3IgKGxlbiA9IDEsIHN0ZXAgPSAyOyBsZW4gPD0gcm9vdF9iaXRzOyArK2xlbiwgc3RlcCA8PD0gMSkgewogICAgZm9yICg7IGNvdW50W2xlbl0gPiAwOyAtLWNvdW50W2xlbl0pIHsKICAgICAgY29kZSA9IG5ldyBIdWZmbWFuQ29kZShsZW4gJiAweGZmLCBzb3J0ZWRbc3ltYm9sKytdICYgMHhmZmZmKTsKICAgICAgUmVwbGljYXRlVmFsdWUocm9vdF90YWJsZSwgdGFibGUgKyBrZXksIHN0ZXAsIHRhYmxlX3NpemUsIGNvZGUpOwogICAgICBrZXkgPSBHZXROZXh0S2V5KGtleSwgbGVuKTsKICAgIH0KICB9CgogIC8qIGZpbGwgaW4gMm5kIGxldmVsIHRhYmxlcyBhbmQgYWRkIHBvaW50ZXJzIHRvIHJvb3QgdGFibGUgKi8KICBtYXNrID0gdG90YWxfc2l6ZSAtIDE7CiAgbG93ID0gLTE7CiAgZm9yIChsZW4gPSByb290X2JpdHMgKyAxLCBzdGVwID0gMjsgbGVuIDw9IE1BWF9MRU5HVEg7ICsrbGVuLCBzdGVwIDw8PSAxKSB7CiAgICBmb3IgKDsgY291bnRbbGVuXSA+IDA7IC0tY291bnRbbGVuXSkgewogICAgICBpZiAoKGtleSAmIG1hc2spICE9PSBsb3cpIHsKICAgICAgICB0YWJsZSArPSB0YWJsZV9zaXplOwogICAgICAgIHRhYmxlX2JpdHMgPSBOZXh0VGFibGVCaXRTaXplKGNvdW50LCBsZW4sIHJvb3RfYml0cyk7CiAgICAgICAgdGFibGVfc2l6ZSA9IDEgPDwgdGFibGVfYml0czsKICAgICAgICB0b3RhbF9zaXplICs9IHRhYmxlX3NpemU7CiAgICAgICAgbG93ID0ga2V5ICYgbWFzazsKICAgICAgICByb290X3RhYmxlW3N0YXJ0X3RhYmxlICsgbG93XSA9IG5ldyBIdWZmbWFuQ29kZSgodGFibGVfYml0cyArIHJvb3RfYml0cykgJiAweGZmLCAoKHRhYmxlIC0gc3RhcnRfdGFibGUpIC0gbG93KSAmIDB4ZmZmZik7CiAgICAgIH0KICAgICAgY29kZSA9IG5ldyBIdWZmbWFuQ29kZSgobGVuIC0gcm9vdF9iaXRzKSAmIDB4ZmYsIHNvcnRlZFtzeW1ib2wrK10gJiAweGZmZmYpOwogICAgICBSZXBsaWNhdGVWYWx1ZShyb290X3RhYmxlLCB0YWJsZSArIChrZXkgPj4gcm9vdF9iaXRzKSwgc3RlcCwgdGFibGVfc2l6ZSwgY29kZSk7CiAgICAgIGtleSA9IEdldE5leHRLZXkoa2V5LCBsZW4pOwogICAgfQogIH0KICAKICByZXR1cm4gdG90YWxfc2l6ZTsKfQoKCi8qKiovIH0pLAovKiAxMjEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKEJ1ZmZlcikgey8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CgovKgpQREZJbWFnZSAtIGVtYmVkcyBpbWFnZXMgaW4gUERGIGRvY3VtZW50cwpCeSBEZXZvbiBHb3ZldHQKICovCgooZnVuY3Rpb24oKSB7CiAgdmFyIERhdGEsIEpQRUcsIFBERkltYWdlLCBQTkcsIGZzOwoKICBmcyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CgogIERhdGEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5OCk7CgogIEpQRUcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5OSk7CgogIFBORyA9IF9fd2VicGFja19yZXF1aXJlX18oMzAwKTsKCiAgUERGSW1hZ2UgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBQREZJbWFnZSgpIHt9CgogICAgUERGSW1hZ2Uub3BlbiA9IGZ1bmN0aW9uKHNyYywgbGFiZWwpIHsKICAgICAgdmFyIGRhdGEsIG1hdGNoOwogICAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKHNyYykpIHsKICAgICAgICBkYXRhID0gc3JjOwogICAgICB9IGVsc2UgaWYgKHNyYyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7CiAgICAgICAgZGF0YSA9IG5ldyBCdWZmZXIobmV3IFVpbnQ4QXJyYXkoc3JjKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKG1hdGNoID0gL15kYXRhOi4rO2Jhc2U2NCwoLiopJC8uZXhlYyhzcmMpKSB7CiAgICAgICAgICBkYXRhID0gbmV3IEJ1ZmZlcihtYXRjaFsxXSwgJ2Jhc2U2NCcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBkYXRhID0gZnMucmVhZEZpbGVTeW5jKHNyYyk7CiAgICAgICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoZGF0YVswXSA9PT0gMHhmZiAmJiBkYXRhWzFdID09PSAweGQ4KSB7CiAgICAgICAgcmV0dXJuIG5ldyBKUEVHKGRhdGEsIGxhYmVsKTsKICAgICAgfSBlbHNlIGlmIChkYXRhWzBdID09PSAweDg5ICYmIGRhdGEudG9TdHJpbmcoJ2FzY2lpJywgMSwgNCkgPT09ICdQTkcnKSB7CiAgICAgICAgcmV0dXJuIG5ldyBQTkcoZGF0YSwgbGFiZWwpOwogICAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBpbWFnZSBmb3JtYXQuJyk7CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIFBERkltYWdlOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IFBERkltYWdlOwoKfSkuY2FsbCh0aGlzKTsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlcikpCgovKioqLyB9KSwKLyogMTIyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwpIHttb2R1bGUuZXhwb3J0cyA9IGdsb2JhbFsicGRmTWFrZSJdID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjMpOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyg3KSkpCgovKioqLyB9KSwKLyogMTIzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKEJ1ZmZlciwgZ2xvYmFsKSB7Cgp2YXIgUGRmUHJpbnRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTI2KTsKdmFyIGlzRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzRnVuY3Rpb247CnZhciBGaWxlU2F2ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwNik7CnZhciBzYXZlQXMgPSBGaWxlU2F2ZXIuc2F2ZUFzOwoKdmFyIGRlZmF1bHRDbGllbnRGb250cyA9IHsKCVJvYm90bzogewoJCW5vcm1hbDogJ1JvYm90by1SZWd1bGFyLnR0ZicsCgkJYm9sZDogJ1JvYm90by1NZWRpdW0udHRmJywKCQlpdGFsaWNzOiAnUm9ib3RvLUl0YWxpYy50dGYnLAoJCWJvbGRpdGFsaWNzOiAnUm9ib3RvLU1lZGl1bUl0YWxpYy50dGYnCgl9Cn07CgpmdW5jdGlvbiBEb2N1bWVudChkb2NEZWZpbml0aW9uLCB0YWJsZUxheW91dHMsIGZvbnRzLCB2ZnMpIHsKCXRoaXMuZG9jRGVmaW5pdGlvbiA9IGRvY0RlZmluaXRpb247Cgl0aGlzLnRhYmxlTGF5b3V0cyA9IHRhYmxlTGF5b3V0cyB8fCBudWxsOwoJdGhpcy5mb250cyA9IGZvbnRzIHx8IGRlZmF1bHRDbGllbnRGb250czsKCXRoaXMudmZzID0gdmZzOwp9CgpmdW5jdGlvbiBjYW5DcmVhdGVQZGYoKSB7CgkvLyBFbnN1cmUgdGhlIGJyb3dzZXIgcHJvdmlkZXMgdGhlIGxldmVsIG9mIHN1cHBvcnQgbmVlZGVkCglpZiAoIU9iamVjdC5rZXlzKSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoJcmV0dXJuIHRydWU7Cn0KCkRvY3VtZW50LnByb3RvdHlwZS5fY3JlYXRlRG9jID0gZnVuY3Rpb24gKG9wdGlvbnMsIGNhbGxiYWNrKSB7CglvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCWlmICh0aGlzLnRhYmxlTGF5b3V0cykgewoJCW9wdGlvbnMudGFibGVMYXlvdXRzID0gdGhpcy50YWJsZUxheW91dHM7Cgl9CgoJdmFyIHByaW50ZXIgPSBuZXcgUGRmUHJpbnRlcih0aGlzLmZvbnRzKTsKCV9fd2VicGFja19yZXF1aXJlX18oOCkuYmluZEZTKHRoaXMudmZzKTsgLy8gYmluZCB2aXJ0dWFsIGZpbGUgc3lzdGVtIHRvIGZpbGUgc3lzdGVtCgoJdmFyIGRvYyA9IHByaW50ZXIuY3JlYXRlUGRmS2l0RG9jdW1lbnQodGhpcy5kb2NEZWZpbml0aW9uLCBvcHRpb25zKTsKCXZhciBjaHVua3MgPSBbXTsKCXZhciByZXN1bHQ7CgoJZG9jLm9uKCdyZWFkYWJsZScsIGZ1bmN0aW9uICgpIHsKCQl2YXIgY2h1bms7CgkJd2hpbGUgKChjaHVuayA9IGRvYy5yZWFkKDkwMDcxOTkyNTQ3NDA5OTEpKSAhPT0gbnVsbCkgewoJCQljaHVua3MucHVzaChjaHVuayk7CgkJfQoJfSk7Cglkb2Mub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHsKCQlyZXN1bHQgPSBCdWZmZXIuY29uY2F0KGNodW5rcyk7CgkJY2FsbGJhY2socmVzdWx0LCBkb2MuX3BkZk1ha2VQYWdlcyk7Cgl9KTsKCWRvYy5lbmQoKTsKfTsKCkRvY3VtZW50LnByb3RvdHlwZS5fZ2V0UGFnZXMgPSBmdW5jdGlvbiAob3B0aW9ucywgY2IpIHsKCWlmICghY2IpIHsKCQl0aHJvdyAnX2dldFBhZ2VzIGlzIGFuIGFzeW5jIG1ldGhvZCBhbmQgbmVlZHMgYSBjYWxsYmFjayBhcmd1bWVudCc7Cgl9Cgl0aGlzLl9jcmVhdGVEb2Mob3B0aW9ucywgZnVuY3Rpb24gKGlnbm9yZUJ1ZmZlciwgcGFnZXMpIHsKCQljYihwYWdlcyk7Cgl9KTsKfTsKCkRvY3VtZW50LnByb3RvdHlwZS5fYnVmZmVyVG9CbG9iID0gZnVuY3Rpb24gKGJ1ZmZlcikgewoJdmFyIGJsb2I7Cgl0cnkgewoJCWJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9wZGYnfSk7Cgl9IGNhdGNoIChlKSB7CgkJLy8gT2xkIGJyb3dzZXIgd2hpY2ggY2FuJ3QgaGFuZGxlIGl0IHdpdGhvdXQgbWFraW5nIGl0IGFuIGJ5dGUgYXJyYXkgKGllMTApCgkJaWYgKGUubmFtZSA9PT0gJ0ludmFsaWRTdGF0ZUVycm9yJykgewoJCQl2YXIgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKCQkJYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXkuYnVmZmVyXSwge3R5cGU6ICdhcHBsaWNhdGlvbi9wZGYnfSk7CgkJfQoJfQoKCWlmICghYmxvYikgewoJCXRocm93ICdDb3VsZCBub3QgZ2VuZXJhdGUgYmxvYic7Cgl9CgoJcmV0dXJuIGJsb2I7Cn07CgpEb2N1bWVudC5wcm90b3R5cGUuX29wZW5XaW5kb3cgPSBmdW5jdGlvbiAoKSB7CgkvLyB3ZSBoYXZlIHRvIG9wZW4gdGhlIHdpbmRvdyBpbW1lZGlhdGVseSBhbmQgc3RvcmUgdGhlIHJlZmVyZW5jZQoJLy8gb3RoZXJ3aXNlIHBvcHVwIGJsb2NrZXJzIHdpbGwgc3RvcCB1cwoJdmFyIHdpbiA9IHdpbmRvdy5vcGVuKCcnLCAnX2JsYW5rJyk7CglpZiAod2luID09PSBudWxsKSB7CgkJdGhyb3cgJ09wZW4gUERGIGluIG5ldyB3aW5kb3cgYmxvY2tlZCBieSBicm93c2VyJzsKCX0KCglyZXR1cm4gd2luOwp9OwoKRG9jdW1lbnQucHJvdG90eXBlLl9vcGVuUGRmID0gZnVuY3Rpb24gKG9wdGlvbnMsIHdpbikgewoJaWYgKCF3aW4pIHsKCQl3aW4gPSB0aGlzLl9vcGVuV2luZG93KCk7Cgl9Cgl0cnkgewoJCXRoaXMuZ2V0QmxvYihmdW5jdGlvbiAocmVzdWx0KSB7CgkJCXZhciB1cmxDcmVhdG9yID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMOwoJCQl2YXIgcGRmVXJsID0gdXJsQ3JlYXRvci5jcmVhdGVPYmplY3RVUkwocmVzdWx0KTsKCQkJd2luLmxvY2F0aW9uLmhyZWYgPSBwZGZVcmw7CgkJfSwgb3B0aW9ucyk7Cgl9IGNhdGNoIChlKSB7CgkJd2luLmNsb3NlKCk7CgkJdGhyb3cgZTsKCX0KfTsKCkRvY3VtZW50LnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKG9wdGlvbnMsIHdpbikgewoJb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CglvcHRpb25zLmF1dG9QcmludCA9IGZhbHNlOwoJd2luID0gd2luIHx8IG51bGw7CgoJdGhpcy5fb3BlblBkZihvcHRpb25zLCB3aW4pOwp9OwoKCkRvY3VtZW50LnByb3RvdHlwZS5wcmludCA9IGZ1bmN0aW9uIChvcHRpb25zLCB3aW4pIHsKCW9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwoJb3B0aW9ucy5hdXRvUHJpbnQgPSB0cnVlOwoJd2luID0gd2luIHx8IG51bGw7CgoJdGhpcy5fb3BlblBkZihvcHRpb25zLCB3aW4pOwp9OwoKRG9jdW1lbnQucHJvdG90eXBlLmRvd25sb2FkID0gZnVuY3Rpb24gKGRlZmF1bHRGaWxlTmFtZSwgY2IsIG9wdGlvbnMpIHsKCWlmIChpc0Z1bmN0aW9uKGRlZmF1bHRGaWxlTmFtZSkpIHsKCQljYiA9IGRlZmF1bHRGaWxlTmFtZTsKCQlkZWZhdWx0RmlsZU5hbWUgPSBudWxsOwoJfQoKCWRlZmF1bHRGaWxlTmFtZSA9IGRlZmF1bHRGaWxlTmFtZSB8fCAnZmlsZS5wZGYnOwoJdGhpcy5nZXRCbG9iKGZ1bmN0aW9uIChyZXN1bHQpIHsKCQlzYXZlQXMocmVzdWx0LCBkZWZhdWx0RmlsZU5hbWUpOwoKCQlpZiAoaXNGdW5jdGlvbihjYikpIHsKCQkJY2IoKTsKCQl9Cgl9LCBvcHRpb25zKTsKfTsKCkRvY3VtZW50LnByb3RvdHlwZS5nZXRCYXNlNjQgPSBmdW5jdGlvbiAoY2IsIG9wdGlvbnMpIHsKCWlmICghY2IpIHsKCQl0aHJvdyAnZ2V0QmFzZTY0IGlzIGFuIGFzeW5jIG1ldGhvZCBhbmQgbmVlZHMgYSBjYWxsYmFjayBhcmd1bWVudCc7Cgl9Cgl0aGlzLmdldEJ1ZmZlcihmdW5jdGlvbiAoYnVmZmVyKSB7CgkJY2IoYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKSk7Cgl9LCBvcHRpb25zKTsKfTsKCkRvY3VtZW50LnByb3RvdHlwZS5nZXREYXRhVXJsID0gZnVuY3Rpb24gKGNiLCBvcHRpb25zKSB7CglpZiAoIWNiKSB7CgkJdGhyb3cgJ2dldERhdGFVcmwgaXMgYW4gYXN5bmMgbWV0aG9kIGFuZCBuZWVkcyBhIGNhbGxiYWNrIGFyZ3VtZW50JzsKCX0KCXRoaXMuZ2V0QnVmZmVyKGZ1bmN0aW9uIChidWZmZXIpIHsKCQljYignZGF0YTphcHBsaWNhdGlvbi9wZGY7YmFzZTY0LCcgKyBidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpKTsKCX0sIG9wdGlvbnMpOwp9OwoKRG9jdW1lbnQucHJvdG90eXBlLmdldEJsb2IgPSBmdW5jdGlvbiAoY2IsIG9wdGlvbnMpIHsKCWlmICghY2IpIHsKCQl0aHJvdyAnZ2V0QmxvYiBpcyBhbiBhc3luYyBtZXRob2QgYW5kIG5lZWRzIGEgY2FsbGJhY2sgYXJndW1lbnQnOwoJfQoJdmFyIHRoYXQgPSB0aGlzOwoJdGhpcy5nZXRCdWZmZXIoZnVuY3Rpb24gKHJlc3VsdCkgewoJCXZhciBibG9iID0gdGhhdC5fYnVmZmVyVG9CbG9iKHJlc3VsdCk7CgkJY2IoYmxvYik7Cgl9LCBvcHRpb25zKTsKfTsKCkRvY3VtZW50LnByb3RvdHlwZS5nZXRCdWZmZXIgPSBmdW5jdGlvbiAoY2IsIG9wdGlvbnMpIHsKCWlmICghY2IpIHsKCQl0aHJvdyAnZ2V0QnVmZmVyIGlzIGFuIGFzeW5jIG1ldGhvZCBhbmQgbmVlZHMgYSBjYWxsYmFjayBhcmd1bWVudCc7Cgl9Cgl0aGlzLl9jcmVhdGVEb2Mob3B0aW9ucywgZnVuY3Rpb24gKGJ1ZmZlcikgewoJCWNiKGJ1ZmZlcik7Cgl9KTsKfTsKCm1vZHVsZS5leHBvcnRzID0gewoJY3JlYXRlUGRmOiBmdW5jdGlvbiAoZG9jRGVmaW5pdGlvbikgewoJCWlmICghY2FuQ3JlYXRlUGRmKCkpIHsKCQkJdGhyb3cgJ1lvdXIgYnJvd3NlciBkb2VzIG5vdCBwcm92aWRlIHRoZSBsZXZlbCBvZiBzdXBwb3J0IG5lZWRlZCc7CgkJfQoJCXJldHVybiBuZXcgRG9jdW1lbnQoZG9jRGVmaW5pdGlvbiwgZ2xvYmFsLnBkZk1ha2UudGFibGVMYXlvdXRzLCBnbG9iYWwucGRmTWFrZS5mb250cywgZ2xvYmFsLnBkZk1ha2UudmZzKTsKCX0KfTsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlciwgX193ZWJwYWNrX3JlcXVpcmVfXyg3KSkpCgovKioqLyB9KSwKLyogMTI0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgpleHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoCmV4cG9ydHMudG9CeXRlQXJyYXkgPSB0b0J5dGVBcnJheQpleHBvcnRzLmZyb21CeXRlQXJyYXkgPSBmcm9tQnl0ZUFycmF5Cgp2YXIgbG9va3VwID0gW10KdmFyIHJldkxvb2t1cCA9IFtdCnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXkKCnZhciBjb2RlID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8nCmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7CiAgbG9va3VwW2ldID0gY29kZVtpXQogIHJldkxvb2t1cFtjb2RlLmNoYXJDb2RlQXQoaSldID0gaQp9CgovLyBTdXBwb3J0IGRlY29kaW5nIFVSTC1zYWZlIGJhc2U2NCBzdHJpbmdzLCBhcyBOb2RlLmpzIGRvZXMuCi8vIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0I1VSTF9hcHBsaWNhdGlvbnMKcmV2TG9va3VwWyctJy5jaGFyQ29kZUF0KDApXSA9IDYyCnJldkxvb2t1cFsnXycuY2hhckNvZGVBdCgwKV0gPSA2MwoKZnVuY3Rpb24gcGxhY2VIb2xkZXJzQ291bnQgKGI2NCkgewogIHZhciBsZW4gPSBiNjQubGVuZ3RoCiAgaWYgKGxlbiAlIDQgPiAwKSB7CiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKQogIH0KCiAgLy8gdGhlIG51bWJlciBvZiBlcXVhbCBzaWducyAocGxhY2UgaG9sZGVycykKICAvLyBpZiB0aGVyZSBhcmUgdHdvIHBsYWNlaG9sZGVycywgdGhhbiB0aGUgdHdvIGNoYXJhY3RlcnMgYmVmb3JlIGl0CiAgLy8gcmVwcmVzZW50IG9uZSBieXRlCiAgLy8gaWYgdGhlcmUgaXMgb25seSBvbmUsIHRoZW4gdGhlIHRocmVlIGNoYXJhY3RlcnMgYmVmb3JlIGl0IHJlcHJlc2VudCAyIGJ5dGVzCiAgLy8gdGhpcyBpcyBqdXN0IGEgY2hlYXAgaGFjayB0byBub3QgZG8gaW5kZXhPZiB0d2ljZQogIHJldHVybiBiNjRbbGVuIC0gMl0gPT09ICc9JyA/IDIgOiBiNjRbbGVuIC0gMV0gPT09ICc9JyA/IDEgOiAwCn0KCmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkgewogIC8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YQogIHJldHVybiAoYjY0Lmxlbmd0aCAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0NvdW50KGI2NCkKfQoKZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkgewogIHZhciBpLCBsLCB0bXAsIHBsYWNlSG9sZGVycywgYXJyCiAgdmFyIGxlbiA9IGI2NC5sZW5ndGgKICBwbGFjZUhvbGRlcnMgPSBwbGFjZUhvbGRlcnNDb3VudChiNjQpCgogIGFyciA9IG5ldyBBcnIoKGxlbiAqIDMgLyA0KSAtIHBsYWNlSG9sZGVycykKCiAgLy8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFycwogIGwgPSBwbGFjZUhvbGRlcnMgPiAwID8gbGVuIC0gNCA6IGxlbgoKICB2YXIgTCA9IDAKCiAgZm9yIChpID0gMDsgaSA8IGw7IGkgKz0gNCkgewogICAgdG1wID0gKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTgpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDEyKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA8PCA2KSB8IHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMyldCiAgICBhcnJbTCsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRgogICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRgogICAgYXJyW0wrK10gPSB0bXAgJiAweEZGCiAgfQoKICBpZiAocGxhY2VIb2xkZXJzID09PSAyKSB7CiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAyKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KQogICAgYXJyW0wrK10gPSB0bXAgJiAweEZGCiAgfSBlbHNlIGlmIChwbGFjZUhvbGRlcnMgPT09IDEpIHsKICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCA0KSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKQogICAgYXJyW0wrK10gPSAodG1wID4+IDgpICYgMHhGRgogICAgYXJyW0wrK10gPSB0bXAgJiAweEZGCiAgfQoKICByZXR1cm4gYXJyCn0KCmZ1bmN0aW9uIHRyaXBsZXRUb0Jhc2U2NCAobnVtKSB7CiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArIGxvb2t1cFtudW0gPj4gMTIgJiAweDNGXSArIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICsgbG9va3VwW251bSAmIDB4M0ZdCn0KCmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkgewogIHZhciB0bXAKICB2YXIgb3V0cHV0ID0gW10KICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykgewogICAgdG1wID0gKCh1aW50OFtpXSA8PCAxNikgJiAweEZGMDAwMCkgKyAoKHVpbnQ4W2kgKyAxXSA8PCA4KSAmIDB4RkYwMCkgKyAodWludDhbaSArIDJdICYgMHhGRikKICAgIG91dHB1dC5wdXNoKHRyaXBsZXRUb0Jhc2U2NCh0bXApKQogIH0KICByZXR1cm4gb3V0cHV0LmpvaW4oJycpCn0KCmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7CiAgdmFyIHRtcAogIHZhciBsZW4gPSB1aW50OC5sZW5ndGgKICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXMKICB2YXIgb3V0cHV0ID0gJycKICB2YXIgcGFydHMgPSBbXQogIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgMwoKICAvLyBnbyB0aHJvdWdoIHRoZSBhcnJheSBldmVyeSB0aHJlZSBieXRlcywgd2UnbGwgZGVhbCB3aXRoIHRyYWlsaW5nIHN0dWZmIGxhdGVyCiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkgewogICAgcGFydHMucHVzaChlbmNvZGVDaHVuayh1aW50OCwgaSwgKGkgKyBtYXhDaHVua0xlbmd0aCkgPiBsZW4yID8gbGVuMiA6IChpICsgbWF4Q2h1bmtMZW5ndGgpKSkKICB9CgogIC8vIHBhZCB0aGUgZW5kIHdpdGggemVyb3MsIGJ1dCBtYWtlIHN1cmUgdG8gbm90IGZvcmdldCB0aGUgZXh0cmEgYnl0ZXMKICBpZiAoZXh0cmFCeXRlcyA9PT0gMSkgewogICAgdG1wID0gdWludDhbbGVuIC0gMV0KICAgIG91dHB1dCArPSBsb29rdXBbdG1wID4+IDJdCiAgICBvdXRwdXQgKz0gbG9va3VwWyh0bXAgPDwgNCkgJiAweDNGXQogICAgb3V0cHV0ICs9ICc9PScKICB9IGVsc2UgaWYgKGV4dHJhQnl0ZXMgPT09IDIpIHsKICAgIHRtcCA9ICh1aW50OFtsZW4gLSAyXSA8PCA4KSArICh1aW50OFtsZW4gLSAxXSkKICAgIG91dHB1dCArPSBsb29rdXBbdG1wID4+IDEwXQogICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wID4+IDQpICYgMHgzRl0KICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCAyKSAmIDB4M0ZdCiAgICBvdXRwdXQgKz0gJz0nCiAgfQoKICBwYXJ0cy5wdXNoKG91dHB1dCkKCiAgcmV0dXJuIHBhcnRzLmpvaW4oJycpCn0KCgovKioqLyB9KSwKLyogMTI1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCmV4cG9ydHMucmVhZCA9IGZ1bmN0aW9uIChidWZmZXIsIG9mZnNldCwgaXNMRSwgbUxlbiwgbkJ5dGVzKSB7CiAgdmFyIGUsIG0KICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMQogIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxCiAgdmFyIGVCaWFzID0gZU1heCA+PiAxCiAgdmFyIG5CaXRzID0gLTcKICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwCiAgdmFyIGQgPSBpc0xFID8gLTEgOiAxCiAgdmFyIHMgPSBidWZmZXJbb2Zmc2V0ICsgaV0KCiAgaSArPSBkCgogIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpCiAgcyA+Pj0gKC1uQml0cykKICBuQml0cyArPSBlTGVuCiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IGUgKiAyNTYgKyBidWZmZXJbb2Zmc2V0ICsgaV0sIGkgKz0gZCwgbkJpdHMgLT0gOCkge30KCiAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSkKICBlID4+PSAoLW5CaXRzKQogIG5CaXRzICs9IG1MZW4KICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gbSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fQoKICBpZiAoZSA9PT0gMCkgewogICAgZSA9IDEgLSBlQmlhcwogIH0gZWxzZSBpZiAoZSA9PT0gZU1heCkgewogICAgcmV0dXJuIG0gPyBOYU4gOiAoKHMgPyAtMSA6IDEpICogSW5maW5pdHkpCiAgfSBlbHNlIHsKICAgIG0gPSBtICsgTWF0aC5wb3coMiwgbUxlbikKICAgIGUgPSBlIC0gZUJpYXMKICB9CiAgcmV0dXJuIChzID8gLTEgOiAxKSAqIG0gKiBNYXRoLnBvdygyLCBlIC0gbUxlbikKfQoKZXhwb3J0cy53cml0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIHZhbHVlLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykgewogIHZhciBlLCBtLCBjCiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDEKICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMQogIHZhciBlQmlhcyA9IGVNYXggPj4gMQogIHZhciBydCA9IChtTGVuID09PSAyMyA/IE1hdGgucG93KDIsIC0yNCkgLSBNYXRoLnBvdygyLCAtNzcpIDogMCkKICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpCiAgdmFyIGQgPSBpc0xFID8gMSA6IC0xCiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApID8gMSA6IDAKCiAgdmFsdWUgPSBNYXRoLmFicyh2YWx1ZSkKCiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHsKICAgIG0gPSBpc05hTih2YWx1ZSkgPyAxIDogMAogICAgZSA9IGVNYXgKICB9IGVsc2UgewogICAgZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsdWUpIC8gTWF0aC5MTjIpCiAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7CiAgICAgIGUtLQogICAgICBjICo9IDIKICAgIH0KICAgIGlmIChlICsgZUJpYXMgPj0gMSkgewogICAgICB2YWx1ZSArPSBydCAvIGMKICAgIH0gZWxzZSB7CiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKQogICAgfQogICAgaWYgKHZhbHVlICogYyA+PSAyKSB7CiAgICAgIGUrKwogICAgICBjIC89IDIKICAgIH0KCiAgICBpZiAoZSArIGVCaWFzID49IGVNYXgpIHsKICAgICAgbSA9IDAKICAgICAgZSA9IGVNYXgKICAgIH0gZWxzZSBpZiAoZSArIGVCaWFzID49IDEpIHsKICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pCiAgICAgIGUgPSBlICsgZUJpYXMKICAgIH0gZWxzZSB7CiAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKQogICAgICBlID0gMAogICAgfQogIH0KCiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge30KCiAgZSA9IChlIDw8IG1MZW4pIHwgbQogIGVMZW4gKz0gbUxlbgogIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge30KCiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4Cn0KCgovKioqLyB9KSwKLyogMTI2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKLyplc2xpbnQgbm8tdW51c2VkLXZhcnM6IFsiZXJyb3IiLCB7ImFyZ3MiOiAibm9uZSJ9XSovCgoKdmFyIEZvbnRQcm92aWRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTI3KTsKdmFyIExheW91dEJ1aWxkZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyOCk7CnZhciBQZGZLaXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzOCk7CnZhciBzaXplcyA9IF9fd2VicGFja19yZXF1aXJlX18oMzAzKTsKdmFyIEltYWdlTWVhc3VyZSA9IF9fd2VicGFja19yZXF1aXJlX18oMzA0KTsKdmFyIHRleHREZWNvcmF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwNSk7CnZhciBUZXh0VG9vbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTsKdmFyIGlzRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzRnVuY3Rpb247CnZhciBpc1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNTdHJpbmc7CnZhciBpc051bWJlciA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNOdW1iZXI7CnZhciBpc0Jvb2xlYW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzQm9vbGVhbjsKdmFyIGlzQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzQXJyYXk7CgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vIFBkZlByaW50ZXIKCi8qKgogKiBAY2xhc3MgQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBhIFBkZlByaW50ZXIgd2hpY2ggdHVybnMgZG9jdW1lbnQgZGVmaW5pdGlvbiBpbnRvIGEgcGRmCiAqCiAqIEBwYXJhbSB7T2JqZWN0fSBmb250RGVzY3JpcHRvcnMgZm9udCBkZWZpbml0aW9uIGRpY3Rpb25hcnkKICoKICogQGV4YW1wbGUKICogdmFyIGZvbnREZXNjcmlwdG9ycyA9IHsKICoJUm9ib3RvOiB7CiAqCQlub3JtYWw6ICdmb250cy9Sb2JvdG8tUmVndWxhci50dGYnLAogKgkJYm9sZDogJ2ZvbnRzL1JvYm90by1NZWRpdW0udHRmJywKICoJCWl0YWxpY3M6ICdmb250cy9Sb2JvdG8tSXRhbGljLnR0ZicsCiAqCQlib2xkaXRhbGljczogJ2ZvbnRzL1JvYm90by1NZWRpdW1JdGFsaWMudHRmJwogKgl9CiAqIH07CiAqCiAqIHZhciBwcmludGVyID0gbmV3IFBkZlByaW50ZXIoZm9udERlc2NyaXB0b3JzKTsKICovCmZ1bmN0aW9uIFBkZlByaW50ZXIoZm9udERlc2NyaXB0b3JzKSB7Cgl0aGlzLmZvbnREZXNjcmlwdG9ycyA9IGZvbnREZXNjcmlwdG9yczsKfQoKLyoqCiAqIEV4ZWN1dGVzIGxheW91dCBlbmdpbmUgZm9yIHRoZSBzcGVjaWZpZWQgZG9jdW1lbnQgYW5kIHJlbmRlcnMgaXQgaW50byBhIHBkZmtpdCBkb2N1bWVudAogKiByZWFkeSB0byBiZSBzYXZlZC4KICoKICogQHBhcmFtIHtPYmplY3R9IGRvY0RlZmluaXRpb24gZG9jdW1lbnQgZGVmaW5pdGlvbgogKiBAcGFyYW0ge09iamVjdH0gZG9jRGVmaW5pdGlvbi5jb250ZW50IGFuIGFycmF5IGRlc2NyaWJpbmcgdGhlIHBkZiBzdHJ1Y3R1cmUgKGZvciBtb3JlIGluZm9ybWF0aW9uIHRha2UgYSBsb29rIGF0IHRoZSBleGFtcGxlcyBpbiB0aGUgL2V4YW1wbGVzIGZvbGRlcikKICogQHBhcmFtIHtPYmplY3R9IFtkb2NEZWZpbml0aW9uLmRlZmF1bHRTdHlsZV0gZGVmYXVsdCAoaW1wbGljaXQpIHN0eWxlIGRlZmluaXRpb24KICogQHBhcmFtIHtPYmplY3R9IFtkb2NEZWZpbml0aW9uLnN0eWxlc10gZGljdGlvbmFyeSBkZWZpbmluZyBhbGwgc3R5bGVzIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBkb2N1bWVudAogKiBAcGFyYW0ge09iamVjdH0gW2RvY0RlZmluaXRpb24ucGFnZVNpemVdIHBhZ2Ugc2l6ZSAocGRma2l0IHVuaXRzLCBBNCBkaW1lbnNpb25zIGJ5IGRlZmF1bHQpCiAqIEBwYXJhbSB7TnVtYmVyfSBkb2NEZWZpbml0aW9uLnBhZ2VTaXplLndpZHRoIHdpZHRoCiAqIEBwYXJhbSB7TnVtYmVyfSBkb2NEZWZpbml0aW9uLnBhZ2VTaXplLmhlaWdodCBoZWlnaHQKICogQHBhcmFtIHtPYmplY3R9IFtkb2NEZWZpbml0aW9uLnBhZ2VNYXJnaW5zXSBwYWdlIG1hcmdpbnMgKHBkZmtpdCB1bml0cykKICogQHBhcmFtIHtOdW1iZXJ9IGRvY0RlZmluaXRpb24ubWF4UGFnZXNOdW1iZXIgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMgdG8gcmVuZGVyCiAqCiAqIEBleGFtcGxlCiAqCiAqIHZhciBkb2NEZWZpbml0aW9uID0gewogKiAJaW5mbzogewogKgkJdGl0bGU6ICdhd2Vzb21lIERvY3VtZW50JywKICoJCWF1dGhvcjogJ2pvaG4gZG9lJywKICoJCXN1YmplY3Q6ICdzdWJqZWN0IG9mIGRvY3VtZW50JywKICoJCWtleXdvcmRzOiAna2V5d29yZHMgZm9yIGRvY3VtZW50JywKICogCX0sCiAqCWNvbnRlbnQ6IFsKICoJCSdGaXJzdCBwYXJhZ3JhcGgnLAogKgkJJ1NlY29uZCBwYXJhZ3JhcGgsIHRoaXMgdGltZSBhIGxpdHRsZSBiaXQgbG9uZ2VyJywKICoJCXsgdGV4dDogJ1RoaXJkIHBhcmFncmFwaCwgc2xpZ2h0bHkgYmlnZ2VyIGZvbnQgc2l6ZScsIGZvbnRTaXplOiAyMCB9LAogKgkJeyB0ZXh0OiAnQW5vdGhlciBwYXJhZ3JhcGggdXNpbmcgYSBuYW1lZCBzdHlsZScsIHN0eWxlOiAnaGVhZGVyJyB9LAogKgkJeyB0ZXh0OiBbJ3BsYXlpbmcgd2l0aCAnLCAnaW5saW5lcycgXSB9LAogKgkJeyB0ZXh0OiBbJ2FuZCAnLCB7IHRleHQ6ICdyZXN0eWxpbmcgJywgYm9sZDogdHJ1ZSB9LCAndGhlbSddIH0sCiAqCV0sCiAqCXN0eWxlczogewogKgkJaGVhZGVyOiB7IGZvbnRTaXplOiAzMCwgYm9sZDogdHJ1ZSB9CiAqCX0KICogfQogKgogKiB2YXIgcGRmS2l0RG9jID0gcHJpbnRlci5jcmVhdGVQZGZLaXREb2N1bWVudChkb2NEZWZpbml0aW9uKTsKICoKICogcGRmS2l0RG9jLnBpcGUoZnMuY3JlYXRlV3JpdGVTdHJlYW0oJ3NhbXBsZS5wZGYnKSk7CiAqIHBkZktpdERvYy5lbmQoKTsKICoKICogQHJldHVybiB7T2JqZWN0fSBhIHBkZktpdCBkb2N1bWVudCBvYmplY3Qgd2hpY2ggY2FuIGJlIHNhdmVkIG9yIGVuY29kZSB0byBkYXRhLXVybAogKi8KUGRmUHJpbnRlci5wcm90b3R5cGUuY3JlYXRlUGRmS2l0RG9jdW1lbnQgPSBmdW5jdGlvbiAoZG9jRGVmaW5pdGlvbiwgb3B0aW9ucykgewoJb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CgoJdmFyIHBhZ2VTaXplID0gZml4UGFnZVNpemUoZG9jRGVmaW5pdGlvbi5wYWdlU2l6ZSwgZG9jRGVmaW5pdGlvbi5wYWdlT3JpZW50YXRpb24pOwoJdmFyIGNvbXByZXNzUGRmID0gaXNCb29sZWFuKGRvY0RlZmluaXRpb24uY29tcHJlc3MpID8gZG9jRGVmaW5pdGlvbi5jb21wcmVzcyA6IHRydWU7CgoJdGhpcy5wZGZLaXREb2MgPSBuZXcgUGRmS2l0KHtzaXplOiBbcGFnZVNpemUud2lkdGgsIHBhZ2VTaXplLmhlaWdodF0sIGF1dG9GaXJzdFBhZ2U6IGZhbHNlLCBjb21wcmVzczogY29tcHJlc3NQZGZ9KTsKCXNldE1ldGFkYXRhKGRvY0RlZmluaXRpb24sIHRoaXMucGRmS2l0RG9jKTsKCgl0aGlzLmZvbnRQcm92aWRlciA9IG5ldyBGb250UHJvdmlkZXIodGhpcy5mb250RGVzY3JpcHRvcnMsIHRoaXMucGRmS2l0RG9jKTsKCglkb2NEZWZpbml0aW9uLmltYWdlcyA9IGRvY0RlZmluaXRpb24uaW1hZ2VzIHx8IHt9OwoKCXZhciBidWlsZGVyID0gbmV3IExheW91dEJ1aWxkZXIocGFnZVNpemUsIGZpeFBhZ2VNYXJnaW5zKGRvY0RlZmluaXRpb24ucGFnZU1hcmdpbnMgfHwgNDApLCBuZXcgSW1hZ2VNZWFzdXJlKHRoaXMucGRmS2l0RG9jLCBkb2NEZWZpbml0aW9uLmltYWdlcykpOwoKCXJlZ2lzdGVyRGVmYXVsdFRhYmxlTGF5b3V0cyhidWlsZGVyKTsKCWlmIChvcHRpb25zLnRhYmxlTGF5b3V0cykgewoJCWJ1aWxkZXIucmVnaXN0ZXJUYWJsZUxheW91dHMob3B0aW9ucy50YWJsZUxheW91dHMpOwoJfQoKCXZhciBwYWdlcyA9IGJ1aWxkZXIubGF5b3V0RG9jdW1lbnQoZG9jRGVmaW5pdGlvbi5jb250ZW50LCB0aGlzLmZvbnRQcm92aWRlciwgZG9jRGVmaW5pdGlvbi5zdHlsZXMgfHwge30sIGRvY0RlZmluaXRpb24uZGVmYXVsdFN0eWxlIHx8IHtmb250U2l6ZTogMTIsIGZvbnQ6ICdSb2JvdG8nfSwgZG9jRGVmaW5pdGlvbi5iYWNrZ3JvdW5kLCBkb2NEZWZpbml0aW9uLmhlYWRlciwgZG9jRGVmaW5pdGlvbi5mb290ZXIsIGRvY0RlZmluaXRpb24uaW1hZ2VzLCBkb2NEZWZpbml0aW9uLndhdGVybWFyaywgZG9jRGVmaW5pdGlvbi5wYWdlQnJlYWtCZWZvcmUpOwoJdmFyIG1heE51bWJlclBhZ2VzID0gZG9jRGVmaW5pdGlvbi5tYXhQYWdlc051bWJlciB8fCAtMTsKCWlmIChpc051bWJlcihtYXhOdW1iZXJQYWdlcykgJiYgbWF4TnVtYmVyUGFnZXMgPiAtMSkgewoJCXBhZ2VzID0gcGFnZXMuc2xpY2UoMCwgbWF4TnVtYmVyUGFnZXMpOwoJfQoKCS8vIGlmIHBhZ2VTaXplLmhlaWdodCBpcyBzZXQgdG8gSW5maW5pdHksIGNhbGN1bGF0ZSB0aGUgYWN0dWFsIGhlaWdodCBvZiB0aGUgcGFnZSB0aGF0CgkvLyB3YXMgbGFpZCBvdXQgdXNpbmcgdGhlIGhlaWdodCBvZiBlYWNoIG9mIHRoZSBpdGVtcyBpbiB0aGUgcGFnZS4KCWlmIChwYWdlU2l6ZS5oZWlnaHQgPT09IEluZmluaXR5KSB7CgkJdmFyIHBhZ2VIZWlnaHQgPSBjYWxjdWxhdGVQYWdlSGVpZ2h0KHBhZ2VzLCBkb2NEZWZpbml0aW9uLnBhZ2VNYXJnaW5zKTsKCQl0aGlzLnBkZktpdERvYy5vcHRpb25zLnNpemUgPSBbcGFnZVNpemUud2lkdGgsIHBhZ2VIZWlnaHRdOwoJfQoKCXJlbmRlclBhZ2VzKHBhZ2VzLCB0aGlzLmZvbnRQcm92aWRlciwgdGhpcy5wZGZLaXREb2MsIG9wdGlvbnMucHJvZ3Jlc3NDYWxsYmFjayk7CgoJaWYgKG9wdGlvbnMuYXV0b1ByaW50KSB7CgkJdmFyIHByaW50QWN0aW9uUmVmID0gdGhpcy5wZGZLaXREb2MucmVmKHsKCQkJVHlwZTogJ0FjdGlvbicsCgkJCVM6ICdOYW1lZCcsCgkJCU46ICdQcmludCcKCQl9KTsKCQl0aGlzLnBkZktpdERvYy5fcm9vdC5kYXRhLk9wZW5BY3Rpb24gPSBwcmludEFjdGlvblJlZjsKCQlwcmludEFjdGlvblJlZi5lbmQoKTsKCX0KCXJldHVybiB0aGlzLnBkZktpdERvYzsKfTsKCmZ1bmN0aW9uIHNldE1ldGFkYXRhKGRvY0RlZmluaXRpb24sIHBkZktpdERvYykgewoJLy8gUERGIHN0YW5kYXJkIGhhcyB0aGVzZSBwcm9wZXJ0aWVzIHJlc2VydmVkOiBUaXRsZSwgQXV0aG9yLCBTdWJqZWN0LCBLZXl3b3JkcywKCS8vIENyZWF0b3IsIFByb2R1Y2VyLCBDcmVhdGlvbkRhdGUsIE1vZERhdGUsIFRyYXBwZWQuCgkvLyBUbyBrZWVwIHRoZSBwZGZtYWtlIGFwaSBjb25zaXN0ZW50LCB0aGUgaW5mbyBmaWVsZCBhcmUgZGVmaW5lZCBsb3dlcmNhc2UuCgkvLyBDdXN0b20gcHJvcGVydGllcyBkb24ndCBjb250YWluIGEgc3BhY2UuCglmdW5jdGlvbiBzdGFuZGFyZGl6ZVByb3BlcnR5S2V5KGtleSkgewoJCXZhciBzdGFuZGFyZFByb3BlcnRpZXMgPSBbJ1RpdGxlJywgJ0F1dGhvcicsICdTdWJqZWN0JywgJ0tleXdvcmRzJywKCQkJJ0NyZWF0b3InLCAnUHJvZHVjZXInLCAnQ3JlYXRpb25EYXRlJywgJ01vZERhdGUnLCAnVHJhcHBlZCddOwoJCXZhciBzdGFuZGFyZGl6ZWRLZXkgPSBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSk7CgkJaWYgKHN0YW5kYXJkUHJvcGVydGllcy5pbmRleE9mKHN0YW5kYXJkaXplZEtleSkgIT09IC0xKSB7CgkJCXJldHVybiBzdGFuZGFyZGl6ZWRLZXk7CgkJfQoKCQlyZXR1cm4ga2V5LnJlcGxhY2UoL1xzKy9nLCAnJyk7Cgl9CgoJcGRmS2l0RG9jLmluZm8uUHJvZHVjZXIgPSAncGRmbWFrZSc7CglwZGZLaXREb2MuaW5mby5DcmVhdG9yID0gJ3BkZm1ha2UnOwoKCWlmIChkb2NEZWZpbml0aW9uLmluZm8pIHsKCQlmb3IgKHZhciBrZXkgaW4gZG9jRGVmaW5pdGlvbi5pbmZvKSB7CgkJCXZhciB2YWx1ZSA9IGRvY0RlZmluaXRpb24uaW5mb1trZXldOwoJCQlpZiAodmFsdWUpIHsKCQkJCWtleSA9IHN0YW5kYXJkaXplUHJvcGVydHlLZXkoa2V5KTsKCQkJCXBkZktpdERvYy5pbmZvW2tleV0gPSB2YWx1ZTsKCQkJfQoJCX0KCX0KfQoKZnVuY3Rpb24gY2FsY3VsYXRlUGFnZUhlaWdodChwYWdlcywgbWFyZ2lucykgewoJZnVuY3Rpb24gZ2V0SXRlbUhlaWdodChpdGVtKSB7CgkJaWYgKGlzRnVuY3Rpb24oaXRlbS5pdGVtLmdldEhlaWdodCkpIHsKCQkJcmV0dXJuIGl0ZW0uaXRlbS5nZXRIZWlnaHQoKTsKCQl9IGVsc2UgaWYgKGl0ZW0uaXRlbS5faGVpZ2h0KSB7CgkJCXJldHVybiBpdGVtLml0ZW0uX2hlaWdodDsKCQl9IGVsc2UgewoJCQkvLyBUT0RPOiBhZGQgc3VwcG9ydCBmb3IgbmV4dCBpdGVtIHR5cGVzCgkJCXJldHVybiAwOwoJCX0KCX0KCgl2YXIgZml4ZWRNYXJnaW5zID0gZml4UGFnZU1hcmdpbnMobWFyZ2lucyB8fCA0MCk7Cgl2YXIgaGVpZ2h0ID0gZml4ZWRNYXJnaW5zLnRvcCArIGZpeGVkTWFyZ2lucy5ib3R0b207CglwYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChwYWdlKSB7CgkJcGFnZS5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CgkJCWhlaWdodCArPSBnZXRJdGVtSGVpZ2h0KGl0ZW0pOwoJCX0pOwoJfSk7CglyZXR1cm4gaGVpZ2h0Owp9CgpmdW5jdGlvbiBmaXhQYWdlU2l6ZShwYWdlU2l6ZSwgcGFnZU9yaWVudGF0aW9uKSB7CglmdW5jdGlvbiBpc05lZWRTd2FwUGFnZVNpemVzKHBhZ2VPcmllbnRhdGlvbikgewoJCWlmIChpc1N0cmluZyhwYWdlT3JpZW50YXRpb24pKSB7CgkJCXBhZ2VPcmllbnRhdGlvbiA9IHBhZ2VPcmllbnRhdGlvbi50b0xvd2VyQ2FzZSgpOwoJCQlyZXR1cm4gKChwYWdlT3JpZW50YXRpb24gPT09ICdwb3J0cmFpdCcpICYmIChzaXplLndpZHRoID4gc2l6ZS5oZWlnaHQpKSB8fAoJCQkJKChwYWdlT3JpZW50YXRpb24gPT09ICdsYW5kc2NhcGUnKSAmJiAoc2l6ZS53aWR0aCA8IHNpemUuaGVpZ2h0KSk7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCgkvLyBpZiBwYWdlU2l6ZS5oZWlnaHQgaXMgc2V0IHRvIGF1dG8sIHNldCB0aGUgaGVpZ2h0IHRvIGluZmluaXR5IHNvIHRoZXJlIGFyZSBubyBwYWdlIGJyZWFrcy4KCWlmIChwYWdlU2l6ZSAmJiBwYWdlU2l6ZS5oZWlnaHQgPT09ICdhdXRvJykgewoJCXBhZ2VTaXplLmhlaWdodCA9IEluZmluaXR5OwoJfQoKCXZhciBzaXplID0gcGFnZVNpemUyd2lkdGhBbmRIZWlnaHQocGFnZVNpemUgfHwgJ0E0Jyk7CglpZiAoaXNOZWVkU3dhcFBhZ2VTaXplcyhwYWdlT3JpZW50YXRpb24pKSB7IC8vIHN3YXAgcGFnZSBzaXplcwoJCXNpemUgPSB7d2lkdGg6IHNpemUuaGVpZ2h0LCBoZWlnaHQ6IHNpemUud2lkdGh9OwoJfQoJc2l6ZS5vcmllbnRhdGlvbiA9IHNpemUud2lkdGggPiBzaXplLmhlaWdodCA/ICdsYW5kc2NhcGUnIDogJ3BvcnRyYWl0JzsKCXJldHVybiBzaXplOwp9CgpmdW5jdGlvbiBmaXhQYWdlTWFyZ2lucyhtYXJnaW4pIHsKCWlmICghbWFyZ2luKSB7CgkJcmV0dXJuIG51bGw7Cgl9CgoJaWYgKGlzTnVtYmVyKG1hcmdpbikpIHsKCQltYXJnaW4gPSB7bGVmdDogbWFyZ2luLCByaWdodDogbWFyZ2luLCB0b3A6IG1hcmdpbiwgYm90dG9tOiBtYXJnaW59OwoJfSBlbHNlIGlmIChpc0FycmF5KG1hcmdpbikpIHsKCQlpZiAobWFyZ2luLmxlbmd0aCA9PT0gMikgewoJCQltYXJnaW4gPSB7bGVmdDogbWFyZ2luWzBdLCB0b3A6IG1hcmdpblsxXSwgcmlnaHQ6IG1hcmdpblswXSwgYm90dG9tOiBtYXJnaW5bMV19OwoJCX0gZWxzZSBpZiAobWFyZ2luLmxlbmd0aCA9PT0gNCkgewoJCQltYXJnaW4gPSB7bGVmdDogbWFyZ2luWzBdLCB0b3A6IG1hcmdpblsxXSwgcmlnaHQ6IG1hcmdpblsyXSwgYm90dG9tOiBtYXJnaW5bM119OwoJCX0gZWxzZSB7CgkJCXRocm93ICdJbnZhbGlkIHBhZ2VNYXJnaW5zIGRlZmluaXRpb24nOwoJCX0KCX0KCglyZXR1cm4gbWFyZ2luOwp9CgpmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRUYWJsZUxheW91dHMobGF5b3V0QnVpbGRlcikgewoJbGF5b3V0QnVpbGRlci5yZWdpc3RlclRhYmxlTGF5b3V0cyh7CgkJbm9Cb3JkZXJzOiB7CgkJCWhMaW5lV2lkdGg6IGZ1bmN0aW9uIChpKSB7CgkJCQlyZXR1cm4gMDsKCQkJfSwKCQkJdkxpbmVXaWR0aDogZnVuY3Rpb24gKGkpIHsKCQkJCXJldHVybiAwOwoJCQl9LAoJCQlwYWRkaW5nTGVmdDogZnVuY3Rpb24gKGkpIHsKCQkJCXJldHVybiBpICYmIDQgfHwgMDsKCQkJfSwKCQkJcGFkZGluZ1JpZ2h0OiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuIChpIDwgbm9kZS50YWJsZS53aWR0aHMubGVuZ3RoIC0gMSkgPyA0IDogMDsKCQkJfQoJCX0sCgkJaGVhZGVyTGluZU9ubHk6IHsKCQkJaExpbmVXaWR0aDogZnVuY3Rpb24gKGksIG5vZGUpIHsKCQkJCWlmIChpID09PSAwIHx8IGkgPT09IG5vZGUudGFibGUuYm9keS5sZW5ndGgpIHsKCQkJCQlyZXR1cm4gMDsKCQkJCX0KCQkJCXJldHVybiAoaSA9PT0gbm9kZS50YWJsZS5oZWFkZXJSb3dzKSA/IDIgOiAwOwoJCQl9LAoJCQl2TGluZVdpZHRoOiBmdW5jdGlvbiAoaSkgewoJCQkJcmV0dXJuIDA7CgkJCX0sCgkJCXBhZGRpbmdMZWZ0OiBmdW5jdGlvbiAoaSkgewoJCQkJcmV0dXJuIGkgPT09IDAgPyAwIDogODsKCQkJfSwKCQkJcGFkZGluZ1JpZ2h0OiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuIChpID09PSBub2RlLnRhYmxlLndpZHRocy5sZW5ndGggLSAxKSA/IDAgOiA4OwoJCQl9CgkJfSwKCQlsaWdodEhvcml6b250YWxMaW5lczogewoJCQloTGluZVdpZHRoOiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJaWYgKGkgPT09IDAgfHwgaSA9PT0gbm9kZS50YWJsZS5ib2R5Lmxlbmd0aCkgewoJCQkJCXJldHVybiAwOwoJCQkJfQoJCQkJcmV0dXJuIChpID09PSBub2RlLnRhYmxlLmhlYWRlclJvd3MpID8gMiA6IDE7CgkJCX0sCgkJCXZMaW5lV2lkdGg6IGZ1bmN0aW9uIChpKSB7CgkJCQlyZXR1cm4gMDsKCQkJfSwKCQkJaExpbmVDb2xvcjogZnVuY3Rpb24gKGkpIHsKCQkJCXJldHVybiBpID09PSAxID8gJ2JsYWNrJyA6ICcjYWFhJzsKCQkJfSwKCQkJcGFkZGluZ0xlZnQ6IGZ1bmN0aW9uIChpKSB7CgkJCQlyZXR1cm4gaSA9PT0gMCA/IDAgOiA4OwoJCQl9LAoJCQlwYWRkaW5nUmlnaHQ6IGZ1bmN0aW9uIChpLCBub2RlKSB7CgkJCQlyZXR1cm4gKGkgPT09IG5vZGUudGFibGUud2lkdGhzLmxlbmd0aCAtIDEpID8gMCA6IDg7CgkJCX0KCQl9Cgl9KTsKfQoKZnVuY3Rpb24gcGFnZVNpemUyd2lkdGhBbmRIZWlnaHQocGFnZVNpemUpIHsKCWlmIChpc1N0cmluZyhwYWdlU2l6ZSkpIHsKCQl2YXIgc2l6ZSA9IHNpemVzW3BhZ2VTaXplLnRvVXBwZXJDYXNlKCldOwoJCWlmICghc2l6ZSkgewoJCQl0aHJvdyAnUGFnZSBzaXplICcgKyBwYWdlU2l6ZSArICcgbm90IHJlY29nbml6ZWQnOwoJCX0KCQlyZXR1cm4ge3dpZHRoOiBzaXplWzBdLCBoZWlnaHQ6IHNpemVbMV19OwoJfQoKCXJldHVybiBwYWdlU2l6ZTsKfQoKZnVuY3Rpb24gdXBkYXRlUGFnZU9yaWVudGF0aW9uSW5PcHRpb25zKGN1cnJlbnRQYWdlLCBwZGZLaXREb2MpIHsKCXZhciBwcmV2aW91c1BhZ2VPcmllbnRhdGlvbiA9IHBkZktpdERvYy5vcHRpb25zLnNpemVbMF0gPiBwZGZLaXREb2Mub3B0aW9ucy5zaXplWzFdID8gJ2xhbmRzY2FwZScgOiAncG9ydHJhaXQnOwoKCWlmIChjdXJyZW50UGFnZS5wYWdlU2l6ZS5vcmllbnRhdGlvbiAhPT0gcHJldmlvdXNQYWdlT3JpZW50YXRpb24pIHsKCQl2YXIgd2lkdGggPSBwZGZLaXREb2Mub3B0aW9ucy5zaXplWzBdOwoJCXZhciBoZWlnaHQgPSBwZGZLaXREb2Mub3B0aW9ucy5zaXplWzFdOwoJCXBkZktpdERvYy5vcHRpb25zLnNpemUgPSBbaGVpZ2h0LCB3aWR0aF07Cgl9Cn0KCmZ1bmN0aW9uIHJlbmRlclBhZ2VzKHBhZ2VzLCBmb250UHJvdmlkZXIsIHBkZktpdERvYywgcHJvZ3Jlc3NDYWxsYmFjaykgewoJcGRmS2l0RG9jLl9wZGZNYWtlUGFnZXMgPSBwYWdlczsKCXBkZktpdERvYy5hZGRQYWdlKCk7CgoJdmFyIHRvdGFsSXRlbXMgPSAwOwoJaWYgKHByb2dyZXNzQ2FsbGJhY2spIHsKCQlwYWdlcy5mb3JFYWNoKGZ1bmN0aW9uIChwYWdlKSB7CgkJCXRvdGFsSXRlbXMgKz0gcGFnZS5pdGVtcy5sZW5ndGg7CgkJfSk7Cgl9CgoJdmFyIHJlbmRlcmVkSXRlbXMgPSAwOwoJcHJvZ3Jlc3NDYWxsYmFjayA9IHByb2dyZXNzQ2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge307CgoJZm9yICh2YXIgaSA9IDA7IGkgPCBwYWdlcy5sZW5ndGg7IGkrKykgewoJCWlmIChpID4gMCkgewoJCQl1cGRhdGVQYWdlT3JpZW50YXRpb25Jbk9wdGlvbnMocGFnZXNbaV0sIHBkZktpdERvYyk7CgkJCXBkZktpdERvYy5hZGRQYWdlKHBkZktpdERvYy5vcHRpb25zKTsKCQl9CgoJCXZhciBwYWdlID0gcGFnZXNbaV07CgkJZm9yICh2YXIgaWkgPSAwLCBpbCA9IHBhZ2UuaXRlbXMubGVuZ3RoOyBpaSA8IGlsOyBpaSsrKSB7CgkJCXZhciBpdGVtID0gcGFnZS5pdGVtc1tpaV07CgkJCXN3aXRjaCAoaXRlbS50eXBlKSB7CgkJCQljYXNlICd2ZWN0b3InOgoJCQkJCXJlbmRlclZlY3RvcihpdGVtLml0ZW0sIHBkZktpdERvYyk7CgkJCQkJYnJlYWs7CgkJCQljYXNlICdsaW5lJzoKCQkJCQlyZW5kZXJMaW5lKGl0ZW0uaXRlbSwgaXRlbS5pdGVtLngsIGl0ZW0uaXRlbS55LCBwZGZLaXREb2MpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAnaW1hZ2UnOgoJCQkJCXJlbmRlckltYWdlKGl0ZW0uaXRlbSwgaXRlbS5pdGVtLngsIGl0ZW0uaXRlbS55LCBwZGZLaXREb2MpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAnYmVnaW5DbGlwJzoKCQkJCQliZWdpbkNsaXAoaXRlbS5pdGVtLCBwZGZLaXREb2MpOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSAnZW5kQ2xpcCc6CgkJCQkJZW5kQ2xpcChwZGZLaXREb2MpOwoJCQkJCWJyZWFrOwoJCQl9CgkJCXJlbmRlcmVkSXRlbXMrKzsKCQkJcHJvZ3Jlc3NDYWxsYmFjayhyZW5kZXJlZEl0ZW1zIC8gdG90YWxJdGVtcyk7CgkJfQoJCWlmIChwYWdlLndhdGVybWFyaykgewoJCQlyZW5kZXJXYXRlcm1hcmsocGFnZSwgcGRmS2l0RG9jKTsKCQl9Cgl9Cn0KCmZ1bmN0aW9uIHJlbmRlckxpbmUobGluZSwgeCwgeSwgcGRmS2l0RG9jKSB7CglpZiAobGluZS5fcGFnZU5vZGVSZWYpIHsKCQl2YXIgbmV3V2lkdGg7CgkJdmFyIGRpZmZXaWR0aDsKCQl2YXIgdGV4dFRvb2xzID0gbmV3IFRleHRUb29scyhudWxsKTsKCQl2YXIgcGFnZU51bWJlciA9IGxpbmUuX3BhZ2VOb2RlUmVmLnBvc2l0aW9uc1swXS5wYWdlTnVtYmVyLnRvU3RyaW5nKCk7CgoJCWxpbmUuaW5saW5lc1swXS50ZXh0ID0gcGFnZU51bWJlcjsKCQlsaW5lLmlubGluZXNbMF0ubGlua1RvUGFnZSA9IHBhZ2VOdW1iZXI7CgkJbmV3V2lkdGggPSB0ZXh0VG9vbHMud2lkdGhPZlN0cmluZyhsaW5lLmlubGluZXNbMF0udGV4dCwgbGluZS5pbmxpbmVzWzBdLmZvbnQsIGxpbmUuaW5saW5lc1swXS5mb250U2l6ZSwgbGluZS5pbmxpbmVzWzBdLmNoYXJhY3RlclNwYWNpbmcsIGxpbmUuaW5saW5lc1swXS5mb250RmVhdHVyZXMpOwoJCWRpZmZXaWR0aCA9IGxpbmUuaW5saW5lc1swXS53aWR0aCAtIG5ld1dpZHRoOwoJCWxpbmUuaW5saW5lc1swXS53aWR0aCA9IG5ld1dpZHRoOwoKCQlzd2l0Y2ggKGxpbmUuaW5saW5lc1swXS5hbGlnbm1lbnQpIHsKCQkJY2FzZSAncmlnaHQnOgoJCQkJbGluZS5pbmxpbmVzWzBdLnggKz0gZGlmZldpZHRoOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2NlbnRlcic6CgkJCQlsaW5lLmlubGluZXNbMF0ueCArPSBkaWZmV2lkdGggLyAyOwoJCQkJYnJlYWs7CgkJfQoJfQoKCXggPSB4IHx8IDA7Cgl5ID0geSB8fCAwOwoKCXZhciBsaW5lSGVpZ2h0ID0gbGluZS5nZXRIZWlnaHQoKTsKCXZhciBhc2NlbmRlckhlaWdodCA9IGxpbmUuZ2V0QXNjZW5kZXJIZWlnaHQoKTsKCXZhciBkZXNjZW50ID0gbGluZUhlaWdodCAtIGFzY2VuZGVySGVpZ2h0OwoKCXRleHREZWNvcmF0b3IuZHJhd0JhY2tncm91bmQobGluZSwgeCwgeSwgcGRmS2l0RG9jKTsKCgkvL1RPRE86IGxpbmUub3B0aW1pemVJbmxpbmVzKCk7Cglmb3IgKHZhciBpID0gMCwgbCA9IGxpbmUuaW5saW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQl2YXIgaW5saW5lID0gbGluZS5pbmxpbmVzW2ldOwoJCXZhciBzaGlmdFRvQmFzZWxpbmUgPSBsaW5lSGVpZ2h0IC0gKChpbmxpbmUuZm9udC5hc2NlbmRlciAvIDEwMDApICogaW5saW5lLmZvbnRTaXplKSAtIGRlc2NlbnQ7CgkJdmFyIG9wdGlvbnMgPSB7CgkJCWxpbmVCcmVhazogZmFsc2UsCgkJCXRleHRXaWR0aDogaW5saW5lLndpZHRoLAoJCQljaGFyYWN0ZXJTcGFjaW5nOiBpbmxpbmUuY2hhcmFjdGVyU3BhY2luZywKCQkJd29yZENvdW50OiAxLAoJCQlsaW5rOiBpbmxpbmUubGluawoJCX07CgoJCWlmIChpbmxpbmUuZm9udEZlYXR1cmVzKSB7CgkJCW9wdGlvbnMuZmVhdHVyZXMgPSBpbmxpbmUuZm9udEZlYXR1cmVzOwoJCX0KCgkJcGRmS2l0RG9jLmZpbGwoaW5saW5lLmNvbG9yIHx8ICdibGFjaycpOwoKCQlwZGZLaXREb2MuX2ZvbnQgPSBpbmxpbmUuZm9udDsKCQlwZGZLaXREb2MuZm9udFNpemUoaW5saW5lLmZvbnRTaXplKTsKCQlwZGZLaXREb2MudGV4dChpbmxpbmUudGV4dCwgeCArIGlubGluZS54LCB5ICsgc2hpZnRUb0Jhc2VsaW5lLCBvcHRpb25zKTsKCgkJaWYgKGlubGluZS5saW5rVG9QYWdlKSB7CgkJCXZhciBfcmVmID0gcGRmS2l0RG9jLnJlZih7VHlwZTogJ0FjdGlvbicsIFM6ICdHb1RvJywgRDogW2lubGluZS5saW5rVG9QYWdlLCAwLCAwXX0pLmVuZCgpOwoJCQlwZGZLaXREb2MuYW5ub3RhdGUoeCArIGlubGluZS54LCB5ICsgc2hpZnRUb0Jhc2VsaW5lLCBpbmxpbmUud2lkdGgsIGlubGluZS5oZWlnaHQsIHtTdWJ0eXBlOiAnTGluaycsIERlc3Q6IFtpbmxpbmUubGlua1RvUGFnZSAtIDEsICdYWVonLCBudWxsLCBudWxsLCBudWxsXX0pOwoJCX0KCgl9CgoJdGV4dERlY29yYXRvci5kcmF3RGVjb3JhdGlvbnMobGluZSwgeCwgeSwgcGRmS2l0RG9jKTsKfQoKZnVuY3Rpb24gcmVuZGVyV2F0ZXJtYXJrKHBhZ2UsIHBkZktpdERvYykgewoJdmFyIHdhdGVybWFyayA9IHBhZ2Uud2F0ZXJtYXJrOwoKCXBkZktpdERvYy5maWxsKHdhdGVybWFyay5jb2xvcik7CglwZGZLaXREb2Mub3BhY2l0eSh3YXRlcm1hcmsub3BhY2l0eSk7CgoJcGRmS2l0RG9jLnNhdmUoKTsKCgl2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKHBkZktpdERvYy5wYWdlLmhlaWdodCwgcGRmS2l0RG9jLnBhZ2Uud2lkdGgpICogLTE4MCAvIE1hdGguUEk7CglwZGZLaXREb2Mucm90YXRlKGFuZ2xlLCB7b3JpZ2luOiBbcGRmS2l0RG9jLnBhZ2Uud2lkdGggLyAyLCBwZGZLaXREb2MucGFnZS5oZWlnaHQgLyAyXX0pOwoKCXZhciB4ID0gcGRmS2l0RG9jLnBhZ2Uud2lkdGggLyAyIC0gd2F0ZXJtYXJrLnNpemUuc2l6ZS53aWR0aCAvIDI7Cgl2YXIgeSA9IHBkZktpdERvYy5wYWdlLmhlaWdodCAvIDIgLSB3YXRlcm1hcmsuc2l6ZS5zaXplLmhlaWdodCAvIDQ7CgoJcGRmS2l0RG9jLl9mb250ID0gd2F0ZXJtYXJrLmZvbnQ7CglwZGZLaXREb2MuZm9udFNpemUod2F0ZXJtYXJrLnNpemUuZm9udFNpemUpOwoJcGRmS2l0RG9jLnRleHQod2F0ZXJtYXJrLnRleHQsIHgsIHksIHtsaW5lQnJlYWs6IGZhbHNlfSk7CgoJcGRmS2l0RG9jLnJlc3RvcmUoKTsKfQoKZnVuY3Rpb24gcmVuZGVyVmVjdG9yKHZlY3RvciwgcGRmS2l0RG9jKSB7CgkvL1RPRE86IHBkZiBvcHRpbWl6YXRpb24gKHRoZXJlJ3Mgbm8gbmVlZCB0byB3cml0ZSBhbGwgcHJvcGVydGllcyBldmVyeXRpbWUpCglwZGZLaXREb2MubGluZVdpZHRoKHZlY3Rvci5saW5lV2lkdGggfHwgMSk7CglpZiAodmVjdG9yLmRhc2gpIHsKCQlwZGZLaXREb2MuZGFzaCh2ZWN0b3IuZGFzaC5sZW5ndGgsIHtzcGFjZTogdmVjdG9yLmRhc2guc3BhY2UgfHwgdmVjdG9yLmRhc2gubGVuZ3RoLCBwaGFzZTogdmVjdG9yLmRhc2gucGhhc2UgfHwgMH0pOwoJfSBlbHNlIHsKCQlwZGZLaXREb2MudW5kYXNoKCk7Cgl9CglwZGZLaXREb2MubGluZUpvaW4odmVjdG9yLmxpbmVKb2luIHx8ICdtaXRlcicpOwoJcGRmS2l0RG9jLmxpbmVDYXAodmVjdG9yLmxpbmVDYXAgfHwgJ2J1dHQnKTsKCgkvL1RPRE86IGNsaXBwaW5nCgoJc3dpdGNoICh2ZWN0b3IudHlwZSkgewoJCWNhc2UgJ2VsbGlwc2UnOgoJCQlwZGZLaXREb2MuZWxsaXBzZSh2ZWN0b3IueCwgdmVjdG9yLnksIHZlY3Rvci5yMSwgdmVjdG9yLnIyKTsKCQkJYnJlYWs7CgkJY2FzZSAncmVjdCc6CgkJCWlmICh2ZWN0b3IucikgewoJCQkJcGRmS2l0RG9jLnJvdW5kZWRSZWN0KHZlY3Rvci54LCB2ZWN0b3IueSwgdmVjdG9yLncsIHZlY3Rvci5oLCB2ZWN0b3Iucik7CgkJCX0gZWxzZSB7CgkJCQlwZGZLaXREb2MucmVjdCh2ZWN0b3IueCwgdmVjdG9yLnksIHZlY3Rvci53LCB2ZWN0b3IuaCk7CgkJCX0KCgkJCWlmICh2ZWN0b3IubGluZWFyR3JhZGllbnQpIHsKCQkJCXZhciBncmFkaWVudCA9IHBkZktpdERvYy5saW5lYXJHcmFkaWVudCh2ZWN0b3IueCwgdmVjdG9yLnksIHZlY3Rvci54ICsgdmVjdG9yLncsIHZlY3Rvci55KTsKCQkJCXZhciBzdGVwID0gMSAvICh2ZWN0b3IubGluZWFyR3JhZGllbnQubGVuZ3RoIC0gMSk7CgoJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCB2ZWN0b3IubGluZWFyR3JhZGllbnQubGVuZ3RoOyBpKyspIHsKCQkJCQlncmFkaWVudC5zdG9wKGkgKiBzdGVwLCB2ZWN0b3IubGluZWFyR3JhZGllbnRbaV0pOwoJCQkJfQoKCQkJCXZlY3Rvci5jb2xvciA9IGdyYWRpZW50OwoJCQl9CgkJCWJyZWFrOwoJCWNhc2UgJ2xpbmUnOgoJCQlwZGZLaXREb2MubW92ZVRvKHZlY3Rvci54MSwgdmVjdG9yLnkxKTsKCQkJcGRmS2l0RG9jLmxpbmVUbyh2ZWN0b3IueDIsIHZlY3Rvci55Mik7CgkJCWJyZWFrOwoJCWNhc2UgJ3BvbHlsaW5lJzoKCQkJaWYgKHZlY3Rvci5wb2ludHMubGVuZ3RoID09PSAwKSB7CgkJCQlicmVhazsKCQkJfQoKCQkJcGRmS2l0RG9jLm1vdmVUbyh2ZWN0b3IucG9pbnRzWzBdLngsIHZlY3Rvci5wb2ludHNbMF0ueSk7CgkJCWZvciAodmFyIGkgPSAxLCBsID0gdmVjdG9yLnBvaW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQkJCXBkZktpdERvYy5saW5lVG8odmVjdG9yLnBvaW50c1tpXS54LCB2ZWN0b3IucG9pbnRzW2ldLnkpOwoJCQl9CgoJCQlpZiAodmVjdG9yLnBvaW50cy5sZW5ndGggPiAxKSB7CgkJCQl2YXIgcDEgPSB2ZWN0b3IucG9pbnRzWzBdOwoJCQkJdmFyIHBuID0gdmVjdG9yLnBvaW50c1t2ZWN0b3IucG9pbnRzLmxlbmd0aCAtIDFdOwoKCQkJCWlmICh2ZWN0b3IuY2xvc2VQYXRoIHx8IHAxLnggPT09IHBuLnggJiYgcDEueSA9PT0gcG4ueSkgewoJCQkJCXBkZktpdERvYy5jbG9zZVBhdGgoKTsKCQkJCX0KCQkJfQoJCQlicmVhazsKCQljYXNlICdwYXRoJzoKCQkJcGRmS2l0RG9jLnBhdGgodmVjdG9yLmQpOwoJCQlicmVhazsKCX0KCglpZiAodmVjdG9yLmNvbG9yICYmIHZlY3Rvci5saW5lQ29sb3IpIHsKCQlwZGZLaXREb2MuZmlsbENvbG9yKHZlY3Rvci5jb2xvciwgdmVjdG9yLmZpbGxPcGFjaXR5IHx8IDEpOwoJCXBkZktpdERvYy5zdHJva2VDb2xvcih2ZWN0b3IubGluZUNvbG9yLCB2ZWN0b3Iuc3Ryb2tlT3BhY2l0eSB8fCAxKTsKCQlwZGZLaXREb2MuZmlsbEFuZFN0cm9rZSgpOwoJfSBlbHNlIGlmICh2ZWN0b3IuY29sb3IpIHsKCQlwZGZLaXREb2MuZmlsbENvbG9yKHZlY3Rvci5jb2xvciwgdmVjdG9yLmZpbGxPcGFjaXR5IHx8IDEpOwoJCXBkZktpdERvYy5maWxsKCk7Cgl9IGVsc2UgewoJCXBkZktpdERvYy5zdHJva2VDb2xvcih2ZWN0b3IubGluZUNvbG9yIHx8ICdibGFjaycsIHZlY3Rvci5zdHJva2VPcGFjaXR5IHx8IDEpOwoJCXBkZktpdERvYy5zdHJva2UoKTsKCX0KfQoKZnVuY3Rpb24gcmVuZGVySW1hZ2UoaW1hZ2UsIHgsIHksIHBkZktpdERvYykgewoJcGRmS2l0RG9jLmltYWdlKGltYWdlLmltYWdlLCBpbWFnZS54LCBpbWFnZS55LCB7d2lkdGg6IGltYWdlLl93aWR0aCwgaGVpZ2h0OiBpbWFnZS5faGVpZ2h0fSk7CglpZiAoaW1hZ2UubGluaykgewoJCXBkZktpdERvYy5saW5rKGltYWdlLngsIGltYWdlLnksIGltYWdlLl93aWR0aCwgaW1hZ2UuX2hlaWdodCwgaW1hZ2UubGluayk7Cgl9Cn0KCmZ1bmN0aW9uIGJlZ2luQ2xpcChyZWN0LCBwZGZLaXREb2MpIHsKCXBkZktpdERvYy5zYXZlKCk7CglwZGZLaXREb2MuYWRkQ29udGVudCgnJyArIHJlY3QueCArICcgJyArIHJlY3QueSArICcgJyArIHJlY3Qud2lkdGggKyAnICcgKyByZWN0LmhlaWdodCArICcgcmUnKTsKCXBkZktpdERvYy5jbGlwKCk7Cn0KCmZ1bmN0aW9uIGVuZENsaXAocGRmS2l0RG9jKSB7CglwZGZLaXREb2MucmVzdG9yZSgpOwp9Cgptb2R1bGUuZXhwb3J0cyA9IFBkZlByaW50ZXI7CgoKLyoqKi8gfSksCi8qIDEyNyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKdmFyIGlzQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzQXJyYXk7CgpmdW5jdGlvbiB0eXBlTmFtZShib2xkLCBpdGFsaWNzKSB7Cgl2YXIgdHlwZSA9ICdub3JtYWwnOwoJaWYgKGJvbGQgJiYgaXRhbGljcykgewoJCXR5cGUgPSAnYm9sZGl0YWxpY3MnOwoJfSBlbHNlIGlmIChib2xkKSB7CgkJdHlwZSA9ICdib2xkJzsKCX0gZWxzZSBpZiAoaXRhbGljcykgewoJCXR5cGUgPSAnaXRhbGljcyc7Cgl9CglyZXR1cm4gdHlwZTsKfQoKZnVuY3Rpb24gRm9udFByb3ZpZGVyKGZvbnREZXNjcmlwdG9ycywgcGRmS2l0RG9jKSB7Cgl0aGlzLmZvbnRzID0ge307Cgl0aGlzLnBkZktpdERvYyA9IHBkZktpdERvYzsKCXRoaXMuZm9udENhY2hlID0ge307CgoJZm9yICh2YXIgZm9udCBpbiBmb250RGVzY3JpcHRvcnMpIHsKCQlpZiAoZm9udERlc2NyaXB0b3JzLmhhc093blByb3BlcnR5KGZvbnQpKSB7CgkJCXZhciBmb250RGVmID0gZm9udERlc2NyaXB0b3JzW2ZvbnRdOwoKCQkJdGhpcy5mb250c1tmb250XSA9IHsKCQkJCW5vcm1hbDogZm9udERlZi5ub3JtYWwsCgkJCQlib2xkOiBmb250RGVmLmJvbGQsCgkJCQlpdGFsaWNzOiBmb250RGVmLml0YWxpY3MsCgkJCQlib2xkaXRhbGljczogZm9udERlZi5ib2xkaXRhbGljcwoJCQl9OwoJCX0KCX0KfQoKRm9udFByb3ZpZGVyLnByb3RvdHlwZS5wcm92aWRlRm9udCA9IGZ1bmN0aW9uIChmYW1pbHlOYW1lLCBib2xkLCBpdGFsaWNzKSB7Cgl2YXIgdHlwZSA9IHR5cGVOYW1lKGJvbGQsIGl0YWxpY3MpOwoJaWYgKCF0aGlzLmZvbnRzW2ZhbWlseU5hbWVdIHx8ICF0aGlzLmZvbnRzW2ZhbWlseU5hbWVdW3R5cGVdKSB7CgkJdGhyb3cgbmV3IEVycm9yKCdGb250IFwnJyArIGZhbWlseU5hbWUgKyAnXCcgaW4gc3R5bGUgXCcnICsgdHlwZSArICdcJyBpcyBub3QgZGVmaW5lZCBpbiB0aGUgZm9udCBzZWN0aW9uIG9mIHRoZSBkb2N1bWVudCBkZWZpbml0aW9uLicpOwoJfQoKCXRoaXMuZm9udENhY2hlW2ZhbWlseU5hbWVdID0gdGhpcy5mb250Q2FjaGVbZmFtaWx5TmFtZV0gfHwge307CgoJaWYgKCF0aGlzLmZvbnRDYWNoZVtmYW1pbHlOYW1lXVt0eXBlXSkgewoJCXZhciBkZWYgPSB0aGlzLmZvbnRzW2ZhbWlseU5hbWVdW3R5cGVdOwoJCWlmICghaXNBcnJheShkZWYpKSB7CgkJCWRlZiA9IFtkZWZdOwoJCX0KCQl0aGlzLmZvbnRDYWNoZVtmYW1pbHlOYW1lXVt0eXBlXSA9IHRoaXMucGRmS2l0RG9jLmZvbnQuYXBwbHkodGhpcy5wZGZLaXREb2MsIGRlZikuX2ZvbnQ7Cgl9CgoJcmV0dXJuIHRoaXMuZm9udENhY2hlW2ZhbWlseU5hbWVdW3R5cGVdOwp9OwoKbW9kdWxlLmV4cG9ydHMgPSBGb250UHJvdmlkZXI7CgoKLyoqKi8gfSksCi8qIDEyOCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKdmFyIFRyYXZlcnNhbFRyYWNrZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc3KTsKdmFyIERvY1ByZXByb2Nlc3NvciA9IF9fd2VicGFja19yZXF1aXJlX18oMTI5KTsKdmFyIERvY01lYXN1cmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzMCk7CnZhciBEb2N1bWVudENvbnRleHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgxKTsKdmFyIFBhZ2VFbGVtZW50V3JpdGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzUpOwp2YXIgQ29sdW1uQ2FsY3VsYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oNDQpOwp2YXIgVGFibGVQcm9jZXNzb3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNyk7CnZhciBMaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Mik7CnZhciBpc1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNTdHJpbmc7CnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc0FycmF5Owp2YXIgcGFjayA9IF9fd2VicGFja19yZXF1aXJlX18oMCkucGFjazsKdmFyIG9mZnNldFZlY3RvciA9IF9fd2VicGFja19yZXF1aXJlX18oMCkub2Zmc2V0VmVjdG9yOwp2YXIgZm9udFN0cmluZ2lmeSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuZm9udFN0cmluZ2lmeTsKdmFyIGlzRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzRnVuY3Rpb247CnZhciBUZXh0VG9vbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTsKdmFyIFN0eWxlQ29udGV4dFN0YWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MCk7CgpmdW5jdGlvbiBhZGRBbGwodGFyZ2V0LCBvdGhlckFycmF5KSB7CglvdGhlckFycmF5LmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKCQl0YXJnZXQucHVzaChpdGVtKTsKCX0pOwp9CgovKioKICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBMYXlvdXRCdWlsZGVyIC0gbGF5b3V0IGVuZ2luZSB3aGljaCB0dXJucyBkb2N1bWVudC1kZWZpbml0aW9uLW9iamVjdAogKiBpbnRvIGEgc2V0IG9mIHBhZ2VzLCBsaW5lcywgaW5saW5lcyBhbmQgdmVjdG9ycyByZWFkeSB0byBiZSByZW5kZXJlZCBpbnRvIGEgUERGCiAqCiAqIEBwYXJhbSB7T2JqZWN0fSBwYWdlU2l6ZSAtIGFuIG9iamVjdCBkZWZpbmluZyBwYWdlIHdpZHRoIGFuZCBoZWlnaHQKICogQHBhcmFtIHtPYmplY3R9IHBhZ2VNYXJnaW5zIC0gYW4gb2JqZWN0IGRlZmluaW5nIHRvcCwgbGVmdCwgcmlnaHQgYW5kIGJvdHRvbSBtYXJnaW5zCiAqLwpmdW5jdGlvbiBMYXlvdXRCdWlsZGVyKHBhZ2VTaXplLCBwYWdlTWFyZ2lucywgaW1hZ2VNZWFzdXJlKSB7Cgl0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7Cgl0aGlzLnBhZ2VNYXJnaW5zID0gcGFnZU1hcmdpbnM7Cgl0aGlzLnRyYWNrZXIgPSBuZXcgVHJhdmVyc2FsVHJhY2tlcigpOwoJdGhpcy5pbWFnZU1lYXN1cmUgPSBpbWFnZU1lYXN1cmU7Cgl0aGlzLnRhYmxlTGF5b3V0cyA9IHt9Owp9CgpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5yZWdpc3RlclRhYmxlTGF5b3V0cyA9IGZ1bmN0aW9uICh0YWJsZUxheW91dHMpIHsKCXRoaXMudGFibGVMYXlvdXRzID0gcGFjayh0aGlzLnRhYmxlTGF5b3V0cywgdGFibGVMYXlvdXRzKTsKfTsKCi8qKgogKiBFeGVjdXRlcyBsYXlvdXQgZW5naW5lIG9uIGRvY3VtZW50LWRlZmluaXRpb24tb2JqZWN0IGFuZCBjcmVhdGVzIGFuIGFycmF5IG9mIHBhZ2VzCiAqIGNvbnRhaW5pbmcgcG9zaXRpb25lZCBCbG9ja3MsIExpbmVzIGFuZCBpbmxpbmVzCiAqCiAqIEBwYXJhbSB7T2JqZWN0fSBkb2NTdHJ1Y3R1cmUgZG9jdW1lbnQtZGVmaW5pdGlvbi1vYmplY3QKICogQHBhcmFtIHtPYmplY3R9IGZvbnRQcm92aWRlciBmb250IHByb3ZpZGVyCiAqIEBwYXJhbSB7T2JqZWN0fSBzdHlsZURpY3Rpb25hcnkgZGljdGlvbmFyeSB3aXRoIHN0eWxlIGRlZmluaXRpb25zCiAqIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0U3R5bGUgZGVmYXVsdCBzdHlsZSBkZWZpbml0aW9uCiAqIEByZXR1cm4ge0FycmF5fSBhbiBhcnJheSBvZiBwYWdlcwogKi8KTGF5b3V0QnVpbGRlci5wcm90b3R5cGUubGF5b3V0RG9jdW1lbnQgPSBmdW5jdGlvbiAoZG9jU3RydWN0dXJlLCBmb250UHJvdmlkZXIsIHN0eWxlRGljdGlvbmFyeSwgZGVmYXVsdFN0eWxlLCBiYWNrZ3JvdW5kLCBoZWFkZXIsIGZvb3RlciwgaW1hZ2VzLCB3YXRlcm1hcmssIHBhZ2VCcmVha0JlZm9yZUZjdCkgewoKCWZ1bmN0aW9uIGFkZFBhZ2VCcmVha3NJZk5lY2Vzc2FyeShsaW5lYXJOb2RlTGlzdCwgcGFnZXMpIHsKCgkJaWYgKCFpc0Z1bmN0aW9uKHBhZ2VCcmVha0JlZm9yZUZjdCkpIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJbGluZWFyTm9kZUxpc3QgPSBsaW5lYXJOb2RlTGlzdC5maWx0ZXIoZnVuY3Rpb24gKG5vZGUpIHsKCQkJcmV0dXJuIG5vZGUucG9zaXRpb25zLmxlbmd0aCA+IDA7CgkJfSk7CgoJCWxpbmVhck5vZGVMaXN0LmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHsKCQkJdmFyIG5vZGVJbmZvID0ge307CgkJCVsKCQkJCSdpZCcsICd0ZXh0JywgJ3VsJywgJ29sJywgJ3RhYmxlJywgJ2ltYWdlJywgJ3FyJywgJ2NhbnZhcycsICdjb2x1bW5zJywKCQkJCSdoZWFkbGluZUxldmVsJywgJ3N0eWxlJywgJ3BhZ2VCcmVhaycsICdwYWdlT3JpZW50YXRpb24nLAoJCQkJJ3dpZHRoJywgJ2hlaWdodCcKCQkJXS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKCQkJCWlmIChub2RlW2tleV0gIT09IHVuZGVmaW5lZCkgewoJCQkJCW5vZGVJbmZvW2tleV0gPSBub2RlW2tleV07CgkJCQl9CgkJCX0pOwoJCQlub2RlSW5mby5zdGFydFBvc2l0aW9uID0gbm9kZS5wb3NpdGlvbnNbMF07CgkJCW5vZGVJbmZvLnBhZ2VOdW1iZXJzID0gbm9kZS5wb3NpdGlvbnMubWFwKGZ1bmN0aW9uIChub2RlKSB7CgkJCQlyZXR1cm4gbm9kZS5wYWdlTnVtYmVyOwoJCQl9KS5maWx0ZXIoZnVuY3Rpb24gKGVsZW1lbnQsIHBvc2l0aW9uLCBhcnJheSkgewoJCQkJcmV0dXJuIGFycmF5LmluZGV4T2YoZWxlbWVudCkgPT09IHBvc2l0aW9uOwoJCQl9KTsKCQkJbm9kZUluZm8ucGFnZXMgPSBwYWdlcy5sZW5ndGg7CgkJCW5vZGVJbmZvLnN0YWNrID0gaXNBcnJheShub2RlLnN0YWNrKTsKCgkJCW5vZGUubm9kZUluZm8gPSBub2RlSW5mbzsKCQl9KTsKCgkJcmV0dXJuIGxpbmVhck5vZGVMaXN0LnNvbWUoZnVuY3Rpb24gKG5vZGUsIGluZGV4LCBmb2xsb3dpbmdOb2RlTGlzdCkgewoJCQlpZiAobm9kZS5wYWdlQnJlYWsgIT09ICdiZWZvcmUnICYmICFub2RlLnBhZ2VCcmVha0NhbGN1bGF0ZWQpIHsKCQkJCW5vZGUucGFnZUJyZWFrQ2FsY3VsYXRlZCA9IHRydWU7CgkJCQl2YXIgcGFnZU51bWJlciA9IG5vZGUubm9kZUluZm8ucGFnZU51bWJlcnNbMF07CgoJCQkJdmFyIGZvbGxvd2luZ05vZGVzT25QYWdlID0gZm9sbG93aW5nTm9kZUxpc3Quc2xpY2UoaW5kZXggKyAxKS5maWx0ZXIoZnVuY3Rpb24gKG5vZGUwKSB7CgkJCQkJcmV0dXJuIG5vZGUwLm5vZGVJbmZvLnBhZ2VOdW1iZXJzLmluZGV4T2YocGFnZU51bWJlcikgPiAtMTsKCQkJCX0pOwoKCQkJCXZhciBub2Rlc09uTmV4dFBhZ2UgPSBmb2xsb3dpbmdOb2RlTGlzdC5zbGljZShpbmRleCArIDEpLmZpbHRlcihmdW5jdGlvbiAobm9kZTApIHsKCQkJCQlyZXR1cm4gbm9kZTAubm9kZUluZm8ucGFnZU51bWJlcnMuaW5kZXhPZihwYWdlTnVtYmVyICsgMSkgPiAtMTsKCQkJCX0pOwoKCQkJCXZhciBwcmV2aW91c05vZGVzT25QYWdlID0gZm9sbG93aW5nTm9kZUxpc3Quc2xpY2UoMCwgaW5kZXgpLmZpbHRlcihmdW5jdGlvbiAobm9kZTApIHsKCQkJCQlyZXR1cm4gbm9kZTAubm9kZUluZm8ucGFnZU51bWJlcnMuaW5kZXhPZihwYWdlTnVtYmVyKSA+IC0xOwoJCQkJfSk7CgoJCQkJaWYgKAoJCQkJCXBhZ2VCcmVha0JlZm9yZUZjdCgKCQkJCQkJbm9kZS5ub2RlSW5mbywKCQkJCQkJZm9sbG93aW5nTm9kZXNPblBhZ2UubWFwKGZ1bmN0aW9uIChub2RlKSB7CgkJCQkJCQlyZXR1cm4gbm9kZS5ub2RlSW5mbzsKCQkJCQkJfSksCgkJCQkJCW5vZGVzT25OZXh0UGFnZS5tYXAoZnVuY3Rpb24gKG5vZGUpIHsKCQkJCQkJCXJldHVybiBub2RlLm5vZGVJbmZvOwoJCQkJCQl9KSwKCQkJCQkJcHJldmlvdXNOb2Rlc09uUGFnZS5tYXAoZnVuY3Rpb24gKG5vZGUpIHsKCQkJCQkJCXJldHVybiBub2RlLm5vZGVJbmZvOwoJCQkJCQl9KSkpIHsKCQkJCQlub2RlLnBhZ2VCcmVhayA9ICdiZWZvcmUnOwoJCQkJCXJldHVybiB0cnVlOwoJCQkJfQoJCQl9CgkJfSk7Cgl9CgoJdGhpcy5kb2NQcmVwcm9jZXNzb3IgPSBuZXcgRG9jUHJlcHJvY2Vzc29yKCk7Cgl0aGlzLmRvY01lYXN1cmUgPSBuZXcgRG9jTWVhc3VyZShmb250UHJvdmlkZXIsIHN0eWxlRGljdGlvbmFyeSwgZGVmYXVsdFN0eWxlLCB0aGlzLmltYWdlTWVhc3VyZSwgdGhpcy50YWJsZUxheW91dHMsIGltYWdlcyk7CgoKCWZ1bmN0aW9uIHJlc2V0WFlzKHJlc3VsdCkgewoJCXJlc3VsdC5saW5lYXJOb2RlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7CgkJCW5vZGUucmVzZXRYWSgpOwoJCX0pOwoJfQoKCXZhciByZXN1bHQgPSB0aGlzLnRyeUxheW91dERvY3VtZW50KGRvY1N0cnVjdHVyZSwgZm9udFByb3ZpZGVyLCBzdHlsZURpY3Rpb25hcnksIGRlZmF1bHRTdHlsZSwgYmFja2dyb3VuZCwgaGVhZGVyLCBmb290ZXIsIGltYWdlcywgd2F0ZXJtYXJrKTsKCXdoaWxlIChhZGRQYWdlQnJlYWtzSWZOZWNlc3NhcnkocmVzdWx0LmxpbmVhck5vZGVMaXN0LCByZXN1bHQucGFnZXMpKSB7CgkJcmVzZXRYWXMocmVzdWx0KTsKCQlyZXN1bHQgPSB0aGlzLnRyeUxheW91dERvY3VtZW50KGRvY1N0cnVjdHVyZSwgZm9udFByb3ZpZGVyLCBzdHlsZURpY3Rpb25hcnksIGRlZmF1bHRTdHlsZSwgYmFja2dyb3VuZCwgaGVhZGVyLCBmb290ZXIsIGltYWdlcywgd2F0ZXJtYXJrKTsKCX0KCglyZXR1cm4gcmVzdWx0LnBhZ2VzOwp9OwoKTGF5b3V0QnVpbGRlci5wcm90b3R5cGUudHJ5TGF5b3V0RG9jdW1lbnQgPSBmdW5jdGlvbiAoZG9jU3RydWN0dXJlLCBmb250UHJvdmlkZXIsIHN0eWxlRGljdGlvbmFyeSwgZGVmYXVsdFN0eWxlLCBiYWNrZ3JvdW5kLCBoZWFkZXIsIGZvb3RlciwgaW1hZ2VzLCB3YXRlcm1hcmssIHBhZ2VCcmVha0JlZm9yZUZjdCkgewoKCXRoaXMubGluZWFyTm9kZUxpc3QgPSBbXTsKCWRvY1N0cnVjdHVyZSA9IHRoaXMuZG9jUHJlcHJvY2Vzc29yLnByZXByb2Nlc3NEb2N1bWVudChkb2NTdHJ1Y3R1cmUpOwoJZG9jU3RydWN0dXJlID0gdGhpcy5kb2NNZWFzdXJlLm1lYXN1cmVEb2N1bWVudChkb2NTdHJ1Y3R1cmUpOwoKCXRoaXMud3JpdGVyID0gbmV3IFBhZ2VFbGVtZW50V3JpdGVyKAoJCW5ldyBEb2N1bWVudENvbnRleHQodGhpcy5wYWdlU2l6ZSwgdGhpcy5wYWdlTWFyZ2lucyksIHRoaXMudHJhY2tlcik7CgoJdmFyIF90aGlzID0gdGhpczsKCXRoaXMud3JpdGVyLmNvbnRleHQoKS50cmFja2VyLnN0YXJ0VHJhY2tpbmcoJ3BhZ2VBZGRlZCcsIGZ1bmN0aW9uICgpIHsKCQlfdGhpcy5hZGRCYWNrZ3JvdW5kKGJhY2tncm91bmQpOwoJfSk7CgoJdGhpcy5hZGRCYWNrZ3JvdW5kKGJhY2tncm91bmQpOwoJdGhpcy5wcm9jZXNzTm9kZShkb2NTdHJ1Y3R1cmUpOwoJdGhpcy5hZGRIZWFkZXJzQW5kRm9vdGVycyhoZWFkZXIsIGZvb3Rlcik7CglpZiAod2F0ZXJtYXJrICE9IG51bGwpIHsKCQl0aGlzLmFkZFdhdGVybWFyayh3YXRlcm1hcmssIGZvbnRQcm92aWRlciwgZGVmYXVsdFN0eWxlKTsKCX0KCglyZXR1cm4ge3BhZ2VzOiB0aGlzLndyaXRlci5jb250ZXh0KCkucGFnZXMsIGxpbmVhck5vZGVMaXN0OiB0aGlzLmxpbmVhck5vZGVMaXN0fTsKfTsKCgpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5hZGRCYWNrZ3JvdW5kID0gZnVuY3Rpb24gKGJhY2tncm91bmQpIHsKCXZhciBiYWNrZ3JvdW5kR2V0dGVyID0gaXNGdW5jdGlvbihiYWNrZ3JvdW5kKSA/IGJhY2tncm91bmQgOiBmdW5jdGlvbiAoKSB7CgkJcmV0dXJuIGJhY2tncm91bmQ7Cgl9OwoKCXZhciBwYWdlQmFja2dyb3VuZCA9IGJhY2tncm91bmRHZXR0ZXIodGhpcy53cml0ZXIuY29udGV4dCgpLnBhZ2UgKyAxKTsKCglpZiAocGFnZUJhY2tncm91bmQpIHsKCQl2YXIgcGFnZVNpemUgPSB0aGlzLndyaXRlci5jb250ZXh0KCkuZ2V0Q3VycmVudFBhZ2UoKS5wYWdlU2l6ZTsKCQl0aGlzLndyaXRlci5iZWdpblVuYnJlYWthYmxlQmxvY2socGFnZVNpemUud2lkdGgsIHBhZ2VTaXplLmhlaWdodCk7CgkJcGFnZUJhY2tncm91bmQgPSB0aGlzLmRvY1ByZXByb2Nlc3Nvci5wcmVwcm9jZXNzRG9jdW1lbnQocGFnZUJhY2tncm91bmQpOwoJCXRoaXMucHJvY2Vzc05vZGUodGhpcy5kb2NNZWFzdXJlLm1lYXN1cmVEb2N1bWVudChwYWdlQmFja2dyb3VuZCkpOwoJCXRoaXMud3JpdGVyLmNvbW1pdFVuYnJlYWthYmxlQmxvY2soMCwgMCk7CgkJdGhpcy53cml0ZXIuY29udGV4dCgpLmhhc0JhY2tncm91bmQgPSB0cnVlOwoJfQp9OwoKTGF5b3V0QnVpbGRlci5wcm90b3R5cGUuYWRkU3RhdGljUmVwZWF0YWJsZSA9IGZ1bmN0aW9uIChoZWFkZXJPckZvb3Rlciwgc2l6ZUZ1bmN0aW9uKSB7Cgl0aGlzLmFkZER5bmFtaWNSZXBlYXRhYmxlKGZ1bmN0aW9uICgpIHsKCQlyZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShoZWFkZXJPckZvb3RlcikpOyAvLyBjb3B5IHRvIG5ldyBvYmplY3QKCX0sIHNpemVGdW5jdGlvbik7Cn07CgpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5hZGREeW5hbWljUmVwZWF0YWJsZSA9IGZ1bmN0aW9uIChub2RlR2V0dGVyLCBzaXplRnVuY3Rpb24pIHsKCXZhciBwYWdlcyA9IHRoaXMud3JpdGVyLmNvbnRleHQoKS5wYWdlczsKCglmb3IgKHZhciBwYWdlSW5kZXggPSAwLCBsID0gcGFnZXMubGVuZ3RoOyBwYWdlSW5kZXggPCBsOyBwYWdlSW5kZXgrKykgewoJCXRoaXMud3JpdGVyLmNvbnRleHQoKS5wYWdlID0gcGFnZUluZGV4OwoKCQl2YXIgbm9kZSA9IG5vZGVHZXR0ZXIocGFnZUluZGV4ICsgMSwgbCwgdGhpcy53cml0ZXIuY29udGV4dCgpLnBhZ2VzW3BhZ2VJbmRleF0ucGFnZVNpemUpOwoKCQlpZiAobm9kZSkgewoJCQl2YXIgc2l6ZXMgPSBzaXplRnVuY3Rpb24odGhpcy53cml0ZXIuY29udGV4dCgpLmdldEN1cnJlbnRQYWdlKCkucGFnZVNpemUsIHRoaXMucGFnZU1hcmdpbnMpOwoJCQl0aGlzLndyaXRlci5iZWdpblVuYnJlYWthYmxlQmxvY2soc2l6ZXMud2lkdGgsIHNpemVzLmhlaWdodCk7CgkJCW5vZGUgPSB0aGlzLmRvY1ByZXByb2Nlc3Nvci5wcmVwcm9jZXNzRG9jdW1lbnQobm9kZSk7CgkJCXRoaXMucHJvY2Vzc05vZGUodGhpcy5kb2NNZWFzdXJlLm1lYXN1cmVEb2N1bWVudChub2RlKSk7CgkJCXRoaXMud3JpdGVyLmNvbW1pdFVuYnJlYWthYmxlQmxvY2soc2l6ZXMueCwgc2l6ZXMueSk7CgkJfQoJfQp9OwoKTGF5b3V0QnVpbGRlci5wcm90b3R5cGUuYWRkSGVhZGVyc0FuZEZvb3RlcnMgPSBmdW5jdGlvbiAoaGVhZGVyLCBmb290ZXIpIHsKCXZhciBoZWFkZXJTaXplRmN0ID0gZnVuY3Rpb24gKHBhZ2VTaXplLCBwYWdlTWFyZ2lucykgewoJCXJldHVybiB7CgkJCXg6IDAsCgkJCXk6IDAsCgkJCXdpZHRoOiBwYWdlU2l6ZS53aWR0aCwKCQkJaGVpZ2h0OiBwYWdlTWFyZ2lucy50b3AKCQl9OwoJfTsKCgl2YXIgZm9vdGVyU2l6ZUZjdCA9IGZ1bmN0aW9uIChwYWdlU2l6ZSwgcGFnZU1hcmdpbnMpIHsKCQlyZXR1cm4gewoJCQl4OiAwLAoJCQl5OiBwYWdlU2l6ZS5oZWlnaHQgLSBwYWdlTWFyZ2lucy5ib3R0b20sCgkJCXdpZHRoOiBwYWdlU2l6ZS53aWR0aCwKCQkJaGVpZ2h0OiBwYWdlTWFyZ2lucy5ib3R0b20KCQl9OwoJfTsKCglpZiAoaXNGdW5jdGlvbihoZWFkZXIpKSB7CgkJdGhpcy5hZGREeW5hbWljUmVwZWF0YWJsZShoZWFkZXIsIGhlYWRlclNpemVGY3QpOwoJfSBlbHNlIGlmIChoZWFkZXIpIHsKCQl0aGlzLmFkZFN0YXRpY1JlcGVhdGFibGUoaGVhZGVyLCBoZWFkZXJTaXplRmN0KTsKCX0KCglpZiAoaXNGdW5jdGlvbihmb290ZXIpKSB7CgkJdGhpcy5hZGREeW5hbWljUmVwZWF0YWJsZShmb290ZXIsIGZvb3RlclNpemVGY3QpOwoJfSBlbHNlIGlmIChmb290ZXIpIHsKCQl0aGlzLmFkZFN0YXRpY1JlcGVhdGFibGUoZm9vdGVyLCBmb290ZXJTaXplRmN0KTsKCX0KfTsKCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLmFkZFdhdGVybWFyayA9IGZ1bmN0aW9uICh3YXRlcm1hcmssIGZvbnRQcm92aWRlciwgZGVmYXVsdFN0eWxlKSB7CglpZiAoaXNTdHJpbmcod2F0ZXJtYXJrKSkgewoJCXdhdGVybWFyayA9IHsndGV4dCc6IHdhdGVybWFya307Cgl9CgoJaWYgKCF3YXRlcm1hcmsudGV4dCkgeyAvLyBlbXB0eSB3YXRlcm1hcmsgdGV4dAoJCXJldHVybjsKCX0KCgl3YXRlcm1hcmsuZm9udCA9IHdhdGVybWFyay5mb250IHx8IGRlZmF1bHRTdHlsZS5mb250IHx8ICdSb2JvdG8nOwoJd2F0ZXJtYXJrLmNvbG9yID0gd2F0ZXJtYXJrLmNvbG9yIHx8ICdibGFjayc7Cgl3YXRlcm1hcmsub3BhY2l0eSA9IHdhdGVybWFyay5vcGFjaXR5IHx8IDAuNjsKCXdhdGVybWFyay5ib2xkID0gd2F0ZXJtYXJrLmJvbGQgfHwgZmFsc2U7Cgl3YXRlcm1hcmsuaXRhbGljcyA9IHdhdGVybWFyay5pdGFsaWNzIHx8IGZhbHNlOwoKCXZhciB3YXRlcm1hcmtPYmplY3QgPSB7CgkJdGV4dDogd2F0ZXJtYXJrLnRleHQsCgkJZm9udDogZm9udFByb3ZpZGVyLnByb3ZpZGVGb250KHdhdGVybWFyay5mb250LCB3YXRlcm1hcmsuYm9sZCwgd2F0ZXJtYXJrLml0YWxpY3MpLAoJCXNpemU6IGdldFNpemUodGhpcy5wYWdlU2l6ZSwgd2F0ZXJtYXJrLCBmb250UHJvdmlkZXIpLAoJCWNvbG9yOiB3YXRlcm1hcmsuY29sb3IsCgkJb3BhY2l0eTogd2F0ZXJtYXJrLm9wYWNpdHkKCX07CgoJdmFyIHBhZ2VzID0gdGhpcy53cml0ZXIuY29udGV4dCgpLnBhZ2VzOwoJZm9yICh2YXIgaSA9IDAsIGwgPSBwYWdlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQlwYWdlc1tpXS53YXRlcm1hcmsgPSB3YXRlcm1hcmtPYmplY3Q7Cgl9CgoJZnVuY3Rpb24gZ2V0U2l6ZShwYWdlU2l6ZSwgd2F0ZXJtYXJrLCBmb250UHJvdmlkZXIpIHsKCQl2YXIgd2lkdGggPSBwYWdlU2l6ZS53aWR0aDsKCQl2YXIgaGVpZ2h0ID0gcGFnZVNpemUuaGVpZ2h0OwoJCXZhciB0YXJnZXRXaWR0aCA9IE1hdGguc3FydCh3aWR0aCAqIHdpZHRoICsgaGVpZ2h0ICogaGVpZ2h0KSAqIDAuODsgLyogcGFnZSBkaWFnb25hbCAqIHNhbXBsZSBmYWN0b3IgKi8KCQl2YXIgdGV4dFRvb2xzID0gbmV3IFRleHRUb29scyhmb250UHJvdmlkZXIpOwoJCXZhciBzdHlsZUNvbnRleHRTdGFjayA9IG5ldyBTdHlsZUNvbnRleHRTdGFjayhudWxsLCB7Zm9udDogd2F0ZXJtYXJrLmZvbnQsIGJvbGQ6IHdhdGVybWFyay5ib2xkLCBpdGFsaWNzOiB3YXRlcm1hcmsuaXRhbGljc30pOwoJCXZhciBzaXplOwoKCQkvKioKCQkgKiBCaW5hcnkgc2VhcmNoIHRoZSBiZXN0IGZvbnQgc2l6ZS4KCQkgKiBJbml0aWFsIGJvdW5kcyBbMCwgMTAwMF0KCQkgKiBCcmVhayB3aGVuIHJhbmdlIDwgMQoJCSAqLwoJCXZhciBhID0gMDsKCQl2YXIgYiA9IDEwMDA7CgkJdmFyIGMgPSAoYSArIGIpIC8gMjsKCQl3aGlsZSAoTWF0aC5hYnMoYSAtIGIpID4gMSkgewoJCQlzdHlsZUNvbnRleHRTdGFjay5wdXNoKHsKCQkJCWZvbnRTaXplOiBjCgkJCX0pOwoJCQlzaXplID0gdGV4dFRvb2xzLnNpemVPZlN0cmluZyh3YXRlcm1hcmsudGV4dCwgc3R5bGVDb250ZXh0U3RhY2spOwoJCQlpZiAoc2l6ZS53aWR0aCA+IHRhcmdldFdpZHRoKSB7CgkJCQliID0gYzsKCQkJCWMgPSAoYSArIGIpIC8gMjsKCQkJfSBlbHNlIGlmIChzaXplLndpZHRoIDwgdGFyZ2V0V2lkdGgpIHsKCQkJCWEgPSBjOwoJCQkJYyA9IChhICsgYikgLyAyOwoJCQl9CgkJCXN0eWxlQ29udGV4dFN0YWNrLnBvcCgpOwoJCX0KCQkvKgoJCSBFbmQgYmluYXJ5IHNlYXJjaAoJCSAqLwoJCXJldHVybiB7c2l6ZTogc2l6ZSwgZm9udFNpemU6IGN9OwoJfQp9OwoKZnVuY3Rpb24gZGVjb3JhdGVOb2RlKG5vZGUpIHsKCXZhciB4ID0gbm9kZS54LCB5ID0gbm9kZS55OwoJbm9kZS5wb3NpdGlvbnMgPSBbXTsKCglpZiAoaXNBcnJheShub2RlLmNhbnZhcykpIHsKCQlub2RlLmNhbnZhcy5mb3JFYWNoKGZ1bmN0aW9uICh2ZWN0b3IpIHsKCQkJdmFyIHggPSB2ZWN0b3IueCwgeSA9IHZlY3Rvci55LCB4MSA9IHZlY3Rvci54MSwgeTEgPSB2ZWN0b3IueTEsIHgyID0gdmVjdG9yLngyLCB5MiA9IHZlY3Rvci55MjsKCQkJdmVjdG9yLnJlc2V0WFkgPSBmdW5jdGlvbiAoKSB7CgkJCQl2ZWN0b3IueCA9IHg7CgkJCQl2ZWN0b3IueSA9IHk7CgkJCQl2ZWN0b3IueDEgPSB4MTsKCQkJCXZlY3Rvci55MSA9IHkxOwoJCQkJdmVjdG9yLngyID0geDI7CgkJCQl2ZWN0b3IueTIgPSB5MjsKCQkJfTsKCQl9KTsKCX0KCglub2RlLnJlc2V0WFkgPSBmdW5jdGlvbiAoKSB7CgkJbm9kZS54ID0geDsKCQlub2RlLnkgPSB5OwoJCWlmIChpc0FycmF5KG5vZGUuY2FudmFzKSkgewoJCQlub2RlLmNhbnZhcy5mb3JFYWNoKGZ1bmN0aW9uICh2ZWN0b3IpIHsKCQkJCXZlY3Rvci5yZXNldFhZKCk7CgkJCX0pOwoJCX0KCX07Cn0KCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLnByb2Nlc3NOb2RlID0gZnVuY3Rpb24gKG5vZGUpIHsKCXZhciBzZWxmID0gdGhpczsKCgl0aGlzLmxpbmVhck5vZGVMaXN0LnB1c2gobm9kZSk7CglkZWNvcmF0ZU5vZGUobm9kZSk7CgoJYXBwbHlNYXJnaW5zKGZ1bmN0aW9uICgpIHsKCQl2YXIgdW5icmVha2FibGUgPSBub2RlLnVuYnJlYWthYmxlOwoJCWlmICh1bmJyZWFrYWJsZSkgewoJCQlzZWxmLndyaXRlci5iZWdpblVuYnJlYWthYmxlQmxvY2soKTsKCQl9CgoJCXZhciBhYnNQb3NpdGlvbiA9IG5vZGUuYWJzb2x1dGVQb3NpdGlvbjsKCQlpZiAoYWJzUG9zaXRpb24pIHsKCQkJc2VsZi53cml0ZXIuY29udGV4dCgpLmJlZ2luRGV0YWNoZWRCbG9jaygpOwoJCQlzZWxmLndyaXRlci5jb250ZXh0KCkubW92ZVRvKGFic1Bvc2l0aW9uLnggfHwgMCwgYWJzUG9zaXRpb24ueSB8fCAwKTsKCQl9CgoJCXZhciByZWxQb3NpdGlvbiA9IG5vZGUucmVsYXRpdmVQb3NpdGlvbjsKCQlpZiAocmVsUG9zaXRpb24pIHsKCQkJc2VsZi53cml0ZXIuY29udGV4dCgpLmJlZ2luRGV0YWNoZWRCbG9jaygpOwoJCQlzZWxmLndyaXRlci5jb250ZXh0KCkubW92ZVRvKChyZWxQb3NpdGlvbi54IHx8IDApICsgc2VsZi53cml0ZXIuY29udGV4dCgpLngsIChyZWxQb3NpdGlvbi55IHx8IDApICsgc2VsZi53cml0ZXIuY29udGV4dCgpLnkpOwoJCX0KCgkJaWYgKG5vZGUuc3RhY2spIHsKCQkJc2VsZi5wcm9jZXNzVmVydGljYWxDb250YWluZXIobm9kZSk7CgkJfSBlbHNlIGlmIChub2RlLmNvbHVtbnMpIHsKCQkJc2VsZi5wcm9jZXNzQ29sdW1ucyhub2RlKTsKCQl9IGVsc2UgaWYgKG5vZGUudWwpIHsKCQkJc2VsZi5wcm9jZXNzTGlzdChmYWxzZSwgbm9kZSk7CgkJfSBlbHNlIGlmIChub2RlLm9sKSB7CgkJCXNlbGYucHJvY2Vzc0xpc3QodHJ1ZSwgbm9kZSk7CgkJfSBlbHNlIGlmIChub2RlLnRhYmxlKSB7CgkJCXNlbGYucHJvY2Vzc1RhYmxlKG5vZGUpOwoJCX0gZWxzZSBpZiAobm9kZS50ZXh0ICE9PSB1bmRlZmluZWQpIHsKCQkJc2VsZi5wcm9jZXNzTGVhZihub2RlKTsKCQl9IGVsc2UgaWYgKG5vZGUudG9jKSB7CgkJCXNlbGYucHJvY2Vzc1RvYyhub2RlKTsKCQl9IGVsc2UgaWYgKG5vZGUuaW1hZ2UpIHsKCQkJc2VsZi5wcm9jZXNzSW1hZ2Uobm9kZSk7CgkJfSBlbHNlIGlmIChub2RlLmNhbnZhcykgewoJCQlzZWxmLnByb2Nlc3NDYW52YXMobm9kZSk7CgkJfSBlbHNlIGlmIChub2RlLnFyKSB7CgkJCXNlbGYucHJvY2Vzc1FyKG5vZGUpOwoJCX0gZWxzZSBpZiAoIW5vZGUuX3NwYW4pIHsKCQkJdGhyb3cgJ1VucmVjb2duaXplZCBkb2N1bWVudCBzdHJ1Y3R1cmU6ICcgKyBKU09OLnN0cmluZ2lmeShub2RlLCBmb250U3RyaW5naWZ5KTsKCQl9CgoJCWlmIChhYnNQb3NpdGlvbiB8fCByZWxQb3NpdGlvbikgewoJCQlzZWxmLndyaXRlci5jb250ZXh0KCkuZW5kRGV0YWNoZWRCbG9jaygpOwoJCX0KCgkJaWYgKHVuYnJlYWthYmxlKSB7CgkJCXNlbGYud3JpdGVyLmNvbW1pdFVuYnJlYWthYmxlQmxvY2soKTsKCQl9Cgl9KTsKCglmdW5jdGlvbiBhcHBseU1hcmdpbnMoY2FsbGJhY2spIHsKCQl2YXIgbWFyZ2luID0gbm9kZS5fbWFyZ2luOwoKCQlpZiAobm9kZS5wYWdlQnJlYWsgPT09ICdiZWZvcmUnKSB7CgkJCXNlbGYud3JpdGVyLm1vdmVUb05leHRQYWdlKG5vZGUucGFnZU9yaWVudGF0aW9uKTsKCQl9CgoJCWlmIChtYXJnaW4pIHsKCQkJc2VsZi53cml0ZXIuY29udGV4dCgpLm1vdmVEb3duKG1hcmdpblsxXSk7CgkJCXNlbGYud3JpdGVyLmNvbnRleHQoKS5hZGRNYXJnaW4obWFyZ2luWzBdLCBtYXJnaW5bMl0pOwoJCX0KCgkJY2FsbGJhY2soKTsKCgkJaWYgKG1hcmdpbikgewoJCQlzZWxmLndyaXRlci5jb250ZXh0KCkuYWRkTWFyZ2luKC1tYXJnaW5bMF0sIC1tYXJnaW5bMl0pOwoJCQlzZWxmLndyaXRlci5jb250ZXh0KCkubW92ZURvd24obWFyZ2luWzNdKTsKCQl9CgoJCWlmIChub2RlLnBhZ2VCcmVhayA9PT0gJ2FmdGVyJykgewoJCQlzZWxmLndyaXRlci5tb3ZlVG9OZXh0UGFnZShub2RlLnBhZ2VPcmllbnRhdGlvbik7CgkJfQoJfQp9OwoKLy8gdmVydGljYWwgY29udGFpbmVyCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLnByb2Nlc3NWZXJ0aWNhbENvbnRhaW5lciA9IGZ1bmN0aW9uIChub2RlKSB7Cgl2YXIgc2VsZiA9IHRoaXM7Cglub2RlLnN0YWNrLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKCQlzZWxmLnByb2Nlc3NOb2RlKGl0ZW0pOwoJCWFkZEFsbChub2RlLnBvc2l0aW9ucywgaXRlbS5wb3NpdGlvbnMpOwoKCQkvL1RPRE86IHBhcmFncmFwaCBnYXAKCX0pOwp9OwoKLy8gY29sdW1ucwpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5wcm9jZXNzQ29sdW1ucyA9IGZ1bmN0aW9uIChjb2x1bW5Ob2RlKSB7Cgl2YXIgY29sdW1ucyA9IGNvbHVtbk5vZGUuY29sdW1uczsKCXZhciBhdmFpbGFibGVXaWR0aCA9IHRoaXMud3JpdGVyLmNvbnRleHQoKS5hdmFpbGFibGVXaWR0aDsKCXZhciBnYXBzID0gZ2FwQXJyYXkoY29sdW1uTm9kZS5fZ2FwKTsKCglpZiAoZ2FwcykgewoJCWF2YWlsYWJsZVdpZHRoIC09IChnYXBzLmxlbmd0aCAtIDEpICogY29sdW1uTm9kZS5fZ2FwOwoJfQoKCUNvbHVtbkNhbGN1bGF0b3IuYnVpbGRDb2x1bW5XaWR0aHMoY29sdW1ucywgYXZhaWxhYmxlV2lkdGgpOwoJdmFyIHJlc3VsdCA9IHRoaXMucHJvY2Vzc1Jvdyhjb2x1bW5zLCBjb2x1bW5zLCBnYXBzKTsKCWFkZEFsbChjb2x1bW5Ob2RlLnBvc2l0aW9ucywgcmVzdWx0LnBvc2l0aW9ucyk7CgoKCWZ1bmN0aW9uIGdhcEFycmF5KGdhcCkgewoJCWlmICghZ2FwKSB7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJdmFyIGdhcHMgPSBbXTsKCQlnYXBzLnB1c2goMCk7CgoJCWZvciAodmFyIGkgPSBjb2x1bW5zLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHsKCQkJZ2Fwcy5wdXNoKGdhcCk7CgkJfQoKCQlyZXR1cm4gZ2FwczsKCX0KfTsKCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLnByb2Nlc3NSb3cgPSBmdW5jdGlvbiAoY29sdW1ucywgd2lkdGhzLCBnYXBzLCB0YWJsZUJvZHksIHRhYmxlUm93LCBoZWlnaHQpIHsKCXZhciBzZWxmID0gdGhpczsKCXZhciBwYWdlQnJlYWtzID0gW10sIHBvc2l0aW9ucyA9IFtdOwoKCXRoaXMudHJhY2tlci5hdXRvKCdwYWdlQ2hhbmdlZCcsIHN0b3JlUGFnZUJyZWFrRGF0YSwgZnVuY3Rpb24gKCkgewoJCXdpZHRocyA9IHdpZHRocyB8fCBjb2x1bW5zOwoKCQlzZWxmLndyaXRlci5jb250ZXh0KCkuYmVnaW5Db2x1bW5Hcm91cCgpOwoKCQlmb3IgKHZhciBpID0gMCwgbCA9IGNvbHVtbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJCXZhciBjb2x1bW4gPSBjb2x1bW5zW2ldOwoJCQl2YXIgd2lkdGggPSB3aWR0aHNbaV0uX2NhbGNXaWR0aDsKCQkJdmFyIGxlZnRPZmZzZXQgPSBjb2xMZWZ0T2Zmc2V0KGkpOwoKCQkJaWYgKGNvbHVtbi5jb2xTcGFuICYmIGNvbHVtbi5jb2xTcGFuID4gMSkgewoJCQkJZm9yICh2YXIgaiA9IDE7IGogPCBjb2x1bW4uY29sU3BhbjsgaisrKSB7CgkJCQkJd2lkdGggKz0gd2lkdGhzWysraV0uX2NhbGNXaWR0aCArIGdhcHNbaV07CgkJCQl9CgkJCX0KCgkJCXNlbGYud3JpdGVyLmNvbnRleHQoKS5iZWdpbkNvbHVtbih3aWR0aCwgbGVmdE9mZnNldCwgZ2V0RW5kaW5nQ2VsbChjb2x1bW4sIGkpKTsKCQkJaWYgKCFjb2x1bW4uX3NwYW4pIHsKCQkJCXNlbGYucHJvY2Vzc05vZGUoY29sdW1uKTsKCQkJCWFkZEFsbChwb3NpdGlvbnMsIGNvbHVtbi5wb3NpdGlvbnMpOwoJCQl9IGVsc2UgaWYgKGNvbHVtbi5fY29sdW1uRW5kaW5nQ29udGV4dCkgewoJCQkJLy8gcm93LXNwYW4gZW5kaW5nCgkJCQlzZWxmLndyaXRlci5jb250ZXh0KCkubWFya0VuZGluZyhjb2x1bW4pOwoJCQl9CgkJfQoKCQlzZWxmLndyaXRlci5jb250ZXh0KCkuY29tcGxldGVDb2x1bW5Hcm91cChoZWlnaHQpOwoJfSk7CgoJcmV0dXJuIHtwYWdlQnJlYWtzOiBwYWdlQnJlYWtzLCBwb3NpdGlvbnM6IHBvc2l0aW9uc307CgoJZnVuY3Rpb24gc3RvcmVQYWdlQnJlYWtEYXRhKGRhdGEpIHsKCQl2YXIgcGFnZURlc2M7CgoJCWZvciAodmFyIGkgPSAwLCBsID0gcGFnZUJyZWFrcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQkJdmFyIGRlc2MgPSBwYWdlQnJlYWtzW2ldOwoJCQlpZiAoZGVzYy5wcmV2UGFnZSA9PT0gZGF0YS5wcmV2UGFnZSkgewoJCQkJcGFnZURlc2MgPSBkZXNjOwoJCQkJYnJlYWs7CgkJCX0KCQl9CgoJCWlmICghcGFnZURlc2MpIHsKCQkJcGFnZURlc2MgPSBkYXRhOwoJCQlwYWdlQnJlYWtzLnB1c2gocGFnZURlc2MpOwoJCX0KCQlwYWdlRGVzYy5wcmV2WSA9IE1hdGgubWF4KHBhZ2VEZXNjLnByZXZZLCBkYXRhLnByZXZZKTsKCQlwYWdlRGVzYy55ID0gTWF0aC5taW4ocGFnZURlc2MueSwgZGF0YS55KTsKCX0KCglmdW5jdGlvbiBjb2xMZWZ0T2Zmc2V0KGkpIHsKCQlpZiAoZ2FwcyAmJiBnYXBzLmxlbmd0aCA+IGkpIHsKCQkJcmV0dXJuIGdhcHNbaV07CgkJfQoJCXJldHVybiAwOwoJfQoKCWZ1bmN0aW9uIGdldEVuZGluZ0NlbGwoY29sdW1uLCBjb2x1bW5JbmRleCkgewoJCWlmIChjb2x1bW4ucm93U3BhbiAmJiBjb2x1bW4ucm93U3BhbiA+IDEpIHsKCQkJdmFyIGVuZGluZ1JvdyA9IHRhYmxlUm93ICsgY29sdW1uLnJvd1NwYW4gLSAxOwoJCQlpZiAoZW5kaW5nUm93ID49IHRhYmxlQm9keS5sZW5ndGgpIHsKCQkJCXRocm93ICdSb3cgc3BhbiBmb3IgY29sdW1uICcgKyBjb2x1bW5JbmRleCArICcgKHdpdGggaW5kZXhlcyBzdGFydGluZyBmcm9tIDApIGV4Y2VlZGVkIHJvdyBjb3VudCc7CgkJCX0KCQkJcmV0dXJuIHRhYmxlQm9keVtlbmRpbmdSb3ddW2NvbHVtbkluZGV4XTsKCQl9CgoJCXJldHVybiBudWxsOwoJfQp9OwoKLy8gbGlzdHMKTGF5b3V0QnVpbGRlci5wcm90b3R5cGUucHJvY2Vzc0xpc3QgPSBmdW5jdGlvbiAob3JkZXJlZExpc3QsIG5vZGUpIHsKCXZhciBzZWxmID0gdGhpcywKCQlpdGVtcyA9IG9yZGVyZWRMaXN0ID8gbm9kZS5vbCA6IG5vZGUudWwsCgkJZ2FwU2l6ZSA9IG5vZGUuX2dhcFNpemU7CgoJdGhpcy53cml0ZXIuY29udGV4dCgpLmFkZE1hcmdpbihnYXBTaXplLndpZHRoKTsKCgl2YXIgbmV4dE1hcmtlcjsKCXRoaXMudHJhY2tlci5hdXRvKCdsaW5lQWRkZWQnLCBhZGRNYXJrZXJUb0ZpcnN0TGVhZiwgZnVuY3Rpb24gKCkgewoJCWl0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKCQkJbmV4dE1hcmtlciA9IGl0ZW0ubGlzdE1hcmtlcjsKCQkJc2VsZi5wcm9jZXNzTm9kZShpdGVtKTsKCQkJYWRkQWxsKG5vZGUucG9zaXRpb25zLCBpdGVtLnBvc2l0aW9ucyk7CgkJfSk7Cgl9KTsKCgl0aGlzLndyaXRlci5jb250ZXh0KCkuYWRkTWFyZ2luKC1nYXBTaXplLndpZHRoKTsKCglmdW5jdGlvbiBhZGRNYXJrZXJUb0ZpcnN0TGVhZihsaW5lKSB7CgkJLy8gSSdtIG5vdCB2ZXJ5IGhhcHB5IHdpdGggdGhlIHdheSBsaXN0IHByb2Nlc3NpbmcgaXMgaW1wbGVtZW50ZWQKCQkvLyAoYm90aCBjb2RlIGFuZCBhbGdvcml0aG0gc2hvdWxkIGJlIHJldGhpbmtlZCkKCQlpZiAobmV4dE1hcmtlcikgewoJCQl2YXIgbWFya2VyID0gbmV4dE1hcmtlcjsKCQkJbmV4dE1hcmtlciA9IG51bGw7CgoJCQlpZiAobWFya2VyLmNhbnZhcykgewoJCQkJdmFyIHZlY3RvciA9IG1hcmtlci5jYW52YXNbMF07CgoJCQkJb2Zmc2V0VmVjdG9yKHZlY3RvciwgLW1hcmtlci5fbWluV2lkdGgsIDApOwoJCQkJc2VsZi53cml0ZXIuYWRkVmVjdG9yKHZlY3Rvcik7CgkJCX0gZWxzZSBpZiAobWFya2VyLl9pbmxpbmVzKSB7CgkJCQl2YXIgbWFya2VyTGluZSA9IG5ldyBMaW5lKHNlbGYucGFnZVNpemUud2lkdGgpOwoJCQkJbWFya2VyTGluZS5hZGRJbmxpbmUobWFya2VyLl9pbmxpbmVzWzBdKTsKCQkJCW1hcmtlckxpbmUueCA9IC1tYXJrZXIuX21pbldpZHRoOwoJCQkJbWFya2VyTGluZS55ID0gbGluZS5nZXRBc2NlbmRlckhlaWdodCgpIC0gbWFya2VyTGluZS5nZXRBc2NlbmRlckhlaWdodCgpOwoJCQkJc2VsZi53cml0ZXIuYWRkTGluZShtYXJrZXJMaW5lLCB0cnVlKTsKCQkJfQoJCX0KCX0KfTsKCi8vIHRhYmxlcwpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5wcm9jZXNzVGFibGUgPSBmdW5jdGlvbiAodGFibGVOb2RlKSB7Cgl2YXIgcHJvY2Vzc29yID0gbmV3IFRhYmxlUHJvY2Vzc29yKHRhYmxlTm9kZSk7CgoJcHJvY2Vzc29yLmJlZ2luVGFibGUodGhpcy53cml0ZXIpOwoKCXZhciByb3dIZWlnaHRzID0gdGFibGVOb2RlLnRhYmxlLmhlaWdodHM7Cglmb3IgKHZhciBpID0gMCwgbCA9IHRhYmxlTm9kZS50YWJsZS5ib2R5Lmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCXByb2Nlc3Nvci5iZWdpblJvdyhpLCB0aGlzLndyaXRlcik7CgoJCXZhciBoZWlnaHQ7CgkJaWYgKGlzRnVuY3Rpb24ocm93SGVpZ2h0cykpIHsKCQkJaGVpZ2h0ID0gcm93SGVpZ2h0cyhpKTsKCQl9IGVsc2UgaWYgKGlzQXJyYXkocm93SGVpZ2h0cykpIHsKCQkJaGVpZ2h0ID0gcm93SGVpZ2h0c1tpXTsKCQl9IGVsc2UgewoJCQloZWlnaHQgPSByb3dIZWlnaHRzOwoJCX0KCgkJaWYgKGhlaWdodCA9PT0gJ2F1dG8nKSB7CgkJCWhlaWdodCA9IHVuZGVmaW5lZDsKCQl9CgoJCXZhciByZXN1bHQgPSB0aGlzLnByb2Nlc3NSb3codGFibGVOb2RlLnRhYmxlLmJvZHlbaV0sIHRhYmxlTm9kZS50YWJsZS53aWR0aHMsIHRhYmxlTm9kZS5fb2Zmc2V0cy5vZmZzZXRzLCB0YWJsZU5vZGUudGFibGUuYm9keSwgaSwgaGVpZ2h0KTsKCQlhZGRBbGwodGFibGVOb2RlLnBvc2l0aW9ucywgcmVzdWx0LnBvc2l0aW9ucyk7CgoJCXByb2Nlc3Nvci5lbmRSb3coaSwgdGhpcy53cml0ZXIsIHJlc3VsdC5wYWdlQnJlYWtzKTsKCX0KCglwcm9jZXNzb3IuZW5kVGFibGUodGhpcy53cml0ZXIpOwp9OwoKLy8gbGVhZnMgKHRleHRzKQpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5wcm9jZXNzTGVhZiA9IGZ1bmN0aW9uIChub2RlKSB7Cgl2YXIgbGluZSA9IHRoaXMuYnVpbGROZXh0TGluZShub2RlKTsKCXZhciBjdXJyZW50SGVpZ2h0ID0gKGxpbmUpID8gbGluZS5nZXRIZWlnaHQoKSA6IDA7Cgl2YXIgbWF4SGVpZ2h0ID0gbm9kZS5tYXhIZWlnaHQgfHwgLTE7CgoJaWYgKG5vZGUuX3RvY0l0ZW1SZWYpIHsKCQlsaW5lLl9wYWdlTm9kZVJlZiA9IG5vZGUuX3RvY0l0ZW1SZWY7Cgl9CgoJaWYgKG5vZGUuX3BhZ2VSZWYpIHsKCQlsaW5lLl9wYWdlTm9kZVJlZiA9IG5vZGUuX3BhZ2VSZWYuX25vZGVSZWY7Cgl9CgoJd2hpbGUgKGxpbmUgJiYgKG1heEhlaWdodCA9PT0gLTEgfHwgY3VycmVudEhlaWdodCA8IG1heEhlaWdodCkpIHsKCQl2YXIgcG9zaXRpb25zID0gdGhpcy53cml0ZXIuYWRkTGluZShsaW5lKTsKCQlub2RlLnBvc2l0aW9ucy5wdXNoKHBvc2l0aW9ucyk7CgkJbGluZSA9IHRoaXMuYnVpbGROZXh0TGluZShub2RlKTsKCQlpZiAobGluZSkgewoJCQljdXJyZW50SGVpZ2h0ICs9IGxpbmUuZ2V0SGVpZ2h0KCk7CgkJfQoJfQp9OwoKTGF5b3V0QnVpbGRlci5wcm90b3R5cGUucHJvY2Vzc1RvYyA9IGZ1bmN0aW9uIChub2RlKSB7CglpZiAobm9kZS50b2MudGl0bGUpIHsKCQl0aGlzLnByb2Nlc3NOb2RlKG5vZGUudG9jLnRpdGxlKTsKCX0KCXRoaXMucHJvY2Vzc05vZGUobm9kZS50b2MuX3RhYmxlKTsKfTsKCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLmJ1aWxkTmV4dExpbmUgPSBmdW5jdGlvbiAodGV4dE5vZGUpIHsKCglmdW5jdGlvbiBjbG9uZUlubGluZShpbmxpbmUpIHsKCQl2YXIgbmV3SW5saW5lID0gaW5saW5lLmNvbnN0cnVjdG9yKCk7CgkJZm9yICh2YXIga2V5IGluIGlubGluZSkgewoJCQluZXdJbmxpbmVba2V5XSA9IGlubGluZVtrZXldOwoJCX0KCQlyZXR1cm4gbmV3SW5saW5lOwoJfQoKCWlmICghdGV4dE5vZGUuX2lubGluZXMgfHwgdGV4dE5vZGUuX2lubGluZXMubGVuZ3RoID09PSAwKSB7CgkJcmV0dXJuIG51bGw7Cgl9CgoJdmFyIGxpbmUgPSBuZXcgTGluZSh0aGlzLndyaXRlci5jb250ZXh0KCkuYXZhaWxhYmxlV2lkdGgpOwoJdmFyIHRleHRUb29scyA9IG5ldyBUZXh0VG9vbHMobnVsbCk7CgoJd2hpbGUgKHRleHROb2RlLl9pbmxpbmVzICYmIHRleHROb2RlLl9pbmxpbmVzLmxlbmd0aCA+IDAgJiYgbGluZS5oYXNFbm91Z2hTcGFjZUZvcklubGluZSh0ZXh0Tm9kZS5faW5saW5lc1swXSkpIHsKCQl2YXIgaW5saW5lID0gdGV4dE5vZGUuX2lubGluZXMuc2hpZnQoKTsKCgkJaWYgKCFpbmxpbmUubm9XcmFwICYmIGlubGluZS50ZXh0Lmxlbmd0aCA+IDEgJiYgaW5saW5lLndpZHRoID4gbGluZS5tYXhXaWR0aCkgewoJCQl2YXIgd2lkdGhQZXJDaGFyID0gaW5saW5lLndpZHRoIC8gaW5saW5lLnRleHQubGVuZ3RoOwoJCQl2YXIgbWF4Q2hhcnMgPSBNYXRoLmZsb29yKGxpbmUubWF4V2lkdGggLyB3aWR0aFBlckNoYXIpOwoJCQlpZiAobWF4Q2hhcnMgPCAxKSB7CgkJCQltYXhDaGFycyA9IDE7CgkJCX0KCQkJaWYgKG1heENoYXJzIDwgaW5saW5lLnRleHQubGVuZ3RoKSB7CgkJCQl2YXIgbmV3SW5saW5lID0gY2xvbmVJbmxpbmUoaW5saW5lKTsKCgkJCQluZXdJbmxpbmUudGV4dCA9IGlubGluZS50ZXh0LnN1YnN0cihtYXhDaGFycyk7CgkJCQlpbmxpbmUudGV4dCA9IGlubGluZS50ZXh0LnN1YnN0cigwLCBtYXhDaGFycyk7CgoJCQkJbmV3SW5saW5lLndpZHRoID0gdGV4dFRvb2xzLndpZHRoT2ZTdHJpbmcobmV3SW5saW5lLnRleHQsIG5ld0lubGluZS5mb250LCBuZXdJbmxpbmUuZm9udFNpemUsIG5ld0lubGluZS5jaGFyYWN0ZXJTcGFjaW5nLCBuZXdJbmxpbmUuZm9udEZlYXR1cmVzKTsKCQkJCWlubGluZS53aWR0aCA9IHRleHRUb29scy53aWR0aE9mU3RyaW5nKGlubGluZS50ZXh0LCBpbmxpbmUuZm9udCwgaW5saW5lLmZvbnRTaXplLCBpbmxpbmUuY2hhcmFjdGVyU3BhY2luZywgaW5saW5lLmZvbnRGZWF0dXJlcyk7CgoJCQkJdGV4dE5vZGUuX2lubGluZXMudW5zaGlmdChuZXdJbmxpbmUpOwoJCQl9CgkJfQoKCQlsaW5lLmFkZElubGluZShpbmxpbmUpOwoJfQoKCWxpbmUubGFzdExpbmVJblBhcmFncmFwaCA9IHRleHROb2RlLl9pbmxpbmVzLmxlbmd0aCA9PT0gMDsKCglyZXR1cm4gbGluZTsKfTsKCi8vIGltYWdlcwpMYXlvdXRCdWlsZGVyLnByb3RvdHlwZS5wcm9jZXNzSW1hZ2UgPSBmdW5jdGlvbiAobm9kZSkgewoJdmFyIHBvc2l0aW9uID0gdGhpcy53cml0ZXIuYWRkSW1hZ2Uobm9kZSk7Cglub2RlLnBvc2l0aW9ucy5wdXNoKHBvc2l0aW9uKTsKfTsKCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLnByb2Nlc3NDYW52YXMgPSBmdW5jdGlvbiAobm9kZSkgewoJdmFyIGhlaWdodCA9IG5vZGUuX21pbkhlaWdodDsKCglpZiAobm9kZS5hYnNvbHV0ZVBvc2l0aW9uID09PSB1bmRlZmluZWQgJiYgdGhpcy53cml0ZXIuY29udGV4dCgpLmF2YWlsYWJsZUhlaWdodCA8IGhlaWdodCkgewoJCS8vIFRPRE86IHN1cHBvcnQgZm9yIGNhbnZhcyBsYXJnZXIgdGhhbiBhIHBhZ2UKCQkvLyBUT0RPOiBzdXBwb3J0IGZvciBvdGhlciBvdmVyZmxvdyBtZXRob2RzCgoJCXRoaXMud3JpdGVyLm1vdmVUb05leHRQYWdlKCk7Cgl9CgoJdGhpcy53cml0ZXIuYWxpZ25DYW52YXMobm9kZSk7CgoJbm9kZS5jYW52YXMuZm9yRWFjaChmdW5jdGlvbiAodmVjdG9yKSB7CgkJdmFyIHBvc2l0aW9uID0gdGhpcy53cml0ZXIuYWRkVmVjdG9yKHZlY3Rvcik7CgkJbm9kZS5wb3NpdGlvbnMucHVzaChwb3NpdGlvbik7Cgl9LCB0aGlzKTsKCgl0aGlzLndyaXRlci5jb250ZXh0KCkubW92ZURvd24oaGVpZ2h0KTsKfTsKCkxheW91dEJ1aWxkZXIucHJvdG90eXBlLnByb2Nlc3NRciA9IGZ1bmN0aW9uIChub2RlKSB7Cgl2YXIgcG9zaXRpb24gPSB0aGlzLndyaXRlci5hZGRRcihub2RlKTsKCW5vZGUucG9zaXRpb25zLnB1c2gocG9zaXRpb24pOwp9OwoKbW9kdWxlLmV4cG9ydHMgPSBMYXlvdXRCdWlsZGVyOwoKCi8qKiovIH0pLAovKiAxMjkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyKSB7Cgp2YXIgaXNTdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzU3RyaW5nOwp2YXIgaXNOdW1iZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzTnVtYmVyOwp2YXIgaXNCb29sZWFuID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc0Jvb2xlYW47CnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc0FycmF5Owp2YXIgaXNVbmRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzVW5kZWZpbmVkOwp2YXIgZm9udFN0cmluZ2lmeSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuZm9udFN0cmluZ2lmeTsKCmZ1bmN0aW9uIERvY1ByZXByb2Nlc3NvcigpIHsKCn0KCkRvY1ByZXByb2Nlc3Nvci5wcm90b3R5cGUucHJlcHJvY2Vzc0RvY3VtZW50ID0gZnVuY3Rpb24gKGRvY1N0cnVjdHVyZSkgewoJdGhpcy50b2NzID0gW107Cgl0aGlzLm5vZGVSZWZlcmVuY2VzID0gW107CglyZXR1cm4gdGhpcy5wcmVwcm9jZXNzTm9kZShkb2NTdHJ1Y3R1cmUpOwp9OwoKRG9jUHJlcHJvY2Vzc29yLnByb3RvdHlwZS5wcmVwcm9jZXNzTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7CgkvLyBleHBhbmQgc2hvcnRjdXRzIGFuZCBjYXN0aW5nIHZhbHVlcwoJaWYgKGlzQXJyYXkobm9kZSkpIHsKCQlub2RlID0ge3N0YWNrOiBub2RlfTsKCX0gZWxzZSBpZiAoaXNTdHJpbmcobm9kZSkpIHsKCQlub2RlID0ge3RleHQ6IG5vZGV9OwoJfSBlbHNlIGlmIChpc051bWJlcihub2RlKSB8fCBpc0Jvb2xlYW4obm9kZSkpIHsKCQlub2RlID0ge3RleHQ6IG5vZGUudG9TdHJpbmcoKX07Cgl9IGVsc2UgaWYgKG5vZGUgPT09IG51bGwpIHsKCQlub2RlID0ge3RleHQ6ICcnfTsKCX0gZWxzZSBpZiAoT2JqZWN0LmtleXMobm9kZSkubGVuZ3RoID09PSAwKSB7IC8vIGVtcHR5IG9iamVjdAoJCW5vZGUgPSB7dGV4dDogJyd9OwoJfQoKCWlmIChub2RlLmNvbHVtbnMpIHsKCQlyZXR1cm4gdGhpcy5wcmVwcm9jZXNzQ29sdW1ucyhub2RlKTsKCX0gZWxzZSBpZiAobm9kZS5zdGFjaykgewoJCXJldHVybiB0aGlzLnByZXByb2Nlc3NWZXJ0aWNhbENvbnRhaW5lcihub2RlKTsKCX0gZWxzZSBpZiAobm9kZS51bCkgewoJCXJldHVybiB0aGlzLnByZXByb2Nlc3NMaXN0KG5vZGUpOwoJfSBlbHNlIGlmIChub2RlLm9sKSB7CgkJcmV0dXJuIHRoaXMucHJlcHJvY2Vzc0xpc3Qobm9kZSk7Cgl9IGVsc2UgaWYgKG5vZGUudGFibGUpIHsKCQlyZXR1cm4gdGhpcy5wcmVwcm9jZXNzVGFibGUobm9kZSk7Cgl9IGVsc2UgaWYgKG5vZGUudGV4dCAhPT0gdW5kZWZpbmVkKSB7CgkJcmV0dXJuIHRoaXMucHJlcHJvY2Vzc1RleHQobm9kZSk7Cgl9IGVsc2UgaWYgKG5vZGUudG9jKSB7CgkJcmV0dXJuIHRoaXMucHJlcHJvY2Vzc1RvYyhub2RlKTsKCX0gZWxzZSBpZiAobm9kZS5pbWFnZSkgewoJCXJldHVybiB0aGlzLnByZXByb2Nlc3NJbWFnZShub2RlKTsKCX0gZWxzZSBpZiAobm9kZS5jYW52YXMpIHsKCQlyZXR1cm4gdGhpcy5wcmVwcm9jZXNzQ2FudmFzKG5vZGUpOwoJfSBlbHNlIGlmIChub2RlLnFyKSB7CgkJcmV0dXJuIHRoaXMucHJlcHJvY2Vzc1FyKG5vZGUpOwoJfSBlbHNlIGlmIChub2RlLnBhZ2VSZWZlcmVuY2UgfHwgbm9kZS50ZXh0UmVmZXJlbmNlKSB7CgkJcmV0dXJuIHRoaXMucHJlcHJvY2Vzc1RleHQobm9kZSk7Cgl9IGVsc2UgewoJCXRocm93ICdVbnJlY29nbml6ZWQgZG9jdW1lbnQgc3RydWN0dXJlOiAnICsgSlNPTi5zdHJpbmdpZnkobm9kZSwgZm9udFN0cmluZ2lmeSk7Cgl9Cn07CgpEb2NQcmVwcm9jZXNzb3IucHJvdG90eXBlLnByZXByb2Nlc3NDb2x1bW5zID0gZnVuY3Rpb24gKG5vZGUpIHsKCXZhciBjb2x1bW5zID0gbm9kZS5jb2x1bW5zOwoKCWZvciAodmFyIGkgPSAwLCBsID0gY29sdW1ucy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQljb2x1bW5zW2ldID0gdGhpcy5wcmVwcm9jZXNzTm9kZShjb2x1bW5zW2ldKTsKCX0KCglyZXR1cm4gbm9kZTsKfTsKCkRvY1ByZXByb2Nlc3Nvci5wcm90b3R5cGUucHJlcHJvY2Vzc1ZlcnRpY2FsQ29udGFpbmVyID0gZnVuY3Rpb24gKG5vZGUpIHsKCXZhciBpdGVtcyA9IG5vZGUuc3RhY2s7CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBpdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQlpdGVtc1tpXSA9IHRoaXMucHJlcHJvY2Vzc05vZGUoaXRlbXNbaV0pOwoJfQoKCXJldHVybiBub2RlOwp9OwoKRG9jUHJlcHJvY2Vzc29yLnByb3RvdHlwZS5wcmVwcm9jZXNzTGlzdCA9IGZ1bmN0aW9uIChub2RlKSB7Cgl2YXIgaXRlbXMgPSBub2RlLnVsIHx8IG5vZGUub2w7CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBpdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQlpdGVtc1tpXSA9IHRoaXMucHJlcHJvY2Vzc05vZGUoaXRlbXNbaV0pOwoJfQoKCXJldHVybiBub2RlOwp9OwoKRG9jUHJlcHJvY2Vzc29yLnByb3RvdHlwZS5wcmVwcm9jZXNzVGFibGUgPSBmdW5jdGlvbiAobm9kZSkgewoJdmFyIGNvbCwgcm93LCBjb2xzLCByb3dzOwoKCWZvciAoY29sID0gMCwgY29scyA9IG5vZGUudGFibGUuYm9keVswXS5sZW5ndGg7IGNvbCA8IGNvbHM7IGNvbCsrKSB7CgkJZm9yIChyb3cgPSAwLCByb3dzID0gbm9kZS50YWJsZS5ib2R5Lmxlbmd0aDsgcm93IDwgcm93czsgcm93KyspIHsKCQkJdmFyIHJvd0RhdGEgPSBub2RlLnRhYmxlLmJvZHlbcm93XTsKCQkJdmFyIGRhdGEgPSByb3dEYXRhW2NvbF07CgkJCWlmIChkYXRhICE9PSB1bmRlZmluZWQpIHsKCQkJCWlmIChkYXRhID09PSBudWxsKSB7IC8vIHRyYW5zZm9ybSB0byBvYmplY3QKCQkJCQlkYXRhID0gJyc7CgkJCQl9CgkJCQlpZiAoIWRhdGEuX3NwYW4pIHsKCQkJCQlyb3dEYXRhW2NvbF0gPSB0aGlzLnByZXByb2Nlc3NOb2RlKGRhdGEpOwoJCQkJfQoJCQl9CgkJfQoJfQoKCXJldHVybiBub2RlOwp9OwoKRG9jUHJlcHJvY2Vzc29yLnByb3RvdHlwZS5wcmVwcm9jZXNzVGV4dCA9IGZ1bmN0aW9uIChub2RlKSB7CglpZiAobm9kZS50b2NJdGVtKSB7CgkJaWYgKCFpc0FycmF5KG5vZGUudG9jSXRlbSkpIHsKCQkJbm9kZS50b2NJdGVtID0gW25vZGUudG9jSXRlbV07CgkJfQoKCQlmb3IgKHZhciBpID0gMCwgbCA9IG5vZGUudG9jSXRlbS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQkJaWYgKCFpc1N0cmluZyhub2RlLnRvY0l0ZW1baV0pKSB7CgkJCQlub2RlLnRvY0l0ZW1baV0gPSAnX2RlZmF1bHRfJzsKCQkJfQoKCQkJdmFyIHRvY0l0ZW1JZCA9IG5vZGUudG9jSXRlbVtpXTsKCgkJCWlmICghdGhpcy50b2NzW3RvY0l0ZW1JZF0pIHsKCQkJCXRoaXMudG9jc1t0b2NJdGVtSWRdID0ge3RvYzoge19pdGVtczogW10sIF9wc2V1ZG86IHRydWV9fTsKCQkJfQoKCQkJdGhpcy50b2NzW3RvY0l0ZW1JZF0udG9jLl9pdGVtcy5wdXNoKG5vZGUpOwoJCX0KCX0KCglpZiAobm9kZS5pZCkgewoJCWlmICh0aGlzLm5vZGVSZWZlcmVuY2VzW25vZGUuaWRdKSB7CgkJCWlmICghdGhpcy5ub2RlUmVmZXJlbmNlc1tub2RlLmlkXS5fcHNldWRvKSB7CgkJCQl0aHJvdyAiTm9kZSBpZCAnIiArIG5vZGUuaWQgKyAiJyBhbHJlYWR5IGV4aXN0cyI7CgkJCX0KCgkJCXRoaXMubm9kZVJlZmVyZW5jZXNbbm9kZS5pZF0uX25vZGVSZWYgPSBub2RlOwoJCQl0aGlzLm5vZGVSZWZlcmVuY2VzW25vZGUuaWRdLl9wc2V1ZG8gPSBmYWxzZTsKCQl9IGVsc2UgewoJCQl0aGlzLm5vZGVSZWZlcmVuY2VzW25vZGUuaWRdID0ge19ub2RlUmVmOiBub2RlfTsKCQl9Cgl9CgoJaWYgKG5vZGUucGFnZVJlZmVyZW5jZSkgewoJCWlmICghdGhpcy5ub2RlUmVmZXJlbmNlc1tub2RlLnBhZ2VSZWZlcmVuY2VdKSB7CgkJCXRoaXMubm9kZVJlZmVyZW5jZXNbbm9kZS5wYWdlUmVmZXJlbmNlXSA9IHtfbm9kZVJlZjoge30sIF9wc2V1ZG86IHRydWV9OwoJCX0KCQlub2RlLnRleHQgPSAnMDAwMDAnOwoJCW5vZGUuX3BhZ2VSZWYgPSB0aGlzLm5vZGVSZWZlcmVuY2VzW25vZGUucGFnZVJlZmVyZW5jZV07Cgl9CgoJaWYgKG5vZGUudGV4dFJlZmVyZW5jZSkgewoJCWlmICghdGhpcy5ub2RlUmVmZXJlbmNlc1tub2RlLnRleHRSZWZlcmVuY2VdKSB7CgkJCXRoaXMubm9kZVJlZmVyZW5jZXNbbm9kZS50ZXh0UmVmZXJlbmNlXSA9IHtfbm9kZVJlZjoge30sIF9wc2V1ZG86IHRydWV9OwoJCX0KCgkJbm9kZS50ZXh0ID0gJyc7CgkJbm9kZS5fdGV4dFJlZiA9IHRoaXMubm9kZVJlZmVyZW5jZXNbbm9kZS50ZXh0UmVmZXJlbmNlXTsKCX0KCglpZiAobm9kZS50ZXh0ICYmIG5vZGUudGV4dC50ZXh0KSB7CgkJbm9kZS50ZXh0ID0gW3RoaXMucHJlcHJvY2Vzc05vZGUobm9kZS50ZXh0KV07Cgl9CgoJcmV0dXJuIG5vZGU7Cn07CgpEb2NQcmVwcm9jZXNzb3IucHJvdG90eXBlLnByZXByb2Nlc3NUb2MgPSBmdW5jdGlvbiAobm9kZSkgewoJaWYgKCFub2RlLnRvYy5pZCkgewoJCW5vZGUudG9jLmlkID0gJ19kZWZhdWx0Xyc7Cgl9CgoJbm9kZS50b2MudGl0bGUgPSBub2RlLnRvYy50aXRsZSA/IHRoaXMucHJlcHJvY2Vzc05vZGUobm9kZS50b2MudGl0bGUpIDogbnVsbDsKCW5vZGUudG9jLl9pdGVtcyA9IFtdOwoKCWlmICh0aGlzLnRvY3Nbbm9kZS50b2MuaWRdKSB7CgkJaWYgKCF0aGlzLnRvY3Nbbm9kZS50b2MuaWRdLnRvYy5fcHNldWRvKSB7CgkJCXRocm93ICJUT0MgJyIgKyBub2RlLnRvYy5pZCArICInIGFscmVhZHkgZXhpc3RzIjsKCQl9CgoJCW5vZGUudG9jLl9pdGVtcyA9IHRoaXMudG9jc1tub2RlLnRvYy5pZF0udG9jLl9pdGVtczsKCX0KCgl0aGlzLnRvY3Nbbm9kZS50b2MuaWRdID0gbm9kZTsKCglyZXR1cm4gbm9kZTsKfTsKCkRvY1ByZXByb2Nlc3Nvci5wcm90b3R5cGUucHJlcHJvY2Vzc0ltYWdlID0gZnVuY3Rpb24gKG5vZGUpIHsKCWlmICghaXNVbmRlZmluZWQobm9kZS5pbWFnZS50eXBlKSAmJiAhaXNVbmRlZmluZWQobm9kZS5pbWFnZS5kYXRhKSAmJiAobm9kZS5pbWFnZS50eXBlID09PSAnQnVmZmVyJykgJiYgaXNBcnJheShub2RlLmltYWdlLmRhdGEpKSB7CgkJbm9kZS5pbWFnZSA9IEJ1ZmZlci5mcm9tKG5vZGUuaW1hZ2UuZGF0YSk7Cgl9CglyZXR1cm4gbm9kZTsKfTsKCkRvY1ByZXByb2Nlc3Nvci5wcm90b3R5cGUucHJlcHJvY2Vzc0NhbnZhcyA9IGZ1bmN0aW9uIChub2RlKSB7CglyZXR1cm4gbm9kZTsKfTsKCkRvY1ByZXByb2Nlc3Nvci5wcm90b3R5cGUucHJlcHJvY2Vzc1FyID0gZnVuY3Rpb24gKG5vZGUpIHsKCXJldHVybiBub2RlOwp9OwoKbW9kdWxlLmV4cG9ydHMgPSBEb2NQcmVwcm9jZXNzb3I7Ci8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlcikpCgovKioqLyB9KSwKLyogMTMwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKLyplc2xpbnQgbm8tdW51c2VkLXZhcnM6IFsiZXJyb3IiLCB7ImFyZ3MiOiAibm9uZSJ9XSovCgoKCnZhciBUZXh0VG9vbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTsKdmFyIFN0eWxlQ29udGV4dFN0YWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MCk7CnZhciBDb2x1bW5DYWxjdWxhdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NCk7CnZhciBpc1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNTdHJpbmc7CnZhciBpc051bWJlciA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNOdW1iZXI7CnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNPYmplY3Q7CnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5pc0FycmF5Owp2YXIgZm9udFN0cmluZ2lmeSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuZm9udFN0cmluZ2lmeTsKdmFyIHBhY2sgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLnBhY2s7CnZhciBxckVuY29kZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNCk7CgovKioKICogQHByaXZhdGUKICovCmZ1bmN0aW9uIERvY01lYXN1cmUoZm9udFByb3ZpZGVyLCBzdHlsZURpY3Rpb25hcnksIGRlZmF1bHRTdHlsZSwgaW1hZ2VNZWFzdXJlLCB0YWJsZUxheW91dHMsIGltYWdlcykgewoJdGhpcy50ZXh0VG9vbHMgPSBuZXcgVGV4dFRvb2xzKGZvbnRQcm92aWRlcik7Cgl0aGlzLnN0eWxlU3RhY2sgPSBuZXcgU3R5bGVDb250ZXh0U3RhY2soc3R5bGVEaWN0aW9uYXJ5LCBkZWZhdWx0U3R5bGUpOwoJdGhpcy5pbWFnZU1lYXN1cmUgPSBpbWFnZU1lYXN1cmU7Cgl0aGlzLnRhYmxlTGF5b3V0cyA9IHRhYmxlTGF5b3V0czsKCXRoaXMuaW1hZ2VzID0gaW1hZ2VzOwoJdGhpcy5hdXRvSW1hZ2VJbmRleCA9IDE7Cn0KCi8qKgogKiBNZWFzdXJlcyBhbGwgbm9kZXMgYW5kIHNldHMgbWluL21heC13aWR0aCBwcm9wZXJ0aWVzIHJlcXVpcmVkIGZvciB0aGUgc2Vjb25kCiAqIGxheW91dC1wYXNzLgogKiBAcGFyYW0gIHtPYmplY3R9IGRvY1N0cnVjdHVyZSBkb2N1bWVudC1kZWZpbml0aW9uLW9iamVjdAogKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgICAgICBkb2N1bWVudC1tZWFzdXJlbWVudC1vYmplY3QKICovCkRvY01lYXN1cmUucHJvdG90eXBlLm1lYXN1cmVEb2N1bWVudCA9IGZ1bmN0aW9uIChkb2NTdHJ1Y3R1cmUpIHsKCXJldHVybiB0aGlzLm1lYXN1cmVOb2RlKGRvY1N0cnVjdHVyZSk7Cn07CgpEb2NNZWFzdXJlLnByb3RvdHlwZS5tZWFzdXJlTm9kZSA9IGZ1bmN0aW9uIChub2RlKSB7CgoJdmFyIHNlbGYgPSB0aGlzOwoKCXJldHVybiB0aGlzLnN0eWxlU3RhY2suYXV0byhub2RlLCBmdW5jdGlvbiAoKSB7CgkJLy8gVE9ETzogcmVmYWN0b3IgKyByZXRoaW5rIHdoZXRoZXIgdGhpcyBpcyB0aGUgcHJvcGVyIHdheSB0byBoYW5kbGUgbWFyZ2lucwoJCW5vZGUuX21hcmdpbiA9IGdldE5vZGVNYXJnaW4obm9kZSk7CgoJCWlmIChub2RlLmNvbHVtbnMpIHsKCQkJcmV0dXJuIGV4dGVuZE1hcmdpbnMoc2VsZi5tZWFzdXJlQ29sdW1ucyhub2RlKSk7CgkJfSBlbHNlIGlmIChub2RlLnN0YWNrKSB7CgkJCXJldHVybiBleHRlbmRNYXJnaW5zKHNlbGYubWVhc3VyZVZlcnRpY2FsQ29udGFpbmVyKG5vZGUpKTsKCQl9IGVsc2UgaWYgKG5vZGUudWwpIHsKCQkJcmV0dXJuIGV4dGVuZE1hcmdpbnMoc2VsZi5tZWFzdXJlVW5vcmRlcmVkTGlzdChub2RlKSk7CgkJfSBlbHNlIGlmIChub2RlLm9sKSB7CgkJCXJldHVybiBleHRlbmRNYXJnaW5zKHNlbGYubWVhc3VyZU9yZGVyZWRMaXN0KG5vZGUpKTsKCQl9IGVsc2UgaWYgKG5vZGUudGFibGUpIHsKCQkJcmV0dXJuIGV4dGVuZE1hcmdpbnMoc2VsZi5tZWFzdXJlVGFibGUobm9kZSkpOwoJCX0gZWxzZSBpZiAobm9kZS50ZXh0ICE9PSB1bmRlZmluZWQpIHsKCQkJcmV0dXJuIGV4dGVuZE1hcmdpbnMoc2VsZi5tZWFzdXJlTGVhZihub2RlKSk7CgkJfSBlbHNlIGlmIChub2RlLnRvYykgewoJCQlyZXR1cm4gZXh0ZW5kTWFyZ2lucyhzZWxmLm1lYXN1cmVUb2Mobm9kZSkpOwoJCX0gZWxzZSBpZiAobm9kZS5pbWFnZSkgewoJCQlyZXR1cm4gZXh0ZW5kTWFyZ2lucyhzZWxmLm1lYXN1cmVJbWFnZShub2RlKSk7CgkJfSBlbHNlIGlmIChub2RlLmNhbnZhcykgewoJCQlyZXR1cm4gZXh0ZW5kTWFyZ2lucyhzZWxmLm1lYXN1cmVDYW52YXMobm9kZSkpOwoJCX0gZWxzZSBpZiAobm9kZS5xcikgewoJCQlyZXR1cm4gZXh0ZW5kTWFyZ2lucyhzZWxmLm1lYXN1cmVRcihub2RlKSk7CgkJfSBlbHNlIHsKCQkJdGhyb3cgJ1VucmVjb2duaXplZCBkb2N1bWVudCBzdHJ1Y3R1cmU6ICcgKyBKU09OLnN0cmluZ2lmeShub2RlLCBmb250U3RyaW5naWZ5KTsKCQl9Cgl9KTsKCglmdW5jdGlvbiBleHRlbmRNYXJnaW5zKG5vZGUpIHsKCQl2YXIgbWFyZ2luID0gbm9kZS5fbWFyZ2luOwoKCQlpZiAobWFyZ2luKSB7CgkJCW5vZGUuX21pbldpZHRoICs9IG1hcmdpblswXSArIG1hcmdpblsyXTsKCQkJbm9kZS5fbWF4V2lkdGggKz0gbWFyZ2luWzBdICsgbWFyZ2luWzJdOwoJCX0KCgkJcmV0dXJuIG5vZGU7Cgl9CgoJZnVuY3Rpb24gZ2V0Tm9kZU1hcmdpbigpIHsKCgkJZnVuY3Rpb24gcHJvY2Vzc1NpbmdsZU1hcmdpbnMobm9kZSwgY3VycmVudE1hcmdpbikgewoJCQlpZiAobm9kZS5tYXJnaW5MZWZ0IHx8IG5vZGUubWFyZ2luVG9wIHx8IG5vZGUubWFyZ2luUmlnaHQgfHwgbm9kZS5tYXJnaW5Cb3R0b20pIHsKCQkJCXJldHVybiBbCgkJCQkJbm9kZS5tYXJnaW5MZWZ0IHx8IGN1cnJlbnRNYXJnaW5bMF0gfHwgMCwKCQkJCQlub2RlLm1hcmdpblRvcCB8fCBjdXJyZW50TWFyZ2luWzFdIHx8IDAsCgkJCQkJbm9kZS5tYXJnaW5SaWdodCB8fCBjdXJyZW50TWFyZ2luWzJdIHx8IDAsCgkJCQkJbm9kZS5tYXJnaW5Cb3R0b20gfHwgY3VycmVudE1hcmdpblszXSB8fCAwCgkJCQldOwoJCQl9CgkJCXJldHVybiBjdXJyZW50TWFyZ2luOwoJCX0KCgkJZnVuY3Rpb24gZmxhdHRlblN0eWxlQXJyYXkoc3R5bGVBcnJheSkgewoJCQl2YXIgZmxhdHRlbmVkU3R5bGVzID0ge307CgkJCWZvciAodmFyIGkgPSBzdHlsZUFycmF5Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CgkJCQl2YXIgc3R5bGVOYW1lID0gc3R5bGVBcnJheVtpXTsKCQkJCXZhciBzdHlsZSA9IHNlbGYuc3R5bGVTdGFjay5zdHlsZURpY3Rpb25hcnlbc3R5bGVOYW1lXTsKCQkJCWZvciAodmFyIGtleSBpbiBzdHlsZSkgewoJCQkJCWlmIChzdHlsZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7CgkJCQkJCWZsYXR0ZW5lZFN0eWxlc1trZXldID0gc3R5bGVba2V5XTsKCQkJCQl9CgkJCQl9CgkJCX0KCQkJcmV0dXJuIGZsYXR0ZW5lZFN0eWxlczsKCQl9CgoJCWZ1bmN0aW9uIGNvbnZlcnRNYXJnaW4obWFyZ2luKSB7CgkJCWlmIChpc051bWJlcihtYXJnaW4pKSB7CgkJCQltYXJnaW4gPSBbbWFyZ2luLCBtYXJnaW4sIG1hcmdpbiwgbWFyZ2luXTsKCQkJfSBlbHNlIGlmIChpc0FycmF5KG1hcmdpbikpIHsKCQkJCWlmIChtYXJnaW4ubGVuZ3RoID09PSAyKSB7CgkJCQkJbWFyZ2luID0gW21hcmdpblswXSwgbWFyZ2luWzFdLCBtYXJnaW5bMF0sIG1hcmdpblsxXV07CgkJCQl9CgkJCX0KCQkJcmV0dXJuIG1hcmdpbjsKCQl9CgoJCXZhciBtYXJnaW4gPSBbdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkXTsKCgkJaWYgKG5vZGUuc3R5bGUpIHsKCQkJdmFyIHN0eWxlQXJyYXkgPSBpc0FycmF5KG5vZGUuc3R5bGUpID8gbm9kZS5zdHlsZSA6IFtub2RlLnN0eWxlXTsKCQkJdmFyIGZsYXR0ZW5lZFN0eWxlQXJyYXkgPSBmbGF0dGVuU3R5bGVBcnJheShzdHlsZUFycmF5KTsKCgkJCWlmIChmbGF0dGVuZWRTdHlsZUFycmF5KSB7CgkJCQltYXJnaW4gPSBwcm9jZXNzU2luZ2xlTWFyZ2lucyhmbGF0dGVuZWRTdHlsZUFycmF5LCBtYXJnaW4pOwoJCQl9CgoJCQlpZiAoZmxhdHRlbmVkU3R5bGVBcnJheS5tYXJnaW4pIHsKCQkJCW1hcmdpbiA9IGNvbnZlcnRNYXJnaW4oZmxhdHRlbmVkU3R5bGVBcnJheS5tYXJnaW4pOwoJCQl9CgkJfQoKCQltYXJnaW4gPSBwcm9jZXNzU2luZ2xlTWFyZ2lucyhub2RlLCBtYXJnaW4pOwoKCQlpZiAobm9kZS5tYXJnaW4pIHsKCQkJbWFyZ2luID0gY29udmVydE1hcmdpbihub2RlLm1hcmdpbik7CgkJfQoKCQlpZiAobWFyZ2luWzBdID09PSB1bmRlZmluZWQgJiYgbWFyZ2luWzFdID09PSB1bmRlZmluZWQgJiYgbWFyZ2luWzJdID09PSB1bmRlZmluZWQgJiYgbWFyZ2luWzNdID09PSB1bmRlZmluZWQpIHsKCQkJcmV0dXJuIG51bGw7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIG1hcmdpbjsKCQl9Cgl9Cn07CgpEb2NNZWFzdXJlLnByb3RvdHlwZS5jb252ZXJ0SWZCYXNlNjRJbWFnZSA9IGZ1bmN0aW9uIChub2RlKSB7CglpZiAoL15kYXRhOmltYWdlXC8oanBlZ3xqcGd8cG5nKTtiYXNlNjQsLy50ZXN0KG5vZGUuaW1hZ2UpKSB7CgkJdmFyIGxhYmVsID0gJyQkcGRmbWFrZSQkJyArIHRoaXMuYXV0b0ltYWdlSW5kZXgrKzsKCQl0aGlzLmltYWdlc1tsYWJlbF0gPSBub2RlLmltYWdlOwoJCW5vZGUuaW1hZ2UgPSBsYWJlbDsKCX0KfTsKCkRvY01lYXN1cmUucHJvdG90eXBlLm1lYXN1cmVJbWFnZSA9IGZ1bmN0aW9uIChub2RlKSB7CglpZiAodGhpcy5pbWFnZXMpIHsKCQl0aGlzLmNvbnZlcnRJZkJhc2U2NEltYWdlKG5vZGUpOwoJfQoKCXZhciBpbWFnZVNpemUgPSB0aGlzLmltYWdlTWVhc3VyZS5tZWFzdXJlSW1hZ2Uobm9kZS5pbWFnZSk7CgoJaWYgKG5vZGUuZml0KSB7CgkJdmFyIGZhY3RvciA9IChpbWFnZVNpemUud2lkdGggLyBpbWFnZVNpemUuaGVpZ2h0ID4gbm9kZS5maXRbMF0gLyBub2RlLmZpdFsxXSkgPyBub2RlLmZpdFswXSAvIGltYWdlU2l6ZS53aWR0aCA6IG5vZGUuZml0WzFdIC8gaW1hZ2VTaXplLmhlaWdodDsKCQlub2RlLl93aWR0aCA9IG5vZGUuX21pbldpZHRoID0gbm9kZS5fbWF4V2lkdGggPSBpbWFnZVNpemUud2lkdGggKiBmYWN0b3I7CgkJbm9kZS5faGVpZ2h0ID0gaW1hZ2VTaXplLmhlaWdodCAqIGZhY3RvcjsKCX0gZWxzZSB7CgkJbm9kZS5fd2lkdGggPSBub2RlLl9taW5XaWR0aCA9IG5vZGUuX21heFdpZHRoID0gbm9kZS53aWR0aCB8fCBpbWFnZVNpemUud2lkdGg7CgkJbm9kZS5faGVpZ2h0ID0gbm9kZS5oZWlnaHQgfHwgKGltYWdlU2l6ZS5oZWlnaHQgKiBub2RlLl93aWR0aCAvIGltYWdlU2l6ZS53aWR0aCk7CgoJCWlmIChpc051bWJlcihub2RlLm1heFdpZHRoKSAmJiBub2RlLm1heFdpZHRoIDwgbm9kZS5fd2lkdGgpIHsKCQkJbm9kZS5fd2lkdGggPSBub2RlLl9taW5XaWR0aCA9IG5vZGUuX21heFdpZHRoID0gbm9kZS5tYXhXaWR0aDsKCQkJbm9kZS5faGVpZ2h0ID0gbm9kZS5fd2lkdGggKiBpbWFnZVNpemUuaGVpZ2h0IC8gaW1hZ2VTaXplLndpZHRoOwoJCX0KCgkJaWYgKGlzTnVtYmVyKG5vZGUubWF4SGVpZ2h0KSAmJiBub2RlLm1heEhlaWdodCA8IG5vZGUuX2hlaWdodCkgewoJCQlub2RlLl9oZWlnaHQgPSBub2RlLm1heEhlaWdodDsKCQkJbm9kZS5fd2lkdGggPSBub2RlLl9taW5XaWR0aCA9IG5vZGUuX21heFdpZHRoID0gbm9kZS5faGVpZ2h0ICogaW1hZ2VTaXplLndpZHRoIC8gaW1hZ2VTaXplLmhlaWdodDsKCQl9CgoJCWlmIChpc051bWJlcihub2RlLm1pbldpZHRoKSAmJiBub2RlLm1pbldpZHRoID4gbm9kZS5fd2lkdGgpIHsKCQkJbm9kZS5fd2lkdGggPSBub2RlLl9taW5XaWR0aCA9IG5vZGUuX21heFdpZHRoID0gbm9kZS5taW5XaWR0aDsKCQkJbm9kZS5faGVpZ2h0ID0gbm9kZS5fd2lkdGggKiBpbWFnZVNpemUuaGVpZ2h0IC8gaW1hZ2VTaXplLndpZHRoOwoJCX0KCgkJaWYgKGlzTnVtYmVyKG5vZGUubWluSGVpZ2h0KSAmJiBub2RlLm1pbkhlaWdodCA+IG5vZGUuX2hlaWdodCkgewoJCQlub2RlLl9oZWlnaHQgPSBub2RlLm1pbkhlaWdodDsKCQkJbm9kZS5fd2lkdGggPSBub2RlLl9taW5XaWR0aCA9IG5vZGUuX21heFdpZHRoID0gbm9kZS5faGVpZ2h0ICogaW1hZ2VTaXplLndpZHRoIC8gaW1hZ2VTaXplLmhlaWdodDsKCQl9Cgl9CgoJbm9kZS5fYWxpZ25tZW50ID0gdGhpcy5zdHlsZVN0YWNrLmdldFByb3BlcnR5KCdhbGlnbm1lbnQnKTsKCXJldHVybiBub2RlOwp9OwoKRG9jTWVhc3VyZS5wcm90b3R5cGUubWVhc3VyZUxlYWYgPSBmdW5jdGlvbiAobm9kZSkgewoKCWlmIChub2RlLl90ZXh0UmVmICYmIG5vZGUuX3RleHRSZWYuX25vZGVSZWYudGV4dCkgewoJCW5vZGUudGV4dCA9IG5vZGUuX3RleHRSZWYuX25vZGVSZWYudGV4dDsKCX0KCgkvLyBNYWtlIHN1cmUgc3R5bGUgcHJvcGVydGllcyBvZiB0aGUgbm9kZSBpdHNlbGYgYXJlIGNvbnNpZGVyZWQgd2hlbiBidWlsZGluZyBpbmxpbmVzLgoJLy8gV2UgY291bGQgYWxzbyBqdXN0IHBhc3MgW25vZGVdIHRvIGJ1aWxkSW5saW5lcywgYnV0IHRoYXQgZmFpbHMgZm9yIGJ1bGxldCBwb2ludHMuCgl2YXIgc3R5bGVTdGFjayA9IHRoaXMuc3R5bGVTdGFjay5jbG9uZSgpOwoJc3R5bGVTdGFjay5wdXNoKG5vZGUpOwoKCXZhciBkYXRhID0gdGhpcy50ZXh0VG9vbHMuYnVpbGRJbmxpbmVzKG5vZGUudGV4dCwgc3R5bGVTdGFjayk7CgoJbm9kZS5faW5saW5lcyA9IGRhdGEuaXRlbXM7Cglub2RlLl9taW5XaWR0aCA9IGRhdGEubWluV2lkdGg7Cglub2RlLl9tYXhXaWR0aCA9IGRhdGEubWF4V2lkdGg7CgoJcmV0dXJuIG5vZGU7Cn07CgpEb2NNZWFzdXJlLnByb3RvdHlwZS5tZWFzdXJlVG9jID0gZnVuY3Rpb24gKG5vZGUpIHsKCWlmIChub2RlLnRvYy50aXRsZSkgewoJCW5vZGUudG9jLnRpdGxlID0gdGhpcy5tZWFzdXJlTm9kZShub2RlLnRvYy50aXRsZSk7Cgl9CgoJdmFyIGJvZHkgPSBbXTsKCXZhciB0ZXh0U3R5bGUgPSBub2RlLnRvYy50ZXh0U3R5bGUgfHwge307Cgl2YXIgbnVtYmVyU3R5bGUgPSBub2RlLnRvYy5udW1iZXJTdHlsZSB8fCB0ZXh0U3R5bGU7Cgl2YXIgdGV4dE1hcmdpbiA9IG5vZGUudG9jLnRleHRNYXJnaW4gfHwgWzAsIDAsIDAsIDBdOwoJZm9yICh2YXIgaSA9IDAsIGwgPSBub2RlLnRvYy5faXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJdmFyIGl0ZW0gPSBub2RlLnRvYy5faXRlbXNbaV07CgkJdmFyIGxpbmVTdHlsZSA9IG5vZGUudG9jLl9pdGVtc1tpXS50b2NTdHlsZSB8fCB0ZXh0U3R5bGU7CgkJdmFyIGxpbmVNYXJnaW4gPSBub2RlLnRvYy5faXRlbXNbaV0udG9jTWFyZ2luIHx8IHRleHRNYXJnaW47CgkJYm9keS5wdXNoKFsKCQkJe3RleHQ6IGl0ZW0udGV4dCwgYWxpZ25tZW50OiAnbGVmdCcsIHN0eWxlOiBsaW5lU3R5bGUsIG1hcmdpbjogbGluZU1hcmdpbn0sCgkJCXt0ZXh0OiAnMDAwMDAnLCBhbGlnbm1lbnQ6ICdyaWdodCcsIF90b2NJdGVtUmVmOiBpdGVtLCBzdHlsZTogbnVtYmVyU3R5bGUsIG1hcmdpbjogWzAsIGxpbmVNYXJnaW5bMV0sIDAsIGxpbmVNYXJnaW5bM11dfQoJCV0pOwoJfQoKCglub2RlLnRvYy5fdGFibGUgPSB7CgkJdGFibGU6IHsKCQkJZG9udEJyZWFrUm93czogdHJ1ZSwKCQkJd2lkdGhzOiBbJyonLCAnYXV0byddLAoJCQlib2R5OiBib2R5CgkJfSwKCQlsYXlvdXQ6ICdub0JvcmRlcnMnCgl9OwoKCW5vZGUudG9jLl90YWJsZSA9IHRoaXMubWVhc3VyZU5vZGUobm9kZS50b2MuX3RhYmxlKTsKCglyZXR1cm4gbm9kZTsKfTsKCkRvY01lYXN1cmUucHJvdG90eXBlLm1lYXN1cmVWZXJ0aWNhbENvbnRhaW5lciA9IGZ1bmN0aW9uIChub2RlKSB7Cgl2YXIgaXRlbXMgPSBub2RlLnN0YWNrOwoKCW5vZGUuX21pbldpZHRoID0gMDsKCW5vZGUuX21heFdpZHRoID0gMDsKCglmb3IgKHZhciBpID0gMCwgbCA9IGl0ZW1zLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCWl0ZW1zW2ldID0gdGhpcy5tZWFzdXJlTm9kZShpdGVtc1tpXSk7CgoJCW5vZGUuX21pbldpZHRoID0gTWF0aC5tYXgobm9kZS5fbWluV2lkdGgsIGl0ZW1zW2ldLl9taW5XaWR0aCk7CgkJbm9kZS5fbWF4V2lkdGggPSBNYXRoLm1heChub2RlLl9tYXhXaWR0aCwgaXRlbXNbaV0uX21heFdpZHRoKTsKCX0KCglyZXR1cm4gbm9kZTsKfTsKCkRvY01lYXN1cmUucHJvdG90eXBlLmdhcFNpemVGb3JMaXN0ID0gZnVuY3Rpb24gKCkgewoJcmV0dXJuIHRoaXMudGV4dFRvb2xzLnNpemVPZlN0cmluZygnOS4gJywgdGhpcy5zdHlsZVN0YWNrKTsKfTsKCkRvY01lYXN1cmUucHJvdG90eXBlLmJ1aWxkVW5vcmRlcmVkTWFya2VyID0gZnVuY3Rpb24gKHN0eWxlU3RhY2ssIGdhcFNpemUsIHR5cGUpIHsKCWZ1bmN0aW9uIGJ1aWxkRGlzYyhnYXBTaXplLCBjb2xvcikgewoJCS8vIFRPRE86IGFzY2VuZGVyLWJhc2VkIGNhbGN1bGF0aW9ucwoJCXZhciByYWRpdXMgPSBnYXBTaXplLmZvbnRTaXplIC8gNjsKCQlyZXR1cm4gewoJCQljYW52YXM6IFt7CgkJCQkJeDogcmFkaXVzLAoJCQkJCXk6IChnYXBTaXplLmhlaWdodCAvIGdhcFNpemUubGluZUhlaWdodCkgKyBnYXBTaXplLmRlc2NlbmRlciAtIGdhcFNpemUuZm9udFNpemUgLyAzLAoJCQkJCXIxOiByYWRpdXMsCgkJCQkJcjI6IHJhZGl1cywKCQkJCQl0eXBlOiAnZWxsaXBzZScsCgkJCQkJY29sb3I6IGNvbG9yCgkJCQl9XQoJCX07Cgl9CgoJZnVuY3Rpb24gYnVpbGRTcXVhcmUoZ2FwU2l6ZSwgY29sb3IpIHsKCQkvLyBUT0RPOiBhc2NlbmRlci1iYXNlZCBjYWxjdWxhdGlvbnMKCQl2YXIgc2l6ZSA9IGdhcFNpemUuZm9udFNpemUgLyAzOwoJCXJldHVybiB7CgkJCWNhbnZhczogW3sKCQkJCQl4OiAwLAoJCQkJCXk6IChnYXBTaXplLmhlaWdodCAvIGdhcFNpemUubGluZUhlaWdodCkgKyBnYXBTaXplLmRlc2NlbmRlciAtIChnYXBTaXplLmZvbnRTaXplIC8gMykgLSAoc2l6ZSAvIDIpLAoJCQkJCWg6IHNpemUsCgkJCQkJdzogc2l6ZSwKCQkJCQl0eXBlOiAncmVjdCcsCgkJCQkJY29sb3I6IGNvbG9yCgkJCQl9XQoJCX07Cgl9CgoJZnVuY3Rpb24gYnVpbGRDaXJjbGUoZ2FwU2l6ZSwgY29sb3IpIHsKCQkvLyBUT0RPOiBhc2NlbmRlci1iYXNlZCBjYWxjdWxhdGlvbnMKCQl2YXIgcmFkaXVzID0gZ2FwU2l6ZS5mb250U2l6ZSAvIDY7CgkJcmV0dXJuIHsKCQkJY2FudmFzOiBbewoJCQkJCXg6IHJhZGl1cywKCQkJCQl5OiAoZ2FwU2l6ZS5oZWlnaHQgLyBnYXBTaXplLmxpbmVIZWlnaHQpICsgZ2FwU2l6ZS5kZXNjZW5kZXIgLSBnYXBTaXplLmZvbnRTaXplIC8gMywKCQkJCQlyMTogcmFkaXVzLAoJCQkJCXIyOiByYWRpdXMsCgkJCQkJdHlwZTogJ2VsbGlwc2UnLAoJCQkJCWxpbmVDb2xvcjogY29sb3IKCQkJCX1dCgkJfTsKCX0KCgl2YXIgbWFya2VyOwoJdmFyIGNvbG9yID0gc3R5bGVTdGFjay5nZXRQcm9wZXJ0eSgnbWFya2VyQ29sb3InKSB8fCBzdHlsZVN0YWNrLmdldFByb3BlcnR5KCdjb2xvcicpIHx8ICdibGFjayc7CgoJc3dpdGNoICh0eXBlKSB7CgkJY2FzZSAnY2lyY2xlJzoKCQkJbWFya2VyID0gYnVpbGRDaXJjbGUoZ2FwU2l6ZSwgY29sb3IpOwoJCQlicmVhazsKCgkJY2FzZSAnc3F1YXJlJzoKCQkJbWFya2VyID0gYnVpbGRTcXVhcmUoZ2FwU2l6ZSwgY29sb3IpOwoJCQlicmVhazsKCgkJY2FzZSAnbm9uZSc6CgkJCW1hcmtlciA9IHt9OwoJCQlicmVhazsKCgkJY2FzZSAnZGlzYyc6CgkJZGVmYXVsdDoKCQkJbWFya2VyID0gYnVpbGREaXNjKGdhcFNpemUsIGNvbG9yKTsKCQkJYnJlYWs7Cgl9CgoJbWFya2VyLl9taW5XaWR0aCA9IG1hcmtlci5fbWF4V2lkdGggPSBnYXBTaXplLndpZHRoOwoJbWFya2VyLl9taW5IZWlnaHQgPSBtYXJrZXIuX21heEhlaWdodCA9IGdhcFNpemUuaGVpZ2h0OwoKCXJldHVybiBtYXJrZXI7Cn07CgpEb2NNZWFzdXJlLnByb3RvdHlwZS5idWlsZE9yZGVyZWRNYXJrZXIgPSBmdW5jdGlvbiAoY291bnRlciwgc3R5bGVTdGFjaywgdHlwZSwgc2VwYXJhdG9yKSB7CglmdW5jdGlvbiBwcmVwYXJlQWxwaGEoY291bnRlcikgewoJCWZ1bmN0aW9uIHRvQWxwaGEobnVtKSB7CgkJCXJldHVybiAobnVtID49IDI2ID8gdG9BbHBoYSgobnVtIC8gMjYgPj4gMCkgLSAxKSA6ICcnKSArICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidbbnVtICUgMjYgPj4gMF07CgkJfQoKCQlpZiAoY291bnRlciA8IDEpIHsKCQkJcmV0dXJuIGNvdW50ZXIudG9TdHJpbmcoKTsKCQl9CgoJCXJldHVybiB0b0FscGhhKGNvdW50ZXIgLSAxKTsKCX0KCglmdW5jdGlvbiBwcmVwYXJlUm9tYW4oY291bnRlcikgewoJCWlmIChjb3VudGVyIDwgMSB8fCBjb3VudGVyID4gNDk5OSkgewoJCQlyZXR1cm4gY291bnRlci50b1N0cmluZygpOwoJCX0KCQl2YXIgbnVtID0gY291bnRlcjsKCQl2YXIgbG9va3VwID0ge006IDEwMDAsIENNOiA5MDAsIEQ6IDUwMCwgQ0Q6IDQwMCwgQzogMTAwLCBYQzogOTAsIEw6IDUwLCBYTDogNDAsIFg6IDEwLCBJWDogOSwgVjogNSwgSVY6IDQsIEk6IDF9LCByb21hbiA9ICcnLCBpOwoJCWZvciAoaSBpbiBsb29rdXApIHsKCQkJd2hpbGUgKG51bSA+PSBsb29rdXBbaV0pIHsKCQkJCXJvbWFuICs9IGk7CgkJCQludW0gLT0gbG9va3VwW2ldOwoJCQl9CgkJfQoJCXJldHVybiByb21hbjsKCX0KCglmdW5jdGlvbiBwcmVwYXJlRGVjaW1hbChjb3VudGVyKSB7CgkJcmV0dXJuIGNvdW50ZXIudG9TdHJpbmcoKTsKCX0KCgl2YXIgY291bnRlclRleHQ7Cglzd2l0Y2ggKHR5cGUpIHsKCQljYXNlICdub25lJzoKCQkJY291bnRlclRleHQgPSBudWxsOwoJCQlicmVhazsKCgkJY2FzZSAndXBwZXItYWxwaGEnOgoJCQljb3VudGVyVGV4dCA9IHByZXBhcmVBbHBoYShjb3VudGVyKS50b1VwcGVyQ2FzZSgpOwoJCQlicmVhazsKCgkJY2FzZSAnbG93ZXItYWxwaGEnOgoJCQljb3VudGVyVGV4dCA9IHByZXBhcmVBbHBoYShjb3VudGVyKTsKCQkJYnJlYWs7CgoJCWNhc2UgJ3VwcGVyLXJvbWFuJzoKCQkJY291bnRlclRleHQgPSBwcmVwYXJlUm9tYW4oY291bnRlcik7CgkJCWJyZWFrOwoKCQljYXNlICdsb3dlci1yb21hbic6CgkJCWNvdW50ZXJUZXh0ID0gcHJlcGFyZVJvbWFuKGNvdW50ZXIpLnRvTG93ZXJDYXNlKCk7CgkJCWJyZWFrOwoKCQljYXNlICdkZWNpbWFsJzoKCQlkZWZhdWx0OgoJCQljb3VudGVyVGV4dCA9IHByZXBhcmVEZWNpbWFsKGNvdW50ZXIpOwoJCQlicmVhazsKCX0KCglpZiAoY291bnRlclRleHQgPT09IG51bGwpIHsKCQlyZXR1cm4ge307Cgl9CgoJaWYgKHNlcGFyYXRvcikgewoJCWlmIChpc0FycmF5KHNlcGFyYXRvcikpIHsKCQkJaWYgKHNlcGFyYXRvclswXSkgewoJCQkJY291bnRlclRleHQgPSBzZXBhcmF0b3JbMF0gKyBjb3VudGVyVGV4dDsKCQkJfQoKCQkJaWYgKHNlcGFyYXRvclsxXSkgewoJCQkJY291bnRlclRleHQgKz0gc2VwYXJhdG9yWzFdOwoJCQl9CgkJCWNvdW50ZXJUZXh0ICs9ICcgJzsKCQl9IGVsc2UgewoJCQljb3VudGVyVGV4dCArPSBzZXBhcmF0b3IgKyAnICc7CgkJfQoJfQoKCXZhciB0ZXh0QXJyYXkgPSB7dGV4dDogY291bnRlclRleHR9OwoJdmFyIG1hcmtlckNvbG9yID0gc3R5bGVTdGFjay5nZXRQcm9wZXJ0eSgnbWFya2VyQ29sb3InKTsKCWlmIChtYXJrZXJDb2xvcikgewoJCXRleHRBcnJheS5jb2xvciA9IG1hcmtlckNvbG9yOwoJfQoKCXJldHVybiB7X2lubGluZXM6IHRoaXMudGV4dFRvb2xzLmJ1aWxkSW5saW5lcyh0ZXh0QXJyYXksIHN0eWxlU3RhY2spLml0ZW1zfTsKfTsKCkRvY01lYXN1cmUucHJvdG90eXBlLm1lYXN1cmVVbm9yZGVyZWRMaXN0ID0gZnVuY3Rpb24gKG5vZGUpIHsKCXZhciBzdHlsZSA9IHRoaXMuc3R5bGVTdGFjay5jbG9uZSgpOwoJdmFyIGl0ZW1zID0gbm9kZS51bDsKCW5vZGUudHlwZSA9IG5vZGUudHlwZSB8fCAnZGlzYyc7Cglub2RlLl9nYXBTaXplID0gdGhpcy5nYXBTaXplRm9yTGlzdCgpOwoJbm9kZS5fbWluV2lkdGggPSAwOwoJbm9kZS5fbWF4V2lkdGggPSAwOwoKCWZvciAodmFyIGkgPSAwLCBsID0gaXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJdmFyIGl0ZW0gPSBpdGVtc1tpXSA9IHRoaXMubWVhc3VyZU5vZGUoaXRlbXNbaV0pOwoKCQlpZiAoIWl0ZW0ub2wgJiYgIWl0ZW0udWwpIHsKCQkJaXRlbS5saXN0TWFya2VyID0gdGhpcy5idWlsZFVub3JkZXJlZE1hcmtlcihzdHlsZSwgbm9kZS5fZ2FwU2l6ZSwgaXRlbS5saXN0VHlwZSB8fCBub2RlLnR5cGUpOwoJCX0KCgkJbm9kZS5fbWluV2lkdGggPSBNYXRoLm1heChub2RlLl9taW5XaWR0aCwgaXRlbXNbaV0uX21pbldpZHRoICsgbm9kZS5fZ2FwU2l6ZS53aWR0aCk7CgkJbm9kZS5fbWF4V2lkdGggPSBNYXRoLm1heChub2RlLl9tYXhXaWR0aCwgaXRlbXNbaV0uX21heFdpZHRoICsgbm9kZS5fZ2FwU2l6ZS53aWR0aCk7Cgl9CgoJcmV0dXJuIG5vZGU7Cn07CgpEb2NNZWFzdXJlLnByb3RvdHlwZS5tZWFzdXJlT3JkZXJlZExpc3QgPSBmdW5jdGlvbiAobm9kZSkgewoJdmFyIHN0eWxlID0gdGhpcy5zdHlsZVN0YWNrLmNsb25lKCk7Cgl2YXIgaXRlbXMgPSBub2RlLm9sOwoJbm9kZS50eXBlID0gbm9kZS50eXBlIHx8ICdkZWNpbWFsJzsKCW5vZGUuc2VwYXJhdG9yID0gbm9kZS5zZXBhcmF0b3IgfHwgJy4nOwoJbm9kZS5yZXZlcnNlZCA9IG5vZGUucmV2ZXJzZWQgfHwgZmFsc2U7CglpZiAoIW5vZGUuc3RhcnQpIHsKCQlub2RlLnN0YXJ0ID0gbm9kZS5yZXZlcnNlZCA/IGl0ZW1zLmxlbmd0aCA6IDE7Cgl9Cglub2RlLl9nYXBTaXplID0gdGhpcy5nYXBTaXplRm9yTGlzdCgpOwoJbm9kZS5fbWluV2lkdGggPSAwOwoJbm9kZS5fbWF4V2lkdGggPSAwOwoKCXZhciBjb3VudGVyID0gbm9kZS5zdGFydDsKCWZvciAodmFyIGkgPSAwLCBsID0gaXRlbXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJdmFyIGl0ZW0gPSBpdGVtc1tpXSA9IHRoaXMubWVhc3VyZU5vZGUoaXRlbXNbaV0pOwoKCQlpZiAoIWl0ZW0ub2wgJiYgIWl0ZW0udWwpIHsKCQkJaXRlbS5saXN0TWFya2VyID0gdGhpcy5idWlsZE9yZGVyZWRNYXJrZXIoaXRlbS5jb3VudGVyIHx8IGNvdW50ZXIsIHN0eWxlLCBpdGVtLmxpc3RUeXBlIHx8IG5vZGUudHlwZSwgbm9kZS5zZXBhcmF0b3IpOwoJCQlpZiAoaXRlbS5saXN0TWFya2VyLl9pbmxpbmVzKSB7CgkJCQlub2RlLl9nYXBTaXplLndpZHRoID0gTWF0aC5tYXgobm9kZS5fZ2FwU2l6ZS53aWR0aCwgaXRlbS5saXN0TWFya2VyLl9pbmxpbmVzWzBdLndpZHRoKTsKCQkJfQoJCX0gIC8vIFRPRE86IGVsc2UgLSBuZXN0ZWQgbGlzdHMgbnVtYmVyaW5nCgoJCW5vZGUuX21pbldpZHRoID0gTWF0aC5tYXgobm9kZS5fbWluV2lkdGgsIGl0ZW1zW2ldLl9taW5XaWR0aCk7CgkJbm9kZS5fbWF4V2lkdGggPSBNYXRoLm1heChub2RlLl9tYXhXaWR0aCwgaXRlbXNbaV0uX21heFdpZHRoKTsKCgkJaWYgKG5vZGUucmV2ZXJzZWQpIHsKCQkJY291bnRlci0tOwoJCX0gZWxzZSB7CgkJCWNvdW50ZXIrKzsKCQl9Cgl9CgoJbm9kZS5fbWluV2lkdGggKz0gbm9kZS5fZ2FwU2l6ZS53aWR0aDsKCW5vZGUuX21heFdpZHRoICs9IG5vZGUuX2dhcFNpemUud2lkdGg7CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBpdGVtcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQl2YXIgaXRlbSA9IGl0ZW1zW2ldOwoJCWlmICghaXRlbS5vbCAmJiAhaXRlbS51bCkgewoJCQlpdGVtLmxpc3RNYXJrZXIuX21pbldpZHRoID0gaXRlbS5saXN0TWFya2VyLl9tYXhXaWR0aCA9IG5vZGUuX2dhcFNpemUud2lkdGg7CgkJfQoJfQoKCXJldHVybiBub2RlOwp9OwoKRG9jTWVhc3VyZS5wcm90b3R5cGUubWVhc3VyZUNvbHVtbnMgPSBmdW5jdGlvbiAobm9kZSkgewoJdmFyIGNvbHVtbnMgPSBub2RlLmNvbHVtbnM7Cglub2RlLl9nYXAgPSB0aGlzLnN0eWxlU3RhY2suZ2V0UHJvcGVydHkoJ2NvbHVtbkdhcCcpIHx8IDA7CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBjb2x1bW5zLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCWNvbHVtbnNbaV0gPSB0aGlzLm1lYXN1cmVOb2RlKGNvbHVtbnNbaV0pOwoJfQoKCXZhciBtZWFzdXJlcyA9IENvbHVtbkNhbGN1bGF0b3IubWVhc3VyZU1pbk1heChjb2x1bW5zKTsKCgl2YXIgbnVtR2FwcyA9IChjb2x1bW5zLmxlbmd0aCA+IDApID8gKGNvbHVtbnMubGVuZ3RoIC0gMSkgOiAwOwoJbm9kZS5fbWluV2lkdGggPSBtZWFzdXJlcy5taW4gKyBub2RlLl9nYXAgKiBudW1HYXBzOwoJbm9kZS5fbWF4V2lkdGggPSBtZWFzdXJlcy5tYXggKyBub2RlLl9nYXAgKiBudW1HYXBzOwoKCXJldHVybiBub2RlOwp9OwoKRG9jTWVhc3VyZS5wcm90b3R5cGUubWVhc3VyZVRhYmxlID0gZnVuY3Rpb24gKG5vZGUpIHsKCWV4dGVuZFRhYmxlV2lkdGhzKG5vZGUpOwoJbm9kZS5fbGF5b3V0ID0gZ2V0TGF5b3V0KHRoaXMudGFibGVMYXlvdXRzKTsKCW5vZGUuX29mZnNldHMgPSBnZXRPZmZzZXRzKG5vZGUuX2xheW91dCk7CgoJdmFyIGNvbFNwYW5zID0gW107Cgl2YXIgY29sLCByb3csIGNvbHMsIHJvd3M7CgoJZm9yIChjb2wgPSAwLCBjb2xzID0gbm9kZS50YWJsZS5ib2R5WzBdLmxlbmd0aDsgY29sIDwgY29sczsgY29sKyspIHsKCQl2YXIgYyA9IG5vZGUudGFibGUud2lkdGhzW2NvbF07CgkJYy5fbWluV2lkdGggPSAwOwoJCWMuX21heFdpZHRoID0gMDsKCgkJZm9yIChyb3cgPSAwLCByb3dzID0gbm9kZS50YWJsZS5ib2R5Lmxlbmd0aDsgcm93IDwgcm93czsgcm93KyspIHsKCQkJdmFyIHJvd0RhdGEgPSBub2RlLnRhYmxlLmJvZHlbcm93XTsKCQkJdmFyIGRhdGEgPSByb3dEYXRhW2NvbF07CgkJCWlmIChkYXRhID09PSB1bmRlZmluZWQpIHsKCQkJCWNvbnNvbGUuZXJyb3IoJ01hbGZvcm1lZCB0YWJsZSByb3cgJywgcm93RGF0YSwgJ2luIG5vZGUgJywgbm9kZSk7CgkJCQl0aHJvdyAnTWFsZm9ybWVkIHRhYmxlIHJvdywgYSBjZWxsIGlzIHVuZGVmaW5lZC4nOwoJCQl9CgkJCWlmIChkYXRhID09PSBudWxsKSB7IC8vIHRyYW5zZm9ybSB0byBvYmplY3QKCQkJCWRhdGEgPSAnJzsKCQkJfQoKCQkJaWYgKCFkYXRhLl9zcGFuKSB7CgkJCQlkYXRhID0gcm93RGF0YVtjb2xdID0gdGhpcy5zdHlsZVN0YWNrLmF1dG8oZGF0YSwgbWVhc3VyZUNiKHRoaXMsIGRhdGEpKTsKCgkJCQlpZiAoZGF0YS5jb2xTcGFuICYmIGRhdGEuY29sU3BhbiA+IDEpIHsKCQkJCQltYXJrU3BhbnMocm93RGF0YSwgY29sLCBkYXRhLmNvbFNwYW4pOwoJCQkJCWNvbFNwYW5zLnB1c2goe2NvbDogY29sLCBzcGFuOiBkYXRhLmNvbFNwYW4sIG1pbldpZHRoOiBkYXRhLl9taW5XaWR0aCwgbWF4V2lkdGg6IGRhdGEuX21heFdpZHRofSk7CgkJCQl9IGVsc2UgewoJCQkJCWMuX21pbldpZHRoID0gTWF0aC5tYXgoYy5fbWluV2lkdGgsIGRhdGEuX21pbldpZHRoKTsKCQkJCQljLl9tYXhXaWR0aCA9IE1hdGgubWF4KGMuX21heFdpZHRoLCBkYXRhLl9tYXhXaWR0aCk7CgkJCQl9CgkJCX0KCgkJCWlmIChkYXRhLnJvd1NwYW4gJiYgZGF0YS5yb3dTcGFuID4gMSkgewoJCQkJbWFya1ZTcGFucyhub2RlLnRhYmxlLCByb3csIGNvbCwgZGF0YS5yb3dTcGFuKTsKCQkJfQoJCX0KCX0KCglleHRlbmRXaWR0aHNGb3JDb2xTcGFucygpOwoKCXZhciBtZWFzdXJlcyA9IENvbHVtbkNhbGN1bGF0b3IubWVhc3VyZU1pbk1heChub2RlLnRhYmxlLndpZHRocyk7CgoJbm9kZS5fbWluV2lkdGggPSBtZWFzdXJlcy5taW4gKyBub2RlLl9vZmZzZXRzLnRvdGFsOwoJbm9kZS5fbWF4V2lkdGggPSBtZWFzdXJlcy5tYXggKyBub2RlLl9vZmZzZXRzLnRvdGFsOwoKCXJldHVybiBub2RlOwoKCWZ1bmN0aW9uIG1lYXN1cmVDYihfdGhpcywgZGF0YSkgewoJCXJldHVybiBmdW5jdGlvbiAoKSB7CgkJCWlmIChpc09iamVjdChkYXRhKSkgewoJCQkJZGF0YS5maWxsQ29sb3IgPSBfdGhpcy5zdHlsZVN0YWNrLmdldFByb3BlcnR5KCdmaWxsQ29sb3InKTsKCQkJfQoJCQlyZXR1cm4gX3RoaXMubWVhc3VyZU5vZGUoZGF0YSk7CgkJfTsKCX0KCglmdW5jdGlvbiBnZXRMYXlvdXQodGFibGVMYXlvdXRzKSB7CgkJdmFyIGxheW91dCA9IG5vZGUubGF5b3V0OwoKCQlpZiAoaXNTdHJpbmcobGF5b3V0KSkgewoJCQlsYXlvdXQgPSB0YWJsZUxheW91dHNbbGF5b3V0XTsKCQl9CgoJCXZhciBkZWZhdWx0TGF5b3V0ID0gewoJCQloTGluZVdpZHRoOiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuIDE7CgkJCX0sCgkJCXZMaW5lV2lkdGg6IGZ1bmN0aW9uIChpLCBub2RlKSB7CgkJCQlyZXR1cm4gMTsKCQkJfSwKCQkJaExpbmVDb2xvcjogZnVuY3Rpb24gKGksIG5vZGUpIHsKCQkJCXJldHVybiAnYmxhY2snOwoJCQl9LAoJCQl2TGluZUNvbG9yOiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuICdibGFjayc7CgkJCX0sCgkJCXBhZGRpbmdMZWZ0OiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuIDQ7CgkJCX0sCgkJCXBhZGRpbmdSaWdodDogZnVuY3Rpb24gKGksIG5vZGUpIHsKCQkJCXJldHVybiA0OwoJCQl9LAoJCQlwYWRkaW5nVG9wOiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuIDI7CgkJCX0sCgkJCXBhZGRpbmdCb3R0b206IGZ1bmN0aW9uIChpLCBub2RlKSB7CgkJCQlyZXR1cm4gMjsKCQkJfSwKCQkJZmlsbENvbG9yOiBmdW5jdGlvbiAoaSwgbm9kZSkgewoJCQkJcmV0dXJuIG51bGw7CgkJCX0sCgkJCWRlZmF1bHRCb3JkZXI6IHRydWUKCQl9OwoKCQlyZXR1cm4gcGFjayhkZWZhdWx0TGF5b3V0LCBsYXlvdXQpOwoJfQoKCWZ1bmN0aW9uIGdldE9mZnNldHMobGF5b3V0KSB7CgkJdmFyIG9mZnNldHMgPSBbXTsKCQl2YXIgdG90YWxPZmZzZXQgPSAwOwoJCXZhciBwcmV2UmlnaHRQYWRkaW5nID0gMDsKCgkJZm9yICh2YXIgaSA9IDAsIGwgPSBub2RlLnRhYmxlLndpZHRocy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQkJdmFyIGxPZmZzZXQgPSBwcmV2UmlnaHRQYWRkaW5nICsgbGF5b3V0LnZMaW5lV2lkdGgoaSwgbm9kZSkgKyBsYXlvdXQucGFkZGluZ0xlZnQoaSwgbm9kZSk7CgkJCW9mZnNldHMucHVzaChsT2Zmc2V0KTsKCQkJdG90YWxPZmZzZXQgKz0gbE9mZnNldDsKCQkJcHJldlJpZ2h0UGFkZGluZyA9IGxheW91dC5wYWRkaW5nUmlnaHQoaSwgbm9kZSk7CgkJfQoKCQl0b3RhbE9mZnNldCArPSBwcmV2UmlnaHRQYWRkaW5nICsgbGF5b3V0LnZMaW5lV2lkdGgobm9kZS50YWJsZS53aWR0aHMubGVuZ3RoLCBub2RlKTsKCgkJcmV0dXJuIHsKCQkJdG90YWw6IHRvdGFsT2Zmc2V0LAoJCQlvZmZzZXRzOiBvZmZzZXRzCgkJfTsKCX0KCglmdW5jdGlvbiBleHRlbmRXaWR0aHNGb3JDb2xTcGFucygpIHsKCQl2YXIgcSwgajsKCgkJZm9yICh2YXIgaSA9IDAsIGwgPSBjb2xTcGFucy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQkJdmFyIHNwYW4gPSBjb2xTcGFuc1tpXTsKCgkJCXZhciBjdXJyZW50TWluTWF4ID0gZ2V0TWluTWF4KHNwYW4uY29sLCBzcGFuLnNwYW4sIG5vZGUuX29mZnNldHMpOwoJCQl2YXIgbWluRGlmZmVyZW5jZSA9IHNwYW4ubWluV2lkdGggLSBjdXJyZW50TWluTWF4Lm1pbldpZHRoOwoJCQl2YXIgbWF4RGlmZmVyZW5jZSA9IHNwYW4ubWF4V2lkdGggLSBjdXJyZW50TWluTWF4Lm1heFdpZHRoOwoKCQkJaWYgKG1pbkRpZmZlcmVuY2UgPiAwKSB7CgkJCQlxID0gbWluRGlmZmVyZW5jZSAvIHNwYW4uc3BhbjsKCgkJCQlmb3IgKGogPSAwOyBqIDwgc3Bhbi5zcGFuOyBqKyspIHsKCQkJCQlub2RlLnRhYmxlLndpZHRoc1tzcGFuLmNvbCArIGpdLl9taW5XaWR0aCArPSBxOwoJCQkJfQoJCQl9CgoJCQlpZiAobWF4RGlmZmVyZW5jZSA+IDApIHsKCQkJCXEgPSBtYXhEaWZmZXJlbmNlIC8gc3Bhbi5zcGFuOwoKCQkJCWZvciAoaiA9IDA7IGogPCBzcGFuLnNwYW47IGorKykgewoJCQkJCW5vZGUudGFibGUud2lkdGhzW3NwYW4uY29sICsgal0uX21heFdpZHRoICs9IHE7CgkJCQl9CgkJCX0KCQl9Cgl9CgoJZnVuY3Rpb24gZ2V0TWluTWF4KGNvbCwgc3Bhbiwgb2Zmc2V0cykgewoJCXZhciByZXN1bHQgPSB7bWluV2lkdGg6IDAsIG1heFdpZHRoOiAwfTsKCgkJZm9yICh2YXIgaSA9IDA7IGkgPCBzcGFuOyBpKyspIHsKCQkJcmVzdWx0Lm1pbldpZHRoICs9IG5vZGUudGFibGUud2lkdGhzW2NvbCArIGldLl9taW5XaWR0aCArIChpID8gb2Zmc2V0cy5vZmZzZXRzW2NvbCArIGldIDogMCk7CgkJCXJlc3VsdC5tYXhXaWR0aCArPSBub2RlLnRhYmxlLndpZHRoc1tjb2wgKyBpXS5fbWF4V2lkdGggKyAoaSA/IG9mZnNldHMub2Zmc2V0c1tjb2wgKyBpXSA6IDApOwoJCX0KCgkJcmV0dXJuIHJlc3VsdDsKCX0KCglmdW5jdGlvbiBtYXJrU3BhbnMocm93RGF0YSwgY29sLCBzcGFuKSB7CgkJZm9yICh2YXIgaSA9IDE7IGkgPCBzcGFuOyBpKyspIHsKCQkJcm93RGF0YVtjb2wgKyBpXSA9IHsKCQkJCV9zcGFuOiB0cnVlLAoJCQkJX21pbldpZHRoOiAwLAoJCQkJX21heFdpZHRoOiAwLAoJCQkJcm93U3Bhbjogcm93RGF0YVtjb2xdLnJvd1NwYW4KCQkJfTsKCQl9Cgl9CgoJZnVuY3Rpb24gbWFya1ZTcGFucyh0YWJsZSwgcm93LCBjb2wsIHNwYW4pIHsKCQlmb3IgKHZhciBpID0gMTsgaSA8IHNwYW47IGkrKykgewoJCQl0YWJsZS5ib2R5W3JvdyArIGldW2NvbF0gPSB7CgkJCQlfc3BhbjogdHJ1ZSwKCQkJCV9taW5XaWR0aDogMCwKCQkJCV9tYXhXaWR0aDogMCwKCQkJCWZpbGxDb2xvcjogdGFibGUuYm9keVtyb3ddW2NvbF0uZmlsbENvbG9yCgkJCX07CgkJfQoJfQoKCWZ1bmN0aW9uIGV4dGVuZFRhYmxlV2lkdGhzKG5vZGUpIHsKCQlpZiAoIW5vZGUudGFibGUud2lkdGhzKSB7CgkJCW5vZGUudGFibGUud2lkdGhzID0gJ2F1dG8nOwoJCX0KCgkJaWYgKGlzU3RyaW5nKG5vZGUudGFibGUud2lkdGhzKSkgewoJCQlub2RlLnRhYmxlLndpZHRocyA9IFtub2RlLnRhYmxlLndpZHRoc107CgoJCQl3aGlsZSAobm9kZS50YWJsZS53aWR0aHMubGVuZ3RoIDwgbm9kZS50YWJsZS5ib2R5WzBdLmxlbmd0aCkgewoJCQkJbm9kZS50YWJsZS53aWR0aHMucHVzaChub2RlLnRhYmxlLndpZHRoc1tub2RlLnRhYmxlLndpZHRocy5sZW5ndGggLSAxXSk7CgkJCX0KCQl9CgoJCWZvciAodmFyIGkgPSAwLCBsID0gbm9kZS50YWJsZS53aWR0aHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJCXZhciB3ID0gbm9kZS50YWJsZS53aWR0aHNbaV07CgkJCWlmIChpc051bWJlcih3KSB8fCBpc1N0cmluZyh3KSkgewoJCQkJbm9kZS50YWJsZS53aWR0aHNbaV0gPSB7d2lkdGg6IHd9OwoJCQl9CgkJfQoJfQp9OwoKRG9jTWVhc3VyZS5wcm90b3R5cGUubWVhc3VyZUNhbnZhcyA9IGZ1bmN0aW9uIChub2RlKSB7Cgl2YXIgdyA9IDAsIGggPSAwOwoKCWZvciAodmFyIGkgPSAwLCBsID0gbm9kZS5jYW52YXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJdmFyIHZlY3RvciA9IG5vZGUuY2FudmFzW2ldOwoKCQlzd2l0Y2ggKHZlY3Rvci50eXBlKSB7CgkJCWNhc2UgJ2VsbGlwc2UnOgoJCQkJdyA9IE1hdGgubWF4KHcsIHZlY3Rvci54ICsgdmVjdG9yLnIxKTsKCQkJCWggPSBNYXRoLm1heChoLCB2ZWN0b3IueSArIHZlY3Rvci5yMik7CgkJCQlicmVhazsKCQkJY2FzZSAncmVjdCc6CgkJCQl3ID0gTWF0aC5tYXgodywgdmVjdG9yLnggKyB2ZWN0b3Iudyk7CgkJCQloID0gTWF0aC5tYXgoaCwgdmVjdG9yLnkgKyB2ZWN0b3IuaCk7CgkJCQlicmVhazsKCQkJY2FzZSAnbGluZSc6CgkJCQl3ID0gTWF0aC5tYXgodywgdmVjdG9yLngxLCB2ZWN0b3IueDIpOwoJCQkJaCA9IE1hdGgubWF4KGgsIHZlY3Rvci55MSwgdmVjdG9yLnkyKTsKCQkJCWJyZWFrOwoJCQljYXNlICdwb2x5bGluZSc6CgkJCQlmb3IgKHZhciBpMiA9IDAsIGwyID0gdmVjdG9yLnBvaW50cy5sZW5ndGg7IGkyIDwgbDI7IGkyKyspIHsKCQkJCQl3ID0gTWF0aC5tYXgodywgdmVjdG9yLnBvaW50c1tpMl0ueCk7CgkJCQkJaCA9IE1hdGgubWF4KGgsIHZlY3Rvci5wb2ludHNbaTJdLnkpOwoJCQkJfQoJCQkJYnJlYWs7CgkJfQoJfQoKCW5vZGUuX21pbldpZHRoID0gbm9kZS5fbWF4V2lkdGggPSB3OwoJbm9kZS5fbWluSGVpZ2h0ID0gbm9kZS5fbWF4SGVpZ2h0ID0gaDsKCW5vZGUuX2FsaWdubWVudCA9IHRoaXMuc3R5bGVTdGFjay5nZXRQcm9wZXJ0eSgnYWxpZ25tZW50Jyk7CgoJcmV0dXJuIG5vZGU7Cn07CgpEb2NNZWFzdXJlLnByb3RvdHlwZS5tZWFzdXJlUXIgPSBmdW5jdGlvbiAobm9kZSkgewoJbm9kZSA9IHFyRW5jb2Rlci5tZWFzdXJlKG5vZGUpOwoJbm9kZS5fYWxpZ25tZW50ID0gdGhpcy5zdHlsZVN0YWNrLmdldFByb3BlcnR5KCdhbGlnbm1lbnQnKTsKCXJldHVybiBub2RlOwp9OwoKbW9kdWxlLmV4cG9ydHMgPSBEb2NNZWFzdXJlOwoKCi8qKiovIH0pLAovKiAxMzEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGxvb2t1cCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJzsKCjsoZnVuY3Rpb24gKGV4cG9ydHMpIHsKCSd1c2Ugc3RyaWN0JzsKCiAgdmFyIEFyciA9ICh0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcpCiAgICA/IFVpbnQ4QXJyYXkKICAgIDogQXJyYXkKCgl2YXIgUExVUyAgID0gJysnLmNoYXJDb2RlQXQoMCkKCXZhciBTTEFTSCAgPSAnLycuY2hhckNvZGVBdCgwKQoJdmFyIE5VTUJFUiA9ICcwJy5jaGFyQ29kZUF0KDApCgl2YXIgTE9XRVIgID0gJ2EnLmNoYXJDb2RlQXQoMCkKCXZhciBVUFBFUiAgPSAnQScuY2hhckNvZGVBdCgwKQoJdmFyIFBMVVNfVVJMX1NBRkUgPSAnLScuY2hhckNvZGVBdCgwKQoJdmFyIFNMQVNIX1VSTF9TQUZFID0gJ18nLmNoYXJDb2RlQXQoMCkKCglmdW5jdGlvbiBkZWNvZGUgKGVsdCkgewoJCXZhciBjb2RlID0gZWx0LmNoYXJDb2RlQXQoMCkKCQlpZiAoY29kZSA9PT0gUExVUyB8fAoJCSAgICBjb2RlID09PSBQTFVTX1VSTF9TQUZFKQoJCQlyZXR1cm4gNjIgLy8gJysnCgkJaWYgKGNvZGUgPT09IFNMQVNIIHx8CgkJICAgIGNvZGUgPT09IFNMQVNIX1VSTF9TQUZFKQoJCQlyZXR1cm4gNjMgLy8gJy8nCgkJaWYgKGNvZGUgPCBOVU1CRVIpCgkJCXJldHVybiAtMSAvL25vIG1hdGNoCgkJaWYgKGNvZGUgPCBOVU1CRVIgKyAxMCkKCQkJcmV0dXJuIGNvZGUgLSBOVU1CRVIgKyAyNiArIDI2CgkJaWYgKGNvZGUgPCBVUFBFUiArIDI2KQoJCQlyZXR1cm4gY29kZSAtIFVQUEVSCgkJaWYgKGNvZGUgPCBMT1dFUiArIDI2KQoJCQlyZXR1cm4gY29kZSAtIExPV0VSICsgMjYKCX0KCglmdW5jdGlvbiBiNjRUb0J5dGVBcnJheSAoYjY0KSB7CgkJdmFyIGksIGosIGwsIHRtcCwgcGxhY2VIb2xkZXJzLCBhcnIKCgkJaWYgKGI2NC5sZW5ndGggJSA0ID4gMCkgewoJCQl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc3RyaW5nLiBMZW5ndGggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDQnKQoJCX0KCgkJLy8gdGhlIG51bWJlciBvZiBlcXVhbCBzaWducyAocGxhY2UgaG9sZGVycykKCQkvLyBpZiB0aGVyZSBhcmUgdHdvIHBsYWNlaG9sZGVycywgdGhhbiB0aGUgdHdvIGNoYXJhY3RlcnMgYmVmb3JlIGl0CgkJLy8gcmVwcmVzZW50IG9uZSBieXRlCgkJLy8gaWYgdGhlcmUgaXMgb25seSBvbmUsIHRoZW4gdGhlIHRocmVlIGNoYXJhY3RlcnMgYmVmb3JlIGl0IHJlcHJlc2VudCAyIGJ5dGVzCgkJLy8gdGhpcyBpcyBqdXN0IGEgY2hlYXAgaGFjayB0byBub3QgZG8gaW5kZXhPZiB0d2ljZQoJCXZhciBsZW4gPSBiNjQubGVuZ3RoCgkJcGxhY2VIb2xkZXJzID0gJz0nID09PSBiNjQuY2hhckF0KGxlbiAtIDIpID8gMiA6ICc9JyA9PT0gYjY0LmNoYXJBdChsZW4gLSAxKSA/IDEgOiAwCgoJCS8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YQoJCWFyciA9IG5ldyBBcnIoYjY0Lmxlbmd0aCAqIDMgLyA0IC0gcGxhY2VIb2xkZXJzKQoKCQkvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzCgkJbCA9IHBsYWNlSG9sZGVycyA+IDAgPyBiNjQubGVuZ3RoIC0gNCA6IGI2NC5sZW5ndGgKCgkJdmFyIEwgPSAwCgoJCWZ1bmN0aW9uIHB1c2ggKHYpIHsKCQkJYXJyW0wrK10gPSB2CgkJfQoKCQlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGw7IGkgKz0gNCwgaiArPSAzKSB7CgkJCXRtcCA9IChkZWNvZGUoYjY0LmNoYXJBdChpKSkgPDwgMTgpIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAxKSkgPDwgMTIpIHwgKGRlY29kZShiNjQuY2hhckF0KGkgKyAyKSkgPDwgNikgfCBkZWNvZGUoYjY0LmNoYXJBdChpICsgMykpCgkJCXB1c2goKHRtcCAmIDB4RkYwMDAwKSA+PiAxNikKCQkJcHVzaCgodG1wICYgMHhGRjAwKSA+PiA4KQoJCQlwdXNoKHRtcCAmIDB4RkYpCgkJfQoKCQlpZiAocGxhY2VIb2xkZXJzID09PSAyKSB7CgkJCXRtcCA9IChkZWNvZGUoYjY0LmNoYXJBdChpKSkgPDwgMikgfCAoZGVjb2RlKGI2NC5jaGFyQXQoaSArIDEpKSA+PiA0KQoJCQlwdXNoKHRtcCAmIDB4RkYpCgkJfSBlbHNlIGlmIChwbGFjZUhvbGRlcnMgPT09IDEpIHsKCQkJdG1wID0gKGRlY29kZShiNjQuY2hhckF0KGkpKSA8PCAxMCkgfCAoZGVjb2RlKGI2NC5jaGFyQXQoaSArIDEpKSA8PCA0KSB8IChkZWNvZGUoYjY0LmNoYXJBdChpICsgMikpID4+IDIpCgkJCXB1c2goKHRtcCA+PiA4KSAmIDB4RkYpCgkJCXB1c2godG1wICYgMHhGRikKCQl9CgoJCXJldHVybiBhcnIKCX0KCglmdW5jdGlvbiB1aW50OFRvQmFzZTY0ICh1aW50OCkgewoJCXZhciBpLAoJCQlleHRyYUJ5dGVzID0gdWludDgubGVuZ3RoICUgMywgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXMKCQkJb3V0cHV0ID0gIiIsCgkJCXRlbXAsIGxlbmd0aAoKCQlmdW5jdGlvbiBlbmNvZGUgKG51bSkgewoJCQlyZXR1cm4gbG9va3VwLmNoYXJBdChudW0pCgkJfQoKCQlmdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkgewoJCQlyZXR1cm4gZW5jb2RlKG51bSA+PiAxOCAmIDB4M0YpICsgZW5jb2RlKG51bSA+PiAxMiAmIDB4M0YpICsgZW5jb2RlKG51bSA+PiA2ICYgMHgzRikgKyBlbmNvZGUobnVtICYgMHgzRikKCQl9CgoJCS8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXIKCQlmb3IgKGkgPSAwLCBsZW5ndGggPSB1aW50OC5sZW5ndGggLSBleHRyYUJ5dGVzOyBpIDwgbGVuZ3RoOyBpICs9IDMpIHsKCQkJdGVtcCA9ICh1aW50OFtpXSA8PCAxNikgKyAodWludDhbaSArIDFdIDw8IDgpICsgKHVpbnQ4W2kgKyAyXSkKCQkJb3V0cHV0ICs9IHRyaXBsZXRUb0Jhc2U2NCh0ZW1wKQoJCX0KCgkJLy8gcGFkIHRoZSBlbmQgd2l0aCB6ZXJvcywgYnV0IG1ha2Ugc3VyZSB0byBub3QgZm9yZ2V0IHRoZSBleHRyYSBieXRlcwoJCXN3aXRjaCAoZXh0cmFCeXRlcykgewoJCQljYXNlIDE6CgkJCQl0ZW1wID0gdWludDhbdWludDgubGVuZ3RoIC0gMV0KCQkJCW91dHB1dCArPSBlbmNvZGUodGVtcCA+PiAyKQoJCQkJb3V0cHV0ICs9IGVuY29kZSgodGVtcCA8PCA0KSAmIDB4M0YpCgkJCQlvdXRwdXQgKz0gJz09JwoJCQkJYnJlYWsKCQkJY2FzZSAyOgoJCQkJdGVtcCA9ICh1aW50OFt1aW50OC5sZW5ndGggLSAyXSA8PCA4KSArICh1aW50OFt1aW50OC5sZW5ndGggLSAxXSkKCQkJCW91dHB1dCArPSBlbmNvZGUodGVtcCA+PiAxMCkKCQkJCW91dHB1dCArPSBlbmNvZGUoKHRlbXAgPj4gNCkgJiAweDNGKQoJCQkJb3V0cHV0ICs9IGVuY29kZSgodGVtcCA8PCAyKSAmIDB4M0YpCgkJCQlvdXRwdXQgKz0gJz0nCgkJCQlicmVhawoJCX0KCgkJcmV0dXJuIG91dHB1dAoJfQoKCWV4cG9ydHMudG9CeXRlQXJyYXkgPSBiNjRUb0J5dGVBcnJheQoJZXhwb3J0cy5mcm9tQnl0ZUFycmF5ID0gdWludDhUb0Jhc2U2NAp9KCBmYWxzZSA/ICh0aGlzLmJhc2U2NGpzID0ge30pIDogZXhwb3J0cykpCgoKLyoqKi8gfSksCi8qIDEzMiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuNy4xCihmdW5jdGlvbigpIHsKICB2YXIgQUksIEFMLCBCMiwgQkEsIEJCLCBCSywgQ0IsIENKLCBDTCwgQ00sIENQLCBDUiwgRVgsIEdMLCBIMiwgSDMsIEhMLCBIWSwgSUQsIElOLCBJUywgSkwsIEpULCBKViwgTEYsIE5MLCBOUywgTlUsIE9QLCBQTywgUFIsIFFVLCBSSSwgU0EsIFNHLCBTUCwgU1ksIFdKLCBYWCwgWlc7CgogIGV4cG9ydHMuT1AgPSBPUCA9IDA7CgogIGV4cG9ydHMuQ0wgPSBDTCA9IDE7CgogIGV4cG9ydHMuQ1AgPSBDUCA9IDI7CgogIGV4cG9ydHMuUVUgPSBRVSA9IDM7CgogIGV4cG9ydHMuR0wgPSBHTCA9IDQ7CgogIGV4cG9ydHMuTlMgPSBOUyA9IDU7CgogIGV4cG9ydHMuRVggPSBFWCA9IDY7CgogIGV4cG9ydHMuU1kgPSBTWSA9IDc7CgogIGV4cG9ydHMuSVMgPSBJUyA9IDg7CgogIGV4cG9ydHMuUFIgPSBQUiA9IDk7CgogIGV4cG9ydHMuUE8gPSBQTyA9IDEwOwoKICBleHBvcnRzLk5VID0gTlUgPSAxMTsKCiAgZXhwb3J0cy5BTCA9IEFMID0gMTI7CgogIGV4cG9ydHMuSEwgPSBITCA9IDEzOwoKICBleHBvcnRzLklEID0gSUQgPSAxNDsKCiAgZXhwb3J0cy5JTiA9IElOID0gMTU7CgogIGV4cG9ydHMuSFkgPSBIWSA9IDE2OwoKICBleHBvcnRzLkJBID0gQkEgPSAxNzsKCiAgZXhwb3J0cy5CQiA9IEJCID0gMTg7CgogIGV4cG9ydHMuQjIgPSBCMiA9IDE5OwoKICBleHBvcnRzLlpXID0gWlcgPSAyMDsKCiAgZXhwb3J0cy5DTSA9IENNID0gMjE7CgogIGV4cG9ydHMuV0ogPSBXSiA9IDIyOwoKICBleHBvcnRzLkgyID0gSDIgPSAyMzsKCiAgZXhwb3J0cy5IMyA9IEgzID0gMjQ7CgogIGV4cG9ydHMuSkwgPSBKTCA9IDI1OwoKICBleHBvcnRzLkpWID0gSlYgPSAyNjsKCiAgZXhwb3J0cy5KVCA9IEpUID0gMjc7CgogIGV4cG9ydHMuUkkgPSBSSSA9IDI4OwoKICBleHBvcnRzLkFJID0gQUkgPSAyOTsKCiAgZXhwb3J0cy5CSyA9IEJLID0gMzA7CgogIGV4cG9ydHMuQ0IgPSBDQiA9IDMxOwoKICBleHBvcnRzLkNKID0gQ0ogPSAzMjsKCiAgZXhwb3J0cy5DUiA9IENSID0gMzM7CgogIGV4cG9ydHMuTEYgPSBMRiA9IDM0OwoKICBleHBvcnRzLk5MID0gTkwgPSAzNTsKCiAgZXhwb3J0cy5TQSA9IFNBID0gMzY7CgogIGV4cG9ydHMuU0cgPSBTRyA9IDM3OwoKICBleHBvcnRzLlNQID0gU1AgPSAzODsKCiAgZXhwb3J0cy5YWCA9IFhYID0gMzk7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAxMzMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIENJX0JSSywgQ1BfQlJLLCBESV9CUkssIElOX0JSSywgUFJfQlJLOwoKICBleHBvcnRzLkRJX0JSSyA9IERJX0JSSyA9IDA7CgogIGV4cG9ydHMuSU5fQlJLID0gSU5fQlJLID0gMTsKCiAgZXhwb3J0cy5DSV9CUksgPSBDSV9CUksgPSAyOwoKICBleHBvcnRzLkNQX0JSSyA9IENQX0JSSyA9IDM7CgogIGV4cG9ydHMuUFJfQlJLID0gUFJfQlJLID0gNDsKCiAgZXhwb3J0cy5wYWlyVGFibGUgPSBbW1BSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIENQX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBQUl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW1BSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgRElfQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgRElfQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgUFJfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLXSwgW0lOX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBJTl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBJTl9CUkssIElOX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgSU5fQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIElOX0JSSywgRElfQlJLXSwgW0RJX0JSSywgUFJfQlJLLCBQUl9CUkssIElOX0JSSywgSU5fQlJLLCBJTl9CUkssIFBSX0JSSywgUFJfQlJLLCBQUl9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLLCBJTl9CUkssIERJX0JSSywgRElfQlJLLCBQUl9CUkssIENJX0JSSywgUFJfQlJLLCBESV9CUkssIERJX0JSSywgRElfQlJLLCBESV9CUkssIERJX0JSSywgSU5fQlJLXV07Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAxMzQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKmVzbGludCBuby11bnVzZWQtdmFyczogWyJlcnJvciIsIHsiYXJncyI6ICJub25lIn1dKi8KLyplc2xpbnQgbm8tcmVkZWNsYXJlOiAib2ZmIiovCgoKLyogcXIuanMgLS0gUVIgY29kZSBnZW5lcmF0b3IgaW4gSmF2YXNjcmlwdCAocmV2aXNpb24gMjAxMS0wMS0xOSkKICogV3JpdHRlbiBieSBLYW5nIFNlb25naG9vbiA8cHVibGljK3FyanNAbWVhcmllLm9yZz4uCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgaW4gdGhlIHB1YmxpYyBkb21haW47IGlmIHlvdXIganVyaXNkaWN0aW9uIGRvZXMgbm90CiAqIHJlY29nbml6ZSB0aGUgcHVibGljIGRvbWFpbiB0aGUgdGVybXMgb2YgQ3JlYXRpdmUgQ29tbW9ucyBDQzAgbGljZW5zZQogKiBhcHBseS4gSW4gdGhlIG90aGVyIHdvcmRzLCB5b3UgY2FuIGFsd2F5cyBkbyB3aGF0IHlvdSB3YW50LgogKi8KCgovLyBwZXItdmVyc2lvbiBpbmZvcm1hdGlvbiAoY2YuIEpJUyBYIDA1MTA6MjAwNCBwcC4gMzAtLTM2LCA3MSkKLy8KLy8gWzBdOiB0aGUgZGVncmVlIG9mIGdlbmVyYXRvciBwb2x5bm9taWFsIGJ5IEVDQyBsZXZlbHMKLy8gWzFdOiAjIG9mIGNvZGUgYmxvY2tzIGJ5IEVDQyBsZXZlbHMKLy8gWzJdOiBsZWZ0LXRvcCBwb3NpdGlvbnMgb2YgYWxpZ25tZW50IHBhdHRlcm5zCi8vCi8vIHRoZSBudW1iZXIgaW4gdGhpcyB0YWJsZSAoaW4gcGFydGljdWxhciwgWzBdKSBkb2VzIG5vdCBleGFjdGx5IG1hdGNoIHdpdGgKLy8gdGhlIG51bWJlcnMgaW4gdGhlIHNwZWNmaWNpYXRpb24uIHNlZSBhdWd1bWVudGVjY3MgYmVsb3cgZm9yIHRoZSByZWFzb24uCnZhciBWRVJTSU9OUyA9IFsKCW51bGwsCglbWzEwLCA3LCAxNywgMTNdLCBbMSwgMSwgMSwgMV0sIFtdXSwKCVtbMTYsIDEwLCAyOCwgMjJdLCBbMSwgMSwgMSwgMV0sIFs0LCAxNl1dLAoJW1syNiwgMTUsIDIyLCAxOF0sIFsxLCAxLCAyLCAyXSwgWzQsIDIwXV0sCglbWzE4LCAyMCwgMTYsIDI2XSwgWzIsIDEsIDQsIDJdLCBbNCwgMjRdXSwKCVtbMjQsIDI2LCAyMiwgMThdLCBbMiwgMSwgNCwgNF0sIFs0LCAyOF1dLAoJW1sxNiwgMTgsIDI4LCAyNF0sIFs0LCAyLCA0LCA0XSwgWzQsIDMyXV0sCglbWzE4LCAyMCwgMjYsIDE4XSwgWzQsIDIsIDUsIDZdLCBbNCwgMjAsIDM2XV0sCglbWzIyLCAyNCwgMjYsIDIyXSwgWzQsIDIsIDYsIDZdLCBbNCwgMjIsIDQwXV0sCglbWzIyLCAzMCwgMjQsIDIwXSwgWzUsIDIsIDgsIDhdLCBbNCwgMjQsIDQ0XV0sCglbWzI2LCAxOCwgMjgsIDI0XSwgWzUsIDQsIDgsIDhdLCBbNCwgMjYsIDQ4XV0sCglbWzMwLCAyMCwgMjQsIDI4XSwgWzUsIDQsIDExLCA4XSwgWzQsIDI4LCA1Ml1dLAoJW1syMiwgMjQsIDI4LCAyNl0sIFs4LCA0LCAxMSwgMTBdLCBbNCwgMzAsIDU2XV0sCglbWzIyLCAyNiwgMjIsIDI0XSwgWzksIDQsIDE2LCAxMl0sIFs0LCAzMiwgNjBdXSwKCVtbMjQsIDMwLCAyNCwgMjBdLCBbOSwgNCwgMTYsIDE2XSwgWzQsIDI0LCA0NCwgNjRdXSwKCVtbMjQsIDIyLCAyNCwgMzBdLCBbMTAsIDYsIDE4LCAxMl0sIFs0LCAyNCwgNDYsIDY4XV0sCglbWzI4LCAyNCwgMzAsIDI0XSwgWzEwLCA2LCAxNiwgMTddLCBbNCwgMjQsIDQ4LCA3Ml1dLAoJW1syOCwgMjgsIDI4LCAyOF0sIFsxMSwgNiwgMTksIDE2XSwgWzQsIDI4LCA1MiwgNzZdXSwKCVtbMjYsIDMwLCAyOCwgMjhdLCBbMTMsIDYsIDIxLCAxOF0sIFs0LCAyOCwgNTQsIDgwXV0sCglbWzI2LCAyOCwgMjYsIDI2XSwgWzE0LCA3LCAyNSwgMjFdLCBbNCwgMjgsIDU2LCA4NF1dLAoJW1syNiwgMjgsIDI4LCAzMF0sIFsxNiwgOCwgMjUsIDIwXSwgWzQsIDMyLCA2MCwgODhdXSwKCVtbMjYsIDI4LCAzMCwgMjhdLCBbMTcsIDgsIDI1LCAyM10sIFs0LCAyNiwgNDgsIDcwLCA5Ml1dLAoJW1syOCwgMjgsIDI0LCAzMF0sIFsxNywgOSwgMzQsIDIzXSwgWzQsIDI0LCA0OCwgNzIsIDk2XV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzE4LCA5LCAzMCwgMjVdLCBbNCwgMjgsIDUyLCA3NiwgMTAwXV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzIwLCAxMCwgMzIsIDI3XSwgWzQsIDI2LCA1MiwgNzgsIDEwNF1dLAoJW1syOCwgMjYsIDMwLCAzMF0sIFsyMSwgMTIsIDM1LCAyOV0sIFs0LCAzMCwgNTYsIDgyLCAxMDhdXSwKCVtbMjgsIDI4LCAzMCwgMjhdLCBbMjMsIDEyLCAzNywgMzRdLCBbNCwgMjgsIDU2LCA4NCwgMTEyXV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzI1LCAxMiwgNDAsIDM0XSwgWzQsIDMyLCA2MCwgODgsIDExNl1dLAoJW1syOCwgMzAsIDMwLCAzMF0sIFsyNiwgMTMsIDQyLCAzNV0sIFs0LCAyNCwgNDgsIDcyLCA5NiwgMTIwXV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzI4LCAxNCwgNDUsIDM4XSwgWzQsIDI4LCA1MiwgNzYsIDEwMCwgMTI0XV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzI5LCAxNSwgNDgsIDQwXSwgWzQsIDI0LCA1MCwgNzYsIDEwMiwgMTI4XV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzMxLCAxNiwgNTEsIDQzXSwgWzQsIDI4LCA1NCwgODAsIDEwNiwgMTMyXV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzMzLCAxNywgNTQsIDQ1XSwgWzQsIDMyLCA1OCwgODQsIDExMCwgMTM2XV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzM1LCAxOCwgNTcsIDQ4XSwgWzQsIDI4LCA1NiwgODQsIDExMiwgMTQwXV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzM3LCAxOSwgNjAsIDUxXSwgWzQsIDMyLCA2MCwgODgsIDExNiwgMTQ0XV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzM4LCAxOSwgNjMsIDUzXSwgWzQsIDI4LCA1MiwgNzYsIDEwMCwgMTI0LCAxNDhdXSwKCVtbMjgsIDMwLCAzMCwgMzBdLCBbNDAsIDIwLCA2NiwgNTZdLCBbNCwgMjIsIDQ4LCA3NCwgMTAwLCAxMjYsIDE1Ml1dLAoJW1syOCwgMzAsIDMwLCAzMF0sIFs0MywgMjEsIDcwLCA1OV0sIFs0LCAyNiwgNTIsIDc4LCAxMDQsIDEzMCwgMTU2XV0sCglbWzI4LCAzMCwgMzAsIDMwXSwgWzQ1LCAyMiwgNzQsIDYyXSwgWzQsIDMwLCA1NiwgODIsIDEwOCwgMTM0LCAxNjBdXSwKCVtbMjgsIDMwLCAzMCwgMzBdLCBbNDcsIDI0LCA3NywgNjVdLCBbNCwgMjQsIDUyLCA4MCwgMTA4LCAxMzYsIDE2NF1dLAoJW1syOCwgMzAsIDMwLCAzMF0sIFs0OSwgMjUsIDgxLCA2OF0sIFs0LCAyOCwgNTYsIDg0LCAxMTIsIDE0MCwgMTY4XV1dOwoKLy8gbW9kZSBjb25zdGFudHMgKGNmLiBUYWJsZSAyIGluIEpJUyBYIDA1MTA6MjAwNCBwLiAxNikKdmFyIE1PREVfVEVSTUlOQVRPUiA9IDA7CnZhciBNT0RFX05VTUVSSUMgPSAxLCBNT0RFX0FMUEhBTlVNRVJJQyA9IDIsIE1PREVfT0NURVQgPSA0LCBNT0RFX0tBTkpJID0gODsKCi8vIHZhbGlkYXRpb24gcmVnZXhwcwp2YXIgTlVNRVJJQ19SRUdFWFAgPSAvXlxkKiQvOwp2YXIgQUxQSEFOVU1FUklDX1JFR0VYUCA9IC9eW0EtWmEtejAtOSAkJSorXC0uLzpdKiQvOwp2YXIgQUxQSEFOVU1FUklDX09VVF9SRUdFWFAgPSAvXltBLVowLTkgJCUqK1wtLi86XSokLzsKCi8vIEVDQyBsZXZlbHMgKGNmLiBUYWJsZSAyMiBpbiBKSVMgWCAwNTEwOjIwMDQgcC4gNDUpCnZhciBFQ0NMRVZFTF9MID0gMSwgRUNDTEVWRUxfTSA9IDAsIEVDQ0xFVkVMX1EgPSAzLCBFQ0NMRVZFTF9IID0gMjsKCi8vIEdGKDJeOCktdG8taW50ZWdlciBtYXBwaW5nIHdpdGggYSByZWR1Y2luZyBwb2x5bm9taWFsIHheOCt4XjQreF4zK3heMisxCi8vIGludmFyaWFudDogR0YyNTZfTUFQW0dGMjU2X0lOVk1BUFtpXV0gPT0gaSBmb3IgYWxsIGkgaW4gWzEsMjU2KQp2YXIgR0YyNTZfTUFQID0gW10sIEdGMjU2X0lOVk1BUCA9IFstMV07CmZvciAodmFyIGkgPSAwLCB2ID0gMTsgaSA8IDI1NTsgKytpKSB7CglHRjI1Nl9NQVAucHVzaCh2KTsKCUdGMjU2X0lOVk1BUFt2XSA9IGk7Cgl2ID0gKHYgKiAyKSBeICh2ID49IDEyOCA/IDB4MTFkIDogMCk7Cn0KCi8vIGdlbmVyYXRvciBwb2x5bm9taWFscyB1cCB0byBkZWdyZWUgMzAKLy8gKHNob3VsZCBtYXRjaCB3aXRoIHBvbHlub21pYWxzIGluIEpJUyBYIDA1MTA6MjAwNCBBcHBlbmRpeCBBKQovLwovLyBnZW5lcmF0b3IgcG9seW5vbWlhbCBvZiBkZWdyZWUgSyBpcyBwcm9kdWN0IG9mICh4LVxhbHBoYV4wKSwgKHgtXGFscGhhXjEpLAovLyAuLi4sICh4LVxhbHBoYV4oSy0xKSkuIGJ5IGNvbnZlbnRpb24sIHdlIG9taXQgdGhlIEstdGggY29lZmZpY2llbnQgKGFsd2F5cyAxKQovLyBmcm9tIHRoZSByZXN1bHQ7IGFsc28gb3RoZXIgY29lZmZpY2llbnRzIGFyZSB3cml0dGVuIGluIHRlcm1zIG9mIHRoZSBleHBvbmVudAovLyB0byBcYWxwaGEgdG8gYXZvaWQgdGhlIHJlZHVuZGFudCBjYWxjdWxhdGlvbi4gKHNlZSBhbHNvIGNhbGN1bGF0ZWVjYyBiZWxvdy4pCnZhciBHRjI1Nl9HRU5QT0xZID0gW1tdXTsKZm9yICh2YXIgaSA9IDA7IGkgPCAzMDsgKytpKSB7Cgl2YXIgcHJldnBvbHkgPSBHRjI1Nl9HRU5QT0xZW2ldLCBwb2x5ID0gW107Cglmb3IgKHZhciBqID0gMDsgaiA8PSBpOyArK2opIHsKCQl2YXIgYSA9IChqIDwgaSA/IEdGMjU2X01BUFtwcmV2cG9seVtqXV0gOiAwKTsKCQl2YXIgYiA9IEdGMjU2X01BUFsoaSArIChwcmV2cG9seVtqIC0gMV0gfHwgMCkpICUgMjU1XTsKCQlwb2x5LnB1c2goR0YyNTZfSU5WTUFQW2EgXiBiXSk7Cgl9CglHRjI1Nl9HRU5QT0xZLnB1c2gocG9seSk7Cn0KCi8vIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXIgbWFwcGluZyAoY2YuIFRhYmxlIDUgaW4gSklTIFggMDUxMDoyMDA0IHAuIDE5KQp2YXIgQUxQSEFOVU1FUklDX01BUCA9IHt9Owpmb3IgKHZhciBpID0gMDsgaSA8IDQ1OyArK2kpIHsKCUFMUEhBTlVNRVJJQ19NQVBbJzAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiAkJSorLS4vOicuY2hhckF0KGkpXSA9IGk7Cn0KCi8vIG1hc2sgZnVuY3Rpb25zIGluIHRlcm1zIG9mIHJvdyAjIGFuZCBjb2x1bW4gIwovLyAoY2YuIFRhYmxlIDIwIGluIEpJUyBYIDA1MTA6MjAwNCBwLiA0MikKLypqc2hpbnQgdW51c2VkOiBmYWxzZSAqLwp2YXIgTUFTS0ZVTkNTID0gWwoJZnVuY3Rpb24gKGksIGopIHsKCQlyZXR1cm4gKGkgKyBqKSAlIDIgPT09IDA7Cgl9LAoJZnVuY3Rpb24gKGksIGopIHsKCQlyZXR1cm4gaSAlIDIgPT09IDA7Cgl9LAoJZnVuY3Rpb24gKGksIGopIHsKCQlyZXR1cm4gaiAlIDMgPT09IDA7Cgl9LAoJZnVuY3Rpb24gKGksIGopIHsKCQlyZXR1cm4gKGkgKyBqKSAlIDMgPT09IDA7Cgl9LAoJZnVuY3Rpb24gKGksIGopIHsKCQlyZXR1cm4gKCgoaSAvIDIpIHwgMCkgKyAoKGogLyAzKSB8IDApKSAlIDIgPT09IDA7Cgl9LAoJZnVuY3Rpb24gKGksIGopIHsKCQlyZXR1cm4gKGkgKiBqKSAlIDIgKyAoaSAqIGopICUgMyA9PT0gMDsKCX0sCglmdW5jdGlvbiAoaSwgaikgewoJCXJldHVybiAoKGkgKiBqKSAlIDIgKyAoaSAqIGopICUgMykgJSAyID09PSAwOwoJfSwKCWZ1bmN0aW9uIChpLCBqKSB7CgkJcmV0dXJuICgoaSArIGopICUgMiArIChpICogaikgJSAzKSAlIDIgPT09IDA7Cgl9XTsKCi8vIHJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGhhcyB0byBiZSBlbWJlZGVkLgp2YXIgbmVlZHN2ZXJpbmZvID0gZnVuY3Rpb24gKHZlcikgewoJcmV0dXJuIHZlciA+IDY7Cn07CgovLyByZXR1cm5zIHRoZSBzaXplIG9mIGVudGlyZSBRUiBjb2RlIGZvciBnaXZlbiB2ZXJzaW9uLgp2YXIgZ2V0c2l6ZWJ5dmVyID0gZnVuY3Rpb24gKHZlcikgewoJcmV0dXJuIDQgKiB2ZXIgKyAxNzsKfTsKCi8vIHJldHVybnMgdGhlIG51bWJlciBvZiBiaXRzIGF2YWlsYWJsZSBmb3IgY29kZSB3b3JkcyBpbiB0aGlzIHZlcnNpb24uCnZhciBuZnVsbGJpdHMgPSBmdW5jdGlvbiAodmVyKSB7CgkvKgoJICogfDwtLS0tLS0tLS0tLS0tLS0gbiAtLS0tLS0tLS0tLS0tLS0+fAoJICogfCAgICAgICAgfDwtLS0tLSBuLTE3IC0tLS0+fCAgICAgICAgfAoJICogKy0tLS0tLS0rICAgICAgICAgICAgICAgIC8vLystLS0tLS0tKyAtLS0tCgkgKiB8ICAgICAgIHwgICAgICAgICAgICAgICAgLy8vfCAgICAgICB8ICAgIF4KCSAqIHwgIDl4OSAgfCAgICAgICBAQEBAQCAgICAvLy98ICA5eDggIHwgICAgfAoJICogfCAgICAgICB8ICMgIyAjIEA1eDVAICMgIyAjIHwgICAgICAgfCAgICB8CgkgKiArLS0tLS0tLSsgICAgICAgQEBAQEAgICAgICAgKy0tLS0tLS0rICAgIHwKCSAqICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tfAoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXiB8CgkgKiAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CgkgKiAgICAgQEBAQEAgICAgICAgQEBAQEAgICAgICAgQEBAQEAgICAgICB8IG4KCSAqICAgICBANXg1QCAgICAgICBANXg1QCAgICAgICBANXg1QCAgIG4tMTcKCSAqICAgICBAQEBAQCAgICAgICBAQEBAQCAgICAgICBAQEBAQCAgICAgIHwgfAoJICogICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB8CgkgKiAvLy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IHwKCSAqIC8vLy8vLyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tfAoJICogKy0tLS0tLS0rICAgICAgIEBAQEBAICAgICAgIEBAQEBAICAgICAgICB8CgkgKiB8ICAgICAgIHwgICAgICAgQDV4NUAgICAgICAgQDV4NUAgICAgICAgIHwKCSAqIHwgIDh4OSAgfCAgICAgICBAQEBAQCAgICAgICBAQEBAQCAgICAgICAgfAoJICogfCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2CgkgKiArLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0KCSAqCgkgKiB3aGVuIHRoZSBlbnRpcmUgY29kZSBoYXMgbl4yIG1vZHVsZXMgYW5kIHRoZXJlIGFyZSBtXjItMyBhbGlnbm1lbnQKCSAqIHBhdHRlcm5zLCB3ZSBoYXZlOgoJICogLSAyMjUgKD0gOXg5ICsgOXg4ICsgOHg5KSBtb2R1bGVzIGZvciBmaW5kZXIgcGF0dGVybnMgYW5kCgkgKiAgIGZvcm1hdCBpbmZvcm1hdGlvbjsKCSAqIC0gMm4tMzQgKD0gMihuLTE3KSkgbW9kdWxlcyBmb3IgdGltaW5nIHBhdHRlcm5zOwoJICogLSAzNiAoPSAzeDYgKyA2eDMpIG1vZHVsZXMgZm9yIHZlcnNpb24gaW5mb3JtYXRpb24sIGlmIGFueTsKCSAqIC0gMjVtXjItNzUgKD0gKG1eMi0zKSg1eDUpKSBtb2R1bGVzIGZvciBhbGlnbm1lbnQgcGF0dGVybnMKCSAqICAgaWYgYW55LCBidXQgMTBtLTIwICg9IDIobS0yKXg1KSBvZiB0aGVtIG92ZXJsYXBzIHdpdGgKCSAqICAgdGltaW5nIHBhdHRlcm5zLgoJICovCgl2YXIgdiA9IFZFUlNJT05TW3Zlcl07Cgl2YXIgbmJpdHMgPSAxNiAqIHZlciAqIHZlciArIDEyOCAqIHZlciArIDY0OyAvLyBmaW5kZXIsIHRpbWluZyBhbmQgZm9ybWF0IGluZm8uCglpZiAobmVlZHN2ZXJpbmZvKHZlcikpCgkJbmJpdHMgLT0gMzY7IC8vIHZlcnNpb24gaW5mb3JtYXRpb24KCWlmICh2WzJdLmxlbmd0aCkgeyAvLyBhbGlnbm1lbnQgcGF0dGVybnMKCQluYml0cyAtPSAyNSAqIHZbMl0ubGVuZ3RoICogdlsyXS5sZW5ndGggLSAxMCAqIHZbMl0ubGVuZ3RoIC0gNTU7Cgl9CglyZXR1cm4gbmJpdHM7Cn07CgovLyByZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyBhdmFpbGFibGUgZm9yIGRhdGEgcG9ydGlvbnMgKGkuZS4gZXhjbHVkZXMgRUNDCi8vIGJpdHMgYnV0IGluY2x1ZGVzIG1vZGUgYW5kIGxlbmd0aCBiaXRzKSBpbiB0aGlzIHZlcnNpb24gYW5kIEVDQyBsZXZlbC4KdmFyIG5kYXRhYml0cyA9IGZ1bmN0aW9uICh2ZXIsIGVjY2xldmVsKSB7Cgl2YXIgbmJpdHMgPSBuZnVsbGJpdHModmVyKSAmIH43OyAvLyBubyBzdWItb2N0ZXQgY29kZSB3b3JkcwoJdmFyIHYgPSBWRVJTSU9OU1t2ZXJdOwoJbmJpdHMgLT0gOCAqIHZbMF1bZWNjbGV2ZWxdICogdlsxXVtlY2NsZXZlbF07IC8vIGVjYyBiaXRzCglyZXR1cm4gbmJpdHM7Cn07CgovLyByZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyByZXF1aXJlZCBmb3IgdGhlIGxlbmd0aCBvZiBkYXRhLgovLyAoY2YuIFRhYmxlIDMgaW4gSklTIFggMDUxMDoyMDA0IHAuIDE2KQp2YXIgbmRhdGFsZW5iaXRzID0gZnVuY3Rpb24gKHZlciwgbW9kZSkgewoJc3dpdGNoIChtb2RlKSB7CgkJY2FzZSBNT0RFX05VTUVSSUM6CgkJCXJldHVybiAodmVyIDwgMTAgPyAxMCA6IHZlciA8IDI3ID8gMTIgOiAxNCk7CgkJY2FzZSBNT0RFX0FMUEhBTlVNRVJJQzoKCQkJcmV0dXJuICh2ZXIgPCAxMCA/IDkgOiB2ZXIgPCAyNyA/IDExIDogMTMpOwoJCWNhc2UgTU9ERV9PQ1RFVDoKCQkJcmV0dXJuICh2ZXIgPCAxMCA/IDggOiAxNik7CgkJY2FzZSBNT0RFX0tBTkpJOgoJCQlyZXR1cm4gKHZlciA8IDEwID8gOCA6IHZlciA8IDI3ID8gMTAgOiAxMik7Cgl9Cn07CgovLyByZXR1cm5zIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBkYXRhIHBvc3NpYmxlIGluIGdpdmVuIGNvbmZpZ3VyYXRpb24uCnZhciBnZXRtYXhkYXRhbGVuID0gZnVuY3Rpb24gKHZlciwgbW9kZSwgZWNjbGV2ZWwpIHsKCXZhciBuYml0cyA9IG5kYXRhYml0cyh2ZXIsIGVjY2xldmVsKSAtIDQgLSBuZGF0YWxlbmJpdHModmVyLCBtb2RlKTsgLy8gNCBmb3IgbW9kZSBiaXRzCglzd2l0Y2ggKG1vZGUpIHsKCQljYXNlIE1PREVfTlVNRVJJQzoKCQkJcmV0dXJuICgobmJpdHMgLyAxMCkgfCAwKSAqIDMgKyAobmJpdHMgJSAxMCA8IDQgPyAwIDogbmJpdHMgJSAxMCA8IDcgPyAxIDogMik7CgkJY2FzZSBNT0RFX0FMUEhBTlVNRVJJQzoKCQkJcmV0dXJuICgobmJpdHMgLyAxMSkgfCAwKSAqIDIgKyAobmJpdHMgJSAxMSA8IDYgPyAwIDogMSk7CgkJY2FzZSBNT0RFX09DVEVUOgoJCQlyZXR1cm4gKG5iaXRzIC8gOCkgfCAwOwoJCWNhc2UgTU9ERV9LQU5KSToKCQkJcmV0dXJuIChuYml0cyAvIDEzKSB8IDA7Cgl9Cn07CgovLyBjaGVja3MgaWYgdGhlIGdpdmVuIGRhdGEgY2FuIGJlIGVuY29kZWQgaW4gZ2l2ZW4gbW9kZSwgYW5kIHJldHVybnMKLy8gdGhlIGNvbnZlcnRlZCBkYXRhIGZvciB0aGUgZnVydGhlciBwcm9jZXNzaW5nIGlmIHBvc3NpYmxlLiBvdGhlcndpc2UKLy8gcmV0dXJucyBudWxsLgovLwovLyB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSBsZW5ndGggb2YgZGF0YTsgaXQgaXMgYSBkdXR5IG9mCi8vIGVuY29kZSBmdW5jdGlvbiBiZWxvdyAoYXMgaXQgZGVwZW5kcyBvbiB0aGUgdmVyc2lvbiBhbmQgRUNDIGxldmVsIHRvbykuCnZhciB2YWxpZGF0ZWRhdGEgPSBmdW5jdGlvbiAobW9kZSwgZGF0YSkgewoJc3dpdGNoIChtb2RlKSB7CgkJY2FzZSBNT0RFX05VTUVSSUM6CgkJCWlmICghZGF0YS5tYXRjaChOVU1FUklDX1JFR0VYUCkpCgkJCQlyZXR1cm4gbnVsbDsKCQkJcmV0dXJuIGRhdGE7CgoJCWNhc2UgTU9ERV9BTFBIQU5VTUVSSUM6CgkJCWlmICghZGF0YS5tYXRjaChBTFBIQU5VTUVSSUNfUkVHRVhQKSkKCQkJCXJldHVybiBudWxsOwoJCQlyZXR1cm4gZGF0YS50b1VwcGVyQ2FzZSgpOwoKCQljYXNlIE1PREVfT0NURVQ6CgkJCWlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHsgLy8gZW5jb2RlIGFzIHV0Zi04IHN0cmluZwoJCQkJdmFyIG5ld2RhdGEgPSBbXTsKCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgewoJCQkJCXZhciBjaCA9IGRhdGEuY2hhckNvZGVBdChpKTsKCQkJCQlpZiAoY2ggPCAweDgwKSB7CgkJCQkJCW5ld2RhdGEucHVzaChjaCk7CgkJCQkJfSBlbHNlIGlmIChjaCA8IDB4ODAwKSB7CgkJCQkJCW5ld2RhdGEucHVzaCgweGMwIHwgKGNoID4+IDYpLAoJCQkJCQkJMHg4MCB8IChjaCAmIDB4M2YpKTsKCQkJCQl9IGVsc2UgaWYgKGNoIDwgMHgxMDAwMCkgewoJCQkJCQluZXdkYXRhLnB1c2goMHhlMCB8IChjaCA+PiAxMiksCgkJCQkJCQkweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpLAoJCQkJCQkJMHg4MCB8IChjaCAmIDB4M2YpKTsKCQkJCQl9IGVsc2UgewoJCQkJCQluZXdkYXRhLnB1c2goMHhmMCB8IChjaCA+PiAxOCksCgkJCQkJCQkweDgwIHwgKChjaCA+PiAxMikgJiAweDNmKSwKCQkJCQkJCTB4ODAgfCAoKGNoID4+IDYpICYgMHgzZiksCgkJCQkJCQkweDgwIHwgKGNoICYgMHgzZikpOwoJCQkJCX0KCQkJCX0KCQkJCXJldHVybiBuZXdkYXRhOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIGRhdGE7CgkJCX0KCX0KfTsKCi8vIHJldHVybnMgdGhlIGNvZGUgd29yZHMgKHNhbnMgRUNDIGJpdHMpIGZvciBnaXZlbiBkYXRhIGFuZCBjb25maWd1cmF0aW9ucy4KLy8gcmVxdWlyZXMgZGF0YSB0byBiZSBwcmVwcm9jZXNzZWQgYnkgdmFsaWRhdGVkYXRhLiBubyBsZW5ndGggY2hlY2sgaXMKLy8gcGVyZm9ybWVkLCBhbmQgZXZlcnl0aGluZyBoYXMgdG8gYmUgY2hlY2tlZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgp2YXIgZW5jb2RlID0gZnVuY3Rpb24gKHZlciwgbW9kZSwgZGF0YSwgbWF4YnVmbGVuKSB7Cgl2YXIgYnVmID0gW107Cgl2YXIgYml0cyA9IDAsIHJlbWFpbmluZyA9IDg7Cgl2YXIgZGF0YWxlbiA9IGRhdGEubGVuZ3RoOwoKCS8vIHRoaXMgZnVuY3Rpb24gaXMgaW50ZW50aW9uYWxseSBuby1vcCB3aGVuIG49MC4KCXZhciBwYWNrID0gZnVuY3Rpb24gKHgsIG4pIHsKCQlpZiAobiA+PSByZW1haW5pbmcpIHsKCQkJYnVmLnB1c2goYml0cyB8ICh4ID4+IChuIC09IHJlbWFpbmluZykpKTsKCQkJd2hpbGUgKG4gPj0gOCkKCQkJCWJ1Zi5wdXNoKCh4ID4+IChuIC09IDgpKSAmIDI1NSk7CgkJCWJpdHMgPSAwOwoJCQlyZW1haW5pbmcgPSA4OwoJCX0KCQlpZiAobiA+IDApCgkJCWJpdHMgfD0gKHggJiAoKDEgPDwgbikgLSAxKSkgPDwgKHJlbWFpbmluZyAtPSBuKTsKCX07CgoJdmFyIG5sZW5iaXRzID0gbmRhdGFsZW5iaXRzKHZlciwgbW9kZSk7CglwYWNrKG1vZGUsIDQpOwoJcGFjayhkYXRhbGVuLCBubGVuYml0cyk7CgoJc3dpdGNoIChtb2RlKSB7CgkJY2FzZSBNT0RFX05VTUVSSUM6CgkJCWZvciAodmFyIGkgPSAyOyBpIDwgZGF0YWxlbjsgaSArPSAzKSB7CgkJCQlwYWNrKHBhcnNlSW50KGRhdGEuc3Vic3RyaW5nKGkgLSAyLCBpICsgMSksIDEwKSwgMTApOwoJCQl9CgkJCXBhY2socGFyc2VJbnQoZGF0YS5zdWJzdHJpbmcoaSAtIDIpLCAxMCksIFswLCA0LCA3XVtkYXRhbGVuICUgM10pOwoJCQlicmVhazsKCgkJY2FzZSBNT0RFX0FMUEhBTlVNRVJJQzoKCQkJZm9yICh2YXIgaSA9IDE7IGkgPCBkYXRhbGVuOyBpICs9IDIpIHsKCQkJCXBhY2soQUxQSEFOVU1FUklDX01BUFtkYXRhLmNoYXJBdChpIC0gMSldICogNDUgKwoJCQkJCUFMUEhBTlVNRVJJQ19NQVBbZGF0YS5jaGFyQXQoaSldLCAxMSk7CgkJCX0KCQkJaWYgKGRhdGFsZW4gJSAyID09IDEpIHsKCQkJCXBhY2soQUxQSEFOVU1FUklDX01BUFtkYXRhLmNoYXJBdChpIC0gMSldLCA2KTsKCQkJfQoJCQlicmVhazsKCgkJY2FzZSBNT0RFX09DVEVUOgoJCQlmb3IgKHZhciBpID0gMDsgaSA8IGRhdGFsZW47ICsraSkgewoJCQkJcGFjayhkYXRhW2ldLCA4KTsKCQkJfQoJCQlicmVhazsKCX0KCgkvLyBmaW5hbCBiaXRzLiBpdCBpcyBwb3NzaWJsZSB0aGF0IGFkZGluZyB0ZXJtaW5hdG9yIGNhdXNlcyB0aGUgYnVmZmVyCgkvLyB0byBvdmVyZmxvdywgYnV0IHRoZW4gdGhlIGJ1ZmZlciB0cnVuY2F0ZWQgdG8gdGhlIG1heGltdW0gc2l6ZSB3aWxsCgkvLyBiZSB2YWxpZCBhcyB0aGUgdHJ1bmNhdGVkIHRlcm1pbmF0b3IgbW9kZSBiaXRzIGFuZCBwYWRkaW5nIGlzCgkvLyBpZGVudGljYWwgaW4gYXBwZWFyYW5jZSAoY2YuIEpJUyBYIDA1MTA6MjAwNCBzZWMgOC40LjgpLgoJcGFjayhNT0RFX1RFUk1JTkFUT1IsIDQpOwoJaWYgKHJlbWFpbmluZyA8IDgpCgkJYnVmLnB1c2goYml0cyk7CgoJLy8gdGhlIHBhZGRpbmcgdG8gZmlsbCB1cCB0aGUgcmVtYWluaW5nIHNwYWNlLiB3ZSBzaG91bGQgbm90IGFkZCBhbnkKCS8vIHdvcmRzIHdoZW4gdGhlIG92ZXJmbG93IGFscmVhZHkgb2NjdXJyZWQuCgl3aGlsZSAoYnVmLmxlbmd0aCArIDEgPCBtYXhidWZsZW4pCgkJYnVmLnB1c2goMHhlYywgMHgxMSk7CglpZiAoYnVmLmxlbmd0aCA8IG1heGJ1ZmxlbikKCQlidWYucHVzaCgweGVjKTsKCXJldHVybiBidWY7Cn07CgovLyBjYWxjdWxhdGVzIEVDQyBjb2RlIHdvcmRzIGZvciBnaXZlbiBjb2RlIHdvcmRzIGFuZCBnZW5lcmF0b3IgcG9seW5vbWlhbC4KLy8KLy8gdGhpcyBpcyBxdWl0ZSBzaW1pbGFyIHRvIENSQyBjYWxjdWxhdGlvbiBhcyBib3RoIFJlZWQtU29sb21vbiBhbmQgQ1JDIHVzZQovLyB0aGUgY2VydGFpbiBraW5kIG9mIGN5Y2xpYyBjb2Rlcywgd2hpY2ggaXMgZWZmZWN0aXZlbHkgdGhlIGRpdmlzaW9uIG9mCi8vIHplcm8tYXVndW1lbnRlZCBwb2x5bm9taWFsIGJ5IHRoZSBnZW5lcmF0b3IgcG9seW5vbWlhbC4gdGhlIG9ubHkgZGlmZmVyZW5jZQovLyBpcyB0aGF0IFJlZWQtU29sb21vbiB1c2VzIEdGKDJeOCksIGluc3RlYWQgb2YgQ1JDJ3MgR0YoMiksIGFuZCBSZWVkLVNvbG9tb24KLy8gdXNlcyB0aGUgZGlmZmVyZW50IGdlbmVyYXRvciBwb2x5bm9taWFsIHRoYW4gQ1JDJ3MuCnZhciBjYWxjdWxhdGVlY2MgPSBmdW5jdGlvbiAocG9seSwgZ2VucG9seSkgewoJdmFyIG1vZHVsdXMgPSBwb2x5LnNsaWNlKDApOwoJdmFyIHBvbHlsZW4gPSBwb2x5Lmxlbmd0aCwgZ2VucG9seWxlbiA9IGdlbnBvbHkubGVuZ3RoOwoJZm9yICh2YXIgaSA9IDA7IGkgPCBnZW5wb2x5bGVuOyArK2kpCgkJbW9kdWx1cy5wdXNoKDApOwoJZm9yICh2YXIgaSA9IDA7IGkgPCBwb2x5bGVuOyApIHsKCQl2YXIgcXVvdGllbnQgPSBHRjI1Nl9JTlZNQVBbbW9kdWx1c1tpKytdXTsKCQlpZiAocXVvdGllbnQgPj0gMCkgewoJCQlmb3IgKHZhciBqID0gMDsgaiA8IGdlbnBvbHlsZW47ICsraikgewoJCQkJbW9kdWx1c1tpICsgal0gXj0gR0YyNTZfTUFQWyhxdW90aWVudCArIGdlbnBvbHlbal0pICUgMjU1XTsKCQkJfQoJCX0KCX0KCXJldHVybiBtb2R1bHVzLnNsaWNlKHBvbHlsZW4pOwp9OwoKLy8gYXVndW1lbnRzIEVDQyBjb2RlIHdvcmRzIHRvIGdpdmVuIGNvZGUgd29yZHMuIHRoZSByZXN1bHRpbmcgd29yZHMgYXJlCi8vIHJlYWR5IHRvIGJlIGVuY29kZWQgaW4gdGhlIG1hdHJpeC4KLy8KLy8gdGhlIG11Y2ggb2YgYWN0dWFsIGF1Z3VtZW50aW5nIHByb2NlZHVyZSBmb2xsb3dzIEpJUyBYIDA1MTA6MjAwNCBzZWMgOC43LgovLyB0aGUgY29kZSBpcyBzaW1wbGlmaWVkIHVzaW5nIHRoZSBmYWN0IHRoYXQgdGhlIHNpemUgb2YgZWFjaCBjb2RlICYgRUNDCi8vIGJsb2NrcyBpcyBhbG1vc3Qgc2FtZTsgZm9yIGV4YW1wbGUsIHdoZW4gd2UgaGF2ZSA0IGJsb2NrcyBhbmQgNDYgZGF0YSB3b3JkcwovLyB0aGUgbnVtYmVyIG9mIGNvZGUgd29yZHMgaW4gdGhvc2UgYmxvY2tzIGFyZSAxMSwgMTEsIDEyLCAxMiByZXNwZWN0aXZlbHkuCnZhciBhdWd1bWVudGVjY3MgPSBmdW5jdGlvbiAocG9seSwgbmJsb2NrcywgZ2VucG9seSkgewoJdmFyIHN1YnNpemVzID0gW107Cgl2YXIgc3Vic2l6ZSA9IChwb2x5Lmxlbmd0aCAvIG5ibG9ja3MpIHwgMCwgc3Vic2l6ZTAgPSAwOwoJdmFyIHBpdm90ID0gbmJsb2NrcyAtIHBvbHkubGVuZ3RoICUgbmJsb2NrczsKCWZvciAodmFyIGkgPSAwOyBpIDwgcGl2b3Q7ICsraSkgewoJCXN1YnNpemVzLnB1c2goc3Vic2l6ZTApOwoJCXN1YnNpemUwICs9IHN1YnNpemU7Cgl9Cglmb3IgKHZhciBpID0gcGl2b3Q7IGkgPCBuYmxvY2tzOyArK2kpIHsKCQlzdWJzaXplcy5wdXNoKHN1YnNpemUwKTsKCQlzdWJzaXplMCArPSBzdWJzaXplICsgMTsKCX0KCXN1YnNpemVzLnB1c2goc3Vic2l6ZTApOwoKCXZhciBlY2NzID0gW107Cglmb3IgKHZhciBpID0gMDsgaSA8IG5ibG9ja3M7ICsraSkgewoJCWVjY3MucHVzaChjYWxjdWxhdGVlY2MocG9seS5zbGljZShzdWJzaXplc1tpXSwgc3Vic2l6ZXNbaSArIDFdKSwgZ2VucG9seSkpOwoJfQoKCXZhciByZXN1bHQgPSBbXTsKCXZhciBuaXRlbXNwZXJibG9jayA9IChwb2x5Lmxlbmd0aCAvIG5ibG9ja3MpIHwgMDsKCWZvciAodmFyIGkgPSAwOyBpIDwgbml0ZW1zcGVyYmxvY2s7ICsraSkgewoJCWZvciAodmFyIGogPSAwOyBqIDwgbmJsb2NrczsgKytqKSB7CgkJCXJlc3VsdC5wdXNoKHBvbHlbc3Vic2l6ZXNbal0gKyBpXSk7CgkJfQoJfQoJZm9yICh2YXIgaiA9IHBpdm90OyBqIDwgbmJsb2NrczsgKytqKSB7CgkJcmVzdWx0LnB1c2gocG9seVtzdWJzaXplc1tqICsgMV0gLSAxXSk7Cgl9Cglmb3IgKHZhciBpID0gMDsgaSA8IGdlbnBvbHkubGVuZ3RoOyArK2kpIHsKCQlmb3IgKHZhciBqID0gMDsgaiA8IG5ibG9ja3M7ICsraikgewoJCQlyZXN1bHQucHVzaChlY2NzW2pdW2ldKTsKCQl9Cgl9CglyZXR1cm4gcmVzdWx0Owp9OwoKLy8gYXVndW1lbnRzIEJDSChwK3EscSkgY29kZSB0byB0aGUgcG9seW5vbWlhbCBvdmVyIEdGKDIpLCBnaXZlbiB0aGUgcHJvcGVyCi8vIGdlbnBvbHkuIHRoZSBib3RoIGlucHV0IGFuZCBvdXRwdXQgYXJlIGluIGJpbmFyeSBudW1iZXJzLCBhbmQgdW5saWtlCi8vIGNhbGN1bGF0ZWVjYyBnZW5wb2x5IHNob3VsZCBpbmNsdWRlIHRoZSAxIGJpdCBmb3IgdGhlIGhpZ2hlc3QgZGVncmVlLgovLwovLyBhY3R1YWwgcG9seW5vbWlhbHMgdXNlZCBmb3IgdGhpcyBwcm9jZWR1cmUgYXJlIGFzIGZvbGxvd3M6Ci8vIC0gcD0xMCwgcT01LCBnZW5wb2x5PXheMTAreF44K3heNSt4XjQreF4yK3grMSAoSklTIFggMDUxMDoyMDA0IEFwcGVuZGl4IEMpCi8vIC0gcD0xOCwgcT02LCBnZW5wb2x5PXheMTIreF4xMSt4XjEwK3heOSt4XjgreF41K3heMisxIChpYmlkLiBBcHBlbmRpeCBEKQp2YXIgYXVndW1lbnRiY2ggPSBmdW5jdGlvbiAocG9seSwgcCwgZ2VucG9seSwgcSkgewoJdmFyIG1vZHVsdXMgPSBwb2x5IDw8IHE7Cglmb3IgKHZhciBpID0gcCAtIDE7IGkgPj0gMDsgLS1pKSB7CgkJaWYgKChtb2R1bHVzID4+IChxICsgaSkpICYgMSkKCQkJbW9kdWx1cyBePSBnZW5wb2x5IDw8IGk7Cgl9CglyZXR1cm4gKHBvbHkgPDwgcSkgfCBtb2R1bHVzOwp9OwoKLy8gY3JlYXRlcyB0aGUgYmFzZSBtYXRyaXggZm9yIGdpdmVuIHZlcnNpb24uIGl0IHJldHVybnMgdHdvIG1hdHJpY2VzLCBvbmUgb2YKLy8gdGhlbSBpcyB0aGUgYWN0dWFsIG9uZSBhbmQgdGhlIGFub3RoZXIgcmVwcmVzZW50cyB0aGUgInJlc2VydmVkIiBwb3J0aW9uCi8vIChlLmcuIGZpbmRlciBhbmQgdGltaW5nIHBhdHRlcm5zKSBvZiB0aGUgbWF0cml4LgovLwovLyBzb21lIGVudHJpZXMgaW4gdGhlIG1hdHJpeCBtYXkgYmUgdW5kZWZpbmVkLCByYXRoZXIgdGhhbiAwIG9yIDEuIHRoaXMgaXMKLy8gaW50ZW50aW9uYWwgKG5vIGluaXRpYWxpemF0aW9uIG5lZWRlZCEpLCBhbmQgcHV0ZGF0YSBiZWxvdyB3aWxsIGZpbGwKLy8gdGhlIHJlbWFpbmluZyBvbmVzLgp2YXIgbWFrZWJhc2VtYXRyaXggPSBmdW5jdGlvbiAodmVyKSB7Cgl2YXIgdiA9IFZFUlNJT05TW3Zlcl0sIG4gPSBnZXRzaXplYnl2ZXIodmVyKTsKCXZhciBtYXRyaXggPSBbXSwgcmVzZXJ2ZWQgPSBbXTsKCWZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CgkJbWF0cml4LnB1c2goW10pOwoJCXJlc2VydmVkLnB1c2goW10pOwoJfQoKCXZhciBibGl0ID0gZnVuY3Rpb24gKHksIHgsIGgsIHcsIGJpdHMpIHsKCQlmb3IgKHZhciBpID0gMDsgaSA8IGg7ICsraSkgewoJCQlmb3IgKHZhciBqID0gMDsgaiA8IHc7ICsraikgewoJCQkJbWF0cml4W3kgKyBpXVt4ICsgal0gPSAoYml0c1tpXSA+PiBqKSAmIDE7CgkJCQlyZXNlcnZlZFt5ICsgaV1beCArIGpdID0gMTsKCQkJfQoJCX0KCX07CgoJLy8gZmluZGVyIHBhdHRlcm5zIGFuZCBhIHBhcnQgb2YgdGltaW5nIHBhdHRlcm5zCgkvLyB3aWxsIGFsc28gbWFyayB0aGUgZm9ybWF0IGluZm9ybWF0aW9uIGFyZWEgKG5vdCB5ZXQgd3JpdHRlbikgYXMgcmVzZXJ2ZWQuCglibGl0KDAsIDAsIDksIDksIFsweDdmLCAweDQxLCAweDVkLCAweDVkLCAweDVkLCAweDQxLCAweDE3ZiwgMHgwMCwgMHg0MF0pOwoJYmxpdChuIC0gOCwgMCwgOCwgOSwgWzB4MTAwLCAweDdmLCAweDQxLCAweDVkLCAweDVkLCAweDVkLCAweDQxLCAweDdmXSk7CglibGl0KDAsIG4gLSA4LCA5LCA4LCBbMHhmZSwgMHg4MiwgMHhiYSwgMHhiYSwgMHhiYSwgMHg4MiwgMHhmZSwgMHgwMCwgMHgwMF0pOwoKCS8vIHRoZSByZXN0IG9mIHRpbWluZyBwYXR0ZXJucwoJZm9yICh2YXIgaSA9IDk7IGkgPCBuIC0gODsgKytpKSB7CgkJbWF0cml4WzZdW2ldID0gbWF0cml4W2ldWzZdID0gfmkgJiAxOwoJCXJlc2VydmVkWzZdW2ldID0gcmVzZXJ2ZWRbaV1bNl0gPSAxOwoJfQoKCS8vIGFsaWdubWVudCBwYXR0ZXJucwoJdmFyIGFsaWducyA9IHZbMl0sIG0gPSBhbGlnbnMubGVuZ3RoOwoJZm9yICh2YXIgaSA9IDA7IGkgPCBtOyArK2kpIHsKCQl2YXIgbWluaiA9IChpID09PSAwIHx8IGkgPT09IG0gLSAxID8gMSA6IDApLCBtYXhqID0gKGkgPT09IDAgPyBtIC0gMSA6IG0pOwoJCWZvciAodmFyIGogPSBtaW5qOyBqIDwgbWF4ajsgKytqKSB7CgkJCWJsaXQoYWxpZ25zW2ldLCBhbGlnbnNbal0sIDUsIDUsIFsweDFmLCAweDExLCAweDE1LCAweDExLCAweDFmXSk7CgkJfQoJfQoKCS8vIHZlcnNpb24gaW5mb3JtYXRpb24KCWlmIChuZWVkc3ZlcmluZm8odmVyKSkgewoJCXZhciBjb2RlID0gYXVndW1lbnRiY2godmVyLCA2LCAweDFmMjUsIDEyKTsKCQl2YXIgayA9IDA7CgkJZm9yICh2YXIgaSA9IDA7IGkgPCA2OyArK2kpIHsKCQkJZm9yICh2YXIgaiA9IDA7IGogPCAzOyArK2opIHsKCQkJCW1hdHJpeFtpXVsobiAtIDExKSArIGpdID0gbWF0cml4WyhuIC0gMTEpICsgal1baV0gPSAoY29kZSA+PiBrKyspICYgMTsKCQkJCXJlc2VydmVkW2ldWyhuIC0gMTEpICsgal0gPSByZXNlcnZlZFsobiAtIDExKSArIGpdW2ldID0gMTsKCQkJfQoJCX0KCX0KCglyZXR1cm4ge21hdHJpeDogbWF0cml4LCByZXNlcnZlZDogcmVzZXJ2ZWR9Owp9OwoKLy8gZmlsbHMgdGhlIGRhdGEgcG9ydGlvbiAoaS5lLiB1bm1hcmtlZCBpbiByZXNlcnZlZCkgb2YgdGhlIG1hdHJpeCB3aXRoIGdpdmVuCi8vIGNvZGUgd29yZHMuIHRoZSBzaXplIG9mIGNvZGUgd29yZHMgc2hvdWxkIGJlIG5vIG1vcmUgdGhhbiBhdmFpbGFibGUgYml0cywKLy8gYW5kIHJlbWFpbmluZyBiaXRzIGFyZSBwYWRkZWQgdG8gMCAoY2YuIEpJUyBYIDA1MTA6MjAwNCBzZWMgOC43LjMpLgp2YXIgcHV0ZGF0YSA9IGZ1bmN0aW9uIChtYXRyaXgsIHJlc2VydmVkLCBidWYpIHsKCXZhciBuID0gbWF0cml4Lmxlbmd0aDsKCXZhciBrID0gMCwgZGlyID0gLTE7Cglmb3IgKHZhciBpID0gbiAtIDE7IGkgPj0gMDsgaSAtPSAyKSB7CgkJaWYgKGkgPT0gNikKCQkJLS1pOyAvLyBza2lwIHRoZSBlbnRpcmUgdGltaW5nIHBhdHRlcm4gY29sdW1uCgkJdmFyIGpqID0gKGRpciA8IDAgPyBuIC0gMSA6IDApOwoJCWZvciAodmFyIGogPSAwOyBqIDwgbjsgKytqKSB7CgkJCWZvciAodmFyIGlpID0gaTsgaWkgPiBpIC0gMjsgLS1paSkgewoJCQkJaWYgKCFyZXNlcnZlZFtqal1baWldKSB7CgkJCQkJLy8gbWF5IG92ZXJmbG93LCBidXQgKHVuZGVmaW5lZCA+PiB4KQoJCQkJCS8vIGlzIDAgc28gaXQgd2lsbCBhdXRvLXBhZCB0byB6ZXJvLgoJCQkJCW1hdHJpeFtqal1baWldID0gKGJ1ZltrID4+IDNdID4+ICh+ayAmIDcpKSAmIDE7CgkJCQkJKytrOwoJCQkJfQoJCQl9CgkJCWpqICs9IGRpcjsKCQl9CgkJZGlyID0gLWRpcjsKCX0KCXJldHVybiBtYXRyaXg7Cn07CgovLyBYT1ItbWFza3MgdGhlIGRhdGEgcG9ydGlvbiBvZiB0aGUgbWF0cml4LiByZXBlYXRpbmcgdGhlIGNhbGwgd2l0aCB0aGUgc2FtZQovLyBhcmd1bWVudHMgd2lsbCByZXZlcnQgdGhlIHByaW9yIGNhbGwgKGNvbnZlbmllbnQgaW4gdGhlIG1hdHJpeCBldmFsdWF0aW9uKS4KdmFyIG1hc2tkYXRhID0gZnVuY3Rpb24gKG1hdHJpeCwgcmVzZXJ2ZWQsIG1hc2spIHsKCXZhciBtYXNrZiA9IE1BU0tGVU5DU1ttYXNrXTsKCXZhciBuID0gbWF0cml4Lmxlbmd0aDsKCWZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CgkJZm9yICh2YXIgaiA9IDA7IGogPCBuOyArK2opIHsKCQkJaWYgKCFyZXNlcnZlZFtpXVtqXSkKCQkJCW1hdHJpeFtpXVtqXSBePSBtYXNrZihpLCBqKTsKCQl9Cgl9CglyZXR1cm4gbWF0cml4Owp9OwoKLy8gcHV0cyB0aGUgZm9ybWF0IGluZm9ybWF0aW9uLgp2YXIgcHV0Zm9ybWF0aW5mbyA9IGZ1bmN0aW9uIChtYXRyaXgsIHJlc2VydmVkLCBlY2NsZXZlbCwgbWFzaykgewoJdmFyIG4gPSBtYXRyaXgubGVuZ3RoOwoJdmFyIGNvZGUgPSBhdWd1bWVudGJjaCgoZWNjbGV2ZWwgPDwgMykgfCBtYXNrLCA1LCAweDUzNywgMTApIF4gMHg1NDEyOwoJZm9yICh2YXIgaSA9IDA7IGkgPCAxNTsgKytpKSB7CgkJdmFyIHIgPSBbMCwgMSwgMiwgMywgNCwgNSwgNywgOCwgbiAtIDcsIG4gLSA2LCBuIC0gNSwgbiAtIDQsIG4gLSAzLCBuIC0gMiwgbiAtIDFdW2ldOwoJCXZhciBjID0gW24gLSAxLCBuIC0gMiwgbiAtIDMsIG4gLSA0LCBuIC0gNSwgbiAtIDYsIG4gLSA3LCBuIC0gOCwgNywgNSwgNCwgMywgMiwgMSwgMF1baV07CgkJbWF0cml4W3JdWzhdID0gbWF0cml4WzhdW2NdID0gKGNvZGUgPj4gaSkgJiAxOwoJCS8vIHdlIGRvbid0IGhhdmUgdG8gbWFyayB0aG9zZSBiaXRzIHJlc2VydmVkOyBhbHdheXMgZG9uZQoJCS8vIGluIG1ha2ViYXNlbWF0cml4IGFib3ZlLgoJfQoJcmV0dXJuIG1hdHJpeDsKfTsKCi8vIGV2YWx1YXRlcyB0aGUgcmVzdWx0aW5nIG1hdHJpeCBhbmQgcmV0dXJucyB0aGUgc2NvcmUgKGxvd2VyIGlzIGJldHRlcikuCi8vIChjZi4gSklTIFggMDUxMDoyMDA0IHNlYyA4LjguMikKLy8KLy8gdGhlIGV2YWx1YXRpb24gcHJvY2VkdXJlIHRyaWVzIHRvIGF2b2lkIHRoZSBwcm9ibGVtYXRpYyBwYXR0ZXJucyBuYXR1cmFsbHkKLy8gb2NjdXJpbmcgZnJvbSB0aGUgb3JpZ2luYWwgbWF0cml4LiBmb3IgZXhhbXBsZSwgaXQgcGVuYWx0aXplcyB0aGUgcGF0dGVybnMKLy8gd2hpY2gganVzdCBsb29rIGxpa2UgdGhlIGZpbmRlciBwYXR0ZXJuIHdoaWNoIHdpbGwgY29uZnVzZSB0aGUgZGVjb2Rlci4KLy8gd2UgY2hvb3NlIHRoZSBtYXNrIHdoaWNoIHJlc3VsdHMgaW4gdGhlIGxvd2VzdCBzY29yZSBhbW9uZyA4IHBvc3NpYmxlIG9uZXMuCi8vCi8vIG5vdGU6IHp4aW5nIHNlZW1zIHRvIHVzZSB0aGUgc2FtZSBwcm9jZWR1cmUgYW5kIGluIG1hbnkgY2FzZXMgaXRzIGNob2ljZQovLyBhZ3JlZXMgdG8gb3VycywgYnV0IHNvbWV0aW1lcyBpdCBkb2VzIG5vdC4gcHJhY3RpY2FsbHkgaXQgZG9lc24ndCBtYXR0ZXIuCnZhciBldmFsdWF0ZW1hdHJpeCA9IGZ1bmN0aW9uIChtYXRyaXgpIHsKCS8vIE4xKyhrLTUpIHBvaW50cyBmb3IgZWFjaCBjb25zZWN1dGl2ZSByb3cgb2YgayBzYW1lLWNvbG9yZWQgbW9kdWxlcywKCS8vIHdoZXJlIGsgPj0gNS4gbm8gb3ZlcmxhcHBpbmcgcm93IGNvdW50cy4KCXZhciBQRU5BTFRZX0NPTlNFQ1VUSVZFID0gMzsKCS8vIE4yIHBvaW50cyBmb3IgZWFjaCAyeDIgYmxvY2sgb2Ygc2FtZS1jb2xvcmVkIG1vZHVsZXMuCgkvLyBvdmVybGFwcGluZyBibG9jayBkb2VzIGNvdW50LgoJdmFyIFBFTkFMVFlfVFdPQllUV08gPSAzOwoJLy8gTjMgcG9pbnRzIGZvciBlYWNoIHBhdHRlcm4gd2l0aCA+NFc6MUI6MVc6M0I6MVc6MUIgb3IKCS8vIDFCOjFXOjNCOjFXOjFCOj40Vywgb3IgdGhlaXIgbXVsdGlwbGVzIChlLmcuIGhpZ2hseSB1bmxpa2VseSwKCS8vIGJ1dCAxM1c6M0I6M1c6OUI6M1c6M0IgY291bnRzKS4KCXZhciBQRU5BTFRZX0ZJTkRFUkxJS0UgPSA0MDsKCS8vIE40KmsgcG9pbnRzIGZvciBldmVyeSAoNSprKSUgZGV2aWF0aW9uIGZyb20gNTAlIGJsYWNrIGRlbnNpdHkuCgkvLyBpLmUuIGs9MSBmb3IgNTV+NjAlIGFuZCA0MH40NSUsIGs9MiBmb3IgNjB+NjUlIGFuZCAzNX40MCUsIGV0Yy4KCXZhciBQRU5BTFRZX0RFTlNJVFkgPSAxMDsKCgl2YXIgZXZhbHVhdGVncm91cCA9IGZ1bmN0aW9uIChncm91cHMpIHsgLy8gYXNzdW1lcyBbVyxCLFcsQixXLC4uLixCLFddCgkJdmFyIHNjb3JlID0gMDsKCQlmb3IgKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7ICsraSkgewoJCQlpZiAoZ3JvdXBzW2ldID49IDUpCgkJCQlzY29yZSArPSBQRU5BTFRZX0NPTlNFQ1VUSVZFICsgKGdyb3Vwc1tpXSAtIDUpOwoJCX0KCQlmb3IgKHZhciBpID0gNTsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkgKz0gMikgewoJCQl2YXIgcCA9IGdyb3Vwc1tpXTsKCQkJaWYgKGdyb3Vwc1tpIC0gMV0gPT0gcCAmJiBncm91cHNbaSAtIDJdID09IDMgKiBwICYmIGdyb3Vwc1tpIC0gM10gPT0gcCAmJgoJCQkJZ3JvdXBzW2kgLSA0XSA9PSBwICYmIChncm91cHNbaSAtIDVdID49IDQgKiBwIHx8IGdyb3Vwc1tpICsgMV0gPj0gNCAqIHApKSB7CgkJCQkvLyB0aGlzIHBhcnQgZGlmZmVycyBmcm9tIHp4aW5nLi4uCgkJCQlzY29yZSArPSBQRU5BTFRZX0ZJTkRFUkxJS0U7CgkJCX0KCQl9CgkJcmV0dXJuIHNjb3JlOwoJfTsKCgl2YXIgbiA9IG1hdHJpeC5sZW5ndGg7Cgl2YXIgc2NvcmUgPSAwLCBuYmxhY2tzID0gMDsKCWZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKSB7CgkJdmFyIHJvdyA9IG1hdHJpeFtpXTsKCQl2YXIgZ3JvdXBzOwoKCQkvLyBldmFsdWF0ZSB0aGUgY3VycmVudCByb3cKCQlncm91cHMgPSBbMF07IC8vIHRoZSBmaXJzdCBlbXB0eSBncm91cCBvZiB3aGl0ZQoJCWZvciAodmFyIGogPSAwOyBqIDwgbjsgKSB7CgkJCXZhciBrOwoJCQlmb3IgKGsgPSAwOyBqIDwgbiAmJiByb3dbal07ICsraykKCQkJCSsrajsKCQkJZ3JvdXBzLnB1c2goayk7CgkJCWZvciAoayA9IDA7IGogPCBuICYmICFyb3dbal07ICsraykKCQkJCSsrajsKCQkJZ3JvdXBzLnB1c2goayk7CgkJfQoJCXNjb3JlICs9IGV2YWx1YXRlZ3JvdXAoZ3JvdXBzKTsKCgkJLy8gZXZhbHVhdGUgdGhlIGN1cnJlbnQgY29sdW1uCgkJZ3JvdXBzID0gWzBdOwoJCWZvciAodmFyIGogPSAwOyBqIDwgbjsgKSB7CgkJCXZhciBrOwoJCQlmb3IgKGsgPSAwOyBqIDwgbiAmJiBtYXRyaXhbal1baV07ICsraykKCQkJCSsrajsKCQkJZ3JvdXBzLnB1c2goayk7CgkJCWZvciAoayA9IDA7IGogPCBuICYmICFtYXRyaXhbal1baV07ICsraykKCQkJCSsrajsKCQkJZ3JvdXBzLnB1c2goayk7CgkJfQoJCXNjb3JlICs9IGV2YWx1YXRlZ3JvdXAoZ3JvdXBzKTsKCgkJLy8gY2hlY2sgdGhlIDJ4MiBib3ggYW5kIGNhbGN1bGF0ZSB0aGUgZGVuc2l0eQoJCXZhciBuZXh0cm93ID0gbWF0cml4W2kgKyAxXSB8fCBbXTsKCQluYmxhY2tzICs9IHJvd1swXTsKCQlmb3IgKHZhciBqID0gMTsgaiA8IG47ICsraikgewoJCQl2YXIgcCA9IHJvd1tqXTsKCQkJbmJsYWNrcyArPSBwOwoJCQkvLyBhdCBsZWFzdCBjb21wYXJpc29uIHdpdGggbmV4dCByb3cgc2hvdWxkIGJlIHN0cmljdC4uLgoJCQlpZiAocm93W2ogLSAxXSA9PSBwICYmIG5leHRyb3dbal0gPT09IHAgJiYgbmV4dHJvd1tqIC0gMV0gPT09IHApIHsKCQkJCXNjb3JlICs9IFBFTkFMVFlfVFdPQllUV087CgkJCX0KCQl9Cgl9CgoJc2NvcmUgKz0gUEVOQUxUWV9ERU5TSVRZICogKChNYXRoLmFicyhuYmxhY2tzIC8gbiAvIG4gLSAwLjUpIC8gMC4wNSkgfCAwKTsKCXJldHVybiBzY29yZTsKfTsKCi8vIHJldHVybnMgdGhlIGZ1bGx5IGVuY29kZWQgUVIgY29kZSBtYXRyaXggd2hpY2ggY29udGFpbnMgZ2l2ZW4gZGF0YS4KLy8gaXQgYWxzbyBjaG9vc2VzIHRoZSBiZXN0IG1hc2sgYXV0b21hdGljYWxseSB3aGVuIG1hc2sgaXMgLTEuCnZhciBnZW5lcmF0ZSA9IGZ1bmN0aW9uIChkYXRhLCB2ZXIsIG1vZGUsIGVjY2xldmVsLCBtYXNrKSB7Cgl2YXIgdiA9IFZFUlNJT05TW3Zlcl07Cgl2YXIgYnVmID0gZW5jb2RlKHZlciwgbW9kZSwgZGF0YSwgbmRhdGFiaXRzKHZlciwgZWNjbGV2ZWwpID4+IDMpOwoJYnVmID0gYXVndW1lbnRlY2NzKGJ1ZiwgdlsxXVtlY2NsZXZlbF0sIEdGMjU2X0dFTlBPTFlbdlswXVtlY2NsZXZlbF1dKTsKCgl2YXIgcmVzdWx0ID0gbWFrZWJhc2VtYXRyaXgodmVyKTsKCXZhciBtYXRyaXggPSByZXN1bHQubWF0cml4LCByZXNlcnZlZCA9IHJlc3VsdC5yZXNlcnZlZDsKCXB1dGRhdGEobWF0cml4LCByZXNlcnZlZCwgYnVmKTsKCglpZiAobWFzayA8IDApIHsKCQkvLyBmaW5kIHRoZSBiZXN0IG1hc2sKCQltYXNrZGF0YShtYXRyaXgsIHJlc2VydmVkLCAwKTsKCQlwdXRmb3JtYXRpbmZvKG1hdHJpeCwgcmVzZXJ2ZWQsIGVjY2xldmVsLCAwKTsKCQl2YXIgYmVzdG1hc2sgPSAwLCBiZXN0c2NvcmUgPSBldmFsdWF0ZW1hdHJpeChtYXRyaXgpOwoJCW1hc2tkYXRhKG1hdHJpeCwgcmVzZXJ2ZWQsIDApOwoJCWZvciAobWFzayA9IDE7IG1hc2sgPCA4OyArK21hc2spIHsKCQkJbWFza2RhdGEobWF0cml4LCByZXNlcnZlZCwgbWFzayk7CgkJCXB1dGZvcm1hdGluZm8obWF0cml4LCByZXNlcnZlZCwgZWNjbGV2ZWwsIG1hc2spOwoJCQl2YXIgc2NvcmUgPSBldmFsdWF0ZW1hdHJpeChtYXRyaXgpOwoJCQlpZiAoYmVzdHNjb3JlID4gc2NvcmUpIHsKCQkJCWJlc3RzY29yZSA9IHNjb3JlOwoJCQkJYmVzdG1hc2sgPSBtYXNrOwoJCQl9CgkJCW1hc2tkYXRhKG1hdHJpeCwgcmVzZXJ2ZWQsIG1hc2spOwoJCX0KCQltYXNrID0gYmVzdG1hc2s7Cgl9CgoJbWFza2RhdGEobWF0cml4LCByZXNlcnZlZCwgbWFzayk7CglwdXRmb3JtYXRpbmZvKG1hdHJpeCwgcmVzZXJ2ZWQsIGVjY2xldmVsLCBtYXNrKTsKCXJldHVybiBtYXRyaXg7Cn07CgovLyB0aGUgcHVibGljIGludGVyZmFjZSBpcyB0cml2aWFsOyB0aGUgb3B0aW9ucyBhdmFpbGFibGUgYXJlIGFzIGZvbGxvd3M6Ci8vCi8vIC0gdmVyc2lvbjogYW4gaW50ZWdlciBpbiBbMSw0MF0uIHdoZW4gb21pdHRlZCAob3IgLTEpIHRoZSBzbWFsbGVzdCBwb3NzaWJsZQovLyAgIHZlcnNpb24gaXMgY2hvc2VuLgovLyAtIG1vZGU6IG9uZSBvZiAnbnVtZXJpYycsICdhbHBoYW51bWVyaWMnLCAnb2N0ZXQnLiB3aGVuIG9taXR0ZWQgdGhlIHNtYWxsZXN0Ci8vICAgcG9zc2libGUgbW9kZSBpcyBjaG9zZW4uCi8vIC0gZWNjTGV2ZWw6IG9uZSBvZiAnTCcsICdNJywgJ1EnLCAnSCcuIGRlZmF1bHRzIHRvICdMJy4KLy8gLSBtYXNrOiBhbiBpbnRlZ2VyIGluIFswLDddLiB3aGVuIG9taXR0ZWQgKG9yIC0xKSB0aGUgYmVzdCBtYXNrIGlzIGNob3Nlbi4KLy8KCmZ1bmN0aW9uIGdlbmVyYXRlRnJhbWUoZGF0YSwgb3B0aW9ucykgewoJdmFyIE1PREVTID0geydudW1lcmljJzogTU9ERV9OVU1FUklDLCAnYWxwaGFudW1lcmljJzogTU9ERV9BTFBIQU5VTUVSSUMsCgkJJ29jdGV0JzogTU9ERV9PQ1RFVH07Cgl2YXIgRUNDTEVWRUxTID0geydMJzogRUNDTEVWRUxfTCwgJ00nOiBFQ0NMRVZFTF9NLCAnUSc6IEVDQ0xFVkVMX1EsCgkJJ0gnOiBFQ0NMRVZFTF9IfTsKCglvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCXZhciB2ZXIgPSBvcHRpb25zLnZlcnNpb24gfHwgLTE7Cgl2YXIgZWNjbGV2ZWwgPSBFQ0NMRVZFTFNbKG9wdGlvbnMuZWNjTGV2ZWwgfHwgJ0wnKS50b1VwcGVyQ2FzZSgpXTsKCXZhciBtb2RlID0gb3B0aW9ucy5tb2RlID8gTU9ERVNbb3B0aW9ucy5tb2RlLnRvTG93ZXJDYXNlKCldIDogLTE7Cgl2YXIgbWFzayA9ICdtYXNrJyBpbiBvcHRpb25zID8gb3B0aW9ucy5tYXNrIDogLTE7CgoJaWYgKG1vZGUgPCAwKSB7CgkJaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykgewoJCQlpZiAoZGF0YS5tYXRjaChOVU1FUklDX1JFR0VYUCkpIHsKCQkJCW1vZGUgPSBNT0RFX05VTUVSSUM7CgkJCX0gZWxzZSBpZiAoZGF0YS5tYXRjaChBTFBIQU5VTUVSSUNfT1VUX1JFR0VYUCkpIHsKCQkJCS8vIHdoaWxlIGVuY29kZSBzdXBwb3J0cyBjYXNlLWluc2Vuc2l0aXZlIGVuY29kaW5nLCB3ZSByZXN0cmljdCB0aGUgZGF0YSB0byBiZSB1cHBlcmNhc2VkIHdoZW4gYXV0by1zZWxlY3RpbmcgdGhlIG1vZGUuCgkJCQltb2RlID0gTU9ERV9BTFBIQU5VTUVSSUM7CgkJCX0gZWxzZSB7CgkJCQltb2RlID0gTU9ERV9PQ1RFVDsKCQkJfQoJCX0gZWxzZSB7CgkJCW1vZGUgPSBNT0RFX09DVEVUOwoJCX0KCX0gZWxzZSBpZiAoIShtb2RlID09IE1PREVfTlVNRVJJQyB8fCBtb2RlID09IE1PREVfQUxQSEFOVU1FUklDIHx8CgkJbW9kZSA9PSBNT0RFX09DVEVUKSkgewoJCXRocm93ICdpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIG1vZGUnOwoJfQoKCWRhdGEgPSB2YWxpZGF0ZWRhdGEobW9kZSwgZGF0YSk7CglpZiAoZGF0YSA9PT0gbnVsbCkKCQl0aHJvdyAnaW52YWxpZCBkYXRhIGZvcm1hdCc7CgoJaWYgKGVjY2xldmVsIDwgMCB8fCBlY2NsZXZlbCA+IDMpCgkJdGhyb3cgJ2ludmFsaWQgRUNDIGxldmVsJzsKCglpZiAodmVyIDwgMCkgewoJCWZvciAodmVyID0gMTsgdmVyIDw9IDQwOyArK3ZlcikgewoJCQlpZiAoZGF0YS5sZW5ndGggPD0gZ2V0bWF4ZGF0YWxlbih2ZXIsIG1vZGUsIGVjY2xldmVsKSkKCQkJCWJyZWFrOwoJCX0KCQlpZiAodmVyID4gNDApCgkJCXRocm93ICd0b28gbGFyZ2UgZGF0YSBmb3IgdGhlIFFyIGZvcm1hdCc7Cgl9IGVsc2UgaWYgKHZlciA8IDEgfHwgdmVyID4gNDApIHsKCQl0aHJvdyAnaW52YWxpZCBRciB2ZXJzaW9uISBzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCA0MCc7Cgl9CgoJaWYgKG1hc2sgIT0gLTEgJiYgKG1hc2sgPCAwIHx8IG1hc2sgPiA4KSkKCQl0aHJvdyAnaW52YWxpZCBtYXNrJzsKCS8vY29uc29sZS5sb2coJ3ZlcnNpb246JywgdmVyLCAnbW9kZTonLCBtb2RlLCAnRUNDOicsIGVjY2xldmVsLCAnbWFzazonLCBtYXNrICkKCXJldHVybiBnZW5lcmF0ZShkYXRhLCB2ZXIsIG1vZGUsIGVjY2xldmVsLCBtYXNrKTsKfQoKCi8vIG9wdGlvbnMKLy8gLSBtb2R1bGVzaXplOiBhIG51bWJlci4gdGhpcyBpcyBhIHNpemUgb2YgZWFjaCBtb2R1bGVzIGluIHBpeGVscywgYW5kCi8vICAgZGVmYXVsdHMgdG8gNXB4LgovLyAtIG1hcmdpbjogYSBudW1iZXIuIHRoaXMgaXMgYSBzaXplIG9mIG1hcmdpbiBpbiAqbW9kdWxlcyosIGFuZCBkZWZhdWx0cyB0bwovLyAgIDQgKHdoaXRlIG1vZHVsZXMpLiB0aGUgc3BlY2ZpY2lhdGlvbiBtYW5kYXRlcyB0aGUgbWFyZ2luIG5vIGxlc3MgdGhhbiA0Ci8vICAgbW9kdWxlcywgc28gaXQgaXMgYmV0dGVyIG5vdCB0byBhbHRlciB0aGlzIHZhbHVlIHVubGVzcyB5b3Uga25vdyB3aGF0Ci8vICAgeW91J3JlIGRvaW5nLgpmdW5jdGlvbiBidWlsZENhbnZhcyhkYXRhLCBvcHRpb25zKSB7CgoJdmFyIGNhbnZhcyA9IFtdOwoJdmFyIGJhY2tncm91bmQgPSBvcHRpb25zLmJhY2tncm91bmQgfHwgJyNmZmYnOwoJdmFyIGZvcmVncm91bmQgPSBvcHRpb25zLmZvcmVncm91bmQgfHwgJyMwMDAnOwoJLy92YXIgbWFyZ2luID0gb3B0aW9ucy5tYXJnaW4gfHwgNDsKCXZhciBtYXRyaXggPSBnZW5lcmF0ZUZyYW1lKGRhdGEsIG9wdGlvbnMpOwoJdmFyIG4gPSBtYXRyaXgubGVuZ3RoOwoJdmFyIG1vZFNpemUgPSBNYXRoLmZsb29yKG9wdGlvbnMuZml0ID8gb3B0aW9ucy5maXQgLyBuIDogNSk7Cgl2YXIgc2l6ZSA9IG4gKiBtb2RTaXplOwoKCWNhbnZhcy5wdXNoKHsKCQl0eXBlOiAncmVjdCcsCgkJeDogMCwgeTogMCwgdzogc2l6ZSwgaDogc2l6ZSwgbGluZVdpZHRoOiAwLCBjb2xvcjogYmFja2dyb3VuZAoJfSk7CgoJZm9yICh2YXIgaSA9IDA7IGkgPCBuOyArK2kpIHsKCQlmb3IgKHZhciBqID0gMDsgaiA8IG47ICsraikgewoJCQlpZiAobWF0cml4W2ldW2pdKSB7CgkJCQljYW52YXMucHVzaCh7CgkJCQkJdHlwZTogJ3JlY3QnLAoJCQkJCXg6IG1vZFNpemUgKiBqLAoJCQkJCXk6IG1vZFNpemUgKiBpLAoJCQkJCXc6IG1vZFNpemUsCgkJCQkJaDogbW9kU2l6ZSwKCQkJCQlsaW5lV2lkdGg6IDAsCgkJCQkJY29sb3I6IGZvcmVncm91bmQKCQkJCX0pOwoJCQl9CgkJfQoJfQoKCXJldHVybiB7CgkJY2FudmFzOiBjYW52YXMsCgkJc2l6ZTogc2l6ZQoJfTsKCn0KCmZ1bmN0aW9uIG1lYXN1cmUobm9kZSkgewoJdmFyIGNkID0gYnVpbGRDYW52YXMobm9kZS5xciwgbm9kZSk7Cglub2RlLl9jYW52YXMgPSBjZC5jYW52YXM7Cglub2RlLl93aWR0aCA9IG5vZGUuX2hlaWdodCA9IG5vZGUuX21pbldpZHRoID0gbm9kZS5fbWF4V2lkdGggPSBub2RlLl9taW5IZWlnaHQgPSBub2RlLl9tYXhIZWlnaHQgPSBjZC5zaXplOwoJcmV0dXJuIG5vZGU7Cn0KCm1vZHVsZS5leHBvcnRzID0gewoJbWVhc3VyZTogbWVhc3VyZQp9OwoKLyoqKi8gfSksCi8qIDEzNSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKdmFyIEVsZW1lbnRXcml0ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNik7CgovKioKICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBQYWdlRWxlbWVudFdyaXRlciAtIGFuIGV4dGVuZGVkIEVsZW1lbnRXcml0ZXIKICogd2hpY2ggY2FuIGhhbmRsZToKICogLSBwYWdlLWJyZWFrcyAoaXQgYWRkcyBuZXcgcGFnZXMgd2hlbiB0aGVyZSdzIG5vdCBlbm91Z2ggc3BhY2UgbGVmdCksCiAqIC0gcmVwZWF0YWJsZSBmcmFnbWVudHMgKGxpa2UgdGFibGUtaGVhZGVycywgd2hpY2ggYXJlIHJlcGVhdGVkIGV2ZXJ5dGltZQogKiAgICAgICAgICAgICAgICAgICAgICAgICBhIHBhZ2UtYnJlYWsgb2NjdXJzKQogKiAtIHRyYW5zYWN0aW9ucyAodXNlZCBmb3IgdW5icmVha2FibGUtYmxvY2tzIHdoZW4gd2Ugd2FudCB0byBtYWtlIHN1cmUKICogICAgICAgICAgICAgICAgIHdob2xlIGJsb2NrIHdpbGwgYmUgcmVuZGVyZWQgb24gdGhlIHNhbWUgcGFnZSkKICovCmZ1bmN0aW9uIFBhZ2VFbGVtZW50V3JpdGVyKGNvbnRleHQsIHRyYWNrZXIpIHsKCXRoaXMudHJhbnNhY3Rpb25MZXZlbCA9IDA7Cgl0aGlzLnJlcGVhdGFibGVzID0gW107Cgl0aGlzLnRyYWNrZXIgPSB0cmFja2VyOwoJdGhpcy53cml0ZXIgPSBuZXcgRWxlbWVudFdyaXRlcihjb250ZXh0LCB0cmFja2VyKTsKfQoKZnVuY3Rpb24gZml0T25QYWdlKHNlbGYsIGFkZEZjdCkgewoJdmFyIHBvc2l0aW9uID0gYWRkRmN0KHNlbGYpOwoJaWYgKCFwb3NpdGlvbikgewoJCXNlbGYubW92ZVRvTmV4dFBhZ2UoKTsKCQlwb3NpdGlvbiA9IGFkZEZjdChzZWxmKTsKCX0KCXJldHVybiBwb3NpdGlvbjsKfQoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFkZExpbmUgPSBmdW5jdGlvbiAobGluZSwgZG9udFVwZGF0ZUNvbnRleHRQb3NpdGlvbiwgaW5kZXgpIHsKCXJldHVybiBmaXRPblBhZ2UodGhpcywgZnVuY3Rpb24gKHNlbGYpIHsKCQlyZXR1cm4gc2VsZi53cml0ZXIuYWRkTGluZShsaW5lLCBkb250VXBkYXRlQ29udGV4dFBvc2l0aW9uLCBpbmRleCk7Cgl9KTsKfTsKClBhZ2VFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5hZGRJbWFnZSA9IGZ1bmN0aW9uIChpbWFnZSwgaW5kZXgpIHsKCXJldHVybiBmaXRPblBhZ2UodGhpcywgZnVuY3Rpb24gKHNlbGYpIHsKCQlyZXR1cm4gc2VsZi53cml0ZXIuYWRkSW1hZ2UoaW1hZ2UsIGluZGV4KTsKCX0pOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFkZFFyID0gZnVuY3Rpb24gKHFyLCBpbmRleCkgewoJcmV0dXJuIGZpdE9uUGFnZSh0aGlzLCBmdW5jdGlvbiAoc2VsZikgewoJCXJldHVybiBzZWxmLndyaXRlci5hZGRRcihxciwgaW5kZXgpOwoJfSk7Cn07CgpQYWdlRWxlbWVudFdyaXRlci5wcm90b3R5cGUuYWRkVmVjdG9yID0gZnVuY3Rpb24gKHZlY3RvciwgaWdub3JlQ29udGV4dFgsIGlnbm9yZUNvbnRleHRZLCBpbmRleCkgewoJcmV0dXJuIHRoaXMud3JpdGVyLmFkZFZlY3Rvcih2ZWN0b3IsIGlnbm9yZUNvbnRleHRYLCBpZ25vcmVDb250ZXh0WSwgaW5kZXgpOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmJlZ2luQ2xpcCA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7CglyZXR1cm4gdGhpcy53cml0ZXIuYmVnaW5DbGlwKHdpZHRoLCBoZWlnaHQpOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmVuZENsaXAgPSBmdW5jdGlvbiAoKSB7CglyZXR1cm4gdGhpcy53cml0ZXIuZW5kQ2xpcCgpOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFsaWduQ2FudmFzID0gZnVuY3Rpb24gKG5vZGUpIHsKCXRoaXMud3JpdGVyLmFsaWduQ2FudmFzKG5vZGUpOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFkZEZyYWdtZW50ID0gZnVuY3Rpb24gKGZyYWdtZW50LCB1c2VCbG9ja1hPZmZzZXQsIHVzZUJsb2NrWU9mZnNldCwgZG9udFVwZGF0ZUNvbnRleHRQb3NpdGlvbikgewoJaWYgKCF0aGlzLndyaXRlci5hZGRGcmFnbWVudChmcmFnbWVudCwgdXNlQmxvY2tYT2Zmc2V0LCB1c2VCbG9ja1lPZmZzZXQsIGRvbnRVcGRhdGVDb250ZXh0UG9zaXRpb24pKSB7CgkJdGhpcy5tb3ZlVG9OZXh0UGFnZSgpOwoJCXRoaXMud3JpdGVyLmFkZEZyYWdtZW50KGZyYWdtZW50LCB1c2VCbG9ja1hPZmZzZXQsIHVzZUJsb2NrWU9mZnNldCwgZG9udFVwZGF0ZUNvbnRleHRQb3NpdGlvbik7Cgl9Cn07CgpQYWdlRWxlbWVudFdyaXRlci5wcm90b3R5cGUubW92ZVRvTmV4dFBhZ2UgPSBmdW5jdGlvbiAocGFnZU9yaWVudGF0aW9uKSB7CgoJdmFyIG5leHRQYWdlID0gdGhpcy53cml0ZXIuY29udGV4dC5tb3ZlVG9OZXh0UGFnZShwYWdlT3JpZW50YXRpb24pOwoKCWlmIChuZXh0UGFnZS5uZXdQYWdlQ3JlYXRlZCkgewoJCXRoaXMucmVwZWF0YWJsZXMuZm9yRWFjaChmdW5jdGlvbiAocmVwKSB7CgkJCXRoaXMud3JpdGVyLmFkZEZyYWdtZW50KHJlcCwgdHJ1ZSk7CgkJfSwgdGhpcyk7Cgl9IGVsc2UgewoJCXRoaXMucmVwZWF0YWJsZXMuZm9yRWFjaChmdW5jdGlvbiAocmVwKSB7CgkJCXRoaXMud3JpdGVyLmNvbnRleHQubW92ZURvd24ocmVwLmhlaWdodCk7CgkJfSwgdGhpcyk7Cgl9CgoJdGhpcy53cml0ZXIudHJhY2tlci5lbWl0KCdwYWdlQ2hhbmdlZCcsIHsKCQlwcmV2UGFnZTogbmV4dFBhZ2UucHJldlBhZ2UsCgkJcHJldlk6IG5leHRQYWdlLnByZXZZLAoJCXk6IG5leHRQYWdlLnkKCX0pOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmJlZ2luVW5icmVha2FibGVCbG9jayA9IGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7CglpZiAodGhpcy50cmFuc2FjdGlvbkxldmVsKysgPT09IDApIHsKCQl0aGlzLm9yaWdpbmFsWCA9IHRoaXMud3JpdGVyLmNvbnRleHQueDsKCQl0aGlzLndyaXRlci5wdXNoQ29udGV4dCh3aWR0aCwgaGVpZ2h0KTsKCX0KfTsKClBhZ2VFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5jb21taXRVbmJyZWFrYWJsZUJsb2NrID0gZnVuY3Rpb24gKGZvcmNlZFgsIGZvcmNlZFkpIHsKCWlmICgtLXRoaXMudHJhbnNhY3Rpb25MZXZlbCA9PT0gMCkgewoJCXZhciB1bmJyZWFrYWJsZUNvbnRleHQgPSB0aGlzLndyaXRlci5jb250ZXh0OwoJCXRoaXMud3JpdGVyLnBvcENvbnRleHQoKTsKCgkJdmFyIG5iUGFnZXMgPSB1bmJyZWFrYWJsZUNvbnRleHQucGFnZXMubGVuZ3RoOwoJCWlmIChuYlBhZ2VzID4gMCkgewoJCQkvLyBubyBzdXBwb3J0IGZvciBtdWx0aS1wYWdlIHVuYnJlYWthYmxlQmxvY2tzCgkJCXZhciBmcmFnbWVudCA9IHVuYnJlYWthYmxlQ29udGV4dC5wYWdlc1swXTsKCQkJZnJhZ21lbnQueE9mZnNldCA9IGZvcmNlZFg7CgkJCWZyYWdtZW50LnlPZmZzZXQgPSBmb3JjZWRZOwoKCQkJLy9UT0RPOiB2ZWN0b3JzIGNhbiBpbmZsdWVuY2UgaGVpZ2h0IGluIHNvbWUgc2l0dWF0aW9ucwoJCQlpZiAobmJQYWdlcyA+IDEpIHsKCQkJCS8vIG9uIG91dC1vZi1jb250ZXh0IGJsb2NzIChoZWFkZXJzLCBmb290ZXJzLCBiYWNrZ3JvdW5kKSBoZWlnaHQgc2hvdWxkIGJlIHRoZSB3aG9sZSBEb2N1bWVudENvbnRleHQgaGVpZ2h0CgkJCQlpZiAoZm9yY2VkWCAhPT0gdW5kZWZpbmVkIHx8IGZvcmNlZFkgIT09IHVuZGVmaW5lZCkgewoJCQkJCWZyYWdtZW50LmhlaWdodCA9IHVuYnJlYWthYmxlQ29udGV4dC5nZXRDdXJyZW50UGFnZSgpLnBhZ2VTaXplLmhlaWdodCAtIHVuYnJlYWthYmxlQ29udGV4dC5wYWdlTWFyZ2lucy50b3AgLSB1bmJyZWFrYWJsZUNvbnRleHQucGFnZU1hcmdpbnMuYm90dG9tOwoJCQkJfSBlbHNlIHsKCQkJCQlmcmFnbWVudC5oZWlnaHQgPSB0aGlzLndyaXRlci5jb250ZXh0LmdldEN1cnJlbnRQYWdlKCkucGFnZVNpemUuaGVpZ2h0IC0gdGhpcy53cml0ZXIuY29udGV4dC5wYWdlTWFyZ2lucy50b3AgLSB0aGlzLndyaXRlci5jb250ZXh0LnBhZ2VNYXJnaW5zLmJvdHRvbTsKCQkJCQlmb3IgKHZhciBpID0gMCwgbCA9IHRoaXMucmVwZWF0YWJsZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJCQkJCWZyYWdtZW50LmhlaWdodCAtPSB0aGlzLnJlcGVhdGFibGVzW2ldLmhlaWdodDsKCQkJCQl9CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQlmcmFnbWVudC5oZWlnaHQgPSB1bmJyZWFrYWJsZUNvbnRleHQueTsKCQkJfQoKCQkJaWYgKGZvcmNlZFggIT09IHVuZGVmaW5lZCB8fCBmb3JjZWRZICE9PSB1bmRlZmluZWQpIHsKCQkJCXRoaXMud3JpdGVyLmFkZEZyYWdtZW50KGZyYWdtZW50LCB0cnVlLCB0cnVlLCB0cnVlKTsKCQkJfSBlbHNlIHsKCQkJCXRoaXMuYWRkRnJhZ21lbnQoZnJhZ21lbnQpOwoJCQl9CgkJfQoJfQp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmN1cnJlbnRCbG9ja1RvUmVwZWF0YWJsZSA9IGZ1bmN0aW9uICgpIHsKCXZhciB1bmJyZWFrYWJsZUNvbnRleHQgPSB0aGlzLndyaXRlci5jb250ZXh0OwoJdmFyIHJlcCA9IHtpdGVtczogW119OwoKCXVuYnJlYWthYmxlQ29udGV4dC5wYWdlc1swXS5pdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7CgkJcmVwLml0ZW1zLnB1c2goaXRlbSk7Cgl9KTsKCglyZXAueE9mZnNldCA9IHRoaXMub3JpZ2luYWxYOwoKCS8vVE9ETzogdmVjdG9ycyBjYW4gaW5mbHVlbmNlIGhlaWdodCBpbiBzb21lIHNpdHVhdGlvbnMKCXJlcC5oZWlnaHQgPSB1bmJyZWFrYWJsZUNvbnRleHQueTsKCglyZXR1cm4gcmVwOwp9OwoKUGFnZUVsZW1lbnRXcml0ZXIucHJvdG90eXBlLnB1c2hUb1JlcGVhdGFibGVzID0gZnVuY3Rpb24gKHJlcCkgewoJdGhpcy5yZXBlYXRhYmxlcy5wdXNoKHJlcCk7Cn07CgpQYWdlRWxlbWVudFdyaXRlci5wcm90b3R5cGUucG9wRnJvbVJlcGVhdGFibGVzID0gZnVuY3Rpb24gKCkgewoJdGhpcy5yZXBlYXRhYmxlcy5wb3AoKTsKfTsKClBhZ2VFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5jb250ZXh0ID0gZnVuY3Rpb24gKCkgewoJcmV0dXJuIHRoaXMud3JpdGVyLmNvbnRleHQ7Cn07Cgptb2R1bGUuZXhwb3J0cyA9IFBhZ2VFbGVtZW50V3JpdGVyOwoKCi8qKiovIH0pLAovKiAxMzYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCnZhciBMaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Mik7CnZhciBpc051bWJlciA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNOdW1iZXI7CnZhciBwYWNrID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5wYWNrOwp2YXIgb2Zmc2V0VmVjdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygwKS5vZmZzZXRWZWN0b3I7CnZhciBEb2N1bWVudENvbnRleHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgxKTsKCi8qKgogKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEVsZW1lbnRXcml0ZXIgLSBhIGxpbmUvdmVjdG9yIHdyaXRlciwgd2hpY2ggYWRkcwogKiBlbGVtZW50cyB0byBjdXJyZW50IHBhZ2UgYW5kIHNldHMgdGhlaXIgcG9zaXRpb25zIGJhc2VkIG9uIHRoZSBjb250ZXh0CiAqLwpmdW5jdGlvbiBFbGVtZW50V3JpdGVyKGNvbnRleHQsIHRyYWNrZXIpIHsKCXRoaXMuY29udGV4dCA9IGNvbnRleHQ7Cgl0aGlzLmNvbnRleHRTdGFjayA9IFtdOwoJdGhpcy50cmFja2VyID0gdHJhY2tlcjsKfQoKZnVuY3Rpb24gYWRkUGFnZUl0ZW0ocGFnZSwgaXRlbSwgaW5kZXgpIHsKCWlmIChpbmRleCA9PT0gbnVsbCB8fCBpbmRleCA9PT0gdW5kZWZpbmVkIHx8IGluZGV4IDwgMCB8fCBpbmRleCA+IHBhZ2UuaXRlbXMubGVuZ3RoKSB7CgkJcGFnZS5pdGVtcy5wdXNoKGl0ZW0pOwoJfSBlbHNlIHsKCQlwYWdlLml0ZW1zLnNwbGljZShpbmRleCwgMCwgaXRlbSk7Cgl9Cn0KCkVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFkZExpbmUgPSBmdW5jdGlvbiAobGluZSwgZG9udFVwZGF0ZUNvbnRleHRQb3NpdGlvbiwgaW5kZXgpIHsKCXZhciBoZWlnaHQgPSBsaW5lLmdldEhlaWdodCgpOwoJdmFyIGNvbnRleHQgPSB0aGlzLmNvbnRleHQ7Cgl2YXIgcGFnZSA9IGNvbnRleHQuZ2V0Q3VycmVudFBhZ2UoKSwKCQlwb3NpdGlvbiA9IHRoaXMuZ2V0Q3VycmVudFBvc2l0aW9uT25QYWdlKCk7CgoJaWYgKGNvbnRleHQuYXZhaWxhYmxlSGVpZ2h0IDwgaGVpZ2h0IHx8ICFwYWdlKSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWxpbmUueCA9IGNvbnRleHQueCArIChsaW5lLnggfHwgMCk7CglsaW5lLnkgPSBjb250ZXh0LnkgKyAobGluZS55IHx8IDApOwoKCXRoaXMuYWxpZ25MaW5lKGxpbmUpOwoKCWFkZFBhZ2VJdGVtKHBhZ2UsIHsKCQl0eXBlOiAnbGluZScsCgkJaXRlbTogbGluZQoJfSwgaW5kZXgpOwoJdGhpcy50cmFja2VyLmVtaXQoJ2xpbmVBZGRlZCcsIGxpbmUpOwoKCWlmICghZG9udFVwZGF0ZUNvbnRleHRQb3NpdGlvbikgewoJCWNvbnRleHQubW92ZURvd24oaGVpZ2h0KTsKCX0KCglyZXR1cm4gcG9zaXRpb247Cn07CgpFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5hbGlnbkxpbmUgPSBmdW5jdGlvbiAobGluZSkgewoJdmFyIHdpZHRoID0gdGhpcy5jb250ZXh0LmF2YWlsYWJsZVdpZHRoOwoJdmFyIGxpbmVXaWR0aCA9IGxpbmUuZ2V0V2lkdGgoKTsKCgl2YXIgYWxpZ25tZW50ID0gbGluZS5pbmxpbmVzICYmIGxpbmUuaW5saW5lcy5sZW5ndGggPiAwICYmIGxpbmUuaW5saW5lc1swXS5hbGlnbm1lbnQ7CgoJdmFyIG9mZnNldCA9IDA7Cglzd2l0Y2ggKGFsaWdubWVudCkgewoJCWNhc2UgJ3JpZ2h0JzoKCQkJb2Zmc2V0ID0gd2lkdGggLSBsaW5lV2lkdGg7CgkJCWJyZWFrOwoJCWNhc2UgJ2NlbnRlcic6CgkJCW9mZnNldCA9ICh3aWR0aCAtIGxpbmVXaWR0aCkgLyAyOwoJCQlicmVhazsKCX0KCglpZiAob2Zmc2V0KSB7CgkJbGluZS54ID0gKGxpbmUueCB8fCAwKSArIG9mZnNldDsKCX0KCglpZiAoYWxpZ25tZW50ID09PSAnanVzdGlmeScgJiYKCQkhbGluZS5uZXdMaW5lRm9yY2VkICYmCgkJIWxpbmUubGFzdExpbmVJblBhcmFncmFwaCAmJgoJCWxpbmUuaW5saW5lcy5sZW5ndGggPiAxKSB7CgkJdmFyIGFkZGl0aW9uYWxTcGFjaW5nID0gKHdpZHRoIC0gbGluZVdpZHRoKSAvIChsaW5lLmlubGluZXMubGVuZ3RoIC0gMSk7CgoJCWZvciAodmFyIGkgPSAxLCBsID0gbGluZS5pbmxpbmVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCQlvZmZzZXQgPSBpICogYWRkaXRpb25hbFNwYWNpbmc7CgoJCQlsaW5lLmlubGluZXNbaV0ueCArPSBvZmZzZXQ7CgkJCWxpbmUuaW5saW5lc1tpXS5qdXN0aWZ5U2hpZnQgPSBhZGRpdGlvbmFsU3BhY2luZzsKCQl9Cgl9Cn07CgpFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5hZGRJbWFnZSA9IGZ1bmN0aW9uIChpbWFnZSwgaW5kZXgpIHsKCXZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OwoJdmFyIHBhZ2UgPSBjb250ZXh0LmdldEN1cnJlbnRQYWdlKCksCgkJcG9zaXRpb24gPSB0aGlzLmdldEN1cnJlbnRQb3NpdGlvbk9uUGFnZSgpOwoKCWlmICghcGFnZSB8fCAoaW1hZ2UuYWJzb2x1dGVQb3NpdGlvbiA9PT0gdW5kZWZpbmVkICYmIGNvbnRleHQuYXZhaWxhYmxlSGVpZ2h0IDwgaW1hZ2UuX2hlaWdodCAmJiBwYWdlLml0ZW1zLmxlbmd0aCA+IDApKSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWlmIChpbWFnZS5feCA9PT0gdW5kZWZpbmVkKSB7CgkJaW1hZ2UuX3ggPSBpbWFnZS54IHx8IDA7Cgl9CgoJaW1hZ2UueCA9IGNvbnRleHQueCArIGltYWdlLl94OwoJaW1hZ2UueSA9IGNvbnRleHQueTsKCgl0aGlzLmFsaWduSW1hZ2UoaW1hZ2UpOwoKCWFkZFBhZ2VJdGVtKHBhZ2UsIHsKCQl0eXBlOiAnaW1hZ2UnLAoJCWl0ZW06IGltYWdlCgl9LCBpbmRleCk7CgoJY29udGV4dC5tb3ZlRG93bihpbWFnZS5faGVpZ2h0KTsKCglyZXR1cm4gcG9zaXRpb247Cn07CgpFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5hZGRRciA9IGZ1bmN0aW9uIChxciwgaW5kZXgpIHsKCXZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OwoJdmFyIHBhZ2UgPSBjb250ZXh0LmdldEN1cnJlbnRQYWdlKCksCgkJcG9zaXRpb24gPSB0aGlzLmdldEN1cnJlbnRQb3NpdGlvbk9uUGFnZSgpOwoKCWlmICghcGFnZSB8fCAocXIuYWJzb2x1dGVQb3NpdGlvbiA9PT0gdW5kZWZpbmVkICYmIGNvbnRleHQuYXZhaWxhYmxlSGVpZ2h0IDwgcXIuX2hlaWdodCkpIHsKCQlyZXR1cm4gZmFsc2U7Cgl9CgoJaWYgKHFyLl94ID09PSB1bmRlZmluZWQpIHsKCQlxci5feCA9IHFyLnggfHwgMDsKCX0KCglxci54ID0gY29udGV4dC54ICsgcXIuX3g7Cglxci55ID0gY29udGV4dC55OwoKCXRoaXMuYWxpZ25JbWFnZShxcik7CgoJZm9yICh2YXIgaSA9IDAsIGwgPSBxci5fY2FudmFzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCXZhciB2ZWN0b3IgPSBxci5fY2FudmFzW2ldOwoJCXZlY3Rvci54ICs9IHFyLng7CgkJdmVjdG9yLnkgKz0gcXIueTsKCQl0aGlzLmFkZFZlY3Rvcih2ZWN0b3IsIHRydWUsIHRydWUsIGluZGV4KTsKCX0KCgljb250ZXh0Lm1vdmVEb3duKHFyLl9oZWlnaHQpOwoKCXJldHVybiBwb3NpdGlvbjsKfTsKCkVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFsaWduSW1hZ2UgPSBmdW5jdGlvbiAoaW1hZ2UpIHsKCXZhciB3aWR0aCA9IHRoaXMuY29udGV4dC5hdmFpbGFibGVXaWR0aDsKCXZhciBpbWFnZVdpZHRoID0gaW1hZ2UuX21pbldpZHRoOwoJdmFyIG9mZnNldCA9IDA7Cglzd2l0Y2ggKGltYWdlLl9hbGlnbm1lbnQpIHsKCQljYXNlICdyaWdodCc6CgkJCW9mZnNldCA9IHdpZHRoIC0gaW1hZ2VXaWR0aDsKCQkJYnJlYWs7CgkJY2FzZSAnY2VudGVyJzoKCQkJb2Zmc2V0ID0gKHdpZHRoIC0gaW1hZ2VXaWR0aCkgLyAyOwoJCQlicmVhazsKCX0KCglpZiAob2Zmc2V0KSB7CgkJaW1hZ2UueCA9IChpbWFnZS54IHx8IDApICsgb2Zmc2V0OwoJfQp9OwoKRWxlbWVudFdyaXRlci5wcm90b3R5cGUuYWxpZ25DYW52YXMgPSBmdW5jdGlvbiAobm9kZSkgewoJdmFyIHdpZHRoID0gdGhpcy5jb250ZXh0LmF2YWlsYWJsZVdpZHRoOwoJdmFyIGNhbnZhc1dpZHRoID0gbm9kZS5fbWluV2lkdGg7Cgl2YXIgb2Zmc2V0ID0gMDsKCXN3aXRjaCAobm9kZS5fYWxpZ25tZW50KSB7CgkJY2FzZSAncmlnaHQnOgoJCQlvZmZzZXQgPSB3aWR0aCAtIGNhbnZhc1dpZHRoOwoJCQlicmVhazsKCQljYXNlICdjZW50ZXInOgoJCQlvZmZzZXQgPSAod2lkdGggLSBjYW52YXNXaWR0aCkgLyAyOwoJCQlicmVhazsKCX0KCWlmIChvZmZzZXQpIHsKCQlub2RlLmNhbnZhcy5mb3JFYWNoKGZ1bmN0aW9uICh2ZWN0b3IpIHsKCQkJb2Zmc2V0VmVjdG9yKHZlY3Rvciwgb2Zmc2V0LCAwKTsKCQl9KTsKCX0KfTsKCkVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmFkZFZlY3RvciA9IGZ1bmN0aW9uICh2ZWN0b3IsIGlnbm9yZUNvbnRleHRYLCBpZ25vcmVDb250ZXh0WSwgaW5kZXgpIHsKCXZhciBjb250ZXh0ID0gdGhpcy5jb250ZXh0OwoJdmFyIHBhZ2UgPSBjb250ZXh0LmdldEN1cnJlbnRQYWdlKCksCgkJcG9zaXRpb24gPSB0aGlzLmdldEN1cnJlbnRQb3NpdGlvbk9uUGFnZSgpOwoKCWlmIChwYWdlKSB7CgkJb2Zmc2V0VmVjdG9yKHZlY3RvciwgaWdub3JlQ29udGV4dFggPyAwIDogY29udGV4dC54LCBpZ25vcmVDb250ZXh0WSA/IDAgOiBjb250ZXh0LnkpOwoJCWFkZFBhZ2VJdGVtKHBhZ2UsIHsKCQkJdHlwZTogJ3ZlY3RvcicsCgkJCWl0ZW06IHZlY3RvcgoJCX0sIGluZGV4KTsKCQlyZXR1cm4gcG9zaXRpb247Cgl9Cn07CgpFbGVtZW50V3JpdGVyLnByb3RvdHlwZS5iZWdpbkNsaXAgPSBmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkgewoJdmFyIGN0eCA9IHRoaXMuY29udGV4dDsKCXZhciBwYWdlID0gY3R4LmdldEN1cnJlbnRQYWdlKCk7CglwYWdlLml0ZW1zLnB1c2goewoJCXR5cGU6ICdiZWdpbkNsaXAnLAoJCWl0ZW06IHt4OiBjdHgueCwgeTogY3R4LnksIHdpZHRoOiB3aWR0aCwgaGVpZ2h0OiBoZWlnaHR9Cgl9KTsKCXJldHVybiB0cnVlOwp9OwoKRWxlbWVudFdyaXRlci5wcm90b3R5cGUuZW5kQ2xpcCA9IGZ1bmN0aW9uICgpIHsKCXZhciBjdHggPSB0aGlzLmNvbnRleHQ7Cgl2YXIgcGFnZSA9IGN0eC5nZXRDdXJyZW50UGFnZSgpOwoJcGFnZS5pdGVtcy5wdXNoKHsKCQl0eXBlOiAnZW5kQ2xpcCcKCX0pOwoJcmV0dXJuIHRydWU7Cn07CgpmdW5jdGlvbiBjbG9uZUxpbmUobGluZSkgewoJdmFyIHJlc3VsdCA9IG5ldyBMaW5lKGxpbmUubWF4V2lkdGgpOwoKCWZvciAodmFyIGtleSBpbiBsaW5lKSB7CgkJaWYgKGxpbmUuaGFzT3duUHJvcGVydHkoa2V5KSkgewoJCQlyZXN1bHRba2V5XSA9IGxpbmVba2V5XTsKCQl9Cgl9CgoJcmV0dXJuIHJlc3VsdDsKfQoKRWxlbWVudFdyaXRlci5wcm90b3R5cGUuYWRkRnJhZ21lbnQgPSBmdW5jdGlvbiAoYmxvY2ssIHVzZUJsb2NrWE9mZnNldCwgdXNlQmxvY2tZT2Zmc2V0LCBkb250VXBkYXRlQ29udGV4dFBvc2l0aW9uKSB7Cgl2YXIgY3R4ID0gdGhpcy5jb250ZXh0OwoJdmFyIHBhZ2UgPSBjdHguZ2V0Q3VycmVudFBhZ2UoKTsKCglpZiAoIXVzZUJsb2NrWE9mZnNldCAmJiBibG9jay5oZWlnaHQgPiBjdHguYXZhaWxhYmxlSGVpZ2h0KSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoKCWJsb2NrLml0ZW1zLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0pIHsKCQlzd2l0Y2ggKGl0ZW0udHlwZSkgewoJCQljYXNlICdsaW5lJzoKCQkJCXZhciBsID0gY2xvbmVMaW5lKGl0ZW0uaXRlbSk7CgoJCQkJbC54ID0gKGwueCB8fCAwKSArICh1c2VCbG9ja1hPZmZzZXQgPyAoYmxvY2sueE9mZnNldCB8fCAwKSA6IGN0eC54KTsKCQkJCWwueSA9IChsLnkgfHwgMCkgKyAodXNlQmxvY2tZT2Zmc2V0ID8gKGJsb2NrLnlPZmZzZXQgfHwgMCkgOiBjdHgueSk7CgoJCQkJcGFnZS5pdGVtcy5wdXNoKHsKCQkJCQl0eXBlOiAnbGluZScsCgkJCQkJaXRlbTogbAoJCQkJfSk7CgkJCQlicmVhazsKCgkJCWNhc2UgJ3ZlY3Rvcic6CgkJCQl2YXIgdiA9IHBhY2soaXRlbS5pdGVtKTsKCgkJCQlvZmZzZXRWZWN0b3IodiwgdXNlQmxvY2tYT2Zmc2V0ID8gKGJsb2NrLnhPZmZzZXQgfHwgMCkgOiBjdHgueCwgdXNlQmxvY2tZT2Zmc2V0ID8gKGJsb2NrLnlPZmZzZXQgfHwgMCkgOiBjdHgueSk7CgkJCQlwYWdlLml0ZW1zLnB1c2goewoJCQkJCXR5cGU6ICd2ZWN0b3InLAoJCQkJCWl0ZW06IHYKCQkJCX0pOwoJCQkJYnJlYWs7CgoJCQljYXNlICdpbWFnZSc6CgkJCQl2YXIgaW1nID0gcGFjayhpdGVtLml0ZW0pOwoKCQkJCWltZy54ID0gKGltZy54IHx8IDApICsgKHVzZUJsb2NrWE9mZnNldCA/IChibG9jay54T2Zmc2V0IHx8IDApIDogY3R4LngpOwoJCQkJaW1nLnkgPSAoaW1nLnkgfHwgMCkgKyAodXNlQmxvY2tZT2Zmc2V0ID8gKGJsb2NrLnlPZmZzZXQgfHwgMCkgOiBjdHgueSk7CgoJCQkJcGFnZS5pdGVtcy5wdXNoKHsKCQkJCQl0eXBlOiAnaW1hZ2UnLAoJCQkJCWl0ZW06IGltZwoJCQkJfSk7CgkJCQlicmVhazsKCQl9Cgl9KTsKCglpZiAoIWRvbnRVcGRhdGVDb250ZXh0UG9zaXRpb24pIHsKCQljdHgubW92ZURvd24oYmxvY2suaGVpZ2h0KTsKCX0KCglyZXR1cm4gdHJ1ZTsKfTsKCi8qKgogKiBQdXNoZXMgdGhlIHByb3ZpZGVkIGNvbnRleHQgb250byB0aGUgc3RhY2sgb3IgY3JlYXRlcyBhIG5ldyBvbmUKICoKICogcHVzaENvbnRleHQoY29udGV4dCkgLSBwdXNoZXMgdGhlIHByb3ZpZGVkIGNvbnRleHQgYW5kIG1ha2VzIGl0IGN1cnJlbnQKICogcHVzaENvbnRleHQod2lkdGgsIGhlaWdodCkgLSBjcmVhdGVzIGFuZCBwdXNoZXMgYSBuZXcgY29udGV4dCB3aXRoIHRoZSBzcGVjaWZpZWQgd2lkdGggYW5kIGhlaWdodAogKiBwdXNoQ29udGV4dCgpIC0gY3JlYXRlcyBhIG5ldyBjb250ZXh0IGZvciB1bmJyZWFrYWJsZSBibG9ja3MgKHdpdGggY3VycmVudCBhdmFpbGFibGVXaWR0aCBhbmQgZnVsbC1wYWdlLWhlaWdodCkKICovCkVsZW1lbnRXcml0ZXIucHJvdG90eXBlLnB1c2hDb250ZXh0ID0gZnVuY3Rpb24gKGNvbnRleHRPcldpZHRoLCBoZWlnaHQpIHsKCWlmIChjb250ZXh0T3JXaWR0aCA9PT0gdW5kZWZpbmVkKSB7CgkJaGVpZ2h0ID0gdGhpcy5jb250ZXh0LmdldEN1cnJlbnRQYWdlKCkuaGVpZ2h0IC0gdGhpcy5jb250ZXh0LnBhZ2VNYXJnaW5zLnRvcCAtIHRoaXMuY29udGV4dC5wYWdlTWFyZ2lucy5ib3R0b207CgkJY29udGV4dE9yV2lkdGggPSB0aGlzLmNvbnRleHQuYXZhaWxhYmxlV2lkdGg7Cgl9CgoJaWYgKGlzTnVtYmVyKGNvbnRleHRPcldpZHRoKSkgewoJCWNvbnRleHRPcldpZHRoID0gbmV3IERvY3VtZW50Q29udGV4dCh7d2lkdGg6IGNvbnRleHRPcldpZHRoLCBoZWlnaHQ6IGhlaWdodH0sIHtsZWZ0OiAwLCByaWdodDogMCwgdG9wOiAwLCBib3R0b206IDB9KTsKCX0KCgl0aGlzLmNvbnRleHRTdGFjay5wdXNoKHRoaXMuY29udGV4dCk7Cgl0aGlzLmNvbnRleHQgPSBjb250ZXh0T3JXaWR0aDsKfTsKCkVsZW1lbnRXcml0ZXIucHJvdG90eXBlLnBvcENvbnRleHQgPSBmdW5jdGlvbiAoKSB7Cgl0aGlzLmNvbnRleHQgPSB0aGlzLmNvbnRleHRTdGFjay5wb3AoKTsKfTsKCkVsZW1lbnRXcml0ZXIucHJvdG90eXBlLmdldEN1cnJlbnRQb3NpdGlvbk9uUGFnZSA9IGZ1bmN0aW9uICgpIHsKCXJldHVybiAodGhpcy5jb250ZXh0U3RhY2tbMF0gfHwgdGhpcy5jb250ZXh0KS5nZXRDdXJyZW50UG9zaXRpb24oKTsKfTsKCgptb2R1bGUuZXhwb3J0cyA9IEVsZW1lbnRXcml0ZXI7CgoKLyoqKi8gfSksCi8qIDEzNyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKdmFyIENvbHVtbkNhbGN1bGF0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ0KTsKdmFyIGlzRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDApLmlzRnVuY3Rpb247CgpmdW5jdGlvbiBUYWJsZVByb2Nlc3Nvcih0YWJsZU5vZGUpIHsKCXRoaXMudGFibGVOb2RlID0gdGFibGVOb2RlOwp9CgpUYWJsZVByb2Nlc3Nvci5wcm90b3R5cGUuYmVnaW5UYWJsZSA9IGZ1bmN0aW9uICh3cml0ZXIpIHsKCXZhciB0YWJsZU5vZGU7Cgl2YXIgYXZhaWxhYmxlV2lkdGg7Cgl2YXIgc2VsZiA9IHRoaXM7CgoJdGFibGVOb2RlID0gdGhpcy50YWJsZU5vZGU7Cgl0aGlzLm9mZnNldHMgPSB0YWJsZU5vZGUuX29mZnNldHM7Cgl0aGlzLmxheW91dCA9IHRhYmxlTm9kZS5fbGF5b3V0OwoKCWF2YWlsYWJsZVdpZHRoID0gd3JpdGVyLmNvbnRleHQoKS5hdmFpbGFibGVXaWR0aCAtIHRoaXMub2Zmc2V0cy50b3RhbDsKCUNvbHVtbkNhbGN1bGF0b3IuYnVpbGRDb2x1bW5XaWR0aHModGFibGVOb2RlLnRhYmxlLndpZHRocywgYXZhaWxhYmxlV2lkdGgpOwoKCXRoaXMudGFibGVXaWR0aCA9IHRhYmxlTm9kZS5fb2Zmc2V0cy50b3RhbCArIGdldFRhYmxlSW5uZXJDb250ZW50V2lkdGgoKTsKCXRoaXMucm93U3BhbkRhdGEgPSBwcmVwYXJlUm93U3BhbkRhdGEoKTsKCXRoaXMuY2xlYW5VcFJlcGVhdGFibGVzID0gZmFsc2U7CgoJdGhpcy5oZWFkZXJSb3dzID0gdGFibGVOb2RlLnRhYmxlLmhlYWRlclJvd3MgfHwgMDsKCXRoaXMucm93c1dpdGhvdXRQYWdlQnJlYWsgPSB0aGlzLmhlYWRlclJvd3MgKyAodGFibGVOb2RlLnRhYmxlLmtlZXBXaXRoSGVhZGVyUm93cyB8fCAwKTsKCXRoaXMuZG9udEJyZWFrUm93cyA9IHRhYmxlTm9kZS50YWJsZS5kb250QnJlYWtSb3dzIHx8IGZhbHNlOwoKCWlmICh0aGlzLnJvd3NXaXRob3V0UGFnZUJyZWFrKSB7CgkJd3JpdGVyLmJlZ2luVW5icmVha2FibGVCbG9jaygpOwoJfQoKCS8vIHVwZGF0ZSB0aGUgYm9yZGVyIHByb3BlcnRpZXMgb2YgYWxsIGNlbGxzIGJlZm9yZSBkcmF3aW5nIGFueSBsaW5lcwoJcHJlcGFyZUNlbGxCb3JkZXJzKHRoaXMudGFibGVOb2RlLnRhYmxlLmJvZHkpOwoKCXRoaXMuZHJhd0hvcml6b250YWxMaW5lKDAsIHdyaXRlcik7CgoJZnVuY3Rpb24gZ2V0VGFibGVJbm5lckNvbnRlbnRXaWR0aCgpIHsKCQl2YXIgd2lkdGggPSAwOwoKCQl0YWJsZU5vZGUudGFibGUud2lkdGhzLmZvckVhY2goZnVuY3Rpb24gKHcpIHsKCQkJd2lkdGggKz0gdy5fY2FsY1dpZHRoOwoJCX0pOwoKCQlyZXR1cm4gd2lkdGg7Cgl9CgoJZnVuY3Rpb24gcHJlcGFyZVJvd1NwYW5EYXRhKCkgewoJCXZhciByc2QgPSBbXTsKCQl2YXIgeCA9IDA7CgkJdmFyIGxhc3RXaWR0aCA9IDA7CgoJCXJzZC5wdXNoKHtsZWZ0OiAwLCByb3dTcGFuOiAwfSk7CgoJCWZvciAodmFyIGkgPSAwLCBsID0gc2VsZi50YWJsZU5vZGUudGFibGUuYm9keVswXS5sZW5ndGg7IGkgPCBsOyBpKyspIHsKCQkJdmFyIHBhZGRpbmdzID0gc2VsZi5sYXlvdXQucGFkZGluZ0xlZnQoaSwgc2VsZi50YWJsZU5vZGUpICsgc2VsZi5sYXlvdXQucGFkZGluZ1JpZ2h0KGksIHNlbGYudGFibGVOb2RlKTsKCQkJdmFyIGxCb3JkZXIgPSBzZWxmLmxheW91dC52TGluZVdpZHRoKGksIHNlbGYudGFibGVOb2RlKTsKCQkJbGFzdFdpZHRoID0gcGFkZGluZ3MgKyBsQm9yZGVyICsgc2VsZi50YWJsZU5vZGUudGFibGUud2lkdGhzW2ldLl9jYWxjV2lkdGg7CgkJCXJzZFtyc2QubGVuZ3RoIC0gMV0ud2lkdGggPSBsYXN0V2lkdGg7CgkJCXggKz0gbGFzdFdpZHRoOwoJCQlyc2QucHVzaCh7bGVmdDogeCwgcm93U3BhbjogMCwgd2lkdGg6IDB9KTsKCQl9CgoJCXJldHVybiByc2Q7Cgl9CgoJLy8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBjZWxscy4gSWYgdGhlIGN1cnJlbnQgY2VsbCBpcyB0aGUgc3RhcnQgb2YgYQoJLy8gcm93U3Bhbi9jb2xTcGFuLCB1cGRhdGUgdGhlIGJvcmRlciBwcm9wZXJ0eSBvZiB0aGUgY2VsbHMgb24gaXRzCgkvLyBib3R0b20vcmlnaHQgYWNjb3JkaW5nbHkuIFRoaXMgaXMgbmVlZGVkIHNpbmNlIGVhY2ggaXRlcmF0aW9uIG9mIHRoZQoJLy8gbGluZS1kcmF3aW5nIGxvb3BzIGRyYXdzIGxpbmVzIGZvciBhIHNpbmdsZSBjZWxsLCBub3QgZm9yIGFuIGVudGlyZQoJLy8gcm93U3Bhbi9jb2xTcGFuLgoJZnVuY3Rpb24gcHJlcGFyZUNlbGxCb3JkZXJzKGJvZHkpIHsKCQlmb3IgKHZhciByb3dJbmRleCA9IDA7IHJvd0luZGV4IDwgYm9keS5sZW5ndGg7IHJvd0luZGV4KyspIHsKCQkJdmFyIHJvdyA9IGJvZHlbcm93SW5kZXhdOwoKCQkJZm9yICh2YXIgY29sSW5kZXggPSAwOyBjb2xJbmRleCA8IHJvdy5sZW5ndGg7IGNvbEluZGV4KyspIHsKCQkJCXZhciBjZWxsID0gcm93W2NvbEluZGV4XTsKCgkJCQlpZiAoY2VsbC5ib3JkZXIpIHsKCQkJCQl2YXIgcm93U3BhbiA9IGNlbGwucm93U3BhbiB8fCAxOwoJCQkJCXZhciBjb2xTcGFuID0gY2VsbC5jb2xTcGFuIHx8IDE7CgoJCQkJCWZvciAodmFyIHJvd09mZnNldCA9IDA7IHJvd09mZnNldCA8IHJvd1NwYW47IHJvd09mZnNldCsrKSB7CgkJCQkJCS8vIHNldCBsZWZ0IGJvcmRlcgoJCQkJCQlpZiAoY2VsbC5ib3JkZXJbMF0gIT09IHVuZGVmaW5lZCAmJiByb3dPZmZzZXQgPiAwKSB7CgkJCQkJCQlzZXRCb3JkZXIocm93SW5kZXggKyByb3dPZmZzZXQsIGNvbEluZGV4LCAwLCBjZWxsLmJvcmRlclswXSk7CgkJCQkJCX0KCgkJCQkJCS8vIHNldCByaWdodCBib3JkZXIKCQkJCQkJaWYgKGNlbGwuYm9yZGVyWzJdICE9PSB1bmRlZmluZWQpIHsKCQkJCQkJCXNldEJvcmRlcihyb3dJbmRleCArIHJvd09mZnNldCwgY29sSW5kZXggKyBjb2xTcGFuIC0gMSwgMiwgY2VsbC5ib3JkZXJbMl0pOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQlmb3IgKHZhciBjb2xPZmZzZXQgPSAwOyBjb2xPZmZzZXQgPCBjb2xTcGFuOyBjb2xPZmZzZXQrKykgewoJCQkJCQkvLyBzZXQgdG9wIGJvcmRlcgoJCQkJCQlpZiAoY2VsbC5ib3JkZXJbMV0gIT09IHVuZGVmaW5lZCAmJiBjb2xPZmZzZXQgPiAwKSB7CgkJCQkJCQlzZXRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4ICsgY29sT2Zmc2V0LCAxLCBjZWxsLmJvcmRlclsxXSk7CgkJCQkJCX0KCgkJCQkJCS8vIHNldCBib3R0b20gYm9yZGVyCgkJCQkJCWlmIChjZWxsLmJvcmRlclszXSAhPT0gdW5kZWZpbmVkKSB7CgkJCQkJCQlzZXRCb3JkZXIocm93SW5kZXggKyByb3dTcGFuIC0gMSwgY29sSW5kZXggKyBjb2xPZmZzZXQsIDMsIGNlbGwuYm9yZGVyWzNdKTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJLy8gaGVscGVyIGZ1bmN0aW9uIHRvIHNldCB0aGUgYm9yZGVyIGZvciBhIGdpdmVuIGNlbGwKCQlmdW5jdGlvbiBzZXRCb3JkZXIocm93SW5kZXgsIGNvbEluZGV4LCBib3JkZXJJbmRleCwgYm9yZGVyVmFsdWUpIHsKCQkJdmFyIGNlbGwgPSBib2R5W3Jvd0luZGV4XVtjb2xJbmRleF07CgkJCWNlbGwuYm9yZGVyID0gY2VsbC5ib3JkZXIgfHwge307CgkJCWNlbGwuYm9yZGVyW2JvcmRlckluZGV4XSA9IGJvcmRlclZhbHVlOwoJCX0KCX0KfTsKClRhYmxlUHJvY2Vzc29yLnByb3RvdHlwZS5vblJvd0JyZWFrID0gZnVuY3Rpb24gKHJvd0luZGV4LCB3cml0ZXIpIHsKCXZhciBzZWxmID0gdGhpczsKCXJldHVybiBmdW5jdGlvbiAoKSB7CgkJdmFyIG9mZnNldCA9IHNlbGYucm93UGFkZGluZ1RvcCArICghc2VsZi5oZWFkZXJSb3dzID8gc2VsZi50b3BMaW5lV2lkdGggOiAwKTsKCQl3cml0ZXIuY29udGV4dCgpLmF2YWlsYWJsZUhlaWdodCAtPSBzZWxmLnJlc2VydmVkQXRCb3R0b207CgkJd3JpdGVyLmNvbnRleHQoKS5tb3ZlRG93bihvZmZzZXQpOwoJfTsKfTsKClRhYmxlUHJvY2Vzc29yLnByb3RvdHlwZS5iZWdpblJvdyA9IGZ1bmN0aW9uIChyb3dJbmRleCwgd3JpdGVyKSB7Cgl0aGlzLnRvcExpbmVXaWR0aCA9IHRoaXMubGF5b3V0LmhMaW5lV2lkdGgocm93SW5kZXgsIHRoaXMudGFibGVOb2RlKTsKCXRoaXMucm93UGFkZGluZ1RvcCA9IHRoaXMubGF5b3V0LnBhZGRpbmdUb3Aocm93SW5kZXgsIHRoaXMudGFibGVOb2RlKTsKCXRoaXMuYm90dG9tTGluZVdpZHRoID0gdGhpcy5sYXlvdXQuaExpbmVXaWR0aChyb3dJbmRleCArIDEsIHRoaXMudGFibGVOb2RlKTsKCXRoaXMucm93UGFkZGluZ0JvdHRvbSA9IHRoaXMubGF5b3V0LnBhZGRpbmdCb3R0b20ocm93SW5kZXgsIHRoaXMudGFibGVOb2RlKTsKCgl0aGlzLnJvd0NhbGxiYWNrID0gdGhpcy5vblJvd0JyZWFrKHJvd0luZGV4LCB3cml0ZXIpOwoJd3JpdGVyLnRyYWNrZXIuc3RhcnRUcmFja2luZygncGFnZUNoYW5nZWQnLCB0aGlzLnJvd0NhbGxiYWNrKTsKCWlmICh0aGlzLmRvbnRCcmVha1Jvd3MpIHsKCQl3cml0ZXIuYmVnaW5VbmJyZWFrYWJsZUJsb2NrKCk7Cgl9Cgl0aGlzLnJvd1RvcFkgPSB3cml0ZXIuY29udGV4dCgpLnk7Cgl0aGlzLnJlc2VydmVkQXRCb3R0b20gPSB0aGlzLmJvdHRvbUxpbmVXaWR0aCArIHRoaXMucm93UGFkZGluZ0JvdHRvbTsKCgl3cml0ZXIuY29udGV4dCgpLmF2YWlsYWJsZUhlaWdodCAtPSB0aGlzLnJlc2VydmVkQXRCb3R0b207CgoJd3JpdGVyLmNvbnRleHQoKS5tb3ZlRG93bih0aGlzLnJvd1BhZGRpbmdUb3ApOwp9OwoKVGFibGVQcm9jZXNzb3IucHJvdG90eXBlLmRyYXdIb3Jpem9udGFsTGluZSA9IGZ1bmN0aW9uIChsaW5lSW5kZXgsIHdyaXRlciwgb3ZlcnJpZGVZKSB7Cgl2YXIgbGluZVdpZHRoID0gdGhpcy5sYXlvdXQuaExpbmVXaWR0aChsaW5lSW5kZXgsIHRoaXMudGFibGVOb2RlKTsKCWlmIChsaW5lV2lkdGgpIHsKCQl2YXIgb2Zmc2V0ID0gbGluZVdpZHRoIC8gMjsKCQl2YXIgY3VycmVudExpbmUgPSBudWxsOwoJCXZhciBib2R5ID0gdGhpcy50YWJsZU5vZGUudGFibGUuYm9keTsKCgkJZm9yICh2YXIgaSA9IDAsIGwgPSB0aGlzLnJvd1NwYW5EYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCQl2YXIgZGF0YSA9IHRoaXMucm93U3BhbkRhdGFbaV07CgkJCXZhciBzaG91bGREcmF3TGluZSA9ICFkYXRhLnJvd1NwYW47CgoJCQkvLyBkcmF3IG9ubHkgaWYgdGhlIGN1cnJlbnQgY2VsbCByZXF1aXJlcyBhIHRvcCBib3JkZXIgb3IgdGhlIGNlbGwgaW4gdGhlCgkJCS8vIHJvdyBhYm92ZSByZXF1aXJlcyBhIGJvdHRvbSBib3JkZXIKCQkJaWYgKHNob3VsZERyYXdMaW5lICYmIGkgPCBsIC0gMSkgewoJCQkJdmFyIHRvcEJvcmRlciA9IGZhbHNlLCBib3R0b21Cb3JkZXIgPSBmYWxzZTsKCgkJCQkvLyB0aGUgY3VycmVudCBjZWxsCgkJCQlpZiAobGluZUluZGV4IDwgYm9keS5sZW5ndGgpIHsKCQkJCQl2YXIgY2VsbCA9IGJvZHlbbGluZUluZGV4XVtpXTsKCQkJCQl0b3BCb3JkZXIgPSBjZWxsLmJvcmRlciA/IGNlbGwuYm9yZGVyWzFdIDogdGhpcy5sYXlvdXQuZGVmYXVsdEJvcmRlcjsKCQkJCX0KCgkJCQkvLyB0aGUgY2VsbCBpbiB0aGUgcm93IGFib3ZlCgkJCQlpZiAobGluZUluZGV4ID4gMCkgewoJCQkJCXZhciBjZWxsQWJvdmUgPSBib2R5W2xpbmVJbmRleCAtIDFdW2ldOwoJCQkJCWJvdHRvbUJvcmRlciA9IGNlbGxBYm92ZS5ib3JkZXIgPyBjZWxsQWJvdmUuYm9yZGVyWzNdIDogdGhpcy5sYXlvdXQuZGVmYXVsdEJvcmRlcjsKCQkJCX0KCgkJCQlzaG91bGREcmF3TGluZSA9IHRvcEJvcmRlciB8fCBib3R0b21Cb3JkZXI7CgkJCX0KCgkJCWlmICghY3VycmVudExpbmUgJiYgc2hvdWxkRHJhd0xpbmUpIHsKCQkJCWN1cnJlbnRMaW5lID0ge2xlZnQ6IGRhdGEubGVmdCwgd2lkdGg6IDB9OwoJCQl9CgoJCQlpZiAoc2hvdWxkRHJhd0xpbmUpIHsKCQkJCWN1cnJlbnRMaW5lLndpZHRoICs9IChkYXRhLndpZHRoIHx8IDApOwoJCQl9CgoJCQl2YXIgeSA9IChvdmVycmlkZVkgfHwgMCkgKyBvZmZzZXQ7CgoJCQlpZiAoIXNob3VsZERyYXdMaW5lIHx8IGkgPT09IGwgLSAxKSB7CgkJCQlpZiAoY3VycmVudExpbmUgJiYgY3VycmVudExpbmUud2lkdGgpIHsKCQkJCQl3cml0ZXIuYWRkVmVjdG9yKHsKCQkJCQkJdHlwZTogJ2xpbmUnLAoJCQkJCQl4MTogY3VycmVudExpbmUubGVmdCwKCQkJCQkJeDI6IGN1cnJlbnRMaW5lLmxlZnQgKyBjdXJyZW50TGluZS53aWR0aCwKCQkJCQkJeTE6IHksCgkJCQkJCXkyOiB5LAoJCQkJCQlsaW5lV2lkdGg6IGxpbmVXaWR0aCwKCQkJCQkJbGluZUNvbG9yOiBpc0Z1bmN0aW9uKHRoaXMubGF5b3V0LmhMaW5lQ29sb3IpID8gdGhpcy5sYXlvdXQuaExpbmVDb2xvcihsaW5lSW5kZXgsIHRoaXMudGFibGVOb2RlKSA6IHRoaXMubGF5b3V0LmhMaW5lQ29sb3IKCQkJCQl9LCBmYWxzZSwgb3ZlcnJpZGVZKTsKCQkJCQljdXJyZW50TGluZSA9IG51bGw7CgkJCQl9CgkJCX0KCQl9CgoJCXdyaXRlci5jb250ZXh0KCkubW92ZURvd24obGluZVdpZHRoKTsKCX0KfTsKClRhYmxlUHJvY2Vzc29yLnByb3RvdHlwZS5kcmF3VmVydGljYWxMaW5lID0gZnVuY3Rpb24gKHgsIHkwLCB5MSwgdkxpbmVJbmRleCwgd3JpdGVyKSB7Cgl2YXIgd2lkdGggPSB0aGlzLmxheW91dC52TGluZVdpZHRoKHZMaW5lSW5kZXgsIHRoaXMudGFibGVOb2RlKTsKCWlmICh3aWR0aCA9PT0gMCkgewoJCXJldHVybjsKCX0KCXdyaXRlci5hZGRWZWN0b3IoewoJCXR5cGU6ICdsaW5lJywKCQl4MTogeCArIHdpZHRoIC8gMiwKCQl4MjogeCArIHdpZHRoIC8gMiwKCQl5MTogeTAsCgkJeTI6IHkxLAoJCWxpbmVXaWR0aDogd2lkdGgsCgkJbGluZUNvbG9yOiBpc0Z1bmN0aW9uKHRoaXMubGF5b3V0LnZMaW5lQ29sb3IpID8gdGhpcy5sYXlvdXQudkxpbmVDb2xvcih2TGluZUluZGV4LCB0aGlzLnRhYmxlTm9kZSkgOiB0aGlzLmxheW91dC52TGluZUNvbG9yCgl9LCBmYWxzZSwgdHJ1ZSk7Cn07CgpUYWJsZVByb2Nlc3Nvci5wcm90b3R5cGUuZW5kVGFibGUgPSBmdW5jdGlvbiAod3JpdGVyKSB7CglpZiAodGhpcy5jbGVhblVwUmVwZWF0YWJsZXMpIHsKCQl3cml0ZXIucG9wRnJvbVJlcGVhdGFibGVzKCk7CgkJdGhpcy5oZWFkZXJSZXBlYXRhYmxlSGVpZ2h0ID0gbnVsbDsKCX0KfTsKClRhYmxlUHJvY2Vzc29yLnByb3RvdHlwZS5lbmRSb3cgPSBmdW5jdGlvbiAocm93SW5kZXgsIHdyaXRlciwgcGFnZUJyZWFrcykgewoJdmFyIGwsIGk7Cgl2YXIgc2VsZiA9IHRoaXM7Cgl3cml0ZXIudHJhY2tlci5zdG9wVHJhY2tpbmcoJ3BhZ2VDaGFuZ2VkJywgdGhpcy5yb3dDYWxsYmFjayk7Cgl3cml0ZXIuY29udGV4dCgpLm1vdmVEb3duKHRoaXMubGF5b3V0LnBhZGRpbmdCb3R0b20ocm93SW5kZXgsIHRoaXMudGFibGVOb2RlKSk7Cgl3cml0ZXIuY29udGV4dCgpLmF2YWlsYWJsZUhlaWdodCArPSB0aGlzLnJlc2VydmVkQXRCb3R0b207CgoJdmFyIGVuZGluZ1BhZ2UgPSB3cml0ZXIuY29udGV4dCgpLnBhZ2U7Cgl2YXIgZW5kaW5nWSA9IHdyaXRlci5jb250ZXh0KCkueTsKCgl2YXIgeHMgPSBnZXRMaW5lWHMoKTsKCgl2YXIgeXMgPSBbXTsKCgl2YXIgaGFzQnJlYWtzID0gcGFnZUJyZWFrcyAmJiBwYWdlQnJlYWtzLmxlbmd0aCA+IDA7Cgl2YXIgYm9keSA9IHRoaXMudGFibGVOb2RlLnRhYmxlLmJvZHk7CgoJeXMucHVzaCh7CgkJeTA6IHRoaXMucm93VG9wWSwKCQlwYWdlOiBoYXNCcmVha3MgPyBwYWdlQnJlYWtzWzBdLnByZXZQYWdlIDogZW5kaW5nUGFnZQoJfSk7CgoJaWYgKGhhc0JyZWFrcykgewoJCWZvciAoaSA9IDAsIGwgPSBwYWdlQnJlYWtzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCQl2YXIgcGFnZUJyZWFrID0gcGFnZUJyZWFrc1tpXTsKCQkJeXNbeXMubGVuZ3RoIC0gMV0ueTEgPSBwYWdlQnJlYWsucHJldlk7CgoJCQl5cy5wdXNoKHt5MDogcGFnZUJyZWFrLnksIHBhZ2U6IHBhZ2VCcmVhay5wcmV2UGFnZSArIDF9KTsKCgkJCWlmICh0aGlzLmhlYWRlclJlcGVhdGFibGVIZWlnaHQpIHsKCQkJCXlzW3lzLmxlbmd0aCAtIDFdLnkwICs9IHRoaXMuaGVhZGVyUmVwZWF0YWJsZUhlaWdodDsKCQkJfQoJCX0KCX0KCgl5c1t5cy5sZW5ndGggLSAxXS55MSA9IGVuZGluZ1k7CgoJdmFyIHNraXBPcnBoYW5lUGFkZGluZyA9ICh5c1swXS55MSAtIHlzWzBdLnkwID09PSB0aGlzLnJvd1BhZGRpbmdUb3ApOwoJZm9yICh2YXIgeWkgPSAoc2tpcE9ycGhhbmVQYWRkaW5nID8gMSA6IDApLCB5bCA9IHlzLmxlbmd0aDsgeWkgPCB5bDsgeWkrKykgewoJCXZhciB3aWxsQnJlYWsgPSB5aSA8IHlzLmxlbmd0aCAtIDE7CgkJdmFyIHJvd0JyZWFrV2l0aG91dEhlYWRlciA9ICh5aSA+IDAgJiYgIXRoaXMuaGVhZGVyUm93cyk7CgkJdmFyIGh6TGluZU9mZnNldCA9IHJvd0JyZWFrV2l0aG91dEhlYWRlciA/IDAgOiB0aGlzLnRvcExpbmVXaWR0aDsKCQl2YXIgeTEgPSB5c1t5aV0ueTA7CgkJdmFyIHkyID0geXNbeWldLnkxOwoKCQlpZiAod2lsbEJyZWFrKSB7CgkJCXkyID0geTIgKyB0aGlzLnJvd1BhZGRpbmdCb3R0b207CgkJfQoKCQlpZiAod3JpdGVyLmNvbnRleHQoKS5wYWdlICE9IHlzW3lpXS5wYWdlKSB7CgkJCXdyaXRlci5jb250ZXh0KCkucGFnZSA9IHlzW3lpXS5wYWdlOwoKCQkJLy9UT0RPOiBidWdneSwgYXZhaWxhYmxlSGVpZ2h0IHNob3VsZCBiZSB1cGRhdGVkIG9uIGV2ZXJ5IHBhZ2VDaGFuZ2VkIGV2ZW50CgkJCS8vIFRhYmxlUHJvY2Vzc29yIHNob3VsZCBiZSBwYWdlQ2hhbmdlZCBsaXN0ZW5lciwgaW5zdGVhZCBvZiBwcm9jZXNzUm93CgkJCXRoaXMucmVzZXJ2ZWRBdEJvdHRvbSA9IDA7CgkJfQoKCQlmb3IgKGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJCXZhciBsZWZ0Qm9yZGVyID0gZmFsc2UsIHJpZ2h0Qm9yZGVyID0gZmFsc2U7CgkJCXZhciBjb2xJbmRleCA9IHhzW2ldLmluZGV4OwoKCQkJLy8gdGhlIGN1cnJlbnQgY2VsbAoJCQlpZiAoY29sSW5kZXggPCBib2R5W3Jvd0luZGV4XS5sZW5ndGgpIHsKCQkJCXZhciBjZWxsID0gYm9keVtyb3dJbmRleF1bY29sSW5kZXhdOwoJCQkJbGVmdEJvcmRlciA9IGNlbGwuYm9yZGVyID8gY2VsbC5ib3JkZXJbMF0gOiB0aGlzLmxheW91dC5kZWZhdWx0Qm9yZGVyOwoJCQl9CgoJCQkvLyB0aGUgY2VsbCBmcm9tIGJlZm9yZSBjb2x1bW4KCQkJaWYgKGNvbEluZGV4ID4gMCkgewoJCQkJdmFyIGNlbGwgPSBib2R5W3Jvd0luZGV4XVtjb2xJbmRleCAtIDFdOwoJCQkJcmlnaHRCb3JkZXIgPSBjZWxsLmJvcmRlciA/IGNlbGwuYm9yZGVyWzJdIDogdGhpcy5sYXlvdXQuZGVmYXVsdEJvcmRlcjsKCQkJfQoKCQkJaWYgKGxlZnRCb3JkZXIgfHwgcmlnaHRCb3JkZXIpIHsKCQkJCXRoaXMuZHJhd1ZlcnRpY2FsTGluZSh4c1tpXS54LCB5MSAtIGh6TGluZU9mZnNldCwgeTIgKyB0aGlzLmJvdHRvbUxpbmVXaWR0aCwgeHNbaV0uaW5kZXgsIHdyaXRlcik7CgkJCX0KCgkJCWlmIChpIDwgbCAtIDEpIHsKCQkJCXZhciBmaWxsQ29sb3IgPSBib2R5W3Jvd0luZGV4XVtjb2xJbmRleF0uZmlsbENvbG9yOwoJCQkJaWYgKCFmaWxsQ29sb3IpIHsKCQkJCQlmaWxsQ29sb3IgPSBpc0Z1bmN0aW9uKHRoaXMubGF5b3V0LmZpbGxDb2xvcikgPyB0aGlzLmxheW91dC5maWxsQ29sb3Iocm93SW5kZXgsIHRoaXMudGFibGVOb2RlLCBjb2xJbmRleCkgOiB0aGlzLmxheW91dC5maWxsQ29sb3I7CgkJCQl9CgkJCQlpZiAoZmlsbENvbG9yKSB7CgkJCQkJdmFyIHdCb3JkZXIgPSAobGVmdEJvcmRlciB8fCByaWdodEJvcmRlcikgPyB0aGlzLmxheW91dC52TGluZVdpZHRoKGNvbEluZGV4LCB0aGlzLnRhYmxlTm9kZSkgOiAwOwoJCQkJCXZhciB4ZiA9IHhzW2ldLnggKyB3Qm9yZGVyOwoJCQkJCXZhciB5ZiA9IHRoaXMuZG9udEJyZWFrUm93cyA/IHkxIDogeTEgLSBoekxpbmVPZmZzZXQ7CgkJCQkJd3JpdGVyLmFkZFZlY3Rvcih7CgkJCQkJCXR5cGU6ICdyZWN0JywKCQkJCQkJeDogeGYsCgkJCQkJCXk6IHlmLAoJCQkJCQl3OiB4c1tpICsgMV0ueCAtIHhmLAoJCQkJCQloOiB5MiArIHRoaXMuYm90dG9tTGluZVdpZHRoIC0geWYsCgkJCQkJCWxpbmVXaWR0aDogMCwKCQkJCQkJY29sb3I6IGZpbGxDb2xvcgoJCQkJCX0sIGZhbHNlLCB0cnVlLCB3cml0ZXIuY29udGV4dCgpLmhhc0JhY2tncm91bmQgPyAxIDogMCk7CgkJCQl9CgkJCX0KCQl9CgoJCWlmICh3aWxsQnJlYWsgJiYgdGhpcy5sYXlvdXQuaExpbmVXaGVuQnJva2VuICE9PSBmYWxzZSkgewoJCQl0aGlzLmRyYXdIb3Jpem9udGFsTGluZShyb3dJbmRleCArIDEsIHdyaXRlciwgeTIpOwoJCX0KCQlpZiAocm93QnJlYWtXaXRob3V0SGVhZGVyICYmIHRoaXMubGF5b3V0LmhMaW5lV2hlbkJyb2tlbiAhPT0gZmFsc2UpIHsKCQkJdGhpcy5kcmF3SG9yaXpvbnRhbExpbmUocm93SW5kZXgsIHdyaXRlciwgeTEpOwoJCX0KCX0KCgl3cml0ZXIuY29udGV4dCgpLnBhZ2UgPSBlbmRpbmdQYWdlOwoJd3JpdGVyLmNvbnRleHQoKS55ID0gZW5kaW5nWTsKCgl2YXIgcm93ID0gdGhpcy50YWJsZU5vZGUudGFibGUuYm9keVtyb3dJbmRleF07Cglmb3IgKGkgPSAwLCBsID0gcm93Lmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCWlmIChyb3dbaV0ucm93U3BhbikgewoJCQl0aGlzLnJvd1NwYW5EYXRhW2ldLnJvd1NwYW4gPSByb3dbaV0ucm93U3BhbjsKCgkJCS8vIGZpeCBjb2xTcGFucwoJCQlpZiAocm93W2ldLmNvbFNwYW4gJiYgcm93W2ldLmNvbFNwYW4gPiAxKSB7CgkJCQlmb3IgKHZhciBqID0gMTsgaiA8IHJvd1tpXS5yb3dTcGFuOyBqKyspIHsKCQkJCQl0aGlzLnRhYmxlTm9kZS50YWJsZS5ib2R5W3Jvd0luZGV4ICsgal1baV0uX2NvbFNwYW4gPSByb3dbaV0uY29sU3BhbjsKCQkJCX0KCQkJfQoJCX0KCgkJaWYgKHRoaXMucm93U3BhbkRhdGFbaV0ucm93U3BhbiA+IDApIHsKCQkJdGhpcy5yb3dTcGFuRGF0YVtpXS5yb3dTcGFuLS07CgkJfQoJfQoKCXRoaXMuZHJhd0hvcml6b250YWxMaW5lKHJvd0luZGV4ICsgMSwgd3JpdGVyKTsKCglpZiAodGhpcy5oZWFkZXJSb3dzICYmIHJvd0luZGV4ID09PSB0aGlzLmhlYWRlclJvd3MgLSAxKSB7CgkJdGhpcy5oZWFkZXJSZXBlYXRhYmxlID0gd3JpdGVyLmN1cnJlbnRCbG9ja1RvUmVwZWF0YWJsZSgpOwoJfQoKCWlmICh0aGlzLmRvbnRCcmVha1Jvd3MpIHsKCQl3cml0ZXIudHJhY2tlci5hdXRvKCdwYWdlQ2hhbmdlZCcsCgkJCWZ1bmN0aW9uICgpIHsKCQkJCWlmICghc2VsZi5oZWFkZXJSb3dzICYmIHNlbGYubGF5b3V0LmhMaW5lV2hlbkJyb2tlbiAhPT0gZmFsc2UpIHsKCQkJCQlzZWxmLmRyYXdIb3Jpem9udGFsTGluZShyb3dJbmRleCwgd3JpdGVyKTsKCQkJCX0KCQkJfSwKCQkJZnVuY3Rpb24gKCkgewoJCQkJd3JpdGVyLmNvbW1pdFVuYnJlYWthYmxlQmxvY2soKTsKCQkJfQoJCSk7Cgl9CgoJaWYgKHRoaXMuaGVhZGVyUmVwZWF0YWJsZSAmJiAocm93SW5kZXggPT09ICh0aGlzLnJvd3NXaXRob3V0UGFnZUJyZWFrIC0gMSkgfHwgcm93SW5kZXggPT09IHRoaXMudGFibGVOb2RlLnRhYmxlLmJvZHkubGVuZ3RoIC0gMSkpIHsKCQl0aGlzLmhlYWRlclJlcGVhdGFibGVIZWlnaHQgPSB0aGlzLmhlYWRlclJlcGVhdGFibGUuaGVpZ2h0OwoJCXdyaXRlci5jb21taXRVbmJyZWFrYWJsZUJsb2NrKCk7CgkJd3JpdGVyLnB1c2hUb1JlcGVhdGFibGVzKHRoaXMuaGVhZGVyUmVwZWF0YWJsZSk7CgkJdGhpcy5jbGVhblVwUmVwZWF0YWJsZXMgPSB0cnVlOwoJCXRoaXMuaGVhZGVyUmVwZWF0YWJsZSA9IG51bGw7Cgl9CgoJZnVuY3Rpb24gZ2V0TGluZVhzKCkgewoJCXZhciByZXN1bHQgPSBbXTsKCQl2YXIgY29scyA9IDA7CgoJCWZvciAodmFyIGkgPSAwLCBsID0gc2VsZi50YWJsZU5vZGUudGFibGUuYm9keVtyb3dJbmRleF0ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJCWlmICghY29scykgewoJCQkJcmVzdWx0LnB1c2goe3g6IHNlbGYucm93U3BhbkRhdGFbaV0ubGVmdCwgaW5kZXg6IGl9KTsKCgkJCQl2YXIgaXRlbSA9IHNlbGYudGFibGVOb2RlLnRhYmxlLmJvZHlbcm93SW5kZXhdW2ldOwoJCQkJY29scyA9IChpdGVtLl9jb2xTcGFuIHx8IGl0ZW0uY29sU3BhbiB8fCAwKTsKCQkJfQoJCQlpZiAoY29scyA+IDApIHsKCQkJCWNvbHMtLTsKCQkJfQoJCX0KCgkJcmVzdWx0LnB1c2goe3g6IHNlbGYucm93U3BhbkRhdGFbc2VsZi5yb3dTcGFuRGF0YS5sZW5ndGggLSAxXS5sZWZ0LCBpbmRleDogc2VsZi5yb3dTcGFuRGF0YS5sZW5ndGggLSAxfSk7CgoJCXJldHVybiByZXN1bHQ7Cgl9Cn07Cgptb2R1bGUuZXhwb3J0cyA9IFRhYmxlUHJvY2Vzc29yOwoKCi8qKiovIH0pLAovKiAxMzggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKEJ1ZmZlcikgey8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CgovKgpQREZEb2N1bWVudCAtIHJlcHJlc2VudHMgYW4gZW50aXJlIFBERiBkb2N1bWVudApCeSBEZXZvbiBHb3ZldHQKICovCgooZnVuY3Rpb24oKSB7CiAgdmFyIFBERkRvY3VtZW50LCBQREZPYmplY3QsIFBERlBhZ2UsIFBERlJlZmVyZW5jZSwgZnMsIHN0cmVhbSwKICAgIGV4dGVuZCA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoaGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfSwKICAgIGhhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCiAgc3RyZWFtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7CgogIGZzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTsKCiAgUERGT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNik7CgogIFBERlJlZmVyZW5jZSA9IF9fd2VicGFja19yZXF1aXJlX18oODcpOwoKICBQREZQYWdlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjEpOwoKICBQREZEb2N1bWVudCA9IChmdW5jdGlvbihzdXBlckNsYXNzKSB7CiAgICB2YXIgbWl4aW47CgogICAgZXh0ZW5kKFBERkRvY3VtZW50LCBzdXBlckNsYXNzKTsKCiAgICBmdW5jdGlvbiBQREZEb2N1bWVudChvcHRpb25zMSkgewogICAgICB2YXIga2V5LCByZWYxLCByZWYyLCB2YWw7CiAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMxICE9IG51bGwgPyBvcHRpb25zMSA6IHt9OwogICAgICBQREZEb2N1bWVudC5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgdGhpcy52ZXJzaW9uID0gMS4zOwogICAgICB0aGlzLmNvbXByZXNzID0gKHJlZjEgPSB0aGlzLm9wdGlvbnMuY29tcHJlc3MpICE9IG51bGwgPyByZWYxIDogdHJ1ZTsKICAgICAgdGhpcy5fcGFnZUJ1ZmZlciA9IFtdOwogICAgICB0aGlzLl9wYWdlQnVmZmVyU3RhcnQgPSAwOwogICAgICB0aGlzLl9vZmZzZXRzID0gW107CiAgICAgIHRoaXMuX3dhaXRpbmcgPSAwOwogICAgICB0aGlzLl9lbmRlZCA9IGZhbHNlOwogICAgICB0aGlzLl9vZmZzZXQgPSAwOwogICAgICB0aGlzLl9yb290ID0gdGhpcy5yZWYoewogICAgICAgIFR5cGU6ICdDYXRhbG9nJywKICAgICAgICBQYWdlczogdGhpcy5yZWYoewogICAgICAgICAgVHlwZTogJ1BhZ2VzJywKICAgICAgICAgIENvdW50OiAwLAogICAgICAgICAgS2lkczogW10KICAgICAgICB9KQogICAgICB9KTsKICAgICAgdGhpcy5wYWdlID0gbnVsbDsKICAgICAgdGhpcy5pbml0Q29sb3IoKTsKICAgICAgdGhpcy5pbml0VmVjdG9yKCk7CiAgICAgIHRoaXMuaW5pdEZvbnRzKCk7CiAgICAgIHRoaXMuaW5pdFRleHQoKTsKICAgICAgdGhpcy5pbml0SW1hZ2VzKCk7CiAgICAgIHRoaXMuaW5mbyA9IHsKICAgICAgICBQcm9kdWNlcjogJ1BERktpdCcsCiAgICAgICAgQ3JlYXRvcjogJ1BERktpdCcsCiAgICAgICAgQ3JlYXRpb25EYXRlOiBuZXcgRGF0ZSgpCiAgICAgIH07CiAgICAgIGlmICh0aGlzLm9wdGlvbnMuaW5mbykgewogICAgICAgIHJlZjIgPSB0aGlzLm9wdGlvbnMuaW5mbzsKICAgICAgICBmb3IgKGtleSBpbiByZWYyKSB7CiAgICAgICAgICB2YWwgPSByZWYyW2tleV07CiAgICAgICAgICB0aGlzLmluZm9ba2V5XSA9IHZhbDsKICAgICAgICB9CiAgICAgIH0KICAgICAgdGhpcy5fd3JpdGUoIiVQREYtIiArIHRoaXMudmVyc2lvbik7CiAgICAgIHRoaXMuX3dyaXRlKCIlXHhGRlx4RkZceEZGXHhGRiIpOwogICAgICBpZiAodGhpcy5vcHRpb25zLmF1dG9GaXJzdFBhZ2UgIT09IGZhbHNlKSB7CiAgICAgICAgdGhpcy5hZGRQYWdlKCk7CiAgICAgIH0KICAgIH0KCiAgICBtaXhpbiA9IGZ1bmN0aW9uKG1ldGhvZHMpIHsKICAgICAgdmFyIG1ldGhvZCwgbmFtZSwgcmVzdWx0czsKICAgICAgcmVzdWx0cyA9IFtdOwogICAgICBmb3IgKG5hbWUgaW4gbWV0aG9kcykgewogICAgICAgIG1ldGhvZCA9IG1ldGhvZHNbbmFtZV07CiAgICAgICAgcmVzdWx0cy5wdXNoKFBERkRvY3VtZW50LnByb3RvdHlwZVtuYW1lXSA9IG1ldGhvZCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9OwoKICAgIG1peGluKF9fd2VicGFja19yZXF1aXJlX18oMTYyKSk7CgogICAgbWl4aW4oX193ZWJwYWNrX3JlcXVpcmVfXygxNjQpKTsKCiAgICBtaXhpbihfX3dlYnBhY2tfcmVxdWlyZV9fKDE2NikpOwoKICAgIG1peGluKF9fd2VicGFja19yZXF1aXJlX18oMjk1KSk7CgogICAgbWl4aW4oX193ZWJwYWNrX3JlcXVpcmVfXygyOTcpKTsKCiAgICBtaXhpbihfX3dlYnBhY2tfcmVxdWlyZV9fKDMwMikpOwoKICAgIFBERkRvY3VtZW50LnByb3RvdHlwZS5hZGRQYWdlID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICB2YXIgcGFnZXM7CiAgICAgIGlmIChvcHRpb25zID09IG51bGwpIHsKICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zOwogICAgICB9CiAgICAgIGlmICghdGhpcy5vcHRpb25zLmJ1ZmZlclBhZ2VzKSB7CiAgICAgICAgdGhpcy5mbHVzaFBhZ2VzKCk7CiAgICAgIH0KICAgICAgdGhpcy5wYWdlID0gbmV3IFBERlBhZ2UodGhpcywgb3B0aW9ucyk7CiAgICAgIHRoaXMuX3BhZ2VCdWZmZXIucHVzaCh0aGlzLnBhZ2UpOwogICAgICBwYWdlcyA9IHRoaXMuX3Jvb3QuZGF0YS5QYWdlcy5kYXRhOwogICAgICBwYWdlcy5LaWRzLnB1c2godGhpcy5wYWdlLmRpY3Rpb25hcnkpOwogICAgICBwYWdlcy5Db3VudCsrOwogICAgICB0aGlzLnggPSB0aGlzLnBhZ2UubWFyZ2lucy5sZWZ0OwogICAgICB0aGlzLnkgPSB0aGlzLnBhZ2UubWFyZ2lucy50b3A7CiAgICAgIHRoaXMuX2N0bSA9IFsxLCAwLCAwLCAxLCAwLCAwXTsKICAgICAgdGhpcy50cmFuc2Zvcm0oMSwgMCwgMCwgLTEsIDAsIHRoaXMucGFnZS5oZWlnaHQpOwogICAgICB0aGlzLmVtaXQoJ3BhZ2VBZGRlZCcpOwogICAgICByZXR1cm4gdGhpczsKICAgIH07CgogICAgUERGRG9jdW1lbnQucHJvdG90eXBlLmJ1ZmZlcmVkUGFnZVJhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB7CiAgICAgICAgc3RhcnQ6IHRoaXMuX3BhZ2VCdWZmZXJTdGFydCwKICAgICAgICBjb3VudDogdGhpcy5fcGFnZUJ1ZmZlci5sZW5ndGgKICAgICAgfTsKICAgIH07CgogICAgUERGRG9jdW1lbnQucHJvdG90eXBlLnN3aXRjaFRvUGFnZSA9IGZ1bmN0aW9uKG4pIHsKICAgICAgdmFyIHBhZ2U7CiAgICAgIGlmICghKHBhZ2UgPSB0aGlzLl9wYWdlQnVmZmVyW24gLSB0aGlzLl9wYWdlQnVmZmVyU3RhcnRdKSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigic3dpdGNoVG9QYWdlKCIgKyBuICsgIikgb3V0IG9mIGJvdW5kcywgY3VycmVudCBidWZmZXIgY292ZXJzIHBhZ2VzICIgKyB0aGlzLl9wYWdlQnVmZmVyU3RhcnQgKyAiIHRvICIgKyAodGhpcy5fcGFnZUJ1ZmZlclN0YXJ0ICsgdGhpcy5fcGFnZUJ1ZmZlci5sZW5ndGggLSAxKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMucGFnZSA9IHBhZ2U7CiAgICB9OwoKICAgIFBERkRvY3VtZW50LnByb3RvdHlwZS5mbHVzaFBhZ2VzID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBpLCBsZW4sIHBhZ2UsIHBhZ2VzOwogICAgICBwYWdlcyA9IHRoaXMuX3BhZ2VCdWZmZXI7CiAgICAgIHRoaXMuX3BhZ2VCdWZmZXIgPSBbXTsKICAgICAgdGhpcy5fcGFnZUJ1ZmZlclN0YXJ0ICs9IHBhZ2VzLmxlbmd0aDsKICAgICAgZm9yIChpID0gMCwgbGVuID0gcGFnZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICBwYWdlID0gcGFnZXNbaV07CiAgICAgICAgcGFnZS5lbmQoKTsKICAgICAgfQogICAgfTsKCiAgICBQREZEb2N1bWVudC5wcm90b3R5cGUucmVmID0gZnVuY3Rpb24oZGF0YSkgewogICAgICB2YXIgcmVmOwogICAgICByZWYgPSBuZXcgUERGUmVmZXJlbmNlKHRoaXMsIHRoaXMuX29mZnNldHMubGVuZ3RoICsgMSwgZGF0YSk7CiAgICAgIHRoaXMuX29mZnNldHMucHVzaChudWxsKTsKICAgICAgdGhpcy5fd2FpdGluZysrOwogICAgICByZXR1cm4gcmVmOwogICAgfTsKCiAgICBQREZEb2N1bWVudC5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbigpIHt9OwoKICAgIFBERkRvY3VtZW50LnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbihkYXRhKSB7CiAgICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGRhdGEpKSB7CiAgICAgICAgZGF0YSA9IG5ldyBCdWZmZXIoZGF0YSArICdcbicsICdiaW5hcnknKTsKICAgICAgfQogICAgICB0aGlzLnB1c2goZGF0YSk7CiAgICAgIHJldHVybiB0aGlzLl9vZmZzZXQgKz0gZGF0YS5sZW5ndGg7CiAgICB9OwoKICAgIFBERkRvY3VtZW50LnByb3RvdHlwZS5hZGRDb250ZW50ID0gZnVuY3Rpb24oZGF0YSkgewogICAgICB0aGlzLnBhZ2Uud3JpdGUoZGF0YSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfTsKCiAgICBQREZEb2N1bWVudC5wcm90b3R5cGUuX3JlZkVuZCA9IGZ1bmN0aW9uKHJlZikgewogICAgICB0aGlzLl9vZmZzZXRzW3JlZi5pZCAtIDFdID0gcmVmLm9mZnNldDsKICAgICAgaWYgKC0tdGhpcy5fd2FpdGluZyA9PT0gMCAmJiB0aGlzLl9lbmRlZCkgewogICAgICAgIHRoaXMuX2ZpbmFsaXplKCk7CiAgICAgICAgcmV0dXJuIHRoaXMuX2VuZGVkID0gZmFsc2U7CiAgICAgIH0KICAgIH07CgogICAgUERGRG9jdW1lbnQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oZmlsZW5hbWUsIGZuKSB7CiAgICAgIHZhciBlcnI7CiAgICAgIGVyciA9IG5ldyBFcnJvcignUERGRG9jdW1lbnQjd3JpdGUgaXMgZGVwcmVjYXRlZCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFBERktpdC4gUGxlYXNlIHBpcGUgdGhlIGRvY3VtZW50IGludG8gYSBOb2RlIHN0cmVhbS4nKTsKICAgICAgY29uc29sZS53YXJuKGVyci5zdGFjayk7CiAgICAgIHRoaXMucGlwZShmcy5jcmVhdGVXcml0ZVN0cmVhbShmaWxlbmFtZSkpOwogICAgICB0aGlzLmVuZCgpOwogICAgICByZXR1cm4gdGhpcy5vbmNlKCdlbmQnLCBmbik7CiAgICB9OwoKICAgIFBERkRvY3VtZW50LnByb3RvdHlwZS5vdXRwdXQgPSBmdW5jdGlvbihmbikgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BERkRvY3VtZW50I291dHB1dCBpcyBkZXByZWNhdGVkLCBhbmQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFBERktpdC4gUGxlYXNlIHBpcGUgdGhlIGRvY3VtZW50IGludG8gYSBOb2RlIHN0cmVhbS4nKTsKICAgIH07CgogICAgUERGRG9jdW1lbnQucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgZm9udCwga2V5LCBuYW1lLCByZWYxLCByZWYyLCB2YWw7CiAgICAgIHRoaXMuZmx1c2hQYWdlcygpOwogICAgICB0aGlzLl9pbmZvID0gdGhpcy5yZWYoKTsKICAgICAgcmVmMSA9IHRoaXMuaW5mbzsKICAgICAgZm9yIChrZXkgaW4gcmVmMSkgewogICAgICAgIHZhbCA9IHJlZjFba2V5XTsKICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgIHZhbCA9IG5ldyBTdHJpbmcodmFsKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5faW5mby5kYXRhW2tleV0gPSB2YWw7CiAgICAgIH0KICAgICAgdGhpcy5faW5mby5lbmQoKTsKICAgICAgcmVmMiA9IHRoaXMuX2ZvbnRGYW1pbGllczsKICAgICAgZm9yIChuYW1lIGluIHJlZjIpIHsKICAgICAgICBmb250ID0gcmVmMltuYW1lXTsKICAgICAgICBmb250LmZpbmFsaXplKCk7CiAgICAgIH0KICAgICAgdGhpcy5fcm9vdC5lbmQoKTsKICAgICAgdGhpcy5fcm9vdC5kYXRhLlBhZ2VzLmVuZCgpOwogICAgICBpZiAodGhpcy5fd2FpdGluZyA9PT0gMCkgewogICAgICAgIHJldHVybiB0aGlzLl9maW5hbGl6ZSgpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLl9lbmRlZCA9IHRydWU7CiAgICAgIH0KICAgIH07CgogICAgUERGRG9jdW1lbnQucHJvdG90eXBlLl9maW5hbGl6ZSA9IGZ1bmN0aW9uKGZuKSB7CiAgICAgIHZhciBpLCBsZW4sIG9mZnNldCwgcmVmMSwgeFJlZk9mZnNldDsKICAgICAgeFJlZk9mZnNldCA9IHRoaXMuX29mZnNldDsKICAgICAgdGhpcy5fd3JpdGUoInhyZWYiKTsKICAgICAgdGhpcy5fd3JpdGUoIjAgIiArICh0aGlzLl9vZmZzZXRzLmxlbmd0aCArIDEpKTsKICAgICAgdGhpcy5fd3JpdGUoIjAwMDAwMDAwMDAgNjU1MzUgZiAiKTsKICAgICAgcmVmMSA9IHRoaXMuX29mZnNldHM7CiAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHJlZjEubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICBvZmZzZXQgPSByZWYxW2ldOwogICAgICAgIG9mZnNldCA9ICgnMDAwMDAwMDAwMCcgKyBvZmZzZXQpLnNsaWNlKC0xMCk7CiAgICAgICAgdGhpcy5fd3JpdGUob2Zmc2V0ICsgJyAwMDAwMCBuICcpOwogICAgICB9CiAgICAgIHRoaXMuX3dyaXRlKCd0cmFpbGVyJyk7CiAgICAgIHRoaXMuX3dyaXRlKFBERk9iamVjdC5jb252ZXJ0KHsKICAgICAgICBTaXplOiB0aGlzLl9vZmZzZXRzLmxlbmd0aCArIDEsCiAgICAgICAgUm9vdDogdGhpcy5fcm9vdCwKICAgICAgICBJbmZvOiB0aGlzLl9pbmZvCiAgICAgIH0pKTsKICAgICAgdGhpcy5fd3JpdGUoJ3N0YXJ0eHJlZicpOwogICAgICB0aGlzLl93cml0ZSgiIiArIHhSZWZPZmZzZXQpOwogICAgICB0aGlzLl93cml0ZSgnJSVFT0YnKTsKICAgICAgcmV0dXJuIHRoaXMucHVzaChudWxsKTsKICAgIH07CgogICAgUERGRG9jdW1lbnQucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiAiW29iamVjdCBQREZEb2N1bWVudF0iOwogICAgfTsKCiAgICByZXR1cm4gUERGRG9jdW1lbnQ7CgogIH0pKHN0cmVhbS5SZWFkYWJsZSk7CgogIG1vZHVsZS5leHBvcnRzID0gUERGRG9jdW1lbnQ7Cgp9KS5jYWxsKHRoaXMpOwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyKSkKCi8qKiovIH0pLAovKiAxMzkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLyogKGlnbm9yZWQpICovCgovKioqLyB9KSwKLyogMTQwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgpmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpOyB9IH0KCnZhciBCdWZmZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKS5CdWZmZXI7CnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDEpOwoKZnVuY3Rpb24gY29weUJ1ZmZlcihzcmMsIHRhcmdldCwgb2Zmc2V0KSB7CiAgc3JjLmNvcHkodGFyZ2V0LCBvZmZzZXQpOwp9Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBCdWZmZXJMaXN0KCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJ1ZmZlckxpc3QpOwoKICAgIHRoaXMuaGVhZCA9IG51bGw7CiAgICB0aGlzLnRhaWwgPSBudWxsOwogICAgdGhpcy5sZW5ndGggPSAwOwogIH0KCiAgQnVmZmVyTGlzdC5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIHB1c2godikgewogICAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiBudWxsIH07CiAgICBpZiAodGhpcy5sZW5ndGggPiAwKSB0aGlzLnRhaWwubmV4dCA9IGVudHJ5O2Vsc2UgdGhpcy5oZWFkID0gZW50cnk7CiAgICB0aGlzLnRhaWwgPSBlbnRyeTsKICAgICsrdGhpcy5sZW5ndGg7CiAgfTsKCiAgQnVmZmVyTGlzdC5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uIHVuc2hpZnQodikgewogICAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiB0aGlzLmhlYWQgfTsKICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgdGhpcy50YWlsID0gZW50cnk7CiAgICB0aGlzLmhlYWQgPSBlbnRyeTsKICAgICsrdGhpcy5sZW5ndGg7CiAgfTsKCiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbiBzaGlmdCgpIHsKICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwogICAgdmFyIHJldCA9IHRoaXMuaGVhZC5kYXRhOwogICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO2Vsc2UgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7CiAgICAtLXRoaXMubGVuZ3RoOwogICAgcmV0dXJuIHJldDsKICB9OwoKICBCdWZmZXJMaXN0LnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uIGNsZWFyKCkgewogICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDsKICAgIHRoaXMubGVuZ3RoID0gMDsKICB9OwoKICBCdWZmZXJMaXN0LnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gam9pbihzKSB7CiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybiAnJzsKICAgIHZhciBwID0gdGhpcy5oZWFkOwogICAgdmFyIHJldCA9ICcnICsgcC5kYXRhOwogICAgd2hpbGUgKHAgPSBwLm5leHQpIHsKICAgICAgcmV0ICs9IHMgKyBwLmRhdGE7CiAgICB9cmV0dXJuIHJldDsKICB9OwoKICBCdWZmZXJMaXN0LnByb3RvdHlwZS5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQobikgewogICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gQnVmZmVyLmFsbG9jKDApOwogICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSByZXR1cm4gdGhpcy5oZWFkLmRhdGE7CiAgICB2YXIgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4gPj4+IDApOwogICAgdmFyIHAgPSB0aGlzLmhlYWQ7CiAgICB2YXIgaSA9IDA7CiAgICB3aGlsZSAocCkgewogICAgICBjb3B5QnVmZmVyKHAuZGF0YSwgcmV0LCBpKTsKICAgICAgaSArPSBwLmRhdGEubGVuZ3RoOwogICAgICBwID0gcC5uZXh0OwogICAgfQogICAgcmV0dXJuIHJldDsKICB9OwoKICByZXR1cm4gQnVmZmVyTGlzdDsKfSgpOwoKaWYgKHV0aWwgJiYgdXRpbC5pbnNwZWN0ICYmIHV0aWwuaW5zcGVjdC5jdXN0b20pIHsKICBtb2R1bGUuZXhwb3J0cy5wcm90b3R5cGVbdXRpbC5pbnNwZWN0LmN1c3RvbV0gPSBmdW5jdGlvbiAoKSB7CiAgICB2YXIgb2JqID0gdXRpbC5pbnNwZWN0KHsgbGVuZ3RoOiB0aGlzLmxlbmd0aCB9KTsKICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnICcgKyBvYmo7CiAgfTsKfQoKLyoqKi8gfSksCi8qIDE0MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovKiAoaWdub3JlZCkgKi8KCi8qKiovIH0pLAovKiAxNDIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCkge3ZhciBhcHBseSA9IEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseTsKCi8vIERPTSBBUElzLCBmb3IgY29tcGxldGVuZXNzCgpleHBvcnRzLnNldFRpbWVvdXQgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRUaW1lb3V0LCB3aW5kb3csIGFyZ3VtZW50cyksIGNsZWFyVGltZW91dCk7Cn07CmV4cG9ydHMuc2V0SW50ZXJ2YWwgPSBmdW5jdGlvbigpIHsKICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRJbnRlcnZhbCwgd2luZG93LCBhcmd1bWVudHMpLCBjbGVhckludGVydmFsKTsKfTsKZXhwb3J0cy5jbGVhclRpbWVvdXQgPQpleHBvcnRzLmNsZWFySW50ZXJ2YWwgPSBmdW5jdGlvbih0aW1lb3V0KSB7CiAgaWYgKHRpbWVvdXQpIHsKICAgIHRpbWVvdXQuY2xvc2UoKTsKICB9Cn07CgpmdW5jdGlvbiBUaW1lb3V0KGlkLCBjbGVhckZuKSB7CiAgdGhpcy5faWQgPSBpZDsKICB0aGlzLl9jbGVhckZuID0gY2xlYXJGbjsKfQpUaW1lb3V0LnByb3RvdHlwZS51bnJlZiA9IFRpbWVvdXQucHJvdG90eXBlLnJlZiA9IGZ1bmN0aW9uKCkge307ClRpbWVvdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7CiAgdGhpcy5fY2xlYXJGbi5jYWxsKHdpbmRvdywgdGhpcy5faWQpOwp9OwoKLy8gRG9lcyBub3Qgc3RhcnQgdGhlIHRpbWUsIGp1c3Qgc2V0cyB1cCB0aGUgbWVtYmVycyBuZWVkZWQuCmV4cG9ydHMuZW5yb2xsID0gZnVuY3Rpb24oaXRlbSwgbXNlY3MpIHsKICBjbGVhclRpbWVvdXQoaXRlbS5faWRsZVRpbWVvdXRJZCk7CiAgaXRlbS5faWRsZVRpbWVvdXQgPSBtc2VjczsKfTsKCmV4cG9ydHMudW5lbnJvbGwgPSBmdW5jdGlvbihpdGVtKSB7CiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpOwogIGl0ZW0uX2lkbGVUaW1lb3V0ID0gLTE7Cn07CgpleHBvcnRzLl91bnJlZkFjdGl2ZSA9IGV4cG9ydHMuYWN0aXZlID0gZnVuY3Rpb24oaXRlbSkgewogIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTsKCiAgdmFyIG1zZWNzID0gaXRlbS5faWRsZVRpbWVvdXQ7CiAgaWYgKG1zZWNzID49IDApIHsKICAgIGl0ZW0uX2lkbGVUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uIG9uVGltZW91dCgpIHsKICAgICAgaWYgKGl0ZW0uX29uVGltZW91dCkKICAgICAgICBpdGVtLl9vblRpbWVvdXQoKTsKICAgIH0sIG1zZWNzKTsKICB9Cn07CgovLyBzZXRpbW1lZGlhdGUgYXR0YWNoZXMgaXRzZWxmIHRvIHRoZSBnbG9iYWwgb2JqZWN0Cl9fd2VicGFja19yZXF1aXJlX18oMTQzKTsKLy8gT24gc29tZSBleG90aWMgZW52aXJvbm1lbnRzLCBpdCdzIG5vdCBjbGVhciB3aGljaCBvYmplY3QgYHNldGltbWVpZGF0ZWAgd2FzCi8vIGFibGUgdG8gaW5zdGFsbCBvbnRvLiAgU2VhcmNoIGVhY2ggcG9zc2liaWxpdHkgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlCi8vIGBzZXRpbW1lZGlhdGVgIGxpYnJhcnkuCmV4cG9ydHMuc2V0SW1tZWRpYXRlID0gKHR5cGVvZiBzZWxmICE9PSAidW5kZWZpbmVkIiAmJiBzZWxmLnNldEltbWVkaWF0ZSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgJiYgZ2xvYmFsLnNldEltbWVkaWF0ZSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAodGhpcyAmJiB0aGlzLnNldEltbWVkaWF0ZSk7CmV4cG9ydHMuY2xlYXJJbW1lZGlhdGUgPSAodHlwZW9mIHNlbGYgIT09ICJ1bmRlZmluZWQiICYmIHNlbGYuY2xlYXJJbW1lZGlhdGUpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGdsb2JhbCAhPT0gInVuZGVmaW5lZCIgJiYgZ2xvYmFsLmNsZWFySW1tZWRpYXRlKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMgJiYgdGhpcy5jbGVhckltbWVkaWF0ZSk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyg3KSkpCgovKioqLyB9KSwKLyogMTQzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwsIHByb2Nlc3MpIHsoZnVuY3Rpb24gKGdsb2JhbCwgdW5kZWZpbmVkKSB7CiAgICAidXNlIHN0cmljdCI7CgogICAgaWYgKGdsb2JhbC5zZXRJbW1lZGlhdGUpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIG5leHRIYW5kbGUgPSAxOyAvLyBTcGVjIHNheXMgZ3JlYXRlciB0aGFuIHplcm8KICAgIHZhciB0YXNrc0J5SGFuZGxlID0ge307CiAgICB2YXIgY3VycmVudGx5UnVubmluZ0FUYXNrID0gZmFsc2U7CiAgICB2YXIgZG9jID0gZ2xvYmFsLmRvY3VtZW50OwogICAgdmFyIHJlZ2lzdGVySW1tZWRpYXRlOwoKICAgIGZ1bmN0aW9uIHNldEltbWVkaWF0ZShjYWxsYmFjaykgewogICAgICAvLyBDYWxsYmFjayBjYW4gZWl0aGVyIGJlIGEgZnVuY3Rpb24gb3IgYSBzdHJpbmcKICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikgewogICAgICAgIGNhbGxiYWNrID0gbmV3IEZ1bmN0aW9uKCIiICsgY2FsbGJhY2spOwogICAgICB9CiAgICAgIC8vIENvcHkgZnVuY3Rpb24gYXJndW1lbnRzCiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXTsKICAgICAgfQogICAgICAvLyBTdG9yZSBhbmQgcmVnaXN0ZXIgdGhlIHRhc2sKICAgICAgdmFyIHRhc2sgPSB7IGNhbGxiYWNrOiBjYWxsYmFjaywgYXJnczogYXJncyB9OwogICAgICB0YXNrc0J5SGFuZGxlW25leHRIYW5kbGVdID0gdGFzazsKICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUobmV4dEhhbmRsZSk7CiAgICAgIHJldHVybiBuZXh0SGFuZGxlKys7CiAgICB9CgogICAgZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaGFuZGxlKSB7CiAgICAgICAgZGVsZXRlIHRhc2tzQnlIYW5kbGVbaGFuZGxlXTsKICAgIH0KCiAgICBmdW5jdGlvbiBydW4odGFzaykgewogICAgICAgIHZhciBjYWxsYmFjayA9IHRhc2suY2FsbGJhY2s7CiAgICAgICAgdmFyIGFyZ3MgPSB0YXNrLmFyZ3M7CiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkgewogICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAyOgogICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAzOgogICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkodW5kZWZpbmVkLCBhcmdzKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHJ1bklmUHJlc2VudChoYW5kbGUpIHsKICAgICAgICAvLyBGcm9tIHRoZSBzcGVjOiAiV2FpdCB1bnRpbCBhbnkgaW52b2NhdGlvbnMgb2YgdGhpcyBhbGdvcml0aG0gc3RhcnRlZCBiZWZvcmUgdGhpcyBvbmUgaGF2ZSBjb21wbGV0ZWQuIgogICAgICAgIC8vIFNvIGlmIHdlJ3JlIGN1cnJlbnRseSBydW5uaW5nIGEgdGFzaywgd2UnbGwgbmVlZCB0byBkZWxheSB0aGlzIGludm9jYXRpb24uCiAgICAgICAgaWYgKGN1cnJlbnRseVJ1bm5pbmdBVGFzaykgewogICAgICAgICAgICAvLyBEZWxheSBieSBkb2luZyBhIHNldFRpbWVvdXQuIHNldEltbWVkaWF0ZSB3YXMgdHJpZWQgaW5zdGVhZCwgYnV0IGluIEZpcmVmb3ggNyBpdCBnZW5lcmF0ZWQgYQogICAgICAgICAgICAvLyAidG9vIG11Y2ggcmVjdXJzaW9uIiBlcnJvci4KICAgICAgICAgICAgc2V0VGltZW91dChydW5JZlByZXNlbnQsIDAsIGhhbmRsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIHRhc2sgPSB0YXNrc0J5SGFuZGxlW2hhbmRsZV07CiAgICAgICAgICAgIGlmICh0YXNrKSB7CiAgICAgICAgICAgICAgICBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSB0cnVlOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBydW4odGFzayk7CiAgICAgICAgICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgIGNsZWFySW1tZWRpYXRlKGhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaW5zdGFsbE5leHRUaWNrSW1wbGVtZW50YXRpb24oKSB7CiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHsKICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7IHJ1bklmUHJlc2VudChoYW5kbGUpOyB9KTsKICAgICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIGNhblVzZVBvc3RNZXNzYWdlKCkgewogICAgICAgIC8vIFRoZSB0ZXN0IGFnYWluc3QgYGltcG9ydFNjcmlwdHNgIHByZXZlbnRzIHRoaXMgaW1wbGVtZW50YXRpb24gZnJvbSBiZWluZyBpbnN0YWxsZWQgaW5zaWRlIGEgd2ViIHdvcmtlciwKICAgICAgICAvLyB3aGVyZSBgZ2xvYmFsLnBvc3RNZXNzYWdlYCBtZWFucyBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQgYW5kIGNhbid0IGJlIHVzZWQgZm9yIHRoaXMgcHVycG9zZS4KICAgICAgICBpZiAoZ2xvYmFsLnBvc3RNZXNzYWdlICYmICFnbG9iYWwuaW1wb3J0U2NyaXB0cykgewogICAgICAgICAgICB2YXIgcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyA9IHRydWU7CiAgICAgICAgICAgIHZhciBvbGRPbk1lc3NhZ2UgPSBnbG9iYWwub25tZXNzYWdlOwogICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZUlzQXN5bmNocm9ub3VzID0gZmFsc2U7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZSgiIiwgIioiKTsKICAgICAgICAgICAgZ2xvYmFsLm9ubWVzc2FnZSA9IG9sZE9uTWVzc2FnZTsKICAgICAgICAgICAgcmV0dXJuIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXM7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGluc3RhbGxQb3N0TWVzc2FnZUltcGxlbWVudGF0aW9uKCkgewogICAgICAgIC8vIEluc3RhbGxzIGFuIGV2ZW50IGhhbmRsZXIgb24gYGdsb2JhbGAgZm9yIHRoZSBgbWVzc2FnZWAgZXZlbnQ6IHNlZQogICAgICAgIC8vICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vRE9NL3dpbmRvdy5wb3N0TWVzc2FnZQogICAgICAgIC8vICogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbXMuaHRtbCNjcm9zc0RvY3VtZW50TWVzc2FnZXMKCiAgICAgICAgdmFyIG1lc3NhZ2VQcmVmaXggPSAic2V0SW1tZWRpYXRlJCIgKyBNYXRoLnJhbmRvbSgpICsgIiQiOwogICAgICAgIHZhciBvbkdsb2JhbE1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewogICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09PSBnbG9iYWwgJiYKICAgICAgICAgICAgICAgIHR5cGVvZiBldmVudC5kYXRhID09PSAic3RyaW5nIiAmJgogICAgICAgICAgICAgICAgZXZlbnQuZGF0YS5pbmRleE9mKG1lc3NhZ2VQcmVmaXgpID09PSAwKSB7CiAgICAgICAgICAgICAgICBydW5JZlByZXNlbnQoK2V2ZW50LmRhdGEuc2xpY2UobWVzc2FnZVByZWZpeC5sZW5ndGgpKTsKICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgICAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG9uR2xvYmFsTWVzc2FnZSwgZmFsc2UpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGdsb2JhbC5hdHRhY2hFdmVudCgib25tZXNzYWdlIiwgb25HbG9iYWxNZXNzYWdlKTsKICAgICAgICB9CgogICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7CiAgICAgICAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShtZXNzYWdlUHJlZml4ICsgaGFuZGxlLCAiKiIpOwogICAgICAgIH07CiAgICB9CgogICAgZnVuY3Rpb24gaW5zdGFsbE1lc3NhZ2VDaGFubmVsSW1wbGVtZW50YXRpb24oKSB7CiAgICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKICAgICAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgIHZhciBoYW5kbGUgPSBldmVudC5kYXRhOwogICAgICAgICAgICBydW5JZlByZXNlbnQoaGFuZGxlKTsKICAgICAgICB9OwoKICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkgewogICAgICAgICAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKGhhbmRsZSk7CiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbnN0YWxsUmVhZHlTdGF0ZUNoYW5nZUltcGxlbWVudGF0aW9uKCkgewogICAgICAgIHZhciBodG1sID0gZG9jLmRvY3VtZW50RWxlbWVudDsKICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkgewogICAgICAgICAgICAvLyBDcmVhdGUgYSA8c2NyaXB0PiBlbGVtZW50OyBpdHMgcmVhZHlzdGF0ZWNoYW5nZSBldmVudCB3aWxsIGJlIGZpcmVkIGFzeW5jaHJvbm91c2x5IG9uY2UgaXQgaXMgaW5zZXJ0ZWQKICAgICAgICAgICAgLy8gaW50byB0aGUgZG9jdW1lbnQuIERvIHNvLCB0aHVzIHF1ZXVpbmcgdXAgdGhlIHRhc2suIFJlbWVtYmVyIHRvIGNsZWFuIHVwIG9uY2UgaXQncyBiZWVuIGNhbGxlZC4KICAgICAgICAgICAgdmFyIHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTsKICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHJ1bklmUHJlc2VudChoYW5kbGUpOwogICAgICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7CiAgICAgICAgICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHNjcmlwdCk7CiAgICAgICAgICAgICAgICBzY3JpcHQgPSBudWxsOwogICAgICAgICAgICB9OwogICAgICAgICAgICBodG1sLmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBpbnN0YWxsU2V0VGltZW91dEltcGxlbWVudGF0aW9uKCkgewogICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7CiAgICAgICAgICAgIHNldFRpbWVvdXQocnVuSWZQcmVzZW50LCAwLCBoYW5kbGUpOwogICAgICAgIH07CiAgICB9CgogICAgLy8gSWYgc3VwcG9ydGVkLCB3ZSBzaG91bGQgYXR0YWNoIHRvIHRoZSBwcm90b3R5cGUgb2YgZ2xvYmFsLCBzaW5jZSB0aGF0IGlzIHdoZXJlIHNldFRpbWVvdXQgZXQgYWwuIGxpdmUuCiAgICB2YXIgYXR0YWNoVG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbCk7CiAgICBhdHRhY2hUbyA9IGF0dGFjaFRvICYmIGF0dGFjaFRvLnNldFRpbWVvdXQgPyBhdHRhY2hUbyA6IGdsb2JhbDsKCiAgICAvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IGUuZy4gYnJvd3NlcmlmeSBlbnZpcm9ubWVudHMuCiAgICBpZiAoe30udG9TdHJpbmcuY2FsbChnbG9iYWwucHJvY2VzcykgPT09ICJbb2JqZWN0IHByb2Nlc3NdIikgewogICAgICAgIC8vIEZvciBOb2RlLmpzIGJlZm9yZSAwLjkKICAgICAgICBpbnN0YWxsTmV4dFRpY2tJbXBsZW1lbnRhdGlvbigpOwoKICAgIH0gZWxzZSBpZiAoY2FuVXNlUG9zdE1lc3NhZ2UoKSkgewogICAgICAgIC8vIEZvciBub24tSUUxMCBtb2Rlcm4gYnJvd3NlcnMKICAgICAgICBpbnN0YWxsUG9zdE1lc3NhZ2VJbXBsZW1lbnRhdGlvbigpOwoKICAgIH0gZWxzZSBpZiAoZ2xvYmFsLk1lc3NhZ2VDaGFubmVsKSB7CiAgICAgICAgLy8gRm9yIHdlYiB3b3JrZXJzLCB3aGVyZSBzdXBwb3J0ZWQKICAgICAgICBpbnN0YWxsTWVzc2FnZUNoYW5uZWxJbXBsZW1lbnRhdGlvbigpOwoKICAgIH0gZWxzZSBpZiAoZG9jICYmICJvbnJlYWR5c3RhdGVjaGFuZ2UiIGluIGRvYy5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSkgewogICAgICAgIC8vIEZvciBJRSA24oCTOAogICAgICAgIGluc3RhbGxSZWFkeVN0YXRlQ2hhbmdlSW1wbGVtZW50YXRpb24oKTsKCiAgICB9IGVsc2UgewogICAgICAgIC8vIEZvciBvbGRlciBicm93c2VycwogICAgICAgIGluc3RhbGxTZXRUaW1lb3V0SW1wbGVtZW50YXRpb24oKTsKICAgIH0KCiAgICBhdHRhY2hUby5zZXRJbW1lZGlhdGUgPSBzZXRJbW1lZGlhdGU7CiAgICBhdHRhY2hUby5jbGVhckltbWVkaWF0ZSA9IGNsZWFySW1tZWRpYXRlOwp9KHR5cGVvZiBzZWxmID09PSAidW5kZWZpbmVkIiA/IHR5cGVvZiBnbG9iYWwgPT09ICJ1bmRlZmluZWQiID8gdGhpcyA6IGdsb2JhbCA6IHNlbGYpKTsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKSkpCgovKioqLyB9KSwKLyogMTQ0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwpIHsKLyoqCiAqIE1vZHVsZSBleHBvcnRzLgogKi8KCm1vZHVsZS5leHBvcnRzID0gZGVwcmVjYXRlOwoKLyoqCiAqIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuCiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuCiAqCiAqIElmIGBsb2NhbFN0b3JhZ2Uubm9EZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLgogKgogKiBJZiBgbG9jYWxTdG9yYWdlLnRocm93RGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnMKICogd2lsbCB0aHJvdyBhbiBFcnJvciB3aGVuIGludm9rZWQuCiAqCiAqIElmIGBsb2NhbFN0b3JhZ2UudHJhY2VEZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBkZXByZWNhdGVkIGZ1bmN0aW9ucwogKiB3aWxsIGludm9rZSBgY29uc29sZS50cmFjZSgpYCBpbnN0ZWFkIG9mIGBjb25zb2xlLmVycm9yKClgLgogKgogKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiAtIHRoZSBmdW5jdGlvbiB0byBkZXByZWNhdGUKICogQHBhcmFtIHtTdHJpbmd9IG1zZyAtIHRoZSBzdHJpbmcgdG8gcHJpbnQgdG8gdGhlIGNvbnNvbGUgd2hlbiBgZm5gIGlzIGludm9rZWQKICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyAiZGVwcmVjYXRlZCIgdmVyc2lvbiBvZiBgZm5gCiAqIEBhcGkgcHVibGljCiAqLwoKZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7CiAgaWYgKGNvbmZpZygnbm9EZXByZWNhdGlvbicpKSB7CiAgICByZXR1cm4gZm47CiAgfQoKICB2YXIgd2FybmVkID0gZmFsc2U7CiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHsKICAgIGlmICghd2FybmVkKSB7CiAgICAgIGlmIChjb25maWcoJ3Rocm93RGVwcmVjYXRpb24nKSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpOwogICAgICB9IGVsc2UgaWYgKGNvbmZpZygndHJhY2VEZXByZWNhdGlvbicpKSB7CiAgICAgICAgY29uc29sZS50cmFjZShtc2cpOwogICAgICB9IGVsc2UgewogICAgICAgIGNvbnNvbGUud2Fybihtc2cpOwogICAgICB9CiAgICAgIHdhcm5lZCA9IHRydWU7CiAgICB9CiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICB9CgogIHJldHVybiBkZXByZWNhdGVkOwp9CgovKioKICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC4KICoKICogQHBhcmFtIHtTdHJpbmd9IG5hbWUKICogQHJldHVybnMge0Jvb2xlYW59CiAqIEBhcGkgcHJpdmF0ZQogKi8KCmZ1bmN0aW9uIGNvbmZpZyAobmFtZSkgewogIC8vIGFjY2Vzc2luZyBnbG9iYWwubG9jYWxTdG9yYWdlIGNhbiB0cmlnZ2VyIGEgRE9NRXhjZXB0aW9uIGluIHNhbmRib3hlZCBpZnJhbWVzCiAgdHJ5IHsKICAgIGlmICghZ2xvYmFsLmxvY2FsU3RvcmFnZSkgcmV0dXJuIGZhbHNlOwogIH0gY2F0Y2ggKF8pIHsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgdmFyIHZhbCA9IGdsb2JhbC5sb2NhbFN0b3JhZ2VbbmFtZV07CiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7CiAgcmV0dXJuIFN0cmluZyh2YWwpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJzsKfQoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oNykpKQoKLyoqKi8gfSksCi8qIDE0NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLgovLwovLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQovLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi8vICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAovLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0Ci8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZQovLyBmb2xsb3dpbmcgY29uZGl0aW9uczoKLy8KLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi8vCi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgovLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KCi8vIGEgcGFzc3Rocm91Z2ggc3RyZWFtLgovLyBiYXNpY2FsbHkganVzdCB0aGUgbW9zdCBtaW5pbWFsIHNvcnQgb2YgVHJhbnNmb3JtIHN0cmVhbS4KLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy4KCgoKbW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaDsKCnZhciBUcmFuc2Zvcm0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg2KTsKCi8qPHJlcGxhY2VtZW50PiovCnZhciB1dGlsID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7CnV0aWwuaW5oZXJpdHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTsKLyo8L3JlcGxhY2VtZW50PiovCgp1dGlsLmluaGVyaXRzKFBhc3NUaHJvdWdoLCBUcmFuc2Zvcm0pOwoKZnVuY3Rpb24gUGFzc1Rocm91Z2gob3B0aW9ucykgewogIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQYXNzVGhyb3VnaCkpIHJldHVybiBuZXcgUGFzc1Rocm91Z2gob3B0aW9ucyk7CgogIFRyYW5zZm9ybS5jYWxsKHRoaXMsIG9wdGlvbnMpOwp9CgpQYXNzVGhyb3VnaC5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7CiAgY2IobnVsbCwgY2h1bmspOwp9OwoKLyoqKi8gfSksCi8qIDE0NiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpOwoKCi8qKiovIH0pLAovKiAxNDcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTsKCgovKioqLyB9KSwKLyogMTQ4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSkuVHJhbnNmb3JtCgoKLyoqKi8gfSksCi8qIDE0OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oNDUpLlBhc3NUaHJvdWdoCgoKLyoqKi8gfSksCi8qIDE1MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihCdWZmZXIsIHByb2Nlc3MpIHsKLyogZXNsaW50IGNhbWVsY2FzZTogIm9mZiIgKi8KCnZhciBhc3NlcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg4KTsKCnZhciBac3RyZWFtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTMpOwp2YXIgemxpYl9kZWZsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTQpOwp2YXIgemxpYl9pbmZsYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTcpOwp2YXIgY29uc3RhbnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjApOwoKZm9yICh2YXIga2V5IGluIGNvbnN0YW50cykgewogIGV4cG9ydHNba2V5XSA9IGNvbnN0YW50c1trZXldOwp9CgovLyB6bGliIG1vZGVzCmV4cG9ydHMuTk9ORSA9IDA7CmV4cG9ydHMuREVGTEFURSA9IDE7CmV4cG9ydHMuSU5GTEFURSA9IDI7CmV4cG9ydHMuR1pJUCA9IDM7CmV4cG9ydHMuR1VOWklQID0gNDsKZXhwb3J0cy5ERUZMQVRFUkFXID0gNTsKZXhwb3J0cy5JTkZMQVRFUkFXID0gNjsKZXhwb3J0cy5VTlpJUCA9IDc7Cgp2YXIgR1pJUF9IRUFERVJfSUQxID0gMHgxZjsKdmFyIEdaSVBfSEVBREVSX0lEMiA9IDB4OGI7CgovKioKICogRW11bGF0ZSBOb2RlJ3MgemxpYiBDKysgbGF5ZXIgZm9yIHVzZSBieSB0aGUgSlMgbGF5ZXIgaW4gaW5kZXguanMKICovCmZ1bmN0aW9uIFpsaWIobW9kZSkgewogIGlmICh0eXBlb2YgbW9kZSAhPT0gJ251bWJlcicgfHwgbW9kZSA8IGV4cG9ydHMuREVGTEFURSB8fCBtb2RlID4gZXhwb3J0cy5VTlpJUCkgewogICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGFyZ3VtZW50Jyk7CiAgfQoKICB0aGlzLmRpY3Rpb25hcnkgPSBudWxsOwogIHRoaXMuZXJyID0gMDsKICB0aGlzLmZsdXNoID0gMDsKICB0aGlzLmluaXRfZG9uZSA9IGZhbHNlOwogIHRoaXMubGV2ZWwgPSAwOwogIHRoaXMubWVtTGV2ZWwgPSAwOwogIHRoaXMubW9kZSA9IG1vZGU7CiAgdGhpcy5zdHJhdGVneSA9IDA7CiAgdGhpcy53aW5kb3dCaXRzID0gMDsKICB0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7CiAgdGhpcy5wZW5kaW5nX2Nsb3NlID0gZmFsc2U7CiAgdGhpcy5nemlwX2lkX2J5dGVzX3JlYWQgPSAwOwp9CgpabGliLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHsKICBpZiAodGhpcy53cml0ZV9pbl9wcm9ncmVzcykgewogICAgdGhpcy5wZW5kaW5nX2Nsb3NlID0gdHJ1ZTsKICAgIHJldHVybjsKICB9CgogIHRoaXMucGVuZGluZ19jbG9zZSA9IGZhbHNlOwoKICBhc3NlcnQodGhpcy5pbml0X2RvbmUsICdjbG9zZSBiZWZvcmUgaW5pdCcpOwogIGFzc2VydCh0aGlzLm1vZGUgPD0gZXhwb3J0cy5VTlpJUCk7CgogIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURSB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1pJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURVJBVykgewogICAgemxpYl9kZWZsYXRlLmRlZmxhdGVFbmQodGhpcy5zdHJtKTsKICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5JTkZMQVRFIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HVU5aSVAgfHwgdGhpcy5tb2RlID09PSBleHBvcnRzLklORkxBVEVSQVcgfHwgdGhpcy5tb2RlID09PSBleHBvcnRzLlVOWklQKSB7CiAgICB6bGliX2luZmxhdGUuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pOwogIH0KCiAgdGhpcy5tb2RlID0gZXhwb3J0cy5OT05FOwoKICB0aGlzLmRpY3Rpb25hcnkgPSBudWxsOwp9OwoKWmxpYi5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKSB7CiAgcmV0dXJuIHRoaXMuX3dyaXRlKHRydWUsIGZsdXNoLCBpbnB1dCwgaW5fb2ZmLCBpbl9sZW4sIG91dCwgb3V0X29mZiwgb3V0X2xlbik7Cn07CgpabGliLnByb3RvdHlwZS53cml0ZVN5bmMgPSBmdW5jdGlvbiAoZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKSB7CiAgcmV0dXJuIHRoaXMuX3dyaXRlKGZhbHNlLCBmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pOwp9OwoKWmxpYi5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gKGFzeW5jLCBmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pIHsKICBhc3NlcnQuZXF1YWwoYXJndW1lbnRzLmxlbmd0aCwgOCk7CgogIGFzc2VydCh0aGlzLmluaXRfZG9uZSwgJ3dyaXRlIGJlZm9yZSBpbml0Jyk7CiAgYXNzZXJ0KHRoaXMubW9kZSAhPT0gZXhwb3J0cy5OT05FLCAnYWxyZWFkeSBmaW5hbGl6ZWQnKTsKICBhc3NlcnQuZXF1YWwoZmFsc2UsIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MsICd3cml0ZSBhbHJlYWR5IGluIHByb2dyZXNzJyk7CiAgYXNzZXJ0LmVxdWFsKGZhbHNlLCB0aGlzLnBlbmRpbmdfY2xvc2UsICdjbG9zZSBpcyBwZW5kaW5nJyk7CgogIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSB0cnVlOwoKICBhc3NlcnQuZXF1YWwoZmFsc2UsIGZsdXNoID09PSB1bmRlZmluZWQsICdtdXN0IHByb3ZpZGUgZmx1c2ggdmFsdWUnKTsKCiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IHRydWU7CgogIGlmIChmbHVzaCAhPT0gZXhwb3J0cy5aX05PX0ZMVVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfUEFSVElBTF9GTFVTSCAmJiBmbHVzaCAhPT0gZXhwb3J0cy5aX1NZTkNfRkxVU0ggJiYgZmx1c2ggIT09IGV4cG9ydHMuWl9GVUxMX0ZMVVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfRklOSVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfQkxPQ0spIHsKICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmbHVzaCB2YWx1ZScpOwogIH0KCiAgaWYgKGlucHV0ID09IG51bGwpIHsKICAgIGlucHV0ID0gQnVmZmVyLmFsbG9jKDApOwogICAgaW5fbGVuID0gMDsKICAgIGluX29mZiA9IDA7CiAgfQoKICB0aGlzLnN0cm0uYXZhaWxfaW4gPSBpbl9sZW47CiAgdGhpcy5zdHJtLmlucHV0ID0gaW5wdXQ7CiAgdGhpcy5zdHJtLm5leHRfaW4gPSBpbl9vZmY7CiAgdGhpcy5zdHJtLmF2YWlsX291dCA9IG91dF9sZW47CiAgdGhpcy5zdHJtLm91dHB1dCA9IG91dDsKICB0aGlzLnN0cm0ubmV4dF9vdXQgPSBvdXRfb2ZmOwogIHRoaXMuZmx1c2ggPSBmbHVzaDsKCiAgaWYgKCFhc3luYykgewogICAgLy8gc3luYyB2ZXJzaW9uCiAgICB0aGlzLl9wcm9jZXNzKCk7CgogICAgaWYgKHRoaXMuX2NoZWNrRXJyb3IoKSkgewogICAgICByZXR1cm4gdGhpcy5fYWZ0ZXJTeW5jKCk7CiAgICB9CiAgICByZXR1cm47CiAgfQoKICAvLyBhc3luYyB2ZXJzaW9uCiAgdmFyIHNlbGYgPSB0aGlzOwogIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkgewogICAgc2VsZi5fcHJvY2VzcygpOwogICAgc2VsZi5fYWZ0ZXIoKTsKICB9KTsKCiAgcmV0dXJuIHRoaXM7Cn07CgpabGliLnByb3RvdHlwZS5fYWZ0ZXJTeW5jID0gZnVuY3Rpb24gKCkgewogIHZhciBhdmFpbF9vdXQgPSB0aGlzLnN0cm0uYXZhaWxfb3V0OwogIHZhciBhdmFpbF9pbiA9IHRoaXMuc3RybS5hdmFpbF9pbjsKCiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlOwoKICByZXR1cm4gW2F2YWlsX2luLCBhdmFpbF9vdXRdOwp9OwoKWmxpYi5wcm90b3R5cGUuX3Byb2Nlc3MgPSBmdW5jdGlvbiAoKSB7CiAgdmFyIG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPSBudWxsOwoKICAvLyBJZiB0aGUgYXZhaWxfb3V0IGlzIGxlZnQgYXQgMCwgdGhlbiBpdCBtZWFucyB0aGF0IGl0IHJhbiBvdXQKICAvLyBvZiByb29tLiAgSWYgdGhlcmUgd2FzIGF2YWlsX291dCBsZWZ0IG92ZXIsIHRoZW4gaXQgbWVhbnMKICAvLyB0aGF0IGFsbCBvZiB0aGUgaW5wdXQgd2FzIGNvbnN1bWVkLgogIHN3aXRjaCAodGhpcy5tb2RlKSB7CiAgICBjYXNlIGV4cG9ydHMuREVGTEFURToKICAgIGNhc2UgZXhwb3J0cy5HWklQOgogICAgY2FzZSBleHBvcnRzLkRFRkxBVEVSQVc6CiAgICAgIHRoaXMuZXJyID0gemxpYl9kZWZsYXRlLmRlZmxhdGUodGhpcy5zdHJtLCB0aGlzLmZsdXNoKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIGV4cG9ydHMuVU5aSVA6CiAgICAgIGlmICh0aGlzLnN0cm0uYXZhaWxfaW4gPiAwKSB7CiAgICAgICAgbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSA9IHRoaXMuc3RybS5uZXh0X2luOwogICAgICB9CgogICAgICBzd2l0Y2ggKHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkKSB7CiAgICAgICAgY2FzZSAwOgogICAgICAgICAgaWYgKG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPT09IG51bGwpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKHRoaXMuc3RybS5pbnB1dFtuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlXSA9PT0gR1pJUF9IRUFERVJfSUQxKSB7CiAgICAgICAgICAgIHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkID0gMTsKICAgICAgICAgICAgbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSsrOwoKICAgICAgICAgICAgaWYgKHRoaXMuc3RybS5hdmFpbF9pbiA9PT0gMSkgewogICAgICAgICAgICAgIC8vIFRoZSBvbmx5IGF2YWlsYWJsZSBieXRlIHdhcyBhbHJlYWR5IHJlYWQuCiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMubW9kZSA9IGV4cG9ydHMuSU5GTEFURTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CgogICAgICAgIC8vIGZhbGx0aHJvdWdoCiAgICAgICAgY2FzZSAxOgogICAgICAgICAgaWYgKG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPT09IG51bGwpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CgogICAgICAgICAgaWYgKHRoaXMuc3RybS5pbnB1dFtuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlXSA9PT0gR1pJUF9IRUFERVJfSUQyKSB7CiAgICAgICAgICAgIHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkID0gMjsKICAgICAgICAgICAgdGhpcy5tb2RlID0gZXhwb3J0cy5HVU5aSVA7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBhY3R1YWwgZGlmZmVyZW5jZSBiZXR3ZWVuIElORkxBVEUgYW5kIElORkxBVEVSQVcKICAgICAgICAgICAgLy8gKGFmdGVyIGluaXRpYWxpemF0aW9uKS4KICAgICAgICAgICAgdGhpcy5tb2RlID0gZXhwb3J0cy5JTkZMQVRFOwogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbnVtYmVyIG9mIGd6aXAgbWFnaWMgbnVtYmVyIGJ5dGVzIHJlYWQnKTsKICAgICAgfQoKICAgIC8vIGZhbGx0aHJvdWdoCiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURToKICAgIGNhc2UgZXhwb3J0cy5HVU5aSVA6CiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURVJBVzoKICAgICAgdGhpcy5lcnIgPSB6bGliX2luZmxhdGUuaW5mbGF0ZSh0aGlzLnN0cm0sIHRoaXMuZmx1c2gKCiAgICAgIC8vIElmIGRhdGEgd2FzIGVuY29kZWQgd2l0aCBkaWN0aW9uYXJ5CiAgICAgICk7aWYgKHRoaXMuZXJyID09PSBleHBvcnRzLlpfTkVFRF9ESUNUICYmIHRoaXMuZGljdGlvbmFyeSkgewogICAgICAgIC8vIExvYWQgaXQKICAgICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlU2V0RGljdGlvbmFyeSh0aGlzLnN0cm0sIHRoaXMuZGljdGlvbmFyeSk7CiAgICAgICAgaWYgKHRoaXMuZXJyID09PSBleHBvcnRzLlpfT0spIHsKICAgICAgICAgIC8vIEFuZCB0cnkgdG8gZGVjb2RlIGFnYWluCiAgICAgICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlKHRoaXMuc3RybSwgdGhpcy5mbHVzaCk7CiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmVyciA9PT0gZXhwb3J0cy5aX0RBVEFfRVJST1IpIHsKICAgICAgICAgIC8vIEJvdGggaW5mbGF0ZVNldERpY3Rpb25hcnkoKSBhbmQgaW5mbGF0ZSgpIHJldHVybiBaX0RBVEFfRVJST1IuCiAgICAgICAgICAvLyBNYWtlIGl0IHBvc3NpYmxlIGZvciBBZnRlcigpIHRvIHRlbGwgYSBiYWQgZGljdGlvbmFyeSBmcm9tIGJhZAogICAgICAgICAgLy8gaW5wdXQuCiAgICAgICAgICB0aGlzLmVyciA9IGV4cG9ydHMuWl9ORUVEX0RJQ1Q7CiAgICAgICAgfQogICAgICB9CiAgICAgIHdoaWxlICh0aGlzLnN0cm0uYXZhaWxfaW4gPiAwICYmIHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HVU5aSVAgJiYgdGhpcy5lcnIgPT09IGV4cG9ydHMuWl9TVFJFQU1fRU5EICYmIHRoaXMuc3RybS5uZXh0X2luWzBdICE9PSAweDAwKSB7CiAgICAgICAgLy8gQnl0ZXMgcmVtYWluIGluIGlucHV0IGJ1ZmZlci4gUGVyaGFwcyB0aGlzIGlzIGFub3RoZXIgY29tcHJlc3NlZAogICAgICAgIC8vIG1lbWJlciBpbiB0aGUgc2FtZSBhcmNoaXZlLCBvciBqdXN0IHRyYWlsaW5nIGdhcmJhZ2UuCiAgICAgICAgLy8gVHJhaWxpbmcgemVybyBieXRlcyBhcmUgb2theSwgdGhvdWdoLCBzaW5jZSB0aGV5IGFyZSBmcmVxdWVudGx5CiAgICAgICAgLy8gdXNlZCBmb3IgcGFkZGluZy4KCiAgICAgICAgdGhpcy5yZXNldCgpOwogICAgICAgIHRoaXMuZXJyID0gemxpYl9pbmZsYXRlLmluZmxhdGUodGhpcy5zdHJtLCB0aGlzLmZsdXNoKTsKICAgICAgfQogICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBtb2RlICcgKyB0aGlzLm1vZGUpOwogIH0KfTsKClpsaWIucHJvdG90eXBlLl9jaGVja0Vycm9yID0gZnVuY3Rpb24gKCkgewogIC8vIEFjY2VwdGFibGUgZXJyb3Igc3RhdGVzIGRlcGVuZCBvbiB0aGUgdHlwZSBvZiB6bGliIHN0cmVhbS4KICBzd2l0Y2ggKHRoaXMuZXJyKSB7CiAgICBjYXNlIGV4cG9ydHMuWl9PSzoKICAgIGNhc2UgZXhwb3J0cy5aX0JVRl9FUlJPUjoKICAgICAgaWYgKHRoaXMuc3RybS5hdmFpbF9vdXQgIT09IDAgJiYgdGhpcy5mbHVzaCA9PT0gZXhwb3J0cy5aX0ZJTklTSCkgewogICAgICAgIHRoaXMuX2Vycm9yKCd1bmV4cGVjdGVkIGVuZCBvZiBmaWxlJyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIGJyZWFrOwogICAgY2FzZSBleHBvcnRzLlpfU1RSRUFNX0VORDoKICAgICAgLy8gbm9ybWFsIHN0YXR1c2VzLCBub3QgZmF0YWwKICAgICAgYnJlYWs7CiAgICBjYXNlIGV4cG9ydHMuWl9ORUVEX0RJQ1Q6CiAgICAgIGlmICh0aGlzLmRpY3Rpb25hcnkgPT0gbnVsbCkgewogICAgICAgIHRoaXMuX2Vycm9yKCdNaXNzaW5nIGRpY3Rpb25hcnknKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLl9lcnJvcignQmFkIGRpY3Rpb25hcnknKTsKICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICBkZWZhdWx0OgogICAgICAvLyBzb21ldGhpbmcgZWxzZS4KICAgICAgdGhpcy5fZXJyb3IoJ1psaWIgZXJyb3InKTsKICAgICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgcmV0dXJuIHRydWU7Cn07CgpabGliLnByb3RvdHlwZS5fYWZ0ZXIgPSBmdW5jdGlvbiAoKSB7CiAgaWYgKCF0aGlzLl9jaGVja0Vycm9yKCkpIHsKICAgIHJldHVybjsKICB9CgogIHZhciBhdmFpbF9vdXQgPSB0aGlzLnN0cm0uYXZhaWxfb3V0OwogIHZhciBhdmFpbF9pbiA9IHRoaXMuc3RybS5hdmFpbF9pbjsKCiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlOwoKICAvLyBjYWxsIHRoZSB3cml0ZSgpIGNiCiAgdGhpcy5jYWxsYmFjayhhdmFpbF9pbiwgYXZhaWxfb3V0KTsKCiAgaWYgKHRoaXMucGVuZGluZ19jbG9zZSkgewogICAgdGhpcy5jbG9zZSgpOwogIH0KfTsKClpsaWIucHJvdG90eXBlLl9lcnJvciA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7CiAgaWYgKHRoaXMuc3RybS5tc2cpIHsKICAgIG1lc3NhZ2UgPSB0aGlzLnN0cm0ubXNnOwogIH0KICB0aGlzLm9uZXJyb3IobWVzc2FnZSwgdGhpcy5lcnIKCiAgLy8gbm8gaG9wZSBvZiByZXNjdWUuCiAgKTt0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7CiAgaWYgKHRoaXMucGVuZGluZ19jbG9zZSkgewogICAgdGhpcy5jbG9zZSgpOwogIH0KfTsKClpsaWIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAod2luZG93Qml0cywgbGV2ZWwsIG1lbUxldmVsLCBzdHJhdGVneSwgZGljdGlvbmFyeSkgewogIGFzc2VydChhcmd1bWVudHMubGVuZ3RoID09PSA0IHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDUsICdpbml0KHdpbmRvd0JpdHMsIGxldmVsLCBtZW1MZXZlbCwgc3RyYXRlZ3ksIFtkaWN0aW9uYXJ5XSknKTsKCiAgYXNzZXJ0KHdpbmRvd0JpdHMgPj0gOCAmJiB3aW5kb3dCaXRzIDw9IDE1LCAnaW52YWxpZCB3aW5kb3dCaXRzJyk7CiAgYXNzZXJ0KGxldmVsID49IC0xICYmIGxldmVsIDw9IDksICdpbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsJyk7CgogIGFzc2VydChtZW1MZXZlbCA+PSAxICYmIG1lbUxldmVsIDw9IDksICdpbnZhbGlkIG1lbWxldmVsJyk7CgogIGFzc2VydChzdHJhdGVneSA9PT0gZXhwb3J0cy5aX0ZJTFRFUkVEIHx8IHN0cmF0ZWd5ID09PSBleHBvcnRzLlpfSFVGRk1BTl9PTkxZIHx8IHN0cmF0ZWd5ID09PSBleHBvcnRzLlpfUkxFIHx8IHN0cmF0ZWd5ID09PSBleHBvcnRzLlpfRklYRUQgfHwgc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9ERUZBVUxUX1NUUkFURUdZLCAnaW52YWxpZCBzdHJhdGVneScpOwoKICB0aGlzLl9pbml0KGxldmVsLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksIGRpY3Rpb25hcnkpOwogIHRoaXMuX3NldERpY3Rpb25hcnkoKTsKfTsKClpsaWIucHJvdG90eXBlLnBhcmFtcyA9IGZ1bmN0aW9uICgpIHsKICB0aHJvdyBuZXcgRXJyb3IoJ2RlZmxhdGVQYXJhbXMgTm90IHN1cHBvcnRlZCcpOwp9OwoKWmxpYi5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7CiAgdGhpcy5fcmVzZXQoKTsKICB0aGlzLl9zZXREaWN0aW9uYXJ5KCk7Cn07CgpabGliLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIChsZXZlbCwgd2luZG93Qml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5LCBkaWN0aW9uYXJ5KSB7CiAgdGhpcy5sZXZlbCA9IGxldmVsOwogIHRoaXMud2luZG93Qml0cyA9IHdpbmRvd0JpdHM7CiAgdGhpcy5tZW1MZXZlbCA9IG1lbUxldmVsOwogIHRoaXMuc3RyYXRlZ3kgPSBzdHJhdGVneTsKCiAgdGhpcy5mbHVzaCA9IGV4cG9ydHMuWl9OT19GTFVTSDsKCiAgdGhpcy5lcnIgPSBleHBvcnRzLlpfT0s7CgogIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1pJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1VOWklQKSB7CiAgICB0aGlzLndpbmRvd0JpdHMgKz0gMTY7CiAgfQoKICBpZiAodGhpcy5tb2RlID09PSBleHBvcnRzLlVOWklQKSB7CiAgICB0aGlzLndpbmRvd0JpdHMgKz0gMzI7CiAgfQoKICBpZiAodGhpcy5tb2RlID09PSBleHBvcnRzLkRFRkxBVEVSQVcgfHwgdGhpcy5tb2RlID09PSBleHBvcnRzLklORkxBVEVSQVcpIHsKICAgIHRoaXMud2luZG93Qml0cyA9IC0xICogdGhpcy53aW5kb3dCaXRzOwogIH0KCiAgdGhpcy5zdHJtID0gbmV3IFpzdHJlYW0oKTsKCiAgc3dpdGNoICh0aGlzLm1vZGUpIHsKICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOgogICAgY2FzZSBleHBvcnRzLkdaSVA6CiAgICBjYXNlIGV4cG9ydHMuREVGTEFURVJBVzoKICAgICAgdGhpcy5lcnIgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZUluaXQyKHRoaXMuc3RybSwgdGhpcy5sZXZlbCwgZXhwb3J0cy5aX0RFRkxBVEVELCB0aGlzLndpbmRvd0JpdHMsIHRoaXMubWVtTGV2ZWwsIHRoaXMuc3RyYXRlZ3kpOwogICAgICBicmVhazsKICAgIGNhc2UgZXhwb3J0cy5JTkZMQVRFOgogICAgY2FzZSBleHBvcnRzLkdVTlpJUDoKICAgIGNhc2UgZXhwb3J0cy5JTkZMQVRFUkFXOgogICAgY2FzZSBleHBvcnRzLlVOWklQOgogICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlSW5pdDIodGhpcy5zdHJtLCB0aGlzLndpbmRvd0JpdHMpOwogICAgICBicmVhazsKICAgIGRlZmF1bHQ6CiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBtb2RlICcgKyB0aGlzLm1vZGUpOwogIH0KCiAgaWYgKHRoaXMuZXJyICE9PSBleHBvcnRzLlpfT0spIHsKICAgIHRoaXMuX2Vycm9yKCdJbml0IGVycm9yJyk7CiAgfQoKICB0aGlzLmRpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5OwoKICB0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7CiAgdGhpcy5pbml0X2RvbmUgPSB0cnVlOwp9OwoKWmxpYi5wcm90b3R5cGUuX3NldERpY3Rpb25hcnkgPSBmdW5jdGlvbiAoKSB7CiAgaWYgKHRoaXMuZGljdGlvbmFyeSA9PSBudWxsKSB7CiAgICByZXR1cm47CiAgfQoKICB0aGlzLmVyciA9IGV4cG9ydHMuWl9PSzsKCiAgc3dpdGNoICh0aGlzLm1vZGUpIHsKICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOgogICAgY2FzZSBleHBvcnRzLkRFRkxBVEVSQVc6CiAgICAgIHRoaXMuZXJyID0gemxpYl9kZWZsYXRlLmRlZmxhdGVTZXREaWN0aW9uYXJ5KHRoaXMuc3RybSwgdGhpcy5kaWN0aW9uYXJ5KTsKICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICBicmVhazsKICB9CgogIGlmICh0aGlzLmVyciAhPT0gZXhwb3J0cy5aX09LKSB7CiAgICB0aGlzLl9lcnJvcignRmFpbGVkIHRvIHNldCBkaWN0aW9uYXJ5Jyk7CiAgfQp9OwoKWmxpYi5wcm90b3R5cGUuX3Jlc2V0ID0gZnVuY3Rpb24gKCkgewogIHRoaXMuZXJyID0gZXhwb3J0cy5aX09LOwoKICBzd2l0Y2ggKHRoaXMubW9kZSkgewogICAgY2FzZSBleHBvcnRzLkRFRkxBVEU6CiAgICBjYXNlIGV4cG9ydHMuREVGTEFURVJBVzoKICAgIGNhc2UgZXhwb3J0cy5HWklQOgogICAgICB0aGlzLmVyciA9IHpsaWJfZGVmbGF0ZS5kZWZsYXRlUmVzZXQodGhpcy5zdHJtKTsKICAgICAgYnJlYWs7CiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURToKICAgIGNhc2UgZXhwb3J0cy5JTkZMQVRFUkFXOgogICAgY2FzZSBleHBvcnRzLkdVTlpJUDoKICAgICAgdGhpcy5lcnIgPSB6bGliX2luZmxhdGUuaW5mbGF0ZVJlc2V0KHRoaXMuc3RybSk7CiAgICAgIGJyZWFrOwogICAgZGVmYXVsdDoKICAgICAgYnJlYWs7CiAgfQoKICBpZiAodGhpcy5lcnIgIT09IGV4cG9ydHMuWl9PSykgewogICAgdGhpcy5fZXJyb3IoJ0ZhaWxlZCB0byByZXNldCBzdHJlYW0nKTsKICB9Cn07CgpleHBvcnRzLlpsaWIgPSBabGliOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIsIF9fd2VicGFja19yZXF1aXJlX18oMTEpKSkKCi8qKiovIH0pLAovKiAxNTEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0J1ZmZlcihhcmcpIHsKICByZXR1cm4gYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnCiAgICAmJiB0eXBlb2YgYXJnLmNvcHkgPT09ICdmdW5jdGlvbicKICAgICYmIHR5cGVvZiBhcmcuZmlsbCA9PT0gJ2Z1bmN0aW9uJwogICAgJiYgdHlwZW9mIGFyZy5yZWFkVUludDggPT09ICdmdW5jdGlvbic7Cn0KCi8qKiovIH0pLAovKiAxNTIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7CiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGUKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3RvcikgewogICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3IKICAgIGN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckN0b3IucHJvdG90eXBlLCB7CiAgICAgIGNvbnN0cnVjdG9yOiB7CiAgICAgICAgdmFsdWU6IGN0b3IsCiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsCiAgICAgICAgd3JpdGFibGU6IHRydWUsCiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlCiAgICAgIH0KICAgIH0pOwogIH07Cn0gZWxzZSB7CiAgLy8gb2xkIHNjaG9vbCBzaGltIGZvciBvbGQgYnJvd3NlcnMKICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3RvcikgewogICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3IKICAgIHZhciBUZW1wQ3RvciA9IGZ1bmN0aW9uICgpIHt9CiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlCiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpCiAgICBjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IGN0b3IKICB9Cn0KCgovKioqLyB9KSwKLyogMTUzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW4KLy8KLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi8vCi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAovLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLy8KLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZQovLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQovLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgovLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgoKZnVuY3Rpb24gWlN0cmVhbSgpIHsKICAvKiBuZXh0IGlucHV0IGJ5dGUgKi8KICB0aGlzLmlucHV0ID0gbnVsbDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVycwogIHRoaXMubmV4dF9pbiA9IDA7CiAgLyogbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBpbnB1dCAqLwogIHRoaXMuYXZhaWxfaW4gPSAwOwogIC8qIHRvdGFsIG51bWJlciBvZiBpbnB1dCBieXRlcyByZWFkIHNvIGZhciAqLwogIHRoaXMudG90YWxfaW4gPSAwOwogIC8qIG5leHQgb3V0cHV0IGJ5dGUgc2hvdWxkIGJlIHB1dCB0aGVyZSAqLwogIHRoaXMub3V0cHV0ID0gbnVsbDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVycwogIHRoaXMubmV4dF9vdXQgPSAwOwogIC8qIHJlbWFpbmluZyBmcmVlIHNwYWNlIGF0IG91dHB1dCAqLwogIHRoaXMuYXZhaWxfb3V0ID0gMDsKICAvKiB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgb3V0cHV0IHNvIGZhciAqLwogIHRoaXMudG90YWxfb3V0ID0gMDsKICAvKiBsYXN0IGVycm9yIG1lc3NhZ2UsIE5VTEwgaWYgbm8gZXJyb3IgKi8KICB0aGlzLm1zZyA9ICcnLypaX05VTEwqLzsKICAvKiBub3QgdmlzaWJsZSBieSBhcHBsaWNhdGlvbnMgKi8KICB0aGlzLnN0YXRlID0gbnVsbDsKICAvKiBiZXN0IGd1ZXNzIGFib3V0IHRoZSBkYXRhIHR5cGU6IGJpbmFyeSBvciB0ZXh0ICovCiAgdGhpcy5kYXRhX3R5cGUgPSAyLypaX1VOS05PV04qLzsKICAvKiBhZGxlcjMyIHZhbHVlIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSAqLwogIHRoaXMuYWRsZXIgPSAwOwp9Cgptb2R1bGUuZXhwb3J0cyA9IFpTdHJlYW07CgoKLyoqKi8gfSksCi8qIDE1NCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyCi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luCi8vCi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcwovLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgovLwovLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSwKLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdAovLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6Ci8vCi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90Ci8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUKLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUKLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgovLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZQovLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi4KCnZhciB1dGlscyAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNCk7CnZhciB0cmVlcyAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTUpOwp2YXIgYWRsZXIzMiA9IF9fd2VicGFja19yZXF1aXJlX18oODkpOwp2YXIgY3JjMzIgICA9IF9fd2VicGFja19yZXF1aXJlX18oOTApOwp2YXIgbXNnICAgICA9IF9fd2VicGFja19yZXF1aXJlX18oMTU2KTsKCi8qIFB1YmxpYyBjb25zdGFudHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCgoKLyogQWxsb3dlZCBmbHVzaCB2YWx1ZXM7IHNlZSBkZWZsYXRlKCkgYW5kIGluZmxhdGUoKSBiZWxvdyBmb3IgZGV0YWlscyAqLwp2YXIgWl9OT19GTFVTSCAgICAgID0gMDsKdmFyIFpfUEFSVElBTF9GTFVTSCA9IDE7Ci8vdmFyIFpfU1lOQ19GTFVTSCAgICA9IDI7CnZhciBaX0ZVTExfRkxVU0ggICAgPSAzOwp2YXIgWl9GSU5JU0ggICAgICAgID0gNDsKdmFyIFpfQkxPQ0sgICAgICAgICA9IDU7Ci8vdmFyIFpfVFJFRVMgICAgICAgICA9IDY7CgoKLyogUmV0dXJuIGNvZGVzIGZvciB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMuIE5lZ2F0aXZlIHZhbHVlcwogKiBhcmUgZXJyb3JzLCBwb3NpdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgZm9yIHNwZWNpYWwgYnV0IG5vcm1hbCBldmVudHMuCiAqLwp2YXIgWl9PSyAgICAgICAgICAgID0gMDsKdmFyIFpfU1RSRUFNX0VORCAgICA9IDE7Ci8vdmFyIFpfTkVFRF9ESUNUICAgICA9IDI7Ci8vdmFyIFpfRVJSTk8gICAgICAgICA9IC0xOwp2YXIgWl9TVFJFQU1fRVJST1IgID0gLTI7CnZhciBaX0RBVEFfRVJST1IgICAgPSAtMzsKLy92YXIgWl9NRU1fRVJST1IgICAgID0gLTQ7CnZhciBaX0JVRl9FUlJPUiAgICAgPSAtNTsKLy92YXIgWl9WRVJTSU9OX0VSUk9SID0gLTY7CgoKLyogY29tcHJlc3Npb24gbGV2ZWxzICovCi8vdmFyIFpfTk9fQ09NUFJFU1NJT04gICAgICA9IDA7Ci8vdmFyIFpfQkVTVF9TUEVFRCAgICAgICAgICA9IDE7Ci8vdmFyIFpfQkVTVF9DT01QUkVTU0lPTiAgICA9IDk7CnZhciBaX0RFRkFVTFRfQ09NUFJFU1NJT04gPSAtMTsKCgp2YXIgWl9GSUxURVJFRCAgICAgICAgICAgID0gMTsKdmFyIFpfSFVGRk1BTl9PTkxZICAgICAgICA9IDI7CnZhciBaX1JMRSAgICAgICAgICAgICAgICAgPSAzOwp2YXIgWl9GSVhFRCAgICAgICAgICAgICAgID0gNDsKdmFyIFpfREVGQVVMVF9TVFJBVEVHWSAgICA9IDA7CgovKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovCi8vdmFyIFpfQklOQVJZICAgICAgICAgICAgICA9IDA7Ci8vdmFyIFpfVEVYVCAgICAgICAgICAgICAgICA9IDE7Ci8vdmFyIFpfQVNDSUkgICAgICAgICAgICAgICA9IDE7IC8vID0gWl9URVhUCnZhciBaX1VOS05PV04gICAgICAgICAgICAgPSAyOwoKCi8qIFRoZSBkZWZsYXRlIGNvbXByZXNzaW9uIG1ldGhvZCAqLwp2YXIgWl9ERUZMQVRFRCAgPSA4OwoKLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8KCgp2YXIgTUFYX01FTV9MRVZFTCA9IDk7Ci8qIE1heGltdW0gdmFsdWUgZm9yIG1lbUxldmVsIGluIGRlZmxhdGVJbml0MiAqLwp2YXIgTUFYX1dCSVRTID0gMTU7Ci8qIDMySyBMWjc3IHdpbmRvdyAqLwp2YXIgREVGX01FTV9MRVZFTCA9IDg7CgoKdmFyIExFTkdUSF9DT0RFUyAgPSAyOTsKLyogbnVtYmVyIG9mIGxlbmd0aCBjb2Rlcywgbm90IGNvdW50aW5nIHRoZSBzcGVjaWFsIEVORF9CTE9DSyBjb2RlICovCnZhciBMSVRFUkFMUyAgICAgID0gMjU2OwovKiBudW1iZXIgb2YgbGl0ZXJhbCBieXRlcyAwLi4yNTUgKi8KdmFyIExfQ09ERVMgICAgICAgPSBMSVRFUkFMUyArIDEgKyBMRU5HVEhfQ09ERVM7Ci8qIG51bWJlciBvZiBMaXRlcmFsIG9yIExlbmd0aCBjb2RlcywgaW5jbHVkaW5nIHRoZSBFTkRfQkxPQ0sgY29kZSAqLwp2YXIgRF9DT0RFUyAgICAgICA9IDMwOwovKiBudW1iZXIgb2YgZGlzdGFuY2UgY29kZXMgKi8KdmFyIEJMX0NPREVTICAgICAgPSAxOTsKLyogbnVtYmVyIG9mIGNvZGVzIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGJpdCBsZW5ndGhzICovCnZhciBIRUFQX1NJWkUgICAgID0gMiAqIExfQ09ERVMgKyAxOwovKiBtYXhpbXVtIGhlYXAgc2l6ZSAqLwp2YXIgTUFYX0JJVFMgID0gMTU7Ci8qIEFsbCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JJVFMgYml0cyAqLwoKdmFyIE1JTl9NQVRDSCA9IDM7CnZhciBNQVhfTUFUQ0ggPSAyNTg7CnZhciBNSU5fTE9PS0FIRUFEID0gKE1BWF9NQVRDSCArIE1JTl9NQVRDSCArIDEpOwoKdmFyIFBSRVNFVF9ESUNUID0gMHgyMDsKCnZhciBJTklUX1NUQVRFID0gNDI7CnZhciBFWFRSQV9TVEFURSA9IDY5Owp2YXIgTkFNRV9TVEFURSA9IDczOwp2YXIgQ09NTUVOVF9TVEFURSA9IDkxOwp2YXIgSENSQ19TVEFURSA9IDEwMzsKdmFyIEJVU1lfU1RBVEUgPSAxMTM7CnZhciBGSU5JU0hfU1RBVEUgPSA2NjY7Cgp2YXIgQlNfTkVFRF9NT1JFICAgICAgPSAxOyAvKiBibG9jayBub3QgY29tcGxldGVkLCBuZWVkIG1vcmUgaW5wdXQgb3IgbW9yZSBvdXRwdXQgKi8KdmFyIEJTX0JMT0NLX0RPTkUgICAgID0gMjsgLyogYmxvY2sgZmx1c2ggcGVyZm9ybWVkICovCnZhciBCU19GSU5JU0hfU1RBUlRFRCA9IDM7IC8qIGZpbmlzaCBzdGFydGVkLCBuZWVkIG9ubHkgbW9yZSBvdXRwdXQgYXQgbmV4dCBkZWZsYXRlICovCnZhciBCU19GSU5JU0hfRE9ORSAgICA9IDQ7IC8qIGZpbmlzaCBkb25lLCBhY2NlcHQgbm8gbW9yZSBpbnB1dCBvciBvdXRwdXQgKi8KCnZhciBPU19DT0RFID0gMHgwMzsgLy8gVW5peCA6KSAuIERvbid0IGRldGVjdCwgdXNlIHRoaXMgZGVmYXVsdC4KCmZ1bmN0aW9uIGVycihzdHJtLCBlcnJvckNvZGUpIHsKICBzdHJtLm1zZyA9IG1zZ1tlcnJvckNvZGVdOwogIHJldHVybiBlcnJvckNvZGU7Cn0KCmZ1bmN0aW9uIHJhbmsoZikgewogIHJldHVybiAoKGYpIDw8IDEpIC0gKChmKSA+IDQgPyA5IDogMCk7Cn0KCmZ1bmN0aW9uIHplcm8oYnVmKSB7IHZhciBsZW4gPSBidWYubGVuZ3RoOyB3aGlsZSAoLS1sZW4gPj0gMCkgeyBidWZbbGVuXSA9IDA7IH0gfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogRmx1c2ggYXMgbXVjaCBwZW5kaW5nIG91dHB1dCBhcyBwb3NzaWJsZS4gQWxsIGRlZmxhdGUoKSBvdXRwdXQgZ29lcwogKiB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gc28gc29tZSBhcHBsaWNhdGlvbnMgbWF5IHdpc2ggdG8gbW9kaWZ5IGl0CiAqIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSBsYXJnZSBzdHJtLT5vdXRwdXQgYnVmZmVyIGFuZCBjb3B5aW5nIGludG8gaXQuCiAqIChTZWUgYWxzbyByZWFkX2J1ZigpKS4KICovCmZ1bmN0aW9uIGZsdXNoX3BlbmRpbmcoc3RybSkgewogIHZhciBzID0gc3RybS5zdGF0ZTsKCiAgLy9fdHJfZmx1c2hfYml0cyhzKTsKICB2YXIgbGVuID0gcy5wZW5kaW5nOwogIGlmIChsZW4gPiBzdHJtLmF2YWlsX291dCkgewogICAgbGVuID0gc3RybS5hdmFpbF9vdXQ7CiAgfQogIGlmIChsZW4gPT09IDApIHsgcmV0dXJuOyB9CgogIHV0aWxzLmFycmF5U2V0KHN0cm0ub3V0cHV0LCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmdfb3V0LCBsZW4sIHN0cm0ubmV4dF9vdXQpOwogIHN0cm0ubmV4dF9vdXQgKz0gbGVuOwogIHMucGVuZGluZ19vdXQgKz0gbGVuOwogIHN0cm0udG90YWxfb3V0ICs9IGxlbjsKICBzdHJtLmF2YWlsX291dCAtPSBsZW47CiAgcy5wZW5kaW5nIC09IGxlbjsKICBpZiAocy5wZW5kaW5nID09PSAwKSB7CiAgICBzLnBlbmRpbmdfb3V0ID0gMDsKICB9Cn0KCgpmdW5jdGlvbiBmbHVzaF9ibG9ja19vbmx5KHMsIGxhc3QpIHsKICB0cmVlcy5fdHJfZmx1c2hfYmxvY2socywgKHMuYmxvY2tfc3RhcnQgPj0gMCA/IHMuYmxvY2tfc3RhcnQgOiAtMSksIHMuc3Ryc3RhcnQgLSBzLmJsb2NrX3N0YXJ0LCBsYXN0KTsKICBzLmJsb2NrX3N0YXJ0ID0gcy5zdHJzdGFydDsKICBmbHVzaF9wZW5kaW5nKHMuc3RybSk7Cn0KCgpmdW5jdGlvbiBwdXRfYnl0ZShzLCBiKSB7CiAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBiOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBQdXQgYSBzaG9ydCBpbiB0aGUgcGVuZGluZyBidWZmZXIuIFRoZSAxNi1iaXQgdmFsdWUgaXMgcHV0IGluIE1TQiBvcmRlci4KICogSU4gYXNzZXJ0aW9uOiB0aGUgc3RyZWFtIHN0YXRlIGlzIGNvcnJlY3QgYW5kIHRoZXJlIGlzIGVub3VnaCByb29tIGluCiAqIHBlbmRpbmdfYnVmLgogKi8KZnVuY3Rpb24gcHV0U2hvcnRNU0IocywgYikgewovLyAgcHV0X2J5dGUocywgKEJ5dGUpKGIgPj4gOCkpOwovLyAgcHV0X2J5dGUocywgKEJ5dGUpKGIgJiAweGZmKSk7CiAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSAoYiA+Pj4gOCkgJiAweGZmOwogIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gYiAmIDB4ZmY7Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogUmVhZCBhIG5ldyBidWZmZXIgZnJvbSB0aGUgY3VycmVudCBpbnB1dCBzdHJlYW0sIHVwZGF0ZSB0aGUgYWRsZXIzMgogKiBhbmQgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBBbGwgZGVmbGF0ZSgpIGlucHV0IGdvZXMgdGhyb3VnaAogKiB0aGlzIGZ1bmN0aW9uIHNvIHNvbWUgYXBwbGljYXRpb25zIG1heSB3aXNoIHRvIG1vZGlmeSBpdCB0byBhdm9pZAogKiBhbGxvY2F0aW5nIGEgbGFyZ2Ugc3RybS0+aW5wdXQgYnVmZmVyIGFuZCBjb3B5aW5nIGZyb20gaXQuCiAqIChTZWUgYWxzbyBmbHVzaF9wZW5kaW5nKCkpLgogKi8KZnVuY3Rpb24gcmVhZF9idWYoc3RybSwgYnVmLCBzdGFydCwgc2l6ZSkgewogIHZhciBsZW4gPSBzdHJtLmF2YWlsX2luOwoKICBpZiAobGVuID4gc2l6ZSkgeyBsZW4gPSBzaXplOyB9CiAgaWYgKGxlbiA9PT0gMCkgeyByZXR1cm4gMDsgfQoKICBzdHJtLmF2YWlsX2luIC09IGxlbjsKCiAgLy8gem1lbWNweShidWYsIHN0cm0tPm5leHRfaW4sIGxlbik7CiAgdXRpbHMuYXJyYXlTZXQoYnVmLCBzdHJtLmlucHV0LCBzdHJtLm5leHRfaW4sIGxlbiwgc3RhcnQpOwogIGlmIChzdHJtLnN0YXRlLndyYXAgPT09IDEpIHsKICAgIHN0cm0uYWRsZXIgPSBhZGxlcjMyKHN0cm0uYWRsZXIsIGJ1ZiwgbGVuLCBzdGFydCk7CiAgfQoKICBlbHNlIGlmIChzdHJtLnN0YXRlLndyYXAgPT09IDIpIHsKICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBidWYsIGxlbiwgc3RhcnQpOwogIH0KCiAgc3RybS5uZXh0X2luICs9IGxlbjsKICBzdHJtLnRvdGFsX2luICs9IGxlbjsKCiAgcmV0dXJuIGxlbjsKfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBTZXQgbWF0Y2hfc3RhcnQgdG8gdGhlIGxvbmdlc3QgbWF0Y2ggc3RhcnRpbmcgYXQgdGhlIGdpdmVuIHN0cmluZyBhbmQKICogcmV0dXJuIGl0cyBsZW5ndGguIE1hdGNoZXMgc2hvcnRlciBvciBlcXVhbCB0byBwcmV2X2xlbmd0aCBhcmUgZGlzY2FyZGVkLAogKiBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHQgaXMgZXF1YWwgdG8gcHJldl9sZW5ndGggYW5kIG1hdGNoX3N0YXJ0IGlzCiAqIGdhcmJhZ2UuCiAqIElOIGFzc2VydGlvbnM6IGN1cl9tYXRjaCBpcyB0aGUgaGVhZCBvZiB0aGUgaGFzaCBjaGFpbiBmb3IgdGhlIGN1cnJlbnQKICogICBzdHJpbmcgKHN0cnN0YXJ0KSBhbmQgaXRzIGRpc3RhbmNlIGlzIDw9IE1BWF9ESVNULCBhbmQgcHJldl9sZW5ndGggPj0gMQogKiBPVVQgYXNzZXJ0aW9uOiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIG5vdCBncmVhdGVyIHRoYW4gcy0+bG9va2FoZWFkLgogKi8KZnVuY3Rpb24gbG9uZ2VzdF9tYXRjaChzLCBjdXJfbWF0Y2gpIHsKICB2YXIgY2hhaW5fbGVuZ3RoID0gcy5tYXhfY2hhaW5fbGVuZ3RoOyAgICAgIC8qIG1heCBoYXNoIGNoYWluIGxlbmd0aCAqLwogIHZhciBzY2FuID0gcy5zdHJzdGFydDsgLyogY3VycmVudCBzdHJpbmcgKi8KICB2YXIgbWF0Y2g7ICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaGVkIHN0cmluZyAqLwogIHZhciBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgbWF0Y2ggKi8KICB2YXIgYmVzdF9sZW4gPSBzLnByZXZfbGVuZ3RoOyAgICAgICAgICAgICAgLyogYmVzdCBtYXRjaCBsZW5ndGggc28gZmFyICovCiAgdmFyIG5pY2VfbWF0Y2ggPSBzLm5pY2VfbWF0Y2g7ICAgICAgICAgICAgIC8qIHN0b3AgaWYgbWF0Y2ggbG9uZyBlbm91Z2ggKi8KICB2YXIgbGltaXQgPSAocy5zdHJzdGFydCA+IChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSA/CiAgICAgIHMuc3Ryc3RhcnQgLSAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKSA6IDAvKk5JTCovOwoKICB2YXIgX3dpbiA9IHMud2luZG93OyAvLyBzaG9ydGN1dAoKICB2YXIgd21hc2sgPSBzLndfbWFzazsKICB2YXIgcHJldiAgPSBzLnByZXY7CgogIC8qIFN0b3Agd2hlbiBjdXJfbWF0Y2ggYmVjb21lcyA8PSBsaW1pdC4gVG8gc2ltcGxpZnkgdGhlIGNvZGUsCiAgICogd2UgcHJldmVudCBtYXRjaGVzIHdpdGggdGhlIHN0cmluZyBvZiB3aW5kb3cgaW5kZXggMC4KICAgKi8KCiAgdmFyIHN0cmVuZCA9IHMuc3Ryc3RhcnQgKyBNQVhfTUFUQ0g7CiAgdmFyIHNjYW5fZW5kMSAgPSBfd2luW3NjYW4gKyBiZXN0X2xlbiAtIDFdOwogIHZhciBzY2FuX2VuZCAgID0gX3dpbltzY2FuICsgYmVzdF9sZW5dOwoKICAvKiBUaGUgY29kZSBpcyBvcHRpbWl6ZWQgZm9yIEhBU0hfQklUUyA+PSA4IGFuZCBNQVhfTUFUQ0gtMiBtdWx0aXBsZSBvZiAxNi4KICAgKiBJdCBpcyBlYXN5IHRvIGdldCByaWQgb2YgdGhpcyBvcHRpbWl6YXRpb24gaWYgbmVjZXNzYXJ5LgogICAqLwogIC8vIEFzc2VydChzLT5oYXNoX2JpdHMgPj0gOCAmJiBNQVhfTUFUQ0ggPT0gMjU4LCAiQ29kZSB0b28gY2xldmVyIik7CgogIC8qIERvIG5vdCB3YXN0ZSB0b28gbXVjaCB0aW1lIGlmIHdlIGFscmVhZHkgaGF2ZSBhIGdvb2QgbWF0Y2g6ICovCiAgaWYgKHMucHJldl9sZW5ndGggPj0gcy5nb29kX21hdGNoKSB7CiAgICBjaGFpbl9sZW5ndGggPj49IDI7CiAgfQogIC8qIERvIG5vdCBsb29rIGZvciBtYXRjaGVzIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBpbnB1dC4gVGhpcyBpcyBuZWNlc3NhcnkKICAgKiB0byBtYWtlIGRlZmxhdGUgZGV0ZXJtaW5pc3RpYy4KICAgKi8KICBpZiAobmljZV9tYXRjaCA+IHMubG9va2FoZWFkKSB7IG5pY2VfbWF0Y2ggPSBzLmxvb2thaGVhZDsgfQoKICAvLyBBc3NlcnQoKHVsZylzLT5zdHJzdGFydCA8PSBzLT53aW5kb3dfc2l6ZS1NSU5fTE9PS0FIRUFELCAibmVlZCBsb29rYWhlYWQiKTsKCiAgZG8gewogICAgLy8gQXNzZXJ0KGN1cl9tYXRjaCA8IHMtPnN0cnN0YXJ0LCAibm8gZnV0dXJlIik7CiAgICBtYXRjaCA9IGN1cl9tYXRjaDsKCiAgICAvKiBTa2lwIHRvIG5leHQgbWF0Y2ggaWYgdGhlIG1hdGNoIGxlbmd0aCBjYW5ub3QgaW5jcmVhc2UKICAgICAqIG9yIGlmIHRoZSBtYXRjaCBsZW5ndGggaXMgbGVzcyB0aGFuIDIuICBOb3RlIHRoYXQgdGhlIGNoZWNrcyBiZWxvdwogICAgICogZm9yIGluc3VmZmljaWVudCBsb29rYWhlYWQgb25seSBvY2N1ciBvY2Nhc2lvbmFsbHkgZm9yIHBlcmZvcm1hbmNlCiAgICAgKiByZWFzb25zLiAgVGhlcmVmb3JlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHdpbGwgYmUgYWNjZXNzZWQsIGFuZAogICAgICogY29uZGl0aW9uYWwganVtcHMgd2lsbCBiZSBtYWRlIHRoYXQgZGVwZW5kIG9uIHRob3NlIHZhbHVlcy4KICAgICAqIEhvd2V2ZXIgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2ggaXMgbGltaXRlZCB0byB0aGUgbG9va2FoZWFkLCBzbwogICAgICogdGhlIG91dHB1dCBvZiBkZWZsYXRlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgdW5pbml0aWFsaXplZCB2YWx1ZXMuCiAgICAgKi8KCiAgICBpZiAoX3dpblttYXRjaCArIGJlc3RfbGVuXSAgICAgIT09IHNjYW5fZW5kICB8fAogICAgICAgIF93aW5bbWF0Y2ggKyBiZXN0X2xlbiAtIDFdICE9PSBzY2FuX2VuZDEgfHwKICAgICAgICBfd2luW21hdGNoXSAgICAgICAgICAgICAgICAhPT0gX3dpbltzY2FuXSB8fAogICAgICAgIF93aW5bKyttYXRjaF0gICAgICAgICAgICAgICE9PSBfd2luW3NjYW4gKyAxXSkgewogICAgICBjb250aW51ZTsKICAgIH0KCiAgICAvKiBUaGUgY2hlY2sgYXQgYmVzdF9sZW4tMSBjYW4gYmUgcmVtb3ZlZCBiZWNhdXNlIGl0IHdpbGwgYmUgbWFkZQogICAgICogYWdhaW4gbGF0ZXIuIChUaGlzIGhldXJpc3RpYyBpcyBub3QgYWx3YXlzIGEgd2luLikKICAgICAqIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY29tcGFyZSBzY2FuWzJdIGFuZCBtYXRjaFsyXSBzaW5jZSB0aGV5CiAgICAgKiBhcmUgYWx3YXlzIGVxdWFsIHdoZW4gdGhlIG90aGVyIGJ5dGVzIG1hdGNoLCBnaXZlbiB0aGF0CiAgICAgKiB0aGUgaGFzaCBrZXlzIGFyZSBlcXVhbCBhbmQgdGhhdCBIQVNIX0JJVFMgPj0gOC4KICAgICAqLwogICAgc2NhbiArPSAyOwogICAgbWF0Y2grKzsKICAgIC8vIEFzc2VydCgqc2NhbiA9PSAqbWF0Y2gsICJtYXRjaFsyXT8iKTsKCiAgICAvKiBXZSBjaGVjayBmb3IgaW5zdWZmaWNpZW50IGxvb2thaGVhZCBvbmx5IGV2ZXJ5IDh0aCBjb21wYXJpc29uOwogICAgICogdGhlIDI1NnRoIGNoZWNrIHdpbGwgYmUgbWFkZSBhdCBzdHJzdGFydCsyNTguCiAgICAgKi8KICAgIGRvIHsKICAgICAgLypqc2hpbnQgbm9lbXB0eTpmYWxzZSovCiAgICB9IHdoaWxlIChfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmCiAgICAgICAgICAgICBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmCiAgICAgICAgICAgICBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmCiAgICAgICAgICAgICBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmCiAgICAgICAgICAgICBzY2FuIDwgc3RyZW5kKTsKCiAgICAvLyBBc3NlcnQoc2NhbiA8PSBzLT53aW5kb3crKHVuc2lnbmVkKShzLT53aW5kb3dfc2l6ZS0xKSwgIndpbGQgc2NhbiIpOwoKICAgIGxlbiA9IE1BWF9NQVRDSCAtIChzdHJlbmQgLSBzY2FuKTsKICAgIHNjYW4gPSBzdHJlbmQgLSBNQVhfTUFUQ0g7CgogICAgaWYgKGxlbiA+IGJlc3RfbGVuKSB7CiAgICAgIHMubWF0Y2hfc3RhcnQgPSBjdXJfbWF0Y2g7CiAgICAgIGJlc3RfbGVuID0gbGVuOwogICAgICBpZiAobGVuID49IG5pY2VfbWF0Y2gpIHsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICBzY2FuX2VuZDEgID0gX3dpbltzY2FuICsgYmVzdF9sZW4gLSAxXTsKICAgICAgc2Nhbl9lbmQgICA9IF93aW5bc2NhbiArIGJlc3RfbGVuXTsKICAgIH0KICB9IHdoaWxlICgoY3VyX21hdGNoID0gcHJldltjdXJfbWF0Y2ggJiB3bWFza10pID4gbGltaXQgJiYgLS1jaGFpbl9sZW5ndGggIT09IDApOwoKICBpZiAoYmVzdF9sZW4gPD0gcy5sb29rYWhlYWQpIHsKICAgIHJldHVybiBiZXN0X2xlbjsKICB9CiAgcmV0dXJuIHMubG9va2FoZWFkOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIEZpbGwgdGhlIHdpbmRvdyB3aGVuIHRoZSBsb29rYWhlYWQgYmVjb21lcyBpbnN1ZmZpY2llbnQuCiAqIFVwZGF0ZXMgc3Ryc3RhcnQgYW5kIGxvb2thaGVhZC4KICoKICogSU4gYXNzZXJ0aW9uOiBsb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFECiAqIE9VVCBhc3NlcnRpb25zOiBzdHJzdGFydCA8PSB3aW5kb3dfc2l6ZS1NSU5fTE9PS0FIRUFECiAqICAgIEF0IGxlYXN0IG9uZSBieXRlIGhhcyBiZWVuIHJlYWQsIG9yIGF2YWlsX2luID09IDA7IHJlYWRzIGFyZQogKiAgICBwZXJmb3JtZWQgZm9yIGF0IGxlYXN0IHR3byBieXRlcyAocmVxdWlyZWQgZm9yIHRoZSB6aXAgdHJhbnNsYXRlX2VvbAogKiAgICBvcHRpb24gLS0gbm90IHN1cHBvcnRlZCBoZXJlKS4KICovCmZ1bmN0aW9uIGZpbGxfd2luZG93KHMpIHsKICB2YXIgX3dfc2l6ZSA9IHMud19zaXplOwogIHZhciBwLCBuLCBtLCBtb3JlLCBzdHI7CgogIC8vQXNzZXJ0KHMtPmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQsICJhbHJlYWR5IGVub3VnaCBsb29rYWhlYWQiKTsKCiAgZG8gewogICAgbW9yZSA9IHMud2luZG93X3NpemUgLSBzLmxvb2thaGVhZCAtIHMuc3Ryc3RhcnQ7CgogICAgLy8gSlMgaW50cyBoYXZlIDMyIGJpdCwgYmxvY2sgYmVsb3cgbm90IG5lZWRlZAogICAgLyogRGVhbCB3aXRoICFAIyQlIDY0SyBsaW1pdDogKi8KICAgIC8vaWYgKHNpemVvZihpbnQpIDw9IDIpIHsKICAgIC8vICAgIGlmIChtb3JlID09IDAgJiYgcy0+c3Ryc3RhcnQgPT0gMCAmJiBzLT5sb29rYWhlYWQgPT0gMCkgewogICAgLy8gICAgICAgIG1vcmUgPSB3c2l6ZTsKICAgIC8vCiAgICAvLyAgfSBlbHNlIGlmIChtb3JlID09ICh1bnNpZ25lZCkoLTEpKSB7CiAgICAvLyAgICAgICAgLyogVmVyeSB1bmxpa2VseSwgYnV0IHBvc3NpYmxlIG9uIDE2IGJpdCBtYWNoaW5lIGlmCiAgICAvLyAgICAgICAgICogc3Ryc3RhcnQgPT0gMCAmJiBsb29rYWhlYWQgPT0gMSAoaW5wdXQgZG9uZSBhIGJ5dGUgYXQgdGltZSkKICAgIC8vICAgICAgICAgKi8KICAgIC8vICAgICAgICBtb3JlLS07CiAgICAvLyAgICB9CiAgICAvL30KCgogICAgLyogSWYgdGhlIHdpbmRvdyBpcyBhbG1vc3QgZnVsbCBhbmQgdGhlcmUgaXMgaW5zdWZmaWNpZW50IGxvb2thaGVhZCwKICAgICAqIG1vdmUgdGhlIHVwcGVyIGhhbGYgdG8gdGhlIGxvd2VyIG9uZSB0byBtYWtlIHJvb20gaW4gdGhlIHVwcGVyIGhhbGYuCiAgICAgKi8KICAgIGlmIChzLnN0cnN0YXJ0ID49IF93X3NpemUgKyAoX3dfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSB7CgogICAgICB1dGlscy5hcnJheVNldChzLndpbmRvdywgcy53aW5kb3csIF93X3NpemUsIF93X3NpemUsIDApOwogICAgICBzLm1hdGNoX3N0YXJ0IC09IF93X3NpemU7CiAgICAgIHMuc3Ryc3RhcnQgLT0gX3dfc2l6ZTsKICAgICAgLyogd2Ugbm93IGhhdmUgc3Ryc3RhcnQgPj0gTUFYX0RJU1QgKi8KICAgICAgcy5ibG9ja19zdGFydCAtPSBfd19zaXplOwoKICAgICAgLyogU2xpZGUgdGhlIGhhc2ggdGFibGUgKGNvdWxkIGJlIGF2b2lkZWQgd2l0aCAzMiBiaXQgdmFsdWVzCiAgICAgICBhdCB0aGUgZXhwZW5zZSBvZiBtZW1vcnkgdXNhZ2UpLiBXZSBzbGlkZSBldmVuIHdoZW4gbGV2ZWwgPT0gMAogICAgICAgdG8ga2VlcCB0aGUgaGFzaCB0YWJsZSBjb25zaXN0ZW50IGlmIHdlIHN3aXRjaCBiYWNrIHRvIGxldmVsID4gMAogICAgICAgbGF0ZXIuIChVc2luZyBsZXZlbCAwIHBlcm1hbmVudGx5IGlzIG5vdCBhbiBvcHRpbWFsIHVzYWdlIG9mCiAgICAgICB6bGliLCBzbyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoaXMgcGF0aG9sb2dpY2FsIGNhc2UuKQogICAgICAgKi8KCiAgICAgIG4gPSBzLmhhc2hfc2l6ZTsKICAgICAgcCA9IG47CiAgICAgIGRvIHsKICAgICAgICBtID0gcy5oZWFkWy0tcF07CiAgICAgICAgcy5oZWFkW3BdID0gKG0gPj0gX3dfc2l6ZSA/IG0gLSBfd19zaXplIDogMCk7CiAgICAgIH0gd2hpbGUgKC0tbik7CgogICAgICBuID0gX3dfc2l6ZTsKICAgICAgcCA9IG47CiAgICAgIGRvIHsKICAgICAgICBtID0gcy5wcmV2Wy0tcF07CiAgICAgICAgcy5wcmV2W3BdID0gKG0gPj0gX3dfc2l6ZSA/IG0gLSBfd19zaXplIDogMCk7CiAgICAgICAgLyogSWYgbiBpcyBub3Qgb24gYW55IGhhc2ggY2hhaW4sIHByZXZbbl0gaXMgZ2FyYmFnZSBidXQKICAgICAgICAgKiBpdHMgdmFsdWUgd2lsbCBuZXZlciBiZSB1c2VkLgogICAgICAgICAqLwogICAgICB9IHdoaWxlICgtLW4pOwoKICAgICAgbW9yZSArPSBfd19zaXplOwogICAgfQogICAgaWYgKHMuc3RybS5hdmFpbF9pbiA9PT0gMCkgewogICAgICBicmVhazsKICAgIH0KCiAgICAvKiBJZiB0aGVyZSB3YXMgbm8gc2xpZGluZzoKICAgICAqICAgIHN0cnN0YXJ0IDw9IFdTSVpFK01BWF9ESVNULTEgJiYgbG9va2FoZWFkIDw9IE1JTl9MT09LQUhFQUQgLSAxICYmCiAgICAgKiAgICBtb3JlID09IHdpbmRvd19zaXplIC0gbG9va2FoZWFkIC0gc3Ryc3RhcnQKICAgICAqID0+IG1vcmUgPj0gd2luZG93X3NpemUgLSAoTUlOX0xPT0tBSEVBRC0xICsgV1NJWkUgKyBNQVhfRElTVC0xKQogICAgICogPT4gbW9yZSA+PSB3aW5kb3dfc2l6ZSAtIDIqV1NJWkUgKyAyCiAgICAgKiBJbiB0aGUgQklHX01FTSBvciBNTUFQIGNhc2UgKG5vdCB5ZXQgc3VwcG9ydGVkKSwKICAgICAqICAgd2luZG93X3NpemUgPT0gaW5wdXRfc2l6ZSArIE1JTl9MT09LQUhFQUQgICYmCiAgICAgKiAgIHN0cnN0YXJ0ICsgcy0+bG9va2FoZWFkIDw9IGlucHV0X3NpemUgPT4gbW9yZSA+PSBNSU5fTE9PS0FIRUFELgogICAgICogT3RoZXJ3aXNlLCB3aW5kb3dfc2l6ZSA9PSAyKldTSVpFIHNvIG1vcmUgPj0gMi4KICAgICAqIElmIHRoZXJlIHdhcyBzbGlkaW5nLCBtb3JlID49IFdTSVpFLiBTbyBpbiBhbGwgY2FzZXMsIG1vcmUgPj0gMi4KICAgICAqLwogICAgLy9Bc3NlcnQobW9yZSA+PSAyLCAibW9yZSA8IDIiKTsKICAgIG4gPSByZWFkX2J1ZihzLnN0cm0sIHMud2luZG93LCBzLnN0cnN0YXJ0ICsgcy5sb29rYWhlYWQsIG1vcmUpOwogICAgcy5sb29rYWhlYWQgKz0gbjsKCiAgICAvKiBJbml0aWFsaXplIHRoZSBoYXNoIHZhbHVlIG5vdyB0aGF0IHdlIGhhdmUgc29tZSBpbnB1dDogKi8KICAgIGlmIChzLmxvb2thaGVhZCArIHMuaW5zZXJ0ID49IE1JTl9NQVRDSCkgewogICAgICBzdHIgPSBzLnN0cnN0YXJ0IC0gcy5pbnNlcnQ7CiAgICAgIHMuaW5zX2ggPSBzLndpbmRvd1tzdHJdOwoKICAgICAgLyogVVBEQVRFX0hBU0gocywgcy0+aW5zX2gsIHMtPndpbmRvd1tzdHIgKyAxXSk7ICovCiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIDFdKSAmIHMuaGFzaF9tYXNrOwovLyNpZiBNSU5fTUFUQ0ggIT0gMwovLyAgICAgICAgQ2FsbCB1cGRhdGVfaGFzaCgpIE1JTl9NQVRDSC0zIG1vcmUgdGltZXMKLy8jZW5kaWYKICAgICAgd2hpbGUgKHMuaW5zZXJ0KSB7CiAgICAgICAgLyogVVBEQVRFX0hBU0gocywgcy0+aW5zX2gsIHMtPndpbmRvd1tzdHIgKyBNSU5fTUFUQ0gtMV0pOyAqLwogICAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrOwoKICAgICAgICBzLnByZXZbc3RyICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdOwogICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHN0cjsKICAgICAgICBzdHIrKzsKICAgICAgICBzLmluc2VydC0tOwogICAgICAgIGlmIChzLmxvb2thaGVhZCArIHMuaW5zZXJ0IDwgTUlOX01BVENIKSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIC8qIElmIHRoZSB3aG9sZSBpbnB1dCBoYXMgbGVzcyB0aGFuIE1JTl9NQVRDSCBieXRlcywgaW5zX2ggaXMgZ2FyYmFnZSwKICAgICAqIGJ1dCB0aGlzIGlzIG5vdCBpbXBvcnRhbnQgc2luY2Ugb25seSBsaXRlcmFsIGJ5dGVzIHdpbGwgYmUgZW1pdHRlZC4KICAgICAqLwoKICB9IHdoaWxlIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgcy5zdHJtLmF2YWlsX2luICE9PSAwKTsKCiAgLyogSWYgdGhlIFdJTl9JTklUIGJ5dGVzIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgZGF0YSBoYXZlIG5ldmVyIGJlZW4KICAgKiB3cml0dGVuLCB0aGVuIHplcm8gdGhvc2UgYnl0ZXMgaW4gb3JkZXIgdG8gYXZvaWQgbWVtb3J5IGNoZWNrIHJlcG9ydHMgb2YKICAgKiB0aGUgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgKG9yIHVuaW5pdGlhbGlzZWQgYXMgSnVsaWFuIHdyaXRlcykgYnl0ZXMgYnkKICAgKiB0aGUgbG9uZ2VzdCBtYXRjaCByb3V0aW5lcy4gIFVwZGF0ZSB0aGUgaGlnaCB3YXRlciBtYXJrIGZvciB0aGUgbmV4dAogICAqIHRpbWUgdGhyb3VnaCBoZXJlLiAgV0lOX0lOSVQgaXMgc2V0IHRvIE1BWF9NQVRDSCBzaW5jZSB0aGUgbG9uZ2VzdCBtYXRjaAogICAqIHJvdXRpbmVzIGFsbG93IHNjYW5uaW5nIHRvIHN0cnN0YXJ0ICsgTUFYX01BVENILCBpZ25vcmluZyBsb29rYWhlYWQuCiAgICovCi8vICBpZiAocy5oaWdoX3dhdGVyIDwgcy53aW5kb3dfc2l6ZSkgewovLyAgICB2YXIgY3VyciA9IHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZDsKLy8gICAgdmFyIGluaXQgPSAwOwovLwovLyAgICBpZiAocy5oaWdoX3dhdGVyIDwgY3VycikgewovLyAgICAgIC8qIFByZXZpb3VzIGhpZ2ggd2F0ZXIgbWFyayBiZWxvdyBjdXJyZW50IGRhdGEgLS0gemVybyBXSU5fSU5JVAovLyAgICAgICAqIGJ5dGVzIG9yIHVwIHRvIGVuZCBvZiB3aW5kb3csIHdoaWNoZXZlciBpcyBsZXNzLgovLyAgICAgICAqLwovLyAgICAgIGluaXQgPSBzLndpbmRvd19zaXplIC0gY3VycjsKLy8gICAgICBpZiAoaW5pdCA+IFdJTl9JTklUKQovLyAgICAgICAgaW5pdCA9IFdJTl9JTklUOwovLyAgICAgIHptZW16ZXJvKHMtPndpbmRvdyArIGN1cnIsICh1bnNpZ25lZClpbml0KTsKLy8gICAgICBzLT5oaWdoX3dhdGVyID0gY3VyciArIGluaXQ7Ci8vICAgIH0KLy8gICAgZWxzZSBpZiAocy0+aGlnaF93YXRlciA8ICh1bGcpY3VyciArIFdJTl9JTklUKSB7Ci8vICAgICAgLyogSGlnaCB3YXRlciBtYXJrIGF0IG9yIGFib3ZlIGN1cnJlbnQgZGF0YSwgYnV0IGJlbG93IGN1cnJlbnQgZGF0YQovLyAgICAgICAqIHBsdXMgV0lOX0lOSVQgLS0gemVybyBvdXQgdG8gY3VycmVudCBkYXRhIHBsdXMgV0lOX0lOSVQsIG9yIHVwCi8vICAgICAgICogdG8gZW5kIG9mIHdpbmRvdywgd2hpY2hldmVyIGlzIGxlc3MuCi8vICAgICAgICovCi8vICAgICAgaW5pdCA9ICh1bGcpY3VyciArIFdJTl9JTklUIC0gcy0+aGlnaF93YXRlcjsKLy8gICAgICBpZiAoaW5pdCA+IHMtPndpbmRvd19zaXplIC0gcy0+aGlnaF93YXRlcikKLy8gICAgICAgIGluaXQgPSBzLT53aW5kb3dfc2l6ZSAtIHMtPmhpZ2hfd2F0ZXI7Ci8vICAgICAgem1lbXplcm8ocy0+d2luZG93ICsgcy0+aGlnaF93YXRlciwgKHVuc2lnbmVkKWluaXQpOwovLyAgICAgIHMtPmhpZ2hfd2F0ZXIgKz0gaW5pdDsKLy8gICAgfQovLyAgfQovLwovLyAgQXNzZXJ0KCh1bGcpcy0+c3Ryc3RhcnQgPD0gcy0+d2luZG93X3NpemUgLSBNSU5fTE9PS0FIRUFELAovLyAgICAibm90IGVub3VnaCByb29tIGZvciBzZWFyY2giKTsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIENvcHkgd2l0aG91dCBjb21wcmVzc2lvbiBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuCiAqIHRoZSBjdXJyZW50IGJsb2NrIHN0YXRlLgogKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGluc2VydCBuZXcgc3RyaW5ncyBpbiB0aGUgZGljdGlvbmFyeSBzaW5jZQogKiB1bmNvbXByZXNzaWJsZSBkYXRhIGlzIHByb2JhYmx5IG5vdCB1c2VmdWwuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZAogKiBvbmx5IGZvciB0aGUgbGV2ZWw9MCBjb21wcmVzc2lvbiBvcHRpb24uCiAqIE5PVEU6IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIG9wdGltaXplZCB0byBhdm9pZCBleHRyYSBjb3B5aW5nIGZyb20KICogd2luZG93IHRvIHBlbmRpbmdfYnVmLgogKi8KZnVuY3Rpb24gZGVmbGF0ZV9zdG9yZWQocywgZmx1c2gpIHsKICAvKiBTdG9yZWQgYmxvY2tzIGFyZSBsaW1pdGVkIHRvIDB4ZmZmZiBieXRlcywgcGVuZGluZ19idWYgaXMgbGltaXRlZAogICAqIHRvIHBlbmRpbmdfYnVmX3NpemUsIGFuZCBlYWNoIHN0b3JlZCBibG9jayBoYXMgYSA1IGJ5dGUgaGVhZGVyOgogICAqLwogIHZhciBtYXhfYmxvY2tfc2l6ZSA9IDB4ZmZmZjsKCiAgaWYgKG1heF9ibG9ja19zaXplID4gcy5wZW5kaW5nX2J1Zl9zaXplIC0gNSkgewogICAgbWF4X2Jsb2NrX3NpemUgPSBzLnBlbmRpbmdfYnVmX3NpemUgLSA1OwogIH0KCiAgLyogQ29weSBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gaW5wdXQgdG8gb3V0cHV0OiAqLwogIGZvciAoOzspIHsKICAgIC8qIEZpbGwgdGhlIHdpbmRvdyBhcyBtdWNoIGFzIHBvc3NpYmxlOiAqLwogICAgaWYgKHMubG9va2FoZWFkIDw9IDEpIHsKCiAgICAgIC8vQXNzZXJ0KHMtPnN0cnN0YXJ0IDwgcy0+d19zaXplK01BWF9ESVNUKHMpIHx8CiAgICAgIC8vICBzLT5ibG9ja19zdGFydCA+PSAobG9uZylzLT53X3NpemUsICJzbGlkZSB0b28gbGF0ZSIpOwovLyAgICAgIGlmICghKHMuc3Ryc3RhcnQgPCBzLndfc2l6ZSArIChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpIHx8Ci8vICAgICAgICBzLmJsb2NrX3N0YXJ0ID49IHMud19zaXplKSkgewovLyAgICAgICAgdGhyb3cgIG5ldyBFcnJvcigic2xpZGUgdG9vIGxhdGUiKTsKLy8gICAgICB9CgogICAgICBmaWxsX3dpbmRvdyhzKTsKICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwICYmIGZsdXNoID09PSBaX05PX0ZMVVNIKSB7CiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgICAgfQoKICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgICAgLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi8KICAgIH0KICAgIC8vQXNzZXJ0KHMtPmJsb2NrX3N0YXJ0ID49IDBMLCAiYmxvY2sgZ29uZSIpOwovLyAgICBpZiAocy5ibG9ja19zdGFydCA8IDApIHRocm93IG5ldyBFcnJvcigiYmxvY2sgZ29uZSIpOwoKICAgIHMuc3Ryc3RhcnQgKz0gcy5sb29rYWhlYWQ7CiAgICBzLmxvb2thaGVhZCA9IDA7CgogICAgLyogRW1pdCBhIHN0b3JlZCBibG9jayBpZiBwZW5kaW5nX2J1ZiB3aWxsIGJlIGZ1bGw6ICovCiAgICB2YXIgbWF4X3N0YXJ0ID0gcy5ibG9ja19zdGFydCArIG1heF9ibG9ja19zaXplOwoKICAgIGlmIChzLnN0cnN0YXJ0ID09PSAwIHx8IHMuc3Ryc3RhcnQgPj0gbWF4X3N0YXJ0KSB7CiAgICAgIC8qIHN0cnN0YXJ0ID09IDAgaXMgcG9zc2libGUgd2hlbiB3cmFwYXJvdW5kIG9uIDE2LWJpdCBtYWNoaW5lICovCiAgICAgIHMubG9va2FoZWFkID0gcy5zdHJzdGFydCAtIG1heF9zdGFydDsKICAgICAgcy5zdHJzdGFydCA9IG1heF9zdGFydDsKICAgICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqLwogICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTsKICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFOwogICAgICB9CiAgICAgIC8qKiovCgoKICAgIH0KICAgIC8qIEZsdXNoIGlmIHdlIG1heSBoYXZlIHRvIHNsaWRlLCBvdGhlcndpc2UgYmxvY2tfc3RhcnQgbWF5IGJlY29tZQogICAgICogbmVnYXRpdmUgYW5kIHRoZSBkYXRhIHdpbGwgYmUgZ29uZToKICAgICAqLwogICAgaWYgKHMuc3Ryc3RhcnQgLSBzLmJsb2NrX3N0YXJ0ID49IChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSB7CiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi8KICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7CiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgICAgfQogICAgICAvKioqLwogICAgfQogIH0KCiAgcy5pbnNlcnQgPSAwOwoKICBpZiAoZmx1c2ggPT09IFpfRklOSVNIKSB7CiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovCiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpOwogICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEOwogICAgfQogICAgLyoqKi8KICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTsKICB9CgogIGlmIChzLnN0cnN0YXJ0ID4gcy5ibG9ja19zdGFydCkgewogICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqLwogICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7CiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkgewogICAgICByZXR1cm4gQlNfTkVFRF9NT1JFOwogICAgfQogICAgLyoqKi8KICB9CgogIHJldHVybiBCU19ORUVEX01PUkU7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBDb21wcmVzcyBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuIHRoZSBjdXJyZW50CiAqIGJsb2NrIHN0YXRlLgogKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBlcmZvcm0gbGF6eSBldmFsdWF0aW9uIG9mIG1hdGNoZXMgYW5kIGluc2VydHMKICogbmV3IHN0cmluZ3MgaW4gdGhlIGRpY3Rpb25hcnkgb25seSBmb3IgdW5tYXRjaGVkIHN0cmluZ3Mgb3IgZm9yIHNob3J0CiAqIG1hdGNoZXMuIEl0IGlzIHVzZWQgb25seSBmb3IgdGhlIGZhc3QgY29tcHJlc3Npb24gb3B0aW9ucy4KICovCmZ1bmN0aW9uIGRlZmxhdGVfZmFzdChzLCBmbHVzaCkgewogIHZhciBoYXNoX2hlYWQ7ICAgICAgICAvKiBoZWFkIG9mIHRoZSBoYXNoIGNoYWluICovCiAgdmFyIGJmbHVzaDsgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqLwoKICBmb3IgKDs7KSB7CiAgICAvKiBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBlbm91Z2ggbG9va2FoZWFkLCBleGNlcHQKICAgICAqIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IGZpbGUuIFdlIG5lZWQgTUFYX01BVENIIGJ5dGVzCiAgICAgKiBmb3IgdGhlIG5leHQgbWF0Y2gsIHBsdXMgTUlOX01BVENIIGJ5dGVzIHRvIGluc2VydCB0aGUKICAgICAqIHN0cmluZyBmb2xsb3dpbmcgdGhlIG5leHQgbWF0Y2guCiAgICAgKi8KICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQpIHsKICAgICAgZmlsbF93aW5kb3cocyk7CiAgICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHsKICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFOwogICAgICB9CiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkgewogICAgICAgIGJyZWFrOyAvKiBmbHVzaCB0aGUgY3VycmVudCBibG9jayAqLwogICAgICB9CiAgICB9CgogICAgLyogSW5zZXJ0IHRoZSBzdHJpbmcgd2luZG93W3N0cnN0YXJ0IC4uIHN0cnN0YXJ0KzJdIGluIHRoZQogICAgICogZGljdGlvbmFyeSwgYW5kIHNldCBoYXNoX2hlYWQgdG8gdGhlIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW46CiAgICAgKi8KICAgIGhhc2hfaGVhZCA9IDAvKk5JTCovOwogICAgaWYgKHMubG9va2FoZWFkID49IE1JTl9NQVRDSCkgewogICAgICAvKioqIElOU0VSVF9TVFJJTkcocywgcy5zdHJzdGFydCwgaGFzaF9oZWFkKTsgKioqLwogICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7CiAgICAgIGhhc2hfaGVhZCA9IHMucHJldltzLnN0cnN0YXJ0ICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdOwogICAgICBzLmhlYWRbcy5pbnNfaF0gPSBzLnN0cnN0YXJ0OwogICAgICAvKioqLwogICAgfQoKICAgIC8qIEZpbmQgdGhlIGxvbmdlc3QgbWF0Y2gsIGRpc2NhcmRpbmcgdGhvc2UgPD0gcHJldl9sZW5ndGguCiAgICAgKiBBdCB0aGlzIHBvaW50IHdlIGhhdmUgYWx3YXlzIG1hdGNoX2xlbmd0aCA8IE1JTl9NQVRDSAogICAgICovCiAgICBpZiAoaGFzaF9oZWFkICE9PSAwLypOSUwqLyAmJiAoKHMuc3Ryc3RhcnQgLSBoYXNoX2hlYWQpIDw9IChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSkgewogICAgICAvKiBUbyBzaW1wbGlmeSB0aGUgY29kZSwgd2UgcHJldmVudCBtYXRjaGVzIHdpdGggdGhlIHN0cmluZwogICAgICAgKiBvZiB3aW5kb3cgaW5kZXggMCAoaW4gcGFydGljdWxhciB3ZSBoYXZlIHRvIGF2b2lkIGEgbWF0Y2gKICAgICAgICogb2YgdGhlIHN0cmluZyB3aXRoIGl0c2VsZiBhdCB0aGUgc3RhcnQgb2YgdGhlIGlucHV0IGZpbGUpLgogICAgICAgKi8KICAgICAgcy5tYXRjaF9sZW5ndGggPSBsb25nZXN0X21hdGNoKHMsIGhhc2hfaGVhZCk7CiAgICAgIC8qIGxvbmdlc3RfbWF0Y2goKSBzZXRzIG1hdGNoX3N0YXJ0ICovCiAgICB9CiAgICBpZiAocy5tYXRjaF9sZW5ndGggPj0gTUlOX01BVENIKSB7CiAgICAgIC8vIGNoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQsIHMubWF0Y2hfc3RhcnQsIHMubWF0Y2hfbGVuZ3RoKTsgLy8gZm9yIGRlYnVnIG9ubHkKCiAgICAgIC8qKiogX3RyX3RhbGx5X2Rpc3Qocywgcy5zdHJzdGFydCAtIHMubWF0Y2hfc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgIHMubWF0Y2hfbGVuZ3RoIC0gTUlOX01BVENILCBiZmx1c2gpOyAqKiovCiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCBzLnN0cnN0YXJ0IC0gcy5tYXRjaF9zdGFydCwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gpOwoKICAgICAgcy5sb29rYWhlYWQgLT0gcy5tYXRjaF9sZW5ndGg7CgogICAgICAvKiBJbnNlcnQgbmV3IHN0cmluZ3MgaW4gdGhlIGhhc2ggdGFibGUgb25seSBpZiB0aGUgbWF0Y2ggbGVuZ3RoCiAgICAgICAqIGlzIG5vdCB0b28gbGFyZ2UuIFRoaXMgc2F2ZXMgdGltZSBidXQgZGVncmFkZXMgY29tcHJlc3Npb24uCiAgICAgICAqLwogICAgICBpZiAocy5tYXRjaF9sZW5ndGggPD0gcy5tYXhfbGF6eV9tYXRjaC8qbWF4X2luc2VydF9sZW5ndGgqLyAmJiBzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHsKICAgICAgICBzLm1hdGNoX2xlbmd0aC0tOyAvKiBzdHJpbmcgYXQgc3Ryc3RhcnQgYWxyZWFkeSBpbiB0YWJsZSAqLwogICAgICAgIGRvIHsKICAgICAgICAgIHMuc3Ryc3RhcnQrKzsKICAgICAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovCiAgICAgICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7CiAgICAgICAgICBoYXNoX2hlYWQgPSBzLnByZXZbcy5zdHJzdGFydCAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTsKICAgICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7CiAgICAgICAgICAvKioqLwogICAgICAgICAgLyogc3Ryc3RhcnQgbmV2ZXIgZXhjZWVkcyBXU0laRS1NQVhfTUFUQ0gsIHNvIHRoZXJlIGFyZQogICAgICAgICAgICogYWx3YXlzIE1JTl9NQVRDSCBieXRlcyBhaGVhZC4KICAgICAgICAgICAqLwogICAgICAgIH0gd2hpbGUgKC0tcy5tYXRjaF9sZW5ndGggIT09IDApOwogICAgICAgIHMuc3Ryc3RhcnQrKzsKICAgICAgfSBlbHNlCiAgICAgIHsKICAgICAgICBzLnN0cnN0YXJ0ICs9IHMubWF0Y2hfbGVuZ3RoOwogICAgICAgIHMubWF0Y2hfbGVuZ3RoID0gMDsKICAgICAgICBzLmluc19oID0gcy53aW5kb3dbcy5zdHJzdGFydF07CiAgICAgICAgLyogVVBEQVRFX0hBU0gocywgcy5pbnNfaCwgcy53aW5kb3dbcy5zdHJzdGFydCsxXSk7ICovCiAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIDFdKSAmIHMuaGFzaF9tYXNrOwoKLy8jaWYgTUlOX01BVENIICE9IDMKLy8gICAgICAgICAgICAgICAgQ2FsbCBVUERBVEVfSEFTSCgpIE1JTl9NQVRDSC0zIG1vcmUgdGltZXMKLy8jZW5kaWYKICAgICAgICAvKiBJZiBsb29rYWhlYWQgPCBNSU5fTUFUQ0gsIGluc19oIGlzIGdhcmJhZ2UsIGJ1dCBpdCBkb2VzIG5vdAogICAgICAgICAqIG1hdHRlciBzaW5jZSBpdCB3aWxsIGJlIHJlY29tcHV0ZWQgYXQgbmV4dCBkZWZsYXRlIGNhbGwuCiAgICAgICAgICovCiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIC8qIE5vIG1hdGNoLCBvdXRwdXQgYSBsaXRlcmFsIGJ5dGUgKi8KICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIiVjIiwgcy53aW5kb3dbcy5zdHJzdGFydF0pKTsKICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnRdLCBiZmx1c2gpOyAqKiovCiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSk7CgogICAgICBzLmxvb2thaGVhZC0tOwogICAgICBzLnN0cnN0YXJ0Kys7CiAgICB9CiAgICBpZiAoYmZsdXNoKSB7CiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi8KICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7CiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgICAgfQogICAgICAvKioqLwogICAgfQogIH0KICBzLmluc2VydCA9ICgocy5zdHJzdGFydCA8IChNSU5fTUFUQ0ggLSAxKSkgPyBzLnN0cnN0YXJ0IDogTUlOX01BVENIIC0gMSk7CiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkgewogICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAxKTsgKioqLwogICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTsKICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgIHJldHVybiBCU19GSU5JU0hfU1RBUlRFRDsKICAgIH0KICAgIC8qKiovCiAgICByZXR1cm4gQlNfRklOSVNIX0RPTkU7CiAgfQogIGlmIChzLmxhc3RfbGl0KSB7CiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovCiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTsKICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgIHJldHVybiBCU19ORUVEX01PUkU7CiAgICB9CiAgICAvKioqLwogIH0KICByZXR1cm4gQlNfQkxPQ0tfRE9ORTsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIFNhbWUgYXMgYWJvdmUsIGJ1dCBhY2hpZXZlcyBiZXR0ZXIgY29tcHJlc3Npb24uIFdlIHVzZSBhIGxhenkKICogZXZhbHVhdGlvbiBmb3IgbWF0Y2hlczogYSBtYXRjaCBpcyBmaW5hbGx5IGFkb3B0ZWQgb25seSBpZiB0aGVyZSBpcwogKiBubyBiZXR0ZXIgbWF0Y2ggYXQgdGhlIG5leHQgd2luZG93IHBvc2l0aW9uLgogKi8KZnVuY3Rpb24gZGVmbGF0ZV9zbG93KHMsIGZsdXNoKSB7CiAgdmFyIGhhc2hfaGVhZDsgICAgICAgICAgLyogaGVhZCBvZiBoYXNoIGNoYWluICovCiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqLwoKICB2YXIgbWF4X2luc2VydDsKCiAgLyogUHJvY2VzcyB0aGUgaW5wdXQgYmxvY2suICovCiAgZm9yICg7OykgewogICAgLyogTWFrZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGhhdmUgZW5vdWdoIGxvb2thaGVhZCwgZXhjZXB0CiAgICAgKiBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBmaWxlLiBXZSBuZWVkIE1BWF9NQVRDSCBieXRlcwogICAgICogZm9yIHRoZSBuZXh0IG1hdGNoLCBwbHVzIE1JTl9NQVRDSCBieXRlcyB0byBpbnNlcnQgdGhlCiAgICAgKiBzdHJpbmcgZm9sbG93aW5nIHRoZSBuZXh0IG1hdGNoLgogICAgICovCiAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEKSB7CiAgICAgIGZpbGxfd2luZG93KHMpOwogICAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEICYmIGZsdXNoID09PSBaX05PX0ZMVVNIKSB7CiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgICAgfQogICAgICBpZiAocy5sb29rYWhlYWQgPT09IDApIHsgYnJlYWs7IH0gLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi8KICAgIH0KCiAgICAvKiBJbnNlcnQgdGhlIHN0cmluZyB3aW5kb3dbc3Ryc3RhcnQgLi4gc3Ryc3RhcnQrMl0gaW4gdGhlCiAgICAgKiBkaWN0aW9uYXJ5LCBhbmQgc2V0IGhhc2hfaGVhZCB0byB0aGUgaGVhZCBvZiB0aGUgaGFzaCBjaGFpbjoKICAgICAqLwogICAgaGFzaF9oZWFkID0gMC8qTklMKi87CiAgICBpZiAocy5sb29rYWhlYWQgPj0gTUlOX01BVENIKSB7CiAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovCiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3Muc3Ryc3RhcnQgKyBNSU5fTUFUQ0ggLSAxXSkgJiBzLmhhc2hfbWFzazsKICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07CiAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7CiAgICAgIC8qKiovCiAgICB9CgogICAgLyogRmluZCB0aGUgbG9uZ2VzdCBtYXRjaCwgZGlzY2FyZGluZyB0aG9zZSA8PSBwcmV2X2xlbmd0aC4KICAgICAqLwogICAgcy5wcmV2X2xlbmd0aCA9IHMubWF0Y2hfbGVuZ3RoOwogICAgcy5wcmV2X21hdGNoID0gcy5tYXRjaF9zdGFydDsKICAgIHMubWF0Y2hfbGVuZ3RoID0gTUlOX01BVENIIC0gMTsKCiAgICBpZiAoaGFzaF9oZWFkICE9PSAwLypOSUwqLyAmJiBzLnByZXZfbGVuZ3RoIDwgcy5tYXhfbGF6eV9tYXRjaCAmJgogICAgICAgIHMuc3Ryc3RhcnQgLSBoYXNoX2hlYWQgPD0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkvKk1BWF9ESVNUKHMpKi8pIHsKICAgICAgLyogVG8gc2ltcGxpZnkgdGhlIGNvZGUsIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmcKICAgICAgICogb2Ygd2luZG93IGluZGV4IDAgKGluIHBhcnRpY3VsYXIgd2UgaGF2ZSB0byBhdm9pZCBhIG1hdGNoCiAgICAgICAqIG9mIHRoZSBzdHJpbmcgd2l0aCBpdHNlbGYgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnB1dCBmaWxlKS4KICAgICAgICovCiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gbG9uZ2VzdF9tYXRjaChzLCBoYXNoX2hlYWQpOwogICAgICAvKiBsb25nZXN0X21hdGNoKCkgc2V0cyBtYXRjaF9zdGFydCAqLwoKICAgICAgaWYgKHMubWF0Y2hfbGVuZ3RoIDw9IDUgJiYKICAgICAgICAgKHMuc3RyYXRlZ3kgPT09IFpfRklMVEVSRUQgfHwgKHMubWF0Y2hfbGVuZ3RoID09PSBNSU5fTUFUQ0ggJiYgcy5zdHJzdGFydCAtIHMubWF0Y2hfc3RhcnQgPiA0MDk2LypUT09fRkFSKi8pKSkgewoKICAgICAgICAvKiBJZiBwcmV2X21hdGNoIGlzIGFsc28gTUlOX01BVENILCBtYXRjaF9zdGFydCBpcyBnYXJiYWdlCiAgICAgICAgICogYnV0IHdlIHdpbGwgaWdub3JlIHRoZSBjdXJyZW50IG1hdGNoIGFueXdheS4KICAgICAgICAgKi8KICAgICAgICBzLm1hdGNoX2xlbmd0aCA9IE1JTl9NQVRDSCAtIDE7CiAgICAgIH0KICAgIH0KICAgIC8qIElmIHRoZXJlIHdhcyBhIG1hdGNoIGF0IHRoZSBwcmV2aW91cyBzdGVwIGFuZCB0aGUgY3VycmVudAogICAgICogbWF0Y2ggaXMgbm90IGJldHRlciwgb3V0cHV0IHRoZSBwcmV2aW91cyBtYXRjaDoKICAgICAqLwogICAgaWYgKHMucHJldl9sZW5ndGggPj0gTUlOX01BVENIICYmIHMubWF0Y2hfbGVuZ3RoIDw9IHMucHJldl9sZW5ndGgpIHsKICAgICAgbWF4X2luc2VydCA9IHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZCAtIE1JTl9NQVRDSDsKICAgICAgLyogRG8gbm90IGluc2VydCBzdHJpbmdzIGluIGhhc2ggdGFibGUgYmV5b25kIHRoaXMuICovCgogICAgICAvL2NoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQtMSwgcy5wcmV2X21hdGNoLCBzLnByZXZfbGVuZ3RoKTsKCiAgICAgIC8qKipfdHJfdGFsbHlfZGlzdChzLCBzLnN0cnN0YXJ0IC0gMSAtIHMucHJldl9tYXRjaCwKICAgICAgICAgICAgICAgICAgICAgcy5wcmV2X2xlbmd0aCAtIE1JTl9NQVRDSCwgYmZsdXNoKTsqKiovCiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCBzLnN0cnN0YXJ0IC0gMSAtIHMucHJldl9tYXRjaCwgcy5wcmV2X2xlbmd0aCAtIE1JTl9NQVRDSCk7CiAgICAgIC8qIEluc2VydCBpbiBoYXNoIHRhYmxlIGFsbCBzdHJpbmdzIHVwIHRvIHRoZSBlbmQgb2YgdGhlIG1hdGNoLgogICAgICAgKiBzdHJzdGFydC0xIGFuZCBzdHJzdGFydCBhcmUgYWxyZWFkeSBpbnNlcnRlZC4gSWYgdGhlcmUgaXMgbm90CiAgICAgICAqIGVub3VnaCBsb29rYWhlYWQsIHRoZSBsYXN0IHR3byBzdHJpbmdzIGFyZSBub3QgaW5zZXJ0ZWQgaW4KICAgICAgICogdGhlIGhhc2ggdGFibGUuCiAgICAgICAqLwogICAgICBzLmxvb2thaGVhZCAtPSBzLnByZXZfbGVuZ3RoIC0gMTsKICAgICAgcy5wcmV2X2xlbmd0aCAtPSAyOwogICAgICBkbyB7CiAgICAgICAgaWYgKCsrcy5zdHJzdGFydCA8PSBtYXhfaW5zZXJ0KSB7CiAgICAgICAgICAvKioqIElOU0VSVF9TVFJJTkcocywgcy5zdHJzdGFydCwgaGFzaF9oZWFkKTsgKioqLwogICAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrOwogICAgICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07CiAgICAgICAgICBzLmhlYWRbcy5pbnNfaF0gPSBzLnN0cnN0YXJ0OwogICAgICAgICAgLyoqKi8KICAgICAgICB9CiAgICAgIH0gd2hpbGUgKC0tcy5wcmV2X2xlbmd0aCAhPT0gMCk7CiAgICAgIHMubWF0Y2hfYXZhaWxhYmxlID0gMDsKICAgICAgcy5tYXRjaF9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxOwogICAgICBzLnN0cnN0YXJ0Kys7CgogICAgICBpZiAoYmZsdXNoKSB7CiAgICAgICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqLwogICAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpOwogICAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFOwogICAgICAgIH0KICAgICAgICAvKioqLwogICAgICB9CgogICAgfSBlbHNlIGlmIChzLm1hdGNoX2F2YWlsYWJsZSkgewogICAgICAvKiBJZiB0aGVyZSB3YXMgbm8gbWF0Y2ggYXQgdGhlIHByZXZpb3VzIHBvc2l0aW9uLCBvdXRwdXQgYQogICAgICAgKiBzaW5nbGUgbGl0ZXJhbC4gSWYgdGhlcmUgd2FzIGEgbWF0Y2ggYnV0IHRoZSBjdXJyZW50IG1hdGNoCiAgICAgICAqIGlzIGxvbmdlciwgdHJ1bmNhdGUgdGhlIHByZXZpb3VzIG1hdGNoIHRvIGEgc2luZ2xlIGxpdGVyYWwuCiAgICAgICAqLwogICAgICAvL1RyYWNldnYoKHN0ZGVyciwiJWMiLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnQtMV0pKTsKICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnQtMV0sIGJmbHVzaCk7ICoqKi8KICAgICAgYmZsdXNoID0gdHJlZXMuX3RyX3RhbGx5KHMsIDAsIHMud2luZG93W3Muc3Ryc3RhcnQgLSAxXSk7CgogICAgICBpZiAoYmZsdXNoKSB7CiAgICAgICAgLyoqKiBGTFVTSF9CTE9DS19PTkxZKHMsIDApICoqKi8KICAgICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTsKICAgICAgICAvKioqLwogICAgICB9CiAgICAgIHMuc3Ryc3RhcnQrKzsKICAgICAgcy5sb29rYWhlYWQtLTsKICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICAvKiBUaGVyZSBpcyBubyBwcmV2aW91cyBtYXRjaCB0byBjb21wYXJlIHdpdGgsIHdhaXQgZm9yCiAgICAgICAqIHRoZSBuZXh0IHN0ZXAgdG8gZGVjaWRlLgogICAgICAgKi8KICAgICAgcy5tYXRjaF9hdmFpbGFibGUgPSAxOwogICAgICBzLnN0cnN0YXJ0Kys7CiAgICAgIHMubG9va2FoZWFkLS07CiAgICB9CiAgfQogIC8vQXNzZXJ0IChmbHVzaCAhPSBaX05PX0ZMVVNILCAibm8gZmx1c2g/Iik7CiAgaWYgKHMubWF0Y2hfYXZhaWxhYmxlKSB7CiAgICAvL1RyYWNldnYoKHN0ZGVyciwiJWMiLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnQtMV0pKTsKICAgIC8qKiogX3RyX3RhbGx5X2xpdChzLCBzLndpbmRvd1tzLnN0cnN0YXJ0LTFdLCBiZmx1c2gpOyAqKiovCiAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydCAtIDFdKTsKCiAgICBzLm1hdGNoX2F2YWlsYWJsZSA9IDA7CiAgfQogIHMuaW5zZXJ0ID0gcy5zdHJzdGFydCA8IE1JTl9NQVRDSCAtIDEgPyBzLnN0cnN0YXJ0IDogTUlOX01BVENIIC0gMTsKICBpZiAoZmx1c2ggPT09IFpfRklOSVNIKSB7CiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovCiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpOwogICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEOwogICAgfQogICAgLyoqKi8KICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTsKICB9CiAgaWYgKHMubGFzdF9saXQpIHsKICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi8KICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpOwogICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgIH0KICAgIC8qKiovCiAgfQoKICByZXR1cm4gQlNfQkxPQ0tfRE9ORTsKfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBGb3IgWl9STEUsIHNpbXBseSBsb29rIGZvciBydW5zIG9mIGJ5dGVzLCBnZW5lcmF0ZSBtYXRjaGVzIG9ubHkgb2YgZGlzdGFuY2UKICogb25lLiAgRG8gbm90IG1haW50YWluIGEgaGFzaCB0YWJsZS4gIChJdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIGlmIHRoaXMgcnVuIG9mCiAqIGRlZmxhdGUgc3dpdGNoZXMgYXdheSBmcm9tIFpfUkxFLikKICovCmZ1bmN0aW9uIGRlZmxhdGVfcmxlKHMsIGZsdXNoKSB7CiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAvKiBzZXQgaWYgY3VycmVudCBibG9jayBtdXN0IGJlIGZsdXNoZWQgKi8KICB2YXIgcHJldjsgICAgICAgICAgICAgIC8qIGJ5dGUgYXQgZGlzdGFuY2Ugb25lIHRvIG1hdGNoICovCiAgdmFyIHNjYW4sIHN0cmVuZDsgICAgICAvKiBzY2FuIGdvZXMgdXAgdG8gc3RyZW5kIGZvciBsZW5ndGggb2YgcnVuICovCgogIHZhciBfd2luID0gcy53aW5kb3c7CgogIGZvciAoOzspIHsKICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdAogICAgICogYXQgdGhlIGVuZCBvZiB0aGUgaW5wdXQgZmlsZS4gV2UgbmVlZCBNQVhfTUFUQ0ggYnl0ZXMKICAgICAqIGZvciB0aGUgbG9uZ2VzdCBydW4sIHBsdXMgb25lIGZvciB0aGUgdW5yb2xsZWQgbG9vcC4KICAgICAqLwogICAgaWYgKHMubG9va2FoZWFkIDw9IE1BWF9NQVRDSCkgewogICAgICBmaWxsX3dpbmRvdyhzKTsKICAgICAgaWYgKHMubG9va2FoZWFkIDw9IE1BWF9NQVRDSCAmJiBmbHVzaCA9PT0gWl9OT19GTFVTSCkgewogICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7CiAgICAgIH0KICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7IGJyZWFrOyB9IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovCiAgICB9CgogICAgLyogU2VlIGhvdyBtYW55IHRpbWVzIHRoZSBwcmV2aW91cyBieXRlIHJlcGVhdHMgKi8KICAgIHMubWF0Y2hfbGVuZ3RoID0gMDsKICAgIGlmIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0ggJiYgcy5zdHJzdGFydCA+IDApIHsKICAgICAgc2NhbiA9IHMuc3Ryc3RhcnQgLSAxOwogICAgICBwcmV2ID0gX3dpbltzY2FuXTsKICAgICAgaWYgKHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dKSB7CiAgICAgICAgc3RyZW5kID0gcy5zdHJzdGFydCArIE1BWF9NQVRDSDsKICAgICAgICBkbyB7CiAgICAgICAgICAvKmpzaGludCBub2VtcHR5OmZhbHNlKi8KICAgICAgICB9IHdoaWxlIChwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmCiAgICAgICAgICAgICAgICAgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJgogICAgICAgICAgICAgICAgIHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYKICAgICAgICAgICAgICAgICBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmCiAgICAgICAgICAgICAgICAgc2NhbiA8IHN0cmVuZCk7CiAgICAgICAgcy5tYXRjaF9sZW5ndGggPSBNQVhfTUFUQ0ggLSAoc3RyZW5kIC0gc2Nhbik7CiAgICAgICAgaWYgKHMubWF0Y2hfbGVuZ3RoID4gcy5sb29rYWhlYWQpIHsKICAgICAgICAgIHMubWF0Y2hfbGVuZ3RoID0gcy5sb29rYWhlYWQ7CiAgICAgICAgfQogICAgICB9CiAgICAgIC8vQXNzZXJ0KHNjYW4gPD0gcy0+d2luZG93Kyh1SW50KShzLT53aW5kb3dfc2l6ZS0xKSwgIndpbGQgc2NhbiIpOwogICAgfQoKICAgIC8qIEVtaXQgbWF0Y2ggaWYgaGF2ZSBydW4gb2YgTUlOX01BVENIIG9yIGxvbmdlciwgZWxzZSBlbWl0IGxpdGVyYWwgKi8KICAgIGlmIChzLm1hdGNoX2xlbmd0aCA+PSBNSU5fTUFUQ0gpIHsKICAgICAgLy9jaGVja19tYXRjaChzLCBzLnN0cnN0YXJ0LCBzLnN0cnN0YXJ0IC0gMSwgcy5tYXRjaF9sZW5ndGgpOwoKICAgICAgLyoqKiBfdHJfdGFsbHlfZGlzdChzLCAxLCBzLm1hdGNoX2xlbmd0aCAtIE1JTl9NQVRDSCwgYmZsdXNoKTsgKioqLwogICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMSwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gpOwoKICAgICAgcy5sb29rYWhlYWQgLT0gcy5tYXRjaF9sZW5ndGg7CiAgICAgIHMuc3Ryc3RhcnQgKz0gcy5tYXRjaF9sZW5ndGg7CiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gMDsKICAgIH0gZWxzZSB7CiAgICAgIC8qIE5vIG1hdGNoLCBvdXRwdXQgYSBsaXRlcmFsIGJ5dGUgKi8KICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIiVjIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0XSkpOwogICAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydF0sIGJmbHVzaCk7ICoqKi8KICAgICAgYmZsdXNoID0gdHJlZXMuX3RyX3RhbGx5KHMsIDAsIHMud2luZG93W3Muc3Ryc3RhcnRdKTsKCiAgICAgIHMubG9va2FoZWFkLS07CiAgICAgIHMuc3Ryc3RhcnQrKzsKICAgIH0KICAgIGlmIChiZmx1c2gpIHsKICAgICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqLwogICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTsKICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFOwogICAgICB9CiAgICAgIC8qKiovCiAgICB9CiAgfQogIHMuaW5zZXJ0ID0gMDsKICBpZiAoZmx1c2ggPT09IFpfRklOSVNIKSB7CiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovCiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpOwogICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEOwogICAgfQogICAgLyoqKi8KICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTsKICB9CiAgaWYgKHMubGFzdF9saXQpIHsKICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi8KICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpOwogICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgIH0KICAgIC8qKiovCiAgfQogIHJldHVybiBCU19CTE9DS19ET05FOwp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogRm9yIFpfSFVGRk1BTl9PTkxZLCBkbyBub3QgbG9vayBmb3IgbWF0Y2hlcy4gIERvIG5vdCBtYWludGFpbiBhIGhhc2ggdGFibGUuCiAqIChJdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIGlmIHRoaXMgcnVuIG9mIGRlZmxhdGUgc3dpdGNoZXMgYXdheSBmcm9tIEh1ZmZtYW4uKQogKi8KZnVuY3Rpb24gZGVmbGF0ZV9odWZmKHMsIGZsdXNoKSB7CiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAgLyogc2V0IGlmIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkICovCgogIGZvciAoOzspIHsKICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGhhdmUgYSBsaXRlcmFsIHRvIHdyaXRlLiAqLwogICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7CiAgICAgIGZpbGxfd2luZG93KHMpOwogICAgICBpZiAocy5sb29rYWhlYWQgPT09IDApIHsKICAgICAgICBpZiAoZmx1c2ggPT09IFpfTk9fRkxVU0gpIHsKICAgICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7CiAgICAgICAgfQogICAgICAgIGJyZWFrOyAgICAgIC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovCiAgICAgIH0KICAgIH0KCiAgICAvKiBPdXRwdXQgYSBsaXRlcmFsIGJ5dGUgKi8KICAgIHMubWF0Y2hfbGVuZ3RoID0gMDsKICAgIC8vVHJhY2V2digoc3RkZXJyLCIlYyIsIHMtPndpbmRvd1tzLT5zdHJzdGFydF0pKTsKICAgIC8qKiogX3RyX3RhbGx5X2xpdChzLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSwgYmZsdXNoKTsgKioqLwogICAgYmZsdXNoID0gdHJlZXMuX3RyX3RhbGx5KHMsIDAsIHMud2luZG93W3Muc3Ryc3RhcnRdKTsKICAgIHMubG9va2FoZWFkLS07CiAgICBzLnN0cnN0YXJ0Kys7CiAgICBpZiAoYmZsdXNoKSB7CiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi8KICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7CiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTsKICAgICAgfQogICAgICAvKioqLwogICAgfQogIH0KICBzLmluc2VydCA9IDA7CiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkgewogICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAxKTsgKioqLwogICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTsKICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgIHJldHVybiBCU19GSU5JU0hfU1RBUlRFRDsKICAgIH0KICAgIC8qKiovCiAgICByZXR1cm4gQlNfRklOSVNIX0RPTkU7CiAgfQogIGlmIChzLmxhc3RfbGl0KSB7CiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovCiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTsKICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7CiAgICAgIHJldHVybiBCU19ORUVEX01PUkU7CiAgICB9CiAgICAvKioqLwogIH0KICByZXR1cm4gQlNfQkxPQ0tfRE9ORTsKfQoKLyogVmFsdWVzIGZvciBtYXhfbGF6eV9tYXRjaCwgZ29vZF9tYXRjaCBhbmQgbWF4X2NoYWluX2xlbmd0aCwgZGVwZW5kaW5nIG9uCiAqIHRoZSBkZXNpcmVkIHBhY2sgbGV2ZWwgKDAuLjkpLiBUaGUgdmFsdWVzIGdpdmVuIGJlbG93IGhhdmUgYmVlbiB0dW5lZCB0bwogKiBleGNsdWRlIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2UgZm9yIHBhdGhvbG9naWNhbCBmaWxlcy4gQmV0dGVyIHZhbHVlcyBtYXkgYmUKICogZm91bmQgZm9yIHNwZWNpZmljIGZpbGVzLgogKi8KZnVuY3Rpb24gQ29uZmlnKGdvb2RfbGVuZ3RoLCBtYXhfbGF6eSwgbmljZV9sZW5ndGgsIG1heF9jaGFpbiwgZnVuYykgewogIHRoaXMuZ29vZF9sZW5ndGggPSBnb29kX2xlbmd0aDsKICB0aGlzLm1heF9sYXp5ID0gbWF4X2xhenk7CiAgdGhpcy5uaWNlX2xlbmd0aCA9IG5pY2VfbGVuZ3RoOwogIHRoaXMubWF4X2NoYWluID0gbWF4X2NoYWluOwogIHRoaXMuZnVuYyA9IGZ1bmM7Cn0KCnZhciBjb25maWd1cmF0aW9uX3RhYmxlOwoKY29uZmlndXJhdGlvbl90YWJsZSA9IFsKICAvKiAgICAgIGdvb2QgbGF6eSBuaWNlIGNoYWluICovCiAgbmV3IENvbmZpZygwLCAwLCAwLCAwLCBkZWZsYXRlX3N0b3JlZCksICAgICAgICAgIC8qIDAgc3RvcmUgb25seSAqLwogIG5ldyBDb25maWcoNCwgNCwgOCwgNCwgZGVmbGF0ZV9mYXN0KSwgICAgICAgICAgICAvKiAxIG1heCBzcGVlZCwgbm8gbGF6eSBtYXRjaGVzICovCiAgbmV3IENvbmZpZyg0LCA1LCAxNiwgOCwgZGVmbGF0ZV9mYXN0KSwgICAgICAgICAgIC8qIDIgKi8KICBuZXcgQ29uZmlnKDQsIDYsIDMyLCAzMiwgZGVmbGF0ZV9mYXN0KSwgICAgICAgICAgLyogMyAqLwoKICBuZXcgQ29uZmlnKDQsIDQsIDE2LCAxNiwgZGVmbGF0ZV9zbG93KSwgICAgICAgICAgLyogNCBsYXp5IG1hdGNoZXMgKi8KICBuZXcgQ29uZmlnKDgsIDE2LCAzMiwgMzIsIGRlZmxhdGVfc2xvdyksICAgICAgICAgLyogNSAqLwogIG5ldyBDb25maWcoOCwgMTYsIDEyOCwgMTI4LCBkZWZsYXRlX3Nsb3cpLCAgICAgICAvKiA2ICovCiAgbmV3IENvbmZpZyg4LCAzMiwgMTI4LCAyNTYsIGRlZmxhdGVfc2xvdyksICAgICAgIC8qIDcgKi8KICBuZXcgQ29uZmlnKDMyLCAxMjgsIDI1OCwgMTAyNCwgZGVmbGF0ZV9zbG93KSwgICAgLyogOCAqLwogIG5ldyBDb25maWcoMzIsIDI1OCwgMjU4LCA0MDk2LCBkZWZsYXRlX3Nsb3cpICAgICAvKiA5IG1heCBjb21wcmVzc2lvbiAqLwpdOwoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBJbml0aWFsaXplIHRoZSAibG9uZ2VzdCBtYXRjaCIgcm91dGluZXMgZm9yIGEgbmV3IHpsaWIgc3RyZWFtCiAqLwpmdW5jdGlvbiBsbV9pbml0KHMpIHsKICBzLndpbmRvd19zaXplID0gMiAqIHMud19zaXplOwoKICAvKioqIENMRUFSX0hBU0gocyk7ICoqKi8KICB6ZXJvKHMuaGVhZCk7IC8vIEZpbGwgd2l0aCBOSUwgKD0gMCk7CgogIC8qIFNldCB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnM6CiAgICovCiAgcy5tYXhfbGF6eV9tYXRjaCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubWF4X2xhenk7CiAgcy5nb29kX21hdGNoID0gY29uZmlndXJhdGlvbl90YWJsZVtzLmxldmVsXS5nb29kX2xlbmd0aDsKICBzLm5pY2VfbWF0Y2ggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLm5pY2VfbGVuZ3RoOwogIHMubWF4X2NoYWluX2xlbmd0aCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubWF4X2NoYWluOwoKICBzLnN0cnN0YXJ0ID0gMDsKICBzLmJsb2NrX3N0YXJ0ID0gMDsKICBzLmxvb2thaGVhZCA9IDA7CiAgcy5pbnNlcnQgPSAwOwogIHMubWF0Y2hfbGVuZ3RoID0gcy5wcmV2X2xlbmd0aCA9IE1JTl9NQVRDSCAtIDE7CiAgcy5tYXRjaF9hdmFpbGFibGUgPSAwOwogIHMuaW5zX2ggPSAwOwp9CgoKZnVuY3Rpb24gRGVmbGF0ZVN0YXRlKCkgewogIHRoaXMuc3RybSA9IG51bGw7ICAgICAgICAgICAgLyogcG9pbnRlciBiYWNrIHRvIHRoaXMgemxpYiBzdHJlYW0gKi8KICB0aGlzLnN0YXR1cyA9IDA7ICAgICAgICAgICAgLyogYXMgdGhlIG5hbWUgaW1wbGllcyAqLwogIHRoaXMucGVuZGluZ19idWYgPSBudWxsOyAgICAgIC8qIG91dHB1dCBzdGlsbCBwZW5kaW5nICovCiAgdGhpcy5wZW5kaW5nX2J1Zl9zaXplID0gMDsgIC8qIHNpemUgb2YgcGVuZGluZ19idWYgKi8KICB0aGlzLnBlbmRpbmdfb3V0ID0gMDsgICAgICAgLyogbmV4dCBwZW5kaW5nIGJ5dGUgdG8gb3V0cHV0IHRvIHRoZSBzdHJlYW0gKi8KICB0aGlzLnBlbmRpbmcgPSAwOyAgICAgICAgICAgLyogbmIgb2YgYnl0ZXMgaW4gdGhlIHBlbmRpbmcgYnVmZmVyICovCiAgdGhpcy53cmFwID0gMDsgICAgICAgICAgICAgIC8qIGJpdCAwIHRydWUgZm9yIHpsaWIsIGJpdCAxIHRydWUgZm9yIGd6aXAgKi8KICB0aGlzLmd6aGVhZCA9IG51bGw7ICAgICAgICAgLyogZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gdG8gd3JpdGUgKi8KICB0aGlzLmd6aW5kZXggPSAwOyAgICAgICAgICAgLyogd2hlcmUgaW4gZXh0cmEsIG5hbWUsIG9yIGNvbW1lbnQgKi8KICB0aGlzLm1ldGhvZCA9IFpfREVGTEFURUQ7IC8qIGNhbiBvbmx5IGJlIERFRkxBVEVEICovCiAgdGhpcy5sYXN0X2ZsdXNoID0gLTE7ICAgLyogdmFsdWUgb2YgZmx1c2ggcGFyYW0gZm9yIHByZXZpb3VzIGRlZmxhdGUgY2FsbCAqLwoKICB0aGlzLndfc2l6ZSA9IDA7ICAvKiBMWjc3IHdpbmRvdyBzaXplICgzMksgYnkgZGVmYXVsdCkgKi8KICB0aGlzLndfYml0cyA9IDA7ICAvKiBsb2cyKHdfc2l6ZSkgICg4Li4xNikgKi8KICB0aGlzLndfbWFzayA9IDA7ICAvKiB3X3NpemUgLSAxICovCgogIHRoaXMud2luZG93ID0gbnVsbDsKICAvKiBTbGlkaW5nIHdpbmRvdy4gSW5wdXQgYnl0ZXMgYXJlIHJlYWQgaW50byB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIHdpbmRvdywKICAgKiBhbmQgbW92ZSB0byB0aGUgZmlyc3QgaGFsZiBsYXRlciB0byBrZWVwIGEgZGljdGlvbmFyeSBvZiBhdCBsZWFzdCB3U2l6ZQogICAqIGJ5dGVzLiBXaXRoIHRoaXMgb3JnYW5pemF0aW9uLCBtYXRjaGVzIGFyZSBsaW1pdGVkIHRvIGEgZGlzdGFuY2Ugb2YKICAgKiB3U2l6ZS1NQVhfTUFUQ0ggYnl0ZXMsIGJ1dCB0aGlzIGVuc3VyZXMgdGhhdCBJTyBpcyBhbHdheXMKICAgKiBwZXJmb3JtZWQgd2l0aCBhIGxlbmd0aCBtdWx0aXBsZSBvZiB0aGUgYmxvY2sgc2l6ZS4KICAgKi8KCiAgdGhpcy53aW5kb3dfc2l6ZSA9IDA7CiAgLyogQWN0dWFsIHNpemUgb2Ygd2luZG93OiAyKndTaXplLCBleGNlcHQgd2hlbiB0aGUgdXNlciBpbnB1dCBidWZmZXIKICAgKiBpcyBkaXJlY3RseSB1c2VkIGFzIHNsaWRpbmcgd2luZG93LgogICAqLwoKICB0aGlzLnByZXYgPSBudWxsOwogIC8qIExpbmsgdG8gb2xkZXIgc3RyaW5nIHdpdGggc2FtZSBoYXNoIGluZGV4LiBUbyBsaW1pdCB0aGUgc2l6ZSBvZiB0aGlzCiAgICogYXJyYXkgdG8gNjRLLCB0aGlzIGxpbmsgaXMgbWFpbnRhaW5lZCBvbmx5IGZvciB0aGUgbGFzdCAzMksgc3RyaW5ncy4KICAgKiBBbiBpbmRleCBpbiB0aGlzIGFycmF5IGlzIHRodXMgYSB3aW5kb3cgaW5kZXggbW9kdWxvIDMySy4KICAgKi8KCiAgdGhpcy5oZWFkID0gbnVsbDsgICAvKiBIZWFkcyBvZiB0aGUgaGFzaCBjaGFpbnMgb3IgTklMLiAqLwoKICB0aGlzLmluc19oID0gMDsgICAgICAgLyogaGFzaCBpbmRleCBvZiBzdHJpbmcgdG8gYmUgaW5zZXJ0ZWQgKi8KICB0aGlzLmhhc2hfc2l6ZSA9IDA7ICAgLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIGhhc2ggdGFibGUgKi8KICB0aGlzLmhhc2hfYml0cyA9IDA7ICAgLyogbG9nMihoYXNoX3NpemUpICovCiAgdGhpcy5oYXNoX21hc2sgPSAwOyAgIC8qIGhhc2hfc2l6ZS0xICovCgogIHRoaXMuaGFzaF9zaGlmdCA9IDA7CiAgLyogTnVtYmVyIG9mIGJpdHMgYnkgd2hpY2ggaW5zX2ggbXVzdCBiZSBzaGlmdGVkIGF0IGVhY2ggaW5wdXQKICAgKiBzdGVwLiBJdCBtdXN0IGJlIHN1Y2ggdGhhdCBhZnRlciBNSU5fTUFUQ0ggc3RlcHMsIHRoZSBvbGRlc3QKICAgKiBieXRlIG5vIGxvbmdlciB0YWtlcyBwYXJ0IGluIHRoZSBoYXNoIGtleSwgdGhhdCBpczoKICAgKiAgIGhhc2hfc2hpZnQgKiBNSU5fTUFUQ0ggPj0gaGFzaF9iaXRzCiAgICovCgogIHRoaXMuYmxvY2tfc3RhcnQgPSAwOwogIC8qIFdpbmRvdyBwb3NpdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IG91dHB1dCBibG9jay4gR2V0cwogICAqIG5lZ2F0aXZlIHdoZW4gdGhlIHdpbmRvdyBpcyBtb3ZlZCBiYWNrd2FyZHMuCiAgICovCgogIHRoaXMubWF0Y2hfbGVuZ3RoID0gMDsgICAgICAvKiBsZW5ndGggb2YgYmVzdCBtYXRjaCAqLwogIHRoaXMucHJldl9tYXRjaCA9IDA7ICAgICAgICAvKiBwcmV2aW91cyBtYXRjaCAqLwogIHRoaXMubWF0Y2hfYXZhaWxhYmxlID0gMDsgICAvKiBzZXQgaWYgcHJldmlvdXMgbWF0Y2ggZXhpc3RzICovCiAgdGhpcy5zdHJzdGFydCA9IDA7ICAgICAgICAgIC8qIHN0YXJ0IG9mIHN0cmluZyB0byBpbnNlcnQgKi8KICB0aGlzLm1hdGNoX3N0YXJ0ID0gMDsgICAgICAgLyogc3RhcnQgb2YgbWF0Y2hpbmcgc3RyaW5nICovCiAgdGhpcy5sb29rYWhlYWQgPSAwOyAgICAgICAgIC8qIG51bWJlciBvZiB2YWxpZCBieXRlcyBhaGVhZCBpbiB3aW5kb3cgKi8KCiAgdGhpcy5wcmV2X2xlbmd0aCA9IDA7CiAgLyogTGVuZ3RoIG9mIHRoZSBiZXN0IG1hdGNoIGF0IHByZXZpb3VzIHN0ZXAuIE1hdGNoZXMgbm90IGdyZWF0ZXIgdGhhbiB0aGlzCiAgICogYXJlIGRpc2NhcmRlZC4gVGhpcyBpcyB1c2VkIGluIHRoZSBsYXp5IG1hdGNoIGV2YWx1YXRpb24uCiAgICovCgogIHRoaXMubWF4X2NoYWluX2xlbmd0aCA9IDA7CiAgLyogVG8gc3BlZWQgdXAgZGVmbGF0aW9uLCBoYXNoIGNoYWlucyBhcmUgbmV2ZXIgc2VhcmNoZWQgYmV5b25kIHRoaXMKICAgKiBsZW5ndGguICBBIGhpZ2hlciBsaW1pdCBpbXByb3ZlcyBjb21wcmVzc2lvbiByYXRpbyBidXQgZGVncmFkZXMgdGhlCiAgICogc3BlZWQuCiAgICovCgogIHRoaXMubWF4X2xhenlfbWF0Y2ggPSAwOwogIC8qIEF0dGVtcHQgdG8gZmluZCBhIGJldHRlciBtYXRjaCBvbmx5IHdoZW4gdGhlIGN1cnJlbnQgbWF0Y2ggaXMgc3RyaWN0bHkKICAgKiBzbWFsbGVyIHRoYW4gdGhpcyB2YWx1ZS4gVGhpcyBtZWNoYW5pc20gaXMgdXNlZCBvbmx5IGZvciBjb21wcmVzc2lvbgogICAqIGxldmVscyA+PSA0LgogICAqLwogIC8vIFRoYXQncyBhbGlhcyB0byBtYXhfbGF6eV9tYXRjaCwgZG9uJ3QgdXNlIGRpcmVjdGx5CiAgLy90aGlzLm1heF9pbnNlcnRfbGVuZ3RoID0gMDsKICAvKiBJbnNlcnQgbmV3IHN0cmluZ3MgaW4gdGhlIGhhc2ggdGFibGUgb25seSBpZiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIG5vdAogICAqIGdyZWF0ZXIgdGhhbiB0aGlzIGxlbmd0aC4gVGhpcyBzYXZlcyB0aW1lIGJ1dCBkZWdyYWRlcyBjb21wcmVzc2lvbi4KICAgKiBtYXhfaW5zZXJ0X2xlbmd0aCBpcyB1c2VkIG9ubHkgZm9yIGNvbXByZXNzaW9uIGxldmVscyA8PSAzLgogICAqLwoKICB0aGlzLmxldmVsID0gMDsgICAgIC8qIGNvbXByZXNzaW9uIGxldmVsICgxLi45KSAqLwogIHRoaXMuc3RyYXRlZ3kgPSAwOyAgLyogZmF2b3Igb3IgZm9yY2UgSHVmZm1hbiBjb2RpbmcqLwoKICB0aGlzLmdvb2RfbWF0Y2ggPSAwOwogIC8qIFVzZSBhIGZhc3RlciBzZWFyY2ggd2hlbiB0aGUgcHJldmlvdXMgbWF0Y2ggaXMgbG9uZ2VyIHRoYW4gdGhpcyAqLwoKICB0aGlzLm5pY2VfbWF0Y2ggPSAwOyAvKiBTdG9wIHNlYXJjaGluZyB3aGVuIGN1cnJlbnQgbWF0Y2ggZXhjZWVkcyB0aGlzICovCgogICAgICAgICAgICAgIC8qIHVzZWQgYnkgdHJlZXMuYzogKi8KCiAgLyogRGlkbid0IHVzZSBjdF9kYXRhIHR5cGVkZWYgYmVsb3cgdG8gc3VwcHJlc3MgY29tcGlsZXIgd2FybmluZyAqLwoKICAvLyBzdHJ1Y3QgY3RfZGF0YV9zIGR5bl9sdHJlZVtIRUFQX1NJWkVdOyAgIC8qIGxpdGVyYWwgYW5kIGxlbmd0aCB0cmVlICovCiAgLy8gc3RydWN0IGN0X2RhdGFfcyBkeW5fZHRyZWVbMipEX0NPREVTKzFdOyAvKiBkaXN0YW5jZSB0cmVlICovCiAgLy8gc3RydWN0IGN0X2RhdGFfcyBibF90cmVlWzIqQkxfQ09ERVMrMV07ICAvKiBIdWZmbWFuIHRyZWUgZm9yIGJpdCBsZW5ndGhzICovCgogIC8vIFVzZSBmbGF0IGFycmF5IG9mIERPVUJMRSBzaXplLCB3aXRoIGludGVybGVhdmVkIGZhdGEsCiAgLy8gYmVjYXVzZSBKUyBkb2VzIG5vdCBzdXBwb3J0IGVmZmVjdGl2ZQogIHRoaXMuZHluX2x0cmVlICA9IG5ldyB1dGlscy5CdWYxNihIRUFQX1NJWkUgKiAyKTsKICB0aGlzLmR5bl9kdHJlZSAgPSBuZXcgdXRpbHMuQnVmMTYoKDIgKiBEX0NPREVTICsgMSkgKiAyKTsKICB0aGlzLmJsX3RyZWUgICAgPSBuZXcgdXRpbHMuQnVmMTYoKDIgKiBCTF9DT0RFUyArIDEpICogMik7CiAgemVybyh0aGlzLmR5bl9sdHJlZSk7CiAgemVybyh0aGlzLmR5bl9kdHJlZSk7CiAgemVybyh0aGlzLmJsX3RyZWUpOwoKICB0aGlzLmxfZGVzYyAgID0gbnVsbDsgICAgICAgICAvKiBkZXNjLiBmb3IgbGl0ZXJhbCB0cmVlICovCiAgdGhpcy5kX2Rlc2MgICA9IG51bGw7ICAgICAgICAgLyogZGVzYy4gZm9yIGRpc3RhbmNlIHRyZWUgKi8KICB0aGlzLmJsX2Rlc2MgID0gbnVsbDsgICAgICAgICAvKiBkZXNjLiBmb3IgYml0IGxlbmd0aCB0cmVlICovCgogIC8vdXNoIGJsX2NvdW50W01BWF9CSVRTKzFdOwogIHRoaXMuYmxfY291bnQgPSBuZXcgdXRpbHMuQnVmMTYoTUFYX0JJVFMgKyAxKTsKICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoIGZvciBhbiBvcHRpbWFsIHRyZWUgKi8KCiAgLy9pbnQgaGVhcFsyKkxfQ09ERVMrMV07ICAgICAgLyogaGVhcCB1c2VkIHRvIGJ1aWxkIHRoZSBIdWZmbWFuIHRyZWVzICovCiAgdGhpcy5oZWFwID0gbmV3IHV0aWxzLkJ1ZjE2KDIgKiBMX0NPREVTICsgMSk7ICAvKiBoZWFwIHVzZWQgdG8gYnVpbGQgdGhlIEh1ZmZtYW4gdHJlZXMgKi8KICB6ZXJvKHRoaXMuaGVhcCk7CgogIHRoaXMuaGVhcF9sZW4gPSAwOyAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgaGVhcCAqLwogIHRoaXMuaGVhcF9tYXggPSAwOyAgICAgICAgICAgICAgIC8qIGVsZW1lbnQgb2YgbGFyZ2VzdCBmcmVxdWVuY3kgKi8KICAvKiBUaGUgc29ucyBvZiBoZWFwW25dIGFyZSBoZWFwWzIqbl0gYW5kIGhlYXBbMipuKzFdLiBoZWFwWzBdIGlzIG5vdCB1c2VkLgogICAqIFRoZSBzYW1lIGhlYXAgYXJyYXkgaXMgdXNlZCB0byBidWlsZCBhbGwgdHJlZXMuCiAgICovCgogIHRoaXMuZGVwdGggPSBuZXcgdXRpbHMuQnVmMTYoMiAqIExfQ09ERVMgKyAxKTsgLy91Y2ggZGVwdGhbMipMX0NPREVTKzFdOwogIHplcm8odGhpcy5kZXB0aCk7CiAgLyogRGVwdGggb2YgZWFjaCBzdWJ0cmVlIHVzZWQgYXMgdGllIGJyZWFrZXIgZm9yIHRyZWVzIG9mIGVxdWFsIGZyZXF1ZW5jeQogICAqLwoKICB0aGlzLmxfYnVmID0gMDsgICAgICAgICAgLyogYnVmZmVyIGluZGV4IGZvciBsaXRlcmFscyBvciBsZW5ndGhzICovCgogIHRoaXMubGl0X2J1ZnNpemUgPSAwOwogIC8qIFNpemUgb2YgbWF0Y2ggYnVmZmVyIGZvciBsaXRlcmFscy9sZW5ndGhzLiAgVGhlcmUgYXJlIDQgcmVhc29ucyBmb3IKICAgKiBsaW1pdGluZyBsaXRfYnVmc2l6ZSB0byA2NEs6CiAgICogICAtIGZyZXF1ZW5jaWVzIGNhbiBiZSBrZXB0IGluIDE2IGJpdCBjb3VudGVycwogICAqICAgLSBpZiBjb21wcmVzc2lvbiBpcyBub3Qgc3VjY2Vzc2Z1bCBmb3IgdGhlIGZpcnN0IGJsb2NrLCBhbGwgaW5wdXQKICAgKiAgICAgZGF0YSBpcyBzdGlsbCBpbiB0aGUgd2luZG93IHNvIHdlIGNhbiBzdGlsbCBlbWl0IGEgc3RvcmVkIGJsb2NrIGV2ZW4KICAgKiAgICAgd2hlbiBpbnB1dCBjb21lcyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgKFRoaXMgY2FuIGFsc28gYmUgZG9uZSBmb3IKICAgKiAgICAgYWxsIGJsb2NrcyBpZiBsaXRfYnVmc2l6ZSBpcyBub3QgZ3JlYXRlciB0aGFuIDMySy4pCiAgICogICAtIGlmIGNvbXByZXNzaW9uIGlzIG5vdCBzdWNjZXNzZnVsIGZvciBhIGZpbGUgc21hbGxlciB0aGFuIDY0Sywgd2UgY2FuCiAgICogICAgIGV2ZW4gZW1pdCBhIHN0b3JlZCBmaWxlIGluc3RlYWQgb2YgYSBzdG9yZWQgYmxvY2sgKHNhdmluZyA1IGJ5dGVzKS4KICAgKiAgICAgVGhpcyBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIHppcCAobm90IGd6aXAgb3IgemxpYikuCiAgICogICAtIGNyZWF0aW5nIG5ldyBIdWZmbWFuIHRyZWVzIGxlc3MgZnJlcXVlbnRseSBtYXkgbm90IHByb3ZpZGUgZmFzdAogICAqICAgICBhZGFwdGF0aW9uIHRvIGNoYW5nZXMgaW4gdGhlIGlucHV0IGRhdGEgc3RhdGlzdGljcy4gKFRha2UgZm9yCiAgICogICAgIGV4YW1wbGUgYSBiaW5hcnkgZmlsZSB3aXRoIHBvb3JseSBjb21wcmVzc2libGUgY29kZSBmb2xsb3dlZCBieQogICAqICAgICBhIGhpZ2hseSBjb21wcmVzc2libGUgc3RyaW5nIHRhYmxlLikgU21hbGxlciBidWZmZXIgc2l6ZXMgZ2l2ZQogICAqICAgICBmYXN0IGFkYXB0YXRpb24gYnV0IGhhdmUgb2YgY291cnNlIHRoZSBvdmVyaGVhZCBvZiB0cmFuc21pdHRpbmcKICAgKiAgICAgdHJlZXMgbW9yZSBmcmVxdWVudGx5LgogICAqICAgLSBJIGNhbid0IGNvdW50IGFib3ZlIDQKICAgKi8KCiAgdGhpcy5sYXN0X2xpdCA9IDA7ICAgICAgLyogcnVubmluZyBpbmRleCBpbiBsX2J1ZiAqLwoKICB0aGlzLmRfYnVmID0gMDsKICAvKiBCdWZmZXIgaW5kZXggZm9yIGRpc3RhbmNlcy4gVG8gc2ltcGxpZnkgdGhlIGNvZGUsIGRfYnVmIGFuZCBsX2J1ZiBoYXZlCiAgICogdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzLiBUbyB1c2UgZGlmZmVyZW50IGxlbmd0aHMsIGFuIGV4dHJhIGZsYWcKICAgKiBhcnJheSB3b3VsZCBiZSBuZWNlc3NhcnkuCiAgICovCgogIHRoaXMub3B0X2xlbiA9IDA7ICAgICAgIC8qIGJpdCBsZW5ndGggb2YgY3VycmVudCBibG9jayB3aXRoIG9wdGltYWwgdHJlZXMgKi8KICB0aGlzLnN0YXRpY19sZW4gPSAwOyAgICAvKiBiaXQgbGVuZ3RoIG9mIGN1cnJlbnQgYmxvY2sgd2l0aCBzdGF0aWMgdHJlZXMgKi8KICB0aGlzLm1hdGNoZXMgPSAwOyAgICAgICAvKiBudW1iZXIgb2Ygc3RyaW5nIG1hdGNoZXMgaW4gY3VycmVudCBibG9jayAqLwogIHRoaXMuaW5zZXJ0ID0gMDsgICAgICAgIC8qIGJ5dGVzIGF0IGVuZCBvZiB3aW5kb3cgbGVmdCB0byBpbnNlcnQgKi8KCgogIHRoaXMuYmlfYnVmID0gMDsKICAvKiBPdXRwdXQgYnVmZmVyLiBiaXRzIGFyZSBpbnNlcnRlZCBzdGFydGluZyBhdCB0aGUgYm90dG9tIChsZWFzdAogICAqIHNpZ25pZmljYW50IGJpdHMpLgogICAqLwogIHRoaXMuYmlfdmFsaWQgPSAwOwogIC8qIE51bWJlciBvZiB2YWxpZCBiaXRzIGluIGJpX2J1Zi4gIEFsbCBiaXRzIGFib3ZlIHRoZSBsYXN0IHZhbGlkIGJpdAogICAqIGFyZSBhbHdheXMgemVyby4KICAgKi8KCiAgLy8gVXNlZCBmb3Igd2luZG93IG1lbW9yeSBpbml0LiBXZSBzYWZlbHkgaWdub3JlIGl0IGZvciBKUy4gVGhhdCBtYWtlcwogIC8vIHNlbnNlIG9ubHkgZm9yIHBvaW50ZXJzIGFuZCBtZW1vcnkgY2hlY2sgdG9vbHMuCiAgLy90aGlzLmhpZ2hfd2F0ZXIgPSAwOwogIC8qIEhpZ2ggd2F0ZXIgbWFyayBvZmZzZXQgaW4gd2luZG93IGZvciBpbml0aWFsaXplZCBieXRlcyAtLSBieXRlcyBhYm92ZQogICAqIHRoaXMgYXJlIHNldCB0byB6ZXJvIGluIG9yZGVyIHRvIGF2b2lkIG1lbW9yeSBjaGVjayB3YXJuaW5ncyB3aGVuCiAgICogbG9uZ2VzdCBtYXRjaCByb3V0aW5lcyBhY2Nlc3MgYnl0ZXMgcGFzdCB0aGUgaW5wdXQuICBUaGlzIGlzIHRoZW4KICAgKiB1cGRhdGVkIHRvIHRoZSBuZXcgaGlnaCB3YXRlciBtYXJrLgogICAqLwp9CgoKZnVuY3Rpb24gZGVmbGF0ZVJlc2V0S2VlcChzdHJtKSB7CiAgdmFyIHM7CgogIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgewogICAgcmV0dXJuIGVycihzdHJtLCBaX1NUUkVBTV9FUlJPUik7CiAgfQoKICBzdHJtLnRvdGFsX2luID0gc3RybS50b3RhbF9vdXQgPSAwOwogIHN0cm0uZGF0YV90eXBlID0gWl9VTktOT1dOOwoKICBzID0gc3RybS5zdGF0ZTsKICBzLnBlbmRpbmcgPSAwOwogIHMucGVuZGluZ19vdXQgPSAwOwoKICBpZiAocy53cmFwIDwgMCkgewogICAgcy53cmFwID0gLXMud3JhcDsKICAgIC8qIHdhcyBtYWRlIG5lZ2F0aXZlIGJ5IGRlZmxhdGUoLi4uLCBaX0ZJTklTSCk7ICovCiAgfQogIHMuc3RhdHVzID0gKHMud3JhcCA/IElOSVRfU1RBVEUgOiBCVVNZX1NUQVRFKTsKICBzdHJtLmFkbGVyID0gKHMud3JhcCA9PT0gMikgPwogICAgMCAgLy8gY3JjMzIoMCwgWl9OVUxMLCAwKQogIDoKICAgIDE7IC8vIGFkbGVyMzIoMCwgWl9OVUxMLCAwKQogIHMubGFzdF9mbHVzaCA9IFpfTk9fRkxVU0g7CiAgdHJlZXMuX3RyX2luaXQocyk7CiAgcmV0dXJuIFpfT0s7Cn0KCgpmdW5jdGlvbiBkZWZsYXRlUmVzZXQoc3RybSkgewogIHZhciByZXQgPSBkZWZsYXRlUmVzZXRLZWVwKHN0cm0pOwogIGlmIChyZXQgPT09IFpfT0spIHsKICAgIGxtX2luaXQoc3RybS5zdGF0ZSk7CiAgfQogIHJldHVybiByZXQ7Cn0KCgpmdW5jdGlvbiBkZWZsYXRlU2V0SGVhZGVyKHN0cm0sIGhlYWQpIHsKICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9CiAgaWYgKHN0cm0uc3RhdGUud3JhcCAhPT0gMikgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH0KICBzdHJtLnN0YXRlLmd6aGVhZCA9IGhlYWQ7CiAgcmV0dXJuIFpfT0s7Cn0KCgpmdW5jdGlvbiBkZWZsYXRlSW5pdDIoc3RybSwgbGV2ZWwsIG1ldGhvZCwgd2luZG93Qml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5KSB7CiAgaWYgKCFzdHJtKSB7IC8vID09PSBaX05VTEwKICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICB9CiAgdmFyIHdyYXAgPSAxOwoKICBpZiAobGV2ZWwgPT09IFpfREVGQVVMVF9DT01QUkVTU0lPTikgewogICAgbGV2ZWwgPSA2OwogIH0KCiAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7IC8qIHN1cHByZXNzIHpsaWIgd3JhcHBlciAqLwogICAgd3JhcCA9IDA7CiAgICB3aW5kb3dCaXRzID0gLXdpbmRvd0JpdHM7CiAgfQoKICBlbHNlIGlmICh3aW5kb3dCaXRzID4gMTUpIHsKICAgIHdyYXAgPSAyOyAgICAgICAgICAgLyogd3JpdGUgZ3ppcCB3cmFwcGVyIGluc3RlYWQgKi8KICAgIHdpbmRvd0JpdHMgLT0gMTY7CiAgfQoKCiAgaWYgKG1lbUxldmVsIDwgMSB8fCBtZW1MZXZlbCA+IE1BWF9NRU1fTEVWRUwgfHwgbWV0aG9kICE9PSBaX0RFRkxBVEVEIHx8CiAgICB3aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUgfHwgbGV2ZWwgPCAwIHx8IGxldmVsID4gOSB8fAogICAgc3RyYXRlZ3kgPCAwIHx8IHN0cmF0ZWd5ID4gWl9GSVhFRCkgewogICAgcmV0dXJuIGVycihzdHJtLCBaX1NUUkVBTV9FUlJPUik7CiAgfQoKCiAgaWYgKHdpbmRvd0JpdHMgPT09IDgpIHsKICAgIHdpbmRvd0JpdHMgPSA5OwogIH0KICAvKiB1bnRpbCAyNTYtYnl0ZSB3aW5kb3cgYnVnIGZpeGVkICovCgogIHZhciBzID0gbmV3IERlZmxhdGVTdGF0ZSgpOwoKICBzdHJtLnN0YXRlID0gczsKICBzLnN0cm0gPSBzdHJtOwoKICBzLndyYXAgPSB3cmFwOwogIHMuZ3poZWFkID0gbnVsbDsKICBzLndfYml0cyA9IHdpbmRvd0JpdHM7CiAgcy53X3NpemUgPSAxIDw8IHMud19iaXRzOwogIHMud19tYXNrID0gcy53X3NpemUgLSAxOwoKICBzLmhhc2hfYml0cyA9IG1lbUxldmVsICsgNzsKICBzLmhhc2hfc2l6ZSA9IDEgPDwgcy5oYXNoX2JpdHM7CiAgcy5oYXNoX21hc2sgPSBzLmhhc2hfc2l6ZSAtIDE7CiAgcy5oYXNoX3NoaWZ0ID0gfn4oKHMuaGFzaF9iaXRzICsgTUlOX01BVENIIC0gMSkgLyBNSU5fTUFUQ0gpOwoKICBzLndpbmRvdyA9IG5ldyB1dGlscy5CdWY4KHMud19zaXplICogMik7CiAgcy5oZWFkID0gbmV3IHV0aWxzLkJ1ZjE2KHMuaGFzaF9zaXplKTsKICBzLnByZXYgPSBuZXcgdXRpbHMuQnVmMTYocy53X3NpemUpOwoKICAvLyBEb24ndCBuZWVkIG1lbSBpbml0IG1hZ2ljIGZvciBKUy4KICAvL3MuaGlnaF93YXRlciA9IDA7ICAvKiBub3RoaW5nIHdyaXR0ZW4gdG8gcy0+d2luZG93IHlldCAqLwoKICBzLmxpdF9idWZzaXplID0gMSA8PCAobWVtTGV2ZWwgKyA2KTsgLyogMTZLIGVsZW1lbnRzIGJ5IGRlZmF1bHQgKi8KCiAgcy5wZW5kaW5nX2J1Zl9zaXplID0gcy5saXRfYnVmc2l6ZSAqIDQ7CgogIC8vb3ZlcmxheSA9ICh1c2hmICopIFpBTExPQyhzdHJtLCBzLT5saXRfYnVmc2l6ZSwgc2l6ZW9mKHVzaCkrMik7CiAgLy9zLT5wZW5kaW5nX2J1ZiA9ICh1Y2hmICopIG92ZXJsYXk7CiAgcy5wZW5kaW5nX2J1ZiA9IG5ldyB1dGlscy5CdWY4KHMucGVuZGluZ19idWZfc2l6ZSk7CgogIC8vIEl0IGlzIG9mZnNldCBmcm9tIGBzLnBlbmRpbmdfYnVmYCAoc2l6ZSBpcyBgcy5saXRfYnVmc2l6ZSAqIDJgKQogIC8vcy0+ZF9idWYgPSBvdmVybGF5ICsgcy0+bGl0X2J1ZnNpemUvc2l6ZW9mKHVzaCk7CiAgcy5kX2J1ZiA9IDEgKiBzLmxpdF9idWZzaXplOwoKICAvL3MtPmxfYnVmID0gcy0+cGVuZGluZ19idWYgKyAoMStzaXplb2YodXNoKSkqcy0+bGl0X2J1ZnNpemU7CiAgcy5sX2J1ZiA9ICgxICsgMikgKiBzLmxpdF9idWZzaXplOwoKICBzLmxldmVsID0gbGV2ZWw7CiAgcy5zdHJhdGVneSA9IHN0cmF0ZWd5OwogIHMubWV0aG9kID0gbWV0aG9kOwoKICByZXR1cm4gZGVmbGF0ZVJlc2V0KHN0cm0pOwp9CgpmdW5jdGlvbiBkZWZsYXRlSW5pdChzdHJtLCBsZXZlbCkgewogIHJldHVybiBkZWZsYXRlSW5pdDIoc3RybSwgbGV2ZWwsIFpfREVGTEFURUQsIE1BWF9XQklUUywgREVGX01FTV9MRVZFTCwgWl9ERUZBVUxUX1NUUkFURUdZKTsKfQoKCmZ1bmN0aW9uIGRlZmxhdGUoc3RybSwgZmx1c2gpIHsKICB2YXIgb2xkX2ZsdXNoLCBzOwogIHZhciBiZWcsIHZhbDsgLy8gZm9yIGd6aXAgaGVhZGVyIHdyaXRlIG9ubHkKCiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlIHx8CiAgICBmbHVzaCA+IFpfQkxPQ0sgfHwgZmx1c2ggPCAwKSB7CiAgICByZXR1cm4gc3RybSA/IGVycihzdHJtLCBaX1NUUkVBTV9FUlJPUikgOiBaX1NUUkVBTV9FUlJPUjsKICB9CgogIHMgPSBzdHJtLnN0YXRlOwoKICBpZiAoIXN0cm0ub3V0cHV0IHx8CiAgICAgICghc3RybS5pbnB1dCAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSB8fAogICAgICAocy5zdGF0dXMgPT09IEZJTklTSF9TVEFURSAmJiBmbHVzaCAhPT0gWl9GSU5JU0gpKSB7CiAgICByZXR1cm4gZXJyKHN0cm0sIChzdHJtLmF2YWlsX291dCA9PT0gMCkgPyBaX0JVRl9FUlJPUiA6IFpfU1RSRUFNX0VSUk9SKTsKICB9CgogIHMuc3RybSA9IHN0cm07IC8qIGp1c3QgaW4gY2FzZSAqLwogIG9sZF9mbHVzaCA9IHMubGFzdF9mbHVzaDsKICBzLmxhc3RfZmx1c2ggPSBmbHVzaDsKCiAgLyogV3JpdGUgdGhlIGhlYWRlciAqLwogIGlmIChzLnN0YXR1cyA9PT0gSU5JVF9TVEFURSkgewoKICAgIGlmIChzLndyYXAgPT09IDIpIHsgLy8gR1pJUCBoZWFkZXIKICAgICAgc3RybS5hZGxlciA9IDA7ICAvL2NyYzMyKDBMLCBaX05VTEwsIDApOwogICAgICBwdXRfYnl0ZShzLCAzMSk7CiAgICAgIHB1dF9ieXRlKHMsIDEzOSk7CiAgICAgIHB1dF9ieXRlKHMsIDgpOwogICAgICBpZiAoIXMuZ3poZWFkKSB7IC8vIHMtPmd6aGVhZCA9PSBaX05VTEwKICAgICAgICBwdXRfYnl0ZShzLCAwKTsKICAgICAgICBwdXRfYnl0ZShzLCAwKTsKICAgICAgICBwdXRfYnl0ZShzLCAwKTsKICAgICAgICBwdXRfYnl0ZShzLCAwKTsKICAgICAgICBwdXRfYnl0ZShzLCAwKTsKICAgICAgICBwdXRfYnl0ZShzLCBzLmxldmVsID09PSA5ID8gMiA6CiAgICAgICAgICAgICAgICAgICAgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIgPwogICAgICAgICAgICAgICAgICAgICA0IDogMCkpOwogICAgICAgIHB1dF9ieXRlKHMsIE9TX0NPREUpOwogICAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGV4dCA/IDEgOiAwKSArCiAgICAgICAgICAgICAgICAgICAgKHMuZ3poZWFkLmhjcmMgPyAyIDogMCkgKwogICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQuZXh0cmEgPyAwIDogNCkgKwogICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQubmFtZSA/IDAgOiA4KSArCiAgICAgICAgICAgICAgICAgICAgKCFzLmd6aGVhZC5jb21tZW50ID8gMCA6IDE2KQogICAgICAgICAgICAgICAgKTsKICAgICAgICBwdXRfYnl0ZShzLCBzLmd6aGVhZC50aW1lICYgMHhmZik7CiAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLnRpbWUgPj4gOCkgJiAweGZmKTsKICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGltZSA+PiAxNikgJiAweGZmKTsKICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGltZSA+PiAyNCkgJiAweGZmKTsKICAgICAgICBwdXRfYnl0ZShzLCBzLmxldmVsID09PSA5ID8gMiA6CiAgICAgICAgICAgICAgICAgICAgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIgPwogICAgICAgICAgICAgICAgICAgICA0IDogMCkpOwogICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLm9zICYgMHhmZik7CiAgICAgICAgaWYgKHMuZ3poZWFkLmV4dHJhICYmIHMuZ3poZWFkLmV4dHJhLmxlbmd0aCkgewogICAgICAgICAgcHV0X2J5dGUocywgcy5nemhlYWQuZXh0cmEubGVuZ3RoICYgMHhmZik7CiAgICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQuZXh0cmEubGVuZ3RoID4+IDgpICYgMHhmZik7CiAgICAgICAgfQogICAgICAgIGlmIChzLmd6aGVhZC5oY3JjKSB7CiAgICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nLCAwKTsKICAgICAgICB9CiAgICAgICAgcy5nemluZGV4ID0gMDsKICAgICAgICBzLnN0YXR1cyA9IEVYVFJBX1NUQVRFOwogICAgICB9CiAgICB9CiAgICBlbHNlIC8vIERFRkxBVEUgaGVhZGVyCiAgICB7CiAgICAgIHZhciBoZWFkZXIgPSAoWl9ERUZMQVRFRCArICgocy53X2JpdHMgLSA4KSA8PCA0KSkgPDwgODsKICAgICAgdmFyIGxldmVsX2ZsYWdzID0gLTE7CgogICAgICBpZiAocy5zdHJhdGVneSA+PSBaX0hVRkZNQU5fT05MWSB8fCBzLmxldmVsIDwgMikgewogICAgICAgIGxldmVsX2ZsYWdzID0gMDsKICAgICAgfSBlbHNlIGlmIChzLmxldmVsIDwgNikgewogICAgICAgIGxldmVsX2ZsYWdzID0gMTsKICAgICAgfSBlbHNlIGlmIChzLmxldmVsID09PSA2KSB7CiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAyOwogICAgICB9IGVsc2UgewogICAgICAgIGxldmVsX2ZsYWdzID0gMzsKICAgICAgfQogICAgICBoZWFkZXIgfD0gKGxldmVsX2ZsYWdzIDw8IDYpOwogICAgICBpZiAocy5zdHJzdGFydCAhPT0gMCkgeyBoZWFkZXIgfD0gUFJFU0VUX0RJQ1Q7IH0KICAgICAgaGVhZGVyICs9IDMxIC0gKGhlYWRlciAlIDMxKTsKCiAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTsKICAgICAgcHV0U2hvcnRNU0IocywgaGVhZGVyKTsKCiAgICAgIC8qIFNhdmUgdGhlIGFkbGVyMzIgb2YgdGhlIHByZXNldCBkaWN0aW9uYXJ5OiAqLwogICAgICBpZiAocy5zdHJzdGFydCAhPT0gMCkgewogICAgICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgPj4+IDE2KTsKICAgICAgICBwdXRTaG9ydE1TQihzLCBzdHJtLmFkbGVyICYgMHhmZmZmKTsKICAgICAgfQogICAgICBzdHJtLmFkbGVyID0gMTsgLy8gYWRsZXIzMigwTCwgWl9OVUxMLCAwKTsKICAgIH0KICB9CgovLyNpZmRlZiBHWklQCiAgaWYgKHMuc3RhdHVzID09PSBFWFRSQV9TVEFURSkgewogICAgaWYgKHMuZ3poZWFkLmV4dHJhLyogIT0gWl9OVUxMKi8pIHsKICAgICAgYmVnID0gcy5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqLwoKICAgICAgd2hpbGUgKHMuZ3ppbmRleCA8IChzLmd6aGVhZC5leHRyYS5sZW5ndGggJiAweGZmZmYpKSB7CiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7CiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHsKICAgICAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTsKICAgICAgICAgIH0KICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CiAgICAgICAgICBiZWcgPSBzLnBlbmRpbmc7CiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLmV4dHJhW3MuZ3ppbmRleF0gJiAweGZmKTsKICAgICAgICBzLmd6aW5kZXgrKzsKICAgICAgfQogICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHsKICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpOwogICAgICB9CiAgICAgIGlmIChzLmd6aW5kZXggPT09IHMuZ3poZWFkLmV4dHJhLmxlbmd0aCkgewogICAgICAgIHMuZ3ppbmRleCA9IDA7CiAgICAgICAgcy5zdGF0dXMgPSBOQU1FX1NUQVRFOwogICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgcy5zdGF0dXMgPSBOQU1FX1NUQVRFOwogICAgfQogIH0KICBpZiAocy5zdGF0dXMgPT09IE5BTUVfU1RBVEUpIHsKICAgIGlmIChzLmd6aGVhZC5uYW1lLyogIT0gWl9OVUxMKi8pIHsKICAgICAgYmVnID0gcy5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqLwogICAgICAvL2ludCB2YWw7CgogICAgICBkbyB7CiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7CiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHsKICAgICAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTsKICAgICAgICAgIH0KICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CiAgICAgICAgICBiZWcgPSBzLnBlbmRpbmc7CiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHsKICAgICAgICAgICAgdmFsID0gMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIEpTIHNwZWNpZmljOiBsaXR0bGUgbWFnaWMgdG8gYWRkIHplcm8gdGVybWluYXRvciB0byBlbmQgb2Ygc3RyaW5nCiAgICAgICAgaWYgKHMuZ3ppbmRleCA8IHMuZ3poZWFkLm5hbWUubGVuZ3RoKSB7CiAgICAgICAgICB2YWwgPSBzLmd6aGVhZC5uYW1lLmNoYXJDb2RlQXQocy5nemluZGV4KyspICYgMHhmZjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFsID0gMDsKICAgICAgICB9CiAgICAgICAgcHV0X2J5dGUocywgdmFsKTsKICAgICAgfSB3aGlsZSAodmFsICE9PSAwKTsKCiAgICAgIGlmIChzLmd6aGVhZC5oY3JjICYmIHMucGVuZGluZyA+IGJlZykgewogICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7CiAgICAgIH0KICAgICAgaWYgKHZhbCA9PT0gMCkgewogICAgICAgIHMuZ3ppbmRleCA9IDA7CiAgICAgICAgcy5zdGF0dXMgPSBDT01NRU5UX1NUQVRFOwogICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgcy5zdGF0dXMgPSBDT01NRU5UX1NUQVRFOwogICAgfQogIH0KICBpZiAocy5zdGF0dXMgPT09IENPTU1FTlRfU1RBVEUpIHsKICAgIGlmIChzLmd6aGVhZC5jb21tZW50LyogIT0gWl9OVUxMKi8pIHsKICAgICAgYmVnID0gcy5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqLwogICAgICAvL2ludCB2YWw7CgogICAgICBkbyB7CiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7CiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHsKICAgICAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTsKICAgICAgICAgIH0KICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CiAgICAgICAgICBiZWcgPSBzLnBlbmRpbmc7CiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHsKICAgICAgICAgICAgdmFsID0gMTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIEpTIHNwZWNpZmljOiBsaXR0bGUgbWFnaWMgdG8gYWRkIHplcm8gdGVybWluYXRvciB0byBlbmQgb2Ygc3RyaW5nCiAgICAgICAgaWYgKHMuZ3ppbmRleCA8IHMuZ3poZWFkLmNvbW1lbnQubGVuZ3RoKSB7CiAgICAgICAgICB2YWwgPSBzLmd6aGVhZC5jb21tZW50LmNoYXJDb2RlQXQocy5nemluZGV4KyspICYgMHhmZjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFsID0gMDsKICAgICAgICB9CiAgICAgICAgcHV0X2J5dGUocywgdmFsKTsKICAgICAgfSB3aGlsZSAodmFsICE9PSAwKTsKCiAgICAgIGlmIChzLmd6aGVhZC5oY3JjICYmIHMucGVuZGluZyA+IGJlZykgewogICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7CiAgICAgIH0KICAgICAgaWYgKHZhbCA9PT0gMCkgewogICAgICAgIHMuc3RhdHVzID0gSENSQ19TVEFURTsKICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgIHMuc3RhdHVzID0gSENSQ19TVEFURTsKICAgIH0KICB9CiAgaWYgKHMuc3RhdHVzID09PSBIQ1JDX1NUQVRFKSB7CiAgICBpZiAocy5nemhlYWQuaGNyYykgewogICAgICBpZiAocy5wZW5kaW5nICsgMiA+IHMucGVuZGluZ19idWZfc2l6ZSkgewogICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CiAgICAgIH0KICAgICAgaWYgKHMucGVuZGluZyArIDIgPD0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7CiAgICAgICAgcHV0X2J5dGUocywgc3RybS5hZGxlciAmIDB4ZmYpOwogICAgICAgIHB1dF9ieXRlKHMsIChzdHJtLmFkbGVyID4+IDgpICYgMHhmZik7CiAgICAgICAgc3RybS5hZGxlciA9IDA7IC8vY3JjMzIoMEwsIFpfTlVMTCwgMCk7CiAgICAgICAgcy5zdGF0dXMgPSBCVVNZX1NUQVRFOwogICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgcy5zdGF0dXMgPSBCVVNZX1NUQVRFOwogICAgfQogIH0KLy8jZW5kaWYKCiAgLyogRmx1c2ggYXMgbXVjaCBwZW5kaW5nIG91dHB1dCBhcyBwb3NzaWJsZSAqLwogIGlmIChzLnBlbmRpbmcgIT09IDApIHsKICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CiAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgLyogU2luY2UgYXZhaWxfb3V0IGlzIDAsIGRlZmxhdGUgd2lsbCBiZSBjYWxsZWQgYWdhaW4gd2l0aAogICAgICAgKiBtb3JlIG91dHB1dCBzcGFjZSwgYnV0IHBvc3NpYmx5IHdpdGggYm90aCBwZW5kaW5nIGFuZAogICAgICAgKiBhdmFpbF9pbiBlcXVhbCB0byB6ZXJvLiBUaGVyZSB3b24ndCBiZSBhbnl0aGluZyB0byBkbywKICAgICAgICogYnV0IHRoaXMgaXMgbm90IGFuIGVycm9yIHNpdHVhdGlvbiBzbyBtYWtlIHN1cmUgd2UKICAgICAgICogcmV0dXJuIE9LIGluc3RlYWQgb2YgQlVGX0VSUk9SIGF0IG5leHQgY2FsbCBvZiBkZWZsYXRlOgogICAgICAgKi8KICAgICAgcy5sYXN0X2ZsdXNoID0gLTE7CiAgICAgIHJldHVybiBaX09LOwogICAgfQoKICAgIC8qIE1ha2Ugc3VyZSB0aGVyZSBpcyBzb21ldGhpbmcgdG8gZG8gYW5kIGF2b2lkIGR1cGxpY2F0ZSBjb25zZWN1dGl2ZQogICAgICogZmx1c2hlcy4gRm9yIHJlcGVhdGVkIGFuZCB1c2VsZXNzIGNhbGxzIHdpdGggWl9GSU5JU0gsIHdlIGtlZXAKICAgICAqIHJldHVybmluZyBaX1NUUkVBTV9FTkQgaW5zdGVhZCBvZiBaX0JVRl9FUlJPUi4KICAgICAqLwogIH0gZWxzZSBpZiAoc3RybS5hdmFpbF9pbiA9PT0gMCAmJiByYW5rKGZsdXNoKSA8PSByYW5rKG9sZF9mbHVzaCkgJiYKICAgIGZsdXNoICE9PSBaX0ZJTklTSCkgewogICAgcmV0dXJuIGVycihzdHJtLCBaX0JVRl9FUlJPUik7CiAgfQoKICAvKiBVc2VyIG11c3Qgbm90IHByb3ZpZGUgbW9yZSBpbnB1dCBhZnRlciB0aGUgZmlyc3QgRklOSVNIOiAqLwogIGlmIChzLnN0YXR1cyA9PT0gRklOSVNIX1NUQVRFICYmIHN0cm0uYXZhaWxfaW4gIT09IDApIHsKICAgIHJldHVybiBlcnIoc3RybSwgWl9CVUZfRVJST1IpOwogIH0KCiAgLyogU3RhcnQgYSBuZXcgYmxvY2sgb3IgY29udGludWUgdGhlIGN1cnJlbnQgb25lLgogICAqLwogIGlmIChzdHJtLmF2YWlsX2luICE9PSAwIHx8IHMubG9va2FoZWFkICE9PSAwIHx8CiAgICAoZmx1c2ggIT09IFpfTk9fRkxVU0ggJiYgcy5zdGF0dXMgIT09IEZJTklTSF9TVEFURSkpIHsKICAgIHZhciBic3RhdGUgPSAocy5zdHJhdGVneSA9PT0gWl9IVUZGTUFOX09OTFkpID8gZGVmbGF0ZV9odWZmKHMsIGZsdXNoKSA6CiAgICAgIChzLnN0cmF0ZWd5ID09PSBaX1JMRSA/IGRlZmxhdGVfcmxlKHMsIGZsdXNoKSA6CiAgICAgICAgY29uZmlndXJhdGlvbl90YWJsZVtzLmxldmVsXS5mdW5jKHMsIGZsdXNoKSk7CgogICAgaWYgKGJzdGF0ZSA9PT0gQlNfRklOSVNIX1NUQVJURUQgfHwgYnN0YXRlID09PSBCU19GSU5JU0hfRE9ORSkgewogICAgICBzLnN0YXR1cyA9IEZJTklTSF9TVEFURTsKICAgIH0KICAgIGlmIChic3RhdGUgPT09IEJTX05FRURfTU9SRSB8fCBic3RhdGUgPT09IEJTX0ZJTklTSF9TVEFSVEVEKSB7CiAgICAgIGlmIChzdHJtLmF2YWlsX291dCA9PT0gMCkgewogICAgICAgIHMubGFzdF9mbHVzaCA9IC0xOwogICAgICAgIC8qIGF2b2lkIEJVRl9FUlJPUiBuZXh0IGNhbGwsIHNlZSBhYm92ZSAqLwogICAgICB9CiAgICAgIHJldHVybiBaX09LOwogICAgICAvKiBJZiBmbHVzaCAhPSBaX05PX0ZMVVNIICYmIGF2YWlsX291dCA9PSAwLCB0aGUgbmV4dCBjYWxsCiAgICAgICAqIG9mIGRlZmxhdGUgc2hvdWxkIHVzZSB0aGUgc2FtZSBmbHVzaCBwYXJhbWV0ZXIgdG8gbWFrZSBzdXJlCiAgICAgICAqIHRoYXQgdGhlIGZsdXNoIGlzIGNvbXBsZXRlLiBTbyB3ZSBkb24ndCBoYXZlIHRvIG91dHB1dCBhbgogICAgICAgKiBlbXB0eSBibG9jayBoZXJlLCB0aGlzIHdpbGwgYmUgZG9uZSBhdCBuZXh0IGNhbGwuIFRoaXMgYWxzbwogICAgICAgKiBlbnN1cmVzIHRoYXQgZm9yIGEgdmVyeSBzbWFsbCBvdXRwdXQgYnVmZmVyLCB3ZSBlbWl0IGF0IG1vc3QKICAgICAgICogb25lIGVtcHR5IGJsb2NrLgogICAgICAgKi8KICAgIH0KICAgIGlmIChic3RhdGUgPT09IEJTX0JMT0NLX0RPTkUpIHsKICAgICAgaWYgKGZsdXNoID09PSBaX1BBUlRJQUxfRkxVU0gpIHsKICAgICAgICB0cmVlcy5fdHJfYWxpZ24ocyk7CiAgICAgIH0KICAgICAgZWxzZSBpZiAoZmx1c2ggIT09IFpfQkxPQ0spIHsgLyogRlVMTF9GTFVTSCBvciBTWU5DX0ZMVVNIICovCgogICAgICAgIHRyZWVzLl90cl9zdG9yZWRfYmxvY2socywgMCwgMCwgZmFsc2UpOwogICAgICAgIC8qIEZvciBhIGZ1bGwgZmx1c2gsIHRoaXMgZW1wdHkgYmxvY2sgd2lsbCBiZSByZWNvZ25pemVkCiAgICAgICAgICogYXMgYSBzcGVjaWFsIG1hcmtlciBieSBpbmZsYXRlX3N5bmMoKS4KICAgICAgICAgKi8KICAgICAgICBpZiAoZmx1c2ggPT09IFpfRlVMTF9GTFVTSCkgewogICAgICAgICAgLyoqKiBDTEVBUl9IQVNIKHMpOyAqKiovICAgICAgICAgICAgIC8qIGZvcmdldCBoaXN0b3J5ICovCiAgICAgICAgICB6ZXJvKHMuaGVhZCk7IC8vIEZpbGwgd2l0aCBOSUwgKD0gMCk7CgogICAgICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7CiAgICAgICAgICAgIHMuc3Ryc3RhcnQgPSAwOwogICAgICAgICAgICBzLmJsb2NrX3N0YXJ0ID0gMDsKICAgICAgICAgICAgcy5pbnNlcnQgPSAwOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pOwogICAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHsKICAgICAgICBzLmxhc3RfZmx1c2ggPSAtMTsgLyogYXZvaWQgQlVGX0VSUk9SIGF0IG5leHQgY2FsbCwgc2VlIGFib3ZlICovCiAgICAgICAgcmV0dXJuIFpfT0s7CiAgICAgIH0KICAgIH0KICB9CiAgLy9Bc3NlcnQoc3RybS0+YXZhaWxfb3V0ID4gMCwgImJ1ZzIiKTsKICAvL2lmIChzdHJtLmF2YWlsX291dCA8PSAwKSB7IHRocm93IG5ldyBFcnJvcigiYnVnMiIpO30KCiAgaWYgKGZsdXNoICE9PSBaX0ZJTklTSCkgeyByZXR1cm4gWl9PSzsgfQogIGlmIChzLndyYXAgPD0gMCkgeyByZXR1cm4gWl9TVFJFQU1fRU5EOyB9CgogIC8qIFdyaXRlIHRoZSB0cmFpbGVyICovCiAgaWYgKHMud3JhcCA9PT0gMikgewogICAgcHV0X2J5dGUocywgc3RybS5hZGxlciAmIDB4ZmYpOwogICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gOCkgJiAweGZmKTsKICAgIHB1dF9ieXRlKHMsIChzdHJtLmFkbGVyID4+IDE2KSAmIDB4ZmYpOwogICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gMjQpICYgMHhmZik7CiAgICBwdXRfYnl0ZShzLCBzdHJtLnRvdGFsX2luICYgMHhmZik7CiAgICBwdXRfYnl0ZShzLCAoc3RybS50b3RhbF9pbiA+PiA4KSAmIDB4ZmYpOwogICAgcHV0X2J5dGUocywgKHN0cm0udG90YWxfaW4gPj4gMTYpICYgMHhmZik7CiAgICBwdXRfYnl0ZShzLCAoc3RybS50b3RhbF9pbiA+PiAyNCkgJiAweGZmKTsKICB9CiAgZWxzZQogIHsKICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgPj4+IDE2KTsKICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgJiAweGZmZmYpOwogIH0KCiAgZmx1c2hfcGVuZGluZyhzdHJtKTsKICAvKiBJZiBhdmFpbF9vdXQgaXMgemVybywgdGhlIGFwcGxpY2F0aW9uIHdpbGwgY2FsbCBkZWZsYXRlIGFnYWluCiAgICogdG8gZmx1c2ggdGhlIHJlc3QuCiAgICovCiAgaWYgKHMud3JhcCA+IDApIHsgcy53cmFwID0gLXMud3JhcDsgfQogIC8qIHdyaXRlIHRoZSB0cmFpbGVyIG9ubHkgb25jZSEgKi8KICByZXR1cm4gcy5wZW5kaW5nICE9PSAwID8gWl9PSyA6IFpfU1RSRUFNX0VORDsKfQoKZnVuY3Rpb24gZGVmbGF0ZUVuZChzdHJtKSB7CiAgdmFyIHN0YXR1czsKCiAgaWYgKCFzdHJtLyo9PSBaX05VTEwqLyB8fCAhc3RybS5zdGF0ZS8qPT0gWl9OVUxMKi8pIHsKICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICB9CgogIHN0YXR1cyA9IHN0cm0uc3RhdGUuc3RhdHVzOwogIGlmIChzdGF0dXMgIT09IElOSVRfU1RBVEUgJiYKICAgIHN0YXR1cyAhPT0gRVhUUkFfU1RBVEUgJiYKICAgIHN0YXR1cyAhPT0gTkFNRV9TVEFURSAmJgogICAgc3RhdHVzICE9PSBDT01NRU5UX1NUQVRFICYmCiAgICBzdGF0dXMgIT09IEhDUkNfU1RBVEUgJiYKICAgIHN0YXR1cyAhPT0gQlVTWV9TVEFURSAmJgogICAgc3RhdHVzICE9PSBGSU5JU0hfU1RBVEUKICApIHsKICAgIHJldHVybiBlcnIoc3RybSwgWl9TVFJFQU1fRVJST1IpOwogIH0KCiAgc3RybS5zdGF0ZSA9IG51bGw7CgogIHJldHVybiBzdGF0dXMgPT09IEJVU1lfU1RBVEUgPyBlcnIoc3RybSwgWl9EQVRBX0VSUk9SKSA6IFpfT0s7Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIEluaXRpYWxpemVzIHRoZSBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5IGZyb20gdGhlIGdpdmVuIGJ5dGUKICogc2VxdWVuY2Ugd2l0aG91dCBwcm9kdWNpbmcgYW55IGNvbXByZXNzZWQgb3V0cHV0LgogKi8KZnVuY3Rpb24gZGVmbGF0ZVNldERpY3Rpb25hcnkoc3RybSwgZGljdGlvbmFyeSkgewogIHZhciBkaWN0TGVuZ3RoID0gZGljdGlvbmFyeS5sZW5ndGg7CgogIHZhciBzOwogIHZhciBzdHIsIG47CiAgdmFyIHdyYXA7CiAgdmFyIGF2YWlsOwogIHZhciBuZXh0OwogIHZhciBpbnB1dDsKICB2YXIgdG1wRGljdDsKCiAgaWYgKCFzdHJtLyo9PSBaX05VTEwqLyB8fCAhc3RybS5zdGF0ZS8qPT0gWl9OVUxMKi8pIHsKICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICB9CgogIHMgPSBzdHJtLnN0YXRlOwogIHdyYXAgPSBzLndyYXA7CgogIGlmICh3cmFwID09PSAyIHx8ICh3cmFwID09PSAxICYmIHMuc3RhdHVzICE9PSBJTklUX1NUQVRFKSB8fCBzLmxvb2thaGVhZCkgewogICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogIH0KCiAgLyogd2hlbiB1c2luZyB6bGliIHdyYXBwZXJzLCBjb21wdXRlIEFkbGVyLTMyIGZvciBwcm92aWRlZCBkaWN0aW9uYXJ5ICovCiAgaWYgKHdyYXAgPT09IDEpIHsKICAgIC8qIGFkbGVyMzIoc3RybS0+YWRsZXIsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgpOyAqLwogICAgc3RybS5hZGxlciA9IGFkbGVyMzIoc3RybS5hZGxlciwgZGljdGlvbmFyeSwgZGljdExlbmd0aCwgMCk7CiAgfQoKICBzLndyYXAgPSAwOyAgIC8qIGF2b2lkIGNvbXB1dGluZyBBZGxlci0zMiBpbiByZWFkX2J1ZiAqLwoKICAvKiBpZiBkaWN0aW9uYXJ5IHdvdWxkIGZpbGwgd2luZG93LCBqdXN0IHJlcGxhY2UgdGhlIGhpc3RvcnkgKi8KICBpZiAoZGljdExlbmd0aCA+PSBzLndfc2l6ZSkgewogICAgaWYgKHdyYXAgPT09IDApIHsgICAgICAgICAgICAvKiBhbHJlYWR5IGVtcHR5IG90aGVyd2lzZSAqLwogICAgICAvKioqIENMRUFSX0hBU0gocyk7ICoqKi8KICAgICAgemVybyhzLmhlYWQpOyAvLyBGaWxsIHdpdGggTklMICg9IDApOwogICAgICBzLnN0cnN0YXJ0ID0gMDsKICAgICAgcy5ibG9ja19zdGFydCA9IDA7CiAgICAgIHMuaW5zZXJ0ID0gMDsKICAgIH0KICAgIC8qIHVzZSB0aGUgdGFpbCAqLwogICAgLy8gZGljdGlvbmFyeSA9IGRpY3Rpb25hcnkuc2xpY2UoZGljdExlbmd0aCAtIHMud19zaXplKTsKICAgIHRtcERpY3QgPSBuZXcgdXRpbHMuQnVmOChzLndfc2l6ZSk7CiAgICB1dGlscy5hcnJheVNldCh0bXBEaWN0LCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoIC0gcy53X3NpemUsIHMud19zaXplLCAwKTsKICAgIGRpY3Rpb25hcnkgPSB0bXBEaWN0OwogICAgZGljdExlbmd0aCA9IHMud19zaXplOwogIH0KICAvKiBpbnNlcnQgZGljdGlvbmFyeSBpbnRvIHdpbmRvdyBhbmQgaGFzaCAqLwogIGF2YWlsID0gc3RybS5hdmFpbF9pbjsKICBuZXh0ID0gc3RybS5uZXh0X2luOwogIGlucHV0ID0gc3RybS5pbnB1dDsKICBzdHJtLmF2YWlsX2luID0gZGljdExlbmd0aDsKICBzdHJtLm5leHRfaW4gPSAwOwogIHN0cm0uaW5wdXQgPSBkaWN0aW9uYXJ5OwogIGZpbGxfd2luZG93KHMpOwogIHdoaWxlIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHsKICAgIHN0ciA9IHMuc3Ryc3RhcnQ7CiAgICBuID0gcy5sb29rYWhlYWQgLSAoTUlOX01BVENIIC0gMSk7CiAgICBkbyB7CiAgICAgIC8qIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3RyICsgTUlOX01BVENILTFdKTsgKi8KICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbc3RyICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7CgogICAgICBzLnByZXZbc3RyICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdOwoKICAgICAgcy5oZWFkW3MuaW5zX2hdID0gc3RyOwogICAgICBzdHIrKzsKICAgIH0gd2hpbGUgKC0tbik7CiAgICBzLnN0cnN0YXJ0ID0gc3RyOwogICAgcy5sb29rYWhlYWQgPSBNSU5fTUFUQ0ggLSAxOwogICAgZmlsbF93aW5kb3cocyk7CiAgfQogIHMuc3Ryc3RhcnQgKz0gcy5sb29rYWhlYWQ7CiAgcy5ibG9ja19zdGFydCA9IHMuc3Ryc3RhcnQ7CiAgcy5pbnNlcnQgPSBzLmxvb2thaGVhZDsKICBzLmxvb2thaGVhZCA9IDA7CiAgcy5tYXRjaF9sZW5ndGggPSBzLnByZXZfbGVuZ3RoID0gTUlOX01BVENIIC0gMTsKICBzLm1hdGNoX2F2YWlsYWJsZSA9IDA7CiAgc3RybS5uZXh0X2luID0gbmV4dDsKICBzdHJtLmlucHV0ID0gaW5wdXQ7CiAgc3RybS5hdmFpbF9pbiA9IGF2YWlsOwogIHMud3JhcCA9IHdyYXA7CiAgcmV0dXJuIFpfT0s7Cn0KCgpleHBvcnRzLmRlZmxhdGVJbml0ID0gZGVmbGF0ZUluaXQ7CmV4cG9ydHMuZGVmbGF0ZUluaXQyID0gZGVmbGF0ZUluaXQyOwpleHBvcnRzLmRlZmxhdGVSZXNldCA9IGRlZmxhdGVSZXNldDsKZXhwb3J0cy5kZWZsYXRlUmVzZXRLZWVwID0gZGVmbGF0ZVJlc2V0S2VlcDsKZXhwb3J0cy5kZWZsYXRlU2V0SGVhZGVyID0gZGVmbGF0ZVNldEhlYWRlcjsKZXhwb3J0cy5kZWZsYXRlID0gZGVmbGF0ZTsKZXhwb3J0cy5kZWZsYXRlRW5kID0gZGVmbGF0ZUVuZDsKZXhwb3J0cy5kZWZsYXRlU2V0RGljdGlvbmFyeSA9IGRlZmxhdGVTZXREaWN0aW9uYXJ5OwpleHBvcnRzLmRlZmxhdGVJbmZvID0gJ3Bha28gZGVmbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdCknOwoKLyogTm90IGltcGxlbWVudGVkCmV4cG9ydHMuZGVmbGF0ZUJvdW5kID0gZGVmbGF0ZUJvdW5kOwpleHBvcnRzLmRlZmxhdGVDb3B5ID0gZGVmbGF0ZUNvcHk7CmV4cG9ydHMuZGVmbGF0ZVBhcmFtcyA9IGRlZmxhdGVQYXJhbXM7CmV4cG9ydHMuZGVmbGF0ZVBlbmRpbmcgPSBkZWZsYXRlUGVuZGluZzsKZXhwb3J0cy5kZWZsYXRlUHJpbWUgPSBkZWZsYXRlUHJpbWU7CmV4cG9ydHMuZGVmbGF0ZVR1bmUgPSBkZWZsYXRlVHVuZTsKKi8KCgovKioqLyB9KSwKLyogMTU1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW4KLy8KLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi8vCi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAovLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLy8KLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZQovLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQovLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgovLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgoKdmFyIHV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNCk7CgovKiBQdWJsaWMgY29uc3RhbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoKCi8vdmFyIFpfRklMVEVSRUQgICAgICAgICAgPSAxOwovL3ZhciBaX0hVRkZNQU5fT05MWSAgICAgID0gMjsKLy92YXIgWl9STEUgICAgICAgICAgICAgICA9IDM7CnZhciBaX0ZJWEVEICAgICAgICAgICAgICAgPSA0OwovL3ZhciBaX0RFRkFVTFRfU1RSQVRFR1kgID0gMDsKCi8qIFBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgZGF0YV90eXBlIGZpZWxkICh0aG91Z2ggc2VlIGluZmxhdGUoKSkgKi8KdmFyIFpfQklOQVJZICAgICAgICAgICAgICA9IDA7CnZhciBaX1RFWFQgICAgICAgICAgICAgICAgPSAxOwovL3ZhciBaX0FTQ0lJICAgICAgICAgICAgID0gMTsgLy8gPSBaX1RFWFQKdmFyIFpfVU5LTk9XTiAgICAgICAgICAgICA9IDI7CgovKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoKCmZ1bmN0aW9uIHplcm8oYnVmKSB7IHZhciBsZW4gPSBidWYubGVuZ3RoOyB3aGlsZSAoLS1sZW4gPj0gMCkgeyBidWZbbGVuXSA9IDA7IH0gfQoKLy8gRnJvbSB6dXRpbC5oCgp2YXIgU1RPUkVEX0JMT0NLID0gMDsKdmFyIFNUQVRJQ19UUkVFUyA9IDE7CnZhciBEWU5fVFJFRVMgICAgPSAyOwovKiBUaGUgdGhyZWUga2luZHMgb2YgYmxvY2sgdHlwZSAqLwoKdmFyIE1JTl9NQVRDSCAgICA9IDM7CnZhciBNQVhfTUFUQ0ggICAgPSAyNTg7Ci8qIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG1hdGNoIGxlbmd0aHMgKi8KCi8vIEZyb20gZGVmbGF0ZS5oCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBJbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS4KICovCgp2YXIgTEVOR1RIX0NPREVTICA9IDI5OwovKiBudW1iZXIgb2YgbGVuZ3RoIGNvZGVzLCBub3QgY291bnRpbmcgdGhlIHNwZWNpYWwgRU5EX0JMT0NLIGNvZGUgKi8KCnZhciBMSVRFUkFMUyAgICAgID0gMjU2OwovKiBudW1iZXIgb2YgbGl0ZXJhbCBieXRlcyAwLi4yNTUgKi8KCnZhciBMX0NPREVTICAgICAgID0gTElURVJBTFMgKyAxICsgTEVOR1RIX0NPREVTOwovKiBudW1iZXIgb2YgTGl0ZXJhbCBvciBMZW5ndGggY29kZXMsIGluY2x1ZGluZyB0aGUgRU5EX0JMT0NLIGNvZGUgKi8KCnZhciBEX0NPREVTICAgICAgID0gMzA7Ci8qIG51bWJlciBvZiBkaXN0YW5jZSBjb2RlcyAqLwoKdmFyIEJMX0NPREVTICAgICAgPSAxOTsKLyogbnVtYmVyIG9mIGNvZGVzIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGJpdCBsZW5ndGhzICovCgp2YXIgSEVBUF9TSVpFICAgICA9IDIgKiBMX0NPREVTICsgMTsKLyogbWF4aW11bSBoZWFwIHNpemUgKi8KCnZhciBNQVhfQklUUyAgICAgID0gMTU7Ci8qIEFsbCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JJVFMgYml0cyAqLwoKdmFyIEJ1Zl9zaXplICAgICAgPSAxNjsKLyogc2l6ZSBvZiBiaXQgYnVmZmVyIGluIGJpX2J1ZiAqLwoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBDb25zdGFudHMKICovCgp2YXIgTUFYX0JMX0JJVFMgPSA3OwovKiBCaXQgbGVuZ3RoIGNvZGVzIG11c3Qgbm90IGV4Y2VlZCBNQVhfQkxfQklUUyBiaXRzICovCgp2YXIgRU5EX0JMT0NLICAgPSAyNTY7Ci8qIGVuZCBvZiBibG9jayBsaXRlcmFsIGNvZGUgKi8KCnZhciBSRVBfM182ICAgICA9IDE2OwovKiByZXBlYXQgcHJldmlvdXMgYml0IGxlbmd0aCAzLTYgdGltZXMgKDIgYml0cyBvZiByZXBlYXQgY291bnQpICovCgp2YXIgUkVQWl8zXzEwICAgPSAxNzsKLyogcmVwZWF0IGEgemVybyBsZW5ndGggMy0xMCB0aW1lcyAgKDMgYml0cyBvZiByZXBlYXQgY291bnQpICovCgp2YXIgUkVQWl8xMV8xMzggPSAxODsKLyogcmVwZWF0IGEgemVybyBsZW5ndGggMTEtMTM4IHRpbWVzICAoNyBiaXRzIG9mIHJlcGVhdCBjb3VudCkgKi8KCi8qIGVzbGludC1kaXNhYmxlIGNvbW1hLXNwYWNpbmcsYXJyYXktYnJhY2tldC1zcGFjaW5nICovCnZhciBleHRyYV9sYml0cyA9ICAgLyogZXh0cmEgYml0cyBmb3IgZWFjaCBsZW5ndGggY29kZSAqLwogIFswLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1LDUsNSw1LDBdOwoKdmFyIGV4dHJhX2RiaXRzID0gICAvKiBleHRyYSBiaXRzIGZvciBlYWNoIGRpc3RhbmNlIGNvZGUgKi8KICBbMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxM107Cgp2YXIgZXh0cmFfYmxiaXRzID0gIC8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggYml0IGxlbmd0aCBjb2RlICovCiAgWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwzLDddOwoKdmFyIGJsX29yZGVyID0KICBbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV07Ci8qIGVzbGludC1lbmFibGUgY29tbWEtc3BhY2luZyxhcnJheS1icmFja2V0LXNwYWNpbmcgKi8KCi8qIFRoZSBsZW5ndGhzIG9mIHRoZSBiaXQgbGVuZ3RoIGNvZGVzIGFyZSBzZW50IGluIG9yZGVyIG9mIGRlY3JlYXNpbmcKICogcHJvYmFiaWxpdHksIHRvIGF2b2lkIHRyYW5zbWl0dGluZyB0aGUgbGVuZ3RocyBmb3IgdW51c2VkIGJpdCBsZW5ndGggY29kZXMuCiAqLwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIExvY2FsIGRhdGEuIFRoZXNlIGFyZSBpbml0aWFsaXplZCBvbmx5IG9uY2UuCiAqLwoKLy8gV2UgcHJlLWZpbGwgYXJyYXlzIHdpdGggMCB0byBhdm9pZCB1bmluaXRpYWxpemVkIGdhcHMKCnZhciBESVNUX0NPREVfTEVOID0gNTEyOyAvKiBzZWUgZGVmaW5pdGlvbiBvZiBhcnJheSBkaXN0X2NvZGUgYmVsb3cgKi8KCi8vICEhISEgVXNlIGZsYXQgYXJyYXkgaW5zdGVhZCBvZiBzdHJ1Y3R1cmUsIEZyZXEgPSBpKjIsIExlbiA9IGkqMisxCnZhciBzdGF0aWNfbHRyZWUgID0gbmV3IEFycmF5KChMX0NPREVTICsgMikgKiAyKTsKemVybyhzdGF0aWNfbHRyZWUpOwovKiBUaGUgc3RhdGljIGxpdGVyYWwgdHJlZS4gU2luY2UgdGhlIGJpdCBsZW5ndGhzIGFyZSBpbXBvc2VkLCB0aGVyZSBpcyBubwogKiBuZWVkIGZvciB0aGUgTF9DT0RFUyBleHRyYSBjb2RlcyB1c2VkIGR1cmluZyBoZWFwIGNvbnN0cnVjdGlvbi4gSG93ZXZlcgogKiBUaGUgY29kZXMgMjg2IGFuZCAyODcgYXJlIG5lZWRlZCB0byBidWlsZCBhIGNhbm9uaWNhbCB0cmVlIChzZWUgX3RyX2luaXQKICogYmVsb3cpLgogKi8KCnZhciBzdGF0aWNfZHRyZWUgID0gbmV3IEFycmF5KERfQ09ERVMgKiAyKTsKemVybyhzdGF0aWNfZHRyZWUpOwovKiBUaGUgc3RhdGljIGRpc3RhbmNlIHRyZWUuIChBY3R1YWxseSBhIHRyaXZpYWwgdHJlZSBzaW5jZSBhbGwgY29kZXMgdXNlCiAqIDUgYml0cy4pCiAqLwoKdmFyIF9kaXN0X2NvZGUgICAgPSBuZXcgQXJyYXkoRElTVF9DT0RFX0xFTik7Cnplcm8oX2Rpc3RfY29kZSk7Ci8qIERpc3RhbmNlIGNvZGVzLiBUaGUgZmlyc3QgMjU2IHZhbHVlcyBjb3JyZXNwb25kIHRvIHRoZSBkaXN0YW5jZXMKICogMyAuLiAyNTgsIHRoZSBsYXN0IDI1NiB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgdG9wIDggYml0cyBvZgogKiB0aGUgMTUgYml0IGRpc3RhbmNlcy4KICovCgp2YXIgX2xlbmd0aF9jb2RlICA9IG5ldyBBcnJheShNQVhfTUFUQ0ggLSBNSU5fTUFUQ0ggKyAxKTsKemVybyhfbGVuZ3RoX2NvZGUpOwovKiBsZW5ndGggY29kZSBmb3IgZWFjaCBub3JtYWxpemVkIG1hdGNoIGxlbmd0aCAoMCA9PSBNSU5fTUFUQ0gpICovCgp2YXIgYmFzZV9sZW5ndGggICA9IG5ldyBBcnJheShMRU5HVEhfQ09ERVMpOwp6ZXJvKGJhc2VfbGVuZ3RoKTsKLyogRmlyc3Qgbm9ybWFsaXplZCBsZW5ndGggZm9yIGVhY2ggY29kZSAoMCA9IE1JTl9NQVRDSCkgKi8KCnZhciBiYXNlX2Rpc3QgICAgID0gbmV3IEFycmF5KERfQ09ERVMpOwp6ZXJvKGJhc2VfZGlzdCk7Ci8qIEZpcnN0IG5vcm1hbGl6ZWQgZGlzdGFuY2UgZm9yIGVhY2ggY29kZSAoMCA9IGRpc3RhbmNlIG9mIDEpICovCgoKZnVuY3Rpb24gU3RhdGljVHJlZURlc2Moc3RhdGljX3RyZWUsIGV4dHJhX2JpdHMsIGV4dHJhX2Jhc2UsIGVsZW1zLCBtYXhfbGVuZ3RoKSB7CgogIHRoaXMuc3RhdGljX3RyZWUgID0gc3RhdGljX3RyZWU7ICAvKiBzdGF0aWMgdHJlZSBvciBOVUxMICovCiAgdGhpcy5leHRyYV9iaXRzICAgPSBleHRyYV9iaXRzOyAgIC8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggY29kZSBvciBOVUxMICovCiAgdGhpcy5leHRyYV9iYXNlICAgPSBleHRyYV9iYXNlOyAgIC8qIGJhc2UgaW5kZXggZm9yIGV4dHJhX2JpdHMgKi8KICB0aGlzLmVsZW1zICAgICAgICA9IGVsZW1zOyAgICAgICAgLyogbWF4IG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdHJlZSAqLwogIHRoaXMubWF4X2xlbmd0aCAgID0gbWF4X2xlbmd0aDsgICAvKiBtYXggYml0IGxlbmd0aCBmb3IgdGhlIGNvZGVzICovCgogIC8vIHNob3cgaWYgYHN0YXRpY190cmVlYCBoYXMgZGF0YSBvciBkdW1teSAtIG5lZWRlZCBmb3IgbW9ub21vcnBoaWMgb2JqZWN0cwogIHRoaXMuaGFzX3N0cmVlICAgID0gc3RhdGljX3RyZWUgJiYgc3RhdGljX3RyZWUubGVuZ3RoOwp9CgoKdmFyIHN0YXRpY19sX2Rlc2M7CnZhciBzdGF0aWNfZF9kZXNjOwp2YXIgc3RhdGljX2JsX2Rlc2M7CgoKZnVuY3Rpb24gVHJlZURlc2MoZHluX3RyZWUsIHN0YXRfZGVzYykgewogIHRoaXMuZHluX3RyZWUgPSBkeW5fdHJlZTsgICAgIC8qIHRoZSBkeW5hbWljIHRyZWUgKi8KICB0aGlzLm1heF9jb2RlID0gMDsgICAgICAgICAgICAvKiBsYXJnZXN0IGNvZGUgd2l0aCBub24gemVybyBmcmVxdWVuY3kgKi8KICB0aGlzLnN0YXRfZGVzYyA9IHN0YXRfZGVzYzsgICAvKiB0aGUgY29ycmVzcG9uZGluZyBzdGF0aWMgdHJlZSAqLwp9CgoKCmZ1bmN0aW9uIGRfY29kZShkaXN0KSB7CiAgcmV0dXJuIGRpc3QgPCAyNTYgPyBfZGlzdF9jb2RlW2Rpc3RdIDogX2Rpc3RfY29kZVsyNTYgKyAoZGlzdCA+Pj4gNyldOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIE91dHB1dCBhIHNob3J0IExTQiBmaXJzdCBvbiB0aGUgc3RyZWFtLgogKiBJTiBhc3NlcnRpb246IHRoZXJlIGlzIGVub3VnaCByb29tIGluIHBlbmRpbmdCdWYuCiAqLwpmdW5jdGlvbiBwdXRfc2hvcnQocywgdykgewovLyAgICBwdXRfYnl0ZShzLCAodWNoKSgodykgJiAweGZmKSk7Ci8vICAgIHB1dF9ieXRlKHMsICh1Y2gpKCh1c2gpKHcpID4+IDgpKTsKICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9ICh3KSAmIDB4ZmY7CiAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSAodyA+Pj4gOCkgJiAweGZmOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIFNlbmQgYSB2YWx1ZSBvbiBhIGdpdmVuIG51bWJlciBvZiBiaXRzLgogKiBJTiBhc3NlcnRpb246IGxlbmd0aCA8PSAxNiBhbmQgdmFsdWUgZml0cyBpbiBsZW5ndGggYml0cy4KICovCmZ1bmN0aW9uIHNlbmRfYml0cyhzLCB2YWx1ZSwgbGVuZ3RoKSB7CiAgaWYgKHMuYmlfdmFsaWQgPiAoQnVmX3NpemUgLSBsZW5ndGgpKSB7CiAgICBzLmJpX2J1ZiB8PSAodmFsdWUgPDwgcy5iaV92YWxpZCkgJiAweGZmZmY7CiAgICBwdXRfc2hvcnQocywgcy5iaV9idWYpOwogICAgcy5iaV9idWYgPSB2YWx1ZSA+PiAoQnVmX3NpemUgLSBzLmJpX3ZhbGlkKTsKICAgIHMuYmlfdmFsaWQgKz0gbGVuZ3RoIC0gQnVmX3NpemU7CiAgfSBlbHNlIHsKICAgIHMuYmlfYnVmIHw9ICh2YWx1ZSA8PCBzLmJpX3ZhbGlkKSAmIDB4ZmZmZjsKICAgIHMuYmlfdmFsaWQgKz0gbGVuZ3RoOwogIH0KfQoKCmZ1bmN0aW9uIHNlbmRfY29kZShzLCBjLCB0cmVlKSB7CiAgc2VuZF9iaXRzKHMsIHRyZWVbYyAqIDJdLyouQ29kZSovLCB0cmVlW2MgKiAyICsgMV0vKi5MZW4qLyk7Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogUmV2ZXJzZSB0aGUgZmlyc3QgbGVuIGJpdHMgb2YgYSBjb2RlLCB1c2luZyBzdHJhaWdodGZvcndhcmQgY29kZSAoYSBmYXN0ZXIKICogbWV0aG9kIHdvdWxkIHVzZSBhIHRhYmxlKQogKiBJTiBhc3NlcnRpb246IDEgPD0gbGVuIDw9IDE1CiAqLwpmdW5jdGlvbiBiaV9yZXZlcnNlKGNvZGUsIGxlbikgewogIHZhciByZXMgPSAwOwogIGRvIHsKICAgIHJlcyB8PSBjb2RlICYgMTsKICAgIGNvZGUgPj4+PSAxOwogICAgcmVzIDw8PSAxOwogIH0gd2hpbGUgKC0tbGVuID4gMCk7CiAgcmV0dXJuIHJlcyA+Pj4gMTsKfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBGbHVzaCB0aGUgYml0IGJ1ZmZlciwga2VlcGluZyBhdCBtb3N0IDcgYml0cyBpbiBpdC4KICovCmZ1bmN0aW9uIGJpX2ZsdXNoKHMpIHsKICBpZiAocy5iaV92YWxpZCA9PT0gMTYpIHsKICAgIHB1dF9zaG9ydChzLCBzLmJpX2J1Zik7CiAgICBzLmJpX2J1ZiA9IDA7CiAgICBzLmJpX3ZhbGlkID0gMDsKCiAgfSBlbHNlIGlmIChzLmJpX3ZhbGlkID49IDgpIHsKICAgIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gcy5iaV9idWYgJiAweGZmOwogICAgcy5iaV9idWYgPj49IDg7CiAgICBzLmJpX3ZhbGlkIC09IDg7CiAgfQp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIENvbXB1dGUgdGhlIG9wdGltYWwgYml0IGxlbmd0aHMgZm9yIGEgdHJlZSBhbmQgdXBkYXRlIHRoZSB0b3RhbCBiaXQgbGVuZ3RoCiAqIGZvciB0aGUgY3VycmVudCBibG9jay4KICogSU4gYXNzZXJ0aW9uOiB0aGUgZmllbGRzIGZyZXEgYW5kIGRhZCBhcmUgc2V0LCBoZWFwW2hlYXBfbWF4XSBhbmQKICogICAgYWJvdmUgYXJlIHRoZSB0cmVlIG5vZGVzIHNvcnRlZCBieSBpbmNyZWFzaW5nIGZyZXF1ZW5jeS4KICogT1VUIGFzc2VydGlvbnM6IHRoZSBmaWVsZCBsZW4gaXMgc2V0IHRvIHRoZSBvcHRpbWFsIGJpdCBsZW5ndGgsIHRoZQogKiAgICAgYXJyYXkgYmxfY291bnQgY29udGFpbnMgdGhlIGZyZXF1ZW5jaWVzIGZvciBlYWNoIGJpdCBsZW5ndGguCiAqICAgICBUaGUgbGVuZ3RoIG9wdF9sZW4gaXMgdXBkYXRlZDsgc3RhdGljX2xlbiBpcyBhbHNvIHVwZGF0ZWQgaWYgc3RyZWUgaXMKICogICAgIG5vdCBudWxsLgogKi8KZnVuY3Rpb24gZ2VuX2JpdGxlbihzLCBkZXNjKQovLyAgICBkZWZsYXRlX3N0YXRlICpzOwovLyAgICB0cmVlX2Rlc2MgKmRlc2M7ICAgIC8qIHRoZSB0cmVlIGRlc2NyaXB0b3IgKi8KewogIHZhciB0cmVlICAgICAgICAgICAgPSBkZXNjLmR5bl90cmVlOwogIHZhciBtYXhfY29kZSAgICAgICAgPSBkZXNjLm1heF9jb2RlOwogIHZhciBzdHJlZSAgICAgICAgICAgPSBkZXNjLnN0YXRfZGVzYy5zdGF0aWNfdHJlZTsKICB2YXIgaGFzX3N0cmVlICAgICAgID0gZGVzYy5zdGF0X2Rlc2MuaGFzX3N0cmVlOwogIHZhciBleHRyYSAgICAgICAgICAgPSBkZXNjLnN0YXRfZGVzYy5leHRyYV9iaXRzOwogIHZhciBiYXNlICAgICAgICAgICAgPSBkZXNjLnN0YXRfZGVzYy5leHRyYV9iYXNlOwogIHZhciBtYXhfbGVuZ3RoICAgICAgPSBkZXNjLnN0YXRfZGVzYy5tYXhfbGVuZ3RoOwogIHZhciBoOyAgICAgICAgICAgICAgLyogaGVhcCBpbmRleCAqLwogIHZhciBuLCBtOyAgICAgICAgICAgLyogaXRlcmF0ZSBvdmVyIHRoZSB0cmVlIGVsZW1lbnRzICovCiAgdmFyIGJpdHM7ICAgICAgICAgICAvKiBiaXQgbGVuZ3RoICovCiAgdmFyIHhiaXRzOyAgICAgICAgICAvKiBleHRyYSBiaXRzICovCiAgdmFyIGY7ICAgICAgICAgICAgICAvKiBmcmVxdWVuY3kgKi8KICB2YXIgb3ZlcmZsb3cgPSAwOyAgIC8qIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGJpdCBsZW5ndGggdG9vIGxhcmdlICovCgogIGZvciAoYml0cyA9IDA7IGJpdHMgPD0gTUFYX0JJVFM7IGJpdHMrKykgewogICAgcy5ibF9jb3VudFtiaXRzXSA9IDA7CiAgfQoKICAvKiBJbiBhIGZpcnN0IHBhc3MsIGNvbXB1dGUgdGhlIG9wdGltYWwgYml0IGxlbmd0aHMgKHdoaWNoIG1heQogICAqIG92ZXJmbG93IGluIHRoZSBjYXNlIG9mIHRoZSBiaXQgbGVuZ3RoIHRyZWUpLgogICAqLwogIHRyZWVbcy5oZWFwW3MuaGVhcF9tYXhdICogMiArIDFdLyouTGVuKi8gPSAwOyAvKiByb290IG9mIHRoZSBoZWFwICovCgogIGZvciAoaCA9IHMuaGVhcF9tYXggKyAxOyBoIDwgSEVBUF9TSVpFOyBoKyspIHsKICAgIG4gPSBzLmhlYXBbaF07CiAgICBiaXRzID0gdHJlZVt0cmVlW24gKiAyICsgMV0vKi5EYWQqLyAqIDIgKyAxXS8qLkxlbiovICsgMTsKICAgIGlmIChiaXRzID4gbWF4X2xlbmd0aCkgewogICAgICBiaXRzID0gbWF4X2xlbmd0aDsKICAgICAgb3ZlcmZsb3crKzsKICAgIH0KICAgIHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gYml0czsKICAgIC8qIFdlIG92ZXJ3cml0ZSB0cmVlW25dLkRhZCB3aGljaCBpcyBubyBsb25nZXIgbmVlZGVkICovCgogICAgaWYgKG4gPiBtYXhfY29kZSkgeyBjb250aW51ZTsgfSAvKiBub3QgYSBsZWFmIG5vZGUgKi8KCiAgICBzLmJsX2NvdW50W2JpdHNdKys7CiAgICB4Yml0cyA9IDA7CiAgICBpZiAobiA+PSBiYXNlKSB7CiAgICAgIHhiaXRzID0gZXh0cmFbbiAtIGJhc2VdOwogICAgfQogICAgZiA9IHRyZWVbbiAqIDJdLyouRnJlcSovOwogICAgcy5vcHRfbGVuICs9IGYgKiAoYml0cyArIHhiaXRzKTsKICAgIGlmIChoYXNfc3RyZWUpIHsKICAgICAgcy5zdGF0aWNfbGVuICs9IGYgKiAoc3RyZWVbbiAqIDIgKyAxXS8qLkxlbiovICsgeGJpdHMpOwogICAgfQogIH0KICBpZiAob3ZlcmZsb3cgPT09IDApIHsgcmV0dXJuOyB9CgogIC8vIFRyYWNlKChzdGRlcnIsIlxuYml0IGxlbmd0aCBvdmVyZmxvd1xuIikpOwogIC8qIFRoaXMgaGFwcGVucyBmb3IgZXhhbXBsZSBvbiBvYmoyIGFuZCBwaWMgb2YgdGhlIENhbGdhcnkgY29ycHVzICovCgogIC8qIEZpbmQgdGhlIGZpcnN0IGJpdCBsZW5ndGggd2hpY2ggY291bGQgaW5jcmVhc2U6ICovCiAgZG8gewogICAgYml0cyA9IG1heF9sZW5ndGggLSAxOwogICAgd2hpbGUgKHMuYmxfY291bnRbYml0c10gPT09IDApIHsgYml0cy0tOyB9CiAgICBzLmJsX2NvdW50W2JpdHNdLS07ICAgICAgLyogbW92ZSBvbmUgbGVhZiBkb3duIHRoZSB0cmVlICovCiAgICBzLmJsX2NvdW50W2JpdHMgKyAxXSArPSAyOyAvKiBtb3ZlIG9uZSBvdmVyZmxvdyBpdGVtIGFzIGl0cyBicm90aGVyICovCiAgICBzLmJsX2NvdW50W21heF9sZW5ndGhdLS07CiAgICAvKiBUaGUgYnJvdGhlciBvZiB0aGUgb3ZlcmZsb3cgaXRlbSBhbHNvIG1vdmVzIG9uZSBzdGVwIHVwLAogICAgICogYnV0IHRoaXMgZG9lcyBub3QgYWZmZWN0IGJsX2NvdW50W21heF9sZW5ndGhdCiAgICAgKi8KICAgIG92ZXJmbG93IC09IDI7CiAgfSB3aGlsZSAob3ZlcmZsb3cgPiAwKTsKCiAgLyogTm93IHJlY29tcHV0ZSBhbGwgYml0IGxlbmd0aHMsIHNjYW5uaW5nIGluIGluY3JlYXNpbmcgZnJlcXVlbmN5LgogICAqIGggaXMgc3RpbGwgZXF1YWwgdG8gSEVBUF9TSVpFLiAoSXQgaXMgc2ltcGxlciB0byByZWNvbnN0cnVjdCBhbGwKICAgKiBsZW5ndGhzIGluc3RlYWQgb2YgZml4aW5nIG9ubHkgdGhlIHdyb25nIG9uZXMuIFRoaXMgaWRlYSBpcyB0YWtlbgogICAqIGZyb20gJ2FyJyB3cml0dGVuIGJ5IEhhcnVoaWtvIE9rdW11cmEuKQogICAqLwogIGZvciAoYml0cyA9IG1heF9sZW5ndGg7IGJpdHMgIT09IDA7IGJpdHMtLSkgewogICAgbiA9IHMuYmxfY291bnRbYml0c107CiAgICB3aGlsZSAobiAhPT0gMCkgewogICAgICBtID0gcy5oZWFwWy0taF07CiAgICAgIGlmIChtID4gbWF4X2NvZGUpIHsgY29udGludWU7IH0KICAgICAgaWYgKHRyZWVbbSAqIDIgKyAxXS8qLkxlbiovICE9PSBiaXRzKSB7CiAgICAgICAgLy8gVHJhY2UoKHN0ZGVyciwiY29kZSAlZCBiaXRzICVkLT4lZFxuIiwgbSwgdHJlZVttXS5MZW4sIGJpdHMpKTsKICAgICAgICBzLm9wdF9sZW4gKz0gKGJpdHMgLSB0cmVlW20gKiAyICsgMV0vKi5MZW4qLykgKiB0cmVlW20gKiAyXS8qLkZyZXEqLzsKICAgICAgICB0cmVlW20gKiAyICsgMV0vKi5MZW4qLyA9IGJpdHM7CiAgICAgIH0KICAgICAgbi0tOwogICAgfQogIH0KfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBHZW5lcmF0ZSB0aGUgY29kZXMgZm9yIGEgZ2l2ZW4gdHJlZSBhbmQgYml0IGNvdW50cyAod2hpY2ggbmVlZCBub3QgYmUKICogb3B0aW1hbCkuCiAqIElOIGFzc2VydGlvbjogdGhlIGFycmF5IGJsX2NvdW50IGNvbnRhaW5zIHRoZSBiaXQgbGVuZ3RoIHN0YXRpc3RpY3MgZm9yCiAqIHRoZSBnaXZlbiB0cmVlIGFuZCB0aGUgZmllbGQgbGVuIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMuCiAqIE9VVCBhc3NlcnRpb246IHRoZSBmaWVsZCBjb2RlIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMgb2Ygbm9uCiAqICAgICB6ZXJvIGNvZGUgbGVuZ3RoLgogKi8KZnVuY3Rpb24gZ2VuX2NvZGVzKHRyZWUsIG1heF9jb2RlLCBibF9jb3VudCkKLy8gICAgY3RfZGF0YSAqdHJlZTsgICAgICAgICAgICAgLyogdGhlIHRyZWUgdG8gZGVjb3JhdGUgKi8KLy8gICAgaW50IG1heF9jb2RlOyAgICAgICAgICAgICAgLyogbGFyZ2VzdCBjb2RlIHdpdGggbm9uIHplcm8gZnJlcXVlbmN5ICovCi8vICAgIHVzaGYgKmJsX2NvdW50OyAgICAgICAgICAgIC8qIG51bWJlciBvZiBjb2RlcyBhdCBlYWNoIGJpdCBsZW5ndGggKi8KewogIHZhciBuZXh0X2NvZGUgPSBuZXcgQXJyYXkoTUFYX0JJVFMgKyAxKTsgLyogbmV4dCBjb2RlIHZhbHVlIGZvciBlYWNoIGJpdCBsZW5ndGggKi8KICB2YXIgY29kZSA9IDA7ICAgICAgICAgICAgICAvKiBydW5uaW5nIGNvZGUgdmFsdWUgKi8KICB2YXIgYml0czsgICAgICAgICAgICAgICAgICAvKiBiaXQgaW5kZXggKi8KICB2YXIgbjsgICAgICAgICAgICAgICAgICAgICAvKiBjb2RlIGluZGV4ICovCgogIC8qIFRoZSBkaXN0cmlidXRpb24gY291bnRzIGFyZSBmaXJzdCB1c2VkIHRvIGdlbmVyYXRlIHRoZSBjb2RlIHZhbHVlcwogICAqIHdpdGhvdXQgYml0IHJldmVyc2FsLgogICAqLwogIGZvciAoYml0cyA9IDE7IGJpdHMgPD0gTUFYX0JJVFM7IGJpdHMrKykgewogICAgbmV4dF9jb2RlW2JpdHNdID0gY29kZSA9IChjb2RlICsgYmxfY291bnRbYml0cyAtIDFdKSA8PCAxOwogIH0KICAvKiBDaGVjayB0aGF0IHRoZSBiaXQgY291bnRzIGluIGJsX2NvdW50IGFyZSBjb25zaXN0ZW50LiBUaGUgbGFzdCBjb2RlCiAgICogbXVzdCBiZSBhbGwgb25lcy4KICAgKi8KICAvL0Fzc2VydCAoY29kZSArIGJsX2NvdW50W01BWF9CSVRTXS0xID09ICgxPDxNQVhfQklUUyktMSwKICAvLyAgICAgICAgImluY29uc2lzdGVudCBiaXQgY291bnRzIik7CiAgLy9UcmFjZXYoKHN0ZGVyciwiXG5nZW5fY29kZXM6IG1heF9jb2RlICVkICIsIG1heF9jb2RlKSk7CgogIGZvciAobiA9IDA7ICBuIDw9IG1heF9jb2RlOyBuKyspIHsKICAgIHZhciBsZW4gPSB0cmVlW24gKiAyICsgMV0vKi5MZW4qLzsKICAgIGlmIChsZW4gPT09IDApIHsgY29udGludWU7IH0KICAgIC8qIE5vdyByZXZlcnNlIHRoZSBiaXRzICovCiAgICB0cmVlW24gKiAyXS8qLkNvZGUqLyA9IGJpX3JldmVyc2UobmV4dF9jb2RlW2xlbl0rKywgbGVuKTsKCiAgICAvL1RyYWNlY3YodHJlZSAhPSBzdGF0aWNfbHRyZWUsIChzdGRlcnIsIlxubiAlM2QgJWMgbCAlMmQgYyAlNHggKCV4KSAiLAogICAgLy8gICAgIG4sIChpc2dyYXBoKG4pID8gbiA6ICcgJyksIGxlbiwgdHJlZVtuXS5Db2RlLCBuZXh0X2NvZGVbbGVuXS0xKSk7CiAgfQp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIEluaXRpYWxpemUgdGhlIHZhcmlvdXMgJ2NvbnN0YW50JyB0YWJsZXMuCiAqLwpmdW5jdGlvbiB0cl9zdGF0aWNfaW5pdCgpIHsKICB2YXIgbjsgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgdHJlZSBlbGVtZW50cyAqLwogIHZhciBiaXRzOyAgICAgLyogYml0IGNvdW50ZXIgKi8KICB2YXIgbGVuZ3RoOyAgIC8qIGxlbmd0aCB2YWx1ZSAqLwogIHZhciBjb2RlOyAgICAgLyogY29kZSB2YWx1ZSAqLwogIHZhciBkaXN0OyAgICAgLyogZGlzdGFuY2UgaW5kZXggKi8KICB2YXIgYmxfY291bnQgPSBuZXcgQXJyYXkoTUFYX0JJVFMgKyAxKTsKICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoIGZvciBhbiBvcHRpbWFsIHRyZWUgKi8KCiAgLy8gZG8gY2hlY2sgaW4gX3RyX2luaXQoKQogIC8vaWYgKHN0YXRpY19pbml0X2RvbmUpIHJldHVybjsKCiAgLyogRm9yIHNvbWUgZW1iZWRkZWQgdGFyZ2V0cywgZ2xvYmFsIHZhcmlhYmxlcyBhcmUgbm90IGluaXRpYWxpemVkOiAqLwovKiNpZmRlZiBOT19JTklUX0dMT0JBTF9QT0lOVEVSUwogIHN0YXRpY19sX2Rlc2Muc3RhdGljX3RyZWUgPSBzdGF0aWNfbHRyZWU7CiAgc3RhdGljX2xfZGVzYy5leHRyYV9iaXRzID0gZXh0cmFfbGJpdHM7CiAgc3RhdGljX2RfZGVzYy5zdGF0aWNfdHJlZSA9IHN0YXRpY19kdHJlZTsKICBzdGF0aWNfZF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9kYml0czsKICBzdGF0aWNfYmxfZGVzYy5leHRyYV9iaXRzID0gZXh0cmFfYmxiaXRzOwojZW5kaWYqLwoKICAvKiBJbml0aWFsaXplIHRoZSBtYXBwaW5nIGxlbmd0aCAoMC4uMjU1KSAtPiBsZW5ndGggY29kZSAoMC4uMjgpICovCiAgbGVuZ3RoID0gMDsKICBmb3IgKGNvZGUgPSAwOyBjb2RlIDwgTEVOR1RIX0NPREVTIC0gMTsgY29kZSsrKSB7CiAgICBiYXNlX2xlbmd0aFtjb2RlXSA9IGxlbmd0aDsKICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCBleHRyYV9sYml0c1tjb2RlXSk7IG4rKykgewogICAgICBfbGVuZ3RoX2NvZGVbbGVuZ3RoKytdID0gY29kZTsKICAgIH0KICB9CiAgLy9Bc3NlcnQgKGxlbmd0aCA9PSAyNTYsICJ0cl9zdGF0aWNfaW5pdDogbGVuZ3RoICE9IDI1NiIpOwogIC8qIE5vdGUgdGhhdCB0aGUgbGVuZ3RoIDI1NSAobWF0Y2ggbGVuZ3RoIDI1OCkgY2FuIGJlIHJlcHJlc2VudGVkCiAgICogaW4gdHdvIGRpZmZlcmVudCB3YXlzOiBjb2RlIDI4NCArIDUgYml0cyBvciBjb2RlIDI4NSwgc28gd2UKICAgKiBvdmVyd3JpdGUgbGVuZ3RoX2NvZGVbMjU1XSB0byB1c2UgdGhlIGJlc3QgZW5jb2Rpbmc6CiAgICovCiAgX2xlbmd0aF9jb2RlW2xlbmd0aCAtIDFdID0gY29kZTsKCiAgLyogSW5pdGlhbGl6ZSB0aGUgbWFwcGluZyBkaXN0ICgwLi4zMkspIC0+IGRpc3QgY29kZSAoMC4uMjkpICovCiAgZGlzdCA9IDA7CiAgZm9yIChjb2RlID0gMDsgY29kZSA8IDE2OyBjb2RlKyspIHsKICAgIGJhc2VfZGlzdFtjb2RlXSA9IGRpc3Q7CiAgICBmb3IgKG4gPSAwOyBuIDwgKDEgPDwgZXh0cmFfZGJpdHNbY29kZV0pOyBuKyspIHsKICAgICAgX2Rpc3RfY29kZVtkaXN0KytdID0gY29kZTsKICAgIH0KICB9CiAgLy9Bc3NlcnQgKGRpc3QgPT0gMjU2LCAidHJfc3RhdGljX2luaXQ6IGRpc3QgIT0gMjU2Iik7CiAgZGlzdCA+Pj0gNzsgLyogZnJvbSBub3cgb24sIGFsbCBkaXN0YW5jZXMgYXJlIGRpdmlkZWQgYnkgMTI4ICovCiAgZm9yICg7IGNvZGUgPCBEX0NPREVTOyBjb2RlKyspIHsKICAgIGJhc2VfZGlzdFtjb2RlXSA9IGRpc3QgPDwgNzsKICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCAoZXh0cmFfZGJpdHNbY29kZV0gLSA3KSk7IG4rKykgewogICAgICBfZGlzdF9jb2RlWzI1NiArIGRpc3QrK10gPSBjb2RlOwogICAgfQogIH0KICAvL0Fzc2VydCAoZGlzdCA9PSAyNTYsICJ0cl9zdGF0aWNfaW5pdDogMjU2K2Rpc3QgIT0gNTEyIik7CgogIC8qIENvbnN0cnVjdCB0aGUgY29kZXMgb2YgdGhlIHN0YXRpYyBsaXRlcmFsIHRyZWUgKi8KICBmb3IgKGJpdHMgPSAwOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHsKICAgIGJsX2NvdW50W2JpdHNdID0gMDsKICB9CgogIG4gPSAwOwogIHdoaWxlIChuIDw9IDE0MykgewogICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDg7CiAgICBuKys7CiAgICBibF9jb3VudFs4XSsrOwogIH0KICB3aGlsZSAobiA8PSAyNTUpIHsKICAgIHN0YXRpY19sdHJlZVtuICogMiArIDFdLyouTGVuKi8gPSA5OwogICAgbisrOwogICAgYmxfY291bnRbOV0rKzsKICB9CiAgd2hpbGUgKG4gPD0gMjc5KSB7CiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gNzsKICAgIG4rKzsKICAgIGJsX2NvdW50WzddKys7CiAgfQogIHdoaWxlIChuIDw9IDI4NykgewogICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDg7CiAgICBuKys7CiAgICBibF9jb3VudFs4XSsrOwogIH0KICAvKiBDb2RlcyAyODYgYW5kIDI4NyBkbyBub3QgZXhpc3QsIGJ1dCB3ZSBtdXN0IGluY2x1ZGUgdGhlbSBpbiB0aGUKICAgKiB0cmVlIGNvbnN0cnVjdGlvbiB0byBnZXQgYSBjYW5vbmljYWwgSHVmZm1hbiB0cmVlIChsb25nZXN0IGNvZGUKICAgKiBhbGwgb25lcykKICAgKi8KICBnZW5fY29kZXMoc3RhdGljX2x0cmVlLCBMX0NPREVTICsgMSwgYmxfY291bnQpOwoKICAvKiBUaGUgc3RhdGljIGRpc3RhbmNlIHRyZWUgaXMgdHJpdmlhbDogKi8KICBmb3IgKG4gPSAwOyBuIDwgRF9DT0RFUzsgbisrKSB7CiAgICBzdGF0aWNfZHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gNTsKICAgIHN0YXRpY19kdHJlZVtuICogMl0vKi5Db2RlKi8gPSBiaV9yZXZlcnNlKG4sIDUpOwogIH0KCiAgLy8gTm93IGRhdGEgcmVhZHkgYW5kIHdlIGNhbiBpbml0IHN0YXRpYyB0cmVlcwogIHN0YXRpY19sX2Rlc2MgPSBuZXcgU3RhdGljVHJlZURlc2Moc3RhdGljX2x0cmVlLCBleHRyYV9sYml0cywgTElURVJBTFMgKyAxLCBMX0NPREVTLCBNQVhfQklUUyk7CiAgc3RhdGljX2RfZGVzYyA9IG5ldyBTdGF0aWNUcmVlRGVzYyhzdGF0aWNfZHRyZWUsIGV4dHJhX2RiaXRzLCAwLCAgICAgICAgICBEX0NPREVTLCBNQVhfQklUUyk7CiAgc3RhdGljX2JsX2Rlc2MgPSBuZXcgU3RhdGljVHJlZURlc2MobmV3IEFycmF5KDApLCBleHRyYV9ibGJpdHMsIDAsICAgICAgICAgQkxfQ09ERVMsIE1BWF9CTF9CSVRTKTsKCiAgLy9zdGF0aWNfaW5pdF9kb25lID0gdHJ1ZTsKfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBJbml0aWFsaXplIGEgbmV3IGJsb2NrLgogKi8KZnVuY3Rpb24gaW5pdF9ibG9jayhzKSB7CiAgdmFyIG47IC8qIGl0ZXJhdGVzIG92ZXIgdHJlZSBlbGVtZW50cyAqLwoKICAvKiBJbml0aWFsaXplIHRoZSB0cmVlcy4gKi8KICBmb3IgKG4gPSAwOyBuIDwgTF9DT0RFUzsgIG4rKykgeyBzLmR5bl9sdHJlZVtuICogMl0vKi5GcmVxKi8gPSAwOyB9CiAgZm9yIChuID0gMDsgbiA8IERfQ09ERVM7ICBuKyspIHsgcy5keW5fZHRyZWVbbiAqIDJdLyouRnJlcSovID0gMDsgfQogIGZvciAobiA9IDA7IG4gPCBCTF9DT0RFUzsgbisrKSB7IHMuYmxfdHJlZVtuICogMl0vKi5GcmVxKi8gPSAwOyB9CgogIHMuZHluX2x0cmVlW0VORF9CTE9DSyAqIDJdLyouRnJlcSovID0gMTsKICBzLm9wdF9sZW4gPSBzLnN0YXRpY19sZW4gPSAwOwogIHMubGFzdF9saXQgPSBzLm1hdGNoZXMgPSAwOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIEZsdXNoIHRoZSBiaXQgYnVmZmVyIGFuZCBhbGlnbiB0aGUgb3V0cHV0IG9uIGEgYnl0ZSBib3VuZGFyeQogKi8KZnVuY3Rpb24gYmlfd2luZHVwKHMpCnsKICBpZiAocy5iaV92YWxpZCA+IDgpIHsKICAgIHB1dF9zaG9ydChzLCBzLmJpX2J1Zik7CiAgfSBlbHNlIGlmIChzLmJpX3ZhbGlkID4gMCkgewogICAgLy9wdXRfYnl0ZShzLCAoQnl0ZSlzLT5iaV9idWYpOwogICAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBzLmJpX2J1ZjsKICB9CiAgcy5iaV9idWYgPSAwOwogIHMuYmlfdmFsaWQgPSAwOwp9CgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogQ29weSBhIHN0b3JlZCBibG9jaywgc3RvcmluZyBmaXJzdCB0aGUgbGVuZ3RoIGFuZCBpdHMKICogb25lJ3MgY29tcGxlbWVudCBpZiByZXF1ZXN0ZWQuCiAqLwpmdW5jdGlvbiBjb3B5X2Jsb2NrKHMsIGJ1ZiwgbGVuLCBoZWFkZXIpCi8vRGVmbGF0ZVN0YXRlICpzOwovL2NoYXJmICAgICpidWY7ICAgIC8qIHRoZSBpbnB1dCBkYXRhICovCi8vdW5zaWduZWQgbGVuOyAgICAgLyogaXRzIGxlbmd0aCAqLwovL2ludCAgICAgIGhlYWRlcjsgIC8qIHRydWUgaWYgYmxvY2sgaGVhZGVyIG11c3QgYmUgd3JpdHRlbiAqLwp7CiAgYmlfd2luZHVwKHMpOyAgICAgICAgLyogYWxpZ24gb24gYnl0ZSBib3VuZGFyeSAqLwoKICBpZiAoaGVhZGVyKSB7CiAgICBwdXRfc2hvcnQocywgbGVuKTsKICAgIHB1dF9zaG9ydChzLCB+bGVuKTsKICB9Ci8vICB3aGlsZSAobGVuLS0pIHsKLy8gICAgcHV0X2J5dGUocywgKmJ1ZisrKTsKLy8gIH0KICB1dGlscy5hcnJheVNldChzLnBlbmRpbmdfYnVmLCBzLndpbmRvdywgYnVmLCBsZW4sIHMucGVuZGluZyk7CiAgcy5wZW5kaW5nICs9IGxlbjsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIENvbXBhcmVzIHRvIHN1YnRyZWVzLCB1c2luZyB0aGUgdHJlZSBkZXB0aCBhcyB0aWUgYnJlYWtlciB3aGVuCiAqIHRoZSBzdWJ0cmVlcyBoYXZlIGVxdWFsIGZyZXF1ZW5jeS4gVGhpcyBtaW5pbWl6ZXMgdGhlIHdvcnN0IGNhc2UgbGVuZ3RoLgogKi8KZnVuY3Rpb24gc21hbGxlcih0cmVlLCBuLCBtLCBkZXB0aCkgewogIHZhciBfbjIgPSBuICogMjsKICB2YXIgX20yID0gbSAqIDI7CiAgcmV0dXJuICh0cmVlW19uMl0vKi5GcmVxKi8gPCB0cmVlW19tMl0vKi5GcmVxKi8gfHwKICAgICAgICAgKHRyZWVbX24yXS8qLkZyZXEqLyA9PT0gdHJlZVtfbTJdLyouRnJlcSovICYmIGRlcHRoW25dIDw9IGRlcHRoW21dKSk7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBSZXN0b3JlIHRoZSBoZWFwIHByb3BlcnR5IGJ5IG1vdmluZyBkb3duIHRoZSB0cmVlIHN0YXJ0aW5nIGF0IG5vZGUgaywKICogZXhjaGFuZ2luZyBhIG5vZGUgd2l0aCB0aGUgc21hbGxlc3Qgb2YgaXRzIHR3byBzb25zIGlmIG5lY2Vzc2FyeSwgc3RvcHBpbmcKICogd2hlbiB0aGUgaGVhcCBwcm9wZXJ0eSBpcyByZS1lc3RhYmxpc2hlZCAoZWFjaCBmYXRoZXIgc21hbGxlciB0aGFuIGl0cwogKiB0d28gc29ucykuCiAqLwpmdW5jdGlvbiBwcWRvd25oZWFwKHMsIHRyZWUsIGspCi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7Ci8vICAgIGN0X2RhdGEgKnRyZWU7ICAvKiB0aGUgdHJlZSB0byByZXN0b3JlICovCi8vICAgIGludCBrOyAgICAgICAgICAgICAgIC8qIG5vZGUgdG8gbW92ZSBkb3duICovCnsKICB2YXIgdiA9IHMuaGVhcFtrXTsKICB2YXIgaiA9IGsgPDwgMTsgIC8qIGxlZnQgc29uIG9mIGsgKi8KICB3aGlsZSAoaiA8PSBzLmhlYXBfbGVuKSB7CiAgICAvKiBTZXQgaiB0byB0aGUgc21hbGxlc3Qgb2YgdGhlIHR3byBzb25zOiAqLwogICAgaWYgKGogPCBzLmhlYXBfbGVuICYmCiAgICAgIHNtYWxsZXIodHJlZSwgcy5oZWFwW2ogKyAxXSwgcy5oZWFwW2pdLCBzLmRlcHRoKSkgewogICAgICBqKys7CiAgICB9CiAgICAvKiBFeGl0IGlmIHYgaXMgc21hbGxlciB0aGFuIGJvdGggc29ucyAqLwogICAgaWYgKHNtYWxsZXIodHJlZSwgdiwgcy5oZWFwW2pdLCBzLmRlcHRoKSkgeyBicmVhazsgfQoKICAgIC8qIEV4Y2hhbmdlIHYgd2l0aCB0aGUgc21hbGxlc3Qgc29uICovCiAgICBzLmhlYXBba10gPSBzLmhlYXBbal07CiAgICBrID0gajsKCiAgICAvKiBBbmQgY29udGludWUgZG93biB0aGUgdHJlZSwgc2V0dGluZyBqIHRvIHRoZSBsZWZ0IHNvbiBvZiBrICovCiAgICBqIDw8PSAxOwogIH0KICBzLmhlYXBba10gPSB2Owp9CgoKLy8gaW5saW5lZCBtYW51YWxseQovLyB2YXIgU01BTExFU1QgPSAxOwoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIFNlbmQgdGhlIGJsb2NrIGRhdGEgY29tcHJlc3NlZCB1c2luZyB0aGUgZ2l2ZW4gSHVmZm1hbiB0cmVlcwogKi8KZnVuY3Rpb24gY29tcHJlc3NfYmxvY2socywgbHRyZWUsIGR0cmVlKQovLyAgICBkZWZsYXRlX3N0YXRlICpzOwovLyAgICBjb25zdCBjdF9kYXRhICpsdHJlZTsgLyogbGl0ZXJhbCB0cmVlICovCi8vICAgIGNvbnN0IGN0X2RhdGEgKmR0cmVlOyAvKiBkaXN0YW5jZSB0cmVlICovCnsKICB2YXIgZGlzdDsgICAgICAgICAgIC8qIGRpc3RhbmNlIG9mIG1hdGNoZWQgc3RyaW5nICovCiAgdmFyIGxjOyAgICAgICAgICAgICAvKiBtYXRjaCBsZW5ndGggb3IgdW5tYXRjaGVkIGNoYXIgKGlmIGRpc3QgPT0gMCkgKi8KICB2YXIgbHggPSAwOyAgICAgICAgIC8qIHJ1bm5pbmcgaW5kZXggaW4gbF9idWYgKi8KICB2YXIgY29kZTsgICAgICAgICAgIC8qIHRoZSBjb2RlIHRvIHNlbmQgKi8KICB2YXIgZXh0cmE7ICAgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSBiaXRzIHRvIHNlbmQgKi8KCiAgaWYgKHMubGFzdF9saXQgIT09IDApIHsKICAgIGRvIHsKICAgICAgZGlzdCA9IChzLnBlbmRpbmdfYnVmW3MuZF9idWYgKyBseCAqIDJdIDw8IDgpIHwgKHMucGVuZGluZ19idWZbcy5kX2J1ZiArIGx4ICogMiArIDFdKTsKICAgICAgbGMgPSBzLnBlbmRpbmdfYnVmW3MubF9idWYgKyBseF07CiAgICAgIGx4Kys7CgogICAgICBpZiAoZGlzdCA9PT0gMCkgewogICAgICAgIHNlbmRfY29kZShzLCBsYywgbHRyZWUpOyAvKiBzZW5kIGEgbGl0ZXJhbCBieXRlICovCiAgICAgICAgLy9UcmFjZWN2KGlzZ3JhcGgobGMpLCAoc3RkZXJyLCIgJyVjJyAiLCBsYykpOwogICAgICB9IGVsc2UgewogICAgICAgIC8qIEhlcmUsIGxjIGlzIHRoZSBtYXRjaCBsZW5ndGggLSBNSU5fTUFUQ0ggKi8KICAgICAgICBjb2RlID0gX2xlbmd0aF9jb2RlW2xjXTsKICAgICAgICBzZW5kX2NvZGUocywgY29kZSArIExJVEVSQUxTICsgMSwgbHRyZWUpOyAvKiBzZW5kIHRoZSBsZW5ndGggY29kZSAqLwogICAgICAgIGV4dHJhID0gZXh0cmFfbGJpdHNbY29kZV07CiAgICAgICAgaWYgKGV4dHJhICE9PSAwKSB7CiAgICAgICAgICBsYyAtPSBiYXNlX2xlbmd0aFtjb2RlXTsKICAgICAgICAgIHNlbmRfYml0cyhzLCBsYywgZXh0cmEpOyAgICAgICAvKiBzZW5kIHRoZSBleHRyYSBsZW5ndGggYml0cyAqLwogICAgICAgIH0KICAgICAgICBkaXN0LS07IC8qIGRpc3QgaXMgbm93IHRoZSBtYXRjaCBkaXN0YW5jZSAtIDEgKi8KICAgICAgICBjb2RlID0gZF9jb2RlKGRpc3QpOwogICAgICAgIC8vQXNzZXJ0IChjb2RlIDwgRF9DT0RFUywgImJhZCBkX2NvZGUiKTsKCiAgICAgICAgc2VuZF9jb2RlKHMsIGNvZGUsIGR0cmVlKTsgICAgICAgLyogc2VuZCB0aGUgZGlzdGFuY2UgY29kZSAqLwogICAgICAgIGV4dHJhID0gZXh0cmFfZGJpdHNbY29kZV07CiAgICAgICAgaWYgKGV4dHJhICE9PSAwKSB7CiAgICAgICAgICBkaXN0IC09IGJhc2VfZGlzdFtjb2RlXTsKICAgICAgICAgIHNlbmRfYml0cyhzLCBkaXN0LCBleHRyYSk7ICAgLyogc2VuZCB0aGUgZXh0cmEgZGlzdGFuY2UgYml0cyAqLwogICAgICAgIH0KICAgICAgfSAvKiBsaXRlcmFsIG9yIG1hdGNoIHBhaXIgPyAqLwoKICAgICAgLyogQ2hlY2sgdGhhdCB0aGUgb3ZlcmxheSBiZXR3ZWVuIHBlbmRpbmdfYnVmIGFuZCBkX2J1ZitsX2J1ZiBpcyBvazogKi8KICAgICAgLy9Bc3NlcnQoKHVJbnQpKHMtPnBlbmRpbmcpIDwgcy0+bGl0X2J1ZnNpemUgKyAyKmx4LAogICAgICAvLyAgICAgICAicGVuZGluZ0J1ZiBvdmVyZmxvdyIpOwoKICAgIH0gd2hpbGUgKGx4IDwgcy5sYXN0X2xpdCk7CiAgfQoKICBzZW5kX2NvZGUocywgRU5EX0JMT0NLLCBsdHJlZSk7Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogQ29uc3RydWN0IG9uZSBIdWZmbWFuIHRyZWUgYW5kIGFzc2lnbnMgdGhlIGNvZGUgYml0IHN0cmluZ3MgYW5kIGxlbmd0aHMuCiAqIFVwZGF0ZSB0aGUgdG90YWwgYml0IGxlbmd0aCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suCiAqIElOIGFzc2VydGlvbjogdGhlIGZpZWxkIGZyZXEgaXMgc2V0IGZvciBhbGwgdHJlZSBlbGVtZW50cy4KICogT1VUIGFzc2VydGlvbnM6IHRoZSBmaWVsZHMgbGVuIGFuZCBjb2RlIGFyZSBzZXQgdG8gdGhlIG9wdGltYWwgYml0IGxlbmd0aAogKiAgICAgYW5kIGNvcnJlc3BvbmRpbmcgY29kZS4gVGhlIGxlbmd0aCBvcHRfbGVuIGlzIHVwZGF0ZWQ7IHN0YXRpY19sZW4gaXMKICogICAgIGFsc28gdXBkYXRlZCBpZiBzdHJlZSBpcyBub3QgbnVsbC4gVGhlIGZpZWxkIG1heF9jb2RlIGlzIHNldC4KICovCmZ1bmN0aW9uIGJ1aWxkX3RyZWUocywgZGVzYykKLy8gICAgZGVmbGF0ZV9zdGF0ZSAqczsKLy8gICAgdHJlZV9kZXNjICpkZXNjOyAvKiB0aGUgdHJlZSBkZXNjcmlwdG9yICovCnsKICB2YXIgdHJlZSAgICAgPSBkZXNjLmR5bl90cmVlOwogIHZhciBzdHJlZSAgICA9IGRlc2Muc3RhdF9kZXNjLnN0YXRpY190cmVlOwogIHZhciBoYXNfc3RyZWUgPSBkZXNjLnN0YXRfZGVzYy5oYXNfc3RyZWU7CiAgdmFyIGVsZW1zICAgID0gZGVzYy5zdGF0X2Rlc2MuZWxlbXM7CiAgdmFyIG4sIG07ICAgICAgICAgIC8qIGl0ZXJhdGUgb3ZlciBoZWFwIGVsZW1lbnRzICovCiAgdmFyIG1heF9jb2RlID0gLTE7IC8qIGxhcmdlc3QgY29kZSB3aXRoIG5vbiB6ZXJvIGZyZXF1ZW5jeSAqLwogIHZhciBub2RlOyAgICAgICAgICAvKiBuZXcgbm9kZSBiZWluZyBjcmVhdGVkICovCgogIC8qIENvbnN0cnVjdCB0aGUgaW5pdGlhbCBoZWFwLCB3aXRoIGxlYXN0IGZyZXF1ZW50IGVsZW1lbnQgaW4KICAgKiBoZWFwW1NNQUxMRVNUXS4gVGhlIHNvbnMgb2YgaGVhcFtuXSBhcmUgaGVhcFsyKm5dIGFuZCBoZWFwWzIqbisxXS4KICAgKiBoZWFwWzBdIGlzIG5vdCB1c2VkLgogICAqLwogIHMuaGVhcF9sZW4gPSAwOwogIHMuaGVhcF9tYXggPSBIRUFQX1NJWkU7CgogIGZvciAobiA9IDA7IG4gPCBlbGVtczsgbisrKSB7CiAgICBpZiAodHJlZVtuICogMl0vKi5GcmVxKi8gIT09IDApIHsKICAgICAgcy5oZWFwWysrcy5oZWFwX2xlbl0gPSBtYXhfY29kZSA9IG47CiAgICAgIHMuZGVwdGhbbl0gPSAwOwoKICAgIH0gZWxzZSB7CiAgICAgIHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gMDsKICAgIH0KICB9CgogIC8qIFRoZSBwa3ppcCBmb3JtYXQgcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgZGlzdGFuY2UgY29kZSBleGlzdHMsCiAgICogYW5kIHRoYXQgYXQgbGVhc3Qgb25lIGJpdCBzaG91bGQgYmUgc2VudCBldmVuIGlmIHRoZXJlIGlzIG9ubHkgb25lCiAgICogcG9zc2libGUgY29kZS4gU28gdG8gYXZvaWQgc3BlY2lhbCBjaGVja3MgbGF0ZXIgb24gd2UgZm9yY2UgYXQgbGVhc3QKICAgKiB0d28gY29kZXMgb2Ygbm9uIHplcm8gZnJlcXVlbmN5LgogICAqLwogIHdoaWxlIChzLmhlYXBfbGVuIDwgMikgewogICAgbm9kZSA9IHMuaGVhcFsrK3MuaGVhcF9sZW5dID0gKG1heF9jb2RlIDwgMiA/ICsrbWF4X2NvZGUgOiAwKTsKICAgIHRyZWVbbm9kZSAqIDJdLyouRnJlcSovID0gMTsKICAgIHMuZGVwdGhbbm9kZV0gPSAwOwogICAgcy5vcHRfbGVuLS07CgogICAgaWYgKGhhc19zdHJlZSkgewogICAgICBzLnN0YXRpY19sZW4gLT0gc3RyZWVbbm9kZSAqIDIgKyAxXS8qLkxlbiovOwogICAgfQogICAgLyogbm9kZSBpcyAwIG9yIDEgc28gaXQgZG9lcyBub3QgaGF2ZSBleHRyYSBiaXRzICovCiAgfQogIGRlc2MubWF4X2NvZGUgPSBtYXhfY29kZTsKCiAgLyogVGhlIGVsZW1lbnRzIGhlYXBbaGVhcF9sZW4vMisxIC4uIGhlYXBfbGVuXSBhcmUgbGVhdmVzIG9mIHRoZSB0cmVlLAogICAqIGVzdGFibGlzaCBzdWItaGVhcHMgb2YgaW5jcmVhc2luZyBsZW5ndGhzOgogICAqLwogIGZvciAobiA9IChzLmhlYXBfbGVuID4+IDEvKmludCAvMiovKTsgbiA+PSAxOyBuLS0pIHsgcHFkb3duaGVhcChzLCB0cmVlLCBuKTsgfQoKICAvKiBDb25zdHJ1Y3QgdGhlIEh1ZmZtYW4gdHJlZSBieSByZXBlYXRlZGx5IGNvbWJpbmluZyB0aGUgbGVhc3QgdHdvCiAgICogZnJlcXVlbnQgbm9kZXMuCiAgICovCiAgbm9kZSA9IGVsZW1zOyAgICAgICAgICAgICAgLyogbmV4dCBpbnRlcm5hbCBub2RlIG9mIHRoZSB0cmVlICovCiAgZG8gewogICAgLy9wcXJlbW92ZShzLCB0cmVlLCBuKTsgIC8qIG4gPSBub2RlIG9mIGxlYXN0IGZyZXF1ZW5jeSAqLwogICAgLyoqKiBwcXJlbW92ZSAqKiovCiAgICBuID0gcy5oZWFwWzEvKlNNQUxMRVNUKi9dOwogICAgcy5oZWFwWzEvKlNNQUxMRVNUKi9dID0gcy5oZWFwW3MuaGVhcF9sZW4tLV07CiAgICBwcWRvd25oZWFwKHMsIHRyZWUsIDEvKlNNQUxMRVNUKi8pOwogICAgLyoqKi8KCiAgICBtID0gcy5oZWFwWzEvKlNNQUxMRVNUKi9dOyAvKiBtID0gbm9kZSBvZiBuZXh0IGxlYXN0IGZyZXF1ZW5jeSAqLwoKICAgIHMuaGVhcFstLXMuaGVhcF9tYXhdID0gbjsgLyoga2VlcCB0aGUgbm9kZXMgc29ydGVkIGJ5IGZyZXF1ZW5jeSAqLwogICAgcy5oZWFwWy0tcy5oZWFwX21heF0gPSBtOwoKICAgIC8qIENyZWF0ZSBhIG5ldyBub2RlIGZhdGhlciBvZiBuIGFuZCBtICovCiAgICB0cmVlW25vZGUgKiAyXS8qLkZyZXEqLyA9IHRyZWVbbiAqIDJdLyouRnJlcSovICsgdHJlZVttICogMl0vKi5GcmVxKi87CiAgICBzLmRlcHRoW25vZGVdID0gKHMuZGVwdGhbbl0gPj0gcy5kZXB0aFttXSA/IHMuZGVwdGhbbl0gOiBzLmRlcHRoW21dKSArIDE7CiAgICB0cmVlW24gKiAyICsgMV0vKi5EYWQqLyA9IHRyZWVbbSAqIDIgKyAxXS8qLkRhZCovID0gbm9kZTsKCiAgICAvKiBhbmQgaW5zZXJ0IHRoZSBuZXcgbm9kZSBpbiB0aGUgaGVhcCAqLwogICAgcy5oZWFwWzEvKlNNQUxMRVNUKi9dID0gbm9kZSsrOwogICAgcHFkb3duaGVhcChzLCB0cmVlLCAxLypTTUFMTEVTVCovKTsKCiAgfSB3aGlsZSAocy5oZWFwX2xlbiA+PSAyKTsKCiAgcy5oZWFwWy0tcy5oZWFwX21heF0gPSBzLmhlYXBbMS8qU01BTExFU1QqL107CgogIC8qIEF0IHRoaXMgcG9pbnQsIHRoZSBmaWVsZHMgZnJlcSBhbmQgZGFkIGFyZSBzZXQuIFdlIGNhbiBub3cKICAgKiBnZW5lcmF0ZSB0aGUgYml0IGxlbmd0aHMuCiAgICovCiAgZ2VuX2JpdGxlbihzLCBkZXNjKTsKCiAgLyogVGhlIGZpZWxkIGxlbiBpcyBub3cgc2V0LCB3ZSBjYW4gZ2VuZXJhdGUgdGhlIGJpdCBjb2RlcyAqLwogIGdlbl9jb2Rlcyh0cmVlLCBtYXhfY29kZSwgcy5ibF9jb3VudCk7Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogU2NhbiBhIGxpdGVyYWwgb3IgZGlzdGFuY2UgdHJlZSB0byBkZXRlcm1pbmUgdGhlIGZyZXF1ZW5jaWVzIG9mIHRoZSBjb2RlcwogKiBpbiB0aGUgYml0IGxlbmd0aCB0cmVlLgogKi8KZnVuY3Rpb24gc2Nhbl90cmVlKHMsIHRyZWUsIG1heF9jb2RlKQovLyAgICBkZWZsYXRlX3N0YXRlICpzOwovLyAgICBjdF9kYXRhICp0cmVlOyAgIC8qIHRoZSB0cmVlIHRvIGJlIHNjYW5uZWQgKi8KLy8gICAgaW50IG1heF9jb2RlOyAgICAvKiBhbmQgaXRzIGxhcmdlc3QgY29kZSBvZiBub24gemVybyBmcmVxdWVuY3kgKi8KewogIHZhciBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgYWxsIHRyZWUgZWxlbWVudHMgKi8KICB2YXIgcHJldmxlbiA9IC0xOyAgICAgICAgICAvKiBsYXN0IGVtaXR0ZWQgbGVuZ3RoICovCiAgdmFyIGN1cmxlbjsgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgY29kZSAqLwoKICB2YXIgbmV4dGxlbiA9IHRyZWVbMCAqIDIgKyAxXS8qLkxlbiovOyAvKiBsZW5ndGggb2YgbmV4dCBjb2RlICovCgogIHZhciBjb3VudCA9IDA7ICAgICAgICAgICAgIC8qIHJlcGVhdCBjb3VudCBvZiB0aGUgY3VycmVudCBjb2RlICovCiAgdmFyIG1heF9jb3VudCA9IDc7ICAgICAgICAgLyogbWF4IHJlcGVhdCBjb3VudCAqLwogIHZhciBtaW5fY291bnQgPSA0OyAgICAgICAgIC8qIG1pbiByZXBlYXQgY291bnQgKi8KCiAgaWYgKG5leHRsZW4gPT09IDApIHsKICAgIG1heF9jb3VudCA9IDEzODsKICAgIG1pbl9jb3VudCA9IDM7CiAgfQogIHRyZWVbKG1heF9jb2RlICsgMSkgKiAyICsgMV0vKi5MZW4qLyA9IDB4ZmZmZjsgLyogZ3VhcmQgKi8KCiAgZm9yIChuID0gMDsgbiA8PSBtYXhfY29kZTsgbisrKSB7CiAgICBjdXJsZW4gPSBuZXh0bGVuOwogICAgbmV4dGxlbiA9IHRyZWVbKG4gKyAxKSAqIDIgKyAxXS8qLkxlbiovOwoKICAgIGlmICgrK2NvdW50IDwgbWF4X2NvdW50ICYmIGN1cmxlbiA9PT0gbmV4dGxlbikgewogICAgICBjb250aW51ZTsKCiAgICB9IGVsc2UgaWYgKGNvdW50IDwgbWluX2NvdW50KSB7CiAgICAgIHMuYmxfdHJlZVtjdXJsZW4gKiAyXS8qLkZyZXEqLyArPSBjb3VudDsKCiAgICB9IGVsc2UgaWYgKGN1cmxlbiAhPT0gMCkgewoKICAgICAgaWYgKGN1cmxlbiAhPT0gcHJldmxlbikgeyBzLmJsX3RyZWVbY3VybGVuICogMl0vKi5GcmVxKi8rKzsgfQogICAgICBzLmJsX3RyZWVbUkVQXzNfNiAqIDJdLyouRnJlcSovKys7CgogICAgfSBlbHNlIGlmIChjb3VudCA8PSAxMCkgewogICAgICBzLmJsX3RyZWVbUkVQWl8zXzEwICogMl0vKi5GcmVxKi8rKzsKCiAgICB9IGVsc2UgewogICAgICBzLmJsX3RyZWVbUkVQWl8xMV8xMzggKiAyXS8qLkZyZXEqLysrOwogICAgfQoKICAgIGNvdW50ID0gMDsKICAgIHByZXZsZW4gPSBjdXJsZW47CgogICAgaWYgKG5leHRsZW4gPT09IDApIHsKICAgICAgbWF4X2NvdW50ID0gMTM4OwogICAgICBtaW5fY291bnQgPSAzOwoKICAgIH0gZWxzZSBpZiAoY3VybGVuID09PSBuZXh0bGVuKSB7CiAgICAgIG1heF9jb3VudCA9IDY7CiAgICAgIG1pbl9jb3VudCA9IDM7CgogICAgfSBlbHNlIHsKICAgICAgbWF4X2NvdW50ID0gNzsKICAgICAgbWluX2NvdW50ID0gNDsKICAgIH0KICB9Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogU2VuZCBhIGxpdGVyYWwgb3IgZGlzdGFuY2UgdHJlZSBpbiBjb21wcmVzc2VkIGZvcm0sIHVzaW5nIHRoZSBjb2RlcyBpbgogKiBibF90cmVlLgogKi8KZnVuY3Rpb24gc2VuZF90cmVlKHMsIHRyZWUsIG1heF9jb2RlKQovLyAgICBkZWZsYXRlX3N0YXRlICpzOwovLyAgICBjdF9kYXRhICp0cmVlOyAvKiB0aGUgdHJlZSB0byBiZSBzY2FubmVkICovCi8vICAgIGludCBtYXhfY29kZTsgICAgICAgLyogYW5kIGl0cyBsYXJnZXN0IGNvZGUgb2Ygbm9uIHplcm8gZnJlcXVlbmN5ICovCnsKICB2YXIgbjsgICAgICAgICAgICAgICAgICAgICAvKiBpdGVyYXRlcyBvdmVyIGFsbCB0cmVlIGVsZW1lbnRzICovCiAgdmFyIHByZXZsZW4gPSAtMTsgICAgICAgICAgLyogbGFzdCBlbWl0dGVkIGxlbmd0aCAqLwogIHZhciBjdXJsZW47ICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBvZiBjdXJyZW50IGNvZGUgKi8KCiAgdmFyIG5leHRsZW4gPSB0cmVlWzAgKiAyICsgMV0vKi5MZW4qLzsgLyogbGVuZ3RoIG9mIG5leHQgY29kZSAqLwoKICB2YXIgY291bnQgPSAwOyAgICAgICAgICAgICAvKiByZXBlYXQgY291bnQgb2YgdGhlIGN1cnJlbnQgY29kZSAqLwogIHZhciBtYXhfY291bnQgPSA3OyAgICAgICAgIC8qIG1heCByZXBlYXQgY291bnQgKi8KICB2YXIgbWluX2NvdW50ID0gNDsgICAgICAgICAvKiBtaW4gcmVwZWF0IGNvdW50ICovCgogIC8qIHRyZWVbbWF4X2NvZGUrMV0uTGVuID0gLTE7ICovICAvKiBndWFyZCBhbHJlYWR5IHNldCAqLwogIGlmIChuZXh0bGVuID09PSAwKSB7CiAgICBtYXhfY291bnQgPSAxMzg7CiAgICBtaW5fY291bnQgPSAzOwogIH0KCiAgZm9yIChuID0gMDsgbiA8PSBtYXhfY29kZTsgbisrKSB7CiAgICBjdXJsZW4gPSBuZXh0bGVuOwogICAgbmV4dGxlbiA9IHRyZWVbKG4gKyAxKSAqIDIgKyAxXS8qLkxlbiovOwoKICAgIGlmICgrK2NvdW50IDwgbWF4X2NvdW50ICYmIGN1cmxlbiA9PT0gbmV4dGxlbikgewogICAgICBjb250aW51ZTsKCiAgICB9IGVsc2UgaWYgKGNvdW50IDwgbWluX2NvdW50KSB7CiAgICAgIGRvIHsgc2VuZF9jb2RlKHMsIGN1cmxlbiwgcy5ibF90cmVlKTsgfSB3aGlsZSAoLS1jb3VudCAhPT0gMCk7CgogICAgfSBlbHNlIGlmIChjdXJsZW4gIT09IDApIHsKICAgICAgaWYgKGN1cmxlbiAhPT0gcHJldmxlbikgewogICAgICAgIHNlbmRfY29kZShzLCBjdXJsZW4sIHMuYmxfdHJlZSk7CiAgICAgICAgY291bnQtLTsKICAgICAgfQogICAgICAvL0Fzc2VydChjb3VudCA+PSAzICYmIGNvdW50IDw9IDYsICIgM182PyIpOwogICAgICBzZW5kX2NvZGUocywgUkVQXzNfNiwgcy5ibF90cmVlKTsKICAgICAgc2VuZF9iaXRzKHMsIGNvdW50IC0gMywgMik7CgogICAgfSBlbHNlIGlmIChjb3VudCA8PSAxMCkgewogICAgICBzZW5kX2NvZGUocywgUkVQWl8zXzEwLCBzLmJsX3RyZWUpOwogICAgICBzZW5kX2JpdHMocywgY291bnQgLSAzLCAzKTsKCiAgICB9IGVsc2UgewogICAgICBzZW5kX2NvZGUocywgUkVQWl8xMV8xMzgsIHMuYmxfdHJlZSk7CiAgICAgIHNlbmRfYml0cyhzLCBjb3VudCAtIDExLCA3KTsKICAgIH0KCiAgICBjb3VudCA9IDA7CiAgICBwcmV2bGVuID0gY3VybGVuOwogICAgaWYgKG5leHRsZW4gPT09IDApIHsKICAgICAgbWF4X2NvdW50ID0gMTM4OwogICAgICBtaW5fY291bnQgPSAzOwoKICAgIH0gZWxzZSBpZiAoY3VybGVuID09PSBuZXh0bGVuKSB7CiAgICAgIG1heF9jb3VudCA9IDY7CiAgICAgIG1pbl9jb3VudCA9IDM7CgogICAgfSBlbHNlIHsKICAgICAgbWF4X2NvdW50ID0gNzsKICAgICAgbWluX2NvdW50ID0gNDsKICAgIH0KICB9Cn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogQ29uc3RydWN0IHRoZSBIdWZmbWFuIHRyZWUgZm9yIHRoZSBiaXQgbGVuZ3RocyBhbmQgcmV0dXJuIHRoZSBpbmRleCBpbgogKiBibF9vcmRlciBvZiB0aGUgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgdG8gc2VuZC4KICovCmZ1bmN0aW9uIGJ1aWxkX2JsX3RyZWUocykgewogIHZhciBtYXhfYmxpbmRleDsgIC8qIGluZGV4IG9mIGxhc3QgYml0IGxlbmd0aCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXEgKi8KCiAgLyogRGV0ZXJtaW5lIHRoZSBiaXQgbGVuZ3RoIGZyZXF1ZW5jaWVzIGZvciBsaXRlcmFsIGFuZCBkaXN0YW5jZSB0cmVlcyAqLwogIHNjYW5fdHJlZShzLCBzLmR5bl9sdHJlZSwgcy5sX2Rlc2MubWF4X2NvZGUpOwogIHNjYW5fdHJlZShzLCBzLmR5bl9kdHJlZSwgcy5kX2Rlc2MubWF4X2NvZGUpOwoKICAvKiBCdWlsZCB0aGUgYml0IGxlbmd0aCB0cmVlOiAqLwogIGJ1aWxkX3RyZWUocywgcy5ibF9kZXNjKTsKICAvKiBvcHRfbGVuIG5vdyBpbmNsdWRlcyB0aGUgbGVuZ3RoIG9mIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9ucywgZXhjZXB0CiAgICogdGhlIGxlbmd0aHMgb2YgdGhlIGJpdCBsZW5ndGhzIGNvZGVzIGFuZCB0aGUgNSs1KzQgYml0cyBmb3IgdGhlIGNvdW50cy4KICAgKi8KCiAgLyogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYml0IGxlbmd0aCBjb2RlcyB0byBzZW5kLiBUaGUgcGt6aXAgZm9ybWF0CiAgICogcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCA0IGJpdCBsZW5ndGggY29kZXMgYmUgc2VudC4gKGFwcG5vdGUudHh0IHNheXMKICAgKiAzIGJ1dCB0aGUgYWN0dWFsIHZhbHVlIHVzZWQgaXMgNC4pCiAgICovCiAgZm9yIChtYXhfYmxpbmRleCA9IEJMX0NPREVTIC0gMTsgbWF4X2JsaW5kZXggPj0gMzsgbWF4X2JsaW5kZXgtLSkgewogICAgaWYgKHMuYmxfdHJlZVtibF9vcmRlclttYXhfYmxpbmRleF0gKiAyICsgMV0vKi5MZW4qLyAhPT0gMCkgewogICAgICBicmVhazsKICAgIH0KICB9CiAgLyogVXBkYXRlIG9wdF9sZW4gdG8gaW5jbHVkZSB0aGUgYml0IGxlbmd0aCB0cmVlIGFuZCBjb3VudHMgKi8KICBzLm9wdF9sZW4gKz0gMyAqIChtYXhfYmxpbmRleCArIDEpICsgNSArIDUgKyA0OwogIC8vVHJhY2V2KChzdGRlcnIsICJcbmR5biB0cmVlczogZHluICVsZCwgc3RhdCAlbGQiLAogIC8vICAgICAgICBzLT5vcHRfbGVuLCBzLT5zdGF0aWNfbGVuKSk7CgogIHJldHVybiBtYXhfYmxpbmRleDsKfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBTZW5kIHRoZSBoZWFkZXIgZm9yIGEgYmxvY2sgdXNpbmcgZHluYW1pYyBIdWZmbWFuIHRyZWVzOiB0aGUgY291bnRzLCB0aGUKICogbGVuZ3RocyBvZiB0aGUgYml0IGxlbmd0aCBjb2RlcywgdGhlIGxpdGVyYWwgdHJlZSBhbmQgdGhlIGRpc3RhbmNlIHRyZWUuCiAqIElOIGFzc2VydGlvbjogbGNvZGVzID49IDI1NywgZGNvZGVzID49IDEsIGJsY29kZXMgPj0gNC4KICovCmZ1bmN0aW9uIHNlbmRfYWxsX3RyZWVzKHMsIGxjb2RlcywgZGNvZGVzLCBibGNvZGVzKQovLyAgICBkZWZsYXRlX3N0YXRlICpzOwovLyAgICBpbnQgbGNvZGVzLCBkY29kZXMsIGJsY29kZXM7IC8qIG51bWJlciBvZiBjb2RlcyBmb3IgZWFjaCB0cmVlICovCnsKICB2YXIgcmFuazsgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4IGluIGJsX29yZGVyICovCgogIC8vQXNzZXJ0IChsY29kZXMgPj0gMjU3ICYmIGRjb2RlcyA+PSAxICYmIGJsY29kZXMgPj0gNCwgIm5vdCBlbm91Z2ggY29kZXMiKTsKICAvL0Fzc2VydCAobGNvZGVzIDw9IExfQ09ERVMgJiYgZGNvZGVzIDw9IERfQ09ERVMgJiYgYmxjb2RlcyA8PSBCTF9DT0RFUywKICAvLyAgICAgICAgInRvbyBtYW55IGNvZGVzIik7CiAgLy9UcmFjZXYoKHN0ZGVyciwgIlxuYmwgY291bnRzOiAiKSk7CiAgc2VuZF9iaXRzKHMsIGxjb2RlcyAtIDI1NywgNSk7IC8qIG5vdCArMjU1IGFzIHN0YXRlZCBpbiBhcHBub3RlLnR4dCAqLwogIHNlbmRfYml0cyhzLCBkY29kZXMgLSAxLCAgIDUpOwogIHNlbmRfYml0cyhzLCBibGNvZGVzIC0gNCwgIDQpOyAvKiBub3QgLTMgYXMgc3RhdGVkIGluIGFwcG5vdGUudHh0ICovCiAgZm9yIChyYW5rID0gMDsgcmFuayA8IGJsY29kZXM7IHJhbmsrKykgewogICAgLy9UcmFjZXYoKHN0ZGVyciwgIlxuYmwgY29kZSAlMmQgIiwgYmxfb3JkZXJbcmFua10pKTsKICAgIHNlbmRfYml0cyhzLCBzLmJsX3RyZWVbYmxfb3JkZXJbcmFua10gKiAyICsgMV0vKi5MZW4qLywgMyk7CiAgfQogIC8vVHJhY2V2KChzdGRlcnIsICJcbmJsIHRyZWU6IHNlbnQgJWxkIiwgcy0+Yml0c19zZW50KSk7CgogIHNlbmRfdHJlZShzLCBzLmR5bl9sdHJlZSwgbGNvZGVzIC0gMSk7IC8qIGxpdGVyYWwgdHJlZSAqLwogIC8vVHJhY2V2KChzdGRlcnIsICJcbmxpdCB0cmVlOiBzZW50ICVsZCIsIHMtPmJpdHNfc2VudCkpOwoKICBzZW5kX3RyZWUocywgcy5keW5fZHRyZWUsIGRjb2RlcyAtIDEpOyAvKiBkaXN0YW5jZSB0cmVlICovCiAgLy9UcmFjZXYoKHN0ZGVyciwgIlxuZGlzdCB0cmVlOiBzZW50ICVsZCIsIHMtPmJpdHNfc2VudCkpOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIENoZWNrIGlmIHRoZSBkYXRhIHR5cGUgaXMgVEVYVCBvciBCSU5BUlksIHVzaW5nIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOgogKiAtIFRFWFQgaWYgdGhlIHR3byBjb25kaXRpb25zIGJlbG93IGFyZSBzYXRpc2ZpZWQ6CiAqICAgIGEpIFRoZXJlIGFyZSBubyBub24tcG9ydGFibGUgY29udHJvbCBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byB0aGUKICogICAgICAgImJsYWNrIGxpc3QiICgwLi42LCAxNC4uMjUsIDI4Li4zMSkuCiAqICAgIGIpIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwcmludGFibGUgY2hhcmFjdGVyIGJlbG9uZ2luZyB0byB0aGUKICogICAgICAgIndoaXRlIGxpc3QiICg5IHtUQUJ9LCAxMCB7TEZ9LCAxMyB7Q1J9LCAzMi4uMjU1KS4KICogLSBCSU5BUlkgb3RoZXJ3aXNlLgogKiAtIFRoZSBmb2xsb3dpbmcgcGFydGlhbGx5LXBvcnRhYmxlIGNvbnRyb2wgY2hhcmFjdGVycyBmb3JtIGEKICogICAiZ3JheSBsaXN0IiB0aGF0IGlzIGlnbm9yZWQgaW4gdGhpcyBkZXRlY3Rpb24gYWxnb3JpdGhtOgogKiAgICg3IHtCRUx9LCA4IHtCU30sIDExIHtWVH0sIDEyIHtGRn0sIDI2IHtTVUJ9LCAyNyB7RVNDfSkuCiAqIElOIGFzc2VydGlvbjogdGhlIGZpZWxkcyBGcmVxIG9mIGR5bl9sdHJlZSBhcmUgc2V0LgogKi8KZnVuY3Rpb24gZGV0ZWN0X2RhdGFfdHlwZShzKSB7CiAgLyogYmxhY2tfbWFzayBpcyB0aGUgYml0IG1hc2sgb2YgYmxhY2stbGlzdGVkIGJ5dGVzCiAgICogc2V0IGJpdHMgMC4uNiwgMTQuLjI1LCBhbmQgMjguLjMxCiAgICogMHhmM2ZmYzA3ZiA9IGJpbmFyeSAxMTExMDAxMTExMTExMTExMTEwMDAwMDAwMTExMTExMQogICAqLwogIHZhciBibGFja19tYXNrID0gMHhmM2ZmYzA3ZjsKICB2YXIgbjsKCiAgLyogQ2hlY2sgZm9yIG5vbi10ZXh0dWFsICgiYmxhY2stbGlzdGVkIikgYnl0ZXMuICovCiAgZm9yIChuID0gMDsgbiA8PSAzMTsgbisrLCBibGFja19tYXNrID4+Pj0gMSkgewogICAgaWYgKChibGFja19tYXNrICYgMSkgJiYgKHMuZHluX2x0cmVlW24gKiAyXS8qLkZyZXEqLyAhPT0gMCkpIHsKICAgICAgcmV0dXJuIFpfQklOQVJZOwogICAgfQogIH0KCiAgLyogQ2hlY2sgZm9yIHRleHR1YWwgKCJ3aGl0ZS1saXN0ZWQiKSBieXRlcy4gKi8KICBpZiAocy5keW5fbHRyZWVbOSAqIDJdLyouRnJlcSovICE9PSAwIHx8IHMuZHluX2x0cmVlWzEwICogMl0vKi5GcmVxKi8gIT09IDAgfHwKICAgICAgcy5keW5fbHRyZWVbMTMgKiAyXS8qLkZyZXEqLyAhPT0gMCkgewogICAgcmV0dXJuIFpfVEVYVDsKICB9CiAgZm9yIChuID0gMzI7IG4gPCBMSVRFUkFMUzsgbisrKSB7CiAgICBpZiAocy5keW5fbHRyZWVbbiAqIDJdLyouRnJlcSovICE9PSAwKSB7CiAgICAgIHJldHVybiBaX1RFWFQ7CiAgICB9CiAgfQoKICAvKiBUaGVyZSBhcmUgbm8gImJsYWNrLWxpc3RlZCIgb3IgIndoaXRlLWxpc3RlZCIgYnl0ZXM6CiAgICogdGhpcyBzdHJlYW0gZWl0aGVyIGlzIGVtcHR5IG9yIGhhcyB0b2xlcmF0ZWQgKCJncmF5LWxpc3RlZCIpIGJ5dGVzIG9ubHkuCiAgICovCiAgcmV0dXJuIFpfQklOQVJZOwp9CgoKdmFyIHN0YXRpY19pbml0X2RvbmUgPSBmYWxzZTsKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBJbml0aWFsaXplIHRoZSB0cmVlIGRhdGEgc3RydWN0dXJlcyBmb3IgYSBuZXcgemxpYiBzdHJlYW0uCiAqLwpmdW5jdGlvbiBfdHJfaW5pdChzKQp7CgogIGlmICghc3RhdGljX2luaXRfZG9uZSkgewogICAgdHJfc3RhdGljX2luaXQoKTsKICAgIHN0YXRpY19pbml0X2RvbmUgPSB0cnVlOwogIH0KCiAgcy5sX2Rlc2MgID0gbmV3IFRyZWVEZXNjKHMuZHluX2x0cmVlLCBzdGF0aWNfbF9kZXNjKTsKICBzLmRfZGVzYyAgPSBuZXcgVHJlZURlc2Mocy5keW5fZHRyZWUsIHN0YXRpY19kX2Rlc2MpOwogIHMuYmxfZGVzYyA9IG5ldyBUcmVlRGVzYyhzLmJsX3RyZWUsIHN0YXRpY19ibF9kZXNjKTsKCiAgcy5iaV9idWYgPSAwOwogIHMuYmlfdmFsaWQgPSAwOwoKICAvKiBJbml0aWFsaXplIHRoZSBmaXJzdCBibG9jayBvZiB0aGUgZmlyc3QgZmlsZTogKi8KICBpbml0X2Jsb2NrKHMpOwp9CgoKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIFNlbmQgYSBzdG9yZWQgYmxvY2sKICovCmZ1bmN0aW9uIF90cl9zdG9yZWRfYmxvY2socywgYnVmLCBzdG9yZWRfbGVuLCBsYXN0KQovL0RlZmxhdGVTdGF0ZSAqczsKLy9jaGFyZiAqYnVmOyAgICAgICAvKiBpbnB1dCBibG9jayAqLwovL3VsZyBzdG9yZWRfbGVuOyAgIC8qIGxlbmd0aCBvZiBpbnB1dCBibG9jayAqLwovL2ludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi8KewogIHNlbmRfYml0cyhzLCAoU1RPUkVEX0JMT0NLIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpOyAgICAvKiBzZW5kIGJsb2NrIHR5cGUgKi8KICBjb3B5X2Jsb2NrKHMsIGJ1Ziwgc3RvcmVkX2xlbiwgdHJ1ZSk7IC8qIHdpdGggaGVhZGVyICovCn0KCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICogU2VuZCBvbmUgZW1wdHkgc3RhdGljIGJsb2NrIHRvIGdpdmUgZW5vdWdoIGxvb2thaGVhZCBmb3IgaW5mbGF0ZS4KICogVGhpcyB0YWtlcyAxMCBiaXRzLCBvZiB3aGljaCA3IG1heSByZW1haW4gaW4gdGhlIGJpdCBidWZmZXIuCiAqLwpmdW5jdGlvbiBfdHJfYWxpZ24ocykgewogIHNlbmRfYml0cyhzLCBTVEFUSUNfVFJFRVMgPDwgMSwgMyk7CiAgc2VuZF9jb2RlKHMsIEVORF9CTE9DSywgc3RhdGljX2x0cmVlKTsKICBiaV9mbHVzaChzKTsKfQoKCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBEZXRlcm1pbmUgdGhlIGJlc3QgZW5jb2RpbmcgZm9yIHRoZSBjdXJyZW50IGJsb2NrOiBkeW5hbWljIHRyZWVzLCBzdGF0aWMKICogdHJlZXMgb3Igc3RvcmUsIGFuZCBvdXRwdXQgdGhlIGVuY29kZWQgYmxvY2sgdG8gdGhlIHppcCBmaWxlLgogKi8KZnVuY3Rpb24gX3RyX2ZsdXNoX2Jsb2NrKHMsIGJ1Ziwgc3RvcmVkX2xlbiwgbGFzdCkKLy9EZWZsYXRlU3RhdGUgKnM7Ci8vY2hhcmYgKmJ1ZjsgICAgICAgLyogaW5wdXQgYmxvY2ssIG9yIE5VTEwgaWYgdG9vIG9sZCAqLwovL3VsZyBzdG9yZWRfbGVuOyAgIC8qIGxlbmd0aCBvZiBpbnB1dCBibG9jayAqLwovL2ludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi8KewogIHZhciBvcHRfbGVuYiwgc3RhdGljX2xlbmI7ICAvKiBvcHRfbGVuIGFuZCBzdGF0aWNfbGVuIGluIGJ5dGVzICovCiAgdmFyIG1heF9ibGluZGV4ID0gMDsgICAgICAgIC8qIGluZGV4IG9mIGxhc3QgYml0IGxlbmd0aCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXEgKi8KCiAgLyogQnVpbGQgdGhlIEh1ZmZtYW4gdHJlZXMgdW5sZXNzIGEgc3RvcmVkIGJsb2NrIGlzIGZvcmNlZCAqLwogIGlmIChzLmxldmVsID4gMCkgewoKICAgIC8qIENoZWNrIGlmIHRoZSBmaWxlIGlzIGJpbmFyeSBvciB0ZXh0ICovCiAgICBpZiAocy5zdHJtLmRhdGFfdHlwZSA9PT0gWl9VTktOT1dOKSB7CiAgICAgIHMuc3RybS5kYXRhX3R5cGUgPSBkZXRlY3RfZGF0YV90eXBlKHMpOwogICAgfQoKICAgIC8qIENvbnN0cnVjdCB0aGUgbGl0ZXJhbCBhbmQgZGlzdGFuY2UgdHJlZXMgKi8KICAgIGJ1aWxkX3RyZWUocywgcy5sX2Rlc2MpOwogICAgLy8gVHJhY2V2KChzdGRlcnIsICJcbmxpdCBkYXRhOiBkeW4gJWxkLCBzdGF0ICVsZCIsIHMtPm9wdF9sZW4sCiAgICAvLyAgICAgICAgcy0+c3RhdGljX2xlbikpOwoKICAgIGJ1aWxkX3RyZWUocywgcy5kX2Rlc2MpOwogICAgLy8gVHJhY2V2KChzdGRlcnIsICJcbmRpc3QgZGF0YTogZHluICVsZCwgc3RhdCAlbGQiLCBzLT5vcHRfbGVuLAogICAgLy8gICAgICAgIHMtPnN0YXRpY19sZW4pKTsKICAgIC8qIEF0IHRoaXMgcG9pbnQsIG9wdF9sZW4gYW5kIHN0YXRpY19sZW4gYXJlIHRoZSB0b3RhbCBiaXQgbGVuZ3RocyBvZgogICAgICogdGhlIGNvbXByZXNzZWQgYmxvY2sgZGF0YSwgZXhjbHVkaW5nIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9ucy4KICAgICAqLwoKICAgIC8qIEJ1aWxkIHRoZSBiaXQgbGVuZ3RoIHRyZWUgZm9yIHRoZSBhYm92ZSB0d28gdHJlZXMsIGFuZCBnZXQgdGhlIGluZGV4CiAgICAgKiBpbiBibF9vcmRlciBvZiB0aGUgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgdG8gc2VuZC4KICAgICAqLwogICAgbWF4X2JsaW5kZXggPSBidWlsZF9ibF90cmVlKHMpOwoKICAgIC8qIERldGVybWluZSB0aGUgYmVzdCBlbmNvZGluZy4gQ29tcHV0ZSB0aGUgYmxvY2sgbGVuZ3RocyBpbiBieXRlcy4gKi8KICAgIG9wdF9sZW5iID0gKHMub3B0X2xlbiArIDMgKyA3KSA+Pj4gMzsKICAgIHN0YXRpY19sZW5iID0gKHMuc3RhdGljX2xlbiArIDMgKyA3KSA+Pj4gMzsKCiAgICAvLyBUcmFjZXYoKHN0ZGVyciwgIlxub3B0ICVsdSglbHUpIHN0YXQgJWx1KCVsdSkgc3RvcmVkICVsdSBsaXQgJXUgIiwKICAgIC8vICAgICAgICBvcHRfbGVuYiwgcy0+b3B0X2xlbiwgc3RhdGljX2xlbmIsIHMtPnN0YXRpY19sZW4sIHN0b3JlZF9sZW4sCiAgICAvLyAgICAgICAgcy0+bGFzdF9saXQpKTsKCiAgICBpZiAoc3RhdGljX2xlbmIgPD0gb3B0X2xlbmIpIHsgb3B0X2xlbmIgPSBzdGF0aWNfbGVuYjsgfQoKICB9IGVsc2UgewogICAgLy8gQXNzZXJ0KGJ1ZiAhPSAoY2hhciopMCwgImxvc3QgYnVmIik7CiAgICBvcHRfbGVuYiA9IHN0YXRpY19sZW5iID0gc3RvcmVkX2xlbiArIDU7IC8qIGZvcmNlIGEgc3RvcmVkIGJsb2NrICovCiAgfQoKICBpZiAoKHN0b3JlZF9sZW4gKyA0IDw9IG9wdF9sZW5iKSAmJiAoYnVmICE9PSAtMSkpIHsKICAgIC8qIDQ6IHR3byB3b3JkcyBmb3IgdGhlIGxlbmd0aHMgKi8KCiAgICAvKiBUaGUgdGVzdCBidWYgIT0gTlVMTCBpcyBvbmx5IG5lY2Vzc2FyeSBpZiBMSVRfQlVGU0laRSA+IFdTSVpFLgogICAgICogT3RoZXJ3aXNlIHdlIGNhbid0IGhhdmUgcHJvY2Vzc2VkIG1vcmUgdGhhbiBXU0laRSBpbnB1dCBieXRlcyBzaW5jZQogICAgICogdGhlIGxhc3QgYmxvY2sgZmx1c2gsIGJlY2F1c2UgY29tcHJlc3Npb24gd291bGQgaGF2ZSBiZWVuCiAgICAgKiBzdWNjZXNzZnVsLiBJZiBMSVRfQlVGU0laRSA8PSBXU0laRSwgaXQgaXMgbmV2ZXIgdG9vIGxhdGUgdG8KICAgICAqIHRyYW5zZm9ybSBhIGJsb2NrIGludG8gYSBzdG9yZWQgYmxvY2suCiAgICAgKi8KICAgIF90cl9zdG9yZWRfYmxvY2socywgYnVmLCBzdG9yZWRfbGVuLCBsYXN0KTsKCiAgfSBlbHNlIGlmIChzLnN0cmF0ZWd5ID09PSBaX0ZJWEVEIHx8IHN0YXRpY19sZW5iID09PSBvcHRfbGVuYikgewoKICAgIHNlbmRfYml0cyhzLCAoU1RBVElDX1RSRUVTIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpOwogICAgY29tcHJlc3NfYmxvY2socywgc3RhdGljX2x0cmVlLCBzdGF0aWNfZHRyZWUpOwoKICB9IGVsc2UgewogICAgc2VuZF9iaXRzKHMsIChEWU5fVFJFRVMgPDwgMSkgKyAobGFzdCA/IDEgOiAwKSwgMyk7CiAgICBzZW5kX2FsbF90cmVlcyhzLCBzLmxfZGVzYy5tYXhfY29kZSArIDEsIHMuZF9kZXNjLm1heF9jb2RlICsgMSwgbWF4X2JsaW5kZXggKyAxKTsKICAgIGNvbXByZXNzX2Jsb2NrKHMsIHMuZHluX2x0cmVlLCBzLmR5bl9kdHJlZSk7CiAgfQogIC8vIEFzc2VydCAocy0+Y29tcHJlc3NlZF9sZW4gPT0gcy0+Yml0c19zZW50LCAiYmFkIGNvbXByZXNzZWQgc2l6ZSIpOwogIC8qIFRoZSBhYm92ZSBjaGVjayBpcyBtYWRlIG1vZCAyXjMyLCBmb3IgZmlsZXMgbGFyZ2VyIHRoYW4gNTEyIE1CCiAgICogYW5kIHVMb25nIGltcGxlbWVudGVkIG9uIDMyIGJpdHMuCiAgICovCiAgaW5pdF9ibG9jayhzKTsKCiAgaWYgKGxhc3QpIHsKICAgIGJpX3dpbmR1cChzKTsKICB9CiAgLy8gVHJhY2V2KChzdGRlcnIsIlxuY29tcHJsZW4gJWx1KCVsdSkgIiwgcy0+Y29tcHJlc3NlZF9sZW4+PjMsCiAgLy8gICAgICAgcy0+Y29tcHJlc3NlZF9sZW4tNypsYXN0KSk7Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiBTYXZlIHRoZSBtYXRjaCBpbmZvIGFuZCB0YWxseSB0aGUgZnJlcXVlbmN5IGNvdW50cy4gUmV0dXJuIHRydWUgaWYKICogdGhlIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkLgogKi8KZnVuY3Rpb24gX3RyX3RhbGx5KHMsIGRpc3QsIGxjKQovLyAgICBkZWZsYXRlX3N0YXRlICpzOwovLyAgICB1bnNpZ25lZCBkaXN0OyAgLyogZGlzdGFuY2Ugb2YgbWF0Y2hlZCBzdHJpbmcgKi8KLy8gICAgdW5zaWduZWQgbGM7ICAgIC8qIG1hdGNoIGxlbmd0aC1NSU5fTUFUQ0ggb3IgdW5tYXRjaGVkIGNoYXIgKGlmIGRpc3Q9PTApICovCnsKICAvL3ZhciBvdXRfbGVuZ3RoLCBpbl9sZW5ndGgsIGRjb2RlOwoKICBzLnBlbmRpbmdfYnVmW3MuZF9idWYgKyBzLmxhc3RfbGl0ICogMl0gICAgID0gKGRpc3QgPj4+IDgpICYgMHhmZjsKICBzLnBlbmRpbmdfYnVmW3MuZF9idWYgKyBzLmxhc3RfbGl0ICogMiArIDFdID0gZGlzdCAmIDB4ZmY7CgogIHMucGVuZGluZ19idWZbcy5sX2J1ZiArIHMubGFzdF9saXRdID0gbGMgJiAweGZmOwogIHMubGFzdF9saXQrKzsKCiAgaWYgKGRpc3QgPT09IDApIHsKICAgIC8qIGxjIGlzIHRoZSB1bm1hdGNoZWQgY2hhciAqLwogICAgcy5keW5fbHRyZWVbbGMgKiAyXS8qLkZyZXEqLysrOwogIH0gZWxzZSB7CiAgICBzLm1hdGNoZXMrKzsKICAgIC8qIEhlcmUsIGxjIGlzIHRoZSBtYXRjaCBsZW5ndGggLSBNSU5fTUFUQ0ggKi8KICAgIGRpc3QtLTsgICAgICAgICAgICAgLyogZGlzdCA9IG1hdGNoIGRpc3RhbmNlIC0gMSAqLwogICAgLy9Bc3NlcnQoKHVzaClkaXN0IDwgKHVzaClNQVhfRElTVChzKSAmJgogICAgLy8gICAgICAgKHVzaClsYyA8PSAodXNoKShNQVhfTUFUQ0gtTUlOX01BVENIKSAmJgogICAgLy8gICAgICAgKHVzaClkX2NvZGUoZGlzdCkgPCAodXNoKURfQ09ERVMsICAiX3RyX3RhbGx5OiBiYWQgbWF0Y2giKTsKCiAgICBzLmR5bl9sdHJlZVsoX2xlbmd0aF9jb2RlW2xjXSArIExJVEVSQUxTICsgMSkgKiAyXS8qLkZyZXEqLysrOwogICAgcy5keW5fZHRyZWVbZF9jb2RlKGRpc3QpICogMl0vKi5GcmVxKi8rKzsKICB9CgovLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmF1bHRzLAovLyBkb24ndCBlbmFibGUgaXQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5CgovLyNpZmRlZiBUUlVOQ0FURV9CTE9DSwovLyAgLyogVHJ5IHRvIGd1ZXNzIGlmIGl0IGlzIHByb2ZpdGFibGUgdG8gc3RvcCB0aGUgY3VycmVudCBibG9jayBoZXJlICovCi8vICBpZiAoKHMubGFzdF9saXQgJiAweDFmZmYpID09PSAwICYmIHMubGV2ZWwgPiAyKSB7Ci8vICAgIC8qIENvbXB1dGUgYW4gdXBwZXIgYm91bmQgZm9yIHRoZSBjb21wcmVzc2VkIGxlbmd0aCAqLwovLyAgICBvdXRfbGVuZ3RoID0gcy5sYXN0X2xpdCo4OwovLyAgICBpbl9sZW5ndGggPSBzLnN0cnN0YXJ0IC0gcy5ibG9ja19zdGFydDsKLy8KLy8gICAgZm9yIChkY29kZSA9IDA7IGRjb2RlIDwgRF9DT0RFUzsgZGNvZGUrKykgewovLyAgICAgIG91dF9sZW5ndGggKz0gcy5keW5fZHRyZWVbZGNvZGUqMl0vKi5GcmVxKi8gKiAoNSArIGV4dHJhX2RiaXRzW2Rjb2RlXSk7Ci8vICAgIH0KLy8gICAgb3V0X2xlbmd0aCA+Pj49IDM7Ci8vICAgIC8vVHJhY2V2KChzdGRlcnIsIlxubGFzdF9saXQgJXUsIGluICVsZCwgb3V0IH4lbGQoJWxkJSUpICIsCi8vICAgIC8vICAgICAgIHMtPmxhc3RfbGl0LCBpbl9sZW5ndGgsIG91dF9sZW5ndGgsCi8vICAgIC8vICAgICAgIDEwMEwgLSBvdXRfbGVuZ3RoKjEwMEwvaW5fbGVuZ3RoKSk7Ci8vICAgIGlmIChzLm1hdGNoZXMgPCAocy5sYXN0X2xpdD4+MSkvKmludCAvMiovICYmIG91dF9sZW5ndGggPCAoaW5fbGVuZ3RoPj4xKS8qaW50IC8yKi8pIHsKLy8gICAgICByZXR1cm4gdHJ1ZTsKLy8gICAgfQovLyAgfQovLyNlbmRpZgoKICByZXR1cm4gKHMubGFzdF9saXQgPT09IHMubGl0X2J1ZnNpemUgLSAxKTsKICAvKiBXZSBhdm9pZCBlcXVhbGl0eSB3aXRoIGxpdF9idWZzaXplIGJlY2F1c2Ugb2Ygd3JhcGFyb3VuZCBhdCA2NEsKICAgKiBvbiAxNiBiaXQgbWFjaGluZXMgYW5kIGJlY2F1c2Ugc3RvcmVkIGJsb2NrcyBhcmUgcmVzdHJpY3RlZCB0bwogICAqIDY0Sy0xIGJ5dGVzLgogICAqLwp9CgpleHBvcnRzLl90cl9pbml0ICA9IF90cl9pbml0OwpleHBvcnRzLl90cl9zdG9yZWRfYmxvY2sgPSBfdHJfc3RvcmVkX2Jsb2NrOwpleHBvcnRzLl90cl9mbHVzaF9ibG9jayAgPSBfdHJfZmx1c2hfYmxvY2s7CmV4cG9ydHMuX3RyX3RhbGx5ID0gX3RyX3RhbGx5OwpleHBvcnRzLl90cl9hbGlnbiA9IF90cl9hbGlnbjsKCgovKioqLyB9KSwKLyogMTU2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW4KLy8KLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi8vCi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAovLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLy8KLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZQovLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQovLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgovLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgMjogICAgICAnbmVlZCBkaWN0aW9uYXJ5JywgICAgIC8qIFpfTkVFRF9ESUNUICAgICAgIDIgICovCiAgMTogICAgICAnc3RyZWFtIGVuZCcsICAgICAgICAgIC8qIFpfU1RSRUFNX0VORCAgICAgIDEgICovCiAgMDogICAgICAnJywgICAgICAgICAgICAgICAgICAgIC8qIFpfT0sgICAgICAgICAgICAgIDAgICovCiAgJy0xJzogICAnZmlsZSBlcnJvcicsICAgICAgICAgIC8qIFpfRVJSTk8gICAgICAgICAoLTEpICovCiAgJy0yJzogICAnc3RyZWFtIGVycm9yJywgICAgICAgIC8qIFpfU1RSRUFNX0VSUk9SICAoLTIpICovCiAgJy0zJzogICAnZGF0YSBlcnJvcicsICAgICAgICAgIC8qIFpfREFUQV9FUlJPUiAgICAoLTMpICovCiAgJy00JzogICAnaW5zdWZmaWNpZW50IG1lbW9yeScsIC8qIFpfTUVNX0VSUk9SICAgICAoLTQpICovCiAgJy01JzogICAnYnVmZmVyIGVycm9yJywgICAgICAgIC8qIFpfQlVGX0VSUk9SICAgICAoLTUpICovCiAgJy02JzogICAnaW5jb21wYXRpYmxlIHZlcnNpb24nIC8qIFpfVkVSU0lPTl9FUlJPUiAoLTYpICovCn07CgoKLyoqKi8gfSksCi8qIDE1NyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyCi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luCi8vCi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcwovLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgovLwovLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSwKLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdAovLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6Ci8vCi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90Ci8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUKLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUKLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgovLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZQovLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi4KCnZhciB1dGlscyAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNCk7CnZhciBhZGxlcjMyICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4OSk7CnZhciBjcmMzMiAgICAgICAgID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5MCk7CnZhciBpbmZsYXRlX2Zhc3QgID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTgpOwp2YXIgaW5mbGF0ZV90YWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTU5KTsKCnZhciBDT0RFUyA9IDA7CnZhciBMRU5TID0gMTsKdmFyIERJU1RTID0gMjsKCi8qIFB1YmxpYyBjb25zdGFudHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCgoKLyogQWxsb3dlZCBmbHVzaCB2YWx1ZXM7IHNlZSBkZWZsYXRlKCkgYW5kIGluZmxhdGUoKSBiZWxvdyBmb3IgZGV0YWlscyAqLwovL3ZhciBaX05PX0ZMVVNIICAgICAgPSAwOwovL3ZhciBaX1BBUlRJQUxfRkxVU0ggPSAxOwovL3ZhciBaX1NZTkNfRkxVU0ggICAgPSAyOwovL3ZhciBaX0ZVTExfRkxVU0ggICAgPSAzOwp2YXIgWl9GSU5JU0ggICAgICAgID0gNDsKdmFyIFpfQkxPQ0sgICAgICAgICA9IDU7CnZhciBaX1RSRUVTICAgICAgICAgPSA2OwoKCi8qIFJldHVybiBjb2RlcyBmb3IgdGhlIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gZnVuY3Rpb25zLiBOZWdhdGl2ZSB2YWx1ZXMKICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLgogKi8KdmFyIFpfT0sgICAgICAgICAgICA9IDA7CnZhciBaX1NUUkVBTV9FTkQgICAgPSAxOwp2YXIgWl9ORUVEX0RJQ1QgICAgID0gMjsKLy92YXIgWl9FUlJOTyAgICAgICAgID0gLTE7CnZhciBaX1NUUkVBTV9FUlJPUiAgPSAtMjsKdmFyIFpfREFUQV9FUlJPUiAgICA9IC0zOwp2YXIgWl9NRU1fRVJST1IgICAgID0gLTQ7CnZhciBaX0JVRl9FUlJPUiAgICAgPSAtNTsKLy92YXIgWl9WRVJTSU9OX0VSUk9SID0gLTY7CgovKiBUaGUgZGVmbGF0ZSBjb21wcmVzc2lvbiBtZXRob2QgKi8KdmFyIFpfREVGTEFURUQgID0gODsKCgovKiBTVEFURVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoKCnZhciAgICBIRUFEID0gMTsgICAgICAgLyogaTogd2FpdGluZyBmb3IgbWFnaWMgaGVhZGVyICovCnZhciAgICBGTEFHUyA9IDI7ICAgICAgLyogaTogd2FpdGluZyBmb3IgbWV0aG9kIGFuZCBmbGFncyAoZ3ppcCkgKi8KdmFyICAgIFRJTUUgPSAzOyAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBtb2RpZmljYXRpb24gdGltZSAoZ3ppcCkgKi8KdmFyICAgIE9TID0gNDsgICAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBmbGFncyBhbmQgb3BlcmF0aW5nIHN5c3RlbSAoZ3ppcCkgKi8KdmFyICAgIEVYTEVOID0gNTsgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBsZW5ndGggKGd6aXApICovCnZhciAgICBFWFRSQSA9IDY7ICAgICAgLyogaTogd2FpdGluZyBmb3IgZXh0cmEgYnl0ZXMgKGd6aXApICovCnZhciAgICBOQU1FID0gNzsgICAgICAgLyogaTogd2FpdGluZyBmb3IgZW5kIG9mIGZpbGUgbmFtZSAoZ3ppcCkgKi8KdmFyICAgIENPTU1FTlQgPSA4OyAgICAvKiBpOiB3YWl0aW5nIGZvciBlbmQgb2YgY29tbWVudCAoZ3ppcCkgKi8KdmFyICAgIEhDUkMgPSA5OyAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBoZWFkZXIgY3JjIChnemlwKSAqLwp2YXIgICAgRElDVElEID0gMTA7ICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpY3Rpb25hcnkgY2hlY2sgdmFsdWUgKi8KdmFyICAgIERJQ1QgPSAxMTsgICAgICAvKiB3YWl0aW5nIGZvciBpbmZsYXRlU2V0RGljdGlvbmFyeSgpIGNhbGwgKi8KdmFyICAgICAgICBUWVBFID0gMTI7ICAgICAgLyogaTogd2FpdGluZyBmb3IgdHlwZSBiaXRzLCBpbmNsdWRpbmcgbGFzdC1mbGFnIGJpdCAqLwp2YXIgICAgICAgIFRZUEVETyA9IDEzOyAgICAvKiBpOiBzYW1lLCBidXQgc2tpcCBjaGVjayB0byBleGl0IGluZmxhdGUgb24gbmV3IGJsb2NrICovCnZhciAgICAgICAgU1RPUkVEID0gMTQ7ICAgIC8qIGk6IHdhaXRpbmcgZm9yIHN0b3JlZCBzaXplIChsZW5ndGggYW5kIGNvbXBsZW1lbnQpICovCnZhciAgICAgICAgQ09QWV8gPSAxNTsgICAgIC8qIGkvbzogc2FtZSBhcyBDT1BZIGJlbG93LCBidXQgb25seSBmaXJzdCB0aW1lIGluICovCnZhciAgICAgICAgQ09QWSA9IDE2OyAgICAgIC8qIGkvbzogd2FpdGluZyBmb3IgaW5wdXQgb3Igb3V0cHV0IHRvIGNvcHkgc3RvcmVkIGJsb2NrICovCnZhciAgICAgICAgVEFCTEUgPSAxNzsgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGR5bmFtaWMgYmxvY2sgdGFibGUgbGVuZ3RocyAqLwp2YXIgICAgICAgIExFTkxFTlMgPSAxODsgICAvKiBpOiB3YWl0aW5nIGZvciBjb2RlIGxlbmd0aCBjb2RlIGxlbmd0aHMgKi8KdmFyICAgICAgICBDT0RFTEVOUyA9IDE5OyAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoL2xpdCBhbmQgZGlzdGFuY2UgY29kZSBsZW5ndGhzICovCnZhciAgICAgICAgICAgIExFTl8gPSAyMDsgICAgICAvKiBpOiBzYW1lIGFzIExFTiBiZWxvdywgYnV0IG9ubHkgZmlyc3QgdGltZSBpbiAqLwp2YXIgICAgICAgICAgICBMRU4gPSAyMTsgICAgICAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoL2xpdC9lb2IgY29kZSAqLwp2YXIgICAgICAgICAgICBMRU5FWFQgPSAyMjsgICAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoIGV4dHJhIGJpdHMgKi8KdmFyICAgICAgICAgICAgRElTVCA9IDIzOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpc3RhbmNlIGNvZGUgKi8KdmFyICAgICAgICAgICAgRElTVEVYVCA9IDI0OyAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpc3RhbmNlIGV4dHJhIGJpdHMgKi8KdmFyICAgICAgICAgICAgTUFUQ0ggPSAyNTsgICAgIC8qIG86IHdhaXRpbmcgZm9yIG91dHB1dCBzcGFjZSB0byBjb3B5IHN0cmluZyAqLwp2YXIgICAgICAgICAgICBMSVQgPSAyNjsgICAgICAgLyogbzogd2FpdGluZyBmb3Igb3V0cHV0IHNwYWNlIHRvIHdyaXRlIGxpdGVyYWwgKi8KdmFyICAgIENIRUNLID0gMjc7ICAgICAvKiBpOiB3YWl0aW5nIGZvciAzMi1iaXQgY2hlY2sgdmFsdWUgKi8KdmFyICAgIExFTkdUSCA9IDI4OyAgICAvKiBpOiB3YWl0aW5nIGZvciAzMi1iaXQgbGVuZ3RoIChnemlwKSAqLwp2YXIgICAgRE9ORSA9IDI5OyAgICAgIC8qIGZpbmlzaGVkIGNoZWNrLCBkb25lIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovCnZhciAgICBCQUQgPSAzMDsgICAgICAgLyogZ290IGEgZGF0YSBlcnJvciAtLSByZW1haW4gaGVyZSB1bnRpbCByZXNldCAqLwp2YXIgICAgTUVNID0gMzE7ICAgICAgIC8qIGdvdCBhbiBpbmZsYXRlKCkgbWVtb3J5IGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovCnZhciAgICBTWU5DID0gMzI7ICAgICAgLyogbG9va2luZyBmb3Igc3luY2hyb25pemF0aW9uIGJ5dGVzIHRvIHJlc3RhcnQgaW5mbGF0ZSgpICovCgovKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwoKCgp2YXIgRU5PVUdIX0xFTlMgPSA4NTI7CnZhciBFTk9VR0hfRElTVFMgPSA1OTI7Ci8vdmFyIEVOT1VHSCA9ICAoRU5PVUdIX0xFTlMrRU5PVUdIX0RJU1RTKTsKCnZhciBNQVhfV0JJVFMgPSAxNTsKLyogMzJLIExaNzcgd2luZG93ICovCnZhciBERUZfV0JJVFMgPSBNQVhfV0JJVFM7CgoKZnVuY3Rpb24genN3YXAzMihxKSB7CiAgcmV0dXJuICAoKChxID4+PiAyNCkgJiAweGZmKSArCiAgICAgICAgICAoKHEgPj4+IDgpICYgMHhmZjAwKSArCiAgICAgICAgICAoKHEgJiAweGZmMDApIDw8IDgpICsKICAgICAgICAgICgocSAmIDB4ZmYpIDw8IDI0KSk7Cn0KCgpmdW5jdGlvbiBJbmZsYXRlU3RhdGUoKSB7CiAgdGhpcy5tb2RlID0gMDsgICAgICAgICAgICAgLyogY3VycmVudCBpbmZsYXRlIG1vZGUgKi8KICB0aGlzLmxhc3QgPSBmYWxzZTsgICAgICAgICAgLyogdHJ1ZSBpZiBwcm9jZXNzaW5nIGxhc3QgYmxvY2sgKi8KICB0aGlzLndyYXAgPSAwOyAgICAgICAgICAgICAgLyogYml0IDAgdHJ1ZSBmb3IgemxpYiwgYml0IDEgdHJ1ZSBmb3IgZ3ppcCAqLwogIHRoaXMuaGF2ZWRpY3QgPSBmYWxzZTsgICAgICAvKiB0cnVlIGlmIGRpY3Rpb25hcnkgcHJvdmlkZWQgKi8KICB0aGlzLmZsYWdzID0gMDsgICAgICAgICAgICAgLyogZ3ppcCBoZWFkZXIgbWV0aG9kIGFuZCBmbGFncyAoMCBpZiB6bGliKSAqLwogIHRoaXMuZG1heCA9IDA7ICAgICAgICAgICAgICAvKiB6bGliIGhlYWRlciBtYXggZGlzdGFuY2UgKElORkxBVEVfU1RSSUNUKSAqLwogIHRoaXMuY2hlY2sgPSAwOyAgICAgICAgICAgICAvKiBwcm90ZWN0ZWQgY29weSBvZiBjaGVjayB2YWx1ZSAqLwogIHRoaXMudG90YWwgPSAwOyAgICAgICAgICAgICAvKiBwcm90ZWN0ZWQgY29weSBvZiBvdXRwdXQgY291bnQgKi8KICAvLyBUT0RPOiBtYXkgYmUge30KICB0aGlzLmhlYWQgPSBudWxsOyAgICAgICAgICAgLyogd2hlcmUgdG8gc2F2ZSBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiAqLwoKICAvKiBzbGlkaW5nIHdpbmRvdyAqLwogIHRoaXMud2JpdHMgPSAwOyAgICAgICAgICAgICAvKiBsb2cgYmFzZSAyIG9mIHJlcXVlc3RlZCB3aW5kb3cgc2l6ZSAqLwogIHRoaXMud3NpemUgPSAwOyAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSBvciB6ZXJvIGlmIG5vdCB1c2luZyB3aW5kb3cgKi8KICB0aGlzLndoYXZlID0gMDsgICAgICAgICAgICAgLyogdmFsaWQgYnl0ZXMgaW4gdGhlIHdpbmRvdyAqLwogIHRoaXMud25leHQgPSAwOyAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi8KICB0aGlzLndpbmRvdyA9IG51bGw7ICAgICAgICAgLyogYWxsb2NhdGVkIHNsaWRpbmcgd2luZG93LCBpZiBuZWVkZWQgKi8KCiAgLyogYml0IGFjY3VtdWxhdG9yICovCiAgdGhpcy5ob2xkID0gMDsgICAgICAgICAgICAgIC8qIGlucHV0IGJpdCBhY2N1bXVsYXRvciAqLwogIHRoaXMuYml0cyA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYml0cyBpbiAiaW4iICovCgogIC8qIGZvciBzdHJpbmcgYW5kIHN0b3JlZCBibG9jayBjb3B5aW5nICovCiAgdGhpcy5sZW5ndGggPSAwOyAgICAgICAgICAgIC8qIGxpdGVyYWwgb3IgbGVuZ3RoIG9mIGRhdGEgdG8gY29weSAqLwogIHRoaXMub2Zmc2V0ID0gMDsgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYWNrIHRvIGNvcHkgc3RyaW5nIGZyb20gKi8KCiAgLyogZm9yIHRhYmxlIGFuZCBjb2RlIGRlY29kaW5nICovCiAgdGhpcy5leHRyYSA9IDA7ICAgICAgICAgICAgIC8qIGV4dHJhIGJpdHMgbmVlZGVkICovCgogIC8qIGZpeGVkIGFuZCBkeW5hbWljIGNvZGUgdGFibGVzICovCiAgdGhpcy5sZW5jb2RlID0gbnVsbDsgICAgICAgICAgLyogc3RhcnRpbmcgdGFibGUgZm9yIGxlbmd0aC9saXRlcmFsIGNvZGVzICovCiAgdGhpcy5kaXN0Y29kZSA9IG51bGw7ICAgICAgICAgLyogc3RhcnRpbmcgdGFibGUgZm9yIGRpc3RhbmNlIGNvZGVzICovCiAgdGhpcy5sZW5iaXRzID0gMDsgICAgICAgICAgIC8qIGluZGV4IGJpdHMgZm9yIGxlbmNvZGUgKi8KICB0aGlzLmRpc3RiaXRzID0gMDsgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgZGlzdGNvZGUgKi8KCiAgLyogZHluYW1pYyB0YWJsZSBidWlsZGluZyAqLwogIHRoaXMubmNvZGUgPSAwOyAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZSBsZW5ndGggY29kZSBsZW5ndGhzICovCiAgdGhpcy5ubGVuID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBsZW5ndGggY29kZSBsZW5ndGhzICovCiAgdGhpcy5uZGlzdCA9IDA7ICAgICAgICAgICAgIC8qIG51bWJlciBvZiBkaXN0YW5jZSBjb2RlIGxlbmd0aHMgKi8KICB0aGlzLmhhdmUgPSAwOyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNvZGUgbGVuZ3RocyBpbiBsZW5zW10gKi8KICB0aGlzLm5leHQgPSBudWxsOyAgICAgICAgICAgICAgLyogbmV4dCBhdmFpbGFibGUgc3BhY2UgaW4gY29kZXNbXSAqLwoKICB0aGlzLmxlbnMgPSBuZXcgdXRpbHMuQnVmMTYoMzIwKTsgLyogdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIGNvZGUgbGVuZ3RocyAqLwogIHRoaXMud29yayA9IG5ldyB1dGlscy5CdWYxNigyODgpOyAvKiB3b3JrIGFyZWEgZm9yIGNvZGUgdGFibGUgYnVpbGRpbmcgKi8KCiAgLyoKICAgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHBvaW50ZXJzIGluIGpzLCB3ZSB1c2UgbGVuY29kZSBhbmQgZGlzdGNvZGUgZGlyZWN0bHkKICAgYXMgYnVmZmVycyBzbyB3ZSBkb24ndCBuZWVkIGNvZGVzCiAgKi8KICAvL3RoaXMuY29kZXMgPSBuZXcgdXRpbHMuQnVmMzIoRU5PVUdIKTsgICAgICAgLyogc3BhY2UgZm9yIGNvZGUgdGFibGVzICovCiAgdGhpcy5sZW5keW4gPSBudWxsOyAgICAgICAgICAgICAgLyogZHluYW1pYyB0YWJsZSBmb3IgbGVuZ3RoL2xpdGVyYWwgY29kZXMgKEpTIHNwZWNpZmljKSAqLwogIHRoaXMuZGlzdGR5biA9IG51bGw7ICAgICAgICAgICAgIC8qIGR5bmFtaWMgdGFibGUgZm9yIGRpc3RhbmNlIGNvZGVzIChKUyBzcGVjaWZpYykgKi8KICB0aGlzLnNhbmUgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBpZiBmYWxzZSwgYWxsb3cgaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyICovCiAgdGhpcy5iYWNrID0gMDsgICAgICAgICAgICAgICAgICAgLyogYml0cyBiYWNrIG9mIGxhc3QgdW5wcm9jZXNzZWQgbGVuZ3RoL2xpdCAqLwogIHRoaXMud2FzID0gMDsgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWwgbGVuZ3RoIG9mIG1hdGNoICovCn0KCmZ1bmN0aW9uIGluZmxhdGVSZXNldEtlZXAoc3RybSkgewogIHZhciBzdGF0ZTsKCiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfQogIHN0YXRlID0gc3RybS5zdGF0ZTsKICBzdHJtLnRvdGFsX2luID0gc3RybS50b3RhbF9vdXQgPSBzdGF0ZS50b3RhbCA9IDA7CiAgc3RybS5tc2cgPSAnJzsgLypaX05VTEwqLwogIGlmIChzdGF0ZS53cmFwKSB7ICAgICAgIC8qIHRvIHN1cHBvcnQgaWxsLWNvbmNlaXZlZCBKYXZhIHRlc3Qgc3VpdGUgKi8KICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS53cmFwICYgMTsKICB9CiAgc3RhdGUubW9kZSA9IEhFQUQ7CiAgc3RhdGUubGFzdCA9IDA7CiAgc3RhdGUuaGF2ZWRpY3QgPSAwOwogIHN0YXRlLmRtYXggPSAzMjc2ODsKICBzdGF0ZS5oZWFkID0gbnVsbC8qWl9OVUxMKi87CiAgc3RhdGUuaG9sZCA9IDA7CiAgc3RhdGUuYml0cyA9IDA7CiAgLy9zdGF0ZS5sZW5jb2RlID0gc3RhdGUuZGlzdGNvZGUgPSBzdGF0ZS5uZXh0ID0gc3RhdGUuY29kZXM7CiAgc3RhdGUubGVuY29kZSA9IHN0YXRlLmxlbmR5biA9IG5ldyB1dGlscy5CdWYzMihFTk9VR0hfTEVOUyk7CiAgc3RhdGUuZGlzdGNvZGUgPSBzdGF0ZS5kaXN0ZHluID0gbmV3IHV0aWxzLkJ1ZjMyKEVOT1VHSF9ESVNUUyk7CgogIHN0YXRlLnNhbmUgPSAxOwogIHN0YXRlLmJhY2sgPSAtMTsKICAvL1RyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogcmVzZXRcbiIpKTsKICByZXR1cm4gWl9PSzsKfQoKZnVuY3Rpb24gaW5mbGF0ZVJlc2V0KHN0cm0pIHsKICB2YXIgc3RhdGU7CgogIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH0KICBzdGF0ZSA9IHN0cm0uc3RhdGU7CiAgc3RhdGUud3NpemUgPSAwOwogIHN0YXRlLndoYXZlID0gMDsKICBzdGF0ZS53bmV4dCA9IDA7CiAgcmV0dXJuIGluZmxhdGVSZXNldEtlZXAoc3RybSk7Cgp9CgpmdW5jdGlvbiBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpIHsKICB2YXIgd3JhcDsKICB2YXIgc3RhdGU7CgogIC8qIGdldCB0aGUgc3RhdGUgKi8KICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9CiAgc3RhdGUgPSBzdHJtLnN0YXRlOwoKICAvKiBleHRyYWN0IHdyYXAgcmVxdWVzdCBmcm9tIHdpbmRvd0JpdHMgcGFyYW1ldGVyICovCiAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7CiAgICB3cmFwID0gMDsKICAgIHdpbmRvd0JpdHMgPSAtd2luZG93Qml0czsKICB9CiAgZWxzZSB7CiAgICB3cmFwID0gKHdpbmRvd0JpdHMgPj4gNCkgKyAxOwogICAgaWYgKHdpbmRvd0JpdHMgPCA0OCkgewogICAgICB3aW5kb3dCaXRzICY9IDE1OwogICAgfQogIH0KCiAgLyogc2V0IG51bWJlciBvZiB3aW5kb3cgYml0cywgZnJlZSB3aW5kb3cgaWYgZGlmZmVyZW50ICovCiAgaWYgKHdpbmRvd0JpdHMgJiYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkpIHsKICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICB9CiAgaWYgKHN0YXRlLndpbmRvdyAhPT0gbnVsbCAmJiBzdGF0ZS53Yml0cyAhPT0gd2luZG93Qml0cykgewogICAgc3RhdGUud2luZG93ID0gbnVsbDsKICB9CgogIC8qIHVwZGF0ZSBzdGF0ZSBhbmQgcmVzZXQgdGhlIHJlc3Qgb2YgaXQgKi8KICBzdGF0ZS53cmFwID0gd3JhcDsKICBzdGF0ZS53Yml0cyA9IHdpbmRvd0JpdHM7CiAgcmV0dXJuIGluZmxhdGVSZXNldChzdHJtKTsKfQoKZnVuY3Rpb24gaW5mbGF0ZUluaXQyKHN0cm0sIHdpbmRvd0JpdHMpIHsKICB2YXIgcmV0OwogIHZhciBzdGF0ZTsKCiAgaWYgKCFzdHJtKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfQogIC8vc3RybS5tc2cgPSBaX05VTEw7ICAgICAgICAgICAgICAgICAvKiBpbiBjYXNlIHdlIHJldHVybiBhbiBlcnJvciAqLwoKICBzdGF0ZSA9IG5ldyBJbmZsYXRlU3RhdGUoKTsKCiAgLy9pZiAoc3RhdGUgPT09IFpfTlVMTCkgcmV0dXJuIFpfTUVNX0VSUk9SOwogIC8vVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiBhbGxvY2F0ZWRcbiIpKTsKICBzdHJtLnN0YXRlID0gc3RhdGU7CiAgc3RhdGUud2luZG93ID0gbnVsbC8qWl9OVUxMKi87CiAgcmV0ID0gaW5mbGF0ZVJlc2V0MihzdHJtLCB3aW5kb3dCaXRzKTsKICBpZiAocmV0ICE9PSBaX09LKSB7CiAgICBzdHJtLnN0YXRlID0gbnVsbC8qWl9OVUxMKi87CiAgfQogIHJldHVybiByZXQ7Cn0KCmZ1bmN0aW9uIGluZmxhdGVJbml0KHN0cm0pIHsKICByZXR1cm4gaW5mbGF0ZUluaXQyKHN0cm0sIERFRl9XQklUUyk7Cn0KCgovKgogUmV0dXJuIHN0YXRlIHdpdGggbGVuZ3RoIGFuZCBkaXN0YW5jZSBkZWNvZGluZyB0YWJsZXMgYW5kIGluZGV4IHNpemVzIHNldCB0bwogZml4ZWQgY29kZSBkZWNvZGluZy4gIE5vcm1hbGx5IHRoaXMgcmV0dXJucyBmaXhlZCB0YWJsZXMgZnJvbSBpbmZmaXhlZC5oLgogSWYgQlVJTERGSVhFRCBpcyBkZWZpbmVkLCB0aGVuIGluc3RlYWQgdGhpcyByb3V0aW5lIGJ1aWxkcyB0aGUgdGFibGVzIHRoZQogZmlyc3QgdGltZSBpdCdzIGNhbGxlZCwgYW5kIHJldHVybnMgdGhvc2UgdGFibGVzIHRoZSBmaXJzdCB0aW1lIGFuZAogdGhlcmVhZnRlci4gIFRoaXMgcmVkdWNlcyB0aGUgc2l6ZSBvZiB0aGUgY29kZSBieSBhYm91dCAySyBieXRlcywgaW4KIGV4Y2hhbmdlIGZvciBhIGxpdHRsZSBleGVjdXRpb24gdGltZS4gIEhvd2V2ZXIsIEJVSUxERklYRUQgc2hvdWxkIG5vdCBiZQogdXNlZCBmb3IgdGhyZWFkZWQgYXBwbGljYXRpb25zLCBzaW5jZSB0aGUgcmV3cml0aW5nIG9mIHRoZSB0YWJsZXMgYW5kIHZpcmdpbgogbWF5IG5vdCBiZSB0aHJlYWQtc2FmZS4KICovCnZhciB2aXJnaW4gPSB0cnVlOwoKdmFyIGxlbmZpeCwgZGlzdGZpeDsgLy8gV2UgaGF2ZSBubyBwb2ludGVycyBpbiBKUywgc28ga2VlcCB0YWJsZXMgc2VwYXJhdGUKCmZ1bmN0aW9uIGZpeGVkdGFibGVzKHN0YXRlKSB7CiAgLyogYnVpbGQgZml4ZWQgaHVmZm1hbiB0YWJsZXMgaWYgZmlyc3QgY2FsbCAobWF5IG5vdCBiZSB0aHJlYWQgc2FmZSkgKi8KICBpZiAodmlyZ2luKSB7CiAgICB2YXIgc3ltOwoKICAgIGxlbmZpeCA9IG5ldyB1dGlscy5CdWYzMig1MTIpOwogICAgZGlzdGZpeCA9IG5ldyB1dGlscy5CdWYzMigzMik7CgogICAgLyogbGl0ZXJhbC9sZW5ndGggdGFibGUgKi8KICAgIHN5bSA9IDA7CiAgICB3aGlsZSAoc3ltIDwgMTQ0KSB7IHN0YXRlLmxlbnNbc3ltKytdID0gODsgfQogICAgd2hpbGUgKHN5bSA8IDI1NikgeyBzdGF0ZS5sZW5zW3N5bSsrXSA9IDk7IH0KICAgIHdoaWxlIChzeW0gPCAyODApIHsgc3RhdGUubGVuc1tzeW0rK10gPSA3OyB9CiAgICB3aGlsZSAoc3ltIDwgMjg4KSB7IHN0YXRlLmxlbnNbc3ltKytdID0gODsgfQoKICAgIGluZmxhdGVfdGFibGUoTEVOUywgIHN0YXRlLmxlbnMsIDAsIDI4OCwgbGVuZml4LCAgIDAsIHN0YXRlLndvcmssIHsgYml0czogOSB9KTsKCiAgICAvKiBkaXN0YW5jZSB0YWJsZSAqLwogICAgc3ltID0gMDsKICAgIHdoaWxlIChzeW0gPCAzMikgeyBzdGF0ZS5sZW5zW3N5bSsrXSA9IDU7IH0KCiAgICBpbmZsYXRlX3RhYmxlKERJU1RTLCBzdGF0ZS5sZW5zLCAwLCAzMiwgICBkaXN0Zml4LCAwLCBzdGF0ZS53b3JrLCB7IGJpdHM6IDUgfSk7CgogICAgLyogZG8gdGhpcyBqdXN0IG9uY2UgKi8KICAgIHZpcmdpbiA9IGZhbHNlOwogIH0KCiAgc3RhdGUubGVuY29kZSA9IGxlbmZpeDsKICBzdGF0ZS5sZW5iaXRzID0gOTsKICBzdGF0ZS5kaXN0Y29kZSA9IGRpc3RmaXg7CiAgc3RhdGUuZGlzdGJpdHMgPSA1Owp9CgoKLyoKIFVwZGF0ZSB0aGUgd2luZG93IHdpdGggdGhlIGxhc3Qgd3NpemUgKG5vcm1hbGx5IDMySykgYnl0ZXMgd3JpdHRlbiBiZWZvcmUKIHJldHVybmluZy4gIElmIHdpbmRvdyBkb2VzIG5vdCBleGlzdCB5ZXQsIGNyZWF0ZSBpdC4gIFRoaXMgaXMgb25seSBjYWxsZWQKIHdoZW4gYSB3aW5kb3cgaXMgYWxyZWFkeSBpbiB1c2UsIG9yIHdoZW4gb3V0cHV0IGhhcyBiZWVuIHdyaXR0ZW4gZHVyaW5nIHRoaXMKIGluZmxhdGUgY2FsbCwgYnV0IHRoZSBlbmQgb2YgdGhlIGRlZmxhdGUgc3RyZWFtIGhhcyBub3QgYmVlbiByZWFjaGVkIHlldC4KIEl0IGlzIGFsc28gY2FsbGVkIHRvIGNyZWF0ZSBhIHdpbmRvdyBmb3IgZGljdGlvbmFyeSBkYXRhIHdoZW4gYSBkaWN0aW9uYXJ5CiBpcyBsb2FkZWQuCgogUHJvdmlkaW5nIG91dHB1dCBidWZmZXJzIGxhcmdlciB0aGFuIDMySyB0byBpbmZsYXRlKCkgc2hvdWxkIHByb3ZpZGUgYSBzcGVlZAogYWR2YW50YWdlLCBzaW5jZSBvbmx5IHRoZSBsYXN0IDMySyBvZiBvdXRwdXQgaXMgY29waWVkIHRvIHRoZSBzbGlkaW5nIHdpbmRvdwogdXBvbiByZXR1cm4gZnJvbSBpbmZsYXRlKCksIGFuZCBzaW5jZSBhbGwgZGlzdGFuY2VzIGFmdGVyIHRoZSBmaXJzdCAzMksgb2YKIG91dHB1dCB3aWxsIGZhbGwgaW4gdGhlIG91dHB1dCBkYXRhLCBtYWtpbmcgbWF0Y2ggY29waWVzIHNpbXBsZXIgYW5kIGZhc3Rlci4KIFRoZSBhZHZhbnRhZ2UgbWF5IGJlIGRlcGVuZGVudCBvbiB0aGUgc2l6ZSBvZiB0aGUgcHJvY2Vzc29yJ3MgZGF0YSBjYWNoZXMuCiAqLwpmdW5jdGlvbiB1cGRhdGV3aW5kb3coc3RybSwgc3JjLCBlbmQsIGNvcHkpIHsKICB2YXIgZGlzdDsKICB2YXIgc3RhdGUgPSBzdHJtLnN0YXRlOwoKICAvKiBpZiBpdCBoYXNuJ3QgYmVlbiBkb25lIGFscmVhZHksIGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgd2luZG93ICovCiAgaWYgKHN0YXRlLndpbmRvdyA9PT0gbnVsbCkgewogICAgc3RhdGUud3NpemUgPSAxIDw8IHN0YXRlLndiaXRzOwogICAgc3RhdGUud25leHQgPSAwOwogICAgc3RhdGUud2hhdmUgPSAwOwoKICAgIHN0YXRlLndpbmRvdyA9IG5ldyB1dGlscy5CdWY4KHN0YXRlLndzaXplKTsKICB9CgogIC8qIGNvcHkgc3RhdGUtPndzaXplIG9yIGxlc3Mgb3V0cHV0IGJ5dGVzIGludG8gdGhlIGNpcmN1bGFyIHdpbmRvdyAqLwogIGlmIChjb3B5ID49IHN0YXRlLndzaXplKSB7CiAgICB1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csIHNyYywgZW5kIC0gc3RhdGUud3NpemUsIHN0YXRlLndzaXplLCAwKTsKICAgIHN0YXRlLnduZXh0ID0gMDsKICAgIHN0YXRlLndoYXZlID0gc3RhdGUud3NpemU7CiAgfQogIGVsc2UgewogICAgZGlzdCA9IHN0YXRlLndzaXplIC0gc3RhdGUud25leHQ7CiAgICBpZiAoZGlzdCA+IGNvcHkpIHsKICAgICAgZGlzdCA9IGNvcHk7CiAgICB9CiAgICAvL3ptZW1jcHkoc3RhdGUtPndpbmRvdyArIHN0YXRlLT53bmV4dCwgZW5kIC0gY29weSwgZGlzdCk7CiAgICB1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csIHNyYywgZW5kIC0gY29weSwgZGlzdCwgc3RhdGUud25leHQpOwogICAgY29weSAtPSBkaXN0OwogICAgaWYgKGNvcHkpIHsKICAgICAgLy96bWVtY3B5KHN0YXRlLT53aW5kb3csIGVuZCAtIGNvcHksIGNvcHkpOwogICAgICB1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csIHNyYywgZW5kIC0gY29weSwgY29weSwgMCk7CiAgICAgIHN0YXRlLnduZXh0ID0gY29weTsKICAgICAgc3RhdGUud2hhdmUgPSBzdGF0ZS53c2l6ZTsKICAgIH0KICAgIGVsc2UgewogICAgICBzdGF0ZS53bmV4dCArPSBkaXN0OwogICAgICBpZiAoc3RhdGUud25leHQgPT09IHN0YXRlLndzaXplKSB7IHN0YXRlLnduZXh0ID0gMDsgfQogICAgICBpZiAoc3RhdGUud2hhdmUgPCBzdGF0ZS53c2l6ZSkgeyBzdGF0ZS53aGF2ZSArPSBkaXN0OyB9CiAgICB9CiAgfQogIHJldHVybiAwOwp9CgpmdW5jdGlvbiBpbmZsYXRlKHN0cm0sIGZsdXNoKSB7CiAgdmFyIHN0YXRlOwogIHZhciBpbnB1dCwgb3V0cHV0OyAgICAgICAgICAvLyBpbnB1dC9vdXRwdXQgYnVmZmVycwogIHZhciBuZXh0OyAgICAgICAgICAgICAgICAgICAvKiBuZXh0IGlucHV0IElOREVYICovCiAgdmFyIHB1dDsgICAgICAgICAgICAgICAgICAgIC8qIG5leHQgb3V0cHV0IElOREVYICovCiAgdmFyIGhhdmUsIGxlZnQ7ICAgICAgICAgICAgIC8qIGF2YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0ICovCiAgdmFyIGhvbGQ7ICAgICAgICAgICAgICAgICAgIC8qIGJpdCBidWZmZXIgKi8KICB2YXIgYml0czsgICAgICAgICAgICAgICAgICAgLyogYml0cyBpbiBiaXQgYnVmZmVyICovCiAgdmFyIF9pbiwgX291dDsgICAgICAgICAgICAgIC8qIHNhdmUgc3RhcnRpbmcgYXZhaWxhYmxlIGlucHV0IGFuZCBvdXRwdXQgKi8KICB2YXIgY29weTsgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHN0b3JlZCBvciBtYXRjaCBieXRlcyB0byBjb3B5ICovCiAgdmFyIGZyb207ICAgICAgICAgICAgICAgICAgIC8qIHdoZXJlIHRvIGNvcHkgbWF0Y2ggYnl0ZXMgZnJvbSAqLwogIHZhciBmcm9tX3NvdXJjZTsKICB2YXIgaGVyZSA9IDA7ICAgICAgICAgICAgICAgLyogY3VycmVudCBkZWNvZGluZyB0YWJsZSBlbnRyeSAqLwogIHZhciBoZXJlX2JpdHMsIGhlcmVfb3AsIGhlcmVfdmFsOyAvLyBwYWtlZCAiaGVyZSIgZGVub3JtYWxpemVkIChKUyBzcGVjaWZpYykKICAvL3ZhciBsYXN0OyAgICAgICAgICAgICAgICAgICAvKiBwYXJlbnQgdGFibGUgZW50cnkgKi8KICB2YXIgbGFzdF9iaXRzLCBsYXN0X29wLCBsYXN0X3ZhbDsgLy8gcGFrZWQgImxhc3QiIGRlbm9ybWFsaXplZCAoSlMgc3BlY2lmaWMpCiAgdmFyIGxlbjsgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCB0byBjb3B5IGZvciByZXBlYXRzLCBiaXRzIHRvIGRyb3AgKi8KICB2YXIgcmV0OyAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuIGNvZGUgKi8KICB2YXIgaGJ1ZiA9IG5ldyB1dGlscy5CdWY4KDQpOyAgICAvKiBidWZmZXIgZm9yIGd6aXAgaGVhZGVyIGNyYyBjYWxjdWxhdGlvbiAqLwogIHZhciBvcHRzOwoKICB2YXIgbjsgLy8gdGVtcG9yYXJ5IHZhciBmb3IgTkVFRF9CSVRTCgogIHZhciBvcmRlciA9IC8qIHBlcm11dGF0aW9uIG9mIGNvZGUgbGVuZ3RocyAqLwogICAgWyAxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LCAxMCwgNSwgMTEsIDQsIDEyLCAzLCAxMywgMiwgMTQsIDEsIDE1IF07CgoKICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUgfHwgIXN0cm0ub3V0cHV0IHx8CiAgICAgICghc3RybS5pbnB1dCAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSkgewogICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogIH0KCiAgc3RhdGUgPSBzdHJtLnN0YXRlOwogIGlmIChzdGF0ZS5tb2RlID09PSBUWVBFKSB7IHN0YXRlLm1vZGUgPSBUWVBFRE87IH0gICAgLyogc2tpcCBjaGVjayAqLwoKCiAgLy8tLS0gTE9BRCgpIC0tLQogIHB1dCA9IHN0cm0ubmV4dF9vdXQ7CiAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7CiAgbGVmdCA9IHN0cm0uYXZhaWxfb3V0OwogIG5leHQgPSBzdHJtLm5leHRfaW47CiAgaW5wdXQgPSBzdHJtLmlucHV0OwogIGhhdmUgPSBzdHJtLmF2YWlsX2luOwogIGhvbGQgPSBzdGF0ZS5ob2xkOwogIGJpdHMgPSBzdGF0ZS5iaXRzOwogIC8vLS0tCgogIF9pbiA9IGhhdmU7CiAgX291dCA9IGxlZnQ7CiAgcmV0ID0gWl9PSzsKCiAgaW5mX2xlYXZlOiAvLyBnb3RvIGVtdWxhdGlvbgogIGZvciAoOzspIHsKICAgIHN3aXRjaCAoc3RhdGUubW9kZSkgewogICAgICBjYXNlIEhFQUQ6CiAgICAgICAgaWYgKHN0YXRlLndyYXAgPT09IDApIHsKICAgICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFRE87CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgLy89PT0gTkVFREJJVFMoMTYpOwogICAgICAgIHdoaWxlIChiaXRzIDwgMTYpIHsKICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgfQogICAgICAgIC8vPT09Ly8KICAgICAgICBpZiAoKHN0YXRlLndyYXAgJiAyKSAmJiBob2xkID09PSAweDhiMWYpIHsgIC8qIGd6aXAgaGVhZGVyICovCiAgICAgICAgICBzdGF0ZS5jaGVjayA9IDAvKmNyYzMyKDBMLCBaX05VTEwsIDApKi87CiAgICAgICAgICAvLz09PSBDUkMyKHN0YXRlLmNoZWNrLCBob2xkKTsKICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjsKICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmOwogICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaGJ1ZiwgMiwgMCk7CiAgICAgICAgICAvLz09PS8vCgogICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTsKICAgICAgICAgIGhvbGQgPSAwOwogICAgICAgICAgYml0cyA9IDA7CiAgICAgICAgICAvLz09PS8vCiAgICAgICAgICBzdGF0ZS5tb2RlID0gRkxBR1M7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgc3RhdGUuZmxhZ3MgPSAwOyAgICAgICAgICAgLyogZXhwZWN0IHpsaWIgaGVhZGVyICovCiAgICAgICAgaWYgKHN0YXRlLmhlYWQpIHsKICAgICAgICAgIHN0YXRlLmhlYWQuZG9uZSA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoIShzdGF0ZS53cmFwICYgMSkgfHwgICAvKiBjaGVjayBpZiB6bGliIGhlYWRlciBhbGxvd2VkICovCiAgICAgICAgICAoKChob2xkICYgMHhmZikvKkJJVFMoOCkqLyA8PCA4KSArIChob2xkID4+IDgpKSAlIDMxKSB7CiAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgaGVhZGVyIGNoZWNrJzsKICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKChob2xkICYgMHgwZikvKkJJVFMoNCkqLyAhPT0gWl9ERUZMQVRFRCkgewogICAgICAgICAgc3RybS5tc2cgPSAndW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAvLy0tLSBEUk9QQklUUyg0KSAtLS0vLwogICAgICAgIGhvbGQgPj4+PSA0OwogICAgICAgIGJpdHMgLT0gNDsKICAgICAgICAvLy0tLS8vCiAgICAgICAgbGVuID0gKGhvbGQgJiAweDBmKS8qQklUUyg0KSovICsgODsKICAgICAgICBpZiAoc3RhdGUud2JpdHMgPT09IDApIHsKICAgICAgICAgIHN0YXRlLndiaXRzID0gbGVuOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gPiBzdGF0ZS53Yml0cykgewogICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCB3aW5kb3cgc2l6ZSc7CiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHN0YXRlLmRtYXggPSAxIDw8IGxlbjsKICAgICAgICAvL1RyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICB6bGliIGhlYWRlciBva1xuIikpOwogICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IDEvKmFkbGVyMzIoMEwsIFpfTlVMTCwgMCkqLzsKICAgICAgICBzdGF0ZS5tb2RlID0gaG9sZCAmIDB4MjAwID8gRElDVElEIDogVFlQRTsKICAgICAgICAvLz09PSBJTklUQklUUygpOwogICAgICAgIGhvbGQgPSAwOwogICAgICAgIGJpdHMgPSAwOwogICAgICAgIC8vPT09Ly8KICAgICAgICBicmVhazsKICAgICAgY2FzZSBGTEFHUzoKICAgICAgICAvLz09PSBORUVEQklUUygxNik7ICovCiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikgewogICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICBoYXZlLS07CiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICB9CiAgICAgICAgLy89PT0vLwogICAgICAgIHN0YXRlLmZsYWdzID0gaG9sZDsKICAgICAgICBpZiAoKHN0YXRlLmZsYWdzICYgMHhmZikgIT09IFpfREVGTEFURUQpIHsKICAgICAgICAgIHN0cm0ubXNnID0gJ3Vua25vd24gY29tcHJlc3Npb24gbWV0aG9kJzsKICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHhlMDAwKSB7CiAgICAgICAgICBzdHJtLm1zZyA9ICd1bmtub3duIGhlYWRlciBmbGFncyBzZXQnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAoc3RhdGUuaGVhZCkgewogICAgICAgICAgc3RhdGUuaGVhZC50ZXh0ID0gKChob2xkID4+IDgpICYgMSk7CiAgICAgICAgfQogICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkgewogICAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7CiAgICAgICAgICBoYnVmWzBdID0gaG9sZCAmIDB4ZmY7CiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjsKICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApOwogICAgICAgICAgLy89PT0vLwogICAgICAgIH0KICAgICAgICAvLz09PSBJTklUQklUUygpOwogICAgICAgIGhvbGQgPSAwOwogICAgICAgIGJpdHMgPSAwOwogICAgICAgIC8vPT09Ly8KICAgICAgICBzdGF0ZS5tb2RlID0gVElNRTsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgVElNRToKICAgICAgICAvLz09PSBORUVEQklUUygzMik7ICovCiAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikgewogICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICBoYXZlLS07CiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICB9CiAgICAgICAgLy89PT0vLwogICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7CiAgICAgICAgICBzdGF0ZS5oZWFkLnRpbWUgPSBob2xkOwogICAgICAgIH0KICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHsKICAgICAgICAgIC8vPT09IENSQzQoc3RhdGUuY2hlY2ssIGhvbGQpCiAgICAgICAgICBoYnVmWzBdID0gaG9sZCAmIDB4ZmY7CiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjsKICAgICAgICAgIGhidWZbMl0gPSAoaG9sZCA+Pj4gMTYpICYgMHhmZjsKICAgICAgICAgIGhidWZbM10gPSAoaG9sZCA+Pj4gMjQpICYgMHhmZjsKICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDQsIDApOwogICAgICAgICAgLy89PT0KICAgICAgICB9CiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTsKICAgICAgICBob2xkID0gMDsKICAgICAgICBiaXRzID0gMDsKICAgICAgICAvLz09PS8vCiAgICAgICAgc3RhdGUubW9kZSA9IE9TOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBPUzoKICAgICAgICAvLz09PSBORUVEQklUUygxNik7ICovCiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikgewogICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICBoYXZlLS07CiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICB9CiAgICAgICAgLy89PT0vLwogICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7CiAgICAgICAgICBzdGF0ZS5oZWFkLnhmbGFncyA9IChob2xkICYgMHhmZik7CiAgICAgICAgICBzdGF0ZS5oZWFkLm9zID0gKGhvbGQgPj4gOCk7CiAgICAgICAgfQogICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkgewogICAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7CiAgICAgICAgICBoYnVmWzBdID0gaG9sZCAmIDB4ZmY7CiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjsKICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApOwogICAgICAgICAgLy89PT0vLwogICAgICAgIH0KICAgICAgICAvLz09PSBJTklUQklUUygpOwogICAgICAgIGhvbGQgPSAwOwogICAgICAgIGJpdHMgPSAwOwogICAgICAgIC8vPT09Ly8KICAgICAgICBzdGF0ZS5tb2RlID0gRVhMRU47CiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICBjYXNlIEVYTEVOOgogICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDQwMCkgewogICAgICAgICAgLy89PT0gTkVFREJJVFMoMTYpOyAqLwogICAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikgewogICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgICAgYml0cyArPSA4OwogICAgICAgICAgfQogICAgICAgICAgLy89PT0vLwogICAgICAgICAgc3RhdGUubGVuZ3RoID0gaG9sZDsKICAgICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7CiAgICAgICAgICAgIHN0YXRlLmhlYWQuZXh0cmFfbGVuID0gaG9sZDsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkgewogICAgICAgICAgICAvLz09PSBDUkMyKHN0YXRlLmNoZWNrLCBob2xkKTsKICAgICAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmOwogICAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjsKICAgICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaGJ1ZiwgMiwgMCk7CiAgICAgICAgICAgIC8vPT09Ly8KICAgICAgICAgIH0KICAgICAgICAgIC8vPT09IElOSVRCSVRTKCk7CiAgICAgICAgICBob2xkID0gMDsKICAgICAgICAgIGJpdHMgPSAwOwogICAgICAgICAgLy89PT0vLwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChzdGF0ZS5oZWFkKSB7CiAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhID0gbnVsbC8qWl9OVUxMKi87CiAgICAgICAgfQogICAgICAgIHN0YXRlLm1vZGUgPSBFWFRSQTsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgRVhUUkE6CiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwNDAwKSB7CiAgICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoOwogICAgICAgICAgaWYgKGNvcHkgPiBoYXZlKSB7IGNvcHkgPSBoYXZlOyB9CiAgICAgICAgICBpZiAoY29weSkgewogICAgICAgICAgICBpZiAoc3RhdGUuaGVhZCkgewogICAgICAgICAgICAgIGxlbiA9IHN0YXRlLmhlYWQuZXh0cmFfbGVuIC0gc3RhdGUubGVuZ3RoOwogICAgICAgICAgICAgIGlmICghc3RhdGUuaGVhZC5leHRyYSkgewogICAgICAgICAgICAgICAgLy8gVXNlIHVudHlwZWQgYXJyYXkgZm9yIG1vcmUgY29udmVuaWVudCBwcm9jZXNzaW5nIGxhdGVyCiAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhID0gbmV3IEFycmF5KHN0YXRlLmhlYWQuZXh0cmFfbGVuKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgdXRpbHMuYXJyYXlTZXQoCiAgICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhLAogICAgICAgICAgICAgICAgaW5wdXQsCiAgICAgICAgICAgICAgICBuZXh0LAogICAgICAgICAgICAgICAgLy8gZXh0cmEgZmllbGQgaXMgbGltaXRlZCB0byA2NTUzNiBieXRlcwogICAgICAgICAgICAgICAgLy8gLSBubyBuZWVkIGZvciBhZGRpdGlvbmFsIHNpemUgY2hlY2sKICAgICAgICAgICAgICAgIGNvcHksCiAgICAgICAgICAgICAgICAvKmxlbiArIGNvcHkgPiBzdGF0ZS5oZWFkLmV4dHJhX21heCAtIGxlbiA/IHN0YXRlLmhlYWQuZXh0cmFfbWF4IDogY29weSwqLwogICAgICAgICAgICAgICAgbGVuCiAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAvL3ptZW1jcHkoc3RhdGUuaGVhZC5leHRyYSArIGxlbiwgbmV4dCwKICAgICAgICAgICAgICAvLyAgICAgICAgbGVuICsgY29weSA+IHN0YXRlLmhlYWQuZXh0cmFfbWF4ID8KICAgICAgICAgICAgICAvLyAgICAgICAgc3RhdGUuaGVhZC5leHRyYV9tYXggLSBsZW4gOiBjb3B5KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHsKICAgICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaGF2ZSAtPSBjb3B5OwogICAgICAgICAgICBuZXh0ICs9IGNvcHk7CiAgICAgICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5OwogICAgICAgICAgfQogICAgICAgICAgaWYgKHN0YXRlLmxlbmd0aCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICB9CiAgICAgICAgc3RhdGUubGVuZ3RoID0gMDsKICAgICAgICBzdGF0ZS5tb2RlID0gTkFNRTsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgTkFNRToKICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDA4MDApIHsKICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgY29weSA9IDA7CiAgICAgICAgICBkbyB7CiAgICAgICAgICAgIC8vIFRPRE86IDIgb3IgMSBieXRlcz8KICAgICAgICAgICAgbGVuID0gaW5wdXRbbmV4dCArIGNvcHkrK107CiAgICAgICAgICAgIC8qIHVzZSBjb25zdGFudCBsaW1pdCBiZWNhdXNlIGluIGpzIHdlIHNob3VsZCBub3QgcHJlYWxsb2NhdGUgbWVtb3J5ICovCiAgICAgICAgICAgIGlmIChzdGF0ZS5oZWFkICYmIGxlbiAmJgogICAgICAgICAgICAgICAgKHN0YXRlLmxlbmd0aCA8IDY1NTM2IC8qc3RhdGUuaGVhZC5uYW1lX21heCovKSkgewogICAgICAgICAgICAgIHN0YXRlLmhlYWQubmFtZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGxlbik7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gd2hpbGUgKGxlbiAmJiBjb3B5IDwgaGF2ZSk7CgogICAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7CiAgICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGlucHV0LCBjb3B5LCBuZXh0KTsKICAgICAgICAgIH0KICAgICAgICAgIGhhdmUgLT0gY29weTsKICAgICAgICAgIG5leHQgKz0gY29weTsKICAgICAgICAgIGlmIChsZW4pIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHN0YXRlLmhlYWQpIHsKICAgICAgICAgIHN0YXRlLmhlYWQubmFtZSA9IG51bGw7CiAgICAgICAgfQogICAgICAgIHN0YXRlLmxlbmd0aCA9IDA7CiAgICAgICAgc3RhdGUubW9kZSA9IENPTU1FTlQ7CiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICBjYXNlIENPTU1FTlQ6CiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgxMDAwKSB7CiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICAgIGNvcHkgPSAwOwogICAgICAgICAgZG8gewogICAgICAgICAgICBsZW4gPSBpbnB1dFtuZXh0ICsgY29weSsrXTsKICAgICAgICAgICAgLyogdXNlIGNvbnN0YW50IGxpbWl0IGJlY2F1c2UgaW4ganMgd2Ugc2hvdWxkIG5vdCBwcmVhbGxvY2F0ZSBtZW1vcnkgKi8KICAgICAgICAgICAgaWYgKHN0YXRlLmhlYWQgJiYgbGVuICYmCiAgICAgICAgICAgICAgICAoc3RhdGUubGVuZ3RoIDwgNjU1MzYgLypzdGF0ZS5oZWFkLmNvbW1fbWF4Ki8pKSB7CiAgICAgICAgICAgICAgc3RhdGUuaGVhZC5jb21tZW50ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUobGVuKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSB3aGlsZSAobGVuICYmIGNvcHkgPCBoYXZlKTsKICAgICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkgewogICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7CiAgICAgICAgICB9CiAgICAgICAgICBoYXZlIC09IGNvcHk7CiAgICAgICAgICBuZXh0ICs9IGNvcHk7CiAgICAgICAgICBpZiAobGVuKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChzdGF0ZS5oZWFkKSB7CiAgICAgICAgICBzdGF0ZS5oZWFkLmNvbW1lbnQgPSBudWxsOwogICAgICAgIH0KICAgICAgICBzdGF0ZS5tb2RlID0gSENSQzsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgSENSQzoKICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHsKICAgICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi8KICAgICAgICAgIHdoaWxlIChiaXRzIDwgMTYpIHsKICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgIGhhdmUtLTsKICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgIH0KICAgICAgICAgIC8vPT09Ly8KICAgICAgICAgIGlmIChob2xkICE9PSAoc3RhdGUuY2hlY2sgJiAweGZmZmYpKSB7CiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2hlYWRlciBjcmMgbWlzbWF0Y2gnOwogICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICAgIC8vPT09IElOSVRCSVRTKCk7CiAgICAgICAgICBob2xkID0gMDsKICAgICAgICAgIGJpdHMgPSAwOwogICAgICAgICAgLy89PT0vLwogICAgICAgIH0KICAgICAgICBpZiAoc3RhdGUuaGVhZCkgewogICAgICAgICAgc3RhdGUuaGVhZC5oY3JjID0gKChzdGF0ZS5mbGFncyA+PiA5KSAmIDEpOwogICAgICAgICAgc3RhdGUuaGVhZC5kb25lID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID0gMDsKICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBESUNUSUQ6CiAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqLwogICAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHsKICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgfQogICAgICAgIC8vPT09Ly8KICAgICAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSB6c3dhcDMyKGhvbGQpOwogICAgICAgIC8vPT09IElOSVRCSVRTKCk7CiAgICAgICAgaG9sZCA9IDA7CiAgICAgICAgYml0cyA9IDA7CiAgICAgICAgLy89PT0vLwogICAgICAgIHN0YXRlLm1vZGUgPSBESUNUOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBESUNUOgogICAgICAgIGlmIChzdGF0ZS5oYXZlZGljdCA9PT0gMCkgewogICAgICAgICAgLy8tLS0gUkVTVE9SRSgpIC0tLQogICAgICAgICAgc3RybS5uZXh0X291dCA9IHB1dDsKICAgICAgICAgIHN0cm0uYXZhaWxfb3V0ID0gbGVmdDsKICAgICAgICAgIHN0cm0ubmV4dF9pbiA9IG5leHQ7CiAgICAgICAgICBzdHJtLmF2YWlsX2luID0gaGF2ZTsKICAgICAgICAgIHN0YXRlLmhvbGQgPSBob2xkOwogICAgICAgICAgc3RhdGUuYml0cyA9IGJpdHM7CiAgICAgICAgICAvLy0tLQogICAgICAgICAgcmV0dXJuIFpfTkVFRF9ESUNUOwogICAgICAgIH0KICAgICAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAxLyphZGxlcjMyKDBMLCBaX05VTEwsIDApKi87CiAgICAgICAgc3RhdGUubW9kZSA9IFRZUEU7CiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICBjYXNlIFRZUEU6CiAgICAgICAgaWYgKGZsdXNoID09PSBaX0JMT0NLIHx8IGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBUWVBFRE86CiAgICAgICAgaWYgKHN0YXRlLmxhc3QpIHsKICAgICAgICAgIC8vLS0tIEJZVEVCSVRTKCkgLS0tLy8KICAgICAgICAgIGhvbGQgPj4+PSBiaXRzICYgNzsKICAgICAgICAgIGJpdHMgLT0gYml0cyAmIDc7CiAgICAgICAgICAvLy0tLS8vCiAgICAgICAgICBzdGF0ZS5tb2RlID0gQ0hFQ0s7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgLy89PT0gTkVFREJJVFMoMyk7ICovCiAgICAgICAgd2hpbGUgKGJpdHMgPCAzKSB7CiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICAgIGhhdmUtLTsKICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzOwogICAgICAgICAgYml0cyArPSA4OwogICAgICAgIH0KICAgICAgICAvLz09PS8vCiAgICAgICAgc3RhdGUubGFzdCA9IChob2xkICYgMHgwMSkvKkJJVFMoMSkqLzsKICAgICAgICAvLy0tLSBEUk9QQklUUygxKSAtLS0vLwogICAgICAgIGhvbGQgPj4+PSAxOwogICAgICAgIGJpdHMgLT0gMTsKICAgICAgICAvLy0tLS8vCgogICAgICAgIHN3aXRjaCAoKGhvbGQgJiAweDAzKS8qQklUUygyKSovKSB7CiAgICAgICAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdG9yZWQgYmxvY2sgKi8KICAgICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICBzdG9yZWQgYmxvY2slc1xuIiwKICAgICAgICAgICAgLy8gICAgICAgIHN0YXRlLmxhc3QgPyAiIChsYXN0KSIgOiAiIikpOwogICAgICAgICAgICBzdGF0ZS5tb2RlID0gU1RPUkVEOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpeGVkIGJsb2NrICovCiAgICAgICAgICAgIGZpeGVkdGFibGVzKHN0YXRlKTsKICAgICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICBmaXhlZCBjb2RlcyBibG9jayVzXG4iLAogICAgICAgICAgICAvLyAgICAgICAgc3RhdGUubGFzdCA/ICIgKGxhc3QpIiA6ICIiKSk7CiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBMRU5fOyAgICAgICAgICAgICAvKiBkZWNvZGUgY29kZXMgKi8KICAgICAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7CiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy8KICAgICAgICAgICAgICBob2xkID4+Pj0gMjsKICAgICAgICAgICAgICBiaXRzIC09IDI7CiAgICAgICAgICAgICAgLy8tLS0vLwogICAgICAgICAgICAgIGJyZWFrIGluZl9sZWF2ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMjogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGR5bmFtaWMgYmxvY2sgKi8KICAgICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICBkeW5hbWljIGNvZGVzIGJsb2NrJXNcbiIsCiAgICAgICAgICAgIC8vICAgICAgICBzdGF0ZS5sYXN0ID8gIiAobGFzdCkiIDogIiIpKTsKICAgICAgICAgICAgc3RhdGUubW9kZSA9IFRBQkxFOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBibG9jayB0eXBlJzsKICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICB9CiAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy8KICAgICAgICBob2xkID4+Pj0gMjsKICAgICAgICBiaXRzIC09IDI7CiAgICAgICAgLy8tLS0vLwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIFNUT1JFRDoKICAgICAgICAvLy0tLSBCWVRFQklUUygpIC0tLS8vIC8qIGdvIHRvIGJ5dGUgYm91bmRhcnkgKi8KICAgICAgICBob2xkID4+Pj0gYml0cyAmIDc7CiAgICAgICAgYml0cyAtPSBiaXRzICYgNzsKICAgICAgICAvLy0tLS8vCiAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqLwogICAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHsKICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgfQogICAgICAgIC8vPT09Ly8KICAgICAgICBpZiAoKGhvbGQgJiAweGZmZmYpICE9PSAoKGhvbGQgPj4+IDE2KSBeIDB4ZmZmZikpIHsKICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBzdGF0ZS5sZW5ndGggPSBob2xkICYgMHhmZmZmOwogICAgICAgIC8vVHJhY2V2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICBzdG9yZWQgbGVuZ3RoICV1XG4iLAogICAgICAgIC8vICAgICAgICBzdGF0ZS5sZW5ndGgpKTsKICAgICAgICAvLz09PSBJTklUQklUUygpOwogICAgICAgIGhvbGQgPSAwOwogICAgICAgIGJpdHMgPSAwOwogICAgICAgIC8vPT09Ly8KICAgICAgICBzdGF0ZS5tb2RlID0gQ09QWV87CiAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBDT1BZXzoKICAgICAgICBzdGF0ZS5tb2RlID0gQ09QWTsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgQ09QWToKICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoOwogICAgICAgIGlmIChjb3B5KSB7CiAgICAgICAgICBpZiAoY29weSA+IGhhdmUpIHsgY29weSA9IGhhdmU7IH0KICAgICAgICAgIGlmIChjb3B5ID4gbGVmdCkgeyBjb3B5ID0gbGVmdDsgfQogICAgICAgICAgaWYgKGNvcHkgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAvLy0tLSB6bWVtY3B5KHB1dCwgbmV4dCwgY29weSk7IC0tLQogICAgICAgICAgdXRpbHMuYXJyYXlTZXQob3V0cHV0LCBpbnB1dCwgbmV4dCwgY29weSwgcHV0KTsKICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgIGhhdmUgLT0gY29weTsKICAgICAgICAgIG5leHQgKz0gY29weTsKICAgICAgICAgIGxlZnQgLT0gY29weTsKICAgICAgICAgIHB1dCArPSBjb3B5OwogICAgICAgICAgc3RhdGUubGVuZ3RoIC09IGNvcHk7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgIHN0b3JlZCBlbmRcbiIpKTsKICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBUQUJMRToKICAgICAgICAvLz09PSBORUVEQklUUygxNCk7ICovCiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNCkgewogICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICBoYXZlLS07CiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICB9CiAgICAgICAgLy89PT0vLwogICAgICAgIHN0YXRlLm5sZW4gPSAoaG9sZCAmIDB4MWYpLypCSVRTKDUpKi8gKyAyNTc7CiAgICAgICAgLy8tLS0gRFJPUEJJVFMoNSkgLS0tLy8KICAgICAgICBob2xkID4+Pj0gNTsKICAgICAgICBiaXRzIC09IDU7CiAgICAgICAgLy8tLS0vLwogICAgICAgIHN0YXRlLm5kaXN0ID0gKGhvbGQgJiAweDFmKS8qQklUUyg1KSovICsgMTsKICAgICAgICAvLy0tLSBEUk9QQklUUyg1KSAtLS0vLwogICAgICAgIGhvbGQgPj4+PSA1OwogICAgICAgIGJpdHMgLT0gNTsKICAgICAgICAvLy0tLS8vCiAgICAgICAgc3RhdGUubmNvZGUgPSAoaG9sZCAmIDB4MGYpLypCSVRTKDQpKi8gKyA0OwogICAgICAgIC8vLS0tIERST1BCSVRTKDQpIC0tLS8vCiAgICAgICAgaG9sZCA+Pj49IDQ7CiAgICAgICAgYml0cyAtPSA0OwogICAgICAgIC8vLS0tLy8KLy8jaWZuZGVmIFBLWklQX0JVR19XT1JLQVJPVU5ECiAgICAgICAgaWYgKHN0YXRlLm5sZW4gPiAyODYgfHwgc3RhdGUubmRpc3QgPiAzMCkgewogICAgICAgICAgc3RybS5tc2cgPSAndG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KLy8jZW5kaWYKICAgICAgICAvL1RyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgdGFibGUgc2l6ZXMgb2tcbiIpKTsKICAgICAgICBzdGF0ZS5oYXZlID0gMDsKICAgICAgICBzdGF0ZS5tb2RlID0gTEVOTEVOUzsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgTEVOTEVOUzoKICAgICAgICB3aGlsZSAoc3RhdGUuaGF2ZSA8IHN0YXRlLm5jb2RlKSB7CiAgICAgICAgICAvLz09PSBORUVEQklUUygzKTsKICAgICAgICAgIHdoaWxlIChiaXRzIDwgMykgewogICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgICAgYml0cyArPSA4OwogICAgICAgICAgfQogICAgICAgICAgLy89PT0vLwogICAgICAgICAgc3RhdGUubGVuc1tvcmRlcltzdGF0ZS5oYXZlKytdXSA9IChob2xkICYgMHgwNyk7Ly9CSVRTKDMpOwogICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMykgLS0tLy8KICAgICAgICAgIGhvbGQgPj4+PSAzOwogICAgICAgICAgYml0cyAtPSAzOwogICAgICAgICAgLy8tLS0vLwogICAgICAgIH0KICAgICAgICB3aGlsZSAoc3RhdGUuaGF2ZSA8IDE5KSB7CiAgICAgICAgICBzdGF0ZS5sZW5zW29yZGVyW3N0YXRlLmhhdmUrK11dID0gMDsKICAgICAgICB9CiAgICAgICAgLy8gV2UgaGF2ZSBzZXBhcmF0ZSB0YWJsZXMgJiBubyBwb2ludGVycy4gMiBjb21tZW50ZWQgbGluZXMgYmVsb3cgbm90IG5lZWRlZC4KICAgICAgICAvL3N0YXRlLm5leHQgPSBzdGF0ZS5jb2RlczsKICAgICAgICAvL3N0YXRlLmxlbmNvZGUgPSBzdGF0ZS5uZXh0OwogICAgICAgIC8vIFN3aXRjaCB0byB1c2UgZHluYW1pYyB0YWJsZQogICAgICAgIHN0YXRlLmxlbmNvZGUgPSBzdGF0ZS5sZW5keW47CiAgICAgICAgc3RhdGUubGVuYml0cyA9IDc7CgogICAgICAgIG9wdHMgPSB7IGJpdHM6IHN0YXRlLmxlbmJpdHMgfTsKICAgICAgICByZXQgPSBpbmZsYXRlX3RhYmxlKENPREVTLCBzdGF0ZS5sZW5zLCAwLCAxOSwgc3RhdGUubGVuY29kZSwgMCwgc3RhdGUud29yaywgb3B0cyk7CiAgICAgICAgc3RhdGUubGVuYml0cyA9IG9wdHMuYml0czsKCiAgICAgICAgaWYgKHJldCkgewogICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0JzsKICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgIGNvZGUgbGVuZ3RocyBva1xuIikpOwogICAgICAgIHN0YXRlLmhhdmUgPSAwOwogICAgICAgIHN0YXRlLm1vZGUgPSBDT0RFTEVOUzsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgQ09ERUxFTlM6CiAgICAgICAgd2hpbGUgKHN0YXRlLmhhdmUgPCBzdGF0ZS5ubGVuICsgc3RhdGUubmRpc3QpIHsKICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbaG9sZCAmICgoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDEpXTsvKkJJVFMoc3RhdGUubGVuYml0cykqLwogICAgICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDsKICAgICAgICAgICAgaGVyZV9vcCA9IChoZXJlID4+PiAxNikgJiAweGZmOwogICAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7CgogICAgICAgICAgICBpZiAoKGhlcmVfYml0cykgPD0gYml0cykgeyBicmVhazsgfQogICAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vCiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgICBoYXZlLS07CiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzOwogICAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgIH0KICAgICAgICAgIGlmIChoZXJlX3ZhbCA8IDE2KSB7CiAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy8KICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0czsKICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7CiAgICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgICAgc3RhdGUubGVuc1tzdGF0ZS5oYXZlKytdID0gaGVyZV92YWw7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgaWYgKGhlcmVfdmFsID09PSAxNikgewogICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDIpOwogICAgICAgICAgICAgIG4gPSBoZXJlX2JpdHMgKyAyOwogICAgICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikgewogICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgICAgICBoYXZlLS07CiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy89PT0vLwogICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy8KICAgICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzOwogICAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzOwogICAgICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgICAgICBpZiAoc3RhdGUuaGF2ZSA9PT0gMCkgewogICAgICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCc7CiAgICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGxlbiA9IHN0YXRlLmxlbnNbc3RhdGUuaGF2ZSAtIDFdOwogICAgICAgICAgICAgIGNvcHkgPSAzICsgKGhvbGQgJiAweDAzKTsvL0JJVFMoMik7CiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy8KICAgICAgICAgICAgICBob2xkID4+Pj0gMjsKICAgICAgICAgICAgICBiaXRzIC09IDI7CiAgICAgICAgICAgICAgLy8tLS0vLwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGhlcmVfdmFsID09PSAxNykgewogICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDMpOwogICAgICAgICAgICAgIG4gPSBoZXJlX2JpdHMgKyAzOwogICAgICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikgewogICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgICAgICBoYXZlLS07CiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy89PT0vLwogICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy8KICAgICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzOwogICAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzOwogICAgICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgICAgICBsZW4gPSAwOwogICAgICAgICAgICAgIGNvcHkgPSAzICsgKGhvbGQgJiAweDA3KTsvL0JJVFMoMyk7CiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMykgLS0tLy8KICAgICAgICAgICAgICBob2xkID4+Pj0gMzsKICAgICAgICAgICAgICBiaXRzIC09IDM7CiAgICAgICAgICAgICAgLy8tLS0vLwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDcpOwogICAgICAgICAgICAgIG4gPSBoZXJlX2JpdHMgKyA3OwogICAgICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikgewogICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgICAgICBoYXZlLS07CiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0czsKICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy89PT0vLwogICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy8KICAgICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzOwogICAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzOwogICAgICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgICAgICBsZW4gPSAwOwogICAgICAgICAgICAgIGNvcHkgPSAxMSArIChob2xkICYgMHg3Zik7Ly9CSVRTKDcpOwogICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKDcpIC0tLS8vCiAgICAgICAgICAgICAgaG9sZCA+Pj49IDc7CiAgICAgICAgICAgICAgYml0cyAtPSA3OwogICAgICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoc3RhdGUuaGF2ZSArIGNvcHkgPiBzdGF0ZS5ubGVuICsgc3RhdGUubmRpc3QpIHsKICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0JzsKICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlIChjb3B5LS0pIHsKICAgICAgICAgICAgICBzdGF0ZS5sZW5zW3N0YXRlLmhhdmUrK10gPSBsZW47CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qIGhhbmRsZSBlcnJvciBicmVha3MgaW4gd2hpbGUgKi8KICAgICAgICBpZiAoc3RhdGUubW9kZSA9PT0gQkFEKSB7IGJyZWFrOyB9CgogICAgICAgIC8qIGNoZWNrIGZvciBlbmQtb2YtYmxvY2sgY29kZSAoYmV0dGVyIGhhdmUgb25lKSAqLwogICAgICAgIGlmIChzdGF0ZS5sZW5zWzI1Nl0gPT09IDApIHsKICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jayc7CiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAvKiBidWlsZCBjb2RlIHRhYmxlcyAtLSBub3RlOiBkbyBub3QgY2hhbmdlIHRoZSBsZW5iaXRzIG9yIGRpc3RiaXRzCiAgICAgICAgICAgdmFsdWVzIGhlcmUgKDkgYW5kIDYpIHdpdGhvdXQgcmVhZGluZyB0aGUgY29tbWVudHMgaW4gaW5mdHJlZXMuaAogICAgICAgICAgIGNvbmNlcm5pbmcgdGhlIEVOT1VHSCBjb25zdGFudHMsIHdoaWNoIGRlcGVuZCBvbiB0aG9zZSB2YWx1ZXMgKi8KICAgICAgICBzdGF0ZS5sZW5iaXRzID0gOTsKCiAgICAgICAgb3B0cyA9IHsgYml0czogc3RhdGUubGVuYml0cyB9OwogICAgICAgIHJldCA9IGluZmxhdGVfdGFibGUoTEVOUywgc3RhdGUubGVucywgMCwgc3RhdGUubmxlbiwgc3RhdGUubGVuY29kZSwgMCwgc3RhdGUud29yaywgb3B0cyk7CiAgICAgICAgLy8gV2UgaGF2ZSBzZXBhcmF0ZSB0YWJsZXMgJiBubyBwb2ludGVycy4gMiBjb21tZW50ZWQgbGluZXMgYmVsb3cgbm90IG5lZWRlZC4KICAgICAgICAvLyBzdGF0ZS5uZXh0X2luZGV4ID0gb3B0cy50YWJsZV9pbmRleDsKICAgICAgICBzdGF0ZS5sZW5iaXRzID0gb3B0cy5iaXRzOwogICAgICAgIC8vIHN0YXRlLmxlbmNvZGUgPSBzdGF0ZS5uZXh0OwoKICAgICAgICBpZiAocmV0KSB7CiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgc3RhdGUuZGlzdGJpdHMgPSA2OwogICAgICAgIC8vc3RhdGUuZGlzdGNvZGUuY29weShzdGF0ZS5jb2Rlcyk7CiAgICAgICAgLy8gU3dpdGNoIHRvIHVzZSBkeW5hbWljIHRhYmxlCiAgICAgICAgc3RhdGUuZGlzdGNvZGUgPSBzdGF0ZS5kaXN0ZHluOwogICAgICAgIG9wdHMgPSB7IGJpdHM6IHN0YXRlLmRpc3RiaXRzIH07CiAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUubGVucywgc3RhdGUubmxlbiwgc3RhdGUubmRpc3QsIHN0YXRlLmRpc3Rjb2RlLCAwLCBzdGF0ZS53b3JrLCBvcHRzKTsKICAgICAgICAvLyBXZSBoYXZlIHNlcGFyYXRlIHRhYmxlcyAmIG5vIHBvaW50ZXJzLiAyIGNvbW1lbnRlZCBsaW5lcyBiZWxvdyBub3QgbmVlZGVkLgogICAgICAgIC8vIHN0YXRlLm5leHRfaW5kZXggPSBvcHRzLnRhYmxlX2luZGV4OwogICAgICAgIHN0YXRlLmRpc3RiaXRzID0gb3B0cy5iaXRzOwogICAgICAgIC8vIHN0YXRlLmRpc3Rjb2RlID0gc3RhdGUubmV4dDsKCiAgICAgICAgaWYgKHJldCkgewogICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZXMgc2V0JzsKICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgJ2luZmxhdGU6ICAgICAgIGNvZGVzIG9rXG4nKSk7CiAgICAgICAgc3RhdGUubW9kZSA9IExFTl87CiAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBMRU5fOgogICAgICAgIHN0YXRlLm1vZGUgPSBMRU47CiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqLwogICAgICBjYXNlIExFTjoKICAgICAgICBpZiAoaGF2ZSA+PSA2ICYmIGxlZnQgPj0gMjU4KSB7CiAgICAgICAgICAvLy0tLSBSRVNUT1JFKCkgLS0tCiAgICAgICAgICBzdHJtLm5leHRfb3V0ID0gcHV0OwogICAgICAgICAgc3RybS5hdmFpbF9vdXQgPSBsZWZ0OwogICAgICAgICAgc3RybS5uZXh0X2luID0gbmV4dDsKICAgICAgICAgIHN0cm0uYXZhaWxfaW4gPSBoYXZlOwogICAgICAgICAgc3RhdGUuaG9sZCA9IGhvbGQ7CiAgICAgICAgICBzdGF0ZS5iaXRzID0gYml0czsKICAgICAgICAgIC8vLS0tCiAgICAgICAgICBpbmZsYXRlX2Zhc3Qoc3RybSwgX291dCk7CiAgICAgICAgICAvLy0tLSBMT0FEKCkgLS0tCiAgICAgICAgICBwdXQgPSBzdHJtLm5leHRfb3V0OwogICAgICAgICAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7CiAgICAgICAgICBsZWZ0ID0gc3RybS5hdmFpbF9vdXQ7CiAgICAgICAgICBuZXh0ID0gc3RybS5uZXh0X2luOwogICAgICAgICAgaW5wdXQgPSBzdHJtLmlucHV0OwogICAgICAgICAgaGF2ZSA9IHN0cm0uYXZhaWxfaW47CiAgICAgICAgICBob2xkID0gc3RhdGUuaG9sZDsKICAgICAgICAgIGJpdHMgPSBzdGF0ZS5iaXRzOwogICAgICAgICAgLy8tLS0KCiAgICAgICAgICBpZiAoc3RhdGUubW9kZSA9PT0gVFlQRSkgewogICAgICAgICAgICBzdGF0ZS5iYWNrID0gLTE7CiAgICAgICAgICB9CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgc3RhdGUuYmFjayA9IDA7CiAgICAgICAgZm9yICg7OykgewogICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbaG9sZCAmICgoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDEpXTsgIC8qQklUUyhzdGF0ZS5sZW5iaXRzKSovCiAgICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDsKICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjsKICAgICAgICAgIGhlcmVfdmFsID0gaGVyZSAmIDB4ZmZmZjsKCiAgICAgICAgICBpZiAoaGVyZV9iaXRzIDw9IGJpdHMpIHsgYnJlYWs7IH0KICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy8KICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICAvLy0tLS8vCiAgICAgICAgfQogICAgICAgIGlmIChoZXJlX29wICYmIChoZXJlX29wICYgMHhmMCkgPT09IDApIHsKICAgICAgICAgIGxhc3RfYml0cyA9IGhlcmVfYml0czsKICAgICAgICAgIGxhc3Rfb3AgPSBoZXJlX29wOwogICAgICAgICAgbGFzdF92YWwgPSBoZXJlX3ZhbDsKICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbbGFzdF92YWwgKwogICAgICAgICAgICAgICAgICAgICgoaG9sZCAmICgoMSA8PCAobGFzdF9iaXRzICsgbGFzdF9vcCkpIC0gMSkpLypCSVRTKGxhc3QuYml0cyArIGxhc3Qub3ApKi8gPj4gbGFzdF9iaXRzKV07CiAgICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0OwogICAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7CiAgICAgICAgICAgIGhlcmVfdmFsID0gaGVyZSAmIDB4ZmZmZjsKCiAgICAgICAgICAgIGlmICgobGFzdF9iaXRzICsgaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9CiAgICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy8KICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgIGhhdmUtLTsKICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgLy8tLS0vLwogICAgICAgICAgfQogICAgICAgICAgLy8tLS0gRFJPUEJJVFMobGFzdC5iaXRzKSAtLS0vLwogICAgICAgICAgaG9sZCA+Pj49IGxhc3RfYml0czsKICAgICAgICAgIGJpdHMgLT0gbGFzdF9iaXRzOwogICAgICAgICAgLy8tLS0vLwogICAgICAgICAgc3RhdGUuYmFjayArPSBsYXN0X2JpdHM7CiAgICAgICAgfQogICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy8KICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzOwogICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzOwogICAgICAgIC8vLS0tLy8KICAgICAgICBzdGF0ZS5iYWNrICs9IGhlcmVfYml0czsKICAgICAgICBzdGF0ZS5sZW5ndGggPSBoZXJlX3ZhbDsKICAgICAgICBpZiAoaGVyZV9vcCA9PT0gMCkgewogICAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIGhlcmUudmFsID49IDB4MjAgJiYgaGVyZS52YWwgPCAweDdmID8KICAgICAgICAgIC8vICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsICclYydcbiIgOgogICAgICAgICAgLy8gICAgICAgICJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgMHglMDJ4XG4iLCBoZXJlLnZhbCkpOwogICAgICAgICAgc3RhdGUubW9kZSA9IExJVDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAoaGVyZV9vcCAmIDMyKSB7CiAgICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgZW5kIG9mIGJsb2NrXG4iKSk7CiAgICAgICAgICBzdGF0ZS5iYWNrID0gLTE7CiAgICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAoaGVyZV9vcCAmIDY0KSB7CiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBzdGF0ZS5leHRyYSA9IGhlcmVfb3AgJiAxNTsKICAgICAgICBzdGF0ZS5tb2RlID0gTEVORVhUOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBMRU5FWFQ6CiAgICAgICAgaWYgKHN0YXRlLmV4dHJhKSB7CiAgICAgICAgICAvLz09PSBORUVEQklUUyhzdGF0ZS5leHRyYSk7CiAgICAgICAgICBuID0gc3RhdGUuZXh0cmE7CiAgICAgICAgICB3aGlsZSAoYml0cyA8IG4pIHsKICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgIGhhdmUtLTsKICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgIH0KICAgICAgICAgIC8vPT09Ly8KICAgICAgICAgIHN0YXRlLmxlbmd0aCArPSBob2xkICYgKCgxIDw8IHN0YXRlLmV4dHJhKSAtIDEpLypCSVRTKHN0YXRlLmV4dHJhKSovOwogICAgICAgICAgLy8tLS0gRFJPUEJJVFMoc3RhdGUuZXh0cmEpIC0tLS8vCiAgICAgICAgICBob2xkID4+Pj0gc3RhdGUuZXh0cmE7CiAgICAgICAgICBiaXRzIC09IHN0YXRlLmV4dHJhOwogICAgICAgICAgLy8tLS0vLwogICAgICAgICAgc3RhdGUuYmFjayArPSBzdGF0ZS5leHRyYTsKICAgICAgICB9CiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICAgIGxlbmd0aCAldVxuIiwgc3RhdGUubGVuZ3RoKSk7CiAgICAgICAgc3RhdGUud2FzID0gc3RhdGUubGVuZ3RoOwogICAgICAgIHN0YXRlLm1vZGUgPSBESVNUOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBESVNUOgogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgIGhlcmUgPSBzdGF0ZS5kaXN0Y29kZVtob2xkICYgKCgxIDw8IHN0YXRlLmRpc3RiaXRzKSAtIDEpXTsvKkJJVFMoc3RhdGUuZGlzdGJpdHMpKi8KICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0OwogICAgICAgICAgaGVyZV9vcCA9IChoZXJlID4+PiAxNikgJiAweGZmOwogICAgICAgICAgaGVyZV92YWwgPSBoZXJlICYgMHhmZmZmOwoKICAgICAgICAgIGlmICgoaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9CiAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vCiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICAgIGhhdmUtLTsKICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzOwogICAgICAgICAgYml0cyArPSA4OwogICAgICAgICAgLy8tLS0vLwogICAgICAgIH0KICAgICAgICBpZiAoKGhlcmVfb3AgJiAweGYwKSA9PT0gMCkgewogICAgICAgICAgbGFzdF9iaXRzID0gaGVyZV9iaXRzOwogICAgICAgICAgbGFzdF9vcCA9IGhlcmVfb3A7CiAgICAgICAgICBsYXN0X3ZhbCA9IGhlcmVfdmFsOwogICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICBoZXJlID0gc3RhdGUuZGlzdGNvZGVbbGFzdF92YWwgKwogICAgICAgICAgICAgICAgICAgICgoaG9sZCAmICgoMSA8PCAobGFzdF9iaXRzICsgbGFzdF9vcCkpIC0gMSkpLypCSVRTKGxhc3QuYml0cyArIGxhc3Qub3ApKi8gPj4gbGFzdF9iaXRzKV07CiAgICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0OwogICAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7CiAgICAgICAgICAgIGhlcmVfdmFsID0gaGVyZSAmIDB4ZmZmZjsKCiAgICAgICAgICAgIGlmICgobGFzdF9iaXRzICsgaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9CiAgICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy8KICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgICAgIGhhdmUtLTsKICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgLy8tLS0vLwogICAgICAgICAgfQogICAgICAgICAgLy8tLS0gRFJPUEJJVFMobGFzdC5iaXRzKSAtLS0vLwogICAgICAgICAgaG9sZCA+Pj49IGxhc3RfYml0czsKICAgICAgICAgIGJpdHMgLT0gbGFzdF9iaXRzOwogICAgICAgICAgLy8tLS0vLwogICAgICAgICAgc3RhdGUuYmFjayArPSBsYXN0X2JpdHM7CiAgICAgICAgfQogICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy8KICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzOwogICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzOwogICAgICAgIC8vLS0tLy8KICAgICAgICBzdGF0ZS5iYWNrICs9IGhlcmVfYml0czsKICAgICAgICBpZiAoaGVyZV9vcCAmIDY0KSB7CiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIGNvZGUnOwogICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBzdGF0ZS5vZmZzZXQgPSBoZXJlX3ZhbDsKICAgICAgICBzdGF0ZS5leHRyYSA9IChoZXJlX29wKSAmIDE1OwogICAgICAgIHN0YXRlLm1vZGUgPSBESVNURVhUOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBESVNURVhUOgogICAgICAgIGlmIChzdGF0ZS5leHRyYSkgewogICAgICAgICAgLy89PT0gTkVFREJJVFMoc3RhdGUuZXh0cmEpOwogICAgICAgICAgbiA9IHN0YXRlLmV4dHJhOwogICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7CiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgICBoYXZlLS07CiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzOwogICAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICB9CiAgICAgICAgICAvLz09PS8vCiAgICAgICAgICBzdGF0ZS5vZmZzZXQgKz0gaG9sZCAmICgoMSA8PCBzdGF0ZS5leHRyYSkgLSAxKS8qQklUUyhzdGF0ZS5leHRyYSkqLzsKICAgICAgICAgIC8vLS0tIERST1BCSVRTKHN0YXRlLmV4dHJhKSAtLS0vLwogICAgICAgICAgaG9sZCA+Pj49IHN0YXRlLmV4dHJhOwogICAgICAgICAgYml0cyAtPSBzdGF0ZS5leHRyYTsKICAgICAgICAgIC8vLS0tLy8KICAgICAgICAgIHN0YXRlLmJhY2sgKz0gc3RhdGUuZXh0cmE7CiAgICAgICAgfQovLyNpZmRlZiBJTkZMQVRFX1NUUklDVAogICAgICAgIGlmIChzdGF0ZS5vZmZzZXQgPiBzdGF0ZS5kbWF4KSB7CiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7CiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQovLyNlbmRpZgogICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgICBkaXN0YW5jZSAldVxuIiwgc3RhdGUub2Zmc2V0KSk7CiAgICAgICAgc3RhdGUubW9kZSA9IE1BVENIOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBNQVRDSDoKICAgICAgICBpZiAobGVmdCA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICBjb3B5ID0gX291dCAtIGxlZnQ7CiAgICAgICAgaWYgKHN0YXRlLm9mZnNldCA+IGNvcHkpIHsgICAgICAgICAvKiBjb3B5IGZyb20gd2luZG93ICovCiAgICAgICAgICBjb3B5ID0gc3RhdGUub2Zmc2V0IC0gY29weTsKICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUud2hhdmUpIHsKICAgICAgICAgICAgaWYgKHN0YXRlLnNhbmUpIHsKICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7CiAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQovLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmF1bHRzLAovLyBkb24ndCBlbmFibGUgaXQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5Ci8vI2lmZGVmIElORkxBVEVfQUxMT1dfSU5WQUxJRF9ESVNUQU5DRV9UT09GQVJfQVJSUgovLyAgICAgICAgICBUcmFjZSgoc3RkZXJyLCAiaW5mbGF0ZS5jIHRvbyBmYXJcbiIpKTsKLy8gICAgICAgICAgY29weSAtPSBzdGF0ZS53aGF2ZTsKLy8gICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS5sZW5ndGgpIHsgY29weSA9IHN0YXRlLmxlbmd0aDsgfQovLyAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIHsgY29weSA9IGxlZnQ7IH0KLy8gICAgICAgICAgbGVmdCAtPSBjb3B5OwovLyAgICAgICAgICBzdGF0ZS5sZW5ndGggLT0gY29weTsKLy8gICAgICAgICAgZG8gewovLyAgICAgICAgICAgIG91dHB1dFtwdXQrK10gPSAwOwovLyAgICAgICAgICB9IHdoaWxlICgtLWNvcHkpOwovLyAgICAgICAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7IHN0YXRlLm1vZGUgPSBMRU47IH0KLy8gICAgICAgICAgYnJlYWs7Ci8vI2VuZGlmCiAgICAgICAgICB9CiAgICAgICAgICBpZiAoY29weSA+IHN0YXRlLnduZXh0KSB7CiAgICAgICAgICAgIGNvcHkgLT0gc3RhdGUud25leHQ7CiAgICAgICAgICAgIGZyb20gPSBzdGF0ZS53c2l6ZSAtIGNvcHk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZnJvbSA9IHN0YXRlLnduZXh0IC0gY29weTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUubGVuZ3RoKSB7IGNvcHkgPSBzdGF0ZS5sZW5ndGg7IH0KICAgICAgICAgIGZyb21fc291cmNlID0gc3RhdGUud2luZG93OwogICAgICAgIH0KICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb3B5IGZyb20gb3V0cHV0ICovCiAgICAgICAgICBmcm9tX3NvdXJjZSA9IG91dHB1dDsKICAgICAgICAgIGZyb20gPSBwdXQgLSBzdGF0ZS5vZmZzZXQ7CiAgICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoOwogICAgICAgIH0KICAgICAgICBpZiAoY29weSA+IGxlZnQpIHsgY29weSA9IGxlZnQ7IH0KICAgICAgICBsZWZ0IC09IGNvcHk7CiAgICAgICAgc3RhdGUubGVuZ3RoIC09IGNvcHk7CiAgICAgICAgZG8gewogICAgICAgICAgb3V0cHV0W3B1dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107CiAgICAgICAgfSB3aGlsZSAoLS1jb3B5KTsKICAgICAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7IHN0YXRlLm1vZGUgPSBMRU47IH0KICAgICAgICBicmVhazsKICAgICAgY2FzZSBMSVQ6CiAgICAgICAgaWYgKGxlZnQgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9CiAgICAgICAgb3V0cHV0W3B1dCsrXSA9IHN0YXRlLmxlbmd0aDsKICAgICAgICBsZWZ0LS07CiAgICAgICAgc3RhdGUubW9kZSA9IExFTjsKICAgICAgICBicmVhazsKICAgICAgY2FzZSBDSEVDSzoKICAgICAgICBpZiAoc3RhdGUud3JhcCkgewogICAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOwogICAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikgewogICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH0KICAgICAgICAgICAgaGF2ZS0tOwogICAgICAgICAgICAvLyBVc2UgJ3wnIGluc3RlYWQgb2YgJysnIHRvIG1ha2Ugc3VyZSB0aGF0IHJlc3VsdCBpcyBzaWduZWQKICAgICAgICAgICAgaG9sZCB8PSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7CiAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgIH0KICAgICAgICAgIC8vPT09Ly8KICAgICAgICAgIF9vdXQgLT0gbGVmdDsKICAgICAgICAgIHN0cm0udG90YWxfb3V0ICs9IF9vdXQ7CiAgICAgICAgICBzdGF0ZS50b3RhbCArPSBfb3V0OwogICAgICAgICAgaWYgKF9vdXQpIHsKICAgICAgICAgICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID0KICAgICAgICAgICAgICAgIC8qVVBEQVRFKHN0YXRlLmNoZWNrLCBwdXQgLSBfb3V0LCBfb3V0KTsqLwogICAgICAgICAgICAgICAgKHN0YXRlLmZsYWdzID8gY3JjMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgcHV0IC0gX291dCkgOiBhZGxlcjMyKHN0YXRlLmNoZWNrLCBvdXRwdXQsIF9vdXQsIHB1dCAtIF9vdXQpKTsKCiAgICAgICAgICB9CiAgICAgICAgICBfb3V0ID0gbGVmdDsKICAgICAgICAgIC8vIE5COiBjcmMzMiBzdG9yZWQgYXMgc2lnbmVkIDMyLWJpdCBpbnQsIHpzd2FwMzIgcmV0dXJucyBzaWduZWQgdG9vCiAgICAgICAgICBpZiAoKHN0YXRlLmZsYWdzID8gaG9sZCA6IHpzd2FwMzIoaG9sZCkpICE9PSBzdGF0ZS5jaGVjaykgewogICAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgZGF0YSBjaGVjayc7CiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTsKICAgICAgICAgIGhvbGQgPSAwOwogICAgICAgICAgYml0cyA9IDA7CiAgICAgICAgICAvLz09PS8vCiAgICAgICAgICAvL1RyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICBjaGVjayBtYXRjaGVzIHRyYWlsZXJcbiIpKTsKICAgICAgICB9CiAgICAgICAgc3RhdGUubW9kZSA9IExFTkdUSDsKICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovCiAgICAgIGNhc2UgTEVOR1RIOgogICAgICAgIGlmIChzdGF0ZS53cmFwICYmIHN0YXRlLmZsYWdzKSB7CiAgICAgICAgICAvLz09PSBORUVEQklUUygzMik7CiAgICAgICAgICB3aGlsZSAoYml0cyA8IDMyKSB7CiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfQogICAgICAgICAgICBoYXZlLS07CiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzOwogICAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICB9CiAgICAgICAgICAvLz09PS8vCiAgICAgICAgICBpZiAoaG9sZCAhPT0gKHN0YXRlLnRvdGFsICYgMHhmZmZmZmZmZikpIHsKICAgICAgICAgICAgc3RybS5tc2cgPSAnaW5jb3JyZWN0IGxlbmd0aCBjaGVjayc7CiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTsKICAgICAgICAgIGhvbGQgPSAwOwogICAgICAgICAgYml0cyA9IDA7CiAgICAgICAgICAvLz09PS8vCiAgICAgICAgICAvL1RyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICBsZW5ndGggbWF0Y2hlcyB0cmFpbGVyXG4iKSk7CiAgICAgICAgfQogICAgICAgIHN0YXRlLm1vZGUgPSBET05FOwogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgY2FzZSBET05FOgogICAgICAgIHJldCA9IFpfU1RSRUFNX0VORDsKICAgICAgICBicmVhayBpbmZfbGVhdmU7CiAgICAgIGNhc2UgQkFEOgogICAgICAgIHJldCA9IFpfREFUQV9FUlJPUjsKICAgICAgICBicmVhayBpbmZfbGVhdmU7CiAgICAgIGNhc2UgTUVNOgogICAgICAgIHJldHVybiBaX01FTV9FUlJPUjsKICAgICAgY2FzZSBTWU5DOgogICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi8KICAgICAgZGVmYXVsdDoKICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CiAgICB9CiAgfQoKICAvLyBpbmZfbGVhdmUgPC0gaGVyZSBpcyByZWFsIHBsYWNlIGZvciAiZ290byBpbmZfbGVhdmUiLCBlbXVsYXRlZCB2aWEgImJyZWFrIGluZl9sZWF2ZSIKCiAgLyoKICAgICBSZXR1cm4gZnJvbSBpbmZsYXRlKCksIHVwZGF0aW5nIHRoZSB0b3RhbCBjb3VudHMgYW5kIHRoZSBjaGVjayB2YWx1ZS4KICAgICBJZiB0aGVyZSB3YXMgbm8gcHJvZ3Jlc3MgZHVyaW5nIHRoZSBpbmZsYXRlKCkgY2FsbCwgcmV0dXJuIGEgYnVmZmVyCiAgICAgZXJyb3IuICBDYWxsIHVwZGF0ZXdpbmRvdygpIHRvIGNyZWF0ZSBhbmQvb3IgdXBkYXRlIHRoZSB3aW5kb3cgc3RhdGUuCiAgICAgTm90ZTogYSBtZW1vcnkgZXJyb3IgZnJvbSBpbmZsYXRlKCkgaXMgbm9uLXJlY292ZXJhYmxlLgogICAqLwoKICAvLy0tLSBSRVNUT1JFKCkgLS0tCiAgc3RybS5uZXh0X291dCA9IHB1dDsKICBzdHJtLmF2YWlsX291dCA9IGxlZnQ7CiAgc3RybS5uZXh0X2luID0gbmV4dDsKICBzdHJtLmF2YWlsX2luID0gaGF2ZTsKICBzdGF0ZS5ob2xkID0gaG9sZDsKICBzdGF0ZS5iaXRzID0gYml0czsKICAvLy0tLQoKICBpZiAoc3RhdGUud3NpemUgfHwgKF9vdXQgIT09IHN0cm0uYXZhaWxfb3V0ICYmIHN0YXRlLm1vZGUgPCBCQUQgJiYKICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZS5tb2RlIDwgQ0hFQ0sgfHwgZmx1c2ggIT09IFpfRklOSVNIKSkpIHsKICAgIGlmICh1cGRhdGV3aW5kb3coc3RybSwgc3RybS5vdXRwdXQsIHN0cm0ubmV4dF9vdXQsIF9vdXQgLSBzdHJtLmF2YWlsX291dCkpIHsKICAgICAgc3RhdGUubW9kZSA9IE1FTTsKICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SOwogICAgfQogIH0KICBfaW4gLT0gc3RybS5hdmFpbF9pbjsKICBfb3V0IC09IHN0cm0uYXZhaWxfb3V0OwogIHN0cm0udG90YWxfaW4gKz0gX2luOwogIHN0cm0udG90YWxfb3V0ICs9IF9vdXQ7CiAgc3RhdGUudG90YWwgKz0gX291dDsKICBpZiAoc3RhdGUud3JhcCAmJiBfb3V0KSB7CiAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAvKlVQREFURShzdGF0ZS5jaGVjaywgc3RybS5uZXh0X291dCAtIF9vdXQsIF9vdXQpOyovCiAgICAgIChzdGF0ZS5mbGFncyA/IGNyYzMyKHN0YXRlLmNoZWNrLCBvdXRwdXQsIF9vdXQsIHN0cm0ubmV4dF9vdXQgLSBfb3V0KSA6IGFkbGVyMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgc3RybS5uZXh0X291dCAtIF9vdXQpKTsKICB9CiAgc3RybS5kYXRhX3R5cGUgPSBzdGF0ZS5iaXRzICsgKHN0YXRlLmxhc3QgPyA2NCA6IDApICsKICAgICAgICAgICAgICAgICAgICAoc3RhdGUubW9kZSA9PT0gVFlQRSA/IDEyOCA6IDApICsKICAgICAgICAgICAgICAgICAgICAoc3RhdGUubW9kZSA9PT0gTEVOXyB8fCBzdGF0ZS5tb2RlID09PSBDT1BZXyA/IDI1NiA6IDApOwogIGlmICgoKF9pbiA9PT0gMCAmJiBfb3V0ID09PSAwKSB8fCBmbHVzaCA9PT0gWl9GSU5JU0gpICYmIHJldCA9PT0gWl9PSykgewogICAgcmV0ID0gWl9CVUZfRVJST1I7CiAgfQogIHJldHVybiByZXQ7Cn0KCmZ1bmN0aW9uIGluZmxhdGVFbmQoc3RybSkgewoKICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUgLyp8fCBzdHJtLT56ZnJlZSA9PSAoZnJlZV9mdW5jKTAqLykgewogICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogIH0KCiAgdmFyIHN0YXRlID0gc3RybS5zdGF0ZTsKICBpZiAoc3RhdGUud2luZG93KSB7CiAgICBzdGF0ZS53aW5kb3cgPSBudWxsOwogIH0KICBzdHJtLnN0YXRlID0gbnVsbDsKICByZXR1cm4gWl9PSzsKfQoKZnVuY3Rpb24gaW5mbGF0ZUdldEhlYWRlcihzdHJtLCBoZWFkKSB7CiAgdmFyIHN0YXRlOwoKICAvKiBjaGVjayBzdGF0ZSAqLwogIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH0KICBzdGF0ZSA9IHN0cm0uc3RhdGU7CiAgaWYgKChzdGF0ZS53cmFwICYgMikgPT09IDApIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9CgogIC8qIHNhdmUgaGVhZGVyIHN0cnVjdHVyZSAqLwogIHN0YXRlLmhlYWQgPSBoZWFkOwogIGhlYWQuZG9uZSA9IGZhbHNlOwogIHJldHVybiBaX09LOwp9CgpmdW5jdGlvbiBpbmZsYXRlU2V0RGljdGlvbmFyeShzdHJtLCBkaWN0aW9uYXJ5KSB7CiAgdmFyIGRpY3RMZW5ndGggPSBkaWN0aW9uYXJ5Lmxlbmd0aDsKCiAgdmFyIHN0YXRlOwogIHZhciBkaWN0aWQ7CiAgdmFyIHJldDsKCiAgLyogY2hlY2sgc3RhdGUgKi8KICBpZiAoIXN0cm0gLyogPT0gWl9OVUxMICovIHx8ICFzdHJtLnN0YXRlIC8qID09IFpfTlVMTCAqLykgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH0KICBzdGF0ZSA9IHN0cm0uc3RhdGU7CgogIGlmIChzdGF0ZS53cmFwICE9PSAwICYmIHN0YXRlLm1vZGUgIT09IERJQ1QpIHsKICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICB9CgogIC8qIGNoZWNrIGZvciBjb3JyZWN0IGRpY3Rpb25hcnkgaWRlbnRpZmllciAqLwogIGlmIChzdGF0ZS5tb2RlID09PSBESUNUKSB7CiAgICBkaWN0aWQgPSAxOyAvKiBhZGxlcjMyKDAsIG51bGwsIDApKi8KICAgIC8qIGRpY3RpZCA9IGFkbGVyMzIoZGljdGlkLCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoKTsgKi8KICAgIGRpY3RpZCA9IGFkbGVyMzIoZGljdGlkLCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoLCAwKTsKICAgIGlmIChkaWN0aWQgIT09IHN0YXRlLmNoZWNrKSB7CiAgICAgIHJldHVybiBaX0RBVEFfRVJST1I7CiAgICB9CiAgfQogIC8qIGNvcHkgZGljdGlvbmFyeSB0byB3aW5kb3cgdXNpbmcgdXBkYXRld2luZG93KCksIHdoaWNoIHdpbGwgYW1lbmQgdGhlCiAgIGV4aXN0aW5nIGRpY3Rpb25hcnkgaWYgYXBwcm9wcmlhdGUgKi8KICByZXQgPSB1cGRhdGV3aW5kb3coc3RybSwgZGljdGlvbmFyeSwgZGljdExlbmd0aCwgZGljdExlbmd0aCk7CiAgaWYgKHJldCkgewogICAgc3RhdGUubW9kZSA9IE1FTTsKICAgIHJldHVybiBaX01FTV9FUlJPUjsKICB9CiAgc3RhdGUuaGF2ZWRpY3QgPSAxOwogIC8vIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogICBkaWN0aW9uYXJ5IHNldFxuIikpOwogIHJldHVybiBaX09LOwp9CgpleHBvcnRzLmluZmxhdGVSZXNldCA9IGluZmxhdGVSZXNldDsKZXhwb3J0cy5pbmZsYXRlUmVzZXQyID0gaW5mbGF0ZVJlc2V0MjsKZXhwb3J0cy5pbmZsYXRlUmVzZXRLZWVwID0gaW5mbGF0ZVJlc2V0S2VlcDsKZXhwb3J0cy5pbmZsYXRlSW5pdCA9IGluZmxhdGVJbml0OwpleHBvcnRzLmluZmxhdGVJbml0MiA9IGluZmxhdGVJbml0MjsKZXhwb3J0cy5pbmZsYXRlID0gaW5mbGF0ZTsKZXhwb3J0cy5pbmZsYXRlRW5kID0gaW5mbGF0ZUVuZDsKZXhwb3J0cy5pbmZsYXRlR2V0SGVhZGVyID0gaW5mbGF0ZUdldEhlYWRlcjsKZXhwb3J0cy5pbmZsYXRlU2V0RGljdGlvbmFyeSA9IGluZmxhdGVTZXREaWN0aW9uYXJ5OwpleHBvcnRzLmluZmxhdGVJbmZvID0gJ3Bha28gaW5mbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdCknOwoKLyogTm90IGltcGxlbWVudGVkCmV4cG9ydHMuaW5mbGF0ZUNvcHkgPSBpbmZsYXRlQ29weTsKZXhwb3J0cy5pbmZsYXRlR2V0RGljdGlvbmFyeSA9IGluZmxhdGVHZXREaWN0aW9uYXJ5OwpleHBvcnRzLmluZmxhdGVNYXJrID0gaW5mbGF0ZU1hcms7CmV4cG9ydHMuaW5mbGF0ZVByaW1lID0gaW5mbGF0ZVByaW1lOwpleHBvcnRzLmluZmxhdGVTeW5jID0gaW5mbGF0ZVN5bmM7CmV4cG9ydHMuaW5mbGF0ZVN5bmNQb2ludCA9IGluZmxhdGVTeW5jUG9pbnQ7CmV4cG9ydHMuaW5mbGF0ZVVuZGVybWluZSA9IGluZmxhdGVVbmRlcm1pbmU7CiovCgoKLyoqKi8gfSksCi8qIDE1OCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyCi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luCi8vCi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkCi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcwovLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgovLwovLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSwKLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdAovLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6Ci8vCi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90Ci8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUKLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUKLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgovLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZQovLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi4KCi8vIFNlZSBzdGF0ZSBkZWZzIGZyb20gaW5mbGF0ZS5qcwp2YXIgQkFEID0gMzA7ICAgICAgIC8qIGdvdCBhIGRhdGEgZXJyb3IgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi8KdmFyIFRZUEUgPSAxMjsgICAgICAvKiBpOiB3YWl0aW5nIGZvciB0eXBlIGJpdHMsIGluY2x1ZGluZyBsYXN0LWZsYWcgYml0ICovCgovKgogICBEZWNvZGUgbGl0ZXJhbCwgbGVuZ3RoLCBhbmQgZGlzdGFuY2UgY29kZXMgYW5kIHdyaXRlIG91dCB0aGUgcmVzdWx0aW5nCiAgIGxpdGVyYWwgYW5kIG1hdGNoIGJ5dGVzIHVudGlsIGVpdGhlciBub3QgZW5vdWdoIGlucHV0IG9yIG91dHB1dCBpcwogICBhdmFpbGFibGUsIGFuIGVuZC1vZi1ibG9jayBpcyBlbmNvdW50ZXJlZCwgb3IgYSBkYXRhIGVycm9yIGlzIGVuY291bnRlcmVkLgogICBXaGVuIGxhcmdlIGVub3VnaCBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMgYXJlIHN1cHBsaWVkIHRvIGluZmxhdGUoKSwgZm9yCiAgIGV4YW1wbGUsIGEgMTZLIGlucHV0IGJ1ZmZlciBhbmQgYSA2NEsgb3V0cHV0IGJ1ZmZlciwgbW9yZSB0aGFuIDk1JSBvZiB0aGUKICAgaW5mbGF0ZSBleGVjdXRpb24gdGltZSBpcyBzcGVudCBpbiB0aGlzIHJvdXRpbmUuCgogICBFbnRyeSBhc3N1bXB0aW9uczoKCiAgICAgICAgc3RhdGUubW9kZSA9PT0gTEVOCiAgICAgICAgc3RybS5hdmFpbF9pbiA+PSA2CiAgICAgICAgc3RybS5hdmFpbF9vdXQgPj0gMjU4CiAgICAgICAgc3RhcnQgPj0gc3RybS5hdmFpbF9vdXQKICAgICAgICBzdGF0ZS5iaXRzIDwgOAoKICAgT24gcmV0dXJuLCBzdGF0ZS5tb2RlIGlzIG9uZSBvZjoKCiAgICAgICAgTEVOIC0tIHJhbiBvdXQgb2YgZW5vdWdoIG91dHB1dCBzcGFjZSBvciBlbm91Z2ggYXZhaWxhYmxlIGlucHV0CiAgICAgICAgVFlQRSAtLSByZWFjaGVkIGVuZCBvZiBibG9jayBjb2RlLCBpbmZsYXRlKCkgdG8gaW50ZXJwcmV0IG5leHQgYmxvY2sKICAgICAgICBCQUQgLS0gZXJyb3IgaW4gYmxvY2sgZGF0YQoKICAgTm90ZXM6CgogICAgLSBUaGUgbWF4aW11bSBpbnB1dCBiaXRzIHVzZWQgYnkgYSBsZW5ndGgvZGlzdGFuY2UgcGFpciBpcyAxNSBiaXRzIGZvciB0aGUKICAgICAgbGVuZ3RoIGNvZGUsIDUgYml0cyBmb3IgdGhlIGxlbmd0aCBleHRyYSwgMTUgYml0cyBmb3IgdGhlIGRpc3RhbmNlIGNvZGUsCiAgICAgIGFuZCAxMyBiaXRzIGZvciB0aGUgZGlzdGFuY2UgZXh0cmEuICBUaGlzIHRvdGFscyA0OCBiaXRzLCBvciBzaXggYnl0ZXMuCiAgICAgIFRoZXJlZm9yZSBpZiBzdHJtLmF2YWlsX2luID49IDYsIHRoZW4gdGhlcmUgaXMgZW5vdWdoIGlucHV0IHRvIGF2b2lkCiAgICAgIGNoZWNraW5nIGZvciBhdmFpbGFibGUgaW5wdXQgd2hpbGUgZGVjb2RpbmcuCgogICAgLSBUaGUgbWF4aW11bSBieXRlcyB0aGF0IGEgc2luZ2xlIGxlbmd0aC9kaXN0YW5jZSBwYWlyIGNhbiBvdXRwdXQgaXMgMjU4CiAgICAgIGJ5dGVzLCB3aGljaCBpcyB0aGUgbWF4aW11bSBsZW5ndGggdGhhdCBjYW4gYmUgY29kZWQuICBpbmZsYXRlX2Zhc3QoKQogICAgICByZXF1aXJlcyBzdHJtLmF2YWlsX291dCA+PSAyNTggZm9yIGVhY2ggbG9vcCB0byBhdm9pZCBjaGVja2luZyBmb3IKICAgICAgb3V0cHV0IHNwYWNlLgogKi8KbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmZsYXRlX2Zhc3Qoc3RybSwgc3RhcnQpIHsKICB2YXIgc3RhdGU7CiAgdmFyIF9pbjsgICAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0uaW5wdXQgKi8KICB2YXIgbGFzdDsgICAgICAgICAgICAgICAgICAgLyogaGF2ZSBlbm91Z2ggaW5wdXQgd2hpbGUgaW4gPCBsYXN0ICovCiAgdmFyIF9vdXQ7ICAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0ub3V0cHV0ICovCiAgdmFyIGJlZzsgICAgICAgICAgICAgICAgICAgIC8qIGluZmxhdGUoKSdzIGluaXRpYWwgc3RybS5vdXRwdXQgKi8KICB2YXIgZW5kOyAgICAgICAgICAgICAgICAgICAgLyogd2hpbGUgb3V0IDwgZW5kLCBlbm91Z2ggc3BhY2UgYXZhaWxhYmxlICovCi8vI2lmZGVmIElORkxBVEVfU1RSSUNUCiAgdmFyIGRtYXg7ICAgICAgICAgICAgICAgICAgIC8qIG1heGltdW0gZGlzdGFuY2UgZnJvbSB6bGliIGhlYWRlciAqLwovLyNlbmRpZgogIHZhciB3c2l6ZTsgICAgICAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSBvciB6ZXJvIGlmIG5vdCB1c2luZyB3aW5kb3cgKi8KICB2YXIgd2hhdmU7ICAgICAgICAgICAgICAgICAgLyogdmFsaWQgYnl0ZXMgaW4gdGhlIHdpbmRvdyAqLwogIHZhciB3bmV4dDsgICAgICAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi8KICAvLyBVc2UgYHNfd2luZG93YCBpbnN0ZWFkIGB3aW5kb3dgLCBhdm9pZCBjb25mbGljdCB3aXRoIGluc3RydW1lbnRhdGlvbiB0b29scwogIHZhciBzX3dpbmRvdzsgICAgICAgICAgICAgICAvKiBhbGxvY2F0ZWQgc2xpZGluZyB3aW5kb3csIGlmIHdzaXplICE9IDAgKi8KICB2YXIgaG9sZDsgICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5ob2xkICovCiAgdmFyIGJpdHM7ICAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0uYml0cyAqLwogIHZhciBsY29kZTsgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmxlbmNvZGUgKi8KICB2YXIgZGNvZGU7ICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5kaXN0Y29kZSAqLwogIHZhciBsbWFzazsgICAgICAgICAgICAgICAgICAvKiBtYXNrIGZvciBmaXJzdCBsZXZlbCBvZiBsZW5ndGggY29kZXMgKi8KICB2YXIgZG1hc2s7ICAgICAgICAgICAgICAgICAgLyogbWFzayBmb3IgZmlyc3QgbGV2ZWwgb2YgZGlzdGFuY2UgY29kZXMgKi8KICB2YXIgaGVyZTsgICAgICAgICAgICAgICAgICAgLyogcmV0cmlldmVkIHRhYmxlIGVudHJ5ICovCiAgdmFyIG9wOyAgICAgICAgICAgICAgICAgICAgIC8qIGNvZGUgYml0cywgb3BlcmF0aW9uLCBleHRyYSBiaXRzLCBvciAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgd2luZG93IHBvc2l0aW9uLCB3aW5kb3cgYnl0ZXMgdG8gY29weSAqLwogIHZhciBsZW47ICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaCBsZW5ndGgsIHVudXNlZCBieXRlcyAqLwogIHZhciBkaXN0OyAgICAgICAgICAgICAgICAgICAvKiBtYXRjaCBkaXN0YW5jZSAqLwogIHZhciBmcm9tOyAgICAgICAgICAgICAgICAgICAvKiB3aGVyZSB0byBjb3B5IG1hdGNoIGZyb20gKi8KICB2YXIgZnJvbV9zb3VyY2U7CgoKICB2YXIgaW5wdXQsIG91dHB1dDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVycwoKICAvKiBjb3B5IHN0YXRlIHRvIGxvY2FsIHZhcmlhYmxlcyAqLwogIHN0YXRlID0gc3RybS5zdGF0ZTsKICAvL2hlcmUgPSBzdGF0ZS5oZXJlOwogIF9pbiA9IHN0cm0ubmV4dF9pbjsKICBpbnB1dCA9IHN0cm0uaW5wdXQ7CiAgbGFzdCA9IF9pbiArIChzdHJtLmF2YWlsX2luIC0gNSk7CiAgX291dCA9IHN0cm0ubmV4dF9vdXQ7CiAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7CiAgYmVnID0gX291dCAtIChzdGFydCAtIHN0cm0uYXZhaWxfb3V0KTsKICBlbmQgPSBfb3V0ICsgKHN0cm0uYXZhaWxfb3V0IC0gMjU3KTsKLy8jaWZkZWYgSU5GTEFURV9TVFJJQ1QKICBkbWF4ID0gc3RhdGUuZG1heDsKLy8jZW5kaWYKICB3c2l6ZSA9IHN0YXRlLndzaXplOwogIHdoYXZlID0gc3RhdGUud2hhdmU7CiAgd25leHQgPSBzdGF0ZS53bmV4dDsKICBzX3dpbmRvdyA9IHN0YXRlLndpbmRvdzsKICBob2xkID0gc3RhdGUuaG9sZDsKICBiaXRzID0gc3RhdGUuYml0czsKICBsY29kZSA9IHN0YXRlLmxlbmNvZGU7CiAgZGNvZGUgPSBzdGF0ZS5kaXN0Y29kZTsKICBsbWFzayA9ICgxIDw8IHN0YXRlLmxlbmJpdHMpIC0gMTsKICBkbWFzayA9ICgxIDw8IHN0YXRlLmRpc3RiaXRzKSAtIDE7CgoKICAvKiBkZWNvZGUgbGl0ZXJhbHMgYW5kIGxlbmd0aC9kaXN0YW5jZXMgdW50aWwgZW5kLW9mLWJsb2NrIG9yIG5vdCBlbm91Z2gKICAgICBpbnB1dCBkYXRhIG9yIG91dHB1dCBzcGFjZSAqLwoKICB0b3A6CiAgZG8gewogICAgaWYgKGJpdHMgPCAxNSkgewogICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzOwogICAgICBiaXRzICs9IDg7CiAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7CiAgICAgIGJpdHMgKz0gODsKICAgIH0KCiAgICBoZXJlID0gbGNvZGVbaG9sZCAmIGxtYXNrXTsKCiAgICBkb2xlbjoKICAgIGZvciAoOzspIHsgLy8gR290byBlbXVsYXRpb24KICAgICAgb3AgPSBoZXJlID4+PiAyNC8qaGVyZS5iaXRzKi87CiAgICAgIGhvbGQgPj4+PSBvcDsKICAgICAgYml0cyAtPSBvcDsKICAgICAgb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZi8qaGVyZS5vcCovOwogICAgICBpZiAob3AgPT09IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxpdGVyYWwgKi8KICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgaGVyZS52YWwgPj0gMHgyMCAmJiBoZXJlLnZhbCA8IDB4N2YgPwogICAgICAgIC8vICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsICclYydcbiIgOgogICAgICAgIC8vICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsIDB4JTAyeFxuIiwgaGVyZS52YWwpKTsKICAgICAgICBvdXRwdXRbX291dCsrXSA9IGhlcmUgJiAweGZmZmYvKmhlcmUudmFsKi87CiAgICAgIH0KICAgICAgZWxzZSBpZiAob3AgJiAxNikgeyAgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBiYXNlICovCiAgICAgICAgbGVuID0gaGVyZSAmIDB4ZmZmZi8qaGVyZS52YWwqLzsKICAgICAgICBvcCAmPSAxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyAqLwogICAgICAgIGlmIChvcCkgewogICAgICAgICAgaWYgKGJpdHMgPCBvcCkgewogICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzOwogICAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICB9CiAgICAgICAgICBsZW4gKz0gaG9sZCAmICgoMSA8PCBvcCkgLSAxKTsKICAgICAgICAgIGhvbGQgPj4+PSBvcDsKICAgICAgICAgIGJpdHMgLT0gb3A7CiAgICAgICAgfQogICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgICBsZW5ndGggJXVcbiIsIGxlbikpOwogICAgICAgIGlmIChiaXRzIDwgMTUpIHsKICAgICAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7CiAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzOwogICAgICAgICAgYml0cyArPSA4OwogICAgICAgIH0KICAgICAgICBoZXJlID0gZGNvZGVbaG9sZCAmIGRtYXNrXTsKCiAgICAgICAgZG9kaXN0OgogICAgICAgIGZvciAoOzspIHsgLy8gZ290byBlbXVsYXRpb24KICAgICAgICAgIG9wID0gaGVyZSA+Pj4gMjQvKmhlcmUuYml0cyovOwogICAgICAgICAgaG9sZCA+Pj49IG9wOwogICAgICAgICAgYml0cyAtPSBvcDsKICAgICAgICAgIG9wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmYvKmhlcmUub3AqLzsKCiAgICAgICAgICBpZiAob3AgJiAxNikgeyAgICAgICAgICAgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYXNlICovCiAgICAgICAgICAgIGRpc3QgPSBoZXJlICYgMHhmZmZmLypoZXJlLnZhbCovOwogICAgICAgICAgICBvcCAmPSAxNTsgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSBiaXRzICovCiAgICAgICAgICAgIGlmIChiaXRzIDwgb3ApIHsKICAgICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzOwogICAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7CiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzOwogICAgICAgICAgICAgICAgYml0cyArPSA4OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBkaXN0ICs9IGhvbGQgJiAoKDEgPDwgb3ApIC0gMSk7Ci8vI2lmZGVmIElORkxBVEVfU1RSSUNUCiAgICAgICAgICAgIGlmIChkaXN0ID4gZG1heCkgewogICAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrJzsKICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEOwogICAgICAgICAgICAgIGJyZWFrIHRvcDsKICAgICAgICAgICAgfQovLyNlbmRpZgogICAgICAgICAgICBob2xkID4+Pj0gb3A7CiAgICAgICAgICAgIGJpdHMgLT0gb3A7CiAgICAgICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCAiaW5mbGF0ZTogICAgICAgICBkaXN0YW5jZSAldVxuIiwgZGlzdCkpOwogICAgICAgICAgICBvcCA9IF9vdXQgLSBiZWc7ICAgICAgICAgICAgICAgIC8qIG1heCBkaXN0YW5jZSBpbiBvdXRwdXQgKi8KICAgICAgICAgICAgaWYgKGRpc3QgPiBvcCkgeyAgICAgICAgICAgICAgICAvKiBzZWUgaWYgY29weSBmcm9tIHdpbmRvdyAqLwogICAgICAgICAgICAgIG9wID0gZGlzdCAtIG9wOyAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhY2sgaW4gd2luZG93ICovCiAgICAgICAgICAgICAgaWYgKG9wID4gd2hhdmUpIHsKICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zYW5lKSB7CiAgICAgICAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrJzsKICAgICAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDsKICAgICAgICAgICAgICAgICAgYnJlYWsgdG9wOwogICAgICAgICAgICAgICAgfQoKLy8gKCEpIFRoaXMgYmxvY2sgaXMgZGlzYWJsZWQgaW4gemxpYiBkZWZhdWx0cywKLy8gZG9uJ3QgZW5hYmxlIGl0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eQovLyNpZmRlZiBJTkZMQVRFX0FMTE9XX0lOVkFMSURfRElTVEFOQ0VfVE9PRkFSX0FSUlIKLy8gICAgICAgICAgICAgICAgaWYgKGxlbiA8PSBvcCAtIHdoYXZlKSB7Ci8vICAgICAgICAgICAgICAgICAgZG8gewovLyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSAwOwovLyAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tbGVuKTsKLy8gICAgICAgICAgICAgICAgICBjb250aW51ZSB0b3A7Ci8vICAgICAgICAgICAgICAgIH0KLy8gICAgICAgICAgICAgICAgbGVuIC09IG9wIC0gd2hhdmU7Ci8vICAgICAgICAgICAgICAgIGRvIHsKLy8gICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IDA7Ci8vICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3AgPiB3aGF2ZSk7Ci8vICAgICAgICAgICAgICAgIGlmIChvcCA9PT0gMCkgewovLyAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsKLy8gICAgICAgICAgICAgICAgICBkbyB7Ci8vICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdOwovLyAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tbGVuKTsKLy8gICAgICAgICAgICAgICAgICBjb250aW51ZSB0b3A7Ci8vICAgICAgICAgICAgICAgIH0KLy8jZW5kaWYKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZnJvbSA9IDA7IC8vIHdpbmRvdyBpbmRleAogICAgICAgICAgICAgIGZyb21fc291cmNlID0gc193aW5kb3c7CiAgICAgICAgICAgICAgaWYgKHduZXh0ID09PSAwKSB7ICAgICAgICAgICAvKiB2ZXJ5IGNvbW1vbiBjYXNlICovCiAgICAgICAgICAgICAgICBmcm9tICs9IHdzaXplIC0gb3A7CiAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gd2luZG93ICovCiAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDsKICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gc193aW5kb3dbZnJvbSsrXTsKICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7CiAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi8KICAgICAgICAgICAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgaWYgKHduZXh0IDwgb3ApIHsgICAgICAvKiB3cmFwIGFyb3VuZCB3aW5kb3cgKi8KICAgICAgICAgICAgICAgIGZyb20gKz0gd3NpemUgKyB3bmV4dCAtIG9wOwogICAgICAgICAgICAgICAgb3AgLT0gd25leHQ7CiAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gZW5kIG9mIHdpbmRvdyAqLwogICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7CiAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107CiAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApOwogICAgICAgICAgICAgICAgICBmcm9tID0gMDsKICAgICAgICAgICAgICAgICAgaWYgKHduZXh0IDwgbGVuKSB7ICAvKiBzb21lIGZyb20gc3RhcnQgb2Ygd2luZG93ICovCiAgICAgICAgICAgICAgICAgICAgb3AgPSB3bmV4dDsKICAgICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7CiAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBzX3dpbmRvd1tmcm9tKytdOwogICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApOwogICAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgICAgICAvKiByZXN0IGZyb20gb3V0cHV0ICovCiAgICAgICAgICAgICAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbnRpZ3VvdXMgaW4gd2luZG93ICovCiAgICAgICAgICAgICAgICBmcm9tICs9IHduZXh0IC0gb3A7CiAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gd2luZG93ICovCiAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDsKICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gc193aW5kb3dbZnJvbSsrXTsKICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7CiAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi8KICAgICAgICAgICAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHdoaWxlIChsZW4gPiAyKSB7CiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107CiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107CiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107CiAgICAgICAgICAgICAgICBsZW4gLT0gMzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGxlbikgewogICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdOwogICAgICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHsKICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7ICAgICAgICAgIC8qIGNvcHkgZGlyZWN0IGZyb20gb3V0cHV0ICovCiAgICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbmltdW0gbGVuZ3RoIGlzIHRocmVlICovCiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdOwogICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBvdXRwdXRbZnJvbSsrXTsKICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107CiAgICAgICAgICAgICAgICBsZW4gLT0gMzsKICAgICAgICAgICAgICB9IHdoaWxlIChsZW4gPiAyKTsKICAgICAgICAgICAgICBpZiAobGVuKSB7CiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdOwogICAgICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHsKICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBvdXRwdXRbZnJvbSsrXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYgKChvcCAmIDY0KSA9PT0gMCkgeyAgICAgICAgICAvKiAybmQgbGV2ZWwgZGlzdGFuY2UgY29kZSAqLwogICAgICAgICAgICBoZXJlID0gZGNvZGVbKGhlcmUgJiAweGZmZmYpLypoZXJlLnZhbCovICsgKGhvbGQgJiAoKDEgPDwgb3ApIC0gMSkpXTsKICAgICAgICAgICAgY29udGludWUgZG9kaXN0OwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgY29kZSc7CiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgICAgIGJyZWFrIHRvcDsKICAgICAgICAgIH0KCiAgICAgICAgICBicmVhazsgLy8gbmVlZCB0byBlbXVsYXRlIGdvdG8gdmlhICJjb250aW51ZSIKICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSBpZiAoKG9wICYgNjQpID09PSAwKSB7ICAgICAgICAgICAgICAvKiAybmQgbGV2ZWwgbGVuZ3RoIGNvZGUgKi8KICAgICAgICBoZXJlID0gbGNvZGVbKGhlcmUgJiAweGZmZmYpLypoZXJlLnZhbCovICsgKGhvbGQgJiAoKDEgPDwgb3ApIC0gMSkpXTsKICAgICAgICBjb250aW51ZSBkb2xlbjsKICAgICAgfQogICAgICBlbHNlIGlmIChvcCAmIDMyKSB7ICAgICAgICAgICAgICAgICAgICAgLyogZW5kLW9mLWJsb2NrICovCiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsICJpbmZsYXRlOiAgICAgICAgIGVuZCBvZiBibG9ja1xuIikpOwogICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFOwogICAgICAgIGJyZWFrIHRvcDsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUnOwogICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7CiAgICAgICAgYnJlYWsgdG9wOwogICAgICB9CgogICAgICBicmVhazsgLy8gbmVlZCB0byBlbXVsYXRlIGdvdG8gdmlhICJjb250aW51ZSIKICAgIH0KICB9IHdoaWxlIChfaW4gPCBsYXN0ICYmIF9vdXQgPCBlbmQpOwoKICAvKiByZXR1cm4gdW51c2VkIGJ5dGVzIChvbiBlbnRyeSwgYml0cyA8IDgsIHNvIGluIHdvbid0IGdvIHRvbyBmYXIgYmFjaykgKi8KICBsZW4gPSBiaXRzID4+IDM7CiAgX2luIC09IGxlbjsKICBiaXRzIC09IGxlbiA8PCAzOwogIGhvbGQgJj0gKDEgPDwgYml0cykgLSAxOwoKICAvKiB1cGRhdGUgc3RhdGUgYW5kIHJldHVybiAqLwogIHN0cm0ubmV4dF9pbiA9IF9pbjsKICBzdHJtLm5leHRfb3V0ID0gX291dDsKICBzdHJtLmF2YWlsX2luID0gKF9pbiA8IGxhc3QgPyA1ICsgKGxhc3QgLSBfaW4pIDogNSAtIChfaW4gLSBsYXN0KSk7CiAgc3RybS5hdmFpbF9vdXQgPSAoX291dCA8IGVuZCA/IDI1NyArIChlbmQgLSBfb3V0KSA6IDI1NyAtIChfb3V0IC0gZW5kKSk7CiAgc3RhdGUuaG9sZCA9IGhvbGQ7CiAgc3RhdGUuYml0cyA9IGJpdHM7CiAgcmV0dXJuOwp9OwoKCi8qKiovIH0pLAovKiAxNTkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcgovLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpbgovLwovLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAovLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMKLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KLy8KLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsCi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXQKLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgovLwovLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdAovLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlCi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlCi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUKLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uCgp2YXIgdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTsKCnZhciBNQVhCSVRTID0gMTU7CnZhciBFTk9VR0hfTEVOUyA9IDg1MjsKdmFyIEVOT1VHSF9ESVNUUyA9IDU5MjsKLy92YXIgRU5PVUdIID0gKEVOT1VHSF9MRU5TK0VOT1VHSF9ESVNUUyk7Cgp2YXIgQ09ERVMgPSAwOwp2YXIgTEVOUyA9IDE7CnZhciBESVNUUyA9IDI7Cgp2YXIgbGJhc2UgPSBbIC8qIExlbmd0aCBjb2RlcyAyNTcuLjI4NSBiYXNlICovCiAgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMywgMTUsIDE3LCAxOSwgMjMsIDI3LCAzMSwKICAzNSwgNDMsIDUxLCA1OSwgNjcsIDgzLCA5OSwgMTE1LCAxMzEsIDE2MywgMTk1LCAyMjcsIDI1OCwgMCwgMApdOwoKdmFyIGxleHQgPSBbIC8qIExlbmd0aCBjb2RlcyAyNTcuLjI4NSBleHRyYSAqLwogIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LAogIDE5LCAxOSwgMTksIDE5LCAyMCwgMjAsIDIwLCAyMCwgMjEsIDIxLCAyMSwgMjEsIDE2LCA3MiwgNzgKXTsKCnZhciBkYmFzZSA9IFsgLyogRGlzdGFuY2UgY29kZXMgMC4uMjkgYmFzZSAqLwogIDEsIDIsIDMsIDQsIDUsIDcsIDksIDEzLCAxNywgMjUsIDMzLCA0OSwgNjUsIDk3LCAxMjksIDE5MywKICAyNTcsIDM4NSwgNTEzLCA3NjksIDEwMjUsIDE1MzcsIDIwNDksIDMwNzMsIDQwOTcsIDYxNDUsCiAgODE5MywgMTIyODksIDE2Mzg1LCAyNDU3NywgMCwgMApdOwoKdmFyIGRleHQgPSBbIC8qIERpc3RhbmNlIGNvZGVzIDAuLjI5IGV4dHJhICovCiAgMTYsIDE2LCAxNiwgMTYsIDE3LCAxNywgMTgsIDE4LCAxOSwgMTksIDIwLCAyMCwgMjEsIDIxLCAyMiwgMjIsCiAgMjMsIDIzLCAyNCwgMjQsIDI1LCAyNSwgMjYsIDI2LCAyNywgMjcsCiAgMjgsIDI4LCAyOSwgMjksIDY0LCA2NApdOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmZsYXRlX3RhYmxlKHR5cGUsIGxlbnMsIGxlbnNfaW5kZXgsIGNvZGVzLCB0YWJsZSwgdGFibGVfaW5kZXgsIHdvcmssIG9wdHMpCnsKICB2YXIgYml0cyA9IG9wdHMuYml0czsKICAgICAgLy9oZXJlID0gb3B0cy5oZXJlOyAvKiB0YWJsZSBlbnRyeSBmb3IgZHVwbGljYXRpb24gKi8KCiAgdmFyIGxlbiA9IDA7ICAgICAgICAgICAgICAgLyogYSBjb2RlJ3MgbGVuZ3RoIGluIGJpdHMgKi8KICB2YXIgc3ltID0gMDsgICAgICAgICAgICAgICAvKiBpbmRleCBvZiBjb2RlIHN5bWJvbHMgKi8KICB2YXIgbWluID0gMCwgbWF4ID0gMDsgICAgICAgICAgLyogbWluaW11bSBhbmQgbWF4aW11bSBjb2RlIGxlbmd0aHMgKi8KICB2YXIgcm9vdCA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgaW5kZXggYml0cyBmb3Igcm9vdCB0YWJsZSAqLwogIHZhciBjdXJyID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciBjdXJyZW50IHRhYmxlICovCiAgdmFyIGRyb3AgPSAwOyAgICAgICAgICAgICAgLyogY29kZSBiaXRzIHRvIGRyb3AgZm9yIHN1Yi10YWJsZSAqLwogIHZhciBsZWZ0ID0gMDsgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHByZWZpeCBjb2RlcyBhdmFpbGFibGUgKi8KICB2YXIgdXNlZCA9IDA7ICAgICAgICAgICAgICAvKiBjb2RlIGVudHJpZXMgaW4gdGFibGUgdXNlZCAqLwogIHZhciBodWZmID0gMDsgICAgICAgICAgICAgIC8qIEh1ZmZtYW4gY29kZSAqLwogIHZhciBpbmNyOyAgICAgICAgICAgICAgLyogZm9yIGluY3JlbWVudGluZyBjb2RlLCBpbmRleCAqLwogIHZhciBmaWxsOyAgICAgICAgICAgICAgLyogaW5kZXggZm9yIHJlcGxpY2F0aW5nIGVudHJpZXMgKi8KICB2YXIgbG93OyAgICAgICAgICAgICAgIC8qIGxvdyBiaXRzIGZvciBjdXJyZW50IHJvb3QgZW50cnkgKi8KICB2YXIgbWFzazsgICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGxvdyByb290IGJpdHMgKi8KICB2YXIgbmV4dDsgICAgICAgICAgICAgLyogbmV4dCBhdmFpbGFibGUgc3BhY2UgaW4gdGFibGUgKi8KICB2YXIgYmFzZSA9IG51bGw7ICAgICAvKiBiYXNlIHZhbHVlIHRhYmxlIHRvIHVzZSAqLwogIHZhciBiYXNlX2luZGV4ID0gMDsKLy8gIHZhciBzaG9leHRyYTsgICAgLyogZXh0cmEgYml0cyB0YWJsZSB0byB1c2UgKi8KICB2YXIgZW5kOyAgICAgICAgICAgICAgICAgICAgLyogdXNlIGJhc2UgYW5kIGV4dHJhIGZvciBzeW1ib2wgPiBlbmQgKi8KICB2YXIgY291bnQgPSBuZXcgdXRpbHMuQnVmMTYoTUFYQklUUyArIDEpOyAvL1tNQVhCSVRTKzFdOyAgICAvKiBudW1iZXIgb2YgY29kZXMgb2YgZWFjaCBsZW5ndGggKi8KICB2YXIgb2ZmcyA9IG5ldyB1dGlscy5CdWYxNihNQVhCSVRTICsgMSk7IC8vW01BWEJJVFMrMV07ICAgICAvKiBvZmZzZXRzIGluIHRhYmxlIGZvciBlYWNoIGxlbmd0aCAqLwogIHZhciBleHRyYSA9IG51bGw7CiAgdmFyIGV4dHJhX2luZGV4ID0gMDsKCiAgdmFyIGhlcmVfYml0cywgaGVyZV9vcCwgaGVyZV92YWw7CgogIC8qCiAgIFByb2Nlc3MgYSBzZXQgb2YgY29kZSBsZW5ndGhzIHRvIGNyZWF0ZSBhIGNhbm9uaWNhbCBIdWZmbWFuIGNvZGUuICBUaGUKICAgY29kZSBsZW5ndGhzIGFyZSBsZW5zWzAuLmNvZGVzLTFdLiAgRWFjaCBsZW5ndGggY29ycmVzcG9uZHMgdG8gdGhlCiAgIHN5bWJvbHMgMC4uY29kZXMtMS4gIFRoZSBIdWZmbWFuIGNvZGUgaXMgZ2VuZXJhdGVkIGJ5IGZpcnN0IHNvcnRpbmcgdGhlCiAgIHN5bWJvbHMgYnkgbGVuZ3RoIGZyb20gc2hvcnQgdG8gbG9uZywgYW5kIHJldGFpbmluZyB0aGUgc3ltYm9sIG9yZGVyCiAgIGZvciBjb2RlcyB3aXRoIGVxdWFsIGxlbmd0aHMuICBUaGVuIHRoZSBjb2RlIHN0YXJ0cyB3aXRoIGFsbCB6ZXJvIGJpdHMKICAgZm9yIHRoZSBmaXJzdCBjb2RlIG9mIHRoZSBzaG9ydGVzdCBsZW5ndGgsIGFuZCB0aGUgY29kZXMgYXJlIGludGVnZXIKICAgaW5jcmVtZW50cyBmb3IgdGhlIHNhbWUgbGVuZ3RoLCBhbmQgemVyb3MgYXJlIGFwcGVuZGVkIGFzIHRoZSBsZW5ndGgKICAgaW5jcmVhc2VzLiAgRm9yIHRoZSBkZWZsYXRlIGZvcm1hdCwgdGhlc2UgYml0cyBhcmUgc3RvcmVkIGJhY2t3YXJkcwogICBmcm9tIHRoZWlyIG1vcmUgbmF0dXJhbCBpbnRlZ2VyIGluY3JlbWVudCBvcmRlcmluZywgYW5kIHNvIHdoZW4gdGhlCiAgIGRlY29kaW5nIHRhYmxlcyBhcmUgYnVpbHQgaW4gdGhlIGxhcmdlIGxvb3AgYmVsb3csIHRoZSBpbnRlZ2VyIGNvZGVzCiAgIGFyZSBpbmNyZW1lbnRlZCBiYWNrd2FyZHMuCgogICBUaGlzIHJvdXRpbmUgYXNzdW1lcywgYnV0IGRvZXMgbm90IGNoZWNrLCB0aGF0IGFsbCBvZiB0aGUgZW50cmllcyBpbgogICBsZW5zW10gYXJlIGluIHRoZSByYW5nZSAwLi5NQVhCSVRTLiAgVGhlIGNhbGxlciBtdXN0IGFzc3VyZSB0aGlzLgogICAxLi5NQVhCSVRTIGlzIGludGVycHJldGVkIGFzIHRoYXQgY29kZSBsZW5ndGguICB6ZXJvIG1lYW5zIHRoYXQgdGhhdAogICBzeW1ib2wgZG9lcyBub3Qgb2NjdXIgaW4gdGhpcyBjb2RlLgoKICAgVGhlIGNvZGVzIGFyZSBzb3J0ZWQgYnkgY29tcHV0aW5nIGEgY291bnQgb2YgY29kZXMgZm9yIGVhY2ggbGVuZ3RoLAogICBjcmVhdGluZyBmcm9tIHRoYXQgYSB0YWJsZSBvZiBzdGFydGluZyBpbmRpY2VzIGZvciBlYWNoIGxlbmd0aCBpbiB0aGUKICAgc29ydGVkIHRhYmxlLCBhbmQgdGhlbiBlbnRlcmluZyB0aGUgc3ltYm9scyBpbiBvcmRlciBpbiB0aGUgc29ydGVkCiAgIHRhYmxlLiAgVGhlIHNvcnRlZCB0YWJsZSBpcyB3b3JrW10sIHdpdGggdGhhdCBzcGFjZSBiZWluZyBwcm92aWRlZCBieQogICB0aGUgY2FsbGVyLgoKICAgVGhlIGxlbmd0aCBjb3VudHMgYXJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzIGFzIHdlbGwsIGkuZS4gZmluZGluZwogICB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBsZW5ndGggY29kZXMsIGRldGVybWluaW5nIGlmIHRoZXJlIGFyZSBhbnkKICAgY29kZXMgYXQgYWxsLCBjaGVja2luZyBmb3IgYSB2YWxpZCBzZXQgb2YgbGVuZ3RocywgYW5kIGxvb2tpbmcgYWhlYWQKICAgYXQgbGVuZ3RoIGNvdW50cyB0byBkZXRlcm1pbmUgc3ViLXRhYmxlIHNpemVzIHdoZW4gYnVpbGRpbmcgdGhlCiAgIGRlY29kaW5nIHRhYmxlcy4KICAgKi8KCiAgLyogYWNjdW11bGF0ZSBsZW5ndGhzIGZvciBjb2RlcyAoYXNzdW1lcyBsZW5zW10gYWxsIGluIDAuLk1BWEJJVFMpICovCiAgZm9yIChsZW4gPSAwOyBsZW4gPD0gTUFYQklUUzsgbGVuKyspIHsKICAgIGNvdW50W2xlbl0gPSAwOwogIH0KICBmb3IgKHN5bSA9IDA7IHN5bSA8IGNvZGVzOyBzeW0rKykgewogICAgY291bnRbbGVuc1tsZW5zX2luZGV4ICsgc3ltXV0rKzsKICB9CgogIC8qIGJvdW5kIGNvZGUgbGVuZ3RocywgZm9yY2Ugcm9vdCB0byBiZSB3aXRoaW4gY29kZSBsZW5ndGhzICovCiAgcm9vdCA9IGJpdHM7CiAgZm9yIChtYXggPSBNQVhCSVRTOyBtYXggPj0gMTsgbWF4LS0pIHsKICAgIGlmIChjb3VudFttYXhdICE9PSAwKSB7IGJyZWFrOyB9CiAgfQogIGlmIChyb290ID4gbWF4KSB7CiAgICByb290ID0gbWF4OwogIH0KICBpZiAobWF4ID09PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgLyogbm8gc3ltYm9scyB0byBjb2RlIGF0IGFsbCAqLwogICAgLy90YWJsZS5vcFtvcHRzLnRhYmxlX2luZGV4XSA9IDY0OyAgLy9oZXJlLm9wID0gKHZhciBjaGFyKTY0OyAgICAvKiBpbnZhbGlkIGNvZGUgbWFya2VyICovCiAgICAvL3RhYmxlLmJpdHNbb3B0cy50YWJsZV9pbmRleF0gPSAxOyAgIC8vaGVyZS5iaXRzID0gKHZhciBjaGFyKTE7CiAgICAvL3RhYmxlLnZhbFtvcHRzLnRhYmxlX2luZGV4KytdID0gMDsgICAvL2hlcmUudmFsID0gKHZhciBzaG9ydCkwOwogICAgdGFibGVbdGFibGVfaW5kZXgrK10gPSAoMSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwgMDsKCgogICAgLy90YWJsZS5vcFtvcHRzLnRhYmxlX2luZGV4XSA9IDY0OwogICAgLy90YWJsZS5iaXRzW29wdHMudGFibGVfaW5kZXhdID0gMTsKICAgIC8vdGFibGUudmFsW29wdHMudGFibGVfaW5kZXgrK10gPSAwOwogICAgdGFibGVbdGFibGVfaW5kZXgrK10gPSAoMSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwgMDsKCiAgICBvcHRzLmJpdHMgPSAxOwogICAgcmV0dXJuIDA7ICAgICAvKiBubyBzeW1ib2xzLCBidXQgd2FpdCBmb3IgZGVjb2RpbmcgdG8gcmVwb3J0IGVycm9yICovCiAgfQogIGZvciAobWluID0gMTsgbWluIDwgbWF4OyBtaW4rKykgewogICAgaWYgKGNvdW50W21pbl0gIT09IDApIHsgYnJlYWs7IH0KICB9CiAgaWYgKHJvb3QgPCBtaW4pIHsKICAgIHJvb3QgPSBtaW47CiAgfQoKICAvKiBjaGVjayBmb3IgYW4gb3Zlci1zdWJzY3JpYmVkIG9yIGluY29tcGxldGUgc2V0IG9mIGxlbmd0aHMgKi8KICBsZWZ0ID0gMTsKICBmb3IgKGxlbiA9IDE7IGxlbiA8PSBNQVhCSVRTOyBsZW4rKykgewogICAgbGVmdCA8PD0gMTsKICAgIGxlZnQgLT0gY291bnRbbGVuXTsKICAgIGlmIChsZWZ0IDwgMCkgewogICAgICByZXR1cm4gLTE7CiAgICB9ICAgICAgICAvKiBvdmVyLXN1YnNjcmliZWQgKi8KICB9CiAgaWYgKGxlZnQgPiAwICYmICh0eXBlID09PSBDT0RFUyB8fCBtYXggIT09IDEpKSB7CiAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAgIC8qIGluY29tcGxldGUgc2V0ICovCiAgfQoKICAvKiBnZW5lcmF0ZSBvZmZzZXRzIGludG8gc3ltYm9sIHRhYmxlIGZvciBlYWNoIGxlbmd0aCBmb3Igc29ydGluZyAqLwogIG9mZnNbMV0gPSAwOwogIGZvciAobGVuID0gMTsgbGVuIDwgTUFYQklUUzsgbGVuKyspIHsKICAgIG9mZnNbbGVuICsgMV0gPSBvZmZzW2xlbl0gKyBjb3VudFtsZW5dOwogIH0KCiAgLyogc29ydCBzeW1ib2xzIGJ5IGxlbmd0aCwgYnkgc3ltYm9sIG9yZGVyIHdpdGhpbiBlYWNoIGxlbmd0aCAqLwogIGZvciAoc3ltID0gMDsgc3ltIDwgY29kZXM7IHN5bSsrKSB7CiAgICBpZiAobGVuc1tsZW5zX2luZGV4ICsgc3ltXSAhPT0gMCkgewogICAgICB3b3JrW29mZnNbbGVuc1tsZW5zX2luZGV4ICsgc3ltXV0rK10gPSBzeW07CiAgICB9CiAgfQoKICAvKgogICBDcmVhdGUgYW5kIGZpbGwgaW4gZGVjb2RpbmcgdGFibGVzLiAgSW4gdGhpcyBsb29wLCB0aGUgdGFibGUgYmVpbmcKICAgZmlsbGVkIGlzIGF0IG5leHQgYW5kIGhhcyBjdXJyIGluZGV4IGJpdHMuICBUaGUgY29kZSBiZWluZyB1c2VkIGlzIGh1ZmYKICAgd2l0aCBsZW5ndGggbGVuLiAgVGhhdCBjb2RlIGlzIGNvbnZlcnRlZCB0byBhbiBpbmRleCBieSBkcm9wcGluZyBkcm9wCiAgIGJpdHMgb2ZmIG9mIHRoZSBib3R0b20uICBGb3IgY29kZXMgd2hlcmUgbGVuIGlzIGxlc3MgdGhhbiBkcm9wICsgY3VyciwKICAgdGhvc2UgdG9wIGRyb3AgKyBjdXJyIC0gbGVuIGJpdHMgYXJlIGluY3JlbWVudGVkIHRocm91Z2ggYWxsIHZhbHVlcyB0bwogICBmaWxsIHRoZSB0YWJsZSB3aXRoIHJlcGxpY2F0ZWQgZW50cmllcy4KCiAgIHJvb3QgaXMgdGhlIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciB0aGUgcm9vdCB0YWJsZS4gIFdoZW4gbGVuIGV4Y2VlZHMKICAgcm9vdCwgc3ViLXRhYmxlcyBhcmUgY3JlYXRlZCBwb2ludGVkIHRvIGJ5IHRoZSByb290IGVudHJ5IHdpdGggYW4gaW5kZXgKICAgb2YgdGhlIGxvdyByb290IGJpdHMgb2YgaHVmZi4gIFRoaXMgaXMgc2F2ZWQgaW4gbG93IHRvIGNoZWNrIGZvciB3aGVuIGEKICAgbmV3IHN1Yi10YWJsZSBzaG91bGQgYmUgc3RhcnRlZC4gIGRyb3AgaXMgemVybyB3aGVuIHRoZSByb290IHRhYmxlIGlzCiAgIGJlaW5nIGZpbGxlZCwgYW5kIGRyb3AgaXMgcm9vdCB3aGVuIHN1Yi10YWJsZXMgYXJlIGJlaW5nIGZpbGxlZC4KCiAgIFdoZW4gYSBuZXcgc3ViLXRhYmxlIGlzIG5lZWRlZCwgaXQgaXMgbmVjZXNzYXJ5IHRvIGxvb2sgYWhlYWQgaW4gdGhlCiAgIGNvZGUgbGVuZ3RocyB0byBkZXRlcm1pbmUgd2hhdCBzaXplIHN1Yi10YWJsZSBpcyBuZWVkZWQuICBUaGUgbGVuZ3RoCiAgIGNvdW50cyBhcmUgdXNlZCBmb3IgdGhpcywgYW5kIHNvIGNvdW50W10gaXMgZGVjcmVtZW50ZWQgYXMgY29kZXMgYXJlCiAgIGVudGVyZWQgaW4gdGhlIHRhYmxlcy4KCiAgIHVzZWQga2VlcHMgdHJhY2sgb2YgaG93IG1hbnkgdGFibGUgZW50cmllcyBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gdGhlCiAgIHByb3ZpZGVkICp0YWJsZSBzcGFjZS4gIEl0IGlzIGNoZWNrZWQgZm9yIExFTlMgYW5kIERJU1QgdGFibGVzIGFnYWluc3QKICAgdGhlIGNvbnN0YW50cyBFTk9VR0hfTEVOUyBhbmQgRU5PVUdIX0RJU1RTIHRvIGd1YXJkIGFnYWluc3QgY2hhbmdlcyBpbgogICB0aGUgaW5pdGlhbCByb290IHRhYmxlIHNpemUgY29uc3RhbnRzLiAgU2VlIHRoZSBjb21tZW50cyBpbiBpbmZ0cmVlcy5oCiAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKICAgc3ltIGluY3JlbWVudHMgdGhyb3VnaCBhbGwgc3ltYm9scywgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMgd2hlbgogICBhbGwgY29kZXMgb2YgbGVuZ3RoIG1heCwgaS5lLiBhbGwgY29kZXMsIGhhdmUgYmVlbiBwcm9jZXNzZWQuICBUaGlzCiAgIHJvdXRpbmUgcGVybWl0cyBpbmNvbXBsZXRlIGNvZGVzLCBzbyBhbm90aGVyIGxvb3AgYWZ0ZXIgdGhpcyBvbmUgZmlsbHMKICAgaW4gdGhlIHJlc3Qgb2YgdGhlIGRlY29kaW5nIHRhYmxlcyB3aXRoIGludmFsaWQgY29kZSBtYXJrZXJzLgogICAqLwoKICAvKiBzZXQgdXAgZm9yIGNvZGUgdHlwZSAqLwogIC8vIHBvb3IgbWFuIG9wdGltaXphdGlvbiAtIHVzZSBpZi1lbHNlIGluc3RlYWQgb2Ygc3dpdGNoLAogIC8vIHRvIGF2b2lkIGRlb3B0cyBpbiBvbGQgdjgKICBpZiAodHlwZSA9PT0gQ09ERVMpIHsKICAgIGJhc2UgPSBleHRyYSA9IHdvcms7ICAgIC8qIGR1bW15IHZhbHVlLS1ub3QgdXNlZCAqLwogICAgZW5kID0gMTk7CgogIH0gZWxzZSBpZiAodHlwZSA9PT0gTEVOUykgewogICAgYmFzZSA9IGxiYXNlOwogICAgYmFzZV9pbmRleCAtPSAyNTc7CiAgICBleHRyYSA9IGxleHQ7CiAgICBleHRyYV9pbmRleCAtPSAyNTc7CiAgICBlbmQgPSAyNTY7CgogIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAvKiBESVNUUyAqLwogICAgYmFzZSA9IGRiYXNlOwogICAgZXh0cmEgPSBkZXh0OwogICAgZW5kID0gLTE7CiAgfQoKICAvKiBpbml0aWFsaXplIG9wdHMgZm9yIGxvb3AgKi8KICBodWZmID0gMDsgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgY29kZSAqLwogIHN5bSA9IDA7ICAgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIHN5bWJvbCAqLwogIGxlbiA9IG1pbjsgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIGxlbmd0aCAqLwogIG5leHQgPSB0YWJsZV9pbmRleDsgICAgICAgICAgICAgIC8qIGN1cnJlbnQgdGFibGUgdG8gZmlsbCBpbiAqLwogIGN1cnIgPSByb290OyAgICAgICAgICAgICAgICAvKiBjdXJyZW50IHRhYmxlIGluZGV4IGJpdHMgKi8KICBkcm9wID0gMDsgICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBiaXRzIHRvIGRyb3AgZnJvbSBjb2RlIGZvciBpbmRleCAqLwogIGxvdyA9IC0xOyAgICAgICAgICAgICAgICAgICAvKiB0cmlnZ2VyIG5ldyBzdWItdGFibGUgd2hlbiBsZW4gPiByb290ICovCiAgdXNlZCA9IDEgPDwgcm9vdDsgICAgICAgICAgLyogdXNlIHJvb3QgdGFibGUgZW50cmllcyAqLwogIG1hc2sgPSB1c2VkIC0gMTsgICAgICAgICAgICAvKiBtYXNrIGZvciBjb21wYXJpbmcgbG93ICovCgogIC8qIGNoZWNrIGF2YWlsYWJsZSB0YWJsZSBzcGFjZSAqLwogIGlmICgodHlwZSA9PT0gTEVOUyAmJiB1c2VkID4gRU5PVUdIX0xFTlMpIHx8CiAgICAodHlwZSA9PT0gRElTVFMgJiYgdXNlZCA+IEVOT1VHSF9ESVNUUykpIHsKICAgIHJldHVybiAxOwogIH0KCiAgLyogcHJvY2VzcyBhbGwgY29kZXMgYW5kIG1ha2UgdGFibGUgZW50cmllcyAqLwogIGZvciAoOzspIHsKICAgIC8qIGNyZWF0ZSB0YWJsZSBlbnRyeSAqLwogICAgaGVyZV9iaXRzID0gbGVuIC0gZHJvcDsKICAgIGlmICh3b3JrW3N5bV0gPCBlbmQpIHsKICAgICAgaGVyZV9vcCA9IDA7CiAgICAgIGhlcmVfdmFsID0gd29ya1tzeW1dOwogICAgfQogICAgZWxzZSBpZiAod29ya1tzeW1dID4gZW5kKSB7CiAgICAgIGhlcmVfb3AgPSBleHRyYVtleHRyYV9pbmRleCArIHdvcmtbc3ltXV07CiAgICAgIGhlcmVfdmFsID0gYmFzZVtiYXNlX2luZGV4ICsgd29ya1tzeW1dXTsKICAgIH0KICAgIGVsc2UgewogICAgICBoZXJlX29wID0gMzIgKyA2NDsgICAgICAgICAvKiBlbmQgb2YgYmxvY2sgKi8KICAgICAgaGVyZV92YWwgPSAwOwogICAgfQoKICAgIC8qIHJlcGxpY2F0ZSBmb3IgdGhvc2UgaW5kaWNlcyB3aXRoIGxvdyBsZW4gYml0cyBlcXVhbCB0byBodWZmICovCiAgICBpbmNyID0gMSA8PCAobGVuIC0gZHJvcCk7CiAgICBmaWxsID0gMSA8PCBjdXJyOwogICAgbWluID0gZmlsbDsgICAgICAgICAgICAgICAgIC8qIHNhdmUgb2Zmc2V0IHRvIG5leHQgdGFibGUgKi8KICAgIGRvIHsKICAgICAgZmlsbCAtPSBpbmNyOwogICAgICB0YWJsZVtuZXh0ICsgKGh1ZmYgPj4gZHJvcCkgKyBmaWxsXSA9IChoZXJlX2JpdHMgPDwgMjQpIHwgKGhlcmVfb3AgPDwgMTYpIHwgaGVyZV92YWwgfDA7CiAgICB9IHdoaWxlIChmaWxsICE9PSAwKTsKCiAgICAvKiBiYWNrd2FyZHMgaW5jcmVtZW50IHRoZSBsZW4tYml0IGNvZGUgaHVmZiAqLwogICAgaW5jciA9IDEgPDwgKGxlbiAtIDEpOwogICAgd2hpbGUgKGh1ZmYgJiBpbmNyKSB7CiAgICAgIGluY3IgPj49IDE7CiAgICB9CiAgICBpZiAoaW5jciAhPT0gMCkgewogICAgICBodWZmICY9IGluY3IgLSAxOwogICAgICBodWZmICs9IGluY3I7CiAgICB9IGVsc2UgewogICAgICBodWZmID0gMDsKICAgIH0KCiAgICAvKiBnbyB0byBuZXh0IHN5bWJvbCwgdXBkYXRlIGNvdW50LCBsZW4gKi8KICAgIHN5bSsrOwogICAgaWYgKC0tY291bnRbbGVuXSA9PT0gMCkgewogICAgICBpZiAobGVuID09PSBtYXgpIHsgYnJlYWs7IH0KICAgICAgbGVuID0gbGVuc1tsZW5zX2luZGV4ICsgd29ya1tzeW1dXTsKICAgIH0KCiAgICAvKiBjcmVhdGUgbmV3IHN1Yi10YWJsZSBpZiBuZWVkZWQgKi8KICAgIGlmIChsZW4gPiByb290ICYmIChodWZmICYgbWFzaykgIT09IGxvdykgewogICAgICAvKiBpZiBmaXJzdCB0aW1lLCB0cmFuc2l0aW9uIHRvIHN1Yi10YWJsZXMgKi8KICAgICAgaWYgKGRyb3AgPT09IDApIHsKICAgICAgICBkcm9wID0gcm9vdDsKICAgICAgfQoKICAgICAgLyogaW5jcmVtZW50IHBhc3QgbGFzdCB0YWJsZSAqLwogICAgICBuZXh0ICs9IG1pbjsgICAgICAgICAgICAvKiBoZXJlIG1pbiBpcyAxIDw8IGN1cnIgKi8KCiAgICAgIC8qIGRldGVybWluZSBsZW5ndGggb2YgbmV4dCB0YWJsZSAqLwogICAgICBjdXJyID0gbGVuIC0gZHJvcDsKICAgICAgbGVmdCA9IDEgPDwgY3VycjsKICAgICAgd2hpbGUgKGN1cnIgKyBkcm9wIDwgbWF4KSB7CiAgICAgICAgbGVmdCAtPSBjb3VudFtjdXJyICsgZHJvcF07CiAgICAgICAgaWYgKGxlZnQgPD0gMCkgeyBicmVhazsgfQogICAgICAgIGN1cnIrKzsKICAgICAgICBsZWZ0IDw8PSAxOwogICAgICB9CgogICAgICAvKiBjaGVjayBmb3IgZW5vdWdoIHNwYWNlICovCiAgICAgIHVzZWQgKz0gMSA8PCBjdXJyOwogICAgICBpZiAoKHR5cGUgPT09IExFTlMgJiYgdXNlZCA+IEVOT1VHSF9MRU5TKSB8fAogICAgICAgICh0eXBlID09PSBESVNUUyAmJiB1c2VkID4gRU5PVUdIX0RJU1RTKSkgewogICAgICAgIHJldHVybiAxOwogICAgICB9CgogICAgICAvKiBwb2ludCBlbnRyeSBpbiByb290IHRhYmxlIHRvIHN1Yi10YWJsZSAqLwogICAgICBsb3cgPSBodWZmICYgbWFzazsKICAgICAgLyp0YWJsZS5vcFtsb3ddID0gY3VycjsKICAgICAgdGFibGUuYml0c1tsb3ddID0gcm9vdDsKICAgICAgdGFibGUudmFsW2xvd10gPSBuZXh0IC0gb3B0cy50YWJsZV9pbmRleDsqLwogICAgICB0YWJsZVtsb3ddID0gKHJvb3QgPDwgMjQpIHwgKGN1cnIgPDwgMTYpIHwgKG5leHQgLSB0YWJsZV9pbmRleCkgfDA7CiAgICB9CiAgfQoKICAvKiBmaWxsIGluIHJlbWFpbmluZyB0YWJsZSBlbnRyeSBpZiBjb2RlIGlzIGluY29tcGxldGUgKGd1YXJhbnRlZWQgdG8gaGF2ZQogICBhdCBtb3N0IG9uZSByZW1haW5pbmcgZW50cnksIHNpbmNlIGlmIHRoZSBjb2RlIGlzIGluY29tcGxldGUsIHRoZQogICBtYXhpbXVtIGNvZGUgbGVuZ3RoIHRoYXQgd2FzIGFsbG93ZWQgdG8gZ2V0IHRoaXMgZmFyIGlzIG9uZSBiaXQpICovCiAgaWYgKGh1ZmYgIT09IDApIHsKICAgIC8vdGFibGUub3BbbmV4dCArIGh1ZmZdID0gNjQ7ICAgICAgICAgICAgLyogaW52YWxpZCBjb2RlIG1hcmtlciAqLwogICAgLy90YWJsZS5iaXRzW25leHQgKyBodWZmXSA9IGxlbiAtIGRyb3A7CiAgICAvL3RhYmxlLnZhbFtuZXh0ICsgaHVmZl0gPSAwOwogICAgdGFibGVbbmV4dCArIGh1ZmZdID0gKChsZW4gLSBkcm9wKSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwwOwogIH0KCiAgLyogc2V0IHJldHVybiBwYXJhbWV0ZXJzICovCiAgLy9vcHRzLnRhYmxlX2luZGV4ICs9IHVzZWQ7CiAgb3B0cy5iaXRzID0gcm9vdDsKICByZXR1cm4gMDsKfTsKCgovKioqLyB9KSwKLyogMTYwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW4KLy8KLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuCi8vCi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAovLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczoKLy8KLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZQovLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQovLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLgovLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgoKbW9kdWxlLmV4cG9ydHMgPSB7CgogIC8qIEFsbG93ZWQgZmx1c2ggdmFsdWVzOyBzZWUgZGVmbGF0ZSgpIGFuZCBpbmZsYXRlKCkgYmVsb3cgZm9yIGRldGFpbHMgKi8KICBaX05PX0ZMVVNIOiAgICAgICAgIDAsCiAgWl9QQVJUSUFMX0ZMVVNIOiAgICAxLAogIFpfU1lOQ19GTFVTSDogICAgICAgMiwKICBaX0ZVTExfRkxVU0g6ICAgICAgIDMsCiAgWl9GSU5JU0g6ICAgICAgICAgICA0LAogIFpfQkxPQ0s6ICAgICAgICAgICAgNSwKICBaX1RSRUVTOiAgICAgICAgICAgIDYsCgogIC8qIFJldHVybiBjb2RlcyBmb3IgdGhlIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gZnVuY3Rpb25zLiBOZWdhdGl2ZSB2YWx1ZXMKICAqIGFyZSBlcnJvcnMsIHBvc2l0aXZlIHZhbHVlcyBhcmUgdXNlZCBmb3Igc3BlY2lhbCBidXQgbm9ybWFsIGV2ZW50cy4KICAqLwogIFpfT0s6ICAgICAgICAgICAgICAgMCwKICBaX1NUUkVBTV9FTkQ6ICAgICAgIDEsCiAgWl9ORUVEX0RJQ1Q6ICAgICAgICAyLAogIFpfRVJSTk86ICAgICAgICAgICAtMSwKICBaX1NUUkVBTV9FUlJPUjogICAgLTIsCiAgWl9EQVRBX0VSUk9SOiAgICAgIC0zLAogIC8vWl9NRU1fRVJST1I6ICAgICAtNCwKICBaX0JVRl9FUlJPUjogICAgICAgLTUsCiAgLy9aX1ZFUlNJT05fRVJST1I6IC02LAoKICAvKiBjb21wcmVzc2lvbiBsZXZlbHMgKi8KICBaX05PX0NPTVBSRVNTSU9OOiAgICAgICAgIDAsCiAgWl9CRVNUX1NQRUVEOiAgICAgICAgICAgICAxLAogIFpfQkVTVF9DT01QUkVTU0lPTjogICAgICAgOSwKICBaX0RFRkFVTFRfQ09NUFJFU1NJT046ICAgLTEsCgoKICBaX0ZJTFRFUkVEOiAgICAgICAgICAgICAgIDEsCiAgWl9IVUZGTUFOX09OTFk6ICAgICAgICAgICAyLAogIFpfUkxFOiAgICAgICAgICAgICAgICAgICAgMywKICBaX0ZJWEVEOiAgICAgICAgICAgICAgICAgIDQsCiAgWl9ERUZBVUxUX1NUUkFURUdZOiAgICAgICAwLAoKICAvKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovCiAgWl9CSU5BUlk6ICAgICAgICAgICAgICAgICAwLAogIFpfVEVYVDogICAgICAgICAgICAgICAgICAgMSwKICAvL1pfQVNDSUk6ICAgICAgICAgICAgICAgIDEsIC8vID0gWl9URVhUIChkZXByZWNhdGVkKQogIFpfVU5LTk9XTjogICAgICAgICAgICAgICAgMiwKCiAgLyogVGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbWV0aG9kICovCiAgWl9ERUZMQVRFRDogICAgICAgICAgICAgICA4CiAgLy9aX05VTEw6ICAgICAgICAgICAgICAgICBudWxsIC8vIFVzZSAtMSBvciBudWxsIGlubGluZSwgZGVwZW5kaW5nIG9uIHZhciB0eXBlCn07CgoKLyoqKi8gfSksCi8qIDE2MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgoKLyoKUERGUGFnZSAtIHJlcHJlc2VudHMgYSBzaW5nbGUgcGFnZSBpbiB0aGUgUERGIGRvY3VtZW50CkJ5IERldm9uIEdvdmV0dAogKi8KCihmdW5jdGlvbigpIHsKICB2YXIgUERGUGFnZTsKCiAgUERGUGFnZSA9IChmdW5jdGlvbigpIHsKICAgIHZhciBERUZBVUxUX01BUkdJTlMsIFNJWkVTOwoKICAgIGZ1bmN0aW9uIFBERlBhZ2UoZG9jdW1lbnQsIG9wdGlvbnMpIHsKICAgICAgdmFyIGRpbWVuc2lvbnM7CiAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICB0aGlzLnNpemUgPSBvcHRpb25zLnNpemUgfHwgJ2xldHRlcic7CiAgICAgIHRoaXMubGF5b3V0ID0gb3B0aW9ucy5sYXlvdXQgfHwgJ3BvcnRyYWl0JzsKICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLm1hcmdpbiA9PT0gJ251bWJlcicpIHsKICAgICAgICB0aGlzLm1hcmdpbnMgPSB7CiAgICAgICAgICB0b3A6IG9wdGlvbnMubWFyZ2luLAogICAgICAgICAgbGVmdDogb3B0aW9ucy5tYXJnaW4sCiAgICAgICAgICBib3R0b206IG9wdGlvbnMubWFyZ2luLAogICAgICAgICAgcmlnaHQ6IG9wdGlvbnMubWFyZ2luCiAgICAgICAgfTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLm1hcmdpbnMgPSBvcHRpb25zLm1hcmdpbnMgfHwgREVGQVVMVF9NQVJHSU5TOwogICAgICB9CiAgICAgIGRpbWVuc2lvbnMgPSBBcnJheS5pc0FycmF5KHRoaXMuc2l6ZSkgPyB0aGlzLnNpemUgOiBTSVpFU1t0aGlzLnNpemUudG9VcHBlckNhc2UoKV07CiAgICAgIHRoaXMud2lkdGggPSBkaW1lbnNpb25zW3RoaXMubGF5b3V0ID09PSAncG9ydHJhaXQnID8gMCA6IDFdOwogICAgICB0aGlzLmhlaWdodCA9IGRpbWVuc2lvbnNbdGhpcy5sYXlvdXQgPT09ICdwb3J0cmFpdCcgPyAxIDogMF07CiAgICAgIHRoaXMuY29udGVudCA9IHRoaXMuZG9jdW1lbnQucmVmKCk7CiAgICAgIHRoaXMucmVzb3VyY2VzID0gdGhpcy5kb2N1bWVudC5yZWYoewogICAgICAgIFByb2NTZXQ6IFsnUERGJywgJ1RleHQnLCAnSW1hZ2VCJywgJ0ltYWdlQycsICdJbWFnZUknXQogICAgICB9KTsKICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcywgewogICAgICAgIGZvbnRzOiB7CiAgICAgICAgICBnZXQ6IChmdW5jdGlvbihfdGhpcykgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFyIGJhc2U7CiAgICAgICAgICAgICAgcmV0dXJuIChiYXNlID0gX3RoaXMucmVzb3VyY2VzLmRhdGEpLkZvbnQgIT0gbnVsbCA/IGJhc2UuRm9udCA6IGJhc2UuRm9udCA9IHt9OwogICAgICAgICAgICB9OwogICAgICAgICAgfSkodGhpcykKICAgICAgICB9LAogICAgICAgIHhvYmplY3RzOiB7CiAgICAgICAgICBnZXQ6IChmdW5jdGlvbihfdGhpcykgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFyIGJhc2U7CiAgICAgICAgICAgICAgcmV0dXJuIChiYXNlID0gX3RoaXMucmVzb3VyY2VzLmRhdGEpLlhPYmplY3QgIT0gbnVsbCA/IGJhc2UuWE9iamVjdCA6IGJhc2UuWE9iamVjdCA9IHt9OwogICAgICAgICAgICB9OwogICAgICAgICAgfSkodGhpcykKICAgICAgICB9LAogICAgICAgIGV4dF9nc3RhdGVzOiB7CiAgICAgICAgICBnZXQ6IChmdW5jdGlvbihfdGhpcykgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFyIGJhc2U7CiAgICAgICAgICAgICAgcmV0dXJuIChiYXNlID0gX3RoaXMucmVzb3VyY2VzLmRhdGEpLkV4dEdTdGF0ZSAhPSBudWxsID8gYmFzZS5FeHRHU3RhdGUgOiBiYXNlLkV4dEdTdGF0ZSA9IHt9OwogICAgICAgICAgICB9OwogICAgICAgICAgfSkodGhpcykKICAgICAgICB9LAogICAgICAgIHBhdHRlcm5zOiB7CiAgICAgICAgICBnZXQ6IChmdW5jdGlvbihfdGhpcykgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFyIGJhc2U7CiAgICAgICAgICAgICAgcmV0dXJuIChiYXNlID0gX3RoaXMucmVzb3VyY2VzLmRhdGEpLlBhdHRlcm4gIT0gbnVsbCA/IGJhc2UuUGF0dGVybiA6IGJhc2UuUGF0dGVybiA9IHt9OwogICAgICAgICAgICB9OwogICAgICAgICAgfSkodGhpcykKICAgICAgICB9LAogICAgICAgIGFubm90YXRpb25zOiB7CiAgICAgICAgICBnZXQ6IChmdW5jdGlvbihfdGhpcykgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFyIGJhc2U7CiAgICAgICAgICAgICAgcmV0dXJuIChiYXNlID0gX3RoaXMuZGljdGlvbmFyeS5kYXRhKS5Bbm5vdHMgIT0gbnVsbCA/IGJhc2UuQW5ub3RzIDogYmFzZS5Bbm5vdHMgPSBbXTsKICAgICAgICAgICAgfTsKICAgICAgICAgIH0pKHRoaXMpCiAgICAgICAgfQogICAgICB9KTsKICAgICAgdGhpcy5kaWN0aW9uYXJ5ID0gdGhpcy5kb2N1bWVudC5yZWYoewogICAgICAgIFR5cGU6ICdQYWdlJywKICAgICAgICBQYXJlbnQ6IHRoaXMuZG9jdW1lbnQuX3Jvb3QuZGF0YS5QYWdlcywKICAgICAgICBNZWRpYUJveDogWzAsIDAsIHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0XSwKICAgICAgICBDb250ZW50czogdGhpcy5jb250ZW50LAogICAgICAgIFJlc291cmNlczogdGhpcy5yZXNvdXJjZXMKICAgICAgfSk7CiAgICB9CgogICAgUERGUGFnZS5wcm90b3R5cGUubWF4WSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5oZWlnaHQgLSB0aGlzLm1hcmdpbnMuYm90dG9tOwogICAgfTsKCiAgICBQREZQYWdlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGNodW5rKSB7CiAgICAgIHJldHVybiB0aGlzLmNvbnRlbnQud3JpdGUoY2h1bmspOwogICAgfTsKCiAgICBQREZQYWdlLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5kaWN0aW9uYXJ5LmVuZCgpOwogICAgICB0aGlzLnJlc291cmNlcy5lbmQoKTsKICAgICAgcmV0dXJuIHRoaXMuY29udGVudC5lbmQoKTsKICAgIH07CgogICAgREVGQVVMVF9NQVJHSU5TID0gewogICAgICB0b3A6IDcyLAogICAgICBsZWZ0OiA3MiwKICAgICAgYm90dG9tOiA3MiwKICAgICAgcmlnaHQ6IDcyCiAgICB9OwoKICAgIFNJWkVTID0gewogICAgICAnNEEwJzogWzQ3NjcuODcsIDY3NDAuNzldLAogICAgICAnMkEwJzogWzMzNzAuMzksIDQ3NjcuODddLAogICAgICBBMDogWzIzODMuOTQsIDMzNzAuMzldLAogICAgICBBMTogWzE2ODMuNzgsIDIzODMuOTRdLAogICAgICBBMjogWzExOTAuNTUsIDE2ODMuNzhdLAogICAgICBBMzogWzg0MS44OSwgMTE5MC41NV0sCiAgICAgIEE0OiBbNTk1LjI4LCA4NDEuODldLAogICAgICBBNTogWzQxOS41MywgNTk1LjI4XSwKICAgICAgQTY6IFsyOTcuNjQsIDQxOS41M10sCiAgICAgIEE3OiBbMjA5Ljc2LCAyOTcuNjRdLAogICAgICBBODogWzE0Ny40MCwgMjA5Ljc2XSwKICAgICAgQTk6IFsxMDQuODgsIDE0Ny40MF0sCiAgICAgIEExMDogWzczLjcwLCAxMDQuODhdLAogICAgICBCMDogWzI4MzQuNjUsIDQwMDguMTldLAogICAgICBCMTogWzIwMDQuMDksIDI4MzQuNjVdLAogICAgICBCMjogWzE0MTcuMzIsIDIwMDQuMDldLAogICAgICBCMzogWzEwMDAuNjMsIDE0MTcuMzJdLAogICAgICBCNDogWzcwOC42NiwgMTAwMC42M10sCiAgICAgIEI1OiBbNDk4LjkwLCA3MDguNjZdLAogICAgICBCNjogWzM1NC4zMywgNDk4LjkwXSwKICAgICAgQjc6IFsyNDkuNDUsIDM1NC4zM10sCiAgICAgIEI4OiBbMTc1Ljc1LCAyNDkuNDVdLAogICAgICBCOTogWzEyNC43MiwgMTc1Ljc1XSwKICAgICAgQjEwOiBbODcuODcsIDEyNC43Ml0sCiAgICAgIEMwOiBbMjU5OS4zNywgMzY3Ni41NF0sCiAgICAgIEMxOiBbMTgzNi44NSwgMjU5OS4zN10sCiAgICAgIEMyOiBbMTI5OC4yNywgMTgzNi44NV0sCiAgICAgIEMzOiBbOTE4LjQzLCAxMjk4LjI3XSwKICAgICAgQzQ6IFs2NDkuMTMsIDkxOC40M10sCiAgICAgIEM1OiBbNDU5LjIxLCA2NDkuMTNdLAogICAgICBDNjogWzMyMy4xNSwgNDU5LjIxXSwKICAgICAgQzc6IFsyMjkuNjEsIDMyMy4xNV0sCiAgICAgIEM4OiBbMTYxLjU3LCAyMjkuNjFdLAogICAgICBDOTogWzExMy4zOSwgMTYxLjU3XSwKICAgICAgQzEwOiBbNzkuMzcsIDExMy4zOV0sCiAgICAgIFJBMDogWzI0MzcuODAsIDM0NTguMjddLAogICAgICBSQTE6IFsxNzI5LjEzLCAyNDM3LjgwXSwKICAgICAgUkEyOiBbMTIxOC45MCwgMTcyOS4xM10sCiAgICAgIFJBMzogWzg2NC41NywgMTIxOC45MF0sCiAgICAgIFJBNDogWzYwOS40NSwgODY0LjU3XSwKICAgICAgU1JBMDogWzI1NTEuMTgsIDM2MjguMzVdLAogICAgICBTUkExOiBbMTgxNC4xNywgMjU1MS4xOF0sCiAgICAgIFNSQTI6IFsxMjc1LjU5LCAxODE0LjE3XSwKICAgICAgU1JBMzogWzkwNy4wOSwgMTI3NS41OV0sCiAgICAgIFNSQTQ6IFs2MzcuODAsIDkwNy4wOV0sCiAgICAgIEVYRUNVVElWRTogWzUyMS44NiwgNzU2LjAwXSwKICAgICAgRk9MSU86IFs2MTIuMDAsIDkzNi4wMF0sCiAgICAgIExFR0FMOiBbNjEyLjAwLCAxMDA4LjAwXSwKICAgICAgTEVUVEVSOiBbNjEyLjAwLCA3OTIuMDBdLAogICAgICBUQUJMT0lEOiBbNzkyLjAwLCAxMjI0LjAwXQogICAgfTsKCiAgICByZXR1cm4gUERGUGFnZTsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBQREZQYWdlOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTYyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgUERGR3JhZGllbnQsIFBERkxpbmVhckdyYWRpZW50LCBQREZSYWRpYWxHcmFkaWVudCwgbmFtZWRDb2xvcnMsIHJlZjsKCiAgcmVmID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjMpLCBQREZHcmFkaWVudCA9IHJlZi5QREZHcmFkaWVudCwgUERGTGluZWFyR3JhZGllbnQgPSByZWYuUERGTGluZWFyR3JhZGllbnQsIFBERlJhZGlhbEdyYWRpZW50ID0gcmVmLlBERlJhZGlhbEdyYWRpZW50OwoKICBtb2R1bGUuZXhwb3J0cyA9IHsKICAgIGluaXRDb2xvcjogZnVuY3Rpb24oKSB7CiAgICAgIHRoaXMuX29wYWNpdHlSZWdpc3RyeSA9IHt9OwogICAgICB0aGlzLl9vcGFjaXR5Q291bnQgPSAwOwogICAgICByZXR1cm4gdGhpcy5fZ3JhZENvdW50ID0gMDsKICAgIH0sCiAgICBfbm9ybWFsaXplQ29sb3I6IGZ1bmN0aW9uKGNvbG9yKSB7CiAgICAgIHZhciBoZXgsIHBhcnQ7CiAgICAgIGlmIChjb2xvciBpbnN0YW5jZW9mIFBERkdyYWRpZW50KSB7CiAgICAgICAgcmV0dXJuIGNvbG9yOwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgY29sb3IgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgaWYgKGNvbG9yLmNoYXJBdCgwKSA9PT0gJyMnKSB7CiAgICAgICAgICBpZiAoY29sb3IubGVuZ3RoID09PSA0KSB7CiAgICAgICAgICAgIGNvbG9yID0gY29sb3IucmVwbGFjZSgvIyhbMC05QS1GXSkoWzAtOUEtRl0pKFswLTlBLUZdKS9pLCAiIyQxJDEkMiQyJDMkMyIpOwogICAgICAgICAgfQogICAgICAgICAgaGV4ID0gcGFyc2VJbnQoY29sb3Iuc2xpY2UoMSksIDE2KTsKICAgICAgICAgIGNvbG9yID0gW2hleCA+PiAxNiwgaGV4ID4+IDggJiAweGZmLCBoZXggJiAweGZmXTsKICAgICAgICB9IGVsc2UgaWYgKG5hbWVkQ29sb3JzW2NvbG9yXSkgewogICAgICAgICAgY29sb3IgPSBuYW1lZENvbG9yc1tjb2xvcl07CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbG9yKSkgewogICAgICAgIGlmIChjb2xvci5sZW5ndGggPT09IDMpIHsKICAgICAgICAgIGNvbG9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgaSwgbGVuLCByZXN1bHRzOwogICAgICAgICAgICByZXN1bHRzID0gW107CiAgICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGNvbG9yLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgICAgcGFydCA9IGNvbG9yW2ldOwogICAgICAgICAgICAgIHJlc3VsdHMucHVzaChwYXJ0IC8gMjU1KTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICAgIH0pKCk7CiAgICAgICAgfSBlbHNlIGlmIChjb2xvci5sZW5ndGggPT09IDQpIHsKICAgICAgICAgIGNvbG9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICB2YXIgaSwgbGVuLCByZXN1bHRzOwogICAgICAgICAgICByZXN1bHRzID0gW107CiAgICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGNvbG9yLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgICAgcGFydCA9IGNvbG9yW2ldOwogICAgICAgICAgICAgIHJlc3VsdHMucHVzaChwYXJ0IC8gMTAwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgICAgIH0pKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjb2xvcjsKICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0sCiAgICBfc2V0Q29sb3I6IGZ1bmN0aW9uKGNvbG9yLCBzdHJva2UpIHsKICAgICAgdmFyIG9wLCBzcGFjZTsKICAgICAgY29sb3IgPSB0aGlzLl9ub3JtYWxpemVDb2xvcihjb2xvcik7CiAgICAgIGlmICghY29sb3IpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgb3AgPSBzdHJva2UgPyAnU0NOJyA6ICdzY24nOwogICAgICBpZiAoY29sb3IgaW5zdGFuY2VvZiBQREZHcmFkaWVudCkgewogICAgICAgIHRoaXMuX3NldENvbG9yU3BhY2UoJ1BhdHRlcm4nLCBzdHJva2UpOwogICAgICAgIGNvbG9yLmFwcGx5KG9wKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBzcGFjZSA9IGNvbG9yLmxlbmd0aCA9PT0gNCA/ICdEZXZpY2VDTVlLJyA6ICdEZXZpY2VSR0InOwogICAgICAgIHRoaXMuX3NldENvbG9yU3BhY2Uoc3BhY2UsIHN0cm9rZSk7CiAgICAgICAgY29sb3IgPSBjb2xvci5qb2luKCcgJyk7CiAgICAgICAgdGhpcy5hZGRDb250ZW50KGNvbG9yICsgIiAiICsgb3ApOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfSwKICAgIF9zZXRDb2xvclNwYWNlOiBmdW5jdGlvbihzcGFjZSwgc3Ryb2tlKSB7CiAgICAgIHZhciBvcDsKICAgICAgb3AgPSBzdHJva2UgPyAnQ1MnIDogJ2NzJzsKICAgICAgcmV0dXJuIHRoaXMuYWRkQ29udGVudCgiLyIgKyBzcGFjZSArICIgIiArIG9wKTsKICAgIH0sCiAgICBmaWxsQ29sb3I6IGZ1bmN0aW9uKGNvbG9yLCBvcGFjaXR5KSB7CiAgICAgIHZhciBzZXQ7CiAgICAgIHNldCA9IHRoaXMuX3NldENvbG9yKGNvbG9yLCBmYWxzZSk7CiAgICAgIGlmIChzZXQpIHsKICAgICAgICB0aGlzLmZpbGxPcGFjaXR5KG9wYWNpdHkpOwogICAgICB9CiAgICAgIHRoaXMuX2ZpbGxDb2xvciA9IFtjb2xvciwgb3BhY2l0eV07CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIHN0cm9rZUNvbG9yOiBmdW5jdGlvbihjb2xvciwgb3BhY2l0eSkgewogICAgICB2YXIgc2V0OwogICAgICBzZXQgPSB0aGlzLl9zZXRDb2xvcihjb2xvciwgdHJ1ZSk7CiAgICAgIGlmIChzZXQpIHsKICAgICAgICB0aGlzLnN0cm9rZU9wYWNpdHkob3BhY2l0eSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXM7CiAgICB9LAogICAgb3BhY2l0eTogZnVuY3Rpb24ob3BhY2l0eSkgewogICAgICB0aGlzLl9kb09wYWNpdHkob3BhY2l0eSwgb3BhY2l0eSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIGZpbGxPcGFjaXR5OiBmdW5jdGlvbihvcGFjaXR5KSB7CiAgICAgIHRoaXMuX2RvT3BhY2l0eShvcGFjaXR5LCBudWxsKTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9LAogICAgc3Ryb2tlT3BhY2l0eTogZnVuY3Rpb24ob3BhY2l0eSkgewogICAgICB0aGlzLl9kb09wYWNpdHkobnVsbCwgb3BhY2l0eSk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIF9kb09wYWNpdHk6IGZ1bmN0aW9uKGZpbGxPcGFjaXR5LCBzdHJva2VPcGFjaXR5KSB7CiAgICAgIHZhciBkaWN0aW9uYXJ5LCBpZCwga2V5LCBuYW1lLCByZWYxOwogICAgICBpZiAoISgoZmlsbE9wYWNpdHkgIT0gbnVsbCkgfHwgKHN0cm9rZU9wYWNpdHkgIT0gbnVsbCkpKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmIChmaWxsT3BhY2l0eSAhPSBudWxsKSB7CiAgICAgICAgZmlsbE9wYWNpdHkgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxLCBmaWxsT3BhY2l0eSkpOwogICAgICB9CiAgICAgIGlmIChzdHJva2VPcGFjaXR5ICE9IG51bGwpIHsKICAgICAgICBzdHJva2VPcGFjaXR5ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4oMSwgc3Ryb2tlT3BhY2l0eSkpOwogICAgICB9CiAgICAgIGtleSA9IGZpbGxPcGFjaXR5ICsgIl8iICsgc3Ryb2tlT3BhY2l0eTsKICAgICAgaWYgKHRoaXMuX29wYWNpdHlSZWdpc3RyeVtrZXldKSB7CiAgICAgICAgcmVmMSA9IHRoaXMuX29wYWNpdHlSZWdpc3RyeVtrZXldLCBkaWN0aW9uYXJ5ID0gcmVmMVswXSwgbmFtZSA9IHJlZjFbMV07CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGljdGlvbmFyeSA9IHsKICAgICAgICAgIFR5cGU6ICdFeHRHU3RhdGUnCiAgICAgICAgfTsKICAgICAgICBpZiAoZmlsbE9wYWNpdHkgIT0gbnVsbCkgewogICAgICAgICAgZGljdGlvbmFyeS5jYSA9IGZpbGxPcGFjaXR5OwogICAgICAgIH0KICAgICAgICBpZiAoc3Ryb2tlT3BhY2l0eSAhPSBudWxsKSB7CiAgICAgICAgICBkaWN0aW9uYXJ5LkNBID0gc3Ryb2tlT3BhY2l0eTsKICAgICAgICB9CiAgICAgICAgZGljdGlvbmFyeSA9IHRoaXMucmVmKGRpY3Rpb25hcnkpOwogICAgICAgIGRpY3Rpb25hcnkuZW5kKCk7CiAgICAgICAgaWQgPSArK3RoaXMuX29wYWNpdHlDb3VudDsKICAgICAgICBuYW1lID0gIkdzIiArIGlkOwogICAgICAgIHRoaXMuX29wYWNpdHlSZWdpc3RyeVtrZXldID0gW2RpY3Rpb25hcnksIG5hbWVdOwogICAgICB9CiAgICAgIHRoaXMucGFnZS5leHRfZ3N0YXRlc1tuYW1lXSA9IGRpY3Rpb25hcnk7CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoIi8iICsgbmFtZSArICIgZ3MiKTsKICAgIH0sCiAgICBsaW5lYXJHcmFkaWVudDogZnVuY3Rpb24oeDEsIHkxLCB4MiwgeTIpIHsKICAgICAgcmV0dXJuIG5ldyBQREZMaW5lYXJHcmFkaWVudCh0aGlzLCB4MSwgeTEsIHgyLCB5Mik7CiAgICB9LAogICAgcmFkaWFsR3JhZGllbnQ6IGZ1bmN0aW9uKHgxLCB5MSwgcjEsIHgyLCB5MiwgcjIpIHsKICAgICAgcmV0dXJuIG5ldyBQREZSYWRpYWxHcmFkaWVudCh0aGlzLCB4MSwgeTEsIHIxLCB4MiwgeTIsIHIyKTsKICAgIH0KICB9OwoKICBuYW1lZENvbG9ycyA9IHsKICAgIGFsaWNlYmx1ZTogWzI0MCwgMjQ4LCAyNTVdLAogICAgYW50aXF1ZXdoaXRlOiBbMjUwLCAyMzUsIDIxNV0sCiAgICBhcXVhOiBbMCwgMjU1LCAyNTVdLAogICAgYXF1YW1hcmluZTogWzEyNywgMjU1LCAyMTJdLAogICAgYXp1cmU6IFsyNDAsIDI1NSwgMjU1XSwKICAgIGJlaWdlOiBbMjQ1LCAyNDUsIDIyMF0sCiAgICBiaXNxdWU6IFsyNTUsIDIyOCwgMTk2XSwKICAgIGJsYWNrOiBbMCwgMCwgMF0sCiAgICBibGFuY2hlZGFsbW9uZDogWzI1NSwgMjM1LCAyMDVdLAogICAgYmx1ZTogWzAsIDAsIDI1NV0sCiAgICBibHVldmlvbGV0OiBbMTM4LCA0MywgMjI2XSwKICAgIGJyb3duOiBbMTY1LCA0MiwgNDJdLAogICAgYnVybHl3b29kOiBbMjIyLCAxODQsIDEzNV0sCiAgICBjYWRldGJsdWU6IFs5NSwgMTU4LCAxNjBdLAogICAgY2hhcnRyZXVzZTogWzEyNywgMjU1LCAwXSwKICAgIGNob2NvbGF0ZTogWzIxMCwgMTA1LCAzMF0sCiAgICBjb3JhbDogWzI1NSwgMTI3LCA4MF0sCiAgICBjb3JuZmxvd2VyYmx1ZTogWzEwMCwgMTQ5LCAyMzddLAogICAgY29ybnNpbGs6IFsyNTUsIDI0OCwgMjIwXSwKICAgIGNyaW1zb246IFsyMjAsIDIwLCA2MF0sCiAgICBjeWFuOiBbMCwgMjU1LCAyNTVdLAogICAgZGFya2JsdWU6IFswLCAwLCAxMzldLAogICAgZGFya2N5YW46IFswLCAxMzksIDEzOV0sCiAgICBkYXJrZ29sZGVucm9kOiBbMTg0LCAxMzQsIDExXSwKICAgIGRhcmtncmF5OiBbMTY5LCAxNjksIDE2OV0sCiAgICBkYXJrZ3JlZW46IFswLCAxMDAsIDBdLAogICAgZGFya2dyZXk6IFsxNjksIDE2OSwgMTY5XSwKICAgIGRhcmtraGFraTogWzE4OSwgMTgzLCAxMDddLAogICAgZGFya21hZ2VudGE6IFsxMzksIDAsIDEzOV0sCiAgICBkYXJrb2xpdmVncmVlbjogWzg1LCAxMDcsIDQ3XSwKICAgIGRhcmtvcmFuZ2U6IFsyNTUsIDE0MCwgMF0sCiAgICBkYXJrb3JjaGlkOiBbMTUzLCA1MCwgMjA0XSwKICAgIGRhcmtyZWQ6IFsxMzksIDAsIDBdLAogICAgZGFya3NhbG1vbjogWzIzMywgMTUwLCAxMjJdLAogICAgZGFya3NlYWdyZWVuOiBbMTQzLCAxODgsIDE0M10sCiAgICBkYXJrc2xhdGVibHVlOiBbNzIsIDYxLCAxMzldLAogICAgZGFya3NsYXRlZ3JheTogWzQ3LCA3OSwgNzldLAogICAgZGFya3NsYXRlZ3JleTogWzQ3LCA3OSwgNzldLAogICAgZGFya3R1cnF1b2lzZTogWzAsIDIwNiwgMjA5XSwKICAgIGRhcmt2aW9sZXQ6IFsxNDgsIDAsIDIxMV0sCiAgICBkZWVwcGluazogWzI1NSwgMjAsIDE0N10sCiAgICBkZWVwc2t5Ymx1ZTogWzAsIDE5MSwgMjU1XSwKICAgIGRpbWdyYXk6IFsxMDUsIDEwNSwgMTA1XSwKICAgIGRpbWdyZXk6IFsxMDUsIDEwNSwgMTA1XSwKICAgIGRvZGdlcmJsdWU6IFszMCwgMTQ0LCAyNTVdLAogICAgZmlyZWJyaWNrOiBbMTc4LCAzNCwgMzRdLAogICAgZmxvcmFsd2hpdGU6IFsyNTUsIDI1MCwgMjQwXSwKICAgIGZvcmVzdGdyZWVuOiBbMzQsIDEzOSwgMzRdLAogICAgZnVjaHNpYTogWzI1NSwgMCwgMjU1XSwKICAgIGdhaW5zYm9ybzogWzIyMCwgMjIwLCAyMjBdLAogICAgZ2hvc3R3aGl0ZTogWzI0OCwgMjQ4LCAyNTVdLAogICAgZ29sZDogWzI1NSwgMjE1LCAwXSwKICAgIGdvbGRlbnJvZDogWzIxOCwgMTY1LCAzMl0sCiAgICBncmF5OiBbMTI4LCAxMjgsIDEyOF0sCiAgICBncmV5OiBbMTI4LCAxMjgsIDEyOF0sCiAgICBncmVlbjogWzAsIDEyOCwgMF0sCiAgICBncmVlbnllbGxvdzogWzE3MywgMjU1LCA0N10sCiAgICBob25leWRldzogWzI0MCwgMjU1LCAyNDBdLAogICAgaG90cGluazogWzI1NSwgMTA1LCAxODBdLAogICAgaW5kaWFucmVkOiBbMjA1LCA5MiwgOTJdLAogICAgaW5kaWdvOiBbNzUsIDAsIDEzMF0sCiAgICBpdm9yeTogWzI1NSwgMjU1LCAyNDBdLAogICAga2hha2k6IFsyNDAsIDIzMCwgMTQwXSwKICAgIGxhdmVuZGVyOiBbMjMwLCAyMzAsIDI1MF0sCiAgICBsYXZlbmRlcmJsdXNoOiBbMjU1LCAyNDAsIDI0NV0sCiAgICBsYXduZ3JlZW46IFsxMjQsIDI1MiwgMF0sCiAgICBsZW1vbmNoaWZmb246IFsyNTUsIDI1MCwgMjA1XSwKICAgIGxpZ2h0Ymx1ZTogWzE3MywgMjE2LCAyMzBdLAogICAgbGlnaHRjb3JhbDogWzI0MCwgMTI4LCAxMjhdLAogICAgbGlnaHRjeWFuOiBbMjI0LCAyNTUsIDI1NV0sCiAgICBsaWdodGdvbGRlbnJvZHllbGxvdzogWzI1MCwgMjUwLCAyMTBdLAogICAgbGlnaHRncmF5OiBbMjExLCAyMTEsIDIxMV0sCiAgICBsaWdodGdyZWVuOiBbMTQ0LCAyMzgsIDE0NF0sCiAgICBsaWdodGdyZXk6IFsyMTEsIDIxMSwgMjExXSwKICAgIGxpZ2h0cGluazogWzI1NSwgMTgyLCAxOTNdLAogICAgbGlnaHRzYWxtb246IFsyNTUsIDE2MCwgMTIyXSwKICAgIGxpZ2h0c2VhZ3JlZW46IFszMiwgMTc4LCAxNzBdLAogICAgbGlnaHRza3libHVlOiBbMTM1LCAyMDYsIDI1MF0sCiAgICBsaWdodHNsYXRlZ3JheTogWzExOSwgMTM2LCAxNTNdLAogICAgbGlnaHRzbGF0ZWdyZXk6IFsxMTksIDEzNiwgMTUzXSwKICAgIGxpZ2h0c3RlZWxibHVlOiBbMTc2LCAxOTYsIDIyMl0sCiAgICBsaWdodHllbGxvdzogWzI1NSwgMjU1LCAyMjRdLAogICAgbGltZTogWzAsIDI1NSwgMF0sCiAgICBsaW1lZ3JlZW46IFs1MCwgMjA1LCA1MF0sCiAgICBsaW5lbjogWzI1MCwgMjQwLCAyMzBdLAogICAgbWFnZW50YTogWzI1NSwgMCwgMjU1XSwKICAgIG1hcm9vbjogWzEyOCwgMCwgMF0sCiAgICBtZWRpdW1hcXVhbWFyaW5lOiBbMTAyLCAyMDUsIDE3MF0sCiAgICBtZWRpdW1ibHVlOiBbMCwgMCwgMjA1XSwKICAgIG1lZGl1bW9yY2hpZDogWzE4NiwgODUsIDIxMV0sCiAgICBtZWRpdW1wdXJwbGU6IFsxNDcsIDExMiwgMjE5XSwKICAgIG1lZGl1bXNlYWdyZWVuOiBbNjAsIDE3OSwgMTEzXSwKICAgIG1lZGl1bXNsYXRlYmx1ZTogWzEyMywgMTA0LCAyMzhdLAogICAgbWVkaXVtc3ByaW5nZ3JlZW46IFswLCAyNTAsIDE1NF0sCiAgICBtZWRpdW10dXJxdW9pc2U6IFs3MiwgMjA5LCAyMDRdLAogICAgbWVkaXVtdmlvbGV0cmVkOiBbMTk5LCAyMSwgMTMzXSwKICAgIG1pZG5pZ2h0Ymx1ZTogWzI1LCAyNSwgMTEyXSwKICAgIG1pbnRjcmVhbTogWzI0NSwgMjU1LCAyNTBdLAogICAgbWlzdHlyb3NlOiBbMjU1LCAyMjgsIDIyNV0sCiAgICBtb2NjYXNpbjogWzI1NSwgMjI4LCAxODFdLAogICAgbmF2YWpvd2hpdGU6IFsyNTUsIDIyMiwgMTczXSwKICAgIG5hdnk6IFswLCAwLCAxMjhdLAogICAgb2xkbGFjZTogWzI1MywgMjQ1LCAyMzBdLAogICAgb2xpdmU6IFsxMjgsIDEyOCwgMF0sCiAgICBvbGl2ZWRyYWI6IFsxMDcsIDE0MiwgMzVdLAogICAgb3JhbmdlOiBbMjU1LCAxNjUsIDBdLAogICAgb3JhbmdlcmVkOiBbMjU1LCA2OSwgMF0sCiAgICBvcmNoaWQ6IFsyMTgsIDExMiwgMjE0XSwKICAgIHBhbGVnb2xkZW5yb2Q6IFsyMzgsIDIzMiwgMTcwXSwKICAgIHBhbGVncmVlbjogWzE1MiwgMjUxLCAxNTJdLAogICAgcGFsZXR1cnF1b2lzZTogWzE3NSwgMjM4LCAyMzhdLAogICAgcGFsZXZpb2xldHJlZDogWzIxOSwgMTEyLCAxNDddLAogICAgcGFwYXlhd2hpcDogWzI1NSwgMjM5LCAyMTNdLAogICAgcGVhY2hwdWZmOiBbMjU1LCAyMTgsIDE4NV0sCiAgICBwZXJ1OiBbMjA1LCAxMzMsIDYzXSwKICAgIHBpbms6IFsyNTUsIDE5MiwgMjAzXSwKICAgIHBsdW06IFsyMjEsIDE2MCwgMjIxXSwKICAgIHBvd2RlcmJsdWU6IFsxNzYsIDIyNCwgMjMwXSwKICAgIHB1cnBsZTogWzEyOCwgMCwgMTI4XSwKICAgIHJlZDogWzI1NSwgMCwgMF0sCiAgICByb3N5YnJvd246IFsxODgsIDE0MywgMTQzXSwKICAgIHJveWFsYmx1ZTogWzY1LCAxMDUsIDIyNV0sCiAgICBzYWRkbGVicm93bjogWzEzOSwgNjksIDE5XSwKICAgIHNhbG1vbjogWzI1MCwgMTI4LCAxMTRdLAogICAgc2FuZHlicm93bjogWzI0NCwgMTY0LCA5Nl0sCiAgICBzZWFncmVlbjogWzQ2LCAxMzksIDg3XSwKICAgIHNlYXNoZWxsOiBbMjU1LCAyNDUsIDIzOF0sCiAgICBzaWVubmE6IFsxNjAsIDgyLCA0NV0sCiAgICBzaWx2ZXI6IFsxOTIsIDE5MiwgMTkyXSwKICAgIHNreWJsdWU6IFsxMzUsIDIwNiwgMjM1XSwKICAgIHNsYXRlYmx1ZTogWzEwNiwgOTAsIDIwNV0sCiAgICBzbGF0ZWdyYXk6IFsxMTIsIDEyOCwgMTQ0XSwKICAgIHNsYXRlZ3JleTogWzExMiwgMTI4LCAxNDRdLAogICAgc25vdzogWzI1NSwgMjUwLCAyNTBdLAogICAgc3ByaW5nZ3JlZW46IFswLCAyNTUsIDEyN10sCiAgICBzdGVlbGJsdWU6IFs3MCwgMTMwLCAxODBdLAogICAgdGFuOiBbMjEwLCAxODAsIDE0MF0sCiAgICB0ZWFsOiBbMCwgMTI4LCAxMjhdLAogICAgdGhpc3RsZTogWzIxNiwgMTkxLCAyMTZdLAogICAgdG9tYXRvOiBbMjU1LCA5OSwgNzFdLAogICAgdHVycXVvaXNlOiBbNjQsIDIyNCwgMjA4XSwKICAgIHZpb2xldDogWzIzOCwgMTMwLCAyMzhdLAogICAgd2hlYXQ6IFsyNDUsIDIyMiwgMTc5XSwKICAgIHdoaXRlOiBbMjU1LCAyNTUsIDI1NV0sCiAgICB3aGl0ZXNtb2tlOiBbMjQ1LCAyNDUsIDI0NV0sCiAgICB5ZWxsb3c6IFsyNTUsIDI1NSwgMF0sCiAgICB5ZWxsb3dncmVlbjogWzE1NCwgMjA1LCA1MF0KICB9OwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTYzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgUERGR3JhZGllbnQsIFBERkxpbmVhckdyYWRpZW50LCBQREZSYWRpYWxHcmFkaWVudCwKICAgIGV4dGVuZCA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoaGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfSwKICAgIGhhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCiAgUERGR3JhZGllbnQgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBQREZHcmFkaWVudChkb2MpIHsKICAgICAgdGhpcy5kb2MgPSBkb2M7CiAgICAgIHRoaXMuc3RvcHMgPSBbXTsKICAgICAgdGhpcy5lbWJlZGRlZCA9IGZhbHNlOwogICAgICB0aGlzLnRyYW5zZm9ybSA9IFsxLCAwLCAwLCAxLCAwLCAwXTsKICAgICAgdGhpcy5fY29sb3JTcGFjZSA9ICdEZXZpY2VSR0InOwogICAgfQoKICAgIFBERkdyYWRpZW50LnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24ocG9zLCBjb2xvciwgb3BhY2l0eSkgewogICAgICBpZiAob3BhY2l0eSA9PSBudWxsKSB7CiAgICAgICAgb3BhY2l0eSA9IDE7CiAgICAgIH0KICAgICAgb3BhY2l0eSA9IE1hdGgubWF4KDAsIE1hdGgubWluKDEsIG9wYWNpdHkpKTsKICAgICAgdGhpcy5zdG9wcy5wdXNoKFtwb3MsIHRoaXMuZG9jLl9ub3JtYWxpemVDb2xvcihjb2xvciksIG9wYWNpdHldKTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwoKICAgIFBERkdyYWRpZW50LnByb3RvdHlwZS5zZXRUcmFuc2Zvcm0gPSBmdW5jdGlvbihtMTEsIG0xMiwgbTIxLCBtMjIsIGR4LCBkeSkgewogICAgICB0aGlzLnRyYW5zZm9ybSA9IFttMTEsIG0xMiwgbTIxLCBtMjIsIGR4LCBkeV07CiAgICAgIHJldHVybiB0aGlzOwogICAgfTsKCiAgICBQREZHcmFkaWVudC5wcm90b3R5cGUuZW1iZWQgPSBmdW5jdGlvbihtKSB7CiAgICAgIHZhciBib3VuZHMsIGVuY29kZSwgZm4sIGZvcm0sIGdyYWQsIGdzdGF0ZSwgaSwgaiwgaywgbGFzdCwgbGVuLCBvcGFjaXR5UGF0dGVybiwgcGFnZUJCb3gsIHBhdHRlcm4sIHJlZiwgcmVmMSwgc2hhZGVyLCBzdG9wLCBzdG9wcywgdjsKICAgICAgaWYgKHRoaXMuc3RvcHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIHRoaXMuZW1iZWRkZWQgPSB0cnVlOwogICAgICB0aGlzLm1hdHJpeCA9IG07CiAgICAgIGxhc3QgPSB0aGlzLnN0b3BzW3RoaXMuc3RvcHMubGVuZ3RoIC0gMV07CiAgICAgIGlmIChsYXN0WzBdIDwgMSkgewogICAgICAgIHRoaXMuc3RvcHMucHVzaChbMSwgbGFzdFsxXSwgbGFzdFsyXV0pOwogICAgICB9CiAgICAgIGJvdW5kcyA9IFtdOwogICAgICBlbmNvZGUgPSBbXTsKICAgICAgc3RvcHMgPSBbXTsKICAgICAgZm9yIChpID0gaiA9IDAsIHJlZiA9IHRoaXMuc3RvcHMubGVuZ3RoIC0gMTsgMCA8PSByZWYgPyBqIDwgcmVmIDogaiA+IHJlZjsgaSA9IDAgPD0gcmVmID8gKytqIDogLS1qKSB7CiAgICAgICAgZW5jb2RlLnB1c2goMCwgMSk7CiAgICAgICAgaWYgKGkgKyAyICE9PSB0aGlzLnN0b3BzLmxlbmd0aCkgewogICAgICAgICAgYm91bmRzLnB1c2godGhpcy5zdG9wc1tpICsgMV1bMF0pOwogICAgICAgIH0KICAgICAgICBmbiA9IHRoaXMuZG9jLnJlZih7CiAgICAgICAgICBGdW5jdGlvblR5cGU6IDIsCiAgICAgICAgICBEb21haW46IFswLCAxXSwKICAgICAgICAgIEMwOiB0aGlzLnN0b3BzW2kgKyAwXVsxXSwKICAgICAgICAgIEMxOiB0aGlzLnN0b3BzW2kgKyAxXVsxXSwKICAgICAgICAgIE46IDEKICAgICAgICB9KTsKICAgICAgICBzdG9wcy5wdXNoKGZuKTsKICAgICAgICBmbi5lbmQoKTsKICAgICAgfQogICAgICBpZiAoc3RvcHMubGVuZ3RoID09PSAxKSB7CiAgICAgICAgZm4gPSBzdG9wc1swXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBmbiA9IHRoaXMuZG9jLnJlZih7CiAgICAgICAgICBGdW5jdGlvblR5cGU6IDMsCiAgICAgICAgICBEb21haW46IFswLCAxXSwKICAgICAgICAgIEZ1bmN0aW9uczogc3RvcHMsCiAgICAgICAgICBCb3VuZHM6IGJvdW5kcywKICAgICAgICAgIEVuY29kZTogZW5jb2RlCiAgICAgICAgfSk7CiAgICAgICAgZm4uZW5kKCk7CiAgICAgIH0KICAgICAgdGhpcy5pZCA9ICdTaCcgKyAoKyt0aGlzLmRvYy5fZ3JhZENvdW50KTsKICAgICAgc2hhZGVyID0gdGhpcy5zaGFkZXIoZm4pOwogICAgICBzaGFkZXIuZW5kKCk7CiAgICAgIHBhdHRlcm4gPSB0aGlzLmRvYy5yZWYoewogICAgICAgIFR5cGU6ICdQYXR0ZXJuJywKICAgICAgICBQYXR0ZXJuVHlwZTogMiwKICAgICAgICBTaGFkaW5nOiBzaGFkZXIsCiAgICAgICAgTWF0cml4OiAoZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgaywgbGVuLCByZWYxLCByZXN1bHRzOwogICAgICAgICAgcmVmMSA9IHRoaXMubWF0cml4OwogICAgICAgICAgcmVzdWx0cyA9IFtdOwogICAgICAgICAgZm9yIChrID0gMCwgbGVuID0gcmVmMS5sZW5ndGg7IGsgPCBsZW47IGsrKykgewogICAgICAgICAgICB2ID0gcmVmMVtrXTsKICAgICAgICAgICAgcmVzdWx0cy5wdXNoKCt2LnRvRml4ZWQoNSkpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgICAgfSkuY2FsbCh0aGlzKQogICAgICB9KTsKICAgICAgcGF0dGVybi5lbmQoKTsKICAgICAgaWYgKHRoaXMuc3RvcHMuc29tZShmdW5jdGlvbihzdG9wKSB7CiAgICAgICAgcmV0dXJuIHN0b3BbMl0gPCAxOwogICAgICB9KSkgewogICAgICAgIGdyYWQgPSB0aGlzLm9wYWNpdHlHcmFkaWVudCgpOwogICAgICAgIGdyYWQuX2NvbG9yU3BhY2UgPSAnRGV2aWNlR3JheSc7CiAgICAgICAgcmVmMSA9IHRoaXMuc3RvcHM7CiAgICAgICAgZm9yIChrID0gMCwgbGVuID0gcmVmMS5sZW5ndGg7IGsgPCBsZW47IGsrKykgewogICAgICAgICAgc3RvcCA9IHJlZjFba107CiAgICAgICAgICBncmFkLnN0b3Aoc3RvcFswXSwgW3N0b3BbMl1dKTsKICAgICAgICB9CiAgICAgICAgZ3JhZCA9IGdyYWQuZW1iZWQodGhpcy5tYXRyaXgpOwogICAgICAgIHBhZ2VCQm94ID0gWzAsIDAsIHRoaXMuZG9jLnBhZ2Uud2lkdGgsIHRoaXMuZG9jLnBhZ2UuaGVpZ2h0XTsKICAgICAgICBmb3JtID0gdGhpcy5kb2MucmVmKHsKICAgICAgICAgIFR5cGU6ICdYT2JqZWN0JywKICAgICAgICAgIFN1YnR5cGU6ICdGb3JtJywKICAgICAgICAgIEZvcm1UeXBlOiAxLAogICAgICAgICAgQkJveDogcGFnZUJCb3gsCiAgICAgICAgICBHcm91cDogewogICAgICAgICAgICBUeXBlOiAnR3JvdXAnLAogICAgICAgICAgICBTOiAnVHJhbnNwYXJlbmN5JywKICAgICAgICAgICAgQ1M6ICdEZXZpY2VHcmF5JwogICAgICAgICAgfSwKICAgICAgICAgIFJlc291cmNlczogewogICAgICAgICAgICBQcm9jU2V0OiBbJ1BERicsICdUZXh0JywgJ0ltYWdlQicsICdJbWFnZUMnLCAnSW1hZ2VJJ10sCiAgICAgICAgICAgIFBhdHRlcm46IHsKICAgICAgICAgICAgICBTaDE6IGdyYWQKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGZvcm0ud3JpdGUoIi9QYXR0ZXJuIGNzIC9TaDEgc2NuIik7CiAgICAgICAgZm9ybS5lbmQoKHBhZ2VCQm94LmpvaW4oIiAiKSkgKyAiIHJlIGYiKTsKICAgICAgICBnc3RhdGUgPSB0aGlzLmRvYy5yZWYoewogICAgICAgICAgVHlwZTogJ0V4dEdTdGF0ZScsCiAgICAgICAgICBTTWFzazogewogICAgICAgICAgICBUeXBlOiAnTWFzaycsCiAgICAgICAgICAgIFM6ICdMdW1pbm9zaXR5JywKICAgICAgICAgICAgRzogZm9ybQogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIGdzdGF0ZS5lbmQoKTsKICAgICAgICBvcGFjaXR5UGF0dGVybiA9IHRoaXMuZG9jLnJlZih7CiAgICAgICAgICBUeXBlOiAnUGF0dGVybicsCiAgICAgICAgICBQYXR0ZXJuVHlwZTogMSwKICAgICAgICAgIFBhaW50VHlwZTogMSwKICAgICAgICAgIFRpbGluZ1R5cGU6IDIsCiAgICAgICAgICBCQm94OiBwYWdlQkJveCwKICAgICAgICAgIFhTdGVwOiBwYWdlQkJveFsyXSwKICAgICAgICAgIFlTdGVwOiBwYWdlQkJveFszXSwKICAgICAgICAgIFJlc291cmNlczogewogICAgICAgICAgICBQcm9jU2V0OiBbJ1BERicsICdUZXh0JywgJ0ltYWdlQicsICdJbWFnZUMnLCAnSW1hZ2VJJ10sCiAgICAgICAgICAgIFBhdHRlcm46IHsKICAgICAgICAgICAgICBTaDE6IHBhdHRlcm4KICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXh0R1N0YXRlOiB7CiAgICAgICAgICAgICAgR3MxOiBnc3RhdGUKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIG9wYWNpdHlQYXR0ZXJuLndyaXRlKCIvR3MxIGdzIC9QYXR0ZXJuIGNzIC9TaDEgc2NuIik7CiAgICAgICAgb3BhY2l0eVBhdHRlcm4uZW5kKChwYWdlQkJveC5qb2luKCIgIikpICsgIiByZSBmIik7CiAgICAgICAgdGhpcy5kb2MucGFnZS5wYXR0ZXJuc1t0aGlzLmlkXSA9IG9wYWNpdHlQYXR0ZXJuOwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMuZG9jLnBhZ2UucGF0dGVybnNbdGhpcy5pZF0gPSBwYXR0ZXJuOwogICAgICB9CiAgICAgIHJldHVybiBwYXR0ZXJuOwogICAgfTsKCiAgICBQREZHcmFkaWVudC5wcm90b3R5cGUuYXBwbHkgPSBmdW5jdGlvbihvcCkgewogICAgICB2YXIgZHgsIGR5LCBtLCBtMCwgbTEsIG0xMSwgbTEyLCBtMiwgbTIxLCBtMjIsIG0zLCBtNCwgbTUsIHJlZiwgcmVmMTsKICAgICAgcmVmID0gdGhpcy5kb2MuX2N0bS5zbGljZSgpLCBtMCA9IHJlZlswXSwgbTEgPSByZWZbMV0sIG0yID0gcmVmWzJdLCBtMyA9IHJlZlszXSwgbTQgPSByZWZbNF0sIG01ID0gcmVmWzVdOwogICAgICByZWYxID0gdGhpcy50cmFuc2Zvcm0sIG0xMSA9IHJlZjFbMF0sIG0xMiA9IHJlZjFbMV0sIG0yMSA9IHJlZjFbMl0sIG0yMiA9IHJlZjFbM10sIGR4ID0gcmVmMVs0XSwgZHkgPSByZWYxWzVdOwogICAgICBtID0gW20wICogbTExICsgbTIgKiBtMTIsIG0xICogbTExICsgbTMgKiBtMTIsIG0wICogbTIxICsgbTIgKiBtMjIsIG0xICogbTIxICsgbTMgKiBtMjIsIG0wICogZHggKyBtMiAqIGR5ICsgbTQsIG0xICogZHggKyBtMyAqIGR5ICsgbTVdOwogICAgICBpZiAoISh0aGlzLmVtYmVkZGVkICYmIG0uam9pbigiICIpID09PSB0aGlzLm1hdHJpeC5qb2luKCIgIikpKSB7CiAgICAgICAgdGhpcy5lbWJlZChtKTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5kb2MuYWRkQ29udGVudCgiLyIgKyB0aGlzLmlkICsgIiAiICsgb3ApOwogICAgfTsKCiAgICByZXR1cm4gUERGR3JhZGllbnQ7CgogIH0pKCk7CgogIFBERkxpbmVhckdyYWRpZW50ID0gKGZ1bmN0aW9uKHN1cGVyQ2xhc3MpIHsKICAgIGV4dGVuZChQREZMaW5lYXJHcmFkaWVudCwgc3VwZXJDbGFzcyk7CgogICAgZnVuY3Rpb24gUERGTGluZWFyR3JhZGllbnQoZG9jLCB4MSwgeTEsIHgyLCB5MikgewogICAgICB0aGlzLmRvYyA9IGRvYzsKICAgICAgdGhpcy54MSA9IHgxOwogICAgICB0aGlzLnkxID0geTE7CiAgICAgIHRoaXMueDIgPSB4MjsKICAgICAgdGhpcy55MiA9IHkyOwogICAgICBQREZMaW5lYXJHcmFkaWVudC5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgIH0KCiAgICBQREZMaW5lYXJHcmFkaWVudC5wcm90b3R5cGUuc2hhZGVyID0gZnVuY3Rpb24oZm4pIHsKICAgICAgcmV0dXJuIHRoaXMuZG9jLnJlZih7CiAgICAgICAgU2hhZGluZ1R5cGU6IDIsCiAgICAgICAgQ29sb3JTcGFjZTogdGhpcy5fY29sb3JTcGFjZSwKICAgICAgICBDb29yZHM6IFt0aGlzLngxLCB0aGlzLnkxLCB0aGlzLngyLCB0aGlzLnkyXSwKICAgICAgICBGdW5jdGlvbjogZm4sCiAgICAgICAgRXh0ZW5kOiBbdHJ1ZSwgdHJ1ZV0KICAgICAgfSk7CiAgICB9OwoKICAgIFBERkxpbmVhckdyYWRpZW50LnByb3RvdHlwZS5vcGFjaXR5R3JhZGllbnQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIG5ldyBQREZMaW5lYXJHcmFkaWVudCh0aGlzLmRvYywgdGhpcy54MSwgdGhpcy55MSwgdGhpcy54MiwgdGhpcy55Mik7CiAgICB9OwoKICAgIHJldHVybiBQREZMaW5lYXJHcmFkaWVudDsKCiAgfSkoUERGR3JhZGllbnQpOwoKICBQREZSYWRpYWxHcmFkaWVudCA9IChmdW5jdGlvbihzdXBlckNsYXNzKSB7CiAgICBleHRlbmQoUERGUmFkaWFsR3JhZGllbnQsIHN1cGVyQ2xhc3MpOwoKICAgIGZ1bmN0aW9uIFBERlJhZGlhbEdyYWRpZW50KGRvYywgeDEsIHkxLCByMSwgeDIsIHkyLCByMikgewogICAgICB0aGlzLmRvYyA9IGRvYzsKICAgICAgdGhpcy54MSA9IHgxOwogICAgICB0aGlzLnkxID0geTE7CiAgICAgIHRoaXMucjEgPSByMTsKICAgICAgdGhpcy54MiA9IHgyOwogICAgICB0aGlzLnkyID0geTI7CiAgICAgIHRoaXMucjIgPSByMjsKICAgICAgUERGUmFkaWFsR3JhZGllbnQuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICB9CgogICAgUERGUmFkaWFsR3JhZGllbnQucHJvdG90eXBlLnNoYWRlciA9IGZ1bmN0aW9uKGZuKSB7CiAgICAgIHJldHVybiB0aGlzLmRvYy5yZWYoewogICAgICAgIFNoYWRpbmdUeXBlOiAzLAogICAgICAgIENvbG9yU3BhY2U6IHRoaXMuX2NvbG9yU3BhY2UsCiAgICAgICAgQ29vcmRzOiBbdGhpcy54MSwgdGhpcy55MSwgdGhpcy5yMSwgdGhpcy54MiwgdGhpcy55MiwgdGhpcy5yMl0sCiAgICAgICAgRnVuY3Rpb246IGZuLAogICAgICAgIEV4dGVuZDogW3RydWUsIHRydWVdCiAgICAgIH0pOwogICAgfTsKCiAgICBQREZSYWRpYWxHcmFkaWVudC5wcm90b3R5cGUub3BhY2l0eUdyYWRpZW50ID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBuZXcgUERGUmFkaWFsR3JhZGllbnQodGhpcy5kb2MsIHRoaXMueDEsIHRoaXMueTEsIHRoaXMucjEsIHRoaXMueDIsIHRoaXMueTIsIHRoaXMucjIpOwogICAgfTsKCiAgICByZXR1cm4gUERGUmFkaWFsR3JhZGllbnQ7CgogIH0pKFBERkdyYWRpZW50KTsKCiAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICBQREZHcmFkaWVudDogUERGR3JhZGllbnQsCiAgICBQREZMaW5lYXJHcmFkaWVudDogUERGTGluZWFyR3JhZGllbnQsCiAgICBQREZSYWRpYWxHcmFkaWVudDogUERGUmFkaWFsR3JhZGllbnQKICB9OwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTY0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgS0FQUEEsIFNWR1BhdGgsIG51bWJlciwKICAgIHNsaWNlID0gW10uc2xpY2U7CgogIFNWR1BhdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2NSk7CgogIG51bWJlciA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpLm51bWJlcjsKCiAgS0FQUEEgPSA0LjAgKiAoKE1hdGguc3FydCgyKSAtIDEuMCkgLyAzLjApOwoKICBtb2R1bGUuZXhwb3J0cyA9IHsKICAgIGluaXRWZWN0b3I6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLl9jdG0gPSBbMSwgMCwgMCwgMSwgMCwgMF07CiAgICAgIHJldHVybiB0aGlzLl9jdG1TdGFjayA9IFtdOwogICAgfSwKICAgIHNhdmU6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLl9jdG1TdGFjay5wdXNoKHRoaXMuX2N0bS5zbGljZSgpKTsKICAgICAgcmV0dXJuIHRoaXMuYWRkQ29udGVudCgncScpOwogICAgfSwKICAgIHJlc3RvcmU6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLl9jdG0gPSB0aGlzLl9jdG1TdGFjay5wb3AoKSB8fCBbMSwgMCwgMCwgMSwgMCwgMF07CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoJ1EnKTsKICAgIH0sCiAgICBjbG9zZVBhdGg6IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KCdoJyk7CiAgICB9LAogICAgbGluZVdpZHRoOiBmdW5jdGlvbih3KSB7CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoKG51bWJlcih3KSkgKyAiIHciKTsKICAgIH0sCiAgICBfQ0FQX1NUWUxFUzogewogICAgICBCVVRUOiAwLAogICAgICBST1VORDogMSwKICAgICAgU1FVQVJFOiAyCiAgICB9LAogICAgbGluZUNhcDogZnVuY3Rpb24oYykgewogICAgICBpZiAodHlwZW9mIGMgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgYyA9IHRoaXMuX0NBUF9TVFlMRVNbYy50b1VwcGVyQ2FzZSgpXTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KGMgKyAiIEoiKTsKICAgIH0sCiAgICBfSk9JTl9TVFlMRVM6IHsKICAgICAgTUlURVI6IDAsCiAgICAgIFJPVU5EOiAxLAogICAgICBCRVZFTDogMgogICAgfSwKICAgIGxpbmVKb2luOiBmdW5jdGlvbihqKSB7CiAgICAgIGlmICh0eXBlb2YgaiA9PT0gJ3N0cmluZycpIHsKICAgICAgICBqID0gdGhpcy5fSk9JTl9TVFlMRVNbai50b1VwcGVyQ2FzZSgpXTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KGogKyAiIGoiKTsKICAgIH0sCiAgICBtaXRlckxpbWl0OiBmdW5jdGlvbihtKSB7CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoKG51bWJlcihtKSkgKyAiIE0iKTsKICAgIH0sCiAgICBkYXNoOiBmdW5jdGlvbihsZW5ndGgsIG9wdGlvbnMpIHsKICAgICAgdmFyIHBoYXNlLCByZWYsIHNwYWNlLCB2OwogICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7CiAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICB9CiAgICAgIGlmIChsZW5ndGggPT0gbnVsbCkgewogICAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxlbmd0aCkpIHsKICAgICAgICBsZW5ndGggPSAoKGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIGksIGxlbiwgcmVzdWx0czsKICAgICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgICAgIGZvciAoaSA9IDAsIGxlbiA9IGxlbmd0aC5sZW5ndGg7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICB2ID0gbGVuZ3RoW2ldOwogICAgICAgICAgICByZXN1bHRzLnB1c2gobnVtYmVyKHYpKTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiByZXN1bHRzOwogICAgICAgIH0pKCkpLmpvaW4oJyAnKTsKICAgICAgICBwaGFzZSA9IG9wdGlvbnMucGhhc2UgfHwgMDsKICAgICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KCJbIiArIGxlbmd0aCArICJdICIgKyAobnVtYmVyKHBoYXNlKSkgKyAiIGQiKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBzcGFjZSA9IChyZWYgPSBvcHRpb25zLnNwYWNlKSAhPSBudWxsID8gcmVmIDogbGVuZ3RoOwogICAgICAgIHBoYXNlID0gb3B0aW9ucy5waGFzZSB8fCAwOwogICAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoIlsiICsgKG51bWJlcihsZW5ndGgpKSArICIgIiArIChudW1iZXIoc3BhY2UpKSArICJdICIgKyAobnVtYmVyKHBoYXNlKSkgKyAiIGQiKTsKICAgICAgfQogICAgfSwKICAgIHVuZGFzaDogZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoIltdIDAgZCIpOwogICAgfSwKICAgIG1vdmVUbzogZnVuY3Rpb24oeCwgeSkgewogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KChudW1iZXIoeCkpICsgIiAiICsgKG51bWJlcih5KSkgKyAiIG0iKTsKICAgIH0sCiAgICBsaW5lVG86IGZ1bmN0aW9uKHgsIHkpIHsKICAgICAgcmV0dXJuIHRoaXMuYWRkQ29udGVudCgobnVtYmVyKHgpKSArICIgIiArIChudW1iZXIoeSkpICsgIiBsIik7CiAgICB9LAogICAgYmV6aWVyQ3VydmVUbzogZnVuY3Rpb24oY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgeCwgeSkgewogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KChudW1iZXIoY3AxeCkpICsgIiAiICsgKG51bWJlcihjcDF5KSkgKyAiICIgKyAobnVtYmVyKGNwMngpKSArICIgIiArIChudW1iZXIoY3AyeSkpICsgIiAiICsgKG51bWJlcih4KSkgKyAiICIgKyAobnVtYmVyKHkpKSArICIgYyIpOwogICAgfSwKICAgIHF1YWRyYXRpY0N1cnZlVG86IGZ1bmN0aW9uKGNweCwgY3B5LCB4LCB5KSB7CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoKG51bWJlcihjcHgpKSArICIgIiArIChudW1iZXIoY3B5KSkgKyAiICIgKyAobnVtYmVyKHgpKSArICIgIiArIChudW1iZXIoeSkpICsgIiB2Iik7CiAgICB9LAogICAgcmVjdDogZnVuY3Rpb24oeCwgeSwgdywgaCkgewogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KChudW1iZXIoeCkpICsgIiAiICsgKG51bWJlcih5KSkgKyAiICIgKyAobnVtYmVyKHcpKSArICIgIiArIChudW1iZXIoaCkpICsgIiByZSIpOwogICAgfSwKICAgIHJvdW5kZWRSZWN0OiBmdW5jdGlvbih4LCB5LCB3LCBoLCByKSB7CiAgICAgIHZhciBjOwogICAgICBpZiAociA9PSBudWxsKSB7CiAgICAgICAgciA9IDA7CiAgICAgIH0KICAgICAgciA9IE1hdGgubWluKHIsIDAuNSAqIHcsIDAuNSAqIGgpOwogICAgICBjID0gciAqICgxLjAgLSBLQVBQQSk7CiAgICAgIHRoaXMubW92ZVRvKHggKyByLCB5KTsKICAgICAgdGhpcy5saW5lVG8oeCArIHcgLSByLCB5KTsKICAgICAgdGhpcy5iZXppZXJDdXJ2ZVRvKHggKyB3IC0gYywgeSwgeCArIHcsIHkgKyBjLCB4ICsgdywgeSArIHIpOwogICAgICB0aGlzLmxpbmVUbyh4ICsgdywgeSArIGggLSByKTsKICAgICAgdGhpcy5iZXppZXJDdXJ2ZVRvKHggKyB3LCB5ICsgaCAtIGMsIHggKyB3IC0gYywgeSArIGgsIHggKyB3IC0gciwgeSArIGgpOwogICAgICB0aGlzLmxpbmVUbyh4ICsgciwgeSArIGgpOwogICAgICB0aGlzLmJlemllckN1cnZlVG8oeCArIGMsIHkgKyBoLCB4LCB5ICsgaCAtIGMsIHgsIHkgKyBoIC0gcik7CiAgICAgIHRoaXMubGluZVRvKHgsIHkgKyByKTsKICAgICAgdGhpcy5iZXppZXJDdXJ2ZVRvKHgsIHkgKyBjLCB4ICsgYywgeSwgeCArIHIsIHkpOwogICAgICByZXR1cm4gdGhpcy5jbG9zZVBhdGgoKTsKICAgIH0sCiAgICBlbGxpcHNlOiBmdW5jdGlvbih4LCB5LCByMSwgcjIpIHsKICAgICAgdmFyIG94LCBveSwgeGUsIHhtLCB5ZSwgeW07CiAgICAgIGlmIChyMiA9PSBudWxsKSB7CiAgICAgICAgcjIgPSByMTsKICAgICAgfQogICAgICB4IC09IHIxOwogICAgICB5IC09IHIyOwogICAgICBveCA9IHIxICogS0FQUEE7CiAgICAgIG95ID0gcjIgKiBLQVBQQTsKICAgICAgeGUgPSB4ICsgcjEgKiAyOwogICAgICB5ZSA9IHkgKyByMiAqIDI7CiAgICAgIHhtID0geCArIHIxOwogICAgICB5bSA9IHkgKyByMjsKICAgICAgdGhpcy5tb3ZlVG8oeCwgeW0pOwogICAgICB0aGlzLmJlemllckN1cnZlVG8oeCwgeW0gLSBveSwgeG0gLSBveCwgeSwgeG0sIHkpOwogICAgICB0aGlzLmJlemllckN1cnZlVG8oeG0gKyBveCwgeSwgeGUsIHltIC0gb3ksIHhlLCB5bSk7CiAgICAgIHRoaXMuYmV6aWVyQ3VydmVUbyh4ZSwgeW0gKyBveSwgeG0gKyBveCwgeWUsIHhtLCB5ZSk7CiAgICAgIHRoaXMuYmV6aWVyQ3VydmVUbyh4bSAtIG94LCB5ZSwgeCwgeW0gKyBveSwgeCwgeW0pOwogICAgICByZXR1cm4gdGhpcy5jbG9zZVBhdGgoKTsKICAgIH0sCiAgICBjaXJjbGU6IGZ1bmN0aW9uKHgsIHksIHJhZGl1cykgewogICAgICByZXR1cm4gdGhpcy5lbGxpcHNlKHgsIHksIHJhZGl1cyk7CiAgICB9LAogICAgYXJjOiBmdW5jdGlvbih4LCB5LCByYWRpdXMsIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlLCBhbnRpY2xvY2t3aXNlKSB7CiAgICAgIHZhciBIQUxGX1BJLCBUV09fUEksIGF4LCBheSwgY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgY3VyQW5nLCBkZWx0YUFuZywgZGVsdGFDeCwgZGVsdGFDeSwgZGlyLCBoYW5kbGVMZW4sIGksIG51bVNlZ3MsIHJlZiwgc2VnQW5nLCBzZWdJZHg7CiAgICAgIGlmIChhbnRpY2xvY2t3aXNlID09IG51bGwpIHsKICAgICAgICBhbnRpY2xvY2t3aXNlID0gZmFsc2U7CiAgICAgIH0KICAgICAgVFdPX1BJID0gMi4wICogTWF0aC5QSTsKICAgICAgSEFMRl9QSSA9IDAuNSAqIE1hdGguUEk7CiAgICAgIGRlbHRhQW5nID0gZW5kQW5nbGUgLSBzdGFydEFuZ2xlOwogICAgICBpZiAoTWF0aC5hYnMoZGVsdGFBbmcpID4gVFdPX1BJKSB7CiAgICAgICAgZGVsdGFBbmcgPSBUV09fUEk7CiAgICAgIH0gZWxzZSBpZiAoZGVsdGFBbmcgIT09IDAgJiYgYW50aWNsb2Nrd2lzZSAhPT0gKGRlbHRhQW5nIDwgMCkpIHsKICAgICAgICBkaXIgPSBhbnRpY2xvY2t3aXNlID8gLTEgOiAxOwogICAgICAgIGRlbHRhQW5nID0gZGlyICogVFdPX1BJICsgZGVsdGFBbmc7CiAgICAgIH0KICAgICAgbnVtU2VncyA9IE1hdGguY2VpbChNYXRoLmFicyhkZWx0YUFuZykgLyBIQUxGX1BJKTsKICAgICAgc2VnQW5nID0gZGVsdGFBbmcgLyBudW1TZWdzOwogICAgICBoYW5kbGVMZW4gPSAoc2VnQW5nIC8gSEFMRl9QSSkgKiBLQVBQQSAqIHJhZGl1czsKICAgICAgY3VyQW5nID0gc3RhcnRBbmdsZTsKICAgICAgZGVsdGFDeCA9IC1NYXRoLnNpbihjdXJBbmcpICogaGFuZGxlTGVuOwogICAgICBkZWx0YUN5ID0gTWF0aC5jb3MoY3VyQW5nKSAqIGhhbmRsZUxlbjsKICAgICAgYXggPSB4ICsgTWF0aC5jb3MoY3VyQW5nKSAqIHJhZGl1czsKICAgICAgYXkgPSB5ICsgTWF0aC5zaW4oY3VyQW5nKSAqIHJhZGl1czsKICAgICAgdGhpcy5tb3ZlVG8oYXgsIGF5KTsKICAgICAgZm9yIChzZWdJZHggPSBpID0gMCwgcmVmID0gbnVtU2VnczsgMCA8PSByZWYgPyBpIDwgcmVmIDogaSA+IHJlZjsgc2VnSWR4ID0gMCA8PSByZWYgPyArK2kgOiAtLWkpIHsKICAgICAgICBjcDF4ID0gYXggKyBkZWx0YUN4OwogICAgICAgIGNwMXkgPSBheSArIGRlbHRhQ3k7CiAgICAgICAgY3VyQW5nICs9IHNlZ0FuZzsKICAgICAgICBheCA9IHggKyBNYXRoLmNvcyhjdXJBbmcpICogcmFkaXVzOwogICAgICAgIGF5ID0geSArIE1hdGguc2luKGN1ckFuZykgKiByYWRpdXM7CiAgICAgICAgZGVsdGFDeCA9IC1NYXRoLnNpbihjdXJBbmcpICogaGFuZGxlTGVuOwogICAgICAgIGRlbHRhQ3kgPSBNYXRoLmNvcyhjdXJBbmcpICogaGFuZGxlTGVuOwogICAgICAgIGNwMnggPSBheCAtIGRlbHRhQ3g7CiAgICAgICAgY3AyeSA9IGF5IC0gZGVsdGFDeTsKICAgICAgICB0aGlzLmJlemllckN1cnZlVG8oY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgYXgsIGF5KTsKICAgICAgfQogICAgICByZXR1cm4gdGhpczsKICAgIH0sCiAgICBwb2x5Z29uOiBmdW5jdGlvbigpIHsKICAgICAgdmFyIGksIGxlbiwgcG9pbnQsIHBvaW50czsKICAgICAgcG9pbnRzID0gMSA8PSBhcmd1bWVudHMubGVuZ3RoID8gc2xpY2UuY2FsbChhcmd1bWVudHMsIDApIDogW107CiAgICAgIHRoaXMubW92ZVRvLmFwcGx5KHRoaXMsIHBvaW50cy5zaGlmdCgpKTsKICAgICAgZm9yIChpID0gMCwgbGVuID0gcG9pbnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgcG9pbnQgPSBwb2ludHNbaV07CiAgICAgICAgdGhpcy5saW5lVG8uYXBwbHkodGhpcywgcG9pbnQpOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLmNsb3NlUGF0aCgpOwogICAgfSwKICAgIHBhdGg6IGZ1bmN0aW9uKHBhdGgpIHsKICAgICAgU1ZHUGF0aC5hcHBseSh0aGlzLCBwYXRoKTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9LAogICAgX3dpbmRpbmdSdWxlOiBmdW5jdGlvbihydWxlKSB7CiAgICAgIGlmICgvZXZlbi0/b2RkLy50ZXN0KHJ1bGUpKSB7CiAgICAgICAgcmV0dXJuICcqJzsKICAgICAgfQogICAgICByZXR1cm4gJyc7CiAgICB9LAogICAgZmlsbDogZnVuY3Rpb24oY29sb3IsIHJ1bGUpIHsKICAgICAgaWYgKC8oZXZlbi0/b2RkKXwobm9uLT96ZXJvKS8udGVzdChjb2xvcikpIHsKICAgICAgICBydWxlID0gY29sb3I7CiAgICAgICAgY29sb3IgPSBudWxsOwogICAgICB9CiAgICAgIGlmIChjb2xvcikgewogICAgICAgIHRoaXMuZmlsbENvbG9yKGNvbG9yKTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KCdmJyArIHRoaXMuX3dpbmRpbmdSdWxlKHJ1bGUpKTsKICAgIH0sCiAgICBzdHJva2U6IGZ1bmN0aW9uKGNvbG9yKSB7CiAgICAgIGlmIChjb2xvcikgewogICAgICAgIHRoaXMuc3Ryb2tlQ29sb3IoY29sb3IpOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLmFkZENvbnRlbnQoJ1MnKTsKICAgIH0sCiAgICBmaWxsQW5kU3Ryb2tlOiBmdW5jdGlvbihmaWxsQ29sb3IsIHN0cm9rZUNvbG9yLCBydWxlKSB7CiAgICAgIHZhciBpc0ZpbGxSdWxlOwogICAgICBpZiAoc3Ryb2tlQ29sb3IgPT0gbnVsbCkgewogICAgICAgIHN0cm9rZUNvbG9yID0gZmlsbENvbG9yOwogICAgICB9CiAgICAgIGlzRmlsbFJ1bGUgPSAvKGV2ZW4tP29kZCl8KG5vbi0/emVybykvOwogICAgICBpZiAoaXNGaWxsUnVsZS50ZXN0KGZpbGxDb2xvcikpIHsKICAgICAgICBydWxlID0gZmlsbENvbG9yOwogICAgICAgIGZpbGxDb2xvciA9IG51bGw7CiAgICAgIH0KICAgICAgaWYgKGlzRmlsbFJ1bGUudGVzdChzdHJva2VDb2xvcikpIHsKICAgICAgICBydWxlID0gc3Ryb2tlQ29sb3I7CiAgICAgICAgc3Ryb2tlQ29sb3IgPSBmaWxsQ29sb3I7CiAgICAgIH0KICAgICAgaWYgKGZpbGxDb2xvcikgewogICAgICAgIHRoaXMuZmlsbENvbG9yKGZpbGxDb2xvcik7CiAgICAgICAgdGhpcy5zdHJva2VDb2xvcihzdHJva2VDb2xvcik7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuYWRkQ29udGVudCgnQicgKyB0aGlzLl93aW5kaW5nUnVsZShydWxlKSk7CiAgICB9LAogICAgY2xpcDogZnVuY3Rpb24ocnVsZSkgewogICAgICByZXR1cm4gdGhpcy5hZGRDb250ZW50KCdXJyArIHRoaXMuX3dpbmRpbmdSdWxlKHJ1bGUpICsgJyBuJyk7CiAgICB9LAogICAgdHJhbnNmb3JtOiBmdW5jdGlvbihtMTEsIG0xMiwgbTIxLCBtMjIsIGR4LCBkeSkgewogICAgICB2YXIgbSwgbTAsIG0xLCBtMiwgbTMsIG00LCBtNSwgdiwgdmFsdWVzOwogICAgICBtID0gdGhpcy5fY3RtOwogICAgICBtMCA9IG1bMF0sIG0xID0gbVsxXSwgbTIgPSBtWzJdLCBtMyA9IG1bM10sIG00ID0gbVs0XSwgbTUgPSBtWzVdOwogICAgICBtWzBdID0gbTAgKiBtMTEgKyBtMiAqIG0xMjsKICAgICAgbVsxXSA9IG0xICogbTExICsgbTMgKiBtMTI7CiAgICAgIG1bMl0gPSBtMCAqIG0yMSArIG0yICogbTIyOwogICAgICBtWzNdID0gbTEgKiBtMjEgKyBtMyAqIG0yMjsKICAgICAgbVs0XSA9IG0wICogZHggKyBtMiAqIGR5ICsgbTQ7CiAgICAgIG1bNV0gPSBtMSAqIGR4ICsgbTMgKiBkeSArIG01OwogICAgICB2YWx1ZXMgPSAoKGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBpLCBsZW4sIHJlZiwgcmVzdWx0czsKICAgICAgICByZWYgPSBbbTExLCBtMTIsIG0yMSwgbTIyLCBkeCwgZHldOwogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgIHYgPSByZWZbaV07CiAgICAgICAgICByZXN1bHRzLnB1c2gobnVtYmVyKHYpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgIH0pKCkpLmpvaW4oJyAnKTsKICAgICAgcmV0dXJuIHRoaXMuYWRkQ29udGVudCh2YWx1ZXMgKyAiIGNtIik7CiAgICB9LAogICAgdHJhbnNsYXRlOiBmdW5jdGlvbih4LCB5KSB7CiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybSgxLCAwLCAwLCAxLCB4LCB5KTsKICAgIH0sCiAgICByb3RhdGU6IGZ1bmN0aW9uKGFuZ2xlLCBvcHRpb25zKSB7CiAgICAgIHZhciBjb3MsIHJhZCwgcmVmLCBzaW4sIHgsIHgxLCB5LCB5MTsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICByYWQgPSBhbmdsZSAqIE1hdGguUEkgLyAxODA7CiAgICAgIGNvcyA9IE1hdGguY29zKHJhZCk7CiAgICAgIHNpbiA9IE1hdGguc2luKHJhZCk7CiAgICAgIHggPSB5ID0gMDsKICAgICAgaWYgKG9wdGlvbnMub3JpZ2luICE9IG51bGwpIHsKICAgICAgICByZWYgPSBvcHRpb25zLm9yaWdpbiwgeCA9IHJlZlswXSwgeSA9IHJlZlsxXTsKICAgICAgICB4MSA9IHggKiBjb3MgLSB5ICogc2luOwogICAgICAgIHkxID0geCAqIHNpbiArIHkgKiBjb3M7CiAgICAgICAgeCAtPSB4MTsKICAgICAgICB5IC09IHkxOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybShjb3MsIHNpbiwgLXNpbiwgY29zLCB4LCB5KTsKICAgIH0sCiAgICBzY2FsZTogZnVuY3Rpb24oeEZhY3RvciwgeUZhY3Rvciwgb3B0aW9ucykgewogICAgICB2YXIgcmVmLCB4LCB5OwogICAgICBpZiAoeUZhY3RvciA9PSBudWxsKSB7CiAgICAgICAgeUZhY3RvciA9IHhGYWN0b3I7CiAgICAgIH0KICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBpZiAodHlwZW9mIHlGYWN0b3IgPT09ICJvYmplY3QiKSB7CiAgICAgICAgb3B0aW9ucyA9IHlGYWN0b3I7CiAgICAgICAgeUZhY3RvciA9IHhGYWN0b3I7CiAgICAgIH0KICAgICAgeCA9IHkgPSAwOwogICAgICBpZiAob3B0aW9ucy5vcmlnaW4gIT0gbnVsbCkgewogICAgICAgIHJlZiA9IG9wdGlvbnMub3JpZ2luLCB4ID0gcmVmWzBdLCB5ID0gcmVmWzFdOwogICAgICAgIHggLT0geEZhY3RvciAqIHg7CiAgICAgICAgeSAtPSB5RmFjdG9yICogeTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm0oeEZhY3RvciwgMCwgMCwgeUZhY3RvciwgeCwgeSk7CiAgICB9CiAgfTsKCn0pLmNhbGwodGhpcyk7CgoKLyoqKi8gfSksCi8qIDE2NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgooZnVuY3Rpb24oKSB7CiAgdmFyIFNWR1BhdGg7CgogIFNWR1BhdGggPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgYXBwbHksIGFyY1RvU2VnbWVudHMsIGN4LCBjeSwgcGFyYW1ldGVycywgcGFyc2UsIHB4LCBweSwgcnVubmVycywgc2VnbWVudFRvQmV6aWVyLCBzb2x2ZUFyYywgc3gsIHN5OwoKICAgIGZ1bmN0aW9uIFNWR1BhdGgoKSB7fQoKICAgIFNWR1BhdGguYXBwbHkgPSBmdW5jdGlvbihkb2MsIHBhdGgpIHsKICAgICAgdmFyIGNvbW1hbmRzOwogICAgICBjb21tYW5kcyA9IHBhcnNlKHBhdGgpOwogICAgICByZXR1cm4gYXBwbHkoY29tbWFuZHMsIGRvYyk7CiAgICB9OwoKICAgIHBhcmFtZXRlcnMgPSB7CiAgICAgIEE6IDcsCiAgICAgIGE6IDcsCiAgICAgIEM6IDYsCiAgICAgIGM6IDYsCiAgICAgIEg6IDEsCiAgICAgIGg6IDEsCiAgICAgIEw6IDIsCiAgICAgIGw6IDIsCiAgICAgIE06IDIsCiAgICAgIG06IDIsCiAgICAgIFE6IDQsCiAgICAgIHE6IDQsCiAgICAgIFM6IDQsCiAgICAgIHM6IDQsCiAgICAgIFQ6IDIsCiAgICAgIHQ6IDIsCiAgICAgIFY6IDEsCiAgICAgIHY6IDEsCiAgICAgIFo6IDAsCiAgICAgIHo6IDAKICAgIH07CgogICAgcGFyc2UgPSBmdW5jdGlvbihwYXRoKSB7CiAgICAgIHZhciBhcmdzLCBjLCBjbWQsIGN1ckFyZywgZm91bmREZWNpbWFsLCBqLCBsZW4sIHBhcmFtcywgcmV0OwogICAgICByZXQgPSBbXTsKICAgICAgYXJncyA9IFtdOwogICAgICBjdXJBcmcgPSAiIjsKICAgICAgZm91bmREZWNpbWFsID0gZmFsc2U7CiAgICAgIHBhcmFtcyA9IDA7CiAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHBhdGgubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICBjID0gcGF0aFtqXTsKICAgICAgICBpZiAocGFyYW1ldGVyc1tjXSAhPSBudWxsKSB7CiAgICAgICAgICBwYXJhbXMgPSBwYXJhbWV0ZXJzW2NdOwogICAgICAgICAgaWYgKGNtZCkgewogICAgICAgICAgICBpZiAoY3VyQXJnLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICBhcmdzW2FyZ3MubGVuZ3RoXSA9ICtjdXJBcmc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0W3JldC5sZW5ndGhdID0gewogICAgICAgICAgICAgIGNtZDogY21kLAogICAgICAgICAgICAgIGFyZ3M6IGFyZ3MKICAgICAgICAgICAgfTsKICAgICAgICAgICAgYXJncyA9IFtdOwogICAgICAgICAgICBjdXJBcmcgPSAiIjsKICAgICAgICAgICAgZm91bmREZWNpbWFsID0gZmFsc2U7CiAgICAgICAgICB9CiAgICAgICAgICBjbWQgPSBjOwogICAgICAgIH0gZWxzZSBpZiAoKGMgPT09ICIgIiB8fCBjID09PSAiLCIpIHx8IChjID09PSAiLSIgJiYgY3VyQXJnLmxlbmd0aCA+IDAgJiYgY3VyQXJnW2N1ckFyZy5sZW5ndGggLSAxXSAhPT0gJ2UnKSB8fCAoYyA9PT0gIi4iICYmIGZvdW5kRGVjaW1hbCkpIHsKICAgICAgICAgIGlmIChjdXJBcmcubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSBwYXJhbXMpIHsKICAgICAgICAgICAgcmV0W3JldC5sZW5ndGhdID0gewogICAgICAgICAgICAgIGNtZDogY21kLAogICAgICAgICAgICAgIGFyZ3M6IGFyZ3MKICAgICAgICAgICAgfTsKICAgICAgICAgICAgYXJncyA9IFsrY3VyQXJnXTsKICAgICAgICAgICAgaWYgKGNtZCA9PT0gIk0iKSB7CiAgICAgICAgICAgICAgY21kID0gIkwiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChjbWQgPT09ICJtIikgewogICAgICAgICAgICAgIGNtZCA9ICJsIjsKICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYXJnc1thcmdzLmxlbmd0aF0gPSArY3VyQXJnOwogICAgICAgICAgfQogICAgICAgICAgZm91bmREZWNpbWFsID0gYyA9PT0gIi4iOwogICAgICAgICAgY3VyQXJnID0gYyA9PT0gJy0nIHx8IGMgPT09ICcuJyA/IGMgOiAnJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgY3VyQXJnICs9IGM7CiAgICAgICAgICBpZiAoYyA9PT0gJy4nKSB7CiAgICAgICAgICAgIGZvdW5kRGVjaW1hbCA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmIChjdXJBcmcubGVuZ3RoID4gMCkgewogICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gcGFyYW1zKSB7CiAgICAgICAgICByZXRbcmV0Lmxlbmd0aF0gPSB7CiAgICAgICAgICAgIGNtZDogY21kLAogICAgICAgICAgICBhcmdzOiBhcmdzCiAgICAgICAgICB9OwogICAgICAgICAgYXJncyA9IFsrY3VyQXJnXTsKICAgICAgICAgIGlmIChjbWQgPT09ICJNIikgewogICAgICAgICAgICBjbWQgPSAiTCI7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoY21kID09PSAibSIpIHsKICAgICAgICAgICAgY21kID0gImwiOwogICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBhcmdzW2FyZ3MubGVuZ3RoXSA9ICtjdXJBcmc7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldFtyZXQubGVuZ3RoXSA9IHsKICAgICAgICBjbWQ6IGNtZCwKICAgICAgICBhcmdzOiBhcmdzCiAgICAgIH07CiAgICAgIHJldHVybiByZXQ7CiAgICB9OwoKICAgIGN4ID0gY3kgPSBweCA9IHB5ID0gc3ggPSBzeSA9IDA7CgogICAgYXBwbHkgPSBmdW5jdGlvbihjb21tYW5kcywgZG9jKSB7CiAgICAgIHZhciBjLCBpLCBqLCBsZW4sIG5hbWU7CiAgICAgIGN4ID0gY3kgPSBweCA9IHB5ID0gc3ggPSBzeSA9IDA7CiAgICAgIGZvciAoaSA9IGogPSAwLCBsZW4gPSBjb21tYW5kcy5sZW5ndGg7IGogPCBsZW47IGkgPSArK2opIHsKICAgICAgICBjID0gY29tbWFuZHNbaV07CiAgICAgICAgaWYgKHR5cGVvZiBydW5uZXJzW25hbWUgPSBjLmNtZF0gPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgIHJ1bm5lcnNbbmFtZV0oZG9jLCBjLmFyZ3MpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gY3ggPSBjeSA9IHB4ID0gcHkgPSAwOwogICAgfTsKCiAgICBydW5uZXJzID0gewogICAgICBNOiBmdW5jdGlvbihkb2MsIGEpIHsKICAgICAgICBjeCA9IGFbMF07CiAgICAgICAgY3kgPSBhWzFdOwogICAgICAgIHB4ID0gcHkgPSBudWxsOwogICAgICAgIHN4ID0gY3g7CiAgICAgICAgc3kgPSBjeTsKICAgICAgICByZXR1cm4gZG9jLm1vdmVUbyhjeCwgY3kpOwogICAgICB9LAogICAgICBtOiBmdW5jdGlvbihkb2MsIGEpIHsKICAgICAgICBjeCArPSBhWzBdOwogICAgICAgIGN5ICs9IGFbMV07CiAgICAgICAgcHggPSBweSA9IG51bGw7CiAgICAgICAgc3ggPSBjeDsKICAgICAgICBzeSA9IGN5OwogICAgICAgIHJldHVybiBkb2MubW92ZVRvKGN4LCBjeSk7CiAgICAgIH0sCiAgICAgIEM6IGZ1bmN0aW9uKGRvYywgYSkgewogICAgICAgIGN4ID0gYVs0XTsKICAgICAgICBjeSA9IGFbNV07CiAgICAgICAgcHggPSBhWzJdOwogICAgICAgIHB5ID0gYVszXTsKICAgICAgICByZXR1cm4gZG9jLmJlemllckN1cnZlVG8uYXBwbHkoZG9jLCBhKTsKICAgICAgfSwKICAgICAgYzogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgZG9jLmJlemllckN1cnZlVG8oYVswXSArIGN4LCBhWzFdICsgY3ksIGFbMl0gKyBjeCwgYVszXSArIGN5LCBhWzRdICsgY3gsIGFbNV0gKyBjeSk7CiAgICAgICAgcHggPSBjeCArIGFbMl07CiAgICAgICAgcHkgPSBjeSArIGFbM107CiAgICAgICAgY3ggKz0gYVs0XTsKICAgICAgICByZXR1cm4gY3kgKz0gYVs1XTsKICAgICAgfSwKICAgICAgUzogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgaWYgKHB4ID09PSBudWxsKSB7CiAgICAgICAgICBweCA9IGN4OwogICAgICAgICAgcHkgPSBjeTsKICAgICAgICB9CiAgICAgICAgZG9jLmJlemllckN1cnZlVG8oY3ggLSAocHggLSBjeCksIGN5IC0gKHB5IC0gY3kpLCBhWzBdLCBhWzFdLCBhWzJdLCBhWzNdKTsKICAgICAgICBweCA9IGFbMF07CiAgICAgICAgcHkgPSBhWzFdOwogICAgICAgIGN4ID0gYVsyXTsKICAgICAgICByZXR1cm4gY3kgPSBhWzNdOwogICAgICB9LAogICAgICBzOiBmdW5jdGlvbihkb2MsIGEpIHsKICAgICAgICBpZiAocHggPT09IG51bGwpIHsKICAgICAgICAgIHB4ID0gY3g7CiAgICAgICAgICBweSA9IGN5OwogICAgICAgIH0KICAgICAgICBkb2MuYmV6aWVyQ3VydmVUbyhjeCAtIChweCAtIGN4KSwgY3kgLSAocHkgLSBjeSksIGN4ICsgYVswXSwgY3kgKyBhWzFdLCBjeCArIGFbMl0sIGN5ICsgYVszXSk7CiAgICAgICAgcHggPSBjeCArIGFbMF07CiAgICAgICAgcHkgPSBjeSArIGFbMV07CiAgICAgICAgY3ggKz0gYVsyXTsKICAgICAgICByZXR1cm4gY3kgKz0gYVszXTsKICAgICAgfSwKICAgICAgUTogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgcHggPSBhWzBdOwogICAgICAgIHB5ID0gYVsxXTsKICAgICAgICBjeCA9IGFbMl07CiAgICAgICAgY3kgPSBhWzNdOwogICAgICAgIHJldHVybiBkb2MucXVhZHJhdGljQ3VydmVUbyhhWzBdLCBhWzFdLCBjeCwgY3kpOwogICAgICB9LAogICAgICBxOiBmdW5jdGlvbihkb2MsIGEpIHsKICAgICAgICBkb2MucXVhZHJhdGljQ3VydmVUbyhhWzBdICsgY3gsIGFbMV0gKyBjeSwgYVsyXSArIGN4LCBhWzNdICsgY3kpOwogICAgICAgIHB4ID0gY3ggKyBhWzBdOwogICAgICAgIHB5ID0gY3kgKyBhWzFdOwogICAgICAgIGN4ICs9IGFbMl07CiAgICAgICAgcmV0dXJuIGN5ICs9IGFbM107CiAgICAgIH0sCiAgICAgIFQ6IGZ1bmN0aW9uKGRvYywgYSkgewogICAgICAgIGlmIChweCA9PT0gbnVsbCkgewogICAgICAgICAgcHggPSBjeDsKICAgICAgICAgIHB5ID0gY3k7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHB4ID0gY3ggLSAocHggLSBjeCk7CiAgICAgICAgICBweSA9IGN5IC0gKHB5IC0gY3kpOwogICAgICAgIH0KICAgICAgICBkb2MucXVhZHJhdGljQ3VydmVUbyhweCwgcHksIGFbMF0sIGFbMV0pOwogICAgICAgIHB4ID0gY3ggLSAocHggLSBjeCk7CiAgICAgICAgcHkgPSBjeSAtIChweSAtIGN5KTsKICAgICAgICBjeCA9IGFbMF07CiAgICAgICAgcmV0dXJuIGN5ID0gYVsxXTsKICAgICAgfSwKICAgICAgdDogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgaWYgKHB4ID09PSBudWxsKSB7CiAgICAgICAgICBweCA9IGN4OwogICAgICAgICAgcHkgPSBjeTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcHggPSBjeCAtIChweCAtIGN4KTsKICAgICAgICAgIHB5ID0gY3kgLSAocHkgLSBjeSk7CiAgICAgICAgfQogICAgICAgIGRvYy5xdWFkcmF0aWNDdXJ2ZVRvKHB4LCBweSwgY3ggKyBhWzBdLCBjeSArIGFbMV0pOwogICAgICAgIGN4ICs9IGFbMF07CiAgICAgICAgcmV0dXJuIGN5ICs9IGFbMV07CiAgICAgIH0sCiAgICAgIEE6IGZ1bmN0aW9uKGRvYywgYSkgewogICAgICAgIHNvbHZlQXJjKGRvYywgY3gsIGN5LCBhKTsKICAgICAgICBjeCA9IGFbNV07CiAgICAgICAgcmV0dXJuIGN5ID0gYVs2XTsKICAgICAgfSwKICAgICAgYTogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgYVs1XSArPSBjeDsKICAgICAgICBhWzZdICs9IGN5OwogICAgICAgIHNvbHZlQXJjKGRvYywgY3gsIGN5LCBhKTsKICAgICAgICBjeCA9IGFbNV07CiAgICAgICAgcmV0dXJuIGN5ID0gYVs2XTsKICAgICAgfSwKICAgICAgTDogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgY3ggPSBhWzBdOwogICAgICAgIGN5ID0gYVsxXTsKICAgICAgICBweCA9IHB5ID0gbnVsbDsKICAgICAgICByZXR1cm4gZG9jLmxpbmVUbyhjeCwgY3kpOwogICAgICB9LAogICAgICBsOiBmdW5jdGlvbihkb2MsIGEpIHsKICAgICAgICBjeCArPSBhWzBdOwogICAgICAgIGN5ICs9IGFbMV07CiAgICAgICAgcHggPSBweSA9IG51bGw7CiAgICAgICAgcmV0dXJuIGRvYy5saW5lVG8oY3gsIGN5KTsKICAgICAgfSwKICAgICAgSDogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgY3ggPSBhWzBdOwogICAgICAgIHB4ID0gcHkgPSBudWxsOwogICAgICAgIHJldHVybiBkb2MubGluZVRvKGN4LCBjeSk7CiAgICAgIH0sCiAgICAgIGg6IGZ1bmN0aW9uKGRvYywgYSkgewogICAgICAgIGN4ICs9IGFbMF07CiAgICAgICAgcHggPSBweSA9IG51bGw7CiAgICAgICAgcmV0dXJuIGRvYy5saW5lVG8oY3gsIGN5KTsKICAgICAgfSwKICAgICAgVjogZnVuY3Rpb24oZG9jLCBhKSB7CiAgICAgICAgY3kgPSBhWzBdOwogICAgICAgIHB4ID0gcHkgPSBudWxsOwogICAgICAgIHJldHVybiBkb2MubGluZVRvKGN4LCBjeSk7CiAgICAgIH0sCiAgICAgIHY6IGZ1bmN0aW9uKGRvYywgYSkgewogICAgICAgIGN5ICs9IGFbMF07CiAgICAgICAgcHggPSBweSA9IG51bGw7CiAgICAgICAgcmV0dXJuIGRvYy5saW5lVG8oY3gsIGN5KTsKICAgICAgfSwKICAgICAgWjogZnVuY3Rpb24oZG9jKSB7CiAgICAgICAgZG9jLmNsb3NlUGF0aCgpOwogICAgICAgIGN4ID0gc3g7CiAgICAgICAgcmV0dXJuIGN5ID0gc3k7CiAgICAgIH0sCiAgICAgIHo6IGZ1bmN0aW9uKGRvYykgewogICAgICAgIGRvYy5jbG9zZVBhdGgoKTsKICAgICAgICBjeCA9IHN4OwogICAgICAgIHJldHVybiBjeSA9IHN5OwogICAgICB9CiAgICB9OwoKICAgIHNvbHZlQXJjID0gZnVuY3Rpb24oZG9jLCB4LCB5LCBjb29yZHMpIHsKICAgICAgdmFyIGJleiwgZXgsIGV5LCBqLCBsYXJnZSwgbGVuLCByZXN1bHRzLCByb3QsIHJ4LCByeSwgc2VnLCBzZWdzLCBzd2VlcDsKICAgICAgcnggPSBjb29yZHNbMF0sIHJ5ID0gY29vcmRzWzFdLCByb3QgPSBjb29yZHNbMl0sIGxhcmdlID0gY29vcmRzWzNdLCBzd2VlcCA9IGNvb3Jkc1s0XSwgZXggPSBjb29yZHNbNV0sIGV5ID0gY29vcmRzWzZdOwogICAgICBzZWdzID0gYXJjVG9TZWdtZW50cyhleCwgZXksIHJ4LCByeSwgbGFyZ2UsIHN3ZWVwLCByb3QsIHgsIHkpOwogICAgICByZXN1bHRzID0gW107CiAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHNlZ3MubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICBzZWcgPSBzZWdzW2pdOwogICAgICAgIGJleiA9IHNlZ21lbnRUb0Jlemllci5hcHBseShudWxsLCBzZWcpOwogICAgICAgIHJlc3VsdHMucHVzaChkb2MuYmV6aWVyQ3VydmVUby5hcHBseShkb2MsIGJleikpOwogICAgICB9CiAgICAgIHJldHVybiByZXN1bHRzOwogICAgfTsKCiAgICBhcmNUb1NlZ21lbnRzID0gZnVuY3Rpb24oeCwgeSwgcngsIHJ5LCBsYXJnZSwgc3dlZXAsIHJvdGF0ZVgsIG94LCBveSkgewogICAgICB2YXIgYTAwLCBhMDEsIGExMCwgYTExLCBjb3NfdGgsIGQsIGksIGosIHBsLCByZWYsIHJlc3VsdCwgc2VnbWVudHMsIHNmYWN0b3IsIHNmYWN0b3Jfc3EsIHNpbl90aCwgdGgsIHRoMCwgdGgxLCB0aDIsIHRoMywgdGhfYXJjLCB4MCwgeDEsIHhjLCB5MCwgeTEsIHljOwogICAgICB0aCA9IHJvdGF0ZVggKiAoTWF0aC5QSSAvIDE4MCk7CiAgICAgIHNpbl90aCA9IE1hdGguc2luKHRoKTsKICAgICAgY29zX3RoID0gTWF0aC5jb3ModGgpOwogICAgICByeCA9IE1hdGguYWJzKHJ4KTsKICAgICAgcnkgPSBNYXRoLmFicyhyeSk7CiAgICAgIHB4ID0gY29zX3RoICogKG94IC0geCkgKiAwLjUgKyBzaW5fdGggKiAob3kgLSB5KSAqIDAuNTsKICAgICAgcHkgPSBjb3NfdGggKiAob3kgLSB5KSAqIDAuNSAtIHNpbl90aCAqIChveCAtIHgpICogMC41OwogICAgICBwbCA9IChweCAqIHB4KSAvIChyeCAqIHJ4KSArIChweSAqIHB5KSAvIChyeSAqIHJ5KTsKICAgICAgaWYgKHBsID4gMSkgewogICAgICAgIHBsID0gTWF0aC5zcXJ0KHBsKTsKICAgICAgICByeCAqPSBwbDsKICAgICAgICByeSAqPSBwbDsKICAgICAgfQogICAgICBhMDAgPSBjb3NfdGggLyByeDsKICAgICAgYTAxID0gc2luX3RoIC8gcng7CiAgICAgIGExMCA9ICgtc2luX3RoKSAvIHJ5OwogICAgICBhMTEgPSBjb3NfdGggLyByeTsKICAgICAgeDAgPSBhMDAgKiBveCArIGEwMSAqIG95OwogICAgICB5MCA9IGExMCAqIG94ICsgYTExICogb3k7CiAgICAgIHgxID0gYTAwICogeCArIGEwMSAqIHk7CiAgICAgIHkxID0gYTEwICogeCArIGExMSAqIHk7CiAgICAgIGQgPSAoeDEgLSB4MCkgKiAoeDEgLSB4MCkgKyAoeTEgLSB5MCkgKiAoeTEgLSB5MCk7CiAgICAgIHNmYWN0b3Jfc3EgPSAxIC8gZCAtIDAuMjU7CiAgICAgIGlmIChzZmFjdG9yX3NxIDwgMCkgewogICAgICAgIHNmYWN0b3Jfc3EgPSAwOwogICAgICB9CiAgICAgIHNmYWN0b3IgPSBNYXRoLnNxcnQoc2ZhY3Rvcl9zcSk7CiAgICAgIGlmIChzd2VlcCA9PT0gbGFyZ2UpIHsKICAgICAgICBzZmFjdG9yID0gLXNmYWN0b3I7CiAgICAgIH0KICAgICAgeGMgPSAwLjUgKiAoeDAgKyB4MSkgLSBzZmFjdG9yICogKHkxIC0geTApOwogICAgICB5YyA9IDAuNSAqICh5MCArIHkxKSArIHNmYWN0b3IgKiAoeDEgLSB4MCk7CiAgICAgIHRoMCA9IE1hdGguYXRhbjIoeTAgLSB5YywgeDAgLSB4Yyk7CiAgICAgIHRoMSA9IE1hdGguYXRhbjIoeTEgLSB5YywgeDEgLSB4Yyk7CiAgICAgIHRoX2FyYyA9IHRoMSAtIHRoMDsKICAgICAgaWYgKHRoX2FyYyA8IDAgJiYgc3dlZXAgPT09IDEpIHsKICAgICAgICB0aF9hcmMgKz0gMiAqIE1hdGguUEk7CiAgICAgIH0gZWxzZSBpZiAodGhfYXJjID4gMCAmJiBzd2VlcCA9PT0gMCkgewogICAgICAgIHRoX2FyYyAtPSAyICogTWF0aC5QSTsKICAgICAgfQogICAgICBzZWdtZW50cyA9IE1hdGguY2VpbChNYXRoLmFicyh0aF9hcmMgLyAoTWF0aC5QSSAqIDAuNSArIDAuMDAxKSkpOwogICAgICByZXN1bHQgPSBbXTsKICAgICAgZm9yIChpID0gaiA9IDAsIHJlZiA9IHNlZ21lbnRzOyAwIDw9IHJlZiA/IGogPCByZWYgOiBqID4gcmVmOyBpID0gMCA8PSByZWYgPyArK2ogOiAtLWopIHsKICAgICAgICB0aDIgPSB0aDAgKyBpICogdGhfYXJjIC8gc2VnbWVudHM7CiAgICAgICAgdGgzID0gdGgwICsgKGkgKyAxKSAqIHRoX2FyYyAvIHNlZ21lbnRzOwogICAgICAgIHJlc3VsdFtpXSA9IFt4YywgeWMsIHRoMiwgdGgzLCByeCwgcnksIHNpbl90aCwgY29zX3RoXTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0OwogICAgfTsKCiAgICBzZWdtZW50VG9CZXppZXIgPSBmdW5jdGlvbihjeCwgY3ksIHRoMCwgdGgxLCByeCwgcnksIHNpbl90aCwgY29zX3RoKSB7CiAgICAgIHZhciBhMDAsIGEwMSwgYTEwLCBhMTEsIHQsIHRoX2hhbGYsIHgxLCB4MiwgeDMsIHkxLCB5MiwgeTM7CiAgICAgIGEwMCA9IGNvc190aCAqIHJ4OwogICAgICBhMDEgPSAtc2luX3RoICogcnk7CiAgICAgIGExMCA9IHNpbl90aCAqIHJ4OwogICAgICBhMTEgPSBjb3NfdGggKiByeTsKICAgICAgdGhfaGFsZiA9IDAuNSAqICh0aDEgLSB0aDApOwogICAgICB0ID0gKDggLyAzKSAqIE1hdGguc2luKHRoX2hhbGYgKiAwLjUpICogTWF0aC5zaW4odGhfaGFsZiAqIDAuNSkgLyBNYXRoLnNpbih0aF9oYWxmKTsKICAgICAgeDEgPSBjeCArIE1hdGguY29zKHRoMCkgLSB0ICogTWF0aC5zaW4odGgwKTsKICAgICAgeTEgPSBjeSArIE1hdGguc2luKHRoMCkgKyB0ICogTWF0aC5jb3ModGgwKTsKICAgICAgeDMgPSBjeCArIE1hdGguY29zKHRoMSk7CiAgICAgIHkzID0gY3kgKyBNYXRoLnNpbih0aDEpOwogICAgICB4MiA9IHgzICsgdCAqIE1hdGguc2luKHRoMSk7CiAgICAgIHkyID0geTMgLSB0ICogTWF0aC5jb3ModGgxKTsKICAgICAgcmV0dXJuIFthMDAgKiB4MSArIGEwMSAqIHkxLCBhMTAgKiB4MSArIGExMSAqIHkxLCBhMDAgKiB4MiArIGEwMSAqIHkyLCBhMTAgKiB4MiArIGExMSAqIHkyLCBhMDAgKiB4MyArIGEwMSAqIHkzLCBhMTAgKiB4MyArIGExMSAqIHkzXTsKICAgIH07CgogICAgcmV0dXJuIFNWR1BhdGg7CgogIH0pKCk7CgogIG1vZHVsZS5leHBvcnRzID0gU1ZHUGF0aDsKCn0pLmNhbGwodGhpcyk7CgoKLyoqKi8gfSksCi8qIDE2NiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgooZnVuY3Rpb24oKSB7CiAgdmFyIFBERkZvbnQ7CgogIFBERkZvbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUwKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICBpbml0Rm9udHM6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLl9mb250RmFtaWxpZXMgPSB7fTsKICAgICAgdGhpcy5fZm9udENvdW50ID0gMDsKICAgICAgdGhpcy5fZm9udFNpemUgPSAxMjsKICAgICAgdGhpcy5fZm9udCA9IG51bGw7CiAgICAgIHRoaXMuX3JlZ2lzdGVyZWRGb250cyA9IHt9OwogICAgICAKICAgIH0sCiAgICBmb250OiBmdW5jdGlvbihzcmMsIGZhbWlseSwgc2l6ZSkgewogICAgICB2YXIgY2FjaGVLZXksIGZvbnQsIGlkLCByZWY7CiAgICAgIGlmICh0eXBlb2YgZmFtaWx5ID09PSAnbnVtYmVyJykgewogICAgICAgIHNpemUgPSBmYW1pbHk7CiAgICAgICAgZmFtaWx5ID0gbnVsbDsKICAgICAgfQogICAgICBpZiAodHlwZW9mIHNyYyA9PT0gJ3N0cmluZycgJiYgdGhpcy5fcmVnaXN0ZXJlZEZvbnRzW3NyY10pIHsKICAgICAgICBjYWNoZUtleSA9IHNyYzsKICAgICAgICByZWYgPSB0aGlzLl9yZWdpc3RlcmVkRm9udHNbc3JjXSwgc3JjID0gcmVmLnNyYywgZmFtaWx5ID0gcmVmLmZhbWlseTsKICAgICAgfSBlbHNlIHsKICAgICAgICBjYWNoZUtleSA9IGZhbWlseSB8fCBzcmM7CiAgICAgICAgaWYgKHR5cGVvZiBjYWNoZUtleSAhPT0gJ3N0cmluZycpIHsKICAgICAgICAgIGNhY2hlS2V5ID0gbnVsbDsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKHNpemUgIT0gbnVsbCkgewogICAgICAgIHRoaXMuZm9udFNpemUoc2l6ZSk7CiAgICAgIH0KICAgICAgaWYgKGZvbnQgPSB0aGlzLl9mb250RmFtaWxpZXNbY2FjaGVLZXldKSB7CiAgICAgICAgdGhpcy5fZm9udCA9IGZvbnQ7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgIH0KICAgICAgaWQgPSAnRicgKyAoKyt0aGlzLl9mb250Q291bnQpOwogICAgICB0aGlzLl9mb250ID0gUERGRm9udC5vcGVuKHRoaXMsIHNyYywgZmFtaWx5LCBpZCk7CiAgICAgIGlmIChmb250ID0gdGhpcy5fZm9udEZhbWlsaWVzW3RoaXMuX2ZvbnQubmFtZV0pIHsKICAgICAgICB0aGlzLl9mb250ID0gZm9udDsKICAgICAgICByZXR1cm4gdGhpczsKICAgICAgfQogICAgICBpZiAoY2FjaGVLZXkpIHsKICAgICAgICB0aGlzLl9mb250RmFtaWxpZXNbY2FjaGVLZXldID0gdGhpcy5fZm9udDsKICAgICAgfQogICAgICBpZiAodGhpcy5fZm9udC5uYW1lKSB7CiAgICAgICAgdGhpcy5fZm9udEZhbWlsaWVzW3RoaXMuX2ZvbnQubmFtZV0gPSB0aGlzLl9mb250OwogICAgICB9CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIGZvbnRTaXplOiBmdW5jdGlvbihfZm9udFNpemUpIHsKICAgICAgdGhpcy5fZm9udFNpemUgPSBfZm9udFNpemU7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIGN1cnJlbnRMaW5lSGVpZ2h0OiBmdW5jdGlvbihpbmNsdWRlR2FwKSB7CiAgICAgIGlmIChpbmNsdWRlR2FwID09IG51bGwpIHsKICAgICAgICBpbmNsdWRlR2FwID0gZmFsc2U7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuX2ZvbnQubGluZUhlaWdodCh0aGlzLl9mb250U2l6ZSwgaW5jbHVkZUdhcCk7CiAgICB9LAogICAgcmVnaXN0ZXJGb250OiBmdW5jdGlvbihuYW1lLCBzcmMsIGZhbWlseSkgewogICAgICB0aGlzLl9yZWdpc3RlcmVkRm9udHNbbmFtZV0gPSB7CiAgICAgICAgc3JjOiBzcmMsCiAgICAgICAgZmFtaWx5OiBmYW1pbHkKICAgICAgfTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CiAgfTsKCn0pLmNhbGwodGhpcyk7CgoKLyoqKi8gfSksCi8qIDE2NyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Ci8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihCdWZmZXIsIHByb2Nlc3MpIHsKCmZ1bmN0aW9uIF9pbnRlcm9wRGVmYXVsdCAoZXgpIHsgcmV0dXJuIChleCAmJiAodHlwZW9mIGV4ID09PSAnb2JqZWN0JykgJiYgJ2RlZmF1bHQnIGluIGV4KSA/IGV4WydkZWZhdWx0J10gOiBleDsgfQoKdmFyIHIgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygxNjgpKTsKdmFyIF9PYmplY3QkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMTk3KSk7CnZhciBfZ2V0SXRlcmF0b3IgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXyg2MCkpOwp2YXIgX09iamVjdCRmcmVlemUgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyMDkpKTsKdmFyIF9PYmplY3Qka2V5cyA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDIxMikpOwp2YXIgX3R5cGVvZiA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KSk7CnZhciBfT2JqZWN0JGRlZmluZVByb3BlcnR5ID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oNzQpKTsKdmFyIF9jbGFzc0NhbGxDaGVjayA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNikpOwp2YXIgX2NyZWF0ZUNsYXNzID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMTA3KSk7CnZhciBfTWFwID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMjI1KSk7CnZhciBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDIzNikpOwp2YXIgX2luaGVyaXRzID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMjM3KSk7CnZhciByZXN0cnVjdHVyZV9zcmNfdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTsKdmFyIF9PYmplY3QkZGVmaW5lUHJvcGVydGllcyA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDI0NSkpOwp2YXIgaXNFcXVhbCA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDI0OCkpOwp2YXIgX09iamVjdCRhc3NpZ24gPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNTEpKTsKdmFyIF9TdHJpbmckZnJvbUNvZGVQb2ludCA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDI1NSkpOwp2YXIgX0FycmF5JGZyb20gPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNTgpKTsKdmFyIF9TZXQgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNjMpKTsKdmFyIHVuaWNvZGUgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNjkpKTsKdmFyIFVuaWNvZGVUcmllID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oNDMpKTsKdmFyIFN0YXRlTWFjaGluZSA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDI3MSkpOwp2YXIgX051bWJlciRFUFNJTE9OID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMjgwKSk7CnZhciBjbG9uZURlZXAgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyODMpKTsKdmFyIGluZmxhdGUgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXyg3OSkpOwp2YXIgYnJvdGxpID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMjg0KSk7CgoKCnZhciBmb250a2l0ID0ge307CmZvbnRraXQubG9nRXJyb3JzID0gZmFsc2U7Cgp2YXIgZm9ybWF0cyA9IFtdOwpmb250a2l0LnJlZ2lzdGVyRm9ybWF0ID0gZnVuY3Rpb24gKGZvcm1hdCkgewogIGZvcm1hdHMucHVzaChmb3JtYXQpOwp9OwoKZm9udGtpdC5vcGVuU3luYyA9IGZ1bmN0aW9uIChmaWxlbmFtZSwgcG9zdHNjcmlwdE5hbWUpIHsKICB2YXIgYnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KS5yZWFkRmlsZVN5bmMoZmlsZW5hbWUpOwogIHJldHVybiBmb250a2l0LmNyZWF0ZShidWZmZXIsIHBvc3RzY3JpcHROYW1lKTsKfTsKCmZvbnRraXQub3BlbiA9IGZ1bmN0aW9uIChmaWxlbmFtZSwgcG9zdHNjcmlwdE5hbWUsIGNhbGxiYWNrKSB7CiAgaWYgKHR5cGVvZiBwb3N0c2NyaXB0TmFtZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgY2FsbGJhY2sgPSBwb3N0c2NyaXB0TmFtZTsKICAgIHBvc3RzY3JpcHROYW1lID0gbnVsbDsKICB9CgogIF9fd2VicGFja19yZXF1aXJlX18oOCkucmVhZEZpbGUoZmlsZW5hbWUsIGZ1bmN0aW9uIChlcnIsIGJ1ZmZlcikgewogICAgaWYgKGVycikgewogICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTsKICAgIH0KCiAgICB0cnkgewogICAgICB2YXIgZm9udCA9IGZvbnRraXQuY3JlYXRlKGJ1ZmZlciwgcG9zdHNjcmlwdE5hbWUpOwogICAgfSBjYXRjaCAoZSkgewogICAgICByZXR1cm4gY2FsbGJhY2soZSk7CiAgICB9CgogICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGZvbnQpOwogIH0pOwoKICByZXR1cm47Cn07Cgpmb250a2l0LmNyZWF0ZSA9IGZ1bmN0aW9uIChidWZmZXIsIHBvc3RzY3JpcHROYW1lKSB7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb3JtYXRzLmxlbmd0aDsgaSsrKSB7CiAgICB2YXIgZm9ybWF0ID0gZm9ybWF0c1tpXTsKICAgIGlmIChmb3JtYXQucHJvYmUoYnVmZmVyKSkgewogICAgICB2YXIgZm9udCA9IG5ldyBmb3JtYXQobmV3IHIuRGVjb2RlU3RyZWFtKGJ1ZmZlcikpOwogICAgICBpZiAocG9zdHNjcmlwdE5hbWUpIHsKICAgICAgICByZXR1cm4gZm9udC5nZXRGb250KHBvc3RzY3JpcHROYW1lKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGZvbnQ7CiAgICB9CiAgfQoKICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZm9udCBmb3JtYXQnKTsKfTsKCi8qKgogKiBUaGlzIGRlY29yYXRvciBjYWNoZXMgdGhlIHJlc3VsdHMgb2YgYSBnZXR0ZXIgb3IgbWV0aG9kIHN1Y2ggdGhhdAogKiB0aGUgcmVzdWx0cyBhcmUgbGF6aWx5IGNvbXB1dGVkIG9uY2UsIGFuZCB0aGVuIGNhY2hlZC4KICogQHByaXZhdGUKICovCmZ1bmN0aW9uIGNhY2hlKHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKSB7CiAgaWYgKGRlc2NyaXB0b3IuZ2V0KSB7CiAgICB2YXIgZ2V0ID0gZGVzY3JpcHRvci5nZXQ7CiAgICBkZXNjcmlwdG9yLmdldCA9IGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIHZhbHVlID0gZ2V0LmNhbGwodGhpcyk7CiAgICAgIF9PYmplY3QkZGVmaW5lUHJvcGVydHkodGhpcywga2V5LCB7IHZhbHVlOiB2YWx1ZSB9KTsKICAgICAgcmV0dXJuIHZhbHVlOwogICAgfTsKICB9IGVsc2UgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLnZhbHVlID09PSAnZnVuY3Rpb24nKSB7CiAgICB2YXIgZm4gPSBkZXNjcmlwdG9yLnZhbHVlOwoKICAgIHJldHVybiB7CiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICAgIHZhciBjYWNoZSA9IG5ldyBfTWFwKCk7CiAgICAgICAgZnVuY3Rpb24gbWVtb2l6ZWQoKSB7CiAgICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykgewogICAgICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBrZXkgPSBhcmdzLmxlbmd0aCA+IDAgPyBhcmdzWzBdIDogJ3ZhbHVlJzsKICAgICAgICAgIGlmIChjYWNoZS5oYXMoa2V5KSkgewogICAgICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIHJlc3VsdCA9IGZuLmFwcGx5KHRoaXMsIGFyZ3MpOwogICAgICAgICAgY2FjaGUuc2V0KGtleSwgcmVzdWx0KTsKICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgfTsKCiAgICAgICAgX09iamVjdCRkZWZpbmVQcm9wZXJ0eSh0aGlzLCBrZXksIHsgdmFsdWU6IG1lbW9pemVkIH0pOwogICAgICAgIHJldHVybiBtZW1vaXplZDsKICAgICAgfQogICAgfTsKICB9Cn0KCnZhciBTdWJIZWFkZXIgPSBuZXcgci5TdHJ1Y3QoewogIGZpcnN0Q29kZTogci51aW50MTYsCiAgZW50cnlDb3VudDogci51aW50MTYsCiAgaWREZWx0YTogci5pbnQxNiwKICBpZFJhbmdlT2Zmc2V0OiByLnVpbnQxNgp9KTsKCnZhciBDbWFwR3JvdXAgPSBuZXcgci5TdHJ1Y3QoewogIHN0YXJ0Q2hhckNvZGU6IHIudWludDMyLAogIGVuZENoYXJDb2RlOiByLnVpbnQzMiwKICBnbHlwaElEOiByLnVpbnQzMgp9KTsKCnZhciBVbmljb2RlVmFsdWVSYW5nZSA9IG5ldyByLlN0cnVjdCh7CiAgc3RhcnRVbmljb2RlVmFsdWU6IHIudWludDI0LAogIGFkZGl0aW9uYWxDb3VudDogci51aW50OAp9KTsKCnZhciBVVlNNYXBwaW5nID0gbmV3IHIuU3RydWN0KHsKICB1bmljb2RlVmFsdWU6IHIudWludDI0LAogIGdseXBoSUQ6IHIudWludDE2Cn0pOwoKdmFyIERlZmF1bHRVVlMgPSBuZXcgci5BcnJheShVbmljb2RlVmFsdWVSYW5nZSwgci51aW50MzIpOwp2YXIgTm9uRGVmYXVsdFVWUyA9IG5ldyByLkFycmF5KFVWU01hcHBpbmcsIHIudWludDMyKTsKCnZhciBWYXJTZWxlY3RvclJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgdmFyU2VsZWN0b3I6IHIudWludDI0LAogIGRlZmF1bHRVVlM6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIERlZmF1bHRVVlMsIHsgdHlwZTogJ3BhcmVudCcgfSksCiAgbm9uRGVmYXVsdFVWUzogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgTm9uRGVmYXVsdFVWUywgeyB0eXBlOiAncGFyZW50JyB9KQp9KTsKCnZhciBDbWFwU3VidGFibGUgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3Qoci51aW50MTYsIHsKICAwOiB7IC8vIEJ5dGUgZW5jb2RpbmcKICAgIGxlbmd0aDogci51aW50MTYsIC8vIFRvdGFsIHRhYmxlIGxlbmd0aCBpbiBieXRlcyAoc2V0IHRvIDI2MiBmb3IgZm9ybWF0IDApCiAgICBsYW5ndWFnZTogci51aW50MTYsIC8vIExhbmd1YWdlIGNvZGUgZm9yIHRoaXMgZW5jb2Rpbmcgc3VidGFibGUsIG9yIHplcm8gaWYgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQKICAgIGNvZGVNYXA6IG5ldyByLkxhenlBcnJheShyLnVpbnQ4LCAyNTYpCiAgfSwKCiAgMjogeyAvLyBIaWdoLWJ5dGUgbWFwcGluZyAoQ0pLKQogICAgbGVuZ3RoOiByLnVpbnQxNiwKICAgIGxhbmd1YWdlOiByLnVpbnQxNiwKICAgIHN1YkhlYWRlcktleXM6IG5ldyByLkFycmF5KHIudWludDE2LCAyNTYpLAogICAgc3ViSGVhZGVyQ291bnQ6IGZ1bmN0aW9uIHN1YkhlYWRlckNvdW50KHQpIHsKICAgICAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KE1hdGgsIHQuc3ViSGVhZGVyS2V5cyk7CiAgICB9LAogICAgc3ViSGVhZGVyczogbmV3IHIuTGF6eUFycmF5KFN1YkhlYWRlciwgJ3N1YkhlYWRlckNvdW50JyksCiAgICBnbHlwaEluZGV4QXJyYXk6IG5ldyByLkxhenlBcnJheShyLnVpbnQxNiwgJ3N1YkhlYWRlckNvdW50JykKICB9LAoKICA0OiB7IC8vIFNlZ21lbnQgbWFwcGluZyB0byBkZWx0YSB2YWx1ZXMKICAgIGxlbmd0aDogci51aW50MTYsIC8vIFRvdGFsIHRhYmxlIGxlbmd0aCBpbiBieXRlcwogICAgbGFuZ3VhZ2U6IHIudWludDE2LCAvLyBMYW5ndWFnZSBjb2RlCiAgICBzZWdDb3VudFgyOiByLnVpbnQxNiwKICAgIHNlZ0NvdW50OiBmdW5jdGlvbiBzZWdDb3VudCh0KSB7CiAgICAgIHJldHVybiB0LnNlZ0NvdW50WDIgPj4gMTsKICAgIH0sCiAgICBzZWFyY2hSYW5nZTogci51aW50MTYsCiAgICBlbnRyeVNlbGVjdG9yOiByLnVpbnQxNiwKICAgIHJhbmdlU2hpZnQ6IHIudWludDE2LAogICAgZW5kQ29kZTogbmV3IHIuTGF6eUFycmF5KHIudWludDE2LCAnc2VnQ291bnQnKSwKICAgIHJlc2VydmVkUGFkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksIC8vIFRoaXMgdmFsdWUgc2hvdWxkIGJlIHplcm8KICAgIHN0YXJ0Q29kZTogbmV3IHIuTGF6eUFycmF5KHIudWludDE2LCAnc2VnQ291bnQnKSwKICAgIGlkRGVsdGE6IG5ldyByLkxhenlBcnJheShyLmludDE2LCAnc2VnQ291bnQnKSwKICAgIGlkUmFuZ2VPZmZzZXQ6IG5ldyByLkxhenlBcnJheShyLnVpbnQxNiwgJ3NlZ0NvdW50JyksCiAgICBnbHlwaEluZGV4QXJyYXk6IG5ldyByLkxhenlBcnJheShyLnVpbnQxNiwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuICh0Lmxlbmd0aCAtIHQuX2N1cnJlbnRPZmZzZXQpIC8gMjsKICAgIH0pCiAgfSwKCiAgNjogeyAvLyBUcmltbWVkIHRhYmxlCiAgICBsZW5ndGg6IHIudWludDE2LAogICAgbGFuZ3VhZ2U6IHIudWludDE2LAogICAgZmlyc3RDb2RlOiByLnVpbnQxNiwKICAgIGVudHJ5Q291bnQ6IHIudWludDE2LAogICAgZ2x5cGhJbmRpY2VzOiBuZXcgci5MYXp5QXJyYXkoci51aW50MTYsICdlbnRyeUNvdW50JykKICB9LAoKICA4OiB7IC8vIG1peGVkIDE2LWJpdCBhbmQgMzItYml0IGNvdmVyYWdlCiAgICByZXNlcnZlZDogbmV3IHIuUmVzZXJ2ZWQoci51aW50MTYpLAogICAgbGVuZ3RoOiByLnVpbnQzMiwKICAgIGxhbmd1YWdlOiByLnVpbnQxNiwKICAgIGlzMzI6IG5ldyByLkxhenlBcnJheShyLnVpbnQ4LCA4MTkyKSwKICAgIG5Hcm91cHM6IHIudWludDMyLAogICAgZ3JvdXBzOiBuZXcgci5MYXp5QXJyYXkoQ21hcEdyb3VwLCAnbkdyb3VwcycpCiAgfSwKCiAgMTA6IHsgLy8gVHJpbW1lZCBBcnJheQogICAgcmVzZXJ2ZWQ6IG5ldyByLlJlc2VydmVkKHIudWludDE2KSwKICAgIGxlbmd0aDogci51aW50MzIsCiAgICBsYW5ndWFnZTogci51aW50MzIsCiAgICBmaXJzdENvZGU6IHIudWludDMyLAogICAgZW50cnlDb3VudDogci51aW50MzIsCiAgICBnbHlwaEluZGljZXM6IG5ldyByLkxhenlBcnJheShyLnVpbnQxNiwgJ251bUNoYXJzJykKICB9LAoKICAxMjogeyAvLyBTZWdtZW50ZWQgY292ZXJhZ2UKICAgIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksCiAgICBsZW5ndGg6IHIudWludDMyLAogICAgbGFuZ3VhZ2U6IHIudWludDMyLAogICAgbkdyb3Vwczogci51aW50MzIsCiAgICBncm91cHM6IG5ldyByLkxhenlBcnJheShDbWFwR3JvdXAsICduR3JvdXBzJykKICB9LAoKICAxMzogeyAvLyBNYW55LXRvLW9uZSByYW5nZSBtYXBwaW5ncyAoc2FtZSBhcyAxMiBleGNlcHQgZm9yIGdyb3VwLnN0YXJ0R2x5cGhJRCkKICAgIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksCiAgICBsZW5ndGg6IHIudWludDMyLAogICAgbGFuZ3VhZ2U6IHIudWludDMyLAogICAgbkdyb3Vwczogci51aW50MzIsCiAgICBncm91cHM6IG5ldyByLkxhenlBcnJheShDbWFwR3JvdXAsICduR3JvdXBzJykKICB9LAoKICAxNDogeyAvLyBVbmljb2RlIFZhcmlhdGlvbiBTZXF1ZW5jZXMKICAgIGxlbmd0aDogci51aW50MzIsCiAgICBudW1SZWNvcmRzOiByLnVpbnQzMiwKICAgIHZhclNlbGVjdG9yczogbmV3IHIuTGF6eUFycmF5KFZhclNlbGVjdG9yUmVjb3JkLCAnbnVtUmVjb3JkcycpCiAgfQp9KTsKCnZhciBDbWFwRW50cnkgPSBuZXcgci5TdHJ1Y3QoewogIHBsYXRmb3JtSUQ6IHIudWludDE2LCAvLyBQbGF0Zm9ybSBpZGVudGlmaWVyCiAgZW5jb2RpbmdJRDogci51aW50MTYsIC8vIFBsYXRmb3JtLXNwZWNpZmljIGVuY29kaW5nIGlkZW50aWZpZXIKICB0YWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgQ21hcFN1YnRhYmxlLCB7IHR5cGU6ICdwYXJlbnQnLCBsYXp5OiB0cnVlIH0pCn0pOwoKLy8gY2hhcmFjdGVyIHRvIGdseXBoIG1hcHBpbmcKdmFyIGNtYXAgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIudWludDE2LAogIG51bVN1YnRhYmxlczogci51aW50MTYsCiAgdGFibGVzOiBuZXcgci5BcnJheShDbWFwRW50cnksICdudW1TdWJ0YWJsZXMnKQp9KTsKCi8vIGZvbnQgaGVhZGVyCnZhciBoZWFkID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLmludDMyLCAvLyAweDAwMDEwMDAwICh2ZXJzaW9uIDEuMCkKICByZXZpc2lvbjogci5pbnQzMiwgLy8gc2V0IGJ5IGZvbnQgbWFudWZhY3R1cmVyCiAgY2hlY2tTdW1BZGp1c3RtZW50OiByLnVpbnQzMiwKICBtYWdpY051bWJlcjogci51aW50MzIsIC8vIHNldCB0byAweDVGMEYzQ0Y1CiAgZmxhZ3M6IHIudWludDE2LAogIHVuaXRzUGVyRW06IHIudWludDE2LCAvLyByYW5nZSBmcm9tIDY0IHRvIDE2Mzg0CiAgY3JlYXRlZDogbmV3IHIuQXJyYXkoci5pbnQzMiwgMiksCiAgbW9kaWZpZWQ6IG5ldyByLkFycmF5KHIuaW50MzIsIDIpLAogIHhNaW46IHIuaW50MTYsIC8vIGZvciBhbGwgZ2x5cGggYm91bmRpbmcgYm94ZXMKICB5TWluOiByLmludDE2LCAvLyBmb3IgYWxsIGdseXBoIGJvdW5kaW5nIGJveGVzCiAgeE1heDogci5pbnQxNiwgLy8gZm9yIGFsbCBnbHlwaCBib3VuZGluZyBib3hlcwogIHlNYXg6IHIuaW50MTYsIC8vIGZvciBhbGwgZ2x5cGggYm91bmRpbmcgYm94ZXMKICBtYWNTdHlsZTogbmV3IHIuQml0ZmllbGQoci51aW50MTYsIFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ291dGxpbmUnLCAnc2hhZG93JywgJ2NvbmRlbnNlZCcsICdleHRlbmRlZCddKSwKICBsb3dlc3RSZWNQUEVNOiByLnVpbnQxNiwgLy8gc21hbGxlc3QgcmVhZGFibGUgc2l6ZSBpbiBwaXhlbHMKICBmb250RGlyZWN0aW9uSGludDogci5pbnQxNiwKICBpbmRleFRvTG9jRm9ybWF0OiByLmludDE2LCAvLyAwIGZvciBzaG9ydCBvZmZzZXRzLCAxIGZvciBsb25nCiAgZ2x5cGhEYXRhRm9ybWF0OiByLmludDE2IC8vIDAgZm9yIGN1cnJlbnQgZm9ybWF0Cn0pOwoKLy8gaG9yaXpvbnRhbCBoZWFkZXIKdmFyIGhoZWEgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIuaW50MzIsCiAgYXNjZW50OiByLmludDE2LCAvLyBEaXN0YW5jZSBmcm9tIGJhc2VsaW5lIG9mIGhpZ2hlc3QgYXNjZW5kZXIKICBkZXNjZW50OiByLmludDE2LCAvLyBEaXN0YW5jZSBmcm9tIGJhc2VsaW5lIG9mIGxvd2VzdCBkZXNjZW5kZXIKICBsaW5lR2FwOiByLmludDE2LCAvLyBUeXBvZ3JhcGhpYyBsaW5lIGdhcAogIGFkdmFuY2VXaWR0aE1heDogci51aW50MTYsIC8vIE1heGltdW0gYWR2YW5jZSB3aWR0aCB2YWx1ZSBpbiAnaG10eCcgdGFibGUKICBtaW5MZWZ0U2lkZUJlYXJpbmc6IHIuaW50MTYsIC8vIE1heGltdW0gYWR2YW5jZSB3aWR0aCB2YWx1ZSBpbiAnaG10eCcgdGFibGUKICBtaW5SaWdodFNpZGVCZWFyaW5nOiByLmludDE2LCAvLyBNaW5pbXVtIHJpZ2h0IHNpZGViZWFyaW5nIHZhbHVlCiAgeE1heEV4dGVudDogci5pbnQxNiwKICBjYXJldFNsb3BlUmlzZTogci5pbnQxNiwgLy8gVXNlZCB0byBjYWxjdWxhdGUgdGhlIHNsb3BlIG9mIHRoZSBjdXJzb3IgKHJpc2UvcnVuKTsgMSBmb3IgdmVydGljYWwKICBjYXJldFNsb3BlUnVuOiByLmludDE2LCAvLyAwIGZvciB2ZXJ0aWNhbAogIGNhcmV0T2Zmc2V0OiByLmludDE2LCAvLyBTZXQgdG8gMCBmb3Igbm9uLXNsYW50ZWQgZm9udHMKICByZXNlcnZlZDogbmV3IHIuUmVzZXJ2ZWQoci5pbnQxNiwgNCksCiAgbWV0cmljRGF0YUZvcm1hdDogci5pbnQxNiwgLy8gMCBmb3IgY3VycmVudCBmb3JtYXQKICBudW1iZXJPZk1ldHJpY3M6IHIudWludDE2IC8vIE51bWJlciBvZiBhZHZhbmNlIHdpZHRocyBpbiAnaG10eCcgdGFibGUKfSk7Cgp2YXIgSG10eEVudHJ5ID0gbmV3IHIuU3RydWN0KHsKICBhZHZhbmNlOiByLnVpbnQxNiwKICBiZWFyaW5nOiByLmludDE2Cn0pOwoKdmFyIGhtdHggPSBuZXcgci5TdHJ1Y3QoewogIG1ldHJpY3M6IG5ldyByLkxhenlBcnJheShIbXR4RW50cnksIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5wYXJlbnQuaGhlYS5udW1iZXJPZk1ldHJpY3M7CiAgfSksCiAgYmVhcmluZ3M6IG5ldyByLkxhenlBcnJheShyLmludDE2LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQucGFyZW50Lm1heHAubnVtR2x5cGhzIC0gdC5wYXJlbnQuaGhlYS5udW1iZXJPZk1ldHJpY3M7CiAgfSkKfSk7CgovLyBtYXhpdW11bSBwcm9maWxlCnZhciBtYXhwID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLmludDMyLAogIG51bUdseXBoczogci51aW50MTYsIC8vIFRoZSBudW1iZXIgb2YgZ2x5cGhzIGluIHRoZSBmb250CiAgbWF4UG9pbnRzOiByLnVpbnQxNiwgLy8gTWF4aW11bSBwb2ludHMgaW4gYSBub24tY29tcG9zaXRlIGdseXBoCiAgbWF4Q29udG91cnM6IHIudWludDE2LCAvLyBNYXhpbXVtIGNvbnRvdXJzIGluIGEgbm9uLWNvbXBvc2l0ZSBnbHlwaAogIG1heENvbXBvbmVudFBvaW50czogci51aW50MTYsIC8vIE1heGltdW0gcG9pbnRzIGluIGEgY29tcG9zaXRlIGdseXBoCiAgbWF4Q29tcG9uZW50Q29udG91cnM6IHIudWludDE2LCAvLyBNYXhpbXVtIGNvbnRvdXJzIGluIGEgY29tcG9zaXRlIGdseXBoCiAgbWF4Wm9uZXM6IHIudWludDE2LCAvLyAxIGlmIGluc3RydWN0aW9ucyBkbyBub3QgdXNlIHRoZSB0d2lsaWdodCB6b25lLCAyIG90aGVyd2lzZQogIG1heFR3aWxpZ2h0UG9pbnRzOiByLnVpbnQxNiwgLy8gTWF4aW11bSBwb2ludHMgdXNlZCBpbiBaMAogIG1heFN0b3JhZ2U6IHIudWludDE2LCAvLyBOdW1iZXIgb2YgU3RvcmFnZSBBcmVhIGxvY2F0aW9ucwogIG1heEZ1bmN0aW9uRGVmczogci51aW50MTYsIC8vIE51bWJlciBvZiBGREVGcwogIG1heEluc3RydWN0aW9uRGVmczogci51aW50MTYsIC8vIE51bWJlciBvZiBJREVGcwogIG1heFN0YWNrRWxlbWVudHM6IHIudWludDE2LCAvLyBNYXhpbXVtIHN0YWNrIGRlcHRoCiAgbWF4U2l6ZU9mSW5zdHJ1Y3Rpb25zOiByLnVpbnQxNiwgLy8gTWF4aW11bSBieXRlIGNvdW50IGZvciBnbHlwaCBpbnN0cnVjdGlvbnMKICBtYXhDb21wb25lbnRFbGVtZW50czogci51aW50MTYsIC8vIE1heGltdW0gbnVtYmVyIG9mIGNvbXBvbmVudHMgcmVmZXJlbmNlZCBhdCDigJx0b3AgbGV2ZWzigJ0gZm9yIGFueSBjb21wb3NpdGUgZ2x5cGgKICBtYXhDb21wb25lbnREZXB0aDogci51aW50MTYgLy8gTWF4aW11bSBsZXZlbHMgb2YgcmVjdXJzaW9uOyAxIGZvciBzaW1wbGUgY29tcG9uZW50cwp9KTsKCi8qKgogKiBHZXRzIGFuIGVuY29kaW5nIG5hbWUgZnJvbSBwbGF0Zm9ybSwgZW5jb2RpbmcsIGFuZCBsYW5ndWFnZSBpZHMuCiAqIFJldHVybmVkIGVuY29kaW5nIG5hbWVzIGNhbiBiZSB1c2VkIGluIGljb252LWxpdGUgdG8gZGVjb2RlIHRleHQuCiAqLwpmdW5jdGlvbiBnZXRFbmNvZGluZyhwbGF0Zm9ybUlELCBlbmNvZGluZ0lEKSB7CiAgdmFyIGxhbmd1YWdlSUQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDA7CgogIGlmIChwbGF0Zm9ybUlEID09PSAxICYmIE1BQ19MQU5HVUFHRV9FTkNPRElOR1NbbGFuZ3VhZ2VJRF0pIHsKICAgIHJldHVybiBNQUNfTEFOR1VBR0VfRU5DT0RJTkdTW2xhbmd1YWdlSURdOwogIH0KCiAgcmV0dXJuIEVOQ09ESU5HU1twbGF0Zm9ybUlEXVtlbmNvZGluZ0lEXTsKfQoKLy8gTWFwIG9mIHBsYXRmb3JtIGlkcyB0byBlbmNvZGluZyBpZHMuCnZhciBFTkNPRElOR1MgPSBbCi8vIHVuaWNvZGUKWyd1dGYxNmJlJywgJ3V0ZjE2YmUnLCAndXRmMTZiZScsICd1dGYxNmJlJywgJ3V0ZjE2YmUnLCAndXRmMTZiZSddLAoKLy8gbWFjaW50b3NoCi8vIE1hcHBpbmdzIGF2YWlsYWJsZSBhdCBodHRwOi8vdW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvQVBQTEUvCi8vIDAJUm9tYW4gICAgICAgICAgICAgICAgIDE3CU1hbGF5YWxhbQovLyAxCUphcGFuZXNlCSAgICAgICAgICAgIDE4CVNpbmhhbGVzZQovLyAyCVRyYWRpdGlvbmFsIENoaW5lc2UJICAxOQlCdXJtZXNlCi8vIDMJS29yZWFuCSAgICAgICAgICAgICAgMjAJS2htZXIKLy8gNAlBcmFiaWMJICAgICAgICAgICAgICAyMQlUaGFpCi8vIDUJSGVicmV3CSAgICAgICAgICAgICAgMjIJTGFvdGlhbgovLyA2CUdyZWVrCSAgICAgICAgICAgICAgICAyMwlHZW9yZ2lhbgovLyA3CVJ1c3NpYW4JICAgICAgICAgICAgICAyNAlBcm1lbmlhbgovLyA4CVJTeW1ib2wJICAgICAgICAgICAgICAyNQlTaW1wbGlmaWVkIENoaW5lc2UKLy8gOQlEZXZhbmFnYXJpCSAgICAgICAgICAyNglUaWJldGFuCi8vIDEwCUd1cm11a2hpCSAgICAgICAgICAgIDI3CU1vbmdvbGlhbgovLyAxMQlHdWphcmF0aQkgICAgICAgICAgICAyOAlHZWV6Ci8vIDEyCU9yaXlhCSAgICAgICAgICAgICAgICAyOQlTbGF2aWMKLy8gMTMJQmVuZ2FsaQkgICAgICAgICAgICAgIDMwCVZpZXRuYW1lc2UKLy8gMTQJVGFtaWwJICAgICAgICAgICAgICAgIDMxCVNpbmRoaQovLyAxNQlUZWx1Z3UJICAgICAgICAgICAgICAzMgkoVW5pbnRlcnByZXRlZCkKLy8gMTYJS2FubmFkYQpbJ21hY3JvbWFuJywgJ3NoaWZ0LWppcycsICdiaWc1JywgJ2V1Yy1rcicsICdpc28tODg1OS02JywgJ2lzby04ODU5LTgnLCAnbWFjZ3JlZWsnLCAnbWFjY3lyaWxsaWMnLCAnc3ltYm9sJywgJ0RldmFuYWdhcmknLCAnR3VybXVraGknLCAnR3VqYXJhdGknLCAnT3JpeWEnLCAnQmVuZ2FsaScsICdUYW1pbCcsICdUZWx1Z3UnLCAnS2FubmFkYScsICdNYWxheWFsYW0nLCAnU2luaGFsZXNlJywgJ0J1cm1lc2UnLCAnS2htZXInLCAnbWFjdGhhaScsICdMYW90aWFuJywgJ0dlb3JnaWFuJywgJ0FybWVuaWFuJywgJ2diLTIzMTItODAnLCAnVGliZXRhbicsICdNb25nb2xpYW4nLCAnR2VleicsICdtYWNjZW50ZXVybycsICdWaWV0bmFtZXNlJywgJ1NpbmRoaSddLAoKLy8gSVNPIChkZXByZWNhdGVkKQpbJ2FzY2lpJ10sCgovLyB3aW5kb3dzCi8vIERvY3MgaGVyZTogaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3N5c3RlbS50ZXh0LmVuY29kaW5nKHY9dnMuMTEwKS5hc3B4Clsnc3ltYm9sJywgJ3V0ZjE2YmUnLCAnc2hpZnQtamlzJywgJ2diMTgwMzAnLCAnYmlnNScsICd3YW5zdW5nJywgJ2pvaGFiJywgbnVsbCwgbnVsbCwgbnVsbCwgJ3V0ZjE2YmUnXV07CgovLyBPdmVycmlkZXMgZm9yIE1hYyBzY3JpcHRzIGJ5IGxhbmd1YWdlIGlkLgovLyBTZWUgaHR0cDovL3VuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL0FQUExFL1JlYWRtZS50eHQKdmFyIE1BQ19MQU5HVUFHRV9FTkNPRElOR1MgPSB7CiAgMTU6ICdtYWNpY2VsYW5kJywKICAxNzogJ21hY3R1cmtpc2gnLAogIDE4OiAnbWFjY3JvYXRpYW4nLAogIDI0OiAnbWFjY2VudGV1cm8nLAogIDI1OiAnbWFjY2VudGV1cm8nLAogIDI2OiAnbWFjY2VudGV1cm8nLAogIDI3OiAnbWFjY2VudGV1cm8nLAogIDI4OiAnbWFjY2VudGV1cm8nLAogIDMwOiAnbWFjaWNlbGFuZCcsCiAgMzc6ICdtYWNyb21hbmlhJywKICAzODogJ21hY2NlbnRldXJvJywKICAzOTogJ21hY2NlbnRldXJvJywKICA0MDogJ21hY2NlbnRldXJvJywKICAxNDM6ICdtYWNpbnVpdCcsIC8vIFVuc3VwcG9ydGVkIGJ5IGljb252LWxpdGUKICAxNDY6ICdtYWNnYWVsaWMnIC8vIFVuc3VwcG9ydGVkIGJ5IGljb252LWxpdGUKfTsKCi8vIE1hcCBvZiBwbGF0Zm9ybSBpZHMgdG8gQkNQLTQ3IGxhbmd1YWdlIGNvZGVzLgp2YXIgTEFOR1VBR0VTID0gWwovLyB1bmljb2RlCltdLCB7IC8vIG1hY2ludG9zaAogIDA6ICdlbicsIDMwOiAnZm8nLCA2MDogJ2tzJywgOTA6ICdydycsCiAgMTogJ2ZyJywgMzE6ICdmYScsIDYxOiAna3UnLCA5MTogJ3JuJywKICAyOiAnZGUnLCAzMjogJ3J1JywgNjI6ICdzZCcsIDkyOiAnbnknLAogIDM6ICdpdCcsIDMzOiAnemgnLCA2MzogJ2JvJywgOTM6ICdtZycsCiAgNDogJ25sJywgMzQ6ICdubC1CRScsIDY0OiAnbmUnLCA5NDogJ2VvJywKICA1OiAnc3YnLCAzNTogJ2dhJywgNjU6ICdzYScsIDEyODogJ2N5JywKICA2OiAnZXMnLCAzNjogJ3NxJywgNjY6ICdtcicsIDEyOTogJ2V1JywKICA3OiAnZGEnLCAzNzogJ3JvJywgNjc6ICdibicsIDEzMDogJ2NhJywKICA4OiAncHQnLCAzODogJ2N6JywgNjg6ICdhcycsIDEzMTogJ2xhJywKICA5OiAnbm8nLCAzOTogJ3NrJywgNjk6ICdndScsIDEzMjogJ3F1JywKICAxMDogJ2hlJywgNDA6ICdzaScsIDcwOiAncGEnLCAxMzM6ICdnbicsCiAgMTE6ICdqYScsIDQxOiAneWknLCA3MTogJ29yJywgMTM0OiAnYXknLAogIDEyOiAnYXInLCA0MjogJ3NyJywgNzI6ICdtbCcsIDEzNTogJ3R0JywKICAxMzogJ2ZpJywgNDM6ICdtaycsIDczOiAna24nLCAxMzY6ICd1ZycsCiAgMTQ6ICdlbCcsIDQ0OiAnYmcnLCA3NDogJ3RhJywgMTM3OiAnZHonLAogIDE1OiAnaXMnLCA0NTogJ3VrJywgNzU6ICd0ZScsIDEzODogJ2p2JywKICAxNjogJ210JywgNDY6ICdiZScsIDc2OiAnc2knLCAxMzk6ICdzdScsCiAgMTc6ICd0cicsIDQ3OiAndXonLCA3NzogJ215JywgMTQwOiAnZ2wnLAogIDE4OiAnaHInLCA0ODogJ2trJywgNzg6ICdrbScsIDE0MTogJ2FmJywKICAxOTogJ3poLUhhbnQnLCA0OTogJ2F6LUN5cmwnLCA3OTogJ2xvJywgMTQyOiAnYnInLAogIDIwOiAndXInLCA1MDogJ2F6LUFyYWInLCA4MDogJ3ZpJywgMTQzOiAnaXUnLAogIDIxOiAnaGknLCA1MTogJ2h5JywgODE6ICdpZCcsIDE0NDogJ2dkJywKICAyMjogJ3RoJywgNTI6ICdrYScsIDgyOiAndGwnLCAxNDU6ICdndicsCiAgMjM6ICdrbycsIDUzOiAnbW8nLCA4MzogJ21zJywgMTQ2OiAnZ2EnLAogIDI0OiAnbHQnLCA1NDogJ2t5JywgODQ6ICdtcy1BcmFiJywgMTQ3OiAndG8nLAogIDI1OiAncGwnLCA1NTogJ3RnJywgODU6ICdhbScsIDE0ODogJ2VsLXBvbHl0b24nLAogIDI2OiAnaHUnLCA1NjogJ3RrJywgODY6ICd0aScsIDE0OTogJ2tsJywKICAyNzogJ2VzJywgNTc6ICdtbi1DTicsIDg3OiAnb20nLCAxNTA6ICdheicsCiAgMjg6ICdsdicsIDU4OiAnbW4nLCA4ODogJ3NvJywgMTUxOiAnbm4nLAogIDI5OiAnc2UnLCA1OTogJ3BzJywgODk6ICdzdycKfSwKCi8vIElTTyAoZGVwcmVjYXRlZCkKW10sIHsgLy8gd2luZG93cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAweDA0MzY6ICdhZicsIDB4NDAwOTogJ2VuLUlOJywgMHgwNDg3OiAncncnLCAweDA0MzI6ICd0bicsCiAgMHgwNDFDOiAnc3EnLCAweDE4MDk6ICdlbi1JRScsIDB4MDQ0MTogJ3N3JywgMHgwNDVCOiAnc2knLAogIDB4MDQ4NDogJ2dzdycsIDB4MjAwOTogJ2VuLUpNJywgMHgwNDU3OiAna29rJywgMHgwNDFCOiAnc2snLAogIDB4MDQ1RTogJ2FtJywgMHg0NDA5OiAnZW4tTVknLCAweDA0MTI6ICdrbycsIDB4MDQyNDogJ3NsJywKICAweDE0MDE6ICdhci1EWicsIDB4MTQwOTogJ2VuLU5aJywgMHgwNDQwOiAna3knLCAweDJDMEE6ICdlcy1BUicsCiAgMHgzQzAxOiAnYXItQkgnLCAweDM0MDk6ICdlbi1QSCcsIDB4MDQ1NDogJ2xvJywgMHg0MDBBOiAnZXMtQk8nLAogIDB4MEMwMTogJ2FyJywgMHg0ODA5OiAnZW4tU0cnLCAweDA0MjY6ICdsdicsIDB4MzQwQTogJ2VzLUNMJywKICAweDA4MDE6ICdhci1JUScsIDB4MUMwOTogJ2VuLVpBJywgMHgwNDI3OiAnbHQnLCAweDI0MEE6ICdlcy1DTycsCiAgMHgyQzAxOiAnYXItSk8nLCAweDJDMDk6ICdlbi1UVCcsIDB4MDgyRTogJ2RzYicsIDB4MTQwQTogJ2VzLUNSJywKICAweDM0MDE6ICdhci1LVycsIDB4MDgwOTogJ2VuLUdCJywgMHgwNDZFOiAnbGInLCAweDFDMEE6ICdlcy1ETycsCiAgMHgzMDAxOiAnYXItTEInLCAweDA0MDk6ICdlbicsIDB4MDQyRjogJ21rJywgMHgzMDBBOiAnZXMtRUMnLAogIDB4MTAwMTogJ2FyLUxZJywgMHgzMDA5OiAnZW4tWlcnLCAweDA4M0U6ICdtcy1CTicsIDB4NDQwQTogJ2VzLVNWJywKICAweDE4MDE6ICdhcnknLCAweDA0MjU6ICdldCcsIDB4MDQzRTogJ21zJywgMHgxMDBBOiAnZXMtR1QnLAogIDB4MjAwMTogJ2FyLU9NJywgMHgwNDM4OiAnZm8nLCAweDA0NEM6ICdtbCcsIDB4NDgwQTogJ2VzLUhOJywKICAweDQwMDE6ICdhci1RQScsIDB4MDQ2NDogJ2ZpbCcsIDB4MDQzQTogJ210JywgMHgwODBBOiAnZXMtTVgnLAogIDB4MDQwMTogJ2FyLVNBJywgMHgwNDBCOiAnZmknLCAweDA0ODE6ICdtaScsIDB4NEMwQTogJ2VzLU5JJywKICAweDI4MDE6ICdhci1TWScsIDB4MDgwQzogJ2ZyLUJFJywgMHgwNDdBOiAnYXJuJywgMHgxODBBOiAnZXMtUEEnLAogIDB4MUMwMTogJ2FlYicsIDB4MEMwQzogJ2ZyLUNBJywgMHgwNDRFOiAnbXInLCAweDNDMEE6ICdlcy1QWScsCiAgMHgzODAxOiAnYXItQUUnLCAweDA0MEM6ICdmcicsIDB4MDQ3QzogJ21vaCcsIDB4MjgwQTogJ2VzLVBFJywKICAweDI0MDE6ICdhci1ZRScsIDB4MTQwQzogJ2ZyLUxVJywgMHgwNDUwOiAnbW4nLCAweDUwMEE6ICdlcy1QUicsCiAgMHgwNDJCOiAnaHknLCAweDE4MEM6ICdmci1NQycsIDB4MDg1MDogJ21uLUNOJywgMHgwQzBBOiAnZXMnLAogIDB4MDQ0RDogJ2FzJywgMHgxMDBDOiAnZnItQ0gnLCAweDA0NjE6ICduZScsIDB4MDQwQTogJ2VzJywKICAweDA4MkM6ICdhei1DeXJsJywgMHgwNDYyOiAnZnknLCAweDA0MTQ6ICduYicsIDB4NTQwQTogJ2VzLVVTJywKICAweDA0MkM6ICdheicsIDB4MDQ1NjogJ2dsJywgMHgwODE0OiAnbm4nLCAweDM4MEE6ICdlcy1VWScsCiAgMHgwNDZEOiAnYmEnLCAweDA0Mzc6ICdrYScsIDB4MDQ4MjogJ29jJywgMHgyMDBBOiAnZXMtVkUnLAogIDB4MDQyRDogJ2V1JywgMHgwQzA3OiAnZGUtQVQnLCAweDA0NDg6ICdvcicsIDB4MDgxRDogJ3N2LUZJJywKICAweDA0MjM6ICdiZScsIDB4MDQwNzogJ2RlJywgMHgwNDYzOiAncHMnLCAweDA0MUQ6ICdzdicsCiAgMHgwODQ1OiAnYm4nLCAweDE0MDc6ICdkZS1MSScsIDB4MDQxNTogJ3BsJywgMHgwNDVBOiAnc3lyJywKICAweDA0NDU6ICdibi1JTicsIDB4MTAwNzogJ2RlLUxVJywgMHgwNDE2OiAncHQnLCAweDA0Mjg6ICd0ZycsCiAgMHgyMDFBOiAnYnMtQ3lybCcsIDB4MDgwNzogJ2RlLUNIJywgMHgwODE2OiAncHQtUFQnLCAweDA4NUY6ICd0em0nLAogIDB4MTQxQTogJ2JzJywgMHgwNDA4OiAnZWwnLCAweDA0NDY6ICdwYScsIDB4MDQ0OTogJ3RhJywKICAweDA0N0U6ICdicicsIDB4MDQ2RjogJ2tsJywgMHgwNDZCOiAncXUtQk8nLCAweDA0NDQ6ICd0dCcsCiAgMHgwNDAyOiAnYmcnLCAweDA0NDc6ICdndScsIDB4MDg2QjogJ3F1LUVDJywgMHgwNDRBOiAndGUnLAogIDB4MDQwMzogJ2NhJywgMHgwNDY4OiAnaGEnLCAweDBDNkI6ICdxdScsIDB4MDQxRTogJ3RoJywKICAweDBDMDQ6ICd6aC1ISycsIDB4MDQwRDogJ2hlJywgMHgwNDE4OiAncm8nLCAweDA0NTE6ICdibycsCiAgMHgxNDA0OiAnemgtTU8nLCAweDA0Mzk6ICdoaScsIDB4MDQxNzogJ3JtJywgMHgwNDFGOiAndHInLAogIDB4MDgwNDogJ3poJywgMHgwNDBFOiAnaHUnLCAweDA0MTk6ICdydScsIDB4MDQ0MjogJ3RrJywKICAweDEwMDQ6ICd6aC1TRycsIDB4MDQwRjogJ2lzJywgMHgyNDNCOiAnc21uJywgMHgwNDgwOiAndWcnLAogIDB4MDQwNDogJ3poLVRXJywgMHgwNDcwOiAnaWcnLCAweDEwM0I6ICdzbWotTk8nLCAweDA0MjI6ICd1aycsCiAgMHgwNDgzOiAnY28nLCAweDA0MjE6ICdpZCcsIDB4MTQzQjogJ3NtaicsIDB4MDQyRTogJ2hzYicsCiAgMHgwNDFBOiAnaHInLCAweDA0NUQ6ICdpdScsIDB4MEMzQjogJ3NlLUZJJywgMHgwNDIwOiAndXInLAogIDB4MTAxQTogJ2hyLUJBJywgMHgwODVEOiAnaXUtTGF0bicsIDB4MDQzQjogJ3NlJywgMHgwODQzOiAndXotQ3lybCcsCiAgMHgwNDA1OiAnY3MnLCAweDA4M0M6ICdnYScsIDB4MDgzQjogJ3NlLVNFJywgMHgwNDQzOiAndXonLAogIDB4MDQwNjogJ2RhJywgMHgwNDM0OiAneGgnLCAweDIwM0I6ICdzbXMnLCAweDA0MkE6ICd2aScsCiAgMHgwNDhDOiAncHJzJywgMHgwNDM1OiAnenUnLCAweDE4M0I6ICdzbWEtTk8nLCAweDA0NTI6ICdjeScsCiAgMHgwNDY1OiAnZHYnLCAweDA0MTA6ICdpdCcsIDB4MUMzQjogJ3NtcycsIDB4MDQ4ODogJ3dvJywKICAweDA4MTM6ICdubC1CRScsIDB4MDgxMDogJ2l0LUNIJywgMHgwNDRGOiAnc2EnLCAweDA0ODU6ICdzYWgnLAogIDB4MDQxMzogJ25sJywgMHgwNDExOiAnamEnLCAweDFDMUE6ICdzci1DeXJsLUJBJywgMHgwNDc4OiAnaWknLAogIDB4MEMwOTogJ2VuLUFVJywgMHgwNDRCOiAna24nLCAweDBDMUE6ICdzcicsIDB4MDQ2QTogJ3lvJywKICAweDI4MDk6ICdlbi1CWicsIDB4MDQzRjogJ2trJywgMHgxODFBOiAnc3ItTGF0bi1CQScsCiAgMHgxMDA5OiAnZW4tQ0EnLCAweDA0NTM6ICdrbScsIDB4MDgxQTogJ3NyLUxhdG4nLAogIDB4MjQwOTogJ2VuLTAyOScsIDB4MDQ4NjogJ3F1YycsIDB4MDQ2QzogJ25zbycKfV07Cgp2YXIgTmFtZVJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgcGxhdGZvcm1JRDogci51aW50MTYsCiAgZW5jb2RpbmdJRDogci51aW50MTYsCiAgbGFuZ3VhZ2VJRDogci51aW50MTYsCiAgbmFtZUlEOiByLnVpbnQxNiwKICBsZW5ndGg6IHIudWludDE2LAogIHN0cmluZzogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgbmV3IHIuU3RyaW5nKCdsZW5ndGgnLCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIGdldEVuY29kaW5nKHQucGxhdGZvcm1JRCwgdC5lbmNvZGluZ0lELCB0Lmxhbmd1YWdlSUQpOwogIH0pLCB7IHR5cGU6ICdwYXJlbnQnLCByZWxhdGl2ZVRvOiAncGFyZW50LnN0cmluZ09mZnNldCcsIGFsbG93TnVsbDogZmFsc2UgfSkKfSk7Cgp2YXIgTGFuZ1RhZ1JlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgbGVuZ3RoOiByLnVpbnQxNiwKICB0YWc6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIG5ldyByLlN0cmluZygnbGVuZ3RoJywgJ3V0ZjE2YmUnKSwgeyB0eXBlOiAncGFyZW50JywgcmVsYXRpdmVUbzogJ3N0cmluZ09mZnNldCcgfSkKfSk7Cgp2YXIgTmFtZVRhYmxlID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgMDogewogICAgY291bnQ6IHIudWludDE2LAogICAgc3RyaW5nT2Zmc2V0OiByLnVpbnQxNiwKICAgIHJlY29yZHM6IG5ldyByLkFycmF5KE5hbWVSZWNvcmQsICdjb3VudCcpCiAgfSwKICAxOiB7CiAgICBjb3VudDogci51aW50MTYsCiAgICBzdHJpbmdPZmZzZXQ6IHIudWludDE2LAogICAgcmVjb3JkczogbmV3IHIuQXJyYXkoTmFtZVJlY29yZCwgJ2NvdW50JyksCiAgICBsYW5nVGFnQ291bnQ6IHIudWludDE2LAogICAgbGFuZ1RhZ3M6IG5ldyByLkFycmF5KExhbmdUYWdSZWNvcmQsICdsYW5nVGFnQ291bnQnKQogIH0KfSk7Cgp2YXIgTkFNRVMgPSBbJ2NvcHlyaWdodCcsICdmb250RmFtaWx5JywgJ2ZvbnRTdWJmYW1pbHknLCAndW5pcXVlU3ViZmFtaWx5JywgJ2Z1bGxOYW1lJywgJ3ZlcnNpb24nLCAncG9zdHNjcmlwdE5hbWUnLCAvLyBOb3RlOiBBIGZvbnQgbWF5IGhhdmUgb25seSBvbmUgUG9zdFNjcmlwdCBuYW1lIGFuZCB0aGF0IG5hbWUgbXVzdCBiZSBBU0NJSS4KJ3RyYWRlbWFyaycsICdtYW51ZmFjdHVyZXInLCAnZGVzaWduZXInLCAnZGVzY3JpcHRpb24nLCAndmVuZG9yVVJMJywgJ2Rlc2lnbmVyVVJMJywgJ2xpY2Vuc2UnLCAnbGljZW5zZVVSTCcsIG51bGwsIC8vIHJlc2VydmVkCidwcmVmZXJyZWRGYW1pbHknLCAncHJlZmVycmVkU3ViZmFtaWx5JywgJ2NvbXBhdGlibGVGdWxsJywgJ3NhbXBsZVRleHQnLCAncG9zdHNjcmlwdENJREZvbnROYW1lJywgJ3d3c0ZhbWlseU5hbWUnLCAnd3dzU3ViZmFtaWx5TmFtZSddOwoKTmFtZVRhYmxlLnByb2Nlc3MgPSBmdW5jdGlvbiAoc3RyZWFtKSB7CiAgdmFyIHJlY29yZHMgPSB7fTsKICBmb3IgKHZhciBfaXRlcmF0b3IgPSB0aGlzLnJlY29yZHMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgdmFyIF9yZWY7CgogICAgaWYgKF9pc0FycmF5KSB7CiAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgIH0gZWxzZSB7CiAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICBfcmVmID0gX2kudmFsdWU7CiAgICB9CgogICAgdmFyIHJlY29yZCA9IF9yZWY7CgogICAgLy8gZmluZCBvdXQgd2hhdCBsYW5ndWFnZSB0aGlzIGlzIGZvcgogICAgdmFyIGxhbmd1YWdlID0gTEFOR1VBR0VTW3JlY29yZC5wbGF0Zm9ybUlEXVtyZWNvcmQubGFuZ3VhZ2VJRF07CgogICAgaWYgKGxhbmd1YWdlID09IG51bGwgJiYgdGhpcy5sYW5nVGFncyAhPSBudWxsICYmIHJlY29yZC5sYW5ndWFnZUlEID49IDB4ODAwMCkgewogICAgICBsYW5ndWFnZSA9IHRoaXMubGFuZ1RhZ3NbcmVjb3JkLmxhbmd1YWdlSUQgLSAweDgwMDBdLnRhZzsKICAgIH0KCiAgICBpZiAobGFuZ3VhZ2UgPT0gbnVsbCkgewogICAgICBsYW5ndWFnZSA9IHJlY29yZC5wbGF0Zm9ybUlEICsgJy0nICsgcmVjb3JkLmxhbmd1YWdlSUQ7CiAgICB9CgogICAgLy8gaWYgdGhlIG5hbWVJRCBpcyA+PSAyNTYsIGl0IGlzIGEgZm9udCBmZWF0dXJlIHJlY29yZCAoQUFUKQogICAgdmFyIGtleSA9IHJlY29yZC5uYW1lSUQgPj0gMjU2ID8gJ2ZvbnRGZWF0dXJlcycgOiBOQU1FU1tyZWNvcmQubmFtZUlEXSB8fCByZWNvcmQubmFtZUlEOwogICAgaWYgKHJlY29yZHNba2V5XSA9PSBudWxsKSB7CiAgICAgIHJlY29yZHNba2V5XSA9IHt9OwogICAgfQoKICAgIHZhciBvYmogPSByZWNvcmRzW2tleV07CiAgICBpZiAocmVjb3JkLm5hbWVJRCA+PSAyNTYpIHsKICAgICAgb2JqID0gb2JqW3JlY29yZC5uYW1lSURdIHx8IChvYmpbcmVjb3JkLm5hbWVJRF0gPSB7fSk7CiAgICB9CgogICAgaWYgKHR5cGVvZiByZWNvcmQuc3RyaW5nID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygb2JqW2xhbmd1YWdlXSAhPT0gJ3N0cmluZycpIHsKICAgICAgb2JqW2xhbmd1YWdlXSA9IHJlY29yZC5zdHJpbmc7CiAgICB9CiAgfQoKICB0aGlzLnJlY29yZHMgPSByZWNvcmRzOwp9OwoKTmFtZVRhYmxlLnByZUVuY29kZSA9IGZ1bmN0aW9uICgpIHsKICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnJlY29yZHMpKSByZXR1cm47CiAgdGhpcy52ZXJzaW9uID0gMDsKCiAgdmFyIHJlY29yZHMgPSBbXTsKICBmb3IgKHZhciBrZXkgaW4gdGhpcy5yZWNvcmRzKSB7CiAgICB2YXIgdmFsID0gdGhpcy5yZWNvcmRzW2tleV07CiAgICBpZiAoa2V5ID09PSAnZm9udEZlYXR1cmVzJykgY29udGludWU7CgogICAgcmVjb3Jkcy5wdXNoKHsKICAgICAgcGxhdGZvcm1JRDogMywKICAgICAgZW5jb2RpbmdJRDogMSwKICAgICAgbGFuZ3VhZ2VJRDogMHg0MDksCiAgICAgIG5hbWVJRDogTkFNRVMuaW5kZXhPZihrZXkpLAogICAgICBsZW5ndGg6IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbC5lbiwgJ3V0ZjE2bGUnKSwKICAgICAgc3RyaW5nOiB2YWwuZW4KICAgIH0pOwoKICAgIGlmIChrZXkgPT09ICdwb3N0c2NyaXB0TmFtZScpIHsKICAgICAgcmVjb3Jkcy5wdXNoKHsKICAgICAgICBwbGF0Zm9ybUlEOiAxLAogICAgICAgIGVuY29kaW5nSUQ6IDAsCiAgICAgICAgbGFuZ3VhZ2VJRDogMCwKICAgICAgICBuYW1lSUQ6IE5BTUVTLmluZGV4T2Yoa2V5KSwKICAgICAgICBsZW5ndGg6IHZhbC5lbi5sZW5ndGgsCiAgICAgICAgc3RyaW5nOiB2YWwuZW4KICAgICAgfSk7CiAgICB9CiAgfQoKICB0aGlzLnJlY29yZHMgPSByZWNvcmRzOwogIHRoaXMuY291bnQgPSByZWNvcmRzLmxlbmd0aDsKICB0aGlzLnN0cmluZ09mZnNldCA9IE5hbWVUYWJsZS5zaXplKHRoaXMsIG51bGwsIGZhbHNlKTsKfTsKCnZhciBPUzIgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3Qoci51aW50MTYsIHsKICBoZWFkZXI6IHsKICAgIHhBdmdDaGFyV2lkdGg6IHIuaW50MTYsIC8vIGF2ZXJhZ2Ugd2VpZ2h0ZWQgYWR2YW5jZSB3aWR0aCBvZiBsb3dlciBjYXNlIGxldHRlcnMgYW5kIHNwYWNlCiAgICB1c1dlaWdodENsYXNzOiByLnVpbnQxNiwgLy8gdmlzdWFsIHdlaWdodCBvZiBzdHJva2UgaW4gZ2x5cGhzCiAgICB1c1dpZHRoQ2xhc3M6IHIudWludDE2LCAvLyByZWxhdGl2ZSBjaGFuZ2UgZnJvbSB0aGUgbm9ybWFsIGFzcGVjdCByYXRpbyAod2lkdGggdG8gaGVpZ2h0IHJhdGlvKQogICAgZnNUeXBlOiBuZXcgci5CaXRmaWVsZChyLnVpbnQxNiwgWy8vIEluZGljYXRlcyBmb250IGVtYmVkZGluZyBsaWNlbnNpbmcgcmlnaHRzCiAgICBudWxsLCAnbm9FbWJlZGRpbmcnLCAndmlld09ubHknLCAnZWRpdGFibGUnLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAnbm9TdWJzZXR0aW5nJywgJ2JpdG1hcE9ubHknXSksCiAgICB5U3Vic2NyaXB0WFNpemU6IHIuaW50MTYsIC8vIHJlY29tbWVuZGVkIGhvcml6b250YWwgc2l6ZSBpbiBwaXhlbHMgZm9yIHN1YnNjcmlwdHMKICAgIHlTdWJzY3JpcHRZU2l6ZTogci5pbnQxNiwgLy8gcmVjb21tZW5kZWQgdmVydGljYWwgc2l6ZSBpbiBwaXhlbHMgZm9yIHN1YnNjcmlwdHMKICAgIHlTdWJzY3JpcHRYT2Zmc2V0OiByLmludDE2LCAvLyByZWNvbW1lbmRlZCBob3Jpem9udGFsIG9mZnNldCBmb3Igc3Vic2NyaXB0cwogICAgeVN1YnNjcmlwdFlPZmZzZXQ6IHIuaW50MTYsIC8vIHJlY29tbWVuZGVkIHZlcnRpY2FsIG9mZnNldCBmb3JtIHRoZSBiYXNlbGluZSBmb3Igc3Vic2NyaXB0cwogICAgeVN1cGVyc2NyaXB0WFNpemU6IHIuaW50MTYsIC8vIHJlY29tbWVuZGVkIGhvcml6b250YWwgc2l6ZSBpbiBwaXhlbHMgZm9yIHN1cGVyc2NyaXB0cwogICAgeVN1cGVyc2NyaXB0WVNpemU6IHIuaW50MTYsIC8vIHJlY29tbWVuZGVkIHZlcnRpY2FsIHNpemUgaW4gcGl4ZWxzIGZvciBzdXBlcnNjcmlwdHMKICAgIHlTdXBlcnNjcmlwdFhPZmZzZXQ6IHIuaW50MTYsIC8vIHJlY29tbWVuZGVkIGhvcml6b250YWwgb2Zmc2V0IGZvciBzdXBlcnNjcmlwdHMKICAgIHlTdXBlcnNjcmlwdFlPZmZzZXQ6IHIuaW50MTYsIC8vIHJlY29tbWVuZGVkIHZlcnRpY2FsIG9mZnNldCBmcm9tIHRoZSBiYXNlbGluZSBmb3Igc3VwZXJzY3JpcHRzCiAgICB5U3RyaWtlb3V0U2l6ZTogci5pbnQxNiwgLy8gd2lkdGggb2YgdGhlIHN0cmlrZW91dCBzdHJva2UKICAgIHlTdHJpa2VvdXRQb3NpdGlvbjogci5pbnQxNiwgLy8gcG9zaXRpb24gb2YgdGhlIHN0cmlrZW91dCBzdHJva2UgcmVsYXRpdmUgdG8gdGhlIGJhc2VsaW5lCiAgICBzRmFtaWx5Q2xhc3M6IHIuaW50MTYsIC8vIGNsYXNzaWZpY2F0aW9uIG9mIGZvbnQtZmFtaWx5IGRlc2lnbgogICAgcGFub3NlOiBuZXcgci5BcnJheShyLnVpbnQ4LCAxMCksIC8vIGRlc2NyaWJlIHRoZSB2aXN1YWwgY2hhcmFjdGVyaXN0aWNzIG9mIGEgZ2l2ZW4gdHlwZWZhY2UKICAgIHVsQ2hhclJhbmdlOiBuZXcgci5BcnJheShyLnVpbnQzMiwgNCksCiAgICB2ZW5kb3JJRDogbmV3IHIuU3RyaW5nKDQpLCAvLyBmb3VyIGNoYXJhY3RlciBpZGVudGlmaWVyIGZvciB0aGUgZm9udCB2ZW5kb3IKICAgIGZzU2VsZWN0aW9uOiBuZXcgci5CaXRmaWVsZChyLnVpbnQxNiwgWy8vIGJpdCBmaWVsZCBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmb250CiAgICAnaXRhbGljJywgJ3VuZGVyc2NvcmUnLCAnbmVnYXRpdmUnLCAnb3V0bGluZWQnLCAnc3RyaWtlb3V0JywgJ2JvbGQnLCAncmVndWxhcicsICd1c2VUeXBvTWV0cmljcycsICd3d3MnLCAnb2JsaXF1ZSddKSwKICAgIHVzRmlyc3RDaGFySW5kZXg6IHIudWludDE2LCAvLyBUaGUgbWluaW11bSBVbmljb2RlIGluZGV4IGluIHRoaXMgZm9udAogICAgdXNMYXN0Q2hhckluZGV4OiByLnVpbnQxNiAvLyBUaGUgbWF4aW11bSBVbmljb2RlIGluZGV4IGluIHRoaXMgZm9udAogIH0sCgogIC8vIFRoZSBBcHBsZSB2ZXJzaW9uIG9mIHRoaXMgdGFibGUgZW5kcyBoZXJlLCBidXQgdGhlIE1pY3Jvc29mdCBvbmUgY29udGludWVzIG9uLi4uCiAgMDoge30sCgogIDE6IHsKICAgIHR5cG9Bc2NlbmRlcjogci5pbnQxNiwKICAgIHR5cG9EZXNjZW5kZXI6IHIuaW50MTYsCiAgICB0eXBvTGluZUdhcDogci5pbnQxNiwKICAgIHdpbkFzY2VudDogci51aW50MTYsCiAgICB3aW5EZXNjZW50OiByLnVpbnQxNiwKICAgIGNvZGVQYWdlUmFuZ2U6IG5ldyByLkFycmF5KHIudWludDMyLCAyKQogIH0sCgogIDI6IHsKICAgIC8vIHRoZXNlIHNob3VsZCBiZSBjb21tb24gd2l0aCB2ZXJzaW9uIDEgc29tZWhvdwogICAgdHlwb0FzY2VuZGVyOiByLmludDE2LAogICAgdHlwb0Rlc2NlbmRlcjogci5pbnQxNiwKICAgIHR5cG9MaW5lR2FwOiByLmludDE2LAogICAgd2luQXNjZW50OiByLnVpbnQxNiwKICAgIHdpbkRlc2NlbnQ6IHIudWludDE2LAogICAgY29kZVBhZ2VSYW5nZTogbmV3IHIuQXJyYXkoci51aW50MzIsIDIpLAoKICAgIHhIZWlnaHQ6IHIuaW50MTYsCiAgICBjYXBIZWlnaHQ6IHIuaW50MTYsCiAgICBkZWZhdWx0Q2hhcjogci51aW50MTYsCiAgICBicmVha0NoYXI6IHIudWludDE2LAogICAgbWF4Q29udGVudDogci51aW50MTYKICB9LAoKICA1OiB7CiAgICB0eXBvQXNjZW5kZXI6IHIuaW50MTYsCiAgICB0eXBvRGVzY2VuZGVyOiByLmludDE2LAogICAgdHlwb0xpbmVHYXA6IHIuaW50MTYsCiAgICB3aW5Bc2NlbnQ6IHIudWludDE2LAogICAgd2luRGVzY2VudDogci51aW50MTYsCiAgICBjb2RlUGFnZVJhbmdlOiBuZXcgci5BcnJheShyLnVpbnQzMiwgMiksCgogICAgeEhlaWdodDogci5pbnQxNiwKICAgIGNhcEhlaWdodDogci5pbnQxNiwKICAgIGRlZmF1bHRDaGFyOiByLnVpbnQxNiwKICAgIGJyZWFrQ2hhcjogci51aW50MTYsCiAgICBtYXhDb250ZW50OiByLnVpbnQxNiwKCiAgICB1c0xvd2VyT3B0aWNhbFBvaW50U2l6ZTogci51aW50MTYsCiAgICB1c1VwcGVyT3B0aWNhbFBvaW50U2l6ZTogci51aW50MTYKICB9Cn0pOwoKdmFyIHZlcnNpb25zID0gT1MyLnZlcnNpb25zOwp2ZXJzaW9uc1szXSA9IHZlcnNpb25zWzRdID0gdmVyc2lvbnNbMl07CgovLyBQb3N0U2NyaXB0IGluZm9ybWF0aW9uCnZhciBwb3N0ID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIuZml4ZWQzMiwgewogIGhlYWRlcjogeyAvLyB0aGVzZSBmaWVsZHMgZXhpc3QgYXQgdGhlIHRvcCBvZiBhbGwgdmVyc2lvbnMKICAgIGl0YWxpY0FuZ2xlOiByLmZpeGVkMzIsIC8vIEl0YWxpYyBhbmdsZSBpbiBjb3VudGVyLWNsb2Nrd2lzZSBkZWdyZWVzIGZyb20gdGhlIHZlcnRpY2FsLgogICAgdW5kZXJsaW5lUG9zaXRpb246IHIuaW50MTYsIC8vIFN1Z2dlc3RlZCBkaXN0YW5jZSBvZiB0aGUgdG9wIG9mIHRoZSB1bmRlcmxpbmUgZnJvbSB0aGUgYmFzZWxpbmUKICAgIHVuZGVybGluZVRoaWNrbmVzczogci5pbnQxNiwgLy8gU3VnZ2VzdGVkIHZhbHVlcyBmb3IgdGhlIHVuZGVybGluZSB0aGlja25lc3MKICAgIGlzRml4ZWRQaXRjaDogci51aW50MzIsIC8vIFdoZXRoZXIgdGhlIGZvbnQgaXMgbW9ub3NwYWNlZAogICAgbWluTWVtVHlwZTQyOiByLnVpbnQzMiwgLy8gTWluaW11bSBtZW1vcnkgdXNhZ2Ugd2hlbiBhIFRydWVUeXBlIGZvbnQgaXMgZG93bmxvYWRlZCBhcyBhIFR5cGUgNDIgZm9udAogICAgbWF4TWVtVHlwZTQyOiByLnVpbnQzMiwgLy8gTWF4aW11bSBtZW1vcnkgdXNhZ2Ugd2hlbiBhIFRydWVUeXBlIGZvbnQgaXMgZG93bmxvYWRlZCBhcyBhIFR5cGUgNDIgZm9udAogICAgbWluTWVtVHlwZTE6IHIudWludDMyLCAvLyBNaW5pbXVtIG1lbW9yeSB1c2FnZSB3aGVuIGEgVHJ1ZVR5cGUgZm9udCBpcyBkb3dubG9hZGVkIGFzIGEgVHlwZSAxIGZvbnQKICAgIG1heE1lbVR5cGUxOiByLnVpbnQzMiAvLyBNYXhpbXVtIG1lbW9yeSB1c2FnZSB3aGVuIGEgVHJ1ZVR5cGUgZm9udCBpcyBkb3dubG9hZGVkIGFzIGEgVHlwZSAxIGZvbnQKICB9LAoKICAxOiB7fSwgLy8gdmVyc2lvbiAxIGhhcyBubyBhZGRpdGlvbmFsIGZpZWxkcwoKICAyOiB7CiAgICBudW1iZXJPZkdseXBoczogci51aW50MTYsCiAgICBnbHlwaE5hbWVJbmRleDogbmV3IHIuQXJyYXkoci51aW50MTYsICdudW1iZXJPZkdseXBocycpLAogICAgbmFtZXM6IG5ldyByLkFycmF5KG5ldyByLlN0cmluZyhyLnVpbnQ4KSkKICB9LAoKICAyLjU6IHsKICAgIG51bWJlck9mR2x5cGhzOiByLnVpbnQxNiwKICAgIG9mZnNldHM6IG5ldyByLkFycmF5KHIudWludDgsICdudW1iZXJPZkdseXBocycpCiAgfSwKCiAgMzoge30sIC8vIHZlcnNpb24gMyBoYXMgbm8gYWRkaXRpb25hbCBmaWVsZHMKCiAgNDogewogICAgbWFwOiBuZXcgci5BcnJheShyLnVpbnQzMiwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQucGFyZW50Lm1heHAubnVtR2x5cGhzOwogICAgfSkKICB9Cn0pOwoKLy8gQW4gYXJyYXkgb2YgcHJlZGVmaW5lZCB2YWx1ZXMgYWNjZXNzaWJsZSBieSBpbnN0cnVjdGlvbnMKdmFyIGN2dCA9IG5ldyByLlN0cnVjdCh7CiAgY29udHJvbFZhbHVlczogbmV3IHIuQXJyYXkoci5pbnQxNikKfSk7CgovLyBBIGxpc3Qgb2YgaW5zdHJ1Y3Rpb25zIHRoYXQgYXJlIGV4ZWN1dGVkIG9uY2Ugd2hlbiBhIGZvbnQgaXMgZmlyc3QgdXNlZC4KLy8gVGhlc2UgaW5zdHJ1Y3Rpb25zIGFyZSBrbm93biBhcyB0aGUgZm9udCBwcm9ncmFtLiBUaGUgbWFpbiB1c2Ugb2YgdGhpcyB0YWJsZQovLyBpcyBmb3IgdGhlIGRlZmluaXRpb24gb2YgZnVuY3Rpb25zIHRoYXQgYXJlIHVzZWQgaW4gbWFueSBkaWZmZXJlbnQgZ2x5cGggcHJvZ3JhbXMuCnZhciBmcGdtID0gbmV3IHIuU3RydWN0KHsKICBpbnN0cnVjdGlvbnM6IG5ldyByLkFycmF5KHIudWludDgpCn0pOwoKdmFyIGxvY2EgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3QoJ2hlYWQuaW5kZXhUb0xvY0Zvcm1hdCcsIHsKICAwOiB7CiAgICBvZmZzZXRzOiBuZXcgci5BcnJheShyLnVpbnQxNikKICB9LAogIDE6IHsKICAgIG9mZnNldHM6IG5ldyByLkFycmF5KHIudWludDMyKQogIH0KfSk7Cgpsb2NhLnByb2Nlc3MgPSBmdW5jdGlvbiAoKSB7CiAgaWYgKHRoaXMudmVyc2lvbiA9PT0gMCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLm9mZnNldHMubGVuZ3RoOyBpKyspIHsKICAgICAgdGhpcy5vZmZzZXRzW2ldIDw8PSAxOwogICAgfQogIH0KfTsKCmxvY2EucHJlRW5jb2RlID0gZnVuY3Rpb24gKCkgewogIGlmICh0aGlzLnZlcnNpb24gIT0gbnVsbCkgcmV0dXJuOwoKICAvLyBhc3N1bWUgdGhpcy5vZmZzZXRzIGlzIGEgc29ydGVkIGFycmF5CiAgdGhpcy52ZXJzaW9uID0gdGhpcy5vZmZzZXRzW3RoaXMub2Zmc2V0cy5sZW5ndGggLSAxXSA+IDB4ZmZmZiA/IDEgOiAwOwoKICBpZiAodGhpcy52ZXJzaW9uID09PSAwKSB7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMub2Zmc2V0cy5sZW5ndGg7IGkrKykgewogICAgICB0aGlzLm9mZnNldHNbaV0gPj4+PSAxOwogICAgfQogIH0KfTsKCi8vIFNldCBvZiBpbnN0cnVjdGlvbnMgZXhlY3V0ZWQgd2hlbmV2ZXIgdGhlIHBvaW50IHNpemUgb3IgZm9udCB0cmFuc2Zvcm1hdGlvbiBjaGFuZ2UKdmFyIHByZXAgPSBuZXcgci5TdHJ1Y3QoewogIGNvbnRyb2xWYWx1ZVByb2dyYW06IG5ldyByLkFycmF5KHIudWludDgpCn0pOwoKLy8gb25seSB1c2VkIGZvciBlbmNvZGluZwp2YXIgZ2x5ZiA9IG5ldyByLkFycmF5KG5ldyByLkJ1ZmZlcigpKTsKCnZhciBDRkZJbmRleCA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBDRkZJbmRleCh0eXBlKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ0ZGSW5kZXgpOwoKICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgfQoKICBDRkZJbmRleC5wcm90b3R5cGUuZ2V0Q0ZGVmVyc2lvbiA9IGZ1bmN0aW9uIGdldENGRlZlcnNpb24oY3R4KSB7CiAgICB3aGlsZSAoY3R4ICYmICFjdHguaGRyU2l6ZSkgewogICAgICBjdHggPSBjdHgucGFyZW50OwogICAgfQoKICAgIHJldHVybiBjdHggPyBjdHgudmVyc2lvbiA6IC0xOwogIH07CgogIENGRkluZGV4LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoc3RyZWFtLCBwYXJlbnQpIHsKICAgIHZhciB2ZXJzaW9uID0gdGhpcy5nZXRDRkZWZXJzaW9uKHBhcmVudCk7CiAgICB2YXIgY291bnQgPSB2ZXJzaW9uID49IDIgPyBzdHJlYW0ucmVhZFVJbnQzMkJFKCkgOiBzdHJlYW0ucmVhZFVJbnQxNkJFKCk7CgogICAgaWYgKGNvdW50ID09PSAwKSB7CiAgICAgIHJldHVybiBbXTsKICAgIH0KCiAgICB2YXIgb2ZmU2l6ZSA9IHN0cmVhbS5yZWFkVUludDgoKTsKICAgIHZhciBvZmZzZXRUeXBlID0gdm9pZCAwOwogICAgaWYgKG9mZlNpemUgPT09IDEpIHsKICAgICAgb2Zmc2V0VHlwZSA9IHIudWludDg7CiAgICB9IGVsc2UgaWYgKG9mZlNpemUgPT09IDIpIHsKICAgICAgb2Zmc2V0VHlwZSA9IHIudWludDE2OwogICAgfSBlbHNlIGlmIChvZmZTaXplID09PSAzKSB7CiAgICAgIG9mZnNldFR5cGUgPSByLnVpbnQyNDsKICAgIH0gZWxzZSBpZiAob2ZmU2l6ZSA9PT0gNCkgewogICAgICBvZmZzZXRUeXBlID0gci51aW50MzI7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBvZmZzZXQgc2l6ZSBpbiBDRkZJbmRleDogIiArIG9mZlNpemUgKyAiICIgKyBzdHJlYW0ucG9zKTsKICAgIH0KCiAgICB2YXIgcmV0ID0gW107CiAgICB2YXIgc3RhcnRQb3MgPSBzdHJlYW0ucG9zICsgKGNvdW50ICsgMSkgKiBvZmZTaXplIC0gMTsKCiAgICB2YXIgc3RhcnQgPSBvZmZzZXRUeXBlLmRlY29kZShzdHJlYW0pOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgIHZhciBlbmQgPSBvZmZzZXRUeXBlLmRlY29kZShzdHJlYW0pOwoKICAgICAgaWYgKHRoaXMudHlwZSAhPSBudWxsKSB7CiAgICAgICAgdmFyIHBvcyA9IHN0cmVhbS5wb3M7CiAgICAgICAgc3RyZWFtLnBvcyA9IHN0YXJ0UG9zICsgc3RhcnQ7CgogICAgICAgIHBhcmVudC5sZW5ndGggPSBlbmQgLSBzdGFydDsKICAgICAgICByZXQucHVzaCh0aGlzLnR5cGUuZGVjb2RlKHN0cmVhbSwgcGFyZW50KSk7CiAgICAgICAgc3RyZWFtLnBvcyA9IHBvczsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXQucHVzaCh7CiAgICAgICAgICBvZmZzZXQ6IHN0YXJ0UG9zICsgc3RhcnQsCiAgICAgICAgICBsZW5ndGg6IGVuZCAtIHN0YXJ0CiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIHN0YXJ0ID0gZW5kOwogICAgfQoKICAgIHN0cmVhbS5wb3MgPSBzdGFydFBvcyArIHN0YXJ0OwogICAgcmV0dXJuIHJldDsKICB9OwoKICBDRkZJbmRleC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIHNpemUoYXJyLCBwYXJlbnQpIHsKICAgIHZhciBzaXplID0gMjsKICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSB7CiAgICAgIHJldHVybiBzaXplOwogICAgfQoKICAgIHZhciB0eXBlID0gdGhpcy50eXBlIHx8IG5ldyByLkJ1ZmZlcigpOwoKICAgIC8vIGZpbmQgbWF4aW11bSBvZmZzZXQgdG8gZGV0bWluaW5lIG9mZnNldCB0eXBlCiAgICB2YXIgb2Zmc2V0ID0gMTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBpdGVtID0gYXJyW2ldOwogICAgICBvZmZzZXQgKz0gdHlwZS5zaXplKGl0ZW0sIHBhcmVudCk7CiAgICB9CgogICAgdmFyIG9mZnNldFR5cGUgPSB2b2lkIDA7CiAgICBpZiAob2Zmc2V0IDw9IDB4ZmYpIHsKICAgICAgb2Zmc2V0VHlwZSA9IHIudWludDg7CiAgICB9IGVsc2UgaWYgKG9mZnNldCA8PSAweGZmZmYpIHsKICAgICAgb2Zmc2V0VHlwZSA9IHIudWludDE2OwogICAgfSBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmZmYpIHsKICAgICAgb2Zmc2V0VHlwZSA9IHIudWludDI0OwogICAgfSBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmZmZmZikgewogICAgICBvZmZzZXRUeXBlID0gci51aW50MzI7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBvZmZzZXQgaW4gQ0ZGSW5kZXgiKTsKICAgIH0KCiAgICBzaXplICs9IDEgKyBvZmZzZXRUeXBlLnNpemUoKSAqIChhcnIubGVuZ3RoICsgMSk7CiAgICBzaXplICs9IG9mZnNldCAtIDE7CgogICAgcmV0dXJuIHNpemU7CiAgfTsKCiAgQ0ZGSW5kZXgucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0sIGFyciwgcGFyZW50KSB7CiAgICBzdHJlYW0ud3JpdGVVSW50MTZCRShhcnIubGVuZ3RoKTsKICAgIGlmIChhcnIubGVuZ3RoID09PSAwKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgdHlwZSA9IHRoaXMudHlwZSB8fCBuZXcgci5CdWZmZXIoKTsKCiAgICAvLyBmaW5kIG1heGltdW0gb2Zmc2V0IHRvIGRldG1pbmluZSBvZmZzZXQgdHlwZQogICAgdmFyIHNpemVzID0gW107CiAgICB2YXIgb2Zmc2V0ID0gMTsKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IGFyciwgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICAgIHZhciBfcmVmOwoKICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBpdGVtID0gX3JlZjsKCiAgICAgIHZhciBzID0gdHlwZS5zaXplKGl0ZW0sIHBhcmVudCk7CiAgICAgIHNpemVzLnB1c2gocyk7CiAgICAgIG9mZnNldCArPSBzOwogICAgfQoKICAgIHZhciBvZmZzZXRUeXBlID0gdm9pZCAwOwogICAgaWYgKG9mZnNldCA8PSAweGZmKSB7CiAgICAgIG9mZnNldFR5cGUgPSByLnVpbnQ4OwogICAgfSBlbHNlIGlmIChvZmZzZXQgPD0gMHhmZmZmKSB7CiAgICAgIG9mZnNldFR5cGUgPSByLnVpbnQxNjsKICAgIH0gZWxzZSBpZiAob2Zmc2V0IDw9IDB4ZmZmZmZmKSB7CiAgICAgIG9mZnNldFR5cGUgPSByLnVpbnQyNDsKICAgIH0gZWxzZSBpZiAob2Zmc2V0IDw9IDB4ZmZmZmZmZmYpIHsKICAgICAgb2Zmc2V0VHlwZSA9IHIudWludDMyOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgb2Zmc2V0IGluIENGRkluZGV4Iik7CiAgICB9CgogICAgLy8gd3JpdGUgb2Zmc2V0IHNpemUKICAgIHN0cmVhbS53cml0ZVVJbnQ4KG9mZnNldFR5cGUuc2l6ZSgpKTsKCiAgICAvLyB3cml0ZSBlbGVtZW50cwogICAgb2Zmc2V0ID0gMTsKICAgIG9mZnNldFR5cGUuZW5jb2RlKHN0cmVhbSwgb2Zmc2V0KTsKCiAgICBmb3IgKHZhciBfaXRlcmF0b3IyID0gc2l6ZXMsIF9pc0FycmF5MiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMiksIF9pMiA9IDAsIF9pdGVyYXRvcjIgPSBfaXNBcnJheTIgPyBfaXRlcmF0b3IyIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjIpOzspIHsKICAgICAgdmFyIF9yZWYyOwoKICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgIGlmIChfaTIgPj0gX2l0ZXJhdG9yMi5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYyID0gX2l0ZXJhdG9yMltfaTIrK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kyID0gX2l0ZXJhdG9yMi5uZXh0KCk7CiAgICAgICAgaWYgKF9pMi5kb25lKSBicmVhazsKICAgICAgICBfcmVmMiA9IF9pMi52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIHNpemUgPSBfcmVmMjsKCiAgICAgIG9mZnNldCArPSBzaXplOwogICAgICBvZmZzZXRUeXBlLmVuY29kZShzdHJlYW0sIG9mZnNldCk7CiAgICB9CgogICAgZm9yICh2YXIgX2l0ZXJhdG9yMyA9IGFyciwgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICB2YXIgX3JlZjM7CgogICAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjMgPSBfaXRlcmF0b3IzW19pMysrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICBpZiAoX2kzLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYzID0gX2kzLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgX2l0ZW0gPSBfcmVmMzsKCiAgICAgIHR5cGUuZW5jb2RlKHN0cmVhbSwgX2l0ZW0sIHBhcmVudCk7CiAgICB9CgogICAgcmV0dXJuOwogIH07CgogIHJldHVybiBDRkZJbmRleDsKfSgpOwoKdmFyIEZMT0FUX0VPRiA9IDB4ZjsKdmFyIEZMT0FUX0xPT0tVUCA9IFsnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICcuJywgJ0UnLCAnRS0nLCBudWxsLCAnLSddOwoKdmFyIEZMT0FUX0VOQ09ERV9MT09LVVAgPSB7CiAgJy4nOiAxMCwKICAnRSc6IDExLAogICdFLSc6IDEyLAogICctJzogMTQKfTsKCnZhciBDRkZPcGVyYW5kID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIENGRk9wZXJhbmQoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ0ZGT3BlcmFuZCk7CiAgfQoKICBDRkZPcGVyYW5kLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0sIHZhbHVlKSB7CiAgICBpZiAoMzIgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMjQ2KSB7CiAgICAgIHJldHVybiB2YWx1ZSAtIDEzOTsKICAgIH0KCiAgICBpZiAoMjQ3IDw9IHZhbHVlICYmIHZhbHVlIDw9IDI1MCkgewogICAgICByZXR1cm4gKHZhbHVlIC0gMjQ3KSAqIDI1NiArIHN0cmVhbS5yZWFkVUludDgoKSArIDEwODsKICAgIH0KCiAgICBpZiAoMjUxIDw9IHZhbHVlICYmIHZhbHVlIDw9IDI1NCkgewogICAgICByZXR1cm4gLSh2YWx1ZSAtIDI1MSkgKiAyNTYgLSBzdHJlYW0ucmVhZFVJbnQ4KCkgLSAxMDg7CiAgICB9CgogICAgaWYgKHZhbHVlID09PSAyOCkgewogICAgICByZXR1cm4gc3RyZWFtLnJlYWRJbnQxNkJFKCk7CiAgICB9CgogICAgaWYgKHZhbHVlID09PSAyOSkgewogICAgICByZXR1cm4gc3RyZWFtLnJlYWRJbnQzMkJFKCk7CiAgICB9CgogICAgaWYgKHZhbHVlID09PSAzMCkgewogICAgICB2YXIgc3RyID0gJyc7CiAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgdmFyIGIgPSBzdHJlYW0ucmVhZFVJbnQ4KCk7CgogICAgICAgIHZhciBuMSA9IGIgPj4gNDsKICAgICAgICBpZiAobjEgPT09IEZMT0FUX0VPRikgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHN0ciArPSBGTE9BVF9MT09LVVBbbjFdOwoKICAgICAgICB2YXIgbjIgPSBiICYgMTU7CiAgICAgICAgaWYgKG4yID09PSBGTE9BVF9FT0YpIHsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBzdHIgKz0gRkxPQVRfTE9PS1VQW24yXTsKICAgICAgfQoKICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoc3RyKTsKICAgIH0KCiAgICByZXR1cm4gbnVsbDsKICB9OwoKICBDRkZPcGVyYW5kLnNpemUgPSBmdW5jdGlvbiBzaXplKHZhbHVlKSB7CiAgICAvLyBpZiB0aGUgdmFsdWUgbmVlZHMgdG8gYmUgZm9yY2VkIHRvIHRoZSBsYXJnZXN0IHNpemUgKDMyIGJpdCkKICAgIC8vIGUuZy4gZm9yIHVua25vd24gcG9pbnRlcnMsIHNldCB0byAzMjc2OAogICAgaWYgKHZhbHVlLmZvcmNlTGFyZ2UpIHsKICAgICAgdmFsdWUgPSAzMjc2ODsKICAgIH0KCiAgICBpZiAoKHZhbHVlIHwgMCkgIT09IHZhbHVlKSB7CiAgICAgIC8vIGZsb2F0aW5nIHBvaW50CiAgICAgIHZhciBzdHIgPSAnJyArIHZhbHVlOwogICAgICByZXR1cm4gMSArIE1hdGguY2VpbCgoc3RyLmxlbmd0aCArIDEpIC8gMik7CiAgICB9IGVsc2UgaWYgKC0xMDcgPD0gdmFsdWUgJiYgdmFsdWUgPD0gMTA3KSB7CiAgICAgIHJldHVybiAxOwogICAgfSBlbHNlIGlmICgxMDggPD0gdmFsdWUgJiYgdmFsdWUgPD0gMTEzMSB8fCAtMTEzMSA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAtMTA4KSB7CiAgICAgIHJldHVybiAyOwogICAgfSBlbHNlIGlmICgtMzI3NjggPD0gdmFsdWUgJiYgdmFsdWUgPD0gMzI3NjcpIHsKICAgICAgcmV0dXJuIDM7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gNTsKICAgIH0KICB9OwoKICBDRkZPcGVyYW5kLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0sIHZhbHVlKSB7CiAgICAvLyBpZiB0aGUgdmFsdWUgbmVlZHMgdG8gYmUgZm9yY2VkIHRvIHRoZSBsYXJnZXN0IHNpemUgKDMyIGJpdCkKICAgIC8vIGUuZy4gZm9yIHVua25vd24gcG9pbnRlcnMsIHNhdmUgdGhlIG9sZCB2YWx1ZSBhbmQgc2V0IHRvIDMyNzY4CiAgICB2YXIgdmFsID0gTnVtYmVyKHZhbHVlKTsKCiAgICBpZiAodmFsdWUuZm9yY2VMYXJnZSkgewogICAgICBzdHJlYW0ud3JpdGVVSW50OCgyOSk7CiAgICAgIHJldHVybiBzdHJlYW0ud3JpdGVJbnQzMkJFKHZhbCk7CiAgICB9IGVsc2UgaWYgKCh2YWwgfCAwKSAhPT0gdmFsKSB7CiAgICAgIC8vIGZsb2F0aW5nIHBvaW50CiAgICAgIHN0cmVhbS53cml0ZVVJbnQ4KDMwKTsKCiAgICAgIHZhciBzdHIgPSAnJyArIHZhbDsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpICs9IDIpIHsKICAgICAgICB2YXIgYzEgPSBzdHJbaV07CiAgICAgICAgdmFyIG4xID0gRkxPQVRfRU5DT0RFX0xPT0tVUFtjMV0gfHwgK2MxOwoKICAgICAgICBpZiAoaSA9PT0gc3RyLmxlbmd0aCAtIDEpIHsKICAgICAgICAgIHZhciBuMiA9IEZMT0FUX0VPRjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIGMyID0gc3RyW2kgKyAxXTsKICAgICAgICAgIHZhciBuMiA9IEZMT0FUX0VOQ09ERV9MT09LVVBbYzJdIHx8ICtjMjsKICAgICAgICB9CgogICAgICAgIHN0cmVhbS53cml0ZVVJbnQ4KG4xIDw8IDQgfCBuMiAmIDE1KTsKICAgICAgfQoKICAgICAgaWYgKG4yICE9PSBGTE9BVF9FT0YpIHsKICAgICAgICByZXR1cm4gc3RyZWFtLndyaXRlVUludDgoRkxPQVRfRU9GIDw8IDQpOwogICAgICB9CiAgICB9IGVsc2UgaWYgKC0xMDcgPD0gdmFsICYmIHZhbCA8PSAxMDcpIHsKICAgICAgcmV0dXJuIHN0cmVhbS53cml0ZVVJbnQ4KHZhbCArIDEzOSk7CiAgICB9IGVsc2UgaWYgKDEwOCA8PSB2YWwgJiYgdmFsIDw9IDExMzEpIHsKICAgICAgdmFsIC09IDEwODsKICAgICAgc3RyZWFtLndyaXRlVUludDgoKHZhbCA+PiA4KSArIDI0Nyk7CiAgICAgIHJldHVybiBzdHJlYW0ud3JpdGVVSW50OCh2YWwgJiAweGZmKTsKICAgIH0gZWxzZSBpZiAoLTExMzEgPD0gdmFsICYmIHZhbCA8PSAtMTA4KSB7CiAgICAgIHZhbCA9IC12YWwgLSAxMDg7CiAgICAgIHN0cmVhbS53cml0ZVVJbnQ4KCh2YWwgPj4gOCkgKyAyNTEpOwogICAgICByZXR1cm4gc3RyZWFtLndyaXRlVUludDgodmFsICYgMHhmZik7CiAgICB9IGVsc2UgaWYgKC0zMjc2OCA8PSB2YWwgJiYgdmFsIDw9IDMyNzY3KSB7CiAgICAgIHN0cmVhbS53cml0ZVVJbnQ4KDI4KTsKICAgICAgcmV0dXJuIHN0cmVhbS53cml0ZUludDE2QkUodmFsKTsKICAgIH0gZWxzZSB7CiAgICAgIHN0cmVhbS53cml0ZVVJbnQ4KDI5KTsKICAgICAgcmV0dXJuIHN0cmVhbS53cml0ZUludDMyQkUodmFsKTsKICAgIH0KICB9OwoKICByZXR1cm4gQ0ZGT3BlcmFuZDsKfSgpOwoKdmFyIENGRkRpY3QgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gQ0ZGRGljdCgpIHsKICAgIHZhciBvcHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IFtdOwoKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDRkZEaWN0KTsKCiAgICB0aGlzLm9wcyA9IG9wczsKICAgIHRoaXMuZmllbGRzID0ge307CiAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBvcHMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICB2YXIgX3JlZjsKCiAgICAgIGlmIChfaXNBcnJheSkgewogICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgZmllbGQgPSBfcmVmOwoKICAgICAgdmFyIGtleSA9IEFycmF5LmlzQXJyYXkoZmllbGRbMF0pID8gZmllbGRbMF1bMF0gPDwgOCB8IGZpZWxkWzBdWzFdIDogZmllbGRbMF07CiAgICAgIHRoaXMuZmllbGRzW2tleV0gPSBmaWVsZDsKICAgIH0KICB9CgogIENGRkRpY3QucHJvdG90eXBlLmRlY29kZU9wZXJhbmRzID0gZnVuY3Rpb24gZGVjb2RlT3BlcmFuZHModHlwZSwgc3RyZWFtLCByZXQsIG9wZXJhbmRzKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgIGlmIChBcnJheS5pc0FycmF5KHR5cGUpKSB7CiAgICAgIHJldHVybiBvcGVyYW5kcy5tYXAoZnVuY3Rpb24gKG9wLCBpKSB7CiAgICAgICAgcmV0dXJuIF90aGlzLmRlY29kZU9wZXJhbmRzKHR5cGVbaV0sIHN0cmVhbSwgcmV0LCBbb3BdKTsKICAgICAgfSk7CiAgICB9IGVsc2UgaWYgKHR5cGUuZGVjb2RlICE9IG51bGwpIHsKICAgICAgcmV0dXJuIHR5cGUuZGVjb2RlKHN0cmVhbSwgcmV0LCBvcGVyYW5kcyk7CiAgICB9IGVsc2UgewogICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgICBjYXNlICdudW1iZXInOgogICAgICAgIGNhc2UgJ29mZnNldCc6CiAgICAgICAgY2FzZSAnc2lkJzoKICAgICAgICAgIHJldHVybiBvcGVyYW5kc1swXTsKICAgICAgICBjYXNlICdib29sZWFuJzoKICAgICAgICAgIHJldHVybiAhIW9wZXJhbmRzWzBdOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICByZXR1cm4gb3BlcmFuZHM7CiAgICAgIH0KICAgIH0KICB9OwoKICBDRkZEaWN0LnByb3RvdHlwZS5lbmNvZGVPcGVyYW5kcyA9IGZ1bmN0aW9uIGVuY29kZU9wZXJhbmRzKHR5cGUsIHN0cmVhbSwgY3R4LCBvcGVyYW5kcykgewogICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgaWYgKEFycmF5LmlzQXJyYXkodHlwZSkpIHsKICAgICAgcmV0dXJuIG9wZXJhbmRzLm1hcChmdW5jdGlvbiAob3AsIGkpIHsKICAgICAgICByZXR1cm4gX3RoaXMyLmVuY29kZU9wZXJhbmRzKHR5cGVbaV0sIHN0cmVhbSwgY3R4LCBvcClbMF07CiAgICAgIH0pOwogICAgfSBlbHNlIGlmICh0eXBlLmVuY29kZSAhPSBudWxsKSB7CiAgICAgIHJldHVybiB0eXBlLmVuY29kZShzdHJlYW0sIG9wZXJhbmRzLCBjdHgpOwogICAgfSBlbHNlIGlmICh0eXBlb2Ygb3BlcmFuZHMgPT09ICdudW1iZXInKSB7CiAgICAgIHJldHVybiBbb3BlcmFuZHNdOwogICAgfSBlbHNlIGlmICh0eXBlb2Ygb3BlcmFuZHMgPT09ICdib29sZWFuJykgewogICAgICByZXR1cm4gWytvcGVyYW5kc107CiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob3BlcmFuZHMpKSB7CiAgICAgIHJldHVybiBvcGVyYW5kczsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBbb3BlcmFuZHNdOwogICAgfQogIH07CgogIENGRkRpY3QucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0sIHBhcmVudCkgewogICAgdmFyIGVuZCA9IHN0cmVhbS5wb3MgKyBwYXJlbnQubGVuZ3RoOwogICAgdmFyIHJldCA9IHt9OwogICAgdmFyIG9wZXJhbmRzID0gW107CgogICAgLy8gZGVmaW5lIGhpZGRlbiBwcm9wZXJ0aWVzCiAgICBfT2JqZWN0JGRlZmluZVByb3BlcnRpZXMocmV0LCB7CiAgICAgIHBhcmVudDogeyB2YWx1ZTogcGFyZW50IH0sCiAgICAgIF9zdGFydE9mZnNldDogeyB2YWx1ZTogc3RyZWFtLnBvcyB9CiAgICB9KTsKCiAgICAvLyBmaWxsIGluIGRlZmF1bHRzCiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5maWVsZHMpIHsKICAgICAgdmFyIGZpZWxkID0gdGhpcy5maWVsZHNba2V5XTsKICAgICAgcmV0W2ZpZWxkWzFdXSA9IGZpZWxkWzNdOwogICAgfQoKICAgIHdoaWxlIChzdHJlYW0ucG9zIDwgZW5kKSB7CiAgICAgIHZhciBiID0gc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICBpZiAoYiA8IDI4KSB7CiAgICAgICAgaWYgKGIgPT09IDEyKSB7CiAgICAgICAgICBiID0gYiA8PCA4IHwgc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICAgIH0KCiAgICAgICAgdmFyIF9maWVsZCA9IHRoaXMuZmllbGRzW2JdOwogICAgICAgIGlmICghX2ZpZWxkKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gb3BlcmF0b3IgJyArIGIpOwogICAgICAgIH0KCiAgICAgICAgdmFyIHZhbCA9IHRoaXMuZGVjb2RlT3BlcmFuZHMoX2ZpZWxkWzJdLCBzdHJlYW0sIHJldCwgb3BlcmFuZHMpOwogICAgICAgIGlmICh2YWwgIT0gbnVsbCkgewogICAgICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIHJlc3RydWN0dXJlX3NyY191dGlscy5Qcm9wZXJ0eURlc2NyaXB0b3IpIHsKICAgICAgICAgICAgX09iamVjdCRkZWZpbmVQcm9wZXJ0eShyZXQsIF9maWVsZFsxXSwgdmFsKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldFtfZmllbGRbMV1dID0gdmFsOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgb3BlcmFuZHMgPSBbXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBvcGVyYW5kcy5wdXNoKENGRk9wZXJhbmQuZGVjb2RlKHN0cmVhbSwgYikpOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHJldDsKICB9OwoKICBDRkZEaWN0LnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gc2l6ZShkaWN0LCBwYXJlbnQpIHsKICAgIHZhciBpbmNsdWRlUG9pbnRlcnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IHRydWU7CgogICAgdmFyIGN0eCA9IHsKICAgICAgcGFyZW50OiBwYXJlbnQsCiAgICAgIHZhbDogZGljdCwKICAgICAgcG9pbnRlclNpemU6IDAsCiAgICAgIHN0YXJ0T2Zmc2V0OiBwYXJlbnQuc3RhcnRPZmZzZXQgfHwgMAogICAgfTsKCiAgICB2YXIgbGVuID0gMDsKCiAgICBmb3IgKHZhciBrIGluIHRoaXMuZmllbGRzKSB7CiAgICAgIHZhciBmaWVsZCA9IHRoaXMuZmllbGRzW2tdOwogICAgICB2YXIgdmFsID0gZGljdFtmaWVsZFsxXV07CiAgICAgIGlmICh2YWwgPT0gbnVsbCB8fCBpc0VxdWFsKHZhbCwgZmllbGRbM10pKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIHZhciBvcGVyYW5kcyA9IHRoaXMuZW5jb2RlT3BlcmFuZHMoZmllbGRbMl0sIG51bGwsIGN0eCwgdmFsKTsKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IG9wZXJhbmRzLCBfaXNBcnJheTIgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjIpLCBfaTIgPSAwLCBfaXRlcmF0b3IyID0gX2lzQXJyYXkyID8gX2l0ZXJhdG9yMiA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IyKTs7KSB7CiAgICAgICAgdmFyIF9yZWYyOwoKICAgICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgICBpZiAoX2kyID49IF9pdGVyYXRvcjIubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWYyID0gX2l0ZXJhdG9yMltfaTIrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pMiA9IF9pdGVyYXRvcjIubmV4dCgpOwogICAgICAgICAgaWYgKF9pMi5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIG9wID0gX3JlZjI7CgogICAgICAgIGxlbiArPSBDRkZPcGVyYW5kLnNpemUob3ApOwogICAgICB9CgogICAgICB2YXIga2V5ID0gQXJyYXkuaXNBcnJheShmaWVsZFswXSkgPyBmaWVsZFswXSA6IFtmaWVsZFswXV07CiAgICAgIGxlbiArPSBrZXkubGVuZ3RoOwogICAgfQoKICAgIGlmIChpbmNsdWRlUG9pbnRlcnMpIHsKICAgICAgbGVuICs9IGN0eC5wb2ludGVyU2l6ZTsKICAgIH0KCiAgICByZXR1cm4gbGVuOwogIH07CgogIENGRkRpY3QucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0sIGRpY3QsIHBhcmVudCkgewogICAgdmFyIGN0eCA9IHsKICAgICAgcG9pbnRlcnM6IFtdLAogICAgICBzdGFydE9mZnNldDogc3RyZWFtLnBvcywKICAgICAgcGFyZW50OiBwYXJlbnQsCiAgICAgIHZhbDogZGljdCwKICAgICAgcG9pbnRlclNpemU6IDAKICAgIH07CgogICAgY3R4LnBvaW50ZXJPZmZzZXQgPSBzdHJlYW0ucG9zICsgdGhpcy5zaXplKGRpY3QsIGN0eCwgZmFsc2UpOwoKICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSB0aGlzLm9wcywgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICB2YXIgX3JlZjM7CgogICAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjMgPSBfaXRlcmF0b3IzW19pMysrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICBpZiAoX2kzLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYzID0gX2kzLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgZmllbGQgPSBfcmVmMzsKCiAgICAgIHZhciB2YWwgPSBkaWN0W2ZpZWxkWzFdXTsKICAgICAgaWYgKHZhbCA9PSBudWxsIHx8IGlzRXF1YWwodmFsLCBmaWVsZFszXSkpIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgdmFyIG9wZXJhbmRzID0gdGhpcy5lbmNvZGVPcGVyYW5kcyhmaWVsZFsyXSwgc3RyZWFtLCBjdHgsIHZhbCk7CiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjQgPSBvcGVyYW5kcywgX2lzQXJyYXk0ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I0KSwgX2k0ID0gMCwgX2l0ZXJhdG9yNCA9IF9pc0FycmF5NCA/IF9pdGVyYXRvcjQgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNCk7OykgewogICAgICAgIHZhciBfcmVmNDsKCiAgICAgICAgaWYgKF9pc0FycmF5NCkgewogICAgICAgICAgaWYgKF9pNCA+PSBfaXRlcmF0b3I0Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmNCA9IF9pdGVyYXRvcjRbX2k0KytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTQgPSBfaXRlcmF0b3I0Lm5leHQoKTsKICAgICAgICAgIGlmIChfaTQuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmNCA9IF9pNC52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBvcCA9IF9yZWY0OwoKICAgICAgICBDRkZPcGVyYW5kLmVuY29kZShzdHJlYW0sIG9wKTsKICAgICAgfQoKICAgICAgdmFyIGtleSA9IEFycmF5LmlzQXJyYXkoZmllbGRbMF0pID8gZmllbGRbMF0gOiBbZmllbGRbMF1dOwogICAgICBmb3IgKHZhciBfaXRlcmF0b3I1ID0ga2V5LCBfaXNBcnJheTUgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjUpLCBfaTUgPSAwLCBfaXRlcmF0b3I1ID0gX2lzQXJyYXk1ID8gX2l0ZXJhdG9yNSA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I1KTs7KSB7CiAgICAgICAgdmFyIF9yZWY1OwoKICAgICAgICBpZiAoX2lzQXJyYXk1KSB7CiAgICAgICAgICBpZiAoX2k1ID49IF9pdGVyYXRvcjUubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWY1ID0gX2l0ZXJhdG9yNVtfaTUrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pNSA9IF9pdGVyYXRvcjUubmV4dCgpOwogICAgICAgICAgaWYgKF9pNS5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWY1ID0gX2k1LnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIF9vcCA9IF9yZWY1OwoKICAgICAgICBzdHJlYW0ud3JpdGVVSW50OChfb3ApOwogICAgICB9CiAgICB9CgogICAgdmFyIGkgPSAwOwogICAgd2hpbGUgKGkgPCBjdHgucG9pbnRlcnMubGVuZ3RoKSB7CiAgICAgIHZhciBwdHIgPSBjdHgucG9pbnRlcnNbaSsrXTsKICAgICAgcHRyLnR5cGUuZW5jb2RlKHN0cmVhbSwgcHRyLnZhbCwgcHRyLnBhcmVudCk7CiAgICB9CgogICAgcmV0dXJuOwogIH07CgogIHJldHVybiBDRkZEaWN0Owp9KCk7Cgp2YXIgQ0ZGUG9pbnRlciA9IGZ1bmN0aW9uIChfciRQb2ludGVyKSB7CiAgX2luaGVyaXRzKENGRlBvaW50ZXIsIF9yJFBvaW50ZXIpOwoKICBmdW5jdGlvbiBDRkZQb2ludGVyKHR5cGUpIHsKICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTsKCiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ0ZGUG9pbnRlcik7CgogICAgaWYgKG9wdGlvbnMudHlwZSA9PSBudWxsKSB7CiAgICAgIG9wdGlvbnMudHlwZSA9ICdnbG9iYWwnOwogICAgfQoKICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfciRQb2ludGVyLmNhbGwodGhpcywgbnVsbCwgdHlwZSwgb3B0aW9ucykpOwogIH0KCiAgQ0ZGUG9pbnRlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKHN0cmVhbSwgcGFyZW50LCBvcGVyYW5kcykgewogICAgdGhpcy5vZmZzZXRUeXBlID0gewogICAgICBkZWNvZGU6IGZ1bmN0aW9uIGRlY29kZSgpIHsKICAgICAgICByZXR1cm4gb3BlcmFuZHNbMF07CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIF9yJFBvaW50ZXIucHJvdG90eXBlLmRlY29kZS5jYWxsKHRoaXMsIHN0cmVhbSwgcGFyZW50LCBvcGVyYW5kcyk7CiAgfTsKCiAgQ0ZGUG9pbnRlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKHN0cmVhbSwgdmFsdWUsIGN0eCkgewogICAgaWYgKCFzdHJlYW0pIHsKICAgICAgLy8gY29tcHV0ZSB0aGUgc2l6ZSAoc28gY3R4LnBvaW50ZXJTaXplIGlzIGNvcnJlY3QpCiAgICAgIHRoaXMub2Zmc2V0VHlwZSA9IHsKICAgICAgICBzaXplOiBmdW5jdGlvbiBzaXplKCkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICB9OwoKICAgICAgdGhpcy5zaXplKHZhbHVlLCBjdHgpOwogICAgICByZXR1cm4gW25ldyBQdHIoMCldOwogICAgfQoKICAgIHZhciBwdHIgPSBudWxsOwogICAgdGhpcy5vZmZzZXRUeXBlID0gewogICAgICBlbmNvZGU6IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0sIHZhbCkgewogICAgICAgIHJldHVybiBwdHIgPSB2YWw7CiAgICAgIH0KICAgIH07CgogICAgX3IkUG9pbnRlci5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcywgc3RyZWFtLCB2YWx1ZSwgY3R4KTsKICAgIHJldHVybiBbbmV3IFB0cihwdHIpXTsKICB9OwoKICByZXR1cm4gQ0ZGUG9pbnRlcjsKfShyLlBvaW50ZXIpOwoKdmFyIFB0ciA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBQdHIodmFsKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUHRyKTsKCiAgICB0aGlzLnZhbCA9IHZhbDsKICAgIHRoaXMuZm9yY2VMYXJnZSA9IHRydWU7CiAgfQoKICBQdHIucHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlvbiB2YWx1ZU9mKCkgewogICAgcmV0dXJuIHRoaXMudmFsOwogIH07CgogIHJldHVybiBQdHI7Cn0oKTsKCnZhciBDRkZCbGVuZE9wID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIENGRkJsZW5kT3AoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ0ZGQmxlbmRPcCk7CiAgfQoKICBDRkZCbGVuZE9wLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0sIHBhcmVudCwgb3BlcmFuZHMpIHsKICAgIHZhciBudW1CbGVuZHMgPSBvcGVyYW5kcy5wb3AoKTsKCiAgICAvLyBUT0RPOiBhY3R1YWxseSBibGVuZC4gRm9yIG5vdyBqdXN0IGNvbnN1bWUgdGhlIGRlbHRhcwogICAgLy8gc2luY2Ugd2UgZG9uJ3QgdXNlIGFueSBvZiB0aGUgdmFsdWVzIGFueXdheS4KICAgIHdoaWxlIChvcGVyYW5kcy5sZW5ndGggPiBudW1CbGVuZHMpIHsKICAgICAgb3BlcmFuZHMucG9wKCk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIENGRkJsZW5kT3A7Cn0oKTsKCnZhciBDRkZQcml2YXRlRGljdCA9IG5ldyBDRkZEaWN0KFsKLy8ga2V5ICAgICAgIG5hbWUgICAgICAgICAgICAgICAgICAgIHR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Cls2LCAnQmx1ZVZhbHVlcycsICdkZWx0YScsIG51bGxdLCBbNywgJ090aGVyQmx1ZXMnLCAnZGVsdGEnLCBudWxsXSwgWzgsICdGYW1pbHlCbHVlcycsICdkZWx0YScsIG51bGxdLCBbOSwgJ0ZhbWlseU90aGVyQmx1ZXMnLCAnZGVsdGEnLCBudWxsXSwgW1sxMiwgOV0sICdCbHVlU2NhbGUnLCAnbnVtYmVyJywgMC4wMzk2MjVdLCBbWzEyLCAxMF0sICdCbHVlU2hpZnQnLCAnbnVtYmVyJywgN10sIFtbMTIsIDExXSwgJ0JsdWVGdXp6JywgJ251bWJlcicsIDFdLCBbMTAsICdTdGRIVycsICdudW1iZXInLCBudWxsXSwgWzExLCAnU3RkVlcnLCAnbnVtYmVyJywgbnVsbF0sIFtbMTIsIDEyXSwgJ1N0ZW1TbmFwSCcsICdkZWx0YScsIG51bGxdLCBbWzEyLCAxM10sICdTdGVtU25hcFYnLCAnZGVsdGEnLCBudWxsXSwgW1sxMiwgMTRdLCAnRm9yY2VCb2xkJywgJ2Jvb2xlYW4nLCBmYWxzZV0sIFtbMTIsIDE3XSwgJ0xhbmd1YWdlR3JvdXAnLCAnbnVtYmVyJywgMF0sIFtbMTIsIDE4XSwgJ0V4cGFuc2lvbkZhY3RvcicsICdudW1iZXInLCAwLjA2XSwgW1sxMiwgMTldLCAnaW5pdGlhbFJhbmRvbVNlZWQnLCAnbnVtYmVyJywgMF0sIFsyMCwgJ2RlZmF1bHRXaWR0aFgnLCAnbnVtYmVyJywgMF0sIFsyMSwgJ25vbWluYWxXaWR0aFgnLCAnbnVtYmVyJywgMF0sIFsyMiwgJ3ZzaW5kZXgnLCAnbnVtYmVyJywgMF0sIFsyMywgJ2JsZW5kJywgQ0ZGQmxlbmRPcCwgbnVsbF0sIFsxOSwgJ1N1YnJzJywgbmV3IENGRlBvaW50ZXIobmV3IENGRkluZGV4KCksIHsgdHlwZTogJ2xvY2FsJyB9KSwgbnVsbF1dKTsKCi8vIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gQXBwZW5kaXggQSBvZiB0aGUgQ0ZGIHNwZWNpZmljYXRpb247IGRvCi8vIG5vdCBlZGl0LiBMZW5ndGggc2hvdWxkIGJlIDM5MS4KdmFyIHN0YW5kYXJkU3RyaW5ncyA9IFsiLm5vdGRlZiIsICJzcGFjZSIsICJleGNsYW0iLCAicXVvdGVkYmwiLCAibnVtYmVyc2lnbiIsICJkb2xsYXIiLCAicGVyY2VudCIsICJhbXBlcnNhbmQiLCAicXVvdGVyaWdodCIsICJwYXJlbmxlZnQiLCAicGFyZW5yaWdodCIsICJhc3RlcmlzayIsICJwbHVzIiwgImNvbW1hIiwgImh5cGhlbiIsICJwZXJpb2QiLCAic2xhc2giLCAiemVybyIsICJvbmUiLCAidHdvIiwgInRocmVlIiwgImZvdXIiLCAiZml2ZSIsICJzaXgiLCAic2V2ZW4iLCAiZWlnaHQiLCAibmluZSIsICJjb2xvbiIsICJzZW1pY29sb24iLCAibGVzcyIsICJlcXVhbCIsICJncmVhdGVyIiwgInF1ZXN0aW9uIiwgImF0IiwgIkEiLCAiQiIsICJDIiwgIkQiLCAiRSIsICJGIiwgIkciLCAiSCIsICJJIiwgIkoiLCAiSyIsICJMIiwgIk0iLCAiTiIsICJPIiwgIlAiLCAiUSIsICJSIiwgIlMiLCAiVCIsICJVIiwgIlYiLCAiVyIsICJYIiwgIlkiLCAiWiIsICJicmFja2V0bGVmdCIsICJiYWNrc2xhc2giLCAiYnJhY2tldHJpZ2h0IiwgImFzY2lpY2lyY3VtIiwgInVuZGVyc2NvcmUiLCAicXVvdGVsZWZ0IiwgImEiLCAiYiIsICJjIiwgImQiLCAiZSIsICJmIiwgImciLCAiaCIsICJpIiwgImoiLCAiayIsICJsIiwgIm0iLCAibiIsICJvIiwgInAiLCAicSIsICJyIiwgInMiLCAidCIsICJ1IiwgInYiLCAidyIsICJ4IiwgInkiLCAieiIsICJicmFjZWxlZnQiLCAiYmFyIiwgImJyYWNlcmlnaHQiLCAiYXNjaWl0aWxkZSIsICJleGNsYW1kb3duIiwgImNlbnQiLCAic3RlcmxpbmciLCAiZnJhY3Rpb24iLCAieWVuIiwgImZsb3JpbiIsICJzZWN0aW9uIiwgImN1cnJlbmN5IiwgInF1b3Rlc2luZ2xlIiwgInF1b3RlZGJsbGVmdCIsICJndWlsbGVtb3RsZWZ0IiwgImd1aWxzaW5nbGxlZnQiLCAiZ3VpbHNpbmdscmlnaHQiLCAiZmkiLCAiZmwiLCAiZW5kYXNoIiwgImRhZ2dlciIsICJkYWdnZXJkYmwiLCAicGVyaW9kY2VudGVyZWQiLCAicGFyYWdyYXBoIiwgImJ1bGxldCIsICJxdW90ZXNpbmdsYmFzZSIsICJxdW90ZWRibGJhc2UiLCAicXVvdGVkYmxyaWdodCIsICJndWlsbGVtb3RyaWdodCIsICJlbGxpcHNpcyIsICJwZXJ0aG91c2FuZCIsICJxdWVzdGlvbmRvd24iLCAiZ3JhdmUiLCAiYWN1dGUiLCAiY2lyY3VtZmxleCIsICJ0aWxkZSIsICJtYWNyb24iLCAiYnJldmUiLCAiZG90YWNjZW50IiwgImRpZXJlc2lzIiwgInJpbmciLCAiY2VkaWxsYSIsICJodW5nYXJ1bWxhdXQiLCAib2dvbmVrIiwgImNhcm9uIiwgImVtZGFzaCIsICJBRSIsICJvcmRmZW1pbmluZSIsICJMc2xhc2giLCAiT3NsYXNoIiwgIk9FIiwgIm9yZG1hc2N1bGluZSIsICJhZSIsICJkb3RsZXNzaSIsICJsc2xhc2giLCAib3NsYXNoIiwgIm9lIiwgImdlcm1hbmRibHMiLCAib25lc3VwZXJpb3IiLCAibG9naWNhbG5vdCIsICJtdSIsICJ0cmFkZW1hcmsiLCAiRXRoIiwgIm9uZWhhbGYiLCAicGx1c21pbnVzIiwgIlRob3JuIiwgIm9uZXF1YXJ0ZXIiLCAiZGl2aWRlIiwgImJyb2tlbmJhciIsICJkZWdyZWUiLCAidGhvcm4iLCAidGhyZWVxdWFydGVycyIsICJ0d29zdXBlcmlvciIsICJyZWdpc3RlcmVkIiwgIm1pbnVzIiwgImV0aCIsICJtdWx0aXBseSIsICJ0aHJlZXN1cGVyaW9yIiwgImNvcHlyaWdodCIsICJBYWN1dGUiLCAiQWNpcmN1bWZsZXgiLCAiQWRpZXJlc2lzIiwgIkFncmF2ZSIsICJBcmluZyIsICJBdGlsZGUiLCAiQ2NlZGlsbGEiLCAiRWFjdXRlIiwgIkVjaXJjdW1mbGV4IiwgIkVkaWVyZXNpcyIsICJFZ3JhdmUiLCAiSWFjdXRlIiwgIkljaXJjdW1mbGV4IiwgIklkaWVyZXNpcyIsICJJZ3JhdmUiLCAiTnRpbGRlIiwgIk9hY3V0ZSIsICJPY2lyY3VtZmxleCIsICJPZGllcmVzaXMiLCAiT2dyYXZlIiwgIk90aWxkZSIsICJTY2Fyb24iLCAiVWFjdXRlIiwgIlVjaXJjdW1mbGV4IiwgIlVkaWVyZXNpcyIsICJVZ3JhdmUiLCAiWWFjdXRlIiwgIllkaWVyZXNpcyIsICJaY2Fyb24iLCAiYWFjdXRlIiwgImFjaXJjdW1mbGV4IiwgImFkaWVyZXNpcyIsICJhZ3JhdmUiLCAiYXJpbmciLCAiYXRpbGRlIiwgImNjZWRpbGxhIiwgImVhY3V0ZSIsICJlY2lyY3VtZmxleCIsICJlZGllcmVzaXMiLCAiZWdyYXZlIiwgImlhY3V0ZSIsICJpY2lyY3VtZmxleCIsICJpZGllcmVzaXMiLCAiaWdyYXZlIiwgIm50aWxkZSIsICJvYWN1dGUiLCAib2NpcmN1bWZsZXgiLCAib2RpZXJlc2lzIiwgIm9ncmF2ZSIsICJvdGlsZGUiLCAic2Nhcm9uIiwgInVhY3V0ZSIsICJ1Y2lyY3VtZmxleCIsICJ1ZGllcmVzaXMiLCAidWdyYXZlIiwgInlhY3V0ZSIsICJ5ZGllcmVzaXMiLCAiemNhcm9uIiwgImV4Y2xhbXNtYWxsIiwgIkh1bmdhcnVtbGF1dHNtYWxsIiwgImRvbGxhcm9sZHN0eWxlIiwgImRvbGxhcnN1cGVyaW9yIiwgImFtcGVyc2FuZHNtYWxsIiwgIkFjdXRlc21hbGwiLCAicGFyZW5sZWZ0c3VwZXJpb3IiLCAicGFyZW5yaWdodHN1cGVyaW9yIiwgInR3b2RvdGVubGVhZGVyIiwgIm9uZWRvdGVubGVhZGVyIiwgInplcm9vbGRzdHlsZSIsICJvbmVvbGRzdHlsZSIsICJ0d29vbGRzdHlsZSIsICJ0aHJlZW9sZHN0eWxlIiwgImZvdXJvbGRzdHlsZSIsICJmaXZlb2xkc3R5bGUiLCAic2l4b2xkc3R5bGUiLCAic2V2ZW5vbGRzdHlsZSIsICJlaWdodG9sZHN0eWxlIiwgIm5pbmVvbGRzdHlsZSIsICJjb21tYXN1cGVyaW9yIiwgInRocmVlcXVhcnRlcnNlbWRhc2giLCAicGVyaW9kc3VwZXJpb3IiLCAicXVlc3Rpb25zbWFsbCIsICJhc3VwZXJpb3IiLCAiYnN1cGVyaW9yIiwgImNlbnRzdXBlcmlvciIsICJkc3VwZXJpb3IiLCAiZXN1cGVyaW9yIiwgImlzdXBlcmlvciIsICJsc3VwZXJpb3IiLCAibXN1cGVyaW9yIiwgIm5zdXBlcmlvciIsICJvc3VwZXJpb3IiLCAicnN1cGVyaW9yIiwgInNzdXBlcmlvciIsICJ0c3VwZXJpb3IiLCAiZmYiLCAiZmZpIiwgImZmbCIsICJwYXJlbmxlZnRpbmZlcmlvciIsICJwYXJlbnJpZ2h0aW5mZXJpb3IiLCAiQ2lyY3VtZmxleHNtYWxsIiwgImh5cGhlbnN1cGVyaW9yIiwgIkdyYXZlc21hbGwiLCAiQXNtYWxsIiwgIkJzbWFsbCIsICJDc21hbGwiLCAiRHNtYWxsIiwgIkVzbWFsbCIsICJGc21hbGwiLCAiR3NtYWxsIiwgIkhzbWFsbCIsICJJc21hbGwiLCAiSnNtYWxsIiwgIktzbWFsbCIsICJMc21hbGwiLCAiTXNtYWxsIiwgIk5zbWFsbCIsICJPc21hbGwiLCAiUHNtYWxsIiwgIlFzbWFsbCIsICJSc21hbGwiLCAiU3NtYWxsIiwgIlRzbWFsbCIsICJVc21hbGwiLCAiVnNtYWxsIiwgIldzbWFsbCIsICJYc21hbGwiLCAiWXNtYWxsIiwgIlpzbWFsbCIsICJjb2xvbm1vbmV0YXJ5IiwgIm9uZWZpdHRlZCIsICJydXBpYWgiLCAiVGlsZGVzbWFsbCIsICJleGNsYW1kb3duc21hbGwiLCAiY2VudG9sZHN0eWxlIiwgIkxzbGFzaHNtYWxsIiwgIlNjYXJvbnNtYWxsIiwgIlpjYXJvbnNtYWxsIiwgIkRpZXJlc2lzc21hbGwiLCAiQnJldmVzbWFsbCIsICJDYXJvbnNtYWxsIiwgIkRvdGFjY2VudHNtYWxsIiwgIk1hY3JvbnNtYWxsIiwgImZpZ3VyZWRhc2giLCAiaHlwaGVuaW5mZXJpb3IiLCAiT2dvbmVrc21hbGwiLCAiUmluZ3NtYWxsIiwgIkNlZGlsbGFzbWFsbCIsICJxdWVzdGlvbmRvd25zbWFsbCIsICJvbmVlaWdodGgiLCAidGhyZWVlaWdodGhzIiwgImZpdmVlaWdodGhzIiwgInNldmVuZWlnaHRocyIsICJvbmV0aGlyZCIsICJ0d290aGlyZHMiLCAiemVyb3N1cGVyaW9yIiwgImZvdXJzdXBlcmlvciIsICJmaXZlc3VwZXJpb3IiLCAic2l4c3VwZXJpb3IiLCAic2V2ZW5zdXBlcmlvciIsICJlaWdodHN1cGVyaW9yIiwgIm5pbmVzdXBlcmlvciIsICJ6ZXJvaW5mZXJpb3IiLCAib25laW5mZXJpb3IiLCAidHdvaW5mZXJpb3IiLCAidGhyZWVpbmZlcmlvciIsICJmb3VyaW5mZXJpb3IiLCAiZml2ZWluZmVyaW9yIiwgInNpeGluZmVyaW9yIiwgInNldmVuaW5mZXJpb3IiLCAiZWlnaHRpbmZlcmlvciIsICJuaW5laW5mZXJpb3IiLCAiY2VudGluZmVyaW9yIiwgImRvbGxhcmluZmVyaW9yIiwgInBlcmlvZGluZmVyaW9yIiwgImNvbW1haW5mZXJpb3IiLCAiQWdyYXZlc21hbGwiLCAiQWFjdXRlc21hbGwiLCAiQWNpcmN1bWZsZXhzbWFsbCIsICJBdGlsZGVzbWFsbCIsICJBZGllcmVzaXNzbWFsbCIsICJBcmluZ3NtYWxsIiwgIkFFc21hbGwiLCAiQ2NlZGlsbGFzbWFsbCIsICJFZ3JhdmVzbWFsbCIsICJFYWN1dGVzbWFsbCIsICJFY2lyY3VtZmxleHNtYWxsIiwgIkVkaWVyZXNpc3NtYWxsIiwgIklncmF2ZXNtYWxsIiwgIklhY3V0ZXNtYWxsIiwgIkljaXJjdW1mbGV4c21hbGwiLCAiSWRpZXJlc2lzc21hbGwiLCAiRXRoc21hbGwiLCAiTnRpbGRlc21hbGwiLCAiT2dyYXZlc21hbGwiLCAiT2FjdXRlc21hbGwiLCAiT2NpcmN1bWZsZXhzbWFsbCIsICJPdGlsZGVzbWFsbCIsICJPZGllcmVzaXNzbWFsbCIsICJPRXNtYWxsIiwgIk9zbGFzaHNtYWxsIiwgIlVncmF2ZXNtYWxsIiwgIlVhY3V0ZXNtYWxsIiwgIlVjaXJjdW1mbGV4c21hbGwiLCAiVWRpZXJlc2lzc21hbGwiLCAiWWFjdXRlc21hbGwiLCAiVGhvcm5zbWFsbCIsICJZZGllcmVzaXNzbWFsbCIsICIwMDEuMDAwIiwgIjAwMS4wMDEiLCAiMDAxLjAwMiIsICIwMDEuMDAzIiwgIkJsYWNrIiwgIkJvbGQiLCAiQm9vayIsICJMaWdodCIsICJNZWRpdW0iLCAiUmVndWxhciIsICJSb21hbiIsICJTZW1pYm9sZCJdOwoKdmFyIFN0YW5kYXJkRW5jb2RpbmcgPSBbJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnc3BhY2UnLCAnZXhjbGFtJywgJ3F1b3RlZGJsJywgJ251bWJlcnNpZ24nLCAnZG9sbGFyJywgJ3BlcmNlbnQnLCAnYW1wZXJzYW5kJywgJ3F1b3RlcmlnaHQnLCAncGFyZW5sZWZ0JywgJ3BhcmVucmlnaHQnLCAnYXN0ZXJpc2snLCAncGx1cycsICdjb21tYScsICdoeXBoZW4nLCAncGVyaW9kJywgJ3NsYXNoJywgJ3plcm8nLCAnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJywgJ2ZpdmUnLCAnc2l4JywgJ3NldmVuJywgJ2VpZ2h0JywgJ25pbmUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywgJ2xlc3MnLCAnZXF1YWwnLCAnZ3JlYXRlcicsICdxdWVzdGlvbicsICdhdCcsICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLCAnYnJhY2tldGxlZnQnLCAnYmFja3NsYXNoJywgJ2JyYWNrZXRyaWdodCcsICdhc2NpaWNpcmN1bScsICd1bmRlcnNjb3JlJywgJ3F1b3RlbGVmdCcsICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCcsICdtJywgJ24nLCAnbycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5JywgJ3onLCAnYnJhY2VsZWZ0JywgJ2JhcicsICdicmFjZXJpZ2h0JywgJ2FzY2lpdGlsZGUnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJ2V4Y2xhbWRvd24nLCAnY2VudCcsICdzdGVybGluZycsICdmcmFjdGlvbicsICd5ZW4nLCAnZmxvcmluJywgJ3NlY3Rpb24nLCAnY3VycmVuY3knLCAncXVvdGVzaW5nbGUnLCAncXVvdGVkYmxsZWZ0JywgJ2d1aWxsZW1vdGxlZnQnLCAnZ3VpbHNpbmdsbGVmdCcsICdndWlsc2luZ2xyaWdodCcsICdmaScsICdmbCcsICcnLCAnZW5kYXNoJywgJ2RhZ2dlcicsICdkYWdnZXJkYmwnLCAncGVyaW9kY2VudGVyZWQnLCAnJywgJ3BhcmFncmFwaCcsICdidWxsZXQnLCAncXVvdGVzaW5nbGJhc2UnLCAncXVvdGVkYmxiYXNlJywgJ3F1b3RlZGJscmlnaHQnLCAnZ3VpbGxlbW90cmlnaHQnLCAnZWxsaXBzaXMnLCAncGVydGhvdXNhbmQnLCAnJywgJ3F1ZXN0aW9uZG93bicsICcnLCAnZ3JhdmUnLCAnYWN1dGUnLCAnY2lyY3VtZmxleCcsICd0aWxkZScsICdtYWNyb24nLCAnYnJldmUnLCAnZG90YWNjZW50JywgJ2RpZXJlc2lzJywgJycsICdyaW5nJywgJ2NlZGlsbGEnLCAnJywgJ2h1bmdhcnVtbGF1dCcsICdvZ29uZWsnLCAnY2Fyb24nLCAnZW1kYXNoJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICdBRScsICcnLCAnb3JkZmVtaW5pbmUnLCAnJywgJycsICcnLCAnJywgJ0xzbGFzaCcsICdPc2xhc2gnLCAnT0UnLCAnb3JkbWFzY3VsaW5lJywgJycsICcnLCAnJywgJycsICcnLCAnYWUnLCAnJywgJycsICcnLCAnZG90bGVzc2knLCAnJywgJycsICdsc2xhc2gnLCAnb3NsYXNoJywgJ29lJywgJ2dlcm1hbmRibHMnXTsKCnZhciBFeHBlcnRFbmNvZGluZyA9IFsnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICdzcGFjZScsICdleGNsYW1zbWFsbCcsICdIdW5nYXJ1bWxhdXRzbWFsbCcsICcnLCAnZG9sbGFyb2xkc3R5bGUnLCAnZG9sbGFyc3VwZXJpb3InLCAnYW1wZXJzYW5kc21hbGwnLCAnQWN1dGVzbWFsbCcsICdwYXJlbmxlZnRzdXBlcmlvcicsICdwYXJlbnJpZ2h0c3VwZXJpb3InLCAndHdvZG90ZW5sZWFkZXInLCAnb25lZG90ZW5sZWFkZXInLCAnY29tbWEnLCAnaHlwaGVuJywgJ3BlcmlvZCcsICdmcmFjdGlvbicsICd6ZXJvb2xkc3R5bGUnLCAnb25lb2xkc3R5bGUnLCAndHdvb2xkc3R5bGUnLCAndGhyZWVvbGRzdHlsZScsICdmb3Vyb2xkc3R5bGUnLCAnZml2ZW9sZHN0eWxlJywgJ3NpeG9sZHN0eWxlJywgJ3NldmVub2xkc3R5bGUnLCAnZWlnaHRvbGRzdHlsZScsICduaW5lb2xkc3R5bGUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywgJ2NvbW1hc3VwZXJpb3InLCAndGhyZWVxdWFydGVyc2VtZGFzaCcsICdwZXJpb2RzdXBlcmlvcicsICdxdWVzdGlvbnNtYWxsJywgJycsICdhc3VwZXJpb3InLCAnYnN1cGVyaW9yJywgJ2NlbnRzdXBlcmlvcicsICdkc3VwZXJpb3InLCAnZXN1cGVyaW9yJywgJycsICcnLCAnaXN1cGVyaW9yJywgJycsICcnLCAnbHN1cGVyaW9yJywgJ21zdXBlcmlvcicsICduc3VwZXJpb3InLCAnb3N1cGVyaW9yJywgJycsICcnLCAncnN1cGVyaW9yJywgJ3NzdXBlcmlvcicsICd0c3VwZXJpb3InLCAnJywgJ2ZmJywgJ2ZpJywgJ2ZsJywgJ2ZmaScsICdmZmwnLCAncGFyZW5sZWZ0aW5mZXJpb3InLCAnJywgJ3BhcmVucmlnaHRpbmZlcmlvcicsICdDaXJjdW1mbGV4c21hbGwnLCAnaHlwaGVuc3VwZXJpb3InLCAnR3JhdmVzbWFsbCcsICdBc21hbGwnLCAnQnNtYWxsJywgJ0NzbWFsbCcsICdEc21hbGwnLCAnRXNtYWxsJywgJ0ZzbWFsbCcsICdHc21hbGwnLCAnSHNtYWxsJywgJ0lzbWFsbCcsICdKc21hbGwnLCAnS3NtYWxsJywgJ0xzbWFsbCcsICdNc21hbGwnLCAnTnNtYWxsJywgJ09zbWFsbCcsICdQc21hbGwnLCAnUXNtYWxsJywgJ1JzbWFsbCcsICdTc21hbGwnLCAnVHNtYWxsJywgJ1VzbWFsbCcsICdWc21hbGwnLCAnV3NtYWxsJywgJ1hzbWFsbCcsICdZc21hbGwnLCAnWnNtYWxsJywgJ2NvbG9ubW9uZXRhcnknLCAnb25lZml0dGVkJywgJ3J1cGlhaCcsICdUaWxkZXNtYWxsJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICdleGNsYW1kb3duc21hbGwnLCAnY2VudG9sZHN0eWxlJywgJ0xzbGFzaHNtYWxsJywgJycsICcnLCAnU2Nhcm9uc21hbGwnLCAnWmNhcm9uc21hbGwnLCAnRGllcmVzaXNzbWFsbCcsICdCcmV2ZXNtYWxsJywgJ0Nhcm9uc21hbGwnLCAnJywgJ0RvdGFjY2VudHNtYWxsJywgJycsICcnLCAnTWFjcm9uc21hbGwnLCAnJywgJycsICdmaWd1cmVkYXNoJywgJ2h5cGhlbmluZmVyaW9yJywgJycsICcnLCAnT2dvbmVrc21hbGwnLCAnUmluZ3NtYWxsJywgJ0NlZGlsbGFzbWFsbCcsICcnLCAnJywgJycsICdvbmVxdWFydGVyJywgJ29uZWhhbGYnLCAndGhyZWVxdWFydGVycycsICdxdWVzdGlvbmRvd25zbWFsbCcsICdvbmVlaWdodGgnLCAndGhyZWVlaWdodGhzJywgJ2ZpdmVlaWdodGhzJywgJ3NldmVuZWlnaHRocycsICdvbmV0aGlyZCcsICd0d290aGlyZHMnLCAnJywgJycsICd6ZXJvc3VwZXJpb3InLCAnb25lc3VwZXJpb3InLCAndHdvc3VwZXJpb3InLCAndGhyZWVzdXBlcmlvcicsICdmb3Vyc3VwZXJpb3InLCAnZml2ZXN1cGVyaW9yJywgJ3NpeHN1cGVyaW9yJywgJ3NldmVuc3VwZXJpb3InLCAnZWlnaHRzdXBlcmlvcicsICduaW5lc3VwZXJpb3InLCAnemVyb2luZmVyaW9yJywgJ29uZWluZmVyaW9yJywgJ3R3b2luZmVyaW9yJywgJ3RocmVlaW5mZXJpb3InLCAnZm91cmluZmVyaW9yJywgJ2ZpdmVpbmZlcmlvcicsICdzaXhpbmZlcmlvcicsICdzZXZlbmluZmVyaW9yJywgJ2VpZ2h0aW5mZXJpb3InLCAnbmluZWluZmVyaW9yJywgJ2NlbnRpbmZlcmlvcicsICdkb2xsYXJpbmZlcmlvcicsICdwZXJpb2RpbmZlcmlvcicsICdjb21tYWluZmVyaW9yJywgJ0FncmF2ZXNtYWxsJywgJ0FhY3V0ZXNtYWxsJywgJ0FjaXJjdW1mbGV4c21hbGwnLCAnQXRpbGRlc21hbGwnLCAnQWRpZXJlc2lzc21hbGwnLCAnQXJpbmdzbWFsbCcsICdBRXNtYWxsJywgJ0NjZWRpbGxhc21hbGwnLCAnRWdyYXZlc21hbGwnLCAnRWFjdXRlc21hbGwnLCAnRWNpcmN1bWZsZXhzbWFsbCcsICdFZGllcmVzaXNzbWFsbCcsICdJZ3JhdmVzbWFsbCcsICdJYWN1dGVzbWFsbCcsICdJY2lyY3VtZmxleHNtYWxsJywgJ0lkaWVyZXNpc3NtYWxsJywgJ0V0aHNtYWxsJywgJ050aWxkZXNtYWxsJywgJ09ncmF2ZXNtYWxsJywgJ09hY3V0ZXNtYWxsJywgJ09jaXJjdW1mbGV4c21hbGwnLCAnT3RpbGRlc21hbGwnLCAnT2RpZXJlc2lzc21hbGwnLCAnT0VzbWFsbCcsICdPc2xhc2hzbWFsbCcsICdVZ3JhdmVzbWFsbCcsICdVYWN1dGVzbWFsbCcsICdVY2lyY3VtZmxleHNtYWxsJywgJ1VkaWVyZXNpc3NtYWxsJywgJ1lhY3V0ZXNtYWxsJywgJ1Rob3Juc21hbGwnLCAnWWRpZXJlc2lzc21hbGwnXTsKCnZhciBJU09BZG9iZUNoYXJzZXQgPSBbJy5ub3RkZWYnLCAnc3BhY2UnLCAnZXhjbGFtJywgJ3F1b3RlZGJsJywgJ251bWJlcnNpZ24nLCAnZG9sbGFyJywgJ3BlcmNlbnQnLCAnYW1wZXJzYW5kJywgJ3F1b3RlcmlnaHQnLCAncGFyZW5sZWZ0JywgJ3BhcmVucmlnaHQnLCAnYXN0ZXJpc2snLCAncGx1cycsICdjb21tYScsICdoeXBoZW4nLCAncGVyaW9kJywgJ3NsYXNoJywgJ3plcm8nLCAnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJywgJ2ZpdmUnLCAnc2l4JywgJ3NldmVuJywgJ2VpZ2h0JywgJ25pbmUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywgJ2xlc3MnLCAnZXF1YWwnLCAnZ3JlYXRlcicsICdxdWVzdGlvbicsICdhdCcsICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gnLCAnSScsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnTycsICdQJywgJ1EnLCAnUicsICdTJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLCAnYnJhY2tldGxlZnQnLCAnYmFja3NsYXNoJywgJ2JyYWNrZXRyaWdodCcsICdhc2NpaWNpcmN1bScsICd1bmRlcnNjb3JlJywgJ3F1b3RlbGVmdCcsICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCcsICdtJywgJ24nLCAnbycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5JywgJ3onLCAnYnJhY2VsZWZ0JywgJ2JhcicsICdicmFjZXJpZ2h0JywgJ2FzY2lpdGlsZGUnLCAnZXhjbGFtZG93bicsICdjZW50JywgJ3N0ZXJsaW5nJywgJ2ZyYWN0aW9uJywgJ3llbicsICdmbG9yaW4nLCAnc2VjdGlvbicsICdjdXJyZW5jeScsICdxdW90ZXNpbmdsZScsICdxdW90ZWRibGxlZnQnLCAnZ3VpbGxlbW90bGVmdCcsICdndWlsc2luZ2xsZWZ0JywgJ2d1aWxzaW5nbHJpZ2h0JywgJ2ZpJywgJ2ZsJywgJ2VuZGFzaCcsICdkYWdnZXInLCAnZGFnZ2VyZGJsJywgJ3BlcmlvZGNlbnRlcmVkJywgJ3BhcmFncmFwaCcsICdidWxsZXQnLCAncXVvdGVzaW5nbGJhc2UnLCAncXVvdGVkYmxiYXNlJywgJ3F1b3RlZGJscmlnaHQnLCAnZ3VpbGxlbW90cmlnaHQnLCAnZWxsaXBzaXMnLCAncGVydGhvdXNhbmQnLCAncXVlc3Rpb25kb3duJywgJ2dyYXZlJywgJ2FjdXRlJywgJ2NpcmN1bWZsZXgnLCAndGlsZGUnLCAnbWFjcm9uJywgJ2JyZXZlJywgJ2RvdGFjY2VudCcsICdkaWVyZXNpcycsICdyaW5nJywgJ2NlZGlsbGEnLCAnaHVuZ2FydW1sYXV0JywgJ29nb25laycsICdjYXJvbicsICdlbWRhc2gnLCAnQUUnLCAnb3JkZmVtaW5pbmUnLCAnTHNsYXNoJywgJ09zbGFzaCcsICdPRScsICdvcmRtYXNjdWxpbmUnLCAnYWUnLCAnZG90bGVzc2knLCAnbHNsYXNoJywgJ29zbGFzaCcsICdvZScsICdnZXJtYW5kYmxzJywgJ29uZXN1cGVyaW9yJywgJ2xvZ2ljYWxub3QnLCAnbXUnLCAndHJhZGVtYXJrJywgJ0V0aCcsICdvbmVoYWxmJywgJ3BsdXNtaW51cycsICdUaG9ybicsICdvbmVxdWFydGVyJywgJ2RpdmlkZScsICdicm9rZW5iYXInLCAnZGVncmVlJywgJ3Rob3JuJywgJ3RocmVlcXVhcnRlcnMnLCAndHdvc3VwZXJpb3InLCAncmVnaXN0ZXJlZCcsICdtaW51cycsICdldGgnLCAnbXVsdGlwbHknLCAndGhyZWVzdXBlcmlvcicsICdjb3B5cmlnaHQnLCAnQWFjdXRlJywgJ0FjaXJjdW1mbGV4JywgJ0FkaWVyZXNpcycsICdBZ3JhdmUnLCAnQXJpbmcnLCAnQXRpbGRlJywgJ0NjZWRpbGxhJywgJ0VhY3V0ZScsICdFY2lyY3VtZmxleCcsICdFZGllcmVzaXMnLCAnRWdyYXZlJywgJ0lhY3V0ZScsICdJY2lyY3VtZmxleCcsICdJZGllcmVzaXMnLCAnSWdyYXZlJywgJ050aWxkZScsICdPYWN1dGUnLCAnT2NpcmN1bWZsZXgnLCAnT2RpZXJlc2lzJywgJ09ncmF2ZScsICdPdGlsZGUnLCAnU2Nhcm9uJywgJ1VhY3V0ZScsICdVY2lyY3VtZmxleCcsICdVZGllcmVzaXMnLCAnVWdyYXZlJywgJ1lhY3V0ZScsICdZZGllcmVzaXMnLCAnWmNhcm9uJywgJ2FhY3V0ZScsICdhY2lyY3VtZmxleCcsICdhZGllcmVzaXMnLCAnYWdyYXZlJywgJ2FyaW5nJywgJ2F0aWxkZScsICdjY2VkaWxsYScsICdlYWN1dGUnLCAnZWNpcmN1bWZsZXgnLCAnZWRpZXJlc2lzJywgJ2VncmF2ZScsICdpYWN1dGUnLCAnaWNpcmN1bWZsZXgnLCAnaWRpZXJlc2lzJywgJ2lncmF2ZScsICdudGlsZGUnLCAnb2FjdXRlJywgJ29jaXJjdW1mbGV4JywgJ29kaWVyZXNpcycsICdvZ3JhdmUnLCAnb3RpbGRlJywgJ3NjYXJvbicsICd1YWN1dGUnLCAndWNpcmN1bWZsZXgnLCAndWRpZXJlc2lzJywgJ3VncmF2ZScsICd5YWN1dGUnLCAneWRpZXJlc2lzJywgJ3pjYXJvbiddOwoKdmFyIEV4cGVydENoYXJzZXQgPSBbJy5ub3RkZWYnLCAnc3BhY2UnLCAnZXhjbGFtc21hbGwnLCAnSHVuZ2FydW1sYXV0c21hbGwnLCAnZG9sbGFyb2xkc3R5bGUnLCAnZG9sbGFyc3VwZXJpb3InLCAnYW1wZXJzYW5kc21hbGwnLCAnQWN1dGVzbWFsbCcsICdwYXJlbmxlZnRzdXBlcmlvcicsICdwYXJlbnJpZ2h0c3VwZXJpb3InLCAndHdvZG90ZW5sZWFkZXInLCAnb25lZG90ZW5sZWFkZXInLCAnY29tbWEnLCAnaHlwaGVuJywgJ3BlcmlvZCcsICdmcmFjdGlvbicsICd6ZXJvb2xkc3R5bGUnLCAnb25lb2xkc3R5bGUnLCAndHdvb2xkc3R5bGUnLCAndGhyZWVvbGRzdHlsZScsICdmb3Vyb2xkc3R5bGUnLCAnZml2ZW9sZHN0eWxlJywgJ3NpeG9sZHN0eWxlJywgJ3NldmVub2xkc3R5bGUnLCAnZWlnaHRvbGRzdHlsZScsICduaW5lb2xkc3R5bGUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywgJ2NvbW1hc3VwZXJpb3InLCAndGhyZWVxdWFydGVyc2VtZGFzaCcsICdwZXJpb2RzdXBlcmlvcicsICdxdWVzdGlvbnNtYWxsJywgJ2FzdXBlcmlvcicsICdic3VwZXJpb3InLCAnY2VudHN1cGVyaW9yJywgJ2RzdXBlcmlvcicsICdlc3VwZXJpb3InLCAnaXN1cGVyaW9yJywgJ2xzdXBlcmlvcicsICdtc3VwZXJpb3InLCAnbnN1cGVyaW9yJywgJ29zdXBlcmlvcicsICdyc3VwZXJpb3InLCAnc3N1cGVyaW9yJywgJ3RzdXBlcmlvcicsICdmZicsICdmaScsICdmbCcsICdmZmknLCAnZmZsJywgJ3BhcmVubGVmdGluZmVyaW9yJywgJ3BhcmVucmlnaHRpbmZlcmlvcicsICdDaXJjdW1mbGV4c21hbGwnLCAnaHlwaGVuc3VwZXJpb3InLCAnR3JhdmVzbWFsbCcsICdBc21hbGwnLCAnQnNtYWxsJywgJ0NzbWFsbCcsICdEc21hbGwnLCAnRXNtYWxsJywgJ0ZzbWFsbCcsICdHc21hbGwnLCAnSHNtYWxsJywgJ0lzbWFsbCcsICdKc21hbGwnLCAnS3NtYWxsJywgJ0xzbWFsbCcsICdNc21hbGwnLCAnTnNtYWxsJywgJ09zbWFsbCcsICdQc21hbGwnLCAnUXNtYWxsJywgJ1JzbWFsbCcsICdTc21hbGwnLCAnVHNtYWxsJywgJ1VzbWFsbCcsICdWc21hbGwnLCAnV3NtYWxsJywgJ1hzbWFsbCcsICdZc21hbGwnLCAnWnNtYWxsJywgJ2NvbG9ubW9uZXRhcnknLCAnb25lZml0dGVkJywgJ3J1cGlhaCcsICdUaWxkZXNtYWxsJywgJ2V4Y2xhbWRvd25zbWFsbCcsICdjZW50b2xkc3R5bGUnLCAnTHNsYXNoc21hbGwnLCAnU2Nhcm9uc21hbGwnLCAnWmNhcm9uc21hbGwnLCAnRGllcmVzaXNzbWFsbCcsICdCcmV2ZXNtYWxsJywgJ0Nhcm9uc21hbGwnLCAnRG90YWNjZW50c21hbGwnLCAnTWFjcm9uc21hbGwnLCAnZmlndXJlZGFzaCcsICdoeXBoZW5pbmZlcmlvcicsICdPZ29uZWtzbWFsbCcsICdSaW5nc21hbGwnLCAnQ2VkaWxsYXNtYWxsJywgJ29uZXF1YXJ0ZXInLCAnb25laGFsZicsICd0aHJlZXF1YXJ0ZXJzJywgJ3F1ZXN0aW9uZG93bnNtYWxsJywgJ29uZWVpZ2h0aCcsICd0aHJlZWVpZ2h0aHMnLCAnZml2ZWVpZ2h0aHMnLCAnc2V2ZW5laWdodGhzJywgJ29uZXRoaXJkJywgJ3R3b3RoaXJkcycsICd6ZXJvc3VwZXJpb3InLCAnb25lc3VwZXJpb3InLCAndHdvc3VwZXJpb3InLCAndGhyZWVzdXBlcmlvcicsICdmb3Vyc3VwZXJpb3InLCAnZml2ZXN1cGVyaW9yJywgJ3NpeHN1cGVyaW9yJywgJ3NldmVuc3VwZXJpb3InLCAnZWlnaHRzdXBlcmlvcicsICduaW5lc3VwZXJpb3InLCAnemVyb2luZmVyaW9yJywgJ29uZWluZmVyaW9yJywgJ3R3b2luZmVyaW9yJywgJ3RocmVlaW5mZXJpb3InLCAnZm91cmluZmVyaW9yJywgJ2ZpdmVpbmZlcmlvcicsICdzaXhpbmZlcmlvcicsICdzZXZlbmluZmVyaW9yJywgJ2VpZ2h0aW5mZXJpb3InLCAnbmluZWluZmVyaW9yJywgJ2NlbnRpbmZlcmlvcicsICdkb2xsYXJpbmZlcmlvcicsICdwZXJpb2RpbmZlcmlvcicsICdjb21tYWluZmVyaW9yJywgJ0FncmF2ZXNtYWxsJywgJ0FhY3V0ZXNtYWxsJywgJ0FjaXJjdW1mbGV4c21hbGwnLCAnQXRpbGRlc21hbGwnLCAnQWRpZXJlc2lzc21hbGwnLCAnQXJpbmdzbWFsbCcsICdBRXNtYWxsJywgJ0NjZWRpbGxhc21hbGwnLCAnRWdyYXZlc21hbGwnLCAnRWFjdXRlc21hbGwnLCAnRWNpcmN1bWZsZXhzbWFsbCcsICdFZGllcmVzaXNzbWFsbCcsICdJZ3JhdmVzbWFsbCcsICdJYWN1dGVzbWFsbCcsICdJY2lyY3VtZmxleHNtYWxsJywgJ0lkaWVyZXNpc3NtYWxsJywgJ0V0aHNtYWxsJywgJ050aWxkZXNtYWxsJywgJ09ncmF2ZXNtYWxsJywgJ09hY3V0ZXNtYWxsJywgJ09jaXJjdW1mbGV4c21hbGwnLCAnT3RpbGRlc21hbGwnLCAnT2RpZXJlc2lzc21hbGwnLCAnT0VzbWFsbCcsICdPc2xhc2hzbWFsbCcsICdVZ3JhdmVzbWFsbCcsICdVYWN1dGVzbWFsbCcsICdVY2lyY3VtZmxleHNtYWxsJywgJ1VkaWVyZXNpc3NtYWxsJywgJ1lhY3V0ZXNtYWxsJywgJ1Rob3Juc21hbGwnLCAnWWRpZXJlc2lzc21hbGwnXTsKCnZhciBFeHBlcnRTdWJzZXRDaGFyc2V0ID0gWycubm90ZGVmJywgJ3NwYWNlJywgJ2RvbGxhcm9sZHN0eWxlJywgJ2RvbGxhcnN1cGVyaW9yJywgJ3BhcmVubGVmdHN1cGVyaW9yJywgJ3BhcmVucmlnaHRzdXBlcmlvcicsICd0d29kb3RlbmxlYWRlcicsICdvbmVkb3RlbmxlYWRlcicsICdjb21tYScsICdoeXBoZW4nLCAncGVyaW9kJywgJ2ZyYWN0aW9uJywgJ3plcm9vbGRzdHlsZScsICdvbmVvbGRzdHlsZScsICd0d29vbGRzdHlsZScsICd0aHJlZW9sZHN0eWxlJywgJ2ZvdXJvbGRzdHlsZScsICdmaXZlb2xkc3R5bGUnLCAnc2l4b2xkc3R5bGUnLCAnc2V2ZW5vbGRzdHlsZScsICdlaWdodG9sZHN0eWxlJywgJ25pbmVvbGRzdHlsZScsICdjb2xvbicsICdzZW1pY29sb24nLCAnY29tbWFzdXBlcmlvcicsICd0aHJlZXF1YXJ0ZXJzZW1kYXNoJywgJ3BlcmlvZHN1cGVyaW9yJywgJ2FzdXBlcmlvcicsICdic3VwZXJpb3InLCAnY2VudHN1cGVyaW9yJywgJ2RzdXBlcmlvcicsICdlc3VwZXJpb3InLCAnaXN1cGVyaW9yJywgJ2xzdXBlcmlvcicsICdtc3VwZXJpb3InLCAnbnN1cGVyaW9yJywgJ29zdXBlcmlvcicsICdyc3VwZXJpb3InLCAnc3N1cGVyaW9yJywgJ3RzdXBlcmlvcicsICdmZicsICdmaScsICdmbCcsICdmZmknLCAnZmZsJywgJ3BhcmVubGVmdGluZmVyaW9yJywgJ3BhcmVucmlnaHRpbmZlcmlvcicsICdoeXBoZW5zdXBlcmlvcicsICdjb2xvbm1vbmV0YXJ5JywgJ29uZWZpdHRlZCcsICdydXBpYWgnLCAnY2VudG9sZHN0eWxlJywgJ2ZpZ3VyZWRhc2gnLCAnaHlwaGVuaW5mZXJpb3InLCAnb25lcXVhcnRlcicsICdvbmVoYWxmJywgJ3RocmVlcXVhcnRlcnMnLCAnb25lZWlnaHRoJywgJ3RocmVlZWlnaHRocycsICdmaXZlZWlnaHRocycsICdzZXZlbmVpZ2h0aHMnLCAnb25ldGhpcmQnLCAndHdvdGhpcmRzJywgJ3plcm9zdXBlcmlvcicsICdvbmVzdXBlcmlvcicsICd0d29zdXBlcmlvcicsICd0aHJlZXN1cGVyaW9yJywgJ2ZvdXJzdXBlcmlvcicsICdmaXZlc3VwZXJpb3InLCAnc2l4c3VwZXJpb3InLCAnc2V2ZW5zdXBlcmlvcicsICdlaWdodHN1cGVyaW9yJywgJ25pbmVzdXBlcmlvcicsICd6ZXJvaW5mZXJpb3InLCAnb25laW5mZXJpb3InLCAndHdvaW5mZXJpb3InLCAndGhyZWVpbmZlcmlvcicsICdmb3VyaW5mZXJpb3InLCAnZml2ZWluZmVyaW9yJywgJ3NpeGluZmVyaW9yJywgJ3NldmVuaW5mZXJpb3InLCAnZWlnaHRpbmZlcmlvcicsICduaW5laW5mZXJpb3InLCAnY2VudGluZmVyaW9yJywgJ2RvbGxhcmluZmVyaW9yJywgJ3BlcmlvZGluZmVyaW9yJywgJ2NvbW1haW5mZXJpb3InXTsKCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi8vIFNjcmlwdHMgYW5kIExhbmd1YWdlcyAjCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgp2YXIgTGFuZ1N5c1RhYmxlID0gbmV3IHIuU3RydWN0KHsKICByZXNlcnZlZDogbmV3IHIuUmVzZXJ2ZWQoci51aW50MTYpLAogIHJlcUZlYXR1cmVJbmRleDogci51aW50MTYsCiAgZmVhdHVyZUNvdW50OiByLnVpbnQxNiwKICBmZWF0dXJlSW5kZXhlczogbmV3IHIuQXJyYXkoci51aW50MTYsICdmZWF0dXJlQ291bnQnKQp9KTsKCnZhciBMYW5nU3lzUmVjb3JkID0gbmV3IHIuU3RydWN0KHsKICB0YWc6IG5ldyByLlN0cmluZyg0KSwKICBsYW5nU3lzOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBMYW5nU3lzVGFibGUsIHsgdHlwZTogJ3BhcmVudCcgfSkKfSk7Cgp2YXIgU2NyaXB0ID0gbmV3IHIuU3RydWN0KHsKICBkZWZhdWx0TGFuZ1N5czogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgTGFuZ1N5c1RhYmxlKSwKICBjb3VudDogci51aW50MTYsCiAgbGFuZ1N5c1JlY29yZHM6IG5ldyByLkFycmF5KExhbmdTeXNSZWNvcmQsICdjb3VudCcpCn0pOwoKdmFyIFNjcmlwdFJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgdGFnOiBuZXcgci5TdHJpbmcoNCksCiAgc2NyaXB0OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBTY3JpcHQsIHsgdHlwZTogJ3BhcmVudCcgfSkKfSk7Cgp2YXIgU2NyaXB0TGlzdCA9IG5ldyByLkFycmF5KFNjcmlwdFJlY29yZCwgci51aW50MTYpOwoKLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovLyBGZWF0dXJlcyBhbmQgTG9va3VwcyAjCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnZhciBGZWF0dXJlID0gbmV3IHIuU3RydWN0KHsKICBmZWF0dXJlUGFyYW1zOiByLnVpbnQxNiwgLy8gcG9pbnRlcgogIGxvb2t1cENvdW50OiByLnVpbnQxNiwKICBsb29rdXBMaXN0SW5kZXhlczogbmV3IHIuQXJyYXkoci51aW50MTYsICdsb29rdXBDb3VudCcpCn0pOwoKdmFyIEZlYXR1cmVSZWNvcmQgPSBuZXcgci5TdHJ1Y3QoewogIHRhZzogbmV3IHIuU3RyaW5nKDQpLAogIGZlYXR1cmU6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEZlYXR1cmUsIHsgdHlwZTogJ3BhcmVudCcgfSkKfSk7Cgp2YXIgRmVhdHVyZUxpc3QgPSBuZXcgci5BcnJheShGZWF0dXJlUmVjb3JkLCByLnVpbnQxNik7Cgp2YXIgTG9va3VwRmxhZ3MgPSBuZXcgci5TdHJ1Y3QoewogIG1hcmtBdHRhY2htZW50VHlwZTogci51aW50OCwKICBmbGFnczogbmV3IHIuQml0ZmllbGQoci51aW50OCwgWydyaWdodFRvTGVmdCcsICdpZ25vcmVCYXNlR2x5cGhzJywgJ2lnbm9yZUxpZ2F0dXJlcycsICdpZ25vcmVNYXJrcycsICd1c2VNYXJrRmlsdGVyaW5nU2V0J10pCn0pOwoKZnVuY3Rpb24gTG9va3VwTGlzdChTdWJUYWJsZSkgewogIHZhciBMb29rdXAgPSBuZXcgci5TdHJ1Y3QoewogICAgbG9va3VwVHlwZTogci51aW50MTYsCiAgICBmbGFnczogTG9va3VwRmxhZ3MsCiAgICBzdWJUYWJsZUNvdW50OiByLnVpbnQxNiwKICAgIHN1YlRhYmxlczogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgU3ViVGFibGUpLCAnc3ViVGFibGVDb3VudCcpLAogICAgbWFya0ZpbHRlcmluZ1NldDogbmV3IHIuT3B0aW9uYWwoci51aW50MTYsIGZ1bmN0aW9uICh0KSB7CiAgICAgIHJldHVybiB0LmZsYWdzLmZsYWdzLnVzZU1hcmtGaWx0ZXJpbmdTZXQ7CiAgICB9KQogIH0pOwoKICByZXR1cm4gbmV3IHIuTGF6eUFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIExvb2t1cCksIHIudWludDE2KTsKfQoKLy8jIyMjIyMjIyMjIyMjIyMjIwovLyBDb3ZlcmFnZSBUYWJsZSAjCi8vIyMjIyMjIyMjIyMjIyMjIyMKCnZhciBSYW5nZVJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgc3RhcnQ6IHIudWludDE2LAogIGVuZDogci51aW50MTYsCiAgc3RhcnRDb3ZlcmFnZUluZGV4OiByLnVpbnQxNgp9KTsKCnZhciBDb3ZlcmFnZSA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQxNiwgewogIDE6IHsKICAgIGdseXBoQ291bnQ6IHIudWludDE2LAogICAgZ2x5cGhzOiBuZXcgci5BcnJheShyLnVpbnQxNiwgJ2dseXBoQ291bnQnKQogIH0sCiAgMjogewogICAgcmFuZ2VDb3VudDogci51aW50MTYsCiAgICByYW5nZVJlY29yZHM6IG5ldyByLkFycmF5KFJhbmdlUmVjb3JkLCAncmFuZ2VDb3VudCcpCiAgfQp9KTsKCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovLyBDbGFzcyBEZWZpbml0aW9uIFRhYmxlICMKLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgp2YXIgQ2xhc3NSYW5nZVJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgc3RhcnQ6IHIudWludDE2LAogIGVuZDogci51aW50MTYsCiAgY2xhc3M6IHIudWludDE2Cn0pOwoKdmFyIENsYXNzRGVmID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgMTogeyAvLyBDbGFzcyBhcnJheQogICAgc3RhcnRHbHlwaDogci51aW50MTYsCiAgICBnbHlwaENvdW50OiByLnVpbnQxNiwKICAgIGNsYXNzVmFsdWVBcnJheTogbmV3IHIuQXJyYXkoci51aW50MTYsICdnbHlwaENvdW50JykKICB9LAogIDI6IHsgLy8gQ2xhc3MgcmFuZ2VzCiAgICBjbGFzc1JhbmdlQ291bnQ6IHIudWludDE2LAogICAgY2xhc3NSYW5nZVJlY29yZDogbmV3IHIuQXJyYXkoQ2xhc3NSYW5nZVJlY29yZCwgJ2NsYXNzUmFuZ2VDb3VudCcpCiAgfQp9KTsKCi8vIyMjIyMjIyMjIyMjIyMjCi8vIERldmljZSBUYWJsZSAjCi8vIyMjIyMjIyMjIyMjIyMjCgp2YXIgRGV2aWNlID0gbmV3IHIuU3RydWN0KHsKICBhOiByLnVpbnQxNiwgLy8gc3RhcnRTaXplIGZvciBoaW50aW5nIERldmljZSwgb3V0ZXJJbmRleCBmb3IgVmFyaWF0aW9uSW5kZXgKICBiOiByLnVpbnQxNiwgLy8gZW5kU2l6ZSBmb3IgRGV2aWNlLCBpbm5lckluZGV4IGZvciBWYXJpYXRpb25JbmRleAogIGRlbHRhRm9ybWF0OiByLnVpbnQxNgp9KTsKCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi8vIENvbnRleHR1YWwgU3Vic3RpdHV0aW9uL1Bvc2l0aW9uaW5nIFRhYmxlcyAjCi8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgp2YXIgTG9va3VwUmVjb3JkID0gbmV3IHIuU3RydWN0KHsKICBzZXF1ZW5jZUluZGV4OiByLnVpbnQxNiwKICBsb29rdXBMaXN0SW5kZXg6IHIudWludDE2Cn0pOwoKdmFyIFJ1bGUgPSBuZXcgci5TdHJ1Y3QoewogIGdseXBoQ291bnQ6IHIudWludDE2LAogIGxvb2t1cENvdW50OiByLnVpbnQxNiwKICBpbnB1dDogbmV3IHIuQXJyYXkoci51aW50MTYsIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5nbHlwaENvdW50IC0gMTsKICB9KSwKICBsb29rdXBSZWNvcmRzOiBuZXcgci5BcnJheShMb29rdXBSZWNvcmQsICdsb29rdXBDb3VudCcpCn0pOwoKdmFyIFJ1bGVTZXQgPSBuZXcgci5BcnJheShuZXcgci5Qb2ludGVyKHIudWludDE2LCBSdWxlKSwgci51aW50MTYpOwoKdmFyIENsYXNzUnVsZSA9IG5ldyByLlN0cnVjdCh7CiAgZ2x5cGhDb3VudDogci51aW50MTYsCiAgbG9va3VwQ291bnQ6IHIudWludDE2LAogIGNsYXNzZXM6IG5ldyByLkFycmF5KHIudWludDE2LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQuZ2x5cGhDb3VudCAtIDE7CiAgfSksCiAgbG9va3VwUmVjb3JkczogbmV3IHIuQXJyYXkoTG9va3VwUmVjb3JkLCAnbG9va3VwQ291bnQnKQp9KTsKCnZhciBDbGFzc1NldCA9IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzUnVsZSksIHIudWludDE2KTsKCnZhciBDb250ZXh0ID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgMTogeyAvLyBTaW1wbGUgY29udGV4dAogICAgY292ZXJhZ2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwKICAgIHJ1bGVTZXRDb3VudDogci51aW50MTYsCiAgICBydWxlU2V0czogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgUnVsZVNldCksICdydWxlU2V0Q291bnQnKQogIH0sCiAgMjogeyAvLyBDbGFzcy1iYXNlZCBjb250ZXh0CiAgICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogICAgY2xhc3NEZWY6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzRGVmKSwKICAgIGNsYXNzU2V0Q250OiByLnVpbnQxNiwKICAgIGNsYXNzU2V0OiBuZXcgci5BcnJheShuZXcgci5Qb2ludGVyKHIudWludDE2LCBDbGFzc1NldCksICdjbGFzc1NldENudCcpCiAgfSwKICAzOiB7CiAgICBnbHlwaENvdW50OiByLnVpbnQxNiwKICAgIGxvb2t1cENvdW50OiByLnVpbnQxNiwKICAgIGNvdmVyYWdlczogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLCAnZ2x5cGhDb3VudCcpLAogICAgbG9va3VwUmVjb3JkczogbmV3IHIuQXJyYXkoTG9va3VwUmVjb3JkLCAnbG9va3VwQ291bnQnKQogIH0KfSk7CgovLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovLyBDaGFpbmluZyBDb250ZXh0dWFsIFN1YnN0aXR1dGlvbi9Qb3NpdGlvbmluZyBUYWJsZXMgIwovLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKdmFyIENoYWluUnVsZSA9IG5ldyByLlN0cnVjdCh7CiAgYmFja3RyYWNrR2x5cGhDb3VudDogci51aW50MTYsCiAgYmFja3RyYWNrOiBuZXcgci5BcnJheShyLnVpbnQxNiwgJ2JhY2t0cmFja0dseXBoQ291bnQnKSwKICBpbnB1dEdseXBoQ291bnQ6IHIudWludDE2LAogIGlucHV0OiBuZXcgci5BcnJheShyLnVpbnQxNiwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0LmlucHV0R2x5cGhDb3VudCAtIDE7CiAgfSksCiAgbG9va2FoZWFkR2x5cGhDb3VudDogci51aW50MTYsCiAgbG9va2FoZWFkOiBuZXcgci5BcnJheShyLnVpbnQxNiwgJ2xvb2thaGVhZEdseXBoQ291bnQnKSwKICBsb29rdXBDb3VudDogci51aW50MTYsCiAgbG9va3VwUmVjb3JkczogbmV3IHIuQXJyYXkoTG9va3VwUmVjb3JkLCAnbG9va3VwQ291bnQnKQp9KTsKCnZhciBDaGFpblJ1bGVTZXQgPSBuZXcgci5BcnJheShuZXcgci5Qb2ludGVyKHIudWludDE2LCBDaGFpblJ1bGUpLCByLnVpbnQxNik7Cgp2YXIgQ2hhaW5pbmdDb250ZXh0ID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgMTogeyAvLyBTaW1wbGUgY29udGV4dCBnbHlwaCBzdWJzdGl0dXRpb24KICAgIGNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBjaGFpbkNvdW50OiByLnVpbnQxNiwKICAgIGNoYWluUnVsZVNldHM6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIENoYWluUnVsZVNldCksICdjaGFpbkNvdW50JykKICB9LAoKICAyOiB7IC8vIENsYXNzLWJhc2VkIGNoYWluaW5nIGNvbnRleHQKICAgIGNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBiYWNrdHJhY2tDbGFzc0RlZjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ2xhc3NEZWYpLAogICAgaW5wdXRDbGFzc0RlZjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ2xhc3NEZWYpLAogICAgbG9va2FoZWFkQ2xhc3NEZWY6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzRGVmKSwKICAgIGNoYWluQ291bnQ6IHIudWludDE2LAogICAgY2hhaW5DbGFzc1NldDogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ2hhaW5SdWxlU2V0KSwgJ2NoYWluQ291bnQnKQogIH0sCgogIDM6IHsgLy8gQ292ZXJhZ2UtYmFzZWQgY2hhaW5pbmcgY29udGV4dAogICAgYmFja3RyYWNrR2x5cGhDb3VudDogci51aW50MTYsCiAgICBiYWNrdHJhY2tDb3ZlcmFnZTogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLCAnYmFja3RyYWNrR2x5cGhDb3VudCcpLAogICAgaW5wdXRHbHlwaENvdW50OiByLnVpbnQxNiwKICAgIGlucHV0Q292ZXJhZ2U6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwgJ2lucHV0R2x5cGhDb3VudCcpLAogICAgbG9va2FoZWFkR2x5cGhDb3VudDogci51aW50MTYsCiAgICBsb29rYWhlYWRDb3ZlcmFnZTogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLCAnbG9va2FoZWFkR2x5cGhDb3VudCcpLAogICAgbG9va3VwQ291bnQ6IHIudWludDE2LAogICAgbG9va3VwUmVjb3JkczogbmV3IHIuQXJyYXkoTG9va3VwUmVjb3JkLCAnbG9va3VwQ291bnQnKQogIH0KfSk7Cgp2YXIgXzsKCi8qKioqKioqKioqKioqKioqKioqCiAqIFZhcmlhdGlvbiBTdG9yZSAqCiAqKioqKioqKioqKioqKioqKioqLwoKdmFyIEYyRE9UMTQgPSBuZXcgci5GaXhlZCgxNiwgJ0JFJywgMTQpOwp2YXIgUmVnaW9uQXhpc0Nvb3JkaW5hdGVzID0gbmV3IHIuU3RydWN0KHsKICBzdGFydENvb3JkOiBGMkRPVDE0LAogIHBlYWtDb29yZDogRjJET1QxNCwKICBlbmRDb29yZDogRjJET1QxNAp9KTsKCnZhciBWYXJpYXRpb25SZWdpb25MaXN0ID0gbmV3IHIuU3RydWN0KHsKICBheGlzQ291bnQ6IHIudWludDE2LAogIHJlZ2lvbkNvdW50OiByLnVpbnQxNiwKICB2YXJpYXRpb25SZWdpb25zOiBuZXcgci5BcnJheShuZXcgci5BcnJheShSZWdpb25BeGlzQ29vcmRpbmF0ZXMsICdheGlzQ291bnQnKSwgJ3JlZ2lvbkNvdW50JykKfSk7Cgp2YXIgRGVsdGFTZXQgPSBuZXcgci5TdHJ1Y3QoewogIHNob3J0RGVsdGFzOiBuZXcgci5BcnJheShyLmludDE2LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQucGFyZW50LnNob3J0RGVsdGFDb3VudDsKICB9KSwKICByZWdpb25EZWx0YXM6IG5ldyByLkFycmF5KHIuaW50OCwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0LnBhcmVudC5yZWdpb25JbmRleENvdW50IC0gdC5wYXJlbnQuc2hvcnREZWx0YUNvdW50OwogIH0pLAogIGRlbHRhczogZnVuY3Rpb24gZGVsdGFzKHQpIHsKICAgIHJldHVybiB0LnNob3J0RGVsdGFzLmNvbmNhdCh0LnJlZ2lvbkRlbHRhcyk7CiAgfQp9KTsKCnZhciBJdGVtVmFyaWF0aW9uRGF0YSA9IG5ldyByLlN0cnVjdCh7CiAgaXRlbUNvdW50OiByLnVpbnQxNiwKICBzaG9ydERlbHRhQ291bnQ6IHIudWludDE2LAogIHJlZ2lvbkluZGV4Q291bnQ6IHIudWludDE2LAogIHJlZ2lvbkluZGV4ZXM6IG5ldyByLkFycmF5KHIudWludDE2LCAncmVnaW9uSW5kZXhDb3VudCcpLAogIGRlbHRhU2V0czogbmV3IHIuQXJyYXkoRGVsdGFTZXQsICdpdGVtQ291bnQnKQp9KTsKCnZhciBJdGVtVmFyaWF0aW9uU3RvcmUgPSBuZXcgci5TdHJ1Y3QoewogIGZvcm1hdDogci51aW50MTYsCiAgdmFyaWF0aW9uUmVnaW9uTGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgVmFyaWF0aW9uUmVnaW9uTGlzdCksCiAgdmFyaWF0aW9uRGF0YUNvdW50OiByLnVpbnQxNiwKICBpdGVtVmFyaWF0aW9uRGF0YTogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgSXRlbVZhcmlhdGlvbkRhdGEpLCAndmFyaWF0aW9uRGF0YUNvdW50JykKfSk7CgovKioqKioqKioqKioqKioqKioqKioqKgogKiBGZWF0dXJlIFZhcmlhdGlvbnMgKgogKioqKioqKioqKioqKioqKioqKioqKi8KCnZhciBDb25kaXRpb25UYWJsZSA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQxNiwgewogIDE6IChfID0gewogICAgYXhpc0luZGV4OiByLnVpbnQxNgogIH0sIF9bJ2F4aXNJbmRleCddID0gci51aW50MTYsIF8uZmlsdGVyUmFuZ2VNaW5WYWx1ZSA9IEYyRE9UMTQsIF8uZmlsdGVyUmFuZ2VNYXhWYWx1ZSA9IEYyRE9UMTQsIF8pCn0pOwoKdmFyIENvbmRpdGlvblNldCA9IG5ldyByLlN0cnVjdCh7CiAgY29uZGl0aW9uQ291bnQ6IHIudWludDE2LAogIGNvbmRpdGlvblRhYmxlOiBuZXcgci5BcnJheShuZXcgci5Qb2ludGVyKHIudWludDMyLCBDb25kaXRpb25UYWJsZSksICdjb25kaXRpb25Db3VudCcpCn0pOwoKdmFyIEZlYXR1cmVUYWJsZVN1YnN0aXR1dGlvblJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgZmVhdHVyZUluZGV4OiByLnVpbnQxNiwKICBhbHRlcm5hdGVGZWF0dXJlVGFibGU6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIEZlYXR1cmUsIHsgdHlwZTogJ3BhcmVudCcgfSkKfSk7Cgp2YXIgRmVhdHVyZVRhYmxlU3Vic3RpdHV0aW9uID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLmZpeGVkMzIsCiAgc3Vic3RpdHV0aW9uQ291bnQ6IHIudWludDE2LAogIHN1YnN0aXR1dGlvbnM6IG5ldyByLkFycmF5KEZlYXR1cmVUYWJsZVN1YnN0aXR1dGlvblJlY29yZCwgJ3N1YnN0aXR1dGlvbkNvdW50JykKfSk7Cgp2YXIgRmVhdHVyZVZhcmlhdGlvblJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgY29uZGl0aW9uU2V0OiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBDb25kaXRpb25TZXQsIHsgdHlwZTogJ3BhcmVudCcgfSksCiAgZmVhdHVyZVRhYmxlU3Vic3RpdHV0aW9uOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBGZWF0dXJlVGFibGVTdWJzdGl0dXRpb24sIHsgdHlwZTogJ3BhcmVudCcgfSkKfSk7Cgp2YXIgRmVhdHVyZVZhcmlhdGlvbnMgPSBuZXcgci5TdHJ1Y3QoewogIG1ham9yVmVyc2lvbjogci51aW50MTYsCiAgbWlub3JWZXJzaW9uOiByLnVpbnQxNiwKICBmZWF0dXJlVmFyaWF0aW9uUmVjb3JkQ291bnQ6IHIudWludDMyLAogIGZlYXR1cmVWYXJpYXRpb25SZWNvcmRzOiBuZXcgci5BcnJheShGZWF0dXJlVmFyaWF0aW9uUmVjb3JkLCAnZmVhdHVyZVZhcmlhdGlvblJlY29yZENvdW50JykKfSk7CgovLyBDaGVja3MgaWYgYW4gb3BlcmFuZCBpcyBhbiBpbmRleCBvZiBhIHByZWRlZmluZWQgdmFsdWUsCi8vIG90aGVyd2lzZSBkZWxlZ2F0ZXMgdG8gdGhlIHByb3ZpZGVkIHR5cGUuCgp2YXIgUHJlZGVmaW5lZE9wID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIFByZWRlZmluZWRPcChwcmVkZWZpbmVkT3BzLCB0eXBlKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUHJlZGVmaW5lZE9wKTsKCiAgICB0aGlzLnByZWRlZmluZWRPcHMgPSBwcmVkZWZpbmVkT3BzOwogICAgdGhpcy50eXBlID0gdHlwZTsKICB9CgogIFByZWRlZmluZWRPcC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKHN0cmVhbSwgcGFyZW50LCBvcGVyYW5kcykgewogICAgaWYgKHRoaXMucHJlZGVmaW5lZE9wc1tvcGVyYW5kc1swXV0pIHsKICAgICAgcmV0dXJuIHRoaXMucHJlZGVmaW5lZE9wc1tvcGVyYW5kc1swXV07CiAgICB9CgogICAgcmV0dXJuIHRoaXMudHlwZS5kZWNvZGUoc3RyZWFtLCBwYXJlbnQsIG9wZXJhbmRzKTsKICB9OwoKICBQcmVkZWZpbmVkT3AucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiBzaXplKHZhbHVlLCBjdHgpIHsKICAgIHJldHVybiB0aGlzLnR5cGUuc2l6ZSh2YWx1ZSwgY3R4KTsKICB9OwoKICBQcmVkZWZpbmVkT3AucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0sIHZhbHVlLCBjdHgpIHsKICAgIHZhciBpbmRleCA9IHRoaXMucHJlZGVmaW5lZE9wcy5pbmRleE9mKHZhbHVlKTsKICAgIGlmIChpbmRleCAhPT0gLTEpIHsKICAgICAgcmV0dXJuIGluZGV4OwogICAgfQoKICAgIHJldHVybiB0aGlzLnR5cGUuZW5jb2RlKHN0cmVhbSwgdmFsdWUsIGN0eCk7CiAgfTsKCiAgcmV0dXJuIFByZWRlZmluZWRPcDsKfSgpOwoKdmFyIENGRkVuY29kaW5nVmVyc2lvbiA9IGZ1bmN0aW9uIChfciROdW1iZXIpIHsKICBfaW5oZXJpdHMoQ0ZGRW5jb2RpbmdWZXJzaW9uLCBfciROdW1iZXIpOwoKICBmdW5jdGlvbiBDRkZFbmNvZGluZ1ZlcnNpb24oKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ0ZGRW5jb2RpbmdWZXJzaW9uKTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX3IkTnVtYmVyLmNhbGwodGhpcywgJ1VJbnQ4JykpOwogIH0KCiAgQ0ZGRW5jb2RpbmdWZXJzaW9uLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoc3RyZWFtKSB7CiAgICByZXR1cm4gci51aW50OC5kZWNvZGUoc3RyZWFtKSAmIDB4N2Y7CiAgfTsKCiAgcmV0dXJuIENGRkVuY29kaW5nVmVyc2lvbjsKfShyLk51bWJlcik7Cgp2YXIgUmFuZ2UxID0gbmV3IHIuU3RydWN0KHsKICBmaXJzdDogci51aW50MTYsCiAgbkxlZnQ6IHIudWludDgKfSk7Cgp2YXIgUmFuZ2UyID0gbmV3IHIuU3RydWN0KHsKICBmaXJzdDogci51aW50MTYsCiAgbkxlZnQ6IHIudWludDE2Cn0pOwoKdmFyIENGRkN1c3RvbUVuY29kaW5nID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KG5ldyBDRkZFbmNvZGluZ1ZlcnNpb24oKSwgewogIDA6IHsKICAgIG5Db2Rlczogci51aW50OCwKICAgIGNvZGVzOiBuZXcgci5BcnJheShyLnVpbnQ4LCAnbkNvZGVzJykKICB9LAoKICAxOiB7CiAgICBuUmFuZ2VzOiByLnVpbnQ4LAogICAgcmFuZ2VzOiBuZXcgci5BcnJheShSYW5nZTEsICduUmFuZ2VzJykKICB9CgogIC8vIFRPRE86IHN1cHBsZW1lbnQ/Cn0pOwoKdmFyIENGRkVuY29kaW5nID0gbmV3IFByZWRlZmluZWRPcChbU3RhbmRhcmRFbmNvZGluZywgRXhwZXJ0RW5jb2RpbmddLCBuZXcgQ0ZGUG9pbnRlcihDRkZDdXN0b21FbmNvZGluZywgeyBsYXp5OiB0cnVlIH0pKTsKCi8vIERlY29kZXMgYW4gYXJyYXkgb2YgcmFuZ2VzIHVudGlsIHRoZSB0b3RhbAovLyBsZW5ndGggaXMgZXF1YWwgdG8gdGhlIHByb3ZpZGVkIGxlbmd0aC4KCnZhciBSYW5nZUFycmF5ID0gZnVuY3Rpb24gKF9yJEFycmF5KSB7CiAgX2luaGVyaXRzKFJhbmdlQXJyYXksIF9yJEFycmF5KTsKCiAgZnVuY3Rpb24gUmFuZ2VBcnJheSgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBSYW5nZUFycmF5KTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX3IkQXJyYXkuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBSYW5nZUFycmF5LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoc3RyZWFtLCBwYXJlbnQpIHsKICAgIHZhciBsZW5ndGggPSByZXN0cnVjdHVyZV9zcmNfdXRpbHMucmVzb2x2ZUxlbmd0aCh0aGlzLmxlbmd0aCwgc3RyZWFtLCBwYXJlbnQpOwogICAgdmFyIGNvdW50ID0gMDsKICAgIHZhciByZXMgPSBbXTsKICAgIHdoaWxlIChjb3VudCA8IGxlbmd0aCkgewogICAgICB2YXIgcmFuZ2UgPSB0aGlzLnR5cGUuZGVjb2RlKHN0cmVhbSwgcGFyZW50KTsKICAgICAgcmFuZ2Uub2Zmc2V0ID0gY291bnQ7CiAgICAgIGNvdW50ICs9IHJhbmdlLm5MZWZ0ICsgMTsKICAgICAgcmVzLnB1c2gocmFuZ2UpOwogICAgfQoKICAgIHJldHVybiByZXM7CiAgfTsKCiAgcmV0dXJuIFJhbmdlQXJyYXk7Cn0oci5BcnJheSk7Cgp2YXIgQ0ZGQ3VzdG9tQ2hhcnNldCA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQ4LCB7CiAgMDogewogICAgZ2x5cGhzOiBuZXcgci5BcnJheShyLnVpbnQxNiwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQucGFyZW50LkNoYXJTdHJpbmdzLmxlbmd0aCAtIDE7CiAgICB9KQogIH0sCgogIDE6IHsKICAgIHJhbmdlczogbmV3IFJhbmdlQXJyYXkoUmFuZ2UxLCBmdW5jdGlvbiAodCkgewogICAgICByZXR1cm4gdC5wYXJlbnQuQ2hhclN0cmluZ3MubGVuZ3RoIC0gMTsKICAgIH0pCiAgfSwKCiAgMjogewogICAgcmFuZ2VzOiBuZXcgUmFuZ2VBcnJheShSYW5nZTIsIGZ1bmN0aW9uICh0KSB7CiAgICAgIHJldHVybiB0LnBhcmVudC5DaGFyU3RyaW5ncy5sZW5ndGggLSAxOwogICAgfSkKICB9Cn0pOwoKdmFyIENGRkNoYXJzZXQgPSBuZXcgUHJlZGVmaW5lZE9wKFtJU09BZG9iZUNoYXJzZXQsIEV4cGVydENoYXJzZXQsIEV4cGVydFN1YnNldENoYXJzZXRdLCBuZXcgQ0ZGUG9pbnRlcihDRkZDdXN0b21DaGFyc2V0LCB7IGxhenk6IHRydWUgfSkpOwoKdmFyIEZEUmFuZ2UzID0gbmV3IHIuU3RydWN0KHsKICBmaXJzdDogci51aW50MTYsCiAgZmQ6IHIudWludDgKfSk7Cgp2YXIgRkRSYW5nZTQgPSBuZXcgci5TdHJ1Y3QoewogIGZpcnN0OiByLnVpbnQzMiwKICBmZDogci51aW50MTYKfSk7Cgp2YXIgRkRTZWxlY3QgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3Qoci51aW50OCwgewogIDA6IHsKICAgIGZkczogbmV3IHIuQXJyYXkoci51aW50OCwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQucGFyZW50LkNoYXJTdHJpbmdzLmxlbmd0aDsKICAgIH0pCiAgfSwKCiAgMzogewogICAgblJhbmdlczogci51aW50MTYsCiAgICByYW5nZXM6IG5ldyByLkFycmF5KEZEUmFuZ2UzLCAnblJhbmdlcycpLAogICAgc2VudGluZWw6IHIudWludDE2CiAgfSwKCiAgNDogewogICAgblJhbmdlczogci51aW50MzIsCiAgICByYW5nZXM6IG5ldyByLkFycmF5KEZEUmFuZ2U0LCAnblJhbmdlcycpLAogICAgc2VudGluZWw6IHIudWludDMyCiAgfQp9KTsKCnZhciBwdHIgPSBuZXcgQ0ZGUG9pbnRlcihDRkZQcml2YXRlRGljdCk7Cgp2YXIgQ0ZGUHJpdmF0ZU9wID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIENGRlByaXZhdGVPcCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDRkZQcml2YXRlT3ApOwogIH0KCiAgQ0ZGUHJpdmF0ZU9wLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoc3RyZWFtLCBwYXJlbnQsIG9wZXJhbmRzKSB7CiAgICBwYXJlbnQubGVuZ3RoID0gb3BlcmFuZHNbMF07CiAgICByZXR1cm4gcHRyLmRlY29kZShzdHJlYW0sIHBhcmVudCwgW29wZXJhbmRzWzFdXSk7CiAgfTsKCiAgQ0ZGUHJpdmF0ZU9wLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24gc2l6ZShkaWN0LCBjdHgpIHsKICAgIHJldHVybiBbQ0ZGUHJpdmF0ZURpY3Quc2l6ZShkaWN0LCBjdHgsIGZhbHNlKSwgcHRyLnNpemUoZGljdCwgY3R4KVswXV07CiAgfTsKCiAgQ0ZGUHJpdmF0ZU9wLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoc3RyZWFtLCBkaWN0LCBjdHgpIHsKICAgIHJldHVybiBbQ0ZGUHJpdmF0ZURpY3Quc2l6ZShkaWN0LCBjdHgsIGZhbHNlKSwgcHRyLmVuY29kZShzdHJlYW0sIGRpY3QsIGN0eClbMF1dOwogIH07CgogIHJldHVybiBDRkZQcml2YXRlT3A7Cn0oKTsKCnZhciBGb250RGljdCA9IG5ldyBDRkZEaWN0KFsKLy8ga2V5ICAgICAgIG5hbWUgICAgICAgICAgICAgICAgICAgdHlwZShzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQKWzE4LCAnUHJpdmF0ZScsIG5ldyBDRkZQcml2YXRlT3AoKSwgbnVsbF0sIFtbMTIsIDM4XSwgJ0ZvbnROYW1lJywgJ3NpZCcsIG51bGxdXSk7Cgp2YXIgQ0ZGVG9wRGljdCA9IG5ldyBDRkZEaWN0KFsKLy8ga2V5ICAgICAgIG5hbWUgICAgICAgICAgICAgICAgICAgdHlwZShzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQKW1sxMiwgMzBdLCAnUk9TJywgWydzaWQnLCAnc2lkJywgJ251bWJlciddLCBudWxsXSwgWzAsICd2ZXJzaW9uJywgJ3NpZCcsIG51bGxdLCBbMSwgJ05vdGljZScsICdzaWQnLCBudWxsXSwgW1sxMiwgMF0sICdDb3B5cmlnaHQnLCAnc2lkJywgbnVsbF0sIFsyLCAnRnVsbE5hbWUnLCAnc2lkJywgbnVsbF0sIFszLCAnRmFtaWx5TmFtZScsICdzaWQnLCBudWxsXSwgWzQsICdXZWlnaHQnLCAnc2lkJywgbnVsbF0sIFtbMTIsIDFdLCAnaXNGaXhlZFBpdGNoJywgJ2Jvb2xlYW4nLCBmYWxzZV0sIFtbMTIsIDJdLCAnSXRhbGljQW5nbGUnLCAnbnVtYmVyJywgMF0sIFtbMTIsIDNdLCAnVW5kZXJsaW5lUG9zaXRpb24nLCAnbnVtYmVyJywgLTEwMF0sIFtbMTIsIDRdLCAnVW5kZXJsaW5lVGhpY2tuZXNzJywgJ251bWJlcicsIDUwXSwgW1sxMiwgNV0sICdQYWludFR5cGUnLCAnbnVtYmVyJywgMF0sIFtbMTIsIDZdLCAnQ2hhcnN0cmluZ1R5cGUnLCAnbnVtYmVyJywgMl0sIFtbMTIsIDddLCAnRm9udE1hdHJpeCcsICdhcnJheScsIFswLjAwMSwgMCwgMCwgMC4wMDEsIDAsIDBdXSwgWzEzLCAnVW5pcXVlSUQnLCAnbnVtYmVyJywgbnVsbF0sIFs1LCAnRm9udEJCb3gnLCAnYXJyYXknLCBbMCwgMCwgMCwgMF1dLCBbWzEyLCA4XSwgJ1N0cm9rZVdpZHRoJywgJ251bWJlcicsIDBdLCBbMTQsICdYVUlEJywgJ2FycmF5JywgbnVsbF0sIFsxNSwgJ2NoYXJzZXQnLCBDRkZDaGFyc2V0LCBJU09BZG9iZUNoYXJzZXRdLCBbMTYsICdFbmNvZGluZycsIENGRkVuY29kaW5nLCBTdGFuZGFyZEVuY29kaW5nXSwgWzE3LCAnQ2hhclN0cmluZ3MnLCBuZXcgQ0ZGUG9pbnRlcihuZXcgQ0ZGSW5kZXgoKSksIG51bGxdLCBbMTgsICdQcml2YXRlJywgbmV3IENGRlByaXZhdGVPcCgpLCBudWxsXSwgW1sxMiwgMjBdLCAnU3ludGhldGljQmFzZScsICdudW1iZXInLCBudWxsXSwgW1sxMiwgMjFdLCAnUG9zdFNjcmlwdCcsICdzaWQnLCBudWxsXSwgW1sxMiwgMjJdLCAnQmFzZUZvbnROYW1lJywgJ3NpZCcsIG51bGxdLCBbWzEyLCAyM10sICdCYXNlRm9udEJsZW5kJywgJ2RlbHRhJywgbnVsbF0sCgovLyBDSUQgZm9udCBzcGVjaWZpYwpbWzEyLCAzMV0sICdDSURGb250VmVyc2lvbicsICdudW1iZXInLCAwXSwgW1sxMiwgMzJdLCAnQ0lERm9udFJldmlzaW9uJywgJ251bWJlcicsIDBdLCBbWzEyLCAzM10sICdDSURGb250VHlwZScsICdudW1iZXInLCAwXSwgW1sxMiwgMzRdLCAnQ0lEQ291bnQnLCAnbnVtYmVyJywgODcyMF0sIFtbMTIsIDM1XSwgJ1VJREJhc2UnLCAnbnVtYmVyJywgbnVsbF0sIFtbMTIsIDM3XSwgJ0ZEU2VsZWN0JywgbmV3IENGRlBvaW50ZXIoRkRTZWxlY3QpLCBudWxsXSwgW1sxMiwgMzZdLCAnRkRBcnJheScsIG5ldyBDRkZQb2ludGVyKG5ldyBDRkZJbmRleChGb250RGljdCkpLCBudWxsXSwgW1sxMiwgMzhdLCAnRm9udE5hbWUnLCAnc2lkJywgbnVsbF1dKTsKCnZhciBWYXJpYXRpb25TdG9yZSA9IG5ldyByLlN0cnVjdCh7CiAgbGVuZ3RoOiByLnVpbnQxNiwKICBpdGVtVmFyaWF0aW9uU3RvcmU6IEl0ZW1WYXJpYXRpb25TdG9yZQp9KTsKCnZhciBDRkYyVG9wRGljdCA9IG5ldyBDRkZEaWN0KFtbWzEyLCA3XSwgJ0ZvbnRNYXRyaXgnLCAnYXJyYXknLCBbMC4wMDEsIDAsIDAsIDAuMDAxLCAwLCAwXV0sIFsxNywgJ0NoYXJTdHJpbmdzJywgbmV3IENGRlBvaW50ZXIobmV3IENGRkluZGV4KCkpLCBudWxsXSwgW1sxMiwgMzddLCAnRkRTZWxlY3QnLCBuZXcgQ0ZGUG9pbnRlcihGRFNlbGVjdCksIG51bGxdLCBbWzEyLCAzNl0sICdGREFycmF5JywgbmV3IENGRlBvaW50ZXIobmV3IENGRkluZGV4KEZvbnREaWN0KSksIG51bGxdLCBbMjQsICd2c3RvcmUnLCBuZXcgQ0ZGUG9pbnRlcihWYXJpYXRpb25TdG9yZSksIG51bGxdLCBbMjUsICdtYXhzdGFjaycsICdudW1iZXInLCAxOTNdXSk7Cgp2YXIgQ0ZGVG9wID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIuZml4ZWQxNiwgewogIDE6IHsKICAgIGhkclNpemU6IHIudWludDgsCiAgICBvZmZTaXplOiByLnVpbnQ4LAogICAgbmFtZUluZGV4OiBuZXcgQ0ZGSW5kZXgobmV3IHIuU3RyaW5nKCdsZW5ndGgnKSksCiAgICB0b3BEaWN0SW5kZXg6IG5ldyBDRkZJbmRleChDRkZUb3BEaWN0KSwKICAgIHN0cmluZ0luZGV4OiBuZXcgQ0ZGSW5kZXgobmV3IHIuU3RyaW5nKCdsZW5ndGgnKSksCiAgICBnbG9iYWxTdWJySW5kZXg6IG5ldyBDRkZJbmRleCgpCiAgfSwKCiAgMjogewogICAgaGRyU2l6ZTogci51aW50OCwKICAgIGxlbmd0aDogci51aW50MTYsCiAgICB0b3BEaWN0OiBDRkYyVG9wRGljdCwKICAgIGdsb2JhbFN1YnJJbmRleDogbmV3IENGRkluZGV4KCkKICB9Cn0pOwoKdmFyIENGRkZvbnQgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gQ0ZGRm9udChzdHJlYW0pIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDRkZGb250KTsKCiAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTsKICAgIHRoaXMuZGVjb2RlKCk7CiAgfQoKICBDRkZGb250LmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0pIHsKICAgIHJldHVybiBuZXcgQ0ZGRm9udChzdHJlYW0pOwogIH07CgogIENGRkZvbnQucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZSgpIHsKICAgIHZhciBzdGFydCA9IHRoaXMuc3RyZWFtLnBvczsKICAgIHZhciB0b3AgPSBDRkZUb3AuZGVjb2RlKHRoaXMuc3RyZWFtKTsKICAgIGZvciAodmFyIGtleSBpbiB0b3ApIHsKICAgICAgdmFyIHZhbCA9IHRvcFtrZXldOwogICAgICB0aGlzW2tleV0gPSB2YWw7CiAgICB9CgogICAgaWYgKHRoaXMudmVyc2lvbiA8IDIpIHsKICAgICAgaWYgKHRoaXMudG9wRGljdEluZGV4Lmxlbmd0aCAhPT0gMSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcigiT25seSBhIHNpbmdsZSBmb250IGlzIGFsbG93ZWQgaW4gQ0ZGIik7CiAgICAgIH0KCiAgICAgIHRoaXMudG9wRGljdCA9IHRoaXMudG9wRGljdEluZGV4WzBdOwogICAgfQoKICAgIHRoaXMuaXNDSURGb250ID0gdGhpcy50b3BEaWN0LlJPUyAhPSBudWxsOwogICAgcmV0dXJuIHRoaXM7CiAgfTsKCiAgQ0ZGRm9udC5wcm90b3R5cGUuc3RyaW5nID0gZnVuY3Rpb24gc3RyaW5nKHNpZCkgewogICAgaWYgKHRoaXMudmVyc2lvbiA+PSAyKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIGlmIChzaWQgPCBzdGFuZGFyZFN0cmluZ3MubGVuZ3RoKSB7CiAgICAgIHJldHVybiBzdGFuZGFyZFN0cmluZ3Nbc2lkXTsKICAgIH0KCiAgICByZXR1cm4gdGhpcy5zdHJpbmdJbmRleFtzaWQgLSBzdGFuZGFyZFN0cmluZ3MubGVuZ3RoXTsKICB9OwoKICBDRkZGb250LnByb3RvdHlwZS5nZXRDaGFyU3RyaW5nID0gZnVuY3Rpb24gZ2V0Q2hhclN0cmluZyhnbHlwaCkgewogICAgdGhpcy5zdHJlYW0ucG9zID0gdGhpcy50b3BEaWN0LkNoYXJTdHJpbmdzW2dseXBoXS5vZmZzZXQ7CiAgICByZXR1cm4gdGhpcy5zdHJlYW0ucmVhZEJ1ZmZlcih0aGlzLnRvcERpY3QuQ2hhclN0cmluZ3NbZ2x5cGhdLmxlbmd0aCk7CiAgfTsKCiAgQ0ZGRm9udC5wcm90b3R5cGUuZ2V0R2x5cGhOYW1lID0gZnVuY3Rpb24gZ2V0R2x5cGhOYW1lKGdpZCkgewogICAgLy8gQ0ZGMiBnbHlwaCBuYW1lcyBhcmUgaW4gdGhlIHBvc3QgdGFibGUuCiAgICBpZiAodGhpcy52ZXJzaW9uID49IDIpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLy8gQ0lELWtleWVkIGZvbnRzIGRvbid0IGhhdmUgZ2x5cGggbmFtZXMKICAgIGlmICh0aGlzLmlzQ0lERm9udCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICB2YXIgY2hhcnNldCA9IHRoaXMudG9wRGljdC5jaGFyc2V0OwoKICAgIGlmIChBcnJheS5pc0FycmF5KGNoYXJzZXQpKSB7CiAgICAgIHJldHVybiBjaGFyc2V0W2dpZF07CiAgICB9CgogICAgaWYgKGdpZCA9PT0gMCkgewogICAgICByZXR1cm4gJy5ub3RkZWYnOwogICAgfQoKICAgIGdpZCAtPSAxOwoKICAgIHN3aXRjaCAoY2hhcnNldC52ZXJzaW9uKSB7CiAgICAgIGNhc2UgMDoKICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmcoY2hhcnNldC5nbHlwaHNbZ2lkXSk7CgogICAgICBjYXNlIDE6CiAgICAgIGNhc2UgMjoKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzZXQucmFuZ2VzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgcmFuZ2UgPSBjaGFyc2V0LnJhbmdlc1tpXTsKICAgICAgICAgIGlmIChyYW5nZS5vZmZzZXQgPD0gZ2lkICYmIGdpZCA8PSByYW5nZS5vZmZzZXQgKyByYW5nZS5uTGVmdCkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5zdHJpbmcocmFuZ2UuZmlyc3QgKyAoZ2lkIC0gcmFuZ2Uub2Zmc2V0KSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogICAgfQoKICAgIHJldHVybiBudWxsOwogIH07CgogIENGRkZvbnQucHJvdG90eXBlLmZkRm9yR2x5cGggPSBmdW5jdGlvbiBmZEZvckdseXBoKGdpZCkgewogICAgaWYgKCF0aGlzLnRvcERpY3QuRkRTZWxlY3QpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgc3dpdGNoICh0aGlzLnRvcERpY3QuRkRTZWxlY3QudmVyc2lvbikgewogICAgICBjYXNlIDA6CiAgICAgICAgcmV0dXJuIHRoaXMudG9wRGljdC5GRFNlbGVjdC5mZHNbZ2lkXTsKCiAgICAgIGNhc2UgMzoKICAgICAgY2FzZSA0OgogICAgICAgIHZhciByYW5nZXMgPSB0aGlzLnRvcERpY3QuRkRTZWxlY3QucmFuZ2VzOwoKICAgICAgICB2YXIgbG93ID0gMDsKICAgICAgICB2YXIgaGlnaCA9IHJhbmdlcy5sZW5ndGggLSAxOwoKICAgICAgICB3aGlsZSAobG93IDw9IGhpZ2gpIHsKICAgICAgICAgIHZhciBtaWQgPSBsb3cgKyBoaWdoID4+IDE7CgogICAgICAgICAgaWYgKGdpZCA8IHJhbmdlc1ttaWRdLmZpcnN0KSB7CiAgICAgICAgICAgIGhpZ2ggPSBtaWQgLSAxOwogICAgICAgICAgfSBlbHNlIGlmIChtaWQgPCBoaWdoICYmIGdpZCA+IHJhbmdlc1ttaWQgKyAxXS5maXJzdCkgewogICAgICAgICAgICBsb3cgPSBtaWQgKyAxOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHJhbmdlc1ttaWRdLmZkOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gRkRTZWxlY3QgdmVyc2lvbjogJyArIHRoaXMudG9wRGljdC5GRFNlbGVjdC52ZXJzaW9uKTsKICAgIH0KICB9OwoKICBDRkZGb250LnByb3RvdHlwZS5wcml2YXRlRGljdEZvckdseXBoID0gZnVuY3Rpb24gcHJpdmF0ZURpY3RGb3JHbHlwaChnaWQpIHsKICAgIGlmICh0aGlzLnRvcERpY3QuRkRTZWxlY3QpIHsKICAgICAgdmFyIGZkID0gdGhpcy5mZEZvckdseXBoKGdpZCk7CiAgICAgIGlmICh0aGlzLnRvcERpY3QuRkRBcnJheVtmZF0pIHsKICAgICAgICByZXR1cm4gdGhpcy50b3BEaWN0LkZEQXJyYXlbZmRdLlByaXZhdGU7CiAgICAgIH0KCiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIGlmICh0aGlzLnZlcnNpb24gPCAyKSB7CiAgICAgIHJldHVybiB0aGlzLnRvcERpY3QuUHJpdmF0ZTsKICAgIH0KCiAgICByZXR1cm4gdGhpcy50b3BEaWN0LkZEQXJyYXlbMF0uUHJpdmF0ZTsKICB9OwoKICBfY3JlYXRlQ2xhc3MoQ0ZGRm9udCwgW3sKICAgIGtleTogJ3Bvc3RzY3JpcHROYW1lJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICBpZiAodGhpcy52ZXJzaW9uIDwgMikgewogICAgICAgIHJldHVybiB0aGlzLm5hbWVJbmRleFswXTsKICAgICAgfQoKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfSwgewogICAga2V5OiAnZnVsbE5hbWUnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLnN0cmluZyh0aGlzLnRvcERpY3QuRnVsbE5hbWUpOwogICAgfQogIH0sIHsKICAgIGtleTogJ2ZhbWlseU5hbWUnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLnN0cmluZyh0aGlzLnRvcERpY3QuRmFtaWx5TmFtZSk7CiAgICB9CiAgfV0pOwoKICByZXR1cm4gQ0ZGRm9udDsKfSgpOwoKdmFyIFZlcnRpY2FsT3JpZ2luID0gbmV3IHIuU3RydWN0KHsKICBnbHlwaEluZGV4OiByLnVpbnQxNiwKICB2ZXJ0T3JpZ2luWTogci5pbnQxNgp9KTsKCnZhciBWT1JHID0gbmV3IHIuU3RydWN0KHsKICBtYWpvclZlcnNpb246IHIudWludDE2LAogIG1pbm9yVmVyc2lvbjogci51aW50MTYsCiAgZGVmYXVsdFZlcnRPcmlnaW5ZOiByLmludDE2LAogIG51bVZlcnRPcmlnaW5ZTWV0cmljczogci51aW50MTYsCiAgbWV0cmljczogbmV3IHIuQXJyYXkoVmVydGljYWxPcmlnaW4sICdudW1WZXJ0T3JpZ2luWU1ldHJpY3MnKQp9KTsKCnZhciBCaWdNZXRyaWNzID0gbmV3IHIuU3RydWN0KHsKICBoZWlnaHQ6IHIudWludDgsCiAgd2lkdGg6IHIudWludDgsCiAgaG9yaUJlYXJpbmdYOiByLmludDgsCiAgaG9yaUJlYXJpbmdZOiByLmludDgsCiAgaG9yaUFkdmFuY2U6IHIudWludDgsCiAgdmVydEJlYXJpbmdYOiByLmludDgsCiAgdmVydEJlYXJpbmdZOiByLmludDgsCiAgdmVydEFkdmFuY2U6IHIudWludDgKfSk7Cgp2YXIgU21hbGxNZXRyaWNzID0gbmV3IHIuU3RydWN0KHsKICBoZWlnaHQ6IHIudWludDgsCiAgd2lkdGg6IHIudWludDgsCiAgYmVhcmluZ1g6IHIuaW50OCwKICBiZWFyaW5nWTogci5pbnQ4LAogIGFkdmFuY2U6IHIudWludDgKfSk7Cgp2YXIgRUJEVENvbXBvbmVudCA9IG5ldyByLlN0cnVjdCh7CiAgZ2x5cGg6IHIudWludDE2LAogIHhPZmZzZXQ6IHIuaW50OCwKICB5T2Zmc2V0OiByLmludDgKfSk7Cgp2YXIgQnl0ZUFsaWduZWQgPSBmdW5jdGlvbiBCeXRlQWxpZ25lZCgpIHsKICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnl0ZUFsaWduZWQpOwp9OwoKdmFyIEJpdEFsaWduZWQgPSBmdW5jdGlvbiBCaXRBbGlnbmVkKCkgewogIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCaXRBbGlnbmVkKTsKfTsKCnZhciBnbHlwaCA9IG5ldyByLlZlcnNpb25lZFN0cnVjdCgndmVyc2lvbicsIHsKICAxOiB7CiAgICBtZXRyaWNzOiBTbWFsbE1ldHJpY3MsCiAgICBkYXRhOiBCeXRlQWxpZ25lZAogIH0sCgogIDI6IHsKICAgIG1ldHJpY3M6IFNtYWxsTWV0cmljcywKICAgIGRhdGE6IEJpdEFsaWduZWQKICB9LAoKICAvLyBmb3JtYXQgMyBpcyBkZXByZWNhdGVkCiAgLy8gZm9ybWF0IDQgaXMgbm90IHN1cHBvcnRlZCBieSBNaWNyb3NvZnQKCiAgNTogewogICAgZGF0YTogQml0QWxpZ25lZAogIH0sCgogIDY6IHsKICAgIG1ldHJpY3M6IEJpZ01ldHJpY3MsCiAgICBkYXRhOiBCeXRlQWxpZ25lZAogIH0sCgogIDc6IHsKICAgIG1ldHJpY3M6IEJpZ01ldHJpY3MsCiAgICBkYXRhOiBCaXRBbGlnbmVkCiAgfSwKCiAgODogewogICAgbWV0cmljczogU21hbGxNZXRyaWNzLAogICAgcGFkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQ4KSwKICAgIG51bUNvbXBvbmVudHM6IHIudWludDE2LAogICAgY29tcG9uZW50czogbmV3IHIuQXJyYXkoRUJEVENvbXBvbmVudCwgJ251bUNvbXBvbmVudHMnKQogIH0sCgogIDk6IHsKICAgIG1ldHJpY3M6IEJpZ01ldHJpY3MsCiAgICBwYWQ6IG5ldyByLlJlc2VydmVkKHIudWludDgpLAogICAgbnVtQ29tcG9uZW50czogci51aW50MTYsCiAgICBjb21wb25lbnRzOiBuZXcgci5BcnJheShFQkRUQ29tcG9uZW50LCAnbnVtQ29tcG9uZW50cycpCiAgfSwKCiAgMTc6IHsKICAgIG1ldHJpY3M6IFNtYWxsTWV0cmljcywKICAgIGRhdGFMZW46IHIudWludDMyLAogICAgZGF0YTogbmV3IHIuQnVmZmVyKCdkYXRhTGVuJykKICB9LAoKICAxODogewogICAgbWV0cmljczogQmlnTWV0cmljcywKICAgIGRhdGFMZW46IHIudWludDMyLAogICAgZGF0YTogbmV3IHIuQnVmZmVyKCdkYXRhTGVuJykKICB9LAoKICAxOTogewogICAgZGF0YUxlbjogci51aW50MzIsCiAgICBkYXRhOiBuZXcgci5CdWZmZXIoJ2RhdGFMZW4nKQogIH0KfSk7Cgp2YXIgU0JpdExpbmVNZXRyaWNzID0gbmV3IHIuU3RydWN0KHsKICBhc2NlbmRlcjogci5pbnQ4LAogIGRlc2NlbmRlcjogci5pbnQ4LAogIHdpZHRoTWF4OiByLnVpbnQ4LAogIGNhcmV0U2xvcGVOdW1lcmF0b3I6IHIuaW50OCwKICBjYXJldFNsb3BlRGVub21pbmF0b3I6IHIuaW50OCwKICBjYXJldE9mZnNldDogci5pbnQ4LAogIG1pbk9yaWdpblNCOiByLmludDgsCiAgbWluQWR2YW5jZVNCOiByLmludDgsCiAgbWF4QmVmb3JlQkw6IHIuaW50OCwKICBtaW5BZnRlckJMOiByLmludDgsCiAgcGFkOiBuZXcgci5SZXNlcnZlZChyLmludDgsIDIpCn0pOwoKdmFyIENvZGVPZmZzZXRQYWlyID0gbmV3IHIuU3RydWN0KHsKICBnbHlwaENvZGU6IHIudWludDE2LAogIG9mZnNldDogci51aW50MTYKfSk7Cgp2YXIgSW5kZXhTdWJ0YWJsZSA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQxNiwgewogIGhlYWRlcjogewogICAgaW1hZ2VGb3JtYXQ6IHIudWludDE2LAogICAgaW1hZ2VEYXRhT2Zmc2V0OiByLnVpbnQzMgogIH0sCgogIDE6IHsKICAgIG9mZnNldEFycmF5OiBuZXcgci5BcnJheShyLnVpbnQzMiwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQucGFyZW50Lmxhc3RHbHlwaEluZGV4IC0gdC5wYXJlbnQuZmlyc3RHbHlwaEluZGV4ICsgMTsKICAgIH0pCiAgfSwKCiAgMjogewogICAgaW1hZ2VTaXplOiByLnVpbnQzMiwKICAgIGJpZ01ldHJpY3M6IEJpZ01ldHJpY3MKICB9LAoKICAzOiB7CiAgICBvZmZzZXRBcnJheTogbmV3IHIuQXJyYXkoci51aW50MTYsIGZ1bmN0aW9uICh0KSB7CiAgICAgIHJldHVybiB0LnBhcmVudC5sYXN0R2x5cGhJbmRleCAtIHQucGFyZW50LmZpcnN0R2x5cGhJbmRleCArIDE7CiAgICB9KQogIH0sCgogIDQ6IHsKICAgIG51bUdseXBoczogci51aW50MzIsCiAgICBnbHlwaEFycmF5OiBuZXcgci5BcnJheShDb2RlT2Zmc2V0UGFpciwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQubnVtR2x5cGhzICsgMTsKICAgIH0pCiAgfSwKCiAgNTogewogICAgaW1hZ2VTaXplOiByLnVpbnQzMiwKICAgIGJpZ01ldHJpY3M6IEJpZ01ldHJpY3MsCiAgICBudW1HbHlwaHM6IHIudWludDMyLAogICAgZ2x5cGhDb2RlQXJyYXk6IG5ldyByLkFycmF5KHIudWludDE2LCAnbnVtR2x5cGhzJykKICB9Cn0pOwoKdmFyIEluZGV4U3VidGFibGVBcnJheSA9IG5ldyByLlN0cnVjdCh7CiAgZmlyc3RHbHlwaEluZGV4OiByLnVpbnQxNiwKICBsYXN0R2x5cGhJbmRleDogci51aW50MTYsCiAgc3VidGFibGU6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIEluZGV4U3VidGFibGUpCn0pOwoKdmFyIEJpdG1hcFNpemVUYWJsZSA9IG5ldyByLlN0cnVjdCh7CiAgaW5kZXhTdWJUYWJsZUFycmF5OiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBuZXcgci5BcnJheShJbmRleFN1YnRhYmxlQXJyYXksIDEpLCB7IHR5cGU6ICdwYXJlbnQnIH0pLAogIGluZGV4VGFibGVzU2l6ZTogci51aW50MzIsCiAgbnVtYmVyT2ZJbmRleFN1YlRhYmxlczogci51aW50MzIsCiAgY29sb3JSZWY6IHIudWludDMyLAogIGhvcmk6IFNCaXRMaW5lTWV0cmljcywKICB2ZXJ0OiBTQml0TGluZU1ldHJpY3MsCiAgc3RhcnRHbHlwaEluZGV4OiByLnVpbnQxNiwKICBlbmRHbHlwaEluZGV4OiByLnVpbnQxNiwKICBwcGVtWDogci51aW50OCwKICBwcGVtWTogci51aW50OCwKICBiaXREZXB0aDogci51aW50OCwKICBmbGFnczogbmV3IHIuQml0ZmllbGQoci51aW50OCwgWydob3Jpem9udGFsJywgJ3ZlcnRpY2FsJ10pCn0pOwoKdmFyIEVCTEMgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIudWludDMyLCAvLyAweDAwMDIwMDAwCiAgbnVtU2l6ZXM6IHIudWludDMyLAogIHNpemVzOiBuZXcgci5BcnJheShCaXRtYXBTaXplVGFibGUsICdudW1TaXplcycpCn0pOwoKdmFyIEltYWdlVGFibGUgPSBuZXcgci5TdHJ1Y3QoewogIHBwZW06IHIudWludDE2LAogIHJlc29sdXRpb246IHIudWludDE2LAogIGltYWdlT2Zmc2V0czogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgJ3ZvaWQnKSwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0LnBhcmVudC5wYXJlbnQubWF4cC5udW1HbHlwaHMgKyAxOwogIH0pCn0pOwoKLy8gVGhpcyBpcyB0aGUgQXBwbGUgc2JpeCB0YWJsZSwgdXNlZCBieSB0aGUgIkFwcGxlIENvbG9yIEVtb2ppIiBmb250LgovLyBJdCBpbmNsdWRlcyBzZXZlcmFsIGltYWdlIHRhYmxlcyB3aXRoIGltYWdlcyBmb3IgZWFjaCBiaXRtYXAgZ2x5cGgKLy8gb2Ygc2V2ZXJhbCBkaWZmZXJlbnQgc2l6ZXMuCnZhciBzYml4ID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLnVpbnQxNiwKICBmbGFnczogbmV3IHIuQml0ZmllbGQoci51aW50MTYsIFsncmVuZGVyT3V0bGluZXMnXSksCiAgbnVtSW1nVGFibGVzOiByLnVpbnQzMiwKICBpbWFnZVRhYmxlczogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgSW1hZ2VUYWJsZSksICdudW1JbWdUYWJsZXMnKQp9KTsKCnZhciBMYXllclJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgZ2lkOiByLnVpbnQxNiwgLy8gR2x5cGggSUQgb2YgbGF5ZXIgZ2x5cGggKG11c3QgYmUgaW4gei1vcmRlciBmcm9tIGJvdHRvbSB0byB0b3ApLgogIHBhbGV0dGVJbmRleDogci51aW50MTYgLy8gSW5kZXggdmFsdWUgdG8gdXNlIGluIHRoZSBhcHByb3ByaWF0ZSBwYWxldHRlLiBUaGlzIHZhbHVlIG11c3QKfSk7IC8vIGJlIGxlc3MgdGhhbiBudW1QYWxldHRlRW50cmllcyBpbiB0aGUgQ1BBTCB0YWJsZSwgZXhjZXB0IGZvcgovLyB0aGUgc3BlY2lhbCBjYXNlIG5vdGVkIGJlbG93LiBFYWNoIHBhbGV0dGUgZW50cnkgaXMgMTYgYml0cy4KLy8gQSBwYWxldHRlIGluZGV4IG9mIDB4RkZGRiBpcyBhIHNwZWNpYWwgY2FzZSBpbmRpY2F0aW5nIHRoYXQKLy8gdGhlIHRleHQgZm9yZWdyb3VuZCBjb2xvciBzaG91bGQgYmUgdXNlZC4KCnZhciBCYXNlR2x5cGhSZWNvcmQgPSBuZXcgci5TdHJ1Y3QoewogIGdpZDogci51aW50MTYsIC8vIEdseXBoIElEIG9mIHJlZmVyZW5jZSBnbHlwaC4gVGhpcyBnbHlwaCBpcyBmb3IgcmVmZXJlbmNlIG9ubHkKICAvLyBhbmQgaXMgbm90IHJlbmRlcmVkIGZvciBjb2xvci4KICBmaXJzdExheWVySW5kZXg6IHIudWludDE2LCAvLyBJbmRleCAoZnJvbSBiZWdpbm5pbmcgb2YgdGhlIExheWVyIFJlY29yZHMpIHRvIHRoZSBsYXllciByZWNvcmQuCiAgLy8gVGhlcmUgd2lsbCBiZSBudW1MYXllcnMgY29uc2VjdXRpdmUgZW50cmllcyBmb3IgdGhpcyBiYXNlIGdseXBoLgogIG51bUxheWVyczogci51aW50MTYKfSk7Cgp2YXIgQ09MUiA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci51aW50MTYsCiAgbnVtQmFzZUdseXBoUmVjb3Jkczogci51aW50MTYsCiAgYmFzZUdseXBoUmVjb3JkOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBuZXcgci5BcnJheShCYXNlR2x5cGhSZWNvcmQsICdudW1CYXNlR2x5cGhSZWNvcmRzJykpLAogIGxheWVyUmVjb3JkczogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgbmV3IHIuQXJyYXkoTGF5ZXJSZWNvcmQsICdudW1MYXllclJlY29yZHMnKSwgeyBsYXp5OiB0cnVlIH0pLAogIG51bUxheWVyUmVjb3Jkczogci51aW50MTYKfSk7Cgp2YXIgQ29sb3JSZWNvcmQgPSBuZXcgci5TdHJ1Y3QoewogIGJsdWU6IHIudWludDgsCiAgZ3JlZW46IHIudWludDgsCiAgcmVkOiByLnVpbnQ4LAogIGFscGhhOiByLnVpbnQ4Cn0pOwoKdmFyIENQQUwgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3Qoci51aW50MTYsIHsKICBoZWFkZXI6IHsKICAgIG51bVBhbGV0dGVFbnRyaWVzOiByLnVpbnQxNiwKICAgIG51bVBhbGV0dGVzOiByLnVpbnQxNiwKICAgIG51bUNvbG9yUmVjb3Jkczogci51aW50MTYsCiAgICBjb2xvclJlY29yZHM6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyByLkFycmF5KENvbG9yUmVjb3JkLCAnbnVtQ29sb3JSZWNvcmRzJykpLAogICAgY29sb3JSZWNvcmRJbmRpY2VzOiBuZXcgci5BcnJheShyLnVpbnQxNiwgJ251bVBhbGV0dGVzJykKICB9LAogIDA6IHt9LAogIDE6IHsKICAgIG9mZnNldFBhbGV0dGVUeXBlQXJyYXk6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyByLkFycmF5KHIudWludDMyLCAnbnVtUGFsZXR0ZXMnKSksCiAgICBvZmZzZXRQYWxldHRlTGFiZWxBcnJheTogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgbmV3IHIuQXJyYXkoci51aW50MTYsICdudW1QYWxldHRlcycpKSwKICAgIG9mZnNldFBhbGV0dGVFbnRyeUxhYmVsQXJyYXk6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyByLkFycmF5KHIudWludDE2LCAnbnVtUGFsZXR0ZUVudHJpZXMnKSkKICB9Cn0pOwoKdmFyIEJhc2VDb29yZCA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQxNiwgewogIDE6IHsgLy8gRGVzaWduIHVuaXRzIG9ubHkKICAgIGNvb3JkaW5hdGU6IHIuaW50MTYgLy8gWCBvciBZIHZhbHVlLCBpbiBkZXNpZ24gdW5pdHMKICB9LAoKICAyOiB7IC8vIERlc2lnbiB1bml0cyBwbHVzIGNvbnRvdXIgcG9pbnQKICAgIGNvb3JkaW5hdGU6IHIuaW50MTYsIC8vIFggb3IgWSB2YWx1ZSwgaW4gZGVzaWduIHVuaXRzCiAgICByZWZlcmVuY2VHbHlwaDogci51aW50MTYsIC8vIEdseXBoSUQgb2YgY29udHJvbCBnbHlwaAogICAgYmFzZUNvb3JkUG9pbnQ6IHIudWludDE2IC8vIEluZGV4IG9mIGNvbnRvdXIgcG9pbnQgb24gdGhlIHJlZmVyZW5jZUdseXBoCiAgfSwKCiAgMzogeyAvLyBEZXNpZ24gdW5pdHMgcGx1cyBEZXZpY2UgdGFibGUKICAgIGNvb3JkaW5hdGU6IHIuaW50MTYsIC8vIFggb3IgWSB2YWx1ZSwgaW4gZGVzaWduIHVuaXRzCiAgICBkZXZpY2VUYWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRGV2aWNlKSAvLyBEZXZpY2UgdGFibGUgZm9yIFggb3IgWSB2YWx1ZQogIH0KfSk7Cgp2YXIgQmFzZVZhbHVlcyA9IG5ldyByLlN0cnVjdCh7CiAgZGVmYXVsdEluZGV4OiByLnVpbnQxNiwgLy8gSW5kZXggb2YgZGVmYXVsdCBiYXNlbGluZSBmb3IgdGhpcyBzY3JpcHQtc2FtZSBpbmRleCBpbiB0aGUgQmFzZVRhZ0xpc3QKICBiYXNlQ29vcmRDb3VudDogci51aW50MTYsCiAgYmFzZUNvb3JkczogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQmFzZUNvb3JkKSwgJ2Jhc2VDb29yZENvdW50JykKfSk7Cgp2YXIgRmVhdE1pbk1heFJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgdGFnOiBuZXcgci5TdHJpbmcoNCksIC8vIDQtYnl0ZSBmZWF0dXJlIGlkZW50aWZpY2F0aW9uIHRhZy1tdXN0IG1hdGNoIEZlYXR1cmVUYWcgaW4gRmVhdHVyZUxpc3QKICBtaW5Db29yZDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQmFzZUNvb3JkLCB7IHR5cGU6ICdwYXJlbnQnIH0pLCAvLyBNYXkgYmUgTlVMTAogIG1heENvb3JkOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBCYXNlQ29vcmQsIHsgdHlwZTogJ3BhcmVudCcgfSkgLy8gTWF5IGJlIE5VTEwKfSk7Cgp2YXIgTWluTWF4ID0gbmV3IHIuU3RydWN0KHsKICBtaW5Db29yZDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQmFzZUNvb3JkKSwgLy8gTWF5IGJlIE5VTEwKICBtYXhDb29yZDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQmFzZUNvb3JkKSwgLy8gTWF5IGJlIE5VTEwKICBmZWF0TWluTWF4Q291bnQ6IHIudWludDE2LCAvLyBNYXkgYmUgMAogIGZlYXRNaW5NYXhSZWNvcmRzOiBuZXcgci5BcnJheShGZWF0TWluTWF4UmVjb3JkLCAnZmVhdE1pbk1heENvdW50JykgLy8gSW4gYWxwaGFiZXRpY2FsIG9yZGVyCn0pOwoKdmFyIEJhc2VMYW5nU3lzUmVjb3JkID0gbmV3IHIuU3RydWN0KHsKICB0YWc6IG5ldyByLlN0cmluZyg0KSwgLy8gNC1ieXRlIGxhbmd1YWdlIHN5c3RlbSBpZGVudGlmaWNhdGlvbiB0YWcKICBtaW5NYXg6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIE1pbk1heCwgeyB0eXBlOiAncGFyZW50JyB9KQp9KTsKCnZhciBCYXNlU2NyaXB0ID0gbmV3IHIuU3RydWN0KHsKICBiYXNlVmFsdWVzOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBCYXNlVmFsdWVzKSwgLy8gTWF5IGJlIE5VTEwKICBkZWZhdWx0TWluTWF4OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBNaW5NYXgpLCAvLyBNYXkgYmUgTlVMTAogIGJhc2VMYW5nU3lzQ291bnQ6IHIudWludDE2LCAvLyBNYXkgYmUgMAogIGJhc2VMYW5nU3lzUmVjb3JkczogbmV3IHIuQXJyYXkoQmFzZUxhbmdTeXNSZWNvcmQsICdiYXNlTGFuZ1N5c0NvdW50JykgLy8gaW4gYWxwaGFiZXRpY2FsIG9yZGVyIGJ5IEJhc2VMYW5nU3lzVGFnCn0pOwoKdmFyIEJhc2VTY3JpcHRSZWNvcmQgPSBuZXcgci5TdHJ1Y3QoewogIHRhZzogbmV3IHIuU3RyaW5nKDQpLCAvLyA0LWJ5dGUgc2NyaXB0IGlkZW50aWZpY2F0aW9uIHRhZwogIHNjcmlwdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQmFzZVNjcmlwdCwgeyB0eXBlOiAncGFyZW50JyB9KQp9KTsKCnZhciBCYXNlU2NyaXB0TGlzdCA9IG5ldyByLkFycmF5KEJhc2VTY3JpcHRSZWNvcmQsIHIudWludDE2KTsKCi8vIEFycmF5IG9mIDQtYnl0ZSBiYXNlbGluZSBpZGVudGlmaWNhdGlvbiB0YWdzLW11c3QgYmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCnZhciBCYXNlVGFnTGlzdCA9IG5ldyByLkFycmF5KG5ldyByLlN0cmluZyg0KSwgci51aW50MTYpOwoKdmFyIEF4aXMgPSBuZXcgci5TdHJ1Y3QoewogIGJhc2VUYWdMaXN0OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBCYXNlVGFnTGlzdCksIC8vIE1heSBiZSBOVUxMCiAgYmFzZVNjcmlwdExpc3Q6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEJhc2VTY3JpcHRMaXN0KQp9KTsKCnZhciBCQVNFID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDMyLCB7CiAgaGVhZGVyOiB7CiAgICBob3JpekF4aXM6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEF4aXMpLCAvLyBNYXkgYmUgTlVMTAogICAgdmVydEF4aXM6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEF4aXMpIC8vIE1heSBiZSBOVUxMCiAgfSwKCiAgMHgwMDAxMDAwMDoge30sCiAgMHgwMDAxMDAwMTogewogICAgaXRlbVZhcmlhdGlvblN0b3JlOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBJdGVtVmFyaWF0aW9uU3RvcmUpCiAgfQp9KTsKCnZhciBBdHRhY2hQb2ludCA9IG5ldyByLkFycmF5KHIudWludDE2LCByLnVpbnQxNik7CnZhciBBdHRhY2hMaXN0ID0gbmV3IHIuU3RydWN0KHsKICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogIGdseXBoQ291bnQ6IHIudWludDE2LAogIGF0dGFjaFBvaW50czogbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQXR0YWNoUG9pbnQpLCAnZ2x5cGhDb3VudCcpCn0pOwoKdmFyIENhcmV0VmFsdWUgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3Qoci51aW50MTYsIHsKICAxOiB7IC8vIERlc2lnbiB1bml0cyBvbmx5CiAgICBjb29yZGluYXRlOiByLmludDE2CiAgfSwKCiAgMjogeyAvLyBDb250b3VyIHBvaW50CiAgICBjYXJldFZhbHVlUG9pbnQ6IHIudWludDE2CiAgfSwKCiAgMzogeyAvLyBEZXNpZ24gdW5pdHMgcGx1cyBEZXZpY2UgdGFibGUKICAgIGNvb3JkaW5hdGU6IHIuaW50MTYsCiAgICBkZXZpY2VUYWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRGV2aWNlKQogIH0KfSk7Cgp2YXIgTGlnR2x5cGggPSBuZXcgci5BcnJheShuZXcgci5Qb2ludGVyKHIudWludDE2LCBDYXJldFZhbHVlKSwgci51aW50MTYpOwoKdmFyIExpZ0NhcmV0TGlzdCA9IG5ldyByLlN0cnVjdCh7CiAgY292ZXJhZ2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwKICBsaWdHbHlwaENvdW50OiByLnVpbnQxNiwKICBsaWdHbHlwaHM6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIExpZ0dseXBoKSwgJ2xpZ0dseXBoQ291bnQnKQp9KTsKCnZhciBNYXJrR2x5cGhTZXRzRGVmID0gbmV3IHIuU3RydWN0KHsKICBtYXJrU2V0VGFibGVGb3JtYXQ6IHIudWludDE2LAogIG1hcmtTZXRDb3VudDogci51aW50MTYsCiAgY292ZXJhZ2U6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MzIsIENvdmVyYWdlKSwgJ21hcmtTZXRDb3VudCcpCn0pOwoKdmFyIEdERUYgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3Qoci51aW50MzIsIHsKICBoZWFkZXI6IHsKICAgIGdseXBoQ2xhc3NEZWY6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzRGVmKSwKICAgIGF0dGFjaExpc3Q6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEF0dGFjaExpc3QpLAogICAgbGlnQ2FyZXRMaXN0OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBMaWdDYXJldExpc3QpLAogICAgbWFya0F0dGFjaENsYXNzRGVmOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDbGFzc0RlZikKICB9LAoKICAweDAwMDEwMDAwOiB7fSwKICAweDAwMDEwMDAyOiB7CiAgICBtYXJrR2x5cGhTZXRzRGVmOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBNYXJrR2x5cGhTZXRzRGVmKQogIH0sCiAgMHgwMDAxMDAwMzogewogICAgbWFya0dseXBoU2V0c0RlZjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgTWFya0dseXBoU2V0c0RlZiksCiAgICBpdGVtVmFyaWF0aW9uU3RvcmU6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIEl0ZW1WYXJpYXRpb25TdG9yZSkKICB9Cn0pOwoKdmFyIFZhbHVlRm9ybWF0ID0gbmV3IHIuQml0ZmllbGQoci51aW50MTYsIFsneFBsYWNlbWVudCcsICd5UGxhY2VtZW50JywgJ3hBZHZhbmNlJywgJ3lBZHZhbmNlJywgJ3hQbGFEZXZpY2UnLCAneVBsYURldmljZScsICd4QWR2RGV2aWNlJywgJ3lBZHZEZXZpY2UnXSk7Cgp2YXIgdHlwZXMgPSB7CiAgeFBsYWNlbWVudDogci5pbnQxNiwKICB5UGxhY2VtZW50OiByLmludDE2LAogIHhBZHZhbmNlOiByLmludDE2LAogIHlBZHZhbmNlOiByLmludDE2LAogIHhQbGFEZXZpY2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIERldmljZSwgeyB0eXBlOiAnZ2xvYmFsJywgcmVsYXRpdmVUbzogJ3JlbCcgfSksCiAgeVBsYURldmljZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRGV2aWNlLCB7IHR5cGU6ICdnbG9iYWwnLCByZWxhdGl2ZVRvOiAncmVsJyB9KSwKICB4QWR2RGV2aWNlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBEZXZpY2UsIHsgdHlwZTogJ2dsb2JhbCcsIHJlbGF0aXZlVG86ICdyZWwnIH0pLAogIHlBZHZEZXZpY2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIERldmljZSwgeyB0eXBlOiAnZ2xvYmFsJywgcmVsYXRpdmVUbzogJ3JlbCcgfSkKfTsKCnZhciBWYWx1ZVJlY29yZCA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBWYWx1ZVJlY29yZCgpIHsKICAgIHZhciBrZXkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICd2YWx1ZUZvcm1hdCc7CgogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFZhbHVlUmVjb3JkKTsKCiAgICB0aGlzLmtleSA9IGtleTsKICB9CgogIFZhbHVlUmVjb3JkLnByb3RvdHlwZS5idWlsZFN0cnVjdCA9IGZ1bmN0aW9uIGJ1aWxkU3RydWN0KHBhcmVudCkgewogICAgdmFyIHN0cnVjdCA9IHBhcmVudDsKICAgIHdoaWxlICghc3RydWN0W3RoaXMua2V5XSAmJiBzdHJ1Y3QucGFyZW50KSB7CiAgICAgIHN0cnVjdCA9IHN0cnVjdC5wYXJlbnQ7CiAgICB9CgogICAgaWYgKCFzdHJ1Y3RbdGhpcy5rZXldKSByZXR1cm47CgogICAgdmFyIGZpZWxkcyA9IHt9OwogICAgZmllbGRzLnJlbCA9IGZ1bmN0aW9uICgpIHsKICAgICAgcmV0dXJuIHN0cnVjdC5fc3RhcnRPZmZzZXQ7CiAgICB9OwoKICAgIHZhciBmb3JtYXQgPSBzdHJ1Y3RbdGhpcy5rZXldOwogICAgZm9yICh2YXIga2V5IGluIGZvcm1hdCkgewogICAgICBpZiAoZm9ybWF0W2tleV0pIHsKICAgICAgICBmaWVsZHNba2V5XSA9IHR5cGVzW2tleV07CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbmV3IHIuU3RydWN0KGZpZWxkcyk7CiAgfTsKCiAgVmFsdWVSZWNvcmQucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiBzaXplKHZhbCwgY3R4KSB7CiAgICByZXR1cm4gdGhpcy5idWlsZFN0cnVjdChjdHgpLnNpemUodmFsLCBjdHgpOwogIH07CgogIFZhbHVlUmVjb3JkLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoc3RyZWFtLCBwYXJlbnQpIHsKICAgIHZhciByZXMgPSB0aGlzLmJ1aWxkU3RydWN0KHBhcmVudCkuZGVjb2RlKHN0cmVhbSwgcGFyZW50KTsKICAgIGRlbGV0ZSByZXMucmVsOwogICAgcmV0dXJuIHJlczsKICB9OwoKICByZXR1cm4gVmFsdWVSZWNvcmQ7Cn0oKTsKCnZhciBQYWlyVmFsdWVSZWNvcmQgPSBuZXcgci5TdHJ1Y3QoewogIHNlY29uZEdseXBoOiByLnVpbnQxNiwKICB2YWx1ZTE6IG5ldyBWYWx1ZVJlY29yZCgndmFsdWVGb3JtYXQxJyksCiAgdmFsdWUyOiBuZXcgVmFsdWVSZWNvcmQoJ3ZhbHVlRm9ybWF0MicpCn0pOwoKdmFyIFBhaXJTZXQgPSBuZXcgci5BcnJheShQYWlyVmFsdWVSZWNvcmQsIHIudWludDE2KTsKCnZhciBDbGFzczJSZWNvcmQgPSBuZXcgci5TdHJ1Y3QoewogIHZhbHVlMTogbmV3IFZhbHVlUmVjb3JkKCd2YWx1ZUZvcm1hdDEnKSwKICB2YWx1ZTI6IG5ldyBWYWx1ZVJlY29yZCgndmFsdWVGb3JtYXQyJykKfSk7Cgp2YXIgQW5jaG9yID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgMTogeyAvLyBEZXNpZ24gdW5pdHMgb25seQogICAgeENvb3JkaW5hdGU6IHIuaW50MTYsCiAgICB5Q29vcmRpbmF0ZTogci5pbnQxNgogIH0sCgogIDI6IHsgLy8gRGVzaWduIHVuaXRzIHBsdXMgY29udG91ciBwb2ludAogICAgeENvb3JkaW5hdGU6IHIuaW50MTYsCiAgICB5Q29vcmRpbmF0ZTogci5pbnQxNiwKICAgIGFuY2hvclBvaW50OiByLnVpbnQxNgogIH0sCgogIDM6IHsgLy8gRGVzaWduIHVuaXRzIHBsdXMgRGV2aWNlIHRhYmxlcwogICAgeENvb3JkaW5hdGU6IHIuaW50MTYsCiAgICB5Q29vcmRpbmF0ZTogci5pbnQxNiwKICAgIHhEZXZpY2VUYWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRGV2aWNlKSwKICAgIHlEZXZpY2VUYWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRGV2aWNlKQogIH0KfSk7Cgp2YXIgRW50cnlFeGl0UmVjb3JkID0gbmV3IHIuU3RydWN0KHsKICBlbnRyeUFuY2hvcjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQW5jaG9yLCB7IHR5cGU6ICdwYXJlbnQnIH0pLAogIGV4aXRBbmNob3I6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEFuY2hvciwgeyB0eXBlOiAncGFyZW50JyB9KQp9KTsKCnZhciBNYXJrUmVjb3JkID0gbmV3IHIuU3RydWN0KHsKICBjbGFzczogci51aW50MTYsCiAgbWFya0FuY2hvcjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQW5jaG9yLCB7IHR5cGU6ICdwYXJlbnQnIH0pCn0pOwoKdmFyIE1hcmtBcnJheSA9IG5ldyByLkFycmF5KE1hcmtSZWNvcmQsIHIudWludDE2KTsKCnZhciBCYXNlUmVjb3JkID0gbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQW5jaG9yKSwgZnVuY3Rpb24gKHQpIHsKICByZXR1cm4gdC5wYXJlbnQuY2xhc3NDb3VudDsKfSk7CnZhciBCYXNlQXJyYXkgPSBuZXcgci5BcnJheShCYXNlUmVjb3JkLCByLnVpbnQxNik7Cgp2YXIgQ29tcG9uZW50UmVjb3JkID0gbmV3IHIuQXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQW5jaG9yKSwgZnVuY3Rpb24gKHQpIHsKICByZXR1cm4gdC5wYXJlbnQucGFyZW50LmNsYXNzQ291bnQ7Cn0pOwp2YXIgTGlnYXR1cmVBdHRhY2ggPSBuZXcgci5BcnJheShDb21wb25lbnRSZWNvcmQsIHIudWludDE2KTsKdmFyIExpZ2F0dXJlQXJyYXkgPSBuZXcgci5BcnJheShuZXcgci5Qb2ludGVyKHIudWludDE2LCBMaWdhdHVyZUF0dGFjaCksIHIudWludDE2KTsKCnZhciBHUE9TTG9va3VwID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KCdsb29rdXBUeXBlJywgewogIDE6IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQxNiwgeyAvLyBTaW5nbGUgQWRqdXN0bWVudAogICAgMTogeyAvLyBTaW5nbGUgcG9zaXRpb25pbmcgdmFsdWUKICAgICAgY292ZXJhZ2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwKICAgICAgdmFsdWVGb3JtYXQ6IFZhbHVlRm9ybWF0LAogICAgICB2YWx1ZTogbmV3IFZhbHVlUmVjb3JkKCkKICAgIH0sCiAgICAyOiB7CiAgICAgIGNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICAgIHZhbHVlRm9ybWF0OiBWYWx1ZUZvcm1hdCwKICAgICAgdmFsdWVDb3VudDogci51aW50MTYsCiAgICAgIHZhbHVlczogbmV3IHIuTGF6eUFycmF5KG5ldyBWYWx1ZVJlY29yZCgpLCAndmFsdWVDb3VudCcpCiAgICB9CiAgfSksCgogIDI6IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQxNiwgeyAvLyBQYWlyIEFkanVzdG1lbnQgUG9zaXRpb25pbmcKICAgIDE6IHsgLy8gQWRqdXN0bWVudHMgZm9yIGdseXBoIHBhaXJzCiAgICAgIGNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICAgIHZhbHVlRm9ybWF0MTogVmFsdWVGb3JtYXQsCiAgICAgIHZhbHVlRm9ybWF0MjogVmFsdWVGb3JtYXQsCiAgICAgIHBhaXJTZXRDb3VudDogci51aW50MTYsCiAgICAgIHBhaXJTZXRzOiBuZXcgci5MYXp5QXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgUGFpclNldCksICdwYWlyU2V0Q291bnQnKQogICAgfSwKCiAgICAyOiB7IC8vIENsYXNzIHBhaXIgYWRqdXN0bWVudAogICAgICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogICAgICB2YWx1ZUZvcm1hdDE6IFZhbHVlRm9ybWF0LAogICAgICB2YWx1ZUZvcm1hdDI6IFZhbHVlRm9ybWF0LAogICAgICBjbGFzc0RlZjE6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzRGVmKSwKICAgICAgY2xhc3NEZWYyOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDbGFzc0RlZiksCiAgICAgIGNsYXNzMUNvdW50OiByLnVpbnQxNiwKICAgICAgY2xhc3MyQ291bnQ6IHIudWludDE2LAogICAgICBjbGFzc1JlY29yZHM6IG5ldyByLkxhenlBcnJheShuZXcgci5MYXp5QXJyYXkoQ2xhc3MyUmVjb3JkLCAnY2xhc3MyQ291bnQnKSwgJ2NsYXNzMUNvdW50JykKICAgIH0KICB9KSwKCiAgMzogeyAvLyBDdXJzaXZlIEF0dGFjaG1lbnQgUG9zaXRpb25pbmcKICAgIGZvcm1hdDogci51aW50MTYsCiAgICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogICAgZW50cnlFeGl0Q291bnQ6IHIudWludDE2LAogICAgZW50cnlFeGl0UmVjb3JkczogbmV3IHIuQXJyYXkoRW50cnlFeGl0UmVjb3JkLCAnZW50cnlFeGl0Q291bnQnKQogIH0sCgogIDQ6IHsgLy8gTWFya1RvQmFzZSBBdHRhY2htZW50IFBvc2l0aW9uaW5nCiAgICBmb3JtYXQ6IHIudWludDE2LAogICAgbWFya0NvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBiYXNlQ292ZXJhZ2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwKICAgIGNsYXNzQ291bnQ6IHIudWludDE2LAogICAgbWFya0FycmF5OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBNYXJrQXJyYXkpLAogICAgYmFzZUFycmF5OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBCYXNlQXJyYXkpCiAgfSwKCiAgNTogeyAvLyBNYXJrVG9MaWdhdHVyZSBBdHRhY2htZW50IFBvc2l0aW9uaW5nCiAgICBmb3JtYXQ6IHIudWludDE2LAogICAgbWFya0NvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBsaWdhdHVyZUNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBjbGFzc0NvdW50OiByLnVpbnQxNiwKICAgIG1hcmtBcnJheTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgTWFya0FycmF5KSwKICAgIGxpZ2F0dXJlQXJyYXk6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIExpZ2F0dXJlQXJyYXkpCiAgfSwKCiAgNjogeyAvLyBNYXJrVG9NYXJrIEF0dGFjaG1lbnQgUG9zaXRpb25pbmcKICAgIGZvcm1hdDogci51aW50MTYsCiAgICBtYXJrMUNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBtYXJrMkNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBjbGFzc0NvdW50OiByLnVpbnQxNiwKICAgIG1hcmsxQXJyYXk6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIE1hcmtBcnJheSksCiAgICBtYXJrMkFycmF5OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBCYXNlQXJyYXkpCiAgfSwKCiAgNzogQ29udGV4dCwgLy8gQ29udGV4dHVhbCBwb3NpdGlvbmluZwogIDg6IENoYWluaW5nQ29udGV4dCwgLy8gQ2hhaW5pbmcgY29udGV4dHVhbCBwb3NpdGlvbmluZwoKICA5OiB7IC8vIEV4dGVuc2lvbiBQb3NpdGlvbmluZwogICAgcG9zRm9ybWF0OiByLnVpbnQxNiwKICAgIGxvb2t1cFR5cGU6IHIudWludDE2LCAvLyBjYW5ub3QgYWxzbyBiZSA5CiAgICBleHRlbnNpb246IG5ldyByLlBvaW50ZXIoci51aW50MzIsIEdQT1NMb29rdXApCiAgfQp9KTsKCi8vIEZpeCBjaXJjdWxhciByZWZlcmVuY2UKR1BPU0xvb2t1cC52ZXJzaW9uc1s5XS5leHRlbnNpb24udHlwZSA9IEdQT1NMb29rdXA7Cgp2YXIgR1BPUyA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQzMiwgewogIGhlYWRlcjogewogICAgc2NyaXB0TGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgU2NyaXB0TGlzdCksCiAgICBmZWF0dXJlTGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRmVhdHVyZUxpc3QpLAogICAgbG9va3VwTGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgbmV3IExvb2t1cExpc3QoR1BPU0xvb2t1cCkpCiAgfSwKCiAgMHgwMDAxMDAwMDoge30sCiAgMHgwMDAxMDAwMTogewogICAgZmVhdHVyZVZhcmlhdGlvbnM6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIEZlYXR1cmVWYXJpYXRpb25zKQogIH0KfSk7Cgp2YXIgU2VxdWVuY2UgPSBuZXcgci5BcnJheShyLnVpbnQxNiwgci51aW50MTYpOwp2YXIgQWx0ZXJuYXRlU2V0ID0gU2VxdWVuY2U7Cgp2YXIgTGlnYXR1cmUgPSBuZXcgci5TdHJ1Y3QoewogIGdseXBoOiByLnVpbnQxNiwKICBjb21wQ291bnQ6IHIudWludDE2LAogIGNvbXBvbmVudHM6IG5ldyByLkFycmF5KHIudWludDE2LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQuY29tcENvdW50IC0gMTsKICB9KQp9KTsKCnZhciBMaWdhdHVyZVNldCA9IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIExpZ2F0dXJlKSwgci51aW50MTYpOwoKdmFyIEdTVUJMb29rdXAgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3QoJ2xvb2t1cFR5cGUnLCB7CiAgMTogbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7IC8vIFNpbmdsZSBTdWJzdGl0dXRpb24KICAgIDE6IHsKICAgICAgY292ZXJhZ2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwKICAgICAgZGVsdGFHbHlwaElEOiByLmludDE2CiAgICB9LAogICAgMjogewogICAgICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogICAgICBnbHlwaENvdW50OiByLnVpbnQxNiwKICAgICAgc3Vic3RpdHV0ZTogbmV3IHIuTGF6eUFycmF5KHIudWludDE2LCAnZ2x5cGhDb3VudCcpCiAgICB9CiAgfSksCgogIDI6IHsgLy8gTXVsdGlwbGUgU3Vic3RpdHV0aW9uCiAgICBzdWJzdEZvcm1hdDogci51aW50MTYsCiAgICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogICAgY291bnQ6IHIudWludDE2LAogICAgc2VxdWVuY2VzOiBuZXcgci5MYXp5QXJyYXkobmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgU2VxdWVuY2UpLCAnY291bnQnKQogIH0sCgogIDM6IHsgLy8gQWx0ZXJuYXRlIFN1YnN0aXR1dGlvbgogICAgc3Vic3RGb3JtYXQ6IHIudWludDE2LAogICAgY292ZXJhZ2U6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwKICAgIGNvdW50OiByLnVpbnQxNiwKICAgIGFsdGVybmF0ZVNldDogbmV3IHIuTGF6eUFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIEFsdGVybmF0ZVNldCksICdjb3VudCcpCiAgfSwKCiAgNDogeyAvLyBMaWdhdHVyZSBTdWJzdGl0dXRpb24KICAgIHN1YnN0Rm9ybWF0OiByLnVpbnQxNiwKICAgIGNvdmVyYWdlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDb3ZlcmFnZSksCiAgICBjb3VudDogci51aW50MTYsCiAgICBsaWdhdHVyZVNldHM6IG5ldyByLkxhenlBcnJheShuZXcgci5Qb2ludGVyKHIudWludDE2LCBMaWdhdHVyZVNldCksICdjb3VudCcpCiAgfSwKCiAgNTogQ29udGV4dCwgLy8gQ29udGV4dHVhbCBTdWJzdGl0dXRpb24KICA2OiBDaGFpbmluZ0NvbnRleHQsIC8vIENoYWluaW5nIENvbnRleHR1YWwgU3Vic3RpdHV0aW9uCgogIDc6IHsgLy8gRXh0ZW5zaW9uIFN1YnN0aXR1dGlvbgogICAgc3Vic3RGb3JtYXQ6IHIudWludDE2LAogICAgbG9va3VwVHlwZTogci51aW50MTYsIC8vIGNhbm5vdCBhbHNvIGJlIDcKICAgIGV4dGVuc2lvbjogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgR1NVQkxvb2t1cCkKICB9LAoKICA4OiB7IC8vIFJldmVyc2UgQ2hhaW5pbmcgQ29udGV4dHVhbCBTaW5nbGUgU3Vic3RpdHV0aW9uCiAgICBzdWJzdEZvcm1hdDogci51aW50MTYsCiAgICBjb3ZlcmFnZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ292ZXJhZ2UpLAogICAgYmFja3RyYWNrQ292ZXJhZ2U6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwgJ2JhY2t0cmFja0dseXBoQ291bnQnKSwKICAgIGxvb2thaGVhZEdseXBoQ291bnQ6IHIudWludDE2LAogICAgbG9va2FoZWFkQ292ZXJhZ2U6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIENvdmVyYWdlKSwgJ2xvb2thaGVhZEdseXBoQ291bnQnKSwKICAgIGdseXBoQ291bnQ6IHIudWludDE2LAogICAgc3Vic3RpdHV0ZXM6IG5ldyByLkFycmF5KHIudWludDE2LCAnZ2x5cGhDb3VudCcpCiAgfQp9KTsKCi8vIEZpeCBjaXJjdWxhciByZWZlcmVuY2UKR1NVQkxvb2t1cC52ZXJzaW9uc1s3XS5leHRlbnNpb24udHlwZSA9IEdTVUJMb29rdXA7Cgp2YXIgR1NVQiA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQzMiwgewogIGhlYWRlcjogewogICAgc2NyaXB0TGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgU2NyaXB0TGlzdCksCiAgICBmZWF0dXJlTGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgRmVhdHVyZUxpc3QpLAogICAgbG9va3VwTGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgbmV3IExvb2t1cExpc3QoR1NVQkxvb2t1cCkpCiAgfSwKCiAgMHgwMDAxMDAwMDoge30sCiAgMHgwMDAxMDAwMTogewogICAgZmVhdHVyZVZhcmlhdGlvbnM6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIEZlYXR1cmVWYXJpYXRpb25zKQogIH0KfSk7Cgp2YXIgSnN0ZkdTVUJNb2RMaXN0ID0gbmV3IHIuQXJyYXkoci51aW50MTYsIHIudWludDE2KTsKCnZhciBKc3RmUHJpb3JpdHkgPSBuZXcgci5TdHJ1Y3QoewogIHNocmlua2FnZUVuYWJsZUdTVUI6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEpzdGZHU1VCTW9kTGlzdCksCiAgc2hyaW5rYWdlRGlzYWJsZUdTVUI6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEpzdGZHU1VCTW9kTGlzdCksCiAgc2hyaW5rYWdlRW5hYmxlR1BPUzogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgSnN0ZkdTVUJNb2RMaXN0KSwKICBzaHJpbmthZ2VEaXNhYmxlR1BPUzogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgSnN0ZkdTVUJNb2RMaXN0KSwKICBzaHJpbmthZ2VKc3RmTWF4OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBuZXcgTG9va3VwTGlzdChHUE9TTG9va3VwKSksCiAgZXh0ZW5zaW9uRW5hYmxlR1NVQjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgSnN0ZkdTVUJNb2RMaXN0KSwKICBleHRlbnNpb25EaXNhYmxlR1NVQjogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgSnN0ZkdTVUJNb2RMaXN0KSwKICBleHRlbnNpb25FbmFibGVHUE9TOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBKc3RmR1NVQk1vZExpc3QpLAogIGV4dGVuc2lvbkRpc2FibGVHUE9TOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBKc3RmR1NVQk1vZExpc3QpLAogIGV4dGVuc2lvbkpzdGZNYXg6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIG5ldyBMb29rdXBMaXN0KEdQT1NMb29rdXApKQp9KTsKCnZhciBKc3RmTGFuZ1N5cyA9IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MTYsIEpzdGZQcmlvcml0eSksIHIudWludDE2KTsKCnZhciBKc3RmTGFuZ1N5c1JlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgdGFnOiBuZXcgci5TdHJpbmcoNCksCiAganN0ZkxhbmdTeXM6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIEpzdGZMYW5nU3lzKQp9KTsKCnZhciBKc3RmU2NyaXB0ID0gbmV3IHIuU3RydWN0KHsKICBleHRlbmRlckdseXBoczogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgbmV3IHIuQXJyYXkoci51aW50MTYsIHIudWludDE2KSksIC8vIGFycmF5IG9mIGdseXBocyB0byBleHRlbmQgbGluZSBsZW5ndGgKICBkZWZhdWx0TGFuZ1N5czogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgSnN0ZkxhbmdTeXMpLAogIGxhbmdTeXNDb3VudDogci51aW50MTYsCiAgbGFuZ1N5c1JlY29yZHM6IG5ldyByLkFycmF5KEpzdGZMYW5nU3lzUmVjb3JkLCAnbGFuZ1N5c0NvdW50JykKfSk7Cgp2YXIgSnN0ZlNjcmlwdFJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAgdGFnOiBuZXcgci5TdHJpbmcoNCksCiAgc2NyaXB0OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBKc3RmU2NyaXB0LCB7IHR5cGU6ICdwYXJlbnQnIH0pCn0pOwoKdmFyIEpTVEYgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIudWludDMyLCAvLyBzaG91bGQgYmUgMHgwMDAxMDAwMAogIHNjcmlwdENvdW50OiByLnVpbnQxNiwKICBzY3JpcHRMaXN0OiBuZXcgci5BcnJheShKc3RmU2NyaXB0UmVjb3JkLCAnc2NyaXB0Q291bnQnKQp9KTsKCi8vIFRPRE86IGFkZCB0aGlzIHRvIHJlc3RydWN0dXJlCgp2YXIgVmFyaWFibGVTaXplTnVtYmVyID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIFZhcmlhYmxlU2l6ZU51bWJlcihzaXplKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVmFyaWFibGVTaXplTnVtYmVyKTsKCiAgICB0aGlzLl9zaXplID0gc2l6ZTsKICB9CgogIFZhcmlhYmxlU2l6ZU51bWJlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKHN0cmVhbSwgcGFyZW50KSB7CiAgICBzd2l0Y2ggKHRoaXMuc2l6ZSgwLCBwYXJlbnQpKSB7CiAgICAgIGNhc2UgMToKICAgICAgICByZXR1cm4gc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICBjYXNlIDI6CiAgICAgICAgcmV0dXJuIHN0cmVhbS5yZWFkVUludDE2QkUoKTsKICAgICAgY2FzZSAzOgogICAgICAgIHJldHVybiBzdHJlYW0ucmVhZFVJbnQyNEJFKCk7CiAgICAgIGNhc2UgNDoKICAgICAgICByZXR1cm4gc3RyZWFtLnJlYWRVSW50MzJCRSgpOwogICAgfQogIH07CgogIFZhcmlhYmxlU2l6ZU51bWJlci5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIHNpemUodmFsLCBwYXJlbnQpIHsKICAgIHJldHVybiByZXN0cnVjdHVyZV9zcmNfdXRpbHMucmVzb2x2ZUxlbmd0aCh0aGlzLl9zaXplLCBudWxsLCBwYXJlbnQpOwogIH07CgogIHJldHVybiBWYXJpYWJsZVNpemVOdW1iZXI7Cn0oKTsKCnZhciBNYXBEYXRhRW50cnkgPSBuZXcgci5TdHJ1Y3QoewogIGVudHJ5OiBuZXcgVmFyaWFibGVTaXplTnVtYmVyKGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gKCh0LnBhcmVudC5lbnRyeUZvcm1hdCAmIDB4MDAzMCkgPj4gNCkgKyAxOwogIH0pLAogIG91dGVySW5kZXg6IGZ1bmN0aW9uIG91dGVySW5kZXgodCkgewogICAgcmV0dXJuIHQuZW50cnkgPj4gKHQucGFyZW50LmVudHJ5Rm9ybWF0ICYgMHgwMDBGKSArIDE7CiAgfSwKICBpbm5lckluZGV4OiBmdW5jdGlvbiBpbm5lckluZGV4KHQpIHsKICAgIHJldHVybiB0LmVudHJ5ICYgKDEgPDwgKHQucGFyZW50LmVudHJ5Rm9ybWF0ICYgMHgwMDBGKSArIDEpIC0gMTsKICB9Cn0pOwoKdmFyIERlbHRhU2V0SW5kZXhNYXAgPSBuZXcgci5TdHJ1Y3QoewogIGVudHJ5Rm9ybWF0OiByLnVpbnQxNiwKICBtYXBDb3VudDogci51aW50MTYsCiAgbWFwRGF0YTogbmV3IHIuQXJyYXkoTWFwRGF0YUVudHJ5LCAnbWFwQ291bnQnKQp9KTsKCnZhciBIVkFSID0gbmV3IHIuU3RydWN0KHsKICBtYWpvclZlcnNpb246IHIudWludDE2LAogIG1pbm9yVmVyc2lvbjogci51aW50MTYsCiAgaXRlbVZhcmlhdGlvblN0b3JlOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBJdGVtVmFyaWF0aW9uU3RvcmUpLAogIGFkdmFuY2VXaWR0aE1hcHBpbmc6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIERlbHRhU2V0SW5kZXhNYXApLAogIExTQk1hcHBpbmc6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIERlbHRhU2V0SW5kZXhNYXApLAogIFJTQk1hcHBpbmc6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIERlbHRhU2V0SW5kZXhNYXApCn0pOwoKdmFyIFNpZ25hdHVyZSA9IG5ldyByLlN0cnVjdCh7CiAgZm9ybWF0OiByLnVpbnQzMiwKICBsZW5ndGg6IHIudWludDMyLAogIG9mZnNldDogci51aW50MzIKfSk7Cgp2YXIgU2lnbmF0dXJlQmxvY2sgPSBuZXcgci5TdHJ1Y3QoewogIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiwgMiksCiAgY2JTaWduYXR1cmU6IHIudWludDMyLCAvLyBMZW5ndGggKGluIGJ5dGVzKSBvZiB0aGUgUEtDUyM3IHBhY2tldCBpbiBwYlNpZ25hdHVyZQogIHNpZ25hdHVyZTogbmV3IHIuQnVmZmVyKCdjYlNpZ25hdHVyZScpCn0pOwoKdmFyIERTSUcgPSBuZXcgci5TdHJ1Y3QoewogIHVsVmVyc2lvbjogci51aW50MzIsIC8vIFZlcnNpb24gbnVtYmVyIG9mIHRoZSBEU0lHIHRhYmxlICgweDAwMDAwMDAxKQogIHVzTnVtU2lnczogci51aW50MTYsIC8vIE51bWJlciBvZiBzaWduYXR1cmVzIGluIHRoZSB0YWJsZQogIHVzRmxhZzogci51aW50MTYsIC8vIFBlcm1pc3Npb24gZmxhZ3MKICBzaWduYXR1cmVzOiBuZXcgci5BcnJheShTaWduYXR1cmUsICd1c051bVNpZ3MnKSwKICBzaWduYXR1cmVCbG9ja3M6IG5ldyByLkFycmF5KFNpZ25hdHVyZUJsb2NrLCAndXNOdW1TaWdzJykKfSk7Cgp2YXIgR2FzcFJhbmdlID0gbmV3IHIuU3RydWN0KHsKICByYW5nZU1heFBQRU06IHIudWludDE2LCAvLyBVcHBlciBsaW1pdCBvZiByYW5nZSwgaW4gcHBlbQogIHJhbmdlR2FzcEJlaGF2aW9yOiBuZXcgci5CaXRmaWVsZChyLnVpbnQxNiwgWy8vIEZsYWdzIGRlc2NyaWJpbmcgZGVzaXJlZCByYXN0ZXJpemVyIGJlaGF2aW9yCiAgJ2dyYXlzY2FsZScsICdncmlkZml0JywgJ3N5bW1ldHJpY1Ntb290aGluZycsICdzeW1tZXRyaWNHcmlkZml0JyAvLyBvbmx5IGluIHZlcnNpb24gMSwgZm9yIENsZWFyVHlwZQogIF0pCn0pOwoKdmFyIGdhc3AgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIudWludDE2LCAvLyBzZXQgdG8gMAogIG51bVJhbmdlczogci51aW50MTYsCiAgZ2FzcFJhbmdlczogbmV3IHIuQXJyYXkoR2FzcFJhbmdlLCAnbnVtUmFuZ2VzJykgLy8gU29ydGVkIGJ5IHBwZW0KfSk7Cgp2YXIgRGV2aWNlUmVjb3JkID0gbmV3IHIuU3RydWN0KHsKICBwaXhlbFNpemU6IHIudWludDgsCiAgbWF4aW11bVdpZHRoOiByLnVpbnQ4LAogIHdpZHRoczogbmV3IHIuQXJyYXkoci51aW50OCwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0LnBhcmVudC5wYXJlbnQubWF4cC5udW1HbHlwaHM7CiAgfSkKfSk7CgovLyBUaGUgSG9yaXpvbnRhbCBEZXZpY2UgTWV0cmljcyB0YWJsZSBzdG9yZXMgaW50ZWdlciBhZHZhbmNlIHdpZHRocyBzY2FsZWQgdG8gcGFydGljdWxhciBwaXhlbCBzaXplcwp2YXIgaGRteCA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci51aW50MTYsCiAgbnVtUmVjb3Jkczogci5pbnQxNiwKICBzaXplRGV2aWNlUmVjb3JkOiByLmludDMyLAogIHJlY29yZHM6IG5ldyByLkFycmF5KERldmljZVJlY29yZCwgJ251bVJlY29yZHMnKQp9KTsKCnZhciBLZXJuUGFpciA9IG5ldyByLlN0cnVjdCh7CiAgbGVmdDogci51aW50MTYsCiAgcmlnaHQ6IHIudWludDE2LAogIHZhbHVlOiByLmludDE2Cn0pOwoKdmFyIENsYXNzVGFibGUgPSBuZXcgci5TdHJ1Y3QoewogIGZpcnN0R2x5cGg6IHIudWludDE2LAogIG5HbHlwaHM6IHIudWludDE2LAogIG9mZnNldHM6IG5ldyByLkFycmF5KHIudWludDE2LCAnbkdseXBocycpLAogIG1heDogZnVuY3Rpb24gbWF4KHQpIHsKICAgIHJldHVybiB0Lm9mZnNldHMubGVuZ3RoICYmIE1hdGgubWF4LmFwcGx5KE1hdGgsIHQub2Zmc2V0cyk7CiAgfQp9KTsKCnZhciBLZXJuMkFycmF5ID0gbmV3IHIuU3RydWN0KHsKICBvZmY6IGZ1bmN0aW9uIG9mZih0KSB7CiAgICByZXR1cm4gdC5fc3RhcnRPZmZzZXQgLSB0LnBhcmVudC5wYXJlbnQuX3N0YXJ0T2Zmc2V0OwogIH0sCiAgbGVuOiBmdW5jdGlvbiBsZW4odCkgewogICAgcmV0dXJuICgodC5wYXJlbnQubGVmdFRhYmxlLm1heCAtIHQub2ZmKSAvIHQucGFyZW50LnJvd1dpZHRoICsgMSkgKiAodC5wYXJlbnQucm93V2lkdGggLyAyKTsKICB9LAogIHZhbHVlczogbmV3IHIuTGF6eUFycmF5KHIuaW50MTYsICdsZW4nKQp9KTsKCnZhciBLZXJuU3VidGFibGUgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3QoJ2Zvcm1hdCcsIHsKICAwOiB7CiAgICBuUGFpcnM6IHIudWludDE2LAogICAgc2VhcmNoUmFuZ2U6IHIudWludDE2LAogICAgZW50cnlTZWxlY3Rvcjogci51aW50MTYsCiAgICByYW5nZVNoaWZ0OiByLnVpbnQxNiwKICAgIHBhaXJzOiBuZXcgci5BcnJheShLZXJuUGFpciwgJ25QYWlycycpCiAgfSwKCiAgMjogewogICAgcm93V2lkdGg6IHIudWludDE2LAogICAgbGVmdFRhYmxlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBDbGFzc1RhYmxlLCB7IHR5cGU6ICdwYXJlbnQnIH0pLAogICAgcmlnaHRUYWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgQ2xhc3NUYWJsZSwgeyB0eXBlOiAncGFyZW50JyB9KSwKICAgIGFycmF5OiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBLZXJuMkFycmF5LCB7IHR5cGU6ICdwYXJlbnQnIH0pCiAgfSwKCiAgMzogewogICAgZ2x5cGhDb3VudDogci51aW50MTYsCiAgICBrZXJuVmFsdWVDb3VudDogci51aW50OCwKICAgIGxlZnRDbGFzc0NvdW50OiByLnVpbnQ4LAogICAgcmlnaHRDbGFzc0NvdW50OiByLnVpbnQ4LAogICAgZmxhZ3M6IHIudWludDgsCiAgICBrZXJuVmFsdWU6IG5ldyByLkFycmF5KHIuaW50MTYsICdrZXJuVmFsdWVDb3VudCcpLAogICAgbGVmdENsYXNzOiBuZXcgci5BcnJheShyLnVpbnQ4LCAnZ2x5cGhDb3VudCcpLAogICAgcmlnaHRDbGFzczogbmV3IHIuQXJyYXkoci51aW50OCwgJ2dseXBoQ291bnQnKSwKICAgIGtlcm5JbmRleDogbmV3IHIuQXJyYXkoci51aW50OCwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQubGVmdENsYXNzQ291bnQgKiB0LnJpZ2h0Q2xhc3NDb3VudDsKICAgIH0pCiAgfQp9KTsKCnZhciBLZXJuVGFibGUgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3QoJ3ZlcnNpb24nLCB7CiAgMDogeyAvLyBNaWNyb3NvZnQgdXNlcyB0aGlzIGZvcm1hdAogICAgc3ViVmVyc2lvbjogci51aW50MTYsIC8vIE1pY3Jvc29mdCBoYXMgYW4gZXh0cmEgc3ViLXRhYmxlIHZlcnNpb24gbnVtYmVyCiAgICBsZW5ndGg6IHIudWludDE2LCAvLyBMZW5ndGggb2YgdGhlIHN1YnRhYmxlLCBpbiBieXRlcwogICAgZm9ybWF0OiByLnVpbnQ4LCAvLyBGb3JtYXQgb2Ygc3VidGFibGUKICAgIGNvdmVyYWdlOiBuZXcgci5CaXRmaWVsZChyLnVpbnQ4LCBbJ2hvcml6b250YWwnLCAvLyAxIGlmIHRhYmxlIGhhcyBob3Jpem9udGFsIGRhdGEsIDAgaWYgdmVydGljYWwKICAgICdtaW5pbXVtJywgLy8gSWYgc2V0IHRvIDEsIHRoZSB0YWJsZSBoYXMgbWluaW11bSB2YWx1ZXMuIElmIHNldCB0byAwLCB0aGUgdGFibGUgaGFzIGtlcm5pbmcgdmFsdWVzLgogICAgJ2Nyb3NzU3RyZWFtJywgLy8gSWYgc2V0IHRvIDEsIGtlcm5pbmcgaXMgcGVycGVuZGljdWxhciB0byB0aGUgZmxvdyBvZiB0aGUgdGV4dAogICAgJ292ZXJyaWRlJyAvLyBJZiBzZXQgdG8gMSB0aGUgdmFsdWUgaW4gdGhpcyB0YWJsZSByZXBsYWNlcyB0aGUgYWNjdW11bGF0ZWQgdmFsdWUKICAgIF0pLAogICAgc3VidGFibGU6IEtlcm5TdWJ0YWJsZSwKICAgIHBhZGRpbmc6IG5ldyByLlJlc2VydmVkKHIudWludDgsIGZ1bmN0aW9uICh0KSB7CiAgICAgIHJldHVybiB0Lmxlbmd0aCAtIHQuX2N1cnJlbnRPZmZzZXQ7CiAgICB9KQogIH0sCiAgMTogeyAvLyBBcHBsZSB1c2VzIHRoaXMgZm9ybWF0CiAgICBsZW5ndGg6IHIudWludDMyLAogICAgY292ZXJhZ2U6IG5ldyByLkJpdGZpZWxkKHIudWludDgsIFtudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAndmFyaWF0aW9uJywgLy8gU2V0IGlmIHRhYmxlIGhhcyB2YXJpYXRpb24ga2VybmluZyB2YWx1ZXMKICAgICdjcm9zc1N0cmVhbScsIC8vIFNldCBpZiB0YWJsZSBoYXMgY3Jvc3Mtc3RyZWFtIGtlcm5pbmcgdmFsdWVzCiAgICAndmVydGljYWwnIC8vIFNldCBpZiB0YWJsZSBoYXMgdmVydGljYWwga2VybmluZyB2YWx1ZXMKICAgIF0pLAogICAgZm9ybWF0OiByLnVpbnQ4LAogICAgdHVwbGVJbmRleDogci51aW50MTYsCiAgICBzdWJ0YWJsZTogS2VyblN1YnRhYmxlLAogICAgcGFkZGluZzogbmV3IHIuUmVzZXJ2ZWQoci51aW50OCwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQubGVuZ3RoIC0gdC5fY3VycmVudE9mZnNldDsKICAgIH0pCiAgfQp9KTsKCnZhciBrZXJuID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgMDogeyAvLyBNaWNyb3NvZnQgVmVyc2lvbgogICAgblRhYmxlczogci51aW50MTYsCiAgICB0YWJsZXM6IG5ldyByLkFycmF5KEtlcm5UYWJsZSwgJ25UYWJsZXMnKQogIH0sCgogIDE6IHsgLy8gQXBwbGUgVmVyc2lvbgogICAgcmVzZXJ2ZWQ6IG5ldyByLlJlc2VydmVkKHIudWludDE2KSwgLy8gdGhlIG90aGVyIGhhbGYgb2YgdGhlIHZlcnNpb24gbnVtYmVyCiAgICBuVGFibGVzOiByLnVpbnQzMiwKICAgIHRhYmxlczogbmV3IHIuQXJyYXkoS2VyblRhYmxlLCAnblRhYmxlcycpCiAgfQp9KTsKCi8vIExpbmVhciBUaHJlc2hvbGQgdGFibGUKLy8gUmVjb3JkcyB0aGUgcHBlbSBmb3IgZWFjaCBnbHlwaCBhdCB3aGljaCB0aGUgc2NhbGluZyBiZWNvbWVzIGxpbmVhciBhZ2FpbiwKLy8gZGVzcGl0ZSBpbnN0cnVjdGlvbnMgZWZmZWN0aW5nIHRoZSBhZHZhbmNlIHdpZHRoCnZhciBMVFNIID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLnVpbnQxNiwKICBudW1HbHlwaHM6IHIudWludDE2LAogIHlQZWxzOiBuZXcgci5BcnJheShyLnVpbnQ4LCAnbnVtR2x5cGhzJykKfSk7CgovLyBQQ0wgNSBUYWJsZQovLyBOT1RFOiBUaGUgUENMVCB0YWJsZSBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZCBmb3IgT3BlblR5cGUgZm9udHMgd2l0aCBUcnVlVHlwZSBvdXRsaW5lcwp2YXIgUENMVCA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci51aW50MTYsCiAgZm9udE51bWJlcjogci51aW50MzIsCiAgcGl0Y2g6IHIudWludDE2LAogIHhIZWlnaHQ6IHIudWludDE2LAogIHN0eWxlOiByLnVpbnQxNiwKICB0eXBlRmFtaWx5OiByLnVpbnQxNiwKICBjYXBIZWlnaHQ6IHIudWludDE2LAogIHN5bWJvbFNldDogci51aW50MTYsCiAgdHlwZWZhY2U6IG5ldyByLlN0cmluZygxNiksCiAgY2hhcmFjdGVyQ29tcGxlbWVudDogbmV3IHIuU3RyaW5nKDgpLAogIGZpbGVOYW1lOiBuZXcgci5TdHJpbmcoNiksCiAgc3Ryb2tlV2VpZ2h0OiBuZXcgci5TdHJpbmcoMSksCiAgd2lkdGhUeXBlOiBuZXcgci5TdHJpbmcoMSksCiAgc2VyaWZTdHlsZTogci51aW50OCwKICByZXNlcnZlZDogbmV3IHIuUmVzZXJ2ZWQoci51aW50OCkKfSk7CgovLyBWRE1YIHRhYmxlcyBjb250YWluIGFzY2VuZGVyL2Rlc2NlbmRlciBvdmVycmlkZXMgZm9yIGNlcnRhaW4gKHVzdWFsbHkgc21hbGwpCi8vIHNpemVzLiBUaGlzIGlzIG5lZWRlZCBpbiBvcmRlciB0byBtYXRjaCBmb250IG1ldHJpY3Mgb24gV2luZG93cy4KCnZhciBSYXRpbyA9IG5ldyByLlN0cnVjdCh7CiAgYkNoYXJTZXQ6IHIudWludDgsIC8vIENoYXJhY3RlciBzZXQKICB4UmF0aW86IHIudWludDgsIC8vIFZhbHVlIHRvIHVzZSBmb3IgeC1SYXRpbwogIHlTdGFydFJhdGlvOiByLnVpbnQ4LCAvLyBTdGFydGluZyB5LVJhdGlvIHZhbHVlCiAgeUVuZFJhdGlvOiByLnVpbnQ4IC8vIEVuZGluZyB5LVJhdGlvIHZhbHVlCn0pOwoKdmFyIHZUYWJsZSA9IG5ldyByLlN0cnVjdCh7CiAgeVBlbEhlaWdodDogci51aW50MTYsIC8vIHlQZWxIZWlnaHQgdG8gd2hpY2ggdmFsdWVzIGFwcGx5CiAgeU1heDogci5pbnQxNiwgLy8gTWF4aW11bSB2YWx1ZSAoaW4gcGVscykgZm9yIHRoaXMgeVBlbEhlaWdodAogIHlNaW46IHIuaW50MTYgLy8gTWluaW11bSB2YWx1ZSAoaW4gcGVscykgZm9yIHRoaXMgeVBlbEhlaWdodAp9KTsKCnZhciBWZG14R3JvdXAgPSBuZXcgci5TdHJ1Y3QoewogIHJlY3M6IHIudWludDE2LCAvLyBOdW1iZXIgb2YgaGVpZ2h0IHJlY29yZHMgaW4gdGhpcyBncm91cAogIHN0YXJ0c3o6IHIudWludDgsIC8vIFN0YXJ0aW5nIHlQZWxIZWlnaHQKICBlbmRzejogci51aW50OCwgLy8gRW5kaW5nIHlQZWxIZWlnaHQKICBlbnRyaWVzOiBuZXcgci5BcnJheSh2VGFibGUsICdyZWNzJykgLy8gVGhlIFZETVggcmVjb3Jkcwp9KTsKCnZhciBWRE1YID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLnVpbnQxNiwgLy8gVmVyc2lvbiBudW1iZXIgKDAgb3IgMSkKICBudW1SZWNzOiByLnVpbnQxNiwgLy8gTnVtYmVyIG9mIFZETVggZ3JvdXBzIHByZXNlbnQKICBudW1SYXRpb3M6IHIudWludDE2LCAvLyBOdW1iZXIgb2YgYXNwZWN0IHJhdGlvIGdyb3VwaW5ncwogIHJhdGlvUmFuZ2VzOiBuZXcgci5BcnJheShSYXRpbywgJ251bVJhdGlvcycpLCAvLyBSYXRpbyByYW5nZXMKICBvZmZzZXRzOiBuZXcgci5BcnJheShyLnVpbnQxNiwgJ251bVJhdGlvcycpLCAvLyBPZmZzZXQgdG8gdGhlIFZETVggZ3JvdXAgZm9yIHRoaXMgcmF0aW8gcmFuZ2UKICBncm91cHM6IG5ldyByLkFycmF5KFZkbXhHcm91cCwgJ251bVJlY3MnKSAvLyBUaGUgYWN0dWFsIFZETVggZ3JvdXBpbmdzCn0pOwoKLy8gVmVydGljYWwgSGVhZGVyIFRhYmxlCnZhciB2aGVhID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLnVpbnQxNiwgLy8gVmVyc2lvbiBudW1iZXIgb2YgdGhlIFZlcnRpY2FsIEhlYWRlciBUYWJsZQogIGFzY2VudDogci5pbnQxNiwgLy8gVGhlIHZlcnRpY2FsIHR5cG9ncmFwaGljIGFzY2VuZGVyIGZvciB0aGlzIGZvbnQKICBkZXNjZW50OiByLmludDE2LCAvLyBUaGUgdmVydGljYWwgdHlwb2dyYXBoaWMgZGVzY2VuZGVyIGZvciB0aGlzIGZvbnQKICBsaW5lR2FwOiByLmludDE2LCAvLyBUaGUgdmVydGljYWwgdHlwb2dyYXBoaWMgbGluZSBnYXAgZm9yIHRoaXMgZm9udAogIGFkdmFuY2VIZWlnaHRNYXg6IHIuaW50MTYsIC8vIFRoZSBtYXhpbXVtIGFkdmFuY2UgaGVpZ2h0IG1lYXN1cmVtZW50IGZvdW5kIGluIHRoZSBmb250CiAgbWluVG9wU2lkZUJlYXJpbmc6IHIuaW50MTYsIC8vIFRoZSBtaW5pbXVtIHRvcCBzaWRlIGJlYXJpbmcgbWVhc3VyZW1lbnQgZm91bmQgaW4gdGhlIGZvbnQKICBtaW5Cb3R0b21TaWRlQmVhcmluZzogci5pbnQxNiwgLy8gVGhlIG1pbmltdW0gYm90dG9tIHNpZGUgYmVhcmluZyBtZWFzdXJlbWVudCBmb3VuZCBpbiB0aGUgZm9udAogIHlNYXhFeHRlbnQ6IHIuaW50MTYsCiAgY2FyZXRTbG9wZVJpc2U6IHIuaW50MTYsIC8vIENhcmV0IHNsb3BlIChyaXNlL3J1bikKICBjYXJldFNsb3BlUnVuOiByLmludDE2LAogIGNhcmV0T2Zmc2V0OiByLmludDE2LCAvLyBTZXQgdmFsdWUgZXF1YWwgdG8gMCBmb3Igbm9uc2xhbnRlZCBmb250cwogIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLmludDE2LCA0KSwKICBtZXRyaWNEYXRhRm9ybWF0OiByLmludDE2LCAvLyBTZXQgdG8gMAogIG51bWJlck9mTWV0cmljczogci51aW50MTYgLy8gTnVtYmVyIG9mIGFkdmFuY2UgaGVpZ2h0cyBpbiB0aGUgVmVydGljYWwgTWV0cmljcyB0YWJsZQp9KTsKCnZhciBWbXR4RW50cnkgPSBuZXcgci5TdHJ1Y3QoewogIGFkdmFuY2U6IHIudWludDE2LCAvLyBUaGUgYWR2YW5jZSBoZWlnaHQgb2YgdGhlIGdseXBoCiAgYmVhcmluZzogci5pbnQxNiAvLyBUaGUgdG9wIHNpZGViZWFyaW5nIG9mIHRoZSBnbHlwaAp9KTsKCi8vIFZlcnRpY2FsIE1ldHJpY3MgVGFibGUKdmFyIHZtdHggPSBuZXcgci5TdHJ1Y3QoewogIG1ldHJpY3M6IG5ldyByLkxhenlBcnJheShWbXR4RW50cnksIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5wYXJlbnQudmhlYS5udW1iZXJPZk1ldHJpY3M7CiAgfSksCiAgYmVhcmluZ3M6IG5ldyByLkxhenlBcnJheShyLmludDE2LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQucGFyZW50Lm1heHAubnVtR2x5cGhzIC0gdC5wYXJlbnQudmhlYS5udW1iZXJPZk1ldHJpY3M7CiAgfSkKfSk7Cgp2YXIgc2hvcnRGcmFjID0gbmV3IHIuRml4ZWQoMTYsICdCRScsIDE0KTsKCnZhciBDb3JyZXNwb25kZW5jZSA9IG5ldyByLlN0cnVjdCh7CiAgZnJvbUNvb3JkOiBzaG9ydEZyYWMsCiAgdG9Db29yZDogc2hvcnRGcmFjCn0pOwoKdmFyIFNlZ21lbnQgPSBuZXcgci5TdHJ1Y3QoewogIHBhaXJDb3VudDogci51aW50MTYsCiAgY29ycmVzcG9uZGVuY2U6IG5ldyByLkFycmF5KENvcnJlc3BvbmRlbmNlLCAncGFpckNvdW50JykKfSk7Cgp2YXIgYXZhciA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci5maXhlZDMyLAogIGF4aXNDb3VudDogci51aW50MzIsCiAgc2VnbWVudDogbmV3IHIuQXJyYXkoU2VnbWVudCwgJ2F4aXNDb3VudCcpCn0pOwoKdmFyIFVuYm91bmRlZEFycmF5QWNjZXNzb3IgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gVW5ib3VuZGVkQXJyYXlBY2Nlc3Nvcih0eXBlLCBzdHJlYW0sIHBhcmVudCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFVuYm91bmRlZEFycmF5QWNjZXNzb3IpOwoKICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTsKICAgIHRoaXMucGFyZW50ID0gcGFyZW50OwogICAgdGhpcy5iYXNlID0gdGhpcy5zdHJlYW0ucG9zOwogICAgdGhpcy5faXRlbXMgPSBbXTsKICB9CgogIFVuYm91bmRlZEFycmF5QWNjZXNzb3IucHJvdG90eXBlLmdldEl0ZW0gPSBmdW5jdGlvbiBnZXRJdGVtKGluZGV4KSB7CiAgICBpZiAodGhpcy5faXRlbXNbaW5kZXhdID09IG51bGwpIHsKICAgICAgdmFyIHBvcyA9IHRoaXMuc3RyZWFtLnBvczsKICAgICAgdGhpcy5zdHJlYW0ucG9zID0gdGhpcy5iYXNlICsgdGhpcy50eXBlLnNpemUobnVsbCwgdGhpcy5wYXJlbnQpICogaW5kZXg7CiAgICAgIHRoaXMuX2l0ZW1zW2luZGV4XSA9IHRoaXMudHlwZS5kZWNvZGUodGhpcy5zdHJlYW0sIHRoaXMucGFyZW50KTsKICAgICAgdGhpcy5zdHJlYW0ucG9zID0gcG9zOwogICAgfQoKICAgIHJldHVybiB0aGlzLl9pdGVtc1tpbmRleF07CiAgfTsKCiAgVW5ib3VuZGVkQXJyYXlBY2Nlc3Nvci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7CiAgICByZXR1cm4gJ1tVbmJvdW5kZWRBcnJheSAnICsgdGhpcy50eXBlLmNvbnN0cnVjdG9yLm5hbWUgKyAnXSc7CiAgfTsKCiAgcmV0dXJuIFVuYm91bmRlZEFycmF5QWNjZXNzb3I7Cn0oKTsKCnZhciBVbmJvdW5kZWRBcnJheSA9IGZ1bmN0aW9uIChfciRBcnJheSkgewogIF9pbmhlcml0cyhVbmJvdW5kZWRBcnJheSwgX3IkQXJyYXkpOwoKICBmdW5jdGlvbiBVbmJvdW5kZWRBcnJheSh0eXBlKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVW5ib3VuZGVkQXJyYXkpOwoKICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfciRBcnJheS5jYWxsKHRoaXMsIHR5cGUsIDApKTsKICB9CgogIFVuYm91bmRlZEFycmF5LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoc3RyZWFtLCBwYXJlbnQpIHsKICAgIHJldHVybiBuZXcgVW5ib3VuZGVkQXJyYXlBY2Nlc3Nvcih0aGlzLnR5cGUsIHN0cmVhbSwgcGFyZW50KTsKICB9OwoKICByZXR1cm4gVW5ib3VuZGVkQXJyYXk7Cn0oci5BcnJheSk7Cgp2YXIgTG9va3VwVGFibGUgPSBmdW5jdGlvbiBMb29rdXBUYWJsZSgpIHsKICB2YXIgVmFsdWVUeXBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiByLnVpbnQxNjsKCiAgLy8gSGVscGVyIGNsYXNzIHRoYXQgbWFrZXMgaW50ZXJuYWwgc3RydWN0dXJlcyBpbnZpc2libGUgdG8gcG9pbnRlcnMKICB2YXIgU2hhZG93ID0gZnVuY3Rpb24gKCkgewogICAgZnVuY3Rpb24gU2hhZG93KHR5cGUpIHsKICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNoYWRvdyk7CgogICAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgfQoKICAgIFNoYWRvdy5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKHN0cmVhbSwgY3R4KSB7CiAgICAgIGN0eCA9IGN0eC5wYXJlbnQucGFyZW50OwogICAgICByZXR1cm4gdGhpcy50eXBlLmRlY29kZShzdHJlYW0sIGN0eCk7CiAgICB9OwoKICAgIFNoYWRvdy5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uIHNpemUodmFsLCBjdHgpIHsKICAgICAgY3R4ID0gY3R4LnBhcmVudC5wYXJlbnQ7CiAgICAgIHJldHVybiB0aGlzLnR5cGUuc2l6ZSh2YWwsIGN0eCk7CiAgICB9OwoKICAgIFNoYWRvdy5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKHN0cmVhbSwgdmFsLCBjdHgpIHsKICAgICAgY3R4ID0gY3R4LnBhcmVudC5wYXJlbnQ7CiAgICAgIHJldHVybiB0aGlzLnR5cGUuZW5jb2RlKHN0cmVhbSwgdmFsLCBjdHgpOwogICAgfTsKCiAgICByZXR1cm4gU2hhZG93OwogIH0oKTsKCiAgVmFsdWVUeXBlID0gbmV3IFNoYWRvdyhWYWx1ZVR5cGUpOwoKICB2YXIgQmluYXJ5U2VhcmNoSGVhZGVyID0gbmV3IHIuU3RydWN0KHsKICAgIHVuaXRTaXplOiByLnVpbnQxNiwKICAgIG5Vbml0czogci51aW50MTYsCiAgICBzZWFyY2hSYW5nZTogci51aW50MTYsCiAgICBlbnRyeVNlbGVjdG9yOiByLnVpbnQxNiwKICAgIHJhbmdlU2hpZnQ6IHIudWludDE2CiAgfSk7CgogIHZhciBMb29rdXBTZWdtZW50U2luZ2xlID0gbmV3IHIuU3RydWN0KHsKICAgIGxhc3RHbHlwaDogci51aW50MTYsCiAgICBmaXJzdEdseXBoOiByLnVpbnQxNiwKICAgIHZhbHVlOiBWYWx1ZVR5cGUKICB9KTsKCiAgdmFyIExvb2t1cFNlZ21lbnRBcnJheSA9IG5ldyByLlN0cnVjdCh7CiAgICBsYXN0R2x5cGg6IHIudWludDE2LAogICAgZmlyc3RHbHlwaDogci51aW50MTYsCiAgICB2YWx1ZXM6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIG5ldyByLkFycmF5KFZhbHVlVHlwZSwgZnVuY3Rpb24gKHQpIHsKICAgICAgcmV0dXJuIHQubGFzdEdseXBoIC0gdC5maXJzdEdseXBoICsgMTsKICAgIH0pLCB7IHR5cGU6ICdwYXJlbnQnIH0pCiAgfSk7CgogIHZhciBMb29rdXBTaW5nbGUgPSBuZXcgci5TdHJ1Y3QoewogICAgZ2x5cGg6IHIudWludDE2LAogICAgdmFsdWU6IFZhbHVlVHlwZQogIH0pOwoKICByZXR1cm4gbmV3IHIuVmVyc2lvbmVkU3RydWN0KHIudWludDE2LCB7CiAgICAwOiB7CiAgICAgIHZhbHVlczogbmV3IFVuYm91bmRlZEFycmF5KFZhbHVlVHlwZSkgLy8gbGVuZ3RoID09IG51bWJlciBvZiBnbHlwaHMgbWF5YmU/CiAgICB9LAogICAgMjogewogICAgICBiaW5hcnlTZWFyY2hIZWFkZXI6IEJpbmFyeVNlYXJjaEhlYWRlciwKICAgICAgc2VnbWVudHM6IG5ldyByLkFycmF5KExvb2t1cFNlZ21lbnRTaW5nbGUsIGZ1bmN0aW9uICh0KSB7CiAgICAgICAgcmV0dXJuIHQuYmluYXJ5U2VhcmNoSGVhZGVyLm5Vbml0czsKICAgICAgfSkKICAgIH0sCiAgICA0OiB7CiAgICAgIGJpbmFyeVNlYXJjaEhlYWRlcjogQmluYXJ5U2VhcmNoSGVhZGVyLAogICAgICBzZWdtZW50czogbmV3IHIuQXJyYXkoTG9va3VwU2VnbWVudEFycmF5LCBmdW5jdGlvbiAodCkgewogICAgICAgIHJldHVybiB0LmJpbmFyeVNlYXJjaEhlYWRlci5uVW5pdHM7CiAgICAgIH0pCiAgICB9LAogICAgNjogewogICAgICBiaW5hcnlTZWFyY2hIZWFkZXI6IEJpbmFyeVNlYXJjaEhlYWRlciwKICAgICAgc2VnbWVudHM6IG5ldyByLkFycmF5KExvb2t1cFNpbmdsZSwgZnVuY3Rpb24gKHQpIHsKICAgICAgICByZXR1cm4gdC5iaW5hcnlTZWFyY2hIZWFkZXIublVuaXRzOwogICAgICB9KQogICAgfSwKICAgIDg6IHsKICAgICAgZmlyc3RHbHlwaDogci51aW50MTYsCiAgICAgIGNvdW50OiByLnVpbnQxNiwKICAgICAgdmFsdWVzOiBuZXcgci5BcnJheShWYWx1ZVR5cGUsICdjb3VudCcpCiAgICB9CiAgfSk7Cn07CgpmdW5jdGlvbiBTdGF0ZVRhYmxlKCkgewogIHZhciBlbnRyeURhdGEgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9OwogIHZhciBsb29rdXBUeXBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiByLnVpbnQxNjsKCiAgdmFyIGVudHJ5ID0gX09iamVjdCRhc3NpZ24oewogICAgbmV3U3RhdGU6IHIudWludDE2LAogICAgZmxhZ3M6IHIudWludDE2CiAgfSwgZW50cnlEYXRhKTsKCiAgdmFyIEVudHJ5ID0gbmV3IHIuU3RydWN0KGVudHJ5KTsKICB2YXIgU3RhdGVBcnJheSA9IG5ldyBVbmJvdW5kZWRBcnJheShuZXcgci5BcnJheShyLnVpbnQxNiwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0Lm5DbGFzc2VzOwogIH0pKTsKCiAgdmFyIFN0YXRlSGVhZGVyID0gbmV3IHIuU3RydWN0KHsKICAgIG5DbGFzc2VzOiByLnVpbnQzMiwKICAgIGNsYXNzVGFibGU6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyBMb29rdXBUYWJsZShsb29rdXBUeXBlKSksCiAgICBzdGF0ZUFycmF5OiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBTdGF0ZUFycmF5KSwKICAgIGVudHJ5VGFibGU6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyBVbmJvdW5kZWRBcnJheShFbnRyeSkpCiAgfSk7CgogIHJldHVybiBTdGF0ZUhlYWRlcjsKfQoKLy8gVGhpcyBpcyB0aGUgb2xkIHZlcnNpb24gb2YgdGhlIFN0YXRlVGFibGUgc3RydWN0dXJlCmZ1bmN0aW9uIFN0YXRlVGFibGUxKCkgewogIHZhciBlbnRyeURhdGEgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9OwogIHZhciBsb29rdXBUeXBlID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiByLnVpbnQxNjsKCiAgdmFyIENsYXNzTG9va3VwVGFibGUgPSBuZXcgci5TdHJ1Y3QoewogICAgdmVyc2lvbjogZnVuY3Rpb24gdmVyc2lvbigpIHsKICAgICAgcmV0dXJuIDg7CiAgICB9LAogICAgLy8gc2ltdWxhdGUgTG9va3VwVGFibGUKICAgIGZpcnN0R2x5cGg6IHIudWludDE2LAogICAgdmFsdWVzOiBuZXcgci5BcnJheShyLnVpbnQ4LCByLnVpbnQxNikKICB9KTsKCiAgdmFyIGVudHJ5ID0gX09iamVjdCRhc3NpZ24oewogICAgbmV3U3RhdGVPZmZzZXQ6IHIudWludDE2LAogICAgLy8gY29udmVydCBvZmZzZXQgdG8gc3RhdGVBcnJheSBpbmRleAogICAgbmV3U3RhdGU6IGZ1bmN0aW9uIG5ld1N0YXRlKHQpIHsKICAgICAgcmV0dXJuICh0Lm5ld1N0YXRlT2Zmc2V0IC0gKHQucGFyZW50LnN0YXRlQXJyYXkuYmFzZSAtIHQucGFyZW50Ll9zdGFydE9mZnNldCkpIC8gdC5wYXJlbnQubkNsYXNzZXM7CiAgICB9LAogICAgZmxhZ3M6IHIudWludDE2CiAgfSwgZW50cnlEYXRhKTsKCiAgdmFyIEVudHJ5ID0gbmV3IHIuU3RydWN0KGVudHJ5KTsKICB2YXIgU3RhdGVBcnJheSA9IG5ldyBVbmJvdW5kZWRBcnJheShuZXcgci5BcnJheShyLnVpbnQ4LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQubkNsYXNzZXM7CiAgfSkpOwoKICB2YXIgU3RhdGVIZWFkZXIxID0gbmV3IHIuU3RydWN0KHsKICAgIG5DbGFzc2VzOiByLnVpbnQxNiwKICAgIGNsYXNzVGFibGU6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzTG9va3VwVGFibGUpLAogICAgc3RhdGVBcnJheTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgU3RhdGVBcnJheSksCiAgICBlbnRyeVRhYmxlOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBuZXcgVW5ib3VuZGVkQXJyYXkoRW50cnkpKQogIH0pOwoKICByZXR1cm4gU3RhdGVIZWFkZXIxOwp9Cgp2YXIgQnNsblN1YnRhYmxlID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KCdmb3JtYXQnLCB7CiAgMDogeyAvLyBEaXN0YW5jZS1iYXNlZCwgbm8gbWFwcGluZwogICAgZGVsdGFzOiBuZXcgci5BcnJheShyLmludDE2LCAzMikKICB9LAoKICAxOiB7IC8vIERpc3RhbmNlLWJhc2VkLCB3aXRoIG1hcHBpbmcKICAgIGRlbHRhczogbmV3IHIuQXJyYXkoci5pbnQxNiwgMzIpLAogICAgbWFwcGluZ0RhdGE6IG5ldyBMb29rdXBUYWJsZShyLnVpbnQxNikKICB9LAoKICAyOiB7IC8vIENvbnRyb2wgcG9pbnQtYmFzZWQsIG5vIG1hcHBpbmcKICAgIHN0YW5kYXJkR2x5cGg6IHIudWludDE2LAogICAgY29udHJvbFBvaW50czogbmV3IHIuQXJyYXkoci51aW50MTYsIDMyKQogIH0sCgogIDM6IHsgLy8gQ29udHJvbCBwb2ludC1iYXNlZCwgd2l0aCBtYXBwaW5nCiAgICBzdGFuZGFyZEdseXBoOiByLnVpbnQxNiwKICAgIGNvbnRyb2xQb2ludHM6IG5ldyByLkFycmF5KHIudWludDE2LCAzMiksCiAgICBtYXBwaW5nRGF0YTogbmV3IExvb2t1cFRhYmxlKHIudWludDE2KQogIH0KfSk7Cgp2YXIgYnNsbiA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci5maXhlZDMyLAogIGZvcm1hdDogci51aW50MTYsCiAgZGVmYXVsdEJhc2VsaW5lOiByLnVpbnQxNiwKICBzdWJ0YWJsZTogQnNsblN1YnRhYmxlCn0pOwoKdmFyIFNldHRpbmcgPSBuZXcgci5TdHJ1Y3QoewogIHNldHRpbmc6IHIudWludDE2LAogIG5hbWVJbmRleDogci5pbnQxNiwKICBuYW1lOiBmdW5jdGlvbiBuYW1lKHQpIHsKICAgIHJldHVybiB0LnBhcmVudC5wYXJlbnQucGFyZW50Lm5hbWUucmVjb3Jkcy5mb250RmVhdHVyZXNbdC5uYW1lSW5kZXhdOwogIH0KfSk7Cgp2YXIgRmVhdHVyZU5hbWUgPSBuZXcgci5TdHJ1Y3QoewogIGZlYXR1cmU6IHIudWludDE2LAogIG5TZXR0aW5nczogci51aW50MTYsCiAgc2V0dGluZ1RhYmxlOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBuZXcgci5BcnJheShTZXR0aW5nLCAnblNldHRpbmdzJyksIHsgdHlwZTogJ3BhcmVudCcgfSksCiAgZmVhdHVyZUZsYWdzOiBuZXcgci5CaXRmaWVsZChyLnVpbnQ4LCBbbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgJ2hhc0RlZmF1bHQnLCAnZXhjbHVzaXZlJ10pLAogIGRlZmF1bHRTZXR0aW5nOiByLnVpbnQ4LAogIG5hbWVJbmRleDogci5pbnQxNiwKICBuYW1lOiBmdW5jdGlvbiBuYW1lKHQpIHsKICAgIHJldHVybiB0LnBhcmVudC5wYXJlbnQubmFtZS5yZWNvcmRzLmZvbnRGZWF0dXJlc1t0Lm5hbWVJbmRleF07CiAgfQp9KTsKCnZhciBmZWF0ID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLmZpeGVkMzIsCiAgZmVhdHVyZU5hbWVDb3VudDogci51aW50MTYsCiAgcmVzZXJ2ZWQxOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksCiAgcmVzZXJ2ZWQyOiBuZXcgci5SZXNlcnZlZChyLnVpbnQzMiksCiAgZmVhdHVyZU5hbWVzOiBuZXcgci5BcnJheShGZWF0dXJlTmFtZSwgJ2ZlYXR1cmVOYW1lQ291bnQnKQp9KTsKCnZhciBBeGlzJDEgPSBuZXcgci5TdHJ1Y3QoewogIGF4aXNUYWc6IG5ldyByLlN0cmluZyg0KSwKICBtaW5WYWx1ZTogci5maXhlZDMyLAogIGRlZmF1bHRWYWx1ZTogci5maXhlZDMyLAogIG1heFZhbHVlOiByLmZpeGVkMzIsCiAgZmxhZ3M6IHIudWludDE2LAogIG5hbWVJRDogci51aW50MTYsCiAgbmFtZTogZnVuY3Rpb24gbmFtZSh0KSB7CiAgICByZXR1cm4gdC5wYXJlbnQucGFyZW50Lm5hbWUucmVjb3Jkcy5mb250RmVhdHVyZXNbdC5uYW1lSURdOwogIH0KfSk7Cgp2YXIgSW5zdGFuY2UgPSBuZXcgci5TdHJ1Y3QoewogIG5hbWVJRDogci51aW50MTYsCiAgbmFtZTogZnVuY3Rpb24gbmFtZSh0KSB7CiAgICByZXR1cm4gdC5wYXJlbnQucGFyZW50Lm5hbWUucmVjb3Jkcy5mb250RmVhdHVyZXNbdC5uYW1lSURdOwogIH0sCiAgZmxhZ3M6IHIudWludDE2LAogIGNvb3JkOiBuZXcgci5BcnJheShyLmZpeGVkMzIsIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5wYXJlbnQuYXhpc0NvdW50OwogIH0pLAogIHBvc3RzY3JpcHROYW1lSUQ6IG5ldyByLk9wdGlvbmFsKHIudWludDE2LCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQucGFyZW50Lmluc3RhbmNlU2l6ZSAtIHQuX2N1cnJlbnRPZmZzZXQgPiAwOwogIH0pCn0pOwoKdmFyIGZ2YXIgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIuZml4ZWQzMiwKICBvZmZzZXRUb0RhdGE6IHIudWludDE2LAogIGNvdW50U2l6ZVBhaXJzOiByLnVpbnQxNiwKICBheGlzQ291bnQ6IHIudWludDE2LAogIGF4aXNTaXplOiByLnVpbnQxNiwKICBpbnN0YW5jZUNvdW50OiByLnVpbnQxNiwKICBpbnN0YW5jZVNpemU6IHIudWludDE2LAogIGF4aXM6IG5ldyByLkFycmF5KEF4aXMkMSwgJ2F4aXNDb3VudCcpLAogIGluc3RhbmNlOiBuZXcgci5BcnJheShJbnN0YW5jZSwgJ2luc3RhbmNlQ291bnQnKQp9KTsKCnZhciBzaG9ydEZyYWMkMSA9IG5ldyByLkZpeGVkKDE2LCAnQkUnLCAxNCk7Cgp2YXIgT2Zmc2V0ID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIE9mZnNldCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBPZmZzZXQpOwogIH0KCiAgT2Zmc2V0LmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0sIHBhcmVudCkgewogICAgLy8gSW4gc2hvcnQgZm9ybWF0LCBvZmZzZXRzIGFyZSBtdWx0aXBsaWVkIGJ5IDIuCiAgICAvLyBUaGlzIGRvZXNuJ3Qgc2VlbSB0byBiZSBkb2N1bWVudGVkIGJ5IEFwcGxlLCBidXQgaXQKICAgIC8vIGlzIGltcGxlbWVudGVkIHRoaXMgd2F5IGluIEZyZWV0eXBlLgogICAgcmV0dXJuIHBhcmVudC5mbGFncyA/IHN0cmVhbS5yZWFkVUludDMyQkUoKSA6IHN0cmVhbS5yZWFkVUludDE2QkUoKSAqIDI7CiAgfTsKCiAgcmV0dXJuIE9mZnNldDsKfSgpOwoKdmFyIGd2YXIgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIudWludDE2LAogIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksCiAgYXhpc0NvdW50OiByLnVpbnQxNiwKICBnbG9iYWxDb29yZENvdW50OiByLnVpbnQxNiwKICBnbG9iYWxDb29yZHM6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyByLkFycmF5KG5ldyByLkFycmF5KHNob3J0RnJhYyQxLCAnYXhpc0NvdW50JyksICdnbG9iYWxDb29yZENvdW50JykpLAogIGdseXBoQ291bnQ6IHIudWludDE2LAogIGZsYWdzOiByLnVpbnQxNiwKICBvZmZzZXRUb0RhdGE6IHIudWludDMyLAogIG9mZnNldHM6IG5ldyByLkFycmF5KG5ldyByLlBvaW50ZXIoT2Zmc2V0LCAndm9pZCcsIHsgcmVsYXRpdmVUbzogJ29mZnNldFRvRGF0YScsIGFsbG93TnVsbDogZmFsc2UgfSksIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5nbHlwaENvdW50ICsgMTsKICB9KQp9KTsKCnZhciBDbGFzc1RhYmxlJDEgPSBuZXcgci5TdHJ1Y3QoewogIGxlbmd0aDogci51aW50MTYsCiAgY292ZXJhZ2U6IHIudWludDE2LAogIHN1YkZlYXR1cmVGbGFnczogci51aW50MzIsCiAgc3RhdGVUYWJsZTogbmV3IFN0YXRlVGFibGUxKCkKfSk7Cgp2YXIgV2lkdGhEZWx0YVJlY29yZCA9IG5ldyByLlN0cnVjdCh7CiAganVzdENsYXNzOiByLnVpbnQzMiwKICBiZWZvcmVHcm93TGltaXQ6IHIuZml4ZWQzMiwKICBiZWZvcmVTaHJpbmtMaW1pdDogci5maXhlZDMyLAogIGFmdGVyR3Jvd0xpbWl0OiByLmZpeGVkMzIsCiAgYWZ0ZXJTaHJpbmtMaW1pdDogci5maXhlZDMyLAogIGdyb3dGbGFnczogci51aW50MTYsCiAgc2hyaW5rRmxhZ3M6IHIudWludDE2Cn0pOwoKdmFyIFdpZHRoRGVsdGFDbHVzdGVyID0gbmV3IHIuQXJyYXkoV2lkdGhEZWx0YVJlY29yZCwgci51aW50MzIpOwoKdmFyIEFjdGlvbkRhdGEgPSBuZXcgci5WZXJzaW9uZWRTdHJ1Y3QoJ2FjdGlvblR5cGUnLCB7CiAgMDogeyAvLyBEZWNvbXBvc2l0aW9uIGFjdGlvbgogICAgbG93ZXJMaW1pdDogci5maXhlZDMyLAogICAgdXBwZXJMaW1pdDogci5maXhlZDMyLAogICAgb3JkZXI6IHIudWludDE2LAogICAgZ2x5cGhzOiBuZXcgci5BcnJheShyLnVpbnQxNiwgci51aW50MTYpCiAgfSwKCiAgMTogeyAvLyBVbmNvbmRpdGlvbmFsIGFkZCBnbHlwaCBhY3Rpb24KICAgIGFkZEdseXBoOiByLnVpbnQxNgogIH0sCgogIDI6IHsgLy8gQ29uZGl0aW9uYWwgYWRkIGdseXBoIGFjdGlvbgogICAgc3Vic3RUaHJlc2hvbGQ6IHIuZml4ZWQzMiwKICAgIGFkZEdseXBoOiByLnVpbnQxNiwKICAgIHN1YnN0R2x5cGg6IHIudWludDE2CiAgfSwKCiAgMzoge30sIC8vIFN0cmV0Y2ggZ2x5cGggYWN0aW9uIChubyBkYXRhLCBub3Qgc3VwcG9ydGVkIGJ5IENvcmVUZXh0KQoKICA0OiB7IC8vIER1Y3RpbGUgZ2x5cGggYWN0aW9uIChub3Qgc3VwcG9ydGVkIGJ5IENvcmVUZXh0KQogICAgdmFyaWF0aW9uQXhpczogci51aW50MzIsCiAgICBtaW5pbXVtTGltaXQ6IHIuZml4ZWQzMiwKICAgIG5vU3RyZXRjaFZhbHVlOiByLmZpeGVkMzIsCiAgICBtYXhpbXVtTGltaXQ6IHIuZml4ZWQzMgogIH0sCgogIDU6IHsgLy8gUmVwZWF0ZWQgYWRkIGdseXBoIGFjdGlvbgogICAgZmxhZ3M6IHIudWludDE2LAogICAgZ2x5cGg6IHIudWludDE2CiAgfQp9KTsKCnZhciBBY3Rpb24gPSBuZXcgci5TdHJ1Y3QoewogIGFjdGlvbkNsYXNzOiByLnVpbnQxNiwKICBhY3Rpb25UeXBlOiByLnVpbnQxNiwKICBhY3Rpb25MZW5ndGg6IHIudWludDMyLAogIGFjdGlvbkRhdGE6IEFjdGlvbkRhdGEsCiAgcGFkZGluZzogbmV3IHIuUmVzZXJ2ZWQoci51aW50OCwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0LmFjdGlvbkxlbmd0aCAtIHQuX2N1cnJlbnRPZmZzZXQ7CiAgfSkKfSk7Cgp2YXIgUG9zdGNvbXBlbnNhdGlvbkFjdGlvbiA9IG5ldyByLkFycmF5KEFjdGlvbiwgci51aW50MzIpOwp2YXIgUG9zdENvbXBlbnNhdGlvblRhYmxlID0gbmV3IHIuU3RydWN0KHsKICBsb29rdXBUYWJsZTogbmV3IExvb2t1cFRhYmxlKG5ldyByLlBvaW50ZXIoci51aW50MTYsIFBvc3Rjb21wZW5zYXRpb25BY3Rpb24pKQp9KTsKCnZhciBKdXN0aWZpY2F0aW9uVGFibGUgPSBuZXcgci5TdHJ1Y3QoewogIGNsYXNzVGFibGU6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIENsYXNzVGFibGUkMSwgeyB0eXBlOiAncGFyZW50JyB9KSwKICB3ZGNPZmZzZXQ6IHIudWludDE2LAogIHBvc3RDb21wZW5zYXRpb25UYWJsZTogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgUG9zdENvbXBlbnNhdGlvblRhYmxlLCB7IHR5cGU6ICdwYXJlbnQnIH0pLAogIHdpZHRoRGVsdGFDbHVzdGVyczogbmV3IExvb2t1cFRhYmxlKG5ldyByLlBvaW50ZXIoci51aW50MTYsIFdpZHRoRGVsdGFDbHVzdGVyLCB7IHR5cGU6ICdwYXJlbnQnLCByZWxhdGl2ZVRvOiAnd2RjT2Zmc2V0JyB9KSkKfSk7Cgp2YXIganVzdCA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci51aW50MzIsCiAgZm9ybWF0OiByLnVpbnQxNiwKICBob3Jpem9udGFsOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBKdXN0aWZpY2F0aW9uVGFibGUpLAogIHZlcnRpY2FsOiBuZXcgci5Qb2ludGVyKHIudWludDE2LCBKdXN0aWZpY2F0aW9uVGFibGUpCn0pOwoKdmFyIExpZ2F0dXJlRGF0YSA9IHsKICBhY3Rpb246IHIudWludDE2Cn07Cgp2YXIgQ29udGV4dHVhbERhdGEgPSB7CiAgbWFya0luZGV4OiByLnVpbnQxNiwKICBjdXJyZW50SW5kZXg6IHIudWludDE2Cn07Cgp2YXIgSW5zZXJ0aW9uRGF0YSA9IHsKICBjdXJyZW50SW5zZXJ0SW5kZXg6IHIudWludDE2LAogIG1hcmtlZEluc2VydEluZGV4OiByLnVpbnQxNgp9OwoKdmFyIFN1YnN0aXR1dGlvblRhYmxlID0gbmV3IHIuU3RydWN0KHsKICBpdGVtczogbmV3IFVuYm91bmRlZEFycmF5KG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyBMb29rdXBUYWJsZSgpKSkKfSk7Cgp2YXIgU3VidGFibGVEYXRhID0gbmV3IHIuVmVyc2lvbmVkU3RydWN0KCd0eXBlJywgewogIDA6IHsgLy8gSW5kaWMgUmVhcnJhbmdlbWVudCBTdWJ0YWJsZQogICAgc3RhdGVUYWJsZTogbmV3IFN0YXRlVGFibGUoKQogIH0sCgogIDE6IHsgLy8gQ29udGV4dHVhbCBHbHlwaCBTdWJzdGl0dXRpb24gU3VidGFibGUKICAgIHN0YXRlVGFibGU6IG5ldyBTdGF0ZVRhYmxlKENvbnRleHR1YWxEYXRhKSwKICAgIHN1YnN0aXR1dGlvblRhYmxlOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBTdWJzdGl0dXRpb25UYWJsZSkKICB9LAoKICAyOiB7IC8vIExpZ2F0dXJlIHN1YnRhYmxlCiAgICBzdGF0ZVRhYmxlOiBuZXcgU3RhdGVUYWJsZShMaWdhdHVyZURhdGEpLAogICAgbGlnYXR1cmVBY3Rpb25zOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBuZXcgVW5ib3VuZGVkQXJyYXkoci51aW50MzIpKSwKICAgIGNvbXBvbmVudHM6IG5ldyByLlBvaW50ZXIoci51aW50MzIsIG5ldyBVbmJvdW5kZWRBcnJheShyLnVpbnQxNikpLAogICAgbGlnYXR1cmVMaXN0OiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBuZXcgVW5ib3VuZGVkQXJyYXkoci51aW50MTYpKQogIH0sCgogIDQ6IHsgLy8gTm9uLWNvbnRleHR1YWwgR2x5cGggU3Vic3RpdHV0aW9uIFN1YnRhYmxlCiAgICBsb29rdXBUYWJsZTogbmV3IExvb2t1cFRhYmxlKCkKICB9LAoKICA1OiB7IC8vIEdseXBoIEluc2VydGlvbiBTdWJ0YWJsZQogICAgc3RhdGVUYWJsZTogbmV3IFN0YXRlVGFibGUoSW5zZXJ0aW9uRGF0YSksCiAgICBpbnNlcnRpb25BY3Rpb25zOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBuZXcgVW5ib3VuZGVkQXJyYXkoci51aW50MTYpKQogIH0KfSk7Cgp2YXIgU3VidGFibGUgPSBuZXcgci5TdHJ1Y3QoewogIGxlbmd0aDogci51aW50MzIsCiAgY292ZXJhZ2U6IHIudWludDI0LAogIHR5cGU6IHIudWludDgsCiAgc3ViRmVhdHVyZUZsYWdzOiByLnVpbnQzMiwKICB0YWJsZTogU3VidGFibGVEYXRhLAogIHBhZGRpbmc6IG5ldyByLlJlc2VydmVkKHIudWludDgsIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5sZW5ndGggLSB0Ll9jdXJyZW50T2Zmc2V0OwogIH0pCn0pOwoKdmFyIEZlYXR1cmVFbnRyeSA9IG5ldyByLlN0cnVjdCh7CiAgZmVhdHVyZVR5cGU6IHIudWludDE2LAogIGZlYXR1cmVTZXR0aW5nOiByLnVpbnQxNiwKICBlbmFibGVGbGFnczogci51aW50MzIsCiAgZGlzYWJsZUZsYWdzOiByLnVpbnQzMgp9KTsKCnZhciBNb3J4Q2hhaW4gPSBuZXcgci5TdHJ1Y3QoewogIGRlZmF1bHRGbGFnczogci51aW50MzIsCiAgY2hhaW5MZW5ndGg6IHIudWludDMyLAogIG5GZWF0dXJlRW50cmllczogci51aW50MzIsCiAgblN1YnRhYmxlczogci51aW50MzIsCiAgZmVhdHVyZXM6IG5ldyByLkFycmF5KEZlYXR1cmVFbnRyeSwgJ25GZWF0dXJlRW50cmllcycpLAogIHN1YnRhYmxlczogbmV3IHIuQXJyYXkoU3VidGFibGUsICduU3VidGFibGVzJykKfSk7Cgp2YXIgbW9yeCA9IG5ldyByLlN0cnVjdCh7CiAgdmVyc2lvbjogci51aW50MTYsCiAgdW51c2VkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksCiAgbkNoYWluczogci51aW50MzIsCiAgY2hhaW5zOiBuZXcgci5BcnJheShNb3J4Q2hhaW4sICduQ2hhaW5zJykKfSk7Cgp2YXIgT3B0aWNhbEJvdW5kcyA9IG5ldyByLlN0cnVjdCh7CiAgbGVmdDogci5pbnQxNiwKICB0b3A6IHIuaW50MTYsCiAgcmlnaHQ6IHIuaW50MTYsCiAgYm90dG9tOiByLmludDE2Cn0pOwoKdmFyIG9wYmQgPSBuZXcgci5TdHJ1Y3QoewogIHZlcnNpb246IHIuZml4ZWQzMiwKICBmb3JtYXQ6IHIudWludDE2LAogIGxvb2t1cFRhYmxlOiBuZXcgTG9va3VwVGFibGUoT3B0aWNhbEJvdW5kcykKfSk7Cgp2YXIgdGFibGVzID0ge307Ci8vIFJlcXVpcmVkIFRhYmxlcwp0YWJsZXMuY21hcCA9IGNtYXA7CnRhYmxlcy5oZWFkID0gaGVhZDsKdGFibGVzLmhoZWEgPSBoaGVhOwp0YWJsZXMuaG10eCA9IGhtdHg7CnRhYmxlcy5tYXhwID0gbWF4cDsKdGFibGVzLm5hbWUgPSBOYW1lVGFibGU7CnRhYmxlc1snT1MvMiddID0gT1MyOwp0YWJsZXMucG9zdCA9IHBvc3Q7CgovLyBUcnVlVHlwZSBPdXRsaW5lcwp0YWJsZXMuZnBnbSA9IGZwZ207CnRhYmxlcy5sb2NhID0gbG9jYTsKdGFibGVzLnByZXAgPSBwcmVwOwp0YWJsZXNbJ2N2dCAnXSA9IGN2dDsKdGFibGVzLmdseWYgPSBnbHlmOwoKLy8gUG9zdFNjcmlwdCBPdXRsaW5lcwp0YWJsZXNbJ0NGRiAnXSA9IENGRkZvbnQ7CnRhYmxlc1snQ0ZGMiddID0gQ0ZGRm9udDsKdGFibGVzLlZPUkcgPSBWT1JHOwoKLy8gQml0bWFwIEdseXBocwp0YWJsZXMuRUJMQyA9IEVCTEM7CnRhYmxlcy5DQkxDID0gdGFibGVzLkVCTEM7CnRhYmxlcy5zYml4ID0gc2JpeDsKdGFibGVzLkNPTFIgPSBDT0xSOwp0YWJsZXMuQ1BBTCA9IENQQUw7CgovLyBBZHZhbmNlZCBPcGVuVHlwZSBUYWJsZXMKdGFibGVzLkJBU0UgPSBCQVNFOwp0YWJsZXMuR0RFRiA9IEdERUY7CnRhYmxlcy5HUE9TID0gR1BPUzsKdGFibGVzLkdTVUIgPSBHU1VCOwp0YWJsZXMuSlNURiA9IEpTVEY7CgovLyBPcGVuVHlwZSB2YXJpYXRpb25zIHRhYmxlcwp0YWJsZXMuSFZBUiA9IEhWQVI7CgovLyBPdGhlciBPcGVuVHlwZSBUYWJsZXMKdGFibGVzLkRTSUcgPSBEU0lHOwp0YWJsZXMuZ2FzcCA9IGdhc3A7CnRhYmxlcy5oZG14ID0gaGRteDsKdGFibGVzLmtlcm4gPSBrZXJuOwp0YWJsZXMuTFRTSCA9IExUU0g7CnRhYmxlcy5QQ0xUID0gUENMVDsKdGFibGVzLlZETVggPSBWRE1YOwp0YWJsZXMudmhlYSA9IHZoZWE7CnRhYmxlcy52bXR4ID0gdm10eDsKCi8vIEFwcGxlIEFkdmFuY2VkIFR5cG9ncmFwaHkgVGFibGVzCnRhYmxlcy5hdmFyID0gYXZhcjsKdGFibGVzLmJzbG4gPSBic2xuOwp0YWJsZXMuZmVhdCA9IGZlYXQ7CnRhYmxlcy5mdmFyID0gZnZhcjsKdGFibGVzLmd2YXIgPSBndmFyOwp0YWJsZXMuanVzdCA9IGp1c3Q7CnRhYmxlcy5tb3J4ID0gbW9yeDsKdGFibGVzLm9wYmQgPSBvcGJkOwoKdmFyIFRhYmxlRW50cnkgPSBuZXcgci5TdHJ1Y3QoewogIHRhZzogbmV3IHIuU3RyaW5nKDQpLAogIGNoZWNrU3VtOiByLnVpbnQzMiwKICBvZmZzZXQ6IG5ldyByLlBvaW50ZXIoci51aW50MzIsICd2b2lkJywgeyB0eXBlOiAnZ2xvYmFsJyB9KSwKICBsZW5ndGg6IHIudWludDMyCn0pOwoKdmFyIERpcmVjdG9yeSA9IG5ldyByLlN0cnVjdCh7CiAgdGFnOiBuZXcgci5TdHJpbmcoNCksCiAgbnVtVGFibGVzOiByLnVpbnQxNiwKICBzZWFyY2hSYW5nZTogci51aW50MTYsCiAgZW50cnlTZWxlY3Rvcjogci51aW50MTYsCiAgcmFuZ2VTaGlmdDogci51aW50MTYsCiAgdGFibGVzOiBuZXcgci5BcnJheShUYWJsZUVudHJ5LCAnbnVtVGFibGVzJykKfSk7CgpEaXJlY3RvcnkucHJvY2VzcyA9IGZ1bmN0aW9uICgpIHsKICB2YXIgdGFibGVzID0ge307CiAgZm9yICh2YXIgX2l0ZXJhdG9yID0gdGhpcy50YWJsZXMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgdmFyIF9yZWY7CgogICAgaWYgKF9pc0FycmF5KSB7CiAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgIH0gZWxzZSB7CiAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICBfcmVmID0gX2kudmFsdWU7CiAgICB9CgogICAgdmFyIHRhYmxlID0gX3JlZjsKCiAgICB0YWJsZXNbdGFibGUudGFnXSA9IHRhYmxlOwogIH0KCiAgdGhpcy50YWJsZXMgPSB0YWJsZXM7Cn07CgpEaXJlY3RvcnkucHJlRW5jb2RlID0gZnVuY3Rpb24gKHN0cmVhbSkgewogIHZhciB0YWJsZXMkJCA9IFtdOwogIGZvciAodmFyIHRhZyBpbiB0aGlzLnRhYmxlcykgewogICAgdmFyIHRhYmxlID0gdGhpcy50YWJsZXNbdGFnXTsKICAgIGlmICh0YWJsZSkgewogICAgICB0YWJsZXMkJC5wdXNoKHsKICAgICAgICB0YWc6IHRhZywKICAgICAgICBjaGVja1N1bTogMCwKICAgICAgICBvZmZzZXQ6IG5ldyByLlZvaWRQb2ludGVyKHRhYmxlc1t0YWddLCB0YWJsZSksCiAgICAgICAgbGVuZ3RoOiB0YWJsZXNbdGFnXS5zaXplKHRhYmxlKQogICAgICB9KTsKICAgIH0KICB9CgogIHRoaXMudGFnID0gJ3RydWUnOwogIHRoaXMubnVtVGFibGVzID0gdGFibGVzJCQubGVuZ3RoOwogIHRoaXMudGFibGVzID0gdGFibGVzJCQ7CgogIHRoaXMuc2VhcmNoUmFuZ2UgPSBNYXRoLmZsb29yKE1hdGgubG9nKHRoaXMubnVtVGFibGVzKSAvIE1hdGguTE4yKSAqIDE2OwogIHRoaXMuZW50cnlTZWxlY3RvciA9IE1hdGguZmxvb3IodGhpcy5zZWFyY2hSYW5nZSAvIE1hdGguTE4yKTsKICB0aGlzLnJhbmdlU2hpZnQgPSB0aGlzLm51bVRhYmxlcyAqIDE2IC0gdGhpcy5zZWFyY2hSYW5nZTsKfTsKCmZ1bmN0aW9uIGJpbmFyeVNlYXJjaChhcnIsIGNtcCkgewogIHZhciBtaW4gPSAwOwogIHZhciBtYXggPSBhcnIubGVuZ3RoIC0gMTsKICB3aGlsZSAobWluIDw9IG1heCkgewogICAgdmFyIG1pZCA9IG1pbiArIG1heCA+PiAxOwogICAgdmFyIHJlcyA9IGNtcChhcnJbbWlkXSk7CgogICAgaWYgKHJlcyA8IDApIHsKICAgICAgbWF4ID0gbWlkIC0gMTsKICAgIH0gZWxzZSBpZiAocmVzID4gMCkgewogICAgICBtaW4gPSBtaWQgKyAxOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIG1pZDsKICAgIH0KICB9CgogIHJldHVybiAtMTsKfQoKZnVuY3Rpb24gcmFuZ2UoaW5kZXgsIGVuZCkgewogIHZhciByYW5nZSA9IFtdOwogIHdoaWxlIChpbmRleCA8IGVuZCkgewogICAgcmFuZ2UucHVzaChpbmRleCsrKTsKICB9CiAgcmV0dXJuIHJhbmdlOwp9Cgp2YXIgX2NsYXNzJDE7CmZ1bmN0aW9uIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IkMSh0YXJnZXQsIHByb3BlcnR5LCBkZWNvcmF0b3JzLCBkZXNjcmlwdG9yLCBjb250ZXh0KSB7CiAgdmFyIGRlc2MgPSB7fTsKICBPYmplY3RbJ2tlJyArICd5cyddKGRlc2NyaXB0b3IpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgZGVzY1trZXldID0gZGVzY3JpcHRvcltrZXldOwogIH0pOwogIGRlc2MuZW51bWVyYWJsZSA9ICEhZGVzYy5lbnVtZXJhYmxlOwogIGRlc2MuY29uZmlndXJhYmxlID0gISFkZXNjLmNvbmZpZ3VyYWJsZTsKCiAgaWYgKCd2YWx1ZScgaW4gZGVzYyB8fCBkZXNjLmluaXRpYWxpemVyKSB7CiAgICBkZXNjLndyaXRhYmxlID0gdHJ1ZTsKICB9CgogIGRlc2MgPSBkZWNvcmF0b3JzLnNsaWNlKCkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbiAoZGVzYywgZGVjb3JhdG9yKSB7CiAgICByZXR1cm4gZGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHksIGRlc2MpIHx8IGRlc2M7CiAgfSwgZGVzYyk7CgogIGlmIChjb250ZXh0ICYmIGRlc2MuaW5pdGlhbGl6ZXIgIT09IHZvaWQgMCkgewogICAgZGVzYy52YWx1ZSA9IGRlc2MuaW5pdGlhbGl6ZXIgPyBkZXNjLmluaXRpYWxpemVyLmNhbGwoY29udGV4dCkgOiB2b2lkIDA7CiAgICBkZXNjLmluaXRpYWxpemVyID0gdW5kZWZpbmVkOwogIH0KCiAgaWYgKGRlc2MuaW5pdGlhbGl6ZXIgPT09IHZvaWQgMCkgewogICAgT2JqZWN0WydkZWZpbmUnICsgJ1Byb3BlcnR5J10odGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYyk7CiAgICBkZXNjID0gbnVsbDsKICB9CgogIHJldHVybiBkZXNjOwp9CgovLyBpY29udi1saXRlIGlzIGFuIG9wdGlvbmFsIGRlcGVuZGVuY3kuCnRyeSB7CiAgdmFyIGljb252ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Mik7Cn0gY2F0Y2ggKGVycikge30KCnZhciBDbWFwUHJvY2Vzc29yID0gKF9jbGFzcyQxID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIENtYXBQcm9jZXNzb3IoY21hcFRhYmxlKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ21hcFByb2Nlc3Nvcik7CgogICAgLy8gQXR0ZW1wdCB0byBmaW5kIGEgVW5pY29kZSBjbWFwIGZpcnN0CiAgICB0aGlzLmVuY29kaW5nID0gbnVsbDsKICAgIHRoaXMuY21hcCA9IHRoaXMuZmluZFN1YnRhYmxlKGNtYXBUYWJsZSwgWwogICAgLy8gMzItYml0IHN1YnRhYmxlcwogICAgWzMsIDEwXSwgWzAsIDZdLCBbMCwgNF0sCgogICAgLy8gMTYtYml0IHN1YnRhYmxlcwogICAgWzMsIDFdLCBbMCwgM10sIFswLCAyXSwgWzAsIDFdLCBbMCwgMF1dKTsKCiAgICAvLyBJZiBub3QgdW5pY29kZSBjbWFwIHdhcyBmb3VuZCwgYW5kIGljb252LWxpdGUgaXMgaW5zdGFsbGVkLAogICAgLy8gdGFrZSB0aGUgZmlyc3QgdGFibGUgd2l0aCBhIHN1cHBvcnRlZCBlbmNvZGluZy4KICAgIGlmICghdGhpcy5jbWFwICYmIGljb252KSB7CiAgICAgIGZvciAodmFyIF9pdGVyYXRvciA9IGNtYXBUYWJsZS50YWJsZXMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICAgIHZhciBfcmVmOwoKICAgICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBjbWFwID0gX3JlZjsKCiAgICAgICAgdmFyIGVuY29kaW5nID0gZ2V0RW5jb2RpbmcoY21hcC5wbGF0Zm9ybUlELCBjbWFwLmVuY29kaW5nSUQsIGNtYXAudGFibGUubGFuZ3VhZ2UgLSAxKTsKICAgICAgICBpZiAoaWNvbnYuZW5jb2RpbmdFeGlzdHMoZW5jb2RpbmcpKSB7CiAgICAgICAgICB0aGlzLmNtYXAgPSBjbWFwLnRhYmxlOwogICAgICAgICAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGlmICghdGhpcy5jbWFwKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiQ291bGQgbm90IGZpbmQgYSBzdXBwb3J0ZWQgY21hcCB0YWJsZSIpOwogICAgfQoKICAgIHRoaXMudXZzID0gdGhpcy5maW5kU3VidGFibGUoY21hcFRhYmxlLCBbWzAsIDVdXSk7CiAgICBpZiAodGhpcy51dnMgJiYgdGhpcy51dnMudmVyc2lvbiAhPT0gMTQpIHsKICAgICAgdGhpcy51dnMgPSBudWxsOwogICAgfQogIH0KCiAgQ21hcFByb2Nlc3Nvci5wcm90b3R5cGUuZmluZFN1YnRhYmxlID0gZnVuY3Rpb24gZmluZFN1YnRhYmxlKGNtYXBUYWJsZSwgcGFpcnMpIHsKICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBwYWlycywgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICB2YXIgX3JlZjI7CgogICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjIgPSBfaXRlcmF0b3IyW19pMisrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICBpZiAoX2kyLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgX3JlZjMgPSBfcmVmMiwKICAgICAgICAgIHBsYXRmb3JtSUQgPSBfcmVmM1swXSwKICAgICAgICAgIGVuY29kaW5nSUQgPSBfcmVmM1sxXTsKCiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSBjbWFwVGFibGUudGFibGVzLCBfaXNBcnJheTMgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjMpLCBfaTMgPSAwLCBfaXRlcmF0b3IzID0gX2lzQXJyYXkzID8gX2l0ZXJhdG9yMyA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IzKTs7KSB7CiAgICAgICAgdmFyIF9yZWY0OwoKICAgICAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgICAgICBpZiAoX2kzID49IF9pdGVyYXRvcjMubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWY0ID0gX2l0ZXJhdG9yM1tfaTMrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pMyA9IF9pdGVyYXRvcjMubmV4dCgpOwogICAgICAgICAgaWYgKF9pMy5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWY0ID0gX2kzLnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIGNtYXAgPSBfcmVmNDsKCiAgICAgICAgaWYgKGNtYXAucGxhdGZvcm1JRCA9PT0gcGxhdGZvcm1JRCAmJiBjbWFwLmVuY29kaW5nSUQgPT09IGVuY29kaW5nSUQpIHsKICAgICAgICAgIHJldHVybiBjbWFwLnRhYmxlOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBudWxsOwogIH07CgogIENtYXBQcm9jZXNzb3IucHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uIGxvb2t1cChjb2RlcG9pbnQsIHZhcmlhdGlvblNlbGVjdG9yKSB7CiAgICAvLyBJZiB0aGVyZSBpcyBubyBVbmljb2RlIGNtYXAgaW4gdGhpcyBmb250LCB3ZSBuZWVkIHRvIHJlLWVuY29kZQogICAgLy8gdGhlIGNvZGVwb2ludCBpbiB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgY21hcCBzdXBwb3J0cy4KICAgIGlmICh0aGlzLmVuY29kaW5nKSB7CiAgICAgIHZhciBidWYgPSBpY29udi5lbmNvZGUoX1N0cmluZyRmcm9tQ29kZVBvaW50KGNvZGVwb2ludCksIHRoaXMuZW5jb2RpbmcpOwogICAgICBjb2RlcG9pbnQgPSAwOwogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkrKykgewogICAgICAgIGNvZGVwb2ludCA9IGNvZGVwb2ludCA8PCA4IHwgYnVmW2ldOwogICAgICB9CgogICAgICAvLyBPdGhlcndpc2UsIHRyeSB0byBnZXQgYSBVbmljb2RlIHZhcmlhdGlvbiBzZWxlY3RvciBmb3IgdGhpcyBjb2RlcG9pbnQgaWYgb25lIGlzIHByb3ZpZGVkLgogICAgfSBlbHNlIGlmICh2YXJpYXRpb25TZWxlY3RvcikgewogICAgICB2YXIgZ2lkID0gdGhpcy5nZXRWYXJpYXRpb25TZWxlY3Rvcihjb2RlcG9pbnQsIHZhcmlhdGlvblNlbGVjdG9yKTsKICAgICAgaWYgKGdpZCkgewogICAgICAgIHJldHVybiBnaWQ7CiAgICAgIH0KICAgIH0KCiAgICB2YXIgY21hcCA9IHRoaXMuY21hcDsKICAgIHN3aXRjaCAoY21hcC52ZXJzaW9uKSB7CiAgICAgIGNhc2UgMDoKICAgICAgICByZXR1cm4gY21hcC5jb2RlTWFwLmdldChjb2RlcG9pbnQpIHx8IDA7CgogICAgICBjYXNlIDQ6CiAgICAgICAgewogICAgICAgICAgdmFyIG1pbiA9IDA7CiAgICAgICAgICB2YXIgbWF4ID0gY21hcC5zZWdDb3VudCAtIDE7CiAgICAgICAgICB3aGlsZSAobWluIDw9IG1heCkgewogICAgICAgICAgICB2YXIgbWlkID0gbWluICsgbWF4ID4+IDE7CgogICAgICAgICAgICBpZiAoY29kZXBvaW50IDwgY21hcC5zdGFydENvZGUuZ2V0KG1pZCkpIHsKICAgICAgICAgICAgICBtYXggPSBtaWQgLSAxOwogICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGVwb2ludCA+IGNtYXAuZW5kQ29kZS5nZXQobWlkKSkgewogICAgICAgICAgICAgIG1pbiA9IG1pZCArIDE7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdmFyIHJhbmdlT2Zmc2V0ID0gY21hcC5pZFJhbmdlT2Zmc2V0LmdldChtaWQpOwogICAgICAgICAgICAgIHZhciBfZ2lkID0gdm9pZCAwOwoKICAgICAgICAgICAgICBpZiAocmFuZ2VPZmZzZXQgPT09IDApIHsKICAgICAgICAgICAgICAgIF9naWQgPSBjb2RlcG9pbnQgKyBjbWFwLmlkRGVsdGEuZ2V0KG1pZCk7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHJhbmdlT2Zmc2V0IC8gMiArIChjb2RlcG9pbnQgLSBjbWFwLnN0YXJ0Q29kZS5nZXQobWlkKSkgLSAoY21hcC5zZWdDb3VudCAtIG1pZCk7CiAgICAgICAgICAgICAgICBfZ2lkID0gY21hcC5nbHlwaEluZGV4QXJyYXkuZ2V0KGluZGV4KSB8fCAwOwogICAgICAgICAgICAgICAgaWYgKF9naWQgIT09IDApIHsKICAgICAgICAgICAgICAgICAgX2dpZCArPSBjbWFwLmlkRGVsdGEuZ2V0KG1pZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICByZXR1cm4gX2dpZCAmIDB4ZmZmZjsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgIGNhc2UgODoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RPRE86IGNtYXAgZm9ybWF0IDgnKTsKCiAgICAgIGNhc2UgNjoKICAgICAgY2FzZSAxMDoKICAgICAgICByZXR1cm4gY21hcC5nbHlwaEluZGljZXMuZ2V0KGNvZGVwb2ludCAtIGNtYXAuZmlyc3RDb2RlKSB8fCAwOwoKICAgICAgY2FzZSAxMjoKICAgICAgY2FzZSAxMzoKICAgICAgICB7CiAgICAgICAgICB2YXIgX21pbiA9IDA7CiAgICAgICAgICB2YXIgX21heCA9IGNtYXAubkdyb3VwcyAtIDE7CiAgICAgICAgICB3aGlsZSAoX21pbiA8PSBfbWF4KSB7CiAgICAgICAgICAgIHZhciBfbWlkID0gX21pbiArIF9tYXggPj4gMTsKICAgICAgICAgICAgdmFyIGdyb3VwID0gY21hcC5ncm91cHMuZ2V0KF9taWQpOwoKICAgICAgICAgICAgaWYgKGNvZGVwb2ludCA8IGdyb3VwLnN0YXJ0Q2hhckNvZGUpIHsKICAgICAgICAgICAgICBfbWF4ID0gX21pZCAtIDE7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZXBvaW50ID4gZ3JvdXAuZW5kQ2hhckNvZGUpIHsKICAgICAgICAgICAgICBfbWluID0gX21pZCArIDE7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgaWYgKGNtYXAudmVyc2lvbiA9PT0gMTIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBncm91cC5nbHlwaElEICsgKGNvZGVwb2ludCAtIGdyb3VwLnN0YXJ0Q2hhckNvZGUpOwogICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZ3JvdXAuZ2x5cGhJRDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICBjYXNlIDE0OgogICAgICAgIHRocm93IG5ldyBFcnJvcignVE9ETzogY21hcCBmb3JtYXQgMTQnKTsKCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGNtYXAgZm9ybWF0ICcgKyBjbWFwLnZlcnNpb24pOwogICAgfQogIH07CgogIENtYXBQcm9jZXNzb3IucHJvdG90eXBlLmdldFZhcmlhdGlvblNlbGVjdG9yID0gZnVuY3Rpb24gZ2V0VmFyaWF0aW9uU2VsZWN0b3IoY29kZXBvaW50LCB2YXJpYXRpb25TZWxlY3RvcikgewogICAgaWYgKCF0aGlzLnV2cykgewogICAgICByZXR1cm4gMDsKICAgIH0KCiAgICB2YXIgc2VsZWN0b3JzID0gdGhpcy51dnMudmFyU2VsZWN0b3JzLnRvQXJyYXkoKTsKICAgIHZhciBpID0gYmluYXJ5U2VhcmNoKHNlbGVjdG9ycywgZnVuY3Rpb24gKHgpIHsKICAgICAgcmV0dXJuIHZhcmlhdGlvblNlbGVjdG9yIC0geC52YXJTZWxlY3RvcjsKICAgIH0pOwogICAgdmFyIHNlbCA9IHNlbGVjdG9yc1tpXTsKCiAgICBpZiAoaSAhPT0gLTEgJiYgc2VsLmRlZmF1bHRVVlMpIHsKICAgICAgaSA9IGJpbmFyeVNlYXJjaChzZWwuZGVmYXVsdFVWUywgZnVuY3Rpb24gKHgpIHsKICAgICAgICByZXR1cm4gY29kZXBvaW50IDwgeC5zdGFydFVuaWNvZGVWYWx1ZSA/IC0xIDogY29kZXBvaW50ID4geC5zdGFydFVuaWNvZGVWYWx1ZSArIHguYWRkaXRpb25hbENvdW50ID8gKzEgOiAwOwogICAgICB9KTsKICAgIH0KCiAgICBpZiAoaSAhPT0gLTEgJiYgc2VsLm5vbkRlZmF1bHRVVlMpIHsKICAgICAgaSA9IGJpbmFyeVNlYXJjaChzZWwubm9uRGVmYXVsdFVWUywgZnVuY3Rpb24gKHgpIHsKICAgICAgICByZXR1cm4gY29kZXBvaW50IC0geC51bmljb2RlVmFsdWU7CiAgICAgIH0pOwogICAgICBpZiAoaSAhPT0gLTEpIHsKICAgICAgICByZXR1cm4gc2VsLm5vbkRlZmF1bHRVVlNbaV0uZ2x5cGhJRDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwogIH07CgogIENtYXBQcm9jZXNzb3IucHJvdG90eXBlLmdldENoYXJhY3RlclNldCA9IGZ1bmN0aW9uIGdldENoYXJhY3RlclNldCgpIHsKICAgIHZhciBjbWFwID0gdGhpcy5jbWFwOwogICAgc3dpdGNoIChjbWFwLnZlcnNpb24pIHsKICAgICAgY2FzZSAwOgogICAgICAgIHJldHVybiByYW5nZSgwLCBjbWFwLmNvZGVNYXAubGVuZ3RoKTsKCiAgICAgIGNhc2UgNDoKICAgICAgICB7CiAgICAgICAgICB2YXIgcmVzID0gW107CiAgICAgICAgICB2YXIgZW5kQ29kZXMgPSBjbWFwLmVuZENvZGUudG9BcnJheSgpOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbmRDb2Rlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgdGFpbCA9IGVuZENvZGVzW2ldICsgMTsKICAgICAgICAgICAgdmFyIHN0YXJ0ID0gY21hcC5zdGFydENvZGUuZ2V0KGkpOwogICAgICAgICAgICByZXMucHVzaC5hcHBseShyZXMsIHJhbmdlKHN0YXJ0LCB0YWlsKSk7CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICB9CgogICAgICBjYXNlIDg6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUT0RPOiBjbWFwIGZvcm1hdCA4Jyk7CgogICAgICBjYXNlIDY6CiAgICAgIGNhc2UgMTA6CiAgICAgICAgcmV0dXJuIHJhbmdlKGNtYXAuZmlyc3RDb2RlLCBjbWFwLmZpcnN0Q29kZSArIGNtYXAuZ2x5cGhJbmRpY2VzLmxlbmd0aCk7CgogICAgICBjYXNlIDEyOgogICAgICBjYXNlIDEzOgogICAgICAgIHsKICAgICAgICAgIHZhciBfcmVzID0gW107CiAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3I0ID0gY21hcC5ncm91cHMudG9BcnJheSgpLCBfaXNBcnJheTQgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjQpLCBfaTQgPSAwLCBfaXRlcmF0b3I0ID0gX2lzQXJyYXk0ID8gX2l0ZXJhdG9yNCA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I0KTs7KSB7CiAgICAgICAgICAgIHZhciBfcmVmNTsKCiAgICAgICAgICAgIGlmIChfaXNBcnJheTQpIHsKICAgICAgICAgICAgICBpZiAoX2k0ID49IF9pdGVyYXRvcjQubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgICBfcmVmNSA9IF9pdGVyYXRvcjRbX2k0KytdOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIF9pNCA9IF9pdGVyYXRvcjQubmV4dCgpOwogICAgICAgICAgICAgIGlmIChfaTQuZG9uZSkgYnJlYWs7CiAgICAgICAgICAgICAgX3JlZjUgPSBfaTQudmFsdWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBncm91cCA9IF9yZWY1OwoKICAgICAgICAgICAgX3Jlcy5wdXNoLmFwcGx5KF9yZXMsIHJhbmdlKGdyb3VwLnN0YXJ0Q2hhckNvZGUsIGdyb3VwLmVuZENoYXJDb2RlICsgMSkpOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBfcmVzOwogICAgICAgIH0KCiAgICAgIGNhc2UgMTQ6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUT0RPOiBjbWFwIGZvcm1hdCAxNCcpOwoKICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gY21hcCBmb3JtYXQgJyArIGNtYXAudmVyc2lvbik7CiAgICB9CiAgfTsKCiAgQ21hcFByb2Nlc3Nvci5wcm90b3R5cGUuY29kZVBvaW50c0ZvckdseXBoID0gZnVuY3Rpb24gY29kZVBvaW50c0ZvckdseXBoKGdpZCkgewogICAgdmFyIGNtYXAgPSB0aGlzLmNtYXA7CiAgICBzd2l0Y2ggKGNtYXAudmVyc2lvbikgewogICAgICBjYXNlIDA6CiAgICAgICAgewogICAgICAgICAgdmFyIHJlcyA9IFtdOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKykgewogICAgICAgICAgICBpZiAoY21hcC5jb2RlTWFwLmdldChpKSA9PT0gZ2lkKSB7CiAgICAgICAgICAgICAgcmVzLnB1c2goaSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgIH0KCiAgICAgIGNhc2UgNDoKICAgICAgICB7CiAgICAgICAgICB2YXIgX3JlczIgPSBbXTsKICAgICAgICAgIGZvciAodmFyIF9pNSA9IDA7IF9pNSA8IGNtYXAuc2VnQ291bnQ7IF9pNSsrKSB7CiAgICAgICAgICAgIHZhciBlbmQgPSBjbWFwLmVuZENvZGUuZ2V0KF9pNSk7CiAgICAgICAgICAgIHZhciBzdGFydCA9IGNtYXAuc3RhcnRDb2RlLmdldChfaTUpOwogICAgICAgICAgICB2YXIgcmFuZ2VPZmZzZXQgPSBjbWFwLmlkUmFuZ2VPZmZzZXQuZ2V0KF9pNSk7CiAgICAgICAgICAgIHZhciBkZWx0YSA9IGNtYXAuaWREZWx0YS5nZXQoX2k1KTsKCiAgICAgICAgICAgIGZvciAodmFyIGMgPSBzdGFydDsgYyA8PSBlbmQ7IGMrKykgewogICAgICAgICAgICAgIHZhciBnID0gMDsKICAgICAgICAgICAgICBpZiAocmFuZ2VPZmZzZXQgPT09IDApIHsKICAgICAgICAgICAgICAgIGcgPSBjICsgZGVsdGE7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IHJhbmdlT2Zmc2V0IC8gMiArIChjIC0gc3RhcnQpIC0gKGNtYXAuc2VnQ291bnQgLSBfaTUpOwogICAgICAgICAgICAgICAgZyA9IGNtYXAuZ2x5cGhJbmRleEFycmF5LmdldChpbmRleCkgfHwgMDsKICAgICAgICAgICAgICAgIGlmIChnICE9PSAwKSB7CiAgICAgICAgICAgICAgICAgIGcgKz0gZGVsdGE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBpZiAoZyA9PT0gZ2lkKSB7CiAgICAgICAgICAgICAgICBfcmVzMi5wdXNoKGMpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBfcmVzMjsKICAgICAgICB9CgogICAgICBjYXNlIDEyOgogICAgICAgIHsKICAgICAgICAgIHZhciBfcmVzMyA9IFtdOwogICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yNSA9IGNtYXAuZ3JvdXBzLnRvQXJyYXkoKSwgX2lzQXJyYXk1ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I1KSwgX2k2ID0gMCwgX2l0ZXJhdG9yNSA9IF9pc0FycmF5NSA/IF9pdGVyYXRvcjUgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNSk7OykgewogICAgICAgICAgICB2YXIgX3JlZjY7CgogICAgICAgICAgICBpZiAoX2lzQXJyYXk1KSB7CiAgICAgICAgICAgICAgaWYgKF9pNiA+PSBfaXRlcmF0b3I1Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgICAgX3JlZjYgPSBfaXRlcmF0b3I1W19pNisrXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfaTYgPSBfaXRlcmF0b3I1Lm5leHQoKTsKICAgICAgICAgICAgICBpZiAoX2k2LmRvbmUpIGJyZWFrOwogICAgICAgICAgICAgIF9yZWY2ID0gX2k2LnZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgZ3JvdXAgPSBfcmVmNjsKCiAgICAgICAgICAgIGlmIChnaWQgPj0gZ3JvdXAuZ2x5cGhJRCAmJiBnaWQgPD0gZ3JvdXAuZ2x5cGhJRCArIChncm91cC5lbmRDaGFyQ29kZSAtIGdyb3VwLnN0YXJ0Q2hhckNvZGUpKSB7CiAgICAgICAgICAgICAgX3JlczMucHVzaChncm91cC5zdGFydENoYXJDb2RlICsgKGdpZCAtIGdyb3VwLmdseXBoSUQpKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBfcmVzMzsKICAgICAgICB9CgogICAgICBjYXNlIDEzOgogICAgICAgIHsKICAgICAgICAgIHZhciBfcmVzNCA9IFtdOwogICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yNiA9IGNtYXAuZ3JvdXBzLnRvQXJyYXkoKSwgX2lzQXJyYXk2ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I2KSwgX2k3ID0gMCwgX2l0ZXJhdG9yNiA9IF9pc0FycmF5NiA/IF9pdGVyYXRvcjYgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNik7OykgewogICAgICAgICAgICB2YXIgX3JlZjc7CgogICAgICAgICAgICBpZiAoX2lzQXJyYXk2KSB7CiAgICAgICAgICAgICAgaWYgKF9pNyA+PSBfaXRlcmF0b3I2Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgICAgX3JlZjcgPSBfaXRlcmF0b3I2W19pNysrXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfaTcgPSBfaXRlcmF0b3I2Lm5leHQoKTsKICAgICAgICAgICAgICBpZiAoX2k3LmRvbmUpIGJyZWFrOwogICAgICAgICAgICAgIF9yZWY3ID0gX2k3LnZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgX2dyb3VwID0gX3JlZjc7CgogICAgICAgICAgICBpZiAoZ2lkID09PSBfZ3JvdXAuZ2x5cGhJRCkgewogICAgICAgICAgICAgIF9yZXM0LnB1c2guYXBwbHkoX3JlczQsIHJhbmdlKF9ncm91cC5zdGFydENoYXJDb2RlLCBfZ3JvdXAuZW5kQ2hhckNvZGUgKyAxKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gX3JlczQ7CiAgICAgICAgfQoKICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gY21hcCBmb3JtYXQgJyArIGNtYXAudmVyc2lvbik7CiAgICB9CiAgfTsKCiAgcmV0dXJuIENtYXBQcm9jZXNzb3I7Cn0oKSwgKF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IkMShfY2xhc3MkMS5wcm90b3R5cGUsICdnZXRDaGFyYWN0ZXJTZXQnLCBbY2FjaGVdLCBfT2JqZWN0JGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MkMS5wcm90b3R5cGUsICdnZXRDaGFyYWN0ZXJTZXQnKSwgX2NsYXNzJDEucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciQxKF9jbGFzcyQxLnByb3RvdHlwZSwgJ2NvZGVQb2ludHNGb3JHbHlwaCcsIFtjYWNoZV0sIF9PYmplY3QkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcyQxLnByb3RvdHlwZSwgJ2NvZGVQb2ludHNGb3JHbHlwaCcpLCBfY2xhc3MkMS5wcm90b3R5cGUpKSwgX2NsYXNzJDEpOwoKdmFyIEtlcm5Qcm9jZXNzb3IgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gS2VyblByb2Nlc3Nvcihmb250KSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgS2VyblByb2Nlc3Nvcik7CgogICAgdGhpcy5rZXJuID0gZm9udC5rZXJuOwogIH0KCiAgS2VyblByb2Nlc3Nvci5wcm90b3R5cGUucHJvY2VzcyA9IGZ1bmN0aW9uIHByb2Nlc3MoZ2x5cGhzLCBwb3NpdGlvbnMpIHsKICAgIGZvciAodmFyIGdseXBoSW5kZXggPSAwOyBnbHlwaEluZGV4IDwgZ2x5cGhzLmxlbmd0aCAtIDE7IGdseXBoSW5kZXgrKykgewogICAgICB2YXIgbGVmdCA9IGdseXBoc1tnbHlwaEluZGV4XS5pZDsKICAgICAgdmFyIHJpZ2h0ID0gZ2x5cGhzW2dseXBoSW5kZXggKyAxXS5pZDsKICAgICAgcG9zaXRpb25zW2dseXBoSW5kZXhdLnhBZHZhbmNlICs9IHRoaXMuZ2V0S2VybmluZyhsZWZ0LCByaWdodCk7CiAgICB9CiAgfTsKCiAgS2VyblByb2Nlc3Nvci5wcm90b3R5cGUuZ2V0S2VybmluZyA9IGZ1bmN0aW9uIGdldEtlcm5pbmcobGVmdCwgcmlnaHQpIHsKICAgIHZhciByZXMgPSAwOwoKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHRoaXMua2Vybi50YWJsZXMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICB2YXIgX3JlZjsKCiAgICAgIGlmIChfaXNBcnJheSkgewogICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgdGFibGUgPSBfcmVmOwoKICAgICAgaWYgKHRhYmxlLmNvdmVyYWdlLmNyb3NzU3RyZWFtKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIHN3aXRjaCAodGFibGUudmVyc2lvbikgewogICAgICAgIGNhc2UgMDoKICAgICAgICAgIGlmICghdGFibGUuY292ZXJhZ2UuaG9yaXpvbnRhbCkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KCiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlIDE6CiAgICAgICAgICBpZiAodGFibGUuY292ZXJhZ2UudmVydGljYWwgfHwgdGFibGUuY292ZXJhZ2UudmFyaWF0aW9uKSB7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGtlcm5pbmcgdGFibGUgdmVyc2lvbiAnICsgdGFibGUudmVyc2lvbik7CiAgICAgIH0KCiAgICAgIHZhciB2YWwgPSAwOwogICAgICB2YXIgcyA9IHRhYmxlLnN1YnRhYmxlOwogICAgICBzd2l0Y2ggKHRhYmxlLmZvcm1hdCkgewogICAgICAgIGNhc2UgMDoKICAgICAgICAgIHZhciBwYWlySWR4ID0gYmluYXJ5U2VhcmNoKHMucGFpcnMsIGZ1bmN0aW9uIChwYWlyKSB7CiAgICAgICAgICAgIHJldHVybiBsZWZ0IC0gcGFpci5sZWZ0IHx8IHJpZ2h0IC0gcGFpci5yaWdodDsKICAgICAgICAgIH0pOwoKICAgICAgICAgIGlmIChwYWlySWR4ID49IDApIHsKICAgICAgICAgICAgdmFsID0gcy5wYWlyc1twYWlySWR4XS52YWx1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOgogICAgICAgICAgdmFyIGxlZnRPZmZzZXQgPSAwLAogICAgICAgICAgICAgIHJpZ2h0T2Zmc2V0ID0gMDsKICAgICAgICAgIGlmIChsZWZ0ID49IHMubGVmdFRhYmxlLmZpcnN0R2x5cGggJiYgbGVmdCA8IHMubGVmdFRhYmxlLmZpcnN0R2x5cGggKyBzLmxlZnRUYWJsZS5uR2x5cGhzKSB7CiAgICAgICAgICAgIGxlZnRPZmZzZXQgPSBzLmxlZnRUYWJsZS5vZmZzZXRzW2xlZnQgLSBzLmxlZnRUYWJsZS5maXJzdEdseXBoXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxlZnRPZmZzZXQgPSBzLmFycmF5Lm9mZjsKICAgICAgICAgIH0KCiAgICAgICAgICBpZiAocmlnaHQgPj0gcy5yaWdodFRhYmxlLmZpcnN0R2x5cGggJiYgcmlnaHQgPCBzLnJpZ2h0VGFibGUuZmlyc3RHbHlwaCArIHMucmlnaHRUYWJsZS5uR2x5cGhzKSB7CiAgICAgICAgICAgIHJpZ2h0T2Zmc2V0ID0gcy5yaWdodFRhYmxlLm9mZnNldHNbcmlnaHQgLSBzLnJpZ2h0VGFibGUuZmlyc3RHbHlwaF07CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIGluZGV4ID0gKGxlZnRPZmZzZXQgKyByaWdodE9mZnNldCAtIHMuYXJyYXkub2ZmKSAvIDI7CiAgICAgICAgICB2YWwgPSBzLmFycmF5LnZhbHVlcy5nZXQoaW5kZXgpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgMzoKICAgICAgICAgIGlmIChsZWZ0ID49IHMuZ2x5cGhDb3VudCB8fCByaWdodCA+PSBzLmdseXBoQ291bnQpIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICB9CgogICAgICAgICAgdmFsID0gcy5rZXJuVmFsdWVbcy5rZXJuSW5kZXhbcy5sZWZ0Q2xhc3NbbGVmdF0gKiBzLnJpZ2h0Q2xhc3NDb3VudCArIHMucmlnaHRDbGFzc1tyaWdodF1dXTsKICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBrZXJuaW5nIHN1Yi10YWJsZSBmb3JtYXQgJyArIHRhYmxlLmZvcm1hdCk7CiAgICAgIH0KCiAgICAgIC8vIE1pY3Jvc29mdCBzdXBwb3J0cyB0aGUgb3ZlcnJpZGUgZmxhZywgd2hpY2ggcmVzZXRzIHRoZSByZXN1bHQKICAgICAgLy8gT3RoZXJ3aXNlLCB0aGUgc3VtIG9mIHRoZSByZXN1bHRzIGZyb20gYWxsIHN1YnRhYmxlcyBpcyByZXR1cm5lZAogICAgICBpZiAodGFibGUuY292ZXJhZ2Uub3ZlcnJpZGUpIHsKICAgICAgICByZXMgPSB2YWw7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVzICs9IHZhbDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiByZXM7CiAgfTsKCiAgcmV0dXJuIEtlcm5Qcm9jZXNzb3I7Cn0oKTsKCi8qKgogKiBUaGlzIGNsYXNzIGlzIHVzZWQgd2hlbiBHUE9TIGRvZXMgbm90IGRlZmluZSAnbWFyaycgb3IgJ21rbWsnIGZlYXR1cmVzCiAqIGZvciBwb3NpdGlvbmluZyBtYXJrcyByZWxhdGl2ZSB0byBiYXNlIGdseXBocy4gSXQgdXNlcyB0aGUgdW5pY29kZQogKiBjb21iaW5pbmcgY2xhc3MgcHJvcGVydHkgdG8gcG9zaXRpb24gbWFya3MuCiAqCiAqIEJhc2VkIG9uIGNvZGUgZnJvbSBIYXJmYnV6eiwgdGhhbmtzIQogKiBodHRwczovL2dpdGh1Yi5jb20vYmVoZGFkL2hhcmZidXp6L2Jsb2IvbWFzdGVyL3NyYy9oYi1vdC1zaGFwZS1mYWxsYmFjay5jYwogKi8KCnZhciBVbmljb2RlTGF5b3V0RW5naW5lID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIFVuaWNvZGVMYXlvdXRFbmdpbmUoZm9udCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFVuaWNvZGVMYXlvdXRFbmdpbmUpOwoKICAgIHRoaXMuZm9udCA9IGZvbnQ7CiAgfQoKICBVbmljb2RlTGF5b3V0RW5naW5lLnByb3RvdHlwZS5wb3NpdGlvbkdseXBocyA9IGZ1bmN0aW9uIHBvc2l0aW9uR2x5cGhzKGdseXBocywgcG9zaXRpb25zKSB7CiAgICAvLyBmaW5kIGVhY2ggYmFzZSArIG1hcmsgY2x1c3RlciwgYW5kIHBvc2l0aW9uIHRoZSBtYXJrcyByZWxhdGl2ZSB0byB0aGUgYmFzZQogICAgdmFyIGNsdXN0ZXJTdGFydCA9IDA7CiAgICB2YXIgY2x1c3RlckVuZCA9IDA7CiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgZ2x5cGhzLmxlbmd0aDsgaW5kZXgrKykgewogICAgICB2YXIgZ2x5cGggPSBnbHlwaHNbaW5kZXhdOwogICAgICBpZiAoZ2x5cGguaXNNYXJrKSB7CiAgICAgICAgLy8gVE9ETzogaGFuZGxlIGxpZ2F0dXJlcwogICAgICAgIGNsdXN0ZXJFbmQgPSBpbmRleDsKICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAoY2x1c3RlclN0YXJ0ICE9PSBjbHVzdGVyRW5kKSB7CiAgICAgICAgICB0aGlzLnBvc2l0aW9uQ2x1c3RlcihnbHlwaHMsIHBvc2l0aW9ucywgY2x1c3RlclN0YXJ0LCBjbHVzdGVyRW5kKTsKICAgICAgICB9CgogICAgICAgIGNsdXN0ZXJTdGFydCA9IGNsdXN0ZXJFbmQgPSBpbmRleDsKICAgICAgfQogICAgfQoKICAgIGlmIChjbHVzdGVyU3RhcnQgIT09IGNsdXN0ZXJFbmQpIHsKICAgICAgdGhpcy5wb3NpdGlvbkNsdXN0ZXIoZ2x5cGhzLCBwb3NpdGlvbnMsIGNsdXN0ZXJTdGFydCwgY2x1c3RlckVuZCk7CiAgICB9CgogICAgcmV0dXJuIHBvc2l0aW9uczsKICB9OwoKICBVbmljb2RlTGF5b3V0RW5naW5lLnByb3RvdHlwZS5wb3NpdGlvbkNsdXN0ZXIgPSBmdW5jdGlvbiBwb3NpdGlvbkNsdXN0ZXIoZ2x5cGhzLCBwb3NpdGlvbnMsIGNsdXN0ZXJTdGFydCwgY2x1c3RlckVuZCkgewogICAgdmFyIGJhc2UgPSBnbHlwaHNbY2x1c3RlclN0YXJ0XTsKICAgIHZhciBiYXNlQm94ID0gYmFzZS5jYm94LmNvcHkoKTsKCiAgICAvLyBhZGp1c3QgYm91bmRpbmcgYm94IGZvciBsaWdhdHVyZSBnbHlwaHMKICAgIGlmIChiYXNlLmNvZGVQb2ludHMubGVuZ3RoID4gMSkgewogICAgICAvLyBMVFIuIFRPRE86IFJUTCBzdXBwb3J0LgogICAgICBiYXNlQm94Lm1pblggKz0gKGJhc2UuY29kZVBvaW50cy5sZW5ndGggLSAxKSAqIGJhc2VCb3gud2lkdGggLyBiYXNlLmNvZGVQb2ludHMubGVuZ3RoOwogICAgfQoKICAgIHZhciB4T2Zmc2V0ID0gLXBvc2l0aW9uc1tjbHVzdGVyU3RhcnRdLnhBZHZhbmNlOwogICAgdmFyIHlPZmZzZXQgPSAwOwogICAgdmFyIHlHYXAgPSB0aGlzLmZvbnQudW5pdHNQZXJFbSAvIDE2OwoKICAgIC8vIHBvc2l0aW9uIGVhY2ggb2YgdGhlIG1hcmsgZ2x5cGhzIHJlbGF0aXZlIHRvIHRoZSBiYXNlIGdseXBoCiAgICBmb3IgKHZhciBpbmRleCA9IGNsdXN0ZXJTdGFydCArIDE7IGluZGV4IDw9IGNsdXN0ZXJFbmQ7IGluZGV4KyspIHsKICAgICAgdmFyIG1hcmsgPSBnbHlwaHNbaW5kZXhdOwogICAgICB2YXIgbWFya0JveCA9IG1hcmsuY2JveDsKICAgICAgdmFyIHBvc2l0aW9uID0gcG9zaXRpb25zW2luZGV4XTsKCiAgICAgIHZhciBjb21iaW5pbmdDbGFzcyA9IHRoaXMuZ2V0Q29tYmluaW5nQ2xhc3MobWFyay5jb2RlUG9pbnRzWzBdKTsKCiAgICAgIGlmIChjb21iaW5pbmdDbGFzcyAhPT0gJ05vdF9SZW9yZGVyZWQnKSB7CiAgICAgICAgcG9zaXRpb24ueE9mZnNldCA9IHBvc2l0aW9uLnlPZmZzZXQgPSAwOwoKICAgICAgICAvLyB4IHBvc2l0aW9uaW5nCiAgICAgICAgc3dpdGNoIChjb21iaW5pbmdDbGFzcykgewogICAgICAgICAgY2FzZSAnRG91YmxlX0Fib3ZlJzoKICAgICAgICAgIGNhc2UgJ0RvdWJsZV9CZWxvdyc6CiAgICAgICAgICAgIC8vIExUUi4gVE9ETzogUlRMIHN1cHBvcnQuCiAgICAgICAgICAgIHBvc2l0aW9uLnhPZmZzZXQgKz0gYmFzZUJveC5taW5YIC0gbWFya0JveC53aWR0aCAvIDIgLSBtYXJrQm94Lm1pblg7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIGNhc2UgJ0F0dGFjaGVkX0JlbG93X0xlZnQnOgogICAgICAgICAgY2FzZSAnQmVsb3dfTGVmdCc6CiAgICAgICAgICBjYXNlICdBYm92ZV9MZWZ0JzoKICAgICAgICAgICAgLy8gbGVmdCBhbGlnbgogICAgICAgICAgICBwb3NpdGlvbi54T2Zmc2V0ICs9IGJhc2VCb3gubWluWCAtIG1hcmtCb3gubWluWDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgY2FzZSAnQXR0YWNoZWRfQWJvdmVfUmlnaHQnOgogICAgICAgICAgY2FzZSAnQmVsb3dfUmlnaHQnOgogICAgICAgICAgY2FzZSAnQWJvdmVfUmlnaHQnOgogICAgICAgICAgICAvLyByaWdodCBhbGlnbgogICAgICAgICAgICBwb3NpdGlvbi54T2Zmc2V0ICs9IGJhc2VCb3gubWF4WCAtIG1hcmtCb3gud2lkdGggLSBtYXJrQm94Lm1pblg7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIC8vIEF0dGFjaGVkX0JlbG93LCBBdHRhY2hlZF9BYm92ZSwgQmVsb3csIEFib3ZlLCBvdGhlcgogICAgICAgICAgICAvLyBjZW50ZXIgYWxpZ24KICAgICAgICAgICAgcG9zaXRpb24ueE9mZnNldCArPSBiYXNlQm94Lm1pblggKyAoYmFzZUJveC53aWR0aCAtIG1hcmtCb3gud2lkdGgpIC8gMiAtIG1hcmtCb3gubWluWDsKICAgICAgICB9CgogICAgICAgIC8vIHkgcG9zaXRpb25pbmcKICAgICAgICBzd2l0Y2ggKGNvbWJpbmluZ0NsYXNzKSB7CiAgICAgICAgICBjYXNlICdEb3VibGVfQmVsb3cnOgogICAgICAgICAgY2FzZSAnQmVsb3dfTGVmdCc6CiAgICAgICAgICBjYXNlICdCZWxvdyc6CiAgICAgICAgICBjYXNlICdCZWxvd19SaWdodCc6CiAgICAgICAgICBjYXNlICdBdHRhY2hlZF9CZWxvd19MZWZ0JzoKICAgICAgICAgIGNhc2UgJ0F0dGFjaGVkX0JlbG93JzoKICAgICAgICAgICAgLy8gYWRkIGEgc21hbGwgZ2FwIGJldHdlZW4gdGhlIGdseXBocyBpZiB0aGV5IGFyZSBub3QgYXR0YWNoZWQKICAgICAgICAgICAgaWYgKGNvbWJpbmluZ0NsYXNzID09PSAnQXR0YWNoZWRfQmVsb3dfTGVmdCcgfHwgY29tYmluaW5nQ2xhc3MgPT09ICdBdHRhY2hlZF9CZWxvdycpIHsKICAgICAgICAgICAgICBiYXNlQm94Lm1pblkgKz0geUdhcDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcG9zaXRpb24ueU9mZnNldCA9IC1iYXNlQm94Lm1pblkgLSBtYXJrQm94Lm1heFk7CiAgICAgICAgICAgIGJhc2VCb3gubWluWSArPSBtYXJrQm94LmhlaWdodDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgY2FzZSAnRG91YmxlX0Fib3ZlJzoKICAgICAgICAgIGNhc2UgJ0Fib3ZlX0xlZnQnOgogICAgICAgICAgY2FzZSAnQWJvdmUnOgogICAgICAgICAgY2FzZSAnQWJvdmVfUmlnaHQnOgogICAgICAgICAgY2FzZSAnQXR0YWNoZWRfQWJvdmUnOgogICAgICAgICAgY2FzZSAnQXR0YWNoZWRfQWJvdmVfUmlnaHQnOgogICAgICAgICAgICAvLyBhZGQgYSBzbWFsbCBnYXAgYmV0d2VlbiB0aGUgZ2x5cGhzIGlmIHRoZXkgYXJlIG5vdCBhdHRhY2hlZAogICAgICAgICAgICBpZiAoY29tYmluaW5nQ2xhc3MgPT09ICdBdHRhY2hlZF9BYm92ZScgfHwgY29tYmluaW5nQ2xhc3MgPT09ICdBdHRhY2hlZF9BYm92ZV9SaWdodCcpIHsKICAgICAgICAgICAgICBiYXNlQm94Lm1heFkgKz0geUdhcDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcG9zaXRpb24ueU9mZnNldCA9IGJhc2VCb3gubWF4WSAtIG1hcmtCb3gubWluWTsKICAgICAgICAgICAgYmFzZUJveC5tYXhZICs9IG1hcmtCb3guaGVpZ2h0OwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIHBvc2l0aW9uLnhBZHZhbmNlID0gcG9zaXRpb24ueUFkdmFuY2UgPSAwOwogICAgICAgIHBvc2l0aW9uLnhPZmZzZXQgKz0geE9mZnNldDsKICAgICAgICBwb3NpdGlvbi55T2Zmc2V0ICs9IHlPZmZzZXQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgeE9mZnNldCAtPSBwb3NpdGlvbi54QWR2YW5jZTsKICAgICAgICB5T2Zmc2V0IC09IHBvc2l0aW9uLnlBZHZhbmNlOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuOwogIH07CgogIFVuaWNvZGVMYXlvdXRFbmdpbmUucHJvdG90eXBlLmdldENvbWJpbmluZ0NsYXNzID0gZnVuY3Rpb24gZ2V0Q29tYmluaW5nQ2xhc3MoY29kZVBvaW50KSB7CiAgICB2YXIgY29tYmluaW5nQ2xhc3MgPSB1bmljb2RlLmdldENvbWJpbmluZ0NsYXNzKGNvZGVQb2ludCk7CgogICAgLy8gVGhhaSAvIExhbyBuZWVkIHNvbWUgcGVyLWNoYXJhY3RlciB3b3JrCiAgICBpZiAoKGNvZGVQb2ludCAmIH4weGZmKSA9PT0gMHgwZTAwKSB7CiAgICAgIGlmIChjb21iaW5pbmdDbGFzcyA9PT0gJ05vdF9SZW9yZGVyZWQnKSB7CiAgICAgICAgc3dpdGNoIChjb2RlUG9pbnQpIHsKICAgICAgICAgIGNhc2UgMHgwZTMxOgogICAgICAgICAgY2FzZSAweDBlMzQ6CiAgICAgICAgICBjYXNlIDB4MGUzNToKICAgICAgICAgIGNhc2UgMHgwZTM2OgogICAgICAgICAgY2FzZSAweDBlMzc6CiAgICAgICAgICBjYXNlIDB4MGU0NzoKICAgICAgICAgIGNhc2UgMHgwZTRjOgogICAgICAgICAgY2FzZSAweDBlM2Q6CiAgICAgICAgICBjYXNlIDB4MGU0ZToKICAgICAgICAgICAgcmV0dXJuICdBYm92ZV9SaWdodCc7CgogICAgICAgICAgY2FzZSAweDBlYjE6CiAgICAgICAgICBjYXNlIDB4MGViNDoKICAgICAgICAgIGNhc2UgMHgwZWI1OgogICAgICAgICAgY2FzZSAweDBlYjY6CiAgICAgICAgICBjYXNlIDB4MGViNzoKICAgICAgICAgIGNhc2UgMHgwZWJiOgogICAgICAgICAgY2FzZSAweDBlY2M6CiAgICAgICAgICBjYXNlIDB4MGVjZDoKICAgICAgICAgICAgcmV0dXJuICdBYm92ZSc7CgogICAgICAgICAgY2FzZSAweDBlYmM6CiAgICAgICAgICAgIHJldHVybiAnQmVsb3cnOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPT09IDB4MGUzYSkgewogICAgICAgIC8vIHZpcmFtYQogICAgICAgIHJldHVybiAnQmVsb3dfUmlnaHQnOwogICAgICB9CiAgICB9CgogICAgc3dpdGNoIChjb21iaW5pbmdDbGFzcykgewogICAgICAvLyBIZWJyZXcKCiAgICAgIGNhc2UgJ0NDQzEwJzogLy8gc2hldmEKICAgICAgY2FzZSAnQ0NDMTEnOiAvLyBoYXRhZiBzZWdvbAogICAgICBjYXNlICdDQ0MxMic6IC8vIGhhdGFmIHBhdGFoCiAgICAgIGNhc2UgJ0NDQzEzJzogLy8gaGF0YWYgcWFtYXRzCiAgICAgIGNhc2UgJ0NDQzE0JzogLy8gaGlyaXEKICAgICAgY2FzZSAnQ0NDMTUnOiAvLyB0c2VyZQogICAgICBjYXNlICdDQ0MxNic6IC8vIHNlZ29sCiAgICAgIGNhc2UgJ0NDQzE3JzogLy8gcGF0YWgKICAgICAgY2FzZSAnQ0NDMTgnOiAvLyBxYW1hdHMKICAgICAgY2FzZSAnQ0NDMjAnOiAvLyBxdWJ1dHMKICAgICAgY2FzZSAnQ0NDMjInOgogICAgICAgIC8vIG1ldGVnCiAgICAgICAgcmV0dXJuICdCZWxvdyc7CgogICAgICBjYXNlICdDQ0MyMyc6CiAgICAgICAgLy8gcmFmZQogICAgICAgIHJldHVybiAnQXR0YWNoZWRfQWJvdmUnOwoKICAgICAgY2FzZSAnQ0NDMjQnOgogICAgICAgIC8vIHNoaW4gZG90CiAgICAgICAgcmV0dXJuICdBYm92ZV9SaWdodCc7CgogICAgICBjYXNlICdDQ0MyNSc6IC8vIHNpbiBkb3QKICAgICAgY2FzZSAnQ0NDMTknOgogICAgICAgIC8vIGhvbGFtCiAgICAgICAgcmV0dXJuICdBYm92ZV9MZWZ0JzsKCiAgICAgIGNhc2UgJ0NDQzI2JzoKICAgICAgICAvLyBwb2ludCB2YXJpa2EKICAgICAgICByZXR1cm4gJ0Fib3ZlJzsKCiAgICAgIGNhc2UgJ0NDQzIxJzoKICAgICAgICAvLyBkYWdlc2gKICAgICAgICBicmVhazsKCiAgICAgIC8vIEFyYWJpYyBhbmQgU3lyaWFjCgogICAgICBjYXNlICdDQ0MyNyc6IC8vIGZhdGhhdGFuCiAgICAgIGNhc2UgJ0NDQzI4JzogLy8gZGFtbWF0YW4KICAgICAgY2FzZSAnQ0NDMzAnOiAvLyBmYXRoYQogICAgICBjYXNlICdDQ0MzMSc6IC8vIGRhbW1hCiAgICAgIGNhc2UgJ0NDQzMzJzogLy8gc2hhZGRhCiAgICAgIGNhc2UgJ0NDQzM0JzogLy8gc3VrdW4KICAgICAgY2FzZSAnQ0NDMzUnOiAvLyBzdXBlcnNjcmlwdCBhbGVmCiAgICAgIGNhc2UgJ0NDQzM2JzoKICAgICAgICAvLyBzdXBlcnNjcmlwdCBhbGFwaAogICAgICAgIHJldHVybiAnQWJvdmUnOwoKICAgICAgY2FzZSAnQ0NDMjknOiAvLyBrYXNyYXRhbgogICAgICBjYXNlICdDQ0MzMic6CiAgICAgICAgLy8ga2FzcmEKICAgICAgICByZXR1cm4gJ0JlbG93JzsKCiAgICAgIC8vIFRoYWkKCiAgICAgIGNhc2UgJ0NDQzEwMyc6CiAgICAgICAgLy8gc2FyYSB1IC8gc2FyYSB1dQogICAgICAgIHJldHVybiAnQmVsb3dfUmlnaHQnOwoKICAgICAgY2FzZSAnQ0NDMTA3JzoKICAgICAgICAvLyBtYWkKICAgICAgICByZXR1cm4gJ0Fib3ZlX1JpZ2h0JzsKCiAgICAgIC8vIExhbwoKICAgICAgY2FzZSAnQ0NDMTE4JzoKICAgICAgICAvLyBzaWduIHUgLyBzaWduIHV1CiAgICAgICAgcmV0dXJuICdCZWxvdyc7CgogICAgICBjYXNlICdDQ0MxMjInOgogICAgICAgIC8vIG1haQogICAgICAgIHJldHVybiAnQWJvdmUnOwoKICAgICAgLy8gVGliZXRhbgoKICAgICAgY2FzZSAnQ0NDMTI5JzogLy8gc2lnbiBhYQogICAgICBjYXNlICdDQ0MxMzInOgogICAgICAgIC8vIHNpZ24gdQogICAgICAgIHJldHVybiAnQmVsb3cnOwoKICAgICAgY2FzZSAnQ0NDMTMwJzoKICAgICAgICAvLyBzaWduIGkKICAgICAgICByZXR1cm4gJ0Fib3ZlJzsKICAgIH0KCiAgICByZXR1cm4gY29tYmluaW5nQ2xhc3M7CiAgfTsKCiAgcmV0dXJuIFVuaWNvZGVMYXlvdXRFbmdpbmU7Cn0oKTsKCi8qKgogKiBSZXByZXNlbnRzIGEgZ2x5cGggYm91bmRpbmcgYm94CiAqLwp2YXIgQkJveCA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBCQm94KCkgewogICAgdmFyIG1pblggPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IEluZmluaXR5OwogICAgdmFyIG1pblkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IEluZmluaXR5OwogICAgdmFyIG1heFggPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IC1JbmZpbml0eTsKICAgIHZhciBtYXhZID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiAtSW5maW5pdHk7CgogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJCb3gpOwoKICAgIC8qKgogICAgICogVGhlIG1pbmltdW0gWCBwb3NpdGlvbiBpbiB0aGUgYm91bmRpbmcgYm94CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICB0aGlzLm1pblggPSBtaW5YOwoKICAgIC8qKgogICAgICogVGhlIG1pbmltdW0gWSBwb3NpdGlvbiBpbiB0aGUgYm91bmRpbmcgYm94CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICB0aGlzLm1pblkgPSBtaW5ZOwoKICAgIC8qKgogICAgICogVGhlIG1heG1pbXVtIFggcG9zaXRpb24gaW4gdGhlIGJvdW5kaW5nIGJveAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwogICAgdGhpcy5tYXhYID0gbWF4WDsKCiAgICAvKioKICAgICAqIFRoZSBtYXhtaW11bSBZIHBvc2l0aW9uIGluIHRoZSBib3VuZGluZyBib3gKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KICAgIHRoaXMubWF4WSA9IG1heFk7CiAgfQoKICAvKioKICAgKiBUaGUgd2lkdGggb2YgdGhlIGJvdW5kaW5nIGJveAogICAqIEB0eXBlIHtudW1iZXJ9CiAgICovCgoKICBCQm94LnByb3RvdHlwZS5hZGRQb2ludCA9IGZ1bmN0aW9uIGFkZFBvaW50KHgsIHkpIHsKICAgIGlmIChNYXRoLmFicyh4KSAhPT0gSW5maW5pdHkpIHsKICAgICAgaWYgKHggPCB0aGlzLm1pblgpIHsKICAgICAgICB0aGlzLm1pblggPSB4OwogICAgICB9CgogICAgICBpZiAoeCA+IHRoaXMubWF4WCkgewogICAgICAgIHRoaXMubWF4WCA9IHg7CiAgICAgIH0KICAgIH0KCiAgICBpZiAoTWF0aC5hYnMoeSkgIT09IEluZmluaXR5KSB7CiAgICAgIGlmICh5IDwgdGhpcy5taW5ZKSB7CiAgICAgICAgdGhpcy5taW5ZID0geTsKICAgICAgfQoKICAgICAgaWYgKHkgPiB0aGlzLm1heFkpIHsKICAgICAgICB0aGlzLm1heFkgPSB5OwogICAgICB9CiAgICB9CiAgfTsKCiAgQkJveC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkoKSB7CiAgICByZXR1cm4gbmV3IEJCb3godGhpcy5taW5YLCB0aGlzLm1pblksIHRoaXMubWF4WCwgdGhpcy5tYXhZKTsKICB9OwoKICBfY3JlYXRlQ2xhc3MoQkJveCwgW3sKICAgIGtleTogIndpZHRoIiwKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5tYXhYIC0gdGhpcy5taW5YOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGhlaWdodCBvZiB0aGUgYm91bmRpbmcgYm94CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCgogIH0sIHsKICAgIGtleTogImhlaWdodCIsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMubWF4WSAtIHRoaXMubWluWTsKICAgIH0KICB9XSk7CgogIHJldHVybiBCQm94Owp9KCk7CgovLyBUaGlzIG1hcHMgdGhlIFVuaWNvZGUgU2NyaXB0IHByb3BlcnR5IHRvIGFuIE9wZW5UeXBlIHNjcmlwdCB0YWcKLy8gRGF0YSBmcm9tIGh0dHA6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L290c3BlYy9zY3JpcHR0YWdzLmh0bQovLyBhbmQgaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvVU5JREFUQS9Qcm9wZXJ0eVZhbHVlQWxpYXNlcy50eHQuCnZhciBVTklDT0RFX1NDUklQVFMgPSB7CiAgQ2F1Y2FzaWFuX0FsYmFuaWFuOiAnYWdoYicsCiAgQXJhYmljOiAnYXJhYicsCiAgSW1wZXJpYWxfQXJhbWFpYzogJ2FybWknLAogIEFybWVuaWFuOiAnYXJtbicsCiAgQXZlc3RhbjogJ2F2c3QnLAogIEJhbGluZXNlOiAnYmFsaScsCiAgQmFtdW06ICdiYW11JywKICBCYXNzYV9WYWg6ICdiYXNzJywKICBCYXRhazogJ2JhdGsnLAogIEJlbmdhbGk6IFsnYm5nMicsICdiZW5nJ10sCiAgQm9wb21vZm86ICdib3BvJywKICBCcmFobWk6ICdicmFoJywKICBCcmFpbGxlOiAnYnJhaScsCiAgQnVnaW5lc2U6ICdidWdpJywKICBCdWhpZDogJ2J1aGQnLAogIENoYWttYTogJ2Nha20nLAogIENhbmFkaWFuX0Fib3JpZ2luYWw6ICdjYW5zJywKICBDYXJpYW46ICdjYXJpJywKICBDaGFtOiAnY2hhbScsCiAgQ2hlcm9rZWU6ICdjaGVyJywKICBDb3B0aWM6ICdjb3B0JywKICBDeXByaW90OiAnY3BydCcsCiAgQ3lyaWxsaWM6ICdjeXJsJywKICBEZXZhbmFnYXJpOiBbJ2RldjInLCAnZGV2YSddLAogIERlc2VyZXQ6ICdkc3J0JywKICBEdXBsb3lhbjogJ2R1cGwnLAogIEVneXB0aWFuX0hpZXJvZ2x5cGhzOiAnZWd5cCcsCiAgRWxiYXNhbjogJ2VsYmEnLAogIEV0aGlvcGljOiAnZXRoaScsCiAgR2VvcmdpYW46ICdnZW9yJywKICBHbGFnb2xpdGljOiAnZ2xhZycsCiAgR290aGljOiAnZ290aCcsCiAgR3JhbnRoYTogJ2dyYW4nLAogIEdyZWVrOiAnZ3JlaycsCiAgR3VqYXJhdGk6IFsnZ2pyMicsICdndWpyJ10sCiAgR3VybXVraGk6IFsnZ3VyMicsICdndXJ1J10sCiAgSGFuZ3VsOiAnaGFuZycsCiAgSGFuOiAnaGFuaScsCiAgSGFudW5vbzogJ2hhbm8nLAogIEhlYnJldzogJ2hlYnInLAogIEhpcmFnYW5hOiAnaGlyYScsCiAgUGFoYXdoX0htb25nOiAnaG1uZycsCiAgS2F0YWthbmFfT3JfSGlyYWdhbmE6ICdocmt0JywKICBPbGRfSXRhbGljOiAnaXRhbCcsCiAgSmF2YW5lc2U6ICdqYXZhJywKICBLYXlhaF9MaTogJ2thbGknLAogIEthdGFrYW5hOiAna2FuYScsCiAgS2hhcm9zaHRoaTogJ2toYXInLAogIEtobWVyOiAna2htcicsCiAgS2hvamtpOiAna2hvaicsCiAgS2FubmFkYTogWydrbmQyJywgJ2tuZGEnXSwKICBLYWl0aGk6ICdrdGhpJywKICBUYWlfVGhhbTogJ2xhbmEnLAogIExhbzogJ2xhbyAnLAogIExhdGluOiAnbGF0bicsCiAgTGVwY2hhOiAnbGVwYycsCiAgTGltYnU6ICdsaW1iJywKICBMaW5lYXJfQTogJ2xpbmEnLAogIExpbmVhcl9COiAnbGluYicsCiAgTGlzdTogJ2xpc3UnLAogIEx5Y2lhbjogJ2x5Y2knLAogIEx5ZGlhbjogJ2x5ZGknLAogIE1haGFqYW5pOiAnbWFoaicsCiAgTWFuZGFpYzogJ21hbmQnLAogIE1hbmljaGFlYW46ICdtYW5pJywKICBNZW5kZV9LaWtha3VpOiAnbWVuZCcsCiAgTWVyb2l0aWNfQ3Vyc2l2ZTogJ21lcmMnLAogIE1lcm9pdGljX0hpZXJvZ2x5cGhzOiAnbWVybycsCiAgTWFsYXlhbGFtOiBbJ21sbTInLCAnbWx5bSddLAogIE1vZGk6ICdtb2RpJywKICBNb25nb2xpYW46ICdtb25nJywKICBNcm86ICdtcm9vJywKICBNZWV0ZWlfTWF5ZWs6ICdtdGVpJywKICBNeWFubWFyOiBbJ215bTInLCAnbXltciddLAogIE9sZF9Ob3J0aF9BcmFiaWFuOiAnbmFyYicsCiAgTmFiYXRhZWFuOiAnbmJhdCcsCiAgTmtvOiAnbmtvICcsCiAgT2doYW06ICdvZ2FtJywKICBPbF9DaGlraTogJ29sY2snLAogIE9sZF9UdXJraWM6ICdvcmtoJywKICBPcml5YTogWydvcnkyJywgJ29yeWEnXSwKICBPc21hbnlhOiAnb3NtYScsCiAgUGFsbXlyZW5lOiAncGFsbScsCiAgUGF1X0Npbl9IYXU6ICdwYXVjJywKICBPbGRfUGVybWljOiAncGVybScsCiAgUGhhZ3NfUGE6ICdwaGFnJywKICBJbnNjcmlwdGlvbmFsX1BhaGxhdmk6ICdwaGxpJywKICBQc2FsdGVyX1BhaGxhdmk6ICdwaGxwJywKICBQaG9lbmljaWFuOiAncGhueCcsCiAgTWlhbzogJ3BscmQnLAogIEluc2NyaXB0aW9uYWxfUGFydGhpYW46ICdwcnRpJywKICBSZWphbmc6ICdyam5nJywKICBSdW5pYzogJ3J1bnInLAogIFNhbWFyaXRhbjogJ3NhbXInLAogIE9sZF9Tb3V0aF9BcmFiaWFuOiAnc2FyYicsCiAgU2F1cmFzaHRyYTogJ3NhdXInLAogIFNoYXZpYW46ICdzaGF3JywKICBTaGFyYWRhOiAnc2hyZCcsCiAgU2lkZGhhbTogJ3NpZGQnLAogIEtodWRhd2FkaTogJ3NpbmQnLAogIFNpbmhhbGE6ICdzaW5oJywKICBTb3JhX1NvbXBlbmc6ICdzb3JhJywKICBTdW5kYW5lc2U6ICdzdW5kJywKICBTeWxvdGlfTmFncmk6ICdzeWxvJywKICBTeXJpYWM6ICdzeXJjJywKICBUYWdiYW53YTogJ3RhZ2InLAogIFRha3JpOiAndGFrcicsCiAgVGFpX0xlOiAndGFsZScsCiAgTmV3X1RhaV9MdWU6ICd0YWx1JywKICBUYW1pbDogWyd0bWwyJywgJ3RhbWwnXSwKICBUYWlfVmlldDogJ3RhdnQnLAogIFRlbHVndTogWyd0ZWwyJywgJ3RlbHUnXSwKICBUaWZpbmFnaDogJ3RmbmcnLAogIFRhZ2Fsb2c6ICd0Z2xnJywKICBUaGFhbmE6ICd0aGFhJywKICBUaGFpOiAndGhhaScsCiAgVGliZXRhbjogJ3RpYnQnLAogIFRpcmh1dGE6ICd0aXJoJywKICBVZ2FyaXRpYzogJ3VnYXInLAogIFZhaTogJ3ZhaSAnLAogIFdhcmFuZ19DaXRpOiAnd2FyYScsCiAgT2xkX1BlcnNpYW46ICd4cGVvJywKICBDdW5laWZvcm06ICd4c3V4JywKICBZaTogJ3lpICAnLAogIEluaGVyaXRlZDogJ3ppbmgnLAogIENvbW1vbjogJ3p5eXknLAogIFVua25vd246ICd6enp6Jwp9OwoKdmFyIE9QRU5UWVBFX1NDUklQVFMgPSB7fTsKZm9yICh2YXIgc2NyaXB0IGluIFVOSUNPREVfU0NSSVBUUykgewogIHZhciB0YWcgPSBVTklDT0RFX1NDUklQVFNbc2NyaXB0XTsKICBpZiAoQXJyYXkuaXNBcnJheSh0YWcpKSB7CiAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSB0YWcsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICB2YXIgX3JlZjsKCiAgICAgIGlmIChfaXNBcnJheSkgewogICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgdCA9IF9yZWY7CgogICAgICBPUEVOVFlQRV9TQ1JJUFRTW3RdID0gc2NyaXB0OwogICAgfQogIH0gZWxzZSB7CiAgICBPUEVOVFlQRV9TQ1JJUFRTW3RhZ10gPSBzY3JpcHQ7CiAgfQp9CgpmdW5jdGlvbiBmcm9tT3BlblR5cGUodGFnKSB7CiAgcmV0dXJuIE9QRU5UWVBFX1NDUklQVFNbdGFnXTsKfQoKZnVuY3Rpb24gZm9yU3RyaW5nKHN0cmluZykgewogIHZhciBsZW4gPSBzdHJpbmcubGVuZ3RoOwogIHZhciBpZHggPSAwOwogIHdoaWxlIChpZHggPCBsZW4pIHsKICAgIHZhciBjb2RlID0gc3RyaW5nLmNoYXJDb2RlQXQoaWR4KyspOwoKICAgIC8vIENoZWNrIGlmIHRoaXMgaXMgYSBoaWdoIHN1cnJvZ2F0ZQogICAgaWYgKDB4ZDgwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHhkYmZmICYmIGlkeCA8IGxlbikgewogICAgICB2YXIgbmV4dCA9IHN0cmluZy5jaGFyQ29kZUF0KGlkeCk7CgogICAgICAvLyBDaGVjayBpZiB0aGlzIGlzIGEgbG93IHN1cnJvZ2F0ZQogICAgICBpZiAoMHhkYzAwIDw9IG5leHQgJiYgbmV4dCA8PSAweGRmZmYpIHsKICAgICAgICBpZHgrKzsKICAgICAgICBjb2RlID0gKChjb2RlICYgMHgzRkYpIDw8IDEwKSArIChuZXh0ICYgMHgzRkYpICsgMHgxMDAwMDsKICAgICAgfQogICAgfQoKICAgIHZhciBfc2NyaXB0ID0gdW5pY29kZS5nZXRTY3JpcHQoY29kZSk7CiAgICBpZiAoX3NjcmlwdCAhPT0gJ0NvbW1vbicgJiYgX3NjcmlwdCAhPT0gJ0luaGVyaXRlZCcgJiYgX3NjcmlwdCAhPT0gJ1Vua25vd24nKSB7CiAgICAgIHJldHVybiBVTklDT0RFX1NDUklQVFNbX3NjcmlwdF07CiAgICB9CiAgfQoKICByZXR1cm4gVU5JQ09ERV9TQ1JJUFRTLlVua25vd247Cn0KCmZ1bmN0aW9uIGZvckNvZGVQb2ludHMoY29kZVBvaW50cykgewogIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZVBvaW50cy5sZW5ndGg7IGkrKykgewogICAgdmFyIGNvZGVQb2ludCA9IGNvZGVQb2ludHNbaV07CiAgICB2YXIgX3NjcmlwdDIgPSB1bmljb2RlLmdldFNjcmlwdChjb2RlUG9pbnQpOwogICAgaWYgKF9zY3JpcHQyICE9PSAnQ29tbW9uJyAmJiBfc2NyaXB0MiAhPT0gJ0luaGVyaXRlZCcgJiYgX3NjcmlwdDIgIT09ICdVbmtub3duJykgewogICAgICByZXR1cm4gVU5JQ09ERV9TQ1JJUFRTW19zY3JpcHQyXTsKICAgIH0KICB9CgogIHJldHVybiBVTklDT0RFX1NDUklQVFMuVW5rbm93bjsKfQoKLy8gVGhlIHNjcmlwdHMgaW4gdGhpcyBtYXAgYXJlIHdyaXR0ZW4gZnJvbSByaWdodCB0byBsZWZ0CnZhciBSVEwgPSB7CiAgYXJhYjogdHJ1ZSwgLy8gQXJhYmljCiAgaGVicjogdHJ1ZSwgLy8gSGVicmV3CiAgc3lyYzogdHJ1ZSwgLy8gU3lyaWFjCiAgdGhhYTogdHJ1ZSwgLy8gVGhhYW5hCiAgY3BydDogdHJ1ZSwgLy8gQ3lwcmlvdCBTeWxsYWJhcnkKICBraGFyOiB0cnVlLCAvLyBLaGFyb3N0aGkKICBwaG54OiB0cnVlLCAvLyBQaG9lbmljaWFuCiAgJ25rbyAnOiB0cnVlLCAvLyBOJ0tvCiAgbHlkaTogdHJ1ZSwgLy8gTHlkaWFuCiAgYXZzdDogdHJ1ZSwgLy8gQXZlc3RhbgogIGFybWk6IHRydWUsIC8vIEltcGVyaWFsIEFyYW1haWMKICBwaGxpOiB0cnVlLCAvLyBJbnNjcmlwdGlvbmFsIFBhaGxhdmkKICBwcnRpOiB0cnVlLCAvLyBJbnNjcmlwdGlvbmFsIFBhcnRoaWFuCiAgc2FyYjogdHJ1ZSwgLy8gT2xkIFNvdXRoIEFyYWJpYW4KICBvcmtoOiB0cnVlLCAvLyBPbGQgVHVya2ljLCBPcmtob24gUnVuaWMKICBzYW1yOiB0cnVlLCAvLyBTYW1hcml0YW4KICBtYW5kOiB0cnVlLCAvLyBNYW5kYWljLCBNYW5kYWVhbgogIG1lcmM6IHRydWUsIC8vIE1lcm9pdGljIEN1cnNpdmUKICBtZXJvOiB0cnVlLCAvLyBNZXJvaXRpYyBIaWVyb2dseXBocwoKICAvLyBVbmljb2RlIDcuMCAobm90IGxpc3RlZCBvbiBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9vdHNwZWMvc2NyaXB0dGFncy5odG0pCiAgbWFuaTogdHJ1ZSwgLy8gTWFuaWNoYWVhbgogIG1lbmQ6IHRydWUsIC8vIE1lbmRlIEtpa2FrdWkKICBuYmF0OiB0cnVlLCAvLyBOYWJhdGFlYW4KICBuYXJiOiB0cnVlLCAvLyBPbGQgTm9ydGggQXJhYmlhbgogIHBhbG06IHRydWUsIC8vIFBhbG15cmVuZQogIHBobHA6IHRydWUgLy8gUHNhbHRlciBQYWhsYXZpCn07CgpmdW5jdGlvbiBkaXJlY3Rpb24oc2NyaXB0KSB7CiAgaWYgKFJUTFtzY3JpcHRdKSB7CiAgICByZXR1cm4gJ3J0bCc7CiAgfQoKICByZXR1cm4gJ2x0cic7Cn0KCi8qKgogKiBSZXByZXNlbnRzIGEgcnVuIG9mIEdseXBoIGFuZCBHbHlwaFBvc2l0aW9uIG9iamVjdHMuCiAqIFJldHVybmVkIGJ5IHRoZSBmb250IGxheW91dCBtZXRob2QuCiAqLwoKdmFyIEdseXBoUnVuID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIEdseXBoUnVuKGdseXBocywgZmVhdHVyZXMsIHNjcmlwdCwgbGFuZ3VhZ2UsIGRpcmVjdGlvbiQkKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2x5cGhSdW4pOwoKICAgIC8qKgogICAgICogQW4gYXJyYXkgb2YgR2x5cGggb2JqZWN0cyBpbiB0aGUgcnVuCiAgICAgKiBAdHlwZSB7R2x5cGhbXX0KICAgICAqLwogICAgdGhpcy5nbHlwaHMgPSBnbHlwaHM7CgogICAgLyoqCiAgICAgKiBBbiBhcnJheSBvZiBHbHlwaFBvc2l0aW9uIG9iamVjdHMgZm9yIGVhY2ggZ2x5cGggaW4gdGhlIHJ1bgogICAgICogQHR5cGUge0dseXBoUG9zaXRpb25bXX0KICAgICAqLwogICAgdGhpcy5wb3NpdGlvbnMgPSBudWxsOwoKICAgIC8qKgogICAgICogVGhlIHNjcmlwdCB0aGF0IHdhcyByZXF1ZXN0ZWQgZm9yIHNoYXBpbmcuIFRoaXMgd2FzIGVpdGhlciBwYXNzZWQgaW4gb3IgZGV0ZWN0ZWQgYXV0b21hdGljYWxseS4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHRoaXMuc2NyaXB0ID0gc2NyaXB0OwoKICAgIC8qKgogICAgICogVGhlIGxhbmd1YWdlIHJlcXVlc3RlZCBmb3Igc2hhcGluZywgYXMgcGFzc2VkIGluLiBJZiBgbnVsbGAsIHRoZSBkZWZhdWx0IGxhbmd1YWdlIGZvciB0aGUKICAgICAqIHNjcmlwdCB3YXMgdXNlZC4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5ndWFnZSB8fCBudWxsOwoKICAgIC8qKgogICAgICogVGhlIGRpcmVjdGlvbiByZXF1ZXN0ZWQgZm9yIHNoYXBpbmcsIGFzIHBhc3NlZCBpbiAoZWl0aGVyIGx0ciBvciBydGwpLgogICAgICogSWYgYG51bGxgLCB0aGUgZGVmYXVsdCBkaXJlY3Rpb24gb2YgdGhlIHNjcmlwdCBpcyB1c2VkLgogICAgICogQHR5cGUge3N0cmluZ30KICAgICAqLwogICAgdGhpcy5kaXJlY3Rpb24gPSBkaXJlY3Rpb24kJCB8fCBkaXJlY3Rpb24oc2NyaXB0KTsKCiAgICAvKioKICAgICAqIFRoZSBmZWF0dXJlcyByZXF1ZXN0ZWQgZHVyaW5nIHNoYXBpbmcuIFRoaXMgaXMgYSBjb21iaW5hdGlvbiBvZiB1c2VyCiAgICAgKiBzcGVjaWZpZWQgZmVhdHVyZXMgYW5kIGZlYXR1cmVzIGNob3NlbiBieSB0aGUgc2hhcGVyLgogICAgICogQHR5cGUge29iamVjdH0KICAgICAqLwogICAgdGhpcy5mZWF0dXJlcyA9IHt9OwoKICAgIC8vIENvbnZlcnQgZmVhdHVyZXMgdG8gYW4gb2JqZWN0CiAgICBpZiAoQXJyYXkuaXNBcnJheShmZWF0dXJlcykpIHsKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gZmVhdHVyZXMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICAgIHZhciBfcmVmOwoKICAgICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciB0YWcgPSBfcmVmOwoKICAgICAgICB0aGlzLmZlYXR1cmVzW3RhZ10gPSB0cnVlOwogICAgICB9CiAgICB9IGVsc2UgaWYgKCh0eXBlb2YgZmVhdHVyZXMgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKGZlYXR1cmVzKSkgPT09ICdvYmplY3QnKSB7CiAgICAgIHRoaXMuZmVhdHVyZXMgPSBmZWF0dXJlczsKICAgIH0KICB9CgogIC8qKgogICAqIFRoZSB0b3RhbCBhZHZhbmNlIHdpZHRoIG9mIHRoZSBydW4uCiAgICogQHR5cGUge251bWJlcn0KICAgKi8KCgogIF9jcmVhdGVDbGFzcyhHbHlwaFJ1biwgW3sKICAgIGtleTogJ2FkdmFuY2VXaWR0aCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgdmFyIHdpZHRoID0gMDsKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IHRoaXMucG9zaXRpb25zLCBfaXNBcnJheTIgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjIpLCBfaTIgPSAwLCBfaXRlcmF0b3IyID0gX2lzQXJyYXkyID8gX2l0ZXJhdG9yMiA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IyKTs7KSB7CiAgICAgICAgdmFyIF9yZWYyOwoKICAgICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgICBpZiAoX2kyID49IF9pdGVyYXRvcjIubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWYyID0gX2l0ZXJhdG9yMltfaTIrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pMiA9IF9pdGVyYXRvcjIubmV4dCgpOwogICAgICAgICAgaWYgKF9pMi5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHBvc2l0aW9uID0gX3JlZjI7CgogICAgICAgIHdpZHRoICs9IHBvc2l0aW9uLnhBZHZhbmNlOwogICAgICB9CgogICAgICByZXR1cm4gd2lkdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgdG90YWwgYWR2YW5jZSBoZWlnaHQgb2YgdGhlIHJ1bi4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnYWR2YW5jZUhlaWdodCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgdmFyIGhlaWdodCA9IDA7CiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSB0aGlzLnBvc2l0aW9ucywgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICAgIHZhciBfcmVmMzsKCiAgICAgICAgaWYgKF9pc0FycmF5MykgewogICAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pdGVyYXRvcjNbX2kzKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICAgIGlmIChfaTMuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pMy52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBwb3NpdGlvbiA9IF9yZWYzOwoKICAgICAgICBoZWlnaHQgKz0gcG9zaXRpb24ueUFkdmFuY2U7CiAgICAgIH0KCiAgICAgIHJldHVybiBoZWlnaHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgYm91bmRpbmcgYm94IGNvbnRhaW5pbmcgYWxsIGdseXBocyBpbiB0aGUgcnVuLgogICAgICogQHR5cGUge0JCb3h9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnYmJveCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgdmFyIGJib3ggPSBuZXcgQkJveCgpOwoKICAgICAgdmFyIHggPSAwOwogICAgICB2YXIgeSA9IDA7CiAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmdseXBocy5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICB2YXIgZ2x5cGggPSB0aGlzLmdseXBoc1tpbmRleF07CiAgICAgICAgdmFyIHAgPSB0aGlzLnBvc2l0aW9uc1tpbmRleF07CiAgICAgICAgdmFyIGIgPSBnbHlwaC5iYm94OwoKICAgICAgICBiYm94LmFkZFBvaW50KGIubWluWCArIHggKyBwLnhPZmZzZXQsIGIubWluWSArIHkgKyBwLnlPZmZzZXQpOwogICAgICAgIGJib3guYWRkUG9pbnQoYi5tYXhYICsgeCArIHAueE9mZnNldCwgYi5tYXhZICsgeSArIHAueU9mZnNldCk7CgogICAgICAgIHggKz0gcC54QWR2YW5jZTsKICAgICAgICB5ICs9IHAueUFkdmFuY2U7CiAgICAgIH0KCiAgICAgIHJldHVybiBiYm94OwogICAgfQogIH1dKTsKCiAgcmV0dXJuIEdseXBoUnVuOwp9KCk7CgovKioKICogUmVwcmVzZW50cyBwb3NpdGlvbmluZyBpbmZvcm1hdGlvbiBmb3IgYSBnbHlwaCBpbiBhIEdseXBoUnVuLgogKi8KdmFyIEdseXBoUG9zaXRpb24gPSBmdW5jdGlvbiBHbHlwaFBvc2l0aW9uKCkgewogIHZhciB4QWR2YW5jZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogMDsKICB2YXIgeUFkdmFuY2UgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7CiAgdmFyIHhPZmZzZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDA7CiAgdmFyIHlPZmZzZXQgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IDA7CgogIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBHbHlwaFBvc2l0aW9uKTsKCiAgLyoqCiAgICogVGhlIGFtb3VudCB0byBtb3ZlIHRoZSB2aXJ0dWFsIHBlbiBpbiB0aGUgWCBkaXJlY3Rpb24gYWZ0ZXIgcmVuZGVyaW5nIHRoaXMgZ2x5cGguCiAgICogQHR5cGUge251bWJlcn0KICAgKi8KICB0aGlzLnhBZHZhbmNlID0geEFkdmFuY2U7CgogIC8qKgogICAqIFRoZSBhbW91bnQgdG8gbW92ZSB0aGUgdmlydHVhbCBwZW4gaW4gdGhlIFkgZGlyZWN0aW9uIGFmdGVyIHJlbmRlcmluZyB0aGlzIGdseXBoLgogICAqIEB0eXBlIHtudW1iZXJ9CiAgICovCiAgdGhpcy55QWR2YW5jZSA9IHlBZHZhbmNlOwoKICAvKioKICAgKiBUaGUgb2Zmc2V0IGZyb20gdGhlIHBlbiBwb3NpdGlvbiBpbiB0aGUgWCBkaXJlY3Rpb24gYXQgd2hpY2ggdG8gcmVuZGVyIHRoaXMgZ2x5cGguCiAgICogQHR5cGUge251bWJlcn0KICAgKi8KICB0aGlzLnhPZmZzZXQgPSB4T2Zmc2V0OwoKICAvKioKICAgKiBUaGUgb2Zmc2V0IGZyb20gdGhlIHBlbiBwb3NpdGlvbiBpbiB0aGUgWSBkaXJlY3Rpb24gYXQgd2hpY2ggdG8gcmVuZGVyIHRoaXMgZ2x5cGguCiAgICogQHR5cGUge251bWJlcn0KICAgKi8KICB0aGlzLnlPZmZzZXQgPSB5T2Zmc2V0Owp9OwoKLy8gc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9mb250cy9UcnVlVHlwZS1SZWZlcmVuY2UtTWFudWFsL1JNMDkvQXBwZW5kaXhGLmh0bWwKLy8gYW5kIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvcmVUZXh0LmZyYW1ld29yay9WZXJzaW9ucy9BL0hlYWRlcnMvU0ZOVExheW91dFR5cGVzLmggb24gYSBNYWMKdmFyIGZlYXR1cmVzID0gewogIGFsbFR5cG9ncmFwaGljRmVhdHVyZXM6IHsKICAgIGNvZGU6IDAsCiAgICBleGNsdXNpdmU6IGZhbHNlLAogICAgYWxsVHlwZUZlYXR1cmVzOiAwCiAgfSwKICBsaWdhdHVyZXM6IHsKICAgIGNvZGU6IDEsCiAgICBleGNsdXNpdmU6IGZhbHNlLAogICAgcmVxdWlyZWRMaWdhdHVyZXM6IDAsCiAgICBjb21tb25MaWdhdHVyZXM6IDIsCiAgICByYXJlTGlnYXR1cmVzOiA0LAogICAgLy8gbG9nb3M6IDYKICAgIHJlYnVzUGljdHVyZXM6IDgsCiAgICBkaXBodGhvbmdMaWdhdHVyZXM6IDEwLAogICAgc3F1YXJlZExpZ2F0dXJlczogMTIsCiAgICBhYmJyZXZTcXVhcmVkTGlnYXR1cmVzOiAxNCwKICAgIHN5bWJvbExpZ2F0dXJlczogMTYsCiAgICBjb250ZXh0dWFsTGlnYXR1cmVzOiAxOCwKICAgIGhpc3RvcmljYWxMaWdhdHVyZXM6IDIwCiAgfSwKICBjdXJzaXZlQ29ubmVjdGlvbjogewogICAgY29kZTogMiwKICAgIGV4Y2x1c2l2ZTogdHJ1ZSwKICAgIHVuY29ubmVjdGVkOiAwLAogICAgcGFydGlhbGx5Q29ubmVjdGVkOiAxLAogICAgY3Vyc2l2ZTogMgogIH0sCiAgbGV0dGVyQ2FzZTogewogICAgY29kZTogMywKICAgIGV4Y2x1c2l2ZTogdHJ1ZQogIH0sCiAgLy8gdXBwZXJBbmRMb3dlckNhc2U6IDAgICAgICAgICAgIyBkZXByZWNhdGVkCiAgLy8gYWxsQ2FwczogMSAgICAgICAgICAgICAgICAgICAgIyBkZXByZWNhdGVkCiAgLy8gYWxsTG93ZXJDYXNlOiAyICAgICAgICAgICAgICAgIyBkZXByZWNhdGVkCiAgLy8gc21hbGxDYXBzOiAzICAgICAgICAgICAgICAgICAgIyBkZXByZWNhdGVkCiAgLy8gaW5pdGlhbENhcHM6IDQgICAgICAgICAgICAgICAgIyBkZXByZWNhdGVkCiAgLy8gaW5pdGlhbENhcHNBbmRTbWFsbENhcHM6IDUgICAgIyBkZXByZWNhdGVkCiAgdmVydGljYWxTdWJzdGl0dXRpb246IHsKICAgIGNvZGU6IDQsCiAgICBleGNsdXNpdmU6IGZhbHNlLAogICAgc3Vic3RpdHV0ZVZlcnRpY2FsRm9ybXM6IDAKICB9LAogIGxpbmd1aXN0aWNSZWFycmFuZ2VtZW50OiB7CiAgICBjb2RlOiA1LAogICAgZXhjbHVzaXZlOiBmYWxzZSwKICAgIGxpbmd1aXN0aWNSZWFycmFuZ2VtZW50OiAwCiAgfSwKICBudW1iZXJTcGFjaW5nOiB7CiAgICBjb2RlOiA2LAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgbW9ub3NwYWNlZE51bWJlcnM6IDAsCiAgICBwcm9wb3J0aW9uYWxOdW1iZXJzOiAxLAogICAgdGhpcmRXaWR0aE51bWJlcnM6IDIsCiAgICBxdWFydGVyV2lkdGhOdW1iZXJzOiAzCiAgfSwKICBzbWFydFN3YXNoOiB7CiAgICBjb2RlOiA4LAogICAgZXhjbHVzaXZlOiBmYWxzZSwKICAgIHdvcmRJbml0aWFsU3dhc2hlczogMCwKICAgIHdvcmRGaW5hbFN3YXNoZXM6IDIsCiAgICAvLyBsaW5lSW5pdGlhbFN3YXNoZXM6IDQKICAgIC8vIGxpbmVGaW5hbFN3YXNoZXM6IDYKICAgIG5vbkZpbmFsU3dhc2hlczogOAogIH0sCiAgZGlhY3JpdGljczogewogICAgY29kZTogOSwKICAgIGV4Y2x1c2l2ZTogdHJ1ZSwKICAgIHNob3dEaWFjcml0aWNzOiAwLAogICAgaGlkZURpYWNyaXRpY3M6IDEsCiAgICBkZWNvbXBvc2VEaWFjcml0aWNzOiAyCiAgfSwKICB2ZXJ0aWNhbFBvc2l0aW9uOiB7CiAgICBjb2RlOiAxMCwKICAgIGV4Y2x1c2l2ZTogdHJ1ZSwKICAgIG5vcm1hbFBvc2l0aW9uOiAwLAogICAgc3VwZXJpb3JzOiAxLAogICAgaW5mZXJpb3JzOiAyLAogICAgb3JkaW5hbHM6IDMsCiAgICBzY2llbnRpZmljSW5mZXJpb3JzOiA0CiAgfSwKICBmcmFjdGlvbnM6IHsKICAgIGNvZGU6IDExLAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgbm9GcmFjdGlvbnM6IDAsCiAgICB2ZXJ0aWNhbEZyYWN0aW9uczogMSwKICAgIGRpYWdvbmFsRnJhY3Rpb25zOiAyCiAgfSwKICBvdmVybGFwcGluZ0NoYXJhY3RlcnM6IHsKICAgIGNvZGU6IDEzLAogICAgZXhjbHVzaXZlOiBmYWxzZSwKICAgIHByZXZlbnRPdmVybGFwOiAwCiAgfSwKICB0eXBvZ3JhcGhpY0V4dHJhczogewogICAgY29kZTogMTQsCiAgICBleGNsdXNpdmU6IGZhbHNlLAogICAgLy8gaHlwaGVuc1RvRW1EYXNoOiAwCiAgICAvLyBoeXBoZW5Ub0VuRGFzaDogMgogICAgc2xhc2hlZFplcm86IDQKICB9LAogIC8vIGZvcm1JbnRlcnJvYmFuZzogNgogIC8vIHNtYXJ0UXVvdGVzOiA4CiAgLy8gcGVyaW9kc1RvRWxsaXBzaXM6IDEwCiAgbWF0aGVtYXRpY2FsRXh0cmFzOiB7CiAgICBjb2RlOiAxNSwKICAgIGV4Y2x1c2l2ZTogZmFsc2UsCiAgICAvLyBoeXBoZW5Ub01pbnVzOiAwCiAgICAvLyBhc3RlcmlzdG9NdWx0aXBseTogMgogICAgLy8gc2xhc2hUb0RpdmlkZTogNAogICAgLy8gaW5lcXVhbGl0eUxpZ2F0dXJlczogNgogICAgLy8gZXhwb25lbnRzOiA4CiAgICBtYXRoZW1hdGljYWxHcmVlazogMTAKICB9LAogIG9ybmFtZW50U2V0czogewogICAgY29kZTogMTYsCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBub09ybmFtZW50czogMCwKICAgIGRpbmdiYXRzOiAxLAogICAgcGlDaGFyYWN0ZXJzOiAyLAogICAgZmxldXJvbnM6IDMsCiAgICBkZWNvcmF0aXZlQm9yZGVyczogNCwKICAgIGludGVybmF0aW9uYWxTeW1ib2xzOiA1LAogICAgbWF0aFN5bWJvbHM6IDYKICB9LAogIGNoYXJhY3RlckFsdGVybmF0aXZlczogewogICAgY29kZTogMTcsCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBub0FsdGVybmF0ZXM6IDAKICB9LAogIC8vIHVzZXIgZGVmaW5lZCBvcHRpb25zCiAgZGVzaWduQ29tcGxleGl0eTogewogICAgY29kZTogMTgsCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBkZXNpZ25MZXZlbDE6IDAsCiAgICBkZXNpZ25MZXZlbDI6IDEsCiAgICBkZXNpZ25MZXZlbDM6IDIsCiAgICBkZXNpZ25MZXZlbDQ6IDMsCiAgICBkZXNpZ25MZXZlbDU6IDQKICB9LAogIHN0eWxlT3B0aW9uczogewogICAgY29kZTogMTksCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBub1N0eWxlT3B0aW9uczogMCwKICAgIGRpc3BsYXlUZXh0OiAxLAogICAgZW5ncmF2ZWRUZXh0OiAyLAogICAgaWxsdW1pbmF0ZWRDYXBzOiAzLAogICAgdGl0bGluZ0NhcHM6IDQsCiAgICB0YWxsQ2FwczogNQogIH0sCiAgY2hhcmFjdGVyU2hhcGU6IHsKICAgIGNvZGU6IDIwLAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgdHJhZGl0aW9uYWxDaGFyYWN0ZXJzOiAwLAogICAgc2ltcGxpZmllZENoYXJhY3RlcnM6IDEsCiAgICBKSVMxOTc4Q2hhcmFjdGVyczogMiwKICAgIEpJUzE5ODNDaGFyYWN0ZXJzOiAzLAogICAgSklTMTk5MENoYXJhY3RlcnM6IDQsCiAgICB0cmFkaXRpb25hbEFsdE9uZTogNSwKICAgIHRyYWRpdGlvbmFsQWx0VHdvOiA2LAogICAgdHJhZGl0aW9uYWxBbHRUaHJlZTogNywKICAgIHRyYWRpdGlvbmFsQWx0Rm91cjogOCwKICAgIHRyYWRpdGlvbmFsQWx0Rml2ZTogOSwKICAgIGV4cGVydENoYXJhY3RlcnM6IDEwLAogICAgSklTMjAwNENoYXJhY3RlcnM6IDExLAogICAgaG9qb0NoYXJhY3RlcnM6IDEyLAogICAgTkxDQ2hhcmFjdGVyczogMTMsCiAgICB0cmFkaXRpb25hbE5hbWVzQ2hhcmFjdGVyczogMTQKICB9LAogIG51bWJlckNhc2U6IHsKICAgIGNvZGU6IDIxLAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgbG93ZXJDYXNlTnVtYmVyczogMCwKICAgIHVwcGVyQ2FzZU51bWJlcnM6IDEKICB9LAogIHRleHRTcGFjaW5nOiB7CiAgICBjb2RlOiAyMiwKICAgIGV4Y2x1c2l2ZTogdHJ1ZSwKICAgIHByb3BvcnRpb25hbFRleHQ6IDAsCiAgICBtb25vc3BhY2VkVGV4dDogMSwKICAgIGhhbGZXaWR0aFRleHQ6IDIsCiAgICB0aGlyZFdpZHRoVGV4dDogMywKICAgIHF1YXJ0ZXJXaWR0aFRleHQ6IDQsCiAgICBhbHRQcm9wb3J0aW9uYWxUZXh0OiA1LAogICAgYWx0SGFsZldpZHRoVGV4dDogNgogIH0sCiAgdHJhbnNsaXRlcmF0aW9uOiB7CiAgICBjb2RlOiAyMywKICAgIGV4Y2x1c2l2ZTogdHJ1ZSwKICAgIG5vVHJhbnNsaXRlcmF0aW9uOiAwCiAgfSwKICAvLyBoYW5qYVRvSGFuZ3VsOiAxCiAgLy8gaGlyYWdhbmFUb0thdGFrYW5hOiAyCiAgLy8ga2F0YWthbmFUb0hpcmFnYW5hOiAzCiAgLy8ga2FuYVRvUm9tYW5pemF0aW9uOiA0CiAgLy8gcm9tYW5pemF0aW9uVG9IaXJhZ2FuYTogNQogIC8vIHJvbWFuaXphdGlvblRvS2F0YWthbmE6IDYKICAvLyBoYW5qYVRvSGFuZ3VsQWx0T25lOiA3CiAgLy8gaGFuamFUb0hhbmd1bEFsdFR3bzogOAogIC8vIGhhbmphVG9IYW5ndWxBbHRUaHJlZTogOQogIGFubm90YXRpb246IHsKICAgIGNvZGU6IDI0LAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgbm9Bbm5vdGF0aW9uOiAwLAogICAgYm94QW5ub3RhdGlvbjogMSwKICAgIHJvdW5kZWRCb3hBbm5vdGF0aW9uOiAyLAogICAgY2lyY2xlQW5ub3RhdGlvbjogMywKICAgIGludmVydGVkQ2lyY2xlQW5ub3RhdGlvbjogNCwKICAgIHBhcmVudGhlc2lzQW5ub3RhdGlvbjogNSwKICAgIHBlcmlvZEFubm90YXRpb246IDYsCiAgICByb21hbk51bWVyYWxBbm5vdGF0aW9uOiA3LAogICAgZGlhbW9uZEFubm90YXRpb246IDgsCiAgICBpbnZlcnRlZEJveEFubm90YXRpb246IDksCiAgICBpbnZlcnRlZFJvdW5kZWRCb3hBbm5vdGF0aW9uOiAxMAogIH0sCiAga2FuYVNwYWNpbmc6IHsKICAgIGNvZGU6IDI1LAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgZnVsbFdpZHRoS2FuYTogMCwKICAgIHByb3BvcnRpb25hbEthbmE6IDEKICB9LAogIGlkZW9ncmFwaGljU3BhY2luZzogewogICAgY29kZTogMjYsCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBmdWxsV2lkdGhJZGVvZ3JhcGhzOiAwLAogICAgcHJvcG9ydGlvbmFsSWRlb2dyYXBoczogMSwKICAgIGhhbGZXaWR0aElkZW9ncmFwaHM6IDIKICB9LAogIHVuaWNvZGVEZWNvbXBvc2l0aW9uOiB7CiAgICBjb2RlOiAyNywKICAgIGV4Y2x1c2l2ZTogZmFsc2UsCiAgICBjYW5vbmljYWxDb21wb3NpdGlvbjogMCwKICAgIGNvbXBhdGliaWxpdHlDb21wb3NpdGlvbjogMiwKICAgIHRyYW5zY29kaW5nQ29tcG9zaXRpb246IDQKICB9LAogIHJ1YnlLYW5hOiB7CiAgICBjb2RlOiAyOCwKICAgIGV4Y2x1c2l2ZTogZmFsc2UsCiAgICAvLyBub1J1YnlLYW5hOiAwICAgICAjIGRlcHJlY2F0ZWQgLSB1c2UgcnVieUthbmFPZmYgaW5zdGVhZAogICAgLy8gcnVieUthbmE6IDEgICAgICMgZGVwcmVjYXRlZCAtIHVzZSBydWJ5S2FuYU9uIGluc3RlYWQKICAgIHJ1YnlLYW5hOiAyCiAgfSwKICBDSktTeW1ib2xBbHRlcm5hdGl2ZXM6IHsKICAgIGNvZGU6IDI5LAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgbm9DSktTeW1ib2xBbHRlcm5hdGl2ZXM6IDAsCiAgICBDSktTeW1ib2xBbHRPbmU6IDEsCiAgICBDSktTeW1ib2xBbHRUd286IDIsCiAgICBDSktTeW1ib2xBbHRUaHJlZTogMywKICAgIENKS1N5bWJvbEFsdEZvdXI6IDQsCiAgICBDSktTeW1ib2xBbHRGaXZlOiA1CiAgfSwKICBpZGVvZ3JhcGhpY0FsdGVybmF0aXZlczogewogICAgY29kZTogMzAsCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBub0lkZW9ncmFwaGljQWx0ZXJuYXRpdmVzOiAwLAogICAgaWRlb2dyYXBoaWNBbHRPbmU6IDEsCiAgICBpZGVvZ3JhcGhpY0FsdFR3bzogMiwKICAgIGlkZW9ncmFwaGljQWx0VGhyZWU6IDMsCiAgICBpZGVvZ3JhcGhpY0FsdEZvdXI6IDQsCiAgICBpZGVvZ3JhcGhpY0FsdEZpdmU6IDUKICB9LAogIENKS1ZlcnRpY2FsUm9tYW5QbGFjZW1lbnQ6IHsKICAgIGNvZGU6IDMxLAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgQ0pLVmVydGljYWxSb21hbkNlbnRlcmVkOiAwLAogICAgQ0pLVmVydGljYWxSb21hbkhCYXNlbGluZTogMQogIH0sCiAgaXRhbGljQ0pLUm9tYW46IHsKICAgIGNvZGU6IDMyLAogICAgZXhjbHVzaXZlOiBmYWxzZSwKICAgIC8vIG5vQ0pLSXRhbGljUm9tYW46IDAgICAgICMgZGVwcmVjYXRlZCAtIHVzZSBDSktJdGFsaWNSb21hbk9mZiBpbnN0ZWFkCiAgICAvLyBDSktJdGFsaWNSb21hbjogMSAgICAgIyBkZXByZWNhdGVkIC0gdXNlIENKS0l0YWxpY1JvbWFuT24gaW5zdGVhZAogICAgQ0pLSXRhbGljUm9tYW46IDIKICB9LAogIGNhc2VTZW5zaXRpdmVMYXlvdXQ6IHsKICAgIGNvZGU6IDMzLAogICAgZXhjbHVzaXZlOiBmYWxzZSwKICAgIGNhc2VTZW5zaXRpdmVMYXlvdXQ6IDAsCiAgICBjYXNlU2Vuc2l0aXZlU3BhY2luZzogMgogIH0sCiAgYWx0ZXJuYXRlS2FuYTogewogICAgY29kZTogMzQsCiAgICBleGNsdXNpdmU6IGZhbHNlLAogICAgYWx0ZXJuYXRlSG9yaXpLYW5hOiAwLAogICAgYWx0ZXJuYXRlVmVydEthbmE6IDIKICB9LAogIHN0eWxpc3RpY0FsdGVybmF0aXZlczogewogICAgY29kZTogMzUsCiAgICBleGNsdXNpdmU6IGZhbHNlLAogICAgbm9TdHlsaXN0aWNBbHRlcm5hdGVzOiAwLAogICAgc3R5bGlzdGljQWx0T25lOiAyLAogICAgc3R5bGlzdGljQWx0VHdvOiA0LAogICAgc3R5bGlzdGljQWx0VGhyZWU6IDYsCiAgICBzdHlsaXN0aWNBbHRGb3VyOiA4LAogICAgc3R5bGlzdGljQWx0Rml2ZTogMTAsCiAgICBzdHlsaXN0aWNBbHRTaXg6IDEyLAogICAgc3R5bGlzdGljQWx0U2V2ZW46IDE0LAogICAgc3R5bGlzdGljQWx0RWlnaHQ6IDE2LAogICAgc3R5bGlzdGljQWx0TmluZTogMTgsCiAgICBzdHlsaXN0aWNBbHRUZW46IDIwLAogICAgc3R5bGlzdGljQWx0RWxldmVuOiAyMiwKICAgIHN0eWxpc3RpY0FsdFR3ZWx2ZTogMjQsCiAgICBzdHlsaXN0aWNBbHRUaGlydGVlbjogMjYsCiAgICBzdHlsaXN0aWNBbHRGb3VydGVlbjogMjgsCiAgICBzdHlsaXN0aWNBbHRGaWZ0ZWVuOiAzMCwKICAgIHN0eWxpc3RpY0FsdFNpeHRlZW46IDMyLAogICAgc3R5bGlzdGljQWx0U2V2ZW50ZWVuOiAzNCwKICAgIHN0eWxpc3RpY0FsdEVpZ2h0ZWVuOiAzNiwKICAgIHN0eWxpc3RpY0FsdE5pbmV0ZWVuOiAzOCwKICAgIHN0eWxpc3RpY0FsdFR3ZW50eTogNDAKICB9LAogIGNvbnRleHR1YWxBbHRlcm5hdGVzOiB7CiAgICBjb2RlOiAzNiwKICAgIGV4Y2x1c2l2ZTogZmFsc2UsCiAgICBjb250ZXh0dWFsQWx0ZXJuYXRlczogMCwKICAgIHN3YXNoQWx0ZXJuYXRlczogMiwKICAgIGNvbnRleHR1YWxTd2FzaEFsdGVybmF0ZXM6IDQKICB9LAogIGxvd2VyQ2FzZTogewogICAgY29kZTogMzcsCiAgICBleGNsdXNpdmU6IHRydWUsCiAgICBkZWZhdWx0TG93ZXJDYXNlOiAwLAogICAgbG93ZXJDYXNlU21hbGxDYXBzOiAxLAogICAgbG93ZXJDYXNlUGV0aXRlQ2FwczogMgogIH0sCiAgdXBwZXJDYXNlOiB7CiAgICBjb2RlOiAzOCwKICAgIGV4Y2x1c2l2ZTogdHJ1ZSwKICAgIGRlZmF1bHRVcHBlckNhc2U6IDAsCiAgICB1cHBlckNhc2VTbWFsbENhcHM6IDEsCiAgICB1cHBlckNhc2VQZXRpdGVDYXBzOiAyCiAgfSwKICBsYW5ndWFnZVRhZzogeyAvLyBpbmRpY2VzIGludG8gbHRhZyB0YWJsZQogICAgY29kZTogMzksCiAgICBleGNsdXNpdmU6IHRydWUKICB9LAogIENKS1JvbWFuU3BhY2luZzogewogICAgY29kZTogMTAzLAogICAgZXhjbHVzaXZlOiB0cnVlLAogICAgaGFsZldpZHRoQ0pLUm9tYW46IDAsCiAgICBwcm9wb3J0aW9uYWxDSktSb21hbjogMSwKICAgIGRlZmF1bHRDSktSb21hbjogMiwKICAgIGZ1bGxXaWR0aENKS1JvbWFuOiAzCiAgfQp9OwoKdmFyIGZlYXR1cmUgPSBmdW5jdGlvbiBmZWF0dXJlKG5hbWUsIHNlbGVjdG9yKSB7CiAgcmV0dXJuIFtmZWF0dXJlc1tuYW1lXS5jb2RlLCBmZWF0dXJlc1tuYW1lXVtzZWxlY3Rvcl1dOwp9OwoKdmFyIE9UTWFwcGluZyA9IHsKICBybGlnOiBmZWF0dXJlKCdsaWdhdHVyZXMnLCAncmVxdWlyZWRMaWdhdHVyZXMnKSwKICBjbGlnOiBmZWF0dXJlKCdsaWdhdHVyZXMnLCAnY29udGV4dHVhbExpZ2F0dXJlcycpLAogIGRsaWc6IGZlYXR1cmUoJ2xpZ2F0dXJlcycsICdyYXJlTGlnYXR1cmVzJyksCiAgaGxpZzogZmVhdHVyZSgnbGlnYXR1cmVzJywgJ2hpc3RvcmljYWxMaWdhdHVyZXMnKSwKICBsaWdhOiBmZWF0dXJlKCdsaWdhdHVyZXMnLCAnY29tbW9uTGlnYXR1cmVzJyksCiAgaGlzdDogZmVhdHVyZSgnbGlnYXR1cmVzJywgJ2hpc3RvcmljYWxMaWdhdHVyZXMnKSwgLy8gPz8KCiAgc21jcDogZmVhdHVyZSgnbG93ZXJDYXNlJywgJ2xvd2VyQ2FzZVNtYWxsQ2FwcycpLAogIHBjYXA6IGZlYXR1cmUoJ2xvd2VyQ2FzZScsICdsb3dlckNhc2VQZXRpdGVDYXBzJyksCgogIGZyYWM6IGZlYXR1cmUoJ2ZyYWN0aW9ucycsICdkaWFnb25hbEZyYWN0aW9ucycpLAogIGRub206IGZlYXR1cmUoJ2ZyYWN0aW9ucycsICdkaWFnb25hbEZyYWN0aW9ucycpLCAvLyA/PwogIG51bXI6IGZlYXR1cmUoJ2ZyYWN0aW9ucycsICdkaWFnb25hbEZyYWN0aW9ucycpLCAvLyA/PwogIGFmcmM6IGZlYXR1cmUoJ2ZyYWN0aW9ucycsICd2ZXJ0aWNhbEZyYWN0aW9ucycpLAogIC8vIGFhbHQKICAvLyBhYnZmLCBhYnZtLCBhYnZzLCBha2huLCBibHdmLCBibHdtLCBibHdzLCBjZmFyLCBjamN0LCBjcHNwLCBmYWx0LCBpc29sLCBqYWx0LCBsam1vLCBtc2V0PwogIC8vIGx0cmEsIGx0cm0sIG51a3QsIHByZWYsIHByZXMsIHBzdGYsIHBzdHMsIHJhbmQsIHJrcmYsIHJwaGYsIHJ0bGEsIHJ0bG0sIHNpemUsIHRqbW8sIHRudW0/CiAgLy8gdW5pYywgdmF0dSwgdmhhbCwgdmptbywgdnBhbCwgdnJ0MgogIC8vIGRpc3QgLT4gdHJhayB0YWJsZT8KICAvLyBrZXJuLCB2a3JuIC0+IGtlcm4gdGFibGUKICAvLyBsZmJkICsgb3BiZCArIHJ0YmQgLT4gb3BiZCB0YWJsZT8KICAvLyBtYXJrLCBta21rIC0+IGFjbnQgdGFibGU/CiAgLy8gbG9jbCAtPiBsYW5ndWFnZVRhZyArIGx0YWcgdGFibGUKCiAgY2FzZTogZmVhdHVyZSgnY2FzZVNlbnNpdGl2ZUxheW91dCcsICdjYXNlU2Vuc2l0aXZlTGF5b3V0JyksIC8vIGFsc28gY2FzZVNlbnNpdGl2ZVNwYWNpbmcKICBjY21wOiBmZWF0dXJlKCd1bmljb2RlRGVjb21wb3NpdGlvbicsICdjYW5vbmljYWxDb21wb3NpdGlvbicpLCAvLyBjb21wYXRpYmlsaXR5Q29tcG9zaXRpb24/CiAgY3BjdDogZmVhdHVyZSgnQ0pLVmVydGljYWxSb21hblBsYWNlbWVudCcsICdDSktWZXJ0aWNhbFJvbWFuQ2VudGVyZWQnKSwgLy8gZ3Vlc3MuLi4sIHByb2JhYmx5IG5vdCBnaXZlbiBiZWxvdwogIHZhbHQ6IGZlYXR1cmUoJ0NKS1ZlcnRpY2FsUm9tYW5QbGFjZW1lbnQnLCAnQ0pLVmVydGljYWxSb21hbkNlbnRlcmVkJyksCiAgc3dzaDogZmVhdHVyZSgnY29udGV4dHVhbEFsdGVybmF0ZXMnLCAnc3dhc2hBbHRlcm5hdGVzJyksCiAgY3N3aDogZmVhdHVyZSgnY29udGV4dHVhbEFsdGVybmF0ZXMnLCAnY29udGV4dHVhbFN3YXNoQWx0ZXJuYXRlcycpLAogIGN1cnM6IGZlYXR1cmUoJ2N1cnNpdmVDb25uZWN0aW9uJywgJ2N1cnNpdmUnKSwgLy8gPz8KICBjMnBjOiBmZWF0dXJlKCd1cHBlckNhc2UnLCAndXBwZXJDYXNlUGV0aXRlQ2FwcycpLAogIGMyc2M6IGZlYXR1cmUoJ3VwcGVyQ2FzZScsICd1cHBlckNhc2VTbWFsbENhcHMnKSwKCiAgaW5pdDogZmVhdHVyZSgnc21hcnRTd2FzaCcsICd3b3JkSW5pdGlhbFN3YXNoZXMnKSwgLy8gPz8KICBmaW4yOiBmZWF0dXJlKCdzbWFydFN3YXNoJywgJ3dvcmRGaW5hbFN3YXNoZXMnKSwgLy8gPz8KICBtZWRpOiBmZWF0dXJlKCdzbWFydFN3YXNoJywgJ25vbkZpbmFsU3dhc2hlcycpLCAvLyA/PwogIG1lZDI6IGZlYXR1cmUoJ3NtYXJ0U3dhc2gnLCAnbm9uRmluYWxTd2FzaGVzJyksIC8vID8/CiAgZmluMzogZmVhdHVyZSgnc21hcnRTd2FzaCcsICd3b3JkRmluYWxTd2FzaGVzJyksIC8vID8/CiAgZmluYTogZmVhdHVyZSgnc21hcnRTd2FzaCcsICd3b3JkRmluYWxTd2FzaGVzJyksIC8vID8/CgogIHBrbmE6IGZlYXR1cmUoJ2thbmFTcGFjaW5nJywgJ3Byb3BvcnRpb25hbEthbmEnKSwKICBoYWxmOiBmZWF0dXJlKCd0ZXh0U3BhY2luZycsICdoYWxmV2lkdGhUZXh0JyksIC8vIGFsc28gSGFsZldpZHRoQ0pLUm9tYW4sIEhhbGZXaWR0aElkZW9ncmFwaHM/CiAgaGFsdDogZmVhdHVyZSgndGV4dFNwYWNpbmcnLCAnYWx0SGFsZldpZHRoVGV4dCcpLAoKICBoa25hOiBmZWF0dXJlKCdhbHRlcm5hdGVLYW5hJywgJ2FsdGVybmF0ZUhvcml6S2FuYScpLAogIHZrbmE6IGZlYXR1cmUoJ2FsdGVybmF0ZUthbmEnLCAnYWx0ZXJuYXRlVmVydEthbmEnKSwKICAvLyBobmdsOiBmZWF0dXJlICd0cmFuc2xpdGVyYXRpb24nLCAnaGFuamFUb0hhbmd1bFNlbGVjdG9yJyAjIGRlcHJlY2F0ZWQKCiAgaXRhbDogZmVhdHVyZSgnaXRhbGljQ0pLUm9tYW4nLCAnQ0pLSXRhbGljUm9tYW4nKSwKICBsbnVtOiBmZWF0dXJlKCdudW1iZXJDYXNlJywgJ3VwcGVyQ2FzZU51bWJlcnMnKSwKICBvbnVtOiBmZWF0dXJlKCdudW1iZXJDYXNlJywgJ2xvd2VyQ2FzZU51bWJlcnMnKSwKICBtZ3JrOiBmZWF0dXJlKCdtYXRoZW1hdGljYWxFeHRyYXMnLCAnbWF0aGVtYXRpY2FsR3JlZWsnKSwKCiAgLy8gbmFsdDogbm90IGVub3VnaCBpbmZvLiB3aGF0IHR5cGUgb2YgYW5ub3RhdGlvbj8KICAvLyBvcm5tOiBkaXR0bywgd2hpY2ggb3JuYW1lbnQgc3R5bGU/CgogIGNhbHQ6IGZlYXR1cmUoJ2NvbnRleHR1YWxBbHRlcm5hdGVzJywgJ2NvbnRleHR1YWxBbHRlcm5hdGVzJyksIC8vIG9yIG1vcmU/CiAgdnJ0MjogZmVhdHVyZSgndmVydGljYWxTdWJzdGl0dXRpb24nLCAnc3Vic3RpdHV0ZVZlcnRpY2FsRm9ybXMnKSwgLy8gb2guLi4gYmVsb3c/CiAgdmVydDogZmVhdHVyZSgndmVydGljYWxTdWJzdGl0dXRpb24nLCAnc3Vic3RpdHV0ZVZlcnRpY2FsRm9ybXMnKSwKICB0bnVtOiBmZWF0dXJlKCdudW1iZXJTcGFjaW5nJywgJ21vbm9zcGFjZWROdW1iZXJzJyksCiAgcG51bTogZmVhdHVyZSgnbnVtYmVyU3BhY2luZycsICdwcm9wb3J0aW9uYWxOdW1iZXJzJyksCiAgc3VwczogZmVhdHVyZSgndmVydGljYWxQb3NpdGlvbicsICdzdXBlcmlvcnMnKSwKICBzdWJzOiBmZWF0dXJlKCd2ZXJ0aWNhbFBvc2l0aW9uJywgJ2luZmVyaW9ycycpLAogIG9yZG46IGZlYXR1cmUoJ3ZlcnRpY2FsUG9zaXRpb24nLCAnb3JkaW5hbHMnKSwKICBwd2lkOiBmZWF0dXJlKCd0ZXh0U3BhY2luZycsICdwcm9wb3J0aW9uYWxUZXh0JyksCiAgaHdpZDogZmVhdHVyZSgndGV4dFNwYWNpbmcnLCAnaGFsZldpZHRoVGV4dCcpLAogIHF3aWQ6IGZlYXR1cmUoJ3RleHRTcGFjaW5nJywgJ3F1YXJ0ZXJXaWR0aFRleHQnKSwgLy8gYWxzbyBRdWFydGVyV2lkdGhOdW1iZXJzPwogIHR3aWQ6IGZlYXR1cmUoJ3RleHRTcGFjaW5nJywgJ3RoaXJkV2lkdGhUZXh0JyksIC8vIGFsc28gVGhpcmRXaWR0aE51bWJlcnM/CiAgZndpZDogZmVhdHVyZSgndGV4dFNwYWNpbmcnLCAncHJvcG9ydGlvbmFsVGV4dCcpLCAvLz8/CiAgcGFsdDogZmVhdHVyZSgndGV4dFNwYWNpbmcnLCAnYWx0UHJvcG9ydGlvbmFsVGV4dCcpLAogIHRyYWQ6IGZlYXR1cmUoJ2NoYXJhY3RlclNoYXBlJywgJ3RyYWRpdGlvbmFsQ2hhcmFjdGVycycpLAogIHNtcGw6IGZlYXR1cmUoJ2NoYXJhY3RlclNoYXBlJywgJ3NpbXBsaWZpZWRDaGFyYWN0ZXJzJyksCiAganA3ODogZmVhdHVyZSgnY2hhcmFjdGVyU2hhcGUnLCAnSklTMTk3OENoYXJhY3RlcnMnKSwKICBqcDgzOiBmZWF0dXJlKCdjaGFyYWN0ZXJTaGFwZScsICdKSVMxOTgzQ2hhcmFjdGVycycpLAogIGpwOTA6IGZlYXR1cmUoJ2NoYXJhY3RlclNoYXBlJywgJ0pJUzE5OTBDaGFyYWN0ZXJzJyksCiAganAwNDogZmVhdHVyZSgnY2hhcmFjdGVyU2hhcGUnLCAnSklTMjAwNENoYXJhY3RlcnMnKSwKICBleHB0OiBmZWF0dXJlKCdjaGFyYWN0ZXJTaGFwZScsICdleHBlcnRDaGFyYWN0ZXJzJyksCiAgaG9qbzogZmVhdHVyZSgnY2hhcmFjdGVyU2hhcGUnLCAnaG9qb0NoYXJhY3RlcnMnKSwKICBubGNrOiBmZWF0dXJlKCdjaGFyYWN0ZXJTaGFwZScsICdOTENDaGFyYWN0ZXJzJyksCiAgdG5hbTogZmVhdHVyZSgnY2hhcmFjdGVyU2hhcGUnLCAndHJhZGl0aW9uYWxOYW1lc0NoYXJhY3RlcnMnKSwKICBydWJ5OiBmZWF0dXJlKCdydWJ5S2FuYScsICdydWJ5S2FuYScpLAogIHRpdGw6IGZlYXR1cmUoJ3N0eWxlT3B0aW9ucycsICd0aXRsaW5nQ2FwcycpLAogIHplcm86IGZlYXR1cmUoJ3R5cG9ncmFwaGljRXh0cmFzJywgJ3NsYXNoZWRaZXJvJyksCgogIHNzMDE6IGZlYXR1cmUoJ3N0eWxpc3RpY0FsdGVybmF0aXZlcycsICdzdHlsaXN0aWNBbHRPbmUnKSwKICBzczAyOiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0VHdvJyksCiAgc3MwMzogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdFRocmVlJyksCiAgc3MwNDogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdEZvdXInKSwKICBzczA1OiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0Rml2ZScpLAogIHNzMDY6IGZlYXR1cmUoJ3N0eWxpc3RpY0FsdGVybmF0aXZlcycsICdzdHlsaXN0aWNBbHRTaXgnKSwKICBzczA3OiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0U2V2ZW4nKSwKICBzczA4OiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0RWlnaHQnKSwKICBzczA5OiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0TmluZScpLAogIHNzMTA6IGZlYXR1cmUoJ3N0eWxpc3RpY0FsdGVybmF0aXZlcycsICdzdHlsaXN0aWNBbHRUZW4nKSwKICBzczExOiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0RWxldmVuJyksCiAgc3MxMjogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdFR3ZWx2ZScpLAogIHNzMTM6IGZlYXR1cmUoJ3N0eWxpc3RpY0FsdGVybmF0aXZlcycsICdzdHlsaXN0aWNBbHRUaGlydGVlbicpLAogIHNzMTQ6IGZlYXR1cmUoJ3N0eWxpc3RpY0FsdGVybmF0aXZlcycsICdzdHlsaXN0aWNBbHRGb3VydGVlbicpLAogIHNzMTU6IGZlYXR1cmUoJ3N0eWxpc3RpY0FsdGVybmF0aXZlcycsICdzdHlsaXN0aWNBbHRGaWZ0ZWVuJyksCiAgc3MxNjogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdFNpeHRlZW4nKSwKICBzczE3OiBmZWF0dXJlKCdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0U2V2ZW50ZWVuJyksCiAgc3MxODogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdEVpZ2h0ZWVuJyksCiAgc3MxOTogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdE5pbmV0ZWVuJyksCiAgc3MyMDogZmVhdHVyZSgnc3R5bGlzdGljQWx0ZXJuYXRpdmVzJywgJ3N0eWxpc3RpY0FsdFR3ZW50eScpCn07CgovLyBzYWx0OiBmZWF0dXJlICdzdHlsaXN0aWNBbHRlcm5hdGl2ZXMnLCAnc3R5bGlzdGljQWx0T25lJyAjIGhtbSwgd2hpY2ggb25lIHRvIGNob29zZQoKLy8gQWRkIGN2MDEtY3Y5OSBmZWF0dXJlcwpmb3IgKHZhciBpID0gMTsgaSA8PSA5OTsgaSsrKSB7CiAgT1RNYXBwaW5nWydjdicgKyAoJzAwJyArIGkpLnNsaWNlKC0yKV0gPSBbZmVhdHVyZXMuY2hhcmFjdGVyQWx0ZXJuYXRpdmVzLmNvZGUsIGldOwp9CgovLyBjcmVhdGUgaW52ZXJzZSBtYXBwaW5nCnZhciBBQVRNYXBwaW5nID0ge307CmZvciAodmFyIG90IGluIE9UTWFwcGluZykgewogIHZhciBhYXQgPSBPVE1hcHBpbmdbb3RdOwogIGlmIChBQVRNYXBwaW5nW2FhdFswXV0gPT0gbnVsbCkgewogICAgQUFUTWFwcGluZ1thYXRbMF1dID0ge307CiAgfQoKICBBQVRNYXBwaW5nW2FhdFswXV1bYWF0WzFdXSA9IG90Owp9CgovLyBNYXBzIGFuIGFycmF5IG9mIE9wZW5UeXBlIGZlYXR1cmVzIHRvIEFBVCBmZWF0dXJlcwovLyBpbiB0aGUgZm9ybSBvZiB7ZmVhdHVyZVR5cGU6e2ZlYXR1cmVTZXR0aW5nOnRydWV9fQpmdW5jdGlvbiBtYXBPVFRvQUFUKGZlYXR1cmVzKSB7CiAgdmFyIHJlcyA9IHt9OwogIGZvciAodmFyIGsgaW4gZmVhdHVyZXMpIHsKICAgIHZhciByID0gdm9pZCAwOwogICAgaWYgKHIgPSBPVE1hcHBpbmdba10pIHsKICAgICAgaWYgKHJlc1tyWzBdXSA9PSBudWxsKSB7CiAgICAgICAgcmVzW3JbMF1dID0ge307CiAgICAgIH0KCiAgICAgIHJlc1tyWzBdXVtyWzFdXSA9IGZlYXR1cmVzW2tdOwogICAgfQogIH0KCiAgcmV0dXJuIHJlczsKfQoKLy8gTWFwcyBzdHJpbmdzIGluIGEgW2ZlYXR1cmVUeXBlLCBmZWF0dXJlU2V0dGluZ10KLy8gdG8gdGhlaXIgZXF1aXZhbGVudCBudW1iZXIgY29kZXMKZnVuY3Rpb24gbWFwRmVhdHVyZVN0cmluZ3MoZikgewogIHZhciB0eXBlID0gZlswXSwKICAgICAgc2V0dGluZyA9IGZbMV07CgogIGlmIChpc05hTih0eXBlKSkgewogICAgdmFyIHR5cGVDb2RlID0gZmVhdHVyZXNbdHlwZV0gJiYgZmVhdHVyZXNbdHlwZV0uY29kZTsKICB9IGVsc2UgewogICAgdmFyIHR5cGVDb2RlID0gdHlwZTsKICB9CgogIGlmIChpc05hTihzZXR0aW5nKSkgewogICAgdmFyIHNldHRpbmdDb2RlID0gZmVhdHVyZXNbdHlwZV0gJiYgZmVhdHVyZXNbdHlwZV1bc2V0dGluZ107CiAgfSBlbHNlIHsKICAgIHZhciBzZXR0aW5nQ29kZSA9IHNldHRpbmc7CiAgfQoKICByZXR1cm4gW3R5cGVDb2RlLCBzZXR0aW5nQ29kZV07Cn0KCi8vIE1hcHMgQUFUIGZlYXR1cmVzIHRvIGFuIGFycmF5IG9mIE9wZW5UeXBlIGZlYXR1cmVzCi8vIFN1cHBvcnRzIGJvdGggYXJyYXlzIGluIHRoZSBmb3JtIG9mIFtbZmVhdHVyZVR5cGUsIGZlYXR1cmVTZXR0aW5nXV0KLy8gYW5kIG9iamVjdHMgaW4gdGhlIGZvcm0gb2Yge2ZlYXR1cmVUeXBlOntmZWF0dXJlU2V0dGluZzp0cnVlfX0KLy8gZmVhdHVyZVR5cGVzIGFuZCBmZWF0dXJlU2V0dGluZ3MgY2FuIGJlIGVpdGhlciBzdHJpbmdzIG9yIG51bWJlciBjb2RlcwpmdW5jdGlvbiBtYXBBQVRUb09UKGZlYXR1cmVzKSB7CiAgdmFyIHJlcyA9IHt9OwogIGlmIChBcnJheS5pc0FycmF5KGZlYXR1cmVzKSkgewogICAgZm9yICh2YXIgayA9IDA7IGsgPCBmZWF0dXJlcy5sZW5ndGg7IGsrKykgewogICAgICB2YXIgciA9IHZvaWQgMDsKICAgICAgdmFyIGYgPSBtYXBGZWF0dXJlU3RyaW5ncyhmZWF0dXJlc1trXSk7CiAgICAgIGlmIChyID0gQUFUTWFwcGluZ1tmWzBdXSAmJiBBQVRNYXBwaW5nW2ZbMF1dW2ZbMV1dKSB7CiAgICAgICAgcmVzW3JdID0gdHJ1ZTsKICAgICAgfQogICAgfQogIH0gZWxzZSBpZiAoKHR5cGVvZiBmZWF0dXJlcyA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YoZmVhdHVyZXMpKSA9PT0gJ29iamVjdCcpIHsKICAgIGZvciAodmFyIHR5cGUgaW4gZmVhdHVyZXMpIHsKICAgICAgdmFyIF9mZWF0dXJlID0gZmVhdHVyZXNbdHlwZV07CiAgICAgIGZvciAodmFyIHNldHRpbmcgaW4gX2ZlYXR1cmUpIHsKICAgICAgICB2YXIgX3IgPSB2b2lkIDA7CiAgICAgICAgdmFyIF9mID0gbWFwRmVhdHVyZVN0cmluZ3MoW3R5cGUsIHNldHRpbmddKTsKICAgICAgICBpZiAoX2ZlYXR1cmVbc2V0dGluZ10gJiYgKF9yID0gQUFUTWFwcGluZ1tfZlswXV0gJiYgQUFUTWFwcGluZ1tfZlswXV1bX2ZbMV1dKSkgewogICAgICAgICAgcmVzW19yXSA9IHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQoKICByZXR1cm4gX09iamVjdCRrZXlzKHJlcyk7Cn0KCnZhciBfY2xhc3MkMzsKZnVuY3Rpb24gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciQzKHRhcmdldCwgcHJvcGVydHksIGRlY29yYXRvcnMsIGRlc2NyaXB0b3IsIGNvbnRleHQpIHsKICB2YXIgZGVzYyA9IHt9OwogIE9iamVjdFsna2UnICsgJ3lzJ10oZGVzY3JpcHRvcikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICBkZXNjW2tleV0gPSBkZXNjcmlwdG9yW2tleV07CiAgfSk7CiAgZGVzYy5lbnVtZXJhYmxlID0gISFkZXNjLmVudW1lcmFibGU7CiAgZGVzYy5jb25maWd1cmFibGUgPSAhIWRlc2MuY29uZmlndXJhYmxlOwoKICBpZiAoJ3ZhbHVlJyBpbiBkZXNjIHx8IGRlc2MuaW5pdGlhbGl6ZXIpIHsKICAgIGRlc2Mud3JpdGFibGUgPSB0cnVlOwogIH0KCiAgZGVzYyA9IGRlY29yYXRvcnMuc2xpY2UoKS5yZXZlcnNlKCkucmVkdWNlKGZ1bmN0aW9uIChkZXNjLCBkZWNvcmF0b3IpIHsKICAgIHJldHVybiBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYykgfHwgZGVzYzsKICB9LCBkZXNjKTsKCiAgaWYgKGNvbnRleHQgJiYgZGVzYy5pbml0aWFsaXplciAhPT0gdm9pZCAwKSB7CiAgICBkZXNjLnZhbHVlID0gZGVzYy5pbml0aWFsaXplciA/IGRlc2MuaW5pdGlhbGl6ZXIuY2FsbChjb250ZXh0KSA6IHZvaWQgMDsKICAgIGRlc2MuaW5pdGlhbGl6ZXIgPSB1bmRlZmluZWQ7CiAgfQoKICBpZiAoZGVzYy5pbml0aWFsaXplciA9PT0gdm9pZCAwKSB7CiAgICBPYmplY3RbJ2RlZmluZScgKyAnUHJvcGVydHknXSh0YXJnZXQsIHByb3BlcnR5LCBkZXNjKTsKICAgIGRlc2MgPSBudWxsOwogIH0KCiAgcmV0dXJuIGRlc2M7Cn0KCnZhciBBQVRMb29rdXBUYWJsZSA9IChfY2xhc3MkMyA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBBQVRMb29rdXBUYWJsZSh0YWJsZSkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFBVExvb2t1cFRhYmxlKTsKCiAgICB0aGlzLnRhYmxlID0gdGFibGU7CiAgfQoKICBBQVRMb29rdXBUYWJsZS5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24gbG9va3VwKGdseXBoKSB7CiAgICBzd2l0Y2ggKHRoaXMudGFibGUudmVyc2lvbikgewogICAgICBjYXNlIDA6CiAgICAgICAgLy8gc2ltcGxlIGFycmF5IGZvcm1hdAogICAgICAgIHJldHVybiB0aGlzLnRhYmxlLnZhbHVlcy5nZXRJdGVtKGdseXBoKTsKCiAgICAgIGNhc2UgMjogLy8gc2VnbWVudCBmb3JtYXQKICAgICAgY2FzZSA0OgogICAgICAgIHsKICAgICAgICAgIHZhciBtaW4gPSAwOwogICAgICAgICAgdmFyIG1heCA9IHRoaXMudGFibGUuYmluYXJ5U2VhcmNoSGVhZGVyLm5Vbml0cyAtIDE7CgogICAgICAgICAgd2hpbGUgKG1pbiA8PSBtYXgpIHsKICAgICAgICAgICAgdmFyIG1pZCA9IG1pbiArIG1heCA+PiAxOwogICAgICAgICAgICB2YXIgc2VnID0gdGhpcy50YWJsZS5zZWdtZW50c1ttaWRdOwoKICAgICAgICAgICAgLy8gc3BlY2lhbCBlbmQgb2Ygc2VhcmNoIHZhbHVlCiAgICAgICAgICAgIGlmIChzZWcuZmlyc3RHbHlwaCA9PT0gMHhmZmZmKSB7CiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChnbHlwaCA8IHNlZy5maXJzdEdseXBoKSB7CiAgICAgICAgICAgICAgbWF4ID0gbWlkIC0gMTsKICAgICAgICAgICAgfSBlbHNlIGlmIChnbHlwaCA+IHNlZy5sYXN0R2x5cGgpIHsKICAgICAgICAgICAgICBtaW4gPSBtaWQgKyAxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGlmICh0aGlzLnRhYmxlLnZlcnNpb24gPT09IDIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWcudmFsdWU7CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBzZWcudmFsdWVzW2dseXBoIC0gc2VnLmZpcnN0R2x5cGhdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgIGNhc2UgNjoKICAgICAgICB7CiAgICAgICAgICAvLyBsb29rdXAgc2luZ2xlCiAgICAgICAgICB2YXIgX21pbiA9IDA7CiAgICAgICAgICB2YXIgX21heCA9IHRoaXMudGFibGUuYmluYXJ5U2VhcmNoSGVhZGVyLm5Vbml0cyAtIDE7CgogICAgICAgICAgd2hpbGUgKF9taW4gPD0gX21heCkgewogICAgICAgICAgICB2YXIgbWlkID0gX21pbiArIF9tYXggPj4gMTsKICAgICAgICAgICAgdmFyIHNlZyA9IHRoaXMudGFibGUuc2VnbWVudHNbbWlkXTsKCiAgICAgICAgICAgIC8vIHNwZWNpYWwgZW5kIG9mIHNlYXJjaCB2YWx1ZQogICAgICAgICAgICBpZiAoc2VnLmdseXBoID09PSAweGZmZmYpIHsKICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGdseXBoIDwgc2VnLmdseXBoKSB7CiAgICAgICAgICAgICAgX21heCA9IG1pZCAtIDE7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2x5cGggPiBzZWcuZ2x5cGgpIHsKICAgICAgICAgICAgICBfbWluID0gbWlkICsgMTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICByZXR1cm4gc2VnLnZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgY2FzZSA4OgogICAgICAgIC8vIGxvb2t1cCB0cmltbWVkCiAgICAgICAgcmV0dXJuIHRoaXMudGFibGUudmFsdWVzW2dseXBoIC0gdGhpcy50YWJsZS5maXJzdEdseXBoXTsKCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxvb2t1cCB0YWJsZSBmb3JtYXQ6ICcgKyB0aGlzLnRhYmxlLnZlcnNpb24pOwogICAgfQogIH07CgogIEFBVExvb2t1cFRhYmxlLnByb3RvdHlwZS5nbHlwaHNGb3JWYWx1ZSA9IGZ1bmN0aW9uIGdseXBoc0ZvclZhbHVlKGNsYXNzVmFsdWUpIHsKICAgIHZhciByZXMgPSBbXTsKCiAgICBzd2l0Y2ggKHRoaXMudGFibGUudmVyc2lvbikgewogICAgICBjYXNlIDI6IC8vIHNlZ21lbnQgZm9ybWF0CiAgICAgIGNhc2UgNDoKICAgICAgICB7CiAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSB0aGlzLnRhYmxlLnNlZ21lbnRzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgICAgICAgdmFyIF9yZWY7CgogICAgICAgICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICAgICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHNlZ21lbnQgPSBfcmVmOwoKICAgICAgICAgICAgaWYgKHRoaXMudGFibGUudmVyc2lvbiA9PT0gMiAmJiBzZWdtZW50LnZhbHVlID09PSBjbGFzc1ZhbHVlKSB7CiAgICAgICAgICAgICAgcmVzLnB1c2guYXBwbHkocmVzLCByYW5nZShzZWdtZW50LmZpcnN0R2x5cGgsIHNlZ21lbnQubGFzdEdseXBoICsgMSkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBzZWdtZW50LnZhbHVlcy5sZW5ndGg7IGluZGV4KyspIHsKICAgICAgICAgICAgICAgIGlmIChzZWdtZW50LnZhbHVlc1tpbmRleF0gPT09IGNsYXNzVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgcmVzLnB1c2goc2VnbWVudC5maXJzdEdseXBoICsgaW5kZXgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgIGNhc2UgNjoKICAgICAgICB7CiAgICAgICAgICAvLyBsb29rdXAgc2luZ2xlCiAgICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IyID0gdGhpcy50YWJsZS5zZWdtZW50cywgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICAgICAgICB2YXIgX3JlZjI7CgogICAgICAgICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgICAgX3JlZjIgPSBfaXRlcmF0b3IyW19pMisrXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICAgICAgICBpZiAoX2kyLmRvbmUpIGJyZWFrOwogICAgICAgICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgX3NlZ21lbnQgPSBfcmVmMjsKCiAgICAgICAgICAgIGlmIChfc2VnbWVudC52YWx1ZSA9PT0gY2xhc3NWYWx1ZSkgewogICAgICAgICAgICAgIHJlcy5wdXNoKF9zZWdtZW50LmdseXBoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgIGNhc2UgODoKICAgICAgICB7CiAgICAgICAgICAvLyBsb29rdXAgdHJpbW1lZAogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnRhYmxlLnZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAodGhpcy50YWJsZS52YWx1ZXNbaV0gPT09IGNsYXNzVmFsdWUpIHsKICAgICAgICAgICAgICByZXMucHVzaCh0aGlzLnRhYmxlLmZpcnN0R2x5cGggKyBpKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGxvb2t1cCB0YWJsZSBmb3JtYXQ6ICcgKyB0aGlzLnRhYmxlLnZlcnNpb24pOwogICAgfQoKICAgIHJldHVybiByZXM7CiAgfTsKCiAgcmV0dXJuIEFBVExvb2t1cFRhYmxlOwp9KCksIChfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yJDMoX2NsYXNzJDMucHJvdG90eXBlLCAnZ2x5cGhzRm9yVmFsdWUnLCBbY2FjaGVdLCBfT2JqZWN0JGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MkMy5wcm90b3R5cGUsICdnbHlwaHNGb3JWYWx1ZScpLCBfY2xhc3MkMy5wcm90b3R5cGUpKSwgX2NsYXNzJDMpOwoKdmFyIFNUQVJUX09GX1RFWFRfU1RBVEUgPSAwOwp2YXIgRU5EX09GX1RFWFRfQ0xBU1MgPSAwOwp2YXIgT1VUX09GX0JPVU5EU19DTEFTUyA9IDE7CnZhciBERUxFVEVEX0dMWVBIX0NMQVNTID0gMjsKdmFyIERPTlRfQURWQU5DRSA9IDB4NDAwMDsKCnZhciBBQVRTdGF0ZU1hY2hpbmUgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gQUFUU3RhdGVNYWNoaW5lKHN0YXRlVGFibGUpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBBQVRTdGF0ZU1hY2hpbmUpOwoKICAgIHRoaXMuc3RhdGVUYWJsZSA9IHN0YXRlVGFibGU7CiAgICB0aGlzLmxvb2t1cFRhYmxlID0gbmV3IEFBVExvb2t1cFRhYmxlKHN0YXRlVGFibGUuY2xhc3NUYWJsZSk7CiAgfQoKICBBQVRTdGF0ZU1hY2hpbmUucHJvdG90eXBlLnByb2Nlc3MgPSBmdW5jdGlvbiBwcm9jZXNzKGdseXBocywgcmV2ZXJzZSwgcHJvY2Vzc0VudHJ5KSB7CiAgICB2YXIgY3VycmVudFN0YXRlID0gU1RBUlRfT0ZfVEVYVF9TVEFURTsgLy8gU1RBUlRfT0ZfTElORV9TVEFURSBpcyB1c2VkIGZvciBrYXNoaWRhIGdseXBoIGluc2VydGlvbnMgc29tZXRpbWVzIEkgdGhpbms/CiAgICB2YXIgaW5kZXggPSByZXZlcnNlID8gZ2x5cGhzLmxlbmd0aCAtIDEgOiAwOwogICAgdmFyIGRpciA9IHJldmVyc2UgPyAtMSA6IDE7CgogICAgd2hpbGUgKGRpciA9PT0gMSAmJiBpbmRleCA8PSBnbHlwaHMubGVuZ3RoIHx8IGRpciA9PT0gLTEgJiYgaW5kZXggPj0gLTEpIHsKICAgICAgdmFyIGdseXBoID0gbnVsbDsKICAgICAgdmFyIGNsYXNzQ29kZSA9IE9VVF9PRl9CT1VORFNfQ0xBU1M7CiAgICAgIHZhciBzaG91bGRBZHZhbmNlID0gdHJ1ZTsKCiAgICAgIGlmIChpbmRleCA9PT0gZ2x5cGhzLmxlbmd0aCB8fCBpbmRleCA9PT0gLTEpIHsKICAgICAgICBjbGFzc0NvZGUgPSBFTkRfT0ZfVEVYVF9DTEFTUzsKICAgICAgfSBlbHNlIHsKICAgICAgICBnbHlwaCA9IGdseXBoc1tpbmRleF07CiAgICAgICAgaWYgKGdseXBoLmlkID09PSAweGZmZmYpIHsKICAgICAgICAgIC8vIGRlbGV0ZWQgZ2x5cGgKICAgICAgICAgIGNsYXNzQ29kZSA9IERFTEVURURfR0xZUEhfQ0xBU1M7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNsYXNzQ29kZSA9IHRoaXMubG9va3VwVGFibGUubG9va3VwKGdseXBoLmlkKTsKICAgICAgICAgIGlmIChjbGFzc0NvZGUgPT0gbnVsbCkgewogICAgICAgICAgICBjbGFzc0NvZGUgPSBPVVRfT0ZfQk9VTkRTX0NMQVNTOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgdmFyIHJvdyA9IHRoaXMuc3RhdGVUYWJsZS5zdGF0ZUFycmF5LmdldEl0ZW0oY3VycmVudFN0YXRlKTsKICAgICAgdmFyIGVudHJ5SW5kZXggPSByb3dbY2xhc3NDb2RlXTsKICAgICAgdmFyIGVudHJ5ID0gdGhpcy5zdGF0ZVRhYmxlLmVudHJ5VGFibGUuZ2V0SXRlbShlbnRyeUluZGV4KTsKCiAgICAgIGlmIChjbGFzc0NvZGUgIT09IEVORF9PRl9URVhUX0NMQVNTICYmIGNsYXNzQ29kZSAhPT0gREVMRVRFRF9HTFlQSF9DTEFTUykgewogICAgICAgIHByb2Nlc3NFbnRyeShnbHlwaCwgZW50cnksIGluZGV4KTsKICAgICAgICBzaG91bGRBZHZhbmNlID0gIShlbnRyeS5mbGFncyAmIERPTlRfQURWQU5DRSk7CiAgICAgIH0KCiAgICAgIGN1cnJlbnRTdGF0ZSA9IGVudHJ5Lm5ld1N0YXRlOwogICAgICBpZiAoc2hvdWxkQWR2YW5jZSkgewogICAgICAgIGluZGV4ICs9IGRpcjsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBnbHlwaHM7CiAgfTsKCiAgLyoqCiAgICogUGVyZm9ybXMgYSBkZXB0aC1maXJzdCB0cmF2ZXJzYWwgb2YgdGhlIGdseXBoIHN0cmluZ3MKICAgKiByZXByZXNlbnRlZCBieSB0aGUgc3RhdGUgbWFjaGluZS4KICAgKi8KCgogIEFBVFN0YXRlTWFjaGluZS5wcm90b3R5cGUudHJhdmVyc2UgPSBmdW5jdGlvbiB0cmF2ZXJzZShvcHRzKSB7CiAgICB2YXIgc3RhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IDA7CiAgICB2YXIgdmlzaXRlZCA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogbmV3IF9TZXQoKTsKCiAgICBpZiAodmlzaXRlZC5oYXMoc3RhdGUpKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2aXNpdGVkLmFkZChzdGF0ZSk7CgogICAgdmFyIF9zdGF0ZVRhYmxlID0gdGhpcy5zdGF0ZVRhYmxlLAogICAgICAgIG5DbGFzc2VzID0gX3N0YXRlVGFibGUubkNsYXNzZXMsCiAgICAgICAgc3RhdGVBcnJheSA9IF9zdGF0ZVRhYmxlLnN0YXRlQXJyYXksCiAgICAgICAgZW50cnlUYWJsZSA9IF9zdGF0ZVRhYmxlLmVudHJ5VGFibGU7CgogICAgdmFyIHJvdyA9IHN0YXRlQXJyYXkuZ2V0SXRlbShzdGF0ZSk7CgogICAgLy8gU2tpcCBwcmVkZWZpbmVkIGNsYXNzZXMKICAgIGZvciAodmFyIGNsYXNzQ29kZSA9IDQ7IGNsYXNzQ29kZSA8IG5DbGFzc2VzOyBjbGFzc0NvZGUrKykgewogICAgICB2YXIgZW50cnlJbmRleCA9IHJvd1tjbGFzc0NvZGVdOwogICAgICB2YXIgZW50cnkgPSBlbnRyeVRhYmxlLmdldEl0ZW0oZW50cnlJbmRleCk7CgogICAgICAvLyBUcnkgYWxsIGdseXBocyBpbiB0aGUgY2xhc3MKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gdGhpcy5sb29rdXBUYWJsZS5nbHlwaHNGb3JWYWx1ZShjbGFzc0NvZGUpLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgICB2YXIgX3JlZjsKCiAgICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgZ2x5cGggPSBfcmVmOwoKICAgICAgICBpZiAob3B0cy5lbnRlcikgewogICAgICAgICAgb3B0cy5lbnRlcihnbHlwaCwgZW50cnkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGVudHJ5Lm5ld1N0YXRlICE9PSAwKSB7CiAgICAgICAgICB0aGlzLnRyYXZlcnNlKG9wdHMsIGVudHJ5Lm5ld1N0YXRlLCB2aXNpdGVkKTsKICAgICAgICB9CgogICAgICAgIGlmIChvcHRzLmV4aXQpIHsKICAgICAgICAgIG9wdHMuZXhpdChnbHlwaCwgZW50cnkpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIHJldHVybiBBQVRTdGF0ZU1hY2hpbmU7Cn0oKTsKCnZhciBfY2xhc3MkMjsKZnVuY3Rpb24gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciQyKHRhcmdldCwgcHJvcGVydHksIGRlY29yYXRvcnMsIGRlc2NyaXB0b3IsIGNvbnRleHQpIHsKICB2YXIgZGVzYyA9IHt9OwogIE9iamVjdFsna2UnICsgJ3lzJ10oZGVzY3JpcHRvcikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7CiAgICBkZXNjW2tleV0gPSBkZXNjcmlwdG9yW2tleV07CiAgfSk7CiAgZGVzYy5lbnVtZXJhYmxlID0gISFkZXNjLmVudW1lcmFibGU7CiAgZGVzYy5jb25maWd1cmFibGUgPSAhIWRlc2MuY29uZmlndXJhYmxlOwoKICBpZiAoJ3ZhbHVlJyBpbiBkZXNjIHx8IGRlc2MuaW5pdGlhbGl6ZXIpIHsKICAgIGRlc2Mud3JpdGFibGUgPSB0cnVlOwogIH0KCiAgZGVzYyA9IGRlY29yYXRvcnMuc2xpY2UoKS5yZXZlcnNlKCkucmVkdWNlKGZ1bmN0aW9uIChkZXNjLCBkZWNvcmF0b3IpIHsKICAgIHJldHVybiBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYykgfHwgZGVzYzsKICB9LCBkZXNjKTsKCiAgaWYgKGNvbnRleHQgJiYgZGVzYy5pbml0aWFsaXplciAhPT0gdm9pZCAwKSB7CiAgICBkZXNjLnZhbHVlID0gZGVzYy5pbml0aWFsaXplciA/IGRlc2MuaW5pdGlhbGl6ZXIuY2FsbChjb250ZXh0KSA6IHZvaWQgMDsKICAgIGRlc2MuaW5pdGlhbGl6ZXIgPSB1bmRlZmluZWQ7CiAgfQoKICBpZiAoZGVzYy5pbml0aWFsaXplciA9PT0gdm9pZCAwKSB7CiAgICBPYmplY3RbJ2RlZmluZScgKyAnUHJvcGVydHknXSh0YXJnZXQsIHByb3BlcnR5LCBkZXNjKTsKICAgIGRlc2MgPSBudWxsOwogIH0KCiAgcmV0dXJuIGRlc2M7Cn0KCi8vIGluZGljIHJlcGxhY2VtZW50IGZsYWdzCnZhciBNQVJLX0ZJUlNUID0gMHg4MDAwOwp2YXIgTUFSS19MQVNUID0gMHgyMDAwOwp2YXIgVkVSQiA9IDB4MDAwRjsKCi8vIGNvbnRleHR1YWwgc3Vic3RpdHV0aW9uIGFuZCBnbHlwaCBpbnNlcnRpb24gZmxhZwp2YXIgU0VUX01BUksgPSAweDgwMDA7CgovLyBsaWdhdHVyZSBlbnRyeSBmbGFncwp2YXIgU0VUX0NPTVBPTkVOVCA9IDB4ODAwMDsKdmFyIFBFUkZPUk1fQUNUSU9OID0gMHgyMDAwOwoKLy8gbGlnYXR1cmUgYWN0aW9uIG1hc2tzCnZhciBMQVNUX01BU0sgPSAweDgwMDAwMDAwOwp2YXIgU1RPUkVfTUFTSyA9IDB4NDAwMDAwMDA7CnZhciBPRkZTRVRfTUFTSyA9IDB4M0ZGRkZGRkY7Cgp2YXIgUkVWRVJTRV9ESVJFQ1RJT04gPSAweDQwMDAwMDsKdmFyIENVUlJFTlRfSU5TRVJUX0JFRk9SRSA9IDB4MDgwMDsKdmFyIE1BUktFRF9JTlNFUlRfQkVGT1JFID0gMHgwNDAwOwp2YXIgQ1VSUkVOVF9JTlNFUlRfQ09VTlQgPSAweDAzRTA7CnZhciBNQVJLRURfSU5TRVJUX0NPVU5UID0gMHgwMDFGOwoKdmFyIEFBVE1vcnhQcm9jZXNzb3IgPSAoX2NsYXNzJDIgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gQUFUTW9yeFByb2Nlc3Nvcihmb250KSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQUFUTW9yeFByb2Nlc3Nvcik7CgogICAgdGhpcy5wcm9jZXNzSW5kaWNSZWFycmFnZW1lbnQgPSB0aGlzLnByb2Nlc3NJbmRpY1JlYXJyYWdlbWVudC5iaW5kKHRoaXMpOwogICAgdGhpcy5wcm9jZXNzQ29udGV4dHVhbFN1YnN0aXR1dGlvbiA9IHRoaXMucHJvY2Vzc0NvbnRleHR1YWxTdWJzdGl0dXRpb24uYmluZCh0aGlzKTsKICAgIHRoaXMucHJvY2Vzc0xpZ2F0dXJlID0gdGhpcy5wcm9jZXNzTGlnYXR1cmUuYmluZCh0aGlzKTsKICAgIHRoaXMucHJvY2Vzc05vbmNvbnRleHR1YWxTdWJzdGl0dXRpb25zID0gdGhpcy5wcm9jZXNzTm9uY29udGV4dHVhbFN1YnN0aXR1dGlvbnMuYmluZCh0aGlzKTsKICAgIHRoaXMucHJvY2Vzc0dseXBoSW5zZXJ0aW9uID0gdGhpcy5wcm9jZXNzR2x5cGhJbnNlcnRpb24uYmluZCh0aGlzKTsKICAgIHRoaXMuZm9udCA9IGZvbnQ7CiAgICB0aGlzLm1vcnggPSBmb250Lm1vcng7CiAgICB0aGlzLmlucHV0Q2FjaGUgPSBudWxsOwogIH0KCiAgLy8gUHJvY2Vzc2VzIGFuIGFycmF5IG9mIGdseXBocyBhbmQgYXBwbGllcyB0aGUgc3BlY2lmaWVkIGZlYXR1cmVzCiAgLy8gRmVhdHVyZXMgc2hvdWxkIGJlIGluIHRoZSBmb3JtIG9mIHtmZWF0dXJlVHlwZTp7ZmVhdHVyZVNldHRpbmc6dHJ1ZX19CgoKICBBQVRNb3J4UHJvY2Vzc29yLnByb3RvdHlwZS5wcm9jZXNzID0gZnVuY3Rpb24gcHJvY2VzcyhnbHlwaHMpIHsKICAgIHZhciBmZWF0dXJlcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307CgogICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gdGhpcy5tb3J4LmNoYWlucywgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICAgIHZhciBfcmVmOwoKICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBjaGFpbiA9IF9yZWY7CgogICAgICB2YXIgZmxhZ3MgPSBjaGFpbi5kZWZhdWx0RmxhZ3M7CgogICAgICAvLyBlbmFibGUvZGlzYWJsZSB0aGUgcmVxdWVzdGVkIGZlYXR1cmVzCiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBjaGFpbi5mZWF0dXJlcywgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICAgIHZhciBfcmVmMjsKCiAgICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMiA9IF9pdGVyYXRvcjJbX2kyKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICAgIGlmIChfaTIuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMiA9IF9pMi52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBmZWF0dXJlID0gX3JlZjI7CgogICAgICAgIHZhciBmID0gdm9pZCAwOwogICAgICAgIGlmICgoZiA9IGZlYXR1cmVzW2ZlYXR1cmUuZmVhdHVyZVR5cGVdKSAmJiBmW2ZlYXR1cmUuZmVhdHVyZVNldHRpbmddKSB7CiAgICAgICAgICBmbGFncyAmPSBmZWF0dXJlLmRpc2FibGVGbGFnczsKICAgICAgICAgIGZsYWdzIHw9IGZlYXR1cmUuZW5hYmxlRmxhZ3M7CiAgICAgICAgfQogICAgICB9CgogICAgICBmb3IgKHZhciBfaXRlcmF0b3IzID0gY2hhaW4uc3VidGFibGVzLCBfaXNBcnJheTMgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjMpLCBfaTMgPSAwLCBfaXRlcmF0b3IzID0gX2lzQXJyYXkzID8gX2l0ZXJhdG9yMyA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IzKTs7KSB7CiAgICAgICAgdmFyIF9yZWYzOwoKICAgICAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgICAgICBpZiAoX2kzID49IF9pdGVyYXRvcjMubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWYzID0gX2l0ZXJhdG9yM1tfaTMrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pMyA9IF9pdGVyYXRvcjMubmV4dCgpOwogICAgICAgICAgaWYgKF9pMy5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWYzID0gX2kzLnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHN1YnRhYmxlID0gX3JlZjM7CgogICAgICAgIGlmIChzdWJ0YWJsZS5zdWJGZWF0dXJlRmxhZ3MgJiBmbGFncykgewogICAgICAgICAgdGhpcy5wcm9jZXNzU3VidGFibGUoc3VidGFibGUsIGdseXBocyk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gcmVtb3ZlIGRlbGV0ZWQgZ2x5cGhzCiAgICB2YXIgaW5kZXggPSBnbHlwaHMubGVuZ3RoIC0gMTsKICAgIHdoaWxlIChpbmRleCA+PSAwKSB7CiAgICAgIGlmIChnbHlwaHNbaW5kZXhdLmlkID09PSAweGZmZmYpIHsKICAgICAgICBnbHlwaHMuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgfQoKICAgICAgaW5kZXgtLTsKICAgIH0KCiAgICByZXR1cm4gZ2x5cGhzOwogIH07CgogIEFBVE1vcnhQcm9jZXNzb3IucHJvdG90eXBlLnByb2Nlc3NTdWJ0YWJsZSA9IGZ1bmN0aW9uIHByb2Nlc3NTdWJ0YWJsZShzdWJ0YWJsZSwgZ2x5cGhzKSB7CiAgICB0aGlzLnN1YnRhYmxlID0gc3VidGFibGU7CiAgICB0aGlzLmdseXBocyA9IGdseXBoczsKICAgIGlmICh0aGlzLnN1YnRhYmxlLnR5cGUgPT09IDQpIHsKICAgICAgdGhpcy5wcm9jZXNzTm9uY29udGV4dHVhbFN1YnN0aXR1dGlvbnModGhpcy5zdWJ0YWJsZSwgdGhpcy5nbHlwaHMpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdGhpcy5saWdhdHVyZVN0YWNrID0gW107CiAgICB0aGlzLm1hcmtlZEdseXBoID0gbnVsbDsKICAgIHRoaXMuZmlyc3RHbHlwaCA9IG51bGw7CiAgICB0aGlzLmxhc3RHbHlwaCA9IG51bGw7CiAgICB0aGlzLm1hcmtlZEluZGV4ID0gbnVsbDsKCiAgICB2YXIgc3RhdGVNYWNoaW5lID0gdGhpcy5nZXRTdGF0ZU1hY2hpbmUoc3VidGFibGUpOwogICAgdmFyIHByb2Nlc3MgPSB0aGlzLmdldFByb2Nlc3NvcigpOwoKICAgIHZhciByZXZlcnNlID0gISEodGhpcy5zdWJ0YWJsZS5jb3ZlcmFnZSAmIFJFVkVSU0VfRElSRUNUSU9OKTsKICAgIHJldHVybiBzdGF0ZU1hY2hpbmUucHJvY2Vzcyh0aGlzLmdseXBocywgcmV2ZXJzZSwgcHJvY2Vzcyk7CiAgfTsKCiAgQUFUTW9yeFByb2Nlc3Nvci5wcm90b3R5cGUuZ2V0U3RhdGVNYWNoaW5lID0gZnVuY3Rpb24gZ2V0U3RhdGVNYWNoaW5lKHN1YnRhYmxlKSB7CiAgICByZXR1cm4gbmV3IEFBVFN0YXRlTWFjaGluZShzdWJ0YWJsZS50YWJsZS5zdGF0ZVRhYmxlKTsKICB9OwoKICBBQVRNb3J4UHJvY2Vzc29yLnByb3RvdHlwZS5nZXRQcm9jZXNzb3IgPSBmdW5jdGlvbiBnZXRQcm9jZXNzb3IoKSB7CiAgICBzd2l0Y2ggKHRoaXMuc3VidGFibGUudHlwZSkgewogICAgICBjYXNlIDA6CiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0luZGljUmVhcnJhZ2VtZW50OwogICAgICBjYXNlIDE6CiAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc0NvbnRleHR1YWxTdWJzdGl0dXRpb247CiAgICAgIGNhc2UgMjoKICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTGlnYXR1cmU7CiAgICAgIGNhc2UgNDoKICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzTm9uY29udGV4dHVhbFN1YnN0aXR1dGlvbnM7CiAgICAgIGNhc2UgNToKICAgICAgICByZXR1cm4gdGhpcy5wcm9jZXNzR2x5cGhJbnNlcnRpb247CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG1vcnggc3VidGFibGUgdHlwZTogJyArIHRoaXMuc3VidGFibGUudHlwZSk7CiAgICB9CiAgfTsKCiAgQUFUTW9yeFByb2Nlc3Nvci5wcm90b3R5cGUucHJvY2Vzc0luZGljUmVhcnJhZ2VtZW50ID0gZnVuY3Rpb24gcHJvY2Vzc0luZGljUmVhcnJhZ2VtZW50KGdseXBoLCBlbnRyeSwgaW5kZXgpIHsKICAgIGlmIChlbnRyeS5mbGFncyAmIE1BUktfRklSU1QpIHsKICAgICAgdGhpcy5maXJzdEdseXBoID0gaW5kZXg7CiAgICB9CgogICAgaWYgKGVudHJ5LmZsYWdzICYgTUFSS19MQVNUKSB7CiAgICAgIHRoaXMubGFzdEdseXBoID0gaW5kZXg7CiAgICB9CgogICAgcmVvcmRlckdseXBocyh0aGlzLmdseXBocywgZW50cnkuZmxhZ3MgJiBWRVJCLCB0aGlzLmZpcnN0R2x5cGgsIHRoaXMubGFzdEdseXBoKTsKICB9OwoKICBBQVRNb3J4UHJvY2Vzc29yLnByb3RvdHlwZS5wcm9jZXNzQ29udGV4dHVhbFN1YnN0aXR1dGlvbiA9IGZ1bmN0aW9uIHByb2Nlc3NDb250ZXh0dWFsU3Vic3RpdHV0aW9uKGdseXBoLCBlbnRyeSwgaW5kZXgpIHsKICAgIHZhciBzdWJzaXR1dGlvbnMgPSB0aGlzLnN1YnRhYmxlLnRhYmxlLnN1YnN0aXR1dGlvblRhYmxlLml0ZW1zOwogICAgaWYgKGVudHJ5Lm1hcmtJbmRleCAhPT0gMHhmZmZmKSB7CiAgICAgIHZhciBsb29rdXAgPSBzdWJzaXR1dGlvbnMuZ2V0SXRlbShlbnRyeS5tYXJrSW5kZXgpOwogICAgICB2YXIgbG9va3VwVGFibGUgPSBuZXcgQUFUTG9va3VwVGFibGUobG9va3VwKTsKICAgICAgZ2x5cGggPSB0aGlzLmdseXBoc1t0aGlzLm1hcmtlZEdseXBoXTsKICAgICAgdmFyIGdpZCA9IGxvb2t1cFRhYmxlLmxvb2t1cChnbHlwaC5pZCk7CiAgICAgIGlmIChnaWQpIHsKICAgICAgICB0aGlzLmdseXBoc1t0aGlzLm1hcmtlZEdseXBoXSA9IHRoaXMuZm9udC5nZXRHbHlwaChnaWQsIGdseXBoLmNvZGVQb2ludHMpOwogICAgICB9CiAgICB9CgogICAgaWYgKGVudHJ5LmN1cnJlbnRJbmRleCAhPT0gMHhmZmZmKSB7CiAgICAgIHZhciBfbG9va3VwID0gc3Vic2l0dXRpb25zLmdldEl0ZW0oZW50cnkuY3VycmVudEluZGV4KTsKICAgICAgdmFyIF9sb29rdXBUYWJsZSA9IG5ldyBBQVRMb29rdXBUYWJsZShfbG9va3VwKTsKICAgICAgZ2x5cGggPSB0aGlzLmdseXBoc1tpbmRleF07CiAgICAgIHZhciBnaWQgPSBfbG9va3VwVGFibGUubG9va3VwKGdseXBoLmlkKTsKICAgICAgaWYgKGdpZCkgewogICAgICAgIHRoaXMuZ2x5cGhzW2luZGV4XSA9IHRoaXMuZm9udC5nZXRHbHlwaChnaWQsIGdseXBoLmNvZGVQb2ludHMpOwogICAgICB9CiAgICB9CgogICAgaWYgKGVudHJ5LmZsYWdzICYgU0VUX01BUkspIHsKICAgICAgdGhpcy5tYXJrZWRHbHlwaCA9IGluZGV4OwogICAgfQogIH07CgogIEFBVE1vcnhQcm9jZXNzb3IucHJvdG90eXBlLnByb2Nlc3NMaWdhdHVyZSA9IGZ1bmN0aW9uIHByb2Nlc3NMaWdhdHVyZShnbHlwaCwgZW50cnksIGluZGV4KSB7CiAgICBpZiAoZW50cnkuZmxhZ3MgJiBTRVRfQ09NUE9ORU5UKSB7CiAgICAgIHRoaXMubGlnYXR1cmVTdGFjay5wdXNoKGluZGV4KTsKICAgIH0KCiAgICBpZiAoZW50cnkuZmxhZ3MgJiBQRVJGT1JNX0FDVElPTikgewogICAgICB2YXIgX2xpZ2F0dXJlU3RhY2s7CgogICAgICB2YXIgYWN0aW9ucyA9IHRoaXMuc3VidGFibGUudGFibGUubGlnYXR1cmVBY3Rpb25zOwogICAgICB2YXIgY29tcG9uZW50cyA9IHRoaXMuc3VidGFibGUudGFibGUuY29tcG9uZW50czsKICAgICAgdmFyIGxpZ2F0dXJlTGlzdCA9IHRoaXMuc3VidGFibGUudGFibGUubGlnYXR1cmVMaXN0OwoKICAgICAgdmFyIGFjdGlvbkluZGV4ID0gZW50cnkuYWN0aW9uOwogICAgICB2YXIgbGFzdCA9IGZhbHNlOwogICAgICB2YXIgbGlnYXR1cmVJbmRleCA9IDA7CiAgICAgIHZhciBjb2RlUG9pbnRzID0gW107CiAgICAgIHZhciBsaWdhdHVyZUdseXBocyA9IFtdOwoKICAgICAgd2hpbGUgKCFsYXN0KSB7CiAgICAgICAgdmFyIF9jb2RlUG9pbnRzOwoKICAgICAgICB2YXIgY29tcG9uZW50R2x5cGggPSB0aGlzLmxpZ2F0dXJlU3RhY2sucG9wKCk7CiAgICAgICAgKF9jb2RlUG9pbnRzID0gY29kZVBvaW50cykudW5zaGlmdC5hcHBseShfY29kZVBvaW50cywgdGhpcy5nbHlwaHNbY29tcG9uZW50R2x5cGhdLmNvZGVQb2ludHMpOwoKICAgICAgICB2YXIgYWN0aW9uID0gYWN0aW9ucy5nZXRJdGVtKGFjdGlvbkluZGV4KyspOwogICAgICAgIGxhc3QgPSAhIShhY3Rpb24gJiBMQVNUX01BU0spOwogICAgICAgIHZhciBzdG9yZSA9ICEhKGFjdGlvbiAmIFNUT1JFX01BU0spOwogICAgICAgIHZhciBvZmZzZXQgPSAoYWN0aW9uICYgT0ZGU0VUX01BU0spIDw8IDIgPj4gMjsgLy8gc2lnbiBleHRlbmQgMzAgdG8gMzIgYml0cwogICAgICAgIG9mZnNldCArPSB0aGlzLmdseXBoc1tjb21wb25lbnRHbHlwaF0uaWQ7CgogICAgICAgIHZhciBjb21wb25lbnQgPSBjb21wb25lbnRzLmdldEl0ZW0ob2Zmc2V0KTsKICAgICAgICBsaWdhdHVyZUluZGV4ICs9IGNvbXBvbmVudDsKCiAgICAgICAgaWYgKGxhc3QgfHwgc3RvcmUpIHsKICAgICAgICAgIHZhciBsaWdhdHVyZUVudHJ5ID0gbGlnYXR1cmVMaXN0LmdldEl0ZW0obGlnYXR1cmVJbmRleCk7CiAgICAgICAgICB0aGlzLmdseXBoc1tjb21wb25lbnRHbHlwaF0gPSB0aGlzLmZvbnQuZ2V0R2x5cGgobGlnYXR1cmVFbnRyeSwgY29kZVBvaW50cyk7CiAgICAgICAgICBsaWdhdHVyZUdseXBocy5wdXNoKGNvbXBvbmVudEdseXBoKTsKICAgICAgICAgIGxpZ2F0dXJlSW5kZXggPSAwOwogICAgICAgICAgY29kZVBvaW50cyA9IFtdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aGlzLmdseXBoc1tjb21wb25lbnRHbHlwaF0gPSB0aGlzLmZvbnQuZ2V0R2x5cGgoMHhmZmZmKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIFB1dCBsaWdhdHVyZSBnbHlwaCBpbmRleGVzIGJhY2sgb24gdGhlIHN0YWNrCiAgICAgIChfbGlnYXR1cmVTdGFjayA9IHRoaXMubGlnYXR1cmVTdGFjaykucHVzaC5hcHBseShfbGlnYXR1cmVTdGFjaywgbGlnYXR1cmVHbHlwaHMpOwogICAgfQogIH07CgogIEFBVE1vcnhQcm9jZXNzb3IucHJvdG90eXBlLnByb2Nlc3NOb25jb250ZXh0dWFsU3Vic3RpdHV0aW9ucyA9IGZ1bmN0aW9uIHByb2Nlc3NOb25jb250ZXh0dWFsU3Vic3RpdHV0aW9ucyhzdWJ0YWJsZSwgZ2x5cGhzLCBpbmRleCkgewogICAgdmFyIGxvb2t1cFRhYmxlID0gbmV3IEFBVExvb2t1cFRhYmxlKHN1YnRhYmxlLnRhYmxlLmxvb2t1cFRhYmxlKTsKCiAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBnbHlwaHMubGVuZ3RoOyBpbmRleCsrKSB7CiAgICAgIHZhciBnbHlwaCA9IGdseXBoc1tpbmRleF07CiAgICAgIGlmIChnbHlwaC5pZCAhPT0gMHhmZmZmKSB7CiAgICAgICAgdmFyIGdpZCA9IGxvb2t1cFRhYmxlLmxvb2t1cChnbHlwaC5pZCk7CiAgICAgICAgaWYgKGdpZCkgewogICAgICAgICAgLy8gMCBtZWFucyBkbyBub3RoaW5nCiAgICAgICAgICBnbHlwaHNbaW5kZXhdID0gdGhpcy5mb250LmdldEdseXBoKGdpZCwgZ2x5cGguY29kZVBvaW50cyk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfTsKCiAgQUFUTW9yeFByb2Nlc3Nvci5wcm90b3R5cGUuX2luc2VydEdseXBocyA9IGZ1bmN0aW9uIF9pbnNlcnRHbHlwaHMoZ2x5cGhJbmRleCwgaW5zZXJ0aW9uQWN0aW9uSW5kZXgsIGNvdW50LCBpc0JlZm9yZSkgewogICAgdmFyIF9nbHlwaHM7CgogICAgdmFyIGluc2VydGlvbnMgPSBbXTsKICAgIHdoaWxlIChjb3VudC0tKSB7CiAgICAgIHZhciBnaWQgPSB0aGlzLnN1YnRhYmxlLnRhYmxlLmluc2VydGlvbkFjdGlvbnMuZ2V0SXRlbShpbnNlcnRpb25BY3Rpb25JbmRleCsrKTsKICAgICAgaW5zZXJ0aW9ucy5wdXNoKHRoaXMuZm9udC5nZXRHbHlwaChnaWQpKTsKICAgIH0KCiAgICBpZiAoIWlzQmVmb3JlKSB7CiAgICAgIGdseXBoSW5kZXgrKzsKICAgIH0KCiAgICAoX2dseXBocyA9IHRoaXMuZ2x5cGhzKS5zcGxpY2UuYXBwbHkoX2dseXBocywgW2dseXBoSW5kZXgsIDBdLmNvbmNhdChpbnNlcnRpb25zKSk7CiAgfTsKCiAgQUFUTW9yeFByb2Nlc3Nvci5wcm90b3R5cGUucHJvY2Vzc0dseXBoSW5zZXJ0aW9uID0gZnVuY3Rpb24gcHJvY2Vzc0dseXBoSW5zZXJ0aW9uKGdseXBoLCBlbnRyeSwgaW5kZXgpIHsKICAgIGlmIChlbnRyeS5mbGFncyAmIFNFVF9NQVJLKSB7CiAgICAgIHRoaXMubWFya2VkSW5kZXggPSBpbmRleDsKICAgIH0KCiAgICBpZiAoZW50cnkubWFya2VkSW5zZXJ0SW5kZXggIT09IDB4ZmZmZikgewogICAgICB2YXIgY291bnQgPSAoZW50cnkuZmxhZ3MgJiBNQVJLRURfSU5TRVJUX0NPVU5UKSA+Pj4gNTsKICAgICAgdmFyIGlzQmVmb3JlID0gISEoZW50cnkuZmxhZ3MgJiBNQVJLRURfSU5TRVJUX0JFRk9SRSk7CiAgICAgIHRoaXMuX2luc2VydEdseXBocyh0aGlzLm1hcmtlZEluZGV4LCBlbnRyeS5tYXJrZWRJbnNlcnRJbmRleCwgY291bnQsIGlzQmVmb3JlKTsKICAgIH0KCiAgICBpZiAoZW50cnkuY3VycmVudEluc2VydEluZGV4ICE9PSAweGZmZmYpIHsKICAgICAgdmFyIF9jb3VudCA9IChlbnRyeS5mbGFncyAmIENVUlJFTlRfSU5TRVJUX0NPVU5UKSA+Pj4gNTsKICAgICAgdmFyIF9pc0JlZm9yZSA9ICEhKGVudHJ5LmZsYWdzICYgQ1VSUkVOVF9JTlNFUlRfQkVGT1JFKTsKICAgICAgdGhpcy5faW5zZXJ0R2x5cGhzKGluZGV4LCBlbnRyeS5jdXJyZW50SW5zZXJ0SW5kZXgsIF9jb3VudCwgX2lzQmVmb3JlKTsKICAgIH0KICB9OwoKICBBQVRNb3J4UHJvY2Vzc29yLnByb3RvdHlwZS5nZXRTdXBwb3J0ZWRGZWF0dXJlcyA9IGZ1bmN0aW9uIGdldFN1cHBvcnRlZEZlYXR1cmVzKCkgewogICAgdmFyIGZlYXR1cmVzID0gW107CiAgICBmb3IgKHZhciBfaXRlcmF0b3I0ID0gdGhpcy5tb3J4LmNoYWlucywgX2lzQXJyYXk0ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I0KSwgX2k0ID0gMCwgX2l0ZXJhdG9yNCA9IF9pc0FycmF5NCA/IF9pdGVyYXRvcjQgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNCk7OykgewogICAgICB2YXIgX3JlZjQ7CgogICAgICBpZiAoX2lzQXJyYXk0KSB7CiAgICAgICAgaWYgKF9pNCA+PSBfaXRlcmF0b3I0Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjQgPSBfaXRlcmF0b3I0W19pNCsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTQgPSBfaXRlcmF0b3I0Lm5leHQoKTsKICAgICAgICBpZiAoX2k0LmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWY0ID0gX2k0LnZhbHVlOwogICAgICB9CgogICAgICB2YXIgY2hhaW4gPSBfcmVmNDsKCiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjUgPSBjaGFpbi5mZWF0dXJlcywgX2lzQXJyYXk1ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I1KSwgX2k1ID0gMCwgX2l0ZXJhdG9yNSA9IF9pc0FycmF5NSA/IF9pdGVyYXRvcjUgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNSk7OykgewogICAgICAgIHZhciBfcmVmNTsKCiAgICAgICAgaWYgKF9pc0FycmF5NSkgewogICAgICAgICAgaWYgKF9pNSA+PSBfaXRlcmF0b3I1Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmNSA9IF9pdGVyYXRvcjVbX2k1KytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTUgPSBfaXRlcmF0b3I1Lm5leHQoKTsKICAgICAgICAgIGlmIChfaTUuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmNSA9IF9pNS52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBmZWF0dXJlID0gX3JlZjU7CgogICAgICAgIGZlYXR1cmVzLnB1c2goW2ZlYXR1cmUuZmVhdHVyZVR5cGUsIGZlYXR1cmUuZmVhdHVyZVNldHRpbmddKTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBmZWF0dXJlczsKICB9OwoKICBBQVRNb3J4UHJvY2Vzc29yLnByb3RvdHlwZS5nZW5lcmF0ZUlucHV0cyA9IGZ1bmN0aW9uIGdlbmVyYXRlSW5wdXRzKGdpZCkgewogICAgaWYgKCF0aGlzLmlucHV0Q2FjaGUpIHsKICAgICAgdGhpcy5nZW5lcmF0ZUlucHV0Q2FjaGUoKTsKICAgIH0KCiAgICByZXR1cm4gdGhpcy5pbnB1dENhY2hlW2dpZF0gfHwgW107CiAgfTsKCiAgQUFUTW9yeFByb2Nlc3Nvci5wcm90b3R5cGUuZ2VuZXJhdGVJbnB1dENhY2hlID0gZnVuY3Rpb24gZ2VuZXJhdGVJbnB1dENhY2hlKCkgewogICAgdGhpcy5pbnB1dENhY2hlID0ge307CgogICAgZm9yICh2YXIgX2l0ZXJhdG9yNiA9IHRoaXMubW9yeC5jaGFpbnMsIF9pc0FycmF5NiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yNiksIF9pNiA9IDAsIF9pdGVyYXRvcjYgPSBfaXNBcnJheTYgPyBfaXRlcmF0b3I2IDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjYpOzspIHsKICAgICAgdmFyIF9yZWY2OwoKICAgICAgaWYgKF9pc0FycmF5NikgewogICAgICAgIGlmIChfaTYgPj0gX2l0ZXJhdG9yNi5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWY2ID0gX2l0ZXJhdG9yNltfaTYrK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2k2ID0gX2l0ZXJhdG9yNi5uZXh0KCk7CiAgICAgICAgaWYgKF9pNi5kb25lKSBicmVhazsKICAgICAgICBfcmVmNiA9IF9pNi52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGNoYWluID0gX3JlZjY7CgogICAgICB2YXIgZmxhZ3MgPSBjaGFpbi5kZWZhdWx0RmxhZ3M7CgogICAgICBmb3IgKHZhciBfaXRlcmF0b3I3ID0gY2hhaW4uc3VidGFibGVzLCBfaXNBcnJheTcgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjcpLCBfaTcgPSAwLCBfaXRlcmF0b3I3ID0gX2lzQXJyYXk3ID8gX2l0ZXJhdG9yNyA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I3KTs7KSB7CiAgICAgICAgdmFyIF9yZWY3OwoKICAgICAgICBpZiAoX2lzQXJyYXk3KSB7CiAgICAgICAgICBpZiAoX2k3ID49IF9pdGVyYXRvcjcubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWY3ID0gX2l0ZXJhdG9yN1tfaTcrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pNyA9IF9pdGVyYXRvcjcubmV4dCgpOwogICAgICAgICAgaWYgKF9pNy5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWY3ID0gX2k3LnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHN1YnRhYmxlID0gX3JlZjc7CgogICAgICAgIGlmIChzdWJ0YWJsZS5zdWJGZWF0dXJlRmxhZ3MgJiBmbGFncykgewogICAgICAgICAgdGhpcy5nZW5lcmF0ZUlucHV0c0ZvclN1YnRhYmxlKHN1YnRhYmxlKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9OwoKICBBQVRNb3J4UHJvY2Vzc29yLnByb3RvdHlwZS5nZW5lcmF0ZUlucHV0c0ZvclN1YnRhYmxlID0gZnVuY3Rpb24gZ2VuZXJhdGVJbnB1dHNGb3JTdWJ0YWJsZShzdWJ0YWJsZSkgewogICAgdmFyIF90aGlzID0gdGhpczsKCiAgICAvLyBDdXJyZW50bHksIG9ubHkgc3VwcG9ydGluZyBsaWdhdHVyZSBzdWJ0YWJsZXMuCiAgICBpZiAoc3VidGFibGUudHlwZSAhPT0gMikgewogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHJldmVyc2UgPSAhIShzdWJ0YWJsZS5jb3ZlcmFnZSAmIFJFVkVSU0VfRElSRUNUSU9OKTsKICAgIGlmIChyZXZlcnNlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignUmV2ZXJzZSBzdWJ0YWJsZSwgbm90IHN1cHBvcnRlZC4nKTsKICAgIH0KCiAgICB0aGlzLnN1YnRhYmxlID0gc3VidGFibGU7CiAgICB0aGlzLmxpZ2F0dXJlU3RhY2sgPSBbXTsKCiAgICB2YXIgc3RhdGVNYWNoaW5lID0gdGhpcy5nZXRTdGF0ZU1hY2hpbmUoc3VidGFibGUpOwogICAgdmFyIHByb2Nlc3MgPSB0aGlzLmdldFByb2Nlc3NvcigpOwoKICAgIHZhciBpbnB1dCA9IFtdOwogICAgdmFyIHN0YWNrID0gW107CiAgICB0aGlzLmdseXBocyA9IFtdOwoKICAgIHN0YXRlTWFjaGluZS50cmF2ZXJzZSh7CiAgICAgIGVudGVyOiBmdW5jdGlvbiBlbnRlcihnbHlwaCwgZW50cnkpIHsKICAgICAgICB2YXIgZ2x5cGhzID0gX3RoaXMuZ2x5cGhzOwogICAgICAgIHN0YWNrLnB1c2goewogICAgICAgICAgZ2x5cGhzOiBnbHlwaHMuc2xpY2UoKSwKICAgICAgICAgIGxpZ2F0dXJlU3RhY2s6IF90aGlzLmxpZ2F0dXJlU3RhY2suc2xpY2UoKQogICAgICAgIH0pOwoKICAgICAgICAvLyBBZGQgZ2x5cGggdG8gaW5wdXQgYW5kIGdseXBocyB0byBwcm9jZXNzLgogICAgICAgIHZhciBnID0gX3RoaXMuZm9udC5nZXRHbHlwaChnbHlwaCk7CiAgICAgICAgaW5wdXQucHVzaChnKTsKICAgICAgICBnbHlwaHMucHVzaChpbnB1dFtpbnB1dC5sZW5ndGggLSAxXSk7CgogICAgICAgIC8vIFByb2Nlc3MgbGlnYXR1cmUgc3Vic3RpdHV0aW9uCiAgICAgICAgcHJvY2VzcyhnbHlwaHNbZ2x5cGhzLmxlbmd0aCAtIDFdLCBlbnRyeSwgZ2x5cGhzLmxlbmd0aCAtIDEpOwoKICAgICAgICAvLyBBZGQgaW5wdXQgdG8gcmVzdWx0IGlmIG9ubHkgb25lIG1hdGNoaW5nIChub24tZGVsZXRlZCkgZ2x5cGggcmVtYWlucy4KICAgICAgICB2YXIgY291bnQgPSAwOwogICAgICAgIHZhciBmb3VuZCA9IDA7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBnbHlwaHMubGVuZ3RoICYmIGNvdW50IDw9IDE7IGkrKykgewogICAgICAgICAgaWYgKGdseXBoc1tpXS5pZCAhPT0gMHhmZmZmKSB7CiAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgIGZvdW5kID0gZ2x5cGhzW2ldLmlkOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGNvdW50ID09PSAxKSB7CiAgICAgICAgICB2YXIgcmVzdWx0ID0gaW5wdXQubWFwKGZ1bmN0aW9uIChnKSB7CiAgICAgICAgICAgIHJldHVybiBnLmlkOwogICAgICAgICAgfSk7CiAgICAgICAgICB2YXIgX2NhY2hlID0gX3RoaXMuaW5wdXRDYWNoZVtmb3VuZF07CiAgICAgICAgICBpZiAoX2NhY2hlKSB7CiAgICAgICAgICAgIF9jYWNoZS5wdXNoKHJlc3VsdCk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBfdGhpcy5pbnB1dENhY2hlW2ZvdW5kXSA9IFtyZXN1bHRdOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSwKCiAgICAgIGV4aXQ6IGZ1bmN0aW9uIGV4aXQoKSB7CiAgICAgICAgdmFyIF9zdGFjayRwb3AgPSBzdGFjay5wb3AoKTsKCiAgICAgICAgX3RoaXMuZ2x5cGhzID0gX3N0YWNrJHBvcC5nbHlwaHM7CiAgICAgICAgX3RoaXMubGlnYXR1cmVTdGFjayA9IF9zdGFjayRwb3AubGlnYXR1cmVTdGFjazsKCiAgICAgICAgaW5wdXQucG9wKCk7CiAgICAgIH0KICAgIH0pOwogIH07CgogIHJldHVybiBBQVRNb3J4UHJvY2Vzc29yOwp9KCksIChfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yJDIoX2NsYXNzJDIucHJvdG90eXBlLCAnZ2V0U3RhdGVNYWNoaW5lJywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzJDIucHJvdG90eXBlLCAnZ2V0U3RhdGVNYWNoaW5lJyksIF9jbGFzcyQyLnByb3RvdHlwZSkpLCBfY2xhc3MkMik7CgpmdW5jdGlvbiBzd2FwKGdseXBocywgcmFuZ2VBLCByYW5nZUIpIHsKICB2YXIgcmV2ZXJzZUEgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1szXSA6IGZhbHNlOwogIHZhciByZXZlcnNlQiA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogZmFsc2U7CgogIHZhciBlbmQgPSBnbHlwaHMuc3BsaWNlKHJhbmdlQlswXSAtIChyYW5nZUJbMV0gLSAxKSwgcmFuZ2VCWzFdKTsKICBpZiAocmV2ZXJzZUIpIHsKICAgIGVuZC5yZXZlcnNlKCk7CiAgfQoKICB2YXIgc3RhcnQgPSBnbHlwaHMuc3BsaWNlLmFwcGx5KGdseXBocywgW3JhbmdlQVswXSwgcmFuZ2VBWzFdXS5jb25jYXQoZW5kKSk7CiAgaWYgKHJldmVyc2VBKSB7CiAgICBzdGFydC5yZXZlcnNlKCk7CiAgfQoKICBnbHlwaHMuc3BsaWNlLmFwcGx5KGdseXBocywgW3JhbmdlQlswXSAtIChyYW5nZUFbMV0gLSAxKSwgMF0uY29uY2F0KHN0YXJ0KSk7CiAgcmV0dXJuIGdseXBoczsKfQoKZnVuY3Rpb24gcmVvcmRlckdseXBocyhnbHlwaHMsIHZlcmIsIGZpcnN0R2x5cGgsIGxhc3RHbHlwaCkgewogIHZhciBsZW5ndGggPSBsYXN0R2x5cGggLSBmaXJzdEdseXBoICsgMTsKICBzd2l0Y2ggKHZlcmIpIHsKICAgIGNhc2UgMDoKICAgICAgLy8gbm8gY2hhbmdlCiAgICAgIHJldHVybiBnbHlwaHM7CgogICAgY2FzZSAxOgogICAgICAvLyBBeCA9PiB4QQogICAgICByZXR1cm4gc3dhcChnbHlwaHMsIFtmaXJzdEdseXBoLCAxXSwgW2xhc3RHbHlwaCwgMF0pOwoKICAgIGNhc2UgMjoKICAgICAgLy8geEQgPT4gRHgKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMF0sIFtsYXN0R2x5cGgsIDFdKTsKCiAgICBjYXNlIDM6CiAgICAgIC8vIEF4RCA9PiBEeEEKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMV0sIFtsYXN0R2x5cGgsIDFdKTsKCiAgICBjYXNlIDQ6CiAgICAgIC8vIEFCeCA9PiB4QUIKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMl0sIFtsYXN0R2x5cGgsIDBdKTsKCiAgICBjYXNlIDU6CiAgICAgIC8vIEFCeCA9PiB4QkEKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMl0sIFtsYXN0R2x5cGgsIDBdLCB0cnVlLCBmYWxzZSk7CgogICAgY2FzZSA2OgogICAgICAvLyB4Q0QgPT4gQ0R4CiAgICAgIHJldHVybiBzd2FwKGdseXBocywgW2ZpcnN0R2x5cGgsIDBdLCBbbGFzdEdseXBoLCAyXSk7CgogICAgY2FzZSA3OgogICAgICAvLyB4Q0QgPT4gREN4CiAgICAgIHJldHVybiBzd2FwKGdseXBocywgW2ZpcnN0R2x5cGgsIDBdLCBbbGFzdEdseXBoLCAyXSwgZmFsc2UsIHRydWUpOwoKICAgIGNhc2UgODoKICAgICAgLy8gQXhDRCA9PiBDRHhBCiAgICAgIHJldHVybiBzd2FwKGdseXBocywgW2ZpcnN0R2x5cGgsIDFdLCBbbGFzdEdseXBoLCAyXSk7CgogICAgY2FzZSA5OgogICAgICAvLyBBeENEID0+IERDeEEKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMV0sIFtsYXN0R2x5cGgsIDJdLCBmYWxzZSwgdHJ1ZSk7CgogICAgY2FzZSAxMDoKICAgICAgLy8gQUJ4RCA9PiBEeEFCCiAgICAgIHJldHVybiBzd2FwKGdseXBocywgW2ZpcnN0R2x5cGgsIDJdLCBbbGFzdEdseXBoLCAxXSk7CgogICAgY2FzZSAxMToKICAgICAgLy8gQUJ4RCA9PiBEeEJBCiAgICAgIHJldHVybiBzd2FwKGdseXBocywgW2ZpcnN0R2x5cGgsIDJdLCBbbGFzdEdseXBoLCAxXSwgdHJ1ZSwgZmFsc2UpOwoKICAgIGNhc2UgMTI6CiAgICAgIC8vIEFCeENEID0+IENEeEFCCiAgICAgIHJldHVybiBzd2FwKGdseXBocywgW2ZpcnN0R2x5cGgsIDJdLCBbbGFzdEdseXBoLCAyXSk7CgogICAgY2FzZSAxMzoKICAgICAgLy8gQUJ4Q0QgPT4gQ0R4QkEKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMl0sIFtsYXN0R2x5cGgsIDJdLCB0cnVlLCBmYWxzZSk7CgogICAgY2FzZSAxNDoKICAgICAgLy8gQUJ4Q0QgPT4gREN4QUIKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMl0sIFtsYXN0R2x5cGgsIDJdLCBmYWxzZSwgdHJ1ZSk7CgogICAgY2FzZSAxNToKICAgICAgLy8gQUJ4Q0QgPT4gREN4QkEKICAgICAgcmV0dXJuIHN3YXAoZ2x5cGhzLCBbZmlyc3RHbHlwaCwgMl0sIFtsYXN0R2x5cGgsIDJdLCB0cnVlLCB0cnVlKTsKCiAgICBkZWZhdWx0OgogICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gdmVyYjogJyArIHZlcmIpOwogIH0KfQoKdmFyIEFBVExheW91dEVuZ2luZSA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBBQVRMYXlvdXRFbmdpbmUoZm9udCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEFBVExheW91dEVuZ2luZSk7CgogICAgdGhpcy5mb250ID0gZm9udDsKICAgIHRoaXMubW9yeFByb2Nlc3NvciA9IG5ldyBBQVRNb3J4UHJvY2Vzc29yKGZvbnQpOwogICAgdGhpcy5mYWxsYmFja1Bvc2l0aW9uID0gZmFsc2U7CiAgfQoKICBBQVRMYXlvdXRFbmdpbmUucHJvdG90eXBlLnN1YnN0aXR1dGUgPSBmdW5jdGlvbiBzdWJzdGl0dXRlKGdseXBoUnVuKSB7CiAgICAvLyBBQVQgZXhwZWN0cyB0aGUgZ2x5cGhzIHRvIGJlIGluIHZpc3VhbCBvcmRlciBwcmlvciB0byBtb3J4IHByb2Nlc3NpbmcsCiAgICAvLyBzbyByZXZlcnNlIHRoZSBnbHlwaHMgaWYgdGhlIHNjcmlwdCBpcyByaWdodC10by1sZWZ0LgogICAgaWYgKGdseXBoUnVuLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHsKICAgICAgZ2x5cGhSdW4uZ2x5cGhzLnJldmVyc2UoKTsKICAgIH0KCiAgICB0aGlzLm1vcnhQcm9jZXNzb3IucHJvY2VzcyhnbHlwaFJ1bi5nbHlwaHMsIG1hcE9UVG9BQVQoZ2x5cGhSdW4uZmVhdHVyZXMpKTsKICB9OwoKICBBQVRMYXlvdXRFbmdpbmUucHJvdG90eXBlLmdldEF2YWlsYWJsZUZlYXR1cmVzID0gZnVuY3Rpb24gZ2V0QXZhaWxhYmxlRmVhdHVyZXMoc2NyaXB0LCBsYW5ndWFnZSkgewogICAgcmV0dXJuIG1hcEFBVFRvT1QodGhpcy5tb3J4UHJvY2Vzc29yLmdldFN1cHBvcnRlZEZlYXR1cmVzKCkpOwogIH07CgogIEFBVExheW91dEVuZ2luZS5wcm90b3R5cGUuc3RyaW5nc0ZvckdseXBoID0gZnVuY3Rpb24gc3RyaW5nc0ZvckdseXBoKGdpZCkgewogICAgdmFyIGdseXBoU3RyaW5ncyA9IHRoaXMubW9yeFByb2Nlc3Nvci5nZW5lcmF0ZUlucHV0cyhnaWQpOwogICAgdmFyIHJlc3VsdCA9IG5ldyBfU2V0KCk7CgogICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gZ2x5cGhTdHJpbmdzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgdmFyIF9yZWY7CgogICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGdseXBocyA9IF9yZWY7CgogICAgICB0aGlzLl9hZGRTdHJpbmdzKGdseXBocywgMCwgcmVzdWx0LCAnJyk7CiAgICB9CgogICAgcmV0dXJuIHJlc3VsdDsKICB9OwoKICBBQVRMYXlvdXRFbmdpbmUucHJvdG90eXBlLl9hZGRTdHJpbmdzID0gZnVuY3Rpb24gX2FkZFN0cmluZ3MoZ2x5cGhzLCBpbmRleCwgc3RyaW5ncywgc3RyaW5nKSB7CiAgICB2YXIgY29kZVBvaW50cyA9IHRoaXMuZm9udC5fY21hcFByb2Nlc3Nvci5jb2RlUG9pbnRzRm9yR2x5cGgoZ2x5cGhzW2luZGV4XSk7CgogICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IGNvZGVQb2ludHMsIF9pc0FycmF5MiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMiksIF9pMiA9IDAsIF9pdGVyYXRvcjIgPSBfaXNBcnJheTIgPyBfaXRlcmF0b3IyIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjIpOzspIHsKICAgICAgdmFyIF9yZWYyOwoKICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgIGlmIChfaTIgPj0gX2l0ZXJhdG9yMi5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYyID0gX2l0ZXJhdG9yMltfaTIrK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kyID0gX2l0ZXJhdG9yMi5uZXh0KCk7CiAgICAgICAgaWYgKF9pMi5kb25lKSBicmVhazsKICAgICAgICBfcmVmMiA9IF9pMi52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGNvZGVQb2ludCA9IF9yZWYyOwoKICAgICAgdmFyIHMgPSBzdHJpbmcgKyBfU3RyaW5nJGZyb21Db2RlUG9pbnQoY29kZVBvaW50KTsKICAgICAgaWYgKGluZGV4IDwgZ2x5cGhzLmxlbmd0aCAtIDEpIHsKICAgICAgICB0aGlzLl9hZGRTdHJpbmdzKGdseXBocywgaW5kZXggKyAxLCBzdHJpbmdzLCBzKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBzdHJpbmdzLmFkZChzKTsKICAgICAgfQogICAgfQogIH07CgogIHJldHVybiBBQVRMYXlvdXRFbmdpbmU7Cn0oKTsKCi8qKgogKiBTaGFwaW5nUGxhbnMgYXJlIHVzZWQgYnkgdGhlIE9wZW5UeXBlIHNoYXBlcnMgdG8gc3RvcmUgd2hpY2gKICogZmVhdHVyZXMgc2hvdWxkIGJ5IGFwcGxpZWQsIGFuZCBpbiB3aGF0IG9yZGVyIHRvIGFwcGx5IHRoZW0uCiAqIFRoZSBmZWF0dXJlcyBhcmUgYXBwbGllZCBpbiBncm91cHMgY2FsbGVkIHN0YWdlcy4gQSBmZWF0dXJlCiAqIGNhbiBiZSBhcHBsaWVkIGdsb2JhbGx5IHRvIGFsbCBnbHlwaHMsIG9yIGxvY2FsbHkgdG8gb25seQogKiBzcGVjaWZpYyBnbHlwaHMuCiAqCiAqIEBwcml2YXRlCiAqLwoKdmFyIFNoYXBpbmdQbGFuID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIFNoYXBpbmdQbGFuKGZvbnQsIHNjcmlwdCwgZGlyZWN0aW9uKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU2hhcGluZ1BsYW4pOwoKICAgIHRoaXMuZm9udCA9IGZvbnQ7CiAgICB0aGlzLnNjcmlwdCA9IHNjcmlwdDsKICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uOwogICAgdGhpcy5zdGFnZXMgPSBbXTsKICAgIHRoaXMuZ2xvYmFsRmVhdHVyZXMgPSB7fTsKICAgIHRoaXMuYWxsRmVhdHVyZXMgPSB7fTsKICB9CgogIC8qKgogICAqIEFkZHMgdGhlIGdpdmVuIGZlYXR1cmVzIHRvIHRoZSBsYXN0IHN0YWdlLgogICAqIElnbm9yZXMgZmVhdHVyZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBhcHBsaWVkLgogICAqLwoKCiAgU2hhcGluZ1BsYW4ucHJvdG90eXBlLl9hZGRGZWF0dXJlcyA9IGZ1bmN0aW9uIF9hZGRGZWF0dXJlcyhmZWF0dXJlcywgZ2xvYmFsKSB7CiAgICB2YXIgc3RhZ2VJbmRleCA9IHRoaXMuc3RhZ2VzLmxlbmd0aCAtIDE7CiAgICB2YXIgc3RhZ2UgPSB0aGlzLnN0YWdlc1tzdGFnZUluZGV4XTsKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IGZlYXR1cmVzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgdmFyIF9yZWY7CgogICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGZlYXR1cmUgPSBfcmVmOwoKICAgICAgaWYgKHRoaXMuYWxsRmVhdHVyZXNbZmVhdHVyZV0gPT0gbnVsbCkgewogICAgICAgIHN0YWdlLnB1c2goZmVhdHVyZSk7CiAgICAgICAgdGhpcy5hbGxGZWF0dXJlc1tmZWF0dXJlXSA9IHN0YWdlSW5kZXg7CgogICAgICAgIGlmIChnbG9iYWwpIHsKICAgICAgICAgIHRoaXMuZ2xvYmFsRmVhdHVyZXNbZmVhdHVyZV0gPSB0cnVlOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIC8qKgogICAqIEFkZCBmZWF0dXJlcyB0byB0aGUgbGFzdCBzdGFnZQogICAqLwoKCiAgU2hhcGluZ1BsYW4ucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChhcmcpIHsKICAgIHZhciBnbG9iYWwgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHRydWU7CgogICAgaWYgKHRoaXMuc3RhZ2VzLmxlbmd0aCA9PT0gMCkgewogICAgICB0aGlzLnN0YWdlcy5wdXNoKFtdKTsKICAgIH0KCiAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ3N0cmluZycpIHsKICAgICAgYXJnID0gW2FyZ107CiAgICB9CgogICAgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkgewogICAgICB0aGlzLl9hZGRGZWF0dXJlcyhhcmcsIGdsb2JhbCk7CiAgICB9IGVsc2UgaWYgKCh0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihhcmcpKSA9PT0gJ29iamVjdCcpIHsKICAgICAgdGhpcy5fYWRkRmVhdHVyZXMoYXJnLmdsb2JhbCB8fCBbXSwgdHJ1ZSk7CiAgICAgIHRoaXMuX2FkZEZlYXR1cmVzKGFyZy5sb2NhbCB8fCBbXSwgZmFsc2UpOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbnN1cHBvcnRlZCBhcmd1bWVudCB0byBTaGFwaW5nUGxhbiNhZGQiKTsKICAgIH0KICB9OwoKICAvKioKICAgKiBBZGQgYSBuZXcgc3RhZ2UKICAgKi8KCgogIFNoYXBpbmdQbGFuLnByb3RvdHlwZS5hZGRTdGFnZSA9IGZ1bmN0aW9uIGFkZFN0YWdlKGFyZywgZ2xvYmFsKSB7CiAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICB0aGlzLnN0YWdlcy5wdXNoKGFyZywgW10pOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5zdGFnZXMucHVzaChbXSk7CiAgICAgIHRoaXMuYWRkKGFyZywgZ2xvYmFsKTsKICAgIH0KICB9OwoKICBTaGFwaW5nUGxhbi5wcm90b3R5cGUuc2V0RmVhdHVyZU92ZXJyaWRlcyA9IGZ1bmN0aW9uIHNldEZlYXR1cmVPdmVycmlkZXMoZmVhdHVyZXMpIHsKICAgIGlmIChBcnJheS5pc0FycmF5KGZlYXR1cmVzKSkgewogICAgICB0aGlzLmFkZChmZWF0dXJlcyk7CiAgICB9IGVsc2UgaWYgKCh0eXBlb2YgZmVhdHVyZXMgPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKGZlYXR1cmVzKSkgPT09ICdvYmplY3QnKSB7CiAgICAgIGZvciAodmFyIHRhZyBpbiBmZWF0dXJlcykgewogICAgICAgIGlmIChmZWF0dXJlc1t0YWddKSB7CiAgICAgICAgICB0aGlzLmFkZCh0YWcpOwogICAgICAgIH0gZWxzZSBpZiAodGhpcy5hbGxGZWF0dXJlc1t0YWddICE9IG51bGwpIHsKICAgICAgICAgIHZhciBzdGFnZSA9IHRoaXMuc3RhZ2VzW3RoaXMuYWxsRmVhdHVyZXNbdGFnXV07CiAgICAgICAgICBzdGFnZS5zcGxpY2Uoc3RhZ2UuaW5kZXhPZih0YWcpLCAxKTsKICAgICAgICAgIGRlbGV0ZSB0aGlzLmFsbEZlYXR1cmVzW3RhZ107CiAgICAgICAgICBkZWxldGUgdGhpcy5nbG9iYWxGZWF0dXJlc1t0YWddOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIC8qKgogICAqIEFzc2lnbnMgdGhlIGdsb2JhbCBmZWF0dXJlcyB0byB0aGUgZ2l2ZW4gZ2x5cGhzCiAgICovCgoKICBTaGFwaW5nUGxhbi5wcm90b3R5cGUuYXNzaWduR2xvYmFsRmVhdHVyZXMgPSBmdW5jdGlvbiBhc3NpZ25HbG9iYWxGZWF0dXJlcyhnbHlwaHMpIHsKICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBnbHlwaHMsIF9pc0FycmF5MiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMiksIF9pMiA9IDAsIF9pdGVyYXRvcjIgPSBfaXNBcnJheTIgPyBfaXRlcmF0b3IyIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjIpOzspIHsKICAgICAgdmFyIF9yZWYyOwoKICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgIGlmIChfaTIgPj0gX2l0ZXJhdG9yMi5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYyID0gX2l0ZXJhdG9yMltfaTIrK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kyID0gX2l0ZXJhdG9yMi5uZXh0KCk7CiAgICAgICAgaWYgKF9pMi5kb25lKSBicmVhazsKICAgICAgICBfcmVmMiA9IF9pMi52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGdseXBoID0gX3JlZjI7CgogICAgICBmb3IgKHZhciBmZWF0dXJlIGluIHRoaXMuZ2xvYmFsRmVhdHVyZXMpIHsKICAgICAgICBnbHlwaC5mZWF0dXJlc1tmZWF0dXJlXSA9IHRydWU7CiAgICAgIH0KICAgIH0KICB9OwoKICAvKioKICAgKiBFeGVjdXRlcyB0aGUgcGxhbm5lZCBzdGFnZXMgdXNpbmcgdGhlIGdpdmVuIE9UUHJvY2Vzc29yCiAgICovCgoKICBTaGFwaW5nUGxhbi5wcm90b3R5cGUucHJvY2VzcyA9IGZ1bmN0aW9uIHByb2Nlc3MocHJvY2Vzc29yLCBnbHlwaHMsIHBvc2l0aW9ucykgewogICAgZm9yICh2YXIgX2l0ZXJhdG9yMyA9IHRoaXMuc3RhZ2VzLCBfaXNBcnJheTMgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjMpLCBfaTMgPSAwLCBfaXRlcmF0b3IzID0gX2lzQXJyYXkzID8gX2l0ZXJhdG9yMyA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IzKTs7KSB7CiAgICAgIHZhciBfcmVmMzsKCiAgICAgIGlmIChfaXNBcnJheTMpIHsKICAgICAgICBpZiAoX2kzID49IF9pdGVyYXRvcjMubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmMyA9IF9pdGVyYXRvcjNbX2kzKytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pMyA9IF9pdGVyYXRvcjMubmV4dCgpOwogICAgICAgIGlmIChfaTMuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZjMgPSBfaTMudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBzdGFnZSA9IF9yZWYzOwoKICAgICAgaWYgKHR5cGVvZiBzdGFnZSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGlmICghcG9zaXRpb25zKSB7CiAgICAgICAgICBzdGFnZSh0aGlzLmZvbnQsIGdseXBocywgdGhpcyk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKHN0YWdlLmxlbmd0aCA+IDApIHsKICAgICAgICBwcm9jZXNzb3IuYXBwbHlGZWF0dXJlcyhzdGFnZSwgZ2x5cGhzLCBwb3NpdGlvbnMpOwogICAgICB9CiAgICB9CiAgfTsKCiAgcmV0dXJuIFNoYXBpbmdQbGFuOwp9KCk7Cgp2YXIgX2NsYXNzJDQ7CnZhciBfdGVtcDsKdmFyIFZBUklBVElPTl9GRUFUVVJFUyA9IFsncnZybiddOwp2YXIgQ09NTU9OX0ZFQVRVUkVTID0gWydjY21wJywgJ2xvY2wnLCAncmxpZycsICdtYXJrJywgJ21rbWsnXTsKdmFyIEZSQUNUSU9OQUxfRkVBVFVSRVMgPSBbJ2ZyYWMnLCAnbnVtcicsICdkbm9tJ107CnZhciBIT1JJWk9OVEFMX0ZFQVRVUkVTID0gWydjYWx0JywgJ2NsaWcnLCAnbGlnYScsICdyY2x0JywgJ2N1cnMnLCAna2VybiddOwp2YXIgRElSRUNUSU9OQUxfRkVBVFVSRVMgPSB7CiAgbHRyOiBbJ2x0cmEnLCAnbHRybSddLAogIHJ0bDogWydydGxhJywgJ3J0bG0nXQp9OwoKdmFyIERlZmF1bHRTaGFwZXIgPSAoX3RlbXAgPSBfY2xhc3MkNCA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBEZWZhdWx0U2hhcGVyKCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERlZmF1bHRTaGFwZXIpOwogIH0KCiAgRGVmYXVsdFNoYXBlci5wbGFuID0gZnVuY3Rpb24gcGxhbihfcGxhbiwgZ2x5cGhzLCBmZWF0dXJlcykgewogICAgLy8gUGxhbiB0aGUgZmVhdHVyZXMgd2Ugd2FudCB0byBhcHBseQogICAgdGhpcy5wbGFuUHJlcHJvY2Vzc2luZyhfcGxhbik7CiAgICB0aGlzLnBsYW5GZWF0dXJlcyhfcGxhbik7CiAgICB0aGlzLnBsYW5Qb3N0cHJvY2Vzc2luZyhfcGxhbiwgZmVhdHVyZXMpOwoKICAgIC8vIEFzc2lnbiB0aGUgZ2xvYmFsIGZlYXR1cmVzIHRvIGFsbCB0aGUgZ2x5cGhzCiAgICBfcGxhbi5hc3NpZ25HbG9iYWxGZWF0dXJlcyhnbHlwaHMpOwoKICAgIC8vIEFzc2lnbiBsb2NhbCBmZWF0dXJlcyB0byBnbHlwaHMKICAgIHRoaXMuYXNzaWduRmVhdHVyZXMoX3BsYW4sIGdseXBocyk7CiAgfTsKCiAgRGVmYXVsdFNoYXBlci5wbGFuUHJlcHJvY2Vzc2luZyA9IGZ1bmN0aW9uIHBsYW5QcmVwcm9jZXNzaW5nKHBsYW4pIHsKICAgIHBsYW4uYWRkKHsKICAgICAgZ2xvYmFsOiBbXS5jb25jYXQoVkFSSUFUSU9OX0ZFQVRVUkVTLCBESVJFQ1RJT05BTF9GRUFUVVJFU1twbGFuLmRpcmVjdGlvbl0pLAogICAgICBsb2NhbDogRlJBQ1RJT05BTF9GRUFUVVJFUwogICAgfSk7CiAgfTsKCiAgRGVmYXVsdFNoYXBlci5wbGFuRmVhdHVyZXMgPSBmdW5jdGlvbiBwbGFuRmVhdHVyZXMocGxhbikgewogICAgLy8gRG8gbm90aGluZyBieSBkZWZhdWx0LiBMZXQgc3ViY2xhc3NlcyBvdmVycmlkZSB0aGlzLgogIH07CgogIERlZmF1bHRTaGFwZXIucGxhblBvc3Rwcm9jZXNzaW5nID0gZnVuY3Rpb24gcGxhblBvc3Rwcm9jZXNzaW5nKHBsYW4sIHVzZXJGZWF0dXJlcykgewogICAgcGxhbi5hZGQoW10uY29uY2F0KENPTU1PTl9GRUFUVVJFUywgSE9SSVpPTlRBTF9GRUFUVVJFUykpOwogICAgcGxhbi5zZXRGZWF0dXJlT3ZlcnJpZGVzKHVzZXJGZWF0dXJlcyk7CiAgfTsKCiAgRGVmYXVsdFNoYXBlci5hc3NpZ25GZWF0dXJlcyA9IGZ1bmN0aW9uIGFzc2lnbkZlYXR1cmVzKHBsYW4sIGdseXBocykgewogICAgLy8gRW5hYmxlIGNvbnRleHR1YWwgZnJhY3Rpb25zCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdseXBocy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgZ2x5cGggPSBnbHlwaHNbaV07CiAgICAgIGlmIChnbHlwaC5jb2RlUG9pbnRzWzBdID09PSAweDIwNDQpIHsKICAgICAgICAvLyBmcmFjdGlvbiBzbGFzaAogICAgICAgIHZhciBzdGFydCA9IGk7CiAgICAgICAgdmFyIGVuZCA9IGkgKyAxOwoKICAgICAgICAvLyBBcHBseSBudW1lcmF0b3IKICAgICAgICB3aGlsZSAoc3RhcnQgPiAwICYmIHVuaWNvZGUuaXNEaWdpdChnbHlwaHNbc3RhcnQgLSAxXS5jb2RlUG9pbnRzWzBdKSkgewogICAgICAgICAgZ2x5cGhzW3N0YXJ0IC0gMV0uZmVhdHVyZXMubnVtciA9IHRydWU7CiAgICAgICAgICBnbHlwaHNbc3RhcnQgLSAxXS5mZWF0dXJlcy5mcmFjID0gdHJ1ZTsKICAgICAgICAgIHN0YXJ0LS07CiAgICAgICAgfQoKICAgICAgICAvLyBBcHBseSBkZW5vbWluYXRvcgogICAgICAgIHdoaWxlIChlbmQgPCBnbHlwaHMubGVuZ3RoICYmIHVuaWNvZGUuaXNEaWdpdChnbHlwaHNbZW5kXS5jb2RlUG9pbnRzWzBdKSkgewogICAgICAgICAgZ2x5cGhzW2VuZF0uZmVhdHVyZXMuZG5vbSA9IHRydWU7CiAgICAgICAgICBnbHlwaHNbZW5kXS5mZWF0dXJlcy5mcmFjID0gdHJ1ZTsKICAgICAgICAgIGVuZCsrOwogICAgICAgIH0KCiAgICAgICAgLy8gQXBwbHkgZnJhY3Rpb24gc2xhc2gKICAgICAgICBnbHlwaC5mZWF0dXJlcy5mcmFjID0gdHJ1ZTsKICAgICAgICBpID0gZW5kIC0gMTsKICAgICAgfQogICAgfQogIH07CgogIHJldHVybiBEZWZhdWx0U2hhcGVyOwp9KCksIF9jbGFzcyQ0Lnplcm9NYXJrV2lkdGhzID0gJ0FGVEVSX0dQT1MnLCBfdGVtcCk7Cgp2YXIgdHJpZSA9IG5ldyBVbmljb2RlVHJpZShCdWZmZXIoIkFBRVFBQUFBQUFBQUFER2dBWlVCYXY3dDJDdFBBMEVVQmVEWkIwMHBpbjlBSlpJRWd5VUVqMFFod2VEQWdRT0p4Q0JSQkVsUVNCd1NpY0xna09Bd25OS1o1R2FZMmM3dXpqNG81eVpmWnJyYmVmYnVJeDJuU3EzQ0dtekFXSC8rSytVTzdNSWU3TU1oSE1NcG5NTUZYTUlWWEl0MnQzQ25QMDg4aVBxanFOTjhlNElqN1JsZTRMVUg4MnJMbTZpLzkyQStSRVJFUkVSRVJFUk5tZnovODlHRGVSQVJFUkVSemJOOGNlcHMySXd0OUgwQzkvQUo2eU9sRGtiVGN6Y290NVZTbThQbTF2Y0ZXZmI3K0JLT0xUdU9kMlVsVFg0d0dQODVFZzk1M2xXUEZibnVON1BranRMbWFsT1diTmVua0hPU2E3VDNLbVI5TVZUWjJ6WmtWajFrSGE2OE11ZVZLSDBSNHpxUTQ0V0VYTE04VmpjV0hQMFB0S0xmUHpRbk10R24zVzRRWWY2cXhGeGNlVkkzOTRyMnhuVisxcmloMGZWMVZ6ZjNmTzFuM2V2TDVKNzhydXZaNXB0WDJSd3k5MlRmYjF3bEVxdXQzVStzWjNIWE9lSjcvekRyYnl1UDYrWnowZnFhNk52M3ZoWTdZdTF4V25HZXZtc3ZzVXBUVC9SWUllOHdhVUgvcnZITVdLRnpMZk44TCtyVGZwNjQ1bWZYN2Z0bG5mRHRZeE41OXcwPSIsImJhc2U2NCIpKTsKdmFyIEZFQVRVUkVTID0gWydpc29sJywgJ2ZpbmEnLCAnZmluMicsICdmaW4zJywgJ21lZGknLCAnbWVkMicsICdpbml0J107Cgp2YXIgU2hhcGluZ0NsYXNzZXMgPSB7CiAgTm9uX0pvaW5pbmc6IDAsCiAgTGVmdF9Kb2luaW5nOiAxLAogIFJpZ2h0X0pvaW5pbmc6IDIsCiAgRHVhbF9Kb2luaW5nOiAzLAogIEpvaW5fQ2F1c2luZzogMywKICBBTEFQSDogNCwKICAnREFMQVRIIFJJU0gnOiA1LAogIFRyYW5zcGFyZW50OiA2Cn07Cgp2YXIgSVNPTCA9ICdpc29sJzsKdmFyIEZJTkEgPSAnZmluYSc7CnZhciBGSU4yID0gJ2ZpbjInOwp2YXIgRklOMyA9ICdmaW4zJzsKdmFyIE1FREkgPSAnbWVkaSc7CnZhciBNRUQyID0gJ21lZDInOwp2YXIgSU5JVCA9ICdpbml0JzsKdmFyIE5PTkUgPSBudWxsOwoKLy8gRWFjaCBlbnRyeSBpcyBbcHJldkFjdGlvbiwgY3VyQWN0aW9uLCBuZXh0U3RhdGVdCnZhciBTVEFURV9UQUJMRSA9IFsKLy8gICBOb25fSm9pbmluZywgICAgICAgIExlZnRfSm9pbmluZywgICAgICAgUmlnaHRfSm9pbmluZywgICAgIER1YWxfSm9pbmluZywgICAgICAgICAgIEFMQVBILCAgICAgICAgICAgIERBTEFUSCBSSVNICi8vIFN0YXRlIDA6IHByZXYgd2FzIFUsICBub3Qgd2lsbGluZyB0byBqb2luLgpbW05PTkUsIE5PTkUsIDBdLCBbTk9ORSwgSVNPTCwgMl0sIFtOT05FLCBJU09MLCAxXSwgW05PTkUsIElTT0wsIDJdLCBbTk9ORSwgSVNPTCwgMV0sIFtOT05FLCBJU09MLCA2XV0sCgovLyBTdGF0ZSAxOiBwcmV2IHdhcyBSIG9yIElTT0wvQUxBUEgsICBub3Qgd2lsbGluZyB0byBqb2luLgpbW05PTkUsIE5PTkUsIDBdLCBbTk9ORSwgSVNPTCwgMl0sIFtOT05FLCBJU09MLCAxXSwgW05PTkUsIElTT0wsIDJdLCBbTk9ORSwgRklOMiwgNV0sIFtOT05FLCBJU09MLCA2XV0sCgovLyBTdGF0ZSAyOiBwcmV2IHdhcyBEL0wgaW4gSVNPTCBmb3JtLCAgd2lsbGluZyB0byBqb2luLgpbW05PTkUsIE5PTkUsIDBdLCBbTk9ORSwgSVNPTCwgMl0sIFtJTklULCBGSU5BLCAxXSwgW0lOSVQsIEZJTkEsIDNdLCBbSU5JVCwgRklOQSwgNF0sIFtJTklULCBGSU5BLCA2XV0sCgovLyBTdGF0ZSAzOiBwcmV2IHdhcyBEIGluIEZJTkEgZm9ybSwgIHdpbGxpbmcgdG8gam9pbi4KW1tOT05FLCBOT05FLCAwXSwgW05PTkUsIElTT0wsIDJdLCBbTUVESSwgRklOQSwgMV0sIFtNRURJLCBGSU5BLCAzXSwgW01FREksIEZJTkEsIDRdLCBbTUVESSwgRklOQSwgNl1dLAoKLy8gU3RhdGUgNDogcHJldiB3YXMgRklOQSBBTEFQSCwgIG5vdCB3aWxsaW5nIHRvIGpvaW4uCltbTk9ORSwgTk9ORSwgMF0sIFtOT05FLCBJU09MLCAyXSwgW01FRDIsIElTT0wsIDFdLCBbTUVEMiwgSVNPTCwgMl0sIFtNRUQyLCBGSU4yLCA1XSwgW01FRDIsIElTT0wsIDZdXSwKCi8vIFN0YXRlIDU6IHByZXYgd2FzIEZJTjIvRklOMyBBTEFQSCwgIG5vdCB3aWxsaW5nIHRvIGpvaW4uCltbTk9ORSwgTk9ORSwgMF0sIFtOT05FLCBJU09MLCAyXSwgW0lTT0wsIElTT0wsIDFdLCBbSVNPTCwgSVNPTCwgMl0sIFtJU09MLCBGSU4yLCA1XSwgW0lTT0wsIElTT0wsIDZdXSwKCi8vIFN0YXRlIDY6IHByZXYgd2FzIERBTEFUSC9SSVNILCAgbm90IHdpbGxpbmcgdG8gam9pbi4KW1tOT05FLCBOT05FLCAwXSwgW05PTkUsIElTT0wsIDJdLCBbTk9ORSwgSVNPTCwgMV0sIFtOT05FLCBJU09MLCAyXSwgW05PTkUsIEZJTjMsIDVdLCBbTk9ORSwgSVNPTCwgNl1dXTsKCi8qKgogKiBUaGlzIGlzIGEgc2hhcGVyIGZvciBBcmFiaWMsIGFuZCBvdGhlciBjdXJzaXZlIHNjcmlwdHMuCiAqIEl0IHVzZXMgZGF0YSBmcm9tIEFyYWJpY1NoYXBpbmcudHh0IGluIHRoZSBVbmljb2RlIGRhdGFiYXNlLAogKiBjb21waWxlZCB0byBhIFVuaWNvZGVUcmllIGJ5IGdlbmVyYXRlLWRhdGEuY29mZmVlLgogKgogKiBUaGUgc2hhcGluZyBzdGF0ZSBtYWNoaW5lIHdhcyBwb3J0ZWQgZnJvbSBIYXJmYnV6ei4KICogaHR0cHM6Ly9naXRodWIuY29tL2JlaGRhZC9oYXJmYnV6ei9ibG9iL21hc3Rlci9zcmMvaGItb3Qtc2hhcGUtY29tcGxleC1hcmFiaWMuY2MKICovCgp2YXIgQXJhYmljU2hhcGVyID0gZnVuY3Rpb24gKF9EZWZhdWx0U2hhcGVyKSB7CiAgX2luaGVyaXRzKEFyYWJpY1NoYXBlciwgX0RlZmF1bHRTaGFwZXIpOwoKICBmdW5jdGlvbiBBcmFiaWNTaGFwZXIoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQXJhYmljU2hhcGVyKTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX0RlZmF1bHRTaGFwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBBcmFiaWNTaGFwZXIucGxhbkZlYXR1cmVzID0gZnVuY3Rpb24gcGxhbkZlYXR1cmVzKHBsYW4pIHsKICAgIHBsYW4uYWRkKFsnY2NtcCcsICdsb2NsJ10pOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBGRUFUVVJFUy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgZmVhdHVyZSA9IEZFQVRVUkVTW2ldOwogICAgICBwbGFuLmFkZFN0YWdlKGZlYXR1cmUsIGZhbHNlKTsKICAgIH0KCiAgICBwbGFuLmFkZFN0YWdlKCdtc2V0Jyk7CiAgfTsKCiAgQXJhYmljU2hhcGVyLmFzc2lnbkZlYXR1cmVzID0gZnVuY3Rpb24gYXNzaWduRmVhdHVyZXMocGxhbiwgZ2x5cGhzKSB7CiAgICBfRGVmYXVsdFNoYXBlci5hc3NpZ25GZWF0dXJlcy5jYWxsKHRoaXMsIHBsYW4sIGdseXBocyk7CgogICAgdmFyIHByZXYgPSAtMTsKICAgIHZhciBzdGF0ZSA9IDA7CiAgICB2YXIgYWN0aW9ucyA9IFtdOwoKICAgIC8vIEFwcGx5IHRoZSBzdGF0ZSBtYWNoaW5lIHRvIG1hcCBnbHlwaHMgdG8gZmVhdHVyZXMKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ2x5cGhzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBjdXJBY3Rpb24gPSB2b2lkIDAsCiAgICAgICAgICBwcmV2QWN0aW9uID0gdm9pZCAwOwogICAgICB2YXIgZ2x5cGggPSBnbHlwaHNbaV07CiAgICAgIHZhciB0eXBlID0gZ2V0U2hhcGluZ0NsYXNzKGdseXBoLmNvZGVQb2ludHNbMF0pOwogICAgICBpZiAodHlwZSA9PT0gU2hhcGluZ0NsYXNzZXMuVHJhbnNwYXJlbnQpIHsKICAgICAgICBhY3Rpb25zW2ldID0gTk9ORTsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgdmFyIF9TVEFURV9UQUJMRSRzdGF0ZSR0eSA9IFNUQVRFX1RBQkxFW3N0YXRlXVt0eXBlXTsKICAgICAgcHJldkFjdGlvbiA9IF9TVEFURV9UQUJMRSRzdGF0ZSR0eVswXTsKICAgICAgY3VyQWN0aW9uID0gX1NUQVRFX1RBQkxFJHN0YXRlJHR5WzFdOwogICAgICBzdGF0ZSA9IF9TVEFURV9UQUJMRSRzdGF0ZSR0eVsyXTsKCgogICAgICBpZiAocHJldkFjdGlvbiAhPT0gTk9ORSAmJiBwcmV2ICE9PSAtMSkgewogICAgICAgIGFjdGlvbnNbcHJldl0gPSBwcmV2QWN0aW9uOwogICAgICB9CgogICAgICBhY3Rpb25zW2ldID0gY3VyQWN0aW9uOwogICAgICBwcmV2ID0gaTsKICAgIH0KCiAgICAvLyBBcHBseSB0aGUgY2hvc2VuIGZlYXR1cmVzIHRvIHRoZWlyIHJlc3BlY3RpdmUgZ2x5cGhzCiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgZ2x5cGhzLmxlbmd0aDsgaW5kZXgrKykgewogICAgICB2YXIgZmVhdHVyZSA9IHZvaWQgMDsKICAgICAgdmFyIGdseXBoID0gZ2x5cGhzW2luZGV4XTsKICAgICAgaWYgKGZlYXR1cmUgPSBhY3Rpb25zW2luZGV4XSkgewogICAgICAgIGdseXBoLmZlYXR1cmVzW2ZlYXR1cmVdID0gdHJ1ZTsKICAgICAgfQogICAgfQogIH07CgogIHJldHVybiBBcmFiaWNTaGFwZXI7Cn0oRGVmYXVsdFNoYXBlcik7CgpmdW5jdGlvbiBnZXRTaGFwaW5nQ2xhc3MoY29kZVBvaW50KSB7CiAgdmFyIHJlcyA9IHRyaWUuZ2V0KGNvZGVQb2ludCk7CiAgaWYgKHJlcykgewogICAgcmV0dXJuIHJlcyAtIDE7CiAgfQoKICB2YXIgY2F0ZWdvcnkgPSB1bmljb2RlLmdldENhdGVnb3J5KGNvZGVQb2ludCk7CiAgaWYgKGNhdGVnb3J5ID09PSAnTW4nIHx8IGNhdGVnb3J5ID09PSAnTWUnIHx8IGNhdGVnb3J5ID09PSAnQ2YnKSB7CiAgICByZXR1cm4gU2hhcGluZ0NsYXNzZXMuVHJhbnNwYXJlbnQ7CiAgfQoKICByZXR1cm4gU2hhcGluZ0NsYXNzZXMuTm9uX0pvaW5pbmc7Cn0KCnZhciBHbHlwaEl0ZXJhdG9yID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIEdseXBoSXRlcmF0b3IoZ2x5cGhzLCBvcHRpb25zKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2x5cGhJdGVyYXRvcik7CgogICAgdGhpcy5nbHlwaHMgPSBnbHlwaHM7CiAgICB0aGlzLnJlc2V0KG9wdGlvbnMpOwogIH0KCiAgR2x5cGhJdGVyYXRvci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiByZXNldCgpIHsKICAgIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTsKICAgIHZhciBpbmRleCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDsKCiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwogICAgdGhpcy5mbGFncyA9IG9wdGlvbnMuZmxhZ3MgfHwge307CiAgICB0aGlzLm1hcmtBdHRhY2htZW50VHlwZSA9IG9wdGlvbnMubWFya0F0dGFjaG1lbnRUeXBlIHx8IDA7CiAgICB0aGlzLmluZGV4ID0gaW5kZXg7CiAgfTsKCiAgR2x5cGhJdGVyYXRvci5wcm90b3R5cGUuc2hvdWxkSWdub3JlID0gZnVuY3Rpb24gc2hvdWxkSWdub3JlKGdseXBoKSB7CiAgICByZXR1cm4gdGhpcy5mbGFncy5pZ25vcmVNYXJrcyAmJiBnbHlwaC5pc01hcmsgfHwgdGhpcy5mbGFncy5pZ25vcmVCYXNlR2x5cGhzICYmIGdseXBoLmlzQmFzZSB8fCB0aGlzLmZsYWdzLmlnbm9yZUxpZ2F0dXJlcyAmJiBnbHlwaC5pc0xpZ2F0dXJlIHx8IHRoaXMubWFya0F0dGFjaG1lbnRUeXBlICYmIGdseXBoLmlzTWFyayAmJiBnbHlwaC5tYXJrQXR0YWNobWVudFR5cGUgIT09IHRoaXMubWFya0F0dGFjaG1lbnRUeXBlOwogIH07CgogIEdseXBoSXRlcmF0b3IucHJvdG90eXBlLm1vdmUgPSBmdW5jdGlvbiBtb3ZlKGRpcikgewogICAgdGhpcy5pbmRleCArPSBkaXI7CiAgICB3aGlsZSAoMCA8PSB0aGlzLmluZGV4ICYmIHRoaXMuaW5kZXggPCB0aGlzLmdseXBocy5sZW5ndGggJiYgdGhpcy5zaG91bGRJZ25vcmUodGhpcy5nbHlwaHNbdGhpcy5pbmRleF0pKSB7CiAgICAgIHRoaXMuaW5kZXggKz0gZGlyOwogICAgfQoKICAgIGlmICgwID4gdGhpcy5pbmRleCB8fCB0aGlzLmluZGV4ID49IHRoaXMuZ2x5cGhzLmxlbmd0aCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICByZXR1cm4gdGhpcy5nbHlwaHNbdGhpcy5pbmRleF07CiAgfTsKCiAgR2x5cGhJdGVyYXRvci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7CiAgICByZXR1cm4gdGhpcy5tb3ZlKCsxKTsKICB9OwoKICBHbHlwaEl0ZXJhdG9yLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gcHJldigpIHsKICAgIHJldHVybiB0aGlzLm1vdmUoLTEpOwogIH07CgogIEdseXBoSXRlcmF0b3IucHJvdG90eXBlLnBlZWsgPSBmdW5jdGlvbiBwZWVrKCkgewogICAgdmFyIGNvdW50ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAxOwoKICAgIHZhciBpZHggPSB0aGlzLmluZGV4OwogICAgdmFyIHJlcyA9IHRoaXMuaW5jcmVtZW50KGNvdW50KTsKICAgIHRoaXMuaW5kZXggPSBpZHg7CiAgICByZXR1cm4gcmVzOwogIH07CgogIEdseXBoSXRlcmF0b3IucHJvdG90eXBlLnBlZWtJbmRleCA9IGZ1bmN0aW9uIHBlZWtJbmRleCgpIHsKICAgIHZhciBjb3VudCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogMTsKCiAgICB2YXIgaWR4ID0gdGhpcy5pbmRleDsKICAgIHRoaXMuaW5jcmVtZW50KGNvdW50KTsKICAgIHZhciByZXMgPSB0aGlzLmluZGV4OwogICAgdGhpcy5pbmRleCA9IGlkeDsKICAgIHJldHVybiByZXM7CiAgfTsKCiAgR2x5cGhJdGVyYXRvci5wcm90b3R5cGUuaW5jcmVtZW50ID0gZnVuY3Rpb24gaW5jcmVtZW50KCkgewogICAgdmFyIGNvdW50ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiAxOwoKICAgIHZhciBkaXIgPSBjb3VudCA8IDAgPyAtMSA6IDE7CiAgICBjb3VudCA9IE1hdGguYWJzKGNvdW50KTsKICAgIHdoaWxlIChjb3VudC0tKSB7CiAgICAgIHRoaXMubW92ZShkaXIpOwogICAgfQoKICAgIHJldHVybiB0aGlzLmdseXBoc1t0aGlzLmluZGV4XTsKICB9OwoKICBfY3JlYXRlQ2xhc3MoR2x5cGhJdGVyYXRvciwgW3sKICAgIGtleTogImN1ciIsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2x5cGhzW3RoaXMuaW5kZXhdIHx8IG51bGw7CiAgICB9CiAgfV0pOwoKICByZXR1cm4gR2x5cGhJdGVyYXRvcjsKfSgpOwoKdmFyIERFRkFVTFRfU0NSSVBUUyA9IFsnREZMVCcsICdkZmx0JywgJ2xhdG4nXTsKCnZhciBPVFByb2Nlc3NvciA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBPVFByb2Nlc3Nvcihmb250LCB0YWJsZSkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE9UUHJvY2Vzc29yKTsKCiAgICB0aGlzLmZvbnQgPSBmb250OwogICAgdGhpcy50YWJsZSA9IHRhYmxlOwoKICAgIHRoaXMuc2NyaXB0ID0gbnVsbDsKICAgIHRoaXMuc2NyaXB0VGFnID0gbnVsbDsKCiAgICB0aGlzLmxhbmd1YWdlID0gbnVsbDsKICAgIHRoaXMubGFuZ3VhZ2VUYWcgPSBudWxsOwoKICAgIHRoaXMuZmVhdHVyZXMgPSB7fTsKICAgIHRoaXMubG9va3VwcyA9IHt9OwoKICAgIC8vIFNldHVwIHZhcmlhdGlvbiBzdWJzdGl0dXRpb25zCiAgICB0aGlzLnZhcmlhdGlvbnNJbmRleCA9IGZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvciA/IHRoaXMuZmluZFZhcmlhdGlvbnNJbmRleChmb250Ll92YXJpYXRpb25Qcm9jZXNzb3Iubm9ybWFsaXplZENvb3JkcykgOiAtMTsKCiAgICAvLyBpbml0aWFsaXplIHRvIGRlZmF1bHQgc2NyaXB0ICsgbGFuZ3VhZ2UKICAgIHRoaXMuc2VsZWN0U2NyaXB0KCk7CgogICAgLy8gY3VycmVudCBjb250ZXh0IChzZXQgYnkgYXBwbHlGZWF0dXJlcykKICAgIHRoaXMuZ2x5cGhzID0gW107CiAgICB0aGlzLnBvc2l0aW9ucyA9IFtdOyAvLyBvbmx5IHVzZWQgYnkgR1BPUwogICAgdGhpcy5saWdhdHVyZUlEID0gMTsKICAgIHRoaXMuY3VycmVudEZlYXR1cmUgPSBudWxsOwogIH0KCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLmZpbmRTY3JpcHQgPSBmdW5jdGlvbiBmaW5kU2NyaXB0KHNjcmlwdCkgewogICAgaWYgKHRoaXMudGFibGUuc2NyaXB0TGlzdCA9PSBudWxsKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIGlmICghQXJyYXkuaXNBcnJheShzY3JpcHQpKSB7CiAgICAgIHNjcmlwdCA9IFtzY3JpcHRdOwogICAgfQoKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHNjcmlwdCwgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICAgIHZhciBfcmVmOwoKICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBzID0gX3JlZjsKCiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSB0aGlzLnRhYmxlLnNjcmlwdExpc3QsIF9pc0FycmF5MiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMiksIF9pMiA9IDAsIF9pdGVyYXRvcjIgPSBfaXNBcnJheTIgPyBfaXRlcmF0b3IyIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjIpOzspIHsKICAgICAgICB2YXIgX3JlZjI7CgogICAgICAgIGlmIChfaXNBcnJheTIpIHsKICAgICAgICAgIGlmIChfaTIgPj0gX2l0ZXJhdG9yMi5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgX3JlZjIgPSBfaXRlcmF0b3IyW19pMisrXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX2kyID0gX2l0ZXJhdG9yMi5uZXh0KCk7CiAgICAgICAgICBpZiAoX2kyLmRvbmUpIGJyZWFrOwogICAgICAgICAgX3JlZjIgPSBfaTIudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgZW50cnkgPSBfcmVmMjsKCiAgICAgICAgaWYgKGVudHJ5LnRhZyA9PT0gcykgewogICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBudWxsOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5zZWxlY3RTY3JpcHQgPSBmdW5jdGlvbiBzZWxlY3RTY3JpcHQoc2NyaXB0LCBsYW5ndWFnZSwgZGlyZWN0aW9uJCQpIHsKICAgIHZhciBjaGFuZ2VkID0gZmFsc2U7CiAgICB2YXIgZW50cnkgPSB2b2lkIDA7CiAgICBpZiAoIXRoaXMuc2NyaXB0IHx8IHNjcmlwdCAhPT0gdGhpcy5zY3JpcHRUYWcpIHsKICAgICAgZW50cnkgPSB0aGlzLmZpbmRTY3JpcHQoc2NyaXB0KTsKICAgICAgaWYgKCFlbnRyeSkgewogICAgICAgIGVudHJ5ID0gdGhpcy5maW5kU2NyaXB0KERFRkFVTFRfU0NSSVBUUyk7CiAgICAgIH0KCiAgICAgIGlmICghZW50cnkpIHsKICAgICAgICByZXR1cm4gdGhpcy5zY3JpcHRUYWc7CiAgICAgIH0KCiAgICAgIHRoaXMuc2NyaXB0VGFnID0gZW50cnkudGFnOwogICAgICB0aGlzLnNjcmlwdCA9IGVudHJ5LnNjcmlwdDsKICAgICAgdGhpcy5sYW5ndWFnZSA9IG51bGw7CiAgICAgIHRoaXMubGFuZ3VhZ2VUYWcgPSBudWxsOwogICAgICBjaGFuZ2VkID0gdHJ1ZTsKICAgIH0KCiAgICBpZiAoIWRpcmVjdGlvbiQkIHx8IGRpcmVjdGlvbiQkICE9PSB0aGlzLmRpcmVjdGlvbikgewogICAgICB0aGlzLmRpcmVjdGlvbiA9IGRpcmVjdGlvbiQkIHx8IGRpcmVjdGlvbihzY3JpcHQpOwogICAgfQoKICAgIGlmIChsYW5ndWFnZSAmJiBsYW5ndWFnZS5sZW5ndGggPCA0KSB7CiAgICAgIGxhbmd1YWdlICs9ICcgJy5yZXBlYXQoNCAtIGxhbmd1YWdlLmxlbmd0aCk7CiAgICB9CgogICAgaWYgKCFsYW5ndWFnZSB8fCBsYW5ndWFnZSAhPT0gdGhpcy5sYW5ndWFnZVRhZykgewogICAgICB0aGlzLmxhbmd1YWdlID0gbnVsbDsKCiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSB0aGlzLnNjcmlwdC5sYW5nU3lzUmVjb3JkcywgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICAgIHZhciBfcmVmMzsKCiAgICAgICAgaWYgKF9pc0FycmF5MykgewogICAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pdGVyYXRvcjNbX2kzKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICAgIGlmIChfaTMuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pMy52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBsYW5nID0gX3JlZjM7CgogICAgICAgIGlmIChsYW5nLnRhZyA9PT0gbGFuZ3VhZ2UpIHsKICAgICAgICAgIHRoaXMubGFuZ3VhZ2UgPSBsYW5nLmxhbmdTeXM7CiAgICAgICAgICB0aGlzLmxhbmd1YWdlVGFnID0gbGFuZy50YWc7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGlmICghdGhpcy5sYW5ndWFnZSkgewogICAgICAgIHRoaXMubGFuZ3VhZ2UgPSB0aGlzLnNjcmlwdC5kZWZhdWx0TGFuZ1N5czsKICAgICAgICB0aGlzLmxhbmd1YWdlVGFnID0gbnVsbDsKICAgICAgfQoKICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICB9CgogICAgLy8gQnVpbGQgYSBmZWF0dXJlIGxvb2t1cCB0YWJsZQogICAgaWYgKGNoYW5nZWQpIHsKICAgICAgdGhpcy5mZWF0dXJlcyA9IHt9OwogICAgICBpZiAodGhpcy5sYW5ndWFnZSkgewogICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjQgPSB0aGlzLmxhbmd1YWdlLmZlYXR1cmVJbmRleGVzLCBfaXNBcnJheTQgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjQpLCBfaTQgPSAwLCBfaXRlcmF0b3I0ID0gX2lzQXJyYXk0ID8gX2l0ZXJhdG9yNCA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I0KTs7KSB7CiAgICAgICAgICB2YXIgX3JlZjQ7CgogICAgICAgICAgaWYgKF9pc0FycmF5NCkgewogICAgICAgICAgICBpZiAoX2k0ID49IF9pdGVyYXRvcjQubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgX3JlZjQgPSBfaXRlcmF0b3I0W19pNCsrXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9pNCA9IF9pdGVyYXRvcjQubmV4dCgpOwogICAgICAgICAgICBpZiAoX2k0LmRvbmUpIGJyZWFrOwogICAgICAgICAgICBfcmVmNCA9IF9pNC52YWx1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgZmVhdHVyZUluZGV4ID0gX3JlZjQ7CgogICAgICAgICAgdmFyIHJlY29yZCA9IHRoaXMudGFibGUuZmVhdHVyZUxpc3RbZmVhdHVyZUluZGV4XTsKICAgICAgICAgIHZhciBzdWJzdGl0dXRlRmVhdHVyZSA9IHRoaXMuc3Vic3RpdHV0ZUZlYXR1cmVGb3JWYXJpYXRpb25zKGZlYXR1cmVJbmRleCk7CiAgICAgICAgICB0aGlzLmZlYXR1cmVzW3JlY29yZC50YWddID0gc3Vic3RpdHV0ZUZlYXR1cmUgfHwgcmVjb3JkLmZlYXR1cmU7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXMuc2NyaXB0VGFnOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5sb29rdXBzRm9yRmVhdHVyZXMgPSBmdW5jdGlvbiBsb29rdXBzRm9yRmVhdHVyZXMoKSB7CiAgICB2YXIgdXNlckZlYXR1cmVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiBbXTsKICAgIHZhciBleGNsdWRlID0gYXJndW1lbnRzWzFdOwoKICAgIHZhciBsb29rdXBzID0gW107CiAgICBmb3IgKHZhciBfaXRlcmF0b3I1ID0gdXNlckZlYXR1cmVzLCBfaXNBcnJheTUgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjUpLCBfaTUgPSAwLCBfaXRlcmF0b3I1ID0gX2lzQXJyYXk1ID8gX2l0ZXJhdG9yNSA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I1KTs7KSB7CiAgICAgIHZhciBfcmVmNTsKCiAgICAgIGlmIChfaXNBcnJheTUpIHsKICAgICAgICBpZiAoX2k1ID49IF9pdGVyYXRvcjUubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmNSA9IF9pdGVyYXRvcjVbX2k1KytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pNSA9IF9pdGVyYXRvcjUubmV4dCgpOwogICAgICAgIGlmIChfaTUuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZjUgPSBfaTUudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciB0YWcgPSBfcmVmNTsKCiAgICAgIHZhciBmZWF0dXJlID0gdGhpcy5mZWF0dXJlc1t0YWddOwogICAgICBpZiAoIWZlYXR1cmUpIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yNiA9IGZlYXR1cmUubG9va3VwTGlzdEluZGV4ZXMsIF9pc0FycmF5NiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yNiksIF9pNiA9IDAsIF9pdGVyYXRvcjYgPSBfaXNBcnJheTYgPyBfaXRlcmF0b3I2IDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjYpOzspIHsKICAgICAgICB2YXIgX3JlZjY7CgogICAgICAgIGlmIChfaXNBcnJheTYpIHsKICAgICAgICAgIGlmIChfaTYgPj0gX2l0ZXJhdG9yNi5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgX3JlZjYgPSBfaXRlcmF0b3I2W19pNisrXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX2k2ID0gX2l0ZXJhdG9yNi5uZXh0KCk7CiAgICAgICAgICBpZiAoX2k2LmRvbmUpIGJyZWFrOwogICAgICAgICAgX3JlZjYgPSBfaTYudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgbG9va3VwSW5kZXggPSBfcmVmNjsKCiAgICAgICAgaWYgKGV4Y2x1ZGUgJiYgZXhjbHVkZS5pbmRleE9mKGxvb2t1cEluZGV4KSAhPT0gLTEpIHsKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KCiAgICAgICAgbG9va3Vwcy5wdXNoKHsKICAgICAgICAgIGZlYXR1cmU6IHRhZywKICAgICAgICAgIGluZGV4OiBsb29rdXBJbmRleCwKICAgICAgICAgIGxvb2t1cDogdGhpcy50YWJsZS5sb29rdXBMaXN0LmdldChsb29rdXBJbmRleCkKICAgICAgICB9KTsKICAgICAgfQogICAgfQoKICAgIGxvb2t1cHMuc29ydChmdW5jdGlvbiAoYSwgYikgewogICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7CiAgICB9KTsKICAgIHJldHVybiBsb29rdXBzOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5zdWJzdGl0dXRlRmVhdHVyZUZvclZhcmlhdGlvbnMgPSBmdW5jdGlvbiBzdWJzdGl0dXRlRmVhdHVyZUZvclZhcmlhdGlvbnMoZmVhdHVyZUluZGV4KSB7CiAgICBpZiAodGhpcy52YXJpYXRpb25zSW5kZXggPT09IC0xKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHZhciByZWNvcmQgPSB0aGlzLnRhYmxlLmZlYXR1cmVWYXJpYXRpb25zLmZlYXR1cmVWYXJpYXRpb25SZWNvcmRzW3RoaXMudmFyaWF0aW9uc0luZGV4XTsKICAgIHZhciBzdWJzdGl0dXRpb25zID0gcmVjb3JkLmZlYXR1cmVUYWJsZVN1YnN0aXR1dGlvbi5zdWJzdGl0dXRpb25zOwogICAgZm9yICh2YXIgX2l0ZXJhdG9yNyA9IHN1YnN0aXR1dGlvbnMsIF9pc0FycmF5NyA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yNyksIF9pNyA9IDAsIF9pdGVyYXRvcjcgPSBfaXNBcnJheTcgPyBfaXRlcmF0b3I3IDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjcpOzspIHsKICAgICAgdmFyIF9yZWY3OwoKICAgICAgaWYgKF9pc0FycmF5NykgewogICAgICAgIGlmIChfaTcgPj0gX2l0ZXJhdG9yNy5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWY3ID0gX2l0ZXJhdG9yN1tfaTcrK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2k3ID0gX2l0ZXJhdG9yNy5uZXh0KCk7CiAgICAgICAgaWYgKF9pNy5kb25lKSBicmVhazsKICAgICAgICBfcmVmNyA9IF9pNy52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIHN1YnN0aXR1dGlvbiA9IF9yZWY3OwoKICAgICAgaWYgKHN1YnN0aXR1dGlvbi5mZWF0dXJlSW5kZXggPT09IGZlYXR1cmVJbmRleCkgewogICAgICAgIHJldHVybiBzdWJzdGl0dXRpb24uYWx0ZXJuYXRlRmVhdHVyZVRhYmxlOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIG51bGw7CiAgfTsKCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLmZpbmRWYXJpYXRpb25zSW5kZXggPSBmdW5jdGlvbiBmaW5kVmFyaWF0aW9uc0luZGV4KGNvb3JkcykgewogICAgdmFyIHZhcmlhdGlvbnMgPSB0aGlzLnRhYmxlLmZlYXR1cmVWYXJpYXRpb25zOwogICAgaWYgKCF2YXJpYXRpb25zKSB7CiAgICAgIHJldHVybiAtMTsKICAgIH0KCiAgICB2YXIgcmVjb3JkcyA9IHZhcmlhdGlvbnMuZmVhdHVyZVZhcmlhdGlvblJlY29yZHM7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlY29yZHMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGNvbmRpdGlvbnMgPSByZWNvcmRzW2ldLmNvbmRpdGlvblNldC5jb25kaXRpb25UYWJsZTsKICAgICAgaWYgKHRoaXMudmFyaWF0aW9uQ29uZGl0aW9uc01hdGNoKGNvbmRpdGlvbnMsIGNvb3JkcykpIHsKICAgICAgICByZXR1cm4gaTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiAtMTsKICB9OwoKICBPVFByb2Nlc3Nvci5wcm90b3R5cGUudmFyaWF0aW9uQ29uZGl0aW9uc01hdGNoID0gZnVuY3Rpb24gdmFyaWF0aW9uQ29uZGl0aW9uc01hdGNoKGNvbmRpdGlvbnMsIGNvb3JkcykgewogICAgcmV0dXJuIGNvbmRpdGlvbnMuZXZlcnkoZnVuY3Rpb24gKGNvbmRpdGlvbikgewogICAgICB2YXIgY29vcmQgPSBjb25kaXRpb24uYXhpc0luZGV4IDwgY29vcmRzLmxlbmd0aCA/IGNvb3Jkc1tjb25kaXRpb24uYXhpc0luZGV4XSA6IDA7CiAgICAgIHJldHVybiBjb25kaXRpb24uZmlsdGVyUmFuZ2VNaW5WYWx1ZSA8PSBjb29yZCAmJiBjb29yZCA8PSBjb25kaXRpb24uZmlsdGVyUmFuZ2VNYXhWYWx1ZTsKICAgIH0pOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5hcHBseUZlYXR1cmVzID0gZnVuY3Rpb24gYXBwbHlGZWF0dXJlcyh1c2VyRmVhdHVyZXMsIGdseXBocywgYWR2YW5jZXMpIHsKICAgIHZhciBsb29rdXBzID0gdGhpcy5sb29rdXBzRm9yRmVhdHVyZXModXNlckZlYXR1cmVzKTsKICAgIHRoaXMuYXBwbHlMb29rdXBzKGxvb2t1cHMsIGdseXBocywgYWR2YW5jZXMpOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5hcHBseUxvb2t1cHMgPSBmdW5jdGlvbiBhcHBseUxvb2t1cHMobG9va3VwcywgZ2x5cGhzLCBwb3NpdGlvbnMpIHsKICAgIHRoaXMuZ2x5cGhzID0gZ2x5cGhzOwogICAgdGhpcy5wb3NpdGlvbnMgPSBwb3NpdGlvbnM7CiAgICB0aGlzLmdseXBoSXRlcmF0b3IgPSBuZXcgR2x5cGhJdGVyYXRvcihnbHlwaHMpOwoKICAgIGZvciAodmFyIF9pdGVyYXRvcjggPSBsb29rdXBzLCBfaXNBcnJheTggPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjgpLCBfaTggPSAwLCBfaXRlcmF0b3I4ID0gX2lzQXJyYXk4ID8gX2l0ZXJhdG9yOCA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I4KTs7KSB7CiAgICAgIHZhciBfcmVmODsKCiAgICAgIGlmIChfaXNBcnJheTgpIHsKICAgICAgICBpZiAoX2k4ID49IF9pdGVyYXRvcjgubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmOCA9IF9pdGVyYXRvcjhbX2k4KytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pOCA9IF9pdGVyYXRvcjgubmV4dCgpOwogICAgICAgIGlmIChfaTguZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZjggPSBfaTgudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBfcmVmOSA9IF9yZWY4LAogICAgICAgICAgZmVhdHVyZSA9IF9yZWY5LmZlYXR1cmUsCiAgICAgICAgICBsb29rdXAgPSBfcmVmOS5sb29rdXA7CgogICAgICB0aGlzLmN1cnJlbnRGZWF0dXJlID0gZmVhdHVyZTsKICAgICAgdGhpcy5nbHlwaEl0ZXJhdG9yLnJlc2V0KGxvb2t1cC5mbGFncyk7CgogICAgICB3aGlsZSAodGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4IDwgZ2x5cGhzLmxlbmd0aCkgewogICAgICAgIGlmICghKGZlYXR1cmUgaW4gdGhpcy5nbHlwaEl0ZXJhdG9yLmN1ci5mZWF0dXJlcykpIHsKICAgICAgICAgIHRoaXMuZ2x5cGhJdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjkgPSBsb29rdXAuc3ViVGFibGVzLCBfaXNBcnJheTkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjkpLCBfaTkgPSAwLCBfaXRlcmF0b3I5ID0gX2lzQXJyYXk5ID8gX2l0ZXJhdG9yOSA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I5KTs7KSB7CiAgICAgICAgICB2YXIgX3JlZjEwOwoKICAgICAgICAgIGlmIChfaXNBcnJheTkpIHsKICAgICAgICAgICAgaWYgKF9pOSA+PSBfaXRlcmF0b3I5Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgIF9yZWYxMCA9IF9pdGVyYXRvcjlbX2k5KytdOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgX2k5ID0gX2l0ZXJhdG9yOS5uZXh0KCk7CiAgICAgICAgICAgIGlmIChfaTkuZG9uZSkgYnJlYWs7CiAgICAgICAgICAgIF9yZWYxMCA9IF9pOS52YWx1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgdGFibGUgPSBfcmVmMTA7CgogICAgICAgICAgdmFyIHJlcyA9IHRoaXMuYXBwbHlMb29rdXAobG9va3VwLmxvb2t1cFR5cGUsIHRhYmxlKTsKICAgICAgICAgIGlmIChyZXMpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aGlzLmdseXBoSXRlcmF0b3IubmV4dCgpOwogICAgICB9CiAgICB9CiAgfTsKCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLmFwcGx5TG9va3VwID0gZnVuY3Rpb24gYXBwbHlMb29rdXAobG9va3VwLCB0YWJsZSkgewogICAgdGhyb3cgbmV3IEVycm9yKCJhcHBseUxvb2t1cCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMiKTsKICB9OwoKICBPVFByb2Nlc3Nvci5wcm90b3R5cGUuYXBwbHlMb29rdXBMaXN0ID0gZnVuY3Rpb24gYXBwbHlMb29rdXBMaXN0KGxvb2t1cFJlY29yZHMpIHsKICAgIHZhciBvcHRpb25zID0gdGhpcy5nbHlwaEl0ZXJhdG9yLm9wdGlvbnM7CiAgICB2YXIgZ2x5cGhJbmRleCA9IHRoaXMuZ2x5cGhJdGVyYXRvci5pbmRleDsKCiAgICBmb3IgKHZhciBfaXRlcmF0b3IxMCA9IGxvb2t1cFJlY29yZHMsIF9pc0FycmF5MTAgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjEwKSwgX2kxMCA9IDAsIF9pdGVyYXRvcjEwID0gX2lzQXJyYXkxMCA/IF9pdGVyYXRvcjEwIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjEwKTs7KSB7CiAgICAgIHZhciBfcmVmMTE7CgogICAgICBpZiAoX2lzQXJyYXkxMCkgewogICAgICAgIGlmIChfaTEwID49IF9pdGVyYXRvcjEwLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjExID0gX2l0ZXJhdG9yMTBbX2kxMCsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTEwID0gX2l0ZXJhdG9yMTAubmV4dCgpOwogICAgICAgIGlmIChfaTEwLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYxMSA9IF9pMTAudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBsb29rdXBSZWNvcmQgPSBfcmVmMTE7CgogICAgICAvLyBSZXNldCBmbGFncyBhbmQgZmluZCBnbHlwaCBpbmRleCBmb3IgdGhpcyBsb29rdXAgcmVjb3JkCiAgICAgIHRoaXMuZ2x5cGhJdGVyYXRvci5yZXNldChvcHRpb25zLCBnbHlwaEluZGV4KTsKICAgICAgdGhpcy5nbHlwaEl0ZXJhdG9yLmluY3JlbWVudChsb29rdXBSZWNvcmQuc2VxdWVuY2VJbmRleCk7CgogICAgICAvLyBHZXQgdGhlIGxvb2t1cCBhbmQgc2V0dXAgZmxhZ3MgZm9yIHN1YnRhYmxlcwogICAgICB2YXIgbG9va3VwID0gdGhpcy50YWJsZS5sb29rdXBMaXN0LmdldChsb29rdXBSZWNvcmQubG9va3VwTGlzdEluZGV4KTsKICAgICAgdGhpcy5nbHlwaEl0ZXJhdG9yLnJlc2V0KGxvb2t1cC5mbGFncywgdGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4KTsKCiAgICAgIC8vIEFwcGx5IGxvb2t1cCBzdWJ0YWJsZXMgdW50aWwgb25lIG1hdGNoZXMKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMTEgPSBsb29rdXAuc3ViVGFibGVzLCBfaXNBcnJheTExID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IxMSksIF9pMTEgPSAwLCBfaXRlcmF0b3IxMSA9IF9pc0FycmF5MTEgPyBfaXRlcmF0b3IxMSA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IxMSk7OykgewogICAgICAgIHZhciBfcmVmMTI7CgogICAgICAgIGlmIChfaXNBcnJheTExKSB7CiAgICAgICAgICBpZiAoX2kxMSA+PSBfaXRlcmF0b3IxMS5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgX3JlZjEyID0gX2l0ZXJhdG9yMTFbX2kxMSsrXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX2kxMSA9IF9pdGVyYXRvcjExLm5leHQoKTsKICAgICAgICAgIGlmIChfaTExLmRvbmUpIGJyZWFrOwogICAgICAgICAgX3JlZjEyID0gX2kxMS52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciB0YWJsZSA9IF9yZWYxMjsKCiAgICAgICAgaWYgKHRoaXMuYXBwbHlMb29rdXAobG9va3VwLmxvb2t1cFR5cGUsIHRhYmxlKSkgewogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgdGhpcy5nbHlwaEl0ZXJhdG9yLnJlc2V0KG9wdGlvbnMsIGdseXBoSW5kZXgpOwogICAgcmV0dXJuIHRydWU7CiAgfTsKCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLmNvdmVyYWdlSW5kZXggPSBmdW5jdGlvbiBjb3ZlcmFnZUluZGV4KGNvdmVyYWdlLCBnbHlwaCkgewogICAgaWYgKGdseXBoID09IG51bGwpIHsKICAgICAgZ2x5cGggPSB0aGlzLmdseXBoSXRlcmF0b3IuY3VyLmlkOwogICAgfQoKICAgIHN3aXRjaCAoY292ZXJhZ2UudmVyc2lvbikgewogICAgICBjYXNlIDE6CiAgICAgICAgcmV0dXJuIGNvdmVyYWdlLmdseXBocy5pbmRleE9mKGdseXBoKTsKCiAgICAgIGNhc2UgMjoKICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxMiA9IGNvdmVyYWdlLnJhbmdlUmVjb3JkcywgX2lzQXJyYXkxMiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMTIpLCBfaTEyID0gMCwgX2l0ZXJhdG9yMTIgPSBfaXNBcnJheTEyID8gX2l0ZXJhdG9yMTIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMTIpOzspIHsKICAgICAgICAgIHZhciBfcmVmMTM7CgogICAgICAgICAgaWYgKF9pc0FycmF5MTIpIHsKICAgICAgICAgICAgaWYgKF9pMTIgPj0gX2l0ZXJhdG9yMTIubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgX3JlZjEzID0gX2l0ZXJhdG9yMTJbX2kxMisrXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9pMTIgPSBfaXRlcmF0b3IxMi5uZXh0KCk7CiAgICAgICAgICAgIGlmIChfaTEyLmRvbmUpIGJyZWFrOwogICAgICAgICAgICBfcmVmMTMgPSBfaTEyLnZhbHVlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciByYW5nZSA9IF9yZWYxMzsKCiAgICAgICAgICBpZiAocmFuZ2Uuc3RhcnQgPD0gZ2x5cGggJiYgZ2x5cGggPD0gcmFuZ2UuZW5kKSB7CiAgICAgICAgICAgIHJldHVybiByYW5nZS5zdGFydENvdmVyYWdlSW5kZXggKyBnbHlwaCAtIHJhbmdlLnN0YXJ0OwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgcmV0dXJuIC0xOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uIG1hdGNoKHNlcXVlbmNlSW5kZXgsIHNlcXVlbmNlLCBmbiwgbWF0Y2hlZCkgewogICAgdmFyIHBvcyA9IHRoaXMuZ2x5cGhJdGVyYXRvci5pbmRleDsKICAgIHZhciBnbHlwaCA9IHRoaXMuZ2x5cGhJdGVyYXRvci5pbmNyZW1lbnQoc2VxdWVuY2VJbmRleCk7CiAgICB2YXIgaWR4ID0gMDsKCiAgICB3aGlsZSAoaWR4IDwgc2VxdWVuY2UubGVuZ3RoICYmIGdseXBoICYmIGZuKHNlcXVlbmNlW2lkeF0sIGdseXBoKSkgewogICAgICBpZiAobWF0Y2hlZCkgewogICAgICAgIG1hdGNoZWQucHVzaCh0aGlzLmdseXBoSXRlcmF0b3IuaW5kZXgpOwogICAgICB9CgogICAgICBpZHgrKzsKICAgICAgZ2x5cGggPSB0aGlzLmdseXBoSXRlcmF0b3IubmV4dCgpOwogICAgfQoKICAgIHRoaXMuZ2x5cGhJdGVyYXRvci5pbmRleCA9IHBvczsKICAgIGlmIChpZHggPCBzZXF1ZW5jZS5sZW5ndGgpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHJldHVybiBtYXRjaGVkIHx8IHRydWU7CiAgfTsKCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLnNlcXVlbmNlTWF0Y2hlcyA9IGZ1bmN0aW9uIHNlcXVlbmNlTWF0Y2hlcyhzZXF1ZW5jZUluZGV4LCBzZXF1ZW5jZSkgewogICAgcmV0dXJuIHRoaXMubWF0Y2goc2VxdWVuY2VJbmRleCwgc2VxdWVuY2UsIGZ1bmN0aW9uIChjb21wb25lbnQsIGdseXBoKSB7CiAgICAgIHJldHVybiBjb21wb25lbnQgPT09IGdseXBoLmlkOwogICAgfSk7CiAgfTsKCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLnNlcXVlbmNlTWF0Y2hJbmRpY2VzID0gZnVuY3Rpb24gc2VxdWVuY2VNYXRjaEluZGljZXMoc2VxdWVuY2VJbmRleCwgc2VxdWVuY2UpIHsKICAgIHZhciBfdGhpcyA9IHRoaXM7CgogICAgcmV0dXJuIHRoaXMubWF0Y2goc2VxdWVuY2VJbmRleCwgc2VxdWVuY2UsIGZ1bmN0aW9uIChjb21wb25lbnQsIGdseXBoKSB7CiAgICAgIC8vIElmIHRoZSBjdXJyZW50IGZlYXR1cmUgZG9lc24ndCBhcHBseSB0byB0aGlzIGdseXBoLAogICAgICBpZiAoIShfdGhpcy5jdXJyZW50RmVhdHVyZSBpbiBnbHlwaC5mZWF0dXJlcykpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIHJldHVybiBjb21wb25lbnQgPT09IGdseXBoLmlkOwogICAgfSwgW10pOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5jb3ZlcmFnZVNlcXVlbmNlTWF0Y2hlcyA9IGZ1bmN0aW9uIGNvdmVyYWdlU2VxdWVuY2VNYXRjaGVzKHNlcXVlbmNlSW5kZXgsIHNlcXVlbmNlKSB7CiAgICB2YXIgX3RoaXMyID0gdGhpczsKCiAgICByZXR1cm4gdGhpcy5tYXRjaChzZXF1ZW5jZUluZGV4LCBzZXF1ZW5jZSwgZnVuY3Rpb24gKGNvdmVyYWdlLCBnbHlwaCkgewogICAgICByZXR1cm4gX3RoaXMyLmNvdmVyYWdlSW5kZXgoY292ZXJhZ2UsIGdseXBoLmlkKSA+PSAwOwogICAgfSk7CiAgfTsKCiAgT1RQcm9jZXNzb3IucHJvdG90eXBlLmdldENsYXNzSUQgPSBmdW5jdGlvbiBnZXRDbGFzc0lEKGdseXBoLCBjbGFzc0RlZikgewogICAgc3dpdGNoIChjbGFzc0RlZi52ZXJzaW9uKSB7CiAgICAgIGNhc2UgMToKICAgICAgICAvLyBDbGFzcyBhcnJheQogICAgICAgIHZhciBpID0gZ2x5cGggLSBjbGFzc0RlZi5zdGFydEdseXBoOwogICAgICAgIGlmIChpID49IDAgJiYgaSA8IGNsYXNzRGVmLmNsYXNzVmFsdWVBcnJheS5sZW5ndGgpIHsKICAgICAgICAgIHJldHVybiBjbGFzc0RlZi5jbGFzc1ZhbHVlQXJyYXlbaV07CiAgICAgICAgfQoKICAgICAgICBicmVhazsKCiAgICAgIGNhc2UgMjoKICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxMyA9IGNsYXNzRGVmLmNsYXNzUmFuZ2VSZWNvcmQsIF9pc0FycmF5MTMgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjEzKSwgX2kxMyA9IDAsIF9pdGVyYXRvcjEzID0gX2lzQXJyYXkxMyA/IF9pdGVyYXRvcjEzIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjEzKTs7KSB7CiAgICAgICAgICB2YXIgX3JlZjE0OwoKICAgICAgICAgIGlmIChfaXNBcnJheTEzKSB7CiAgICAgICAgICAgIGlmIChfaTEzID49IF9pdGVyYXRvcjEzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgIF9yZWYxNCA9IF9pdGVyYXRvcjEzW19pMTMrK107CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBfaTEzID0gX2l0ZXJhdG9yMTMubmV4dCgpOwogICAgICAgICAgICBpZiAoX2kxMy5kb25lKSBicmVhazsKICAgICAgICAgICAgX3JlZjE0ID0gX2kxMy52YWx1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgcmFuZ2UgPSBfcmVmMTQ7CgogICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0IDw9IGdseXBoICYmIGdseXBoIDw9IHJhbmdlLmVuZCkgewogICAgICAgICAgICByZXR1cm4gcmFuZ2UuY2xhc3M7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBicmVhazsKICAgIH0KCiAgICByZXR1cm4gMDsKICB9OwoKICBPVFByb2Nlc3Nvci5wcm90b3R5cGUuY2xhc3NTZXF1ZW5jZU1hdGNoZXMgPSBmdW5jdGlvbiBjbGFzc1NlcXVlbmNlTWF0Y2hlcyhzZXF1ZW5jZUluZGV4LCBzZXF1ZW5jZSwgY2xhc3NEZWYpIHsKICAgIHZhciBfdGhpczMgPSB0aGlzOwoKICAgIHJldHVybiB0aGlzLm1hdGNoKHNlcXVlbmNlSW5kZXgsIHNlcXVlbmNlLCBmdW5jdGlvbiAoY2xhc3NJRCwgZ2x5cGgpIHsKICAgICAgcmV0dXJuIGNsYXNzSUQgPT09IF90aGlzMy5nZXRDbGFzc0lEKGdseXBoLmlkLCBjbGFzc0RlZik7CiAgICB9KTsKICB9OwoKICBPVFByb2Nlc3Nvci5wcm90b3R5cGUuYXBwbHlDb250ZXh0ID0gZnVuY3Rpb24gYXBwbHlDb250ZXh0KHRhYmxlKSB7CiAgICBzd2l0Y2ggKHRhYmxlLnZlcnNpb24pIHsKICAgICAgY2FzZSAxOgogICAgICAgIHZhciBpbmRleCA9IHRoaXMuY292ZXJhZ2VJbmRleCh0YWJsZS5jb3ZlcmFnZSk7CiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHNldCA9IHRhYmxlLnJ1bGVTZXRzW2luZGV4XTsKICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxNCA9IHNldCwgX2lzQXJyYXkxNCA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMTQpLCBfaTE0ID0gMCwgX2l0ZXJhdG9yMTQgPSBfaXNBcnJheTE0ID8gX2l0ZXJhdG9yMTQgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMTQpOzspIHsKICAgICAgICAgIHZhciBfcmVmMTU7CgogICAgICAgICAgaWYgKF9pc0FycmF5MTQpIHsKICAgICAgICAgICAgaWYgKF9pMTQgPj0gX2l0ZXJhdG9yMTQubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgX3JlZjE1ID0gX2l0ZXJhdG9yMTRbX2kxNCsrXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9pMTQgPSBfaXRlcmF0b3IxNC5uZXh0KCk7CiAgICAgICAgICAgIGlmIChfaTE0LmRvbmUpIGJyZWFrOwogICAgICAgICAgICBfcmVmMTUgPSBfaTE0LnZhbHVlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBydWxlID0gX3JlZjE1OwoKICAgICAgICAgIGlmICh0aGlzLnNlcXVlbmNlTWF0Y2hlcygxLCBydWxlLmlucHV0KSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBseUxvb2t1cExpc3QocnVsZS5sb29rdXBSZWNvcmRzKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGJyZWFrOwoKICAgICAgY2FzZSAyOgogICAgICAgIGlmICh0aGlzLmNvdmVyYWdlSW5kZXgodGFibGUuY292ZXJhZ2UpID09PSAtMSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaW5kZXggPSB0aGlzLmdldENsYXNzSUQodGhpcy5nbHlwaEl0ZXJhdG9yLmN1ci5pZCwgdGFibGUuY2xhc3NEZWYpOwogICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHsKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHNldCA9IHRhYmxlLmNsYXNzU2V0W2luZGV4XTsKICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IxNSA9IHNldCwgX2lzQXJyYXkxNSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMTUpLCBfaTE1ID0gMCwgX2l0ZXJhdG9yMTUgPSBfaXNBcnJheTE1ID8gX2l0ZXJhdG9yMTUgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMTUpOzspIHsKICAgICAgICAgIHZhciBfcmVmMTY7CgogICAgICAgICAgaWYgKF9pc0FycmF5MTUpIHsKICAgICAgICAgICAgaWYgKF9pMTUgPj0gX2l0ZXJhdG9yMTUubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgX3JlZjE2ID0gX2l0ZXJhdG9yMTVbX2kxNSsrXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9pMTUgPSBfaXRlcmF0b3IxNS5uZXh0KCk7CiAgICAgICAgICAgIGlmIChfaTE1LmRvbmUpIGJyZWFrOwogICAgICAgICAgICBfcmVmMTYgPSBfaTE1LnZhbHVlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBfcnVsZSA9IF9yZWYxNjsKCiAgICAgICAgICBpZiAodGhpcy5jbGFzc1NlcXVlbmNlTWF0Y2hlcygxLCBfcnVsZS5jbGFzc2VzLCB0YWJsZS5jbGFzc0RlZikpIHsKICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlMb29rdXBMaXN0KF9ydWxlLmxvb2t1cFJlY29yZHMpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlIDM6CiAgICAgICAgaWYgKHRoaXMuY292ZXJhZ2VTZXF1ZW5jZU1hdGNoZXMoMCwgdGFibGUuY292ZXJhZ2VzKSkgewogICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlMb29rdXBMaXN0KHRhYmxlLmxvb2t1cFJlY29yZHMpOwogICAgICAgIH0KCiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgcmV0dXJuIGZhbHNlOwogIH07CgogIE9UUHJvY2Vzc29yLnByb3RvdHlwZS5hcHBseUNoYWluaW5nQ29udGV4dCA9IGZ1bmN0aW9uIGFwcGx5Q2hhaW5pbmdDb250ZXh0KHRhYmxlKSB7CiAgICBzd2l0Y2ggKHRhYmxlLnZlcnNpb24pIHsKICAgICAgY2FzZSAxOgogICAgICAgIHZhciBpbmRleCA9IHRoaXMuY292ZXJhZ2VJbmRleCh0YWJsZS5jb3ZlcmFnZSk7CiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHNldCA9IHRhYmxlLmNoYWluUnVsZVNldHNbaW5kZXhdOwogICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjE2ID0gc2V0LCBfaXNBcnJheTE2ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IxNiksIF9pMTYgPSAwLCBfaXRlcmF0b3IxNiA9IF9pc0FycmF5MTYgPyBfaXRlcmF0b3IxNiA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IxNik7OykgewogICAgICAgICAgdmFyIF9yZWYxNzsKCiAgICAgICAgICBpZiAoX2lzQXJyYXkxNikgewogICAgICAgICAgICBpZiAoX2kxNiA+PSBfaXRlcmF0b3IxNi5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgICBfcmVmMTcgPSBfaXRlcmF0b3IxNltfaTE2KytdOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgX2kxNiA9IF9pdGVyYXRvcjE2Lm5leHQoKTsKICAgICAgICAgICAgaWYgKF9pMTYuZG9uZSkgYnJlYWs7CiAgICAgICAgICAgIF9yZWYxNyA9IF9pMTYudmFsdWU7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIHJ1bGUgPSBfcmVmMTc7CgogICAgICAgICAgaWYgKHRoaXMuc2VxdWVuY2VNYXRjaGVzKC1ydWxlLmJhY2t0cmFjay5sZW5ndGgsIHJ1bGUuYmFja3RyYWNrKSAmJiB0aGlzLnNlcXVlbmNlTWF0Y2hlcygxLCBydWxlLmlucHV0KSAmJiB0aGlzLnNlcXVlbmNlTWF0Y2hlcygxICsgcnVsZS5pbnB1dC5sZW5ndGgsIHJ1bGUubG9va2FoZWFkKSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBseUxvb2t1cExpc3QocnVsZS5sb29rdXBSZWNvcmRzKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGJyZWFrOwoKICAgICAgY2FzZSAyOgogICAgICAgIGlmICh0aGlzLmNvdmVyYWdlSW5kZXgodGFibGUuY292ZXJhZ2UpID09PSAtMSkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaW5kZXggPSB0aGlzLmdldENsYXNzSUQodGhpcy5nbHlwaEl0ZXJhdG9yLmN1ci5pZCwgdGFibGUuaW5wdXRDbGFzc0RlZik7CiAgICAgICAgdmFyIHJ1bGVzID0gdGFibGUuY2hhaW5DbGFzc1NldFtpbmRleF07CiAgICAgICAgaWYgKCFydWxlcykgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMTcgPSBydWxlcywgX2lzQXJyYXkxNyA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMTcpLCBfaTE3ID0gMCwgX2l0ZXJhdG9yMTcgPSBfaXNBcnJheTE3ID8gX2l0ZXJhdG9yMTcgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMTcpOzspIHsKICAgICAgICAgIHZhciBfcmVmMTg7CgogICAgICAgICAgaWYgKF9pc0FycmF5MTcpIHsKICAgICAgICAgICAgaWYgKF9pMTcgPj0gX2l0ZXJhdG9yMTcubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgX3JlZjE4ID0gX2l0ZXJhdG9yMTdbX2kxNysrXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9pMTcgPSBfaXRlcmF0b3IxNy5uZXh0KCk7CiAgICAgICAgICAgIGlmIChfaTE3LmRvbmUpIGJyZWFrOwogICAgICAgICAgICBfcmVmMTggPSBfaTE3LnZhbHVlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBfcnVsZTIgPSBfcmVmMTg7CgogICAgICAgICAgaWYgKHRoaXMuY2xhc3NTZXF1ZW5jZU1hdGNoZXMoLV9ydWxlMi5iYWNrdHJhY2subGVuZ3RoLCBfcnVsZTIuYmFja3RyYWNrLCB0YWJsZS5iYWNrdHJhY2tDbGFzc0RlZikgJiYgdGhpcy5jbGFzc1NlcXVlbmNlTWF0Y2hlcygxLCBfcnVsZTIuaW5wdXQsIHRhYmxlLmlucHV0Q2xhc3NEZWYpICYmIHRoaXMuY2xhc3NTZXF1ZW5jZU1hdGNoZXMoMSArIF9ydWxlMi5pbnB1dC5sZW5ndGgsIF9ydWxlMi5sb29rYWhlYWQsIHRhYmxlLmxvb2thaGVhZENsYXNzRGVmKSkgewogICAgICAgICAgICByZXR1cm4gdGhpcy5hcHBseUxvb2t1cExpc3QoX3J1bGUyLmxvb2t1cFJlY29yZHMpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgYnJlYWs7CgogICAgICBjYXNlIDM6CiAgICAgICAgaWYgKHRoaXMuY292ZXJhZ2VTZXF1ZW5jZU1hdGNoZXMoLXRhYmxlLmJhY2t0cmFja0dseXBoQ291bnQsIHRhYmxlLmJhY2t0cmFja0NvdmVyYWdlKSAmJiB0aGlzLmNvdmVyYWdlU2VxdWVuY2VNYXRjaGVzKDAsIHRhYmxlLmlucHV0Q292ZXJhZ2UpICYmIHRoaXMuY292ZXJhZ2VTZXF1ZW5jZU1hdGNoZXModGFibGUuaW5wdXRHbHlwaENvdW50LCB0YWJsZS5sb29rYWhlYWRDb3ZlcmFnZSkpIHsKICAgICAgICAgIHJldHVybiB0aGlzLmFwcGx5TG9va3VwTGlzdCh0YWJsZS5sb29rdXBSZWNvcmRzKTsKICAgICAgICB9CgogICAgICAgIGJyZWFrOwogICAgfQoKICAgIHJldHVybiBmYWxzZTsKICB9OwoKICByZXR1cm4gT1RQcm9jZXNzb3I7Cn0oKTsKCnZhciBHbHlwaEluZm8gPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gR2x5cGhJbmZvKGZvbnQsIGlkKSB7CiAgICB2YXIgY29kZVBvaW50cyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogW107CiAgICB2YXIgZmVhdHVyZXMgPSBhcmd1bWVudHNbM107CgogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEdseXBoSW5mbyk7CgogICAgdGhpcy5fZm9udCA9IGZvbnQ7CiAgICB0aGlzLmNvZGVQb2ludHMgPSBjb2RlUG9pbnRzOwogICAgdGhpcy5pZCA9IGlkOwoKICAgIHRoaXMuZmVhdHVyZXMgPSB7fTsKICAgIGlmIChBcnJheS5pc0FycmF5KGZlYXR1cmVzKSkgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGZlYXR1cmUgPSBmZWF0dXJlc1tpXTsKICAgICAgICB0aGlzLmZlYXR1cmVzW2ZlYXR1cmVdID0gdHJ1ZTsKICAgICAgfQogICAgfSBlbHNlIGlmICgodHlwZW9mIGZlYXR1cmVzID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihmZWF0dXJlcykpID09PSAnb2JqZWN0JykgewogICAgICBfT2JqZWN0JGFzc2lnbih0aGlzLmZlYXR1cmVzLCBmZWF0dXJlcyk7CiAgICB9CgogICAgdGhpcy5saWdhdHVyZUlEID0gbnVsbDsKICAgIHRoaXMubGlnYXR1cmVDb21wb25lbnQgPSBudWxsOwogICAgdGhpcy5pc0xpZ2F0ZWQgPSBmYWxzZTsKICAgIHRoaXMuY3Vyc2l2ZUF0dGFjaG1lbnQgPSBudWxsOwogICAgdGhpcy5tYXJrQXR0YWNobWVudCA9IG51bGw7CiAgICB0aGlzLnNoYXBlckluZm8gPSBudWxsOwogICAgdGhpcy5zdWJzdGl0dXRlZCA9IGZhbHNlOwogICAgdGhpcy5pc011bHRpcGxpZWQgPSBmYWxzZTsKICB9CgogIEdseXBoSW5mby5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkoKSB7CiAgICByZXR1cm4gbmV3IEdseXBoSW5mbyh0aGlzLl9mb250LCB0aGlzLmlkLCB0aGlzLmNvZGVQb2ludHMsIHRoaXMuZmVhdHVyZXMpOwogIH07CgogIF9jcmVhdGVDbGFzcyhHbHlwaEluZm8sIFt7CiAgICBrZXk6ICdpZCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuX2lkOwogICAgfSwKICAgIHNldDogZnVuY3Rpb24gc2V0KGlkKSB7CiAgICAgIHRoaXMuX2lkID0gaWQ7CiAgICAgIHRoaXMuc3Vic3RpdHV0ZWQgPSB0cnVlOwoKICAgICAgdmFyIEdERUYgPSB0aGlzLl9mb250LkdERUY7CiAgICAgIGlmIChHREVGICYmIEdERUYuZ2x5cGhDbGFzc0RlZikgewogICAgICAgIC8vIFRPRE86IGNsZWFuIHRoaXMgdXAKICAgICAgICB2YXIgY2xhc3NJRCA9IE9UUHJvY2Vzc29yLnByb3RvdHlwZS5nZXRDbGFzc0lEKGlkLCBHREVGLmdseXBoQ2xhc3NEZWYpOwogICAgICAgIHRoaXMuaXNCYXNlID0gY2xhc3NJRCA9PT0gMTsKICAgICAgICB0aGlzLmlzTGlnYXR1cmUgPSBjbGFzc0lEID09PSAyOwogICAgICAgIHRoaXMuaXNNYXJrID0gY2xhc3NJRCA9PT0gMzsKICAgICAgICB0aGlzLm1hcmtBdHRhY2htZW50VHlwZSA9IEdERUYubWFya0F0dGFjaENsYXNzRGVmID8gT1RQcm9jZXNzb3IucHJvdG90eXBlLmdldENsYXNzSUQoaWQsIEdERUYubWFya0F0dGFjaENsYXNzRGVmKSA6IDA7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdGhpcy5pc01hcmsgPSB0aGlzLmNvZGVQb2ludHMuZXZlcnkodW5pY29kZS5pc01hcmspOwogICAgICAgIHRoaXMuaXNCYXNlID0gIXRoaXMuaXNNYXJrOwogICAgICAgIHRoaXMuaXNMaWdhdHVyZSA9IHRoaXMuY29kZVBvaW50cy5sZW5ndGggPiAxOwogICAgICAgIHRoaXMubWFya0F0dGFjaG1lbnRUeXBlID0gMDsKICAgICAgfQogICAgfQogIH1dKTsKCiAgcmV0dXJuIEdseXBoSW5mbzsKfSgpOwoKdmFyIF9jbGFzcyQ1Owp2YXIgX3RlbXAkMTsKLyoqCiAqIFRoaXMgaXMgYSBzaGFwZXIgZm9yIHRoZSBIYW5ndWwgc2NyaXB0LCB1c2VkIGJ5IHRoZSBLb3JlYW4gbGFuZ3VhZ2UuCiAqIEl0IGRvZXMgdGhlIGZvbGxvd2luZzoKICogICAtIGRlY29tcG9zZSBpZiB1bnN1cHBvcnRlZCBieSB0aGUgZm9udDoKICogICAgIDxMVj4gICAtPiA8TCxWPgogKiAgICAgPExWVD4gIC0+IDxMLFYsVD4KICogICAgIDxMVixUPiAtPiA8TCxWLFQ+CiAqCiAqICAgLSBjb21wb3NlIGlmIHN1cHBvcnRlZCBieSB0aGUgZm9udDoKICogICAgIDxMLFY+ICAgLT4gPExWPgogKiAgICAgPEwsVixUPiAtPiA8TFZUPgogKiAgICAgPExWLFQ+ICAtPiA8TFZUPgogKgogKiAgIC0gcmVvcmRlciB0b25lIG1hcmtzIChTIGlzIGFueSB2YWxpZCBzeWxsYWJsZSk6CiAqICAgICA8UywgTT4gLT4gPE0sIFM+CiAqCiAqICAgLSBhcHBseSBsam1vLCB2am1vLCBhbmQgdGptbyBPcGVuVHlwZSBmZWF0dXJlcyB0byBkZWNvbXBvc2VkIEphbW8gc2VxdWVuY2VzLgogKgogKiBUaGlzIGxvZ2ljIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgZG9jdW1lbnRzOgogKiAgIC0gaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT3BlblR5cGVEZXYvaGFuZ3VsL2ludHJvLmh0bQogKiAgIC0gaHR0cDovL2t0dWcub3JnL35ub21vcy9oYXJmYnV6ei1oYW5ndWwvaGFuZ3Vsc2hhcGVyLnBkZgogKi8KdmFyIEhhbmd1bFNoYXBlciA9IChfdGVtcCQxID0gX2NsYXNzJDUgPSBmdW5jdGlvbiAoX0RlZmF1bHRTaGFwZXIpIHsKICBfaW5oZXJpdHMoSGFuZ3VsU2hhcGVyLCBfRGVmYXVsdFNoYXBlcik7CgogIGZ1bmN0aW9uIEhhbmd1bFNoYXBlcigpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBIYW5ndWxTaGFwZXIpOwoKICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfRGVmYXVsdFNoYXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTsKICB9CgogIEhhbmd1bFNoYXBlci5wbGFuRmVhdHVyZXMgPSBmdW5jdGlvbiBwbGFuRmVhdHVyZXMocGxhbikgewogICAgcGxhbi5hZGQoWydsam1vJywgJ3ZqbW8nLCAndGptbyddLCBmYWxzZSk7CiAgfTsKCiAgSGFuZ3VsU2hhcGVyLmFzc2lnbkZlYXR1cmVzID0gZnVuY3Rpb24gYXNzaWduRmVhdHVyZXMocGxhbiwgZ2x5cGhzKSB7CiAgICB2YXIgc3RhdGUgPSAwOwogICAgdmFyIGkgPSAwOwogICAgd2hpbGUgKGkgPCBnbHlwaHMubGVuZ3RoKSB7CiAgICAgIHZhciBhY3Rpb24gPSB2b2lkIDA7CiAgICAgIHZhciBnbHlwaCA9IGdseXBoc1tpXTsKICAgICAgdmFyIGNvZGUgPSBnbHlwaC5jb2RlUG9pbnRzWzBdOwogICAgICB2YXIgdHlwZSA9IGdldFR5cGUoY29kZSk7CgogICAgICB2YXIgX1NUQVRFX1RBQkxFJHN0YXRlJHR5ID0gU1RBVEVfVEFCTEUkMVtzdGF0ZV1bdHlwZV07CiAgICAgIGFjdGlvbiA9IF9TVEFURV9UQUJMRSRzdGF0ZSR0eVswXTsKICAgICAgc3RhdGUgPSBfU1RBVEVfVEFCTEUkc3RhdGUkdHlbMV07CgoKICAgICAgc3dpdGNoIChhY3Rpb24pIHsKICAgICAgICBjYXNlIERFQ09NUE9TRToKICAgICAgICAgIC8vIERlY29tcG9zZSB0aGUgY29tcG9zZWQgc3lsbGFibGUgaWYgaXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZm9udC4KICAgICAgICAgIGlmICghcGxhbi5mb250Lmhhc0dseXBoRm9yQ29kZVBvaW50KGNvZGUpKSB7CiAgICAgICAgICAgIGkgPSBkZWNvbXBvc2UoZ2x5cGhzLCBpLCBwbGFuLmZvbnQpOwogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgQ09NUE9TRToKICAgICAgICAgIC8vIEZvdW5kIGEgZGVjb21wb3NlZCBzeWxsYWJsZS4gVHJ5IHRvIGNvbXBvc2UgaWYgc3VwcG9ydGVkIGJ5IHRoZSBmb250LgogICAgICAgICAgaSA9IGNvbXBvc2UoZ2x5cGhzLCBpLCBwbGFuLmZvbnQpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgVE9ORV9NQVJLOgogICAgICAgICAgLy8gR290IGEgdmFsaWQgc3lsbGFibGUsIGZvbGxvd2VkIGJ5IGEgdG9uZSBtYXJrLiBNb3ZlIHRoZSB0b25lIG1hcmsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3lsbGFibGUuCiAgICAgICAgICByZW9yZGVyVG9uZU1hcmsoZ2x5cGhzLCBpLCBwbGFuLmZvbnQpOwogICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgSU5WQUxJRDoKICAgICAgICAgIC8vIFRvbmUgbWFyayBoYXMgbm8gdmFsaWQgc3lsbGFibGUgdG8gYXR0YWNoIHRvLCBzbyBpbnNlcnQgYSBkb3R0ZWQgY2lyY2xlCiAgICAgICAgICBpID0gaW5zZXJ0RG90dGVkQ2lyY2xlKGdseXBocywgaSwgcGxhbi5mb250KTsKICAgICAgICAgIGJyZWFrOwogICAgICB9CgogICAgICBpKys7CiAgICB9CiAgfTsKCiAgcmV0dXJuIEhhbmd1bFNoYXBlcjsKfShEZWZhdWx0U2hhcGVyKSwgX2NsYXNzJDUuemVyb01hcmtXaWR0aHMgPSAnTk9ORScsIF90ZW1wJDEpOwp2YXIgSEFOR1VMX0JBU0UgPSAweGFjMDA7CnZhciBIQU5HVUxfRU5EID0gMHhkN2E0Owp2YXIgSEFOR1VMX0NPVU5UID0gSEFOR1VMX0VORCAtIEhBTkdVTF9CQVNFICsgMTsKdmFyIExfQkFTRSA9IDB4MTEwMDsgLy8gbGVhZAp2YXIgVl9CQVNFID0gMHgxMTYxOyAvLyB2b3dlbAp2YXIgVF9CQVNFID0gMHgxMWE3OyAvLyB0cmFpbAp2YXIgTF9DT1VOVCA9IDE5Owp2YXIgVl9DT1VOVCA9IDIxOwp2YXIgVF9DT1VOVCA9IDI4Owp2YXIgTF9FTkQgPSBMX0JBU0UgKyBMX0NPVU5UIC0gMTsKdmFyIFZfRU5EID0gVl9CQVNFICsgVl9DT1VOVCAtIDE7CnZhciBUX0VORCA9IFRfQkFTRSArIFRfQ09VTlQgLSAxOwp2YXIgRE9UVEVEX0NJUkNMRSA9IDB4MjVjYzsKCnZhciBpc0wgPSBmdW5jdGlvbiBpc0woY29kZSkgewogIHJldHVybiAweDExMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4MTE1ZiB8fCAweGE5NjAgPD0gY29kZSAmJiBjb2RlIDw9IDB4YTk3YzsKfTsKdmFyIGlzViA9IGZ1bmN0aW9uIGlzVihjb2RlKSB7CiAgcmV0dXJuIDB4MTE2MCA8PSBjb2RlICYmIGNvZGUgPD0gMHgxMWE3IHx8IDB4ZDdiMCA8PSBjb2RlICYmIGNvZGUgPD0gMHhkN2M2Owp9Owp2YXIgaXNUID0gZnVuY3Rpb24gaXNUKGNvZGUpIHsKICByZXR1cm4gMHgxMWE4IDw9IGNvZGUgJiYgY29kZSA8PSAweDExZmYgfHwgMHhkN2NiIDw9IGNvZGUgJiYgY29kZSA8PSAweGQ3ZmI7Cn07CnZhciBpc1RvbmUgPSBmdW5jdGlvbiBpc1RvbmUoY29kZSkgewogIHJldHVybiAweDMwMmUgPD0gY29kZSAmJiBjb2RlIDw9IDB4MzAyZjsKfTsKdmFyIGlzTFZUID0gZnVuY3Rpb24gaXNMVlQoY29kZSkgewogIHJldHVybiBIQU5HVUxfQkFTRSA8PSBjb2RlICYmIGNvZGUgPD0gSEFOR1VMX0VORDsKfTsKdmFyIGlzTFYgPSBmdW5jdGlvbiBpc0xWKGNvZGUpIHsKICByZXR1cm4gY29kZSAtIEhBTkdVTF9CQVNFIDwgSEFOR1VMX0NPVU5UICYmIChjb2RlIC0gSEFOR1VMX0JBU0UpICUgVF9DT1VOVCA9PT0gMDsKfTsKdmFyIGlzQ29tYmluaW5nTCA9IGZ1bmN0aW9uIGlzQ29tYmluaW5nTChjb2RlKSB7CiAgcmV0dXJuIExfQkFTRSA8PSBjb2RlICYmIGNvZGUgPD0gTF9FTkQ7Cn07CnZhciBpc0NvbWJpbmluZ1YgPSBmdW5jdGlvbiBpc0NvbWJpbmluZ1YoY29kZSkgewogIHJldHVybiBWX0JBU0UgPD0gY29kZSAmJiBjb2RlIDw9IFZfRU5EOwp9Owp2YXIgaXNDb21iaW5pbmdUID0gZnVuY3Rpb24gaXNDb21iaW5pbmdUKGNvZGUpIHsKICByZXR1cm4gVF9CQVNFICsgMSAmJiAxIDw9IGNvZGUgJiYgY29kZSA8PSBUX0VORDsKfTsKCi8vIENoYXJhY3RlciBjYXRlZ29yaWVzCnZhciBYID0gMDsgLy8gT3RoZXIgY2hhcmFjdGVyCnZhciBMID0gMTsgLy8gTGVhZGluZyBjb25zb25hbnQKdmFyIFYgPSAyOyAvLyBNZWRpYWwgdm93ZWwKdmFyIFQgPSAzOyAvLyBUcmFpbGluZyBjb25zb25hbnQKdmFyIExWID0gNDsgLy8gQ29tcG9zZWQgPExWPiBzeWxsYWJsZQp2YXIgTFZUID0gNTsgLy8gQ29tcG9zZWQgPExWVD4gc3lsbGFibGUKdmFyIE0gPSA2OyAvLyBUb25lIG1hcmsKCi8vIFRoaXMgZnVuY3Rpb24gY2xhc3NpZmllcyBhIGNoYXJhY3RlciB1c2luZyB0aGUgYWJvdmUgY2F0ZWdvcmllcy4KZnVuY3Rpb24gZ2V0VHlwZShjb2RlKSB7CiAgaWYgKGlzTChjb2RlKSkgewogICAgcmV0dXJuIEw7CiAgfQogIGlmIChpc1YoY29kZSkpIHsKICAgIHJldHVybiBWOwogIH0KICBpZiAoaXNUKGNvZGUpKSB7CiAgICByZXR1cm4gVDsKICB9CiAgaWYgKGlzTFYoY29kZSkpIHsKICAgIHJldHVybiBMVjsKICB9CiAgaWYgKGlzTFZUKGNvZGUpKSB7CiAgICByZXR1cm4gTFZUOwogIH0KICBpZiAoaXNUb25lKGNvZGUpKSB7CiAgICByZXR1cm4gTTsKICB9CiAgcmV0dXJuIFg7Cn0KCi8vIFN0YXRlIG1hY2hpbmUgYWN0aW9ucwp2YXIgTk9fQUNUSU9OID0gMDsKdmFyIERFQ09NUE9TRSA9IDE7CnZhciBDT01QT1NFID0gMjsKdmFyIFRPTkVfTUFSSyA9IDQ7CnZhciBJTlZBTElEID0gNTsKCi8vIEJ1aWxkIGEgc3RhdGUgbWFjaGluZSB0aGF0IGFjY2VwdHMgdmFsaWQgc3lsbGFibGVzLCBhbmQgYXBwbGllcyBhY3Rpb25zIGFsb25nIHRoZSB3YXkuCi8vIFRoZSBsb2dpYyB0aGlzIGlzIGltcGxlbWVudGluZyBpcyBkb2N1bWVudGVkIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUuCnZhciBTVEFURV9UQUJMRSQxID0gWwovLyAgICAgICBYICAgICAgICAgICAgICAgICBMICAgICAgICAgICAgICAgICBWICAgICAgICAgICAgICAgIFQgICAgICAgICAgICAgICAgICBMViAgICAgICAgICAgICAgICBMVlQgICAgICAgICAgICAgICBNCi8vIFN0YXRlIDA6IHN0YXJ0IHN0YXRlCltbTk9fQUNUSU9OLCAwXSwgW05PX0FDVElPTiwgMV0sIFtOT19BQ1RJT04sIDBdLCBbTk9fQUNUSU9OLCAwXSwgW0RFQ09NUE9TRSwgMl0sIFtERUNPTVBPU0UsIDNdLCBbSU5WQUxJRCwgMF1dLAoKLy8gU3RhdGUgMTogPEw+CltbTk9fQUNUSU9OLCAwXSwgW05PX0FDVElPTiwgMV0sIFtDT01QT1NFLCAyXSwgW05PX0FDVElPTiwgMF0sIFtERUNPTVBPU0UsIDJdLCBbREVDT01QT1NFLCAzXSwgW0lOVkFMSUQsIDBdXSwKCi8vIFN0YXRlIDI6IDxMLFY+IG9yIDxMVj4KW1tOT19BQ1RJT04sIDBdLCBbTk9fQUNUSU9OLCAxXSwgW05PX0FDVElPTiwgMF0sIFtDT01QT1NFLCAzXSwgW0RFQ09NUE9TRSwgMl0sIFtERUNPTVBPU0UsIDNdLCBbVE9ORV9NQVJLLCAwXV0sCgovLyBTdGF0ZSAzOiA8TCxWLFQ+IG9yIDxMVlQ+CltbTk9fQUNUSU9OLCAwXSwgW05PX0FDVElPTiwgMV0sIFtOT19BQ1RJT04sIDBdLCBbTk9fQUNUSU9OLCAwXSwgW0RFQ09NUE9TRSwgMl0sIFtERUNPTVBPU0UsIDNdLCBbVE9ORV9NQVJLLCAwXV1dOwoKZnVuY3Rpb24gZ2V0R2x5cGgoZm9udCwgY29kZSwgZmVhdHVyZXMpIHsKICByZXR1cm4gbmV3IEdseXBoSW5mbyhmb250LCBmb250LmdseXBoRm9yQ29kZVBvaW50KGNvZGUpLmlkLCBbY29kZV0sIGZlYXR1cmVzKTsKfQoKZnVuY3Rpb24gZGVjb21wb3NlKGdseXBocywgaSwgZm9udCkgewogIHZhciBnbHlwaCA9IGdseXBoc1tpXTsKICB2YXIgY29kZSA9IGdseXBoLmNvZGVQb2ludHNbMF07CgogIHZhciBzID0gY29kZSAtIEhBTkdVTF9CQVNFOwogIHZhciB0ID0gVF9CQVNFICsgcyAlIFRfQ09VTlQ7CiAgcyA9IHMgLyBUX0NPVU5UIHwgMDsKICB2YXIgbCA9IExfQkFTRSArIHMgLyBWX0NPVU5UIHwgMDsKICB2YXIgdiA9IFZfQkFTRSArIHMgJSBWX0NPVU5UOwoKICAvLyBEb24ndCBkZWNvbXBvc2UgaWYgYWxsIG9mIHRoZSBjb21wb25lbnRzIGFyZSBub3QgYXZhaWxhYmxlCiAgaWYgKCFmb250Lmhhc0dseXBoRm9yQ29kZVBvaW50KGwpIHx8ICFmb250Lmhhc0dseXBoRm9yQ29kZVBvaW50KHYpIHx8IHQgIT09IFRfQkFTRSAmJiAhZm9udC5oYXNHbHlwaEZvckNvZGVQb2ludCh0KSkgewogICAgcmV0dXJuIGk7CiAgfQoKICAvLyBSZXBsYWNlIHRoZSBjdXJyZW50IGdseXBoIHdpdGggZGVjb21wb3NlZCBMLCBWLCBhbmQgVCBnbHlwaHMsCiAgLy8gYW5kIGFwcGx5IHRoZSBwcm9wZXIgT3BlblR5cGUgZmVhdHVyZXMgdG8gZWFjaCBjb21wb25lbnQuCiAgdmFyIGxqbW8gPSBnZXRHbHlwaChmb250LCBsLCBnbHlwaC5mZWF0dXJlcyk7CiAgbGptby5mZWF0dXJlcy5sam1vID0gdHJ1ZTsKCiAgdmFyIHZqbW8gPSBnZXRHbHlwaChmb250LCB2LCBnbHlwaC5mZWF0dXJlcyk7CiAgdmptby5mZWF0dXJlcy52am1vID0gdHJ1ZTsKCiAgdmFyIGluc2VydCA9IFtsam1vLCB2am1vXTsKCiAgaWYgKHQgPiBUX0JBU0UpIHsKICAgIHZhciB0am1vID0gZ2V0R2x5cGgoZm9udCwgdCwgZ2x5cGguZmVhdHVyZXMpOwogICAgdGptby5mZWF0dXJlcy50am1vID0gdHJ1ZTsKICAgIGluc2VydC5wdXNoKHRqbW8pOwogIH0KCiAgZ2x5cGhzLnNwbGljZS5hcHBseShnbHlwaHMsIFtpLCAxXS5jb25jYXQoaW5zZXJ0KSk7CiAgcmV0dXJuIGkgKyBpbnNlcnQubGVuZ3RoIC0gMTsKfQoKZnVuY3Rpb24gY29tcG9zZShnbHlwaHMsIGksIGZvbnQpIHsKICB2YXIgZ2x5cGggPSBnbHlwaHNbaV07CiAgdmFyIGNvZGUgPSBnbHlwaHNbaV0uY29kZVBvaW50c1swXTsKICB2YXIgdHlwZSA9IGdldFR5cGUoY29kZSk7CgogIHZhciBwcmV2ID0gZ2x5cGhzW2kgLSAxXS5jb2RlUG9pbnRzWzBdOwogIHZhciBwcmV2VHlwZSA9IGdldFR5cGUocHJldik7CgogIC8vIEZpZ3VyZSBvdXQgd2hhdCB0eXBlIG9mIHN5bGxhYmxlIHdlJ3JlIGRlYWxpbmcgd2l0aAogIHZhciBsdiA9IHZvaWQgMCwKICAgICAgbGptbyA9IHZvaWQgMCwKICAgICAgdmptbyA9IHZvaWQgMCwKICAgICAgdGptbyA9IHZvaWQgMDsKICBpZiAocHJldlR5cGUgPT09IExWICYmIHR5cGUgPT09IFQpIHsKICAgIC8vIDxMVixUPgogICAgbHYgPSBwcmV2OwogICAgdGptbyA9IGdseXBoOwogIH0gZWxzZSB7CiAgICBpZiAodHlwZSA9PT0gVikgewogICAgICAvLyA8TCxWPgogICAgICBsam1vID0gZ2x5cGhzW2kgLSAxXTsKICAgICAgdmptbyA9IGdseXBoOwogICAgfSBlbHNlIHsKICAgICAgLy8gPEwsVixUPgogICAgICBsam1vID0gZ2x5cGhzW2kgLSAyXTsKICAgICAgdmptbyA9IGdseXBoc1tpIC0gMV07CiAgICAgIHRqbW8gPSBnbHlwaDsKICAgIH0KCiAgICB2YXIgbCA9IGxqbW8uY29kZVBvaW50c1swXTsKICAgIHZhciB2ID0gdmptby5jb2RlUG9pbnRzWzBdOwoKICAgIC8vIE1ha2Ugc3VyZSBMIGFuZCBWIGFyZSBjb21iaW5pbmcgY2hhcmFjdGVycwogICAgaWYgKGlzQ29tYmluaW5nTChsKSAmJiBpc0NvbWJpbmluZ1YodikpIHsKICAgICAgbHYgPSBIQU5HVUxfQkFTRSArICgobCAtIExfQkFTRSkgKiBWX0NPVU5UICsgKHYgLSBWX0JBU0UpKSAqIFRfQ09VTlQ7CiAgICB9CiAgfQoKICB2YXIgdCA9IHRqbW8gJiYgdGptby5jb2RlUG9pbnRzWzBdIHx8IFRfQkFTRTsKICBpZiAobHYgIT0gbnVsbCAmJiAodCA9PT0gVF9CQVNFIHx8IGlzQ29tYmluaW5nVCh0KSkpIHsKICAgIHZhciBzID0gbHYgKyAodCAtIFRfQkFTRSk7CgogICAgLy8gUmVwbGFjZSB3aXRoIGEgY29tcG9zZWQgZ2x5cGggaWYgc3VwcG9ydGVkIGJ5IHRoZSBmb250LAogICAgLy8gb3RoZXJ3aXNlIGFwcGx5IHRoZSBwcm9wZXIgT3BlblR5cGUgZmVhdHVyZXMgdG8gZWFjaCBjb21wb25lbnQuCiAgICBpZiAoZm9udC5oYXNHbHlwaEZvckNvZGVQb2ludChzKSkgewogICAgICB2YXIgZGVsID0gcHJldlR5cGUgPT09IFYgPyAzIDogMjsKICAgICAgZ2x5cGhzLnNwbGljZShpIC0gZGVsICsgMSwgZGVsLCBnZXRHbHlwaChmb250LCBzLCBnbHlwaC5mZWF0dXJlcykpOwogICAgICByZXR1cm4gaSAtIGRlbCArIDE7CiAgICB9CiAgfQoKICAvLyBEaWRuJ3QgY29tcG9zZSAoZWl0aGVyIGEgbm9uLWNvbWJpbmluZyBjb21wb25lbnQgb3IgdW5zdXBwb3J0ZWQgYnkgZm9udCkuCiAgaWYgKGxqbW8pIHsKICAgIGxqbW8uZmVhdHVyZXMubGptbyA9IHRydWU7CiAgfQogIGlmICh2am1vKSB7CiAgICB2am1vLmZlYXR1cmVzLnZqbW8gPSB0cnVlOwogIH0KICBpZiAodGptbykgewogICAgdGptby5mZWF0dXJlcy50am1vID0gdHJ1ZTsKICB9CgogIGlmIChwcmV2VHlwZSA9PT0gTFYpIHsKICAgIC8vIFNlcXVlbmNlIHdhcyBvcmlnaW5hbGx5IDxMLFY+LCB3aGljaCBnb3QgY29tYmluZWQgZWFybGllci4KICAgIC8vIEVpdGhlciB0aGUgVCB3YXMgbm9uLWNvbWJpbmluZywgb3IgdGhlIExWVCBnbHlwaCB3YXNuJ3Qgc3VwcG9ydGVkLgogICAgLy8gRGVjb21wb3NlIHRoZSBnbHlwaCBhZ2FpbiBhbmQgYXBwbHkgT1QgZmVhdHVyZXMuCiAgICBkZWNvbXBvc2UoZ2x5cGhzLCBpIC0gMSwgZm9udCk7CiAgICByZXR1cm4gaSArIDE7CiAgfQoKICByZXR1cm4gaTsKfQoKZnVuY3Rpb24gZ2V0TGVuZ3RoKGNvZGUpIHsKICBzd2l0Y2ggKGdldFR5cGUoY29kZSkpIHsKICAgIGNhc2UgTFY6CiAgICBjYXNlIExWVDoKICAgICAgcmV0dXJuIDE7CiAgICBjYXNlIFY6CiAgICAgIHJldHVybiAyOwogICAgY2FzZSBUOgogICAgICByZXR1cm4gMzsKICB9Cn0KCmZ1bmN0aW9uIHJlb3JkZXJUb25lTWFyayhnbHlwaHMsIGksIGZvbnQpIHsKICB2YXIgZ2x5cGggPSBnbHlwaHNbaV07CiAgdmFyIGNvZGUgPSBnbHlwaHNbaV0uY29kZVBvaW50c1swXTsKCiAgLy8gTW92ZSB0b25lIG1hcmsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcHJldmlvdXMgc3lsbGFibGUsIHVubGVzcyBpdCBpcyB6ZXJvIHdpZHRoCiAgaWYgKGZvbnQuZ2x5cGhGb3JDb2RlUG9pbnQoY29kZSkuYWR2YW5jZVdpZHRoID09PSAwKSB7CiAgICByZXR1cm47CiAgfQoKICB2YXIgcHJldiA9IGdseXBoc1tpIC0gMV0uY29kZVBvaW50c1swXTsKICB2YXIgbGVuID0gZ2V0TGVuZ3RoKHByZXYpOwoKICBnbHlwaHMuc3BsaWNlKGksIDEpOwogIHJldHVybiBnbHlwaHMuc3BsaWNlKGkgLSBsZW4sIDAsIGdseXBoKTsKfQoKZnVuY3Rpb24gaW5zZXJ0RG90dGVkQ2lyY2xlKGdseXBocywgaSwgZm9udCkgewogIHZhciBnbHlwaCA9IGdseXBoc1tpXTsKICB2YXIgY29kZSA9IGdseXBoc1tpXS5jb2RlUG9pbnRzWzBdOwoKICBpZiAoZm9udC5oYXNHbHlwaEZvckNvZGVQb2ludChET1RURURfQ0lSQ0xFKSkgewogICAgdmFyIGRvdHRlZENpcmNsZSA9IGdldEdseXBoKGZvbnQsIERPVFRFRF9DSVJDTEUsIGdseXBoLmZlYXR1cmVzKTsKCiAgICAvLyBJZiB0aGUgdG9uZSBtYXJrIGlzIHplcm8gd2lkdGgsIGluc2VydCB0aGUgZG90dGVkIGNpcmNsZSBiZWZvcmUsIG90aGVyd2lzZSBhZnRlcgogICAgdmFyIGlkeCA9IGZvbnQuZ2x5cGhGb3JDb2RlUG9pbnQoY29kZSkuYWR2YW5jZVdpZHRoID09PSAwID8gaSA6IGkgKyAxOwogICAgZ2x5cGhzLnNwbGljZShpZHgsIDAsIGRvdHRlZENpcmNsZSk7CiAgICBpKys7CiAgfQoKICByZXR1cm4gaTsKfQoKdmFyIHN0YXRlVGFibGUgPSBbWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMCwgMTAsIDExLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxN10sIFswLCAwLCAwLCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMjUsIDI2LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAyOCwgMjksIDMwLCAzMSwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMzUsIDM2LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAzOCwgNSwgNywgNywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDEzLCAwLCAwLCAxNiwgMF0sIFswLCAzOSwgMCwgMCwgMCwgNDAsIDQxLCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDM5LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDQzLCA0NCwgNDQsIDgsIDksIDAsIDAsIDAsIDAsIDEyLCA0MywgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0MywgNDQsIDQ0LCA4LCA5LCAwLCAwLCAwLCAwLCAwLCA0MywgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0NSwgNDYsIDQ3LCA0OCwgNDksIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1MCwgMCwgMCwgNTEsIDAsIDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDAsIDU5LCAwLCAwLCA2MCwgNjEsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDQsIDUsIDcsIDcsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCAxMywgMCwgMCwgMTYsIDBdLCBbMCwgNjMsIDY0LCAwLCAwLCA0MCwgNDEsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNjMsIDAsIDBdLCBbMCwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMCwgMTAsIDExLCAxMSwgMTIsIDEzLCAwLCAyLCAxNiwgMF0sIFswLCAwLCAwLCAxOCwgNjUsIDIwLCAyMSwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMjUsIDI2LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAwLCA2NiwgNjcsIDY3LCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgNjgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNjksIDAsIDcwLCA3MCwgMCwgNzEsIDAsIDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDczLCAxOSwgNzQsIDc0LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAyNiwgMCwgMCwgMjcsIDBdLCBbMCwgNzUsIDAsIDAsIDAsIDc2LCA3NywgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNzUsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNzksIDgwLCA4MCwgMjIsIDIzLCAwLCAwLCAwLCAwLCAyNSwgNzksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTgsIDE5LCAyMCwgNzQsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDI1LCAyNiwgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgODEsIDgyLCA4MywgODQsIDg1LCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDg2LCAwLCAwLCA4NywgMCwgMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTgsIDE5LCA3NCwgNzQsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDI2LCAwLCAwLCAyNywgMF0sIFswLCA4OSwgOTAsIDAsIDAsIDc2LCA3NywgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgODksIDAsIDBdLCBbMCwgMCwgMCwgMCwgOTEsIDkyLCA5MiwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMCwgOTMsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgOTQsIDI5LCA5NSwgMzEsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDM2LCAwLCAwLCAzNywgMF0sIFswLCA5NiwgMCwgMCwgMCwgOTcsIDk4LCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCA5NiwgMCwgMF0sIFswLCAwLCAwLCAwLCAxMDAsIDEwMSwgMTAxLCAzMiwgMzMsIDAsIDAsIDAsIDAsIDM1LCAxMDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTAwLCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCAwLCAxMDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTA3LCAwLCAwLCAxMDgsIDAsIDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAyOCwgMjksIDk1LCAzMSwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgMzYsIDAsIDAsIDM3LCAwXSwgWzAsIDExMCwgMTExLCAwLCAwLCA5NywgOTgsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDExMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAxMTIsIDExMywgMTEzLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAxMTQsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNSwgNywgNywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDEzLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAxMTUsIDExNiwgMTE3LCAxMTgsIDgsIDksIDAsIDEwLCAwLCAwLCAxMTksIDEyMCwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTIxLCAxMjEsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMF0sIFswLCAzOSwgMCwgMTIyLCAwLCAxMjMsIDEyMywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAzOSwgMCwgMF0sIFswLCAxMjQsIDY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQsIDAsIDBdLCBbMCwgMzksIDAsIDAsIDAsIDEyMSwgMTI1LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDM5LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDEyNiwgMTI2LCA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDQ2LCA0NywgNDgsIDQ5LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0OSwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDEyNywgMTI3LCA0OSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAxMjgsIDEyNywgMTI3LCA0OSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTM1LCA1NCwgNTYsIDU2LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCA2MSwgMCwgMCwgNjIsIDBdLCBbMCwgMTM2LCAwLCAwLCAwLCAxMzcsIDEzOCwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDEzNiwgMCwgMF0sIFswLCAwLCAwLCAwLCAxNDAsIDE0MSwgMTQxLCA1NywgNTgsIDAsIDAsIDAsIDAsIDYwLCAxNDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTQwLCAxNDEsIDE0MSwgNTcsIDU4LCAwLCAwLCAwLCAwLCAwLCAxNDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDE0NywgMCwgMCwgMTQ4LCAwLCA1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTMsIDU0LCA1NiwgNTYsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDYxLCAwLCAwLCA2MiwgMF0sIFswLCAxNTAsIDE1MSwgMCwgMCwgMTM3LCAxMzgsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAxNTAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTUyLCAxNTMsIDE1MywgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTU0LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDE1NSwgMTE2LCAxNTYsIDE1NywgOCwgOSwgMCwgMTAsIDAsIDAsIDE1OCwgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCAwLCAxMjEsIDEyMSwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgNzUsIDMsIDQsIDUsIDE1OSwgMTYwLCA4LCAxNjEsIDAsIDE2MiwgMCwgMTEsIDEyLCAxNjMsIDAsIDc1LCAxNiwgMF0sIFswLCAwLCAwLCAwLCAwLCA0MCwgMTY0LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTY1LCA0NCwgNDQsIDgsIDksIDAsIDAsIDAsIDAsIDAsIDE2NSwgMCwgMCwgMCwgMF0sIFswLCAxMjQsIDY0LCAwLCAwLCA0MCwgMTY0LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDEyNCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA3MCwgNzAsIDAsIDcxLCAwLCA3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAxNjYsIDAsIDAsIDE2NywgMCwgNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDE5LCA3NCwgNzQsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDI2LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAwLCA3OSwgODAsIDgwLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDAsIDc5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMTczLCAxNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDAsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAwLCAwLCAwXSwgWzAsIDc1LCAwLCAxNzYsIDAsIDE3NywgMTc3LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNzUsIDAsIDBdLCBbMCwgMTc4LCA5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc4LCAwLCAwXSwgWzAsIDc1LCAwLCAwLCAwLCAxNzUsIDE3OSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNzUsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTgwLCAxODAsIDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDgyLCA4MywgODQsIDg1LCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODUsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTgxLCAxODEsIDg1LCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAxODIsIDE4MSwgMTgxLCA4NSwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgODYsIDAsIDAsIDAsIDAsIDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAxODksIDE3MCwgMTkwLCAxOTEsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDE5MiwgMTc0LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAwLCAwLCAxNzUsIDE3NSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDc2LCAxOTMsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTk0LCA4MCwgODAsIDIyLCAyMywgMCwgMCwgMCwgMCwgMCwgMTk0LCAwLCAwLCAwLCAwXSwgWzAsIDE3OCwgOTAsIDAsIDAsIDc2LCAxOTMsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDE3OCwgMCwgMF0sIFswLCAwLCAwLCAwLCAyOSwgOTUsIDMxLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAzNiwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgMTAwLCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCAwLCAxMDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTk1LCAxOTYsIDE5NywgMTk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAxOTksIDIwMCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjAxLCAyMDEsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgOTYsIDAsIDIwMiwgMCwgMjAzLCAyMDMsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCA5NiwgMCwgMF0sIFswLCAyMDQsIDExMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjA0LCAwLCAwXSwgWzAsIDk2LCAwLCAwLCAwLCAyMDEsIDIwNSwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgOTYsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjA2LCAyMDYsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDEwMywgMTA0LCAxMDUsIDEwNiwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMTA2LCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDIwNywgMjA3LCAxMDYsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDIwOCwgMjA3LCAyMDcsIDEwNiwgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjA5LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTA3LCAwLCAwLCAwLCAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjE1LCAxOTYsIDIxNiwgMjE3LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAyMTgsIDIwMCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjAxLCAyMDEsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA5NywgMjE5LCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDIyMCwgMTAxLCAxMDEsIDMyLCAzMywgMCwgMCwgMCwgMCwgMCwgMjIwLCAwLCAwLCAwLCAwXSwgWzAsIDIwNCwgMTExLCAwLCAwLCA5NywgMjE5LCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCAyMDQsIDAsIDBdLCBbMCwgMCwgMCwgMjIxLCAxMTYsIDIyMiwgMjIyLCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAyMjMsIDAsIDAsIDAsIDQwLCAyMjQsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMjIzLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDIyNSwgNDQsIDQ0LCA4LCA5LCAwLCAwLCAwLCAwLCAxMTksIDIyNSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAxMTUsIDExNiwgMTE3LCAyMjIsIDgsIDksIDAsIDEwLCAwLCAwLCAxMTksIDEyMCwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgMTE1LCAxMTYsIDIyMiwgMjIyLCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAyMjYsIDY0LCAwLCAwLCA0MCwgMjI0LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDIyNiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDM5LCAwLCAwLCAwLCAxMjEsIDEyMSwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAzOSwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDgsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjI3LCAwLCAyMjgsIDIyOSwgMCwgOSwgMCwgMTAsIDAsIDAsIDIzMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAzOSwgMCwgMTIyLCAwLCAxMjEsIDEyMSwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAzOSwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDIzMSwgMjMxLCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAyMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTMwLCAxMzEsIDEzMiwgMTMzLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMywgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDIzMywgMjMzLCAxMzMsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMjM0LCAyMzMsIDIzMywgMTMzLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDIzNSwgMjM2LCAyMzcsIDIzOCwgMjM5LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA1NCwgNTYsIDU2LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCA2MSwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMjQwLCAyNDEsIDI0MiwgMjQzLCA1NywgNTgsIDAsIDU5LCAwLCAwLCAyNDQsIDI0NSwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjQ2LCAyNDYsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDEzNiwgMCwgMjQ3LCAwLCAyNDgsIDI0OCwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAxMzYsIDAsIDBdLCBbMCwgMjQ5LCAxNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0OSwgMCwgMF0sIFswLCAxMzYsIDAsIDAsIDAsIDI0NiwgMjUwLCAwLCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgMTM2LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI1MSwgMjUxLCA1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDYsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI1MiwgMjUyLCAxNDYsIDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDI1MywgMjUyLCAyNTIsIDE0NiwgNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjU0LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDE0NywgMCwgMCwgMCwgMCwgNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDI2MCwgMjQxLCAyNjEsIDI2MiwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMjYzLCAyNDUsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI0NiwgMjQ2LCAwLCA1OCwgMCwgNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTM3LCAyNjQsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDI2NSwgMTQxLCAxNDEsIDU3LCA1OCwgMCwgMCwgMCwgMCwgMCwgMjY1LCAwLCAwLCAwLCAwXSwgWzAsIDI0OSwgMTUxLCAwLCAwLCAxMzcsIDI2NCwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDI0OSwgMCwgMF0sIFswLCAwLCAwLCAyMjEsIDExNiwgMjIyLCAyMjIsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDIyNSwgNDQsIDQ0LCA4LCA5LCAwLCAwLCAwLCAwLCAxNTgsIDIyNSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAxNTUsIDExNiwgMTU2LCAyMjIsIDgsIDksIDAsIDEwLCAwLCAwLCAxNTgsIDEyMCwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgMTU1LCAxMTYsIDIyMiwgMjIyLCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCA0MywgMjY2LCAyNjYsIDgsIDE2MSwgMCwgMjQsIDAsIDAsIDEyLCAyNjcsIDAsIDAsIDAsIDBdLCBbMCwgNzUsIDAsIDE3NiwgNDMsIDI2OCwgMjY4LCAyNjksIDE2MSwgMCwgMjQsIDAsIDAsIDAsIDI2NywgMCwgNzUsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjcwLCAwLCAwLCAyNzEsIDAsIDE2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMjczLCAyNzQsIDAsIDAsIDQwLCA0MSwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAyNzMsIDAsIDBdLCBbMCwgMCwgMCwgNDAsIDAsIDEyMywgMTIzLCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTIxLCAyNzUsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAxNjYsIDAsIDAsIDAsIDAsIDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAyNzcsIDE3MCwgMjc4LCAyNzgsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDE3NCwgMCwgMCwgMjcsIDBdLCBbMCwgMjc5LCAwLCAwLCAwLCA3NiwgMjgwLCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAyNzksIDAsIDBdLCBbMCwgMCwgMCwgMCwgMjgxLCA4MCwgODAsIDIyLCAyMywgMCwgMCwgMCwgMCwgMTczLCAyODEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTY5LCAxNzAsIDE3MSwgMjc4LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAxNzMsIDE3NCwgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMTY5LCAxNzAsIDI3OCwgMjc4LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAxNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDI4MiwgOTAsIDAsIDAsIDc2LCAyODAsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDI4MiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCA3NSwgMCwgMCwgMCwgMTc1LCAxNzUsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDc1LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgMjIsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDI4MywgMCwgMjg0LCAyODUsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMjg2LCAwLCAwLCAwLCAwLCAwXSwgWzAsIDc1LCAwLCAxNzYsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCA3NSwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyODcsIDI4NywgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMjg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDE4NCwgMTg1LCAxODYsIDE4NywgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAxODUsIDE4NSwgMTg3LCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI4OSwgMjg5LCAxODcsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDI5MCwgMjg5LCAyODksIDE4NywgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjkxLCAyOTIsIDI5MywgMjk0LCAyOTUsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAyNzcsIDE3MCwgMjc4LCAyNzgsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDE3NCwgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMCwgMjgxLCA4MCwgODAsIDIyLCAyMywgMCwgMCwgMCwgMCwgMTkyLCAyODEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTg5LCAxNzAsIDE5MCwgMjc4LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAxOTIsIDE3NCwgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMTg5LCAxNzAsIDI3OCwgMjc4LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAxNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDc2LCAwLCAxNzcsIDE3NywgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTc1LCAyOTYsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjk3LCAxOTYsIDI5OCwgMjk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAyMDAsIDAsIDAsIDM3LCAwXSwgWzAsIDI5OSwgMCwgMCwgMCwgOTcsIDMwMCwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgMjk5LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDMwMSwgMTAxLCAxMDEsIDMyLCAzMywgMCwgMCwgMCwgMCwgMTk5LCAzMDEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTk1LCAxOTYsIDE5NywgMjk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAxOTksIDIwMCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMTk1LCAxOTYsIDI5OCwgMjk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAyMDAsIDAsIDAsIDM3LCAwXSwgWzAsIDMwMiwgMTExLCAwLCAwLCA5NywgMzAwLCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCAzMDIsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgOTYsIDAsIDAsIDAsIDIwMSwgMjAxLCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCA5NiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDMwMywgMCwgMzA0LCAzMDUsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMzA2LCAwLCAwLCAwLCAwLCAwXSwgWzAsIDk2LCAwLCAyMDIsIDAsIDIwMSwgMjAxLCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCA5NiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzMDcsIDMwNywgMTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDMwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAyMTAsIDIxMSwgMjEyLCAyMTMsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjExLCAyMTEsIDIxMywgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzMDksIDMwOSwgMjEzLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAzMTAsIDMwOSwgMzA5LCAyMTMsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDMxMSwgMzEyLCAzMTMsIDMxNCwgMzE1LCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjk3LCAxOTYsIDI5OCwgMjk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAyMDAsIDAsIDAsIDM3LCAwXSwgWzAsIDAsIDAsIDAsIDMwMSwgMTAxLCAxMDEsIDMyLCAzMywgMCwgMCwgMCwgMCwgMjE4LCAzMDEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjE1LCAxOTYsIDIxNiwgMjk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAyMTgsIDIwMCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMjE1LCAxOTYsIDI5OCwgMjk4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAyMDAsIDAsIDAsIDM3LCAwXSwgWzAsIDAsIDAsIDk3LCAwLCAyMDMsIDIwMywgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjAxLCAzMTYsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTE2LCAyMjIsIDIyMiwgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDEyMCwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgMCwgMjI1LCA0NCwgNDQsIDgsIDksIDAsIDAsIDAsIDAsIDAsIDIyNSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzMTcsIDMxOCwgMzE5LCAzMjAsIDgsIDksIDAsIDEwLCAwLCAwLCAzMjEsIDMyMiwgMCwgMCwgMTYsIDBdLCBbMCwgMjIzLCAwLCAzMjMsIDAsIDEyMywgMTIzLCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDIyMywgMCwgMF0sIFswLCAyMjMsIDAsIDAsIDAsIDEyMSwgMzI0LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDIyMywgMCwgMF0sIFswLCAwLCAwLCAzMjUsIDMxOCwgMzI2LCAzMjcsIDgsIDksIDAsIDEwLCAwLCAwLCAzMjgsIDMyMiwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgNjQsIDAsIDEyMSwgMTIxLCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAyMzAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjI3LCAwLCAyMjgsIDEyMSwgMCwgOSwgMCwgMTAsIDAsIDAsIDIzMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAyMjcsIDAsIDEyMSwgMTIxLCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzMjksIDMyOSwgMTMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDMzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAyMzYsIDIzNywgMjM4LCAyMzksIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyMzcsIDIzNywgMjM5LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMzMxLCAzMzEsIDIzOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAzMzIsIDMzMSwgMzMxLCAyMzksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzMzLCA0MCwgMTIxLCAzMzQsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzMzUsIDI0MSwgMzM2LCAzMzYsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDI0NSwgMCwgMCwgNjIsIDBdLCBbMCwgMzM3LCAwLCAwLCAwLCAxMzcsIDMzOCwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDMzNywgMCwgMF0sIFswLCAwLCAwLCAwLCAzMzksIDE0MSwgMTQxLCA1NywgNTgsIDAsIDAsIDAsIDAsIDI0NCwgMzM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDI0MCwgMjQxLCAyNDIsIDMzNiwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMjQ0LCAyNDUsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDI0MCwgMjQxLCAzMzYsIDMzNiwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMjQ1LCAwLCAwLCA2MiwgMF0sIFswLCAzNDAsIDE1MSwgMCwgMCwgMTM3LCAzMzgsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAzNDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMTM2LCAwLCAwLCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDEzNiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgNTcsIDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDM0MSwgMCwgMzQyLCAzNDMsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMzQ0LCAwLCAwLCAwLCAwLCAwXSwgWzAsIDEzNiwgMCwgMjQ3LCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDEzNiwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCA1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzNDUsIDM0NSwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDM0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAyNTUsIDI1NiwgMjU3LCAyNTgsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI1NiwgMjU2LCAyNTgsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDM0NywgMzQ3LCAyNTgsIDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDM0OCwgMzQ3LCAzNDcsIDI1OCwgNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzQ5LCAzNTAsIDM1MSwgMzUyLCAzNTMsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzM1LCAyNDEsIDMzNiwgMzM2LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCAyNDUsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDMzOSwgMTQxLCAxNDEsIDU3LCA1OCwgMCwgMCwgMCwgMCwgMjYzLCAzMzksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjYwLCAyNDEsIDI2MSwgMzM2LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAyNjMsIDI0NSwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMjYwLCAyNDEsIDMzNiwgMzM2LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCAyNDUsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDEzNywgMCwgMjQ4LCAyNDgsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyNDYsIDM1NCwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMTI2LCAxMjYsIDgsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDM1NSwgOTAsIDAsIDAsIDEyMSwgMTI1LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDM1NSwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzNTYsIDM1NiwgMjY5LCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDM2MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjcwLCAwLCAwLCAwLCAwLCAxNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDM2NCwgMTE2LCAzNjUsIDM2NiwgOCwgMTYxLCAwLCAxNjIsIDAsIDAsIDM2NywgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCAwLCAzNjgsIDM2OCwgMCwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNDAsIDAsIDEyMSwgMTIxLCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAxNzAsIDI3OCwgMjc4LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAxNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDAsIDI4MSwgODAsIDgwLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDAsIDI4MSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzNjksIDM3MCwgMzcxLCAzNzIsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDM3MywgMzc0LCAwLCAwLCAyNywgMF0sIFswLCAyNzksIDAsIDM3NSwgMCwgMTc3LCAxNzcsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAyNzksIDAsIDBdLCBbMCwgMjc5LCAwLCAwLCAwLCAxNzUsIDM3NiwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgMjc5LCAwLCAwXSwgWzAsIDAsIDAsIDM3NywgMzcwLCAzNzgsIDM3OSwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMzgwLCAzNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDkwLCAwLCAxNzUsIDE3NSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzLCAwLCAwLCAwLCAwLCAyODYsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjgzLCAwLCAyODQsIDE3NSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAyODYsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMjgzLCAwLCAxNzUsIDE3NSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDM4MSwgMzgxLCAxODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMzgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDI5MiwgMjkzLCAyOTQsIDI5NSwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyOTMsIDI5MywgMjk1LCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDM4MywgMzgzLCAyOTUsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDM4NCwgMzgzLCAzODMsIDI5NSwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzg1LCA3NiwgMTc1LCAzODYsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNzYsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDE5NiwgMjk4LCAyOTgsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDIwMCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgMzAxLCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCAwLCAzMDEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzg3LCAzODgsIDM4OSwgMzkwLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAzOTEsIDM5MiwgMCwgMCwgMzcsIDBdLCBbMCwgMjk5LCAwLCAzOTMsIDAsIDIwMywgMjAzLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgMjk5LCAwLCAwXSwgWzAsIDI5OSwgMCwgMCwgMCwgMjAxLCAzOTQsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDI5OSwgMCwgMF0sIFswLCAwLCAwLCAzOTUsIDM4OCwgMzk2LCAzOTcsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDM5OCwgMzkyLCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAxMTEsIDAsIDIwMSwgMjAxLCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMsIDAsIDAsIDAsIDAsIDMwNiwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzMDMsIDAsIDMwNCwgMjAxLCAwLCAzMywgMCwgMzQsIDAsIDAsIDMwNiwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzMDMsIDAsIDIwMSwgMjAxLCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMywgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzOTksIDM5OSwgMjEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDQwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAzMTIsIDMxMywgMzE0LCAzMTUsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMzEzLCAzMTMsIDMxNSwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA0MDEsIDQwMSwgMzE1LCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0MDIsIDQwMSwgNDAxLCAzMTUsIDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQwMywgOTcsIDIwMSwgNDA0LCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDk3LCAwLCAyMDEsIDIwMSwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0MDUsIDMxOCwgNDA2LCA0MDYsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCAzMjIsIDAsIDAsIDE2LCAwXSwgWzAsIDQwNywgMCwgMCwgMCwgNDAsIDQwOCwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCA0MDcsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNDA5LCA0NCwgNDQsIDgsIDksIDAsIDAsIDAsIDAsIDMyMSwgNDA5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDMxNywgMzE4LCAzMTksIDQwNiwgOCwgOSwgMCwgMTAsIDAsIDAsIDMyMSwgMzIyLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAzMTcsIDMxOCwgNDA2LCA0MDYsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCAzMjIsIDAsIDAsIDE2LCAwXSwgWzAsIDQxMCwgNjQsIDAsIDAsIDQwLCA0MDgsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNDEwLCAwLCAwXSwgWzAsIDIyMywgMCwgMCwgMCwgMTIxLCAxMjEsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMjIzLCAwLCAwXSwgWzAsIDIyMywgMCwgMzIzLCAwLCAxMjEsIDEyMSwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCAyMjMsIDAsIDBdLCBbMCwgMCwgMCwgNDA1LCAzMTgsIDQwNiwgNDA2LCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgMzIyLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCA0MDksIDQ0LCA0NCwgOCwgOSwgMCwgMCwgMCwgMCwgMzI4LCA0MDksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzI1LCAzMTgsIDMyNiwgNDA2LCA4LCA5LCAwLCAxMCwgMCwgMCwgMzI4LCAzMjIsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDMyNSwgMzE4LCA0MDYsIDQwNiwgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDMyMiwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA0MTEsIDQxMSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDQxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0MCwgMTIxLCAzMzQsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0MTMsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMjQxLCAzMzYsIDMzNiwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMjQ1LCAwLCAwLCA2MiwgMF0sIFswLCAwLCAwLCAwLCAzMzksIDE0MSwgMTQxLCA1NywgNTgsIDAsIDAsIDAsIDAsIDAsIDMzOSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0MTQsIDQxNSwgNDE2LCA0MTcsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDQxOCwgNDE5LCAwLCAwLCA2MiwgMF0sIFswLCAzMzcsIDAsIDQyMCwgMCwgMjQ4LCAyNDgsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgMzM3LCAwLCAwXSwgWzAsIDMzNywgMCwgMCwgMCwgMjQ2LCA0MjEsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAzMzcsIDAsIDBdLCBbMCwgMCwgMCwgNDIyLCA0MTUsIDQyMywgNDI0LCA1NywgNTgsIDAsIDU5LCAwLCAwLCA0MjUsIDQxOSwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMTUxLCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4LCAwLCAwLCAwLCAwLCAzNDQsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzQxLCAwLCAzNDIsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAzNDQsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzQxLCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDMsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNDI2LCA0MjYsIDI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCA0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMzUwLCAzNTEsIDM1MiwgMzUzLCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzNTEsIDM1MSwgMzUzLCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA0MjgsIDQyOCwgMzUzLCA1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0MjksIDQyOCwgNDI4LCAzNTMsIDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQzMCwgMTM3LCAyNDYsIDQzMSwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMTM3LCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNDMyLCAxMTYsIDQzMywgNDM0LCA4LCAxNjEsIDAsIDE2MiwgMCwgMCwgNDM1LCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDAsIDE4MCwgMTgwLCAyNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMzU4LCAzNTksIDM2MCwgMzYxLCAxNjEsIDAsIDE2MiwgMCwgMCwgMCwgMzYyLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDM1OSwgMzU5LCAzNjEsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAzNjIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNDM2LCA0MzYsIDM2MSwgMTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDQzNywgNDM2LCA0MzYsIDM2MSwgMTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQzOCwgNDM5LCA0NDAsIDQ0MSwgNDQyLCAxNjEsIDAsIDE2MiwgMCwgMCwgMCwgMzYyLCAwLCAwLCAwLCAwXSwgWzAsIDQ0MywgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDMsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0NDQsIDExNiwgNDQ1LCA0NDUsIDgsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDIyNSwgNDQsIDQ0LCA4LCAxNjEsIDAsIDAsIDAsIDAsIDM2NywgMjI1LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDM2NCwgMTE2LCAzNjUsIDQ0NSwgOCwgMTYxLCAwLCAxNjIsIDAsIDAsIDM2NywgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAzNjQsIDExNiwgNDQ1LCA0NDUsIDgsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0NDYsIDM3MCwgNDQ3LCA0NDcsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDM3NCwgMCwgMCwgMjcsIDBdLCBbMCwgNDQ4LCAwLCAwLCAwLCA3NiwgNDQ5LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCA0NDgsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNDUwLCA4MCwgODAsIDIyLCAyMywgMCwgMCwgMCwgMCwgMzczLCA0NTAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMzY5LCAzNzAsIDM3MSwgNDQ3LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAzNzMsIDM3NCwgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMzY5LCAzNzAsIDQ0NywgNDQ3LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAzNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDQ1MSwgOTAsIDAsIDAsIDc2LCA0NDksIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDQ1MSwgMCwgMF0sIFswLCAyNzksIDAsIDAsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAyNzksIDAsIDBdLCBbMCwgMjc5LCAwLCAzNzUsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCAyNzksIDAsIDBdLCBbMCwgMCwgMCwgNDQ2LCAzNzAsIDQ0NywgNDQ3LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAzNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDAsIDQ1MCwgODAsIDgwLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDM4MCwgNDUwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDM3NywgMzcwLCAzNzgsIDQ0NywgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMzgwLCAzNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDM3NywgMzcwLCA0NDcsIDQ0NywgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMCwgMzc0LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAxODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTg0LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDQ1MiwgNDUyLCAyOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgNDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDc2LCAxNzUsIDM4NiwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0NTQsIDAsIDAsIDAsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQ1NSwgMzg4LCA0NTYsIDQ1NiwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgMzkyLCAwLCAwLCAzNywgMF0sIFswLCA0NTcsIDAsIDAsIDAsIDk3LCA0NTgsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDQ1NywgMCwgMF0sIFswLCAwLCAwLCAwLCA0NTksIDEwMSwgMTAxLCAzMiwgMzMsIDAsIDAsIDAsIDAsIDM5MSwgNDU5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDM4NywgMzg4LCAzODksIDQ1NiwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMzkxLCAzOTIsIDAsIDAsIDM3LCAwXSwgWzAsIDAsIDAsIDM4NywgMzg4LCA0NTYsIDQ1NiwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgMzkyLCAwLCAwLCAzNywgMF0sIFswLCA0NjAsIDExMSwgMCwgMCwgOTcsIDQ1OCwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgNDYwLCAwLCAwXSwgWzAsIDI5OSwgMCwgMCwgMCwgMjAxLCAyMDEsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDI5OSwgMCwgMF0sIFswLCAyOTksIDAsIDM5MywgMCwgMjAxLCAyMDEsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDI5OSwgMCwgMF0sIFswLCAwLCAwLCA0NTUsIDM4OCwgNDU2LCA0NTYsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDM5MiwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgNDU5LCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCAzOTgsIDQ1OSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAzOTUsIDM4OCwgMzk2LCA0NTYsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDM5OCwgMzkyLCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAzOTUsIDM4OCwgNDU2LCA0NTYsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDM5MiwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA0NjEsIDQ2MSwgMzE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDQ2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA5NywgMjAxLCA0MDQsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNDYzLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAzMTgsIDQwNiwgNDA2LCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgMzIyLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCA0MDksIDQ0LCA0NCwgOCwgOSwgMCwgMCwgMCwgMCwgMCwgNDA5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQ2NCwgNDY1LCA0NjYsIDQ2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDQ2OCwgNDY5LCAwLCAwLCAxNiwgMF0sIFswLCA0MDcsIDAsIDQ3MCwgMCwgMTIzLCAxMjMsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNDA3LCAwLCAwXSwgWzAsIDQwNywgMCwgMCwgMCwgMTIxLCA0NzEsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNDA3LCAwLCAwXSwgWzAsIDAsIDAsIDQ3MiwgNDY1LCA0NzMsIDQ3NCwgOCwgOSwgMCwgMTAsIDAsIDAsIDQ3NSwgNDY5LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM2LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDQ3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0NzcsIDQxNSwgNDc4LCA0NzgsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDQxOSwgMCwgMCwgNjIsIDBdLCBbMCwgNDc5LCAwLCAwLCAwLCAxMzcsIDQ4MCwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDQ3OSwgMCwgMF0sIFswLCAwLCAwLCAwLCA0ODEsIDE0MSwgMTQxLCA1NywgNTgsIDAsIDAsIDAsIDAsIDQxOCwgNDgxLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQxNCwgNDE1LCA0MTYsIDQ3OCwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgNDE4LCA0MTksIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDQxNCwgNDE1LCA0NzgsIDQ3OCwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgNDE5LCAwLCAwLCA2MiwgMF0sIFswLCA0ODIsIDE1MSwgMCwgMCwgMTM3LCA0ODAsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCA0ODIsIDAsIDBdLCBbMCwgMzM3LCAwLCAwLCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDMzNywgMCwgMF0sIFswLCAzMzcsIDAsIDQyMCwgMCwgMjQ2LCAyNDYsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCAzMzcsIDAsIDBdLCBbMCwgMCwgMCwgNDc3LCA0MTUsIDQ3OCwgNDc4LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCA0MTksIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDQ4MSwgMTQxLCAxNDEsIDU3LCA1OCwgMCwgMCwgMCwgMCwgNDI1LCA0ODEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNDIyLCA0MTUsIDQyMywgNDc4LCA1NywgNTgsIDAsIDU5LCAwLCAwLCA0MjUsIDQxOSwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgNDIyLCA0MTUsIDQ3OCwgNDc4LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCA0MTksIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTUsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNDgzLCA0ODMsIDM1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCA0ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMTM3LCAyNDYsIDQzMSwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNDg1LCAwLCAwLCAwLCA1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0NDQsIDExNiwgNDQ1LCA0NDUsIDgsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDIyNSwgNDQsIDQ0LCA4LCAxNjEsIDAsIDAsIDAsIDAsIDQzNSwgMjI1LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQzMiwgMTE2LCA0MzMsIDQ0NSwgOCwgMTYxLCAwLCAxNjIsIDAsIDAsIDQzNSwgMTIwLCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCA0MzIsIDExNiwgNDQ1LCA0NDUsIDgsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDAsIDQ4NiwgNDg2LCAzNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDQzOSwgNDQwLCA0NDEsIDQ0MiwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDM2MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA0NDAsIDQ0MCwgNDQyLCAxNjEsIDAsIDE2MiwgMCwgMCwgMCwgMzYyLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDQ4OCwgNDg4LCA0NDIsIDE2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0ODksIDQ4OCwgNDg4LCA0NDIsIDE2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0OTAsIDQ5MSwgNDkyLCA0OTMsIDQ5NCwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDM2MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0OTUsIDAsIDQ5NiwgNDk3LCAwLCAxNjEsIDAsIDE2MiwgMCwgMCwgNDk4LCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDExNiwgNDQ1LCA0NDUsIDgsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAxMjAsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDAsIDIyNSwgNDQsIDQ0LCA4LCAxNjEsIDAsIDAsIDAsIDAsIDAsIDIyNSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAzNzAsIDQ0NywgNDQ3LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCAzNzQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDAsIDQ1MCwgODAsIDgwLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDAsIDQ1MCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0OTksIDUwMCwgNTAxLCA1MDIsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDUwMywgNTA0LCAwLCAwLCAyNywgMF0sIFswLCA0NDgsIDAsIDUwNSwgMCwgMTc3LCAxNzcsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCA0NDgsIDAsIDBdLCBbMCwgNDQ4LCAwLCAwLCAwLCAxNzUsIDUwNiwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNDQ4LCAwLCAwXSwgWzAsIDAsIDAsIDUwNywgNTAwLCA1MDgsIDUwOSwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgNTEwLCA1MDQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTIsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgNTExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDM4OCwgNDU2LCA0NTYsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDM5MiwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgNDU5LCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCAwLCA0NTksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTEyLCA1MTMsIDUxNCwgNTE1LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCA1MTYsIDUxNywgMCwgMCwgMzcsIDBdLCBbMCwgNDU3LCAwLCA1MTgsIDAsIDIwMywgMjAzLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgNDU3LCAwLCAwXSwgWzAsIDQ1NywgMCwgMCwgMCwgMjAxLCA1MTksIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDQ1NywgMCwgMF0sIFswLCAwLCAwLCA1MjAsIDUxMywgNTIxLCA1MjIsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDUyMywgNTE3LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDUyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1MjUsIDQ2NSwgNTI2LCA1MjYsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCA0NjksIDAsIDAsIDE2LCAwXSwgWzAsIDUyNywgMCwgMCwgMCwgNDAsIDUyOCwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCA1MjcsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNTI5LCA0NCwgNDQsIDgsIDksIDAsIDAsIDAsIDAsIDQ2OCwgNTI5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQ2NCwgNDY1LCA0NjYsIDUyNiwgOCwgOSwgMCwgMTAsIDAsIDAsIDQ2OCwgNDY5LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCA0NjQsIDQ2NSwgNTI2LCA1MjYsIDgsIDksIDAsIDEwLCAwLCAwLCAwLCA0NjksIDAsIDAsIDE2LCAwXSwgWzAsIDUzMCwgNjQsIDAsIDAsIDQwLCA1MjgsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNTMwLCAwLCAwXSwgWzAsIDQwNywgMCwgMCwgMCwgMTIxLCAxMjEsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNDA3LCAwLCAwXSwgWzAsIDQwNywgMCwgNDcwLCAwLCAxMjEsIDEyMSwgMCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQyLCAwLCA0MDcsIDAsIDBdLCBbMCwgMCwgMCwgNTI1LCA0NjUsIDUyNiwgNTI2LCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDY5LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCA1MjksIDQ0LCA0NCwgOCwgOSwgMCwgMCwgMCwgMCwgNDc1LCA1MjksIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNDcyLCA0NjUsIDQ3MywgNTI2LCA4LCA5LCAwLCAxMCwgMCwgMCwgNDc1LCA0NjksIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDQ3MiwgNDY1LCA1MjYsIDUyNiwgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDQ2OSwgMCwgMCwgMTYsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNDE1LCA0NzgsIDQ3OCwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgNDE5LCAwLCAwLCA2MiwgMF0sIFswLCAwLCAwLCAwLCA0ODEsIDE0MSwgMTQxLCA1NywgNTgsIDAsIDAsIDAsIDAsIDAsIDQ4MSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1MzEsIDUzMiwgNTMzLCA1MzQsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDUzNSwgNTM2LCAwLCAwLCA2MiwgMF0sIFswLCA0NzksIDAsIDUzNywgMCwgMjQ4LCAyNDgsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgNDc5LCAwLCAwXSwgWzAsIDQ3OSwgMCwgMCwgMCwgMjQ2LCA1MzgsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCA0NzksIDAsIDBdLCBbMCwgMCwgMCwgNTM5LCA1MzIsIDU0MCwgNTQxLCA1NywgNTgsIDAsIDU5LCAwLCAwLCA1NDIsIDUzNiwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1OCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1NDQsIDU0NCwgNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDU0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA0OTEsIDQ5MiwgNDkzLCA0OTQsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAzNjIsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNDkyLCA0OTIsIDQ5NCwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDM2MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1NDYsIDU0NiwgNDk0LCAxNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNTQ3LCA1NDYsIDU0NiwgNDk0LCAxNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTQ4LCA1NDksIDM2OCwgNTUwLCAwLCAxNjEsIDAsIDE2MiwgMCwgMCwgMCwgMzYyLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDI3NCwgMCwgMzY4LCAzNjgsIDAsIDE2MSwgMCwgMTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MSwgMCwgMCwgMCwgMCwgNDk4LCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQ5NSwgMCwgNDk2LCAzNjgsIDAsIDE2MSwgMCwgMTYyLCAwLCAwLCA0OTgsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNDk1LCAwLCAzNjgsIDM2OCwgMCwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTUxLCA1MDAsIDU1MiwgNTUyLCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA1MDQsIDAsIDAsIDI3LCAwXSwgWzAsIDU1MywgMCwgMCwgMCwgNzYsIDU1NCwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNTUzLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDU1NSwgODAsIDgwLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDUwMywgNTU1LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDQ5OSwgNTAwLCA1MDEsIDU1MiwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgNTAzLCA1MDQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDQ5OSwgNTAwLCA1NTIsIDU1MiwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNTA0LCAwLCAwLCAyNywgMF0sIFswLCA1NTYsIDkwLCAwLCAwLCA3NiwgNTU0LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCA1NTYsIDAsIDBdLCBbMCwgNDQ4LCAwLCAwLCAwLCAxNzUsIDE3NSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNDQ4LCAwLCAwXSwgWzAsIDQ0OCwgMCwgNTA1LCAwLCAxNzUsIDE3NSwgMCwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNDQ4LCAwLCAwXSwgWzAsIDAsIDAsIDU1MSwgNTAwLCA1NTIsIDU1MiwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNTA0LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAwLCA1NTUsIDgwLCA4MCwgMjIsIDIzLCAwLCAwLCAwLCAwLCA1MTAsIDU1NSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1MDcsIDUwMCwgNTA4LCA1NTIsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDUxMCwgNTA0LCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCA1MDcsIDUwMCwgNTUyLCA1NTIsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDUwNCwgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzYsIDAsIDBdLCBbMCwgMCwgMCwgNTU3LCA1MTMsIDU1OCwgNTU4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCA1MTcsIDAsIDAsIDM3LCAwXSwgWzAsIDU1OSwgMCwgMCwgMCwgOTcsIDU2MCwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgNTU5LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDU2MSwgMTAxLCAxMDEsIDMyLCAzMywgMCwgMCwgMCwgMCwgNTE2LCA1NjEsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTEyLCA1MTMsIDUxNCwgNTU4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCA1MTYsIDUxNywgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgNTEyLCA1MTMsIDU1OCwgNTU4LCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCA1MTcsIDAsIDAsIDM3LCAwXSwgWzAsIDU2MiwgMTExLCAwLCAwLCA5NywgNTYwLCAwLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCA1NjIsIDAsIDBdLCBbMCwgNDU3LCAwLCAwLCAwLCAyMDEsIDIwMSwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgNDU3LCAwLCAwXSwgWzAsIDQ1NywgMCwgNTE4LCAwLCAyMDEsIDIwMSwgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgNDU3LCAwLCAwXSwgWzAsIDAsIDAsIDU1NywgNTEzLCA1NTgsIDU1OCwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAwLCA1NjEsIDEwMSwgMTAxLCAzMiwgMzMsIDAsIDAsIDAsIDAsIDUyMywgNTYxLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDUyMCwgNTEzLCA1MjEsIDU1OCwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgNTIzLCA1MTcsIDAsIDAsIDM3LCAwXSwgWzAsIDAsIDAsIDUyMCwgNTEzLCA1NTgsIDU1OCwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NywgMCwgMF0sIFswLCAwLCAwLCAwLCA0NjUsIDUyNiwgNTI2LCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDY5LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCA1MjksIDQ0LCA0NCwgOCwgOSwgMCwgMCwgMCwgMCwgMCwgNTI5LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDU2MywgNjYsIDU2NCwgNTY1LCA4LCA5LCAwLCAxMCwgMCwgMCwgNTY2LCA2OCwgMCwgMCwgMTYsIDBdLCBbMCwgNTI3LCAwLCA1NjcsIDAsIDEyMywgMTIzLCA4LCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDUyNywgMCwgMF0sIFswLCA1MjcsIDAsIDAsIDAsIDEyMSwgNTY4LCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDUyNywgMCwgMF0sIFswLCAwLCAwLCA1NjksIDY2LCA1NzAsIDU3MSwgOCwgOSwgMCwgMTAsIDAsIDAsIDU3MiwgNjgsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDU3MywgNTMyLCA1NzQsIDU3NCwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgNTM2LCAwLCAwLCA2MiwgMF0sIFswLCA1NzUsIDAsIDAsIDAsIDEzNywgNTc2LCAwLCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgNTc1LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDU3NywgMTQxLCAxNDEsIDU3LCA1OCwgMCwgMCwgMCwgMCwgNTM1LCA1NzcsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTMxLCA1MzIsIDUzMywgNTc0LCA1NywgNTgsIDAsIDU5LCAwLCAwLCA1MzUsIDUzNiwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgNTMxLCA1MzIsIDU3NCwgNTc0LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCA1MzYsIDAsIDAsIDYyLCAwXSwgWzAsIDU3OCwgMTUxLCAwLCAwLCAxMzcsIDU3NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDU3OCwgMCwgMF0sIFswLCA0NzksIDAsIDAsIDAsIDI0NiwgMjQ2LCAwLCA1OCwgMCwgNTksIDAsIDAsIDAsIDEzOSwgMCwgNDc5LCAwLCAwXSwgWzAsIDQ3OSwgMCwgNTM3LCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDQ3OSwgMCwgMF0sIFswLCAwLCAwLCA1NzMsIDUzMiwgNTc0LCA1NzQsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDUzNiwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMCwgNTc3LCAxNDEsIDE0MSwgNTcsIDU4LCAwLCAwLCAwLCAwLCA1NDIsIDU3NywgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1MzksIDUzMiwgNTQwLCA1NzQsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDU0MiwgNTM2LCAwLCAwLCA2MiwgMF0sIFswLCAwLCAwLCA1MzksIDUzMiwgNTc0LCA1NzQsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDUzNiwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM3LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzksIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNTc5LCA1NzksIDQ5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCA1ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgNTQ5LCAzNjgsIDU1MCwgMCwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDM2MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAzNjgsIDM2OCwgMCwgMTYxLCAwLCAxNjIsIDAsIDAsIDAsIDM2MiwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA1ODEsIDAsIDAsIDAsIDE2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCA1MDAsIDU1MiwgNTUyLCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA1MDQsIDAsIDAsIDI3LCAwXSwgWzAsIDAsIDAsIDAsIDU1NSwgODAsIDgwLCAyMiwgMjMsIDAsIDAsIDAsIDAsIDAsIDU1NSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1ODIsIDkxLCA1ODMsIDU4NCwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgNTg1LCA5MywgMCwgMCwgMjcsIDBdLCBbMCwgNTUzLCAwLCA1ODYsIDAsIDE3NywgMTc3LCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA3OCwgMCwgNTUzLCAwLCAwXSwgWzAsIDU1MywgMCwgMCwgMCwgMTc1LCA1ODcsIDAsIDIzLCAwLCAyNCwgMCwgMCwgMCwgNzgsIDAsIDU1MywgMCwgMF0sIFswLCAwLCAwLCA1ODgsIDkxLCA1ODksIDU5MCwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgNTkxLCA5MywgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMCwgNTEzLCA1NTgsIDU1OCwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAwLCA1NjEsIDEwMSwgMTAxLCAzMiwgMzMsIDAsIDAsIDAsIDAsIDAsIDU2MSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1OTIsIDExMiwgNTkzLCA1OTQsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDU5NSwgMTE0LCAwLCAwLCAzNywgMF0sIFswLCA1NTksIDAsIDU5NiwgMCwgMjAzLCAyMDMsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDk5LCAwLCA1NTksIDAsIDBdLCBbMCwgNTU5LCAwLCAwLCAwLCAyMDEsIDU5NywgMCwgMzMsIDAsIDM0LCAwLCAwLCAwLCA5OSwgMCwgNTU5LCAwLCAwXSwgWzAsIDAsIDAsIDU5OCwgMTEyLCA1OTksIDYwMCwgMzIsIDMzLCAwLCAzNCwgMCwgMCwgNjAxLCAxMTQsIDAsIDAsIDM3LCAwXSwgWzAsIDAsIDAsIDYwMiwgNjYsIDY3LCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDY4LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCAxNjUsIDQ0LCA0NCwgOCwgOSwgMCwgMCwgMCwgMCwgNTY2LCAxNjUsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTYzLCA2NiwgNTY0LCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDU2NiwgNjgsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDU2MywgNjYsIDY3LCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDY4LCAwLCAwLCAxNiwgMF0sIFswLCA1MjcsIDAsIDAsIDAsIDEyMSwgMTIxLCAwLCA5LCAwLCAxMCwgMCwgMCwgMCwgNDIsIDAsIDUyNywgMCwgMF0sIFswLCA1MjcsIDAsIDU2NywgMCwgMTIxLCAxMjEsIDAsIDksIDAsIDEwLCAwLCAwLCAwLCA0MiwgMCwgNTI3LCAwLCAwXSwgWzAsIDAsIDAsIDYwMiwgNjYsIDY3LCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDY4LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCAxNjUsIDQ0LCA0NCwgOCwgOSwgMCwgMCwgMCwgMCwgNTcyLCAxNjUsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTY5LCA2NiwgNTcwLCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDU3MiwgNjgsIDAsIDAsIDE2LCAwXSwgWzAsIDAsIDAsIDU2OSwgNjYsIDY3LCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDY4LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCAwLCA1MzIsIDU3NCwgNTc0LCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCA1MzYsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDU3NywgMTQxLCAxNDEsIDU3LCA1OCwgMCwgMCwgMCwgMCwgMCwgNTc3LCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDYwMywgMTUyLCA2MDQsIDYwNSwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgNjA2LCAxNTQsIDAsIDAsIDYyLCAwXSwgWzAsIDU3NSwgMCwgNjA3LCAwLCAyNDgsIDI0OCwgNTcsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCA1NzUsIDAsIDBdLCBbMCwgNTc1LCAwLCAwLCAwLCAyNDYsIDYwOCwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDU3NSwgMCwgMF0sIFswLCAwLCAwLCA2MDksIDE1MiwgNjEwLCA2MTEsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDYxMiwgMTU0LCAwLCAwLCA2MiwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDYxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA2MTQsIDkxLCA5MiwgOTIsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDkzLCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCAwLCAxOTQsIDgwLCA4MCwgMjIsIDIzLCAwLCAwLCAwLCAwLCA1ODUsIDE5NCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1ODIsIDkxLCA1ODMsIDkyLCAyMiwgMjMsIDAsIDI0LCAwLCAwLCA1ODUsIDkzLCAwLCAwLCAyNywgMF0sIFswLCAwLCAwLCA1ODIsIDkxLCA5MiwgOTIsIDIyLCAyMywgMCwgMjQsIDAsIDAsIDAsIDkzLCAwLCAwLCAyNywgMF0sIFswLCA1NTMsIDAsIDAsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCA1NTMsIDAsIDBdLCBbMCwgNTUzLCAwLCA1ODYsIDAsIDE3NSwgMTc1LCAwLCAyMywgMCwgMjQsIDAsIDAsIDAsIDc4LCAwLCA1NTMsIDAsIDBdLCBbMCwgMCwgMCwgNjE0LCA5MSwgOTIsIDkyLCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA5MywgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMCwgMTk0LCA4MCwgODAsIDIyLCAyMywgMCwgMCwgMCwgMCwgNTkxLCAxOTQsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTg4LCA5MSwgNTg5LCA5MiwgMjIsIDIzLCAwLCAyNCwgMCwgMCwgNTkxLCA5MywgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgNTg4LCA5MSwgOTIsIDkyLCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA5MywgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgNjE1LCAxMTIsIDExMywgMTEzLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAxMTQsIDAsIDAsIDM3LCAwXSwgWzAsIDAsIDAsIDAsIDIyMCwgMTAxLCAxMDEsIDMyLCAzMywgMCwgMCwgMCwgMCwgNTk1LCAyMjAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNTkyLCAxMTIsIDU5MywgMTEzLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCA1OTUsIDExNCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgNTkyLCAxMTIsIDExMywgMTEzLCAzMiwgMzMsIDAsIDM0LCAwLCAwLCAwLCAxMTQsIDAsIDAsIDM3LCAwXSwgWzAsIDU1OSwgMCwgMCwgMCwgMjAxLCAyMDEsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDU1OSwgMCwgMF0sIFswLCA1NTksIDAsIDU5NiwgMCwgMjAxLCAyMDEsIDAsIDMzLCAwLCAzNCwgMCwgMCwgMCwgOTksIDAsIDU1OSwgMCwgMF0sIFswLCAwLCAwLCA2MTUsIDExMiwgMTEzLCAxMTMsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDExNCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgMjIwLCAxMDEsIDEwMSwgMzIsIDMzLCAwLCAwLCAwLCAwLCA2MDEsIDIyMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA1OTgsIDExMiwgNTk5LCAxMTMsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDYwMSwgMTE0LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCA1OTgsIDExMiwgMTEzLCAxMTMsIDMyLCAzMywgMCwgMzQsIDAsIDAsIDAsIDExNCwgMCwgMCwgMzcsIDBdLCBbMCwgMCwgMCwgMCwgNjYsIDY3LCA2NywgOCwgOSwgMCwgMTAsIDAsIDAsIDAsIDY4LCAwLCAwLCAxNiwgMF0sIFswLCAwLCAwLCA2MTYsIDE1MiwgMTUzLCAxNTMsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDE1NCwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgMCwgMjY1LCAxNDEsIDE0MSwgNTcsIDU4LCAwLCAwLCAwLCAwLCA2MDYsIDI2NSwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA2MDMsIDE1MiwgNjA0LCAxNTMsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDYwNiwgMTU0LCAwLCAwLCA2MiwgMF0sIFswLCAwLCAwLCA2MDMsIDE1MiwgMTUzLCAxNTMsIDU3LCA1OCwgMCwgNTksIDAsIDAsIDAsIDE1NCwgMCwgMCwgNjIsIDBdLCBbMCwgNTc1LCAwLCAwLCAwLCAyNDYsIDI0NiwgMCwgNTgsIDAsIDU5LCAwLCAwLCAwLCAxMzksIDAsIDU3NSwgMCwgMF0sIFswLCA1NzUsIDAsIDYwNywgMCwgMjQ2LCAyNDYsIDAsIDU4LCAwLCA1OSwgMCwgMCwgMCwgMTM5LCAwLCA1NzUsIDAsIDBdLCBbMCwgMCwgMCwgNjE2LCAxNTIsIDE1MywgMTUzLCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCAxNTQsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDI2NSwgMTQxLCAxNDEsIDU3LCA1OCwgMCwgMCwgMCwgMCwgNjEyLCAyNjUsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgNjA5LCAxNTIsIDYxMCwgMTUzLCA1NywgNTgsIDAsIDU5LCAwLCAwLCA2MTIsIDE1NCwgMCwgMCwgNjIsIDBdLCBbMCwgMCwgMCwgNjA5LCAxNTIsIDE1MywgMTUzLCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCAxNTQsIDAsIDAsIDYyLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0OSwgMCwgMF0sIFswLCAwLCAwLCAwLCA5MSwgOTIsIDkyLCAyMiwgMjMsIDAsIDI0LCAwLCAwLCAwLCA5MywgMCwgMCwgMjcsIDBdLCBbMCwgMCwgMCwgMCwgMTEyLCAxMTMsIDExMywgMzIsIDMzLCAwLCAzNCwgMCwgMCwgMCwgMTE0LCAwLCAwLCAzNywgMF0sIFswLCAwLCAwLCAwLCAxNTIsIDE1MywgMTUzLCA1NywgNTgsIDAsIDU5LCAwLCAwLCAwLCAxNTQsIDAsIDAsIDYyLCAwXV07CnZhciBhY2NlcHRpbmcgPSBbZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIHRydWUsIHRydWVdOwp2YXIgdGFncyA9IFtbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJzeW1ib2xfY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiLCAiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbInN5bWJvbF9jbHVzdGVyIl0sIFtdLCBbInN5bWJvbF9jbHVzdGVyIl0sIFsic3ltYm9sX2NsdXN0ZXIiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbInN5bWJvbF9jbHVzdGVyIl0sIFsic3ltYm9sX2NsdXN0ZXIiXSwgWyJzeW1ib2xfY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgW10sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFtdLCBbXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFtdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFtdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJzeW1ib2xfY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbXSwgW10sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbXSwgW10sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbXSwgW10sIFtdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbXSwgW10sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiLCAiYnJva2VuX2NsdXN0ZXIiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiLCAiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFtdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFtdLCBbXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFtdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgW10sIFtdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiLCAiYnJva2VuX2NsdXN0ZXIiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiLCAiYnJva2VuX2NsdXN0ZXIiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiLCAiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgW10sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbXSwgW10sIFtdLCBbXSwgW10sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSIsICJicm9rZW5fY2x1c3RlciJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgW10sIFtdLCBbXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIiwgImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFtdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFtdLCBbXSwgWyJjb25zb25hbnRfc3lsbGFibGUiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFtdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbImNvbnNvbmFudF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFtdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbInZvd2VsX3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgW10sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJ2b3dlbF9zeWxsYWJsZSJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsic3RhbmRhbG9uZV9jbHVzdGVyIl0sIFtdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbInN0YW5kYWxvbmVfY2x1c3RlciJdLCBbXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXSwgW10sIFsiY29uc29uYW50X3N5bGxhYmxlIl0sIFsidm93ZWxfc3lsbGFibGUiXSwgWyJzdGFuZGFsb25lX2NsdXN0ZXIiXV07CnZhciBpbmRpY01hY2hpbmUgPSB7CglzdGF0ZVRhYmxlOiBzdGF0ZVRhYmxlLAoJYWNjZXB0aW5nOiBhY2NlcHRpbmcsCgl0YWdzOiB0YWdzCn07Cgp2YXIgY2F0ZWdvcmllcyA9IFsiTyIsICJJTkQiLCAiUyIsICJHQiIsICJCIiwgIkZNIiwgIkNHSiIsICJWTUFidiIsICJWTVBzdCIsICJWQWJ2IiwgIlZQc3QiLCAiQ01CbHciLCAiVlByZSIsICJWQmx3IiwgIkgiLCAiVk1CbHciLCAiQ01BYnYiLCAiTUJsdyIsICJDUyIsICJSIiwgIlNVQiIsICJNUHN0IiwgIk1QcmUiLCAiRkFidiIsICJGUHN0IiwgIkZCbHciLCAiU01BYnYiLCAiU01CbHciLCAiVk1QcmUiLCAiWldOSiIsICJaV0oiLCAiV0oiLCAiVlMiLCAiTiIsICJITiIsICJNQWJ2Il07CnZhciBkZWNvbXBvc2l0aW9ucyQxID0geyAiMjUwNyI6IFsyNTAzLCAyNDk0XSwgIjI1MDgiOiBbMjUwMywgMjUxOV0sICIyODg4IjogWzI4ODcsIDI5MDJdLCAiMjg5MSI6IFsyODg3LCAyODc4XSwgIjI4OTIiOiBbMjg4NywgMjkwM10sICIzMDE4IjogWzMwMTQsIDMwMDZdLCAiMzAxOSI6IFszMDE1LCAzMDA2XSwgIjMwMjAiOiBbMzAxNCwgMzAzMV0sICIzMTQ0IjogWzMxNDIsIDMxNThdLCAiMzI2NCI6IFszMjYzLCAzMjg1XSwgIjMyNzEiOiBbMzI3MCwgMzI4NV0sICIzMjcyIjogWzMyNzAsIDMyODZdLCAiMzI3NCI6IFszMjcwLCAzMjY2XSwgIjMyNzUiOiBbMzI3MCwgMzI2NiwgMzI4NV0sICIzNDAyIjogWzMzOTgsIDMzOTBdLCAiMzQwMyI6IFszMzk5LCAzMzkwXSwgIjM0MDQiOiBbMzM5OCwgMzQxNV0sICIzNTQ2IjogWzM1NDUsIDM1MzBdLCAiMzU0OCI6IFszNTQ1LCAzNTM1XSwgIjM1NDkiOiBbMzU0NSwgMzUzNSwgMzUzMF0sICIzNTUwIjogWzM1NDUsIDM1NTFdLCAiMzYzNSI6IFszNjYxLCAzNjM0XSwgIjM3NjMiOiBbMzc4OSwgMzc2Ml0sICIzOTU1IjogWzM5NTMsIDM5NTRdLCAiMzk1NyI6IFszOTUzLCAzOTU2XSwgIjM5NTgiOiBbNDAxOCwgMzk2OF0sICIzOTU5IjogWzQwMTgsIDM5NTMsIDM5NjhdLCAiMzk2MCI6IFs0MDE5LCAzOTY4XSwgIjM5NjEiOiBbNDAxOSwgMzk1MywgMzk2OF0sICIzOTY5IjogWzM5NTMsIDM5NjhdLCAiNjk3MSI6IFs2OTcwLCA2OTY1XSwgIjY5NzMiOiBbNjk3MiwgNjk2NV0sICI2OTc2IjogWzY5NzQsIDY5NjVdLCAiNjk3NyI6IFs2OTc1LCA2OTY1XSwgIjY5NzkiOiBbNjk3OCwgNjk2NV0sICI2OTkzNCI6IFs2OTkzNywgNjk5MjddLCAiNjk5MzUiOiBbNjk5MzgsIDY5OTI3XSwgIjcwNDc1IjogWzcwNDcxLCA3MDQ2Ml0sICI3MDQ3NiI6IFs3MDQ3MSwgNzA0ODddLCAiNzA4NDMiOiBbNzA4NDEsIDcwODQyXSwgIjcwODQ0IjogWzcwODQxLCA3MDgzMl0sICI3MDg0NiI6IFs3MDg0MSwgNzA4NDVdLCAiNzEwOTgiOiBbNzEwOTYsIDcxMDg3XSwgIjcxMDk5IjogWzcxMDk3LCA3MTA4N10gfTsKdmFyIHN0YXRlVGFibGUkMSA9IFtbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFsyLCAyLCAzLCA0LCA0LCA1LCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMTcsIDE4LCAxMSwgMTksIDIwLCAyMSwgMjIsIDAsIDAsIDIzLCAwLCAwLCAyLCAwLCAyNCwgMCwgMjVdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI4LCAwLCAwLCAwLCAwLCAyNywgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCAwLCAwLCA0MSwgMzUsIDQyLCA0MywgNDQsIDQ1LCAwLCAwLCA0NiwgMCwgMCwgMCwgMzksIDAsIDAsIDQ3XSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgNiwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMSwgMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIxLCAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1LCAwLCA2LCA3LCA4LCA5LCAwLCAwLCAxMiwgMCwgMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMSwgMjIsIDAsIDAsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDYsIDcsIDAsIDksIDAsIDAsIDAsIDAsIDE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1LCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDAsIDE2LCAwLCAwLCAxOCwgMTEsIDE5LCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMjVdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgNiwgNywgOCwgOSwgMCwgMTEsIDEyLCAwLCAxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIxLCAyMiwgMCwgMCwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgNiwgNywgMCwgOSwgMCwgMCwgMTIsIDAsIDE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1LCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIxLCAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCA1LCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMTgsIDExLCAxOSwgMjAsIDIxLCAyMiwgMCwgMCwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDI1XSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDYsIDcsIDgsIDksIDAsIDExLCAxMiwgMCwgMTQsIDAsIDAsIDAsIDAsIDAsIDExLCAwLCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCA0LCA0LCA1LCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMTgsIDExLCAxOSwgMjAsIDIxLCAyMiwgMCwgMCwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDI1XSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDYsIDcsIDgsIDksIDQ4LCAxMSwgMTIsIDEzLCAxNCwgNDgsIDE2LCAwLCAwLCAxOCwgMTEsIDE5LCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgNDksIDAsIDAsIDI1XSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDYsIDcsIDgsIDksIDAsIDExLCAxMiwgMCwgMTQsIDAsIDE2LCAwLCAwLCAwLCAxMSwgMCwgMjAsIDIxLCAyMiwgMCwgMCwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDI1XSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMSwgMjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDYsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgNTEsIDBdLCBbMCwgMCwgMCwgMCwgMCwgNSwgMCwgNiwgNywgOCwgOSwgMCwgMTEsIDEyLCAwLCAxNCwgMCwgMTYsIDAsIDAsIDAsIDExLCAwLCAyMCwgMjEsIDIyLCAwLCAwLCAyMywgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MywgNDQsIDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMsIDQ0LCA0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMzAsIDMxLCAzMiwgMzMsIDAsIDAsIDM2LCAwLCAzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMsIDQ0LCA0NSwgMCwgMCwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjksIDAsIDMwLCAzMSwgMCwgMzMsIDAsIDAsIDAsIDAsIDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MywgNDQsIDQ1LCAwLCAwLCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMCwgNDAsIDAsIDAsIDQxLCAzNSwgNDIsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCA0N10sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMzAsIDMxLCAzMiwgMzMsIDAsIDM1LCAzNiwgMCwgMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAzMCwgMzEsIDAsIDMzLCAwLCAwLCAzNiwgMCwgMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzLCA0NCwgNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjksIDAsIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5LCA0MCwgMCwgMCwgNDEsIDM1LCA0MiwgNDMsIDQ0LCA0NSwgMCwgMCwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3XSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAzMCwgMzEsIDMyLCAzMywgMCwgMzUsIDM2LCAwLCAzOCwgMCwgMCwgMCwgMCwgMCwgMzUsIDAsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAzMCwgMzEsIDMyLCAzMywgNTIsIDM1LCAzNiwgMzcsIDM4LCA1MiwgNDAsIDAsIDAsIDQxLCAzNSwgNDIsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCA1MywgMCwgMCwgNDddLCBbMCwgMCwgMCwgMCwgMCwgMjksIDAsIDMwLCAzMSwgMzIsIDMzLCAwLCAzNSwgMzYsIDAsIDM4LCAwLCA0MCwgMCwgMCwgMCwgMzUsIDAsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCA0N10sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMsIDQ0LCA0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIFswLCAwLCAwLCAwLCAwLCAyOSwgMCwgMzAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMsIDQ0LCA0NSwgMCwgMCwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCBbMCwgMCwgMCwgMCwgMCwgMjksIDAsIDMwLCAzMSwgMzIsIDMzLCAwLCAzNSwgMzYsIDAsIDM4LCAwLCA0MCwgMCwgMCwgMCwgMzUsIDAsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDUsIDAsIDYsIDcsIDgsIDksIDQ4LCAxMSwgMTIsIDEzLCAxNCwgMCwgMTYsIDAsIDAsIDE4LCAxMSwgMTksIDIwLCAyMSwgMjIsIDAsIDAsIDIzLCAwLCAwLCAwLCAwLCAwLCAwLCAyNV0sIFswLCAwLCAwLCAwLCAwLCA1LCAwLCA2LCA3LCA4LCA5LCA0OCwgMTEsIDEyLCAxMywgMTQsIDQ4LCAxNiwgMCwgMCwgMTgsIDExLCAxOSwgMjAsIDIxLCAyMiwgMCwgMCwgMjMsIDAsIDAsIDAsIDAsIDAsIDAsIDI1XSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwXSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAzMCwgMzEsIDMyLCAzMywgNTIsIDM1LCAzNiwgMzcsIDM4LCAwLCA0MCwgMCwgMCwgNDEsIDM1LCA0MiwgNDMsIDQ0LCA0NSwgMCwgMCwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3XSwgWzAsIDAsIDAsIDAsIDAsIDI5LCAwLCAzMCwgMzEsIDMyLCAzMywgNTIsIDM1LCAzNiwgMzcsIDM4LCA1MiwgNDAsIDAsIDAsIDQxLCAzNSwgNDIsIDQzLCA0NCwgNDUsIDAsIDAsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCA0N10sIFswLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgNTEsIDBdXTsKdmFyIGFjY2VwdGluZyQxID0gW2ZhbHNlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZV07CnZhciB0YWdzJDEgPSBbW10sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJpbmRlcGVuZGVudF9jbHVzdGVyIl0sIFsic3ltYm9sX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbIm51bWVyYWxfY2x1c3RlciJdLCBbImJyb2tlbl9jbHVzdGVyIl0sIFsiaW5kZXBlbmRlbnRfY2x1c3RlciJdLCBbInN5bWJvbF9jbHVzdGVyIl0sIFsic3ltYm9sX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInN0YW5kYXJkX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInN0YW5kYXJkX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInZpcmFtYV90ZXJtaW5hdGVkX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInN0YW5kYXJkX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInN0YW5kYXJkX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInN0YW5kYXJkX2NsdXN0ZXIiXSwgWyJzdGFuZGFyZF9jbHVzdGVyIl0sIFsiYnJva2VuX2NsdXN0ZXIiXSwgWyJicm9rZW5fY2x1c3RlciJdLCBbIm51bWVyYWxfY2x1c3RlciJdLCBbIm51bWJlcl9qb2luZXJfdGVybWluYXRlZF9jbHVzdGVyIl0sIFsic3RhbmRhcmRfY2x1c3RlciJdLCBbInN0YW5kYXJkX2NsdXN0ZXIiXSwgWyJudW1lcmFsX2NsdXN0ZXIiXV07CnZhciB1c2VEYXRhID0gewoJY2F0ZWdvcmllczogY2F0ZWdvcmllcywKCWRlY29tcG9zaXRpb25zOiBkZWNvbXBvc2l0aW9ucyQxLAoJc3RhdGVUYWJsZTogc3RhdGVUYWJsZSQxLAoJYWNjZXB0aW5nOiBhY2NlcHRpbmckMSwKCXRhZ3M6IHRhZ3MkMQp9OwoKLy8gQ2F0ZW9yaWVzIHVzZWQgaW4gdGhlIE9wZW5UeXBlIHNwZWM6Ci8vIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9vdGZudGRldi9kZXZhbm90L3NoYXBpbmcuYXNweAp2YXIgQ0FURUdPUklFUyA9IHsKICBYOiAxIDw8IDAsCiAgQzogMSA8PCAxLAogIFY6IDEgPDwgMiwKICBOOiAxIDw8IDMsCiAgSDogMSA8PCA0LAogIFpXTko6IDEgPDwgNSwKICBaV0o6IDEgPDwgNiwKICBNOiAxIDw8IDcsCiAgU006IDEgPDwgOCwKICBWRDogMSA8PCA5LAogIEE6IDEgPDwgMTAsCiAgUGxhY2Vob2xkZXI6IDEgPDwgMTEsCiAgRG90dGVkX0NpcmNsZTogMSA8PCAxMiwKICBSUzogMSA8PCAxMywgLy8gUmVnaXN0ZXIgU2hpZnRlciwgdXNlZCBpbiBLaG1lciBPVCBzcGVjLgogIENvZW5nOiAxIDw8IDE0LCAvLyBLaG1lci1zdHlsZSBWaXJhbWEuCiAgUmVwaGE6IDEgPDwgMTUsIC8vIEF0b21pY2FsbHktZW5jb2RlZCBsb2dpY2FsIG9yIHZpc3VhbCByZXBoYS4KICBSYTogMSA8PCAxNiwKICBDTTogMSA8PCAxNywgLy8gQ29uc29uYW50LU1lZGlhbC4KICBTeW1ib2w6IDEgPDwgMTggLy8gQXZhZ3JhaGEsIGV0YyB0aGF0IHRha2UgbWFya3MgKFNNLEEsVkQpLgp9OwoKLy8gVmlzdWFsIHBvc2l0aW9ucyBpbiBhIHN5bGxhYmxlIGZyb20gbGVmdCB0byByaWdodC4KdmFyIFBPU0lUSU9OUyA9IHsKICBTdGFydDogMSA8PCAwLAoKICBSYV9Ub19CZWNvbWVfUmVwaDogMSA8PCAxLAogIFByZV9NOiAxIDw8IDIsCiAgUHJlX0M6IDEgPDwgMywKCiAgQmFzZV9DOiAxIDw8IDQsCiAgQWZ0ZXJfTWFpbjogMSA8PCA1LAoKICBBYm92ZV9DOiAxIDw8IDYsCgogIEJlZm9yZV9TdWI6IDEgPDwgNywKICBCZWxvd19DOiAxIDw8IDgsCiAgQWZ0ZXJfU3ViOiAxIDw8IDksCgogIEJlZm9yZV9Qb3N0OiAxIDw8IDEwLAogIFBvc3RfQzogMSA8PCAxMSwKICBBZnRlcl9Qb3N0OiAxIDw8IDEyLAoKICBGaW5hbF9DOiAxIDw8IDEzLAogIFNNVkQ6IDEgPDwgMTQsCgogIEVuZDogMSA8PCAxNQp9OwoKdmFyIENPTlNPTkFOVF9GTEFHUyA9IENBVEVHT1JJRVMuQyB8IENBVEVHT1JJRVMuUmEgfCBDQVRFR09SSUVTLkNNIHwgQ0FURUdPUklFUy5WIHwgQ0FURUdPUklFUy5QbGFjZWhvbGRlciB8IENBVEVHT1JJRVMuRG90dGVkX0NpcmNsZTsKdmFyIEpPSU5FUl9GTEFHUyA9IENBVEVHT1JJRVMuWldKIHwgQ0FURUdPUklFUy5aV05KOwp2YXIgSEFMQU5UX09SX0NPRU5HX0ZMQUdTID0gQ0FURUdPUklFUy5IIHwgQ0FURUdPUklFUy5Db2VuZzsKCnZhciBJTkRJQ19DT05GSUdTID0gewogIERlZmF1bHQ6IHsKICAgIGhhc09sZFNwZWM6IGZhbHNlLAogICAgdmlyYW1hOiAwLAogICAgYmFzZVBvczogJ0xhc3QnLAogICAgcmVwaFBvczogUE9TSVRJT05TLkJlZm9yZV9Qb3N0LAogICAgcmVwaE1vZGU6ICdJbXBsaWNpdCcsCiAgICBibHdmTW9kZTogJ1ByZV9BbmRfUG9zdCcKICB9LAoKICBEZXZhbmFnYXJpOiB7CiAgICBoYXNPbGRTcGVjOiB0cnVlLAogICAgdmlyYW1hOiAweDA5NEQsCiAgICBiYXNlUG9zOiAnTGFzdCcsCiAgICByZXBoUG9zOiBQT1NJVElPTlMuQmVmb3JlX1Bvc3QsCiAgICByZXBoTW9kZTogJ0ltcGxpY2l0JywKICAgIGJsd2ZNb2RlOiAnUHJlX0FuZF9Qb3N0JwogIH0sCgogIEJlbmdhbGk6IHsKICAgIGhhc09sZFNwZWM6IHRydWUsCiAgICB2aXJhbWE6IDB4MDlDRCwKICAgIGJhc2VQb3M6ICdMYXN0JywKICAgIHJlcGhQb3M6IFBPU0lUSU9OUy5BZnRlcl9TdWIsCiAgICByZXBoTW9kZTogJ0ltcGxpY2l0JywKICAgIGJsd2ZNb2RlOiAnUHJlX0FuZF9Qb3N0JwogIH0sCgogIEd1cm11a2hpOiB7CiAgICBoYXNPbGRTcGVjOiB0cnVlLAogICAgdmlyYW1hOiAweDBBNEQsCiAgICBiYXNlUG9zOiAnTGFzdCcsCiAgICByZXBoUG9zOiBQT1NJVElPTlMuQmVmb3JlX1N1YiwKICAgIHJlcGhNb2RlOiAnSW1wbGljaXQnLAogICAgYmx3Zk1vZGU6ICdQcmVfQW5kX1Bvc3QnCiAgfSwKCiAgR3VqYXJhdGk6IHsKICAgIGhhc09sZFNwZWM6IHRydWUsCiAgICB2aXJhbWE6IDB4MEFDRCwKICAgIGJhc2VQb3M6ICdMYXN0JywKICAgIHJlcGhQb3M6IFBPU0lUSU9OUy5CZWZvcmVfUG9zdCwKICAgIHJlcGhNb2RlOiAnSW1wbGljaXQnLAogICAgYmx3Zk1vZGU6ICdQcmVfQW5kX1Bvc3QnCiAgfSwKCiAgT3JpeWE6IHsKICAgIGhhc09sZFNwZWM6IHRydWUsCiAgICB2aXJhbWE6IDB4MEI0RCwKICAgIGJhc2VQb3M6ICdMYXN0JywKICAgIHJlcGhQb3M6IFBPU0lUSU9OUy5BZnRlcl9NYWluLAogICAgcmVwaE1vZGU6ICdJbXBsaWNpdCcsCiAgICBibHdmTW9kZTogJ1ByZV9BbmRfUG9zdCcKICB9LAoKICBUYW1pbDogewogICAgaGFzT2xkU3BlYzogdHJ1ZSwKICAgIHZpcmFtYTogMHgwQkNELAogICAgYmFzZVBvczogJ0xhc3QnLAogICAgcmVwaFBvczogUE9TSVRJT05TLkFmdGVyX1Bvc3QsCiAgICByZXBoTW9kZTogJ0ltcGxpY2l0JywKICAgIGJsd2ZNb2RlOiAnUHJlX0FuZF9Qb3N0JwogIH0sCgogIFRlbHVndTogewogICAgaGFzT2xkU3BlYzogdHJ1ZSwKICAgIHZpcmFtYTogMHgwQzRELAogICAgYmFzZVBvczogJ0xhc3QnLAogICAgcmVwaFBvczogUE9TSVRJT05TLkFmdGVyX1Bvc3QsCiAgICByZXBoTW9kZTogJ0V4cGxpY2l0JywKICAgIGJsd2ZNb2RlOiAnUG9zdF9Pbmx5JwogIH0sCgogIEthbm5hZGE6IHsKICAgIGhhc09sZFNwZWM6IHRydWUsCiAgICB2aXJhbWE6IDB4MENDRCwKICAgIGJhc2VQb3M6ICdMYXN0JywKICAgIHJlcGhQb3M6IFBPU0lUSU9OUy5BZnRlcl9Qb3N0LAogICAgcmVwaE1vZGU6ICdJbXBsaWNpdCcsCiAgICBibHdmTW9kZTogJ1Bvc3RfT25seScKICB9LAoKICBNYWxheWFsYW06IHsKICAgIGhhc09sZFNwZWM6IHRydWUsCiAgICB2aXJhbWE6IDB4MEQ0RCwKICAgIGJhc2VQb3M6ICdMYXN0JywKICAgIHJlcGhQb3M6IFBPU0lUSU9OUy5BZnRlcl9NYWluLAogICAgcmVwaE1vZGU6ICdMb2dfUmVwaGEnLAogICAgYmx3Zk1vZGU6ICdQcmVfQW5kX1Bvc3QnCiAgfSwKCiAgLy8gSGFuZGxlZCBieSBVbml2ZXJzYWxTaGFwZXIKICAvLyBTaW5oYWxhOiB7CiAgLy8gICBoYXNPbGRTcGVjOiBmYWxzZSwKICAvLyAgIHZpcmFtYTogMHgwRENBLAogIC8vICAgYmFzZVBvczogJ0xhc3RfU2luaGFsYScsCiAgLy8gICByZXBoUG9zOiBQT1NJVElPTlMuQWZ0ZXJfTWFpbiwKICAvLyAgIHJlcGhNb2RlOiAnRXhwbGljaXQnLAogIC8vICAgYmx3Zk1vZGU6ICdQcmVfQW5kX1Bvc3QnCiAgLy8gfSwKCiAgS2htZXI6IHsKICAgIGhhc09sZFNwZWM6IGZhbHNlLAogICAgdmlyYW1hOiAweDE3RDIsCiAgICBiYXNlUG9zOiAnRmlyc3QnLAogICAgcmVwaFBvczogUE9TSVRJT05TLlJhX1RvX0JlY29tZV9SZXBoLAogICAgcmVwaE1vZGU6ICdWaXNfUmVwaGEnLAogICAgYmx3Zk1vZGU6ICdQcmVfQW5kX1Bvc3QnCiAgfQp9OwoKLy8gQWRkaXRpb25hbCBkZWNvbXBvc2l0aW9ucyB0aGF0IGFyZW4ndCBpbiBVbmljb2RlCnZhciBJTkRJQ19ERUNPTVBPU0lUSU9OUyA9IHsKICAvLyBLaG1lcgogIDB4MTdCRTogWzB4MTdDMSwgMHgxN0JFXSwKICAweDE3QkY6IFsweDE3QzEsIDB4MTdCRl0sCiAgMHgxN0MwOiBbMHgxN0MxLCAweDE3QzBdLAogIDB4MTdDNDogWzB4MTdDMSwgMHgxN0M0XSwKICAweDE3QzU6IFsweDE3QzEsIDB4MTdDNV0KfTsKCnZhciBfY2xhc3MkNjsKdmFyIF90ZW1wJDI7CnZhciBkZWNvbXBvc2l0aW9ucyA9IHVzZURhdGEuZGVjb21wb3NpdGlvbnM7Cgp2YXIgdHJpZSQxID0gbmV3IFVuaWNvZGVUcmllKEJ1ZmZlcigiQUJFQUFBQUFBQUFBQU1LZ0FiRU5Udkx0blgrc0hVVVZ4L2YxM25kL3ZIZjdibCtGUkdMN1IwT0pNY1dZcGhCcmlta1ZDU0pSMnhpRWFMRUdRN0FrQkdvd2JZUlNnajhLMkIvR2twUllFNndsUVN5SktDYWdyU2xHa21xc3FVWk1ZN1MyQ1drZ3FRVmlRU2t0NEhmdXpyeDc3dHlaMmZtMXUrL1JQY2tudXpzN08zUG1uRE96czdONzN6dGVTNUtYd0t2Z0RUQ25uaVR2QmZQQkplQVZwUDJ2RnI2OUdHVXRBa3ZBTW9keXIwRGVUNEJyd0Nwd1BWZ0RiZ2EzZ2ErRGpZYnlsdUxjQ3ZCTjhGMndHV3dITzhFajREanlQSWJ0ejBEQ2VacHZENENENEUvZ2IrQW9PQUZPZ3RQZ0xLaU5Ka2tiVElLTHdBTHdmdkFoOEdHd0hGd0ZQZzJ1QXplQ204RnQ0RTV3TjdnUFBBaStEMzRBZmdSK0FwN2t4OCtBWjhIdndaL0JFWEFNdkFoZUFhK0JjNk9wenZWR2tuVEFCWTMwZUI2MkM4R2xZREZZQ3BhRHEvbjV6Mko3UFZnRGJnRzNOMUtick9kYld6YnkvTi9HOWk2d2xSOC93TGViVU5jT2xsN3ZYN1BMc1E0YmRwQXk5MkIvTDNnSzdBTy9BMzhFZndYL0FDK0FreVQvbTN4N21xZHRZejdHZnEyWkpPUGdQYzNVWHUvRDl1Sm1tbWNSVDF1QzdUSndaVE9OSnhGTDErSjRKYmdCckFHM2dOdjVOZXY1ZGhPMm0zbDU0cnF0T043Uk5MZDFWOFo1YXVNZkkrOFdidnYxMlA0VXg3OEF2eVpsL0JiN2Z3RDM0SHdIL0VWUi90OHQ2clJscllnRmxIbk1zZHlYSXVwUkZQK0d6djhCYjRDa2xTU2pyVFI5YnoyMXVaeC9Oajh2K3VJRk9KNEhGbkpvM2tXdE5HNldrUFN6QmwxWWJDOGplVmZ4K3ErUjlQZzQ4bHhOOGpGZGhkOCswMUxyTFRDZHE2aW84R05iMWE4cUtpb3FLaW9xS2lvYzJjYlhHY3JXUTJZbmY5YTlybVYvelZ1YTlEYzE2Vi9nejhwZnh2YXI0QTZ3QWR3TDdnZGJ3VVBnaCtCUjhBUjRxcFd1TGUzRDlnQTRDQTZESStBb09BRk90ZEwxbk5leGZZczkzN2Z4REE4dWJLZjF6bXYzZFZpSS9VdmI5bTJzcUtpb3FBaUhyVnRlaHJIM1RLMi8zbDRXWmR1aW9xSWlEcStSZDFKYmVmOWVobkhtU25DdE5OZjduT1BjcjhQSGlsTzhqcmZCRjl2OTk2bGZ3ZjZ0VXBsM3RQdnZkU2pzdmN3R25MdDNHc3cva3prcEs4Q2RZSDgzbXkzSWQwaVQ5MVdrTDV4TWt0WGdJZkQ4NU9ENTR6amZtWXU1T0ZnTjdoMUxrbWRCTWc1ZmdidkFDaHp2NDl1amZFdVozeGxPazdrUmVUYVNmTC9CL2psK2ZNWHNKTGtiN0FjUGo4VGxIQy96c2duWWN5TGQzelNoMXZHQUpyMmlvcUtpSW4vZUtYa01qbjMvY1dGNXQvejZ5MzcrSzV1cndQMllCMzZ2UGZ3OHlyN3plUmpwdThnOGNUZjJIMituODlFdGl2TEU5M2ZzMjdFei9CcjJ2TTIrcVdQbC9aeVg5U3RGZlF4VzV2NzI0UFB4elh6N1hIdTRQcHM1SnZ0bWlxMTNzem16ZlAwaGxIa1lIR24zNThiSGVEMHZZdnN5K0sra3o5dnQvank4Z1Q0MEcxdzRSdWEwUE45OG5uYUdmL2UxRyttWElPMkRZOFA2WHo3V1B6N0t5LzdvbUowUEJmZjQrQjkxZkFxc0FwOEhYd0kzZ1IwNHR4YmJkV0REV0RwUC9nN1l4czZCWFdBUDJBdWVKSG8rTTViT3B3K0N3K0FJT0FwT2dGTVc3WGtkZWM2QWtYSDErUWZneXpiT1RZNzNqeS9DL2dKKy9DQ09QNEQ5eGZ6NEk5aCtURk1XdGY5U1JXelp3cTdmMHlpL0w5dm9XU1JiRGZWL2NseC8zVHVLZmpvVDI2L2lYODEzVVJ4NHRpVkczYXkvc2ZGdUplbmI3SjUwQTRtcjFkaS9DWnpMS1o2eTJyZXVudXA0cXpUK2ZNMHdIcDBQVUQ5K0E3YllOSjVmbjNlTlAvRnQ1YmMwK1M0bjkvbDFHaitLODJ6ZXNkMXdmajNmWjc5aDJZeXlWdkxqN2RqZkNSNHhqSkV5dXkxK1MvRnlEdC9NUHdvZG41aEI4YXhyeHk5blNCdFlqT3lIcnMrQlErQjU4RSt1K3dzV2JXQnRwYi9oWUw4UnVBL3BKOGZUMkdmZlgrd2wrZGFTYTA4ano5bnhORzJrNDk2M1hCRy9aVmhwVVM1NzNtaDNCdFBvN3gvRWI3cEUyeWQ1WHZac3NZL00vUlpMYzlTTGVEc2ZENWdmVGlkaTkvL3B3cnpXdTd0OWxLY043ZHh5bnRoQWg4dmNLclF1MWZySFRHS0JORjY2Mktmb09YVTFGc2FGeGU2eDJrakNsa0JuR3ZYeHdYMGJ5dFo1dW5LK1M5bjJqeGFiVGM1TTBIVWFJeVRyZkZhK0xqbWZsYzlYejdKdE5kUGE0ZUt6NldBUGxiNWw2eGZMQnpvcFd4Y2ZuY3ZTZjdySFJKazJLU04yYktSc3ZjdTJVWm14VkliOXFkNTUxZThyWmNURVJHdVErcXdJakVSa2psMitkak9saFdmcGlibnAvcXhtUDkyRlZyMS9iYzlHWXh4dUk1bzNVemR1a3pZcGorSDZuT3hyYTluSGlha3NqaERkc2FzUGU5Y2EvQ3ZPVTFHVndVVDR0OFA5MjFINFQ4Z3Nua2RJaCtkbi9wWHJVMG1uT1p3MjFDYkp2MVA1TFAwcjRqdGtiTEgxNzFCYkN2YXZuRmZlWjhMOEsyd3YvQ3VRUlU2bi9xV1NOU2JyMm1POHh0Sy9VK01xNlkvMXlReUZKSEh0djhLbjJ1T0MvR3ZiZjJWRVB4SjlTdmhZNWQrUSt5MjFpUnhMcnVPenNZNk1XR3JPa1BIWjFiK2pGdVB6cUVYL1ZjbW9aa3lJUFQ1M2szNi9EWm5yTWQrSy9EYmpzNmt2Nis2VllsOU9VK1dUMDdUcGx2TXZXV2hmVm8zZjR0NDhTK3JiaklabC8xYjVYeWQ1dkpkUWlUeWY3dFVkTWxibjBKOWQvY242YzdNNURPMVRORjArYm1UMFozcWRLYWFvWGVnMUx2N05FaHVmenlULzZ2SUtFZU8xalgvcHNkaTM4YTg4OXFwa1N0Y0kvdTEyVTN6RTFSZSsvWXY2UU53dmRUREpHaTl0MnBzMVh0S1lESjBQbWNaS2NVODEyc1J4dm1zN0o0N21aNWMrU1dKRDVMUFJnNHFxaituV0w4UTVzUlZyR2FyMUVHMHNPSTZuZEgzRFZXTDd3cGV1d2FZNk8xTmgxOU4rT3FzNXVJN0V0bzNhSUN4TnJDbjVyQXVaN0NuMmJkSnRmWlBsTC9rOExkK2tpNnY5RTU2WFBVdlQ1Mm1WL1lWdm1NajJaejhURXVOTVR4Zkh1RmZGVUo2ME9McnoxdXRPRG5GRzQ3ZkxiU2pYeTB4U3k0Z042M0V5d2xoTXhXY05tSzcxc3Zzemk1T0dUdmRKZTNydGQ4aWZCNkkvbUtCcjFhcDd1VS9zcXFUc01iK0g1ZnhCRnl1cSt5cUxuZDdjbWozM1R3eU9WVk93dWozblZYUnRRdFVHV1I5anpJNmtlY1pyS1NLUHVGYWtVMmhabVhYWk1EbHNTMVc5akJhdnY2ZUhwZjNFdGZKN21Ld1lWMGxYMmc5RlZZNU4rVW5nOWFIMTU5MCtuM0tMZ0VyZWRmaWV6NnU5c3Zpc1kvU3VrOUpzbmtsaTFhK0MxbS9UN3J6cWQ1VVk5bWZpWFg5UjkyaWJkWlVJYXdUQzk2YjFHQm42ckRHMUpzUHYvYjM5MlNraVhWVUdteU4wTE81TFlpNDZaZi9BZGMvUU1hQ284VHRHL2JIMVovVHNXMVFmVVBSam0yY1plZTVQUmFUMzNsRWJuaGxNYXg0cWUxby9ZOGEwaWNkYW9Pdjlic2grSGo2am9udWVvR3RIdW1jTWxYOWx4THhYcTcvRDg0ZlN6em5HdDZydFVlclh4WVU0Ny9JY1BlRzN2cUJiSjFTdEVUWnFnOWZTMkFrZC8wT3ZwKy9DeEQzUCsvNmJRd3pKdHN2eWg1dytYamVYSDlLZlhHSDMvVmJTWDR0UzRYb2Z0UFpibnZjeXhYMUc1UXZXMXdiV1RrYnM3YzNtVGNvNk5XT0RiZHhrM1I5bEdaby9hR3hoaWtuVG1FVFhMVnMxYzkwdTkrbUJHQ2Y2aHM2ZnNtVHEyOXN4UHY4ZDgyQ3VoQ3BOakdOamczMWJsR0hyejFpNDFoZDZudVl6YlUzWGhMUXpqN0p0NjdPdHcwdVhVZERvSDhlNEYvam9NZFZ1aTJkTUpjM0UrVGV0dnI2akV0UG5QaEphVnd6OVk3VERWbHgxcW5maXRsRWJ0emxUVkQwcVgvcGNtMWVzeEk2NVBPM21VNGVOcnI1U1pNejQ2RkRFK2FJbGI1dG50YjFvL1dPVUVUc1c4NDdwdk5wYVpIMjI1ZVVwTm5yUzl5RHk5d1R5c3lyOVhWT2U2MytxZDNNNmU0WDZQdGQxRHBjMVNkVjUzWnFGYWcxaHBQK2JFNWY0aXZZNzRCelhpbHpXV1cxK1MwVGpKbmc5MUdkOXdtYk5ncE1WejZXOGQ3R0pad1d0V3A4cCsrYzhmcGpXMFZ6ZmYzZEpmekd1b2Vyc0V0bm1walZMdXBZNDhINm83bjgvQytrdkpuK0xjZDZxM1FIeDN1c3ZaYXgzVzhhcHZQNnJlditVSlNIZmlDWWUvaDJhVHdUYVJpNURPMjhaU2Q5ek5oVGZKOGIyamU3ZHJPbzlIdE5OYlBNVzAzek9wcTJxTnFuS0ZOKzBodWhsTXllMlBlOVRkemZDZWRmeE1sUmZHN3hqbmNhSjdmaVhNWVprM1grWnZ1S2JYQ0doOHk4WEg4VHliYWpQVGZxNHRqRzIvcWIwUkpPM1NCMTliYTJTTXVvTmJXOFIvZzY1M3FhOXNkc1JZc3NzdStaeFBzcyt0bmF5RmQ5NHlqb2ZFaStoWmR2bzczcTlqZDN5aXNVWWJmRXBROVhtTXFVSW0yZkZaaDR4a1plRTFCTkRMNXYrWmNxWGgvOTBiU3dqZmx6OFUwUWNGV0h6UE9weTBhbU0rc3RxZjFhZDdMbHRWUHFXbUczcDMrR2lJdkxKZjhkdVlBM05jQndiV1Jwa0RYbW83UlArejVFNis4WHN3ejUxMmRiclcyYU1OcnBLYUJ0OXk0NVZSMmo5ZWZoQVFML1BGMzhYYWRxOTA3TllDNWRwWkx5M2tNWDZQVUhnZUdHUzNuZm9QbjlyT2JKOXMvNHVNbnRuU3QvSjVUWCsyWlJodEZjQjhaZ1ZteVpiaXQ4R0NkLzcvQzdFT2NZSzdMZHlqTmhJbEw4MW5xTi9YZjltT0h0L2Fub3ZQNFgwdHllbS9PVVpGOVRtc2NZMm56RXVscTk2WmVWd3YyQnh4bndrM3M5bmpUOG0vWVdPS2wxOTlmZTUzdFRYeXU1RExvamZLV1hlajZSM1JBUHREZjFleC9QdnRkSjhRN2FQN0h0NlhwZFhTSmY4L3dNZFF1Uy9qMC9IdEtueTlLYlQrb1QySzJFVHVXN1R0MDlVc3M1bkNkV2hqUHVNVFh6cnp0TzRGSE15K1Y2VEphSDlJNisyQzVIUHE5b2M4eGxLUnZhNXJGOE0vN3RDMjYvNkJzTkZpdlEvL2UxcFZzeVAxOVZyTnJIMUQ1V2k3b1VEZFZwOFE1SFZyMXp0bHpYUHRIMkdjMzArbE1YM2VkSDNlY20zZnAwK1BzL0lQdldINk9waVY3bWVFTWxienlJa3BpMWp0RFUwUG1tNm5NZDBqVThiWEs3TjBqV2tiL2pvSHlOZWJmV2d0ckpwYzBoN1FpUVAyNGFLcWN3WVBuVFJJVW1HNjNmUlE1VlhMc2VrZ3k1TnRWWFZhZExmcGp6VjlTNnhZbnVOcmkxNTlabXNtTENwSjgvNlhTUkdPYUg2NTlIK0dMWXR3aGQ1MXh2cTMxQjlRbTBVYXZNODRxaG9LYU5PbmZ3ZiIsImJhc2U2NCIpKTsKdmFyIHN0YXRlTWFjaGluZSA9IG5ldyBTdGF0ZU1hY2hpbmUoaW5kaWNNYWNoaW5lKTsKCi8qKgogKiBUaGUgSW5kaWNTaGFwZXIgc3VwcG9ydHMgaW5kaWMgc2NyaXB0cyBlLmcuIERldmFuYWdhcmksIEthbm5hZGEsIGV0Yy4KICogQmFzZWQgb24gY29kZSBmcm9tIEhhcmZidXp6OiBodHRwczovL2dpdGh1Yi5jb20vYmVoZGFkL2hhcmZidXp6L2Jsb2IvbWFzdGVyL3NyYy9oYi1vdC1zaGFwZS1jb21wbGV4LWluZGljLmNjCiAqLwp2YXIgSW5kaWNTaGFwZXIgPSAoX3RlbXAkMiA9IF9jbGFzcyQ2ID0gZnVuY3Rpb24gKF9EZWZhdWx0U2hhcGVyKSB7CiAgX2luaGVyaXRzKEluZGljU2hhcGVyLCBfRGVmYXVsdFNoYXBlcik7CgogIGZ1bmN0aW9uIEluZGljU2hhcGVyKCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEluZGljU2hhcGVyKTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX0RlZmF1bHRTaGFwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBJbmRpY1NoYXBlci5wbGFuRmVhdHVyZXMgPSBmdW5jdGlvbiBwbGFuRmVhdHVyZXMocGxhbikgewogICAgcGxhbi5hZGRTdGFnZShzZXR1cFN5bGxhYmxlcyk7CgogICAgcGxhbi5hZGRTdGFnZShbJ2xvY2wnLCAnY2NtcCddKTsKCiAgICBwbGFuLmFkZFN0YWdlKGluaXRpYWxSZW9yZGVyaW5nKTsKCiAgICBwbGFuLmFkZFN0YWdlKCdudWt0Jyk7CiAgICBwbGFuLmFkZFN0YWdlKCdha2huJyk7CiAgICBwbGFuLmFkZFN0YWdlKCdycGhmJywgZmFsc2UpOwogICAgcGxhbi5hZGRTdGFnZSgncmtyZicpOwogICAgcGxhbi5hZGRTdGFnZSgncHJlZicsIGZhbHNlKTsKICAgIHBsYW4uYWRkU3RhZ2UoJ2Jsd2YnLCBmYWxzZSk7CiAgICBwbGFuLmFkZFN0YWdlKCdhYnZmJywgZmFsc2UpOwogICAgcGxhbi5hZGRTdGFnZSgnaGFsZicsIGZhbHNlKTsKICAgIHBsYW4uYWRkU3RhZ2UoJ3BzdGYnLCBmYWxzZSk7CiAgICBwbGFuLmFkZFN0YWdlKCd2YXR1Jyk7CiAgICBwbGFuLmFkZFN0YWdlKCdjamN0Jyk7CiAgICBwbGFuLmFkZFN0YWdlKCdjZmFyJywgZmFsc2UpOwoKICAgIHBsYW4uYWRkU3RhZ2UoZmluYWxSZW9yZGVyaW5nKTsKCiAgICBwbGFuLmFkZFN0YWdlKHsKICAgICAgbG9jYWw6IFsnaW5pdCddLAogICAgICBnbG9iYWw6IFsncHJlcycsICdhYnZzJywgJ2Jsd3MnLCAncHN0cycsICdoYWxuJywgJ2Rpc3QnLCAnYWJ2bScsICdibHdtJywgJ2NhbHQnLCAnY2xpZyddCiAgICB9KTsKCiAgICAvLyBTZXR1cCB0aGUgaW5kaWMgY29uZmlnIGZvciB0aGUgc2VsZWN0ZWQgc2NyaXB0CiAgICBwbGFuLnVuaWNvZGVTY3JpcHQgPSBmcm9tT3BlblR5cGUocGxhbi5zY3JpcHQpOwogICAgcGxhbi5pbmRpY0NvbmZpZyA9IElORElDX0NPTkZJR1NbcGxhbi51bmljb2RlU2NyaXB0XSB8fCBJTkRJQ19DT05GSUdTLkRlZmF1bHQ7CiAgICBwbGFuLmlzT2xkU3BlYyA9IHBsYW4uaW5kaWNDb25maWcuaGFzT2xkU3BlYyAmJiBwbGFuLnNjcmlwdFtwbGFuLnNjcmlwdC5sZW5ndGggLSAxXSAhPT0gJzInOwoKICAgIC8vIFRPRE86IHR1cm4gb2ZmIGtlcm4gKEtobWVyKSBhbmQgbGlnYSBmZWF0dXJlcy4KICB9OwoKICBJbmRpY1NoYXBlci5hc3NpZ25GZWF0dXJlcyA9IGZ1bmN0aW9uIGFzc2lnbkZlYXR1cmVzKHBsYW4sIGdseXBocykgewogICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoaSkgewogICAgICB2YXIgY29kZXBvaW50ID0gZ2x5cGhzW2ldLmNvZGVQb2ludHNbMF07CiAgICAgIHZhciBkID0gSU5ESUNfREVDT01QT1NJVElPTlNbY29kZXBvaW50XSB8fCBkZWNvbXBvc2l0aW9uc1tjb2RlcG9pbnRdOwogICAgICBpZiAoZCkgewogICAgICAgIHZhciBkZWNvbXBvc2VkID0gZC5tYXAoZnVuY3Rpb24gKGMpIHsKICAgICAgICAgIHZhciBnID0gcGxhbi5mb250LmdseXBoRm9yQ29kZVBvaW50KGMpOwogICAgICAgICAgcmV0dXJuIG5ldyBHbHlwaEluZm8ocGxhbi5mb250LCBnLmlkLCBbY10sIGdseXBoc1tpXS5mZWF0dXJlcyk7CiAgICAgICAgfSk7CgogICAgICAgIGdseXBocy5zcGxpY2UuYXBwbHkoZ2x5cGhzLCBbaSwgMV0uY29uY2F0KGRlY29tcG9zZWQpKTsKICAgICAgfQogICAgfTsKCiAgICAvLyBEZWNvbXBvc2Ugc3BsaXQgbWF0cmFzCiAgICAvLyBUT0RPOiBkbyB0aGlzIGluIGEgbW9yZSBnZW5lcmFsIHVuaWNvZGUgbm9ybWFsaXplcgogICAgZm9yICh2YXIgaSA9IGdseXBocy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgewogICAgICBfbG9vcChpKTsKICAgIH0KICB9OwoKICByZXR1cm4gSW5kaWNTaGFwZXI7Cn0oRGVmYXVsdFNoYXBlciksIF9jbGFzcyQ2Lnplcm9NYXJrV2lkdGhzID0gJ05PTkUnLCBfdGVtcCQyKTsKZnVuY3Rpb24gaW5kaWNDYXRlZ29yeShnbHlwaCkgewogIHJldHVybiB0cmllJDEuZ2V0KGdseXBoLmNvZGVQb2ludHNbMF0pID4+IDg7Cn0KCmZ1bmN0aW9uIGluZGljUG9zaXRpb24oZ2x5cGgpIHsKICByZXR1cm4gMSA8PCAodHJpZSQxLmdldChnbHlwaC5jb2RlUG9pbnRzWzBdKSAmIDB4ZmYpOwp9Cgp2YXIgSW5kaWNJbmZvID0gZnVuY3Rpb24gSW5kaWNJbmZvKGNhdGVnb3J5LCBwb3NpdGlvbiwgc3lsbGFibGVUeXBlLCBzeWxsYWJsZSkgewogIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJbmRpY0luZm8pOwoKICB0aGlzLmNhdGVnb3J5ID0gY2F0ZWdvcnk7CiAgdGhpcy5wb3NpdGlvbiA9IHBvc2l0aW9uOwogIHRoaXMuc3lsbGFibGVUeXBlID0gc3lsbGFibGVUeXBlOwogIHRoaXMuc3lsbGFibGUgPSBzeWxsYWJsZTsKfTsKCmZ1bmN0aW9uIHNldHVwU3lsbGFibGVzKGZvbnQsIGdseXBocykgewogIHZhciBzeWxsYWJsZSA9IDA7CiAgdmFyIGxhc3QgPSAwOwogIGZvciAodmFyIF9pdGVyYXRvciA9IHN0YXRlTWFjaGluZS5tYXRjaChnbHlwaHMubWFwKGluZGljQ2F0ZWdvcnkpKSwgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICB2YXIgX3JlZjsKCiAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgfSBlbHNlIHsKICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgIH0KCiAgICB2YXIgX3JlZjIgPSBfcmVmLAogICAgICAgIHN0YXJ0ID0gX3JlZjJbMF0sCiAgICAgICAgZW5kID0gX3JlZjJbMV0sCiAgICAgICAgdGFncyA9IF9yZWYyWzJdOwoKICAgIGlmIChzdGFydCA+IGxhc3QpIHsKICAgICAgKytzeWxsYWJsZTsKICAgICAgZm9yICh2YXIgX2kyID0gbGFzdDsgX2kyIDwgc3RhcnQ7IF9pMisrKSB7CiAgICAgICAgZ2x5cGhzW19pMl0uc2hhcGVySW5mbyA9IG5ldyBJbmRpY0luZm8oQ0FURUdPUklFUy5YLCBQT1NJVElPTlMuRW5kLCAnbm9uX2luZGljX2NsdXN0ZXInLCBzeWxsYWJsZSk7CiAgICAgIH0KICAgIH0KCiAgICArK3N5bGxhYmxlOwoKICAgIC8vIENyZWF0ZSBzaGFwZXIgaW5mbwogICAgZm9yICh2YXIgX2kzID0gc3RhcnQ7IF9pMyA8PSBlbmQ7IF9pMysrKSB7CiAgICAgIGdseXBoc1tfaTNdLnNoYXBlckluZm8gPSBuZXcgSW5kaWNJbmZvKDEgPDwgaW5kaWNDYXRlZ29yeShnbHlwaHNbX2kzXSksIGluZGljUG9zaXRpb24oZ2x5cGhzW19pM10pLCB0YWdzWzBdLCBzeWxsYWJsZSk7CiAgICB9CgogICAgbGFzdCA9IGVuZCArIDE7CiAgfQoKICBpZiAobGFzdCA8IGdseXBocy5sZW5ndGgpIHsKICAgICsrc3lsbGFibGU7CiAgICBmb3IgKHZhciBpID0gbGFzdDsgaSA8IGdseXBocy5sZW5ndGg7IGkrKykgewogICAgICBnbHlwaHNbaV0uc2hhcGVySW5mbyA9IG5ldyBJbmRpY0luZm8oQ0FURUdPUklFUy5YLCBQT1NJVElPTlMuRW5kLCAnbm9uX2luZGljX2NsdXN0ZXInLCBzeWxsYWJsZSk7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBpc0NvbnNvbmFudChnbHlwaCkgewogIHJldHVybiBnbHlwaC5zaGFwZXJJbmZvLmNhdGVnb3J5ICYgQ09OU09OQU5UX0ZMQUdTOwp9CgpmdW5jdGlvbiBpc0pvaW5lcihnbHlwaCkgewogIHJldHVybiBnbHlwaC5zaGFwZXJJbmZvLmNhdGVnb3J5ICYgSk9JTkVSX0ZMQUdTOwp9CgpmdW5jdGlvbiBpc0hhbGFudE9yQ29lbmcoZ2x5cGgpIHsKICByZXR1cm4gZ2x5cGguc2hhcGVySW5mby5jYXRlZ29yeSAmIEhBTEFOVF9PUl9DT0VOR19GTEFHUzsKfQoKZnVuY3Rpb24gd291bGRTdWJzdGl0dXRlKGdseXBocywgZmVhdHVyZSkgewogIGZvciAodmFyIF9pdGVyYXRvcjIgPSBnbHlwaHMsIF9pc0FycmF5MiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMiksIF9pNCA9IDAsIF9pdGVyYXRvcjIgPSBfaXNBcnJheTIgPyBfaXRlcmF0b3IyIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjIpOzspIHsKICAgIHZhciBfZ2x5cGgkZmVhdHVyZXM7CgogICAgdmFyIF9yZWYzOwoKICAgIGlmIChfaXNBcnJheTIpIHsKICAgICAgaWYgKF9pNCA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgIF9yZWYzID0gX2l0ZXJhdG9yMltfaTQrK107CiAgICB9IGVsc2UgewogICAgICBfaTQgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgaWYgKF9pNC5kb25lKSBicmVhazsKICAgICAgX3JlZjMgPSBfaTQudmFsdWU7CiAgICB9CgogICAgdmFyIGdseXBoID0gX3JlZjM7CgogICAgZ2x5cGguZmVhdHVyZXMgPSAoX2dseXBoJGZlYXR1cmVzID0ge30sIF9nbHlwaCRmZWF0dXJlc1tmZWF0dXJlXSA9IHRydWUsIF9nbHlwaCRmZWF0dXJlcyk7CiAgfQoKICB2YXIgR1NVQiA9IGdseXBoc1swXS5fZm9udC5fbGF5b3V0RW5naW5lLmVuZ2luZS5HU1VCUHJvY2Vzc29yOwogIEdTVUIuYXBwbHlGZWF0dXJlcyhbZmVhdHVyZV0sIGdseXBocyk7CgogIHJldHVybiBnbHlwaHMubGVuZ3RoID09PSAxOwp9CgpmdW5jdGlvbiBjb25zb25hbnRQb3NpdGlvbihmb250LCBjb25zb25hbnQsIHZpcmFtYSkgewogIHZhciBnbHlwaHMgPSBbdmlyYW1hLCBjb25zb25hbnQsIHZpcmFtYV07CiAgaWYgKHdvdWxkU3Vic3RpdHV0ZShnbHlwaHMuc2xpY2UoMCwgMiksICdibHdmJykgfHwgd291bGRTdWJzdGl0dXRlKGdseXBocy5zbGljZSgxLCAzKSwgJ2Jsd2YnKSkgewogICAgcmV0dXJuIFBPU0lUSU9OUy5CZWxvd19DOwogIH0gZWxzZSBpZiAod291bGRTdWJzdGl0dXRlKGdseXBocy5zbGljZSgwLCAyKSwgJ3BzdGYnKSB8fCB3b3VsZFN1YnN0aXR1dGUoZ2x5cGhzLnNsaWNlKDEsIDMpLCAncHN0ZicpKSB7CiAgICByZXR1cm4gUE9TSVRJT05TLlBvc3RfQzsKICB9IGVsc2UgaWYgKHdvdWxkU3Vic3RpdHV0ZShnbHlwaHMuc2xpY2UoMCwgMiksICdwcmVmJykgfHwgd291bGRTdWJzdGl0dXRlKGdseXBocy5zbGljZSgxLCAzKSwgJ3ByZWYnKSkgewogICAgcmV0dXJuIFBPU0lUSU9OUy5Qb3N0X0M7CiAgfQoKICByZXR1cm4gUE9TSVRJT05TLkJhc2VfQzsKfQoKZnVuY3Rpb24gaW5pdGlhbFJlb3JkZXJpbmcoZm9udCwgZ2x5cGhzLCBwbGFuKSB7CiAgdmFyIGluZGljQ29uZmlnID0gcGxhbi5pbmRpY0NvbmZpZzsKICB2YXIgZmVhdHVyZXMgPSBmb250Ll9sYXlvdXRFbmdpbmUuZW5naW5lLkdTVUJQcm9jZXNzb3IuZmVhdHVyZXM7CgogIHZhciBkb3R0ZWRDaXJjbGUgPSBmb250LmdseXBoRm9yQ29kZVBvaW50KDB4MjVjYykuaWQ7CiAgdmFyIHZpcmFtYSA9IGZvbnQuZ2x5cGhGb3JDb2RlUG9pbnQoaW5kaWNDb25maWcudmlyYW1hKS5pZDsKICBpZiAodmlyYW1hKSB7CiAgICB2YXIgaW5mbyA9IG5ldyBHbHlwaEluZm8oZm9udCwgdmlyYW1hLCBbaW5kaWNDb25maWcudmlyYW1hXSk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdseXBocy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoZ2x5cGhzW2ldLnNoYXBlckluZm8ucG9zaXRpb24gPT09IFBPU0lUSU9OUy5CYXNlX0MpIHsKICAgICAgICBnbHlwaHNbaV0uc2hhcGVySW5mby5wb3NpdGlvbiA9IGNvbnNvbmFudFBvc2l0aW9uKGZvbnQsIGdseXBoc1tpXS5jb3B5KCksIGluZm8pOwogICAgICB9CiAgICB9CiAgfQoKICBmb3IgKHZhciBzdGFydCA9IDAsIGVuZCA9IG5leHRTeWxsYWJsZShnbHlwaHMsIDApOyBzdGFydCA8IGdseXBocy5sZW5ndGg7IHN0YXJ0ID0gZW5kLCBlbmQgPSBuZXh0U3lsbGFibGUoZ2x5cGhzLCBzdGFydCkpIHsKICAgIHZhciBfZ2x5cGhzJHN0YXJ0JHNoYXBlckkgPSBnbHlwaHNbc3RhcnRdLnNoYXBlckluZm8sCiAgICAgICAgY2F0ZWdvcnkgPSBfZ2x5cGhzJHN0YXJ0JHNoYXBlckkuY2F0ZWdvcnksCiAgICAgICAgc3lsbGFibGVUeXBlID0gX2dseXBocyRzdGFydCRzaGFwZXJJLnN5bGxhYmxlVHlwZTsKCgogICAgaWYgKHN5bGxhYmxlVHlwZSA9PT0gJ3N5bWJvbF9jbHVzdGVyJyB8fCBzeWxsYWJsZVR5cGUgPT09ICdub25faW5kaWNfY2x1c3RlcicpIHsKICAgICAgY29udGludWU7CiAgICB9CgogICAgaWYgKHN5bGxhYmxlVHlwZSA9PT0gJ2Jyb2tlbl9jbHVzdGVyJyAmJiBkb3R0ZWRDaXJjbGUpIHsKICAgICAgdmFyIGcgPSBuZXcgR2x5cGhJbmZvKGZvbnQsIGRvdHRlZENpcmNsZSwgWzB4MjVjY10pOwogICAgICBnLnNoYXBlckluZm8gPSBuZXcgSW5kaWNJbmZvKDEgPDwgaW5kaWNDYXRlZ29yeShnKSwgaW5kaWNQb3NpdGlvbihnKSwgZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvLnN5bGxhYmxlVHlwZSwgZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvLnN5bGxhYmxlKTsKCiAgICAgIC8vIEluc2VydCBhZnRlciBwb3NzaWJsZSBSZXBoYS4KICAgICAgdmFyIF9pNSA9IHN0YXJ0OwogICAgICB3aGlsZSAoX2k1IDwgZW5kICYmIGdseXBoc1tfaTVdLnNoYXBlckluZm8uY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuUmVwaGEpIHsKICAgICAgICBfaTUrKzsKICAgICAgfQoKICAgICAgZ2x5cGhzLnNwbGljZShfaTUrKywgMCwgZyk7CiAgICAgIGVuZCsrOwogICAgfQoKICAgIC8vIDEuIEZpbmQgYmFzZSBjb25zb25hbnQ6CiAgICAvLwogICAgLy8gVGhlIHNoYXBpbmcgZW5naW5lIGZpbmRzIHRoZSBiYXNlIGNvbnNvbmFudCBvZiB0aGUgc3lsbGFibGUsIHVzaW5nIHRoZQogICAgLy8gZm9sbG93aW5nIGFsZ29yaXRobTogc3RhcnRpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzeWxsYWJsZSwgbW92ZSBiYWNrd2FyZHMKICAgIC8vIHVudGlsIGEgY29uc29uYW50IGlzIGZvdW5kIHRoYXQgZG9lcyBub3QgaGF2ZSBhIGJlbG93LWJhc2Ugb3IgcG9zdC1iYXNlCiAgICAvLyBmb3JtIChwb3N0LWJhc2UgZm9ybXMgaGF2ZSB0byBmb2xsb3cgYmVsb3ctYmFzZSBmb3JtcyksIG9yIHRoYXQgaXMgbm90IGEKICAgIC8vIHByZS1iYXNlIHJlb3JkZXJpbmcgUmEsIG9yIGFycml2ZSBhdCB0aGUgZmlyc3QgY29uc29uYW50LiBUaGUgY29uc29uYW50CiAgICAvLyBzdG9wcGVkIGF0IHdpbGwgYmUgdGhlIGJhc2UuCgogICAgdmFyIGJhc2UgPSBlbmQ7CiAgICB2YXIgbGltaXQgPSBzdGFydDsKICAgIHZhciBoYXNSZXBoID0gZmFsc2U7CgogICAgLy8gSWYgdGhlIHN5bGxhYmxlIHN0YXJ0cyB3aXRoIFJhICsgSGFsYW50IChpbiBhIHNjcmlwdCB0aGF0IGhhcyBSZXBoKQogICAgLy8gYW5kIGhhcyBtb3JlIHRoYW4gb25lIGNvbnNvbmFudCwgUmEgaXMgZXhjbHVkZWQgZnJvbSBjYW5kaWRhdGVzIGZvcgogICAgLy8gYmFzZSBjb25zb25hbnRzLgogICAgaWYgKGluZGljQ29uZmlnLnJlcGhQb3MgIT09IFBPU0lUSU9OUy5SYV9Ub19CZWNvbWVfUmVwaCAmJiBmZWF0dXJlcy5ycGhmICYmIHN0YXJ0ICsgMyA8PSBlbmQgJiYgKGluZGljQ29uZmlnLnJlcGhNb2RlID09PSAnSW1wbGljaXQnICYmICFpc0pvaW5lcihnbHlwaHNbc3RhcnQgKyAyXSkgfHwgaW5kaWNDb25maWcucmVwaE1vZGUgPT09ICdFeHBsaWNpdCcgJiYgZ2x5cGhzW3N0YXJ0ICsgMl0uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gQ0FURUdPUklFUy5aV0opKSB7CiAgICAgIC8vIFNlZSBpZiBpdCBtYXRjaGVzIHRoZSAncnBoZicgZmVhdHVyZS4KICAgICAgdmFyIF9nID0gW2dseXBoc1tzdGFydF0uY29weSgpLCBnbHlwaHNbc3RhcnQgKyAxXS5jb3B5KCksIGdseXBoc1tzdGFydCArIDJdLmNvcHkoKV07CiAgICAgIGlmICh3b3VsZFN1YnN0aXR1dGUoX2cuc2xpY2UoMCwgMiksICdycGhmJykgfHwgaW5kaWNDb25maWcucmVwaE1vZGUgPT09ICdFeHBsaWNpdCcgJiYgd291bGRTdWJzdGl0dXRlKF9nLCAncnBoZicpKSB7CiAgICAgICAgbGltaXQgKz0gMjsKICAgICAgICB3aGlsZSAobGltaXQgPCBlbmQgJiYgaXNKb2luZXIoZ2x5cGhzW2xpbWl0XSkpIHsKICAgICAgICAgIGxpbWl0Kys7CiAgICAgICAgfQogICAgICAgIGJhc2UgPSBzdGFydDsKICAgICAgICBoYXNSZXBoID0gdHJ1ZTsKICAgICAgfQogICAgfSBlbHNlIGlmIChpbmRpY0NvbmZpZy5yZXBoTW9kZSA9PT0gJ0xvZ19SZXBoYScgJiYgZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSBDQVRFR09SSUVTLlJlcGhhKSB7CiAgICAgIGxpbWl0Kys7CiAgICAgIHdoaWxlIChsaW1pdCA8IGVuZCAmJiBpc0pvaW5lcihnbHlwaHNbbGltaXRdKSkgewogICAgICAgIGxpbWl0Kys7CiAgICAgIH0KICAgICAgYmFzZSA9IHN0YXJ0OwogICAgICBoYXNSZXBoID0gdHJ1ZTsKICAgIH0KCiAgICBzd2l0Y2ggKGluZGljQ29uZmlnLmJhc2VQb3MpIHsKICAgICAgY2FzZSAnTGFzdCc6CiAgICAgICAgewogICAgICAgICAgLy8gc3RhcnRpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzeWxsYWJsZSwgbW92ZSBiYWNrd2FyZHMKICAgICAgICAgIHZhciBfaTYgPSBlbmQ7CiAgICAgICAgICB2YXIgc2VlbkJlbG93ID0gZmFsc2U7CgogICAgICAgICAgZG8gewogICAgICAgICAgICB2YXIgX2luZm8gPSBnbHlwaHNbLS1faTZdLnNoYXBlckluZm87CgogICAgICAgICAgICAvLyB1bnRpbCBhIGNvbnNvbmFudCBpcyBmb3VuZAogICAgICAgICAgICBpZiAoaXNDb25zb25hbnQoZ2x5cGhzW19pNl0pKSB7CiAgICAgICAgICAgICAgLy8gdGhhdCBkb2VzIG5vdCBoYXZlIGEgYmVsb3ctYmFzZSBvciBwb3N0LWJhc2UgZm9ybQogICAgICAgICAgICAgIC8vIChwb3N0LWJhc2UgZm9ybXMgaGF2ZSB0byBmb2xsb3cgYmVsb3ctYmFzZSBmb3JtcyksCiAgICAgICAgICAgICAgaWYgKF9pbmZvLnBvc2l0aW9uICE9PSBQT1NJVElPTlMuQmVsb3dfQyAmJiAoX2luZm8ucG9zaXRpb24gIT09IFBPU0lUSU9OUy5Qb3N0X0MgfHwgc2VlbkJlbG93KSkgewogICAgICAgICAgICAgICAgYmFzZSA9IF9pNjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgLy8gb3IgdGhhdCBpcyBub3QgYSBwcmUtYmFzZSByZW9yZGVyaW5nIFJhLAogICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgLy8gSU1QTEVNRU5UQVRJT04gTk9URVM6CiAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAvLyBPdXIgcHJlLWJhc2UgcmVvcmRlcmluZyBSYSdzIGFyZSBtYXJrZWQgUE9TX1BPU1RfQywgc28gd2lsbCBiZSBza2lwcGVkCiAgICAgICAgICAgICAgLy8gYnkgdGhlIGxvZ2ljIGFib3ZlIGFscmVhZHkuCiAgICAgICAgICAgICAgLy8KCiAgICAgICAgICAgICAgLy8gb3IgYXJyaXZlIGF0IHRoZSBmaXJzdCBjb25zb25hbnQuIFRoZSBjb25zb25hbnQgc3RvcHBlZCBhdCB3aWxsCiAgICAgICAgICAgICAgLy8gYmUgdGhlIGJhc2UuCiAgICAgICAgICAgICAgaWYgKF9pbmZvLnBvc2l0aW9uID09PSBQT1NJVElPTlMuQmVsb3dfQykgewogICAgICAgICAgICAgICAgc2VlbkJlbG93ID0gdHJ1ZTsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGJhc2UgPSBfaTY7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnQgPCBfaTYgJiYgX2luZm8uY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuWldKICYmIGdseXBoc1tfaTYgLSAxXS5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSBDQVRFR09SSUVTLkgpIHsKICAgICAgICAgICAgICAvLyBBIFpXSiBhZnRlciBhIEhhbGFudCBzdG9wcyB0aGUgYmFzZSBzZWFyY2gsIGFuZCByZXF1ZXN0cyBhbiBleHBsaWNpdAogICAgICAgICAgICAgIC8vIGhhbGYgZm9ybS4KICAgICAgICAgICAgICAvLyBBIFpXSiBiZWZvcmUgYSBIYWxhbnQsIHJlcXVlc3RzIGEgc3Viam9pbmVkIGZvcm0gaW5zdGVhZCwgYW5kIGhlbmNlCiAgICAgICAgICAgICAgLy8gc2VhcmNoIGNvbnRpbnVlcy4gIFRoaXMgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCBmb3IgQmVuZ2FsaQogICAgICAgICAgICAgIC8vIHNlcXVlbmNlIFJhLEgsWWEgdGhhdCBzaG91bGQgZm9ybSBZYS1QaGFsYWEgYnkgc3Viam9pbmluZyBZYS4KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgfSB3aGlsZSAoX2k2ID4gbGltaXQpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgY2FzZSAnRmlyc3QnOgogICAgICAgIHsKICAgICAgICAgIC8vIFRoZSBmaXJzdCBjb25zb25hbnQgaXMgYWx3YXlzIHRoZSBiYXNlLgogICAgICAgICAgYmFzZSA9IHN0YXJ0OwoKICAgICAgICAgIC8vIE1hcmsgYWxsIHN1YnNlcXVlbnQgY29uc29uYW50cyBhcyBiZWxvdy4KICAgICAgICAgIGZvciAodmFyIF9pNyA9IGJhc2UgKyAxOyBfaTcgPCBlbmQ7IF9pNysrKSB7CiAgICAgICAgICAgIGlmIChpc0NvbnNvbmFudChnbHlwaHNbX2k3XSkpIHsKICAgICAgICAgICAgICBnbHlwaHNbX2k3XS5zaGFwZXJJbmZvLnBvc2l0aW9uID0gUE9TSVRJT05TLkJlbG93X0M7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gSWYgdGhlIHN5bGxhYmxlIHN0YXJ0cyB3aXRoIFJhICsgSGFsYW50IChpbiBhIHNjcmlwdCB0aGF0IGhhcyBSZXBoKQogICAgLy8gYW5kIGhhcyBtb3JlIHRoYW4gb25lIGNvbnNvbmFudCwgUmEgaXMgZXhjbHVkZWQgZnJvbSBjYW5kaWRhdGVzIGZvcgogICAgLy8gYmFzZSBjb25zb25hbnRzLgogICAgLy8KICAgIC8vICBPbmx5IGRvIHRoaXMgZm9yIHVuZm9yY2VkIFJlcGguIChpZS4gbm90IGZvciBSYSxILFpXSikKICAgIGlmIChoYXNSZXBoICYmIGJhc2UgPT09IHN0YXJ0ICYmIGxpbWl0IC0gYmFzZSA8PSAyKSB7CiAgICAgIGhhc1JlcGggPSBmYWxzZTsKICAgIH0KCiAgICAvLyAyLiBEZWNvbXBvc2UgYW5kIHJlb3JkZXIgTWF0cmFzOgogICAgLy8KICAgIC8vIEVhY2ggbWF0cmEgYW5kIGFueSBzeWxsYWJsZSBtb2RpZmllciBzaWduIGluIHRoZSBjbHVzdGVyIGFyZSBtb3ZlZCB0byB0aGUKICAgIC8vIGFwcHJvcHJpYXRlIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBjb25zb25hbnQocykgaW4gdGhlIGNsdXN0ZXIuIFRoZQogICAgLy8gc2hhcGluZyBlbmdpbmUgZGVjb21wb3NlcyB0d28tIG9yIHRocmVlLXBhcnQgbWF0cmFzIGludG8gdGhlaXIgY29uc3RpdHVlbnQKICAgIC8vIHBhcnRzIGJlZm9yZSBhbnkgcmVwb3NpdGlvbmluZy4gTWF0cmEgY2hhcmFjdGVycyBhcmUgY2xhc3NpZmllZCBieSB3aGljaAogICAgLy8gY29uc29uYW50IGluIGEgY29uanVuY3QgdGhleSBoYXZlIGFmZmluaXR5IGZvciBhbmQgYXJlIHJlb3JkZXJlZCB0byB0aGUKICAgIC8vIGZvbGxvd2luZyBwb3NpdGlvbnM6CiAgICAvLwogICAgLy8gICBvIEJlZm9yZSBmaXJzdCBoYWxmIGZvcm0gaW4gdGhlIHN5bGxhYmxlCiAgICAvLyAgIG8gQWZ0ZXIgc3Viam9pbmVkIGNvbnNvbmFudHMKICAgIC8vICAgbyBBZnRlciBwb3N0LWZvcm0gY29uc29uYW50CiAgICAvLyAgIG8gQWZ0ZXIgbWFpbiBjb25zb25hbnQgKGZvciBhYm92ZSBtYXJrcykKICAgIC8vCiAgICAvLyBJTVBMRU1FTlRBVElPTiBOT1RFUzoKICAgIC8vCiAgICAvLyBUaGUgbm9ybWFsaXplKCkgcm91dGluZSBoYXMgYWxyZWFkeSBkZWNvbXBvc2VkIG1hdHJhcyBmb3IgdXMsIHNvIHdlIGRvbid0CiAgICAvLyBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoYXQuCgogICAgLy8gMy4gIFJlb3JkZXIgbWFya3MgdG8gY2Fub25pY2FsIG9yZGVyOgogICAgLy8KICAgIC8vIEFkamFjZW50IG51a3RhIGFuZCBoYWxhbnQgb3IgbnVrdGEgYW5kIHZlZGljIHNpZ24gYXJlIGFsd2F5cyByZXBvc2l0aW9uZWQKICAgIC8vIGlmIG5lY2Vzc2FyeSwgc28gdGhhdCB0aGUgbnVrdGEgaXMgZmlyc3QuCiAgICAvLwogICAgLy8gSU1QTEVNRU5UQVRJT04gTk9URVM6CiAgICAvLwogICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyB0aGlzOiB0aGUgbm9ybWFsaXplKCkgcm91dGluZSBhbHJlYWR5IGRpZCB0aGlzIGZvciB1cy4KCiAgICAvLyBSZW9yZGVyIGNoYXJhY3RlcnMKCiAgICBmb3IgKHZhciBfaTggPSBzdGFydDsgX2k4IDwgYmFzZTsgX2k4KyspIHsKICAgICAgdmFyIF9pbmZvMiA9IGdseXBoc1tfaThdLnNoYXBlckluZm87CiAgICAgIF9pbmZvMi5wb3NpdGlvbiA9IE1hdGgubWluKFBPU0lUSU9OUy5QcmVfQywgX2luZm8yLnBvc2l0aW9uKTsKICAgIH0KCiAgICBpZiAoYmFzZSA8IGVuZCkgewogICAgICBnbHlwaHNbYmFzZV0uc2hhcGVySW5mby5wb3NpdGlvbiA9IFBPU0lUSU9OUy5CYXNlX0M7CiAgICB9CgogICAgLy8gTWFyayBmaW5hbCBjb25zb25hbnRzLiAgQSBmaW5hbCBjb25zb25hbnQgaXMgb25lIGFwcGVhcmluZyBhZnRlciBhIG1hdHJhLAogICAgLy8gbGlrZSBpbiBLaG1lci4KICAgIGZvciAodmFyIF9pOSA9IGJhc2UgKyAxOyBfaTkgPCBlbmQ7IF9pOSsrKSB7CiAgICAgIGlmIChnbHlwaHNbX2k5XS5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSBDQVRFR09SSUVTLk0pIHsKICAgICAgICBmb3IgKHZhciBqID0gX2k5ICsgMTsgaiA8IGVuZDsgaisrKSB7CiAgICAgICAgICBpZiAoaXNDb25zb25hbnQoZ2x5cGhzW2pdKSkgewogICAgICAgICAgICBnbHlwaHNbal0uc2hhcGVySW5mby5wb3NpdGlvbiA9IFBPU0lUSU9OUy5GaW5hbF9DOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KCiAgICAvLyBIYW5kbGUgYmVnaW5uaW5nIFJhCiAgICBpZiAoaGFzUmVwaCkgewogICAgICBnbHlwaHNbc3RhcnRdLnNoYXBlckluZm8ucG9zaXRpb24gPSBQT1NJVElPTlMuUmFfVG9fQmVjb21lX1JlcGg7CiAgICB9CgogICAgLy8gRm9yIG9sZC1zdHlsZSBJbmRpYyBzY3JpcHQgdGFncywgbW92ZSB0aGUgZmlyc3QgcG9zdC1iYXNlIEhhbGFudCBhZnRlcgogICAgLy8gbGFzdCBjb25zb25hbnQuCiAgICAvLwogICAgLy8gUmVwb3J0cyBzdWdnZXN0IHRoYXQgaW4gc29tZSBzY3JpcHRzIFVuaXNjcmliZSBkb2VzIHRoaXMgb25seSBpZiB0aGVyZQogICAgLy8gaXMgKm5vdCogYSBIYWxhbnQgYWZ0ZXIgbGFzdCBjb25zb25hbnQgYWxyZWFkeSAoZWcuIEthbm5hZGEpLCB3aGlsZSBpdAogICAgLy8gZG9lcyBpdCB1bmNvbmRpdGlvbmFsbHkgaW4gb3RoZXIgc2NyaXB0cyAoZWcuIE1hbGF5YWxhbSkuICBXZSBkb24ndAogICAgLy8gY3VycmVudGx5IGtub3cgYWJvdXQgb3RoZXIgc2NyaXB0cywgc28gd2Ugc2luZ2xlIG91dCBNYWxheWFsYW0gZm9yIG5vdy4KICAgIC8vCiAgICAvLyBLYW5uYWRhIHRlc3QgY2FzZToKICAgIC8vIFUrMEM5QSxVKzBDQ0QsVSswQzlBLFUrMENDRAogICAgLy8gV2l0aCBzb21lIHZlcnNpb25zIG9mIExvaGl0IEthbm5hZGEuCiAgICAvLyBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD01OTExOAogICAgLy8KICAgIC8vIE1hbGF5YWxhbSB0ZXN0IGNhc2U6CiAgICAvLyBVKzBEMzgsVSswRDRELFUrMEQzMSxVKzBENEQsVSswRDMxLFUrMEQ0RAogICAgLy8gV2l0aCBsb2hpdC10dGYtMjAxMjExMjIvTG9oaXQtTWFsYXlhbGFtLnR0ZgogICAgaWYgKHBsYW4uaXNPbGRTcGVjKSB7CiAgICAgIHZhciBkaXNhbGxvd0RvdWJsZUhhbGFudHMgPSBwbGFuLnVuaWNvZGVTY3JpcHQgIT09ICdNYWxheWFsYW0nOwogICAgICBmb3IgKHZhciBfaTEwID0gYmFzZSArIDE7IF9pMTAgPCBlbmQ7IF9pMTArKykgewogICAgICAgIGlmIChnbHlwaHNbX2kxMF0uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gQ0FURUdPUklFUy5IKSB7CiAgICAgICAgICB2YXIgX2ogPSB2b2lkIDA7CiAgICAgICAgICBmb3IgKF9qID0gZW5kIC0gMTsgX2ogPiBfaTEwOyBfai0tKSB7CiAgICAgICAgICAgIGlmIChpc0NvbnNvbmFudChnbHlwaHNbX2pdKSB8fCBkaXNhbGxvd0RvdWJsZUhhbGFudHMgJiYgZ2x5cGhzW19qXS5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSBDQVRFR09SSUVTLkgpIHsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGlmIChnbHlwaHNbX2pdLnNoYXBlckluZm8uY2F0ZWdvcnkgIT09IENBVEVHT1JJRVMuSCAmJiBfaiA+IF9pMTApIHsKICAgICAgICAgICAgLy8gTW92ZSBIYWxhbnQgdG8gYWZ0ZXIgbGFzdCBjb25zb25hbnQuCiAgICAgICAgICAgIHZhciB0ID0gZ2x5cGhzW19pMTBdOwogICAgICAgICAgICBnbHlwaHMuc3BsaWNlLmFwcGx5KGdseXBocywgW19pMTAsIDBdLmNvbmNhdChnbHlwaHMuc3BsaWNlKF9pMTAgKyAxLCBfaiAtIF9pMTApKSk7CiAgICAgICAgICAgIGdseXBoc1tfal0gPSB0OwogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIEF0dGFjaCBtaXNjIG1hcmtzIHRvIHByZXZpb3VzIGNoYXIgdG8gbW92ZSB3aXRoIHRoZW0uCiAgICB2YXIgbGFzdFBvcyA9IFBPU0lUSU9OUy5TdGFydDsKICAgIGZvciAodmFyIF9pMTEgPSBzdGFydDsgX2kxMSA8IGVuZDsgX2kxMSsrKSB7CiAgICAgIHZhciBfaW5mbzMgPSBnbHlwaHNbX2kxMV0uc2hhcGVySW5mbzsKICAgICAgaWYgKF9pbmZvMy5jYXRlZ29yeSAmIChKT0lORVJfRkxBR1MgfCBDQVRFR09SSUVTLk4gfCBDQVRFR09SSUVTLlJTIHwgQ0FURUdPUklFUy5DTSB8IEhBTEFOVF9PUl9DT0VOR19GTEFHUyAmIF9pbmZvMy5jYXRlZ29yeSkpIHsKICAgICAgICBfaW5mbzMucG9zaXRpb24gPSBsYXN0UG9zOwogICAgICAgIGlmIChfaW5mbzMuY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuSCAmJiBfaW5mbzMucG9zaXRpb24gPT09IFBPU0lUSU9OUy5QcmVfTSkgewogICAgICAgICAgLy8gVW5pc2NyaWJlIGRvZXNuJ3QgbW92ZSB0aGUgSGFsYW50IHdpdGggTGVmdCBNYXRyYS4KICAgICAgICAgIC8vIFRFU1Q6IFUrMDkyQixVKzA5M0YsVSswOTRERQogICAgICAgICAgLy8gV2UgZm9sbG93LiAgVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHRoZSBTaW5oYWxhCiAgICAgICAgICAvLyBVKzBEREEgc3BsaXQgbWF0cmEgc2luY2UgaXQgZGVjb21wb3NlcyB0byBVKzBERDksVSswRENBCiAgICAgICAgICAvLyB3aGVyZSBVKzBERDkgaXMgYSBsZWZ0IG1hdHJhIGFuZCBVKzBEQ0EgaXMgdGhlIHZpcmFtYS4KICAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gbW92ZSB0aGUgdmlyYW1hIHdpdGggdGhlIGxlZnQgbWF0cmEuCiAgICAgICAgICAvLyBURVNUOiBVKzBEOUEsVSswRERBCiAgICAgICAgICBmb3IgKHZhciBfajIgPSBfaTExOyBfajIgPiBzdGFydDsgX2oyLS0pIHsKICAgICAgICAgICAgaWYgKGdseXBoc1tfajIgLSAxXS5zaGFwZXJJbmZvLnBvc2l0aW9uICE9PSBQT1NJVElPTlMuUHJlX00pIHsKICAgICAgICAgICAgICBfaW5mbzMucG9zaXRpb24gPSBnbHlwaHNbX2oyIC0gMV0uc2hhcGVySW5mby5wb3NpdGlvbjsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIGlmIChfaW5mbzMucG9zaXRpb24gIT09IFBPU0lUSU9OUy5TTVZEKSB7CiAgICAgICAgbGFzdFBvcyA9IF9pbmZvMy5wb3NpdGlvbjsKICAgICAgfQogICAgfQoKICAgIC8vIEZvciBwb3N0LWJhc2UgY29uc29uYW50cyBsZXQgdGhlbSBvd24gYW55dGhpbmcgYmVmb3JlIHRoZW0KICAgIC8vIHNpbmNlIHRoZSBsYXN0IGNvbnNvbmFudCBvciBtYXRyYS4KICAgIHZhciBsYXN0ID0gYmFzZTsKICAgIGZvciAodmFyIF9pMTIgPSBiYXNlICsgMTsgX2kxMiA8IGVuZDsgX2kxMisrKSB7CiAgICAgIGlmIChpc0NvbnNvbmFudChnbHlwaHNbX2kxMl0pKSB7CiAgICAgICAgZm9yICh2YXIgX2ozID0gbGFzdCArIDE7IF9qMyA8IF9pMTI7IF9qMysrKSB7CiAgICAgICAgICBpZiAoZ2x5cGhzW19qM10uc2hhcGVySW5mby5wb3NpdGlvbiA8IFBPU0lUSU9OUy5TTVZEKSB7CiAgICAgICAgICAgIGdseXBoc1tfajNdLnNoYXBlckluZm8ucG9zaXRpb24gPSBnbHlwaHNbX2kxMl0uc2hhcGVySW5mby5wb3NpdGlvbjsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbGFzdCA9IF9pMTI7CiAgICAgIH0gZWxzZSBpZiAoZ2x5cGhzW19pMTJdLnNoYXBlckluZm8uY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuTSkgewogICAgICAgIGxhc3QgPSBfaTEyOwogICAgICB9CiAgICB9CgogICAgdmFyIGFyciA9IGdseXBocy5zbGljZShzdGFydCwgZW5kKTsKICAgIGFyci5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7CiAgICAgIHJldHVybiBhLnNoYXBlckluZm8ucG9zaXRpb24gLSBiLnNoYXBlckluZm8ucG9zaXRpb247CiAgICB9KTsKICAgIGdseXBocy5zcGxpY2UuYXBwbHkoZ2x5cGhzLCBbc3RhcnQsIGFyci5sZW5ndGhdLmNvbmNhdChhcnIpKTsKCiAgICAvLyBGaW5kIGJhc2UgYWdhaW4KICAgIGZvciAodmFyIF9pMTMgPSBzdGFydDsgX2kxMyA8IGVuZDsgX2kxMysrKSB7CiAgICAgIGlmIChnbHlwaHNbX2kxM10uc2hhcGVySW5mby5wb3NpdGlvbiA9PT0gUE9TSVRJT05TLkJhc2VfQykgewogICAgICAgIGJhc2UgPSBfaTEzOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CgogICAgLy8gU2V0dXAgZmVhdHVyZXMgbm93CgogICAgLy8gUmVwaAogICAgZm9yICh2YXIgX2kxNCA9IHN0YXJ0OyBfaTE0IDwgZW5kICYmIGdseXBoc1tfaTE0XS5zaGFwZXJJbmZvLnBvc2l0aW9uID09PSBQT1NJVElPTlMuUmFfVG9fQmVjb21lX1JlcGg7IF9pMTQrKykgewogICAgICBnbHlwaHNbX2kxNF0uZmVhdHVyZXMucnBoZiA9IHRydWU7CiAgICB9CgogICAgLy8gUHJlLWJhc2UKICAgIHZhciBibHdmID0gIXBsYW4uaXNPbGRTcGVjICYmIGluZGljQ29uZmlnLmJsd2ZNb2RlID09PSAnUHJlX0FuZF9Qb3N0JzsKICAgIGZvciAodmFyIF9pMTUgPSBzdGFydDsgX2kxNSA8IGJhc2U7IF9pMTUrKykgewogICAgICBnbHlwaHNbX2kxNV0uZmVhdHVyZXMuaGFsZiA9IHRydWU7CiAgICAgIGlmIChibHdmKSB7CiAgICAgICAgZ2x5cGhzW19pMTVdLmZlYXR1cmVzLmJsd2YgPSB0cnVlOwogICAgICB9CiAgICB9CgogICAgLy8gUG9zdC1iYXNlCiAgICBmb3IgKHZhciBfaTE2ID0gYmFzZSArIDE7IF9pMTYgPCBlbmQ7IF9pMTYrKykgewogICAgICBnbHlwaHNbX2kxNl0uZmVhdHVyZXMuYWJ2ZiA9IHRydWU7CiAgICAgIGdseXBoc1tfaTE2XS5mZWF0dXJlcy5wc3RmID0gdHJ1ZTsKICAgICAgZ2x5cGhzW19pMTZdLmZlYXR1cmVzLmJsd2YgPSB0cnVlOwogICAgfQoKICAgIGlmIChwbGFuLmlzT2xkU3BlYyAmJiBwbGFuLnVuaWNvZGVTY3JpcHQgPT09ICdEZXZhbmFnYXJpJykgewogICAgICAvLyBPbGQtc3BlYyBleWUtbGFzaCBSYSBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nLiAgRnJvbSB0aGUKICAgICAgLy8gc3BlYzoKICAgICAgLy8KICAgICAgLy8gIlRoZSBmZWF0dXJlICdiZWxvdy1iYXNlIGZvcm0nIGlzIGFwcGxpZWQgdG8gY29uc29uYW50cwogICAgICAvLyBoYXZpbmcgYmVsb3ctYmFzZSBmb3JtcyBhbmQgZm9sbG93aW5nIHRoZSBiYXNlIGNvbnNvbmFudC4KICAgICAgLy8gVGhlIGV4Y2VwdGlvbiBpcyB2YXR0dSwgd2hpY2ggbWF5IGFwcGVhciBiZWxvdyBoYWxmIGZvcm1zCiAgICAgIC8vIGFzIHdlbGwgYXMgYmVsb3cgdGhlIGJhc2UgZ2x5cGguIFRoZSBmZWF0dXJlICdiZWxvdy1iYXNlCiAgICAgIC8vIGZvcm0nIHdpbGwgYmUgYXBwbGllZCB0byBhbGwgc3VjaCBvY2N1cnJlbmNlcyBvZiBSYSBhcyB3ZWxsLiIKICAgICAgLy8KICAgICAgLy8gVGVzdCBjYXNlOiBVKzA5MjQsVSswOTRELFUrMDkzMCxVKzA5NGQsVSswOTE1CiAgICAgIC8vIHdpdGggU2Fuc2tyaXQgMjAwMyBmb250LgogICAgICAvLwogICAgICAvLyBIb3dldmVyLCBub3RlIHRoYXQgUmEsSGFsYW50LFpXSiBpcyB0aGUgY29ycmVjdCB3YXkgdG8KICAgICAgLy8gcmVxdWVzdCBleWVsYXNoIGZvcm0gb2YgUmEsIHNvIHdlIHdvdWxkYm4ndCBpbmhpYml0IGl0CiAgICAgIC8vIGluIHRoYXQgc2VxdWVuY2UuCiAgICAgIC8vCiAgICAgIC8vIFRlc3QgY2FzZTogVSswOTI0LFUrMDk0RCxVKzA5MzAsVSswOTRkLFUrMjAwRCxVKzA5MTUKICAgICAgZm9yICh2YXIgX2kxNyA9IHN0YXJ0OyBfaTE3ICsgMSA8IGJhc2U7IF9pMTcrKykgewogICAgICAgIGlmIChnbHlwaHNbX2kxN10uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gQ0FURUdPUklFUy5SYSAmJiBnbHlwaHNbX2kxNyArIDFdLnNoYXBlckluZm8uY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuSCAmJiAoX2kxNyArIDEgPT09IGJhc2UgfHwgZ2x5cGhzW19pMTcgKyAyXS5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSBDQVRFR09SSUVTLlpXSikpIHsKICAgICAgICAgIGdseXBoc1tfaTE3XS5mZWF0dXJlcy5ibHdmID0gdHJ1ZTsKICAgICAgICAgIGdseXBoc1tfaTE3ICsgMV0uZmVhdHVyZXMuYmx3ZiA9IHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgdmFyIHByZWZMZW4gPSAyOwogICAgaWYgKGZlYXR1cmVzLnByZWYgJiYgYmFzZSArIHByZWZMZW4gPCBlbmQpIHsKICAgICAgLy8gRmluZCBhIEhhbGFudCxSYSBzZXF1ZW5jZSBhbmQgbWFyayBpdCBmb3IgcHJlLWJhc2UgcmVvcmRlcmluZyBwcm9jZXNzaW5nLgogICAgICBmb3IgKHZhciBfaTE4ID0gYmFzZSArIDE7IF9pMTggKyBwcmVmTGVuIC0gMSA8IGVuZDsgX2kxOCsrKSB7CiAgICAgICAgdmFyIF9nMiA9IFtnbHlwaHNbX2kxOF0uY29weSgpLCBnbHlwaHNbX2kxOCArIDFdLmNvcHkoKV07CiAgICAgICAgaWYgKHdvdWxkU3Vic3RpdHV0ZShfZzIsICdwcmVmJykpIHsKICAgICAgICAgIGZvciAodmFyIF9qNCA9IDA7IF9qNCA8IHByZWZMZW47IF9qNCsrKSB7CiAgICAgICAgICAgIGdseXBoc1tfaTE4KytdLmZlYXR1cmVzLnByZWYgPSB0cnVlOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIE1hcmsgdGhlIHN1YnNlcXVlbnQgc3R1ZmYgd2l0aCAnY2ZhcicuICBVc2VkIGluIEtobWVyLgogICAgICAgICAgLy8gUmVhZCB0aGUgZmVhdHVyZSBzcGVjLgogICAgICAgICAgLy8gVGhpcyBhbGxvd3MgZGlzdGluZ3Vpc2hpbmcgdGhlIGZvbGxvd2luZyBjYXNlcyB3aXRoIE1TIEtobWVyIGZvbnRzOgogICAgICAgICAgLy8gVSsxNzg0LFUrMTdEMixVKzE3OUEsVSsxN0QyLFUrMTc4MgogICAgICAgICAgLy8gVSsxNzg0LFUrMTdEMixVKzE3ODIsVSsxN0QyLFUrMTc5QQogICAgICAgICAgaWYgKGZlYXR1cmVzLmNmYXIpIHsKICAgICAgICAgICAgZm9yICg7IF9pMTggPCBlbmQ7IF9pMTgrKykgewogICAgICAgICAgICAgIGdseXBoc1tfaTE4XS5mZWF0dXJlcy5jZmFyID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIEFwcGx5IFpXSi9aV05KIGVmZmVjdHMKICAgIGZvciAodmFyIF9pMTkgPSBzdGFydCArIDE7IF9pMTkgPCBlbmQ7IF9pMTkrKykgewogICAgICBpZiAoaXNKb2luZXIoZ2x5cGhzW19pMTldKSkgewogICAgICAgIHZhciBub25Kb2luZXIgPSBnbHlwaHNbX2kxOV0uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gQ0FURUdPUklFUy5aV05KOwogICAgICAgIHZhciBfajUgPSBfaTE5OwoKICAgICAgICBkbyB7CiAgICAgICAgICBfajUtLTsKCiAgICAgICAgICAvLyBaV0ovWldOSiBzaG91bGQgZGlzYWJsZSBDSkNULiAgVGhleSBkbyB0aGF0IGJ5IHNpbXBseQogICAgICAgICAgLy8gYmVpbmcgdGhlcmUsIHNpbmNlIHdlIGRvbid0IHNraXAgdGhlbSBmb3IgdGhlIENKQ1QKICAgICAgICAgIC8vIGZlYXR1cmUgKGllLiBGX01BTlVBTF9aV0opCgogICAgICAgICAgLy8gQSBaV05KIGRpc2FibGVzIEhBTEYuCiAgICAgICAgICBpZiAobm9uSm9pbmVyKSB7CiAgICAgICAgICAgIGRlbGV0ZSBnbHlwaHNbX2o1XS5mZWF0dXJlcy5oYWxmOwogICAgICAgICAgfQogICAgICAgIH0gd2hpbGUgKF9qNSA+IHN0YXJ0ICYmICFpc0NvbnNvbmFudChnbHlwaHNbX2o1XSkpOwogICAgICB9CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBmaW5hbFJlb3JkZXJpbmcoZm9udCwgZ2x5cGhzLCBwbGFuKSB7CiAgdmFyIGluZGljQ29uZmlnID0gcGxhbi5pbmRpY0NvbmZpZzsKICB2YXIgZmVhdHVyZXMgPSBmb250Ll9sYXlvdXRFbmdpbmUuZW5naW5lLkdTVUJQcm9jZXNzb3IuZmVhdHVyZXM7CgogIGZvciAodmFyIHN0YXJ0ID0gMCwgZW5kID0gbmV4dFN5bGxhYmxlKGdseXBocywgMCk7IHN0YXJ0IDwgZ2x5cGhzLmxlbmd0aDsgc3RhcnQgPSBlbmQsIGVuZCA9IG5leHRTeWxsYWJsZShnbHlwaHMsIHN0YXJ0KSkgewogICAgLy8gNC4gRmluYWwgcmVvcmRlcmluZzoKICAgIC8vCiAgICAvLyBBZnRlciB0aGUgbG9jYWxpemVkIGZvcm1zIGFuZCBiYXNpYyBzaGFwaW5nIGZvcm1zIEdTVUIgZmVhdHVyZXMgaGF2ZSBiZWVuCiAgICAvLyBhcHBsaWVkIChzZWUgYmVsb3cpLCB0aGUgc2hhcGluZyBlbmdpbmUgcGVyZm9ybXMgc29tZSBmaW5hbCBnbHlwaAogICAgLy8gcmVvcmRlcmluZyBiZWZvcmUgYXBwbHlpbmcgYWxsIHRoZSByZW1haW5pbmcgZm9udCBmZWF0dXJlcyB0byB0aGUgZW50aXJlCiAgICAvLyBjbHVzdGVyLgoKICAgIHZhciB0cnlQcmVmID0gISFmZWF0dXJlcy5wcmVmOwoKICAgIC8vIEZpbmQgYmFzZSBhZ2FpbgogICAgdmFyIGJhc2UgPSBzdGFydDsKICAgIGZvciAoOyBiYXNlIDwgZW5kOyBiYXNlKyspIHsKICAgICAgaWYgKGdseXBoc1tiYXNlXS5zaGFwZXJJbmZvLnBvc2l0aW9uID49IFBPU0lUSU9OUy5CYXNlX0MpIHsKICAgICAgICBpZiAodHJ5UHJlZiAmJiBiYXNlICsgMSA8IGVuZCkgewogICAgICAgICAgZm9yICh2YXIgaSA9IGJhc2UgKyAxOyBpIDwgZW5kOyBpKyspIHsKICAgICAgICAgICAgaWYgKGdseXBoc1tpXS5mZWF0dXJlcy5wcmVmKSB7CiAgICAgICAgICAgICAgaWYgKCEoZ2x5cGhzW2ldLnN1YnN0aXR1dGVkICYmIGdseXBoc1tpXS5pc0xpZ2F0ZWQgJiYgIWdseXBoc1tpXS5pc011bHRpcGxpZWQpKSB7CiAgICAgICAgICAgICAgICAvLyBPaywgdGhpcyB3YXMgYSAncHJlZicgY2FuZGlkYXRlIGJ1dCBkaWRuJ3QgZm9ybSBhbnkuCiAgICAgICAgICAgICAgICAvLyBCYXNlIGlzIGFyb3VuZCBoZXJlLi4uCiAgICAgICAgICAgICAgICBiYXNlID0gaTsKICAgICAgICAgICAgICAgIHdoaWxlIChiYXNlIDwgZW5kICYmIGlzSGFsYW50T3JDb2VuZyhnbHlwaHNbYmFzZV0pKSB7CiAgICAgICAgICAgICAgICAgIGJhc2UrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGdseXBoc1tiYXNlXS5zaGFwZXJJbmZvLnBvc2l0aW9uID0gUE9TSVRJT05TLkJBU0VfQzsKICAgICAgICAgICAgICAgIHRyeVByZWYgPSBmYWxzZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIEZvciBNYWxheWFsYW0sIHNraXAgb3ZlciB1bmZvcm1lZCBiZWxvdy0gKGJ1dCBOT1QgcG9zdC0pIGZvcm1zLgogICAgICAgIGlmIChwbGFuLnVuaWNvZGVTY3JpcHQgPT09ICdNYWxheWFsYW0nKSB7CiAgICAgICAgICBmb3IgKHZhciBfaTIwID0gYmFzZSArIDE7IF9pMjAgPCBlbmQ7IF9pMjArKykgewogICAgICAgICAgICB3aGlsZSAoX2kyMCA8IGVuZCAmJiBpc0pvaW5lcihnbHlwaHNbX2kyMF0pKSB7CiAgICAgICAgICAgICAgX2kyMCsrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoX2kyMCA9PT0gZW5kIHx8ICFpc0hhbGFudE9yQ29lbmcoZ2x5cGhzW19pMjBdKSkgewogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBfaTIwKys7IC8vIFNraXAgaGFsYW50LgogICAgICAgICAgICB3aGlsZSAoX2kyMCA8IGVuZCAmJiBpc0pvaW5lcihnbHlwaHNbX2kyMF0pKSB7CiAgICAgICAgICAgICAgX2kyMCsrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoX2kyMCA8IGVuZCAmJiBpc0NvbnNvbmFudChnbHlwaHNbX2kyMF0pICYmIGdseXBoc1tfaTIwXS5zaGFwZXJJbmZvLnBvc2l0aW9uID09PSBQT1NJVElPTlMuQmVsb3dfQykgewogICAgICAgICAgICAgIGJhc2UgPSBfaTIwOwogICAgICAgICAgICAgIGdseXBoc1tiYXNlXS5zaGFwZXJJbmZvLnBvc2l0aW9uID0gUE9TSVRJT05TLkJhc2VfQzsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHN0YXJ0IDwgYmFzZSAmJiBnbHlwaHNbYmFzZV0uc2hhcGVySW5mby5wb3NpdGlvbiA+IFBPU0lUSU9OUy5CYXNlX0MpIHsKICAgICAgICAgIGJhc2UtLTsKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KCiAgICBpZiAoYmFzZSA9PT0gZW5kICYmIHN0YXJ0IDwgYmFzZSAmJiBnbHlwaHNbYmFzZSAtIDFdLnNoYXBlckluZm8uY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuWldKKSB7CiAgICAgIGJhc2UtLTsKICAgIH0KCiAgICBpZiAoYmFzZSA8IGVuZCkgewogICAgICB3aGlsZSAoc3RhcnQgPCBiYXNlICYmIGdseXBoc1tiYXNlXS5zaGFwZXJJbmZvLmNhdGVnb3J5ICYgKENBVEVHT1JJRVMuTiB8IEhBTEFOVF9PUl9DT0VOR19GTEFHUykpIHsKICAgICAgICBiYXNlLS07CiAgICAgIH0KICAgIH0KCiAgICAvLyBvIFJlb3JkZXIgbWF0cmFzOgogICAgLy8KICAgIC8vIElmIGEgcHJlLWJhc2UgbWF0cmEgY2hhcmFjdGVyIGhhZCBiZWVuIHJlb3JkZXJlZCBiZWZvcmUgYXBwbHlpbmcgYmFzaWMKICAgIC8vIGZlYXR1cmVzLCB0aGUgZ2x5cGggY2FuIGJlIG1vdmVkIGNsb3NlciB0byB0aGUgbWFpbiBjb25zb25hbnQgYmFzZWQgb24KICAgIC8vIHdoZXRoZXIgaGFsZi1mb3JtcyBoYWQgYmVlbiBmb3JtZWQuIEFjdHVhbCBwb3NpdGlvbiBmb3IgdGhlIG1hdHJhIGlzCiAgICAvLyBkZWZpbmVkIGFzIOKAnGFmdGVyIGxhc3Qgc3RhbmRhbG9uZSBoYWxhbnQgZ2x5cGgsIGFmdGVyIGluaXRpYWwgbWF0cmEKICAgIC8vIHBvc2l0aW9uIGFuZCBiZWZvcmUgdGhlIG1haW4gY29uc29uYW504oCdLiBJZiBaV0ogb3IgWldOSiBmb2xsb3cgdGhpcwogICAgLy8gaGFsYW50LCBwb3NpdGlvbiBpcyBtb3ZlZCBhZnRlciBpdC4KICAgIC8vCgogICAgaWYgKHN0YXJ0ICsgMSA8IGVuZCAmJiBzdGFydCA8IGJhc2UpIHsKICAgICAgLy8gT3RoZXJ3aXNlIHRoZXJlIGNhbid0IGJlIGFueSBwcmUtYmFzZSBtYXRyYSBjaGFyYWN0ZXJzLgogICAgICAvLyBJZiB3ZSBsb3N0IHRyYWNrIG9mIGJhc2UsIGFsYXMsIHBvc2l0aW9uIGJlZm9yZSBsYXN0IHRoaW5neS4KICAgICAgdmFyIG5ld1BvcyA9IGJhc2UgPT09IGVuZCA/IGJhc2UgLSAyIDogYmFzZSAtIDE7CgogICAgICAvLyBNYWxheWFsYW0gLyBUYW1pbCBkbyBub3QgaGF2ZSAiaGFsZiIgZm9ybXMgb3IgZXhwbGljaXQgdmlyYW1hIGZvcm1zLgogICAgICAvLyBUaGUgZ2x5cGhzIGZvcm1lZCBieSAnaGFsZicgYXJlIENoaWxsdXMgb3IgbGlnYXRlZCBleHBsaWNpdCB2aXJhbWFzLgogICAgICAvLyBXZSB3YW50IHRvIHBvc2l0aW9uIG1hdHJhIGFmdGVyIHRoZW0uCiAgICAgIGlmIChwbGFuLnVuaWNvZGVTY3JpcHQgIT09ICdNYWxheWFsYW0nICYmIHBsYW4udW5pY29kZVNjcmlwdCAhPT0gJ1RhbWlsJykgewogICAgICAgIHdoaWxlIChuZXdQb3MgPiBzdGFydCAmJiAhKGdseXBoc1tuZXdQb3NdLnNoYXBlckluZm8uY2F0ZWdvcnkgJiAoQ0FURUdPUklFUy5NIHwgSEFMQU5UX09SX0NPRU5HX0ZMQUdTKSkpIHsKICAgICAgICAgIG5ld1Bvcy0tOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgd2UgZm91bmQgbm8gSGFsYW50IHdlIGFyZSBkb25lLgogICAgICAgIC8vIE90aGVyd2lzZSBvbmx5IHByb2NlZWQgaWYgdGhlIEhhbGFudCBkb2VzCiAgICAgICAgLy8gbm90IGJlbG9uZyB0byB0aGUgTWF0cmEgaXRzZWxmIQogICAgICAgIGlmIChpc0hhbGFudE9yQ29lbmcoZ2x5cGhzW25ld1Bvc10pICYmIGdseXBoc1tuZXdQb3NdLnNoYXBlckluZm8ucG9zaXRpb24gIT09IFBPU0lUSU9OUy5QcmVfTSkgewogICAgICAgICAgLy8gSWYgWldKIG9yIFpXTkogZm9sbG93IHRoaXMgaGFsYW50LCBwb3NpdGlvbiBpcyBtb3ZlZCBhZnRlciBpdC4KICAgICAgICAgIGlmIChuZXdQb3MgKyAxIDwgZW5kICYmIGlzSm9pbmVyKGdseXBoc1tuZXdQb3MgKyAxXSkpIHsKICAgICAgICAgICAgbmV3UG9zKys7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIG5ld1BvcyA9IHN0YXJ0OyAvLyBObyBtb3ZlLgogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKHN0YXJ0IDwgbmV3UG9zICYmIGdseXBoc1tuZXdQb3NdLnNoYXBlckluZm8ucG9zaXRpb24gIT09IFBPU0lUSU9OUy5QcmVfTSkgewogICAgICAgIC8vIE5vdyBnbyBzZWUgaWYgdGhlcmUncyBhY3R1YWxseSBhbnkgbWF0cmFzLi4uCiAgICAgICAgZm9yICh2YXIgX2kyMSA9IG5ld1BvczsgX2kyMSA+IHN0YXJ0OyBfaTIxLS0pIHsKICAgICAgICAgIGlmIChnbHlwaHNbX2kyMSAtIDFdLnNoYXBlckluZm8ucG9zaXRpb24gPT09IFBPU0lUSU9OUy5QcmVfTSkgewogICAgICAgICAgICB2YXIgb2xkUG9zID0gX2kyMSAtIDE7CiAgICAgICAgICAgIGlmIChvbGRQb3MgPCBiYXNlICYmIGJhc2UgPD0gbmV3UG9zKSB7CiAgICAgICAgICAgICAgLy8gU2hvdWxkbid0IGFjdHVhbGx5IGhhcHBlbi4KICAgICAgICAgICAgICBiYXNlLS07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciB0bXAgPSBnbHlwaHNbb2xkUG9zXTsKICAgICAgICAgICAgZ2x5cGhzLnNwbGljZS5hcHBseShnbHlwaHMsIFtvbGRQb3MsIDBdLmNvbmNhdChnbHlwaHMuc3BsaWNlKG9sZFBvcyArIDEsIG5ld1BvcyAtIG9sZFBvcykpKTsKICAgICAgICAgICAgZ2x5cGhzW25ld1Bvc10gPSB0bXA7CgogICAgICAgICAgICBuZXdQb3MtLTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyBvIFJlb3JkZXIgcmVwaDoKICAgIC8vCiAgICAvLyBSZXBo4oCZcyBvcmlnaW5hbCBwb3NpdGlvbiBpcyBhbHdheXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3lsbGFibGUsCiAgICAvLyAoaS5lLiBpdCBpcyBub3QgcmVvcmRlcmVkIGF0IHRoZSBjaGFyYWN0ZXIgcmVvcmRlcmluZyBzdGFnZSkuIEhvd2V2ZXIsCiAgICAvLyBpdCB3aWxsIGJlIHJlb3JkZXJlZCBhY2NvcmRpbmcgdG8gdGhlIGJhc2ljLWZvcm1zIHNoYXBpbmcgcmVzdWx0cy4KICAgIC8vIFBvc3NpYmxlIHBvc2l0aW9ucyBmb3IgcmVwaCwgZGVwZW5kaW5nIG9uIHRoZSBzY3JpcHQsIGFyZTsgYWZ0ZXIgbWFpbiwKICAgIC8vIGJlZm9yZSBwb3N0LWJhc2UgY29uc29uYW50IGZvcm1zLCBhbmQgYWZ0ZXIgcG9zdC1iYXNlIGNvbnNvbmFudCBmb3Jtcy4KCiAgICAvLyBUd28gY2FzZXM6CiAgICAvLwogICAgLy8gLSBJZiByZXBoYSBpcyBlbmNvZGVkIGFzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyAoUmEsSCBvciBSYSxILFpXSiksIHRoZW4KICAgIC8vICAgd2Ugc2hvdWxkIG9ubHkgbW92ZSBpdCBpZiB0aGUgc2VxdWVuY2UgbGlnYXRlZCB0byB0aGUgcmVwaGEgZm9ybS4KICAgIC8vCiAgICAvLyAtIElmIHJlcGhhIGlzIGVuY29kZWQgc2VwYXJhdGVseSBhbmQgaW4gdGhlIGxvZ2ljYWwgcG9zaXRpb24sIHdlIHNob3VsZCBvbmx5CiAgICAvLyAgIG1vdmUgaXQgaWYgaXQgZGlkIE5PVCBsaWdhdGUuICBJZiBpdCBsaWdhdGVkLCBpdCdzIHByb2JhYmx5IHRoZSBmb250IHRyeWluZwogICAgLy8gICB0byBtYWtlIGl0IHdvcmsgd2l0aG91dCB0aGUgcmVvcmRlcmluZy4KICAgIGlmIChzdGFydCArIDEgPCBlbmQgJiYgZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvLnBvc2l0aW9uID09PSBQT1NJVElPTlMuUmFfVG9fQmVjb21lX1JlcGggJiYgZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSBDQVRFR09SSUVTLlJlcGhhICE9PSAoZ2x5cGhzW3N0YXJ0XS5pc0xpZ2F0ZWQgJiYgIWdseXBoc1tzdGFydF0uaXNNdWx0aXBsaWVkKSkgewogICAgICB2YXIgbmV3UmVwaFBvcyA9IHZvaWQgMDsKICAgICAgdmFyIHJlcGhQb3MgPSBpbmRpY0NvbmZpZy5yZXBoUG9zOwogICAgICB2YXIgZm91bmQgPSBmYWxzZTsKCiAgICAgIC8vIDEuIElmIHJlcGggc2hvdWxkIGJlIHBvc2l0aW9uZWQgYWZ0ZXIgcG9zdC1iYXNlIGNvbnNvbmFudCBmb3JtcywKICAgICAgLy8gICAgcHJvY2VlZCB0byBzdGVwIDUuCiAgICAgIGlmIChyZXBoUG9zICE9PSBQT1NJVElPTlMuQWZ0ZXJfUG9zdCkgewogICAgICAgIC8vICAyLiBJZiB0aGUgcmVwaCByZXBvc2l0aW9uaW5nIGNsYXNzIGlzIG5vdCBhZnRlciBwb3N0LWJhc2U6IHRhcmdldAogICAgICAgIC8vICAgICBwb3NpdGlvbiBpcyBhZnRlciB0aGUgZmlyc3QgZXhwbGljaXQgaGFsYW50IGdseXBoIGJldHdlZW4gdGhlCiAgICAgICAgLy8gICAgIGZpcnN0IHBvc3QtcmVwaCBjb25zb25hbnQgYW5kIGxhc3QgbWFpbiBjb25zb25hbnQuIElmIFpXSiBvciBaV05KCiAgICAgICAgLy8gICAgIGFyZSBmb2xsb3dpbmcgdGhpcyBoYWxhbnQsIHBvc2l0aW9uIGlzIG1vdmVkIGFmdGVyIGl0LiBJZiBzdWNoCiAgICAgICAgLy8gICAgIHBvc2l0aW9uIGlzIGZvdW5kLCB0aGlzIGlzIHRoZSB0YXJnZXQgcG9zaXRpb24uIE90aGVyd2lzZSwKICAgICAgICAvLyAgICAgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwLgogICAgICAgIC8vCiAgICAgICAgLy8gICAgIE5vdGU6IGluIG9sZC1pbXBsZW1lbnRhdGlvbiBmb250cywgd2hlcmUgY2xhc3NpZmljYXRpb25zIHdlcmUKICAgICAgICAvLyAgICAgZml4ZWQgaW4gc2hhcGluZyBlbmdpbmUsIHRoZXJlIHdhcyBubyBjYXNlIHdoZXJlIHJlcGggcG9zaXRpb24KICAgICAgICAvLyAgICAgd2lsbCBiZSBmb3VuZCBvbiB0aGlzIHN0ZXAuCiAgICAgICAgbmV3UmVwaFBvcyA9IHN0YXJ0ICsgMTsKICAgICAgICB3aGlsZSAobmV3UmVwaFBvcyA8IGJhc2UgJiYgIWlzSGFsYW50T3JDb2VuZyhnbHlwaHNbbmV3UmVwaFBvc10pKSB7CiAgICAgICAgICBuZXdSZXBoUG9zKys7CiAgICAgICAgfQoKICAgICAgICBpZiAobmV3UmVwaFBvcyA8IGJhc2UgJiYgaXNIYWxhbnRPckNvZW5nKGdseXBoc1tuZXdSZXBoUG9zXSkpIHsKICAgICAgICAgIC8vIC0+SWYgWldKIG9yIFpXTkogYXJlIGZvbGxvd2luZyB0aGlzIGhhbGFudCwgcG9zaXRpb24gaXMgbW92ZWQgYWZ0ZXIgaXQuCiAgICAgICAgICBpZiAobmV3UmVwaFBvcyArIDEgPCBiYXNlICYmIGlzSm9pbmVyKGdseXBoc1tuZXdSZXBoUG9zICsgMV0pKSB7CiAgICAgICAgICAgIG5ld1JlcGhQb3MrKzsKICAgICAgICAgIH0KCiAgICAgICAgICBmb3VuZCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyAzLiBJZiByZXBoIHNob3VsZCBiZSByZXBvc2l0aW9uZWQgYWZ0ZXIgdGhlIG1haW4gY29uc29uYW50OiBmaW5kIHRoZQogICAgICAgIC8vICAgIGZpcnN0IGNvbnNvbmFudCBub3QgbGlnYXRlZCB3aXRoIG1haW4sIG9yIGZpbmQgdGhlIGZpcnN0CiAgICAgICAgLy8gICAgY29uc29uYW50IHRoYXQgaXMgbm90IGEgcG90ZW50aWFsIHByZS1iYXNlIHJlb3JkZXJpbmcgUmEuCiAgICAgICAgaWYgKCFmb3VuZCAmJiByZXBoUG9zID09PSBQT1NJVElPTlMuQWZ0ZXJfTWFpbikgewogICAgICAgICAgbmV3UmVwaFBvcyA9IGJhc2U7CiAgICAgICAgICB3aGlsZSAobmV3UmVwaFBvcyArIDEgPCBlbmQgJiYgZ2x5cGhzW25ld1JlcGhQb3MgKyAxXS5zaGFwZXJJbmZvLnBvc2l0aW9uIDw9IFBPU0lUSU9OUy5BZnRlcl9NYWluKSB7CiAgICAgICAgICAgIG5ld1JlcGhQb3MrKzsKICAgICAgICAgIH0KCiAgICAgICAgICBmb3VuZCA9IG5ld1JlcGhQb3MgPCBlbmQ7CiAgICAgICAgfQoKICAgICAgICAvLyA0LiBJZiByZXBoIHNob3VsZCBiZSBwb3NpdGlvbmVkIGJlZm9yZSBwb3N0LWJhc2UgY29uc29uYW50LCBmaW5kCiAgICAgICAgLy8gICAgZmlyc3QgcG9zdC1iYXNlIGNsYXNzaWZpZWQgY29uc29uYW50IG5vdCBsaWdhdGVkIHdpdGggbWFpbi4gSWYgbm8KICAgICAgICAvLyAgICBjb25zb25hbnQgaXMgZm91bmQsIHRoZSB0YXJnZXQgcG9zaXRpb24gc2hvdWxkIGJlIGJlZm9yZSB0aGUKICAgICAgICAvLyAgICBmaXJzdCBtYXRyYSwgc3lsbGFibGUgbW9kaWZpZXIgc2lnbiBvciB2ZWRpYyBzaWduLgogICAgICAgIC8vCiAgICAgICAgLy8gVGhpcyBpcyBvdXIgdGFrZSBvbiB3aGF0IHN0ZXAgNCBpcyB0cnlpbmcgdG8gc2F5IChhbmQgZmFpbGluZywgQkFETFkpLgogICAgICAgIGlmICghZm91bmQgJiYgcmVwaFBvcyA9PT0gUE9TSVRJT05TLkFmdGVyX1N1YikgewogICAgICAgICAgbmV3UmVwaFBvcyA9IGJhc2U7CiAgICAgICAgICB3aGlsZSAobmV3UmVwaFBvcyArIDEgPCBlbmQgJiYgIShnbHlwaHNbbmV3UmVwaFBvcyArIDFdLnNoYXBlckluZm8ucG9zaXRpb24gJiAoUE9TSVRJT05TLlBvc3RfQyB8IFBPU0lUSU9OUy5BZnRlcl9Qb3N0IHwgUE9TSVRJT05TLlNNVkQpKSkgewogICAgICAgICAgICBuZXdSZXBoUG9zKys7CiAgICAgICAgICB9CgogICAgICAgICAgZm91bmQgPSBuZXdSZXBoUG9zIDwgZW5kOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gIDUuIElmIG5vIGNvbnNvbmFudCBpcyBmb3VuZCBpbiBzdGVwcyAzIG9yIDQsIG1vdmUgcmVwaCB0byBhIHBvc2l0aW9uCiAgICAgIC8vICAgICBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIGZpcnN0IHBvc3QtYmFzZSBtYXRyYSwgc3lsbGFibGUgbW9kaWZpZXIKICAgICAgLy8gICAgIHNpZ24gb3IgdmVkaWMgc2lnbiB0aGF0IGhhcyBhIHJlb3JkZXJpbmcgY2xhc3MgYWZ0ZXIgdGhlIGludGVuZGVkCiAgICAgIC8vICAgICByZXBoIHBvc2l0aW9uLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHJlb3JkZXJpbmcgcG9zaXRpb24gZm9yIHJlcGgKICAgICAgLy8gICAgIGlzIHBvc3QtbWFpbiwgaXQgd2lsbCBza2lwIGFib3ZlLWJhc2UgbWF0cmFzIHRoYXQgYWxzbyBoYXZlIGEKICAgICAgLy8gICAgIHBvc3QtbWFpbiBwb3NpdGlvbi4KICAgICAgaWYgKCFmb3VuZCkgewogICAgICAgIC8vIENvcGllZCBmcm9tIHN0ZXAgMi4KICAgICAgICBuZXdSZXBoUG9zID0gc3RhcnQgKyAxOwogICAgICAgIHdoaWxlIChuZXdSZXBoUG9zIDwgYmFzZSAmJiAhaXNIYWxhbnRPckNvZW5nKGdseXBoc1tuZXdSZXBoUG9zXSkpIHsKICAgICAgICAgIG5ld1JlcGhQb3MrKzsKICAgICAgICB9CgogICAgICAgIGlmIChuZXdSZXBoUG9zIDwgYmFzZSAmJiBpc0hhbGFudE9yQ29lbmcoZ2x5cGhzW25ld1JlcGhQb3NdKSkgewogICAgICAgICAgLy8gLT5JZiBaV0ogb3IgWldOSiBhcmUgZm9sbG93aW5nIHRoaXMgaGFsYW50LCBwb3NpdGlvbiBpcyBtb3ZlZCBhZnRlciBpdC4KICAgICAgICAgIGlmIChuZXdSZXBoUG9zICsgMSA8IGJhc2UgJiYgaXNKb2luZXIoZ2x5cGhzW25ld1JlcGhQb3MgKyAxXSkpIHsKICAgICAgICAgICAgbmV3UmVwaFBvcysrOwogICAgICAgICAgfQoKICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIDYuIE90aGVyd2lzZSwgcmVvcmRlciByZXBoIHRvIHRoZSBlbmQgb2YgdGhlIHN5bGxhYmxlLgogICAgICBpZiAoIWZvdW5kKSB7CiAgICAgICAgbmV3UmVwaFBvcyA9IGVuZCAtIDE7CiAgICAgICAgd2hpbGUgKG5ld1JlcGhQb3MgPiBzdGFydCAmJiBnbHlwaHNbbmV3UmVwaFBvc10uc2hhcGVySW5mby5wb3NpdGlvbiA9PT0gUE9TSVRJT05TLlNNVkQpIHsKICAgICAgICAgIG5ld1JlcGhQb3MtLTsKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBSZXBoIGlzIHRvIGJlIGVuZGluZyB1cCBhZnRlciBhIE1hdHJhLEhhbGFudCBzZXF1ZW5jZSwKICAgICAgICAvLyBwb3NpdGlvbiBpdCBiZWZvcmUgdGhhdCBIYWxhbnQgc28gaXQgY2FuIGludGVyYWN0IHdpdGggdGhlIE1hdHJhLgogICAgICAgIC8vIEhvd2V2ZXIsIGlmIGl0J3MgYSBwbGFpbiBDb25zb25hbnQsSGFsYW50IHdlIHNob3VsZG4ndCBkbyB0aGF0LgogICAgICAgIC8vIFVuaXNjcmliZSBkb2Vzbid0IGRvIHRoaXMuCiAgICAgICAgLy8gVEVTVDogVSswOTMwLFUrMDk0RCxVKzA5MTUsVSswOTRCLFUrMDk0RAogICAgICAgIGlmIChpc0hhbGFudE9yQ29lbmcoZ2x5cGhzW25ld1JlcGhQb3NdKSkgewogICAgICAgICAgZm9yICh2YXIgX2kyMiA9IGJhc2UgKyAxOyBfaTIyIDwgbmV3UmVwaFBvczsgX2kyMisrKSB7CiAgICAgICAgICAgIGlmIChnbHlwaHNbX2kyMl0uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gQ0FURUdPUklFUy5NKSB7CiAgICAgICAgICAgICAgbmV3UmVwaFBvcy0tOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CgogICAgICB2YXIgcmVwaCA9IGdseXBoc1tzdGFydF07CiAgICAgIGdseXBocy5zcGxpY2UuYXBwbHkoZ2x5cGhzLCBbc3RhcnQsIDBdLmNvbmNhdChnbHlwaHMuc3BsaWNlKHN0YXJ0ICsgMSwgbmV3UmVwaFBvcyAtIHN0YXJ0KSkpOwogICAgICBnbHlwaHNbbmV3UmVwaFBvc10gPSByZXBoOwoKICAgICAgaWYgKHN0YXJ0IDwgYmFzZSAmJiBiYXNlIDw9IG5ld1JlcGhQb3MpIHsKICAgICAgICBiYXNlLS07CiAgICAgIH0KICAgIH0KCiAgICAvLyBvIFJlb3JkZXIgcHJlLWJhc2UgcmVvcmRlcmluZyBjb25zb25hbnRzOgogICAgLy8KICAgIC8vIElmIGEgcHJlLWJhc2UgcmVvcmRlcmluZyBjb25zb25hbnQgaXMgZm91bmQsIHJlb3JkZXIgaXQgYWNjb3JkaW5nIHRvCiAgICAvLyB0aGUgZm9sbG93aW5nIHJ1bGVzOgogICAgaWYgKHRyeVByZWYgJiYgYmFzZSArIDEgPCBlbmQpIHsKICAgICAgZm9yICh2YXIgX2kyMyA9IGJhc2UgKyAxOyBfaTIzIDwgZW5kOyBfaTIzKyspIHsKICAgICAgICBpZiAoZ2x5cGhzW19pMjNdLmZlYXR1cmVzLnByZWYpIHsKICAgICAgICAgIC8vIDEuIE9ubHkgcmVvcmRlciBhIGdseXBoIHByb2R1Y2VkIGJ5IHN1YnN0aXR1dGlvbiBkdXJpbmcgYXBwbGljYXRpb24KICAgICAgICAgIC8vICAgIG9mIHRoZSA8cHJlZj4gZmVhdHVyZS4gKE5vdGUgdGhhdCBhIGZvbnQgbWF5IHNoYXBlIGEgUmEgY29uc29uYW50IHdpdGgKICAgICAgICAgIC8vICAgIHRoZSBmZWF0dXJlIGdlbmVyYWxseSBidXQgYmxvY2sgaXQgaW4gY2VydGFpbiBjb250ZXh0cy4pCgogICAgICAgICAgLy8gTm90ZTogV2UganVzdCBjaGVjayB0aGF0IHNvbWV0aGluZyBnb3Qgc3Vic3RpdHV0ZWQuICBXZSBkb24ndCBjaGVjayB0aGF0CiAgICAgICAgICAvLyB0aGUgPHByZWY+IGZlYXR1cmUgYWN0dWFsbHkgZGlkIGl0Li4uCiAgICAgICAgICAvLwogICAgICAgICAgLy8gUmVvcmRlciBwcmVmIG9ubHkgaWYgaXQgbGlnYXRlZC4KICAgICAgICAgIGlmIChnbHlwaHNbX2kyM10uaXNMaWdhdGVkICYmICFnbHlwaHNbX2kyM10uaXNNdWx0aXBsaWVkKSB7CiAgICAgICAgICAgIC8vIDIuIFRyeSB0byBmaW5kIGEgdGFyZ2V0IHBvc2l0aW9uIHRoZSBzYW1lIHdheSBhcyBmb3IgcHJlLWJhc2UgbWF0cmEuCiAgICAgICAgICAgIC8vICAgIElmIGl0IGlzIGZvdW5kLCByZW9yZGVyIHByZS1iYXNlIGNvbnNvbmFudCBnbHlwaC4KICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gMy4gSWYgcG9zaXRpb24gaXMgbm90IGZvdW5kLCByZW9yZGVyIGltbWVkaWF0ZWx5IGJlZm9yZSBtYWluCiAgICAgICAgICAgIC8vICAgIGNvbnNvbmFudC4KICAgICAgICAgICAgdmFyIF9uZXdQb3MgPSBiYXNlOwoKICAgICAgICAgICAgLy8gTWFsYXlhbGFtIC8gVGFtaWwgZG8gbm90IGhhdmUgImhhbGYiIGZvcm1zIG9yIGV4cGxpY2l0IHZpcmFtYSBmb3Jtcy4KICAgICAgICAgICAgLy8gVGhlIGdseXBocyBmb3JtZWQgYnkgJ2hhbGYnIGFyZSBDaGlsbHVzIG9yIGxpZ2F0ZWQgZXhwbGljaXQgdmlyYW1hcy4KICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBwb3NpdGlvbiBtYXRyYSBhZnRlciB0aGVtLgogICAgICAgICAgICBpZiAocGxhbi51bmljb2RlU2NyaXB0ICE9PSAnTWFsYXlhbGFtJyAmJiBwbGFuLnVuaWNvZGVTY3JpcHQgIT09ICdUYW1pbCcpIHsKICAgICAgICAgICAgICB3aGlsZSAoX25ld1BvcyA+IHN0YXJ0ICYmICEoZ2x5cGhzW19uZXdQb3MgLSAxXS5zaGFwZXJJbmZvLmNhdGVnb3J5ICYgKENBVEVHT1JJRVMuTSB8IEhBTEFOVF9PUl9DT0VOR19GTEFHUykpKSB7CiAgICAgICAgICAgICAgICBfbmV3UG9zLS07CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAvLyBJbiBLaG1lciBjb2VuZyBtb2RlbCwgYSBILFJhIGNhbiBnbyAqYWZ0ZXIqIG1hdHJhcy4gIElmIGl0IGdvZXMgYWZ0ZXIgYQogICAgICAgICAgICAgIC8vIHNwbGl0IG1hdHJhLCBpdCBzaG91bGQgYmUgcmVvcmRlcmVkIHRvICpiZWZvcmUqIHRoZSBsZWZ0IHBhcnQgb2Ygc3VjaCBtYXRyYS4KICAgICAgICAgICAgICBpZiAoX25ld1BvcyA+IHN0YXJ0ICYmIGdseXBoc1tfbmV3UG9zIC0gMV0uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gQ0FURUdPUklFUy5NKSB7CiAgICAgICAgICAgICAgICB2YXIgX29sZFBvczIgPSBfaTIzOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IGJhc2UgKyAxOyBqIDwgX29sZFBvczI7IGorKykgewogICAgICAgICAgICAgICAgICBpZiAoZ2x5cGhzW2pdLnNoYXBlckluZm8uY2F0ZWdvcnkgPT09IENBVEVHT1JJRVMuTSkgewogICAgICAgICAgICAgICAgICAgIF9uZXdQb3MtLTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKF9uZXdQb3MgPiBzdGFydCAmJiBpc0hhbGFudE9yQ29lbmcoZ2x5cGhzW19uZXdQb3MgLSAxXSkpIHsKICAgICAgICAgICAgICAvLyAtPiBJZiBaV0ogb3IgWldOSiBmb2xsb3cgdGhpcyBoYWxhbnQsIHBvc2l0aW9uIGlzIG1vdmVkIGFmdGVyIGl0LgogICAgICAgICAgICAgIGlmIChfbmV3UG9zIDwgZW5kICYmIGlzSm9pbmVyKGdseXBoc1tfbmV3UG9zXSkpIHsKICAgICAgICAgICAgICAgIF9uZXdQb3MrKzsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBfb2xkUG9zID0gX2kyMzsKICAgICAgICAgICAgdmFyIF90bXAgPSBnbHlwaHNbX29sZFBvc107CiAgICAgICAgICAgIGdseXBocy5zcGxpY2UuYXBwbHkoZ2x5cGhzLCBbX25ld1BvcyArIDEsIDBdLmNvbmNhdChnbHlwaHMuc3BsaWNlKF9uZXdQb3MsIF9vbGRQb3MgLSBfbmV3UG9zKSkpOwogICAgICAgICAgICBnbHlwaHNbX25ld1Bvc10gPSBfdG1wOwoKICAgICAgICAgICAgaWYgKF9uZXdQb3MgPD0gYmFzZSAmJiBiYXNlIDwgX29sZFBvcykgewogICAgICAgICAgICAgIGJhc2UrKzsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIEFwcGx5ICdpbml0JyB0byB0aGUgTGVmdCBNYXRyYSBpZiBpdCdzIGEgd29yZCBzdGFydC4KICAgIGlmIChnbHlwaHNbc3RhcnRdLnNoYXBlckluZm8ucG9zaXRpb24gPT09IFBPU0lUSU9OUy5QcmVfTSAmJiAoIXN0YXJ0IHx8ICEvQ2Z8TW4vLnRlc3QodW5pY29kZS5nZXRDYXRlZ29yeShnbHlwaHNbc3RhcnQgLSAxXS5jb2RlUG9pbnRzWzBdKSkpKSB7CiAgICAgIGdseXBoc1tzdGFydF0uZmVhdHVyZXMuaW5pdCA9IHRydWU7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBuZXh0U3lsbGFibGUoZ2x5cGhzLCBzdGFydCkgewogIGlmIChzdGFydCA+PSBnbHlwaHMubGVuZ3RoKSByZXR1cm4gc3RhcnQ7CiAgdmFyIHN5bGxhYmxlID0gZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvLnN5bGxhYmxlOwogIHdoaWxlICgrK3N0YXJ0IDwgZ2x5cGhzLmxlbmd0aCAmJiBnbHlwaHNbc3RhcnRdLnNoYXBlckluZm8uc3lsbGFibGUgPT09IHN5bGxhYmxlKSB7fQogIHJldHVybiBzdGFydDsKfQoKdmFyIF9jbGFzcyQ3Owp2YXIgX3RlbXAkMzsKdmFyIGNhdGVnb3JpZXMkMSA9IHVzZURhdGEuY2F0ZWdvcmllczsKdmFyIGRlY29tcG9zaXRpb25zJDIgPSB1c2VEYXRhLmRlY29tcG9zaXRpb25zOwp2YXIgdHJpZSQyID0gbmV3IFVuaWNvZGVUcmllKEJ1ZmZlcigiQUFJQUFBQUFBQUFBQUtuUUFWRU1ydlB0bkgrb0hVY1Z4K2ZkOTk3OTlXNWU4bXgrOU5rWW03WVVJMkt0aW1rVkRHM0ZXZ1ZURlkxRnFhMlZKaXJZQjBJYVVGTEJhS0dKVmlYaXI2b3hLQ1NCb2kwVVRLdGcyeUEyNmgrbWlsWU50TUgrMFdLMVZReXZ0QlMvNDg3aG5uY3lNenV6dTdON243a0hQc3p1N096TW1UTnpkbWRtZnp6ZlVtcGlVcWtlbUFNYndTWndLYmpjeE0xWEVMNFZ2QjI4RzN6QWsrNTZjTE1sZmdkWUFEdkJidkJGOEdXd0g5eGwrQ0ZMZndqOEJQd1UvTUtTMzgvQU1mQTg2djlybzl1Y1FjZFIrQ2pDUDRDVDRFbndEUGczZUFGTVRpazFBK2JBUE5nSU5vRkx3R2F3WlNwTGZ6WENyV0FiK0FqWURtNEJPOEZ1c0Fmc0EvdkJYZUFnT0FMdU5mdjNnNGZBY1hBQ1BBYWVBRStCNThCcDhOSlVwbk43V3FsWnNIWTYyOStBOEdMd1d2QUc4Qlp3Slhpbk9mNWVoQjhFTjRBZFlHRTZxN2RtRjl1dWdzOGh2ejBWNThuWksvTCtLdmEvQlg0QURvTjdwclA2SGdVUGdrZkE3M0wwZVF6SG53QlBnWCtZODArREY4RlVXNmxCTzR0YmpYQTl1QWk4cGozc1MyL0U5bWF3QlZ3TnRvSnQ1cHpyVFhnendrK0I3YXdQN3NUKzduWTZXeEZmUUJsZkFsOEgzd1UvQW5lemN1L0Q5cy9CTVJOM0hPRUo4RWR3TWtDL0o1SG1tWFptcTJmQklqZ0VWRWVwYmllTFg0RncwTW5TcnpSeG1yVnNtN01COFJlRFY0dmpyM2VrSnk3clpHVlBNYjE5NlhtNm91Zzgzb1J5dDRDcndEVmdLOWdHUHR6eG4zdVRPRDZZUERQTko1SG0wK0F6bmF6ZmZKN1o0S1NuWG5jZzNWZkFOOEVCaHg0Mi96L1VHZGJyeDUyc3I5eUg4QUZUcnQ1KzJHemZuV1BiS3V3N1pzelp5TmgveG93Wk0yYk1tREZqeHNReVo1bFBOczNoOW5CTllIdUFmcjlpYzlmZmlIbnNKenpuVTkxL2ozUCsyc25XWWY2RzhPL2duK0EwZU1uRXQ3dlFwNXVsWDROd0htd0VtN3JaOFVzUlhnNnVNUHZYSUh3UHVLN3JMbCtudTlGemZNeVlNV1BHcEdWdXNsbWFyditZTVdQU2tOcS9kMkQ4dU5ETm5ndmRpdkEyeTNqeTltNzJiRjl2M3ltT2YyTUV4cDhmRzJUc0FjZkEyd0pZQkpldFdCcTNpKzBmd1BhZndMbXpTbDBMRm1aTlBNTEhaNGZwbnNYMkFkamdjWEIrVDZrUGdlK0FHN0QvdlhZVy90THNjOXI5TStNa1Z5TE5SMW02ZzlnK1pmWXZtTUV4Y0hDbStmdFAwK1Q1eS9lMTdVdy9QWUx3SG5DMG04MFRIK3pHMzAvM21qU0RuUFMyL0I0cFVKNHJYM24rYjVIM285Mmw2VWpmdlo3eS9vSnpUb0dudThPNjZYVFBZZjgvSnI4WFdMNlRQWGY5YlBuSHRtVnMrODlBbnhWZ0RWZ1BMZ0t2QWcrWS9GNkg3YzFnQzdqS0hIOFhlSi94MTV2QWp0NHd2d1ZzN3dLZkJYdkFQdkExOEcxd3NKZXZqMzZmNWdqUzNldElxK2Z0OStQWVE3M2gvbkZzbjJEN2YrNWw3NWJvL1ZQWWZ0cFRibEZiMi9KbzJwZGpmTDB1WE9YL3F4Zm5wOHZaVmsyWHY5aGJtdStMeHZZdDNBLzcvV1pzUG9wdFBrcjliZEN2MXlhK2Q0VHVNTzhUcmU1bjRYa0lMd1NielA0bC9XSGF6WDEvL3IyTy96N2NGSG52U1lXOFIvVm0wMlpYSUh4SHplMVhkZjliYm43cDB6MmtEcm9OcjJYOVdMKzc5MzdzWDlmUCt2OWg5bjZqVHJmSTNqRzlFZnNmTjNHMzVQUi9HNHVSZlkzZU1Ud2RrRmEvQzNocmYya2NmeS94WVRPbXBycmZac0xiRWU3ckRQVy9VOVJydjlrL2FobVRMMGNXV3hQL1l4UmtndEVTK3p3TmhaUHMrRlFnTWovbGlFc3RvMkh4c1pCUVgycFpvTFpxV2M1cmlYRGFRQkxTdDFMM2hjbkUrVmN0N2FZVktDRWhiWGsyK2I3Tlo4NG1tWEF3Q2lMMTROZTg1UzYyTVlQY1hpNVN0TS9ZeGxKRjJsZmFiem5ac0M2L0M4MDd4dlpWK3lGdmU5ZDFLWS8vZDNITk84cEtVWHVURGgwR3BwN0I4NTJxNlFGTWdkV00yZGZiQXhPdUVQUUVmY0VzTzVmcXVKTFpyTWZ5Q3RXUDBoZVpGNm9TZGlIOXU0YVF2SlJJSi9lTDZCQnluSXRMcDVEMkpSa1k1TDV1M3hBZjZsdmlYSFdTWmNmYUtPLys1enZPL2M5WHRxOHVSWFNPYmQrOGJTMHpKclMxcnhUeVg3ay9hMG5yazVEK21IZU9DOTB1cTFRMjE2WDU3bHlrZnFIdDYydVRHSjJyYXQraS9rdHR5cS9SU2kyOVBsY2xaZjJYeHE1NVplU1YzNFQ5NmQ1WDVQcVpKOUkzWlgybG5rWHQzeEwxS3lyYXYvTHV0Ylo2dUd4dVM2c3M2VjNwWE9YWTRrUDdFQmZ5SlQ3KzRUSlFTOXVmNzRmNm4rMys2WklpOWJDdGllYXRGZkN4VU14NEtNWWZ5L3B6ckIzMHZtODhxOVNaMTFLK245ZWVOTjYxMlVGS1dYOHVJOVRtUmNhN1RiV3ZLeTJKdkY2bmFGK2IvMHVSdXBacDM1Y1ppa2hadnluaVkyUi9DYmRCM3ZYeW5JQzZoYlJCSGY0bDF4cHM2dzR4L2xWRXR4UnRHWk11UkE4dU5oL2pmWVY4a2Rwc0JVc3pjT0RyRDdFMkpUMktyQjNWNlhNaGJkTmpjWEl0eHphT0pXa3BmOTc2L0k1Z2xRbjFzYkxQODZVOUZRdno0bDBTMjgvbGNXVUpiYnJFMmwrWi9UbEh2aTQva3ZaWExNeXJteTFQVzd4OGhsNlVGZ3ZsbU5NMUpxM2FKM1NlMHlKY3Bkd1M2bU9wL1pnTFg1TjFyZEZLYUl6SDl6dHF1TWJxcSsvcUNGUmsraFJveVp2clRIdU84Zk5kL2RqbUV6WkozVGRpc04xYk5RTmw3eTk2RFYvM21Wa1R0d2FzVmRrMWFpNnliR2xEZWs4blQxZlhjNE01dFZTUHZocU9zV1FlWFFzOEwxbjNJcmFkVThPeENlVmpLN2RyN0RwbDBjTUhuVXZ0MThUemZWc2ZiL3BaWTU2ZlYyR25WUFZJWWFPaTl4Y1pKOGNtS2N1M3djdVBzVkhWNWNkS0ZmWlhOWmVmcDVzV2Z0K3d6UjFjY3pLQ3hoOTlOUng3Nkh2d09wV052NlladEFhanQ2V1B5UHN3dFZWcy9WT0o3eHBZeDNWUjMxZXI3Z014TnVWOVE0NDNDRGxXNDNLdVlTWGJsc3liZktZdDU4dHJmZXo3QTFYN1RkbStWN1Rjb3VkTCtMcFZHZjJraE42M1U1T3lENUFmME5vVXYwNmw3SmMwUnRlK3NvNHhMOUF5eTNSeitTdWZZNUpmMjY3eGNtN0o0ZGQza3VtSU9ybWs3UGw1NDliVVkxcHVJOTFHZGI4VHB1Kzl0am1oWEZkd3RmVnNUdjVTUXZYS1cwY0s0ZVhnUEJPNmlKMDdOTlZPSEg3L3RGMWp5SmRuV2JyVS9VYXUzVk5JMTU2UVoyWmFaRnU3Nmk2dlFYeTlZSjJIOVFaOTdhRjNwMXhseDF5ZnVZUmNkMEtsN055YVgxOTArcFVPS0kwdHZ1czVqNy9uU1dLTG8zRkVSOFIzTEhFeDhncXdnZTFQT2dpMWwxeWZpclYzekhwSVNIeHMzdkxlRlhPZWxsY0cxREZHYkdQMDBQUGtlS0VPYVhJc3FoemJydU9oOVFrNUwwOG5XMmdySjBhdnN2V29jdjB6UmgvZkdDRzBUVjM1aEI0djByZHM1VmRkam0vc0ZDS3grYVhTdDJ5YWxQWnNvbHhYVzQ2Q0RuWHAwWVEwcmRzbzlPVVlQU1lUNit5enV4eHpsclZmRmZhdlEvTEtxc1ArZGJWekUvMHFSYjhwS2luNlY5VTZGbm4yNHBxSHVmTE1XeTkwblYrMERrWG1jcmIwVXErNnBVNy9xY3MvNjdTSFRlVGFhQms5aXB5WFF2THFXMVU3dVBLcHV4L0VTbFA5dW15ZFI4SDNVanpIb1h4ajAvSjFZcjV1YkhzUHJXT0pxeEsraGs1citFVnRIM3BlMVhXSVhhKzF2UTlZSi9vWnJlMWJHUmVoM3hLV2VYN0J4ZllzdHdoNWVyckdKaTU5YmU4NDgyY1NzZlVQUVQ0WGxjOUsrWE1tYXRjWTBmbzIrU3hZUXMvNFhPOE0wM05nL1R4dWpZSCtGUkVMU2RIKzZtdHZldThpdGIxQ3k3QzlYOEdmc1ZPY2ZOODZSSGc1NndKMG9iNXFPei9FL3JJZHE3WWhGMzQvMGNmb2VXS1ZmdEpqSWJXRGJEZlhlWFIvcHJCT0tXSi8zZGQ0MytzciszMlR2Z0VJRVo2LzdadDUvbDdnaE1tNzd1K2V5NGdjejV4Zmt0QTV2RTlDNXZ5MlkzbHBYZVg0MHRIY0xNWDQycVpIUy9sdFpsdVhpU2xEeGlsbHQzVmRJdnVmYmMwajc1d3k1YVdhT3hXUlVabWZsNW5EU2gzTHpvV2JYSk9nOHV1bUtrbmRwMVBuSDJJUGZlK1UzM3o3dmpXaGRQUXVXTWg0cmFxeFdNaDlYODlSWnRTWjcvSnB5WHMzTldRY0VUTjNDWkhVL2xtVm5zdFpCMStaZk01QS8xVkoyVjl0OHdUWE4xUytmMjdtemF1bGJDeEpIZVB3QzFUei8wSzEvVmRQdnRPc2JhK3ZMN1p4TTEvamFrSi9WOS95ZmR0TngraTdiaFZSUmxsL3JySytzazNxTHQvM1QwYWZIK3R6ejFIRGZ4elovSGxHRGR1SzF5L0dMMjF6dktwdFFHV0ZTcFZsRm0weitaeEQvdmRBdDlFcVE5NzFOa1JIVzdxeXRvZzUzK2NmVmZlRkdMU3RmZGRmWWthNXg2ZGwreWkvLzR6Ni81NTlhVW40LysvazJwdjhCcWZNLzBxVkNudStJZjJPSlBSWlVjeXpKRi81UlFtNXh0TTlsbitMUk4rOFU5K2lNUVMxVmVnOXEyei9UbFYzRXR0My9yTE9JWE9vb2tpZHkvNVgzR1lEK1M4YTF6MmUwdkg2OTVUOXZoRXFkYlkvLzBkVTNqV1oycllxL2N2Q1JUOHIwOC9OTGxUNS96eVNkU3VydjF5YkxpdXA1dEFwNStOTnpmUEo1cjYxd2FyYXBhakl0ZlRRTmVLNjEwL3JXRU1QeWIrdU9vL2llclJOYkdVMDFaK3JxbmVJUFdOc1Q5dDFyRCtPWXI4cm0wZUt2cC9DaDFQNFllcHl5K2hXVkQvZitWV1hYNVgrVFpkZlpaK0tMYjlKK1M4PSIsImJhc2U2NCIpKTsKdmFyIHN0YXRlTWFjaGluZSQxID0gbmV3IFN0YXRlTWFjaGluZSh1c2VEYXRhKTsKCi8qKgogKiBUaGlzIHNoYXBlciBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgVW5pdmVyc2FsIFNoYXBpbmcgRW5naW5lLCB3aGljaAogKiB1c2VzIFVuaWNvZGUgZGF0YSB0byBzaGFwZSBhIG51bWJlciBvZiBzY3JpcHRzIHdpdGhvdXQgYSBkZWRpY2F0ZWQgc2hhcGluZyBlbmdpbmUuCiAqIFNlZSBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT3BlblR5cGVEZXYvVVNFL2ludHJvLmh0bS4KICovCnZhciBVbml2ZXJzYWxTaGFwZXIgPSAoX3RlbXAkMyA9IF9jbGFzcyQ3ID0gZnVuY3Rpb24gKF9EZWZhdWx0U2hhcGVyKSB7CiAgX2luaGVyaXRzKFVuaXZlcnNhbFNoYXBlciwgX0RlZmF1bHRTaGFwZXIpOwoKICBmdW5jdGlvbiBVbml2ZXJzYWxTaGFwZXIoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVW5pdmVyc2FsU2hhcGVyKTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX0RlZmF1bHRTaGFwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBVbml2ZXJzYWxTaGFwZXIucGxhbkZlYXR1cmVzID0gZnVuY3Rpb24gcGxhbkZlYXR1cmVzKHBsYW4pIHsKICAgIHBsYW4uYWRkU3RhZ2Uoc2V0dXBTeWxsYWJsZXMkMSk7CgogICAgLy8gRGVmYXVsdCBnbHlwaCBwcmUtcHJvY2Vzc2luZyBncm91cAogICAgcGxhbi5hZGRTdGFnZShbJ2xvY2wnLCAnY2NtcCcsICdudWt0JywgJ2FraG4nXSk7CgogICAgLy8gUmVvcmRlcmluZyBncm91cAogICAgcGxhbi5hZGRTdGFnZShjbGVhclN1YnN0aXR1dGlvbkZsYWdzKTsKICAgIHBsYW4uYWRkU3RhZ2UoWydycGhmJ10sIGZhbHNlKTsKICAgIHBsYW4uYWRkU3RhZ2UocmVjb3JkUnBoZik7CiAgICBwbGFuLmFkZFN0YWdlKGNsZWFyU3Vic3RpdHV0aW9uRmxhZ3MpOwogICAgcGxhbi5hZGRTdGFnZShbJ3ByZWYnXSk7CiAgICBwbGFuLmFkZFN0YWdlKHJlY29yZFByZWYpOwoKICAgIC8vIE9ydGhvZ3JhcGhpYyB1bml0IHNoYXBpbmcgZ3JvdXAKICAgIHBsYW4uYWRkU3RhZ2UoWydya3JmJywgJ2FidmYnLCAnYmx3ZicsICdoYWxmJywgJ3BzdGYnLCAndmF0dScsICdjamN0J10pOwogICAgcGxhbi5hZGRTdGFnZShyZW9yZGVyKTsKCiAgICAvLyBUb3BvZ3JhcGhpY2FsIGZlYXR1cmVzCiAgICAvLyBTY3JpcHRzIHRoYXQgbmVlZCB0aGlzIGFyZSBoYW5kbGVkIGJ5IHRoZSBBcmFiaWMgc2hhcGVyLCBub3QgaW1wbGVtZW50ZWQgaGVyZSBmb3Igbm93LgogICAgLy8gcGxhbi5hZGRTdGFnZShbJ2lzb2wnLCAnaW5pdCcsICdtZWRpJywgJ2ZpbmEnLCAnbWVkMicsICdmaW4yJywgJ2ZpbjMnXSwgZmFsc2UpOwoKICAgIC8vIFN0YW5kYXJkIHRvcG9ncmFwaGljIHByZXNlbnRhdGlvbiBhbmQgcG9zaXRpb25hbCBmZWF0dXJlIGFwcGxpY2F0aW9uCiAgICBwbGFuLmFkZFN0YWdlKFsnYWJ2cycsICdibHdzJywgJ3ByZXMnLCAncHN0cycsICdkaXN0JywgJ2Fidm0nLCAnYmx3bSddKTsKICB9OwoKICBVbml2ZXJzYWxTaGFwZXIuYXNzaWduRmVhdHVyZXMgPSBmdW5jdGlvbiBhc3NpZ25GZWF0dXJlcyhwbGFuLCBnbHlwaHMpIHsKICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKGkpIHsKICAgICAgdmFyIGNvZGVwb2ludCA9IGdseXBoc1tpXS5jb2RlUG9pbnRzWzBdOwogICAgICBpZiAoZGVjb21wb3NpdGlvbnMkMltjb2RlcG9pbnRdKSB7CiAgICAgICAgdmFyIGRlY29tcG9zZWQgPSBkZWNvbXBvc2l0aW9ucyQyW2NvZGVwb2ludF0ubWFwKGZ1bmN0aW9uIChjKSB7CiAgICAgICAgICB2YXIgZyA9IHBsYW4uZm9udC5nbHlwaEZvckNvZGVQb2ludChjKTsKICAgICAgICAgIHJldHVybiBuZXcgR2x5cGhJbmZvKHBsYW4uZm9udCwgZy5pZCwgW2NdLCBnbHlwaHNbaV0uZmVhdHVyZXMpOwogICAgICAgIH0pOwoKICAgICAgICBnbHlwaHMuc3BsaWNlLmFwcGx5KGdseXBocywgW2ksIDFdLmNvbmNhdChkZWNvbXBvc2VkKSk7CiAgICAgIH0KICAgIH07CgogICAgLy8gRGVjb21wb3NlIHNwbGl0IHZvd2VscwogICAgLy8gVE9ETzogZG8gdGhpcyBpbiBhIG1vcmUgZ2VuZXJhbCB1bmljb2RlIG5vcm1hbGl6ZXIKICAgIGZvciAodmFyIGkgPSBnbHlwaHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgX2xvb3AoaSk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIFVuaXZlcnNhbFNoYXBlcjsKfShEZWZhdWx0U2hhcGVyKSwgX2NsYXNzJDcuemVyb01hcmtXaWR0aHMgPSAnQkVGT1JFX0dQT1MnLCBfdGVtcCQzKTsKZnVuY3Rpb24gdXNlQ2F0ZWdvcnkoZ2x5cGgpIHsKICByZXR1cm4gdHJpZSQyLmdldChnbHlwaC5jb2RlUG9pbnRzWzBdKTsKfQoKdmFyIFVTRUluZm8gPSBmdW5jdGlvbiBVU0VJbmZvKGNhdGVnb3J5LCBzeWxsYWJsZVR5cGUsIHN5bGxhYmxlKSB7CiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFVTRUluZm8pOwoKICB0aGlzLmNhdGVnb3J5ID0gY2F0ZWdvcnk7CiAgdGhpcy5zeWxsYWJsZVR5cGUgPSBzeWxsYWJsZVR5cGU7CiAgdGhpcy5zeWxsYWJsZSA9IHN5bGxhYmxlOwp9OwoKZnVuY3Rpb24gc2V0dXBTeWxsYWJsZXMkMShmb250LCBnbHlwaHMpIHsKICB2YXIgc3lsbGFibGUgPSAwOwogIGZvciAodmFyIF9pdGVyYXRvciA9IHN0YXRlTWFjaGluZSQxLm1hdGNoKGdseXBocy5tYXAodXNlQ2F0ZWdvcnkpKSwgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICB2YXIgX3JlZjsKCiAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgfSBlbHNlIHsKICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgIH0KCiAgICB2YXIgX3JlZjIgPSBfcmVmLAogICAgICAgIHN0YXJ0ID0gX3JlZjJbMF0sCiAgICAgICAgZW5kID0gX3JlZjJbMV0sCiAgICAgICAgdGFncyA9IF9yZWYyWzJdOwoKICAgICsrc3lsbGFibGU7CgogICAgLy8gQ3JlYXRlIHNoYXBlciBpbmZvCiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspIHsKICAgICAgZ2x5cGhzW2ldLnNoYXBlckluZm8gPSBuZXcgVVNFSW5mbyhjYXRlZ29yaWVzJDFbdXNlQ2F0ZWdvcnkoZ2x5cGhzW2ldKV0sIHRhZ3NbMF0sIHN5bGxhYmxlKTsKICAgIH0KCiAgICAvLyBBc3NpZ24gcnBoZiBmZWF0dXJlCiAgICB2YXIgbGltaXQgPSBnbHlwaHNbc3RhcnRdLnNoYXBlckluZm8uY2F0ZWdvcnkgPT09ICdSJyA/IDEgOiBNYXRoLm1pbigzLCBlbmQgLSBzdGFydCk7CiAgICBmb3IgKHZhciBfaTIgPSBzdGFydDsgX2kyIDwgc3RhcnQgKyBsaW1pdDsgX2kyKyspIHsKICAgICAgZ2x5cGhzW19pMl0uZmVhdHVyZXMucnBoZiA9IHRydWU7CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBjbGVhclN1YnN0aXR1dGlvbkZsYWdzKGZvbnQsIGdseXBocykgewogIGZvciAodmFyIF9pdGVyYXRvcjIgPSBnbHlwaHMsIF9pc0FycmF5MiA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMiksIF9pMyA9IDAsIF9pdGVyYXRvcjIgPSBfaXNBcnJheTIgPyBfaXRlcmF0b3IyIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjIpOzspIHsKICAgIHZhciBfcmVmMzsKCiAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgIGlmIChfaTMgPj0gX2l0ZXJhdG9yMi5sZW5ndGgpIGJyZWFrOwogICAgICBfcmVmMyA9IF9pdGVyYXRvcjJbX2kzKytdOwogICAgfSBlbHNlIHsKICAgICAgX2kzID0gX2l0ZXJhdG9yMi5uZXh0KCk7CiAgICAgIGlmIChfaTMuZG9uZSkgYnJlYWs7CiAgICAgIF9yZWYzID0gX2kzLnZhbHVlOwogICAgfQoKICAgIHZhciBnbHlwaCA9IF9yZWYzOwoKICAgIGdseXBoLnN1YnN0aXR1dGVkID0gZmFsc2U7CiAgfQp9CgpmdW5jdGlvbiByZWNvcmRScGhmKGZvbnQsIGdseXBocykgewogIGZvciAodmFyIF9pdGVyYXRvcjMgPSBnbHlwaHMsIF9pc0FycmF5MyA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMyksIF9pNCA9IDAsIF9pdGVyYXRvcjMgPSBfaXNBcnJheTMgPyBfaXRlcmF0b3IzIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjMpOzspIHsKICAgIHZhciBfcmVmNDsKCiAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgIGlmIChfaTQgPj0gX2l0ZXJhdG9yMy5sZW5ndGgpIGJyZWFrOwogICAgICBfcmVmNCA9IF9pdGVyYXRvcjNbX2k0KytdOwogICAgfSBlbHNlIHsKICAgICAgX2k0ID0gX2l0ZXJhdG9yMy5uZXh0KCk7CiAgICAgIGlmIChfaTQuZG9uZSkgYnJlYWs7CiAgICAgIF9yZWY0ID0gX2k0LnZhbHVlOwogICAgfQoKICAgIHZhciBnbHlwaCA9IF9yZWY0OwoKICAgIGlmIChnbHlwaC5zdWJzdGl0dXRlZCAmJiBnbHlwaC5mZWF0dXJlcy5ycGhmKSB7CiAgICAgIC8vIE1hcmsgYSBzdWJzdGl0dXRlZCByZXBoYS4KICAgICAgZ2x5cGguc2hhcGVySW5mby5jYXRlZ29yeSA9ICdSJzsKICAgIH0KICB9Cn0KCmZ1bmN0aW9uIHJlY29yZFByZWYoZm9udCwgZ2x5cGhzKSB7CiAgZm9yICh2YXIgX2l0ZXJhdG9yNCA9IGdseXBocywgX2lzQXJyYXk0ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I0KSwgX2k1ID0gMCwgX2l0ZXJhdG9yNCA9IF9pc0FycmF5NCA/IF9pdGVyYXRvcjQgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNCk7OykgewogICAgdmFyIF9yZWY1OwoKICAgIGlmIChfaXNBcnJheTQpIHsKICAgICAgaWYgKF9pNSA+PSBfaXRlcmF0b3I0Lmxlbmd0aCkgYnJlYWs7CiAgICAgIF9yZWY1ID0gX2l0ZXJhdG9yNFtfaTUrK107CiAgICB9IGVsc2UgewogICAgICBfaTUgPSBfaXRlcmF0b3I0Lm5leHQoKTsKICAgICAgaWYgKF9pNS5kb25lKSBicmVhazsKICAgICAgX3JlZjUgPSBfaTUudmFsdWU7CiAgICB9CgogICAgdmFyIGdseXBoID0gX3JlZjU7CgogICAgaWYgKGdseXBoLnN1YnN0aXR1dGVkKSB7CiAgICAgIC8vIE1hcmsgYSBzdWJzdGl0dXRlZCBwcmVmIGFzIFZQcmUsIGFzIHRoZXkgYmVoYXZlIHRoZSBzYW1lIHdheS4KICAgICAgZ2x5cGguc2hhcGVySW5mby5jYXRlZ29yeSA9ICdWUHJlJzsKICAgIH0KICB9Cn0KCmZ1bmN0aW9uIHJlb3JkZXIoZm9udCwgZ2x5cGhzKSB7CiAgdmFyIGRvdHRlZENpcmNsZSA9IGZvbnQuZ2x5cGhGb3JDb2RlUG9pbnQoMHgyNWNjKS5pZDsKCiAgZm9yICh2YXIgc3RhcnQgPSAwLCBlbmQgPSBuZXh0U3lsbGFibGUkMShnbHlwaHMsIDApOyBzdGFydCA8IGdseXBocy5sZW5ndGg7IHN0YXJ0ID0gZW5kLCBlbmQgPSBuZXh0U3lsbGFibGUkMShnbHlwaHMsIHN0YXJ0KSkgewogICAgdmFyIGkgPSB2b2lkIDAsCiAgICAgICAgaiA9IHZvaWQgMDsKICAgIHZhciBpbmZvID0gZ2x5cGhzW3N0YXJ0XS5zaGFwZXJJbmZvOwogICAgdmFyIHR5cGUgPSBpbmZvLnN5bGxhYmxlVHlwZTsKCiAgICAvLyBPbmx5IGEgZmV3IHN5bGxhYmxlIHR5cGVzIG5lZWQgcmVvcmRlcmluZy4KICAgIGlmICh0eXBlICE9PSAndmlyYW1hX3Rlcm1pbmF0ZWRfY2x1c3RlcicgJiYgdHlwZSAhPT0gJ3N0YW5kYXJkX2NsdXN0ZXInICYmIHR5cGUgIT09ICdicm9rZW5fY2x1c3RlcicpIHsKICAgICAgY29udGludWU7CiAgICB9CgogICAgLy8gSW5zZXJ0IGEgZG90dGVkIGNpcmNsZSBnbHlwaCBpbiBicm9rZW4gY2x1c3RlcnMuCiAgICBpZiAodHlwZSA9PT0gJ2Jyb2tlbl9jbHVzdGVyJyAmJiBkb3R0ZWRDaXJjbGUpIHsKICAgICAgdmFyIGcgPSBuZXcgR2x5cGhJbmZvKGZvbnQsIGRvdHRlZENpcmNsZSwgWzB4MjVjY10pOwogICAgICBnLnNoYXBlckluZm8gPSBpbmZvOwoKICAgICAgLy8gSW5zZXJ0IGFmdGVyIHBvc3NpYmxlIFJlcGhhLgogICAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZCAmJiBnbHlwaHNbaV0uc2hhcGVySW5mby5jYXRlZ29yeSA9PT0gJ1InOyBpKyspIHt9CiAgICAgIGdseXBocy5zcGxpY2UoKytpLCAwLCBnKTsKICAgICAgZW5kKys7CiAgICB9CgogICAgLy8gTW92ZSB0aGluZ3MgZm9yd2FyZC4KICAgIGlmIChpbmZvLmNhdGVnb3J5ID09PSAnUicgJiYgZW5kIC0gc3RhcnQgPiAxKSB7CiAgICAgIC8vIEdvdCBhIHJlcGhhLiBSZW9yZGVyIGl0IHRvIGFmdGVyIGZpcnN0IGJhc2UsIGJlZm9yZSBmaXJzdCBoYWxhbnQuCiAgICAgIGZvciAoaSA9IHN0YXJ0ICsgMTsgaSA8IGVuZDsgaSsrKSB7CiAgICAgICAgaW5mbyA9IGdseXBoc1tpXS5zaGFwZXJJbmZvOwogICAgICAgIGlmIChpc0Jhc2UoaW5mbykgfHwgaXNIYWxhbnQoZ2x5cGhzW2ldKSkgewogICAgICAgICAgLy8gSWYgd2UgaGl0IGEgaGFsYW50LCBtb3ZlIGJlZm9yZSBpdDsgb3RoZXJ3aXNlIGl0J3MgYSBiYXNlOiBtb3ZlIHRvIGl0J3MKICAgICAgICAgIC8vIHBsYWNlLCBhbmQgc2hpZnQgdGhpbmdzIGluIGJldHdlZW4gYmFja3dhcmQuCiAgICAgICAgICBpZiAoaXNIYWxhbnQoZ2x5cGhzW2ldKSkgewogICAgICAgICAgICBpLS07CiAgICAgICAgICB9CgogICAgICAgICAgZ2x5cGhzLnNwbGljZS5hcHBseShnbHlwaHMsIFtzdGFydCwgMF0uY29uY2F0KGdseXBocy5zcGxpY2Uoc3RhcnQgKyAxLCBpIC0gc3RhcnQpLCBbZ2x5cGhzW2ldXSkpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gTW92ZSB0aGluZ3MgYmFjay4KICAgIGZvciAoaSA9IHN0YXJ0LCBqID0gZW5kOyBpIDwgZW5kOyBpKyspIHsKICAgICAgaW5mbyA9IGdseXBoc1tpXS5zaGFwZXJJbmZvOwogICAgICBpZiAoaXNCYXNlKGluZm8pIHx8IGlzSGFsYW50KGdseXBoc1tpXSkpIHsKICAgICAgICAvLyBJZiB3ZSBoaXQgYSBoYWxhbnQsIG1vdmUgYWZ0ZXIgaXQ7IG90aGVyd2lzZSBpdCdzIGEgYmFzZTogbW92ZSB0byBpdCdzCiAgICAgICAgLy8gcGxhY2UsIGFuZCBzaGlmdCB0aGluZ3MgaW4gYmV0d2VlbiBiYWNrd2FyZC4KICAgICAgICBqID0gaXNIYWxhbnQoZ2x5cGhzW2ldKSA/IGkgKyAxIDogaTsKICAgICAgfSBlbHNlIGlmICgoaW5mby5jYXRlZ29yeSA9PT0gJ1ZQcmUnIHx8IGluZm8uY2F0ZWdvcnkgPT09ICdWTVByZScpICYmIGogPCBpKSB7CiAgICAgICAgZ2x5cGhzLnNwbGljZS5hcHBseShnbHlwaHMsIFtqLCAxLCBnbHlwaHNbaV1dLmNvbmNhdChnbHlwaHMuc3BsaWNlKGosIGkgLSBqKSkpOwogICAgICB9CiAgICB9CiAgfQp9CgpmdW5jdGlvbiBuZXh0U3lsbGFibGUkMShnbHlwaHMsIHN0YXJ0KSB7CiAgaWYgKHN0YXJ0ID49IGdseXBocy5sZW5ndGgpIHJldHVybiBzdGFydDsKICB2YXIgc3lsbGFibGUgPSBnbHlwaHNbc3RhcnRdLnNoYXBlckluZm8uc3lsbGFibGU7CiAgd2hpbGUgKCsrc3RhcnQgPCBnbHlwaHMubGVuZ3RoICYmIGdseXBoc1tzdGFydF0uc2hhcGVySW5mby5zeWxsYWJsZSA9PT0gc3lsbGFibGUpIHt9CiAgcmV0dXJuIHN0YXJ0Owp9CgpmdW5jdGlvbiBpc0hhbGFudChnbHlwaCkgewogIHJldHVybiBnbHlwaC5zaGFwZXJJbmZvLmNhdGVnb3J5ID09PSAnSCcgJiYgIWdseXBoLmlzTGlnYXRlZDsKfQoKZnVuY3Rpb24gaXNCYXNlKGluZm8pIHsKICByZXR1cm4gaW5mby5jYXRlZ29yeSA9PT0gJ0InIHx8IGluZm8uY2F0ZWdvcnkgPT09ICdHQic7Cn0KCnZhciBTSEFQRVJTID0gewogIGFyYWI6IEFyYWJpY1NoYXBlciwgLy8gQXJhYmljCiAgbW9uZzogQXJhYmljU2hhcGVyLCAvLyBNb25nb2xpYW4KICBzeXJjOiBBcmFiaWNTaGFwZXIsIC8vIFN5cmlhYwogICdua28gJzogQXJhYmljU2hhcGVyLCAvLyBOJ0tvCiAgcGhhZzogQXJhYmljU2hhcGVyLCAvLyBQaGFncyBQYQogIG1hbmQ6IEFyYWJpY1NoYXBlciwgLy8gTWFuZGFpYwogIG1hbmk6IEFyYWJpY1NoYXBlciwgLy8gTWFuaWNoYWVhbgogIHBobHA6IEFyYWJpY1NoYXBlciwgLy8gUHNhbHRlciBQYWhsYXZpCgogIGhhbmc6IEhhbmd1bFNoYXBlciwgLy8gSGFuZ3VsCgogIGJuZzI6IEluZGljU2hhcGVyLCAvLyBCZW5nYWxpCiAgYmVuZzogSW5kaWNTaGFwZXIsIC8vIEJlbmdhbGkKICBkZXYyOiBJbmRpY1NoYXBlciwgLy8gRGV2YW5hZ2FyaQogIGRldmE6IEluZGljU2hhcGVyLCAvLyBEZXZhbmFnYXJpCiAgZ2pyMjogSW5kaWNTaGFwZXIsIC8vIEd1amFyYXRpCiAgZ3VqcjogSW5kaWNTaGFwZXIsIC8vIEd1amFyYXRpCiAgZ3VydTogSW5kaWNTaGFwZXIsIC8vIEd1cm11a2hpCiAgZ3VyMjogSW5kaWNTaGFwZXIsIC8vIEd1cm11a2hpCiAga25kYTogSW5kaWNTaGFwZXIsIC8vIEthbm5hZGEKICBrbmQyOiBJbmRpY1NoYXBlciwgLy8gS2FubmFkYQogIG1sbTI6IEluZGljU2hhcGVyLCAvLyBNYWxheWFsYW0KICBtbHltOiBJbmRpY1NoYXBlciwgLy8gTWFsYXlhbGFtCiAgb3J5MjogSW5kaWNTaGFwZXIsIC8vIE9yaXlhCiAgb3J5YTogSW5kaWNTaGFwZXIsIC8vIE9yaXlhCiAgdGFtbDogSW5kaWNTaGFwZXIsIC8vIFRhbWlsCiAgdG1sMjogSW5kaWNTaGFwZXIsIC8vIFRhbWlsCiAgdGVsdTogSW5kaWNTaGFwZXIsIC8vIFRlbHVndQogIHRlbDI6IEluZGljU2hhcGVyLCAvLyBUZWx1Z3UKICBraG1yOiBJbmRpY1NoYXBlciwgLy8gS2htZXIKCiAgYmFsaTogVW5pdmVyc2FsU2hhcGVyLCAvLyBCYWxpbmVzZQogIGJhdGs6IFVuaXZlcnNhbFNoYXBlciwgLy8gQmF0YWsKICBicmFoOiBVbml2ZXJzYWxTaGFwZXIsIC8vIEJyYWhtaQogIGJ1Z2k6IFVuaXZlcnNhbFNoYXBlciwgLy8gQnVnaW5lc2UKICBidWhkOiBVbml2ZXJzYWxTaGFwZXIsIC8vIEJ1aGlkCiAgY2FrbTogVW5pdmVyc2FsU2hhcGVyLCAvLyBDaGFrbWEKICBjaGFtOiBVbml2ZXJzYWxTaGFwZXIsIC8vIENoYW0KICBkdXBsOiBVbml2ZXJzYWxTaGFwZXIsIC8vIER1cGxveWFuCiAgZWd5cDogVW5pdmVyc2FsU2hhcGVyLCAvLyBFZ3lwdGlhbiBIaWVyb2dseXBocwogIGdyYW46IFVuaXZlcnNhbFNoYXBlciwgLy8gR3JhbnRoYQogIGhhbm86IFVuaXZlcnNhbFNoYXBlciwgLy8gSGFudW5vbwogIGphdmE6IFVuaXZlcnNhbFNoYXBlciwgLy8gSmF2YW5lc2UKICBrdGhpOiBVbml2ZXJzYWxTaGFwZXIsIC8vIEthaXRoaQogIGthbGk6IFVuaXZlcnNhbFNoYXBlciwgLy8gS2F5YWggTGkKICBraGFyOiBVbml2ZXJzYWxTaGFwZXIsIC8vIEtoYXJvc2h0aGkKICBraG9qOiBVbml2ZXJzYWxTaGFwZXIsIC8vIEtob2praQogIHNpbmQ6IFVuaXZlcnNhbFNoYXBlciwgLy8gS2h1ZGF3YWRpCiAgbGVwYzogVW5pdmVyc2FsU2hhcGVyLCAvLyBMZXBjaGEKICBsaW1iOiBVbml2ZXJzYWxTaGFwZXIsIC8vIExpbWJ1CiAgbWFoajogVW5pdmVyc2FsU2hhcGVyLCAvLyBNYWhhamFuaQogIC8vIG1hbmQ6IFVuaXZlcnNhbFNoYXBlciwgLy8gTWFuZGFpYwogIC8vIG1hbmk6IFVuaXZlcnNhbFNoYXBlciwgLy8gTWFuaWNoYWVhbgogIG10ZWk6IFVuaXZlcnNhbFNoYXBlciwgLy8gTWVpdGVpIE1heWVrCiAgbW9kaTogVW5pdmVyc2FsU2hhcGVyLCAvLyBNb2RpCiAgLy8gbW9uZzogVW5pdmVyc2FsU2hhcGVyLCAvLyBNb25nb2xpYW4KICAvLyAnbmtvICc6IFVuaXZlcnNhbFNoYXBlciwgLy8gTuKAmUtvCiAgaG1uZzogVW5pdmVyc2FsU2hhcGVyLCAvLyBQYWhhd2ggSG1vbmcKICAvLyBwaGFnOiBVbml2ZXJzYWxTaGFwZXIsIC8vIFBoYWdzLXBhCiAgLy8gcGhscDogVW5pdmVyc2FsU2hhcGVyLCAvLyBQc2FsdGVyIFBhaGxhdmkKICByam5nOiBVbml2ZXJzYWxTaGFwZXIsIC8vIFJlamFuZwogIHNhdXI6IFVuaXZlcnNhbFNoYXBlciwgLy8gU2F1cmFzaHRyYQogIHNocmQ6IFVuaXZlcnNhbFNoYXBlciwgLy8gU2hhcmFkYQogIHNpZGQ6IFVuaXZlcnNhbFNoYXBlciwgLy8gU2lkZGhhbQogIHNpbmg6IFVuaXZlcnNhbFNoYXBlciwgLy8gU2luaGFsYQogIHN1bmQ6IFVuaXZlcnNhbFNoYXBlciwgLy8gU3VuZGFuZXNlCiAgc3lsbzogVW5pdmVyc2FsU2hhcGVyLCAvLyBTeWxvdGkgTmFncmkKICB0Z2xnOiBVbml2ZXJzYWxTaGFwZXIsIC8vIFRhZ2Fsb2cKICB0YWdiOiBVbml2ZXJzYWxTaGFwZXIsIC8vIFRhZ2JhbndhCiAgdGFsZTogVW5pdmVyc2FsU2hhcGVyLCAvLyBUYWkgTGUKICBsYW5hOiBVbml2ZXJzYWxTaGFwZXIsIC8vIFRhaSBUaGFtCiAgdGF2dDogVW5pdmVyc2FsU2hhcGVyLCAvLyBUYWkgVmlldAogIHRha3I6IFVuaXZlcnNhbFNoYXBlciwgLy8gVGFrcmkKICB0aWJ0OiBVbml2ZXJzYWxTaGFwZXIsIC8vIFRpYmV0YW4KICB0Zm5nOiBVbml2ZXJzYWxTaGFwZXIsIC8vIFRpZmluYWdoCiAgdGlyaDogVW5pdmVyc2FsU2hhcGVyLCAvLyBUaXJodXRhCgogIGxhdG46IERlZmF1bHRTaGFwZXIsIC8vIExhdGluCiAgREZMVDogRGVmYXVsdFNoYXBlciAvLyBEZWZhdWx0Cn07CgpmdW5jdGlvbiBjaG9vc2Uoc2NyaXB0KSB7CiAgaWYgKCFBcnJheS5pc0FycmF5KHNjcmlwdCkpIHsKICAgIHNjcmlwdCA9IFtzY3JpcHRdOwogIH0KCiAgZm9yICh2YXIgX2l0ZXJhdG9yID0gc2NyaXB0LCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgIHZhciBfcmVmOwoKICAgIGlmIChfaXNBcnJheSkgewogICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICB9IGVsc2UgewogICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgfQoKICAgIHZhciBzID0gX3JlZjsKCiAgICB2YXIgc2hhcGVyID0gU0hBUEVSU1tzXTsKICAgIGlmIChzaGFwZXIpIHsKICAgICAgcmV0dXJuIHNoYXBlcjsKICAgIH0KICB9CgogIHJldHVybiBEZWZhdWx0U2hhcGVyOwp9Cgp2YXIgR1NVQlByb2Nlc3NvciA9IGZ1bmN0aW9uIChfT1RQcm9jZXNzb3IpIHsKICBfaW5oZXJpdHMoR1NVQlByb2Nlc3NvciwgX09UUHJvY2Vzc29yKTsKCiAgZnVuY3Rpb24gR1NVQlByb2Nlc3NvcigpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBHU1VCUHJvY2Vzc29yKTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX09UUHJvY2Vzc29yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpOwogIH0KCiAgR1NVQlByb2Nlc3Nvci5wcm90b3R5cGUuYXBwbHlMb29rdXAgPSBmdW5jdGlvbiBhcHBseUxvb2t1cChsb29rdXBUeXBlLCB0YWJsZSkgewogICAgdmFyIF90aGlzMiA9IHRoaXM7CgogICAgc3dpdGNoIChsb29rdXBUeXBlKSB7CiAgICAgIGNhc2UgMToKICAgICAgICB7CiAgICAgICAgICAvLyBTaW5nbGUgU3Vic3RpdHV0aW9uCiAgICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmNvdmVyYWdlSW5kZXgodGFibGUuY292ZXJhZ2UpOwogICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIGdseXBoID0gdGhpcy5nbHlwaEl0ZXJhdG9yLmN1cjsKICAgICAgICAgIHN3aXRjaCAodGFibGUudmVyc2lvbikgewogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgZ2x5cGguaWQgPSBnbHlwaC5pZCArIHRhYmxlLmRlbHRhR2x5cGhJRCAmIDB4ZmZmZjsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBnbHlwaC5pZCA9IHRhYmxlLnN1YnN0aXR1dGUuZ2V0KGluZGV4KTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICBjYXNlIDI6CiAgICAgICAgewogICAgICAgICAgLy8gTXVsdGlwbGUgU3Vic3RpdHV0aW9uCiAgICAgICAgICB2YXIgX2luZGV4ID0gdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLmNvdmVyYWdlKTsKICAgICAgICAgIGlmIChfaW5kZXggIT09IC0xKSB7CiAgICAgICAgICAgIHZhciBfZ2x5cGhzOwoKICAgICAgICAgICAgdmFyIHNlcXVlbmNlID0gdGFibGUuc2VxdWVuY2VzLmdldChfaW5kZXgpOwogICAgICAgICAgICB0aGlzLmdseXBoSXRlcmF0b3IuY3VyLmlkID0gc2VxdWVuY2VbMF07CiAgICAgICAgICAgIHRoaXMuZ2x5cGhJdGVyYXRvci5jdXIubGlnYXR1cmVDb21wb25lbnQgPSAwOwoKICAgICAgICAgICAgdmFyIGZlYXR1cmVzID0gdGhpcy5nbHlwaEl0ZXJhdG9yLmN1ci5mZWF0dXJlczsKICAgICAgICAgICAgdmFyIGN1ckdseXBoID0gdGhpcy5nbHlwaEl0ZXJhdG9yLmN1cjsKICAgICAgICAgICAgdmFyIHJlcGxhY2VtZW50ID0gc2VxdWVuY2Uuc2xpY2UoMSkubWFwKGZ1bmN0aW9uIChnaWQsIGkpIHsKICAgICAgICAgICAgICB2YXIgZ2x5cGggPSBuZXcgR2x5cGhJbmZvKF90aGlzMi5mb250LCBnaWQsIHVuZGVmaW5lZCwgZmVhdHVyZXMpOwogICAgICAgICAgICAgIGdseXBoLnNoYXBlckluZm8gPSBjdXJHbHlwaC5zaGFwZXJJbmZvOwogICAgICAgICAgICAgIGdseXBoLmlzTGlnYXRlZCA9IGN1ckdseXBoLmlzTGlnYXRlZDsKICAgICAgICAgICAgICBnbHlwaC5saWdhdHVyZUNvbXBvbmVudCA9IGkgKyAxOwogICAgICAgICAgICAgIGdseXBoLnN1YnN0aXR1dGVkID0gdHJ1ZTsKICAgICAgICAgICAgICBnbHlwaC5pc011bHRpcGxpZWQgPSB0cnVlOwogICAgICAgICAgICAgIHJldHVybiBnbHlwaDsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAoX2dseXBocyA9IHRoaXMuZ2x5cGhzKS5zcGxpY2UuYXBwbHkoX2dseXBocywgW3RoaXMuZ2x5cGhJdGVyYXRvci5pbmRleCArIDEsIDBdLmNvbmNhdChyZXBsYWNlbWVudCkpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgY2FzZSAzOgogICAgICAgIHsKICAgICAgICAgIC8vIEFsdGVybmF0ZSBTdWJzdGl0dXRpb24KICAgICAgICAgIHZhciBfaW5kZXgyID0gdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLmNvdmVyYWdlKTsKICAgICAgICAgIGlmIChfaW5kZXgyICE9PSAtMSkgewogICAgICAgICAgICB2YXIgVVNFUl9JTkRFWCA9IDA7IC8vIFRPRE8KICAgICAgICAgICAgdGhpcy5nbHlwaEl0ZXJhdG9yLmN1ci5pZCA9IHRhYmxlLmFsdGVybmF0ZVNldC5nZXQoX2luZGV4MilbVVNFUl9JTkRFWF07CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICBjYXNlIDQ6CiAgICAgICAgewogICAgICAgICAgLy8gTGlnYXR1cmUgU3Vic3RpdHV0aW9uCiAgICAgICAgICB2YXIgX2luZGV4MyA9IHRoaXMuY292ZXJhZ2VJbmRleCh0YWJsZS5jb3ZlcmFnZSk7CiAgICAgICAgICBpZiAoX2luZGV4MyA9PT0gLTEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHRhYmxlLmxpZ2F0dXJlU2V0cy5nZXQoX2luZGV4MyksIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICAgICAgICB2YXIgX3JlZjsKCiAgICAgICAgICAgIGlmIChfaXNBcnJheSkgewogICAgICAgICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgbGlnYXR1cmUgPSBfcmVmOwoKICAgICAgICAgICAgdmFyIG1hdGNoZWQgPSB0aGlzLnNlcXVlbmNlTWF0Y2hJbmRpY2VzKDEsIGxpZ2F0dXJlLmNvbXBvbmVudHMpOwogICAgICAgICAgICBpZiAoIW1hdGNoZWQpIHsKICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIF9jdXJHbHlwaCA9IHRoaXMuZ2x5cGhJdGVyYXRvci5jdXI7CgogICAgICAgICAgICAvLyBDb25jYXRlbmF0ZSBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgdGhlIG5ldyBsaWdhdHVyZSB3aWxsIHJlcHJlc2VudAogICAgICAgICAgICB2YXIgY2hhcmFjdGVycyA9IF9jdXJHbHlwaC5jb2RlUG9pbnRzLnNsaWNlKCk7CiAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBtYXRjaGVkLCBfaXNBcnJheTIgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjIpLCBfaTIgPSAwLCBfaXRlcmF0b3IyID0gX2lzQXJyYXkyID8gX2l0ZXJhdG9yMiA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IyKTs7KSB7CiAgICAgICAgICAgICAgdmFyIF9yZWYyOwoKICAgICAgICAgICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgICAgICAgICBpZiAoX2kyID49IF9pdGVyYXRvcjIubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgICAgIF9yZWYyID0gX2l0ZXJhdG9yMltfaTIrK107CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF9pMiA9IF9pdGVyYXRvcjIubmV4dCgpOwogICAgICAgICAgICAgICAgaWYgKF9pMi5kb25lKSBicmVhazsKICAgICAgICAgICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIF9pbmRleDQgPSBfcmVmMjsKCiAgICAgICAgICAgICAgY2hhcmFjdGVycy5wdXNoLmFwcGx5KGNoYXJhY3RlcnMsIHRoaXMuZ2x5cGhzW19pbmRleDRdLmNvZGVQb2ludHMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBDcmVhdGUgdGhlIHJlcGxhY2VtZW50IGxpZ2F0dXJlIGdseXBoCiAgICAgICAgICAgIHZhciBsaWdhdHVyZUdseXBoID0gbmV3IEdseXBoSW5mbyh0aGlzLmZvbnQsIGxpZ2F0dXJlLmdseXBoLCBjaGFyYWN0ZXJzLCBfY3VyR2x5cGguZmVhdHVyZXMpOwogICAgICAgICAgICBsaWdhdHVyZUdseXBoLnNoYXBlckluZm8gPSBfY3VyR2x5cGguc2hhcGVySW5mbzsKICAgICAgICAgICAgbGlnYXR1cmVHbHlwaC5pc0xpZ2F0ZWQgPSB0cnVlOwogICAgICAgICAgICBsaWdhdHVyZUdseXBoLnN1YnN0aXR1dGVkID0gdHJ1ZTsKCiAgICAgICAgICAgIC8vIEZyb20gSGFyZmJ1eno6CiAgICAgICAgICAgIC8vIC0gSWYgaXQgKmlzKiBhIG1hcmsgbGlnYXR1cmUsIHdlIGRvbid0IGFsbG9jYXRlIGEgbmV3IGxpZ2F0dXJlIGlkLCBhbmQgbGVhdmUKICAgICAgICAgICAgLy8gICB0aGUgbGlnYXR1cmUgdG8ga2VlcCBpdHMgb2xkIGxpZ2F0dXJlIGlkLiAgVGhpcyB3aWxsIGFsbG93IGl0IHRvIGF0dGFjaCB0bwogICAgICAgICAgICAvLyAgIGEgYmFzZSBsaWdhdHVyZSBpbiBHUE9TLiAgRWcuIGlmIHRoZSBzZXF1ZW5jZSBpczogTEFNLExBTSxTSEFEREEsRkFUSEEsSEVILAogICAgICAgICAgICAvLyAgIGFuZCBMQU0sTEFNLEhFSCBmb3IgYSBsaWdhdHVyZSwgdGhleSB3aWxsIGxlYXZlIFNIQUREQSBhbmQgRkFUSEEgd2l0aCBhCiAgICAgICAgICAgIC8vICAgbGlnYXR1cmUgaWQgYW5kIGNvbXBvbmVudCB2YWx1ZSBvZiAyLiAgVGhlbiBpZiBTSEFEREEsRkFUSEEgZm9ybSBhIGxpZ2F0dXJlCiAgICAgICAgICAgIC8vICAgbGF0ZXIsIHdlIGRvbid0IHdhbnQgdGhlbSB0byBsb3NlIHRoZWlyIGxpZ2F0dXJlIGlkL2NvbXBvbmVudCwgb3RoZXJ3aXNlCiAgICAgICAgICAgIC8vICAgR1BPUyB3aWxsIGZhaWwgdG8gY29ycmVjdGx5IHBvc2l0aW9uIHRoZSBtYXJrIGxpZ2F0dXJlIG9uIHRvcCBvZiB0aGUKICAgICAgICAgICAgLy8gICBMQU0sTEFNLEhFSCBsaWdhdHVyZS4gU2VlIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02NzYzNDMKICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gLSBJZiBhIGxpZ2F0dXJlIGlzIGZvcm1lZCBvZiBjb21wb25lbnRzIHRoYXQgc29tZSBvZiB3aGljaCBhcmUgYWxzbyBsaWdhdHVyZXMKICAgICAgICAgICAgLy8gICB0aGVtc2VsdmVzLCBhbmQgdGhvc2UgbGlnYXR1cmUgY29tcG9uZW50cyBoYWQgbWFya3MgYXR0YWNoZWQgdG8gKnRoZWlyKgogICAgICAgICAgICAvLyAgIGNvbXBvbmVudHMsIHdlIGhhdmUgdG8gYXR0YWNoIHRoZSBtYXJrcyB0byB0aGUgbmV3IGxpZ2F0dXJlIGNvbXBvbmVudAogICAgICAgICAgICAvLyAgIHBvc2l0aW9ucyEgIE5vdyAqdGhhdConcyB0cmlja3khICBBbmQgdGhlc2UgbWFya3MgbWF5IGJlIGZvbGxvd2luZyB0aGUKICAgICAgICAgICAgLy8gICBsYXN0IGNvbXBvbmVudCBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIHNvIHdlIHNob3VsZCBsb29wIGZvcndhcmQgbG9va2luZwogICAgICAgICAgICAvLyAgIGZvciB0aGVtIGFuZCB1cGRhdGUgdGhlbS4KICAgICAgICAgICAgLy8KICAgICAgICAgICAgLy8gICBFZy4gdGhlIHNlcXVlbmNlIGlzIExBTSxMQU0sU0hBRERBLEZBVEhBLEhFSCwgYW5kIHRoZSBmb250IGZpcnN0IGZvcm1zIGEKICAgICAgICAgICAgLy8gICAnY2FsdCcgbGlnYXR1cmUgb2YgTEFNLEhFSCwgbGVhdmluZyB0aGUgU0hBRERBIGFuZCBGQVRIQSB3aXRoIGEgbGlnYXR1cmUKICAgICAgICAgICAgLy8gICBpZCBhbmQgY29tcG9uZW50ID09IDEuICBOb3csIGR1cmluZyAnbGlnYScsIHRoZSBMQU0gYW5kIHRoZSBMQU0tSEVIIGxpZ2F0dXJlCiAgICAgICAgICAgIC8vICAgZm9ybSBhIExBTS1MQU0tSEVIIGxpZ2F0dXJlLiAgV2UgbmVlZCB0byByZWFzc2lnbiB0aGUgU0hBRERBIGFuZCBGQVRIQSB0bwogICAgICAgICAgICAvLyAgIHRoZSBuZXcgbGlnYXR1cmUgd2l0aCBhIGNvbXBvbmVudCB2YWx1ZSBvZiAyLgogICAgICAgICAgICAvLwogICAgICAgICAgICAvLyAgIFRoaXMgaW4gZmFjdCBoYXBwZW5lZCB0byBhIGZvbnQuLi4gIFNlZSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDM3NjMzCiAgICAgICAgICAgIHZhciBpc01hcmtMaWdhdHVyZSA9IF9jdXJHbHlwaC5pc01hcms7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWF0Y2hlZC5sZW5ndGggJiYgaXNNYXJrTGlnYXR1cmU7IGkrKykgewogICAgICAgICAgICAgIGlzTWFya0xpZ2F0dXJlID0gdGhpcy5nbHlwaHNbbWF0Y2hlZFtpXV0uaXNNYXJrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsaWdhdHVyZUdseXBoLmxpZ2F0dXJlSUQgPSBpc01hcmtMaWdhdHVyZSA/IG51bGwgOiB0aGlzLmxpZ2F0dXJlSUQrKzsKCiAgICAgICAgICAgIHZhciBsYXN0TGlnSUQgPSBfY3VyR2x5cGgubGlnYXR1cmVJRDsKICAgICAgICAgICAgdmFyIGxhc3ROdW1Db21wcyA9IF9jdXJHbHlwaC5jb2RlUG9pbnRzLmxlbmd0aDsKICAgICAgICAgICAgdmFyIGN1ckNvbXBzID0gbGFzdE51bUNvbXBzOwogICAgICAgICAgICB2YXIgaWR4ID0gdGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4ICsgMTsKCiAgICAgICAgICAgIC8vIFNldCBsaWdhdHVyZUlEIGFuZCBsaWdhdHVyZUNvbXBvbmVudCBvbiBnbHlwaHMgdGhhdCB3ZXJlIHNraXBwZWQgaW4gdGhlIG1hdGNoZWQgc2VxdWVuY2UuCiAgICAgICAgICAgIC8vIFRoaXMgYWxsb3dzIEdQT1MgdG8gYXR0YWNoIG1hcmtzIHRvIHRoZSBjb3JyZWN0IGxpZ2F0dXJlIGNvbXBvbmVudHMuCiAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSBtYXRjaGVkLCBfaXNBcnJheTMgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjMpLCBfaTMgPSAwLCBfaXRlcmF0b3IzID0gX2lzQXJyYXkzID8gX2l0ZXJhdG9yMyA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IzKTs7KSB7CiAgICAgICAgICAgICAgdmFyIF9yZWYzOwoKICAgICAgICAgICAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgICAgICAgICAgICBpZiAoX2kzID49IF9pdGVyYXRvcjMubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgICAgIF9yZWYzID0gX2l0ZXJhdG9yM1tfaTMrK107CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIF9pMyA9IF9pdGVyYXRvcjMubmV4dCgpOwogICAgICAgICAgICAgICAgaWYgKF9pMy5kb25lKSBicmVhazsKICAgICAgICAgICAgICAgIF9yZWYzID0gX2kzLnZhbHVlOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIG1hdGNoSW5kZXggPSBfcmVmMzsKCiAgICAgICAgICAgICAgLy8gRG9uJ3QgYXNzaWduIG5ldyBsaWdhdHVyZSBjb21wb25lbnRzIGZvciBtYXJrIGxpZ2F0dXJlcyAoc2VlIGFib3ZlKQogICAgICAgICAgICAgIGlmIChpc01hcmtMaWdhdHVyZSkgewogICAgICAgICAgICAgICAgaWR4ID0gbWF0Y2hJbmRleDsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgd2hpbGUgKGlkeCA8IG1hdGNoSW5kZXgpIHsKICAgICAgICAgICAgICAgICAgdmFyIGxpZ2F0dXJlQ29tcG9uZW50ID0gY3VyQ29tcHMgLSBsYXN0TnVtQ29tcHMgKyBNYXRoLm1pbih0aGlzLmdseXBoc1tpZHhdLmxpZ2F0dXJlQ29tcG9uZW50IHx8IDEsIGxhc3ROdW1Db21wcyk7CiAgICAgICAgICAgICAgICAgIHRoaXMuZ2x5cGhzW2lkeF0ubGlnYXR1cmVJRCA9IGxpZ2F0dXJlR2x5cGgubGlnYXR1cmVJRDsKICAgICAgICAgICAgICAgICAgdGhpcy5nbHlwaHNbaWR4XS5saWdhdHVyZUNvbXBvbmVudCA9IGxpZ2F0dXJlQ29tcG9uZW50OwogICAgICAgICAgICAgICAgICBpZHgrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGxhc3RMaWdJRCA9IHRoaXMuZ2x5cGhzW2lkeF0ubGlnYXR1cmVJRDsKICAgICAgICAgICAgICBsYXN0TnVtQ29tcHMgPSB0aGlzLmdseXBoc1tpZHhdLmNvZGVQb2ludHMubGVuZ3RoOwogICAgICAgICAgICAgIGN1ckNvbXBzICs9IGxhc3ROdW1Db21wczsKICAgICAgICAgICAgICBpZHgrKzsgLy8gc2tpcCBiYXNlIGdseXBoCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEFkanVzdCBsaWdhdHVyZSBjb21wb25lbnRzIGZvciBhbnkgbWFya3MgZm9sbG93aW5nCiAgICAgICAgICAgIGlmIChsYXN0TGlnSUQgJiYgIWlzTWFya0xpZ2F0dXJlKSB7CiAgICAgICAgICAgICAgZm9yICh2YXIgX2k0ID0gaWR4OyBfaTQgPCB0aGlzLmdseXBocy5sZW5ndGg7IF9pNCsrKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5nbHlwaHNbX2k0XS5saWdhdHVyZUlEID09PSBsYXN0TGlnSUQpIHsKICAgICAgICAgICAgICAgICAgdmFyIGxpZ2F0dXJlQ29tcG9uZW50ID0gY3VyQ29tcHMgLSBsYXN0TnVtQ29tcHMgKyBNYXRoLm1pbih0aGlzLmdseXBoc1tfaTRdLmxpZ2F0dXJlQ29tcG9uZW50IHx8IDEsIGxhc3ROdW1Db21wcyk7CiAgICAgICAgICAgICAgICAgIHRoaXMuZ2x5cGhzW19pNF0ubGlnYXR1cmVDb21wb25lbnQgPSBsaWdhdHVyZUNvbXBvbmVudDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBtYXRjaGVkIGdseXBocywgYW5kIHJlcGxhY2UgdGhlIGN1cnJlbnQgZ2x5cGggd2l0aCB0aGUgbGlnYXR1cmUgZ2x5cGgKICAgICAgICAgICAgZm9yICh2YXIgX2k1ID0gbWF0Y2hlZC5sZW5ndGggLSAxOyBfaTUgPj0gMDsgX2k1LS0pIHsKICAgICAgICAgICAgICB0aGlzLmdseXBocy5zcGxpY2UobWF0Y2hlZFtfaTVdLCAxKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy5nbHlwaHNbdGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4XSA9IGxpZ2F0dXJlR2x5cGg7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICBjYXNlIDU6CiAgICAgICAgLy8gQ29udGV4dHVhbCBTdWJzdGl0dXRpb24KICAgICAgICByZXR1cm4gdGhpcy5hcHBseUNvbnRleHQodGFibGUpOwoKICAgICAgY2FzZSA2OgogICAgICAgIC8vIENoYWluaW5nIENvbnRleHR1YWwgU3Vic3RpdHV0aW9uCiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlDaGFpbmluZ0NvbnRleHQodGFibGUpOwoKICAgICAgY2FzZSA3OgogICAgICAgIC8vIEV4dGVuc2lvbiBTdWJzdGl0dXRpb24KICAgICAgICByZXR1cm4gdGhpcy5hcHBseUxvb2t1cCh0YWJsZS5sb29rdXBUeXBlLCB0YWJsZS5leHRlbnNpb24pOwoKICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dTVUIgbG9va3VwVHlwZSAnICsgbG9va3VwVHlwZSArICcgaXMgbm90IHN1cHBvcnRlZCcpOwogICAgfQogIH07CgogIHJldHVybiBHU1VCUHJvY2Vzc29yOwp9KE9UUHJvY2Vzc29yKTsKCnZhciBHUE9TUHJvY2Vzc29yID0gZnVuY3Rpb24gKF9PVFByb2Nlc3NvcikgewogIF9pbmhlcml0cyhHUE9TUHJvY2Vzc29yLCBfT1RQcm9jZXNzb3IpOwoKICBmdW5jdGlvbiBHUE9TUHJvY2Vzc29yKCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEdQT1NQcm9jZXNzb3IpOwoKICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfT1RQcm9jZXNzb3IuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBHUE9TUHJvY2Vzc29yLnByb3RvdHlwZS5hcHBseVBvc2l0aW9uVmFsdWUgPSBmdW5jdGlvbiBhcHBseVBvc2l0aW9uVmFsdWUoc2VxdWVuY2VJbmRleCwgdmFsdWUpIHsKICAgIHZhciBwb3NpdGlvbiA9IHRoaXMucG9zaXRpb25zW3RoaXMuZ2x5cGhJdGVyYXRvci5wZWVrSW5kZXgoc2VxdWVuY2VJbmRleCldOwogICAgaWYgKHZhbHVlLnhBZHZhbmNlICE9IG51bGwpIHsKICAgICAgcG9zaXRpb24ueEFkdmFuY2UgKz0gdmFsdWUueEFkdmFuY2U7CiAgICB9CgogICAgaWYgKHZhbHVlLnlBZHZhbmNlICE9IG51bGwpIHsKICAgICAgcG9zaXRpb24ueUFkdmFuY2UgKz0gdmFsdWUueUFkdmFuY2U7CiAgICB9CgogICAgaWYgKHZhbHVlLnhQbGFjZW1lbnQgIT0gbnVsbCkgewogICAgICBwb3NpdGlvbi54T2Zmc2V0ICs9IHZhbHVlLnhQbGFjZW1lbnQ7CiAgICB9CgogICAgaWYgKHZhbHVlLnlQbGFjZW1lbnQgIT0gbnVsbCkgewogICAgICBwb3NpdGlvbi55T2Zmc2V0ICs9IHZhbHVlLnlQbGFjZW1lbnQ7CiAgICB9CgogICAgLy8gQWRqdXN0bWVudHMgZm9yIGZvbnQgdmFyaWF0aW9ucwogICAgdmFyIHZhcmlhdGlvblByb2Nlc3NvciA9IHRoaXMuZm9udC5fdmFyaWF0aW9uUHJvY2Vzc29yOwogICAgdmFyIHZhcmlhdGlvblN0b3JlID0gdGhpcy5mb250LkdERUYgJiYgdGhpcy5mb250LkdERUYuaXRlbVZhcmlhdGlvblN0b3JlOwogICAgaWYgKHZhcmlhdGlvblByb2Nlc3NvciAmJiB2YXJpYXRpb25TdG9yZSkgewogICAgICBpZiAodmFsdWUueFBsYURldmljZSkgewogICAgICAgIHBvc2l0aW9uLnhPZmZzZXQgKz0gdmFyaWF0aW9uUHJvY2Vzc29yLmdldERlbHRhKHZhcmlhdGlvblN0b3JlLCB2YWx1ZS54UGxhRGV2aWNlLmEsIHZhbHVlLnhQbGFEZXZpY2UuYik7CiAgICAgIH0KCiAgICAgIGlmICh2YWx1ZS55UGxhRGV2aWNlKSB7CiAgICAgICAgcG9zaXRpb24ueU9mZnNldCArPSB2YXJpYXRpb25Qcm9jZXNzb3IuZ2V0RGVsdGEodmFyaWF0aW9uU3RvcmUsIHZhbHVlLnlQbGFEZXZpY2UuYSwgdmFsdWUueVBsYURldmljZS5iKTsKICAgICAgfQoKICAgICAgaWYgKHZhbHVlLnhBZHZEZXZpY2UpIHsKICAgICAgICBwb3NpdGlvbi54QWR2YW5jZSArPSB2YXJpYXRpb25Qcm9jZXNzb3IuZ2V0RGVsdGEodmFyaWF0aW9uU3RvcmUsIHZhbHVlLnhBZHZEZXZpY2UuYSwgdmFsdWUueEFkdkRldmljZS5iKTsKICAgICAgfQoKICAgICAgaWYgKHZhbHVlLnlBZHZEZXZpY2UpIHsKICAgICAgICBwb3NpdGlvbi55QWR2YW5jZSArPSB2YXJpYXRpb25Qcm9jZXNzb3IuZ2V0RGVsdGEodmFyaWF0aW9uU3RvcmUsIHZhbHVlLnlBZHZEZXZpY2UuYSwgdmFsdWUueUFkdkRldmljZS5iKTsKICAgICAgfQogICAgfQoKICAgIC8vIFRPRE86IGRldmljZSB0YWJsZXMKICB9OwoKICBHUE9TUHJvY2Vzc29yLnByb3RvdHlwZS5hcHBseUxvb2t1cCA9IGZ1bmN0aW9uIGFwcGx5TG9va3VwKGxvb2t1cFR5cGUsIHRhYmxlKSB7CiAgICBzd2l0Y2ggKGxvb2t1cFR5cGUpIHsKICAgICAgY2FzZSAxOgogICAgICAgIHsKICAgICAgICAgIC8vIFNpbmdsZSBwb3NpdGlvbmluZyB2YWx1ZQogICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLmNvdmVyYWdlKTsKICAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIHN3aXRjaCAodGFibGUudmVyc2lvbikgewogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgdGhpcy5hcHBseVBvc2l0aW9uVmFsdWUoMCwgdGFibGUudmFsdWUpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgIHRoaXMuYXBwbHlQb3NpdGlvblZhbHVlKDAsIHRhYmxlLnZhbHVlcy5nZXQoaW5kZXgpKTsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICBjYXNlIDI6CiAgICAgICAgewogICAgICAgICAgLy8gUGFpciBBZGp1c3RtZW50IFBvc2l0aW9uaW5nCiAgICAgICAgICB2YXIgbmV4dEdseXBoID0gdGhpcy5nbHlwaEl0ZXJhdG9yLnBlZWsoKTsKICAgICAgICAgIGlmICghbmV4dEdseXBoKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgX2luZGV4ID0gdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLmNvdmVyYWdlKTsKICAgICAgICAgIGlmIChfaW5kZXggPT09IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KCiAgICAgICAgICBzd2l0Y2ggKHRhYmxlLnZlcnNpb24pIHsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgIC8vIEFkanVzdG1lbnRzIGZvciBnbHlwaCBwYWlycwogICAgICAgICAgICAgIHZhciBzZXQgPSB0YWJsZS5wYWlyU2V0cy5nZXQoX2luZGV4KTsKCiAgICAgICAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gc2V0LCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgICAgICAgICAgIHZhciBfcmVmOwoKICAgICAgICAgICAgICAgIGlmIChfaXNBcnJheSkgewogICAgICAgICAgICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICAgICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICAgICAgICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBfcGFpciA9IF9yZWY7CgogICAgICAgICAgICAgICAgaWYgKF9wYWlyLnNlY29uZEdseXBoID09PSBuZXh0R2x5cGguaWQpIHsKICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVBvc2l0aW9uVmFsdWUoMCwgX3BhaXIudmFsdWUxKTsKICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVBvc2l0aW9uVmFsdWUoMSwgX3BhaXIudmFsdWUyKTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgLy8gQ2xhc3MgcGFpciBhZGp1c3RtZW50CiAgICAgICAgICAgICAgdmFyIGNsYXNzMSA9IHRoaXMuZ2V0Q2xhc3NJRCh0aGlzLmdseXBoSXRlcmF0b3IuY3VyLmlkLCB0YWJsZS5jbGFzc0RlZjEpOwogICAgICAgICAgICAgIHZhciBjbGFzczIgPSB0aGlzLmdldENsYXNzSUQobmV4dEdseXBoLmlkLCB0YWJsZS5jbGFzc0RlZjIpOwogICAgICAgICAgICAgIGlmIChjbGFzczEgPT09IC0xIHx8IGNsYXNzMiA9PT0gLTEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHZhciBwYWlyID0gdGFibGUuY2xhc3NSZWNvcmRzLmdldChjbGFzczEpLmdldChjbGFzczIpOwogICAgICAgICAgICAgIHRoaXMuYXBwbHlQb3NpdGlvblZhbHVlKDAsIHBhaXIudmFsdWUxKTsKICAgICAgICAgICAgICB0aGlzLmFwcGx5UG9zaXRpb25WYWx1ZSgxLCBwYWlyLnZhbHVlMik7CiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgY2FzZSAzOgogICAgICAgIHsKICAgICAgICAgIC8vIEN1cnNpdmUgQXR0YWNobWVudCBQb3NpdGlvbmluZwogICAgICAgICAgdmFyIG5leHRJbmRleCA9IHRoaXMuZ2x5cGhJdGVyYXRvci5wZWVrSW5kZXgoKTsKICAgICAgICAgIHZhciBfbmV4dEdseXBoID0gdGhpcy5nbHlwaHNbbmV4dEluZGV4XTsKICAgICAgICAgIGlmICghX25leHRHbHlwaCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIGN1clJlY29yZCA9IHRhYmxlLmVudHJ5RXhpdFJlY29yZHNbdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLmNvdmVyYWdlKV07CiAgICAgICAgICBpZiAoIWN1clJlY29yZCB8fCAhY3VyUmVjb3JkLmV4aXRBbmNob3IpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBuZXh0UmVjb3JkID0gdGFibGUuZW50cnlFeGl0UmVjb3Jkc1t0aGlzLmNvdmVyYWdlSW5kZXgodGFibGUuY292ZXJhZ2UsIF9uZXh0R2x5cGguaWQpXTsKICAgICAgICAgIGlmICghbmV4dFJlY29yZCB8fCAhbmV4dFJlY29yZC5lbnRyeUFuY2hvcikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy5nZXRBbmNob3IobmV4dFJlY29yZC5lbnRyeUFuY2hvcik7CiAgICAgICAgICB2YXIgZXhpdCA9IHRoaXMuZ2V0QW5jaG9yKGN1clJlY29yZC5leGl0QW5jaG9yKTsKCiAgICAgICAgICB2YXIgY3VyID0gdGhpcy5wb3NpdGlvbnNbdGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4XTsKICAgICAgICAgIHZhciBuZXh0ID0gdGhpcy5wb3NpdGlvbnNbbmV4dEluZGV4XTsKCiAgICAgICAgICBzd2l0Y2ggKHRoaXMuZGlyZWN0aW9uKSB7CiAgICAgICAgICAgIGNhc2UgJ2x0cic6CiAgICAgICAgICAgICAgY3VyLnhBZHZhbmNlID0gZXhpdC54ICsgY3VyLnhPZmZzZXQ7CgogICAgICAgICAgICAgIHZhciBkID0gZW50cnkueCArIG5leHQueE9mZnNldDsKICAgICAgICAgICAgICBuZXh0LnhBZHZhbmNlIC09IGQ7CiAgICAgICAgICAgICAgbmV4dC54T2Zmc2V0IC09IGQ7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdydGwnOgogICAgICAgICAgICAgIGQgPSBleGl0LnggKyBjdXIueE9mZnNldDsKICAgICAgICAgICAgICBjdXIueEFkdmFuY2UgLT0gZDsKICAgICAgICAgICAgICBjdXIueE9mZnNldCAtPSBkOwogICAgICAgICAgICAgIG5leHQueEFkdmFuY2UgPSBlbnRyeS54ICsgbmV4dC54T2Zmc2V0OwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQoKICAgICAgICAgIGlmICh0aGlzLmdseXBoSXRlcmF0b3IuZmxhZ3MucmlnaHRUb0xlZnQpIHsKICAgICAgICAgICAgdGhpcy5nbHlwaEl0ZXJhdG9yLmN1ci5jdXJzaXZlQXR0YWNobWVudCA9IG5leHRJbmRleDsKICAgICAgICAgICAgY3VyLnlPZmZzZXQgPSBlbnRyeS55IC0gZXhpdC55OwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgX25leHRHbHlwaC5jdXJzaXZlQXR0YWNobWVudCA9IHRoaXMuZ2x5cGhJdGVyYXRvci5pbmRleDsKICAgICAgICAgICAgY3VyLnlPZmZzZXQgPSBleGl0LnkgLSBlbnRyeS55OwogICAgICAgICAgfQoKICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgIGNhc2UgNDoKICAgICAgICB7CiAgICAgICAgICAvLyBNYXJrIHRvIGJhc2UgcG9zaXRpb25pbmcKICAgICAgICAgIHZhciBtYXJrSW5kZXggPSB0aGlzLmNvdmVyYWdlSW5kZXgodGFibGUubWFya0NvdmVyYWdlKTsKICAgICAgICAgIGlmIChtYXJrSW5kZXggPT09IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyBzZWFyY2ggYmFja3dhcmQgZm9yIGEgYmFzZSBnbHlwaAogICAgICAgICAgdmFyIGJhc2VHbHlwaEluZGV4ID0gdGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4OwogICAgICAgICAgd2hpbGUgKC0tYmFzZUdseXBoSW5kZXggPj0gMCAmJiAodGhpcy5nbHlwaHNbYmFzZUdseXBoSW5kZXhdLmlzTWFyayB8fCB0aGlzLmdseXBoc1tiYXNlR2x5cGhJbmRleF0ubGlnYXR1cmVDb21wb25lbnQgPiAwKSkge30KCiAgICAgICAgICBpZiAoYmFzZUdseXBoSW5kZXggPCAwKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgYmFzZUluZGV4ID0gdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLmJhc2VDb3ZlcmFnZSwgdGhpcy5nbHlwaHNbYmFzZUdseXBoSW5kZXhdLmlkKTsKICAgICAgICAgIGlmIChiYXNlSW5kZXggPT09IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgbWFya1JlY29yZCA9IHRhYmxlLm1hcmtBcnJheVttYXJrSW5kZXhdOwogICAgICAgICAgdmFyIGJhc2VBbmNob3IgPSB0YWJsZS5iYXNlQXJyYXlbYmFzZUluZGV4XVttYXJrUmVjb3JkLmNsYXNzXTsKICAgICAgICAgIHRoaXMuYXBwbHlBbmNob3IobWFya1JlY29yZCwgYmFzZUFuY2hvciwgYmFzZUdseXBoSW5kZXgpOwogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgY2FzZSA1OgogICAgICAgIHsKICAgICAgICAgIC8vIE1hcmsgdG8gbGlnYXR1cmUgcG9zaXRpb25pbmcKICAgICAgICAgIHZhciBfbWFya0luZGV4ID0gdGhpcy5jb3ZlcmFnZUluZGV4KHRhYmxlLm1hcmtDb3ZlcmFnZSk7CiAgICAgICAgICBpZiAoX21hcmtJbmRleCA9PT0gLTEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHNlYXJjaCBiYWNrd2FyZCBmb3IgYSBiYXNlIGdseXBoCiAgICAgICAgICB2YXIgX2Jhc2VHbHlwaEluZGV4ID0gdGhpcy5nbHlwaEl0ZXJhdG9yLmluZGV4OwogICAgICAgICAgd2hpbGUgKC0tX2Jhc2VHbHlwaEluZGV4ID49IDAgJiYgdGhpcy5nbHlwaHNbX2Jhc2VHbHlwaEluZGV4XS5pc01hcmspIHt9CgogICAgICAgICAgaWYgKF9iYXNlR2x5cGhJbmRleCA8IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBsaWdJbmRleCA9IHRoaXMuY292ZXJhZ2VJbmRleCh0YWJsZS5saWdhdHVyZUNvdmVyYWdlLCB0aGlzLmdseXBoc1tfYmFzZUdseXBoSW5kZXhdLmlkKTsKICAgICAgICAgIGlmIChsaWdJbmRleCA9PT0gLTEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBsaWdBdHRhY2ggPSB0YWJsZS5saWdhdHVyZUFycmF5W2xpZ0luZGV4XTsKICAgICAgICAgIHZhciBtYXJrR2x5cGggPSB0aGlzLmdseXBoSXRlcmF0b3IuY3VyOwogICAgICAgICAgdmFyIGxpZ0dseXBoID0gdGhpcy5nbHlwaHNbX2Jhc2VHbHlwaEluZGV4XTsKICAgICAgICAgIHZhciBjb21wSW5kZXggPSBsaWdHbHlwaC5saWdhdHVyZUlEICYmIGxpZ0dseXBoLmxpZ2F0dXJlSUQgPT09IG1hcmtHbHlwaC5saWdhdHVyZUlEICYmIG1hcmtHbHlwaC5saWdhdHVyZUNvbXBvbmVudCA+IDAgPyBNYXRoLm1pbihtYXJrR2x5cGgubGlnYXR1cmVDb21wb25lbnQsIGxpZ0dseXBoLmNvZGVQb2ludHMubGVuZ3RoKSAtIDEgOiBsaWdHbHlwaC5jb2RlUG9pbnRzLmxlbmd0aCAtIDE7CgogICAgICAgICAgdmFyIF9tYXJrUmVjb3JkID0gdGFibGUubWFya0FycmF5W19tYXJrSW5kZXhdOwogICAgICAgICAgdmFyIF9iYXNlQW5jaG9yID0gbGlnQXR0YWNoW2NvbXBJbmRleF1bX21hcmtSZWNvcmQuY2xhc3NdOwogICAgICAgICAgdGhpcy5hcHBseUFuY2hvcihfbWFya1JlY29yZCwgX2Jhc2VBbmNob3IsIF9iYXNlR2x5cGhJbmRleCk7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICBjYXNlIDY6CiAgICAgICAgewogICAgICAgICAgLy8gTWFyayB0byBtYXJrIHBvc2l0aW9uaW5nCiAgICAgICAgICB2YXIgbWFyazFJbmRleCA9IHRoaXMuY292ZXJhZ2VJbmRleCh0YWJsZS5tYXJrMUNvdmVyYWdlKTsKICAgICAgICAgIGlmIChtYXJrMUluZGV4ID09PSAtMSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gZ2V0IHRoZSBwcmV2aW91cyBtYXJrIHRvIGF0dGFjaCB0bwogICAgICAgICAgdmFyIHByZXZJbmRleCA9IHRoaXMuZ2x5cGhJdGVyYXRvci5wZWVrSW5kZXgoLTEpOwogICAgICAgICAgdmFyIHByZXYgPSB0aGlzLmdseXBoc1twcmV2SW5kZXhdOwogICAgICAgICAgaWYgKCFwcmV2IHx8ICFwcmV2LmlzTWFyaykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIF9jdXIgPSB0aGlzLmdseXBoSXRlcmF0b3IuY3VyOwoKICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbG9naWMgd2FzIGJvcnJvd2VkIGZyb20gSGFyZmJ1enoKICAgICAgICAgIHZhciBnb29kID0gZmFsc2U7CiAgICAgICAgICBpZiAoX2N1ci5saWdhdHVyZUlEID09PSBwcmV2LmxpZ2F0dXJlSUQpIHsKICAgICAgICAgICAgaWYgKCFfY3VyLmxpZ2F0dXJlSUQpIHsKICAgICAgICAgICAgICAvLyBNYXJrcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgYmFzZQogICAgICAgICAgICAgIGdvb2QgPSB0cnVlOwogICAgICAgICAgICB9IGVsc2UgaWYgKF9jdXIubGlnYXR1cmVDb21wb25lbnQgPT09IHByZXYubGlnYXR1cmVDb21wb25lbnQpIHsKICAgICAgICAgICAgICAvLyBNYXJrcyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgbGlnYXR1cmUgY29tcG9uZW50CiAgICAgICAgICAgICAgZ29vZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIElmIGxpZ2F0dXJlIGlkcyBkb24ndCBtYXRjaCwgaXQgbWF5IGJlIHRoZSBjYXNlIHRoYXQgb25lIG9mIHRoZSBtYXJrcwogICAgICAgICAgICAvLyBpdHNlbGYgaXMgYSBsaWdhdHVyZSwgaW4gd2hpY2ggY2FzZSBtYXRjaC4KICAgICAgICAgICAgaWYgKF9jdXIubGlnYXR1cmVJRCAmJiAhX2N1ci5saWdhdHVyZUNvbXBvbmVudCB8fCBwcmV2LmxpZ2F0dXJlSUQgJiYgIXByZXYubGlnYXR1cmVDb21wb25lbnQpIHsKICAgICAgICAgICAgICBnb29kID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGlmICghZ29vZCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICB9CgogICAgICAgICAgdmFyIG1hcmsySW5kZXggPSB0aGlzLmNvdmVyYWdlSW5kZXgodGFibGUubWFyazJDb3ZlcmFnZSwgcHJldi5pZCk7CiAgICAgICAgICBpZiAobWFyazJJbmRleCA9PT0gLTEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgfQoKICAgICAgICAgIHZhciBfbWFya1JlY29yZDIgPSB0YWJsZS5tYXJrMUFycmF5W21hcmsxSW5kZXhdOwogICAgICAgICAgdmFyIF9iYXNlQW5jaG9yMiA9IHRhYmxlLm1hcmsyQXJyYXlbbWFyazJJbmRleF1bX21hcmtSZWNvcmQyLmNsYXNzXTsKICAgICAgICAgIHRoaXMuYXBwbHlBbmNob3IoX21hcmtSZWNvcmQyLCBfYmFzZUFuY2hvcjIsIHByZXZJbmRleCk7CiAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICBjYXNlIDc6CiAgICAgICAgLy8gQ29udGV4dHVhbCBwb3NpdGlvbmluZwogICAgICAgIHJldHVybiB0aGlzLmFwcGx5Q29udGV4dCh0YWJsZSk7CgogICAgICBjYXNlIDg6CiAgICAgICAgLy8gQ2hhaW5pbmcgY29udGV4dHVhbCBwb3NpdGlvbmluZwogICAgICAgIHJldHVybiB0aGlzLmFwcGx5Q2hhaW5pbmdDb250ZXh0KHRhYmxlKTsKCiAgICAgIGNhc2UgOToKICAgICAgICAvLyBFeHRlbnNpb24gcG9zaXRpb25pbmcKICAgICAgICByZXR1cm4gdGhpcy5hcHBseUxvb2t1cCh0YWJsZS5sb29rdXBUeXBlLCB0YWJsZS5leHRlbnNpb24pOwoKICAgICAgZGVmYXVsdDoKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIEdQT1MgdGFibGU6ICcgKyBsb29rdXBUeXBlKTsKICAgIH0KICB9OwoKICBHUE9TUHJvY2Vzc29yLnByb3RvdHlwZS5hcHBseUFuY2hvciA9IGZ1bmN0aW9uIGFwcGx5QW5jaG9yKG1hcmtSZWNvcmQsIGJhc2VBbmNob3IsIGJhc2VHbHlwaEluZGV4KSB7CiAgICB2YXIgYmFzZUNvb3JkcyA9IHRoaXMuZ2V0QW5jaG9yKGJhc2VBbmNob3IpOwogICAgdmFyIG1hcmtDb29yZHMgPSB0aGlzLmdldEFuY2hvcihtYXJrUmVjb3JkLm1hcmtBbmNob3IpOwoKICAgIHZhciBiYXNlUG9zID0gdGhpcy5wb3NpdGlvbnNbYmFzZUdseXBoSW5kZXhdOwogICAgdmFyIG1hcmtQb3MgPSB0aGlzLnBvc2l0aW9uc1t0aGlzLmdseXBoSXRlcmF0b3IuaW5kZXhdOwoKICAgIG1hcmtQb3MueE9mZnNldCA9IGJhc2VDb29yZHMueCAtIG1hcmtDb29yZHMueDsKICAgIG1hcmtQb3MueU9mZnNldCA9IGJhc2VDb29yZHMueSAtIG1hcmtDb29yZHMueTsKICAgIHRoaXMuZ2x5cGhJdGVyYXRvci5jdXIubWFya0F0dGFjaG1lbnQgPSBiYXNlR2x5cGhJbmRleDsKICB9OwoKICBHUE9TUHJvY2Vzc29yLnByb3RvdHlwZS5nZXRBbmNob3IgPSBmdW5jdGlvbiBnZXRBbmNob3IoYW5jaG9yKSB7CiAgICAvLyBUT0RPOiBjb250b3VyIHBvaW50LCBkZXZpY2UgdGFibGVzCiAgICB2YXIgeCA9IGFuY2hvci54Q29vcmRpbmF0ZTsKICAgIHZhciB5ID0gYW5jaG9yLnlDb29yZGluYXRlOwoKICAgIC8vIEFkanVzdG1lbnRzIGZvciBmb250IHZhcmlhdGlvbnMKICAgIHZhciB2YXJpYXRpb25Qcm9jZXNzb3IgPSB0aGlzLmZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvcjsKICAgIHZhciB2YXJpYXRpb25TdG9yZSA9IHRoaXMuZm9udC5HREVGICYmIHRoaXMuZm9udC5HREVGLml0ZW1WYXJpYXRpb25TdG9yZTsKICAgIGlmICh2YXJpYXRpb25Qcm9jZXNzb3IgJiYgdmFyaWF0aW9uU3RvcmUpIHsKICAgICAgaWYgKGFuY2hvci54RGV2aWNlVGFibGUpIHsKICAgICAgICB4ICs9IHZhcmlhdGlvblByb2Nlc3Nvci5nZXREZWx0YSh2YXJpYXRpb25TdG9yZSwgYW5jaG9yLnhEZXZpY2VUYWJsZS5hLCBhbmNob3IueERldmljZVRhYmxlLmIpOwogICAgICB9CgogICAgICBpZiAoYW5jaG9yLnlEZXZpY2VUYWJsZSkgewogICAgICAgIHkgKz0gdmFyaWF0aW9uUHJvY2Vzc29yLmdldERlbHRhKHZhcmlhdGlvblN0b3JlLCBhbmNob3IueURldmljZVRhYmxlLmEsIGFuY2hvci55RGV2aWNlVGFibGUuYik7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4geyB4OiB4LCB5OiB5IH07CiAgfTsKCiAgR1BPU1Byb2Nlc3Nvci5wcm90b3R5cGUuYXBwbHlGZWF0dXJlcyA9IGZ1bmN0aW9uIGFwcGx5RmVhdHVyZXModXNlckZlYXR1cmVzLCBnbHlwaHMsIGFkdmFuY2VzKSB7CiAgICBfT1RQcm9jZXNzb3IucHJvdG90eXBlLmFwcGx5RmVhdHVyZXMuY2FsbCh0aGlzLCB1c2VyRmVhdHVyZXMsIGdseXBocywgYWR2YW5jZXMpOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5nbHlwaHMubGVuZ3RoOyBpKyspIHsKICAgICAgdGhpcy5maXhDdXJzaXZlQXR0YWNobWVudChpKTsKICAgIH0KCiAgICB0aGlzLmZpeE1hcmtBdHRhY2htZW50KCk7CiAgfTsKCiAgR1BPU1Byb2Nlc3Nvci5wcm90b3R5cGUuZml4Q3Vyc2l2ZUF0dGFjaG1lbnQgPSBmdW5jdGlvbiBmaXhDdXJzaXZlQXR0YWNobWVudChpKSB7CiAgICB2YXIgZ2x5cGggPSB0aGlzLmdseXBoc1tpXTsKICAgIGlmIChnbHlwaC5jdXJzaXZlQXR0YWNobWVudCAhPSBudWxsKSB7CiAgICAgIHZhciBqID0gZ2x5cGguY3Vyc2l2ZUF0dGFjaG1lbnQ7CgogICAgICBnbHlwaC5jdXJzaXZlQXR0YWNobWVudCA9IG51bGw7CiAgICAgIHRoaXMuZml4Q3Vyc2l2ZUF0dGFjaG1lbnQoaik7CgogICAgICB0aGlzLnBvc2l0aW9uc1tpXS55T2Zmc2V0ICs9IHRoaXMucG9zaXRpb25zW2pdLnlPZmZzZXQ7CiAgICB9CiAgfTsKCiAgR1BPU1Byb2Nlc3Nvci5wcm90b3R5cGUuZml4TWFya0F0dGFjaG1lbnQgPSBmdW5jdGlvbiBmaXhNYXJrQXR0YWNobWVudCgpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5nbHlwaHMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGdseXBoID0gdGhpcy5nbHlwaHNbaV07CiAgICAgIGlmIChnbHlwaC5tYXJrQXR0YWNobWVudCAhPSBudWxsKSB7CiAgICAgICAgdmFyIGogPSBnbHlwaC5tYXJrQXR0YWNobWVudDsKCiAgICAgICAgdGhpcy5wb3NpdGlvbnNbaV0ueE9mZnNldCArPSB0aGlzLnBvc2l0aW9uc1tqXS54T2Zmc2V0OwogICAgICAgIHRoaXMucG9zaXRpb25zW2ldLnlPZmZzZXQgKz0gdGhpcy5wb3NpdGlvbnNbal0ueU9mZnNldDsKCiAgICAgICAgaWYgKHRoaXMuZGlyZWN0aW9uID09PSAnbHRyJykgewogICAgICAgICAgZm9yICh2YXIgayA9IGo7IGsgPCBpOyBrKyspIHsKICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbaV0ueE9mZnNldCAtPSB0aGlzLnBvc2l0aW9uc1trXS54QWR2YW5jZTsKICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbaV0ueU9mZnNldCAtPSB0aGlzLnBvc2l0aW9uc1trXS55QWR2YW5jZTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgZm9yICh2YXIgX2sgPSBqICsgMTsgX2sgPCBpICsgMTsgX2srKykgewogICAgICAgICAgICB0aGlzLnBvc2l0aW9uc1tpXS54T2Zmc2V0ICs9IHRoaXMucG9zaXRpb25zW19rXS54QWR2YW5jZTsKICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnNbaV0ueU9mZnNldCArPSB0aGlzLnBvc2l0aW9uc1tfa10ueUFkdmFuY2U7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfTsKCiAgcmV0dXJuIEdQT1NQcm9jZXNzb3I7Cn0oT1RQcm9jZXNzb3IpOwoKdmFyIE9UTGF5b3V0RW5naW5lID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIE9UTGF5b3V0RW5naW5lKGZvbnQpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBPVExheW91dEVuZ2luZSk7CgogICAgdGhpcy5mb250ID0gZm9udDsKICAgIHRoaXMuZ2x5cGhJbmZvcyA9IG51bGw7CiAgICB0aGlzLnBsYW4gPSBudWxsOwogICAgdGhpcy5HU1VCUHJvY2Vzc29yID0gbnVsbDsKICAgIHRoaXMuR1BPU1Byb2Nlc3NvciA9IG51bGw7CiAgICB0aGlzLmZhbGxiYWNrUG9zaXRpb24gPSB0cnVlOwoKICAgIGlmIChmb250LkdTVUIpIHsKICAgICAgdGhpcy5HU1VCUHJvY2Vzc29yID0gbmV3IEdTVUJQcm9jZXNzb3IoZm9udCwgZm9udC5HU1VCKTsKICAgIH0KCiAgICBpZiAoZm9udC5HUE9TKSB7CiAgICAgIHRoaXMuR1BPU1Byb2Nlc3NvciA9IG5ldyBHUE9TUHJvY2Vzc29yKGZvbnQsIGZvbnQuR1BPUyk7CiAgICB9CiAgfQoKICBPVExheW91dEVuZ2luZS5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbiBzZXR1cChnbHlwaFJ1bikgewogICAgdmFyIF90aGlzID0gdGhpczsKCiAgICAvLyBNYXAgZ2x5cGhzIHRvIEdseXBoSW5mbyBvYmplY3RzIHNvIGRhdGEgY2FuIGJlIHBhc3NlZCBiZXR3ZWVuCiAgICAvLyBHU1VCIGFuZCBHUE9TIHdpdGhvdXQgbXV0YXRpbmcgdGhlIHJlYWwgKHNoYXJlZCkgR2x5cGggb2JqZWN0cy4KICAgIHRoaXMuZ2x5cGhJbmZvcyA9IGdseXBoUnVuLmdseXBocy5tYXAoZnVuY3Rpb24gKGdseXBoKSB7CiAgICAgIHJldHVybiBuZXcgR2x5cGhJbmZvKF90aGlzLmZvbnQsIGdseXBoLmlkLCBbXS5jb25jYXQoZ2x5cGguY29kZVBvaW50cykpOwogICAgfSk7CgogICAgLy8gU2VsZWN0IGEgc2NyaXB0IGJhc2VkIG9uIHdoYXQgaXMgYXZhaWxhYmxlIGluIEdTVUIvR1BPUy4KICAgIHZhciBzY3JpcHQgPSBudWxsOwogICAgaWYgKHRoaXMuR1BPU1Byb2Nlc3NvcikgewogICAgICBzY3JpcHQgPSB0aGlzLkdQT1NQcm9jZXNzb3Iuc2VsZWN0U2NyaXB0KGdseXBoUnVuLnNjcmlwdCwgZ2x5cGhSdW4ubGFuZ3VhZ2UsIGdseXBoUnVuLmRpcmVjdGlvbik7CiAgICB9CgogICAgaWYgKHRoaXMuR1NVQlByb2Nlc3NvcikgewogICAgICBzY3JpcHQgPSB0aGlzLkdTVUJQcm9jZXNzb3Iuc2VsZWN0U2NyaXB0KGdseXBoUnVuLnNjcmlwdCwgZ2x5cGhSdW4ubGFuZ3VhZ2UsIGdseXBoUnVuLmRpcmVjdGlvbik7CiAgICB9CgogICAgLy8gQ2hvb3NlIGEgc2hhcGVyIGJhc2VkIG9uIHRoZSBzY3JpcHQsIGFuZCBzZXR1cCBhIHNoYXBpbmcgcGxhbi4KICAgIC8vIFRoaXMgZGV0ZXJtaW5lcyB3aGljaCBmZWF0dXJlcyB0byBhcHBseSB0byB3aGljaCBnbHlwaHMuCiAgICB0aGlzLnNoYXBlciA9IGNob29zZShzY3JpcHQpOwogICAgdGhpcy5wbGFuID0gbmV3IFNoYXBpbmdQbGFuKHRoaXMuZm9udCwgc2NyaXB0LCBnbHlwaFJ1bi5kaXJlY3Rpb24pOwogICAgdGhpcy5zaGFwZXIucGxhbih0aGlzLnBsYW4sIHRoaXMuZ2x5cGhJbmZvcywgZ2x5cGhSdW4uZmVhdHVyZXMpOwoKICAgIC8vIEFzc2lnbiBjaG9zZW4gZmVhdHVyZXMgdG8gb3V0cHV0IGdseXBoIHJ1bgogICAgZm9yICh2YXIga2V5IGluIHRoaXMucGxhbi5hbGxGZWF0dXJlcykgewogICAgICBnbHlwaFJ1bi5mZWF0dXJlc1trZXldID0gdHJ1ZTsKICAgIH0KICB9OwoKICBPVExheW91dEVuZ2luZS5wcm90b3R5cGUuc3Vic3RpdHV0ZSA9IGZ1bmN0aW9uIHN1YnN0aXR1dGUoZ2x5cGhSdW4pIHsKICAgIHZhciBfdGhpczIgPSB0aGlzOwoKICAgIGlmICh0aGlzLkdTVUJQcm9jZXNzb3IpIHsKICAgICAgdGhpcy5wbGFuLnByb2Nlc3ModGhpcy5HU1VCUHJvY2Vzc29yLCB0aGlzLmdseXBoSW5mb3MpOwoKICAgICAgLy8gTWFwIGdseXBoIGluZm9zIGJhY2sgdG8gbm9ybWFsIEdseXBoIG9iamVjdHMKICAgICAgZ2x5cGhSdW4uZ2x5cGhzID0gdGhpcy5nbHlwaEluZm9zLm1hcChmdW5jdGlvbiAoZ2x5cGhJbmZvKSB7CiAgICAgICAgcmV0dXJuIF90aGlzMi5mb250LmdldEdseXBoKGdseXBoSW5mby5pZCwgZ2x5cGhJbmZvLmNvZGVQb2ludHMpOwogICAgICB9KTsKICAgIH0KICB9OwoKICBPVExheW91dEVuZ2luZS5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbiBwb3NpdGlvbihnbHlwaFJ1bikgewogICAgaWYgKHRoaXMuc2hhcGVyLnplcm9NYXJrV2lkdGhzID09PSAnQkVGT1JFX0dQT1MnKSB7CiAgICAgIHRoaXMuemVyb01hcmtBZHZhbmNlcyhnbHlwaFJ1bi5wb3NpdGlvbnMpOwogICAgfQoKICAgIGlmICh0aGlzLkdQT1NQcm9jZXNzb3IpIHsKICAgICAgdGhpcy5wbGFuLnByb2Nlc3ModGhpcy5HUE9TUHJvY2Vzc29yLCB0aGlzLmdseXBoSW5mb3MsIGdseXBoUnVuLnBvc2l0aW9ucyk7CiAgICB9CgogICAgaWYgKHRoaXMuc2hhcGVyLnplcm9NYXJrV2lkdGhzID09PSAnQUZURVJfR1BPUycpIHsKICAgICAgdGhpcy56ZXJvTWFya0FkdmFuY2VzKGdseXBoUnVuLnBvc2l0aW9ucyk7CiAgICB9CgogICAgLy8gUmV2ZXJzZSB0aGUgZ2x5cGhzIGFuZCBwb3NpdGlvbnMgaWYgdGhlIHNjcmlwdCBpcyByaWdodC10by1sZWZ0CiAgICBpZiAoZ2x5cGhSdW4uZGlyZWN0aW9uID09PSAncnRsJykgewogICAgICBnbHlwaFJ1bi5nbHlwaHMucmV2ZXJzZSgpOwogICAgICBnbHlwaFJ1bi5wb3NpdGlvbnMucmV2ZXJzZSgpOwogICAgfQoKICAgIHJldHVybiB0aGlzLkdQT1NQcm9jZXNzb3IgJiYgdGhpcy5HUE9TUHJvY2Vzc29yLmZlYXR1cmVzOwogIH07CgogIE9UTGF5b3V0RW5naW5lLnByb3RvdHlwZS56ZXJvTWFya0FkdmFuY2VzID0gZnVuY3Rpb24gemVyb01hcmtBZHZhbmNlcyhwb3NpdGlvbnMpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5nbHlwaEluZm9zLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmICh0aGlzLmdseXBoSW5mb3NbaV0uaXNNYXJrKSB7CiAgICAgICAgcG9zaXRpb25zW2ldLnhBZHZhbmNlID0gMDsKICAgICAgICBwb3NpdGlvbnNbaV0ueUFkdmFuY2UgPSAwOwogICAgICB9CiAgICB9CiAgfTsKCiAgT1RMYXlvdXRFbmdpbmUucHJvdG90eXBlLmNsZWFudXAgPSBmdW5jdGlvbiBjbGVhbnVwKCkgewogICAgdGhpcy5nbHlwaEluZm9zID0gbnVsbDsKICAgIHRoaXMucGxhbiA9IG51bGw7CiAgICB0aGlzLnNoYXBlciA9IG51bGw7CiAgfTsKCiAgT1RMYXlvdXRFbmdpbmUucHJvdG90eXBlLmdldEF2YWlsYWJsZUZlYXR1cmVzID0gZnVuY3Rpb24gZ2V0QXZhaWxhYmxlRmVhdHVyZXMoc2NyaXB0LCBsYW5ndWFnZSkgewogICAgdmFyIGZlYXR1cmVzID0gW107CgogICAgaWYgKHRoaXMuR1NVQlByb2Nlc3NvcikgewogICAgICB0aGlzLkdTVUJQcm9jZXNzb3Iuc2VsZWN0U2NyaXB0KHNjcmlwdCwgbGFuZ3VhZ2UpOwogICAgICBmZWF0dXJlcy5wdXNoLmFwcGx5KGZlYXR1cmVzLCBfT2JqZWN0JGtleXModGhpcy5HU1VCUHJvY2Vzc29yLmZlYXR1cmVzKSk7CiAgICB9CgogICAgaWYgKHRoaXMuR1BPU1Byb2Nlc3NvcikgewogICAgICB0aGlzLkdQT1NQcm9jZXNzb3Iuc2VsZWN0U2NyaXB0KHNjcmlwdCwgbGFuZ3VhZ2UpOwogICAgICBmZWF0dXJlcy5wdXNoLmFwcGx5KGZlYXR1cmVzLCBfT2JqZWN0JGtleXModGhpcy5HUE9TUHJvY2Vzc29yLmZlYXR1cmVzKSk7CiAgICB9CgogICAgcmV0dXJuIGZlYXR1cmVzOwogIH07CgogIHJldHVybiBPVExheW91dEVuZ2luZTsKfSgpOwoKdmFyIExheW91dEVuZ2luZSA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBMYXlvdXRFbmdpbmUoZm9udCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIExheW91dEVuZ2luZSk7CgogICAgdGhpcy5mb250ID0gZm9udDsKICAgIHRoaXMudW5pY29kZUxheW91dEVuZ2luZSA9IG51bGw7CiAgICB0aGlzLmtlcm5Qcm9jZXNzb3IgPSBudWxsOwoKICAgIC8vIENob29zZSBhbiBhZHZhbmNlZCBsYXlvdXQgZW5naW5lLiBXZSB0cnkgdGhlIEFBVCBtb3J4IHRhYmxlIGZpcnN0IHNpbmNlIG1vcmUKICAgIC8vIHNjcmlwdHMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQgYmVjYXVzZSB0aGUgc2hhcGluZyBsb2dpYyBpcyBidWlsdCBpbnRvIHRoZSBmb250LgogICAgaWYgKHRoaXMuZm9udC5tb3J4KSB7CiAgICAgIHRoaXMuZW5naW5lID0gbmV3IEFBVExheW91dEVuZ2luZSh0aGlzLmZvbnQpOwogICAgfSBlbHNlIGlmICh0aGlzLmZvbnQuR1NVQiB8fCB0aGlzLmZvbnQuR1BPUykgewogICAgICB0aGlzLmVuZ2luZSA9IG5ldyBPVExheW91dEVuZ2luZSh0aGlzLmZvbnQpOwogICAgfQogIH0KCiAgTGF5b3V0RW5naW5lLnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbiBsYXlvdXQoc3RyaW5nLCBmZWF0dXJlcywgc2NyaXB0LCBsYW5ndWFnZSwgZGlyZWN0aW9uKSB7CiAgICAvLyBNYWtlIHRoZSBmZWF0dXJlcyBwYXJhbWV0ZXIgb3B0aW9uYWwKICAgIGlmICh0eXBlb2YgZmVhdHVyZXMgPT09ICdzdHJpbmcnKSB7CiAgICAgIGRpcmVjdGlvbiA9IGxhbmd1YWdlOwogICAgICBsYW5ndWFnZSA9IHNjcmlwdDsKICAgICAgc2NyaXB0ID0gZmVhdHVyZXM7CiAgICAgIGZlYXR1cmVzID0gW107CiAgICB9CgogICAgLy8gTWFwIHN0cmluZyB0byBnbHlwaHMgaWYgbmVlZGVkCiAgICBpZiAodHlwZW9mIHN0cmluZyA9PT0gJ3N0cmluZycpIHsKICAgICAgLy8gQXR0ZW1wdCB0byBkZXRlY3QgdGhlIHNjcmlwdCBmcm9tIHRoZSBzdHJpbmcgaWYgbm90IHByb3ZpZGVkLgogICAgICBpZiAoc2NyaXB0ID09IG51bGwpIHsKICAgICAgICBzY3JpcHQgPSBmb3JTdHJpbmcoc3RyaW5nKTsKICAgICAgfQoKICAgICAgdmFyIGdseXBocyA9IHRoaXMuZm9udC5nbHlwaHNGb3JTdHJpbmcoc3RyaW5nKTsKICAgIH0gZWxzZSB7CiAgICAgIC8vIEF0dGVtcHQgdG8gZGV0ZWN0IHRoZSBzY3JpcHQgZnJvbSB0aGUgZ2x5cGggY29kZSBwb2ludHMgaWYgbm90IHByb3ZpZGVkLgogICAgICBpZiAoc2NyaXB0ID09IG51bGwpIHsKICAgICAgICB2YXIgY29kZVBvaW50cyA9IFtdOwogICAgICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHN0cmluZywgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICAgICAgICB2YXIgX3JlZjsKCiAgICAgICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgZ2x5cGggPSBfcmVmOwoKICAgICAgICAgIGNvZGVQb2ludHMucHVzaC5hcHBseShjb2RlUG9pbnRzLCBnbHlwaC5jb2RlUG9pbnRzKTsKICAgICAgICB9CgogICAgICAgIHNjcmlwdCA9IGZvckNvZGVQb2ludHMoY29kZVBvaW50cyk7CiAgICAgIH0KCiAgICAgIHZhciBnbHlwaHMgPSBzdHJpbmc7CiAgICB9CgogICAgdmFyIGdseXBoUnVuID0gbmV3IEdseXBoUnVuKGdseXBocywgZmVhdHVyZXMsIHNjcmlwdCwgbGFuZ3VhZ2UsIGRpcmVjdGlvbik7CgogICAgLy8gUmV0dXJuIGVhcmx5IGlmIHRoZXJlIGFyZSBubyBnbHlwaHMKICAgIGlmIChnbHlwaHMubGVuZ3RoID09PSAwKSB7CiAgICAgIGdseXBoUnVuLnBvc2l0aW9ucyA9IFtdOwogICAgICByZXR1cm4gZ2x5cGhSdW47CiAgICB9CgogICAgLy8gU2V0dXAgdGhlIGFkdmFuY2VkIGxheW91dCBlbmdpbmUKICAgIGlmICh0aGlzLmVuZ2luZSAmJiB0aGlzLmVuZ2luZS5zZXR1cCkgewogICAgICB0aGlzLmVuZ2luZS5zZXR1cChnbHlwaFJ1bik7CiAgICB9CgogICAgLy8gU3Vic3RpdHV0ZSBhbmQgcG9zaXRpb24gdGhlIGdseXBocwogICAgdGhpcy5zdWJzdGl0dXRlKGdseXBoUnVuKTsKICAgIHRoaXMucG9zaXRpb24oZ2x5cGhSdW4pOwoKICAgIHRoaXMuaGlkZURlZmF1bHRJZ25vcmFibGVzKGdseXBoUnVuLmdseXBocywgZ2x5cGhSdW4ucG9zaXRpb25zKTsKCiAgICAvLyBMZXQgdGhlIGxheW91dCBlbmdpbmUgY2xlYW4gdXAgYW55IHN0YXRlIGl0IG1pZ2h0IGhhdmUKICAgIGlmICh0aGlzLmVuZ2luZSAmJiB0aGlzLmVuZ2luZS5jbGVhbnVwKSB7CiAgICAgIHRoaXMuZW5naW5lLmNsZWFudXAoKTsKICAgIH0KCiAgICByZXR1cm4gZ2x5cGhSdW47CiAgfTsKCiAgTGF5b3V0RW5naW5lLnByb3RvdHlwZS5zdWJzdGl0dXRlID0gZnVuY3Rpb24gc3Vic3RpdHV0ZShnbHlwaFJ1bikgewogICAgLy8gQ2FsbCB0aGUgYWR2YW5jZWQgbGF5b3V0IGVuZ2luZSB0byBtYWtlIHN1YnN0aXR1dGlvbnMKICAgIGlmICh0aGlzLmVuZ2luZSAmJiB0aGlzLmVuZ2luZS5zdWJzdGl0dXRlKSB7CiAgICAgIHRoaXMuZW5naW5lLnN1YnN0aXR1dGUoZ2x5cGhSdW4pOwogICAgfQogIH07CgogIExheW91dEVuZ2luZS5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbiBwb3NpdGlvbihnbHlwaFJ1bikgewogICAgLy8gR2V0IGluaXRpYWwgZ2x5cGggcG9zaXRpb25zCiAgICBnbHlwaFJ1bi5wb3NpdGlvbnMgPSBnbHlwaFJ1bi5nbHlwaHMubWFwKGZ1bmN0aW9uIChnbHlwaCkgewogICAgICByZXR1cm4gbmV3IEdseXBoUG9zaXRpb24oZ2x5cGguYWR2YW5jZVdpZHRoKTsKICAgIH0pOwogICAgdmFyIHBvc2l0aW9uZWQgPSBudWxsOwoKICAgIC8vIENhbGwgdGhlIGFkdmFuY2VkIGxheW91dCBlbmdpbmUuIFJldHVybnMgdGhlIGZlYXR1cmVzIGFwcGxpZWQuCiAgICBpZiAodGhpcy5lbmdpbmUgJiYgdGhpcy5lbmdpbmUucG9zaXRpb24pIHsKICAgICAgcG9zaXRpb25lZCA9IHRoaXMuZW5naW5lLnBvc2l0aW9uKGdseXBoUnVuKTsKICAgIH0KCiAgICAvLyBpZiB0aGVyZSBpcyBubyBHUE9TIHRhYmxlLCB1c2UgdW5pY29kZSBwcm9wZXJ0aWVzIHRvIHBvc2l0aW9uIG1hcmtzLgogICAgaWYgKCFwb3NpdGlvbmVkICYmICghdGhpcy5lbmdpbmUgfHwgdGhpcy5lbmdpbmUuZmFsbGJhY2tQb3NpdGlvbikpIHsKICAgICAgaWYgKCF0aGlzLnVuaWNvZGVMYXlvdXRFbmdpbmUpIHsKICAgICAgICB0aGlzLnVuaWNvZGVMYXlvdXRFbmdpbmUgPSBuZXcgVW5pY29kZUxheW91dEVuZ2luZSh0aGlzLmZvbnQpOwogICAgICB9CgogICAgICB0aGlzLnVuaWNvZGVMYXlvdXRFbmdpbmUucG9zaXRpb25HbHlwaHMoZ2x5cGhSdW4uZ2x5cGhzLCBnbHlwaFJ1bi5wb3NpdGlvbnMpOwogICAgfQoKICAgIC8vIGlmIGtlcm5pbmcgaXMgbm90IHN1cHBvcnRlZCBieSBHUE9TLCBkbyBrZXJuaW5nIHdpdGggdGhlIFRydWVUeXBlL0FBVCBrZXJuIHRhYmxlCiAgICBpZiAoKCFwb3NpdGlvbmVkIHx8ICFwb3NpdGlvbmVkLmtlcm4pICYmIGdseXBoUnVuLmZlYXR1cmVzLmtlcm4gIT09IGZhbHNlICYmIHRoaXMuZm9udC5rZXJuKSB7CiAgICAgIGlmICghdGhpcy5rZXJuUHJvY2Vzc29yKSB7CiAgICAgICAgdGhpcy5rZXJuUHJvY2Vzc29yID0gbmV3IEtlcm5Qcm9jZXNzb3IodGhpcy5mb250KTsKICAgICAgfQoKICAgICAgdGhpcy5rZXJuUHJvY2Vzc29yLnByb2Nlc3MoZ2x5cGhSdW4uZ2x5cGhzLCBnbHlwaFJ1bi5wb3NpdGlvbnMpOwogICAgICBnbHlwaFJ1bi5mZWF0dXJlcy5rZXJuID0gdHJ1ZTsKICAgIH0KICB9OwoKICBMYXlvdXRFbmdpbmUucHJvdG90eXBlLmhpZGVEZWZhdWx0SWdub3JhYmxlcyA9IGZ1bmN0aW9uIGhpZGVEZWZhdWx0SWdub3JhYmxlcyhnbHlwaHMsIHBvc2l0aW9ucykgewogICAgdmFyIHNwYWNlID0gdGhpcy5mb250LmdseXBoRm9yQ29kZVBvaW50KDB4MjApOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBnbHlwaHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0SWdub3JhYmxlKGdseXBoc1tpXS5jb2RlUG9pbnRzWzBdKSkgewogICAgICAgIGdseXBoc1tpXSA9IHNwYWNlOwogICAgICAgIHBvc2l0aW9uc1tpXS54QWR2YW5jZSA9IDA7CiAgICAgICAgcG9zaXRpb25zW2ldLnlBZHZhbmNlID0gMDsKICAgICAgfQogICAgfQogIH07CgogIExheW91dEVuZ2luZS5wcm90b3R5cGUuaXNEZWZhdWx0SWdub3JhYmxlID0gZnVuY3Rpb24gaXNEZWZhdWx0SWdub3JhYmxlKGNoKSB7CiAgICAvLyBGcm9tIERlcml2ZWRDb3JlUHJvcGVydGllcy50eHQgaW4gdGhlIFVuaWNvZGUgZGF0YWJhc2UsCiAgICAvLyBtaW51cyBVKzExNUYsIFUrMTE2MCwgVSszMTY0IGFuZCBVK0ZGQTAsIHdoaWNoIGlzIHdoYXQKICAgIC8vIEhhcmZidXp6IGFuZCBVbmlzY3JpYmUgZG8uCiAgICB2YXIgcGxhbmUgPSBjaCA+PiAxNjsKICAgIGlmIChwbGFuZSA9PT0gMCkgewogICAgICAvLyBCTVAKICAgICAgc3dpdGNoIChjaCA+PiA4KSB7CiAgICAgICAgY2FzZSAweDAwOgogICAgICAgICAgcmV0dXJuIGNoID09PSAweDAwQUQ7CiAgICAgICAgY2FzZSAweDAzOgogICAgICAgICAgcmV0dXJuIGNoID09PSAweDAzNEY7CiAgICAgICAgY2FzZSAweDA2OgogICAgICAgICAgcmV0dXJuIGNoID09PSAweDA2MUM7CiAgICAgICAgY2FzZSAweDE3OgogICAgICAgICAgcmV0dXJuIDB4MTdCNCA8PSBjaCAmJiBjaCA8PSAweDE3QjU7CiAgICAgICAgY2FzZSAweDE4OgogICAgICAgICAgcmV0dXJuIDB4MTgwQiA8PSBjaCAmJiBjaCA8PSAweDE4MEU7CiAgICAgICAgY2FzZSAweDIwOgogICAgICAgICAgcmV0dXJuIDB4MjAwQiA8PSBjaCAmJiBjaCA8PSAweDIwMEYgfHwgMHgyMDJBIDw9IGNoICYmIGNoIDw9IDB4MjAyRSB8fCAweDIwNjAgPD0gY2ggJiYgY2ggPD0gMHgyMDZGOwogICAgICAgIGNhc2UgMHhGRToKICAgICAgICAgIHJldHVybiAweEZFMDAgPD0gY2ggJiYgY2ggPD0gMHhGRTBGIHx8IGNoID09PSAweEZFRkY7CiAgICAgICAgY2FzZSAweEZGOgogICAgICAgICAgcmV0dXJuIDB4RkZGMCA8PSBjaCAmJiBjaCA8PSAweEZGRjg7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgLy8gT3RoZXIgcGxhbmVzCiAgICAgIHN3aXRjaCAocGxhbmUpIHsKICAgICAgICBjYXNlIDB4MDE6CiAgICAgICAgICByZXR1cm4gMHgxQkNBMCA8PSBjaCAmJiBjaCA8PSAweDFCQ0EzIHx8IDB4MUQxNzMgPD0gY2ggJiYgY2ggPD0gMHgxRDE3QTsKICAgICAgICBjYXNlIDB4MEU6CiAgICAgICAgICByZXR1cm4gMHhFMDAwMCA8PSBjaCAmJiBjaCA8PSAweEUwRkZGOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KICB9OwoKICBMYXlvdXRFbmdpbmUucHJvdG90eXBlLmdldEF2YWlsYWJsZUZlYXR1cmVzID0gZnVuY3Rpb24gZ2V0QXZhaWxhYmxlRmVhdHVyZXMoc2NyaXB0LCBsYW5ndWFnZSkgewogICAgdmFyIGZlYXR1cmVzID0gW107CgogICAgaWYgKHRoaXMuZW5naW5lKSB7CiAgICAgIGZlYXR1cmVzLnB1c2guYXBwbHkoZmVhdHVyZXMsIHRoaXMuZW5naW5lLmdldEF2YWlsYWJsZUZlYXR1cmVzKHNjcmlwdCwgbGFuZ3VhZ2UpKTsKICAgIH0KCiAgICBpZiAodGhpcy5mb250Lmtlcm4gJiYgZmVhdHVyZXMuaW5kZXhPZigna2VybicpID09PSAtMSkgewogICAgICBmZWF0dXJlcy5wdXNoKCdrZXJuJyk7CiAgICB9CgogICAgcmV0dXJuIGZlYXR1cmVzOwogIH07CgogIExheW91dEVuZ2luZS5wcm90b3R5cGUuc3RyaW5nc0ZvckdseXBoID0gZnVuY3Rpb24gc3RyaW5nc0ZvckdseXBoKGdpZCkgewogICAgdmFyIHJlc3VsdCA9IG5ldyBfU2V0KCk7CgogICAgdmFyIGNvZGVQb2ludHMgPSB0aGlzLmZvbnQuX2NtYXBQcm9jZXNzb3IuY29kZVBvaW50c0ZvckdseXBoKGdpZCk7CiAgICBmb3IgKHZhciBfaXRlcmF0b3IyID0gY29kZVBvaW50cywgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICB2YXIgX3JlZjI7CgogICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjIgPSBfaXRlcmF0b3IyW19pMisrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICBpZiAoX2kyLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgY29kZVBvaW50ID0gX3JlZjI7CgogICAgICByZXN1bHQuYWRkKF9TdHJpbmckZnJvbUNvZGVQb2ludChjb2RlUG9pbnQpKTsKICAgIH0KCiAgICBpZiAodGhpcy5lbmdpbmUgJiYgdGhpcy5lbmdpbmUuc3RyaW5nc0ZvckdseXBoKSB7CiAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSB0aGlzLmVuZ2luZS5zdHJpbmdzRm9yR2x5cGgoZ2lkKSwgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICAgIHZhciBfcmVmMzsKCiAgICAgICAgaWYgKF9pc0FycmF5MykgewogICAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pdGVyYXRvcjNbX2kzKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICAgIGlmIChfaTMuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pMy52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBzdHJpbmcgPSBfcmVmMzsKCiAgICAgICAgcmVzdWx0LmFkZChzdHJpbmcpOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIF9BcnJheSRmcm9tKHJlc3VsdCk7CiAgfTsKCiAgcmV0dXJuIExheW91dEVuZ2luZTsKfSgpOwoKdmFyIFNWR19DT01NQU5EUyA9IHsKICBtb3ZlVG86ICdNJywKICBsaW5lVG86ICdMJywKICBxdWFkcmF0aWNDdXJ2ZVRvOiAnUScsCiAgYmV6aWVyQ3VydmVUbzogJ0MnLAogIGNsb3NlUGF0aDogJ1onCn07CgovKioKICogUGF0aCBvYmplY3RzIGFyZSByZXR1cm5lZCBieSBnbHlwaHMgYW5kIHJlcHJlc2VudCB0aGUgYWN0dWFsCiAqIHZlY3RvciBvdXRsaW5lcyBmb3IgZWFjaCBnbHlwaCBpbiB0aGUgZm9udC4gUGF0aHMgY2FuIGJlIGNvbnZlcnRlZAogKiB0byBTVkcgcGF0aCBkYXRhIHN0cmluZ3MsIG9yIHRvIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvCiAqIHJlbmRlciB0aGUgcGF0aCB0byBhIGdyYXBoaWNzIGNvbnRleHQuCiAqLwoKdmFyIFBhdGggPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gUGF0aCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYXRoKTsKCiAgICB0aGlzLmNvbW1hbmRzID0gW107CiAgICB0aGlzLl9iYm94ID0gbnVsbDsKICAgIHRoaXMuX2Nib3ggPSBudWxsOwogIH0KCiAgLyoqCiAgICogQ29tcGlsZXMgdGhlIHBhdGggdG8gYSBKYXZhU2NyaXB0IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgd2l0aAogICAqIGEgZ3JhcGhpY3MgY29udGV4dCBpbiBvcmRlciB0byByZW5kZXIgdGhlIHBhdGguCiAgICogQHJldHVybiB7c3RyaW5nfQogICAqLwoKCiAgUGF0aC5wcm90b3R5cGUudG9GdW5jdGlvbiA9IGZ1bmN0aW9uIHRvRnVuY3Rpb24oKSB7CiAgICB2YXIgY21kcyA9IHRoaXMuY29tbWFuZHMubWFwKGZ1bmN0aW9uIChjKSB7CiAgICAgIHJldHVybiAnICBjdHguJyArIGMuY29tbWFuZCArICcoJyArIGMuYXJncy5qb2luKCcsICcpICsgJyk7JzsKICAgIH0pOwogICAgcmV0dXJuIG5ldyBGdW5jdGlvbignY3R4JywgY21kcy5qb2luKCdcbicpKTsKICB9OwoKICAvKioKICAgKiBDb252ZXJ0cyB0aGUgcGF0aCB0byBhbiBTVkcgcGF0aCBkYXRhIHN0cmluZwogICAqIEByZXR1cm4ge3N0cmluZ30KICAgKi8KCgogIFBhdGgucHJvdG90eXBlLnRvU1ZHID0gZnVuY3Rpb24gdG9TVkcoKSB7CiAgICB2YXIgY21kcyA9IHRoaXMuY29tbWFuZHMubWFwKGZ1bmN0aW9uIChjKSB7CiAgICAgIHZhciBhcmdzID0gYy5hcmdzLm1hcChmdW5jdGlvbiAoYXJnKSB7CiAgICAgICAgcmV0dXJuIE1hdGgucm91bmQoYXJnICogMTAwKSAvIDEwMDsKICAgICAgfSk7CiAgICAgIHJldHVybiAnJyArIFNWR19DT01NQU5EU1tjLmNvbW1hbmRdICsgYXJncy5qb2luKCcgJyk7CiAgICB9KTsKCiAgICByZXR1cm4gY21kcy5qb2luKCcnKTsKICB9OwoKICAvKioKICAgKiBHZXRzIHRoZSAiY29udHJvbCBib3giIG9mIGEgcGF0aC4KICAgKiBUaGlzIGlzIGxpa2UgdGhlIGJvdW5kaW5nIGJveCwgYnV0IGl0IGluY2x1ZGVzIGFsbCBwb2ludHMgaW5jbHVkaW5nCiAgICogY29udHJvbCBwb2ludHMgb2YgYmV6aWVyIHNlZ21lbnRzIGFuZCBpcyBtdWNoIGZhc3RlciB0byBjb21wdXRlIHRoYW4KICAgKiB0aGUgcmVhbCBib3VuZGluZyBib3guCiAgICogQHR5cGUge0JCb3h9CiAgICovCgoKICAvKioKICAgKiBBcHBsaWVzIGEgbWFwcGluZyBmdW5jdGlvbiB0byBlYWNoIHBvaW50IGluIHRoZSBwYXRoLgogICAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuCiAgICogQHJldHVybiB7UGF0aH0KICAgKi8KICBQYXRoLnByb3RvdHlwZS5tYXBQb2ludHMgPSBmdW5jdGlvbiBtYXBQb2ludHMoZm4pIHsKICAgIHZhciBwYXRoID0gbmV3IFBhdGgoKTsKCiAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSB0aGlzLmNvbW1hbmRzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgdmFyIF9yZWY7CgogICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGMgPSBfcmVmOwoKICAgICAgdmFyIGFyZ3MgPSBbXTsKICAgICAgZm9yICh2YXIgX2kyID0gMDsgX2kyIDwgYy5hcmdzLmxlbmd0aDsgX2kyICs9IDIpIHsKICAgICAgICB2YXIgX2ZuID0gZm4oYy5hcmdzW19pMl0sIGMuYXJnc1tfaTIgKyAxXSksCiAgICAgICAgICAgIHggPSBfZm5bMF0sCiAgICAgICAgICAgIHkgPSBfZm5bMV07CgogICAgICAgIGFyZ3MucHVzaCh4LCB5KTsKICAgICAgfQoKICAgICAgcGF0aFtjLmNvbW1hbmRdLmFwcGx5KHBhdGgsIGFyZ3MpOwogICAgfQoKICAgIHJldHVybiBwYXRoOwogIH07CgogIC8qKgogICAqIFRyYW5zZm9ybXMgdGhlIHBhdGggYnkgdGhlIGdpdmVuIG1hdHJpeC4KICAgKi8KCgogIFBhdGgucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybShtMCwgbTEsIG0yLCBtMywgbTQsIG01KSB7CiAgICByZXR1cm4gdGhpcy5tYXBQb2ludHMoZnVuY3Rpb24gKHgsIHkpIHsKICAgICAgeCA9IG0wICogeCArIG0yICogeSArIG00OwogICAgICB5ID0gbTEgKiB4ICsgbTMgKiB5ICsgbTU7CiAgICAgIHJldHVybiBbeCwgeV07CiAgICB9KTsKICB9OwoKICAvKioKICAgKiBUcmFuc2xhdGVzIHRoZSBwYXRoIGJ5IHRoZSBnaXZlbiBvZmZzZXQuCiAgICovCgoKICBQYXRoLnByb3RvdHlwZS50cmFuc2xhdGUgPSBmdW5jdGlvbiB0cmFuc2xhdGUoeCwgeSkgewogICAgcmV0dXJuIHRoaXMudHJhbnNmb3JtKDEsIDAsIDAsIDEsIHgsIHkpOwogIH07CgogIC8qKgogICAqIFJvdGF0ZXMgdGhlIHBhdGggYnkgdGhlIGdpdmVuIGFuZ2xlIChpbiByYWRpYW5zKS4KICAgKi8KCgogIFBhdGgucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uIHJvdGF0ZShhbmdsZSkgewogICAgdmFyIGNvcyA9IE1hdGguY29zKGFuZ2xlKTsKICAgIHZhciBzaW4gPSBNYXRoLnNpbihhbmdsZSk7CiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm0oY29zLCBzaW4sIC1zaW4sIGNvcywgMCwgMCk7CiAgfTsKCiAgLyoqCiAgICogU2NhbGVzIHRoZSBwYXRoLgogICAqLwoKCiAgUGF0aC5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbiBzY2FsZShzY2FsZVgpIHsKICAgIHZhciBzY2FsZVkgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHNjYWxlWDsKCiAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm0oc2NhbGVYLCAwLCAwLCBzY2FsZVksIDAsIDApOwogIH07CgogIF9jcmVhdGVDbGFzcyhQYXRoLCBbewogICAga2V5OiAnY2JveCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgaWYgKCF0aGlzLl9jYm94KSB7CiAgICAgICAgdmFyIGNib3ggPSBuZXcgQkJveCgpOwogICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSB0aGlzLmNvbW1hbmRzLCBfaXNBcnJheTIgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjIpLCBfaTMgPSAwLCBfaXRlcmF0b3IyID0gX2lzQXJyYXkyID8gX2l0ZXJhdG9yMiA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IyKTs7KSB7CiAgICAgICAgICB2YXIgX3JlZjI7CgogICAgICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgICAgICBpZiAoX2kzID49IF9pdGVyYXRvcjIubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgX3JlZjIgPSBfaXRlcmF0b3IyW19pMysrXTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIF9pMyA9IF9pdGVyYXRvcjIubmV4dCgpOwogICAgICAgICAgICBpZiAoX2kzLmRvbmUpIGJyZWFrOwogICAgICAgICAgICBfcmVmMiA9IF9pMy52YWx1ZTsKICAgICAgICAgIH0KCiAgICAgICAgICB2YXIgY29tbWFuZCA9IF9yZWYyOwoKICAgICAgICAgIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IGNvbW1hbmQuYXJncy5sZW5ndGg7IF9pNCArPSAyKSB7CiAgICAgICAgICAgIGNib3guYWRkUG9pbnQoY29tbWFuZC5hcmdzW19pNF0sIGNvbW1hbmQuYXJnc1tfaTQgKyAxXSk7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aGlzLl9jYm94ID0gX09iamVjdCRmcmVlemUoY2JveCk7CiAgICAgIH0KCiAgICAgIHJldHVybiB0aGlzLl9jYm94OwogICAgfQoKICAgIC8qKgogICAgICogR2V0cyB0aGUgZXhhY3QgYm91bmRpbmcgYm94IG9mIHRoZSBwYXRoIGJ5IGV2YWx1YXRpbmcgY3VydmUgc2VnbWVudHMuCiAgICAgKiBTbG93ZXIgdG8gY29tcHV0ZSB0aGFuIHRoZSBjb250cm9sIGJveCwgYnV0IG1vcmUgYWNjdXJhdGUuCiAgICAgKiBAdHlwZSB7QkJveH0KICAgICAqLwoKICB9LCB7CiAgICBrZXk6ICdiYm94JywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICBpZiAodGhpcy5fYmJveCkgewogICAgICAgIHJldHVybiB0aGlzLl9iYm94OwogICAgICB9CgogICAgICB2YXIgYmJveCA9IG5ldyBCQm94KCk7CiAgICAgIHZhciBjeCA9IDAsCiAgICAgICAgICBjeSA9IDA7CgogICAgICB2YXIgZiA9IGZ1bmN0aW9uIGYodCkgewogICAgICAgIHJldHVybiBNYXRoLnBvdygxIC0gdCwgMykgKiBwMFtpXSArIDMgKiBNYXRoLnBvdygxIC0gdCwgMikgKiB0ICogcDFbaV0gKyAzICogKDEgLSB0KSAqIE1hdGgucG93KHQsIDIpICogcDJbaV0gKyBNYXRoLnBvdyh0LCAzKSAqIHAzW2ldOwogICAgICB9OwoKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMyA9IHRoaXMuY29tbWFuZHMsIF9pc0FycmF5MyA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yMyksIF9pNSA9IDAsIF9pdGVyYXRvcjMgPSBfaXNBcnJheTMgPyBfaXRlcmF0b3IzIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcjMpOzspIHsKICAgICAgICB2YXIgX3JlZjM7CgogICAgICAgIGlmIChfaXNBcnJheTMpIHsKICAgICAgICAgIGlmIChfaTUgPj0gX2l0ZXJhdG9yMy5sZW5ndGgpIGJyZWFrOwogICAgICAgICAgX3JlZjMgPSBfaXRlcmF0b3IzW19pNSsrXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgX2k1ID0gX2l0ZXJhdG9yMy5uZXh0KCk7CiAgICAgICAgICBpZiAoX2k1LmRvbmUpIGJyZWFrOwogICAgICAgICAgX3JlZjMgPSBfaTUudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgYyA9IF9yZWYzOwoKICAgICAgICBzd2l0Y2ggKGMuY29tbWFuZCkgewogICAgICAgICAgY2FzZSAnbW92ZVRvJzoKICAgICAgICAgIGNhc2UgJ2xpbmVUbyc6CiAgICAgICAgICAgIHZhciBfYyRhcmdzID0gYy5hcmdzLAogICAgICAgICAgICAgICAgeCA9IF9jJGFyZ3NbMF0sCiAgICAgICAgICAgICAgICB5ID0gX2MkYXJnc1sxXTsKCiAgICAgICAgICAgIGJib3guYWRkUG9pbnQoeCwgeSk7CiAgICAgICAgICAgIGN4ID0geDsKICAgICAgICAgICAgY3kgPSB5OwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgICBjYXNlICdxdWFkcmF0aWNDdXJ2ZVRvJzoKICAgICAgICAgIGNhc2UgJ2JlemllckN1cnZlVG8nOgogICAgICAgICAgICBpZiAoYy5jb21tYW5kID09PSAncXVhZHJhdGljQ3VydmVUbycpIHsKICAgICAgICAgICAgICAvLyBodHRwOi8vZm9udGZvcmdlLm9yZy9iZXppZXIuaHRtbAogICAgICAgICAgICAgIHZhciBfYyRhcmdzMiA9IGMuYXJncywKICAgICAgICAgICAgICAgICAgcXAxeCA9IF9jJGFyZ3MyWzBdLAogICAgICAgICAgICAgICAgICBxcDF5ID0gX2MkYXJnczJbMV0sCiAgICAgICAgICAgICAgICAgIHAzeCA9IF9jJGFyZ3MyWzJdLAogICAgICAgICAgICAgICAgICBwM3kgPSBfYyRhcmdzMlszXTsKCiAgICAgICAgICAgICAgdmFyIGNwMXggPSBjeCArIDIgLyAzICogKHFwMXggLSBjeCk7IC8vIENQMSA9IFFQMCArIDIvMyAqIChRUDEtUVAwKQogICAgICAgICAgICAgIHZhciBjcDF5ID0gY3kgKyAyIC8gMyAqIChxcDF5IC0gY3kpOwogICAgICAgICAgICAgIHZhciBjcDJ4ID0gcDN4ICsgMiAvIDMgKiAocXAxeCAtIHAzeCk7IC8vIENQMiA9IFFQMiArIDIvMyAqIChRUDEtUVAyKQogICAgICAgICAgICAgIHZhciBjcDJ5ID0gcDN5ICsgMiAvIDMgKiAocXAxeSAtIHAzeSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgdmFyIF9jJGFyZ3MzID0gYy5hcmdzLAogICAgICAgICAgICAgICAgICBjcDF4ID0gX2MkYXJnczNbMF0sCiAgICAgICAgICAgICAgICAgIGNwMXkgPSBfYyRhcmdzM1sxXSwKICAgICAgICAgICAgICAgICAgY3AyeCA9IF9jJGFyZ3MzWzJdLAogICAgICAgICAgICAgICAgICBjcDJ5ID0gX2MkYXJnczNbM10sCiAgICAgICAgICAgICAgICAgIHAzeCA9IF9jJGFyZ3MzWzRdLAogICAgICAgICAgICAgICAgICBwM3kgPSBfYyRhcmdzM1s1XTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gaHR0cDovL2Jsb2cuaGFja2Vycy1jYWZlLm5ldC8yMDA5LzA2L2hvdy10by1jYWxjdWxhdGUtYmV6aWVyLWN1cnZlcy1ib3VuZGluZy5odG1sCiAgICAgICAgICAgIGJib3guYWRkUG9pbnQocDN4LCBwM3kpOwoKICAgICAgICAgICAgdmFyIHAwID0gW2N4LCBjeV07CiAgICAgICAgICAgIHZhciBwMSA9IFtjcDF4LCBjcDF5XTsKICAgICAgICAgICAgdmFyIHAyID0gW2NwMngsIGNwMnldOwogICAgICAgICAgICB2YXIgcDMgPSBbcDN4LCBwM3ldOwoKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gMTsgaSsrKSB7CiAgICAgICAgICAgICAgdmFyIGIgPSA2ICogcDBbaV0gLSAxMiAqIHAxW2ldICsgNiAqIHAyW2ldOwogICAgICAgICAgICAgIHZhciBhID0gLTMgKiBwMFtpXSArIDkgKiBwMVtpXSAtIDkgKiBwMltpXSArIDMgKiBwM1tpXTsKICAgICAgICAgICAgICBjID0gMyAqIHAxW2ldIC0gMyAqIHAwW2ldOwoKICAgICAgICAgICAgICBpZiAoYSA9PT0gMCkgewogICAgICAgICAgICAgICAgaWYgKGIgPT09IDApIHsKICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdmFyIHQgPSAtYyAvIGI7CiAgICAgICAgICAgICAgICBpZiAoMCA8IHQgJiYgdCA8IDEpIHsKICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICBiYm94LmFkZFBvaW50KGYodCksIGJib3gubWF4WSk7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gMSkgewogICAgICAgICAgICAgICAgICAgIGJib3guYWRkUG9pbnQoYmJveC5tYXhYLCBmKHQpKTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIGIyYWMgPSBNYXRoLnBvdyhiLCAyKSAtIDQgKiBjICogYTsKICAgICAgICAgICAgICBpZiAoYjJhYyA8IDApIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIHQxID0gKC1iICsgTWF0aC5zcXJ0KGIyYWMpKSAvICgyICogYSk7CiAgICAgICAgICAgICAgaWYgKDAgPCB0MSAmJiB0MSA8IDEpIHsKICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgIGJib3guYWRkUG9pbnQoZih0MSksIGJib3gubWF4WSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGkgPT09IDEpIHsKICAgICAgICAgICAgICAgICAgYmJveC5hZGRQb2ludChiYm94Lm1heFgsIGYodDEpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHZhciB0MiA9ICgtYiAtIE1hdGguc3FydChiMmFjKSkgLyAoMiAqIGEpOwogICAgICAgICAgICAgIGlmICgwIDwgdDIgJiYgdDIgPCAxKSB7CiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkgewogICAgICAgICAgICAgICAgICBiYm94LmFkZFBvaW50KGYodDIpLCBiYm94Lm1heFkpOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpID09PSAxKSB7CiAgICAgICAgICAgICAgICAgIGJib3guYWRkUG9pbnQoYmJveC5tYXhYLCBmKHQyKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBjeCA9IHAzeDsKICAgICAgICAgICAgY3kgPSBwM3k7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMuX2Jib3ggPSBfT2JqZWN0JGZyZWV6ZShiYm94KTsKICAgIH0KICB9XSk7CgogIHJldHVybiBQYXRoOwp9KCk7Cgp2YXIgX2FyciA9IFsnbW92ZVRvJywgJ2xpbmVUbycsICdxdWFkcmF0aWNDdXJ2ZVRvJywgJ2JlemllckN1cnZlVG8nLCAnY2xvc2VQYXRoJ107Cgp2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcCgpIHsKICB2YXIgY29tbWFuZCA9IF9hcnJbX2k2XTsKICBQYXRoLnByb3RvdHlwZVtjb21tYW5kXSA9IGZ1bmN0aW9uICgpIHsKICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7CiAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07CiAgICB9CgogICAgdGhpcy5fYmJveCA9IHRoaXMuX2Nib3ggPSBudWxsOwogICAgdGhpcy5jb21tYW5kcy5wdXNoKHsKICAgICAgY29tbWFuZDogY29tbWFuZCwKICAgICAgYXJnczogYXJncwogICAgfSk7CgogICAgcmV0dXJuIHRoaXM7CiAgfTsKfTsKCmZvciAodmFyIF9pNiA9IDA7IF9pNiA8IF9hcnIubGVuZ3RoOyBfaTYrKykgewogIF9sb29wKCk7Cn0KCnZhciBTdGFuZGFyZE5hbWVzID0gWycubm90ZGVmJywgJy5udWxsJywgJ25vbm1hcmtpbmdyZXR1cm4nLCAnc3BhY2UnLCAnZXhjbGFtJywgJ3F1b3RlZGJsJywgJ251bWJlcnNpZ24nLCAnZG9sbGFyJywgJ3BlcmNlbnQnLCAnYW1wZXJzYW5kJywgJ3F1b3Rlc2luZ2xlJywgJ3BhcmVubGVmdCcsICdwYXJlbnJpZ2h0JywgJ2FzdGVyaXNrJywgJ3BsdXMnLCAnY29tbWEnLCAnaHlwaGVuJywgJ3BlcmlvZCcsICdzbGFzaCcsICd6ZXJvJywgJ29uZScsICd0d28nLCAndGhyZWUnLCAnZm91cicsICdmaXZlJywgJ3NpeCcsICdzZXZlbicsICdlaWdodCcsICduaW5lJywgJ2NvbG9uJywgJ3NlbWljb2xvbicsICdsZXNzJywgJ2VxdWFsJywgJ2dyZWF0ZXInLCAncXVlc3Rpb24nLCAnYXQnLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywgJ08nLCAnUCcsICdRJywgJ1InLCAnUycsICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJywgJ2JyYWNrZXRsZWZ0JywgJ2JhY2tzbGFzaCcsICdicmFja2V0cmlnaHQnLCAnYXNjaWljaXJjdW0nLCAndW5kZXJzY29yZScsICdncmF2ZScsICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicsICdnJywgJ2gnLCAnaScsICdqJywgJ2snLCAnbCcsICdtJywgJ24nLCAnbycsICdwJywgJ3EnLCAncicsICdzJywgJ3QnLCAndScsICd2JywgJ3cnLCAneCcsICd5JywgJ3onLCAnYnJhY2VsZWZ0JywgJ2JhcicsICdicmFjZXJpZ2h0JywgJ2FzY2lpdGlsZGUnLCAnQWRpZXJlc2lzJywgJ0FyaW5nJywgJ0NjZWRpbGxhJywgJ0VhY3V0ZScsICdOdGlsZGUnLCAnT2RpZXJlc2lzJywgJ1VkaWVyZXNpcycsICdhYWN1dGUnLCAnYWdyYXZlJywgJ2FjaXJjdW1mbGV4JywgJ2FkaWVyZXNpcycsICdhdGlsZGUnLCAnYXJpbmcnLCAnY2NlZGlsbGEnLCAnZWFjdXRlJywgJ2VncmF2ZScsICdlY2lyY3VtZmxleCcsICdlZGllcmVzaXMnLCAnaWFjdXRlJywgJ2lncmF2ZScsICdpY2lyY3VtZmxleCcsICdpZGllcmVzaXMnLCAnbnRpbGRlJywgJ29hY3V0ZScsICdvZ3JhdmUnLCAnb2NpcmN1bWZsZXgnLCAnb2RpZXJlc2lzJywgJ290aWxkZScsICd1YWN1dGUnLCAndWdyYXZlJywgJ3VjaXJjdW1mbGV4JywgJ3VkaWVyZXNpcycsICdkYWdnZXInLCAnZGVncmVlJywgJ2NlbnQnLCAnc3RlcmxpbmcnLCAnc2VjdGlvbicsICdidWxsZXQnLCAncGFyYWdyYXBoJywgJ2dlcm1hbmRibHMnLCAncmVnaXN0ZXJlZCcsICdjb3B5cmlnaHQnLCAndHJhZGVtYXJrJywgJ2FjdXRlJywgJ2RpZXJlc2lzJywgJ25vdGVxdWFsJywgJ0FFJywgJ09zbGFzaCcsICdpbmZpbml0eScsICdwbHVzbWludXMnLCAnbGVzc2VxdWFsJywgJ2dyZWF0ZXJlcXVhbCcsICd5ZW4nLCAnbXUnLCAncGFydGlhbGRpZmYnLCAnc3VtbWF0aW9uJywgJ3Byb2R1Y3QnLCAncGknLCAnaW50ZWdyYWwnLCAnb3JkZmVtaW5pbmUnLCAnb3JkbWFzY3VsaW5lJywgJ09tZWdhJywgJ2FlJywgJ29zbGFzaCcsICdxdWVzdGlvbmRvd24nLCAnZXhjbGFtZG93bicsICdsb2dpY2Fsbm90JywgJ3JhZGljYWwnLCAnZmxvcmluJywgJ2FwcHJveGVxdWFsJywgJ0RlbHRhJywgJ2d1aWxsZW1vdGxlZnQnLCAnZ3VpbGxlbW90cmlnaHQnLCAnZWxsaXBzaXMnLCAnbm9uYnJlYWtpbmdzcGFjZScsICdBZ3JhdmUnLCAnQXRpbGRlJywgJ090aWxkZScsICdPRScsICdvZScsICdlbmRhc2gnLCAnZW1kYXNoJywgJ3F1b3RlZGJsbGVmdCcsICdxdW90ZWRibHJpZ2h0JywgJ3F1b3RlbGVmdCcsICdxdW90ZXJpZ2h0JywgJ2RpdmlkZScsICdsb3plbmdlJywgJ3lkaWVyZXNpcycsICdZZGllcmVzaXMnLCAnZnJhY3Rpb24nLCAnY3VycmVuY3knLCAnZ3VpbHNpbmdsbGVmdCcsICdndWlsc2luZ2xyaWdodCcsICdmaScsICdmbCcsICdkYWdnZXJkYmwnLCAncGVyaW9kY2VudGVyZWQnLCAncXVvdGVzaW5nbGJhc2UnLCAncXVvdGVkYmxiYXNlJywgJ3BlcnRob3VzYW5kJywgJ0FjaXJjdW1mbGV4JywgJ0VjaXJjdW1mbGV4JywgJ0FhY3V0ZScsICdFZGllcmVzaXMnLCAnRWdyYXZlJywgJ0lhY3V0ZScsICdJY2lyY3VtZmxleCcsICdJZGllcmVzaXMnLCAnSWdyYXZlJywgJ09hY3V0ZScsICdPY2lyY3VtZmxleCcsICdhcHBsZScsICdPZ3JhdmUnLCAnVWFjdXRlJywgJ1VjaXJjdW1mbGV4JywgJ1VncmF2ZScsICdkb3RsZXNzaScsICdjaXJjdW1mbGV4JywgJ3RpbGRlJywgJ21hY3JvbicsICdicmV2ZScsICdkb3RhY2NlbnQnLCAncmluZycsICdjZWRpbGxhJywgJ2h1bmdhcnVtbGF1dCcsICdvZ29uZWsnLCAnY2Fyb24nLCAnTHNsYXNoJywgJ2xzbGFzaCcsICdTY2Fyb24nLCAnc2Nhcm9uJywgJ1pjYXJvbicsICd6Y2Fyb24nLCAnYnJva2VuYmFyJywgJ0V0aCcsICdldGgnLCAnWWFjdXRlJywgJ3lhY3V0ZScsICdUaG9ybicsICd0aG9ybicsICdtaW51cycsICdtdWx0aXBseScsICdvbmVzdXBlcmlvcicsICd0d29zdXBlcmlvcicsICd0aHJlZXN1cGVyaW9yJywgJ29uZWhhbGYnLCAnb25lcXVhcnRlcicsICd0aHJlZXF1YXJ0ZXJzJywgJ2ZyYW5jJywgJ0dicmV2ZScsICdnYnJldmUnLCAnSWRvdGFjY2VudCcsICdTY2VkaWxsYScsICdzY2VkaWxsYScsICdDYWN1dGUnLCAnY2FjdXRlJywgJ0NjYXJvbicsICdjY2Fyb24nLCAnZGNyb2F0J107Cgp2YXIgX2NsYXNzJDg7CmZ1bmN0aW9uIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IkNCh0YXJnZXQsIHByb3BlcnR5LCBkZWNvcmF0b3JzLCBkZXNjcmlwdG9yLCBjb250ZXh0KSB7CiAgdmFyIGRlc2MgPSB7fTsKICBPYmplY3RbJ2tlJyArICd5cyddKGRlc2NyaXB0b3IpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgZGVzY1trZXldID0gZGVzY3JpcHRvcltrZXldOwogIH0pOwogIGRlc2MuZW51bWVyYWJsZSA9ICEhZGVzYy5lbnVtZXJhYmxlOwogIGRlc2MuY29uZmlndXJhYmxlID0gISFkZXNjLmNvbmZpZ3VyYWJsZTsKCiAgaWYgKCd2YWx1ZScgaW4gZGVzYyB8fCBkZXNjLmluaXRpYWxpemVyKSB7CiAgICBkZXNjLndyaXRhYmxlID0gdHJ1ZTsKICB9CgogIGRlc2MgPSBkZWNvcmF0b3JzLnNsaWNlKCkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbiAoZGVzYywgZGVjb3JhdG9yKSB7CiAgICByZXR1cm4gZGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHksIGRlc2MpIHx8IGRlc2M7CiAgfSwgZGVzYyk7CgogIGlmIChjb250ZXh0ICYmIGRlc2MuaW5pdGlhbGl6ZXIgIT09IHZvaWQgMCkgewogICAgZGVzYy52YWx1ZSA9IGRlc2MuaW5pdGlhbGl6ZXIgPyBkZXNjLmluaXRpYWxpemVyLmNhbGwoY29udGV4dCkgOiB2b2lkIDA7CiAgICBkZXNjLmluaXRpYWxpemVyID0gdW5kZWZpbmVkOwogIH0KCiAgaWYgKGRlc2MuaW5pdGlhbGl6ZXIgPT09IHZvaWQgMCkgewogICAgT2JqZWN0WydkZWZpbmUnICsgJ1Byb3BlcnR5J10odGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYyk7CiAgICBkZXNjID0gbnVsbDsKICB9CgogIHJldHVybiBkZXNjOwp9CgovKioKICogR2x5cGggb2JqZWN0cyByZXByZXNlbnQgYSBnbHlwaCBpbiB0aGUgZm9udC4gVGhleSBoYXZlIHZhcmlvdXMgcHJvcGVydGllcyBmb3IgYWNjZXNzaW5nIG1ldHJpY3MgYW5kCiAqIHRoZSBhY3R1YWwgdmVjdG9yIHBhdGggdGhlIGdseXBoIHJlcHJlc2VudHMsIGFuZCBtZXRob2RzIGZvciByZW5kZXJpbmcgdGhlIGdseXBoIHRvIGEgZ3JhcGhpY3MgY29udGV4dC4KICoKICogWW91IGRvIG5vdCBjcmVhdGUgZ2x5cGggb2JqZWN0cyBkaXJlY3RseS4gVGhleSBhcmUgY3JlYXRlZCBieSB2YXJpb3VzIG1ldGhvZHMgb24gdGhlIGZvbnQgb2JqZWN0LgogKiBUaGVyZSBhcmUgc2V2ZXJhbCBzdWJjbGFzc2VzIG9mIHRoZSBiYXNlIEdseXBoIGNsYXNzIGludGVybmFsbHkgdGhhdCBtYXkgYmUgcmV0dXJuZWQgZGVwZW5kaW5nCiAqIG9uIHRoZSBmb250IGZvcm1hdCwgYnV0IHRoZXkgYWxsIGluaGVyaXQgZnJvbSB0aGlzIGNsYXNzLgogKi8KdmFyIEdseXBoID0gKF9jbGFzcyQ4ID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIEdseXBoKGlkLCBjb2RlUG9pbnRzLCBmb250KSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2x5cGgpOwoKICAgIC8qKgogICAgICogVGhlIGdseXBoIGlkIGluIHRoZSBmb250CiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCiAgICB0aGlzLmlkID0gaWQ7CgogICAgLyoqCiAgICAgKiBBbiBhcnJheSBvZiB1bmljb2RlIGNvZGUgcG9pbnRzIHRoYXQgYXJlIHJlcHJlc2VudGVkIGJ5IHRoaXMgZ2x5cGguCiAgICAgKiBUaGVyZSBjYW4gYmUgbXVsdGlwbGUgY29kZSBwb2ludHMgaW4gdGhlIGNhc2Ugb2YgbGlnYXR1cmVzIGFuZCBvdGhlciBnbHlwaHMKICAgICAqIHRoYXQgcmVwcmVzZW50IG11bHRpcGxlIHZpc3VhbCBjaGFyYWN0ZXJzLgogICAgICogQHR5cGUge251bWJlcltdfQogICAgICovCiAgICB0aGlzLmNvZGVQb2ludHMgPSBjb2RlUG9pbnRzOwogICAgdGhpcy5fZm9udCA9IGZvbnQ7CgogICAgLy8gVE9ETzogZ2V0IHRoaXMgaW5mbyBmcm9tIEdERUYgaWYgYXZhaWxhYmxlCiAgICB0aGlzLmlzTWFyayA9IHRoaXMuY29kZVBvaW50cy5ldmVyeSh1bmljb2RlLmlzTWFyayk7CiAgICB0aGlzLmlzTGlnYXR1cmUgPSB0aGlzLmNvZGVQb2ludHMubGVuZ3RoID4gMTsKICB9CgogIEdseXBoLnByb3RvdHlwZS5fZ2V0UGF0aCA9IGZ1bmN0aW9uIF9nZXRQYXRoKCkgewogICAgcmV0dXJuIG5ldyBQYXRoKCk7CiAgfTsKCiAgR2x5cGgucHJvdG90eXBlLl9nZXRDQm94ID0gZnVuY3Rpb24gX2dldENCb3goKSB7CiAgICByZXR1cm4gdGhpcy5wYXRoLmNib3g7CiAgfTsKCiAgR2x5cGgucHJvdG90eXBlLl9nZXRCQm94ID0gZnVuY3Rpb24gX2dldEJCb3goKSB7CiAgICByZXR1cm4gdGhpcy5wYXRoLmJib3g7CiAgfTsKCiAgR2x5cGgucHJvdG90eXBlLl9nZXRUYWJsZU1ldHJpY3MgPSBmdW5jdGlvbiBfZ2V0VGFibGVNZXRyaWNzKHRhYmxlKSB7CiAgICBpZiAodGhpcy5pZCA8IHRhYmxlLm1ldHJpY3MubGVuZ3RoKSB7CiAgICAgIHJldHVybiB0YWJsZS5tZXRyaWNzLmdldCh0aGlzLmlkKTsKICAgIH0KCiAgICB2YXIgbWV0cmljID0gdGFibGUubWV0cmljcy5nZXQodGFibGUubWV0cmljcy5sZW5ndGggLSAxKTsKICAgIHZhciByZXMgPSB7CiAgICAgIGFkdmFuY2U6IG1ldHJpYyA/IG1ldHJpYy5hZHZhbmNlIDogMCwKICAgICAgYmVhcmluZzogdGFibGUuYmVhcmluZ3MuZ2V0KHRoaXMuaWQgLSB0YWJsZS5tZXRyaWNzLmxlbmd0aCkgfHwgMAogICAgfTsKCiAgICByZXR1cm4gcmVzOwogIH07CgogIEdseXBoLnByb3RvdHlwZS5fZ2V0TWV0cmljcyA9IGZ1bmN0aW9uIF9nZXRNZXRyaWNzKGNib3gpIHsKICAgIGlmICh0aGlzLl9tZXRyaWNzKSB7CiAgICAgIHJldHVybiB0aGlzLl9tZXRyaWNzOwogICAgfQoKICAgIHZhciBfZ2V0VGFibGVNZXRyaWNzMiA9IHRoaXMuX2dldFRhYmxlTWV0cmljcyh0aGlzLl9mb250LmhtdHgpLAogICAgICAgIGFkdmFuY2VXaWR0aCA9IF9nZXRUYWJsZU1ldHJpY3MyLmFkdmFuY2UsCiAgICAgICAgbGVmdEJlYXJpbmcgPSBfZ2V0VGFibGVNZXRyaWNzMi5iZWFyaW5nOwoKICAgIC8vIEZvciB2ZXJ0aWNhbCBtZXRyaWNzLCB1c2Ugdm10eCBpZiBhdmFpbGFibGUsIG9yIGZhbGwgYmFjayB0byBnbG9iYWwgZGF0YSBmcm9tIE9TLzIgb3IgaGhlYQoKCiAgICBpZiAodGhpcy5fZm9udC52bXR4KSB7CiAgICAgIHZhciBfZ2V0VGFibGVNZXRyaWNzMyA9IHRoaXMuX2dldFRhYmxlTWV0cmljcyh0aGlzLl9mb250LnZtdHgpLAogICAgICAgICAgYWR2YW5jZUhlaWdodCA9IF9nZXRUYWJsZU1ldHJpY3MzLmFkdmFuY2UsCiAgICAgICAgICB0b3BCZWFyaW5nID0gX2dldFRhYmxlTWV0cmljczMuYmVhcmluZzsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBvczIgPSB2b2lkIDA7CiAgICAgIGlmICh0eXBlb2YgY2JveCA9PT0gJ3VuZGVmaW5lZCcgfHwgY2JveCA9PT0gbnVsbCkgewogICAgICAgIGNib3ggPSB0aGlzLmNib3g7CiAgICAgIH0KCiAgICAgIGlmICgob3MyID0gdGhpcy5fZm9udFsnT1MvMiddKSAmJiBvczIudmVyc2lvbiA+IDApIHsKICAgICAgICB2YXIgYWR2YW5jZUhlaWdodCA9IE1hdGguYWJzKG9zMi50eXBvQXNjZW5kZXIgLSBvczIudHlwb0Rlc2NlbmRlcik7CiAgICAgICAgdmFyIHRvcEJlYXJpbmcgPSBvczIudHlwb0FzY2VuZGVyIC0gY2JveC5tYXhZOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBoaGVhID0gdGhpcy5fZm9udC5oaGVhOwoKICAgICAgICB2YXIgYWR2YW5jZUhlaWdodCA9IE1hdGguYWJzKGhoZWEuYXNjZW50IC0gaGhlYS5kZXNjZW50KTsKICAgICAgICB2YXIgdG9wQmVhcmluZyA9IGhoZWEuYXNjZW50IC0gY2JveC5tYXhZOwogICAgICB9CiAgICB9CgogICAgaWYgKHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvciAmJiB0aGlzLl9mb250LkhWQVIpIHsKICAgICAgYWR2YW5jZVdpZHRoICs9IHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3Nvci5nZXRBZHZhbmNlQWRqdXN0bWVudCh0aGlzLmlkLCB0aGlzLl9mb250LkhWQVIpOwogICAgfQoKICAgIHJldHVybiB0aGlzLl9tZXRyaWNzID0geyBhZHZhbmNlV2lkdGg6IGFkdmFuY2VXaWR0aCwgYWR2YW5jZUhlaWdodDogYWR2YW5jZUhlaWdodCwgbGVmdEJlYXJpbmc6IGxlZnRCZWFyaW5nLCB0b3BCZWFyaW5nOiB0b3BCZWFyaW5nIH07CiAgfTsKCiAgLyoqCiAgICogVGhlIGdseXBo4oCZcyBjb250cm9sIGJveC4KICAgKiBUaGlzIGlzIG9mdGVuIHRoZSBzYW1lIGFzIHRoZSBib3VuZGluZyBib3gsIGJ1dCBpcyBmYXN0ZXIgdG8gY29tcHV0ZS4KICAgKiBCZWNhdXNlIG9mIHRoZSB3YXkgYmV6aWVyIGN1cnZlcyBhcmUgZGVmaW5lZCwgc29tZSBvZiB0aGUgY29udHJvbCBwb2ludHMKICAgKiBjYW4gYmUgb3V0c2lkZSBvZiB0aGUgYm91bmRpbmcgYm94LiBXaGVyZSBgYmJveGAgdGFrZXMgdGhpcyBpbnRvIGFjY291bnQsCiAgICogYGNib3hgIGRvZXMgbm90LiBUaHVzLCBjYm94IGlzIGxlc3MgYWNjdXJhdGUsIGJ1dCBmYXN0ZXIgdG8gY29tcHV0ZS4KICAgKiBTZWUgW2hlcmVdKGh0dHA6Ly93d3cuZnJlZXR5cGUub3JnL2ZyZWV0eXBlMi9kb2NzL2dseXBocy9nbHlwaHMtNi5odG1sI3NlY3Rpb24tMikKICAgKiBmb3IgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uLgogICAqCiAgICogQHR5cGUge0JCb3h9CiAgICovCgoKICAvKioKICAgKiBSZXR1cm5zIGEgcGF0aCBzY2FsZWQgdG8gdGhlIGdpdmVuIGZvbnQgc2l6ZS4KICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQogICAqIEByZXR1cm4ge1BhdGh9CiAgICovCiAgR2x5cGgucHJvdG90eXBlLmdldFNjYWxlZFBhdGggPSBmdW5jdGlvbiBnZXRTY2FsZWRQYXRoKHNpemUpIHsKICAgIHZhciBzY2FsZSA9IDEgLyB0aGlzLl9mb250LnVuaXRzUGVyRW0gKiBzaXplOwogICAgcmV0dXJuIHRoaXMucGF0aC5zY2FsZShzY2FsZSk7CiAgfTsKCiAgLyoqCiAgICogVGhlIGdseXBoJ3MgYWR2YW5jZSB3aWR0aC4KICAgKiBAdHlwZSB7bnVtYmVyfQogICAqLwoKCiAgR2x5cGgucHJvdG90eXBlLl9nZXROYW1lID0gZnVuY3Rpb24gX2dldE5hbWUoKSB7CiAgICB2YXIgcG9zdCA9IHRoaXMuX2ZvbnQucG9zdDsKCiAgICBpZiAoIXBvc3QpIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgc3dpdGNoIChwb3N0LnZlcnNpb24pIHsKICAgICAgY2FzZSAxOgogICAgICAgIHJldHVybiBTdGFuZGFyZE5hbWVzW3RoaXMuaWRdOwoKICAgICAgY2FzZSAyOgogICAgICAgIHZhciBpZCA9IHBvc3QuZ2x5cGhOYW1lSW5kZXhbdGhpcy5pZF07CiAgICAgICAgaWYgKGlkIDwgU3RhbmRhcmROYW1lcy5sZW5ndGgpIHsKICAgICAgICAgIHJldHVybiBTdGFuZGFyZE5hbWVzW2lkXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwb3N0Lm5hbWVzW2lkIC0gU3RhbmRhcmROYW1lcy5sZW5ndGhdOwoKICAgICAgY2FzZSAyLjU6CiAgICAgICAgcmV0dXJuIFN0YW5kYXJkTmFtZXNbdGhpcy5pZCArIHBvc3Qub2Zmc2V0c1t0aGlzLmlkXV07CgogICAgICBjYXNlIDQ6CiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocG9zdC5tYXBbdGhpcy5pZF0pOwogICAgfQogIH07CgogIC8qKgogICAqIFRoZSBnbHlwaCdzIG5hbWUKICAgKiBAdHlwZSB7c3RyaW5nfQogICAqLwoKCiAgLyoqCiAgICogUmVuZGVycyB0aGUgZ2x5cGggdG8gdGhlIGdpdmVuIGdyYXBoaWNzIGNvbnRleHQsIGF0IHRoZSBzcGVjaWZpZWQgZm9udCBzaXplLgogICAqIEBwYXJhbSB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJkfSBjdHgKICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZQogICAqLwogIEdseXBoLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoY3R4LCBzaXplKSB7CiAgICBjdHguc2F2ZSgpOwoKICAgIHZhciBzY2FsZSA9IDEgLyB0aGlzLl9mb250LmhlYWQudW5pdHNQZXJFbSAqIHNpemU7CiAgICBjdHguc2NhbGUoc2NhbGUsIHNjYWxlKTsKCiAgICB2YXIgZm4gPSB0aGlzLnBhdGgudG9GdW5jdGlvbigpOwogICAgZm4oY3R4KTsKICAgIGN0eC5maWxsKCk7CgogICAgY3R4LnJlc3RvcmUoKTsKICB9OwoKICBfY3JlYXRlQ2xhc3MoR2x5cGgsIFt7CiAgICBrZXk6ICdjYm94JywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5fZ2V0Q0JveCgpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGdseXBo4oCZcyBib3VuZGluZyBib3gsIGkuZS4gdGhlIHJlY3RhbmdsZSB0aGF0IGVuY2xvc2VzIHRoZQogICAgICogZ2x5cGggb3V0bGluZSBhcyB0aWdodGx5IGFzIHBvc3NpYmxlLgogICAgICogQHR5cGUge0JCb3h9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnYmJveCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuX2dldEJCb3goKTsKICAgIH0KCiAgICAvKioKICAgICAqIEEgdmVjdG9yIFBhdGggb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZ2x5cGggb3V0bGluZS4KICAgICAqIEB0eXBlIHtQYXRofQogICAgICovCgogIH0sIHsKICAgIGtleTogJ3BhdGgnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIC8vIENhY2hlIHRoZSBwYXRoIHNvIHdlIG9ubHkgZGVjb2RlIGl0IG9uY2UKICAgICAgLy8gRGVjb2RpbmcgaXMgYWN0dWFsbHkgcGVyZm9ybWVkIGJ5IHN1YmNsYXNzZXMKICAgICAgcmV0dXJuIHRoaXMuX2dldFBhdGgoKTsKICAgIH0KICB9LCB7CiAgICBrZXk6ICdhZHZhbmNlV2lkdGgnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9nZXRNZXRyaWNzKCkuYWR2YW5jZVdpZHRoOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGdseXBoJ3MgYWR2YW5jZSBoZWlnaHQuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCgogIH0sIHsKICAgIGtleTogJ2FkdmFuY2VIZWlnaHQnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9nZXRNZXRyaWNzKCkuYWR2YW5jZUhlaWdodDsKICAgIH0KICB9LCB7CiAgICBrZXk6ICdsaWdhdHVyZUNhcmV0UG9zaXRpb25zJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge30KICB9LCB7CiAgICBrZXk6ICduYW1lJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5fZ2V0TmFtZSgpOwogICAgfQogIH1dKTsKCiAgcmV0dXJuIEdseXBoOwp9KCksIChfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yJDQoX2NsYXNzJDgucHJvdG90eXBlLCAnY2JveCcsIFtjYWNoZV0sIF9PYmplY3QkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcyQ4LnByb3RvdHlwZSwgJ2Nib3gnKSwgX2NsYXNzJDgucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciQ0KF9jbGFzcyQ4LnByb3RvdHlwZSwgJ2Jib3gnLCBbY2FjaGVdLCBfT2JqZWN0JGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MkOC5wcm90b3R5cGUsICdiYm94JyksIF9jbGFzcyQ4LnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IkNChfY2xhc3MkOC5wcm90b3R5cGUsICdwYXRoJywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzJDgucHJvdG90eXBlLCAncGF0aCcpLCBfY2xhc3MkOC5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yJDQoX2NsYXNzJDgucHJvdG90eXBlLCAnYWR2YW5jZVdpZHRoJywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzJDgucHJvdG90eXBlLCAnYWR2YW5jZVdpZHRoJyksIF9jbGFzcyQ4LnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IkNChfY2xhc3MkOC5wcm90b3R5cGUsICdhZHZhbmNlSGVpZ2h0JywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzJDgucHJvdG90eXBlLCAnYWR2YW5jZUhlaWdodCcpLCBfY2xhc3MkOC5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yJDQoX2NsYXNzJDgucHJvdG90eXBlLCAnbmFtZScsIFtjYWNoZV0sIF9PYmplY3QkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcyQ4LnByb3RvdHlwZSwgJ25hbWUnKSwgX2NsYXNzJDgucHJvdG90eXBlKSksIF9jbGFzcyQ4KTsKCi8vIFRoZSBoZWFkZXIgZm9yIGJvdGggc2ltcGxlIGFuZCBjb21wb3NpdGUgZ2x5cGhzCnZhciBHbHlmSGVhZGVyID0gbmV3IHIuU3RydWN0KHsKICBudW1iZXJPZkNvbnRvdXJzOiByLmludDE2LCAvLyBpZiBuZWdhdGl2ZSwgdGhpcyBpcyBhIGNvbXBvc2l0ZSBnbHlwaAogIHhNaW46IHIuaW50MTYsCiAgeU1pbjogci5pbnQxNiwKICB4TWF4OiByLmludDE2LAogIHlNYXg6IHIuaW50MTYKfSk7CgovLyBGbGFncyBmb3Igc2ltcGxlIGdseXBocwp2YXIgT05fQ1VSVkUgPSAxIDw8IDA7CnZhciBYX1NIT1JUX1ZFQ1RPUiA9IDEgPDwgMTsKdmFyIFlfU0hPUlRfVkVDVE9SID0gMSA8PCAyOwp2YXIgUkVQRUFUID0gMSA8PCAzOwp2YXIgU0FNRV9YID0gMSA8PCA0Owp2YXIgU0FNRV9ZID0gMSA8PCA1OwoKLy8gRmxhZ3MgZm9yIGNvbXBvc2l0ZSBnbHlwaHMKdmFyIEFSR18xX0FORF8yX0FSRV9XT1JEUyA9IDEgPDwgMDsKdmFyIFdFX0hBVkVfQV9TQ0FMRSA9IDEgPDwgMzsKdmFyIE1PUkVfQ09NUE9ORU5UUyA9IDEgPDwgNTsKdmFyIFdFX0hBVkVfQU5fWF9BTkRfWV9TQ0FMRSA9IDEgPDwgNjsKdmFyIFdFX0hBVkVfQV9UV09fQllfVFdPID0gMSA8PCA3Owp2YXIgV0VfSEFWRV9JTlNUUlVDVElPTlMgPSAxIDw8IDg7Ci8vIFJlcHJlc2VudHMgYSBwb2ludCBpbiBhIHNpbXBsZSBnbHlwaAp2YXIgUG9pbnQgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gUG9pbnQob25DdXJ2ZSwgZW5kQ29udG91cikgewogICAgdmFyIHggPSBhcmd1bWVudHMubGVuZ3RoID4gMiAmJiBhcmd1bWVudHNbMl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1syXSA6IDA7CiAgICB2YXIgeSA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzNdIDogMDsKCiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUG9pbnQpOwoKICAgIHRoaXMub25DdXJ2ZSA9IG9uQ3VydmU7CiAgICB0aGlzLmVuZENvbnRvdXIgPSBlbmRDb250b3VyOwogICAgdGhpcy54ID0geDsKICAgIHRoaXMueSA9IHk7CiAgfQoKICBQb2ludC5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkoKSB7CiAgICByZXR1cm4gbmV3IFBvaW50KHRoaXMub25DdXJ2ZSwgdGhpcy5lbmRDb250b3VyLCB0aGlzLngsIHRoaXMueSk7CiAgfTsKCiAgcmV0dXJuIFBvaW50Owp9KCk7CgovLyBSZXByZXNlbnRzIGEgY29tcG9uZW50IGluIGEgY29tcG9zaXRlIGdseXBoCgp2YXIgQ29tcG9uZW50ID0gZnVuY3Rpb24gQ29tcG9uZW50KGdseXBoSUQsIGR4LCBkeSkgewogIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb21wb25lbnQpOwoKICB0aGlzLmdseXBoSUQgPSBnbHlwaElEOwogIHRoaXMuZHggPSBkeDsKICB0aGlzLmR5ID0gZHk7CiAgdGhpcy5wb3MgPSAwOwogIHRoaXMuc2NhbGVYID0gdGhpcy5zY2FsZVkgPSAxOwogIHRoaXMuc2NhbGUwMSA9IHRoaXMuc2NhbGUxMCA9IDA7Cn07CgovKioKICogUmVwcmVzZW50cyBhIFRydWVUeXBlIGdseXBoLgogKi8KCgp2YXIgVFRGR2x5cGggPSBmdW5jdGlvbiAoX0dseXBoKSB7CiAgX2luaGVyaXRzKFRURkdseXBoLCBfR2x5cGgpOwoKICBmdW5jdGlvbiBUVEZHbHlwaCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUVEZHbHlwaCk7CgogICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9HbHlwaC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTsKICB9CgogIC8vIFBhcnNlcyBqdXN0IHRoZSBnbHlwaCBoZWFkZXIgYW5kIHJldHVybnMgdGhlIGJvdW5kaW5nIGJveAogIFRURkdseXBoLnByb3RvdHlwZS5fZ2V0Q0JveCA9IGZ1bmN0aW9uIF9nZXRDQm94KGludGVybmFsKSB7CiAgICAvLyBXZSBuZWVkIHRvIGRlY29kZSB0aGUgZ2x5cGggaWYgdmFyaWF0aW9uIHByb2Nlc3NpbmcgaXMgcmVxdWVzdGVkLAogICAgLy8gc28gaXQncyBlYXNpZXIganVzdCB0byByZWNvbXB1dGUgdGhlIHBhdGgncyBjYm94IGFmdGVyIGRlY29kaW5nLgogICAgaWYgKHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvciAmJiAhaW50ZXJuYWwpIHsKICAgICAgcmV0dXJuIHRoaXMucGF0aC5jYm94OwogICAgfQoKICAgIHZhciBzdHJlYW0gPSB0aGlzLl9mb250Ll9nZXRUYWJsZVN0cmVhbSgnZ2x5ZicpOwogICAgc3RyZWFtLnBvcyArPSB0aGlzLl9mb250LmxvY2Eub2Zmc2V0c1t0aGlzLmlkXTsKICAgIHZhciBnbHlwaCA9IEdseWZIZWFkZXIuZGVjb2RlKHN0cmVhbSk7CgogICAgdmFyIGNib3ggPSBuZXcgQkJveChnbHlwaC54TWluLCBnbHlwaC55TWluLCBnbHlwaC54TWF4LCBnbHlwaC55TWF4KTsKICAgIHJldHVybiBfT2JqZWN0JGZyZWV6ZShjYm94KTsKICB9OwoKICAvLyBQYXJzZXMgYSBzaW5nbGUgZ2x5cGggY29vcmRpbmF0ZQoKCiAgVFRGR2x5cGgucHJvdG90eXBlLl9wYXJzZUdseXBoQ29vcmQgPSBmdW5jdGlvbiBfcGFyc2VHbHlwaENvb3JkKHN0cmVhbSwgcHJldiwgc2hvcnQsIHNhbWUpIHsKICAgIGlmIChzaG9ydCkgewogICAgICB2YXIgdmFsID0gc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICBpZiAoIXNhbWUpIHsKICAgICAgICB2YWwgPSAtdmFsOwogICAgICB9CgogICAgICB2YWwgKz0gcHJldjsKICAgIH0gZWxzZSB7CiAgICAgIGlmIChzYW1lKSB7CiAgICAgICAgdmFyIHZhbCA9IHByZXY7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIHZhbCA9IHByZXYgKyBzdHJlYW0ucmVhZEludDE2QkUoKTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiB2YWw7CiAgfTsKCiAgLy8gRGVjb2RlcyB0aGUgZ2x5cGggZGF0YSBpbnRvIHBvaW50cyBmb3Igc2ltcGxlIGdseXBocywKICAvLyBvciBjb21wb25lbnRzIGZvciBjb21wb3NpdGUgZ2x5cGhzCgoKICBUVEZHbHlwaC5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uIF9kZWNvZGUoKSB7CiAgICB2YXIgZ2x5ZlBvcyA9IHRoaXMuX2ZvbnQubG9jYS5vZmZzZXRzW3RoaXMuaWRdOwogICAgdmFyIG5leHRQb3MgPSB0aGlzLl9mb250LmxvY2Eub2Zmc2V0c1t0aGlzLmlkICsgMV07CgogICAgLy8gTm90aGluZyB0byBkbyBpZiB0aGVyZSBpcyBubyBkYXRhIGZvciB0aGlzIGdseXBoCiAgICBpZiAoZ2x5ZlBvcyA9PT0gbmV4dFBvcykgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICB2YXIgc3RyZWFtID0gdGhpcy5fZm9udC5fZ2V0VGFibGVTdHJlYW0oJ2dseWYnKTsKICAgIHN0cmVhbS5wb3MgKz0gZ2x5ZlBvczsKICAgIHZhciBzdGFydFBvcyA9IHN0cmVhbS5wb3M7CgogICAgdmFyIGdseXBoID0gR2x5ZkhlYWRlci5kZWNvZGUoc3RyZWFtKTsKCiAgICBpZiAoZ2x5cGgubnVtYmVyT2ZDb250b3VycyA+IDApIHsKICAgICAgdGhpcy5fZGVjb2RlU2ltcGxlKGdseXBoLCBzdHJlYW0pOwogICAgfSBlbHNlIGlmIChnbHlwaC5udW1iZXJPZkNvbnRvdXJzIDwgMCkgewogICAgICB0aGlzLl9kZWNvZGVDb21wb3NpdGUoZ2x5cGgsIHN0cmVhbSwgc3RhcnRQb3MpOwogICAgfQoKICAgIHJldHVybiBnbHlwaDsKICB9OwoKICBUVEZHbHlwaC5wcm90b3R5cGUuX2RlY29kZVNpbXBsZSA9IGZ1bmN0aW9uIF9kZWNvZGVTaW1wbGUoZ2x5cGgsIHN0cmVhbSkgewogICAgLy8gdGhpcyBpcyBhIHNpbXBsZSBnbHlwaAogICAgZ2x5cGgucG9pbnRzID0gW107CgogICAgdmFyIGVuZFB0c09mQ29udG91cnMgPSBuZXcgci5BcnJheShyLnVpbnQxNiwgZ2x5cGgubnVtYmVyT2ZDb250b3VycykuZGVjb2RlKHN0cmVhbSk7CiAgICBnbHlwaC5pbnN0cnVjdGlvbnMgPSBuZXcgci5BcnJheShyLnVpbnQ4LCByLnVpbnQxNikuZGVjb2RlKHN0cmVhbSk7CgogICAgdmFyIGZsYWdzID0gW107CiAgICB2YXIgbnVtQ29vcmRzID0gZW5kUHRzT2ZDb250b3Vyc1tlbmRQdHNPZkNvbnRvdXJzLmxlbmd0aCAtIDFdICsgMTsKCiAgICB3aGlsZSAoZmxhZ3MubGVuZ3RoIDwgbnVtQ29vcmRzKSB7CiAgICAgIHZhciBmbGFnID0gc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICBmbGFncy5wdXNoKGZsYWcpOwoKICAgICAgLy8gY2hlY2sgZm9yIHJlcGVhdCBmbGFnCiAgICAgIGlmIChmbGFnICYgUkVQRUFUKSB7CiAgICAgICAgdmFyIGNvdW50ID0gc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY291bnQ7IGorKykgewogICAgICAgICAgZmxhZ3MucHVzaChmbGFnKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZsYWdzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBmbGFnID0gZmxhZ3NbaV07CiAgICAgIHZhciBwb2ludCA9IG5ldyBQb2ludCghIShmbGFnICYgT05fQ1VSVkUpLCBlbmRQdHNPZkNvbnRvdXJzLmluZGV4T2YoaSkgPj0gMCwgMCwgMCk7CiAgICAgIGdseXBoLnBvaW50cy5wdXNoKHBvaW50KTsKICAgIH0KCiAgICB2YXIgcHggPSAwOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmbGFncy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgZmxhZyA9IGZsYWdzW2ldOwogICAgICBnbHlwaC5wb2ludHNbaV0ueCA9IHB4ID0gdGhpcy5fcGFyc2VHbHlwaENvb3JkKHN0cmVhbSwgcHgsIGZsYWcgJiBYX1NIT1JUX1ZFQ1RPUiwgZmxhZyAmIFNBTUVfWCk7CiAgICB9CgogICAgdmFyIHB5ID0gMDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmxhZ3MubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGZsYWcgPSBmbGFnc1tpXTsKICAgICAgZ2x5cGgucG9pbnRzW2ldLnkgPSBweSA9IHRoaXMuX3BhcnNlR2x5cGhDb29yZChzdHJlYW0sIHB5LCBmbGFnICYgWV9TSE9SVF9WRUNUT1IsIGZsYWcgJiBTQU1FX1kpOwogICAgfQoKICAgIGlmICh0aGlzLl9mb250Ll92YXJpYXRpb25Qcm9jZXNzb3IpIHsKICAgICAgdmFyIHBvaW50cyA9IGdseXBoLnBvaW50cy5zbGljZSgpOwogICAgICBwb2ludHMucHVzaC5hcHBseShwb2ludHMsIHRoaXMuX2dldFBoYW50b21Qb2ludHMoZ2x5cGgpKTsKCiAgICAgIHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3Nvci50cmFuc2Zvcm1Qb2ludHModGhpcy5pZCwgcG9pbnRzKTsKICAgICAgZ2x5cGgucGhhbnRvbVBvaW50cyA9IHBvaW50cy5zbGljZSgtNCk7CiAgICB9CgogICAgcmV0dXJuOwogIH07CgogIFRURkdseXBoLnByb3RvdHlwZS5fZGVjb2RlQ29tcG9zaXRlID0gZnVuY3Rpb24gX2RlY29kZUNvbXBvc2l0ZShnbHlwaCwgc3RyZWFtKSB7CiAgICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiAwOwoKICAgIC8vIHRoaXMgaXMgYSBjb21wb3NpdGUgZ2x5cGgKICAgIGdseXBoLmNvbXBvbmVudHMgPSBbXTsKICAgIHZhciBoYXZlSW5zdHJ1Y3Rpb25zID0gZmFsc2U7CiAgICB2YXIgZmxhZ3MgPSBNT1JFX0NPTVBPTkVOVFM7CgogICAgd2hpbGUgKGZsYWdzICYgTU9SRV9DT01QT05FTlRTKSB7CiAgICAgIGZsYWdzID0gc3RyZWFtLnJlYWRVSW50MTZCRSgpOwogICAgICB2YXIgZ1BvcyA9IHN0cmVhbS5wb3MgLSBvZmZzZXQ7CiAgICAgIHZhciBnbHlwaElEID0gc3RyZWFtLnJlYWRVSW50MTZCRSgpOwogICAgICBpZiAoIWhhdmVJbnN0cnVjdGlvbnMpIHsKICAgICAgICBoYXZlSW5zdHJ1Y3Rpb25zID0gKGZsYWdzICYgV0VfSEFWRV9JTlNUUlVDVElPTlMpICE9PSAwOwogICAgICB9CgogICAgICBpZiAoZmxhZ3MgJiBBUkdfMV9BTkRfMl9BUkVfV09SRFMpIHsKICAgICAgICB2YXIgZHggPSBzdHJlYW0ucmVhZEludDE2QkUoKTsKICAgICAgICB2YXIgZHkgPSBzdHJlYW0ucmVhZEludDE2QkUoKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgZHggPSBzdHJlYW0ucmVhZEludDgoKTsKICAgICAgICB2YXIgZHkgPSBzdHJlYW0ucmVhZEludDgoKTsKICAgICAgfQoKICAgICAgdmFyIGNvbXBvbmVudCA9IG5ldyBDb21wb25lbnQoZ2x5cGhJRCwgZHgsIGR5KTsKICAgICAgY29tcG9uZW50LnBvcyA9IGdQb3M7CgogICAgICBpZiAoZmxhZ3MgJiBXRV9IQVZFX0FfU0NBTEUpIHsKICAgICAgICAvLyBmaXhlZCBudW1iZXIgd2l0aCAxNCBiaXRzIG9mIGZyYWN0aW9uCiAgICAgICAgY29tcG9uZW50LnNjYWxlWCA9IGNvbXBvbmVudC5zY2FsZVkgPSAoc3RyZWFtLnJlYWRVSW50OCgpIDw8IDI0IHwgc3RyZWFtLnJlYWRVSW50OCgpIDw8IDE2KSAvIDEwNzM3NDE4MjQ7CiAgICAgIH0gZWxzZSBpZiAoZmxhZ3MgJiBXRV9IQVZFX0FOX1hfQU5EX1lfU0NBTEUpIHsKICAgICAgICBjb21wb25lbnQuc2NhbGVYID0gKHN0cmVhbS5yZWFkVUludDgoKSA8PCAyNCB8IHN0cmVhbS5yZWFkVUludDgoKSA8PCAxNikgLyAxMDczNzQxODI0OwogICAgICAgIGNvbXBvbmVudC5zY2FsZVkgPSAoc3RyZWFtLnJlYWRVSW50OCgpIDw8IDI0IHwgc3RyZWFtLnJlYWRVSW50OCgpIDw8IDE2KSAvIDEwNzM3NDE4MjQ7CiAgICAgIH0gZWxzZSBpZiAoZmxhZ3MgJiBXRV9IQVZFX0FfVFdPX0JZX1RXTykgewogICAgICAgIGNvbXBvbmVudC5zY2FsZVggPSAoc3RyZWFtLnJlYWRVSW50OCgpIDw8IDI0IHwgc3RyZWFtLnJlYWRVSW50OCgpIDw8IDE2KSAvIDEwNzM3NDE4MjQ7CiAgICAgICAgY29tcG9uZW50LnNjYWxlMDEgPSAoc3RyZWFtLnJlYWRVSW50OCgpIDw8IDI0IHwgc3RyZWFtLnJlYWRVSW50OCgpIDw8IDE2KSAvIDEwNzM3NDE4MjQ7CiAgICAgICAgY29tcG9uZW50LnNjYWxlMTAgPSAoc3RyZWFtLnJlYWRVSW50OCgpIDw8IDI0IHwgc3RyZWFtLnJlYWRVSW50OCgpIDw8IDE2KSAvIDEwNzM3NDE4MjQ7CiAgICAgICAgY29tcG9uZW50LnNjYWxlWSA9IChzdHJlYW0ucmVhZFVJbnQ4KCkgPDwgMjQgfCBzdHJlYW0ucmVhZFVJbnQ4KCkgPDwgMTYpIC8gMTA3Mzc0MTgyNDsKICAgICAgfQoKICAgICAgZ2x5cGguY29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7CiAgICB9CgogICAgaWYgKHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvcikgewogICAgICB2YXIgcG9pbnRzID0gW107CiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZ2x5cGguY29tcG9uZW50cy5sZW5ndGg7IGorKykgewogICAgICAgIHZhciBjb21wb25lbnQgPSBnbHlwaC5jb21wb25lbnRzW2pdOwogICAgICAgIHBvaW50cy5wdXNoKG5ldyBQb2ludCh0cnVlLCB0cnVlLCBjb21wb25lbnQuZHgsIGNvbXBvbmVudC5keSkpOwogICAgICB9CgogICAgICBwb2ludHMucHVzaC5hcHBseShwb2ludHMsIHRoaXMuX2dldFBoYW50b21Qb2ludHMoZ2x5cGgpKTsKCiAgICAgIHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3Nvci50cmFuc2Zvcm1Qb2ludHModGhpcy5pZCwgcG9pbnRzKTsKICAgICAgZ2x5cGgucGhhbnRvbVBvaW50cyA9IHBvaW50cy5zcGxpY2UoLTQsIDQpOwoKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgcG9pbnQgPSBwb2ludHNbaV07CiAgICAgICAgZ2x5cGguY29tcG9uZW50c1tpXS5keCA9IHBvaW50Lng7CiAgICAgICAgZ2x5cGguY29tcG9uZW50c1tpXS5keSA9IHBvaW50Lnk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaGF2ZUluc3RydWN0aW9uczsKICB9OwoKICBUVEZHbHlwaC5wcm90b3R5cGUuX2dldFBoYW50b21Qb2ludHMgPSBmdW5jdGlvbiBfZ2V0UGhhbnRvbVBvaW50cyhnbHlwaCkgewogICAgdmFyIGNib3ggPSB0aGlzLl9nZXRDQm94KHRydWUpOwogICAgaWYgKHRoaXMuX21ldHJpY3MgPT0gbnVsbCkgewogICAgICB0aGlzLl9tZXRyaWNzID0gR2x5cGgucHJvdG90eXBlLl9nZXRNZXRyaWNzLmNhbGwodGhpcywgY2JveCk7CiAgICB9CgogICAgdmFyIF9tZXRyaWNzID0gdGhpcy5fbWV0cmljcywKICAgICAgICBhZHZhbmNlV2lkdGggPSBfbWV0cmljcy5hZHZhbmNlV2lkdGgsCiAgICAgICAgYWR2YW5jZUhlaWdodCA9IF9tZXRyaWNzLmFkdmFuY2VIZWlnaHQsCiAgICAgICAgbGVmdEJlYXJpbmcgPSBfbWV0cmljcy5sZWZ0QmVhcmluZywKICAgICAgICB0b3BCZWFyaW5nID0gX21ldHJpY3MudG9wQmVhcmluZzsKCgogICAgcmV0dXJuIFtuZXcgUG9pbnQoZmFsc2UsIHRydWUsIGdseXBoLnhNaW4gLSBsZWZ0QmVhcmluZywgMCksIG5ldyBQb2ludChmYWxzZSwgdHJ1ZSwgZ2x5cGgueE1pbiAtIGxlZnRCZWFyaW5nICsgYWR2YW5jZVdpZHRoLCAwKSwgbmV3IFBvaW50KGZhbHNlLCB0cnVlLCAwLCBnbHlwaC55TWF4ICsgdG9wQmVhcmluZyksIG5ldyBQb2ludChmYWxzZSwgdHJ1ZSwgMCwgZ2x5cGgueU1heCArIHRvcEJlYXJpbmcgKyBhZHZhbmNlSGVpZ2h0KV07CiAgfTsKCiAgLy8gRGVjb2RlcyBmb250IGRhdGEsIHJlc29sdmVzIGNvbXBvc2l0ZSBnbHlwaHMsIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIGNvbnRvdXJzCgoKICBUVEZHbHlwaC5wcm90b3R5cGUuX2dldENvbnRvdXJzID0gZnVuY3Rpb24gX2dldENvbnRvdXJzKCkgewogICAgdmFyIGdseXBoID0gdGhpcy5fZGVjb2RlKCk7CiAgICBpZiAoIWdseXBoKSB7CiAgICAgIHJldHVybiBbXTsKICAgIH0KCiAgICB2YXIgcG9pbnRzID0gW107CgogICAgaWYgKGdseXBoLm51bWJlck9mQ29udG91cnMgPCAwKSB7CiAgICAgIC8vIHJlc29sdmUgY29tcG9zaXRlIGdseXBocwogICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBnbHlwaC5jb21wb25lbnRzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgICB2YXIgX3JlZjsKCiAgICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgY29tcG9uZW50ID0gX3JlZjsKCiAgICAgICAgdmFyIF9jb250b3VycyA9IHRoaXMuX2ZvbnQuZ2V0R2x5cGgoY29tcG9uZW50LmdseXBoSUQpLl9nZXRDb250b3VycygpOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2NvbnRvdXJzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgY29udG91ciA9IF9jb250b3Vyc1tpXTsKICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29udG91ci5sZW5ndGg7IGorKykgewogICAgICAgICAgICB2YXIgX3BvaW50ID0gY29udG91cltqXTsKICAgICAgICAgICAgdmFyIHggPSBfcG9pbnQueCAqIGNvbXBvbmVudC5zY2FsZVggKyBfcG9pbnQueSAqIGNvbXBvbmVudC5zY2FsZTAxICsgY29tcG9uZW50LmR4OwogICAgICAgICAgICB2YXIgeSA9IF9wb2ludC55ICogY29tcG9uZW50LnNjYWxlWSArIF9wb2ludC54ICogY29tcG9uZW50LnNjYWxlMTAgKyBjb21wb25lbnQuZHk7CiAgICAgICAgICAgIHBvaW50cy5wdXNoKG5ldyBQb2ludChfcG9pbnQub25DdXJ2ZSwgX3BvaW50LmVuZENvbnRvdXIsIHgsIHkpKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIHBvaW50cyA9IGdseXBoLnBvaW50cyB8fCBbXTsKICAgIH0KCiAgICAvLyBSZWNvbXB1dGUgYW5kIGNhY2hlIG1ldHJpY3MgaWYgd2UgcGVyZm9ybWVkIHZhcmlhdGlvbiBwcm9jZXNzaW5nLCBhbmQgZG9uJ3QgaGF2ZSBhbiBIVkFSIHRhYmxlCiAgICBpZiAoZ2x5cGgucGhhbnRvbVBvaW50cyAmJiAhdGhpcy5fZm9udC5kaXJlY3RvcnkudGFibGVzLkhWQVIpIHsKICAgICAgdGhpcy5fbWV0cmljcy5hZHZhbmNlV2lkdGggPSBnbHlwaC5waGFudG9tUG9pbnRzWzFdLnggLSBnbHlwaC5waGFudG9tUG9pbnRzWzBdLng7CiAgICAgIHRoaXMuX21ldHJpY3MuYWR2YW5jZUhlaWdodCA9IGdseXBoLnBoYW50b21Qb2ludHNbM10ueSAtIGdseXBoLnBoYW50b21Qb2ludHNbMl0ueTsKICAgICAgdGhpcy5fbWV0cmljcy5sZWZ0QmVhcmluZyA9IGdseXBoLnhNaW4gLSBnbHlwaC5waGFudG9tUG9pbnRzWzBdLng7CiAgICAgIHRoaXMuX21ldHJpY3MudG9wQmVhcmluZyA9IGdseXBoLnBoYW50b21Qb2ludHNbMl0ueSAtIGdseXBoLnlNYXg7CiAgICB9CgogICAgdmFyIGNvbnRvdXJzID0gW107CiAgICB2YXIgY3VyID0gW107CiAgICBmb3IgKHZhciBrID0gMDsgayA8IHBvaW50cy5sZW5ndGg7IGsrKykgewogICAgICB2YXIgcG9pbnQgPSBwb2ludHNba107CiAgICAgIGN1ci5wdXNoKHBvaW50KTsKICAgICAgaWYgKHBvaW50LmVuZENvbnRvdXIpIHsKICAgICAgICBjb250b3Vycy5wdXNoKGN1cik7CiAgICAgICAgY3VyID0gW107CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gY29udG91cnM7CiAgfTsKCiAgVFRGR2x5cGgucHJvdG90eXBlLl9nZXRNZXRyaWNzID0gZnVuY3Rpb24gX2dldE1ldHJpY3MoKSB7CiAgICBpZiAodGhpcy5fbWV0cmljcykgewogICAgICByZXR1cm4gdGhpcy5fbWV0cmljczsKICAgIH0KCiAgICB2YXIgY2JveCA9IHRoaXMuX2dldENCb3godHJ1ZSk7CiAgICBfR2x5cGgucHJvdG90eXBlLl9nZXRNZXRyaWNzLmNhbGwodGhpcywgY2JveCk7CgogICAgaWYgKHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvciAmJiAhdGhpcy5fZm9udC5IVkFSKSB7CiAgICAgIC8vIE5vIEhWQVIgdGFibGUsIGRlY29kZSB0aGUgZ2x5cGguIFRoaXMgdHJpZ2dlcnMgcmVjb21wdXRhdGlvbiBvZiBtZXRyaWNzLgogICAgICB0aGlzLnBhdGg7CiAgICB9CgogICAgcmV0dXJuIHRoaXMuX21ldHJpY3M7CiAgfTsKCiAgLy8gQ29udmVydHMgY29udG91cnMgdG8gYSBQYXRoIG9iamVjdCB0aGF0IGNhbiBiZSByZW5kZXJlZAoKCiAgVFRGR2x5cGgucHJvdG90eXBlLl9nZXRQYXRoID0gZnVuY3Rpb24gX2dldFBhdGgoKSB7CiAgICB2YXIgY29udG91cnMgPSB0aGlzLl9nZXRDb250b3VycygpOwogICAgdmFyIHBhdGggPSBuZXcgUGF0aCgpOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29udG91cnMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGNvbnRvdXIgPSBjb250b3Vyc1tpXTsKICAgICAgdmFyIGZpcnN0UHQgPSBjb250b3VyWzBdOwogICAgICB2YXIgbGFzdFB0ID0gY29udG91cltjb250b3VyLmxlbmd0aCAtIDFdOwogICAgICB2YXIgc3RhcnQgPSAwOwoKICAgICAgaWYgKGZpcnN0UHQub25DdXJ2ZSkgewogICAgICAgIC8vIFRoZSBmaXJzdCBwb2ludCB3aWxsIGJlIGNvbnN1bWVkIGJ5IHRoZSBtb3ZlVG8gY29tbWFuZCwgc28gc2tpcCBpbiB0aGUgbG9vcAogICAgICAgIHZhciBjdXJ2ZVB0ID0gbnVsbDsKICAgICAgICBzdGFydCA9IDE7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaWYgKGxhc3RQdC5vbkN1cnZlKSB7CiAgICAgICAgICAvLyBTdGFydCBhdCB0aGUgbGFzdCBwb2ludCBpZiB0aGUgZmlyc3QgcG9pbnQgaXMgb2ZmIGN1cnZlIGFuZCB0aGUgbGFzdCBwb2ludCBpcyBvbiBjdXJ2ZQogICAgICAgICAgZmlyc3RQdCA9IGxhc3RQdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgLy8gU3RhcnQgYXQgdGhlIG1pZGRsZSBpZiBib3RoIHRoZSBmaXJzdCBhbmQgbGFzdCBwb2ludHMgYXJlIG9mZiBjdXJ2ZQogICAgICAgICAgZmlyc3RQdCA9IG5ldyBQb2ludChmYWxzZSwgZmFsc2UsIChmaXJzdFB0LnggKyBsYXN0UHQueCkgLyAyLCAoZmlyc3RQdC55ICsgbGFzdFB0LnkpIC8gMik7CiAgICAgICAgfQoKICAgICAgICB2YXIgY3VydmVQdCA9IGZpcnN0UHQ7CiAgICAgIH0KCiAgICAgIHBhdGgubW92ZVRvKGZpcnN0UHQueCwgZmlyc3RQdC55KTsKCiAgICAgIGZvciAodmFyIGogPSBzdGFydDsgaiA8IGNvbnRvdXIubGVuZ3RoOyBqKyspIHsKICAgICAgICB2YXIgcHQgPSBjb250b3VyW2pdOwogICAgICAgIHZhciBwcmV2UHQgPSBqID09PSAwID8gZmlyc3RQdCA6IGNvbnRvdXJbaiAtIDFdOwoKICAgICAgICBpZiAocHJldlB0Lm9uQ3VydmUgJiYgcHQub25DdXJ2ZSkgewogICAgICAgICAgcGF0aC5saW5lVG8ocHQueCwgcHQueSk7CiAgICAgICAgfSBlbHNlIGlmIChwcmV2UHQub25DdXJ2ZSAmJiAhcHQub25DdXJ2ZSkgewogICAgICAgICAgdmFyIGN1cnZlUHQgPSBwdDsKICAgICAgICB9IGVsc2UgaWYgKCFwcmV2UHQub25DdXJ2ZSAmJiAhcHQub25DdXJ2ZSkgewogICAgICAgICAgdmFyIG1pZFggPSAocHJldlB0LnggKyBwdC54KSAvIDI7CiAgICAgICAgICB2YXIgbWlkWSA9IChwcmV2UHQueSArIHB0LnkpIC8gMjsKICAgICAgICAgIHBhdGgucXVhZHJhdGljQ3VydmVUbyhwcmV2UHQueCwgcHJldlB0LnksIG1pZFgsIG1pZFkpOwogICAgICAgICAgdmFyIGN1cnZlUHQgPSBwdDsKICAgICAgICB9IGVsc2UgaWYgKCFwcmV2UHQub25DdXJ2ZSAmJiBwdC5vbkN1cnZlKSB7CiAgICAgICAgICBwYXRoLnF1YWRyYXRpY0N1cnZlVG8oY3VydmVQdC54LCBjdXJ2ZVB0LnksIHB0LngsIHB0LnkpOwogICAgICAgICAgdmFyIGN1cnZlUHQgPSBudWxsOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gVFRGIHBhdGggc3RhdGUiKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIENvbm5lY3QgdGhlIGZpcnN0IGFuZCBsYXN0IHBvaW50cwogICAgICBpZiAoY3VydmVQdCkgewogICAgICAgIHBhdGgucXVhZHJhdGljQ3VydmVUbyhjdXJ2ZVB0LngsIGN1cnZlUHQueSwgZmlyc3RQdC54LCBmaXJzdFB0LnkpOwogICAgICB9CgogICAgICBwYXRoLmNsb3NlUGF0aCgpOwogICAgfQoKICAgIHJldHVybiBwYXRoOwogIH07CgogIHJldHVybiBUVEZHbHlwaDsKfShHbHlwaCk7CgovKioKICogUmVwcmVzZW50cyBhbiBPcGVuVHlwZSBQb3N0U2NyaXB0IGdseXBoLCBpbiB0aGUgQ29tcGFjdCBGb250IEZvcm1hdC4KICovCgp2YXIgQ0ZGR2x5cGggPSBmdW5jdGlvbiAoX0dseXBoKSB7CiAgX2luaGVyaXRzKENGRkdseXBoLCBfR2x5cGgpOwoKICBmdW5jdGlvbiBDRkZHbHlwaCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDRkZHbHlwaCk7CgogICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9HbHlwaC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTsKICB9CgogIENGRkdseXBoLnByb3RvdHlwZS5fZ2V0TmFtZSA9IGZ1bmN0aW9uIF9nZXROYW1lKCkgewogICAgaWYgKHRoaXMuX2ZvbnQuQ0ZGMikgewogICAgICByZXR1cm4gX0dseXBoLnByb3RvdHlwZS5fZ2V0TmFtZS5jYWxsKHRoaXMpOwogICAgfQoKICAgIHJldHVybiB0aGlzLl9mb250WydDRkYgJ10uZ2V0R2x5cGhOYW1lKHRoaXMuaWQpOwogIH07CgogIENGRkdseXBoLnByb3RvdHlwZS5iaWFzID0gZnVuY3Rpb24gYmlhcyhzKSB7CiAgICBpZiAocy5sZW5ndGggPCAxMjQwKSB7CiAgICAgIHJldHVybiAxMDc7CiAgICB9IGVsc2UgaWYgKHMubGVuZ3RoIDwgMzM5MDApIHsKICAgICAgcmV0dXJuIDExMzE7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gMzI3Njg7CiAgICB9CiAgfTsKCiAgQ0ZGR2x5cGgucHJvdG90eXBlLl9nZXRQYXRoID0gZnVuY3Rpb24gX2dldFBhdGgoKSB7CiAgICB2YXIgc3RyZWFtID0gdGhpcy5fZm9udC5zdHJlYW07CiAgICB2YXIgcG9zID0gc3RyZWFtLnBvczsKCgogICAgdmFyIGNmZiA9IHRoaXMuX2ZvbnQuQ0ZGMiB8fCB0aGlzLl9mb250WydDRkYgJ107CiAgICB2YXIgc3RyID0gY2ZmLnRvcERpY3QuQ2hhclN0cmluZ3NbdGhpcy5pZF07CiAgICB2YXIgZW5kID0gc3RyLm9mZnNldCArIHN0ci5sZW5ndGg7CiAgICBzdHJlYW0ucG9zID0gc3RyLm9mZnNldDsKCiAgICB2YXIgcGF0aCA9IG5ldyBQYXRoKCk7CiAgICB2YXIgc3RhY2sgPSBbXTsKICAgIHZhciB0cmFucyA9IFtdOwoKICAgIHZhciB3aWR0aCA9IG51bGw7CiAgICB2YXIgblN0ZW1zID0gMDsKICAgIHZhciB4ID0gMCwKICAgICAgICB5ID0gMDsKICAgIHZhciB1c2VkR3N1YnJzID0gdm9pZCAwOwogICAgdmFyIHVzZWRTdWJycyA9IHZvaWQgMDsKICAgIHZhciBvcGVuID0gZmFsc2U7CgogICAgdGhpcy5fdXNlZEdzdWJycyA9IHVzZWRHc3VicnMgPSB7fTsKICAgIHRoaXMuX3VzZWRTdWJycyA9IHVzZWRTdWJycyA9IHt9OwoKICAgIHZhciBnc3VicnMgPSBjZmYuZ2xvYmFsU3VickluZGV4IHx8IFtdOwogICAgdmFyIGdzdWJyc0JpYXMgPSB0aGlzLmJpYXMoZ3N1YnJzKTsKCiAgICB2YXIgcHJpdmF0ZURpY3QgPSBjZmYucHJpdmF0ZURpY3RGb3JHbHlwaCh0aGlzLmlkKTsKICAgIHZhciBzdWJycyA9IHByaXZhdGVEaWN0LlN1YnJzIHx8IFtdOwogICAgdmFyIHN1YnJzQmlhcyA9IHRoaXMuYmlhcyhzdWJycyk7CgogICAgdmFyIHZzdG9yZSA9IGNmZi50b3BEaWN0LnZzdG9yZSAmJiBjZmYudG9wRGljdC52c3RvcmUuaXRlbVZhcmlhdGlvblN0b3JlOwogICAgdmFyIHZzaW5kZXggPSBwcml2YXRlRGljdC52c2luZGV4OwogICAgdmFyIHZhcmlhdGlvblByb2Nlc3NvciA9IHRoaXMuX2ZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvcjsKCiAgICBmdW5jdGlvbiBjaGVja1dpZHRoKCkgewogICAgICBpZiAod2lkdGggPT0gbnVsbCkgewogICAgICAgIHdpZHRoID0gc3RhY2suc2hpZnQoKSArIHByaXZhdGVEaWN0Lm5vbWluYWxXaWR0aFg7CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZVN0ZW1zKCkgewogICAgICBpZiAoc3RhY2subGVuZ3RoICUgMiAhPT0gMCkgewogICAgICAgIGNoZWNrV2lkdGgoKTsKICAgICAgfQoKICAgICAgblN0ZW1zICs9IHN0YWNrLmxlbmd0aCA+PiAxOwogICAgICByZXR1cm4gc3RhY2subGVuZ3RoID0gMDsKICAgIH0KCiAgICBmdW5jdGlvbiBtb3ZlVG8oeCwgeSkgewogICAgICBpZiAob3BlbikgewogICAgICAgIHBhdGguY2xvc2VQYXRoKCk7CiAgICAgIH0KCiAgICAgIHBhdGgubW92ZVRvKHgsIHkpOwogICAgICBvcGVuID0gdHJ1ZTsKICAgIH0KCiAgICB2YXIgcGFyc2UgPSBmdW5jdGlvbiBwYXJzZSgpIHsKICAgICAgd2hpbGUgKHN0cmVhbS5wb3MgPCBlbmQpIHsKICAgICAgICB2YXIgb3AgPSBzdHJlYW0ucmVhZFVJbnQ4KCk7CiAgICAgICAgaWYgKG9wIDwgMzIpIHsKICAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgICAgY2FzZSAxOiAvLyBoc3RlbQogICAgICAgICAgICBjYXNlIDM6IC8vIHZzdGVtCiAgICAgICAgICAgIGNhc2UgMTg6IC8vIGhzdGVtaG0KICAgICAgICAgICAgY2FzZSAyMzoKICAgICAgICAgICAgICAvLyB2c3RlbWhtCiAgICAgICAgICAgICAgcGFyc2VTdGVtcygpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIC8vIHZtb3ZldG8KICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID4gMSkgewogICAgICAgICAgICAgICAgY2hlY2tXaWR0aCgpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgeSArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIG1vdmVUbyh4LCB5KTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAvLyBybGluZXRvCiAgICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+PSAyKSB7CiAgICAgICAgICAgICAgICB4ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBwYXRoLmxpbmVUbyh4LCB5KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDY6IC8vIGhsaW5ldG8KICAgICAgICAgICAgY2FzZSA3OgogICAgICAgICAgICAgIC8vIHZsaW5ldG8KICAgICAgICAgICAgICB2YXIgcGhhc2UgPSBvcCA9PT0gNjsKICAgICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID49IDEpIHsKICAgICAgICAgICAgICAgIGlmIChwaGFzZSkgewogICAgICAgICAgICAgICAgICB4ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcGF0aC5saW5lVG8oeCwgeSk7CiAgICAgICAgICAgICAgICBwaGFzZSA9ICFwaGFzZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDg6CiAgICAgICAgICAgICAgLy8gcnJjdXJ2ZXRvCiAgICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHZhciBjMXggPSB4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHZhciBjMXkgPSB5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHZhciBjMnggPSBjMXggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgdmFyIGMyeSA9IGMxeSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB4ID0gYzJ4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHkgPSBjMnkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgcGF0aC5iZXppZXJDdXJ2ZVRvKGMxeCwgYzF5LCBjMngsIGMyeSwgeCwgeSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAvLyBjYWxsc3VicgogICAgICAgICAgICAgIHZhciBpbmRleCA9IHN0YWNrLnBvcCgpICsgc3VicnNCaWFzOwogICAgICAgICAgICAgIHZhciBzdWJyID0gc3VicnNbaW5kZXhdOwogICAgICAgICAgICAgIGlmIChzdWJyKSB7CiAgICAgICAgICAgICAgICB1c2VkU3VicnNbaW5kZXhdID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHZhciBwID0gc3RyZWFtLnBvczsKICAgICAgICAgICAgICAgIHZhciBlID0gZW5kOwogICAgICAgICAgICAgICAgc3RyZWFtLnBvcyA9IHN1YnIub2Zmc2V0OwogICAgICAgICAgICAgICAgZW5kID0gc3Vici5vZmZzZXQgKyBzdWJyLmxlbmd0aDsKICAgICAgICAgICAgICAgIHBhcnNlKCk7CiAgICAgICAgICAgICAgICBzdHJlYW0ucG9zID0gcDsKICAgICAgICAgICAgICAgIGVuZCA9IGU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAvLyByZXR1cm4KICAgICAgICAgICAgICBpZiAoY2ZmLnZlcnNpb24gPj0gMikgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybjsKCiAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgLy8gZW5kY2hhcgogICAgICAgICAgICAgIGlmIChjZmYudmVyc2lvbiA+PSAyKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICBjaGVja1dpZHRoKCk7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICBpZiAob3BlbikgewogICAgICAgICAgICAgICAgcGF0aC5jbG9zZVBhdGgoKTsKICAgICAgICAgICAgICAgIG9wZW4gPSBmYWxzZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDE1OgogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIHZzaW5kZXgKICAgICAgICAgICAgICAgIGlmIChjZmYudmVyc2lvbiA8IDIpIHsKICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd2c2luZGV4IG9wZXJhdG9yIG5vdCBzdXBwb3J0ZWQgaW4gQ0ZGIHYxJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdnNpbmRleCA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgY2FzZSAxNjoKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvLyBibGVuZAogICAgICAgICAgICAgICAgaWYgKGNmZi52ZXJzaW9uIDwgMikgewogICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JsZW5kIG9wZXJhdG9yIG5vdCBzdXBwb3J0ZWQgaW4gQ0ZGIHYxJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCF2YXJpYXRpb25Qcm9jZXNzb3IpIHsKICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdibGVuZCBvcGVyYXRvciBpbiBub24tdmFyaWF0aW9uIGZvbnQnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgYmxlbmRWZWN0b3IgPSB2YXJpYXRpb25Qcm9jZXNzb3IuZ2V0QmxlbmRWZWN0b3IodnN0b3JlLCB2c2luZGV4KTsKICAgICAgICAgICAgICAgIHZhciBudW1CbGVuZHMgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgIHZhciBudW1PcGVyYW5kcyA9IG51bUJsZW5kcyAqIGJsZW5kVmVjdG9yLmxlbmd0aDsKICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IHN0YWNrLmxlbmd0aCAtIG51bU9wZXJhbmRzOwogICAgICAgICAgICAgICAgdmFyIGJhc2UgPSBkZWx0YSAtIG51bUJsZW5kczsKCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bUJsZW5kczsgaSsrKSB7CiAgICAgICAgICAgICAgICAgIHZhciBzdW0gPSBzdGFja1tiYXNlICsgaV07CiAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYmxlbmRWZWN0b3IubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICBzdW0gKz0gYmxlbmRWZWN0b3Jbal0gKiBzdGFja1tkZWx0YSsrXTsKICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgc3RhY2tbYmFzZSArIGldID0gc3VtOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHdoaWxlIChudW1PcGVyYW5kcy0tKSB7CiAgICAgICAgICAgICAgICAgIHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNhc2UgMTk6IC8vIGhpbnRtYXNrCiAgICAgICAgICAgIGNhc2UgMjA6CiAgICAgICAgICAgICAgLy8gY250cm1hc2sKICAgICAgICAgICAgICBwYXJzZVN0ZW1zKCk7CiAgICAgICAgICAgICAgc3RyZWFtLnBvcyArPSBuU3RlbXMgKyA3ID4+IDM7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICAgIC8vIHJtb3ZldG8KICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID4gMikgewogICAgICAgICAgICAgICAgY2hlY2tXaWR0aCgpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIHkgKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICBtb3ZlVG8oeCwgeSk7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDIyOgogICAgICAgICAgICAgIC8vIGhtb3ZldG8KICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID4gMSkgewogICAgICAgICAgICAgICAgY2hlY2tXaWR0aCgpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIG1vdmVUbyh4LCB5KTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMjQ6CiAgICAgICAgICAgICAgLy8gcmN1cnZlbGluZQogICAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPj0gOCkgewogICAgICAgICAgICAgICAgdmFyIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgdmFyIGMxeSA9IHkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgdmFyIGMyeCA9IGMxeCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB2YXIgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHggPSBjMnggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgeSA9IGMyeSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBwYXRoLmJlemllckN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCB4LCB5KTsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgcGF0aC5saW5lVG8oeCwgeSk7CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDI1OgogICAgICAgICAgICAgIC8vIHJsaW5lY3VydmUKICAgICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID49IDgpIHsKICAgICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHkgKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIHBhdGgubGluZVRvKHgsIHkpOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgdmFyIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgIHZhciBjMXkgPSB5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB2YXIgYzJ4ID0gYzF4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB2YXIgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB4ID0gYzJ4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB5ID0gYzJ5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICBwYXRoLmJlemllckN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCB4LCB5KTsKICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMjY6CiAgICAgICAgICAgICAgLy8gdnZjdXJ2ZXRvCiAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCAlIDIpIHsKICAgICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPj0gNCkgewogICAgICAgICAgICAgICAgYzF4ID0geDsKICAgICAgICAgICAgICAgIGMxeSA9IHkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgYzJ4ID0gYzF4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgIGMyeSA9IGMxeSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB4ID0gYzJ4OwogICAgICAgICAgICAgICAgeSA9IGMyeSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBwYXRoLmJlemllckN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCB4LCB5KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDI3OgogICAgICAgICAgICAgIC8vIGhoY3VydmV0bwogICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggJSAyKSB7CiAgICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID49IDQpIHsKICAgICAgICAgICAgICAgIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgYzF5ID0geTsKICAgICAgICAgICAgICAgIGMyeCA9IGMxeCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICBjMnkgPSBjMXkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgeCA9IGMyeCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICB5ID0gYzJ5OwogICAgICAgICAgICAgICAgcGF0aC5iZXppZXJDdXJ2ZVRvKGMxeCwgYzF5LCBjMngsIGMyeSwgeCwgeSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAyODoKICAgICAgICAgICAgICAvLyBzaG9ydGludAogICAgICAgICAgICAgIHN0YWNrLnB1c2goc3RyZWFtLnJlYWRJbnQxNkJFKCkpOwogICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAyOToKICAgICAgICAgICAgICAvLyBjYWxsZ3N1YnIKICAgICAgICAgICAgICBpbmRleCA9IHN0YWNrLnBvcCgpICsgZ3N1YnJzQmlhczsKICAgICAgICAgICAgICBzdWJyID0gZ3N1YnJzW2luZGV4XTsKICAgICAgICAgICAgICBpZiAoc3VicikgewogICAgICAgICAgICAgICAgdXNlZEdzdWJyc1tpbmRleF0gPSB0cnVlOwogICAgICAgICAgICAgICAgdmFyIHAgPSBzdHJlYW0ucG9zOwogICAgICAgICAgICAgICAgdmFyIGUgPSBlbmQ7CiAgICAgICAgICAgICAgICBzdHJlYW0ucG9zID0gc3Vici5vZmZzZXQ7CiAgICAgICAgICAgICAgICBlbmQgPSBzdWJyLm9mZnNldCArIHN1YnIubGVuZ3RoOwogICAgICAgICAgICAgICAgcGFyc2UoKTsKICAgICAgICAgICAgICAgIHN0cmVhbS5wb3MgPSBwOwogICAgICAgICAgICAgICAgZW5kID0gZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDMwOiAvLyB2aGN1cnZldG8KICAgICAgICAgICAgY2FzZSAzMToKICAgICAgICAgICAgICAvLyBodmN1cnZldG8KICAgICAgICAgICAgICBwaGFzZSA9IG9wID09PSAzMTsKICAgICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID49IDQpIHsKICAgICAgICAgICAgICAgIGlmIChwaGFzZSkgewogICAgICAgICAgICAgICAgICBjMXggPSB4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgYzF5ID0geTsKICAgICAgICAgICAgICAgICAgYzJ4ID0gYzF4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgeSA9IGMyeSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIHggPSBjMnggKyAoc3RhY2subGVuZ3RoID09PSAxID8gc3RhY2suc2hpZnQoKSA6IDApOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgYzF4ID0geDsKICAgICAgICAgICAgICAgICAgYzF5ID0geSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIGMyeCA9IGMxeCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIGMyeSA9IGMxeSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIHggPSBjMnggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICB5ID0gYzJ5ICsgKHN0YWNrLmxlbmd0aCA9PT0gMSA/IHN0YWNrLnNoaWZ0KCkgOiAwKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwYXRoLmJlemllckN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCB4LCB5KTsKICAgICAgICAgICAgICAgIHBoYXNlID0gIXBoYXNlOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgb3AgPSBzdHJlYW0ucmVhZFVJbnQ4KCk7CiAgICAgICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgICAvLyBhbmQKICAgICAgICAgICAgICAgICAgdmFyIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgdmFyIGIgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChhICYmIGIgPyAxIDogMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgLy8gb3IKICAgICAgICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBiID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goYSB8fCBiID8gMSA6IDApOwogICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICAgIC8vIG5vdAogICAgICAgICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goYSA/IDAgOiAxKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSA5OgogICAgICAgICAgICAgICAgICAvLyBhYnMKICAgICAgICAgICAgICAgICAgYSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKE1hdGguYWJzKGEpKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAxMDoKICAgICAgICAgICAgICAgICAgLy8gYWRkCiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGEgKyBiKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAxMToKICAgICAgICAgICAgICAgICAgLy8gc3ViCiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGEgLSBiKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAxMjoKICAgICAgICAgICAgICAgICAgLy8gZGl2CiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGEgLyBiKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAxNDoKICAgICAgICAgICAgICAgICAgLy8gbmVnCiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCgtYSk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgIC8vIGVxCiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGEgPT09IGIgPyAxIDogMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMTg6CiAgICAgICAgICAgICAgICAgIC8vIGRyb3AKICAgICAgICAgICAgICAgICAgc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMjA6CiAgICAgICAgICAgICAgICAgIC8vIHB1dAogICAgICAgICAgICAgICAgICB2YXIgdmFsID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIHZhciBpZHggPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgdHJhbnNbaWR4XSA9IHZhbDsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAyMToKICAgICAgICAgICAgICAgICAgLy8gZ2V0CiAgICAgICAgICAgICAgICAgIGlkeCA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKHRyYW5zW2lkeF0gfHwgMCk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMjI6CiAgICAgICAgICAgICAgICAgIC8vIGlmZWxzZQogICAgICAgICAgICAgICAgICB2YXIgczEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgdmFyIHMyID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIHZhciB2MSA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICB2YXIgdjIgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh2MSA8PSB2MiA/IHMxIDogczIpOwogICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDIzOgogICAgICAgICAgICAgICAgICAvLyByYW5kb20KICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChNYXRoLnJhbmRvbSgpKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAyNDoKICAgICAgICAgICAgICAgICAgLy8gbXVsCiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgYiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGEgKiBiKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAyNjoKICAgICAgICAgICAgICAgICAgLy8gc3FydAogICAgICAgICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIHN0YWNrLnB1c2goTWF0aC5zcXJ0KGEpKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAyNzoKICAgICAgICAgICAgICAgICAgLy8gZHVwCiAgICAgICAgICAgICAgICAgIGEgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChhLCBhKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAyODoKICAgICAgICAgICAgICAgICAgLy8gZXhjaAogICAgICAgICAgICAgICAgICBhID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIGIgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChiLCBhKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAyOToKICAgICAgICAgICAgICAgICAgLy8gaW5kZXgKICAgICAgICAgICAgICAgICAgaWR4ID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICAgIGlmIChpZHggPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWR4ID0gMDsKICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpZHggPiBzdGFjay5sZW5ndGggLSAxKSB7CiAgICAgICAgICAgICAgICAgICAgaWR4ID0gc3RhY2subGVuZ3RoIC0gMTsKICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaChzdGFja1tpZHhdKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAzMDoKICAgICAgICAgICAgICAgICAgLy8gcm9sbAogICAgICAgICAgICAgICAgICB2YXIgbiA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICB2YXIgX2ogPSBzdGFjay5wb3AoKTsKCiAgICAgICAgICAgICAgICAgIGlmIChfaiA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKF9qID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBzdGFja1tuIC0gMV07CiAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfaSA9IG4gLSAyOyBfaSA+PSAwOyBfaS0tKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrW19pICsgMV0gPSBzdGFja1tfaV07CiAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgc3RhY2tbMF0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgX2otLTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKF9qIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSBzdGFja1swXTsKICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8PSBuOyBfaTIrKykgewogICAgICAgICAgICAgICAgICAgICAgICBzdGFja1tfaTJdID0gc3RhY2tbX2kyICsgMV07CiAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgc3RhY2tbbiAtIDFdID0gdDsKICAgICAgICAgICAgICAgICAgICAgIF9qKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgMzQ6CiAgICAgICAgICAgICAgICAgIC8vIGhmbGV4CiAgICAgICAgICAgICAgICAgIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICBjMXkgPSB5OwogICAgICAgICAgICAgICAgICBjMnggPSBjMXggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICBjMnkgPSBjMXkgKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICB2YXIgYzN4ID0gYzJ4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgdmFyIGMzeSA9IGMyeTsKICAgICAgICAgICAgICAgICAgdmFyIGM0eCA9IGMzeCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIHZhciBjNHkgPSBjM3k7CiAgICAgICAgICAgICAgICAgIHZhciBjNXggPSBjNHggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICB2YXIgYzV5ID0gYzR5OwogICAgICAgICAgICAgICAgICB2YXIgYzZ4ID0gYzV4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgdmFyIGM2eSA9IGM1eTsKICAgICAgICAgICAgICAgICAgeCA9IGM2eDsKICAgICAgICAgICAgICAgICAgeSA9IGM2eTsKCiAgICAgICAgICAgICAgICAgIHBhdGguYmV6aWVyQ3VydmVUbyhjMXgsIGMxeSwgYzJ4LCBjMnksIGMzeCwgYzN5KTsKICAgICAgICAgICAgICAgICAgcGF0aC5iZXppZXJDdXJ2ZVRvKGM0eCwgYzR5LCBjNXgsIGM1eSwgYzZ4LCBjNnkpOwogICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDM1OgogICAgICAgICAgICAgICAgICAvLyBmbGV4CiAgICAgICAgICAgICAgICAgIHZhciBwdHMgPSBbXTsKCiAgICAgICAgICAgICAgICAgIGZvciAodmFyIF9pMyA9IDA7IF9pMyA8PSA1OyBfaTMrKykgewogICAgICAgICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgcHRzLnB1c2goeCwgeSk7CiAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgIHBhdGguYmV6aWVyQ3VydmVUby5hcHBseShwYXRoLCBwdHMuc2xpY2UoMCwgNikpOwogICAgICAgICAgICAgICAgICBwYXRoLmJlemllckN1cnZlVG8uYXBwbHkocGF0aCwgcHRzLnNsaWNlKDYpKTsKICAgICAgICAgICAgICAgICAgc3RhY2suc2hpZnQoKTsgLy8gZmQKICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAzNjoKICAgICAgICAgICAgICAgICAgLy8gaGZsZXgxCiAgICAgICAgICAgICAgICAgIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICBjMXkgPSB5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgYzJ4ID0gYzF4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgYzN4ID0gYzJ4ICsgc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgYzN5ID0gYzJ5OwogICAgICAgICAgICAgICAgICBjNHggPSBjM3ggKyBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICBjNHkgPSBjM3k7CiAgICAgICAgICAgICAgICAgIGM1eCA9IGM0eCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIGM1eSA9IGM0eSArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIGM2eCA9IGM1eCArIHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIGM2eSA9IGM1eTsKICAgICAgICAgICAgICAgICAgeCA9IGM2eDsKICAgICAgICAgICAgICAgICAgeSA9IGM2eTsKCiAgICAgICAgICAgICAgICAgIHBhdGguYmV6aWVyQ3VydmVUbyhjMXgsIGMxeSwgYzJ4LCBjMnksIGMzeCwgYzN5KTsKICAgICAgICAgICAgICAgICAgcGF0aC5iZXppZXJDdXJ2ZVRvKGM0eCwgYzR5LCBjNXgsIGM1eSwgYzZ4LCBjNnkpOwogICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBjYXNlIDM3OgogICAgICAgICAgICAgICAgICAvLyBmbGV4MQogICAgICAgICAgICAgICAgICB2YXIgc3RhcnR4ID0geDsKICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0eSA9IHk7CgogICAgICAgICAgICAgICAgICBwdHMgPSBbXTsKICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2k0ID0gMDsgX2k0IDw9IDQ7IF9pNCsrKSB7CiAgICAgICAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgIHkgKz0gc3RhY2suc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICBwdHMucHVzaCh4LCB5KTsKICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHggLSBzdGFydHgpID4gTWF0aC5hYnMoeSAtIHN0YXJ0eSkpIHsKICAgICAgICAgICAgICAgICAgICAvLyBob3Jpem9udGFsCiAgICAgICAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpOwogICAgICAgICAgICAgICAgICAgIHkgPSBzdGFydHk7CiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgeCA9IHN0YXJ0eDsKICAgICAgICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7CiAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgIHB0cy5wdXNoKHgsIHkpOwogICAgICAgICAgICAgICAgICBwYXRoLmJlemllckN1cnZlVG8uYXBwbHkocGF0aCwgcHRzLnNsaWNlKDAsIDYpKTsKICAgICAgICAgICAgICAgICAgcGF0aC5iZXppZXJDdXJ2ZVRvLmFwcGx5KHBhdGgsIHB0cy5zbGljZSg2KSk7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBvcDogMTIgJyArIG9wKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBvcDogJyArIG9wKTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKG9wIDwgMjQ3KSB7CiAgICAgICAgICBzdGFjay5wdXNoKG9wIC0gMTM5KTsKICAgICAgICB9IGVsc2UgaWYgKG9wIDwgMjUxKSB7CiAgICAgICAgICB2YXIgYjEgPSBzdHJlYW0ucmVhZFVJbnQ4KCk7CiAgICAgICAgICBzdGFjay5wdXNoKChvcCAtIDI0NykgKiAyNTYgKyBiMSArIDEwOCk7CiAgICAgICAgfSBlbHNlIGlmIChvcCA8IDI1NSkgewogICAgICAgICAgdmFyIGIxID0gc3RyZWFtLnJlYWRVSW50OCgpOwogICAgICAgICAgc3RhY2sucHVzaCgtKG9wIC0gMjUxKSAqIDI1NiAtIGIxIC0gMTA4KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgc3RhY2sucHVzaChzdHJlYW0ucmVhZEludDMyQkUoKSAvIDY1NTM2KTsKICAgICAgICB9CiAgICAgIH0KICAgIH07CgogICAgcGFyc2UoKTsKCiAgICBpZiAob3BlbikgewogICAgICBwYXRoLmNsb3NlUGF0aCgpOwogICAgfQoKICAgIHJldHVybiBwYXRoOwogIH07CgogIHJldHVybiBDRkZHbHlwaDsKfShHbHlwaCk7Cgp2YXIgU0JJWEltYWdlID0gbmV3IHIuU3RydWN0KHsKICBvcmlnaW5YOiByLnVpbnQxNiwKICBvcmlnaW5ZOiByLnVpbnQxNiwKICB0eXBlOiBuZXcgci5TdHJpbmcoNCksCiAgZGF0YTogbmV3IHIuQnVmZmVyKGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC5wYXJlbnQuYnVmbGVuIC0gdC5fY3VycmVudE9mZnNldDsKICB9KQp9KTsKCi8qKgogKiBSZXByZXNlbnRzIGEgY29sb3IgKGUuZy4gZW1vamkpIGdseXBoIGluIEFwcGxlJ3MgU0JJWCBmb3JtYXQuCiAqLwoKdmFyIFNCSVhHbHlwaCA9IGZ1bmN0aW9uIChfVFRGR2x5cGgpIHsKICBfaW5oZXJpdHMoU0JJWEdseXBoLCBfVFRGR2x5cGgpOwoKICBmdW5jdGlvbiBTQklYR2x5cGgoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU0JJWEdseXBoKTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX1RURkdseXBoLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpOwogIH0KCiAgLyoqCiAgICogUmV0dXJucyBhbiBvYmplY3QgcmVwcmVzZW50aW5nIGEgZ2x5cGggaW1hZ2UgYXQgdGhlIGdpdmVuIHBvaW50IHNpemUuCiAgICogVGhlIG9iamVjdCBoYXMgYSBkYXRhIHByb3BlcnR5IHdpdGggYSBCdWZmZXIgY29udGFpbmluZyB0aGUgYWN0dWFsIGltYWdlIGRhdGEsCiAgICogYWxvbmcgd2l0aCB0aGUgaW1hZ2UgdHlwZSwgYW5kIG9yaWdpbi4KICAgKgogICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplCiAgICogQHJldHVybiB7b2JqZWN0fQogICAqLwogIFNCSVhHbHlwaC5wcm90b3R5cGUuZ2V0SW1hZ2VGb3JTaXplID0gZnVuY3Rpb24gZ2V0SW1hZ2VGb3JTaXplKHNpemUpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZm9udC5zYml4LmltYWdlVGFibGVzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciB0YWJsZSA9IHRoaXMuX2ZvbnQuc2JpeC5pbWFnZVRhYmxlc1tpXTsKICAgICAgaWYgKHRhYmxlLnBwZW0gPj0gc2l6ZSkgewogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CgogICAgdmFyIG9mZnNldHMgPSB0YWJsZS5pbWFnZU9mZnNldHM7CiAgICB2YXIgc3RhcnQgPSBvZmZzZXRzW3RoaXMuaWRdOwogICAgdmFyIGVuZCA9IG9mZnNldHNbdGhpcy5pZCArIDFdOwoKICAgIGlmIChzdGFydCA9PT0gZW5kKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHRoaXMuX2ZvbnQuc3RyZWFtLnBvcyA9IHN0YXJ0OwogICAgcmV0dXJuIFNCSVhJbWFnZS5kZWNvZGUodGhpcy5fZm9udC5zdHJlYW0sIHsgYnVmbGVuOiBlbmQgLSBzdGFydCB9KTsKICB9OwoKICBTQklYR2x5cGgucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcihjdHgsIHNpemUpIHsKICAgIHZhciBpbWcgPSB0aGlzLmdldEltYWdlRm9yU2l6ZShzaXplKTsKICAgIGlmIChpbWcgIT0gbnVsbCkgewogICAgICB2YXIgc2NhbGUgPSBzaXplIC8gdGhpcy5fZm9udC51bml0c1BlckVtOwogICAgICBjdHguaW1hZ2UoaW1nLmRhdGEsIHsgaGVpZ2h0OiBzaXplLCB4OiBpbWcub3JpZ2luWCwgeTogKHRoaXMuYmJveC5taW5ZIC0gaW1nLm9yaWdpblkpICogc2NhbGUgfSk7CiAgICB9CgogICAgaWYgKHRoaXMuX2ZvbnQuc2JpeC5mbGFncy5yZW5kZXJPdXRsaW5lcykgewogICAgICBfVFRGR2x5cGgucHJvdG90eXBlLnJlbmRlci5jYWxsKHRoaXMsIGN0eCwgc2l6ZSk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIFNCSVhHbHlwaDsKfShUVEZHbHlwaCk7Cgp2YXIgQ09MUkxheWVyID0gZnVuY3Rpb24gQ09MUkxheWVyKGdseXBoLCBjb2xvcikgewogIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDT0xSTGF5ZXIpOwoKICB0aGlzLmdseXBoID0gZ2x5cGg7CiAgdGhpcy5jb2xvciA9IGNvbG9yOwp9OwoKLyoqCiAqIFJlcHJlc2VudHMgYSBjb2xvciAoZS5nLiBlbW9qaSkgZ2x5cGggaW4gTWljcm9zb2Z0J3MgQ09MUiBmb3JtYXQuCiAqIEVhY2ggZ2x5cGggaW4gdGhpcyBmb3JtYXQgY29udGFpbiBhIGxpc3Qgb2YgY29sb3JlZCBsYXllcnMsIGVhY2gKICogb2Ygd2hpY2ggIGlzIGFub3RoZXIgdmVjdG9yIGdseXBoLgogKi8KCgp2YXIgQ09MUkdseXBoID0gZnVuY3Rpb24gKF9HbHlwaCkgewogIF9pbmhlcml0cyhDT0xSR2x5cGgsIF9HbHlwaCk7CgogIGZ1bmN0aW9uIENPTFJHbHlwaCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDT0xSR2x5cGgpOwoKICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfR2x5cGguYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBDT0xSR2x5cGgucHJvdG90eXBlLl9nZXRCQm94ID0gZnVuY3Rpb24gX2dldEJCb3goKSB7CiAgICB2YXIgYmJveCA9IG5ldyBCQm94KCk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGF5ZXJzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBsYXllciA9IHRoaXMubGF5ZXJzW2ldOwogICAgICB2YXIgYiA9IGxheWVyLmdseXBoLmJib3g7CiAgICAgIGJib3guYWRkUG9pbnQoYi5taW5YLCBiLm1pblkpOwogICAgICBiYm94LmFkZFBvaW50KGIubWF4WCwgYi5tYXhZKTsKICAgIH0KCiAgICByZXR1cm4gYmJveDsKICB9OwoKICAvKioKICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIG9iamVjdHMgY29udGFpbmluZyB0aGUgZ2x5cGggYW5kIGNvbG9yIGZvcgogICAqIGVhY2ggbGF5ZXIgaW4gdGhlIGNvbXBvc2l0ZSBjb2xvciBnbHlwaC4KICAgKiBAdHlwZSB7b2JqZWN0W119CiAgICovCgoKICBDT0xSR2x5cGgucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcihjdHgsIHNpemUpIHsKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHRoaXMubGF5ZXJzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgdmFyIF9yZWY7CgogICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIF9yZWYyID0gX3JlZiwKICAgICAgICAgIGdseXBoID0gX3JlZjIuZ2x5cGgsCiAgICAgICAgICBjb2xvciA9IF9yZWYyLmNvbG9yOwoKICAgICAgY3R4LmZpbGxDb2xvcihbY29sb3IucmVkLCBjb2xvci5ncmVlbiwgY29sb3IuYmx1ZV0sIGNvbG9yLmFscGhhIC8gMjU1ICogMTAwKTsKICAgICAgZ2x5cGgucmVuZGVyKGN0eCwgc2l6ZSk7CiAgICB9CgogICAgcmV0dXJuOwogIH07CgogIF9jcmVhdGVDbGFzcyhDT0xSR2x5cGgsIFt7CiAgICBrZXk6ICdsYXllcnMnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHZhciBjcGFsID0gdGhpcy5fZm9udC5DUEFMOwogICAgICB2YXIgY29sciA9IHRoaXMuX2ZvbnQuQ09MUjsKICAgICAgdmFyIGxvdyA9IDA7CiAgICAgIHZhciBoaWdoID0gY29sci5iYXNlR2x5cGhSZWNvcmQubGVuZ3RoIC0gMTsKCiAgICAgIHdoaWxlIChsb3cgPD0gaGlnaCkgewogICAgICAgIHZhciBtaWQgPSBsb3cgKyBoaWdoID4+IDE7CiAgICAgICAgdmFyIHJlYyA9IGNvbHIuYmFzZUdseXBoUmVjb3JkW21pZF07CgogICAgICAgIGlmICh0aGlzLmlkIDwgcmVjLmdpZCkgewogICAgICAgICAgaGlnaCA9IG1pZCAtIDE7CiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlkID4gcmVjLmdpZCkgewogICAgICAgICAgbG93ID0gbWlkICsgMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIGJhc2VMYXllciA9IHJlYzsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gaWYgYmFzZSBnbHlwaCBub3QgZm91bmQgaW4gQ09MUiB0YWJsZSwKICAgICAgLy8gZGVmYXVsdCB0byBub3JtYWwgZ2x5cGggZnJvbSBnbHlmIG9yIENGRgogICAgICBpZiAoYmFzZUxheWVyID09IG51bGwpIHsKICAgICAgICB2YXIgZyA9IHRoaXMuX2ZvbnQuX2dldEJhc2VHbHlwaCh0aGlzLmlkKTsKICAgICAgICB2YXIgY29sb3IgPSB7CiAgICAgICAgICByZWQ6IDAsCiAgICAgICAgICBncmVlbjogMCwKICAgICAgICAgIGJsdWU6IDAsCiAgICAgICAgICBhbHBoYTogMjU1CiAgICAgICAgfTsKCiAgICAgICAgcmV0dXJuIFtuZXcgQ09MUkxheWVyKGcsIGNvbG9yKV07CiAgICAgIH0KCiAgICAgIC8vIG90aGVyd2lzZSwgcmV0dXJuIGFuIGFycmF5IG9mIGFsbCB0aGUgbGF5ZXJzCiAgICAgIHZhciBsYXllcnMgPSBbXTsKICAgICAgZm9yICh2YXIgaSA9IGJhc2VMYXllci5maXJzdExheWVySW5kZXg7IGkgPCBiYXNlTGF5ZXIuZmlyc3RMYXllckluZGV4ICsgYmFzZUxheWVyLm51bUxheWVyczsgaSsrKSB7CiAgICAgICAgdmFyIHJlYyA9IGNvbHIubGF5ZXJSZWNvcmRzW2ldOwogICAgICAgIHZhciBjb2xvciA9IGNwYWwuY29sb3JSZWNvcmRzW3JlYy5wYWxldHRlSW5kZXhdOwogICAgICAgIHZhciBnID0gdGhpcy5fZm9udC5fZ2V0QmFzZUdseXBoKHJlYy5naWQpOwogICAgICAgIGxheWVycy5wdXNoKG5ldyBDT0xSTGF5ZXIoZywgY29sb3IpKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGxheWVyczsKICAgIH0KICB9XSk7CgogIHJldHVybiBDT0xSR2x5cGg7Cn0oR2x5cGgpOwoKdmFyIFRVUExFU19TSEFSRV9QT0lOVF9OVU1CRVJTID0gMHg4MDAwOwp2YXIgVFVQTEVfQ09VTlRfTUFTSyA9IDB4MGZmZjsKdmFyIEVNQkVEREVEX1RVUExFX0NPT1JEID0gMHg4MDAwOwp2YXIgSU5URVJNRURJQVRFX1RVUExFID0gMHg0MDAwOwp2YXIgUFJJVkFURV9QT0lOVF9OVU1CRVJTID0gMHgyMDAwOwp2YXIgVFVQTEVfSU5ERVhfTUFTSyA9IDB4MGZmZjsKdmFyIFBPSU5UU19BUkVfV09SRFMgPSAweDgwOwp2YXIgUE9JTlRfUlVOX0NPVU5UX01BU0sgPSAweDdmOwp2YXIgREVMVEFTX0FSRV9aRVJPID0gMHg4MDsKdmFyIERFTFRBU19BUkVfV09SRFMgPSAweDQwOwp2YXIgREVMVEFfUlVOX0NPVU5UX01BU0sgPSAweDNmOwoKLyoqCiAqIFRoaXMgY2xhc3MgaXMgdHJhbnNmb3JtcyBUcnVlVHlwZSBnbHlwaHMgYWNjb3JkaW5nIHRvIHRoZSBkYXRhIGZyb20KICogdGhlIEFwcGxlIEFkdmFuY2VkIFR5cG9ncmFwaHkgdmFyaWF0aW9uIHRhYmxlcyAoZnZhciwgZ3ZhciwgYW5kIGF2YXIpLgogKiBUaGVzZSB0YWJsZXMgYWxsb3cgaW5maW5pdGUgYWRqdXN0bWVudHMgdG8gZ2x5cGggd2VpZ2h0LCB3aWR0aCwgc2xhbnQsCiAqIGFuZCBvcHRpY2FsIHNpemUgd2l0aG91dCB0aGUgZGVzaWduZXIgbmVlZGluZyB0byBzcGVjaWZ5IGV2ZXJ5IGV4YWN0IHN0eWxlLgogKgogKiBBcHBsZSdzIGRvY3VtZW50YXRpb24gZm9yIHRoZXNlIHRhYmxlcyBpcyBub3QgZ3JlYXQsIHNvIHRoYW5rcyB0byB0aGUKICogRnJlZXR5cGUgcHJvamVjdCBmb3IgZmlndXJpbmcgbXVjaCBvZiB0aGlzIG91dC4KICoKICogQHByaXZhdGUKICovCgp2YXIgR2x5cGhWYXJpYXRpb25Qcm9jZXNzb3IgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gR2x5cGhWYXJpYXRpb25Qcm9jZXNzb3IoZm9udCwgY29vcmRzKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgR2x5cGhWYXJpYXRpb25Qcm9jZXNzb3IpOwoKICAgIHRoaXMuZm9udCA9IGZvbnQ7CiAgICB0aGlzLm5vcm1hbGl6ZWRDb29yZHMgPSB0aGlzLm5vcm1hbGl6ZUNvb3Jkcyhjb29yZHMpOwogICAgdGhpcy5ibGVuZFZlY3RvcnMgPSBuZXcgX01hcCgpOwogIH0KCiAgR2x5cGhWYXJpYXRpb25Qcm9jZXNzb3IucHJvdG90eXBlLm5vcm1hbGl6ZUNvb3JkcyA9IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvb3Jkcyhjb29yZHMpIHsKICAgIC8vIHRoZSBkZWZhdWx0IG1hcHBpbmcgaXMgbGluZWFyIGFsb25nIGVhY2ggYXhpcywgaW4gdHdvIHNlZ21lbnRzOgogICAgLy8gZnJvbSB0aGUgbWluVmFsdWUgdG8gZGVmYXVsdFZhbHVlLCBhbmQgZnJvbSBkZWZhdWx0VmFsdWUgdG8gbWF4VmFsdWUuCiAgICB2YXIgbm9ybWFsaXplZCA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZvbnQuZnZhci5heGlzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBheGlzID0gdGhpcy5mb250LmZ2YXIuYXhpc1tpXTsKICAgICAgaWYgKGNvb3Jkc1tpXSA8IGF4aXMuZGVmYXVsdFZhbHVlKSB7CiAgICAgICAgbm9ybWFsaXplZC5wdXNoKChjb29yZHNbaV0gLSBheGlzLmRlZmF1bHRWYWx1ZSArIF9OdW1iZXIkRVBTSUxPTikgLyAoYXhpcy5kZWZhdWx0VmFsdWUgLSBheGlzLm1pblZhbHVlICsgX051bWJlciRFUFNJTE9OKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgbm9ybWFsaXplZC5wdXNoKChjb29yZHNbaV0gLSBheGlzLmRlZmF1bHRWYWx1ZSArIF9OdW1iZXIkRVBTSUxPTikgLyAoYXhpcy5tYXhWYWx1ZSAtIGF4aXMuZGVmYXVsdFZhbHVlICsgX051bWJlciRFUFNJTE9OKSk7CiAgICAgIH0KICAgIH0KCiAgICAvLyBpZiB0aGVyZSBpcyBhbiBhdmFyIHRhYmxlLCB0aGUgbm9ybWFsaXplZCB2YWx1ZSBpcyBjYWxjdWxhdGVkCiAgICAvLyBieSBpbnRlcnBvbGF0aW5nIGJldHdlZW4gdGhlIHR3byBuZWFyZXN0IG1hcHBlZCB2YWx1ZXMuCiAgICBpZiAodGhpcy5mb250LmF2YXIpIHsKICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmZvbnQuYXZhci5zZWdtZW50Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIHNlZ21lbnQgPSB0aGlzLmZvbnQuYXZhci5zZWdtZW50W2ldOwogICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VnbWVudC5jb3JyZXNwb25kZW5jZS5sZW5ndGg7IGorKykgewogICAgICAgICAgdmFyIHBhaXIgPSBzZWdtZW50LmNvcnJlc3BvbmRlbmNlW2pdOwogICAgICAgICAgaWYgKGogPj0gMSAmJiBub3JtYWxpemVkW2ldIDwgcGFpci5mcm9tQ29vcmQpIHsKICAgICAgICAgICAgdmFyIHByZXYgPSBzZWdtZW50LmNvcnJlc3BvbmRlbmNlW2ogLSAxXTsKICAgICAgICAgICAgbm9ybWFsaXplZFtpXSA9ICgobm9ybWFsaXplZFtpXSAtIHByZXYuZnJvbUNvb3JkKSAqIChwYWlyLnRvQ29vcmQgLSBwcmV2LnRvQ29vcmQpICsgX051bWJlciRFUFNJTE9OKSAvIChwYWlyLmZyb21Db29yZCAtIHByZXYuZnJvbUNvb3JkICsgX051bWJlciRFUFNJTE9OKSArIHByZXYudG9Db29yZDsKCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBub3JtYWxpemVkOwogIH07CgogIEdseXBoVmFyaWF0aW9uUHJvY2Vzc29yLnByb3RvdHlwZS50cmFuc2Zvcm1Qb2ludHMgPSBmdW5jdGlvbiB0cmFuc2Zvcm1Qb2ludHMoZ2lkLCBnbHlwaFBvaW50cykgewogICAgaWYgKCF0aGlzLmZvbnQuZnZhciB8fCAhdGhpcy5mb250Lmd2YXIpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBndmFyID0gdGhpcy5mb250Lmd2YXI7CgogICAgaWYgKGdpZCA+PSBndmFyLmdseXBoQ291bnQpIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBvZmZzZXQgPSBndmFyLm9mZnNldHNbZ2lkXTsKICAgIGlmIChvZmZzZXQgPT09IGd2YXIub2Zmc2V0c1tnaWQgKyAxXSkgewogICAgICByZXR1cm47CiAgICB9CgogICAgLy8gUmVhZCB0aGUgZ3ZhciBkYXRhIGZvciB0aGlzIGdseXBoCiAgICB2YXIgc3RyZWFtID0gdGhpcy5mb250LnN0cmVhbTsKCiAgICBzdHJlYW0ucG9zID0gb2Zmc2V0OwogICAgaWYgKHN0cmVhbS5wb3MgPj0gc3RyZWFtLmxlbmd0aCkgewogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHR1cGxlQ291bnQgPSBzdHJlYW0ucmVhZFVJbnQxNkJFKCk7CiAgICB2YXIgb2Zmc2V0VG9EYXRhID0gb2Zmc2V0ICsgc3RyZWFtLnJlYWRVSW50MTZCRSgpOwoKICAgIGlmICh0dXBsZUNvdW50ICYgVFVQTEVTX1NIQVJFX1BPSU5UX05VTUJFUlMpIHsKICAgICAgdmFyIGhlcmUgPSBzdHJlYW0ucG9zOwogICAgICBzdHJlYW0ucG9zID0gb2Zmc2V0VG9EYXRhOwogICAgICB2YXIgc2hhcmVkUG9pbnRzID0gdGhpcy5kZWNvZGVQb2ludHMoKTsKICAgICAgb2Zmc2V0VG9EYXRhID0gc3RyZWFtLnBvczsKICAgICAgc3RyZWFtLnBvcyA9IGhlcmU7CiAgICB9CgogICAgdmFyIG9yaWdQb2ludHMgPSBnbHlwaFBvaW50cy5tYXAoZnVuY3Rpb24gKHB0KSB7CiAgICAgIHJldHVybiBwdC5jb3B5KCk7CiAgICB9KTsKCiAgICB0dXBsZUNvdW50ICY9IFRVUExFX0NPVU5UX01BU0s7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR1cGxlQ291bnQ7IGkrKykgewogICAgICB2YXIgdHVwbGVEYXRhU2l6ZSA9IHN0cmVhbS5yZWFkVUludDE2QkUoKTsKICAgICAgdmFyIHR1cGxlSW5kZXggPSBzdHJlYW0ucmVhZFVJbnQxNkJFKCk7CgogICAgICBpZiAodHVwbGVJbmRleCAmIEVNQkVEREVEX1RVUExFX0NPT1JEKSB7CiAgICAgICAgdmFyIHR1cGxlQ29vcmRzID0gW107CiAgICAgICAgZm9yICh2YXIgYSA9IDA7IGEgPCBndmFyLmF4aXNDb3VudDsgYSsrKSB7CiAgICAgICAgICB0dXBsZUNvb3Jkcy5wdXNoKHN0cmVhbS5yZWFkSW50MTZCRSgpIC8gMTYzODQpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBpZiAoKHR1cGxlSW5kZXggJiBUVVBMRV9JTkRFWF9NQVNLKSA+PSBndmFyLmdsb2JhbENvb3JkQ291bnQpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBndmFyIHRhYmxlJyk7CiAgICAgICAgfQoKICAgICAgICB2YXIgdHVwbGVDb29yZHMgPSBndmFyLmdsb2JhbENvb3Jkc1t0dXBsZUluZGV4ICYgVFVQTEVfSU5ERVhfTUFTS107CiAgICAgIH0KCiAgICAgIGlmICh0dXBsZUluZGV4ICYgSU5URVJNRURJQVRFX1RVUExFKSB7CiAgICAgICAgdmFyIHN0YXJ0Q29vcmRzID0gW107CiAgICAgICAgZm9yICh2YXIgX2EgPSAwOyBfYSA8IGd2YXIuYXhpc0NvdW50OyBfYSsrKSB7CiAgICAgICAgICBzdGFydENvb3Jkcy5wdXNoKHN0cmVhbS5yZWFkSW50MTZCRSgpIC8gMTYzODQpOwogICAgICAgIH0KCiAgICAgICAgdmFyIGVuZENvb3JkcyA9IFtdOwogICAgICAgIGZvciAodmFyIF9hMiA9IDA7IF9hMiA8IGd2YXIuYXhpc0NvdW50OyBfYTIrKykgewogICAgICAgICAgZW5kQ29vcmRzLnB1c2goc3RyZWFtLnJlYWRJbnQxNkJFKCkgLyAxNjM4NCk7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBHZXQgdGhlIGZhY3RvciBhdCB3aGljaCB0byBhcHBseSB0aGlzIHR1cGxlCiAgICAgIHZhciBmYWN0b3IgPSB0aGlzLnR1cGxlRmFjdG9yKHR1cGxlSW5kZXgsIHR1cGxlQ29vcmRzLCBzdGFydENvb3JkcywgZW5kQ29vcmRzKTsKICAgICAgaWYgKGZhY3RvciA9PT0gMCkgewogICAgICAgIG9mZnNldFRvRGF0YSArPSB0dXBsZURhdGFTaXplOwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CgogICAgICB2YXIgaGVyZSA9IHN0cmVhbS5wb3M7CiAgICAgIHN0cmVhbS5wb3MgPSBvZmZzZXRUb0RhdGE7CgogICAgICBpZiAodHVwbGVJbmRleCAmIFBSSVZBVEVfUE9JTlRfTlVNQkVSUykgewogICAgICAgIHZhciBwb2ludHMgPSB0aGlzLmRlY29kZVBvaW50cygpOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBwb2ludHMgPSBzaGFyZWRQb2ludHM7CiAgICAgIH0KCiAgICAgIC8vIHBvaW50cy5sZW5ndGggPSAwIG1lYW5zIHRoZXJlIGFyZSBkZWx0YXMgZm9yIGFsbCBwb2ludHMKICAgICAgdmFyIG5Qb2ludHMgPSBwb2ludHMubGVuZ3RoID09PSAwID8gZ2x5cGhQb2ludHMubGVuZ3RoIDogcG9pbnRzLmxlbmd0aDsKICAgICAgdmFyIHhEZWx0YXMgPSB0aGlzLmRlY29kZURlbHRhcyhuUG9pbnRzKTsKICAgICAgdmFyIHlEZWx0YXMgPSB0aGlzLmRlY29kZURlbHRhcyhuUG9pbnRzKTsKCiAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgLy8gYWxsIHBvaW50cwogICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBnbHlwaFBvaW50cy5sZW5ndGg7IF9pKyspIHsKICAgICAgICAgIHZhciBwb2ludCA9IGdseXBoUG9pbnRzW19pXTsKICAgICAgICAgIHBvaW50LnggKz0gTWF0aC5yb3VuZCh4RGVsdGFzW19pXSAqIGZhY3Rvcik7CiAgICAgICAgICBwb2ludC55ICs9IE1hdGgucm91bmQoeURlbHRhc1tfaV0gKiBmYWN0b3IpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgb3V0UG9pbnRzID0gb3JpZ1BvaW50cy5tYXAoZnVuY3Rpb24gKHB0KSB7CiAgICAgICAgICByZXR1cm4gcHQuY29weSgpOwogICAgICAgIH0pOwogICAgICAgIHZhciBoYXNEZWx0YSA9IGdseXBoUG9pbnRzLm1hcChmdW5jdGlvbiAoKSB7CiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIGZvciAodmFyIF9pMiA9IDA7IF9pMiA8IHBvaW50cy5sZW5ndGg7IF9pMisrKSB7CiAgICAgICAgICB2YXIgaWR4ID0gcG9pbnRzW19pMl07CiAgICAgICAgICBpZiAoaWR4IDwgZ2x5cGhQb2ludHMubGVuZ3RoKSB7CiAgICAgICAgICAgIHZhciBfcG9pbnQgPSBvdXRQb2ludHNbaWR4XTsKICAgICAgICAgICAgaGFzRGVsdGFbaWR4XSA9IHRydWU7CgogICAgICAgICAgICBfcG9pbnQueCArPSBNYXRoLnJvdW5kKHhEZWx0YXNbX2kyXSAqIGZhY3Rvcik7CiAgICAgICAgICAgIF9wb2ludC55ICs9IE1hdGgucm91bmQoeURlbHRhc1tfaTJdICogZmFjdG9yKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRoaXMuaW50ZXJwb2xhdGVNaXNzaW5nRGVsdGFzKG91dFBvaW50cywgb3JpZ1BvaW50cywgaGFzRGVsdGEpOwoKICAgICAgICBmb3IgKHZhciBfaTMgPSAwOyBfaTMgPCBnbHlwaFBvaW50cy5sZW5ndGg7IF9pMysrKSB7CiAgICAgICAgICB2YXIgZGVsdGFYID0gb3V0UG9pbnRzW19pM10ueCAtIG9yaWdQb2ludHNbX2kzXS54OwogICAgICAgICAgdmFyIGRlbHRhWSA9IG91dFBvaW50c1tfaTNdLnkgLSBvcmlnUG9pbnRzW19pM10ueTsKCiAgICAgICAgICBnbHlwaFBvaW50c1tfaTNdLnggKz0gZGVsdGFYOwogICAgICAgICAgZ2x5cGhQb2ludHNbX2kzXS55ICs9IGRlbHRhWTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIG9mZnNldFRvRGF0YSArPSB0dXBsZURhdGFTaXplOwogICAgICBzdHJlYW0ucG9zID0gaGVyZTsKICAgIH0KICB9OwoKICBHbHlwaFZhcmlhdGlvblByb2Nlc3Nvci5wcm90b3R5cGUuZGVjb2RlUG9pbnRzID0gZnVuY3Rpb24gZGVjb2RlUG9pbnRzKCkgewogICAgdmFyIHN0cmVhbSA9IHRoaXMuZm9udC5zdHJlYW07CiAgICB2YXIgY291bnQgPSBzdHJlYW0ucmVhZFVJbnQ4KCk7CgogICAgaWYgKGNvdW50ICYgUE9JTlRTX0FSRV9XT1JEUykgewogICAgICBjb3VudCA9IChjb3VudCAmIFBPSU5UX1JVTl9DT1VOVF9NQVNLKSA8PCA4IHwgc3RyZWFtLnJlYWRVSW50OCgpOwogICAgfQoKICAgIHZhciBwb2ludHMgPSBuZXcgVWludDE2QXJyYXkoY291bnQpOwogICAgdmFyIGkgPSAwOwogICAgdmFyIHBvaW50ID0gMDsKICAgIHdoaWxlIChpIDwgY291bnQpIHsKICAgICAgdmFyIHJ1biA9IHN0cmVhbS5yZWFkVUludDgoKTsKICAgICAgdmFyIHJ1bkNvdW50ID0gKHJ1biAmIFBPSU5UX1JVTl9DT1VOVF9NQVNLKSArIDE7CiAgICAgIHZhciBmbiA9IHJ1biAmIFBPSU5UU19BUkVfV09SRFMgPyBzdHJlYW0ucmVhZFVJbnQxNiA6IHN0cmVhbS5yZWFkVUludDg7CgogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJ1bkNvdW50ICYmIGkgPCBjb3VudDsgaisrKSB7CiAgICAgICAgcG9pbnQgKz0gZm4uY2FsbChzdHJlYW0pOwogICAgICAgIHBvaW50c1tpKytdID0gcG9pbnQ7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcG9pbnRzOwogIH07CgogIEdseXBoVmFyaWF0aW9uUHJvY2Vzc29yLnByb3RvdHlwZS5kZWNvZGVEZWx0YXMgPSBmdW5jdGlvbiBkZWNvZGVEZWx0YXMoY291bnQpIHsKICAgIHZhciBzdHJlYW0gPSB0aGlzLmZvbnQuc3RyZWFtOwogICAgdmFyIGkgPSAwOwogICAgdmFyIGRlbHRhcyA9IG5ldyBJbnQxNkFycmF5KGNvdW50KTsKCiAgICB3aGlsZSAoaSA8IGNvdW50KSB7CiAgICAgIHZhciBydW4gPSBzdHJlYW0ucmVhZFVJbnQ4KCk7CiAgICAgIHZhciBydW5Db3VudCA9IChydW4gJiBERUxUQV9SVU5fQ09VTlRfTUFTSykgKyAxOwoKICAgICAgaWYgKHJ1biAmIERFTFRBU19BUkVfWkVSTykgewogICAgICAgIGkgKz0gcnVuQ291bnQ7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGZuID0gcnVuICYgREVMVEFTX0FSRV9XT1JEUyA/IHN0cmVhbS5yZWFkSW50MTZCRSA6IHN0cmVhbS5yZWFkSW50ODsKICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJ1bkNvdW50ICYmIGkgPCBjb3VudDsgaisrKSB7CiAgICAgICAgICBkZWx0YXNbaSsrXSA9IGZuLmNhbGwoc3RyZWFtKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZGVsdGFzOwogIH07CgogIEdseXBoVmFyaWF0aW9uUHJvY2Vzc29yLnByb3RvdHlwZS50dXBsZUZhY3RvciA9IGZ1bmN0aW9uIHR1cGxlRmFjdG9yKHR1cGxlSW5kZXgsIHR1cGxlQ29vcmRzLCBzdGFydENvb3JkcywgZW5kQ29vcmRzKSB7CiAgICB2YXIgbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplZENvb3JkczsKICAgIHZhciBndmFyID0gdGhpcy5mb250Lmd2YXI7CgogICAgdmFyIGZhY3RvciA9IDE7CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBndmFyLmF4aXNDb3VudDsgaSsrKSB7CiAgICAgIGlmICh0dXBsZUNvb3Jkc1tpXSA9PT0gMCkgewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CgogICAgICBpZiAobm9ybWFsaXplZFtpXSA9PT0gMCkgewogICAgICAgIHJldHVybiAwOwogICAgICB9CgogICAgICBpZiAoKHR1cGxlSW5kZXggJiBJTlRFUk1FRElBVEVfVFVQTEUpID09PSAwKSB7CiAgICAgICAgaWYgKG5vcm1hbGl6ZWRbaV0gPCBNYXRoLm1pbigwLCB0dXBsZUNvb3Jkc1tpXSkgfHwgbm9ybWFsaXplZFtpXSA+IE1hdGgubWF4KDAsIHR1cGxlQ29vcmRzW2ldKSkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICBmYWN0b3IgPSAoZmFjdG9yICogbm9ybWFsaXplZFtpXSArIF9OdW1iZXIkRVBTSUxPTikgLyAodHVwbGVDb29yZHNbaV0gKyBfTnVtYmVyJEVQU0lMT04pOwogICAgICB9IGVsc2UgewogICAgICAgIGlmIChub3JtYWxpemVkW2ldIDwgc3RhcnRDb29yZHNbaV0gfHwgbm9ybWFsaXplZFtpXSA+IGVuZENvb3Jkc1tpXSkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfSBlbHNlIGlmIChub3JtYWxpemVkW2ldIDwgdHVwbGVDb29yZHNbaV0pIHsKICAgICAgICAgIGZhY3RvciA9IGZhY3RvciAqIChub3JtYWxpemVkW2ldIC0gc3RhcnRDb29yZHNbaV0gKyBfTnVtYmVyJEVQU0lMT04pIC8gKHR1cGxlQ29vcmRzW2ldIC0gc3RhcnRDb29yZHNbaV0gKyBfTnVtYmVyJEVQU0lMT04pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBmYWN0b3IgPSBmYWN0b3IgKiAoZW5kQ29vcmRzW2ldIC0gbm9ybWFsaXplZFtpXSArIF9OdW1iZXIkRVBTSUxPTikgLyAoZW5kQ29vcmRzW2ldIC0gdHVwbGVDb29yZHNbaV0gKyBfTnVtYmVyJEVQU0lMT04pOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIHJldHVybiBmYWN0b3I7CiAgfTsKCiAgLy8gSW50ZXJwb2xhdGVzIHBvaW50cyB3aXRob3V0IGRlbHRhIHZhbHVlcy4KICAvLyBOZWVkZWQgZm9yIHRoZSDDmCBhbmQgUSBnbHlwaHMgaW4gU2tpYS4KICAvLyBBbGdvcml0aG0gZnJvbSBGcmVldHlwZS4KCgogIEdseXBoVmFyaWF0aW9uUHJvY2Vzc29yLnByb3RvdHlwZS5pbnRlcnBvbGF0ZU1pc3NpbmdEZWx0YXMgPSBmdW5jdGlvbiBpbnRlcnBvbGF0ZU1pc3NpbmdEZWx0YXMocG9pbnRzLCBpblBvaW50cywgaGFzRGVsdGEpIHsKICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAwKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgcG9pbnQgPSAwOwogICAgd2hpbGUgKHBvaW50IDwgcG9pbnRzLmxlbmd0aCkgewogICAgICB2YXIgZmlyc3RQb2ludCA9IHBvaW50OwoKICAgICAgLy8gZmluZCB0aGUgZW5kIHBvaW50IG9mIHRoZSBjb250b3VyCiAgICAgIHZhciBlbmRQb2ludCA9IHBvaW50OwogICAgICB2YXIgcHQgPSBwb2ludHNbZW5kUG9pbnRdOwogICAgICB3aGlsZSAoIXB0LmVuZENvbnRvdXIpIHsKICAgICAgICBwdCA9IHBvaW50c1srK2VuZFBvaW50XTsKICAgICAgfQoKICAgICAgLy8gZmluZCB0aGUgZmlyc3QgcG9pbnQgdGhhdCBoYXMgYSBkZWx0YQogICAgICB3aGlsZSAocG9pbnQgPD0gZW5kUG9pbnQgJiYgIWhhc0RlbHRhW3BvaW50XSkgewogICAgICAgIHBvaW50Kys7CiAgICAgIH0KCiAgICAgIGlmIChwb2ludCA+IGVuZFBvaW50KSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICAgIHZhciBmaXJzdERlbHRhID0gcG9pbnQ7CiAgICAgIHZhciBjdXJEZWx0YSA9IHBvaW50OwogICAgICBwb2ludCsrOwoKICAgICAgd2hpbGUgKHBvaW50IDw9IGVuZFBvaW50KSB7CiAgICAgICAgLy8gZmluZCB0aGUgbmV4dCBwb2ludCB3aXRoIGEgZGVsdGEsIGFuZCBpbnRlcnBvbGF0ZSBpbnRlcm1lZGlhdGUgcG9pbnRzCiAgICAgICAgaWYgKGhhc0RlbHRhW3BvaW50XSkgewogICAgICAgICAgdGhpcy5kZWx0YUludGVycG9sYXRlKGN1ckRlbHRhICsgMSwgcG9pbnQgLSAxLCBjdXJEZWx0YSwgcG9pbnQsIGluUG9pbnRzLCBwb2ludHMpOwogICAgICAgICAgY3VyRGVsdGEgPSBwb2ludDsKICAgICAgICB9CgogICAgICAgIHBvaW50Kys7CiAgICAgIH0KCiAgICAgIC8vIHNoaWZ0IGNvbnRvdXIgaWYgd2Ugb25seSBoYXZlIGEgc2luZ2xlIGRlbHRhCiAgICAgIGlmIChjdXJEZWx0YSA9PT0gZmlyc3REZWx0YSkgewogICAgICAgIHRoaXMuZGVsdGFTaGlmdChmaXJzdFBvaW50LCBlbmRQb2ludCwgY3VyRGVsdGEsIGluUG9pbnRzLCBwb2ludHMpOwogICAgICB9IGVsc2UgewogICAgICAgIC8vIG90aGVyd2lzZSwgaGFuZGxlIHRoZSByZW1haW5pbmcgcG9pbnRzIGF0IHRoZSBlbmQgYW5kIGJlZ2lubmluZyBvZiB0aGUgY29udG91cgogICAgICAgIHRoaXMuZGVsdGFJbnRlcnBvbGF0ZShjdXJEZWx0YSArIDEsIGVuZFBvaW50LCBjdXJEZWx0YSwgZmlyc3REZWx0YSwgaW5Qb2ludHMsIHBvaW50cyk7CgogICAgICAgIGlmIChmaXJzdERlbHRhID4gMCkgewogICAgICAgICAgdGhpcy5kZWx0YUludGVycG9sYXRlKGZpcnN0UG9pbnQsIGZpcnN0RGVsdGEgLSAxLCBjdXJEZWx0YSwgZmlyc3REZWx0YSwgaW5Qb2ludHMsIHBvaW50cyk7CiAgICAgICAgfQogICAgICB9CgogICAgICBwb2ludCA9IGVuZFBvaW50ICsgMTsKICAgIH0KICB9OwoKICBHbHlwaFZhcmlhdGlvblByb2Nlc3Nvci5wcm90b3R5cGUuZGVsdGFJbnRlcnBvbGF0ZSA9IGZ1bmN0aW9uIGRlbHRhSW50ZXJwb2xhdGUocDEsIHAyLCByZWYxLCByZWYyLCBpblBvaW50cywgb3V0UG9pbnRzKSB7CiAgICBpZiAocDEgPiBwMikgewogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIGl0ZXJhYmxlID0gWyd4JywgJ3knXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmFibGUubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGsgPSBpdGVyYWJsZVtpXTsKICAgICAgaWYgKGluUG9pbnRzW3JlZjFdW2tdID4gaW5Qb2ludHNbcmVmMl1ba10pIHsKICAgICAgICB2YXIgcCA9IHJlZjE7CiAgICAgICAgcmVmMSA9IHJlZjI7CiAgICAgICAgcmVmMiA9IHA7CiAgICAgIH0KCiAgICAgIHZhciBpbjEgPSBpblBvaW50c1tyZWYxXVtrXTsKICAgICAgdmFyIGluMiA9IGluUG9pbnRzW3JlZjJdW2tdOwogICAgICB2YXIgb3V0MSA9IG91dFBvaW50c1tyZWYxXVtrXTsKICAgICAgdmFyIG91dDIgPSBvdXRQb2ludHNbcmVmMl1ba107CgogICAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIHBvaW50cyBoYXZlIHRoZSBzYW1lIGNvb3JkaW5hdGUgYnV0IGRpZmZlcmVudAogICAgICAvLyBkZWx0YSwgaW5mZXJyZWQgZGVsdGEgaXMgemVyby4gIE90aGVyd2lzZSBpbnRlcnBvbGF0ZS4KICAgICAgaWYgKGluMSAhPT0gaW4yIHx8IG91dDEgPT09IG91dDIpIHsKICAgICAgICB2YXIgc2NhbGUgPSBpbjEgPT09IGluMiA/IDAgOiAob3V0MiAtIG91dDEpIC8gKGluMiAtIGluMSk7CgogICAgICAgIGZvciAodmFyIF9wID0gcDE7IF9wIDw9IHAyOyBfcCsrKSB7CiAgICAgICAgICB2YXIgb3V0ID0gaW5Qb2ludHNbX3BdW2tdOwoKICAgICAgICAgIGlmIChvdXQgPD0gaW4xKSB7CiAgICAgICAgICAgIG91dCArPSBvdXQxIC0gaW4xOwogICAgICAgICAgfSBlbHNlIGlmIChvdXQgPj0gaW4yKSB7CiAgICAgICAgICAgIG91dCArPSBvdXQyIC0gaW4yOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgb3V0ID0gb3V0MSArIChvdXQgLSBpbjEpICogc2NhbGU7CiAgICAgICAgICB9CgogICAgICAgICAgb3V0UG9pbnRzW19wXVtrXSA9IG91dDsKICAgICAgICB9CiAgICAgIH0KICAgIH0KICB9OwoKICBHbHlwaFZhcmlhdGlvblByb2Nlc3Nvci5wcm90b3R5cGUuZGVsdGFTaGlmdCA9IGZ1bmN0aW9uIGRlbHRhU2hpZnQocDEsIHAyLCByZWYsIGluUG9pbnRzLCBvdXRQb2ludHMpIHsKICAgIHZhciBkZWx0YVggPSBvdXRQb2ludHNbcmVmXS54IC0gaW5Qb2ludHNbcmVmXS54OwogICAgdmFyIGRlbHRhWSA9IG91dFBvaW50c1tyZWZdLnkgLSBpblBvaW50c1tyZWZdLnk7CgogICAgaWYgKGRlbHRhWCA9PT0gMCAmJiBkZWx0YVkgPT09IDApIHsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGZvciAodmFyIHAgPSBwMTsgcCA8PSBwMjsgcCsrKSB7CiAgICAgIGlmIChwICE9PSByZWYpIHsKICAgICAgICBvdXRQb2ludHNbcF0ueCArPSBkZWx0YVg7CiAgICAgICAgb3V0UG9pbnRzW3BdLnkgKz0gZGVsdGFZOwogICAgICB9CiAgICB9CiAgfTsKCiAgR2x5cGhWYXJpYXRpb25Qcm9jZXNzb3IucHJvdG90eXBlLmdldEFkdmFuY2VBZGp1c3RtZW50ID0gZnVuY3Rpb24gZ2V0QWR2YW5jZUFkanVzdG1lbnQoZ2lkLCB0YWJsZSkgewogICAgdmFyIG91dGVySW5kZXggPSB2b2lkIDAsCiAgICAgICAgaW5uZXJJbmRleCA9IHZvaWQgMDsKCiAgICBpZiAodGFibGUuYWR2YW5jZVdpZHRoTWFwcGluZykgewogICAgICB2YXIgaWR4ID0gZ2lkOwogICAgICBpZiAoaWR4ID49IHRhYmxlLmFkdmFuY2VXaWR0aE1hcHBpbmcubWFwQ291bnQpIHsKICAgICAgICBpZHggPSB0YWJsZS5hZHZhbmNlV2lkdGhNYXBwaW5nLm1hcENvdW50IC0gMTsKICAgICAgfQoKICAgICAgdmFyIGVudHJ5Rm9ybWF0ID0gdGFibGUuYWR2YW5jZVdpZHRoTWFwcGluZy5lbnRyeUZvcm1hdDsKICAgICAgdmFyIF90YWJsZSRhZHZhbmNlV2lkdGhNYSA9IHRhYmxlLmFkdmFuY2VXaWR0aE1hcHBpbmcubWFwRGF0YVtpZHhdOwogICAgICBvdXRlckluZGV4ID0gX3RhYmxlJGFkdmFuY2VXaWR0aE1hLm91dGVySW5kZXg7CiAgICAgIGlubmVySW5kZXggPSBfdGFibGUkYWR2YW5jZVdpZHRoTWEuaW5uZXJJbmRleDsKICAgIH0gZWxzZSB7CiAgICAgIG91dGVySW5kZXggPSAwOwogICAgICBpbm5lckluZGV4ID0gZ2lkOwogICAgfQoKICAgIHJldHVybiB0aGlzLmdldERlbHRhKHRhYmxlLml0ZW1WYXJpYXRpb25TdG9yZSwgb3V0ZXJJbmRleCwgaW5uZXJJbmRleCk7CiAgfTsKCiAgLy8gU2VlIHBzZXVkbyBjb2RlIGZyb20gYEZvbnQgVmFyaWF0aW9ucyBPdmVydmlldycKICAvLyBpbiB0aGUgT3BlblR5cGUgc3BlY2lmaWNhdGlvbi4KCgogIEdseXBoVmFyaWF0aW9uUHJvY2Vzc29yLnByb3RvdHlwZS5nZXREZWx0YSA9IGZ1bmN0aW9uIGdldERlbHRhKGl0ZW1TdG9yZSwgb3V0ZXJJbmRleCwgaW5uZXJJbmRleCkgewogICAgaWYgKG91dGVySW5kZXggPj0gaXRlbVN0b3JlLml0ZW1WYXJpYXRpb25EYXRhLmxlbmd0aCkgewogICAgICByZXR1cm4gMDsKICAgIH0KCiAgICB2YXIgdmFyRGF0YSA9IGl0ZW1TdG9yZS5pdGVtVmFyaWF0aW9uRGF0YVtvdXRlckluZGV4XTsKICAgIGlmIChpbm5lckluZGV4ID49IHZhckRhdGEuZGVsdGFTZXRzLmxlbmd0aCkgewogICAgICByZXR1cm4gMDsKICAgIH0KCiAgICB2YXIgZGVsdGFTZXQgPSB2YXJEYXRhLmRlbHRhU2V0c1tpbm5lckluZGV4XTsKICAgIHZhciBibGVuZFZlY3RvciA9IHRoaXMuZ2V0QmxlbmRWZWN0b3IoaXRlbVN0b3JlLCBvdXRlckluZGV4KTsKICAgIHZhciBuZXRBZGp1c3RtZW50ID0gMDsKCiAgICBmb3IgKHZhciBtYXN0ZXIgPSAwOyBtYXN0ZXIgPCB2YXJEYXRhLnJlZ2lvbkluZGV4Q291bnQ7IG1hc3RlcisrKSB7CiAgICAgIG5ldEFkanVzdG1lbnQgKz0gZGVsdGFTZXQuZGVsdGFzW21hc3Rlcl0gKiBibGVuZFZlY3RvclttYXN0ZXJdOwogICAgfQoKICAgIHJldHVybiBuZXRBZGp1c3RtZW50OwogIH07CgogIEdseXBoVmFyaWF0aW9uUHJvY2Vzc29yLnByb3RvdHlwZS5nZXRCbGVuZFZlY3RvciA9IGZ1bmN0aW9uIGdldEJsZW5kVmVjdG9yKGl0ZW1TdG9yZSwgb3V0ZXJJbmRleCkgewogICAgdmFyIHZhckRhdGEgPSBpdGVtU3RvcmUuaXRlbVZhcmlhdGlvbkRhdGFbb3V0ZXJJbmRleF07CiAgICBpZiAodGhpcy5ibGVuZFZlY3RvcnMuaGFzKHZhckRhdGEpKSB7CiAgICAgIHJldHVybiB0aGlzLmJsZW5kVmVjdG9ycy5nZXQodmFyRGF0YSk7CiAgICB9CgogICAgdmFyIG5vcm1hbGl6ZWRDb29yZHMgPSB0aGlzLm5vcm1hbGl6ZWRDb29yZHM7CiAgICB2YXIgYmxlbmRWZWN0b3IgPSBbXTsKCiAgICAvLyBvdXRlciBsb29wIHN0ZXBzIHRocm91Z2ggbWFzdGVyIGRlc2lnbnMgdG8gYmUgYmxlbmRlZAogICAgZm9yICh2YXIgbWFzdGVyID0gMDsgbWFzdGVyIDwgdmFyRGF0YS5yZWdpb25JbmRleENvdW50OyBtYXN0ZXIrKykgewogICAgICB2YXIgc2NhbGFyID0gMTsKICAgICAgdmFyIHJlZ2lvbkluZGV4ID0gdmFyRGF0YS5yZWdpb25JbmRleGVzW21hc3Rlcl07CiAgICAgIHZhciBheGVzID0gaXRlbVN0b3JlLnZhcmlhdGlvblJlZ2lvbkxpc3QudmFyaWF0aW9uUmVnaW9uc1tyZWdpb25JbmRleF07CgogICAgICAvLyBpbm5lciBsb29wIHN0ZXBzIHRocm91Z2ggYXhlcyBpbiB0aGlzIHJlZ2lvbgogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGF4ZXMubGVuZ3RoOyBqKyspIHsKICAgICAgICB2YXIgYXhpcyA9IGF4ZXNbal07CiAgICAgICAgdmFyIGF4aXNTY2FsYXIgPSB2b2lkIDA7CgogICAgICAgIC8vIGNvbXB1dGUgdGhlIHNjYWxhciBjb250cmlidXRpb24gb2YgdGhpcyBheGlzCiAgICAgICAgLy8gaWdub3JlIGludmFsaWQgcmFuZ2VzCiAgICAgICAgaWYgKGF4aXMuc3RhcnRDb29yZCA+IGF4aXMucGVha0Nvb3JkIHx8IGF4aXMucGVha0Nvb3JkID4gYXhpcy5lbmRDb29yZCkgewogICAgICAgICAgYXhpc1NjYWxhciA9IDE7CiAgICAgICAgfSBlbHNlIGlmIChheGlzLnN0YXJ0Q29vcmQgPCAwICYmIGF4aXMuZW5kQ29vcmQgPiAwICYmIGF4aXMucGVha0Nvb3JkICE9PSAwKSB7CiAgICAgICAgICBheGlzU2NhbGFyID0gMTsKCiAgICAgICAgICAvLyBwZWFrIG9mIDAgbWVhbnMgaWdub3JlIHRoaXMgYXhpcwogICAgICAgIH0gZWxzZSBpZiAoYXhpcy5wZWFrQ29vcmQgPT09IDApIHsKICAgICAgICAgIGF4aXNTY2FsYXIgPSAxOwoKICAgICAgICAgIC8vIGlnbm9yZSB0aGlzIHJlZ2lvbiBpZiBjb29yZHMgYXJlIG91dCBvZiByYW5nZQogICAgICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZENvb3Jkc1tqXSA8IGF4aXMuc3RhcnRDb29yZCB8fCBub3JtYWxpemVkQ29vcmRzW2pdID4gYXhpcy5lbmRDb29yZCkgewogICAgICAgICAgYXhpc1NjYWxhciA9IDA7CgogICAgICAgICAgLy8gY2FsY3VsYXRlIGEgcHJvcG9ydGlvbmFsIGZhY3RvcgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBpZiAobm9ybWFsaXplZENvb3Jkc1tqXSA9PT0gYXhpcy5wZWFrQ29vcmQpIHsKICAgICAgICAgICAgYXhpc1NjYWxhciA9IDE7CiAgICAgICAgICB9IGVsc2UgaWYgKG5vcm1hbGl6ZWRDb29yZHNbal0gPCBheGlzLnBlYWtDb29yZCkgewogICAgICAgICAgICBheGlzU2NhbGFyID0gKG5vcm1hbGl6ZWRDb29yZHNbal0gLSBheGlzLnN0YXJ0Q29vcmQgKyBfTnVtYmVyJEVQU0lMT04pIC8gKGF4aXMucGVha0Nvb3JkIC0gYXhpcy5zdGFydENvb3JkICsgX051bWJlciRFUFNJTE9OKTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGF4aXNTY2FsYXIgPSAoYXhpcy5lbmRDb29yZCAtIG5vcm1hbGl6ZWRDb29yZHNbal0gKyBfTnVtYmVyJEVQU0lMT04pIC8gKGF4aXMuZW5kQ29vcmQgLSBheGlzLnBlYWtDb29yZCArIF9OdW1iZXIkRVBTSUxPTik7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyB0YWtlIHByb2R1Y3Qgb2YgYWxsIHRoZSBheGlzIHNjYWxhcnMKICAgICAgICBzY2FsYXIgKj0gYXhpc1NjYWxhcjsKICAgICAgfQoKICAgICAgYmxlbmRWZWN0b3JbbWFzdGVyXSA9IHNjYWxhcjsKICAgIH0KCiAgICB0aGlzLmJsZW5kVmVjdG9ycy5zZXQodmFyRGF0YSwgYmxlbmRWZWN0b3IpOwogICAgcmV0dXJuIGJsZW5kVmVjdG9yOwogIH07CgogIHJldHVybiBHbHlwaFZhcmlhdGlvblByb2Nlc3NvcjsKfSgpOwoKdmFyIFN1YnNldCA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBTdWJzZXQoZm9udCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN1YnNldCk7CgogICAgdGhpcy5mb250ID0gZm9udDsKICAgIHRoaXMuZ2x5cGhzID0gW107CiAgICB0aGlzLm1hcHBpbmcgPSB7fTsKCiAgICAvLyBhbHdheXMgaW5jbHVkZSB0aGUgbWlzc2luZyBnbHlwaAogICAgdGhpcy5pbmNsdWRlR2x5cGgoMCk7CiAgfQoKICBTdWJzZXQucHJvdG90eXBlLmluY2x1ZGVHbHlwaCA9IGZ1bmN0aW9uIGluY2x1ZGVHbHlwaChnbHlwaCkgewogICAgaWYgKCh0eXBlb2YgZ2x5cGggPT09ICd1bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKGdseXBoKSkgPT09ICdvYmplY3QnKSB7CiAgICAgIGdseXBoID0gZ2x5cGguaWQ7CiAgICB9CgogICAgaWYgKHRoaXMubWFwcGluZ1tnbHlwaF0gPT0gbnVsbCkgewogICAgICB0aGlzLmdseXBocy5wdXNoKGdseXBoKTsKICAgICAgdGhpcy5tYXBwaW5nW2dseXBoXSA9IHRoaXMuZ2x5cGhzLmxlbmd0aCAtIDE7CiAgICB9CgogICAgcmV0dXJuIHRoaXMubWFwcGluZ1tnbHlwaF07CiAgfTsKCiAgU3Vic2V0LnByb3RvdHlwZS5lbmNvZGVTdHJlYW0gPSBmdW5jdGlvbiBlbmNvZGVTdHJlYW0oKSB7CiAgICB2YXIgX3RoaXMgPSB0aGlzOwoKICAgIHZhciBzID0gbmV3IHIuRW5jb2RlU3RyZWFtKCk7CgogICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7CiAgICAgIF90aGlzLmVuY29kZShzKTsKICAgICAgcmV0dXJuIHMuZW5kKCk7CiAgICB9KTsKCiAgICByZXR1cm4gczsKICB9OwoKICByZXR1cm4gU3Vic2V0Owp9KCk7CgovLyBGbGFncyBmb3Igc2ltcGxlIGdseXBocwp2YXIgT05fQ1VSVkUkMSA9IDEgPDwgMDsKdmFyIFhfU0hPUlRfVkVDVE9SJDEgPSAxIDw8IDE7CnZhciBZX1NIT1JUX1ZFQ1RPUiQxID0gMSA8PCAyOwp2YXIgUkVQRUFUJDEgPSAxIDw8IDM7CnZhciBTQU1FX1gkMSA9IDEgPDwgNDsKdmFyIFNBTUVfWSQxID0gMSA8PCA1OwoKdmFyIFBvaW50JDEgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gUG9pbnQoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUG9pbnQpOwogIH0KCiAgUG9pbnQuc2l6ZSA9IGZ1bmN0aW9uIHNpemUodmFsKSB7CiAgICByZXR1cm4gdmFsID49IDAgJiYgdmFsIDw9IDI1NSA/IDEgOiAyOwogIH07CgogIFBvaW50LmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0sIHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSAyNTUpIHsKICAgICAgc3RyZWFtLndyaXRlVUludDgodmFsdWUpOwogICAgfSBlbHNlIHsKICAgICAgc3RyZWFtLndyaXRlSW50MTZCRSh2YWx1ZSk7CiAgICB9CiAgfTsKCiAgcmV0dXJuIFBvaW50Owp9KCk7Cgp2YXIgR2x5ZiA9IG5ldyByLlN0cnVjdCh7CiAgbnVtYmVyT2ZDb250b3Vyczogci5pbnQxNiwgLy8gaWYgbmVnYXRpdmUsIHRoaXMgaXMgYSBjb21wb3NpdGUgZ2x5cGgKICB4TWluOiByLmludDE2LAogIHlNaW46IHIuaW50MTYsCiAgeE1heDogci5pbnQxNiwKICB5TWF4OiByLmludDE2LAogIGVuZFB0c09mQ29udG91cnM6IG5ldyByLkFycmF5KHIudWludDE2LCAnbnVtYmVyT2ZDb250b3VycycpLAogIGluc3RydWN0aW9uczogbmV3IHIuQXJyYXkoci51aW50OCwgci51aW50MTYpLAogIGZsYWdzOiBuZXcgci5BcnJheShyLnVpbnQ4LCAwKSwKICB4UG9pbnRzOiBuZXcgci5BcnJheShQb2ludCQxLCAwKSwKICB5UG9pbnRzOiBuZXcgci5BcnJheShQb2ludCQxLCAwKQp9KTsKCi8qKgogKiBFbmNvZGVzIFRydWVUeXBlIGdseXBoIG91dGxpbmVzCiAqLwoKdmFyIFRURkdseXBoRW5jb2RlciA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBUVEZHbHlwaEVuY29kZXIoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVFRGR2x5cGhFbmNvZGVyKTsKICB9CgogIFRURkdseXBoRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlU2ltcGxlID0gZnVuY3Rpb24gZW5jb2RlU2ltcGxlKHBhdGgpIHsKICAgIHZhciBpbnN0cnVjdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IFtdOwoKICAgIHZhciBlbmRQdHNPZkNvbnRvdXJzID0gW107CiAgICB2YXIgeFBvaW50cyA9IFtdOwogICAgdmFyIHlQb2ludHMgPSBbXTsKICAgIHZhciBmbGFncyA9IFtdOwogICAgdmFyIHNhbWUgPSAwOwogICAgdmFyIGxhc3RYID0gMCwKICAgICAgICBsYXN0WSA9IDAsCiAgICAgICAgbGFzdEZsYWcgPSAwOwogICAgdmFyIHBvaW50Q291bnQgPSAwOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aC5jb21tYW5kcy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgYyA9IHBhdGguY29tbWFuZHNbaV07CgogICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGMuYXJncy5sZW5ndGg7IGogKz0gMikgewogICAgICAgIHZhciB4ID0gYy5hcmdzW2pdOwogICAgICAgIHZhciB5ID0gYy5hcmdzW2ogKyAxXTsKICAgICAgICB2YXIgZmxhZyA9IDA7CgogICAgICAgIC8vIElmIHRoZSBlbmRpbmcgcG9pbnQgb2YgYSBxdWFkcmF0aWMgY3VydmUgaXMgdGhlIG1pZHBvaW50CiAgICAgICAgLy8gYmV0d2VlbiB0aGUgY29udHJvbCBwb2ludCBhbmQgdGhlIGNvbnRyb2wgcG9pbnQgb2YgdGhlIG5leHQKICAgICAgICAvLyBxdWFkcmF0aWMgY3VydmUsIHdlIGNhbiBvbWl0IHRoZSBlbmRpbmcgcG9pbnQuCiAgICAgICAgaWYgKGMuY29tbWFuZCA9PT0gJ3F1YWRyYXRpY0N1cnZlVG8nICYmIGogPT09IDIpIHsKICAgICAgICAgIHZhciBuZXh0ID0gcGF0aC5jb21tYW5kc1tpICsgMV07CiAgICAgICAgICBpZiAobmV4dCAmJiBuZXh0LmNvbW1hbmQgPT09ICdxdWFkcmF0aWNDdXJ2ZVRvJykgewogICAgICAgICAgICB2YXIgbWlkWCA9IChsYXN0WCArIG5leHQuYXJnc1swXSkgLyAyOwogICAgICAgICAgICB2YXIgbWlkWSA9IChsYXN0WSArIG5leHQuYXJnc1sxXSkgLyAyOwoKICAgICAgICAgICAgaWYgKHggPT09IG1pZFggJiYgeSA9PT0gbWlkWSkgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBBbGwgcG9pbnRzIGV4Y2VwdCBjb250cm9sIHBvaW50cyBhcmUgb24gY3VydmUuCiAgICAgICAgaWYgKCEoYy5jb21tYW5kID09PSAncXVhZHJhdGljQ3VydmVUbycgJiYgaiA9PT0gMCkpIHsKICAgICAgICAgIGZsYWcgfD0gT05fQ1VSVkUkMTsKICAgICAgICB9CgogICAgICAgIGZsYWcgPSB0aGlzLl9lbmNvZGVQb2ludCh4LCBsYXN0WCwgeFBvaW50cywgZmxhZywgWF9TSE9SVF9WRUNUT1IkMSwgU0FNRV9YJDEpOwogICAgICAgIGZsYWcgPSB0aGlzLl9lbmNvZGVQb2ludCh5LCBsYXN0WSwgeVBvaW50cywgZmxhZywgWV9TSE9SVF9WRUNUT1IkMSwgU0FNRV9ZJDEpOwoKICAgICAgICBpZiAoZmxhZyA9PT0gbGFzdEZsYWcgJiYgc2FtZSA8IDI1NSkgewogICAgICAgICAgZmxhZ3NbZmxhZ3MubGVuZ3RoIC0gMV0gfD0gUkVQRUFUJDE7CiAgICAgICAgICBzYW1lKys7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChzYW1lID4gMCkgewogICAgICAgICAgICBmbGFncy5wdXNoKHNhbWUpOwogICAgICAgICAgICBzYW1lID0gMDsKICAgICAgICAgIH0KCiAgICAgICAgICBmbGFncy5wdXNoKGZsYWcpOwogICAgICAgICAgbGFzdEZsYWcgPSBmbGFnOwogICAgICAgIH0KCiAgICAgICAgbGFzdFggPSB4OwogICAgICAgIGxhc3RZID0geTsKICAgICAgICBwb2ludENvdW50Kys7CiAgICAgIH0KCiAgICAgIGlmIChjLmNvbW1hbmQgPT09ICdjbG9zZVBhdGgnKSB7CiAgICAgICAgZW5kUHRzT2ZDb250b3Vycy5wdXNoKHBvaW50Q291bnQgLSAxKTsKICAgICAgfQogICAgfQoKICAgIC8vIENsb3NlIHRoZSBwYXRoIGlmIHRoZSBsYXN0IGNvbW1hbmQgZGlkbid0IGFscmVhZHkKICAgIGlmIChwYXRoLmNvbW1hbmRzLmxlbmd0aCA+IDEgJiYgcGF0aC5jb21tYW5kc1twYXRoLmNvbW1hbmRzLmxlbmd0aCAtIDFdLmNvbW1hbmQgIT09ICdjbG9zZVBhdGgnKSB7CiAgICAgIGVuZFB0c09mQ29udG91cnMucHVzaChwb2ludENvdW50IC0gMSk7CiAgICB9CgogICAgdmFyIGJib3ggPSBwYXRoLmJib3g7CiAgICB2YXIgZ2x5ZiA9IHsKICAgICAgbnVtYmVyT2ZDb250b3VyczogZW5kUHRzT2ZDb250b3Vycy5sZW5ndGgsCiAgICAgIHhNaW46IGJib3gubWluWCwKICAgICAgeU1pbjogYmJveC5taW5ZLAogICAgICB4TWF4OiBiYm94Lm1heFgsCiAgICAgIHlNYXg6IGJib3gubWF4WSwKICAgICAgZW5kUHRzT2ZDb250b3VyczogZW5kUHRzT2ZDb250b3VycywKICAgICAgaW5zdHJ1Y3Rpb25zOiBpbnN0cnVjdGlvbnMsCiAgICAgIGZsYWdzOiBmbGFncywKICAgICAgeFBvaW50czogeFBvaW50cywKICAgICAgeVBvaW50czogeVBvaW50cwogICAgfTsKCiAgICB2YXIgc2l6ZSA9IEdseWYuc2l6ZShnbHlmKTsKICAgIHZhciB0YWlsID0gNCAtIHNpemUgJSA0OwoKICAgIHZhciBzdHJlYW0gPSBuZXcgci5FbmNvZGVTdHJlYW0oc2l6ZSArIHRhaWwpOwogICAgR2x5Zi5lbmNvZGUoc3RyZWFtLCBnbHlmKTsKCiAgICAvLyBBbGlnbiB0byA0LWJ5dGUgbGVuZ3RoCiAgICBpZiAodGFpbCAhPT0gMCkgewogICAgICBzdHJlYW0uZmlsbCgwLCB0YWlsKTsKICAgIH0KCiAgICByZXR1cm4gc3RyZWFtLmJ1ZmZlcjsKICB9OwoKICBUVEZHbHlwaEVuY29kZXIucHJvdG90eXBlLl9lbmNvZGVQb2ludCA9IGZ1bmN0aW9uIF9lbmNvZGVQb2ludCh2YWx1ZSwgbGFzdCwgcG9pbnRzLCBmbGFnLCBzaG9ydEZsYWcsIHNhbWVGbGFnKSB7CiAgICB2YXIgZGlmZiA9IHZhbHVlIC0gbGFzdDsKCiAgICBpZiAodmFsdWUgPT09IGxhc3QpIHsKICAgICAgZmxhZyB8PSBzYW1lRmxhZzsKICAgIH0gZWxzZSB7CiAgICAgIGlmICgtMjU1IDw9IGRpZmYgJiYgZGlmZiA8PSAyNTUpIHsKICAgICAgICBmbGFnIHw9IHNob3J0RmxhZzsKICAgICAgICBpZiAoZGlmZiA8IDApIHsKICAgICAgICAgIGRpZmYgPSAtZGlmZjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgZmxhZyB8PSBzYW1lRmxhZzsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHBvaW50cy5wdXNoKGRpZmYpOwogICAgfQoKICAgIHJldHVybiBmbGFnOwogIH07CgogIHJldHVybiBUVEZHbHlwaEVuY29kZXI7Cn0oKTsKCnZhciBUVEZTdWJzZXQgPSBmdW5jdGlvbiAoX1N1YnNldCkgewogIF9pbmhlcml0cyhUVEZTdWJzZXQsIF9TdWJzZXQpOwoKICBmdW5jdGlvbiBUVEZTdWJzZXQoZm9udCkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRURlN1YnNldCk7CgogICAgdmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX1N1YnNldC5jYWxsKHRoaXMsIGZvbnQpKTsKCiAgICBfdGhpcy5nbHlwaEVuY29kZXIgPSBuZXcgVFRGR2x5cGhFbmNvZGVyKCk7CiAgICByZXR1cm4gX3RoaXM7CiAgfQoKICBUVEZTdWJzZXQucHJvdG90eXBlLl9hZGRHbHlwaCA9IGZ1bmN0aW9uIF9hZGRHbHlwaChnaWQpIHsKICAgIHZhciBnbHlwaCA9IHRoaXMuZm9udC5nZXRHbHlwaChnaWQpOwogICAgdmFyIGdseWYgPSBnbHlwaC5fZGVjb2RlKCk7CgogICAgLy8gZ2V0IHRoZSBvZmZzZXQgdG8gdGhlIGdseXBoIGZyb20gdGhlIGxvY2EgdGFibGUKICAgIHZhciBjdXJPZmZzZXQgPSB0aGlzLmZvbnQubG9jYS5vZmZzZXRzW2dpZF07CiAgICB2YXIgbmV4dE9mZnNldCA9IHRoaXMuZm9udC5sb2NhLm9mZnNldHNbZ2lkICsgMV07CgogICAgdmFyIHN0cmVhbSA9IHRoaXMuZm9udC5fZ2V0VGFibGVTdHJlYW0oJ2dseWYnKTsKICAgIHN0cmVhbS5wb3MgKz0gY3VyT2Zmc2V0OwoKICAgIHZhciBidWZmZXIgPSBzdHJlYW0ucmVhZEJ1ZmZlcihuZXh0T2Zmc2V0IC0gY3VyT2Zmc2V0KTsKCiAgICAvLyBpZiBpdCBpcyBhIGNvbXBvdW5kIGdseXBoLCBpbmNsdWRlIGl0cyBjb21wb25lbnRzCiAgICBpZiAoZ2x5ZiAmJiBnbHlmLm51bWJlck9mQ29udG91cnMgPCAwKSB7CiAgICAgIGJ1ZmZlciA9IG5ldyBCdWZmZXIoYnVmZmVyKTsKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gZ2x5Zi5jb21wb25lbnRzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgICB2YXIgX3JlZjsKCiAgICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgY29tcG9uZW50ID0gX3JlZjsKCiAgICAgICAgZ2lkID0gdGhpcy5pbmNsdWRlR2x5cGgoY29tcG9uZW50LmdseXBoSUQpOwogICAgICAgIGJ1ZmZlci53cml0ZVVJbnQxNkJFKGdpZCwgY29tcG9uZW50LnBvcyk7CiAgICAgIH0KICAgIH0gZWxzZSBpZiAoZ2x5ZiAmJiB0aGlzLmZvbnQuX3ZhcmlhdGlvblByb2Nlc3NvcikgewogICAgICAvLyBJZiB0aGlzIGlzIGEgVHJ1ZVR5cGUgdmFyaWF0aW9uIGdseXBoLCByZS1lbmNvZGUgdGhlIHBhdGgKICAgICAgYnVmZmVyID0gdGhpcy5nbHlwaEVuY29kZXIuZW5jb2RlU2ltcGxlKGdseXBoLnBhdGgsIGdseWYuaW5zdHJ1Y3Rpb25zKTsKICAgIH0KCiAgICB0aGlzLmdseWYucHVzaChidWZmZXIpOwogICAgdGhpcy5sb2NhLm9mZnNldHMucHVzaCh0aGlzLm9mZnNldCk7CgogICAgdGhpcy5obXR4Lm1ldHJpY3MucHVzaCh7CiAgICAgIGFkdmFuY2U6IGdseXBoLmFkdmFuY2VXaWR0aCwKICAgICAgYmVhcmluZzogZ2x5cGguX2dldE1ldHJpY3MoKS5sZWZ0QmVhcmluZwogICAgfSk7CgogICAgdGhpcy5vZmZzZXQgKz0gYnVmZmVyLmxlbmd0aDsKICAgIHJldHVybiB0aGlzLmdseWYubGVuZ3RoIC0gMTsKICB9OwoKICBUVEZTdWJzZXQucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShzdHJlYW0pIHsKICAgIC8vIHRhYmxlcyByZXF1aXJlZCBieSBQREYgc3BlYzoKICAgIC8vICAgaGVhZCwgaGhlYSwgbG9jYSwgbWF4cCwgY3Z0ICwgcHJlcCwgZ2x5ZiwgaG10eCwgZnBnbQogICAgLy8KICAgIC8vIGFkZGl0aW9uYWwgdGFibGVzIHJlcXVpcmVkIGZvciBzdGFuZGFsb25lIGZvbnRzOgogICAgLy8gICBuYW1lLCBjbWFwLCBPUy8yLCBwb3N0CgogICAgdGhpcy5nbHlmID0gW107CiAgICB0aGlzLm9mZnNldCA9IDA7CiAgICB0aGlzLmxvY2EgPSB7CiAgICAgIG9mZnNldHM6IFtdCiAgICB9OwoKICAgIHRoaXMuaG10eCA9IHsKICAgICAgbWV0cmljczogW10sCiAgICAgIGJlYXJpbmdzOiBbXQogICAgfTsKCiAgICAvLyBpbmNsdWRlIGFsbCB0aGUgZ2x5cGhzCiAgICAvLyBub3QgdXNpbmcgYSBmb3IgbG9vcCBiZWNhdXNlIHdlIG5lZWQgdG8gc3VwcG9ydCBhZGRpbmcgbW9yZQogICAgLy8gZ2x5cGhzIHRvIHRoZSBhcnJheSBhcyB3ZSBnbywgYW5kIENvZmZlZVNjcmlwdCBjYWNoZXMgdGhlIGxlbmd0aC4KICAgIHZhciBpID0gMDsKICAgIHdoaWxlIChpIDwgdGhpcy5nbHlwaHMubGVuZ3RoKSB7CiAgICAgIHRoaXMuX2FkZEdseXBoKHRoaXMuZ2x5cGhzW2krK10pOwogICAgfQoKICAgIHZhciBtYXhwID0gY2xvbmVEZWVwKHRoaXMuZm9udC5tYXhwKTsKICAgIG1heHAubnVtR2x5cGhzID0gdGhpcy5nbHlmLmxlbmd0aDsKCiAgICB0aGlzLmxvY2Eub2Zmc2V0cy5wdXNoKHRoaXMub2Zmc2V0KTsKICAgIHRhYmxlcy5sb2NhLnByZUVuY29kZS5jYWxsKHRoaXMubG9jYSk7CgogICAgdmFyIGhlYWQgPSBjbG9uZURlZXAodGhpcy5mb250LmhlYWQpOwogICAgaGVhZC5pbmRleFRvTG9jRm9ybWF0ID0gdGhpcy5sb2NhLnZlcnNpb247CgogICAgdmFyIGhoZWEgPSBjbG9uZURlZXAodGhpcy5mb250LmhoZWEpOwogICAgaGhlYS5udW1iZXJPZk1ldHJpY3MgPSB0aGlzLmhtdHgubWV0cmljcy5sZW5ndGg7CgogICAgLy8gbWFwID0gW10KICAgIC8vIGZvciBpbmRleCBpbiBbMC4uLjI1Nl0KICAgIC8vICAgICBpZiBpbmRleCA8IEBudW1HbHlwaHMKICAgIC8vICAgICAgICAgbWFwW2luZGV4XSA9IGluZGV4CiAgICAvLyAgICAgZWxzZQogICAgLy8gICAgICAgICBtYXBbaW5kZXhdID0gMAogICAgLy8KICAgIC8vIGNtYXBUYWJsZSA9CiAgICAvLyAgICAgdmVyc2lvbjogMAogICAgLy8gICAgIGxlbmd0aDogMjYyCiAgICAvLyAgICAgbGFuZ3VhZ2U6IDAKICAgIC8vICAgICBjb2RlTWFwOiBtYXAKICAgIC8vCiAgICAvLyBjbWFwID0KICAgIC8vICAgICB2ZXJzaW9uOiAwCiAgICAvLyAgICAgbnVtU3VidGFibGVzOiAxCiAgICAvLyAgICAgdGFibGVzOiBbCiAgICAvLyAgICAgICAgIHBsYXRmb3JtSUQ6IDEKICAgIC8vICAgICAgICAgZW5jb2RpbmdJRDogMAogICAgLy8gICAgICAgICB0YWJsZTogY21hcFRhYmxlCiAgICAvLyAgICAgXQoKICAgIC8vIFRPRE86IHN1YnNldCBwcmVwLCBjdnQsIGZwZ20/CiAgICBEaXJlY3RvcnkuZW5jb2RlKHN0cmVhbSwgewogICAgICB0YWJsZXM6IHsKICAgICAgICBoZWFkOiBoZWFkLAogICAgICAgIGhoZWE6IGhoZWEsCiAgICAgICAgbG9jYTogdGhpcy5sb2NhLAogICAgICAgIG1heHA6IG1heHAsCiAgICAgICAgJ2N2dCAnOiB0aGlzLmZvbnRbJ2N2dCAnXSwKICAgICAgICBwcmVwOiB0aGlzLmZvbnQucHJlcCwKICAgICAgICBnbHlmOiB0aGlzLmdseWYsCiAgICAgICAgaG10eDogdGhpcy5obXR4LAogICAgICAgIGZwZ206IHRoaXMuZm9udC5mcGdtCgogICAgICAgIC8vIG5hbWU6IGNsb25lIEBmb250Lm5hbWUKICAgICAgICAvLyAnT1MvMic6IGNsb25lIEBmb250WydPUy8yJ10KICAgICAgICAvLyBwb3N0OiBjbG9uZSBAZm9udC5wb3N0CiAgICAgICAgLy8gY21hcDogY21hcAogICAgICB9CiAgICB9KTsKICB9OwoKICByZXR1cm4gVFRGU3Vic2V0Owp9KFN1YnNldCk7Cgp2YXIgQ0ZGU3Vic2V0ID0gZnVuY3Rpb24gKF9TdWJzZXQpIHsKICBfaW5oZXJpdHMoQ0ZGU3Vic2V0LCBfU3Vic2V0KTsKCiAgZnVuY3Rpb24gQ0ZGU3Vic2V0KGZvbnQpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDRkZTdWJzZXQpOwoKICAgIHZhciBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9TdWJzZXQuY2FsbCh0aGlzLCBmb250KSk7CgogICAgX3RoaXMuY2ZmID0gX3RoaXMuZm9udFsnQ0ZGICddOwogICAgaWYgKCFfdGhpcy5jZmYpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSBDRkYgRm9udCcpOwogICAgfQogICAgcmV0dXJuIF90aGlzOwogIH0KCiAgQ0ZGU3Vic2V0LnByb3RvdHlwZS5zdWJzZXRDaGFyc3RyaW5ncyA9IGZ1bmN0aW9uIHN1YnNldENoYXJzdHJpbmdzKCkgewogICAgdGhpcy5jaGFyc3RyaW5ncyA9IFtdOwogICAgdmFyIGdzdWJycyA9IHt9OwoKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHRoaXMuZ2x5cGhzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgdmFyIF9yZWY7CgogICAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pdGVyYXRvcltfaSsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgaWYgKF9pLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgICAgfQoKICAgICAgdmFyIGdpZCA9IF9yZWY7CgogICAgICB0aGlzLmNoYXJzdHJpbmdzLnB1c2godGhpcy5jZmYuZ2V0Q2hhclN0cmluZyhnaWQpKTsKCiAgICAgIHZhciBnbHlwaCA9IHRoaXMuZm9udC5nZXRHbHlwaChnaWQpOwogICAgICB2YXIgcGF0aCA9IGdseXBoLnBhdGg7IC8vIHRoaXMgY2F1c2VzIHRoZSBnbHlwaCB0byBiZSBwYXJzZWQKCiAgICAgIGZvciAodmFyIHN1YnIgaW4gZ2x5cGguX3VzZWRHc3VicnMpIHsKICAgICAgICBnc3VicnNbc3Vicl0gPSB0cnVlOwogICAgICB9CiAgICB9CgogICAgdGhpcy5nc3VicnMgPSB0aGlzLnN1YnNldFN1YnJzKHRoaXMuY2ZmLmdsb2JhbFN1YnJJbmRleCwgZ3N1YnJzKTsKICB9OwoKICBDRkZTdWJzZXQucHJvdG90eXBlLnN1YnNldFN1YnJzID0gZnVuY3Rpb24gc3Vic2V0U3VicnMoc3VicnMsIHVzZWQpIHsKICAgIHZhciByZXMgPSBbXTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3VicnMubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIHN1YnIgPSBzdWJyc1tpXTsKICAgICAgaWYgKHVzZWRbaV0pIHsKICAgICAgICB0aGlzLmNmZi5zdHJlYW0ucG9zID0gc3Vici5vZmZzZXQ7CiAgICAgICAgcmVzLnB1c2godGhpcy5jZmYuc3RyZWFtLnJlYWRCdWZmZXIoc3Vici5sZW5ndGgpKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXMucHVzaChuZXcgQnVmZmVyKFsxMV0pKTsgLy8gcmV0dXJuCiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gcmVzOwogIH07CgogIENGRlN1YnNldC5wcm90b3R5cGUuc3Vic2V0Rm9udGRpY3QgPSBmdW5jdGlvbiBzdWJzZXRGb250ZGljdCh0b3BEaWN0KSB7CiAgICB0b3BEaWN0LkZEQXJyYXkgPSBbXTsKICAgIHRvcERpY3QuRkRTZWxlY3QgPSB7CiAgICAgIHZlcnNpb246IDAsCiAgICAgIGZkczogW10KICAgIH07CgogICAgdmFyIHVzZWRfZmRzID0ge307CiAgICB2YXIgdXNlZF9zdWJycyA9IFtdOwogICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IHRoaXMuZ2x5cGhzLCBfaXNBcnJheTIgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjIpLCBfaTIgPSAwLCBfaXRlcmF0b3IyID0gX2lzQXJyYXkyID8gX2l0ZXJhdG9yMiA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IyKTs7KSB7CiAgICAgIHZhciBfcmVmMjsKCiAgICAgIGlmIChfaXNBcnJheTIpIHsKICAgICAgICBpZiAoX2kyID49IF9pdGVyYXRvcjIubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmMiA9IF9pdGVyYXRvcjJbX2kyKytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pMiA9IF9pdGVyYXRvcjIubmV4dCgpOwogICAgICAgIGlmIChfaTIuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZjIgPSBfaTIudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBnaWQgPSBfcmVmMjsKCiAgICAgIHZhciBmZCA9IHRoaXMuY2ZmLmZkRm9yR2x5cGgoZ2lkKTsKICAgICAgaWYgKGZkID09IG51bGwpIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQoKICAgICAgaWYgKCF1c2VkX2Zkc1tmZF0pIHsKICAgICAgICB0b3BEaWN0LkZEQXJyYXkucHVzaChfT2JqZWN0JGFzc2lnbih7fSwgdGhpcy5jZmYudG9wRGljdC5GREFycmF5W2ZkXSkpOwogICAgICAgIHVzZWRfc3VicnMucHVzaCh7fSk7CiAgICAgIH0KCiAgICAgIHVzZWRfZmRzW2ZkXSA9IHRydWU7CiAgICAgIHRvcERpY3QuRkRTZWxlY3QuZmRzLnB1c2godG9wRGljdC5GREFycmF5Lmxlbmd0aCAtIDEpOwoKICAgICAgdmFyIGdseXBoID0gdGhpcy5mb250LmdldEdseXBoKGdpZCk7CiAgICAgIHZhciBwYXRoID0gZ2x5cGgucGF0aDsgLy8gdGhpcyBjYXVzZXMgdGhlIGdseXBoIHRvIGJlIHBhcnNlZAogICAgICBmb3IgKHZhciBzdWJyIGluIGdseXBoLl91c2VkU3VicnMpIHsKICAgICAgICB1c2VkX3N1YnJzW3VzZWRfc3VicnMubGVuZ3RoIC0gMV1bc3Vicl0gPSB0cnVlOwogICAgICB9CiAgICB9CgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b3BEaWN0LkZEQXJyYXkubGVuZ3RoOyBpKyspIHsKICAgICAgdmFyIGRpY3QgPSB0b3BEaWN0LkZEQXJyYXlbaV07CiAgICAgIGRlbGV0ZSBkaWN0LkZvbnROYW1lOwogICAgICBpZiAoZGljdC5Qcml2YXRlICYmIGRpY3QuUHJpdmF0ZS5TdWJycykgewogICAgICAgIGRpY3QuUHJpdmF0ZSA9IF9PYmplY3QkYXNzaWduKHt9LCBkaWN0LlByaXZhdGUpOwogICAgICAgIGRpY3QuUHJpdmF0ZS5TdWJycyA9IHRoaXMuc3Vic2V0U3VicnMoZGljdC5Qcml2YXRlLlN1YnJzLCB1c2VkX3N1YnJzW2ldKTsKICAgICAgfQogICAgfQoKICAgIHJldHVybjsKICB9OwoKICBDRkZTdWJzZXQucHJvdG90eXBlLmNyZWF0ZUNJREZvbnRkaWN0ID0gZnVuY3Rpb24gY3JlYXRlQ0lERm9udGRpY3QodG9wRGljdCkgewogICAgdmFyIHVzZWRfc3VicnMgPSB7fTsKICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSB0aGlzLmdseXBocywgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICB2YXIgX3JlZjM7CgogICAgICBpZiAoX2lzQXJyYXkzKSB7CiAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjMgPSBfaXRlcmF0b3IzW19pMysrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICBpZiAoX2kzLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYzID0gX2kzLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgZ2lkID0gX3JlZjM7CgogICAgICB2YXIgZ2x5cGggPSB0aGlzLmZvbnQuZ2V0R2x5cGgoZ2lkKTsKICAgICAgdmFyIHBhdGggPSBnbHlwaC5wYXRoOyAvLyB0aGlzIGNhdXNlcyB0aGUgZ2x5cGggdG8gYmUgcGFyc2VkCgogICAgICBmb3IgKHZhciBzdWJyIGluIGdseXBoLl91c2VkU3VicnMpIHsKICAgICAgICB1c2VkX3N1YnJzW3N1YnJdID0gdHJ1ZTsKICAgICAgfQogICAgfQoKICAgIHZhciBwcml2YXRlRGljdCA9IF9PYmplY3QkYXNzaWduKHt9LCB0aGlzLmNmZi50b3BEaWN0LlByaXZhdGUpOwogICAgcHJpdmF0ZURpY3QuU3VicnMgPSB0aGlzLnN1YnNldFN1YnJzKHRoaXMuY2ZmLnRvcERpY3QuUHJpdmF0ZS5TdWJycywgdXNlZF9zdWJycyk7CgogICAgdG9wRGljdC5GREFycmF5ID0gW3sgUHJpdmF0ZTogcHJpdmF0ZURpY3QgfV07CiAgICByZXR1cm4gdG9wRGljdC5GRFNlbGVjdCA9IHsKICAgICAgdmVyc2lvbjogMywKICAgICAgblJhbmdlczogMSwKICAgICAgcmFuZ2VzOiBbeyBmaXJzdDogMCwgZmQ6IDAgfV0sCiAgICAgIHNlbnRpbmVsOiB0aGlzLmNoYXJzdHJpbmdzLmxlbmd0aAogICAgfTsKICB9OwoKICBDRkZTdWJzZXQucHJvdG90eXBlLmFkZFN0cmluZyA9IGZ1bmN0aW9uIGFkZFN0cmluZyhzdHJpbmcpIHsKICAgIGlmICghc3RyaW5nKSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIGlmICghdGhpcy5zdHJpbmdzKSB7CiAgICAgIHRoaXMuc3RyaW5ncyA9IFtdOwogICAgfQoKICAgIHRoaXMuc3RyaW5ncy5wdXNoKHN0cmluZyk7CiAgICByZXR1cm4gc3RhbmRhcmRTdHJpbmdzLmxlbmd0aCArIHRoaXMuc3RyaW5ncy5sZW5ndGggLSAxOwogIH07CgogIENGRlN1YnNldC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKHN0cmVhbSkgewogICAgdGhpcy5zdWJzZXRDaGFyc3RyaW5ncygpOwoKICAgIHZhciBjaGFyc2V0ID0gewogICAgICB2ZXJzaW9uOiB0aGlzLmNoYXJzdHJpbmdzLmxlbmd0aCA+IDI1NSA/IDIgOiAxLAogICAgICByYW5nZXM6IFt7IGZpcnN0OiAxLCBuTGVmdDogdGhpcy5jaGFyc3RyaW5ncy5sZW5ndGggLSAyIH1dCiAgICB9OwoKICAgIHZhciB0b3BEaWN0ID0gX09iamVjdCRhc3NpZ24oe30sIHRoaXMuY2ZmLnRvcERpY3QpOwogICAgdG9wRGljdC5Qcml2YXRlID0gbnVsbDsKICAgIHRvcERpY3QuY2hhcnNldCA9IGNoYXJzZXQ7CiAgICB0b3BEaWN0LkVuY29kaW5nID0gbnVsbDsKICAgIHRvcERpY3QuQ2hhclN0cmluZ3MgPSB0aGlzLmNoYXJzdHJpbmdzOwoKICAgIHZhciBfYXJyID0gWyd2ZXJzaW9uJywgJ05vdGljZScsICdDb3B5cmlnaHQnLCAnRnVsbE5hbWUnLCAnRmFtaWx5TmFtZScsICdXZWlnaHQnLCAnUG9zdFNjcmlwdCcsICdCYXNlRm9udE5hbWUnLCAnRm9udE5hbWUnXTsKICAgIGZvciAodmFyIF9pNCA9IDA7IF9pNCA8IF9hcnIubGVuZ3RoOyBfaTQrKykgewogICAgICB2YXIga2V5ID0gX2FycltfaTRdOwogICAgICB0b3BEaWN0W2tleV0gPSB0aGlzLmFkZFN0cmluZyh0aGlzLmNmZi5zdHJpbmcodG9wRGljdFtrZXldKSk7CiAgICB9CgogICAgdG9wRGljdC5ST1MgPSBbdGhpcy5hZGRTdHJpbmcoJ0Fkb2JlJyksIHRoaXMuYWRkU3RyaW5nKCdJZGVudGl0eScpLCAwXTsKICAgIHRvcERpY3QuQ0lEQ291bnQgPSB0aGlzLmNoYXJzdHJpbmdzLmxlbmd0aDsKCiAgICBpZiAodGhpcy5jZmYuaXNDSURGb250KSB7CiAgICAgIHRoaXMuc3Vic2V0Rm9udGRpY3QodG9wRGljdCk7CiAgICB9IGVsc2UgewogICAgICB0aGlzLmNyZWF0ZUNJREZvbnRkaWN0KHRvcERpY3QpOwogICAgfQoKICAgIHZhciB0b3AgPSB7CiAgICAgIHZlcnNpb246IDEsCiAgICAgIGhkclNpemU6IHRoaXMuY2ZmLmhkclNpemUsCiAgICAgIG9mZlNpemU6IHRoaXMuY2ZmLmxlbmd0aCwKICAgICAgaGVhZGVyOiB0aGlzLmNmZi5oZWFkZXIsCiAgICAgIG5hbWVJbmRleDogW3RoaXMuY2ZmLnBvc3RzY3JpcHROYW1lXSwKICAgICAgdG9wRGljdEluZGV4OiBbdG9wRGljdF0sCiAgICAgIHN0cmluZ0luZGV4OiB0aGlzLnN0cmluZ3MsCiAgICAgIGdsb2JhbFN1YnJJbmRleDogdGhpcy5nc3VicnMKICAgIH07CgogICAgQ0ZGVG9wLmVuY29kZShzdHJlYW0sIHRvcCk7CiAgfTsKCiAgcmV0dXJuIENGRlN1YnNldDsKfShTdWJzZXQpOwoKdmFyIF9jbGFzczsKZnVuY3Rpb24gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5LCBkZWNvcmF0b3JzLCBkZXNjcmlwdG9yLCBjb250ZXh0KSB7CiAgdmFyIGRlc2MgPSB7fTsKICBPYmplY3RbJ2tlJyArICd5cyddKGRlc2NyaXB0b3IpLmZvckVhY2goZnVuY3Rpb24gKGtleSkgewogICAgZGVzY1trZXldID0gZGVzY3JpcHRvcltrZXldOwogIH0pOwogIGRlc2MuZW51bWVyYWJsZSA9ICEhZGVzYy5lbnVtZXJhYmxlOwogIGRlc2MuY29uZmlndXJhYmxlID0gISFkZXNjLmNvbmZpZ3VyYWJsZTsKCiAgaWYgKCd2YWx1ZScgaW4gZGVzYyB8fCBkZXNjLmluaXRpYWxpemVyKSB7CiAgICBkZXNjLndyaXRhYmxlID0gdHJ1ZTsKICB9CgogIGRlc2MgPSBkZWNvcmF0b3JzLnNsaWNlKCkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbiAoZGVzYywgZGVjb3JhdG9yKSB7CiAgICByZXR1cm4gZGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHksIGRlc2MpIHx8IGRlc2M7CiAgfSwgZGVzYyk7CgogIGlmIChjb250ZXh0ICYmIGRlc2MuaW5pdGlhbGl6ZXIgIT09IHZvaWQgMCkgewogICAgZGVzYy52YWx1ZSA9IGRlc2MuaW5pdGlhbGl6ZXIgPyBkZXNjLmluaXRpYWxpemVyLmNhbGwoY29udGV4dCkgOiB2b2lkIDA7CiAgICBkZXNjLmluaXRpYWxpemVyID0gdW5kZWZpbmVkOwogIH0KCiAgaWYgKGRlc2MuaW5pdGlhbGl6ZXIgPT09IHZvaWQgMCkgewogICAgT2JqZWN0WydkZWZpbmUnICsgJ1Byb3BlcnR5J10odGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYyk7CiAgICBkZXNjID0gbnVsbDsKICB9CgogIHJldHVybiBkZXNjOwp9CgovKioKICogVGhpcyBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgYWxsIFNGTlQtYmFzZWQgZm9udCBmb3JtYXRzIGluIGZvbnRraXQuCiAqIEl0IHN1cHBvcnRzIFRydWVUeXBlLCBhbmQgUG9zdFNjcmlwdCBnbHlwaHMsIGFuZCBzZXZlcmFsIGNvbG9yIGdseXBoIGZvcm1hdHMuCiAqLwp2YXIgVFRGRm9udCA9IChfY2xhc3MgPSBmdW5jdGlvbiAoKSB7CiAgVFRGRm9udC5wcm9iZSA9IGZ1bmN0aW9uIHByb2JlKGJ1ZmZlcikgewogICAgdmFyIGZvcm1hdCA9IGJ1ZmZlci50b1N0cmluZygnYXNjaWknLCAwLCA0KTsKICAgIHJldHVybiBmb3JtYXQgPT09ICd0cnVlJyB8fCBmb3JtYXQgPT09ICdPVFRPJyB8fCBmb3JtYXQgPT09IFN0cmluZy5mcm9tQ2hhckNvZGUoMCwgMSwgMCwgMCk7CiAgfTsKCiAgZnVuY3Rpb24gVFRGRm9udChzdHJlYW0pIHsKICAgIHZhciB2YXJpYXRpb25Db29yZHMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IG51bGw7CgogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRURkZvbnQpOwoKICAgIHRoaXMuc3RyZWFtID0gc3RyZWFtOwogICAgdGhpcy52YXJpYXRpb25Db29yZHMgPSB2YXJpYXRpb25Db29yZHM7CgogICAgdGhpcy5fZGlyZWN0b3J5UG9zID0gdGhpcy5zdHJlYW0ucG9zOwogICAgdGhpcy5fdGFibGVzID0ge307CiAgICB0aGlzLl9nbHlwaHMgPSB7fTsKICAgIHRoaXMuX2RlY29kZURpcmVjdG9yeSgpOwoKICAgIC8vIGRlZmluZSBwcm9wZXJ0aWVzIGZvciBlYWNoIHRhYmxlIHRvIGxhemlseSBwYXJzZQogICAgZm9yICh2YXIgdGFnIGluIHRoaXMuZGlyZWN0b3J5LnRhYmxlcykgewogICAgICB2YXIgdGFibGUgPSB0aGlzLmRpcmVjdG9yeS50YWJsZXNbdGFnXTsKICAgICAgaWYgKHRhYmxlc1t0YWddICYmIHRhYmxlLmxlbmd0aCA+IDApIHsKICAgICAgICBfT2JqZWN0JGRlZmluZVByb3BlcnR5KHRoaXMsIHRhZywgewogICAgICAgICAgZ2V0OiB0aGlzLl9nZXRUYWJsZS5iaW5kKHRoaXMsIHRhYmxlKQogICAgICAgIH0pOwogICAgICB9CiAgICB9CiAgfQoKICBUVEZGb250LnByb3RvdHlwZS5fZ2V0VGFibGUgPSBmdW5jdGlvbiBfZ2V0VGFibGUodGFibGUpIHsKICAgIGlmICghKHRhYmxlLnRhZyBpbiB0aGlzLl90YWJsZXMpKSB7CiAgICAgIHRyeSB7CiAgICAgICAgdGhpcy5fdGFibGVzW3RhYmxlLnRhZ10gPSB0aGlzLl9kZWNvZGVUYWJsZSh0YWJsZSk7CiAgICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBpZiAoZm9udGtpdC5sb2dFcnJvcnMpIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGRlY29kaW5nIHRhYmxlICcgKyB0YWJsZS50YWcpOwogICAgICAgICAgY29uc29sZS5lcnJvcihlLnN0YWNrKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdGhpcy5fdGFibGVzW3RhYmxlLnRhZ107CiAgfTsKCiAgVFRGRm9udC5wcm90b3R5cGUuX2dldFRhYmxlU3RyZWFtID0gZnVuY3Rpb24gX2dldFRhYmxlU3RyZWFtKHRhZykgewogICAgdmFyIHRhYmxlID0gdGhpcy5kaXJlY3RvcnkudGFibGVzW3RhZ107CiAgICBpZiAodGFibGUpIHsKICAgICAgdGhpcy5zdHJlYW0ucG9zID0gdGFibGUub2Zmc2V0OwogICAgICByZXR1cm4gdGhpcy5zdHJlYW07CiAgICB9CgogICAgcmV0dXJuIG51bGw7CiAgfTsKCiAgVFRGRm9udC5wcm90b3R5cGUuX2RlY29kZURpcmVjdG9yeSA9IGZ1bmN0aW9uIF9kZWNvZGVEaXJlY3RvcnkoKSB7CiAgICByZXR1cm4gdGhpcy5kaXJlY3RvcnkgPSBEaXJlY3RvcnkuZGVjb2RlKHRoaXMuc3RyZWFtLCB7IF9zdGFydE9mZnNldDogMCB9KTsKICB9OwoKICBUVEZGb250LnByb3RvdHlwZS5fZGVjb2RlVGFibGUgPSBmdW5jdGlvbiBfZGVjb2RlVGFibGUodGFibGUpIHsKICAgIHZhciBwb3MgPSB0aGlzLnN0cmVhbS5wb3M7CgogICAgdmFyIHN0cmVhbSA9IHRoaXMuX2dldFRhYmxlU3RyZWFtKHRhYmxlLnRhZyk7CiAgICB2YXIgcmVzdWx0ID0gdGFibGVzW3RhYmxlLnRhZ10uZGVjb2RlKHN0cmVhbSwgdGhpcywgdGFibGUubGVuZ3RoKTsKCiAgICB0aGlzLnN0cmVhbS5wb3MgPSBwb3M7CiAgICByZXR1cm4gcmVzdWx0OwogIH07CgogIC8qKgogICAqIFRoZSB1bmlxdWUgUG9zdFNjcmlwdCBuYW1lIGZvciB0aGlzIGZvbnQKICAgKiBAdHlwZSB7c3RyaW5nfQogICAqLwoKCiAgLyoqCiAgICogR2V0cyBhIHN0cmluZyBmcm9tIHRoZSBmb250J3MgYG5hbWVgIHRhYmxlCiAgICogYGxhbmdgIGlzIGEgQkNQLTQ3IGxhbmd1YWdlIGNvZGUuCiAgICogQHJldHVybiB7c3RyaW5nfQogICAqLwogIFRURkZvbnQucHJvdG90eXBlLmdldE5hbWUgPSBmdW5jdGlvbiBnZXROYW1lKGtleSkgewogICAgdmFyIGxhbmcgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6ICdlbic7CgogICAgdmFyIHJlY29yZCA9IHRoaXMubmFtZS5yZWNvcmRzW2tleV07CiAgICBpZiAocmVjb3JkKSB7CiAgICAgIHJldHVybiByZWNvcmRbbGFuZ107CiAgICB9CgogICAgcmV0dXJuIG51bGw7CiAgfTsKCiAgLyoqCiAgICogVGhlIGZvbnQncyBmdWxsIG5hbWUsIGUuZy4gIkhlbHZldGljYSBCb2xkIgogICAqIEB0eXBlIHtzdHJpbmd9CiAgICovCgoKICAvKioKICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlcmUgaXMgZ2x5cGggaW4gdGhlIGZvbnQgZm9yIHRoZSBnaXZlbiB1bmljb2RlIGNvZGUgcG9pbnQuCiAgICoKICAgKiBAcGFyYW0ge251bWJlcn0gY29kZVBvaW50CiAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgKi8KICBUVEZGb250LnByb3RvdHlwZS5oYXNHbHlwaEZvckNvZGVQb2ludCA9IGZ1bmN0aW9uIGhhc0dseXBoRm9yQ29kZVBvaW50KGNvZGVQb2ludCkgewogICAgcmV0dXJuICEhdGhpcy5fY21hcFByb2Nlc3Nvci5sb29rdXAoY29kZVBvaW50KTsKICB9OwoKICAvKioKICAgKiBNYXBzIGEgc2luZ2xlIHVuaWNvZGUgY29kZSBwb2ludCB0byBhIEdseXBoIG9iamVjdC4KICAgKiBEb2VzIG5vdCBwZXJmb3JtIGFueSBhZHZhbmNlZCBzdWJzdGl0dXRpb25zICh0aGVyZSBpcyBubyBjb250ZXh0IHRvIGRvIHNvKS4KICAgKgogICAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlUG9pbnQKICAgKiBAcmV0dXJuIHtHbHlwaH0KICAgKi8KCgogIFRURkZvbnQucHJvdG90eXBlLmdseXBoRm9yQ29kZVBvaW50ID0gZnVuY3Rpb24gZ2x5cGhGb3JDb2RlUG9pbnQoY29kZVBvaW50KSB7CiAgICByZXR1cm4gdGhpcy5nZXRHbHlwaCh0aGlzLl9jbWFwUHJvY2Vzc29yLmxvb2t1cChjb2RlUG9pbnQpLCBbY29kZVBvaW50XSk7CiAgfTsKCiAgLyoqCiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBHbHlwaCBvYmplY3RzIGZvciB0aGUgZ2l2ZW4gc3RyaW5nLgogICAqIFRoaXMgaXMgb25seSBhIG9uZS10by1vbmUgbWFwcGluZyBmcm9tIGNoYXJhY3RlcnMgdG8gZ2x5cGhzLgogICAqIEZvciBtb3N0IHVzZXMsIHlvdSBzaG91bGQgdXNlIGZvbnQubGF5b3V0IChkZXNjcmliZWQgYmVsb3cpLCB3aGljaAogICAqIHByb3ZpZGVzIGEgbXVjaCBtb3JlIGFkdmFuY2VkIG1hcHBpbmcgc3VwcG9ydGluZyBBQVQgYW5kIE9wZW5UeXBlIHNoYXBpbmcuCiAgICoKICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nCiAgICogQHJldHVybiB7R2x5cGhbXX0KICAgKi8KCgogIFRURkZvbnQucHJvdG90eXBlLmdseXBoc0ZvclN0cmluZyA9IGZ1bmN0aW9uIGdseXBoc0ZvclN0cmluZyhzdHJpbmcpIHsKICAgIHZhciBnbHlwaHMgPSBbXTsKICAgIHZhciBsZW4gPSBzdHJpbmcubGVuZ3RoOwogICAgdmFyIGlkeCA9IDA7CiAgICB2YXIgbGFzdCA9IC0xOwogICAgdmFyIHN0YXRlID0gLTE7CgogICAgd2hpbGUgKGlkeCA8PSBsZW4pIHsKICAgICAgdmFyIGNvZGUgPSAwOwogICAgICB2YXIgbmV4dFN0YXRlID0gMDsKCiAgICAgIGlmIChpZHggPCBsZW4pIHsKICAgICAgICAvLyBEZWNvZGUgdGhlIG5leHQgY29kZXBvaW50IGZyb20gVVRGIDE2CiAgICAgICAgY29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGlkeCsrKTsKICAgICAgICBpZiAoMHhkODAwIDw9IGNvZGUgJiYgY29kZSA8PSAweGRiZmYgJiYgaWR4IDwgbGVuKSB7CiAgICAgICAgICB2YXIgbmV4dCA9IHN0cmluZy5jaGFyQ29kZUF0KGlkeCk7CiAgICAgICAgICBpZiAoMHhkYzAwIDw9IG5leHQgJiYgbmV4dCA8PSAweGRmZmYpIHsKICAgICAgICAgICAgaWR4Kys7CiAgICAgICAgICAgIGNvZGUgPSAoKGNvZGUgJiAweDNmZikgPDwgMTApICsgKG5leHQgJiAweDNmZikgKyAweDEwMDAwOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgbmV4dCBzdGF0ZTogMSBpZiB0aGUgbmV4dCBjb2RlcG9pbnQgaXMgYSB2YXJpYXRpb24gc2VsZWN0b3IsIDAgb3RoZXJ3aXNlLgogICAgICAgIG5leHRTdGF0ZSA9IDB4ZmUwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHhmZTBmIHx8IDB4ZTAxMDAgPD0gY29kZSAmJiBjb2RlIDw9IDB4ZTAxZWYgPyAxIDogMDsKICAgICAgfSBlbHNlIHsKICAgICAgICBpZHgrKzsKICAgICAgfQoKICAgICAgaWYgKHN0YXRlID09PSAwICYmIG5leHRTdGF0ZSA9PT0gMSkgewogICAgICAgIC8vIFZhcmlhdGlvbiBzZWxlY3RvciBmb2xsb3dpbmcgbm9ybWFsIGNvZGVwb2ludC4KICAgICAgICBnbHlwaHMucHVzaCh0aGlzLmdldEdseXBoKHRoaXMuX2NtYXBQcm9jZXNzb3IubG9va3VwKGxhc3QsIGNvZGUpLCBbbGFzdCwgY29kZV0pKTsKICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gMCAmJiBuZXh0U3RhdGUgPT09IDApIHsKICAgICAgICAvLyBOb3JtYWwgY29kZXBvaW50IGZvbGxvd2luZyBub3JtYWwgY29kZXBvaW50LgogICAgICAgIGdseXBocy5wdXNoKHRoaXMuZ2x5cGhGb3JDb2RlUG9pbnQobGFzdCkpOwogICAgICB9CgogICAgICBsYXN0ID0gY29kZTsKICAgICAgc3RhdGUgPSBuZXh0U3RhdGU7CiAgICB9CgogICAgcmV0dXJuIGdseXBoczsKICB9OwoKICAvKioKICAgKiBSZXR1cm5zIGEgR2x5cGhSdW4gb2JqZWN0LCB3aGljaCBpbmNsdWRlcyBhbiBhcnJheSBvZiBHbHlwaHMgYW5kIEdseXBoUG9zaXRpb25zIGZvciB0aGUgZ2l2ZW4gc3RyaW5nLgogICAqCiAgICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZwogICAqIEBwYXJhbSB7c3RyaW5nW119IFt1c2VyRmVhdHVyZXNdCiAgICogQHBhcmFtIHtzdHJpbmd9IFtzY3JpcHRdCiAgICogQHBhcmFtIHtzdHJpbmd9IFtsYW5ndWFnZV0KICAgKiBAcGFyYW0ge3N0cmluZ30gW2RpcmVjdGlvbl0KICAgKiBAcmV0dXJuIHtHbHlwaFJ1bn0KICAgKi8KICBUVEZGb250LnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbiBsYXlvdXQoc3RyaW5nLCB1c2VyRmVhdHVyZXMsIHNjcmlwdCwgbGFuZ3VhZ2UsIGRpcmVjdGlvbikgewogICAgcmV0dXJuIHRoaXMuX2xheW91dEVuZ2luZS5sYXlvdXQoc3RyaW5nLCB1c2VyRmVhdHVyZXMsIHNjcmlwdCwgbGFuZ3VhZ2UsIGRpcmVjdGlvbik7CiAgfTsKCiAgLyoqCiAgICogUmV0dXJucyBhbiBhcnJheSBvZiBzdHJpbmdzIHRoYXQgbWFwIHRvIHRoZSBnaXZlbiBnbHlwaCBpZC4KICAgKiBAcGFyYW0ge251bWJlcn0gZ2lkIC0gZ2x5cGggaWQKICAgKi8KCgogIFRURkZvbnQucHJvdG90eXBlLnN0cmluZ3NGb3JHbHlwaCA9IGZ1bmN0aW9uIHN0cmluZ3NGb3JHbHlwaChnaWQpIHsKICAgIHJldHVybiB0aGlzLl9sYXlvdXRFbmdpbmUuc3RyaW5nc0ZvckdseXBoKGdpZCk7CiAgfTsKCiAgLyoqCiAgICogQW4gYXJyYXkgb2YgYWxsIFtPcGVuVHlwZSBmZWF0dXJlIHRhZ3NdKGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9vdHNwZWMvZmVhdHVyZXRhZ3MuaHRtKQogICAqIChvciBtYXBwZWQgQUFUIHRhZ3MpIHN1cHBvcnRlZCBieSB0aGUgZm9udC4KICAgKiBUaGUgZmVhdHVyZXMgcGFyYW1ldGVyIGlzIGFuIGFycmF5IG9mIE9wZW5UeXBlIGZlYXR1cmUgdGFncyB0byBiZSBhcHBsaWVkIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IHNldC4KICAgKiBJZiB0aGlzIGlzIGFuIEFBVCBmb250LCB0aGUgT3BlblR5cGUgZmVhdHVyZSB0YWdzIGFyZSBtYXBwZWQgdG8gQUFUIGZlYXR1cmVzLgogICAqCiAgICogQHR5cGUge3N0cmluZ1tdfQogICAqLwoKCiAgVFRGRm9udC5wcm90b3R5cGUuZ2V0QXZhaWxhYmxlRmVhdHVyZXMgPSBmdW5jdGlvbiBnZXRBdmFpbGFibGVGZWF0dXJlcyhzY3JpcHQsIGxhbmd1YWdlKSB7CiAgICByZXR1cm4gdGhpcy5fbGF5b3V0RW5naW5lLmdldEF2YWlsYWJsZUZlYXR1cmVzKHNjcmlwdCwgbGFuZ3VhZ2UpOwogIH07CgogIFRURkZvbnQucHJvdG90eXBlLl9nZXRCYXNlR2x5cGggPSBmdW5jdGlvbiBfZ2V0QmFzZUdseXBoKGdseXBoKSB7CiAgICB2YXIgY2hhcmFjdGVycyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogW107CgogICAgaWYgKCF0aGlzLl9nbHlwaHNbZ2x5cGhdKSB7CiAgICAgIGlmICh0aGlzLmRpcmVjdG9yeS50YWJsZXMuZ2x5ZikgewogICAgICAgIHRoaXMuX2dseXBoc1tnbHlwaF0gPSBuZXcgVFRGR2x5cGgoZ2x5cGgsIGNoYXJhY3RlcnMsIHRoaXMpOwogICAgICB9IGVsc2UgaWYgKHRoaXMuZGlyZWN0b3J5LnRhYmxlc1snQ0ZGICddIHx8IHRoaXMuZGlyZWN0b3J5LnRhYmxlcy5DRkYyKSB7CiAgICAgICAgdGhpcy5fZ2x5cGhzW2dseXBoXSA9IG5ldyBDRkZHbHlwaChnbHlwaCwgY2hhcmFjdGVycywgdGhpcyk7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdGhpcy5fZ2x5cGhzW2dseXBoXSB8fCBudWxsOwogIH07CgogIC8qKgogICAqIFJldHVybnMgYSBnbHlwaCBvYmplY3QgZm9yIHRoZSBnaXZlbiBnbHlwaCBpZC4KICAgKiBZb3UgY2FuIHBhc3MgdGhlIGFycmF5IG9mIGNvZGUgcG9pbnRzIHRoaXMgZ2x5cGggcmVwcmVzZW50cyBmb3IKICAgKiB5b3VyIHVzZSBsYXRlciwgYW5kIGl0IHdpbGwgYmUgc3RvcmVkIGluIHRoZSBnbHlwaCBvYmplY3QuCiAgICoKICAgKiBAcGFyYW0ge251bWJlcn0gZ2x5cGgKICAgKiBAcGFyYW0ge251bWJlcltdfSBjaGFyYWN0ZXJzCiAgICogQHJldHVybiB7R2x5cGh9CiAgICovCgoKICBUVEZGb250LnByb3RvdHlwZS5nZXRHbHlwaCA9IGZ1bmN0aW9uIGdldEdseXBoKGdseXBoKSB7CiAgICB2YXIgY2hhcmFjdGVycyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogW107CgogICAgaWYgKCF0aGlzLl9nbHlwaHNbZ2x5cGhdKSB7CiAgICAgIGlmICh0aGlzLmRpcmVjdG9yeS50YWJsZXMuc2JpeCkgewogICAgICAgIHRoaXMuX2dseXBoc1tnbHlwaF0gPSBuZXcgU0JJWEdseXBoKGdseXBoLCBjaGFyYWN0ZXJzLCB0aGlzKTsKICAgICAgfSBlbHNlIGlmICh0aGlzLmRpcmVjdG9yeS50YWJsZXMuQ09MUiAmJiB0aGlzLmRpcmVjdG9yeS50YWJsZXMuQ1BBTCkgewogICAgICAgIHRoaXMuX2dseXBoc1tnbHlwaF0gPSBuZXcgQ09MUkdseXBoKGdseXBoLCBjaGFyYWN0ZXJzLCB0aGlzKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLl9nZXRCYXNlR2x5cGgoZ2x5cGgsIGNoYXJhY3RlcnMpOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRoaXMuX2dseXBoc1tnbHlwaF0gfHwgbnVsbDsKICB9OwoKICAvKioKICAgKiBSZXR1cm5zIGEgU3Vic2V0IGZvciB0aGlzIGZvbnQuCiAgICogQHJldHVybiB7U3Vic2V0fQogICAqLwoKCiAgVFRGRm9udC5wcm90b3R5cGUuY3JlYXRlU3Vic2V0ID0gZnVuY3Rpb24gY3JlYXRlU3Vic2V0KCkgewogICAgaWYgKHRoaXMuZGlyZWN0b3J5LnRhYmxlc1snQ0ZGICddKSB7CiAgICAgIHJldHVybiBuZXcgQ0ZGU3Vic2V0KHRoaXMpOwogICAgfQoKICAgIHJldHVybiBuZXcgVFRGU3Vic2V0KHRoaXMpOwogIH07CgogIC8qKgogICAqIFJldHVybnMgYW4gb2JqZWN0IGRlc2NyaWJpbmcgdGhlIGF2YWlsYWJsZSB2YXJpYXRpb24gYXhlcwogICAqIHRoYXQgdGhpcyBmb250IHN1cHBvcnRzLiBLZXlzIGFyZSBzZXR0aW5nIHRhZ3MsIGFuZCB2YWx1ZXMKICAgKiBjb250YWluIHRoZSBheGlzIG5hbWUsIHJhbmdlLCBhbmQgZGVmYXVsdCB2YWx1ZS4KICAgKgogICAqIEB0eXBlIHtvYmplY3R9CiAgICovCgoKICAvKioKICAgKiBSZXR1cm5zIGEgbmV3IGZvbnQgd2l0aCB0aGUgZ2l2ZW4gdmFyaWF0aW9uIHNldHRpbmdzIGFwcGxpZWQuCiAgICogU2V0dGluZ3MgY2FuIGVpdGhlciBiZSBhbiBpbnN0YW5jZSBuYW1lLCBvciBhbiBvYmplY3QgY29udGFpbmluZwogICAqIHZhcmlhdGlvbiB0YWdzIGFzIHNwZWNpZmllZCBieSB0aGUgYHZhcmlhdGlvbkF4ZXNgIHByb3BlcnR5LgogICAqCiAgICogQHBhcmFtIHtvYmplY3R9IHNldHRpbmdzCiAgICogQHJldHVybiB7VFRGRm9udH0KICAgKi8KICBUVEZGb250LnByb3RvdHlwZS5nZXRWYXJpYXRpb24gPSBmdW5jdGlvbiBnZXRWYXJpYXRpb24oc2V0dGluZ3MpIHsKICAgIGlmICghKHRoaXMuZGlyZWN0b3J5LnRhYmxlcy5mdmFyICYmICh0aGlzLmRpcmVjdG9yeS50YWJsZXMuZ3ZhciAmJiB0aGlzLmRpcmVjdG9yeS50YWJsZXMuZ2x5ZiB8fCB0aGlzLmRpcmVjdG9yeS50YWJsZXMuQ0ZGMikpKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignVmFyaWF0aW9ucyByZXF1aXJlIGEgZm9udCB3aXRoIHRoZSBmdmFyLCBndmFyIGFuZCBnbHlmLCBvciBDRkYyIHRhYmxlcy4nKTsKICAgIH0KCiAgICBpZiAodHlwZW9mIHNldHRpbmdzID09PSAnc3RyaW5nJykgewogICAgICBzZXR0aW5ncyA9IHRoaXMubmFtZWRWYXJpYXRpb25zW3NldHRpbmdzXTsKICAgIH0KCiAgICBpZiAoKHR5cGVvZiBzZXR0aW5ncyA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2Yoc2V0dGluZ3MpKSAhPT0gJ29iamVjdCcpIHsKICAgICAgdGhyb3cgbmV3IEVycm9yKCdWYXJpYXRpb24gc2V0dGluZ3MgbXVzdCBiZSBlaXRoZXIgYSB2YXJpYXRpb24gbmFtZSBvciBzZXR0aW5ncyBvYmplY3QuJyk7CiAgICB9CgogICAgLy8gbm9ybWFsaXplIHRoZSBjb29yZGluYXRlcwogICAgdmFyIGNvb3JkcyA9IHRoaXMuZnZhci5heGlzLm1hcChmdW5jdGlvbiAoYXhpcywgaSkgewogICAgICB2YXIgYXhpc1RhZyA9IGF4aXMuYXhpc1RhZy50cmltKCk7CiAgICAgIGlmIChheGlzVGFnIGluIHNldHRpbmdzKSB7CiAgICAgICAgcmV0dXJuIE1hdGgubWF4KGF4aXMubWluVmFsdWUsIE1hdGgubWluKGF4aXMubWF4VmFsdWUsIHNldHRpbmdzW2F4aXNUYWddKSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIGF4aXMuZGVmYXVsdFZhbHVlOwogICAgICB9CiAgICB9KTsKCiAgICB2YXIgc3RyZWFtID0gbmV3IHIuRGVjb2RlU3RyZWFtKHRoaXMuc3RyZWFtLmJ1ZmZlcik7CiAgICBzdHJlYW0ucG9zID0gdGhpcy5fZGlyZWN0b3J5UG9zOwoKICAgIHZhciBmb250ID0gbmV3IFRURkZvbnQoc3RyZWFtLCBjb29yZHMpOwogICAgZm9udC5fdGFibGVzID0gdGhpcy5fdGFibGVzOwoKICAgIHJldHVybiBmb250OwogIH07CgogIC8vIFN0YW5kYXJkaXplZCBmb3JtYXQgcGx1Z2luIEFQSQogIFRURkZvbnQucHJvdG90eXBlLmdldEZvbnQgPSBmdW5jdGlvbiBnZXRGb250KG5hbWUpIHsKICAgIHJldHVybiB0aGlzLmdldFZhcmlhdGlvbihuYW1lKTsKICB9OwoKICBfY3JlYXRlQ2xhc3MoVFRGRm9udCwgW3sKICAgIGtleTogJ3Bvc3RzY3JpcHROYW1lJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICB2YXIgbmFtZSA9IHRoaXMubmFtZS5yZWNvcmRzLnBvc3RzY3JpcHROYW1lOwogICAgICBpZiAobmFtZSkgewogICAgICAgIHZhciBsYW5nID0gX09iamVjdCRrZXlzKG5hbWUpWzBdOwogICAgICAgIHJldHVybiBuYW1lW2xhbmddOwogICAgICB9CgogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICB9LCB7CiAgICBrZXk6ICdmdWxsTmFtZScsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2V0TmFtZSgnZnVsbE5hbWUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBmb250J3MgZmFtaWx5IG5hbWUsIGUuZy4gIkhlbHZldGljYSIKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnZmFtaWx5TmFtZScsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2V0TmFtZSgnZm9udEZhbWlseScpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZvbnQncyBzdWItZmFtaWx5LCBlLmcuICJCb2xkIi4KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnc3ViZmFtaWx5TmFtZScsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2V0TmFtZSgnZm9udFN1YmZhbWlseScpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZvbnQncyBjb3B5cmlnaHQgaW5mb3JtYXRpb24KICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnY29weXJpZ2h0JywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5nZXROYW1lKCdjb3B5cmlnaHQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBmb250J3MgdmVyc2lvbiBudW1iZXIKICAgICAqIEB0eXBlIHtzdHJpbmd9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAndmVyc2lvbicsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2V0TmFtZSgndmVyc2lvbicpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZvbnTigJlzIFthc2NlbmRlcl0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXNjZW5kZXJfKHR5cG9ncmFwaHkpKQogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwoKICB9LCB7CiAgICBrZXk6ICdhc2NlbnQnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLmhoZWEuYXNjZW50OwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGZvbnTigJlzIFtkZXNjZW5kZXJdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Rlc2NlbmRlcikKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnZGVzY2VudCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIHRoaXMuaGhlYS5kZXNjZW50OwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGFtb3VudCBvZiBzcGFjZSB0aGF0IHNob3VsZCBiZSBpbmNsdWRlZCBiZXR3ZWVuIGxpbmVzCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCgogIH0sIHsKICAgIGtleTogJ2xpbmVHYXAnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLmhoZWEubGluZUdhcDsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBvZmZzZXQgZnJvbSB0aGUgbm9ybWFsIHVuZGVybGluZSBwb3NpdGlvbiB0aGF0IHNob3VsZCBiZSB1c2VkCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCgogIH0sIHsKICAgIGtleTogJ3VuZGVybGluZVBvc2l0aW9uJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5wb3N0LnVuZGVybGluZVBvc2l0aW9uOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHdlaWdodCBvZiB0aGUgdW5kZXJsaW5lIHRoYXQgc2hvdWxkIGJlIHVzZWQKICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAndW5kZXJsaW5lVGhpY2tuZXNzJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5wb3N0LnVuZGVybGluZVRoaWNrbmVzczsKICAgIH0KCiAgICAvKioKICAgICAqIElmIHRoaXMgaXMgYW4gaXRhbGljIGZvbnQsIHRoZSBhbmdsZSB0aGUgY3Vyc29yIHNob3VsZCBiZSBkcmF3biBhdCB0byBtYXRjaCB0aGUgZm9udCBkZXNpZ24KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnaXRhbGljQW5nbGUnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLnBvc3QuaXRhbGljQW5nbGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgaGVpZ2h0IG9mIGNhcGl0YWwgbGV0dGVycyBhYm92ZSB0aGUgYmFzZWxpbmUuCiAgICAgKiBTZWUgW2hlcmVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhcF9oZWlnaHQpIGZvciBtb3JlIGRldGFpbHMuCiAgICAgKiBAdHlwZSB7bnVtYmVyfQogICAgICovCgogIH0sIHsKICAgIGtleTogJ2NhcEhlaWdodCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgdmFyIG9zMiA9IHRoaXNbJ09TLzInXTsKICAgICAgcmV0dXJuIG9zMiA/IG9zMi5jYXBIZWlnaHQgOiB0aGlzLmFzY2VudDsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBoZWlnaHQgb2YgbG93ZXIgY2FzZSBsZXR0ZXJzIGluIHRoZSBmb250LgogICAgICogU2VlIFtoZXJlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9YLWhlaWdodCkgZm9yIG1vcmUgZGV0YWlscy4KICAgICAqIEB0eXBlIHtudW1iZXJ9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAneEhlaWdodCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgdmFyIG9zMiA9IHRoaXNbJ09TLzInXTsKICAgICAgcmV0dXJuIG9zMiA/IG9zMi54SGVpZ2h0IDogMDsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBudW1iZXIgb2YgZ2x5cGhzIGluIHRoZSBmb250LgogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwoKICB9LCB7CiAgICBrZXk6ICdudW1HbHlwaHMnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLm1heHAubnVtR2x5cGhzOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHNpemUgb2YgdGhlIGZvbnTigJlzIGludGVybmFsIGNvb3JkaW5hdGUgZ3JpZAogICAgICogQHR5cGUge251bWJlcn0KICAgICAqLwoKICB9LCB7CiAgICBrZXk6ICd1bml0c1BlckVtJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5oZWFkLnVuaXRzUGVyRW07CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgZm9udOKAmXMgYm91bmRpbmcgYm94LCBpLmUuIHRoZSBib3ggdGhhdCBlbmNsb3NlcyBhbGwgZ2x5cGhzIGluIHRoZSBmb250LgogICAgICogQHR5cGUge0JCb3h9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnYmJveCcsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgcmV0dXJuIF9PYmplY3QkZnJlZXplKG5ldyBCQm94KHRoaXMuaGVhZC54TWluLCB0aGlzLmhlYWQueU1pbiwgdGhpcy5oZWFkLnhNYXgsIHRoaXMuaGVhZC55TWF4KSk7CiAgICB9CiAgfSwgewogICAga2V5OiAnX2NtYXBQcm9jZXNzb3InLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiBuZXcgQ21hcFByb2Nlc3Nvcih0aGlzLmNtYXApOwogICAgfQoKICAgIC8qKgogICAgICogQW4gYXJyYXkgb2YgYWxsIG9mIHRoZSB1bmljb2RlIGNvZGUgcG9pbnRzIHN1cHBvcnRlZCBieSB0aGUgZm9udC4KICAgICAqIEB0eXBlIHtudW1iZXJbXX0KICAgICAqLwoKICB9LCB7CiAgICBrZXk6ICdjaGFyYWN0ZXJTZXQnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiB0aGlzLl9jbWFwUHJvY2Vzc29yLmdldENoYXJhY3RlclNldCgpOwogICAgfQogIH0sIHsKICAgIGtleTogJ19sYXlvdXRFbmdpbmUnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHJldHVybiBuZXcgTGF5b3V0RW5naW5lKHRoaXMpOwogICAgfQogIH0sIHsKICAgIGtleTogJ2F2YWlsYWJsZUZlYXR1cmVzJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICByZXR1cm4gdGhpcy5fbGF5b3V0RW5naW5lLmdldEF2YWlsYWJsZUZlYXR1cmVzKCk7CiAgICB9CiAgfSwgewogICAga2V5OiAndmFyaWF0aW9uQXhlcycsCiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHsKICAgICAgdmFyIHJlcyA9IHt9OwogICAgICBpZiAoIXRoaXMuZnZhcikgewogICAgICAgIHJldHVybiByZXM7CiAgICAgIH0KCiAgICAgIGZvciAodmFyIF9pdGVyYXRvciA9IHRoaXMuZnZhci5heGlzLCBfaXNBcnJheSA9IEFycmF5LmlzQXJyYXkoX2l0ZXJhdG9yKSwgX2kgPSAwLCBfaXRlcmF0b3IgPSBfaXNBcnJheSA/IF9pdGVyYXRvciA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3IpOzspIHsKICAgICAgICB2YXIgX3JlZjsKCiAgICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgICBpZiAoX2kgPj0gX2l0ZXJhdG9yLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaSA9IF9pdGVyYXRvci5uZXh0KCk7CiAgICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgICAgfQoKICAgICAgICB2YXIgYXhpcyA9IF9yZWY7CgogICAgICAgIHJlc1theGlzLmF4aXNUYWcudHJpbSgpXSA9IHsKICAgICAgICAgIG5hbWU6IGF4aXMubmFtZS5lbiwKICAgICAgICAgIG1pbjogYXhpcy5taW5WYWx1ZSwKICAgICAgICAgIGRlZmF1bHQ6IGF4aXMuZGVmYXVsdFZhbHVlLAogICAgICAgICAgbWF4OiBheGlzLm1heFZhbHVlCiAgICAgICAgfTsKICAgICAgfQoKICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gb2JqZWN0IGRlc2NyaWJpbmcgdGhlIG5hbWVkIHZhcmlhdGlvbiBpbnN0YW5jZXMKICAgICAqIHRoYXQgdGhlIGZvbnQgZGVzaWduZXIgaGFzIHNwZWNpZmllZC4gS2V5cyBhcmUgdmFyaWF0aW9uIG5hbWVzCiAgICAgKiBhbmQgdmFsdWVzIGFyZSB0aGUgdmFyaWF0aW9uIHNldHRpbmdzIGZvciB0aGlzIGluc3RhbmNlLgogICAgICoKICAgICAqIEB0eXBlIHtvYmplY3R9CiAgICAgKi8KCiAgfSwgewogICAga2V5OiAnbmFtZWRWYXJpYXRpb25zJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICB2YXIgcmVzID0ge307CiAgICAgIGlmICghdGhpcy5mdmFyKSB7CiAgICAgICAgcmV0dXJuIHJlczsKICAgICAgfQoKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IHRoaXMuZnZhci5pbnN0YW5jZSwgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICAgIHZhciBfcmVmMjsKCiAgICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMiA9IF9pdGVyYXRvcjJbX2kyKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICAgIGlmIChfaTIuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMiA9IF9pMi52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBpbnN0YW5jZSA9IF9yZWYyOwoKICAgICAgICB2YXIgc2V0dGluZ3MgPSB7fTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZnZhci5heGlzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgYXhpcyA9IHRoaXMuZnZhci5heGlzW2ldOwogICAgICAgICAgc2V0dGluZ3NbYXhpcy5heGlzVGFnLnRyaW0oKV0gPSBpbnN0YW5jZS5jb29yZFtpXTsKICAgICAgICB9CgogICAgICAgIHJlc1tpbnN0YW5jZS5uYW1lLmVuXSA9IHNldHRpbmdzOwogICAgICB9CgogICAgICByZXR1cm4gcmVzOwogICAgfQogIH0sIHsKICAgIGtleTogJ192YXJpYXRpb25Qcm9jZXNzb3InLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIGlmICghdGhpcy5mdmFyKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIHZhciB2YXJpYXRpb25Db29yZHMgPSB0aGlzLnZhcmlhdGlvbkNvb3JkczsKCiAgICAgIC8vIElnbm9yZSBpZiBubyB2YXJpYXRpb24gY29vcmRzIGFuZCBub3QgQ0ZGMgogICAgICBpZiAoIXZhcmlhdGlvbkNvb3JkcyAmJiAhdGhpcy5DRkYyKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KCiAgICAgIGlmICghdmFyaWF0aW9uQ29vcmRzKSB7CiAgICAgICAgdmFyaWF0aW9uQ29vcmRzID0gdGhpcy5mdmFyLmF4aXMubWFwKGZ1bmN0aW9uIChheGlzKSB7CiAgICAgICAgICByZXR1cm4gYXhpcy5kZWZhdWx0VmFsdWU7CiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBuZXcgR2x5cGhWYXJpYXRpb25Qcm9jZXNzb3IodGhpcywgdmFyaWF0aW9uQ29vcmRzKTsKICAgIH0KICB9XSk7CgogIHJldHVybiBUVEZGb250Owp9KCksIChfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdiYm94JywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2Jib3gnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ19jbWFwUHJvY2Vzc29yJywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ19jbWFwUHJvY2Vzc29yJyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdjaGFyYWN0ZXJTZXQnLCBbY2FjaGVdLCBfT2JqZWN0JGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnY2hhcmFjdGVyU2V0JyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdfbGF5b3V0RW5naW5lJywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ19sYXlvdXRFbmdpbmUnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ3ZhcmlhdGlvbkF4ZXMnLCBbY2FjaGVdLCBfT2JqZWN0JGdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAndmFyaWF0aW9uQXhlcycpLCBfY2xhc3MucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnbmFtZWRWYXJpYXRpb25zJywgW2NhY2hlXSwgX09iamVjdCRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ25hbWVkVmFyaWF0aW9ucycpLCBfY2xhc3MucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnX3ZhcmlhdGlvblByb2Nlc3NvcicsIFtjYWNoZV0sIF9PYmplY3QkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdfdmFyaWF0aW9uUHJvY2Vzc29yJyksIF9jbGFzcy5wcm90b3R5cGUpKSwgX2NsYXNzKTsKCnZhciBXT0ZGRGlyZWN0b3J5RW50cnkgPSBuZXcgci5TdHJ1Y3QoewogIHRhZzogbmV3IHIuU3RyaW5nKDQpLAogIG9mZnNldDogbmV3IHIuUG9pbnRlcihyLnVpbnQzMiwgJ3ZvaWQnLCB7IHR5cGU6ICdnbG9iYWwnIH0pLAogIGNvbXBMZW5ndGg6IHIudWludDMyLAogIGxlbmd0aDogci51aW50MzIsCiAgb3JpZ0NoZWNrc3VtOiByLnVpbnQzMgp9KTsKCnZhciBXT0ZGRGlyZWN0b3J5ID0gbmV3IHIuU3RydWN0KHsKICB0YWc6IG5ldyByLlN0cmluZyg0KSwgLy8gc2hvdWxkIGJlICd3T0ZGJwogIGZsYXZvcjogci51aW50MzIsCiAgbGVuZ3RoOiByLnVpbnQzMiwKICBudW1UYWJsZXM6IHIudWludDE2LAogIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQxNiksCiAgdG90YWxTZm50U2l6ZTogci51aW50MzIsCiAgbWFqb3JWZXJzaW9uOiByLnVpbnQxNiwKICBtaW5vclZlcnNpb246IHIudWludDE2LAogIG1ldGFPZmZzZXQ6IHIudWludDMyLAogIG1ldGFMZW5ndGg6IHIudWludDMyLAogIG1ldGFPcmlnTGVuZ3RoOiByLnVpbnQzMiwKICBwcml2T2Zmc2V0OiByLnVpbnQzMiwKICBwcml2TGVuZ3RoOiByLnVpbnQzMiwKICB0YWJsZXM6IG5ldyByLkFycmF5KFdPRkZEaXJlY3RvcnlFbnRyeSwgJ251bVRhYmxlcycpCn0pOwoKV09GRkRpcmVjdG9yeS5wcm9jZXNzID0gZnVuY3Rpb24gKCkgewogIHZhciB0YWJsZXMgPSB7fTsKICBmb3IgKHZhciBfaXRlcmF0b3IgPSB0aGlzLnRhYmxlcywgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICB2YXIgX3JlZjsKCiAgICBpZiAoX2lzQXJyYXkpIHsKICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgfSBlbHNlIHsKICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgIF9yZWYgPSBfaS52YWx1ZTsKICAgIH0KCiAgICB2YXIgdGFibGUgPSBfcmVmOwoKICAgIHRhYmxlc1t0YWJsZS50YWddID0gdGFibGU7CiAgfQoKICB0aGlzLnRhYmxlcyA9IHRhYmxlczsKfTsKCnZhciBXT0ZGRm9udCA9IGZ1bmN0aW9uIChfVFRGRm9udCkgewogIF9pbmhlcml0cyhXT0ZGRm9udCwgX1RURkZvbnQpOwoKICBmdW5jdGlvbiBXT0ZGRm9udCgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBXT0ZGRm9udCk7CgogICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9UVEZGb250LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpOwogIH0KCiAgV09GRkZvbnQucHJvYmUgPSBmdW5jdGlvbiBwcm9iZShidWZmZXIpIHsKICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoJ2FzY2lpJywgMCwgNCkgPT09ICd3T0ZGJzsKICB9OwoKICBXT0ZGRm9udC5wcm90b3R5cGUuX2RlY29kZURpcmVjdG9yeSA9IGZ1bmN0aW9uIF9kZWNvZGVEaXJlY3RvcnkoKSB7CiAgICB0aGlzLmRpcmVjdG9yeSA9IFdPRkZEaXJlY3RvcnkuZGVjb2RlKHRoaXMuc3RyZWFtLCB7IF9zdGFydE9mZnNldDogMCB9KTsKICB9OwoKICBXT0ZGRm9udC5wcm90b3R5cGUuX2dldFRhYmxlU3RyZWFtID0gZnVuY3Rpb24gX2dldFRhYmxlU3RyZWFtKHRhZykgewogICAgdmFyIHRhYmxlID0gdGhpcy5kaXJlY3RvcnkudGFibGVzW3RhZ107CiAgICBpZiAodGFibGUpIHsKICAgICAgdGhpcy5zdHJlYW0ucG9zID0gdGFibGUub2Zmc2V0OwoKICAgICAgaWYgKHRhYmxlLmNvbXBMZW5ndGggPCB0YWJsZS5sZW5ndGgpIHsKICAgICAgICB0aGlzLnN0cmVhbS5wb3MgKz0gMjsgLy8gc2tpcCBkZWZsYXRlIGhlYWRlcgogICAgICAgIHZhciBvdXRCdWZmZXIgPSBuZXcgQnVmZmVyKHRhYmxlLmxlbmd0aCk7CiAgICAgICAgdmFyIGJ1ZiA9IGluZmxhdGUodGhpcy5zdHJlYW0ucmVhZEJ1ZmZlcih0YWJsZS5jb21wTGVuZ3RoIC0gMiksIG91dEJ1ZmZlcik7CiAgICAgICAgcmV0dXJuIG5ldyByLkRlY29kZVN0cmVhbShidWYpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnN0cmVhbTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBudWxsOwogIH07CgogIHJldHVybiBXT0ZGRm9udDsKfShUVEZGb250KTsKCi8qKgogKiBSZXByZXNlbnRzIGEgVHJ1ZVR5cGUgZ2x5cGggaW4gdGhlIFdPRkYyIGZvcm1hdCwgd2hpY2ggY29tcHJlc3NlcyBnbHlwaHMgZGlmZmVyZW50bHkuCiAqLwoKdmFyIFdPRkYyR2x5cGggPSBmdW5jdGlvbiAoX1RURkdseXBoKSB7CiAgX2luaGVyaXRzKFdPRkYyR2x5cGgsIF9UVEZHbHlwaCk7CgogIGZ1bmN0aW9uIFdPRkYyR2x5cGgoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV09GRjJHbHlwaCk7CgogICAgcmV0dXJuIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIF9UVEZHbHlwaC5hcHBseSh0aGlzLCBhcmd1bWVudHMpKTsKICB9CgogIFdPRkYyR2x5cGgucHJvdG90eXBlLl9kZWNvZGUgPSBmdW5jdGlvbiBfZGVjb2RlKCkgewogICAgLy8gV2UgaGF2ZSB0byBkZWNvZGUgaW4gYWR2YW5jZSAoaW4gV09GRjJGb250KSwgc28ganVzdCByZXR1cm4gdGhlIHByZS1kZWNvZGVkIGRhdGEuCiAgICByZXR1cm4gdGhpcy5fZm9udC5fdHJhbnNmb3JtZWRHbHlwaHNbdGhpcy5pZF07CiAgfTsKCiAgV09GRjJHbHlwaC5wcm90b3R5cGUuX2dldENCb3ggPSBmdW5jdGlvbiBfZ2V0Q0JveCgpIHsKICAgIHJldHVybiB0aGlzLnBhdGguYmJveDsKICB9OwoKICByZXR1cm4gV09GRjJHbHlwaDsKfShUVEZHbHlwaCk7Cgp2YXIgQmFzZTEyOCA9IHsKICBkZWNvZGU6IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0pIHsKICAgIHZhciByZXN1bHQgPSAwOwogICAgdmFyIGl0ZXJhYmxlID0gWzAsIDEsIDIsIDMsIDRdOwogICAgZm9yICh2YXIgaiA9IDA7IGogPCBpdGVyYWJsZS5sZW5ndGg7IGorKykgewogICAgICB2YXIgaSA9IGl0ZXJhYmxlW2pdOwogICAgICB2YXIgY29kZSA9IHN0cmVhbS5yZWFkVUludDgoKTsKCiAgICAgIC8vIElmIGFueSBvZiB0aGUgdG9wIHNldmVuIGJpdHMgYXJlIHNldCB0aGVuIHdlJ3JlIGFib3V0IHRvIG92ZXJmbG93LgogICAgICBpZiAocmVzdWx0ICYgMHhlMDAwMDAwMCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignT3ZlcmZsb3cnKTsKICAgICAgfQoKICAgICAgcmVzdWx0ID0gcmVzdWx0IDw8IDcgfCBjb2RlICYgMHg3ZjsKICAgICAgaWYgKChjb2RlICYgMHg4MCkgPT09IDApIHsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICB9CiAgICB9CgogICAgdGhyb3cgbmV3IEVycm9yKCdCYWQgYmFzZSAxMjggbnVtYmVyJyk7CiAgfQp9OwoKdmFyIGtub3duVGFncyA9IFsnY21hcCcsICdoZWFkJywgJ2hoZWEnLCAnaG10eCcsICdtYXhwJywgJ25hbWUnLCAnT1MvMicsICdwb3N0JywgJ2N2dCAnLCAnZnBnbScsICdnbHlmJywgJ2xvY2EnLCAncHJlcCcsICdDRkYgJywgJ1ZPUkcnLCAnRUJEVCcsICdFQkxDJywgJ2dhc3AnLCAnaGRteCcsICdrZXJuJywgJ0xUU0gnLCAnUENMVCcsICdWRE1YJywgJ3ZoZWEnLCAndm10eCcsICdCQVNFJywgJ0dERUYnLCAnR1BPUycsICdHU1VCJywgJ0VCU0MnLCAnSlNURicsICdNQVRIJywgJ0NCRFQnLCAnQ0JMQycsICdDT0xSJywgJ0NQQUwnLCAnU1ZHICcsICdzYml4JywgJ2FjbnQnLCAnYXZhcicsICdiZGF0JywgJ2Jsb2MnLCAnYnNsbicsICdjdmFyJywgJ2Zkc2MnLCAnZmVhdCcsICdmbXR4JywgJ2Z2YXInLCAnZ3ZhcicsICdoc3R5JywgJ2p1c3QnLCAnbGNhcicsICdtb3J0JywgJ21vcngnLCAnb3BiZCcsICdwcm9wJywgJ3RyYWsnLCAnWmFwZicsICdTaWxmJywgJ0dsYXQnLCAnR2xvYycsICdGZWF0JywgJ1NpbGwnXTsKCnZhciBXT0ZGMkRpcmVjdG9yeUVudHJ5ID0gbmV3IHIuU3RydWN0KHsKICBmbGFnczogci51aW50OCwKICBjdXN0b21UYWc6IG5ldyByLk9wdGlvbmFsKG5ldyByLlN0cmluZyg0KSwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiAodC5mbGFncyAmIDB4M2YpID09PSAweDNmOwogIH0pLAogIHRhZzogZnVuY3Rpb24gdGFnKHQpIHsKICAgIHJldHVybiB0LmN1c3RvbVRhZyB8fCBrbm93blRhZ3NbdC5mbGFncyAmIDB4M2ZdOwogIH0sIC8vIHx8ICgoKSA9PiB7IHRocm93IG5ldyBFcnJvcihgQmFkIHRhZzogJHtmbGFncyAmIDB4M2Z9YCk7IH0pKCk7IH0sCiAgbGVuZ3RoOiBCYXNlMTI4LAogIHRyYW5zZm9ybVZlcnNpb246IGZ1bmN0aW9uIHRyYW5zZm9ybVZlcnNpb24odCkgewogICAgcmV0dXJuIHQuZmxhZ3MgPj4+IDYgJiAweDAzOwogIH0sCiAgdHJhbnNmb3JtZWQ6IGZ1bmN0aW9uIHRyYW5zZm9ybWVkKHQpIHsKICAgIHJldHVybiB0LnRhZyA9PT0gJ2dseWYnIHx8IHQudGFnID09PSAnbG9jYScgPyB0LnRyYW5zZm9ybVZlcnNpb24gPT09IDAgOiB0LnRyYW5zZm9ybVZlcnNpb24gIT09IDA7CiAgfSwKICB0cmFuc2Zvcm1MZW5ndGg6IG5ldyByLk9wdGlvbmFsKEJhc2UxMjgsIGZ1bmN0aW9uICh0KSB7CiAgICByZXR1cm4gdC50cmFuc2Zvcm1lZDsKICB9KQp9KTsKCnZhciBXT0ZGMkRpcmVjdG9yeSA9IG5ldyByLlN0cnVjdCh7CiAgdGFnOiBuZXcgci5TdHJpbmcoNCksIC8vIHNob3VsZCBiZSAnd09GMicKICBmbGF2b3I6IHIudWludDMyLAogIGxlbmd0aDogci51aW50MzIsCiAgbnVtVGFibGVzOiByLnVpbnQxNiwKICByZXNlcnZlZDogbmV3IHIuUmVzZXJ2ZWQoci51aW50MTYpLAogIHRvdGFsU2ZudFNpemU6IHIudWludDMyLAogIHRvdGFsQ29tcHJlc3NlZFNpemU6IHIudWludDMyLAogIG1ham9yVmVyc2lvbjogci51aW50MTYsCiAgbWlub3JWZXJzaW9uOiByLnVpbnQxNiwKICBtZXRhT2Zmc2V0OiByLnVpbnQzMiwKICBtZXRhTGVuZ3RoOiByLnVpbnQzMiwKICBtZXRhT3JpZ0xlbmd0aDogci51aW50MzIsCiAgcHJpdk9mZnNldDogci51aW50MzIsCiAgcHJpdkxlbmd0aDogci51aW50MzIsCiAgdGFibGVzOiBuZXcgci5BcnJheShXT0ZGMkRpcmVjdG9yeUVudHJ5LCAnbnVtVGFibGVzJykKfSk7CgpXT0ZGMkRpcmVjdG9yeS5wcm9jZXNzID0gZnVuY3Rpb24gKCkgewogIHZhciB0YWJsZXMgPSB7fTsKICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMudGFibGVzLmxlbmd0aDsgaSsrKSB7CiAgICB2YXIgdGFibGUgPSB0aGlzLnRhYmxlc1tpXTsKICAgIHRhYmxlc1t0YWJsZS50YWddID0gdGFibGU7CiAgfQoKICByZXR1cm4gdGhpcy50YWJsZXMgPSB0YWJsZXM7Cn07CgovKioKICogU3ViY2xhc3Mgb2YgVFRGRm9udCB0aGF0IHJlcHJlc2VudHMgYSBUVEYvT1RGIGZvbnQgY29tcHJlc3NlZCBieSBXT0ZGMgogKiBTZWUgc3BlYyBoZXJlOiBodHRwOi8vd3d3LnczLm9yZy9UUi9XT0ZGMi8KICovCgp2YXIgV09GRjJGb250ID0gZnVuY3Rpb24gKF9UVEZGb250KSB7CiAgX2luaGVyaXRzKFdPRkYyRm9udCwgX1RURkZvbnQpOwoKICBmdW5jdGlvbiBXT0ZGMkZvbnQoKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgV09GRjJGb250KTsKCiAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX1RURkZvbnQuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7CiAgfQoKICBXT0ZGMkZvbnQucHJvYmUgPSBmdW5jdGlvbiBwcm9iZShidWZmZXIpIHsKICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoJ2FzY2lpJywgMCwgNCkgPT09ICd3T0YyJzsKICB9OwoKICBXT0ZGMkZvbnQucHJvdG90eXBlLl9kZWNvZGVEaXJlY3RvcnkgPSBmdW5jdGlvbiBfZGVjb2RlRGlyZWN0b3J5KCkgewogICAgdGhpcy5kaXJlY3RvcnkgPSBXT0ZGMkRpcmVjdG9yeS5kZWNvZGUodGhpcy5zdHJlYW0pOwogICAgdGhpcy5fZGF0YVBvcyA9IHRoaXMuc3RyZWFtLnBvczsKICB9OwoKICBXT0ZGMkZvbnQucHJvdG90eXBlLl9kZWNvbXByZXNzID0gZnVuY3Rpb24gX2RlY29tcHJlc3MoKSB7CiAgICAvLyBkZWNvbXByZXNzIGRhdGEgYW5kIHNldHVwIHRhYmxlIG9mZnNldHMgaWYgd2UgaGF2ZW4ndCBhbHJlYWR5CiAgICBpZiAoIXRoaXMuX2RlY29tcHJlc3NlZCkgewogICAgICB0aGlzLnN0cmVhbS5wb3MgPSB0aGlzLl9kYXRhUG9zOwogICAgICB2YXIgYnVmZmVyID0gdGhpcy5zdHJlYW0ucmVhZEJ1ZmZlcih0aGlzLmRpcmVjdG9yeS50b3RhbENvbXByZXNzZWRTaXplKTsKCiAgICAgIHZhciBkZWNvbXByZXNzZWRTaXplID0gMDsKICAgICAgZm9yICh2YXIgdGFnIGluIHRoaXMuZGlyZWN0b3J5LnRhYmxlcykgewogICAgICAgIHZhciBlbnRyeSA9IHRoaXMuZGlyZWN0b3J5LnRhYmxlc1t0YWddOwogICAgICAgIGVudHJ5Lm9mZnNldCA9IGRlY29tcHJlc3NlZFNpemU7CiAgICAgICAgZGVjb21wcmVzc2VkU2l6ZSArPSBlbnRyeS50cmFuc2Zvcm1MZW5ndGggIT0gbnVsbCA/IGVudHJ5LnRyYW5zZm9ybUxlbmd0aCA6IGVudHJ5Lmxlbmd0aDsKICAgICAgfQoKICAgICAgdmFyIGRlY29tcHJlc3NlZCA9IGJyb3RsaShidWZmZXIsIGRlY29tcHJlc3NlZFNpemUpOwogICAgICBpZiAoIWRlY29tcHJlc3NlZCkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3IgZGVjb2RpbmcgY29tcHJlc3NlZCBkYXRhIGluIFdPRkYyJyk7CiAgICAgIH0KCiAgICAgIHRoaXMuc3RyZWFtID0gbmV3IHIuRGVjb2RlU3RyZWFtKG5ldyBCdWZmZXIoZGVjb21wcmVzc2VkKSk7CiAgICAgIHRoaXMuX2RlY29tcHJlc3NlZCA9IHRydWU7CiAgICB9CiAgfTsKCiAgV09GRjJGb250LnByb3RvdHlwZS5fZGVjb2RlVGFibGUgPSBmdW5jdGlvbiBfZGVjb2RlVGFibGUodGFibGUpIHsKICAgIHRoaXMuX2RlY29tcHJlc3MoKTsKICAgIHJldHVybiBfVFRGRm9udC5wcm90b3R5cGUuX2RlY29kZVRhYmxlLmNhbGwodGhpcywgdGFibGUpOwogIH07CgogIC8vIE92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGdldCBhIGdseXBoIGFuZCByZXR1cm4gb3VyCiAgLy8gY3VzdG9tIHN1YmNsYXNzIGlmIHRoZXJlIGlzIGEgZ2x5ZiB0YWJsZS4KCgogIFdPRkYyRm9udC5wcm90b3R5cGUuX2dldEJhc2VHbHlwaCA9IGZ1bmN0aW9uIF9nZXRCYXNlR2x5cGgoZ2x5cGgpIHsKICAgIHZhciBjaGFyYWN0ZXJzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiBbXTsKCiAgICBpZiAoIXRoaXMuX2dseXBoc1tnbHlwaF0pIHsKICAgICAgaWYgKHRoaXMuZGlyZWN0b3J5LnRhYmxlcy5nbHlmICYmIHRoaXMuZGlyZWN0b3J5LnRhYmxlcy5nbHlmLnRyYW5zZm9ybWVkKSB7CiAgICAgICAgaWYgKCF0aGlzLl90cmFuc2Zvcm1lZEdseXBocykgewogICAgICAgICAgdGhpcy5fdHJhbnNmb3JtR2x5ZlRhYmxlKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9nbHlwaHNbZ2x5cGhdID0gbmV3IFdPRkYyR2x5cGgoZ2x5cGgsIGNoYXJhY3RlcnMsIHRoaXMpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBfVFRGRm9udC5wcm90b3R5cGUuX2dldEJhc2VHbHlwaC5jYWxsKHRoaXMsIGdseXBoLCBjaGFyYWN0ZXJzKTsKICAgICAgfQogICAgfQogIH07CgogIFdPRkYyRm9udC5wcm90b3R5cGUuX3RyYW5zZm9ybUdseWZUYWJsZSA9IGZ1bmN0aW9uIF90cmFuc2Zvcm1HbHlmVGFibGUoKSB7CiAgICB0aGlzLl9kZWNvbXByZXNzKCk7CiAgICB0aGlzLnN0cmVhbS5wb3MgPSB0aGlzLmRpcmVjdG9yeS50YWJsZXMuZ2x5Zi5vZmZzZXQ7CiAgICB2YXIgdGFibGUgPSBHbHlmVGFibGUuZGVjb2RlKHRoaXMuc3RyZWFtKTsKICAgIHZhciBnbHlwaHMgPSBbXTsKCiAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgdGFibGUubnVtR2x5cGhzOyBpbmRleCsrKSB7CiAgICAgIHZhciBnbHlwaCA9IHt9OwogICAgICB2YXIgbkNvbnRvdXJzID0gdGFibGUubkNvbnRvdXJzLnJlYWRJbnQxNkJFKCk7CiAgICAgIGdseXBoLm51bWJlck9mQ29udG91cnMgPSBuQ29udG91cnM7CgogICAgICBpZiAobkNvbnRvdXJzID4gMCkgewogICAgICAgIC8vIHNpbXBsZSBnbHlwaAogICAgICAgIHZhciBuUG9pbnRzID0gW107CiAgICAgICAgdmFyIHRvdGFsUG9pbnRzID0gMDsKCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuQ29udG91cnM7IGkrKykgewogICAgICAgICAgdmFyIF9yID0gcmVhZDI1NVVJbnQxNih0YWJsZS5uUG9pbnRzKTsKICAgICAgICAgIHRvdGFsUG9pbnRzICs9IF9yOwogICAgICAgICAgblBvaW50cy5wdXNoKHRvdGFsUG9pbnRzKTsKICAgICAgICB9CgogICAgICAgIGdseXBoLnBvaW50cyA9IGRlY29kZVRyaXBsZXQodGFibGUuZmxhZ3MsIHRhYmxlLmdseXBocywgdG90YWxQb2ludHMpOwogICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBuQ29udG91cnM7IF9pKyspIHsKICAgICAgICAgIGdseXBoLnBvaW50c1tuUG9pbnRzW19pXSAtIDFdLmVuZENvbnRvdXIgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIGluc3RydWN0aW9uU2l6ZSA9IHJlYWQyNTVVSW50MTYodGFibGUuZ2x5cGhzKTsKICAgICAgfSBlbHNlIGlmIChuQ29udG91cnMgPCAwKSB7CiAgICAgICAgLy8gY29tcG9zaXRlIGdseXBoCiAgICAgICAgdmFyIGhhdmVJbnN0cnVjdGlvbnMgPSBUVEZHbHlwaC5wcm90b3R5cGUuX2RlY29kZUNvbXBvc2l0ZS5jYWxsKHsgX2ZvbnQ6IHRoaXMgfSwgZ2x5cGgsIHRhYmxlLmNvbXBvc2l0ZXMpOwogICAgICAgIGlmIChoYXZlSW5zdHJ1Y3Rpb25zKSB7CiAgICAgICAgICB2YXIgaW5zdHJ1Y3Rpb25TaXplID0gcmVhZDI1NVVJbnQxNih0YWJsZS5nbHlwaHMpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgZ2x5cGhzLnB1c2goZ2x5cGgpOwogICAgfQoKICAgIHRoaXMuX3RyYW5zZm9ybWVkR2x5cGhzID0gZ2x5cGhzOwogIH07CgogIHJldHVybiBXT0ZGMkZvbnQ7Cn0oVFRGRm9udCk7Cgp2YXIgU3Vic3RyZWFtID0gZnVuY3Rpb24gKCkgewogIGZ1bmN0aW9uIFN1YnN0cmVhbShsZW5ndGgpIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdWJzdHJlYW0pOwoKICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoOwogICAgdGhpcy5fYnVmID0gbmV3IHIuQnVmZmVyKGxlbmd0aCk7CiAgfQoKICBTdWJzdHJlYW0ucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uIGRlY29kZShzdHJlYW0sIHBhcmVudCkgewogICAgcmV0dXJuIG5ldyByLkRlY29kZVN0cmVhbSh0aGlzLl9idWYuZGVjb2RlKHN0cmVhbSwgcGFyZW50KSk7CiAgfTsKCiAgcmV0dXJuIFN1YnN0cmVhbTsKfSgpOwoKLy8gVGhpcyBzdHJ1Y3QgcmVwcmVzZW50cyB0aGUgZW50aXJlIGdseWYgdGFibGUKCgp2YXIgR2x5ZlRhYmxlID0gbmV3IHIuU3RydWN0KHsKICB2ZXJzaW9uOiByLnVpbnQzMiwKICBudW1HbHlwaHM6IHIudWludDE2LAogIGluZGV4Rm9ybWF0OiByLnVpbnQxNiwKICBuQ29udG91clN0cmVhbVNpemU6IHIudWludDMyLAogIG5Qb2ludHNTdHJlYW1TaXplOiByLnVpbnQzMiwKICBmbGFnU3RyZWFtU2l6ZTogci51aW50MzIsCiAgZ2x5cGhTdHJlYW1TaXplOiByLnVpbnQzMiwKICBjb21wb3NpdGVTdHJlYW1TaXplOiByLnVpbnQzMiwKICBiYm94U3RyZWFtU2l6ZTogci51aW50MzIsCiAgaW5zdHJ1Y3Rpb25TdHJlYW1TaXplOiByLnVpbnQzMiwKICBuQ29udG91cnM6IG5ldyBTdWJzdHJlYW0oJ25Db250b3VyU3RyZWFtU2l6ZScpLAogIG5Qb2ludHM6IG5ldyBTdWJzdHJlYW0oJ25Qb2ludHNTdHJlYW1TaXplJyksCiAgZmxhZ3M6IG5ldyBTdWJzdHJlYW0oJ2ZsYWdTdHJlYW1TaXplJyksCiAgZ2x5cGhzOiBuZXcgU3Vic3RyZWFtKCdnbHlwaFN0cmVhbVNpemUnKSwKICBjb21wb3NpdGVzOiBuZXcgU3Vic3RyZWFtKCdjb21wb3NpdGVTdHJlYW1TaXplJyksCiAgYmJveGVzOiBuZXcgU3Vic3RyZWFtKCdiYm94U3RyZWFtU2l6ZScpLAogIGluc3RydWN0aW9uczogbmV3IFN1YnN0cmVhbSgnaW5zdHJ1Y3Rpb25TdHJlYW1TaXplJykKfSk7Cgp2YXIgV09SRF9DT0RFID0gMjUzOwp2YXIgT05FX01PUkVfQllURV9DT0RFMiA9IDI1NDsKdmFyIE9ORV9NT1JFX0JZVEVfQ09ERTEgPSAyNTU7CnZhciBMT1dFU1RfVV9DT0RFID0gMjUzOwoKZnVuY3Rpb24gcmVhZDI1NVVJbnQxNihzdHJlYW0pIHsKICB2YXIgY29kZSA9IHN0cmVhbS5yZWFkVUludDgoKTsKCiAgaWYgKGNvZGUgPT09IFdPUkRfQ09ERSkgewogICAgcmV0dXJuIHN0cmVhbS5yZWFkVUludDE2QkUoKTsKICB9CgogIGlmIChjb2RlID09PSBPTkVfTU9SRV9CWVRFX0NPREUxKSB7CiAgICByZXR1cm4gc3RyZWFtLnJlYWRVSW50OCgpICsgTE9XRVNUX1VfQ09ERTsKICB9CgogIGlmIChjb2RlID09PSBPTkVfTU9SRV9CWVRFX0NPREUyKSB7CiAgICByZXR1cm4gc3RyZWFtLnJlYWRVSW50OCgpICsgTE9XRVNUX1VfQ09ERSAqIDI7CiAgfQoKICByZXR1cm4gY29kZTsKfQoKZnVuY3Rpb24gd2l0aFNpZ24oZmxhZywgYmFzZXZhbCkgewogIHJldHVybiBmbGFnICYgMSA/IGJhc2V2YWwgOiAtYmFzZXZhbDsKfQoKZnVuY3Rpb24gZGVjb2RlVHJpcGxldChmbGFncywgZ2x5cGhzLCBuUG9pbnRzKSB7CiAgdmFyIHkgPSB2b2lkIDA7CiAgdmFyIHggPSB5ID0gMDsKICB2YXIgcmVzID0gW107CgogIGZvciAodmFyIGkgPSAwOyBpIDwgblBvaW50czsgaSsrKSB7CiAgICB2YXIgZHggPSAwLAogICAgICAgIGR5ID0gMDsKICAgIHZhciBmbGFnID0gZmxhZ3MucmVhZFVJbnQ4KCk7CiAgICB2YXIgb25DdXJ2ZSA9ICEoZmxhZyA+PiA3KTsKICAgIGZsYWcgJj0gMHg3ZjsKCiAgICBpZiAoZmxhZyA8IDEwKSB7CiAgICAgIGR4ID0gMDsKICAgICAgZHkgPSB3aXRoU2lnbihmbGFnLCAoKGZsYWcgJiAxNCkgPDwgNykgKyBnbHlwaHMucmVhZFVJbnQ4KCkpOwogICAgfSBlbHNlIGlmIChmbGFnIDwgMjApIHsKICAgICAgZHggPSB3aXRoU2lnbihmbGFnLCAoKGZsYWcgLSAxMCAmIDE0KSA8PCA3KSArIGdseXBocy5yZWFkVUludDgoKSk7CiAgICAgIGR5ID0gMDsKICAgIH0gZWxzZSBpZiAoZmxhZyA8IDg0KSB7CiAgICAgIHZhciBiMCA9IGZsYWcgLSAyMDsKICAgICAgdmFyIGIxID0gZ2x5cGhzLnJlYWRVSW50OCgpOwogICAgICBkeCA9IHdpdGhTaWduKGZsYWcsIDEgKyAoYjAgJiAweDMwKSArIChiMSA+PiA0KSk7CiAgICAgIGR5ID0gd2l0aFNpZ24oZmxhZyA+PiAxLCAxICsgKChiMCAmIDB4MGMpIDw8IDIpICsgKGIxICYgMHgwZikpOwogICAgfSBlbHNlIGlmIChmbGFnIDwgMTIwKSB7CiAgICAgIHZhciBiMCA9IGZsYWcgLSA4NDsKICAgICAgZHggPSB3aXRoU2lnbihmbGFnLCAxICsgKGIwIC8gMTIgPDwgOCkgKyBnbHlwaHMucmVhZFVJbnQ4KCkpOwogICAgICBkeSA9IHdpdGhTaWduKGZsYWcgPj4gMSwgMSArIChiMCAlIDEyID4+IDIgPDwgOCkgKyBnbHlwaHMucmVhZFVJbnQ4KCkpOwogICAgfSBlbHNlIGlmIChmbGFnIDwgMTI0KSB7CiAgICAgIHZhciBiMSA9IGdseXBocy5yZWFkVUludDgoKTsKICAgICAgdmFyIGIyID0gZ2x5cGhzLnJlYWRVSW50OCgpOwogICAgICBkeCA9IHdpdGhTaWduKGZsYWcsIChiMSA8PCA0KSArIChiMiA+PiA0KSk7CiAgICAgIGR5ID0gd2l0aFNpZ24oZmxhZyA+PiAxLCAoKGIyICYgMHgwZikgPDwgOCkgKyBnbHlwaHMucmVhZFVJbnQ4KCkpOwogICAgfSBlbHNlIHsKICAgICAgZHggPSB3aXRoU2lnbihmbGFnLCBnbHlwaHMucmVhZFVJbnQxNkJFKCkpOwogICAgICBkeSA9IHdpdGhTaWduKGZsYWcgPj4gMSwgZ2x5cGhzLnJlYWRVSW50MTZCRSgpKTsKICAgIH0KCiAgICB4ICs9IGR4OwogICAgeSArPSBkeTsKICAgIHJlcy5wdXNoKG5ldyBQb2ludChvbkN1cnZlLCBmYWxzZSwgeCwgeSkpOwogIH0KCiAgcmV0dXJuIHJlczsKfQoKdmFyIFRUQ0hlYWRlciA9IG5ldyByLlZlcnNpb25lZFN0cnVjdChyLnVpbnQzMiwgewogIDB4MDAwMTAwMDA6IHsKICAgIG51bUZvbnRzOiByLnVpbnQzMiwKICAgIG9mZnNldHM6IG5ldyByLkFycmF5KHIudWludDMyLCAnbnVtRm9udHMnKQogIH0sCiAgMHgwMDAyMDAwMDogewogICAgbnVtRm9udHM6IHIudWludDMyLAogICAgb2Zmc2V0czogbmV3IHIuQXJyYXkoci51aW50MzIsICdudW1Gb250cycpLAogICAgZHNpZ1RhZzogci51aW50MzIsCiAgICBkc2lnTGVuZ3RoOiByLnVpbnQzMiwKICAgIGRzaWdPZmZzZXQ6IHIudWludDMyCiAgfQp9KTsKCnZhciBUcnVlVHlwZUNvbGxlY3Rpb24gPSBmdW5jdGlvbiAoKSB7CiAgVHJ1ZVR5cGVDb2xsZWN0aW9uLnByb2JlID0gZnVuY3Rpb24gcHJvYmUoYnVmZmVyKSB7CiAgICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCdhc2NpaScsIDAsIDQpID09PSAndHRjZic7CiAgfTsKCiAgZnVuY3Rpb24gVHJ1ZVR5cGVDb2xsZWN0aW9uKHN0cmVhbSkgewogICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRydWVUeXBlQ29sbGVjdGlvbik7CgogICAgdGhpcy5zdHJlYW0gPSBzdHJlYW07CiAgICBpZiAoc3RyZWFtLnJlYWRTdHJpbmcoNCkgIT09ICd0dGNmJykgewogICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIFRydWVUeXBlIGNvbGxlY3Rpb24nKTsKICAgIH0KCiAgICB0aGlzLmhlYWRlciA9IFRUQ0hlYWRlci5kZWNvZGUoc3RyZWFtKTsKICB9CgogIFRydWVUeXBlQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0Rm9udCA9IGZ1bmN0aW9uIGdldEZvbnQobmFtZSkgewogICAgZm9yICh2YXIgX2l0ZXJhdG9yID0gdGhpcy5oZWFkZXIub2Zmc2V0cywgX2lzQXJyYXkgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvciksIF9pID0gMCwgX2l0ZXJhdG9yID0gX2lzQXJyYXkgPyBfaXRlcmF0b3IgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yKTs7KSB7CiAgICAgIHZhciBfcmVmOwoKICAgICAgaWYgKF9pc0FycmF5KSB7CiAgICAgICAgaWYgKF9pID49IF9pdGVyYXRvci5sZW5ndGgpIGJyZWFrOwogICAgICAgIF9yZWYgPSBfaXRlcmF0b3JbX2krK107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgX2kgPSBfaXRlcmF0b3IubmV4dCgpOwogICAgICAgIGlmIChfaS5kb25lKSBicmVhazsKICAgICAgICBfcmVmID0gX2kudmFsdWU7CiAgICAgIH0KCiAgICAgIHZhciBvZmZzZXQgPSBfcmVmOwoKICAgICAgdmFyIHN0cmVhbSA9IG5ldyByLkRlY29kZVN0cmVhbSh0aGlzLnN0cmVhbS5idWZmZXIpOwogICAgICBzdHJlYW0ucG9zID0gb2Zmc2V0OwogICAgICB2YXIgZm9udCA9IG5ldyBUVEZGb250KHN0cmVhbSk7CiAgICAgIGlmIChmb250LnBvc3RzY3JpcHROYW1lID09PSBuYW1lKSB7CiAgICAgICAgcmV0dXJuIGZvbnQ7CiAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbnVsbDsKICB9OwoKICBfY3JlYXRlQ2xhc3MoVHJ1ZVR5cGVDb2xsZWN0aW9uLCBbewogICAga2V5OiAnZm9udHMnLAogICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7CiAgICAgIHZhciBmb250cyA9IFtdOwogICAgICBmb3IgKHZhciBfaXRlcmF0b3IyID0gdGhpcy5oZWFkZXIub2Zmc2V0cywgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICAgIHZhciBfcmVmMjsKCiAgICAgICAgaWYgKF9pc0FycmF5MikgewogICAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMiA9IF9pdGVyYXRvcjJbX2kyKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICAgIGlmIChfaTIuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMiA9IF9pMi52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciBvZmZzZXQgPSBfcmVmMjsKCiAgICAgICAgdmFyIHN0cmVhbSA9IG5ldyByLkRlY29kZVN0cmVhbSh0aGlzLnN0cmVhbS5idWZmZXIpOwogICAgICAgIHN0cmVhbS5wb3MgPSBvZmZzZXQ7CiAgICAgICAgZm9udHMucHVzaChuZXcgVFRGRm9udChzdHJlYW0pKTsKICAgICAgfQoKICAgICAgcmV0dXJuIGZvbnRzOwogICAgfQogIH1dKTsKCiAgcmV0dXJuIFRydWVUeXBlQ29sbGVjdGlvbjsKfSgpOwoKdmFyIERGb250TmFtZSA9IG5ldyByLlN0cmluZyhyLnVpbnQ4KTsKdmFyIERGb250RGF0YSA9IG5ldyByLlN0cnVjdCh7CiAgbGVuOiByLnVpbnQzMiwKICBidWY6IG5ldyByLkJ1ZmZlcignbGVuJykKfSk7Cgp2YXIgUmVmID0gbmV3IHIuU3RydWN0KHsKICBpZDogci51aW50MTYsCiAgbmFtZU9mZnNldDogci5pbnQxNiwKICBhdHRyOiByLnVpbnQ4LAogIGRhdGFPZmZzZXQ6IHIudWludDI0LAogIGhhbmRsZTogci51aW50MzIKfSk7Cgp2YXIgVHlwZSA9IG5ldyByLlN0cnVjdCh7CiAgbmFtZTogbmV3IHIuU3RyaW5nKDQpLAogIG1heFR5cGVJbmRleDogci51aW50MTYsCiAgcmVmTGlzdDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgbmV3IHIuQXJyYXkoUmVmLCBmdW5jdGlvbiAodCkgewogICAgcmV0dXJuIHQubWF4VHlwZUluZGV4ICsgMTsKICB9KSwgeyB0eXBlOiAncGFyZW50JyB9KQp9KTsKCnZhciBUeXBlTGlzdCA9IG5ldyByLlN0cnVjdCh7CiAgbGVuZ3RoOiByLnVpbnQxNiwKICB0eXBlczogbmV3IHIuQXJyYXkoVHlwZSwgZnVuY3Rpb24gKHQpIHsKICAgIHJldHVybiB0Lmxlbmd0aCArIDE7CiAgfSkKfSk7Cgp2YXIgREZvbnRNYXAgPSBuZXcgci5TdHJ1Y3QoewogIHJlc2VydmVkOiBuZXcgci5SZXNlcnZlZChyLnVpbnQ4LCAyNCksCiAgdHlwZUxpc3Q6IG5ldyByLlBvaW50ZXIoci51aW50MTYsIFR5cGVMaXN0KSwKICBuYW1lTGlzdE9mZnNldDogbmV3IHIuUG9pbnRlcihyLnVpbnQxNiwgJ3ZvaWQnKQp9KTsKCnZhciBERm9udEhlYWRlciA9IG5ldyByLlN0cnVjdCh7CiAgZGF0YU9mZnNldDogci51aW50MzIsCiAgbWFwOiBuZXcgci5Qb2ludGVyKHIudWludDMyLCBERm9udE1hcCksCiAgZGF0YUxlbmd0aDogci51aW50MzIsCiAgbWFwTGVuZ3RoOiByLnVpbnQzMgp9KTsKCnZhciBERm9udCA9IGZ1bmN0aW9uICgpIHsKICBERm9udC5wcm9iZSA9IGZ1bmN0aW9uIHByb2JlKGJ1ZmZlcikgewogICAgdmFyIHN0cmVhbSA9IG5ldyByLkRlY29kZVN0cmVhbShidWZmZXIpOwoKICAgIHRyeSB7CiAgICAgIHZhciBoZWFkZXIgPSBERm9udEhlYWRlci5kZWNvZGUoc3RyZWFtKTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIGZvciAodmFyIF9pdGVyYXRvciA9IGhlYWRlci5tYXAudHlwZUxpc3QudHlwZXMsIF9pc0FycmF5ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IpLCBfaSA9IDAsIF9pdGVyYXRvciA9IF9pc0FycmF5ID8gX2l0ZXJhdG9yIDogX2dldEl0ZXJhdG9yKF9pdGVyYXRvcik7OykgewogICAgICB2YXIgX3JlZjsKCiAgICAgIGlmIChfaXNBcnJheSkgewogICAgICAgIGlmIChfaSA+PSBfaXRlcmF0b3IubGVuZ3RoKSBicmVhazsKICAgICAgICBfcmVmID0gX2l0ZXJhdG9yW19pKytdOwogICAgICB9IGVsc2UgewogICAgICAgIF9pID0gX2l0ZXJhdG9yLm5leHQoKTsKICAgICAgICBpZiAoX2kuZG9uZSkgYnJlYWs7CiAgICAgICAgX3JlZiA9IF9pLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgdHlwZSA9IF9yZWY7CgogICAgICBpZiAodHlwZS5uYW1lID09PSAnc2ZudCcpIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBmYWxzZTsKICB9OwoKICBmdW5jdGlvbiBERm9udChzdHJlYW0pIHsKICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBERm9udCk7CgogICAgdGhpcy5zdHJlYW0gPSBzdHJlYW07CiAgICB0aGlzLmhlYWRlciA9IERGb250SGVhZGVyLmRlY29kZSh0aGlzLnN0cmVhbSk7CgogICAgZm9yICh2YXIgX2l0ZXJhdG9yMiA9IHRoaXMuaGVhZGVyLm1hcC50eXBlTGlzdC50eXBlcywgX2lzQXJyYXkyID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IyKSwgX2kyID0gMCwgX2l0ZXJhdG9yMiA9IF9pc0FycmF5MiA/IF9pdGVyYXRvcjIgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMik7OykgewogICAgICB2YXIgX3JlZjI7CgogICAgICBpZiAoX2lzQXJyYXkyKSB7CiAgICAgICAgaWYgKF9pMiA+PSBfaXRlcmF0b3IyLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjIgPSBfaXRlcmF0b3IyW19pMisrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTIgPSBfaXRlcmF0b3IyLm5leHQoKTsKICAgICAgICBpZiAoX2kyLmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWYyID0gX2kyLnZhbHVlOwogICAgICB9CgogICAgICB2YXIgdHlwZSA9IF9yZWYyOwoKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yMyA9IHR5cGUucmVmTGlzdCwgX2lzQXJyYXkzID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3IzKSwgX2kzID0gMCwgX2l0ZXJhdG9yMyA9IF9pc0FycmF5MyA/IF9pdGVyYXRvcjMgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yMyk7OykgewogICAgICAgIHZhciBfcmVmMzsKCiAgICAgICAgaWYgKF9pc0FycmF5MykgewogICAgICAgICAgaWYgKF9pMyA+PSBfaXRlcmF0b3IzLmxlbmd0aCkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pdGVyYXRvcjNbX2kzKytdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBfaTMgPSBfaXRlcmF0b3IzLm5leHQoKTsKICAgICAgICAgIGlmIChfaTMuZG9uZSkgYnJlYWs7CiAgICAgICAgICBfcmVmMyA9IF9pMy52YWx1ZTsKICAgICAgICB9CgogICAgICAgIHZhciByZWYgPSBfcmVmMzsKCiAgICAgICAgaWYgKHJlZi5uYW1lT2Zmc2V0ID49IDApIHsKICAgICAgICAgIHRoaXMuc3RyZWFtLnBvcyA9IHJlZi5uYW1lT2Zmc2V0ICsgdGhpcy5oZWFkZXIubWFwLm5hbWVMaXN0T2Zmc2V0OwogICAgICAgICAgcmVmLm5hbWUgPSBERm9udE5hbWUuZGVjb2RlKHRoaXMuc3RyZWFtKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVmLm5hbWUgPSBudWxsOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKHR5cGUubmFtZSA9PT0gJ3NmbnQnKSB7CiAgICAgICAgdGhpcy5zZm50ID0gdHlwZTsKICAgICAgfQogICAgfQogIH0KCiAgREZvbnQucHJvdG90eXBlLmdldEZvbnQgPSBmdW5jdGlvbiBnZXRGb250KG5hbWUpIHsKICAgIGlmICghdGhpcy5zZm50KSB7CiAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIGZvciAodmFyIF9pdGVyYXRvcjQgPSB0aGlzLnNmbnQucmVmTGlzdCwgX2lzQXJyYXk0ID0gQXJyYXkuaXNBcnJheShfaXRlcmF0b3I0KSwgX2k0ID0gMCwgX2l0ZXJhdG9yNCA9IF9pc0FycmF5NCA/IF9pdGVyYXRvcjQgOiBfZ2V0SXRlcmF0b3IoX2l0ZXJhdG9yNCk7OykgewogICAgICB2YXIgX3JlZjQ7CgogICAgICBpZiAoX2lzQXJyYXk0KSB7CiAgICAgICAgaWYgKF9pNCA+PSBfaXRlcmF0b3I0Lmxlbmd0aCkgYnJlYWs7CiAgICAgICAgX3JlZjQgPSBfaXRlcmF0b3I0W19pNCsrXTsKICAgICAgfSBlbHNlIHsKICAgICAgICBfaTQgPSBfaXRlcmF0b3I0Lm5leHQoKTsKICAgICAgICBpZiAoX2k0LmRvbmUpIGJyZWFrOwogICAgICAgIF9yZWY0ID0gX2k0LnZhbHVlOwogICAgICB9CgogICAgICB2YXIgcmVmID0gX3JlZjQ7CgogICAgICB2YXIgcG9zID0gdGhpcy5oZWFkZXIuZGF0YU9mZnNldCArIHJlZi5kYXRhT2Zmc2V0ICsgNDsKICAgICAgdmFyIHN0cmVhbSA9IG5ldyByLkRlY29kZVN0cmVhbSh0aGlzLnN0cmVhbS5idWZmZXIuc2xpY2UocG9zKSk7CiAgICAgIHZhciBmb250ID0gbmV3IFRURkZvbnQoc3RyZWFtKTsKICAgICAgaWYgKGZvbnQucG9zdHNjcmlwdE5hbWUgPT09IG5hbWUpIHsKICAgICAgICByZXR1cm4gZm9udDsKICAgICAgfQogICAgfQoKICAgIHJldHVybiBudWxsOwogIH07CgogIF9jcmVhdGVDbGFzcyhERm9udCwgW3sKICAgIGtleTogJ2ZvbnRzJywKICAgIGdldDogZnVuY3Rpb24gZ2V0KCkgewogICAgICB2YXIgZm9udHMgPSBbXTsKICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yNSA9IHRoaXMuc2ZudC5yZWZMaXN0LCBfaXNBcnJheTUgPSBBcnJheS5pc0FycmF5KF9pdGVyYXRvcjUpLCBfaTUgPSAwLCBfaXRlcmF0b3I1ID0gX2lzQXJyYXk1ID8gX2l0ZXJhdG9yNSA6IF9nZXRJdGVyYXRvcihfaXRlcmF0b3I1KTs7KSB7CiAgICAgICAgdmFyIF9yZWY1OwoKICAgICAgICBpZiAoX2lzQXJyYXk1KSB7CiAgICAgICAgICBpZiAoX2k1ID49IF9pdGVyYXRvcjUubGVuZ3RoKSBicmVhazsKICAgICAgICAgIF9yZWY1ID0gX2l0ZXJhdG9yNVtfaTUrK107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIF9pNSA9IF9pdGVyYXRvcjUubmV4dCgpOwogICAgICAgICAgaWYgKF9pNS5kb25lKSBicmVhazsKICAgICAgICAgIF9yZWY1ID0gX2k1LnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIHJlZiA9IF9yZWY1OwoKICAgICAgICB2YXIgcG9zID0gdGhpcy5oZWFkZXIuZGF0YU9mZnNldCArIHJlZi5kYXRhT2Zmc2V0ICsgNDsKICAgICAgICB2YXIgc3RyZWFtID0gbmV3IHIuRGVjb2RlU3RyZWFtKHRoaXMuc3RyZWFtLmJ1ZmZlci5zbGljZShwb3MpKTsKICAgICAgICBmb250cy5wdXNoKG5ldyBUVEZGb250KHN0cmVhbSkpOwogICAgICB9CgogICAgICByZXR1cm4gZm9udHM7CiAgICB9CiAgfV0pOwoKICByZXR1cm4gREZvbnQ7Cn0oKTsKCi8vIFJlZ2lzdGVyIGZvbnQgZm9ybWF0cwpmb250a2l0LnJlZ2lzdGVyRm9ybWF0KFRURkZvbnQpOwpmb250a2l0LnJlZ2lzdGVyRm9ybWF0KFdPRkZGb250KTsKZm9udGtpdC5yZWdpc3RlckZvcm1hdChXT0ZGMkZvbnQpOwpmb250a2l0LnJlZ2lzdGVyRm9ybWF0KFRydWVUeXBlQ29sbGVjdGlvbik7CmZvbnRraXQucmVnaXN0ZXJGb3JtYXQoREZvbnQpOwoKbW9kdWxlLmV4cG9ydHMgPSBmb250a2l0OwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKSkpCgovKioqLyB9KSwKLyogMTY4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBrZXksIHZhbCwgX3JlZiwgX3JlZjE7CgogIGV4cG9ydHMuRW5jb2RlU3RyZWFtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjkpOwoKICBleHBvcnRzLkRlY29kZVN0cmVhbSA9IF9fd2VicGFja19yZXF1aXJlX18oNTEpOwoKICBleHBvcnRzLkFycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Myk7CgogIGV4cG9ydHMuTGF6eUFycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODcpOwoKICBleHBvcnRzLkJpdGZpZWxkID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODgpOwoKICBleHBvcnRzLkJvb2xlYW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4OSk7CgogIGV4cG9ydHMuQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTApOwoKICBleHBvcnRzLkVudW0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5MSk7CgogIGV4cG9ydHMuT3B0aW9uYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5Mik7CgogIGV4cG9ydHMuUmVzZXJ2ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5Myk7CgogIGV4cG9ydHMuU3RyaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTQpOwoKICBleHBvcnRzLlN0cnVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oOTQpOwoKICBleHBvcnRzLlZlcnNpb25lZFN0cnVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTk1KTsKCiAgX3JlZiA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpOwogIGZvciAoa2V5IGluIF9yZWYpIHsKICAgIHZhbCA9IF9yZWZba2V5XTsKICAgIGV4cG9ydHNba2V5XSA9IHZhbDsKICB9CgogIF9yZWYxID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTYpOwogIGZvciAoa2V5IGluIF9yZWYxKSB7CiAgICB2YWwgPSBfcmVmMVtrZXldOwogICAgZXhwb3J0c1trZXldID0gdmFsOwogIH0KCn0pLmNhbGwodGhpcyk7CgoKLyoqKi8gfSksCi8qIDE2OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyKSB7Ly8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIERlY29kZVN0cmVhbSwgRW5jb2RlU3RyZWFtLCBpY29udiwgc3RyZWFtLAogICAgX19oYXNQcm9wID0ge30uaGFzT3duUHJvcGVydHksCiAgICBfX2V4dGVuZHMgPSBmdW5jdGlvbihjaGlsZCwgcGFyZW50KSB7IGZvciAodmFyIGtleSBpbiBwYXJlbnQpIHsgaWYgKF9faGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfTsKCiAgc3RyZWFtID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7CgogIERlY29kZVN0cmVhbSA9IF9fd2VicGFja19yZXF1aXJlX18oNTEpOwoKICB0cnkgewogICAgaWNvbnYgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUyKTsKICB9IGNhdGNoIChfZXJyb3IpIHt9CgogIEVuY29kZVN0cmVhbSA9IChmdW5jdGlvbihfc3VwZXIpIHsKICAgIHZhciBrZXk7CgogICAgX19leHRlbmRzKEVuY29kZVN0cmVhbSwgX3N1cGVyKTsKCiAgICBmdW5jdGlvbiBFbmNvZGVTdHJlYW0oYnVmZmVyU2l6ZSkgewogICAgICBpZiAoYnVmZmVyU2l6ZSA9PSBudWxsKSB7CiAgICAgICAgYnVmZmVyU2l6ZSA9IDY1NTM2OwogICAgICB9CiAgICAgIEVuY29kZVN0cmVhbS5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgdGhpcy5idWZmZXIgPSBuZXcgQnVmZmVyKGJ1ZmZlclNpemUpOwogICAgICB0aGlzLmJ1ZmZlck9mZnNldCA9IDA7CiAgICAgIHRoaXMucG9zID0gMDsKICAgIH0KCiAgICBmb3IgKGtleSBpbiBCdWZmZXIucHJvdG90eXBlKSB7CiAgICAgIGlmIChrZXkuc2xpY2UoMCwgNSkgPT09ICd3cml0ZScpIHsKICAgICAgICAoZnVuY3Rpb24oa2V5KSB7CiAgICAgICAgICB2YXIgYnl0ZXM7CiAgICAgICAgICBieXRlcyA9ICtEZWNvZGVTdHJlYW0uVFlQRVNba2V5LnJlcGxhY2UoL3dyaXRlfFtCTF1FL2csICcnKV07CiAgICAgICAgICByZXR1cm4gRW5jb2RlU3RyZWFtLnByb3RvdHlwZVtrZXldID0gZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgICAgdGhpcy5lbnN1cmUoYnl0ZXMpOwogICAgICAgICAgICB0aGlzLmJ1ZmZlcltrZXldKHZhbHVlLCB0aGlzLmJ1ZmZlck9mZnNldCk7CiAgICAgICAgICAgIHRoaXMuYnVmZmVyT2Zmc2V0ICs9IGJ5dGVzOwogICAgICAgICAgICByZXR1cm4gdGhpcy5wb3MgKz0gYnl0ZXM7CiAgICAgICAgICB9OwogICAgICAgIH0pKGtleSk7CiAgICAgIH0KICAgIH0KCiAgICBFbmNvZGVTdHJlYW0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24oKSB7fTsKCiAgICBFbmNvZGVTdHJlYW0ucHJvdG90eXBlLmVuc3VyZSA9IGZ1bmN0aW9uKGJ5dGVzKSB7CiAgICAgIGlmICh0aGlzLmJ1ZmZlck9mZnNldCArIGJ5dGVzID4gdGhpcy5idWZmZXIubGVuZ3RoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZmx1c2goKTsKICAgICAgfQogICAgfTsKCiAgICBFbmNvZGVTdHJlYW0ucHJvdG90eXBlLmZsdXNoID0gZnVuY3Rpb24oKSB7CiAgICAgIGlmICh0aGlzLmJ1ZmZlck9mZnNldCA+IDApIHsKICAgICAgICB0aGlzLnB1c2gobmV3IEJ1ZmZlcih0aGlzLmJ1ZmZlci5zbGljZSgwLCB0aGlzLmJ1ZmZlck9mZnNldCkpKTsKICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJPZmZzZXQgPSAwOwogICAgICB9CiAgICB9OwoKICAgIEVuY29kZVN0cmVhbS5wcm90b3R5cGUud3JpdGVCdWZmZXIgPSBmdW5jdGlvbihidWZmZXIpIHsKICAgICAgdGhpcy5mbHVzaCgpOwogICAgICB0aGlzLnB1c2goYnVmZmVyKTsKICAgICAgcmV0dXJuIHRoaXMucG9zICs9IGJ1ZmZlci5sZW5ndGg7CiAgICB9OwoKICAgIEVuY29kZVN0cmVhbS5wcm90b3R5cGUud3JpdGVTdHJpbmcgPSBmdW5jdGlvbihzdHJpbmcsIGVuY29kaW5nKSB7CiAgICAgIHZhciBidWYsIGJ5dGUsIGksIF9pLCBfcmVmOwogICAgICBpZiAoZW5jb2RpbmcgPT0gbnVsbCkgewogICAgICAgIGVuY29kaW5nID0gJ2FzY2lpJzsKICAgICAgfQogICAgICBzd2l0Y2ggKGVuY29kaW5nKSB7CiAgICAgICAgY2FzZSAndXRmMTZsZSc6CiAgICAgICAgY2FzZSAndWNzMic6CiAgICAgICAgY2FzZSAndXRmOCc6CiAgICAgICAgY2FzZSAnYXNjaWknOgogICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVCdWZmZXIobmV3IEJ1ZmZlcihzdHJpbmcsIGVuY29kaW5nKSk7CiAgICAgICAgY2FzZSAndXRmMTZiZSc6CiAgICAgICAgICBidWYgPSBuZXcgQnVmZmVyKHN0cmluZywgJ3V0ZjE2bGUnKTsKICAgICAgICAgIGZvciAoaSA9IF9pID0gMCwgX3JlZiA9IGJ1Zi5sZW5ndGggLSAxOyBfaSA8IF9yZWY7IGkgPSBfaSArPSAyKSB7CiAgICAgICAgICAgIGJ5dGUgPSBidWZbaV07CiAgICAgICAgICAgIGJ1ZltpXSA9IGJ1ZltpICsgMV07CiAgICAgICAgICAgIGJ1ZltpICsgMV0gPSBieXRlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVCdWZmZXIoYnVmKTsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgaWYgKGljb252KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlQnVmZmVyKGljb252LmVuY29kZShzdHJpbmcsIGVuY29kaW5nKSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0luc3RhbGwgaWNvbnYtbGl0ZSB0byBlbmFibGUgYWRkaXRpb25hbCBzdHJpbmcgZW5jb2RpbmdzLicpOwogICAgICAgICAgfQogICAgICB9CiAgICB9OwoKICAgIEVuY29kZVN0cmVhbS5wcm90b3R5cGUud3JpdGVVSW50MjRCRSA9IGZ1bmN0aW9uKHZhbCkgewogICAgICB0aGlzLmVuc3VyZSgzKTsKICAgICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZzZXQrK10gPSB2YWwgPj4+IDE2ICYgMHhmZjsKICAgICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZzZXQrK10gPSB2YWwgPj4+IDggJiAweGZmOwogICAgICB0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZnNldCsrXSA9IHZhbCAmIDB4ZmY7CiAgICAgIHJldHVybiB0aGlzLnBvcyArPSAzOwogICAgfTsKCiAgICBFbmNvZGVTdHJlYW0ucHJvdG90eXBlLndyaXRlVUludDI0TEUgPSBmdW5jdGlvbih2YWwpIHsKICAgICAgdGhpcy5lbnN1cmUoMyk7CiAgICAgIHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2Zmc2V0KytdID0gdmFsICYgMHhmZjsKICAgICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZzZXQrK10gPSB2YWwgPj4+IDggJiAweGZmOwogICAgICB0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZnNldCsrXSA9IHZhbCA+Pj4gMTYgJiAweGZmOwogICAgICByZXR1cm4gdGhpcy5wb3MgKz0gMzsKICAgIH07CgogICAgRW5jb2RlU3RyZWFtLnByb3RvdHlwZS53cml0ZUludDI0QkUgPSBmdW5jdGlvbih2YWwpIHsKICAgICAgaWYgKHZhbCA+PSAwKSB7CiAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVVSW50MjRCRSh2YWwpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLndyaXRlVUludDI0QkUodmFsICsgMHhmZmZmZmYgKyAxKTsKICAgICAgfQogICAgfTsKCiAgICBFbmNvZGVTdHJlYW0ucHJvdG90eXBlLndyaXRlSW50MjRMRSA9IGZ1bmN0aW9uKHZhbCkgewogICAgICBpZiAodmFsID49IDApIHsKICAgICAgICByZXR1cm4gdGhpcy53cml0ZVVJbnQyNExFKHZhbCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVVSW50MjRMRSh2YWwgKyAweGZmZmZmZiArIDEpOwogICAgICB9CiAgICB9OwoKICAgIEVuY29kZVN0cmVhbS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uKHZhbCwgbGVuZ3RoKSB7CiAgICAgIHZhciBidWY7CiAgICAgIGlmIChsZW5ndGggPCB0aGlzLmJ1ZmZlci5sZW5ndGgpIHsKICAgICAgICB0aGlzLmVuc3VyZShsZW5ndGgpOwogICAgICAgIHRoaXMuYnVmZmVyLmZpbGwodmFsLCB0aGlzLmJ1ZmZlck9mZnNldCwgdGhpcy5idWZmZXJPZmZzZXQgKyBsZW5ndGgpOwogICAgICAgIHRoaXMuYnVmZmVyT2Zmc2V0ICs9IGxlbmd0aDsKICAgICAgICByZXR1cm4gdGhpcy5wb3MgKz0gbGVuZ3RoOwogICAgICB9IGVsc2UgewogICAgICAgIGJ1ZiA9IG5ldyBCdWZmZXIobGVuZ3RoKTsKICAgICAgICBidWYuZmlsbCh2YWwpOwogICAgICAgIHJldHVybiB0aGlzLndyaXRlQnVmZmVyKGJ1Zik7CiAgICAgIH0KICAgIH07CgogICAgRW5jb2RlU3RyZWFtLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5mbHVzaCgpOwogICAgICByZXR1cm4gdGhpcy5wdXNoKG51bGwpOwogICAgfTsKCiAgICByZXR1cm4gRW5jb2RlU3RyZWFtOwoKICB9KShzdHJlYW0uUmVhZGFibGUpOwoKICBtb2R1bGUuZXhwb3J0cyA9IEVuY29kZVN0cmVhbTsKCn0pLmNhbGwodGhpcyk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDE3MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKdmFyIEJPTUNoYXIgPSAnXHVGRUZGJzsKCmV4cG9ydHMuUHJlcGVuZEJPTSA9IFByZXBlbmRCT01XcmFwcGVyCmZ1bmN0aW9uIFByZXBlbmRCT01XcmFwcGVyKGVuY29kZXIsIG9wdGlvbnMpIHsKICAgIHRoaXMuZW5jb2RlciA9IGVuY29kZXI7CiAgICB0aGlzLmFkZEJPTSA9IHRydWU7Cn0KClByZXBlbmRCT01XcmFwcGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikgewogICAgaWYgKHRoaXMuYWRkQk9NKSB7CiAgICAgICAgc3RyID0gQk9NQ2hhciArIHN0cjsKICAgICAgICB0aGlzLmFkZEJPTSA9IGZhbHNlOwogICAgfQoKICAgIHJldHVybiB0aGlzLmVuY29kZXIud3JpdGUoc3RyKTsKfQoKUHJlcGVuZEJPTVdyYXBwZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHRoaXMuZW5jb2Rlci5lbmQoKTsKfQoKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpleHBvcnRzLlN0cmlwQk9NID0gU3RyaXBCT01XcmFwcGVyOwpmdW5jdGlvbiBTdHJpcEJPTVdyYXBwZXIoZGVjb2Rlciwgb3B0aW9ucykgewogICAgdGhpcy5kZWNvZGVyID0gZGVjb2RlcjsKICAgIHRoaXMucGFzcyA9IGZhbHNlOwogICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKfQoKU3RyaXBCT01XcmFwcGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZikgewogICAgdmFyIHJlcyA9IHRoaXMuZGVjb2Rlci53cml0ZShidWYpOwogICAgaWYgKHRoaXMucGFzcyB8fCAhcmVzKQogICAgICAgIHJldHVybiByZXM7CgogICAgaWYgKHJlc1swXSA9PT0gQk9NQ2hhcikgewogICAgICAgIHJlcyA9IHJlcy5zbGljZSgxKTsKICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5zdHJpcEJPTSA9PT0gJ2Z1bmN0aW9uJykKICAgICAgICAgICAgdGhpcy5vcHRpb25zLnN0cmlwQk9NKCk7CiAgICB9CgogICAgdGhpcy5wYXNzID0gdHJ1ZTsKICAgIHJldHVybiByZXM7Cn0KClN0cmlwQk9NV3JhcHBlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5kZWNvZGVyLmVuZCgpOwp9CgoKCi8qKiovIH0pLAovKiAxNzEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCi8vIFVwZGF0ZSB0aGlzIGFycmF5IGlmIHlvdSBhZGQvcmVuYW1lL3JlbW92ZSBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeS4KLy8gV2Ugc3VwcG9ydCBCcm93c2VyaWZ5IGJ5IHNraXBwaW5nIGF1dG9tYXRpYyBtb2R1bGUgZGlzY292ZXJ5IGFuZCByZXF1aXJpbmcgbW9kdWxlcyBkaXJlY3RseS4KdmFyIG1vZHVsZXMgPSBbCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3MiksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3MyksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3NCksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3NSksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3NiksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3NyksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3OCksCiAgICBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3OSksCl07CgovLyBQdXQgYWxsIGVuY29kaW5nL2FsaWFzL2NvZGVjIGRlZmluaXRpb25zIHRvIHNpbmdsZSBvYmplY3QgYW5kIGV4cG9ydCBpdC4gCmZvciAodmFyIGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykgewogICAgdmFyIG1vZHVsZSA9IG1vZHVsZXNbaV07CiAgICBmb3IgKHZhciBlbmMgaW4gbW9kdWxlKQogICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kdWxlLCBlbmMpKQogICAgICAgICAgICBleHBvcnRzW2VuY10gPSBtb2R1bGVbZW5jXTsKfQoKCi8qKiovIH0pLAovKiAxNzIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKdmFyIEJ1ZmZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyOwoKLy8gRXhwb3J0IE5vZGUuanMgaW50ZXJuYWwgZW5jb2RpbmdzLgoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgICAvLyBFbmNvZGluZ3MKICAgIHV0Zjg6ICAgeyB0eXBlOiAiX2ludGVybmFsIiwgYm9tQXdhcmU6IHRydWV9LAogICAgY2VzdTg6ICB7IHR5cGU6ICJfaW50ZXJuYWwiLCBib21Bd2FyZTogdHJ1ZX0sCiAgICB1bmljb2RlMTF1dGY4OiAidXRmOCIsCgogICAgdWNzMjogICB7IHR5cGU6ICJfaW50ZXJuYWwiLCBib21Bd2FyZTogdHJ1ZX0sCiAgICB1dGYxNmxlOiAidWNzMiIsCgogICAgYmluYXJ5OiB7IHR5cGU6ICJfaW50ZXJuYWwiIH0sCiAgICBiYXNlNjQ6IHsgdHlwZTogIl9pbnRlcm5hbCIgfSwKICAgIGhleDogICAgeyB0eXBlOiAiX2ludGVybmFsIiB9LAoKICAgIC8vIENvZGVjLgogICAgX2ludGVybmFsOiBJbnRlcm5hbENvZGVjLAp9OwoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZ1bmN0aW9uIEludGVybmFsQ29kZWMoY29kZWNPcHRpb25zLCBpY29udikgewogICAgdGhpcy5lbmMgPSBjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lOwogICAgdGhpcy5ib21Bd2FyZSA9IGNvZGVjT3B0aW9ucy5ib21Bd2FyZTsKCiAgICBpZiAodGhpcy5lbmMgPT09ICJiYXNlNjQiKQogICAgICAgIHRoaXMuZW5jb2RlciA9IEludGVybmFsRW5jb2RlckJhc2U2NDsKICAgIGVsc2UgaWYgKHRoaXMuZW5jID09PSAiY2VzdTgiKSB7CiAgICAgICAgdGhpcy5lbmMgPSAidXRmOCI7IC8vIFVzZSB1dGY4IGZvciBkZWNvZGluZy4KICAgICAgICB0aGlzLmVuY29kZXIgPSBJbnRlcm5hbEVuY29kZXJDZXN1ODsKCiAgICAgICAgLy8gQWRkIGRlY29kZXIgZm9yIHZlcnNpb25zIG9mIE5vZGUgbm90IHN1cHBvcnRpbmcgQ0VTVS04CiAgICAgICAgaWYgKG5ldyBCdWZmZXIoJ2VkYTBiZGVkYjJhOScsICdoZXgnKS50b1N0cmluZygpICE9PSAn8J+SqScpIHsKICAgICAgICAgICAgdGhpcy5kZWNvZGVyID0gSW50ZXJuYWxEZWNvZGVyQ2VzdTg7CiAgICAgICAgICAgIHRoaXMuZGVmYXVsdENoYXJVbmljb2RlID0gaWNvbnYuZGVmYXVsdENoYXJVbmljb2RlOwogICAgICAgIH0KICAgIH0KfQoKSW50ZXJuYWxDb2RlYy5wcm90b3R5cGUuZW5jb2RlciA9IEludGVybmFsRW5jb2RlcjsKSW50ZXJuYWxDb2RlYy5wcm90b3R5cGUuZGVjb2RlciA9IEludGVybmFsRGVjb2RlcjsKCi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBXZSB1c2Ugbm9kZS5qcyBpbnRlcm5hbCBkZWNvZGVyLiBJdHMgc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzIG91cnMuCnZhciBTdHJpbmdEZWNvZGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NykuU3RyaW5nRGVjb2RlcjsKCmlmICghU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kKSAvLyBOb2RlIHYwLjggZG9lc24ndCBoYXZlIHRoaXMgbWV0aG9kLgogICAgU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7fTsKCgpmdW5jdGlvbiBJbnRlcm5hbERlY29kZXIob3B0aW9ucywgY29kZWMpIHsKICAgIFN0cmluZ0RlY29kZXIuY2FsbCh0aGlzLCBjb2RlYy5lbmMpOwp9CgpJbnRlcm5hbERlY29kZXIucHJvdG90eXBlID0gU3RyaW5nRGVjb2Rlci5wcm90b3R5cGU7CgoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gRW5jb2RlciBpcyBtb3N0bHkgdHJpdmlhbAoKZnVuY3Rpb24gSW50ZXJuYWxFbmNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7CiAgICB0aGlzLmVuYyA9IGNvZGVjLmVuYzsKfQoKSW50ZXJuYWxFbmNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikgewogICAgcmV0dXJuIG5ldyBCdWZmZXIoc3RyLCB0aGlzLmVuYyk7Cn0KCkludGVybmFsRW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7Cn0KCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBFeGNlcHQgYmFzZTY0IGVuY29kZXIsIHdoaWNoIG11c3Qga2VlcCBpdHMgc3RhdGUuCgpmdW5jdGlvbiBJbnRlcm5hbEVuY29kZXJCYXNlNjQob3B0aW9ucywgY29kZWMpIHsKICAgIHRoaXMucHJldlN0ciA9ICcnOwp9CgpJbnRlcm5hbEVuY29kZXJCYXNlNjQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7CiAgICBzdHIgPSB0aGlzLnByZXZTdHIgKyBzdHI7CiAgICB2YXIgY29tcGxldGVRdWFkcyA9IHN0ci5sZW5ndGggLSAoc3RyLmxlbmd0aCAlIDQpOwogICAgdGhpcy5wcmV2U3RyID0gc3RyLnNsaWNlKGNvbXBsZXRlUXVhZHMpOwogICAgc3RyID0gc3RyLnNsaWNlKDAsIGNvbXBsZXRlUXVhZHMpOwoKICAgIHJldHVybiBuZXcgQnVmZmVyKHN0ciwgImJhc2U2NCIpOwp9CgpJbnRlcm5hbEVuY29kZXJCYXNlNjQucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIG5ldyBCdWZmZXIodGhpcy5wcmV2U3RyLCAiYmFzZTY0Iik7Cn0KCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBDRVNVLTggZW5jb2RlciBpcyBhbHNvIHNwZWNpYWwuCgpmdW5jdGlvbiBJbnRlcm5hbEVuY29kZXJDZXN1OChvcHRpb25zLCBjb2RlYykgewp9CgpJbnRlcm5hbEVuY29kZXJDZXN1OC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHsKICAgIHZhciBidWYgPSBuZXcgQnVmZmVyKHN0ci5sZW5ndGggKiAzKSwgYnVmSWR4ID0gMDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGNoYXJDb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgLy8gTmFpdmUgaW1wbGVtZW50YXRpb24sIGJ1dCBpdCB3b3JrcyBiZWNhdXNlIENFU1UtOCBpcyBlc3BlY2lhbGx5IGVhc3kKICAgICAgICAvLyB0byBjb252ZXJ0IGZyb20gVVRGLTE2ICh3aGljaCBhbGwgSlMgc3RyaW5ncyBhcmUgZW5jb2RlZCBpbikuCiAgICAgICAgaWYgKGNoYXJDb2RlIDwgMHg4MCkKICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IGNoYXJDb2RlOwogICAgICAgIGVsc2UgaWYgKGNoYXJDb2RlIDwgMHg4MDApIHsKICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IDB4QzAgKyAoY2hhckNvZGUgPj4+IDYpOwogICAgICAgICAgICBidWZbYnVmSWR4KytdID0gMHg4MCArIChjaGFyQ29kZSAmIDB4M2YpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsgLy8gY2hhckNvZGUgd2lsbCBhbHdheXMgYmUgPCAweDEwMDAwIGluIGphdmFzY3JpcHQuCiAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSAweEUwICsgKGNoYXJDb2RlID4+PiAxMik7CiAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSAweDgwICsgKChjaGFyQ29kZSA+Pj4gNikgJiAweDNmKTsKICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IDB4ODAgKyAoY2hhckNvZGUgJiAweDNmKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gYnVmLnNsaWNlKDAsIGJ1ZklkeCk7Cn0KCkludGVybmFsRW5jb2RlckNlc3U4LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHsKfQoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gQ0VTVS04IGRlY29kZXIgaXMgbm90IGltcGxlbWVudGVkIGluIE5vZGUgdjQuMCsKCmZ1bmN0aW9uIEludGVybmFsRGVjb2RlckNlc3U4KG9wdGlvbnMsIGNvZGVjKSB7CiAgICB0aGlzLmFjYyA9IDA7CiAgICB0aGlzLmNvbnRCeXRlcyA9IDA7CiAgICB0aGlzLmFjY0J5dGVzID0gMDsKICAgIHRoaXMuZGVmYXVsdENoYXJVbmljb2RlID0gY29kZWMuZGVmYXVsdENoYXJVbmljb2RlOwp9CgpJbnRlcm5hbERlY29kZXJDZXN1OC5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihidWYpIHsKICAgIHZhciBhY2MgPSB0aGlzLmFjYywgY29udEJ5dGVzID0gdGhpcy5jb250Qnl0ZXMsIGFjY0J5dGVzID0gdGhpcy5hY2NCeXRlcywgCiAgICAgICAgcmVzID0gJyc7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBjdXJCeXRlID0gYnVmW2ldOwogICAgICAgIGlmICgoY3VyQnl0ZSAmIDB4QzApICE9PSAweDgwKSB7IC8vIExlYWRpbmcgYnl0ZQogICAgICAgICAgICBpZiAoY29udEJ5dGVzID4gMCkgeyAvLyBQcmV2aW91cyBjb2RlIGlzIGludmFsaWQKICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTsKICAgICAgICAgICAgICAgIGNvbnRCeXRlcyA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChjdXJCeXRlIDwgMHg4MCkgeyAvLyBTaW5nbGUtYnl0ZSBjb2RlCiAgICAgICAgICAgICAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjdXJCeXRlKTsKICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJCeXRlIDwgMHhFMCkgeyAvLyBUd28tYnl0ZSBjb2RlCiAgICAgICAgICAgICAgICBhY2MgPSBjdXJCeXRlICYgMHgxRjsKICAgICAgICAgICAgICAgIGNvbnRCeXRlcyA9IDE7IGFjY0J5dGVzID0gMTsKICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJCeXRlIDwgMHhGMCkgeyAvLyBUaHJlZS1ieXRlIGNvZGUKICAgICAgICAgICAgICAgIGFjYyA9IGN1ckJ5dGUgJiAweDBGOwogICAgICAgICAgICAgICAgY29udEJ5dGVzID0gMjsgYWNjQnl0ZXMgPSAxOwogICAgICAgICAgICB9IGVsc2UgeyAvLyBGb3VyIG9yIG1vcmUgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIENFU1UtOC4KICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7IC8vIENvbnRpbnVhdGlvbiBieXRlCiAgICAgICAgICAgIGlmIChjb250Qnl0ZXMgPiAwKSB7IC8vIFdlJ3JlIHdhaXRpbmcgZm9yIGl0LgogICAgICAgICAgICAgICAgYWNjID0gKGFjYyA8PCA2KSB8IChjdXJCeXRlICYgMHgzZik7CiAgICAgICAgICAgICAgICBjb250Qnl0ZXMtLTsgYWNjQnl0ZXMrKzsKICAgICAgICAgICAgICAgIGlmIChjb250Qnl0ZXMgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3Igb3ZlcmxvbmcgZW5jb2RpbmcsIGJ1dCBzdXBwb3J0IE1vZGlmaWVkIFVURi04IChlbmNvZGluZyBOVUxMIGFzIEMwIDgwKQogICAgICAgICAgICAgICAgICAgIGlmIChhY2NCeXRlcyA9PT0gMiAmJiBhY2MgPCAweDgwICYmIGFjYyA+IDApCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTsKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhY2NCeXRlcyA9PT0gMyAmJiBhY2MgPCAweDgwMCkKICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWN0dWFsbHkgYWRkIGNoYXJhY3Rlci4KICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYWNjKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsgLy8gVW5leHBlY3RlZCBjb250aW51YXRpb24gYnl0ZQogICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgdGhpcy5hY2MgPSBhY2M7IHRoaXMuY29udEJ5dGVzID0gY29udEJ5dGVzOyB0aGlzLmFjY0J5dGVzID0gYWNjQnl0ZXM7CiAgICByZXR1cm4gcmVzOwp9CgpJbnRlcm5hbERlY29kZXJDZXN1OC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgcmVzID0gMDsKICAgIGlmICh0aGlzLmNvbnRCeXRlcyA+IDApCiAgICAgICAgcmVzICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlOwogICAgcmV0dXJuIHJlczsKfQoKCi8qKiovIH0pLAovKiAxNzMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKdmFyIEJ1ZmZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyOwoKLy8gTm90ZTogVVRGMTYtTEUgKG9yIFVDUzIpIGNvZGVjIGlzIE5vZGUuanMgbmF0aXZlLiBTZWUgZW5jb2RpbmdzL2ludGVybmFsLmpzCgovLyA9PSBVVEYxNi1CRSBjb2RlYy4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKZXhwb3J0cy51dGYxNmJlID0gVXRmMTZCRUNvZGVjOwpmdW5jdGlvbiBVdGYxNkJFQ29kZWMoKSB7Cn0KClV0ZjE2QkVDb2RlYy5wcm90b3R5cGUuZW5jb2RlciA9IFV0ZjE2QkVFbmNvZGVyOwpVdGYxNkJFQ29kZWMucHJvdG90eXBlLmRlY29kZXIgPSBVdGYxNkJFRGVjb2RlcjsKVXRmMTZCRUNvZGVjLnByb3RvdHlwZS5ib21Bd2FyZSA9IHRydWU7CgoKLy8gLS0gRW5jb2RpbmcKCmZ1bmN0aW9uIFV0ZjE2QkVFbmNvZGVyKCkgewp9CgpVdGYxNkJFRW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHsKICAgIHZhciBidWYgPSBuZXcgQnVmZmVyKHN0ciwgJ3VjczInKTsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSArPSAyKSB7CiAgICAgICAgdmFyIHRtcCA9IGJ1ZltpXTsgYnVmW2ldID0gYnVmW2krMV07IGJ1ZltpKzFdID0gdG1wOwogICAgfQogICAgcmV0dXJuIGJ1ZjsKfQoKVXRmMTZCRUVuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewp9CgoKLy8gLS0gRGVjb2RpbmcKCmZ1bmN0aW9uIFV0ZjE2QkVEZWNvZGVyKCkgewogICAgdGhpcy5vdmVyZmxvd0J5dGUgPSAtMTsKfQoKVXRmMTZCRURlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmKSB7CiAgICBpZiAoYnVmLmxlbmd0aCA9PSAwKQogICAgICAgIHJldHVybiAnJzsKCiAgICB2YXIgYnVmMiA9IG5ldyBCdWZmZXIoYnVmLmxlbmd0aCArIDEpLAogICAgICAgIGkgPSAwLCBqID0gMDsKCiAgICBpZiAodGhpcy5vdmVyZmxvd0J5dGUgIT09IC0xKSB7CiAgICAgICAgYnVmMlswXSA9IGJ1ZlswXTsKICAgICAgICBidWYyWzFdID0gdGhpcy5vdmVyZmxvd0J5dGU7CiAgICAgICAgaSA9IDE7IGogPSAyOwogICAgfQoKICAgIGZvciAoOyBpIDwgYnVmLmxlbmd0aC0xOyBpICs9IDIsIGorPSAyKSB7CiAgICAgICAgYnVmMltqXSA9IGJ1ZltpKzFdOwogICAgICAgIGJ1ZjJbaisxXSA9IGJ1ZltpXTsKICAgIH0KCiAgICB0aGlzLm92ZXJmbG93Qnl0ZSA9IChpID09IGJ1Zi5sZW5ndGgtMSkgPyBidWZbYnVmLmxlbmd0aC0xXSA6IC0xOwoKICAgIHJldHVybiBidWYyLnNsaWNlKDAsIGopLnRvU3RyaW5nKCd1Y3MyJyk7Cn0KClV0ZjE2QkVEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHsKfQoKCi8vID09IFVURi0xNiBjb2RlYyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIERlY29kZXIgY2hvb3NlcyBhdXRvbWF0aWNhbGx5IGZyb20gVVRGLTE2TEUgYW5kIFVURi0xNkJFIHVzaW5nIEJPTSBhbmQgc3BhY2UtYmFzZWQgaGV1cmlzdGljLgovLyBEZWZhdWx0cyB0byBVVEYtMTZMRSwgYXMgaXQncyBwcmV2YWxlbnQgYW5kIGRlZmF1bHQgaW4gTm9kZS4KLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtMTYgYW5kIGh0dHA6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvI3V0Zi0xNmxlCi8vIERlY29kZXIgZGVmYXVsdCBjYW4gYmUgY2hhbmdlZDogaWNvbnYuZGVjb2RlKGJ1ZiwgJ3V0ZjE2Jywge2RlZmF1bHRFbmNvZGluZzogJ3V0Zi0xNmJlJ30pOwoKLy8gRW5jb2RlciB1c2VzIFVURi0xNkxFIGFuZCBwcmVwZW5kcyBCT00gKHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggYWRkQk9NOiBmYWxzZSkuCgpleHBvcnRzLnV0ZjE2ID0gVXRmMTZDb2RlYzsKZnVuY3Rpb24gVXRmMTZDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7CiAgICB0aGlzLmljb252ID0gaWNvbnY7Cn0KClV0ZjE2Q29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBVdGYxNkVuY29kZXI7ClV0ZjE2Q29kZWMucHJvdG90eXBlLmRlY29kZXIgPSBVdGYxNkRlY29kZXI7CgoKLy8gLS0gRW5jb2RpbmcgKHBhc3MtdGhyb3VnaCkKCmZ1bmN0aW9uIFV0ZjE2RW5jb2RlcihvcHRpb25zLCBjb2RlYykgewogICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICBpZiAob3B0aW9ucy5hZGRCT00gPT09IHVuZGVmaW5lZCkKICAgICAgICBvcHRpb25zLmFkZEJPTSA9IHRydWU7CiAgICB0aGlzLmVuY29kZXIgPSBjb2RlYy5pY29udi5nZXRFbmNvZGVyKCd1dGYtMTZsZScsIG9wdGlvbnMpOwp9CgpVdGYxNkVuY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7CiAgICByZXR1cm4gdGhpcy5lbmNvZGVyLndyaXRlKHN0cik7Cn0KClV0ZjE2RW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpcy5lbmNvZGVyLmVuZCgpOwp9CgoKLy8gLS0gRGVjb2RpbmcKCmZ1bmN0aW9uIFV0ZjE2RGVjb2RlcihvcHRpb25zLCBjb2RlYykgewogICAgdGhpcy5kZWNvZGVyID0gbnVsbDsKICAgIHRoaXMuaW5pdGlhbEJ5dGVzID0gW107CiAgICB0aGlzLmluaXRpYWxCeXRlc0xlbiA9IDA7CgogICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjsKfQoKVXRmMTZEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZikgewogICAgaWYgKCF0aGlzLmRlY29kZXIpIHsKICAgICAgICAvLyBDb2RlYyBpcyBub3QgY2hvc2VuIHlldC4gQWNjdW11bGF0ZSBpbml0aWFsIGJ5dGVzLgogICAgICAgIHRoaXMuaW5pdGlhbEJ5dGVzLnB1c2goYnVmKTsKICAgICAgICB0aGlzLmluaXRpYWxCeXRlc0xlbiArPSBidWYubGVuZ3RoOwogICAgICAgIAogICAgICAgIGlmICh0aGlzLmluaXRpYWxCeXRlc0xlbiA8IDE2KSAvLyBXZSBuZWVkIG1vcmUgYnl0ZXMgdG8gdXNlIHNwYWNlIGhldXJpc3RpYyAoc2VlIGJlbG93KQogICAgICAgICAgICByZXR1cm4gJyc7CgogICAgICAgIC8vIFdlIGhhdmUgZW5vdWdoIGJ5dGVzIC0+IGRldGVjdCBlbmRpYW5uZXNzLgogICAgICAgIHZhciBidWYgPSBCdWZmZXIuY29uY2F0KHRoaXMuaW5pdGlhbEJ5dGVzKSwKICAgICAgICAgICAgZW5jb2RpbmcgPSBkZXRlY3RFbmNvZGluZyhidWYsIHRoaXMub3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcpOwogICAgICAgIHRoaXMuZGVjb2RlciA9IHRoaXMuaWNvbnYuZ2V0RGVjb2RlcihlbmNvZGluZywgdGhpcy5vcHRpb25zKTsKICAgICAgICB0aGlzLmluaXRpYWxCeXRlcy5sZW5ndGggPSB0aGlzLmluaXRpYWxCeXRlc0xlbiA9IDA7CiAgICB9CgogICAgcmV0dXJuIHRoaXMuZGVjb2Rlci53cml0ZShidWYpOwp9CgpVdGYxNkRlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewogICAgaWYgKCF0aGlzLmRlY29kZXIpIHsKICAgICAgICB2YXIgYnVmID0gQnVmZmVyLmNvbmNhdCh0aGlzLmluaXRpYWxCeXRlcyksCiAgICAgICAgICAgIGVuY29kaW5nID0gZGV0ZWN0RW5jb2RpbmcoYnVmLCB0aGlzLm9wdGlvbnMuZGVmYXVsdEVuY29kaW5nKTsKICAgICAgICB0aGlzLmRlY29kZXIgPSB0aGlzLmljb252LmdldERlY29kZXIoZW5jb2RpbmcsIHRoaXMub3B0aW9ucyk7CgogICAgICAgIHZhciByZXMgPSB0aGlzLmRlY29kZXIud3JpdGUoYnVmKSwKICAgICAgICAgICAgdHJhaWwgPSB0aGlzLmRlY29kZXIuZW5kKCk7CgogICAgICAgIHJldHVybiB0cmFpbCA/IChyZXMgKyB0cmFpbCkgOiByZXM7CiAgICB9CiAgICByZXR1cm4gdGhpcy5kZWNvZGVyLmVuZCgpOwp9CgpmdW5jdGlvbiBkZXRlY3RFbmNvZGluZyhidWYsIGRlZmF1bHRFbmNvZGluZykgewogICAgdmFyIGVuYyA9IGRlZmF1bHRFbmNvZGluZyB8fCAndXRmLTE2bGUnOwoKICAgIGlmIChidWYubGVuZ3RoID49IDIpIHsKICAgICAgICAvLyBDaGVjayBCT00uCiAgICAgICAgaWYgKGJ1ZlswXSA9PSAweEZFICYmIGJ1ZlsxXSA9PSAweEZGKSAvLyBVVEYtMTZCRSBCT00KICAgICAgICAgICAgZW5jID0gJ3V0Zi0xNmJlJzsKICAgICAgICBlbHNlIGlmIChidWZbMF0gPT0gMHhGRiAmJiBidWZbMV0gPT0gMHhGRSkgLy8gVVRGLTE2TEUgQk9NCiAgICAgICAgICAgIGVuYyA9ICd1dGYtMTZsZSc7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIE5vIEJPTSBmb3VuZC4gVHJ5IHRvIGRlZHVjZSBlbmNvZGluZyBmcm9tIGluaXRpYWwgY29udGVudC4KICAgICAgICAgICAgLy8gTW9zdCBvZiB0aGUgdGltZSwgdGhlIGNvbnRlbnQgaGFzIEFTQ0lJIGNoYXJzIChVKzAwKiopLCBidXQgdGhlIG9wcG9zaXRlIChVKyoqMDApIGlzIHVuY29tbW9uLgogICAgICAgICAgICAvLyBTbywgd2UgY291bnQgQVNDSUkgYXMgaWYgaXQgd2FzIExFIG9yIEJFLCBhbmQgZGVjaWRlIGZyb20gdGhhdC4KICAgICAgICAgICAgdmFyIGFzY2lpQ2hhcnNMRSA9IDAsIGFzY2lpQ2hhcnNCRSA9IDAsIC8vIENvdW50cyBvZiBjaGFycyBpbiBib3RoIHBvc2l0aW9ucwogICAgICAgICAgICAgICAgX2xlbiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSAoYnVmLmxlbmd0aCAlIDIpLCA2NCk7IC8vIExlbiBpcyBhbHdheXMgZXZlbi4KCiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX2xlbjsgaSArPSAyKSB7CiAgICAgICAgICAgICAgICBpZiAoYnVmW2ldID09PSAwICYmIGJ1ZltpKzFdICE9PSAwKSBhc2NpaUNoYXJzQkUrKzsKICAgICAgICAgICAgICAgIGlmIChidWZbaV0gIT09IDAgJiYgYnVmW2krMV0gPT09IDApIGFzY2lpQ2hhcnNMRSsrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoYXNjaWlDaGFyc0JFID4gYXNjaWlDaGFyc0xFKQogICAgICAgICAgICAgICAgZW5jID0gJ3V0Zi0xNmJlJzsKICAgICAgICAgICAgZWxzZSBpZiAoYXNjaWlDaGFyc0JFIDwgYXNjaWlDaGFyc0xFKQogICAgICAgICAgICAgICAgZW5jID0gJ3V0Zi0xNmxlJzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGVuYzsKfQoKCgoKLyoqKi8gfSksCi8qIDE3NCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cgp2YXIgQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXI7CgovLyBVVEYtNyBjb2RlYywgYWNjb3JkaW5nIHRvIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyMTUyCi8vIFNlZSBhbHNvIGJlbG93IGEgVVRGLTctSU1BUCBjb2RlYywgYWNjb3JkaW5nIHRvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM1MDEjc2VjdGlvbi01LjEuMwoKZXhwb3J0cy51dGY3ID0gVXRmN0NvZGVjOwpleHBvcnRzLnVuaWNvZGUxMXV0ZjcgPSAndXRmNyc7IC8vIEFsaWFzIFVOSUNPREUtMS0xLVVURi03CmZ1bmN0aW9uIFV0ZjdDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7CiAgICB0aGlzLmljb252ID0gaWNvbnY7Cn07CgpVdGY3Q29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBVdGY3RW5jb2RlcjsKVXRmN0NvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gVXRmN0RlY29kZXI7ClV0ZjdDb2RlYy5wcm90b3R5cGUuYm9tQXdhcmUgPSB0cnVlOwoKCi8vIC0tIEVuY29kaW5nCgp2YXIgbm9uRGlyZWN0Q2hhcnMgPSAvW15BLVphLXowLTknXChcKSwtXC5cLzpcPyBcblxyXHRdKy9nOwoKZnVuY3Rpb24gVXRmN0VuY29kZXIob3B0aW9ucywgY29kZWMpIHsKICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjsKfQoKVXRmN0VuY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7CiAgICAvLyBOYWl2ZSBpbXBsZW1lbnRhdGlvbi4KICAgIC8vIE5vbi1kaXJlY3QgY2hhcnMgYXJlIGVuY29kZWQgYXMgIis8YmFzZTY0Pi0iOyBzaW5nbGUgIisiIGNoYXIgaXMgZW5jb2RlZCBhcyAiKy0iLgogICAgcmV0dXJuIG5ldyBCdWZmZXIoc3RyLnJlcGxhY2Uobm9uRGlyZWN0Q2hhcnMsIGZ1bmN0aW9uKGNodW5rKSB7CiAgICAgICAgcmV0dXJuICIrIiArIChjaHVuayA9PT0gJysnID8gJycgOiAKICAgICAgICAgICAgdGhpcy5pY29udi5lbmNvZGUoY2h1bmssICd1dGYxNi1iZScpLnRvU3RyaW5nKCdiYXNlNjQnKS5yZXBsYWNlKC89KyQvLCAnJykpIAogICAgICAgICAgICArICItIjsKICAgIH0uYmluZCh0aGlzKSkpOwp9CgpVdGY3RW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7Cn0KCgovLyAtLSBEZWNvZGluZwoKZnVuY3Rpb24gVXRmN0RlY29kZXIob3B0aW9ucywgY29kZWMpIHsKICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjsKICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTsKICAgIHRoaXMuYmFzZTY0QWNjdW0gPSAnJzsKfQoKdmFyIGJhc2U2NFJlZ2V4ID0gL1tBLVphLXowLTlcLytdLzsKdmFyIGJhc2U2NENoYXJzID0gW107CmZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspCiAgICBiYXNlNjRDaGFyc1tpXSA9IGJhc2U2NFJlZ2V4LnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShpKSk7Cgp2YXIgcGx1c0NoYXIgPSAnKycuY2hhckNvZGVBdCgwKSwgCiAgICBtaW51c0NoYXIgPSAnLScuY2hhckNvZGVBdCgwKSwKICAgIGFuZENoYXIgPSAnJicuY2hhckNvZGVBdCgwKTsKClV0ZjdEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZikgewogICAgdmFyIHJlcyA9ICIiLCBsYXN0SSA9IDAsCiAgICAgICAgaW5CYXNlNjQgPSB0aGlzLmluQmFzZTY0LAogICAgICAgIGJhc2U2NEFjY3VtID0gdGhpcy5iYXNlNjRBY2N1bTsKCiAgICAvLyBUaGUgZGVjb2RlciBpcyBtb3JlIGludm9sdmVkIGFzIHdlIG11c3QgaGFuZGxlIGNodW5rcyBpbiBzdHJlYW0uCgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAoIWluQmFzZTY0KSB7IC8vIFdlJ3JlIGluIGRpcmVjdCBtb2RlLgogICAgICAgICAgICAvLyBXcml0ZSBkaXJlY3QgY2hhcnMgdW50aWwgJysnCiAgICAgICAgICAgIGlmIChidWZbaV0gPT0gcGx1c0NoYXIpIHsKICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmljb252LmRlY29kZShidWYuc2xpY2UobGFzdEksIGkpLCAiYXNjaWkiKTsgLy8gV3JpdGUgZGlyZWN0IGNoYXJzLgogICAgICAgICAgICAgICAgbGFzdEkgPSBpKzE7CiAgICAgICAgICAgICAgICBpbkJhc2U2NCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgeyAvLyBXZSBkZWNvZGUgYmFzZTY0LgogICAgICAgICAgICBpZiAoIWJhc2U2NENoYXJzW2J1ZltpXV0pIHsgLy8gQmFzZTY0IGVuZGVkLgogICAgICAgICAgICAgICAgaWYgKGkgPT0gbGFzdEkgJiYgYnVmW2ldID09IG1pbnVzQ2hhcikgey8vICIrLSIgLT4gIisiCiAgICAgICAgICAgICAgICAgICAgcmVzICs9ICIrIjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGI2NHN0ciA9IGJhc2U2NEFjY3VtICsgYnVmLnNsaWNlKGxhc3RJLCBpKS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmljb252LmRlY29kZShuZXcgQnVmZmVyKGI2NHN0ciwgJ2Jhc2U2NCcpLCAidXRmMTYtYmUiKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoYnVmW2ldICE9IG1pbnVzQ2hhcikgLy8gTWludXMgaXMgYWJzb3JiZWQgYWZ0ZXIgYmFzZTY0LgogICAgICAgICAgICAgICAgICAgIGktLTsKCiAgICAgICAgICAgICAgICBsYXN0SSA9IGkrMTsKICAgICAgICAgICAgICAgIGluQmFzZTY0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICBiYXNlNjRBY2N1bSA9ICcnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICghaW5CYXNlNjQpIHsKICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoYnVmLnNsaWNlKGxhc3RJKSwgImFzY2lpIik7IC8vIFdyaXRlIGRpcmVjdCBjaGFycy4KICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGI2NHN0ciA9IGJhc2U2NEFjY3VtICsgYnVmLnNsaWNlKGxhc3RJKS50b1N0cmluZygpOwoKICAgICAgICB2YXIgY2FuQmVEZWNvZGVkID0gYjY0c3RyLmxlbmd0aCAtIChiNjRzdHIubGVuZ3RoICUgOCk7IC8vIE1pbmltYWwgY2h1bms6IDIgcXVhZHMgLT4gMngzIGJ5dGVzIC0+IDMgY2hhcnMuCiAgICAgICAgYmFzZTY0QWNjdW0gPSBiNjRzdHIuc2xpY2UoY2FuQmVEZWNvZGVkKTsgLy8gVGhlIHJlc3Qgd2lsbCBiZSBkZWNvZGVkIGluIGZ1dHVyZS4KICAgICAgICBiNjRzdHIgPSBiNjRzdHIuc2xpY2UoMCwgY2FuQmVEZWNvZGVkKTsKCiAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKG5ldyBCdWZmZXIoYjY0c3RyLCAnYmFzZTY0JyksICJ1dGYxNi1iZSIpOwogICAgfQoKICAgIHRoaXMuaW5CYXNlNjQgPSBpbkJhc2U2NDsKICAgIHRoaXMuYmFzZTY0QWNjdW0gPSBiYXNlNjRBY2N1bTsKCiAgICByZXR1cm4gcmVzOwp9CgpVdGY3RGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7CiAgICB2YXIgcmVzID0gIiI7CiAgICBpZiAodGhpcy5pbkJhc2U2NCAmJiB0aGlzLmJhc2U2NEFjY3VtLmxlbmd0aCA+IDApCiAgICAgICAgcmVzID0gdGhpcy5pY29udi5kZWNvZGUobmV3IEJ1ZmZlcih0aGlzLmJhc2U2NEFjY3VtLCAnYmFzZTY0JyksICJ1dGYxNi1iZSIpOwoKICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTsKICAgIHRoaXMuYmFzZTY0QWNjdW0gPSAnJzsKICAgIHJldHVybiByZXM7Cn0KCgovLyBVVEYtNy1JTUFQIGNvZGVjLgovLyBSRkMzNTAxIFNlYy4gNS4xLjMgTW9kaWZpZWQgVVRGLTcgKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM1MDEjc2VjdGlvbi01LjEuMykKLy8gRGlmZmVyZW5jZXM6Ci8vICAqIEJhc2U2NCBwYXJ0IGlzIHN0YXJ0ZWQgYnkgIiYiIGluc3RlYWQgb2YgIisiCi8vICAqIERpcmVjdCBjaGFyYWN0ZXJzIGFyZSAweDIwLTB4N0UsIGV4Y2VwdCAiJiIgKDB4MjYpCi8vICAqIEluIEJhc2U2NCwgIiwiIGlzIHVzZWQgaW5zdGVhZCBvZiAiLyIKLy8gICogQmFzZTY0IG11c3Qgbm90IGJlIHVzZWQgdG8gcmVwcmVzZW50IGRpcmVjdCBjaGFyYWN0ZXJzLgovLyAgKiBObyBpbXBsaWNpdCBzaGlmdCBiYWNrIGZyb20gQmFzZTY0IChzaG91bGQgYWx3YXlzIGVuZCB3aXRoICctJykKLy8gICogU3RyaW5nIG11c3QgZW5kIGluIG5vbi1zaGlmdGVkIHBvc2l0aW9uLgovLyAgKiAiLSYiIHdoaWxlIGluIGJhc2U2NCBpcyBub3QgYWxsb3dlZC4KCgpleHBvcnRzLnV0ZjdpbWFwID0gVXRmN0lNQVBDb2RlYzsKZnVuY3Rpb24gVXRmN0lNQVBDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7CiAgICB0aGlzLmljb252ID0gaWNvbnY7Cn07CgpVdGY3SU1BUENvZGVjLnByb3RvdHlwZS5lbmNvZGVyID0gVXRmN0lNQVBFbmNvZGVyOwpVdGY3SU1BUENvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gVXRmN0lNQVBEZWNvZGVyOwpVdGY3SU1BUENvZGVjLnByb3RvdHlwZS5ib21Bd2FyZSA9IHRydWU7CgoKLy8gLS0gRW5jb2RpbmcKCmZ1bmN0aW9uIFV0ZjdJTUFQRW5jb2RlcihvcHRpb25zLCBjb2RlYykgewogICAgdGhpcy5pY29udiA9IGNvZGVjLmljb252OwogICAgdGhpcy5pbkJhc2U2NCA9IGZhbHNlOwogICAgdGhpcy5iYXNlNjRBY2N1bSA9IG5ldyBCdWZmZXIoNik7CiAgICB0aGlzLmJhc2U2NEFjY3VtSWR4ID0gMDsKfQoKVXRmN0lNQVBFbmNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikgewogICAgdmFyIGluQmFzZTY0ID0gdGhpcy5pbkJhc2U2NCwKICAgICAgICBiYXNlNjRBY2N1bSA9IHRoaXMuYmFzZTY0QWNjdW0sCiAgICAgICAgYmFzZTY0QWNjdW1JZHggPSB0aGlzLmJhc2U2NEFjY3VtSWR4LAogICAgICAgIGJ1ZiA9IG5ldyBCdWZmZXIoc3RyLmxlbmd0aCo1ICsgMTApLCBidWZJZHggPSAwOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIHVDaGFyID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaWYgKDB4MjAgPD0gdUNoYXIgJiYgdUNoYXIgPD0gMHg3RSkgeyAvLyBEaXJlY3QgY2hhcmFjdGVyIG9yICcmJy4KICAgICAgICAgICAgaWYgKGluQmFzZTY0KSB7CiAgICAgICAgICAgICAgICBpZiAoYmFzZTY0QWNjdW1JZHggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgYnVmSWR4ICs9IGJ1Zi53cml0ZShiYXNlNjRBY2N1bS5zbGljZSgwLCBiYXNlNjRBY2N1bUlkeCkudG9TdHJpbmcoJ2Jhc2U2NCcpLnJlcGxhY2UoL1wvL2csICcsJykucmVwbGFjZSgvPSskLywgJycpLCBidWZJZHgpOwogICAgICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtSWR4ID0gMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBidWZbYnVmSWR4KytdID0gbWludXNDaGFyOyAvLyBXcml0ZSAnLScsIHRoZW4gZ28gdG8gZGlyZWN0IG1vZGUuCiAgICAgICAgICAgICAgICBpbkJhc2U2NCA9IGZhbHNlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWluQmFzZTY0KSB7CiAgICAgICAgICAgICAgICBidWZbYnVmSWR4KytdID0gdUNoYXI7IC8vIFdyaXRlIGRpcmVjdCBjaGFyYWN0ZXIKCiAgICAgICAgICAgICAgICBpZiAodUNoYXIgPT09IGFuZENoYXIpICAvLyBBbXBlcnNhbmQgLT4gJyYtJwogICAgICAgICAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSBtaW51c0NoYXI7CiAgICAgICAgICAgIH0KCiAgICAgICAgfSBlbHNlIHsgLy8gTm9uLWRpcmVjdCBjaGFyYWN0ZXIKICAgICAgICAgICAgaWYgKCFpbkJhc2U2NCkgewogICAgICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IGFuZENoYXI7IC8vIFdyaXRlICcmJywgdGhlbiBnbyB0byBiYXNlNjQgbW9kZS4KICAgICAgICAgICAgICAgIGluQmFzZTY0ID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaW5CYXNlNjQpIHsKICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtW2Jhc2U2NEFjY3VtSWR4KytdID0gdUNoYXIgPj4gODsKICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtW2Jhc2U2NEFjY3VtSWR4KytdID0gdUNoYXIgJiAweEZGOwoKICAgICAgICAgICAgICAgIGlmIChiYXNlNjRBY2N1bUlkeCA9PSBiYXNlNjRBY2N1bS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBidWZJZHggKz0gYnVmLndyaXRlKGJhc2U2NEFjY3VtLnRvU3RyaW5nKCdiYXNlNjQnKS5yZXBsYWNlKC9cLy9nLCAnLCcpLCBidWZJZHgpOwogICAgICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtSWR4ID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICB0aGlzLmluQmFzZTY0ID0gaW5CYXNlNjQ7CiAgICB0aGlzLmJhc2U2NEFjY3VtSWR4ID0gYmFzZTY0QWNjdW1JZHg7CgogICAgcmV0dXJuIGJ1Zi5zbGljZSgwLCBidWZJZHgpOwp9CgpVdGY3SU1BUEVuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoMTApLCBidWZJZHggPSAwOwogICAgaWYgKHRoaXMuaW5CYXNlNjQpIHsKICAgICAgICBpZiAodGhpcy5iYXNlNjRBY2N1bUlkeCA+IDApIHsKICAgICAgICAgICAgYnVmSWR4ICs9IGJ1Zi53cml0ZSh0aGlzLmJhc2U2NEFjY3VtLnNsaWNlKDAsIHRoaXMuYmFzZTY0QWNjdW1JZHgpLnRvU3RyaW5nKCdiYXNlNjQnKS5yZXBsYWNlKC9cLy9nLCAnLCcpLnJlcGxhY2UoLz0rJC8sICcnKSwgYnVmSWR4KTsKICAgICAgICAgICAgdGhpcy5iYXNlNjRBY2N1bUlkeCA9IDA7CiAgICAgICAgfQoKICAgICAgICBidWZbYnVmSWR4KytdID0gbWludXNDaGFyOyAvLyBXcml0ZSAnLScsIHRoZW4gZ28gdG8gZGlyZWN0IG1vZGUuCiAgICAgICAgdGhpcy5pbkJhc2U2NCA9IGZhbHNlOwogICAgfQoKICAgIHJldHVybiBidWYuc2xpY2UoMCwgYnVmSWR4KTsKfQoKCi8vIC0tIERlY29kaW5nCgpmdW5jdGlvbiBVdGY3SU1BUERlY29kZXIob3B0aW9ucywgY29kZWMpIHsKICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjsKICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTsKICAgIHRoaXMuYmFzZTY0QWNjdW0gPSAnJzsKfQoKdmFyIGJhc2U2NElNQVBDaGFycyA9IGJhc2U2NENoYXJzLnNsaWNlKCk7CmJhc2U2NElNQVBDaGFyc1snLCcuY2hhckNvZGVBdCgwKV0gPSB0cnVlOwoKVXRmN0lNQVBEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZikgewogICAgdmFyIHJlcyA9ICIiLCBsYXN0SSA9IDAsCiAgICAgICAgaW5CYXNlNjQgPSB0aGlzLmluQmFzZTY0LAogICAgICAgIGJhc2U2NEFjY3VtID0gdGhpcy5iYXNlNjRBY2N1bTsKCiAgICAvLyBUaGUgZGVjb2RlciBpcyBtb3JlIGludm9sdmVkIGFzIHdlIG11c3QgaGFuZGxlIGNodW5rcyBpbiBzdHJlYW0uCiAgICAvLyBJdCBpcyBmb3JnaXZpbmcsIGNsb3NlciB0byBzdGFuZGFyZCBVVEYtNyAoZm9yIGV4YW1wbGUsICctJyBpcyBvcHRpb25hbCBhdCB0aGUgZW5kKS4KCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkrKykgewogICAgICAgIGlmICghaW5CYXNlNjQpIHsgLy8gV2UncmUgaW4gZGlyZWN0IG1vZGUuCiAgICAgICAgICAgIC8vIFdyaXRlIGRpcmVjdCBjaGFycyB1bnRpbCAnJicKICAgICAgICAgICAgaWYgKGJ1ZltpXSA9PSBhbmRDaGFyKSB7CiAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoYnVmLnNsaWNlKGxhc3RJLCBpKSwgImFzY2lpIik7IC8vIFdyaXRlIGRpcmVjdCBjaGFycy4KICAgICAgICAgICAgICAgIGxhc3RJID0gaSsxOwogICAgICAgICAgICAgICAgaW5CYXNlNjQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsgLy8gV2UgZGVjb2RlIGJhc2U2NC4KICAgICAgICAgICAgaWYgKCFiYXNlNjRJTUFQQ2hhcnNbYnVmW2ldXSkgeyAvLyBCYXNlNjQgZW5kZWQuCiAgICAgICAgICAgICAgICBpZiAoaSA9PSBsYXN0SSAmJiBidWZbaV0gPT0gbWludXNDaGFyKSB7IC8vICImLSIgLT4gIiYiCiAgICAgICAgICAgICAgICAgICAgcmVzICs9ICImIjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGI2NHN0ciA9IGJhc2U2NEFjY3VtICsgYnVmLnNsaWNlKGxhc3RJLCBpKS50b1N0cmluZygpLnJlcGxhY2UoLywvZywgJy8nKTsKICAgICAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUobmV3IEJ1ZmZlcihiNjRzdHIsICdiYXNlNjQnKSwgInV0ZjE2LWJlIik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGJ1ZltpXSAhPSBtaW51c0NoYXIpIC8vIE1pbnVzIG1heSBiZSBhYnNvcmJlZCBhZnRlciBiYXNlNjQuCiAgICAgICAgICAgICAgICAgICAgaS0tOwoKICAgICAgICAgICAgICAgIGxhc3RJID0gaSsxOwogICAgICAgICAgICAgICAgaW5CYXNlNjQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGJhc2U2NEFjY3VtID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCFpbkJhc2U2NCkgewogICAgICAgIHJlcyArPSB0aGlzLmljb252LmRlY29kZShidWYuc2xpY2UobGFzdEkpLCAiYXNjaWkiKTsgLy8gV3JpdGUgZGlyZWN0IGNoYXJzLgogICAgfSBlbHNlIHsKICAgICAgICB2YXIgYjY0c3RyID0gYmFzZTY0QWNjdW0gKyBidWYuc2xpY2UobGFzdEkpLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnLycpOwoKICAgICAgICB2YXIgY2FuQmVEZWNvZGVkID0gYjY0c3RyLmxlbmd0aCAtIChiNjRzdHIubGVuZ3RoICUgOCk7IC8vIE1pbmltYWwgY2h1bms6IDIgcXVhZHMgLT4gMngzIGJ5dGVzIC0+IDMgY2hhcnMuCiAgICAgICAgYmFzZTY0QWNjdW0gPSBiNjRzdHIuc2xpY2UoY2FuQmVEZWNvZGVkKTsgLy8gVGhlIHJlc3Qgd2lsbCBiZSBkZWNvZGVkIGluIGZ1dHVyZS4KICAgICAgICBiNjRzdHIgPSBiNjRzdHIuc2xpY2UoMCwgY2FuQmVEZWNvZGVkKTsKCiAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKG5ldyBCdWZmZXIoYjY0c3RyLCAnYmFzZTY0JyksICJ1dGYxNi1iZSIpOwogICAgfQoKICAgIHRoaXMuaW5CYXNlNjQgPSBpbkJhc2U2NDsKICAgIHRoaXMuYmFzZTY0QWNjdW0gPSBiYXNlNjRBY2N1bTsKCiAgICByZXR1cm4gcmVzOwp9CgpVdGY3SU1BUERlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkgewogICAgdmFyIHJlcyA9ICIiOwogICAgaWYgKHRoaXMuaW5CYXNlNjQgJiYgdGhpcy5iYXNlNjRBY2N1bS5sZW5ndGggPiAwKQogICAgICAgIHJlcyA9IHRoaXMuaWNvbnYuZGVjb2RlKG5ldyBCdWZmZXIodGhpcy5iYXNlNjRBY2N1bSwgJ2Jhc2U2NCcpLCAidXRmMTYtYmUiKTsKCiAgICB0aGlzLmluQmFzZTY0ID0gZmFsc2U7CiAgICB0aGlzLmJhc2U2NEFjY3VtID0gJyc7CiAgICByZXR1cm4gcmVzOwp9CgoKCgovKioqLyB9KSwKLyogMTc1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCnZhciBCdWZmZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlcjsKCi8vIFNpbmdsZS1ieXRlIGNvZGVjLiBOZWVkcyBhICdjaGFycycgc3RyaW5nIHBhcmFtZXRlciB0aGF0IGNvbnRhaW5zIDI1NiBvciAxMjggY2hhcnMgdGhhdAovLyBjb3JyZXNwb25kIHRvIGVuY29kZWQgYnl0ZXMgKGlmIDEyOCAtIHRoZW4gbG93ZXIgaGFsZiBpcyBBU0NJSSkuIAoKZXhwb3J0cy5fc2JjcyA9IFNCQ1NDb2RlYzsKZnVuY3Rpb24gU0JDU0NvZGVjKGNvZGVjT3B0aW9ucywgaWNvbnYpIHsKICAgIGlmICghY29kZWNPcHRpb25zKQogICAgICAgIHRocm93IG5ldyBFcnJvcigiU0JDUyBjb2RlYyBpcyBjYWxsZWQgd2l0aG91dCB0aGUgZGF0YS4iKQogICAgCiAgICAvLyBQcmVwYXJlIGNoYXIgYnVmZmVyIGZvciBkZWNvZGluZy4KICAgIGlmICghY29kZWNPcHRpb25zLmNoYXJzIHx8IChjb2RlY09wdGlvbnMuY2hhcnMubGVuZ3RoICE9PSAxMjggJiYgY29kZWNPcHRpb25zLmNoYXJzLmxlbmd0aCAhPT0gMjU2KSkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nICciK2NvZGVjT3B0aW9ucy50eXBlKyInIGhhcyBpbmNvcnJlY3QgJ2NoYXJzJyAobXVzdCBiZSBvZiBsZW4gMTI4IG9yIDI1NikiKTsKICAgIAogICAgaWYgKGNvZGVjT3B0aW9ucy5jaGFycy5sZW5ndGggPT09IDEyOCkgewogICAgICAgIHZhciBhc2NpaVN0cmluZyA9ICIiOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTI4OyBpKyspCiAgICAgICAgICAgIGFzY2lpU3RyaW5nICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7CiAgICAgICAgY29kZWNPcHRpb25zLmNoYXJzID0gYXNjaWlTdHJpbmcgKyBjb2RlY09wdGlvbnMuY2hhcnM7CiAgICB9CgogICAgdGhpcy5kZWNvZGVCdWYgPSBuZXcgQnVmZmVyKGNvZGVjT3B0aW9ucy5jaGFycywgJ3VjczInKTsKICAgIAogICAgLy8gRW5jb2RpbmcgYnVmZmVyLgogICAgdmFyIGVuY29kZUJ1ZiA9IG5ldyBCdWZmZXIoNjU1MzYpOwogICAgZW5jb2RlQnVmLmZpbGwoaWNvbnYuZGVmYXVsdENoYXJTaW5nbGVCeXRlLmNoYXJDb2RlQXQoMCkpOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZWNPcHRpb25zLmNoYXJzLmxlbmd0aDsgaSsrKQogICAgICAgIGVuY29kZUJ1Zltjb2RlY09wdGlvbnMuY2hhcnMuY2hhckNvZGVBdChpKV0gPSBpOwoKICAgIHRoaXMuZW5jb2RlQnVmID0gZW5jb2RlQnVmOwp9CgpTQkNTQ29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBTQkNTRW5jb2RlcjsKU0JDU0NvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gU0JDU0RlY29kZXI7CgoKZnVuY3Rpb24gU0JDU0VuY29kZXIob3B0aW9ucywgY29kZWMpIHsKICAgIHRoaXMuZW5jb2RlQnVmID0gY29kZWMuZW5jb2RlQnVmOwp9CgpTQkNTRW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHsKICAgIHZhciBidWYgPSBuZXcgQnVmZmVyKHN0ci5sZW5ndGgpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspCiAgICAgICAgYnVmW2ldID0gdGhpcy5lbmNvZGVCdWZbc3RyLmNoYXJDb2RlQXQoaSldOwogICAgCiAgICByZXR1cm4gYnVmOwp9CgpTQkNTRW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7Cn0KCgpmdW5jdGlvbiBTQkNTRGVjb2RlcihvcHRpb25zLCBjb2RlYykgewogICAgdGhpcy5kZWNvZGVCdWYgPSBjb2RlYy5kZWNvZGVCdWY7Cn0KClNCQ1NEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1ZikgewogICAgLy8gU3RyaW5ncyBhcmUgaW1tdXRhYmxlIGluIEpTIC0+IHdlIHVzZSB1Y3MyIGJ1ZmZlciB0byBzcGVlZCB1cCBjb21wdXRhdGlvbnMuCiAgICB2YXIgZGVjb2RlQnVmID0gdGhpcy5kZWNvZGVCdWY7CiAgICB2YXIgbmV3QnVmID0gbmV3IEJ1ZmZlcihidWYubGVuZ3RoKjIpOwogICAgdmFyIGlkeDEgPSAwLCBpZHgyID0gMDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgaWR4MSA9IGJ1ZltpXSoyOyBpZHgyID0gaSoyOwogICAgICAgIG5ld0J1ZltpZHgyXSA9IGRlY29kZUJ1ZltpZHgxXTsKICAgICAgICBuZXdCdWZbaWR4MisxXSA9IGRlY29kZUJ1ZltpZHgxKzFdOwogICAgfQogICAgcmV0dXJuIG5ld0J1Zi50b1N0cmluZygndWNzMicpOwp9CgpTQkNTRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7Cn0KCgovKioqLyB9KSwKLyogMTc2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyBNYW51YWxseSBhZGRlZCBkYXRhIHRvIGJlIHVzZWQgYnkgc2JjcyBjb2RlYyBpbiBhZGRpdGlvbiB0byBnZW5lcmF0ZWQgb25lLgoKbW9kdWxlLmV4cG9ydHMgPSB7CiAgICAvLyBOb3Qgc3VwcG9ydGVkIGJ5IGljb252LCBub3Qgc3VyZSB3aHkuCiAgICAiMTAwMjkiOiAibWFjY2VudGV1cm8iLAogICAgIm1hY2NlbnRldXJvIjogewogICAgICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICAgICAiY2hhcnMiOiAiw4TEgMSBw4nEhMOWw5zDocSFxIzDpMSNxIbEh8OpxbnFusSOw63Ej8SSxJPElsOzxJfDtMO2w7XDusSaxJvDvOKAoMKwxJjCo8Kn4oCiwrbDn8KuwqnihKLEmcKo4omgxKPErsSvxKriiaTiiaXEq8S24oiC4oiRxYLEu8S8xL3EvsS5xLrFhcWGxYPCrOKImsWExYfiiIbCq8K74oCmwqDFiMWQw5XFkcWM4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rFjcWUxZXFmOKAueKAusWZxZbFl8Wg4oCa4oCexaHFmsWbw4HFpMWlw43FvcW+xarDk8OUxavFrsOaxa/FsMWxxbLFs8Odw73Et8W7xYHFvMSiy4ciCiAgICB9LAoKICAgICI4MDgiOiAiY3A4MDgiLAogICAgImlibTgwOCI6ICJjcDgwOCIsCiAgICAiY3A4MDgiOiB7CiAgICAgICAgInR5cGUiOiAiX3NiY3MiLAogICAgICAgICJjaGFycyI6ICLQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/ilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDRgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj9CB0ZHQhNGU0IfRl9CO0Z7CsOKImcK34oia4oSW4oKs4pagwqAiCiAgICB9LAoKICAgIC8vIEFsaWFzZXMgb2YgZ2VuZXJhdGVkIGVuY29kaW5ncy4KICAgICJhc2NpaThiaXQiOiAiYXNjaWkiLAogICAgInVzYXNjaWkiOiAiYXNjaWkiLAogICAgImFuc2l4MzQiOiAiYXNjaWkiLAogICAgImFuc2l4MzQxOTY4IjogImFzY2lpIiwKICAgICJhbnNpeDM0MTk4NiI6ICJhc2NpaSIsCiAgICAiY3Nhc2NpaSI6ICJhc2NpaSIsCiAgICAiY3AzNjciOiAiYXNjaWkiLAogICAgImlibTM2NyI6ICJhc2NpaSIsCiAgICAiaXNvaXI2IjogImFzY2lpIiwKICAgICJpc282NDZ1cyI6ICJhc2NpaSIsCiAgICAiaXNvNjQ2aXJ2IjogImFzY2lpIiwKICAgICJ1cyI6ICJhc2NpaSIsCgogICAgImxhdGluMSI6ICJpc284ODU5MSIsCiAgICAibGF0aW4yIjogImlzbzg4NTkyIiwKICAgICJsYXRpbjMiOiAiaXNvODg1OTMiLAogICAgImxhdGluNCI6ICJpc284ODU5NCIsCiAgICAibGF0aW41IjogImlzbzg4NTk5IiwKICAgICJsYXRpbjYiOiAiaXNvODg1OTEwIiwKICAgICJsYXRpbjciOiAiaXNvODg1OTEzIiwKICAgICJsYXRpbjgiOiAiaXNvODg1OTE0IiwKICAgICJsYXRpbjkiOiAiaXNvODg1OTE1IiwKICAgICJsYXRpbjEwIjogImlzbzg4NTkxNiIsCgogICAgImNzaXNvbGF0aW4xIjogImlzbzg4NTkxIiwKICAgICJjc2lzb2xhdGluMiI6ICJpc284ODU5MiIsCiAgICAiY3Npc29sYXRpbjMiOiAiaXNvODg1OTMiLAogICAgImNzaXNvbGF0aW40IjogImlzbzg4NTk0IiwKICAgICJjc2lzb2xhdGluY3lyaWxsaWMiOiAiaXNvODg1OTUiLAogICAgImNzaXNvbGF0aW5hcmFiaWMiOiAiaXNvODg1OTYiLAogICAgImNzaXNvbGF0aW5ncmVlayIgOiAiaXNvODg1OTciLAogICAgImNzaXNvbGF0aW5oZWJyZXciOiAiaXNvODg1OTgiLAogICAgImNzaXNvbGF0aW41IjogImlzbzg4NTk5IiwKICAgICJjc2lzb2xhdGluNiI6ICJpc284ODU5MTAiLAoKICAgICJsMSI6ICJpc284ODU5MSIsCiAgICAibDIiOiAiaXNvODg1OTIiLAogICAgImwzIjogImlzbzg4NTkzIiwKICAgICJsNCI6ICJpc284ODU5NCIsCiAgICAibDUiOiAiaXNvODg1OTkiLAogICAgImw2IjogImlzbzg4NTkxMCIsCiAgICAibDciOiAiaXNvODg1OTEzIiwKICAgICJsOCI6ICJpc284ODU5MTQiLAogICAgImw5IjogImlzbzg4NTkxNSIsCiAgICAibDEwIjogImlzbzg4NTkxNiIsCgogICAgImlzb2lyMTQiOiAiaXNvNjQ2anAiLAogICAgImlzb2lyNTciOiAiaXNvNjQ2Y24iLAogICAgImlzb2lyMTAwIjogImlzbzg4NTkxIiwKICAgICJpc29pcjEwMSI6ICJpc284ODU5MiIsCiAgICAiaXNvaXIxMDkiOiAiaXNvODg1OTMiLAogICAgImlzb2lyMTEwIjogImlzbzg4NTk0IiwKICAgICJpc29pcjE0NCI6ICJpc284ODU5NSIsCiAgICAiaXNvaXIxMjciOiAiaXNvODg1OTYiLAogICAgImlzb2lyMTI2IjogImlzbzg4NTk3IiwKICAgICJpc29pcjEzOCI6ICJpc284ODU5OCIsCiAgICAiaXNvaXIxNDgiOiAiaXNvODg1OTkiLAogICAgImlzb2lyMTU3IjogImlzbzg4NTkxMCIsCiAgICAiaXNvaXIxNjYiOiAidGlzNjIwIiwKICAgICJpc29pcjE3OSI6ICJpc284ODU5MTMiLAogICAgImlzb2lyMTk5IjogImlzbzg4NTkxNCIsCiAgICAiaXNvaXIyMDMiOiAiaXNvODg1OTE1IiwKICAgICJpc29pcjIyNiI6ICJpc284ODU5MTYiLAoKICAgICJjcDgxOSI6ICJpc284ODU5MSIsCiAgICAiaWJtODE5IjogImlzbzg4NTkxIiwKCiAgICAiY3lyaWxsaWMiOiAiaXNvODg1OTUiLAoKICAgICJhcmFiaWMiOiAiaXNvODg1OTYiLAogICAgImFyYWJpYzgiOiAiaXNvODg1OTYiLAogICAgImVjbWExMTQiOiAiaXNvODg1OTYiLAogICAgImFzbW83MDgiOiAiaXNvODg1OTYiLAoKICAgICJncmVlayIgOiAiaXNvODg1OTciLAogICAgImdyZWVrOCIgOiAiaXNvODg1OTciLAogICAgImVjbWExMTgiIDogImlzbzg4NTk3IiwKICAgICJlbG90OTI4IiA6ICJpc284ODU5NyIsCgogICAgImhlYnJldyI6ICJpc284ODU5OCIsCiAgICAiaGVicmV3OCI6ICJpc284ODU5OCIsCgogICAgInR1cmtpc2giOiAiaXNvODg1OTkiLAogICAgInR1cmtpc2g4IjogImlzbzg4NTk5IiwKCiAgICAidGhhaSI6ICJpc284ODU5MTEiLAogICAgInRoYWk4IjogImlzbzg4NTkxMSIsCgogICAgImNlbHRpYyI6ICJpc284ODU5MTQiLAogICAgImNlbHRpYzgiOiAiaXNvODg1OTE0IiwKICAgICJpc29jZWx0aWMiOiAiaXNvODg1OTE0IiwKCiAgICAidGlzNjIwMCI6ICJ0aXM2MjAiLAogICAgInRpczYyMDI1MjkxIjogInRpczYyMCIsCiAgICAidGlzNjIwMjUzMzAiOiAidGlzNjIwIiwKCiAgICAiMTAwMDAiOiAibWFjcm9tYW4iLAogICAgIjEwMDA2IjogIm1hY2dyZWVrIiwKICAgICIxMDAwNyI6ICJtYWNjeXJpbGxpYyIsCiAgICAiMTAwNzkiOiAibWFjaWNlbGFuZCIsCiAgICAiMTAwODEiOiAibWFjdHVya2lzaCIsCgogICAgImNzcGM4Y29kZXBhZ2U0MzciOiAiY3A0MzciLAogICAgImNzcGM3NzViYWx0aWMiOiAiY3A3NzUiLAogICAgImNzcGM4NTBtdWx0aWxpbmd1YWwiOiAiY3A4NTAiLAogICAgImNzcGNwODUyIjogImNwODUyIiwKICAgICJjc3BjODYybGF0aW5oZWJyZXciOiAiY3A4NjIiLAogICAgImNwZ3IiOiAiY3A4NjkiLAoKICAgICJtc2VlIjogImNwMTI1MCIsCiAgICAibXNjeXJsIjogImNwMTI1MSIsCiAgICAibXNhbnNpIjogImNwMTI1MiIsCiAgICAibXNncmVlayI6ICJjcDEyNTMiLAogICAgIm1zdHVyayI6ICJjcDEyNTQiLAogICAgIm1zaGViciI6ICJjcDEyNTUiLAogICAgIm1zYXJhYiI6ICJjcDEyNTYiLAogICAgIndpbmJhbHRyaW0iOiAiY3AxMjU3IiwKCiAgICAiY3AyMDg2NiI6ICJrb2k4ciIsCiAgICAiMjA4NjYiOiAia29pOHIiLAogICAgImlibTg3OCI6ICJrb2k4ciIsCiAgICAiY3Nrb2k4ciI6ICJrb2k4ciIsCgogICAgImNwMjE4NjYiOiAia29pOHUiLAogICAgIjIxODY2IjogImtvaTh1IiwKICAgICJpYm0xMTY4IjogImtvaTh1IiwKCiAgICAic3RyazEwNDgyMDAyIjogInJrMTA0OCIsCgogICAgInRjdm41NzEyIjogInRjdm4iLAogICAgInRjdm41NzEyMSI6ICJ0Y3ZuIiwKCiAgICAiZ2IxOTg4ODAiOiAiaXNvNjQ2Y24iLAogICAgImNuIjogImlzbzY0NmNuIiwKCiAgICAiY3Npc28xNGppc2M2MjIwcm8iOiAiaXNvNjQ2anAiLAogICAgImppc2M2MjIwMTk2OXJvIjogImlzbzY0NmpwIiwKICAgICJqcCI6ICJpc282NDZqcCIsCgogICAgImNzaHByb21hbjgiOiAiaHByb21hbjgiLAogICAgInI4IjogImhwcm9tYW44IiwKICAgICJyb21hbjgiOiAiaHByb21hbjgiLAogICAgInhyb21hbjgiOiAiaHByb21hbjgiLAogICAgImlibTEwNTEiOiAiaHByb21hbjgiLAoKICAgICJtYWMiOiAibWFjaW50b3NoIiwKICAgICJjc21hY2ludG9zaCI6ICJtYWNpbnRvc2giLAp9OwoKCgovKioqLyB9KSwKLyogMTc3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgovLyBHZW5lcmF0ZWQgZGF0YSBmb3Igc2JjcyBjb2RlYy4gRG9uJ3QgZWRpdCBtYW51YWxseS4gUmVnZW5lcmF0ZSB1c2luZyBnZW5lcmF0aW9uL2dlbi1zYmNzLmpzIHNjcmlwdC4KbW9kdWxlLmV4cG9ydHMgPSB7CiAgIjQzNyI6ICJjcDQzNyIsCiAgIjczNyI6ICJjcDczNyIsCiAgIjc3NSI6ICJjcDc3NSIsCiAgIjg1MCI6ICJjcDg1MCIsCiAgIjg1MiI6ICJjcDg1MiIsCiAgIjg1NSI6ICJjcDg1NSIsCiAgIjg1NiI6ICJjcDg1NiIsCiAgIjg1NyI6ICJjcDg1NyIsCiAgIjg1OCI6ICJjcDg1OCIsCiAgIjg2MCI6ICJjcDg2MCIsCiAgIjg2MSI6ICJjcDg2MSIsCiAgIjg2MiI6ICJjcDg2MiIsCiAgIjg2MyI6ICJjcDg2MyIsCiAgIjg2NCI6ICJjcDg2NCIsCiAgIjg2NSI6ICJjcDg2NSIsCiAgIjg2NiI6ICJjcDg2NiIsCiAgIjg2OSI6ICJjcDg2OSIsCiAgIjg3NCI6ICJ3aW5kb3dzODc0IiwKICAiOTIyIjogImNwOTIyIiwKICAiMTA0NiI6ICJjcDEwNDYiLAogICIxMTI0IjogImNwMTEyNCIsCiAgIjExMjUiOiAiY3AxMTI1IiwKICAiMTEyOSI6ICJjcDExMjkiLAogICIxMTMzIjogImNwMTEzMyIsCiAgIjExNjEiOiAiY3AxMTYxIiwKICAiMTE2MiI6ICJjcDExNjIiLAogICIxMTYzIjogImNwMTE2MyIsCiAgIjEyNTAiOiAid2luZG93czEyNTAiLAogICIxMjUxIjogIndpbmRvd3MxMjUxIiwKICAiMTI1MiI6ICJ3aW5kb3dzMTI1MiIsCiAgIjEyNTMiOiAid2luZG93czEyNTMiLAogICIxMjU0IjogIndpbmRvd3MxMjU0IiwKICAiMTI1NSI6ICJ3aW5kb3dzMTI1NSIsCiAgIjEyNTYiOiAid2luZG93czEyNTYiLAogICIxMjU3IjogIndpbmRvd3MxMjU3IiwKICAiMTI1OCI6ICJ3aW5kb3dzMTI1OCIsCiAgIjI4NTkxIjogImlzbzg4NTkxIiwKICAiMjg1OTIiOiAiaXNvODg1OTIiLAogICIyODU5MyI6ICJpc284ODU5MyIsCiAgIjI4NTk0IjogImlzbzg4NTk0IiwKICAiMjg1OTUiOiAiaXNvODg1OTUiLAogICIyODU5NiI6ICJpc284ODU5NiIsCiAgIjI4NTk3IjogImlzbzg4NTk3IiwKICAiMjg1OTgiOiAiaXNvODg1OTgiLAogICIyODU5OSI6ICJpc284ODU5OSIsCiAgIjI4NjAwIjogImlzbzg4NTkxMCIsCiAgIjI4NjAxIjogImlzbzg4NTkxMSIsCiAgIjI4NjAzIjogImlzbzg4NTkxMyIsCiAgIjI4NjA0IjogImlzbzg4NTkxNCIsCiAgIjI4NjA1IjogImlzbzg4NTkxNSIsCiAgIjI4NjA2IjogImlzbzg4NTkxNiIsCiAgIndpbmRvd3M4NzQiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi4oKs77+977+977+977+94oCm77+977+977+977+977+977+977+977+977+977+977+94oCY4oCZ4oCc4oCd4oCi4oCT4oCU77+977+977+977+977+977+977+977+9wqDguIHguILguIPguITguIXguIbguIfguIjguInguIrguIvguIzguI3guI7guI/guJDguJHguJLguJPguJTguJXguJbguJfguJjguJnguJrguJvguJzguJ3guJ7guJ/guKDguKHguKLguKPguKTguKXguKbguKfguKjguKnguKrguKvguKzguK3guK7guK/guLDguLHguLLguLPguLTguLXguLbguLfguLjguLnguLrvv73vv73vv73vv73guL/guYDguYHguYLguYPguYTguYXguYbguYfguYjguYnguYrguYvguYzguY3guY7guY/guZDguZHguZLguZPguZTguZXguZbguZfguZjguZnguZrguZvvv73vv73vv73vv70iCiAgfSwKICAid2luODc0IjogIndpbmRvd3M4NzQiLAogICJjcDg3NCI6ICJ3aW5kb3dzODc0IiwKICAid2luZG93czEyNTAiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi4oKs77+94oCa77+94oCe4oCm4oCg4oCh77+94oCwxaDigLnFmsWkxb3Fue+/veKAmOKAmeKAnOKAneKAouKAk+KAlO+/veKEosWh4oC6xZvFpcW+xbrCoMuHy5jFgcKkxITCpsKnwqjCqcWewqvCrMKtwq7Fu8KwwrHLm8WCwrTCtcK2wrfCuMSFxZ/Cu8S9y53EvsW8xZTDgcOCxILDhMS5xIbDh8SMw4nEmMOLxJrDjcOOxI7EkMWDxYfDk8OUxZDDlsOXxZjFrsOaxbDDnMOdxaLDn8WVw6HDosSDw6TEusSHw6fEjcOpxJnDq8Sbw63DrsSPxJHFhMWIw7PDtMWRw7bDt8WZxa/DusWxw7zDvcWjy5kiCiAgfSwKICAid2luMTI1MCI6ICJ3aW5kb3dzMTI1MCIsCiAgImNwMTI1MCI6ICJ3aW5kb3dzMTI1MCIsCiAgIndpbmRvd3MxMjUxIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogItCC0IPigJrRk+KAnuKApuKAoOKAoeKCrOKAsNCJ4oC50IrQjNCL0I/RkuKAmOKAmeKAnOKAneKAouKAk+KAlO+/veKEotGZ4oC60ZrRnNGb0Z/CoNCO0Z7QiMKk0pDCpsKn0IHCqdCEwqvCrMKtwq7Qh8KwwrHQhtGW0pHCtcK2wrfRkeKEltGUwrvRmNCF0ZXRl9CQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGPIgogIH0sCiAgIndpbjEyNTEiOiAid2luZG93czEyNTEiLAogICJjcDEyNTEiOiAid2luZG93czEyNTEiLAogICJ3aW5kb3dzMTI1MiI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLigqzvv73igJrGkuKAnuKApuKAoOKAocuG4oCwxaDigLnFku+/vcW977+977+94oCY4oCZ4oCc4oCd4oCi4oCT4oCUy5zihKLFoeKAusWT77+9xb7FuMKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8OQw5HDksOTw5TDlcOWw5fDmMOZw5rDm8Ocw53DnsOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/DsMOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9w77DvyIKICB9LAogICJ3aW4xMjUyIjogIndpbmRvd3MxMjUyIiwKICAiY3AxMjUyIjogIndpbmRvd3MxMjUyIiwKICAid2luZG93czEyNTMiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi4oKs77+94oCaxpLigJ7igKbigKDigKHvv73igLDvv73igLnvv73vv73vv73vv73vv73igJjigJnigJzigJ3igKLigJPigJTvv73ihKLvv73igLrvv73vv73vv73vv73CoM6FzobCo8KkwqXCpsKnwqjCqe+/vcKrwqzCrcKu4oCVwrDCscKywrPOhMK1wrbCt86IzonOisK7zozCvc6Ozo/OkM6RzpLOk86UzpXOls6XzpjOmc6azpvOnM6dzp7On86gzqHvv73Oo86kzqXOps6nzqjOqc6qzqvOrM6tzq7Or86wzrHOss6zzrTOtc62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Cz4PPhM+Fz4bPh8+Iz4nPis+Lz4zPjc+O77+9IgogIH0sCiAgIndpbjEyNTMiOiAid2luZG93czEyNTMiLAogICJjcDEyNTMiOiAid2luZG93czEyNTMiLAogICJ3aW5kb3dzMTI1NCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLigqzvv73igJrGkuKAnuKApuKAoOKAocuG4oCwxaDigLnFku+/ve+/ve+/ve+/veKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSixaHigLrFk++/ve+/vcW4wqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPxJ7DkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zEsMWew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Sfw7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8xLHFn8O/IgogIH0sCiAgIndpbjEyNTQiOiAid2luZG93czEyNTQiLAogICJjcDEyNTQiOiAid2luZG93czEyNTQiLAogICJ3aW5kb3dzMTI1NSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLigqzvv73igJrGkuKAnuKApuKAoOKAocuG4oCw77+94oC577+977+977+977+977+94oCY4oCZ4oCc4oCd4oCi4oCT4oCUy5zihKLvv73igLrvv73vv73vv73vv73CoMKhwqLCo+KCqsKlwqbCp8KowqnDl8KrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucO3wrvCvMK9wr7Cv9aw1rHWstaz1rTWtda21rfWuNa51rrWu9a81r3Wvta/14DXgdeC14PXsNex17LXs9e077+977+977+977+977+977+977+915DXkdeS15PXlNeV15bXl9eY15nXmteb15zXndee15/XoNeh16LXo9ek16XXpten16jXqdeq77+977+94oCO4oCP77+9IgogIH0sCiAgIndpbjEyNTUiOiAid2luZG93czEyNTUiLAogICJjcDEyNTUiOiAid2luZG93czEyNTUiLAogICJ3aW5kb3dzMTI1NiI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLigqzZvuKAmsaS4oCe4oCm4oCg4oChy4bigLDZueKAucWS2obamNqI2q/igJjigJnigJzigJ3igKLigJPigJTaqeKEotqR4oC6xZPigIzigI3ausKg2IzCosKjwqTCpcKmwqfCqMKp2r7Cq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnYm8K7wrzCvcK+2J/bgdih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi2w5fYt9i42LnYutmA2YHZgtmDw6DZhMOi2YXZhtmH2YjDp8Oow6nDqsOr2YnZisOuw6/Zi9mM2Y3ZjsO02Y/ZkMO32ZHDudmSw7vDvOKAjuKAj9uSIgogIH0sCiAgIndpbjEyNTYiOiAid2luZG93czEyNTYiLAogICJjcDEyNTYiOiAid2luZG93czEyNTYiLAogICJ3aW5kb3dzMTI1NyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLigqzvv73igJrvv73igJ7igKbigKDigKHvv73igLDvv73igLnvv73CqMuHwrjvv73igJjigJnigJzigJ3igKLigJPigJTvv73ihKLvv73igLrvv73Cr8ub77+9wqDvv73CosKjwqTvv73CpsKnw5jCqcWWwqvCrMKtwq7DhsKwwrHCssKzwrTCtcK2wrfDuMK5xZfCu8K8wr3CvsOmxITErsSAxIbDhMOFxJjEksSMw4nFucSWxKLEtsSqxLvFoMWDxYXDk8WMw5XDlsOXxbLFgcWaxarDnMW7xb3Dn8SFxK/EgcSHw6TDpcSZxJPEjcOpxbrEl8SjxLfEq8S8xaHFhMWGw7PFjcO1w7bDt8WzxYLFm8Wrw7zFvMW+y5kiCiAgfSwKICAid2luMTI1NyI6ICJ3aW5kb3dzMTI1NyIsCiAgImNwMTI1NyI6ICJ3aW5kb3dzMTI1NyIsCiAgIndpbmRvd3MxMjU4IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIuKCrO+/veKAmsaS4oCe4oCm4oCg4oChy4bigLDvv73igLnFku+/ve+/ve+/ve+/veKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSi77+94oC6xZPvv73vv73FuMKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LEgsOEw4XDhsOHw4jDicOKw4vMgMONw47Dj8SQw5HMicOTw5TGoMOWw5fDmMOZw5rDm8Ocxq/Mg8Ofw6DDocOixIPDpMOlw6bDp8Oow6nDqsOrzIHDrcOuw6/EkcOxzKPDs8O0xqHDtsO3w7jDucO6w7vDvMaw4oKrw78iCiAgfSwKICAid2luMTI1OCI6ICJ3aW5kb3dzMTI1OCIsCiAgImNwMTI1OCI6ICJ3aW5kb3dzMTI1OCIsCiAgImlzbzg4NTkxIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w78iCiAgfSwKICAiY3AyODU5MSI6ICJpc284ODU5MSIsCiAgImlzbzg4NTkyIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMSEy5jFgcKkxL3FmsKnwqjFoMWexaTFucKtxb3Fu8KwxIXLm8WCwrTEvsWby4fCuMWhxZ/FpcW6y53FvsW8xZTDgcOCxILDhMS5xIbDh8SMw4nEmMOLxJrDjcOOxI7EkMWDxYfDk8OUxZDDlsOXxZjFrsOaxbDDnMOdxaLDn8WVw6HDosSDw6TEusSHw6fEjcOpxJnDq8Sbw63DrsSPxJHFhMWIw7PDtMWRw7bDt8WZxa/DusWxw7zDvcWjy5kiCiAgfSwKICAiY3AyODU5MiI6ICJpc284ODU5MiIsCiAgImlzbzg4NTkzIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMSmy5jCo8Kk77+9xKTCp8KoxLDFnsSexLTCre+/vcW7wrDEp8KywrPCtMK1xKXCt8K4xLHFn8SfxLXCve+/vcW8w4DDgcOC77+9w4TEisSIw4fDiMOJw4rDi8OMw43DjsOP77+9w5HDksOTw5TEoMOWw5fEnMOZw5rDm8OcxazFnMOfw6DDocOi77+9w6TEi8SJw6fDqMOpw6rDq8Osw63DrsOv77+9w7HDssOzw7TEocO2w7fEncO5w7rDu8O8xa3FncuZIgogIH0sCiAgImNwMjg1OTMiOiAiaXNvODg1OTMiLAogICJpc284ODU5NCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDEhMS4xZbCpMSoxLvCp8KoxaDEksSixabCrcW9wq/CsMSFy5vFl8K0xKnEvMuHwrjFocSTxKPFp8WKxb7Fi8SAw4HDgsODw4TDhcOGxK7EjMOJxJjDi8SWw43DjsSqxJDFhcWMxLbDlMOVw5bDl8OYxbLDmsObw5zFqMWqw5/EgcOhw6LDo8Okw6XDpsSvxI3DqcSZw6vEl8Otw67Eq8SRxYbFjcS3w7TDtcO2w7fDuMWzw7rDu8O8xanFq8uZIgogIH0sCiAgImNwMjg1OTQiOiAiaXNvODg1OTQiLAogICJpc284ODU5NSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDQgdCC0IPQhNCF0IbQh9CI0InQitCL0IzCrdCO0I/QkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/RgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj+KEltGR0ZLRk9GU0ZXRltGX0ZjRmdGa0ZvRnMKn0Z7RnyIKICB9LAogICJjcDI4NTk1IjogImlzbzg4NTk1IiwKICAiaXNvODg1OTYiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg77+977+977+9wqTvv73vv73vv73vv73vv73vv73vv73YjMKt77+977+977+977+977+977+977+977+977+977+977+977+977+92Jvvv73vv73vv73Yn++/vdih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi22LfYuNi52Lrvv73vv73vv73vv73vv73ZgNmB2YLZg9mE2YXZhtmH2YjZidmK2YvZjNmN2Y7Zj9mQ2ZHZku+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vSIKICB9LAogICJjcDI4NTk2IjogImlzbzg4NTk2IiwKICAiaXNvODg1OTciOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg4oCY4oCZwqPigqzigq/CpsKnwqjCqc26wqvCrMKt77+94oCVwrDCscKywrPOhM6FzobCt86IzonOisK7zozCvc6Ozo/OkM6RzpLOk86UzpXOls6XzpjOmc6azpvOnM6dzp7On86gzqHvv73Oo86kzqXOps6nzqjOqc6qzqvOrM6tzq7Or86wzrHOss6zzrTOtc62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Cz4PPhM+Fz4bPh8+Iz4nPis+Lz4zPjc+O77+9IgogIH0sCiAgImNwMjg1OTciOiAiaXNvODg1OTciLAogICJpc284ODU5OCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDvv73CosKjwqTCpcKmwqfCqMKpw5fCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnDt8K7wrzCvcK+77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+94oCX15DXkdeS15PXlNeV15bXl9eY15nXmteb15zXndee15/XoNeh16LXo9ek16XXpten16jXqdeq77+977+94oCO4oCP77+9IgogIH0sCiAgImNwMjg1OTgiOiAiaXNvODg1OTgiLAogICJpc284ODU5OSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPxJ7DkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zEsMWew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Sfw7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8xLHFn8O/IgogIH0sCiAgImNwMjg1OTkiOiAiaXNvODg1OTkiLAogICJpc284ODU5MTAiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgxITEksSixKrEqMS2wqfEu8SQxaDFpsW9wq3FqsWKwrDEhcSTxKPEq8SpxLfCt8S8xJHFocWnxb7igJXFq8WLxIDDgcOCw4PDhMOFw4bErsSMw4nEmMOLxJbDjcOOw4/DkMWFxYzDk8OUw5XDlsWow5jFssOaw5vDnMOdw57Dn8SBw6HDosOjw6TDpcOmxK/EjcOpxJnDq8SXw63DrsOvw7DFhsWNw7PDtMO1w7bFqcO4xbPDusO7w7zDvcO+xLgiCiAgfSwKICAiY3AyODYwMCI6ICJpc284ODU5MTAiLAogICJpc284ODU5MTEiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg4LiB4LiC4LiD4LiE4LiF4LiG4LiH4LiI4LiJ4LiK4LiL4LiM4LiN4LiO4LiP4LiQ4LiR4LiS4LiT4LiU4LiV4LiW4LiX4LiY4LiZ4Lia4Lib4Lic4Lid4Lie4Lif4Lig4Lih4Lii4Lij4Lik4Lil4Lim4Lin4Lio4Lip4Liq4Lir4Lis4Lit4Liu4Liv4Liw4Lix4Liy4Liz4Li04Li14Li24Li34Li44Li54Li677+977+977+977+94Li/4LmA4LmB4LmC4LmD4LmE4LmF4LmG4LmH4LmI4LmJ4LmK4LmL4LmM4LmN4LmO4LmP4LmQ4LmR4LmS4LmT4LmU4LmV4LmW4LmX4LmY4LmZ4Lma4Lmb77+977+977+977+9IgogIH0sCiAgImNwMjg2MDEiOiAiaXNvODg1OTExIiwKICAiaXNvODg1OTEzIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoOKAncKiwqPCpOKAnsKmwqfDmMKpxZbCq8Kswq3CrsOGwrDCscKywrPigJzCtcK2wrfDuMK5xZfCu8K8wr3CvsOmxITErsSAxIbDhMOFxJjEksSMw4nFucSWxKLEtsSqxLvFoMWDxYXDk8WMw5XDlsOXxbLFgcWaxarDnMW7xb3Dn8SFxK/EgcSHw6TDpcSZxJPEjcOpxbrEl8SjxLfEq8S8xaHFhMWGw7PFjcO1w7bDt8WzxYLFm8Wrw7zFvMW+4oCZIgogIH0sCiAgImNwMjg2MDMiOiAiaXNvODg1OTEzIiwKICAiaXNvODg1OTE0IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoOG4guG4g8KjxIrEi+G4isKn4bqAwqnhuoLhuIvhu7LCrcKuxbjhuJ7huJ/EoMSh4bmA4bmBwrbhuZbhuoHhuZfhuoPhuaDhu7PhuoThuoXhuaHDgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8W0w5HDksOTw5TDlcOW4bmqw5jDmcOaw5vDnMOdxbbDn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvxbXDscOyw7PDtMO1w7bhuavDuMO5w7rDu8O8w73Ft8O/IgogIH0sCiAgImNwMjg2MDQiOiAiaXNvODg1OTE0IiwKICAiaXNvODg1OTE1IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMKhwqLCo+KCrMKlxaDCp8WhwqnCqsKrwqzCrcKuwq/CsMKxwrLCs8W9wrXCtsK3xb7CucK6wrvFksWTxbjCv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPw5DDkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/IgogIH0sCiAgImNwMjg2MDUiOiAiaXNvODg1OTE1IiwKICAiaXNvODg1OTE2IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMSExIXFgeKCrOKAnsWgwqfFocKpyJjCq8W5wq3FusW7wrDCscSMxYLFveKAncK2wrfFvsSNyJnCu8WSxZPFuMW8w4DDgcOCxILDhMSGw4bDh8OIw4nDisOLw4zDjcOOw4/EkMWDw5LDk8OUxZDDlsWaxbDDmcOaw5vDnMSYyJrDn8Ogw6HDosSDw6TEh8Omw6fDqMOpw6rDq8Osw63DrsOvxJHFhMOyw7PDtMWRw7bFm8Wxw7nDusO7w7zEmcibw78iCiAgfSwKICAiY3AyODYwNiI6ICJpc284ODU5MTYiLAogICJjcDQzNyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow6/DrsOsw4TDhcOJw6bDhsO0w7bDssO7w7nDv8OWw5zCosKjwqXigqfGksOhw63Ds8O6w7HDkcKqwrrCv+KMkMKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqAiCiAgfSwKICAiaWJtNDM3IjogImNwNDM3IiwKICAiY3NpYm00MzciOiAiY3A0MzciLAogICJjcDczNyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLOkc6SzpPOlM6VzpbOl86YzpnOms6bzpzOnc6ezp/OoM6hzqPOpM6lzqbOp86ozqnOsc6yzrPOtM61zrbOt864zrnOus67zrzOvc6+zr/PgM+Bz4PPgs+Ez4XPhs+Hz4jilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDPic6szq3Ors+Kzq/PjM+Nz4vPjs6GzojOic6KzozOjs6PwrHiiaXiiaTOqs6rw7fiiYjCsOKImcK34oia4oG/wrLilqDCoCIKICB9LAogICJpYm03MzciOiAiY3A3MzciLAogICJjc2libTczNyI6ICJjcDczNyIsCiAgImNwNzc1IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsSGw7zDqcSBw6TEo8OlxIfFgsSTxZbFl8SrxbnDhMOFw4nDpsOGxY3DtsSiwqLFmsWbw5bDnMO4wqPDmMOXwqTEgMSqw7PFu8W8xbrigJ3CpsKpwq7CrMK9wrzFgcKrwrvilpHilpLilpPilILilKTEhMSMxJjEluKVo+KVkeKVl+KVncSuxaDilJDilJTilLTilKzilJzilIDilLzFssWq4pWa4pWU4pWp4pWm4pWg4pWQ4pWsxb3EhcSNxJnEl8SvxaHFs8Wrxb7ilJjilIzilojiloTilozilpDiloDDk8OfxYzFg8O1w5XCtcWExLbEt8S7xLzFhsSSxYXigJnCrcKx4oCcwr7CtsKnw7figJ7CsOKImcK3wrnCs8Ky4pagwqAiCiAgfSwKICAiaWJtNzc1IjogImNwNzc1IiwKICAiY3NpYm03NzUiOiAiY3A3NzUiLAogICJjcDg1MCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow6/DrsOsw4TDhcOJw6bDhsO0w7bDssO7w7nDv8OWw5zDuMKjw5jDl8aSw6HDrcOzw7rDscORwqrCusK/wq7CrMK9wrzCocKrwrvilpHilpLilpPilILilKTDgcOCw4DCqeKVo+KVkeKVl+KVncKiwqXilJDilJTilLTilKzilJzilIDilLzDo8OD4pWa4pWU4pWp4pWm4pWg4pWQ4pWswqTDsMOQw4rDi8OIxLHDjcOOw4/ilJjilIzilojiloTCpsOM4paAw5PDn8OUw5LDtcOVwrXDvsOew5rDm8OZw73DncKvwrTCrcKx4oCXwr7CtsKnw7fCuMKwwqjCt8K5wrPCsuKWoMKgIgogIH0sCiAgImlibTg1MCI6ICJjcDg1MCIsCiAgImNzaWJtODUwIjogImNwODUwIiwKICAiY3A4NTIiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiw4fDvMOpw6LDpMWvxIfDp8WCw6vFkMWRw67FucOExIbDicS5xLrDtMO2xL3EvsWaxZvDlsOcxaTFpcWBw5fEjcOhw63Ds8O6xITEhcW9xb7EmMSZwqzFusSMxZ/Cq8K74paR4paS4paT4pSC4pSkw4HDgsSaxZ7ilaPilZHilZfilZ3Fu8W84pSQ4pSU4pS04pSs4pSc4pSA4pS8xILEg+KVmuKVlOKVqeKVpuKVoOKVkOKVrMKkxJHEkMSOw4vEj8WHw43DjsSb4pSY4pSM4paI4paExaLFruKWgMOTw5/DlMWDxYTFiMWgxaHFlMOaxZXFsMO9w53Fo8K0wq3Lncuby4fLmMKnw7fCuMKwwqjLmcWxxZjFmeKWoMKgIgogIH0sCiAgImlibTg1MiI6ICJjcDg1MiIsCiAgImNzaWJtODUyIjogImNwODUyIiwKICAiY3A4NTUiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi0ZLQgtGT0IPRkdCB0ZTQhNGV0IXRltCG0ZfQh9GY0IjRmdCJ0ZrQitGb0IvRnNCM0Z7QjtGf0I/RjtCu0YrQqtCw0JDQsdCR0YbQptC00JTQtdCV0YTQpNCz0JPCq8K74paR4paS4paT4pSC4pSk0YXQpdC40JjilaPilZHilZfilZ3QudCZ4pSQ4pSU4pS04pSs4pSc4pSA4pS80LrQmuKVmuKVlOKVqeKVpuKVoOKVkOKVrMKk0LvQm9C80JzQvdCd0L7QntC/4pSY4pSM4paI4paE0J/Rj+KWgNCv0YDQoNGB0KHRgtCi0YPQo9C20JbQstCS0YzQrOKElsKt0YvQq9C30JfRiNCo0Y3QrdGJ0KnRh9CnwqfilqDCoCIKICB9LAogICJpYm04NTUiOiAiY3A4NTUiLAogICJjc2libTg1NSI6ICJjcDg1NSIsCiAgImNwODU2IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIteQ15HXkteT15TXldeW15fXmNeZ15rXm9ec153Xntef16DXodei16PXpNel16bXp9eo16nXqu+/vcKj77+9w5fvv73vv73vv73vv73vv73vv73vv73vv73vv73vv73CrsKswr3CvO+/vcKrwrvilpHilpLilpPilILilKTvv73vv73vv73CqeKVo+KVkeKVl+KVncKiwqXilJDilJTilLTilKzilJzilIDilLzvv73vv73ilZrilZTilanilabilaDilZDilazCpO+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/veKUmOKUjOKWiOKWhMKm77+94paA77+977+977+977+977+977+9wrXvv73vv73vv73vv73vv73vv73vv73Cr8K0wq3CseKAl8K+wrbCp8O3wrjCsMKowrfCucKzwrLilqDCoCIKICB9LAogICJpYm04NTYiOiAiY3A4NTYiLAogICJjc2libTg1NiI6ICJjcDg1NiIsCiAgImNwODU3IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsOHw7zDqcOiw6TDoMOlw6fDqsOrw6jDr8OuxLHDhMOFw4nDpsOGw7TDtsOyw7vDucSww5bDnMO4wqPDmMWexZ/DocOtw7PDusOxw5HEnsSfwr/CrsKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpMOBw4LDgMKp4pWj4pWR4pWX4pWdwqLCpeKUkOKUlOKUtOKUrOKUnOKUgOKUvMOjw4PilZrilZTilanilabilaDilZDilazCpMK6wqrDisOLw4jvv73DjcOOw4/ilJjilIzilojiloTCpsOM4paAw5PDn8OUw5LDtcOVwrXvv73Dl8Oaw5vDmcOsw7/Cr8K0wq3Cse+/vcK+wrbCp8O3wrjCsMKowrfCucKzwrLilqDCoCIKICB9LAogICJpYm04NTciOiAiY3A4NTciLAogICJjc2libTg1NyI6ICJjcDg1NyIsCiAgImNwODU4IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsOHw7zDqcOiw6TDoMOlw6fDqsOrw6jDr8Ouw6zDhMOFw4nDpsOGw7TDtsOyw7vDucO/w5bDnMO4wqPDmMOXxpLDocOtw7PDusOxw5HCqsK6wr/CrsKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpMOBw4LDgMKp4pWj4pWR4pWX4pWdwqLCpeKUkOKUlOKUtOKUrOKUnOKUgOKUvMOjw4PilZrilZTilanilabilaDilZDilazCpMOww5DDisOLw4jigqzDjcOOw4/ilJjilIzilojiloTCpsOM4paAw5PDn8OUw5LDtcOVwrXDvsOew5rDm8OZw73DncKvwrTCrcKx4oCXwr7CtsKnw7fCuMKwwqjCt8K5wrPCsuKWoMKgIgogIH0sCiAgImlibTg1OCI6ICJjcDg1OCIsCiAgImNzaWJtODU4IjogImNwODU4IiwKICAiY3A4NjAiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiw4fDvMOpw6LDo8Ogw4HDp8Oqw4rDqMONw5TDrMODw4LDicOAw4jDtMO1w7LDmsO5w4zDlcOcwqLCo8OZ4oKnw5PDocOtw7PDusOxw5HCqsK6wr/DksKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqAiCiAgfSwKICAiaWJtODYwIjogImNwODYwIiwKICAiY3NpYm04NjAiOiAiY3A4NjAiLAogICJjcDg2MSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow5DDsMOew4TDhcOJw6bDhsO0w7bDvsO7w53DvcOWw5zDuMKjw5jigqfGksOhw63Ds8O6w4HDjcOTw5rCv+KMkMKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqAiCiAgfSwKICAiaWJtODYxIjogImNwODYxIiwKICAiY3NpYm04NjEiOiAiY3A4NjEiLAogICJjcDg2MiI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLXkNeR15LXk9eU15XXlteX15jXmdea15vXnNed157Xn9eg16HXotej16TXpdem16fXqNep16rCosKjwqXigqfGksOhw63Ds8O6w7HDkcKqwrrCv+KMkMKswr3CvMKhwqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqAiCiAgfSwKICAiaWJtODYyIjogImNwODYyIiwKICAiY3NpYm04NjIiOiAiY3A4NjIiLAogICJjcDg2MyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDh8O8w6nDosOCw6DCtsOnw6rDq8Oow6/DruKAl8OAwqfDicOIw4rDtMOLw4/Du8O5wqTDlMOcwqLCo8OZw5vGksKmwrTDs8O6wqjCuMKzwq/DjuKMkMKswr3CvMK+wqvCu+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqAiCiAgfSwKICAiaWJtODYzIjogImNwODYzIiwKICAiY3NpYm04NjMiOiAiY3A4NjMiLAogICJjcDg2NCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICJcdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0XG5cdTAwMGJcZlxyXHUwMDBlXHUwMDBmXHUwMDEwXHUwMDExXHUwMDEyXHUwMDEzXHUwMDE0XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE4XHUwMDE5XHUwMDFhXHUwMDFiXHUwMDFjXHUwMDFkXHUwMDFlXHUwMDFmICFcIiMk2aomJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/wrDCt+KImeKImuKWkuKUgOKUguKUvOKUpOKUrOKUnOKUtOKUkOKUjOKUlOKUmM6y4oiez4bCscK9wrziiYjCq8K777u377u477+977+977u777u877+9wqDCre+6gsKjwqTvuoTvv73vv73vuo7vuo/vupXvupnYjO+6ne+6oe+6pdmg2aHZotmj2aTZpdmm2afZqNmp77uR2JvvurHvurXvurnYn8Ki77qA77qB77qD77qF77uK77qL77qN77qR77qT77qX77qb77qf77qj77qn77qp77qr77qt77qv77qz77q377q777q/77uB77uF77uL77uPwqbCrMO3w5fvu4nZgO+7k++7l++7m++7n++7o++7p++7q++7re+7r++7s++6ve+7jO+7ju+7je+7oe+5vdmR77ul77up77us77uw77uy77uQ77uV77u177u277ud77uZ77ux4pag77+9IgogIH0sCiAgImlibTg2NCI6ICJjcDg2NCIsCiAgImNzaWJtODY0IjogImNwODY0IiwKICAiY3A4NjUiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiw4fDvMOpw6LDpMOgw6XDp8Oqw6vDqMOvw67DrMOEw4XDicOmw4bDtMO2w7LDu8O5w7/DlsOcw7jCo8OY4oKnxpLDocOtw7PDusOxw5HCqsK6wr/ijJDCrMK9wrzCocKrwqTilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgIgogIH0sCiAgImlibTg2NSI6ICJjcDg2NSIsCiAgImNzaWJtODY1IjogImNwODY1IiwKICAiY3A4NjYiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7Qr9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/4paR4paS4paT4pSC4pSk4pWh4pWi4pWW4pWV4pWj4pWR4pWX4pWd4pWc4pWb4pSQ4pSU4pS04pSs4pSc4pSA4pS84pWe4pWf4pWa4pWU4pWp4pWm4pWg4pWQ4pWs4pWn4pWo4pWk4pWl4pWZ4pWY4pWS4pWT4pWr4pWq4pSY4pSM4paI4paE4paM4paQ4paA0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y/QgdGR0ITRlNCH0ZfQjtGewrDiiJnCt+KImuKElsKk4pagwqAiCiAgfSwKICAiaWJtODY2IjogImNwODY2IiwKICAiY3NpYm04NjYiOiAiY3A4NjYiLAogICJjcDg2OSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLvv73vv73vv73vv73vv73vv73Ohu+/vcK3wqzCpuKAmOKAmc6I4oCVzonOis6qzozvv73vv73Ojs6rwqnOj8KywrPOrMKjzq3Ors6vz4rOkM+Mz43Okc6SzpPOlM6VzpbOl8K9zpjOmcKrwrvilpHilpLilpPilILilKTOms6bzpzOneKVo+KVkeKVl+KVnc6ezp/ilJDilJTilLTilKzilJzilIDilLzOoM6h4pWa4pWU4pWp4pWm4pWg4pWQ4pWszqPOpM6lzqbOp86ozqnOsc6yzrPilJjilIzilojiloTOtM614paAzrbOt864zrnOus67zrzOvc6+zr/PgM+Bz4PPgs+EzoTCrcKxz4XPhs+HwqfPiM6FwrDCqM+Jz4vOsM+O4pagwqAiCiAgfSwKICAiaWJtODY5IjogImNwODY5IiwKICAiY3NpYm04NjkiOiAiY3A4NjkiLAogICJjcDkyMiI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKu4oC+wrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8Wgw5HDksOTw5TDlcOWw5fDmMOZw5rDm8Ocw53FvcOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/FocOxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMO9xb7DvyIKICB9LAogICJpYm05MjIiOiAiY3A5MjIiLAogICJjc2libTkyMiI6ICJjcDkyMiIsCiAgImNwMTA0NiI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLvuojDl8O376O276O176O076O377mxwojilqDilILilIDilJDilIzilJTilJjvubnvubvvub3vub/vubfvuorvu7Dvu7Pvu7Lvu47vu4/vu5Dvu7bvu7jvu7rvu7zCoO+juu+jue+juMKk76O777qL77qR77qX77qb77qf77qj2IzCre+6p++6s9mg2aHZotmj2aTZpdmm2afZqNmp77q32Jvvurvvur/vu4rYn++7i9ih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi22Lfvu4fYudi677uM77qC77qE77qO77uT2YDZgdmC2YPZhNmF2YbZh9mI2YnZitmL2YzZjdmO2Y/ZkNmR2ZLvu5fvu5vvu5/vo7zvu7Xvu7fvu7nvu7vvu6Pvu6fvu6zvu6nvv70iCiAgfSwKICAiaWJtMTA0NiI6ICJjcDEwNDYiLAogICJjc2libTEwNDYiOiAiY3AxMDQ2IiwKICAiY3AxMTI0IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoNCB0ILSkNCE0IXQhtCH0IjQidCK0IvQjMKt0I7Qj9CQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGP4oSW0ZHRktKR0ZTRldGW0ZfRmNGZ0ZrRm9GcwqfRntGfIgogIH0sCiAgImlibTExMjQiOiAiY3AxMTI0IiwKICAiY3NpYm0xMTI0IjogImNwMTEyNCIsCiAgImNwMTEyNSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/ilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDRgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj9CB0ZHSkNKR0ITRlNCG0ZbQh9GXwrfiiJrihJbCpOKWoMKgIgogIH0sCiAgImlibTExMjUiOiAiY3AxMTI1IiwKICAiY3NpYm0xMTI1IjogImNwMTEyNSIsCiAgImNwMTEyOSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8WTwqnCqsKrwqzCrcKuwq/CsMKxwrLCs8W4wrXCtsK3xZLCucK6wrvCvMK9wr7Cv8OAw4HDgsSCw4TDhcOGw4fDiMOJw4rDi8yAw43DjsOPxJDDkcyJw5PDlMagw5bDl8OYw5nDmsObw5zGr8yDw5/DoMOhw6LEg8Okw6XDpsOnw6jDqcOqw6vMgcOtw67Dr8SRw7HMo8Ozw7TGocO2w7fDuMO5w7rDu8O8xrDigqvDvyIKICB9LAogICJpYm0xMTI5IjogImNwMTEyOSIsCiAgImNzaWJtMTEyOSI6ICJjcDExMjkiLAogICJjcDExMzMiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg4LqB4LqC4LqE4LqH4LqI4Lqq4LqK4LqN4LqU4LqV4LqW4LqX4LqZ4Lqa4Lqb4Lqc4Lqd4Lqe4Lqf4Lqh4Lqi4Lqj4Lql4Lqn4Lqr4Lqt4Lqu77+977+977+94Lqv4Lqw4Lqy4Lqz4Lq04Lq14Lq24Lq34Lq44Lq54Lq84Lqx4Lq74Lq977+977+977+94LuA4LuB4LuC4LuD4LuE4LuI4LuJ4LuK4LuL4LuM4LuN4LuG77+94Luc4Lud4oKt77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+94LuQ4LuR4LuS4LuT4LuU4LuV4LuW4LuX4LuY4LuZ77+977+9wqLCrMKm77+9IgogIH0sCiAgImlibTExMzMiOiAiY3AxMTMzIiwKICAiY3NpYm0xMTMzIjogImNwMTEzMyIsCiAgImNwMTE2MSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLvv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73guYjguIHguILguIPguITguIXguIbguIfguIjguInguIrguIvguIzguI3guI7guI/guJDguJHguJLguJPguJTguJXguJbguJfguJjguJnguJrguJvguJzguJ3guJ7guJ/guKDguKHguKLguKPguKTguKXguKbguKfguKjguKnguKrguKvguKzguK3guK7guK/guLDguLHguLLguLPguLTguLXguLbguLfguLjguLnguLrguYnguYrguYvigqzguL/guYDguYHguYLguYPguYTguYXguYbguYfguYjguYnguYrguYvguYzguY3guY7guY/guZDguZHguZLguZPguZTguZXguZbguZfguZjguZnguZrguZvCosKswqbCoCIKICB9LAogICJpYm0xMTYxIjogImNwMTE2MSIsCiAgImNzaWJtMTE2MSI6ICJjcDExNjEiLAogICJjcDExNjIiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi4oKswoHCgsKDwoTigKbChsKHwojCicKKwovCjMKNwo7Cj8KQ4oCY4oCZ4oCc4oCd4oCi4oCT4oCUwpjCmcKawpvCnMKdwp7Cn8Kg4LiB4LiC4LiD4LiE4LiF4LiG4LiH4LiI4LiJ4LiK4LiL4LiM4LiN4LiO4LiP4LiQ4LiR4LiS4LiT4LiU4LiV4LiW4LiX4LiY4LiZ4Lia4Lib4Lic4Lid4Lie4Lif4Lig4Lih4Lii4Lij4Lik4Lil4Lim4Lin4Lio4Lip4Liq4Lir4Lis4Lit4Liu4Liv4Liw4Lix4Liy4Liz4Li04Li14Li24Li34Li44Li54Li677+977+977+977+94Li/4LmA4LmB4LmC4LmD4LmE4LmF4LmG4LmH4LmI4LmJ4LmK4LmL4LmM4LmN4LmO4LmP4LmQ4LmR4LmS4LmT4LmU4LmV4LmW4LmX4LmY4LmZ4Lma4Lmb77+977+977+977+9IgogIH0sCiAgImlibTExNjIiOiAiY3AxMTYyIiwKICAiY3NpYm0xMTYyIjogImNwMTE2MiIsCiAgImNwMTE2MyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPigqzCpcKmwqfFk8KpwqrCq8Kswq3CrsKvwrDCscKywrPFuMK1wrbCt8WSwrnCusK7wrzCvcK+wr/DgMOBw4LEgsOEw4XDhsOHw4jDicOKw4vMgMONw47Dj8SQw5HMicOTw5TGoMOWw5fDmMOZw5rDm8Ocxq/Mg8Ofw6DDocOixIPDpMOlw6bDp8Oow6nDqsOrzIHDrcOuw6/EkcOxzKPDs8O0xqHDtsO3w7jDucO6w7vDvMaw4oKrw78iCiAgfSwKICAiaWJtMTE2MyI6ICJjcDExNjMiLAogICJjc2libTExNjMiOiAiY3AxMTYzIiwKICAibWFjY3JvYXRpYW4iOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiw4TDhcOHw4nDkcOWw5zDocOgw6LDpMOjw6XDp8Opw6jDqsOrw63DrMOuw6/DscOzw7LDtMO2w7XDusO5w7vDvOKAoMKwwqLCo8Kn4oCiwrbDn8KuxaDihKLCtMKo4omgxb3DmOKInsKx4omk4oml4oiGwrXiiILiiJHiiI/FoeKIq8KqwrrihKbFvsO4wr/CocKs4oiaxpLiiYjEhsKrxIzigKbCoMOAw4PDlcWSxZPEkOKAlOKAnOKAneKAmOKAmcO34peK77+9wqnigYTCpOKAueKAusOGwrvigJPCt+KAmuKAnuKAsMOCxIfDgcSNw4jDjcOOw4/DjMOTw5TEkcOSw5rDm8OZxLHLhsucwq/PgMOLy5rCuMOKw6bLhyIKICB9LAogICJtYWNjeXJpbGxpYyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv4oCgwrDCosKjwqfigKLCttCGwq7CqeKEotCC0ZLiiaDQg9GT4oiewrHiiaTiiaXRlsK14oiC0IjQhNGU0IfRl9CJ0ZnQitGa0ZjQhcKs4oiaxpLiiYjiiIbCq8K74oCmwqDQi9Gb0IzRnNGV4oCT4oCU4oCc4oCd4oCY4oCZw7figJ7QjtGe0I/Rn+KEltCB0ZHRj9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGOwqQiCiAgfSwKICAibWFjZ3JlZWsiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiw4TCucKyw4nCs8OWw5zOhcOgw6LDpM6EwqjDp8Opw6jDqsOrwqPihKLDrsOv4oCiwr3igLDDtMO2wqbCrcO5w7vDvOKAoM6TzpTOmM6bzp7OoMOfwq7Cqc6jzqrCp+KJoMKwzofOkcKx4omk4omlwqXOks6VzpbOl86ZzprOnM6mzqvOqM6pzqzOncKszp/OoeKJiM6kwqvCu+KApsKgzqXOp86GzojFk+KAk+KAleKAnOKAneKAmOKAmcO3zonOis6Mzo7Orc6uzq/PjM6Pz43Osc6yz4jOtM61z4bOs863zrnOvs66zrvOvM69zr/PgM+Oz4HPg8+EzrjPic+Cz4fPhc62z4rPi86QzrDvv70iCiAgfSwKICAibWFjaWNlbGFuZCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O8w53CsMKiwqPCp+KAosK2w5/CrsKp4oSiwrTCqOKJoMOGw5jiiJ7CseKJpOKJpcKlwrXiiILiiJHiiI/PgOKIq8KqwrrihKbDpsO4wr/CocKs4oiaxpLiiYjiiIbCq8K74oCmwqDDgMODw5XFksWT4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rDv8W44oGEwqTDkMOww57DvsO9wrfigJrigJ7igLDDgsOKw4HDi8OIw43DjsOPw4zDk8OU77+9w5LDmsObw5nEscuGy5zCr8uYy5nLmsK4y53Lm8uHIgogIH0sCiAgIm1hY3JvbWFuIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsOEw4XDh8OJw5HDlsOcw6HDoMOiw6TDo8Olw6fDqcOow6rDq8Otw6zDrsOvw7HDs8Oyw7TDtsO1w7rDucO7w7zigKDCsMKiwqPCp+KAosK2w5/CrsKp4oSiwrTCqOKJoMOGw5jiiJ7CseKJpOKJpcKlwrXiiILiiJHiiI/PgOKIq8KqwrrihKbDpsO4wr/CocKs4oiaxpLiiYjiiIbCq8K74oCmwqDDgMODw5XFksWT4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rDv8W44oGEwqTigLnigLrvrIHvrILigKHCt+KAmuKAnuKAsMOCw4rDgcOLw4jDjcOOw4/DjMOTw5Tvv73DksOaw5vDmcSxy4bLnMKvy5jLmcuawrjLncuby4ciCiAgfSwKICAibWFjcm9tYW5pYSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O84oCgwrDCosKjwqfigKLCtsOfwq7CqeKEosK0wqjiiaDEgsWe4oiewrHiiaTiiaXCpcK14oiC4oiR4oiPz4DiiKvCqsK64oSmxIPFn8K/wqHCrOKImsaS4omI4oiGwqvCu+KApsKgw4DDg8OVxZLFk+KAk+KAlOKAnOKAneKAmOKAmcO34peKw7/FuOKBhMKk4oC54oC6xaLFo+KAocK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZxLHLhsucwq/LmMuZy5rCuMudy5vLhyIKICB9LAogICJtYWN0aGFpIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIsKrwrvigKbvoozvoo/vopLvopXvopjvoovvoo7vopHvopTvopfigJzigJ3vopnvv73igKLvooTvoonvooXvoobvoofvoojvoorvoo3vopDvopPvopbigJjigJnvv73CoOC4geC4guC4g+C4hOC4heC4huC4h+C4iOC4ieC4iuC4i+C4jOC4jeC4juC4j+C4kOC4keC4kuC4k+C4lOC4leC4luC4l+C4mOC4meC4muC4m+C4nOC4neC4nuC4n+C4oOC4oeC4ouC4o+C4pOC4peC4puC4p+C4qOC4qeC4quC4q+C4rOC4reC4ruC4r+C4sOC4seC4suC4s+C4tOC4teC4tuC4t+C4uOC4ueC4uu+7v+KAi+KAk+KAlOC4v+C5gOC5geC5guC5g+C5hOC5heC5huC5h+C5iOC5ieC5iuC5i+C5jOC5jeKEouC5j+C5kOC5keC5kuC5k+C5lOC5leC5luC5l+C5mOC5mcKuwqnvv73vv73vv73vv70iCiAgfSwKICAibWFjdHVya2lzaCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O84oCgwrDCosKjwqfigKLCtsOfwq7CqeKEosK0wqjiiaDDhsOY4oiewrHiiaTiiaXCpcK14oiC4oiR4oiPz4DiiKvCqsK64oSmw6bDuMK/wqHCrOKImsaS4omI4oiGwqvCu+KApsKgw4DDg8OVxZLFk+KAk+KAlOKAnOKAneKAmOKAmcO34peKw7/FuMSexJ/EsMSxxZ7Fn+KAocK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZ77+9y4bLnMKvy5jLmcuawrjLncuby4ciCiAgfSwKICAibWFjdWtyYWluZSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv4oCgwrDSkMKjwqfigKLCttCGwq7CqeKEotCC0ZLiiaDQg9GT4oiewrHiiaTiiaXRlsK10pHQiNCE0ZTQh9GX0InRmdCK0ZrRmNCFwqziiJrGkuKJiOKIhsKrwrvigKbCoNCL0ZvQjNGc0ZXigJPigJTigJzigJ3igJjigJnDt+KAntCO0Z7Qj9Gf4oSW0IHRkdGP0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/RgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7CpCIKICB9LAogICJrb2k4ciI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLilIDilILilIzilJDilJTilJjilJzilKTilKzilLTilLziloDiloTilojilozilpDilpHilpLilpPijKDilqDiiJniiJriiYjiiaTiiaXCoOKMocKwwrLCt8O34pWQ4pWR4pWS0ZHilZPilZTilZXilZbilZfilZjilZnilZrilZvilZzilZ3ilZ7ilZ/ilaDilaHQgeKVouKVo+KVpOKVpeKVpuKVp+KVqOKVqeKVquKVq+KVrMKp0Y7QsNCx0YbQtNC10YTQs9GF0LjQudC60LvQvNC90L7Qv9GP0YDRgdGC0YPQttCy0YzRi9C30YjRjdGJ0YfRitCu0JDQkdCm0JTQldCk0JPQpdCY0JnQmtCb0JzQndCe0J/Qr9Cg0KHQotCj0JbQktCs0KvQl9Co0K3QqdCn0KoiCiAgfSwKICAia29pOHUiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi4pSA4pSC4pSM4pSQ4pSU4pSY4pSc4pSk4pSs4pS04pS84paA4paE4paI4paM4paQ4paR4paS4paT4oyg4pag4oiZ4oia4omI4omk4omlwqDijKHCsMKywrfDt+KVkOKVkeKVktGR0ZTilZTRltGX4pWX4pWY4pWZ4pWa4pWb0pHilZ3ilZ7ilZ/ilaDilaHQgdCE4pWj0IbQh+KVpuKVp+KVqOKVqeKVqtKQ4pWswqnRjtCw0LHRhtC00LXRhNCz0YXQuNC50LrQu9C80L3QvtC/0Y/RgNGB0YLRg9C20LLRjNGL0LfRiNGN0YnRh9GK0K7QkNCR0KbQlNCV0KTQk9Cl0JjQmdCa0JvQnNCd0J7Qn9Cv0KDQodCi0KPQltCS0KzQq9CX0KjQrdCp0KfQqiIKICB9LAogICJrb2k4cnUiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi4pSA4pSC4pSM4pSQ4pSU4pSY4pSc4pSk4pSs4pS04pS84paA4paE4paI4paM4paQ4paR4paS4paT4oyg4pag4oiZ4oia4omI4omk4omlwqDijKHCsMKywrfDt+KVkOKVkeKVktGR0ZTilZTRltGX4pWX4pWY4pWZ4pWa4pWb0pHRnuKVnuKVn+KVoOKVodCB0ITilaPQhtCH4pWm4pWn4pWo4pWp4pWq0pDQjsKp0Y7QsNCx0YbQtNC10YTQs9GF0LjQudC60LvQvNC90L7Qv9GP0YDRgdGC0YPQttCy0YzRi9C30YjRjdGJ0YfRitCu0JDQkdCm0JTQldCk0JPQpdCY0JnQmtCb0JzQndCe0J/Qr9Cg0KHQotCj0JbQktCs0KvQl9Co0K3QqdCn0KoiCiAgfSwKICAia29pOHQiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAi0pvSk+KAmtKS4oCe4oCm4oCg4oCh77+94oCw0rPigLnSstK30rbvv73SmuKAmOKAmeKAnOKAneKAouKAk+KAlO+/veKEou+/veKAuu+/ve+/ve+/ve+/ve+/vdOv067RkcKk06PCpsKn77+977+977+9wqvCrMKtwq7vv73CsMKxwrLQge+/vdOiwrbCt++/veKElu+/vcK777+977+977+9wqnRjtCw0LHRhtC00LXRhNCz0YXQuNC50LrQu9C80L3QvtC/0Y/RgNGB0YLRg9C20LLRjNGL0LfRiNGN0YnRh9GK0K7QkNCR0KbQlNCV0KTQk9Cl0JjQmdCa0JvQnNCd0J7Qn9Cv0KDQodCi0KPQltCS0KzQq9CX0KjQrdCp0KfQqiIKICB9LAogICJhcm1zY2lpOCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDvv73Wh9aJKSjCu8Kr4oCULtWdLC3WiuKAptWc1ZvVntSx1aHUstWi1LPVo9S01aTUtdWl1LbVptS31afUuNWo1LnVqdS61arUu9Wr1LzVrNS91a3UvtWu1L/Vr9WA1bDVgdWx1YLVstWD1bPVhNW01YXVtdWG1bbVh9W31YjVuNWJ1bnVitW61YvVu9WM1bzVjdW91Y7VvtWP1b/VkNaA1ZHWgdWS1oLVk9aD1ZTWhNWV1oXVltaG1Zrvv70iCiAgfSwKICAicmsxMDQ4IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogItCC0IPigJrRk+KAnuKApuKAoOKAoeKCrOKAsNCJ4oC50IrSmtK60I/RkuKAmOKAmeKAnOKAneKAouKAk+KAlO+/veKEotGZ4oC60ZrSm9K70Z/CoNKw0rHTmMKk06jCpsKn0IHCqdKSwqvCrMKtwq7SrsKwwrHQhtGW06nCtcK2wrfRkeKEltKTwrvTmdKi0qPSr9CQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGPIgogIH0sCiAgInRjdm4iOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiXHUwMDAww5rhu6RcdTAwMDPhu6rhu6zhu65cdTAwMDdcYlx0XG5cdTAwMGJcZlxyXHUwMDBlXHUwMDBmXHUwMDEw4buo4buw4buy4bu24bu4w53hu7RcdTAwMThcdTAwMTlcdTAwMWFcdTAwMWJcdTAwMWNcdTAwMWRcdTAwMWVcdTAwMWYgIVwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f8OA4bqiw4PDgeG6oOG6tuG6rMOI4bq64bq8w4nhurjhu4bDjOG7iMSow43hu4rDkuG7jsOVw5Phu4zhu5jhu5zhu57hu6Dhu5rhu6LDmeG7psWowqDEgsOCw4rDlMagxq/EkMSDw6LDqsO0xqHGsMSR4bqwzIDMicyDzIHMo8Og4bqjw6PDoeG6oeG6suG6seG6s+G6teG6r+G6tOG6ruG6puG6qOG6quG6pOG7gOG6t+G6p+G6qeG6q+G6peG6rcOo4buC4bq74bq9w6nhurnhu4Hhu4Phu4Xhur/hu4fDrOG7ieG7hOG6vuG7ksSpw63hu4vDsuG7lOG7j8O1w7Phu43hu5Phu5Xhu5fhu5Hhu5nhu53hu5/hu6Hhu5vhu6PDueG7luG7p8Wpw7rhu6Xhu6vhu63hu6/hu6nhu7Hhu7Phu7fhu7nDveG7teG7kCIKICB9LAogICJnZW9yZ2lhbmFjYWRlbXkiOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiwoDCgeKAmsaS4oCe4oCm4oCg4oChy4bigLDFoOKAucWSwo3CjsKPwpDigJjigJnigJzigJ3igKLigJPigJTLnOKEosWh4oC6xZPCncKexbjCoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/4YOQ4YOR4YOS4YOT4YOU4YOV4YOW4YOX4YOY4YOZ4YOa4YOb4YOc4YOd4YOe4YOf4YOg4YOh4YOi4YOj4YOk4YOl4YOm4YOn4YOo4YOp4YOq4YOr4YOs4YOt4YOu4YOv4YOw4YOx4YOy4YOz4YO04YO14YO2w6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w78iCiAgfSwKICAiZ2VvcmdpYW5wcyI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKB4oCaxpLigJ7igKbigKDigKHLhuKAsMWg4oC5xZLCjcKOwo/CkOKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSixaHigLrFk8Kdwp7FuMKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/hg5Dhg5Hhg5Lhg5Phg5Thg5Xhg5bhg7Hhg5fhg5jhg5nhg5rhg5vhg5zhg7Lhg53hg57hg5/hg6Dhg6Hhg6Lhg7Phg6Phg6Thg6Xhg6bhg6fhg6jhg6nhg6rhg6vhg6zhg63hg67hg7Thg6/hg7Dhg7XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/IgogIH0sCiAgInB0MTU0IjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogItKW0pLTrtKT4oCe4oCm0rbSrtKy0q/SoNOi0qLSmtK60rjSl+KAmOKAmeKAnOKAneKAouKAk+KAlNKz0rfSodOj0qPSm9K70rnCoNCO0Z7QiNOo0pjSsMKn0IHCqdOYwqvCrNOvwq7SnMKw0rHQhtGW0pnTqcK2wrfRkeKEltOZwrvRmNKq0qvSndCQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGPIgogIH0sCiAgInZpc2NpaSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICJcdTAwMDBcdTAwMDHhurJcdTAwMDNcdTAwMDThurThuqpcdTAwMDdcYlx0XG5cdTAwMGJcZlxyXHUwMDBlXHUwMDBmXHUwMDEwXHUwMDExXHUwMDEyXHUwMDEz4bu2XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE44bu4XHUwMDFhXHUwMDFiXHUwMDFjXHUwMDFk4bu0XHUwMDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn/huqDhuq7hurDhurbhuqThuqbhuqjhuqzhurzhurjhur7hu4Dhu4Lhu4Thu4bhu5Dhu5Lhu5Thu5bhu5jhu6Lhu5rhu5zhu57hu4rhu47hu4zhu4jhu6bFqOG7pOG7ssOV4bqv4bqx4bq34bql4bqn4bqp4bqt4bq94bq54bq/4buB4buD4buF4buH4buR4buT4buV4buX4bugxqDhu5nhu53hu5/hu4vhu7Dhu6jhu6rhu6zGoeG7m8avw4DDgcOCw4PhuqLEguG6s+G6tcOIw4nDiuG6usOMw43EqOG7s8SQ4bupw5LDk8OU4bqh4bu34bur4butw5nDmuG7ueG7tcOd4buhxrDDoMOhw6LDo+G6o8SD4buv4bqrw6jDqcOq4bq7w6zDrcSp4buJxJHhu7HDssOzw7TDteG7j+G7jeG7pcO5w7rFqeG7p8O94buj4buuIgogIH0sCiAgImlzbzY0NmNuIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIlx1MDAwMFx1MDAwMVx1MDAwMlx1MDAwM1x1MDAwNFx1MDAwNVx1MDAwNlx1MDAwN1xiXHRcblx1MDAwYlxmXHJcdTAwMGVcdTAwMGZcdTAwMTBcdTAwMTFcdTAwMTJcdTAwMTNcdTAwMTRcdTAwMTVcdTAwMTZcdTAwMTdcdTAwMThcdTAwMTlcdTAwMWFcdTAwMWJcdTAwMWNcdTAwMWRcdTAwMWVcdTAwMWYgIVwiI8KlJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x94oC+f++/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vSIKICB9LAogICJpc282NDZqcCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICJcdTAwMDBcdTAwMDFcdTAwMDJcdTAwMDNcdTAwMDRcdTAwMDVcdTAwMDZcdTAwMDdcYlx0XG5cdTAwMGJcZlxyXHUwMDBlXHUwMDBmXHUwMDEwXHUwMDExXHUwMDEyXHUwMDEzXHUwMDE0XHUwMDE1XHUwMDE2XHUwMDE3XHUwMDE4XHUwMDE5XHUwMDFhXHUwMDFiXHUwMDFjXHUwMDFkXHUwMDFlXHUwMDFmICFcIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW8KlXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x94oC+f++/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vSIKICB9LAogICJocHJvbWFuOCI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDDgMOCw4jDisOLw47Dj8K0y4vLhsKoy5zDmcOb4oKkwq/DncO9wrDDh8Onw5HDscKhwr/CpMKjwqXCp8aSwqLDosOqw7TDu8Ohw6nDs8O6w6DDqMOyw7nDpMOrw7bDvMOFw67DmMOGw6XDrcO4w6bDhMOsw5bDnMOJw6/Dn8OUw4HDg8Ojw5DDsMONw4zDk8OSw5XDtcWgxaHDmsW4w7/DnsO+wrfCtcK2wr7igJTCvMK9wqrCusKr4pagwrvCse+/vSIKICB9LAogICJtYWNpbnRvc2giOiB7CiAgICAidHlwZSI6ICJfc2JjcyIsCiAgICAiY2hhcnMiOiAiw4TDhcOHw4nDkcOWw5zDocOgw6LDpMOjw6XDp8Opw6jDqsOrw63DrMOuw6/DscOzw7LDtMO2w7XDusO5w7vDvOKAoMKwwqLCo8Kn4oCiwrbDn8KuwqnihKLCtMKo4omgw4bDmOKInsKx4omk4omlwqXCteKIguKIkeKIj8+A4oirwqrCuuKEpsOmw7jCv8KhwqziiJrGkuKJiOKIhsKrwrvigKbCoMOAw4PDlcWSxZPigJPigJTigJzigJ3igJjigJnDt+KXisO/xbjigYTCpOKAueKAuu+sge+sguKAocK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZxLHLhsucwq/LmMuZy5rCuMudy5vLhyIKICB9LAogICJhc2NpaSI6IHsKICAgICJ0eXBlIjogIl9zYmNzIiwKICAgICJjaGFycyI6ICLvv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv70iCiAgfSwKICAidGlzNjIwIjogewogICAgInR5cGUiOiAiX3NiY3MiLAogICAgImNoYXJzIjogIu+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/veC4geC4guC4g+C4hOC4heC4huC4h+C4iOC4ieC4iuC4i+C4jOC4jeC4juC4j+C4kOC4keC4kuC4k+C4lOC4leC4luC4l+C4mOC4meC4muC4m+C4nOC4neC4nuC4n+C4oOC4oeC4ouC4o+C4pOC4peC4puC4p+C4qOC4qeC4quC4q+C4rOC4reC4ruC4r+C4sOC4seC4suC4s+C4tOC4teC4tuC4t+C4uOC4ueC4uu+/ve+/ve+/ve+/veC4v+C5gOC5geC5guC5g+C5hOC5heC5huC5h+C5iOC5ieC5iuC5i+C5jOC5jeC5juC5j+C5kOC5keC5kuC5k+C5lOC5leC5luC5l+C5mOC5meC5muC5m++/ve+/ve+/ve+/vSIKICB9Cn0KCi8qKiovIH0pLAovKiAxNzggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKdmFyIEJ1ZmZlciA9IF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyOwoKLy8gTXVsdGlieXRlIGNvZGVjLiBJbiB0aGlzIHNjaGVtZSwgYSBjaGFyYWN0ZXIgaXMgcmVwcmVzZW50ZWQgYnkgMSBvciBtb3JlIGJ5dGVzLgovLyBPdXIgY29kZWMgc3VwcG9ydHMgVVRGLTE2IHN1cnJvZ2F0ZXMsIGV4dGVuc2lvbnMgZm9yIEdCMTgwMzAgYW5kIHVuaWNvZGUgc2VxdWVuY2VzLgovLyBUbyBzYXZlIG1lbW9yeSBhbmQgbG9hZGluZyB0aW1lLCB3ZSByZWFkIHRhYmxlIGZpbGVzIG9ubHkgd2hlbiByZXF1ZXN0ZWQuCgpleHBvcnRzLl9kYmNzID0gREJDU0NvZGVjOwoKdmFyIFVOQVNTSUdORUQgPSAtMSwKICAgIEdCMTgwMzBfQ09ERSA9IC0yLAogICAgU0VRX1NUQVJUICA9IC0xMCwKICAgIE5PREVfU1RBUlQgPSAtMTAwMCwKICAgIFVOQVNTSUdORURfTk9ERSA9IG5ldyBBcnJheSgweDEwMCksCiAgICBERUZfQ0hBUiA9IC0xOwoKZm9yICh2YXIgaSA9IDA7IGkgPCAweDEwMDsgaSsrKQogICAgVU5BU1NJR05FRF9OT0RFW2ldID0gVU5BU1NJR05FRDsKCgovLyBDbGFzcyBEQkNTQ29kZWMgcmVhZHMgYW5kIGluaXRpYWxpemVzIG1hcHBpbmcgdGFibGVzLgpmdW5jdGlvbiBEQkNTQ29kZWMoY29kZWNPcHRpb25zLCBpY29udikgewogICAgdGhpcy5lbmNvZGluZ05hbWUgPSBjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lOwogICAgaWYgKCFjb2RlY09wdGlvbnMpCiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEQkNTIGNvZGVjIGlzIGNhbGxlZCB3aXRob3V0IHRoZSBkYXRhLiIpCiAgICBpZiAoIWNvZGVjT3B0aW9ucy50YWJsZSkKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkVuY29kaW5nICciICsgdGhpcy5lbmNvZGluZ05hbWUgKyAiJyBoYXMgbm8gZGF0YS4iKTsKCiAgICAvLyBMb2FkIHRhYmxlcy4KICAgIHZhciBtYXBwaW5nVGFibGUgPSBjb2RlY09wdGlvbnMudGFibGUoKTsKCgogICAgLy8gRGVjb2RlIHRhYmxlczogTUJDUyAtPiBVbmljb2RlLgoKICAgIC8vIGRlY29kZVRhYmxlcyBpcyBhIHRyaWUsIGVuY29kZWQgYXMgYW4gYXJyYXkgb2YgYXJyYXlzIG9mIGludGVnZXJzLiBJbnRlcm5hbCBhcnJheXMgYXJlIHRyaWUgbm9kZXMgYW5kIGFsbCBoYXZlIGxlbiA9IDI1Ni4KICAgIC8vIFRyaWUgcm9vdCBpcyBkZWNvZGVUYWJsZXNbMF0uCiAgICAvLyBWYWx1ZXM6ID49ICAwIC0+IHVuaWNvZGUgY2hhcmFjdGVyIGNvZGUuIGNhbiBiZSA+IDB4RkZGRgogICAgLy8gICAgICAgICA9PSBVTkFTU0lHTkVEIC0+IHVua25vd24vdW5hc3NpZ25lZCBzZXF1ZW5jZS4KICAgIC8vICAgICAgICAgPT0gR0IxODAzMF9DT0RFIC0+IHRoaXMgaXMgdGhlIGVuZCBvZiBhIEdCMTgwMzAgNC1ieXRlIHNlcXVlbmNlLgogICAgLy8gICAgICAgICA8PSBOT0RFX1NUQVJUIC0+IGluZGV4IG9mIHRoZSBuZXh0IG5vZGUgaW4gb3VyIHRyaWUgdG8gcHJvY2VzcyBuZXh0IGJ5dGUuCiAgICAvLyAgICAgICAgIDw9IFNFUV9TVEFSVCAgLT4gaW5kZXggb2YgdGhlIHN0YXJ0IG9mIGEgY2hhcmFjdGVyIGNvZGUgc2VxdWVuY2UsIGluIGRlY29kZVRhYmxlU2VxLgogICAgdGhpcy5kZWNvZGVUYWJsZXMgPSBbXTsKICAgIHRoaXMuZGVjb2RlVGFibGVzWzBdID0gVU5BU1NJR05FRF9OT0RFLnNsaWNlKDApOyAvLyBDcmVhdGUgcm9vdCBub2RlLgoKICAgIC8vIFNvbWV0aW1lcyBhIE1CQ1MgY2hhciBjb3JyZXNwb25kcyB0byBhIHNlcXVlbmNlIG9mIHVuaWNvZGUgY2hhcnMuIFdlIHN0b3JlIHRoZW0gYXMgYXJyYXlzIG9mIGludGVnZXJzIGhlcmUuIAogICAgdGhpcy5kZWNvZGVUYWJsZVNlcSA9IFtdOwoKICAgIC8vIEFjdHVhbCBtYXBwaW5nIHRhYmxlcyBjb25zaXN0IG9mIGNodW5rcy4gVXNlIHRoZW0gdG8gZmlsbCB1cCBkZWNvZGUgdGFibGVzLgogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXBwaW5nVGFibGUubGVuZ3RoOyBpKyspCiAgICAgICAgdGhpcy5fYWRkRGVjb2RlQ2h1bmsobWFwcGluZ1RhYmxlW2ldKTsKCiAgICB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZSA9IGljb252LmRlZmF1bHRDaGFyVW5pY29kZTsKCiAgICAKICAgIC8vIEVuY29kZSB0YWJsZXM6IFVuaWNvZGUgLT4gREJDUy4KCiAgICAvLyBgZW5jb2RlVGFibGVgIGlzIGFycmF5IG1hcHBpbmcgZnJvbSB1bmljb2RlIGNoYXIgdG8gZW5jb2RlZCBjaGFyLiBBbGwgaXRzIHZhbHVlcyBhcmUgaW50ZWdlcnMgZm9yIHBlcmZvcm1hbmNlLgogICAgLy8gQmVjYXVzZSBpdCBjYW4gYmUgc3BhcnNlLCBpdCBpcyByZXByZXNlbnRlZCBhcyBhcnJheSBvZiBidWNrZXRzIGJ5IDI1NiBjaGFycyBlYWNoLiBCdWNrZXQgY2FuIGJlIG51bGwuCiAgICAvLyBWYWx1ZXM6ID49ICAwIC0+IGl0IGlzIGEgbm9ybWFsIGNoYXIuIFdyaXRlIHRoZSB2YWx1ZSAoaWYgPD0yNTYgdGhlbiAxIGJ5dGUsIGlmIDw9NjU1MzYgdGhlbiAyIGJ5dGVzLCBldGMuKS4KICAgIC8vICAgICAgICAgPT0gVU5BU1NJR05FRCAtPiBubyBjb252ZXJzaW9uIGZvdW5kLiBPdXRwdXQgYSBkZWZhdWx0IGNoYXIuCiAgICAvLyAgICAgICAgIDw9IFNFUV9TVEFSVCAgLT4gaXQncyBhbiBpbmRleCBpbiBlbmNvZGVUYWJsZVNlcSwgc2VlIGJlbG93LiBUaGUgY2hhcmFjdGVyIHN0YXJ0cyBhIHNlcXVlbmNlLgogICAgdGhpcy5lbmNvZGVUYWJsZSA9IFtdOwogICAgCiAgICAvLyBgZW5jb2RlVGFibGVTZXFgIGlzIHVzZWQgd2hlbiBhIHNlcXVlbmNlIG9mIHVuaWNvZGUgY2hhcmFjdGVycyBpcyBlbmNvZGVkIGFzIGEgc2luZ2xlIGNvZGUuIFdlIHVzZSBhIHRyZWUgb2YKICAgIC8vIG9iamVjdHMgd2hlcmUga2V5cyBjb3JyZXNwb25kIHRvIGNoYXJhY3RlcnMgaW4gc2VxdWVuY2UgYW5kIGxlYWZzIGFyZSB0aGUgZW5jb2RlZCBkYmNzIHZhbHVlcy4gQSBzcGVjaWFsIERFRl9DSEFSIGtleQogICAgLy8gbWVhbnMgZW5kIG9mIHNlcXVlbmNlIChuZWVkZWQgd2hlbiBvbmUgc2VxdWVuY2UgaXMgYSBzdHJpY3Qgc3Vic2VxdWVuY2Ugb2YgYW5vdGhlcikuCiAgICAvLyBPYmplY3RzIGFyZSBrZXB0IHNlcGFyYXRlbHkgZnJvbSBlbmNvZGVUYWJsZSB0byBpbmNyZWFzZSBwZXJmb3JtYW5jZS4KICAgIHRoaXMuZW5jb2RlVGFibGVTZXEgPSBbXTsKCiAgICAvLyBTb21lIGNoYXJzIGNhbiBiZSBkZWNvZGVkLCBidXQgbmVlZCBub3QgYmUgZW5jb2RlZC4KICAgIHZhciBza2lwRW5jb2RlQ2hhcnMgPSB7fTsKICAgIGlmIChjb2RlY09wdGlvbnMuZW5jb2RlU2tpcFZhbHMpCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2RlY09wdGlvbnMuZW5jb2RlU2tpcFZhbHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHZhbCA9IGNvZGVjT3B0aW9ucy5lbmNvZGVTa2lwVmFsc1tpXTsKICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKQogICAgICAgICAgICAgICAgc2tpcEVuY29kZUNoYXJzW3ZhbF0gPSB0cnVlOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gdmFsLmZyb207IGogPD0gdmFsLnRvOyBqKyspCiAgICAgICAgICAgICAgICAgICAgc2tpcEVuY29kZUNoYXJzW2pdID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAvLyBVc2UgZGVjb2RlIHRyaWUgdG8gcmVjdXJzaXZlbHkgZmlsbCBvdXQgZW5jb2RlIHRhYmxlcy4KICAgIHRoaXMuX2ZpbGxFbmNvZGVUYWJsZSgwLCAwLCBza2lwRW5jb2RlQ2hhcnMpOwoKICAgIC8vIEFkZCBtb3JlIGVuY29kaW5nIHBhaXJzIHdoZW4gbmVlZGVkLgogICAgaWYgKGNvZGVjT3B0aW9ucy5lbmNvZGVBZGQpIHsKICAgICAgICBmb3IgKHZhciB1Q2hhciBpbiBjb2RlY09wdGlvbnMuZW5jb2RlQWRkKQogICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNvZGVjT3B0aW9ucy5lbmNvZGVBZGQsIHVDaGFyKSkKICAgICAgICAgICAgICAgIHRoaXMuX3NldEVuY29kZUNoYXIodUNoYXIuY2hhckNvZGVBdCgwKSwgY29kZWNPcHRpb25zLmVuY29kZUFkZFt1Q2hhcl0pOwogICAgfQoKICAgIHRoaXMuZGVmQ2hhclNCICA9IHRoaXMuZW5jb2RlVGFibGVbMF1baWNvbnYuZGVmYXVsdENoYXJTaW5nbGVCeXRlLmNoYXJDb2RlQXQoMCldOwogICAgaWYgKHRoaXMuZGVmQ2hhclNCID09PSBVTkFTU0lHTkVEKSB0aGlzLmRlZkNoYXJTQiA9IHRoaXMuZW5jb2RlVGFibGVbMF1bJz8nXTsKICAgIGlmICh0aGlzLmRlZkNoYXJTQiA9PT0gVU5BU1NJR05FRCkgdGhpcy5kZWZDaGFyU0IgPSAiPyIuY2hhckNvZGVBdCgwKTsKCgogICAgLy8gTG9hZCAmIGNyZWF0ZSBHQjE4MDMwIHRhYmxlcyB3aGVuIG5lZWRlZC4KICAgIGlmICh0eXBlb2YgY29kZWNPcHRpb25zLmdiMTgwMzAgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICB0aGlzLmdiMTgwMzAgPSBjb2RlY09wdGlvbnMuZ2IxODAzMCgpOyAvLyBMb2FkIEdCMTgwMzAgcmFuZ2VzLgoKICAgICAgICAvLyBBZGQgR0IxODAzMCBkZWNvZGUgdGFibGVzLgogICAgICAgIHZhciB0aGlyZEJ5dGVOb2RlSWR4ID0gdGhpcy5kZWNvZGVUYWJsZXMubGVuZ3RoOwogICAgICAgIHZhciB0aGlyZEJ5dGVOb2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbdGhpcmRCeXRlTm9kZUlkeF0gPSBVTkFTU0lHTkVEX05PREUuc2xpY2UoMCk7CgogICAgICAgIHZhciBmb3VydGhCeXRlTm9kZUlkeCA9IHRoaXMuZGVjb2RlVGFibGVzLmxlbmd0aDsKICAgICAgICB2YXIgZm91cnRoQnl0ZU5vZGUgPSB0aGlzLmRlY29kZVRhYmxlc1tmb3VydGhCeXRlTm9kZUlkeF0gPSBVTkFTU0lHTkVEX05PREUuc2xpY2UoMCk7CgogICAgICAgIGZvciAodmFyIGkgPSAweDgxOyBpIDw9IDB4RkU7IGkrKykgewogICAgICAgICAgICB2YXIgc2Vjb25kQnl0ZU5vZGVJZHggPSBOT0RFX1NUQVJUIC0gdGhpcy5kZWNvZGVUYWJsZXNbMF1baV07CiAgICAgICAgICAgIHZhciBzZWNvbmRCeXRlTm9kZSA9IHRoaXMuZGVjb2RlVGFibGVzW3NlY29uZEJ5dGVOb2RlSWR4XTsKICAgICAgICAgICAgZm9yICh2YXIgaiA9IDB4MzA7IGogPD0gMHgzOTsgaisrKQogICAgICAgICAgICAgICAgc2Vjb25kQnl0ZU5vZGVbal0gPSBOT0RFX1NUQVJUIC0gdGhpcmRCeXRlTm9kZUlkeDsKICAgICAgICB9CiAgICAgICAgZm9yICh2YXIgaSA9IDB4ODE7IGkgPD0gMHhGRTsgaSsrKQogICAgICAgICAgICB0aGlyZEJ5dGVOb2RlW2ldID0gTk9ERV9TVEFSVCAtIGZvdXJ0aEJ5dGVOb2RlSWR4OwogICAgICAgIGZvciAodmFyIGkgPSAweDMwOyBpIDw9IDB4Mzk7IGkrKykKICAgICAgICAgICAgZm91cnRoQnl0ZU5vZGVbaV0gPSBHQjE4MDMwX0NPREUKICAgIH0gICAgICAgIAp9CgpEQkNTQ29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBEQkNTRW5jb2RlcjsKREJDU0NvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gREJDU0RlY29kZXI7CgovLyBEZWNvZGVyIGhlbHBlcnMKREJDU0NvZGVjLnByb3RvdHlwZS5fZ2V0RGVjb2RlVHJpZU5vZGUgPSBmdW5jdGlvbihhZGRyKSB7CiAgICB2YXIgYnl0ZXMgPSBbXTsKICAgIGZvciAoOyBhZGRyID4gMDsgYWRkciA+Pj0gOCkKICAgICAgICBieXRlcy5wdXNoKGFkZHIgJiAweEZGKTsKICAgIGlmIChieXRlcy5sZW5ndGggPT0gMCkKICAgICAgICBieXRlcy5wdXNoKDApOwoKICAgIHZhciBub2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbMF07CiAgICBmb3IgKHZhciBpID0gYnl0ZXMubGVuZ3RoLTE7IGkgPiAwOyBpLS0pIHsgLy8gVHJhdmVyc2Ugbm9kZXMgZGVlcGVyIGludG8gdGhlIHRyaWUuCiAgICAgICAgdmFyIHZhbCA9IG5vZGVbYnl0ZXNbaV1dOwoKICAgICAgICBpZiAodmFsID09IFVOQVNTSUdORUQpIHsgLy8gQ3JlYXRlIG5ldyBub2RlLgogICAgICAgICAgICBub2RlW2J5dGVzW2ldXSA9IE5PREVfU1RBUlQgLSB0aGlzLmRlY29kZVRhYmxlcy5sZW5ndGg7CiAgICAgICAgICAgIHRoaXMuZGVjb2RlVGFibGVzLnB1c2gobm9kZSA9IFVOQVNTSUdORURfTk9ERS5zbGljZSgwKSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHZhbCA8PSBOT0RFX1NUQVJUKSB7IC8vIEV4aXN0aW5nIG5vZGUuCiAgICAgICAgICAgIG5vZGUgPSB0aGlzLmRlY29kZVRhYmxlc1tOT0RFX1NUQVJUIC0gdmFsXTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk92ZXJ3cml0ZSBieXRlIGluICIgKyB0aGlzLmVuY29kaW5nTmFtZSArICIsIGFkZHI6ICIgKyBhZGRyLnRvU3RyaW5nKDE2KSk7CiAgICB9CiAgICByZXR1cm4gbm9kZTsKfQoKCkRCQ1NDb2RlYy5wcm90b3R5cGUuX2FkZERlY29kZUNodW5rID0gZnVuY3Rpb24oY2h1bmspIHsKICAgIC8vIEZpcnN0IGVsZW1lbnQgb2YgY2h1bmsgaXMgdGhlIGhleCBtYmNzIGNvZGUgd2hlcmUgd2Ugc3RhcnQuCiAgICB2YXIgY3VyQWRkciA9IHBhcnNlSW50KGNodW5rWzBdLCAxNik7CgogICAgLy8gQ2hvb3NlIHRoZSBkZWNvZGluZyBub2RlIHdoZXJlIHdlJ2xsIHdyaXRlIG91ciBjaGFycy4KICAgIHZhciB3cml0ZVRhYmxlID0gdGhpcy5fZ2V0RGVjb2RlVHJpZU5vZGUoY3VyQWRkcik7CiAgICBjdXJBZGRyID0gY3VyQWRkciAmIDB4RkY7CgogICAgLy8gV3JpdGUgYWxsIG90aGVyIGVsZW1lbnRzIG9mIHRoZSBjaHVuayB0byB0aGUgdGFibGUuCiAgICBmb3IgKHZhciBrID0gMTsgayA8IGNodW5rLmxlbmd0aDsgaysrKSB7CiAgICAgICAgdmFyIHBhcnQgPSBjaHVua1trXTsKICAgICAgICBpZiAodHlwZW9mIHBhcnQgPT09ICJzdHJpbmciKSB7IC8vIFN0cmluZywgd3JpdGUgYXMtaXMuCiAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgcGFydC5sZW5ndGg7KSB7CiAgICAgICAgICAgICAgICB2YXIgY29kZSA9IHBhcnQuY2hhckNvZGVBdChsKyspOwogICAgICAgICAgICAgICAgaWYgKDB4RDgwMCA8PSBjb2RlICYmIGNvZGUgPCAweERDMDApIHsgLy8gRGVjb2RlIHN1cnJvZ2F0ZQogICAgICAgICAgICAgICAgICAgIHZhciBjb2RlVHJhaWwgPSBwYXJ0LmNoYXJDb2RlQXQobCsrKTsKICAgICAgICAgICAgICAgICAgICBpZiAoMHhEQzAwIDw9IGNvZGVUcmFpbCAmJiBjb2RlVHJhaWwgPCAweEUwMDApCiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlVGFibGVbY3VyQWRkcisrXSA9IDB4MTAwMDAgKyAoY29kZSAtIDB4RDgwMCkgKiAweDQwMCArIChjb2RlVHJhaWwgLSAweERDMDApOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3Qgc3Vycm9nYXRlIHBhaXIgaW4gIiAgKyB0aGlzLmVuY29kaW5nTmFtZSArICIgYXQgY2h1bmsgIiArIGNodW5rWzBdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKDB4MEZGMCA8IGNvZGUgJiYgY29kZSA8PSAweDBGRkYpIHsgLy8gQ2hhcmFjdGVyIHNlcXVlbmNlIChvdXIgb3duIGVuY29kaW5nIHVzZWQpCiAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IDB4RkZGIC0gY29kZSArIDI7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNlcSA9IFtdOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG0gPSAwOyBtIDwgbGVuOyBtKyspCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcS5wdXNoKHBhcnQuY2hhckNvZGVBdChsKyspKTsgLy8gU2ltcGxlIHZhcmlhdGlvbjogZG9uJ3Qgc3VwcG9ydCBzdXJyb2dhdGVzIG9yIHN1YnNlcXVlbmNlcyBpbiBzZXEuCgogICAgICAgICAgICAgICAgICAgIHdyaXRlVGFibGVbY3VyQWRkcisrXSA9IFNFUV9TVEFSVCAtIHRoaXMuZGVjb2RlVGFibGVTZXEubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGVjb2RlVGFibGVTZXEucHVzaChzZXEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHdyaXRlVGFibGVbY3VyQWRkcisrXSA9IGNvZGU7IC8vIEJhc2ljIGNoYXIKICAgICAgICAgICAgfQogICAgICAgIH0gCiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHBhcnQgPT09ICJudW1iZXIiKSB7IC8vIEludGVnZXIsIG1lYW5pbmcgaW5jcmVhc2luZyBzZXF1ZW5jZSBzdGFydGluZyB3aXRoIHByZXYgY2hhcmFjdGVyLgogICAgICAgICAgICB2YXIgY2hhckNvZGUgPSB3cml0ZVRhYmxlW2N1ckFkZHIgLSAxXSArIDE7CiAgICAgICAgICAgIGZvciAodmFyIGwgPSAwOyBsIDwgcGFydDsgbCsrKQogICAgICAgICAgICAgICAgd3JpdGVUYWJsZVtjdXJBZGRyKytdID0gY2hhckNvZGUrKzsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkluY29ycmVjdCB0eXBlICciICsgdHlwZW9mIHBhcnQgKyAiJyBnaXZlbiBpbiAiICArIHRoaXMuZW5jb2RpbmdOYW1lICsgIiBhdCBjaHVuayAiICsgY2h1bmtbMF0pOwogICAgfQogICAgaWYgKGN1ckFkZHIgPiAweEZGKQogICAgICAgIHRocm93IG5ldyBFcnJvcigiSW5jb3JyZWN0IGNodW5rIGluICIgICsgdGhpcy5lbmNvZGluZ05hbWUgKyAiIGF0IGFkZHIgIiArIGNodW5rWzBdICsgIjogdG9vIGxvbmciICsgY3VyQWRkcik7Cn0KCi8vIEVuY29kZXIgaGVscGVycwpEQkNTQ29kZWMucHJvdG90eXBlLl9nZXRFbmNvZGVCdWNrZXQgPSBmdW5jdGlvbih1Q29kZSkgewogICAgdmFyIGhpZ2ggPSB1Q29kZSA+PiA4OyAvLyBUaGlzIGNvdWxkIGJlID4gMHhGRiBiZWNhdXNlIG9mIGFzdHJhbCBjaGFyYWN0ZXJzLgogICAgaWYgKHRoaXMuZW5jb2RlVGFibGVbaGlnaF0gPT09IHVuZGVmaW5lZCkKICAgICAgICB0aGlzLmVuY29kZVRhYmxlW2hpZ2hdID0gVU5BU1NJR05FRF9OT0RFLnNsaWNlKDApOyAvLyBDcmVhdGUgYnVja2V0IG9uIGRlbWFuZC4KICAgIHJldHVybiB0aGlzLmVuY29kZVRhYmxlW2hpZ2hdOwp9CgpEQkNTQ29kZWMucHJvdG90eXBlLl9zZXRFbmNvZGVDaGFyID0gZnVuY3Rpb24odUNvZGUsIGRiY3NDb2RlKSB7CiAgICB2YXIgYnVja2V0ID0gdGhpcy5fZ2V0RW5jb2RlQnVja2V0KHVDb2RlKTsKICAgIHZhciBsb3cgPSB1Q29kZSAmIDB4RkY7CiAgICBpZiAoYnVja2V0W2xvd10gPD0gU0VRX1NUQVJUKQogICAgICAgIHRoaXMuZW5jb2RlVGFibGVTZXFbU0VRX1NUQVJULWJ1Y2tldFtsb3ddXVtERUZfQ0hBUl0gPSBkYmNzQ29kZTsgLy8gVGhlcmUncyBhbHJlYWR5IGEgc2VxdWVuY2UsIHNldCBhIHNpbmdsZS1jaGFyIHN1YnNlcXVlbmNlIG9mIGl0LgogICAgZWxzZSBpZiAoYnVja2V0W2xvd10gPT0gVU5BU1NJR05FRCkKICAgICAgICBidWNrZXRbbG93XSA9IGRiY3NDb2RlOwp9CgpEQkNTQ29kZWMucHJvdG90eXBlLl9zZXRFbmNvZGVTZXF1ZW5jZSA9IGZ1bmN0aW9uKHNlcSwgZGJjc0NvZGUpIHsKICAgIAogICAgLy8gR2V0IHRoZSByb290IG9mIGNoYXJhY3RlciB0cmVlIGFjY29yZGluZyB0byBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHNlcXVlbmNlLgogICAgdmFyIHVDb2RlID0gc2VxWzBdOwogICAgdmFyIGJ1Y2tldCA9IHRoaXMuX2dldEVuY29kZUJ1Y2tldCh1Q29kZSk7CiAgICB2YXIgbG93ID0gdUNvZGUgJiAweEZGOwoKICAgIHZhciBub2RlOwogICAgaWYgKGJ1Y2tldFtsb3ddIDw9IFNFUV9TVEFSVCkgewogICAgICAgIC8vIFRoZXJlJ3MgYWxyZWFkeSBhIHNlcXVlbmNlIHdpdGggIC0gdXNlIGl0LgogICAgICAgIG5vZGUgPSB0aGlzLmVuY29kZVRhYmxlU2VxW1NFUV9TVEFSVC1idWNrZXRbbG93XV07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAvLyBUaGVyZSB3YXMgbm8gc2VxdWVuY2Ugb2JqZWN0IC0gYWxsb2NhdGUgYSBuZXcgb25lLgogICAgICAgIG5vZGUgPSB7fTsKICAgICAgICBpZiAoYnVja2V0W2xvd10gIT09IFVOQVNTSUdORUQpIG5vZGVbREVGX0NIQVJdID0gYnVja2V0W2xvd107IC8vIElmIGEgY2hhciB3YXMgc2V0IGJlZm9yZSAtIG1ha2UgaXQgYSBzaW5nbGUtY2hhciBzdWJzZXF1ZW5jZS4KICAgICAgICBidWNrZXRbbG93XSA9IFNFUV9TVEFSVCAtIHRoaXMuZW5jb2RlVGFibGVTZXEubGVuZ3RoOwogICAgICAgIHRoaXMuZW5jb2RlVGFibGVTZXEucHVzaChub2RlKTsKICAgIH0KCiAgICAvLyBUcmF2ZXJzZSB0aGUgY2hhcmFjdGVyIHRyZWUsIGFsbG9jYXRpbmcgbmV3IG5vZGVzIGFzIG5lZWRlZC4KICAgIGZvciAodmFyIGogPSAxOyBqIDwgc2VxLmxlbmd0aC0xOyBqKyspIHsKICAgICAgICB2YXIgb2xkVmFsID0gbm9kZVt1Q29kZV07CiAgICAgICAgaWYgKHR5cGVvZiBvbGRWYWwgPT09ICdvYmplY3QnKQogICAgICAgICAgICBub2RlID0gb2xkVmFsOwogICAgICAgIGVsc2UgewogICAgICAgICAgICBub2RlID0gbm9kZVt1Q29kZV0gPSB7fQogICAgICAgICAgICBpZiAob2xkVmFsICE9PSB1bmRlZmluZWQpCiAgICAgICAgICAgICAgICBub2RlW0RFRl9DSEFSXSA9IG9sZFZhbAogICAgICAgIH0KICAgIH0KCiAgICAvLyBTZXQgdGhlIGxlYWYgdG8gZ2l2ZW4gZGJjc0NvZGUuCiAgICB1Q29kZSA9IHNlcVtzZXEubGVuZ3RoLTFdOwogICAgbm9kZVt1Q29kZV0gPSBkYmNzQ29kZTsKfQoKREJDU0NvZGVjLnByb3RvdHlwZS5fZmlsbEVuY29kZVRhYmxlID0gZnVuY3Rpb24obm9kZUlkeCwgcHJlZml4LCBza2lwRW5jb2RlQ2hhcnMpIHsKICAgIHZhciBub2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbbm9kZUlkeF07CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDB4MTAwOyBpKyspIHsKICAgICAgICB2YXIgdUNvZGUgPSBub2RlW2ldOwogICAgICAgIHZhciBtYkNvZGUgPSBwcmVmaXggKyBpOwogICAgICAgIGlmIChza2lwRW5jb2RlQ2hhcnNbbWJDb2RlXSkKICAgICAgICAgICAgY29udGludWU7CgogICAgICAgIGlmICh1Q29kZSA+PSAwKQogICAgICAgICAgICB0aGlzLl9zZXRFbmNvZGVDaGFyKHVDb2RlLCBtYkNvZGUpOwogICAgICAgIGVsc2UgaWYgKHVDb2RlIDw9IE5PREVfU1RBUlQpCiAgICAgICAgICAgIHRoaXMuX2ZpbGxFbmNvZGVUYWJsZShOT0RFX1NUQVJUIC0gdUNvZGUsIG1iQ29kZSA8PCA4LCBza2lwRW5jb2RlQ2hhcnMpOwogICAgICAgIGVsc2UgaWYgKHVDb2RlIDw9IFNFUV9TVEFSVCkKICAgICAgICAgICAgdGhpcy5fc2V0RW5jb2RlU2VxdWVuY2UodGhpcy5kZWNvZGVUYWJsZVNlcVtTRVFfU1RBUlQgLSB1Q29kZV0sIG1iQ29kZSk7CiAgICB9Cn0KCgoKLy8gPT0gRW5jb2RlciA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCmZ1bmN0aW9uIERCQ1NFbmNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7CiAgICAvLyBFbmNvZGVyIHN0YXRlCiAgICB0aGlzLmxlYWRTdXJyb2dhdGUgPSAtMTsKICAgIHRoaXMuc2VxT2JqID0gdW5kZWZpbmVkOwogICAgCiAgICAvLyBTdGF0aWMgZGF0YQogICAgdGhpcy5lbmNvZGVUYWJsZSA9IGNvZGVjLmVuY29kZVRhYmxlOwogICAgdGhpcy5lbmNvZGVUYWJsZVNlcSA9IGNvZGVjLmVuY29kZVRhYmxlU2VxOwogICAgdGhpcy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUgPSBjb2RlYy5kZWZDaGFyU0I7CiAgICB0aGlzLmdiMTgwMzAgPSBjb2RlYy5nYjE4MDMwOwp9CgpEQkNTRW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHsKICAgIHZhciBuZXdCdWYgPSBuZXcgQnVmZmVyKHN0ci5sZW5ndGggKiAodGhpcy5nYjE4MDMwID8gNCA6IDMpKSwgCiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IHRoaXMubGVhZFN1cnJvZ2F0ZSwKICAgICAgICBzZXFPYmogPSB0aGlzLnNlcU9iaiwgbmV4dENoYXIgPSAtMSwKICAgICAgICBpID0gMCwgaiA9IDA7CgogICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAvLyAwLiBHZXQgbmV4dCBjaGFyYWN0ZXIuCiAgICAgICAgaWYgKG5leHRDaGFyID09PSAtMSkgewogICAgICAgICAgICBpZiAoaSA9PSBzdHIubGVuZ3RoKSBicmVhazsKICAgICAgICAgICAgdmFyIHVDb2RlID0gc3RyLmNoYXJDb2RlQXQoaSsrKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciB1Q29kZSA9IG5leHRDaGFyOwogICAgICAgICAgICBuZXh0Q2hhciA9IC0xOyAgICAKICAgICAgICB9CgogICAgICAgIC8vIDEuIEhhbmRsZSBzdXJyb2dhdGVzLgogICAgICAgIGlmICgweEQ4MDAgPD0gdUNvZGUgJiYgdUNvZGUgPCAweEUwMDApIHsgLy8gQ2hhciBpcyBvbmUgb2Ygc3Vycm9nYXRlcy4KICAgICAgICAgICAgaWYgKHVDb2RlIDwgMHhEQzAwKSB7IC8vIFdlJ3ZlIGdvdCBsZWFkIHN1cnJvZ2F0ZS4KICAgICAgICAgICAgICAgIGlmIChsZWFkU3Vycm9nYXRlID09PSAtMSkgewogICAgICAgICAgICAgICAgICAgIGxlYWRTdXJyb2dhdGUgPSB1Q29kZTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IHVDb2RlOwogICAgICAgICAgICAgICAgICAgIC8vIERvdWJsZSBsZWFkIHN1cnJvZ2F0ZSBmb3VuZC4KICAgICAgICAgICAgICAgICAgICB1Q29kZSA9IFVOQVNTSUdORUQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7IC8vIFdlJ3ZlIGdvdCB0cmFpbCBzdXJyb2dhdGUuCiAgICAgICAgICAgICAgICBpZiAobGVhZFN1cnJvZ2F0ZSAhPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICB1Q29kZSA9IDB4MTAwMDAgKyAobGVhZFN1cnJvZ2F0ZSAtIDB4RDgwMCkgKiAweDQwMCArICh1Q29kZSAtIDB4REMwMCk7CiAgICAgICAgICAgICAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IC0xOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBJbmNvbXBsZXRlIHN1cnJvZ2F0ZSBwYWlyIC0gb25seSB0cmFpbCBzdXJyb2dhdGUgZm91bmQuCiAgICAgICAgICAgICAgICAgICAgdUNvZGUgPSBVTkFTU0lHTkVEOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSAhPT0gLTEpIHsKICAgICAgICAgICAgLy8gSW5jb21wbGV0ZSBzdXJyb2dhdGUgcGFpciAtIG9ubHkgbGVhZCBzdXJyb2dhdGUgZm91bmQuCiAgICAgICAgICAgIG5leHRDaGFyID0gdUNvZGU7IHVDb2RlID0gVU5BU1NJR05FRDsgLy8gV3JpdGUgYW4gZXJyb3IsIHRoZW4gY3VycmVudCBjaGFyLgogICAgICAgICAgICBsZWFkU3Vycm9nYXRlID0gLTE7CiAgICAgICAgfQoKICAgICAgICAvLyAyLiBDb252ZXJ0IHVDb2RlIGNoYXJhY3Rlci4KICAgICAgICB2YXIgZGJjc0NvZGUgPSBVTkFTU0lHTkVEOwogICAgICAgIGlmIChzZXFPYmogIT09IHVuZGVmaW5lZCAmJiB1Q29kZSAhPSBVTkFTU0lHTkVEKSB7IC8vIFdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzZXF1ZW5jZQogICAgICAgICAgICB2YXIgcmVzQ29kZSA9IHNlcU9ialt1Q29kZV07CiAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzQ29kZSA9PT0gJ29iamVjdCcpIHsgLy8gU2VxdWVuY2UgY29udGludWVzLgogICAgICAgICAgICAgICAgc2VxT2JqID0gcmVzQ29kZTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzQ29kZSA9PSAnbnVtYmVyJykgeyAvLyBTZXF1ZW5jZSBmaW5pc2hlZC4gV3JpdGUgaXQuCiAgICAgICAgICAgICAgICBkYmNzQ29kZSA9IHJlc0NvZGU7CgogICAgICAgICAgICB9IGVsc2UgaWYgKHJlc0NvZGUgPT0gdW5kZWZpbmVkKSB7IC8vIEN1cnJlbnQgY2hhcmFjdGVyIGlzIG5vdCBwYXJ0IG9mIHRoZSBzZXF1ZW5jZS4KCiAgICAgICAgICAgICAgICAvLyBUcnkgZGVmYXVsdCBjaGFyYWN0ZXIgZm9yIHRoaXMgc2VxdWVuY2UKICAgICAgICAgICAgICAgIHJlc0NvZGUgPSBzZXFPYmpbREVGX0NIQVJdOwogICAgICAgICAgICAgICAgaWYgKHJlc0NvZGUgIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIGRiY3NDb2RlID0gcmVzQ29kZTsgLy8gRm91bmQuIFdyaXRlIGl0LgogICAgICAgICAgICAgICAgICAgIG5leHRDaGFyID0gdUNvZGU7IC8vIEN1cnJlbnQgY2hhcmFjdGVyIHdpbGwgYmUgd3JpdHRlbiB0b28gaW4gdGhlIG5leHQgaXRlcmF0aW9uLgoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogV2hhdCBpZiB3ZSBoYXZlIG5vIGRlZmF1bHQ/IChyZXNDb2RlID09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgICAgICAvLyBUaGVuLCB3ZSBzaG91bGQgd3JpdGUgZmlyc3QgY2hhciBvZiB0aGUgc2VxdWVuY2UgYXMtaXMgYW5kIHRyeSB0aGUgcmVzdCByZWN1cnNpdmVseS4KICAgICAgICAgICAgICAgICAgICAvLyBEaWRuJ3QgZG8gaXQgZm9yIG5vdyBiZWNhdXNlIG5vIGVuY29kaW5nIGhhcyB0aGlzIHNpdHVhdGlvbiB5ZXQuCiAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBqdXN0IHNraXAgdGhlIHNlcXVlbmNlIGFuZCB3cml0ZSBjdXJyZW50IGNoYXIuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2VxT2JqID0gdW5kZWZpbmVkOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh1Q29kZSA+PSAwKSB7ICAvLyBSZWd1bGFyIGNoYXJhY3RlcgogICAgICAgICAgICB2YXIgc3VidGFibGUgPSB0aGlzLmVuY29kZVRhYmxlW3VDb2RlID4+IDhdOwogICAgICAgICAgICBpZiAoc3VidGFibGUgIT09IHVuZGVmaW5lZCkKICAgICAgICAgICAgICAgIGRiY3NDb2RlID0gc3VidGFibGVbdUNvZGUgJiAweEZGXTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChkYmNzQ29kZSA8PSBTRVFfU1RBUlQpIHsgLy8gU2VxdWVuY2Ugc3RhcnQKICAgICAgICAgICAgICAgIHNlcU9iaiA9IHRoaXMuZW5jb2RlVGFibGVTZXFbU0VRX1NUQVJULWRiY3NDb2RlXTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoZGJjc0NvZGUgPT0gVU5BU1NJR05FRCAmJiB0aGlzLmdiMTgwMzApIHsKICAgICAgICAgICAgICAgIC8vIFVzZSBHQjE4MDMwIGFsZ29yaXRobSB0byBmaW5kIGNoYXJhY3RlcihzKSB0byB3cml0ZS4KICAgICAgICAgICAgICAgIHZhciBpZHggPSBmaW5kSWR4KHRoaXMuZ2IxODAzMC51Q2hhcnMsIHVDb2RlKTsKICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgZGJjc0NvZGUgPSB0aGlzLmdiMTgwMzAuZ2JDaGFyc1tpZHhdICsgKHVDb2RlIC0gdGhpcy5nYjE4MDMwLnVDaGFyc1tpZHhdKTsKICAgICAgICAgICAgICAgICAgICBuZXdCdWZbaisrXSA9IDB4ODEgKyBNYXRoLmZsb29yKGRiY3NDb2RlIC8gMTI2MDApOyBkYmNzQ29kZSA9IGRiY3NDb2RlICUgMTI2MDA7CiAgICAgICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSAweDMwICsgTWF0aC5mbG9vcihkYmNzQ29kZSAvIDEyNjApOyBkYmNzQ29kZSA9IGRiY3NDb2RlICUgMTI2MDsKICAgICAgICAgICAgICAgICAgICBuZXdCdWZbaisrXSA9IDB4ODEgKyBNYXRoLmZsb29yKGRiY3NDb2RlIC8gMTApOyBkYmNzQ29kZSA9IGRiY3NDb2RlICUgMTA7CiAgICAgICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSAweDMwICsgZGJjc0NvZGU7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIDMuIFdyaXRlIGRiY3NDb2RlIGNoYXJhY3Rlci4KICAgICAgICBpZiAoZGJjc0NvZGUgPT09IFVOQVNTSUdORUQpCiAgICAgICAgICAgIGRiY3NDb2RlID0gdGhpcy5kZWZhdWx0Q2hhclNpbmdsZUJ5dGU7CiAgICAgICAgCiAgICAgICAgaWYgKGRiY3NDb2RlIDwgMHgxMDApIHsKICAgICAgICAgICAgbmV3QnVmW2orK10gPSBkYmNzQ29kZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoZGJjc0NvZGUgPCAweDEwMDAwKSB7CiAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGUgPj4gODsgICAvLyBoaWdoIGJ5dGUKICAgICAgICAgICAgbmV3QnVmW2orK10gPSBkYmNzQ29kZSAmIDB4RkY7IC8vIGxvdyBieXRlCiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlID4+IDE2OwogICAgICAgICAgICBuZXdCdWZbaisrXSA9IChkYmNzQ29kZSA+PiA4KSAmIDB4RkY7CiAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGUgJiAweEZGOwogICAgICAgIH0KICAgIH0KCiAgICB0aGlzLnNlcU9iaiA9IHNlcU9iajsKICAgIHRoaXMubGVhZFN1cnJvZ2F0ZSA9IGxlYWRTdXJyb2dhdGU7CiAgICByZXR1cm4gbmV3QnVmLnNsaWNlKDAsIGopOwp9CgpEQkNTRW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7CiAgICBpZiAodGhpcy5sZWFkU3Vycm9nYXRlID09PSAtMSAmJiB0aGlzLnNlcU9iaiA9PT0gdW5kZWZpbmVkKQogICAgICAgIHJldHVybjsgLy8gQWxsIGNsZWFuLiBNb3N0IG9mdGVuIGNhc2UuCgogICAgdmFyIG5ld0J1ZiA9IG5ldyBCdWZmZXIoMTApLCBqID0gMDsKCiAgICBpZiAodGhpcy5zZXFPYmopIHsgLy8gV2UncmUgaW4gdGhlIHNlcXVlbmNlLgogICAgICAgIHZhciBkYmNzQ29kZSA9IHRoaXMuc2VxT2JqW0RFRl9DSEFSXTsKICAgICAgICBpZiAoZGJjc0NvZGUgIT09IHVuZGVmaW5lZCkgeyAvLyBXcml0ZSBiZWdpbm5pbmcgb2YgdGhlIHNlcXVlbmNlLgogICAgICAgICAgICBpZiAoZGJjc0NvZGUgPCAweDEwMCkgewogICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSBkYmNzQ29kZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGUgPj4gODsgICAvLyBoaWdoIGJ5dGUKICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGUgJiAweEZGOyAvLyBsb3cgYnl0ZQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gU2VlIHRvZG8gYWJvdmUuCiAgICAgICAgfQogICAgICAgIHRoaXMuc2VxT2JqID0gdW5kZWZpbmVkOwogICAgfQoKICAgIGlmICh0aGlzLmxlYWRTdXJyb2dhdGUgIT09IC0xKSB7CiAgICAgICAgLy8gSW5jb21wbGV0ZSBzdXJyb2dhdGUgcGFpciAtIG9ubHkgbGVhZCBzdXJyb2dhdGUgZm91bmQuCiAgICAgICAgbmV3QnVmW2orK10gPSB0aGlzLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZTsKICAgICAgICB0aGlzLmxlYWRTdXJyb2dhdGUgPSAtMTsKICAgIH0KICAgIAogICAgcmV0dXJuIG5ld0J1Zi5zbGljZSgwLCBqKTsKfQoKLy8gRXhwb3J0IGZvciB0ZXN0aW5nCkRCQ1NFbmNvZGVyLnByb3RvdHlwZS5maW5kSWR4ID0gZmluZElkeDsKCgovLyA9PSBEZWNvZGVyID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKZnVuY3Rpb24gREJDU0RlY29kZXIob3B0aW9ucywgY29kZWMpIHsKICAgIC8vIERlY29kZXIgc3RhdGUKICAgIHRoaXMubm9kZUlkeCA9IDA7CiAgICB0aGlzLnByZXZCdWYgPSBuZXcgQnVmZmVyKDApOwoKICAgIC8vIFN0YXRpYyBkYXRhCiAgICB0aGlzLmRlY29kZVRhYmxlcyA9IGNvZGVjLmRlY29kZVRhYmxlczsKICAgIHRoaXMuZGVjb2RlVGFibGVTZXEgPSBjb2RlYy5kZWNvZGVUYWJsZVNlcTsKICAgIHRoaXMuZGVmYXVsdENoYXJVbmljb2RlID0gY29kZWMuZGVmYXVsdENoYXJVbmljb2RlOwogICAgdGhpcy5nYjE4MDMwID0gY29kZWMuZ2IxODAzMDsKfQoKREJDU0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmKSB7CiAgICB2YXIgbmV3QnVmID0gbmV3IEJ1ZmZlcihidWYubGVuZ3RoKjIpLAogICAgICAgIG5vZGVJZHggPSB0aGlzLm5vZGVJZHgsIAogICAgICAgIHByZXZCdWYgPSB0aGlzLnByZXZCdWYsIHByZXZCdWZPZmZzZXQgPSB0aGlzLnByZXZCdWYubGVuZ3RoLAogICAgICAgIHNlcVN0YXJ0ID0gLXRoaXMucHJldkJ1Zi5sZW5ndGgsIC8vIGlkeCBvZiB0aGUgc3RhcnQgb2YgY3VycmVudCBwYXJzZWQgc2VxdWVuY2UuCiAgICAgICAgdUNvZGU7CgogICAgaWYgKHByZXZCdWZPZmZzZXQgPiAwKSAvLyBNYWtlIHByZXYgYnVmIG92ZXJsYXAgYSBsaXR0bGUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc2xpY2UgbGF0ZXIuCiAgICAgICAgcHJldkJ1ZiA9IEJ1ZmZlci5jb25jYXQoW3ByZXZCdWYsIGJ1Zi5zbGljZSgwLCAxMCldKTsKICAgIAogICAgZm9yICh2YXIgaSA9IDAsIGogPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGN1ckJ5dGUgPSAoaSA+PSAwKSA/IGJ1ZltpXSA6IHByZXZCdWZbaSArIHByZXZCdWZPZmZzZXRdOwoKICAgICAgICAvLyBMb29rdXAgaW4gY3VycmVudCB0cmllIG5vZGUuCiAgICAgICAgdmFyIHVDb2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbbm9kZUlkeF1bY3VyQnl0ZV07CgogICAgICAgIGlmICh1Q29kZSA+PSAwKSB7IAogICAgICAgICAgICAvLyBOb3JtYWwgY2hhcmFjdGVyLCBqdXN0IHVzZSBpdC4KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAodUNvZGUgPT09IFVOQVNTSUdORUQpIHsgLy8gVW5rbm93biBjaGFyLgogICAgICAgICAgICAvLyBUT0RPOiBDYWxsYmFjayB3aXRoIHNlcS4KICAgICAgICAgICAgLy92YXIgY3VyU2VxID0gKHNlcVN0YXJ0ID49IDApID8gYnVmLnNsaWNlKHNlcVN0YXJ0LCBpKzEpIDogcHJldkJ1Zi5zbGljZShzZXFTdGFydCArIHByZXZCdWZPZmZzZXQsIGkrMSArIHByZXZCdWZPZmZzZXQpOwogICAgICAgICAgICBpID0gc2VxU3RhcnQ7IC8vIFRyeSB0byBwYXJzZSBhZ2FpbiwgYWZ0ZXIgc2tpcHBpbmcgZmlyc3QgYnl0ZSBvZiB0aGUgc2VxdWVuY2UgKCdpJyB3aWxsIGJlIGluY3JlbWVudGVkIGJ5ICdmb3InIGN5Y2xlKS4KICAgICAgICAgICAgdUNvZGUgPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZS5jaGFyQ29kZUF0KDApOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh1Q29kZSA9PT0gR0IxODAzMF9DT0RFKSB7CiAgICAgICAgICAgIHZhciBjdXJTZXEgPSAoc2VxU3RhcnQgPj0gMCkgPyBidWYuc2xpY2Uoc2VxU3RhcnQsIGkrMSkgOiBwcmV2QnVmLnNsaWNlKHNlcVN0YXJ0ICsgcHJldkJ1Zk9mZnNldCwgaSsxICsgcHJldkJ1Zk9mZnNldCk7CiAgICAgICAgICAgIHZhciBwdHIgPSAoY3VyU2VxWzBdLTB4ODEpKjEyNjAwICsgKGN1clNlcVsxXS0weDMwKSoxMjYwICsgKGN1clNlcVsyXS0weDgxKSoxMCArIChjdXJTZXFbM10tMHgzMCk7CiAgICAgICAgICAgIHZhciBpZHggPSBmaW5kSWR4KHRoaXMuZ2IxODAzMC5nYkNoYXJzLCBwdHIpOwogICAgICAgICAgICB1Q29kZSA9IHRoaXMuZ2IxODAzMC51Q2hhcnNbaWR4XSArIHB0ciAtIHRoaXMuZ2IxODAzMC5nYkNoYXJzW2lkeF07CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHVDb2RlIDw9IE5PREVfU1RBUlQpIHsgLy8gR28gdG8gbmV4dCB0cmllIG5vZGUuCiAgICAgICAgICAgIG5vZGVJZHggPSBOT0RFX1NUQVJUIC0gdUNvZGU7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh1Q29kZSA8PSBTRVFfU1RBUlQpIHsgLy8gT3V0cHV0IGEgc2VxdWVuY2Ugb2YgY2hhcnMuCiAgICAgICAgICAgIHZhciBzZXEgPSB0aGlzLmRlY29kZVRhYmxlU2VxW1NFUV9TVEFSVCAtIHVDb2RlXTsKICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBzZXEubGVuZ3RoIC0gMTsgaysrKSB7CiAgICAgICAgICAgICAgICB1Q29kZSA9IHNlcVtrXTsKICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gdUNvZGUgJiAweEZGOwogICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSB1Q29kZSA+PiA4OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVDb2RlID0gc2VxW3NlcS5sZW5ndGgtMV07CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJpY29udi1saXRlIGludGVybmFsIGVycm9yOiBpbnZhbGlkIGRlY29kaW5nIHRhYmxlIHZhbHVlICIgKyB1Q29kZSArICIgYXQgIiArIG5vZGVJZHggKyAiLyIgKyBjdXJCeXRlKTsKCiAgICAgICAgLy8gV3JpdGUgdGhlIGNoYXJhY3RlciB0byBidWZmZXIsIGhhbmRsaW5nIGhpZ2hlciBwbGFuZXMgdXNpbmcgc3Vycm9nYXRlIHBhaXIuCiAgICAgICAgaWYgKHVDb2RlID4gMHhGRkZGKSB7IAogICAgICAgICAgICB1Q29kZSAtPSAweDEwMDAwOwogICAgICAgICAgICB2YXIgdUNvZGVMZWFkID0gMHhEODAwICsgTWF0aC5mbG9vcih1Q29kZSAvIDB4NDAwKTsKICAgICAgICAgICAgbmV3QnVmW2orK10gPSB1Q29kZUxlYWQgJiAweEZGOwogICAgICAgICAgICBuZXdCdWZbaisrXSA9IHVDb2RlTGVhZCA+PiA4OwoKICAgICAgICAgICAgdUNvZGUgPSAweERDMDAgKyB1Q29kZSAlIDB4NDAwOwogICAgICAgIH0KICAgICAgICBuZXdCdWZbaisrXSA9IHVDb2RlICYgMHhGRjsKICAgICAgICBuZXdCdWZbaisrXSA9IHVDb2RlID4+IDg7CgogICAgICAgIC8vIFJlc2V0IHRyaWUgbm9kZS4KICAgICAgICBub2RlSWR4ID0gMDsgc2VxU3RhcnQgPSBpKzE7CiAgICB9CgogICAgdGhpcy5ub2RlSWR4ID0gbm9kZUlkeDsKICAgIHRoaXMucHJldkJ1ZiA9IChzZXFTdGFydCA+PSAwKSA/IGJ1Zi5zbGljZShzZXFTdGFydCkgOiBwcmV2QnVmLnNsaWNlKHNlcVN0YXJ0ICsgcHJldkJ1Zk9mZnNldCk7CiAgICByZXR1cm4gbmV3QnVmLnNsaWNlKDAsIGopLnRvU3RyaW5nKCd1Y3MyJyk7Cn0KCkRCQ1NEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHsKICAgIHZhciByZXQgPSAnJzsKCiAgICAvLyBUcnkgdG8gcGFyc2UgYWxsIHJlbWFpbmluZyBjaGFycy4KICAgIHdoaWxlICh0aGlzLnByZXZCdWYubGVuZ3RoID4gMCkgewogICAgICAgIC8vIFNraXAgMSBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlci4KICAgICAgICByZXQgKz0gdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU7CiAgICAgICAgdmFyIGJ1ZiA9IHRoaXMucHJldkJ1Zi5zbGljZSgxKTsKCiAgICAgICAgLy8gUGFyc2UgcmVtYWluaW5nIGFzIHVzdWFsLgogICAgICAgIHRoaXMucHJldkJ1ZiA9IG5ldyBCdWZmZXIoMCk7CiAgICAgICAgdGhpcy5ub2RlSWR4ID0gMDsKICAgICAgICBpZiAoYnVmLmxlbmd0aCA+IDApCiAgICAgICAgICAgIHJldCArPSB0aGlzLndyaXRlKGJ1Zik7CiAgICB9CgogICAgdGhpcy5ub2RlSWR4ID0gMDsKICAgIHJldHVybiByZXQ7Cn0KCi8vIEJpbmFyeSBzZWFyY2ggZm9yIEdCMTgwMzAuIFJldHVybnMgbGFyZ2VzdCBpIHN1Y2ggdGhhdCB0YWJsZVtpXSA8PSB2YWwuCmZ1bmN0aW9uIGZpbmRJZHgodGFibGUsIHZhbCkgewogICAgaWYgKHRhYmxlWzBdID4gdmFsKQogICAgICAgIHJldHVybiAtMTsKCiAgICB2YXIgbCA9IDAsIHIgPSB0YWJsZS5sZW5ndGg7CiAgICB3aGlsZSAobCA8IHItMSkgeyAvLyBhbHdheXMgdGFibGVbbF0gPD0gdmFsIDwgdGFibGVbcl0KICAgICAgICB2YXIgbWlkID0gbCArIE1hdGguZmxvb3IoKHItbCsxKS8yKTsKICAgICAgICBpZiAodGFibGVbbWlkXSA8PSB2YWwpCiAgICAgICAgICAgIGwgPSBtaWQ7CiAgICAgICAgZWxzZQogICAgICAgICAgICByID0gbWlkOwogICAgfQogICAgcmV0dXJuIGw7Cn0KCgoKLyoqKi8gfSksCi8qIDE3OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKLy8gRGVzY3JpcHRpb24gb2Ygc3VwcG9ydGVkIGRvdWJsZSBieXRlIGVuY29kaW5ncyBhbmQgYWxpYXNlcy4KLy8gVGFibGVzIGFyZSBub3QgcmVxdWlyZSgpLWQgdW50aWwgdGhleSBhcmUgbmVlZGVkIHRvIHNwZWVkIHVwIGxpYnJhcnkgbG9hZC4KLy8gcmVxdWlyZSgpLXMgYXJlIGRpcmVjdCB0byBzdXBwb3J0IEJyb3dzZXJpZnkuCgptb2R1bGUuZXhwb3J0cyA9IHsKICAgIAogICAgLy8gPT0gSmFwYW5lc2UvU2hpZnRKSVMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gQWxsIGphcGFuZXNlIGVuY29kaW5ncyBhcmUgYmFzZWQgb24gSklTIFggc2V0IG9mIHN0YW5kYXJkczoKICAgIC8vIEpJUyBYIDAyMDEgLSBTaW5nbGUtYnl0ZSBlbmNvZGluZyBvZiBBU0NJSSArIMKlICsgS2FuYSBjaGFycyBhdCAweEExLTB4REYuCiAgICAvLyBKSVMgWCAwMjA4IC0gTWFpbiBzZXQgb2YgNjg3OSBjaGFyYWN0ZXJzLCBwbGFjZWQgaW4gOTR4OTQgcGxhbmUsIHRvIGJlIGVuY29kZWQgYnkgMiBieXRlcy4gCiAgICAvLyAgICAgICAgICAgICAgSGFzIHNldmVyYWwgdmFyaWF0aW9ucyBpbiAxOTc4LCAxOTgzLCAxOTkwIGFuZCAxOTk3LgogICAgLy8gSklTIFggMDIxMiAtIFN1cHBsZW1lbnRhcnkgcGxhbmUgb2YgNjA2NyBjaGFycyBpbiA5NHg5NCBwbGFuZS4gMTk5MC4gRWZmZWN0aXZlbHkgZGVhZC4KICAgIC8vIEpJUyBYIDAyMTMgLSBFeHRlbnNpb24gYW5kIG1vZGVybiByZXBsYWNlbWVudCBvZiAwMjA4IGFuZCAwMjEyLiBUb3RhbCBjaGFyczogMTEyMzMuCiAgICAvLyAgICAgICAgICAgICAgMiBwbGFuZXMsIGZpcnN0IGlzIHN1cGVyc2V0IG9mIDAyMDgsIHNlY29uZCAtIHJldmlzZWQgMDIxMi4KICAgIC8vICAgICAgICAgICAgICBJbnRyb2R1Y2VkIGluIDIwMDAsIHJldmlzZWQgMjAwNC4gU29tZSBjaGFyYWN0ZXJzIGFyZSBpbiBVbmljb2RlIFBsYW5lIDIgKDB4Mnh4eHgpCgogICAgLy8gQnl0ZSBlbmNvZGluZ3MgYXJlOgogICAgLy8gICogU2hpZnRfSklTOiBDb21wYXRpYmxlIHdpdGggMDIwMSwgdXNlcyBub3QgZGVmaW5lZCBjaGFycyBpbiB0b3AgaGFsZiBhcyBsZWFkIGJ5dGVzIGZvciBkb3VibGUtYnl0ZQogICAgLy8gICAgICAgICAgICAgICBlbmNvZGluZyBvZiAwMjA4LiBMZWFkIGJ5dGUgcmFuZ2VzOiAweDgxLTB4OUYsIDB4RTAtMHhFRjsgVHJhaWwgYnl0ZSByYW5nZXM6IDB4NDAtMHg3RSwgMHg4MC0weDlFLCAweDlGLTB4RkMuCiAgICAvLyAgICAgICAgICAgICAgIFdpbmRvd3MgQ1A5MzIgaXMgYSBzdXBlcnNldCBvZiBTaGlmdF9KSVMuIFNvbWUgY29tcGFuaWVzIGFkZGVkIG1vcmUgY2hhcnMsIG5vdGFibHkgS0RESS4KICAgIC8vICAqIEVVQy1KUDogICAgVXAgdG8gMyBieXRlcyBwZXIgY2hhcmFjdGVyLiBVc2VkIG1vc3RseSBvbiAqbml4ZXMuCiAgICAvLyAgICAgICAgICAgICAgIDB4MDAtMHg3RiAgICAgICAtIGxvd2VyIHBhcnQgb2YgMDIwMQogICAgLy8gICAgICAgICAgICAgICAweDhFLCAweEExLTB4REYgLSB1cHBlciBwYXJ0IG9mIDAyMDEKICAgIC8vICAgICAgICAgICAgICAgKDB4QTEtMHhGRSl4MiAgIC0gMDIwOCBwbGFuZSAoOTR4OTQpLgogICAgLy8gICAgICAgICAgICAgICAweDhGLCAoMHhBMS0weEZFKXgyIC0gMDIxMiBwbGFuZSAoOTR4OTQpLgogICAgLy8gICogSklTIFggMjA4OiA3LWJpdCwgZGlyZWN0IGVuY29kaW5nIG9mIDAyMDguIEJ5dGUgcmFuZ2VzOiAweDIxLTB4N0UgKDk0IHZhbHVlcykuIFVuY29tbW9uLgogICAgLy8gICAgICAgICAgICAgICBVc2VkIGFzLWlzIGluIElTTzIwMjIgZmFtaWx5LgogICAgLy8gICogSVNPMjAyMi1KUDogU3RhdGVmdWwgZW5jb2RpbmcsIHdpdGggZXNjYXBlIHNlcXVlbmNlcyB0byBzd2l0Y2ggYmV0d2VlbiBBU0NJSSwgCiAgICAvLyAgICAgICAgICAgICAgICAwMjAxLTE5NzYgUm9tYW4sIDAyMDgtMTk3OCwgMDIwOC0xOTgzLgogICAgLy8gICogSVNPMjAyMi1KUC0xOiBBZGRzIGVzYyBzZXEgZm9yIDAyMTItMTk5MC4KICAgIC8vICAqIElTTzIwMjItSlAtMjogQWRkcyBlc2Mgc2VxIGZvciBHQjIzMTMtMTk4MCwgS1NYMTAwMS0xOTkyLCBJU084ODU5LTEsIElTTzg4NTktNy4KICAgIC8vICAqIElTTzIwMjItSlAtMzogQWRkcyBlc2Mgc2VxIGZvciAwMjAxLTE5NzYgS2FuYSBzZXQsIDAyMTMtMjAwMCBQbGFuZXMgMSwgMi4KICAgIC8vICAqIElTTzIwMjItSlAtMjAwNDogQWRkcyAwMjEzLTIwMDQgUGxhbmUgMS4KICAgIC8vCiAgICAvLyBBZnRlciBKSVMgWCAwMjEzIGFwcGVhcmVkLCBTaGlmdF9KSVMtMjAwNCwgRVVDLUpJU1gwMjEzIGFuZCBJU08yMDIyLUpQLTIwMDQgZm9sbG93ZWQsIHdpdGgganVzdCBjaGFuZ2luZyB0aGUgcGxhbmVzLgogICAgLy8KICAgIC8vIE92ZXJhbGwsIGl0IHNlZW1zIHRoYXQgaXQncyBhIG1lc3MgOiggaHR0cDovL3d3dzgucGxhbGEub3IuanAvdGt1Ym90YTEvdW5pY29kZS1zeW1ib2xzLW1hcDIuaHRtbAoKICAgICdzaGlmdGppcyc6IHsKICAgICAgICB0eXBlOiAnX2RiY3MnLAogICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMTgwKSB9LAogICAgICAgIGVuY29kZUFkZDogeydcdTAwYTUnOiAweDVDLCAnXHUyMDNFJzogMHg3RX0sCiAgICAgICAgZW5jb2RlU2tpcFZhbHM6IFt7ZnJvbTogMHhFRDQwLCB0bzogMHhGOTQwfV0sCiAgICB9LAogICAgJ2Nzc2hpZnRqaXMnOiAnc2hpZnRqaXMnLAogICAgJ21za2FuamknOiAnc2hpZnRqaXMnLAogICAgJ3NqaXMnOiAnc2hpZnRqaXMnLAogICAgJ3dpbmRvd3MzMWonOiAnc2hpZnRqaXMnLAogICAgJ21zMzFqJzogJ3NoaWZ0amlzJywKICAgICd4c2ppcyc6ICdzaGlmdGppcycsCiAgICAnd2luZG93czkzMic6ICdzaGlmdGppcycsCiAgICAnbXM5MzInOiAnc2hpZnRqaXMnLAogICAgJzkzMic6ICdzaGlmdGppcycsCiAgICAnY3A5MzInOiAnc2hpZnRqaXMnLAoKICAgICdldWNqcCc6IHsKICAgICAgICB0eXBlOiAnX2RiY3MnLAogICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oMTgxKSB9LAogICAgICAgIGVuY29kZUFkZDogeydcdTAwYTUnOiAweDVDLCAnXHUyMDNFJzogMHg3RX0sCiAgICB9LAoKICAgIC8vIFRPRE86IEtEREkgZXh0ZW5zaW9uIHRvIFNoaWZ0X0pJUwogICAgLy8gVE9ETzogSUJNIENDU0lEIDk0MiA9IENQOTMyLCBidXQgRjAtRjkgY3VzdG9tIGNoYXJzIGFuZCBvdGhlciBjaGFyIGNoYW5nZXMuCiAgICAvLyBUT0RPOiBJQk0gQ0NTSUQgOTQzID0gU2hpZnRfSklTID0gQ1A5MzIgd2l0aCBvcmlnaW5hbCBTaGlmdF9KSVMgbG93ZXIgMTI4IGNoYXJzLgoKCiAgICAvLyA9PSBDaGluZXNlL0dCSyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0dCSwogICAgLy8gV2UgbW9zdGx5IGltcGxlbWVudCBXM0MgcmVjb21tZW5kYXRpb246IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9lbmNvZGluZy8jZ2JrLWVuY29kZXIKCiAgICAvLyBPbGRlc3QgR0IyMzEyICgxOTgxLCB+NzYwMCBjaGFycykgaXMgYSBzdWJzZXQgb2YgQ1A5MzYKICAgICdnYjIzMTInOiAnY3A5MzYnLAogICAgJ2diMjMxMjgwJzogJ2NwOTM2JywKICAgICdnYjIzMTIxOTgwJzogJ2NwOTM2JywKICAgICdjc2diMjMxMic6ICdjcDkzNicsCiAgICAnY3Npc281OGdiMjMxMjgwJzogJ2NwOTM2JywKICAgICdldWNjbic6ICdjcDkzNicsCgogICAgLy8gTWljcm9zb2Z0J3MgQ1A5MzYgaXMgYSBzdWJzZXQgYW5kIGFwcHJveGltYXRpb24gb2YgR0JLLgogICAgJ3dpbmRvd3M5MzYnOiAnY3A5MzYnLAogICAgJ21zOTM2JzogJ2NwOTM2JywKICAgICc5MzYnOiAnY3A5MzYnLAogICAgJ2NwOTM2JzogewogICAgICAgIHR5cGU6ICdfZGJjcycsCiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyg1MykgfSwKICAgIH0sCgogICAgLy8gR0JLICh+MjIwMDAgY2hhcnMpIGlzIGFuIGV4dGVuc2lvbiBvZiBDUDkzNiB0aGF0IGFkZGVkIHVzZXItbWFwcGVkIGNoYXJzIGFuZCBzb21lIG90aGVyLgogICAgJ2diayc6IHsKICAgICAgICB0eXBlOiAnX2RiY3MnLAogICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oNTMpLmNvbmNhdChfX3dlYnBhY2tfcmVxdWlyZV9fKDkxKSkgfSwKICAgIH0sCiAgICAneGdiayc6ICdnYmsnLAogICAgJ2lzb2lyNTgnOiAnZ2JrJywKCiAgICAvLyBHQjE4MDMwIGlzIGFuIGFsZ29yaXRobWljIGV4dGVuc2lvbiBvZiBHQksuCiAgICAvLyBNYWluIHNvdXJjZTogaHR0cHM6Ly93d3cudzMub3JnL1RSL2VuY29kaW5nLyNnYmstZW5jb2RlcgogICAgLy8gaHR0cDovL2ljdS1wcm9qZWN0Lm9yZy9kb2NzL3BhcGVycy9nYjE4MDMwLmh0bWwKICAgIC8vIGh0dHA6Ly9zb3VyY2UuaWN1LXByb2plY3Qub3JnL3JlcG9zL2ljdS9kYXRhL3RydW5rL2NoYXJzZXQvZGF0YS94bWwvZ2ItMTgwMzAtMjAwMC54bWwKICAgIC8vIGh0dHA6Ly93d3cua2huZ2FpLmNvbS9jaGluZXNlL2NoYXJtYXAvdGJsZ2JrLnBocD9wYWdlPTAKICAgICdnYjE4MDMwJzogewogICAgICAgIHR5cGU6ICdfZGJjcycsCiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyg1MykuY29uY2F0KF9fd2VicGFja19yZXF1aXJlX18oOTEpKSB9LAogICAgICAgIGdiMTgwMzA6IGZ1bmN0aW9uKCkgeyByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygxODIpIH0sCiAgICAgICAgZW5jb2RlU2tpcFZhbHM6IFsweDgwXSwKICAgICAgICBlbmNvZGVBZGQ6IHsn4oKsJzogMHhBMkUzfSwKICAgIH0sCgogICAgJ2NoaW5lc2UnOiAnZ2IxODAzMCcsCgoKICAgIC8vID09IEtvcmVhbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIC8vIEVVQy1LUiwgS1NfQ181NjAxIGFuZCBLUyBYIDEwMDEgYXJlIGV4YWN0bHkgdGhlIHNhbWUuCiAgICAnd2luZG93czk0OSc6ICdjcDk0OScsCiAgICAnbXM5NDknOiAnY3A5NDknLAogICAgJzk0OSc6ICdjcDk0OScsCiAgICAnY3A5NDknOiB7CiAgICAgICAgdHlwZTogJ19kYmNzJywKICAgICAgICB0YWJsZTogZnVuY3Rpb24oKSB7IHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4MykgfSwKICAgIH0sCgogICAgJ2NzZXVja3InOiAnY3A5NDknLAogICAgJ2Nza3NjNTYwMTE5ODcnOiAnY3A5NDknLAogICAgJ2V1Y2tyJzogJ2NwOTQ5JywKICAgICdpc29pcjE0OSc6ICdjcDk0OScsCiAgICAna29yZWFuJzogJ2NwOTQ5JywKICAgICdrc2M1NjAxMTk4Nyc6ICdjcDk0OScsCiAgICAna3NjNTYwMTE5ODknOiAnY3A5NDknLAogICAgJ2tzYzU2MDEnOiAnY3A5NDknLAoKCiAgICAvLyA9PSBCaWc1L1RhaXdhbi9Ib25nIEtvbmcgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAvLyBUaGVyZSBhcmUgbG90cyBvZiB0YWJsZXMgZm9yIEJpZzUgYW5kIGNwOTUwLiBQbGVhc2Ugc2VlIHRoZSBmb2xsb3dpbmcgbGlua3MgZm9yIGhpc3Rvcnk6CiAgICAvLyBodHRwOi8vbW96dHcub3JnL2RvY3MvYmlnNS8gIGh0dHA6Ly93d3cuaGFpYmxlLmRlL2JydW5vL2NoYXJzZXRzL2NvbnZlcnNpb24tdGFibGVzL0JpZzUuaHRtbAogICAgLy8gVmFyaWF0aW9ucywgaW4gcm91Z2hseSBudW1iZXIgb2YgZGVmaW5lZCBjaGFyczoKICAgIC8vICAqIFdpbmRvd3MgQ1AgOTUwOiBNaWNyb3NvZnQgdmFyaWFudCBvZiBCaWc1LiBDYW5vbmljYWw6IGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUL1dJTkRPV1MvQ1A5NTAuVFhUCiAgICAvLyAgKiBXaW5kb3dzIENQIDk1MTogTWljcm9zb2Z0IHZhcmlhbnQgb2YgQmlnNS1IS1NDUy0yMDAxLiBTZWVtcyB0byBiZSBuZXZlciBwdWJsaWMuIGh0dHA6Ly9tZS5hYmVsY2hldW5nLm9yZy9hcnRpY2xlcy9yZXNlYXJjaC93aGF0LWlzLWNwOTUxLwogICAgLy8gICogQmlnNS0yMDAzIChUYWl3YW4gc3RhbmRhcmQpIGFsbW9zdCBzdXBlcnNldCBvZiBjcDk1MC4KICAgIC8vICAqIFVuaWNvZGUtYXQtb24gKFVBTykgLyBNb3ppbGxhIDEuOC4gRmFsbGluZyBvdXQgb2YgdXNlIG9uIHRoZSBXZWIuIE5vdCBzdXBwb3J0ZWQgYnkgb3RoZXIgYnJvd3NlcnMuCiAgICAvLyAgKiBCaWc1LUhLU0NTICgtMjAwMSwgLTIwMDQsIC0yMDA4KS4gSG9uZyBLb25nIHN0YW5kYXJkLiAKICAgIC8vICAgIG1hbnkgdW5pY29kZSBjb2RlIHBvaW50cyBtb3ZlZCBmcm9tIFBVQSB0byBTdXBwbGVtZW50YXJ5IHBsYW5lIChVKzJYWFhYKSBvdmVyIHRoZSB5ZWFycy4KICAgIC8vICAgIFBsdXMsIGl0IGhhcyA0IGNvbWJpbmluZyBzZXF1ZW5jZXMuCiAgICAvLyAgICBTZWVtcyB0aGF0IE1vemlsbGEgcmVmdXNlZCB0byBzdXBwb3J0IGl0IGZvciAxMCB5cnMuIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjQzMSBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0zMTAyOTkKICAgIC8vICAgIGJlY2F1c2UgYmlnNS1oa3NjcyBpcyB0aGUgb25seSBlbmNvZGluZyB0byBpbmNsdWRlIGFzdHJhbCBjaGFyYWN0ZXJzIGluIG5vbi1hbGdvcml0aG1pYyB3YXkuCiAgICAvLyAgICBJbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCBjb25zaXN0ZW50IHdpdGhpbiBicm93c2Vyczsgc29tZXRpbWVzIGxhYmVsZWQgYXMganVzdCBiaWc1LgogICAgLy8gICAgTVMgSW50ZXJuZXQgRXhwbG9yZXIgc3dpdGNoZXMgZnJvbSBiaWc1IHRvIGJpZzUtaGtzY3Mgd2hlbiBhIHBhdGNoIGFwcGxpZWQuCiAgICAvLyAgICBHcmVhdCBkaXNjdXNzaW9uICYgcmVjYXAgb2Ygd2hhdCdzIGdvaW5nIG9uIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjQ3MCNjMzEKICAgIC8vICAgIEluIHRoZSBlbmNvZGVyLCBpdCBtaWdodCBtYWtlIHNlbnNlIHRvIHN1cHBvcnQgZW5jb2Rpbmcgb2xkIFBVQSBtYXBwaW5ncyB0byBCaWc1IGJ5dGVzIHNlcS1zLgogICAgLy8gICAgT2ZmaWNpYWwgc3BlYzogaHR0cDovL3d3dy5vZ2Npby5nb3YuaGsvZW4vYnVzaW5lc3MvdGVjaF9wcm9tb3Rpb24vY2NsaS90ZXJtcy9kb2MvMjAwM2NtcF8yMDA4LnR4dAogICAgLy8gICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5vZ2Npby5nb3YuaGsvdGMvYnVzaW5lc3MvdGVjaF9wcm9tb3Rpb24vY2NsaS90ZXJtcy9kb2MvaGtzY3MtMjAwOC1iaWc1LWlzby50eHQKICAgIC8vIAogICAgLy8gQ3VycmVudCB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0byBkZWFsIHdpdGggQmlnNSgtSEtTQ1MpIGlzIGluIHRoZSBFbmNvZGluZyBTdGFuZGFyZCwgaHR0cDovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9yZy8jYmlnNS1lbmNvZGVyCiAgICAvLyBVbmljb2RlIG1hcHBpbmcgKGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL09CU09MRVRFL0VBU1RBU0lBL09USEVSL0JJRzUuVFhUKSBpcyBzYWlkIHRvIGJlIHdyb25nLgoKICAgICd3aW5kb3dzOTUwJzogJ2NwOTUwJywKICAgICdtczk1MCc6ICdjcDk1MCcsCiAgICAnOTUwJzogJ2NwOTUwJywKICAgICdjcDk1MCc6IHsKICAgICAgICB0eXBlOiAnX2RiY3MnLAogICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oOTIpIH0sCiAgICB9LAoKICAgIC8vIEJpZzUgaGFzIG1hbnkgdmFyaWF0aW9ucyBhbmQgaXMgYW4gZXh0ZW5zaW9uIG9mIGNwOTUwLiBXZSB1c2UgRW5jb2RpbmcgU3RhbmRhcmQncyBhcyBhIGNvbnNlbnN1cy4KICAgICdiaWc1JzogJ2JpZzVoa3NjcycsCiAgICAnYmlnNWhrc2NzJzogewogICAgICAgIHR5cGU6ICdfZGJjcycsCiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyg5MikuY29uY2F0KF9fd2VicGFja19yZXF1aXJlX18oMTg0KSkgfSwKICAgICAgICBlbmNvZGVTa2lwVmFsczogWzB4YTJjY10sCiAgICB9LAoKICAgICdjbmJpZzUnOiAnYmlnNWhrc2NzJywKICAgICdjc2JpZzUnOiAnYmlnNWhrc2NzJywKICAgICd4eGJpZzUnOiAnYmlnNWhrc2NzJywKfTsKCgovKioqLyB9KSwKLyogMTgwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gW1siMCIsIlx1MDAwMCIsMTI4XSxbImExIiwi772hIiw2Ml0sWyI4MTQwIiwi44CA44CB44CC77yM77yO44O777ya77yb77yf77yB44Kb44KcwrTvvYDCqO+8vu+/o++8v+ODveODvuOCneOCnuOAg+S7neOAheOAhuOAh+ODvOKAleKAkO+8j++8vO+9nuKIpe+9nOKApuKApeKAmOKAmeKAnOKAne+8iO+8ieOAlOOAle+8u++8ve+9m++9neOAiCIsOSwi77yL77yNwrHDlyJdLFsiODE4MCIsIsO377yd4omg77yc77ye4omm4omn4oie4oi04pmC4pmAwrDigLLigLPihIPvv6XvvITvv6Dvv6HvvIXvvIPvvIbvvIrvvKDCp+KYhuKYheKXi+KXj+KXjuKXh+KXhuKWoeKWoOKWs+KWsuKWveKWvOKAu+OAkuKGkuKGkOKGkeKGk+OAkyJdLFsiODFiOCIsIuKIiOKIi+KKhuKKh+KKguKKg+KIquKIqSJdLFsiODFjOCIsIuKIp+KIqO+/ouKHkuKHlOKIgOKIgyJdLFsiODFkYSIsIuKIoOKKpeKMkuKIguKIh+KJoeKJkuKJquKJq+KImuKIveKIneKIteKIq+KIrCJdLFsiODFmMCIsIuKEq+KAsOKZr+KZreKZquKAoOKAocK2Il0sWyI4MWZjIiwi4pevIl0sWyI4MjRmIiwi77yQIiw5XSxbIjgyNjAiLCLvvKEiLDI1XSxbIjgyODEiLCLvvYEiLDI1XSxbIjgyOWYiLCLjgYEiLDgyXSxbIjgzNDAiLCLjgqEiLDYyXSxbIjgzODAiLCLjg6AiLDIyXSxbIjgzOWYiLCLOkSIsMTYsIs6jIiw2XSxbIjgzYmYiLCLOsSIsMTYsIs+DIiw2XSxbIjg0NDAiLCLQkCIsNSwi0IHQliIsMjVdLFsiODQ3MCIsItCwIiw1LCLRkdC2Iiw3XSxbIjg0ODAiLCLQviIsMTddLFsiODQ5ZiIsIuKUgOKUguKUjOKUkOKUmOKUlOKUnOKUrOKUpOKUtOKUvOKUgeKUg+KUj+KUk+KUm+KUl+KUo+KUs+KUq+KUu+KVi+KUoOKUr+KUqOKUt+KUv+KUneKUsOKUpeKUuOKVgiJdLFsiODc0MCIsIuKRoCIsMTksIuKFoCIsOV0sWyI4NzVmIiwi442J44yU44yi442N44yY44yn44yD44y2442R442X44yN44ym44yj44yr442K44y7446c446d446e446O446P44+E446hIl0sWyI4NzdlIiwi4427Il0sWyI4NzgwIiwi44Cd44Cf4oSW44+N4oSh44qkIiw0LCLjiLHjiLLjiLnjjb7jjb3jjbziiZLiiaHiiKviiK7iiJHiiJriiqXiiKDiiJ/iir/iiLXiiKniiKoiXSxbIjg4OWYiLCLkupzllJblqIPpmL/lk4DmhJvmjKjlp7bpgKLokbXojJznqZDmgqrmj6HmuKXml63okaboiqbpr7XmopPlnKfmlqHmibHlrpvlp5Dombvpo7TntaLntr7pro7miJbnsp/oorflronlurXmjInmmpfmoYjpl4fpno3mnY/ku6XkvIrkvY3kvp3lgYnlm7LlpLflp5TlqIHlsInmg5/mhI/mhbDmmJPmpIXngrrnlY/nlbDnp7vntq3nt6/og4PokI7ooaPorILpgZXpgbrljLvkupXkuqXln5/ogrLpg4Hno6/kuIDlo7HmuqLpgLjnqLLojKjoiovpsK/lhYHljbDlkr3lk6Hlm6Dlp7vlvJXpo7Lmt6vog6TolK0iXSxbIjg5NDAiLCLpmaLpmbDpmqDpn7vlkIvlj7Plrofng4/nvr3ov4Lpm6jlja/ptZznqrrkuJHnopPoh7zmuKblmJjllITmrJ3olJrpsLvlp6Xljqnmtabnk5zplo/lmYLkupHpgYvpm7LojY/ppIzlj6HllrblrLDlvbHmmKDmm7PmoITmsLjms7PmtKnnkZvnm4jnqY7poLToi7HooZvoqaDpi63mtrLnlqvnm4rpp4XmgqborIHotorplrLmpo7ljq3lhoYiXSxbIjg5ODAiLCLlnJLloLDlpYTlrrTlu7bmgKjmjqnmj7Tmsr/mvJTngo7nhJTnhZnnh5XnjL/nuIHoibboi5HolpfpgaDpiZvptJvloanmlrzmsZrnlKXlh7nlpK7lpaXlvoDlv5zmirzml7rmqKrmrKfmrrTnjovnv4HopZbptKzptI7pu4TlsqHmspbojbvlhITlsYvmhrboh4bmobbniaHkuZnkv7rljbjmganmuKnnqY/pn7PkuIvljJbku67kvZXkvL3kvqHkvbPliqDlj6/lmInlpI/lq4Hlrrblr6Hnp5HmmofmnpzmnrbmrYzmsrPngavnj4Lnpo3npr7nqLznrofoirHoi5vojITojbfoj6/oj5PonaboqrLlmKnosqjov6bpgY7pnJ7omorkv4Tls6jmiJHniZnnlLvoh6Xoir3om77os4Dpm4XppJPpp5Xku4vkvJrop6Plm57loYrlo4rlu7vlv6vmgKrmgpTmgaLmh5DmiJLmi5DmlLkiXSxbIjhhNDAiLCLprYHmmabmorDmtbfngbDnlYznmobntbXoiqXon7nplovpmo7osp3lh7Hlir7lpJblkrPlrrPltJbmhajmpoLmtq/noo3ok4vooZfoqbLpjqfpqrjmtazppqjom5nlnqPmn7/om47piI7lioPlmoflkITlu5Pmi6HmkrnmoLzmoLjmrrvnjbLnorrnqavopprop5LotavovIPpg63plqPpmpTpnanlrablsrPmpb3poY3poY7mjpvnrKDmqKsiXSxbIjhhODAiLCLmqb/morbpsI3mvZ/libLllp3mgbDmi6zmtLvmuIfmu5HokZvopJDovYTkuJTpsLnlj7bmpJvmqLrpnoTmoKrlhZznq4PokrLph5zpjozlmZvptKjmoKLojIXokLHnsqXliIjoi4Xnk6bkub7kvoPlhqDlr5LliIrli5jli6flt7vllprloKrlp6blrozlrpjlr5vlubLlubnmgqPmhJ/mhaPmhr7mj5vmlaLmn5HmoZPmo7rmrL7mrZPmsZfmvKLmvpfmvYXnkrDnlJjnm6PnnIvnq7/nrqHnsKHnt6nnvLbnv7Dogp3oiabojp7oprPoq4zosqvpgoTpkZHplpPplpHplqLpmaXpn5PppKjoiJjkuLjlkKvlsrjlt4znjqnnmYznnLzlsqnnv6votIvpm4HpoJHpoZTpoZjkvIHkvI7ljbHllpzlmajln7rlpYflrInlr4TlspDluIzlub7lv4zmj67mnLrml5fml6LmnJ/mo4vmo4QiXSxbIjhiNDAiLCLmqZ/luLDmr4XmsJfmsb3nlb/npYjlraPnqIDntIDlvr3opo/oqJjosrTotbfou4zovJ3po6LpqI7prLzkuoDlgb3lhIDlppPlrpzmiK/mioDmk6zmrLrniqDnlpHnpYfnvqnon7voqrzorbDmjqzoj4rpnqDlkInlkIPllqvmoZTmqZjoqbDnoKfmnbXpu43ljbTlrqLohJromZDpgIbkuJjkuYXku4fkvJHlj4rlkLjlrq7lvJPmgKXmlZEiXSxbIjhiODAiLCLmnL3msYLmsbLms6PngbjnkIPnqbbnqq7nrIjntJrns77ntabml6fniZvljrvlsYXlt6jmi5Lmi6DmjJnmuKDomZroqLHot53pi7jmvIHnpqbprZrkuqjkuqvkuqzkvpvkvqDlg5HlhYfnq7blhbHlh7bljZTljKHljb/lj6vllqzlooPls6HlvLflvYrmgK/mgZDmga3mjJ/mlZnmqYvms4Hni4Lni63nn6/og7johIXoiIjolY7pg7fpj6Hpn7/ppZfpqZrku7Dlh53lsK3mmoHmpa3lsYDmm7LmpbXnjonmoZDnsoHlg4Xli6TlnYflt77pjKbmlqTmrKPmrL3nkLTnpoHnpr3nrYvnt4roirnoj4zoob/opZ/orLnov5Hph5HlkJ/pioDkuZ3lgLblj6XljLrni5fnjpbnn6noi6bouq/pp4bpp4jpp5LlhbfmhJromZ7llrDnqbrlgbblr5PpgYfpmoXkuLLmq5vph6flsZHlsYgiXSxbIjhjNDAiLCLmjpjnqp/mspPpnbTovaHnqqrnhorpmojnsoLmoJfnubDmoZHpjazli7LlkJvolqvoqJPnvqTou43pg6HljabooojnpYHkv4Llgr7liJHlhYTllZPlnK3nj6rlnovlpZHlvaLlvoTmgbXmhbbmhafmhqnmjrLmkLrmlazmma/moYLmuJPnlabnqL3ns7vntYzntpnnuYvnvavojI7ojYrom43oqIjoqaPorabou73poJrpto/oirjov47pr6giXSxbIjhjODAiLCLliofmiJ/mkoPmv4DpmpnmoYHlgpHmrKDmsbrmvZTnqbTntZDooYDoqKPmnIjku7blgLnlgKblgaXlhbzliLjliaPllqflnI/loIXlq4zlu7rmhrLmh7jmi7PmjbLmpJzmqKnnib3niqznjK7noJTnoa/ntbnnnIzogqnopovorJnos6Lou5LpgaPpjbXpmbrpoZXpqJPpubjlhYPljp/ljrPlubvlvKbmuJvmupDnjoTnj77ntYPoiLfoqIDoq7rpmZDkuY7lgIvlj6Tlkbzlm7rlp5HlraTlt7HluqvlvKfmiLjmlYXmnq/muZbni5Dns4roorTogqHog6Hoj7DomY7oqofot6jpiLfpm4fpoafpvJPkupTkupLkvI3ljYjlkYnlkL7lqK/lvozlvqHmgp/moqfmqo7nkZrnooHoqp7oqqTorbfphpDkuZ7pr4nkuqTkvbzkvq/lgJnlgJblhYnlhazlip/lirnli77ljprlj6PlkJEiXSxbIjhkNDAiLCLlkI7llonlnZHlnqLlpb3lrZTlrZ3lro/lt6Xlt6flt7flubjluoPluprlurflvJjmgZLmhYzmipfmi5jmjqfmlLvmmILmmYPmm7Tmna3moKHmopfmp4vmsZ/mtKrmtanmuK/mup3nlLLnmofnoaznqL/ns6DntIXntJjntZ7ntrHogJXogIPogq/ogrHohZToho/oiKrojZLooYzooaHorJvosqLos7zpg4rphbXpibHnoL/pi7zplqTpmY0iXSxbIjhkODAiLCLpoIXpppnpq5jptLvliZvliqvlj7flkIjlo5Xmi7fmv6DosarovZ/purnlhYvliLvlkYrlm73nqYDphbfptaDpu5LnjYTmvInohbDnlJHlv73mg5rpqqjni5vovrzmraTpoIPku4rlm7DlnaTlor7lqZrmgajmh4fmmI/mmIbmoLnmorHmt7fnl5XntLroia7prYLkupvkvZDlj4nllIblta/lt6blt67mn7vmspnnkbPnoILoqZDpjpboo5/lnZDluqfmjKvlgrXlgqzlho3mnIDlk4nloZ7lprvlrrDlvanmiY3mjqHmoL3mrbPmuIjngb3ph4fnioDnoJXnoKbnpa3mlo7ntLDoj5zoo4HovInpmpvliaTlnKjmnZDnvarosqHlhrTlnYLpmKrloLrmporogrTlkrLltI7ln7znopXpt7rkvZzliYrlkovmkL7mmKjmnJTmn7XnqoTnrZbntKLpjK/moZzprq3nrLnljJnlhorliLciXSxbIjhlNDAiLCLlr5/mi7bmkq7mk6bmnK3mrrrolqnpm5HnmpDpr5bmjYzpjIbprqvnmr/mmZLkuInlgpjlj4LlsbHmg6jmkpLmlaPmoZ/nh6bnj4rnlKPnrpfnuoLompXoroPos5vphbjppJDmlqzmmqvmrovku5Xku5TkvLrkvb/liLrlj7jlj7Lll6Plm5vlo6vlp4vlp4nlp7/lrZDlsY3luILluKvlv5fmgJ3mjIfmlK/lrZzmlq/mlr3ml6jmnp3mraIiXSxbIjhlODAiLCLmrbvmsI/njYXnpYnnp4Hns7jntJnntKvogqLohILoh7PoppboqZ7oqanoqaboqozoq67os4fos5zpm4zpo7zmra/kuovkvLzkvo3lhZDlrZflr7rmhYjmjIHmmYLmrKHmu4vmsrvniL7nkr3nl5Tno4HnpLrogIzogLPoh6rokpTovp7msZDpub/lvI/orZjptKvnq7rou7jlro3pm6vkuIPlj7Hln7flpLHlq4nlrqTmgonmub/mvIbnlr7os6rlrp/olIDnr6DlgbLmn7Toip3lsaHolYrnuJ7oiI7lhpnlsITmjajotabmlpznha7npL7ntJfogIXorJ3ou4rpga7om4fpgqrlgJ/li7rlsLrmnZPngbzniLXphYzph4jpjKvoi6Xlr4LlvLHmg7nkuLvlj5blrojmiYvmnLHmrorni6nnj6DnqK7ohavotqPphZLpppblhJLlj5flkarlr7/mjojmqLnntqzpnIDlm5rlj47lkagiXSxbIjhmNDAiLCLlrpflsLHlt57kv67mhIHmi77mtLLnp4Dnp4vntYLnuY3nv5Loh63oiJ/okpDooYbopbLorpDoubTovK/pgLHphYvphazpm4bphpzku4DkvY/lhYXljYHlvpPmiI7mn5TmsYHmuIvnjaPnuKbph43pioPlj5TlpJnlrr/mt5HnpZ3nuK7nspvlob7nhp/lh7rooZPov7Dkv4rls7vmmKXnnqznq6PoiJzpp7/lh4blvqrml6zmpa/mronmt7MiXSxbIjhmODAiLCLmupbmvaTnm77ntJTlt6HpgbXphofpoIblh6bliJ3miYDmmpHmm5nmuJrlurbnt5LnvbLmm7jolq/ol7foq7jliqnlj5nlpbPluo/lvpDmgZXpi6TpmaTlgrflhJ/li53ljKDljYflj6zlk6jllYbllLHlmJflpajlpr7lqLzlrrXlsIblsI/lsJHlsJrluoTluorlu6DlvbDmib/mioTmi5vmjozmjbfmmIfmmIzmmK3mmbbmnb7moqLmqJ/mqLXmsrzmtojmuInmuZjnhLznhKbnhafnl4fnnIHnoZ3npIHnpaXnp7Dnq6DnrJHnsqfntLnogpboj5bokovolYnooZ3oo7PoqJ/oqLzoqZToqbPosaHos57phqTpiabpjb7pkJjpmpzpnpjkuIrkuIjkuJ7kuZflhpflibDln47loLTlo4zlrKLluLjmg4Xmk77mnaHmnZbmtYTnirbnlbPnqaPokrjorbLphrjpjKDlmLHln7Tpo74iXSxbIjkwNDAiLCLmi63mpI3mrpbnh63nuZTogbfoibLop6bpo5/onZXovrHlsLvkvLjkv6HkvrXllIflqKDlr53lr6nlv4PmhY7mjK/mlrDmmYvmo67mppvmtbjmt7HnlLPnlrnnnJ/npZ7np6bntLPoh6Poiq/olqropqroqLrouqvovpvpgLLph53pnIfkurrku4HliIPlobXlo6zlsIvnlJrlsL3ohY7oqIrov4XpmaPpna3nrKXoq4/poIjphaLlm7PljqgiXSxbIjkwODAiLCLpgJflkLnlnoLluKXmjqjmsLTngornnaHnsovnv6DoobDpgYLphZTpjJDpjJjpmo/nkZ7pq4TltIfltanmlbDmnqLotqjpm5vmja7mnYnmpJnoj4XpoJfpm4Doo77mvoTmkbrlr7jkuJbngKznlZ3mmK/lh4TliLbli6Llp5PlvoHmgKfmiJDmlL/mlbTmmJ/mmbTmo7LmoJbmraPmuIXnibLnlJ/nm5vnsr7ogZblo7Doo73opb/oqqDoqpPoq4vpgJ3phpLpnZLpnZnmlonnqI7ohIbpmrvluK3mg5zmiJrmlqXmmJTmnpDnn7PnqY3nsY3nuL7ohIrosqzotaTot6HouZ/noqnliIfmi5nmjqXmkYLmipjoqK3nqoPnr4Doqqzpm6rntbboiIzonYnku5nlhYjljYPljaDlrqPlsILlsJblt53miKbmiYfmkrDmoJPmoLTms4nmtYXmtJfmn5PmvZznhY7nhb3ml4vnqb/nrq3nt5oiXSxbIjkxNDAiLCLnuYrnvqjohbroiJvoiLnolqboqa7os47ot7Xpgbjpgbfpiq3pipHploPprq7liY3lloTmvLjnhLblhajnpoXnuZXohrPns47lmYzloZHlsqjmjqrmm77mm73mpZrni5nnlo/nlo7npI7npZbnp5/nspfntKDntYTomIfoqLTpmLvpgaHpvKDlg6flibXlj4zlj6LlgInllqrlo67lpY/niL3lrovlsaTljJ3mg6Pmg7PmjZzmjoPmjL/mjrsiXSxbIjkxODAiLCLmk43ml6nmm7nlt6Pmp43mp73mvJXnh6Xkuonnl6nnm7jnqpPns5/nt4/ntpzogaHojYnojZjokazokrzol7voo4XotbDpgIHpga3pjpfpnJzpqJLlg4/lopfmho7oh5PolLXotIjpgKDkv4PlgbTliYfljbPmga/mjYnmnZ/muKzotrPpgJ/kv5flsZ7os4rml4/ntprljZLoopblhbbmj4PlrZjlravlsIrmkI3mnZHpgZzku5blpJrlpKrmsbDoqZHllL7loJXlpqXmg7DmiZPmn4HoiLXmpZXpmYDpp4TpqKjkvZPloIblr77ogJDlsrHluK/lvoXmgKDmhYvmiLTmm7/ms7Dmu57og47ohb/oi5TooovosrjpgIDpgK7pmorpu5vpr5vku6Plj7DlpKfnrKzpho3poYzpt7nmu53ngKfljZPllYTlroXmiZjmip7mi5PmsqLmv6/nkKLoqJfpkLjmv4Hoq77ojLjlh6fom7jlj6oiXSxbIjkyNDAiLCLlj6nkvYbpgZTovrDlparohLHlt73nq6rovr/mo5rosLfni7jpsYjmqL3oqrDkuLnljZjlmIblnabmi4XmjqLml6bmrY7mt6HmuZvngq3nn63nq6/nrqrntrvogL3og4bom4voqpXpjZvlm6Plo4flvL7mlq3mmpbmqoDmrrXnlLfoq4flgKTnn6XlnLDlvJvmgaXmmbrmsaDnl7TnqJrnva7oh7TonJjpgYXpprPnr4nnlZznq7nnrZHok4QiXSxbIjkyODAiLCLpgJDnp6nnqpLojLblq6HnnYDkuK3ku7Llrpnlv6Dmir3mmLzmn7Hms6jomavoobfoqLvphY7pi7Ppp5DmqJfngKbnjKroi6fokZfosq/kuIHlhYblh4vllovlr7XluJbluLPluoHlvJTlvLXlvavlvrTmh7LmjJHmmqLmnJ3mva7niZLnlLrnnLrogbTohLnohbjonbboqr/oq5zotoXot7PpiprplbfpoILps6Xli4XmjZfnm7TmnJXmsojnj43os4Ppjq7pmbPmtKXlopzmpI7mp4zov73pjprnl5vpgJrloZrmoILmjrTmp7vkvYPmvKzmn5jovrvolKbntrTpjZTmpL/mvbDlnarlo7flrKzntKzniKrlkIrph6PptrTkuq3kvY7lgZzlgbXliYPosp7lkYjloKTlrprluJ3lupXluq3lu7flvJ/mgozmirXmjLrmj5Dmoq/msYDnoofnpo7nqIvnt6DoiYfoqILoq6bouYTpgJMiXSxbIjkzNDAiLCLpgrjphK3ph5jpvI7ms6XmkZjmk6LmlbXmu7TnmoTnrJvpganpj5Hmurrlk7LlvrnmkqTovY3ov63piYTlhbjloavlpKnlsZXlupfmt7vnuo/nlJzosrzou6LpoZvngrnkvJ3mrr/mvrHnlLDpm7vlhY7lkJDloLXloZflpqzlsaDlvpLmlpfmnZzmuKHnmbvoj5/os63pgJTpg73pjY3noKXnoLrliqrluqblnJ/lpbTmgJLlgJLlhZrlhqwiXSxbIjkzODAiLCLlh43liIDllJDloZTloZjlpZflrpXls7bltovmgrzmipXmkK3mnbHmoYPmorzmo5/nm5fmt5jmua/mtpvnga/nh4jlvZPnl5jnpbfnrYnnrZTnrZLns5bntbHliLDokaPolanol6ToqI7orITosYbouI/pgIPpgI/pkJnpmbbpoK3pqLDpl5jlg43li5XlkIzloILlsI7mhqfmkp7mtJ7nnrPnq6Xog7TokITpgZPpioXls6DptIfljL/lvpflvrPmtpznibnnnaPnpr/nr6Tmr5Lni6zoqq3moIPmqaHlh7jnqoHmpLTlsYrps7boi6vlr4XphYnngJ7lmbjlsa/mg4fmlabmsozosZrpgYHpoJPlkZHmm4fpiI3lpYjpgqPlhoXkuY3lh6rolpnorI7ngZjmjbrpjYvmpaLpprTnuITnlbfljZfmpaDou5/pm6PmsZ3kuozlsLzlvJDov6nljILos5Hogonombnlu7/ml6XkubPlhaUiXSxbIjk0NDAiLCLlpoLlsL/pn67ku7vlporlv43oqo3mv6HnprDnpaLlr6fokbHnjKvnhrHlubTlv7Xmjbvmkprnh4PnspjkuYPlu7zkuYvln5zlmqLmgqnmv4PntI3og73ohLPohr/ovrLoppfomqTlt7Tmiormkq3opofmnbfms6LmtL7nkLbnoLTlqYbnvbXoiq3ppqzkv7Plu4Pmi53mjpLmlZfmna/nm4PniYzog4zogrrovKnphY3lgI3ln7nlqpLmooUiXSxbIjk0ODAiLCLmpbPnhaTni73osrflo7Los6DpmarpgJnonb/np6Tnn6fokKnkvK/liaXljZrmi43mn4/ms4rnmb3nrpTnspXoiLboloTov6vmm53mvKDniIbnuJvojqvpp4Hpuqblh73nrrHnobLnrrjogofnrYjmq6jluaHogoznlZHnlaDlhavpiaLmuoznmbrphpfpq6rkvJDnvbDmipznrY/plqXps6nlmbrloZnom6TpmrzkvLTliKTljYrlj43lj5vluIbmkKzmlpHmnb/msL7msY7niYjniq/nj63nlZTnuYHoiKzol6nosqnnr4Tph4bnhanpoJLpo6/mjL3mmannlarnm6Tno5DolYPom67ljKrljZHlkKblpoPluoflvbzmgrLmiYnmibnmiqvmlpDmr5Tms4znlrLnmq7nopHnp5jnt4vnvbfogqXooqvoqrnosrvpgb/pnZ7po5vmqIvnsLjlgpnlsL7lvq7mnofmr5jnkLXnnInnvo4iXSxbIjk1NDAiLCLpvLvmn4rnqJfljLnnlovpq63lvabohp3oj7HogpjlvLzlv4XnlaLnrYbpgLzmoaflp6vlqpvntJDnmb7orKzkv7XlvarmqJnmsLfmvILnk6LnpajooajoqZXosbnlu5/mj4/nl4Xnp5Loi5fpjKjpi7Lokpzom63psK3lk4HlvazmlozmtZzngJXosqfos5PpoLvmlY/nk7bkuI3ku5jln6DlpKvlqablr4zlhqjluIPlupzmgJbmibbmlbciXSxbIjk1ODAiLCLmlqfmma7mta7niLbnrKbohZDohproipnorZzosqDos6botbTpmJzpmYTkvq7mkqvmraboiJ7okaHolarpg6jlsIHmpZPpoqjokbrolZfkvI/lia/lvqnluYXmnI3npo/ohbnopIfopobmt7XlvJfmiZXmsrjku4/nianprpLliIblkLvlmbTlorPmhqTmia7nhJrlpa7nsonns57ntJvpm7DmlofogZ7kuJnkvbXlhbXloYDluaPlubPlvIrmn4TkuKbolL3plonpmZvnsbPpoIHlg7vlo4HnmZbnoqfliKXnnqXolJHnroblgY/lpInniYfnr4fnt6jovrrov5TpgY3kvr/li4nlqKnlvIHpnq3kv53oiJfpi6rlnIPmjZXmrannlKvoo5zovJTnqYLli5/lopPmhZXmiIrmmq7mr43nsL/oj6nlgKPkv7jljIXlkYbloLHlpYnlrp3ls7Dls6/ltKnlupbmirHmjafmlL7mlrnmnIsiXSxbIjk2NDAiLCLms5Xms6Hng7nnoLLnuKvog57oirPokIzok6zonILopJLoqKrosYrpgqbpi5Lpo73ps7PptazkuY/kuqHlgo3liZblnYrlpqjluL3lv5jlv5nmiL/mmrTmnJvmn5Dmo5LlhpLntKHogqrohqjorIDosozosr/pib7pmLLlkKDpoKzljJflg5XljZzloqjmkrLmnLTniafnnabnqYbph6bli4PmsqHmrobloIDluYzlpZTmnKznv7vlh6Hnm4YiXSxbIjk2ODAiLCLmkanno6jprZTpurvln4vlprnmmKfmnprmr47lk6nmp5nluZXohpzmnpXprqrmn77psZLmoZ3kuqbkv6Plj4jmirnmnKvmsqvov4Tkvq3nua3pur/kuIfmhaLmuoDmvKvolJPlkbPmnKrprYXlt7PnrpXlsqzlr4bonJzmuYrok5HnqJTohIjlppnnso3msJHnnKDli5nlpKLnhKHniZ/nn5vpnKfptaHmpIvlqb/lqJjlhqXlkI3lkb3mmI7nm5/ov7fpipjps7Tlp6rniZ3mu4XlhY3mo4nntr/nt6zpnaLpurrmkbjmqKHojILlpoTlrZ/mr5vnjJvnm7LntrLogJfokpnlhLLmnKjpu5nnm67mnaLli7/ppIXlsKTmiLvnsb7osrDllY/mgrbntIvploDljIHkuZ/lhrblpJzniLrogLbph47lvKXnn6LljoTlvbnntITolqzoqLPouo3pnZbmn7Polq7pkZPmhInmhIjmsrnnmZIiXSxbIjk3NDAiLCLoq63ovLjllK/kvZHlhKrli4flj4vlrqXlub3mgqDmhoLmj5bmnInmn5rmuafmtoznjLbnjLfnlLHnpZDoo5XoqpjpgYrpgpHpg7Xpm4Tono3lpJXkuojkvZnkuI7oqonovL/poJDlgq3lubzlppblrrnlurjmj5rmj7rmk4Hmm5zmpYrmp5jmtIvmurbnhpTnlKjnqq/nvorogIDokYnok4nopoHorKHouIrpgaXpmb3ppIrmhb7mipHmrLIiXSxbIjk3ODAiLCLmsoPmtbTnv4znv7zmt4DnvoXonrroo7jmnaXojrHpoLzpm7fmtJvntaHokL3pharkubHljbXltZDmrITmv6vol43omK3opqfliKnlkI/lsaXmnY7moqjnkIbnkoPnl6Loo4/oo6Hph4zpm6Lpmbjlvovnjofnq4vokY7mjqDnlaXlionmtYHmupznkInnlZnnoavnspLpmobnq5zpvo3kvrbmha7ml4XomZzkuobkuq7lg5rkuKHlh4zlr67mlpnmooHmtrznjJ/nmYLnnq3nqJzns6foia/oq5Lpgbzph4/pmbXpoJjlipvnt5HlgKvljpjmnpfmt4vnh5DnkLPoh6jovKrpmqPpsZfpup/nkaDloYHmtpnntK/poZ7ku6TkvLbkvovlhrflirHltrrmgJznjrLnpLzoi5PpiLTpmrfpm7bpnIrpupfpvaLmmqbmrbTliJfliqPng4joo4Llu4nmgYvmhpDmvKPnhYnnsL7nt7Toga8iXSxbIjk4NDAiLCLok67pgKPpjKzlkYLpra/mq5Pngonos4Lot6/pnLLlirTlqYHlu4rlvITmnJfmpbzmppTmtarmvI/niaLni7znr63ogIHogb7onYvpg47lha3pupPnpoTogovpjLLoq5blgK3lkozoqbHmraros4TohIfmg5HmnqDpt7LkupnkupjpsJDoqavol4HolajmpIDmub7nopfohZUiXSxbIjk4OWYiLCLlvIzkuJDkuJXkuKrkuLHkuLbkuLzkuL/kuYLkuZbkuZjkuoLkuoXosavkuoroiJLlvI3kuo7kup7kup/kuqDkuqLkurDkurPkurbku47ku43ku4Tku4bku4Lku5fku57ku63ku5/ku7fkvInkvZrkvLDkvZvkvZ3kvZfkvYfkvbbkvojkvo/kvpjkvbvkvankvbDkvpHkva/kvobkvpblhJjkv5Tkv5/kv47kv5jkv5vkv5Hkv5rkv5Dkv6Tkv6XlgJrlgKjlgJTlgKrlgKXlgIXkvJzkv7blgKHlgKnlgKzkv77kv6/lgJHlgIblgYPlgYfmnIPlgZXlgZDlgYjlgZrlgZblgazlgbjlgoDlgprlgoXlgrTlgrIiXSxbIjk5NDAiLCLlg4nlg4rlgrPlg4Llg5blg57lg6Xlg63lg6Plg67lg7nlg7XlhInlhIHlhILlhJblhJXlhJTlhJrlhKHlhLrlhLflhLzlhLvlhL/lhYDlhZLlhYzlhZTlhaLnq7jlhanlharlha7lhoDlhoLlm5jlhozlhonlho/lhpHlhpPlhpXlhpblhqTlhqblhqLlhqnlhqrlhqvlhrPlhrHlhrLlhrDlhrXlhr3lh4Xlh4nlh5vlh6DomZXlh6nlh60iXSxbIjk5ODAiLCLlh7Dlh7Xlh77liITliIvliJTliI7liKfliKrliK7liLPliLnliY/liYTliYvliYzliZ7liZTliarlibTlianlibPlib/lib3lio3lipTlipLlibHliojlipHovqjovqfliqzliq3lirzlirXli4Hli43li5fli57li6Pli6bpo63li6Dli7Pli7Xli7jli7nljIbljIjnlLjljI3ljJDljI/ljJXljJrljKPljK/ljLHljLPljLjljYDljYbljYXkuJfljYnljY3lh5bljZ7ljanlja7lpJjljbvljbfljoLljpbljqDljqbljqXljq7ljrDljrblj4PnsJLpm5nlj5/mm7znh67lj67lj6jlj63lj7rlkIHlkL3lkYDlkKzlkK3lkLzlkK7lkLblkKnlkJ3lkY7lko/lkbXlko7lkZ/lkbHlkbflkbDlkpLlkbvlkoDlkbblkoTlkpDlkoblk4flkqLlkrjlkqXlkqzlk4Tlk4jlkqgiXSxbIjlhNDAiLCLlkqvlk4LlkqTlkr7lkrzlk5jlk6Xlk6bllI/llJTlk73lk67lk63lk7rlk6LllLnllYDllaPllYzllK7llZzllYXllZbllZfllLjllLPllZ3llpnlloDlkq/llorllp/llbvllb7llpjllp7llq7llbzlloPllqnllofllqjll5rll4Xll5/ll4Tll5zll6Tll5TlmJTll7flmJbll77ll73lmJvll7nlmY7lmZDnh5/lmLTlmLblmLLlmLgiXSxbIjlhODAiLCLlmavlmaTlmK/lmazlmarlmoblmoDlmorlmqDlmpTlmo/lmqXlmq7lmrblmrTlm4Llmrzlm4Hlm4Plm4Dlm4jlm47lm5Hlm5Plm5flm67lm7nlnIDlm7/lnITlnInlnIjlnIvlnI3lnJPlnJjlnJbll4flnJzlnKblnLflnLjlnY7lnLvlnYDlnY/lnanln4DlnojlnaHlnb/lnonlnpPlnqDlnrPlnqTlnqrlnrDln4Pln4bln5Tln5Lln5PloIrln5bln6PloIvloJnloJ3lobLloKHloaLloYvlobDmr4DloZLloL3lobnlooXlornlop/loqvlorrlo57lorvlorjloq7lo4Xlo5Plo5Hlo5flo5nlo5jlo6Xlo5zlo6Tlo5/lo6/lo7rlo7nlo7vlo7zlo73lpILlpIrlpJDlpJvmoqblpKXlpKzlpK3lpLLlpLjlpL7nq5LlpZXlpZDlpY7lpZrlpZjlpaLlpaDlpaflpazlpakiXSxbIjliNDAiLCLlpbjlpoHlpp3kvZ7kvqvlpqPlprLlp4blp6jlp5zlpo3lp5nlp5rlqKXlqJ/lqJHlqJzlqInlqJrlqYDlqazlqYnlqLXlqLblqaLlqarlqprlqrzlqr7lq4vlq4Llqr3lq6Plq5flq6blq6nlq5blq7rlq7vlrIzlrIvlrJblrLLlq5DlrKrlrLblrL7lrYPlrYXlrYDlrZHlrZXlrZrlrZvlraXlranlrbDlrbPlrbXlrbjmlojlrbrlroAiXSxbIjliODAiLCLlroPlrqblrrjlr4Plr4flr4nlr5Tlr5Dlr6Tlr6blr6Llr57lr6Xlr6vlr7Dlr7blr7PlsIXlsIflsIjlsI3lsJPlsKDlsKLlsKjlsLjlsLnlsYHlsYblsY7lsZPlsZDlsY/lrbHlsazlsa7kuaLlsbblsbnlsozlspHlspTlppvlsqvlsrvlsrblsrzlsrfls4Xlsr7ls4fls5nls6nls73ls7rls63ltozls6rltIvltJXltJfltZzltJ/ltJvltJHltJTltKLltJrltJnltJjltYzltZLltY7ltYvltazltbPltbbltofltoTltoLltqLltp3ltqzltq7ltr3ltpDltrfltrzlt4nlt43lt5Plt5Llt5blt5vlt6vlt7Llt7XluIvluJrluJnluJHluJvluLbluLfluYTluYPluYDluY7luZfluZTluZ/luaLluaTluYflubXlubblubrpurzlub/luqDlu4Hlu4Llu4jlu5Dlu48iXSxbIjljNDAiLCLlu5blu6Plu53lu5rlu5vlu6Llu6Hlu6jlu6nlu6zlu7Hlu7Plu7Dlu7Tlu7jlu77lvIPlvInlvZ3lvZzlvIvlvJHlvJblvKnlvK3lvLjlvYHlvYjlvYzlvY7lvK/lvZHlvZblvZflvZnlvaHlva3lvbPlvbflvoPlvoLlvb/lvorlvojlvpHlvoflvp7lvpnlvpjlvqDlvqjlvq3lvrzlv5blv7vlv6Tlv7jlv7Hlv53mgrPlv7/mgKHmgaAiXSxbIjljODAiLCLmgJnmgJDmgKnmgI7mgLHmgJvmgJXmgKvmgKbmgI/mgLrmgZrmgYHmgarmgbfmgZ/mgYrmgYbmgY3mgaPmgYPmgaTmgYLmgazmgavmgZnmgoHmgo3mg6fmgoPmgprmgoTmgpvmgpbmgpfmgpLmgqfmgovmg6Hmgrjmg6Dmg5PmgrTlv7Dmgr3mg4bmgrXmg5jmhY3mhJXmhIbmg7bmg7fmhIDmg7Tmg7rmhIPmhKHmg7vmg7HmhI3mhI7mhYfmhL7mhKjmhKfmhYrmhL/mhLzmhKzmhLTmhL3mhYLmhYTmhbPmhbfmhZjmhZnmhZrmhavmhbTmha/mhaXmhbHmhZ/mhZ3mhZPmhbXmhpnmhpbmhofmhqzmhpTmhprmhormhpHmhqvmhq7mh4zmh4rmh4nmh7fmh4jmh4Pmh4bmhrrmh4vnvbnmh43mh6bmh6Pmh7bmh7rmh7Tmh7/mh73mh7zmh77miIDmiIjmiInmiI3miIzmiJTmiJsiXSxbIjlkNDAiLCLmiJ7miKHmiKrmiK7miLDmiLLmiLPmiYHmiY7miZ7miaPmiZvmiaDmiajmibzmioLmionmib7mipLmipPmipbmi5TmioPmipTmi5fmi5Hmirvmi4/mi7/mi4bmk5Tmi4jmi5zmi4zmi4rmi4Lmi4fmipvmi4nmjIzmi67mi7HmjKfmjILmjIjmi6/mi7XmjZDmjL7mjY3mkJzmjY/mjpbmjo7mjoDmjqvmjbbmjqPmjo/mjonmjp/mjrXmjasiXSxbIjlkODAiLCLmjanmjr7mj6nmj4Dmj4bmj6Pmj4nmj5Lmj7bmj4TmkJbmkLTmkIbmkJPmkKbmkLbmlJ3mkJfmkKjmkI/mkafmka/mkbbmkY7mlKrmkpXmkpPmkqXmkqnmkojmkrzmk5rmk5Lmk4Xmk4fmkrvmk5jmk4Lmk7Hmk6foiInmk6Dmk6Hmiqzmk6Pmk6/mlKzmk7bmk7Tmk7Lmk7rmlIDmk73mlJjmlJzmlIXmlKTmlKPmlKvmlLTmlLXmlLfmlLbmlLjnlYvmlYjmlZbmlZXmlY3mlZjmlZ7mlZ3mlbLmlbjmloLmloPorormlpvmlp/mlqvmlrfml4Pml4bml4Hml4Tml4zml5Lml5vml5nml6Dml6Hml7HmnbLmmIrmmIPml7vmnbPmmLXmmLbmmLTmmJzmmY/mmYTmmYnmmYHmmZ7mmZ3mmaTmmafmmajmmZ/mmaLmmbDmmoPmmojmmo7mmonmmoTmmpjmmp3mm4Hmmrnmm4nmmr7mmrwiXSxbIjllNDAiLCLmm4Tmmrjmm5bmm5rmm6DmmL/mm6bmm6nmm7Dmm7Xmm7fmnI/mnJbmnJ7mnKbmnKfpnLjmnK7mnL/mnLbmnYHmnLjmnLfmnYbmnZ7mnaDmnZnmnaPmnaTmnonmnbDmnqnmnbzmnarmnozmnovmnqbmnqHmnoXmnrfmn6/mnrTmn6zmnrPmn6nmnrjmn6Tmn57mn53mn6Lmn67mnrnmn47mn4bmn6fmqpzmoJ7moYbmoKnmoYDmoY3moLLmoY4iXSxbIjllODAiLCLmorPmoKvmoZnmoaPmobfmob/mop/moo/moq3mopTmop3mopvmooPmqq7mornmobTmorXmoqDmorrmpI/moo3mob7mpIHmo4rmpIjmo5jmpKLmpKbmo6HmpIzmo43mo5Tmo6fmo5XmpLbmpJLmpITmo5fmo6PmpKXmo7nmo6Dmo6/mpKjmpKrmpJrmpKPmpKHmo4bmpbnmpbfmpZzmpbjmpavmpZTmpb7mpa7mpLnmpbTmpL3mpZnmpLDmpaHmpZ7mpZ3mpoHmparmprLmpq7mp5Dmpr/mp4Hmp5Pmpr7mp47lr6jmp4rmp53mprvmp4PmpqfmqK7mppHmpqDmppzmppXmprTmp57mp6jmqILmqJvmp7/mrIrmp7nmp7Lmp6fmqIXmprHmqJ7mp63mqJTmp6vmqIrmqJLmq4HmqKPmqJPmqYTmqIzmqbLmqLbmqbjmqYfmqaLmqZnmqabmqYjmqLjmqKLmqpDmqo3mqqDmqoTmqqLmqqMiXSxbIjlmNDAiLCLmqpfomJfmqrvmq4Pmq4LmqrjmqrPmqqzmq57mq5Hmq5/mqqrmq5rmq6rmq7vmrIXomJbmq7rmrJLmrJbprLHmrJ/mrLjmrLfnm5zmrLnpo67mrYfmrYPmrYnmrZDmrZnmrZTmrZvmrZ/mraHmrbjmrbnmrb/mroDmroTmroPmro3mrpjmrpXmrp7mrqTmrqrmrqvmrq/mrrLmrrHmrrPmrrfmrrzmr4bmr4vmr5Pmr5/mr6zmr6vmr7Pmr68iXSxbIjlmODAiLCLpur7msIjmsJPmsJTmsJvmsKTmsKPmsZ7msZXmsaLmsarmsoLmso3msprmsoHmspvmsb7msajmsbPmspLmspDms4Tms7Hms5Pmsr3ms5fms4Xms53msq7msrHmsr7msrrms5vms6/ms5nms6rmtJ/ooY3mtLbmtKvmtL3mtLjmtJnmtLXmtLPmtJLmtIzmtaPmtpPmtaTmtZrmtbnmtZnmto7mtpXmv6TmtoXmt7nmuJXmuIrmtrXmt4fmt6bmtrjmt4bmt6zmt57mt4zmt6jmt5Lmt4Xmt7rmt5nmt6Tmt5Xmt6rmt67muK3mua7muK7muJnmubLmuZ/muL7muKPmuavmuKvmubbmuY3muJ/muYPmuLrmuY7muKTmu7/muJ3muLjmuoLmuqrmupjmu4nmurfmu5Pmur3muq/mu4TmurLmu5Tmu5Xmuo/muqXmu4Lmup/mvYHmvJHngYzmu6zmu7jmu77mvL/mu7LmvLHmu6/mvLLmu4wiXSxbImUwNDAiLCLmvL7mvJPmu7fmvobmvbrmvbjmvoHmvoDmva/mvZvmv7Pmva3mvoLmvbzmvZjmvo7mvpHmv4LmvabmvrPmvqPmvqHmvqTmvrnmv4bmvqrmv5/mv5Xmv6zmv5Tmv5jmv7Hmv67mv5vngInngIvmv7rngJHngIHngI/mv77ngJvngJrmvbTngJ3ngJjngJ/ngLDngL7ngLLngZHngaPngpnngpLngq/ng7HngqzngrjngrPngq7ng5/ng4vng50iXSxbImUwODAiLCLng5nnhInng73nhJznhJnnhaXnhZXnhojnhabnhaLnhYznhZbnhaznho/nh7vnhoTnhpXnhqjnhqznh5fnhrnnhr7nh5Lnh4nnh5Tnh47nh6Dnh6znh6fnh7Xnh7znh7nnh7/niI3niJDniJvniKjniK3niKzniLDniLLniLvniLzniL/niYDniYbniYvniZjnibTnib7nioLnioHniofnipLnipbniqLniqfnirnnirLni4Pni4bni4Tni47ni5Lni6Lni6Dni6Hni7nni7flgI/njJfnjIrnjJznjJbnjJ3njLTnjK/njKnnjKXnjL7njY7njY/pu5jnjZfnjarnjajnjbDnjbjnjbXnjbvnjbrnj4jnjrPnj47njrvnj4Dnj6Xnj67nj57nkqLnkIXnka/nkKXnj7jnkLLnkLrnkZXnkL/nkZ/nkZnnkYHnkZznkannkbDnkaPnkarnkbbnkb7nkovnkp7nkqfnk4rnk4/nk5Tnj7EiXSxbImUxNDAiLCLnk6Dnk6Pnk6fnk6nnk67nk7Lnk7Dnk7Hnk7jnk7fnlITnlIPnlIXnlIznlI7nlI3nlJXnlJPnlJ7nlKbnlKznlLznlYTnlY3nlYrnlYnnlZvnlYbnlZrnlannlaTnlafnlavnla3nlbjnlbbnlobnlofnlbTnlornlonnloLnlpTnlprnlp3nlqXnlqPnl4LnlrPnl4PnlrXnlr3nlrjnlrznlrHnl43nl4rnl5Lnl5nnl6Pnl57nl77nl78iXSxbImUxODAiLCLnl7znmIHnl7Dnl7rnl7Lnl7PnmIvnmI3nmInnmJ/nmKfnmKDnmKHnmKLnmKTnmLTnmLDnmLvnmYfnmYjnmYbnmZznmZjnmaHnmaLnmajnmannmarnmafnmaznmbDnmbLnmbbnmbjnmbznmoDnmoPnmojnmovnmo7nmpbnmpPnmpnnmprnmrDnmrTnmrjnmrnnmrrnm4Lnm43nm5bnm5Lnm57nm6Hnm6Xnm6fnm6romK/nm7vnnIjnnIfnnITnnKnnnKTnnJ7nnKXnnKbnnJvnnLfnnLjnnYfnnZrnnajnnavnnZvnnaXnnb/nnb7nnbnnno7nnovnnpHnnqDnnp7nnrDnnrbnnrnnnr/nnrznnr3nnrvnn4fnn43nn5fnn5rnn5znn6Pnn67nn7znoIznoJLnpKbnoKDnpKrnoYXnoo7nobTnoobnobznoprnooznoqPnorXnoqrnoq/no5Hno4bno4vno5Tnor7norzno4Xno4rno6wiXSxbImUyNDAiLCLno6fno5rno73no7TnpIfnpJLnpJHnpJnnpKznpKvnpYDnpaDnpZfnpZ/npZrnpZXnpZPnpbrnpb/npornpp3npqfpvYvnpqrnpq7nprPnprnnprrnp4nnp5Xnp6fnp6znp6Hnp6PnqIjnqI3nqJjnqJnnqKDnqJ/npoDnqLHnqLvnqL7nqLfnqYPnqZfnqYnnqaHnqaLnqanpvp3nqbDnqbnnqb3nqojnqpfnqpXnqpjnqpbnqqnnq4jnqrAiXSxbImUyODAiLCLnqrbnq4Xnq4Tnqr/pgoPnq4fnq4rnq43nq4/nq5Xnq5Pnq5nnq5rnq53nq6Hnq6Lnq6bnq63nq7DnrILnrI/nrIrnrIbnrLPnrJjnrJnnrJ7nrLXnrKjnrLbnrZDnrbrnrITnrY3nrIvnrYznrYXnrbXnraXnrbTnrafnrbDnrbHnraznra7nrp3nrpjnrp/nro3nrpznrprnrovnrpLnro/nrZ3nrpnnr4vnr4Hnr4znr4/nrrTnr4bnr53nr6nnsJHnsJTnr6bnr6XnsaDnsIDnsIfnsJPnr7Pnr7fnsJfnsI3nr7bnsKPnsKfnsKrnsJ/nsLfnsKvnsL3nsYznsYPnsZTnsY/nsYDnsZDnsZjnsZ/nsaTnsZbnsaXnsaznsbXnsoPnspDnsqTnsq3nsqLnsqvnsqHnsqjnsrPnsrLnsrHnsq7nsrnnsr3ns4Dns4Xns4Lns5jns5Lns5zns6LprLvns6/ns7Lns7Tns7bns7rntIYiXSxbImUzNDAiLCLntILntJzntJXntIrntYXntYvntK7ntLLntL/ntLXntYbntbPntZbntY7ntbLntajnta7ntY/ntaPntpPntonntZvnto/ntb3ntpvntrrntq7ntqPntrXnt4fntr3ntqvnuL3ntqLntq/nt5zntrjntp/ntrDnt5jnt53nt6Tnt57nt7vnt7Lnt6HnuIXnuIrnuKPnuKHnuJLnuLHnuJ/nuInnuIvnuKLnuYbnuabnuLvnuLXnuLnnuYPnuLciXSxbImUzODAiLCLnuLLnuLrnuafnuZ3nuZbnuZ7nuZnnuZrnubnnuarnuannubznubvnuoPnt5Xnub3ovq7nub/nuojnuonnuoznupLnupDnupPnupTnupbnuo7nupvnupznvLjnvLrnvYXnvYznvY3nvY7nvZDnvZHnvZXnvZTnvZjnvZ/nvaDnvajnvannvafnvbjnvoLnvobnvoPnvojnvofnvoznvpTnvp7nvp3nvprnvqPnvq/nvrLnvrnnvq7nvrbnvrjorbHnv4Xnv4bnv4rnv5Xnv5Tnv6Hnv6bnv6nnv7Pnv7npo5zogIbogITogIvogJLogJjogJnogJzogKHogKjogL/ogLvogYrogYbogZLogZjogZrogZ/ogaLogajogbPogbLogbDogbbogbnogb3ogb/ogoTogobogoXogpvogpPogprogq3lhpDogqzog5vog6Xog5nog53og4Tog5rog5bohInog6/og7HohJvohKnohKPohK/ohYsiXSxbImU0NDAiLCLpmovohYbohL7ohZPohZHog7zohbHoha7ohaXohabohbTohoPohojohorohoDohoLohqDohpXohqTohqPohZ/ohpPohqnohrDohrXohr7ohrjohr3oh4Doh4Lohrroh4noh43oh5Hoh5noh5joh4joh5roh5/oh6Doh6foh7roh7voh77oiIHoiILoiIXoiIfoiIroiI3oiJDoiJboiKnoiKvoiLjoiLPoiYDoiZnoiZjoiZ3oiZroiZ/oiaQiXSxbImU0ODAiLCLoiaLoiajoiaroiavoiK7oibHoibfoibjoib7oio3oipLoiqvoip/oirvoiqzoi6Hoi6Poi5/oi5Loi7Toi7Poi7rojpPojIPoi7voi7noi57ojIboi5zojInoi5nojLXojLTojJbojLLojLHojYDojLnojZDojYXojK/ojKvojJfojJjojoXojprojqrojp/ojqLojpbojKPojo7ojofojorojbzojrXojbPojbXojqDojonojqjoj7TokJPoj6voj47oj73okIPoj5jokIvoj4Hoj7fokIfoj6Doj7LokI3okKLokKDojr3okLjolIboj7voka3okKrokLzolZrokoTokbfokavokq3oka7okoLokanokYbokKzoka/okbnokLXok4rokaLokrnokr/okp/ok5nok43okrvok5rok5Dok4Hok4bok5bokqHolKHok7/ok7TolJfolJjolKzolJ/olJXolJTok7zolYDolaPolZjolYgiXSxbImU1NDAiLCLolYHomILolYvolZXoloDolqTolojolpHolorolqjola3olpTolpvol6rolofolpzolbfolb7olpDol4nolrrol4/olrnol5Dol5Xol53ol6Xol5zol7nomIromJPomIvol77ol7romIbomKLomJromLDomL/omY3kuZXomZTomZ/omafombHompPomqPomqnomqromovomozomrbomq/om4Tom4bomrDom4nooKPomqvom5Tom57om6nom6wiXSxbImU1ODAiLCLom5/om5vom6/onJLonIbonIjonIDonIPom7vonJHonInonI3om7nonIronLTonL/onLfonLvonKXonKnonJronaDonZ/onbjonYzonY7onbTonZfonajona7onZnonZPonaPonarooIXonqLonp/onoLonq/on4vonr3on4Don5Dpm5bonqvon4TonrPon4fon4bonrvon6/on7Lon6DooI/ooI3on77on7bon7fooI7on5LooJHooJbooJXooKLooKHooLHooLbooLnooKfooLvooYTooYLooZLooZnooZ7ooaLooavoooHoob7oop7oobXoob3oorXoobLoooLoopfoopLooq7oopnooqLooo3ooqToorDoor/oorHoo4Poo4Too5Too5joo5noo53oo7nopILoo7zoo7Too6joo7LopITopIzopIropJPopYPopJ7opKXopKropKvopYHopYTopLvopLbopLjopYzopJ3opaDopZ4iXSxbImU2NDAiLCLopabopaTopa3oparopa/opbTopbfopb7opoPopojoporoppPoppjopqHopqnopqbopqzopq/oprLoprropr3opr/op4Dop5rop5zop53op6fop7Top7joqIPoqJboqJDoqIzoqJvoqJ3oqKXoqLboqYHoqZvoqZLoqYboqYjoqbzoqa3oqazoqaLoqoXoqoLoqoToqqjoqqHoqpHoqqXoqqboqproqqPoq4Toq43oq4Loq5roq6voq7Poq6ciXSxbImU2ODAiLCLoq6Toq7HorJToq6Doq6Loq7foq57oq5vorIzorIforJroq6HorJborJDorJforKDorLPpnqvorKborKvorL7orKjorYHorYzorY/orY7orYnorZborZvorZroravorZ/orazora/orbTorb3oroDorozoro7orpLorpPorpborpnorprosLrosYHosL/osYjosYzosY7osZDosZXosaLosazosbjosbrosoLosonosoXosoroso3oso7ospTosbzospjmiJ3osq3osqrosr3osrLosrPosq7osrbos4jos4Hos6Tos6Pos5ros73os7ros7votITotIXotIrotIfotI/otI3otJDpvY7otJPos43otJTotJbotafota3otbHotbPotoHotpnot4Lotr7otrrot4/ot5rot5bot4zot5vot4vot6rot6vot5/ot6Pot7zouIjouInot7/ouJ3ouJ7ouJDouJ/ouYLouLXouLDouLTouYoiXSxbImU3NDAiLCLouYfouYnouYzouZDouYjouZnouaTouaDouKrouaPouZXoubboubLoubzouoHouofouoXouoTouovouoroupPoupHoupToupnouqrouqHouqzourDou4bourHour7ou4Xou4jou4vou5vou6Pou7zou7vou6vou77ovIrovIXovJXovJLovJnovJPovJzovJ/ovJvovIzovKbovLPovLvovLnovYXovYLovL7ovYzovYnovYbovY7ovZfovZwiXSxbImU3ODAiLCLovaLovaPovaTovpzovp/ovqPovq3ovq/ovrfov5rov6Xov6Lov6rov6/pgofov7TpgIXov7nov7rpgJHpgJXpgKHpgI3pgJ7pgJbpgIvpgKfpgLbpgLXpgLnov7jpgY/pgZDpgZHpgZLpgI7pgYnpgL7pgZbpgZjpgZ7pgajpga/pgbbpmqjpgbLpgoLpgb3pgoHpgoDpgorpgonpgo/pgqjpgq/pgrHpgrXpg6Lpg6TmiYjpg5vphILphJLphJnphLLphLDphYrphZbphZjphaPphaXphanphbPphbLphovphonphoLphqLphqvphq/phqrphrXphrTphrrph4Dph4Hph4nph4vph5Dph5bph5/ph6Hph5vph7zph7Xph7bpiJ7ph7/piJTpiKzpiJXpiJHpiZ7piZfpiYXpiYnpiaTpiYjpipXpiL/piYvpiZDpipzpipbpipPpipvpiZrpi4/pirnpirfpi6npjI/pi7rpjYTpjK4iXSxbImU4NDAiLCLpjJnpjKLpjJrpjKPpjLrpjLXpjLvpjZzpjaDpjbzpja7pjZbpjrDpjqzpjq3pjpTpjrnpj5bpj5fpj6jpj6Xpj5jpj4Ppj53pj5Dpj4jpj6TpkJrpkJTpkJPpkIPpkIfpkJDpkLbpkKvpkLXpkKHpkLrpkYHpkZLpkYTpkZvpkaDpkaLpkZ7pkarpiKnpkbDpkbXpkbfpkb3pkZrpkbzpkb7pkoHpkb/ploLplofplorplpTplpbplpjplpkiXSxbImU4ODAiLCLplqDplqjplqfplq3plrzplrvplrnplr7pl4rmv7bpl4Ppl43pl4zpl5Xpl5Tpl5bpl5zpl6Hpl6Xpl6LpmKHpmKjpmK7pmK/pmYLpmYzpmY/pmYvpmbfpmZzpmZ7pmZ3pmZ/pmabpmbLpmazpmo3pmpjpmpXpmpfpmqrpmqfpmrHpmrLpmrDpmrTpmrbpmrjpmrnpm47pm4vpm4npm43opY3pm5zpnI3pm5Xpm7npnITpnIbpnIjpnJPpnI7pnJHpnI/pnJbpnJnpnKTpnKrpnLDpnLnpnL3pnL7pnYTpnYbpnYjpnYLpnYnpnZzpnaDpnaTpnabpnajli5LpnavpnbHpnbnpnoXpnbzpnoHpnbrpnobpnovpno/pnpDpnpzpnqjpnqbpnqPpnrPpnrTpn4Ppn4bpn4jpn4vpn5zpn63pvY/pn7Lnq5/pn7bpn7XpoI/poIzpoLjpoKTpoKHpoLfpoL3poYbpoY/poYvpoavpoa/pobAiXSxbImU5NDAiLCLpobHpobTpobPpoqrpoq/porHporbpo4Tpo4Ppo4bpo6npo6vppIPppInppJLppJTppJjppKHppJ3ppJ7ppKTppKDppKzppK7ppL3ppL7ppYLppYnppYXppZDppYvppZHppZLppYzppZXpppfpppjppqXppq3ppq7pprzpp5/pp5vpp53pp5jpp5Hpp63pp67pp7Hpp7Lpp7vpp7jpqIHpqI/pqIXpp6LpqJnpqKvpqLfpqYXpqYLpqYDpqYMiXSxbImU5ODAiLCLpqL7pqZXpqY3pqZvpqZfpqZ/pqaLpqaXpqaTpqanpqavpqarpqq3pqrDpqrzpq4Dpq4/pq5Hpq5Ppq5Tpq57pq5/pq6Lpq6Ppq6bpq6/pq6vpq67pq7Tpq7Hpq7fpq7vprIbprJjprJrprJ/prKLprKPprKXprKfprKjprKnprKrprK7prK/prLLprYTprYPprY/prY3prY7prZHprZjprbTprpPproPprpHprpbprpfprp/prqDprqjprrTpr4Dpr4rprrnpr4bpr4/pr5Hpr5Lpr6Ppr6Lpr6Tpr5Tpr6HpsLrpr7Lpr7Hpr7DpsJXpsJTpsInpsJPpsIzpsIbpsIjpsJLpsIrpsITpsK7psJvpsKXpsKTpsKHpsLDpsYfpsLLpsYbpsL7psZrpsaDpsafpsbbpsbjps6fps6zps7DptInptIjps6vptIPptIbptKrptKbptq/ptKPptJ/ptYTptJXptJLptYHptL/ptL7ptYbptYgiXSxbImVhNDAiLCLptZ3ptZ7ptaTptZHptZDptZnptbLptonptofptqvpta/ptbrptprptqTptqnptrLpt4Tpt4Hptrvptrjptrrpt4bpt4/pt4Lpt5npt5Ppt7jpt6bpt63pt6/pt73puJrpuJvpuJ7pubXpubnpub3puoHpuojpuovpuozpupLpupXpupHpup3puqXpuqnpurjpuqrpuq3pnaHpu4zpu47pu4/pu5Dpu5Tpu5zpu57pu53pu6Dpu6Xpu6jpu68iXSxbImVhODAiLCLpu7Tpu7bpu7fpu7npu7vpu7zpu73pvIfpvIjnmrfpvJXpvKHpvKzpvL7pvYrpvZLpvZTpvaPpvZ/pvaDpvaHpvabpvafpvazpvarpvbfpvbLpvbbpvpXpvpzpvqDloK/mp4fpgZnnkaTlh5znhpkiXSxbImVkNDAiLCLnuoropJzpjYjpiojok5zkv4nngrvmmLHmo4jpi7nmm7vlvYXkuKjku6Hku7zkvIDkvIPkvLnkvZbkvpLkvorkvprkvpTkv43lgYDlgKLkv7/lgJ7lgYblgbDlgYLlgpTlg7Tlg5jlhYrlhaTlhp3lhr7lh6zliJXlipzliqbli4Dli5vljIDljIfljKTljbLljpPljrLlj53vqI7lkpzlkorlkqnlk7/lloblnZnlnaXlnqzln4jln4fvqI8iXSxbImVkODAiLCLvqJDlop7lorLlpIvlpZPlpZvlpZ3lpaPlpqTlprrlrZblr4DnlK/lr5jlr6zlsJ7lsqblsrrls7XltKfltZPvqJHltYLlta3ltrjltrnlt5DlvKHlvLTlvaflvrflv57mgZ3mgoXmgormg57mg5XmhKDmg7LmhJHmhLfmhLDmhpjmiJPmiqbmj7XmkaDmkp3mk47mlY7mmIDmmJXmmLvmmInmmK7mmJ7mmKTmmaXmmZfmmZnvqJLmmbPmmpnmmqDmmrLmmr/mm7rmnI7vpKnmnabmnrvmoZLmn4DmoIHmoYTmo4/vqJPmpajvqJTmppjmp6LmqLDmqavmqYbmqbPmqb7mq6Lmq6Tmr5bmsL/msZzmsobmsa/ms5rmtITmtofmta/mtpbmtqzmt4/mt7jmt7Lmt7zmuLnmuZzmuKfmuLzmur/mvojmvrXmv7XngIXngIfngKjngoXngqvnhI/nhITnhZznhYbnhYfvqJXnh4Hnh77nirEiXSxbImVlNDAiLCLnir7njKTvqJbnjbfnjr3nj4nnj5bnj6Pnj5LnkIfnj7XnkKbnkKrnkKnnkK7nkaLnkonnkp/nlIHnla/nmoLnmpznmp7nmpvnmqbvqJfnnYbliq/noKHnoY7noaTnobrnpLDvqJjvqJnvqJrnppTvqJvnppvnq5Hnq6fvqJznq6vnrp7vqJ3ntYjntZzntrfntqDnt5bnuZLnvYfnvqHvqJ7ojIHojaLojb/oj4foj7bokYjokrTolZPolZkiXSxbImVlODAiLCLolavvqJ/olrDvqKDvqKHooIfoo7XoqJLoqLfoqbnoqqfoqr7oq5/vqKLoq7borZPorb/os7Dos7TotJLotbbvqKPou4/vqKTvqKXpgafpg57vqKbphJXphKfph5rph5fph57ph63ph67ph6Tph6XpiIbpiJDpiIrpiLrpiYDpiLzpiY7piZnpiZHpiLnpiafpiqfpibfpibjpi6fpi5fpi5npi5DvqKfpi5Xpi6Dpi5PpjKXpjKHpi7vvqKjpjJ7pi7/pjJ3pjILpjbDpjZfpjqTpj4bpj57pj7jpkLHpkYXpkYjplpLvp5zvqKnpmp3pmq/pnLPpnLvpnYPpnY3pnY/pnZHpnZXpoZfpoaXvqKrvqKvppKfvqKzppp7pqY7pq5npq5zprbXprbLpro/prrHprrvpsIDptbDptavvqK3puJnpu5EiXSxbImVlZWYiLCLihbAiLDksIu+/ou+/pO+8h++8giJdLFsiZjA0MCIsIu6AgCIsNjJdLFsiZjA4MCIsIu6AvyIsMTI0XSxbImYxNDAiLCLugrwiLDYyXSxbImYxODAiLCLug7siLDEyNF0sWyJmMjQwIiwi7oW4Iiw2Ml0sWyJmMjgwIiwi7oa3IiwxMjRdLFsiZjM0MCIsIu6ItCIsNjJdLFsiZjM4MCIsIu6JsyIsMTI0XSxbImY0NDAiLCLui7AiLDYyXSxbImY0ODAiLCLujK8iLDEyNF0sWyJmNTQwIiwi7o6sIiw2Ml0sWyJmNTgwIiwi7o+rIiwxMjRdLFsiZjY0MCIsIu6RqCIsNjJdLFsiZjY4MCIsIu6SpyIsMTI0XSxbImY3NDAiLCLulKQiLDYyXSxbImY3ODAiLCLulaMiLDEyNF0sWyJmODQwIiwi7pegIiw2Ml0sWyJmODgwIiwi7pifIiwxMjRdLFsiZjk0MCIsIu6anCJdLFsiZmE0MCIsIuKFsCIsOSwi4oWgIiw5LCLvv6Lvv6TvvIfvvILjiLHihJbihKHiiLXnuoropJzpjYjpiojok5zkv4nngrvmmLHmo4jpi7nmm7vlvYXkuKjku6Hku7zkvIDkvIPkvLnkvZbkvpLkvorkvprkvpTkv43lgYDlgKLkv7/lgJ7lgYblgbDlgYLlgpTlg7Tlg5jlhYoiXSxbImZhODAiLCLlhaTlhp3lhr7lh6zliJXlipzliqbli4Dli5vljIDljIfljKTljbLljpPljrLlj53vqI7lkpzlkorlkqnlk7/lloblnZnlnaXlnqzln4jln4fvqI/vqJDlop7lorLlpIvlpZPlpZvlpZ3lpaPlpqTlprrlrZblr4DnlK/lr5jlr6zlsJ7lsqblsrrls7XltKfltZPvqJHltYLlta3ltrjltrnlt5DlvKHlvLTlvaflvrflv57mgZ3mgoXmgormg57mg5XmhKDmg7LmhJHmhLfmhLDmhpjmiJPmiqbmj7XmkaDmkp3mk47mlY7mmIDmmJXmmLvmmInmmK7mmJ7mmKTmmaXmmZfmmZnvqJLmmbPmmpnmmqDmmrLmmr/mm7rmnI7vpKnmnabmnrvmoZLmn4DmoIHmoYTmo4/vqJPmpajvqJTmppjmp6LmqLDmqavmqYbmqbPmqb7mq6Lmq6Tmr5bmsL/msZzmsobmsa/ms5rmtITmtofmta8iXSxbImZiNDAiLCLmtpbmtqzmt4/mt7jmt7Lmt7zmuLnmuZzmuKfmuLzmur/mvojmvrXmv7XngIXngIfngKjngoXngqvnhI/nhITnhZznhYbnhYfvqJXnh4Hnh77nirHnir7njKTvqJbnjbfnjr3nj4nnj5bnj6Pnj5LnkIfnj7XnkKbnkKrnkKnnkK7nkaLnkonnkp/nlIHnla/nmoLnmpznmp7nmpvnmqbvqJfnnYbliq/noKHnoY7noaTnobrnpLDvqJjvqJkiXSxbImZiODAiLCLvqJrnppTvqJvnppvnq5Hnq6fvqJznq6vnrp7vqJ3ntYjntZzntrfntqDnt5bnuZLnvYfnvqHvqJ7ojIHojaLojb/oj4foj7bokYjokrTolZPolZnolavvqJ/olrDvqKDvqKHooIfoo7XoqJLoqLfoqbnoqqfoqr7oq5/vqKLoq7borZPorb/os7Dos7TotJLotbbvqKPou4/vqKTvqKXpgafpg57vqKbphJXphKfph5rph5fph57ph63ph67ph6Tph6XpiIbpiJDpiIrpiLrpiYDpiLzpiY7piZnpiZHpiLnpiafpiqfpibfpibjpi6fpi5fpi5npi5DvqKfpi5Xpi6Dpi5PpjKXpjKHpi7vvqKjpjJ7pi7/pjJ3pjILpjbDpjZfpjqTpj4bpj57pj7jpkLHpkYXpkYjplpLvp5zvqKnpmp3pmq/pnLPpnLvpnYPpnY3pnY/pnZHpnZXpoZfpoaXvqKrvqKvppKfvqKzppp7pqY7pq5kiXSxbImZjNDAiLCLpq5zprbXprbLpro/prrHprrvpsIDptbDptavvqK3puJnpu5EiXV0KCi8qKiovIH0pLAovKiAxODEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSBbWyIwIiwiXHUwMDAwIiwxMjddLFsiOGVhMSIsIu+9oSIsNjJdLFsiYTFhMSIsIuOAgOOAgeOAgu+8jO+8juODu++8mu+8m++8n++8geOCm+OCnMK0772AwqjvvL7vv6PvvL/jg73jg77jgp3jgp7jgIPku53jgIXjgIbjgIfjg7zigJXigJDvvI/vvLzvvZ7iiKXvvZzigKbigKXigJjigJnigJzigJ3vvIjvvInjgJTjgJXvvLvvvL3vvZvvvZ3jgIgiLDksIu+8i++8jcKxw5fDt++8neKJoO+8nO+8nuKJpuKJp+KInuKItOKZguKZgMKw4oCy4oCz4oSD77+l77yE77+g77+h77yF77yD77yG77yK77ygwqfimIbimIXil4vil4/il47il4ciXSxbImEyYTEiLCLil4bilqHilqDilrPilrLilr3ilrzigLvjgJLihpLihpDihpHihpPjgJMiXSxbImEyYmEiLCLiiIjiiIviiobiiofiioLiioPiiKriiKkiXSxbImEyY2EiLCLiiKfiiKjvv6Lih5Lih5TiiIDiiIMiXSxbImEyZGMiLCLiiKDiiqXijJLiiILiiIfiiaHiiZLiiariiaviiJriiL3iiJ3iiLXiiKviiKwiXSxbImEyZjIiLCLihKvigLDima/ima3imarigKDigKHCtiJdLFsiYTJmZSIsIuKXryJdLFsiYTNiMCIsIu+8kCIsOV0sWyJhM2MxIiwi77yhIiwyNV0sWyJhM2UxIiwi772BIiwyNV0sWyJhNGExIiwi44GBIiw4Ml0sWyJhNWExIiwi44KhIiw4NV0sWyJhNmExIiwizpEiLDE2LCLOoyIsNl0sWyJhNmMxIiwizrEiLDE2LCLPgyIsNl0sWyJhN2ExIiwi0JAiLDUsItCB0JYiLDI1XSxbImE3ZDEiLCLQsCIsNSwi0ZHQtiIsMjVdLFsiYThhMSIsIuKUgOKUguKUjOKUkOKUmOKUlOKUnOKUrOKUpOKUtOKUvOKUgeKUg+KUj+KUk+KUm+KUl+KUo+KUs+KUq+KUu+KVi+KUoOKUr+KUqOKUt+KUv+KUneKUsOKUpeKUuOKVgiJdLFsiYWRhMSIsIuKRoCIsMTksIuKFoCIsOV0sWyJhZGMwIiwi442J44yU44yi442N44yY44yn44yD44y2442R442X44yN44ym44yj44yr442K44y7446c446d446e446O446P44+E446hIl0sWyJhZGRmIiwi442744Cd44Cf4oSW44+N4oSh44qkIiw0LCLjiLHjiLLjiLnjjb7jjb3jjbziiZLiiaHiiKviiK7iiJHiiJriiqXiiKDiiJ/iir/iiLXiiKniiKoiXSxbImIwYTEiLCLkupzllJblqIPpmL/lk4DmhJvmjKjlp7bpgKLokbXojJznqZDmgqrmj6HmuKXml63okaboiqbpr7XmopPlnKfmlqHmibHlrpvlp5Dombvpo7TntaLntr7pro7miJbnsp/oorflronlurXmjInmmpfmoYjpl4fpno3mnY/ku6XkvIrkvY3kvp3lgYnlm7LlpLflp5TlqIHlsInmg5/mhI/mhbDmmJPmpIXngrrnlY/nlbDnp7vntq3nt6/og4PokI7ooaPorILpgZXpgbrljLvkupXkuqXln5/ogrLpg4Hno6/kuIDlo7HmuqLpgLjnqLLojKjoiovpsK/lhYHljbDlkr3lk6Hlm6Dlp7vlvJXpo7Lmt6vog6TolK0iXSxbImIxYTEiLCLpmaLpmbDpmqDpn7vlkIvlj7Plrofng4/nvr3ov4Lpm6jlja/ptZznqrrkuJHnopPoh7zmuKblmJjllITmrJ3olJrpsLvlp6Xljqnmtabnk5zplo/lmYLkupHpgYvpm7LojY/ppIzlj6HllrblrLDlvbHmmKDmm7PmoITmsLjms7PmtKnnkZvnm4jnqY7poLToi7HooZvoqaDpi63mtrLnlqvnm4rpp4XmgqborIHotorplrLmpo7ljq3lhoblnJLloLDlpYTlrrTlu7bmgKjmjqnmj7Tmsr/mvJTngo7nhJTnhZnnh5XnjL/nuIHoibboi5HolpfpgaDpiZvptJvloanmlrzmsZrnlKXlh7nlpK7lpaXlvoDlv5wiXSxbImIyYTEiLCLmirzml7rmqKrmrKfmrrTnjovnv4HopZbptKzptI7pu4TlsqHmspbojbvlhITlsYvmhrboh4bmobbniaHkuZnkv7rljbjmganmuKnnqY/pn7PkuIvljJbku67kvZXkvL3kvqHkvbPliqDlj6/lmInlpI/lq4Hlrrblr6Hnp5HmmofmnpzmnrbmrYzmsrPngavnj4Lnpo3npr7nqLznrofoirHoi5vojITojbfoj6/oj5PonaboqrLlmKnosqjov6bpgY7pnJ7omorkv4Tls6jmiJHniZnnlLvoh6Xoir3om77os4Dpm4XppJPpp5Xku4vkvJrop6Plm57loYrlo4rlu7vlv6vmgKrmgpTmgaLmh5DmiJLmi5DmlLkiXSxbImIzYTEiLCLprYHmmabmorDmtbfngbDnlYznmobntbXoiqXon7nplovpmo7osp3lh7Hlir7lpJblkrPlrrPltJbmhajmpoLmtq/noo3ok4vooZfoqbLpjqfpqrjmtazppqjom5nlnqPmn7/om47piI7lioPlmoflkITlu5Pmi6HmkrnmoLzmoLjmrrvnjbLnorrnqavopprop5LotavovIPpg63plqPpmpTpnanlrablsrPmpb3poY3poY7mjpvnrKDmqKvmqb/morbpsI3mvZ/libLllp3mgbDmi6zmtLvmuIfmu5HokZvopJDovYTkuJTpsLnlj7bmpJvmqLrpnoTmoKrlhZznq4PokrLph5zpjozlmZvptKjmoKLojIXokLEiXSxbImI0YTEiLCLnsqXliIjoi4Xnk6bkub7kvoPlhqDlr5LliIrli5jli6flt7vllprloKrlp6blrozlrpjlr5vlubLlubnmgqPmhJ/mhaPmhr7mj5vmlaLmn5HmoZPmo7rmrL7mrZPmsZfmvKLmvpfmvYXnkrDnlJjnm6PnnIvnq7/nrqHnsKHnt6nnvLbnv7Dogp3oiabojp7oprPoq4zosqvpgoTpkZHplpPplpHplqLpmaXpn5PppKjoiJjkuLjlkKvlsrjlt4znjqnnmYznnLzlsqnnv6votIvpm4HpoJHpoZTpoZjkvIHkvI7ljbHllpzlmajln7rlpYflrInlr4TlspDluIzlub7lv4zmj67mnLrml5fml6LmnJ/mo4vmo4QiXSxbImI1YTEiLCLmqZ/luLDmr4XmsJfmsb3nlb/npYjlraPnqIDntIDlvr3opo/oqJjosrTotbfou4zovJ3po6LpqI7prLzkuoDlgb3lhIDlppPlrpzmiK/mioDmk6zmrLrniqDnlpHnpYfnvqnon7voqrzorbDmjqzoj4rpnqDlkInlkIPllqvmoZTmqZjoqbDnoKfmnbXpu43ljbTlrqLohJromZDpgIbkuJjkuYXku4fkvJHlj4rlkLjlrq7lvJPmgKXmlZHmnL3msYLmsbLms6PngbjnkIPnqbbnqq7nrIjntJrns77ntabml6fniZvljrvlsYXlt6jmi5Lmi6DmjJnmuKDomZroqLHot53pi7jmvIHnpqbprZrkuqjkuqvkuqwiXSxbImI2YTEiLCLkvpvkvqDlg5HlhYfnq7blhbHlh7bljZTljKHljb/lj6vllqzlooPls6HlvLflvYrmgK/mgZDmga3mjJ/mlZnmqYvms4Hni4Lni63nn6/og7johIXoiIjolY7pg7fpj6Hpn7/ppZfpqZrku7Dlh53lsK3mmoHmpa3lsYDmm7LmpbXnjonmoZDnsoHlg4Xli6TlnYflt77pjKbmlqTmrKPmrL3nkLTnpoHnpr3nrYvnt4roirnoj4zoob/opZ/orLnov5Hph5HlkJ/pioDkuZ3lgLblj6XljLrni5fnjpbnn6noi6bouq/pp4bpp4jpp5LlhbfmhJromZ7llrDnqbrlgbblr5PpgYfpmoXkuLLmq5vph6flsZHlsYgiXSxbImI3YTEiLCLmjpjnqp/mspPpnbTovaHnqqrnhorpmojnsoLmoJfnubDmoZHpjazli7LlkJvolqvoqJPnvqTou43pg6HljabooojnpYHkv4Llgr7liJHlhYTllZPlnK3nj6rlnovlpZHlvaLlvoTmgbXmhbbmhafmhqnmjrLmkLrmlazmma/moYLmuJPnlabnqL3ns7vntYzntpnnuYvnvavojI7ojYrom43oqIjoqaPorabou73poJrpto/oirjov47pr6jliofmiJ/mkoPmv4DpmpnmoYHlgpHmrKDmsbrmvZTnqbTntZDooYDoqKPmnIjku7blgLnlgKblgaXlhbzliLjliaPllqflnI/loIXlq4zlu7rmhrLmh7jmi7PmjbIiXSxbImI4YTEiLCLmpJzmqKnnib3niqznjK7noJTnoa/ntbnnnIzogqnopovorJnos6Lou5LpgaPpjbXpmbrpoZXpqJPpubjlhYPljp/ljrPlubvlvKbmuJvmupDnjoTnj77ntYPoiLfoqIDoq7rpmZDkuY7lgIvlj6Tlkbzlm7rlp5HlraTlt7HluqvlvKfmiLjmlYXmnq/muZbni5Dns4roorTogqHog6Hoj7DomY7oqofot6jpiLfpm4fpoafpvJPkupTkupLkvI3ljYjlkYnlkL7lqK/lvozlvqHmgp/moqfmqo7nkZrnooHoqp7oqqTorbfphpDkuZ7pr4nkuqTkvbzkvq/lgJnlgJblhYnlhazlip/lirnli77ljprlj6PlkJEiXSxbImI5YTEiLCLlkI7llonlnZHlnqLlpb3lrZTlrZ3lro/lt6Xlt6flt7flubjluoPluprlurflvJjmgZLmhYzmipfmi5jmjqfmlLvmmILmmYPmm7Tmna3moKHmopfmp4vmsZ/mtKrmtanmuK/mup3nlLLnmofnoaznqL/ns6DntIXntJjntZ7ntrHogJXogIPogq/ogrHohZToho/oiKrojZLooYzooaHorJvosqLos7zpg4rphbXpibHnoL/pi7zplqTpmY3poIXpppnpq5jptLvliZvliqvlj7flkIjlo5Xmi7fmv6DosarovZ/purnlhYvliLvlkYrlm73nqYDphbfptaDpu5LnjYTmvInohbDnlJHlv73mg5rpqqjni5vovrwiXSxbImJhYTEiLCLmraTpoIPku4rlm7DlnaTlor7lqZrmgajmh4fmmI/mmIbmoLnmorHmt7fnl5XntLroia7prYLkupvkvZDlj4nllIblta/lt6blt67mn7vmspnnkbPnoILoqZDpjpboo5/lnZDluqfmjKvlgrXlgqzlho3mnIDlk4nloZ7lprvlrrDlvanmiY3mjqHmoL3mrbPmuIjngb3ph4fnioDnoJXnoKbnpa3mlo7ntLDoj5zoo4HovInpmpvliaTlnKjmnZDnvarosqHlhrTlnYLpmKrloLrmporogrTlkrLltI7ln7znopXpt7rkvZzliYrlkovmkL7mmKjmnJTmn7XnqoTnrZbntKLpjK/moZzprq3nrLnljJnlhorliLciXSxbImJiYTEiLCLlr5/mi7bmkq7mk6bmnK3mrrrolqnpm5HnmpDpr5bmjYzpjIbprqvnmr/mmZLkuInlgpjlj4LlsbHmg6jmkpLmlaPmoZ/nh6bnj4rnlKPnrpfnuoLompXoroPos5vphbjppJDmlqzmmqvmrovku5Xku5TkvLrkvb/liLrlj7jlj7Lll6Plm5vlo6vlp4vlp4nlp7/lrZDlsY3luILluKvlv5fmgJ3mjIfmlK/lrZzmlq/mlr3ml6jmnp3mraLmrbvmsI/njYXnpYnnp4Hns7jntJnntKvogqLohILoh7PoppboqZ7oqanoqaboqozoq67os4fos5zpm4zpo7zmra/kuovkvLzkvo3lhZDlrZflr7rmhYjmjIHmmYIiXSxbImJjYTEiLCLmrKHmu4vmsrvniL7nkr3nl5Tno4HnpLrogIzogLPoh6rokpTovp7msZDpub/lvI/orZjptKvnq7rou7jlro3pm6vkuIPlj7Hln7flpLHlq4nlrqTmgonmub/mvIbnlr7os6rlrp/olIDnr6DlgbLmn7Toip3lsaHolYrnuJ7oiI7lhpnlsITmjajotabmlpznha7npL7ntJfogIXorJ3ou4rpga7om4fpgqrlgJ/li7rlsLrmnZPngbzniLXphYzph4jpjKvoi6Xlr4LlvLHmg7nkuLvlj5blrojmiYvmnLHmrorni6nnj6DnqK7ohavotqPphZLpppblhJLlj5flkarlr7/mjojmqLnntqzpnIDlm5rlj47lkagiXSxbImJkYTEiLCLlrpflsLHlt57kv67mhIHmi77mtLLnp4Dnp4vntYLnuY3nv5Loh63oiJ/okpDooYbopbLorpDoubTovK/pgLHphYvphazpm4bphpzku4DkvY/lhYXljYHlvpPmiI7mn5TmsYHmuIvnjaPnuKbph43pioPlj5TlpJnlrr/mt5HnpZ3nuK7nspvlob7nhp/lh7rooZPov7Dkv4rls7vmmKXnnqznq6PoiJzpp7/lh4blvqrml6zmpa/mronmt7PmupbmvaTnm77ntJTlt6HpgbXphofpoIblh6bliJ3miYDmmpHmm5nmuJrlurbnt5LnvbLmm7jolq/ol7foq7jliqnlj5nlpbPluo/lvpDmgZXpi6TpmaTlgrflhJ8iXSxbImJlYTEiLCLli53ljKDljYflj6zlk6jllYbllLHlmJflpajlpr7lqLzlrrXlsIblsI/lsJHlsJrluoTluorlu6DlvbDmib/mioTmi5vmjozmjbfmmIfmmIzmmK3mmbbmnb7moqLmqJ/mqLXmsrzmtojmuInmuZjnhLznhKbnhafnl4fnnIHnoZ3npIHnpaXnp7Dnq6DnrJHnsqfntLnogpboj5bokovolYnooZ3oo7PoqJ/oqLzoqZToqbPosaHos57phqTpiabpjb7pkJjpmpzpnpjkuIrkuIjkuJ7kuZflhpflibDln47loLTlo4zlrKLluLjmg4Xmk77mnaHmnZbmtYTnirbnlbPnqaPokrjorbLphrjpjKDlmLHln7Tpo74iXSxbImJmYTEiLCLmi63mpI3mrpbnh63nuZTogbfoibLop6bpo5/onZXovrHlsLvkvLjkv6HkvrXllIflqKDlr53lr6nlv4PmhY7mjK/mlrDmmYvmo67mppvmtbjmt7HnlLPnlrnnnJ/npZ7np6bntLPoh6Poiq/olqropqroqLrouqvovpvpgLLph53pnIfkurrku4HliIPlobXlo6zlsIvnlJrlsL3ohY7oqIrov4XpmaPpna3nrKXoq4/poIjphaLlm7PljqjpgJflkLnlnoLluKXmjqjmsLTngornnaHnsovnv6DoobDpgYLphZTpjJDpjJjpmo/nkZ7pq4TltIfltanmlbDmnqLotqjpm5vmja7mnYnmpJnoj4XpoJfpm4Doo74iXSxbImMwYTEiLCLmvoTmkbrlr7jkuJbngKznlZ3mmK/lh4TliLbli6Llp5PlvoHmgKfmiJDmlL/mlbTmmJ/mmbTmo7LmoJbmraPmuIXnibLnlJ/nm5vnsr7ogZblo7Doo73opb/oqqDoqpPoq4vpgJ3phpLpnZLpnZnmlonnqI7ohIbpmrvluK3mg5zmiJrmlqXmmJTmnpDnn7PnqY3nsY3nuL7ohIrosqzotaTot6HouZ/noqnliIfmi5nmjqXmkYLmipjoqK3nqoPnr4Doqqzpm6rntbboiIzonYnku5nlhYjljYPljaDlrqPlsILlsJblt53miKbmiYfmkrDmoJPmoLTms4nmtYXmtJfmn5PmvZznhY7nhb3ml4vnqb/nrq3nt5oiXSxbImMxYTEiLCLnuYrnvqjohbroiJvoiLnolqboqa7os47ot7Xpgbjpgbfpiq3pipHploPprq7liY3lloTmvLjnhLblhajnpoXnuZXohrPns47lmYzloZHlsqjmjqrmm77mm73mpZrni5nnlo/nlo7npI7npZbnp5/nspfntKDntYTomIfoqLTpmLvpgaHpvKDlg6flibXlj4zlj6LlgInllqrlo67lpY/niL3lrovlsaTljJ3mg6Pmg7PmjZzmjoPmjL/mjrvmk43ml6nmm7nlt6Pmp43mp73mvJXnh6Xkuonnl6nnm7jnqpPns5/nt4/ntpzogaHojYnojZjokazokrzol7voo4XotbDpgIHpga3pjpfpnJzpqJLlg4/lopfmho4iXSxbImMyYTEiLCLoh5PolLXotIjpgKDkv4PlgbTliYfljbPmga/mjYnmnZ/muKzotrPpgJ/kv5flsZ7os4rml4/ntprljZLoopblhbbmj4PlrZjlravlsIrmkI3mnZHpgZzku5blpJrlpKrmsbDoqZHllL7loJXlpqXmg7DmiZPmn4HoiLXmpZXpmYDpp4TpqKjkvZPloIblr77ogJDlsrHluK/lvoXmgKDmhYvmiLTmm7/ms7Dmu57og47ohb/oi5TooovosrjpgIDpgK7pmorpu5vpr5vku6Plj7DlpKfnrKzpho3poYzpt7nmu53ngKfljZPllYTlroXmiZjmip7mi5PmsqLmv6/nkKLoqJfpkLjmv4Hoq77ojLjlh6fom7jlj6oiXSxbImMzYTEiLCLlj6nkvYbpgZTovrDlparohLHlt73nq6rovr/mo5rosLfni7jpsYjmqL3oqrDkuLnljZjlmIblnabmi4XmjqLml6bmrY7mt6HmuZvngq3nn63nq6/nrqrntrvogL3og4bom4voqpXpjZvlm6Plo4flvL7mlq3mmpbmqoDmrrXnlLfoq4flgKTnn6XlnLDlvJvmgaXmmbrmsaDnl7TnqJrnva7oh7TonJjpgYXpprPnr4nnlZznq7nnrZHok4TpgJDnp6nnqpLojLblq6HnnYDkuK3ku7Llrpnlv6Dmir3mmLzmn7Hms6jomavoobfoqLvphY7pi7Ppp5DmqJfngKbnjKroi6fokZfosq/kuIHlhYblh4vllovlr7UiXSxbImM0YTEiLCLluJbluLPluoHlvJTlvLXlvavlvrTmh7LmjJHmmqLmnJ3mva7niZLnlLrnnLrogbTohLnohbjonbboqr/oq5zotoXot7PpiprplbfpoILps6Xli4XmjZfnm7TmnJXmsojnj43os4Ppjq7pmbPmtKXlopzmpI7mp4zov73pjprnl5vpgJrloZrmoILmjrTmp7vkvYPmvKzmn5jovrvolKbntrTpjZTmpL/mvbDlnarlo7flrKzntKzniKrlkIrph6PptrTkuq3kvY7lgZzlgbXliYPosp7lkYjloKTlrprluJ3lupXluq3lu7flvJ/mgozmirXmjLrmj5Dmoq/msYDnoofnpo7nqIvnt6DoiYfoqILoq6bouYTpgJMiXSxbImM1YTEiLCLpgrjphK3ph5jpvI7ms6XmkZjmk6LmlbXmu7TnmoTnrJvpganpj5Hmurrlk7LlvrnmkqTovY3ov63piYTlhbjloavlpKnlsZXlupfmt7vnuo/nlJzosrzou6LpoZvngrnkvJ3mrr/mvrHnlLDpm7vlhY7lkJDloLXloZflpqzlsaDlvpLmlpfmnZzmuKHnmbvoj5/os63pgJTpg73pjY3noKXnoLrliqrluqblnJ/lpbTmgJLlgJLlhZrlhqzlh43liIDllJDloZTloZjlpZflrpXls7bltovmgrzmipXmkK3mnbHmoYPmorzmo5/nm5fmt5jmua/mtpvnga/nh4jlvZPnl5jnpbfnrYnnrZTnrZLns5bntbHliLAiXSxbImM2YTEiLCLokaPolanol6ToqI7orITosYbouI/pgIPpgI/pkJnpmbbpoK3pqLDpl5jlg43li5XlkIzloILlsI7mhqfmkp7mtJ7nnrPnq6Xog7TokITpgZPpioXls6DptIfljL/lvpflvrPmtpznibnnnaPnpr/nr6Tmr5Lni6zoqq3moIPmqaHlh7jnqoHmpLTlsYrps7boi6vlr4XphYnngJ7lmbjlsa/mg4fmlabmsozosZrpgYHpoJPlkZHmm4fpiI3lpYjpgqPlhoXkuY3lh6rolpnorI7ngZjmjbrpjYvmpaLpprTnuITnlbfljZfmpaDou5/pm6PmsZ3kuozlsLzlvJDov6nljILos5Hogonombnlu7/ml6XkubPlhaUiXSxbImM3YTEiLCLlpoLlsL/pn67ku7vlporlv43oqo3mv6HnprDnpaLlr6fokbHnjKvnhrHlubTlv7Xmjbvmkprnh4PnspjkuYPlu7zkuYvln5zlmqLmgqnmv4PntI3og73ohLPohr/ovrLoppfomqTlt7Tmiormkq3opofmnbfms6LmtL7nkLbnoLTlqYbnvbXoiq3ppqzkv7Plu4Pmi53mjpLmlZfmna/nm4PniYzog4zogrrovKnphY3lgI3ln7nlqpLmooXmpbPnhaTni73osrflo7Los6DpmarpgJnonb/np6Tnn6fokKnkvK/liaXljZrmi43mn4/ms4rnmb3nrpTnspXoiLboloTov6vmm53mvKDniIbnuJvojqvpp4HpuqYiXSxbImM4YTEiLCLlh73nrrHnobLnrrjogofnrYjmq6jluaHogoznlZHnlaDlhavpiaLmuoznmbrphpfpq6rkvJDnvbDmipznrY/plqXps6nlmbrloZnom6TpmrzkvLTliKTljYrlj43lj5vluIbmkKzmlpHmnb/msL7msY7niYjniq/nj63nlZTnuYHoiKzol6nosqnnr4Tph4bnhanpoJLpo6/mjL3mmannlarnm6Tno5DolYPom67ljKrljZHlkKblpoPluoflvbzmgrLmiYnmibnmiqvmlpDmr5Tms4znlrLnmq7nopHnp5jnt4vnvbfogqXooqvoqrnosrvpgb/pnZ7po5vmqIvnsLjlgpnlsL7lvq7mnofmr5jnkLXnnInnvo4iXSxbImM5YTEiLCLpvLvmn4rnqJfljLnnlovpq63lvabohp3oj7HogpjlvLzlv4XnlaLnrYbpgLzmoaflp6vlqpvntJDnmb7orKzkv7XlvarmqJnmsLfmvILnk6LnpajooajoqZXosbnlu5/mj4/nl4Xnp5Loi5fpjKjpi7Lokpzom63psK3lk4HlvazmlozmtZzngJXosqfos5PpoLvmlY/nk7bkuI3ku5jln6DlpKvlqablr4zlhqjluIPlupzmgJbmibbmlbfmlqfmma7mta7niLbnrKbohZDohproipnorZzosqDos6botbTpmJzpmYTkvq7mkqvmraboiJ7okaHolarpg6jlsIHmpZPpoqjokbrolZfkvI/lia/lvqnluYXmnI0iXSxbImNhYTEiLCLnpo/ohbnopIfopobmt7XlvJfmiZXmsrjku4/nianprpLliIblkLvlmbTlorPmhqTmia7nhJrlpa7nsonns57ntJvpm7DmlofogZ7kuJnkvbXlhbXloYDluaPlubPlvIrmn4TkuKbolL3plonpmZvnsbPpoIHlg7vlo4HnmZbnoqfliKXnnqXolJHnroblgY/lpInniYfnr4fnt6jovrrov5TpgY3kvr/li4nlqKnlvIHpnq3kv53oiJfpi6rlnIPmjZXmrannlKvoo5zovJTnqYLli5/lopPmhZXmiIrmmq7mr43nsL/oj6nlgKPkv7jljIXlkYbloLHlpYnlrp3ls7Dls6/ltKnlupbmirHmjafmlL7mlrnmnIsiXSxbImNiYTEiLCLms5Xms6Hng7nnoLLnuKvog57oirPokIzok6zonILopJLoqKrosYrpgqbpi5Lpo73ps7PptazkuY/kuqHlgo3liZblnYrlpqjluL3lv5jlv5nmiL/mmrTmnJvmn5Dmo5LlhpLntKHogqrohqjorIDosozosr/pib7pmLLlkKDpoKzljJflg5XljZzloqjmkrLmnLTniafnnabnqYbph6bli4PmsqHmrobloIDluYzlpZTmnKznv7vlh6Hnm4bmkanno6jprZTpurvln4vlprnmmKfmnprmr47lk6nmp5nluZXohpzmnpXprqrmn77psZLmoZ3kuqbkv6Plj4jmirnmnKvmsqvov4Tkvq3nua3pur/kuIfmhaLmuoAiXSxbImNjYTEiLCLmvKvolJPlkbPmnKrprYXlt7PnrpXlsqzlr4bonJzmuYrok5HnqJTohIjlppnnso3msJHnnKDli5nlpKLnhKHniZ/nn5vpnKfptaHmpIvlqb/lqJjlhqXlkI3lkb3mmI7nm5/ov7fpipjps7Tlp6rniZ3mu4XlhY3mo4nntr/nt6zpnaLpurrmkbjmqKHojILlpoTlrZ/mr5vnjJvnm7LntrLogJfokpnlhLLmnKjpu5nnm67mnaLli7/ppIXlsKTmiLvnsb7osrDllY/mgrbntIvploDljIHkuZ/lhrblpJzniLrogLbph47lvKXnn6LljoTlvbnntITolqzoqLPouo3pnZbmn7Polq7pkZPmhInmhIjmsrnnmZIiXSxbImNkYTEiLCLoq63ovLjllK/kvZHlhKrli4flj4vlrqXlub3mgqDmhoLmj5bmnInmn5rmuafmtoznjLbnjLfnlLHnpZDoo5XoqpjpgYrpgpHpg7Xpm4Tono3lpJXkuojkvZnkuI7oqonovL/poJDlgq3lubzlppblrrnlurjmj5rmj7rmk4Hmm5zmpYrmp5jmtIvmurbnhpTnlKjnqq/nvorogIDokYnok4nopoHorKHouIrpgaXpmb3ppIrmhb7mipHmrLLmsoPmtbTnv4znv7zmt4DnvoXonrroo7jmnaXojrHpoLzpm7fmtJvntaHokL3pharkubHljbXltZDmrITmv6vol43omK3opqfliKnlkI/lsaXmnY7moqjnkIbnkoMiXSxbImNlYTEiLCLnl6Loo4/oo6Hph4zpm6Lpmbjlvovnjofnq4vokY7mjqDnlaXlionmtYHmupznkInnlZnnoavnspLpmobnq5zpvo3kvrbmha7ml4XomZzkuobkuq7lg5rkuKHlh4zlr67mlpnmooHmtrznjJ/nmYLnnq3nqJzns6foia/oq5Lpgbzph4/pmbXpoJjlipvnt5HlgKvljpjmnpfmt4vnh5DnkLPoh6jovKrpmqPpsZfpup/nkaDloYHmtpnntK/poZ7ku6TkvLbkvovlhrflirHltrrmgJznjrLnpLzoi5PpiLTpmrfpm7bpnIrpupfpvaLmmqbmrbTliJfliqPng4joo4Llu4nmgYvmhpDmvKPnhYnnsL7nt7Toga8iXSxbImNmYTEiLCLok67pgKPpjKzlkYLpra/mq5Pngonos4Lot6/pnLLlirTlqYHlu4rlvITmnJfmpbzmppTmtarmvI/niaLni7znr63ogIHogb7onYvpg47lha3pupPnpoTogovpjLLoq5blgK3lkozoqbHmraros4TohIfmg5HmnqDpt7LkupnkupjpsJDoqavol4HolajmpIDmub7nopfohZUiXSxbImQwYTEiLCLlvIzkuJDkuJXkuKrkuLHkuLbkuLzkuL/kuYLkuZbkuZjkuoLkuoXosavkuoroiJLlvI3kuo7kup7kup/kuqDkuqLkurDkurPkurbku47ku43ku4Tku4bku4Lku5fku57ku63ku5/ku7fkvInkvZrkvLDkvZvkvZ3kvZfkvYfkvbbkvojkvo/kvpjkvbvkvankvbDkvpHkva/kvobkvpblhJjkv5Tkv5/kv47kv5jkv5vkv5Hkv5rkv5Dkv6Tkv6XlgJrlgKjlgJTlgKrlgKXlgIXkvJzkv7blgKHlgKnlgKzkv77kv6/lgJHlgIblgYPlgYfmnIPlgZXlgZDlgYjlgZrlgZblgazlgbjlgoDlgprlgoXlgrTlgrIiXSxbImQxYTEiLCLlg4nlg4rlgrPlg4Llg5blg57lg6Xlg63lg6Plg67lg7nlg7XlhInlhIHlhILlhJblhJXlhJTlhJrlhKHlhLrlhLflhLzlhLvlhL/lhYDlhZLlhYzlhZTlhaLnq7jlhanlharlha7lhoDlhoLlm5jlhozlhonlho/lhpHlhpPlhpXlhpblhqTlhqblhqLlhqnlhqrlhqvlhrPlhrHlhrLlhrDlhrXlhr3lh4Xlh4nlh5vlh6DomZXlh6nlh63lh7Dlh7Xlh77liITliIvliJTliI7liKfliKrliK7liLPliLnliY/liYTliYvliYzliZ7liZTliarlibTlianlibPlib/lib3lio3lipTlipLlibHliojlipHovqgiXSxbImQyYTEiLCLovqfliqzliq3lirzlirXli4Hli43li5fli57li6Pli6bpo63li6Dli7Pli7Xli7jli7nljIbljIjnlLjljI3ljJDljI/ljJXljJrljKPljK/ljLHljLPljLjljYDljYbljYXkuJfljYnljY3lh5bljZ7ljanlja7lpJjljbvljbfljoLljpbljqDljqbljqXljq7ljrDljrblj4PnsJLpm5nlj5/mm7znh67lj67lj6jlj63lj7rlkIHlkL3lkYDlkKzlkK3lkLzlkK7lkLblkKnlkJ3lkY7lko/lkbXlko7lkZ/lkbHlkbflkbDlkpLlkbvlkoDlkbblkoTlkpDlkoblk4flkqLlkrjlkqXlkqzlk4Tlk4jlkqgiXSxbImQzYTEiLCLlkqvlk4LlkqTlkr7lkrzlk5jlk6Xlk6bllI/llJTlk73lk67lk63lk7rlk6LllLnllYDllaPllYzllK7llZzllYXllZbllZfllLjllLPllZ3llpnlloDlkq/llorllp/llbvllb7llpjllp7llq7llbzlloPllqnllofllqjll5rll4Xll5/ll4Tll5zll6Tll5TlmJTll7flmJbll77ll73lmJvll7nlmY7lmZDnh5/lmLTlmLblmLLlmLjlmavlmaTlmK/lmazlmarlmoblmoDlmorlmqDlmpTlmo/lmqXlmq7lmrblmrTlm4Llmrzlm4Hlm4Plm4Dlm4jlm47lm5Hlm5Plm5flm67lm7nlnIDlm7/lnITlnIkiXSxbImQ0YTEiLCLlnIjlnIvlnI3lnJPlnJjlnJbll4flnJzlnKblnLflnLjlnY7lnLvlnYDlnY/lnanln4DlnojlnaHlnb/lnonlnpPlnqDlnrPlnqTlnqrlnrDln4Pln4bln5Tln5Lln5PloIrln5bln6PloIvloJnloJ3lobLloKHloaLloYvlobDmr4DloZLloL3lobnlooXlornlop/loqvlorrlo57lorvlorjloq7lo4Xlo5Plo5Hlo5flo5nlo5jlo6Xlo5zlo6Tlo5/lo6/lo7rlo7nlo7vlo7zlo73lpILlpIrlpJDlpJvmoqblpKXlpKzlpK3lpLLlpLjlpL7nq5LlpZXlpZDlpY7lpZrlpZjlpaLlpaDlpaflpazlpakiXSxbImQ1YTEiLCLlpbjlpoHlpp3kvZ7kvqvlpqPlprLlp4blp6jlp5zlpo3lp5nlp5rlqKXlqJ/lqJHlqJzlqInlqJrlqYDlqazlqYnlqLXlqLblqaLlqarlqprlqrzlqr7lq4vlq4Llqr3lq6Plq5flq6blq6nlq5blq7rlq7vlrIzlrIvlrJblrLLlq5DlrKrlrLblrL7lrYPlrYXlrYDlrZHlrZXlrZrlrZvlraXlranlrbDlrbPlrbXlrbjmlojlrbrlroDlroPlrqblrrjlr4Plr4flr4nlr5Tlr5Dlr6Tlr6blr6Llr57lr6Xlr6vlr7Dlr7blr7PlsIXlsIflsIjlsI3lsJPlsKDlsKLlsKjlsLjlsLnlsYHlsYblsY7lsZMiXSxbImQ2YTEiLCLlsZDlsY/lrbHlsazlsa7kuaLlsbblsbnlsozlspHlspTlppvlsqvlsrvlsrblsrzlsrfls4Xlsr7ls4fls5nls6nls73ls7rls63ltozls6rltIvltJXltJfltZzltJ/ltJvltJHltJTltKLltJrltJnltJjltYzltZLltY7ltYvltazltbPltbbltofltoTltoLltqLltp3ltqzltq7ltr3ltpDltrfltrzlt4nlt43lt5Plt5Llt5blt5vlt6vlt7Llt7XluIvluJrluJnluJHluJvluLbluLfluYTluYPluYDluY7luZfluZTluZ/luaLluaTluYflubXlubblubrpurzlub/luqDlu4Hlu4Llu4jlu5Dlu48iXSxbImQ3YTEiLCLlu5blu6Plu53lu5rlu5vlu6Llu6Hlu6jlu6nlu6zlu7Hlu7Plu7Dlu7Tlu7jlu77lvIPlvInlvZ3lvZzlvIvlvJHlvJblvKnlvK3lvLjlvYHlvYjlvYzlvY7lvK/lvZHlvZblvZflvZnlvaHlva3lvbPlvbflvoPlvoLlvb/lvorlvojlvpHlvoflvp7lvpnlvpjlvqDlvqjlvq3lvrzlv5blv7vlv6Tlv7jlv7Hlv53mgrPlv7/mgKHmgaDmgJnmgJDmgKnmgI7mgLHmgJvmgJXmgKvmgKbmgI/mgLrmgZrmgYHmgarmgbfmgZ/mgYrmgYbmgY3mgaPmgYPmgaTmgYLmgazmgavmgZnmgoHmgo3mg6fmgoPmgpoiXSxbImQ4YTEiLCLmgoTmgpvmgpbmgpfmgpLmgqfmgovmg6Hmgrjmg6Dmg5PmgrTlv7Dmgr3mg4bmgrXmg5jmhY3mhJXmhIbmg7bmg7fmhIDmg7Tmg7rmhIPmhKHmg7vmg7HmhI3mhI7mhYfmhL7mhKjmhKfmhYrmhL/mhLzmhKzmhLTmhL3mhYLmhYTmhbPmhbfmhZjmhZnmhZrmhavmhbTmha/mhaXmhbHmhZ/mhZ3mhZPmhbXmhpnmhpbmhofmhqzmhpTmhprmhormhpHmhqvmhq7mh4zmh4rmh4nmh7fmh4jmh4Pmh4bmhrrmh4vnvbnmh43mh6bmh6Pmh7bmh7rmh7Tmh7/mh73mh7zmh77miIDmiIjmiInmiI3miIzmiJTmiJsiXSxbImQ5YTEiLCLmiJ7miKHmiKrmiK7miLDmiLLmiLPmiYHmiY7miZ7miaPmiZvmiaDmiajmibzmioLmionmib7mipLmipPmipbmi5TmioPmipTmi5fmi5Hmirvmi4/mi7/mi4bmk5Tmi4jmi5zmi4zmi4rmi4Lmi4fmipvmi4nmjIzmi67mi7HmjKfmjILmjIjmi6/mi7XmjZDmjL7mjY3mkJzmjY/mjpbmjo7mjoDmjqvmjbbmjqPmjo/mjonmjp/mjrXmjavmjanmjr7mj6nmj4Dmj4bmj6Pmj4nmj5Lmj7bmj4TmkJbmkLTmkIbmkJPmkKbmkLbmlJ3mkJfmkKjmkI/mkafmka/mkbbmkY7mlKrmkpXmkpPmkqXmkqnmkojmkrwiXSxbImRhYTEiLCLmk5rmk5Lmk4Xmk4fmkrvmk5jmk4Lmk7Hmk6foiInmk6Dmk6Hmiqzmk6Pmk6/mlKzmk7bmk7Tmk7Lmk7rmlIDmk73mlJjmlJzmlIXmlKTmlKPmlKvmlLTmlLXmlLfmlLbmlLjnlYvmlYjmlZbmlZXmlY3mlZjmlZ7mlZ3mlbLmlbjmloLmloPorormlpvmlp/mlqvmlrfml4Pml4bml4Hml4Tml4zml5Lml5vml5nml6Dml6Hml7HmnbLmmIrmmIPml7vmnbPmmLXmmLbmmLTmmJzmmY/mmYTmmYnmmYHmmZ7mmZ3mmaTmmafmmajmmZ/mmaLmmbDmmoPmmojmmo7mmonmmoTmmpjmmp3mm4Hmmrnmm4nmmr7mmrwiXSxbImRiYTEiLCLmm4Tmmrjmm5bmm5rmm6DmmL/mm6bmm6nmm7Dmm7Xmm7fmnI/mnJbmnJ7mnKbmnKfpnLjmnK7mnL/mnLbmnYHmnLjmnLfmnYbmnZ7mnaDmnZnmnaPmnaTmnonmnbDmnqnmnbzmnarmnozmnovmnqbmnqHmnoXmnrfmn6/mnrTmn6zmnrPmn6nmnrjmn6Tmn57mn53mn6Lmn67mnrnmn47mn4bmn6fmqpzmoJ7moYbmoKnmoYDmoY3moLLmoY7morPmoKvmoZnmoaPmobfmob/mop/moo/moq3mopTmop3mopvmooPmqq7mornmobTmorXmoqDmorrmpI/moo3mob7mpIHmo4rmpIjmo5jmpKLmpKbmo6HmpIzmo40iXSxbImRjYTEiLCLmo5Tmo6fmo5XmpLbmpJLmpITmo5fmo6PmpKXmo7nmo6Dmo6/mpKjmpKrmpJrmpKPmpKHmo4bmpbnmpbfmpZzmpbjmpavmpZTmpb7mpa7mpLnmpbTmpL3mpZnmpLDmpaHmpZ7mpZ3mpoHmparmprLmpq7mp5Dmpr/mp4Hmp5Pmpr7mp47lr6jmp4rmp53mprvmp4PmpqfmqK7mppHmpqDmppzmppXmprTmp57mp6jmqILmqJvmp7/mrIrmp7nmp7Lmp6fmqIXmprHmqJ7mp63mqJTmp6vmqIrmqJLmq4HmqKPmqJPmqYTmqIzmqbLmqLbmqbjmqYfmqaLmqZnmqabmqYjmqLjmqKLmqpDmqo3mqqDmqoTmqqLmqqMiXSxbImRkYTEiLCLmqpfomJfmqrvmq4Pmq4LmqrjmqrPmqqzmq57mq5Hmq5/mqqrmq5rmq6rmq7vmrIXomJbmq7rmrJLmrJbprLHmrJ/mrLjmrLfnm5zmrLnpo67mrYfmrYPmrYnmrZDmrZnmrZTmrZvmrZ/mraHmrbjmrbnmrb/mroDmroTmroPmro3mrpjmrpXmrp7mrqTmrqrmrqvmrq/mrrLmrrHmrrPmrrfmrrzmr4bmr4vmr5Pmr5/mr6zmr6vmr7Pmr6/pur7msIjmsJPmsJTmsJvmsKTmsKPmsZ7msZXmsaLmsarmsoLmso3msprmsoHmspvmsb7msajmsbPmspLmspDms4Tms7Hms5Pmsr3ms5fms4Xms53msq7msrHmsr4iXSxbImRlYTEiLCLmsrrms5vms6/ms5nms6rmtJ/ooY3mtLbmtKvmtL3mtLjmtJnmtLXmtLPmtJLmtIzmtaPmtpPmtaTmtZrmtbnmtZnmto7mtpXmv6TmtoXmt7nmuJXmuIrmtrXmt4fmt6bmtrjmt4bmt6zmt57mt4zmt6jmt5Lmt4Xmt7rmt5nmt6Tmt5Xmt6rmt67muK3mua7muK7muJnmubLmuZ/muL7muKPmuavmuKvmubbmuY3muJ/muYPmuLrmuY7muKTmu7/muJ3muLjmuoLmuqrmupjmu4nmurfmu5Pmur3muq/mu4TmurLmu5Tmu5Xmuo/muqXmu4Lmup/mvYHmvJHngYzmu6zmu7jmu77mvL/mu7LmvLHmu6/mvLLmu4wiXSxbImRmYTEiLCLmvL7mvJPmu7fmvobmvbrmvbjmvoHmvoDmva/mvZvmv7Pmva3mvoLmvbzmvZjmvo7mvpHmv4LmvabmvrPmvqPmvqHmvqTmvrnmv4bmvqrmv5/mv5Xmv6zmv5Tmv5jmv7Hmv67mv5vngInngIvmv7rngJHngIHngI/mv77ngJvngJrmvbTngJ3ngJjngJ/ngLDngL7ngLLngZHngaPngpnngpLngq/ng7HngqzngrjngrPngq7ng5/ng4vng53ng5nnhInng73nhJznhJnnhaXnhZXnhojnhabnhaLnhYznhZbnhaznho/nh7vnhoTnhpXnhqjnhqznh5fnhrnnhr7nh5Lnh4nnh5Tnh47nh6Dnh6znh6fnh7Xnh7wiXSxbImUwYTEiLCLnh7nnh7/niI3niJDniJvniKjniK3niKzniLDniLLniLvniLzniL/niYDniYbniYvniZjnibTnib7nioLnioHniofnipLnipbniqLniqfnirnnirLni4Pni4bni4Tni47ni5Lni6Lni6Dni6Hni7nni7flgI/njJfnjIrnjJznjJbnjJ3njLTnjK/njKnnjKXnjL7njY7njY/pu5jnjZfnjarnjajnjbDnjbjnjbXnjbvnjbrnj4jnjrPnj47njrvnj4Dnj6Xnj67nj57nkqLnkIXnka/nkKXnj7jnkLLnkLrnkZXnkL/nkZ/nkZnnkYHnkZznkannkbDnkaPnkarnkbbnkb7nkovnkp7nkqfnk4rnk4/nk5Tnj7EiXSxbImUxYTEiLCLnk6Dnk6Pnk6fnk6nnk67nk7Lnk7Dnk7Hnk7jnk7fnlITnlIPnlIXnlIznlI7nlI3nlJXnlJPnlJ7nlKbnlKznlLznlYTnlY3nlYrnlYnnlZvnlYbnlZrnlannlaTnlafnlavnla3nlbjnlbbnlobnlofnlbTnlornlonnloLnlpTnlprnlp3nlqXnlqPnl4LnlrPnl4PnlrXnlr3nlrjnlrznlrHnl43nl4rnl5Lnl5nnl6Pnl57nl77nl7/nl7znmIHnl7Dnl7rnl7Lnl7PnmIvnmI3nmInnmJ/nmKfnmKDnmKHnmKLnmKTnmLTnmLDnmLvnmYfnmYjnmYbnmZznmZjnmaHnmaLnmajnmannmarnmafnmaznmbAiXSxbImUyYTEiLCLnmbLnmbbnmbjnmbznmoDnmoPnmojnmovnmo7nmpbnmpPnmpnnmprnmrDnmrTnmrjnmrnnmrrnm4Lnm43nm5bnm5Lnm57nm6Hnm6Xnm6fnm6romK/nm7vnnIjnnIfnnITnnKnnnKTnnJ7nnKXnnKbnnJvnnLfnnLjnnYfnnZrnnajnnavnnZvnnaXnnb/nnb7nnbnnno7nnovnnpHnnqDnnp7nnrDnnrbnnrnnnr/nnrznnr3nnrvnn4fnn43nn5fnn5rnn5znn6Pnn67nn7znoIznoJLnpKbnoKDnpKrnoYXnoo7nobTnoobnobznoprnooznoqPnorXnoqrnoq/no5Hno4bno4vno5Tnor7norzno4Xno4rno6wiXSxbImUzYTEiLCLno6fno5rno73no7TnpIfnpJLnpJHnpJnnpKznpKvnpYDnpaDnpZfnpZ/npZrnpZXnpZPnpbrnpb/npornpp3npqfpvYvnpqrnpq7nprPnprnnprrnp4nnp5Xnp6fnp6znp6Hnp6PnqIjnqI3nqJjnqJnnqKDnqJ/npoDnqLHnqLvnqL7nqLfnqYPnqZfnqYnnqaHnqaLnqanpvp3nqbDnqbnnqb3nqojnqpfnqpXnqpjnqpbnqqnnq4jnqrDnqrbnq4Xnq4Tnqr/pgoPnq4fnq4rnq43nq4/nq5Xnq5Pnq5nnq5rnq53nq6Hnq6Lnq6bnq63nq7DnrILnrI/nrIrnrIbnrLPnrJjnrJnnrJ7nrLXnrKjnrLbnrZAiXSxbImU0YTEiLCLnrbrnrITnrY3nrIvnrYznrYXnrbXnraXnrbTnrafnrbDnrbHnraznra7nrp3nrpjnrp/nro3nrpznrprnrovnrpLnro/nrZ3nrpnnr4vnr4Hnr4znr4/nrrTnr4bnr53nr6nnsJHnsJTnr6bnr6XnsaDnsIDnsIfnsJPnr7Pnr7fnsJfnsI3nr7bnsKPnsKfnsKrnsJ/nsLfnsKvnsL3nsYznsYPnsZTnsY/nsYDnsZDnsZjnsZ/nsaTnsZbnsaXnsaznsbXnsoPnspDnsqTnsq3nsqLnsqvnsqHnsqjnsrPnsrLnsrHnsq7nsrnnsr3ns4Dns4Xns4Lns5jns5Lns5zns6LprLvns6/ns7Lns7Tns7bns7rntIYiXSxbImU1YTEiLCLntILntJzntJXntIrntYXntYvntK7ntLLntL/ntLXntYbntbPntZbntY7ntbLntajnta7ntY/ntaPntpPntonntZvnto/ntb3ntpvntrrntq7ntqPntrXnt4fntr3ntqvnuL3ntqLntq/nt5zntrjntp/ntrDnt5jnt53nt6Tnt57nt7vnt7Lnt6HnuIXnuIrnuKPnuKHnuJLnuLHnuJ/nuInnuIvnuKLnuYbnuabnuLvnuLXnuLnnuYPnuLfnuLLnuLrnuafnuZ3nuZbnuZ7nuZnnuZrnubnnuarnuannubznubvnuoPnt5Xnub3ovq7nub/nuojnuonnuoznupLnupDnupPnupTnupbnuo7nupvnupznvLjnvLoiXSxbImU2YTEiLCLnvYXnvYznvY3nvY7nvZDnvZHnvZXnvZTnvZjnvZ/nvaDnvajnvannvafnvbjnvoLnvobnvoPnvojnvofnvoznvpTnvp7nvp3nvprnvqPnvq/nvrLnvrnnvq7nvrbnvrjorbHnv4Xnv4bnv4rnv5Xnv5Tnv6Hnv6bnv6nnv7Pnv7npo5zogIbogITogIvogJLogJjogJnogJzogKHogKjogL/ogLvogYrogYbogZLogZjogZrogZ/ogaLogajogbPogbLogbDogbbogbnogb3ogb/ogoTogobogoXogpvogpPogprogq3lhpDogqzog5vog6Xog5nog53og4Tog5rog5bohInog6/og7HohJvohKnohKPohK/ohYsiXSxbImU3YTEiLCLpmovohYbohL7ohZPohZHog7zohbHoha7ohaXohabohbTohoPohojohorohoDohoLohqDohpXohqTohqPohZ/ohpPohqnohrDohrXohr7ohrjohr3oh4Doh4Lohrroh4noh43oh5Hoh5noh5joh4joh5roh5/oh6Doh6foh7roh7voh77oiIHoiILoiIXoiIfoiIroiI3oiJDoiJboiKnoiKvoiLjoiLPoiYDoiZnoiZjoiZ3oiZroiZ/oiaToiaLoiajoiaroiavoiK7oibHoibfoibjoib7oio3oipLoiqvoip/oirvoiqzoi6Hoi6Poi5/oi5Loi7Toi7Poi7rojpPojIPoi7voi7noi57ojIboi5zojInoi5kiXSxbImU4YTEiLCLojLXojLTojJbojLLojLHojYDojLnojZDojYXojK/ojKvojJfojJjojoXojprojqrojp/ojqLojpbojKPojo7ojofojorojbzojrXojbPojbXojqDojonojqjoj7TokJPoj6voj47oj73okIPoj5jokIvoj4Hoj7fokIfoj6Doj7LokI3okKLokKDojr3okLjolIboj7voka3okKrokLzolZrokoTokbfokavokq3oka7okoLokanokYbokKzoka/okbnokLXok4rokaLokrnokr/okp/ok5nok43okrvok5rok5Dok4Hok4bok5bokqHolKHok7/ok7TolJfolJjolKzolJ/olJXolJTok7zolYDolaPolZjolYgiXSxbImU5YTEiLCLolYHomILolYvolZXoloDolqTolojolpHolorolqjola3olpTolpvol6rolofolpzolbfolb7olpDol4nolrrol4/olrnol5Dol5Xol53ol6Xol5zol7nomIromJPomIvol77ol7romIbomKLomJromLDomL/omY3kuZXomZTomZ/omafombHompPomqPomqnomqromovomozomrbomq/om4Tom4bomrDom4nooKPomqvom5Tom57om6nom6zom5/om5vom6/onJLonIbonIjonIDonIPom7vonJHonInonI3om7nonIronLTonL/onLfonLvonKXonKnonJronaDonZ/onbjonYzonY7onbTonZfonajona7onZkiXSxbImVhYTEiLCLonZPonaPonarooIXonqLonp/onoLonq/on4vonr3on4Don5Dpm5bonqvon4TonrPon4fon4bonrvon6/on7Lon6DooI/ooI3on77on7bon7fooI7on5LooJHooJbooJXooKLooKHooLHooLbooLnooKfooLvooYTooYLooZLooZnooZ7ooaLooavoooHoob7oop7oobXoob3oorXoobLoooLoopfoopLooq7oopnooqLooo3ooqToorDoor/oorHoo4Poo4Too5Too5joo5noo53oo7nopILoo7zoo7Too6joo7LopITopIzopIropJPopYPopJ7opKXopKropKvopYHopYTopLvopLbopLjopYzopJ3opaDopZ4iXSxbImViYTEiLCLopabopaTopa3oparopa/opbTopbfopb7opoPopojoporoppPoppjopqHopqnopqbopqzopq/oprLoprropr3opr/op4Dop5rop5zop53op6fop7Top7joqIPoqJboqJDoqIzoqJvoqJ3oqKXoqLboqYHoqZvoqZLoqYboqYjoqbzoqa3oqazoqaLoqoXoqoLoqoToqqjoqqHoqpHoqqXoqqboqproqqPoq4Toq43oq4Loq5roq6voq7Poq6foq6Toq7HorJToq6Doq6Loq7foq57oq5vorIzorIforJroq6HorJborJDorJforKDorLPpnqvorKborKvorL7orKjorYHorYzorY/orY7orYnorZborZvorZrorasiXSxbImVjYTEiLCLorZ/orazora/orbTorb3oroDorozoro7orpLorpPorpborpnorprosLrosYHosL/osYjosYzosY7osZDosZXosaLosazosbjosbrosoLosonosoXosoroso3oso7ospTosbzospjmiJ3osq3osqrosr3osrLosrPosq7osrbos4jos4Hos6Tos6Pos5ros73os7ros7votITotIXotIrotIfotI/otI3otJDpvY7otJPos43otJTotJbotafota3otbHotbPotoHotpnot4Lotr7otrrot4/ot5rot5bot4zot5vot4vot6rot6vot5/ot6Pot7zouIjouInot7/ouJ3ouJ7ouJDouJ/ouYLouLXouLDouLTouYoiXSxbImVkYTEiLCLouYfouYnouYzouZDouYjouZnouaTouaDouKrouaPouZXoubboubLoubzouoHouofouoXouoTouovouoroupPoupHoupToupnouqrouqHouqzourDou4bourHour7ou4Xou4jou4vou5vou6Pou7zou7vou6vou77ovIrovIXovJXovJLovJnovJPovJzovJ/ovJvovIzovKbovLPovLvovLnovYXovYLovL7ovYzovYnovYbovY7ovZfovZzovaLovaPovaTovpzovp/ovqPovq3ovq/ovrfov5rov6Xov6Lov6rov6/pgofov7TpgIXov7nov7rpgJHpgJXpgKHpgI3pgJ7pgJbpgIvpgKfpgLbpgLXpgLnov7giXSxbImVlYTEiLCLpgY/pgZDpgZHpgZLpgI7pgYnpgL7pgZbpgZjpgZ7pgajpga/pgbbpmqjpgbLpgoLpgb3pgoHpgoDpgorpgonpgo/pgqjpgq/pgrHpgrXpg6Lpg6TmiYjpg5vphILphJLphJnphLLphLDphYrphZbphZjphaPphaXphanphbPphbLphovphonphoLphqLphqvphq/phqrphrXphrTphrrph4Dph4Hph4nph4vph5Dph5bph5/ph6Hph5vph7zph7Xph7bpiJ7ph7/piJTpiKzpiJXpiJHpiZ7piZfpiYXpiYnpiaTpiYjpipXpiL/piYvpiZDpipzpipbpipPpipvpiZrpi4/pirnpirfpi6npjI/pi7rpjYTpjK4iXSxbImVmYTEiLCLpjJnpjKLpjJrpjKPpjLrpjLXpjLvpjZzpjaDpjbzpja7pjZbpjrDpjqzpjq3pjpTpjrnpj5bpj5fpj6jpj6Xpj5jpj4Ppj53pj5Dpj4jpj6TpkJrpkJTpkJPpkIPpkIfpkJDpkLbpkKvpkLXpkKHpkLrpkYHpkZLpkYTpkZvpkaDpkaLpkZ7pkarpiKnpkbDpkbXpkbfpkb3pkZrpkbzpkb7pkoHpkb/ploLplofplorplpTplpbplpjplpnplqDplqjplqfplq3plrzplrvplrnplr7pl4rmv7bpl4Ppl43pl4zpl5Xpl5Tpl5bpl5zpl6Hpl6Xpl6LpmKHpmKjpmK7pmK/pmYLpmYzpmY/pmYvpmbfpmZzpmZ4iXSxbImYwYTEiLCLpmZ3pmZ/pmabpmbLpmazpmo3pmpjpmpXpmpfpmqrpmqfpmrHpmrLpmrDpmrTpmrbpmrjpmrnpm47pm4vpm4npm43opY3pm5zpnI3pm5Xpm7npnITpnIbpnIjpnJPpnI7pnJHpnI/pnJbpnJnpnKTpnKrpnLDpnLnpnL3pnL7pnYTpnYbpnYjpnYLpnYnpnZzpnaDpnaTpnabpnajli5LpnavpnbHpnbnpnoXpnbzpnoHpnbrpnobpnovpno/pnpDpnpzpnqjpnqbpnqPpnrPpnrTpn4Ppn4bpn4jpn4vpn5zpn63pvY/pn7Lnq5/pn7bpn7XpoI/poIzpoLjpoKTpoKHpoLfpoL3poYbpoY/poYvpoavpoa/pobAiXSxbImYxYTEiLCLpobHpobTpobPpoqrpoq/porHporbpo4Tpo4Ppo4bpo6npo6vppIPppInppJLppJTppJjppKHppJ3ppJ7ppKTppKDppKzppK7ppL3ppL7ppYLppYnppYXppZDppYvppZHppZLppYzppZXpppfpppjppqXppq3ppq7pprzpp5/pp5vpp53pp5jpp5Hpp63pp67pp7Hpp7Lpp7vpp7jpqIHpqI/pqIXpp6LpqJnpqKvpqLfpqYXpqYLpqYDpqYPpqL7pqZXpqY3pqZvpqZfpqZ/pqaLpqaXpqaTpqanpqavpqarpqq3pqrDpqrzpq4Dpq4/pq5Hpq5Ppq5Tpq57pq5/pq6Lpq6Ppq6bpq6/pq6vpq67pq7Tpq7Hpq7ciXSxbImYyYTEiLCLpq7vprIbprJjprJrprJ/prKLprKPprKXprKfprKjprKnprKrprK7prK/prLLprYTprYPprY/prY3prY7prZHprZjprbTprpPproPprpHprpbprpfprp/prqDprqjprrTpr4Dpr4rprrnpr4bpr4/pr5Hpr5Lpr6Ppr6Lpr6Tpr5Tpr6HpsLrpr7Lpr7Hpr7DpsJXpsJTpsInpsJPpsIzpsIbpsIjpsJLpsIrpsITpsK7psJvpsKXpsKTpsKHpsLDpsYfpsLLpsYbpsL7psZrpsaDpsafpsbbpsbjps6fps6zps7DptInptIjps6vptIPptIbptKrptKbptq/ptKPptJ/ptYTptJXptJLptYHptL/ptL7ptYbptYgiXSxbImYzYTEiLCLptZ3ptZ7ptaTptZHptZDptZnptbLptonptofptqvpta/ptbrptprptqTptqnptrLpt4Tpt4Hptrvptrjptrrpt4bpt4/pt4Lpt5npt5Ppt7jpt6bpt63pt6/pt73puJrpuJvpuJ7pubXpubnpub3puoHpuojpuovpuozpupLpupXpupHpup3puqXpuqnpurjpuqrpuq3pnaHpu4zpu47pu4/pu5Dpu5Tpu5zpu57pu53pu6Dpu6Xpu6jpu6/pu7Tpu7bpu7fpu7npu7vpu7zpu73pvIfpvIjnmrfpvJXpvKHpvKzpvL7pvYrpvZLpvZTpvaPpvZ/pvaDpvaHpvabpvafpvazpvarpvbfpvbLpvbbpvpXpvpzpvqAiXSxbImY0YTEiLCLloK/mp4fpgZnnkaTlh5znhpkiXSxbImY5YTEiLCLnuoropJzpjYjpiojok5zkv4nngrvmmLHmo4jpi7nmm7vlvYXkuKjku6Hku7zkvIDkvIPkvLnkvZbkvpLkvorkvprkvpTkv43lgYDlgKLkv7/lgJ7lgYblgbDlgYLlgpTlg7Tlg5jlhYrlhaTlhp3lhr7lh6zliJXlipzliqbli4Dli5vljIDljIfljKTljbLljpPljrLlj53vqI7lkpzlkorlkqnlk7/lloblnZnlnaXlnqzln4jln4fvqI/vqJDlop7lorLlpIvlpZPlpZvlpZ3lpaPlpqTlprrlrZblr4DnlK/lr5jlr6zlsJ7lsqblsrrls7XltKfltZPvqJHltYLlta3ltrjltrnlt5DlvKHlvLTlvaflvrciXSxbImZhYTEiLCLlv57mgZ3mgoXmgormg57mg5XmhKDmg7LmhJHmhLfmhLDmhpjmiJPmiqbmj7XmkaDmkp3mk47mlY7mmIDmmJXmmLvmmInmmK7mmJ7mmKTmmaXmmZfmmZnvqJLmmbPmmpnmmqDmmrLmmr/mm7rmnI7vpKnmnabmnrvmoZLmn4DmoIHmoYTmo4/vqJPmpajvqJTmppjmp6LmqLDmqavmqYbmqbPmqb7mq6Lmq6Tmr5bmsL/msZzmsobmsa/ms5rmtITmtofmta/mtpbmtqzmt4/mt7jmt7Lmt7zmuLnmuZzmuKfmuLzmur/mvojmvrXmv7XngIXngIfngKjngoXngqvnhI/nhITnhZznhYbnhYfvqJXnh4Hnh77nirEiXSxbImZiYTEiLCLnir7njKTvqJbnjbfnjr3nj4nnj5bnj6Pnj5LnkIfnj7XnkKbnkKrnkKnnkK7nkaLnkonnkp/nlIHnla/nmoLnmpznmp7nmpvnmqbvqJfnnYbliq/noKHnoY7noaTnobrnpLDvqJjvqJnvqJrnppTvqJvnppvnq5Hnq6fvqJznq6vnrp7vqJ3ntYjntZzntrfntqDnt5bnuZLnvYfnvqHvqJ7ojIHojaLojb/oj4foj7bokYjokrTolZPolZnolavvqJ/olrDvqKDvqKHooIfoo7XoqJLoqLfoqbnoqqfoqr7oq5/vqKLoq7borZPorb/os7Dos7TotJLotbbvqKPou4/vqKTvqKXpgafpg57vqKbphJXphKfph5oiXSxbImZjYTEiLCLph5fph57ph63ph67ph6Tph6XpiIbpiJDpiIrpiLrpiYDpiLzpiY7piZnpiZHpiLnpiafpiqfpibfpibjpi6fpi5fpi5npi5DvqKfpi5Xpi6Dpi5PpjKXpjKHpi7vvqKjpjJ7pi7/pjJ3pjILpjbDpjZfpjqTpj4bpj57pj7jpkLHpkYXpkYjplpLvp5zvqKnpmp3pmq/pnLPpnLvpnYPpnY3pnY/pnZHpnZXpoZfpoaXvqKrvqKvppKfvqKzppp7pqY7pq5npq5zprbXprbLpro/prrHprrvpsIDptbDptavvqK3puJnpu5EiXSxbImZjZjEiLCLihbAiLDksIu+/ou+/pO+8h++8giJdLFsiOGZhMmFmIiwiy5jLh8K4y5nLncKvy5vLmu+9ns6EzoUiXSxbIjhmYTJjMiIsIsKhwqbCvyJdLFsiOGZhMmViIiwiwrrCqsKpwq7ihKLCpOKEliJdLFsiOGZhNmUxIiwizobOiM6JzorOqiJdLFsiOGZhNmU3IiwizowiXSxbIjhmYTZlOSIsIs6OzqsiXSxbIjhmYTZlYyIsIs6PIl0sWyI4ZmE2ZjEiLCLOrM6tzq7Or8+KzpDPjM+Cz43Pi86wz44iXSxbIjhmYTdjMiIsItCCIiwxMCwi0I7QjyJdLFsiOGZhN2YyIiwi0ZIiLDEwLCLRntGfIl0sWyI4ZmE5YTEiLCLDhsSQIl0sWyI4ZmE5YTQiLCLEpiJdLFsiOGZhOWE2IiwixLIiXSxbIjhmYTlhOCIsIsWBxL8iXSxbIjhmYTlhYiIsIsWKw5jFkiJdLFsiOGZhOWFmIiwixabDniJdLFsiOGZhOWMxIiwiw6bEkcOwxKfEscSzxLjFgsWAxYnFi8O4xZPDn8Wnw74iXSxbIjhmYWFhMSIsIsOBw4DDhMOCxILHjcSAxITDhcODxIbEiMSMw4fEisSOw4nDiMOLw4rEmsSWxJLEmCJdLFsiOGZhYWJhIiwixJzEnsSixKDEpMONw4zDj8OOx4/EsMSqxK7EqMS0xLbEucS9xLvFg8WHxYXDkcOTw5LDlsOUx5HFkMWMw5XFlMWYxZbFmsWcxaDFnsWkxaLDmsOZw5zDm8Wsx5PFsMWqxbLFrsWox5fHm8eZx5XFtMOdxbjFtsW5xb3FuyJdLFsiOGZhYmExIiwiw6HDoMOkw6LEg8eOxIHEhcOlw6PEh8SJxI3Dp8SLxI/DqcOow6vDqsSbxJfEk8SZx7XEncSfIl0sWyI4ZmFiYmQiLCLEocSlw63DrMOvw67HkCJdLFsiOGZhYmM1IiwixKvEr8SpxLXEt8S6xL7EvMWExYjFhsOxw7PDssO2w7THksWRxY3DtcWVxZnFl8WbxZ3FocWfxaXFo8O6w7nDvMO7xa3HlMWxxavFs8WvxanHmMecx5rHlsW1w73Dv8W3xbrFvsW8Il0sWyI4ZmIwYTEiLCLkuILkuITkuIXkuIzkuJLkuJ/kuKPkuKTkuKjkuKvkuK7kuK/kuLDkuLXkuYDkuYHkuYTkuYfkuZHkuZrkuZzkuaPkuajkuankubTkubXkubnkub/kuo3kupbkupfkup3kuq/kurnku4Pku5Dku5rku5vku6Dku6Hku6Lku6jku6/ku7Hku7Pku7Xku73ku77ku7/kvIDkvILkvIPkvIjkvIvkvIzkvJLkvJXkvJbkvJfkvJnkvK7kvLHkvaDkvLPkvLXkvLfkvLnkvLvkvL7kvYDkvYLkvYjkvYnkvYvkvYzkvZLkvZTkvZbkvZjkvZ/kvaPkvarkvazkva7kvbHkvbfkvbjkvbnkvbrkvb3kvb7kvoHkvoLkvoQiXSxbIjhmYjFhMSIsIuS+heS+ieS+iuS+jOS+juS+kOS+kuS+k+S+lOS+l+S+meS+muS+nuS+n+S+suS+t+S+ueS+u+S+vOS+veS+vuS/gOS/geS/heS/huS/iOS/ieS/i+S/jOS/jeS/j+S/kuS/nOS/oOS/ouS/sOS/suS/vOS/veS/v+WAgOWAgeWAhOWAh+WAiuWAjOWAjuWAkOWAk+WAl+WAmOWAm+WAnOWAneWAnuWAouWAp+WAruWAsOWAsuWAs+WAteWBgOWBgeWBguWBheWBhuWBiuWBjOWBjuWBkeWBkuWBk+WBl+WBmeWBn+WBoOWBouWBo+WBpuWBp+WBquWBreWBsOWBseWAu+WCgeWCg+WChOWChuWCiuWCjuWCj+WCkCJdLFsiOGZiMmExIiwi5YKS5YKT5YKU5YKW5YKb5YKc5YKeIiw0LCLlgqrlgq/lgrDlgrnlgrrlgr3lg4Dlg4Plg4Tlg4flg4zlg47lg5Dlg5Plg5Tlg5jlg5zlg53lg5/lg6Llg6Tlg6blg6jlg6nlg6/lg7Hlg7blg7rlg77lhIPlhIblhIflhIjlhIvlhIzlhI3lhI7lg7LlhJDlhJflhJnlhJvlhJzlhJ3lhJ7lhKPlhKflhKjlhKzlhK3lhK/lhLHlhLPlhLTlhLXlhLjlhLnlhYLlhYrlhY/lhZPlhZXlhZflhZjlhZ/lhaTlhablhb7lhoPlhoTlhovlho7lhpjlhp3lhqHlhqPlhq3lhrjlhrrlhrzlhr7lhr/lh4IiXSxbIjhmYjNhMSIsIuWHiOWHj+WHkeWHkuWHk+WHleWHmOWHnuWHouWHpeWHruWHsuWHs+WHtOWHt+WIgeWIguWIheWIkuWIk+WIleWIluWImOWIouWIqOWIseWIsuWIteWIvOWJheWJieWJleWJl+WJmOWJmuWJnOWJn+WJoOWJoeWJpuWJruWJt+WJuOWJueWKgOWKguWKheWKiuWKjOWKk+WKleWKluWKl+WKmOWKmuWKnOWKpOWKpeWKpuWKp+WKr+WKsOWKtuWKt+WKuOWKuuWKu+WKveWLgOWLhOWLhuWLiOWLjOWLj+WLkeWLlOWLluWLm+WLnOWLoeWLpeWLqOWLqeWLquWLrOWLsOWLseWLtOWLtuWLt+WMgOWMg+WMiuWMiyJdLFsiOGZiNGExIiwi5YyM5YyR5YyT5YyY5Yyb5Yyc5Yye5Yyf5Yyl5Yyn5Yyo5Yyp5Yyr5Yys5Yyt5Yyw5Yyy5Yy15Yy85Yy95Yy+5Y2C5Y2M5Y2L5Y2Z5Y2b5Y2h5Y2j5Y2l5Y2s5Y2t5Y2y5Y255Y2+5Y6D5Y6H5Y6I5Y6O5Y6T5Y6U5Y6Z5Y6d5Y6h5Y6k5Y6q5Y6r5Y6v5Y6y5Y605Y615Y635Y645Y665Y695Y+A5Y+F5Y+P5Y+S5Y+T5Y+V5Y+a5Y+d5Y+e5Y+g5Y+m5Y+n5Y+15ZCC5ZCT5ZCa5ZCh5ZCn5ZCo5ZCq5ZCv5ZCx5ZC05ZC15ZGD5ZGE5ZGH5ZGN5ZGP5ZGe5ZGi5ZGk5ZGm5ZGn5ZGp5ZGr5ZGt5ZGu5ZG05ZG/Il0sWyI4ZmI1YTEiLCLlkoHlkoPlkoXlkojlkonlko3lkpHlkpXlkpblkpzlkp/lkqHlkqblkqflkqnlkqrlkq3lkq7lkrHlkrflkrnlkrrlkrvlkr/lk4blk4rlk43lk47lk6Dlk6rlk6zlk6/lk7blk7zlk77lk7/llIDllIHllIXllIjllInllIzllI3llI7llJXllKrllKvllLLllLXllLbllLvllLzllL3llYHllYfllYnllYrllY3llZDllZHllZjllZrllZvllZ7llaDllaHllaTllabllb/lloHlloLllobllojllo7llo/llpHllpLllpPllpTllpfllqPllqTllq3llrLllr/ll4Hll4Pll4bll4nll4vll4zll47ll5Hll5IiXSxbIjhmYjZhMSIsIuWXk+WXl+WXmOWXm+WXnuWXouWXqeWXtuWXv+WYheWYiOWYiuWYjSIsNSwi5ZiZ5Zis5Ziw5Ziz5Zi15Zi35Zi55Zi75Zi85Zi95Zi/5ZmA5ZmB5ZmD5ZmE5ZmG5ZmJ5ZmL5ZmN5ZmP5ZmU5Zme5Zmg5Zmh5Zmi5Zmj5Zmm5Zmp5Zmt5Zmv5Zmx5Zmy5Zm15ZqE5ZqF5ZqI5ZqL5ZqM5ZqV5ZqZ5Zqa5Zqd5Zqe5Zqf5Zqm5Zqn5Zqo5Zqp5Zqr5Zqs5Zqt5Zqx5Zqz5Zq35Zq+5ZuF5ZuJ5ZuK5ZuL5ZuP5ZuQ5ZuM5ZuN5ZuZ5Zuc5Zud5Zuf5Zuh5ZukIiw0LCLlm7Hlm6vlm60iXSxbIjhmYjdhMSIsIuWbtuWbt+WcgeWcguWch+WciuWcjOWckeWcleWcmuWcm+WcneWcoOWcouWco+WcpOWcpeWcqeWcquWcrOWcruWcr+Wcs+WctOWcveWcvuWcv+WdheWdhuWdjOWdjeWdkuWdouWdpeWdp+WdqOWdq+WdrSIsNCwi5Z2z5Z205Z215Z235Z255Z265Z275Z285Z2+5Z6B5Z6D5Z6M5Z6U5Z6X5Z6Z5Z6a5Z6c5Z6d5Z6e5Z6f5Z6h5Z6V5Z6n5Z6o5Z6p5Z6s5Z645Z695Z+H5Z+I5Z+M5Z+P5Z+V5Z+d5Z+e5Z+k5Z+m5Z+n5Z+p5Z+t5Z+w5Z+15Z+25Z+45Z+95Z++5Z+/5aCD5aCE5aCI5aCJ5Z+hIl0sWyI4ZmI4YTEiLCLloIzloI3loJvloJ7loJ/loKDloKbloKfloK3loLLloLnloL/loYnloYzloY3loY/loZDloZXloZ/loaHloaTloafloajlobjlobzlob/looDlooHloofloojloonloorloozloo3loo/lopDlopTlopblop3loqDloqHloqLloqbloqnlorHlorLlo4Tlorzlo4Llo4jlo43lo47lo5Dlo5Llo5Tlo5blo5rlo53lo6Hlo6Llo6nlo7PlpIXlpIblpIvlpIzlpJLlpJPlpJTomYHlpJ3lpKHlpKPlpKTlpKjlpK/lpLDlpLPlpLXlpLblpL/lpYPlpYblpZLlpZPlpZnlpZvlpZ3lpZ7lpZ/lpaHlpaPlpavlpa0iXSxbIjhmYjlhMSIsIuWlr+WlsuWlteWltuWlueWlu+WlvOWmi+WmjOWmjuWmkuWmleWml+Wmn+WmpOWmp+WmreWmruWmr+WmsOWms+Wmt+WmuuWmvOWngeWng+WnhOWniOWniuWnjeWnkuWnneWnnuWnn+Wno+WnpOWnp+WnruWnr+WnseWnsuWntOWnt+WogOWohOWojOWojeWojuWokuWok+WonuWoo+WopOWop+WoqOWoquWoreWosOWphOWpheWph+WpiOWpjOWpkOWpleWpnuWpo+WppeWpp+WpreWpt+WpuuWpu+WpvuWqi+WqkOWqk+WqluWqmeWqnOWqnuWqn+WqoOWqouWqp+WqrOWqseWqsuWqs+WqteWquOWquuWqu+WqvyJdLFsiOGZiYWExIiwi5auE5auG5auI5auP5aua5auc5aug5aul5auq5auu5au15au25au95ayA5ayB5ayI5ayX5ay05ayZ5ayb5ayd5ayh5ayl5ayt5ay45a2B5a2L5a2M5a2S5a2W5a2e5a2o5a2u5a2v5a285a295a2+5a2/5a6B5a6E5a6G5a6K5a6O5a6Q5a6R5a6T5a6U5a6W5a6o5a6p5a6s5a6t5a6v5a6x5a6y5a635a665a685a+A5a+B5a+N5a+P5a+WIiw0LCLlr6Dlr6/lr7Hlr7Tlr73lsIzlsJflsJ7lsJ/lsKPlsKblsKnlsKvlsKzlsK7lsLDlsLLlsLXlsLblsZnlsZrlsZzlsaLlsaPlsaflsajlsakiXSxbIjhmYmJhMSIsIuWxreWxsOWxtOWxteWxuuWxu+WxvOWxveWyh+WyiOWyiuWyj+WykuWyneWyn+WyoOWyouWyo+WypuWyquWysuWytOWyteWyuuWzieWzi+WzkuWzneWzl+WzruWzseWzsuWztOW0geW0huW0jeW0kuW0q+W0o+W0pOW0puW0p+W0seW0tOW0ueW0veW0v+W1guW1g+W1huW1iOW1leW1keW1meW1iuW1n+W1oOW1oeW1ouW1pOW1quW1reW1sOW1ueW1uuW1vuW1v+W2geW2g+W2iOW2iuW2kuW2k+W2lOW2leW2meW2m+W2n+W2oOW2p+W2q+W2sOW2tOW2uOW2ueW3g+W3h+W3i+W3kOW3juW3mOW3meW3oOW3pCJdLFsiOGZiY2ExIiwi5bep5be45be55biA5biH5biN5biS5biU5biV5biY5bif5big5biu5bio5biy5bi15bi+5bmL5bmQ5bmJ5bmR5bmW5bmY5bmb5bmc5bme5bmo5bmqIiw0LCLlubDluoDluovluo7luqLluqTluqXluqjluqrluqzlurHlurPlur3lur7lur/lu4blu4zlu4vlu47lu5Hlu5Llu5Tlu5Xlu5zlu57lu6Xlu6vlvILlvIblvIflvIjlvI7lvJnlvJzlvJ3lvKHlvKLlvKPlvKTlvKjlvKvlvKzlvK7lvLDlvLTlvLblvLvlvL3lvL/lvYDlvYTlvYXlvYflvY3lvZDlvZTlvZjlvZvlvaDlvaPlvaTlvaciXSxbIjhmYmRhMSIsIuW9r+W9suW9tOW9teW9uOW9uuW9veW9vuW+ieW+jeW+j+W+luW+nOW+neW+ouW+p+W+q+W+pOW+rOW+r+W+sOW+seW+uOW/hOW/h+W/iOW/ieW/i+W/kCIsNCwi5b+e5b+h5b+i5b+o5b+p5b+q5b+s5b+t5b+u5b+v5b+y5b+z5b+25b+65b+85oCH5oCK5oCN5oCT5oCU5oCX5oCY5oCa5oCf5oCk5oCt5oCz5oC15oGA5oGH5oGI5oGJ5oGM5oGR5oGU5oGW5oGX5oGd5oGh5oGn5oGx5oG+5oG/5oKC5oKG5oKI5oKK5oKO5oKR5oKT5oKV5oKY5oKd5oKe5oKi5oKk5oKl5oKo5oKw5oKx5oK3Il0sWyI4ZmJlYTEiLCLmgrvmgr7mg4Lmg4Tmg4jmg4nmg4rmg4vmg47mg4/mg5Tmg5Xmg5nmg5vmg53mg57mg6Lmg6Xmg7Lmg7Xmg7jmg7zmg73mhILmhIfmhIrmhIzmhJAiLDQsIuaEluaEl+aEmeaEnOaEnuaEouaEquaEq+aEsOaEseaEteaEtuaEt+aEueaFgeaFheaFhuaFieaFnuaFoOaFrOaFsuaFuOaFu+aFvOaFv+aGgOaGgeaGg+aGhOaGi+aGjeaGkuaGk+aGl+aGmOaGnOaGneaGn+aGoOaGpeaGqOaGquaGreaGuOaGueaGvOaHgOaHgeaHguaHjuaHj+aHleaHnOaHneaHnuaHn+aHoeaHouaHp+aHqeaHpSJdLFsiOGZiZmExIiwi5oes5oet5oev5oiB5oiD5oiE5oiH5oiT5oiV5oic5oig5oii5oij5oin5oip5oir5oi55oi95omC5omD5omE5omG5omM5omQ5omR5omS5omU5omW5oma5omc5omk5omt5omv5omz5om65om95oqN5oqO5oqP5oqQ5oqm5oqo5oqz5oq25oq35oq65oq+5oq/5ouE5ouO5ouV5ouW5oua5ouq5ouy5ou05ou85ou95oyD5oyE5oyK5oyL5oyN5oyQ5oyT5oyW5oyY5oyp5oyq5oyt5oy15oy25oy55oy85o2B5o2C5o2D5o2E5o2G5o2K5o2L5o2O5o2S5o2T5o2U5o2Y5o2b5o2l5o2m5o2s5o2t5o2x5o205o21Il0sWyI4ZmMwYTEiLCLmjbjmjbzmjb3mjb/mjoLmjoTmjofmjormjpDmjpTmjpXmjpnmjprmjp7mjqTmjqbmjq3mjq7mjq/mjr3mj4Hmj4Xmj4jmj47mj5Hmj5Pmj5Tmj5Xmj5zmj6Dmj6Xmj6rmj6zmj7Lmj7Pmj7Xmj7jmj7nmkInmkIrmkJDmkJLmkJTmkJjmkJ7mkKDmkKLmkKTmkKXmkKnmkKrmkK/mkLDmkLXmkL3mkL/mkYvmkY/mkZHmkZLmkZPmkZTmkZrmkZvmkZzmkZ3mkZ/mkaDmkaHmkaPmka3mkbPmkbTmkbvmkb3mkoXmkofmko/mkpDmkpHmkpjmkpnmkpvmkp3mkp/mkqHmkqPmkqbmkqjmkqzmkrPmkr3mkr7mkr8iXSxbIjhmYzFhMSIsIuaThOaTieaTiuaTi+aTjOaTjuaTkOaTkeaTleaTl+aTpOaTpeaTqeaTquaTreaTsOaTteaTt+aTu+aTv+aUgeaUhOaUiOaUieaUiuaUj+aUk+aUlOaUluaUmeaUm+aUnuaUn+aUouaUpuaUqeaUruaUseaUuuaUvOaUveaVg+aVh+aVieaVkOaVkuaVlOaVn+aVoOaVp+aVq+aVuuaVveaWgeaWheaWiuaWkuaWleaWmOaWneaWoOaWo+aWpuaWruaWsuaWs+aWtOaWv+aXguaXiOaXieaXjuaXkOaXlOaXluaXmOaXn+aXsOaXsuaXtOaXteaXueaXvuaXv+aYgOaYhOaYiOaYieaYjeaYkeaYkuaYleaYluaYnSJdLFsiOGZjMmExIiwi5pie5pih5pii5pij5pik5pim5pip5piq5pir5pis5piu5piw5pix5piz5pi55pi35pmA5pmF5pmG5pmK5pmM5pmR5pmO5pmX5pmY5pmZ5pmb5pmc5pmg5pmh5pu75pmq5pmr5pms5pm+5pmz5pm15pm/5pm35pm45pm55pm75pqA5pm85pqL5pqM5pqN5pqQ5pqS5pqZ5pqa5pqb5pqc5pqf5pqg5pqk5pqt5pqx5pqy5pq15pq75pq/5puA5puC5puD5puI5puM5puO5puP5puU5pub5puf5puo5pur5pus5puu5pu65pyF5pyH5pyO5pyT5pyZ5pyc5pyg5pyi5pyz5py+5p2F5p2H5p2I5p2M5p2U5p2V5p2dIl0sWyI4ZmMzYTEiLCLmnabmnazmna7mnbTmnbbmnbvmnoHmnoTmno7mno/mnpHmnpPmnpbmnpjmnpnmnpvmnrDmnrHmnrLmnrXmnrvmnrzmnr3mn7nmn4Dmn4Lmn4Pmn4Xmn4jmn4nmn5Lmn5fmn5nmn5zmn6Hmn6bmn7Dmn7Lmn7bmn7fmoZLmoJTmoJnmoJ3moJ/moKjmoKfmoKzmoK3moK/moLDmoLHmoLPmoLvmoL/moYTmoYXmoYrmoYzmoZXmoZfmoZjmoZvmoavmoa4iLDQsIuahteahueahuuahu+ahvOaiguaihOaihuaiiOailuaimOaimuainOaioeaio+aipeaiqeaiquairuaisuaiu+ajheajiOajjOajjyJdLFsiOGZjNGExIiwi5qOQ5qOR5qOT5qOW5qOZ5qOc5qOd5qOl5qOo5qOq5qOr5qOs5qOt5qOw5qOx5qO15qO25qO75qO85qO95qSG5qSJ5qSK5qSQ5qSR5qST5qSW5qSX5qSx5qSz5qS15qS45qS75qWC5qWF5qWJ5qWO5qWX5qWb5qWj5qWk5qWl5qWm5qWo5qWp5qWs5qWw5qWx5qWy5qW65qW75qW/5qaA5qaN5qaS5qaW5qaY5qah5qal5qam5qao5qar5qat5qav5qa35qa45qa65qa85qeF5qeI5qeR5qeW5qeX5qei5qel5qeu5qev5qex5qez5qe15qe+5qiA5qiB5qiD5qiP5qiR5qiV5qia5qid5qig5qik5qio5qiw5qiyIl0sWyI4ZmM1YTEiLCLmqLTmqLfmqLvmqL7mqL/mqYXmqYbmqYnmqYrmqY7mqZDmqZHmqZLmqZXmqZbmqZvmqaTmqafmqarmqbHmqbPmqb7mqoHmqoPmqobmqofmqonmqovmqpHmqpvmqp3mqp7mqp/mqqXmqqvmqq/mqrDmqrHmqrTmqr3mqr7mqr/mq4bmq4nmq4jmq4zmq5Dmq5Tmq5Xmq5bmq5zmq53mq6Tmq6fmq6zmq7Dmq7Hmq7Lmq7zmq73mrILmrIPmrIbmrIfmrInmrI/mrJDmrJHmrJfmrJvmrJ7mrKTmrKjmrKvmrKzmrK/mrLXmrLbmrLvmrL/mrYbmrYrmrY3mrZLmrZbmrZjmrZ3mraDmrafmravmra7mrbDmrbXmrb0iXSxbIjhmYzZhMSIsIuatvuauguauheaul+aum+aun+auoOauouauo+auqOauqeaurOaureauruausOauuOauueauveauvuavg+avhOavieavjOavluavmuavoeavo+avpuavp+avruavseavt+avueavv+awguawhOawheawieawjeawjuawkOawkuawmeawn+awpuawp+awqOawrOawruaws+awteawtuawuuawu+awv+axiuaxi+axjeaxj+axkuaxlOaxmeaxm+axnOaxq+axreaxr+axtOaxtuaxuOaxueaxu+ayheayhuayh+ayieaylOayleayl+aymOaynOayn+aysOaysuaytOazguazhuazjeazj+azkOazkeazkuazlOazliJdLFsiOGZjN2ExIiwi5rOa5rOc5rOg5rOn5rOp5rOr5rOs5rOu5rOy5rO05rSE5rSH5rSK5rSO5rSP5rSR5rST5rSa5rSm5rSn5rSo5rGn5rSu5rSv5rSx5rS55rS85rS/5rWX5rWe5rWf5rWh5rWl5rWn5rWv5rWw5rW85raC5raH5raR5raS5raU5raW5raX5raY5raq5ras5ra05ra35ra55ra95ra/5reE5reI5reK5reO5reP5reW5reb5red5ref5reg5rei5rel5rep5rev5rew5re05re25re85riA5riE5rie5rii5rin5riy5ri25ri55ri75ri85rmE5rmF5rmI5rmJ5rmL5rmP5rmR5rmS5rmT5rmU5rmX5rmc5rmd5rmeIl0sWyI4ZmM4YTEiLCLmuaLmuaPmuajmubPmubvmub3muo3mupPmupnmuqDmuqfmuq3muq7murHmurPmurvmur/mu4Dmu4Hmu4Pmu4fmu4jmu4rmu43mu47mu4/mu6vmu63mu67mu7nmu7vmu73mvITmvIjmvIrmvIzmvI3mvJbmvJjmvJrmvJvmvKbmvKnmvKrmvK/mvLDmvLPmvLbmvLvmvLzmvK3mvY/mvZHmvZLmvZPmvZfmvZnmvZrmvZ3mvZ7mvaHmvaLmvajmvazmvb3mvb7mvoPmvofmvojmvovmvozmvo3mvpDmvpLmvpPmvpTmvpbmvprmvp/mvqDmvqXmvqbmvqfmvqjmvq7mvq/mvrDmvrXmvrbmvrzmv4Xmv4fmv4jmv4oiXSxbIjhmYzlhMSIsIua/mua/nua/qOa/qea/sOa/tea/uea/vOa/veeAgOeAheeAhueAh+eAjeeAl+eAoOeAo+eAr+eAtOeAt+eAueeAvOeBg+eBhOeBiOeBieeBiueBi+eBlOeBleeBneeBnueBjueBpOeBpeeBrOeBrueBteeBtueBvueCgeeCheeChueClCIsNCwi54Kb54Kk54Kr54Kw54Kx54K054K354OK54OR54OT54OU54OV54OW54OY54Oc54Ok54O654SDIiw0LCLnhIvnhIznhI/nhJ7nhKDnhKvnhK3nhK/nhLDnhLHnhLjnhYHnhYXnhYbnhYfnhYrnhYvnhZDnhZLnhZfnhZrnhZznhZ7nhaAiXSxbIjhmY2FhMSIsIueFqOeFueeGgOeGheeGh+eGjOeGkueGmueGm+eGoOeGoueGr+eGsOeGsueGs+eGuueGv+eHgOeHgeeHhOeHi+eHjOeHk+eHlueHmeeHmueHnOeHuOeHvueIgOeIh+eIiOeIieeIk+eIl+eImueIneeIn+eIpOeIq+eIr+eItOeIuOeIueeJgeeJgueJg+eJheeJjueJj+eJkOeJk+eJleeJlueJmueJnOeJnueJoOeJo+eJqOeJq+eJrueJr+eJseeJt+eJuOeJu+eJvOeJv+eKhOeKieeKjeeKjueKk+eKm+eKqOeKreeKrueKseeKtOeKvueLgeeLh+eLieeLjOeLleeLlueLmOeLn+eLpeeLs+eLtOeLuueLuyJdLFsiOGZjYmExIiwi54u+54yC54yE54yF54yH54yL54yN54yS54yT54yY54yZ54ye54yi54yk54yn54yo54ys54yx54yy54y154y654y754y9542D542N542Q542S542W542Y542d542e542f542g542m542n542p542r542s542u542v542x542354255428546A546B546D546F546G546O546Q546T546V546X546Y546c546e546f546g546i546l546m546q546r546t54615463546554685469546/54+F54+G54+J54+L54+M54+P54+S54+T54+W54+Z54+d54+h54+j54+m54+n54+p54+054+154+354+554+654+754+9Il0sWyI4ZmNjYTEiLCLnj7/nkIDnkIHnkITnkIfnkIrnkJHnkJrnkJvnkKTnkKbnkKgiLDksIueQueeRgOeRg+eRhOeRhueRh+eRi+eRjeeRkeeRkueRl+eRneeRoueRpueRp+eRqOeRq+eRreeRrueRseeRsueSgOeSgeeSheeShueSh+eSieeSj+eSkOeSkeeSkueSmOeSmeeSmueSnOeSn+eSoOeSoeeSo+eSpueSqOeSqeeSqueSq+eSrueSr+eSseeSsueSteeSueeSu+eSv+eTiOeTieeTjOeTkOeTk+eTmOeTmueTm+eTnueTn+eTpOeTqOeTqueTq+eTr+eTtOeTuueTu+eTvOeTv+eUhiJdLFsiOGZjZGExIiwi55SS55SW55SX55Sg55Sh55Sk55Sn55Sp55Sq55Sv55S255S555S955S+55S/55WA55WD55WH55WI55WO55WQ55WS55WX55We55Wf55Wh55Wv55Wx55W5Iiw1LCLnloHnloXnlpDnlpLnlpPnlpXnlpnnlpznlqLnlqTnlrTnlrrnlr/nl4Dnl4Hnl4Tnl4bnl4znl47nl4/nl5fnl5znl5/nl6Dnl6Hnl6Tnl6fnl6znl67nl6/nl7Hnl7nnmIDnmILnmIPnmITnmIfnmIjnmIrnmIznmI/nmJLnmJPnmJXnmJbnmJnnmJvnmJznmJ3nmJ7nmKPnmKXnmKbnmKnnmK3nmLLnmLPnmLXnmLjnmLkiXSxbIjhmY2VhMSIsIueYuueYvOeZiueZgOeZgeeZg+eZhOeZheeZieeZi+eZleeZmeeZn+eZpOeZpeeZreeZrueZr+eZseeZtOeageeaheeajOeajeealeeam+eanOeaneean+eaoOeaoiIsNiwi55qq55qt55q955uB55uF55uJ55uL55uM55uO55uU55uZ55ug55um55uo55us55uw55ux55u255u555u855yA55yG55yK55yO55yS55yU55yV55yX55yZ55ya55yc55yi55yo55yt55yu55yv55y055y155y255y555y955y+552C552F552G552K552N552O552P552S552W552X552c552e552f552g552iIl0sWyI4ZmNmYTEiLCLnnaTnnafnnarnnaznnbDnnbLnnbPnnbTnnbrnnb3nnoDnnoTnnoznno3nnpTnnpXnnpbnnprnnp/nnqLnnqfnnqrnnq7nnq/nnrHnnrXnnr7nn4Pnn4nnn5Hnn5Lnn5Xnn5nnn57nn5/nn6Dnn6Tnn6bnn6rnn6znn7Dnn7Hnn7Tnn7jnn7vnoIXnoIbnoInnoI3noI7noJHnoJ3noKHnoKLnoKPnoK3noK7noLDnoLXnoLfnoYPnoYTnoYfnoYjnoYznoY7noZLnoZznoZ7noaDnoaHnoaPnoaTnoajnoarnoa7nobrnob7noornoo/nopTnopjnoqHnop3nop7nop/noqTnoqjnoqznoq3norDnorHnorLnorMiXSxbIjhmZDBhMSIsIueiu+eiveeiv+ejh+ejiOejieejjOejjuejkuejk+ejleejluejpOejm+ejn+ejoOejoeejpuejquejsuejs+ekgOejtuejt+ejuueju+ejv+ekhuekjOekkOekmueknOeknuekn+ekoOekpeekp+ekqeekreekseektOekteeku+ekveekv+elhOelheelhueliueli+elj+elkeellOelmOelm+elnOelp+elqeelq+elsuelueelu+elvOelvuemi+emjOemkeemk+emlOemleemluemmOemm+emnOemoeemqOemqeemq+emr+emseemtOemuOemu+enguenhOenh+eniOeniuenj+enlOenluenmuenneenniJdLFsiOGZkMWExIiwi56eg56ei56el56eq56er56et56ex56e456e856iC56iD56iH56iJ56iK56iM56iR56iV56ib56ie56ih56in56ir56it56iv56iw56i056i156i456i556i656mE56mF56mH56mI56mM56mV56mW56mZ56mc56md56mf56mg56ml56mn56mq56mt56m156m456m+56qA56qC56qF56qG56qK56qL56qQ56qR56qU56qe56qg56qj56qs56qz56q156q556q756q856uG56uJ56uM56uO56uR56ub56uo56up56ur56us56ux56u056u756u956u+56yH56yU56yf56yj56yn56yp56yq56yr56yt56yu56yv56ywIl0sWyI4ZmQyYTEiLCLnrLHnrLTnrL3nrL/nrYDnrYHnrYfnrY7nrZXnraDnraTnrabnrannrarnra3nra/nrbLnrbPnrbfnroTnronnro7nrpDnrpHnrpbnrpvnrp7nrqDnrqXnrqznrq/nrrDnrrLnrrXnrrbnrrrnrrvnrrznrr3nr4Lnr4Xnr4jnr4rnr5Tnr5bnr5fnr5nnr5rnr5vnr6jnr6rnr7Lnr7Tnr7Xnr7jnr7nnr7rnr7znr77nsIHnsILnsIPnsITnsIbnsInnsIvnsIznsI7nsI/nsJnnsJvnsKDnsKXnsKbnsKjnsKznsLHnsLPnsLTnsLbnsLnnsLrnsYbnsYrnsZXnsZHnsZLnsZPnsZkiLDVdLFsiOGZkM2ExIiwi57Gh57Gj57Gn57Gp57Gt57Gu57Gw57Gy57G557G857G957KG57KH57KP57KU57Ke57Kg57Km57Kw57K257K357K657K757K857K/57OE57OH57OI57OJ57ON57OP57OT57OU57OV57OX57OZ57Oa57Od57Om57Op57Or57O157SD57SH57SI57SJ57SP57SR57SS57ST57SW57Sd57Se57Sj57Sm57Sq57St57Sx57S857S957S+57WA57WB57WH57WI57WN57WR57WT57WX57WZ57Wa57Wc57Wd57Wl57Wn57Wq57Ww57W457W657W757W/57aB57aC57aD57aF57aG57aI57aL57aM57aN57aR57aW57aX57adIl0sWyI4ZmQ0YTEiLCLntp7ntqbntqfntqrntrPntrbntrfntrnnt4IiLDQsIue3jOe3jee3jue3l+e3mee4gOe3oue3pee3pue3que3q+e3ree3see3tee3tue3uee3uue4iOe4kOe4kee4lee4l+e4nOe4nee4oOe4p+e4qOe4rOe4ree4r+e4s+e4tue4v+e5hOe5hee5h+e5jue5kOe5kue5mOe5n+e5oee5oue5pee5q+e5rue5r+e5s+e5uOe5vue6gee6hue6h+e6iue6jee6kee6lee6mOe6mue6nee6nue8vOe8u+e8vee8vue8v+e9g+e9hOe9h+e9j+e9kue9k+e9m+e9nOe9nee9oee9o+e9pOe9pee9pue9rSJdLFsiOGZkNWExIiwi572x5729572+572/576A576L576N576P576Q576R576W576X576c576h576i576m576q576t57605768576/57+A57+D57+I57+O57+P57+b57+f57+j57+l57+o57+s57+u57+v57+y57+657+957++57+/6ICH6ICI6ICK6ICN6ICO6ICP6ICR6ICT6ICU6ICW6ICd6ICe6ICf6ICg6ICk6ICm6ICs6ICu6ICw6IC06IC16IC36IC56IC66IC86IC+6IGA6IGE6IGg6IGk6IGm6IGt6IGx6IG16IKB6IKI6IKO6IKc6IKe6IKm6IKn6IKr6IK46IK56IOI6ION6IOP6IOS6IOU6IOV6IOX6IOY6IOg6IOt6IOuIl0sWyI4ZmQ2YTEiLCLog7Dog7Log7Pog7bog7nog7rog77ohIPohIvohJbohJfohJjohJzohJ7ohKDohKTohKfohKzohLDohLXohLrohLzohYXohYfohYrohYzohZLohZfohaDohaHohafohajohanoha3oha/ohbfohoHohpDohoTohoXohobohovoho7ohpbohpjohpvohp7ohqLohq7ohrLohrTohrvoh4voh4Poh4Xoh4roh47oh4/oh5Xoh5foh5voh53oh57oh6Hoh6Toh6voh6zoh7Doh7Hoh7Loh7Xoh7boh7joh7noh73oh7/oiIDoiIPoiI/oiJPoiJToiJnoiJroiJ3oiKHoiKLoiKjoiLLoiLToiLroiYPoiYToiYXoiYYiXSxbIjhmZDdhMSIsIuiJi+iJjuiJj+iJkeiJluiJnOiJoOiJo+iJp+iJreiJtOiJu+iJveiJv+iKgOiKgeiKg+iKhOiKh+iKieiKiuiKjuiKkeiKlOiKluiKmOiKmuiKm+iKoOiKoeiKo+iKpOiKp+iKqOiKqeiKquiKruiKsOiKsuiKtOiKt+iKuuiKvOiKvuiKv+iLhuiLkOiLleiLmuiLoOiLouiLpOiLqOiLquiLreiLr+iLtuiLt+iLveiLvuiMgOiMgeiMh+iMiOiMiuiMi+iNlOiMm+iMneiMnuiMn+iMoeiMouiMrOiMreiMruiMsOiMs+iMt+iMuuiMvOiMveiNguiNg+iNhOiNh+iNjeiNjuiNkeiNleiNluiNl+iNsOiNuCJdLFsiOGZkOGExIiwi6I296I2/6I6A6I6C6I6E6I6G6I6N6I6S6I6U6I6V6I6Y6I6Z6I6b6I6c6I6d6I6m6I6n6I6p6I6s6I6+6I6/6I+A6I+H6I+J6I+P6I+Q6I+R6I+U6I+d6I2T6I+o6I+q6I+26I+46I+56I+86JCB6JCG6JCK6JCP6JCR6JCV6JCZ6I6t6JCv6JC56JGF6JGH6JGI6JGK6JGN6JGP6JGR6JGS6JGW6JGY6JGZ6JGa6JGc6JGg6JGk6JGl6JGn6JGq6JGw6JGz6JG06JG26JG46JG86JG96JKB6JKF6JKS6JKT6JKV6JKe6JKm6JKo6JKp6JKq6JKv6JKx6JK06JK66JK96JK+6JOA6JOC6JOH6JOI6JOM6JOP6JOTIl0sWyI4ZmQ5YTEiLCLok5zok6fok6rok6/ok7Dok7Hok7Lok7folLLok7rok7vok73olILolIPolIfolIzolI7olJDolJzolJ7olKLolKPolKTolKXolKfolKrolKvolK/olLPolLTolLbolL/olYbolY8iLDQsIuiVluiVmeiVnCIsNiwi6JWk6JWr6JWv6JW56JW66JW76JW96JW/6JaB6JaF6JaG6JaJ6JaL6JaM6JaP6JaT6JaY6Jad6Jaf6Jag6Jai6Jal6Jan6Ja06Ja26Ja36Ja46Ja86Ja96Ja+6Ja/6JeC6JeH6JeK6JeL6JeO6Jat6JeY6Jea6Jef6Jeg6Jem6Jeo6Jet6Jez6Je26Je8Il0sWyI4ZmRhYTEiLCLol7/omIDomITomIXomI3omI7omJDomJHomJLomJjomJnomJvomJ7omKHomKfomKnomLbomLjomLromLzomL3omYDomYLomYbomZLomZPomZbomZfomZjomZnomZ3omaAiLDQsIuiZqeiZrOiZr+iZteiZtuiZt+iZuuiajeiakeialuiamOiamuianOiaoeiapuiap+iaqOiareiaseias+iatOiateiat+iauOiaueiav+ibgOibgeibg+ibheibkeibkuibleibl+ibmuibnOiboOibo+ibpeibp+iaiOibuuibvOibveichOicheich+ici+icjuicj+ickOick+iclOicmeicnuicn+icoeicoyJdLFsiOGZkYmExIiwi6Jyo6Jyu6Jyv6Jyx6Jyy6Jy56Jy66Jy86Jy96Jy+6J2A6J2D6J2F6J2N6J2Y6J2d6J2h6J2k6J2l6J2v6J2x6J2y6J276J6DIiw2LCLonovonozonpDonpPonpXonpfonpjonpnonp7onqDonqPonqfonqzonq3onq7onrHonrXonr7onr/on4Hon4jon4non4ron47on5Xon5bon5non5ron5zon5/on6Lon6Pon6Ton6ron6von63on7Hon7Pon7jon7ron7/ooIHooIPooIbooInooIrooIvooJDooJnooJLooJPooJTooJjooJrooJvooJzooJ7ooJ/ooKjooK3ooK7ooLDooLLooLUiXSxbIjhmZGNhMSIsIuiguuigvOihgeihg+ihheihiOihieihiuihi+ihjuihkeihleihluihmOihmuihnOihn+ihoOihpOihqeihseihueihu+iigOiimOiimuiim+iinOiin+iioOiiqOiiquiiuuiiveiivuijgOijiiIsNCwi6KOR6KOS6KOT6KOb6KOe6KOn6KOv6KOw6KOx6KO16KO36KSB6KSG6KSN6KSO6KSP6KSV6KSW6KSY6KSZ6KSa6KSc6KSg6KSm6KSn6KSo6KSw6KSx6KSy6KS16KS56KS66KS+6KWA6KWC6KWF6KWG6KWJ6KWP6KWS6KWX6KWa6KWb6KWc6KWh6KWi6KWj6KWr6KWu6KWw6KWz6KW16KW6Il0sWyI4ZmRkYTEiLCLopbvopbzopb3oponopo3oppDoppToppXoppvoppzopp/opqDopqXoprDoprToprXoprboprfoprzop5QiLDQsIuinpeinqeinq+inreinseins+intuinueinveinv+iohOioheioh+ioj+iokeiokuiolOioleionuiooOioouiopOiopuioq+iorOior+ioteiot+ioveiovuipgOipg+ipheiph+ipieipjeipjuipk+ipluipl+ipmOipnOipneipoeippeipp+ipteiptuipt+ipueipuuipu+ipvuipv+iqgOiqg+iqhuiqi+iqj+iqkOiqkuiqluiql+iqmeiqn+iqp+iqqeiqruiqr+iqsyJdLFsiOGZkZWExIiwi6Kq26Kq36Kq76Kq+6KuD6KuG6KuI6KuJ6KuK6KuR6KuT6KuU6KuV6KuX6Kud6Kuf6Kus6Kuw6Ku06Ku16Ku26Ku86Ku/6KyF6KyG6KyL6KyR6Kyc6Kye6Kyf6KyK6Kyt6Kyw6Ky36Ky86K2CIiw0LCLorYjorZLorZPorZTorZnorY3orZ7oraPora3orbborbjorbnorbzorb7oroHoroToroXorovoro3oro/orpTorpXorpzorp7orp/osLjosLnosL3osL7osYXosYfosYnosYvosY/osZHosZPosZTosZfosZjosZvosZ3osZnosaPosaTosabosajosanosa3osbPosbXosbbosbvosb7osoYiXSxbIjhmZGZhMSIsIuiyh+iyi+iykOiykuiyk+iymeiym+iynOiypOiyueiyuuizheizhuizieizi+izj+izluizleizmeizneizoeizqOizrOizr+izsOizsuizteizt+izuOizvuizv+i0gei0g+i0iei0kui0l+i0m+i1pei1qei1rOi1rui1v+i2gui2hOi2iOi2jei2kOi2kei2lei2nui2n+i2oOi2pui2q+i2rOi2r+i2sui2tei2t+i2uei2u+i3gOi3hei3hui3h+i3iOi3iui3jui3kei3lOi3lei3l+i3mei3pOi3pei3p+i3rOi3sOi2vOi3sei3sui3tOi3vei4gei4hOi4hei4hui4i+i4kei4lOi4lui4oOi4oei4oiJdLFsiOGZlMGExIiwi6Lij6Lim6Lin6Lix6Liz6Li26Li36Li46Li56Li96LmA6LmB6LmL6LmN6LmO6LmP6LmU6Lmb6Lmc6Lmd6Lme6Lmh6Lmi6Lmp6Lms6Lmt6Lmv6Lmw6Lmx6Lm56Lm66Lm76LqC6LqD6LqJ6LqQ6LqS6LqV6Lqa6Lqb6Lqd6Lqe6Lqi6Lqn6Lqp6Lqt6Lqu6Lqz6Lq16Lq66Lq76LuA6LuB6LuD6LuE6LuH6LuP6LuR6LuU6Luc6Luo6Luu6Luw6Lux6Lu36Lu56Lu66Lut6LyA6LyC6LyH6LyI6LyP6LyQ6LyW6LyX6LyY6Lye6Lyg6Lyh6Lyj6Lyl6Lyn6Lyo6Lys6Lyt6Lyu6Ly06Ly16Ly26Ly36Ly66L2A6L2BIl0sWyI4ZmUxYTEiLCLovYPovYfovY/ovZEiLDQsIui9mOi9nei9nui9pei+nei+oOi+oei+pOi+pei+pui+tei+tui+uOi+vui/gOi/gei/hui/iui/i+i/jei/kOi/kui/k+i/lei/oOi/o+i/pOi/qOi/rui/sei/tei/tui/u+i/vumAgumAhOmAiOmAjOmAmOmAm+mAqOmAqemAr+mAqumArOmAremAs+mAtOmAt+mAv+mBg+mBhOmBjOmBm+mBnemBoumBpumBp+mBrOmBsOmBtOmBuemChemCiOmCi+mCjOmCjumCkOmClemCl+mCmOmCmemCm+mCoOmCoemCoumCpemCsOmCsumCs+mCtOmCtumCvemDjOmCvumDgyJdLFsiOGZlMmExIiwi6YOE6YOF6YOH6YOI6YOV6YOX6YOY6YOZ6YOc6YOd6YOf6YOl6YOS6YO26YOr6YOv6YOw6YO06YO+6YO/6YSA6YSE6YSF6YSG6YSI6YSN6YSQ6YSU6YSW6YSX6YSY6YSa6YSc6YSe6YSg6YSl6YSi6YSj6YSn6YSp6YSu6YSv6YSx6YS06YS26YS36YS56YS66YS86YS96YWD6YWH6YWI6YWP6YWT6YWX6YWZ6YWa6YWb6YWh6YWk6YWn6YWt6YW06YW56YW66YW76YaB6YaD6YaF6YaG6YaK6YaO6YaR6YaT6YaU6YaV6YaY6Yae6Yah6Yam6Yao6Yas6Yat6Yau6Yaw6Yax6Yay6Yaz6Ya26Ya76Ya86Ya96Ya/Il0sWyI4ZmUzYTEiLCLph4Lph4Pph4Xph5Pph5Tph5fph5nph5rph57ph6Tph6Xph6nph6rph6wiLDUsIumHt+mHuemHu+mHvemIgOmIgemIhOmIhemIhumIh+mIiemIiumIjOmIkOmIkumIk+mIlumImOmInOmInemIo+mIpOmIpemIpumIqOmIrumIr+mIsOmIs+mItemItumIuOmIuemIuumIvOmIvumJgOmJgumJg+mJhumJh+mJiumJjemJjumJj+mJkemJmOmJmemJnOmJnemJoOmJoemJpemJp+mJqOmJqemJrumJr+mJsOmJtSIsNCwi6Ym76Ym86Ym96Ym/6YqI6YqJ6YqK6YqN6YqO6YqS6YqXIl0sWyI4ZmU0YTEiLCLpipnpip/piqDpiqTpiqXpiqfpiqjpiqvpiq/pirLpirbpirjpirrpirvpirzpir3pir8iLDQsIumLhemLhumLh+mLiOmLi+mLjOmLjemLjumLkOmLk+mLlemLl+mLmOmLmemLnOmLnemLn+mLoOmLoemLo+mLpemLp+mLqOmLrOmLrumLsOmLuemLu+mLv+mMgOmMgumMiOmMjemMkemMlOmMlemMnOmMnemMnumMn+mMoemMpOmMpemMp+mMqemMqumMs+mMtOmMtumMt+mNh+mNiOmNiemNkOmNkemNkumNlemNl+mNmOmNmumNnumNpOmNpemNp+mNqemNqumNremNr+mNsOmNsemNs+mNtOmNtiJdLFsiOGZlNWExIiwi6Y266Y296Y2/6Y6A6Y6B6Y6C6Y6I6Y6K6Y6L6Y6N6Y6P6Y6S6Y6V6Y6Y6Y6b6Y6e6Y6h6Y6j6Y6k6Y6m6Y6o6Y6r6Y606Y616Y626Y666Y6p6Y+B6Y+E6Y+F6Y+G6Y+H6Y+JIiw0LCLpj5Ppj5npj5zpj57pj5/pj6Lpj6bpj6fpj7npj7fpj7jpj7rpj7vpj73pkIHpkILpkITpkIjpkInpkI3pkI7pkI/pkJXpkJbpkJfpkJ/pkK7pkK/pkLHpkLLpkLPpkLTpkLvpkL/pkL3pkYPpkYXpkYjpkYrpkYzpkZXpkZnpkZzpkZ/pkaHpkaPpkajpkavpka3pka7pka/pkbHpkbLpkoTpkoPplbjplbkiXSxbIjhmZTZhMSIsIumVvumWhOmWiOmWjOmWjemWjumWnemWnumWn+mWoemWpumWqemWq+mWrOmWtOmWtumWuumWvemWv+mXhumXiOmXiemXi+mXkOmXkemXkumXk+mXmemXmumXnemXnumXn+mXoOmXpOmXpumYnemYnumYoumYpOmYpemYpumYrOmYsemYs+mYt+mYuOmYuemYuumYvOmYvemZgemZkumZlOmZlumZl+mZmOmZoemZrumZtOmZu+mZvOmZvumZv+magemagumag+mahOmaiemakemalumamumaneman+mapOmapemapumaqemarumar+mas+mauumbiumbkuW2sumbmOmbmumbnembnumbn+mbqembr+mbsembuumcgiJdLFsiOGZlN2ExIiwi6ZyD6ZyF6ZyJ6Zya6Zyb6Zyd6Zyh6Zyi6Zyj6Zyo6Zyx6Zyz6Z2B6Z2D6Z2K6Z2O6Z2P6Z2V6Z2X6Z2Y6Z2a6Z2b6Z2j6Z2n6Z2q6Z2u6Z2z6Z226Z236Z246Z276Z296Z2/6Z6A6Z6J6Z6V6Z6W6Z6X6Z6Z6Z6a6Z6e6Z6f6Z6i6Z6s6Z6u6Z6x6Z6y6Z616Z626Z646Z656Z666Z686Z6+6Z6/6Z+B6Z+E6Z+F6Z+H6Z+J6Z+K6Z+M6Z+N6Z+O6Z+Q6Z+R6Z+U6Z+X6Z+Y6Z+Z6Z+d6Z+e6Z+g6Z+b6Z+h6Z+k6Z+v6Z+x6Z+06Z+36Z+46Z+66aCH6aCK6aCZ6aCN6aCO6aCU6aCW6aCc6aCe6aCg6aCj6aCmIl0sWyI4ZmU4YTEiLCLpoKvpoK7poK/poLDpoLLpoLPpoLXpoKXpoL7poYTpoYfpoYrpoZHpoZLpoZPpoZbpoZfpoZnpoZrpoaLpoaPpoaXpoabpoarpoazpoqvpoq3poq7porDporTporfporjporrporvpor/po4Lpo4Xpo4jpo4zpo6Hpo6Ppo6Xpo6bpo6fpo6rpo7Ppo7bppILppIfppIjppJHppJXppJbppJfppJrppJvppJzppJ/ppKLppKbppKfppKvppLEiLDQsIumkuemkuumku+mkvOmlgOmlgemlhumlh+mliOmljemljumllOmlmOmlmemlm+mlnOmlnumln+mloOmmm+mmnemmn+mmpummsOmmsemmsummtSJdLFsiOGZlOWExIiwi6aa56aa66aa96aa/6aeD6aeJ6aeT6aeU6aeZ6aea6aec6aee6aen6aeq6aer6aes6aew6ae06ae16ae56ae96ae+6aiC6aiD6aiE6aiL6aiM6aiQ6aiR6aiW6aie6aig6aii6aij6aik6ain6ait6aiu6aiz6ai16ai26ai46amH6amB6amE6amK6amL6amM6amO6amR6amU6amW6amd6aqq6aqs6aqu6aqv6aqy6aq06aq16aq26aq56aq76aq+6aq/6auB6auD6auG6auI6auO6auQ6auS6auV6auW6auX6aub6auc6aug6auk6aul6aun6aup6aus6auy6auz6au16au56au66au96au/Iiw0XSxbIjhmZWFhMSIsIumshOmshemsiOmsiemsi+msjOmsjemsjumskOmskumslumsmemsm+msnOmsoOmspumsq+msremss+mstOmstemst+msuemsuumsvemtiOmti+mtjOmtlemtlumtl+mtm+mtnumtoemto+mtpemtpumtqOmtqiIsNCwi6a2z6a216a236a246a256a2/6a6A6a6E6a6F6a6G6a6H6a6J6a6K6a6L6a6N6a6P6a6Q6a6U6a6a6a6d6a6e6a6m6a6n6a6p6a6s6a6w6a6x6a6y6a636a646a676a686a6+6a6/6a+B6a+H6a+I6a+O6a+Q6a+X6a+Y6a+d6a+f6a+l6a+n6a+q6a+r6a+v6a+z6a+36a+4Il0sWyI4ZmViYTEiLCLpr7npr7rpr73pr7/psIDpsILpsIvpsI/psJHpsJbpsJjpsJnpsJrpsJzpsJ7psKLpsKPpsKYiLDQsIumwsemwtemwtumwt+mwvemxgemxg+mxhOmxhemxiemxiumxjumxj+mxkOmxk+mxlOmxlumxmOmxm+mxnemxnumxn+mxo+mxqemxqumxnOmxq+mxqOmxrumxsOmxsumxtemxt+mxu+mzpumzsumzt+mzuem0i+m0gum0kem0l+m0mOm0nOm0nem0num0r+m0sOm0sum0s+m0tOm0uum0vOm1hem0vem1gum1g+m1h+m1ium1k+m1lOm1n+m1o+m1oum1pem1qem1qum1q+m1sOm1tum1t+m1uyJdLFsiOGZlY2ExIiwi6bW86bW+6baD6baE6baG6baK6baN6baO6baS6baT6baV6baW6baX6baY6bah6baq6bas6bau6bax6ba16ba56ba86ba/6beD6beH6beJ6beK6beU6beV6beW6beX6bea6bee6bef6beg6bel6ben6bep6ber6beu6bew6bez6be06be+6biK6biC6biH6biO6biQ6biR6biS6biV6biW6biZ6bic6bid6bm66bm76bm86bqA6bqC6bqD6bqE6bqF6bqH6bqO6bqP6bqW6bqY6bqb6bqe6bqk6bqo6bqs6bqu6bqv6bqw6bqz6bq06bq16buG6buI6buL6buV6buf6buk6bun6bus6but6buu6buw6bux6buy6bu1Il0sWyI4ZmVkYTEiLCLpu7jpu7/pvILpvIPpvInpvI/pvJDpvJHpvJLpvJTpvJbpvJfpvJnpvJrpvJvpvJ/pvKLpvKbpvKrpvKvpvK/pvLHpvLLpvLTpvLfpvLnpvLrpvLzpvL3pvL/pvYHpvYMiLDQsIum9k+m9lem9lum9l+m9mOm9mum9nem9num9qOm9qem9rSIsNCwi6b2z6b216b266b296b6P6b6Q6b6R6b6S6b6U6b6W6b6X6b6e6b6h6b6i6b6j6b6lIl1dCgovKioqLyB9KSwKLyogMTgyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0geyJ1Q2hhcnMiOlsxMjgsMTY1LDE2OSwxNzgsMTg0LDIxNiwyMjYsMjM1LDIzOCwyNDQsMjQ4LDI1MSwyNTMsMjU4LDI3NiwyODQsMzAwLDMyNSwzMjksMzM0LDM2NCw0NjMsNDY1LDQ2Nyw0NjksNDcxLDQ3Myw0NzUsNDc3LDUwNiw1OTQsNjEwLDcxMiw3MTYsNzMwLDkzMCw5MzgsOTYyLDk3MCwxMDI2LDExMDQsMTEwNiw4MjA5LDgyMTUsODIxOCw4MjIyLDgyMzEsODI0MSw4MjQ0LDgyNDYsODI1Miw4MzY1LDg0NTIsODQ1NCw4NDU4LDg0NzEsODQ4Miw4NTU2LDg1NzAsODU5Niw4NjAyLDg3MTMsODcyMCw4NzIyLDg3MjYsODczMSw4NzM3LDg3NDAsODc0Miw4NzQ4LDg3NTEsODc2MCw4NzY2LDg3NzcsODc4MSw4Nzg3LDg4MDIsODgwOCw4ODE2LDg4NTQsODg1OCw4ODcwLDg4OTYsODk3OSw5MzIyLDkzNzIsOTU0OCw5NTg4LDk2MTYsOTYyMiw5NjM0LDk2NTIsOTY2Miw5NjcyLDk2NzYsOTY4MCw5NzAyLDk3MzUsOTczOCw5NzkzLDk3OTUsMTE5MDYsMTE5MDksMTE5MTMsMTE5MTcsMTE5MjgsMTE5NDQsMTE5NDcsMTE5NTEsMTE5NTYsMTE5NjAsMTE5NjQsMTE5NzksMTIyODQsMTIyOTIsMTIzMTIsMTIzMTksMTIzMzAsMTIzNTEsMTI0MzYsMTI0NDcsMTI1MzUsMTI1NDMsMTI1ODYsMTI4NDIsMTI4NTAsMTI5NjQsMTMyMDAsMTMyMTUsMTMyMTgsMTMyNTMsMTMyNjMsMTMyNjcsMTMyNzAsMTMzODQsMTM0MjgsMTM3MjcsMTM4MzksMTM4NTEsMTQ2MTcsMTQ3MDMsMTQ4MDEsMTQ4MTYsMTQ5NjQsMTUxODMsMTU0NzEsMTU1ODUsMTY0NzEsMTY3MzYsMTcyMDgsMTczMjUsMTczMzAsMTczNzQsMTc2MjMsMTc5OTcsMTgwMTgsMTgyMTIsMTgyMTgsMTgzMDEsMTgzMTgsMTg3NjAsMTg4MTEsMTg4MTQsMTg4MjAsMTg4MjMsMTg4NDQsMTg4NDgsMTg4NzIsMTk1NzYsMTk2MjAsMTk3MzgsMTk4ODcsNDA4NzAsNTkyNDQsNTkzMzYsNTkzNjcsNTk0MTMsNTk0MTcsNTk0MjMsNTk0MzEsNTk0MzcsNTk0NDMsNTk0NTIsNTk0NjAsNTk0NzgsNTk0OTMsNjM3ODksNjM4NjYsNjM4OTQsNjM5NzYsNjM5ODYsNjQwMTYsNjQwMTgsNjQwMjEsNjQwMjUsNjQwMzQsNjQwMzcsNjQwNDIsNjUwNzQsNjUwOTMsNjUxMDcsNjUxMTIsNjUxMjcsNjUxMzIsNjUzNzUsNjU1MTAsNjU1MzZdLCJnYkNoYXJzIjpbMCwzNiwzOCw0NSw1MCw4MSw4OSw5NSw5NiwxMDAsMTAzLDEwNCwxMDUsMTA5LDEyNiwxMzMsMTQ4LDE3MiwxNzUsMTc5LDIwOCwzMDYsMzA3LDMwOCwzMDksMzEwLDMxMSwzMTIsMzEzLDM0MSw0MjgsNDQzLDU0NCw1NDUsNTU4LDc0MSw3NDIsNzQ5LDc1MCw4MDUsODE5LDgyMCw3OTIyLDc5MjQsNzkyNSw3OTI3LDc5MzQsNzk0Myw3OTQ0LDc5NDUsNzk1MCw4MDYyLDgxNDgsODE0OSw4MTUyLDgxNjQsODE3NCw4MjM2LDgyNDAsODI2Miw4MjY0LDgzNzQsODM4MCw4MzgxLDgzODQsODM4OCw4MzkwLDgzOTIsODM5Myw4Mzk0LDgzOTYsODQwMSw4NDA2LDg0MTYsODQxOSw4NDI0LDg0MzcsODQzOSw4NDQ1LDg0ODIsODQ4NSw4NDk2LDg1MjEsODYwMyw4OTM2LDg5NDYsOTA0Niw5MDUwLDkwNjMsOTA2Niw5MDc2LDkwOTIsOTEwMCw5MTA4LDkxMTEsOTExMyw5MTMxLDkxNjIsOTE2NCw5MjE4LDkyMTksMTEzMjksMTEzMzEsMTEzMzQsMTEzMzYsMTEzNDYsMTEzNjEsMTEzNjMsMTEzNjYsMTEzNzAsMTEzNzIsMTEzNzUsMTEzODksMTE2ODIsMTE2ODYsMTE2ODcsMTE2OTIsMTE2OTQsMTE3MTQsMTE3MTYsMTE3MjMsMTE3MjUsMTE3MzAsMTE3MzYsMTE5ODIsMTE5ODksMTIxMDIsMTIzMzYsMTIzNDgsMTIzNTAsMTIzODQsMTIzOTMsMTIzOTUsMTIzOTcsMTI1MTAsMTI1NTMsMTI4NTEsMTI5NjIsMTI5NzMsMTM3MzgsMTM4MjMsMTM5MTksMTM5MzMsMTQwODAsMTQyOTgsMTQ1ODUsMTQ2OTgsMTU1ODMsMTU4NDcsMTYzMTgsMTY0MzQsMTY0MzgsMTY0ODEsMTY3MjksMTcxMDIsMTcxMjIsMTczMTUsMTczMjAsMTc0MDIsMTc0MTgsMTc4NTksMTc5MDksMTc5MTEsMTc5MTUsMTc5MTYsMTc5MzYsMTc5MzksMTc5NjEsMTg2NjQsMTg3MDMsMTg4MTQsMTg5NjIsMTkwNDMsMzM0NjksMzM0NzAsMzM0NzEsMzM0ODQsMzM0ODUsMzM0OTAsMzM0OTcsMzM1MDEsMzM1MDUsMzM1MTMsMzM1MjAsMzM1MzYsMzM1NTAsMzc4NDUsMzc5MjEsMzc5NDgsMzgwMjksMzgwMzgsMzgwNjQsMzgwNjUsMzgwNjYsMzgwNjksMzgwNzUsMzgwNzYsMzgwNzgsMzkxMDgsMzkxMDksMzkxMTMsMzkxMTQsMzkxMTUsMzkxMTYsMzkyNjUsMzkzOTQsMTg5MDAwXX0KCi8qKiovIH0pLAovKiAxODMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSBbWyIwIiwiXHUwMDAwIiwxMjddLFsiODE0MSIsIuqwguqwg+qwheqwhuqwiyIsNCwi6rCY6rCe6rCf6rCh6rCi6rCj6rClIiw2LCLqsK7qsLLqsLPqsLQiXSxbIjgxNjEiLCLqsLXqsLbqsLfqsLrqsLvqsL3qsL7qsL/qsYEiLDksIuqxjOqxjiIsNSwi6rGVIl0sWyI4MTgxIiwi6rGW6rGX6rGZ6rGa6rGb6rGdIiwxOCwi6rGy6rGz6rG16rG26rG56rG7Iiw0LCLqsoLqsofqsojqso3qso7qso/qspHqspLqspPqspUiLDYsIuqynuqyoiIsNSwi6rKr6rKt6rKu6rKxIiw2LCLqsrrqsr7qsr/qs4Dqs4Lqs4Pqs4Xqs4bqs4fqs4nqs4rqs4vqs40iLDcsIuqzluqzmCIsNywi6rOi6rOj6rOl6rOm6rOp6rOr6rOt6rOu6rOy6rO06rO3Iiw0LCLqs77qs7/qtIHqtILqtIPqtIXqtIciLDQsIuq0juq0kOq0kuq0kyJdLFsiODI0MSIsIuq0lOq0leq0luq0l+q0meq0muq0m+q0neq0nuq0n+q0oSIsNywi6rSq6rSr6rSuIiw1XSxbIjgyNjEiLCLqtLbqtLfqtLnqtLrqtLvqtL0iLDYsIuq1huq1iOq1iiIsNSwi6rWR6rWS6rWT6rWV6rWW6rWXIl0sWyI4MjgxIiwi6rWZIiw3LCLqtaLqtaQiLDcsIuq1ruq1r+q1seq1suq1t+q1uOq1ueq1uuq1vuq2gOq2gyIsNCwi6raK6raL6raN6raO6raP6raRIiwxMCwi6raeIiw1LCLqtqUiLDE3LCLqtrgiLDcsIuq3guq3g+q3heq3huq3h+q3iSIsNiwi6reS6reUIiw3LCLqt53qt57qt5/qt6Hqt6Lqt6Pqt6UiLDE4XSxbIjgzNDEiLCLqt7rqt7vqt73qt77quIIiLDUsIuq4iuq4jOq4jiIsNSwi6riVIiw3XSxbIjgzNjEiLCLquJ0iLDE4LCLquLLquLPquLXquLbquLnquLvquLwiXSxbIjgzODEiLCLquL3quL7quL/quYLquYTquYfquYjquYnquYvquY/quZHquZLquZPquZXquZciLDQsIuq5nuq5ouq5o+q5pOq5puq5p+q5quq5q+q5req5ruq5r+q5sSIsNiwi6rm66rm+Iiw1LCLquoYiLDUsIuq6jSIsNDYsIuq6v+q7geq7guq7g+q7hSIsNiwi6ruO6ruSIiw1LCLqu5rqu5vqu50iLDhdLFsiODQ0MSIsIuq7puq7p+q7qeq7quq7rOq7riIsNSwi6ru16ru26ru36ru56ru66ru76ru9Iiw4XSxbIjg0NjEiLCLqvIbqvInqvIrqvIvqvIzqvI7qvI/qvJEiLDE4XSxbIjg0ODEiLCLqvKQiLDcsIuq8ruq8r+q8seq8s+q8tSIsNiwi6ry+6r2A6r2E6r2F6r2G6r2H6r2KIiw1LCLqvZEiLDEwLCLqvZ4iLDUsIuq9piIsMTgsIuq9uiIsNSwi6r6B6r6C6r6D6r6F6r6G6r6H6r6JIiw2LCLqvpLqvpPqvpTqvpYiLDUsIuq+nSIsMjYsIuq+uuq+u+q+veq+viJdLFsiODU0MSIsIuq+v+q/gSIsNSwi6r+K6r+M6r+PIiw0LCLqv5UiLDYsIuq/nSIsNF0sWyI4NTYxIiwi6r+iIiw1LCLqv6oiLDUsIuq/suq/s+q/teq/tuq/t+q/uSIsNiwi64CC64CDIl0sWyI4NTgxIiwi64CFIiw2LCLrgI3rgI7rgI/rgJHrgJLrgJPrgJUiLDYsIuuAniIsOSwi64CpIiwyNiwi64GG64GH64GJ64GL64GN64GP64GQ64GR64GS64GW64GY64Ga64Gb64Gc64GeIiwyOSwi64G+64G/64KB64KC64KD64KFIiw2LCLrgo7rgpDrgpIiLDUsIuuCm+uCneuCnuuCo+uCpCJdLFsiODY0MSIsIuuCpeuCpuuCp+uCquuCsOuCsuuCtuuCt+uCueuCuuuCu+uCvSIsNiwi64OG64OKIiw1LCLrg5IiXSxbIjg2NjEiLCLrg5Prg5Xrg5brg5frg5kiLDYsIuuDoeuDouuDo+uDpOuDpiIsMTBdLFsiODY4MSIsIuuDsSIsMjIsIuuEiuuEjeuEjuuEj+uEkeuElOuEleuEluuEl+uEmuuEniIsNCwi64Sm64Sn64Sp64Sq64Sr64StIiw2LCLrhLbrhLoiLDUsIuuFguuFg+uFheuFhuuFh+uFiSIsNiwi64WS64WT64WW64WX64WZ64Wa64Wb64Wd64We64Wf64WhIiwyMiwi64W664W764W964W+64W/64aB64aDIiw0LCLrhorrhozrho7rho/rhpDrhpHrhpXrhpbrhpfrhpnrhprrhpvrhp0iXSxbIjg3NDEiLCLrhp4iLDksIuuGqSIsMTVdLFsiODc2MSIsIuuGuSIsMTgsIuuHjeuHjuuHj+uHkeuHkuuHk+uHlSJdLFsiODc4MSIsIuuHliIsNSwi64ee64egIiw3LCLrh6rrh6vrh63rh67rh6/rh7EiLDcsIuuHuuuHvOuHviIsNSwi64iG64iH64iJ64iK64iNIiw2LCLriJbriJjriJoiLDUsIuuIoSIsMTgsIuuItSIsNiwi64i9IiwyNiwi64mZ64ma64mb64md64me64mf64mhIiw2LCLriaoiLDRdLFsiODg0MSIsIuuJryIsNCwi64m2Iiw1LCLrib0iLDYsIuuKhuuKh+uKiOuKiiIsNF0sWyI4ODYxIiwi64qP64qS64qT64qV64qW64qX64qbIiw0LCLriqLriqTriqfriqjriqnriqvriq3riq7riq/rirHrirLrirPrirXrirbrirciXSxbIjg4ODEiLCLrirgiLDE1LCLri4rri4vri43ri47ri4/ri5Hri5MiLDQsIuuLmuuLnOuLnuuLn+uLoOuLoeuLo+uLp+uLqeuLquuLsOuLseuLsuuLtuuLvOuLveuLvuuMguuMg+uMheuMhuuMh+uMiSIsNiwi64yS64yWIiw1LCLrjJ0iLDU0LCLrjZfrjZnrjZrrjZ3rjaDrjaHrjaLrjaMiXSxbIjg5NDEiLCLrjabrjajrjarrjazrja3rja/rjbLrjbPrjbXrjbbrjbfrjbkiLDYsIuuOguuOhiIsNSwi646NIl0sWyI4OTYxIiwi646O646P646R646S646T646VIiwxMCwi646iIiw1LCLrjqnrjqrrjqvrjq0iXSxbIjg5ODEiLCLrjq4iLDIxLCLrj4brj4frj4nrj4rrj43rj4/rj5Hrj5Lrj5Prj5brj5jrj5rrj5zrj57rj5/rj6Hrj6Lrj6Prj6Xrj6brj6frj6kiLDE4LCLrj70iLDE4LCLrkJEiLDYsIuuQmeuQmuuQm+uQneuQnuuQn+uQoSIsNiwi65Cq65CsIiw3LCLrkLUiLDE1XSxbIjhhNDEiLCLrkYUiLDEwLCLrkZLrkZPrkZXrkZbrkZfrkZkiLDYsIuuRouuRpOuRpiJdLFsiOGE2MSIsIuuRpyIsNCwi65GtIiwxOCwi65KB65KCIl0sWyI4YTgxIiwi65KDIiw0LCLrkokiLDE5LCLrkp4iLDUsIuuSpeuSpuuSp+uSqeuSquuSq+uSrSIsNywi65K265K465K6Iiw1LCLrk4Hrk4Lrk4Prk4Xrk4brk4frk4kiLDYsIuuTkeuTkuuTk+uTlOuTliIsNSwi65Oe65Of65Oh65Oi65Ol65OnIiw0LCLrk67rk7Drk7IiLDUsIuuTuSIsMjYsIuuUluuUl+uUmeuUmuuUnSJdLFsiOGI0MSIsIuuUniIsNSwi65Sm65SrIiw0LCLrlLLrlLPrlLXrlLbrlLfrlLkiLDYsIuuVguuVhiJdLFsiOGI2MSIsIuuVh+uViOuVieuViuuVjuuVj+uVkeuVkuuVk+uVlSIsNiwi65We65WiIiw4XSxbIjhiODEiLCLrlasiLDUyLCLrlqLrlqPrlqXrlqbrlqfrlqnrlqzrlq3rlq7rlq/rlrLrlrYiLDQsIuuWvuuWv+uXgeuXguuXg+uXhSIsNiwi65eO65eSIiw1LCLrl5kiLDE4LCLrl60iLDE4XSxbIjhjNDEiLCLrmIAiLDE1LCLrmJLrmJPrmJXrmJbrmJfrmJkiLDRdLFsiOGM2MSIsIuuYniIsNiwi65imIiw1LCLrmK0iLDYsIuuYtSIsNV0sWyI4YzgxIiwi65i7IiwxMiwi65mJIiwyNiwi65ml65mm65mn65mpIiw1MCwi65qe65qf65qh65qi65qj65qlIiw1LCLrmq3rmq7rmq/rmrDrmrIiLDE2XSxbIjhkNDEiLCLrm4MiLDE2LCLrm5UiLDhdLFsiOGQ2MSIsIuubniIsMTcsIuubseubsuubs+ubteubtuubt+ubueubuiJdLFsiOGQ4MSIsIuubuyIsNCwi65yC65yD65yE65yGIiwzMywi65yq65yr65yt65yu65yxIiw2LCLrnLrrnLwiLDcsIuudheudhuudh+udieudiuudi+udjSIsNiwi652WIiw5LCLrnaHrnaLrnaPrnaXrnabrnafrnakiLDYsIuudsuudtOudtiIsNSwi652+652/656B656C656D656FIiw2LCLrno7rnpPrnpTrnpXrnprrnpvrnp3rnp4iXSxbIjhlNDEiLCLrnp/rnqEiLDYsIuuequueriIsNSwi656265636565Iiw4XSxbIjhlNjEiLCLrn4IiLDQsIuufiOufiiIsMTldLFsiOGU4MSIsIuufniIsMTMsIuufruufr+ufseufsuufs+uftSIsNiwi65++66CCIiw0LCLroIrroIvroI3roI7roI/roJEiLDYsIuugmuugnOugniIsNSwi66Cm66Cn66Cp66Cq66Cr66CtIiw2LCLroLbroLoiLDUsIuuhgeuhguuhg+uhhSIsMTEsIuuhkuuhlCIsNywi66Ge66Gf66Gh66Gi66Gj66GlIiw2LCLroa7robDrobIiLDUsIuuhueuhuuuhu+uhvSIsN10sWyI4ZjQxIiwi66KFIiw3LCLroo4iLDE3XSxbIjhmNjEiLCLroqAiLDcsIuuiqSIsNiwi66Kx66Ky66Kz66K166K266K366K5Iiw0XSxbIjhmODEiLCLror7ror/ro4Lro4Tro4YiLDUsIuujjeujjuujj+ujkeujkuujk+ujlSIsNywi66Oe66Og66OiIiw1LCLro6rro6vro63ro67ro6/ro7EiLDYsIuujuuujvOujviIsNSwi66SFIiwxOCwi66SZIiw2LCLrpKEiLDI2LCLrpL7rpL/rpYHrpYLrpYPrpYUiLDYsIuuljeuljuulkOulkiIsNV0sWyI5MDQxIiwi66Wa66Wb66Wd66We66Wf66WhIiw2LCLrparrpazrpa4iLDUsIuultuult+ulueuluuulu+ulvSJdLFsiOTA2MSIsIuulviIsNSwi66aG66aI66aL66aM66aPIiwxNV0sWyI5MDgxIiwi66afIiwxMiwi66au66av66ax66ay66az66a1Iiw2LCLrpr7rp4Drp4IiLDUsIuuniuuni+unjeunkyIsNCwi66ea66ec66ef66eg66ei66em66en66ep66eq66er66etIiw2LCLrp7brp7siLDQsIuuogiIsNSwi66iJIiwxMSwi66iWIiwzMywi66i666i766i966i+66i/66mB66mD66mE66mF66mGIl0sWyI5MTQxIiwi66mH66mK66mM66mP66mQ66mR66mS66mW66mX66mZ66ma66mb66mdIiw2LCLrqabrqaoiLDVdLFsiOTE2MSIsIuupsuups+upteuptuupt+upuSIsOSwi66qG66qI66qJ66qK66qL66qNIiw1XSxbIjkxODEiLCLrqpMiLDIwLCLrqqrrqq3rqq7rqq/rqrHrqrMiLDQsIuuquuuqvOuqviIsNSwi66uF66uG66uH66uJIiwxNCwi66uaIiwzMywi66u966u+66u/66yB66yC66yD66yFIiw3LCLrrI7rrJDrrJIiLDUsIuusmeusmuusm+usneusnuusn+usoSIsNl0sWyI5MjQxIiwi66yo66yq66ysIiw3LCLrrLfrrLnrrLrrrL8iLDQsIuuthuutiOutiuuti+utjOutjuutkeutkiJdLFsiOTI2MSIsIuutk+utleutluutl+utmSIsNywi662i662kIiw3LCLrra0iLDRdLFsiOTI4MSIsIuutsiIsMjEsIuuuieuuiuuui+uujeuujuuuj+uukSIsMTgsIuuupeuupuuup+uuqeuuquuuq+uurSIsNiwi666166626664Iiw3LCLrr4Hrr4Lrr4Prr4Xrr4brr4frr4kiLDYsIuuvkeuvkuuvlCIsMzUsIuuvuuuvu+uvveuvvuuwgSJdLFsiOTM0MSIsIuuwgyIsNCwi67CK67CO67CQ67CS67CT67CZ67Ca67Cg67Ch67Ci67Cj67Cm67Co67Cq67Cr67Cs67Cu67Cv67Cy67Cz67C1Il0sWyI5MzYxIiwi67C267C367C5Iiw2LCLrsYLrsYbrsYfrsYjrsYrrsYvrsY7rsY/rsZEiLDhdLFsiOTM4MSIsIuuxmuuxm+uxnOuxniIsMzcsIuuyhuuyh+uyieuyiuuyjeuyjyIsNCwi67KW67KY67KbIiw0LCLrsqLrsqPrsqXrsqbrsqkiLDYsIuuysuuytiIsNSwi67K+67K/67OB67OC67OD67OFIiw3LCLrs47rs5Lrs5Prs5Trs5brs5frs5nrs5rrs5vrs50iLDIyLCLrs7frs7nrs7rrs7vrs70iXSxbIjk0NDEiLCLrs74iLDUsIuu0huu0iOu0iiIsNSwi67SR67SS67ST67SVIiw4XSxbIjk0NjEiLCLrtJ4iLDUsIuu0pSIsNiwi67StIiwxMl0sWyI5NDgxIiwi67S6Iiw1LCLrtYEiLDYsIuu1iuu1i+u1jeu1juu1j+u1kSIsNiwi67WaIiw5LCLrtaXrtabrtafrtakiLDIyLCLrtoLrtoPrtoXrtobrtosiLDQsIuu2kuu2lOu2luu2l+u2mOu2m+u2nSIsNiwi67alIiwxMCwi67axIiw2LCLrtrkiLDI0XSxbIjk1NDEiLCLrt5Lrt5Prt5brt5frt5nrt5rrt5vrt50iLDExLCLrt6oiLDUsIuu3sSJdLFsiOTU2MSIsIuu3suu3s+u3teu3tuu3t+u3uSIsNiwi67iB67iC67iE67iGIiw1LCLruI7ruI/ruJHruJLruJMiXSxbIjk1ODEiLCLruJUiLDYsIuu4nuu4oCIsMzUsIuu5huu5h+u5ieu5iuu5i+u5jeu5jyIsNCwi67mW67mY67mc67md67me67mf67mi67mj67ml67mm67mn67mp67mrIiw0LCLrubLrubYiLDQsIuu5vuu5v+u6geu6guu6g+u6hSIsNiwi67qO67qSIiw1LCLrupoiLDEzLCLruqkiLDE0XSxbIjk2NDEiLCLrurgiLDIzLCLru5Lru5MiXSxbIjk2NjEiLCLru5Xru5bru5kiLDYsIuu7oeu7ouu7piIsNSwi67utIiw4XSxbIjk2ODEiLCLru7YiLDEwLCLrvIIiLDUsIuu8iiIsMTMsIuu8muu8niIsMzMsIuu9guu9g+u9heu9huu9h+u9iSIsNiwi672S672T672U672WIiw0NF0sWyI5NzQxIiwi676DIiwxNiwi676VIiw4XSxbIjk3NjEiLCLrvp4iLDE3LCLrvrEiLDddLFsiOTc4MSIsIuu+uSIsMTEsIuu/hiIsNSwi67+O67+P67+R67+S67+T67+VIiw2LCLrv53rv57rv6Drv6IiLDg5LCLsgL3sgL7sgL8iXSxbIjk4NDEiLCLsgYAiLDE2LCLsgZIiLDUsIuyBmeyBmuyBmyJdLFsiOTg2MSIsIuyBneyBnuyBn+yBoSIsNiwi7IGqIiwxNV0sWyI5ODgxIiwi7IG6IiwyMSwi7IKS7IKT7IKV7IKW7IKX7IKZIiw2LCLsgqLsgqTsgqYiLDUsIuyCruyCseyCsuyCtyIsNCwi7IK+7IOC7IOD7IOE7IOG7IOH7IOK7IOL7ION7IOO7IOP7IORIiw2LCLsg5rsg54iLDUsIuyDpuyDp+yDqeyDquyDq+yDrSIsNiwi7IO27IO47IO6Iiw1LCLshIHshILshIPshIXshIbshIfshIkiLDYsIuyEkeyEkuyEk+yElOyEliIsNSwi7ISh7ISi7ISl7ISo7ISp7ISq7ISr7ISuIl0sWyI5OTQxIiwi7ISy7ISz7IS07IS17IS37IS67IS77IS97IS+7IS/7IWBIiw2LCLshYrshY4iLDUsIuyFluyFlyJdLFsiOTk2MSIsIuyFmeyFmuyFm+yFnSIsNiwi7IWm7IWqIiw1LCLshbHshbLshbPshbXshbbshbfshbnshbrshbsiXSxbIjk5ODEiLCLshbwiLDgsIuyGhiIsNSwi7IaP7IaR7IaS7IaT7IaV7IaXIiw0LCLshp7shqDshqLshqPshqTshqbshqfshqrshqvshq3shq7shq/shrEiLDExLCLshr4iLDUsIuyHheyHhuyHh+yHieyHiuyHi+yHjSIsNiwi7IeV7IeW7IeZIiw2LCLsh6Hsh6Lsh6Psh6Xsh6bsh6fsh6kiLDYsIuyHsuyHtCIsNywi7Ie+7Ie/7IiB7IiC7IiD7IiFIiw2LCLsiI7siJDsiJIiLDUsIuyImuyIm+yIneyInuyIoeyIouyIoyJdLFsiOWE0MSIsIuyIpOyIpeyIpuyIp+yIquyIrOyIruyIsOyIs+yItSIsMTZdLFsiOWE2MSIsIuyJhuyJh+yJiSIsNiwi7ImS7ImT7ImV7ImW7ImX7ImZIiw2LCLsiaHsiaLsiaPsiaTsiaYiXSxbIjlhODEiLCLsiaciLDQsIuyJruyJr+yJseyJsuyJs+yJtSIsNiwi7Im+7IqA7IqCIiw1LCLsiooiLDUsIuyKkSIsNiwi7IqZ7Iqa7Iqc7IqeIiw1LCLsiqbsiqfsiqnsiqrsiqvsiq4iLDUsIuyKtuyKuOyKuiIsMzMsIuyLnuyLn+yLoeyLouyLpSIsNSwi7Iuu7Iuw7Iuy7Iuz7Iu07Iu17Iu37Iu67Iu97Iu+7Iu/7IyBIiw2LCLsjIrsjIvsjI7sjI8iXSxbIjliNDEiLCLsjJDsjJHsjJLsjJbsjJfsjJnsjJrsjJvsjJ0iLDYsIuyMpuyMp+yMqiIsOF0sWyI5YjYxIiwi7IyzIiwxNywi7I2GIiw3XSxbIjliODEiLCLsjY4iLDI1LCLsjarsjavsja3sja7sja/sjbHsjbMiLDQsIuyNuuyNu+yNviIsNSwi7I6F7I6G7I6H7I6J7I6K7I6L7I6NIiw1MCwi7I+BIiwyMiwi7I+aIl0sWyI5YzQxIiwi7I+b7I+d7I+e7I+h7I+jIiw0LCLsj6rsj6vsj6zsj64iLDUsIuyPtuyPt+yPuSIsNV0sWyI5YzYxIiwi7I+/Iiw4LCLskIkiLDYsIuyQkSIsOV0sWyI5YzgxIiwi7JCbIiw4LCLskKUiLDYsIuyQreyQruyQr+yQseyQsuyQs+yQtSIsNiwi7JC+Iiw5LCLskYkiLDI2LCLskabskafskanskarskavska0iLDYsIuyRtuyRt+yRuOyRuiIsNSwi7JKBIiwxOCwi7JKVIiw2LCLskp0iLDEyXSxbIjlkNDEiLCLskqoiLDEzLCLskrnskrrskrvskr0iLDhdLFsiOWQ2MSIsIuyThiIsMjVdLFsiOWQ4MSIsIuyToCIsOCwi7JOqIiw1LCLsk7Lsk7Psk7Xsk7bsk7fsk7nsk7vsk7zsk73sk77slIIiLDksIuyUjeyUjuyUj+yUkeyUkuyUk+yUlSIsNiwi7JSdIiwxMCwi7JSq7JSr7JSt7JSu7JSv7JSxIiw2LCLslLrslLzslL4iLDUsIuyVhuyVh+yVi+yVj+yVkOyVkeyVkuyVluyVmuyVm+yVnOyVn+yVouyVo+yVpeyVpuyVp+yVqSIsNiwi7JWy7JW2Iiw1LCLslb7slb/sloHsloLsloPsloXslobslojslonslorslovslo7slpDslpLslpPslpQiXSxbIjllNDEiLCLslpbslpnslprslpvslp3slp7slp/slqEiLDcsIuyWqiIsOSwi7Ja2Il0sWyI5ZTYxIiwi7Ja37Ja67Ja/Iiw0LCLsl4vsl43sl4/sl5Lsl5Psl5Xsl5bsl5fsl5kiLDYsIuyXouyXpOyXpuyXpyJdLFsiOWU4MSIsIuyXqOyXqeyXquyXq+yXr+yXseyXsuyXs+yXteyXuOyXueyXuuyXu+yYguyYg+yYhOyYieyYiuyYi+yYjeyYjuyYj+yYkSIsNiwi7Jia7JidIiw2LCLsmKbsmKfsmKnsmKrsmKvsmK/smLHsmLLsmLbsmLjsmLrsmLzsmL3smL7smL/smYLsmYPsmYXsmYbsmYfsmYkiLDYsIuyZkuyZliIsNSwi7Jme7Jmf7JmhIiwxMCwi7Jmt7Jmu7Jmw7JmyIiw1LCLsmbrsmbvsmb3smb7smb/smoEiLDYsIuyaiuyajOyajiIsNSwi7JqW7JqX7JqZ7Jqa7Jqb7JqdIiw2LCLsmqYiXSxbIjlmNDEiLCLsmqjsmqoiLDUsIuyasuyas+yateyatuyat+yauyIsNCwi7JuC7JuE7JuGIiw1LCLsm44iXSxbIjlmNjEiLCLsm4/sm5Hsm5Lsm5Psm5UiLDYsIuybnuybn+yboiIsNSwi7Juq7Jur7Jut7Juu7Juv7Jux7JuyIl0sWyI5ZjgxIiwi7JuzIiw0LCLsm7rsm7vsm7zsm74iLDUsIuychuych+ycieyciuyci+ycjSIsNiwi7JyW7JyY7JyaIiw1LCLsnKLsnKPsnKXsnKbsnKfsnKkiLDYsIuycsuyctOyctuycuOycueycuuycu+ycvuycv+ydgeydguydg+ydhSIsNCwi7J2L7J2O7J2Q7J2Z7J2a7J2b7J2d7J2e7J2f7J2hIiw2LCLsnansnarsnawiLDcsIuydtuydt+ydueyduuydu+ydv+yegOyegeyeguyehuyei+yejOyejeyej+yekuyek+yeleyemeyemyIsNCwi7J6i7J6nIiw0LCLsnq7snq/snrHsnrLsnrPsnrXsnrbsnrciXSxbImEwNDEiLCLsnrjsnrnsnrrsnrvsnr7sn4IiLDUsIuyfiuyfi+yfjeyfj+yfkSIsNiwi7J+Z7J+a7J+b7J+cIl0sWyJhMDYxIiwi7J+eIiw1LCLsn6Xsn6bsn6fsn6nsn6rsn6vsn60iLDEzXSxbImEwODEiLCLsn7siLDQsIuygguygg+ygheyghuygh+ygieygiyIsNCwi7KCS7KCU7KCXIiw0LCLsoJ7soJ/soKHsoKLsoKPsoKUiLDYsIuygruygsOygsiIsNSwi7KC57KC67KC77KC97KC+7KC/7KGBIiw2LCLsoYrsoYvsoY4iLDUsIuyhlSIsMjYsIuyhsuyhs+yhteyhtuyht+yhueyhuyIsNCwi7KKC7KKE7KKI7KKJ7KKK7KKOIiw1LCLsopUiLDcsIuyinuyioOyiouyio+yipCJdLFsiYTE0MSIsIuyipeyipuyip+yiqSIsMTgsIuyivuyiv+yjgOyjgSJdLFsiYTE2MSIsIuyjguyjg+yjheyjhuyjh+yjieyjiuyji+yjjSIsNiwi7KOW7KOY7KOaIiw1LCLso6Lso6Pso6UiXSxbImExODEiLCLso6YiLDE0LCLso7YiLDUsIuyjvuyjv+ykgeykguykg+ykhyIsNCwi7KSO44CA44CB44CCwrfigKXigKbCqOOAg8Kt4oCV4oil77y84oi84oCY4oCZ4oCc4oCd44CU44CV44CIIiw5LCLCscOXw7fiiaDiiaTiiaXiiJ7iiLTCsOKAsuKAs+KEg+KEq++/oO+/oe+/peKZguKZgOKIoOKKpeKMkuKIguKIh+KJoeKJksKn4oC74piG4piF4peL4peP4peO4peH4peG4pah4pag4paz4pay4pa94pa84oaS4oaQ4oaR4oaT4oaU44CT4omq4omr4oia4oi94oid4oi14oir4ois4oiI4oiL4oqG4oqH4oqC4oqD4oiq4oip4oin4oio77+iIl0sWyJhMjQxIiwi7KSQ7KSSIiw1LCLspJkiLDE4XSxbImEyNjEiLCLspK0iLDYsIuyktSIsMThdLFsiYTI4MSIsIuyliCIsNywi7KWS7KWT7KWV7KWW7KWX7KWZIiw2LCLspaLspaQiLDcsIuylreylruylr+KHkuKHlOKIgOKIg8K0772ey4fLmMudy5rLmcK4y5vCocK/y5DiiK7iiJHiiI/CpOKEieKAsOKXgeKXgOKWt+KWtuKZpOKZoOKZoeKZpeKZp+KZo+KKmeKXiOKWo+KXkOKXkeKWkuKWpOKWpeKWqOKWp+KWpuKWqeKZqOKYj+KYjuKYnOKYnsK24oCg4oCh4oaV4oaX4oaZ4oaW4oaY4pmt4pmp4pmq4pms44m/44ic4oSW44+H4oSi44+C44+Y4oSh4oKswq4iXSxbImEzNDEiLCLspbHspbLspbPspbUiLDYsIuylvSIsMTAsIuymiuymi+ymjeymjuymjyJdLFsiYTM2MSIsIuymkSIsNiwi7Kaa7Kac7KaeIiwxNl0sWyJhMzgxIiwi7KavIiwxNiwi7KeC7KeD7KeF7KeG7KeJ7KeLIiw0LCLsp5Lsp5Tsp5fsp5jsp5vvvIEiLDU4LCLvv6bvvL0iLDMyLCLvv6MiXSxbImE0NDEiLCLsp57sp5/sp6Hsp6Psp6Xsp6bsp6jsp6nsp6rsp6vsp67sp7IiLDUsIuynuuynu+ynveynvuynv+yogeyoguyog+yohCJdLFsiYTQ2MSIsIuyoheyohuyoh+yoiuyojiIsNSwi7KiV7KiW7KiX7KiZIiwxMl0sWyJhNDgxIiwi7Kim7Kin7Kio7KiqIiwyOCwi44SxIiw5M10sWyJhNTQxIiwi7KmHIiw0LCLsqY7sqY/sqZHsqZLsqZPsqZUiLDYsIuypnuypoiIsNSwi7Kmp7KmqIl0sWyJhNTYxIiwi7KmrIiwxNywi7Km+Iiw1LCLsqoXsqoYiXSxbImE1ODEiLCLsqociLDE2LCLsqpkiLDE0LCLihbAiLDldLFsiYTViMCIsIuKFoCIsOV0sWyJhNWMxIiwizpEiLDE2LCLOoyIsNl0sWyJhNWUxIiwizrEiLDE2LCLPgyIsNl0sWyJhNjQxIiwi7KqoIiwxOSwi7Kq+7Kq/7KuB7KuC7KuD7KuFIl0sWyJhNjYxIiwi7KuGIiw1LCLsq47sq5Dsq5Lsq5Tsq5Xsq5bsq5fsq5oiLDUsIuyroSIsNl0sWyJhNjgxIiwi7Kuo7Kup7Kuq7Kur7KutIiw2LCLsq7UiLDE4LCLsrInsrIrilIDilILilIzilJDilJjilJTilJzilKzilKTilLTilLzilIHilIPilI/ilJPilJvilJfilKPilLPilKvilLvilYvilKDilK/ilKjilLfilL/ilJ3ilLDilKXilLjilYLilJLilJHilJrilJnilJbilJXilI7ilI3ilJ7ilJ/ilKHilKLilKbilKfilKnilKrilK3ilK7ilLHilLLilLXilLbilLnilLrilL3ilL7ilYDilYHilYMiLDddLFsiYTc0MSIsIuysiyIsNCwi7KyR7KyS7KyT7KyV7KyW7KyX7KyZIiw2LCLsrKIiLDddLFsiYTc2MSIsIuysqiIsMjIsIuytguytg+ythCJdLFsiYTc4MSIsIuytheythuyth+ytiuyti+ytjeytjuytj+ytkSIsNiwi7K2a7K2b7K2c7K2eIiw1LCLsraUiLDcsIuOOleOOluOOl+KEk+OOmOOPhOOOo+OOpOOOpeOOpuOOmSIsOSwi44+K446N446O446P44+P446I446J44+I446n446o446wIiw5LCLjjoAiLDQsIuOOuiIsNSwi446QIiw0LCLihKbjj4Djj4Hjjorjjovjjozjj5bjj4Xjjq3jjq7jjq/jj5vjjqnjjqrjjqvjjqzjj53jj5Djj5Pjj4Pjj4njj5zjj4YiXSxbImE4NDEiLCLsra0iLDEwLCLsrboiLDE0XSxbImE4NjEiLCLsrokiLDE4LCLsrp0iLDZdLFsiYTg4MSIsIuyupCIsMTksIuyuuSIsMTEsIsOGw5DCqsSmIl0sWyJhOGE2IiwixLIiXSxbImE4YTgiLCLEv8WBw5jFksK6w57FpsWKIl0sWyJhOGIxIiwi44mgIiwyNywi4pOQIiwyNSwi4pGgIiwxNCwiwr3ihZPihZTCvMK+4oWb4oWc4oWd4oWeIl0sWyJhOTQxIiwi7K+FIiwxNCwi7K+VIiwxMF0sWyJhOTYxIiwi7K+g7K+h7K+i7K+j7K+l7K+m7K+o7K+qIiwxOF0sWyJhOTgxIiwi7K+9IiwxNCwi7LCO7LCP7LCR7LCS7LCT7LCVIiw2LCLssJ7ssJ/ssKDssKPssKTDpsSRw7DEp8SxxLPEuMWAxYLDuMWTw5/DvsWnxYvFieOIgCIsMjcsIuKSnCIsMjUsIuKRtCIsMTQsIsK5wrLCs+KBtOKBv+KCgeKCguKCg+KChCJdLFsiYWE0MSIsIuywpeywpuywquywq+ywreywr+ywsSIsNiwi7LC67LC/Iiw0LCLssYbssYfssYnssYrssYvssY3ssY4iXSxbImFhNjEiLCLssY8iLDQsIuyxluyxmiIsNSwi7LGh7LGi7LGj7LGl7LGn7LGpIiw2LCLssbHssbIiXSxbImFhODEiLCLssbPssbTssbYiLDI5LCLjgYEiLDgyXSxbImFiNDEiLCLsspTsspXsspbsspfssprsspvssp3ssp7ssp/ssqEiLDYsIuyyquyyriIsNSwi7LK27LK37LK5Il0sWyJhYjYxIiwi7LK67LK77LK9Iiw2LCLss4bss4jss4oiLDUsIuyzkeyzkuyzk+yzlSIsNV0sWyJhYjgxIiwi7LObIiw4LCLss6UiLDYsIuyzreyzruyzr+yzsSIsMTIsIuOCoSIsODVdLFsiYWM0MSIsIuyzvuyzv+y0gOy0giIsNSwi7LSK7LSL7LSN7LSO7LSP7LSRIiw2LCLstJrstJzstJ7stJ/stKAiXSxbImFjNjEiLCLstKHstKLstKPstKXstKbstKfstKnstKrstKvstK0iLDExLCLstLoiLDRdLFsiYWM4MSIsIuy0vyIsMjgsIuy1ney1nuy1n9CQIiw1LCLQgdCWIiwyNV0sWyJhY2QxIiwi0LAiLDUsItGR0LYiLDI1XSxbImFkNDEiLCLstaHstaLstaPstaUiLDYsIuy1ruy1sOy1siIsNSwi7LW5Iiw3XSxbImFkNjEiLCLstoEiLDYsIuy2iSIsMTAsIuy2luy2l+y2mey2muy2m+y2ney2nuy2nyJdLFsiYWQ4MSIsIuy2oOy2oey2ouy2o+y2puy2qOy2qiIsNSwi7LaxIiwxOCwi7LeFIl0sWyJhZTQxIiwi7LeGIiw1LCLst43st47st4/st5EiLDE2XSxbImFlNjEiLCLst6IiLDUsIuy3qey3quy3q+y3rey3ruy3r+y3sSIsNiwi7Le67Le87Le+Iiw0XSxbImFlODEiLCLsuIPsuIXsuIbsuIfsuInsuIrsuIvsuI0iLDYsIuy4ley4luy4l+y4mOy4miIsNSwi7Lii7Lij7Lil7Lim7Lin7Lip7Liq7LirIl0sWyJhZjQxIiwi7Lis7Lit7Liu7Liv7Liy7Li07Li2IiwxOV0sWyJhZjYxIiwi7LmKIiwxMywi7Lma7Lmb7Lmd7Lme7LmiIiw1LCLsuarsuawiXSxbImFmODEiLCLsua4iLDUsIuy5tuy5t+y5uey5uuy5u+y5vSIsNiwi7LqG7LqI7LqKIiw1LCLsupLsupPsupXsupbsupfsupkiXSxbImIwNDEiLCLsupoiLDUsIuy6ouy6piIsNSwi7LquIiwxMl0sWyJiMDYxIiwi7Lq7Iiw1LCLsu4IiLDE5XSxbImIwODEiLCLsu5YiLDEzLCLsu6bsu6fsu6nsu6rsu60iLDYsIuy7tuy7uiIsNSwi6rCA6rCB6rCE6rCH6rCI6rCJ6rCK6rCQIiw3LCLqsJkiLDQsIuqwoOqwpOqwrOqwreqwr+qwsOqwseqwuOqwueqwvOqxgOqxi+qxjeqxlOqxmOqxnOqxsOqxseqxtOqxt+qxuOqxuuqygOqygeqyg+qyhOqyheqyhuqyieqyiuqyi+qyjOqykOqylOqynOqyneqyn+qyoOqyoeqyqOqyqeqyquqyrOqyr+qysOqyuOqyueqyu+qyvOqyveqzgeqzhOqziOqzjOqzleqzl+qzoOqzoeqzpOqzp+qzqOqzquqzrOqzr+qzsOqzseqzs+qzteqztuqzvOqzveq0gOq0hOq0hiJdLFsiYjE0MSIsIuy8guy8g+y8hey8huy8h+y8iSIsNiwi7LyS7LyU7LyWIiw1LCLsvJ3svJ7svJ/svKHsvKLsvKMiXSxbImIxNjEiLCLsvKUiLDYsIuy8ruy8siIsNSwi7Ly5IiwxMV0sWyJiMTgxIiwi7L2FIiwxNCwi7L2W7L2X7L2Z7L2a7L2b7L2dIiw2LCLsvabsvajsvarsvavsvazqtIzqtI3qtI/qtJHqtJjqtJzqtKDqtKnqtKzqtK3qtLTqtLXqtLjqtLzqtYTqtYXqtYfqtYnqtZDqtZTqtZjqtaHqtaPqtazqta3qtbDqtbPqtbTqtbXqtbbqtbvqtbzqtb3qtb/qtoHqtoLqtojqtonqtozqtpDqtpzqtp3qtqTqtrfqt4Dqt4Hqt4Tqt4jqt5Dqt5Hqt5Pqt5zqt6Dqt6Tqt7jqt7nqt7zqt7/quIDquIHquIjquInquIvquI3quJTquLDquLHquLTquLfquLjquLrquYDquYHquYPquYXquYbquYrquYzquY3quY7quZDquZTquZbquZzquZ3quZ/quaDquaHquaXquajquanquazqubDqubgiXSxbImIyNDEiLCLsva3sva7sva/svbLsvbPsvbXsvbbsvbfsvbkiLDYsIuy+gey+guy+g+y+hOy+hiIsNSwi7L6NIl0sWyJiMjYxIiwi7L6OIiwxOCwi7L6iIiw1LCLsvqkiXSxbImIyODEiLCLsvqoiLDUsIuy+sSIsMTgsIuy/hSIsNiwi6rm56rm76rm86rm96rqE6rqF6rqM6rq86rq96rq+6ruA6ruE6ruM6ruN6ruP6ruQ6ruR6ruY6ruZ6ruc6ruo6rur6rut6ru06ru46ru86ryH6ryI6ryN6ryQ6rys6ryt6ryw6ryy6ry06ry86ry96ry/6r2B6r2C6r2D6r2I6r2J6r2Q6r2c6r2d6r2k6r2l6r256r6A6r6E6r6I6r6Q6r6R6r6V6r6c6r646r656r686r+A6r+H6r+I6r+J6r+L6r+N6r+O6r+U6r+c6r+o6r+p6r+w6r+x6r+06r+464CA64CB64CE64CM64CQ64CU64Cc64Cd64Co64GE64GF64GI64GK64GM64GO64GT64GU64GV64GX64GZIl0sWyJiMzQxIiwi7L+MIiwxOSwi7L+i7L+j7L+l7L+m7L+n7L+pIl0sWyJiMzYxIiwi7L+qIiw1LCLsv7Lsv7Tsv7YiLDUsIuy/vey/vuy/v+2Age2Agu2Ag+2AhSIsNV0sWyJiMzgxIiwi7YCLIiw1LCLtgJIiLDUsIu2AmSIsMTksIuuBneuBvOuBveuCgOuChOuCjOuCjeuCj+uCkeuCmOuCmeuCmuuCnOuCn+uCoOuCoeuCouuCqOuCqeuCqyIsNCwi64Kx64Kz64K064K164K464K864OE64OF64OH64OI64OJ64OQ64OR64OU64OY64Og64Ol64SI64SJ64SL64SM64SQ64SS64ST64SY64SZ64Sb64Sc64Sd64Sj64Sk64Sl64So64Ss64S064S164S364S464S564WA64WB64WE64WI64WQ64WR64WU64WV64WY64Wc64Wg64W464W564W864aA64aC64aI64aJ64aL64aN64aS64aT64aU64aY64ac64ao64eM64eQ64eU64ec64edIl0sWyJiNDQxIiwi7YCuIiw1LCLtgLbtgLftgLntgLrtgLvtgL0iLDYsIu2Bhu2BiO2BiiIsNV0sWyJiNDYxIiwi7YGR7YGS7YGT7YGV7YGW7YGX7YGZIiw2LCLtgaEiLDEwLCLtga7tga8iXSxbImI0ODEiLCLtgbHtgbLtgbPtgbUiLDYsIu2Bvu2Bv+2CgO2CgiIsMTgsIuuHn+uHqOuHqeuHrOuHsOuHueuHu+uHveuIhOuIheuIiOuIi+uIjOuIlOuIleuIl+uImeuIoOuItOuIvOuJmOuJnOuJoOuJqOuJqeuJtOuJteuJvOuKhOuKheuKieuKkOuKkeuKlOuKmOuKmeuKmuuKoOuKoeuKo+uKpeuKpuuKquuKrOuKsOuKtOuLiOuLieuLjOuLkOuLkuuLmOuLmeuLm+uLneuLouuLpOuLpeuLpuuLqOuLqyIsNCwi64uz64u064u164u3Iiw0LCLri7/rjIDrjIHrjITrjIjrjJDrjJHrjJPrjJTrjJXrjJzrjZTrjZXrjZbrjZjrjZvrjZzrjZ7rjZ/rjaTrjaUiXSxbImI1NDEiLCLtgpUiLDE0LCLtgqbtgqftgqntgqrtgqvtgq0iLDVdLFsiYjU2MSIsIu2Cs+2Ctu2CuO2CuiIsNSwi7YOC7YOD7YOF7YOG7YOH7YOKIiw1LCLtg5Ltg5YiLDRdLFsiYjU4MSIsIu2Dm+2Dnu2Dn+2Doe2Dou2Do+2DpSIsNiwi7YOu7YOyIiw1LCLtg7kiLDExLCLrjafrjanrjavrja7rjbDrjbHrjbTrjbjrjoDrjoHrjoPrjoTrjoXrjozrjpDrjpTrjqDrjqHrjqjrjqzrj4Trj4Xrj4jrj4vrj4zrj47rj5Drj5Trj5Xrj5frj5nrj5vrj53rj6Drj6Trj6jrj7zrkJDrkJjrkJzrkKDrkKjrkKnrkKvrkLTrkZDrkZHrkZTrkZjrkaDrkaHrkaPrkaXrkazrkoDrkojrkp3rkqTrkqjrkqzrkrXrkrfrkrnrk4Drk4Trk4jrk5Drk5Xrk5zrk53rk6Drk6Prk6Trk6brk6zrk63rk6/rk7Hrk7jrlJTrlJXrlJjrlJvrlJzrlKTrlKXrlKfrlKjrlKnrlKrrlLDrlLHrlLTrlLgiXSxbImI2NDEiLCLthIUiLDcsIu2EjiIsMTddLFsiYjY2MSIsIu2EoCIsMTUsIu2Esu2Es+2Ete2Etu2Et+2Eue2Eu+2EvO2Eve2EviJdLFsiYjY4MSIsIu2Ev+2Fgu2FhiIsNSwi7YWO7YWP7YWR7YWS7YWT7YWVIiw2LCLthZ7thaDthaIiLDUsIu2Fqe2Fqu2Fq+2FreuVgOuVgeuVg+uVhOuVheuVi+uVjOuVjeuVkOuVlOuVnOuVneuVn+uVoOuVoeuWoOuWoeuWpOuWqOuWquuWq+uWsOuWseuWs+uWtOuWteuWu+uWvOuWveuXgOuXhOuXjOuXjeuXj+uXkOuXkeuXmOuXrOuYkOuYkeuYlOuYmOuYpeuYrOuYtOuZiOuZpOuZqOuanOuaneuaoOuapOuaq+uarOuaseublOubsOubtOubuOucgOucgeucheucqOucqeucrOucr+ucsOucuOucueucu+udhOudiOudjOudlOudleudoOudpOudqOudsOudseuds+udteudvOudveuegOuehOuejOuejeuej+uekOuekeuekuueluuelyJdLFsiYjc0MSIsIu2FriIsMTMsIu2FvSIsNiwi7YaF7YaG7YaH7YaJ7YaKIl0sWyJiNzYxIiwi7YaLIiwyMCwi7Yai7Yaj7Yal7Yam7YanIl0sWyJiNzgxIiwi7YapIiw2LCLthrLthrTthrbthrfthrjthrnthrvthr3thr7thr/th4EiLDE0LCLrnpjrnpnrnpzrnqDrnqjrnqnrnqvrnqzrnq3rnrTrnrXrnrjrn4frn4nrn6zrn63rn7Drn7Trn7zrn73rn7/roIDroIHroIfroIjroInroIzroJDroJjroJnroJvroJ3roKTroKXroKjroKzroLTroLXroLfroLjroLnroYDroYTroZHroZProZzroZ3roaDroaTroazroa3roa/robHrobjrobzroo3roqjrorDrorTrorjro4Dro4Hro4Pro4Xro4zro5Dro5Tro53ro5/ro6Hro6jro6nro6zro7Dro7jro7nro7vro73rpITrpJjrpKDrpLzrpL3rpYDrpYTrpYzrpY/rpZHrpZjrpZnrpZzrpaDrpajrpakiXSxbImI4NDEiLCLth5AiLDcsIu2HmSIsMTddLFsiYjg2MSIsIu2HqyIsOCwi7Ye17Ye27Ye37Ye5IiwxM10sWyJiODgxIiwi7YiI7YiKIiw1LCLtiJEiLDI0LCLrpavrpa3rpbTrpbXrpbjrpbzrpoTrpoXrpofrponrporrpo3rpo7rpqzrpq3rprDrprTrprzrpr3rpr/rp4Hrp4jrp4nrp4zrp44iLDQsIuunmOunmeunm+unneunnuunoeuno+unpOunpeunqOunrOuntOunteunt+unuOunueunuuuogOuogeuoiOuoleuouOuoueuovOupgOupguupiOupieupi+upjeupjuupk+uplOupleupmOupnOuppOuppeupp+upqOupqeupsOupseuptOupuOuqg+uqhOuqheuqh+uqjOuqqOuqqeuqq+uqrOuqsOuqsuuquOuqueuqu+uqveurhOuriOurmOurmeurvCJdLFsiYjk0MSIsIu2Iqu2Iq+2Iru2Ir+2Ise2Isu2Is+2ItSIsNiwi7Yi+7YmA7YmCIiw1LCLtiYntiYrtiYvtiYwiXSxbImI5NjEiLCLtiY0iLDE0LCLtiZ0iLDYsIu2Jpe2Jpu2Jp+2JqCJdLFsiYjk4MSIsIu2JqSIsMjIsIu2Kgu2Kg+2Khe2Khu2Kh+2Kie2Kiu2Ki+2KjOusgOushOusjeusj+uskeusmOusnOusoOusqeusq+ustOusteustuusuOusu+usvOusveusvuuthOutheuth+utieutjeutj+utkOutlOutmOutoeuto+utrOuuiOuujOuukOuupOuuqOuurOuutOuut+uvgOuvhOuviOuvkOuvk+uvuOuvueuvvOuvv+uwgOuwguuwiOuwieuwi+uwjOuwjeuwj+uwkeuwlCIsNCwi67CbIiw0LCLrsKTrsKXrsKfrsKnrsK3rsLDrsLHrsLTrsLjrsYDrsYHrsYPrsYTrsYXrsYnrsYzrsY3rsZDrsZ3rsoTrsoXrsojrsovrsozrso7rspTrspXrspciXSxbImJhNDEiLCLtio3tio7tio/tipLtipPtipTtipYiLDUsIu2Kne2Knu2Kn+2Koe2Kou2Ko+2KpSIsNiwi7YqtIl0sWyJiYTYxIiwi7Yqu7Yqv7Yqw7YqyIiw1LCLtirrtirvtir3tir7ti4Hti4MiLDQsIu2Liu2LjCIsNV0sWyJiYTgxIiwi7YuS7YuT7YuV7YuW7YuX7YuZ7Yua7Yub7YudIiw2LCLti6YiLDksIu2Lsu2Ls+2Lte2Ltu2Lt+2Lue2LuuuymeuymuuyoOuyoeuypOuyp+uyqOuysOuyseuys+uytOuyteuyvOuyveuzgOuzhOuzjeuzj+uzkOuzkeuzleuzmOuznOuztOuzteuztuuzuOuzvOu0hOu0heu0h+u0ieu0kOu0lOu0pOu0rOu1gOu1iOu1ieu1jOu1kOu1mOu1meu1pOu1qOu2gOu2geu2hOu2h+u2iOu2ieu2iuu2kOu2keu2k+u2leu2meu2muu2nOu2pOu2sOu2uOu3lOu3leu3mOu3nOu3qeu3sOu3tOu3uOu4gOu4g+u4heu4jOu4jeu4kOu4lOu4nOu4neu4n+u5hOu5heu5iOu5jOu5juu5lOu5leu5l+u5meu5muu5m+u5oOu5oeu5pCJdLFsiYmI0MSIsIu2LuyIsNCwi7YyC7YyE7YyGIiw1LCLtjI/tjJHtjJLtjJPtjJXtjJciLDQsIu2Mnu2Mou2MoyJdLFsiYmI2MSIsIu2MpO2Mpu2Mp+2Mqu2Mq+2Mre2Mru2Mr+2MsSIsNiwi7Yy67Yy+Iiw1LCLtjYbtjYftjYjtjYkiXSxbImJiODEiLCLtjYoiLDMxLCLruajruarrubDrubHrubPrubTrubXrubvrubzrub3ruoDruoTruozruo3ruo/rupDrupHrupjrupnruqjru5Dru5Hru5Tru5fru5jru6Dru6Pru6Tru6Xru6zrvIHrvIjrvInrvJjrvJnrvJvrvJzrvJ3rvYDrvYHrvYTrvYjrvZDrvZHrvZXrvpTrvrDrv4Xrv4zrv43rv5Drv5Trv5zrv5/rv6HsgLzsgZHsgZjsgZzsgaDsgajsgansgpDsgpHsgpTsgpjsgqDsgqHsgqPsgqXsgqzsgq3sgq/sgrDsgrPsgrTsgrXsgrbsgrzsgr3sgr/sg4Dsg4Hsg4Xsg4jsg4nsg4zsg5Dsg5jsg5nsg5vsg5zsg53sg6QiXSxbImJjNDEiLCLtjaoiLDE3LCLtjb7tjb/tjoHtjoLtjoPtjoXtjobtjociXSxbImJjNjEiLCLtjojtjontjortjovtjo7tjpIiLDUsIu2Omu2Om+2One2Onu2On+2OoSIsNiwi7Y6q7Y6s7Y6uIl0sWyJiYzgxIiwi7Y6vIiw0LCLtjrXtjrbtjrftjrntjrrtjrvtjr0iLDYsIu2Phu2Ph+2PiiIsNSwi7Y+RIiw1LCLsg6Xsg6jsg6zsg7Tsg7Xsg7fsg7nshIDshITshIjshJDshJXshJwiLDQsIuyEo+yEpOyEpuyEp+yErOyEreyEr+yEsOyEseyEtuyEuOyEueyEvOyFgOyFiOyFieyFi+yFjOyFjeyFlOyFleyFmOyFnOyFpOyFpeyFp+yFqOyFqeyFsOyFtOyFuOyGheyGjOyGjeyGjuyGkOyGlOyGluyGnOyGneyGn+yGoeyGpeyGqOyGqeyGrOyGsOyGveyHhOyHiOyHjOyHlOyHl+yHmOyHoOyHpOyHqOyHsOyHseyHs+yHvOyHveyIgOyIhOyIjOyIjeyIj+yIkeyImOyImeyInOyIn+yIoOyIqOyIqeyIq+yIrSJdLFsiYmQ0MSIsIu2Pl+2PmSIsNywi7Y+i7Y+kIiw3LCLtj67tj6/tj7Htj7Ltj7Ptj7Xtj7btj7ciXSxbImJkNjEiLCLtj7jtj7ntj7rtj7vtj77tkIDtkIIiLDUsIu2QiSIsMTNdLFsiYmQ4MSIsIu2QlyIsNSwi7ZCeIiwyNSwi7Iiv7Iix7Iiy7Ii07ImI7ImQ7ImR7ImU7ImY7Img7Iml7Ims7Imt7Imw7Im07Im87Im97Im/7IqB7IqI7IqJ7IqQ7IqY7Iqb7Iqd7Iqk7Iql7Iqo7Iqs7Iqt7Iq07Iq17Iq37Iq57Iuc7Iud7Iug7Iuj7Iuk7Iur7Ius7Iut7Iuv7Iux7Iu27Iu47Iu57Iu77Iu87IyA7IyI7IyJ7IyM7IyN7IyT7IyU7IyV7IyY7Iyc7Iyk7Iyl7Iyo7Iyp7I2F7I2o7I2p7I2s7I2w7I2y7I247I257I287I297I6E7I6I7I6M7I+A7I+Y7I+Z7I+c7I+f7I+g7I+i7I+o7I+p7I+t7I+07I+17I+47JCI7JCQ7JCk7JCs7JCwIl0sWyJiZTQxIiwi7ZC4Iiw3LCLtkYHtkYLtkYPtkYUiLDE0XSxbImJlNjEiLCLtkZQiLDcsIu2Rne2Rnu2Rn+2Roe2Rou2Ro+2RpSIsNywi7ZGu7ZGw7ZGx7ZGyIl0sWyJiZTgxIiwi7ZGzIiw0LCLtkbrtkbvtkb3tkb7tkoHtkoMiLDQsIu2Siu2SjO2SjiIsNSwi7ZKVIiw4LCLskLTskLzskL3skYjskaTskaXskajskazskbTskbXskbnskoDskpTskpzskrjskrzsk6nsk7Dsk7Hsk7Tsk7jsk7rsk7/slIDslIHslIzslJDslJTslJzslKjslKnslKzslLDslLjslLnslLvslL3slYTslYXslYjslYnslYrslYzslY3slY7slZPslZTslZXslZfslZjslZnslZ3slZ7slaDslaHslaTslajslbDslbHslbPslbTslbXslbzslb3sloDsloTslofslozslo3slo/slpHslpXslpfslpjslpzslqDslqnslrTslrXslrjslrnslrvslrzslr3slr7sl4QiLDYsIuyXjOyXjiJdLFsiYmY0MSIsIu2SniIsMTAsIu2SqiIsMTRdLFsiYmY2MSIsIu2SuSIsMTgsIu2Tje2Tju2Tj+2Tke2Tku2Tk+2TlSJdLFsiYmY4MSIsIu2TliIsNSwi7ZOd7ZOe7ZOgIiw3LCLtk6ntk6rtk6vtk63tk67tk6/tk7EiLDYsIu2Tue2Tuu2TvOyXkOyXkeyXlOyXmOyXoOyXoeyXo+yXpeyXrOyXreyXruyXsOyXtOyXtuyXt+yXvCIsNSwi7JiF7JiG7JiH7JiI7JiM7JiQ7JiY7JiZ7Jib7Jic7Jik7Jil7Jio7Jis7Jit7Jiu7Jiw7Jiz7Ji07Ji17Ji37Ji57Ji77JmA7JmB7JmE7JmI7JmQ7JmR7JmT7JmU7JmV7Jmc7Jmd7Jmg7Jms7Jmv7Jmx7Jm47Jm57Jm87JqA7JqI7JqJ7JqL7JqN7JqU7JqV7JqY7Jqc7Jqk7Jql7Jqn7Jqp7Jqw7Jqx7Jq07Jq47Jq57Jq67JuA7JuB7JuD7JuF7JuM7JuN7JuQ7JuU7Juc7Jud7Jug7Juh7JuoIl0sWyJjMDQxIiwi7ZO+Iiw1LCLtlIXtlIbtlIftlIntlIrtlIvtlI0iLDYsIu2Ulu2UmCIsNV0sWyJjMDYxIiwi7ZSeIiwyNV0sWyJjMDgxIiwi7ZS47ZS57ZS67ZS77ZS+7ZS/7ZWB7ZWC7ZWD7ZWFIiw2LCLtlY7tlZDtlZIiLDUsIu2Vmu2Vm+2Vne2Vnu2Vn+2Voe2Vou2Vo+ybqeybrOybsOybuOybueybveychOycheyciOycjOyclOycleycl+ycmeycoOycoeycpOycqOycsOycseycs+ycteyct+ycvOycveydgOydhOydiuydjOydjeydj+ydkSIsNywi7J2c7J2g7J2o7J2r7J207J217J247J287J297J2+7J6D7J6E7J6F7J6H7J6I7J6J7J6K7J6O7J6Q7J6R7J6U7J6W7J6X7J6Y7J6a7J6g7J6h7J6j7J6k7J6l7J6m7J6s7J6t7J6w7J607J687J697J6/7J+A7J+B7J+I7J+J7J+M7J+O7J+Q7J+Y7J+d7J+k7J+o7J+s7KCA7KCB7KCE7KCI7KCKIl0sWyJjMTQxIiwi7ZWk7ZWm7ZWn7ZWq7ZWs7ZWuIiw1LCLtlbbtlbftlbntlbrtlbvtlb0iLDYsIu2Whu2Wiu2WiyJdLFsiYzE2MSIsIu2WjO2Wje2Wju2Wj+2WkSIsMTksIu2Wpu2WpyJdLFsiYzE4MSIsIu2WqCIsMzEsIuygkOygkeygk+ygleygluygnOygneygoOygpOygrOygreygr+ygseyguOygvOyhgOyhiOyhieyhjOyhjeyhlOyhsOyhseyhtOyhuOyhuuyigOyigeyig+yiheyihuyih+yii+yijOyijeyilOyineyin+yioeyiqOyivOyiveyjhOyjiOyjjOyjlOyjleyjl+yjmeyjoOyjoeyjpOyjteyjvOyjveykgOykhOykheykhuykjOykjeykj+ykkeykmOykrOyktOylkOylkeyllOylmOyloOyloeylo+ylrOylsOyltOylvOymiOymieymjOymkOymmOymmeymm+ymneyngOyngeynhOynh+yniOyniuynkOynkeynkyJdLFsiYzI0MSIsIu2Xiu2Xi+2Xje2Xju2Xj+2Xke2XkyIsNCwi7Zea7Zec7ZeeIiw1LCLtl6btl6ftl6ntl6rtl6vtl63tl64iXSxbImMyNjEiLCLtl68iLDQsIu2Xtu2XuO2XuiIsNSwi7ZiC7ZiD7ZiF7ZiG7ZiH7ZiJIiw2LCLtmJIiXSxbImMyODEiLCLtmJYiLDUsIu2Yne2Ynu2Yn+2Yoe2You2Yo+2YpSIsNywi7ZiuIiw5LCLtmLrtmLvsp5Xsp5bsp5nsp5rsp5zsp53sp6Dsp6Lsp6Tsp6fsp6zsp63sp6/sp7Dsp7Hsp7jsp7nsp7zsqIDsqIjsqInsqIvsqIzsqI3sqJTsqJjsqKnsqYzsqY3sqZDsqZTsqZzsqZ3sqZ/sqaDsqaHsqajsqb3sqoTsqpjsqrzsqr3sq4Dsq4Tsq4zsq43sq4/sq5Hsq5Psq5jsq5nsq6Dsq6zsq7TsrIjsrJDsrJTsrJjsrKDsrKHsrYHsrYjsrYnsrYzsrZDsrZjsrZnsrZ3sraTsrbjsrbnsrpzsrrjsr5Tsr6Tsr6fsr6nssIzssI3ssJDssJTssJzssJ3ssKHssKLssKfssKjssKnssKzssK7ssLDssLjssLnssLsiXSxbImMzNDEiLCLtmL3tmL7tmL/tmYHtmYLtmYPtmYTtmYbtmYftmYrtmYztmY7tmY/tmZDtmZLtmZPtmZbtmZftmZntmZrtmZvtmZ0iLDRdLFsiYzM2MSIsIu2ZoiIsNCwi7Zmo7ZmqIiw1LCLtmbLtmbPtmbUiLDExXSxbImMzODEiLCLtmoHtmoLtmoTtmoYiLDUsIu2aju2aj+2ake2aku2ak+2alSIsNywi7Zqe7Zqg7ZqiIiw1LCLtmqntmqrssLzssL3ssL7ssYTssYXssYjssYzssZTssZXssZfssZjssZnssaDssaTssabssajssbDssbXsspjsspnsspzssqDssqjssqnssqvssqzssq3ssrTssrXssrjssrzss4Tss4Xss4fss4nss5Dss5Tss6Tss6zss7DstIHstIjstInstIzstJDstJjstJnstJvstJ3stKTstKjstKzstLnstZzstaDstaTstazsta3sta/stbHstbjstojstpTstpXstpjstpzstqTstqXstqfstqnstrDst4Tst4zst5Dst6jst6zst7Dst7jst7nst7vst73suITsuIjsuIzsuJTsuJnsuKDsuKHsuKTsuKjsuLDsuLHsuLPsuLUiXSxbImM0NDEiLCLtmqvtmq3tmq7tmq/tmrEiLDcsIu2auu2avCIsNywi7ZuG7ZuH7ZuJ7ZuK7ZuLIl0sWyJjNDYxIiwi7ZuN7ZuO7ZuP7ZuQ7ZuS7ZuT7ZuV7ZuW7ZuY7ZuaIiw1LCLtm6Htm6Ltm6Ptm6Xtm6btm6ftm6kiLDRdLFsiYzQ4MSIsIu2bru2br+2bse2bsu2bs+2btO2btiIsNSwi7Zu+7Zu/7ZyB7ZyC7ZyD7ZyFIiwxMSwi7ZyS7ZyT7ZyU7LmY7LmZ7Lmc7Lmf7Lmg7Lmh7Lmo7Lmp7Lmr7Lmt7Lm07Lm17Lm47Lm87LqE7LqF7LqH7LqJ7LqQ7LqR7LqU7LqY7Lqg7Lqh7Lqj7Lqk7Lql7Lqs7Lqt7LuB7Luk7Lul7Luo7Lur7Lus7Lu07Lu17Lu37Lu47Lu57LyA7LyB7LyE7LyI7LyQ7LyR7LyT7LyV7Lyc7Lyg7Lyk7Lys7Lyt7Lyv7Lyw7Lyx7Ly47L2U7L2V7L2Y7L2c7L2k7L2l7L2n7L2p7L2w7L2x7L207L247L6A7L6F7L6M7L6h7L6o7L6w7L+E7L+g7L+h7L+k7L+o7L+w7L+x7L+z7L+17L+87YCA7YCE7YCR7YCY7YCt7YC07YC17YC47YC8Il0sWyJjNTQxIiwi7ZyV7ZyW7ZyX7Zya7Zyb7Zyd7Zye7Zyf7ZyhIiw2LCLtnKrtnKztnK4iLDUsIu2ctu2ct+2cuSJdLFsiYzU2MSIsIu2cuu2cu+2cvSIsNiwi7Z2F7Z2G7Z2I7Z2KIiw1LCLtnZLtnZPtnZXtnZoiLDRdLFsiYzU4MSIsIu2dn+2dou2dpO2dpu2dp+2dqO2dqu2dq+2dre2dru2dr+2dse2dsu2ds+2dtSIsNiwi7Z2+7Z2/7Z6A7Z6CIiw1LCLtnortnovtgYTtgYXtgYftgYntgZDtgZTtgZjtgaDtgaztga3tgbDtgbTtgbztgb3tgoHtgqTtgqXtgqjtgqztgrTtgrXtgrftgrntg4Dtg4Htg4Ttg4jtg4ntg5Dtg5Htg5Ptg5Ttg5Xtg5ztg53tg6Dtg6Ttg6ztg63tg6/tg7Dtg7Htg7jthI3thLDthLHthLTthLjthLrthYDthYHthYPthYTthYXthYzthY3thZDthZTthZzthZ3thZ/thaHthajthazthbzthoTthojthqDthqHthqTthqjthrDthrHthrPthrXthrrthrzth4Dth5jth7Tth7jtiIftiIntiJDtiKztiK3tiLDtiLTtiLztiL3tiL/tiYHtiYjtiZwiXSxbImM2NDEiLCLtno3tno7tno/tnpEiLDYsIu2emu2enO2eniIsNV0sWyJjNmExIiwi7Ymk7YqA7YqB7YqE7YqI7YqQ7YqR7YqV7Yqc7Yqg7Yqk7Yqs7Yqx7Yq47Yq57Yq87Yq/7YuA7YuC7YuI7YuJ7YuL7YuU7YuY7Yuc7Yuk7Yul7Yuw7Yux7Yu07Yu47YyA7YyB7YyD7YyF7YyM7YyN7YyO7YyQ7YyU7YyW7Yyc7Yyd7Yyf7Yyg7Yyh7Yyl7Yyo7Yyp7Yys7Yyw7Yy47Yy57Yy77Yy87Yy97Y2E7Y2F7Y287Y297Y6A7Y6E7Y6M7Y6N7Y6P7Y6Q7Y6R7Y6Y7Y6Z7Y6c7Y6g7Y6o7Y6p7Y6r7Y6t7Y607Y647Y687Y+E7Y+F7Y+I7Y+J7Y+Q7Y+Y7Y+h7Y+j7Y+s7Y+t7Y+w7Y+07Y+87Y+97Y+/7ZCBIl0sWyJjN2ExIiwi7ZCI7ZCd7ZGA7ZGE7ZGc7ZGg7ZGk7ZGt7ZGv7ZG47ZG57ZG87ZG/7ZKA7ZKC7ZKI7ZKJ7ZKL7ZKN7ZKU7ZKp7ZOM7ZOQ7ZOU7ZOc7ZOf7ZOo7ZOs7ZOw7ZO47ZO77ZO97ZSE7ZSI7ZSM7ZSU7ZSV7ZSX7ZS87ZS97ZWA7ZWE7ZWM7ZWN7ZWP7ZWR7ZWY7ZWZ7ZWc7ZWg7ZWl7ZWo7ZWp7ZWr7ZWt7ZW07ZW17ZW47ZW87ZaE7ZaF7ZaH7ZaI7ZaJ7ZaQ7Zal7ZeI7ZeJ7ZeM7ZeQ7ZeS7ZeY7ZeZ7Zeb7Zed7Zek7Zel7Zeo7Zes7Ze07Ze17Ze37Ze57ZiA7ZiB7ZiE7ZiI7ZiQ7ZiR7ZiT7ZiU7ZiV7Zic7ZigIl0sWyJjOGExIiwi7Zik7Zit7Zi47Zi57Zi87ZmA7ZmF7ZmI7ZmJ7ZmL7ZmN7ZmR7ZmU7ZmV7ZmY7Zmc7Zmn7Zmp7Zmw7Zmx7Zm07ZqD7ZqF7ZqM7ZqN7ZqQ7ZqU7Zqd7Zqf7Zqh7Zqo7Zqs7Zqw7Zq57Zq77ZuE7ZuF7ZuI7ZuM7ZuR7ZuU7ZuX7ZuZ7Zug7Zuk7Zuo7Zuw7Zu17Zu87Zu97ZyA7ZyE7ZyR7ZyY7ZyZ7Zyc7Zyg7Zyo7Zyp7Zyr7Zyt7Zy07Zy17Zy47Zy87Z2E7Z2H7Z2J7Z2Q7Z2R7Z2U7Z2W7Z2X7Z2Y7Z2Z7Z2g7Z2h7Z2j7Z2l7Z2p7Z2s7Z2w7Z207Z287Z297Z6B7Z6I7Z6J7Z6M7Z6Q7Z6Y7Z6Z7Z6b7Z6dIl0sWyJjYWExIiwi5Ly95L2z5YGH5YO55Yqg5Y+v5ZG15ZOl5ZiJ5auB5a625pqH5p625p635p+v5q2M54+C55eC56i86Iub6IyE6KGX6KKI6Ki26LOI6LeP6Lu76L+m6aeV5Yi75Y205ZCE5oGq5oWk5q6854+P6ISa6Ka66KeS6Zaj5L6D5YiK5aK+5aW45aem5bmy5bm55oeH5o+A5p2G5p+s5qG/5r6X55mO55yL56O156iI56u/57Ch6IKd6Imu6Imx6Kur6ZaT5Lmr5Zad5pu35ri056Kj56ut6JGb6KSQ6J2O6Z6o5YuY5Z2O5aCq5bWM5oSf5oa+5oih5pWi5p+R5qmE5rib55SY55az55uj556w57S66YKv6ZGR6ZGS6b6VIl0sWyJjYmExIiwi5Yyj5bKs55Sy6IOb6YmA6ZaY5Ymb5aCI5aec5bKh5bSX5bq35by65b2K5oW35rGf55W655aG57Og57Wz57ax576M6IWU6Iih6JaR6KWB6Kyb6Yu86ZmN6bGH5LuL5Lu35YCL5Yex5aGP5oS35oS+5oWo5pS55qeq5ryR55al55qG55uW566H6Iql6JOL76SA6Y6n6ZaL5ZaA5a6i5Z2R76SB57Kz57656Ya15YCo5Y675bGF5beo5ouS5o2u5pOa5pOn5rig54Ks56Wb6Led6Lie76SC6YG96YmF6Yu45Lm+5Lu25YGl5be+5bu65oSG5qWX6IWx6JmU6LmH6Y216air5Lme5YKR5p2w5qGA5YSJ5YqN5YqS5qqiIl0sWyJjY2ExIiwi55686YiQ6buU5Yqr5oCv6L+y5YGI5oap5o+t5pOK5qC85qqE5r+A6IaI6Kah6ZqU5aCF54m954qs55SE57W557mt6IKp6KaL6K206YGj6bWR5oqJ5rG65r2U57WQ57y66Kij5YW85oWK566d6KyZ6YmX6Y6M5Lqs5L+T5YCe5YK+5YSG5YuB5YuN5Y2/5Z2w5aKD5bqa5b6R5oW25oas5pOO5pWs5pmv5pq75pu05qKX5raH54KF54Ox55Kf55Kl55OK55eZ56Gs56Os56uf56u257WF57aT6ICV6IC/6ISb6I6W6K2m6LyV6YCV6Y+h6aCD6aC46ama6a+o5L+C5ZWT5aC65aWR5a2j5bGG5oK45oiS5qGC5qKwIl0sWyJjZGExIiwi5qOo5rqq55WM55m456OO56i957O757mr57m86KiI6Kqh6LC/6ZqO6beE5Y+k5Y+p5ZGK5ZGx5Zu65aeR5a2k5bC75bqr5ou35pS35pWF5pWy5pqg5p6v5qeB5rK955e855qQ552+56i/576U6ICD6IKh6IaP6Ium6Iu96I+w6JeB6KCx6KK06Kql76SD6L6c6Yyu6ZuH6aGn6auY6byT5ZOt5pab5puy5qKP56mA6LC36bWg5Zuw5Z2k5bSR5piG5qKx5qON5ru+55Co6KKe6a+k5rGo76SE6aqo5L6b5YWs5YWx5Yqf5a2U5bel5oGQ5oGt5oux5o6n5pS754+Z56m66Jqj6LKi6Z6P5Liy5a+h5oiI5p6c55OcIl0sWyJjZWExIiwi56eR6I+T6KqH6Kqy6Leo6YGO6Y2L6aGG5buT5qeo6Je/6YOt76SF5Yag5a6Y5a+s5oWj5qO65qy+54GM55Cv55OY566h572Q6I+F6KeA6LKr6Zec6aSo5Yiu5oGd5ous6YCC5L6K5YWJ5Yyh5aOZ5buj5pug5rS454Ka54uC54+W562Q6IOx6ZGb5Y2m5o6b572r5LmW5YKA5aGK5aOe5oCq5oSn5ouQ5qeQ6a2B5a6P57SY6IKx6L2f5Lqk5YOR5ZKs5Zas5ayM5bag5ben5pSq5pWO5qCh5qmL54uh55qO55+v57We57+56Iag6JWO6Juf6LyD6L2O6YOK6aSD6amV6a6r5LiY5LmF5Lmd5LuH5L+x5YW35Yu+Il0sWyJjZmExIiwi5Y2A5Y+j5Y+l5ZKO5ZiU5Z215Z6i5a+H5baH5buQ5oe85ouY5pWR5p645p+p5qeL5q2Q5q+G5q+s5rGC5rqd54G454uX546W55CD556/55+p56m257W/6ICJ6Ie86IiF6IiK6Iuf6KGi6Kyz6LO86LuA6YCR6YKx6Ymk6Yq26aeS6amF6bOp6beX6b6c5ZyL5bGA6I+K6Z6g6Z6r6bq05ZCb56qY576k6KOZ6LuN6YOh5aCA5bGI5o6Y56qf5a6u5byT56m556qu6IqO6Lqs5YCm5Yi45Yu45Y235ZyI5ouz5o2y5qyK5reD55y35Y6l542X6JWo6Lm26ZeV5py65quD5r2w6Kmt6LuM6aWL76SG5pm35q246LK0Il0sWyJkMGExIiwi6ay876SH5Y+r5Zyt5aWO5o+G5qe754+q56GF56q656uF57O+6JG16KaP6LWz6YC16Zao5Yu75Z2H55WH562g6I+M6Yie76SI5qmY5YWL5YmL5YqH5oif5qOY5qW16ZqZ5YOF5Yqk5Yuk5oeD5pak5qC55qe/55G+562L6Iq56I+r6Kay6Ky56L+R6aWJ76SJ5LuK5aaX5pOS5piR5qqO55C056aB56a96Iqp6KG+6KG/6KWf76SK6Yym5LyL5Y+K5oCl5omx5rGy57Sa57Wm5LqY5YWi55+c6IKv5LyB5LyO5YW25YaA5Zec5Zmo5Zy75Z+65Z+85aSU5aWH5aaT5a+E5bKQ5bSO5bex5bm+5b+M5oqA5peX5pejIl0sWyJkMWExIiwi5pye5pyf5p2e5qOL5qOE5qmf5qy65rCj5rG95rKC5reH546Y55Cm55Cq55KC55Kj55W455W/56KB56Ov56WB56WH56WI56W6566V57SA57a6576I6ICG6ICt6IKM6KiY6K2P6LGI6LW36Yyh6Yyk6aOi6aWR6aiO6aiP6aml6bqS57eK5L225ZCJ5ouu5qGU6YeR5Zar5YS676SL76SM5aic5oem76SN5ouP5ou/76SOIiw1LCLpgqPvpJQiLDQsIuirvu+kme+kmu+km++knOaalu+kneeFlu+knu+kn+mbo++koOaNj+aNuuWNl++koeaej+aloOa5s++koueUt++ko++kpO+kpSJdLFsiZDJhMSIsIue0je+kpu+kp+ihsuWbiuWomO+kqCIsNCwi5LmD76St5YWn5aWI5p+w6ICQ76Su5aWz5bm05pKa56eK5b+15oGs5ouI5o275a+n5a+X5Yqq76Sv5aW05byp5oCS76Sw76Sx76Sy55GZ76SzIiw1LCLpp5HvpLkiLDEwLCLmv4PvpYTvpYXohr/ovrLmg7HvpYbvpYfohabvpYjvpYnlsL/vpYoiLDcsIuWrqeiopeadu+e0kO+lkiIsNSwi6IO976WY76WZ5bC85rOl5Yy/5rq65aSa6Iy2Il0sWyJkM2ExIiwi5Li55Lq25L2G5Zau5ZyY5aOH5b2W5pa35pem5qqA5q615rmN55+t56uv57Ce57ee6JuL6KKS6YSy6Y2b5pK75r6+542655a46YGU5ZWW5Z2N5oa65pOU5puH5reh5rmb5r2t5r6555ew6IGD6Ia96JWB6KaD6KuH6K2a6Yyf5rKT55WT562U6LiP6YGd5ZSQ5aCC5aGY5bmi5oiH5pKe5qOg55W257OW6J6z6buo5Luj5Z6I5Z2u5aSn5bCN5bKx5bi25b6F5oi05pOh546z6Ie66KKL6LK46ZqK6bub5a6F5b635oKz5YCS5YiA5Yiw5ZyW5aC15aGX5bCO5bGg5bO25baL5bqm5b6S5oK85oyR5o6J5pCX5qGDIl0sWyJkNGExIiwi5qO55quC5reY5rih5ruU5r+k54e+55uc552556ax56i76JCE6Kap6LOt6Lez6LmI6YCD6YCU6YGT6YO96Y2N6Zm26Z+c5q+S54CG54mY54qi542o552j56a/56+k57qb6K6A5aKp5oOH5pWm5pe95pq+5rKM54Se54eJ6LGa6aCT5Lmt56qB5Lud5Yas5YeN5YuV5ZCM5oan5p2x5qGQ5qOf5rSe5r2855a8556z56ul6IO06JGj6YqF5YWc5paX5p2c5p6T55eY56uH6I2z76Wa6LGG6YCX6aCt5bGv6IeA6Iqa6YGB6YGv6YiN5b6X5bad5qmZ54eI55m7562J6Jek6KyE6YSn6aiw5ZaH5oe276Wb55mp576FIl0sWyJkNWExIiwi6Ji/6J666KO46YKP76Wc5rSb54OZ54+e57Wh6JC976Wd6YWq6aex76We5LqC5Y215qyE5qyS54C+54ib6Jit6bie5YmM6L6j5bWQ5pOl5pSs5qyW5r+r57GD57qc6JeN6KWk6Ka95ouJ6IeY6KCf5buK5pyX5rWq54u855CF55Gv6J6C6YOe5L6G5bSN5b6g6JCK5Ya35o6g55Wl5Lqu5YCG5YWp5YeJ5qKB5qiR57Ku57Kx57On6Imv6KuS6Lyb6YeP5L625YS35Yu15ZGC5bus5oWu5oi+5peF5qua5r++56Sq6Jec6KCj6Zat6ami6amq6bqX6buO5Yqb5puG5q2354Cd56Sr6L2i6Z2C5oaQ5oiA5pSj5ryjIl0sWyJkNmExIiwi54WJ55KJ57e06IGv6JOu6Lym6YCj6Y2K5Ya95YiX5Yqj5rSM54OI6KOC5buJ5paC5q6u5r+C57C+54215Luk5Ly25Zu576Wf5bK65ba65oCc546y56yt576a57+O6IGG6YCe6Yi06Zu26Z2I6aCY6b2h5L6L5r6n56au6Ya06Zq35Yue76Wg5pKI5pOE5quT5r2e54CY54iQ55un6ICB6JiG6Jmc6Lev6LyF6Zyy6a2v6be66bm156KM56W/57ag6I+J6YyE6bm/6bqT6KuW5aOf5byE5pyn54Cn55OP57Gg6IG+5YSh54Co54mi56OK6LOC6LOa6LO06Zu35LqG5YOa5a+u5buW5paZ54eO55mC556t6IGK6JO8Il0sWyJkN2ExIiwi6YG86ayn6b6N5aOY5amB5bGi5qiT5rea5ryP55i757Sv57i36JSe6KS46Y+k6ZmL5YqJ5peS5p+z5qa05rWB5rqc54CP55CJ55Gg55WZ55ik56Gr6Kys6aGe5YWt5oiu6Zm45L6W5YCr5bSZ5req57a46Lyq5b6L5oWE5qCX76Wh6ZqG5YuS6IKL5Yec5YeM5qWe56ic57a+6I+x6Zm15L+a5Yip5Y6Y5ZCP5ZSO5bGl5oKn5p2O5qKo5rWs54qB54u455CG55KD76Wi55ei57Gs572557646I6J6KOP6KOh6YeM6YeQ6Zui6a+J5ZCd5r2+54eQ55KY6Je66Lqq6Zqj6bGX6bqf5p6X5reL55Cz6Ieo6ZyW56CsIl0sWyJkOGExIiwi56uL56yg57KS5pGp55Gq55ey56K856Oo6aas6a2U6bq75a+e5bmV5ryg6Iac6I6r6YKI5LiH5Y2N5aip5beS5b2O5oWi5oy95pmp5pu85ru/5ryr54Gj556e6JCs6JST6KC76LyT6aWF6bC75ZSc5oq55pyr5rKr6IyJ6KWq6Z265Lqh5aaE5b+Y5b+Z5pyb57ay572U6IqS6Iyr6I696Lye6YKZ5Z+L5aa55aqS5a+Q5pin5p6a5qKF5q+P54Wk57216LK36LOj6YKB6a2F6ISI6LKK6ZmM6amA6bql5a2f5rCT54yb55uy55uf6JCM5Yaq6KaT5YWN5YaV5YuJ5qOJ5rKU55yE55yg57a/57es6Z2i6bq15ruFIl0sWyJkOWExIiwi6JSR5Yal5ZCN5ZG95piO5pqd5qSn5rqf55q/556R6IyX6JOC6J6f6YWp6YqY6bO06KKC5L6u5YaS5Yuf5aeG5bi95oWV5pG45pG55pqu5p+Q5qih5q+N5q+b54mf54mh55GB55y455+b6ICX6Iq86IyF6KyA6Kyo6LKM5pyo5rKQ54mn55uu552m56mG6bap5q2/5rKS5aSi5pym6JKZ5Y2v5aKT5aaZ5buf5o+P5pi05p2z5ri654yr56uX6IuX6Yyo5YuZ5ber5oau5oeL5oiK5ouH5pKr5peg5qWZ5q2m5q+L54Sh54+355Wd57mG6Iie6IyC6JWq6Kqj6LK/6Zyn6bWh5aKo6buY5YCR5YiO5ZC75ZWP5paHIl0sWyJkYWExIiwi5rG257SK57SL6IGe6JqK6ZaA6Zuv5Yu/5rKV54mp5ZGz5aqa5bC+5bWL5b2M5b6u5pyq5qK25qWj5ri85rmE55yJ57Gz576O6JaH6KyO6L+36Z2h6bu05bK35oK25oSN5oar5pWP5pe75pe85rCR5rOv546f54+J57eh6ZaU5a+G6Jyc6KyQ5Ymd5Y2a5ouN5pCP5pKy5py05qi45rOK54+A55Ke566U57KV57ib6IaK6Ii26JaE6L+r6Zu56aeB5Ly05Y2K5Y+N5Y+b5ouM5pCs5pSA5paR5qeD5rOu5r2Y54+t55WU55ii55uk55u856OQ56O756Ss57WG6Iis6J+g6L+U6aCS6aOv5YuD5ouU5pKl5rik5r2RIl0sWyJkYmExIiwi55m86LeL6Yax6Ymi6auu6a2D5YCj5YKN5Z2K5aao5bCo5bmH5b235oi/5pS+5pa55peB5piJ5p6L5qac5ruC56OF57Sh6IKq6IaA6Iir6Iqz6JKh6JqM6Kiq6KyX6YKm6Ziy6b6Q5YCN5L+z76Wj5Z+55b6Y5ouc5o6S5p2v5rmD54SZ55uD6IOM6IOa6KO06KO16KSZ6LOg6Lyp6YWN6Zmq5Lyv5L2w5bib5p+P5qCi55m955m+6a2E5bmh5qiK54Wp54eU55Wq76Wk57mB6JWD6Jep6aOc5LyQ562P572w6Zal5Yeh5biG5qK15rC+5rGO5rOb54qv56+E6IyD5rOV55C65YO75YqI5aOB5pOY5qqX55Kn55mWIl0sWyJkY2ExIiwi56Kn6JiX6Zei6Zy576Wl5Y2e5byB6K6K6L6o6L6v6YKK5Yil556l6bGJ6byI5LiZ5YCC5YW15bGb5bm35pie5pi65p+E5qOF54Kz55SB55eF56eJ56ud6Lyn6aSg6aiI5L+d5aCh5aCx5a+25pmu5q2l5rSR5rm65r2954+k55Sr6I+p6KOc6KST6K2c6LyU5LyP5YOV5YyQ5Y2c5a6T5b6p5pyN56aP6IW56Iyv6JSU6KSH6KaG6Ly56Ly76aal6bCS5pys5Lm25L+45aWJ5bCB5bOv5bOw5o2n5qOS54O954ai55Cr57ir6JOs6JyC6YCi6YuS6bOz5LiN5LuY5L+v5YKF5YmW5Ymv5ZCm5ZKQ5Z+g5aSr5ammIl0sWyJkZGExIiwi5a2a5a215a+M5bqc76Wm5om25pW35pan5rWu5rql54i256ym57C/57y26IWQ6IWR6Iaa6ImA6IqZ6I6p6KiD6LKg6LOm6LO76LW06La66YOo6Yec6Zic6ZmE6aeZ6bOn5YyX5YiG5ZCp5Zm05aKz5aWU5aWu5b+/5oak5omu5piQ5rG+54Sa55uG57KJ57Oe57Sb6Iqs6LOB6Zuw76Wn5L2b5byX5b2/5ouC5bSp5pyL5qOa56G857mD6bWs5LiV5YKZ5YyV5Yyq5Y2R5aaD5ami5bqH5oKy5oaK5omJ5om55paQ5p6H5qan5q+U5q+W5q+X5q+Y5rK476Wo55C155e656CS56KR56eV56eY57KD57eL57+h6IKlIl0sWyJkZWExIiwi6IS+6IeC6I+y6Jya6KOo6Kq56K2s6LK76YSZ6Z2e6aOb6by75Zqs5ayq5b2s5paM5qqz5q6v5rWc5r+x54CV54md546t6LKn6LOT6aC75oaR5rC36IGY6aiB5LmN5LqL5Lqb5LuV5Ly65Ly85L2/5L+f5YO/5Y+y5Y+45ZSG5Zej5Zub5aOr5aWi5aiR5a+r5a+65bCE5bez5bir5b6Z5oCd5o2o5pac5pav5p+25p+75qKt5q275rKZ5rOX5rij54CJ542F56CC56S+56WA56Wg56eB56+p57SX57Wy6IKG6IiN6I6O6JOR6JuH6KOf6KmQ6Kme6Kyd6LOc6LWm6L6t6YKq6aO86aef6bqd5YmK76Wp5pyU76WqIl0sWyJkZmExIiwi5YKY5Yiq5bGx5pWj5rGV54+K55Sj55ad566X6JKc6YW46Zyw5Lm35pKS5q6654We6Jap5LiJ76Wr5p2J5qOu5riX6Iqf6JSY6KGr5o+35r6B6YiS6aKv5LiK5YK35YOP5YSf5ZWG5Zaq5ZiX5a2A5bCZ5bOg5bi45bqK5bqg5buC5oOz5qGR5qmh5rmY54i954mA54uA55u456Wl566x57+U6KOz6Ke06Kmz6LGh6LOe6Zyc5aGe55K96LO95ZeH76Ws56mh57Si6Imy54my55Sf55Sl76Wt56yZ5aKF5aO75ba85bqP5bq25b6Q5oGV5oqS5o2/5pWN5pqR5puZ5pu45qCW5qOy54qA55Ge562u57Wu57eW572yIl0sWyJlMGExIiwi6IOl6IiS6Jav6KW/6KqT6YCd6Yuk6buN6byg5aSV5aWt5bit5oOc5piU5pmz5p6Q5rGQ5reF5r2f55+z56Kp6JOG6YeL6Yyr5LuZ5YOK5YWI5ZaE5ayL5a6j5omH5pW+5peL5riy54W955CB55GE55KH55K/55ms56aq57ea57mV576o6IW66Iaz6Ii56Jia6J+s6Km16Lej6YG46YqR6ZCl6aWN6a6u5Y2o5bGR5qWU5rOE5rSp5rir6IiM6Jab6KS76Kit6Kqq6Zuq6b2n5Ymh5pq55q6y57qW6J++6LSN6ZaD6Zmd5pSd5raJ54eu76Wu5Z+O5aeT5a6s5oCn5oO65oiQ5pif5pmf54yp54+555ub55yB562sIl0sWyJlMWExIiwi6IGW6IGy6IWl6Kqg6YaS5LiW5Yui5q2y5rSX56iF56y557Sw76Wv6LKw5Y+s5Ziv5aGR5a615bCP5bCR5bei5omA5o6D5pCU5pit5qKz5rK85raI5rqv54Cf54Kk54eS55Sm55aP55aO55iZ56yR56+g57Cr57Sg57S56JSs6JWt6JiH6Ki06YCN6YGh6YK16Yq36Z+26ai35L+X5bGs5p2f5raR57Kf57qM6KyW6LSW6YCf5a2r5be95pCN6JOA6YGc6aOh546H5a6L5oKa5p2+5ree6Kif6Kqm6YCB6aCM5Yi376Ww54GR56KO6Y6W6KGw6YeX5L+u5Y+X5Ze95Zua5Z6C5aO95auC5a6I5bKr5bOA5bil5oSBIl0sWyJlMmExIiwi5oiN5omL5o6I5pCc5pS25pW45qi55q6K5rC05rSZ5ryx54en54up542455CH55Ky55im552h56eA56mX56uq57K557aP57as57mh576e6ISp6Iyx6JKQ6JOa6Jeq6KKW6Kqw6K6Q6Ly46YGC6YKD6YWs6YqW6Yq56ZqL6Zqn6Zqo6ZuW6ZyA6aCI6aaW6auT6aya5Y+U5aG+5aSZ5a2w5a6/5reR5r2a54af55Ch55K56IKF6I+95beh5b6H5b6q5oGC5pes5qCS5qWv5qmT5q6J5rS15rez54+j55u+556s562N57SU6ISj6Iic6I2A6JO06JWj6Kmi6KuE6YaH6Yye6aCG6aa05oiM6KGT6L+w6Yml5bSH5bSnIl0sWyJlM2ExIiwi5bWp55Gf6Iad6J2o5r+V5ou+57+S6KS26KWy5Lie5LmY5YOn5Yud5Y2H5om/5piH57mp6KCF6Zme5L6N5YyZ5Zi25aeL5aqk5bC45bGO5bGN5biC5byR5oGD5pa95piv5pmC5p6+5p+054yc55+i56S657+F6JKU6JON6KaW6Kmm6Kmp6Kuh6LGV6LG65Z+05a+U5byP5oGv5out5qSN5q6W5rmc54aE56+S6J2V6K2Y6Lu+6aOf6aO+5Ly45L6B5L+h5ZG75aig5a645oS85paw5pmo54e855Sz56We57Sz6IWO6Iej6I6Y6Jaq6JeO6JyD6KiK6Lqr6L6b76Wx6L+F5aSx5a6k5a+m5oKJ5a+p5bCL5b+D5rKBIl0sWyJlNGExIiwi76Wy5rex54CL55Sa6Iqv6Ku25LuA5Y2B76Wz6ZuZ5rCP5Lqe5L+E5YWS5ZWe5ail5bOo5oiR54mZ6Iq96I6q6Ju+6KGZ6Kid6Zi/6ZuF6aST6bSJ6bWd5aCK5bKz5ba95bmE5oOh5oSV5o+h5qiC5ril6YSC6Y2U6aGO6bCQ6b235a6J5bK45oyJ5pmP5qGI55y86ZuB6Z6N6aGU6a6f5pah6KyB6LuL6Za85ZS15bKp5beW5bq15pqX55mM6I+06ZeH5aOT5oq854uO6bSo5Luw5aSu5oCP5pi75q6D56en6bSm5Y6T5ZOA5Z+D5bSW5oSb5puW5rav56KN6Im+6ZqY6Z2E5Y6E5om85o6W5ray57iK6IWL6aGNIl0sWyJlNWExIiwi5qu7572M6bav6bia5Lmf5YC75Ya25aSc5oO55o+25qSw54i66IC276W06YeO5byx76W176W257SE6Iul6JGv6JK76Jel6LqN76W35L2v76W476W55aOk5a2D5oGZ5o+a5pSY5pWt5pqY76W65qWK5qij5rSL54CB54Ws55eS55iN56az56mw76W7576K76W86KWE76W96K6T6YeA6Zm976W+6aSK5ZyE5b6h5pa85ryB55iA56am6Kqe6aat6a2a6b2s5YSE5oa25oqR5qqN6IeG5YGD5aCw5b2m54SJ6KiA6Ku65a286JiW5L+65YS85Zq05aWE5o6p5re55baq5qWt5YaG5LqI5L2Z76W/76aA76aB5aaC76aCIl0sWyJlNmExIiwi76aD5q2f5rGd76aE55K156SW76aF6IiH6ImF6Iy56Ly/6L2d76aG6aSY76aH76aI76aJ5Lqm76aK5Z+f5b255piT76aL76aM55ar57m56K2v76aN6YCG6amb5Zql5aCn5ae45aif5a6076aO5bu276aP76aQ5o2Q5oy776aR5qS95rKH5rK/5raO5raT5re15ryU76aS54Of54S254WZ76aT54eD54eV76aU56GP56Gv76aV562157ej76aW57iv76aX6KGN6Luf76aY76aZ76aa6Ymb76ab6bO276ac76ad76ae5oKF5raF76af54ax76ag76ah6Zax5Y6t76ai76aj76ak5p+T76al54KO54Sw55Cw6Im26IuSIl0sWyJlN2ExIiwi76am6Za76aul6bm95puE76an54eB6JGJ76ao76ap5aGL76aq76ar5ba45b2x76as5pig5pqO5qW55qau5rC45rOz5ri25r2B5r+a54Cb54Cv54WQ54ef542w76at55Gb76au55OU55uI56mO57qT76av76aw6Iux6Kmg6L+O76ax6Y2I76ay6ZyZ76az76a05LmC5YCq76a15YiI5Y+h5puz5rGt5r+K54yK552/56mi6Iqu6Jed6JiC76a26KOU6Kmj6K296LGr76a36Yqz76a46ZyT6aCQ5LqU5LyN5L+J5YKy5Y2I5ZC+5ZCz5Zea5aGi5aK65aWn5aib5a+k5oKf76a55oeK5pWW5pe/5pmk5qKn5rGa5r6zIl0sWyJlOGExIiwi54OP54as542S56296JyI6Kqk6bCy6byH5bGL5rKD542E546J6Yi65rqr55Gl55if56mp57iV6JiK5YWA5aOF5pOB55Ou55SV55mw57+B6YKV6ZuN6aWU5rim55Om56qp56qq6Iel6JuZ6J246Kib5amJ5a6M5a6b5qKh5qSA5rWj546p55CT55Cs56KX57ep57+r6ISY6IWV6I6e6LGM6Ziu6aCR5puw5b6A5pe65p6J5rGq546L5YCt5aiD5q2q55+u5aSW5bWs5beN54yl55WP76a676a75YOl5Ye55aCv5aSt5aaW5aea5a+l76a876a95bai5ouX5pCW5pKT5pO+76a+5puc76a/5qmI76eA54e/55Gk76eBIl0sWyJlOWExIiwi56qI56qv57mH57me6ICA6IWw76eC6J+v6KaB6Kyg6YGZ76eD6YKA6aWS5oW+5qyy5rW057if6KSl6L6x5L+R5YKt5YaX5YuH5Z+H5aKJ5a655bq45oWC5qaV5raM5rmn5rq254aU55Gi55So55Ss6IGz6Iy46JOJ6LiK6Y6U6Y+e76eE5LqO5L2R5YG25YSq5Y+I5Y+L5Y+z5a6H5a+T5bCk5oSa5oaC5pe054mb546X55GA55uC56WQ56aR56a557SG57696IqL6JeV6Jme6L+C6YGH6YO16Yeq6ZqF6Zuo6Zup5YuW5b2n5pet5pix5qCv54Wc56i26YOB6aCK5LqR76eF5qmS5q6e5r6Q54aJ6ICY6Iq46JWTIl0sWyJlYWExIiwi6YGL6ZqV6Zuy6Z+76JSa6ayx5LqQ54aK6ZuE5YWD5Y6f5ZOh5ZyT5ZyS5Z6j5aqb5auE5a+D5oCo5oS/5o+05rKF5rS55rmy5rqQ54iw54y/55GX6IuR6KKB6L2F6YGg76eG6Zmi6aGY6bSb5pyI6LaK6Yme5L2N5YGJ5YOe5Y2x5ZyN5aeU5aiB5bCJ5oWw5pqQ5rit54iy55GL57ev6IOD6JCO6JGm6JS/6J2f6KGb6KSY6KyC6YGV6Z+L6a2P5Lmz5L6R5YSS5YWq76eH5ZSv5Zap5a265a6l5bm85bm95bq+5oKg5oOf5oSI5oSJ5o+E5pS45pyJ76eI5p+U5p+a76eJ5qWh5qWi5rK55rSn76eK5ri476eLIl0sWyJlYmExIiwi5r+h54y254y376eM55Gc55Sx76eN55mS76eO76eP57at6Ie+6JC46KOV6KqY6Kub6Kut6Liw6LmC6YGK6YC+6YG66YWJ6YeJ6Y2u76eQ76eR5aCJ76eS5q+T6IKJ6IKy76eT76eU5YWB5aWr5bC576eV76eW5r2k546n6IOk6LSH76eX6YiX6ZaP76eY76eZ76ea76eb6IG/5oiO54Cc57Wo6J6N76ec5Z6g5oGp5oWH5q636Kq+6YqA6Zqx5LmZ5ZCf5rer6JSt6Zmw6Z+z6aOu5o+W5rOj6YKR5Yed5oeJ6Ia66be55L6d5YCa5YSA5a6c5oSP5oe/5pOs5qSF5q+F55aR55+j576p6Imk6JaP6J+76KGj6Kq8Il0sWyJlY2ExIiwi6K2w6Yar5LqM5Lul5LyK76ed76ee5aS35aeo76ef5bey5byb5b2b5oCh76eg76eh76ei76ej54i+54+l76ek55Ww55eN76el56e776em6ICM6ICz6IKE6Iuh6I2R76en76eo6LK96LKz6YKH76ep76eq6aO06aSM76er76es54C355uK57+K57+M57+86Kya5Lq65LuB5YiD5Y2w76et5ZK95Zug5ae75a+F5byV5b+N5rmu76eu76ev57Wq6Iy176ew6JqT6KqN76ex6Z2t6Z2376ey76ez5LiA5L2a5L2+5aO55pel5rqi6YC46Y6w6aa55Lu75aOs5aaK5aeZ5oGB76e076e156iU76e26I2P6LOD5YWl5Y2EIl0sWyJlZGExIiwi76e376e476e55LuN5Ymp5a2V6Iq/5LuU5Yi65ZKo5aeJ5ae/5a2Q5a2X5a2c5oGj5oWI5ruL54KZ54Wu546G55O355a156OB57Sr6ICF6Ieq6Iyo6JSX6JeJ6Kuu6LOH6ZuM5L2c5Yu65Zq85par5pio54G854K454i157a96IqN6YWM6ZuA6bWy5a2x5qOn5q6Y5r2655ue5bKR5pqr5r2b566057Cq6KC26Zuc5LiI5LuX5Yyg5aC05aK75aOv5aWs5bCH5biz5bqE5by15o6M5pqy5p2W5qif5qqj5qyM5ry/54mG76e6542Q55KL56ug57Kn6IW46Ief6Ien6I6K6JGs6JSj6JaU6JeP6KOd6LST6Yas6ZW3Il0sWyJlZWExIiwi6Zqc5YaN5ZOJ5Zyo5a6w5omN5p2Q5qC95qKT5ri95ruT54G957ih6KOB6LKh6LyJ6b2L6b2O54it566P6KuN6Yya5L2H5L2O5YSy5ZKA5aeQ5bqV5oq15p215qWu5qiX5rKu5ria54uZ54yq55a9566457S16Iun6I+56JGX6Je36Kmb6LKv6LqH6YCZ6YK46ZuO6b2f5Yuj5ZCK5auh5a+C5pGY5pW15ru054uE76e755qE56mN56yb57GN57i+57+f6I276Kyr6LOK6LWk6Leh6Lmf6L+q6L+56YGp6Y+R5L2D5L265YKz5YWo5YW45YmN5Ymq5aGh5aG85aWg5bCI5bGV5bub5oKb5oiw5qCT5q6/5rCI5r6xIl0sWyJlZmExIiwi54WO55Cg55Sw55S455WR55my562M566L566t56+G57qP6Kmu6Ly+6L2J6Yi/6YqT6Yyi6ZCr6Zu76aGa6aGr6aSe5YiH5oiq5oqY5rWZ55mk56uK56+A57W25Y2g5bK+5bqX5ry454K557KY6ZyR6a6O6bue5o6l5pG66J225LiB5LqV5Lqt5YGc5YG15ZGI5aeD5a6a5bmA5bqt5bu35b6B5oOF5oy65pS/5pW05peM5pm25pm45p++5qWo5qqJ5q2j5rGA5reA5reo5rif5rme54Ce54Kh546O54+955S6552b56KH56aO56iL56m957K+57aO6ImH6KiC6Kuq6LKe6YSt6YWK6YeY6Ymm6YuM6Yyg6ZyG6Z2WIl0sWyJmMGExIiwi6Z2c6aCC6byO5Yi25YqR5ZW85aCk5bid5byf5oKM5o+Q5qKv5r+f56Wt56ys6IeN6Ja66KO96Ku46LmE6YaN6Zmk6Zqb6Zy96aGM6b2K5L+O5YWG5YeL5Yqp5Ziy5byU5b2r5o6q5pON5pep5pmB5pu65pu55pyd5qKd5qOX5qe95ryV5r2u54Wn54el54iq55Kq55y656WW56Wa56ef56ig56qV57KX57Of57WE57mw6IKH6Je76Jqk6KmU6Kq/6LaZ6LqB6YCg6YGt6Yej6Zi76ZuV6bOl5peP57CH6Laz6Y+D5a2Y5bCK5Y2S5ouZ54yd5YCn5a6X5b6e5oKw5oWr5qOV5reZ55Cu56iu57WC57ac57ix6IWrIl0sWyJmMWExIiwi6Liq6Li16Y2+6ZCY5L2Q5Z2Q5bem5bqn5oyr572q5Li75L2P5L6P5YGa5aed6IOE5ZGq5ZGo5Ze+5aWP5a6Z5bee5bua5pmd5pyx5p+x5qCq5rOo5rSy5rmK5r6N54K354+g55aH57GM57SC57Ss57ai6Iif6Jub6Ki76KqF6LWw6LqK6Lyz6YCx6YWO6YWS6ZGE6aeQ56u557Kl5L+K5YSB5YeG5Z+I5a+v5bO75pmZ5qi95rWa5rqW5r+s54SM55Wv56uj6KCi6YCh6YG16ZuL6ae/6IyB5Lit5Luy6KGG6YeN5Y295qub5qWr5rGB6JG65aKe5oaO5pu+5ouv54Od55SR55eH57mS6JK46K2J6LSI5LmL5Y+qIl0sWyJmMmExIiwi5ZKr5Zyw5Z2A5b+X5oyB5oyH5pGv5pSv5peo5pm65p6d5p6z5q2i5rGg5rKa5rys55+l56Cl56WJ56WX57SZ6IKi6ISC6Iez6Iqd6Iq36JyY6KqM76e86LSE6La+6YGy55u056iZ56i357mU6IG35ZSH5ZeU5aG15oyv5pCi5pmJ5pmL5qGt5qab5q6E5rSl5rqx54+N55Go55Kh55Wb55a555uh55ye556L56em57iJ57id6Ie76JSv6KKX6Ki66LOR6Lur6L6w6YCy6Y6t6Zmj6Zmz6ZyH5L6E5Y+x5aeq5auJ5biZ5qGO55OG55a+56ep56qS6Iaj6Jut6LOq6LeM6L+t5paf5pyV76e95Z+35r2X57ed6LyvIl0sWyJmM2ExIiwi6Y+26ZuG5b615oey5r6E5LiU5L6Y5YCf5Y+J5Zef5bWv5beu5qyh5q2k56OL566a76e+6LmJ6LuK6YGu5o2J5pC+552A56qE6Yyv6ZG/6b2q5pKw5r6v54em55Ko55Oa56uE57CS57qC57Ky57qY6K6a6LSK6ZG96aSQ6aWM5Yi55a+f5pOm5pyt57Su5YOt5Y+D5aG55oWY5oWZ5oe65pas56uZ6K6S6K6W5YCJ5YCh5Ym15ZSx5ai85bug5b2w5oS05pWe5piM5pi25pqi5qeN5ruE5ryy54yW55ih56qT6IS56ImZ6I+W6JK85YK15Z+w5a+A5a+o5b2p5o6h56Cm57a16I+c6JSh6YeH6Ye15YaK5p+1562WIl0sWyJmNGExIiwi6LKs5YeE5aa75oK96JmV5YCc76e/5YmU5bC65oW95oia5ouT5pOy5pal5ruM55ig6ISK6Lmg6Zmf6Zq75Luf5Y2D5ZaY5aSp5bed5pOF5rOJ5re6546U56m/6Iib6Jam6LOk6LiQ6YG36Yen6Zeh6Zih6Z+G5Ye45ZOy5ZaG5b655pKk5r6I57a06Lyf6L2N6ZC15YOJ5bCW5rK+5re755Sb556757C957Gk6Km56KuC5aCe5aa+5biW5o2354mS55aK552r6Kuc6LK86LyS5buz5pm05re46IG96I+B6KuL6Z2R6a+W76iA5YmD5pu/5raV5ruv57eg6Kum6YCu6YGe6auU5Yid5Ym/5ZOo5oaU5oqE5oub5qKiIl0sWyJmNWExIiwi5qSS5qWa5qi154KS54Sm56Gd56SB56SO56eS56iN6IKW6Im46IuV6I2J6JWJ6LKC6LaF6YWi6YaL6Yau5L+D5ZuR54et55+X6JyA6Ke45a+45b+W5p2R6YKo5Y+i5aGa5a+15oKk5oaB5pGg57i96IGw6JSl6YqD5pKu5YKs5bSU5pyA5aKc5oq95o6o5qSO5qW45qie5rmr55q656eL6Iq76JCp6KuP6Lao6L+96YSS6YWL6Yac6YyQ6YyY6Y6a6Zub6ai26bCN5LiR55Wc56Wd56u6562R56+J57iu6JOE6LmZ6Lm06Lu46YCQ5pil5qS/55GD5Ye65pyu6buc5YWF5b+g5rKW6J+y6KGd6KG35oK06Ia16JCDIl0sWyJmNmExIiwi6LSF5Y+W5ZC55Zi05ai25bCx54KK57+g6IGa6ISG6Iet6Laj6YaJ6amf6bey5YG05LuE5Y6g5oO75ris5bGk5L6I5YCk5Zek5bOZ5bmf5oGl5qKU5rK75reE54a+55eU55e055mh56ia56mJ57eH57e7572u6Ie06Jqp6Lyc6ZuJ6aaz6b2S5YmH5YuF6aOt6Kaq5LiD5p+S5ryG5L615a+i5p6V5rKI5rW455Cb56Cn6Yed6Y286J+E56ek56ix5b+r5LuW5ZKk5ZS+5aKu5aal5oOw5omT5ouW5py25qWV6Ii16ZmA6aax6aed5YCs5Y2T5ZWE5Z2876iB5omY76iC5pOi5pmr5p+d5r+B5r+v55Ci55C46KiXIl0sWyJmN2ExIiwi6ZC45ZGR5ZiG5Z2m5b2I5oaa5q2O54GY54Kt57a76KqV5aWq6ISr5o6i55yI6IC96LKq5aGU5pCt5qa75a6V5biR5rmv76iD6JWp5YWM5Y+w5aSq5oCg5oWL5q6G5rGw5rOw56ye6IOO6IuU6LeG6YKw6aKx76iE5pOH5r6k5pKR5pSE5YWO5ZCQ5Zyf6KiO5oWf5qG276iF55eb562S57Wx6YCa5aCG5qeM6IW/6KSq6YCA6aC55YG45aWX5aas5oqV6YCP6ayq5oWd54m56ZeW5Z2h5amG5be05oqK5pKt5pO65p235rOi5rS+54is55C256C057236Iqt6Leb6aCX5Yik5Z2C5p2/54mI55Oj6LKp6L6m6YiRIl0sWyJmOGExIiwi6Ziq5YWr5Y+t5o2M5L2p5ZSE5oKW5pWX5rKb5rW/54mM54u956iX6KaH6LKd5b2t5r6O54O56Iao5oSO5L6/5YGP5omB54mH56+H57eo57+p6YGN6Z6t6aiZ6LK25Z2q5bmz5p6w6JCN6KmV5ZCg5ayW5bmj5bui5byK5paD6IK66JS96ZaJ6Zmb5L2I5YyF5YyN5YyP5ZKG5ZO65ZyD5biD5oCW5oqb5oqx5o2V76iG5rOh5rWm55ax56Cy6IOe6ISv6Iue6JGh6JKy6KKN6KSS6YCL6Yuq6aO96a6R5bmF5pq05pud54CR54iG76iH5L+15Ym95b2q5oWT5p2T5qiZ5ryC55Oi56Wo6KGo6LG56aOH6aOE6amDIl0sWyJmOWExIiwi5ZOB56if5qWT6Ku36LGK6aKo6aau5b285oqr55ay55qu6KKr6YG/6ZmC5Yy55by85b+F5rOM54+M55Wi55aL562G6Iu+6aad5LmP6YC85LiL5L2V5Y6m5aSP5buI5piw5rKz55GV6I236J2m6LOA6YGQ6Zye6bCV5aOR5a246JmQ6KyU6ba05a+S5oGo5oKN5pex5rGX5ryi5r6j54Ca572V57+w6ZaR6ZaS6ZmQ6Z+T5Ymy6L2E5Ye95ZCr5ZK45ZWj5ZaK5qq75ra157eY6Imm6Yqc6Zm36bm55ZCI5ZOI55uS6Juk6Zak6ZeU6Zmc5Lqi5LyJ5aeu5aum5be35oGS5oqX5p2t5qGB5rKG5riv57y46IKb6IiqIl0sWyJmYWExIiwi76iI76iJ6aCF5Lql5YGV5ZKz5Z6T5aWa5a2p5a6z5oeI5qW35rW354Cj6J+56Kej6Kmy6Kun6YKC6aet6aq45Yq+5qC45YCW5bm45p2P6I2H6KGM5Lqr5ZCR5Zqu54+m6YSV6Z+/6aSJ6aWX6aaZ5ZmT5aKf6Jmb6Kix5oay5qu254276LuS5q2H6Zqq6amX5aWV54iA6LWr6Z2p5L+U5bO05bym5oe45pmb5rOr54Kr546E546554++55yp552N57WD57Wi57ij6Ii36KGS76iK6LOi6YmJ6aGv5a2R56m06KGA6aCB5auM5L+g5Y2U5aS+5bO95oy+5rW554u56ISF6ISH6I6i6YuP6aCw5Lqo5YWE5YiR5Z6LIl0sWyJmYmExIiwi5b2i5rOC5ruO54CF54GQ54Kv54aS54+p55Gp6I2K6J6i6KGh6YCI6YKi6Y6j6aao5YWu5b2X5oOg5oWn5pqz6JWZ6LmK6Yav6Z6L5LmO5LqS5ZG85aOV5aO65aW95bK15byn5oi25omI5piK5pmn5q+r5rWp5reP5rmW5ru45r6U5r+g5r+p54Gd54uQ55Cl55Ga55Og55qT56Wc57OK57ie6IOh6Iqm6JGr6JK/6JmO6Jmf6J206K236LGq6Y6s6aCA6aGl5oOR5oiW6YW35ama5piP5re35ri+55C/6a2C5b+95oOa56yP5ZOE5byY5rGe5rOT5rSq54OY57SF6Jm56KiM6bS75YyW5ZKM5ayF5qi654Gr55W1Il0sWyJmY2ExIiwi56aN56a+6Iqx6I+v6Kmx6K2B6LKo6Z2076iL5pO05pSr56K656K756mr5Li45Zaa5aWQ5a6m5bm75oKj5o+b5q2h5pml5qGT5riZ54Wl55Kw57SI6YKE6amp6bCl5rS75ruR54y+6LGB6ZeK5Yew5bmM5b6o5oGN5oO25oSw5oWM5pmD5pmE5qal5rOB5rmf5ruJ5r2i54WM55Kc55qH56+B57Cn6I2S6J2X6YGR6ZqN6buD5Yyv5Zue5bu75b6K5oGi5oKU5oe35pmm5pyD5qqc5reu5r6u54Gw542q57mq6Ia+6Iy06JuU6Kqo6LOE5YqD542y5a6W5qmr6ZCE5ZOu5ZqG5a2d5pWI5paF5puJ5qKf5raN5reGIl0sWyJmZGExIiwi54i76IK06YW16amN5L6v5YCZ5Y6a5ZCO5ZC85ZaJ5ZeF5bi/5b6M5py954Wm54+d6YCF5Yub5Yuz5aGk5aOO54SE54aP54e76Jaw6KiT5pqI6Jao5Zan5pqE54WK6JCx5Y2J5ZaZ5q+B5b2Z5b695o+u5pqJ54WH6Kux6Lyd6bq+5LyR5pC654OL55Wm6Jmn5oGk6K2O6be45YWH5Ye25YyI5rS26IO46buR5piV5qyj54KY55eV5ZCD5bG557SH6KiW5qyg5qy95q2G5ZC45oGw5rS957+V6IiI5YOW5Yee5Zac5Zmr5ZuN5aes5ayJ5biM5oaZ5oaY5oix5pme5pum54aZ54a554a654qn56an56iA576y6KmwIl1dCgovKioqLyB9KSwKLyogMTg0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gW1siODc0MCIsIuSPsOSwsuSYg+SWpuSVuPCniafktbfklrPwp7Kx5LOi8KezheOuleSctuSdhOSxh+SxgPCkir/wo5iX8KeNkvCmuovwp4OS5LGX8KqNkeSdj+SXmuSyhfCnsazktIfkqqTkmqHwpqyj54il8KWplPChqaPwo7iG8KO9oeaZjeWbuyJdLFsiODc2NyIsIue2leWknfCorrnjt7TpnLTwp6+v5a+b8KG1nuWqpOOYpfCpurDlq5Hlrrfls7zmna7olpPwqaWF55Gh55Kd46G18KG1k/Cjmp7wpoCh47usIl0sWyI4N2ExIiwi8KWjnuOrteervOm+l/CkhaHwqKSN8KOHqvCgqorwo4me5IyK6JKE6b6W6ZCv5KSw6JiT5aKW6Z2K6YiY56eQ56iy5pmg5qip6KKd55GM56+F5p6C56is5YmP6YGG45Om54+E8KW2ueeThum/h+Wes+Skr+WRjOSEsfCjmo7loJjnqbLwp62l6K6P5Jqu8Ka6iOSGgfCltpnnrq7wopK86b+I8KKTgfCik4nwopOM6b+J6JSE8KOWu+SCtOm/iuSTofCqt7/mi4Hnga7pv4siXSxbIjg4NDAiLCLjh4AiLDQsIvCghIzjh4XwoIOR8KCDjeOHhuOHh/Cgg4vwob+o44eI8KCDiuOHieOHiuOHi+OHjPCghI7jh43jh47EgMOBx43DgMSSw4nEmsOIxYzDk8eRw5Lgv7/DisyE4bq+4L+/w4rMjOG7gMOKxIHDoceOw6DJkcSTw6nEm8OoxKvDrceQw6zFjcOzx5LDssWrw7rHlMO5x5bHmMeaIl0sWyI4OGExIiwix5zDvOC/v8OqzIThur/gv7/DqsyM4buBw6rJoeKPmuKPmyJdLFsiODk0MCIsIvCqjqnwoYWFIl0sWyI4OTQzIiwi5pSKIl0sWyI4OTQ2Iiwi5Li95rud6bWO6YefIl0sWyI4OTRjIiwi8KecteaSkeS8muS8qOS+qOWFluWFtOWGnOWHpOWKoeWKqOWMu+WNjuWPkeWPmOWbouWjsOWkhOWkh+WksuWktOWtpuWunuWun+WymuW6huaAu+aWieafvuaghOahpea1jueCvOeUtee6pOe6rOe6uue7h+e7j+e7n+e8hue8t+iJuuiLj+iNr+inhuiuvuivoui9pui9p+i9riJdLFsiODlhMSIsIueQkeezvOe3jealhuerieWIpyJdLFsiODlhYiIsIumGjOeiuOmFnuiCvCJdLFsiODliMCIsIui0i+iDtvCgp6ciXSxbIjg5YjUiLCLogp/pu4fks43pt4npuIzksL7wqbe28KeAjum4ivCqhLPjl4EiXSxbIjg5YzEiLCLmuproiL7nlJkiXSxbIjg5YzUiLCLkpJHpqazpqo/pvpnnpofwqJGs8KG3ivCgl5Dwoqum5Lik5LqB5LqA5LqH5Lq/5Lur5Ly345GM5L6947mI5YCD5YKI45G945KT45Kl5YaG5aSF5Yeb5Ye85YiF5LqJ5Ym55YqQ5Yyn45eH5Y6p45WR5Y6w45WT5Y+C5ZCj45Wt45Wy45qB5ZKT5ZKj5ZK05ZK55ZOQ5ZOv5ZSY5ZSj5ZSo45aY5ZS/45al45a/5ZeX45eFIl0sWyI4YTQwIiwi8Ke2hOWUpSJdLFsiOGE0MyIsIvCgsYLwoLSV8KWEq+WWkPCis4bjp6zwoI2B6LmG8KS2uPCpk6XkgZPwqIK+55268KKwuOOotOSflfCohZ3wpqey8KS3quaTnfCgtbzwoL608KCzlfChg7Tmko3oub7woLqW8KCwi/CgvaTworKp8KiJlvCkk5MiXSxbIjhhNjQiLCLwoLWG8KmpjfCog6nkn7TwpLqn8KKzgumqsuOpp/Cpl7Tjv63jlIbwpYuH8KmflPCno4jworWE6bWu6aCVIl0sWyI4YTc2Iiwi5I+Z8KaCpeaStOWTo/CitYzwoq+K8KGBt+Onu/Chga8iXSxbIjhhYTEiLCLwppua8KaclvCnpqDmk6rwpYGS8KCxg+i5qPCihqHwqK2M8KCcsSJdLFsiOGFhYyIsIuSgi/Cghqnjv7rlobPworaNIl0sWyI4YWIyIiwi8KSXiPCgk7zwpoKX8KC9jPCgtpbllbnkgrvkjroiXSxbIjhhYmIiLCLkqrTwoqmm8KGCneiGqumjtfCgtpzmjbnjp77wop216LeA5Zqh5pG847mDIl0sWyI4YWM5Iiwi8KqYgfCguInwoquP8KKziSJdLFsiOGFjZSIsIvChg4jwo6eC46aS46iG8KiKm+OVuPCluYnwooOH5ZmS8KC8sfCisrLwqZyg45K85rC98KS4uyJdLFsiOGFkZiIsIvCnlbTworqL8KKIiPCqmZvwqLON8KC5uvCgsLTwpqCc576T8KGDj/CioIPwoqS545e78KWHo/CguozwoL6N8KC6quO+k/CgvLDwoLWH8KGFj/CguYwiXSxbIjhhZjYiLCLwoLqr8KCuqfCgtYjwoYOA8KGEveO/ufCimpbmkLLwoL6tIl0sWyI4YjQwIiwi8KOPtPCnmLnwoq+O8KC1vvCgtb/worGR8KKxleOomPCgupjwoYOH8KC8rvCqmLLwpq2Q8KizkvCotpnwqLOK6Zaq5ZOM6IuE5Za5Il0sWyI4YjU1Iiwi8Km7g+mwpumqtvCnnZ7woreu54WA6IWt6IOs5bCc8KaVsuiEtOOel+WNn/Cogr3phrbwoLu68KC4j/CgubfwoLu745ed8KS3q+OYifCgs5blmq/wop618KGDifCguJDwoLm48KGBuPChhYjwqIiH8KGRlfCgubnwpLmQ8KK2pOWplPChgJ3woYCe8KGDtfChg7blnpzwoLiRIl0sWyI4YmExIiwi8KealPCoi43woL618KC5u/Clhb7jnIPwoL628KGGgPCli5jwqoq98KSnmvChoLrwpIW38KiJvOWimeWJqOOYmvClnL3nrrLlrajkoIDkrKzpvKfkp6fpsJ/pro3wpa208KOEveWXu+OXsuWaieS4qOWkgvChr4Hwr6G46Z2R8KCChuS5m+S6u+OUvuWwo+W9keW/hOOjuuaJjOaUteatuuawteawuueBrOeIq+S4rOeKrfCko6nnvZLnpLvns7nnvZPwpomq45OBIl0sWyI4YmRlIiwi8KaNi+iAguiCgPCmmJLwpqWR5Y2d6KGk6KeB8KeisuiuoOi0nemShemVuOmVv+mXqPCouI/pn6bpobXpo47po57ppaPwqaCQ6bG86bif6buE5q2v76SH5Li38KCCh+mYneaIt+mSoiJdLFsiOGM0MCIsIuWAu+a3vvCpsbPpvqbjt4nooo/wpIWO54G35bO15Kyg8KWHjeOVmfCltLDmhKLwqKiy6L6n6Ye254aR5pyZ54668KOKgfCqhIfjsovwoaaA5KyQ56Ok55CC5Yau8Kicj+SAieapo/CqirrkiKPomI/woKmv56iq8Kmlh/Coq6rpnZXngY3ljKTwooG+6Y+055uZ8Kino+m+p+efneS6o+S/sOWCvOS4r+S8l+m+qOWQtOe2i+WikuWjkPChtrblupLlupnlv4LwopyS5paLIl0sWyI4Y2ExIiwi8KOPueakmeapg/CjsaPms78iXSxbIjhjYTciLCLniIDwpJSF546M47ub8KSok+WsleeSueiug/ClsqTwpZqV56qT56+s57OD57ms6Iu46JaX6b6p6KKQ6b6q6Lq56b6r6L+P6JWf6aeg6Yih6b6s8Ki2ufChkL/kgbHkiqLlqJoiXSxbIjhjYzkiLCLpoajmnavkibblnL0iXSxbIjhjY2UiLCLol5bwpKW76Iq/8KeEjeSygfCmtbTltbvwpqyV8Ka+vum+rem+ruWulum+r+abp+e5m+a5l+eniuO2iOSTg/CjiZbwop6W5I6a5JS2Il0sWyI4Y2U2Iiwi5bOV8KOsmuirueWxuOO0kvCjlZHltbjpvrLnhZfklZjwpIOs8KG4o+Sxt+OluOORivCghqTwprGB6KuM5L608KCIueWmv+iFrOmhlvCpo7rlvLsiXSxbIjhkNDAiLCLwoK6fIl0sWyI4ZDQyIiwi8KKHgfCopa3khILkmrvwqYG547yH6b6z8KqGteSDuOOfluSbt/CmsYbkhbzwqJqy8KePv+SVreOjlPClkprklaHklJvktonksbvktbbkl6rjv4jwpKyP45mh5JOe5JK95Iet5bS+5bWI5bWW47e846CP5bak5ba546Cg46C45bmC5bq95byl5b6D46SI46SU46S/46WN5oOX5oS95bOl46aJ5oa35oa55oeP46a45ois5oqQ5oul5oyY46e45ZqxIl0sWyI4ZGExIiwi46iD5o+i5o+75pCH5pGa46mL5pOA5bSV5Zih6b6f46qX5paG46q95pe/5pmT46uy5pqS46yi5pyW462C5p6k5qCA462Y5qGK5qKE462y462x46275qSJ5qWD54mc5qWk5qaf5qaF46685qeW46+d5qml5qm05qmx5qqC46+s5qqZ46+y5qqr5qq15quU5qu25q6B5q+B5q+q5rG15rKq47OL5rSC5rSG5rSm5raB47Ov5rak5rax5riV5riY5rip5rqG8KingOa6u+a7oua7mum9v+a7qOa7qea8pOa8tOO1hvCjvYHmvoHmvr7jtarjtbXnhrflspnjtorngKzjtpHngZDngZTnga/ngb/ngonwoIyl5I+B45ex8KC7mCJdLFsiOGU0MCIsIvCju5flnr7wpruT54S+8KWfoOOZjuamovCor6nlrbTnqYnwpaOh8KmTmeeppeepvfClpqznqrvnqrDnq4Lnq4Pnh5HwppKN5IeK56ua56ud56uq5Iev5ZKy8KWwgeesi+etleesqfCljI7wpbO+566i562v6I6c8KWutPCmsb/nr5DokKHnrpLnrrjwpbSg47at8KWxpeiSkuevuuewhuewtfCls4HnsYTnsoPwpKKC57Km5pm98KSVuOezieezh+ezpuextOezs+ezteezjiJdLFsiOGVhMSIsIue5p+SUnfCmuYTntZ3wpruW55KN57aJ57ar54S157az57eS8KSBl/CmgKnnt6TjtJPnt7XwoZ+557el8KiNree4nfCmhKHwpoWa57mu57qS5Iyr6ZGs57in572A572B572H56S28KaLkOmnoee+l/CmjZHnvqPwoZmh8KCBqOSVnPCjnabklIPwqIy657+68KaSieiAheiAiOiAneiAqOiAr/CqgofwprOD6IC76IC86IGh8KKclOSmifCmmKbwo7ej8KabqOacpeiCp/CoqYjohIfohJrlorDwopu25rG/8KaSmPCkvrjmk6fwoZKK6IiY8KGhnuapk/CkqaXwpKqV5JG66Iip8KCsjfCmqZLwo7W+5L+58KGTveiTouiNovCmrIrwpKan8KOUsPChnbPwo7e46Iqq5qSb8K+mlOSHmyJdLFsiOGY0MCIsIuiVi+iLkOiMmvCguJbwoZ6045uB8KOFvfCjlZroibvoi6LojJjwo7qL8Ka2o/CmrIXwpq6X8KOXjuO2v+iMneWXrOiOheSUi/CmtqXojqzoj4Hoj5Pjkb7wpruU5qmX6JWa45KW8Ka5gvCiu6/okZjwpa+k6JGx47eT5JOk5qqn6JGK8KOyteelmOiSqPCmrpbwprm38Ka5g+iTnuiQj+iOkeSSoOiSk+iTpPClspHkiYDwpbOA5JWD6JS05auy8Ka6meSUp+iVs+SUluaev+iYliJdLFsiOGZhMSIsIvComKXwqJi76JeB8KeCiOiYgvChloLwp4ON8K+msuSVquiYqOOZiPChoqLlj7fwp46a6Jm+6J2x8KqDuOifrvCisKfonrHon5rooI/lmaHomazmoZbkmI/ooYXooYbwp5eg8KO2ufCnl6TooZ7oopzkmZvoorToorXmj4Hoo4Xnnbfwp5yP6KaH6KaK6Kam6Kap6Kan6Ka88Kiopeinp/CnpKTwp6q96Kqc556T6Ye+6KqQ8KepmeerqfCnrLrwo76P5JyT8KesuOeFvOisjOisn/ClkLDwpZWl6Ky/6K2M6K2N6Kqp8KSpuuiukOium+iqr/Chm5/kmJXooY/ospvwp7WU8Ke2j/Cvp5TjnKXwp7WT6LOW8Ke2mPCntr3otJLotIPwoaSQ6LOb54Gc6LSR8KSzieO7kOi1tyJdLFsiOTA0MCIsIui2qfCogILwoYCU8KSmiuOtvPCohrzwp4SM56un6Lqt6Lq26LuD6YuU6LyZ6Lyt8KiNpfCokJLovqXpjIPwqoqf8KCpkOi+s+SkqvCop57wqJS98KO2u+W7uPCjiaLov7nwqoCU8KiavPColIHwooyl46aA8Ka7l+mAt/ColLzwp6q+6YGh8KiVrPComIvpgqjwqJyT6YOE8KibpumCrumDvemFp+OrsOmGqemHhOeyrPCopLPwobqJ6YiO5rKf6YmB6Ymi8KWWuemKufCoq4bwo7Kb8KisjPCll5siXSxbIjkwYTEiLCLwoLSx6Yys6Y2r8KirofCor6vngo/lq4PwqKui8KirpeSlpemJhPCor6zwqLC58Kivv+mNs+mRm+i6vOmWhemWpumQpumWoOa/tuSKufCimbrwqJuY8KGJvPCjuK7kp5/msJzpmbvpmpbkhazpmqPwpruV5oea6Zq256O18KiroOmaveWPjOSmofCmsrjwoIm08KaQkPCpgq/wqYOl8KSrkfChpJXwo4yK6Zyx6JmC6Zy25KiP5JS95JaF8KSrqeeBteWtgemcm+mdnPCph5XpnZflrYrwqYer6Z2f6ZCl5YOQ8KOCt/Cjgrzpnonpnp/pnrHpnr7pn4Dpn5Lpn6DwpZGs6Z+u55Cc8KmQs+mfv+mftfCpkJ3wp6W65KuR6aC06aCz6aGL6aGm46yO8KeFteO1kfCgmLDwpIWcIl0sWyI5MTQwIiwi8KWchumjiumit+mjiOmjh+Srv/CmtKfwoZuT5Zaw6aOh6aOm6aOs6Y246aS58KSoqeStsvCpoZfwqaSF6ae16aiM6ai76aiQ6amY8KWcpeObhPCpgrHwqa+V6aug6aui8KmshemrtOSwjumslOmsrfComIDlgLTprLTwpqao46OD8KOBvemtkOmtgPCptL7lqYXwoaGj6a6O8KSJi+mwgumvv+mwjPCpuajpt5Twqb638KqGkvCqhqvwqoOh8KqEo/Cqh5/ptb7ptoPwqoS06biO5qKIIl0sWyI5MWExIiwi6beE8KKFm/CqhpPwqoig8KGku/CqiLPptLnwqoK58KqKtOm6kOm6lem6num6ouS0tOm6qum6r/CkjaTpu4HjraDjp6XjtJ3kvLLjnr7wqLCr6byC6byI5K6W6ZCk8Ka2oum8l+m8lum8ueWan+Waium9hemmuPCpgovpn7Lokb/pvaLpvannq5zpvo7niJbkrr7wpKW18KSmu+eFt/Ckp7jwpI2I8KSpkeeOnvCor5rwoaO656af8KilvvCouLbpjanpj7PwqKmE6Yus6Y6B6Y+L8KilrPCkkrnniJfju6vnnbLnqYPng5DwpJGz8KSPuOeFvvChn6/ngqPwoaK+8KOWmeO7h/ChooXwpZCv8KGfuOOcovChm7vwoaC545uh8KGdtPCho5Hwpb2L45yj8KGbgOWdm/CkqKXwoY++8KGKqCJdLFsiOTI0MCIsIvChj4bwoZK26JSD8KOapuiUg+iRlfCkppTwp4Wl8KO4sfCllZzwo7u78KeBkuSTtPCjm67wqaad8Ka8puafueOcs+OwleO3p+WhrPChpKLmoJDkgZfwo5y/8KSDofCkgovwpISP8KawoeWTi+WanvCmmrHlmpLwoL+f8KCuqPCguI3pj4bwqKyT6Y6c5Lu45YSr46CZ8KSQtuS6vPCgkaXwoI2/5L2L5L6K8KWZkeWpqPCghqvwoI+L46aZ8KCMivCgkJTjkLXkvKnwoIuA8Ki6s/CgibXoq5rwoIiM5LqYIl0sWyI5MmExIiwi5YON5YSN5L6i5LyD8KSojvCjuorkvYLlgK7lgazlgoHkv4zkv6XlgZjlg7zlhZnlhZvlhZ3lhZ7mubbwo5aV8KO4ufCjur/mtbLwoaKE8KO6ieWGqOWHg/Cgl6Dkk53woJKj8KCSkvCgkpHotbrwqKqc8KCcjuWJmeWKpPCgobPli6Hpja7kmbrnhozwpI6M8KCwoPCkpqzwoYOk5qeR8KC4neeRueO7nueSmeeQlOeRlueOmOSujvCkqrzwpIKN5Y+Q45aE54iP8KSDieWWtPCgjYXlk43woK+G5Zyd6Ymd6Zu06Y2m5Z+d5Z6N5Z2/45i+5aOL5aqZ8KiphvChm7rwoZ2v8KGckOWorOWmuOmKj+WpvuWrj+WokvClpYbwoaez8KGhofCkipXjm7XmtIXnkYPlqKHwpbqDIl0sWyI5MzQwIiwi5aqB8Kivl/CgkJPpj6DnkozwoYyD54SF5KWy6ZCI8Kinu+mOveOeoOWwnuWynuW5nuW5iPChppbwoaW88KOrruW7jeWtj/ChpIPwoaSE45yB8KGioOObnfChm77jm5PohKrwqKmH8KG2uvCjkbLwqKao5byM5byO8KGkp/ChnqvlqavwoZy75a2E6JiU8KeXveihoOaBvvCioaDwopir5b+b47q48KKWr/Cilr7wqYKI8Ka9s+aHgPCggL7woIGG8KKYm+aGmeaGmOaBtfCispvworSH8KSblPCphY0iXSxbIjkzYTEiLCLmkbHwpJml8KKtquOoqfCirKLwo5GQ8KmjqvCiubjmjLfwqpGb5pK25oyx5o+R8KSno/CitafmiqTworKh5pC75pWr5qWy46+08KOCjvCjiq3wpKaJ8KOKq+WUjfCji6DwoaOZ8KmQv+abjvCjionwo4az46ug5IaQ8KWWhPCorKLwpZaP8KGbvPCllZvwpZCl56Ou8KOEg/ChoKrwo4i045Gk8KOIj/CjhoLwpIuJ5pqO8Ka0pOaZq+Suk+aYsPCnobDwober5pmj8KOLkvCji6HmmJ7wpaGy46OR8KOguvCjnrzjrpnwo56i8KOPvueTkOOuluaej/CkmKrmorbmoJ7jr4Tmqr7joaPwo5+V8KSSh+aos+apkuarieashfChpJLmlJHmopjmqYzjr5fmqbrmrZfwo7+A8KOymumOoOmLsvCor6rwqKuLIl0sWyI5NDQwIiwi6YqJ8KiAnvCop5zpkafmtqXmvIvwpKes5rWn8KO9v+O2j+a4hPCkgLzlqL3muIrloYfmtKTnoYLnhLvwpIya8KSJtueDseeJkOeKh+eKlPCkno/wpJyl5YW58KSqpPCgl6vnkbrwo7u48KOZn/CkqYrwpKSX8KW/oeO8huO6sfCkq5/wqLCj8KO8teaCp+O7s+eTjOeQvOmOh+eQt+SSn/Cmt6rklZHnloPjvaPwpLOZ8KS0huO9mOeVleeZs/Cql4bjrJnnkajwqKuM8KSmq/Ckpo7jq7siXSxbIjk0YTEiLCLjt43wpKmO47u/8KSnhfCko7Pph7rlnLLpjYLwqKuj8KGhpOWDn/CliKHwpYen55248KOIsuecjuecj+edu/Ckmpfwo56B46me8KSjsOeQuOeSm+O6v/CkqrrwpKuH5IOI8KSqlvCmhq7pjIfwpZaB56Ce56KN56KI56OS54+Q56WZ8KedgfClm6PkhI7nppvokpbnpqXmqK3wo7u656i656e05IWu8KGbpuSEsumIteensfCgtYzwpKaM8KCKmfCjtrrwoZ2u45aX5ZWr45Ww45qq8KCHlPCgsI3nq6LlqZnwopu18KWqr/ClqpzlqI3woImb56Ow5aiq8KWvhuervuSHueexneexreSIkfClrrPwpbq88KW6puezjfCkp7nwoZ6w57KO57G857Ku5qqy57ec57iH57eT572O8KaJoSJdLFsiOTU0MCIsIvCmhZzwp62I57aX8KW6guSJqvCmrbXwoKSW5p+W8KCBjvCjl4/ln4TwppCS8KaPuPCkpaLnv53nrKfwoKCs8KWrqfCltYPnrIzwpbiO6aem6JmF6amj5qic8KOQv+OnovCkp7fwppat6aif8KaWoOiSgPCnhKfwprOR5JOq6IS35JCC6IOG6ISJ6IWC8KaetOmjg/CmqYLoiaLoiaXwpqmR6JGT8Ka2p+iYkPCniJvlqobkhb/woaGA5ayr8KGioeWrpPCho5jomqDwr6a88KO2j+igrfCnkKLlqIIiXSxbIjk1YTEiLCLooa7kvYXooofoor/oo6bopaXopY3wpZqD6KWU8KeehfCnnoTwqK+18KivmfCorpzwqKe547qt6JKj5Ju15JuP45+y6Ki96Kic8KmRiOW9jemIq/CkioTml5TnhKnng4TwoaGF6bWt6LKf6LOp8Ke3nOWmmuefg+WnsOSNruOblOi4qui6p/CksInovLDovYrki7TmsZjmvrvwooyh5KKb5r255rqL8KGfmumvqeOatfCkpK/pgrvpgpfllbHkpIbphrvpkITwqKmL5IGi8KirvOmQp/CosJ3wqLC76JOl6Kir6ZaZ6Zan6ZaX6ZaW8Ki0tOeRheO7gvCko7/wpKmC8KSPquO7p/CjiKXpmo/wqLun8Ki5pvCouaXju4zwpKet8KSpuPCjv67nkJLnkavju7zpnYHwqYKwIl0sWyI5NjQwIiwi5qGH5Kid8KmCk/Cln5/pnZ3pjajwqKaJ8KiwpvCorK/wpo6+6Yq65ayR6K2p5KS854+58KSIm+mem+mdsemkuPCgvKblt4HwqK+F8KSqsumgn/Cpk5rpi7bwqZeX6Yel5JOA8KitkPCkqafwqK2k6aOc8KipheO8gOmIquSkpeiQlOmku+mljfCnrIbjt73pppvkra/ppqrpqZzwqK2l8KWjiOaqj+mooeWrvumor/Cpo7HkrpDwqaWI6aa85K695K6X6Y295aGy8KGMguWgovCkprgiXSxbIjk2YTEiLCLwoZOo56GE8KKcn/Cjtrjmo4Xjtb3pkZjjpKfmhZDwop6B8KKlq+aEh+mxj+mxk+mxu+mwtemwkOmtv+mvj/CpuK3prp/wqoe18KqDvum0oeSyrvCkhITpuJjksrDptIzwqoa08KqDrfCqg7PwqaSv6bal6JK98Ka4kvCmv5/wpq6C6Je85JSz8Ka2pPCmuoTwprew6JCg6Jeu8Ka4gPCjn5fwpoGk56ei8KOWnPCjmYDkpK3wpKee47Wi6Y+b6Yq+6Y2I8KCKv+eiuemJt+mRjeS/pOORgOmBpPCllZ3noL3noZTnorbnoYvwoZ2X8KOHifCkpYHjmprkvbLmv5rmv5nngJ7ngJ7lkJTwpIa15Z675aOz5Z6K6bSW5Z+X54S045Kv8KSGrOeHq/CmsYDwpL6X5ayo8KGetfCoqYkiXSxbIjk3NDAiLCLmhIzlq47lqIvkirzwpJKI45ys5K278KinvOmOu+mOuPCho5bwoLyd6JGy8KazgPChkJPwpIu68KKwpvCkj4HlppTwo7a38Kadgee2qPCmhZvwpoKk8KSmufCkpovwqKe66Yul54+i47up55K08Kito/Chop/ju6HwpKqz5quY54+z54+747uW8KSovvCkqpTwoZ+Z8KSppvCgjqfwoZCk8KSnpeeRiPCkpJbngqXwpKW26YqE54+m6Y2f8KCTvumMsfCoq47wqKiW6Y6G8Kivp/Cll5XkpLXwqKqC54WrIl0sWyI5N2ExIiwi8KSlg/Cgs7/lmqTwoJia8KCvq/CgsrjllILnp4TwoZ+657e+8KGbgvCkqZDwoaGS5JSu6ZCB45yK8KirgPCkpq3lprDwoaK/8KGig/CnkoTlqqHjm6Lwo7Wb45qw6Ymf5am58KiqgfChoaLpjbTjs43woKq05KqW46aK5YO047Wp47WM8KGOnOeFteSLu/CoiJjmuI/wqYOk5JOr5rWX8Ke5j+eBp+ayr+OzlvCjv63wo7it5riC5ryM47Wv8KCPteeVkeOavOOTiOSagOO7muShseWnhOmJruSkvui9gfCosJzwpq+A5aCS5Z+I45uW8KGRkueDvvCkjaLwpKmx8KK/o/ChirDwoo695qK55qWn8KGOmPCjk6Xwp6+08KObn/CoqoPwo5+W8KOPuvCksp/mqJrwo5qt8Kayt+iQvuSTn+STjiJdLFsiOTg0MCIsIvCmtKbwprWR8KaygvCmv57mvJfwp4SJ6Iy98KGcuuiPrfCmsoDwp4GT8KGfm+WmieWqgvChnrPlqaHlqbHwoaSF8KSHvOOcreWnr/ChnLzjm4fnho7pjpDmmprwpIql5amu5air8KSKk+aoq/Cju7nwp5y28KSRm/Cki4rnhJ3wpImZ8KinoeS+sPCmtKjls4LwpJOO8Ke5jfCkjr3mqIzwpImW8KGMhOeCpueEs/Ckj6njtqXms5/wr6Cl8KSpj+e5peWnq+W0r+O3s+W9nPCkqZ3woZ+f57ak6JCmIl0sWyI5OGExIiwi5ZKF8KOruvCjjIDwoIiU5Z2+8KCjlfCgmJnjv6Xwob6e8KqKtueAg/CphZvltbDnjo/ns5PwqKmZ8KmQoOS/iOe/p+eLjeeMkPCnq7TnjLjnjLnwpZu2542B542I47qp8KesmOmBrOeHtfCko7Lnj6Hoh7bju4rnnIzju5HmsqLlm73nkJnnkJ7nkJ/ju6Lju7Dju7Tju7rnk5PjvI7jvZPnlYLnla3nlbLnlo3jvbznl4jnl5zjv4DnmY3jv5fnmbTjv5znmbrwpL2c54aI5Zij6KaA5aGp5ICd552D5IC55p2h5IGF45eb556Y5IGq5IGv5bGe556+55+L5aOy56CY54K556Cc5IKo56C556GH56GR56Gm6JGI8KWUteeks+agg+eksuSEgyJdLFsiOTk0MCIsIuSEieemkeemmei+u+eohui+vOSFp+eqkeSGsueqvOiJueSHhOerj+erm+SHj+S4oeetouetrOetu+ewkuewm+SJoOSJuuexu+eynOSKjOeyuOSKlOezrei+k+eDgPCgs4/nt4/nt5Tnt5Dnt73nvq7nvrTnip/kjpfogKDogKXnrLnogK7ogLHogZTjt4zlnrTngqDogrfog6nkj63ohIznjKrohI7ohJLnlaDohJTkkIHjrLnohZbohZnohZoiXSxbIjk5YTEiLCLkkJPloLrohbzohoTkkKXohpPkkK3ohqXln6/oh4Hoh6ToiZTkko/oiqboibboi4roi5joi7/kkrDojZfpmanmporokIXng7XokaTmg6PokojklITokr7ok6Hok7jolJDolLjolZLklLvola/olbDol6DklbfombLompLomrLom6/pmYXonovkmIbkmJfooq7oo7/opKTopYfoppHwp6Wn6Kip6Ki46KqU6Kq06LGR6LOU6LOy6LSc5J6Y5aGf6LeD5J+t5Luu6Li65ZeY5Z2U6Lmx5Ze16Lqw5KC36LuO6Lui6Luk6Lut6Luy6L636L+B6L+K6L+M6YCz6aeE5KKt6aOg6YiT5KSe6Yio6YmY6Ymr6Yqx6Yqu6Yq/Il0sWyI5YTQwIiwi6Yuj6Yur6Yuz6Yu06Yu96Y2D6Y6E6Y6t5KWF5KWR6bq/6ZCX5YyB6ZCd6ZCt6ZC+5KWq6ZGU6ZG56ZSt6Zai5Kan6Ze06Ziz5Kel5p6g5Kik6Z2A5Ki16Z6y6Z+C5ZmU5Kuk5oOo6aK55KyZ6aOx5aGE6aSO6aSZ5Ya06aSc6aS36aWC6aWd6aWi5K2w6aeF5K6d6ai86ayP56qD6a2p6a6B6a+d6a+x6a+05LGt6bCg452v8KGvgum1iemwuiJdLFsiOWFhMSIsIum7vuWZkOm2k+m2vem3gOm3vOmTtui+tum5u+m6rOm6sem6vem7humTnOm7oum7sem7uOeriOm9hPCggpTwoIq38KCOoOakmumTg+WmrPCgk5floYDpk4HjnrnwoJeV8KCYlfCgmbbwoZq65Z2X54Wz8KCrgvCgq43woK6/5ZGq8K+gu/Cgr4vlkp7woK+78KCwu/CgsZPwoLGl8KCxvOaDp/Cgso3lmbrwoLK18KCznfCgs63woLWv8KC2svCgt4jmpZXpsK/onqXwoLiE8KC4jvCgu5fwoL6Q8KC8rfCgubPlsKDwoL685biL8KGBnPChgY/woYG25pye8KGBu/ChgojwoYKW45mH8KGCv/Chg5PwoYSv8KGEu+WNpOiSrfChi6PwoY218KGMtuiugfChlbfwoZiZ8KGfg/Chn4fkubjngrvwoaCt8KGlqiJdLFsiOWI0MCIsIvChqK3woamF8KGwqvChsbDwobKs8KG7iOaLg/Chu5XwobyV54aY5qGV8KKBheanqeObiPCiibzwoo+X8KKPuvCinKrwoqGx8KKlj+iLvfCipafwoqaT8KKrleimpfCiq6jovqDwoqyO6Z648KKsv+mhh+mqvfCisYwiXSxbIjliNjIiLCLworKI8KKyt/Clr6jworSI8KK0kvCitrfworaV8KK5gvCivbTwor+M8KOAs/Cjgabwo4yf8KOPnuW+seaZiOaav/Cnqbnwo5Wn8KOXs+eIgfCkprrnn5fwo5ia8KOclue6h/CgjYblorXmnI4iXSxbIjliYTEiLCLmpJjwo6qn8KeZl/Clv6Lwo7iR8KO6ufCnl77wooKa5KOQ5Kq48KSEmfCoqprwpIuu8KSMjfCkgLvwpIy08KSOlvCkqYXwoJeK5YeS8KCYkeWmn/Chuqjjrr7wo7O/8KSQhPCkk5blnojwpJm046ab8KScr/Col6jwqaeJ452i8KKHg+itnvCorY7pp5bwpKCS8KSju/CkqJXniInwpKuA8KCxuOWlpfCkuqXwpL6G8KCduei7mvClgKzlio/lnL/nhbHwpYqZ8KWQmfCjvYrwpKqn5Za88KWRhvClka7wpq2S6YeU45Gz8KWUv/CnmLLwpZWe5JyY8KWVovCllabwpZ+H8KSkv/CloZ3lgabjk7vwo4+M5oOe8KWkg+SdvPCopYjwpaqu8KWuifClsIbwobaQ5Z6h54WR5r628KaEgvCnsJLpgZbwpoay8KS+muitovCmkILwppGKIl0sWyI5YzQwIiwi5bWb8Kavt+i8tvCmkoTwoaSc6Kuq8KSntvCmkojwo7+v8KaUkuSvgPCmlr/wppq18KKcm+mRpfCln6HmhpXlqKfwr6ON5L675Zq58KSUofCmm7zkuarwpKS06ZmW5raP8KayveOYmOilt/CmnpnwpqGu8KaQkfCmoZ7nh5/wpqOH562C8KmDgPCgqJHwpqSm6YSE8Kakueephem3sPCmp7rpqKbwpqit45mf8KaRqfCggKHnpoPwpqi08Katm+W0rPCjlJnoj4/wpq6d5JuQ8KaypOeUu+ihpfCmtq7lorYiXSxbIjljYTEiLCLjnJzwopaN8KeBi/Cnh43jsZTwp4qA8KeKhemKgfCihbrwp4qL6Yyw8KeLpvCkp5DmsLnpkp/wp5GQ8KC7uOigp+ijtfCipKbwqJGz8KGesea6uPCkqKrwoaCg46ak45q55bCQ56ej5JS/5pq28KmyrfCpoqTopYPwp5+M8KehmOWbluSDn/ChmIrjpqHwo5yv8KiDqPChj4Xnhq3ojabwp6ed8KmGqOWpp+Syt/Cngq/wqKar8KenvfCnqIrwp6yL8Ke1pvCkhbrnrYPnpb7wqICJ5r618KqLn+aog/CojJjljqLwpriH6Y6/5qC26Z2d8KiFr/CogKPwpqa18KGPrfCjiK/wqIGI5baF8KiwsPCogoPlnJXpoKPwqKWJ5bar8KSmiOaWvuanleWPkvCkqqXwo76B47CR5py28KiCkPCog7TwqISu8KG+ofCohY8iXSxbIjlkNDAiLCLwqIaJ8KiGr/CoiJrwqIyG8KiMr/Cojorjl4rwqJGo8KiaquSjuuaPpvCopZbnoIjpiZXwqKa45I+y8Kinp+SPn/Cop6jwqK2G8KivlOWnuPCosInovIvwqL+F8KmDrOetkfCphJDwqYS847e38KmFnvCkq4rov5Dnio/lmovwqZOn8KmXqfCplrDwqZa48KmcsvCpo5HwqaWJ8KmlqvCpp4Pwqaio8KmsjvCptZrwqbab57qf8Km7uPCpvKPksqTplYfwqoqT54ai8KqLv+S2kemAkvCql4vktpzwoLKc6L6+5ZeBIl0sWyI5ZGExIiwi6L668KKSsOi+ufCkqpPklInnub/mvZbmqrHku6rjk6TwqKys8KeineOcuui6gPChn7XwqICk8KitrPCorpnwp6i+8Kaar+O3q/CnmZXwo7K38KWYtfClpZbkuprwpbqB8KaJmOWav/Cgua3ouI7lra3wo7qI8KSynuaPnuaLkPChn7bwoaG75pSw5Zit8KWxiuWQmvCljJHjt4bwqbaY5LG95Zii5Zie572J8KW7mOWltfCjtYDonbDkuJzwoL+q8KC1ifCjmrrohJfptZ7otJjnmLvpsYXnmY7nnrnpjYXlkLLohYjoi7flmKXohLLokJjogr3ll6rnpaLlmYPlkJbwoLqd45eO5ZiF5Zex5pux8KiLouOYreeUtOWXsOWWuuWSl+WVsvCgsYHwoLKW5buQ8KWFiPCgubbworGiIl0sWyI5ZTQwIiwi8KC6oum6q+e1muWXnvChgbXmip3pna3lkpTos43nh7bphbbmj7zmjrnmj77llanwoq2D6bGy8KK6s+WGmuOTn/CgtqflhqflkY3llJ7llJPnmabouK3wpqKK55ax6IK26KCE6J6G6KOH6Ia26JCc8KGDgeSTrOeMhPCknIblrpDojIvwpqKT5Zm78KKbtPCntK/wpIaj8Ke1s/Cmu5Dwp4q26YWw8KGHmemIiPCjs7zwqpqp8KC6rPCgu7nniabwobKi5J2O8KS/gvCnv7nwoL+r5IO6Il0sWyI5ZWExIiwi6bGd5pSf8KK2oOSjs/Ckn6DwqbW88KC/rPCguIrmgaLwp5aj8KC/rSJdLFsiOWVhZCIsIvCmgYjwoYaH54aj57qO6bWQ5Lia5LiE45W35ayN5rKy5Y2n45qs46ec5Y2945ql8KSYmOWimvCkra7oiK3lkYvlnqrwpaqV8KCluSJdLFsiOWVjNSIsIuOpkvCikaXnjbTwqbqs5LSJ6a+t8KOzvvCpvLDksZvwpL6p8KmWnvCpv57okZzwo7a28KeKsvCmnrPwo5yg5oyu57Sl8KO7t/CjuKzjqKrpgIjli4zjubTjmbrkl6nwoJKO55mA5auw8KC6tuehuvCnvK7loqfkgr/lmbzprovltbTnmZTwqpC06bqF5LOh55e545+75oSZ8KODmvCkj7IiXSxbIjllZjUiLCLlmZ3woYqp5Z6n8KSlo/CpuIbliLTwp4Ku45at5rGK6bW8Il0sWyI5ZjQwIiwi57GW6ay55Z+e8KGdrOWxk+aTk/Cpk5Dwpoy18KeFpOiarfCgtKjwprSi8KSrovCgtbEiXSxbIjlmNGYiLCLlh77wobyP5baO6ZyD8KG3kem6gemBjOesn+msguWzkeeuo+aJqOaMtemrv+evj+msquexvumsruexgueyhumwleevvOmsiem8l+mwm/CkpL7pvZrllbPlr4Pkv73pupjkv7LliaDjuIbli5HlnaflgZblprfluJLpn4jptqvovZzlkanpnrTppYDpnrrljKzmhLAiXSxbIjlmYTEiLCLmpKzlj5rpsIrptILksLvpmYHmpoDlgqbnlYbwoZ2t6aea5YmzIl0sWyI5ZmFlIiwi6YWZ6ZqB6YWcIl0sWyI5ZmIyIiwi6YWR8Ki6l+aNv/CmtKPmq4rlmJHpho7nlbrmioXwoI+8542P57Gw8KWwofCjs70iXSxbIjlmYzEiLCLwpKSZ55uW6a6d5Liq8KCzlOiOvuihgiJdLFsiOWZjOSIsIuWxiuangOWDreWduuWIn+W3teS7juawsfCgh7LkvLnlkpzlk5rliprotoLjl77lvIzjl7MiXSxbIjlmZGIiLCLmrZLphbzpvqXprpfpoK7porTpqrrpuqjpuoTnhbrnrJQiXSxbIjlmZTciLCLmr7rooJjnvbgiXSxbIjlmZWIiLCLlmKDwqpmK6Lm36b2TIl0sWyI5ZmYwIiwi6LeU6LmP6bic6LiB5oqC8KiNvei4qOi5teerk/CkqbfnqL7no5jms6roqafnmIciXSxbImEwNDAiLCLwqKma6bym5rOO6J+W55eD8KqKsuehk/CvoYDotIzni6LnjbHorK3njILnk7Hos6vwpKq76Jiv5b666KKg5JK3Il0sWyJhMDU1Iiwi8KGgu/CmuIUiXSxbImEwNTgiLCLoqb7wopSbIl0sWyJhMDViIiwi5oO955mn6auX6bWE6Y2u6a6P6J+1Il0sWyJhMDYzIiwi6KCP6LO354ys6Zyh6a6w45eW54qy5LCH57GR6aWK8KaFmeaFmeSwhOm6luaFvSJdLFsiYTA3MyIsIuWdn+aFr+aKpuaIueaLjuOpnOaHouWOqvCjj7XmjaTmoILjl5IiXSxbImEwYTEiLCLltZfwqK+C6L+a8Ki4uSJdLFsiYTBhNiIsIuWDmfChtYbnpIbljLLpmLjwoLy75IGlIl0sWyJhMGFlIiwi55++Il0sWyJhMGIwIiwi57OC8KW8muezmueoreiBpuiBo+e1jeeUheeTsuimlOiImuacjOiBovCnkobogZvnk7DohIPnnKToponwpp+M55WT8Ka7keieqeifjuiHiOiejOipieiyreitg+ecq+eTuOiTmuOYteamsui2piJdLFsiYTBkNCIsIuimqeeRqOa2ueifgfCkgJHnk6fjt5vnhbbmgqTmhpzjs5HnhaLmgbciXSxbImEwZTIiLCLnvbHwqKyt54mQ5oOp5K2+5Yig47CY8KOzh/Clu5fwp5mW8KWUsfChpYTwoYu+8Kmkg/Cmt5zwp4Kt5bOB8KaGrfCoqI/wo5m38KCDrvCmoYbwpLyO5JWi5ayf8KaNjOm9kOm6pvCmiasiXSxbImEzYzAiLCLikIAiLDMxLCLikKEiXSxbImM2YTEiLCLikaAiLDksIuKRtCIsOSwi4oWwIiw5LCLkuLbkuL/kuoXkuqDlhoLlhpblhqvli7nljLjljanljrblpIrlroDlt5vivLPlub/lu7TlvZDlvaHmlLTml6DnlpLnmbbovrXpmrbCqMuG44O944O+44Kd44Ke44CD5Lud44CF44CG44CH44O877y777y94py944GBIiwyM10sWyJjNzQwIiwi44GZIiw1OCwi44Kh44Ki44Kj44KkIl0sWyJjN2ExIiwi44KlIiw4MSwi0JAiLDUsItCB0JYiLDRdLFsiYzg0MCIsItCbIiwyNiwi0ZHQtiIsMjUsIuKHp+KGuOKGueOHj/Cgg4zkuZrwoIKK5YiC5JKRIl0sWyJjOGExIiwi6b6w5YaI6b6x8KeYhyJdLFsiYzhjZCIsIu+/ou+/pO+8h++8guOIseKEluKEoeOCm+OCnOK6gOK6hOK6huK6h+K6iOK6iuK6jOK6jeK6leK6nOK6neK6peK6p+K6quK6rOK6ruK6tuK6vOK6vuK7huK7iuK7jOK7jeK7j+K7luK7l+K7nuK7oyJdLFsiYzhmNSIsIsqDyZDJm8mUybXFk8O4xYvKismqIl0sWyJmOWZlIiwi77+tIl0sWyJmYTQwIiwi8KCVh+mLm/Cgl5/wo7+F6JWM5Iq154+v5Ya145mJ8KSlgvCop6TpjYTwoaeb6Iuu8KOziOegvOadhOaLn/CkpLPwqKaq8KCKoPCmrrPwoYyF5L6r8KKTreWAiPCmtKnwp6qE8KOYgPCkqrHwopST5YCp8KCNvuW+pPCgjoDwoI2H5rub8KCQn+WBveWEgeORuuWEjumhrOOdg+iQlvCkpqTwoJKH5YWg8KOOtOWFqvCgr7/wooO88KCLpfCilLDwoJaO8KOIs/ChpoPlroLonb3woJaz8KOymeWGsuWGuCJdLFsiZmFhMSIsIum0tOWHieWHj+WHkeOznOWHk/CkqqblhrPlh6LljYLlh63oj43mpL7wo5yt5b275YiL5Yim5Yi85Yq15YmX5YqU5Yq55YuF57CV6JWC5Yug6JiN8Kask+WMhfCoq57llYnmu5nwo76A8KCllPCjv6zljLPljYTwoK+i5rOL8KGcpuagm+ePleaBiuO6quOjjPChm6jnh53kkqLlja3ljbTwqJqr5Y2+5Y2/8KGWlvChmJPnn6bljpPwqKqb5Y6g5Y6r5Y6u546n8KWdsuO9meeOnOWPgeWPheaxieS5ieWfvuWPmeOqq/Cgro/lj6Dwo7+r8KK2o+WPtvCgsbflkJPngbnllKvmmZfmtZvlka3wpq2T8KC1tOWVneWSj+WSpOSepvChnI3woLud47a08KC1jSJdLFsiZmI0MCIsIvCoprzwopqY5ZWH5LOt5ZCv55CX5ZaG5Zap5ZiF8KGjl/CkgLrklZLwpJC15pqz8KGCtOWYt+abjfCjiormmqTmmq3lmY3lmY/no7Hlm7Hpnoflj77lnIDlm6/lm63wqK2m45ij8KGJj+WdhvCkhqXmsa7ngovlnYLjmrHwprG+5Z+m8KGQluWgg/ChkZTwpI2j5aCm8KSvteWhnOWiquOVoeWjoOWjnPChiLzlo7vlr7/lnYPwqoWQ8KSJuOmPk+OWoeWkn+aipuObg+a5mSJdLFsiZmJhMSIsIvChmL7lqKTllZPwoZqS6JSF5aeJ8KC1jvCmsoHwprSq8KGfnOWnmfChn7vwoZ6y8Ka2pua1sfChoKjwoZuV5ae58Ka5heWqq+Wpo+ObpvCkpqnlqbfjnIjlqpbnkaXlq5Pwpr6h8KKVlOO2hfChpJHjnLLwoZq45bqD5YuQ5a225paI5a288KeojuSAhOShnfCgiITlr5XmhaDwoai08KWnjPCglqXlr7Plrp3ktJDlsIXwoa2E5bCT54+O5bCU8KGypfCmrKjlsYnko53lsoXls6nls6/ltovwobe58KG4t+W0kOW0mOW1hvChuqTlsrrlt5foi7zjoK3wpKSB8KKBifCihbPoiofjoLbjr4LluK7mqorlubXlubrwpJK88KCzk+WOpuS6t+W7kOWOqPChnbHluInlu7TwqJKCIl0sWyJmYzQwIiwi5bu55bu746Kg5bu85qC+6ZCb5byN8KCHgfCvopTjq57koq7woYy65by68KaiiPCij5DlvZjwopGx5b2j6Z698Ka5ruW9sumNgPCoqLblvqfltrbjtZ/wpYmQ8KG9qvCng7jwopmo6YeW8KCKnvCoqKnmgLHmmoXwoaG346Wj47eH45i55Z6Q8KKetOelseO5gOaCnuaCpOaCs/CkpoLwpKaP8Kepk+eSpOWDoeWqoOaFpOiQpOaFgvCvoqbwpruS5oaB5Ye08KCZluaGh+WuqvCjvrciXSxbImZjYTEiLCLwoqGf5oeT8KiunfCppZ3mh5DjpLLwoqaA8KKjgeaAo+aFnOaUnuaOi/CghJjmi4XwoZ2w5ouV8KK4jeaNrPCkp5/jqJfmkLjmj7jwoY6O8KGfvOaSkOa+ivCiuLbpoJTwpIKM8KWcneaToeaTpemRu+OppuaQuuOpl+aVjea8lvCkqKjwpKij5paF5pWt5pWf8KOBvuaWtfCkpYDkrLfml5Hkg5jwoaCp5peg5pej5b+f8KOQgOaYmPCjh7fwo4e45pmE8KOGpPCjhqXmmYvwoLm15pmn8KWHpuaZs+aZtPChuL3wo4ix8KiXtPCjh4jwpYyT55+F8KKjt+mmpOacgvCkjpzwpKih46yr5qe68KOfguadnuadp+adovCkh43wqYOt5p+X5JOp5qCi5rmQ6Yi85qCB8KOPpvCmtqDmoZ0iXSxbImZkNDAiLCLwo5Gv5qeh5qiL8Kirn+als+ajg/Cjl43mpIHmpIDjtLLjqIHwo5i8466A5p6s5qWh8KipiuSLvOaktuammOOuofCgj4nojaPlgpDmp7nwo5mZ8KKEquaphfCjnIPmqp3jr7PmnrHmq4jwqYac47CN5qyd8KCko+aDnuasteattPCin43murXwo6ub8KCOtfChpZjjnYDlkKHwo62a5q+h8KO7vOavnOawt/CikovwpKOx8KatkeaxmuiIpuaxufCjtrzkk4Xwo7a98KSGpPCkpIzwpKSAIl0sWyJmZGExIiwi8KOzieObpeOzq/CgtLLproPwo4e58KKSkee+j+agt/CmtKXwprah8Ka3q+a2lua1nOa5vOa8hPCkpb/wpIKF8Ka5suiUs/CmvbTlh4fmspzmuJ3okK7wqKyh5riv8KO4r+eRk/CjvoLnp4zmuY/lqpHwo4GL5r+445yN5r6d8KO4sOa7uvChkpfwpIC95JWV6Y+w5r2E5r2c47WO5r208KmFsOO0u+a+n/CkhYTmv5PwpIKR8KSFlfCkgLnwo7+w8KO+tPCkhL/lh5/wpIWW8KSFl/CkhYDwpoed54GL54G+54Kn54KB54OM54OV54OW54Of5ISE47eo54a054aW8KSJt+eEq+eFheWqiOeFiueFruWynPCkjaXnhY/pjaLwpIuB54Ss8KSRmvCkqKfwpKii54a68KivqOeCveeIjiJdLFsiZmU0MCIsIumRgueIleWkkemRg+eIpOmNgfClmIXniK7niYDwpKW05qK954mV54mX47mV8KOBhOagjea8veeKgueMqueMq/CkoKPwqKCr5KOt8KighOeMqOeMruePj+eOqvCgsLrwpqiu54+J55GJ8KSHovChm6fwpKik5pij45uF8KSmt/Ckpo3wpKe754+355CV5qSD8KSopueQufCgl4Pju5fnkZzwoqKt55Gg8Ki6sueRh+ePpOeRtuiOueeRrOOcsOeRtOmPseaorOeSguSlk/CkqowiXSxbImZlYTEiLCLwpIWf8KSpufCoro/lrYbwqLCD8KGinueTiPChpojnlI7nk6nnlJ7wqLuZ8KGpi+Wvl/CouqzpjoXnlY3nlYrnlafnla7wpL6C47yE8KS0k+eWjueRneeWnueWtOeYgueYrOeZkeeZj+eZr+eZtvCmj7XnmpDoh6/jn7jwpqSR8Kakjueaoeeapeeat+ebjPCmvp/okaLwpYKd8KWFvfChuJznnJ7nnKbnnYDmkq/wpYig552Y8KOKrOeer/CopaTwqKWo8KGbgeeftOegifChjbbwpKiS5qOK56Kv56OH56OT6Zql56Su8KWXoOejl+ektOeisfCnmIzovrjoooTwqKyr8KaCg/CimJznpobopIDmpILnpoDwpaGX56ad8KesueekvOemqea4qvCnhKbjuqjnp4bwqYSN56eUIl1dCgovKioqLyB9KSwKLyogMTg1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgp2YXIgQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIsCiAgICBUcmFuc2Zvcm0gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KS5UcmFuc2Zvcm07CgoKLy8gPT0gRXhwb3J0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpY29udikgewogICAgCiAgICAvLyBBZGRpdGlvbmFsIFB1YmxpYyBBUEkuCiAgICBpY29udi5lbmNvZGVTdHJlYW0gPSBmdW5jdGlvbiBlbmNvZGVTdHJlYW0oZW5jb2RpbmcsIG9wdGlvbnMpIHsKICAgICAgICByZXR1cm4gbmV3IEljb252TGl0ZUVuY29kZXJTdHJlYW0oaWNvbnYuZ2V0RW5jb2RlcihlbmNvZGluZywgb3B0aW9ucyksIG9wdGlvbnMpOwogICAgfQoKICAgIGljb252LmRlY29kZVN0cmVhbSA9IGZ1bmN0aW9uIGRlY29kZVN0cmVhbShlbmNvZGluZywgb3B0aW9ucykgewogICAgICAgIHJldHVybiBuZXcgSWNvbnZMaXRlRGVjb2RlclN0cmVhbShpY29udi5nZXREZWNvZGVyKGVuY29kaW5nLCBvcHRpb25zKSwgb3B0aW9ucyk7CiAgICB9CgogICAgaWNvbnYuc3VwcG9ydHNTdHJlYW1zID0gdHJ1ZTsKCgogICAgLy8gTm90IHB1Ymxpc2hlZCB5ZXQuCiAgICBpY29udi5JY29udkxpdGVFbmNvZGVyU3RyZWFtID0gSWNvbnZMaXRlRW5jb2RlclN0cmVhbTsKICAgIGljb252Lkljb252TGl0ZURlY29kZXJTdHJlYW0gPSBJY29udkxpdGVEZWNvZGVyU3RyZWFtOwogICAgaWNvbnYuX2NvbGxlY3QgPSBJY29udkxpdGVEZWNvZGVyU3RyZWFtLnByb3RvdHlwZS5jb2xsZWN0Owp9OwoKCi8vID09IEVuY29kZXIgc3RyZWFtID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZnVuY3Rpb24gSWNvbnZMaXRlRW5jb2RlclN0cmVhbShjb252LCBvcHRpb25zKSB7CiAgICB0aGlzLmNvbnYgPSBjb252OwogICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICBvcHRpb25zLmRlY29kZVN0cmluZ3MgPSBmYWxzZTsgLy8gV2UgYWNjZXB0IG9ubHkgc3RyaW5ncywgc28gd2UgZG9uJ3QgbmVlZCB0byBkZWNvZGUgdGhlbS4KICAgIFRyYW5zZm9ybS5jYWxsKHRoaXMsIG9wdGlvbnMpOwp9CgpJY29udkxpdGVFbmNvZGVyU3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVHJhbnNmb3JtLnByb3RvdHlwZSwgewogICAgY29uc3RydWN0b3I6IHsgdmFsdWU6IEljb252TGl0ZUVuY29kZXJTdHJlYW0gfQp9KTsKCkljb252TGl0ZUVuY29kZXJTdHJlYW0ucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbihjaHVuaywgZW5jb2RpbmcsIGRvbmUpIHsKICAgIGlmICh0eXBlb2YgY2h1bmsgIT0gJ3N0cmluZycpCiAgICAgICAgcmV0dXJuIGRvbmUobmV3IEVycm9yKCJJY29udiBlbmNvZGluZyBzdHJlYW0gbmVlZHMgc3RyaW5ncyBhcyBpdHMgaW5wdXQuIikpOwogICAgdHJ5IHsKICAgICAgICB2YXIgcmVzID0gdGhpcy5jb252LndyaXRlKGNodW5rKTsKICAgICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGgpIHRoaXMucHVzaChyZXMpOwogICAgICAgIGRvbmUoKTsKICAgIH0KICAgIGNhdGNoIChlKSB7CiAgICAgICAgZG9uZShlKTsKICAgIH0KfQoKSWNvbnZMaXRlRW5jb2RlclN0cmVhbS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24oZG9uZSkgewogICAgdHJ5IHsKICAgICAgICB2YXIgcmVzID0gdGhpcy5jb252LmVuZCgpOwogICAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCkgdGhpcy5wdXNoKHJlcyk7CiAgICAgICAgZG9uZSgpOwogICAgfQogICAgY2F0Y2ggKGUpIHsKICAgICAgICBkb25lKGUpOwogICAgfQp9CgpJY29udkxpdGVFbmNvZGVyU3RyZWFtLnByb3RvdHlwZS5jb2xsZWN0ID0gZnVuY3Rpb24oY2IpIHsKICAgIHZhciBjaHVua3MgPSBbXTsKICAgIHRoaXMub24oJ2Vycm9yJywgY2IpOwogICAgdGhpcy5vbignZGF0YScsIGZ1bmN0aW9uKGNodW5rKSB7IGNodW5rcy5wdXNoKGNodW5rKTsgfSk7CiAgICB0aGlzLm9uKCdlbmQnLCBmdW5jdGlvbigpIHsKICAgICAgICBjYihudWxsLCBCdWZmZXIuY29uY2F0KGNodW5rcykpOwogICAgfSk7CiAgICByZXR1cm4gdGhpczsKfQoKCi8vID09IERlY29kZXIgc3RyZWFtID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZnVuY3Rpb24gSWNvbnZMaXRlRGVjb2RlclN0cmVhbShjb252LCBvcHRpb25zKSB7CiAgICB0aGlzLmNvbnYgPSBjb252OwogICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICBvcHRpb25zLmVuY29kaW5nID0gdGhpcy5lbmNvZGluZyA9ICd1dGY4JzsgLy8gV2Ugb3V0cHV0IHN0cmluZ3MuCiAgICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTsKfQoKSWNvbnZMaXRlRGVjb2RlclN0cmVhbS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFRyYW5zZm9ybS5wcm90b3R5cGUsIHsKICAgIGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBJY29udkxpdGVEZWNvZGVyU3RyZWFtIH0KfSk7CgpJY29udkxpdGVEZWNvZGVyU3RyZWFtLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24oY2h1bmssIGVuY29kaW5nLCBkb25lKSB7CiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpCiAgICAgICAgcmV0dXJuIGRvbmUobmV3IEVycm9yKCJJY29udiBkZWNvZGluZyBzdHJlYW0gbmVlZHMgYnVmZmVycyBhcyBpdHMgaW5wdXQuIikpOwogICAgdHJ5IHsKICAgICAgICB2YXIgcmVzID0gdGhpcy5jb252LndyaXRlKGNodW5rKTsKICAgICAgICBpZiAocmVzICYmIHJlcy5sZW5ndGgpIHRoaXMucHVzaChyZXMsIHRoaXMuZW5jb2RpbmcpOwogICAgICAgIGRvbmUoKTsKICAgIH0KICAgIGNhdGNoIChlKSB7CiAgICAgICAgZG9uZShlKTsKICAgIH0KfQoKSWNvbnZMaXRlRGVjb2RlclN0cmVhbS5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24oZG9uZSkgewogICAgdHJ5IHsKICAgICAgICB2YXIgcmVzID0gdGhpcy5jb252LmVuZCgpOwogICAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCkgdGhpcy5wdXNoKHJlcywgdGhpcy5lbmNvZGluZyk7ICAgICAgICAgICAgICAgIAogICAgICAgIGRvbmUoKTsKICAgIH0KICAgIGNhdGNoIChlKSB7CiAgICAgICAgZG9uZShlKTsKICAgIH0KfQoKSWNvbnZMaXRlRGVjb2RlclN0cmVhbS5wcm90b3R5cGUuY29sbGVjdCA9IGZ1bmN0aW9uKGNiKSB7CiAgICB2YXIgcmVzID0gJyc7CiAgICB0aGlzLm9uKCdlcnJvcicsIGNiKTsKICAgIHRoaXMub24oJ2RhdGEnLCBmdW5jdGlvbihjaHVuaykgeyByZXMgKz0gY2h1bms7IH0pOwogICAgdGhpcy5vbignZW5kJywgZnVuY3Rpb24oKSB7CiAgICAgICAgY2IobnVsbCwgcmVzKTsKICAgIH0pOwogICAgcmV0dXJuIHRoaXM7Cn0KCgoKLyoqKi8gfSksCi8qIDE4NiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cgp2YXIgQnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXI7CgovLyA9PSBFeHRlbmQgTm9kZSBwcmltaXRpdmVzIHRvIHVzZSBpY29udi1saXRlID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaWNvbnYpIHsKICAgIHZhciBvcmlnaW5hbCA9IHVuZGVmaW5lZDsgLy8gUGxhY2UgdG8ga2VlcCBvcmlnaW5hbCBtZXRob2RzLgoKICAgIC8vIE5vZGUgYXV0aG9ycyByZXdyb3RlIEJ1ZmZlciBpbnRlcm5hbHMgdG8gbWFrZSBpdCBjb21wYXRpYmxlIHdpdGgKICAgIC8vIFVpbnQ4QXJyYXkgYW5kIHdlIGNhbm5vdCBwYXRjaCBrZXkgZnVuY3Rpb25zIHNpbmNlIHRoZW4uCiAgICBpY29udi5zdXBwb3J0c05vZGVFbmNvZGluZ3NFeHRlbnNpb24gPSAhKG5ldyBCdWZmZXIoMCkgaW5zdGFuY2VvZiBVaW50OEFycmF5KTsKCiAgICBpY29udi5leHRlbmROb2RlRW5jb2RpbmdzID0gZnVuY3Rpb24gZXh0ZW5kTm9kZUVuY29kaW5ncygpIHsKICAgICAgICBpZiAob3JpZ2luYWwpIHJldHVybjsKICAgICAgICBvcmlnaW5hbCA9IHt9OwoKICAgICAgICBpZiAoIWljb252LnN1cHBvcnRzTm9kZUVuY29kaW5nc0V4dGVuc2lvbikgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCJBQ1RJT04gTkVFREVEOiByZXF1aXJlKCdpY29udi1saXRlJykuZXh0ZW5kTm9kZUVuY29kaW5ncygpIGlzIG5vdCBzdXBwb3J0ZWQgaW4geW91ciB2ZXJzaW9uIG9mIE5vZGUiKTsKICAgICAgICAgICAgY29uc29sZS5lcnJvcigiU2VlIG1vcmUgaW5mbyBhdCBodHRwczovL2dpdGh1Yi5jb20vYXNodHVjaGtpbi9pY29udi1saXRlL3dpa2kvTm9kZS12NC1jb21wYXRpYmlsaXR5Iik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBub2RlTmF0aXZlRW5jb2RpbmdzID0gewogICAgICAgICAgICAnaGV4JzogdHJ1ZSwgJ3V0ZjgnOiB0cnVlLCAndXRmLTgnOiB0cnVlLCAnYXNjaWknOiB0cnVlLCAnYmluYXJ5JzogdHJ1ZSwgCiAgICAgICAgICAgICdiYXNlNjQnOiB0cnVlLCAndWNzMic6IHRydWUsICd1Y3MtMic6IHRydWUsICd1dGYxNmxlJzogdHJ1ZSwgJ3V0Zi0xNmxlJzogdHJ1ZSwKICAgICAgICB9OwoKICAgICAgICBCdWZmZXIuaXNOYXRpdmVFbmNvZGluZyA9IGZ1bmN0aW9uKGVuYykgewogICAgICAgICAgICByZXR1cm4gZW5jICYmIG5vZGVOYXRpdmVFbmNvZGluZ3NbZW5jLnRvTG93ZXJDYXNlKCldOwogICAgICAgIH0KCiAgICAgICAgLy8gLS0gU2xvd0J1ZmZlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIHZhciBTbG93QnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKS5TbG93QnVmZmVyOwoKICAgICAgICBvcmlnaW5hbC5TbG93QnVmZmVyVG9TdHJpbmcgPSBTbG93QnVmZmVyLnByb3RvdHlwZS50b1N0cmluZzsKICAgICAgICBTbG93QnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7CiAgICAgICAgICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nIHx8ICd1dGY4JykudG9Mb3dlckNhc2UoKTsKCiAgICAgICAgICAgIC8vIFVzZSBuYXRpdmUgY29udmVyc2lvbiB3aGVuIHBvc3NpYmxlCiAgICAgICAgICAgIGlmIChCdWZmZXIuaXNOYXRpdmVFbmNvZGluZyhlbmNvZGluZykpCiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuU2xvd0J1ZmZlclRvU3RyaW5nLmNhbGwodGhpcywgZW5jb2RpbmcsIHN0YXJ0LCBlbmQpOwoKICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb3VyIGRlY29kaW5nIG1ldGhvZC4KICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGFydCA9PSAndW5kZWZpbmVkJykgc3RhcnQgPSAwOwogICAgICAgICAgICBpZiAodHlwZW9mIGVuZCA9PSAndW5kZWZpbmVkJykgZW5kID0gdGhpcy5sZW5ndGg7CiAgICAgICAgICAgIHJldHVybiBpY29udi5kZWNvZGUodGhpcy5zbGljZShzdGFydCwgZW5kKSwgZW5jb2RpbmcpOwogICAgICAgIH0KCiAgICAgICAgb3JpZ2luYWwuU2xvd0J1ZmZlcldyaXRlID0gU2xvd0J1ZmZlci5wcm90b3R5cGUud3JpdGU7CiAgICAgICAgU2xvd0J1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykgewogICAgICAgICAgICAvLyBTdXBwb3J0IGJvdGggKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKQogICAgICAgICAgICAvLyBhbmQgdGhlIGxlZ2FjeSAoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0LCBsZW5ndGgpCiAgICAgICAgICAgIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKGxlbmd0aCkpIHsKICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7ICAvLyBsZWdhY3kKICAgICAgICAgICAgICAgIHZhciBzd2FwID0gZW5jb2Rpbmc7CiAgICAgICAgICAgICAgICBlbmNvZGluZyA9IG9mZnNldDsKICAgICAgICAgICAgICAgIG9mZnNldCA9IGxlbmd0aDsKICAgICAgICAgICAgICAgIGxlbmd0aCA9IHN3YXA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG9mZnNldCA9ICtvZmZzZXQgfHwgMDsKICAgICAgICAgICAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0OwogICAgICAgICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICAgICAgICAgbGVuZ3RoID0gcmVtYWluaW5nOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbGVuZ3RoID0gK2xlbmd0aDsKICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPiByZW1haW5pbmcpIHsKICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSByZW1haW5pbmc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcgfHwgJ3V0ZjgnKS50b0xvd2VyQ2FzZSgpOwoKICAgICAgICAgICAgLy8gVXNlIG5hdGl2ZSBjb252ZXJzaW9uIHdoZW4gcG9zc2libGUKICAgICAgICAgICAgaWYgKEJ1ZmZlci5pc05hdGl2ZUVuY29kaW5nKGVuY29kaW5nKSkKICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5TbG93QnVmZmVyV3JpdGUuY2FsbCh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZyk7CgogICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYXR0ZW1wdCB0byB3cml0ZSBiZXlvbmQgYnVmZmVyIGJvdW5kcycpOwoKICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb3VyIGVuY29kaW5nIG1ldGhvZC4KICAgICAgICAgICAgdmFyIGJ1ZiA9IGljb252LmVuY29kZShzdHJpbmcsIGVuY29kaW5nKTsKICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGggPCBsZW5ndGgpIGxlbmd0aCA9IGJ1Zi5sZW5ndGg7CiAgICAgICAgICAgIGJ1Zi5jb3B5KHRoaXMsIG9mZnNldCwgMCwgbGVuZ3RoKTsKICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKICAgICAgICB9CgogICAgICAgIC8vIC0tIEJ1ZmZlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgICAgICAgb3JpZ2luYWwuQnVmZmVySXNFbmNvZGluZyA9IEJ1ZmZlci5pc0VuY29kaW5nOwogICAgICAgIEJ1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24oZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5pc05hdGl2ZUVuY29kaW5nKGVuY29kaW5nKSB8fCBpY29udi5lbmNvZGluZ0V4aXN0cyhlbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICBvcmlnaW5hbC5CdWZmZXJCeXRlTGVuZ3RoID0gQnVmZmVyLmJ5dGVMZW5ndGg7CiAgICAgICAgQnVmZmVyLmJ5dGVMZW5ndGggPSBTbG93QnVmZmVyLmJ5dGVMZW5ndGggPSBmdW5jdGlvbihzdHIsIGVuY29kaW5nKSB7CiAgICAgICAgICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nIHx8ICd1dGY4JykudG9Mb3dlckNhc2UoKTsKCiAgICAgICAgICAgIC8vIFVzZSBuYXRpdmUgY29udmVyc2lvbiB3aGVuIHBvc3NpYmxlCiAgICAgICAgICAgIGlmIChCdWZmZXIuaXNOYXRpdmVFbmNvZGluZyhlbmNvZGluZykpCiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuQnVmZmVyQnl0ZUxlbmd0aC5jYWxsKHRoaXMsIHN0ciwgZW5jb2RpbmcpOwoKICAgICAgICAgICAgLy8gU2xvdywgSSBrbm93LCBidXQgd2UgZG9uJ3QgaGF2ZSBhIGJldHRlciB3YXkgeWV0LgogICAgICAgICAgICByZXR1cm4gaWNvbnYuZW5jb2RlKHN0ciwgZW5jb2RpbmcpLmxlbmd0aDsKICAgICAgICB9CgogICAgICAgIG9yaWdpbmFsLkJ1ZmZlclRvU3RyaW5nID0gQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZzsKICAgICAgICBCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHsKICAgICAgICAgICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcgfHwgJ3V0ZjgnKS50b0xvd2VyQ2FzZSgpOwoKICAgICAgICAgICAgLy8gVXNlIG5hdGl2ZSBjb252ZXJzaW9uIHdoZW4gcG9zc2libGUKICAgICAgICAgICAgaWYgKEJ1ZmZlci5pc05hdGl2ZUVuY29kaW5nKGVuY29kaW5nKSkKICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbC5CdWZmZXJUb1N0cmluZy5jYWxsKHRoaXMsIGVuY29kaW5nLCBzdGFydCwgZW5kKTsKCiAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgdXNlIG91ciBkZWNvZGluZyBtZXRob2QuCiAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RhcnQgPT0gJ3VuZGVmaW5lZCcpIHN0YXJ0ID0gMDsKICAgICAgICAgICAgaWYgKHR5cGVvZiBlbmQgPT0gJ3VuZGVmaW5lZCcpIGVuZCA9IHRoaXMubGVuZ3RoOwogICAgICAgICAgICByZXR1cm4gaWNvbnYuZGVjb2RlKHRoaXMuc2xpY2Uoc3RhcnQsIGVuZCksIGVuY29kaW5nKTsKICAgICAgICB9CgogICAgICAgIG9yaWdpbmFsLkJ1ZmZlcldyaXRlID0gQnVmZmVyLnByb3RvdHlwZS53cml0ZTsKICAgICAgICBCdWZmZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpIHsKICAgICAgICAgICAgdmFyIF9vZmZzZXQgPSBvZmZzZXQsIF9sZW5ndGggPSBsZW5ndGgsIF9lbmNvZGluZyA9IGVuY29kaW5nOwogICAgICAgICAgICAvLyBTdXBwb3J0IGJvdGggKHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKQogICAgICAgICAgICAvLyBhbmQgdGhlIGxlZ2FjeSAoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0LCBsZW5ndGgpCiAgICAgICAgICAgIGlmIChpc0Zpbml0ZShvZmZzZXQpKSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKGxlbmd0aCkpIHsKICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7ICAvLyBsZWdhY3kKICAgICAgICAgICAgICAgIHZhciBzd2FwID0gZW5jb2Rpbmc7CiAgICAgICAgICAgICAgICBlbmNvZGluZyA9IG9mZnNldDsKICAgICAgICAgICAgICAgIG9mZnNldCA9IGxlbmd0aDsKICAgICAgICAgICAgICAgIGxlbmd0aCA9IHN3YXA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVuY29kaW5nID0gU3RyaW5nKGVuY29kaW5nIHx8ICd1dGY4JykudG9Mb3dlckNhc2UoKTsKCiAgICAgICAgICAgIC8vIFVzZSBuYXRpdmUgY29udmVyc2lvbiB3aGVuIHBvc3NpYmxlCiAgICAgICAgICAgIGlmIChCdWZmZXIuaXNOYXRpdmVFbmNvZGluZyhlbmNvZGluZykpCiAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luYWwuQnVmZmVyV3JpdGUuY2FsbCh0aGlzLCBzdHJpbmcsIF9vZmZzZXQsIF9sZW5ndGgsIF9lbmNvZGluZyk7CgogICAgICAgICAgICBvZmZzZXQgPSArb2Zmc2V0IHx8IDA7CiAgICAgICAgICAgIHZhciByZW1haW5pbmcgPSB0aGlzLmxlbmd0aCAtIG9mZnNldDsKICAgICAgICAgICAgaWYgKCFsZW5ndGgpIHsKICAgICAgICAgICAgICAgIGxlbmd0aCA9IHJlbWFpbmluZzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGxlbmd0aCA9ICtsZW5ndGg7CiAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID4gcmVtYWluaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gcmVtYWluaW5nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpCiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYXR0ZW1wdCB0byB3cml0ZSBiZXlvbmQgYnVmZmVyIGJvdW5kcycpOwoKICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCB1c2Ugb3VyIGVuY29kaW5nIG1ldGhvZC4KICAgICAgICAgICAgdmFyIGJ1ZiA9IGljb252LmVuY29kZShzdHJpbmcsIGVuY29kaW5nKTsKICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGggPCBsZW5ndGgpIGxlbmd0aCA9IGJ1Zi5sZW5ndGg7CiAgICAgICAgICAgIGJ1Zi5jb3B5KHRoaXMsIG9mZnNldCwgMCwgbGVuZ3RoKTsKICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKCiAgICAgICAgICAgIC8vIFRPRE86IFNldCBfY2hhcnNXcml0dGVuLgogICAgICAgIH0KCgogICAgICAgIC8vIC0tIFJlYWRhYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICBpZiAoaWNvbnYuc3VwcG9ydHNTdHJlYW1zKSB7CiAgICAgICAgICAgIHZhciBSZWFkYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLlJlYWRhYmxlOwoKICAgICAgICAgICAgb3JpZ2luYWwuUmVhZGFibGVTZXRFbmNvZGluZyA9IFJlYWRhYmxlLnByb3RvdHlwZS5zZXRFbmNvZGluZzsKICAgICAgICAgICAgUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RW5jb2RpbmcoZW5jLCBvcHRpb25zKSB7CiAgICAgICAgICAgICAgICAvLyBVc2Ugb3VyIG93biBkZWNvZGVyLCBpdCBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlLgogICAgICAgICAgICAgICAgLy8gV2UgY2Fubm90IHVzZSBvcmlnaW5hbCBmdW5jdGlvbiBhcyBpdCBkb2Vzbid0IGhhbmRsZSBCT00tcy4KICAgICAgICAgICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2RlciA9IGljb252LmdldERlY29kZXIoZW5jLCBvcHRpb25zKTsKICAgICAgICAgICAgICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2RpbmcgPSBlbmM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFJlYWRhYmxlLnByb3RvdHlwZS5jb2xsZWN0ID0gaWNvbnYuX2NvbGxlY3Q7CiAgICAgICAgfQogICAgfQoKICAgIC8vIFJlbW92ZSBpY29udi1saXRlIE5vZGUgcHJpbWl0aXZlIGV4dGVuc2lvbnMuCiAgICBpY29udi51bmRvRXh0ZW5kTm9kZUVuY29kaW5ncyA9IGZ1bmN0aW9uIHVuZG9FeHRlbmROb2RlRW5jb2RpbmdzKCkgewogICAgICAgIGlmICghaWNvbnYuc3VwcG9ydHNOb2RlRW5jb2RpbmdzRXh0ZW5zaW9uKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgaWYgKCFvcmlnaW5hbCkKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJyZXF1aXJlKCdpY29udi1saXRlJykudW5kb0V4dGVuZE5vZGVFbmNvZGluZ3MoKTogTm90aGluZyB0byB1bmRvOyBleHRlbmROb2RlRW5jb2RpbmdzKCkgaXMgbm90IGNhbGxlZC4iKQoKICAgICAgICBkZWxldGUgQnVmZmVyLmlzTmF0aXZlRW5jb2Rpbmc7CgogICAgICAgIHZhciBTbG93QnVmZmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKS5TbG93QnVmZmVyOwoKICAgICAgICBTbG93QnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IG9yaWdpbmFsLlNsb3dCdWZmZXJUb1N0cmluZzsKICAgICAgICBTbG93QnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IG9yaWdpbmFsLlNsb3dCdWZmZXJXcml0ZTsKCiAgICAgICAgQnVmZmVyLmlzRW5jb2RpbmcgPSBvcmlnaW5hbC5CdWZmZXJJc0VuY29kaW5nOwogICAgICAgIEJ1ZmZlci5ieXRlTGVuZ3RoID0gb3JpZ2luYWwuQnVmZmVyQnl0ZUxlbmd0aDsKICAgICAgICBCdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gb3JpZ2luYWwuQnVmZmVyVG9TdHJpbmc7CiAgICAgICAgQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IG9yaWdpbmFsLkJ1ZmZlcldyaXRlOwoKICAgICAgICBpZiAoaWNvbnYuc3VwcG9ydHNTdHJlYW1zKSB7CiAgICAgICAgICAgIHZhciBSZWFkYWJsZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpLlJlYWRhYmxlOwoKICAgICAgICAgICAgUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gb3JpZ2luYWwuUmVhZGFibGVTZXRFbmNvZGluZzsKICAgICAgICAgICAgZGVsZXRlIFJlYWRhYmxlLnByb3RvdHlwZS5jb2xsZWN0OwogICAgICAgIH0KCiAgICAgICAgb3JpZ2luYWwgPSB1bmRlZmluZWQ7CiAgICB9Cn0KCgovKioqLyB9KSwKLyogMTg3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBBcnJheVQsIExhenlBcnJheSwgTGF6eUFycmF5VCwgTnVtYmVyVCwgaW5zcGVjdCwgdXRpbHMsCiAgICBfX2hhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eSwKICAgIF9fZXh0ZW5kcyA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoX19oYXNQcm9wLmNhbGwocGFyZW50LCBrZXkpKSBjaGlsZFtrZXldID0gcGFyZW50W2tleV07IH0gZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9IGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTsgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTsgY2hpbGQuX19zdXBlcl9fID0gcGFyZW50LnByb3RvdHlwZTsgcmV0dXJuIGNoaWxkOyB9OwoKICBBcnJheVQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkzKTsKCiAgTnVtYmVyVCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpLk51bWJlcjsKCiAgdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTsKCiAgaW5zcGVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNDkpLmluc3BlY3Q7CgogIExhenlBcnJheVQgPSAoZnVuY3Rpb24oX3N1cGVyKSB7CiAgICBfX2V4dGVuZHMoTGF6eUFycmF5VCwgX3N1cGVyKTsKCiAgICBmdW5jdGlvbiBMYXp5QXJyYXlUKCkgewogICAgICByZXR1cm4gTGF6eUFycmF5VC5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgIH0KCiAgICBMYXp5QXJyYXlULnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIHBhcmVudCkgewogICAgICB2YXIgbGVuZ3RoLCBwb3MsIHJlczsKICAgICAgcG9zID0gc3RyZWFtLnBvczsKICAgICAgbGVuZ3RoID0gdXRpbHMucmVzb2x2ZUxlbmd0aCh0aGlzLmxlbmd0aCwgc3RyZWFtLCBwYXJlbnQpOwogICAgICBpZiAodGhpcy5sZW5ndGggaW5zdGFuY2VvZiBOdW1iZXJUKSB7CiAgICAgICAgcGFyZW50ID0gewogICAgICAgICAgcGFyZW50OiBwYXJlbnQsCiAgICAgICAgICBfc3RhcnRPZmZzZXQ6IHBvcywKICAgICAgICAgIF9jdXJyZW50T2Zmc2V0OiAwLAogICAgICAgICAgX2xlbmd0aDogbGVuZ3RoCiAgICAgICAgfTsKICAgICAgfQogICAgICByZXMgPSBuZXcgTGF6eUFycmF5KHRoaXMudHlwZSwgbGVuZ3RoLCBzdHJlYW0sIHBhcmVudCk7CiAgICAgIHN0cmVhbS5wb3MgKz0gbGVuZ3RoICogdGhpcy50eXBlLnNpemUobnVsbCwgcGFyZW50KTsKICAgICAgcmV0dXJuIHJlczsKICAgIH07CgogICAgTGF6eUFycmF5VC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKHZhbCwgY3R4KSB7CiAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBMYXp5QXJyYXkpIHsKICAgICAgICB2YWwgPSB2YWwudG9BcnJheSgpOwogICAgICB9CiAgICAgIHJldHVybiBMYXp5QXJyYXlULl9fc3VwZXJfXy5zaXplLmNhbGwodGhpcywgdmFsLCBjdHgpOwogICAgfTsKCiAgICBMYXp5QXJyYXlULnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIHZhbCwgY3R4KSB7CiAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBMYXp5QXJyYXkpIHsKICAgICAgICB2YWwgPSB2YWwudG9BcnJheSgpOwogICAgICB9CiAgICAgIHJldHVybiBMYXp5QXJyYXlULl9fc3VwZXJfXy5lbmNvZGUuY2FsbCh0aGlzLCBzdHJlYW0sIHZhbCwgY3R4KTsKICAgIH07CgogICAgcmV0dXJuIExhenlBcnJheVQ7CgogIH0pKEFycmF5VCk7CgogIExhenlBcnJheSA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIExhenlBcnJheSh0eXBlLCBsZW5ndGgsIHN0cmVhbSwgY3R4KSB7CiAgICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoOwogICAgICB0aGlzLnN0cmVhbSA9IHN0cmVhbTsKICAgICAgdGhpcy5jdHggPSBjdHg7CiAgICAgIHRoaXMuYmFzZSA9IHRoaXMuc3RyZWFtLnBvczsKICAgICAgdGhpcy5pdGVtcyA9IFtdOwogICAgfQoKICAgIExhenlBcnJheS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oaW5kZXgpIHsKICAgICAgdmFyIHBvczsKICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLmxlbmd0aCkgewogICAgICAgIHJldHVybiB2b2lkIDA7CiAgICAgIH0KICAgICAgaWYgKHRoaXMuaXRlbXNbaW5kZXhdID09IG51bGwpIHsKICAgICAgICBwb3MgPSB0aGlzLnN0cmVhbS5wb3M7CiAgICAgICAgdGhpcy5zdHJlYW0ucG9zID0gdGhpcy5iYXNlICsgdGhpcy50eXBlLnNpemUobnVsbCwgdGhpcy5jdHgpICogaW5kZXg7CiAgICAgICAgdGhpcy5pdGVtc1tpbmRleF0gPSB0aGlzLnR5cGUuZGVjb2RlKHRoaXMuc3RyZWFtLCB0aGlzLmN0eCk7CiAgICAgICAgdGhpcy5zdHJlYW0ucG9zID0gcG9zOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLml0ZW1zW2luZGV4XTsKICAgIH07CgogICAgTGF6eUFycmF5LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBpLCBfaSwgX3JlZiwgX3Jlc3VsdHM7CiAgICAgIF9yZXN1bHRzID0gW107CiAgICAgIGZvciAoaSA9IF9pID0gMCwgX3JlZiA9IHRoaXMubGVuZ3RoOyBfaSA8IF9yZWY7IGkgPSBfaSArPSAxKSB7CiAgICAgICAgX3Jlc3VsdHMucHVzaCh0aGlzLmdldChpKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIF9yZXN1bHRzOwogICAgfTsKCiAgICBMYXp5QXJyYXkucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIGluc3BlY3QodGhpcy50b0FycmF5KCkpOwogICAgfTsKCiAgICByZXR1cm4gTGF6eUFycmF5OwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IExhenlBcnJheVQ7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAxODggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIEJpdGZpZWxkOwoKICBCaXRmaWVsZCA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIEJpdGZpZWxkKHR5cGUsIGZsYWdzKSB7CiAgICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICAgIHRoaXMuZmxhZ3MgPSBmbGFncyAhPSBudWxsID8gZmxhZ3MgOiBbXTsKICAgIH0KCiAgICBCaXRmaWVsZC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oc3RyZWFtKSB7CiAgICAgIHZhciBmbGFnLCBpLCByZXMsIHZhbCwgX2ksIF9sZW4sIF9yZWY7CiAgICAgIHZhbCA9IHRoaXMudHlwZS5kZWNvZGUoc3RyZWFtKTsKICAgICAgcmVzID0ge307CiAgICAgIF9yZWYgPSB0aGlzLmZsYWdzOwogICAgICBmb3IgKGkgPSBfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBpID0gKytfaSkgewogICAgICAgIGZsYWcgPSBfcmVmW2ldOwogICAgICAgIGlmIChmbGFnICE9IG51bGwpIHsKICAgICAgICAgIHJlc1tmbGFnXSA9ICEhKHZhbCAmICgxIDw8IGkpKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHJlczsKICAgIH07CgogICAgQml0ZmllbGQucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMudHlwZS5zaXplKCk7CiAgICB9OwoKICAgIEJpdGZpZWxkLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIGtleXMpIHsKICAgICAgdmFyIGZsYWcsIGksIHZhbCwgX2ksIF9sZW4sIF9yZWY7CiAgICAgIHZhbCA9IDA7CiAgICAgIF9yZWYgPSB0aGlzLmZsYWdzOwogICAgICBmb3IgKGkgPSBfaSA9IDAsIF9sZW4gPSBfcmVmLmxlbmd0aDsgX2kgPCBfbGVuOyBpID0gKytfaSkgewogICAgICAgIGZsYWcgPSBfcmVmW2ldOwogICAgICAgIGlmIChmbGFnICE9IG51bGwpIHsKICAgICAgICAgIGlmIChrZXlzW2ZsYWddKSB7CiAgICAgICAgICAgIHZhbCB8PSAxIDw8IGk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB0aGlzLnR5cGUuZW5jb2RlKHN0cmVhbSwgdmFsKTsKICAgIH07CgogICAgcmV0dXJuIEJpdGZpZWxkOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IEJpdGZpZWxkOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTg5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBCb29sZWFuVDsKCiAgQm9vbGVhblQgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBCb29sZWFuVCh0eXBlKSB7CiAgICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICB9CgogICAgQm9vbGVhblQucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSwgcGFyZW50KSB7CiAgICAgIHJldHVybiAhIXRoaXMudHlwZS5kZWNvZGUoc3RyZWFtLCBwYXJlbnQpOwogICAgfTsKCiAgICBCb29sZWFuVC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKHZhbCwgcGFyZW50KSB7CiAgICAgIHJldHVybiB0aGlzLnR5cGUuc2l6ZSh2YWwsIHBhcmVudCk7CiAgICB9OwoKICAgIEJvb2xlYW5ULnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIHZhbCwgcGFyZW50KSB7CiAgICAgIHJldHVybiB0aGlzLnR5cGUuZW5jb2RlKHN0cmVhbSwgK3ZhbCwgcGFyZW50KTsKICAgIH07CgogICAgcmV0dXJuIEJvb2xlYW5UOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IEJvb2xlYW5UOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTkwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBCdWZmZXJULCBOdW1iZXJULCB1dGlsczsKCiAgdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTsKCiAgTnVtYmVyVCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpLk51bWJlcjsKCiAgQnVmZmVyVCA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIEJ1ZmZlclQobGVuZ3RoKSB7CiAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoOwogICAgfQoKICAgIEJ1ZmZlclQucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSwgcGFyZW50KSB7CiAgICAgIHZhciBsZW5ndGg7CiAgICAgIGxlbmd0aCA9IHV0aWxzLnJlc29sdmVMZW5ndGgodGhpcy5sZW5ndGgsIHN0cmVhbSwgcGFyZW50KTsKICAgICAgcmV0dXJuIHN0cmVhbS5yZWFkQnVmZmVyKGxlbmd0aCk7CiAgICB9OwoKICAgIEJ1ZmZlclQucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbih2YWwsIHBhcmVudCkgewogICAgICBpZiAoIXZhbCkgewogICAgICAgIHJldHVybiB1dGlscy5yZXNvbHZlTGVuZ3RoKHRoaXMubGVuZ3RoLCBudWxsLCBwYXJlbnQpOwogICAgICB9CiAgICAgIHJldHVybiB2YWwubGVuZ3RoOwogICAgfTsKCiAgICBCdWZmZXJULnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIGJ1ZiwgcGFyZW50KSB7CiAgICAgIGlmICh0aGlzLmxlbmd0aCBpbnN0YW5jZW9mIE51bWJlclQpIHsKICAgICAgICB0aGlzLmxlbmd0aC5lbmNvZGUoc3RyZWFtLCBidWYubGVuZ3RoKTsKICAgICAgfQogICAgICByZXR1cm4gc3RyZWFtLndyaXRlQnVmZmVyKGJ1Zik7CiAgICB9OwoKICAgIHJldHVybiBCdWZmZXJUOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IEJ1ZmZlclQ7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAxOTEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIEVudW07CgogIEVudW0gPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBFbnVtKHR5cGUsIG9wdGlvbnMpIHsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyAhPSBudWxsID8gb3B0aW9ucyA6IFtdOwogICAgfQoKICAgIEVudW0ucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSkgewogICAgICB2YXIgaW5kZXg7CiAgICAgIGluZGV4ID0gdGhpcy50eXBlLmRlY29kZShzdHJlYW0pOwogICAgICByZXR1cm4gdGhpcy5vcHRpb25zW2luZGV4XSB8fCBpbmRleDsKICAgIH07CgogICAgRW51bS5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdGhpcy50eXBlLnNpemUoKTsKICAgIH07CgogICAgRW51bS5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyZWFtLCB2YWwpIHsKICAgICAgdmFyIGluZGV4OwogICAgICBpbmRleCA9IHRoaXMub3B0aW9ucy5pbmRleE9mKHZhbCk7CiAgICAgIGlmIChpbmRleCA9PT0gLTEpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gb3B0aW9uIGluIGVudW06ICIgKyB2YWwpOwogICAgICB9CiAgICAgIHJldHVybiB0aGlzLnR5cGUuZW5jb2RlKHN0cmVhbSwgaW5kZXgpOwogICAgfTsKCiAgICByZXR1cm4gRW51bTsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBFbnVtOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTkyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBPcHRpb25hbDsKCiAgT3B0aW9uYWwgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBPcHRpb25hbCh0eXBlLCBjb25kaXRpb24pIHsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgdGhpcy5jb25kaXRpb24gPSBjb25kaXRpb24gIT0gbnVsbCA/IGNvbmRpdGlvbiA6IHRydWU7CiAgICB9CgogICAgT3B0aW9uYWwucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSwgcGFyZW50KSB7CiAgICAgIHZhciBjb25kaXRpb247CiAgICAgIGNvbmRpdGlvbiA9IHRoaXMuY29uZGl0aW9uOwogICAgICBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbi5jYWxsKHBhcmVudCwgcGFyZW50KTsKICAgICAgfQogICAgICBpZiAoY29uZGl0aW9uKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS5kZWNvZGUoc3RyZWFtLCBwYXJlbnQpOwogICAgICB9CiAgICB9OwoKICAgIE9wdGlvbmFsLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24odmFsLCBwYXJlbnQpIHsKICAgICAgdmFyIGNvbmRpdGlvbjsKICAgICAgY29uZGl0aW9uID0gdGhpcy5jb25kaXRpb247CiAgICAgIGlmICh0eXBlb2YgY29uZGl0aW9uID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgY29uZGl0aW9uID0gY29uZGl0aW9uLmNhbGwocGFyZW50LCBwYXJlbnQpOwogICAgICB9CiAgICAgIGlmIChjb25kaXRpb24pIHsKICAgICAgICByZXR1cm4gdGhpcy50eXBlLnNpemUodmFsLCBwYXJlbnQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAwOwogICAgICB9CiAgICB9OwoKICAgIE9wdGlvbmFsLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIHZhbCwgcGFyZW50KSB7CiAgICAgIHZhciBjb25kaXRpb247CiAgICAgIGNvbmRpdGlvbiA9IHRoaXMuY29uZGl0aW9uOwogICAgICBpZiAodHlwZW9mIGNvbmRpdGlvbiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbi5jYWxsKHBhcmVudCwgcGFyZW50KTsKICAgICAgfQogICAgICBpZiAoY29uZGl0aW9uKSB7CiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS5lbmNvZGUoc3RyZWFtLCB2YWwsIHBhcmVudCk7CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIE9wdGlvbmFsOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IE9wdGlvbmFsOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTkzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS43LjEKKGZ1bmN0aW9uKCkgewogIHZhciBSZXNlcnZlZCwgdXRpbHM7CgogIHV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7CgogIFJlc2VydmVkID0gKGZ1bmN0aW9uKCkgewogICAgZnVuY3Rpb24gUmVzZXJ2ZWQodHlwZSwgY291bnQpIHsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgdGhpcy5jb3VudCA9IGNvdW50ICE9IG51bGwgPyBjb3VudCA6IDE7CiAgICB9CgogICAgUmVzZXJ2ZWQucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSwgcGFyZW50KSB7CiAgICAgIHN0cmVhbS5wb3MgKz0gdGhpcy5zaXplKG51bGwsIHBhcmVudCk7CiAgICAgIHJldHVybiB2b2lkIDA7CiAgICB9OwoKICAgIFJlc2VydmVkLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oZGF0YSwgcGFyZW50KSB7CiAgICAgIHZhciBjb3VudDsKICAgICAgY291bnQgPSB1dGlscy5yZXNvbHZlTGVuZ3RoKHRoaXMuY291bnQsIG51bGwsIHBhcmVudCk7CiAgICAgIHJldHVybiB0aGlzLnR5cGUuc2l6ZSgpICogY291bnQ7CiAgICB9OwoKICAgIFJlc2VydmVkLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIHZhbCwgcGFyZW50KSB7CiAgICAgIHJldHVybiBzdHJlYW0uZmlsbCgwLCB0aGlzLnNpemUodmFsLCBwYXJlbnQpKTsKICAgIH07CgogICAgcmV0dXJuIFJlc2VydmVkOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IFJlc2VydmVkOwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMTk0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihCdWZmZXIpIHsvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuNy4xCihmdW5jdGlvbigpIHsKICB2YXIgTnVtYmVyVCwgU3RyaW5nVCwgdXRpbHM7CgogIE51bWJlclQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKS5OdW1iZXI7CgogIHV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7CgogIFN0cmluZ1QgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBTdHJpbmdUKGxlbmd0aCwgZW5jb2RpbmcpIHsKICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7CiAgICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZyAhPSBudWxsID8gZW5jb2RpbmcgOiAnYXNjaWknOwogICAgfQoKICAgIFN0cmluZ1QucHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSwgcGFyZW50KSB7CiAgICAgIHZhciBidWZmZXIsIGVuY29kaW5nLCBsZW5ndGgsIHBvcywgc3RyaW5nOwogICAgICBsZW5ndGggPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKHRoaXMubGVuZ3RoICE9IG51bGwpIHsKICAgICAgICAgIHJldHVybiB1dGlscy5yZXNvbHZlTGVuZ3RoKHRoaXMubGVuZ3RoLCBzdHJlYW0sIHBhcmVudCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGJ1ZmZlciA9IHN0cmVhbS5idWZmZXIsIGxlbmd0aCA9IHN0cmVhbS5sZW5ndGgsIHBvcyA9IHN0cmVhbS5wb3M7CiAgICAgICAgICB3aGlsZSAocG9zIDwgbGVuZ3RoICYmIGJ1ZmZlcltwb3NdICE9PSAweDAwKSB7CiAgICAgICAgICAgICsrcG9zOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIHBvcyAtIHN0cmVhbS5wb3M7CiAgICAgICAgfQogICAgICB9KS5jYWxsKHRoaXMpOwogICAgICBlbmNvZGluZyA9IHRoaXMuZW5jb2Rpbmc7CiAgICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nLmNhbGwocGFyZW50LCBwYXJlbnQpIHx8ICdhc2NpaSc7CiAgICAgIH0KICAgICAgc3RyaW5nID0gc3RyZWFtLnJlYWRTdHJpbmcobGVuZ3RoLCBlbmNvZGluZyk7CiAgICAgIGlmICgodGhpcy5sZW5ndGggPT0gbnVsbCkgJiYgc3RyZWFtLnBvcyA8IHN0cmVhbS5sZW5ndGgpIHsKICAgICAgICBzdHJlYW0ucG9zKys7CiAgICAgIH0KICAgICAgcmV0dXJuIHN0cmluZzsKICAgIH07CgogICAgU3RyaW5nVC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKHZhbCwgcGFyZW50KSB7CiAgICAgIHZhciBlbmNvZGluZywgc2l6ZTsKICAgICAgaWYgKCF2YWwpIHsKICAgICAgICByZXR1cm4gdXRpbHMucmVzb2x2ZUxlbmd0aCh0aGlzLmxlbmd0aCwgbnVsbCwgcGFyZW50KTsKICAgICAgfQogICAgICBlbmNvZGluZyA9IHRoaXMuZW5jb2Rpbmc7CiAgICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nLmNhbGwocGFyZW50ICE9IG51bGwgPyBwYXJlbnQudmFsIDogdm9pZCAwLCBwYXJlbnQgIT0gbnVsbCA/IHBhcmVudC52YWwgOiB2b2lkIDApIHx8ICdhc2NpaSc7CiAgICAgIH0KICAgICAgaWYgKGVuY29kaW5nID09PSAndXRmMTZiZScpIHsKICAgICAgICBlbmNvZGluZyA9ICd1dGYxNmxlJzsKICAgICAgfQogICAgICBzaXplID0gQnVmZmVyLmJ5dGVMZW5ndGgodmFsLCBlbmNvZGluZyk7CiAgICAgIGlmICh0aGlzLmxlbmd0aCBpbnN0YW5jZW9mIE51bWJlclQpIHsKICAgICAgICBzaXplICs9IHRoaXMubGVuZ3RoLnNpemUoKTsKICAgICAgfQogICAgICBpZiAodGhpcy5sZW5ndGggPT0gbnVsbCkgewogICAgICAgIHNpemUrKzsKICAgICAgfQogICAgICByZXR1cm4gc2l6ZTsKICAgIH07CgogICAgU3RyaW5nVC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyZWFtLCB2YWwsIHBhcmVudCkgewogICAgICB2YXIgZW5jb2Rpbmc7CiAgICAgIGVuY29kaW5nID0gdGhpcy5lbmNvZGluZzsKICAgICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcuY2FsbChwYXJlbnQgIT0gbnVsbCA/IHBhcmVudC52YWwgOiB2b2lkIDAsIHBhcmVudCAhPSBudWxsID8gcGFyZW50LnZhbCA6IHZvaWQgMCkgfHwgJ2FzY2lpJzsKICAgICAgfQogICAgICBpZiAodGhpcy5sZW5ndGggaW5zdGFuY2VvZiBOdW1iZXJUKSB7CiAgICAgICAgdGhpcy5sZW5ndGguZW5jb2RlKHN0cmVhbSwgQnVmZmVyLmJ5dGVMZW5ndGgodmFsLCBlbmNvZGluZykpOwogICAgICB9CiAgICAgIHN0cmVhbS53cml0ZVN0cmluZyh2YWwsIGVuY29kaW5nKTsKICAgICAgaWYgKHRoaXMubGVuZ3RoID09IG51bGwpIHsKICAgICAgICByZXR1cm4gc3RyZWFtLndyaXRlVUludDgoMHgwMCk7CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIFN0cmluZ1Q7CgogIH0pKCk7CgogIG1vZHVsZS5leHBvcnRzID0gU3RyaW5nVDsKCn0pLmNhbGwodGhpcyk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDE5NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuNy4xCihmdW5jdGlvbigpIHsKICB2YXIgU3RydWN0LCBWZXJzaW9uZWRTdHJ1Y3QsCiAgICBfX2hhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eSwKICAgIF9fZXh0ZW5kcyA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoX19oYXNQcm9wLmNhbGwocGFyZW50LCBrZXkpKSBjaGlsZFtrZXldID0gcGFyZW50W2tleV07IH0gZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9IGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTsgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTsgY2hpbGQuX19zdXBlcl9fID0gcGFyZW50LnByb3RvdHlwZTsgcmV0dXJuIGNoaWxkOyB9OwoKICBTdHJ1Y3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk0KTsKCiAgVmVyc2lvbmVkU3RydWN0ID0gKGZ1bmN0aW9uKF9zdXBlcikgewogICAgX19leHRlbmRzKFZlcnNpb25lZFN0cnVjdCwgX3N1cGVyKTsKCiAgICBmdW5jdGlvbiBWZXJzaW9uZWRTdHJ1Y3QodHlwZSwgdmVyc2lvbnMpIHsKICAgICAgdGhpcy50eXBlID0gdHlwZTsKICAgICAgdGhpcy52ZXJzaW9ucyA9IHZlcnNpb25zICE9IG51bGwgPyB2ZXJzaW9ucyA6IHt9OwogICAgICBpZiAodHlwZW9mIHRoaXMudHlwZSA9PT0gJ3N0cmluZycpIHsKICAgICAgICB0aGlzLnZlcnNpb25HZXR0ZXIgPSBuZXcgRnVuY3Rpb24oJ3BhcmVudCcsICJyZXR1cm4gcGFyZW50LiIgKyB0aGlzLnR5cGUpOwogICAgICAgIHRoaXMudmVyc2lvblNldHRlciA9IG5ldyBGdW5jdGlvbigncGFyZW50JywgJ3ZlcnNpb24nLCAicmV0dXJuIHBhcmVudC4iICsgdGhpcy50eXBlICsgIiA9IHZlcnNpb24iKTsKICAgICAgfQogICAgfQoKICAgIFZlcnNpb25lZFN0cnVjdC5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oc3RyZWFtLCBwYXJlbnQsIGxlbmd0aCkgewogICAgICB2YXIgZmllbGRzLCByZXMsIF9yZWY7CiAgICAgIGlmIChsZW5ndGggPT0gbnVsbCkgewogICAgICAgIGxlbmd0aCA9IDA7CiAgICAgIH0KICAgICAgcmVzID0gdGhpcy5fc2V0dXAoc3RyZWFtLCBwYXJlbnQsIGxlbmd0aCk7CiAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlID09PSAnc3RyaW5nJykgewogICAgICAgIHJlcy52ZXJzaW9uID0gdGhpcy52ZXJzaW9uR2V0dGVyKHBhcmVudCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVzLnZlcnNpb24gPSB0aGlzLnR5cGUuZGVjb2RlKHN0cmVhbSk7CiAgICAgIH0KICAgICAgaWYgKHRoaXMudmVyc2lvbnMuaGVhZGVyKSB7CiAgICAgICAgdGhpcy5fcGFyc2VGaWVsZHMoc3RyZWFtLCByZXMsIHRoaXMudmVyc2lvbnMuaGVhZGVyKTsKICAgICAgfQogICAgICBmaWVsZHMgPSB0aGlzLnZlcnNpb25zW3Jlcy52ZXJzaW9uXTsKICAgICAgaWYgKGZpZWxkcyA9PSBudWxsKSB7CiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIHZlcnNpb24gIiArIHJlcy52ZXJzaW9uKTsKICAgICAgfQogICAgICBpZiAoZmllbGRzIGluc3RhbmNlb2YgVmVyc2lvbmVkU3RydWN0KSB7CiAgICAgICAgcmV0dXJuIGZpZWxkcy5kZWNvZGUoc3RyZWFtLCBwYXJlbnQpOwogICAgICB9CiAgICAgIHRoaXMuX3BhcnNlRmllbGRzKHN0cmVhbSwgcmVzLCBmaWVsZHMpOwogICAgICBpZiAoKF9yZWYgPSB0aGlzLnByb2Nlc3MpICE9IG51bGwpIHsKICAgICAgICBfcmVmLmNhbGwocmVzLCBzdHJlYW0pOwogICAgICB9CiAgICAgIHJldHVybiByZXM7CiAgICB9OwoKICAgIFZlcnNpb25lZFN0cnVjdC5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKHZhbCwgcGFyZW50LCBpbmNsdWRlUG9pbnRlcnMpIHsKICAgICAgdmFyIGN0eCwgZmllbGRzLCBrZXksIHNpemUsIHR5cGUsIF9yZWY7CiAgICAgIGlmIChpbmNsdWRlUG9pbnRlcnMgPT0gbnVsbCkgewogICAgICAgIGluY2x1ZGVQb2ludGVycyA9IHRydWU7CiAgICAgIH0KICAgICAgaWYgKCF2YWwpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIGZpeGVkIHNpemUnKTsKICAgICAgfQogICAgICBjdHggPSB7CiAgICAgICAgcGFyZW50OiBwYXJlbnQsCiAgICAgICAgdmFsOiB2YWwsCiAgICAgICAgcG9pbnRlclNpemU6IDAKICAgICAgfTsKICAgICAgc2l6ZSA9IDA7CiAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlICE9PSAnc3RyaW5nJykgewogICAgICAgIHNpemUgKz0gdGhpcy50eXBlLnNpemUodmFsLnZlcnNpb24sIGN0eCk7CiAgICAgIH0KICAgICAgaWYgKHRoaXMudmVyc2lvbnMuaGVhZGVyKSB7CiAgICAgICAgX3JlZiA9IHRoaXMudmVyc2lvbnMuaGVhZGVyOwogICAgICAgIGZvciAoa2V5IGluIF9yZWYpIHsKICAgICAgICAgIHR5cGUgPSBfcmVmW2tleV07CiAgICAgICAgICBpZiAodHlwZS5zaXplICE9IG51bGwpIHsKICAgICAgICAgICAgc2l6ZSArPSB0eXBlLnNpemUodmFsW2tleV0sIGN0eCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIGZpZWxkcyA9IHRoaXMudmVyc2lvbnNbdmFsLnZlcnNpb25dOwogICAgICBpZiAoZmllbGRzID09IG51bGwpIHsKICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gdmVyc2lvbiAiICsgdmFsLnZlcnNpb24pOwogICAgICB9CiAgICAgIGZvciAoa2V5IGluIGZpZWxkcykgewogICAgICAgIHR5cGUgPSBmaWVsZHNba2V5XTsKICAgICAgICBpZiAodHlwZS5zaXplICE9IG51bGwpIHsKICAgICAgICAgIHNpemUgKz0gdHlwZS5zaXplKHZhbFtrZXldLCBjdHgpOwogICAgICAgIH0KICAgICAgfQogICAgICBpZiAoaW5jbHVkZVBvaW50ZXJzKSB7CiAgICAgICAgc2l6ZSArPSBjdHgucG9pbnRlclNpemU7CiAgICAgIH0KICAgICAgcmV0dXJuIHNpemU7CiAgICB9OwoKICAgIFZlcnNpb25lZFN0cnVjdC5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oc3RyZWFtLCB2YWwsIHBhcmVudCkgewogICAgICB2YXIgY3R4LCBmaWVsZHMsIGksIGtleSwgcHRyLCB0eXBlLCBfcmVmLCBfcmVmMTsKICAgICAgaWYgKChfcmVmID0gdGhpcy5wcmVFbmNvZGUpICE9IG51bGwpIHsKICAgICAgICBfcmVmLmNhbGwodmFsLCBzdHJlYW0pOwogICAgICB9CiAgICAgIGN0eCA9IHsKICAgICAgICBwb2ludGVyczogW10sCiAgICAgICAgc3RhcnRPZmZzZXQ6IHN0cmVhbS5wb3MsCiAgICAgICAgcGFyZW50OiBwYXJlbnQsCiAgICAgICAgdmFsOiB2YWwsCiAgICAgICAgcG9pbnRlclNpemU6IDAKICAgICAgfTsKICAgICAgY3R4LnBvaW50ZXJPZmZzZXQgPSBzdHJlYW0ucG9zICsgdGhpcy5zaXplKHZhbCwgY3R4LCBmYWxzZSk7CiAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlICE9PSAnc3RyaW5nJykgewogICAgICAgIHRoaXMudHlwZS5lbmNvZGUoc3RyZWFtLCB2YWwudmVyc2lvbik7CiAgICAgIH0KICAgICAgaWYgKHRoaXMudmVyc2lvbnMuaGVhZGVyKSB7CiAgICAgICAgX3JlZjEgPSB0aGlzLnZlcnNpb25zLmhlYWRlcjsKICAgICAgICBmb3IgKGtleSBpbiBfcmVmMSkgewogICAgICAgICAgdHlwZSA9IF9yZWYxW2tleV07CiAgICAgICAgICBpZiAodHlwZS5lbmNvZGUgIT0gbnVsbCkgewogICAgICAgICAgICB0eXBlLmVuY29kZShzdHJlYW0sIHZhbFtrZXldLCBjdHgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBmaWVsZHMgPSB0aGlzLnZlcnNpb25zW3ZhbC52ZXJzaW9uXTsKICAgICAgZm9yIChrZXkgaW4gZmllbGRzKSB7CiAgICAgICAgdHlwZSA9IGZpZWxkc1trZXldOwogICAgICAgIGlmICh0eXBlLmVuY29kZSAhPSBudWxsKSB7CiAgICAgICAgICB0eXBlLmVuY29kZShzdHJlYW0sIHZhbFtrZXldLCBjdHgpOwogICAgICAgIH0KICAgICAgfQogICAgICBpID0gMDsKICAgICAgd2hpbGUgKGkgPCBjdHgucG9pbnRlcnMubGVuZ3RoKSB7CiAgICAgICAgcHRyID0gY3R4LnBvaW50ZXJzW2krK107CiAgICAgICAgcHRyLnR5cGUuZW5jb2RlKHN0cmVhbSwgcHRyLnZhbCwgcHRyLnBhcmVudCk7CiAgICAgIH0KICAgIH07CgogICAgcmV0dXJuIFZlcnNpb25lZFN0cnVjdDsKCiAgfSkoU3RydWN0KTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBWZXJzaW9uZWRTdHJ1Y3Q7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAxOTYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjcuMQooZnVuY3Rpb24oKSB7CiAgdmFyIFBvaW50ZXIsIFZvaWRQb2ludGVyLCB1dGlsczsKCiAgdXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTsKCiAgUG9pbnRlciA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIFBvaW50ZXIob2Zmc2V0VHlwZSwgdHlwZSwgb3B0aW9ucykgewogICAgICB2YXIgX2Jhc2UsIF9iYXNlMSwgX2Jhc2UyLCBfYmFzZTM7CiAgICAgIHRoaXMub2Zmc2V0VHlwZSA9IG9mZnNldFR5cGU7CiAgICAgIHRoaXMudHlwZSA9IHR5cGU7CiAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgIT0gbnVsbCA/IG9wdGlvbnMgOiB7fTsKICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3ZvaWQnKSB7CiAgICAgICAgdGhpcy50eXBlID0gbnVsbDsKICAgICAgfQogICAgICBpZiAoKF9iYXNlID0gdGhpcy5vcHRpb25zKS50eXBlID09IG51bGwpIHsKICAgICAgICBfYmFzZS50eXBlID0gJ2xvY2FsJzsKICAgICAgfQogICAgICBpZiAoKF9iYXNlMSA9IHRoaXMub3B0aW9ucykuYWxsb3dOdWxsID09IG51bGwpIHsKICAgICAgICBfYmFzZTEuYWxsb3dOdWxsID0gdHJ1ZTsKICAgICAgfQogICAgICBpZiAoKF9iYXNlMiA9IHRoaXMub3B0aW9ucykubnVsbFZhbHVlID09IG51bGwpIHsKICAgICAgICBfYmFzZTIubnVsbFZhbHVlID0gMDsKICAgICAgfQogICAgICBpZiAoKF9iYXNlMyA9IHRoaXMub3B0aW9ucykubGF6eSA9PSBudWxsKSB7CiAgICAgICAgX2Jhc2UzLmxhenkgPSBmYWxzZTsKICAgICAgfQogICAgICBpZiAodGhpcy5vcHRpb25zLnJlbGF0aXZlVG8pIHsKICAgICAgICB0aGlzLnJlbGF0aXZlVG9HZXR0ZXIgPSBuZXcgRnVuY3Rpb24oJ2N0eCcsICJyZXR1cm4gY3R4LiIgKyB0aGlzLm9wdGlvbnMucmVsYXRpdmVUbyk7CiAgICAgIH0KICAgIH0KCiAgICBQb2ludGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbihzdHJlYW0sIGN0eCkgewogICAgICB2YXIgYywgZGVjb2RlVmFsdWUsIG9mZnNldCwgcHRyLCByZWxhdGl2ZSwgdmFsOwogICAgICBvZmZzZXQgPSB0aGlzLm9mZnNldFR5cGUuZGVjb2RlKHN0cmVhbSwgY3R4KTsKICAgICAgaWYgKG9mZnNldCA9PT0gdGhpcy5vcHRpb25zLm51bGxWYWx1ZSAmJiB0aGlzLm9wdGlvbnMuYWxsb3dOdWxsKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgIH0KICAgICAgcmVsYXRpdmUgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgc3dpdGNoICh0aGlzLm9wdGlvbnMudHlwZSkgewogICAgICAgICAgY2FzZSAnbG9jYWwnOgogICAgICAgICAgICByZXR1cm4gY3R4Ll9zdGFydE9mZnNldDsKICAgICAgICAgIGNhc2UgJ2ltbWVkaWF0ZSc6CiAgICAgICAgICAgIHJldHVybiBzdHJlYW0ucG9zIC0gdGhpcy5vZmZzZXRUeXBlLnNpemUoKTsKICAgICAgICAgIGNhc2UgJ3BhcmVudCc6CiAgICAgICAgICAgIHJldHVybiBjdHgucGFyZW50Ll9zdGFydE9mZnNldDsKICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGMgPSBjdHg7CiAgICAgICAgICAgIHdoaWxlIChjLnBhcmVudCkgewogICAgICAgICAgICAgIGMgPSBjLnBhcmVudDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gYy5fc3RhcnRPZmZzZXQgfHwgMDsKICAgICAgICB9CiAgICAgIH0pLmNhbGwodGhpcyk7CiAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVsYXRpdmVUbykgewogICAgICAgIHJlbGF0aXZlICs9IHRoaXMucmVsYXRpdmVUb0dldHRlcihjdHgpOwogICAgICB9CiAgICAgIHB0ciA9IG9mZnNldCArIHJlbGF0aXZlOwogICAgICBpZiAodGhpcy50eXBlICE9IG51bGwpIHsKICAgICAgICB2YWwgPSBudWxsOwogICAgICAgIGRlY29kZVZhbHVlID0gKGZ1bmN0aW9uKF90aGlzKSB7CiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBwb3M7CiAgICAgICAgICAgIGlmICh2YWwgIT0gbnVsbCkgewogICAgICAgICAgICAgIHJldHVybiB2YWw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcG9zID0gc3RyZWFtLnBvczsKICAgICAgICAgICAgc3RyZWFtLnBvcyA9IHB0cjsKICAgICAgICAgICAgdmFsID0gX3RoaXMudHlwZS5kZWNvZGUoc3RyZWFtLCBjdHgpOwogICAgICAgICAgICBzdHJlYW0ucG9zID0gcG9zOwogICAgICAgICAgICByZXR1cm4gdmFsOwogICAgICAgICAgfTsKICAgICAgICB9KSh0aGlzKTsKICAgICAgICBpZiAodGhpcy5vcHRpb25zLmxhenkpIHsKICAgICAgICAgIHJldHVybiBuZXcgdXRpbHMuUHJvcGVydHlEZXNjcmlwdG9yKHsKICAgICAgICAgICAgZ2V0OiBkZWNvZGVWYWx1ZQogICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBkZWNvZGVWYWx1ZSgpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBwdHI7CiAgICAgIH0KICAgIH07CgogICAgUG9pbnRlci5wcm90b3R5cGUuc2l6ZSA9IGZ1bmN0aW9uKHZhbCwgY3R4KSB7CiAgICAgIHZhciBwYXJlbnQsIHR5cGU7CiAgICAgIHBhcmVudCA9IGN0eDsKICAgICAgc3dpdGNoICh0aGlzLm9wdGlvbnMudHlwZSkgewogICAgICAgIGNhc2UgJ2xvY2FsJzoKICAgICAgICBjYXNlICdpbW1lZGlhdGUnOgogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAncGFyZW50JzoKICAgICAgICAgIGN0eCA9IGN0eC5wYXJlbnQ7CiAgICAgICAgICBicmVhazsKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgd2hpbGUgKGN0eC5wYXJlbnQpIHsKICAgICAgICAgICAgY3R4ID0gY3R4LnBhcmVudDsKICAgICAgICAgIH0KICAgICAgfQogICAgICB0eXBlID0gdGhpcy50eXBlOwogICAgICBpZiAodHlwZSA9PSBudWxsKSB7CiAgICAgICAgaWYgKCEodmFsIGluc3RhbmNlb2YgVm9pZFBvaW50ZXIpKSB7CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk11c3QgYmUgYSBWb2lkUG9pbnRlciIpOwogICAgICAgIH0KICAgICAgICB0eXBlID0gdmFsLnR5cGU7CiAgICAgICAgdmFsID0gdmFsLnZhbHVlOwogICAgICB9CiAgICAgIGlmICh2YWwgJiYgY3R4KSB7CiAgICAgICAgY3R4LnBvaW50ZXJTaXplICs9IHR5cGUuc2l6ZSh2YWwsIHBhcmVudCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMub2Zmc2V0VHlwZS5zaXplKCk7CiAgICB9OwoKICAgIFBvaW50ZXIucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uKHN0cmVhbSwgdmFsLCBjdHgpIHsKICAgICAgdmFyIHBhcmVudCwgcmVsYXRpdmUsIHR5cGU7CiAgICAgIHBhcmVudCA9IGN0eDsKICAgICAgaWYgKHZhbCA9PSBudWxsKSB7CiAgICAgICAgdGhpcy5vZmZzZXRUeXBlLmVuY29kZShzdHJlYW0sIHRoaXMub3B0aW9ucy5udWxsVmFsdWUpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBzd2l0Y2ggKHRoaXMub3B0aW9ucy50eXBlKSB7CiAgICAgICAgY2FzZSAnbG9jYWwnOgogICAgICAgICAgcmVsYXRpdmUgPSBjdHguc3RhcnRPZmZzZXQ7CiAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdpbW1lZGlhdGUnOgogICAgICAgICAgcmVsYXRpdmUgPSBzdHJlYW0ucG9zICsgdGhpcy5vZmZzZXRUeXBlLnNpemUodmFsLCBwYXJlbnQpOwogICAgICAgICAgYnJlYWs7CiAgICAgICAgY2FzZSAncGFyZW50JzoKICAgICAgICAgIGN0eCA9IGN0eC5wYXJlbnQ7CiAgICAgICAgICByZWxhdGl2ZSA9IGN0eC5zdGFydE9mZnNldDsKICAgICAgICAgIGJyZWFrOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICByZWxhdGl2ZSA9IDA7CiAgICAgICAgICB3aGlsZSAoY3R4LnBhcmVudCkgewogICAgICAgICAgICBjdHggPSBjdHgucGFyZW50OwogICAgICAgICAgfQogICAgICB9CiAgICAgIGlmICh0aGlzLm9wdGlvbnMucmVsYXRpdmVUbykgewogICAgICAgIHJlbGF0aXZlICs9IHRoaXMucmVsYXRpdmVUb0dldHRlcihwYXJlbnQudmFsKTsKICAgICAgfQogICAgICB0aGlzLm9mZnNldFR5cGUuZW5jb2RlKHN0cmVhbSwgY3R4LnBvaW50ZXJPZmZzZXQgLSByZWxhdGl2ZSk7CiAgICAgIHR5cGUgPSB0aGlzLnR5cGU7CiAgICAgIGlmICh0eXBlID09IG51bGwpIHsKICAgICAgICBpZiAoISh2YWwgaW5zdGFuY2VvZiBWb2lkUG9pbnRlcikpIHsKICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTXVzdCBiZSBhIFZvaWRQb2ludGVyIik7CiAgICAgICAgfQogICAgICAgIHR5cGUgPSB2YWwudHlwZTsKICAgICAgICB2YWwgPSB2YWwudmFsdWU7CiAgICAgIH0KICAgICAgY3R4LnBvaW50ZXJzLnB1c2goewogICAgICAgIHR5cGU6IHR5cGUsCiAgICAgICAgdmFsOiB2YWwsCiAgICAgICAgcGFyZW50OiBwYXJlbnQKICAgICAgfSk7CiAgICAgIHJldHVybiBjdHgucG9pbnRlck9mZnNldCArPSB0eXBlLnNpemUodmFsLCBwYXJlbnQpOwogICAgfTsKCiAgICByZXR1cm4gUG9pbnRlcjsKCiAgfSkoKTsKCiAgVm9pZFBvaW50ZXIgPSAoZnVuY3Rpb24oKSB7CiAgICBmdW5jdGlvbiBWb2lkUG9pbnRlcih0eXBlLCB2YWx1ZSkgewogICAgICB0aGlzLnR5cGUgPSB0eXBlOwogICAgICB0aGlzLnZhbHVlID0gdmFsdWU7CiAgICB9CgogICAgcmV0dXJuIFZvaWRQb2ludGVyOwoKICB9KSgpOwoKICBleHBvcnRzLlBvaW50ZXIgPSBQb2ludGVyOwoKICBleHBvcnRzLlZvaWRQb2ludGVyID0gVm9pZFBvaW50ZXI7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAxOTcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193ZWJwYWNrX3JlcXVpcmVfXygxOTgpLCBfX2VzTW9kdWxlOiB0cnVlIH07CgovKioqLyB9KSwKLyogMTk4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCl9fd2VicGFja19yZXF1aXJlX18oMTk5KTsKdmFyICRPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpLk9iamVjdDsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkgewogIHJldHVybiAkT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KTsKfTsKCgovKioqLyB9KSwKLyogMTk5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkKdmFyIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpOwp2YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oNTcpLmY7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDU5KSgnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJywgZnVuY3Rpb24gKCkgewogIHJldHVybiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkgewogICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodG9JT2JqZWN0KGl0KSwga2V5KTsKICB9Owp9KTsKCgovKioqLyB9KSwKLyogMjAwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCl9fd2VicGFja19yZXF1aXJlX18oMjgpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTsKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwOCk7CgoKLyoqKi8gfSksCi8qIDIwMSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7Cgp2YXIgYWRkVG9VbnNjb3BhYmxlcyA9IF9fd2VicGFja19yZXF1aXJlX18oMjAyKTsKdmFyIHN0ZXAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk4KTsKdmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjMpOwp2YXIgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7CgovLyAyMi4xLjMuNCBBcnJheS5wcm90b3R5cGUuZW50cmllcygpCi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpCi8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKCkKLy8gMjIuMS4zLjMwIEFycmF5LnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpCm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MSkoQXJyYXksICdBcnJheScsIGZ1bmN0aW9uIChpdGVyYXRlZCwga2luZCkgewogIHRoaXMuX3QgPSB0b0lPYmplY3QoaXRlcmF0ZWQpOyAvLyB0YXJnZXQKICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAgLy8gbmV4dCBpbmRleAogIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kCi8vIDIyLjEuNS4yLjEgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHQoKQp9LCBmdW5jdGlvbiAoKSB7CiAgdmFyIE8gPSB0aGlzLl90OwogIHZhciBraW5kID0gdGhpcy5fazsKICB2YXIgaW5kZXggPSB0aGlzLl9pKys7CiAgaWYgKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKSB7CiAgICB0aGlzLl90ID0gdW5kZWZpbmVkOwogICAgcmV0dXJuIHN0ZXAoMSk7CiAgfQogIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHN0ZXAoMCwgaW5kZXgpOwogIGlmIChraW5kID09ICd2YWx1ZXMnKSByZXR1cm4gc3RlcCgwLCBPW2luZGV4XSk7CiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pOwp9LCAndmFsdWVzJyk7CgovLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpCkl0ZXJhdG9ycy5Bcmd1bWVudHMgPSBJdGVyYXRvcnMuQXJyYXk7CgphZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7CmFkZFRvVW5zY29wYWJsZXMoJ3ZhbHVlcycpOwphZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7CgoKLyoqKi8gfSksCi8qIDIwMiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7Cgptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfTsKCgovKioqLyB9KSwKLyogMjAzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCnZhciBjcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTsKdmFyIGRlc2NyaXB0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTsKdmFyIHNldFRvU3RyaW5nVGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSk7CnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9OwoKLy8gMjUuMS4yLjEuMSAlSXRlcmF0b3JQcm90b3R5cGUlW0BAaXRlcmF0b3JdKCkKX193ZWJwYWNrX3JlcXVpcmVfXygxMykoSXRlcmF0b3JQcm90b3R5cGUsIF9fd2VicGFja19yZXF1aXJlX18oNCkoJ2l0ZXJhdG9yJyksIGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0pOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpIHsKICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogZGVzY3JpcHRvcigxLCBuZXh0KSB9KTsKICBzZXRUb1N0cmluZ1RhZyhDb25zdHJ1Y3RvciwgTkFNRSArICcgSXRlcmF0b3InKTsKfTsKCgovKioqLyB9KSwKLyogMjA0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2YKLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXMKdmFyIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpOwp2YXIgdG9MZW5ndGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTsKdmFyIHRvQWJzb2x1dGVJbmRleCA9IF9fd2VicGFja19yZXF1aXJlX18oMTAyKTsKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHsKICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7CiAgICB2YXIgTyA9IHRvSU9iamVjdCgkdGhpcyk7CiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpOwogICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTsKICAgIHZhciB2YWx1ZTsKICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG0KICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUKICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7CiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTsKICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZQogICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlOwogICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdAogICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykgewogICAgICBpZiAoT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDsKICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTsKICB9Owp9OwoKCi8qKiovIH0pLAovKiAyMDUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCkuZG9jdW1lbnQ7Cm1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwoKCi8qKiovIH0pLAovKiAyMDYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTykKdmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpOwp2YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTsKdmFyIElFX1BST1RPID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NCkoJ0lFX1BST1RPJyk7CnZhciBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7Cgptb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoTykgewogIE8gPSB0b09iamVjdChPKTsKICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dOwogIGlmICh0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKSB7CiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7CiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvIDogbnVsbDsKfTsKCgovKioqLyB9KSwKLyogMjA3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYzKTsKdmFyIGRlZmluZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU2KTsKLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0Ci8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdAptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUT19TVFJJTkcpIHsKICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIHBvcykgewogICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSk7CiAgICB2YXIgaSA9IHRvSW50ZWdlcihwb3MpOwogICAgdmFyIGwgPSBzLmxlbmd0aDsKICAgIHZhciBhLCBiOwogICAgaWYgKGkgPCAwIHx8IGkgPj0gbCkgcmV0dXJuIFRPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkOwogICAgYSA9IHMuY2hhckNvZGVBdChpKTsKICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmCiAgICAgID8gVE9fU1RSSU5HID8gcy5jaGFyQXQoaSkgOiBhCiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwOwogIH07Cn07CgoKLyoqKi8gfSksCi8qIDIwOCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKdmFyIGdldCA9IF9fd2VicGFja19yZXF1aXJlX18oNjcpOwptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMikuZ2V0SXRlcmF0b3IgPSBmdW5jdGlvbiAoaXQpIHsKICB2YXIgaXRlckZuID0gZ2V0KGl0KTsKICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBpdGVyYWJsZSEnKTsKICByZXR1cm4gYW5PYmplY3QoaXRlckZuLmNhbGwoaXQpKTsKfTsKCgovKioqLyB9KSwKLyogMjA5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjEwKSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDIxMCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDIxMSk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5PYmplY3QuZnJlZXplOwoKCi8qKiovIH0pLAovKiAyMTEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMTkuMS4yLjUgT2JqZWN0LmZyZWV6ZShPKQp2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpOwp2YXIgbWV0YSA9IF9fd2VicGFja19yZXF1aXJlX18oNDApLm9uRnJlZXplOwoKX193ZWJwYWNrX3JlcXVpcmVfXyg1OSkoJ2ZyZWV6ZScsIGZ1bmN0aW9uICgkZnJlZXplKSB7CiAgcmV0dXJuIGZ1bmN0aW9uIGZyZWV6ZShpdCkgewogICAgcmV0dXJuICRmcmVlemUgJiYgaXNPYmplY3QoaXQpID8gJGZyZWV6ZShtZXRhKGl0KSkgOiBpdDsKICB9Owp9KTsKCgovKioqLyB9KSwKLyogMjEyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjEzKSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDIxMyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDIxNCk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5PYmplY3Qua2V5czsKCgovKioqLyB9KSwKLyogMjE0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIDE5LjEuMi4xNCBPYmplY3Qua2V5cyhPKQp2YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTsKdmFyICRrZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDU5KSgna2V5cycsIGZ1bmN0aW9uICgpIHsKICByZXR1cm4gZnVuY3Rpb24ga2V5cyhpdCkgewogICAgcmV0dXJuICRrZXlzKHRvT2JqZWN0KGl0KSk7CiAgfTsKfSk7CgoKLyoqKi8gfSksCi8qIDIxNSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTsKX193ZWJwYWNrX3JlcXVpcmVfXygyOCk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MCkuZignaXRlcmF0b3InKTsKCgovKioqLyB9KSwKLyogMjE2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjE3KSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDIxNyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDIxOCk7Cl9fd2VicGFja19yZXF1aXJlX18oNzMpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDIyMSk7Cl9fd2VicGFja19yZXF1aXJlX18oMjIyKTsKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpLlN5bWJvbDsKCgovKioqLyB9KSwKLyogMjE4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW0KdmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMTApOwp2YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7CnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7CnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKdmFyIHJlZGVmaW5lID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5OSk7CnZhciBNRVRBID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MCkuS0VZOwp2YXIgJGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOSk7CnZhciBzaGFyZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY1KTsKdmFyIHNldFRvU3RyaW5nVGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSk7CnZhciB1aWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KTsKdmFyIHdrcyA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7CnZhciB3a3NFeHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKTsKdmFyIHdrc0RlZmluZSA9IF9fd2VicGFja19yZXF1aXJlX18oNzEpOwp2YXIgZW51bUtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxOSk7CnZhciBpc0FycmF5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDQpOwp2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKdmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKdmFyIHRvSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpOwp2YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU4KTsKdmFyIGNyZWF0ZURlc2MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTsKdmFyIF9jcmVhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTsKdmFyIGdPUE5FeHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyMCk7CnZhciAkR09QRCA9IF9fd2VicGFja19yZXF1aXJlX18oNTcpOwp2YXIgJERQID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTsKdmFyICRrZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7CnZhciBnT1BEID0gJEdPUEQuZjsKdmFyIGRQID0gJERQLmY7CnZhciBnT1BOID0gZ09QTkV4dC5mOwp2YXIgJFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7CnZhciAkSlNPTiA9IGdsb2JhbC5KU09OOwp2YXIgX3N0cmluZ2lmeSA9ICRKU09OICYmICRKU09OLnN0cmluZ2lmeTsKdmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnOwp2YXIgSElEREVOID0gd2tzKCdfaGlkZGVuJyk7CnZhciBUT19QUklNSVRJVkUgPSB3a3MoJ3RvUHJpbWl0aXZlJyk7CnZhciBpc0VudW0gPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTsKdmFyIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKTsKdmFyIEFsbFN5bWJvbHMgPSBzaGFyZWQoJ3N5bWJvbHMnKTsKdmFyIE9QU3ltYm9scyA9IHNoYXJlZCgnb3Atc3ltYm9scycpOwp2YXIgT2JqZWN0UHJvdG8gPSBPYmplY3RbUFJPVE9UWVBFXTsKdmFyIFVTRV9OQVRJVkUgPSB0eXBlb2YgJFN5bWJvbCA9PSAnZnVuY3Rpb24nOwp2YXIgUU9iamVjdCA9IGdsb2JhbC5RT2JqZWN0OwovLyBEb24ndCB1c2Ugc2V0dGVycyBpbiBRdCBTY3JpcHQsIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xNzMKdmFyIHNldHRlciA9ICFRT2JqZWN0IHx8ICFRT2JqZWN0W1BST1RPVFlQRV0gfHwgIVFPYmplY3RbUFJPVE9UWVBFXS5maW5kQ2hpbGQ7CgovLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODcKdmFyIHNldFN5bWJvbERlc2MgPSBERVNDUklQVE9SUyAmJiAkZmFpbHMoZnVuY3Rpb24gKCkgewogIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHsKICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gZFAodGhpcywgJ2EnLCB7IHZhbHVlOiA3IH0pLmE7IH0KICB9KSkuYSAhPSA3Owp9KSA/IGZ1bmN0aW9uIChpdCwga2V5LCBEKSB7CiAgdmFyIHByb3RvRGVzYyA9IGdPUEQoT2JqZWN0UHJvdG8sIGtleSk7CiAgaWYgKHByb3RvRGVzYykgZGVsZXRlIE9iamVjdFByb3RvW2tleV07CiAgZFAoaXQsIGtleSwgRCk7CiAgaWYgKHByb3RvRGVzYyAmJiBpdCAhPT0gT2JqZWN0UHJvdG8pIGRQKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7Cn0gOiBkUDsKCnZhciB3cmFwID0gZnVuY3Rpb24gKHRhZykgewogIHZhciBzeW0gPSBBbGxTeW1ib2xzW3RhZ10gPSBfY3JlYXRlKCRTeW1ib2xbUFJPVE9UWVBFXSk7CiAgc3ltLl9rID0gdGFnOwogIHJldHVybiBzeW07Cn07Cgp2YXIgaXNTeW1ib2wgPSBVU0VfTkFUSVZFICYmIHR5cGVvZiAkU3ltYm9sLml0ZXJhdG9yID09ICdzeW1ib2wnID8gZnVuY3Rpb24gKGl0KSB7CiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJzsKfSA6IGZ1bmN0aW9uIChpdCkgewogIHJldHVybiBpdCBpbnN0YW5jZW9mICRTeW1ib2w7Cn07Cgp2YXIgJGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgRCkgewogIGlmIChpdCA9PT0gT2JqZWN0UHJvdG8pICRkZWZpbmVQcm9wZXJ0eShPUFN5bWJvbHMsIGtleSwgRCk7CiAgYW5PYmplY3QoaXQpOwogIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7CiAgYW5PYmplY3QoRCk7CiAgaWYgKGhhcyhBbGxTeW1ib2xzLCBrZXkpKSB7CiAgICBpZiAoIUQuZW51bWVyYWJsZSkgewogICAgICBpZiAoIWhhcyhpdCwgSElEREVOKSkgZFAoaXQsIEhJRERFTiwgY3JlYXRlRGVzYygxLCB7fSkpOwogICAgICBpdFtISURERU5dW2tleV0gPSB0cnVlOwogICAgfSBlbHNlIHsKICAgICAgaWYgKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0pIGl0W0hJRERFTl1ba2V5XSA9IGZhbHNlOwogICAgICBEID0gX2NyZWF0ZShELCB7IGVudW1lcmFibGU6IGNyZWF0ZURlc2MoMCwgZmFsc2UpIH0pOwogICAgfSByZXR1cm4gc2V0U3ltYm9sRGVzYyhpdCwga2V5LCBEKTsKICB9IHJldHVybiBkUChpdCwga2V5LCBEKTsKfTsKdmFyICRkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhpdCwgUCkgewogIGFuT2JqZWN0KGl0KTsKICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpOwogIHZhciBpID0gMDsKICB2YXIgbCA9IGtleXMubGVuZ3RoOwogIHZhciBrZXk7CiAgd2hpbGUgKGwgPiBpKSAkZGVmaW5lUHJvcGVydHkoaXQsIGtleSA9IGtleXNbaSsrXSwgUFtrZXldKTsKICByZXR1cm4gaXQ7Cn07CnZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGl0LCBQKSB7CiAgcmV0dXJuIFAgPT09IHVuZGVmaW5lZCA/IF9jcmVhdGUoaXQpIDogJGRlZmluZVByb3BlcnRpZXMoX2NyZWF0ZShpdCksIFApOwp9Owp2YXIgJHByb3BlcnR5SXNFbnVtZXJhYmxlID0gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoa2V5KSB7CiAgdmFyIEUgPSBpc0VudW0uY2FsbCh0aGlzLCBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpKTsKICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpIHJldHVybiBmYWxzZTsKICByZXR1cm4gRSB8fCAhaGFzKHRoaXMsIGtleSkgfHwgIWhhcyhBbGxTeW1ib2xzLCBrZXkpIHx8IGhhcyh0aGlzLCBISURERU4pICYmIHRoaXNbSElEREVOXVtrZXldID8gRSA6IHRydWU7Cn07CnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpIHsKICBpdCA9IHRvSU9iamVjdChpdCk7CiAga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKTsKICBpZiAoaXQgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKSByZXR1cm47CiAgdmFyIEQgPSBnT1BEKGl0LCBrZXkpOwogIGlmIChEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICEoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkpIEQuZW51bWVyYWJsZSA9IHRydWU7CiAgcmV0dXJuIEQ7Cn07CnZhciAkZ2V0T3duUHJvcGVydHlOYW1lcyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHsKICB2YXIgbmFtZXMgPSBnT1BOKHRvSU9iamVjdChpdCkpOwogIHZhciByZXN1bHQgPSBbXTsKICB2YXIgaSA9IDA7CiAgdmFyIGtleTsKICB3aGlsZSAobmFtZXMubGVuZ3RoID4gaSkgewogICAgaWYgKCFoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYga2V5ICE9IEhJRERFTiAmJiBrZXkgIT0gTUVUQSkgcmVzdWx0LnB1c2goa2V5KTsKICB9IHJldHVybiByZXN1bHQ7Cn07CnZhciAkZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSB7CiAgdmFyIElTX09QID0gaXQgPT09IE9iamVjdFByb3RvOwogIHZhciBuYW1lcyA9IGdPUE4oSVNfT1AgPyBPUFN5bWJvbHMgOiB0b0lPYmplY3QoaXQpKTsKICB2YXIgcmVzdWx0ID0gW107CiAgdmFyIGkgPSAwOwogIHZhciBrZXk7CiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIHsKICAgIGlmIChoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYgKElTX09QID8gaGFzKE9iamVjdFByb3RvLCBrZXkpIDogdHJ1ZSkpIHJlc3VsdC5wdXNoKEFsbFN5bWJvbHNba2V5XSk7CiAgfSByZXR1cm4gcmVzdWx0Owp9OwoKLy8gMTkuNC4xLjEgU3ltYm9sKFtkZXNjcmlwdGlvbl0pCmlmICghVVNFX05BVElWRSkgewogICRTeW1ib2wgPSBmdW5jdGlvbiBTeW1ib2woKSB7CiAgICBpZiAodGhpcyBpbnN0YW5jZW9mICRTeW1ib2wpIHRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIScpOwogICAgdmFyIHRhZyA9IHVpZChhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7CiAgICB2YXIgJHNldCA9IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgICBpZiAodGhpcyA9PT0gT2JqZWN0UHJvdG8pICRzZXQuY2FsbChPUFN5bWJvbHMsIHZhbHVlKTsKICAgICAgaWYgKGhhcyh0aGlzLCBISURERU4pICYmIGhhcyh0aGlzW0hJRERFTl0sIHRhZykpIHRoaXNbSElEREVOXVt0YWddID0gZmFsc2U7CiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7CiAgICB9OwogICAgaWYgKERFU0NSSVBUT1JTICYmIHNldHRlcikgc2V0U3ltYm9sRGVzYyhPYmplY3RQcm90bywgdGFnLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgc2V0OiAkc2V0IH0pOwogICAgcmV0dXJuIHdyYXAodGFnKTsKICB9OwogIHJlZGVmaW5lKCRTeW1ib2xbUFJPVE9UWVBFXSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKSB7CiAgICByZXR1cm4gdGhpcy5fazsKICB9KTsKCiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7CiAgJERQLmYgPSAkZGVmaW5lUHJvcGVydHk7CiAgX193ZWJwYWNrX3JlcXVpcmVfXygxMDUpLmYgPSBnT1BORXh0LmYgPSAkZ2V0T3duUHJvcGVydHlOYW1lczsKICBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1KS5mID0gJHByb3BlcnR5SXNFbnVtZXJhYmxlOwogIF9fd2VicGFja19yZXF1aXJlX18oNzIpLmYgPSAkZ2V0T3duUHJvcGVydHlTeW1ib2xzOwoKICBpZiAoREVTQ1JJUFRPUlMgJiYgIV9fd2VicGFja19yZXF1aXJlX18oNjIpKSB7CiAgICByZWRlZmluZShPYmplY3RQcm90bywgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJywgJHByb3BlcnR5SXNFbnVtZXJhYmxlLCB0cnVlKTsKICB9CgogIHdrc0V4dC5mID0gZnVuY3Rpb24gKG5hbWUpIHsKICAgIHJldHVybiB3cmFwKHdrcyhuYW1lKSk7CiAgfTsKfQoKJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwgeyBTeW1ib2w6ICRTeW1ib2wgfSk7Cgpmb3IgKHZhciBlczZTeW1ib2xzID0gKAogIC8vIDE5LjQuMi4yLCAxOS40LjIuMywgMTkuNC4yLjQsIDE5LjQuMi42LCAxOS40LjIuOCwgMTkuNC4yLjksIDE5LjQuMi4xMCwgMTkuNC4yLjExLCAxOS40LjIuMTIsIDE5LjQuMi4xMywgMTkuNC4yLjE0CiAgJ2hhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzJwopLnNwbGl0KCcsJyksIGogPSAwOyBlczZTeW1ib2xzLmxlbmd0aCA+IGo7KXdrcyhlczZTeW1ib2xzW2orK10pOwoKZm9yICh2YXIgd2VsbEtub3duU3ltYm9scyA9ICRrZXlzKHdrcy5zdG9yZSksIGsgPSAwOyB3ZWxsS25vd25TeW1ib2xzLmxlbmd0aCA+IGs7KSB3a3NEZWZpbmUod2VsbEtub3duU3ltYm9sc1trKytdKTsKCiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdTeW1ib2wnLCB7CiAgLy8gMTkuNC4yLjEgU3ltYm9sLmZvcihrZXkpCiAgJ2Zvcic6IGZ1bmN0aW9uIChrZXkpIHsKICAgIHJldHVybiBoYXMoU3ltYm9sUmVnaXN0cnksIGtleSArPSAnJykKICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldCiAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTsKICB9LAogIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKQogIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKHN5bSkgewogICAgaWYgKCFpc1N5bWJvbChzeW0pKSB0aHJvdyBUeXBlRXJyb3Ioc3ltICsgJyBpcyBub3QgYSBzeW1ib2whJyk7CiAgICBmb3IgKHZhciBrZXkgaW4gU3ltYm9sUmVnaXN0cnkpIGlmIChTeW1ib2xSZWdpc3RyeVtrZXldID09PSBzeW0pIHJldHVybiBrZXk7CiAgfSwKICB1c2VTZXR0ZXI6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gdHJ1ZTsgfSwKICB1c2VTaW1wbGU6IGZ1bmN0aW9uICgpIHsgc2V0dGVyID0gZmFsc2U7IH0KfSk7CgokZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0JywgewogIC8vIDE5LjEuMi4yIE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSkKICBjcmVhdGU6ICRjcmVhdGUsCiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpCiAgZGVmaW5lUHJvcGVydHk6ICRkZWZpbmVQcm9wZXJ0eSwKICAvLyAxOS4xLjIuMyBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKQogIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLAogIC8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkKICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I6ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsCiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTykKICBnZXRPd25Qcm9wZXJ0eU5hbWVzOiAkZ2V0T3duUHJvcGVydHlOYW1lcywKICAvLyAxOS4xLjIuOCBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKE8pCiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzCn0pOwoKLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pCiRKU09OICYmICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKCFVU0VfTkFUSVZFIHx8ICRmYWlscyhmdW5jdGlvbiAoKSB7CiAgdmFyIFMgPSAkU3ltYm9sKCk7CiAgLy8gTVMgRWRnZSBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMge30KICAvLyBXZWJLaXQgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIG51bGwKICAvLyBWOCB0aHJvd3Mgb24gYm94ZWQgc3ltYm9scwogIHJldHVybiBfc3RyaW5naWZ5KFtTXSkgIT0gJ1tudWxsXScgfHwgX3N0cmluZ2lmeSh7IGE6IFMgfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9JzsKfSkpLCAnSlNPTicsIHsKICBzdHJpbmdpZnk6IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCkgewogICAgdmFyIGFyZ3MgPSBbaXRdOwogICAgdmFyIGkgPSAxOwogICAgdmFyIHJlcGxhY2VyLCAkcmVwbGFjZXI7CiAgICB3aGlsZSAoYXJndW1lbnRzLmxlbmd0aCA+IGkpIGFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7CiAgICAkcmVwbGFjZXIgPSByZXBsYWNlciA9IGFyZ3NbMV07CiAgICBpZiAoIWlzT2JqZWN0KHJlcGxhY2VyKSAmJiBpdCA9PT0gdW5kZWZpbmVkIHx8IGlzU3ltYm9sKGl0KSkgcmV0dXJuOyAvLyBJRTggcmV0dXJucyBzdHJpbmcgb24gdW5kZWZpbmVkCiAgICBpZiAoIWlzQXJyYXkocmVwbGFjZXIpKSByZXBsYWNlciA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7CiAgICAgIGlmICh0eXBlb2YgJHJlcGxhY2VyID09ICdmdW5jdGlvbicpIHZhbHVlID0gJHJlcGxhY2VyLmNhbGwodGhpcywga2V5LCB2YWx1ZSk7CiAgICAgIGlmICghaXNTeW1ib2wodmFsdWUpKSByZXR1cm4gdmFsdWU7CiAgICB9OwogICAgYXJnc1sxXSA9IHJlcGxhY2VyOwogICAgcmV0dXJuIF9zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3MpOwogIH0KfSk7CgovLyAxOS40LjMuNCBTeW1ib2wucHJvdG90eXBlW0BAdG9QcmltaXRpdmVdKGhpbnQpCiRTeW1ib2xbUFJPVE9UWVBFXVtUT19QUklNSVRJVkVdIHx8IF9fd2VicGFja19yZXF1aXJlX18oMTMpKCRTeW1ib2xbUFJPVE9UWVBFXSwgVE9fUFJJTUlUSVZFLCAkU3ltYm9sW1BST1RPVFlQRV0udmFsdWVPZik7Ci8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmluZ1RhZ10Kc2V0VG9TdHJpbmdUYWcoJFN5bWJvbCwgJ1N5bWJvbCcpOwovLyAyMC4yLjEuOSBNYXRoW0BAdG9TdHJpbmdUYWddCnNldFRvU3RyaW5nVGFnKE1hdGgsICdNYXRoJywgdHJ1ZSk7Ci8vIDI0LjMuMyBKU09OW0BAdG9TdHJpbmdUYWddCnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpOwoKCi8qKiovIH0pLAovKiAyMTkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHMKdmFyIGdldEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTsKdmFyIGdPUFMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcyKTsKdmFyIHBJRSA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpOwptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkgewogIHZhciByZXN1bHQgPSBnZXRLZXlzKGl0KTsKICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjsKICBpZiAoZ2V0U3ltYm9scykgewogICAgdmFyIHN5bWJvbHMgPSBnZXRTeW1ib2xzKGl0KTsKICAgIHZhciBpc0VudW0gPSBwSUUuZjsKICAgIHZhciBpID0gMDsKICAgIHZhciBrZXk7CiAgICB3aGlsZSAoc3ltYm9scy5sZW5ndGggPiBpKSBpZiAoaXNFbnVtLmNhbGwoaXQsIGtleSA9IHN5bWJvbHNbaSsrXSkpIHJlc3VsdC5wdXNoKGtleSk7CiAgfSByZXR1cm4gcmVzdWx0Owp9OwoKCi8qKiovIH0pLAovKiAyMjAgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gZmFsbGJhY2sgZm9yIElFMTEgYnVnZ3kgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgd2l0aCBpZnJhbWUgYW5kIHdpbmRvdwp2YXIgdG9JT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7CnZhciBnT1BOID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDUpLmY7CnZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nOwoKdmFyIHdpbmRvd05hbWVzID0gdHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMKICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTsKCnZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uIChpdCkgewogIHRyeSB7CiAgICByZXR1cm4gZ09QTihpdCk7CiAgfSBjYXRjaCAoZSkgewogICAgcmV0dXJuIHdpbmRvd05hbWVzLnNsaWNlKCk7CiAgfQp9OwoKbW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpIHsKICByZXR1cm4gd2luZG93TmFtZXMgJiYgdG9TdHJpbmcuY2FsbChpdCkgPT0gJ1tvYmplY3QgV2luZG93XScgPyBnZXRXaW5kb3dOYW1lcyhpdCkgOiBnT1BOKHRvSU9iamVjdChpdCkpOwp9OwoKCi8qKiovIH0pLAovKiAyMjEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKX193ZWJwYWNrX3JlcXVpcmVfXyg3MSkoJ2FzeW5jSXRlcmF0b3InKTsKCgovKioqLyB9KSwKLyogMjIyICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCl9fd2VicGFja19yZXF1aXJlX18oNzEpKCdvYnNlcnZhYmxlJyk7CgoKLyoqKi8gfSksCi8qIDIyMyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDIyNCk7CnZhciAkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5PYmplY3Q7Cm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYykgewogIHJldHVybiAkT2JqZWN0LmRlZmluZVByb3BlcnR5KGl0LCBrZXksIGRlc2MpOwp9OwoKCi8qKiovIH0pLAovKiAyMjQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwovLyAxOS4xLjIuNCAvIDE1LjIuMy42IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKQokZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFfX3dlYnBhY2tfcmVxdWlyZV9fKDUpLCAnT2JqZWN0JywgeyBkZWZpbmVQcm9wZXJ0eTogX193ZWJwYWNrX3JlcXVpcmVfXyg2KS5mIH0pOwoKCi8qKiovIH0pLAovKiAyMjUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193ZWJwYWNrX3JlcXVpcmVfXygyMjYpLCBfX2VzTW9kdWxlOiB0cnVlIH07CgovKioqLyB9KSwKLyogMjI2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCl9fd2VicGFja19yZXF1aXJlX18oNzMpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTsKX193ZWJwYWNrX3JlcXVpcmVfXygyOCk7Cl9fd2VicGFja19yZXF1aXJlX18oMjI3KTsKX193ZWJwYWNrX3JlcXVpcmVfXygyMzIpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDIzNCk7Cl9fd2VicGFja19yZXF1aXJlX18oMjM1KTsKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpLk1hcDsKCgovKioqLyB9KSwKLyogMjI3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCnZhciBzdHJvbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwOCk7CnZhciB2YWxpZGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNzUpOwp2YXIgTUFQID0gJ01hcCc7CgovLyAyMy4xIE1hcCBPYmplY3RzCm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTMpKE1BUCwgZnVuY3Rpb24gKGdldCkgewogIHJldHVybiBmdW5jdGlvbiBNYXAoKSB7IHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpOyB9Owp9LCB7CiAgLy8gMjMuMS4zLjYgTWFwLnByb3RvdHlwZS5nZXQoa2V5KQogIGdldDogZnVuY3Rpb24gZ2V0KGtleSkgewogICAgdmFyIGVudHJ5ID0gc3Ryb25nLmdldEVudHJ5KHZhbGlkYXRlKHRoaXMsIE1BUCksIGtleSk7CiAgICByZXR1cm4gZW50cnkgJiYgZW50cnkudjsKICB9LAogIC8vIDIzLjEuMy45IE1hcC5wcm90b3R5cGUuc2V0KGtleSwgdmFsdWUpCiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSkgewogICAgcmV0dXJuIHN0cm9uZy5kZWYodmFsaWRhdGUodGhpcywgTUFQKSwga2V5ID09PSAwID8gMCA6IGtleSwgdmFsdWUpOwogIH0KfSwgc3Ryb25nLCB0cnVlKTsKCgovKioqLyB9KSwKLyogMjI4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTsKdmFyIGNvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpOwp2YXIgZFAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOwp2YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpOwp2YXIgU1BFQ0lFUyA9IF9fd2VicGFja19yZXF1aXJlX18oNCkoJ3NwZWNpZXMnKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSkgewogIHZhciBDID0gdHlwZW9mIGNvcmVbS0VZXSA9PSAnZnVuY3Rpb24nID8gY29yZVtLRVldIDogZ2xvYmFsW0tFWV07CiAgaWYgKERFU0NSSVBUT1JTICYmIEMgJiYgIUNbU1BFQ0lFU10pIGRQLmYoQywgU1BFQ0lFUywgewogICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9CiAgfSk7Cn07CgoKLyoqKi8gfSksCi8qIDIyOSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyAwIC0+IEFycmF5I2ZvckVhY2gKLy8gMSAtPiBBcnJheSNtYXAKLy8gMiAtPiBBcnJheSNmaWx0ZXIKLy8gMyAtPiBBcnJheSNzb21lCi8vIDQgLT4gQXJyYXkjZXZlcnkKLy8gNSAtPiBBcnJheSNmaW5kCi8vIDYgLT4gQXJyYXkjZmluZEluZGV4CnZhciBjdHggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTsKdmFyIElPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU0KTsKdmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMCk7CnZhciB0b0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpOwp2YXIgYXNjID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMzApOwptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChUWVBFLCAkY3JlYXRlKSB7CiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTsKICB2YXIgSVNfRklMVEVSID0gVFlQRSA9PSAyOwogIHZhciBJU19TT01FID0gVFlQRSA9PSAzOwogIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDsKICB2YXIgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNjsKICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDsKICB2YXIgY3JlYXRlID0gJGNyZWF0ZSB8fCBhc2M7CiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgY2FsbGJhY2tmbiwgdGhhdCkgewogICAgdmFyIE8gPSB0b09iamVjdCgkdGhpcyk7CiAgICB2YXIgc2VsZiA9IElPYmplY3QoTyk7CiAgICB2YXIgZiA9IGN0eChjYWxsYmFja2ZuLCB0aGF0LCAzKTsKICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7CiAgICB2YXIgaW5kZXggPSAwOwogICAgdmFyIHJlc3VsdCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiA/IGNyZWF0ZSgkdGhpcywgMCkgOiB1bmRlZmluZWQ7CiAgICB2YXIgdmFsLCByZXM7CiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKE5PX0hPTEVTIHx8IGluZGV4IGluIHNlbGYpIHsKICAgICAgdmFsID0gc2VsZltpbmRleF07CiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7CiAgICAgIGlmIChUWVBFKSB7CiAgICAgICAgaWYgKElTX01BUCkgcmVzdWx0W2luZGV4XSA9IHJlczsgICAvLyBtYXAKICAgICAgICBlbHNlIGlmIChyZXMpIHN3aXRjaCAoVFlQRSkgewogICAgICAgICAgY2FzZSAzOiByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgLy8gc29tZQogICAgICAgICAgY2FzZSA1OiByZXR1cm4gdmFsOyAgICAgICAgICAgICAgLy8gZmluZAogICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgLy8gZmluZEluZGV4CiAgICAgICAgICBjYXNlIDI6IHJlc3VsdC5wdXNoKHZhbCk7ICAgICAgICAvLyBmaWx0ZXIKICAgICAgICB9IGVsc2UgaWYgKElTX0VWRVJZKSByZXR1cm4gZmFsc2U7IC8vIGV2ZXJ5CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBJU19GSU5EX0lOREVYID8gLTEgOiBJU19TT01FIHx8IElTX0VWRVJZID8gSVNfRVZFUlkgOiByZXN1bHQ7CiAgfTsKfTsKCgovKioqLyB9KSwKLyogMjMwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIDkuNC4yLjMgQXJyYXlTcGVjaWVzQ3JlYXRlKG9yaWdpbmFsQXJyYXksIGxlbmd0aCkKdmFyIHNwZWNpZXNDb25zdHJ1Y3RvciA9IF9fd2VicGFja19yZXF1aXJlX18oMjMxKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9yaWdpbmFsLCBsZW5ndGgpIHsKICByZXR1cm4gbmV3IChzcGVjaWVzQ29uc3RydWN0b3Iob3JpZ2luYWwpKShsZW5ndGgpOwp9OwoKCi8qKiovIH0pLAovKiAyMzEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTsKdmFyIGlzQXJyYXkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNCk7CnZhciBTUEVDSUVTID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KSgnc3BlY2llcycpOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWwpIHsKICB2YXIgQzsKICBpZiAoaXNBcnJheShvcmlnaW5hbCkpIHsKICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjsKICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrCiAgICBpZiAodHlwZW9mIEMgPT0gJ2Z1bmN0aW9uJyAmJiAoQyA9PT0gQXJyYXkgfHwgaXNBcnJheShDLnByb3RvdHlwZSkpKSBDID0gdW5kZWZpbmVkOwogICAgaWYgKGlzT2JqZWN0KEMpKSB7CiAgICAgIEMgPSBDW1NQRUNJRVNdOwogICAgICBpZiAoQyA9PT0gbnVsbCkgQyA9IHVuZGVmaW5lZDsKICAgIH0KICB9IHJldHVybiBDID09PSB1bmRlZmluZWQgPyBBcnJheSA6IEM7Cn07CgoKLyoqKi8gfSksCi8qIDIzMiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OCnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKCiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5SLCAnTWFwJywgeyB0b0pTT046IF9fd2VicGFja19yZXF1aXJlX18oMTE0KSgnTWFwJykgfSk7CgoKLyoqKi8gfSksCi8qIDIzMyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgZm9yT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKTsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXIsIElURVJBVE9SKSB7CiAgdmFyIHJlc3VsdCA9IFtdOwogIGZvck9mKGl0ZXIsIGZhbHNlLCByZXN1bHQucHVzaCwgcmVzdWx0LCBJVEVSQVRPUik7CiAgcmV0dXJuIHJlc3VsdDsKfTsKCgovKioqLyB9KSwKLyogMjM0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLW1hcC5vZgpfX3dlYnBhY2tfcmVxdWlyZV9fKDExNSkoJ01hcCcpOwoKCi8qKiovIH0pLAovKiAyMzUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtbWFwLmZyb20KX193ZWJwYWNrX3JlcXVpcmVfXygxMTYpKCdNYXAnKTsKCgovKioqLyB9KSwKLyogMjM2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgpleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOwoKdmFyIF90eXBlb2YyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OSk7Cgp2YXIgX3R5cGVvZjMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90eXBlb2YyKTsKCmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9CgpleHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoc2VsZiwgY2FsbCkgewogIGlmICghc2VsZikgewogICAgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTsKICB9CgogIHJldHVybiBjYWxsICYmICgodHlwZW9mIGNhbGwgPT09ICJ1bmRlZmluZWQiID8gInVuZGVmaW5lZCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoY2FsbCkpID09PSAib2JqZWN0IiB8fCB0eXBlb2YgY2FsbCA9PT0gImZ1bmN0aW9uIikgPyBjYWxsIDogc2VsZjsKfTsKCi8qKiovIH0pLAovKiAyMzcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Cgp2YXIgX3NldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMzgpOwoKdmFyIF9zZXRQcm90b3R5cGVPZjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZXRQcm90b3R5cGVPZik7Cgp2YXIgX2NyZWF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMjQyKTsKCnZhciBfY3JlYXRlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZSk7Cgp2YXIgX3R5cGVvZjIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KTsKCnZhciBfdHlwZW9mMyA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3R5cGVvZjIpOwoKZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH0KCmV4cG9ydHMuZGVmYXVsdCA9IGZ1bmN0aW9uIChzdWJDbGFzcywgc3VwZXJDbGFzcykgewogIGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gImZ1bmN0aW9uIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7CiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIgKyAodHlwZW9mIHN1cGVyQ2xhc3MgPT09ICJ1bmRlZmluZWQiID8gInVuZGVmaW5lZCIgOiAoMCwgX3R5cGVvZjMuZGVmYXVsdCkoc3VwZXJDbGFzcykpKTsKICB9CgogIHN1YkNsYXNzLnByb3RvdHlwZSA9ICgwLCBfY3JlYXRlMi5kZWZhdWx0KShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7CiAgICBjb25zdHJ1Y3RvcjogewogICAgICB2YWx1ZTogc3ViQ2xhc3MsCiAgICAgIGVudW1lcmFibGU6IGZhbHNlLAogICAgICB3cml0YWJsZTogdHJ1ZSwKICAgICAgY29uZmlndXJhYmxlOiB0cnVlCiAgICB9CiAgfSk7CiAgaWYgKHN1cGVyQ2xhc3MpIF9zZXRQcm90b3R5cGVPZjIuZGVmYXVsdCA/ICgwLCBfc2V0UHJvdG90eXBlT2YyLmRlZmF1bHQpKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7Cn07CgovKioqLyB9KSwKLyogMjM4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjM5KSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDIzOSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDI0MCk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5PYmplY3Quc2V0UHJvdG90eXBlT2Y7CgoKLyoqKi8gfSksCi8qIDI0MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyAxOS4xLjMuMTkgT2JqZWN0LnNldFByb3RvdHlwZU9mKE8sIHByb3RvKQp2YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7CiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0JywgeyBzZXRQcm90b3R5cGVPZjogX193ZWJwYWNrX3JlcXVpcmVfXygyNDEpLnNldCB9KTsKCgovKioqLyB9KSwKLyogMjQxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLgovKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqLwp2YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpOwp2YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0KTsKdmFyIGNoZWNrID0gZnVuY3Rpb24gKE8sIHByb3RvKSB7CiAgYW5PYmplY3QoTyk7CiAgaWYgKCFpc09iamVjdChwcm90bykgJiYgcHJvdG8gIT09IG51bGwpIHRocm93IFR5cGVFcnJvcihwcm90byArICI6IGNhbid0IHNldCBhcyBwcm90b3R5cGUhIik7Cn07Cm1vZHVsZS5leHBvcnRzID0gewogIHNldDogT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IC8vIGVzbGludC1kaXNhYmxlLWxpbmUKICAgIGZ1bmN0aW9uICh0ZXN0LCBidWdneSwgc2V0KSB7CiAgICAgIHRyeSB7CiAgICAgICAgc2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCkoRnVuY3Rpb24uY2FsbCwgX193ZWJwYWNrX3JlcXVpcmVfXyg1NykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTsKICAgICAgICBzZXQodGVzdCwgW10pOwogICAgICAgIGJ1Z2d5ID0gISh0ZXN0IGluc3RhbmNlb2YgQXJyYXkpOwogICAgICB9IGNhdGNoIChlKSB7IGJ1Z2d5ID0gdHJ1ZTsgfQogICAgICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHsKICAgICAgICBjaGVjayhPLCBwcm90byk7CiAgICAgICAgaWYgKGJ1Z2d5KSBPLl9fcHJvdG9fXyA9IHByb3RvOwogICAgICAgIGVsc2Ugc2V0KE8sIHByb3RvKTsKICAgICAgICByZXR1cm4gTzsKICAgICAgfTsKICAgIH0oe30sIGZhbHNlKSA6IHVuZGVmaW5lZCksCiAgY2hlY2s6IGNoZWNrCn07CgoKLyoqKi8gfSksCi8qIDI0MiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IHsgImRlZmF1bHQiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0MyksIF9fZXNNb2R1bGU6IHRydWUgfTsKCi8qKiovIH0pLAovKiAyNDMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKX193ZWJwYWNrX3JlcXVpcmVfXygyNDQpOwp2YXIgJE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMikuT2JqZWN0Owptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZShQLCBEKSB7CiAgcmV0dXJuICRPYmplY3QuY3JlYXRlKFAsIEQpOwp9OwoKCi8qKiovIH0pLAovKiAyNDQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwovLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSkKJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7IGNyZWF0ZTogX193ZWJwYWNrX3JlcXVpcmVfXygzNikgfSk7CgoKLyoqKi8gfSksCi8qIDI0NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IHsgImRlZmF1bHQiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0NiksIF9fZXNNb2R1bGU6IHRydWUgfTsKCi8qKiovIH0pLAovKiAyNDYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKX193ZWJwYWNrX3JlcXVpcmVfXygyNDcpOwp2YXIgJE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMikuT2JqZWN0Owptb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMoVCwgRCkgewogIHJldHVybiAkT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVCwgRCk7Cn07CgoKLyoqKi8gfSksCi8qIDI0NyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgJGV4cG9ydCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7Ci8vIDE5LjEuMi4zIC8gMTUuMi4zLjcgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcykKJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhX193ZWJwYWNrX3JlcXVpcmVfXyg1KSwgJ09iamVjdCcsIHsgZGVmaW5lUHJvcGVydGllczogX193ZWJwYWNrX3JlcXVpcmVfXygxMDApIH0pOwoKCi8qKiovIH0pLAovKiAyNDggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKdmFyIHBTbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTsKdmFyIG9iamVjdEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0OSk7CnZhciBpc0FyZ3VtZW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjUwKTsKCnZhciBkZWVwRXF1YWwgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBvcHRzKSB7CiAgaWYgKCFvcHRzKSBvcHRzID0ge307CiAgLy8gNy4xLiBBbGwgaWRlbnRpY2FsIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uCiAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpIHsKICAgIHJldHVybiB0cnVlOwoKICB9IGVsc2UgaWYgKGFjdHVhbCBpbnN0YW5jZW9mIERhdGUgJiYgZXhwZWN0ZWQgaW5zdGFuY2VvZiBEYXRlKSB7CiAgICByZXR1cm4gYWN0dWFsLmdldFRpbWUoKSA9PT0gZXhwZWN0ZWQuZ2V0VGltZSgpOwoKICAvLyA3LjMuIE90aGVyIHBhaXJzIHRoYXQgZG8gbm90IGJvdGggcGFzcyB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcsCiAgLy8gZXF1aXZhbGVuY2UgaXMgZGV0ZXJtaW5lZCBieSA9PS4KICB9IGVsc2UgaWYgKCFhY3R1YWwgfHwgIWV4cGVjdGVkIHx8IHR5cGVvZiBhY3R1YWwgIT0gJ29iamVjdCcgJiYgdHlwZW9mIGV4cGVjdGVkICE9ICdvYmplY3QnKSB7CiAgICByZXR1cm4gb3B0cy5zdHJpY3QgPyBhY3R1YWwgPT09IGV4cGVjdGVkIDogYWN0dWFsID09IGV4cGVjdGVkOwoKICAvLyA3LjQuIEZvciBhbGwgb3RoZXIgT2JqZWN0IHBhaXJzLCBpbmNsdWRpbmcgQXJyYXkgb2JqZWN0cywgZXF1aXZhbGVuY2UgaXMKICAvLyBkZXRlcm1pbmVkIGJ5IGhhdmluZyB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcyAoYXMgdmVyaWZpZWQKICAvLyB3aXRoIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCksIHRoZSBzYW1lIHNldCBvZiBrZXlzCiAgLy8gKGFsdGhvdWdoIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBvcmRlciksIGVxdWl2YWxlbnQgdmFsdWVzIGZvciBldmVyeQogIC8vIGNvcnJlc3BvbmRpbmcga2V5LCBhbmQgYW4gaWRlbnRpY2FsICdwcm90b3R5cGUnIHByb3BlcnR5LiBOb3RlOiB0aGlzCiAgLy8gYWNjb3VudHMgZm9yIGJvdGggbmFtZWQgYW5kIGluZGV4ZWQgcHJvcGVydGllcyBvbiBBcnJheXMuCiAgfSBlbHNlIHsKICAgIHJldHVybiBvYmpFcXVpdihhY3R1YWwsIGV4cGVjdGVkLCBvcHRzKTsKICB9Cn0KCmZ1bmN0aW9uIGlzVW5kZWZpbmVkT3JOdWxsKHZhbHVlKSB7CiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7Cn0KCmZ1bmN0aW9uIGlzQnVmZmVyICh4KSB7CiAgaWYgKCF4IHx8IHR5cGVvZiB4ICE9PSAnb2JqZWN0JyB8fCB0eXBlb2YgeC5sZW5ndGggIT09ICdudW1iZXInKSByZXR1cm4gZmFsc2U7CiAgaWYgKHR5cGVvZiB4LmNvcHkgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHguc2xpY2UgIT09ICdmdW5jdGlvbicpIHsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgaWYgKHgubGVuZ3RoID4gMCAmJiB0eXBlb2YgeFswXSAhPT0gJ251bWJlcicpIHJldHVybiBmYWxzZTsKICByZXR1cm4gdHJ1ZTsKfQoKZnVuY3Rpb24gb2JqRXF1aXYoYSwgYiwgb3B0cykgewogIHZhciBpLCBrZXk7CiAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGEpIHx8IGlzVW5kZWZpbmVkT3JOdWxsKGIpKQogICAgcmV0dXJuIGZhbHNlOwogIC8vIGFuIGlkZW50aWNhbCAncHJvdG90eXBlJyBwcm9wZXJ0eS4KICBpZiAoYS5wcm90b3R5cGUgIT09IGIucHJvdG90eXBlKSByZXR1cm4gZmFsc2U7CiAgLy9+fn5JJ3ZlIG1hbmFnZWQgdG8gYnJlYWsgT2JqZWN0LmtleXMgdGhyb3VnaCBzY3Jld3kgYXJndW1lbnRzIHBhc3NpbmcuCiAgLy8gICBDb252ZXJ0aW5nIHRvIGFycmF5IHNvbHZlcyB0aGUgcHJvYmxlbS4KICBpZiAoaXNBcmd1bWVudHMoYSkpIHsKICAgIGlmICghaXNBcmd1bWVudHMoYikpIHsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgYSA9IHBTbGljZS5jYWxsKGEpOwogICAgYiA9IHBTbGljZS5jYWxsKGIpOwogICAgcmV0dXJuIGRlZXBFcXVhbChhLCBiLCBvcHRzKTsKICB9CiAgaWYgKGlzQnVmZmVyKGEpKSB7CiAgICBpZiAoIWlzQnVmZmVyKGIpKSB7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHJldHVybiBmYWxzZTsKICAgIGZvciAoaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmIChhW2ldICE9PSBiW2ldKSByZXR1cm4gZmFsc2U7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgdHJ5IHsKICAgIHZhciBrYSA9IG9iamVjdEtleXMoYSksCiAgICAgICAga2IgPSBvYmplY3RLZXlzKGIpOwogIH0gY2F0Y2ggKGUpIHsvL2hhcHBlbnMgd2hlbiBvbmUgaXMgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgdGhlIG90aGVyIGlzbid0CiAgICByZXR1cm4gZmFsc2U7CiAgfQogIC8vIGhhdmluZyB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcyAoa2V5cyBpbmNvcnBvcmF0ZXMKICAvLyBoYXNPd25Qcm9wZXJ0eSkKICBpZiAoa2EubGVuZ3RoICE9IGtiLmxlbmd0aCkKICAgIHJldHVybiBmYWxzZTsKICAvL3RoZSBzYW1lIHNldCBvZiBrZXlzIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgb3JkZXIpLAogIGthLnNvcnQoKTsKICBrYi5zb3J0KCk7CiAgLy9+fn5jaGVhcCBrZXkgdGVzdAogIGZvciAoaSA9IGthLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICBpZiAoa2FbaV0gIT0ga2JbaV0pCiAgICAgIHJldHVybiBmYWxzZTsKICB9CiAgLy9lcXVpdmFsZW50IHZhbHVlcyBmb3IgZXZlcnkgY29ycmVzcG9uZGluZyBrZXksIGFuZAogIC8vfn5+cG9zc2libHkgZXhwZW5zaXZlIGRlZXAgdGVzdAogIGZvciAoaSA9IGthLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICBrZXkgPSBrYVtpXTsKICAgIGlmICghZGVlcEVxdWFsKGFba2V5XSwgYltrZXldLCBvcHRzKSkgcmV0dXJuIGZhbHNlOwogIH0KICByZXR1cm4gdHlwZW9mIGEgPT09IHR5cGVvZiBiOwp9CgoKLyoqKi8gfSksCi8qIDI0OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgpleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2YgT2JqZWN0LmtleXMgPT09ICdmdW5jdGlvbicKICA/IE9iamVjdC5rZXlzIDogc2hpbTsKCmV4cG9ydHMuc2hpbSA9IHNoaW07CmZ1bmN0aW9uIHNoaW0gKG9iaikgewogIHZhciBrZXlzID0gW107CiAgZm9yICh2YXIga2V5IGluIG9iaikga2V5cy5wdXNoKGtleSk7CiAgcmV0dXJuIGtleXM7Cn0KCgovKioqLyB9KSwKLyogMjUwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCnZhciBzdXBwb3J0c0FyZ3VtZW50c0NsYXNzID0gKGZ1bmN0aW9uKCl7CiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmd1bWVudHMpCn0pKCkgPT0gJ1tvYmplY3QgQXJndW1lbnRzXSc7CgpleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBzdXBwb3J0c0FyZ3VtZW50c0NsYXNzID8gc3VwcG9ydGVkIDogdW5zdXBwb3J0ZWQ7CgpleHBvcnRzLnN1cHBvcnRlZCA9IHN1cHBvcnRlZDsKZnVuY3Rpb24gc3VwcG9ydGVkKG9iamVjdCkgewogIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KSA9PSAnW29iamVjdCBBcmd1bWVudHNdJzsKfTsKCmV4cG9ydHMudW5zdXBwb3J0ZWQgPSB1bnN1cHBvcnRlZDsKZnVuY3Rpb24gdW5zdXBwb3J0ZWQob2JqZWN0KXsKICByZXR1cm4gb2JqZWN0ICYmCiAgICB0eXBlb2Ygb2JqZWN0ID09ICdvYmplY3QnICYmCiAgICB0eXBlb2Ygb2JqZWN0Lmxlbmd0aCA9PSAnbnVtYmVyJyAmJgogICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgJ2NhbGxlZScpICYmCiAgICAhT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgJ2NhbGxlZScpIHx8CiAgICBmYWxzZTsKfTsKCgovKioqLyB9KSwKLyogMjUxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjUyKSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDI1MiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDI1Myk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5PYmplY3QuYXNzaWduOwoKCi8qKiovIH0pLAovKiAyNTMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMTkuMS4zLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSkKdmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwoKJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYsICdPYmplY3QnLCB7IGFzc2lnbjogX193ZWJwYWNrX3JlcXVpcmVfXygyNTQpIH0pOwoKCi8qKiovIH0pLAovKiAyNTQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKQp2YXIgZ2V0S2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpOwp2YXIgZ09QUyA9IF9fd2VicGFja19yZXF1aXJlX18oNzIpOwp2YXIgcElFID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7CnZhciB0b09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzApOwp2YXIgSU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNTQpOwp2YXIgJGFzc2lnbiA9IE9iamVjdC5hc3NpZ247CgovLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1ZykKbW9kdWxlLmV4cG9ydHMgPSAhJGFzc2lnbiB8fCBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KShmdW5jdGlvbiAoKSB7CiAgdmFyIEEgPSB7fTsKICB2YXIgQiA9IHt9OwogIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZgogIHZhciBTID0gU3ltYm9sKCk7CiAgdmFyIEsgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnOwogIEFbU10gPSA3OwogIEsuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGspIHsgQltrXSA9IGs7IH0pOwogIHJldHVybiAkYXNzaWduKHt9LCBBKVtTXSAhPSA3IHx8IE9iamVjdC5rZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBLOwp9KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzCiAgdmFyIFQgPSB0b09iamVjdCh0YXJnZXQpOwogIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDsKICB2YXIgaW5kZXggPSAxOwogIHZhciBnZXRTeW1ib2xzID0gZ09QUy5mOwogIHZhciBpc0VudW0gPSBwSUUuZjsKICB3aGlsZSAoYUxlbiA+IGluZGV4KSB7CiAgICB2YXIgUyA9IElPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKTsKICAgIHZhciBrZXlzID0gZ2V0U3ltYm9scyA/IGdldEtleXMoUykuY29uY2F0KGdldFN5bWJvbHMoUykpIDogZ2V0S2V5cyhTKTsKICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDsKICAgIHZhciBqID0gMDsKICAgIHZhciBrZXk7CiAgICB3aGlsZSAobGVuZ3RoID4gaikgaWYgKGlzRW51bS5jYWxsKFMsIGtleSA9IGtleXNbaisrXSkpIFRba2V5XSA9IFNba2V5XTsKICB9IHJldHVybiBUOwp9IDogJGFzc2lnbjsKCgovKioqLyB9KSwKLyogMjU1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjU2KSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDI1NiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDI1Nyk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5TdHJpbmcuZnJvbUNvZGVQb2ludDsKCgovKioqLyB9KSwKLyogMjU3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciAkZXhwb3J0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTsKdmFyIHRvQWJzb2x1dGVJbmRleCA9IF9fd2VicGFja19yZXF1aXJlX18oMTAyKTsKdmFyIGZyb21DaGFyQ29kZSA9IFN0cmluZy5mcm9tQ2hhckNvZGU7CnZhciAkZnJvbUNvZGVQb2ludCA9IFN0cmluZy5mcm9tQ29kZVBvaW50OwoKLy8gbGVuZ3RoIHNob3VsZCBiZSAxLCBvbGQgRkYgcHJvYmxlbQokZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghISRmcm9tQ29kZVBvaW50ICYmICRmcm9tQ29kZVBvaW50Lmxlbmd0aCAhPSAxKSwgJ1N0cmluZycsIHsKICAvLyAyMS4xLjIuMiBTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5jb2RlUG9pbnRzKQogIGZyb21Db2RlUG9pbnQ6IGZ1bmN0aW9uIGZyb21Db2RlUG9pbnQoeCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzCiAgICB2YXIgcmVzID0gW107CiAgICB2YXIgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7CiAgICB2YXIgaSA9IDA7CiAgICB2YXIgY29kZTsKICAgIHdoaWxlIChhTGVuID4gaSkgewogICAgICBjb2RlID0gK2FyZ3VtZW50c1tpKytdOwogICAgICBpZiAodG9BYnNvbHV0ZUluZGV4KGNvZGUsIDB4MTBmZmZmKSAhPT0gY29kZSkgdGhyb3cgUmFuZ2VFcnJvcihjb2RlICsgJyBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Jyk7CiAgICAgIHJlcy5wdXNoKGNvZGUgPCAweDEwMDAwCiAgICAgICAgPyBmcm9tQ2hhckNvZGUoY29kZSkKICAgICAgICA6IGZyb21DaGFyQ29kZSgoKGNvZGUgLT0gMHgxMDAwMCkgPj4gMTApICsgMHhkODAwLCBjb2RlICUgMHg0MDAgKyAweGRjMDApCiAgICAgICk7CiAgICB9IHJldHVybiByZXMuam9pbignJyk7CiAgfQp9KTsKCgovKioqLyB9KSwKLyogMjU4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCm1vZHVsZS5leHBvcnRzID0geyAiZGVmYXVsdCI6IF9fd2VicGFja19yZXF1aXJlX18oMjU5KSwgX19lc01vZHVsZTogdHJ1ZSB9OwoKLyoqKi8gfSksCi8qIDI1OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgpfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTsKX193ZWJwYWNrX3JlcXVpcmVfXygyNjApOwptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMikuQXJyYXkuZnJvbTsKCgovKioqLyB9KSwKLyogMjYwICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCnZhciBjdHggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTsKdmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwp2YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTsKdmFyIGNhbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMSk7CnZhciBpc0FycmF5SXRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEyKTsKdmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNyk7CnZhciBjcmVhdGVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oMjYxKTsKdmFyIGdldEl0ZXJGbiA9IF9fd2VicGFja19yZXF1aXJlX18oNjcpOwoKJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhX193ZWJwYWNrX3JlcXVpcmVfXygyNjIpKGZ1bmN0aW9uIChpdGVyKSB7IEFycmF5LmZyb20oaXRlcik7IH0pLCAnQXJyYXknLCB7CiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKQogIGZyb206IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHsKICAgIHZhciBPID0gdG9PYmplY3QoYXJyYXlMaWtlKTsKICAgIHZhciBDID0gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyA/IHRoaXMgOiBBcnJheTsKICAgIHZhciBhTGVuID0gYXJndW1lbnRzLmxlbmd0aDsKICAgIHZhciBtYXBmbiA9IGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkOwogICAgdmFyIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkOwogICAgdmFyIGluZGV4ID0gMDsKICAgIHZhciBpdGVyRm4gPSBnZXRJdGVyRm4oTyk7CiAgICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yOwogICAgaWYgKG1hcHBpbmcpIG1hcGZuID0gY3R4KG1hcGZuLCBhTGVuID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCwgMik7CiAgICAvLyBpZiBvYmplY3QgaXNuJ3QgaXRlcmFibGUgb3IgaXQncyBhcnJheSB3aXRoIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2Ugc2ltcGxlIGNhc2UKICAgIGlmIChpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSkgewogICAgICBmb3IgKGl0ZXJhdG9yID0gaXRlckZuLmNhbGwoTyksIHJlc3VsdCA9IG5ldyBDKCk7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKykgewogICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBjYWxsKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlKTsKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpOwogICAgICBmb3IgKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7CiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7CiAgICAgIH0KICAgIH0KICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDsKICAgIHJldHVybiByZXN1bHQ7CiAgfQp9KTsKCgovKioqLyB9KSwKLyogMjYxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCnZhciAkZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpOwp2YXIgY3JlYXRlRGVzYyA9IF9fd2VicGFja19yZXF1aXJlX18oMjcpOwoKbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBpbmRleCwgdmFsdWUpIHsKICBpZiAoaW5kZXggaW4gb2JqZWN0KSAkZGVmaW5lUHJvcGVydHkuZihvYmplY3QsIGluZGV4LCBjcmVhdGVEZXNjKDAsIHZhbHVlKSk7CiAgZWxzZSBvYmplY3RbaW5kZXhdID0gdmFsdWU7Cn07CgoKLyoqKi8gfSksCi8qIDI2MiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpKCdpdGVyYXRvcicpOwp2YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7Cgp0cnkgewogIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTsKICByaXRlclsncmV0dXJuJ10gPSBmdW5jdGlvbiAoKSB7IFNBRkVfQ0xPU0lORyA9IHRydWU7IH07CiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWwKICBBcnJheS5mcm9tKHJpdGVyLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pOwp9IGNhdGNoIChlKSB7IC8qIGVtcHR5ICovIH0KCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIHNraXBDbG9zaW5nKSB7CiAgaWYgKCFza2lwQ2xvc2luZyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7CiAgdmFyIHNhZmUgPSBmYWxzZTsKICB0cnkgewogICAgdmFyIGFyciA9IFs3XTsKICAgIHZhciBpdGVyID0gYXJyW0lURVJBVE9SXSgpOwogICAgaXRlci5uZXh0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4geyBkb25lOiBzYWZlID0gdHJ1ZSB9OyB9OwogICAgYXJyW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGl0ZXI7IH07CiAgICBleGVjKGFycik7CiAgfSBjYXRjaCAoZSkgeyAvKiBlbXB0eSAqLyB9CiAgcmV0dXJuIHNhZmU7Cn07CgoKLyoqKi8gfSksCi8qIDI2MyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IHsgImRlZmF1bHQiOiBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2NCksIF9fZXNNb2R1bGU6IHRydWUgfTsKCi8qKiovIH0pLAovKiAyNjQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKX193ZWJwYWNrX3JlcXVpcmVfXyg3Myk7Cl9fd2VicGFja19yZXF1aXJlX18oMjQpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTsKX193ZWJwYWNrX3JlcXVpcmVfXygyNjUpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDI2Nik7Cl9fd2VicGFja19yZXF1aXJlX18oMjY3KTsKX193ZWJwYWNrX3JlcXVpcmVfXygyNjgpOwptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMikuU2V0OwoKCi8qKiovIH0pLAovKiAyNjUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKdmFyIHN0cm9uZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTA4KTsKdmFyIHZhbGlkYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NSk7CnZhciBTRVQgPSAnU2V0JzsKCi8vIDIzLjIgU2V0IE9iamVjdHMKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMykoU0VULCBmdW5jdGlvbiAoZ2V0KSB7CiAgcmV0dXJuIGZ1bmN0aW9uIFNldCgpIHsgcmV0dXJuIGdldCh0aGlzLCBhcmd1bWVudHMubGVuZ3RoID4gMCA/IGFyZ3VtZW50c1swXSA6IHVuZGVmaW5lZCk7IH07Cn0sIHsKICAvLyAyMy4yLjMuMSBTZXQucHJvdG90eXBlLmFkZCh2YWx1ZSkKICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSkgewogICAgcmV0dXJuIHN0cm9uZy5kZWYodmFsaWRhdGUodGhpcywgU0VUKSwgdmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDAgOiB2YWx1ZSwgdmFsdWUpOwogIH0KfSwgc3Ryb25nKTsKCgovKioqLyB9KSwKLyogMjY2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9EYXZpZEJydWFudC9NYXAtU2V0LnByb3RvdHlwZS50b0pTT04KdmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwoKJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdTZXQnLCB7IHRvSlNPTjogX193ZWJwYWNrX3JlcXVpcmVfXygxMTQpKCdTZXQnKSB9KTsKCgovKioqLyB9KSwKLyogMjY3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vcHJvcG9zYWwtc2V0bWFwLW9mZnJvbS8jc2VjLXNldC5vZgpfX3dlYnBhY2tfcmVxdWlyZV9fKDExNSkoJ1NldCcpOwoKCi8qKiovIH0pLAovKiAyNjggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9wcm9wb3NhbC1zZXRtYXAtb2Zmcm9tLyNzZWMtc2V0LmZyb20KX193ZWJwYWNrX3JlcXVpcmVfXygxMTYpKCdTZXQnKTsKCgovKioqLyB9KSwKLyogMjY5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihCdWZmZXIpIHsvLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuOS4xCnZhciBDQVRFR09SWV9CSVRTLCBDQVRFR09SWV9NQVNLLCBDQVRFR09SWV9TSElGVCwgQ09NQklOSU5HX0JJVFMsIENPTUJJTklOR19NQVNLLCBDT01CSU5JTkdfU0hJRlQsIEVBV19CSVRTLCBFQVdfTUFTSywgRUFXX1NISUZULCBOVU1CRVJfQklUUywgTlVNQkVSX01BU0ssIFNDUklQVF9CSVRTLCBTQ1JJUFRfTUFTSywgU0NSSVBUX1NISUZULCBVbmljb2RlVHJpZSwgYml0cywgZGF0YSwgZnMsIGxvZzIsIHRyaWU7CgpVbmljb2RlVHJpZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDMpOwoKZGF0YSA9IF9fd2VicGFja19yZXF1aXJlX18oMjcwKTsKCgoKdHJpZSA9IG5ldyBVbmljb2RlVHJpZShCdWZmZXIoIkFCRUFBQUFBQUFBQUVLaVE1WmxwV0ZQWDJ2ZDczbFByYWZXSWRRQmxpclVxS2dnS0lxT2tXaFZ4Z0dKRlpJeUNpTWdRSVVDQVFOSWpSeEVab3FJaVFvZ2FCZ2NHQVpraEVaRkVRSWlNQVFLSkVDSEdFRUlJbWNpd1gyeDdUckducCt1OW5nL3ZsMmRmWE5sSmR2WmE2Lzd0Ly9yZjkxcE1EcUhmUE5OUUJnTDhzamNjU05SZGJSYzl1V0hYNU1udmJYZllYRFdZLzNDeUlucUZYdlRrUUprL0xmM2o1NDl2cGlRU3RCMTNnMDNXaHJNM0xMSnNjTjdOVTZ4MnNzTmtvOHlDUGxPZzh0M3pnMnZQOXUzbU95cWVscGVoTGtTRWk2ZFh4QXZYeVhQL3VlL2xocnd6NzFiZFBONjc4MWxrL1B1MWE3THVlSndjSExDeHJxMkpqZmtTNjV5d2Q3M2ZpbVBtRVY4ZDJucGUxOVBXZ1MzM1pYZmpSZ3hESERlZDFUNnhLM3FaczJtWW9lOUZvZisyUDJ1S1FxL3VWdzJRUDRjenFxZHdMc3hyVis3ODgrWWtuMXNidXNkcC85SHZEOHM2VVAvUmMxand1ZzNyTjMyejhkdkNlM2tQQ3U3bmM3Nm5QMy8xOHZXTE5tcG5VMnRMUi9QaDZRVEpsOGxYbkE2MnZ0cXkrZEhEb0hNOCtSdUxCUkhpMkVqSVpIY1k1ZlA3VWN0WGZKMXg3Y2IxSC8vSkppTjQwYjkwU09mOXZrTkRQcWhEOFllVnY3YjB3ekhYbmpmZG92dUJwODc0blQwZDRNOTkrMjVzWW5TalhESDdaMFA2Q0IzK2U2Q3pTMU9QdkRaaEM3MkkyWDNSdnpWVS9JK2ZJYVhtWEx4eDllN2wyK2xhdS8vNjdVcUxKY1o2ZG91TmRLeTB6SnJNN3JrYzNIZGs3NkVEenI4d3BDWGwvdU42Y3RhbFcybUV4SXlVN0tUTXR6cTlSbjhlMEhJZUtKNUxvSGhVTCtaQUV2cjZqeU11Q3BuVXovRWV0bS80blBMUTRadXZkM3k1WmEzTm9vMnJMZisrelFBVzk4V0JUOVNGT0VJRTBTZ0IwY2g4QTZMQkI5SFkrS2VDKzBqakdKQkdFSkJHS3BER0NTQ05RaUFOQm9ER3RmY2dHcXVCMnJnS3BMRVJTS01jU0dNL2lFYnBZeEFOOXg0UURlRE0xOHl4SVMrMnp2Zk1oV09aeWs3NEQ1djV5WEw1bnphbC9ndmJWdnJXdmZvTEVKbkxRREkvQXNua2c4Z3cra0ZrZ0I0U0JkUkpIVkFudTRFNklZTm9zTDhEMFVBK0JOR3dtcE9LQld3M2N1Q1VIQkFTRlJqU1NtQklqNEFoQVcwUkNiVEZhcEF0VHYvMXY3aWU1amxTbllDcytyV3JQYWYvL3VjUlU0S1VWdHMvNlVvNXdYYitmVWdxTCs1VjhuVWNnVEZJN3FTL1EzQTlxa3JGR3hXTVdMeUFyOXF2aVRMMFU5b1NyK0VJT2dOa01wdUxZUGRVbHdxWkNvWnNRc0JYSWpXUzNWSnhWT2llNmFpMDUxYU12OFNqaWw5SUs5Vm5ieE54UXVKenRIVEE1YTNZc2hDQ3BuQVdlT2hzdndiU1RBYUhHY1ozVU9BSTFPVGJZRU8xNHE3eFlnUnFsTTd3dHBMZnBXUEpFMFZOaklaWnNhVnNLWGtpazFocWMyYmEwa1YxOXF5Y1VCeXVkTExYakpDWmFHVVlXMUJJUVphMHlFMTltaGtTZlNZamFxMkNJVms5ZjE0eGYxNDJmMTR5ZjE0OGYvNTgvdndaaytFTmgrN1NrUWlVVkJYc1MwN29hQlNYS2lSU3k2Uk95a1RyL0VWcjZLNHdESUVhVWdXejZoSTZqczVmNUVvdGFhOHBFOWZuTCs2QTdtck5YeVRQMzFtZDBERXlVNm9ZbEZvdVZwWm9OREtmYmZJOUdxMkQ4a1J5Rkx3ODdiZUhoWHZqb29vYnNjSjMvVXVmT0FGbUlQZWp2TmlqVVltd2tJUi83b1BMamFaYURBLy85bnpKR1dxNElmL2p3NlBrVmcrVWhMQlBVMFlFdjZvbDZTUmZTOUV2M3Z1cnk0MGx4U3Y1dDhMY2V4RjR5NnB0STFZeTNDdVhPWm1Vd01OdEpVSnBUUTZmaWxFcnFtaSt1MWs3bGNPdzh5L2RZZCs3WUhkWGNuYytneWR6bzluMnpwQkUzQlI5WnE0T3pqUXRRc2lzbU9yQ2Uwb0RnMXhjaFByNGxNeGdSSnFBMVpWQ2E4Y3JxVytURkQ0ci9xdnZxRTdEc1ZBRTlORjhSdnYzZnB3QWM4MjRPWDNjUkJUcWw4bFdoNno3L1d5RHY5ang5UzhOUWxlRWMvUW05SzBYWlprL0M1bmRZTFRneHhDYzNkeU8vU2g0SG5yL0ozUExIWnZFaUs3L2VSUmJjRU9zVXFMbkU5YjhKRktzbkMwbE52RVZZWEF5VXduTlc4TkI0dTRYTUlWRkNTeW9aY0YwWVJlbGZaeWFDcU95aVJhT3NaNFNQWlBUN1AvckpPWTFnaXBUMHU4OEZ0dUxWbk0vRk42cGxQNDhjbmlHZnZONXdzY0h3V0FNQ1lrWC9XUHN1UnZsWFZqMnY2Y3NmSTRwS3g0dW1WZk1MRm96TjYrWW50OFhydG1WWC84QmNFMVZLY1dGK2RGT3hFeHlncHBSclpiVFVMZ1JIRmxnQkxFMHI5OUc2VGNoeDlVYkFjUDNBcFZlRDRFNVpCZlFjTDJBaGtzQUdxNHZ5SENGd0tvY0RhcktwKzFBS2ZVaHNBN3RCTkxRQWRKNEFxUnhGRWdEbUg1a3dQU0RBWlZlNTREYThBWFNRQUpwNElFMDNJRTBnRlc1REZTVlR5OEdsZVhuZ05yNEI0aUdaaDJJQnU0cGlBWjhINGdHREZpVmE0R3E4dWtra0crOEIycmpheUNOZzBBYU40RTBQSUUwU0NBYStENFFEZjgvREJhNlV5cXVyL3F0SjVydTN3Qkl3b0ZJWW9CSUxnS1J1SUtRRVBOQVNGeEFpNVBwUXRCMGVRK2NMaWYvSUZhNHREQmVZeEU3dGJBclRsSEd0U3R5V2dLRC9oVHJ1YUdmZU9NNnpvaDJMS2JvMTFLM0ZwNEJVMXJGMFg2M0NhZDY1TEFFUkhzbmtIWWRrUGIzUU5xUEFMUlBBWjA2RUxnVXJBRFN0Z0Zxenh0SUl4ZElBd0dpZ1FDbDhWUEFMSzREM0RKSUFacFRDNURHQ2lBTjRDcVNBbHhGSWtCcC9GUTNpSVk3Y0R2SkdLZ05OeUNOODBBYWFVQWF3TTAxQkNpTm53TGFFZ080MWFnSDFFWWFrTVltSUkwS0lBM2c1aG9ibE1aUGRZRm9WQU45Z3duVWhnR1F4bi84SitNL2FHUUNhWGdCYVlEUytDbGdGcGNCZlVNSjFJWWFTT012SUJyUVBSQU4zRUVRRFhnUmlBYXd3c01EZmNNUnFBMS9JSTF3SUkxL0Fta2NBOUlBYmJhZUFsYi9Ma0RmQ0FScW93Skl3d1pJb3dGSVl3K0lCZ1c0MlFxc044eUF2cEVKMUlZeGtJWWJrTVpkSUEwZklJMzdJQnJBZWdNSjlJMXFvRGFZUUJvR1FCb2xRQm91UUJxbElCckFlZ01HOUEwdG9EWWNnVFQ4Z1RTU1FUU2c0eUFhdUFJUURXQzlRUVQ2aGhsUUc1bEFHc1pBR3BWQUdnZUFOSjZBYUFEckRUYlFONFJBYldnQmFUZ0NhV1FBYVhpQWFFQVBRRFNBOVFZRjZCdHNvRGFFUUJwYVFCcUZRQnFIZ1RTS0FUVFd5UTJiWkJzQVFIWUR3elVCN2llZUFJVUx6d2FGU3dRbURmckNwTkVCOWJEVUw2M2pXTEYrUmlrbU45ekNuSEo4a0ZVWlI5ZTNXV1FJT21MUW1NUkY2OWN0ZHJYNDI1dnZwUGVHUDMrM3JvMzYyYUpKL2ExV2Y3V3BlVmZiMjFXck9Cc24yeHN3ZEJuMUpMR3N3UDdWaSs4MjZRWGZUR3Q4ZFg5Z1puTGZxN2d2VmxwLzk4V3JQWW9aUk45aGJZOE5mTmdUVHlLQ1ErSW1FR1VLaUd5bUlQZU5mRWkwVGtXK2ROV25WWFBzdXRKOFZkdWRIOERnYWNRV003L2x4QlpFQzhMeFVhNkd0QlpQV3UweUZ0U3dWaENqTFh4WjM1VU11aW1NZk96YnV5SnJUOUdHWEdwMlYzcWd5TGxCajJCOXBWbCtRTDhsUE42T3ZITGtmWXNXWjhPY3FFZnVvVnIvaGNoRDVhYUt1aW50eHUza2hEOGJjN0pQc3lJWjBNY0lNVmEyNGN1VFJHbldWem55NkhpanVxNFVHTlZwbGxNb3FwRHZYenBXSVg4aTUyOFdGRUxucUp4ekxSa3h1c2dEZHJrdGRxS3d5TEYxeXpoNjRhdTg4T2NkWGp4Ui9BMHVpd21qckhiWnhIUXg0bVgzY01iUE8wdzhXTkUza09iWlMvb2FVd2E3Sk0zVlRoVmpqUkVyMGFmdE15Zk9PTXlIU0pxdG51bUwxS0dxNFlSWktKSlo2SHRsMzdlVUFwbWFFd0xQRFlHbHp1ZzE0NjV2WnJwY2hqSTc3YXYrWHNvOFlEaWkyNnJIc2t0enJTMjhkWURjNW4rTWJQSEk3akhGNGpXTUFVbU5CalhXMk4ybXpOY0dvcEQ3Um9kbnJMWmtobS9iclRtVGh5cXc1RHA5azFCK0N1ZFI2NmZIMFpqMUl6dHVKdXdheEVaWFVZTG16blJFNytKeFd5L090SCtBZXh6VHhPZG15a1R2YnRqa2xMTEh4ZDc5a0Z2UDBRbUtyVTkwVWNXRDF5cHB4YUlvN1Z0ZUp3STlzcUpvalZOeTdWdHJiYjIzNXpiYk5IUFlXM29SRGJ0eDIwSnVzNGFqeW1OeW52Uy9DM0RPOUlnZTJlWlZJVkY2elNvYWsvbjlGTVF5WVExbDZsQitaWU5GOTUyODVnYnF1NU9rZTNmZzllck92V2syK2JXUm9oaXpxcDVjYTJGd0xESGIrcHdrek5mT0ZuVTUxbkhKVEZMZFN2NEVvb0R5UEQ3TGpRTTcwaDBRVlJDYnYxSFJZaXVvVlhjbk9SbVpoaURKL1k0S2ZkdTJoTzFIa3hndHJwMThoY1k2L1lDQ1lKRnZyMXpXL3ByVzlhNXVEU3pZZVNnMitrVFZIV2VsdFhPY1QzUE5aRXdaSlpabWRjck5MbVdPWUVBdjMrSGdaU3pZSlBEOXhzZWhvQkNWWUdJWURNZmFPcFdPRlhveEJoOWp2Mm04R3lqYnNIdXpSQnhyM3B1MVJwQ0p0UzRUaUViT3h2WFZNUTJySTlja2hyQWRlOWE4eTRpN0p1emVUNlhaeWZxdEwvc25WR3duSmliVE9La3lUSDYzSG1wQ3pOSmNDSy8xVSt6WHJyUTZ6MjhXU1JjN1VYUmdMU21iSWExV2ZEVkhMVjlIdGhLNU5seVpnZTJmRUZPM2Q5akUyUEdVR1lJZ1JMUGc5SWlicTBPRG5iRVNtUjY2dkhpbWExRnpZZjBKUmRBZTFKam92ZWNhSkN3MW9ORlUwZ1M3NWNsT3dXdk9IVWNQU0d2WUUzbkZ6Y1c2RG1hbFhsVVdjdEx3MTNUeHlCckh3YWtEOEtGQm9UMWN5WnA4NTBHUmFHNUlZbkJuNjRlM1ZxTS8wU3hxdStYYW5pNXhjZWszK3pOUXFOYmRPOGdVN1dHN25tRFNzRUgyaEZZN0dlNGVOc3orZ3VFU25wcUJzV0lLVW1WYkwzZDFCdTdIREZCbHVmaWUwRmR4enlvTVNaRmRVdVdsQm9YQVNydlg2M1o2cDFlUXVWQ3NxY1kxK3Jod1dSOUNUN1dpT1I4Mnc4WTF5WWVPKzF1ZGQ4VWZtR3pCM2t6dnB2V1A2M3AvVUR2ZHBhZVZKWjdUanRReC9jNUt3THFhR25CZ2puS3QrbFY4N1VaSko0M2RVSDU2MXFMZkt4TmxZWm1teVlPaXBycU8rbGlheHROTWhuS25YQnBmVmZqWTBOY2g3U21UTm9FODhadDczcEVya3N3ZXRhb2M0aHdHNFZ2dUlKTDI4NDlOajhXZWhxWW5zMURUMUpkSFJvNVNyUm9jSE9uajQzc2NkRWdMU0R6S1FEY1BrOXg5TXJzN2Y1Z2JzVm1yUiswY0hTOG9DNEVLaXM5ajRocld0Rk5WR2R5TWhveUxyS0tLWFY4Rkh4dUdaaFV0R3UzOVpWTVBMTFBYY282d3g3dWRNVVpiWGROR0h1N2ZyVnVtbzNSOUNNVzhmL1lNcFJMTDdSMlNFVFRrdm5TRDFIYVRLeWZtRE95eUptR21rV1dzRUUxNUhLUHlzVUJSWnNJMEZHalJvYzFRM2lsN0tJQWZjWnJna0lDOVB4eFFGdEtRdWEvMmxoaDI2eUUxclBlQllkcEFpbnB6VHIwZkxCTWY2REMwQlI1dFBnajNEaUlQMTBsSy9OeVlMWnoydHR3T1N5NHVCMzNzVGYwcFVkMlJOcDFPWEpuZ3lVdkZHcnJ5NkxzZTNPeVRUMEtXTlcyVVNlcjhKL1BZemhOOVdhOHJNbVl5YlVxclkzNk9HV3VTbVc3emMxTjMwRWlxSXI2VGtWZkR6cXFIekx4NlVoVHRWSnNlZEcxR3hjSnhIU1FrbmxhNzJOclJZTFJTems2c0lSRjltYWdNcHJyT09keE5EYjVqYXU2RjNZVWpsUGNJRkEzN3gyOUxLamJqREhTNEdQTXVPNlp2dk9yZEM0M3JxTXJzZlAwQWRUVXAvdVluOFZxclQzRmpscHV0Vnh1WWlHSnVtbDRObTJCM1dCZFNZNU15NzVwVk9CUDROY25TUUc2OGRaYXMxNGszcHBzREk3S0ZKVFZRdlIzYkxJb3lvNzdFanl5YkhIMGRVOENsWkgvU2JFMmtQaWM2dmFjemZNaW1wRE8wa0NLeTdIS2hxRi9YdzdNd2NFN3Q2L2lzcUEvZXRFMENNMk83Tkt3RFJJczFzaENiZWpac011SkduY2lCL0JySEF5Wm9RM3BadWRYWVR0enhCN3IxcmlseE8vM01wUDRGYVUrbzY5VEx6RmxOWjE0blBvdktVcGp6ZTJ1MU9ybVltRjNzTWxacWVKYVlJMVltenJlQWFXZElab0pQUmNkekU0emE1cjk0dU04eW1xUXRPZmZTZDVMR1M0blgwRkxrWjY0Ri9pU1huSnJDNEs0cDQvdnUzdHhxNUU4U05HZTdwbWFmRjVlVGQyMnA3cXk1S21wZkpGTkZkaHlJNHg2Z3hTMXBNM2xxM1padnIzRGMrTGhNci9LaDQ3ZFNQN2gyYW41dFVVZCtWNXMzcklvMUhOMGtUTUNGZENtTWQ1UHpPcVpxTkF3S1BMaEFmWFplWTZzV3dGbHoyOEJqbFdDV2tldU43SWwwMDVUZjZjOHFyWCt0RXZrcE05TUNUaURENnQ5cVVlRG1KUXc3NC9xUUJtNUNKSTBIaHpSRlRub1ptL0dzYThZa3hMOUZ4allkTmhJblJCMVk5dFZkeG9VZkRocVJXWHJaUE02UjJnelJ3aUU2VEIxUGg0VHlOSmt4RGRxczRjdVJIQW9lMnVGZ1dHQ0RaUVh1VURlZkhycHFkR24yek5qMHNlYVRiaE1sSFk1Y1BBWHhRV1crdFRsV2MrcEdwMkpjRnBnMjQ5SlpqVU90SjY0a29heEhFTmFYRnduTWR2aFNKTzNzUzZJNzJyNzQvQ3grZEd2WjRKeU9NSEdVcmJQTmxrNVo0K2hCVCtLY2VXQVY2T3FyRW9sRlpkNC9mcXZ6QVhZYkh3RXRITnV4cXRxWGRmNEVPQ3ZiTHZyWWRqWjFmZnVRWnkvRE5pNC94ZCszVzhhZ1V4dWE1Z2l2SzNIYnU0dnQ2ek12N3pqS0pkMWhkOWphcjhvL1poR0UzaVIwR1hqc0VOTDEwNjNMWlp1UnJwb0hjZTdGT01Td1RNUm1pRkdJZmk2NUJOTHBHTHo3cmxGNmhQWE5pWUcxeDlPTmY3T1E4TGtIRWFyWUJrM1F1THc0eG95OGxwMEdvd1V0alZEMTNJbTkzYWhwV05aZnZ2TXh2ZWJ2Z1h5bVI4aUs0Zy9aNFgvNzdIbGpmMDROMWt0dy90dGx3b1BHdWEvdE5lZ2I5TGhEK1JPOTdQZkhsVGdMc241d3I1ZWhvdzM1VVlza3poOVhOVWMvcTBQS3JyTWlXZTM2Z0t0emZrSWlmbnhmSHJUMEdQcEhzWVNxYkx5ZTVpK2IzdGlUYmIwbHhDeWlmQzh5REhNSnA0d3ZIekY1M3ltQUcrSkYxWFJJZFNTb3VuSGxBdldjakpZZWc2d2wrQi8vNENXeno2elN2T1ErYjdmRlNKaUFIQnM5NlYzNjlsd3Z6cGlEWDVBZGdoWHluczdSM2QyTmkvMXJQSjc0TVRsZTdVSmNUYVJwY2J3bXZLdXVxN011ckwwRzhtMXF6VWxSNk5BUUpuWUkzQmhGOWJTM016Qk1LVFBEd3F2UVdoUFM3Ty9IdTloeXBvRTZtWHArS2E3dlYrK01Nc2VIM3FFRzBQcVRTVGR4QjZzc05SdGRIZHFpVml3WWZIaldvUEF0eVJ2OWZmNDIvdG13NmsweWI2dVBmMjhIRkdwR1I4S3VYcGZhVExyVDdGYzh2K2IzM05yd0t0VjQxTm4yam14OVNOQitsQVFwR3lQZ2pMTUwvRUNaYVkvenJjQlNtUTM3MEx5eW9NaXZJRXIvR0lRTHV6OG02dFp5bEN6MktQVXdDcGRmVUx2UWpWQjNpTzZsMTNEbHp6ZEFiTTM3YmltWERxM2p3aGRrbE90MUhZZjFpNHdZVSt1SVJxVElMTXVockdSUDVIcTZkbVh6TnBzdHFTVHIzTDBhSXJRNVZ5Y2QvK0gyNGNvR2VQK001bVM3MGovM2h3ZS8ya28zMlV2V1I0blBuZDBRdDlKb1VXT3QvM1hKV3MvVnhaNm9BM1lKSTJaR3hyTW5OdDlVWmxiQVU0THhFM1lrK3ptS1orOEJYSENoYmR5TDRqUnMzOC9UdWFTU08yU2poNnpObUhOTlBqOTVZTnVIcml1TkEvaGpSdVBWcFBwOXFMeG5iVmMzWTRWTGNXSGR2RkxSaUVVbVlpc2hsYi9OVlZmTjlPRmVsa3lJTDRlbURnV3R4dC82eXQ4ckF2NHVlOXJCMXZNZTNMWS9ZVHBkKzJUcDZ3bitBTVd2a1ZtbXJweGZYbVFwSTdvcTNyM2d3S2hhMU5pUjFaS3FNenl1RzY5WlhMc1VnbmZraDBJWXQrNU1DNThBSmlkaldRL3BWbTd4MHhyV3p0dDlkbkNzblpxZEtYSmhucnpOMHFqY081QnVnOEtpQzlBSGVtY3d0dkZ5RkN0TEgxTjRxbWRPaDcvTmw1SEM2QWlRTU93Z3JrU0hRSXVpd2RPcFgzUjZiVHU2OHdCazJuYlNueXFYWGRmTFI3NnNka1RxNW5kSlZWanhrVWRQRTNKbFBmSkJEMXlGcnM2SFcxL3hhdWN2Qjg3UW1FTG5WZTBPaEZSQnE3ZG02L3pxSUI2VEdXU1M1UjdrcEZrMFBrclJaZWlxdmE2UUJrSnZwZ2UzUG5IVWhiTlMxS2V6UlBJQ3FoaHo3TU15dmpDdmM1YU5aejNFQmozckd4a0lzZmQ5NURFUVZ1U0tUV0RnS3dLbmVNbzVWVVVNcnFtc1d5dXdnN3U2SFQweDVDRVhKL0pmTnIyY1p2TU5rVlpmeFhLVmhGYk5jZTVlWC85bmNHYS9QQzYyNm5sVEZ2V2lBNTdlbHRvekttN0xXQ0toSzVFZHFjR2F3RzhKZTNGaURyYnV1M0FzWWErNk1GRHdqQm9MWWFiU0VDOHB5ZkNPUm5HUUNqbW9xWkRqSG5pYUdrRDhQSnd4ajQ2YWhOSW9qZTYyR3JwL1lJeHc5eGJKSnc0bE82UjJkRUlreThqSFBtaXhOa3ZzbkJBYmZPcXh4aEl2SGI1V0kxSGdrdUZNL0pLZkVZRklRV3lpREs4WmdYb2syV21qbERKc1Y5TWliakJtTzVlbnkwd3BzaVcvSDZwenFoQUhIYW5TQzA0UEhpbERKSGp6ZzFaMVV5LzZweTBLME9uenVVa3hRV3JpUFBwWlk4SEJzYkRNeXNZUVozNEpQUUJWYjRJalNCaysyZTNTVXY0bUpnTGQwVitNODVwNlRGU0c5bkdkbnV6RTltY1hXQ2s4b2dabEwyb2RlY3F1alFrVnZEaGtoVEFVUVdkV2RZU2JYUTB0cFJWd0dua0RIMkpNR3pDT3Y0UjBGMzNwWTBUdW5NcHpWT1JMOWhYS1drUTZYYWJkME02dWtHcVQ5WjUyVDNOM1dpVjBIaEJHeVU2RmFiV3BBbDlVMFNyT3h6OFpQbzV6TjNBc1UwVk5WTWJZNjFEY3JiWlpJYVIxWWgrWmZaRlhZRlJ0QnpIVE5GdFdidjVraHN1c1M3YXMvNUpwU0MvbjR3WXRkOVNybCtlaTNlbEtCd21sbGNzNmlndERCTnFqSlFraTg1b25zZXdqOE9MdVNUcWkveEFqNFF0OWplRytBTGx5VlptWHB3cURLeHlYdEllcWg4UEN1dEJqa2R1cVphamE4OVFmT3RiY3pyZXlwSktHL2pLOXFGTE54cjNWbkx0MWFBbkZ2eVE3RE9QTFJQUW9LN1JsQWZyUHBhRktOWDhYaXgxMi9taEoxVm1tMnFaOVoxV0M3MVM3OVFRTmRXdEg4WS9ja3JHelNrRi83dTZUSEJIYXNPajBhMDFDVWVBbHRSc09IVXhXUFloTE9RTHBhMnJDMEhuZk5scngzalN0UUFWNE5hSXlHaTdKWWg1NXpJWlhSOGFURWJ6aHc2Unc5OXV2QzYreFN3M0l2YVlwMkdLOWpzUHQzcDRRbmNodXBhQlJIa1dQb1hLWWtNc2FLVkJRdmtYbjd0TFJ6MmI3am5jc1lvb2xoY3JpN25INDk1NjlXSFJIK0JFbER1V0VSWFhUUjJpbDV4ZWp4MHlWYyt2clM3a3c4c0dwcllhM2x1MHloeUZNTFcrd1RkYWtVN0pubjZxZWVFS1RRbktSYzJGQzBWYloyZE9ZNDBnajlRSkRUdUxJRTZWYWgzQnZGTnVEekJ4TTFLME1xT1ZWVGVQVS95R0pjalQ3aTZINWRKc1o1RzllV2hIcmpNT0tIbUpmYmJ0RGhlbXJUNzF6NVJISzR0QmpGeUkxNUxzM21WYmtxZnJCWEU5VitxeExCSDRZM1RJZ3Bkelg3SGVUYXdaamo5dVd6SmR5L2dJaEtkVEh3bDJ0YVFqTnBrYkJWMnJ5SXA1YUppdjRCZitxOFl6MXZGMnNRdVNCeDVOd2hUeUp1bHZrSmZLTnR5RHJ3Vmt3UEovZHZnYUt0ay9Id1RXSmNqc1JqSXBiQllVM2FNN3phbTdOcHNrUHFjNnErcWNkQmlmbXpHcVFRdVpjS2FmYWdncHQwSVRaSjFlWDkwTkIzZXprVWlvYmoxc09iYytsd3E5Q0ppeU01SXNKU2Q5Y3M2VkdOYUN4OWowcmU2djVLUi9yWnZmNVovL2wrTW1DVDJ2U0dhcWlyL3h2di9pZkhzK1BlbGxwbk5UVDJwSElSejRmdjVoNk1VbkhML1AxNU84ejRvZFRvakxQcGV2bkwzMGVWOWRsVW5NQ00wNksrMlJWRlg2Q1cwQkN4R2tURnQ4eHZEMVg3TnNOMDk1SmkrV3Z1YjB0cW5yNzFOVEFHZjJSbkI5TkIzajl5b1VySnNkSFNqVEd2MVpIeDhOQU9QeGdTcGNhNEZYcjRGbnJzTXZGenIxSVZwNDNVaHQxOG96cmlHU0lvdEkzWUlrVTFsWnBDbFVLaCsyYnlpajBzblpNMHBubC85ajRJbHBGcEFmS2RHN1ZoaHV0YkV3ZWxUYWwxc3J6anR0cXJMRUdoYUw1VlY3RSsxTmpvZzArK29tenlvaWd6cE5yMHpLU216TmZ0a3JpcGZHTjJVKzY5TGRtNmdvSUM4djhHYjR3amRXeEdXYmFaV0p0ZjlqSU5TeEE5VWxXTlE3R1ZNZnBHT1FZanl2S2JxSGVPQTh5ZTVqUG5SNnBCL0g5OWRHYnVqcmxVRjVFRFBkcVYrc0FuZkJ5dEZuU3c4Mnd5WG5kOGNRcUV4ZGh5aTNLRUQ5OUZCN1pUaGlHTDJoVmFGSURGUXIweCtPOWUxT21idmhidERuZWFxQ2NtTkY0QnJuL3Uvd3lLWUtua29xWWFvYlgyQmsva2NZMnZJd1lSWTJJa0NwaVAxMlprVjRvNExxNTRnZDkzSmhMN1NVWmlSZEhOYTN2aG14dGpIdEM3Uys0eEhGNWIvWWdwUU1ackptNGxycTBiR2l3TXo1SHhrNmJPQWhYOHR2RkYwb29aUm5KRXkrblk5RHJGWHdIMm9ZdmFwZHAxejdpdVBNd25yZytVWjh3VjBhVEcxVFpjZjFxU1VkWmVrOE1TazVYS0lWVlI0VTgxZzNCaEtyUlo0cXJYS2dNOVdFV3ZFcWsrdkwvWFluVDVnTTc1eDZodktiS1Mrdk5ZWWxVczM5cGYvRlVCZlcvM2xYekFORzNMSGJOWStOMG9xYWxwYUZ0OXhxWnoyWmttWERPTzQ2OXJjNDU1bFJCbVNEODZhRGlMdjdFbzRyZWdoMEhDYkZMU0RtaWVPRmlUdVEyRjZ2Tlh0c0Z3UjVZa2J4Y3NOcHplS1hRdS8zb1N5bmpzNS9jRHVVYk5idUVFQlVNWDFvbXhtQUtFK0pRU0F1L2NBSzYxMXQvMnpGL1lxT242TXl6UmhQYllsWUVZWHl1dUN3Y2puUnVzTnNoa0QzbXRZam9jZFZ2N1hGcmROckp0UWZnMzdzWUJSQnpiWkJDMFJIWWswNm9yMlFKZVhNbjU5d3MyNHhiWi91N0xVeXp6Q0c3aFpMYmkzRlpNbDhRMU14T09xZHl1M05lY3dreDZKc2F6akd1YzZvU1o4dURlSU5EdXh3cG5qdEd3bTduOW1zeHVrMmlHS1lZNGxMYTd0bUt0dEgrVmY1dVdkbjJ2cWtpdFRRbVl2ZlMwdGJFaW9iVE95dUlUMDUzTnIyYUN6OSs0WWZ6cS9oVEJtRVRXNk5LUGhRb3QxYWhSNnBLNjdCV2JzU2t3Tk03bDV6MUsvekZPLzgxUDRKcUkrZVhQK1FmYmJIR3JCUWtGYzJoaGVzbTZydjQwNHJQT1JxbFA5QlRqNHBpcnB1UDV5RmZNa1hZK09Yc0ZQeGxHcWZuNXFEVDNDMzVpTnd6M2xqam9Ub1RZejlSY09GcG01Rmp2b1pXdHJJeVJ1aVZqelZpNFVzVGduUFFjMDNXdU9rbStVQ0tGcFdXYWFDY1RRd2ZHUzBqa0ZDM2JIcm14TDVRZjAzSGc5UEs0dGFCaWRVMEM1TnNoYjVXZ2k0bFBmNkRvYmU3alNEZVBEUzQyVExYUWsrSGlUbFh4bE5WSStVYTI3UVREanBUbmp1R0JuSHZTMWJhNktBVk5wZ3lLQldYRW0yTG9WVmFKK0NFOHNaU2dZOCsrN0gxSVR0RzVGeHhvK2F4ZWVMcHJQMWRIU0lNVHlneFBibEtmWFBrY2ppN28zc2RVOVlhWDFUU003eDJVbUljUHVkWENzVXU5VFdwUGFGTjFWUmdTbENsbFZJdDJEUHA3U01QaGxsSTRiN2YxcXZ5WURVL3R2bjlHUlBaNEh3bldabXRtOEtmNFVZSjRaejNCUzQvWlhic2drTmhIOFN5S2hMUlFYdUxJYVZvT01GTlg2eUtUMkVtZXBtbk5tRlJnVTl4M3NubmM4Z0RjSTM5RjZMMURtbkhlSWVUcXQrZk9sYzRtOC81ZVlVVzdxbnBGbkZkeitjUFZ4VmRJWnlnR3ZRTkVCNjI4UFRXWXBhT0RURndkcHlhTFMxUzdZNUNnb2pHWTY3RkxYM1E2elRvOWJUSENTNHNKSzdadDFIWjF6a2NGMFh1TlRISVYvbWNYT1hJbzJUN00zc3BBU2dSTzJHK0M3elNSaXVEWXpmNGlRdyt4QnVXUXU4TzA1QXRHRkdIZk1xbGs4NWRSenM4aU54dlp4dSthdVE5YloxdjNoRWJucDRvdWdFR2V5a2JJNDJLNURzRG9tOWdOMkt0eU5yc3F6aHQrRnBEUEtMZ3lFWWVraXBzWVhDME9FUWFUQXRQZzY2SFEvVnlhT3p3RmdnOWhoNmpYSUcyYXJMbGhjMDd0TXFYSlpwSk9sTTMvVGlRaSs4cXc5bHVnZXdhbmRRb2pubTdETW04SkZwR2s4UHh0UGpSQVFxR2JQSEs4NEJsTkdkMmYyZlUwckdXRkVzSDloZTFTU2RxZHhvYXNDb0ozU1NPTE5vd0lBeC9OLy9Fek5TQU05K1YvTDNodU4wRy8zTkd3b2pGd1RkclR5TUV0NFp3RjBiakJvUGdiVEpIcWlhYWFwaFk3Y2hCbWxZNlIzYXoyODlGcDNma3B4K1Q3anBDSCt3aS9md0VuT0d2YWxQMk5GdzVaaFdBYkxzNHdDdUE1aDA1QjJ1bW51ZXc3eEV4em1xMC9IMGdJV1ZYS2dFN3NieHZJSzBIYjU2MEpuNzIvUndkbDVoS2FCODUzekF6T1I2ZXIwRDdHcmI3Rjg0ZVl0a2hXakZjWThVVWJqem0ydXoreVdkdHNUUmpya0ZwanF3K2dpVnNvLzFhcnVpTng3dG40aEhRSWNVbm14RU5ONSt0RnJ4LzZScEpndHNid2dxTFhjWmNPRDFyL2w0a2FYT2EzY1FiUGZ3UWJZa1QyUWVoSGluRXpMaU5YTkd0SEpwN2hDR3FoUFRMM2w0QzU1Y3ZFSzJ4cjZPV3MxT0ZWRHhuNXhjMm12VnR4ZTVEUVJXRVhjei9lR21rL3IzSy9qSXFKTERFZjM3cC9CbGgxZXpFa1pra3NRcHhHUlhxckwrNmlsYWlTMGdkcmZKWk1lNWNrckVnM2FKTmE1M1ROVmloOTF3ZEltNUpqa2tyUG9kN2Y3Uk9QOEJuNFk3NEkwYk8vRExkb2hQekxTUEdDclhHUzFpYlQ0elNzMHR1WGp5VmQ2LzY4azFsQ216YnVjSlkxMzVwQTJzdzZ0Z1Uxelpsd2NiRnFpRkNLR1ZuL0s2SCt1Ni9sWnljWjk0MkdudGY5aU45eW1waGl4V25Yc1N4VHR1VFRybVNWc0xlUTBXdERDc3ZicCtQNHF1dlltMEtFM05LdzdHbyt4VXhrZ3UxUE5IKzhSTjlQZ0drdVhaNHBxZU41c0s0RGI4djR5TExEOXBLOThNcDRydG0yNHZkeFRtejUzTXpmRHRRM1U5aW5lTXM2VTZsRXphOFBudWp4cnZjdko4dlluaHpsVDJhZ2RaWDFzTHBZOXdvSFNIN21Wc29IVC9ldlNOd0d5MTJ2cEo1SVZYb3BqSTlHdGlhZGxqSDYxakZVSzVKSzJJbnZwYXMyWU44bEZWMVFoK3htakNyZmpvL3d0dldXL0pTMmdMdFpPNUdER3BzZllkcjNmbzJ3akJ1WVhYaEhRRVo1T09UK0huM3JEanhXS1BEYlFGMndkaWJsdkEyVDNhdVlnYzl2VFM3SVVrd0QzSnZtWGQzRVJSVDcvRzBpNjVzRy9HR0ZqYmlHNkdXOWJDYnJ3ZXlpNWl4dGlPKzY5aGZxM0dWMDNhWXMrbzVEOHFDUnlvejg2RHdxZXZFZFVzcUVxUmZPVytLV3pMRG5URjErT3V0eFovOGpNWkxjY2ZEOGM5NlRLdzMzL0xGVkFVUVFyZG0rZ1l2dEUyNGMzdnB1SnBmMllCcnZDMHJaY3hvSko0c2ltKzdraEVjQzhWdEV5SktmVVpsZnI3dEZ0TTZ6d082T3NNLzFnRmJEai9veGhZai9sMkFHS2R2YTJjbnV3bE10MXFNSUtwOXk0WTdoUnZWamVPMEZPWCtIcW5lSld4Qnd1cHRkK2txL1FMYVZWVFdiVVdQZktlbW44bGx3dkV1WXdpWDd2djRKUUhzdVJIR25GQTlOVk41UjZXNkY5dTBxVXpBWHpHVlVaL3VQUGV4VUs4cERWdWYzcjNzczgvODBWK1B6SDN6MmZQRDNHNHUwVDR3OUhDUVhGYUkrRFFlN2RSNm0zTEIrMEJENW9WK0NCcXFQNWNZdFRhdmVMRUFKcjNkYnVzZHViM1FMdEQ3Yk1kbXJRajFnZC91d20wblkxMFFEZEgyVjF3NDlERTZwMEpPOFQyaW1ab09MYUtIRXNYQmp1SnJzWHFsN05ibVNFRndvVlZoZlZucGhGTFVkVlg0aXBsNm9oT20xWHlVUURuS1o3K1VvSHcxNitMeSsra1BiT0tkcmUraUdPR2ZOVVQycDRYaVVRU2JFSXcrZXZMOW1id2VJU0hMaGdYcEJBYWM5WmFiWnZYeFprMHRReWs5SDN4MnVrK1VkT0FEK2R6M3ppTysrdmtKNnhtOVdWNis0c0VCYWFYRTNHdXRYWDUzK0NkUExaOUQ1MGdJdnkyZTBudE9GcFp1RkUybVIwNjlTcmpqd3R1WVRUOGF0OHVER0hoSjBIMVJzRi9ab2pySy9mSHU0VXlQcVBpdWVOOHFjVVZJMnVIRE0xYTc0Zm1ZbmNSMktpSlZ1WXVZS1lpemdJbDN3TVJaZDZrK3J3VThndzVlT2ZaMWozMkhHRXRIM1VsLzRMMjFVanpGS3RuSEdtSEdvcEhja1VZQ1doYjk3Y3dVcTdNZW95Um5HbGRtTC83c3VZNnpjS08wdkRPS2dLcWJVbENLd3NRWCtTOGYxSnEwSXhoUnBCNzd6Ny9hVk5ZVFpMakFKVWk5TnBQYktwMmZ0U1ZaYUkrUEZQamhlZ1JqQTd2VzBnUEVXVWhNbDYxSnU5Zk5NRnROMUpEWGNWd0dxaUtNa08zSmZKSXIzTTl2ZUV4a1RrSzJYVnZoQnJWeCt2YmJ0UkpVWnZWSE9adm02c0wwbUVXVVB2RVBZVGZUazZJWGVCemN4RjAzTytqZWRYTFZhVnRhcUlSQ1VQamFseklOR1dkUkF4dW1KaHhpaitPN0I5ejhQR1hmMUh5UU03S2dQbjhtTWVQNVNFemdQMEx4WC83RWRLdGI3QitUUmYxeWV5U2hKZ3pITUdpdllxUm5Wd2FGWUJyTVNFZkg2a0tSbUJLbWJ6dS9xa0tnR09sVENlTzgwYXNaQnZ3cWJ0VklwY3BOc1B4L3ZuRDgvM2pzS25jT3dhVCs3c3ZuN1VFWkE5S1RveW12MUl2LzhLNEw5VldybWJsV1drT2EzV3YrK3BuV3F4RDlVRTVYNFJzclpzUVBILzZpMVJ2RitaTlZ4ZitLNDlRWlhhYmhIN1A3MzNKY3dKa2tRN0QvQ3c9PSIsImJhc2U2NCIpKTsKCmxvZzIgPSBNYXRoLmxvZzIgfHwgZnVuY3Rpb24obikgewogIHJldHVybiBNYXRoLmxvZyhuKSAvIE1hdGguTE4yOwp9OwoKYml0cyA9IGZ1bmN0aW9uKG4pIHsKICByZXR1cm4gKGxvZzIobikgKyAxKSB8IDA7Cn07CgpDQVRFR09SWV9CSVRTID0gYml0cyhkYXRhLmNhdGVnb3JpZXMubGVuZ3RoIC0gMSk7CgpDT01CSU5JTkdfQklUUyA9IGJpdHMoZGF0YS5jb21iaW5pbmdDbGFzc2VzLmxlbmd0aCAtIDEpOwoKU0NSSVBUX0JJVFMgPSBiaXRzKGRhdGEuc2NyaXB0cy5sZW5ndGggLSAxKTsKCkVBV19CSVRTID0gYml0cyhkYXRhLmVhdy5sZW5ndGggLSAxKTsKCk5VTUJFUl9CSVRTID0gMTA7CgpDQVRFR09SWV9TSElGVCA9IENPTUJJTklOR19CSVRTICsgU0NSSVBUX0JJVFMgKyBFQVdfQklUUyArIE5VTUJFUl9CSVRTOwoKQ09NQklOSU5HX1NISUZUID0gU0NSSVBUX0JJVFMgKyBFQVdfQklUUyArIE5VTUJFUl9CSVRTOwoKU0NSSVBUX1NISUZUID0gRUFXX0JJVFMgKyBOVU1CRVJfQklUUzsKCkVBV19TSElGVCA9IE5VTUJFUl9CSVRTOwoKQ0FURUdPUllfTUFTSyA9ICgxIDw8IENBVEVHT1JZX0JJVFMpIC0gMTsKCkNPTUJJTklOR19NQVNLID0gKDEgPDwgQ09NQklOSU5HX0JJVFMpIC0gMTsKClNDUklQVF9NQVNLID0gKDEgPDwgU0NSSVBUX0JJVFMpIC0gMTsKCkVBV19NQVNLID0gKDEgPDwgRUFXX0JJVFMpIC0gMTsKCk5VTUJFUl9NQVNLID0gKDEgPDwgTlVNQkVSX0JJVFMpIC0gMTsKCmV4cG9ydHMuZ2V0Q2F0ZWdvcnkgPSBmdW5jdGlvbihjb2RlUG9pbnQpIHsKICB2YXIgdmFsOwogIHZhbCA9IHRyaWUuZ2V0KGNvZGVQb2ludCk7CiAgcmV0dXJuIGRhdGEuY2F0ZWdvcmllc1sodmFsID4+IENBVEVHT1JZX1NISUZUKSAmIENBVEVHT1JZX01BU0tdOwp9OwoKZXhwb3J0cy5nZXRDb21iaW5pbmdDbGFzcyA9IGZ1bmN0aW9uKGNvZGVQb2ludCkgewogIHZhciB2YWw7CiAgdmFsID0gdHJpZS5nZXQoY29kZVBvaW50KTsKICByZXR1cm4gZGF0YS5jb21iaW5pbmdDbGFzc2VzWyh2YWwgPj4gQ09NQklOSU5HX1NISUZUKSAmIENPTUJJTklOR19NQVNLXTsKfTsKCmV4cG9ydHMuZ2V0U2NyaXB0ID0gZnVuY3Rpb24oY29kZVBvaW50KSB7CiAgdmFyIHZhbDsKICB2YWwgPSB0cmllLmdldChjb2RlUG9pbnQpOwogIHJldHVybiBkYXRhLnNjcmlwdHNbKHZhbCA+PiBTQ1JJUFRfU0hJRlQpICYgU0NSSVBUX01BU0tdOwp9OwoKZXhwb3J0cy5nZXRFYXN0QXNpYW5XaWR0aCA9IGZ1bmN0aW9uKGNvZGVQb2ludCkgewogIHZhciB2YWw7CiAgdmFsID0gdHJpZS5nZXQoY29kZVBvaW50KTsKICByZXR1cm4gZGF0YS5lYXdbKHZhbCA+PiBFQVdfU0hJRlQpICYgRUFXX01BU0tdOwp9OwoKZXhwb3J0cy5nZXROdW1lcmljVmFsdWUgPSBmdW5jdGlvbihjb2RlUG9pbnQpIHsKICB2YXIgZGVub21pbmF0b3IsIGV4cCwgbnVtLCBudW1lcmF0b3IsIHZhbDsKICB2YWwgPSB0cmllLmdldChjb2RlUG9pbnQpOwogIG51bSA9IHZhbCAmIE5VTUJFUl9NQVNLOwogIGlmIChudW0gPT09IDApIHsKICAgIHJldHVybiBudWxsOwogIH0gZWxzZSBpZiAobnVtIDw9IDUwKSB7CiAgICByZXR1cm4gbnVtIC0gMTsKICB9IGVsc2UgaWYgKG51bSA8IDB4MWUwKSB7CiAgICBudW1lcmF0b3IgPSAobnVtID4+IDQpIC0gMTI7CiAgICBkZW5vbWluYXRvciA9IChudW0gJiAweGYpICsgMTsKICAgIHJldHVybiBudW1lcmF0b3IgLyBkZW5vbWluYXRvcjsKICB9IGVsc2UgaWYgKG51bSA8IDB4MzAwKSB7CiAgICB2YWwgPSAobnVtID4+IDUpIC0gMTQ7CiAgICBleHAgPSAobnVtICYgMHgxZikgKyAyOwogICAgd2hpbGUgKGV4cCA+IDApIHsKICAgICAgdmFsICo9IDEwOwogICAgICBleHAtLTsKICAgIH0KICAgIHJldHVybiB2YWw7CiAgfSBlbHNlIHsKICAgIHZhbCA9IChudW0gPj4gMikgLSAweGJmOwogICAgZXhwID0gKG51bSAmIDMpICsgMTsKICAgIHdoaWxlIChleHAgPiAwKSB7CiAgICAgIHZhbCAqPSA2MDsKICAgICAgZXhwLS07CiAgICB9CiAgICByZXR1cm4gdmFsOwogIH0KfTsKCmV4cG9ydHMuaXNBbHBoYWJldGljID0gZnVuY3Rpb24oY29kZVBvaW50KSB7CiAgdmFyIHJlZjsKICByZXR1cm4gKHJlZiA9IGV4cG9ydHMuZ2V0Q2F0ZWdvcnkoY29kZVBvaW50KSkgPT09ICdMdScgfHwgcmVmID09PSAnTGwnIHx8IHJlZiA9PT0gJ0x0JyB8fCByZWYgPT09ICdMbScgfHwgcmVmID09PSAnTG8nIHx8IHJlZiA9PT0gJ05sJzsKfTsKCmV4cG9ydHMuaXNEaWdpdCA9IGZ1bmN0aW9uKGNvZGVQb2ludCkgewogIHJldHVybiBleHBvcnRzLmdldENhdGVnb3J5KGNvZGVQb2ludCkgPT09ICdOZCc7Cn07CgpleHBvcnRzLmlzUHVuY3R1YXRpb24gPSBmdW5jdGlvbihjb2RlUG9pbnQpIHsKICB2YXIgcmVmOwogIHJldHVybiAocmVmID0gZXhwb3J0cy5nZXRDYXRlZ29yeShjb2RlUG9pbnQpKSA9PT0gJ1BjJyB8fCByZWYgPT09ICdQZCcgfHwgcmVmID09PSAnUGUnIHx8IHJlZiA9PT0gJ1BmJyB8fCByZWYgPT09ICdQaScgfHwgcmVmID09PSAnUG8nIHx8IHJlZiA9PT0gJ1BzJzsKfTsKCmV4cG9ydHMuaXNMb3dlckNhc2UgPSBmdW5jdGlvbihjb2RlUG9pbnQpIHsKICByZXR1cm4gZXhwb3J0cy5nZXRDYXRlZ29yeShjb2RlUG9pbnQpID09PSAnTGwnOwp9OwoKZXhwb3J0cy5pc1VwcGVyQ2FzZSA9IGZ1bmN0aW9uKGNvZGVQb2ludCkgewogIHJldHVybiBleHBvcnRzLmdldENhdGVnb3J5KGNvZGVQb2ludCkgPT09ICdMdSc7Cn07CgpleHBvcnRzLmlzVGl0bGVDYXNlID0gZnVuY3Rpb24oY29kZVBvaW50KSB7CiAgcmV0dXJuIGV4cG9ydHMuZ2V0Q2F0ZWdvcnkoY29kZVBvaW50KSA9PT0gJ0x0JzsKfTsKCmV4cG9ydHMuaXNXaGl0ZVNwYWNlID0gZnVuY3Rpb24oY29kZVBvaW50KSB7CiAgdmFyIHJlZjsKICByZXR1cm4gKHJlZiA9IGV4cG9ydHMuZ2V0Q2F0ZWdvcnkoY29kZVBvaW50KSkgPT09ICdacycgfHwgcmVmID09PSAnWmwnIHx8IHJlZiA9PT0gJ1pwJzsKfTsKCmV4cG9ydHMuaXNCYXNlRm9ybSA9IGZ1bmN0aW9uKGNvZGVQb2ludCkgewogIHZhciByZWY7CiAgcmV0dXJuIChyZWYgPSBleHBvcnRzLmdldENhdGVnb3J5KGNvZGVQb2ludCkpID09PSAnTmQnIHx8IHJlZiA9PT0gJ05vJyB8fCByZWYgPT09ICdObCcgfHwgcmVmID09PSAnTHUnIHx8IHJlZiA9PT0gJ0xsJyB8fCByZWYgPT09ICdMdCcgfHwgcmVmID09PSAnTG0nIHx8IHJlZiA9PT0gJ0xvJyB8fCByZWYgPT09ICdNZScgfHwgcmVmID09PSAnTWMnOwp9OwoKZXhwb3J0cy5pc01hcmsgPSBmdW5jdGlvbihjb2RlUG9pbnQpIHsKICB2YXIgcmVmOwogIHJldHVybiAocmVmID0gZXhwb3J0cy5nZXRDYXRlZ29yeShjb2RlUG9pbnQpKSA9PT0gJ01uJyB8fCByZWYgPT09ICdNZScgfHwgcmVmID09PSAnTWMnOwp9OwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oMSkuQnVmZmVyKSkKCi8qKiovIH0pLAovKiAyNzAgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHMgPSB7ImNhdGVnb3JpZXMiOlsiQ2MiLCJacyIsIlBvIiwiU2MiLCJQcyIsIlBlIiwiU20iLCJQZCIsIk5kIiwiTHUiLCJTayIsIlBjIiwiTGwiLCJTbyIsIkxvIiwiUGkiLCJDZiIsIk5vIiwiUGYiLCJMdCIsIkxtIiwiTW4iLCJNZSIsIk1jIiwiTmwiLCJabCIsIlpwIiwiQ3MiLCJDbyJdLCJjb21iaW5pbmdDbGFzc2VzIjpbIk5vdF9SZW9yZGVyZWQiLCJBYm92ZSIsIkFib3ZlX1JpZ2h0IiwiQmVsb3ciLCJBdHRhY2hlZF9BYm92ZV9SaWdodCIsIkF0dGFjaGVkX0JlbG93IiwiT3ZlcmxheSIsIklvdGFfU3Vic2NyaXB0IiwiRG91YmxlX0JlbG93IiwiRG91YmxlX0Fib3ZlIiwiQmVsb3dfUmlnaHQiLCJBYm92ZV9MZWZ0IiwiQ0NDMTAiLCJDQ0MxMSIsIkNDQzEyIiwiQ0NDMTMiLCJDQ0MxNCIsIkNDQzE1IiwiQ0NDMTYiLCJDQ0MxNyIsIkNDQzE4IiwiQ0NDMTkiLCJDQ0MyMCIsIkNDQzIxIiwiQ0NDMjIiLCJDQ0MyMyIsIkNDQzI0IiwiQ0NDMjUiLCJDQ0MzMCIsIkNDQzMxIiwiQ0NDMzIiLCJDQ0MyNyIsIkNDQzI4IiwiQ0NDMjkiLCJDQ0MzMyIsIkNDQzM0IiwiQ0NDMzUiLCJDQ0MzNiIsIk51a3RhIiwiVmlyYW1hIiwiQ0NDODQiLCJDQ0M5MSIsIkNDQzEwMyIsIkNDQzEwNyIsIkNDQzExOCIsIkNDQzEyMiIsIkNDQzEyOSIsIkNDQzEzMCIsIkNDQzEzMiIsIkF0dGFjaGVkX0Fib3ZlIiwiQmVsb3dfTGVmdCIsIkxlZnQiLCJLYW5hX1ZvaWNpbmciLCJDQ0MyNiIsIlJpZ2h0Il0sInNjcmlwdHMiOlsiQ29tbW9uIiwiTGF0aW4iLCJCb3BvbW9mbyIsIkluaGVyaXRlZCIsIkdyZWVrIiwiQ29wdGljIiwiQ3lyaWxsaWMiLCJBcm1lbmlhbiIsIkhlYnJldyIsIkFyYWJpYyIsIlN5cmlhYyIsIlRoYWFuYSIsIk5rbyIsIlNhbWFyaXRhbiIsIk1hbmRhaWMiLCJEZXZhbmFnYXJpIiwiQmVuZ2FsaSIsIkd1cm11a2hpIiwiR3VqYXJhdGkiLCJPcml5YSIsIlRhbWlsIiwiVGVsdWd1IiwiS2FubmFkYSIsIk1hbGF5YWxhbSIsIlNpbmhhbGEiLCJUaGFpIiwiTGFvIiwiVGliZXRhbiIsIk15YW5tYXIiLCJHZW9yZ2lhbiIsIkhhbmd1bCIsIkV0aGlvcGljIiwiQ2hlcm9rZWUiLCJDYW5hZGlhbl9BYm9yaWdpbmFsIiwiT2doYW0iLCJSdW5pYyIsIlRhZ2Fsb2ciLCJIYW51bm9vIiwiQnVoaWQiLCJUYWdiYW53YSIsIktobWVyIiwiTW9uZ29saWFuIiwiTGltYnUiLCJUYWlfTGUiLCJOZXdfVGFpX0x1ZSIsIkJ1Z2luZXNlIiwiVGFpX1RoYW0iLCJCYWxpbmVzZSIsIlN1bmRhbmVzZSIsIkJhdGFrIiwiTGVwY2hhIiwiT2xfQ2hpa2kiLCJCcmFpbGxlIiwiR2xhZ29saXRpYyIsIlRpZmluYWdoIiwiSGFuIiwiSGlyYWdhbmEiLCJLYXRha2FuYSIsIllpIiwiTGlzdSIsIlZhaSIsIkJhbXVtIiwiU3lsb3RpX05hZ3JpIiwiUGhhZ3NfUGEiLCJTYXVyYXNodHJhIiwiS2F5YWhfTGkiLCJSZWphbmciLCJKYXZhbmVzZSIsIkNoYW0iLCJUYWlfVmlldCIsIk1lZXRlaV9NYXllayIsIm51bGwiLCJMaW5lYXJfQiIsIkx5Y2lhbiIsIkNhcmlhbiIsIk9sZF9JdGFsaWMiLCJHb3RoaWMiLCJPbGRfUGVybWljIiwiVWdhcml0aWMiLCJPbGRfUGVyc2lhbiIsIkRlc2VyZXQiLCJTaGF2aWFuIiwiT3NtYW55YSIsIkVsYmFzYW4iLCJDYXVjYXNpYW5fQWxiYW5pYW4iLCJMaW5lYXJfQSIsIkN5cHJpb3QiLCJJbXBlcmlhbF9BcmFtYWljIiwiUGFsbXlyZW5lIiwiTmFiYXRhZWFuIiwiSGF0cmFuIiwiUGhvZW5pY2lhbiIsIkx5ZGlhbiIsIk1lcm9pdGljX0hpZXJvZ2x5cGhzIiwiTWVyb2l0aWNfQ3Vyc2l2ZSIsIktoYXJvc2h0aGkiLCJPbGRfU291dGhfQXJhYmlhbiIsIk9sZF9Ob3J0aF9BcmFiaWFuIiwiTWFuaWNoYWVhbiIsIkF2ZXN0YW4iLCJJbnNjcmlwdGlvbmFsX1BhcnRoaWFuIiwiSW5zY3JpcHRpb25hbF9QYWhsYXZpIiwiUHNhbHRlcl9QYWhsYXZpIiwiT2xkX1R1cmtpYyIsIk9sZF9IdW5nYXJpYW4iLCJCcmFobWkiLCJLYWl0aGkiLCJTb3JhX1NvbXBlbmciLCJDaGFrbWEiLCJNYWhhamFuaSIsIlNoYXJhZGEiLCJLaG9qa2kiLCJNdWx0YW5pIiwiS2h1ZGF3YWRpIiwiR3JhbnRoYSIsIlRpcmh1dGEiLCJTaWRkaGFtIiwiTW9kaSIsIlRha3JpIiwiQWhvbSIsIldhcmFuZ19DaXRpIiwiUGF1X0Npbl9IYXUiLCJDdW5laWZvcm0iLCJFZ3lwdGlhbl9IaWVyb2dseXBocyIsIkFuYXRvbGlhbl9IaWVyb2dseXBocyIsIk1ybyIsIkJhc3NhX1ZhaCIsIlBhaGF3aF9IbW9uZyIsIk1pYW8iLCJEdXBsb3lhbiIsIlNpZ25Xcml0aW5nIiwiTWVuZGVfS2lrYWt1aSJdLCJlYXciOlsiTiIsIk5hIiwiQSIsIlciLCJIIiwiRiJdfQoKLyoqKi8gfSksCi8qIDI3MSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKZnVuY3Rpb24gX2ludGVyb3BEZWZhdWx0IChleCkgeyByZXR1cm4gKGV4ICYmICh0eXBlb2YgZXggPT09ICdvYmplY3QnKSAmJiAnZGVmYXVsdCcgaW4gZXgpID8gZXhbJ2RlZmF1bHQnXSA6IGV4OyB9Cgp2YXIgX3NsaWNlZFRvQXJyYXkgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNzIpKTsKdmFyIF9nZXRJdGVyYXRvciA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKSk7CnZhciBfZGVmaW5lUHJvcGVydHkgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNzYpKTsKdmFyIF9yZWdlbmVyYXRvclJ1bnRpbWUgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygyNzcpKTsKdmFyIF9TeW1ib2wkaXRlcmF0b3IgPSBfaW50ZXJvcERlZmF1bHQoX193ZWJwYWNrX3JlcXVpcmVfXygxMDMpKTsKdmFyIF9jbGFzc0NhbGxDaGVjayA9IF9pbnRlcm9wRGVmYXVsdChfX3dlYnBhY2tfcmVxdWlyZV9fKDEwNikpOwp2YXIgX2NyZWF0ZUNsYXNzID0gX2ludGVyb3BEZWZhdWx0KF9fd2VicGFja19yZXF1aXJlX18oMTA3KSk7Cgp2YXIgSU5JVElBTF9TVEFURSA9IDE7CnZhciBGQUlMX1NUQVRFID0gMDsKCi8qKgogKiBBIFN0YXRlTWFjaGluZSByZXByZXNlbnRzIGEgZGV0ZXJtaW5pc3RpYyBmaW5pdGUgYXV0b21hdG9uLgogKiBJdCBjYW4gcGVyZm9ybSBtYXRjaGVzIG92ZXIgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMsIHNpbWlsYXIgdG8gYSByZWd1bGFyIGV4cHJlc3Npb24uCiAqLwoKdmFyIFN0YXRlTWFjaGluZSA9IGZ1bmN0aW9uICgpIHsKICBmdW5jdGlvbiBTdGF0ZU1hY2hpbmUoZGZhKSB7CiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgU3RhdGVNYWNoaW5lKTsKCiAgICB0aGlzLnN0YXRlVGFibGUgPSBkZmEuc3RhdGVUYWJsZTsKICAgIHRoaXMuYWNjZXB0aW5nID0gZGZhLmFjY2VwdGluZzsKICAgIHRoaXMudGFncyA9IGRmYS50YWdzOwogIH0KCiAgLyoqCiAgICogUmV0dXJucyBhbiBpdGVyYWJsZSBvYmplY3QgdGhhdCB5aWVsZHMgcGF0dGVybiBtYXRjaGVzIG92ZXIgdGhlIGlucHV0IHNlcXVlbmNlLgogICAqIE1hdGNoZXMgYXJlIG9mIHRoZSBmb3JtIFtzdGFydEluZGV4LCBlbmRJbmRleCwgdGFnc10uCiAgICovCgoKICBfY3JlYXRlQ2xhc3MoU3RhdGVNYWNoaW5lLCBbewogICAga2V5OiAnbWF0Y2gnLAogICAgdmFsdWU6IGZ1bmN0aW9uIG1hdGNoKHN0cikgewogICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgIHJldHVybiBfZGVmaW5lUHJvcGVydHkoe30sIF9TeW1ib2wkaXRlcmF0b3IsIF9yZWdlbmVyYXRvclJ1bnRpbWUubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkgewogICAgICAgIHZhciBzdGF0ZSwgc3RhcnRSdW4sIGxhc3RBY2NlcHRpbmcsIGxhc3RTdGF0ZSwgcCwgYzsKICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7CiAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7CiAgICAgICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgICAgc3RhdGUgPSBJTklUSUFMX1NUQVRFOwogICAgICAgICAgICAgICAgc3RhcnRSdW4gPSBudWxsOwogICAgICAgICAgICAgICAgbGFzdEFjY2VwdGluZyA9IG51bGw7CiAgICAgICAgICAgICAgICBsYXN0U3RhdGUgPSBudWxsOwogICAgICAgICAgICAgICAgcCA9IDA7CgogICAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIGlmICghKHAgPCBzdHIubGVuZ3RoKSkgewogICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjE7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGMgPSBzdHJbcF07CgoKICAgICAgICAgICAgICAgIGxhc3RTdGF0ZSA9IHN0YXRlOwogICAgICAgICAgICAgICAgc3RhdGUgPSBzZWxmLnN0YXRlVGFibGVbc3RhdGVdW2NdOwoKICAgICAgICAgICAgICAgIGlmICghKHN0YXRlID09PSBGQUlMX1NUQVRFKSkgewogICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTU7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICghKHN0YXJ0UnVuICE9IG51bGwgJiYgbGFzdEFjY2VwdGluZyAhPSBudWxsICYmIGxhc3RBY2NlcHRpbmcgPj0gc3RhcnRSdW4pKSB7CiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMzsKICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDEzOwogICAgICAgICAgICAgICAgcmV0dXJuIFtzdGFydFJ1biwgbGFzdEFjY2VwdGluZywgc2VsZi50YWdzW2xhc3RTdGF0ZV1dOwoKICAgICAgICAgICAgICBjYXNlIDEzOgoKICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBzdGF0ZSBhcyBpZiB3ZSBzdGFydGVkIG92ZXIgZnJvbSB0aGUgaW5pdGlhbCBzdGF0ZQogICAgICAgICAgICAgICAgc3RhdGUgPSBzZWxmLnN0YXRlVGFibGVbSU5JVElBTF9TVEFURV1bY107CiAgICAgICAgICAgICAgICBzdGFydFJ1biA9IG51bGw7CgogICAgICAgICAgICAgIGNhc2UgMTU6CgogICAgICAgICAgICAgICAgLy8gc3RhcnQgYSBydW4gaWYgbm90IGluIHRoZSBmYWlsdXJlIHN0YXRlCiAgICAgICAgICAgICAgICBpZiAoc3RhdGUgIT09IEZBSUxfU1RBVEUgJiYgc3RhcnRSdW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICBzdGFydFJ1biA9IHA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gaWYgYWNjZXB0aW5nLCBtYXJrIHRoZSBwb3RlbnRpYWwgbWF0Y2ggZW5kCiAgICAgICAgICAgICAgICBpZiAoc2VsZi5hY2NlcHRpbmdbc3RhdGVdKSB7CiAgICAgICAgICAgICAgICAgIGxhc3RBY2NlcHRpbmcgPSBwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBzdGF0ZSB0byB0aGUgaW5pdGlhbCBzdGF0ZSBpZiB3ZSBnZXQgaW50byB0aGUgZmFpbHVyZSBzdGF0ZQogICAgICAgICAgICAgICAgaWYgKHN0YXRlID09PSBGQUlMX1NUQVRFKSB7CiAgICAgICAgICAgICAgICAgIHN0YXRlID0gSU5JVElBTF9TVEFURTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgY2FzZSAxODoKICAgICAgICAgICAgICAgIHArKzsKICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA1OwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgIGNhc2UgMjE6CiAgICAgICAgICAgICAgICBpZiAoIShzdGFydFJ1biAhPSBudWxsICYmIGxhc3RBY2NlcHRpbmcgIT0gbnVsbCAmJiBsYXN0QWNjZXB0aW5nID49IHN0YXJ0UnVuKSkgewogICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjQ7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyNDsKICAgICAgICAgICAgICAgIHJldHVybiBbc3RhcnRSdW4sIGxhc3RBY2NlcHRpbmcsIHNlbGYudGFnc1tzdGF0ZV1dOwoKICAgICAgICAgICAgICBjYXNlIDI0OgogICAgICAgICAgICAgIGNhc2UgJ2VuZCc6CiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7CiAgICAgIH0pKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZvciBlYWNoIG1hdGNoIG92ZXIgdGhlIGlucHV0IHNlcXVlbmNlLCBhY3Rpb24gZnVuY3Rpb25zIG1hdGNoaW5nCiAgICAgKiB0aGUgdGFnIGRlZmluaXRpb25zIGluIHRoZSBpbnB1dCBwYXR0ZXJuIGFyZSBjYWxsZWQgd2l0aCB0aGUgc3RhcnRJbmRleCwKICAgICAqIGVuZEluZGV4LCBhbmQgc3ViLW1hdGNoIHNlcXVlbmNlLgogICAgICovCgogIH0sIHsKICAgIGtleTogJ2FwcGx5JywKICAgIHZhbHVlOiBmdW5jdGlvbiBhcHBseShzdHIsIGFjdGlvbnMpIHsKICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlOwogICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IgPSBmYWxzZTsKICAgICAgdmFyIF9pdGVyYXRvckVycm9yID0gdW5kZWZpbmVkOwoKICAgICAgdHJ5IHsKICAgICAgICBmb3IgKHZhciBfaXRlcmF0b3IgPSBfZ2V0SXRlcmF0b3IodGhpcy5tYXRjaChzdHIpKSwgX3N0ZXA7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZSkgewogICAgICAgICAgdmFyIF9zdGVwJHZhbHVlID0gX3NsaWNlZFRvQXJyYXkoX3N0ZXAudmFsdWUsIDMpOwoKICAgICAgICAgIHZhciBzdGFydCA9IF9zdGVwJHZhbHVlWzBdOwogICAgICAgICAgdmFyIGVuZCA9IF9zdGVwJHZhbHVlWzFdOwogICAgICAgICAgdmFyIHRhZ3MgPSBfc3RlcCR2YWx1ZVsyXTsKICAgICAgICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IHRydWU7CiAgICAgICAgICB2YXIgX2RpZEl0ZXJhdG9yRXJyb3IyID0gZmFsc2U7CiAgICAgICAgICB2YXIgX2l0ZXJhdG9yRXJyb3IyID0gdW5kZWZpbmVkOwoKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjIgPSBfZ2V0SXRlcmF0b3IodGFncyksIF9zdGVwMjsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMiA9IChfc3RlcDIgPSBfaXRlcmF0b3IyLm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZSkgewogICAgICAgICAgICAgIHZhciB0YWcgPSBfc3RlcDIudmFsdWU7CgogICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aW9uc1t0YWddID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICBhY3Rpb25zW3RhZ10oc3RhcnQsIGVuZCwgc3RyLnNsaWNlKHN0YXJ0LCBlbmQgKyAxKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyID0gdHJ1ZTsKICAgICAgICAgICAgX2l0ZXJhdG9yRXJyb3IyID0gZXJyOwogICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yICYmIF9pdGVyYXRvcjIucmV0dXJuKSB7CiAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLnJldHVybigpOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IyKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjI7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGNhdGNoIChlcnIpIHsKICAgICAgICBfZGlkSXRlcmF0b3JFcnJvciA9IHRydWU7CiAgICAgICAgX2l0ZXJhdG9yRXJyb3IgPSBlcnI7CiAgICAgIH0gZmluYWxseSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiAmJiBfaXRlcmF0b3IucmV0dXJuKSB7CiAgICAgICAgICAgIF9pdGVyYXRvci5yZXR1cm4oKTsKICAgICAgICAgIH0KICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgaWYgKF9kaWRJdGVyYXRvckVycm9yKSB7CiAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH1dKTsKCiAgcmV0dXJuIFN0YXRlTWFjaGluZTsKfSgpOwoKbW9kdWxlLmV4cG9ydHMgPSBTdGF0ZU1hY2hpbmU7CgoKLyoqKi8gfSksCi8qIDI3MiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgoidXNlIHN0cmljdCI7CgoKZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTsKCnZhciBfaXNJdGVyYWJsZTIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3Myk7Cgp2YXIgX2lzSXRlcmFibGUzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNJdGVyYWJsZTIpOwoKdmFyIF9nZXRJdGVyYXRvcjIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYwKTsKCnZhciBfZ2V0SXRlcmF0b3IzID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZ2V0SXRlcmF0b3IyKTsKCmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9CgpleHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAoKSB7CiAgZnVuY3Rpb24gc2xpY2VJdGVyYXRvcihhcnIsIGkpIHsKICAgIHZhciBfYXJyID0gW107CiAgICB2YXIgX24gPSB0cnVlOwogICAgdmFyIF9kID0gZmFsc2U7CiAgICB2YXIgX2UgPSB1bmRlZmluZWQ7CgogICAgdHJ5IHsKICAgICAgZm9yICh2YXIgX2kgPSAoMCwgX2dldEl0ZXJhdG9yMy5kZWZhdWx0KShhcnIpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgewogICAgICAgIF9hcnIucHVzaChfcy52YWx1ZSk7CgogICAgICAgIGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsKICAgICAgfQogICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgIF9kID0gdHJ1ZTsKICAgICAgX2UgPSBlcnI7CiAgICB9IGZpbmFsbHkgewogICAgICB0cnkgewogICAgICAgIGlmICghX24gJiYgX2lbInJldHVybiJdKSBfaVsicmV0dXJuIl0oKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBpZiAoX2QpIHRocm93IF9lOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuIF9hcnI7CiAgfQoKICByZXR1cm4gZnVuY3Rpb24gKGFyciwgaSkgewogICAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgewogICAgICByZXR1cm4gYXJyOwogICAgfSBlbHNlIGlmICgoMCwgX2lzSXRlcmFibGUzLmRlZmF1bHQpKE9iamVjdChhcnIpKSkgewogICAgICByZXR1cm4gc2xpY2VJdGVyYXRvcihhcnIsIGkpOwogICAgfSBlbHNlIHsKICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpOwogICAgfQogIH07Cn0oKTsKCi8qKiovIH0pLAovKiAyNzMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193ZWJwYWNrX3JlcXVpcmVfXygyNzQpLCBfX2VzTW9kdWxlOiB0cnVlIH07CgovKioqLyB9KSwKLyogMjc0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCl9fd2VicGFja19yZXF1aXJlX18oMjgpOwpfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTsKbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3NSk7CgoKLyoqKi8gfSksCi8qIDI3NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgY2xhc3NvZiA9IF9fd2VicGFja19yZXF1aXJlX18oNjgpOwp2YXIgSVRFUkFUT1IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpKCdpdGVyYXRvcicpOwp2YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7Cm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKS5pc0l0ZXJhYmxlID0gZnVuY3Rpb24gKGl0KSB7CiAgdmFyIE8gPSBPYmplY3QoaXQpOwogIHJldHVybiBPW0lURVJBVE9SXSAhPT0gdW5kZWZpbmVkCiAgICB8fCAnQEBpdGVyYXRvcicgaW4gTwogICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucwogICAgfHwgSXRlcmF0b3JzLmhhc093blByb3BlcnR5KGNsYXNzb2YoTykpOwp9OwoKCi8qKiovIH0pLAovKiAyNzYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7Cgp2YXIgX2RlZmluZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NCk7Cgp2YXIgX2RlZmluZVByb3BlcnR5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZmluZVByb3BlcnR5KTsKCmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9CgpleHBvcnRzLmRlZmF1bHQgPSBmdW5jdGlvbiAob2JqLCBrZXksIHZhbHVlKSB7CiAgaWYgKGtleSBpbiBvYmopIHsKICAgICgwLCBfZGVmaW5lUHJvcGVydHkyLmRlZmF1bHQpKG9iaiwga2V5LCB7CiAgICAgIHZhbHVlOiB2YWx1ZSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZSwKICAgICAgY29uZmlndXJhYmxlOiB0cnVlLAogICAgICB3cml0YWJsZTogdHJ1ZQogICAgfSk7CiAgfSBlbHNlIHsKICAgIG9ialtrZXldID0gdmFsdWU7CiAgfQoKICByZXR1cm4gb2JqOwp9OwoKLyoqKi8gfSksCi8qIDI3NyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjc4KTsKCgovKioqLyB9KSwKLyogMjc4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8qKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovCgovLyBUaGlzIG1ldGhvZCBvZiBvYnRhaW5pbmcgYSByZWZlcmVuY2UgdG8gdGhlIGdsb2JhbCBvYmplY3QgbmVlZHMgdG8gYmUKLy8ga2VwdCBpZGVudGljYWwgdG8gdGhlIHdheSBpdCBpcyBvYnRhaW5lZCBpbiBydW50aW1lLmpzCnZhciBnID0gKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcyB9KSgpIHx8IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7CgovLyBVc2UgYGdldE93blByb3BlcnR5TmFtZXNgIGJlY2F1c2Ugbm90IGFsbCBicm93c2VycyBzdXBwb3J0IGNhbGxpbmcKLy8gYGhhc093blByb3BlcnR5YCBvbiB0aGUgZ2xvYmFsIGBzZWxmYCBvYmplY3QgaW4gYSB3b3JrZXIuIFNlZSAjMTgzLgp2YXIgaGFkUnVudGltZSA9IGcucmVnZW5lcmF0b3JSdW50aW1lICYmCiAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZykuaW5kZXhPZigicmVnZW5lcmF0b3JSdW50aW1lIikgPj0gMDsKCi8vIFNhdmUgdGhlIG9sZCByZWdlbmVyYXRvclJ1bnRpbWUgaW4gY2FzZSBpdCBuZWVkcyB0byBiZSByZXN0b3JlZCBsYXRlci4KdmFyIG9sZFJ1bnRpbWUgPSBoYWRSdW50aW1lICYmIGcucmVnZW5lcmF0b3JSdW50aW1lOwoKLy8gRm9yY2UgcmVldmFsdXRhdGlvbiBvZiBydW50aW1lLmpzLgpnLnJlZ2VuZXJhdG9yUnVudGltZSA9IHVuZGVmaW5lZDsKCm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNzkpOwoKaWYgKGhhZFJ1bnRpbWUpIHsKICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCBydW50aW1lLgogIGcucmVnZW5lcmF0b3JSdW50aW1lID0gb2xkUnVudGltZTsKfSBlbHNlIHsKICAvLyBSZW1vdmUgdGhlIGdsb2JhbCBwcm9wZXJ0eSBhZGRlZCBieSBydW50aW1lLmpzLgogIHRyeSB7CiAgICBkZWxldGUgZy5yZWdlbmVyYXRvclJ1bnRpbWU7CiAgfSBjYXRjaChlKSB7CiAgICBnLnJlZ2VuZXJhdG9yUnVudGltZSA9IHVuZGVmaW5lZDsKICB9Cn0KCgovKioqLyB9KSwKLyogMjc5ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCi8qKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovCgohKGZ1bmN0aW9uKGdsb2JhbCkgewogICJ1c2Ugc3RyaWN0IjsKCiAgdmFyIE9wID0gT2JqZWN0LnByb3RvdHlwZTsKICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7CiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuCiAgdmFyICRTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSAiZnVuY3Rpb24iID8gU3ltYm9sIDoge307CiAgdmFyIGl0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5pdGVyYXRvciB8fCAiQEBpdGVyYXRvciI7CiAgdmFyIGFzeW5jSXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLmFzeW5jSXRlcmF0b3IgfHwgIkBAYXN5bmNJdGVyYXRvciI7CiAgdmFyIHRvU3RyaW5nVGFnU3ltYm9sID0gJFN5bWJvbC50b1N0cmluZ1RhZyB8fCAiQEB0b1N0cmluZ1RhZyI7CgogIHZhciBpbk1vZHVsZSA9IHR5cGVvZiBtb2R1bGUgPT09ICJvYmplY3QiOwogIHZhciBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZTsKICBpZiAocnVudGltZSkgewogICAgaWYgKGluTW9kdWxlKSB7CiAgICAgIC8vIElmIHJlZ2VuZXJhdG9yUnVudGltZSBpcyBkZWZpbmVkIGdsb2JhbGx5IGFuZCB3ZSdyZSBpbiBhIG1vZHVsZSwKICAgICAgLy8gbWFrZSB0aGUgZXhwb3J0cyBvYmplY3QgaWRlbnRpY2FsIHRvIHJlZ2VuZXJhdG9yUnVudGltZS4KICAgICAgbW9kdWxlLmV4cG9ydHMgPSBydW50aW1lOwogICAgfQogICAgLy8gRG9uJ3QgYm90aGVyIGV2YWx1YXRpbmcgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGlmIHRoZSBydW50aW1lIHdhcwogICAgLy8gYWxyZWFkeSBkZWZpbmVkIGdsb2JhbGx5LgogICAgcmV0dXJuOwogIH0KCiAgLy8gRGVmaW5lIHRoZSBydW50aW1lIGdsb2JhbGx5IChhcyBleHBlY3RlZCBieSBnZW5lcmF0ZWQgY29kZSkgYXMgZWl0aGVyCiAgLy8gbW9kdWxlLmV4cG9ydHMgKGlmIHdlJ3JlIGluIGEgbW9kdWxlKSBvciBhIG5ldywgZW1wdHkgb2JqZWN0LgogIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lID0gaW5Nb2R1bGUgPyBtb2R1bGUuZXhwb3J0cyA6IHt9OwoKICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7CiAgICAvLyBJZiBvdXRlckZuIHByb3ZpZGVkIGFuZCBvdXRlckZuLnByb3RvdHlwZSBpcyBhIEdlbmVyYXRvciwgdGhlbiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvci4KICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yOwogICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTsKICAgIHZhciBjb250ZXh0ID0gbmV3IENvbnRleHQodHJ5TG9jc0xpc3QgfHwgW10pOwoKICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCwKICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gbWV0aG9kcy4KICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTsKCiAgICByZXR1cm4gZ2VuZXJhdG9yOwogIH0KICBydW50aW1lLndyYXAgPSB3cmFwOwoKICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb24KICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGQKICAvLyBoYXZlIGJlZW4gKGFuZCB3YXMgcHJldmlvdXNseSkgZGVzaWduZWQgdG8gdGFrZSBhIGNsb3N1cmUgdG8gYmUKICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlCiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZAogIC8vIHRvIGNyZWF0ZSBhIG5ldyBmdW5jdGlvbiBvYmplY3QuIFdlIGNhbiBldmVuIGdldCBhd2F5IHdpdGggYXNzdW1pbmcKICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZQogIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZQogIC8vIG9ubHkgYWRkaXRpb25hbCBhbGxvY2F0aW9uIHJlcXVpcmVkIGlzIHRoZSBjb21wbGV0aW9uIHJlY29yZCwgd2hpY2gKICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuCiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7CiAgICB0cnkgewogICAgICByZXR1cm4geyB0eXBlOiAibm9ybWFsIiwgYXJnOiBmbi5jYWxsKG9iaiwgYXJnKSB9OwogICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgIHJldHVybiB7IHR5cGU6ICJ0aHJvdyIsIGFyZzogZXJyIH07CiAgICB9CiAgfQoKICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9ICJzdXNwZW5kZWRTdGFydCI7CiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSAic3VzcGVuZGVkWWllbGQiOwogIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9ICJleGVjdXRpbmciOwogIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9ICJjb21wbGV0ZWQiOwoKICAvLyBSZXR1cm5pbmcgdGhpcyBvYmplY3QgZnJvbSB0aGUgaW5uZXJGbiBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzCiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LgogIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307CgogIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZAogIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvcgogIC8vIG9iamVjdHMuIEZvciBmdWxsIHNwZWMgY29tcGxpYW5jZSwgeW91IG1heSB3aXNoIHRvIGNvbmZpZ3VyZSB5b3VyCiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy4KICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fQogIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uKCkge30KICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9CgogIC8vIFRoaXMgaXMgYSBwb2x5ZmlsbCBmb3IgJUl0ZXJhdG9yUHJvdG90eXBlJSBmb3IgZW52aXJvbm1lbnRzIHRoYXQKICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LgogIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9OwogIEl0ZXJhdG9yUHJvdG90eXBlW2l0ZXJhdG9yU3ltYm9sXSA9IGZ1bmN0aW9uICgpIHsKICAgIHJldHVybiB0aGlzOwogIH07CgogIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjsKICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7CiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmCiAgICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJgogICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7CiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZAogICAgLy8gb2YgdGhlIHBvbHlmaWxsLgogICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTsKICB9CgogIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9CiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7CiAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uOwogIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlW3RvU3RyaW5nVGFnU3ltYm9sXSA9CiAgICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9ICJHZW5lcmF0b3JGdW5jdGlvbiI7CgogIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlCiAgLy8gSXRlcmF0b3IgaW50ZXJmYWNlIGluIHRlcm1zIG9mIGEgc2luZ2xlIC5faW52b2tlIG1ldGhvZC4KICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7CiAgICBbIm5leHQiLCAidGhyb3ciLCAicmV0dXJuIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHsKICAgICAgcHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbihhcmcpIHsKICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTsKICAgICAgfTsKICAgIH0pOwogIH0KCiAgcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7CiAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09ICJmdW5jdGlvbiIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yOwogICAgcmV0dXJuIGN0b3IKICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fAogICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW4KICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuCiAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gIkdlbmVyYXRvckZ1bmN0aW9uIgogICAgICA6IGZhbHNlOwogIH07CgogIHJ1bnRpbWUubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikgewogICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikgewogICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7CiAgICB9IGVsc2UgewogICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgIGlmICghKHRvU3RyaW5nVGFnU3ltYm9sIGluIGdlbkZ1bikpIHsKICAgICAgICBnZW5GdW5bdG9TdHJpbmdUYWdTeW1ib2xdID0gIkdlbmVyYXRvckZ1bmN0aW9uIjsKICAgICAgfQogICAgfQogICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApOwogICAgcmV0dXJuIGdlbkZ1bjsKICB9OwoKICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG8KICAvLyBgeWllbGQgcmVnZW5lcmF0b3JSdW50aW1lLmF3cmFwKHgpYCwgc28gdGhhdCB0aGUgcnVudGltZSBjYW4gdGVzdAogIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgIl9fYXdhaXQiKWAgdG8gZGV0ZXJtaW5lIGlmIHRoZSB5aWVsZGVkIHZhbHVlIGlzCiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC4KICBydW50aW1lLmF3cmFwID0gZnVuY3Rpb24oYXJnKSB7CiAgICByZXR1cm4geyBfX2F3YWl0OiBhcmcgfTsKICB9OwoKICBmdW5jdGlvbiBBc3luY0l0ZXJhdG9yKGdlbmVyYXRvcikgewogICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHsKICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7CiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gInRocm93IikgewogICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZzsKICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7CiAgICAgICAgaWYgKHZhbHVlICYmCiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gIm9iamVjdCIgJiYKICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsICJfX2F3YWl0IikpIHsKICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgICBpbnZva2UoIm5leHQiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTsKICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikgewogICAgICAgICAgICBpbnZva2UoInRocm93IiwgZXJyLCByZXNvbHZlLCByZWplY3QpOwogICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkgewogICAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXMKICAgICAgICAgIC8vIHRoZSAudmFsdWUgb2YgdGhlIFByb21pc2U8e3ZhbHVlLGRvbmV9PiByZXN1bHQgZm9yIHRoZQogICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uIElmIHRoZSBQcm9taXNlIGlzIHJlamVjdGVkLCBob3dldmVyLCB0aGUKICAgICAgICAgIC8vIHJlc3VsdCBmb3IgdGhpcyBpdGVyYXRpb24gd2lsbCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lCiAgICAgICAgICAvLyByZWFzb24uIE5vdGUgdGhhdCByZWplY3Rpb25zIG9mIHlpZWxkZWQgUHJvbWlzZXMgYXJlIG5vdAogICAgICAgICAgLy8gdGhyb3duIGJhY2sgaW50byB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhcyBpcyB0aGUgY2FzZQogICAgICAgICAgLy8gd2hlbiBhbiBhd2FpdGVkIFByb21pc2UgaXMgcmVqZWN0ZWQuIFRoaXMgZGlmZmVyZW5jZSBpbgogICAgICAgICAgLy8gYmVoYXZpb3IgYmV0d2VlbiB5aWVsZCBhbmQgYXdhaXQgaXMgaW1wb3J0YW50LCBiZWNhdXNlIGl0CiAgICAgICAgICAvLyBhbGxvd3MgdGhlIGNvbnN1bWVyIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhlIHlpZWxkZWQKICAgICAgICAgIC8vIHJlamVjdGlvbiAoc3dhbGxvdyBpdCBhbmQgY29udGludWUsIG1hbnVhbGx5IC50aHJvdyBpdCBiYWNrCiAgICAgICAgICAvLyBpbnRvIHRoZSBnZW5lcmF0b3IsIGFiYW5kb24gaXRlcmF0aW9uLCB3aGF0ZXZlcikuIFdpdGgKICAgICAgICAgIC8vIGF3YWl0LCBieSBjb250cmFzdCwgdGhlcmUgaXMgbm8gb3Bwb3J0dW5pdHkgdG8gZXhhbWluZSB0aGUKICAgICAgICAgIC8vIHJlamVjdGlvbiByZWFzb24gb3V0c2lkZSB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBzbyB0aGUKICAgICAgICAgIC8vIG9ubHkgb3B0aW9uIGlzIHRvIHRocm93IGl0IGZyb20gdGhlIGF3YWl0IGV4cHJlc3Npb24sIGFuZAogICAgICAgICAgLy8gbGV0IHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gaGFuZGxlIHRoZSBleGNlcHRpb24uCiAgICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7CiAgICAgICAgICByZXNvbHZlKHJlc3VsdCk7CiAgICAgICAgfSwgcmVqZWN0KTsKICAgICAgfQogICAgfQoKICAgIHZhciBwcmV2aW91c1Byb21pc2U7CgogICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykgewogICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7CiAgICAgICAgfSk7CiAgICAgIH0KCiAgICAgIHJldHVybiBwcmV2aW91c1Byb21pc2UgPQogICAgICAgIC8vIElmIGVucXVldWUgaGFzIGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiB3ZSB3YW50IHRvIHdhaXQgdW50aWwKICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSwKICAgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmCiAgICAgICAgLy8gZW5xdWV1ZSBoYXMgbm90IGJlZW4gY2FsbGVkIGJlZm9yZSwgdGhlbiBpdCBpcyBpbXBvcnRhbnQgdG8KICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSwKICAgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkbwogICAgICAgIC8vIGFueSBuZWNlc3Nhcnkgc2V0dXAgaW4gYSBwcmVkaWN0YWJsZSB3YXkuIFRoaXMgcHJlZGljdGFiaWxpdHkKICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0cwogICAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5CiAgICAgICAgLy8gZXhlY3V0ZSBjb2RlIGJlZm9yZSB0aGUgZmlyc3QgYXdhaXQuIFNpbmNlIHdlIGltcGxlbWVudCBzaW1wbGUKICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseQogICAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS4KICAgICAgICBwcmV2aW91c1Byb21pc2UgPyBwcmV2aW91c1Byb21pc2UudGhlbigKICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLAogICAgICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnkgbGF0ZXIKICAgICAgICAgIC8vIGludm9jYXRpb25zIG9mIHRoZSBpdGVyYXRvci4KICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnCiAgICAgICAgKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7CiAgICB9CgogICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCwKICAgIC8vIC50aHJvdywgYW5kIC5yZXR1cm4gKHNlZSBkZWZpbmVJdGVyYXRvck1ldGhvZHMpLgogICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTsKICB9CgogIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7CiAgQXN5bmNJdGVyYXRvci5wcm90b3R5cGVbYXN5bmNJdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7CiAgICByZXR1cm4gdGhpczsKICB9OwogIHJ1bnRpbWUuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7CgogIC8vIE5vdGUgdGhhdCBzaW1wbGUgYXN5bmMgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBvbiB0b3Agb2YKICAvLyBBc3luY0l0ZXJhdG9yIG9iamVjdHM7IHRoZXkganVzdCByZXR1cm4gYSBQcm9taXNlIGZvciB0aGUgdmFsdWUgb2YKICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci4KICBydW50aW1lLmFzeW5jID0gZnVuY3Rpb24oaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpIHsKICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoCiAgICAgIHdyYXAoaW5uZXJGbiwgb3V0ZXJGbiwgc2VsZiwgdHJ5TG9jc0xpc3QpCiAgICApOwoKICAgIHJldHVybiBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24ob3V0ZXJGbikKICAgICAgPyBpdGVyIC8vIElmIG91dGVyRm4gaXMgYSBnZW5lcmF0b3IsIHJldHVybiB0aGUgZnVsbCBpdGVyYXRvci4KICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkgewogICAgICAgICAgcmV0dXJuIHJlc3VsdC5kb25lID8gcmVzdWx0LnZhbHVlIDogaXRlci5uZXh0KCk7CiAgICAgICAgfSk7CiAgfTsKCiAgZnVuY3Rpb24gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KSB7CiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0OwoKICAgIHJldHVybiBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcpIHsKICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykgewogICAgICAgIHRocm93IG5ldyBFcnJvcigiR2VuZXJhdG9yIGlzIGFscmVhZHkgcnVubmluZyIpOwogICAgICB9CgogICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7CiAgICAgICAgaWYgKG1ldGhvZCA9PT0gInRocm93IikgewogICAgICAgICAgdGhyb3cgYXJnOwogICAgICAgIH0KCiAgICAgICAgLy8gQmUgZm9yZ2l2aW5nLCBwZXIgMjUuMy4zLjMuMyBvZiB0aGUgc3BlYzoKICAgICAgICAvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtZ2VuZXJhdG9ycmVzdW1lCiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTsKICAgICAgfQoKICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7CiAgICAgIGNvbnRleHQuYXJnID0gYXJnOwoKICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICB2YXIgZGVsZWdhdGUgPSBjb250ZXh0LmRlbGVnYXRlOwogICAgICAgIGlmIChkZWxlZ2F0ZSkgewogICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7CiAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQpIHsKICAgICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0ID09PSBDb250aW51ZVNlbnRpbmVsKSBjb250aW51ZTsKICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0OwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSAibmV4dCIpIHsKICAgICAgICAgIC8vIFNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwncwogICAgICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi4KICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZzsKCiAgICAgICAgfSBlbHNlIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gInRocm93IikgewogICAgICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0KSB7CiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7CiAgICAgICAgICAgIHRocm93IGNvbnRleHQuYXJnOwogICAgICAgICAgfQoKICAgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpOwoKICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSAicmV0dXJuIikgewogICAgICAgICAgY29udGV4dC5hYnJ1cHQoInJldHVybiIsIGNvbnRleHQuYXJnKTsKICAgICAgICB9CgogICAgICAgIHN0YXRlID0gR2VuU3RhdGVFeGVjdXRpbmc7CgogICAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTsKICAgICAgICBpZiAocmVjb3JkLnR5cGUgPT09ICJub3JtYWwiKSB7CiAgICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gaW5uZXJGbiwgd2UgbGVhdmUgc3RhdGUgPT09CiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uCiAgICAgICAgICBzdGF0ZSA9IGNvbnRleHQuZG9uZQogICAgICAgICAgICA/IEdlblN0YXRlQ29tcGxldGVkCiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDsKCiAgICAgICAgICBpZiAocmVjb3JkLmFyZyA9PT0gQ29udGludWVTZW50aW5lbCkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KCiAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICB2YWx1ZTogcmVjb3JkLmFyZywKICAgICAgICAgICAgZG9uZTogY29udGV4dC5kb25lCiAgICAgICAgICB9OwoKICAgICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSAidGhyb3ciKSB7CiAgICAgICAgICBzdGF0ZSA9IEdlblN0YXRlQ29tcGxldGVkOwogICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZQogICAgICAgICAgLy8gY29udGV4dC5kaXNwYXRjaEV4Y2VwdGlvbihjb250ZXh0LmFyZykgY2FsbCBhYm92ZS4KICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gInRocm93IjsKICAgICAgICAgIGNvbnRleHQuYXJnID0gcmVjb3JkLmFyZzsKICAgICAgICB9CiAgICAgIH0KICAgIH07CiAgfQoKICAvLyBDYWxsIGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXShjb250ZXh0LmFyZykgYW5kIGhhbmRsZSB0aGUKICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlCiAgLy8gZGVsZWdhdGUgaXRlcmF0b3IsIG9yIGJ5IG1vZGlmeWluZyBjb250ZXh0Lm1ldGhvZCBhbmQgY29udGV4dC5hcmcsCiAgLy8gc2V0dGluZyBjb250ZXh0LmRlbGVnYXRlIHRvIG51bGwsIGFuZCByZXR1cm5pbmcgdGhlIENvbnRpbnVlU2VudGluZWwuCiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkgewogICAgdmFyIG1ldGhvZCA9IGRlbGVnYXRlLml0ZXJhdG9yW2NvbnRleHQubWV0aG9kXTsKICAgIGlmIChtZXRob2QgPT09IHVuZGVmaW5lZCkgewogICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3cKICAgICAgLy8gbWV0aG9kIGFsd2F5cyB0ZXJtaW5hdGVzIHRoZSB5aWVsZCogbG9vcC4KICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7CgogICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09ICJ0aHJvdyIpIHsKICAgICAgICBpZiAoZGVsZWdhdGUuaXRlcmF0b3IucmV0dXJuKSB7CiAgICAgICAgICAvLyBJZiB0aGUgZGVsZWdhdGUgaXRlcmF0b3IgaGFzIGEgcmV0dXJuIG1ldGhvZCwgZ2l2ZSBpdCBhCiAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuCiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9ICJyZXR1cm4iOwogICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7CiAgICAgICAgICBtYXliZUludm9rZURlbGVnYXRlKGRlbGVnYXRlLCBjb250ZXh0KTsKCiAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09ICJ0aHJvdyIpIHsKICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb20KICAgICAgICAgICAgLy8gInJldHVybiIgdG8gInRocm93IiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy4KICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb250ZXh0Lm1ldGhvZCA9ICJ0aHJvdyI7CiAgICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKAogICAgICAgICAgIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2QiKTsKICAgICAgfQoKICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7CiAgICB9CgogICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKG1ldGhvZCwgZGVsZWdhdGUuaXRlcmF0b3IsIGNvbnRleHQuYXJnKTsKCiAgICBpZiAocmVjb3JkLnR5cGUgPT09ICJ0aHJvdyIpIHsKICAgICAgY29udGV4dC5tZXRob2QgPSAidGhyb3ciOwogICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7CiAgICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsOwogICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDsKICAgIH0KCiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7CgogICAgaWYgKCEgaW5mbykgewogICAgICBjb250ZXh0Lm1ldGhvZCA9ICJ0aHJvdyI7CiAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcigiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3QiKTsKICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7CiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsOwogICAgfQoKICAgIGlmIChpbmZvLmRvbmUpIHsKICAgICAgLy8gQXNzaWduIHRoZSByZXN1bHQgb2YgdGhlIGZpbmlzaGVkIGRlbGVnYXRlIHRvIHRoZSB0ZW1wb3JhcnkKICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS4KICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7CgogICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuCiAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7CgogICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgInRocm93IiBidXQgdGhlIGRlbGVnYXRlIGhhbmRsZWQgdGhlCiAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWYKICAgICAgLy8gY29udGV4dC5tZXRob2Qgd2FzICJuZXh0IiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuCiAgICAgIC8vICJjb25zdW1lZCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXMKICAgICAgLy8gInJldHVybiIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlCiAgICAgIC8vIG91dGVyIGdlbmVyYXRvci4KICAgICAgaWYgKGNvbnRleHQubWV0aG9kICE9PSAicmV0dXJuIikgewogICAgICAgIGNvbnRleHQubWV0aG9kID0gIm5leHQiOwogICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkOwogICAgICB9CgogICAgfSBlbHNlIHsKICAgICAgLy8gUmUteWllbGQgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgbWV0aG9kLgogICAgICByZXR1cm4gaW5mbzsKICAgIH0KCiAgICAvLyBUaGUgZGVsZWdhdGUgaXRlcmF0b3IgaXMgZmluaXNoZWQsIHNvIGZvcmdldCBpdCBhbmQgY29udGludWUgd2l0aAogICAgLy8gdGhlIG91dGVyIGdlbmVyYXRvci4KICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsOwogICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7CiAgfQoKICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZQogIC8vIHVuaWZpZWQgLl9pbnZva2UgaGVscGVyIG1ldGhvZC4KICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApOwoKICBHcFt0b1N0cmluZ1RhZ1N5bWJvbF0gPSAiR2VuZXJhdG9yIjsKCiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGUKICAvLyBAQGl0ZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiBpdC4gU29tZSBicm93c2VycycgaW1wbGVtZW50YXRpb25zIG9mIHRoZQogIC8vIGl0ZXJhdG9yIHByb3RvdHlwZSBjaGFpbiBpbmNvcnJlY3RseSBpbXBsZW1lbnQgdGhpcywgY2F1c2luZyB0aGUgR2VuZXJhdG9yCiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uCiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWdlbmVyYXRvci9pc3N1ZXMvMjc0IGZvciBtb3JlIGRldGFpbHMuCiAgR3BbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdGhpczsKICB9OwoKICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkgewogICAgcmV0dXJuICJbb2JqZWN0IEdlbmVyYXRvcl0iOwogIH07CgogIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7CiAgICB2YXIgZW50cnkgPSB7IHRyeUxvYzogbG9jc1swXSB9OwoKICAgIGlmICgxIGluIGxvY3MpIHsKICAgICAgZW50cnkuY2F0Y2hMb2MgPSBsb2NzWzFdOwogICAgfQoKICAgIGlmICgyIGluIGxvY3MpIHsKICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07CiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTsKICAgIH0KCiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7CiAgfQoKICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7CiAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbiB8fCB7fTsKICAgIHJlY29yZC50eXBlID0gIm5vcm1hbCI7CiAgICBkZWxldGUgcmVjb3JkLmFyZzsKICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7CiAgfQoKICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7CiAgICAvLyBUaGUgcm9vdCBlbnRyeSBvYmplY3QgKGVmZmVjdGl2ZWx5IGEgdHJ5IHN0YXRlbWVudCB3aXRob3V0IGEgY2F0Y2gKICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9yZSB2YWx1ZXMgdGhyb3duIGZyb20KICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC4KICAgIHRoaXMudHJ5RW50cmllcyA9IFt7IHRyeUxvYzogInJvb3QiIH1dOwogICAgdHJ5TG9jc0xpc3QuZm9yRWFjaChwdXNoVHJ5RW50cnksIHRoaXMpOwogICAgdGhpcy5yZXNldCh0cnVlKTsKICB9CgogIHJ1bnRpbWUua2V5cyA9IGZ1bmN0aW9uKG9iamVjdCkgewogICAgdmFyIGtleXMgPSBbXTsKICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHsKICAgICAga2V5cy5wdXNoKGtleSk7CiAgICB9CiAgICBrZXlzLnJldmVyc2UoKTsKCiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcAogICAgLy8gdGhpbmdzIHNpbXBsZSBhbmQgcmV0dXJuIHRoZSBuZXh0IGZ1bmN0aW9uIGl0c2VsZi4KICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkgewogICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHsKICAgICAgICB2YXIga2V5ID0ga2V5cy5wb3AoKTsKICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkgewogICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTsKICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlOwogICAgICAgICAgcmV0dXJuIG5leHQ7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWUKICAgICAgLy8gYW5kIC5kb25lIHByb3BlcnRpZXMgb2ZmIHRoZSBuZXh0IGZ1bmN0aW9uIG9iamVjdCBpdHNlbGYuIFRoaXMKICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uCiAgICAgIG5leHQuZG9uZSA9IHRydWU7CiAgICAgIHJldHVybiBuZXh0OwogICAgfTsKICB9OwoKICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHsKICAgIGlmIChpdGVyYWJsZSkgewogICAgICB2YXIgaXRlcmF0b3JNZXRob2QgPSBpdGVyYWJsZVtpdGVyYXRvclN5bWJvbF07CiAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkgewogICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTsKICAgICAgfQoKICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlOwogICAgICB9CgogICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHsKICAgICAgICB2YXIgaSA9IC0xLCBuZXh0ID0gZnVuY3Rpb24gbmV4dCgpIHsKICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHsKICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkgewogICAgICAgICAgICAgIG5leHQudmFsdWUgPSBpdGVyYWJsZVtpXTsKICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTsKICAgICAgICAgICAgICByZXR1cm4gbmV4dDsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIG5leHQudmFsdWUgPSB1bmRlZmluZWQ7CiAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlOwoKICAgICAgICAgIHJldHVybiBuZXh0OwogICAgICAgIH07CgogICAgICAgIHJldHVybiBuZXh0Lm5leHQgPSBuZXh0OwogICAgICB9CiAgICB9CgogICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLgogICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9OwogIH0KICBydW50aW1lLnZhbHVlcyA9IHZhbHVlczsKCiAgZnVuY3Rpb24gZG9uZVJlc3VsdCgpIHsKICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTsKICB9CgogIENvbnRleHQucHJvdG90eXBlID0gewogICAgY29uc3RydWN0b3I6IENvbnRleHQsCgogICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHsKICAgICAgdGhpcy5wcmV2ID0gMDsKICAgICAgdGhpcy5uZXh0ID0gMDsKICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3MKICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi4KICAgICAgdGhpcy5zZW50ID0gdGhpcy5fc2VudCA9IHVuZGVmaW5lZDsKICAgICAgdGhpcy5kb25lID0gZmFsc2U7CiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsOwoKICAgICAgdGhpcy5tZXRob2QgPSAibmV4dCI7CiAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkOwoKICAgICAgdGhpcy50cnlFbnRyaWVzLmZvckVhY2gocmVzZXRUcnlFbnRyeSk7CgogICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHsKICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRoaXMpIHsKICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6CiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09ICJ0IiAmJgogICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmCiAgICAgICAgICAgICAgIWlzTmFOKCtuYW1lLnNsaWNlKDEpKSkgewogICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICBzdG9wOiBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5kb25lID0gdHJ1ZTsKCiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07CiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247CiAgICAgIGlmIChyb290UmVjb3JkLnR5cGUgPT09ICJ0aHJvdyIpIHsKICAgICAgICB0aHJvdyByb290UmVjb3JkLmFyZzsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMucnZhbDsKICAgIH0sCgogICAgZGlzcGF0Y2hFeGNlcHRpb246IGZ1bmN0aW9uKGV4Y2VwdGlvbikgewogICAgICBpZiAodGhpcy5kb25lKSB7CiAgICAgICAgdGhyb3cgZXhjZXB0aW9uOwogICAgICB9CgogICAgICB2YXIgY29udGV4dCA9IHRoaXM7CiAgICAgIGZ1bmN0aW9uIGhhbmRsZShsb2MsIGNhdWdodCkgewogICAgICAgIHJlY29yZC50eXBlID0gInRocm93IjsKICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uOwogICAgICAgIGNvbnRleHQubmV4dCA9IGxvYzsKCiAgICAgICAgaWYgKGNhdWdodCkgewogICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jaywKICAgICAgICAgIC8vIHRoZW4gbGV0IHRoYXQgY2F0Y2ggYmxvY2sgaGFuZGxlIHRoZSBleGNlcHRpb24gbm9ybWFsbHkuCiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9ICJuZXh0IjsKICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICEhIGNhdWdodDsKICAgICAgfQoKICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTsKICAgICAgICB2YXIgcmVjb3JkID0gZW50cnkuY29tcGxldGlvbjsKCiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gInJvb3QiKSB7CiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZQogICAgICAgICAgLy8gaXQsIHNvIHNldCB0aGUgY29tcGxldGlvbiB2YWx1ZSBvZiB0aGUgZW50aXJlIGZ1bmN0aW9uIHRvCiAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLgogICAgICAgICAgcmV0dXJuIGhhbmRsZSgiZW5kIik7CiAgICAgICAgfQoKICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikgewogICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksICJjYXRjaExvYyIpOwogICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgImZpbmFsbHlMb2MiKTsKCiAgICAgICAgICBpZiAoaGFzQ2F0Y2ggJiYgaGFzRmluYWxseSkgewogICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHsKICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTsKICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTsKICAgICAgICAgICAgfQoKICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHsKICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7CiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICB9IGVsc2UgaWYgKGhhc0ZpbmFsbHkpIHsKICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHsKICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpOwogICAgICAgICAgICB9CgogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseSIpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykgewogICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldOwogICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmCiAgICAgICAgICAgIGhhc093bi5jYWxsKGVudHJ5LCAiZmluYWxseUxvYyIpICYmCiAgICAgICAgICAgIHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHsKICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGZpbmFsbHlFbnRyeSAmJgogICAgICAgICAgKHR5cGUgPT09ICJicmVhayIgfHwKICAgICAgICAgICB0eXBlID09PSAiY29udGludWUiKSAmJgogICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiYKICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykgewogICAgICAgIC8vIElnbm9yZSB0aGUgZmluYWxseSBlbnRyeSBpZiBjb250cm9sIGlzIG5vdCBqdW1waW5nIHRvIGEKICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suCiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDsKICAgICAgfQoKICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307CiAgICAgIHJlY29yZC50eXBlID0gdHlwZTsKICAgICAgcmVjb3JkLmFyZyA9IGFyZzsKCiAgICAgIGlmIChmaW5hbGx5RW50cnkpIHsKICAgICAgICB0aGlzLm1ldGhvZCA9ICJuZXh0IjsKICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYzsKICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDsKICAgICAgfQoKICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTsKICAgIH0sCgogICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHsKICAgICAgaWYgKHJlY29yZC50eXBlID09PSAidGhyb3ciKSB7CiAgICAgICAgdGhyb3cgcmVjb3JkLmFyZzsKICAgICAgfQoKICAgICAgaWYgKHJlY29yZC50eXBlID09PSAiYnJlYWsiIHx8CiAgICAgICAgICByZWNvcmQudHlwZSA9PT0gImNvbnRpbnVlIikgewogICAgICAgIHRoaXMubmV4dCA9IHJlY29yZC5hcmc7CiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09ICJyZXR1cm4iKSB7CiAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnOwogICAgICAgIHRoaXMubWV0aG9kID0gInJldHVybiI7CiAgICAgICAgdGhpcy5uZXh0ID0gImVuZCI7CiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09ICJub3JtYWwiICYmIGFmdGVyTG9jKSB7CiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7CiAgICAgIH0KCiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsOwogICAgfSwKCiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHsKICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTsKICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykgewogICAgICAgICAgdGhpcy5jb21wbGV0ZShlbnRyeS5jb21wbGV0aW9uLCBlbnRyeS5hZnRlckxvYyk7CiAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTsKICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsOwogICAgICAgIH0KICAgICAgfQogICAgfSwKCiAgICAiY2F0Y2giOiBmdW5jdGlvbih0cnlMb2MpIHsKICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewogICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTsKICAgICAgICBpZiAoZW50cnkudHJ5TG9jID09PSB0cnlMb2MpIHsKICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uOwogICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSAidGhyb3ciKSB7CiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnOwogICAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTsKICAgICAgICAgIH0KICAgICAgICAgIHJldHVybiB0aHJvd247CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyBUaGUgY29udGV4dC5jYXRjaCBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCB3aXRoIGEgbG9jYXRpb24KICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLgogICAgICB0aHJvdyBuZXcgRXJyb3IoImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdCIpOwogICAgfSwKCiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbihpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykgewogICAgICB0aGlzLmRlbGVnYXRlID0gewogICAgICAgIGl0ZXJhdG9yOiB2YWx1ZXMoaXRlcmFibGUpLAogICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsCiAgICAgICAgbmV4dExvYzogbmV4dExvYwogICAgICB9OwoKICAgICAgaWYgKHRoaXMubWV0aG9kID09PSAibmV4dCIpIHsKICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndAogICAgICAgIC8vIGFjY2lkZW50YWxseSBwYXNzIGl0IG9uIHRvIHRoZSBkZWxlZ2F0ZS4KICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDsKICAgICAgfQoKICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7CiAgICB9CiAgfTsKfSkoCiAgLy8gSW4gc2xvcHB5IG1vZGUsIHVuYm91bmQgYHRoaXNgIHJlZmVycyB0byB0aGUgZ2xvYmFsIG9iamVjdCwgZmFsbGJhY2sgdG8KICAvLyBGdW5jdGlvbiBjb25zdHJ1Y3RvciBpZiB3ZSdyZSBpbiBnbG9iYWwgc3RyaWN0IG1vZGUuIFRoYXQgaXMgc2FkbHkgYSBmb3JtCiAgLy8gb2YgaW5kaXJlY3QgZXZhbCB3aGljaCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeS4KICAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIH0pKCkgfHwgRnVuY3Rpb24oInJldHVybiB0aGlzIikoKQopOwoKCi8qKiovIH0pLAovKiAyODAgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKbW9kdWxlLmV4cG9ydHMgPSB7ICJkZWZhdWx0IjogX193ZWJwYWNrX3JlcXVpcmVfXygyODEpLCBfX2VzTW9kdWxlOiB0cnVlIH07CgovKioqLyB9KSwKLyogMjgxICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCl9fd2VicGFja19yZXF1aXJlX18oMjgyKTsKbW9kdWxlLmV4cG9ydHMgPSBNYXRoLnBvdygyLCAtNTIpOwoKCi8qKiovIH0pLAovKiAyODIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gMjAuMS4yLjEgTnVtYmVyLkVQU0lMT04KdmFyICRleHBvcnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpOwoKJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7IEVQU0lMT046IE1hdGgucG93KDIsIC01MikgfSk7CgoKLyoqKi8gfSksCi8qIDI4MyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyKSB7dmFyIGNsb25lID0gKGZ1bmN0aW9uKCkgewondXNlIHN0cmljdCc7CgovKioKICogQ2xvbmVzIChjb3BpZXMpIGFuIE9iamVjdCB1c2luZyBkZWVwIGNvcHlpbmcuCiAqCiAqIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgY2lyY3VsYXIgcmVmZXJlbmNlcyBieSBkZWZhdWx0LCBidXQgaWYgeW91IGFyZSBjZXJ0YWluCiAqIHRoZXJlIGFyZSBubyBjaXJjdWxhciByZWZlcmVuY2VzIGluIHlvdXIgb2JqZWN0LCB5b3UgY2FuIHNhdmUgc29tZSBDUFUgdGltZQogKiBieSBjYWxsaW5nIGNsb25lKG9iaiwgZmFsc2UpLgogKgogKiBDYXV0aW9uOiBpZiBgY2lyY3VsYXJgIGlzIGZhbHNlIGFuZCBgcGFyZW50YCBjb250YWlucyBjaXJjdWxhciByZWZlcmVuY2VzLAogKiB5b3VyIHByb2dyYW0gbWF5IGVudGVyIGFuIGluZmluaXRlIGxvb3AgYW5kIGNyYXNoLgogKgogKiBAcGFyYW0gYHBhcmVudGAgLSB0aGUgb2JqZWN0IHRvIGJlIGNsb25lZAogKiBAcGFyYW0gYGNpcmN1bGFyYCAtIHNldCB0byB0cnVlIGlmIHRoZSBvYmplY3QgdG8gYmUgY2xvbmVkIG1heSBjb250YWluCiAqICAgIGNpcmN1bGFyIHJlZmVyZW5jZXMuIChvcHRpb25hbCAtIHRydWUgYnkgZGVmYXVsdCkKICogQHBhcmFtIGBkZXB0aGAgLSBzZXQgdG8gYSBudW1iZXIgaWYgdGhlIG9iamVjdCBpcyBvbmx5IHRvIGJlIGNsb25lZCB0bwogKiAgICBhIHBhcnRpY3VsYXIgZGVwdGguIChvcHRpb25hbCAtIGRlZmF1bHRzIHRvIEluZmluaXR5KQogKiBAcGFyYW0gYHByb3RvdHlwZWAgLSBzZXRzIHRoZSBwcm90b3R5cGUgdG8gYmUgdXNlZCB3aGVuIGNsb25pbmcgYW4gb2JqZWN0LgogKiAgICAob3B0aW9uYWwgLSBkZWZhdWx0cyB0byBwYXJlbnQgcHJvdG90eXBlKS4KKi8KZnVuY3Rpb24gY2xvbmUocGFyZW50LCBjaXJjdWxhciwgZGVwdGgsIHByb3RvdHlwZSkgewogIHZhciBmaWx0ZXI7CiAgaWYgKHR5cGVvZiBjaXJjdWxhciA9PT0gJ29iamVjdCcpIHsKICAgIGRlcHRoID0gY2lyY3VsYXIuZGVwdGg7CiAgICBwcm90b3R5cGUgPSBjaXJjdWxhci5wcm90b3R5cGU7CiAgICBmaWx0ZXIgPSBjaXJjdWxhci5maWx0ZXI7CiAgICBjaXJjdWxhciA9IGNpcmN1bGFyLmNpcmN1bGFyCiAgfQogIC8vIG1haW50YWluIHR3byBhcnJheXMgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMsIHdoZXJlIGNvcnJlc3BvbmRpbmcgcGFyZW50cwogIC8vIGFuZCBjaGlsZHJlbiBoYXZlIHRoZSBzYW1lIGluZGV4CiAgdmFyIGFsbFBhcmVudHMgPSBbXTsKICB2YXIgYWxsQ2hpbGRyZW4gPSBbXTsKCiAgdmFyIHVzZUJ1ZmZlciA9IHR5cGVvZiBCdWZmZXIgIT0gJ3VuZGVmaW5lZCc7CgogIGlmICh0eXBlb2YgY2lyY3VsYXIgPT0gJ3VuZGVmaW5lZCcpCiAgICBjaXJjdWxhciA9IHRydWU7CgogIGlmICh0eXBlb2YgZGVwdGggPT0gJ3VuZGVmaW5lZCcpCiAgICBkZXB0aCA9IEluZmluaXR5OwoKICAvLyByZWN1cnNlIHRoaXMgZnVuY3Rpb24gc28gd2UgZG9uJ3QgcmVzZXQgYWxsUGFyZW50cyBhbmQgYWxsQ2hpbGRyZW4KICBmdW5jdGlvbiBfY2xvbmUocGFyZW50LCBkZXB0aCkgewogICAgLy8gY2xvbmluZyBudWxsIGFsd2F5cyByZXR1cm5zIG51bGwKICAgIGlmIChwYXJlbnQgPT09IG51bGwpCiAgICAgIHJldHVybiBudWxsOwoKICAgIGlmIChkZXB0aCA9PSAwKQogICAgICByZXR1cm4gcGFyZW50OwoKICAgIHZhciBjaGlsZDsKICAgIHZhciBwcm90bzsKICAgIGlmICh0eXBlb2YgcGFyZW50ICE9ICdvYmplY3QnKSB7CiAgICAgIHJldHVybiBwYXJlbnQ7CiAgICB9CgogICAgaWYgKGNsb25lLl9faXNBcnJheShwYXJlbnQpKSB7CiAgICAgIGNoaWxkID0gW107CiAgICB9IGVsc2UgaWYgKGNsb25lLl9faXNSZWdFeHAocGFyZW50KSkgewogICAgICBjaGlsZCA9IG5ldyBSZWdFeHAocGFyZW50LnNvdXJjZSwgX19nZXRSZWdFeHBGbGFncyhwYXJlbnQpKTsKICAgICAgaWYgKHBhcmVudC5sYXN0SW5kZXgpIGNoaWxkLmxhc3RJbmRleCA9IHBhcmVudC5sYXN0SW5kZXg7CiAgICB9IGVsc2UgaWYgKGNsb25lLl9faXNEYXRlKHBhcmVudCkpIHsKICAgICAgY2hpbGQgPSBuZXcgRGF0ZShwYXJlbnQuZ2V0VGltZSgpKTsKICAgIH0gZWxzZSBpZiAodXNlQnVmZmVyICYmIEJ1ZmZlci5pc0J1ZmZlcihwYXJlbnQpKSB7CiAgICAgIGNoaWxkID0gbmV3IEJ1ZmZlcihwYXJlbnQubGVuZ3RoKTsKICAgICAgcGFyZW50LmNvcHkoY2hpbGQpOwogICAgICByZXR1cm4gY2hpbGQ7CiAgICB9IGVsc2UgewogICAgICBpZiAodHlwZW9mIHByb3RvdHlwZSA9PSAndW5kZWZpbmVkJykgewogICAgICAgIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHBhcmVudCk7CiAgICAgICAgY2hpbGQgPSBPYmplY3QuY3JlYXRlKHByb3RvKTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICBjaGlsZCA9IE9iamVjdC5jcmVhdGUocHJvdG90eXBlKTsKICAgICAgICBwcm90byA9IHByb3RvdHlwZTsKICAgICAgfQogICAgfQoKICAgIGlmIChjaXJjdWxhcikgewogICAgICB2YXIgaW5kZXggPSBhbGxQYXJlbnRzLmluZGV4T2YocGFyZW50KTsKCiAgICAgIGlmIChpbmRleCAhPSAtMSkgewogICAgICAgIHJldHVybiBhbGxDaGlsZHJlbltpbmRleF07CiAgICAgIH0KICAgICAgYWxsUGFyZW50cy5wdXNoKHBhcmVudCk7CiAgICAgIGFsbENoaWxkcmVuLnB1c2goY2hpbGQpOwogICAgfQoKICAgIGZvciAodmFyIGkgaW4gcGFyZW50KSB7CiAgICAgIHZhciBhdHRyczsKICAgICAgaWYgKHByb3RvKSB7CiAgICAgICAgYXR0cnMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBpKTsKICAgICAgfQoKICAgICAgaWYgKGF0dHJzICYmIGF0dHJzLnNldCA9PSBudWxsKSB7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgY2hpbGRbaV0gPSBfY2xvbmUocGFyZW50W2ldLCBkZXB0aCAtIDEpOwogICAgfQoKICAgIHJldHVybiBjaGlsZDsKICB9CgogIHJldHVybiBfY2xvbmUocGFyZW50LCBkZXB0aCk7Cn0KCi8qKgogKiBTaW1wbGUgZmxhdCBjbG9uZSB1c2luZyBwcm90b3R5cGUsIGFjY2VwdHMgb25seSBvYmplY3RzLCB1c2VmdWxsIGZvciBwcm9wZXJ0eQogKiBvdmVycmlkZSBvbiBGTEFUIGNvbmZpZ3VyYXRpb24gb2JqZWN0IChubyBuZXN0ZWQgcHJvcHMpLgogKgogKiBVU0UgV0lUSCBDQVVUSU9OISBUaGlzIG1heSBub3QgYmVoYXZlIGFzIHlvdSB3aXNoIGlmIHlvdSBkbyBub3Qga25vdyBob3cgdGhpcwogKiB3b3Jrcy4KICovCmNsb25lLmNsb25lUHJvdG90eXBlID0gZnVuY3Rpb24gY2xvbmVQcm90b3R5cGUocGFyZW50KSB7CiAgaWYgKHBhcmVudCA9PT0gbnVsbCkKICAgIHJldHVybiBudWxsOwoKICB2YXIgYyA9IGZ1bmN0aW9uICgpIHt9OwogIGMucHJvdG90eXBlID0gcGFyZW50OwogIHJldHVybiBuZXcgYygpOwp9OwoKLy8gcHJpdmF0ZSB1dGlsaXR5IGZ1bmN0aW9ucwoKZnVuY3Rpb24gX19vYmpUb1N0cihvKSB7CiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTsKfTsKY2xvbmUuX19vYmpUb1N0ciA9IF9fb2JqVG9TdHI7CgpmdW5jdGlvbiBfX2lzRGF0ZShvKSB7CiAgcmV0dXJuIHR5cGVvZiBvID09PSAnb2JqZWN0JyAmJiBfX29ialRvU3RyKG8pID09PSAnW29iamVjdCBEYXRlXSc7Cn07CmNsb25lLl9faXNEYXRlID0gX19pc0RhdGU7CgpmdW5jdGlvbiBfX2lzQXJyYXkobykgewogIHJldHVybiB0eXBlb2YgbyA9PT0gJ29iamVjdCcgJiYgX19vYmpUb1N0cihvKSA9PT0gJ1tvYmplY3QgQXJyYXldJzsKfTsKY2xvbmUuX19pc0FycmF5ID0gX19pc0FycmF5OwoKZnVuY3Rpb24gX19pc1JlZ0V4cChvKSB7CiAgcmV0dXJuIHR5cGVvZiBvID09PSAnb2JqZWN0JyAmJiBfX29ialRvU3RyKG8pID09PSAnW29iamVjdCBSZWdFeHBdJzsKfTsKY2xvbmUuX19pc1JlZ0V4cCA9IF9faXNSZWdFeHA7CgpmdW5jdGlvbiBfX2dldFJlZ0V4cEZsYWdzKHJlKSB7CiAgdmFyIGZsYWdzID0gJyc7CiAgaWYgKHJlLmdsb2JhbCkgZmxhZ3MgKz0gJ2cnOwogIGlmIChyZS5pZ25vcmVDYXNlKSBmbGFncyArPSAnaSc7CiAgaWYgKHJlLm11bHRpbGluZSkgZmxhZ3MgKz0gJ20nOwogIHJldHVybiBmbGFnczsKfTsKY2xvbmUuX19nZXRSZWdFeHBGbGFncyA9IF9fZ2V0UmVnRXhwRmxhZ3M7CgpyZXR1cm4gY2xvbmU7Cn0pKCk7CgppZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICBtb2R1bGUuZXhwb3J0cyA9IGNsb25lOwp9CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDI4NCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTE3KS5Ccm90bGlEZWNvbXByZXNzQnVmZmVyOwoKCi8qKiovIH0pLAovKiAyODUgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLyogQ29weXJpZ2h0IDIwMTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgQml0IHJlYWRpbmcgaGVscGVycwoqLwoKdmFyIEJST1RMSV9SRUFEX1NJWkUgPSA0MDk2Owp2YXIgQlJPVExJX0lCVUZfU0laRSA9ICAoMiAqIEJST1RMSV9SRUFEX1NJWkUgKyAzMik7CnZhciBCUk9UTElfSUJVRl9NQVNLID0gICgyICogQlJPVExJX1JFQURfU0laRSAtIDEpOwoKdmFyIGtCaXRNYXNrID0gbmV3IFVpbnQzMkFycmF5KFsKICAwLCAxLCAzLCA3LCAxNSwgMzEsIDYzLCAxMjcsIDI1NSwgNTExLCAxMDIzLCAyMDQ3LCA0MDk1LCA4MTkxLCAxNjM4MywgMzI3NjcsCiAgNjU1MzUsIDEzMTA3MSwgMjYyMTQzLCA1MjQyODcsIDEwNDg1NzUsIDIwOTcxNTEsIDQxOTQzMDMsIDgzODg2MDcsIDE2Nzc3MjE1Cl0pOwoKLyogSW5wdXQgYnl0ZSBidWZmZXIsIGNvbnNpc3Qgb2YgYSByaW5nYnVmZmVyIGFuZCBhICJzbGFjayIgcmVnaW9uIHdoZXJlICovCi8qIGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSByaW5nYnVmZmVyIGFyZSBjb3BpZWQuICovCmZ1bmN0aW9uIEJyb3RsaUJpdFJlYWRlcihpbnB1dCkgewogIHRoaXMuYnVmXyA9IG5ldyBVaW50OEFycmF5KEJST1RMSV9JQlVGX1NJWkUpOwogIHRoaXMuaW5wdXRfID0gaW5wdXQ7ICAgIC8qIGlucHV0IGNhbGxiYWNrICovCiAgCiAgdGhpcy5yZXNldCgpOwp9CgpCcm90bGlCaXRSZWFkZXIuUkVBRF9TSVpFID0gQlJPVExJX1JFQURfU0laRTsKQnJvdGxpQml0UmVhZGVyLklCVUZfTUFTSyA9IEJST1RMSV9JQlVGX01BU0s7CgpCcm90bGlCaXRSZWFkZXIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24oKSB7CiAgdGhpcy5idWZfcHRyXyA9IDA7ICAgICAgLyogbmV4dCBpbnB1dCB3aWxsIHdyaXRlIGhlcmUgKi8KICB0aGlzLnZhbF8gPSAwOyAgICAgICAgICAvKiBwcmUtZmV0Y2hlZCBiaXRzICovCiAgdGhpcy5wb3NfID0gMDsgICAgICAgICAgLyogYnl0ZSBwb3NpdGlvbiBpbiBzdHJlYW0gKi8KICB0aGlzLmJpdF9wb3NfID0gMDsgICAgICAvKiBjdXJyZW50IGJpdC1yZWFkaW5nIHBvc2l0aW9uIGluIHZhbF8gKi8KICB0aGlzLmJpdF9lbmRfcG9zXyA9IDA7ICAvKiBiaXQtcmVhZGluZyBlbmQgcG9zaXRpb24gZnJvbSBMU0Igb2YgdmFsXyAqLwogIHRoaXMuZW9zXyA9IDA7ICAgICAgICAgIC8qIGlucHV0IHN0cmVhbSBpcyBmaW5pc2hlZCAqLwogIAogIHRoaXMucmVhZE1vcmVJbnB1dCgpOwogIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7CiAgICB0aGlzLnZhbF8gfD0gdGhpcy5idWZfW3RoaXMucG9zX10gPDwgKDggKiBpKTsKICAgICsrdGhpcy5wb3NfOwogIH0KICAKICByZXR1cm4gdGhpcy5iaXRfZW5kX3Bvc18gPiAwOwp9OwoKLyogRmlsbHMgdXAgdGhlIGlucHV0IHJpbmdidWZmZXIgYnkgY2FsbGluZyB0aGUgaW5wdXQgY2FsbGJhY2suCgogICBEb2VzIG5vdGhpbmcgaWYgdGhlcmUgYXJlIGF0IGxlYXN0IDMyIGJ5dGVzIHByZXNlbnQgYWZ0ZXIgY3VycmVudCBwb3NpdGlvbi4KCiAgIFJldHVybnMgMCBpZiBlaXRoZXI6CiAgICAtIHRoZSBpbnB1dCBjYWxsYmFjayByZXR1cm5lZCBhbiBlcnJvciwgb3IKICAgIC0gdGhlcmUgaXMgbm8gbW9yZSBpbnB1dCBhbmQgdGhlIHBvc2l0aW9uIGlzIHBhc3QgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLgoKICAgQWZ0ZXIgZW5jb3VudGVyaW5nIHRoZSBlbmQgb2YgdGhlIGlucHV0IHN0cmVhbSwgMzIgYWRkaXRpb25hbCB6ZXJvIGJ5dGVzIGFyZQogICBjb3BpZWQgdG8gdGhlIHJpbmdidWZmZXIsIHRoZXJlZm9yZSBpdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlcgogICBldmVyeSAzMiBieXRlcyBvZiBpbnB1dCBpcyByZWFkLgoqLwpCcm90bGlCaXRSZWFkZXIucHJvdG90eXBlLnJlYWRNb3JlSW5wdXQgPSBmdW5jdGlvbigpIHsKICBpZiAodGhpcy5iaXRfZW5kX3Bvc18gPiAyNTYpIHsKICAgIHJldHVybjsKICB9IGVsc2UgaWYgKHRoaXMuZW9zXykgewogICAgaWYgKHRoaXMuYml0X3Bvc18gPiB0aGlzLmJpdF9lbmRfcG9zXykKICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dCAnICsgdGhpcy5iaXRfcG9zXyArICcgJyArIHRoaXMuYml0X2VuZF9wb3NfKTsKICB9IGVsc2UgewogICAgdmFyIGRzdCA9IHRoaXMuYnVmX3B0cl87CiAgICB2YXIgYnl0ZXNfcmVhZCA9IHRoaXMuaW5wdXRfLnJlYWQodGhpcy5idWZfLCBkc3QsIEJST1RMSV9SRUFEX1NJWkUpOwogICAgaWYgKGJ5dGVzX3JlYWQgPCAwKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBlbmQgb2YgaW5wdXQnKTsKICAgIH0KICAgIAogICAgaWYgKGJ5dGVzX3JlYWQgPCBCUk9UTElfUkVBRF9TSVpFKSB7CiAgICAgIHRoaXMuZW9zXyA9IDE7CiAgICAgIC8qIFN0b3JlIDMyIGJ5dGVzIG9mIHplcm8gYWZ0ZXIgdGhlIHN0cmVhbSBlbmQuICovCiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgMzI7IHArKykKICAgICAgICB0aGlzLmJ1Zl9bZHN0ICsgYnl0ZXNfcmVhZCArIHBdID0gMDsKICAgIH0KICAgIAogICAgaWYgKGRzdCA9PT0gMCkgewogICAgICAvKiBDb3B5IHRoZSBoZWFkIG9mIHRoZSByaW5nYnVmZmVyIHRvIHRoZSBzbGFjayByZWdpb24uICovCiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgMzI7IHArKykKICAgICAgICB0aGlzLmJ1Zl9bKEJST1RMSV9SRUFEX1NJWkUgPDwgMSkgKyBwXSA9IHRoaXMuYnVmX1twXTsKCiAgICAgIHRoaXMuYnVmX3B0cl8gPSBCUk9UTElfUkVBRF9TSVpFOwogICAgfSBlbHNlIHsKICAgICAgdGhpcy5idWZfcHRyXyA9IDA7CiAgICB9CiAgICAKICAgIHRoaXMuYml0X2VuZF9wb3NfICs9IGJ5dGVzX3JlYWQgPDwgMzsKICB9Cn07CgovKiBHdWFyYW50ZWVzIHRoYXQgdGhlcmUgYXJlIGF0IGxlYXN0IDI0IGJpdHMgaW4gdGhlIGJ1ZmZlci4gKi8KQnJvdGxpQml0UmVhZGVyLnByb3RvdHlwZS5maWxsQml0V2luZG93ID0gZnVuY3Rpb24oKSB7ICAgIAogIHdoaWxlICh0aGlzLmJpdF9wb3NfID49IDgpIHsKICAgIHRoaXMudmFsXyA+Pj49IDg7CiAgICB0aGlzLnZhbF8gfD0gdGhpcy5idWZfW3RoaXMucG9zXyAmIEJST1RMSV9JQlVGX01BU0tdIDw8IDI0OwogICAgKyt0aGlzLnBvc187CiAgICB0aGlzLmJpdF9wb3NfID0gdGhpcy5iaXRfcG9zXyAtIDggPj4+IDA7CiAgICB0aGlzLmJpdF9lbmRfcG9zXyA9IHRoaXMuYml0X2VuZF9wb3NfIC0gOCA+Pj4gMDsKICB9Cn07CgovKiBSZWFkcyB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBiaXRzIGZyb20gUmVhZCBCdWZmZXIuICovCkJyb3RsaUJpdFJlYWRlci5wcm90b3R5cGUucmVhZEJpdHMgPSBmdW5jdGlvbihuX2JpdHMpIHsKICBpZiAoMzIgLSB0aGlzLmJpdF9wb3NfIDwgbl9iaXRzKSB7CiAgICB0aGlzLmZpbGxCaXRXaW5kb3coKTsKICB9CiAgCiAgdmFyIHZhbCA9ICgodGhpcy52YWxfID4+PiB0aGlzLmJpdF9wb3NfKSAmIGtCaXRNYXNrW25fYml0c10pOwogIHRoaXMuYml0X3Bvc18gKz0gbl9iaXRzOwogIHJldHVybiB2YWw7Cn07Cgptb2R1bGUuZXhwb3J0cyA9IEJyb3RsaUJpdFJlYWRlcjsKCgovKioqLyB9KSwKLyogMjg2ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCnZhciBiYXNlNjQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4Nyk7CnZhciBmcyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CgovKioKICogVGhlIG5vcm1hbCBkaWN0aW9uYXJ5LWRhdGEuanMgaXMgcXVpdGUgbGFyZ2UsIHdoaWNoIG1ha2VzIGl0IAogKiB1bnN1aXRhYmxlIGZvciBicm93c2VyIHVzYWdlLiBJbiBvcmRlciB0byBtYWtlIGl0IHNtYWxsZXIsIAogKiB3ZSByZWFkIGRpY3Rpb25hcnkuYmluLCB3aGljaCBpcyBhIGNvbXByZXNzZWQgdmVyc2lvbiBvZgogKiB0aGUgZGljdGlvbmFyeSwgYW5kIG9uIGluaXRpYWwgbG9hZCwgQnJvdGxpIGRlY29tcHJlc3NlcyAKICogaXQncyBvd24gZGljdGlvbmFyeS4g8J+YnAogKi8KZXhwb3J0cy5pbml0ID0gZnVuY3Rpb24oKSB7CiAgdmFyIEJyb3RsaURlY29tcHJlc3NCdWZmZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNykuQnJvdGxpRGVjb21wcmVzc0J1ZmZlcjsKICB2YXIgY29tcHJlc3NlZCA9IGJhc2U2NC50b0J5dGVBcnJheShfX3dlYnBhY2tfcmVxdWlyZV9fKDI4OCkpOwogIHJldHVybiBCcm90bGlEZWNvbXByZXNzQnVmZmVyKGNvbXByZXNzZWQpOwp9OwoKCi8qKiovIH0pLAovKiAyODcgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwoKCmV4cG9ydHMuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGgKZXhwb3J0cy50b0J5dGVBcnJheSA9IHRvQnl0ZUFycmF5CmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXkKCnZhciBsb29rdXAgPSBbXQp2YXIgcmV2TG9va3VwID0gW10KdmFyIEFyciA9IHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyA/IFVpbnQ4QXJyYXkgOiBBcnJheQoKdmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLycKZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNvZGUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKICBsb29rdXBbaV0gPSBjb2RlW2ldCiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpCn0KCi8vIFN1cHBvcnQgZGVjb2RpbmcgVVJMLXNhZmUgYmFzZTY0IHN0cmluZ3MsIGFzIE5vZGUuanMgZG9lcy4KLy8gU2VlOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNlNjQjVVJMX2FwcGxpY2F0aW9ucwpyZXZMb29rdXBbJy0nLmNoYXJDb2RlQXQoMCldID0gNjIKcmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzCgpmdW5jdGlvbiBwbGFjZUhvbGRlcnNDb3VudCAoYjY0KSB7CiAgdmFyIGxlbiA9IGI2NC5sZW5ndGgKICBpZiAobGVuICUgNCA+IDApIHsKICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpCiAgfQoKICAvLyB0aGUgbnVtYmVyIG9mIGVxdWFsIHNpZ25zIChwbGFjZSBob2xkZXJzKQogIC8vIGlmIHRoZXJlIGFyZSB0d28gcGxhY2Vob2xkZXJzLCB0aGFuIHRoZSB0d28gY2hhcmFjdGVycyBiZWZvcmUgaXQKICAvLyByZXByZXNlbnQgb25lIGJ5dGUKICAvLyBpZiB0aGVyZSBpcyBvbmx5IG9uZSwgdGhlbiB0aGUgdGhyZWUgY2hhcmFjdGVycyBiZWZvcmUgaXQgcmVwcmVzZW50IDIgYnl0ZXMKICAvLyB0aGlzIGlzIGp1c3QgYSBjaGVhcCBoYWNrIHRvIG5vdCBkbyBpbmRleE9mIHR3aWNlCiAgcmV0dXJuIGI2NFtsZW4gLSAyXSA9PT0gJz0nID8gMiA6IGI2NFtsZW4gLSAxXSA9PT0gJz0nID8gMSA6IDAKfQoKZnVuY3Rpb24gYnl0ZUxlbmd0aCAoYjY0KSB7CiAgLy8gYmFzZTY0IGlzIDQvMyArIHVwIHRvIHR3byBjaGFyYWN0ZXJzIG9mIHRoZSBvcmlnaW5hbCBkYXRhCiAgcmV0dXJuIChiNjQubGVuZ3RoICogMyAvIDQpIC0gcGxhY2VIb2xkZXJzQ291bnQoYjY0KQp9CgpmdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7CiAgdmFyIGksIGwsIHRtcCwgcGxhY2VIb2xkZXJzLCBhcnIKICB2YXIgbGVuID0gYjY0Lmxlbmd0aAogIHBsYWNlSG9sZGVycyA9IHBsYWNlSG9sZGVyc0NvdW50KGI2NCkKCiAgYXJyID0gbmV3IEFycigobGVuICogMyAvIDQpIC0gcGxhY2VIb2xkZXJzKQoKICAvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzCiAgbCA9IHBsYWNlSG9sZGVycyA+IDAgPyBsZW4gLSA0IDogbGVuCgogIHZhciBMID0gMAoKICBmb3IgKGkgPSAwOyBpIDwgbDsgaSArPSA0KSB7CiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHwgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV0KICAgIGFycltMKytdID0gKHRtcCA+PiAxNikgJiAweEZGCiAgICBhcnJbTCsrXSA9ICh0bXAgPj4gOCkgJiAweEZGCiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkYKICB9CgogIGlmIChwbGFjZUhvbGRlcnMgPT09IDIpIHsKICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpCiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkYKICB9IGVsc2UgaWYgKHBsYWNlSG9sZGVycyA9PT0gMSkgewogICAgdG1wID0gKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMTApIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDQpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpCiAgICBhcnJbTCsrXSA9ICh0bXAgPj4gOCkgJiAweEZGCiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkYKICB9CgogIHJldHVybiBhcnIKfQoKZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHsKICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICsgbG9va3VwW251bSA+PiAxMiAmIDB4M0ZdICsgbG9va3VwW251bSA+PiA2ICYgMHgzRl0gKyBsb29rdXBbbnVtICYgMHgzRl0KfQoKZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7CiAgdmFyIHRtcAogIHZhciBvdXRwdXQgPSBbXQogIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7CiAgICB0bXAgPSAoKHVpbnQ4W2ldIDw8IDE2KSAmIDB4RkYwMDAwKSArICgodWludDhbaSArIDFdIDw8IDgpICYgMHhGRjAwKSArICh1aW50OFtpICsgMl0gJiAweEZGKQogICAgb3V0cHV0LnB1c2godHJpcGxldFRvQmFzZTY0KHRtcCkpCiAgfQogIHJldHVybiBvdXRwdXQuam9pbignJykKfQoKZnVuY3Rpb24gZnJvbUJ5dGVBcnJheSAodWludDgpIHsKICB2YXIgdG1wCiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aAogIHZhciBleHRyYUJ5dGVzID0gbGVuICUgMyAvLyBpZiB3ZSBoYXZlIDEgYnl0ZSBsZWZ0LCBwYWQgMiBieXRlcwogIHZhciBvdXRwdXQgPSAnJwogIHZhciBwYXJ0cyA9IFtdCiAgdmFyIG1heENodW5rTGVuZ3RoID0gMTYzODMgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiAzCgogIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXIKICBmb3IgKHZhciBpID0gMCwgbGVuMiA9IGxlbiAtIGV4dHJhQnl0ZXM7IGkgPCBsZW4yOyBpICs9IG1heENodW5rTGVuZ3RoKSB7CiAgICBwYXJ0cy5wdXNoKGVuY29kZUNodW5rKHVpbnQ4LCBpLCAoaSArIG1heENodW5rTGVuZ3RoKSA+IGxlbjIgPyBsZW4yIDogKGkgKyBtYXhDaHVua0xlbmd0aCkpKQogIH0KCiAgLy8gcGFkIHRoZSBlbmQgd2l0aCB6ZXJvcywgYnV0IG1ha2Ugc3VyZSB0byBub3QgZm9yZ2V0IHRoZSBleHRyYSBieXRlcwogIGlmIChleHRyYUJ5dGVzID09PSAxKSB7CiAgICB0bXAgPSB1aW50OFtsZW4gLSAxXQogICAgb3V0cHV0ICs9IGxvb2t1cFt0bXAgPj4gMl0KICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdCiAgICBvdXRwdXQgKz0gJz09JwogIH0gZWxzZSBpZiAoZXh0cmFCeXRlcyA9PT0gMikgewogICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgKHVpbnQ4W2xlbiAtIDFdKQogICAgb3V0cHV0ICs9IGxvb2t1cFt0bXAgPj4gMTBdCiAgICBvdXRwdXQgKz0gbG9va3VwWyh0bXAgPj4gNCkgJiAweDNGXQogICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl0KICAgIG91dHB1dCArPSAnPScKICB9CgogIHBhcnRzLnB1c2gob3V0cHV0KQoKICByZXR1cm4gcGFydHMuam9pbignJykKfQoKCi8qKiovIH0pLAovKiAyODggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKbW9kdWxlLmV4cG9ydHM9Ilc1L2ZjUUxuNWdLZjJYVWJBaVExWFVMWCtUWno2QURUb0RzZ3FrNnFWZmVDMGU0bTZPTzJ3Y1ExSjc2WkJWUlYxZlJrRXNkdS8vNjJ6UXNGRVpXU1RDbk1oY3NRS2xTMnFPaHVWWVlNR0NrVjBmWFdFb01GYkVTWHJLRVo5d2RVRXN5dzlnNGJKbEV0MVk2b1ZNeE1SVEVWYkNJd1p6Snpib0s1ajhtNFlIMDJxZ1hZaHYxVitQTTQzNXNMVnh5SEppaGFKUkVFaFpHcUwwM3R4R0ZRTG03NmNhR08vb3Z4S3Z6Q2J5LzN2TVR0WC80NTlmMGlnaTdXdXRuS2lNUTZ3T0RTb1JoLzhMeDFWM1E5OU12S3R3QjZiSGRFUllSWTBoU3RKb01qTmVUc05YN2JuK1k3ZTRFUTNiZjh4QmM3TDBCc3lmRlBLNDNkR1NYcEw2Y2xZQy9JMzI4aDU0L1ZZclE1aTA2NDhGZ2JHdGw4MzdzdkozNUwzTW90LytuUGxOcFdnS3gxZ0dYUVlxWDZuK2JiWjd3dXlDSEtjVW9rMTJYanF1YjdOWFpHenFCeDBTRCt1emlOZjg3dDd2ZTQyanhTS1FvVzNueXhWcldJR2xGU2hoQ0t4anBaWjVNZUduYTArbEJraytrYU44RjlxRkJBRmdFb2d5TUJkY1gvVDFXL1duTU9pLzd5Y1dVUWxvRUJLR2VDNDhNa2l3cUprSk8rMTJlUWlPRkhNbWNrNnEvSWpXVzNSWmxhbnkyM1RCbStjTnIvODQvb2k1R0dtR0JaV3JaNmorenlrVm96ejVmVC9RSC9EYTZXVGJaWVlQeW5WTk83a3h6dU5OMmt4S0tXY2hlNVd2ZWl0UEtBZWNCOFljQUh6Lyt6WExqY0x6a2REU2t0TklEd1pFOUo5WCt0dG80M29KeTY1d0FwTTNtRHpZdEN3WDlsTStONVZSM2tYWW8wWjN0MFR0WGZnQkZnN2dVOG9OMERnbDdmWmxVYmhObGwrMHV1b2hSVktqckVkOGVnclNuZHk1L1RnZDJncWpBNENBVnVDN0VTVW1MM0Rab0duZmhRVjh1d25waThFR3ZBVlZzb3dOUnhQdWRjazcrb3FBVURrd1pvcFdxRm5XMXJpc3MwdDF6NmlDSVNWS3JlWUdOdlFjWHYrMUw5K2piUDhjZC9kUFVpcUJzbzJxKzdaeUZCdkVOQ2trVnI0NGl5UGJ0T29Pb0NlY1dzaXVxTVNNTDVsdit2TjVNelVyK0RuaDczRzdRMVluUllKVllYSFJKYU5BT0J5aWFLNkN1c2dGZEJQRTQwcjBydnFYVjd0a3NLTzJEckhZWEJUdjhQNXlzcXhFeDhWRFhVRERxa1BINk5OT1YvYTJXSDh6bGtYUkVMU2E4UCtoZU55SkJCUDdQZ3NHMUV0V3ROZWY2L2krbGNheXpRd1FDc2R1aWRwYktmaFdVRGdBRW15aEd1L3pWVGFjSTZSUzB6VEFCck9ZdWVlbW5WYTE5dTlmVDIzTi9UYTZSdlRwb2Y1RFd5Z3FyZUNxckRBZ000TElEMSsxVC90YVU2eVRGVkxxWE92Ky9NdVFPRm5hRjh2TE1LRDd0S1dEb0JkQUxneEYzM3pRY2NDY2RIeDhmS0lWZFc2OU83cUh0WHBlR3I5amJicEZBK3FSTVdyNWhwMHM2N0ZQYzdIQWlMVjBnMC9wZVpsVzdoSlBZRWhaeWhwU3dhaG5mOTMvdFpnZnFaV1hGZG1kWEJ6cXhHSExyUUt4b0FZNmZSb0JoZ0NSUG1tR3VlWVo1SmV4VFZES1VJWHprRy9mcXAvMFUzaEFnUWRKOXp1bXV0SzZucVdiYXF2bTFwZ3UwM0lZUitHKzhzMGpEQkJ6OGNBcFpGU0JldVdhc3lxbzJPTURLQVpDb3pTK0dXU3ZML0hzRTlySHhvb2UxN1Uzcy9sVEUrVlpBazRqM2RwNnVJR2FDMEpNaXFSNUNVc2FiUHlNMGRPWURSN0VhN2lwNFVTWmx5YTM4WWZQdHZyWC90QmxoSGlsajU1bloxbmZOMjRBT0FpOUJWdHovTWJuOEFFREpDcUpnc1ZVYTZuUW5TeHYyRnM3bC9ObEN6cGZZRWptUHJOeWliLyt0MGVpMmVFTWp2TmhMa0hDWmxjaTRXaEJlN2VQWlRtellxbFk5KzFweHRTNEdCKzVsTTFCSFQ5dFMyNzBFV1VEWUZxMUkweVkvZk5pQWs0Yms5eUJnbWVmL2YyazZBbFlRWkhzTkZuVzh3QlF4Q2Q2OGlXdjcvMzViWGZ6M0pabWZHbGlnV0FLUmpJczNJcHp4UTI3dkFnbEhTaU96Q1l6SjlMOUExQ2RpeUZ2eVI2NnVjQTRqS2lmdTVlaHdFUjI2eVY3SGpLcW41TWZvem83Q294eHQ4TFdXUFQ0N0JlTXhYOHAwUGpiN2habis2Ync3ejNMdys3NjUzajVzSThDTHU1a1RocE1sajFtNGMyY2gzakdjUDFGc1QxM3Z1SzNxamVjS1RaazJrSGNPWlk0MFVYK3FkYXhzdFpxc3FRcWdYeitRR0Y5OVpKTHFyM1ZZdTRhZWNsMUFiNUdtcVM4ay9HVjViOTV6eFE1ZDRFZlhVSjZrVFMvQ1hGL2FpcUtET1QxVDdKejV6MFB3RFVjd3I5Y2xMTjFPSkdDaUtmcXZhaCtoM1h6ckJPaUxPVzh3dm44Z1c2cUU4dlB4aStFZnYrVUg1NVQ3UFFGVk1oNmNaMXBaUWx6SnBLWjdQN3VXdndQR0o2RFRsUjZ3YnlqM0l2Mkh5ZWZuUm8vZHY3ZE54K3FhYTBOMzhpQnNSKytVaWw3V2Q0YWZ3RE5zcnpEQUs0Zlhad3ZFWS9qZEt1SUtYbGZyUWQyQzM5ZFc3bnRuUmJJcDlPdEd5OXBQQm4vVjJBU29pLzJVSlpmUyt4dUdMSDhibkx1UGx6ZFROUzZ6ZHlrOER0L2g2c2ZPVzVteXhoMWYremYzelozTVgvbU85Y1FQcDVwT3g5NjdaQTYvcHFIdmNsTmZuVUZGK3JxK1ZkN2FsS3I2S1dQY0lEaHBuNnYySzZObFV1NkxyS284Yi9wWXBVL0dhemZ2dHdobjd0RU9VdVhodDVyVUpkU2Y2c0xqWWYwVlRZRGd3SjgxeWFxS1RVWWVqL3RiSGNrU1JiL0haaWN3R0pxaDFtQUhCL0l1TnM5ZGM5eXV2RjNENVhvY20zZWxXRmRxNW9FeTcwZFlGaXQ3OXlhTGlOalBqNVVVY1ZtWlVWaFFFaFc1VjJaNkNtNEhWSC9SOHFsYW1SWXdCaWxldWgwN0NiRWNlM1RYYTJKbVhXQmYrb3p0MzE5cHNib29iZVpoVm53aE1aek9lUUp6aHBURGJQNzFUdjhIdVp4eFVJLyttYTNYVzZERkREczQrcW1wRVJ3SEdCZDJlZHh3VUtsT0RSZFVXWi9nMEdPZXpyYnpPWmF1Rk1haTRRVTZHVkhWNmFQTkJpQm5kSFNzVjRJenB2VWlpWXlnNk95eXJMNERqNXEvTHczTjVrQXdmdEVWbDlyTmQ3Sms1UERpajJoVEg2d0lYbnN5WGtLZVB4Ym1IWWdDOEE2YW41Rm9iL0tINUd0QzBsNGVGc28rVnB4ZWR0SkhkSHBObStCdnk0Qzc5eVZPa3Jac0xyUTNPSENlQjBSYStrQklSbGRVR2xEQ0VtcTJSd1huZnloNkR6K2FsazZlZnRJMm42c2FzdFJyR3did3N6QmVEUlMvRmEvS3dSSmtDelRzTHIvSkNzNWhPUEUvTVBMWWRaMUYxZnY3RCtWbXlzWDZOcE9DOGFVOUY0UXM2SHZEeVV5OVB2RkdES1ovUDUxMDFUWUhGbDhwamo2d20vcXlTNzVldFpoaGZnMFVFTDRPWW1IazZtNmRPMTkyQXpvSXlQU1Y5UWVkREE0TWwyM3JSYnF4TVBNeGY3RkpuRGM1RlRFbFZTL1B5cWdlUHptd1ZaMjZOV2hSRFErb2FUN2x5N2VsbDRzM0R5cFMxczBnK3RPcjdYSHJya1pqOSt4L21KQnR0ckx4OThsRklhUlp6SHo0YUM3cjUyL0pRNFZqSGFoWTIvWVZYWm4vUUMyenRRYi9zWTN1Umx5YzV2UVM4bkxQR1QvbjI3NDk1aThIUEExNTJ6N0ZoNWFGcHluMUdQSktIdVBMOEl3OTREdVczS2prVVJBV1pYbjRFUXk4OXhpS0VITjFtay90a000Z1lEQnh3Tm9ZdlJmRTZMRnFzeFdKdFByREdic25MTWFwM0thM01Vb3l0VzBjdmllb3pPbWRFUm1oY3F6RyszSG1adjJ5WmVpSWVRVEtHZFJUNEhITnhla20xdFkrL24wNnJHbUZsZXFMc2NTRVJ6Y3RUS002RzlQMFBjMVJtVnZyYXNjSXhhTzFDUUNpWVBFMTViRDdjM3hTZVc3Z1h4WWpneGNyVWxjYkl2TzByK1lwbGh4MGtUdDNxYWZET21GeU1qZ0d4WHU3M3JkZE1IcFYxd011YnlBR2NmL3Y1ZExyNVA3MlRhOWxCRitmek1Kck15Y3d2Kzl2blUzQU5JbDFjSDl0Zlc3YWY4dTAvSEcwdlY0N2pORlh6RlR0YWhhMXh2emUvczhLTXRDWXVjWGMxbnpmZC9NUXlkVVhuL2I3MlJCdDV3Ty8zalJjTUg5QmRoQy95Y3RLQkl2ZVJZUHJOcERXcUJzTzhWTW1QK1d2UmFPY0E0elJNUjFQdlNvTzkyclM3cFlFditmWmZFZlRNekVkTSs2WDV0TGx5eEV4aHFMUmttczVFdUxvdkxmeDY2ZGU1ZkwyL3lYMDJINTJGUFZ3YWhyUHFtTi9FMG9WWG5zQ0toYmkveVJ4WDgzblJiVUtXaHpZY2VYT250ZnVYbjUxTnN6SjZNTzczcFFmNVBsNGluM2VjNEpVOGhGN3BwVjM0K21tOXIxTFkwZWUvaTFPMXdwZDgremZMenRFMGNxQnhnZ2lCaTVCdTk1djlsM3I5ci9VNWh3ZUxuK1RiZnhvd3JXRHFkSmF1S2Q4K3EvZEg4c2JQa2M5dHR1eU85NGY3L1hLL25IWDQ2TVBGTEViNXFRbE5QdmhKNTAvNTl0OWZ0M0xYdTd1VmFXYU8yYkRyRENuUlN6WnlXdkZLeE8xK3ZUOE13d3VuUjNiWDBDa2ZQanFiNEs5TzE5dG41WDUwUHZtWXBFd0h0aVc5V3R6dVYvczc2QjF6dkxMTmtWaU5kOHlTeElsLzNvcmZxUDkwVHlUR2FmNy9yeDhqUXplSEpYZG1oL042WUR2YnZtVEJ3Q2R4ZkVRMU5jTDZ3Tk1kU0lYTnE3YjFFVXpSeTEvQXhzeWs1cDIyR01HMWIrR3hGZ2JIRXJaaDkyd3V2Y28wQXVPTFhjdDlodncybncvTHFJY0RSUm1KbW1aemNnVWE3SnBNL1dWL1M5SVVmYkY1NlRMMm9yenF3ZWJkUkQ4bklZTko0MUQvaHozN0ZvMTFwMlkyMXd6UGNuNzEzcVZHaHF0ZXZTdFlmR0g0bjY5T0VKdFB2YmJMWVd2c2NEcWMzSGdudTE2Nit0QXlMbnhyWDBZNXpvWWpWKysxc0k3dDVrTXIwMktULyt1d3RrYytyWkxPZi9xbi9zM25ZQ2YxM0RnOC9zQjJkaUpnakdxalErVExoeGJ6eXVlMk9iN1g2LzlsVXdXN2ErbGJ6bkh6T1l5OExLVzFDL3VSUGJRWTNLVy8wZ085TFh1bkhMdlBMOTdhZmJhOWJGdGM5aG16N0dBdHRqVllsQ3ZRQWlPd0FrL2dDNStoa0xFczZ0cjNBWkt4TEp0T0V3azJkTHhUWVdzSUIvai9Ub1d0SVd6bzkwNkZyU0c4aWFxcXFxcXFpSWlJaUFnek16TXpOeitBeUsrMDEvemk4bjhTK1kxTWpvUmFRODBXVS9HOE1CbE8rNTNWUFhBTnJXbTR3ekdVVlpVampCSlpWZGhwY2ZranNtY1dhTytVRWxkWGkxZSt6cStIT3NDcGtuWXNodWg4cE9MSVNKdW43VE4wRUlHVzJ4VG5sT0ltZWVjbm9HVzRyYXhlMkcxVDNIRXZmWVVZTWhHK2dBRk9Bd2g1bks4bVpod0pNbU43cjIyNFFWc05Gdlo4N1owcWF0dmtua2x5UERLM0h5NDVQZ1ZLWGppNTJXZW40ZDRQbEZWVllHbk5hcCtmU3BGYks5MHJZbmhVYzZuOTFRM0FZOUUwdEpPRnJjZlp0bS80OTFYYmNHL2pzVmlVUFBYNzZxbWV1aXorcVkxSGs3LzFWUE00MDV6V1Z1b2hlTFVpbXBXWWRWekNtVWRLSGViTWR6Z3JZcmI4bUwyZWVMU25SV0hkb25mWmE4UnNPVTlGMzd3KzU5MWw1RkxZSGlPcVdlSHRFL2xXckJIY1JLcDN1aHRyOHlYbThMVS81bXMrTk02WktzcXU5MGNGWjRvNTgrazRyZHJ0Qjk3TkFERmJ3bUVHN2xYcXZpcmhPVE9xVTE0eHVVRjJteUlqVVJjUEhyUE9RNGxtTTNQZU1nN2JVdWswbm5aaTY3YlhzVTZIOGxocUlvOFRhT3JFYWZDTzFBUks5UGpDMFFPb3EyQnhtTWRnWUI5Ry9sSWI5KytmcU5KMnM3QkhHRnlCTm1aQVI4SjNLQ28wMTJpa2FTUDhCQ3JmNlZJMFg1eGRuYmhISU8rQjVyYk95QjU0elhremZPYnlKNGVjd3hmcUJKTUxGYzdtNTlyTmN3N2hvSG5GWjBiMDB6ZWUrZ1RxdmptNjFQYjR4bjBrY0RYNGp2SE0wckJYWnlwRzNEQ0tuRC9XYWEvWnRIbXRGUGdPNWVFVHgrazdSclZnM2FTd20yWW9OWG5DczNYUFFEaE5uK0ZpYTZJbE9PdUlHNlZKSDdUUDZhdmEyNmVoS0hRYTJUNE4wdGNaOWRQQ0dvM1pkbk5sdHNIUWJlWXQ1dlBuSmV6Vi9jQWVOeXBkbWwxdkNISThNODFuU1JQNVFpMittSTh2L3N4aVpydTkxODduUnRwM2YvNDJOZW1jT05hKzRlVkMzUENaemM4OGFaaDg1MUNxU3NzaGU3MHVQeGVOL2RtWXdsd2IzdHJ3TXJOMUdxOGpibkFwY1ZEeC95RFBlWXM1LzdyNjJ0c1E2bExnK0RpRlhURWh6UjlkSHF2MGlUNHRnajgyNVcrSDNYaVJVTlVaVDJrUjlSaTArbHArVU0zaVF0Uzh1T0UyM0x5NEtZdHZxSDEzamdoVW50SlJBZXd1ek5MRFhwOFJ4ZGNhQTNjTVk2VE8ySWVTRlJYZXplV0lqQ3F5aHNVZE1ZdUNnWVRaU0twQnlwZTF6UmZxOEZzaHZmQlBjNkJBUVdsNy9ReElEcDNWR28xSjN2bjQyT0VzM3F6bndzK1lMUlhieW15QjE5YTlYQng2bi9vd2N5eGxFWXlGV0NpK2tHOUYrRXlELzR5bjgwK2FnYVo5UDdheTJEbnk5OWFLMm85MUZrZkVPWThoQnd5Zmk1dXd4Mnk1U2FIbUcrb3EvemwxRlgvOGlyT2Y4WTN2QWNYLzZ1TFA2QTZudk1PMjRlZFNHUGpRYzgyN1J3MmF0WCt6MmJLcTBDbVc5bU90WW5yNS9BZkRhMVpmUGFYbkt0bFdib3J1cDdRWXgrT3IydVdiK04zTi8vMit5RGNYTXFJSmRmNTV4bDcvdnNqNFdvUFBseEx4dFZya0o0dy90VGUzbUxkQVRPT1l3eGNxNTJ3NVd4ejVNYlBkVnM1TzgvbGhmRTdkUGowYklpUFEzUVYwaXFtNG0zWVg4aFJmYzZqUTNmV2VwZXZNcVVESmQ4Nlo0dndNNDBDV0hubitXcGhzR0hmaWVGMDJEM3RtWnZwV0Qra0JwTkNGY0xuWmhjbW1yaHBHenpiZEErc1ExYXIxOE9KRDg3SU9LT0ZvUk56bmFIUE5IVWZVTmh2WTFpVSt1aHZFdnBLSGFVbjNxSzNleFZWeVg0am9pcHAzdW03Rm1ZSldtQStXYklEc2hScGJWUng1L25xc3RDZ3k4N0ZHYmZWQjh5REdDcVMrMnFDc25Sd25TQU42emd6eGZkQjJuQlQvdlo0LzZ1eGI2b0g4YjRWQlJ4aUlCOTN3TGE0N2hHM3cyU0wvMloyN3lPWEpGd1pwU0phQll5dmFqQTd2UlJZTktxbGpYS3B0L0NGRC90U01yMThES0tid0IweGdnQmVQYXRsMW5raTB5dnFXNXpjaGx5Wm1KME9UeEozRCtmc1lKcy9teFlONStMZTVvYWd0Y2wrWXNWdnk4a1NqSTJZR3ZHanZtcGtSUzlXMmR0WHFXblZ1eFVoVVJtMWxLdG91L2hkRXExOVZCcDlPakd2SEVRU21ycHVmMlIyNG1YR2hlaWw4S2VpQU5ZOGZXMVZFUlVmQkltYjY0ajEyY2FCWm1SVmlaSGJlVk1qQ3JQRGc5QTkwSVhydG5zWUN1WnRSUTBQeXJLRGpCTk9zUGZLc2cxcEEwMmdIbFZyME9YaUZodHA2bkpxWFZ6Y2JmTTBLbnpDM2dnT0VOUEU5VkJkbUhLTjZMWWFpamI0d1h4Sm41QTBGU0RGNWoraDFvb1p4ODg1SnQzWkt6TzVuN1o1V2ZORU90eXlQcVFFbm43V0x2NUZpczNQZGdNc2hqRjFGUnlkYk55ZUJieUtJMW9OMVRSVnJWSzdrZ3NiL3pqWDRORFBJUk1jdFZlYXhWQjM4VmgxeDVLYmVKYlUxMzhBTTVLem1adTN1bnkwRXJ5Z3hpSkY3R1ZYVXJQekZ4cmx4MXVGZEFhWkZETjljdkliNzRxRDl0ekJNbzdMN1dJRVlLK3NsYTFEVk1IcEYwRjdiMytZNlMremp2TGVETUNwYXBtSm8xd2VCV3V4S0Yzck9vY2loMWd1bjRCb0poMWtXblYvSm1pcTZ1T2hLM1ZmS3hFSEVrYWZqTGdLM291amFQelk2U1hnOHBoaEw0VE5SMXh2SmQxV2EwYVlGZlBVTUxyTkJEQ2g0QXVHUlRidEtNYzZaMVVkajhldlkvWnBDdU1BVWVmZG82OURaVW5nb3FFMVA5QTNQSmZPZjdXaXhDRWorWTZ0N2ZZZUhiYnhVQW9GVjNNODljQ0tmbWEzZmMxK2pLUmU3TUZXRWJRcUVmeXpPMngvd3JPMlZZSDdpWWRROUJrUHlJOC8za1hCcExhQ3BVN2VDMFl2L2FtL3RFRHU3SFpwcWcwRXZIbzBuZi9SL2dSelVXeTMzL0hYTUpRZXUxR3lsS21Pa1h6bENmR0ZydUFjUFBoYUdxWk90dTE5enNKMVNPMkp6NFp0dGg1Y0JYNm1SUXdXbUR3cnlHOUZVTWxaek5ja01kSytJb01KdjFyT1duQmFtUzJ3MktIaWFQTVBMQzE1aENabTRLVHBvWnlqNEUyVHFDL1A2cjcvRWhuRE1oS2ljWloxWnd4dUM3RFB6REdzNTNxOGdYYUk5a0ZUSysyTFRxN2Jod3NUYnJNVjhSc2Z1YTVsTVMwRndiVGl0VVZuVmExeVRiNUlYNTFtbVluVWNQOXdQcjhKaTF0aVlKZUpWOUdaVHJRaEY3dnZkVTJPVFU0Mm9nSjlGRHdobXljSTJMSWcrKzAzQzZzY1loVXlVdU1WNXRrdzZrR1VvTCttak5DMzgrd01kV05sam42dEdQcFJFUzd2ZXFyU241VFJ1ditkaDZKVkwvaURIVTFkYjRjOVdLMysrT3JIM1BxemlGOTE2VU1VS244RzY3bk42MEdmV2lIclhZaFVHM3lWV215WWFrNTlOSGo4dDFzbUc0VURpV3oyclBITnJLbk40Wm8xTEJicjIvZUY5WVowbjBibHgybkc0WCtFS0Z4dlMzVzI4SkVTRCtGV2s2MVZDRDN6L1VSR0hpSmwrKzdUZEJ3a0NqNnRHT0gzcURiMFFxY09GOUt6cGowSFViL0t5RlczWWhqMlZNS0pxR1psZUZCSDd2cXZmN1dxTEMzWE11SFY4cThhNHNURnV4VXRrRC82SklCdkthVmp2OTZuZGdydUtaMWsvQkh6cWYySzlmTGs3SEdYQU55TERkMXZ4a0svaTA1NXBuemwrenc2ekxud1hsVllWdGZtYWNKZ0VwUlAxaGJHZ3JZUFZONnYybEcraWRRTkdtd2NLWHUvOHhFai9QNnFlL3NCMldtd05wNnBwOGphSVNNa3dkbGVGWFlLNTVOSFdMVFRidXRTVXFqQmZER1dvL1lnOTE4cVErOEJSWlNBSFpiZnVOWnoyTzBzb3YxVWU0Q1dsVmczckZoTTNLbGpqOWtzR2QvTlVoazRuSCthNVVOMisxaTgrTk0zdlJOcDd1UTZzcWV4U0N1a0VWbFZacmlITnFGaTVyTG05VE1XYTRxbTNpZEpxcHBRQUNvbDJsNFZTdXZXTGZ0YTRKY1h5M2JST1BOYlhPZ2RPaEc0N0xDMEN3Vy9kTWxTeDRKZjE3YUVVM3lBMXg5cCtZYzBqdXBYZ2NNdVlOa3U2NGlZT2tHVG9WRHVKdmxiRUtsSnFzbWlIYnZOcklWWkVIK3lGZEY4RGJsZVo2aU5pV3dNcXZ0TXAvbVNwd3g1S3hSclQ5cDNNQVBUSEd0TWJmdmRGaHlqOXZoYUtjbjNBdDhMYzE2QWkrdkJjU3AxenRYaTdyQ0paeC9xbDdUWGNjbHE2UTc2VWVLV0R5OWJvUzBXSElqVXVXaFBHOExCbVc1eTJyaHVUcE01dnNMdCtIT0xoMVlmMERxWGE5dHNmQytrYUt0Mmh0QTBhaS9MMmk3UktvTmpFd3p0a21SVTBHZmdXMVR4VXZQRmhnMFY3RGRmV0prNWdmcmNjcFl2K01BOU0wZGtHVExFQ2VZd1VpeFJ6alJGZG1qRzd6ZFpJbDNYS0I5WWxpTktJMzFsZmE3aTJKRzVDOFNzK3JIZTBEN1o2OTYvVjNERUFPV0huUTl5TmFoTVVsNWtFTldTNnBIS0twMkQxQmFTcnJIZEUxdzJxTnhJenRwWGdVSXJGMGJtMTVZTUw0YjZWMWsrR3BOeXNUYWhLTVZyclM4NWxUVm85T0dKOTZJNDdlQXk1cllXcFJmL21JemVvWVUxREthUUNUVVZ3cmhIZXlOb0RxSGVsK2xMeHI5V0t6aFNZdzd2clI2K1Y1cTBwZmkyazNMMXpxa3ViWTZycmQ5Wkx2U3VXTmYwdXFua1krRnBUdkZ6U1c5RnAwYjlsOEpBN1RIVjllQ2kvUFkvU0NaSVVZeDNCVTJhbGo3Q20zVlY2ZVlwaW9zNGI2V3VOT0pkWVhVSzN6VHFqNUNWRzJGcVlNNFo3Q3VJVTBxTzA1WFIwZDcxRkhNMFloWm1KbVRSZkxsWEV1bU44MkJHdHpkWDBTMTl0MWUrYlVpZUs4elJtcXBhNFFjNVRTamlmbWFRc1kyRVRMamhJMzZnTVIxKzdxcGpkWFhIaWNlVWVrZkJhdWNIU2hBT2lGWG12M3NObUdReVU1aVZnbm9vY3VvblFYRVBURndzbEh0UzhSK0E0N1N0STl3ajBpU3J0Ymk1ck15c2N6RmlJbXNRK2JkRkNsbkZqanBYWHdNeTZPN3Fmak9yOEZiMGE3T0RJdGlzam5uM0VRTzE2K3lwZDFjd3lhQVc1WXp4ejVRa25mTU83NjQzZlhXL0k5eTNVMnhIMjdPYXBxcjU2Wi90RXpnbGo2SWJUNkhFSGpvcGlYcWVSYmU1bVFRdnh0Y2JET1Z2ZXJOMFpnTWR6cVJZUmphWHRNUmQ1NlE0Y1pTbWRQdlpKZFNyaEoxRDl6TlhQcUFFcVBJYXZQZGZ1YnQ1b2tlMmttdjBkenRJc3pTdjJWWXVveWYxVXVvcGJzWWIrdVg5aDZXcHdqcGd0WjZmTk5hd05KNHE4TzNDRm9TYmlvQWFPU1pNeDJHWWFQWUIrckViNnFqUWlOUkZRNzZUdndORlZLRCtCaEg5VmhjS0dzWHptTUk3QnB0VS9DTldvbE03WXpST3ZwRkFudHNpV0pwNmVSMmQzR2FyY1lTaFZZU1VxaG1ZT1dqNUU5Nk5LMld2bVlOVGVZN1pzNFJVRWR2OWg5UVQ0RXNlS3Q2THpMcnFFT3MzaHhBWTFNYU5XcFNhNnpaeDhGM1lPVmVDWU1TODhXK0NZSER1V2U0eW9jNllLK2RqRHVFT3JCUjVsdmgwcitROXVNODhscmp4OXg5QXRncFFWTkU4ciszTzZHdnc1OUQra0JGL1VNWHlobGlZVXRQam12WEdZNkRrM3gra0VPVytHdGRNVkM0RVpUcW9TL2ptUjBQMExTNzVET2MvdzJ2bnJpOTdNNFNkYlo4cWVVN2dnOERWYkVSa1U1Z2VhTVFPM21ZclNZeUFuZ2VVUXFyTjBDMC92c0ZtY2dXTlhOZWlkc1RBajcvNE1uY0pSMGNhYUJVcGJMSzF5QkNCTlJqRXY2S3Z1VlNkcFBuRU1KZHNSUnRxSitVOHROMWdYQTRlUEhjNlpUMGV2aUk3M1VPSkYwZkVaOFlhbmVBUXFRZEdwaE52d000bklxUG5YeFYweEEwZm5DVCtvQWhKdXl3L3E4ak8weThDalN0ZVpFeHdCcElONlN2TnA2QTVHL2FiaTZlZ2VORC8xR1RndWh1TmphVWJiblNiR2Q0TDg5MzdFem0zNEV5aTZuMW1hZU9CeGgzUEkwanpKRGY1bWgvQnNMRDdGMkdPS3ZsQS81Z3R2eEkzL2VWNHNMZktXNVd5K29pbytlcy91NlQ4VVUrbnNvZnk1N0ljYi9KbFpIUEZ0Q2dkL3grYnd0M1pUK3hYVHRUdFRyR0FiNFFlaEM2WDlHKzhZVCtvemNMeERzZENqc3VPcXdQRm5yZExZYUZjOTJVaTBtNGZyMzlsWW1sQ2FxVGl0N0c2Ty8za1dEa2d0WGpOSDRCaUVtLytqZWdRbmloT3RmZmZuMzNXeHNGamhmTWQ0OEhUK2Y2bzZYNjVqN1hSOFdMU0hNRmt4YnZPWXNyUnNGMWJvd0R1U1ExOE1reGs0cXoyem9HUEw1ZnU5aDJIcW10MWFzbDNRM1l1M3N6T2Mrc3BpQ21YNEFFVEJNM3BMb1RZU3Azc1Z4YWh5aEw4ZUM0bVBOOWsyeDNvMHhraWl4SXpNM0NaRnpmNW9SNG1lY1E1K2F4MndDYWgzL2NybW5Ib3FSMCtLTWFPUHhSaWYxb0VGUkZPTy9rVFBQbXR3dytOZk1YeEVLNmduNmlVMzJVNmZGcnVJejhRNFdnbGp0bmFDVlRCZ1d4N2RpVWRzaEM5WkVhNXlLcFJCQmVXMTJyL2lOYy8rRWdOcW1oc3dOQjhTQm9paEhYZURGN3JyV0RMY210M1Y4R1lZTjdwWFJ5NERaamo0REp1VUJMNWlDM0RRQWFvbzR2a2Z0cVZUWVJHTFMzbUhaN2dkbWRUVHFiZ05OL1BUZFRDT1RnWG9sYzg4TWhYQUVVTWRYMGl5MUpNdWs1d0xzZ2V1MFFVWWx6MlM0c2tUV3dKejZwT20vOGlocm1nR2ZGZ3JpK1pXVUsyZ0FQSGdiV2E4amFvY2RTdU00RkpZb0tpY1lYL1pTRU5rZzlRMVp6SmZ3U2NmVm5SMkRlZ09Hd0N2bW9nYVdKQ0xRZXB2OVdObFU2UWdzbU93SUNxdVUyOE1sazNkOVc1RTgxbFUvNUV6MExjWDZsd0tNV0RObHVOS2ZCRFV5L3BoSmdCY01uZmtoOWlSeHJkT3pnczA4SmRQQjg1THdvK0dVU2I0dDNuQyswYnlxTVp0TzJmUUo0VTJ6R0lyNDl0LzI4cW1tR3YyUmFuREQ3YTNGRWNkdHV0a1c4dHd3d2xVU3BiOFFhbG9kZGRiQmZOSEtEUTgyOEJkRTdPQmdGZGlLWW9oTGF3RllxcHliUW94QVRacmhlTGhkSTcrMFpsdTlRMW15UmNkMTVyOVVJbThLMkxHSnhxVGVnbnRxTlZNS25mMWE4elFpeVVSMXJ4b3FqaUZ4ZUh4cUZjWVVUSGZEdTdyaGJXbmc2cU94T3NJKzVBMXA5bVJ5RVBkVmtUbEUyNHZZNTRXN2JXYzZqTWdadk5YZGZDOS85cTc0MDhLRHNiZEw3VXR6N1FGU0RldHoycGljQXJ6cmRwTDhPYUNIQzlWMjZScm9lbXREWjV5Tk0vS0drV015VG1mbkluRXZ3dFNEMjNVY0ZjamhhRTNWS3prb2FFTUtHQmZ0NFhiSU82Zm9yVFkxbG1HUXdWbUtpY0JDaUFyRHpFKzFvSXhFMDhmV2V2aUlPRDVUem5xSCtPb0hhZHZvT1AyMGRyTVBlNUlyZzNYQlF6aVcyWER1SFl6anFRUTR3eVNzc2pYVXM1SCt0M0ZXWU1IcHBVbkJITXgvbllJVDVkN09takRiZ0Q5RjZuYTNtNGw3S2RrZVNPM2tURVBYYWZpV2lub2dhZzdiNTJ0YWlaaEwxVFN2QkZtRVphZkZxMkg4a2hRYVpYdWl0Q2V3VDVGQmdWdFBLMGo0eFVIUGZVejNRMjhlYWMxWjEzOURBUDIzZGdraTk0RUM4dmJEUFRRQzk3SFBQU1dqVU5HNXRXS01zYXhBRU1LQzA2NjVYdm8xTnRkMDd3Q0xOZjhRNTZtckVQVnBDeGxJTVZsUWxXUnhNM29BZnBnSWMrOEtDM3JFWFVvZzVnMDZ2dDd6Z1hZOGdySDdoaHdWU2FldXZDMDZZWVJBd3BieWsvVW56ajloTEVaTnMyb3hQUUI5eWMrR25MNnpUZ3E3ckkrK0tESndYMlNQOFNkNll6VHV3NWxWL2tVNmVReFJEMTJvbWZRQVc2Y2FUUjRMaWtZa0JCMUNNT3J2Z1JyL1ZZNzUrTlNCNDBDbmk2YkFEQXRhSyt2eXhWV3BmOU5lS0p4TjJLWVE4UTJ4UEIzSzFzN2Z1aHZXYnIyWHBnVzA0NFZENkRSczBxWG9xS2YxTkZzYUd2S0pjNDdsZVVWM3BwcFAvNVZUS0ZoYUd1b2w0RXNmamY1enlDeVVIbUh0aENoY1loNGhZTFFGK0FGV3N1cTR0MHdKeVdnZHdRVk9aaVYwZWZSSFBvSzUrRTF2ano5d1RKbVZrSVRDOW9Fc3RBc3laU2dFL2RiaWN3S3I4OVlVeEtaSStvd0QyMDVUbTVsbm5tRFJ1UC9Kbnp4WDNnTXRscmNYMFVlc1pkeHlRcVlRdUVXNFI1MXZtUTV4T1p0ZVVkOFNKcnVNbFRVemh0VncvTnE3ZVVCY3FOMi9IVm90Z2ZuZ2lmNjB5S0V0b1V4M1dZT1psVkp1Sk9oOHU1OWZ6U0RQRll0UWdxRFVBR3lHaFFPQXZLcm9YTWNPWVkwcWpuU3RKUi9HM2FQK0p0MXNMVmxHVjhQT3dyLzZPR3NxZXRueUYzVG1UcVpqRU5mblhoNTFveGU5cVZVdzJNNzhFekFKK0lNOGxaMU1CUFE5WldTVmM0SjNtV1NyTEtyTUhSZUE1cWRHb3owT0RSc2FBK3Z3eFhBMmNBTTRxbGZ6QkpBNjU4MW00aHp4SXRRdzVkeHJyQkwzWTZrQ2JVY0Z4bzFTOGp5VjQ0cS8vKzdBU05OdWRaNnhlYU5PU0lVZmZxTW40QTlsSWpGY3RZbjJncEVQQWIzZjdwM2lJQk44SDE0RlVHUTljdDJoUHNMK2NFc1RnVXJSNDd1SlZONG40d3Qvd2dmd3dIdU9uTGQ0eW9ia29meThKdnhTUVRBN3JNcERJYzYwOFNsWkZKZlpZY21iVDB0QUhwUEU4TXJ0UTQyc2lUVU5XeHF2V1pPbXZ1OWYwSlBvUW1nKzZsN3NaV3d5Zmk2UFhreEpud0JyYVVHME1ZRzR6WUhRejNpZ3kvWHNGa3g1dE5ReHc0M3F2STlkVTNmMERkaE9VbEhLam1pMVZBcjJLaXkwSFp3RDhWZUViaGgwT2lEZE1Zc3BvbFFzWWRTd2pDY2plb3dJWE5aVlVQbUwyd3dJa1lobVhLaEdvemRDSjRsUktic2Y0TkJoL1huUW9TOTJOSkVXT1ZPRnMyWWhOOGM1UVpGZUswcFJkQUc0MGhxdkxibW9TQTh4UW16T09FYzd3TGNtZTlKT3NqUENFZ3BDd1VzOUUyRG9oTUhSaFVleUdJTjZURnZyYm55OG5EdWlsc0RwenJINW1TNzZBUG9JRUptSXRTNjdzUUorbmZ3ZGR6bWpQeGNCRUJCQ3cwa1dEd2QwRVpDa05lT0Q3Tk5RaHRCbTdLSEw5bVJ4ajZVMXlXVTJwdXpsSUR0cFl4ZEg0WlBlWEJKa1RHQUpmVXIvb1RDei9peXBZNnVYYVIyVjFkb1B4SllscncyZ2hIMEQ1Z2JyaEZjSXh6WXdpNGEvNGhxVmRmMkRkeEJwNnZHWURqYXZ4TUFBb3krMSszYWlPNlMzVy9RQUtOVlhhZ0R0dnNOdHg3S3MrSEtnbzZVMjFCK1FTWmdJb2dWNUJ0K0JuWGlzZFZmeTlWeVhWKzJQNWZNdXZkcEFqTTFvL0s5WitYbkU0RU9DcnVlK2tjZFlIcUFRMC9ZL09tTmxRNk9JMzNqSC91RDFSYWxQYUhwSkFtMmF2MC94dHBxZFhWS05EcmM5RjJpem8yM1d1N2ZpcmdiVVJGRE5YOWVHR2VZQmhpeXB5WFpmdDJqM2hUdnpFNlBNV0tzb2QvL3JFSUxEa3pCWGZpN3hoMGVGa2ZiMy8xenpQSy9QSTVOazNGYlp5VGw0bXE1QmZCb1ZvcWlQSE80UTRRS1pBbHJRM01kTmZpM294SWp2c00za0FGdjNmZHVmdXJxWVIzUFN3WC9tcEd5L0dGSS9CMk1OUGlOZE9wcFdWYnMvZ2pGM1lIK1FBOWpNaGxBYmh2YXNBSHN0QjBJSmV3MDlpQWttWEhsMS9URWoranZIT3BPR3JQUlFYYlBBRE0rSWcyL09FY1VjcGdQVEl0TXRXNERkcWdmWVZJLys0aEFGV1lqVUdwT1AvVXdOdUI3K0JiS09jQUxiam9iZGd6ZUJRZmpnTlNwMkdPcHh6R0xqNzBWdnE1Y3cyQW9ZRU53S0xVdEpVWDhzR1JveDRkVmEvVE40eEt3YUtjbDlYYXdRUi91TnVzNzAwSGYxN3B5Tm5lenJVZ2FZOWU0TUFEaEVEQnBzSlQ2eTFnREpzMXE2d2x3R2h1VXpHUjdDOGtncGpQeUhXd3N2cmYzeW4xekpFSVJhNWVTeG9MQVpPQ1I5eGJ1enR4RlJKVzlabU1ZZkNGSjBldm05RjJmVm51amU5MlJjNFBsNkE4Ymx1TjhNWnl5SkdaMCtzTlNiLy9EdkFGeEMyQnFsRXNGd2NjV2VBbDZDeUJjUVYxYng0bVFNQlAxSnhxazFFVUFETkxlaWVTMmRVRmJRL2Mva3Z3SXRiWjd0eDBzdDE2dmlxZDUzV3NSbVBUS3YyQUQ4Q1VuaHRQV2c1YVVlZ05wc1lnYXNhdzIrRVZvb2VOS21yVzNNRnRqNzZiWUhKbTVLOWdwQVhaWHNFNVU4RE04WG1WT1NKMUYxV25MeTZuUXVwK2p4NTJiQWIrckNxNnk5V1hsMkIyb1pEaGZEa1c3SDNvWWZULzR4eDVWbmNCdXhNWFAybE5maFVWUWpTU3pTUmJ1WkZFNHZGYXdsenZlWHhhWUtWczhMcHZBYjhJUllGM1pIaVJubTBBRGVOUFdvY3d4U3pOc2VHN05yU0VWWm9IZEtXcWFHRUJ6MU44UHQ3a0ZicWgzTFltQWJtOWkxSUNoSXBMcE01QVM2bXI2T0FQSE13d3puVnk2MVlwQllYOHhaRE4vYStsdDduK3g1ajRiTk9WdGVaOGxqM2hwQUhTeDFWUjh2WkhlYzRBSE85WEZDZGpaOWVSa1NWNjVsak1tWlZ6YWVqMnFGbi9xdDFsdld6TlpFZkh4SzNxT0pySEw2Y3JyMENSek1veDVmMmU4QUxCQjRVR0ZaS0EzdE42RjZJWGQzMkdUSlhHUTdEVGk5ai9kTmNMRjlqQ2JEY1dHS3hvS1RZYmxJd2JMRFJlTDAwTFJjRFBNY1F1WExNaDVZemd0ZmprRksxRFAxaUR6ellZVlp6NU0va1dZUmxScGlnMWh0VlJqVkNrbm0raDFNNUxpRURYT3lIUkVodnpDR3BGWmpIUzBSc0syN28yYXZnZGlsckprYWxXcVBXM0Q5Z213VjM3SEttZk0zRjhZWmoyYXIrdkhGdmYzQjhDUm9INGtESElLOW1yQWcrb3dpRXdOampkOVYrRnNRS1lSOGN6SnJVa2Y3UW9pMllhVzZFVkRacDV6WWxxaVl0dVhPVEhrNGZBY1o3cUJiZExEaUpxMFdOVjFsMitIbnRrMW1NV3Z4clltYzhrSXg4RzNyVzM2SjZSYTRsTHJUT0NnaU9paG1vdytZbnpVVDE5amJWMkIzUldxU0h5eGtobWdzQnFNWVd2T2NVb20xakRRNDM2K2ZjYnUzeGYyYmJlcVUvY2ErQzRET0tFK2UzcXZtZU1xVzNBeGVqZnpCUkZWY3dWWVBxNEwwQVBTV1dvSnUrNVVZWDRxZzVVNllUaW9xUUdQRzlYcm51Wi9Ca3h1WXBlNkxpODcrMThFc2t5UVcvdUErdWsycnBIcHI2aHV0MlRsVmJLZ1drRnB4K0FaZmZ3ZWl3MitWaXR0a0V5Zi9pZmluUy8wSXRSTDJKcTN0UU9jeFBhV08yeHJHNjhHZEZvVXBaZ0ZYYVAyd1lWdFJjNnhZQ2ZJMUNhQnF5V3BnNGJ4OE9IQlF3c1Y0WFdNaWJaWjBMWWpXRXkySXhRMW1acmYxL1VOYllDSnBsV3Uzblo0V3BvZElHVkEwNWQrUldTUytFVDl0SDNSZkdHbU5JMWNJWTdldlpacTdvK2EwYmpqeWdwbVIzbVZmYWxrVC9TWkdUMjdROFFHYWx3R2xET1M5VkhDeUZBSUwwYTFRN0ppVzNzYXo5Z3FZOGxxS3luRnJQQ3p4a1U0U0lmTGM5VmZDSTVlZGdSaERYczBlZE85OTJuaFRLSHJpUkVQMU5KQzZTUk9NZ1EweE81a05OWk9oTU9JVDk5QVVFbGJ4cWVaRjhBM3hyZkRKc1d0RG5VZW5BSGRZV1N3QWJZakZxUVorRDVnaTNoTks4Q1N4VTlpNmY2Q2xMOUlHbGoxT1BNUUFzcjg0WUc2aWpzSnBDYUdXajc1YzN5T1pLQkI5bU5wUU5QVUtrSzBENndnTEg4TUdveVJ4VFg2WTA1UTRBbllOWE1ad1hNNGVpai85V3BzTS85Q29SbkZRWEdSNk1FYVkrRlh2WEVPM1JPMEphU3RrNk9YdUhWQVRISkUrMVcrVFUzYlNaMmtzTXRxak8wemZTSkNkQnY3eTJkOERNeDZUZlZtZTNxMFpwVEtNTXU0WUwvdDdjaVROdGREa3dQb2doM0Nuang3cWswOFNId2YrZGtzWjdNMnZDT2xmc0YwaFE2SjRlaFBDYUhUTnJNL3pCU09xRDgzZEJFQkNXL0YvTEVtZWgwbk9IZDdvVmwzL1FvLzlHVURra2JqN3l6KzljdnZ1K2REQXR4OE56Q0RUUDRpS2Radms5TVdpaXp2dElMTGVweXNmbFN2VExGQlozN1JMd2lyaXF5UnhZdi96cmdGZC85WFZIaC9PbXpCdkRYNG1pdE1SL2xVYXZzMlZ4NmNSOTRsekFrcGxtM0lSTnk0VEZmdTQ3dHVZczlFUVBJUFZ0YTRQNjR0VitzWjduM3VlZDNjZ0V4MllLK1FMNSt4bXM2b3NrOHFRYlR5dUtWR2RhWDlGUXFrNnFmRG5UNXlreGswVks3S1o2MmI2RE5EVWZRbHFHSHhTTUt2MVAwWE41QnFNZUtHMVA0V3A1UWZaRFVDRWxkcHBvWDBVNnNzMmpJa28yWHBVUktDSWhmYU9xTFBmU2hkdFMzN1pyVCtqRlJTSDJ4WVZWMXJtVC9NQnRSUWh4aU80TVEzaUFHbGFaaSs5UFdCRUlYT1ZudTlqTjFmOTIxbFdMWmt5OWJxYk0zSjJNQUFJOWptdUF4M2d5b0VVYTZQMml2czBFZU52L09SK0FYNnE1U1c2bDVIYW9GdVM2anI2eWc5bGltdStQMEtZS3pmTVhXY1FTZlRYenBPektFS3B3STNZR1hacFNTeTJMVGxNZ2ZtRkEzQ0Y2UjVjOXhXRXRSdUNnMlpQVVEyTmI2ZFJGVE5kNFRmR0hybkVXU0tIUHVSeWlKU0RBWitLWDBWeG1TSGpHUGJRVExWcHFpeGlhMnV5aFEzOTRnQk10N0MzWkFteG4vREpTK2wxZkJzQW8yRWlyL0Mwakc5Y3NkNCsvdHAxMnBQYy9CVkpHYUs5bWZ2cjdNL0NlenRybUNPNXFZMDZFZGk0eEFHdGlFaG5XQWJ6THkyVkV5YXpFMUo1blBtZ1U0UnBXNFNhMFRuT1Q2dzVsZ3QzL3RNcFJPaWdISG1leEJHQU1ZMG1kY0RiRHhXSXo0MU5nZEQ2b3hnSHNKUmdyNVJuVDZ3WkFrVE9jU3RVNE5NT1FOZW1TTzdneEdhaGRFc0MrTlJWR3hNVWhRbW1NMGxsV1JiYm1GR0h6RXFMTTRJdzBINzU3N0t5bytaZisyY1VGSU93OTNnRVkxNzF2UWFNMEhMd3BqcGRSUjZKejdWMGNrRTdYellKMFRtWTl6bkxkemt2YTB2TnJBR0dUNVNVWjV1YUhEa2NHdkkweVNwd2thc0VnWlBNc2VZY3U4NXc4SFBkU05pKzRUNkE4M2lBd0RieGdlRmNCMVpNMmlHWHpGY0VPVWxZVnJFY2thT3lvZGZ2YVlTUTdHdUI0SVNFMG5ZSmMxNVgvMWNpRFRQYlBDZ1lKSzU1VmtFb3I0THZ6TDlTMldEeTR4ais2Rk9xVnlUQUMyWk5vd2hlZWVTSTVoQS8wMmw4VVlrdjRuazlpYVZuK2tDVkVVc3RnazVIeXErZ0ptNlI5dkczcmh1TTkwNGhlL2hGbU5RYVVJQVRCMXkzdncrT214UDRYNVlpNkE1STVqSnVmSENqRjkrQUdOd25FbGxaalVjbzZYaHNPNVQ1K1IzeXh6NXlMVk9uQW4wenVTKzZ6ZGowblRKYkVaQ2JYSmR0cGZZWmZDZUNPcUpIb0UydlBQRlM2ZVJMaklKbEc2OVg5M25mUjBteFNGWHpwMVpjMGx0L1ZhZkRhSW1oVU10Ym5xV1ZiOU00bkdOUUxONjhCSFA3QVI4SWw5ZGtjeHptQnY4UENabHc5Z3VZMGx1cmJCc21OWWx3SlpzQS9CMTUvSGZrYmpid1BkZGFWZWNscy9lbG1ESE5XMnI0Y3JBeDQzZmVOa2ZSd3NhTnEveXlKMGQvcDVoWjZBWmFqejdEQmZVb2swWlU2MmdDeno3eDhlVmZKVEtBOElXbjQ1dklOTFNNMXErSEY5Q1Y5cUYzelA2TWwyMWtQUEwzQ1h6a3VZVWxuU3FUK0lqNHRJL29kNUt3SXMrdERhakRzNjRvd043dE9BZDZldWNHeitLZk8yNmlOY0JGcGJXQTU3MzJiQk5XTzRrSE5wcjlEOTU1TDYxYnZIQ0YvbXdTcno2ZVFhRGpmREVBTnFHTWtGYytOR3hwS1p6Q0Qyc2ovSnJIZCt6bFBROEl6N1ErMkpWSWlWQ3VDS29LL2hsQUVIenZrL1BpcTNtUkwxclQvZkVoOWhvVDVHSm1lWXN3ZzFvdGlLeWRpekovZlMyU2VLSFZ1NlozSkVIamlXOE5hVFFnUDV4ZEJsaThuQzU3WGlOOWhycXVCdTk5aG45enF3bzkyK1BNMkpYdHBlVlpTMFBkcVI1bUR5RHJlTU10RXdzK0Nwd2FSeXl6b1l0ZmN2dDlQSklXMGZKVk5OaS9GRnlSc2VhN3BlTHZKckwrNWI0R09YSjh0QXIrQVRrOWY4S21pSXNSaHFSeTB2Rnp3UlYzWjVkWjNRcUlVOEpRL3VRcGtKYmpNVU1GajJGOXNDRmVhQmpJNCtmTC9vTjMrTFFnakk0enVBZlErM0lQSVBGUUJjY2YwY2xKcHNmcG5CeEQ4NGF0d3R1cGtHcUt2ckg3Y0dObC9RY1djU2k2d2NWRE1MNmxqT2dZYm8rMkJPQVdOTmpsVUJQaXlpdFVBd2JuaEZ2TGJucXc0MmtSM1lwMmt2MmRNZURkY0dPWDVrVDRTNk00NEtIRUIvU3BDZmw3eGdzVXZzK0pOWTlHM08yWC82RkV0OUZ5QW41N2xyYml1K3RsODNzQ3ltU3ZxOWVaYmU5bWNoTDdNVGYvVGE3OGU4MHpTZjBoWVk1ZVVVNytmZjE0anY3WHk4cWp6Znp6enZhSm5ySWR2RmI1QkxXS2NXR3k1L3c3K3ZWMmN2SWZ3SHFkVEIrUnVKSzVvajltYnQwSHk5NEFtak1qandZTlpsTlM2dWl5eE5ud055dDNnZHJlTGI2NHAvMyswOG5Ya2I5MkxUa2tSZ0ZPd2sxb0dFVmxsY09qNWx2MWhmQVp5d0Rvd3MwOTQ0VTh2VUZ3K0EvbnVWcS9VQ3lnc3JtV0lCbkh5VTAxZDBYSlB3cmlFT3Z4L0lTSzZQazR5MncwZ21valpzN2xVOFR0YWtCQWRuZTR2L2FOeG1NcEs0VmNHTXA3c2kweXFzaW9sWFJ1T2kxWjFQN1NxRDNabXAwQ1djeUs0VWJtcDJTWGlYdUk1bkdMQ2llRkhLSE5SSWxjWTNQeXMyZHdNVFlDYXFseVdTSVR3cjJvR1h2eVUzaDFQZjhlUTN3MWJuRDdpbG9jVmpZRGtjWFIzT28xQlhnTUxUVWpOdzJ4TVZ3anRwOTlOaFNWYzVhSVdyRFFUNURIUEt0Q3RoZUJQNHpIY3c0ZHoyZVJkVE1hbWhsSGh0ZmdxSkpISTdOR0RVdzFYTDh2c1NlU0h5S3FEdHFvQW1yUXFzWXd2d2k3SFczb2pXeWhJYTVvejV4SlRhcTE0TkF6RkxqVkxSMTJyUk5VUTZ4b2hEbnJXRmI1Ykc5eWY4YUNEOGQ1cGhvYWNrY05KcCtEdzNEdWUzUk0rNVJpZDdFdUlnc253Z3BYMHJVV2gvbnFQdEJ5TWhNWlo2OU5wZ3ZSVEtaNjJWaVorUTdEcDVyNEswZDdFZkp1aXkwNkt1SVlhdVJoNUVjcmhkdDJRcFRTMWsxQXNjRUh2YXBOYlUzSEwxRjJURnlSMzNXeGI1TXZINWlac3JuM1NEY3N4bG5uc2hPOFBMd21kR04rcGFXblF1T1J0WkdYMzd1aEZUNjRTZXVQc3g4VU9va1k2T044NVdkUTFka2k1ekVyc0pHYXpjQk9kZFdKRUtxTlBpSnBzTUQxR3JWTHJWWStBT2RQV1FuZVR5eVAxaFJYL2xNTTRab2dHR09oWXVBZHI3Ri9ET2lBb2MrK2NuNXZsZjB6a01VSjQwWjFybGd2OUJlbFBxVk9weEtlT3B6S2RGOG1hSysxVnYyM01POWsvOCtxcExveHJJR0gyRURRbG5HbUg4Q0QzMUc4UXFseVFJY3BtUjVid21TVnc5L05zNklIZ3VsQ1JlaHZaLytWck02MEN1L3IzQW9udEZmcmxqZXc3NHNrWWUydXluN0pLUXRGUUJRUko5cnlHaWMvelFPc2JTNHNjVUJjdEE4Y1BUb1EzeDZaQlF1NkRQdTVtMWJuQ3RQOFRsbExZQTBVVFFOVnF6YTVuZmV3M01vcHkxR1BVd0c1anNsME9WWG5pUG1BY21McU81SEc4SHYzblNMZWNFOW9PalBEWGNzVHhvQ0J4WXl6QmRqNHdtbnlFVjRrdkZEdW5pcFM4U1NrdmRhTW5UQk45YnJIVVI4eGRtbUVBcC9QZHFrOXVleHRwMXQrSnJ0WHdwTi9NRzJ3L3FoUk1wU054UTF1aGcva0tPMzBlUS9GeUhVRGtXSFQ4VjZnR1JVNERoRE14WnU3eFhpajlVaTZqbHBXbVFDcUpnM0ZrT1RxM1dLbmVDUllaeEJYTU5BVkxRZ0hYU0NHU3FOZGplYlk5NG95SXBWak1ZZWhBaUZ4L3RxekJYRkhaYUw1UGVlRDc0clc1T3lzRm9VWFk4c2ViVVpsZUZUVWEvK3pCS1ZURkRvcFRSZVhOdVpxNDdRamtXbnhqaXJDb21tTzRML0dyRnRWVjIxRXBNeXc4d3lUaEw1WTU5ZDg4eHRseDFnMXR0U0lDRHdub2Y2bHQvNnpsaVB6Z1ZVTDhqV0JqQzBvMkQ2S2crak51VGhrQWxhREpzcS9BRzJhS0EvL0E3NmF2dzJLTnF0djIyM1ArV3EzU3RSREROS0ZGZ3RzRnVrWXQxR0ZEV29vRlZYaXRhTmhiM1JDeUppNGNNZU5qUk9pUEVEYjRrK0czK2hEOHRzZys1aGhtU2MvOHQySlRTd1lvQ3pBSTc1ZG9xOFFUSGUrRS9UdzBSUVNVRGxVKzZ1QmVOTjNoNmpKR1gvbUg4b2owaTNjYUNOc2p2VG5vaDczQnR5WnBzZmxITHE2QWZ3Sk5DRFg0Uzk4aDQrcENPaEdLRGhWM3J0a0tITWEzRUc0Sjl5OHpGV0k0VXNmTnpDL1JsNW1pZE5uN2d3b045ajIzSEdDUVErT0FacFRUUE1kaVZvdzc0MGdJeXVFdGQwcVZ4TXlOWGhIY251WFJLZHc1d0RVU0wzNThrdGpNWG1Ba3ZJQjczQkxhMXZmRjlCQVVaSW5QWUppd3hxRldRUUJWazdnUUg0b2pmVVEvS0VqbitBL1dSNkVFZTRDdGJwb0xlMW16SGthamdUSW9FMFNMREhWYXVLaHJxMTJ6ckFYQkdiUFBXS0N0NERHZWRxM0p5R1JibVBGVzMyYkU3VDIwKzczQmF0Vi9xUWhoQldmV0JGSGZoWVdYakFMdHMzOEZlbW5vVCs5Ym4xakRCTWNVTW1ZZ1NjMGU3R1FqdjJNVUJ3TFU4aW9uQ3BnVitRcmhnN2lVSWZVWTZKRnhSMFkrWlRDUE0rclZ1cTBHTkx5SlhYNm5yVVR0OEh6RkJSWTFFL0ZJbTJFZVZBOU5jWHJqN1M2WVlJQ2hWUUNXci9tMmZZVWpDNGowWExrelo4R0NTTGZta1czUEIveHErbmxYc0tWQk9qN3ZUdnFLQ09NcTdadHFyM2NRK044Z0JuUGFBcHMrb0d3V09rYnV4blJZai94L1dqaURjbFZyczIyeE1LNHFBckUxWnRrMTQ1NmtpSnJpdzZhYmtOZVJIb2dhUFJCZ2JnRjlaOGkvdGJ6V0VMTjRDdmJxdHJxVjlUdEdTbm1QUzJGOWtxT0lCYWF6SFlhSjliaTNBb0RCdmxaYXNNbHV4dDBCRFhmaHAwMkpuNDExYVZ0NlM0VFVCOFpnRkRrSTZUUDZnd1BZODV3K29VUVNzakllWFZtaW5yd0lkSzJaQWF3YjhTZTZYT0piT2FsaVF4SFNybkFlT05ETHVDbkZlaklicDRZRHRCY1FDd01zWWlSWmZIZWZ1RUpxSmN3S1RUSjhzeDVoakhtSkkxc1BGSE9yNlc5QWhaMk5Bb2QzOG1uTFFrMWdPejJMQ0FvaG9RYmdNYlVLOVJNRUEzTGtpRjdTcjl0TFpwNmxrY2lJR2hFMlY1NDZ3M01hbTUzVnRWa0diQjl3MFlrMlhpUm5DbWJweG1IcjJrNGVTQzBSdU5iak5zVWZESWZjOERadlJ2Z1VEZTFJbEtkWlR6Y1Q0WkdFYjUzZHA4VnRzb1pseVh6TEhPZEFic3AxTFBUVmFIdkxBMEdZREZNYkFXL1dVQmZVQWRId3FMRkFWKzN1SHZZV3JDZmhVT1IyaTg5cXZDQm9PYjQ4dXNBR2RjRjJNNGFLbjc5ay80M1d6QloreFIxTDB1WmZpYTcwWFA5c29RUmVldWhaaVVuWEZERzFUOC9PWE5tc3NUU25ZTysza1ZMQWdlaVk3MTl1RHdMOUZReWNnTFBlc3NOaWhNWmJBS0c3cXdQWnlHMTFHMStaQTNqQVgyeWRkcFlmbWFLQmxtZmNLL1YwbXdJUlVEQzBuSlNPUFVsMktCOGgxM0Y0ZGxWWmlSaGRHWTVmYXJ3TitmOWhFYjFjUmk0MVpjR0RuNlhlOU1NU1RPWTgxVUxKeVhJSFNXRklRSHN0VllMaUpFaVVqa3RsSGlHam50TjUvYnRCOEZ1K3ZwMjh6bDJmWlhOK2RKRHlONkVYaFMrMHl6cXBsL0xTSk5FVVZ4bXU3QnNOZGpBWTBqVnNBaGtOdXVZMEUxRzQ4ZWoyNW1TdCswMHlQYlE0U1JDVmtJd2I2SVN2WXRtSlJQejladDVkazc2YmxmK2xKd0FQSDVLREYrdkhBbUFDTG9DZEcyQWRpaTZkT0huTkpuVG1adG9PR084UTFqeTF2ZU13NmdiTEZUb1FtZkphN25UN0FsODltUmJSa1paUXhKVEtnSzVLYzlJTnptVEpGcDB0cEFQek5teUwvRjA4YlgzbmhDdW1NL2NSLzJSUG45ZW1aM1Zsam9rdHRaRDF6VldYbFVJcUVVN1NMazVJMGxGUlUwQWNFTlhCWWF6TmFWenNWSEEvc0QzbzlobTQyd2JISVJiL0JCUVRLekFpOHMzK2JNdHBPT1pnTGRRekNZUGZYM1VVeEtkMVdZVmtHSDdsaC9SQkJnTVpad1h6VTkrR1l4ZEJxbEdzMExQK0RaNWcyQldOaDZGQWNSOTQ0QitLL0pUV0kzdDlZeVZ5UmhsUDRDQ29Vay9tbUY3K3IycGlsVkJqeFhCSEZhQmZCdHI5aGJWbjJ6RHVJMGtFT0cza0J4OENHZFBPalgxcGgxUE9PWkpVTzFKRUdHMGp6VXkydEs0WDBDZ1ZOWWhta3FxUXlzUk50S3VQZENKcUszV1c1N2thVjE3dlhnaXlQcmw0S0VFV2dpR0YxZXVJNFFrU0ZIRmYwVERyb1FpTE5LSmlMYmRoSDBZQmhyaVJOQ0hQeFNxSm1OTm9rZXRhaW9vaHFNZ2xoNndMdEVHV1NNMUVaYlFnNzJoMFVKQUlQVkZDQUpPVGhwUUdHZEtmRm92Y3dFZWlCdVpITjJPYjR1Vk03K2d3Wkx6MUQ5RTd0YTRSbU1aMjRPQkJBZzdFaDZkTFhHb2ZaNFUyVEZPQ1FNS2p3aFZja2pyeWRSUytZYXFDdzFrWXQ2VWV4dXpiTkVEeVlMVFpuclkxUHpzSFpKVDRVK2F3TzJ4bHFUU1l1Nm4vVTI5TzJ3UFhnR09FS0RNU3ErelRVdHljOCs2aUxwMGl2YXY0Rkt4K3h4Vnk0RnhoSUYvcHVjVkRxcHNWZTJqRk9mZFpoVHpMejJRanR6dnNUQ3ZEUFU3YnpESDJlWFZLVVY5VForcUZ0YVNTeG5ZZ1lkWEt3VnJlSWd2V2hUOWVHREIyT3ZuV3lQTGZJSUlmTm5mSXhVOG5XN01iY0gwNW5obHNZdGFXOUVaUnN4V2NLZEVxSW5xMURpWlBLQ3o3aUdtQVU5L2Njbm5RdWQycE5nSUdGWU9UQVdqaElyZDYzYVBEZ2ZqOC9zZGxENGwrVVRsY3hUSTlqYmFNcXFOMGdReFNIczYwSUFjVzNjSDRwM1YxYVNjaVRLQjI5TDF0ejJlVVFoUmlUZ1R2bXFjK3NHdEJOaDRreTBtUUpHc2R5Y0JSRVArZkFhU3MxRVJFRFZvNWd2Z2k1K2FDTjdORUN3MzBvd2JDYzFtU3BqaWFoeU5Wd0pkMWppR2d6U3dmVHB6ZjJjNVhKdkcvZzFuMGZIODhLSE5uZit1N1ppUk1sWHVlU0lzbG9KQlV0VzllenZzeDlncmZzWC9GTnhuYnhVMUx2ZzBoTHhpeHlwSEtHRkFhUHUweENEOG9EVGVGU3lmUlQ2czgxMDlHTVVaTDhtMnhYcDhYMmRwUENXV2RYODRpZ2E0QnJUbE9mcW94NHNocUVnaC9IdDRxUnN0NTJjQTF4T0lVdU94Z2ZVaXZwNnY1ZjhJVnlhcnlFZHBWazcyRVJBd2RUNGFvWTF1c0JnbVArMG0wNlEyMTZIL251YnROWXhIYU9JWWpjYWNoM0E4RXovemMwS2NTaGhlbDBIQ1lqRnNBMEZqWXF5SjVaVUgxYVp3Myt6V0MwaExwTTZHRGZjQWRuOWZxMm9yUG1aYlc2WFhyZitLcmM5UnR2SUk1amVEM2RGb1QxS3daSnd4ZlVNdmM1S0xmbjhyUk9XMjNKdzg5c0oyYTVkcEIzcVdEVUJXRjJpWDhPQ3VLcHJIb3NKMm1mbEJSK1dxczg2VnZnSS9YTW5zcWI5NytWbEtkUFZ5c2N6UGo4Smh6ZitXQ3ZHQkhpakFxWWxhdmJGNjBzb01XbEhidktUK1NjdmhwcmdlVGxuNTF4WDBzRitFYWRjL2wyczJhNUJna1ZiSFl5ejBFODVwMExzdHFIK2dFR2lSODRuQlJSRkluOGhMU1pyR3dxalozRTI5Y3VHaSs1WjVicDdFTThNV0ZhOXNzUy92eTRWckRmRUNTdjdEU1U4NERhUDBzWEkzQXA0bFd6blE2NW5Rb1RLUldVMzBnZDdObjhab3dVdkdJeDRhcXlYR3dtQS9QQjRxTjhtc0pVT0RlelVIRWwwVlA5dW8rY1o4dlBGb2RTSUI0QzdsUVlqRUZqOHl1NDlDMktJVjNxeE1GWVRldkc4S3FBcjBUUGxrYnpISG5UcERwdnB6emlBaU5GaDh4aVQ3Qy9UaXlIMEVndVV3NHZ4QWdwbkUyN1dJeXBWK3VGTjJ6Vzd4bmlGL243NXRyczlJSjVhbUIxelhYWjFMRmtKNkdiUy9kRm9remw0Y2MybWFtVndoTDRYVTBBdjVnRFdBbCthRVdoQVA3dDJWSXdVK0VwdmZPUERjTEFTWDdIN2xacFhBMlhRZmJTbEQ0cVUxOE5mZk5Qb0FLTU5TY2NCZk85WVZWZ21sVzRSeWRCcWZIQVY3K2hyWjg0V0pHaG82Yk5UMFlNaHh4TGRPeC9kd0dqMG95YWs5YUFrTko4bFJKelV1QThzUitmUHlpeVRnVUhpbzUrUHArWWFLbEhyaFI0MWpZNU5FU1BTM3grelRNZTBTMkhuTE9LQ09RUHBkeEt5dmlCdmRIckNEUnFPK2w5NkhoaE5CTFhXdjR5RU11RVVZbzhrWG5ZSk04b0lnVk00WEoreFhPZXY0WWJXZXFzdmdxMGxtdzQvUGlZcjlzWUx0K1c1RUF1WVNGbkpFYW44Q3dKd2J0QVNCZkxCQnBKWmlSUG9yL2FDSkJac00rTWh2UzdaZXB5SHZVOG01V1NtYVpueHVMdHM4b2psNktrUzhvU0FIa3E1R1dsQ0IvTmdKNVczck8yQ2oxTUs3YWh4c0NyYlRUM2EwVi9RUUgrc0VyeFY0WFVXREh4MGtrRnkyNWJQbUJNQlE2QlUzSG9IaGhZY0pCOUpoUDZOWFVXS3huRTByYVhIQjZVOUtIcFdkUUNRSTcycWV2cDVmTXpjbStBdkM4NXJzeW5WUWhydURBOWZwOUNPZTdONTZjZzFVS0dTYXM4OXZyTitXbEdMWVR3aTVXKzB4WWRLRUd0R0NlTkp3WEtEVTBYcVU1dVFZbldzTXdURU5MR3RiUU12b0dqSUZJRU16Q1JhbDRybkJBZzdEL0NTbjhNc0N2UytGREpKQXpvaWlvSkVoWkpnQXA5bjIrMVl6bnI3SCs2ZVQ0WWtKOU1wajYwSW1jVzRpNGlIRExuOVJ5ZEI4ZHgzUVltM3JzWDZuNFZSclpEc1lLNkRDR3drd2Q1bjMvSU5GRXBrMTZmWXBQNkp0TVFwcUVNemNPZlFHQUhYQlRFR3p1TEowM0dZUUw5Ym1WMi83RXhEbFJmK1V2ZjFzTTJmclJ0Q1dtYWwxMnBNZ3RvbnZTQ3RSNG4xQ0xVWlJkVEhESFAxT3R3cWQrcmNkbGF2bktqVUIvT1lYUUhVSnpwTnlGb0twUUsrMk9nckVLcEd5SWdJQmduMnk5UUhuVEppaFpPcEV2T0tJb0hBTUdBWEhtajIxTHltMzlNYmlvdzRJRis3N3hOdWV3emlOVkJ4cjZLRDVlKzlIelpTQklsVWEvQW1zREZKRlhleXJRYWtSM0Z3b3dUR2NBREpIY0VmaEdrWFlOR1NZbzRkaDRieHdMTSsyOHhqaXFrZG4wLzNSNFVFa3ZjQnJCZm4vU3pCYzFYaEtNMlZQbEpnS1NvcmpEYWM5NlYyVW5RWVhsMS95WlBUNERWZWxnTytzb01qZXhYd1lPNThWTGw1eEluUVVaSThqYzNIMkNQbkNOYjlYMDVuT3hJeTRNbGVjYXNUcUdLNnMyYXo0UmpwRjJjUVAyRzI4Uis3d0RQc1pEWkMva1d0amRvSEM3U3BkUG1xUXJVQWhNd0tWdXhDbVlUaUQ5cS9PN0dIdFp2UFNOMENBVVFOL3J5bVhaTm5pWUxsSkRFNzBic2s2WHhzaDRrRE9keGU3QTJ3bzdQOUY1WXZxcVJESTZicmY3OXlQQ1NwNEkwalZvTzRZbkxZdFg1bnpzcFI1V0I0QUtPWXRSMXVqWGJPUXBQeVlEdmZSRTNGTjV6dzBpN3JlZWhkaTd5VjBZRFJLUmxsR0NHUms1WXorVXYxZllsMlp3cm5Hc3FzamdBVm8weEVVYmE4b2hqYU5NSk53VHdaQS93QkRXRlNDcGcxZVVIOE1ZTDJ6ZGlveFJUcWdHUXJEWnhReU56eUJKUFhaRjArb3hJVEpBYmo3b05DNUp3Z0RNVUphTTVHcWxHQ1djLy9LQ0lySSthY2xFZTRJQTB1enY3Y3VqNkdDZGFKT05waTEzTzU0NHZidElIQkYrQStKZURGVVFOeTYxR2tpM3J0eVE0YVV5d242cnUzMTQvZGtHaVA4SXdqbzBKLzJUeHM0OVprd0VsNG14K2lZVVVPNTVJNnBKelU0UCs3UlJzK0RYWmt5S1VZWnFWV3JQRjRJOTRtNFd4MXRYZUU3NG85R3VYOTc3eXZKL2prZGFrOCtBbW9IVmpJMTVWK1d3QmRBUkZWMklQaXJKZ1ZNZHNnMVBlejJWTkhxYTdFSFdkVGtsM1hUY3lqRzlCaXVlV0Z2UWZYSThhV1NrdXVSbXFpL0hVdXpxeXZMSmZOZnMwdHhNcWxkWVlmbFdCMUJTMzFXa3VQSkdHd1hVQ3BqaVFTa3RrdUJNV3dIalNrUXhlZWhxdzFLZ3owVHJ6bTdRYnRneGlFUERWbVdDTkNBZUNmUk9UcGhkMVpOT2h6THk2WGZKeUc2WGdkNU1DQVp3NHhpZTBTajVBblkxL2FrRGdOUzlZRmwzWTA2dmQ2RkFzZzJnVlFKdHpHN0xWcTFPSDJmcmJYTkhXSC9OWTg5Tk5aNFFVU0pxTDJ5RWNHQURiVDM4WDBiR2R1a3FZbFNvbGlLT2NzU1R1cWhjYWVtVWVZTExvSTgrTVpvcjJSeFhUUlRoRjFMckhmcWYvNUxjTEFqZGw0RUVSZ1V5c1lTMmdlRSt5RmRhc1U5MVVnVURzYzJjU1ExWm9UOSt1TE93ZGdBbWlmd1FxRjAyOElOYzJJUUVEZlRtVXczZVp4dno3VWQxejN4YzFQUWZlQ3ZmS3NCOWpPaFJqN3JGeWI5WGNEV0xjWWowYkJ5b3N5Y2hNZXpNTFZrRmlZY2RCQlF0dkk2SzBLUnVPWlFIMmtCc1lISmFYVGt1cDhGMGVJaE8xL0djSXdXS3ByMm1vdUI3ZzVUVURKTnZPUlhQWGEvbVU4YmgyN1RBWllCZTJzS3g0TlN2NU9qbkhJV0QyUnV5c0N6QmxVZmVOWGhEZDJqeG5Ib1VsaGVKM2pCQXB6VVJ5MGZ3bTJGd3dzU1UwY2FRR2wwS3Y4aG9wUlFFMjExTm52dExSc21DTnJoaHBFRG9OaVpFekQyUWRKV0tiUlJXbmFGZWRYSEFFTFNOMHQwYmZzQ3NNZjBrdGZCb1hCb05BK25aTjkrcFNsbXV6c3BGZXZtc3FxY01sbHp6dmt5WHJ6b0ErUnlvMWVQWHBkR09vSnZoeXJ1K0VCUnNtT3A3TVhaMHZOVU1VcUhMVW9LZ2xnMXA3M3NXZVptUGMrS0F3MHBFMnpJc0ZGRTVINDE5Mkt3RHZEeGR4RVlvREJETlpqYmcyYm1BRFRlVUtLNTdJUEQ0ZlRZRjRjNkVuWHgvdGVZTU9SQkR0SWhQSm5laVpueTdOdi96RytZbWVrSUtDb3hyNmthdUUyYlp0Qkx1ZmV0TkcwQnRCWTdmKy9JbVV5cE1CdmRXdS9RN3ZUTVJ6dzVhUUdaV3VjMVYwSEVzSXRGWU1JQm5vS0daMHhjYXJiYS9UWVpxNTBrQ2FmbEZ5c1lqQTRFREtIcUdkcFlXZEtZbW0rYTdUQURtVzM1eWZuT1lwWllya3BWRXRpcUYwRXVqSTAwYWVwbE5zMmsrcXlGWk5lRTNDRFBMOVA2YjRQUS9rYXRhSGtWcExTRVZHSzdFWDZyQWE3SVZOcnZadEZ2T0E2b2tLdkJnTXRGREFHWk94ODhNZUJjSjhBUjNBZ1VVZUl6bkFONnRqQ1VpcEdEWk9ObTFGaldKcDRBM1FJelNhSU9tWjdEdkYveXNZWWJNL2ZGRE9WMGpudEFqUmRhcHhKeEwwZVRocEVoS09qQ0REcTJrcyszR3J3eHFJRktMZTFXZE96SUk4WElPUEdud3k2TEtYVmZwU0RPVEVmYVJzR3VqaHBTNGhCSXNNT3FIYmwxNlBKeGM0RWthVnU5d3BFWWxGLzg0TlN2NVp1bTRkck1mcDl5WGJ6ekFPSnFxUzRZa0k0Y0JyRnJDN2JNUGlDZmdJM25OWkFxa2szUU9acVIreXlxeCtuRFFLQkJCWjdRS3JmR01DTCtYcHFGYUJKVTB3cGtCZEFoYlI0aEpzbVQ1YXlubHZrb3VveG0vTmpENW9lNkJ6VklPOXVrdE0rLzVkRUM1UDd2WnZhcm11Ty9sS1h6NHNCYWJWUElBVHVLVHJ3YkpQOFhVa2RNNnVFY3RIS1hJQ1VKR2phWklXUmJacDhjenF1UVlmWTZ5bkJVQ2ZJVStnRzZ3cVNJQm1ZSW05cFpwWGRhTDEyMVY3cTBWakRqbVFuWHZNZTd5c29FWm5aTDE1QjBTcHhTMWpqZDgzdU5JT0tad3U1TVB6ZzJOaE94M3hNT1BZd0VuMkNVemJTcndBczVPQXRyejNHQWFVa0pPVTc0WHdqYVlVbUdKZFpCUzFOSlZrR1lyVG9JTkxLRGp4Y3VJbHlmVnNLUVNHL0c0RHlpTzJTbFF2SjBkME90MXVPRzVJRlNBa3ErUFJWTWdWTUR2T0lKTWRxamVDRktVR1JXQlc5d2lnWXZjYlU3Q1FMLzdtZUYyS1pBYVdsKzR5OXVob3dBWDdlbG9nQXZJdEFBeG8yK1NGeEdSc0hHRVc5Qm5obFR1V2lnWXhSY25WVUJSUUhWNDFMVitGcjVDSllWN3NIZmV5d3N3eDRYTXRVeDZFa0JoUitxOEFYWFVBOHVQSjczUGI0OWk5S0c5Zk9sanZYZXlGajlpeGdibzZDY2JBSjdXSFdxS0h5L2grWWpCd3A2VmNON004OUZHelEwNHFiclF0Z3JPRnliZzNnUVJUWUc1eG43M0Fya2ZRV2pDSlJPd3kzSjM4RHgvRDdqT2E2QkJOc2l0RXcxd0dxNzgwRUVpb09lRCtaR3AySjY2QURpVkdNYXlpSFl1Y01rOG5USzJ6elQ5Q25FcmFBazk1a1FqeTRrMEdSRWxMTDVZQUtMUUVySjVycDFlYXk5TzRGYjZ5SkdtOVU0RmFNd1BHeHRLRDZvZElJSEtvV25oS28xVThLSXBGQytNVm41OVpYbWM3WlRCWmZzZzZGUThXMTBZZlRyNHUwbllycEhaYloxalhpTG1vb0YwY09tMCttUG5KQlhRdGVwYzduMEJxT2lwTkNxSTZ5eWxvVGVSU2hOS0gwNEZJbzBnY01rMEgveFRoeU40cFBBV2pERGtFcDNsTk5QUk5WZnBNSTQ0Q1dSbFJnVmlQNjRlSzBKU1JwMFdVdkNXWXVtbFcvYzU4VmN6L3lNd1ZjVzVvWWI5KzI2VEVod3ZieGlOZzQ4aGwxVkkxVVhUVS8vRXRhK0JNS25HVWl2Y3RmTDV3SU5ERDBnaVFMMWlwdDZVN0M5Y2Q0K2xncVkybE1VWjAyVXY2UHJzK1pFWmVyN1pmV0JYVmdobGZPT3JDbHdzb09GS3pXRWZ6NlJadTFlQ3MrSzhmTHZrdHM1K0JYMGd5ckZZdmUwQzNxSHJuNVUvT2g2RC9DaWhtV0lyWTdIVVpSaEpheGRlK3RsZHU2YWRZSitMZVh1cFF3MFhFeEMzNlJFVGRORnhjcTlnbE11NGNOUVNYOWNxUi9HUVlwK0l4VWtJY05HV1ZVN1p0R2E2UDNYQXlvZFJ0MFhlUzNUcDAxQW5DaDBaYlVoNFZyU1plVjlSV2ZTb1d5eG5ZM2h6Y1ozMEcvSW5EcTR3eFJyRWVqcmVCeG5oSVFia3hlbnhrYXhsK2s3ZUxVUWtVUjZ2S0oyaURGTkdYM1dtVkExeWFPSCttdmhCZCtzRTZ2YWNRekZvYndZNUJxRUFGbWVqd1c1bmU3SHRWTm9sT1VnSmM4Q3NVeG1jL0xCaThONW11OVZzSUE1SHlFcm5TNnplQ3o3VkxJOStuL2hiVDZoVG9rTVhUVnlYSlJLU0cyaGQybGFiWFRidG1LNGZOSDNJWkJQcmVTQTRGTWVWb3VWTjN6RzV4OUNpR3BMdy8zcGNlbzRxR3FwK3JWcCt6Kzd5UTk4b0VmK255SDRGMytKOUloZURCYTk0V2k2M3pKYkxCQ0labTdQMGFzSEdwSUp0M1B6RTNtMFM0WUlXeVhCQ1ZYR2lrajhNdWREUEIvNk5tMnY0SXhKNWdVMGlpMGd1eTVTVUhxR1VZelRQMGpJSlU1RTgyUkhVWHRYNGxEZHJpaEJMZFAxWWFHMUFHVUMxMnJRS3VJYUd2Q3BNalpDOWJXU0NZbmpEbHZwV2JrZFhNVE5lQkhMS2l1b296TUdJdmtjem1QMGFSSlNKOFBZbkxDVk5oS0hYQk5ja0g3OWU4WjhLYzJ3VWVqNHNRWm9IOHFEUkdrZzg2bWFXL1pRV0dObkxjWG1xM0ZsWE02c3NSLzNQNkUvYkhNdm02SExydjF5Uml4aXQyNUpzSDMvSU9yMlVWNEJXSmh4WFc1Qko2WGRyMDduOWtGM1pOQWs2L1hwYzVNU0ZtWUoyUjdiZEw4S2s3cTFPVTlFbGcvdEN4SjhnaVQyN3dTVHlTRjBHT3hnNFBiWUpkaS9OeWlhOU5uODlDR0R1bGZKZW1tMWFpRXIvZWxlR1NOKzVNUnJWSjRLNmxneVRUSVczaTljUTBkQWk2Rkh0MFlNYkgzd0RTQXRHTFNBY2Nlenp4SGl0dDFRZGhXMzZDUWdQY0E4dklJQmgzL0pOamYvT2JtYzJ5enBrOGVkU2xTNGxWZHdnVzV2emJZRXlGb0Y0R0NCQmJ5MWtlVk51ZUhBSCtldmkrSDdvT1ZmUzNYdVBRU05UWE9PTkFiekplU2I1c3R3ZFFIbDFaanJHb0U0OUk4K0E5ajN0K2FoaFFqNzRGQ1NXcFpyajd3UlNGSkpubndpMVQ5SEw1cXJDRlcvSlpxNlA2MlhrTVdUYit1NGxHcEtmbW13aUpXeDE3OEdPRzdLYnJaR3F5V3dtdXlLV1BrTnN3a1oxcTh1cHRVbHZpSWkrQVhoMmJPT1RPTHNydE5rZnFiUUplaDI0cmVlYmtJTkxranV0NXI0ZDlHUi9yOENCYTlTVTBVUWhzblpwNWNQK1JxV0NpeFJtN2k0WVJGYnRaNEVBa2h0TmE2akhiNmdQWVF2N01LcWtQTFJtWDNkRnNLOFhzUkxWWjZJRVZyQ2JtTkRjOG81bXFzb2dqQVFmb0M5QmM3UjZnZncwM20rbFFwdjZrVGZoeHNjRElYNnMwdytmQnh0a2hqWEFYcjEwVW91V0N4M0MvcC9GWXdKUlMvQVhSS2tqT2I1Q0xtSzRYUmUwK3hlRER3VmtKUFphdTUyYnpMRURIQ3FWMGY0NHBQZ0tPa1lLZ1RaSjMzZm1rM1R1OFNkeEowMlNITThGZW01U01zV3FSeWkyRjF5bmZSSnN6Y0ZLeWtkV2xOcWdEQS9MOWxLWUJtYzdadS9xOWlpMUZQRjQ3VkprcWhpclVvYjUzem9pSnRWVlJWd01SMzRnVjlpcWNCYUhiUnU5a2t2cWszeU1wZlJGRzQ5cEtLaklpcTdoL1ZwUndQR1RIb1k0Y2cwNVg1MDI4aUhzTHZVVy91eitralB5SUVoaGNLVXdDa0pBd2JSOXBJRUdPbjh6NnN2QU84aTg5c0ozZEw1cURXRlliUytIR1BSTXhZd0pJdEZRTjg2WUVTZUpRaG4ydXJHaUxSZmZRZUxwdERsOGRBZ2IrVHA0N1VRUHhXT3cxN09lQ2hMTjFXbnpsa1BMMVQ1TytPM01lbnBuNEMzSVk1TEVlcEhwblBlWkhidnVXZmVWdFBsa0g0TFpqUGJCcmtKVDNOb1JKekJ0ODZDTzBYcTU5b1ErOGRzbTB5bVJjbVF5bjh3NzFtaG1jdUVJNWJ5dUYrQzg4VlBZbHkyc0V6amx6QVEzdmRuLzErSHpndXc2cUZOTmJxZW5oWkdiZGlHNlJ3WmFURzdqVEEyWDlSZFhqRE45eWoxdVFweU80THg4S1JBY1pjYlpNYWZwNHdQT2Q1TWRYb0ZZNTJWMUE4TTloaTNzc285Myt1cHJFMHFZTk1qa0UyMkN2SzRIdVV4cU43b0l6NXBXdUVUcTFsUUFqcWxTbHFkRDJSbnIvZ2dwL1RWa1FZam45bE1mWWVsazJzSDVIUGRvcFlvN01Id2xWMW9yOUJ4ZitRQ3lMem05MnZ6RzJ3amlJakMvWkhFSnplcm9KbDZiZEZQVHBaaG81TVYyVTg2ZkxRcXhObEdJTXFDR3krOVdZaEo4b2IxcjArV2h4ZGU5TDJQZHlzRVR2OTdPK3hWdytWTk4xVFpTUU41STZsOW01SXA2cExJcUxtNGExQjFmZkg2Z0h5cVQ5cDgyTk9qbnRSV0dJb2ZPM2JKejVHaGt2U1dic1h1ZVRBTWFKRG91OTlrR0xxRGxod0JaTkVRNG1LUHVEdlZ3U0s0V21MbHVIeWhBOTdwWmlWZThnK0p4bW5KRjhJa1YvdENzNEpxL0hnT29BRUdSOXRDRHNEYkRtaTNPdmlVUXBHNUQ4WG1LY1NBVWFGTFJYYjJsbUpUTllkaHRZeWZqQllaUW1ONXFUNUNOdWFEM0JWbmxrQ2s3YnNNVzNBdFhrTk1NVHVXNEhqVUVSU0puVlEwdnNCR2Exd28zUWg3MTE1WEdlVEYzTlR6OHcwNDQwQWdVN2MzYlNYTy9LTUlOYUlXWGQwb0xwb3EvMC9RSnhDUVNKOVhuWXkxVzdUWUxCSnBIc1ZXRDFhaHNBN0ZqTnZSZDZteENpSHNtOGc2WjBwbnpxSXBGMWRIVXRQMklUVTVaMWhaSGJ1K0wzQkVFU3RCYkw5WFl2R2ZFYWt2MWJtZitiT1pHbm9pdUhFZGxCbmFDaHhZS056QjIzYjhzdzhZeVQ3QWp4Zms0OWVKSUF2ZGJWa2RGQ2UySjBnTWVmaFEwYklaeGh4M2Z6TUl5c1FOaU44UGdPVUt4T011cjEwTGR1aWdSRURSTVp5UDRvR1dyUDFHRlk0dDZncm9BU3NaNDIxb3M0OHdBZG5yYm92TmhMdDdTY05VTGt3WjVBSVpKVHJiYUtZVExqQTFvSjNzSXVOL2FZb2NtLzl1b1FIRUlsYWNGMXMvVE0xZkxjUFRMMzhPOWZPc2pNRUl3b1BLZnZ0N29wdUk5RzJIZi9QUjRhQ0xEUTd3Tm1JZEV1WEovUU5MNzJrNXE0TmVqQWxkUGZlM1VWVnF6a3lzOFlaL2pZT0dPcDZjK1l6UkNyQ3VxME0xMXk3VGlONnFrN1lYUk1uL2d1a3hyRWltYk1RanIzandSTTZkS1ZaNFJVZldRcjhub1BYTEpxNnloNVIzRUgxSVZPSEVTc3QvTEl0YkcyRDJ2UnNaUmtBT2J6dlFBQUQzbWIzL0c0TnpvcEkwRkFpSGZicHEwWDcyYWRnNlNSais4T0hNU2h0Rnh4TFpsZi9uTGdSTGJDbHdsNVdtYVlTcyt5RWprcTQ4dFk3WjJiRTBOOTFtSnd0K3VhME5sUkpJRGgwSGlrRjRVdlNWb3JGajJZVnU5WWVTNXRmdmxWalBTb051L1p1NmRFVWZCT1Q1NTVoYWhCZE4zU2E1WHVqMlJ2YXUxbFFOSWFDOTQ0eTBSV2o5VWlORHNrQUsxV29MK0VmWGNDNkliQlhGUnlWZlgvV0tYeFBBd1V5SUFHVzhnZ1owOGhjaWpLVHQxWUtuVU82UVB2Y3JtRFZBYjBGQ0xJWG41aWQ0ZkQvSng0dHcvZ2JYczdXRjliMlJnWHRQaExCRzl2RjVGRWtkSEFLclFIWkFKQy9IV3ZrN252enpEeklYWmxmRlRKb0MzSnBHZ0xQQlk3U1FUakdsVXZHNTc3eU51dFoxaFRmczkvMW5rU1hLOXp6S0xSWjNWT0RlS1VvdkplMFdDcTF6Vk1ZeENKTWVubU56UElVMlM4VEE0RTd3V21iTmt4cTlySTJkZDZ2MFZwY0FQVk14bkRzdldUV0ZheXlxdktaTzdaMDhhNjJpL29IMi9qeGY4cnBtZk82NGluM0ZMaUwxR1g4SUd0VkU5TTIzeUdzSXFKYnhEVHkrTHRhTVdEYVBxa3ltYjVWclFkek92cWxkZVUwU1VpNklpckc4VVozamNwUmJ3SGExQzBEd3c5Ry9TRlgzZ1B2VEpRRStreXorZzFCZU1JTEtLTytvbGNIemN0T1dnenhZSG5PRDdkcENSdHVaRVhBQ2pncWVzWk1hc29QZ251REM0blV2aUFBeERjNXBuZ2pvQUlUSWt2aEt3ZzVkNjA4cGRyWmNBK3FuNVRNVDZVby9RekJhT3hCQ0xUSlgzTWdrODVyTWZzbld4ODZvTHhmN3AyUFg1T05xaWVUYS9xTTN0UHc0Wlh2bEFwODNOU0Q4RjcrWmdjdEsxVHBvWXd0aVUyaDAySENHaW9INXRrVkNxTlZUTUg1cDAwc1J5MkpVMXF5REJQMkNJSS9EZzRXRHNJbCt6Z2VYNzU4OXNyeDZZT1JSUU1CZktib2RiQjc0M1RsNFdMS09FbndXVVZCc205NFNPbENyYWNVNzJNU3lqMDY4d2RwWWp5ejFGd0MyYmpRbnhuQjZNcC9wWit5eVpYdGd1RWFZQitrcWhqUTZVVW13U0Zhek9iK3JoWWpMYW9pTSthTjkvOEtLbjB6YUNURnBOOWVLd1d5Ny91NEVIek80NlRkRlNOak1mbjJpUFNKd0RQQ0ZIYzBJMSt2amRBWnc1WmpxUi91emk5Wm4yMG9BYTVKbkxFay9FQTNWUldFN0ovWHJ1cGZGSlB0Q1V1cUhQcG5sTDdJU0p0UnBTVmNCOHFzWkNtMlFFa1dvUk90Q0tLeFVoM3lFY01iV1lKd2s2RGxFQkcwYlpQNmVnMDZGTDN2NlJQYjdvZEd1d203Rk44Zkc0d29xdEI4ZTdNNWtsUHBvOTdHb09iTnd0K2x1ZFRBbXh5QzVobWNGeCtkSXZFWktJNmlnRktIcUxIMDFpWTFvNzkwM1Z6RzlRR2V0eVZ4NVJObUJZVVUrekl1U3ZhL3lJY0VDVWk0cFJtRTNWa0YyYXZxdWxRRVVZNHlaL3dtTmJvQnpQbUFQZXkzK2RTWXRCWlVqZVdXVDBwUHdDejRWb3p4cDl4ZUNsSVU2MHF2RUZNUUNhUHZQYUE3MFdsT1A5Zi9leTM5bWFjdnBHQ1ZhK3pmYThnTzQ0d2J4cEpVbEM4R04vcFJNVFF0elk4WjgvaGlOclUrWnE2NFpmRkdJa2RqN203YWJjSzFFQnR3czFYNEovaG5xdmFzUHZ2RFNEWVdOK1FjUVZHTXFYYWxrRHRUYWQ1cllZMFRJUjFFcW94M2N6d1BNaktQdkY1c0Z2MTdUaHVqcjFJWjFZdGw0VlgxSjB2alhLbUxZNGxtWGlwUkFybzBxVkdFY1h4RVZNTUVsNTRqUU1kNEo3Umpnb21VMGoxcHRqeXhZK2NMaVN5WFBmaUVjSVMybFdESzNJU0F5NlVaM0hiNXZuUG5jQTk0NDExamN5NzVheTZCNkRTVHpLNlVUQ1pSOXVEQU50UEJydklEZ2pzZmFyTWl3b2F4Mk9sTHhhU29ZbjRpUmdrcEVHcUVrd294NXR5SThhS2tMbGZaMTJsTzExVHhzcVJNWTg5ajVKYU81NVhmUEpQREwxTEdTbkM4OFJlOUFpK051NWJaanR3UnJ2RklUVUZIUFI0Wm14R3NsUU1lY2diWk83bkhrMzJxSHhZa2R2V3B1cDA3b2pjTUNhVnJwRkF5RlpKSmJOdkJwWmZkZjM5SGRvMmtQdFQ3djAvZjhSL0I1Tno0ZjF0OS8zek5NLzduNlNVSGZjV2s1ZGZRRkp2Y0pNZ1BvbEdDcE9GYi9XQzBGR1dVMmFzdVF5VCtybTg4WktaNzhDZWkvQ0FoOTM5Q0gwSllicFpJUHR4YzJ1ZlhxalMzcEhIOWxuV0s0aUo3T2pSL0VFU3BDbzJSM01ZS3lFN3JIZmhUdldobzRjTDFRZE40akZUeVI2c3lNd0ZtMTI0VFZERFJYTU52ZUkxRHAvbnR3ZHo4azhreHc3aUZTeDYrWXg2TysxTHpNVnJOMEJCenppWmk5a25lWlN6Z29sbEJuVndCaDZvU09QSFhyZ2xyT2orUW1SL0FFU3JoRHBLcldUKzgvQWlNRHhTLzV3d1JOdUdRUExsSjlvdm9taEpXbjhzTUxWSXRROE4vN0lYdnREOGtkT29IYXcrdkJTYkZJbVFzdi9PQ0FJdWk5OUUrWVNJT01sTXZCWGtBdCtOQVpLOHdCOUpmOENQdEIrVE9VT1IrejcxZC9BRlhwUEJUNitBNUZManhNakxJRW9KenJRZnF1dnhFSWkrV29VekdSMUl6UUZOdmJZT254YjJQeVEwa0dkeVhLelcyYXhRTDhsTkFYUGs2TkVqcXJSRDFvWnRLTGxGb29mclh3MGRDTldBU0h6eSs3UFN6T1VKM1h0YVBac3hMRGpyK280MWZLdUtXTm1qaVp0ZmtPekl0dmxWMk1ER1NoZUdGMG1hMDRxRTNUVUVmcUpNclhGbTdEcEsrMjdEU3ZDVVZmN3JiTm9salBoaGE1VzdLQnFWcTBTaFVTVGJSbXVxUHRRcmVWV0g0SkVUNXlNaHVxTW9TZDRyL044c0RtZVFpUVF2aTF0Y1p2N01vYzdkVDVYNUF0Q0Q2a05FR1pPelZjTllscFg0QWJUc0xnU1lZbGlpUHlWb25pdVlZeVN4c0J5NWNnYjNwRCtFSzBHcGIwd0pnMDMxZFBnYUw4Slp0NnNJdnpOUEVIZlZQT2pYbWFYajRiZDR2b1h6cFo1R0FwTWhJTGdNYkNFV1oyendnZGVRZ2pOSExiUEl0K0txeFJ3V1BMVE42SHdaME91aWpqNFVGK1NnMEF1OFh1SUtXMFd4bGV4ZHJGckRjWko4U2hhdWF0M1gwWG1IeWdxZ0wxbkF1MmhySkZiNHdaWGtjUytpMzZLTXlVMXlGdll2MjNiUVVKaS8zeVFwcXIvbmFVT29pRVdPeGNreXEvZ3E0M2RGb3UxRFZEYVlNWks5dGhvNytJWFhva0JDczVHUmZPY0JLN2czQStqWFEzOUs0WUE4UEJSVzRtNSt5UjBaQXhXSm5jalJWYklUdklBUEhZUnQxRUozWUxpVWJxSXZvS0h0ekhLdFV5MWRkUlVRMEFVTzQxdm9uWkRVT1crbXJzencrU1cvNlEvSVVnTnBjWEZqa003RjRDU1NRMkV4Wmc4NW90c01zN2txc1FENE94WWVCTkRjU3BpZmpNb0xiN0dFYkdXVHdhc1ZPYm1CL2JmUGNVbHEwd1loWENZRURXUlcwMlRQNWJCcllzS1RHV2puV0RESjFGN3pXYWkwelcvMlhzQ3V2QlFqUEZjVFlhUVgzdFNYUlNtOGhzQW9EZGpBcksvT0ZwNnZjV1lPRTdsaXpQMFljKzhwMTZpNy9OaVhJaWlRVHA3YzdYdXM5MjVWRXRsS0FqVWRGaHlhaUxUN1Z4RGFncHJNRndpeDR3WjA1dTBxajdjRFdGZDBXOU9ZSEl1M0piSktNWFJKMWFZTm92dWdnK1FxUk43Zk5IU2kyNlZTZ0JwbitKZk11UG8zYWVxUFdpay93STVSejNCV2FyUFFYNGk1K2RNMG5wd1ZPc1grS3NPaEM3dkRnK09Kc3o0UTV6bG5JZWZsVVdMNlFZTWJmOVdEZkxtb3NMRjRRZXYzbUppT3VIam9vci9kTWVCcEE5aUtEa01qWUJOYlJvNDE0SEN4anNIckI0RVhOYkh6Tk1ESENMdU5CRzZTZitKNE1aL0VsVnNEU0x4aklpR3NUUGh3OEJQanhiZlF0c2tqK2R5Tk1LT09jVVlJUkJFSXFiYXp6M2xtamxSUWhwbHhxNjczVmtsTU1ZNjU5N3Z1K2Q4OWVjL3pxN01pNGdRdmg4N2VoWWJwT3VaRVhqNWcvUTdTN0JGREFBQjlEekczNVNDODUzeHRXVmNuWlFvSDU0amVPcVlMUjlORHV3eHNWdGhUVjdWOTluL0I3SFNiQXl0YkV5VlR6LzVOaEo4Z0dJakcwRTVqM2dyaVVMVWQ1Umc3dFFSKzkwaEpnTlFLUUgyYnRiU2ZQY2FUT2ZJZXhjMWRiMUJ4VU9oTTF2V0NwTGFZdUtyM0ZkTlR0L1QzUFdDcEVVV0RLRXR6WXJqcHpsTC93cmkzTUlUS3NGdnRGOFFWVi9OaFZvOTdhS0lCZ2RsaU5jMTBkV2RYVkRwVnRzTm4rMlVJb2xyZ3FkV0E0RVk4c28wWXZCNGErYUx6TVhpTUF1T0hRclhZMHRyK0NMMTBKYnZaemdqSkp1QjFjUmtkVDdEVXFUdm5zd1ZVcDVra1VTRlZ0SUlGWUswNSt0UXhUNjk5MkhITldWaFd4VXNEMVBrY2VJcmxYdVVWUm9nd21mZGh5cmY2enphTDgrYzBMN0dYTVpPdGVBaEFWUVZ3ZEpoKzduclg3eDRMYUlJZnoyRjJ2N0RnL3VEZnoyRmErNGdGbTJ6SEFvcjhVcWltSkczVlRKdFpFb0ZYaG5EWVh2eE1KRmM2a3UyYmhiQ3h6aWoyejVVTnVLMGptcDFtbnZrVk5VZlIrU0VtajFMcjk0THltNzVQTzdGczBNSXIzR2RzV1hSWFNmZ0xUVlkwRkxxYmE5N3UxSW44TkFjWTdJQzZUaldMaWd3S0VJbTQzTnhUZGFWVHY5bWNLa3p1ekJrS2Q4eC94dDFwLzlCYlA3V3liNGJwbzFLMWduT3BiTHZLejU4cFdsM0I1NVJKL1o1bVJETFB0TlFnMTRqZE9FczkraC9WNVVWcHdyQUk4a0diWDhLUFZQRElNZklxS0RqSkQ5VXlET1BoalozdkZBeWVjd3lxNGFrVUU5bURPdEpFSzFocER5aTZBZTg3c1dBQ2xYR1Rpd1B3TjdQWFd3anhhUjc5QXJIUklQZVlLVHVuVlcyNHNQci8zSFB6Mkl3SDhvS0g0T2xXRW10NEJMTTZXNWc0a01jWWJMd2oydXNvZEQxMDg4c3RaQTdWT3NVU3BFVmw0dzdOTWIxRVVITVJ4QXhMRjBDSVYrMEwzaVpiK2VrQjF2U0RTRmpBWjNoZkxKZjdnRmFYck9LbittaFIrcld3L2VUWEljQWdsNEh2RnVCZzFMT21PQXdKSDNlb1ZFamp3aGVLQTRpY2JyUUNtdkF0cFEwbVhHMGFnWXA1bWo0UmI2bWRRK1JWNFFCUGJ4TXFoOUM3bzhuUDBXa28yb2NuQ0hlUkdoTjFYVnlUMmI5QUNzTCs2eWxVeSt5QzNRRW5hS1JJSks5MVl0YW9TcmNXWk1Nd3h1TTBFOUo2OForWXlqQTBnOHAxUGZIQUFJUk95NlNhMDRWWE91VDZBMzUxRk9XaEtmVEdzRkozUlRKR1dZUG9MazVGVks0T2FZUjloa0p2ZXp3Rjl2UU4xMTI2cjZpc01HWFdUcUZXKzNITDNJL2p1cmxJZERXSVZ2WVkrczZ5cTdsckZTUEFHUmRuVTdQVndZL1N2V2JaR3BYenkzQlEyTG1BSmxyT05Vc1pzNG9Ha2x5MFYyNjd4YkQ1S01ZOHdvTk5zbVdHMVZWZ0xDcmE4YVFCQmNJNERQMkJsTnd4aGlDdEhsYXo2T1dGb0NXMHZNUjNFcnJHN0p5TWpUU0NudlJjc0VIZ21QbndBNmlOcEoyRHJGYjRnTGxoS0p5WkdhV2tBOTdINkZGZHdFY0xUNkRSUVFMKytmT2tWQzRjWUdXMVRHLzNpSzVkU2hSU3VpQnVsbWlocWdqUjQ1VmkwM28yUmJRYlAzc3h0OTBWeFE2dnpkbEdma1htbUttak9pMDgwSlNIa0xudGp2c0JKbnY3Z0tzY09hVE9rRWFSUXFBbkNBNEhXdEI0WG5NdE9ocFJtSDJGSDh0VFhySWpBR05XRW11ZFFMQ2tjVmxHVFE5NjVLaDBINml4WGJnSW1RUDZiNDJCNDlzTzVDOHBjN2lSbGd5dlNZdmNuSDlGZ1EzYXpMYlFHMmNVVzk2U0RvalRRU3R4a09KeU91REdUSEFubldrejI5YUV3TjlGVDhFSjR5aFhPZytqTFRyQ1BLZUVvSjlhN2xEWE9qRXI4QWdYNEJtbk1RNjY4b1cwellQeVFpVk1QeEtSSHRwZm5FRXlhS2hkek5WVGhseHhEUU5kckhlWmlVRmI2Tm9ZMkt3dlNiN0JuUmNwSnkrL2cvekFZeDNmWVNONVFFYVZEMlkxVnNOV3hCMEJTTzEyTVJzUlk4SkxmQWV6Uk16NWxVUnVMVW5HMVRvS2s2UTMwRnVnaHFXTjZnQk5jRnhQL25ZL2l2K2lhVVFPYSsyTnV5bTQ2d3RJL0R2U2Z6U3AxakVpNFNkWUJFN1loVGlWVjVjWDlnd2JvVkRNVmdacDVZQlFsSE9RdmFETmZjQ29DSnVZaGY1a3o1a3dpSUtQanpncGNSSkhQYk9oSmFqZW9lUkw1M2N1TWFoaFY4WjdJUnI2TTRoVzBKelQ3bXphTVV6UXBtODY2endNN0NzMDdmSllYdVd2akFNa2JlNU82VjRidTcxc09HNkpRNG9MOHpJZVhIaGVGVmF2enhtbEl5QmtnYzlJWmxFRHBsTVByOHhsY3lzczRwVlVkd0sxZTdDSzJrVHNTZHE3ZzVTSFJBbDNwWVVCOUtvNGZzaDRxbGVPeUp2MXozS0ZTVFN2d0VjUk8vRXc4b3pFRFlaU3FwZm9WVzl1aEpmWXJOQVhSMFozVm1lb0FEK3JWV3R3UC8xM3NFLzNJQ1gzSGhERzNDTWM0NzZkRUVDMEszdW1TQUQ0aitaUUxWZEZPc1dMMkMxVEg1KzRLaVNXSCtsTWlibytCNTVoUjNHcTQwRzFuMjVzR2NOMG1FY29VMndOOUZDVnlRTEJoWU91OWFIVkxXakVLeDJKSVVaaTV5U29IVUFJOWI4aEd6YUxNeENaRE1MaHY4TWtjcFRxRXd6OUtGRHBDcHFRaFZtc0dRTjhtMjR3eUI4MkZBS05tamdmS1JzWFJtc1NFU292QXdYakJJb01LU0c1MXA2VW04YjNpN0dJU3M3a2pUcS9QWm9pb0NmSnpmS2RKVE4wUTQ1a1FFUXVoOUg4OE0zeUVzM0RidFJUS0FMcmFNMFlDOGxhaU1pT09lNkFEbVRjQ2lSRWVBV1plbEJhRVhSYVN1ajJseDB4SGFSWXFGNjVPMExvNU9DRlUxOEE4Y01ERTRNTFltOXcyUVNyOU5nUUFJY1J4WnNOcEE3VUpSMGU3MUpMK1ZVK0lTV0ZrNUk5N2xyYTh1R2c3R2xRWWhHZDRHYzZyeHNMRlJpSWVHTzRhYlA0UzRla1ExZmlxREN5ODdHWkhkNTJmbjVhYURHdXZPbUlvZnJ6cFZ3TXZ0YnJlWi84NTVPYVhUUmNOaU5FMHd6R1pTeGJqZzI2djhrbzhMNTM3di9YQ0NXUDJNRmFBckpwdm5rZXAwcEErTzg2TVdqUkFaUFFSZnpuWmlTSWFUcHB5Nm0zcDZIck5Tc1k3ZkR0ejdDbDRWL0RKQWpRRG95aUwydXdmMVVIVmQyQUlyekJVU2xKYVRqNGs2Tkw5N2EvR3FoV0tVOVJVbWpuWUtwbTJyK0pZVWNya0N1Wkt2Y1l2cmc4cERvVUtReXdZOUdEV2cwM0RVRlNpcmxVWEJTNVNXbi9LQW50bmYwSWRIR0wvN213WHFERytMWllqYkVkUW1xVXFxNHk1NFRObVdVUDdJZ2NBdzU4MTZZQnp3aU5JSmlFOU00bFBDemVJL0ZHQmVZeTNwNklBbUg0QWpYWG12UTRJeTBZODJOVG9iY0FnZ1QyQ2RxejZNeDRUZEdvcTlmbjJldHJXS1VORnlhdEFIeWRRVFZVUTJTNU9XVlVsdWdjTnZvVXJsQThjSkp6OU1xT2EvVzNpVm5vNHpESGZFN3pob1k1ZjVsUlRWWkRoclFiUjhMUzRlUkx6OGlQTXlCTDZvNFBpTGxwODlGamRva1FMYVNCbUtIVXdXcDBuYTVmRTN2OXpueTJZY0RYRy9qZkk5c2N0dWxIUmJka0k1YTRHT1BKeDRvQUpRelZaL3lZQWFkbzhLTlpVZEVGczlaUGlCc2F1c290WE1OZWJFZ3IwZHlvcHVxZlNjRkozT0ROUEhnY2xBQ1BkY2N3djBZSkdRZHNOMmxob1Y0SFZHQnhjRVVlVVgvYWxyNG5xcGNjMUNDUjN2UjdnNDB6dGVRZy9KdldtRmxVRTRtQWlUcEhsWUdyQjd3K1UyS2RTd1F6MlFKS0JlLzVlaWl4V2lwbWZQMTVBRldySzhTaDFHQkJZTGd6a2kxd1RNaEdRbWFnWHFKMitGdXFKOGYwWHpYQ1ZKRkhRZE1Bdzh4Y28xMUhoTTM0N2FsckF1K3dtWDNwREZBQk92a0MrV1BYMFVoZzFaNU1WSEtOUk94YVI4NFlWM3MxMlVjTSs3MGNKNDYwU3pFYUtMeWg0NzJ2T01EM1huYUs3enhaY1hsV3FlbkV2Y2ptZ0dOUjJPS2JJMXM4VStpd2lXK0hvdEhhbHAzZTFNR0R5NkJNVkl2YWpuQXprRkhiZVZzZ2ptSlVrclA5T0F3bkVIWVhWQnFZeDNxN0x2WGpvVlIwbVk4aCtaYU9uaDA1M3Bkc0drbWJxaHlyeU4wMWVWSHlTcitDa0RZa1NNZVoxeGpQTlZNK2dWTFRES3UyVkdzTVVKcVdPNFR3UERQMFZPZzIvOElUYkFVYU1HYjRMakw3TCtQaTExbEVWTVhUWUlsQVovUUhtVEVOanl4M2tEa0JkZmN2dlF0NnRLazZqWUZNNEVHNVVYRFRhRjUrMVpqUno2VzdNZEpQQyt3VGtiRFVpbTRwNVFRSDNiOWtHazJCa2lseWV1cjhCYzIwd201dUpTQk85NUdmWURJMUVaaXBvUmFIN3VWdmVuZXF6NDN0bFRaR1JRNGE3Q05tTUhnWHlPUVFPTDZXUWtnTVVUUURUOHZoMjFhU2R6N0VSaVpUMWpLOUYrdjZ3Z0Z2dUVtR25nU3ZJVVIyQ0prYzV0eDFReWdmWm5BcnVPTm9iQjFpZENMQjFGQ2ZPN04xWmRSb2NUOC9XeWUrRW5EaU85cHpxSXBuTERsNGJrYVJLVytla0JWd0huNDZTaHcxWDB0Y2x0LzBST2lqdVVCNGtJSW5yVkpVNGJ1V2Y0WUlUSnRqT0o2aUtkcjF1K2ZsZ1FlRkg3MEd4S2poZGd0L01yd2ZCNEsvc1hjelErOXpZY3JENGRoWTZxWmhaMDEwcnJ4Z2dXQThKYVp5ZzJwWWlqOGllWUVnMWFaSmtaSzlPMVJlN3NCMGlvdWY2MHJLMEdkK0FZbHA3c29xQ0JDREd3ZktlVVFoQ0JuMEUwbzBHUzZQZG1qTGkwVHRDWVplcWF6cXdOK3lOSU5JQThMazNpUERuV1VpSVBMR05jSG1aRHhmZUswaUFkeG0vVDdMbk4rZ2VtUkw2MWhISWMwTkNBWmFpWUpSK09IbkxXU2U4c0xySzkwNUI1ZUVKSE5sV3E0Um1FWElhRlRtbzQ5Zjh3NjErTndmRVV5dUpBd1ZxWkNMRmN5SEJLQWNJVmozc056ZkVPWHpWS0luZHhIdytBUjkzb3doYkN4VVpmNkdzOGN6Ni8xVmRyRkVQcnYzMzArOXM2QnRNVlBKM3psL1VmOXJVaTBaL29wZXhmZEwzeWtGNzZlOTk5R1BmVnY4Zkp2L1kvKy81aEVNb24xdHFORnlWUmV2Vjl5OS91SXZzRzNkYkI4R1JScmdhRVhmaHgrMnhlT0Z0K2NFbjNSWmFuTnhkRWUyK0I2TUhwTmJyUkU1M1BsRGlmUHZGY3A0a083OElMUjBUNHh5Vy9XR1B5QnNxR2RvQTd6SkpDdTFUS2JHZmhucWduUmJ4YkIyQjNVWm9lUTJiejJzVFZuVXdva1RjVFUyMVJ4TjFQWVBTM1NhcjdUMGVSSXN5Q05vd3I5YW13b01VL29kOXMyQVB0aUtOTDZFTk9seUtBRHN0QUVXS0Erc2RLRGhySjZCT2hSSm1aK1FKYkFhWjMvNUZxMC9sdW1DZ0V6R0VidTN5aTBZNEk0RWdWQWpxeGg0SGJ1UW4wR3JSaE9XeUFmc2dsUUpBVkwxeS82eWV6UzJrOFJFMk1zdEpMaDkyTk9CM0dDWWdGWHpuRjRkMjVxaVA0WkN5STRSWUdlc3V0NkZYSzZHd1BwS0s4V0hFa2hZdWkwQXlFbXI1TWwzdUJGdFBGZG5pb0k4UmlDb29hN1oxRzFXdXlJaTNuU05nbHV0Yyt4WThCa2VXM0pKWFBLNmpkMlZJTXBhU3hwVnRGcStSK3lTSzlKNldHNVF2dCtDK1FIMWh5WVVPVks3ODU3bkZteURCWWdaL28rQW5pYnpOVnF5WUNKUXZ5RFhEVEsraVhka0E3MWJZN1RMM2J2dUx4TEJROGtiVHZURVk5YXFrUTMrTWlMV2JFZ2pMek9IK2xYZ2NvMUVSZ3pkODByREN5bWxwYVJRYk9ZbktHL09Eb0ZsNDZselQwY2pNNUZZVnZ2MHFMVWJENWx5SnRNVWFDMXBGbFRrTk9OeDZsbGlhWDlvMGkvMXZ3czViTktuNU91RU5RRUttTGxjUDRvMlptSmpENHp6ZDNGazMydVE0dVJXa1BTVXFiNExCZTNFWEhkT1JOQjJCV3N3czVkYVJuTWZOVlg3aXNQU2IxaE1RZEFKaTEvcW1ETWZSVWxDVTc0cG1uempiWGZMOFBWRzhOc1c2SVFNMk5lMjNpQ1BJcHJ5SmpZYlZubTVoQ3ZLcE1hN0hMVmlOaU5jK3hUZkRJYUttM2pjdFZpRDhBMU05WVBKTmswMDNWVnI0Wm8yTXVHVzh2aWw4U0xhR3BQWHFHN0k0RExkdGw4YTRSYngxTHQ0dzVIdXFhYTFYelpCdGoyMDhFSlZHY21LWUV1YWVOMjd6VDlFRTZhMDlKZXJYZEVicGFOZ05xWUpkaFAxTmRxaVBLc2JEUlVpODZYdnZOQzdyTUU1bXJTUXRyekFaVm5kdFNqQ01xZDhCbWFlR1I0bDRZRlVMR1JCZVhJVjlZNHl4TEZkeW9VTnBpeTJJaGVQU1d6Qm9mWVBQMGVJYTJxNUpQNGo5RzhhdC9BcW9Tc0xBVXVSWHR2Z3NxWC96WXdzRStvZjZvU0RiVU9vNFJNSncrRE9VVEpxK2hucXdLaW05WXkvbmFweVpOVGMyckNxNlY5akh0SmJ4R1BEd2x6V2ovU2szekYvQkhPbFQvZlNqU3E3RnFsUEkxcTZKK3J1OEFrdTAwOFNGSU5YWmZPZm5aTk92R1BNdEVtbjJnTFB0K0g0UUxBKy9TWWU0ajM5OGF1emhLSXAyUG9rM21QQzVxMUlOMUhnUittbkVmYzROZWVIWXdkMi9rcHN6UjNjQm43bmk5TmJJcWh0U1dGVzh4YlVKdVVQVk9lZVh1M2owSUdabUZOaXdhTlo2ckg0L3pRMk9EejZ0RnhSTHNVWVp1MWJmZDF1SXZmUUR0NFlEL2VmS1l2OFZGOGJIR0RnSzIydzJXcXdwaTQzdk5DT1hGSlpDR01xV2lQYkw4bWlsNnRzbU9UWEFXQ3lNQ3c3M2UyckFEWmoySUs2cnFrc00zRVhGMmNiTGI0dmpCMTR3YS95WEs1dndVKzA1TXpFUko1blhzWHNXMjFvN00rZ08wanMyT3lLY2lQNXVGMmlYeWIyRGlwdHdRZUhlcXlna3JOc3FWQ1NsbGR4Qk1wd0hpMXZmYzhSS3BQLzRMM0xtcHE2RFpjdmhERGZ4VENFM3NwbGFjVGNPdFhkSzJnMzAzZElXQlZlMndEL0d2amExY0NsRlE2N2d3MHQxWlV0dHNVZ1ExVmVreThvT3BTNmtzWUVjNGJxc2VDYlp5NzY2U3ZMM0ZvZG1uYWhsV0pSZ1ZDTmpQeGhML2ZrMnd5dmxLaElUSC9WUUNpcE9JMGROY1JhNUIxTTVIbU9CalRMZVpRSnkyMzdlMm1vYndtRHlKTkhlUGhkRG1pa252TEthRGJTaEwrSXMxWFRDSnVMUWQyd21kSkw3K21LdnMyOTR3aFhRRCt2dGQ4OEtLazBEWFA4QjFYdTlKK3hvNjlWT3VGZ2V4Z1RyY3ZJNlN5bHR1TGl4OU9QdUU2L2lSSllvQk1FWHhVNHNoUU1mNEZqcXdmMVB0bkovd1dTWmQyOXJoWmpSbVRHZ2lHVEFVUXFSeituQ2RqZU1mWWhzQkQ1THY2MEtJTFdFdk5FSGZtc0RzMkwwQTI1MjM1MWVVb1l4QXlzVmFDSlZMZEg5UUZXQW1xSkRDT0RVY2RvbzEyK2dkNmJXMmJvWTBwQlZIV0w2TFFESzViWVdoMVY4dkZ2aTBjUnBmd3Y3Y0ppTVgzQVpOSnVUZGRIZWhUSWRVMFlRL3NRMWRMb0YyeFFQY0N1SEtpdUNXT1kzMERIZTFPd2NDbExBaHFBS3lxbG5JYkgvOHU5U2NKcGNTNGtncDZIS0RVZGlPZ1JhUkdTaVVDUkJqekk1Z1Nrc01aS3F5N1NkNTFhZWcwdGdKK3gwVEg5WUgyTWdzYXA5TjdFTlpkRUIwYmV5MkRNVHJCQTFobjU2U0VyTkhmM3RLdHF5TDliNnlYRVA5Ny9yYytqZ0QyTjFMTlVINlJNOUF6UDNrU2lwcjA2UmtLT29sUjdITzc2OGpqV2lIMVg5MmpBN2RrZzdnY05janFzWkNnZnFXdzB0UFhkTGcyMGNGNnZuUXlwZzdnTHRrYXpySEFvZHlZZkVOUFFac2RmbmpNWmlOdTRuSk85N0QxL3NRRSszdk5GenJTRE9LdytrZUxFQ1lmN1JKd1ZIZVAvajc5ODMzb1owZWdvbllCMkZsRkU1cWowMkIvTFZPTUpRbHNCOHVOZzNMZWc0cXRad250c09TTmlkUjBhYmJabUFLNHNDenZ0OFlpdXoyeXJOQ0pvSDVPOFh2WC92TGVSL0JCWVRXajBzT1BZTS9qeXhSZDUrL0p6aUtBQUJhUGN3LzM0VUEzYWovZ0xaeFpnUkNXTjZtNG0zZGVtYW5OZ3N4MFAyMzcvUStFdzVWWW5KUGt5Q1kwY0lWSG9GbjJBeS9lN1U0UDE5QVBiUEZYRUhYOTRONktoRU1QRzdpd0IzK0krTzFqZDVuNlZTZ0hlZ3hnYVNhd082aVFDWUZnRHNQU01zTk9jVWo0cTNzRjZLekdhSC8wdTVQUW9Bai84enE2VWM5TW9OckdxaFllYjJqUW8wV2xHbFhqeHRhblpMUzI0L09JTjVHeC8yZzY4NEJQRFFwd2xxbmtGY3hwbVAvb3NuT1hyRnV1NFBxaWZvdVFIMGVGNXFDa3ZJVFFiSncvWnZ5NW1BSFdDOW9VK2NUaVloSm1TZktzQ3l0MWNHVnhpc0t1K055bUVRSUF5YUNndWQvVjA5cVQzbmsvOXMvU1dzWXRoYTd5TnB6QklNTTQwckNTR2FKOXU2bEVrbDAwdlhCaUV0N3A5UDVJQkNpYXZ5bkVPdjdGZ0xxUGRlcXhSaUN3dUZWTW9sU0lVQmNveWZVQzJlMkZKU0FVZ1lkVkdGZjBiMEtuMkVabEs5N3l5eHJUMk1WZ3Z0UmlrZmRhQVc4UndFRWZOK0I3L2VLOGJCZHA3VVJwYnFuMXhjckM2ZDJVamRzS2J6Q2pCRnFrS2tvWnQ3TXJoZzZZYWdFN3Nwa3FqMGpPcldNK1VHUTBNVWxHMmV2UDF1RTFwMnhTdjRkTUswZG5hNkVOY05VRit4a2FKN0I3NjROZHhMQ3B1dmhibGx0VlJBZjd2SzVxUHR0Si85UllGVVVTR2NMZGlibno2bWY3V2tQTzNNa1VVaFIybUFPdUd2OElXdzVYRzFadm9WTW5qU0FaZTZUN1dZQTk5R0VOeG9Ia01pS3hIbEN1SzVHZDBJTnJJU0ltSFFyUW12NkY0bXFVL1RUUThuSE1EekNSaXZLeVNROGRxa3BRZ25VTW53SWthQXVjNi9GR3ExaHczYjJTYmEzOThCaFV3VVpTQUlPOFhadm51TGRZMm42aE9Yd3MrZ3E5QkhVS2NLRkE2a3o2RkRucHhMUElDYTNxR2huYzk3Ym8xRlQvWEprNDhMcmtISjJDQXRCdjBSdE45N04yMXBsZnBYSHZaOGdNSmI3WmM0Y2ZJNk1iUHdzVzdBaWxDU1hNRklFVUVtaXI4WExFa2xBMHp0WWJHcFRUR3F0dHA1aHBGVFRJcVV5YUFJcXZNVDlBL3grSmk1ZWpBNEJoeGIvY2wxcFVkT0Q2ZXBkM3lpbElkTzZqMjk3eElub2lCUHVFRFcyL1Vmc2xEeWhHa1FzN1d5MjUzYlZubFQrU1dnODl6WUlLLzlLWEZsNWZlK2pvdzJyZDVGWHY4ekRQcm1mTVhpVVB0OVFCTy9pSzRRR2JYNWovN1J4MWMxdnpzWThPTmJQM2xWSWFQcmhMNCsxUXJFQ1ROM255S2F2R0cwZ0JCdEh2VEtoR29CSGdNWEhTdEZvd04rSEtyUHJpWXUrT1owNUZybjhva1FyUGFheG9LUDFVTENTL2NtS0ZOM2djSDdIUWxWanJhQ2VRbXRqZzFwU1F4ZXVxWGlTS2dMcHhjLzFPaVpzVTQrbjRsejRocGFoR3lXQlVSTGk0NjQybjFnbjlxejliSXNhQ2VFUEowdUptZW5NV3AydEptSXdMUTZWU2dEWUVyT2VCQ2ZTajlQNEcvdkk3b0lGK2wvbjVmcDk1NlFneEd2dXI3N3luYXdBdTNHOU1kRmJKYnU0OU5abldubkZjUUhqeFJ1aFVZdmcxVS9lODRONEpUZWNjaURBS2IvS1lJRlh6bG95dUUxZVlYZjU0TW1oalRxN0IveUJUb0R6enB4M3RKQ1RvM0hDbVZQWWZtdEJSZTNtUFlFRS82UmxUSXhiZjRmU09jYUtGR2s0Z2JhVVdlNDRoVms5U1p6aFc4MHlmVzVRV0JIeG10VXp2TWhmVlFsaTRnWlRrdElPWmQ5bWpKNWhzYm16dHRhSFFCMjlBbTNkWmtteDNnL3F2WW9jeWhaMlBYQVdzTlFpSWFmK1E4Vy9NV1BJSzcvVGp2Q3g1cTJYUnA0bFZXeWRNYzJ3SVFraGFkREIweHNudy9rU0V5R2pMS2pJNGNvVkl3dHViVEYzRTdNSjZMUzZVT3NKS2o4MlhWQVZQSkpjZXBmZXdiekU5MWl2WFp2T3ZZZnNtTWV2d3RQcGZNekdtQzdXSmx5VzJqMGpoN0FGMUpMbXdFSlNLWXdJdnU2REhjM1lueUxIOVpkSUJuUStuT1ZEUmlQK1JFcHF2Kyt0eXBZSEl2b0p5SUNHQTQwZDhiUjdIUjJrN2RvNlVRVEhGNG9yaVllSVFieEtlNFRoNisvbDFCalV0UzlocU9SaDNNYmd2WXJTdFhUZlN3YUJPbUFWUVp6cFlOcXNBbVF5alk1Nk1VcXR5M2MveEg2R3VoTnZOYUc5dkdiRzZjUHRCTThVQTNlOHI1MUQwQVI5a296S3VHR1NNZ0x6M25BSHhETm5jN0dUd3BMajcvNkhlV3AxaWtzRGVUandDTHB4ZWp1TXRwTW5HSmdzaWt1MXNPQUN3UTl1a3pFU2lEUk43N1lORVN4UjVMcGhPbGNBU1hBNXVJdHMxTG5CSWNuMUo3QkxXczQ5RE1BTFNudXo5NWdkT3JUWnIwdTFTZVlIaW5uby9wRTU4eFlvWGJWTy9TK0ZFTU1zNXF5V2tNbnA4UTNDbHlUbFpQNTJZOW5xN2I4ZklUUHVWWFVrOW9oRzVFRkh3NGdBRWNqRnhmS2IzeHVBc0VqeDJ6MXd4TmJTWk1jZ1M5R0t5VzNSNkt3Sk9OZ3RBNjRMVHl4V204QnZ1ZHAwTTFGZEpQRUdvcE00RnZnN0cvaHNwdGtoQ2ZIRmVndjRFTnd4UGVYbVloeHdaeTdqcytCZU0yN3Q5T0RCTXluVkNMSjdSV2NCTXRlWkp0dmpPWUhiNWxPbkNMWVdORU1LQzU5QkE3Y292dTFjQU5hMlBYTDA1aUdkdWZPemtnRnFxSEJPcmdRVlVtTEVjK01rejRScThPNldrTnI3YXROa0g0TThkK1NEMXQvdFN6dDNvRnFsK25lVnMrQXdFSTVKYUJKYXhBUnRZMlo0bUtvVXF4ZHM0VXBaMHN2M3pJYk5vbzBKNGZpaGxkUVRYM1hOY3VOY1ptY3JCNUxUV01kemVSdUF0QmszY1pIWVFGNmdUaTNQTnVESjBubVIrNExQTG9IdnhRSXhSZ0o5aU5OWHFmMlNZSmhjdkN0SmlWV284NVRzeUZPdXE3RXlCUEpyQWRoRWdFMGNUcTE2RlFYaFlQSkZxU2ZpVm4wSVFuUE95MExiVTRCZUc5NFFqZFlOQjBDaVEzUWF4UXFEMmViU01pTmphVmF3OFdhTTRaNVduemNWRHNyNGVHd2VTTGEyREUzQldWaWF4aFpGSWNTVGpneE5DQWZlbGcraHpuVk9Zb2U1VnFUWXMxZzdXdGZUbTNlNC9XZHVDNnArcXFBTThINFp5ckpDR3Bld1RoVERQZTZIN0N6WC96UThUbStyNjVIZVpuK01zbXhVY2lFV1BsQVZhSy9WQmFRQldmb0cvYVJML2pTWklRZmVwLzg5R2phc1dtYmFXemVFWjJSMUZPanZ5SlQzN085QjgwNDZTUlNLVkVuWFdsQnFia2I1WENTM3FGZXVFOXhiOStmckVrbnhXQjVoMUQvaHJ1ejJpVkRFQVM3K3FrRXo1T3Q1YWdISmM3V0NkWTk0V3M2MXNVUmNYNW5HOFVFTEdCQUhaM2krM1Z1bEF5VDBuS05OejRLMkxCSEJXSmNUQlgxd3pmKy8vdS9qLzkrLy92ODcrOS9sOUxiaC9ML3V5TllpVHNXVjJMd3NqYUE2TXhUdXpGTXFteFc4SncvK0lwcGRYOHQvQ2xnaTFySTFTTjBVQy9yNnRYLzRsVWMyVlYxT1FSZVNlQ3NqVXBLWmNodzRYVWNqSGZ3NnJ5Q1YzUjhzNlZYbTY3dnA0bitsY1BWOWdKd21iS1FFc21ySmk5YzJ2a3dybThIRmJWWU5UYVJHcThEOTF0OW41K1UrYUQvaE50TjNIakMvbkMvdlVvR0ZTQ2tYUCtObFJjbUxVcUxiaVVCbDRMWWYxVS9DQ3Z3dGQzcnlDSDhnVW1HSVRBeGlIMU81cm5HVHo3eTFMdUZqbW5GR1ExVVd1TTdId2ZYdFdsMmZQRktrbFl3TlVwRjJJTC9UbWFSRVRqUWlNNVNKYWNJKzNHdjVNQlU4bFA1SW82Z1drYXdweXpORVZHcU9keDRZbE8xZEN2amJXRlpXYkNtZWlGS1BTbE1LdEtjTUZMcy9LUXh0Z0FIaTdOWk5DUTMyYkJBVzJtYkhmbFZaOHdYS2kxSktWSGtXMjBibllubDNkS1dKZVdKT2lYM29LUEJENlpiaTBadlNJdVdrdFVIQjhxRFI4RE1NaDFaZmtCTDlGUzl4NXIwaEJHTEo4cFVDSnYzTllIK0FlOHA0MG1aV2Q1bTVmaG9iRmpRZVF2cVRUNFZLV0lZZlJMMHRmYVhLaVZsNzVoSFJldVRKRWNxVmx1ZytlT0lJYzRiZEl5ZHRuMkswaU5aUHNZV1F2UWlvMnFiTzNPcUFsUEhERE9CN0RmakdFZlZGNTFGcXFOYWNkNlFtZ0ZLSnBNZkxwNURIVHY0d1hsT05LVlhGOXpUSnBEVjRtMXNZWnFKUGhvdGNzbGlaTTh5a3NLa0NrenBpWHQrRWNSUXZTUXFtQlM5V2RXa3hNVEpYUFN3OTRqcUkzdmFyQ2pReFRhempsTUg4alRTOGlsYVc4MDE0L3Z3QS9MTmErWWlGb3l5eDNzL0tzd1AzTzhRVzFqdHE0NXlUTS9EWDlhOE00dm9UVmFPMmVidncxRW9vRHcveWc2WTFmYVkrV3dyZFZzNVl0MGhRNUV3UmZZWFNGeHJheTFZdlNNK2tZbWxwTEcyLzltbTFNZm1iS0hYcjQ0SWg4blZLYjFNNTM3WkFOVWtDdGRzUFo4MEpWS1ZLYWJWSENhZGFMWGcrSVY4aTVHU3dwWnRpMGg2ZGlUYUtzOXNkcFVLRXBkN2pEVXBZbUh0aVgzM1NLaU8zdHV5ZGtheEE3cEVjOVhJUUVPZldKbHN6ajVZcEw1YktlUXlUN2FaU0JPYW12U0hsOHhzV3ZnbzI2SVAvYnFrKzBFSlV6K2dra2N2bFVseVBwMmtkS0Z0dDd5NWFDZGtzOVpKSmNGcDVaV2VhV0tndG5YTU4zT1J3R0xCRTBQdGtFSWVrNUZZMmFWc3NVWkh0c1dJdm5sak1WSnR1VklqcFp1cC81VkwxeVBPSFdXSGtPTWM2WXlTV01ja2N6RDVqVWoybWxMVnF1RmFNVThsZUdWYXFlWGlzK2FSUkw4em00V3VCazZjeVdmR014Z3RyOHVzZVFFeDdrL1B2Um9aeWQ5bmRlMUdVQ1Y4NGdNWDhPZ3UvQldlellQU1IyN2xselFuQTk3b28wcFl5eG9iWVVKZnNqK3lzVG05ekorUzRwazBUR285VlRHMEtqcVloVG1BTGZvRFpWS2xhMmI1eWh2MjQxUHhGYUxKczNpMDVLMEFBSWRjR3hDSlptVDNaZFQ3Q2xpUjdxK2t1cjdXZFFqeWdZdE9XUkw5QjhFNHM0TEk4S3BBajdiRTBkZzdETE9hWCtNR2VBaTBoTU1TU1daRXorUnVkWGJaQ3NHWVMwUXFpWGpIOVhRYmQ4c0NCK25JVlRxNy9UL0ZEUyt6V1k5cTdaMmZkcTF0ZExiNnYzaEtLVkRBdzVnamo2bzlyMXdIRlJPZEhjMThNSnA0U0oyVWN2dStpUTlFZ2tla1c4VkNNK3BzTTZ5Ky8yU0J5OHROTjRhM0wxTXpQK09Mc3l2RVNvNWdTN0lRT25JcU1tdmlKQlZjNnpiVkcxbjhlWGlBM2o0NmttdnZ0Smxld3dORHJ4azRTYkpPdFAvVFYvbElWSzl1ZVNoTmJiTUhmd25MVExMaGJadU83OWVjNVh2ZmdSd0xGSyt3MXI1WldXMTVyVkZackUrd0txTlJ2NUtxc0xOZnBHZ25vVVU2WTcxTnhFbU43TXlxd3FBUXFvSVVMT3cvTGJ1VUIyK3VFNzVnSnQra3ExcVk0TG94VitxUi96YWx1cGVhM0Q1K1dNZWFSSW4wc0FJNkREV0RoMTU4ZnFVYjRZaEF4aFJFYlVOMHF5eUpZa0JVNFYyS0FSWERUNjVnVzNnUnNpdjd4U1BZRUtMd3pncmlXY1dnUHIwc2JabnY3bTFYSE5GVzZ4UGRHTlpVZHhGaVVZbG1YTmpEVld1dTdMQ2tYL25Wa3JYYUpoaVlrdEJJU0MyeGdCWFFuTkVQK2NwdFdsMWVHNjJhN0NQWHJucmtUUTVCUUFTYkVxVVpXTURpWlVpc0t5SERlTEZPYUpJTFVvNWY2aUR0NFpPOE1scWFLTHRvMEFtVEhWVmJrR3V5UGExUi95d1pzV1JvUkRvUmROTU1Id1lUc2tsTVZubEFkMlMwMjgyYmdNSThmaUpwRGg2OU9TTDZLM3FibzIwS2ZwTk11cm5ZR1FTci9zdEZxWjdoWXN4S2xMbktBS2hzbUI4QUlwRVE0YmQvTnJUTFRYZWZzRTZDaFJtS1dqWEtWZ3BHb1BzOEdBaWNnS1Z3NEswcWdEZ3kxQTZoRnExV1JhdDNmSEYrRmtVK2I2SDROV3BPVTNLWFR4ckliMnFTSEFiK3FobThoaVNST2kvOW9mYXBqeGh5S3h4bnRQcGdlNktMNVo0K1dCTVlrQWNFNiswSGQzWWgyekJzSzJNVjNpVzBZNmN2T0Nyb1hsUmIyTU1KdGRXeCszZGtGekdoMlBlM0RaOVFwU3FwYVIvckUxSW1PckhxWVl5Y2NwaUxDMjJhbUpJalJXVkFoZXJUZnBRTG1vNi9LMnBuYTg1R3JEdVFQbEgxVHNhcjhpc0FKYlhMYWZTd09vZjRnZzlSa0FHbS9vWXBCUVFpUFVveURrMkJDUTFrK0tJTHE0OEVyRm80V1NSaEhMcS95N21ndzMrTDg1UHBQNnhXcjZjZ3A5c09qWWpLYWdPcnhGMTQ4dWh1YVd0amV0OTUzZmgxSVFpRXpnQytkMklnQkNjVVpxZ1RBSUNtMmJSOG9DakRMQnNtZytUaHloZkQrekJhbHNLQlkxQ2U1NFkvdDljd2ZiTHU5U0Z3RWdwaGZvcE5BM3lOeGd5RGFmVU0zbVlUb3ZaTmdQR2RkNFpGRk9qMXZ0ZkZXM3U3TitpSEVOMUhrZWVzRE1YS1B5b0NEQ0dWTW80R0NDRDZQQmhRM2RSWklIeTBZLzNNYUU1elU5bVRDcnd3blpvanRFK3FOcE1Ta0pTcG1HZTBFekx5RmVsTUpxaGZGUTdhNTB1WHhaOHBDYzJ3eHRBS1dnSG9lYW1SMk83UiticTdJYlBZSXRPMGVzZFJnb1RhWTM4aFpMSjV5MDJvSVZ3b1Bva0dJenhBTUR1YW5RMXZuMldEUTAwUmg2bzVRT2FDUnU5OWZ3RGJRY04wWEF1cWtGcHhUL2NmejNzbEdSVm9rck5VMGlxaU1BSkZFYktTY1pkbVNrVFV6bkMwVStNZndGT0dkTGdzZXdSeVBLd0JaWVNteTZVMzI1aVVoQlFOeGJBQzNGTEtEVjlWU091UXBPT3VrSi9HQW11L3R5RWJYOURnRXA2ZHYxem9VMElxenBHNmdzc1NqSVlSVlBHZ1UxUUFRWVJnSVQ4Z0VWMEVYcjFzcWVoMkk2clhqdG1vQ1l5RURDZS9Qa0ZFaS9RNDhGdVQyOXA1NTdpTitMQ3drNUNLL0NaMldkQWRmUVpoMlo5UUdyelBMU05SajVpZ1VXemw5VmkwckNxSDhHMUtwNFFNTGt1d01DQXlwZHZpRFh5T0lrMEFIVE04SEJZS2gzYjAvRitEeG9OajRaZG9aZkNwUVZkblphcnFvTWFIV25NTE5WY3lldnl0R3NyWFFFb0lidWJxV1lObzdOUkh6ZGMwenZUMjFmV1Zpcmo3ZzM2aXk2cHhvZ2Z2Z0hwMXhIMVR1cmJ6OFF5eUhuWGVCSmljcFlVY3RiekFwd3paMUhUK0ZQRVhNQWdVWmV0Z2VHTXd0NEcrREhpRFQyTHUrUFQyMWZqSkNBZlYxNmEvV3UxUHFPa1VIU1RLWWhXVzZQaGhIVWxOdFd6Rm5BN01iWStyNjR2a3dkcGZOQjJKZldnV1hBdmt6ZDQySzRsTjl4N1dyZzRrSUtnWENiNG1jVzU5NU1DUEovY1RmUEFNUU1GV3ducXdkZTR3OEhaWUpGcFF3Y1NNaGpWejRCOHA2bmNTQ04xWDRrbHhvSUg0Qk4ySjZ0YUJNajZsSGtBT3M4SkpBbVhxNXhzUXRyUElQSUlwL0hHNmkyMXhNR2NGZ3FEWFNSRjB4UWcxNGQydXk2SGdLRTEzTFN2UWU1Mm9TaEY1SngxUjZhdnlMNHRoaFhRWkhmQzk0b1p6dVBVQktGWWYxVnZEYXhJcnRWNmROR1N4N0RPMGkxcDZDekJrdUFtRXF5V2NlUVk3RjkrVTBPYllEem9hMWlLYW8vY09EL3Y2UTlnSHJycjF1Q2VPazhmU1Q5TUcyM1VsMEttTTNyK1duNkhpNldBY0w3Z0VlYXlraWN2Z2p6a2pTd0ZzQVhJUjgxWng0UUo2b29zVnlKa0NjVCs0eEFsZENjaWhxdlRmOTRISFVQWFlwM1JFSWFSNGRocFFGNitGSzFIMGk5aTdQdmg4b3d1M2xPNFBUMWl1cXUrRGtMMkJqOStrZGZHQWcyVFh3MDNpTkh5b2J4b2ZMRTJpYmpzWURQZ2VFUWxSTVI3YWZYYlNHUWNuUGpJMkQrc2R0bXVRNzcxZGJBU1VzRG5kVTd0NThqcnJOR1J6SVN2d2lvQWxIczVGQStjQkU1Q2N6bmtkOE5NVjZCUjZrc25LTFBabk1VYXdSRFUxTVovaWIzeENka1RibEhLdTRibE5peWxINW4yMTN5TTB6dWJFaWUwbzRKaHpjZkF5M0g1cWgybDE3dUxvb0JOTGFPK2d6b25USDJ1RjhQUXU5RXlIK3BqR3NBQ1RNeTRjSHpzUGR5bVVTWFlKT01QM3lUa1hxdk8vbHB2dDBjWDVla0RFdTlQVWZCZVpPRGtGdUFqWENhR2RpNmV3NHF4SjhQbUZmd21QcGtnUWpRbFdxb21GWTZVa2ptY25BdEpHNzVFVlIrTnB6R3BQMUVmNXFVVWJmb3dyQzN6Y1NMWDNCeGdXRWdFeC92OWNQOEg4dTFNdnQ5L3JNRFlmNnNqd1UxeFNPUEJnekZFZUpMTVJWRnRLbzVRSHNVWVQ4WlJMQ2FoMjc1OTlFdXFvQzlQWWpZTzZhb0FNSEI4WDFPSHdFQVlvdUhmSEIzbnliMkIrU25aeE0vdncvYkN0T1JqTE1TeTVhWm9FcHZnZEd2bEpmTlBGVXUvcDdaNFZWSzFoaUkwL1VUdUIzWlBxNG9oRWJtN01udGdjMWV2RXRrbmFvc2daU3duREMyQmRNbWlicGVnNDhYOEl4bCsvOCt4WGRic2hRWFVQUHZ4OGpUM2ZrRUxpdkhTbXFiaGJsZk5GU2hXQXlRbkozV0JVNlNNWVNJcFREbUhqZExWQWRsQURkejlnQ3BsWnc2bVRpSHFEd0lzeGJtOUVyR3VzaVZwZzJ3OFEza2hLVi9SOU9qOFBGZUY0M2htVy9uU2Q5OW5aemh5akNYM1FPWmtrQjZCc0g0SDg2NldHeXY5RTBoVkF6UFlhaDJ0a1JmUVpNbVAycmluZk9lUWFsZ2Uwb3ZoZHVCakpzOWExR0J3UmVlcmNlaWZ5NDljdE9oNS82NUFUWXVNc0FrVmx0bXZUTEJrNG9IcGRsNmkrcDhEb05qNEZiMnZoZEZZZXIySlNFaWxFd1BkNW41ek5vR0JYRWpyZWcvd2gyTkZuTlJhSVVIU09YYTRlSlJ3eWdab1g2dm5XbnFWZENSVDFBUnhlRnJOQkordHNkb29Nd3FuWWhFN3pJeG5EOHBaSCtQME51MXdXeENQVEFEZk5XbXF4NjI2SUJKSnE2TmVhcGNHZU9tYnRYdmwwVGVXRzBZN09HR1Y0K0VIVHROQklUNVdkMEJ1amw3aW5YZ1pnZlhUTTVlZkQzcURUSjU0Tzl2M0Jrdit0ZElSbHExa1hjVkQwQkVNaXJtRnhnbE5QdDVwZWRiMUFueHVDWU1DaFV5a3dzVElXcVQyM1hEcHZUaUtFcnUxY1RjRU1lbmlCK0hRRGVoeFBYTm1rb3RGZHdVUG5pbEIvdTROeDVYYzZsOEo5akgxRWdLWlVVdDh0OGN5b1psZURCRXQ4b2liRG1KUkFvTUtKNU9lOUNTV1M1Wk1FSnZhY3NHVmRYRFdqcC9ZcGU1eDBwOVBYQjJQQXd0MkxSRDNkK2Z0TmdwdXl2eGxQOHBCODRvQjFpNzN2QVZwd3lybVhXNzJoZlc2RHpuOUprajQrKzBWUTRkMEtTeDFBc0RBNE90WFhEbzYzL3crR0QrekM3dzVTSmF4c21ubFlSUTRkZ2RqQTd0VGwyS05MbnBKK212a29EeHR0MWE0b1BhWDNFVnFqOTZvOXNSS0JRcVU3Wk9pdXBlQUl5TE1EK1kzWXdIeDMwWFdIQjVDUWl3N3EzbWoxRURsUDJlQnNaYno3OWF5VU1ieUhRN3M4Z3U0TGdpcDFMaUdKajdOUWo5MDUvK3JnVVlLQUE1cWRybEhLSWtuV21xZnVSK1BCOFJkQmtEZy9OZ25sVDg5RzcyaDJOdnlTbmo3VXlCd0QrbWkvSVdzMXhXYnh1VndVSVZYdW41Y01xQnRGYnJjY0krRElManNWUWc2ZWVxMGl0aVJmZWRuODlDdnlGdHBreGFhdUV2U0FOdVptQjFwOEZHUGJVOTRKOW1lZHdzWjlIa1VZam1JN09INUh1eGVuZExieFRhWXJQdUlmRTJmZlhGS2hvTkJVcDMzSHNGQVhtQ1YvVnhwcTVBWWdGb1JyNUF5OTNaTFJsZ2FJUGpoWmpYWlpDaFQrYUU1aVdBWE1YMG9TRlFFdHdqaXVoUVFJdFRRWDVJWXJLZktCK3F1ZVROcGxSMUhvZmxvNS9JNmFQUG1BQ3dRQ0UyalRPWW81RHoxY3M3U29kMEtURy8za0VER2sza1VhVUNPTjE5eFNKQ2FiM2tOcFdaaFNXa084bCtTcFc3MFduM2cwY2lPSUpPNUpYbWE2ZGJvczZqeWlzdXhYd1VVaGoyKzF1R2hjdnVsaUt0V3dzVVR3NGdpMWMvZGlFRXBaSG9Lb3hUQmVNRG1oUGhLVHg3VFhXUmFrVjhpbUpSMzU1RGNJSGtSOUlSRUh4b2hQNFRieVI1THRGVTI0dW1SUFJtRVlIYnBlMUxnaHl4UHg3WWdVSGpOYmJRRlJRaGg0S2VVMUVhYlh4OEZTM0pBeHAycndSRG9lV2tKZ1dSVVNLdzZnR1A1VTJQdU85VjRadWlLWEdHekZRdVJ1Zit0a1NTc2JCdFJKS2hDaTNFTnVMbFhoUGJqVEtENGRqWFZuZlhGZHM2WmIrMVhpVXJSZnlheUd4SnExK1NZQkVmYktsZ2ppU21rMG9yZ1RxelNTK0RaNXJUcXNKYnR0aU50cCtLTXFHRTJBSEdGdzZqUXFNNXZENnZNcHRtWFY5T0FqcTQ5VWYvTHg5T3BhbStIbjVPOXA4cW9CQkFRaXh6UVo0ZU5Wa085c1B6SkFNeVIxeTQvUkNRUTFzMHBWNUtBVTVzS0x3M3RrY0ZiSS9KcXJqQ3NLNE13K1c4YW9kNGxpb1l1YXdVaUN5VldCRS9xUGFGaTVibmtncGZ1L2FlNDcxNzRySTFmcVFvVGJXMEhyVTZGQWVqcTdCeU0wVjR6a1pUZzAyL1lKSzJON2hVUVJDZVo0QklnU0VxZ0Q4WHNqekc2TElzU2J1SG9JZHovTGhGemJObjFjbGNpMU5IV0owLzYvTzhISk1kSXBFWmJxaTFScnJGZm9vL3JJLzd1Zm0yTVBHNWxVSTBJWUo0TUFpSFJUU09GSjJvVHZlckZIWVhUaGtZRklveUZ4NnJNWUZnYU9LTTR4TldkbE9uSWNLYi9zdXB0cHRnVE9UZFZJZjRZZ2RhQWpKbklBbTRxTk5ITlFxcUF6dmk1M0dreVJDRW9zZVVCckhvaFpzalVia1I4Z2ZLdGMvK09hNzJsd3hKOE1xNkhEZkRBVGJmYkpoemVJdUZRSlNpdzF1WnBySGx6VWY5MFdncUc3NnpPMGVDQjFXZFB2MUlUNnNOeHhoOTFHRUwyWXBnQzk3aWtGSHlvYUg5Mm5kd2R1cVo2SVlqa2cyMERYMzNNV2RvWms3UWtjS1VDZ2lzSVlzbE9hYUx5dklJcVJLV1FqMTZqRTFEbFFXSkphUG9wV1RKalhmaXhFalJKSm84ZzQrK3d1UWpicStXVllqc3FDdU5JUVczWWpueEtlMk01WktFcXErY1g3WlZnbmtic1UzUldJeVhBMXJ4djRrR2Vyc1lKakQvL2F1bGRYR21jRWJjZlRlRjE2WTE3MDhGQjFISWZtV3Y2ZFNGaTZvRDRFK1JJakNzRVora1k3ZEtud1JlSkp3M3hDakt2aTNrR040MnJ2eWhVbEl6MEJwK2ZOU1Y1eHdGaXVCekcyOTZlNXMvb0hvRnRVeVVwbG1QdWxJUGwrZTFDUUlRVnRqbHpMenp6YlYrRC9PVlF0WXpvNWl4dE1pNUJtSHVHNE4vdUtmSms1VUlSRXA3KzEyb1psS3RQQm9tWFN6QVkwS2d0YlB6elpvSFF4dWpuUkVVZ0JVK08vaktLaGd4VmhSUHRicXlIaVVhUndScEh2N3BnUlB5VXJuRTdmWWtWYmxHbWZUWTI4dEZDdmxJTEMwNFR6M2l2a05XVmF6QStPc1lyeHZSTS9oaU5uOEZjNGJRQmVVWkFCR3g1Uy94RmY5TGJibWsyOThYN2lGZzJ5ZWltdnNRcXFKK2hZYnQ2dXErWmY5akMrSmN3aWNjZDYxTktRdEZ2R1dyZ0ppSEI1bHdpNmZSOEt6WVM3RWFFSGYva2E5RUM3SDhEK1dFYTNURUFDSEJrTlNqL2NYeEZlcTRSbGxDK2ZVRm0yeHRzdFlMTDJub3MxRGZ6c0M5dnFERGRSVmNQQTNIbzk1YUVRSHZFeFZUaFhQcXltNjVsbGtLbGZSWGJQVFJpRGVwZHlsSGptVjlZVFdBRWpsRDlEZFFuQ2VtN0FqL21sNThPbjM2NjM5MjIxNEI1enJtUXovOXlTRzJtRnFFd2pxNXNGbDV0WUpQdzVoTno4bHlaUFVUc3I1RTBGMkM5Vk1Qblpja1dQNyttYndwL0JpTjdmNGtmN3Z0R25aRjJKR3ZqSy9zRFgxUnRjRlk1b1BRbkU0bElBWVY0OVUzQzlTUDBMQ1kvOWkvV0lGSzlPUmp6TTlrRy9LR3JBdXdGbWdkRXBkTGFpcVFOcENUR1pWdUFPNjVhZmtZMWgzM2hycXlMalp5OTJKSzMvdHdkajlwYWZGY3dmWE9ObVBRV2xkUGxNZTdqbFAyNEpzMHY5bThiSUo5VGdTMkl1UnZFOVpWUmFDd1NKWU90QWZMNUgvWVM0RmZ6S1dLYmVrK0dGdWxoZXlLdERObEJ0cmRtcitLVStpYkhUZGFsekZVbU1meHczZjM2eCszY1FiSkxJdFNpbFc5Y3V2WkVNakt3OTg3anlrWlJsc0gvVUkrSGxLZm8ydEx3ZW1CRWVCRnRteEYyeG1JdEEvZEFJZlErclhubTg4ZHF2WGErR2FwT1lWdC8yd2FGaW1YRngzVEMyTVVpT2k1L01sKzNyai9ZVTZJaHgyaFhnaURYRnNVZVFrUkFENndGM1NDUGkyZmxrN1h3S0FBNHpib3F5bnVFTEQzMTJFSjg4bG1ERVZPTWExVy9LL2E4dEd5bFpSTXJNb0lMeW9NUXp6YkRKSE5acmhINzdMOXFTQzQySFZtS2laNVMwMDE2VVRwODNnT2hDd3o5WEl0SzlmZ1hmSzNGNWQ3blpDQlVla29MeHJ1dFFhUEhhMTZSanNhMGdUcnp5anFUbm1jSWNyeGc2WDZka0tpdWN1ZGMwREQ1VzRwSlBmMHZ1RFc4cjUvdXcyNFlmTXV4RlJwRDJvdlQybUZYNzl4SDZKZitNVmR2MlRZcVI2Lzk1NVFnVlBlM0pDRC9XakFZY0xBOXRwWGdGaUVqZ2UySjVsamVJL2lVemc5MUtRdUhrSUk0bW1IWnhDM1hRT1JMQUM2Rzd1Rm41TE9tbG5Ya2pGZG9POTc2bW9OVHhFbFM4SGR4V29QQWtqam9jRFIxMzZtMmwrZjV0NnhhYU5nZG9kT3ZUdTByaWV2bmhOQUI3OVdOclZzNkVzUGdrZ2ZhaEY5Z1NGenpBZCtySlNyYXc1TWxsaXQ3dlVQNVl4QTg0M2xVcHU2LzVqQVIwUnZINHJSWGtTZzNuRStPNUdGeWZlK0wwczVyM2swNUZ5Z2hTRm5LbzRUVGdzMDdxajRuVExxT1lqNnFhVzlrbkpURGtGNU9GTVlibUNQKzhIMTZUeTQ4Mk9qdkVSVjZPRnl3MDQzTDl3M2hvSmk0MDhzUitTR28xV3ZpWFV1OGQ3cVMrZWhLanBLd3hlQ3Roc20yTEJGU0ZlZXR4MHg0QWFLUHh0cDNDeGRXcUNzTHJCMXMvajVUQWhjMWpOWnNYV2w2dGpvL1dEb2V3eHpnOFQ4Tm5oWjFuaVV3TC9uaGZ5Z0xhbkNuUndhRkdEeUx3K3NmWmh5WjFVdFlUcDhUWUI2ZEU3UjNWc0tLSDk1Q1V4Sjh1OE4rOXUyLzlIVU5LSFczeDN3NUdRcmZPUGFmazJ3NXFacThNYUhUMGViZVkzd0lzcDNyTjlscnBJc1c5YzF3czNWTlYrSndOejBMbzkrVjd6WnI2R0Q1NldlNmdXVkl2dG1hbTVHUFBrVkFicjc0cjZTd2h1TCtUUlh0Vy8wcGd5WDE2Vk5sNC9FQUQ1MFRuVVB1d3JXNk9jVU8yVmxXWFMwaW5xODcya2s3R1VsVzZvL296RktxK1NpcDZMY1R0U0RmRHJQVGNDSGh4NzVIOEJlUm9uK0tHMndSd3pmRGdXaEFMbWlXT01PNmgzcG0xVUNaRVBFalNjeWs3dGRMeDZXcmRBMk4xUVRQRU52Tm5oQ1FqVzZrbDA1Ny9xdjdJd1JyeUhyWkJDd1ZTYkxMbkZSaUhkVHdrOG1sWWl4RnQxc2xFY1BEN0ZWaHQxM0h5cVZleUQ1NUhPWHJoMkVsQXhKeWluR2VvRnp3S0E5MXpmcmRMdkR4SlNqem1JbWZ2VGlzcmVJMjVFRGNWZkdzbXhMVmJmVThQR2UvN05tV1dLalhjZFRKMTFqQWxWSVkvQnYvbWN4Zy9RMTB2Q0h3S0cxR1cvWGJKcTVueERoeUxxaW9ybjdXZDdWRVZMOFVnVnpwSE1qUStaOERVZ1N1a2lWd1dBS2tlVGxWVmVaN3QxREduQ2dKVklkQlBaQUVLNWY4Q0R5RE5vN3RLNC81REJqZEQ1TVBWODZUYUVoR3NMVkZQUVNJNjhLbEJZeTg0RmlldmRVOWdXaDZYWnJ1Z3Z0Q1ptaTl2ZmQ2ZGI2VjdGbW9FY1JIbkczNlZaSDhONGFaYWxkcTl6WmF3dDF1QkZneFlZeCtHcy9xVzFqd0FOZUZ5K0xDb3lteU02emdHN2o4Ykd6VXlMaHZyYkprVFlBRWRJQ0ViNGtNS3VzS1Q5VjNlSXdNTHNqZFVkZ2lqTWMrN2lLcnIrVHhyVldHMFUrVzk1U0dyeG54R3JFNGVhSkZmZ3ZBalVNNFNBeThVYVJ3RTlqNlpRSDVxWUFXR3RYQnl2RGlMU0RmT0QweUZBM1VDTUtTeVEzMGZ5eTFtSVJnNFpjZ1pITE5IV2wrYzlTZWlqT3ZiT0p4b1F5N2xUTjJyM1k4cDZvdnh2VVk3NGFPWWJ1VmV6cnlxWEE2VStmY3A2d1NWOVg1L09aS1AxOHRCNTZVYTBnTXl4Skk3WHlOVDdJcnFOOEdzQjlyTC9rUDVLTXJqWHhncUtMRGErVjVPQ0g2YTVobU9XZW1NVXNlYTl2UWw5dDVPY2U3NlByVHlUdjUwRXhPcW5nRTNQSFBmU0wvL0FJdFBkQjdrR255VFJoVlVVRk5kSkoyejdSdGt0WndnbVF6aEJHL0c3UXNqWm1KZkNFN2s3NUVtZElLSDd4bG5tRHJOTS9YYlRUNkZ6bGRjSC9yY1JHeGxQcnY0cURTY3FFN0pTbVFBQkpXcVJUL1RVY0pTd29RTSsxanZEaWd2cmpqSDhvZUsyaW4xUysveU8xajh4QXdzL1Q1dTBWbkl2QVBxYUUxYXROdU4wY3VSbGlMY0gyajBuVEw0SnBjUjd3OVF5YTBKb2FIZ3NPaUFMTENDelJrbDFVVUVTeit6ZS9nSVhIR3REd2dZcks2cENGS0oxd2ViU0RvZzR6VGxQa2dYWnF4bFFEaVlNamhEcHdUdEJXMld4dGhXYm92OWR0Mlg5WEZMRm1jRitlRWMxVWFRNzRncVppWnNkajYzcEgxcWN2M1Z5OEpZY2lvZ0lWS3NKOFl5M0o5dy9HaGpXVlNRQW1yUzBCUE9XSytSS1YrMGxXcVhnWU1uSUZ3cGNaVkQ3elBTcDU0N2k5SGxmbEI4Z1ZuU1RHbW1xMUNsTzA4MU9XL1VIMTFwRVFNZmtFZERGempMQzFDZG8vQmRMM3M3Y1hiOEorK0h6ejFyaE9VVlpGSVBlaFJpWjhWWXU2KzdFcjdqNVBTWnU5Zy9HQmRtTnpKbXlDRDl3aXN3ajlCWncrVDNpQnJnODFyZTM2aWhNTGpvVkxvV2MrNjJhMVUvN3FWWDVDcHZUVkY3cm9jU0FLd3Y0Y0JWcVptN2xMRFMvcW9YczRmTXMvVlFpNkJ0VmJOQTN1U3pLcFFmakgxbzN4NExydmtPbjQwemhtNmhqZHVEZ2x6SlV3QTBQT2FiZ2RYSW5kcDlmemhPbzIzUGUrUms5R1NMWDBkNzFQb3FyeThOUURUek5sc2ErSlRORzkrVXJFZituZ3hDakdFc0RDYzBieit1ZFZSeUhRSTFqbUVPM1MrSU9ReWNFcTdYd0I2ejN3Zk1mYTczbThQVlJwK2lPZ3RaZmVTQmwwMXhuMDN2TWFRSmt5ajd2bmhHQ2tsc0NXVlJVbDR5KzVvTlV6UTYzQjJkYmpERjN2aWtkLzNSVU1pZlBZblg1R2xmdWsyRnNWLzdScWpJOXlLVGJFOHdKWSs3NHA3cVhPOCtkSVlnanRMRC9OOFRKdFJoMDROOXRYSkE0SDU5SWtNbUxFbGd2cjBRNU9DZVZmZEF0KzVoa2g0cFFnZlJNSHBMNzRYYXRMUXBQaU95SFJzL09kbUh0QmY4bk9aY3hWS3pkR2NsSU4xNmxFN2tKK3BWTWpzcE9JKzUrVHFMUk82bTBacE5YSm9aUnY5TVBEUmNBZkpVdE5aSHlpZy9zMnd3UmVha0ZnUFBKd0NRbXUxSTMwL3RjQmJqaStOYTUzaTFXMU4rQnFvWTdaeG8rVS9NOVh5SjRPazJTU2tCdG9Pcnd1aEFZM2EwM0V1Nmw4d0ZkSUcxY04rZThob3BUa2lLRjA5M0t1SC9CY0IzOXJNaUdETG42WFZoR0tFYWFUL3ZxYi9sdWZ1QWRwR0V4ZXZGMStKOWl0a0ZoQ2Z5bVdyOXZHYjNCVEs0ajU5OHpSSDcrZStNVTltYXJ1WnFiMHBrR3hSRFJFMUNENFo4TFY0dmhnUGlkazV3MkJxODE2ZzNuSHcxLy9qM0pTdHo3TlI5SElXRUxPOFRNbjNRclAvelpwLy8rRHY5cDQyOS9vZ3YrR0FUUituL1VkRituczl4TmtYWlFKWFk0dDlqTWtKTlVGeWdBdHpuZFh3anNzK3lXSDlIQW5MUVFmaEFza2RaUzJsMDFITFd2N0w3dXM1dVRINDA5cHFpdHZmU09RZy9jK1p0N2s4NzlQM0s5K1dWNjhuNyszY1pmdVJkL2REUFAvMDNybitkKy9uQnZXZmdEbHQ4K0x6anFKL3Z4M0NuTk93aVhoaG83NzhDOTZpRCsxVEJ2UlpZZVArRUg4MUxFMHZWd09Pcm1DTEIzaUt6STF4K3ZKRXNyUEg0dUYwVUI0VEo0WDN1RGZPQ28zUFlwWWUwTUY0Ym91aDBEUS9sNDNmeFVGN1krZHBXdXZUU2ZmQjB5TzJVUVVFVEkvTHdDWkUzQnZuZXZKN2M5elVsWTNINTh4emtlNkRORkRRRzhuMFd0RE40TEFZTjRub2dLYXYxZXpPZksveit0NnRzQ1RwK2RoeDR5bWpXdUNKazFkRVVpZkRQK0h5UzRpUC9WZzlCMmpUbzlMNE5iaUJ1RFM0bnV1SFc2SCtKRFFuMkp0cVJLR2tFUVBFWUU3dXphelhJa2N4SUFxVXExZXNhc1pCRVRsRVpZN3k3Sm8rUm9WL0lzalk5ZUlNa1V2cjQySGMweHF0c2F2WnZoejFPTHdTeE1PVHVxemxoYjBXYmRPd0JIOUVZaXlCamF0ejQwYlV4VEhiaVd4cUowdW1hMTlxaFBydXZjV0psYmlTU0g0OE9MRERwYUhQc3p2eWN0NDFaZlR1MTArdmpveDZrT3FLNnYwSy9nRVBwaEV2TWwvdndTditBNEhobTM2SlNQOUlYVHlDWkRtNGtLc3FENWF5OGIxU2FkL3ZhaXlPNU4vc0RmRVY2WjRxOTVFK3lmanhwcUJvQkVUVzJDN3hsNHBJTzJiRE9EREZ1clVQd0U3RVdDMlVwbHErQUhtQkh2aXIyUFNna1IxMi9SeTY1TzBhWnRRUGVYaTltVGxGL1dqNUdRK3ZGa1l5aFhzTFRqckJTUDlod2s0R1BxRFA1ckJuNS9sOGIwbUxSQXZSU3pYSGMyOTNiczNzOEVzZEUzbTJleHhpZFdWQjRqb0hSK1MrZHo1L1crdjAwSzNUcU4xNENEQnRoOGVXY3NUYml3WFBzeWdIZEdpZDBQRWR5NkhIbTJ2L0lVdVY1UlZhcFltekdzWDkwbXBuSWROR2NPT3E2NERiYzVHVWJZcEQ5TTdTKzZjTFkvL1FtanhGTFA1Y3VURlJtM3ZBNXJrRlpyb0ZuTzNiakhGMzV1VTNzOG12TDdUcDlueVRjNG15bVRKNXNMSXA3dW1TbkdrTzIzZmFlaHR6M21tVFM3ZmJWeDVyUDd4M0hYSWpSTmVxL0EzeENzOUpOQjA4YzlTOUJGMk8zYk91cjBJdHNsRnhYZ1JQZGFhcEJJaTRkUnBLR3hWejdpcjY5dC9iYzlxVHhqdnRPeUdPZmlMR0RoUjRmWXl3SHYxV2RPcGx4SVY4N1RwTEJ5M1djMFFQMFA5czRHN0ZCTk9kSVRTL3RlcDNvM2gxVEVhNVhERGlpN2ZXdHFSelVFUmVQMmZieHo3YkhXV0pkYklPeE9VSlp0SXROWnBURlJmajZ2bTlzWWpSeFFWTytXVGRpT2hkUGVUSis4WWlyUHZvZUw4OGw1aUxZT0hkM2IvSW1rcSsxWk4xRWwzVWlraGZ0dXRlRVl4ZjFXdWpvZjhQcjRJQ1R1NWV6WnlaNHRIUU14bHpVSExZTzJWTU9vTk1HTC8yMFM1aTJvMm9iZmsrOHFxZFI3eHpiUkRiZ1UwbG51SWd6NExlbFE1WFM3eGJMdVNRdE5TOTV2M1pVT2RhVXgvUWQ4cXhDdDZ4ZjJFNjJ5Yi9IdWtMTzZSeW9yVjhLZ1lsNVlOYzc1eStLdmVmcnhZK2xjLzY0eTlrdldQMGEwYkR6L3JvanErUldqTzA2V2VydVdxTkZVN3IzSFBJY0xXUnFsOElDWnN6MkxzL3FPbS9DTG42KytYK1FmN21Hc3BZQ3Jab2QvbHBsNlJ3NHhOL3l1cThncVY0QjZhSGsxaFZFMVNmSUx4V3U1Z3ZYcWJmQVJZUXBzcGN4S3AxRi9jOFhPUHprWnZtb1N3K3ZFcUJMZHJxMWZyM3dBUHY1Tm5NOWk4RitqZEF1eGtQNVo3MWM2dWhLM2VubG5HeW1yN1VzV1pLQzEycWdVaUc4WFhHUTlteG5xejRHU0lseWJGOWVYbWJxajJzSFgrYTFqZjBnUm9PTkhSZFJTcklxMDNUeTg5ZVExR2JWL0JrK2R1NCtWMTV6bHMrdnZFUnZaNEU3WmJueFdUVmpEamI0by9rOGpsdzQ0cFRJclVHeHh1SnZCZU8raGV1aE9qcEZzTzZsVkovYVhuSkRhL2JNMFFsMWNMYlhFL1BidjNFWjN2ajNpVnJCNWlyanVwWlR6bG52Njc3TnJJOVVOWU5xYlBncC9IWlhTK2xKbWs4N3dlYys3WU94VERvMmF3MmwzTmZEcjM0Vk5sdnFXSkJrbnVLN29TbFo2L1QxMHp1T29QWk9lb0lrODFOK3NMODQzV0oyUTRaMGZaM3Njc3FDL0pWMmZ1aFdpMWpHVVJTS1pWNjM3bGY1M1hubngxNi92S0VYWTg5YVZKMGZ2OTFqR2RmRytHNCtzbml3SGVzNGhTK3VkT3I0UmZoRmhHL0Y1Z1VHMzVRYVUrTWN1TG1jbGI1WldtUitzRzVWNm5mK1B4WXpscm5GR3hwWmFLOGVxcVZvME5mbUFXb0dmWERpVC9GblViV3Z6R0RPVHI4YWt0T1pXZzRCWXZ6NVlIMTJaYmZDY0d0TmsrZERBWk5HV3ZIb3YrUElPblk5UHJqZzhoL3dMUnJUNjlzdWFNVlo1Yk51SzAwbFNWcG5xU1gxTk9OLzgxRm9QOTJyWW5kaW9ud2dPaUE4V01mNHZjOGwxNUtxRUVHNHlBbTIrV0FONUJyZnUxc3E5c3VXWXFnb2FqZ09ZdC9KQ2sxZ0M4d1BrSytYS0N0Ulg2VEF0Z3ZybnVCZ05SbW42SThsVkRpcE9WQjlrWDZPeGtwNFpLeWQxTTZHajgvdjJVN2srWVFCTDk1S2I5UFFFTnVjSmIwSmxXM2I1dE9iTjdtL1oxajFldjM4OGQ3bzE1emdYc0k5Q2lrQUdBVmlSNmxrSnY3bmI0QWs0ME0yRzhUSjQ0N2tOK3B2ZkhpT0ZqU1VTUDZQTStRZmJBeXdLSkNCYXhTVnhwaXpIc2VaVXlVQmhxNTl2Rndya3lHb1JpSGJvMGFwd2VFWmVTTHVOaVErSEFla09uYXJGZzAwZFpOWGFQZW9IUFRSUjBGbUV5cVlFeE9WYWFhTzhjMHVGVWg3VTRlL1V4ZEJtdGhsQkRnZzI1N1EzM2oxaEE3SFR4U2VUVFN1Vm5QWmJnVzFub2R3bUcxNmFLQkRLeEVldHY3RDlPak8wSmhyYkpUbm9lK2tjR29ESmF6RlNPOC9mVU45SnkvZzRYSzVQVWt3MmRnUERHcEpxQmZoZTdHQStjanpmRS9FR3NNTStGVjluajlJQWhyU2ZUL0ozUUU1VEVJWXlrNVVqc0k2WlpjQ1ByNkE4RlpVRjRnOW5ucFZtalg5ME1MU1F5c0lQRDBuRnpxd0NjU0ptSWI1bVl2MkNtaytDMU1ERmtaUXlDQnE0Yy9ZYWk5TEo2eFlrR1MveDJzNS9mcklXMnZtRzJXcnYwQVBwQ2RnQ0E5c25GdmZwZTh1YzBPd2RSczRHOTk3M1BHRUJuUUI1cUtyQ1E2bTZYL0g3TkluWjd5LzE2NzQvWlhPVnA3T2V1Q1JrOEpGUzUxNlZIcm5IMUhrSVVJbFRJbGpqSGFRdEV0a0p0b3NZdWw3N2NWd2prM2dXMUFqYWE2eldleUhHTGxwazNWSEUyVkZ6VDJ5SS9FdmxHVVN6Mkg5ellFMXM0bnNLTXRNcU55S050TC81OUNwRkpraTVGb3U2VlhHbTh2V0FURVB3clVWT0x2b0E4akx1d096VkJDZ0hCMkNyNVY2T3dFV3RKRUtva0prZmM4N2grc05IVHZNYjBLVlRwNTI4NFFUUHVwb1d2UVZVd1Vlb2daUjNrQk1FU1lvMG1mdWtld1JWUEtoNStyekxRYjdIS2pGRklnV2hqMXczeU4vcUNOb1BJOFhGaVVnQk5UMWhDSEJzQXo4TDdPeXQ4d1FXVUZqOTJPTm4vQVB5SkZnOGh6dWVxb0pkTmo1N1JPckZiZmZ1Uy9YeHJTWExUUmdqNXV4WmpwZ1FZY2VlTWMyd0pyYWhSZVNLcG0zUWpIZnFFeFRMQUIyaXBWdW1FOHBxY1p2OExZWFFpUEhIc2diNUJNVzh6TTVwdlFpdCttUXg4WEdhVkRjZlZiTHlNVGxZOHhjZm1tL1JTQVQvSDA5VVFvbDVnSXo3ckVTRG1uclE0YlVSSUI0aVJYTURRd3hnZXgxR2d0RHhLcDJIYXlJa1IrRS9hRG1DdHRObTJDNmx5dFdkZk9WekQ2WDJTcERXalFEbE1SdkFwMXN5bVd2NG15MWJQQ0QrRTFFbUduTUdXaE53bXljSm5EVjJXclFOeE80NXVrRWIwOEFBZmZpellLVlVMcDE1STR2Yk5LNUR6V3dDU1VBRGZtS2hmR1NVcWlpMUwyVXNFOHJCN21MdUh1VUpaT3g0K1dpaXpIQkovaHdib2FCemhwTk9WdmdGVGY1Y0pzSGVmN0wxSENJOWRPVVViYitZeFVKV242ZFlPTHorVEhpOTFrelk1ZHRPNWMrZ3JYN3YwakVic3VvT0dub0lyZURJZy9zRk15RytUeUNMSWNBV2QxSVoxVU5GeEU4VWllMTN1Y200MFUyZmN4QzB1M1dMdkxPeHd1K0Y3TVdVc0hzZHRGUVo3VytubGZDQVNpQUt5aDhyblAzRXlEQnl2dEpiNktheDYvSGtMelQ5U3lFeVRNVk0xelB0TTBNSlkxNERtc1doNE1nRDE1RWE5SGQwMEFka1RaMEVpRzVOQUd1SUJ6UUpKMEpSMG5hK09CN2xRQTZVS3hNZmloSVE3R0NDblZ6Njk0UXZ5a1dYVHhwUzJzb0R1K3NtcnUxVWRJeFN2QXN6QkZEMWM4YzZaT29iQThiSmlKSXZ1eWNnSVhCUUlYV3doeVRnWkRReEpUUlhnRXdSTkFhd0dTWE8wYTFES2pkaWhMVk5wL3RhRS94WWhzZ3dlK1ZwS0VFQjRMbHJhUXlFODRnRWloeENuYmZveU91SklFWHkyRklZdytKalJ1c3liS2xVMmcvdmhUU0dUeWR2Q3ZYaFlCZHRBWHRTMnY3TGtIdG1YaC84Zmx5MWRvOEZJL0QwZjhVYnpWYjVoK0tSaE1HU0FtUjJtaGkwWUcvdWo3d2d4Y2Z6Q3JNdmRqaXRVSXBYRFg4YWUySmNGLzM2cVVXSU13TjZKc2phUkdOaitqRXRlR0RjRnlUVWI4WC9OSFN1Y0tNSnA3cGR1eHRENkt1eFZseXh4d2FlaUMxRmJHQkVTTzg0bGJ5ckF1Z1l4ZGwrMk44LzZBZ1dwby9JZW9BT2NzRzM1SUEvYjNBdVN5b2E1NUw3bGxCTGxhV2xFV3Z1Q0ZkOGY4TmZjVFVnekp2NkNiQis2b2hXd29kbGs5bkdXRnBCQU9hejV1RVc1eEJ2bWpuSEZlRHNiMG1Yd2F5ajNtZFlxNWd4eE5mM0gzL3RuQ2dId2pTcnBTZ1Z4TG1pVHR1c3pkUlVGSXNuNkxpTVBqTDgwOHZMMXVRaERiTTdhQTQzbUlTWFJlcWpTc2t5bklSY0hDSjlxZUZvcEpmeDl0cXlVb0diU3dKZXgvMGFERTNwbEJQR3ROQllnV2JkTG9tMytRL2JqZGl6UjIvQVMvYy9kSC9kM0c3cHlsMXFEWGd0T0Z0RXFpZHdMcXhQWXRyTkV2ZWFzV3EzdlBVVXRxVGV1OGdwb3Y0YmRPUVJJMmtuZUZ2Uk5NclNoeVZlRXVwSzFQb0xEUE1TZldNSUpjczI2N21HQjhYOUNlaFFDRjBnSXlocFAxMG1ieU03bHdXMWU2VEd2SEJWMXNnL1V5VGdoSFBHUnFNeWFlYkM2cGJCMVdLTkNRdGxhaTFHR3ZtcTl6VUthVXpMYVhzWEVCWXRIeG1GYkVaMmtKaFIxNjRMaFdXMlRscDFkaHNHRTdaZ0lXUkJPeDNaY3UyRHhnSCtHODNXVFBjZUtHMFRnUUtLaWlOTk9sV2d2cU5FYm5yazZmVkQrQXFSYW0yT2d1WmIwWVdTVFg4OE4raS9FTFN4YmFVVXBQeDR2SlV6WWcvV29uU2VBOHhVSzZ1N0RQSGdwcVdwRWU2RDRjWGc1dUs5RklZVmJhNDdWL25iK3d5T3RrK3pHOFJyUzRFQTBvdXdhMDRpQnlSTFN2b0pBMkZ6YW9iYlp0WG5xOEdkYmZxRXA1STJkcGZwajU5VENWaWY2K0U3NXA2NjVmYWlYOGdTMjEzUnFCeFRacWZIUDQ2bkY2TlNlbk9uZXVUK3ZnYkxVYmRUSDIvdDBSRUZYWkpPRUI2REh2eDZONmc5OTU2Q1lyWS9BWWNtOWdFTEpYWWtyU2krMEYwZ2VLRFpnT0NJWWtMVS8rR09XNWFHajhtdkxGZ3RGSDUrWEM4aHZBRTNDdkhSZmw0b2ZNL1F3azR4MkErUitueWM5Z051LzlUZW03WFc0WFJueVJ5bWY1MnowOWNUT2RyK1BHNitQL1ZiNFFpWGx3YXVjNVdCMXozbytJSmpsYnhJOE15V3RTelQrazRzS1ZiaEYzeGErdkR0czNOeFhhODdpaXUreFJIOWNBcHJuT0wyaDZ2VjU0aVFSWHVPQWoxczhuTEZLOGdaNzBUaElRY1dkRjE5LzJ4YUptVDBlZnJrTkRrV2JwQVFQZG85Mlo4K0huL2FMamJPekI5QUkvazEyZlBzOUhoVU5ESjF1NmF4MlZ4RDNSNlB5d043QnJMSjI2ejZzM1FvTXA3NnF6endldHJEQUJLU0drZlc1UHdTMUd2WU5VYks2dVJxeGZ5VkdOeUZCMEUrT3VnTU04a0t3bUptdXB1UldPOFhrWFhYUUVDeVJWdzlVeUlydEN0Y2M0b05xWHFyN0FVUkJtS242S2h6M2VCTjk2THdJSnJBR1A5bXIvNTl1VE9TeDYzMXN1eVQrUXVqRGQ0YmVVRnBaMGtKRUVuamxQK1gvS3Iya0NLaG5FTlRnNEJzTVRPbU1xbGoyV01GTFJVbFZHMGZ6ZENCZ1V0YTlvZHJKZnBWZEZvbVRpNmFrMHRGalhUY2RxcXZXQkF6alk2aFZySDlzYnQzWjlnbitBVkRwVGNRSW1lZmJCNGVkaXJqenJzTmlldnZlNFpUNEVVWldWM1R4RXNJVys5TVQvUkpvS2ZaWllTUkdmQzFDd1BHLzlyZE1PTThxUi9MVVl2dzVmL2VtVVNvRDdZU0Z1T29xY2hkVWcyVWVQZDFlQ3RGU0tneExTWjc2NG95NGx2UkNJSDZib3dQeFpXd3hORmN0a3NMZWlsNDdwZmV2Y0JpcGtrQkljNG5nWkcra3hHWjcxYTcyS1E3VmFaNk1aT1prUUpaWE02a2IvQWMwL1hrSng4ZHZ5ZkpjV2JJM3pPTkVhRVBJVzhHYmtZanNaY3d5K2VNb0tyWWpEbXZFRWl4SHprQ1NDUlBSemhPZkpadUxkY2J4MTlFTDIzTUE4cm5qVFpaNzg3RkdNbmtxbnB1ekI1LzkwdzFndFVTUmFXY2IwZXRhODE5OFZFZVpNVVNmSWh5dWM0L255d0ZROXVxbjdqZHFYaCs1d3d2K1JLOVhvdU5QYllkb0VlbE5HbzM0S3l5U3dpZ3NyZkNlMHYvUGxXUHZRdlFnOFIwS2dITzE4bVRWVGhoUXJsYkVRMEtwL0p4UGRqSHlSN0UxUVB3L3V0MHIrSERERzdCd1pGbTlJcUVVWlJwdjJXcHpsTWtPZW1lTGNBdDVDc3J6c2tMR2FWT0F4eXlTelpWL0QyRVk3eWROWk1mOGU4VmhIY0tHSEFXTnN6ZjFFT3E4Zk5zdGlqTVk0Slh5QVR3VGRuY0ZGcWNORGZEbyttV0Z2eEpKcGM0c0VadGpYeUJkb0ZjeGJVbW5pQ29LcTVqeWRVSE5qWUp4TXFOMUt6WVY2Mk11Z2NFTFZoUzNCbmQrVExMT2g3ZHdzL3pTWFd6eEViNE5qNGFGdW41eDRrRFdMSzVUVUYveUNYQi9jWll2STlrUGdWc0cyalNodFhreGZnVCt4empKb2ZYcVBFbklYSVExbG5JZG1WekJPTTkwRVh2SlVXNmEwblovN1hqSkdsOFRvTzNIL2ZkeG54bVROS0JaeG5rcFhMVmdMWENaeXdHVDNZeVM3NXcvUEFINUkvak11UnNwZWo4eFpPYlU5a1JFYlJBK2txam1LUkZhS0dXQW1GUXNwQytRTGJLUGYwUmFLM09YdkJTV3FvNDZwNzB3cy9lWnB1NmpDdFpVZ1F5NnI0dEhNUFVkQWdXR0dVWU5idXYvMWE2SytNVkZzZDNUMTgzK1Q4Y2FwU282bTArU2g1N2ZFZUcvOTVkeWtHSkJRTWowOURTVzJiWTBtVW9uRHk5YTh0ckxubkw1QjVMVzNObDhySlpOeXNPOFpiKzgwelh4cVVHRnB1ZDNRendiN2JmKzhtcTZ4MFRBbkpVOXBEUVI5WVFtWmhsbmEyeHV4SnQwYUNPL2YxU1U4Z2JsT3JiSXlNc3hUbFZVVzY5VkpQellVMkhsUlhjcUUybExMeG5PYlp1ejJ0VDlDaXZmVEFVWWZtekpsdC9sT1Bnc1I2Vk42NC94UWQ0SmxrL1JWN1VLVnYyR3gvQVdzbVRBdUNXS2hkd0MrNEhtS0VLWVpoMlhpczRLc1VSMUJlT2JzMWMxM3dxRlJub2NkbXVoZWFUVjMwZ3ZWWFpjb3V6SEtLNXp3ck41MmpYSkV1WDZkR3gzQkNwVi8rKzRmM2h5YVcvY1FKTEZLcWFzanNNdU8zQjNXbE1xMmd5WWZkSzFlN0wycE8vdFJ5ZTJtd3p3WlBmZFVNcmw1d2RMcWRkMkt2L3dWdG5weVdZaGQ0OUw2cnNPVis4SFhQcldIMkt1cDg5bDJ0ejZiZjgwaVlTZCtWNExST1NPSGVhbXZleFI1MjRxNHI0M3JUbXRGelF2QXJwdldmTFlGWnJiRnNwQnNYTlVxcWVuanhOTnNGWGF0WnZsSWhrN3RlVVBmSytZTDMyRjhNY1RuanYwQlpOcHBiK3ZzaG9DcnRMWGpJV3EzRUpYcFZYSWxHNlpOTDBkaDZxRW0yV013RGpEM0xmT2ZrR2gxL2N6WWMvMHFoaUQyb3pObkg0ODgyTVZWdDNKYlZGa2J3b3dOQ08zS0w1SW9ZVzV3bFZlR0NWaU91djFzdlp4N0ZienhLekE0ekdxQmxSUmFSV0NvYlhhVnE0eVlDV2JaZjhlaUp3dDNPWStNRmlTSmVuZ2NGUDJ0MEpNZnpPaUo3Y0VDdnB4N25lZzFSYzV4KzdteVBKT1h0MkZvaFZSeVh0RCsvckRvVE95R1lJbkplbFpNam9sZWNWSFVoVU5xdmRaV2cySjJ0MGpQbWlMRmVSRC84Zk9UNG8rTkdJTGIrVHVmQ285Y2VCQm0zSkxWbitNTzI2NzVuN3FpRVgvNlcrMTg4Y1lnM1puNU5TVGpnT0tmV0ZTQUFOYTZyYUN4U29WVTg1MW9KTFkxMVdJb1lLMGR1MGVjNUU0dENuQVBvS2g3MXJpVHNqVklwM2dLdkJiRVlRaU5Zcm1IMjJvTFFXQTJBZHdNbklENlBYOWI1OGRSMlFLbzRxYWcxRDFaK0wvRndFS1RSN29zT1pQV0VDUEpJSFFxUFVzTTVpL0NINVl1cFZQZkZBNXBIVUJjc2VzaDhlTzVZaHlXbmFWUlBabi9CbWRYVnVtWldQeE1QNWUyOHptMnVxSGdGb1Q5Q3ltSFlOTnJ6cnJqbFhaTTA2SG56RHhZTmxJNWIvUW9zeExtbXJxREZxbW9nUWRxazBXTGtVY2VvQXZReEhna0l5dldVNjlCUEZyMjRWQjYrbHg3NVJuYTZkR3RybU94RG52Qm9qdmkxLzRkSGpWZWc4b3dvZlBlMWNPbnhVMWlvaDAxNnMvVnVkdjltaFY5ZjM1QXQrU2gyOGgxYnBwOHhocjA5K3ZmNDdFbHgzTXM2aHlwNlF2QjN0MHZuTGJPaHdvNjYwY3A3SzB2dmVwYWJLN1lKZnhFV1dmckMyWXpKZllPanlnUHdmd2QvMWFtVHFhMGhaNXVlZWJoV1lWTXViUlR3SWpqKzBPcTBvaFUzemZSZnVMOGd0NTlYc0hkd0t0eFRRUTRZMnF6Nmdpc3hubTJVZGxtcEVrZ09zWno3aUVrNlFPdDhCdVB3citOUjAxTFRxWG1KbzFDNzZvMU4yNzR0d0p2bCtJMDY5VGlMcGVuSy9taVJ4aHlZOGp2WVY2VzFXdVN3aEg5cTdrdXduSk10bTdJV2NxczdIc255SFNxV1hMU3BZdFpHYVIxVjN0MGdhdW5pbkZQWkd0V3NrRjY1cnR0aTQ4VVY5dVY5S004a2ZEWXMwcGdCMDBTK1RselRYVjZQOG14cTE1YjlFbjhzejNqV1NzemNpZlphL051dWZQTm5OVGIwMzFwcHR0MCtzUlNILzdVRzhwemJzZ3R0M09HM3V0N0I5SnpETXQybVRadXlSTklWOEQ1NFR1VHJwTmNIdGdtTWxZSmVpWTlYUzgzTllKaWNqUmp0SlNmOUJaTHNRdjYyOVFkRHNLUWhUSzVDblhocGs3dk1Oa0h6UGhtMEV4Vy9WQ0dBcEhmUHlCYWd0WlFUUW1QSHg3ZzVJWFhzclFEUHpJVmh2MkxCNkloMTM4aVNEd3cxSk5IckR2elV4dnA3M01zUUJWaFc4RWJyUmVhVlVjTEIxUjNQVVh5YVlHNEhwSlVjTFZ4TWdEeGNQa1ZSUXBMN1ZUQUdhYkR6YktjdmcxMnQ1UDhUU0dRa3JqL2dPcnBuYmlESHdsdUE3M3hiWHRzL0w3dTQ2OGNSV1NXUnRnVHdsUW5BNDdFS2cwT2laRGdGeEFLUVFVY3NiR29tSVRnZVhVQUF5S2UwM2VBN01wNGdueUtRbW0wTFhKdEVrNmRka3NNSkN1eERtbUh6bVZoTytYYU4yQTU0TUloM25pdzVDRjdQd2lYRlpybkE4d09kZUhMdnZoZG9xSURHOVBESTdVbldXSHE1MjZUOHk2aXhKUGhrdVZLWm5vVXJ1T3BVZ09PcDNpSUtCamsreWkxdkhvNWNJdEhYYjFQSUt6R2FabFJTMGc1ZDNNVjJwRDhGUWRHWUxaNzNhYWUvZUVJVWVQTWM0TkZ6OHBJVWZMQ3JyRjRqVldINWdRbmVOM1M4dkFOQm1VWHJFY0tHbjZoSVVOOTV5MXZwc3ZMd2JHcHpWOUwwWktUYW42VERYTTA1MjM2dUxKY0lFTUtWQXhLTlQwSzhXbGp1d05ueTNCTlFSZnpvdkE4NWJlSTl6cjFBR05ZbllDVmtSMWFHbmdXVVJVcmdxUitnUnJRaHhXODFsM0NIZXZqdkdFUHpQTVR4ZHNJZkI5ZGZHUmJaVTBjZy8xbWN1YnRFQ1g0dHZhZWRtTkF2VHhDSnRjMlFhb1VhbEdmRU5DR0s3SVMvTzhDUnBkT1ZjYThFV0NSd3Yyc1NXRThDSlBXNVBDdWdqQ1hQZDNoNlU2MGNQRCtiZGh0WFp1WUI2c3Rjb3ZlRTdTbTVNTTJ5dmZVSFhGU1c3S3pMbWk3L0VlRVdMMHdxY09IOU1PU0tqaENISG13K0pHTGNZRS83U0JaUUNSZ2dveDBaWlRBeHJsek5OWFlYTDVmTklqa2RUNFlNcVZVejZwOFlEdDA0OXY0T1hHZGczcVRydExCVVhPWmY3YWhQbFpBWS9PKzdTcDBidkdTSGR5UThCMUxPc3BscU1iOVNlOFZBRTdnSWRTWnZ4YlJTcmZsK0xrNVFhcWk1UUpjZXFqaXRkRXJjSFhnLzNNcnlsalBTSUFNYWFsb0ZtMWNWd0JKOERObWtEcW9HUk9TSEZldHJnalE1Q2FodUtrZEg1cFJQaWdNcmdUdGxGSTh1ZkpQSlNVbEdnVGpiQlN2cFJjMHp5cGlVbjZVNUtacWNSb3lydHpobUo3L2NhZVprbVZSd0pRZUxPRzhMWTZ2UDVDaHBLaGM4SnMwRWwrbjZGWHFieDlJdGR0THRZUDkya0tmYVRMdENpOFN0TFpkRU5KYTlFeDFuT296MWtRN3F4b2laRktSeUxmNE80Q0hSVDBULzBXOUY4ZXBOS1ZvZXl4VVhoeTNzUU1Nc0pqUUpFeU1Pam1PaE1GZ09tbWxzY1Y0ZUZpMUNsZFU5Mnlqd2xlaXJFS1BXM2JQQXVFaFJaVjdKc0tWM0xyNWNFVEFpRnVYNU53NVVsRjdkMkhaOTZCaDBzZ0ZJTDVLR2FLU29WWVZsdmRLcFpKVlA1K05aN3hERWtRaG1EZ3NES2NpYXpKQ1hKNlpOMkIzRlkyZjZWWnlHbC90NGF1bkdJQWsvQkhhUytpK1NwZFJmbkIvT2t0T3Z5amluV05mTTlLc3I2V3d0Q2ExaENtZVJJNmljcEZNNG84cXVDTHNpa1UwdE1vWkkvOUVxWFJNcEtHYVd6b2ZsNG5RdVZRbTE3ZDVmVTVxWENRZUNEcVZhTDlYSjlxSjA4bjNHM0VGWlMyOFNIRWIzY2RSQmR0TzBZY1R6aWwzUWtuTktFZS9zbVExZlRiMFhicHlOQjV4QWV1SWxmKzVLV2xFWTBEcUpic256SmxReEpQT1Z5SGlLTXg1WHU5RmNFdjFGYmc2RmhtNHQrSnl5NUpDMVczWU84ZFlMc08wUFhQYnhvZEJndHRUYkgzcnQ5Q3AxbEpJazJyM08xWnF1OTRlUmJuSXoyZjUwbFdvbFl6dUtzajRQTW9rNGFiSExPOE5BQzg4NGhpWHg1Rnk1cFdLTzBiV0w3dUVHWGFKQ3R6bmhQNjdTbFE0eGpXSWZncTZFcFoyOFFNdHVaSzdKQzBSR2JsOW5BNFh0Rkx1Zy9OTE1vSDFwR3Q5SW9uQUpxY0VETHlINlREUk9jYnNtR1BhR0l4TW80MUlVQW5RVlBNUEdCeXA0bU9taDlaUU1rQkFja3NVSzU1THNaajdFNXo1WHVab3lXQ0t1Nm5IbURxMjJ4SS85WjhZZHhKeTRrV3BEMTZqTFZycHdHTFdmeU9EMFdkK2NCekZCeFZhR3Y3UzVrOXF3aC81dC9MUUVYc1JxSTNROVJtM1FJb2FaVzlHbHNEYUtPVXl5a3lXdWhOT3ByU0VpMHMxRzRyZ29pWDFWNzQzRUVMdGkrcEp1NW9nNlgwZzZvVHluVXFsaEg5azZlenlSaTA1TkdaSHowbnZwM0hPSnI3ZWJyQVVGckRqYmtGQk9iRXZkUVdra1ViTDBwRXZNVTQ2WDU4dkY5ajlGM2o2a3B5ZXROVUJJdHJFdWJXOVp2TVBNNHFOcUxsc1NCSnFPSDNYYk53di9jWERYTnhOOGlGTHpVaHRlaXNZWStSbEhZT3VQMjkvQ2IrTCt4diszNVJ2N3h1ZG5aNm9oSzRjTVBmQ0c4S0k3ZE5tak5rL0g0ZTg0cE94bi9zWkhLOXBzZnZqOG5jQThxSno3Tzh4cWJ4RVNEaXZHSk9aekY3bzVQSkxRN2czNHFBV295dUEreDNidFU5OExUNlp5R3ljZUlYanJxb2IyQ0FWcWw0Vk9UUVBVUVl2SFYvZzR6QXVDWkd2WVFCdGYwd21kNWxpbHJ2dUVuMUJYTG55MDFCNGg0U01EbFlzbk5wbTlkN205aDU3OHVmcGVmOVo0V3BscVdRdnFvNTJmeVVBN0oyNGVaRDVhdjZTeUdJVjlrcG1ITnF5dmRmemNwRU13OTdCdmtuVjJmcStNRkh1bjlCVDNMc2Y4cGJ6dmlzV2lJUXZZa25nKzhWeGsxVitkbGkxdTU2a1k1MExSamFQZG90dlQ1QndxdHd5RitlbW8vejlKM3lWVVZHZktyeFF0Sk1PQVFXb1FpaS80ZHA5d2d5YlNhNW1rdWNtUkx0RVFaL3B6MHRML05WY2dXQWQ5NW5FUTNUZzZ0TmJ1eW4zSWVwejY1TDNodU1VVUJudGxsV3V1NERidE9GU01TYnBJTFY0Znk2d2xNMFNPdmk2Q3BMaDgxYzFMcmVJdktkNjF1RVdCY0R3MWxVQlVXMUkwWittL1BhUmxYK1BRL294ZzBZZTZLVWlJaVRGNEFETms1OVlkcHQ1L3JreG1xOXRWNUtjcC9lUUxVVlZtQnpRTlZ1eXRRQ1A2RXpkMEc4ZUx4V3lIcG1aV0ozYkF6a1dUdGc0bFpsdzQyU1FlekVtaVVQYUpVdVIvcWtsVkEvODdTNEFyRkNwQUxkWTNRUmRVdzNHM1hiV1VwNmFxOXowelVpemNQYTczNTFwOUpYT1p5ZmRaQkZucXQ5MFZ6UW5kWEIvbXdmOExDOVNUajVrZW5WcE51cU9RUVAzbUlSSmo3ZVYyMUZ4RzhWQXhLckVuM2MrWGZtWjgwMEVQYjkvNWxJbGlqc2NVYkI2ZGEwUlFhTW9vazB6dWcxRzB0S2kvSkJDNHJ3Ny9EM200QVJ6QWt6TWNWckRjVDJTeUZ0VWRXQXNGbHNQREZxVjNOK0VqeVhhb0VlUHdyb2FaQ2lMcUV6YjhNVytQTkU5VG1UQzAxRXpXbGk1MVB6WnZVcWtteXVST1UrVjZpaytMZS85cVQ2bnd6VXpmOXRQNjh0WWVpMFlhREd4NmtBZDdqbjFjS3FPQ3VZYmlFTEg5ellxY2M0TW5SSmprZUdpcWFHd0xJbWh5ZUtzK3hLSk1CbE9KMDVvdzlnR0NLWjFWcG5NS29TQ1RiTVMrWCsyM3kwNDJ6T2I1TXRjWS82b0JlQW8xVnk4OU9UeWhwYXZGUDc4alhDY0ZIMHQ3R3gyNGhNRU9tMmdzRWZHYWJWcFFndkZxYlFLTXNrbkZSUm11UEhjWnUwU3UvV01GcGhadkIyci9FR2JHNzJycEdHaG8zaCtNc3owdUd6SjdoTksydXFRaUUxcW1uMHpnYWNLWVlaQkNxc3hWK3NqYnBvVmRTaWxXL2I5NG4yeE5iNjQ4Vm1OSW9penFFV2hCbnNlbitkMGtiQ1BtUkl0ZldxU0JlT2Q5V25lM2M2YmNkNnV2WE9KNldkaVNzdVhxMG5kaHFyUTRRb1dVakNqWXRaMEVBaG5TT1AxbTQ0eGtmME83alhnaHJ6U0pXeFA0YS90NzJqVTI5VnUycnZ1NG43SGZIa2ttUU9NR1NTK05QZUxHTzVJNzNtQzJCNytsTWlCUVFaUk05LzlsaUxJZm93dXBVRkFiUEJiUitseERNNk04UHRnaDFwYUpxNVJ2czd5RXVMUXYvN2Qxb1Uyd29GU2IzRk1QV1FPS011Q3VKN3BERGpwSWNsdXM1VGVFb01CeTJZZFZCNGZ4bWVzYUNlTU5zRWdUSEtTNVdEU0d5TlVPb0VwY0MyT0ZXdElSZjB3MjdjazM0L0RqeFJUVkljYzkra3FaRTZpTVNpVkRzaUtkUC9YejVYZkVobS9zQmhPNTBwMXJ2SkRsa3l5eHVKOVNQZ3M3WWVVSkJqWGRlQWtFK1A5T1FKbTZTWm5uMXN2Y2R1STc4ZFltYmtFMm10emlQcmNqVmlzWEc3OHNwTHZiWmFTRngvUmtzOXpQNExLbjBDZHovM0pzZXRrVDA2QThmL3lDZ01PNk1iMUhtZTBKSjdiMndaejFxbGVxVHVLQkdva2hQVlVaMGRWdSt0blFZTkVZMWZta1pTejYrRUdaNUV6TDc2NTdtcmVaR1IzalVmYUVrNDU4UERuaUJ6c1NtQktoRFJ6ZlhhbWVyeUp2OS9ENW02SElxWjBSK291Q0U1NER6cDRJSnV1RDFlNERjNWkrUHBTT1JKZkcyM3VWZ3FpeEFNRHZjaE1SMG5aZEg1YnJjbFl3Um9KUld2L3JseEdSSTVmZkQ1TlBHbUlEdDd2REUxNDM0cFlkVlpJRmg4OUJzOTRIR0dKYlR3ck44VDZsaDFIWkZUT0I0bFd6V2o2RVZxeFNNdkMwL2xqV0JRM0Yya2MvbU8yYjZ0V29uVDJKRXFFd0Z0czhyejJoK29XTmRzOWNlUjJjYjd6WnZKVERwcEhhRWhLNWF2V3Fzc2VXYTJEdDVCQmhhYmRXU2t0Uzgwb01Rckw0VHZBTTliNUhNbXlEbk8rT2trYk1YZlVKRzdlWHFUSUc2bHFTT0VicVZSK3FZZFA3dVdiNTdXRUpxenloNDExR0FWc0RpblBzN0t2VWVYSXRsY01kT1VXelhCSDZ6c2N5bVYxTExWQ3RjOEllUG9qelhIRjltNWI1ekd3QlJkemN5VUpraXU5MzhBcG1BYXlSZEpyWDFQbVZndVdVdnQyVGhRNjJjekl0VHlXSk1XMkFuL2hkRGZNSzdTaUZRbEdJZEFibHRIejN5Y29oN2o5VjdHeE5XQnBidGNTZHFtNFh4UndUYXdjM2NiWit4ZlN2OXFRZkVrREtmWlR3Q2txV0dJL3VyMjUwSXRYbE1saDZ2VU5XRVlJZzlBM0d6YmdtYnF2VE44anMyWU1vODdDVTV5Nm5aNGRiSkxEUUpqOWZjN3lNN3RaekpEWkZ0cU9jVTgrbVpqWWxxNFZtaWZJMjNpSGIxWm9UOUUra1QyZG9sblAxQWZpT2t0N1BRQ1N5a0JpWHk1bXY2MzdJZWdXU0tqOUlLcllaZjRMdTkrSTd1Yitta1JkbHZZemVoaC9qYUo5bjdIVUg1YjJJYmdlTmRrWTd3eDF5Vnp4UzdwYnZreTYrbm1WVXRSbGxFRmZ3ZVVRMC9uRzAxN1dvVVlTeHMrajJCNEZWL0Y2MkV0SGxNV1pYWXJqR0hwdGhuTmIxeDY2TEtaMFFlOTJJTldIZGZSL3ZxcDAyd01TOHIxRzRkSnFIb2s4S21RNzk0N0cxM2E0WVhic0dnSGNCdlJ1VnUxZUFpNC9BNStaaXhtZFNYTTczTHVwQi9MSDdPOXl4TFRWWEpUeUJiSTFTNDlUSVJPcmZWQ09iL2N6WjlwTTRKc1p4OGtVejhkUUd2N2dVV0t4WHZUSDdRTS8zSjJPdVhYZ2NpVWhxWStjZ3RhT2xpUVFWT1l0aEJMVjN4cEVTWlQzcm1mRVlOWnhtcEJiYjI0Q1Jhbzg2cHJuK2k5VE5PaDhWeFJKR1hKZlhIQVRKSHMxVDV0eGdjL29wWXJZOFhqbEdRUWJSY294SUJjblZzTWptVTF5bW1JVUw0ZHZpSlhuZE1BSjBZZXQrYzdPNTIvcDk4eXRsbUFzR0JhVEFtTWhpbUFudnAxVFdOR005QnB1aXRHait0ODEwQ1UyVWhvcnJqUEtHdFRoVkM4V2FYdzA0V0ZuVDVmVGpxbVB5clEwdE4zQ2tMc2N0VnkyeHIwWldnaVdWWjFPcmxGamp4SllzT2ladjJjQW9PdkUrN3NZMEkvVHdXY1pxTW95SUtOT2Z0d1A3dysrUmZnNjdsamZvdktZYTUwaWYzZnpFLzhhUFlWZXkvTnEzNStuSDJzTFBoL2ZQNVRzeWxTS0dPWjRrNjlkMlBuSDQzK2txKytzUlhIUXFHQXJXZHdoeCtocHdRQzZKZ1QydXhlaFlVNFpidzdvTmI2L0hMaWtQeUpST0dLMm91eXIrdnpzZUVTcDlHNTBUNEF5RnJTcU9RMHJyb0NZUDRzTURGQnJIbjM0MkV5WlRNbFN5azQ3ckhTcTg5WTkvbkkzekc1bFgxNlo1bHhwaGd1TE9jWlVuZEw4d05jcmt5akg4MmpxZzhCbzhPWWt5bnJ4WnZiRm5vNWxVUzNPUHI4S28zbVg5Tm9SUGRZT0tLakQwN2J2Z0ZncFovUkYrWXprV3ZKL0hzL3RVYmZlR3pHV0x4TkFqZkR6SEhNVlNEd0I1U2FiUUxzSVpIaUJwNDNGakdrYWllbllvRGQxOGh1MkJHd09LN1UzbzcwSy9XWS9rdXVLZG1kcnlrSUJVZEcybXZFOTFMMUp0VGJoMjBtT0xiazF2Q0FhbXU3dXRsWGVHVTJvb1Zpa2JVL2FjdGNnbXNDMUZLazJxbWozR1dlSVdiajR0R0l4RTdCTGNCV1V2dmNuZC9sWXhzTVY0RjkxN2ZXZUZCL1hiSU5OM3FHdkl5VHBDYWx6MWxWZXdkSUdxZUFTL2dCOE1pK3NBK0JxRGlYM1ZHRDJlVXVuVFJiU1krQXVEeTRFM1F4M2hBaHduU1hYK0IwenVqM2VRMW1pUzhWdXgyei9sNi9Ca1d0aktHVTcyYUprT0NXaEdjU2YzK2tGa2tCMTV2R09zUXJTZEZyNnFUajBnQllpT2xuQk80MTE3MGdPV0hTVW9CVlJVMkpqd3BwWWRoSUZEZnU3dElSSGNjU05NNUtaT0ZEUHowVEdNQWp6ekVwZUx3VFdwK2tuMjAxa1U2TmpiaU1RSng4MytMWDFlMXRaMTBrdUNoSlovWEJVUTFkd2FCSGpUREpEcU95bXBFazhYMk0zVnRWdzIxSmtzQ2hBOHcxdFRlZk8zUkoxRk1icVowMWJISGt1ZERCL09oTGZlN1A1R09IYUkyOFpYS1RNdXFvMGhMV1E0SGFiQnNHRzdOYlAxUmlYdEVUejA3NGVyNncvT2VySldFcWpta3EyeTUxcTFCVkkrSlV1ZG5WYTNvZ0JwemRoRkU3ZkM3a3lickF0Mlo2UnFEakFUQVVFWWVZSzQ1V011cEJLUVJ0UWxVK3VOc2puemo2Wm1HcmV6QStBU3JXeFE2TE1rSFJYcVh3TnE3ZnR2MjhkVXgvWlNKY2lEWFAyU1dKc1dhTjBGalBYOVlrbzZMb2JaN2FZVy9JZFVrdEk5YXBUTHlIUzhEeVdQeXVvWnl4TjFUSy92dGZ4azNId1doNkpjelpDOEZ0bjBiSUpheTJnK241d2Q3bG05ckVzS08rc3ZxVm1pK2Mxajg4aFNDeGJ6cmc0K0hFUDBOdDEvQjZZVzFYVm0wOVQxQ3BBS2pjOW4xOGhqcXNhRkdkZnl2YTFaRzBYdTNpcDZONkpHcHlUU3FZNWg0Qk9scExQYU9ueXc0NVBkWFROK0R0QUtnN0RMckxGVG5XdXNvU0JIazNzMGQ3WW91SkhxODUvUjA5VGZjMzdFTlhaRjQ4ZUFZTG5xOUdMaW9OY3dEWnJDNkZXNmdvZEI4Sm5xWVVQdm4wcFdMZlF6MGxNMFl5OE15YmduODREczNROWJEUDEwYkx5T1YrcXp4YTRSZDlEaHU3Y2p1OG1NYU9OWEszVXFtQlE5cUlnN2V0SXdFcU0va0VDay9EemphNEJzMXhSK1EvdENiYzhJS3JTR3NUZEpKMHZnZTdJRzIwVzY4N3VWbUs2aWNXUTZjRDNsd0Z6Z05NR3RGdk81cXlKZUtmbEdMQUFjUVpPcmt4Vnd5M2NXdnFsR3B2am1mOVFlNkFwMjBNUGJWOTJEUFYwT2hGTTRrejhZcjBmZkMyekxXU1Exa3FZNlFkUXJ0dFIza2gxWUx0UWQxa0NFdjVoVm9QSVJXbDVFUmNVVHR0QklyV3A2WHM1RWhoNU9VVXdJNWFFQnZ1aURtVW9FTm1uVncxRm9oQ3JiUnAxQTFFK1hTbFdWT1RpN0FEVys1T2hiOXoxdks0cXg1UjVsUGRHQ1BCSlowMG1DK1NzcDhWVWJncEdBdlhXTXVXUVFSYkNxSTZScjJqdHhaeHRmUDdXLzhvbnoreXowR3M3NkxhVDVIWDllY3lpWkNCL1pSL2dGdE14UHNEd29ob2VDUnRpdUx4RTFHTTF2VUVVZ0J2ODYrZWVoTDU4L1A1NlFGR1EvTXFPZS92Qzc2TDYzanptZWF4NGV4ZC9PS1RVdmtYZytmT0pVSHljaDl4dC85Z29KTXJhcFNndlhyajgrOHZrL044MGYyMlNld2o2Y3lHcXQxQjZtenRvZWtsVkhIcmFvdWh2SEphRy9PdUJ6NkRIS01wRm1RVUxVMWJSV2x5WUUwUlBYWVlrVXljSWVtTjdUTHRnTkNKWDZCcWR5eERLa2VnTzduSks1eFE3T1ZZRFpUTWY5YlZIaWR0azZEUVg5RXQrVjlNN2VzZ2JzWUJkRWVVcHNCMFh2dzJrZDkrckk3VittNDd1K08vdHE3bXc3MjYySFUxV2xTOXVGenNWNkp4SUhObVVDeTBRUzllMDc3SkdSRmJHNjV6My9kT0tCL1prK3lEZEtwVW1kWGpuL2FTM041bnY0Zks3Yk1ISG1QbEhkNEUyK2lUYlY1cnB6U2NSbnhrNktBUnVEVEo4UTFMcEsybVA4Z2oxRWJ1SjlSSXlZK0VXSzRoQ2lJREJBUzFUbTJJRVhBRmZnS1BnZEw5TzZtQWEwNndqQ2NVQUw2RXN4UFFXTzlWTmVnQlBtLzBHZ2taYkR4Q3lueHVqWC85MnZtR2NqWlJNQVk0NXB1YWsyc0ZMQ0xTd1hwRXN5eTVmbkYwakdKQmhtK2ZOU0hLS1VVZnkrMjc2QTcvZmVMT0Z4eFV1SFJOSkkyT3Nlbnh5dmY4REFHT2JUNjBwZlRUbGhFZzl1L0tLa2hKcW01VTEvK0JFY1NrcEZEQTVYZUNxeHdYbVBhYzFqY3VaM0pXUStwME5kV3piLzV2MVp2RjhHdE1URkZFZFFqcExPMGJ3UGIwQkhOV25pcDNsaURYSTJmWGYwNWpqdmZKME5wakxDVWdmVGg5Q01GWVZGS0VkNFovT0cvMkMrTjQzNW1uSys5dDFndkNpVmNhYUg3cks0K1BqQ3ZwVk5peit0MlF5cUgxTzh4M0pLWlZsNlErTHAvWEs4d01qVk1zbE9xOUZkU3c1RnRVcy9DcHRYSDlQVyt3YldIZ3JWMTdSNWpUVk90R3RLRnUzbmI4MFQrRTB0djlRa3pXM0oyZGJhdy84ZGRBS1owcHhJYUVxTGpsUHJqaTNWZ0ozR3ZkRnZscUQ4MDc1d294aDRmVnQwSlpFMEtWRnNBdnFoZTBkcU45YjM1anRTcG5ZTVhrVSt2WnErSUFIYWQzSUhjMnMvTFlybkQxYW5mRzQ2SUZpTUlyOW9OYlpEV3Z3dGhxWU5xT2lnYUtkL1hsTFU0WEhmay9QWElqUHNMeS85L2tBdFErL3dLSCtoSS9JUk9XajVGUHZUWkFUOWY3ajRaWFF5RzRNMFR1ak1BRlhZa0t2RUh2MXhoeVNla2dYR0dxTnhXZVdLbGY4ZERBbEx1QjFjYi9xT0Qrcms3Y213dCsxeUtwazljdWRxQmFuVGk2elRiWFJ0VjhxeWxOdGp5T1ZLeTFIVHowR1c5cmp0NnNTakFaY1Q1UitLZHR5WWIwenlxRzlwU0x1Q3c1V0J3QW43ZmpCaktMTG94TFhNSSs1Mkw5Y0x3SVIyQjZPbGxKWkxISjh2RHhtV2R0RitRSm5tdDFyc0hQSVdZMjBsZnRrOGZZZVBrQUlnNkhnbjUzMlFvSXBlZ014aVdnQU9mZTUvVTQ0QVBSOEFjME5lWnJWaDNnRWhzMTJXK3RWU2lXaVVRZWtmL1lCRUNVeTVmZFliQTA4ZGQ3VnpQQVA5YWlWY0lCOWs2dFk3V2RKMXdOVitiSGV5ZE50bUM2RzVJQ3RGQzFad21KVS9qOGhmMEk4VFJWS1NpejVvWUlhOTNFcFVJNzhYOEdZSUFaYWJ4NDcvbjhMREFBSjBuTnRQMXJwUk9wcnFLTUJSZWNTaGNhNnFYdVRTSTNqWkJMT0IzVnAzODFCNXJDR2hqU3ZoL05TVmtZcDJxSWRQL0JnPSI7CgoKLyoqKi8gfSksCi8qIDI4OSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovKiBDb3B5cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICBMb29rdXAgdGFibGUgdG8gbWFwIHRoZSBwcmV2aW91cyB0d28gYnl0ZXMgdG8gYSBjb250ZXh0IGlkLgoKICAgVGhlcmUgYXJlIGZvdXIgZGlmZmVyZW50IGNvbnRleHQgbW9kZWxpbmcgbW9kZXMgZGVmaW5lZCBoZXJlOgogICAgIENPTlRFWFRfTFNCNjogY29udGV4dCBpZCBpcyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgNiBiaXRzIG9mIHRoZSBsYXN0IGJ5dGUsCiAgICAgQ09OVEVYVF9NU0I2OiBjb250ZXh0IGlkIGlzIHRoZSBtb3N0IHNpZ25pZmljYW50IDYgYml0cyBvZiB0aGUgbGFzdCBieXRlLAogICAgIENPTlRFWFRfVVRGODogc2Vjb25kLW9yZGVyIGNvbnRleHQgbW9kZWwgdHVuZWQgZm9yIFVURjgtZW5jb2RlZCB0ZXh0LAogICAgIENPTlRFWFRfU0lHTkVEOiBzZWNvbmQtb3JkZXIgY29udGV4dCBtb2RlbCB0dW5lZCBmb3Igc2lnbmVkIGludGVnZXJzLgoKICAgVGhlIGNvbnRleHQgaWQgZm9yIHRoZSBVVEY4IGNvbnRleHQgbW9kZWwgaXMgY2FsY3VsYXRlZCBhcyBmb2xsb3dzLiBJZiBwMQogICBhbmQgcDIgYXJlIHRoZSBwcmV2aW91cyB0d28gYnl0ZXMsIHdlIGNhbGN1YWx0ZSB0aGUgY29udGV4dCBhcwoKICAgICBjb250ZXh0ID0ga0NvbnRleHRMb29rdXBbcDFdIHwga0NvbnRleHRMb29rdXBbcDIgKyAyNTZdLgoKICAgSWYgdGhlIHByZXZpb3VzIHR3byBieXRlcyBhcmUgQVNDSUkgY2hhcmFjdGVycyAoaS5lLiA8IDEyOCksIHRoaXMgd2lsbCBiZQogICBlcXVpdmFsZW50IHRvCgogICAgIGNvbnRleHQgPSA0ICogY29udGV4dDEocDEpICsgY29udGV4dDIocDIpLAoKICAgd2hlcmUgY29udGV4dDEgaXMgYmFzZWQgb24gdGhlIHByZXZpb3VzIGJ5dGUgaW4gdGhlIGZvbGxvd2luZyB3YXk6CgogICAgIDAgIDogbm9uLUFTQ0lJIGNvbnRyb2wKICAgICAxICA6IFx0LCBcbiwgXHIKICAgICAyICA6IHNwYWNlCiAgICAgMyAgOiBvdGhlciBwdW5jdHVhdGlvbgogICAgIDQgIDogIiAnCiAgICAgNSAgOiAlCiAgICAgNiAgOiAoIDwgWyB7CiAgICAgNyAgOiApID4gXSB9CiAgICAgOCAgOiAsIDsgOgogICAgIDkgIDogLgogICAgIDEwIDogPQogICAgIDExIDogbnVtYmVyCiAgICAgMTIgOiB1cHBlci1jYXNlIHZvd2VsCiAgICAgMTMgOiB1cHBlci1jYXNlIGNvbnNvbmFudAogICAgIDE0IDogbG93ZXItY2FzZSB2b3dlbAogICAgIDE1IDogbG93ZXItY2FzZSBjb25zb25hbnQKCiAgIGFuZCBjb250ZXh0MiBpcyBiYXNlZCBvbiB0aGUgc2Vjb25kIGxhc3QgYnl0ZToKCiAgICAgMCA6IGNvbnRyb2wsIHNwYWNlCiAgICAgMSA6IHB1bmN0dWF0aW9uCiAgICAgMiA6IHVwcGVyLWNhc2UgbGV0dGVyLCBudW1iZXIKICAgICAzIDogbG93ZXItY2FzZSBsZXR0ZXIKCiAgIElmIHRoZSBsYXN0IGJ5dGUgaXMgQVNDSUksIGFuZCB0aGUgc2Vjb25kIGxhc3QgYnl0ZSBpcyBub3QgKGluIGEgdmFsaWQgVVRGOAogICBzdHJlYW0gaXQgd2lsbCBiZSBhIGNvbnRpbnVhdGlvbiBieXRlLCB2YWx1ZSBiZXR3ZWVuIDEyOCBhbmQgMTkxKSwgdGhlCiAgIGNvbnRleHQgaXMgdGhlIHNhbWUgYXMgaWYgdGhlIHNlY29uZCBsYXN0IGJ5dGUgd2FzIGFuIEFTQ0lJIGNvbnRyb2wgb3Igc3BhY2UuCgogICBJZiB0aGUgbGFzdCBieXRlIGlzIGEgVVRGOCBsZWFkIGJ5dGUgKHZhbHVlID49IDE5MiksIHRoZW4gdGhlIG5leHQgYnl0ZSB3aWxsCiAgIGJlIGEgY29udGludWF0aW9uIGJ5dGUgYW5kIHRoZSBjb250ZXh0IGlkIGlzIDIgb3IgMyBkZXBlbmRpbmcgb24gdGhlIExTQiBvZgogICB0aGUgbGFzdCBieXRlIGFuZCB0byBhIGxlc3NlciBleHRlbnQgb24gdGhlIHNlY29uZCBsYXN0IGJ5dGUgaWYgaXQgaXMgQVNDSUkuCgogICBJZiB0aGUgbGFzdCBieXRlIGlzIGEgVVRGOCBjb250aW51YXRpb24gYnl0ZSwgdGhlIHNlY29uZCBsYXN0IGJ5dGUgY2FuIGJlOgogICAgIC0gY29udGludWF0aW9uIGJ5dGU6IHRoZSBuZXh0IGJ5dGUgaXMgcHJvYmFibHkgQVNDSUkgb3IgbGVhZCBieXRlIChhc3N1bWluZwogICAgICAgNC1ieXRlIFVURjggY2hhcmFjdGVycyBhcmUgcmFyZSkgYW5kIHRoZSBjb250ZXh0IGlkIGlzIDAgb3IgMS4KICAgICAtIGxlYWQgYnl0ZSAoMTkyIC0gMjA3KTogbmV4dCBieXRlIGlzIEFTQ0lJIG9yIGxlYWQgYnl0ZSwgY29udGV4dCBpcyAwIG9yIDEKICAgICAtIGxlYWQgYnl0ZSAoMjA4IC0gMjU1KTogbmV4dCBieXRlIGlzIGNvbnRpbnVhdGlvbiBieXRlLCBjb250ZXh0IGlzIDIgb3IgMwoKICAgVGhlIHBvc3NpYmxlIHZhbHVlIGNvbWJpbmF0aW9ucyBvZiB0aGUgcHJldmlvdXMgdHdvIGJ5dGVzLCB0aGUgcmFuZ2Ugb2YKICAgY29udGV4dCBpZHMgYW5kIHRoZSB0eXBlIG9mIHRoZSBuZXh0IGJ5dGUgaXMgc3VtbWFyaXplZCBpbiB0aGUgdGFibGUgYmVsb3c6CgogICB8LS0tLS0tLS1cLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CiAgIHwgICAgICAgICBcICAgICAgICAgICAgICAgICAgICAgICAgIExhc3QgYnl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgfCBTZWNvbmQgICBcLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAogICB8IGxhc3QgYnl0ZSBcICAgIEFTQ0lJICAgICAgICAgICAgfCAgIGNvbnQuIGJ5dGUgICAgICAgIHwgICBsZWFkIGJ5dGUgICAgICB8CiAgIHwgICAgICAgICAgICBcICAgKDAtMTI3KSAgICAgICAgICB8ICAgKDEyOC0xOTEpICAgICAgICAgfCAgICgxOTItKSAgICAgICAgIHwKICAgfD09PT09PT09PT09PT18PT09PT09PT09PT09PT09PT09PXw9PT09PT09PT09PT09PT09PT09PT18PT09PT09PT09PT09PT09PT09fAogICB8ICBBU0NJSSAgICAgIHwgbmV4dDogQVNDSUkvbGVhZCAgfCAgbm90IHZhbGlkICAgICAgICAgIHwgIG5leHQ6IGNvbnQuICAgICB8CiAgIHwgICgwLTEyNykgICAgfCBjb250ZXh0OiA0IC0gNjMgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgY29udGV4dDogMiAtIDMgIHwKICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfAogICB8ICBjb250LiBieXRlIHwgbmV4dDogQVNDSUkvbGVhZCAgfCAgbmV4dDogQVNDSUkvbGVhZCAgIHwgIG5leHQ6IGNvbnQuICAgICB8CiAgIHwgICgxMjgtMTkxKSAgfCBjb250ZXh0OiA0IC0gNjMgICB8ICBjb250ZXh0OiAwIC0gMSAgICAgfCAgY29udGV4dDogMiAtIDMgIHwKICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfAogICB8ICBsZWFkIGJ5dGUgIHwgbm90IHZhbGlkICAgICAgICAgfCAgbmV4dDogQVNDSUkvbGVhZCAgIHwgIG5vdCB2YWxpZCAgICAgICB8CiAgIHwgICgxOTItMjA3KSAgfCAgICAgICAgICAgICAgICAgICB8ICBjb250ZXh0OiAwIC0gMSAgICAgfCAgICAgICAgICAgICAgICAgIHwKICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfAogICB8ICBsZWFkIGJ5dGUgIHwgbm90IHZhbGlkICAgICAgICAgfCAgbmV4dDogY29udC4gICAgICAgIHwgIG5vdCB2YWxpZCAgICAgICB8CiAgIHwgICgyMDgtKSAgICAgfCAgICAgICAgICAgICAgICAgICB8ICBjb250ZXh0OiAyIC0gMyAgICAgfCAgICAgICAgICAgICAgICAgIHwKICAgfC0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfAoKICAgVGhlIGNvbnRleHQgaWQgZm9yIHRoZSBzaWduZWQgY29udGV4dCBtb2RlIGlzIGNhbGN1bGF0ZWQgYXM6CgogICAgIGNvbnRleHQgPSAoa0NvbnRleHRMb29rdXBbNTEyICsgcDFdIDw8IDMpIHwga0NvbnRleHRMb29rdXBbNTEyICsgcDJdLgoKICAgRm9yIGFueSBjb250ZXh0IG1vZGVsaW5nIG1vZGVzLCB0aGUgY29udGV4dCBpZHMgY2FuIGJlIGNhbGN1bGF0ZWQgYnkgfC1pbmcKICAgdG9nZXRoZXIgdHdvIGxvb2t1cHMgZnJvbSBvbmUgdGFibGUgdXNpbmcgY29udGV4dCBtb2RlbCBkZXBlbmRlbnQgb2Zmc2V0czoKCiAgICAgY29udGV4dCA9IGtDb250ZXh0TG9va3VwW29mZnNldDEgKyBwMV0gfCBrQ29udGV4dExvb2t1cFtvZmZzZXQyICsgcDJdLgoKICAgd2hlcmUgb2Zmc2V0MSBhbmQgb2Zmc2V0MiBhcmUgZGVwZW5kZW50IG9uIHRoZSBjb250ZXh0IG1vZGUuCiovCgp2YXIgQ09OVEVYVF9MU0I2ICAgICAgICAgPSAwOwp2YXIgQ09OVEVYVF9NU0I2ICAgICAgICAgPSAxOwp2YXIgQ09OVEVYVF9VVEY4ICAgICAgICAgPSAyOwp2YXIgQ09OVEVYVF9TSUdORUQgICAgICAgPSAzOwoKLyogQ29tbW9uIGNvbnRleHQgbG9va3VwIHRhYmxlIGZvciBhbGwgY29udGV4dCBtb2Rlcy4gKi8KZXhwb3J0cy5sb29rdXAgPSBuZXcgVWludDhBcnJheShbCiAgLyogQ09OVEVYVF9VVEY4LCBsYXN0IGJ5dGUuICovCiAgLyogQVNDSUkgcmFuZ2UuICovCiAgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDQsICA0LCAgMCwgIDAsICA0LCAgMCwgIDAsCiAgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsCiAgIDgsIDEyLCAxNiwgMTIsIDEyLCAyMCwgMTIsIDE2LCAyNCwgMjgsIDEyLCAxMiwgMzIsIDEyLCAzNiwgMTIsCiAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDMyLCAzMiwgMjQsIDQwLCAyOCwgMTIsCiAgMTIsIDQ4LCA1MiwgNTIsIDUyLCA0OCwgNTIsIDUyLCA1MiwgNDgsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNDgsCiAgNTIsIDUyLCA1MiwgNTIsIDUyLCA0OCwgNTIsIDUyLCA1MiwgNTIsIDUyLCAyNCwgMTIsIDI4LCAxMiwgMTIsCiAgMTIsIDU2LCA2MCwgNjAsIDYwLCA1NiwgNjAsIDYwLCA2MCwgNTYsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNTYsCiAgNjAsIDYwLCA2MCwgNjAsIDYwLCA1NiwgNjAsIDYwLCA2MCwgNjAsIDYwLCAyNCwgMTIsIDI4LCAxMiwgIDAsCiAgLyogVVRGOCBjb250aW51YXRpb24gYnl0ZSByYW5nZS4gKi8KICAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLAogIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEsIDAsIDEsCiAgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSwgMCwgMSwKICAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLCAwLCAxLAogIC8qIFVURjggbGVhZCBieXRlIHJhbmdlLiAqLwogIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsCiAgMiwgMywgMiwgMywgMiwgMywgMiwgMywgMiwgMywgMiwgMywgMiwgMywgMiwgMywKICAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLCAyLCAzLAogIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsIDIsIDMsCiAgLyogQ09OVEVYVF9VVEY4IHNlY29uZCBsYXN0IGJ5dGUuICovCiAgLyogQVNDSUkgcmFuZ2UuICovCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCiAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMSwgMSwgMSwgMSwgMSwgMSwKICAxLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLAogIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEsIDEsIDEsIDEsIDEsCiAgMSwgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywKICAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAxLCAxLCAxLCAxLCAwLAogIC8qIFVURjggY29udGludWF0aW9uIGJ5dGUgcmFuZ2UuICovCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIC8qIFVURjggbGVhZCBieXRlIHJhbmdlLiAqLwogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwKICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLAogIC8qIENPTlRFWFRfU0lHTkVELCBzZWNvbmQgbGFzdCBieXRlLiAqLwogIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCiAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwKICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLAogIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsCiAgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywKICAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAzLAogIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsCiAgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywgMywKICA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LAogIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsIDQsCiAgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwKICA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LAogIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsCiAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwKICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LAogIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDcsCiAgLyogQ09OVEVYVF9TSUdORUQsIGxhc3QgYnl0ZSwgc2FtZSBhcyB0aGUgYWJvdmUgdmFsdWVzIHNoaWZ0ZWQgYnkgMyBiaXRzLiAqLwogICAwLCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LAogIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LAogIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAogIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAogIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAogIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LAogIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLAogIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLAogIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLAogIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLCAzMiwgMzIsIDMyLAogIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLAogIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLAogIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDQwLAogIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDU2LAogIC8qIENPTlRFWFRfTFNCNiwgbGFzdCBieXRlLiAqLwogICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LAogIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLAogIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LAogIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLAogICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LAogIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLAogIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LAogIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLAogICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LAogIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLAogIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LAogIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLAogICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LAogIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLAogIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LAogIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLAogIC8qIENPTlRFWFRfTVNCNiwgbGFzdCBieXRlLiAqLwogICAwLCAgMCwgIDAsICAwLCAgMSwgIDEsICAxLCAgMSwgIDIsICAyLCAgMiwgIDIsICAzLCAgMywgIDMsICAzLAogICA0LCAgNCwgIDQsICA0LCAgNSwgIDUsICA1LCAgNSwgIDYsICA2LCAgNiwgIDYsICA3LCAgNywgIDcsICA3LAogICA4LCAgOCwgIDgsICA4LCAgOSwgIDksICA5LCAgOSwgMTAsIDEwLCAxMCwgMTAsIDExLCAxMSwgMTEsIDExLAogIDEyLCAxMiwgMTIsIDEyLCAxMywgMTMsIDEzLCAxMywgMTQsIDE0LCAxNCwgMTQsIDE1LCAxNSwgMTUsIDE1LAogIDE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE3LCAxNywgMTgsIDE4LCAxOCwgMTgsIDE5LCAxOSwgMTksIDE5LAogIDIwLCAyMCwgMjAsIDIwLCAyMSwgMjEsIDIxLCAyMSwgMjIsIDIyLCAyMiwgMjIsIDIzLCAyMywgMjMsIDIzLAogIDI0LCAyNCwgMjQsIDI0LCAyNSwgMjUsIDI1LCAyNSwgMjYsIDI2LCAyNiwgMjYsIDI3LCAyNywgMjcsIDI3LAogIDI4LCAyOCwgMjgsIDI4LCAyOSwgMjksIDI5LCAyOSwgMzAsIDMwLCAzMCwgMzAsIDMxLCAzMSwgMzEsIDMxLAogIDMyLCAzMiwgMzIsIDMyLCAzMywgMzMsIDMzLCAzMywgMzQsIDM0LCAzNCwgMzQsIDM1LCAzNSwgMzUsIDM1LAogIDM2LCAzNiwgMzYsIDM2LCAzNywgMzcsIDM3LCAzNywgMzgsIDM4LCAzOCwgMzgsIDM5LCAzOSwgMzksIDM5LAogIDQwLCA0MCwgNDAsIDQwLCA0MSwgNDEsIDQxLCA0MSwgNDIsIDQyLCA0MiwgNDIsIDQzLCA0MywgNDMsIDQzLAogIDQ0LCA0NCwgNDQsIDQ0LCA0NSwgNDUsIDQ1LCA0NSwgNDYsIDQ2LCA0NiwgNDYsIDQ3LCA0NywgNDcsIDQ3LAogIDQ4LCA0OCwgNDgsIDQ4LCA0OSwgNDksIDQ5LCA0OSwgNTAsIDUwLCA1MCwgNTAsIDUxLCA1MSwgNTEsIDUxLAogIDUyLCA1MiwgNTIsIDUyLCA1MywgNTMsIDUzLCA1MywgNTQsIDU0LCA1NCwgNTQsIDU1LCA1NSwgNTUsIDU1LAogIDU2LCA1NiwgNTYsIDU2LCA1NywgNTcsIDU3LCA1NywgNTgsIDU4LCA1OCwgNTgsIDU5LCA1OSwgNTksIDU5LAogIDYwLCA2MCwgNjAsIDYwLCA2MSwgNjEsIDYxLCA2MSwgNjIsIDYyLCA2MiwgNjIsIDYzLCA2MywgNjMsIDYzLAogIC8qIENPTlRFWFRfe00sTH1TQjYsIHNlY29uZCBsYXN0IGJ5dGUsICovCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAogIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKXSk7CgpleHBvcnRzLmxvb2t1cE9mZnNldHMgPSBuZXcgVWludDE2QXJyYXkoWwogIC8qIENPTlRFWFRfTFNCNiAqLwogIDEwMjQsIDE1MzYsCiAgLyogQ09OVEVYVF9NU0I2ICovCiAgMTI4MCwgMTUzNiwKICAvKiBDT05URVhUX1VURjggKi8KICAwLCAyNTYsCiAgLyogQ09OVEVYVF9TSUdORUQgKi8KICA3NjgsIDUxMiwKXSk7CgoKLyoqKi8gfSksCi8qIDI5MCAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovKiBDb3B5cmlnaHQgMjAxMyBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgoKICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CgogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKCiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgogICBMb29rdXAgdGFibGVzIHRvIG1hcCBwcmVmaXggY29kZXMgdG8gdmFsdWUgcmFuZ2VzLiBUaGlzIGlzIHVzZWQgZHVyaW5nCiAgIGRlY29kaW5nIG9mIHRoZSBibG9jayBsZW5ndGhzLCBsaXRlcmFsIGluc2VydGlvbiBsZW5ndGhzIGFuZCBjb3B5IGxlbmd0aHMuCiovCgovKiBSZXByZXNlbnRzIHRoZSByYW5nZSBvZiB2YWx1ZXMgYmVsb25naW5nIHRvIGEgcHJlZml4IGNvZGU6ICovCi8qIFtvZmZzZXQsIG9mZnNldCArIDJebmJpdHMpICovCmZ1bmN0aW9uIFByZWZpeENvZGVSYW5nZShvZmZzZXQsIG5iaXRzKSB7CiAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7CiAgdGhpcy5uYml0cyA9IG5iaXRzOwp9CgpleHBvcnRzLmtCbG9ja0xlbmd0aFByZWZpeENvZGUgPSBbCiAgbmV3IFByZWZpeENvZGVSYW5nZSgxLCAyKSwgbmV3IFByZWZpeENvZGVSYW5nZSg1LCAyKSwgbmV3IFByZWZpeENvZGVSYW5nZSg5LCAyKSwgbmV3IFByZWZpeENvZGVSYW5nZSgxMywgMiksCiAgbmV3IFByZWZpeENvZGVSYW5nZSgxNywgMyksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMjUsIDMpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDMzLCAzKSwgbmV3IFByZWZpeENvZGVSYW5nZSg0MSwgMyksCiAgbmV3IFByZWZpeENvZGVSYW5nZSg0OSwgNCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNjUsIDQpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDgxLCA0KSwgbmV3IFByZWZpeENvZGVSYW5nZSg5NywgNCksCiAgbmV3IFByZWZpeENvZGVSYW5nZSgxMTMsIDUpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDE0NSwgNSksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTc3LCA1KSwgbmV3IFByZWZpeENvZGVSYW5nZSgyMDksIDUpLAogIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMjQxLCA2KSwgbmV3IFByZWZpeENvZGVSYW5nZSgzMDUsIDYpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDM2OSwgNyksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNDk3LCA4KSwKICBuZXcgUHJlZml4Q29kZVJhbmdlKDc1MywgOSksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTI2NSwgMTApLCBuZXcgUHJlZml4Q29kZVJhbmdlKDIyODksIDExKSwgbmV3IFByZWZpeENvZGVSYW5nZSg0MzM3LCAxMiksCiAgbmV3IFByZWZpeENvZGVSYW5nZSg4NDMzLCAxMyksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTY2MjUsIDI0KQpdOwoKZXhwb3J0cy5rSW5zZXJ0TGVuZ3RoUHJlZml4Q29kZSA9IFsKICBuZXcgUHJlZml4Q29kZVJhbmdlKDAsIDApLCBuZXcgUHJlZml4Q29kZVJhbmdlKDEsIDApLCBuZXcgUHJlZml4Q29kZVJhbmdlKDIsIDApLCBuZXcgUHJlZml4Q29kZVJhbmdlKDMsIDApLAogIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNCwgMCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNSwgMCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNiwgMSksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoOCwgMSksCiAgbmV3IFByZWZpeENvZGVSYW5nZSgxMCwgMiksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTQsIDIpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDE4LCAzKSwgbmV3IFByZWZpeENvZGVSYW5nZSgyNiwgMyksCiAgbmV3IFByZWZpeENvZGVSYW5nZSgzNCwgNCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNTAsIDQpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDY2LCA1KSwgbmV3IFByZWZpeENvZGVSYW5nZSg5OCwgNSksCiAgbmV3IFByZWZpeENvZGVSYW5nZSgxMzAsIDYpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDE5NCwgNyksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMzIyLCA4KSwgbmV3IFByZWZpeENvZGVSYW5nZSg1NzgsIDkpLAogIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTA5MCwgMTApLCBuZXcgUHJlZml4Q29kZVJhbmdlKDIxMTQsIDEyKSwgbmV3IFByZWZpeENvZGVSYW5nZSg2MjEwLCAxNCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMjI1OTQsIDI0KSwKXTsKCmV4cG9ydHMua0NvcHlMZW5ndGhQcmVmaXhDb2RlID0gWwogIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMiwgMCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMywgMCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNCwgMCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNSwgMCksCiAgbmV3IFByZWZpeENvZGVSYW5nZSg2LCAwKSwgbmV3IFByZWZpeENvZGVSYW5nZSg3LCAwKSwgbmV3IFByZWZpeENvZGVSYW5nZSg4LCAwKSwgbmV3IFByZWZpeENvZGVSYW5nZSg5LCAwKSwKICBuZXcgUHJlZml4Q29kZVJhbmdlKDEwLCAxKSwgbmV3IFByZWZpeENvZGVSYW5nZSgxMiwgMSksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTQsIDIpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDE4LCAyKSwKICBuZXcgUHJlZml4Q29kZVJhbmdlKDIyLCAzKSwgbmV3IFByZWZpeENvZGVSYW5nZSgzMCwgMyksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMzgsIDQpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDU0LCA0KSwKICBuZXcgUHJlZml4Q29kZVJhbmdlKDcwLCA1KSwgbmV3IFByZWZpeENvZGVSYW5nZSgxMDIsIDUpLCBuZXcgUHJlZml4Q29kZVJhbmdlKDEzNCwgNiksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMTk4LCA3KSwKICBuZXcgUHJlZml4Q29kZVJhbmdlKDMyNiwgOCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoNTgyLCA5KSwgbmV3IFByZWZpeENvZGVSYW5nZSgxMDk0LCAxMCksIG5ldyBQcmVmaXhDb2RlUmFuZ2UoMjExOCwgMjQpLApdOwoKZXhwb3J0cy5rSW5zZXJ0UmFuZ2VMdXQgPSBbCiAgMCwgMCwgOCwgOCwgMCwgMTYsIDgsIDE2LCAxNiwKXTsKCmV4cG9ydHMua0NvcHlSYW5nZUx1dCA9IFsKICAwLCA4LCAwLCA4LCAxNiwgMCwgMTYsIDgsIDE2LApdOwoKCi8qKiovIH0pLAovKiAyOTEgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogQ29weXJpZ2h0IDIwMTMgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KCiAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAoKICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCgogICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgogICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgoKICAgVHJhbnNmb3JtYXRpb25zIG9uIGRpY3Rpb25hcnkgd29yZHMuCiovCgp2YXIgQnJvdGxpRGljdGlvbmFyeSA9IF9fd2VicGFja19yZXF1aXJlX18oMTE5KTsKCnZhciBrSWRlbnRpdHkgICAgICAgPSAwOwp2YXIga09taXRMYXN0MSAgICAgID0gMTsKdmFyIGtPbWl0TGFzdDIgICAgICA9IDI7CnZhciBrT21pdExhc3QzICAgICAgPSAzOwp2YXIga09taXRMYXN0NCAgICAgID0gNDsKdmFyIGtPbWl0TGFzdDUgICAgICA9IDU7CnZhciBrT21pdExhc3Q2ICAgICAgPSA2Owp2YXIga09taXRMYXN0NyAgICAgID0gNzsKdmFyIGtPbWl0TGFzdDggICAgICA9IDg7CnZhciBrT21pdExhc3Q5ICAgICAgPSA5Owp2YXIga1VwcGVyY2FzZUZpcnN0ID0gMTA7CnZhciBrVXBwZXJjYXNlQWxsICAgPSAxMTsKdmFyIGtPbWl0Rmlyc3QxICAgICA9IDEyOwp2YXIga09taXRGaXJzdDIgICAgID0gMTM7CnZhciBrT21pdEZpcnN0MyAgICAgPSAxNDsKdmFyIGtPbWl0Rmlyc3Q0ICAgICA9IDE1Owp2YXIga09taXRGaXJzdDUgICAgID0gMTY7CnZhciBrT21pdEZpcnN0NiAgICAgPSAxNzsKdmFyIGtPbWl0Rmlyc3Q3ICAgICA9IDE4Owp2YXIga09taXRGaXJzdDggICAgID0gMTk7CnZhciBrT21pdEZpcnN0OSAgICAgPSAyMDsKCmZ1bmN0aW9uIFRyYW5zZm9ybShwcmVmaXgsIHRyYW5zZm9ybSwgc3VmZml4KSB7CiAgdGhpcy5wcmVmaXggPSBuZXcgVWludDhBcnJheShwcmVmaXgubGVuZ3RoKTsKICB0aGlzLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTsKICB0aGlzLnN1ZmZpeCA9IG5ldyBVaW50OEFycmF5KHN1ZmZpeC5sZW5ndGgpOwogIAogIGZvciAodmFyIGkgPSAwOyBpIDwgcHJlZml4Lmxlbmd0aDsgaSsrKQogICAgdGhpcy5wcmVmaXhbaV0gPSBwcmVmaXguY2hhckNvZGVBdChpKTsKICAKICBmb3IgKHZhciBpID0gMDsgaSA8IHN1ZmZpeC5sZW5ndGg7IGkrKykKICAgIHRoaXMuc3VmZml4W2ldID0gc3VmZml4LmNoYXJDb2RlQXQoaSk7Cn0KCnZhciBrVHJhbnNmb3JtcyA9IFsKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiAiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga0lkZW50aXR5LCAgICAgICAiICIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdEZpcnN0MSwgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VGaXJzdCwgIiAiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIHRoZSAiICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrSWRlbnRpdHksICAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICJzICIsIGtJZGVudGl0eSwgICAgICAgIiAiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIG9mICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlRmlyc3QsICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiBhbmQgIiAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga09taXRGaXJzdDIsICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdExhc3QxLCAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICIsICIsIGtJZGVudGl0eSwgICAgICAgIiAiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiLCAiICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrVXBwZXJjYXNlRmlyc3QsICIgIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiBpbiAiICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIHRvICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAiZSAiLCBrSWRlbnRpdHksICAgICAgICIgIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIlwiIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiLiIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICJcIj4iICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIlxuIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga09taXRMYXN0MywgICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICJdIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiBmb3IgIiAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga09taXRGaXJzdDMsICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdExhc3QyLCAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiBhICIgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIHRoYXQgIiAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrVXBwZXJjYXNlRmlyc3QsICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIi4gIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIuIiwga0lkZW50aXR5LCAgICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrSWRlbnRpdHksICAgICAgICIsICIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtPbWl0Rmlyc3Q0LCAgICAgIiIgICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIHdpdGggIiAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICInIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiBmcm9tICIgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIGJ5ICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdEZpcnN0NSwgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtPbWl0Rmlyc3Q2LCAgICAgIiIgICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgIiB0aGUgIiwga0lkZW50aXR5LCAgICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdExhc3Q0LCAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIi4gVGhlICIgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUFsbCwgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICIgb24gIiAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiBhcyAiICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIGlzICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdExhc3Q3LCAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtPbWl0TGFzdDEsICAgICAgImluZyAiICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiXG5cdCIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICI6IiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtJZGVudGl0eSwgICAgICAgIi4gIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiZWQgIiAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdEZpcnN0OSwgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtPbWl0Rmlyc3Q3LCAgICAgIiIgICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga09taXRMYXN0NiwgICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICIoIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VGaXJzdCwgIiwgIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga09taXRMYXN0OCwgICAgICAiIiAgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICIgYXQgIiAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgImx5ICIgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgIiB0aGUgIiwga0lkZW50aXR5LCAgICAgICAiIG9mICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrT21pdExhc3Q1LCAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtPbWl0TGFzdDksICAgICAgIiIgICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga1VwcGVyY2FzZUZpcnN0LCAiLCAiICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlRmlyc3QsICJcIiIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiLiIsIGtJZGVudGl0eSwgICAgICAgIigiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUFsbCwgICAiICIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlRmlyc3QsICJcIj4iICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIj1cIiIgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga0lkZW50aXR5LCAgICAgICAiLiIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAiLmNvbS8iLCBrSWRlbnRpdHksICAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICIgdGhlICIsIGtJZGVudGl0eSwgICAgICAgIiBvZiB0aGUgIiAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUZpcnN0LCAiJyIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICIuIFRoaXMgIiAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIiwiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIuIiwga0lkZW50aXR5LCAgICAgICAiICIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlRmlyc3QsICIoIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VGaXJzdCwgIi4iICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiIG5vdCAiICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrSWRlbnRpdHksICAgICAgICI9XCIiICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgImVyICIgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga1VwcGVyY2FzZUFsbCwgICAiICIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICJhbCAiICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtVcHBlcmNhc2VBbGwsICAgIiIgICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiPSciICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlQWxsLCAgICJcIiIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VGaXJzdCwgIi4gIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga0lkZW50aXR5LCAgICAgICAiKCIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICJmdWwgIiAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtVcHBlcmNhc2VGaXJzdCwgIi4gIiAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiaXZlICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrSWRlbnRpdHksICAgICAgICJsZXNzICIgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VBbGwsICAgIiciICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga0lkZW50aXR5LCAgICAgICAiZXN0ICIgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrVXBwZXJjYXNlRmlyc3QsICIuIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VBbGwsICAgIlwiPiIgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga0lkZW50aXR5LCAgICAgICAiPSciICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlRmlyc3QsICIsIiAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIml6ZSAiICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUFsbCwgICAiLiIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAiXHhjMlx4YTAiLCBrSWRlbnRpdHksICAgICAgICIiICAgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtJZGVudGl0eSwgICAgICAgIiwiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUZpcnN0LCAiPVwiIiAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlQWxsLCAgICI9XCIiICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtJZGVudGl0eSwgICAgICAgIm91cyAiICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUFsbCwgICAiLCAiICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlRmlyc3QsICI9JyIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtVcHBlcmNhc2VGaXJzdCwgIiwiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga1VwcGVyY2FzZUFsbCwgICAiPVwiIiAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrVXBwZXJjYXNlQWxsLCAgICIsICIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAgIiIsIGtVcHBlcmNhc2VBbGwsICAgIiwiICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUFsbCwgICAiKCIgICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgICIiLCBrVXBwZXJjYXNlQWxsLCAgICIuICIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtVcHBlcmNhc2VBbGwsICAgIi4iICAgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICAiIiwga1VwcGVyY2FzZUFsbCwgICAiPSciICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrVXBwZXJjYXNlQWxsLCAgICIuICIgICAgICAgICApLAogICAgIG5ldyBUcmFuc2Zvcm0oICAgICAgICAiICIsIGtVcHBlcmNhc2VGaXJzdCwgIj1cIiIgICAgICAgICksCiAgICAgbmV3IFRyYW5zZm9ybSggICAgICAgICIgIiwga1VwcGVyY2FzZUFsbCwgICAiPSciICAgICAgICAgKSwKICAgICBuZXcgVHJhbnNmb3JtKCAgICAgICAgIiAiLCBrVXBwZXJjYXNlRmlyc3QsICI9JyIgICAgICAgICApCl07CgpleHBvcnRzLmtUcmFuc2Zvcm1zID0ga1RyYW5zZm9ybXM7CmV4cG9ydHMua051bVRyYW5zZm9ybXMgPSBrVHJhbnNmb3Jtcy5sZW5ndGg7CgpmdW5jdGlvbiBUb1VwcGVyQ2FzZShwLCBpKSB7CiAgaWYgKHBbaV0gPCAweGMwKSB7CiAgICBpZiAocFtpXSA+PSA5NyAmJiBwW2ldIDw9IDEyMikgewogICAgICBwW2ldIF49IDMyOwogICAgfQogICAgcmV0dXJuIDE7CiAgfQogIAogIC8qIEFuIG92ZXJseSBzaW1wbGlmaWVkIHVwcGVyY2FzaW5nIG1vZGVsIGZvciB1dGYtOC4gKi8KICBpZiAocFtpXSA8IDB4ZTApIHsKICAgIHBbaSArIDFdIF49IDMyOwogICAgcmV0dXJuIDI7CiAgfQogIAogIC8qIEFuIGFyYml0cmFyeSB0cmFuc2Zvcm0gZm9yIHRocmVlIGJ5dGUgY2hhcmFjdGVycy4gKi8KICBwW2kgKyAyXSBePSA1OwogIHJldHVybiAzOwp9CgpleHBvcnRzLnRyYW5zZm9ybURpY3Rpb25hcnlXb3JkID0gZnVuY3Rpb24oZHN0LCBpZHgsIHdvcmQsIGxlbiwgdHJhbnNmb3JtKSB7CiAgdmFyIHByZWZpeCA9IGtUcmFuc2Zvcm1zW3RyYW5zZm9ybV0ucHJlZml4OwogIHZhciBzdWZmaXggPSBrVHJhbnNmb3Jtc1t0cmFuc2Zvcm1dLnN1ZmZpeDsKICB2YXIgdCA9IGtUcmFuc2Zvcm1zW3RyYW5zZm9ybV0udHJhbnNmb3JtOwogIHZhciBza2lwID0gdCA8IGtPbWl0Rmlyc3QxID8gMCA6IHQgLSAoa09taXRGaXJzdDEgLSAxKTsKICB2YXIgaSA9IDA7CiAgdmFyIHN0YXJ0X2lkeCA9IGlkeDsKICB2YXIgdXBwZXJjYXNlOwogIAogIGlmIChza2lwID4gbGVuKSB7CiAgICBza2lwID0gbGVuOwogIH0KICAKICB2YXIgcHJlZml4X3BvcyA9IDA7CiAgd2hpbGUgKHByZWZpeF9wb3MgPCBwcmVmaXgubGVuZ3RoKSB7CiAgICBkc3RbaWR4KytdID0gcHJlZml4W3ByZWZpeF9wb3MrK107CiAgfQogIAogIHdvcmQgKz0gc2tpcDsKICBsZW4gLT0gc2tpcDsKICAKICBpZiAodCA8PSBrT21pdExhc3Q5KSB7CiAgICBsZW4gLT0gdDsKICB9CiAgCiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICBkc3RbaWR4KytdID0gQnJvdGxpRGljdGlvbmFyeS5kaWN0aW9uYXJ5W3dvcmQgKyBpXTsKICB9CiAgCiAgdXBwZXJjYXNlID0gaWR4IC0gbGVuOwogIAogIGlmICh0ID09PSBrVXBwZXJjYXNlRmlyc3QpIHsKICAgIFRvVXBwZXJDYXNlKGRzdCwgdXBwZXJjYXNlKTsKICB9IGVsc2UgaWYgKHQgPT09IGtVcHBlcmNhc2VBbGwpIHsKICAgIHdoaWxlIChsZW4gPiAwKSB7CiAgICAgIHZhciBzdGVwID0gVG9VcHBlckNhc2UoZHN0LCB1cHBlcmNhc2UpOwogICAgICB1cHBlcmNhc2UgKz0gc3RlcDsKICAgICAgbGVuIC09IHN0ZXA7CiAgICB9CiAgfQogIAogIHZhciBzdWZmaXhfcG9zID0gMDsKICB3aGlsZSAoc3VmZml4X3BvcyA8IHN1ZmZpeC5sZW5ndGgpIHsKICAgIGRzdFtpZHgrK10gPSBzdWZmaXhbc3VmZml4X3BvcysrXTsKICB9CiAgCiAgcmV0dXJuIGlkeCAtIHN0YXJ0X2lkeDsKfQoKCi8qKiovIH0pLAovKiAyOTIgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKF9fZGlybmFtZSkgey8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgQUZNRm9udCwgUERGRm9udCwgU3RhbmRhcmRGb250LCBmcywKICAgIGV4dGVuZCA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoaGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfSwKICAgIGhhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCiAgQUZNRm9udCA9IF9fd2VicGFja19yZXF1aXJlX18oMjkzKTsKCiAgUERGRm9udCA9IF9fd2VicGFja19yZXF1aXJlX18oNTApOwoKICBmcyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CgogIFN0YW5kYXJkRm9udCA9IChmdW5jdGlvbihzdXBlckNsYXNzKSB7CiAgICB2YXIgU1RBTkRBUkRfRk9OVFM7CgogICAgZXh0ZW5kKFN0YW5kYXJkRm9udCwgc3VwZXJDbGFzcyk7CgogICAgZnVuY3Rpb24gU3RhbmRhcmRGb250KGRvY3VtZW50LCBuYW1lMSwgaWQpIHsKICAgICAgdmFyIHJlZjsKICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50OwogICAgICB0aGlzLm5hbWUgPSBuYW1lMTsKICAgICAgdGhpcy5pZCA9IGlkOwogICAgICB0aGlzLmZvbnQgPSBuZXcgQUZNRm9udChTVEFOREFSRF9GT05UU1t0aGlzLm5hbWVdKCkpOwogICAgICByZWYgPSB0aGlzLmZvbnQsIHRoaXMuYXNjZW5kZXIgPSByZWYuYXNjZW5kZXIsIHRoaXMuZGVzY2VuZGVyID0gcmVmLmRlc2NlbmRlciwgdGhpcy5iYm94ID0gcmVmLmJib3gsIHRoaXMubGluZUdhcCA9IHJlZi5saW5lR2FwOwogICAgfQoKICAgIFN0YW5kYXJkRm9udC5wcm90b3R5cGUuZW1iZWQgPSBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5kaWN0aW9uYXJ5LmRhdGEgPSB7CiAgICAgICAgVHlwZTogJ0ZvbnQnLAogICAgICAgIEJhc2VGb250OiB0aGlzLm5hbWUsCiAgICAgICAgU3VidHlwZTogJ1R5cGUxJywKICAgICAgICBFbmNvZGluZzogJ1dpbkFuc2lFbmNvZGluZycKICAgICAgfTsKICAgICAgcmV0dXJuIHRoaXMuZGljdGlvbmFyeS5lbmQoKTsKICAgIH07CgogICAgU3RhbmRhcmRGb250LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbih0ZXh0KSB7CiAgICAgIHZhciBhZHZhbmNlcywgZW5jb2RlZCwgZ2x5cGgsIGdseXBocywgaSwgaiwgbGVuLCBwb3NpdGlvbnM7CiAgICAgIGVuY29kZWQgPSB0aGlzLmZvbnQuZW5jb2RlVGV4dCh0ZXh0KTsKICAgICAgZ2x5cGhzID0gdGhpcy5mb250LmdseXBoc0ZvclN0cmluZygnJyArIHRleHQpOwogICAgICBhZHZhbmNlcyA9IHRoaXMuZm9udC5hZHZhbmNlc0ZvckdseXBocyhnbHlwaHMpOwogICAgICBwb3NpdGlvbnMgPSBbXTsKICAgICAgZm9yIChpID0gaiA9IDAsIGxlbiA9IGdseXBocy5sZW5ndGg7IGogPCBsZW47IGkgPSArK2opIHsKICAgICAgICBnbHlwaCA9IGdseXBoc1tpXTsKICAgICAgICBwb3NpdGlvbnMucHVzaCh7CiAgICAgICAgICB4QWR2YW5jZTogYWR2YW5jZXNbaV0sCiAgICAgICAgICB5QWR2YW5jZTogMCwKICAgICAgICAgIHhPZmZzZXQ6IDAsCiAgICAgICAgICB5T2Zmc2V0OiAwLAogICAgICAgICAgYWR2YW5jZVdpZHRoOiB0aGlzLmZvbnQud2lkdGhPZkdseXBoKGdseXBoKQogICAgICAgIH0pOwogICAgICB9CiAgICAgIHJldHVybiBbZW5jb2RlZCwgcG9zaXRpb25zXTsKICAgIH07CgogICAgU3RhbmRhcmRGb250LnByb3RvdHlwZS53aWR0aE9mU3RyaW5nID0gZnVuY3Rpb24oc3RyaW5nLCBzaXplKSB7CiAgICAgIHZhciBhZHZhbmNlLCBhZHZhbmNlcywgZ2x5cGhzLCBqLCBsZW4sIHNjYWxlLCB3aWR0aDsKICAgICAgZ2x5cGhzID0gdGhpcy5mb250LmdseXBoc0ZvclN0cmluZygnJyArIHN0cmluZyk7CiAgICAgIGFkdmFuY2VzID0gdGhpcy5mb250LmFkdmFuY2VzRm9yR2x5cGhzKGdseXBocyk7CiAgICAgIHdpZHRoID0gMDsKICAgICAgZm9yIChqID0gMCwgbGVuID0gYWR2YW5jZXMubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICBhZHZhbmNlID0gYWR2YW5jZXNbal07CiAgICAgICAgd2lkdGggKz0gYWR2YW5jZTsKICAgICAgfQogICAgICBzY2FsZSA9IHNpemUgLyAxMDAwOwogICAgICByZXR1cm4gd2lkdGggKiBzY2FsZTsKICAgIH07CgogICAgU3RhbmRhcmRGb250LmlzU3RhbmRhcmRGb250ID0gZnVuY3Rpb24obmFtZSkgewogICAgICByZXR1cm4gbmFtZSBpbiBTVEFOREFSRF9GT05UUzsKICAgIH07CgogICAgU1RBTkRBUkRfRk9OVFMgPSB7CiAgICAgICJDb3VyaWVyIjogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyAiLy4uL2ZvbnQvZGF0YS9Db3VyaWVyLmFmbSIsICd1dGY4Jyk7CiAgICAgIH0sCiAgICAgICJDb3VyaWVyLUJvbGQiOiBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKF9fZGlybmFtZSArICIvLi4vZm9udC9kYXRhL0NvdXJpZXItQm9sZC5hZm0iLCAndXRmOCcpOwogICAgICB9LAogICAgICAiQ291cmllci1PYmxpcXVlIjogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyAiLy4uL2ZvbnQvZGF0YS9Db3VyaWVyLU9ibGlxdWUuYWZtIiwgJ3V0ZjgnKTsKICAgICAgfSwKICAgICAgIkNvdXJpZXItQm9sZE9ibGlxdWUiOiBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKF9fZGlybmFtZSArICIvLi4vZm9udC9kYXRhL0NvdXJpZXItQm9sZE9ibGlxdWUuYWZtIiwgJ3V0ZjgnKTsKICAgICAgfSwKICAgICAgIkhlbHZldGljYSI6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoX19kaXJuYW1lICsgIi8uLi9mb250L2RhdGEvSGVsdmV0aWNhLmFmbSIsICd1dGY4Jyk7CiAgICAgIH0sCiAgICAgICJIZWx2ZXRpY2EtQm9sZCI6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoX19kaXJuYW1lICsgIi8uLi9mb250L2RhdGEvSGVsdmV0aWNhLUJvbGQuYWZtIiwgJ3V0ZjgnKTsKICAgICAgfSwKICAgICAgIkhlbHZldGljYS1PYmxpcXVlIjogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyAiLy4uL2ZvbnQvZGF0YS9IZWx2ZXRpY2EtT2JsaXF1ZS5hZm0iLCAndXRmOCcpOwogICAgICB9LAogICAgICAiSGVsdmV0aWNhLUJvbGRPYmxpcXVlIjogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyAiLy4uL2ZvbnQvZGF0YS9IZWx2ZXRpY2EtQm9sZE9ibGlxdWUuYWZtIiwgJ3V0ZjgnKTsKICAgICAgfSwKICAgICAgIlRpbWVzLVJvbWFuIjogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyAiLy4uL2ZvbnQvZGF0YS9UaW1lcy1Sb21hbi5hZm0iLCAndXRmOCcpOwogICAgICB9LAogICAgICAiVGltZXMtQm9sZCI6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoX19kaXJuYW1lICsgIi8uLi9mb250L2RhdGEvVGltZXMtQm9sZC5hZm0iLCAndXRmOCcpOwogICAgICB9LAogICAgICAiVGltZXMtSXRhbGljIjogZnVuY3Rpb24oKSB7CiAgICAgICAgcmV0dXJuIGZzLnJlYWRGaWxlU3luYyhfX2Rpcm5hbWUgKyAiLy4uL2ZvbnQvZGF0YS9UaW1lcy1JdGFsaWMuYWZtIiwgJ3V0ZjgnKTsKICAgICAgfSwKICAgICAgIlRpbWVzLUJvbGRJdGFsaWMiOiBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKF9fZGlybmFtZSArICIvLi4vZm9udC9kYXRhL1RpbWVzLUJvbGRJdGFsaWMuYWZtIiwgJ3V0ZjgnKTsKICAgICAgfSwKICAgICAgIlN5bWJvbCI6IGZ1bmN0aW9uKCkgewogICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmMoX19kaXJuYW1lICsgIi8uLi9mb250L2RhdGEvU3ltYm9sLmFmbSIsICd1dGY4Jyk7CiAgICAgIH0sCiAgICAgICJaYXBmRGluZ2JhdHMiOiBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKF9fZGlybmFtZSArICIvLi4vZm9udC9kYXRhL1phcGZEaW5nYmF0cy5hZm0iLCAndXRmOCcpOwogICAgICB9CiAgICB9OwoKICAgIHJldHVybiBTdGFuZGFyZEZvbnQ7CgogIH0pKFBERkZvbnQpOwoKICBtb2R1bGUuZXhwb3J0cyA9IFN0YW5kYXJkRm9udDsKCn0pLmNhbGwodGhpcyk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgIi8iKSkKCi8qKiovIH0pLAovKiAyOTMgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjEyLjYKKGZ1bmN0aW9uKCkgewogIHZhciBBRk1Gb250LCBmczsKCiAgZnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOwoKICBBRk1Gb250ID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIFdJTl9BTlNJX01BUCwgY2hhcmFjdGVyczsKCiAgICBBRk1Gb250Lm9wZW4gPSBmdW5jdGlvbihmaWxlbmFtZSkgewogICAgICByZXR1cm4gbmV3IEFGTUZvbnQoZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lLCAndXRmOCcpKTsKICAgIH07CgogICAgZnVuY3Rpb24gQUZNRm9udChjb250ZW50cykgewogICAgICB2YXIgZSwgaTsKICAgICAgdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzOwogICAgICB0aGlzLmF0dHJpYnV0ZXMgPSB7fTsKICAgICAgdGhpcy5nbHlwaFdpZHRocyA9IHt9OwogICAgICB0aGlzLmJvdW5kaW5nQm94ZXMgPSB7fTsKICAgICAgdGhpcy5rZXJuUGFpcnMgPSB7fTsKICAgICAgdGhpcy5wYXJzZSgpOwogICAgICB0aGlzLmNoYXJXaWR0aHMgPSAoZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGosIHJlc3VsdHM7CiAgICAgICAgcmVzdWx0cyA9IFtdOwogICAgICAgIGZvciAoaSA9IGogPSAwOyBqIDw9IDI1NTsgaSA9ICsraikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKHRoaXMuZ2x5cGhXaWR0aHNbY2hhcmFjdGVyc1tpXV0pOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgfSkuY2FsbCh0aGlzKTsKICAgICAgdGhpcy5iYm94ID0gKGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBqLCBsZW4sIHJlZiwgcmVzdWx0czsKICAgICAgICByZWYgPSB0aGlzLmF0dHJpYnV0ZXNbJ0ZvbnRCQm94J10uc3BsaXQoL1xzKy8pOwogICAgICAgIHJlc3VsdHMgPSBbXTsKICAgICAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICAgIGUgPSByZWZbal07CiAgICAgICAgICByZXN1bHRzLnB1c2goK2UpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgfSkuY2FsbCh0aGlzKTsKICAgICAgdGhpcy5hc2NlbmRlciA9ICsodGhpcy5hdHRyaWJ1dGVzWydBc2NlbmRlciddIHx8IDApOwogICAgICB0aGlzLmRlc2NlbmRlciA9ICsodGhpcy5hdHRyaWJ1dGVzWydEZXNjZW5kZXInXSB8fCAwKTsKICAgICAgdGhpcy5saW5lR2FwID0gKHRoaXMuYmJveFszXSAtIHRoaXMuYmJveFsxXSkgLSAodGhpcy5hc2NlbmRlciAtIHRoaXMuZGVzY2VuZGVyKTsKICAgIH0KCiAgICBBRk1Gb250LnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgYSwgaiwga2V5LCBsZW4sIGxpbmUsIG1hdGNoLCBuYW1lLCByZWYsIHNlY3Rpb24sIHZhbHVlOwogICAgICBzZWN0aW9uID0gJyc7CiAgICAgIHJlZiA9IHRoaXMuY29udGVudHMuc3BsaXQoJ1xuJyk7CiAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykgewogICAgICAgIGxpbmUgPSByZWZbal07CiAgICAgICAgaWYgKG1hdGNoID0gbGluZS5tYXRjaCgvXlN0YXJ0KFx3KykvKSkgewogICAgICAgICAgc2VjdGlvbiA9IG1hdGNoWzFdOwogICAgICAgICAgY29udGludWU7CiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCA9IGxpbmUubWF0Y2goL15FbmQoXHcrKS8pKSB7CiAgICAgICAgICBzZWN0aW9uID0gJyc7CiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgc3dpdGNoIChzZWN0aW9uKSB7CiAgICAgICAgICBjYXNlICdGb250TWV0cmljcyc6CiAgICAgICAgICAgIG1hdGNoID0gbGluZS5tYXRjaCgvKF5cdyspXHMrKC4qKS8pOwogICAgICAgICAgICBrZXkgPSBtYXRjaFsxXTsKICAgICAgICAgICAgdmFsdWUgPSBtYXRjaFsyXTsKICAgICAgICAgICAgaWYgKGEgPSB0aGlzLmF0dHJpYnV0ZXNba2V5XSkgewogICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShhKSkgewogICAgICAgICAgICAgICAgYSA9IHRoaXMuYXR0cmlidXRlc1trZXldID0gW2FdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBhLnB1c2godmFsdWUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRoaXMuYXR0cmlidXRlc1trZXldID0gdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdDaGFyTWV0cmljcyc6CiAgICAgICAgICAgIGlmICghL15DSD9ccy8udGVzdChsaW5lKSkgewogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5hbWUgPSBsaW5lLm1hdGNoKC9cYk5ccysoXC4/XHcrKVxzKjsvKVsxXTsKICAgICAgICAgICAgdGhpcy5nbHlwaFdpZHRoc1tuYW1lXSA9ICtsaW5lLm1hdGNoKC9cYldYXHMrKFxkKylccyo7LylbMV07CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnS2VyblBhaXJzJzoKICAgICAgICAgICAgbWF0Y2ggPSBsaW5lLm1hdGNoKC9eS1BYXHMrKFwuP1x3KylccysoXC4/XHcrKVxzKygtP1xkKykvKTsKICAgICAgICAgICAgaWYgKG1hdGNoKSB7CiAgICAgICAgICAgICAgdGhpcy5rZXJuUGFpcnNbbWF0Y2hbMV0gKyAnXDAnICsgbWF0Y2hbMl1dID0gcGFyc2VJbnQobWF0Y2hbM10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9OwoKICAgIFdJTl9BTlNJX01BUCA9IHsKICAgICAgNDAyOiAxMzEsCiAgICAgIDgyMTE6IDE1MCwKICAgICAgODIxMjogMTUxLAogICAgICA4MjE2OiAxNDUsCiAgICAgIDgyMTc6IDE0NiwKICAgICAgODIxODogMTMwLAogICAgICA4MjIwOiAxNDcsCiAgICAgIDgyMjE6IDE0OCwKICAgICAgODIyMjogMTMyLAogICAgICA4MjI0OiAxMzQsCiAgICAgIDgyMjU6IDEzNSwKICAgICAgODIyNjogMTQ5LAogICAgICA4MjMwOiAxMzMsCiAgICAgIDgzNjQ6IDEyOCwKICAgICAgODI0MDogMTM3LAogICAgICA4MjQ5OiAxMzksCiAgICAgIDgyNTA6IDE1NSwKICAgICAgNzEwOiAxMzYsCiAgICAgIDg0ODI6IDE1MywKICAgICAgMzM4OiAxNDAsCiAgICAgIDMzOTogMTU2LAogICAgICA3MzI6IDE1MiwKICAgICAgMzUyOiAxMzgsCiAgICAgIDM1MzogMTU0LAogICAgICAzNzY6IDE1OSwKICAgICAgMzgxOiAxNDIsCiAgICAgIDM4MjogMTU4CiAgICB9OwoKICAgIEFGTUZvbnQucHJvdG90eXBlLmVuY29kZVRleHQgPSBmdW5jdGlvbih0ZXh0KSB7CiAgICAgIHZhciBjaGFyLCBpLCBqLCByZWYsIHJlczsKICAgICAgcmVzID0gW107CiAgICAgIGZvciAoaSA9IGogPSAwLCByZWYgPSB0ZXh0Lmxlbmd0aDsgMCA8PSByZWYgPyBqIDwgcmVmIDogaiA+IHJlZjsgaSA9IDAgPD0gcmVmID8gKytqIDogLS1qKSB7CiAgICAgICAgY2hhciA9IHRleHQuY2hhckNvZGVBdChpKTsKICAgICAgICBjaGFyID0gV0lOX0FOU0lfTUFQW2NoYXJdIHx8IGNoYXI7CiAgICAgICAgcmVzLnB1c2goY2hhci50b1N0cmluZygxNikpOwogICAgICB9CiAgICAgIHJldHVybiByZXM7CiAgICB9OwoKICAgIEFGTUZvbnQucHJvdG90eXBlLmdseXBoc0ZvclN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZykgewogICAgICB2YXIgY2hhckNvZGUsIGdseXBocywgaSwgaiwgcmVmOwogICAgICBnbHlwaHMgPSBbXTsKICAgICAgZm9yIChpID0gaiA9IDAsIHJlZiA9IHN0cmluZy5sZW5ndGg7IDAgPD0gcmVmID8gaiA8IHJlZiA6IGogPiByZWY7IGkgPSAwIDw9IHJlZiA/ICsraiA6IC0taikgewogICAgICAgIGNoYXJDb2RlID0gc3RyaW5nLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgZ2x5cGhzLnB1c2godGhpcy5jaGFyYWN0ZXJUb0dseXBoKGNoYXJDb2RlKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGdseXBoczsKICAgIH07CgogICAgQUZNRm9udC5wcm90b3R5cGUuY2hhcmFjdGVyVG9HbHlwaCA9IGZ1bmN0aW9uKGNoYXJhY3RlcikgewogICAgICByZXR1cm4gY2hhcmFjdGVyc1tXSU5fQU5TSV9NQVBbY2hhcmFjdGVyXSB8fCBjaGFyYWN0ZXJdIHx8ICcubm90ZGVmJzsKICAgIH07CgogICAgQUZNRm9udC5wcm90b3R5cGUud2lkdGhPZkdseXBoID0gZnVuY3Rpb24oZ2x5cGgpIHsKICAgICAgcmV0dXJuIHRoaXMuZ2x5cGhXaWR0aHNbZ2x5cGhdIHx8IDA7CiAgICB9OwoKICAgIEFGTUZvbnQucHJvdG90eXBlLmdldEtlcm5QYWlyID0gZnVuY3Rpb24obGVmdCwgcmlnaHQpIHsKICAgICAgcmV0dXJuIHRoaXMua2VyblBhaXJzW2xlZnQgKyAnXDAnICsgcmlnaHRdIHx8IDA7CiAgICB9OwoKICAgIEFGTUZvbnQucHJvdG90eXBlLmFkdmFuY2VzRm9yR2x5cGhzID0gZnVuY3Rpb24oZ2x5cGhzKSB7CiAgICAgIHZhciBhZHZhbmNlcywgaW5kZXgsIGosIGxlZnQsIGxlbiwgcmlnaHQ7CiAgICAgIGFkdmFuY2VzID0gW107CiAgICAgIGZvciAoaW5kZXggPSBqID0gMCwgbGVuID0gZ2x5cGhzLmxlbmd0aDsgaiA8IGxlbjsgaW5kZXggPSArK2opIHsKICAgICAgICBsZWZ0ID0gZ2x5cGhzW2luZGV4XTsKICAgICAgICByaWdodCA9IGdseXBoc1tpbmRleCArIDFdOwogICAgICAgIGFkdmFuY2VzLnB1c2godGhpcy53aWR0aE9mR2x5cGgobGVmdCkgKyB0aGlzLmdldEtlcm5QYWlyKGxlZnQsIHJpZ2h0KSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGFkdmFuY2VzOwogICAgfTsKCiAgICBjaGFyYWN0ZXJzID0gJy5ub3RkZWYgICAgICAgLm5vdGRlZiAgICAgICAgLm5vdGRlZiAgICAgICAgLm5vdGRlZlxuLm5vdGRlZiAgICAgICAubm90ZGVmICAgICAgICAubm90ZGVmICAgICAgICAubm90ZGVmXG4ubm90ZGVmICAgICAgIC5ub3RkZWYgICAgICAgIC5ub3RkZWYgICAgICAgIC5ub3RkZWZcbi5ub3RkZWYgICAgICAgLm5vdGRlZiAgICAgICAgLm5vdGRlZiAgICAgICAgLm5vdGRlZlxuLm5vdGRlZiAgICAgICAubm90ZGVmICAgICAgICAubm90ZGVmICAgICAgICAubm90ZGVmXG4ubm90ZGVmICAgICAgIC5ub3RkZWYgICAgICAgIC5ub3RkZWYgICAgICAgIC5ub3RkZWZcbi5ub3RkZWYgICAgICAgLm5vdGRlZiAgICAgICAgLm5vdGRlZiAgICAgICAgLm5vdGRlZlxuLm5vdGRlZiAgICAgICAubm90ZGVmICAgICAgICAubm90ZGVmICAgICAgICAubm90ZGVmXG5cbnNwYWNlICAgICAgICAgZXhjbGFtICAgICAgICAgcXVvdGVkYmwgICAgICAgbnVtYmVyc2lnblxuZG9sbGFyICAgICAgICBwZXJjZW50ICAgICAgICBhbXBlcnNhbmQgICAgICBxdW90ZXNpbmdsZVxucGFyZW5sZWZ0ICAgICBwYXJlbnJpZ2h0ICAgICBhc3RlcmlzayAgICAgICBwbHVzXG5jb21tYSAgICAgICAgIGh5cGhlbiAgICAgICAgIHBlcmlvZCAgICAgICAgIHNsYXNoXG56ZXJvICAgICAgICAgIG9uZSAgICAgICAgICAgIHR3byAgICAgICAgICAgIHRocmVlXG5mb3VyICAgICAgICAgIGZpdmUgICAgICAgICAgIHNpeCAgICAgICAgICAgIHNldmVuXG5laWdodCAgICAgICAgIG5pbmUgICAgICAgICAgIGNvbG9uICAgICAgICAgIHNlbWljb2xvblxubGVzcyAgICAgICAgICBlcXVhbCAgICAgICAgICBncmVhdGVyICAgICAgICBxdWVzdGlvblxuXG5hdCAgICAgICAgICAgIEEgICAgICAgICAgICAgIEIgICAgICAgICAgICAgIENcbkQgICAgICAgICAgICAgRSAgICAgICAgICAgICAgRiAgICAgICAgICAgICAgR1xuSCAgICAgICAgICAgICBJICAgICAgICAgICAgICBKICAgICAgICAgICAgICBLXG5MICAgICAgICAgICAgIE0gICAgICAgICAgICAgIE4gICAgICAgICAgICAgIE9cblAgICAgICAgICAgICAgUSAgICAgICAgICAgICAgUiAgICAgICAgICAgICAgU1xuVCAgICAgICAgICAgICBVICAgICAgICAgICAgICBWICAgICAgICAgICAgICBXXG5YICAgICAgICAgICAgIFkgICAgICAgICAgICAgIFogICAgICAgICAgICAgIGJyYWNrZXRsZWZ0XG5iYWNrc2xhc2ggICAgIGJyYWNrZXRyaWdodCAgIGFzY2lpY2lyY3VtICAgIHVuZGVyc2NvcmVcblxuZ3JhdmUgICAgICAgICBhICAgICAgICAgICAgICBiICAgICAgICAgICAgICBjXG5kICAgICAgICAgICAgIGUgICAgICAgICAgICAgIGYgICAgICAgICAgICAgIGdcbmggICAgICAgICAgICAgaSAgICAgICAgICAgICAgaiAgICAgICAgICAgICAga1xubCAgICAgICAgICAgICBtICAgICAgICAgICAgICBuICAgICAgICAgICAgICBvXG5wICAgICAgICAgICAgIHEgICAgICAgICAgICAgIHIgICAgICAgICAgICAgIHNcbnQgICAgICAgICAgICAgdSAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgd1xueCAgICAgICAgICAgICB5ICAgICAgICAgICAgICB6ICAgICAgICAgICAgICBicmFjZWxlZnRcbmJhciAgICAgICAgICAgYnJhY2VyaWdodCAgICAgYXNjaWl0aWxkZSAgICAgLm5vdGRlZlxuXG5FdXJvICAgICAgICAgIC5ub3RkZWYgICAgICAgIHF1b3Rlc2luZ2xiYXNlIGZsb3JpblxucXVvdGVkYmxiYXNlICBlbGxpcHNpcyAgICAgICBkYWdnZXIgICAgICAgICBkYWdnZXJkYmxcbmNpcmN1bWZsZXggICAgcGVydGhvdXNhbmQgICAgU2Nhcm9uICAgICAgICAgZ3VpbHNpbmdsbGVmdFxuT0UgICAgICAgICAgICAubm90ZGVmICAgICAgICBaY2Fyb24gICAgICAgICAubm90ZGVmXG4ubm90ZGVmICAgICAgIHF1b3RlbGVmdCAgICAgIHF1b3RlcmlnaHQgICAgIHF1b3RlZGJsbGVmdFxucXVvdGVkYmxyaWdodCBidWxsZXQgICAgICAgICBlbmRhc2ggICAgICAgICBlbWRhc2hcbnRpbGRlICAgICAgICAgdHJhZGVtYXJrICAgICAgc2Nhcm9uICAgICAgICAgZ3VpbHNpbmdscmlnaHRcbm9lICAgICAgICAgICAgLm5vdGRlZiAgICAgICAgemNhcm9uICAgICAgICAgeWRpZXJlc2lzXG5cbnNwYWNlICAgICAgICAgZXhjbGFtZG93biAgICAgY2VudCAgICAgICAgICAgc3RlcmxpbmdcbmN1cnJlbmN5ICAgICAgeWVuICAgICAgICAgICAgYnJva2VuYmFyICAgICAgc2VjdGlvblxuZGllcmVzaXMgICAgICBjb3B5cmlnaHQgICAgICBvcmRmZW1pbmluZSAgICBndWlsbGVtb3RsZWZ0XG5sb2dpY2Fsbm90ICAgIGh5cGhlbiAgICAgICAgIHJlZ2lzdGVyZWQgICAgIG1hY3JvblxuZGVncmVlICAgICAgICBwbHVzbWludXMgICAgICB0d29zdXBlcmlvciAgICB0aHJlZXN1cGVyaW9yXG5hY3V0ZSAgICAgICAgIG11ICAgICAgICAgICAgIHBhcmFncmFwaCAgICAgIHBlcmlvZGNlbnRlcmVkXG5jZWRpbGxhICAgICAgIG9uZXN1cGVyaW9yICAgIG9yZG1hc2N1bGluZSAgIGd1aWxsZW1vdHJpZ2h0XG5vbmVxdWFydGVyICAgIG9uZWhhbGYgICAgICAgIHRocmVlcXVhcnRlcnMgIHF1ZXN0aW9uZG93blxuXG5BZ3JhdmUgICAgICAgIEFhY3V0ZSAgICAgICAgIEFjaXJjdW1mbGV4ICAgIEF0aWxkZVxuQWRpZXJlc2lzICAgICBBcmluZyAgICAgICAgICBBRSAgICAgICAgICAgICBDY2VkaWxsYVxuRWdyYXZlICAgICAgICBFYWN1dGUgICAgICAgICBFY2lyY3VtZmxleCAgICBFZGllcmVzaXNcbklncmF2ZSAgICAgICAgSWFjdXRlICAgICAgICAgSWNpcmN1bWZsZXggICAgSWRpZXJlc2lzXG5FdGggICAgICAgICAgIE50aWxkZSAgICAgICAgIE9ncmF2ZSAgICAgICAgIE9hY3V0ZVxuT2NpcmN1bWZsZXggICBPdGlsZGUgICAgICAgICBPZGllcmVzaXMgICAgICBtdWx0aXBseVxuT3NsYXNoICAgICAgICBVZ3JhdmUgICAgICAgICBVYWN1dGUgICAgICAgICBVY2lyY3VtZmxleFxuVWRpZXJlc2lzICAgICBZYWN1dGUgICAgICAgICBUaG9ybiAgICAgICAgICBnZXJtYW5kYmxzXG5cbmFncmF2ZSAgICAgICAgYWFjdXRlICAgICAgICAgYWNpcmN1bWZsZXggICAgYXRpbGRlXG5hZGllcmVzaXMgICAgIGFyaW5nICAgICAgICAgIGFlICAgICAgICAgICAgIGNjZWRpbGxhXG5lZ3JhdmUgICAgICAgIGVhY3V0ZSAgICAgICAgIGVjaXJjdW1mbGV4ICAgIGVkaWVyZXNpc1xuaWdyYXZlICAgICAgICBpYWN1dGUgICAgICAgICBpY2lyY3VtZmxleCAgICBpZGllcmVzaXNcbmV0aCAgICAgICAgICAgbnRpbGRlICAgICAgICAgb2dyYXZlICAgICAgICAgb2FjdXRlXG5vY2lyY3VtZmxleCAgIG90aWxkZSAgICAgICAgIG9kaWVyZXNpcyAgICAgIGRpdmlkZVxub3NsYXNoICAgICAgICB1Z3JhdmUgICAgICAgICB1YWN1dGUgICAgICAgICB1Y2lyY3VtZmxleFxudWRpZXJlc2lzICAgICB5YWN1dGUgICAgICAgICB0aG9ybiAgICAgICAgICB5ZGllcmVzaXMnLnNwbGl0KC9ccysvKTsKCiAgICByZXR1cm4gQUZNRm9udDsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBBRk1Gb250OwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMjk0ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgRW1iZWRkZWRGb250LCBQREZGb250LCBQREZPYmplY3QsCiAgICBleHRlbmQgPSBmdW5jdGlvbihjaGlsZCwgcGFyZW50KSB7IGZvciAodmFyIGtleSBpbiBwYXJlbnQpIHsgaWYgKGhhc1Byb3AuY2FsbChwYXJlbnQsIGtleSkpIGNoaWxkW2tleV0gPSBwYXJlbnRba2V5XTsgfSBmdW5jdGlvbiBjdG9yKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gY2hpbGQ7IH0gY3Rvci5wcm90b3R5cGUgPSBwYXJlbnQucHJvdG90eXBlOyBjaGlsZC5wcm90b3R5cGUgPSBuZXcgY3RvcigpOyBjaGlsZC5fX3N1cGVyX18gPSBwYXJlbnQucHJvdG90eXBlOyByZXR1cm4gY2hpbGQ7IH0sCiAgICBoYXNQcm9wID0ge30uaGFzT3duUHJvcGVydHksCiAgICBzbGljZSA9IFtdLnNsaWNlOwoKICBQREZGb250ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MCk7CgogIFBERk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpOwoKICBFbWJlZGRlZEZvbnQgPSAoZnVuY3Rpb24oc3VwZXJDbGFzcykgewogICAgdmFyIHRvSGV4OwoKICAgIGV4dGVuZChFbWJlZGRlZEZvbnQsIHN1cGVyQ2xhc3MpOwoKICAgIGZ1bmN0aW9uIEVtYmVkZGVkRm9udChkb2N1bWVudCwgZm9udCwgaWQpIHsKICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50OwogICAgICB0aGlzLmZvbnQgPSBmb250OwogICAgICB0aGlzLmlkID0gaWQ7CiAgICAgIHRoaXMuc3Vic2V0ID0gdGhpcy5mb250LmNyZWF0ZVN1YnNldCgpOwogICAgICB0aGlzLnVuaWNvZGUgPSBbWzBdXTsKICAgICAgdGhpcy53aWR0aHMgPSBbdGhpcy5mb250LmdldEdseXBoKDApLmFkdmFuY2VXaWR0aF07CiAgICAgIHRoaXMubmFtZSA9IHRoaXMuZm9udC5wb3N0c2NyaXB0TmFtZTsKICAgICAgdGhpcy5zY2FsZSA9IDEwMDAgLyB0aGlzLmZvbnQudW5pdHNQZXJFbTsKICAgICAgdGhpcy5hc2NlbmRlciA9IHRoaXMuZm9udC5hc2NlbnQgKiB0aGlzLnNjYWxlOwogICAgICB0aGlzLmRlc2NlbmRlciA9IHRoaXMuZm9udC5kZXNjZW50ICogdGhpcy5zY2FsZTsKICAgICAgdGhpcy5saW5lR2FwID0gdGhpcy5mb250LmxpbmVHYXAgKiB0aGlzLnNjYWxlOwogICAgICB0aGlzLmJib3ggPSB0aGlzLmZvbnQuYmJveDsKICAgICAgdGhpcy5sYXlvdXRDYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAgICB9CgogICAgRW1iZWRkZWRGb250LnByb3RvdHlwZS5sYXlvdXRSdW4gPSBmdW5jdGlvbih0ZXh0LCBmZWF0dXJlcykgewogICAgICB2YXIgaSwgaiwga2V5LCBsZW4sIHBvc2l0aW9uLCByZWYsIHJ1bjsKICAgICAgcnVuID0gdGhpcy5mb250LmxheW91dCh0ZXh0LCBmZWF0dXJlcyk7CiAgICAgIHJlZiA9IHJ1bi5wb3NpdGlvbnM7CiAgICAgIGZvciAoaSA9IGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBpID0gKytqKSB7CiAgICAgICAgcG9zaXRpb24gPSByZWZbaV07CiAgICAgICAgZm9yIChrZXkgaW4gcG9zaXRpb24pIHsKICAgICAgICAgIHBvc2l0aW9uW2tleV0gKj0gdGhpcy5zY2FsZTsKICAgICAgICB9CiAgICAgICAgcG9zaXRpb24uYWR2YW5jZVdpZHRoID0gcnVuLmdseXBoc1tpXS5hZHZhbmNlV2lkdGggKiB0aGlzLnNjYWxlOwogICAgICB9CiAgICAgIHJldHVybiBydW47CiAgICB9OwoKICAgIEVtYmVkZGVkRm9udC5wcm90b3R5cGUubGF5b3V0Q2FjaGVkID0gZnVuY3Rpb24odGV4dCkgewogICAgICB2YXIgY2FjaGVkLCBydW47CiAgICAgIGlmIChjYWNoZWQgPSB0aGlzLmxheW91dENhY2hlW3RleHRdKSB7CiAgICAgICAgcmV0dXJuIGNhY2hlZDsKICAgICAgfQogICAgICBydW4gPSB0aGlzLmxheW91dFJ1bih0ZXh0KTsKICAgICAgdGhpcy5sYXlvdXRDYWNoZVt0ZXh0XSA9IHJ1bjsKICAgICAgcmV0dXJuIHJ1bjsKICAgIH07CgogICAgRW1iZWRkZWRGb250LnByb3RvdHlwZS5sYXlvdXQgPSBmdW5jdGlvbih0ZXh0LCBmZWF0dXJlcywgb25seVdpZHRoKSB7CiAgICAgIHZhciBhZHZhbmNlV2lkdGgsIGdseXBocywgaW5kZXgsIGxhc3QsIHBvc2l0aW9ucywgcmVmLCBydW47CiAgICAgIGlmIChvbmx5V2lkdGggPT0gbnVsbCkgewogICAgICAgIG9ubHlXaWR0aCA9IGZhbHNlOwogICAgICB9CiAgICAgIGlmIChmZWF0dXJlcykgewogICAgICAgIHJldHVybiB0aGlzLmxheW91dFJ1bih0ZXh0LCBmZWF0dXJlcyk7CiAgICAgIH0KICAgICAgZ2x5cGhzID0gb25seVdpZHRoID8gbnVsbCA6IFtdOwogICAgICBwb3NpdGlvbnMgPSBvbmx5V2lkdGggPyBudWxsIDogW107CiAgICAgIGFkdmFuY2VXaWR0aCA9IDA7CiAgICAgIGxhc3QgPSAwOwogICAgICBpbmRleCA9IDA7CiAgICAgIHdoaWxlIChpbmRleCA8PSB0ZXh0Lmxlbmd0aCkgewogICAgICAgIGlmICgoaW5kZXggPT09IHRleHQubGVuZ3RoICYmIGxhc3QgPCBpbmRleCkgfHwgKChyZWYgPSB0ZXh0LmNoYXJBdChpbmRleCkpID09PSAnICcgfHwgcmVmID09PSAnXHQnKSkgewogICAgICAgICAgcnVuID0gdGhpcy5sYXlvdXRDYWNoZWQodGV4dC5zbGljZShsYXN0LCArK2luZGV4KSk7CiAgICAgICAgICBpZiAoIW9ubHlXaWR0aCkgewogICAgICAgICAgICBnbHlwaHMucHVzaC5hcHBseShnbHlwaHMsIHJ1bi5nbHlwaHMpOwogICAgICAgICAgICBwb3NpdGlvbnMucHVzaC5hcHBseShwb3NpdGlvbnMsIHJ1bi5wb3NpdGlvbnMpOwogICAgICAgICAgfQogICAgICAgICAgYWR2YW5jZVdpZHRoICs9IHJ1bi5hZHZhbmNlV2lkdGg7CiAgICAgICAgICBsYXN0ID0gaW5kZXg7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGluZGV4Kys7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB7CiAgICAgICAgZ2x5cGhzOiBnbHlwaHMsCiAgICAgICAgcG9zaXRpb25zOiBwb3NpdGlvbnMsCiAgICAgICAgYWR2YW5jZVdpZHRoOiBhZHZhbmNlV2lkdGgKICAgICAgfTsKICAgIH07CgogICAgRW1iZWRkZWRGb250LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbih0ZXh0LCBmZWF0dXJlcykgewogICAgICB2YXIgYmFzZSwgYmFzZTEsIGdpZCwgZ2x5cGgsIGdseXBocywgaSwgaiwgbGVuLCBwb3NpdGlvbnMsIHJlZiwgcmVzOwogICAgICByZWYgPSB0aGlzLmxheW91dCh0ZXh0LCBmZWF0dXJlcyksIGdseXBocyA9IHJlZi5nbHlwaHMsIHBvc2l0aW9ucyA9IHJlZi5wb3NpdGlvbnM7CiAgICAgIHJlcyA9IFtdOwogICAgICBmb3IgKGkgPSBqID0gMCwgbGVuID0gZ2x5cGhzLmxlbmd0aDsgaiA8IGxlbjsgaSA9ICsraikgewogICAgICAgIGdseXBoID0gZ2x5cGhzW2ldOwogICAgICAgIGdpZCA9IHRoaXMuc3Vic2V0LmluY2x1ZGVHbHlwaChnbHlwaC5pZCk7CiAgICAgICAgcmVzLnB1c2goKCcwMDAwJyArIGdpZC50b1N0cmluZygxNikpLnNsaWNlKC00KSk7CiAgICAgICAgaWYgKChiYXNlID0gdGhpcy53aWR0aHMpW2dpZF0gPT0gbnVsbCkgewogICAgICAgICAgYmFzZVtnaWRdID0gZ2x5cGguYWR2YW5jZVdpZHRoICogdGhpcy5zY2FsZTsKICAgICAgICB9CiAgICAgICAgaWYgKChiYXNlMSA9IHRoaXMudW5pY29kZSlbZ2lkXSA9PSBudWxsKSB7CiAgICAgICAgICBiYXNlMVtnaWRdID0gZ2x5cGguY29kZVBvaW50czsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIFtyZXMsIHBvc2l0aW9uc107CiAgICB9OwoKICAgIEVtYmVkZGVkRm9udC5wcm90b3R5cGUud2lkdGhPZlN0cmluZyA9IGZ1bmN0aW9uKHN0cmluZywgc2l6ZSwgZmVhdHVyZXMpIHsKICAgICAgdmFyIHNjYWxlLCB3aWR0aDsKICAgICAgd2lkdGggPSB0aGlzLmxheW91dChzdHJpbmcsIGZlYXR1cmVzLCB0cnVlKS5hZHZhbmNlV2lkdGg7CiAgICAgIHNjYWxlID0gc2l6ZSAvIDEwMDA7CiAgICAgIHJldHVybiB3aWR0aCAqIHNjYWxlOwogICAgfTsKCiAgICBFbWJlZGRlZEZvbnQucHJvdG90eXBlLmVtYmVkID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBiYm94LCBkZXNjZW5kYW50Rm9udCwgZGVzY3JpcHRvciwgZmFtaWx5Q2xhc3MsIGZsYWdzLCBmb250RmlsZSwgaSwgaXNDRkYsIG5hbWUsIHJlZiwgdGFnOwogICAgICBpc0NGRiA9IHRoaXMuc3Vic2V0LmNmZiAhPSBudWxsOwogICAgICBmb250RmlsZSA9IHRoaXMuZG9jdW1lbnQucmVmKCk7CiAgICAgIGlmIChpc0NGRikgewogICAgICAgIGZvbnRGaWxlLmRhdGEuU3VidHlwZSA9ICdDSURGb250VHlwZTBDJzsKICAgICAgfQogICAgICB0aGlzLnN1YnNldC5lbmNvZGVTdHJlYW0oKS5waXBlKGZvbnRGaWxlKTsKICAgICAgZmFtaWx5Q2xhc3MgPSAoKChyZWYgPSB0aGlzLmZvbnRbJ09TLzInXSkgIT0gbnVsbCA/IHJlZi5zRmFtaWx5Q2xhc3MgOiB2b2lkIDApIHx8IDApID4+IDg7CiAgICAgIGZsYWdzID0gMDsKICAgICAgaWYgKHRoaXMuZm9udC5wb3N0LmlzRml4ZWRQaXRjaCkgewogICAgICAgIGZsYWdzIHw9IDEgPDwgMDsKICAgICAgfQogICAgICBpZiAoKDEgPD0gZmFtaWx5Q2xhc3MgJiYgZmFtaWx5Q2xhc3MgPD0gNykpIHsKICAgICAgICBmbGFncyB8PSAxIDw8IDE7CiAgICAgIH0KICAgICAgZmxhZ3MgfD0gMSA8PCAyOwogICAgICBpZiAoZmFtaWx5Q2xhc3MgPT09IDEwKSB7CiAgICAgICAgZmxhZ3MgfD0gMSA8PCAzOwogICAgICB9CiAgICAgIGlmICh0aGlzLmZvbnQuaGVhZC5tYWNTdHlsZS5pdGFsaWMpIHsKICAgICAgICBmbGFncyB8PSAxIDw8IDY7CiAgICAgIH0KICAgICAgdGFnID0gKChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgaiwgcmVzdWx0czsKICAgICAgICByZXN1bHRzID0gW107CiAgICAgICAgZm9yIChpID0gaiA9IDA7IGogPCA2OyBpID0gKytqKSB7CiAgICAgICAgICByZXN1bHRzLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShNYXRoLnJhbmRvbSgpICogMjYgKyA2NSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0czsKICAgICAgfSkoKSkuam9pbignJyk7CiAgICAgIG5hbWUgPSB0YWcgKyAnKycgKyB0aGlzLmZvbnQucG9zdHNjcmlwdE5hbWU7CiAgICAgIGJib3ggPSB0aGlzLmZvbnQuYmJveDsKICAgICAgZGVzY3JpcHRvciA9IHRoaXMuZG9jdW1lbnQucmVmKHsKICAgICAgICBUeXBlOiAnRm9udERlc2NyaXB0b3InLAogICAgICAgIEZvbnROYW1lOiBuYW1lLAogICAgICAgIEZsYWdzOiBmbGFncywKICAgICAgICBGb250QkJveDogW2Jib3gubWluWCAqIHRoaXMuc2NhbGUsIGJib3gubWluWSAqIHRoaXMuc2NhbGUsIGJib3gubWF4WCAqIHRoaXMuc2NhbGUsIGJib3gubWF4WSAqIHRoaXMuc2NhbGVdLAogICAgICAgIEl0YWxpY0FuZ2xlOiB0aGlzLmZvbnQuaXRhbGljQW5nbGUsCiAgICAgICAgQXNjZW50OiB0aGlzLmFzY2VuZGVyLAogICAgICAgIERlc2NlbnQ6IHRoaXMuZGVzY2VuZGVyLAogICAgICAgIENhcEhlaWdodDogKHRoaXMuZm9udC5jYXBIZWlnaHQgfHwgdGhpcy5mb250LmFzY2VudCkgKiB0aGlzLnNjYWxlLAogICAgICAgIFhIZWlnaHQ6ICh0aGlzLmZvbnQueEhlaWdodCB8fCAwKSAqIHRoaXMuc2NhbGUsCiAgICAgICAgU3RlbVY6IDAKICAgICAgfSk7CiAgICAgIGlmIChpc0NGRikgewogICAgICAgIGRlc2NyaXB0b3IuZGF0YS5Gb250RmlsZTMgPSBmb250RmlsZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkZXNjcmlwdG9yLmRhdGEuRm9udEZpbGUyID0gZm9udEZpbGU7CiAgICAgIH0KICAgICAgZGVzY3JpcHRvci5lbmQoKTsKICAgICAgZGVzY2VuZGFudEZvbnQgPSB0aGlzLmRvY3VtZW50LnJlZih7CiAgICAgICAgVHlwZTogJ0ZvbnQnLAogICAgICAgIFN1YnR5cGU6IGlzQ0ZGID8gJ0NJREZvbnRUeXBlMCcgOiAnQ0lERm9udFR5cGUyJywKICAgICAgICBCYXNlRm9udDogbmFtZSwKICAgICAgICBDSURTeXN0ZW1JbmZvOiB7CiAgICAgICAgICBSZWdpc3RyeTogbmV3IFN0cmluZygnQWRvYmUnKSwKICAgICAgICAgIE9yZGVyaW5nOiBuZXcgU3RyaW5nKCdJZGVudGl0eScpLAogICAgICAgICAgU3VwcGxlbWVudDogMAogICAgICAgIH0sCiAgICAgICAgRm9udERlc2NyaXB0b3I6IGRlc2NyaXB0b3IsCiAgICAgICAgVzogWzAsIHRoaXMud2lkdGhzXQogICAgICB9KTsKICAgICAgZGVzY2VuZGFudEZvbnQuZW5kKCk7CiAgICAgIHRoaXMuZGljdGlvbmFyeS5kYXRhID0gewogICAgICAgIFR5cGU6ICdGb250JywKICAgICAgICBTdWJ0eXBlOiAnVHlwZTAnLAogICAgICAgIEJhc2VGb250OiBuYW1lLAogICAgICAgIEVuY29kaW5nOiAnSWRlbnRpdHktSCcsCiAgICAgICAgRGVzY2VuZGFudEZvbnRzOiBbZGVzY2VuZGFudEZvbnRdLAogICAgICAgIFRvVW5pY29kZTogdGhpcy50b1VuaWNvZGVDbWFwKCkKICAgICAgfTsKICAgICAgcmV0dXJuIHRoaXMuZGljdGlvbmFyeS5lbmQoKTsKICAgIH07CgogICAgdG9IZXggPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGNvZGUsIGNvZGVQb2ludHMsIGNvZGVzOwogICAgICBjb2RlUG9pbnRzID0gMSA8PSBhcmd1bWVudHMubGVuZ3RoID8gc2xpY2UuY2FsbChhcmd1bWVudHMsIDApIDogW107CiAgICAgIGNvZGVzID0gKGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBqLCBsZW4sIHJlc3VsdHM7CiAgICAgICAgcmVzdWx0cyA9IFtdOwogICAgICAgIGZvciAoaiA9IDAsIGxlbiA9IGNvZGVQb2ludHMubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHsKICAgICAgICAgIGNvZGUgPSBjb2RlUG9pbnRzW2pdOwogICAgICAgICAgcmVzdWx0cy5wdXNoKCgnMDAwMCcgKyBjb2RlLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgIH0pKCk7CiAgICAgIHJldHVybiBjb2Rlcy5qb2luKCcnKTsKICAgIH07CgogICAgRW1iZWRkZWRGb250LnByb3RvdHlwZS50b1VuaWNvZGVDbWFwID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBjbWFwLCBjb2RlUG9pbnRzLCBlbmNvZGVkLCBlbnRyaWVzLCBqLCBrLCBsZW4sIGxlbjEsIHJlZiwgdmFsdWU7CiAgICAgIGNtYXAgPSB0aGlzLmRvY3VtZW50LnJlZigpOwogICAgICBlbnRyaWVzID0gW107CiAgICAgIHJlZiA9IHRoaXMudW5pY29kZTsKICAgICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7CiAgICAgICAgY29kZVBvaW50cyA9IHJlZltqXTsKICAgICAgICBlbmNvZGVkID0gW107CiAgICAgICAgZm9yIChrID0gMCwgbGVuMSA9IGNvZGVQb2ludHMubGVuZ3RoOyBrIDwgbGVuMTsgaysrKSB7CiAgICAgICAgICB2YWx1ZSA9IGNvZGVQb2ludHNba107CiAgICAgICAgICBpZiAodmFsdWUgPiAweGZmZmYpIHsKICAgICAgICAgICAgdmFsdWUgLT0gMHgxMDAwMDsKICAgICAgICAgICAgZW5jb2RlZC5wdXNoKHRvSGV4KHZhbHVlID4+PiAxMCAmIDB4M2ZmIHwgMHhkODAwKSk7CiAgICAgICAgICAgIHZhbHVlID0gMHhkYzAwIHwgdmFsdWUgJiAweDNmZjsKICAgICAgICAgIH0KICAgICAgICAgIGVuY29kZWQucHVzaCh0b0hleCh2YWx1ZSkpOwogICAgICAgIH0KICAgICAgICBlbnRyaWVzLnB1c2goIjwiICsgKGVuY29kZWQuam9pbignICcpKSArICI+Iik7CiAgICAgIH0KICAgICAgY21hcC5lbmQoIi9DSURJbml0IC9Qcm9jU2V0IGZpbmRyZXNvdXJjZSBiZWdpblxuMTIgZGljdCBiZWdpblxuYmVnaW5jbWFwXG4vQ0lEU3lzdGVtSW5mbyA8PFxuICAvUmVnaXN0cnkgKEFkb2JlKVxuICAvT3JkZXJpbmcgKFVDUylcbiAgL1N1cHBsZW1lbnQgMFxuPj4gZGVmXG4vQ01hcE5hbWUgL0Fkb2JlLUlkZW50aXR5LVVDUyBkZWZcbi9DTWFwVHlwZSAyIGRlZlxuMSBiZWdpbmNvZGVzcGFjZXJhbmdlXG48MDAwMD48ZmZmZj5cbmVuZGNvZGVzcGFjZXJhbmdlXG4xIGJlZ2luYmZyYW5nZVxuPDAwMDA+IDwiICsgKHRvSGV4KGVudHJpZXMubGVuZ3RoIC0gMSkpICsgIj4gWyIgKyAoZW50cmllcy5qb2luKCcgJykpICsgIl1cbmVuZGJmcmFuZ2VcbmVuZGNtYXBcbkNNYXBOYW1lIGN1cnJlbnRkaWN0IC9DTWFwIGRlZmluZXJlc291cmNlIHBvcFxuZW5kXG5lbmQiKTsKICAgICAgcmV0dXJuIGNtYXA7CiAgICB9OwoKICAgIHJldHVybiBFbWJlZGRlZEZvbnQ7CgogIH0pKFBERkZvbnQpOwoKICBtb2R1bGUuZXhwb3J0cyA9IEVtYmVkZGVkRm9udDsKCn0pLmNhbGwodGhpcyk7CgoKLyoqKi8gfSksCi8qIDI5NSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgooZnVuY3Rpb24oKSB7CiAgdmFyIExpbmVXcmFwcGVyLCBudW1iZXI7CgogIExpbmVXcmFwcGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOTYpOwoKICBudW1iZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KS5udW1iZXI7CgogIG1vZHVsZS5leHBvcnRzID0gewogICAgaW5pdFRleHQ6IGZ1bmN0aW9uKCkgewogICAgICB0aGlzLnggPSAwOwogICAgICB0aGlzLnkgPSAwOwogICAgICByZXR1cm4gdGhpcy5fbGluZUdhcCA9IDA7CiAgICB9LAogICAgbGluZUdhcDogZnVuY3Rpb24oX2xpbmVHYXApIHsKICAgICAgdGhpcy5fbGluZUdhcCA9IF9saW5lR2FwOwogICAgICByZXR1cm4gdGhpczsKICAgIH0sCiAgICBtb3ZlRG93bjogZnVuY3Rpb24obGluZXMpIHsKICAgICAgaWYgKGxpbmVzID09IG51bGwpIHsKICAgICAgICBsaW5lcyA9IDE7CiAgICAgIH0KICAgICAgdGhpcy55ICs9IHRoaXMuY3VycmVudExpbmVIZWlnaHQodHJ1ZSkgKiBsaW5lcyArIHRoaXMuX2xpbmVHYXA7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIG1vdmVVcDogZnVuY3Rpb24obGluZXMpIHsKICAgICAgaWYgKGxpbmVzID09IG51bGwpIHsKICAgICAgICBsaW5lcyA9IDE7CiAgICAgIH0KICAgICAgdGhpcy55IC09IHRoaXMuY3VycmVudExpbmVIZWlnaHQodHJ1ZSkgKiBsaW5lcyArIHRoaXMuX2xpbmVHYXA7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIF90ZXh0OiBmdW5jdGlvbih0ZXh0LCB4LCB5LCBvcHRpb25zLCBsaW5lQ2FsbGJhY2spIHsKICAgICAgdmFyIGosIGxlbiwgbGluZSwgcmVmLCB3cmFwcGVyOwogICAgICBvcHRpb25zID0gdGhpcy5faW5pdE9wdGlvbnMoeCwgeSwgb3B0aW9ucyk7CiAgICAgIHRleHQgPSB0ZXh0ID09IG51bGwgPyAnJyA6ICcnICsgdGV4dDsKICAgICAgaWYgKG9wdGlvbnMud29yZFNwYWNpbmcpIHsKICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKC9cc3syLH0vZywgJyAnKTsKICAgICAgfQogICAgICBpZiAob3B0aW9ucy53aWR0aCkgewogICAgICAgIHdyYXBwZXIgPSB0aGlzLl93cmFwcGVyOwogICAgICAgIGlmICghd3JhcHBlcikgewogICAgICAgICAgd3JhcHBlciA9IG5ldyBMaW5lV3JhcHBlcih0aGlzLCBvcHRpb25zKTsKICAgICAgICAgIHdyYXBwZXIub24oJ2xpbmUnLCBsaW5lQ2FsbGJhY2spOwogICAgICAgIH0KICAgICAgICB0aGlzLl93cmFwcGVyID0gb3B0aW9ucy5jb250aW51ZWQgPyB3cmFwcGVyIDogbnVsbDsKICAgICAgICB0aGlzLl90ZXh0T3B0aW9ucyA9IG9wdGlvbnMuY29udGludWVkID8gb3B0aW9ucyA6IG51bGw7CiAgICAgICAgd3JhcHBlci53cmFwKHRleHQsIG9wdGlvbnMpOwogICAgICB9IGVsc2UgewogICAgICAgIHJlZiA9IHRleHQuc3BsaXQoJ1xuJyk7CiAgICAgICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7CiAgICAgICAgICBsaW5lID0gcmVmW2pdOwogICAgICAgICAgbGluZUNhbGxiYWNrKGxpbmUsIG9wdGlvbnMpOwogICAgICAgIH0KICAgICAgfQogICAgICByZXR1cm4gdGhpczsKICAgIH0sCiAgICB0ZXh0OiBmdW5jdGlvbih0ZXh0LCB4LCB5LCBvcHRpb25zKSB7CiAgICAgIHJldHVybiB0aGlzLl90ZXh0KHRleHQsIHgsIHksIG9wdGlvbnMsIHRoaXMuX2xpbmUuYmluZCh0aGlzKSk7CiAgICB9LAogICAgd2lkdGhPZlN0cmluZzogZnVuY3Rpb24oc3RyaW5nLCBvcHRpb25zKSB7CiAgICAgIGlmIChvcHRpb25zID09IG51bGwpIHsKICAgICAgICBvcHRpb25zID0ge307CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuX2ZvbnQud2lkdGhPZlN0cmluZyhzdHJpbmcsIHRoaXMuX2ZvbnRTaXplLCBvcHRpb25zLmZlYXR1cmVzKSArIChvcHRpb25zLmNoYXJhY3RlclNwYWNpbmcgfHwgMCkgKiAoc3RyaW5nLmxlbmd0aCAtIDEpOwogICAgfSwKICAgIGhlaWdodE9mU3RyaW5nOiBmdW5jdGlvbih0ZXh0LCBvcHRpb25zKSB7CiAgICAgIHZhciBoZWlnaHQsIGxpbmVHYXAsIHJlZiwgeCwgeTsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICByZWYgPSB0aGlzLCB4ID0gcmVmLngsIHkgPSByZWYueTsKICAgICAgb3B0aW9ucyA9IHRoaXMuX2luaXRPcHRpb25zKG9wdGlvbnMpOwogICAgICBvcHRpb25zLmhlaWdodCA9IDJlMzA4OwogICAgICBsaW5lR2FwID0gb3B0aW9ucy5saW5lR2FwIHx8IHRoaXMuX2xpbmVHYXAgfHwgMDsKICAgICAgdGhpcy5fdGV4dCh0ZXh0LCB0aGlzLngsIHRoaXMueSwgb3B0aW9ucywgKGZ1bmN0aW9uKF90aGlzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGxpbmUsIG9wdGlvbnMpIHsKICAgICAgICAgIHJldHVybiBfdGhpcy55ICs9IF90aGlzLmN1cnJlbnRMaW5lSGVpZ2h0KHRydWUpICsgbGluZUdhcDsKICAgICAgICB9OwogICAgICB9KSh0aGlzKSk7CiAgICAgIGhlaWdodCA9IHRoaXMueSAtIHk7CiAgICAgIHRoaXMueCA9IHg7CiAgICAgIHRoaXMueSA9IHk7CiAgICAgIHJldHVybiBoZWlnaHQ7CiAgICB9LAogICAgbGlzdDogZnVuY3Rpb24obGlzdCwgeCwgeSwgb3B0aW9ucywgd3JhcHBlcikgewogICAgICB2YXIgZmxhdHRlbiwgaSwgaW5kZW50LCBpdGVtSW5kZW50LCBpdGVtcywgbGV2ZWwsIGxldmVscywgbWlkTGluZSwgcjsKICAgICAgb3B0aW9ucyA9IHRoaXMuX2luaXRPcHRpb25zKHgsIHksIG9wdGlvbnMpOwogICAgICBtaWRMaW5lID0gTWF0aC5yb3VuZCgodGhpcy5fZm9udC5hc2NlbmRlciAvIDEwMDAgKiB0aGlzLl9mb250U2l6ZSkgLyAyKTsKICAgICAgciA9IG9wdGlvbnMuYnVsbGV0UmFkaXVzIHx8IE1hdGgucm91bmQoKHRoaXMuX2ZvbnQuYXNjZW5kZXIgLyAxMDAwICogdGhpcy5fZm9udFNpemUpIC8gMyk7CiAgICAgIGluZGVudCA9IG9wdGlvbnMudGV4dEluZGVudCB8fCByICogNTsKICAgICAgaXRlbUluZGVudCA9IG9wdGlvbnMuYnVsbGV0SW5kZW50IHx8IHIgKiA4OwogICAgICBsZXZlbCA9IDE7CiAgICAgIGl0ZW1zID0gW107CiAgICAgIGxldmVscyA9IFtdOwogICAgICBmbGF0dGVuID0gZnVuY3Rpb24obGlzdCkgewogICAgICAgIHZhciBpLCBpdGVtLCBqLCBsZW4sIHJlc3VsdHM7CiAgICAgICAgcmVzdWx0cyA9IFtdOwogICAgICAgIGZvciAoaSA9IGogPSAwLCBsZW4gPSBsaXN0Lmxlbmd0aDsgaiA8IGxlbjsgaSA9ICsraikgewogICAgICAgICAgaXRlbSA9IGxpc3RbaV07CiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkgewogICAgICAgICAgICBsZXZlbCsrOwogICAgICAgICAgICBmbGF0dGVuKGl0ZW0pOwogICAgICAgICAgICByZXN1bHRzLnB1c2gobGV2ZWwtLSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pOwogICAgICAgICAgICByZXN1bHRzLnB1c2gobGV2ZWxzLnB1c2gobGV2ZWwpKTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgIH07CiAgICAgIGZsYXR0ZW4obGlzdCk7CiAgICAgIHdyYXBwZXIgPSBuZXcgTGluZVdyYXBwZXIodGhpcywgb3B0aW9ucyk7CiAgICAgIHdyYXBwZXIub24oJ2xpbmUnLCB0aGlzLl9saW5lLmJpbmQodGhpcykpOwogICAgICBsZXZlbCA9IDE7CiAgICAgIGkgPSAwOwogICAgICB3cmFwcGVyLm9uKCdmaXJzdExpbmUnLCAoZnVuY3Rpb24oX3RoaXMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgZGlmZiwgbDsKICAgICAgICAgIGlmICgobCA9IGxldmVsc1tpKytdKSAhPT0gbGV2ZWwpIHsKICAgICAgICAgICAgZGlmZiA9IGl0ZW1JbmRlbnQgKiAobCAtIGxldmVsKTsKICAgICAgICAgICAgX3RoaXMueCArPSBkaWZmOwogICAgICAgICAgICB3cmFwcGVyLmxpbmVXaWR0aCAtPSBkaWZmOwogICAgICAgICAgICBsZXZlbCA9IGw7CiAgICAgICAgICB9CiAgICAgICAgICBfdGhpcy5jaXJjbGUoX3RoaXMueCAtIGluZGVudCArIHIsIF90aGlzLnkgKyBtaWRMaW5lLCByKTsKICAgICAgICAgIHJldHVybiBfdGhpcy5maWxsKCk7CiAgICAgICAgfTsKICAgICAgfSkodGhpcykpOwogICAgICB3cmFwcGVyLm9uKCdzZWN0aW9uU3RhcnQnLCAoZnVuY3Rpb24oX3RoaXMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgcG9zOwogICAgICAgICAgcG9zID0gaW5kZW50ICsgaXRlbUluZGVudCAqIChsZXZlbCAtIDEpOwogICAgICAgICAgX3RoaXMueCArPSBwb3M7CiAgICAgICAgICByZXR1cm4gd3JhcHBlci5saW5lV2lkdGggLT0gcG9zOwogICAgICAgIH07CiAgICAgIH0pKHRoaXMpKTsKICAgICAgd3JhcHBlci5vbignc2VjdGlvbkVuZCcsIChmdW5jdGlvbihfdGhpcykgewogICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciBwb3M7CiAgICAgICAgICBwb3MgPSBpbmRlbnQgKyBpdGVtSW5kZW50ICogKGxldmVsIC0gMSk7CiAgICAgICAgICBfdGhpcy54IC09IHBvczsKICAgICAgICAgIHJldHVybiB3cmFwcGVyLmxpbmVXaWR0aCArPSBwb3M7CiAgICAgICAgfTsKICAgICAgfSkodGhpcykpOwogICAgICB3cmFwcGVyLndyYXAoaXRlbXMuam9pbignXG4nKSwgb3B0aW9ucyk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIF9pbml0T3B0aW9uczogZnVuY3Rpb24oeCwgeSwgb3B0aW9ucykgewogICAgICB2YXIga2V5LCByZWYsIHZhbDsKICAgICAgaWYgKHggPT0gbnVsbCkgewogICAgICAgIHggPSB7fTsKICAgICAgfQogICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7CiAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcpIHsKICAgICAgICBvcHRpb25zID0geDsKICAgICAgICB4ID0gbnVsbDsKICAgICAgfQogICAgICBvcHRpb25zID0gKGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBrLCBvcHRzLCB2OwogICAgICAgIG9wdHMgPSB7fTsKICAgICAgICBmb3IgKGsgaW4gb3B0aW9ucykgewogICAgICAgICAgdiA9IG9wdGlvbnNba107CiAgICAgICAgICBvcHRzW2tdID0gdjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG9wdHM7CiAgICAgIH0pKCk7CiAgICAgIGlmICh0aGlzLl90ZXh0T3B0aW9ucykgewogICAgICAgIHJlZiA9IHRoaXMuX3RleHRPcHRpb25zOwogICAgICAgIGZvciAoa2V5IGluIHJlZikgewogICAgICAgICAgdmFsID0gcmVmW2tleV07CiAgICAgICAgICBpZiAoa2V5ICE9PSAnY29udGludWVkJykgewogICAgICAgICAgICBpZiAob3B0aW9uc1trZXldID09IG51bGwpIHsKICAgICAgICAgICAgICBvcHRpb25zW2tleV0gPSB2YWw7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKHggIT0gbnVsbCkgewogICAgICAgIHRoaXMueCA9IHg7CiAgICAgIH0KICAgICAgaWYgKHkgIT0gbnVsbCkgewogICAgICAgIHRoaXMueSA9IHk7CiAgICAgIH0KICAgICAgaWYgKG9wdGlvbnMubGluZUJyZWFrICE9PSBmYWxzZSkgewogICAgICAgIGlmIChvcHRpb25zLndpZHRoID09IG51bGwpIHsKICAgICAgICAgIG9wdGlvbnMud2lkdGggPSB0aGlzLnBhZ2Uud2lkdGggLSB0aGlzLnggLSB0aGlzLnBhZ2UubWFyZ2lucy5yaWdodDsKICAgICAgICB9CiAgICAgIH0KICAgICAgb3B0aW9ucy5jb2x1bW5zIHx8IChvcHRpb25zLmNvbHVtbnMgPSAwKTsKICAgICAgaWYgKG9wdGlvbnMuY29sdW1uR2FwID09IG51bGwpIHsKICAgICAgICBvcHRpb25zLmNvbHVtbkdhcCA9IDE4OwogICAgICB9CiAgICAgIHJldHVybiBvcHRpb25zOwogICAgfSwKICAgIF9saW5lOiBmdW5jdGlvbih0ZXh0LCBvcHRpb25zLCB3cmFwcGVyKSB7CiAgICAgIHZhciBsaW5lR2FwOwogICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7CiAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICB9CiAgICAgIHRoaXMuX2ZyYWdtZW50KHRleHQsIHRoaXMueCwgdGhpcy55LCBvcHRpb25zKTsKICAgICAgbGluZUdhcCA9IG9wdGlvbnMubGluZUdhcCB8fCB0aGlzLl9saW5lR2FwIHx8IDA7CiAgICAgIGlmICghd3JhcHBlcikgewogICAgICAgIHJldHVybiB0aGlzLnggKz0gdGhpcy53aWR0aE9mU3RyaW5nKHRleHQpOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiB0aGlzLnkgKz0gdGhpcy5jdXJyZW50TGluZUhlaWdodCh0cnVlKSArIGxpbmVHYXA7CiAgICAgIH0KICAgIH0sCiAgICBfZnJhZ21lbnQ6IGZ1bmN0aW9uKHRleHQsIHgsIHksIG9wdGlvbnMpIHsKICAgICAgdmFyIGFkZFNlZ21lbnQsIGFsaWduLCBiYXNlLCBjaGFyYWN0ZXJTcGFjaW5nLCBjb21tYW5kcywgZCwgZW5jb2RlZCwgZW5jb2RlZFdvcmQsIGZsdXNoLCBoYWRPZmZzZXQsIGksIGosIGtleSwgbGFzdCwgbGVuLCBsZW4xLCBsaW5lV2lkdGgsIGxpbmVZLCBtLCBtb2RlLCBuYW1lLCBwb3MsIHBvc2l0aW9ucywgcG9zaXRpb25zV29yZCwgcmVmLCByZWYxLCByZWYyLCByZW5kZXJlZFdpZHRoLCBzY2FsZSwgc3BhY2UsIHNwYWNlV2lkdGgsIHRleHRXaWR0aCwgdmFsLCB3b3JkLCB3b3JkU3BhY2luZywgd29yZHM7CiAgICAgIHRleHQgPSAoJycgKyB0ZXh0KS5yZXBsYWNlKC9cbi9nLCAnJyk7CiAgICAgIGlmICh0ZXh0Lmxlbmd0aCA9PT0gMCkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBhbGlnbiA9IG9wdGlvbnMuYWxpZ24gfHwgJ2xlZnQnOwogICAgICB3b3JkU3BhY2luZyA9IG9wdGlvbnMud29yZFNwYWNpbmcgfHwgMDsKICAgICAgY2hhcmFjdGVyU3BhY2luZyA9IG9wdGlvbnMuY2hhcmFjdGVyU3BhY2luZyB8fCAwOwogICAgICBpZiAob3B0aW9ucy53aWR0aCkgewogICAgICAgIHN3aXRjaCAoYWxpZ24pIHsKICAgICAgICAgIGNhc2UgJ3JpZ2h0JzoKICAgICAgICAgICAgdGV4dFdpZHRoID0gdGhpcy53aWR0aE9mU3RyaW5nKHRleHQucmVwbGFjZSgvXHMrJC8sICcnKSwgb3B0aW9ucyk7CiAgICAgICAgICAgIHggKz0gb3B0aW9ucy5saW5lV2lkdGggLSB0ZXh0V2lkdGg7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnY2VudGVyJzoKICAgICAgICAgICAgeCArPSBvcHRpb25zLmxpbmVXaWR0aCAvIDIgLSBvcHRpb25zLnRleHRXaWR0aCAvIDI7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnanVzdGlmeSc6CiAgICAgICAgICAgIHdvcmRzID0gdGV4dC50cmltKCkuc3BsaXQoL1xzKy8pOwogICAgICAgICAgICB0ZXh0V2lkdGggPSB0aGlzLndpZHRoT2ZTdHJpbmcodGV4dC5yZXBsYWNlKC9ccysvZywgJycpLCBvcHRpb25zKTsKICAgICAgICAgICAgc3BhY2VXaWR0aCA9IHRoaXMud2lkdGhPZlN0cmluZygnICcpICsgY2hhcmFjdGVyU3BhY2luZzsKICAgICAgICAgICAgd29yZFNwYWNpbmcgPSBNYXRoLm1heCgwLCAob3B0aW9ucy5saW5lV2lkdGggLSB0ZXh0V2lkdGgpIC8gTWF0aC5tYXgoMSwgd29yZHMubGVuZ3RoIC0gMSkgLSBzcGFjZVdpZHRoKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmVuZGVyZWRXaWR0aCA9IG9wdGlvbnMudGV4dFdpZHRoICsgKHdvcmRTcGFjaW5nICogKG9wdGlvbnMud29yZENvdW50IC0gMSkpICsgKGNoYXJhY3RlclNwYWNpbmcgKiAodGV4dC5sZW5ndGggLSAxKSk7CiAgICAgIGlmIChvcHRpb25zLmxpbmspIHsKICAgICAgICB0aGlzLmxpbmsoeCwgeSwgcmVuZGVyZWRXaWR0aCwgdGhpcy5jdXJyZW50TGluZUhlaWdodCgpLCBvcHRpb25zLmxpbmspOwogICAgICB9CiAgICAgIGlmIChvcHRpb25zLnVuZGVybGluZSB8fCBvcHRpb25zLnN0cmlrZSkgewogICAgICAgIHRoaXMuc2F2ZSgpOwogICAgICAgIGlmICghb3B0aW9ucy5zdHJva2UpIHsKICAgICAgICAgIHRoaXMuc3Ryb2tlQ29sb3IuYXBwbHkodGhpcywgdGhpcy5fZmlsbENvbG9yKTsKICAgICAgICB9CiAgICAgICAgbGluZVdpZHRoID0gdGhpcy5fZm9udFNpemUgPCAxMCA/IDAuNSA6IE1hdGguZmxvb3IodGhpcy5fZm9udFNpemUgLyAxMCk7CiAgICAgICAgdGhpcy5saW5lV2lkdGgobGluZVdpZHRoKTsKICAgICAgICBkID0gb3B0aW9ucy51bmRlcmxpbmUgPyAxIDogMjsKICAgICAgICBsaW5lWSA9IHkgKyB0aGlzLmN1cnJlbnRMaW5lSGVpZ2h0KCkgLyBkOwogICAgICAgIGlmIChvcHRpb25zLnVuZGVybGluZSkgewogICAgICAgICAgbGluZVkgLT0gbGluZVdpZHRoOwogICAgICAgIH0KICAgICAgICB0aGlzLm1vdmVUbyh4LCBsaW5lWSk7CiAgICAgICAgdGhpcy5saW5lVG8oeCArIHJlbmRlcmVkV2lkdGgsIGxpbmVZKTsKICAgICAgICB0aGlzLnN0cm9rZSgpOwogICAgICAgIHRoaXMucmVzdG9yZSgpOwogICAgICB9CiAgICAgIHRoaXMuc2F2ZSgpOwogICAgICB0aGlzLnRyYW5zZm9ybSgxLCAwLCAwLCAtMSwgMCwgdGhpcy5wYWdlLmhlaWdodCk7CiAgICAgIHkgPSB0aGlzLnBhZ2UuaGVpZ2h0IC0geSAtICh0aGlzLl9mb250LmFzY2VuZGVyIC8gMTAwMCAqIHRoaXMuX2ZvbnRTaXplKTsKICAgICAgaWYgKChiYXNlID0gdGhpcy5wYWdlLmZvbnRzKVtuYW1lID0gdGhpcy5fZm9udC5pZF0gPT0gbnVsbCkgewogICAgICAgIGJhc2VbbmFtZV0gPSB0aGlzLl9mb250LnJlZigpOwogICAgICB9CiAgICAgIHRoaXMuYWRkQ29udGVudCgiQlQiKTsKICAgICAgdGhpcy5hZGRDb250ZW50KCIxIDAgMCAxICIgKyAobnVtYmVyKHgpKSArICIgIiArIChudW1iZXIoeSkpICsgIiBUbSIpOwogICAgICB0aGlzLmFkZENvbnRlbnQoIi8iICsgdGhpcy5fZm9udC5pZCArICIgIiArIChudW1iZXIodGhpcy5fZm9udFNpemUpKSArICIgVGYiKTsKICAgICAgbW9kZSA9IG9wdGlvbnMuZmlsbCAmJiBvcHRpb25zLnN0cm9rZSA/IDIgOiBvcHRpb25zLnN0cm9rZSA/IDEgOiAwOwogICAgICBpZiAobW9kZSkgewogICAgICAgIHRoaXMuYWRkQ29udGVudChtb2RlICsgIiBUciIpOwogICAgICB9CiAgICAgIGlmIChjaGFyYWN0ZXJTcGFjaW5nKSB7CiAgICAgICAgdGhpcy5hZGRDb250ZW50KChudW1iZXIoY2hhcmFjdGVyU3BhY2luZykpICsgIiBUYyIpOwogICAgICB9CiAgICAgIGlmICh3b3JkU3BhY2luZykgewogICAgICAgIHdvcmRzID0gdGV4dC50cmltKCkuc3BsaXQoL1xzKy8pOwogICAgICAgIHdvcmRTcGFjaW5nICs9IHRoaXMud2lkdGhPZlN0cmluZygnICcpICsgY2hhcmFjdGVyU3BhY2luZzsKICAgICAgICB3b3JkU3BhY2luZyAqPSAxMDAwIC8gdGhpcy5fZm9udFNpemU7CiAgICAgICAgZW5jb2RlZCA9IFtdOwogICAgICAgIHBvc2l0aW9ucyA9IFtdOwogICAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHdvcmRzLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7CiAgICAgICAgICB3b3JkID0gd29yZHNbal07CiAgICAgICAgICByZWYgPSB0aGlzLl9mb250LmVuY29kZSh3b3JkLCBvcHRpb25zLmZlYXR1cmVzKSwgZW5jb2RlZFdvcmQgPSByZWZbMF0sIHBvc2l0aW9uc1dvcmQgPSByZWZbMV07CiAgICAgICAgICBlbmNvZGVkLnB1c2guYXBwbHkoZW5jb2RlZCwgZW5jb2RlZFdvcmQpOwogICAgICAgICAgcG9zaXRpb25zLnB1c2guYXBwbHkocG9zaXRpb25zLCBwb3NpdGlvbnNXb3JkKTsKICAgICAgICAgIHNwYWNlID0ge307CiAgICAgICAgICByZWYxID0gcG9zaXRpb25zW3Bvc2l0aW9ucy5sZW5ndGggLSAxXTsKICAgICAgICAgIGZvciAoa2V5IGluIHJlZjEpIHsKICAgICAgICAgICAgdmFsID0gcmVmMVtrZXldOwogICAgICAgICAgICBzcGFjZVtrZXldID0gdmFsOwogICAgICAgICAgfQogICAgICAgICAgc3BhY2UueEFkdmFuY2UgKz0gd29yZFNwYWNpbmc7CiAgICAgICAgICBwb3NpdGlvbnNbcG9zaXRpb25zLmxlbmd0aCAtIDFdID0gc3BhY2U7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHJlZjIgPSB0aGlzLl9mb250LmVuY29kZSh0ZXh0LCBvcHRpb25zLmZlYXR1cmVzKSwgZW5jb2RlZCA9IHJlZjJbMF0sIHBvc2l0aW9ucyA9IHJlZjJbMV07CiAgICAgIH0KICAgICAgc2NhbGUgPSB0aGlzLl9mb250U2l6ZSAvIDEwMDA7CiAgICAgIGNvbW1hbmRzID0gW107CiAgICAgIGxhc3QgPSAwOwogICAgICBoYWRPZmZzZXQgPSBmYWxzZTsKICAgICAgYWRkU2VnbWVudCA9IChmdW5jdGlvbihfdGhpcykgewogICAgICAgIHJldHVybiBmdW5jdGlvbihjdXIpIHsKICAgICAgICAgIHZhciBhZHZhbmNlLCBoZXg7CiAgICAgICAgICBpZiAobGFzdCA8IGN1cikgewogICAgICAgICAgICBoZXggPSBlbmNvZGVkLnNsaWNlKGxhc3QsIGN1cikuam9pbignJyk7CiAgICAgICAgICAgIGFkdmFuY2UgPSBwb3NpdGlvbnNbY3VyIC0gMV0ueEFkdmFuY2UgLSBwb3NpdGlvbnNbY3VyIC0gMV0uYWR2YW5jZVdpZHRoOwogICAgICAgICAgICBjb21tYW5kcy5wdXNoKCI8IiArIGhleCArICI+ICIgKyAobnVtYmVyKC1hZHZhbmNlKSkpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGxhc3QgPSBjdXI7CiAgICAgICAgfTsKICAgICAgfSkodGhpcyk7CiAgICAgIGZsdXNoID0gKGZ1bmN0aW9uKF90aGlzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGkpIHsKICAgICAgICAgIGFkZFNlZ21lbnQoaSk7CiAgICAgICAgICBpZiAoY29tbWFuZHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICBfdGhpcy5hZGRDb250ZW50KCJbIiArIChjb21tYW5kcy5qb2luKCcgJykpICsgIl0gVEoiKTsKICAgICAgICAgICAgcmV0dXJuIGNvbW1hbmRzLmxlbmd0aCA9IDA7CiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgfSkodGhpcyk7CiAgICAgIGZvciAoaSA9IG0gPSAwLCBsZW4xID0gcG9zaXRpb25zLmxlbmd0aDsgbSA8IGxlbjE7IGkgPSArK20pIHsKICAgICAgICBwb3MgPSBwb3NpdGlvbnNbaV07CiAgICAgICAgaWYgKHBvcy54T2Zmc2V0IHx8IHBvcy55T2Zmc2V0KSB7CiAgICAgICAgICBmbHVzaChpKTsKICAgICAgICAgIHRoaXMuYWRkQ29udGVudCgiMSAwIDAgMSAiICsgKG51bWJlcih4ICsgcG9zLnhPZmZzZXQgKiBzY2FsZSkpICsgIiAiICsgKG51bWJlcih5ICsgcG9zLnlPZmZzZXQgKiBzY2FsZSkpICsgIiBUbSIpOwogICAgICAgICAgZmx1c2goaSArIDEpOwogICAgICAgICAgaGFkT2Zmc2V0ID0gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaWYgKGhhZE9mZnNldCkgewogICAgICAgICAgICB0aGlzLmFkZENvbnRlbnQoIjEgMCAwIDEgIiArIChudW1iZXIoeCkpICsgIiAiICsgKG51bWJlcih5KSkgKyAiIFRtIik7CiAgICAgICAgICAgIGhhZE9mZnNldCA9IGZhbHNlOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHBvcy54QWR2YW5jZSAtIHBvcy5hZHZhbmNlV2lkdGggIT09IDApIHsKICAgICAgICAgICAgYWRkU2VnbWVudChpICsgMSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHggKz0gcG9zLnhBZHZhbmNlICogc2NhbGU7CiAgICAgIH0KICAgICAgZmx1c2goaSk7CiAgICAgIHRoaXMuYWRkQ29udGVudCgiRVQiKTsKICAgICAgcmV0dXJuIHRoaXMucmVzdG9yZSgpOwogICAgfQogIH07Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAyOTYgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjEyLjYKKGZ1bmN0aW9uKCkgewogIHZhciBFdmVudEVtaXR0ZXIsIExpbmVCcmVha2VyLCBMaW5lV3JhcHBlciwKICAgIGV4dGVuZCA9IGZ1bmN0aW9uKGNoaWxkLCBwYXJlbnQpIHsgZm9yICh2YXIga2V5IGluIHBhcmVudCkgeyBpZiAoaGFzUHJvcC5jYWxsKHBhcmVudCwga2V5KSkgY2hpbGRba2V5XSA9IHBhcmVudFtrZXldOyB9IGZ1bmN0aW9uIGN0b3IoKSB7IHRoaXMuY29uc3RydWN0b3IgPSBjaGlsZDsgfSBjdG9yLnByb3RvdHlwZSA9IHBhcmVudC5wcm90b3R5cGU7IGNoaWxkLnByb3RvdHlwZSA9IG5ldyBjdG9yKCk7IGNoaWxkLl9fc3VwZXJfXyA9IHBhcmVudC5wcm90b3R5cGU7IHJldHVybiBjaGlsZDsgfSwKICAgIGhhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTsKCiAgRXZlbnRFbWl0dGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMSkuRXZlbnRFbWl0dGVyOwoKICBMaW5lQnJlYWtlciA9IF9fd2VicGFja19yZXF1aXJlX18oNzgpOwoKICBMaW5lV3JhcHBlciA9IChmdW5jdGlvbihzdXBlckNsYXNzKSB7CiAgICBleHRlbmQoTGluZVdyYXBwZXIsIHN1cGVyQ2xhc3MpOwoKICAgIGZ1bmN0aW9uIExpbmVXcmFwcGVyKGRvY3VtZW50LCBvcHRpb25zKSB7CiAgICAgIHZhciByZWY7CiAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDsKICAgICAgdGhpcy5pbmRlbnQgPSBvcHRpb25zLmluZGVudCB8fCAwOwogICAgICB0aGlzLmNoYXJhY3RlclNwYWNpbmcgPSBvcHRpb25zLmNoYXJhY3RlclNwYWNpbmcgfHwgMDsKICAgICAgdGhpcy53b3JkU3BhY2luZyA9IG9wdGlvbnMud29yZFNwYWNpbmcgPT09IDA7CiAgICAgIHRoaXMuY29sdW1ucyA9IG9wdGlvbnMuY29sdW1ucyB8fCAxOwogICAgICB0aGlzLmNvbHVtbkdhcCA9IChyZWYgPSBvcHRpb25zLmNvbHVtbkdhcCkgIT0gbnVsbCA/IHJlZiA6IDE4OwogICAgICB0aGlzLmxpbmVXaWR0aCA9IChvcHRpb25zLndpZHRoIC0gKHRoaXMuY29sdW1uR2FwICogKHRoaXMuY29sdW1ucyAtIDEpKSkgLyB0aGlzLmNvbHVtbnM7CiAgICAgIHRoaXMuc3BhY2VMZWZ0ID0gdGhpcy5saW5lV2lkdGg7CiAgICAgIHRoaXMuc3RhcnRYID0gdGhpcy5kb2N1bWVudC54OwogICAgICB0aGlzLnN0YXJ0WSA9IHRoaXMuZG9jdW1lbnQueTsKICAgICAgdGhpcy5jb2x1bW4gPSAxOwogICAgICB0aGlzLmVsbGlwc2lzID0gb3B0aW9ucy5lbGxpcHNpczsKICAgICAgdGhpcy5jb250aW51ZWRYID0gMDsKICAgICAgdGhpcy5mZWF0dXJlcyA9IG9wdGlvbnMuZmVhdHVyZXM7CiAgICAgIGlmIChvcHRpb25zLmhlaWdodCAhPSBudWxsKSB7CiAgICAgICAgdGhpcy5oZWlnaHQgPSBvcHRpb25zLmhlaWdodDsKICAgICAgICB0aGlzLm1heFkgPSB0aGlzLnN0YXJ0WSArIG9wdGlvbnMuaGVpZ2h0OwogICAgICB9IGVsc2UgewogICAgICAgIHRoaXMubWF4WSA9IHRoaXMuZG9jdW1lbnQucGFnZS5tYXhZKCk7CiAgICAgIH0KICAgICAgdGhpcy5vbignZmlyc3RMaW5lJywgKGZ1bmN0aW9uKF90aGlzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAgIHZhciBpbmRlbnQ7CiAgICAgICAgICBpbmRlbnQgPSBfdGhpcy5jb250aW51ZWRYIHx8IF90aGlzLmluZGVudDsKICAgICAgICAgIF90aGlzLmRvY3VtZW50LnggKz0gaW5kZW50OwogICAgICAgICAgX3RoaXMubGluZVdpZHRoIC09IGluZGVudDsKICAgICAgICAgIHJldHVybiBfdGhpcy5vbmNlKCdsaW5lJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIF90aGlzLmRvY3VtZW50LnggLT0gaW5kZW50OwogICAgICAgICAgICBfdGhpcy5saW5lV2lkdGggKz0gaW5kZW50OwogICAgICAgICAgICBpZiAob3B0aW9ucy5jb250aW51ZWQgJiYgIV90aGlzLmNvbnRpbnVlZFgpIHsKICAgICAgICAgICAgICBfdGhpcy5jb250aW51ZWRYID0gX3RoaXMuaW5kZW50OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghb3B0aW9ucy5jb250aW51ZWQpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuY29udGludWVkWCA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH07CiAgICAgIH0pKHRoaXMpKTsKICAgICAgdGhpcy5vbignbGFzdExpbmUnLCAoZnVuY3Rpb24oX3RoaXMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgICAgdmFyIGFsaWduOwogICAgICAgICAgYWxpZ24gPSBvcHRpb25zLmFsaWduOwogICAgICAgICAgaWYgKGFsaWduID09PSAnanVzdGlmeScpIHsKICAgICAgICAgICAgb3B0aW9ucy5hbGlnbiA9ICdsZWZ0JzsKICAgICAgICAgIH0KICAgICAgICAgIF90aGlzLmxhc3RMaW5lID0gdHJ1ZTsKICAgICAgICAgIHJldHVybiBfdGhpcy5vbmNlKCdsaW5lJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIF90aGlzLmRvY3VtZW50LnkgKz0gb3B0aW9ucy5wYXJhZ3JhcGhHYXAgfHwgMDsKICAgICAgICAgICAgb3B0aW9ucy5hbGlnbiA9IGFsaWduOwogICAgICAgICAgICByZXR1cm4gX3RoaXMubGFzdExpbmUgPSBmYWxzZTsKICAgICAgICAgIH0pOwogICAgICAgIH07CiAgICAgIH0pKHRoaXMpKTsKICAgIH0KCiAgICBMaW5lV3JhcHBlci5wcm90b3R5cGUud29yZFdpZHRoID0gZnVuY3Rpb24od29yZCkgewogICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC53aWR0aE9mU3RyaW5nKHdvcmQsIHRoaXMpICsgdGhpcy5jaGFyYWN0ZXJTcGFjaW5nICsgdGhpcy53b3JkU3BhY2luZzsKICAgIH07CgogICAgTGluZVdyYXBwZXIucHJvdG90eXBlLmVhY2hXb3JkID0gZnVuY3Rpb24odGV4dCwgZm4pIHsKICAgICAgdmFyIGJrLCBicmVha2VyLCBmYmssIGwsIGxhc3QsIGxiaywgc2hvdWxkQ29udGludWUsIHcsIHdvcmQsIHdvcmRXaWR0aHM7CiAgICAgIGJyZWFrZXIgPSBuZXcgTGluZUJyZWFrZXIodGV4dCk7CiAgICAgIGxhc3QgPSBudWxsOwogICAgICB3b3JkV2lkdGhzID0gT2JqZWN0LmNyZWF0ZShudWxsKTsKICAgICAgd2hpbGUgKGJrID0gYnJlYWtlci5uZXh0QnJlYWsoKSkgewogICAgICAgIHdvcmQgPSB0ZXh0LnNsaWNlKChsYXN0ICE9IG51bGwgPyBsYXN0LnBvc2l0aW9uIDogdm9pZCAwKSB8fCAwLCBiay5wb3NpdGlvbik7CiAgICAgICAgdyA9IHdvcmRXaWR0aHNbd29yZF0gIT0gbnVsbCA/IHdvcmRXaWR0aHNbd29yZF0gOiB3b3JkV2lkdGhzW3dvcmRdID0gdGhpcy53b3JkV2lkdGgod29yZCk7CiAgICAgICAgaWYgKHcgPiB0aGlzLmxpbmVXaWR0aCArIHRoaXMuY29udGludWVkWCkgewogICAgICAgICAgbGJrID0gbGFzdDsKICAgICAgICAgIGZiayA9IHt9OwogICAgICAgICAgd2hpbGUgKHdvcmQubGVuZ3RoKSB7CiAgICAgICAgICAgIGwgPSB3b3JkLmxlbmd0aDsKICAgICAgICAgICAgd2hpbGUgKHcgPiB0aGlzLnNwYWNlTGVmdCkgewogICAgICAgICAgICAgIHcgPSB0aGlzLndvcmRXaWR0aCh3b3JkLnNsaWNlKDAsIC0tbCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZiay5yZXF1aXJlZCA9IGwgPCB3b3JkLmxlbmd0aDsKICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSBmbih3b3JkLnNsaWNlKDAsIGwpLCB3LCBmYmssIGxiayk7CiAgICAgICAgICAgIGxiayA9IHsKICAgICAgICAgICAgICByZXF1aXJlZDogZmFsc2UKICAgICAgICAgICAgfTsKICAgICAgICAgICAgd29yZCA9IHdvcmQuc2xpY2UobCk7CiAgICAgICAgICAgIHcgPSB0aGlzLndvcmRXaWR0aCh3b3JkKTsKICAgICAgICAgICAgaWYgKHNob3VsZENvbnRpbnVlID09PSBmYWxzZSkgewogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gZm4od29yZCwgdywgYmssIGxhc3QpOwogICAgICAgIH0KICAgICAgICBpZiAoc2hvdWxkQ29udGludWUgPT09IGZhbHNlKSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgbGFzdCA9IGJrOwogICAgICB9CiAgICB9OwoKICAgIExpbmVXcmFwcGVyLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24odGV4dCwgb3B0aW9ucykgewogICAgICB2YXIgYnVmZmVyLCBlbWl0TGluZSwgbGMsIG5leHRZLCB0ZXh0V2lkdGgsIHdjLCB5OwogICAgICBpZiAob3B0aW9ucy5pbmRlbnQgIT0gbnVsbCkgewogICAgICAgIHRoaXMuaW5kZW50ID0gb3B0aW9ucy5pbmRlbnQ7CiAgICAgIH0KICAgICAgaWYgKG9wdGlvbnMuY2hhcmFjdGVyU3BhY2luZyAhPSBudWxsKSB7CiAgICAgICAgdGhpcy5jaGFyYWN0ZXJTcGFjaW5nID0gb3B0aW9ucy5jaGFyYWN0ZXJTcGFjaW5nOwogICAgICB9CiAgICAgIGlmIChvcHRpb25zLndvcmRTcGFjaW5nICE9IG51bGwpIHsKICAgICAgICB0aGlzLndvcmRTcGFjaW5nID0gb3B0aW9ucy53b3JkU3BhY2luZzsKICAgICAgfQogICAgICBpZiAob3B0aW9ucy5lbGxpcHNpcyAhPSBudWxsKSB7CiAgICAgICAgdGhpcy5lbGxpcHNpcyA9IG9wdGlvbnMuZWxsaXBzaXM7CiAgICAgIH0KICAgICAgbmV4dFkgPSB0aGlzLmRvY3VtZW50LnkgKyB0aGlzLmRvY3VtZW50LmN1cnJlbnRMaW5lSGVpZ2h0KHRydWUpOwogICAgICBpZiAodGhpcy5kb2N1bWVudC55ID4gdGhpcy5tYXhZIHx8IG5leHRZID4gdGhpcy5tYXhZKSB7CiAgICAgICAgdGhpcy5uZXh0U2VjdGlvbigpOwogICAgICB9CiAgICAgIGJ1ZmZlciA9ICcnOwogICAgICB0ZXh0V2lkdGggPSAwOwogICAgICB3YyA9IDA7CiAgICAgIGxjID0gMDsKICAgICAgeSA9IHRoaXMuZG9jdW1lbnQueTsKICAgICAgZW1pdExpbmUgPSAoZnVuY3Rpb24oX3RoaXMpIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CiAgICAgICAgICBvcHRpb25zLnRleHRXaWR0aCA9IHRleHRXaWR0aCArIF90aGlzLndvcmRTcGFjaW5nICogKHdjIC0gMSk7CiAgICAgICAgICBvcHRpb25zLndvcmRDb3VudCA9IHdjOwogICAgICAgICAgb3B0aW9ucy5saW5lV2lkdGggPSBfdGhpcy5saW5lV2lkdGg7CiAgICAgICAgICB5ID0gX3RoaXMuZG9jdW1lbnQueTsKICAgICAgICAgIF90aGlzLmVtaXQoJ2xpbmUnLCBidWZmZXIsIG9wdGlvbnMsIF90aGlzKTsKICAgICAgICAgIHJldHVybiBsYysrOwogICAgICAgIH07CiAgICAgIH0pKHRoaXMpOwogICAgICB0aGlzLmVtaXQoJ3NlY3Rpb25TdGFydCcsIG9wdGlvbnMsIHRoaXMpOwogICAgICB0aGlzLmVhY2hXb3JkKHRleHQsIChmdW5jdGlvbihfdGhpcykgewogICAgICAgIHJldHVybiBmdW5jdGlvbih3b3JkLCB3LCBiaywgbGFzdCkgewogICAgICAgICAgdmFyIGxoLCBzaG91bGRDb250aW51ZTsKICAgICAgICAgIGlmICgobGFzdCA9PSBudWxsKSB8fCBsYXN0LnJlcXVpcmVkKSB7CiAgICAgICAgICAgIF90aGlzLmVtaXQoJ2ZpcnN0TGluZScsIG9wdGlvbnMsIF90aGlzKTsKICAgICAgICAgICAgX3RoaXMuc3BhY2VMZWZ0ID0gX3RoaXMubGluZVdpZHRoOwogICAgICAgICAgfQogICAgICAgICAgaWYgKHcgPD0gX3RoaXMuc3BhY2VMZWZ0KSB7CiAgICAgICAgICAgIGJ1ZmZlciArPSB3b3JkOwogICAgICAgICAgICB0ZXh0V2lkdGggKz0gdzsKICAgICAgICAgICAgd2MrKzsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChiay5yZXF1aXJlZCB8fCB3ID4gX3RoaXMuc3BhY2VMZWZ0KSB7CiAgICAgICAgICAgIGlmIChiay5yZXF1aXJlZCkgewogICAgICAgICAgICAgIF90aGlzLmVtaXQoJ2xhc3RMaW5lJywgb3B0aW9ucywgX3RoaXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxoID0gX3RoaXMuZG9jdW1lbnQuY3VycmVudExpbmVIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgIGlmICgoX3RoaXMuaGVpZ2h0ICE9IG51bGwpICYmIF90aGlzLmVsbGlwc2lzICYmIF90aGlzLmRvY3VtZW50LnkgKyBsaCAqIDIgPiBfdGhpcy5tYXhZICYmIF90aGlzLmNvbHVtbiA+PSBfdGhpcy5jb2x1bW5zKSB7CiAgICAgICAgICAgICAgaWYgKF90aGlzLmVsbGlwc2lzID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICBfdGhpcy5lbGxpcHNpcyA9ICfigKYnOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBidWZmZXIgPSBidWZmZXIucmVwbGFjZSgvXHMrJC8sICcnKTsKICAgICAgICAgICAgICB0ZXh0V2lkdGggPSBfdGhpcy53b3JkV2lkdGgoYnVmZmVyICsgX3RoaXMuZWxsaXBzaXMpOwogICAgICAgICAgICAgIHdoaWxlICh0ZXh0V2lkdGggPiBfdGhpcy5saW5lV2lkdGgpIHsKICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5zbGljZSgwLCAtMSkucmVwbGFjZSgvXHMrJC8sICcnKTsKICAgICAgICAgICAgICAgIHRleHRXaWR0aCA9IF90aGlzLndvcmRXaWR0aChidWZmZXIgKyBfdGhpcy5lbGxpcHNpcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJ1ZmZlciA9IGJ1ZmZlciArIF90aGlzLmVsbGlwc2lzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChiay5yZXF1aXJlZCAmJiB3ID4gX3RoaXMuc3BhY2VMZWZ0KSB7CiAgICAgICAgICAgICAgYnVmZmVyID0gd29yZDsKICAgICAgICAgICAgICB0ZXh0V2lkdGggPSB3OwogICAgICAgICAgICAgIHdjID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbWl0TGluZSgpOwogICAgICAgICAgICBpZiAoX3RoaXMuZG9jdW1lbnQueSArIGxoID4gX3RoaXMubWF4WSkgewogICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gX3RoaXMubmV4dFNlY3Rpb24oKTsKICAgICAgICAgICAgICBpZiAoIXNob3VsZENvbnRpbnVlKSB7CiAgICAgICAgICAgICAgICB3YyA9IDA7CiAgICAgICAgICAgICAgICBidWZmZXIgPSAnJzsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGJrLnJlcXVpcmVkKSB7CiAgICAgICAgICAgICAgX3RoaXMuc3BhY2VMZWZ0ID0gX3RoaXMubGluZVdpZHRoOwogICAgICAgICAgICAgIGJ1ZmZlciA9ICcnOwogICAgICAgICAgICAgIHRleHRXaWR0aCA9IDA7CiAgICAgICAgICAgICAgcmV0dXJuIHdjID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBfdGhpcy5zcGFjZUxlZnQgPSBfdGhpcy5saW5lV2lkdGggLSB3OwogICAgICAgICAgICAgIGJ1ZmZlciA9IHdvcmQ7CiAgICAgICAgICAgICAgdGV4dFdpZHRoID0gdzsKICAgICAgICAgICAgICByZXR1cm4gd2MgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gX3RoaXMuc3BhY2VMZWZ0IC09IHc7CiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgfSkodGhpcykpOwogICAgICBpZiAod2MgPiAwKSB7CiAgICAgICAgdGhpcy5lbWl0KCdsYXN0TGluZScsIG9wdGlvbnMsIHRoaXMpOwogICAgICAgIGVtaXRMaW5lKCk7CiAgICAgIH0KICAgICAgdGhpcy5lbWl0KCdzZWN0aW9uRW5kJywgb3B0aW9ucywgdGhpcyk7CiAgICAgIGlmIChvcHRpb25zLmNvbnRpbnVlZCA9PT0gdHJ1ZSkgewogICAgICAgIGlmIChsYyA+IDEpIHsKICAgICAgICAgIHRoaXMuY29udGludWVkWCA9IDA7CiAgICAgICAgfQogICAgICAgIHRoaXMuY29udGludWVkWCArPSBvcHRpb25zLnRleHRXaWR0aDsKICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC55ID0geTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC54ID0gdGhpcy5zdGFydFg7CiAgICAgIH0KICAgIH07CgogICAgTGluZVdyYXBwZXIucHJvdG90eXBlLm5leHRTZWN0aW9uID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICB2YXIgcmVmOwogICAgICB0aGlzLmVtaXQoJ3NlY3Rpb25FbmQnLCBvcHRpb25zLCB0aGlzKTsKICAgICAgaWYgKCsrdGhpcy5jb2x1bW4gPiB0aGlzLmNvbHVtbnMpIHsKICAgICAgICBpZiAodGhpcy5oZWlnaHQgIT0gbnVsbCkgewogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICB0aGlzLmRvY3VtZW50LmFkZFBhZ2UoKTsKICAgICAgICB0aGlzLmNvbHVtbiA9IDE7CiAgICAgICAgdGhpcy5zdGFydFkgPSB0aGlzLmRvY3VtZW50LnBhZ2UubWFyZ2lucy50b3A7CiAgICAgICAgdGhpcy5tYXhZID0gdGhpcy5kb2N1bWVudC5wYWdlLm1heFkoKTsKICAgICAgICB0aGlzLmRvY3VtZW50LnggPSB0aGlzLnN0YXJ0WDsKICAgICAgICBpZiAodGhpcy5kb2N1bWVudC5fZmlsbENvbG9yKSB7CiAgICAgICAgICAocmVmID0gdGhpcy5kb2N1bWVudCkuZmlsbENvbG9yLmFwcGx5KHJlZiwgdGhpcy5kb2N1bWVudC5fZmlsbENvbG9yKTsKICAgICAgICB9CiAgICAgICAgdGhpcy5lbWl0KCdwYWdlQnJlYWsnLCBvcHRpb25zLCB0aGlzKTsKICAgICAgfSBlbHNlIHsKICAgICAgICB0aGlzLmRvY3VtZW50LnggKz0gdGhpcy5saW5lV2lkdGggKyB0aGlzLmNvbHVtbkdhcDsKICAgICAgICB0aGlzLmRvY3VtZW50LnkgPSB0aGlzLnN0YXJ0WTsKICAgICAgICB0aGlzLmVtaXQoJ2NvbHVtbkJyZWFrJywgb3B0aW9ucywgdGhpcyk7CiAgICAgIH0KICAgICAgdGhpcy5lbWl0KCdzZWN0aW9uU3RhcnQnLCBvcHRpb25zLCB0aGlzKTsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwoKICAgIHJldHVybiBMaW5lV3JhcHBlcjsKCiAgfSkoRXZlbnRFbWl0dGVyKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBMaW5lV3JhcHBlcjsKCn0pLmNhbGwodGhpcyk7CgoKLyoqKi8gfSksCi8qIDI5NyAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgooZnVuY3Rpb24oKSB7CiAgdmFyIFBERkltYWdlOwoKICBQREZJbWFnZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTIxKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICBpbml0SW1hZ2VzOiBmdW5jdGlvbigpIHsKICAgICAgdGhpcy5faW1hZ2VSZWdpc3RyeSA9IHt9OwogICAgICByZXR1cm4gdGhpcy5faW1hZ2VDb3VudCA9IDA7CiAgICB9LAogICAgaW1hZ2U6IGZ1bmN0aW9uKHNyYywgeCwgeSwgb3B0aW9ucykgewogICAgICB2YXIgYmFzZSwgYmgsIGJwLCBidywgaCwgaHAsIGltYWdlLCBpcCwgbmFtZSwgcmVmLCByZWYxLCByZWYyLCByZWYzLCB3LCB3cDsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnKSB7CiAgICAgICAgb3B0aW9ucyA9IHg7CiAgICAgICAgeCA9IG51bGw7CiAgICAgIH0KICAgICAgeCA9IChyZWYgPSB4ICE9IG51bGwgPyB4IDogb3B0aW9ucy54KSAhPSBudWxsID8gcmVmIDogdGhpcy54OwogICAgICB5ID0gKHJlZjEgPSB5ICE9IG51bGwgPyB5IDogb3B0aW9ucy55KSAhPSBudWxsID8gcmVmMSA6IHRoaXMueTsKICAgICAgaWYgKHR5cGVvZiBzcmMgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgaW1hZ2UgPSB0aGlzLl9pbWFnZVJlZ2lzdHJ5W3NyY107CiAgICAgIH0KICAgICAgaWYgKCFpbWFnZSkgewogICAgICAgIGlmIChzcmMud2lkdGggJiYgc3JjLmhlaWdodCkgewogICAgICAgICAgaW1hZ2UgPSBzcmM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGltYWdlID0gdGhpcy5vcGVuSW1hZ2Uoc3JjKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCFpbWFnZS5vYmopIHsKICAgICAgICBpbWFnZS5lbWJlZCh0aGlzKTsKICAgICAgfQogICAgICBpZiAoKGJhc2UgPSB0aGlzLnBhZ2UueG9iamVjdHMpW25hbWUgPSBpbWFnZS5sYWJlbF0gPT0gbnVsbCkgewogICAgICAgIGJhc2VbbmFtZV0gPSBpbWFnZS5vYmo7CiAgICAgIH0KICAgICAgdyA9IG9wdGlvbnMud2lkdGggfHwgaW1hZ2Uud2lkdGg7CiAgICAgIGggPSBvcHRpb25zLmhlaWdodCB8fCBpbWFnZS5oZWlnaHQ7CiAgICAgIGlmIChvcHRpb25zLndpZHRoICYmICFvcHRpb25zLmhlaWdodCkgewogICAgICAgIHdwID0gdyAvIGltYWdlLndpZHRoOwogICAgICAgIHcgPSBpbWFnZS53aWR0aCAqIHdwOwogICAgICAgIGggPSBpbWFnZS5oZWlnaHQgKiB3cDsKICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmhlaWdodCAmJiAhb3B0aW9ucy53aWR0aCkgewogICAgICAgIGhwID0gaCAvIGltYWdlLmhlaWdodDsKICAgICAgICB3ID0gaW1hZ2Uud2lkdGggKiBocDsKICAgICAgICBoID0gaW1hZ2UuaGVpZ2h0ICogaHA7CiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5zY2FsZSkgewogICAgICAgIHcgPSBpbWFnZS53aWR0aCAqIG9wdGlvbnMuc2NhbGU7CiAgICAgICAgaCA9IGltYWdlLmhlaWdodCAqIG9wdGlvbnMuc2NhbGU7CiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5maXQpIHsKICAgICAgICByZWYyID0gb3B0aW9ucy5maXQsIGJ3ID0gcmVmMlswXSwgYmggPSByZWYyWzFdOwogICAgICAgIGJwID0gYncgLyBiaDsKICAgICAgICBpcCA9IGltYWdlLndpZHRoIC8gaW1hZ2UuaGVpZ2h0OwogICAgICAgIGlmIChpcCA+IGJwKSB7CiAgICAgICAgICB3ID0gYnc7CiAgICAgICAgICBoID0gYncgLyBpcDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaCA9IGJoOwogICAgICAgICAgdyA9IGJoICogaXA7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuY292ZXIpIHsKICAgICAgICByZWYzID0gb3B0aW9ucy5jb3ZlciwgYncgPSByZWYzWzBdLCBiaCA9IHJlZjNbMV07CiAgICAgICAgYnAgPSBidyAvIGJoOwogICAgICAgIGlwID0gaW1hZ2Uud2lkdGggLyBpbWFnZS5oZWlnaHQ7CiAgICAgICAgaWYgKGlwID4gYnApIHsKICAgICAgICAgIGggPSBiaDsKICAgICAgICAgIHcgPSBiaCAqIGlwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB3ID0gYnc7CiAgICAgICAgICBoID0gYncgLyBpcDsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKG9wdGlvbnMuZml0IHx8IG9wdGlvbnMuY292ZXIpIHsKICAgICAgICBpZiAob3B0aW9ucy5hbGlnbiA9PT0gJ2NlbnRlcicpIHsKICAgICAgICAgIHggPSB4ICsgYncgLyAyIC0gdyAvIDI7CiAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmFsaWduID09PSAncmlnaHQnKSB7CiAgICAgICAgICB4ID0geCArIGJ3IC0gdzsKICAgICAgICB9CiAgICAgICAgaWYgKG9wdGlvbnMudmFsaWduID09PSAnY2VudGVyJykgewogICAgICAgICAgeSA9IHkgKyBiaCAvIDIgLSBoIC8gMjsKICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbnMudmFsaWduID09PSAnYm90dG9tJykgewogICAgICAgICAgeSA9IHkgKyBiaCAtIGg7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICh0aGlzLnkgPT09IHkpIHsKICAgICAgICB0aGlzLnkgKz0gaDsKICAgICAgfQogICAgICB0aGlzLnNhdmUoKTsKICAgICAgdGhpcy50cmFuc2Zvcm0odywgMCwgMCwgLWgsIHgsIHkgKyBoKTsKICAgICAgdGhpcy5hZGRDb250ZW50KCIvIiArIGltYWdlLmxhYmVsICsgIiBEbyIpOwogICAgICB0aGlzLnJlc3RvcmUoKTsKICAgICAgcmV0dXJuIHRoaXM7CiAgICB9LAogICAgb3BlbkltYWdlOiBmdW5jdGlvbihzcmMpIHsKICAgICAgdmFyIGltYWdlOwogICAgICBpZiAodHlwZW9mIHNyYyA9PT0gJ3N0cmluZycpIHsKICAgICAgICBpbWFnZSA9IHRoaXMuX2ltYWdlUmVnaXN0cnlbc3JjXTsKICAgICAgfQogICAgICBpZiAoIWltYWdlKSB7CiAgICAgICAgaW1hZ2UgPSBQREZJbWFnZS5vcGVuKHNyYywgJ0knICsgKCsrdGhpcy5faW1hZ2VDb3VudCkpOwogICAgICAgIGlmICh0eXBlb2Ygc3JjID09PSAnc3RyaW5nJykgewogICAgICAgICAgdGhpcy5faW1hZ2VSZWdpc3RyeVtzcmNdID0gaW1hZ2U7CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiBpbWFnZTsKICAgIH0KICB9OwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMjk4ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCi8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgRGF0YTsKCiAgRGF0YSA9IChmdW5jdGlvbigpIHsKICAgIGZ1bmN0aW9uIERhdGEoZGF0YSkgewogICAgICB0aGlzLmRhdGEgPSBkYXRhICE9IG51bGwgPyBkYXRhIDogW107CiAgICAgIHRoaXMucG9zID0gMDsKICAgICAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoOwogICAgfQoKICAgIERhdGEucHJvdG90eXBlLnJlYWRCeXRlID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiB0aGlzLmRhdGFbdGhpcy5wb3MrK107CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLndyaXRlQnl0ZSA9IGZ1bmN0aW9uKGJ5dGUpIHsKICAgICAgcmV0dXJuIHRoaXMuZGF0YVt0aGlzLnBvcysrXSA9IGJ5dGU7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLmJ5dGVBdCA9IGZ1bmN0aW9uKGluZGV4KSB7CiAgICAgIHJldHVybiB0aGlzLmRhdGFbaW5kZXhdOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS5yZWFkQm9vbCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gISF0aGlzLnJlYWRCeXRlKCk7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLndyaXRlQm9vbCA9IGZ1bmN0aW9uKHZhbCkgewogICAgICByZXR1cm4gdGhpcy53cml0ZUJ5dGUodmFsID8gMSA6IDApOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS5yZWFkVUludDMyID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBiMSwgYjIsIGIzLCBiNDsKICAgICAgYjEgPSB0aGlzLnJlYWRCeXRlKCkgKiAweDEwMDAwMDA7CiAgICAgIGIyID0gdGhpcy5yZWFkQnl0ZSgpIDw8IDE2OwogICAgICBiMyA9IHRoaXMucmVhZEJ5dGUoKSA8PCA4OwogICAgICBiNCA9IHRoaXMucmVhZEJ5dGUoKTsKICAgICAgcmV0dXJuIGIxICsgYjIgKyBiMyArIGI0OwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS53cml0ZVVJbnQzMiA9IGZ1bmN0aW9uKHZhbCkgewogICAgICB0aGlzLndyaXRlQnl0ZSgodmFsID4+PiAyNCkgJiAweGZmKTsKICAgICAgdGhpcy53cml0ZUJ5dGUoKHZhbCA+PiAxNikgJiAweGZmKTsKICAgICAgdGhpcy53cml0ZUJ5dGUoKHZhbCA+PiA4KSAmIDB4ZmYpOwogICAgICByZXR1cm4gdGhpcy53cml0ZUJ5dGUodmFsICYgMHhmZik7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLnJlYWRJbnQzMiA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgaW50OwogICAgICBpbnQgPSB0aGlzLnJlYWRVSW50MzIoKTsKICAgICAgaWYgKGludCA+PSAweDgwMDAwMDAwKSB7CiAgICAgICAgcmV0dXJuIGludCAtIDB4MTAwMDAwMDAwOwogICAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBpbnQ7CiAgICAgIH0KICAgIH07CgogICAgRGF0YS5wcm90b3R5cGUud3JpdGVJbnQzMiA9IGZ1bmN0aW9uKHZhbCkgewogICAgICBpZiAodmFsIDwgMCkgewogICAgICAgIHZhbCArPSAweDEwMDAwMDAwMDsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy53cml0ZVVJbnQzMih2YWwpOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS5yZWFkVUludDE2ID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBiMSwgYjI7CiAgICAgIGIxID0gdGhpcy5yZWFkQnl0ZSgpIDw8IDg7CiAgICAgIGIyID0gdGhpcy5yZWFkQnl0ZSgpOwogICAgICByZXR1cm4gYjEgfCBiMjsKICAgIH07CgogICAgRGF0YS5wcm90b3R5cGUud3JpdGVVSW50MTYgPSBmdW5jdGlvbih2YWwpIHsKICAgICAgdGhpcy53cml0ZUJ5dGUoKHZhbCA+PiA4KSAmIDB4ZmYpOwogICAgICByZXR1cm4gdGhpcy53cml0ZUJ5dGUodmFsICYgMHhmZik7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLnJlYWRJbnQxNiA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgaW50OwogICAgICBpbnQgPSB0aGlzLnJlYWRVSW50MTYoKTsKICAgICAgaWYgKGludCA+PSAweDgwMDApIHsKICAgICAgICByZXR1cm4gaW50IC0gMHgxMDAwMDsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gaW50OwogICAgICB9CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLndyaXRlSW50MTYgPSBmdW5jdGlvbih2YWwpIHsKICAgICAgaWYgKHZhbCA8IDApIHsKICAgICAgICB2YWwgKz0gMHgxMDAwMDsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy53cml0ZVVJbnQxNih2YWwpOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS5yZWFkU3RyaW5nID0gZnVuY3Rpb24obGVuZ3RoKSB7CiAgICAgIHZhciBpLCBqLCByZWYsIHJldDsKICAgICAgcmV0ID0gW107CiAgICAgIGZvciAoaSA9IGogPSAwLCByZWYgPSBsZW5ndGg7IDAgPD0gcmVmID8gaiA8IHJlZiA6IGogPiByZWY7IGkgPSAwIDw9IHJlZiA/ICsraiA6IC0taikgewogICAgICAgIHJldFtpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5yZWFkQnl0ZSgpKTsKICAgICAgfQogICAgICByZXR1cm4gcmV0LmpvaW4oJycpOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS53cml0ZVN0cmluZyA9IGZ1bmN0aW9uKHZhbCkgewogICAgICB2YXIgaSwgaiwgcmVmLCByZXN1bHRzOwogICAgICByZXN1bHRzID0gW107CiAgICAgIGZvciAoaSA9IGogPSAwLCByZWYgPSB2YWwubGVuZ3RoOyAwIDw9IHJlZiA/IGogPCByZWYgOiBqID4gcmVmOyBpID0gMCA8PSByZWYgPyArK2ogOiAtLWopIHsKICAgICAgICByZXN1bHRzLnB1c2godGhpcy53cml0ZUJ5dGUodmFsLmNoYXJDb2RlQXQoaSkpKTsKICAgICAgfQogICAgICByZXR1cm4gcmVzdWx0czsKICAgIH07CgogICAgRGF0YS5wcm90b3R5cGUuc3RyaW5nQXQgPSBmdW5jdGlvbihwb3MsIGxlbmd0aCkgewogICAgICB0aGlzLnBvcyA9IHBvczsKICAgICAgcmV0dXJuIHRoaXMucmVhZFN0cmluZyhsZW5ndGgpOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS5yZWFkU2hvcnQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMucmVhZEludDE2KCk7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLndyaXRlU2hvcnQgPSBmdW5jdGlvbih2YWwpIHsKICAgICAgcmV0dXJuIHRoaXMud3JpdGVJbnQxNih2YWwpOwogICAgfTsKCiAgICBEYXRhLnByb3RvdHlwZS5yZWFkTG9uZ0xvbmcgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiODsKICAgICAgYjEgPSB0aGlzLnJlYWRCeXRlKCk7CiAgICAgIGIyID0gdGhpcy5yZWFkQnl0ZSgpOwogICAgICBiMyA9IHRoaXMucmVhZEJ5dGUoKTsKICAgICAgYjQgPSB0aGlzLnJlYWRCeXRlKCk7CiAgICAgIGI1ID0gdGhpcy5yZWFkQnl0ZSgpOwogICAgICBiNiA9IHRoaXMucmVhZEJ5dGUoKTsKICAgICAgYjcgPSB0aGlzLnJlYWRCeXRlKCk7CiAgICAgIGI4ID0gdGhpcy5yZWFkQnl0ZSgpOwogICAgICBpZiAoYjEgJiAweDgwKSB7CiAgICAgICAgcmV0dXJuICgoYjEgXiAweGZmKSAqIDB4MTAwMDAwMDAwMDAwMDAwICsgKGIyIF4gMHhmZikgKiAweDEwMDAwMDAwMDAwMDAgKyAoYjMgXiAweGZmKSAqIDB4MTAwMDAwMDAwMDAgKyAoYjQgXiAweGZmKSAqIDB4MTAwMDAwMDAwICsgKGI1IF4gMHhmZikgKiAweDEwMDAwMDAgKyAoYjYgXiAweGZmKSAqIDB4MTAwMDAgKyAoYjcgXiAweGZmKSAqIDB4MTAwICsgKGI4IF4gMHhmZikgKyAxKSAqIC0xOwogICAgICB9CiAgICAgIHJldHVybiBiMSAqIDB4MTAwMDAwMDAwMDAwMDAwICsgYjIgKiAweDEwMDAwMDAwMDAwMDAgKyBiMyAqIDB4MTAwMDAwMDAwMDAgKyBiNCAqIDB4MTAwMDAwMDAwICsgYjUgKiAweDEwMDAwMDAgKyBiNiAqIDB4MTAwMDAgKyBiNyAqIDB4MTAwICsgYjg7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLndyaXRlTG9uZ0xvbmcgPSBmdW5jdGlvbih2YWwpIHsKICAgICAgdmFyIGhpZ2gsIGxvdzsKICAgICAgaGlnaCA9IE1hdGguZmxvb3IodmFsIC8gMHgxMDAwMDAwMDApOwogICAgICBsb3cgPSB2YWwgJiAweGZmZmZmZmZmOwogICAgICB0aGlzLndyaXRlQnl0ZSgoaGlnaCA+PiAyNCkgJiAweGZmKTsKICAgICAgdGhpcy53cml0ZUJ5dGUoKGhpZ2ggPj4gMTYpICYgMHhmZik7CiAgICAgIHRoaXMud3JpdGVCeXRlKChoaWdoID4+IDgpICYgMHhmZik7CiAgICAgIHRoaXMud3JpdGVCeXRlKGhpZ2ggJiAweGZmKTsKICAgICAgdGhpcy53cml0ZUJ5dGUoKGxvdyA+PiAyNCkgJiAweGZmKTsKICAgICAgdGhpcy53cml0ZUJ5dGUoKGxvdyA+PiAxNikgJiAweGZmKTsKICAgICAgdGhpcy53cml0ZUJ5dGUoKGxvdyA+PiA4KSAmIDB4ZmYpOwogICAgICByZXR1cm4gdGhpcy53cml0ZUJ5dGUobG93ICYgMHhmZik7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLnJlYWRJbnQgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMucmVhZEludDMyKCk7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLndyaXRlSW50ID0gZnVuY3Rpb24odmFsKSB7CiAgICAgIHJldHVybiB0aGlzLndyaXRlSW50MzIodmFsKTsKICAgIH07CgogICAgRGF0YS5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7CiAgICAgIHJldHVybiB0aGlzLmRhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7CiAgICB9OwoKICAgIERhdGEucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihieXRlcykgewogICAgICB2YXIgYnVmLCBpLCBqLCByZWY7CiAgICAgIGJ1ZiA9IFtdOwogICAgICBmb3IgKGkgPSBqID0gMCwgcmVmID0gYnl0ZXM7IDAgPD0gcmVmID8gaiA8IHJlZiA6IGogPiByZWY7IGkgPSAwIDw9IHJlZiA/ICsraiA6IC0taikgewogICAgICAgIGJ1Zi5wdXNoKHRoaXMucmVhZEJ5dGUoKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIGJ1ZjsKICAgIH07CgogICAgRGF0YS5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihieXRlcykgewogICAgICB2YXIgYnl0ZSwgaiwgbGVuLCByZXN1bHRzOwogICAgICByZXN1bHRzID0gW107CiAgICAgIGZvciAoaiA9IDAsIGxlbiA9IGJ5dGVzLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7CiAgICAgICAgYnl0ZSA9IGJ5dGVzW2pdOwogICAgICAgIHJlc3VsdHMucHVzaCh0aGlzLndyaXRlQnl0ZShieXRlKSk7CiAgICAgIH0KICAgICAgcmV0dXJuIHJlc3VsdHM7CiAgICB9OwoKICAgIHJldHVybiBEYXRhOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IERhdGE7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAyOTkgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLy8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjEyLjYKKGZ1bmN0aW9uKCkgewogIHZhciBKUEVHLCBmcywKICAgIGluZGV4T2YgPSBbXS5pbmRleE9mIHx8IGZ1bmN0aW9uKGl0ZW0pIHsgZm9yICh2YXIgaSA9IDAsIGwgPSB0aGlzLmxlbmd0aDsgaSA8IGw7IGkrKykgeyBpZiAoaSBpbiB0aGlzICYmIHRoaXNbaV0gPT09IGl0ZW0pIHJldHVybiBpOyB9IHJldHVybiAtMTsgfTsKCiAgZnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpOwoKICBKUEVHID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIE1BUktFUlM7CgogICAgTUFSS0VSUyA9IFsweEZGQzAsIDB4RkZDMSwgMHhGRkMyLCAweEZGQzMsIDB4RkZDNSwgMHhGRkM2LCAweEZGQzcsIDB4RkZDOCwgMHhGRkM5LCAweEZGQ0EsIDB4RkZDQiwgMHhGRkNDLCAweEZGQ0QsIDB4RkZDRSwgMHhGRkNGXTsKCiAgICBmdW5jdGlvbiBKUEVHKGRhdGEsIGxhYmVsKSB7CiAgICAgIHZhciBjaGFubmVscywgbWFya2VyLCBwb3M7CiAgICAgIHRoaXMuZGF0YSA9IGRhdGE7CiAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDsKICAgICAgaWYgKHRoaXMuZGF0YS5yZWFkVUludDE2QkUoMCkgIT09IDB4RkZEOCkgewogICAgICAgIHRocm93ICJTT0kgbm90IGZvdW5kIGluIEpQRUciOwogICAgICB9CiAgICAgIHBvcyA9IDI7CiAgICAgIHdoaWxlIChwb3MgPCB0aGlzLmRhdGEubGVuZ3RoKSB7CiAgICAgICAgbWFya2VyID0gdGhpcy5kYXRhLnJlYWRVSW50MTZCRShwb3MpOwogICAgICAgIHBvcyArPSAyOwogICAgICAgIGlmIChpbmRleE9mLmNhbGwoTUFSS0VSUywgbWFya2VyKSA+PSAwKSB7CiAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcG9zICs9IHRoaXMuZGF0YS5yZWFkVUludDE2QkUocG9zKTsKICAgICAgfQogICAgICBpZiAoaW5kZXhPZi5jYWxsKE1BUktFUlMsIG1hcmtlcikgPCAwKSB7CiAgICAgICAgdGhyb3cgIkludmFsaWQgSlBFRy4iOwogICAgICB9CiAgICAgIHBvcyArPSAyOwogICAgICB0aGlzLmJpdHMgPSB0aGlzLmRhdGFbcG9zKytdOwogICAgICB0aGlzLmhlaWdodCA9IHRoaXMuZGF0YS5yZWFkVUludDE2QkUocG9zKTsKICAgICAgcG9zICs9IDI7CiAgICAgIHRoaXMud2lkdGggPSB0aGlzLmRhdGEucmVhZFVJbnQxNkJFKHBvcyk7CiAgICAgIHBvcyArPSAyOwogICAgICBjaGFubmVscyA9IHRoaXMuZGF0YVtwb3MrK107CiAgICAgIHRoaXMuY29sb3JTcGFjZSA9IChmdW5jdGlvbigpIHsKICAgICAgICBzd2l0Y2ggKGNoYW5uZWxzKSB7CiAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIHJldHVybiAnRGV2aWNlR3JheSc7CiAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgIHJldHVybiAnRGV2aWNlUkdCJzsKICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgcmV0dXJuICdEZXZpY2VDTVlLJzsKICAgICAgICB9CiAgICAgIH0pKCk7CiAgICAgIHRoaXMub2JqID0gbnVsbDsKICAgIH0KCiAgICBKUEVHLnByb3RvdHlwZS5lbWJlZCA9IGZ1bmN0aW9uKGRvY3VtZW50KSB7CiAgICAgIGlmICh0aGlzLm9iaikgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLm9iaiA9IGRvY3VtZW50LnJlZih7CiAgICAgICAgVHlwZTogJ1hPYmplY3QnLAogICAgICAgIFN1YnR5cGU6ICdJbWFnZScsCiAgICAgICAgQml0c1BlckNvbXBvbmVudDogdGhpcy5iaXRzLAogICAgICAgIFdpZHRoOiB0aGlzLndpZHRoLAogICAgICAgIEhlaWdodDogdGhpcy5oZWlnaHQsCiAgICAgICAgQ29sb3JTcGFjZTogdGhpcy5jb2xvclNwYWNlLAogICAgICAgIEZpbHRlcjogJ0RDVERlY29kZScKICAgICAgfSk7CiAgICAgIGlmICh0aGlzLmNvbG9yU3BhY2UgPT09ICdEZXZpY2VDTVlLJykgewogICAgICAgIHRoaXMub2JqLmRhdGFbJ0RlY29kZSddID0gWzEuMCwgMC4wLCAxLjAsIDAuMCwgMS4wLCAwLjAsIDEuMCwgMC4wXTsKICAgICAgfQogICAgICB0aGlzLm9iai5lbmQodGhpcy5kYXRhKTsKICAgICAgcmV0dXJuIHRoaXMuZGF0YSA9IG51bGw7CiAgICB9OwoKICAgIHJldHVybiBKUEVHOwoKICB9KSgpOwoKICBtb2R1bGUuZXhwb3J0cyA9IEpQRUc7Cgp9KS5jYWxsKHRoaXMpOwoKCi8qKiovIH0pLAovKiAzMDAgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKEJ1ZmZlcikgey8vIEdlbmVyYXRlZCBieSBDb2ZmZWVTY3JpcHQgMS4xMi42CihmdW5jdGlvbigpIHsKICB2YXIgUE5HLCBQTkdJbWFnZSwgemxpYjsKCiAgemxpYiA9IF9fd2VicGFja19yZXF1aXJlX18oNDgpOwoKICBQTkcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwMSk7CgogIFBOR0ltYWdlID0gKGZ1bmN0aW9uKCkgewogICAgZnVuY3Rpb24gUE5HSW1hZ2UoZGF0YSwgbGFiZWwpIHsKICAgICAgdGhpcy5sYWJlbCA9IGxhYmVsOwogICAgICB0aGlzLmltYWdlID0gbmV3IFBORyhkYXRhKTsKICAgICAgdGhpcy53aWR0aCA9IHRoaXMuaW1hZ2Uud2lkdGg7CiAgICAgIHRoaXMuaGVpZ2h0ID0gdGhpcy5pbWFnZS5oZWlnaHQ7CiAgICAgIHRoaXMuaW1nRGF0YSA9IHRoaXMuaW1hZ2UuaW1nRGF0YTsKICAgICAgdGhpcy5vYmogPSBudWxsOwogICAgfQoKICAgIFBOR0ltYWdlLnByb3RvdHlwZS5lbWJlZCA9IGZ1bmN0aW9uKGRvY3VtZW50KSB7CiAgICAgIHZhciBrLCBsZW4xLCBtYXNrLCBwYWxldHRlLCBwYXJhbXMsIHJnYiwgdmFsLCB4OwogICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7CiAgICAgIGlmICh0aGlzLm9iaikgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICB0aGlzLm9iaiA9IHRoaXMuZG9jdW1lbnQucmVmKHsKICAgICAgICBUeXBlOiAnWE9iamVjdCcsCiAgICAgICAgU3VidHlwZTogJ0ltYWdlJywKICAgICAgICBCaXRzUGVyQ29tcG9uZW50OiB0aGlzLmltYWdlLmJpdHMsCiAgICAgICAgV2lkdGg6IHRoaXMud2lkdGgsCiAgICAgICAgSGVpZ2h0OiB0aGlzLmhlaWdodCwKICAgICAgICBGaWx0ZXI6ICdGbGF0ZURlY29kZScKICAgICAgfSk7CiAgICAgIGlmICghdGhpcy5pbWFnZS5oYXNBbHBoYUNoYW5uZWwpIHsKICAgICAgICBwYXJhbXMgPSB0aGlzLmRvY3VtZW50LnJlZih7CiAgICAgICAgICBQcmVkaWN0b3I6IDE1LAogICAgICAgICAgQ29sb3JzOiB0aGlzLmltYWdlLmNvbG9ycywKICAgICAgICAgIEJpdHNQZXJDb21wb25lbnQ6IHRoaXMuaW1hZ2UuYml0cywKICAgICAgICAgIENvbHVtbnM6IHRoaXMud2lkdGgKICAgICAgICB9KTsKICAgICAgICB0aGlzLm9iai5kYXRhWydEZWNvZGVQYXJtcyddID0gcGFyYW1zOwogICAgICAgIHBhcmFtcy5lbmQoKTsKICAgICAgfQogICAgICBpZiAodGhpcy5pbWFnZS5wYWxldHRlLmxlbmd0aCA9PT0gMCkgewogICAgICAgIHRoaXMub2JqLmRhdGFbJ0NvbG9yU3BhY2UnXSA9IHRoaXMuaW1hZ2UuY29sb3JTcGFjZTsKICAgICAgfSBlbHNlIHsKICAgICAgICBwYWxldHRlID0gdGhpcy5kb2N1bWVudC5yZWYoKTsKICAgICAgICBwYWxldHRlLmVuZChuZXcgQnVmZmVyKHRoaXMuaW1hZ2UucGFsZXR0ZSkpOwogICAgICAgIHRoaXMub2JqLmRhdGFbJ0NvbG9yU3BhY2UnXSA9IFsnSW5kZXhlZCcsICdEZXZpY2VSR0InLCAodGhpcy5pbWFnZS5wYWxldHRlLmxlbmd0aCAvIDMpIC0gMSwgcGFsZXR0ZV07CiAgICAgIH0KICAgICAgaWYgKHRoaXMuaW1hZ2UudHJhbnNwYXJlbmN5LmdyYXlzY2FsZSkgewogICAgICAgIHZhbCA9IHRoaXMuaW1hZ2UudHJhbnNwYXJlbmN5LmdyZXlzY2FsZTsKICAgICAgICByZXR1cm4gdGhpcy5vYmouZGF0YVsnTWFzayddID0gW3ZhbCwgdmFsXTsKICAgICAgfSBlbHNlIGlmICh0aGlzLmltYWdlLnRyYW5zcGFyZW5jeS5yZ2IpIHsKICAgICAgICByZ2IgPSB0aGlzLmltYWdlLnRyYW5zcGFyZW5jeS5yZ2I7CiAgICAgICAgbWFzayA9IFtdOwogICAgICAgIGZvciAoayA9IDAsIGxlbjEgPSByZ2IubGVuZ3RoOyBrIDwgbGVuMTsgaysrKSB7CiAgICAgICAgICB4ID0gcmdiW2tdOwogICAgICAgICAgbWFzay5wdXNoKHgsIHgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5vYmouZGF0YVsnTWFzayddID0gbWFzazsKICAgICAgfSBlbHNlIGlmICh0aGlzLmltYWdlLnRyYW5zcGFyZW5jeS5pbmRleGVkKSB7CiAgICAgICAgcmV0dXJuIHRoaXMubG9hZEluZGV4ZWRBbHBoYUNoYW5uZWwoKTsKICAgICAgfSBlbHNlIGlmICh0aGlzLmltYWdlLmhhc0FscGhhQ2hhbm5lbCkgewogICAgICAgIHJldHVybiB0aGlzLnNwbGl0QWxwaGFDaGFubmVsKCk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHRoaXMuZmluYWxpemUoKTsKICAgICAgfQogICAgfTsKCiAgICBQTkdJbWFnZS5wcm90b3R5cGUuZmluYWxpemUgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIHNNYXNrOwogICAgICBpZiAodGhpcy5hbHBoYUNoYW5uZWwpIHsKICAgICAgICBzTWFzayA9IHRoaXMuZG9jdW1lbnQucmVmKHsKICAgICAgICAgIFR5cGU6ICdYT2JqZWN0JywKICAgICAgICAgIFN1YnR5cGU6ICdJbWFnZScsCiAgICAgICAgICBIZWlnaHQ6IHRoaXMuaGVpZ2h0LAogICAgICAgICAgV2lkdGg6IHRoaXMud2lkdGgsCiAgICAgICAgICBCaXRzUGVyQ29tcG9uZW50OiA4LAogICAgICAgICAgRmlsdGVyOiAnRmxhdGVEZWNvZGUnLAogICAgICAgICAgQ29sb3JTcGFjZTogJ0RldmljZUdyYXknLAogICAgICAgICAgRGVjb2RlOiBbMCwgMV0KICAgICAgICB9KTsKICAgICAgICBzTWFzay5lbmQodGhpcy5hbHBoYUNoYW5uZWwpOwogICAgICAgIHRoaXMub2JqLmRhdGFbJ1NNYXNrJ10gPSBzTWFzazsKICAgICAgfQogICAgICB0aGlzLm9iai5lbmQodGhpcy5pbWdEYXRhKTsKICAgICAgdGhpcy5pbWFnZSA9IG51bGw7CiAgICAgIHJldHVybiB0aGlzLmltZ0RhdGEgPSBudWxsOwogICAgfTsKCiAgICBQTkdJbWFnZS5wcm90b3R5cGUuc3BsaXRBbHBoYUNoYW5uZWwgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHRoaXMuaW1hZ2UuZGVjb2RlUGl4ZWxzKChmdW5jdGlvbihfdGhpcykgewogICAgICAgIHJldHVybiBmdW5jdGlvbihwaXhlbHMpIHsKICAgICAgICAgIHZhciBhLCBhbHBoYUNoYW5uZWwsIGNvbG9yQnl0ZVNpemUsIGRvbmUsIGksIGltZ0RhdGEsIGxlbiwgcCwgcGl4ZWxDb3VudDsKICAgICAgICAgIGNvbG9yQnl0ZVNpemUgPSBfdGhpcy5pbWFnZS5jb2xvcnMgKiBfdGhpcy5pbWFnZS5iaXRzIC8gODsKICAgICAgICAgIHBpeGVsQ291bnQgPSBfdGhpcy53aWR0aCAqIF90aGlzLmhlaWdodDsKICAgICAgICAgIGltZ0RhdGEgPSBuZXcgQnVmZmVyKHBpeGVsQ291bnQgKiBjb2xvckJ5dGVTaXplKTsKICAgICAgICAgIGFscGhhQ2hhbm5lbCA9IG5ldyBCdWZmZXIocGl4ZWxDb3VudCk7CiAgICAgICAgICBpID0gcCA9IGEgPSAwOwogICAgICAgICAgbGVuID0gcGl4ZWxzLmxlbmd0aDsKICAgICAgICAgIHdoaWxlIChpIDwgbGVuKSB7CiAgICAgICAgICAgIGltZ0RhdGFbcCsrXSA9IHBpeGVsc1tpKytdOwogICAgICAgICAgICBpbWdEYXRhW3ArK10gPSBwaXhlbHNbaSsrXTsKICAgICAgICAgICAgaW1nRGF0YVtwKytdID0gcGl4ZWxzW2krK107CiAgICAgICAgICAgIGFscGhhQ2hhbm5lbFthKytdID0gcGl4ZWxzW2krK107CiAgICAgICAgICB9CiAgICAgICAgICBkb25lID0gMDsKICAgICAgICAgIHpsaWIuZGVmbGF0ZShpbWdEYXRhLCBmdW5jdGlvbihlcnIsIGltZ0RhdGExKSB7CiAgICAgICAgICAgIF90aGlzLmltZ0RhdGEgPSBpbWdEYXRhMTsKICAgICAgICAgICAgaWYgKGVycikgewogICAgICAgICAgICAgIHRocm93IGVycjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoKytkb25lID09PSAyKSB7CiAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLmZpbmFsaXplKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgcmV0dXJuIHpsaWIuZGVmbGF0ZShhbHBoYUNoYW5uZWwsIGZ1bmN0aW9uKGVyciwgYWxwaGFDaGFubmVsMSkgewogICAgICAgICAgICBfdGhpcy5hbHBoYUNoYW5uZWwgPSBhbHBoYUNoYW5uZWwxOwogICAgICAgICAgICBpZiAoZXJyKSB7CiAgICAgICAgICAgICAgdGhyb3cgZXJyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgrK2RvbmUgPT09IDIpIHsKICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuZmluYWxpemUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfSk7CiAgICAgICAgfTsKICAgICAgfSkodGhpcykpOwogICAgfTsKCiAgICBQTkdJbWFnZS5wcm90b3R5cGUubG9hZEluZGV4ZWRBbHBoYUNoYW5uZWwgPSBmdW5jdGlvbihmbikgewogICAgICB2YXIgdHJhbnNwYXJlbmN5OwogICAgICB0cmFuc3BhcmVuY3kgPSB0aGlzLmltYWdlLnRyYW5zcGFyZW5jeS5pbmRleGVkOwogICAgICByZXR1cm4gdGhpcy5pbWFnZS5kZWNvZGVQaXhlbHMoKGZ1bmN0aW9uKF90aGlzKSB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHBpeGVscykgewogICAgICAgICAgdmFyIGFscGhhQ2hhbm5lbCwgaSwgaiwgaywgcmVmOwogICAgICAgICAgYWxwaGFDaGFubmVsID0gbmV3IEJ1ZmZlcihfdGhpcy53aWR0aCAqIF90aGlzLmhlaWdodCk7CiAgICAgICAgICBpID0gMDsKICAgICAgICAgIGZvciAoaiA9IGsgPSAwLCByZWYgPSBwaXhlbHMubGVuZ3RoOyBrIDwgcmVmOyBqID0gayArPSAxKSB7CiAgICAgICAgICAgIGFscGhhQ2hhbm5lbFtpKytdID0gdHJhbnNwYXJlbmN5W3BpeGVsc1tqXV07CiAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gemxpYi5kZWZsYXRlKGFscGhhQ2hhbm5lbCwgZnVuY3Rpb24oZXJyLCBhbHBoYUNoYW5uZWwxKSB7CiAgICAgICAgICAgIF90aGlzLmFscGhhQ2hhbm5lbCA9IGFscGhhQ2hhbm5lbDE7CiAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICB0aHJvdyBlcnI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIF90aGlzLmZpbmFsaXplKCk7CiAgICAgICAgICB9KTsKICAgICAgICB9OwogICAgICB9KSh0aGlzKSk7CiAgICB9OwoKICAgIHJldHVybiBQTkdJbWFnZTsKCiAgfSkoKTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBQTkdJbWFnZTsKCn0pLmNhbGwodGhpcyk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDMwMSAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyKSB7Ly8gR2VuZXJhdGVkIGJ5IENvZmZlZVNjcmlwdCAxLjQuMAoKLyoKIyBNSVQgTElDRU5TRQojIENvcHlyaWdodCAoYykgMjAxMSBEZXZvbiBHb3ZldHQKIyAKIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoaXMgCiMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSAKIyB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCAKIyBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgCiMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKIyAKIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIAojIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KIyAKIyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgCiMgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIAojIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIAojIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgCiMgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiovCgoKKGZ1bmN0aW9uKCkgewogIHZhciBQTkcsIGZzLCB6bGliOwoKICBmcyA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7CgogIHpsaWIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ4KTsKCiAgbW9kdWxlLmV4cG9ydHMgPSBQTkcgPSAoZnVuY3Rpb24oKSB7CgogICAgUE5HLmRlY29kZSA9IGZ1bmN0aW9uKHBhdGgsIGZuKSB7CiAgICAgIHJldHVybiBmcy5yZWFkRmlsZShwYXRoLCBmdW5jdGlvbihlcnIsIGZpbGUpIHsKICAgICAgICB2YXIgcG5nOwogICAgICAgIHBuZyA9IG5ldyBQTkcoZmlsZSk7CiAgICAgICAgcmV0dXJuIHBuZy5kZWNvZGUoZnVuY3Rpb24ocGl4ZWxzKSB7CiAgICAgICAgICByZXR1cm4gZm4ocGl4ZWxzKTsKICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9OwoKICAgIFBORy5sb2FkID0gZnVuY3Rpb24ocGF0aCkgewogICAgICB2YXIgZmlsZTsKICAgICAgZmlsZSA9IGZzLnJlYWRGaWxlU3luYyhwYXRoKTsKICAgICAgcmV0dXJuIG5ldyBQTkcoZmlsZSk7CiAgICB9OwoKICAgIGZ1bmN0aW9uIFBORyhkYXRhKSB7CiAgICAgIHZhciBjaHVua1NpemUsIGNvbG9ycywgaSwgaW5kZXgsIGtleSwgc2VjdGlvbiwgc2hvcnQsIHRleHQsIF9pLCBfaiwgX3JlZjsKICAgICAgdGhpcy5kYXRhID0gZGF0YTsKICAgICAgdGhpcy5wb3MgPSA4OwogICAgICB0aGlzLnBhbGV0dGUgPSBbXTsKICAgICAgdGhpcy5pbWdEYXRhID0gW107CiAgICAgIHRoaXMudHJhbnNwYXJlbmN5ID0ge307CiAgICAgIHRoaXMudGV4dCA9IHt9OwogICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGNodW5rU2l6ZSA9IHRoaXMucmVhZFVJbnQzMigpOwogICAgICAgIHNlY3Rpb24gPSAoKGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIF9pLCBfcmVzdWx0czsKICAgICAgICAgIF9yZXN1bHRzID0gW107CiAgICAgICAgICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgNDsgaSA9ICsrX2kpIHsKICAgICAgICAgICAgX3Jlc3VsdHMucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMuZGF0YVt0aGlzLnBvcysrXSkpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIF9yZXN1bHRzOwogICAgICAgIH0pLmNhbGwodGhpcykpLmpvaW4oJycpOwogICAgICAgIHN3aXRjaCAoc2VjdGlvbikgewogICAgICAgICAgY2FzZSAnSUhEUic6CiAgICAgICAgICAgIHRoaXMud2lkdGggPSB0aGlzLnJlYWRVSW50MzIoKTsKICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLnJlYWRVSW50MzIoKTsKICAgICAgICAgICAgdGhpcy5iaXRzID0gdGhpcy5kYXRhW3RoaXMucG9zKytdOwogICAgICAgICAgICB0aGlzLmNvbG9yVHlwZSA9IHRoaXMuZGF0YVt0aGlzLnBvcysrXTsKICAgICAgICAgICAgdGhpcy5jb21wcmVzc2lvbk1ldGhvZCA9IHRoaXMuZGF0YVt0aGlzLnBvcysrXTsKICAgICAgICAgICAgdGhpcy5maWx0ZXJNZXRob2QgPSB0aGlzLmRhdGFbdGhpcy5wb3MrK107CiAgICAgICAgICAgIHRoaXMuaW50ZXJsYWNlTWV0aG9kID0gdGhpcy5kYXRhW3RoaXMucG9zKytdOwogICAgICAgICAgICBicmVhazsKICAgICAgICAgIGNhc2UgJ1BMVEUnOgogICAgICAgICAgICB0aGlzLnBhbGV0dGUgPSB0aGlzLnJlYWQoY2h1bmtTaXplKTsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICBjYXNlICdJREFUJzoKICAgICAgICAgICAgZm9yIChpID0gX2kgPSAwOyBfaSA8IGNodW5rU2l6ZTsgaSA9IF9pICs9IDEpIHsKICAgICAgICAgICAgICB0aGlzLmltZ0RhdGEucHVzaCh0aGlzLmRhdGFbdGhpcy5wb3MrK10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAndFJOUyc6CiAgICAgICAgICAgIHRoaXMudHJhbnNwYXJlbmN5ID0ge307CiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jb2xvclR5cGUpIHsKICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zcGFyZW5jeS5pbmRleGVkID0gdGhpcy5yZWFkKGNodW5rU2l6ZSk7CiAgICAgICAgICAgICAgICBzaG9ydCA9IDI1NSAtIHRoaXMudHJhbnNwYXJlbmN5LmluZGV4ZWQubGVuZ3RoOwogICAgICAgICAgICAgICAgaWYgKHNob3J0ID4gMCkgewogICAgICAgICAgICAgICAgICBmb3IgKGkgPSBfaiA9IDA7IDAgPD0gc2hvcnQgPyBfaiA8IHNob3J0IDogX2ogPiBzaG9ydDsgaSA9IDAgPD0gc2hvcnQgPyArK19qIDogLS1faikgewogICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNwYXJlbmN5LmluZGV4ZWQucHVzaCgyNTUpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zcGFyZW5jeS5ncmF5c2NhbGUgPSB0aGlzLnJlYWQoY2h1bmtTaXplKVswXTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIHRoaXMudHJhbnNwYXJlbmN5LnJnYiA9IHRoaXMucmVhZChjaHVua1NpemUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAndEVYdCc6CiAgICAgICAgICAgIHRleHQgPSB0aGlzLnJlYWQoY2h1bmtTaXplKTsKICAgICAgICAgICAgaW5kZXggPSB0ZXh0LmluZGV4T2YoMCk7CiAgICAgICAgICAgIGtleSA9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCB0ZXh0LnNsaWNlKDAsIGluZGV4KSk7CiAgICAgICAgICAgIHRoaXMudGV4dFtrZXldID0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIHRleHQuc2xpY2UoaW5kZXggKyAxKSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgY2FzZSAnSUVORCc6CiAgICAgICAgICAgIHRoaXMuY29sb3JzID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jb2xvclR5cGUpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBjYXNlIDY6CiAgICAgICAgICAgICAgICAgIHJldHVybiAzOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuY2FsbCh0aGlzKTsKICAgICAgICAgICAgdGhpcy5oYXNBbHBoYUNoYW5uZWwgPSAoX3JlZiA9IHRoaXMuY29sb3JUeXBlKSA9PT0gNCB8fCBfcmVmID09PSA2OwogICAgICAgICAgICBjb2xvcnMgPSB0aGlzLmNvbG9ycyArICh0aGlzLmhhc0FscGhhQ2hhbm5lbCA/IDEgOiAwKTsKICAgICAgICAgICAgdGhpcy5waXhlbEJpdGxlbmd0aCA9IHRoaXMuYml0cyAqIGNvbG9yczsKICAgICAgICAgICAgdGhpcy5jb2xvclNwYWNlID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jb2xvcnMpIHsKICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgcmV0dXJuICdEZXZpY2VHcmF5JzsKICAgICAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgICAgcmV0dXJuICdEZXZpY2VSR0InOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkuY2FsbCh0aGlzKTsKICAgICAgICAgICAgdGhpcy5pbWdEYXRhID0gbmV3IEJ1ZmZlcih0aGlzLmltZ0RhdGEpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICB0aGlzLnBvcyArPSBjaHVua1NpemU7CiAgICAgICAgfQogICAgICAgIHRoaXMucG9zICs9IDQ7CiAgICAgICAgaWYgKHRoaXMucG9zID4gdGhpcy5kYXRhLmxlbmd0aCkgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbmNvbXBsZXRlIG9yIGNvcnJ1cHQgUE5HIGZpbGUiKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuOwogICAgfQoKICAgIFBORy5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKGJ5dGVzKSB7CiAgICAgIHZhciBpLCBfaSwgX3Jlc3VsdHM7CiAgICAgIF9yZXN1bHRzID0gW107CiAgICAgIGZvciAoaSA9IF9pID0gMDsgMCA8PSBieXRlcyA/IF9pIDwgYnl0ZXMgOiBfaSA+IGJ5dGVzOyBpID0gMCA8PSBieXRlcyA/ICsrX2kgOiAtLV9pKSB7CiAgICAgICAgX3Jlc3VsdHMucHVzaCh0aGlzLmRhdGFbdGhpcy5wb3MrK10pOwogICAgICB9CiAgICAgIHJldHVybiBfcmVzdWx0czsKICAgIH07CgogICAgUE5HLnByb3RvdHlwZS5yZWFkVUludDMyID0gZnVuY3Rpb24oKSB7CiAgICAgIHZhciBiMSwgYjIsIGIzLCBiNDsKICAgICAgYjEgPSB0aGlzLmRhdGFbdGhpcy5wb3MrK10gPDwgMjQ7CiAgICAgIGIyID0gdGhpcy5kYXRhW3RoaXMucG9zKytdIDw8IDE2OwogICAgICBiMyA9IHRoaXMuZGF0YVt0aGlzLnBvcysrXSA8PCA4OwogICAgICBiNCA9IHRoaXMuZGF0YVt0aGlzLnBvcysrXTsKICAgICAgcmV0dXJuIGIxIHwgYjIgfCBiMyB8IGI0OwogICAgfTsKCiAgICBQTkcucHJvdG90eXBlLnJlYWRVSW50MTYgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGIxLCBiMjsKICAgICAgYjEgPSB0aGlzLmRhdGFbdGhpcy5wb3MrK10gPDwgODsKICAgICAgYjIgPSB0aGlzLmRhdGFbdGhpcy5wb3MrK107CiAgICAgIHJldHVybiBiMSB8IGIyOwogICAgfTsKCiAgICBQTkcucHJvdG90eXBlLmRlY29kZVBpeGVscyA9IGZ1bmN0aW9uKGZuKSB7CiAgICAgIHZhciBfdGhpcyA9IHRoaXM7CiAgICAgIHJldHVybiB6bGliLmluZmxhdGUodGhpcy5pbWdEYXRhLCBmdW5jdGlvbihlcnIsIGRhdGEpIHsKICAgICAgICB2YXIgYnl0ZSwgYywgY29sLCBpLCBsZWZ0LCBsZW5ndGgsIHAsIHBhLCBwYWV0aCwgcGIsIHBjLCBwaXhlbEJ5dGVzLCBwaXhlbHMsIHBvcywgcm93LCBzY2FubGluZUxlbmd0aCwgdXBwZXIsIHVwcGVyTGVmdCwgX2ksIF9qLCBfaywgX2wsIF9tOwogICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgIHRocm93IGVycjsKICAgICAgICB9CiAgICAgICAgcGl4ZWxCeXRlcyA9IF90aGlzLnBpeGVsQml0bGVuZ3RoIC8gODsKICAgICAgICBzY2FubGluZUxlbmd0aCA9IHBpeGVsQnl0ZXMgKiBfdGhpcy53aWR0aDsKICAgICAgICBwaXhlbHMgPSBuZXcgQnVmZmVyKHNjYW5saW5lTGVuZ3RoICogX3RoaXMuaGVpZ2h0KTsKICAgICAgICBsZW5ndGggPSBkYXRhLmxlbmd0aDsKICAgICAgICByb3cgPSAwOwogICAgICAgIHBvcyA9IDA7CiAgICAgICAgYyA9IDA7CiAgICAgICAgd2hpbGUgKHBvcyA8IGxlbmd0aCkgewogICAgICAgICAgc3dpdGNoIChkYXRhW3BvcysrXSkgewogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgZm9yIChpID0gX2kgPSAwOyBfaSA8IHNjYW5saW5lTGVuZ3RoOyBpID0gX2kgKz0gMSkgewogICAgICAgICAgICAgICAgcGl4ZWxzW2MrK10gPSBkYXRhW3BvcysrXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICBmb3IgKGkgPSBfaiA9IDA7IF9qIDwgc2NhbmxpbmVMZW5ndGg7IGkgPSBfaiArPSAxKSB7CiAgICAgICAgICAgICAgICBieXRlID0gZGF0YVtwb3MrK107CiAgICAgICAgICAgICAgICBsZWZ0ID0gaSA8IHBpeGVsQnl0ZXMgPyAwIDogcGl4ZWxzW2MgLSBwaXhlbEJ5dGVzXTsKICAgICAgICAgICAgICAgIHBpeGVsc1tjKytdID0gKGJ5dGUgKyBsZWZ0KSAlIDI1NjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICBmb3IgKGkgPSBfayA9IDA7IF9rIDwgc2NhbmxpbmVMZW5ndGg7IGkgPSBfayArPSAxKSB7CiAgICAgICAgICAgICAgICBieXRlID0gZGF0YVtwb3MrK107CiAgICAgICAgICAgICAgICBjb2wgPSAoaSAtIChpICUgcGl4ZWxCeXRlcykpIC8gcGl4ZWxCeXRlczsKICAgICAgICAgICAgICAgIHVwcGVyID0gcm93ICYmIHBpeGVsc1socm93IC0gMSkgKiBzY2FubGluZUxlbmd0aCArIGNvbCAqIHBpeGVsQnl0ZXMgKyAoaSAlIHBpeGVsQnl0ZXMpXTsKICAgICAgICAgICAgICAgIHBpeGVsc1tjKytdID0gKHVwcGVyICsgYnl0ZSkgJSAyNTY7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgZm9yIChpID0gX2wgPSAwOyBfbCA8IHNjYW5saW5lTGVuZ3RoOyBpID0gX2wgKz0gMSkgewogICAgICAgICAgICAgICAgYnl0ZSA9IGRhdGFbcG9zKytdOwogICAgICAgICAgICAgICAgY29sID0gKGkgLSAoaSAlIHBpeGVsQnl0ZXMpKSAvIHBpeGVsQnl0ZXM7CiAgICAgICAgICAgICAgICBsZWZ0ID0gaSA8IHBpeGVsQnl0ZXMgPyAwIDogcGl4ZWxzW2MgLSBwaXhlbEJ5dGVzXTsKICAgICAgICAgICAgICAgIHVwcGVyID0gcm93ICYmIHBpeGVsc1socm93IC0gMSkgKiBzY2FubGluZUxlbmd0aCArIGNvbCAqIHBpeGVsQnl0ZXMgKyAoaSAlIHBpeGVsQnl0ZXMpXTsKICAgICAgICAgICAgICAgIHBpeGVsc1tjKytdID0gKGJ5dGUgKyBNYXRoLmZsb29yKChsZWZ0ICsgdXBwZXIpIC8gMikpICUgMjU2OwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgIGZvciAoaSA9IF9tID0gMDsgX20gPCBzY2FubGluZUxlbmd0aDsgaSA9IF9tICs9IDEpIHsKICAgICAgICAgICAgICAgIGJ5dGUgPSBkYXRhW3BvcysrXTsKICAgICAgICAgICAgICAgIGNvbCA9IChpIC0gKGkgJSBwaXhlbEJ5dGVzKSkgLyBwaXhlbEJ5dGVzOwogICAgICAgICAgICAgICAgbGVmdCA9IGkgPCBwaXhlbEJ5dGVzID8gMCA6IHBpeGVsc1tjIC0gcGl4ZWxCeXRlc107CiAgICAgICAgICAgICAgICBpZiAocm93ID09PSAwKSB7CiAgICAgICAgICAgICAgICAgIHVwcGVyID0gdXBwZXJMZWZ0ID0gMDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIHVwcGVyID0gcGl4ZWxzWyhyb3cgLSAxKSAqIHNjYW5saW5lTGVuZ3RoICsgY29sICogcGl4ZWxCeXRlcyArIChpICUgcGl4ZWxCeXRlcyldOwogICAgICAgICAgICAgICAgICB1cHBlckxlZnQgPSBjb2wgJiYgcGl4ZWxzWyhyb3cgLSAxKSAqIHNjYW5saW5lTGVuZ3RoICsgKGNvbCAtIDEpICogcGl4ZWxCeXRlcyArIChpICUgcGl4ZWxCeXRlcyldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcCA9IGxlZnQgKyB1cHBlciAtIHVwcGVyTGVmdDsKICAgICAgICAgICAgICAgIHBhID0gTWF0aC5hYnMocCAtIGxlZnQpOwogICAgICAgICAgICAgICAgcGIgPSBNYXRoLmFicyhwIC0gdXBwZXIpOwogICAgICAgICAgICAgICAgcGMgPSBNYXRoLmFicyhwIC0gdXBwZXJMZWZ0KTsKICAgICAgICAgICAgICAgIGlmIChwYSA8PSBwYiAmJiBwYSA8PSBwYykgewogICAgICAgICAgICAgICAgICBwYWV0aCA9IGxlZnQ7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBiIDw9IHBjKSB7CiAgICAgICAgICAgICAgICAgIHBhZXRoID0gdXBwZXI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBwYWV0aCA9IHVwcGVyTGVmdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHBpeGVsc1tjKytdID0gKGJ5dGUgKyBwYWV0aCkgJSAyNTY7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBmaWx0ZXIgYWxnb3JpdGhtOiAiICsgZGF0YVtwb3MgLSAxXSk7CiAgICAgICAgICB9CiAgICAgICAgICByb3crKzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZuKHBpeGVscyk7CiAgICAgIH0pOwogICAgfTsKCiAgICBQTkcucHJvdG90eXBlLmRlY29kZVBhbGV0dGUgPSBmdW5jdGlvbigpIHsKICAgICAgdmFyIGMsIGksIGxlbmd0aCwgcGFsZXR0ZSwgcG9zLCByZXQsIHRyYW5zcGFyZW5jeSwgX2ksIF9yZWYsIF9yZWYxOwogICAgICBwYWxldHRlID0gdGhpcy5wYWxldHRlOwogICAgICB0cmFuc3BhcmVuY3kgPSB0aGlzLnRyYW5zcGFyZW5jeS5pbmRleGVkIHx8IFtdOwogICAgICByZXQgPSBuZXcgQnVmZmVyKHRyYW5zcGFyZW5jeS5sZW5ndGggKyBwYWxldHRlLmxlbmd0aCk7CiAgICAgIHBvcyA9IDA7CiAgICAgIGxlbmd0aCA9IHBhbGV0dGUubGVuZ3RoOwogICAgICBjID0gMDsKICAgICAgZm9yIChpID0gX2kgPSAwLCBfcmVmID0gcGFsZXR0ZS5sZW5ndGg7IF9pIDwgX3JlZjsgaSA9IF9pICs9IDMpIHsKICAgICAgICByZXRbcG9zKytdID0gcGFsZXR0ZVtpXTsKICAgICAgICByZXRbcG9zKytdID0gcGFsZXR0ZVtpICsgMV07CiAgICAgICAgcmV0W3BvcysrXSA9IHBhbGV0dGVbaSArIDJdOwogICAgICAgIHJldFtwb3MrK10gPSAoX3JlZjEgPSB0cmFuc3BhcmVuY3lbYysrXSkgIT0gbnVsbCA/IF9yZWYxIDogMjU1OwogICAgICB9CiAgICAgIHJldHVybiByZXQ7CiAgICB9OwoKICAgIFBORy5wcm90b3R5cGUuY29weVRvSW1hZ2VEYXRhID0gZnVuY3Rpb24oaW1hZ2VEYXRhLCBwaXhlbHMpIHsKICAgICAgdmFyIGFscGhhLCBjb2xvcnMsIGRhdGEsIGksIGlucHV0LCBqLCBrLCBsZW5ndGgsIHBhbGV0dGUsIHYsIF9yZWY7CiAgICAgIGNvbG9ycyA9IHRoaXMuY29sb3JzOwogICAgICBwYWxldHRlID0gbnVsbDsKICAgICAgYWxwaGEgPSB0aGlzLmhhc0FscGhhQ2hhbm5lbDsKICAgICAgaWYgKHRoaXMucGFsZXR0ZS5sZW5ndGgpIHsKICAgICAgICBwYWxldHRlID0gKF9yZWYgPSB0aGlzLl9kZWNvZGVkUGFsZXR0ZSkgIT0gbnVsbCA/IF9yZWYgOiB0aGlzLl9kZWNvZGVkUGFsZXR0ZSA9IHRoaXMuZGVjb2RlUGFsZXR0ZSgpOwogICAgICAgIGNvbG9ycyA9IDQ7CiAgICAgICAgYWxwaGEgPSB0cnVlOwogICAgICB9CiAgICAgIGRhdGEgPSAoaW1hZ2VEYXRhICE9IG51bGwgPyBpbWFnZURhdGEuZGF0YSA6IHZvaWQgMCkgfHwgaW1hZ2VEYXRhOwogICAgICBsZW5ndGggPSBkYXRhLmxlbmd0aDsKICAgICAgaW5wdXQgPSBwYWxldHRlIHx8IHBpeGVsczsKICAgICAgaSA9IGogPSAwOwogICAgICBpZiAoY29sb3JzID09PSAxKSB7CiAgICAgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKICAgICAgICAgIGsgPSBwYWxldHRlID8gcGl4ZWxzW2kgLyA0XSAqIDQgOiBqOwogICAgICAgICAgdiA9IGlucHV0W2srK107CiAgICAgICAgICBkYXRhW2krK10gPSB2OwogICAgICAgICAgZGF0YVtpKytdID0gdjsKICAgICAgICAgIGRhdGFbaSsrXSA9IHY7CiAgICAgICAgICBkYXRhW2krK10gPSBhbHBoYSA/IGlucHV0W2srK10gOiAyNTU7CiAgICAgICAgICBqID0gazsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgd2hpbGUgKGkgPCBsZW5ndGgpIHsKICAgICAgICAgIGsgPSBwYWxldHRlID8gcGl4ZWxzW2kgLyA0XSAqIDQgOiBqOwogICAgICAgICAgZGF0YVtpKytdID0gaW5wdXRbaysrXTsKICAgICAgICAgIGRhdGFbaSsrXSA9IGlucHV0W2srK107CiAgICAgICAgICBkYXRhW2krK10gPSBpbnB1dFtrKytdOwogICAgICAgICAgZGF0YVtpKytdID0gYWxwaGEgPyBpbnB1dFtrKytdIDogMjU1OwogICAgICAgICAgaiA9IGs7CiAgICAgICAgfQogICAgICB9CiAgICB9OwoKICAgIFBORy5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oZm4pIHsKICAgICAgdmFyIHJldCwKICAgICAgICBfdGhpcyA9IHRoaXM7CiAgICAgIHJldCA9IG5ldyBCdWZmZXIodGhpcy53aWR0aCAqIHRoaXMuaGVpZ2h0ICogNCk7CiAgICAgIHJldHVybiB0aGlzLmRlY29kZVBpeGVscyhmdW5jdGlvbihwaXhlbHMpIHsKICAgICAgICBfdGhpcy5jb3B5VG9JbWFnZURhdGEocmV0LCBwaXhlbHMpOwogICAgICAgIHJldHVybiBmbihyZXQpOwogICAgICB9KTsKICAgIH07CgogICAgcmV0dXJuIFBORzsKCiAgfSkoKTsKCn0pLmNhbGwodGhpcyk7CgovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXygxKS5CdWZmZXIpKQoKLyoqKi8gfSksCi8qIDMwMiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7CgovLyBHZW5lcmF0ZWQgYnkgQ29mZmVlU2NyaXB0IDEuMTIuNgooZnVuY3Rpb24oKSB7CiAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICBhbm5vdGF0ZTogZnVuY3Rpb24oeCwgeSwgdywgaCwgb3B0aW9ucykgewogICAgICB2YXIga2V5LCByZWYsIHZhbDsKICAgICAgb3B0aW9ucy5UeXBlID0gJ0Fubm90JzsKICAgICAgb3B0aW9ucy5SZWN0ID0gdGhpcy5fY29udmVydFJlY3QoeCwgeSwgdywgaCk7CiAgICAgIG9wdGlvbnMuQm9yZGVyID0gWzAsIDAsIDBdOwogICAgICBpZiAob3B0aW9ucy5TdWJ0eXBlICE9PSAnTGluaycpIHsKICAgICAgICBpZiAob3B0aW9ucy5DID09IG51bGwpIHsKICAgICAgICAgIG9wdGlvbnMuQyA9IHRoaXMuX25vcm1hbGl6ZUNvbG9yKG9wdGlvbnMuY29sb3IgfHwgWzAsIDAsIDBdKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZGVsZXRlIG9wdGlvbnMuY29sb3I7CiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5EZXN0ID09PSAnc3RyaW5nJykgewogICAgICAgIG9wdGlvbnMuRGVzdCA9IG5ldyBTdHJpbmcob3B0aW9ucy5EZXN0KTsKICAgICAgfQogICAgICBmb3IgKGtleSBpbiBvcHRpb25zKSB7CiAgICAgICAgdmFsID0gb3B0aW9uc1trZXldOwogICAgICAgIG9wdGlvbnNba2V5WzBdLnRvVXBwZXJDYXNlKCkgKyBrZXkuc2xpY2UoMSldID0gdmFsOwogICAgICB9CiAgICAgIHJlZiA9IHRoaXMucmVmKG9wdGlvbnMpOwogICAgICB0aGlzLnBhZ2UuYW5ub3RhdGlvbnMucHVzaChyZWYpOwogICAgICByZWYuZW5kKCk7CiAgICAgIHJldHVybiB0aGlzOwogICAgfSwKICAgIG5vdGU6IGZ1bmN0aW9uKHgsIHksIHcsIGgsIGNvbnRlbnRzLCBvcHRpb25zKSB7CiAgICAgIGlmIChvcHRpb25zID09IG51bGwpIHsKICAgICAgICBvcHRpb25zID0ge307CiAgICAgIH0KICAgICAgb3B0aW9ucy5TdWJ0eXBlID0gJ1RleHQnOwogICAgICBvcHRpb25zLkNvbnRlbnRzID0gbmV3IFN0cmluZyhjb250ZW50cyk7CiAgICAgIG9wdGlvbnMuTmFtZSA9ICdDb21tZW50JzsKICAgICAgaWYgKG9wdGlvbnMuY29sb3IgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMuY29sb3IgPSBbMjQzLCAyMjMsIDkyXTsKICAgICAgfQogICAgICByZXR1cm4gdGhpcy5hbm5vdGF0ZSh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICBsaW5rOiBmdW5jdGlvbih4LCB5LCB3LCBoLCB1cmwsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBvcHRpb25zLlN1YnR5cGUgPSAnTGluayc7CiAgICAgIG9wdGlvbnMuQSA9IHRoaXMucmVmKHsKICAgICAgICBTOiAnVVJJJywKICAgICAgICBVUkk6IG5ldyBTdHJpbmcodXJsKQogICAgICB9KTsKICAgICAgb3B0aW9ucy5BLmVuZCgpOwogICAgICByZXR1cm4gdGhpcy5hbm5vdGF0ZSh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICBfbWFya3VwOiBmdW5jdGlvbih4LCB5LCB3LCBoLCBvcHRpb25zKSB7CiAgICAgIHZhciByZWYxLCB4MSwgeDIsIHkxLCB5MjsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICByZWYxID0gdGhpcy5fY29udmVydFJlY3QoeCwgeSwgdywgaCksIHgxID0gcmVmMVswXSwgeTEgPSByZWYxWzFdLCB4MiA9IHJlZjFbMl0sIHkyID0gcmVmMVszXTsKICAgICAgb3B0aW9ucy5RdWFkUG9pbnRzID0gW3gxLCB5MiwgeDIsIHkyLCB4MSwgeTEsIHgyLCB5MV07CiAgICAgIG9wdGlvbnMuQ29udGVudHMgPSBuZXcgU3RyaW5nOwogICAgICByZXR1cm4gdGhpcy5hbm5vdGF0ZSh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICBoaWdobGlnaHQ6IGZ1bmN0aW9uKHgsIHksIHcsIGgsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBvcHRpb25zLlN1YnR5cGUgPSAnSGlnaGxpZ2h0JzsKICAgICAgaWYgKG9wdGlvbnMuY29sb3IgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMuY29sb3IgPSBbMjQxLCAyMzgsIDE0OF07CiAgICAgIH0KICAgICAgcmV0dXJuIHRoaXMuX21hcmt1cCh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICB1bmRlcmxpbmU6IGZ1bmN0aW9uKHgsIHksIHcsIGgsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBvcHRpb25zLlN1YnR5cGUgPSAnVW5kZXJsaW5lJzsKICAgICAgcmV0dXJuIHRoaXMuX21hcmt1cCh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICBzdHJpa2U6IGZ1bmN0aW9uKHgsIHksIHcsIGgsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBvcHRpb25zLlN1YnR5cGUgPSAnU3RyaWtlT3V0JzsKICAgICAgcmV0dXJuIHRoaXMuX21hcmt1cCh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICBsaW5lQW5ub3RhdGlvbjogZnVuY3Rpb24oeDEsIHkxLCB4MiwgeTIsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBvcHRpb25zLlN1YnR5cGUgPSAnTGluZSc7CiAgICAgIG9wdGlvbnMuQ29udGVudHMgPSBuZXcgU3RyaW5nOwogICAgICBvcHRpb25zLkwgPSBbeDEsIHRoaXMucGFnZS5oZWlnaHQgLSB5MSwgeDIsIHRoaXMucGFnZS5oZWlnaHQgLSB5Ml07CiAgICAgIHJldHVybiB0aGlzLmFubm90YXRlKHgxLCB5MSwgeDIsIHkyLCBvcHRpb25zKTsKICAgIH0sCiAgICByZWN0QW5ub3RhdGlvbjogZnVuY3Rpb24oeCwgeSwgdywgaCwgb3B0aW9ucykgewogICAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7CiAgICAgICAgb3B0aW9ucyA9IHt9OwogICAgICB9CiAgICAgIG9wdGlvbnMuU3VidHlwZSA9ICdTcXVhcmUnOwogICAgICBvcHRpb25zLkNvbnRlbnRzID0gbmV3IFN0cmluZzsKICAgICAgcmV0dXJuIHRoaXMuYW5ub3RhdGUoeCwgeSwgdywgaCwgb3B0aW9ucyk7CiAgICB9LAogICAgZWxsaXBzZUFubm90YXRpb246IGZ1bmN0aW9uKHgsIHksIHcsIGgsIG9wdGlvbnMpIHsKICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkgewogICAgICAgIG9wdGlvbnMgPSB7fTsKICAgICAgfQogICAgICBvcHRpb25zLlN1YnR5cGUgPSAnQ2lyY2xlJzsKICAgICAgb3B0aW9ucy5Db250ZW50cyA9IG5ldyBTdHJpbmc7CiAgICAgIHJldHVybiB0aGlzLmFubm90YXRlKHgsIHksIHcsIGgsIG9wdGlvbnMpOwogICAgfSwKICAgIHRleHRBbm5vdGF0aW9uOiBmdW5jdGlvbih4LCB5LCB3LCBoLCB0ZXh0LCBvcHRpb25zKSB7CiAgICAgIGlmIChvcHRpb25zID09IG51bGwpIHsKICAgICAgICBvcHRpb25zID0ge307CiAgICAgIH0KICAgICAgb3B0aW9ucy5TdWJ0eXBlID0gJ0ZyZWVUZXh0JzsKICAgICAgb3B0aW9ucy5Db250ZW50cyA9IG5ldyBTdHJpbmcodGV4dCk7CiAgICAgIG9wdGlvbnMuREEgPSBuZXcgU3RyaW5nOwogICAgICByZXR1cm4gdGhpcy5hbm5vdGF0ZSh4LCB5LCB3LCBoLCBvcHRpb25zKTsKICAgIH0sCiAgICBfY29udmVydFJlY3Q6IGZ1bmN0aW9uKHgxLCB5MSwgdywgaCkgewogICAgICB2YXIgbTAsIG0xLCBtMiwgbTMsIG00LCBtNSwgcmVmMSwgeDIsIHkyOwogICAgICB5MiA9IHkxOwogICAgICB5MSArPSBoOwogICAgICB4MiA9IHgxICsgdzsKICAgICAgcmVmMSA9IHRoaXMuX2N0bSwgbTAgPSByZWYxWzBdLCBtMSA9IHJlZjFbMV0sIG0yID0gcmVmMVsyXSwgbTMgPSByZWYxWzNdLCBtNCA9IHJlZjFbNF0sIG01ID0gcmVmMVs1XTsKICAgICAgeDEgPSBtMCAqIHgxICsgbTIgKiB5MSArIG00OwogICAgICB5MSA9IG0xICogeDEgKyBtMyAqIHkxICsgbTU7CiAgICAgIHgyID0gbTAgKiB4MiArIG0yICogeTIgKyBtNDsKICAgICAgeTIgPSBtMSAqIHgyICsgbTMgKiB5MiArIG01OwogICAgICByZXR1cm4gW3gxLCB5MSwgeDIsIHkyXTsKICAgIH0KICB9OwoKfSkuY2FsbCh0aGlzKTsKCgovKioqLyB9KSwKLyogMzAzICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgptb2R1bGUuZXhwb3J0cyA9IHsKCSc0QTAnOiBbNDc2Ny44NywgNjc0MC43OV0sCgknMkEwJzogWzMzNzAuMzksIDQ3NjcuODddLAoJQTA6IFsyMzgzLjk0LCAzMzcwLjM5XSwKCUExOiBbMTY4My43OCwgMjM4My45NF0sCglBMjogWzExOTAuNTUsIDE2ODMuNzhdLAoJQTM6IFs4NDEuODksIDExOTAuNTVdLAoJQTQ6IFs1OTUuMjgsIDg0MS44OV0sCglBNTogWzQxOS41MywgNTk1LjI4XSwKCUE2OiBbMjk3LjY0LCA0MTkuNTNdLAoJQTc6IFsyMDkuNzYsIDI5Ny42NF0sCglBODogWzE0Ny40MCwgMjA5Ljc2XSwKCUE5OiBbMTA0Ljg4LCAxNDcuNDBdLAoJQTEwOiBbNzMuNzAsIDEwNC44OF0sCglCMDogWzI4MzQuNjUsIDQwMDguMTldLAoJQjE6IFsyMDA0LjA5LCAyODM0LjY1XSwKCUIyOiBbMTQxNy4zMiwgMjAwNC4wOV0sCglCMzogWzEwMDAuNjMsIDE0MTcuMzJdLAoJQjQ6IFs3MDguNjYsIDEwMDAuNjNdLAoJQjU6IFs0OTguOTAsIDcwOC42Nl0sCglCNjogWzM1NC4zMywgNDk4LjkwXSwKCUI3OiBbMjQ5LjQ1LCAzNTQuMzNdLAoJQjg6IFsxNzUuNzUsIDI0OS40NV0sCglCOTogWzEyNC43MiwgMTc1Ljc1XSwKCUIxMDogWzg3Ljg3LCAxMjQuNzJdLAoJQzA6IFsyNTk5LjM3LCAzNjc2LjU0XSwKCUMxOiBbMTgzNi44NSwgMjU5OS4zN10sCglDMjogWzEyOTguMjcsIDE4MzYuODVdLAoJQzM6IFs5MTguNDMsIDEyOTguMjddLAoJQzQ6IFs2NDkuMTMsIDkxOC40M10sCglDNTogWzQ1OS4yMSwgNjQ5LjEzXSwKCUM2OiBbMzIzLjE1LCA0NTkuMjFdLAoJQzc6IFsyMjkuNjEsIDMyMy4xNV0sCglDODogWzE2MS41NywgMjI5LjYxXSwKCUM5OiBbMTEzLjM5LCAxNjEuNTddLAoJQzEwOiBbNzkuMzcsIDExMy4zOV0sCglSQTA6IFsyNDM3LjgwLCAzNDU4LjI3XSwKCVJBMTogWzE3MjkuMTMsIDI0MzcuODBdLAoJUkEyOiBbMTIxOC45MCwgMTcyOS4xM10sCglSQTM6IFs4NjQuNTcsIDEyMTguOTBdLAoJUkE0OiBbNjA5LjQ1LCA4NjQuNTddLAoJU1JBMDogWzI1NTEuMTgsIDM2MjguMzVdLAoJU1JBMTogWzE4MTQuMTcsIDI1NTEuMThdLAoJU1JBMjogWzEyNzUuNTksIDE4MTQuMTddLAoJU1JBMzogWzkwNy4wOSwgMTI3NS41OV0sCglTUkE0OiBbNjM3LjgwLCA5MDcuMDldLAoJRVhFQ1VUSVZFOiBbNTIxLjg2LCA3NTYuMDBdLAoJRk9MSU86IFs2MTIuMDAsIDkzNi4wMF0sCglMRUdBTDogWzYxMi4wMCwgMTAwOC4wMF0sCglMRVRURVI6IFs2MTIuMDAsIDc5Mi4wMF0sCglUQUJMT0lEOiBbNzkyLjAwLCAxMjI0LjAwXQp9OwoKCi8qKiovIH0pLAovKiAzMDQgKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykgewoKInVzZSBzdHJpY3QiOwovKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oQnVmZmVyKSB7Cgp2YXIgUERGSW1hZ2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyMSk7CgpmdW5jdGlvbiBJbWFnZU1lYXN1cmUocGRmS2l0RG9jLCBpbWFnZURpY3Rpb25hcnkpIHsKCXRoaXMucGRmS2l0RG9jID0gcGRmS2l0RG9jOwoJdGhpcy5pbWFnZURpY3Rpb25hcnkgPSBpbWFnZURpY3Rpb25hcnkgfHwge307Cn0KCkltYWdlTWVhc3VyZS5wcm90b3R5cGUubWVhc3VyZUltYWdlID0gZnVuY3Rpb24gKHNyYykgewoJdmFyIGltYWdlLCBsYWJlbDsKCXZhciB0aGF0ID0gdGhpczsKCglpZiAoIXRoaXMucGRmS2l0RG9jLl9pbWFnZVJlZ2lzdHJ5W3NyY10pIHsKCQlsYWJlbCA9ICdJJyArICgrK3RoaXMucGRmS2l0RG9jLl9pbWFnZUNvdW50KTsKCQl0cnkgewoJCQlpbWFnZSA9IFBERkltYWdlLm9wZW4ocmVhbEltYWdlU3JjKHNyYyksIGxhYmVsKTsKCQl9IGNhdGNoIChlcnJvcikgewoJCQlpbWFnZSA9IG51bGw7CgkJfQoJCWlmIChpbWFnZSA9PT0gbnVsbCB8fCBpbWFnZSA9PT0gdW5kZWZpbmVkKSB7CgkJCXRocm93ICdpbnZhbGlkIGltYWdlLCBpbWFnZXMgZGljdGlvbmFyeSBzaG91bGQgY29udGFpbiBkYXRhVVJMIGVudHJpZXMgKG9yIGxvY2FsIGZpbGUgcGF0aHMgaW4gbm9kZS5qcyknOwoJCX0KCQlpbWFnZS5lbWJlZCh0aGlzLnBkZktpdERvYyk7CgkJdGhpcy5wZGZLaXREb2MuX2ltYWdlUmVnaXN0cnlbc3JjXSA9IGltYWdlOwoJfSBlbHNlIHsKCQlpbWFnZSA9IHRoaXMucGRmS2l0RG9jLl9pbWFnZVJlZ2lzdHJ5W3NyY107Cgl9CgoJcmV0dXJuIHt3aWR0aDogaW1hZ2Uud2lkdGgsIGhlaWdodDogaW1hZ2UuaGVpZ2h0fTsKCglmdW5jdGlvbiByZWFsSW1hZ2VTcmMoc3JjKSB7CgkJdmFyIGltZyA9IHRoYXQuaW1hZ2VEaWN0aW9uYXJ5W3NyY107CgoJCWlmICghaW1nKSB7CgkJCXJldHVybiBzcmM7CgkJfQoKCQl2YXIgaW5kZXggPSBpbWcuaW5kZXhPZignYmFzZTY0LCcpOwoJCWlmIChpbmRleCA8IDApIHsKCQkJcmV0dXJuIHRoYXQuaW1hZ2VEaWN0aW9uYXJ5W3NyY107CgkJfQoKCQlyZXR1cm4gQnVmZmVyLmZyb20oaW1nLnN1YnN0cmluZyhpbmRleCArIDcpLCAnYmFzZTY0Jyk7Cgl9Cn07Cgptb2R1bGUuZXhwb3J0cyA9IEltYWdlTWVhc3VyZTsKCi8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpLkJ1ZmZlcikpCgovKioqLyB9KSwKLyogMzA1ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHsKCiJ1c2Ugc3RyaWN0IjsKCgp2YXIgaXNBcnJheSA9IF9fd2VicGFja19yZXF1aXJlX18oMCkuaXNBcnJheTsKCmZ1bmN0aW9uIGdyb3VwRGVjb3JhdGlvbnMobGluZSkgewoJdmFyIGdyb3VwcyA9IFtdLCBjdXJyZW50R3JvdXAgPSBudWxsOwoJZm9yICh2YXIgaSA9IDAsIGwgPSBsaW5lLmlubGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJdmFyIGlubGluZSA9IGxpbmUuaW5saW5lc1tpXTsKCQl2YXIgZGVjb3JhdGlvbiA9IGlubGluZS5kZWNvcmF0aW9uOwoJCWlmICghZGVjb3JhdGlvbikgewoJCQljdXJyZW50R3JvdXAgPSBudWxsOwoJCQljb250aW51ZTsKCQl9CgkJaWYgKCFpc0FycmF5KGRlY29yYXRpb24pKSB7CgkJCWRlY29yYXRpb24gPSBbZGVjb3JhdGlvbl07CgkJfQoJCXZhciBjb2xvciA9IGlubGluZS5kZWNvcmF0aW9uQ29sb3IgfHwgaW5saW5lLmNvbG9yIHx8ICdibGFjayc7CgkJdmFyIHN0eWxlID0gaW5saW5lLmRlY29yYXRpb25TdHlsZSB8fCAnc29saWQnOwoJCWZvciAodmFyIGlpID0gMCwgbGwgPSBkZWNvcmF0aW9uLmxlbmd0aDsgaWkgPCBsbDsgaWkrKykgewoJCQl2YXIgZGVjb3JhdGlvbkl0ZW0gPSBkZWNvcmF0aW9uW2lpXTsKCQkJaWYgKCFjdXJyZW50R3JvdXAgfHwgZGVjb3JhdGlvbkl0ZW0gIT09IGN1cnJlbnRHcm91cC5kZWNvcmF0aW9uIHx8CgkJCQlzdHlsZSAhPT0gY3VycmVudEdyb3VwLmRlY29yYXRpb25TdHlsZSB8fCBjb2xvciAhPT0gY3VycmVudEdyb3VwLmRlY29yYXRpb25Db2xvciB8fAoJCQkJZGVjb3JhdGlvbkl0ZW0gPT09ICdsaW5lVGhyb3VnaCcpIHsKCgkJCQljdXJyZW50R3JvdXAgPSB7CgkJCQkJbGluZTogbGluZSwKCQkJCQlkZWNvcmF0aW9uOiBkZWNvcmF0aW9uSXRlbSwKCQkJCQlkZWNvcmF0aW9uQ29sb3I6IGNvbG9yLAoJCQkJCWRlY29yYXRpb25TdHlsZTogc3R5bGUsCgkJCQkJaW5saW5lczogW2lubGluZV0KCQkJCX07CgkJCQlncm91cHMucHVzaChjdXJyZW50R3JvdXApOwoJCQl9IGVsc2UgewoJCQkJY3VycmVudEdyb3VwLmlubGluZXMucHVzaChpbmxpbmUpOwoJCQl9CgkJfQoJfQoKCXJldHVybiBncm91cHM7Cn0KCmZ1bmN0aW9uIGRyYXdEZWNvcmF0aW9uKGdyb3VwLCB4LCB5LCBwZGZLaXREb2MpIHsKCWZ1bmN0aW9uIG1heElubGluZSgpIHsKCQl2YXIgbWF4ID0gMDsKCQlmb3IgKHZhciBpID0gMCwgbCA9IGdyb3VwLmlubGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJCXZhciBpbmxpbmUgPSBncm91cC5pbmxpbmVzW2ldOwoJCQltYXggPSBpbmxpbmUuZm9udFNpemUgPiBtYXggPyBpIDogbWF4OwoJCX0KCQlyZXR1cm4gZ3JvdXAuaW5saW5lc1ttYXhdOwoJfQoJZnVuY3Rpb24gd2lkdGgoKSB7CgkJdmFyIHN1bSA9IDA7CgkJZm9yICh2YXIgaSA9IDAsIGwgPSBncm91cC5pbmxpbmVzLmxlbmd0aDsgaSA8IGw7IGkrKykgewoJCQlzdW0gKz0gZ3JvdXAuaW5saW5lc1tpXS53aWR0aDsKCQl9CgkJcmV0dXJuIHN1bTsKCX0KCXZhciBmaXJzdElubGluZSA9IGdyb3VwLmlubGluZXNbMF0sCgkJYmlnZ2VySW5saW5lID0gbWF4SW5saW5lKCksCgkJdG90YWxXaWR0aCA9IHdpZHRoKCksCgkJbGluZUFzY2VudCA9IGdyb3VwLmxpbmUuZ2V0QXNjZW5kZXJIZWlnaHQoKSwKCQlhc2NlbnQgPSBiaWdnZXJJbmxpbmUuZm9udC5hc2NlbmRlciAvIDEwMDAgKiBiaWdnZXJJbmxpbmUuZm9udFNpemUsCgkJaGVpZ2h0ID0gYmlnZ2VySW5saW5lLmhlaWdodCwKCQlkZXNjZW50ID0gaGVpZ2h0IC0gYXNjZW50OwoKCXZhciBsdyA9IDAuNSArIE1hdGguZmxvb3IoTWF0aC5tYXgoYmlnZ2VySW5saW5lLmZvbnRTaXplIC0gOCwgMCkgLyAyKSAqIDAuMTI7CgoJc3dpdGNoIChncm91cC5kZWNvcmF0aW9uKSB7CgkJY2FzZSAndW5kZXJsaW5lJzoKCQkJeSArPSBsaW5lQXNjZW50ICsgZGVzY2VudCAqIDAuNDU7CgkJCWJyZWFrOwoJCWNhc2UgJ292ZXJsaW5lJzoKCQkJeSArPSBsaW5lQXNjZW50IC0gKGFzY2VudCAqIDAuODUpOwoJCQlicmVhazsKCQljYXNlICdsaW5lVGhyb3VnaCc6CgkJCXkgKz0gbGluZUFzY2VudCAtIChhc2NlbnQgKiAwLjI1KTsKCQkJYnJlYWs7CgkJZGVmYXVsdDoKCQkJdGhyb3cgJ1Vua293biBkZWNvcmF0aW9uIDogJyArIGdyb3VwLmRlY29yYXRpb247Cgl9CglwZGZLaXREb2Muc2F2ZSgpOwoKCWlmIChncm91cC5kZWNvcmF0aW9uU3R5bGUgPT09ICdkb3VibGUnKSB7CgkJdmFyIGdhcCA9IE1hdGgubWF4KDAuNSwgbHcgKiAyKTsKCQlwZGZLaXREb2MuZmlsbENvbG9yKGdyb3VwLmRlY29yYXRpb25Db2xvcikKCQkJLnJlY3QoeCArIGZpcnN0SW5saW5lLngsIHkgLSBsdyAvIDIsIHRvdGFsV2lkdGgsIGx3IC8gMikuZmlsbCgpCgkJCS5yZWN0KHggKyBmaXJzdElubGluZS54LCB5ICsgZ2FwIC0gbHcgLyAyLCB0b3RhbFdpZHRoLCBsdyAvIDIpLmZpbGwoKTsKCX0gZWxzZSBpZiAoZ3JvdXAuZGVjb3JhdGlvblN0eWxlID09PSAnZGFzaGVkJykgewoJCXZhciBuYkRhc2hlcyA9IE1hdGguY2VpbCh0b3RhbFdpZHRoIC8gKDMuOTYgKyAyLjg0KSk7CgkJdmFyIHJkeCA9IHggKyBmaXJzdElubGluZS54OwoJCXBkZktpdERvYy5yZWN0KHJkeCwgeSwgdG90YWxXaWR0aCwgbHcpLmNsaXAoKTsKCQlwZGZLaXREb2MuZmlsbENvbG9yKGdyb3VwLmRlY29yYXRpb25Db2xvcik7CgkJZm9yICh2YXIgaSA9IDA7IGkgPCBuYkRhc2hlczsgaSsrKSB7CgkJCXBkZktpdERvYy5yZWN0KHJkeCwgeSAtIGx3IC8gMiwgMy45NiwgbHcpLmZpbGwoKTsKCQkJcmR4ICs9IDMuOTYgKyAyLjg0OwoJCX0KCX0gZWxzZSBpZiAoZ3JvdXAuZGVjb3JhdGlvblN0eWxlID09PSAnZG90dGVkJykgewoJCXZhciBuYkRvdHMgPSBNYXRoLmNlaWwodG90YWxXaWR0aCAvIChsdyAqIDMpKTsKCQl2YXIgcnggPSB4ICsgZmlyc3RJbmxpbmUueDsKCQlwZGZLaXREb2MucmVjdChyeCwgeSwgdG90YWxXaWR0aCwgbHcpLmNsaXAoKTsKCQlwZGZLaXREb2MuZmlsbENvbG9yKGdyb3VwLmRlY29yYXRpb25Db2xvcik7CgkJZm9yICh2YXIgaWkgPSAwOyBpaSA8IG5iRG90czsgaWkrKykgewoJCQlwZGZLaXREb2MucmVjdChyeCwgeSAtIGx3IC8gMiwgbHcsIGx3KS5maWxsKCk7CgkJCXJ4ICs9IChsdyAqIDMpOwoJCX0KCX0gZWxzZSBpZiAoZ3JvdXAuZGVjb3JhdGlvblN0eWxlID09PSAnd2F2eScpIHsKCQl2YXIgc2ggPSAwLjcsIHN2ID0gMTsKCQl2YXIgbmJXYXZlcyA9IE1hdGguY2VpbCh0b3RhbFdpZHRoIC8gKHNoICogMikpICsgMTsKCQl2YXIgcnd4ID0geCArIGZpcnN0SW5saW5lLnggLSAxOwoJCXBkZktpdERvYy5yZWN0KHggKyBmaXJzdElubGluZS54LCB5IC0gc3YsIHRvdGFsV2lkdGgsIHkgKyBzdikuY2xpcCgpOwoJCXBkZktpdERvYy5saW5lV2lkdGgoMC4yNCk7CgkJcGRmS2l0RG9jLm1vdmVUbyhyd3gsIHkpOwoJCWZvciAodmFyIGlpaSA9IDA7IGlpaSA8IG5iV2F2ZXM7IGlpaSsrKSB7CgkJCXBkZktpdERvYy5iZXppZXJDdXJ2ZVRvKHJ3eCArIHNoLCB5IC0gc3YsIHJ3eCArIHNoICogMiwgeSAtIHN2LCByd3ggKyBzaCAqIDMsIHkpCgkJCQkuYmV6aWVyQ3VydmVUbyhyd3ggKyBzaCAqIDQsIHkgKyBzdiwgcnd4ICsgc2ggKiA1LCB5ICsgc3YsIHJ3eCArIHNoICogNiwgeSk7CgkJCXJ3eCArPSBzaCAqIDY7CgkJfQoJCXBkZktpdERvYy5zdHJva2UoZ3JvdXAuZGVjb3JhdGlvbkNvbG9yKTsKCX0gZWxzZSB7CgkJcGRmS2l0RG9jLmZpbGxDb2xvcihncm91cC5kZWNvcmF0aW9uQ29sb3IpCgkJCS5yZWN0KHggKyBmaXJzdElubGluZS54LCB5IC0gbHcgLyAyLCB0b3RhbFdpZHRoLCBsdykKCQkJLmZpbGwoKTsKCX0KCXBkZktpdERvYy5yZXN0b3JlKCk7Cn0KCmZ1bmN0aW9uIGRyYXdEZWNvcmF0aW9ucyhsaW5lLCB4LCB5LCBwZGZLaXREb2MpIHsKCXZhciBncm91cHMgPSBncm91cERlY29yYXRpb25zKGxpbmUpOwoJZm9yICh2YXIgaSA9IDAsIGwgPSBncm91cHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJZHJhd0RlY29yYXRpb24oZ3JvdXBzW2ldLCB4LCB5LCBwZGZLaXREb2MpOwoJfQp9CgpmdW5jdGlvbiBkcmF3QmFja2dyb3VuZChsaW5lLCB4LCB5LCBwZGZLaXREb2MpIHsKCXZhciBoZWlnaHQgPSBsaW5lLmdldEhlaWdodCgpOwoJZm9yICh2YXIgaSA9IDAsIGwgPSBsaW5lLmlubGluZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CgkJdmFyIGlubGluZSA9IGxpbmUuaW5saW5lc1tpXTsKCQlpZiAoIWlubGluZS5iYWNrZ3JvdW5kKSB7CgkJCWNvbnRpbnVlOwoJCX0KCQl2YXIganVzdGlmeVNoaWZ0ID0gKGlubGluZS5qdXN0aWZ5U2hpZnQgfHwgMCk7CgkJcGRmS2l0RG9jLmZpbGxDb2xvcihpbmxpbmUuYmFja2dyb3VuZCkKCQkJLnJlY3QoeCArIGlubGluZS54IC0ganVzdGlmeVNoaWZ0LCB5LCBpbmxpbmUud2lkdGggKyBqdXN0aWZ5U2hpZnQsIGhlaWdodCkKCQkJLmZpbGwoKTsKCX0KfQoKbW9kdWxlLmV4cG9ydHMgPSB7CglkcmF3QmFja2dyb3VuZDogZHJhd0JhY2tncm91bmQsCglkcmF3RGVjb3JhdGlvbnM6IGRyYXdEZWNvcmF0aW9ucwp9OwoKLyoqKi8gfSksCi8qIDMwNiAqLwovKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7Cgp2YXIgX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX187LyogRmlsZVNhdmVyLmpzCiAqIEEgc2F2ZUFzKCkgRmlsZVNhdmVyIGltcGxlbWVudGF0aW9uLgogKiAxLjMuMgogKiAyMDE2LTA2LTE2IDE4OjI1OjE5CiAqCiAqIEJ5IEVsaSBHcmV5LCBodHRwOi8vZWxpZ3JleS5jb20KICogTGljZW5zZTogTUlUCiAqICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9lbGlncmV5L0ZpbGVTYXZlci5qcy9ibG9iL21hc3Rlci9MSUNFTlNFLm1kCiAqLwoKLypnbG9iYWwgc2VsZiAqLwovKmpzbGludCBiaXR3aXNlOiB0cnVlLCBpbmRlbnQ6IDQsIGxheGJyZWFrOiB0cnVlLCBsYXhjb21tYTogdHJ1ZSwgc21hcnR0YWJzOiB0cnVlLCBwbHVzcGx1czogdHJ1ZSAqLwoKLyohIEBzb3VyY2UgaHR0cDovL3B1cmwuZWxpZ3JleS5jb20vZ2l0aHViL0ZpbGVTYXZlci5qcy9ibG9iL21hc3Rlci9GaWxlU2F2ZXIuanMgKi8KCnZhciBzYXZlQXMgPSBzYXZlQXMgfHwgKGZ1bmN0aW9uKHZpZXcpIHsKCSJ1c2Ugc3RyaWN0IjsKCS8vIElFIDwxMCBpcyBleHBsaWNpdGx5IHVuc3VwcG9ydGVkCglpZiAodHlwZW9mIHZpZXcgPT09ICJ1bmRlZmluZWQiIHx8IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICJ1bmRlZmluZWQiICYmIC9NU0lFIFsxLTldXC4vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkpIHsKCQlyZXR1cm47Cgl9Cgl2YXIKCQkgIGRvYyA9IHZpZXcuZG9jdW1lbnQKCQkgIC8vIG9ubHkgZ2V0IFVSTCB3aGVuIG5lY2Vzc2FyeSBpbiBjYXNlIEJsb2IuanMgaGFzbid0IG92ZXJyaWRkZW4gaXQgeWV0CgkJLCBnZXRfVVJMID0gZnVuY3Rpb24oKSB7CgkJCXJldHVybiB2aWV3LlVSTCB8fCB2aWV3LndlYmtpdFVSTCB8fCB2aWV3OwoJCX0KCQksIHNhdmVfbGluayA9IGRvYyA/IGRvYy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCAiYSIpIDogW10KCQksIGNhbl91c2Vfc2F2ZV9saW5rID0gImRvd25sb2FkIiBpbiBzYXZlX2xpbmsKCQksIGNsaWNrID0gZnVuY3Rpb24obm9kZSkgewoJCQl2YXIgZXZlbnQgPSBuZXcgTW91c2VFdmVudCgiY2xpY2siKTsKCQkJbm9kZS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKCQl9CgkJLCBpc19zYWZhcmkgPSAvY29uc3RydWN0b3IvaS50ZXN0KHZpZXcuSFRNTEVsZW1lbnQpIHx8IHZpZXcuc2FmYXJpCgkJLCBpc19jaHJvbWVfaW9zID0vQ3JpT1NcL1tcZF0rLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpCgkJLCB0aHJvd19vdXRzaWRlID0gZnVuY3Rpb24oZXgpIHsKCQkJKHZpZXcuc2V0SW1tZWRpYXRlIHx8IHZpZXcuc2V0VGltZW91dCkoZnVuY3Rpb24oKSB7CgkJCQl0aHJvdyBleDsKCQkJfSwgMCk7CgkJfQoJCSwgZm9yY2Vfc2F2ZWFibGVfdHlwZSA9ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iCgkJLy8gdGhlIEJsb2IgQVBJIGlzIGZ1bmRhbWVudGFsbHkgYnJva2VuIGFzIHRoZXJlIGlzIG5vICJkb3dubG9hZGZpbmlzaGVkIiBldmVudCB0byBzdWJzY3JpYmUgdG8KCQksIGFyYml0cmFyeV9yZXZva2VfdGltZW91dCA9IDEwMDAgKiA0MCAvLyBpbiBtcwoJCSwgcmV2b2tlID0gZnVuY3Rpb24oZmlsZSkgewoJCQl2YXIgcmV2b2tlciA9IGZ1bmN0aW9uKCkgewoJCQkJaWYgKHR5cGVvZiBmaWxlID09PSAic3RyaW5nIikgeyAvLyBmaWxlIGlzIGFuIG9iamVjdCBVUkwKCQkJCQlnZXRfVVJMKCkucmV2b2tlT2JqZWN0VVJMKGZpbGUpOwoJCQkJfSBlbHNlIHsgLy8gZmlsZSBpcyBhIEZpbGUKCQkJCQlmaWxlLnJlbW92ZSgpOwoJCQkJfQoJCQl9OwoJCQlzZXRUaW1lb3V0KHJldm9rZXIsIGFyYml0cmFyeV9yZXZva2VfdGltZW91dCk7CgkJfQoJCSwgZGlzcGF0Y2ggPSBmdW5jdGlvbihmaWxlc2F2ZXIsIGV2ZW50X3R5cGVzLCBldmVudCkgewoJCQlldmVudF90eXBlcyA9IFtdLmNvbmNhdChldmVudF90eXBlcyk7CgkJCXZhciBpID0gZXZlbnRfdHlwZXMubGVuZ3RoOwoJCQl3aGlsZSAoaS0tKSB7CgkJCQl2YXIgbGlzdGVuZXIgPSBmaWxlc2F2ZXJbIm9uIiArIGV2ZW50X3R5cGVzW2ldXTsKCQkJCWlmICh0eXBlb2YgbGlzdGVuZXIgPT09ICJmdW5jdGlvbiIpIHsKCQkJCQl0cnkgewoJCQkJCQlsaXN0ZW5lci5jYWxsKGZpbGVzYXZlciwgZXZlbnQgfHwgZmlsZXNhdmVyKTsKCQkJCQl9IGNhdGNoIChleCkgewoJCQkJCQl0aHJvd19vdXRzaWRlKGV4KTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgkJLCBhdXRvX2JvbSA9IGZ1bmN0aW9uKGJsb2IpIHsKCQkJLy8gcHJlcGVuZCBCT00gZm9yIFVURi04IFhNTCBhbmQgdGV4dC8qIHR5cGVzIChpbmNsdWRpbmcgSFRNTCkKCQkJLy8gbm90ZTogeW91ciBicm93c2VyIHdpbGwgYXV0b21hdGljYWxseSBjb252ZXJ0IFVURi0xNiBVK0ZFRkYgdG8gRUYgQkIgQkYKCQkJaWYgKC9eXHMqKD86dGV4dFwvXFMqfGFwcGxpY2F0aW9uXC94bWx8XFMqXC9cUypcK3htbClccyo7LipjaGFyc2V0XHMqPVxzKnV0Zi04L2kudGVzdChibG9iLnR5cGUpKSB7CgkJCQlyZXR1cm4gbmV3IEJsb2IoW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhGRUZGKSwgYmxvYl0sIHt0eXBlOiBibG9iLnR5cGV9KTsKCQkJfQoJCQlyZXR1cm4gYmxvYjsKCQl9CgkJLCBGaWxlU2F2ZXIgPSBmdW5jdGlvbihibG9iLCBuYW1lLCBub19hdXRvX2JvbSkgewoJCQlpZiAoIW5vX2F1dG9fYm9tKSB7CgkJCQlibG9iID0gYXV0b19ib20oYmxvYik7CgkJCX0KCQkJLy8gRmlyc3QgdHJ5IGEuZG93bmxvYWQsIHRoZW4gd2ViIGZpbGVzeXN0ZW0sIHRoZW4gb2JqZWN0IFVSTHMKCQkJdmFyCgkJCQkgIGZpbGVzYXZlciA9IHRoaXMKCQkJCSwgdHlwZSA9IGJsb2IudHlwZQoJCQkJLCBmb3JjZSA9IHR5cGUgPT09IGZvcmNlX3NhdmVhYmxlX3R5cGUKCQkJCSwgb2JqZWN0X3VybAoJCQkJLCBkaXNwYXRjaF9hbGwgPSBmdW5jdGlvbigpIHsKCQkJCQlkaXNwYXRjaChmaWxlc2F2ZXIsICJ3cml0ZXN0YXJ0IHByb2dyZXNzIHdyaXRlIHdyaXRlZW5kIi5zcGxpdCgiICIpKTsKCQkJCX0KCQkJCS8vIG9uIGFueSBmaWxlc3lzIGVycm9ycyByZXZlcnQgdG8gc2F2aW5nIHdpdGggb2JqZWN0IFVSTHMKCQkJCSwgZnNfZXJyb3IgPSBmdW5jdGlvbigpIHsKCQkJCQlpZiAoKGlzX2Nocm9tZV9pb3MgfHwgKGZvcmNlICYmIGlzX3NhZmFyaSkpICYmIHZpZXcuRmlsZVJlYWRlcikgewoJCQkJCQkvLyBTYWZhcmkgZG9lc24ndCBhbGxvdyBkb3dubG9hZGluZyBvZiBibG9iIHVybHMKCQkJCQkJdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CgkJCQkJCXJlYWRlci5vbmxvYWRlbmQgPSBmdW5jdGlvbigpIHsKCQkJCQkJCXZhciB1cmwgPSBpc19jaHJvbWVfaW9zID8gcmVhZGVyLnJlc3VsdCA6IHJlYWRlci5yZXN1bHQucmVwbGFjZSgvXmRhdGE6W147XSo7LywgJ2RhdGE6YXR0YWNobWVudC9maWxlOycpOwoJCQkJCQkJdmFyIHBvcHVwID0gdmlldy5vcGVuKHVybCwgJ19ibGFuaycpOwoJCQkJCQkJaWYoIXBvcHVwKSB2aWV3LmxvY2F0aW9uLmhyZWYgPSB1cmw7CgkJCQkJCQl1cmw9dW5kZWZpbmVkOyAvLyByZWxlYXNlIHJlZmVyZW5jZSBiZWZvcmUgZGlzcGF0Y2hpbmcKCQkJCQkJCWZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLkRPTkU7CgkJCQkJCQlkaXNwYXRjaF9hbGwoKTsKCQkJCQkJfTsKCQkJCQkJcmVhZGVyLnJlYWRBc0RhdGFVUkwoYmxvYik7CgkJCQkJCWZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLklOSVQ7CgkJCQkJCXJldHVybjsKCQkJCQl9CgkJCQkJLy8gZG9uJ3QgY3JlYXRlIG1vcmUgb2JqZWN0IFVSTHMgdGhhbiBuZWVkZWQKCQkJCQlpZiAoIW9iamVjdF91cmwpIHsKCQkJCQkJb2JqZWN0X3VybCA9IGdldF9VUkwoKS5jcmVhdGVPYmplY3RVUkwoYmxvYik7CgkJCQkJfQoJCQkJCWlmIChmb3JjZSkgewoJCQkJCQl2aWV3LmxvY2F0aW9uLmhyZWYgPSBvYmplY3RfdXJsOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXZhciBvcGVuZWQgPSB2aWV3Lm9wZW4ob2JqZWN0X3VybCwgIl9ibGFuayIpOwoJCQkJCQlpZiAoIW9wZW5lZCkgewoJCQkJCQkJLy8gQXBwbGUgZG9lcyBub3QgYWxsb3cgd2luZG93Lm9wZW4sIHNlZSBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9zYWZhcmkvZG9jdW1lbnRhdGlvbi9Ub29scy9Db25jZXB0dWFsL1NhZmFyaUV4dGVuc2lvbkd1aWRlL1dvcmtpbmd3aXRoV2luZG93c2FuZFRhYnMvV29ya2luZ3dpdGhXaW5kb3dzYW5kVGFicy5odG1sCgkJCQkJCQl2aWV3LmxvY2F0aW9uLmhyZWYgPSBvYmplY3RfdXJsOwoJCQkJCQl9CgkJCQkJfQoJCQkJCWZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLkRPTkU7CgkJCQkJZGlzcGF0Y2hfYWxsKCk7CgkJCQkJcmV2b2tlKG9iamVjdF91cmwpOwoJCQkJfQoJCQk7CgkJCWZpbGVzYXZlci5yZWFkeVN0YXRlID0gZmlsZXNhdmVyLklOSVQ7CgoJCQlpZiAoY2FuX3VzZV9zYXZlX2xpbmspIHsKCQkJCW9iamVjdF91cmwgPSBnZXRfVVJMKCkuY3JlYXRlT2JqZWN0VVJMKGJsb2IpOwoJCQkJc2V0VGltZW91dChmdW5jdGlvbigpIHsKCQkJCQlzYXZlX2xpbmsuaHJlZiA9IG9iamVjdF91cmw7CgkJCQkJc2F2ZV9saW5rLmRvd25sb2FkID0gbmFtZTsKCQkJCQljbGljayhzYXZlX2xpbmspOwoJCQkJCWRpc3BhdGNoX2FsbCgpOwoJCQkJCXJldm9rZShvYmplY3RfdXJsKTsKCQkJCQlmaWxlc2F2ZXIucmVhZHlTdGF0ZSA9IGZpbGVzYXZlci5ET05FOwoJCQkJfSk7CgkJCQlyZXR1cm47CgkJCX0KCgkJCWZzX2Vycm9yKCk7CgkJfQoJCSwgRlNfcHJvdG8gPSBGaWxlU2F2ZXIucHJvdG90eXBlCgkJLCBzYXZlQXMgPSBmdW5jdGlvbihibG9iLCBuYW1lLCBub19hdXRvX2JvbSkgewoJCQlyZXR1cm4gbmV3IEZpbGVTYXZlcihibG9iLCBuYW1lIHx8IGJsb2IubmFtZSB8fCAiZG93bmxvYWQiLCBub19hdXRvX2JvbSk7CgkJfQoJOwoJLy8gSUUgMTArIChuYXRpdmUgc2F2ZUFzKQoJaWYgKHR5cGVvZiBuYXZpZ2F0b3IgIT09ICJ1bmRlZmluZWQiICYmIG5hdmlnYXRvci5tc1NhdmVPck9wZW5CbG9iKSB7CgkJcmV0dXJuIGZ1bmN0aW9uKGJsb2IsIG5hbWUsIG5vX2F1dG9fYm9tKSB7CgkJCW5hbWUgPSBuYW1lIHx8IGJsb2IubmFtZSB8fCAiZG93bmxvYWQiOwoKCQkJaWYgKCFub19hdXRvX2JvbSkgewoJCQkJYmxvYiA9IGF1dG9fYm9tKGJsb2IpOwoJCQl9CgkJCXJldHVybiBuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihibG9iLCBuYW1lKTsKCQl9OwoJfQoKCUZTX3Byb3RvLmFib3J0ID0gZnVuY3Rpb24oKXt9OwoJRlNfcHJvdG8ucmVhZHlTdGF0ZSA9IEZTX3Byb3RvLklOSVQgPSAwOwoJRlNfcHJvdG8uV1JJVElORyA9IDE7CglGU19wcm90by5ET05FID0gMjsKCglGU19wcm90by5lcnJvciA9CglGU19wcm90by5vbndyaXRlc3RhcnQgPQoJRlNfcHJvdG8ub25wcm9ncmVzcyA9CglGU19wcm90by5vbndyaXRlID0KCUZTX3Byb3RvLm9uYWJvcnQgPQoJRlNfcHJvdG8ub25lcnJvciA9CglGU19wcm90by5vbndyaXRlZW5kID0KCQludWxsOwoKCXJldHVybiBzYXZlQXM7Cn0oCgkgICB0eXBlb2Ygc2VsZiAhPT0gInVuZGVmaW5lZCIgJiYgc2VsZgoJfHwgdHlwZW9mIHdpbmRvdyAhPT0gInVuZGVmaW5lZCIgJiYgd2luZG93Cgl8fCB0aGlzLmNvbnRlbnQKKSk7Ci8vIGBzZWxmYCBpcyB1bmRlZmluZWQgaW4gRmlyZWZveCBmb3IgQW5kcm9pZCBjb250ZW50IHNjcmlwdCBjb250ZXh0Ci8vIHdoaWxlIGB0aGlzYCBpcyBuc0lDb250ZW50RnJhbWVNZXNzYWdlTWFuYWdlcgovLyB3aXRoIGFuIGF0dHJpYnV0ZSBgY29udGVudGAgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgd2luZG93CgppZiAodHlwZW9mIG1vZHVsZSAhPT0gInVuZGVmaW5lZCIgJiYgbW9kdWxlLmV4cG9ydHMpIHsKICBtb2R1bGUuZXhwb3J0cy5zYXZlQXMgPSBzYXZlQXM7Cn0gZWxzZSBpZiAoKCJmdW5jdGlvbiIgIT09ICJ1bmRlZmluZWQiICYmIF9fd2VicGFja19yZXF1aXJlX18oMzA3KSAhPT0gbnVsbCkgJiYgKF9fd2VicGFja19yZXF1aXJlX18oMzA4KSAhPT0gbnVsbCkpIHsKICAhKF9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9fID0gKGZ1bmN0aW9uKCkgewogICAgcmV0dXJuIHNhdmVBczsKICB9KS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18sIGV4cG9ydHMsIG1vZHVsZSksCgkJCQlfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXyAhPT0gdW5kZWZpbmVkICYmIChtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9fKSk7Cn0KCgovKioqLyB9KSwKLyogMzA3ICovCi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHsKCm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7Cgl0aHJvdyBuZXcgRXJyb3IoImRlZmluZSBjYW5ub3QgYmUgdXNlZCBpbmRpcmVjdCIpOwp9OwoKCi8qKiovIH0pLAovKiAzMDggKi8KLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykgewoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKF9fd2VicGFja19hbWRfb3B0aW9uc19fKSB7LyogZ2xvYmFscyBfX3dlYnBhY2tfYW1kX29wdGlvbnNfXyAqLwptb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19hbWRfb3B0aW9uc19fOwoKLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIHt9KSkKCi8qKiovIH0pCi8qKioqKiovIF0pOwp9KTs="></script>
|
|
<script src="data:application/javascript;base64,dGhpcy5wZGZNYWtlID0gdGhpcy5wZGZNYWtlIHx8IHt9OyB0aGlzLnBkZk1ha2UudmZzID0gewogICJSb2JvdG8tSXRhbGljLnR0ZiI6ICJBQUVBQUFBU0FRQUFCQUFnUjBSRlJ0UlgxRmtBQWdwOEFBQUNSRWRRVDFOS2N1Q3pBQUlNd0FBQVVpUkhVMVZDdzRhWkVRQUNYdVFBQUJmb1QxTXZNcUNuc08wQUFBR29BQUFBWUdOdFlYQkFiYjlEQUFBYWZBQUFCb0JqZG5RZ0pFRUc1UUFBSTVRQUFBQk1abkJuYldmMFhLc0FBQ0Q4QUFBQnZHZGhjM0FBQ0FBVEFBSUtjQUFBQUF4bmJIbG1vTHNrdEFBQUxhZ0FBZG4yYUdSdGVDRWUvQVVBQUJXUUFBQUU3R2hsWVdUNGdhc0FBQUFCTEFBQUFEWm9hR1ZoREtZU2VnQUFBV1FBQUFBa2FHMTBlSEpPMXlnQUFBSUlBQUFUaUd4dlkyRVhNNXpCQUFBajRBQUFDY1p0WVhod0J4SUNXd0FBQVlnQUFBQWdibUZ0WlRsTFpGQUFBZ2VnQUFBQ3JuQnZjM1QvWVFCa0FBSUtVQUFBQUNCd2NtVndkS0NQN0FBQUlyZ0FBQURiQUFFQUFBQUNBQUFjYWRJaVh3ODg5UUFiQ0FBQUFBQUF4UEFSTGdBQUFBRFEyMDZNK2pqOTFRbE1DSE1BQWdBSkFBSUFBQUFBQUFBQUFRQUFCMnorREFBQUNSYjZPUDUyQ1V3SUFBR3pBQUFBQUFBQUFBQUFBQUFBQk9JQUFRQUFCT0lBa0FBV0FGWUFCUUFCQUFBQUFBQU9BQUFDQUFGekFBWUFBUUFEQkFzQmtBQUZBQUFGbWdVekFBQUJId1dhQlRNQUFBUFJBR1lDQUFBQUFnQUFBQUFBQUFBQUFPQUFDdjlRQUNGL0FBQUFJUUFBQUFCSFQwOUhBQUVBQVAvOUJnRCtBQUJtQjVvQ0FDQUFBWjhBQUFBQUJEb0ZzQUFnQUNBQUFnT1dBR1FBQ2dBQUFBb0FBQUgyQUFBQjlnQUFBZ2tBUXdLRkFNZ0UwUUJTQkdZQVNnVzVBTHNFM1FBNkFXUUFxZ0t4QUcwQ3ZmK1BBMklBYXdSd0FFd0JrUCtQQWk0QUdRSVZBRFVEUGYrUEJHWUFhQVJtQVBrRVpnQVhCR1lBTkFSbUFBVUVaZ0J5QkdZQWNBUm1BSjBFWmdCQkJHWUFsQUhyQUNzQnJ2K2JBL3dBUVFSTUFIQUVHQUE2QTdRQXBRY0NBRVFGR3YrdkJOOEFPd1VYQUhRRklRQTdCSE1BT3dSVUFEc0ZVd0I1QlpJQU93SW1BRWtFVWdBS0JPY0FPd1EzQURzRzBBQTdCWklBT3dWZ0FIY0U3d0E3QldBQWJ3VFJBRG9FcFFBbkJLc0FxQVVTQUdjRStnQ2tCdXdBd3dUbi85UUVzd0NvQksvLzZ3SVovLzhET1FDL0Fobi9lZ05JQUU4RGl2K0JBbkFBendSREFETUVaUUFmQkJvQVJnUnFBRXNFSmdCRkFyd0FkQVJsQUFRRVVBQWZBZXdBTHdIay94UUQrUUFnQWV3QUx3YlhBQjRFVWdBZkJIY0FSUVJsLzljRWN3QkpBcW9BSHdRS0FDNENrd0JEQkZFQVd3UE1BRzRGM3dDQUErUC94QU8yLzZVRDQvL3RBcW9BT0FIdUFDRUNxditNQlZFQWFRSHUvL0VFU0FCU0JJei84d1dTQUJJRXZRQlRBZWIvOXdUTS85MERTQURiQmlNQVlnT0NBTU1EcmdCWkJGWUFnUVlrQUdFRG1BRGpBdkFBNkFRdkFDVUM0Z0JjQXVJQWJnSjVBTlVFYi8vbEE5VUFld0lRQUtVQjl2L0lBdUlBM3dPUkFNQURyUUFQQmJrQXVRWVBBTFFHRXdDZUE3Yi8wd2RMLzRRRUxRQW9CV0FBSUFTZ0FEZ0Vwd0FlQnBjQUV3U1dBRndFZUFCRUJHOEFPUVNELytBRmVRQTFBZlVBTGdSYkFDMEVPQUFpQWlJQUl3VnFBRFVFYndBa0IzQUFWQWNXQUVjQjl3QXpCV2NBVVFLdS8wa0ZYZ0JuQkhrQVFnVnZBR2NFMXdCYUFmNy9DUVFoQUQ0RHNRRVhBM3dCSmdPWkFPTURXZ0VIQWV3QkRnS2lBUUVDSS8rdkE3TUEzUUx2QU1JQ1V2L3BBQXI5YWdBSy9lc0FDdjBMQUFyOTlRQUsvTnNCNnZ5N0FnY0JJUVAyQVBNQ0VRQ2xCRnNBUXdXRC83RUZVUUJwQlNEL3hBUjRBQXdGa3dCRUJIai8yZ1daQUZRRmFBQ0dCVE1BQ2dSc0FFZ0VvLy93QSswQWhBUnZBRU1FT1FBcEJBOEFnZ1J2QUNRRWRRQnpBbzBBaFFSVy83Y0QyQUEvQktrQVlBUnYvOXdFTmdCT0JHOEFTZ1FXQUljRVJRQm5CWUlBUVFWNUFFOEdiZ0JtQkljQVVRUXJBR2NHSWdCbUJkc0FvUVZGQUhnSVdmL01DR3dBUXdaYUFMUUZrZ0JDQk80QU5BWGcvNHNIRmYrc0JLVUFKUVdTQUVNRmlQL0tCT29Ba3dZSEFGc0Z0Z0JCQlZvQXpnZFhBRUlIamdCQ0JlMEFpUWJBQUVVRTZBQTJCVVVBZEFiNkFFa0UrLy9vQkZRQVJnUjVBREFEU3dBdEJMbi9qUVg3LzZVRCt3QWhCSVVBTHdRN0FDOEVodi9JQmNzQU1BU0VBQzhFaFFBdkE4UUFZQVdxQUV3RW93QXZCRUlBZXdaUUFDOEdkUUFrQk5zQVZnWVFBREFFUVFBd0JEWUFOQVpmQURBRVRQKy9CRkFBSHdRMkFFNEduLy9EQnJrQUx3UndBQjhFaFFBdkJ0d0Fid1lHQUU4RVB3QXVCdjRBU1FYVUFDd0V0Lys2QkMvL29nYmZBRm9GNXdCT0JxY0FKZ1crQUNrSXlRQklCNThBTGdRTi84NER4Ly9LQlZFQWFRUnlBRUlFN1FDdEErNEFoQVZSQUdvRWJ3QkVCdFVBZEFYL0FGSUczQUJ2QmdZQVR3VVVBR1lFTUFCTkJPRUFRQUFLL09nQUN2MExBQXIrRndBSy9qc0FDdm80QUFyNlR3US9BQzRFL2dBNkJIRC8xd1JMQURVRGZ3QWtCTUFBUXdQd0FDUUU3QUEyQkdZQUxRWmtBTHNGWXdCMEI1MEFPZ1dTQUNRSC9BQkNCc2tBSkFYS0FIRUV1QUJmQnY4QXJBVTlBRmNGVHdERUJGSUFtQVZRQU93R0NnQ0tCS01BQndUc0FEVUVRd0F0QlpBQVF3UnZBQ1FGWndCUkJJNEFQQVNPLy93RW5mLzRBenIvNlFUYUFERUdhd0F5QnJrQVRBWXZBSzBGRFFCb0JESUFyd1B5QUtBSGovL2ZCazMvMmdmSUFEc0dlQUFqQk5vQWFnUUhBRXdGaXdDYUJRTUFmUVZGQUdvREVnRHlBLzhBQUFmMEFBQUQvd0FBQi9RQUFBS3VBQUFDQkFBQUFWd0FBQVJtQUFBQ0tRQUFBWjhBQUFEVkFBQUFDZ0FBQWkwQUdRSXRBQmtGSWdDbkJoa0FtUU9VLzE4Qmx3Q3VBWmNBaVFHVi81Z0Jsd0RVQXNnQXRnTFBBSlVDdHYrVUJGRUFkd1IyLy9ZQ3B3Q2dBN0VBT1FVN0FEa0ErUUFhQjNrQWx3SmVBRjhDWGdBQ0E1SC83d0xpQUdFRFVBQitCSXovOHdZdUFBb0dhQUE1Q0Q4QU9nYzBBQ0lHQmdBZkJHWUFVUVczQUVNRURBQkpCRndBQ2dVcC8vSUZNUC9sQmNRQXpBTzdBRXNJQlFBMUJPVUE2Z1Q2QUlJR0FRQzFCcXdBa2dhbEFJOEdRd0MrQkhZQVRRVnRBQ1FFbGYrc0JIa0Fxd1NxQUVFSUJRQk5BZ2IvR2dScEFERUVUQUJ3QS96LzFBUVpBQmtEOHdCQkFrUUFlQUtGQUhBQi92L2pCTmNBZEFSV0FGZ0VjZ0IwQnFvQWRBYXFBSFFFMGdCMEJuSUFLUUFLQUFBSC92K3JDRFVBWEFRS0FHSUVoUUJCQWZmL0R3R1AvNzBEa2dFVEE0d0JFZ09OQVJFRDRBRE5BL2tBemdQZkFDSUQyd0RTQTVJQkVRSDRBUHdFYlArbEJEa0FIUVJrQUVjRVp3QWRBOUlBSFFPNEFCMEVrZ0JNQk1jQUhRSGpBQ29EdlAvMkJEMEFIUU9pQUIwRjNnQWRCTWNBSFFTaEFFb0VSUUFkQktFQVJRUXpBQjBFQ2dBUkJCQUFiUVJrQUVVRVR3QjZCZkFBbFFROS83WUVGUUIwQkEzLzNBTGlBQjBDNGdCckF1TC82UUxpLy9zQzR2L3dBdUlBRmdMaUFCNEM0Z0F2QXVJQUN3TGlBRFlEaEFDVEFxb0JDd1FrLzVvRXFBQkxCUzBBUXdVSEFFUUQvZ0FsQlI4QVJBUDZBQ1VFQ2dBU0JCMEFCZ1FsQURRRG5RQWRCRS8vc0FTaEFFb0VULyt3QTNqLzB3U3pBQjBEMi8vVkJVZ0FVUVQ2QUg0RTFnQU1CVklBYkFSa0FFY0hFLy9FQnlFQUhRVlVBRzBFc2dBZEJFSUFId1VILzRrRjUvK3ZCQ2dBRVFUUUFCOEVOd0FlQktiL3hBUUpBRmdGQ2dBZEJGSUFXZ1lxQUIwR2d3QWRCUUFBVUFYTkFCOEVOd0FmQkdNQUlBWk9BQjBFYnYvZkEvei8rZ1loLzY4RVlRQWVCT3dBSGdVWkFHa0ZvQUJRQkVjQWRBU08vN1lHT2dCc0JGSUFXZ1JTQUIwRm9RQXZCSzhBUVFRb0FCRUVvUUJLQkIzLy93UFBBQjRIN2dBZEJKSC8zUVJsQUI4RUhBQkRCSG9BUndSekFDUURhQUNwQkhULzF3U0RBRVlFSmdCRkJHVUFOUVZoQUlFRmpBQ0VCWElBUkFXOUFJVUZ3QUNGQThJQXV3UnBBRGtEblFBZEJFSC9nUVMwLzlNQzRnQ1FBdUlBWVFMaUFJa0M0Z0NSQXVJQW9nTGlBSDRDNGdDcEJGUC8xUVFZQUNzR2V3QkpCSjhBUHdUa0FHUUNBUDhKQWYvL0NRSDJBQzRCOXY5NkFmWUFMZ0gyLy9FRU9RQWRBZllBQUFJdUFCa0ZQd0F2QlQ4QUx3UnVBRDBFcXdDb0FwUC85QVVhLzY4Rkd2K3ZCUnIvcndVYS82OEZHdit2QlJyL3J3VWEvNjhGRndCMEJITUFPd1J6QURzRWN3QTdCSE1BT3dJbUFFa0NKZ0JKQWlZQVNRSW1BRWtGa2dBN0JXQUFkd1ZnQUhjRllBQjNCV0FBZHdWZ0FIY0ZFZ0JuQlJJQVp3VVNBR2NGRWdCbkJMTUFxQVJEQURNRVF3QXpCRU1BTXdSREFETUVRd0F6QkVNQU13UkRBRE1FR2dCR0JDWUFSUVFtQUVVRUpnQkZCQ1lBUlFIMUFDNEI5UUF1QWZVQUxnSDFBQzRFVWdBZkJIY0FSUVIzQUVVRWR3QkZCSGNBUlFSM0FFVUVVUUJiQkZFQVd3UlJBRnNFVVFCYkE3Yi9wUU8yLzZVRkd2K3ZCRU1BTXdVYS82OEVRd0F6QlJyL3J3UkRBRE1GRndCMEJCb0FSZ1VYQUhRRUdnQkdCUmNBZEFRYUFFWUZGd0IwQkJvQVJnVWhBRHNGQUFCTEJITUFPd1FtQUVVRWN3QTdCQ1lBUlFSekFEc0VKZ0JGQkhNQU93UW1BRVVFY3dBN0JDWUFSUVZUQUhrRVpRQUVCVk1BZVFSbEFBUUZVd0I1QkdVQUJBVlRBSGtFWlFBRUJaSUFPd1JRQUI4Q0pnQkpBZlVBRVFJbUFFa0I5UUFhQWlZQVNRSDFBQzRDSnYrT0Flei9jQUltQUVrR2VBQkpBOUFBTHdSU0FBb0IvdjhKQk9jQU93UDVBQ0FFTndBN0Fld0FMd1EzQURzQjdQK2pCRGNBT3dLQ0FDOEVOd0E3QXNnQUx3V1NBRHNFVWdBZkJaSUFPd1JTQUI4RmtnQTdCRklBSHdSU0FCOEZZQUIzQkhjQVJRVmdBSGNFZHdCRkJXQUFkd1IzQUVVRTBRQTZBcW9BSHdUUkFEb0NxditmQk5FQU9nS3FBQjhFcFFBbkJBb0FMZ1NsQUNjRUNnQXVCS1VBSndRS0FDNEVwUUFuQkFvQUxnU2xBQ2NFQ2dBdUJLc0FxQUtUQUVNRXF3Q29BcE1BUXdTckFLZ0N1d0JEQlJJQVp3UlJBRnNGRWdCbkJGRUFXd1VTQUdjRVVRQmJCUklBWndSUkFGc0ZFZ0JuQkZFQVd3VVNBR2NFVVFCYkJ1d0F3d1hmQUlBRXN3Q29BN2IvcFFTekFLZ0VyLy9yQStQLzdRU3YvK3NENC8vdEJLLy82d1BqLyswSFMvK0VCcGNBRXdWZ0FDQUVid0E1QkdmL3NBUm4vN0FFRUFCdEJHei9wUVJzLzZVRWJQK2xCR3ovcFFScy82VUViUCtsQkd6L3BRUmtBRWNEMGdBZEE5SUFIUVBTQUIwRDBnQWRBZU1BS2dIakFDb0I0d0FxQWVNQUtnVEhBQjBFb1FCS0JLRUFTZ1NoQUVvRW9RQktCS0VBU2dSa0FFVUVaQUJGQkdRQVJRUmtBRVVFRlFCMEJHei9wUVJzLzZVRWJQK2xCR1FBUndSa0FFY0VaQUJIQkdRQVJ3Um5BQjBEMGdBZEE5SUFIUVBTQUIwRDBnQWRBOUlBSFFTU0FFd0VrZ0JNQkpJQVRBU1NBRXdFeHdBZEFlTUFEd0hqQUJnQjR3QXFBZVAvZWdIakFDb0R2UC8yQkQwQUhRT2lBQjBEb2dBZEE2SUFIUU9pQUIwRXh3QWRCTWNBSFFUSEFCMEVvUUJLQktFQVNnU2hBRW9FTXdBZEJETUFIUVF6QUIwRUNnQVJCQW9BRVFRS0FCRUVDZ0FSQkJBQWJRUVFBRzBFRUFCdEJHUUFSUVJrQUVVRVpBQkZCR1FBUlFSa0FFVUVaQUJGQmZBQWxRUVZBSFFFRlFCMEJBMy8zQVFOLzl3RURmL2NCUnIvcndUWEFHTUY5Z0J4QW9vQWR3VjBBR29GRi8vdUJVY0FIZ0tOQUNBRkd2K3ZCTjhBT3dSekFEc0VyLy9yQlpJQU93SW1BRWtFNXdBN0J0QUFPd1dTQURzRllBQjNCTzhBT3dTckFLZ0Vzd0NvQk9mLzFBSW1BRWtFc3dDb0JHd0FTQVE1QUNrRWJ3QWtBbzBBaFFSRkFHY0VXd0F0QkhjQVJRUnYvK1VEekFCdUErUC94QUtOQUdjRVJRQm5CSGNBUlFSRkFHY0diZ0JtQkhNQU93UmJBRU1FcFFBbkFpWUFTUUltQUVrRVVnQUtCUWNBUkFUbkFEc0U2Z0NUQlJyL3J3VGZBRHNFV3dCREJITUFPd1dTQUVNRzBBQTdCWklBT3dWZ0FIY0Zrd0JFQk84QU93VVhBSFFFcXdDb0JPZi8xQVJEQURNRUpnQkZCSVVBTHdSM0FFVUVaZi9YQkJvQVJnTzIvNlVENC8vRUJDWUFSUU5MQUMwRUNnQXVBZXdBTHdIMUFDNEI1UDhVQkRzQUx3TzIvNlVHN0FEREJkOEFnQWJzQU1NRjN3Q0FCdXdBd3dYZkFJQUVzd0NvQTdiL3BRRmtBS29DaFFESUJCSUFRd0grL3drQmx3Q0pCdEFBT3diWEFCNEZHdit2QkVNQU13UnpBRHNGa2dCREJDWUFSUVNGQUM4RmFBQ0dCWGtBVHdUdEFLMEQ3Z0NFQ0MwQVJRa1dBSGNFcFFBbEEvc0FJUVVYQUhRRUdnQkdCTE1BcUFQdEFJUUNKZ0JKQnhYL3JBWDcvNlVDSmdCSkJSci9yd1JEQURNRkd2K3ZCRU1BTXdkTC80UUdsd0FUQkhNQU93UW1BRVVGWndCUkJDRUFQZ1FoQUQ0SEZmK3NCZnYvcFFTbEFDVUQrd0FoQlpJQVF3U0ZBQzhGa2dCREJJVUFMd1ZnQUhjRWR3QkZCVkVBYVFSeUFFSUZVUUJwQkhJQVFnVkZBSFFFTmdBMEJPb0Frd08yLzZVRTZnQ1RBN2IvcFFUcUFKTUR0ditsQlZvQXpnUkNBSHNHd0FCRkJoQUFNQVRuLzlRRDQvL0VCR29BU3dXSS84b0Vodi9JQlJyL3J3UkRBRE1GR3YrdkJFTUFNd1VhLzY4RVF3QXpCUnIvcndSREFETUZHdit2QkVNQU13VWEvNjhFUXdBekJSci9yd1JEQURNRkd2K3ZCRU1BTXdVYS82OEVRd0F6QlJyL3J3UkRBRE1GR3YrdkJFTUFNd1VhLzY4RVF3QXpCSE1BT3dRbUFFVUVjd0E3QkNZQVJRUnpBRHNFSmdCRkJITUFPd1FtQUVVRWN3QTdCQ1lBUlFSekFEc0VKZ0JGQkhNQU93UW1BRVVFY3dBN0JDWUFSUUltQUVrQjlRQXVBaVlBRGdIcy8vRUZZQUIzQkhjQVJRVmdBSGNFZHdCRkJXQUFkd1IzQUVVRllBQjNCSGNBUlFWZ0FIY0Vkd0JGQldBQWR3UjNBRVVGWUFCM0JIY0FSUVZlQUdjRWVRQkNCVjRBWndSNUFFSUZYZ0JuQkhrQVFnVmVBR2NFZVFCQ0JWNEFad1I1QUVJRkVnQm5CRkVBV3dVU0FHY0VVUUJiQlc4QVp3VFhBRm9GYndCbkJOY0FXZ1Z2QUdjRTF3QmFCVzhBWndUWEFGb0Zid0JuQk5jQVdnU3pBS2dEdHYrbEJMTUFxQU8yLzZVRXN3Q29BN2IvcFFTSUFFc0VpQUFBQlFjQVJBUTdBQzhGa2dBN0JJUUFMd1NyQUtnRHhBQmdCT2YvMUFQai84UUZXZ0RPQkVJQWV3VmFBTTRFUWdCN0JGc0FRd05MQUMwSEZmK3NCZnYvcFFZS0FJb0Vvd0FIQkZBQUh3VG9BQ3NFNkFBckJGc0FFQU5MLytZRkd3QllCQklBT1FXU0FFTUVoUUF2QlpJQU93U0VBQzhHMEFBN0Jjc0FNQVdJLzhvRWh2L0lCTE1BcUFQdEFGMEU1Ly9VQStQL3hBUTVBQ2tFVlAvWEJoa0FtUVJtQUJjRVpnQTBCR1lBQlFSbUFISUVlZ0NVQkk0QWZBVlRBSGtFWlFBRUJaSUFPd1JTQUI4Rkd2K3ZCRU1BTXdSekFEc0VKZ0JGQWliLzN3SDEvNDBGWUFCM0JIY0FSUVRSQURvQ3FnQWZCUklBWndSUkFGc0VqLyt5Qk44QU93UmxBQjhGSVFBN0JHb0FTd1VoQURzRWFnQkxCWklBT3dSUUFCOEU1d0E3QS9rQUlBVG5BRHNEK1FBZ0JEY0FPd0hzLy9JRzBBQTdCdGNBSGdXU0FEc0VVZ0FmQk84QU93UmwvOWNFMFFBNkFxci83Z1NsQUNjRUNnQXVCS3NBcUFLVEFFTUUrZ0NrQTh3QWJnVDZBS1FEekFCdUJ1d0F3d1hmQUlBRXIvL3JBK1AvN1FXbS93d0ViUCtsQkE3LzRRVUQvLzBDSHdBQkJLc0FIUVJSLzVzRTRBQVdCR3ovcFFRNUFCMEQwZ0FkQkEzLzNBVEhBQjBCNHdBcUJEMEFIUVhlQUIwRW9RQktCRVVBSFFRUUFHMEVGUUIwQkQzL3RnSGpBQ29FRlFCMEE5SUFIUU9kQUIwRUNnQVJBZU1BS2dIakFDb0R2UC8yQkQwQUhRUUpBRmdFYlArbEJEa0FIUU9kQUIwRDBnQWRCTkFBSHdYZUFCMEV4d0FkQktFQVNnU3pBQjBFUlFBZEJHUUFSd1FRQUcwRVBmKzJCQ2dBRVFUSEFCMEVaQUJJQkJVQWRBV2hBQzhFMEFBZkJBa0FXQVZJQUZFRkd2K3ZCRU1BTXdSekFEc0VKZ0JGQUFBQUFRQUFCT1FKQ2dRQUFBSUNBZ01GQlFZRkFnTURCQVVDQWdJRUJRVUZCUVVGQlFVRkJRSUNCQVVGQkFnR0JRWUdCUVVHQmdJRkJnVUlCZ1lHQmdVRkJRWUdDQVlGQlFJRUFnUUVBd1VGQlFVRkF3VUZBZ0lFQWdnRkJRVUZBd1VEQlFRSEJBUUVBd0lEQmdJRkJRWUZBZ1VFQndRRUJRY0VBd1VEQXdNRkJBSUNBd1FFQmdjSEJBZ0ZCZ1VGQndVRkJRVUdBZ1VGQWdZRkNBZ0NCZ01HQlFZRkFnVUVCQVFFQWdNQ0JBTURBQUFBQUFBQ0FnUUNCUVlHQmdVR0JRWUdCZ1VGQkFVRkJRVUZBd1VFQlFVRkJRVUZCZ1lIQlFVSEJ3WUpDUWNHQmdjSUJRWUdCZ2NHQmdnSkJ3Z0dCZ2dHQlFVRUJRY0VCUVVGQndVRkJBWUZCUWNIQlFjRkJRY0ZCUVVIQ0FVRkNBY0ZDQWNGQlFnSEJ3WUtDUVVFQmdVR0JBWUZDQWNJQndZRkJRQUFBQUFBQUFVR0JRVUVCUVFHQlFjR0NRWUpDQWNGQ0FZR0JRWUhCUVlGQmdVR0JRVUZCQVVIQ0FjR0JRUUpCd2tIQlFVR0JnWURCUWtGQ1FNQ0FnVUNBZ0VBQWdJR0J3UUNBZ0lDQXdNREJRVURCQVlCQ0FNREJBTUVCUWNIQ1FnSEJRWUZCUVlHQmdRSkJnWUhDQWNIQlFZRkJRVUpBZ1VGQkFVRUF3TUNCUVVGQ0FnRkJ3QUpDUVVGQWdJRUJBUUVCQVFFQkFJRkJRVUZCQVFGQlFJRUJRUUhCUVVGQlFVRkJRVUZCd1VGQlFNREF3TURBd01EQXdNRUF3VUZCZ1lFQmdRRkJRVUVCUVVGQkFVRUJnWUZCZ1VJQ0FZRkJRWUhCUVVGQlFVR0JRY0hCZ2NGQlFjRkJBY0ZCZ1lHQlFVSEJRVUdCUVVGQlFRSkJRVUZCUVVFQlFVRkJRWUdCZ1lHQkFVRUJRVURBd01EQXdNREJRVUhCUVlDQWdJQ0FnSUZBZ0lHQmdVRkF3WUdCZ1lHQmdZR0JRVUZCUUlDQWdJR0JnWUdCZ1lHQmdZR0JRVUZCUVVGQlFVRkJRVUZCUUlDQWdJRkJRVUZCUVVGQlFVRkJBUUdCUVlGQmdVR0JRWUZCZ1VHQlFZR0JRVUZCUVVGQlFVRkJRWUZCZ1VHQlFZRkJnVUNBZ0lDQWdJQ0FnSUhCQVVDQmdRRkFnVUNCUU1GQXdZRkJnVUdCUVVHQlFZRkJnVUZBd1VEQlFNRkJRVUZCUVVGQlFVRkJRTUZBd1VEQmdVR0JRWUZCZ1VHQlFZRkNBY0ZCQVVGQkFVRUJRUUlCd1lGQlFVRkJRVUZCUVVGQlFVRUJBUUVBZ0lDQWdVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRUJBUUVCQVVGQlFVRkFnSUNBZ0lFQlFRRUJBUUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQndVRkJRVUZCZ1VIQXdZR0JnTUdCUVVGQmdJR0NBWUdCZ1VGQmdJRkJRVUZBd1VGQlFVRUJBTUZCUVVIQlFVRkFnSUZCZ1lHQmdVRkJRWUlCZ1lHQmdZRkJnVUZCUVVGQlFRRUJRUUZBZ0lDQlFRSUJ3Z0hDQWNGQkFJREJRSUNDQWdHQlFVR0JRVUdCZ1lFQ1FvRkJBWUZCUVFDQ0FjQ0JnVUdCUWdIQlFVR0JRVUlCd1VFQmdVR0JRWUZCZ1VHQlFZRkJnUUdCQVlFQmdVSUJ3WUVCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQmdVR0JRWUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRSUNBZ0lHQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFVRUJRUUZCQVVGQmdVR0JRVUVCZ1FHQlFZRkJRUUlCd2NGQlFZR0JRUUdCUVlGQmdVSUJ3WUZCUVFHQkFVRkJ3VUZCUVVGQlFZRkJnVUdCUVVGQWdJR0JRVURCZ1VGQlFVR0JRWUZCZ1VHQkFZRUJRSUlDQVlGQmdVRkF3VUZCUU1HQkFZRUNBY0ZCQVlGQlFZQ0JRVUZCUVVFQlFVQ0JRY0ZCUVVGQlFJRkJBUUZBZ0lFQlFVRkJRUUVCUWNGQlFVRkJRVUZCUVVGQlFZRkJRWUdCUVVGQUFBQUFnQUFBQU1BQUFBVUFBTUFBUUFBQUJRQUJBWnNBQUFBNmdDQUFBWUFhZ0FBQUFJQURRQitBS0FBckFDdEFMOEF4Z0RQQU9ZQTd3RCtBUThCRVFFbEFTY0JNQUZUQVY4Qlp3RitBWDhCandHU0FhRUJzQUh3QWY4Q0d3STNBbGtDdkFMSEFza0MzUUx6QXdFREF3TUpBdzhESXdPS0E0d0RrZ09oQTdBRHVRUEpBODREMGdQV0JDVUVMd1JGQkU4RVlnUnZCSGtFaGdUT0JOY0U0UVQxQlFFRkVBVVRIZ0VlUHg2Rkh2RWU4eDc1SDAwZ0N5QVJJQlVnSGlBaUlDY2dNQ0F6SURvZ1BDQkVJSFFnZnlDa0lLb2dyQ0N4SUxvZ3ZTRUZJUk1oRmlFaUlTWWhMaUZlSWdJaUJpSVBJaElpR2lJZUlpc2lTQ0pnSW1VbHl1NEM5c1A3QlA3Ly8vMy8vd0FBQUFBQUFnQU5BQ0FBb0FDaEFLMEFyZ0RBQU1jQTBBRG5BUEFBL3dFUUFSSUJKZ0VvQVRFQlZBRmdBV2dCZndHUEFaSUJvQUd2QWZBQitnSVlBamNDV1FLOEFzWUN5UUxZQXZNREFBTURBd2tERHdNakE0UURqQU9PQTVNRG93T3hBN29EeWdQUkE5WUVBQVFtQkRBRVJnUlFCR01FY0FSNkJJZ0V6d1RZQk9JRTlnVUNCUkVlQUI0K0hvQWVvQjd5SHZRZlRTQUFJQkFnRXlBWElDQWdKU0F3SURJZ09TQThJRVFnZENCL0lLTWdwaUNySUxFZ3VTQzhJUVVoRXlFV0lTSWhKaUV1SVZzaUFpSUdJZzhpRVNJYUloNGlLeUpJSW1BaVpDWEs3Z0gydy9zQi92Ly8vUC8vQUFFQUFQLzIvK1FCcGYvQ0Fabi93UUFBQVl3QUFBR0hBQUFCZ3dBQUFZRUFBQUYvQUFBQmR3QUFBWG4vRmY4Ry93VCs5LzdxQWJzQUFBQUEvbVQrUXdEdy9kZjkxdjNJL2JQOXAvMm0vYUg5blAySkFBRC95Ly9LQUFBQUFQMEpBQUQvcS96OS9Qb0FBUHk1QUFEOHNRQUEvS1lBQVB5Z0FBRCs5UUFBL3ZJQUFQeEpBQURscitWdjVTRGxUK1MwNVUzbFhlRmI0VmNBQU9GVTRWUGhVZUZKNDNiaFFlTnU0VGpoQ2VEL0FBRGcyZ0FBNE5YZ3p1RE40SWJnZWVCMzRHemZrK0JoNERYZmt0NnIzNGJmaGQ5KzMzdmZiOTlUM3p6Zk9kdlZFNThLM3dhakFxc0Jyd0FCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQURhQUFBQTVBQUFBUTRBQUFFb0FBQUJLQUFBQVNnQUFBRnFBQUFBQUFBQUFBQUFBQUFBQUFBQmFnRjBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFXSUFBQUFBQVdvQmhnQUFBWjRBQUFBQUFBQUJ0Z0FBQWY0QUFBSW1BQUFDU0FBQUFsZ0FBQUxpQUFBQzhnQUFBd1lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDK0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUF1Z0FBQUxvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWt3Q1RRSk9BazhDVUFKUkFJRUNTQUpjQWwwQ1hnSmZBbUFDWVFDQ0FJTUNZZ0pqQW1RQ1pRSm1BSVFBaFFKbkFtZ0NhUUpxQW1zQ2JBQ0dBSWNDZHdKNEFua0NlZ0o3QW53QWlBQ0pBbjBDZmdKL0FvQUNnUUNLQWtjRVJ3Q0xBa2tBakFLd0FyRUNzZ0t6QXJRQ3RRQ05BcllDdHdLNEFya0N1Z0s3QXJ3Q3ZRQ09BSThDdmdLL0FzQUN3UUxDQXNNQ3hBQ1FBSkVDeFFMR0FzY0N5QUxKQXNvQWtnQ1RBdGtDMmdMZEF0NEMzd0xnQWtvQ1N3SlNBbTBDK0FMNUF2b0Mrd0xYQXRnQzJ3TGNBSzBBcmdOVEFLOERWQU5WQTFZQXNBQ3hBMTBEWGdOZkFMSURZQU5oQUxNRFlnTmpBTFFEWkFDMUEyVUF0Z05tQTJjQXR3Tm9BTGdBdVFOcEEyb0Rhd05zQTIwRGJnTnZBM0FBd3dOeUEzTUF4QU54QU1VQXhnREhBTWdBeVFES0FNc0RkQURNQU0wRHNRTjZBTkVEZXdEU0Ezd0RmUU4rQTM4QTB3RFVBTlVEZ1FPeUE0SUExZ09EQU5jRGhBT0ZBTmdEaGdEWkFOb0Eyd09IQTRBQTNBT0lBNGtEaWdPTEE0d0RqUU9PQU4wQTNnT1BBNUFBNlFEcUFPc0E3QU9SQU8wQTdnRHZBNUlBOEFEeEFQSUE4d09UQVBRRGxBT1ZBUFVEbGdEMkE1Y0Rzd09ZQVFFRG1RRUNBNW9EbXdPY0E1MEJBd0VFQVFVRG5nTzBBNThCQmdFSEFRZ0VYUU8xQTdZQkZnRVhBUmdCR1FPM0E3Z0R1Z081QVNjQktBUmlCR01FWEFFcEFTb0JLd0VzQVMwRVhnUmZBUzRCTHdSWEJGZ0R1d084QkVrRVNnRXdBVEVFWUFSaEFUSUJNd1JMQkV3Qk5BRTFBVFlCTndFNEFUa0R2UU8rQkUwRVRnTy9BOEFFYWdSckJFOEVVQUU2QVRzRVVRUlNBVHdCUFFFK0JGc0JQd0ZBQkZrRVdnUEJBOElEd3dGQkFVSUVhQVJwQVVNQlJBUmtCR1VFVXdSVUJHWUVad0ZGQTg0RHpRUFBBOUFEMFFQU0E5TUJSZ0ZIQkZVRVZnUG9BK2tCU0FGSkErb0Q2d1JzQkcwQlNnUHNCRzREN1FQdUFXa0JhZ1J3Qkc4QmZ3UklBWVd3QUN4THNBbFFXTEVCQVk1WnVBSC9oYkNFSGJFSkExOWVMYkFCTENBZ1JXbEVzQUZnTGJBQ0xMQUJLaUV0c0FNc0lFYXdBeVZHVWxnaldTQ0tJSXBKWklvZ1JpQm9ZV1N3QkNWR0lHaGhaRkpZSTJXS1dTOGdzQUJUV0drZ3NBQlVXQ0d3UUZrYmFTQ3dBRlJZSWJCQVpWbFpPaTJ3QkN3Z1JyQUVKVVpTV0NPS1dTQkdJR3BoWkxBRUpVWWdhbUZrVWxnamlsa3YvUzJ3QlN4TElMQURKbEJZVVZpd2dFUWJzRUJFV1JzaElTQkZzTUJRV0xEQVJCc2hXVmt0c0FZc0lDQkZhVVN3QVdBZ0lFVjlhUmhFc0FGZ0xiQUhMTEFHS2kyd0NDeExJTEFESmxOWXNFQWJzQUJaaW9vZ3NBTW1VMWdqSWJDQWlvb2JpaU5aSUxBREpsTllJeUd3d0lxS0c0b2pXU0N3QXlaVFdDTWh1QUVBaW9vYmlpTlpJTEFESmxOWUl5RzRBVUNLaWh1S0kxa2dzQU1tVTFpd0F5VkZ1QUdBVUZnakliZ0JnQ01oRzdBREpVVWpJU01oV1JzaFdVUXRzQWtzUzFOWVJVUWJJU0ZaTGJBS0xMQWtSUzJ3Q3l5d0pVVXRzQXdzc1NjQmlDQ0tVMWk1UUFBRUFHTzRDQUNJVkZpNUFDUUQ2SEJaRzdBalUxaXdJSWk0RUFCVVdMa0FKQVBvY0ZsWldTMndEU3l3UUlpNElBQmFXTEVsQUVRYnVRQWxBK2hFV1Myd0RDdXdBQ3NBc2dFT0Fpc0JzZzhCQWlzQnR3ODZNQ1ViRUFBSUt3QzNBVWc3TGlFVUFBZ3J0d0pZU0Rnb0ZBQUlLN2NEVWtNMEpSWUFDQ3UzQkY1TlBDc1pBQWdydHdVMkxDSVpEd0FJSzdjR2NWMUdNaHNBQ0N1M0I1RjNYRG9qQUFncnR3aCtaMUE1R2dBSUs3Y0pWRVUySmhjQUNDdTNDblpnU3pZZEFBZ3J0d3VEWkU0Nkl3QUlLN2NNMmJLS1l6d0FDQ3UzRFJRUkRRa0dBQWdydHc0OE1pY2NFUUFJS3dDeUVBb0hLN0FBSUVWOWFSaEVzakFTQVhPeXNCUUJjN0pRRkFGMHNvQVVBWFN5Y0JRQmRiSVBIQUZ6c204Y0FYVUFBQ29BblFDQUFJb0FlQURVQUdRQVRnQmFBSWNBWUFCV0FEUUNQQUM4QU1RQUFBQVUvbUFBRkFLYkFDQURJUUFMQkRvQUZBU05BQkFGc0FBVUJoZ0FGUUdtQUJFR3dBQU9BQUFBQUFBQUFHRUFZUUJoQUdFQVlRQ2dBTVlCUlFIRUFuSURFd01yQTFzRGpBTy9BK2NFQmdRZEJFSUVXUVM4Qk9zRlJRWExCaEVHZkFiekJ5QUhyQWdsQ0RvSVR3aHZDSmNJdUFrbkNlTUtJZ3FSQ3ZNTFFndUZDNzBNS0F4c0RJY012ZzBWRFRvTmlnM0lEaTBPZkE3bkQwY1B2QS9vRUMwUVhSQ3hFUVlSTnhGd0VaWVJyUkhVRWZzU0ZoSTFFcnNUSmhPREUrd1VXeFMwRlQ0VmlCVzhGZ2tXWWhaOUZ2UVhReGVpR0E0WWVSaTNHU29aZ3huUEdmNGFUUnFWR3RjYkVCdGRHM1Fidnh3RkhEWWNtaDBJSFhjZDJoMzdIcUFlMngrSEgvc2dCeUFsSU5zZzhpRTBJWGtoelNKQkltRWl0U0xoSXdJak9pTnRJN29qeGlQZ0kvb2tGQ1IzSk53bEdpV2pKZjBtY2lkREo3UW9BaWlIS08wcFVDbHJLYndxQ1NwSktwNHEvU3VKTEVJc2N5emZMVWt0dkM0bUxuc3UxeThITDI4dm5TL0RMOHN2K0RBYU1GVXdpREROTVFBeFF6RmdNWDR4aHpHMk1lY3lDVElsTW5JeWVqS2hNczR6UnpOME03Z3o2RFFtTktNMUF6VjBOZlkyY2phbU55azNxamYrT0UwNHhqajVPVkE1eFRvZU9vQTY0anRITzQ0NzJUeE1QS2c5SUQycVBnRStnejdrUDFzLzAwQktRS05BNGtFOVFaWkNCa0tBUXNkREVVTlNROVZFRFVSWFJKZEU0MFUvUmFaRjlVWmtSdWxIU1VlN1NDQklSMGljU1JCSmlFbkRTaHhLWjBxeFN4QkxRRXR0VEJGTVNVeVJUTkZOR1UxMFRkRk9JRTZQVHhOUGMwL3dVRmxRMVZGSVViVlI5RkpoVXNSVE1sUEJWR0pVcmxUOVZXbFYyVlpWVnIxWFZsZmlXSUJaSkZtZFdmOWFQMXFEV3ZSYllGd3RYTzFkYzEzc1hrSmVrbDdGWHVKZkhWODBYMHRnSW1DV1lRUmhZV0hkWWc1aU9tS1ZZdTVqU0dPdVpBUmtaV1N5WlI1bGdXWGJabjVuRldkb1o2NW9CMmhaYUoxcEhHbVVhZTlxVEdxb2F3OXJnMnZvYkVwc1dXeHRiTDV0S0czRGJrQnVzVzhmYjRodi9YQndjT2h4Wm5IRWNocHlibkxIYzBaemQzTjNjM2R6ZDNOM2MzZHpkM04zYzNkemQzTjNjM2R6ZDNOL2M0ZHprWE9iYzdKejBYUHZkQTUwTG5RNmRFWjBkM1M0ZFIxMVFuVk9kVjUxY25aR2RtSjJmM2FTZHFaMjczZDZlQng0cVhpMWVYaDUwM3BaZXdSN1pudnBmRWQ4dUgxZGZjbCtXMzY4ZnlSL1BuOVlmM0ovakgvL2dDZUFZWUI5Z0xLQk80R0JnZmlDT1lKSGdsV0Nqb0tiZ3NLQzI0TG5nMHFEbzRRM2hNS0ZRNFlYaGhlSGxJZnhpQ0tJZ0lpdmlNV0pLSWw2aWJxS0xJcUZpc1dMQ0l0SWkyS0xxSXdlakhxTXg0MFRqVStOdG80RWppS09XSTZjanNTUEZvOVVqN09RQTVCaGtMV1JJNUZQa1l1UnZwSVNrbGVTaTVMSWt4dVRScE9WbEFhVVNKU29sUWlWTlpXK2xpQ1dONWFCbHo2WHVaZ3RtSHlZd3BrRW1VeVp6Sm80bXErYTJwc1FtNGlidVp3SG5EcWNlcHp1blZDZHU1NGVub3lmQTU5N245S2dEYUJwb01HaE42RzhvZnFpUzZLVW90aWpFNk5ibzV1ajVhUkFwRXlrbmFVUnBaeWwrYVpJcHRDbk02ZVlwL2lvb3FpdXFRR3BUYW1pcWV1cVphclNxemVycTZ4SHJNNnRiNjNpcmsrdXFLOFRyNXl2cExBUXNINnc2YkZ5c2RXeVFMS1NzdlN6V3JPRnM5cTBCTFJkdEtHMHRiVEp0TnUwNzdVQnRSaTFMTFdPdGJhMlJMYTB0dzIzRmJjZHR5VzNNTGM0dDBTM3NMZXd0N2k0S0xpWXVQcTVRTG1vdWIrNTFybnR1Z1M2SExvdnVqdTZSN3BldW5DNmg3cWF1ckc2dzdyYXV1MjdCTHNidXkyN1JMdGJ1MjY3aGJ1WHU2Njd3YnZUdStxNy9Md1N2Q084TnJ4SnZGVzhZYng0dklxOG9MeXp2TW04MnJ6eHZRbTlHcjB4dlVPOVdiMXF2WDI5bEwybXZieTl6NzNodmZPK0NyNGd2amUrU2I2MnYyUy9kcitJdjVxL3E3Kzl2OCsvNGIveXdBVEFFTUFpd0RQQVJjQlh3R25BZThEdndYM0JqOEdnd2JMQnc4SFZ3ZWZCK2NJTHdoZkNLY0k3d2svQ1ljSnp3b1hDbDhLcHdydkN4c0xSd3VQQzc4TDd3dzNESDhNcnd6ZkRTY05idzJmRGM4T0l3NVREb01Pc3c3N0QwTVBjdytqRCtzUUx4QmZFS2NRNnhFekVYc1J4eElURWxzU294TFRFd01UU3hPUEU5Y1VIeFJuRktzVTJ4VUxGVHNWYXhXekZmY1dKeFpYRm9jV3R4Yi9GeThYZHhlN0dBTVlSeGlQR05jWkl4bHZHYnNhQnh1TEhVY2RqeDNYSGg4ZVl4NnZIdmNmUHgrSEg4OGdGeUJiSUxjaEV5RnZJY3NpVnlMakl5TWpmeVBISkI4a1l5U3ZKUHNsS3lWYkpiY2wveVpESm9zbTR5Y25KMjhudXlnREtGOG9weWp2S1RjcGd5bmZLaWNxYXlxM0t2OHJReXVMTFNjdGJ5MnpMZnN1UXk2SExzc3ZEeTlYTVQ4eGd6SEhNZzh5VnpLSE1zOHpGek5mTTZjejB6UVhORjgwanpUVE5RTTFWeldITmM4MS96WkhObzgyMXpjak4yczNtemZmT0NjNGF6aWJPTjg1RHpsVE9ZTTV4em9MT2xNNm56cnJQSmM4M3owalBXczlzejM3UGo4K2F6NmJQc3MrK3o4clAxcy9pei8zUUJkQU4wQlhRSGRBbDBDM1FOZEE5MEVYUVRkQlYwRjNRWmRCdDBJRFFrOUNsMExmUXlkRGEwTy9ROTlELzBRZlJEOUVYMFNuUk85Rk4wVi9SY2RHSjBhRFNGZElkMGpEU09OSkEwbGZTYnRKMjBuN1NodEtPMHFEU3FOS3cwcmpTd05MSTB0RFMyTkxnMHVqUzhOTUMwd3JURXROdjAzZlRmOU9TMDZuVHNkTzUwOHpUMU5QcjFBSFVHTlF2MUViVVhkUjExSTNVcE5TNzFNUFV5OVRYMU83VTl0VU4xU1RWTU5VODFWUFZhdFdCMVpqVm9OV28xY0RWMk5YazFmRFYvTllJMWhUV0lOWW8xakRXT05aUDFtYldidGFGMXB6V3ROYkgxcy9XMTlicDF2dlhEdGNXMXluWFBOZFAxMkxYZE5lRzE1ZlhxdGU5MTlEWDQ5ZnIxL1BZQnRnWjJDellQOWhSMkdMWWRkaUgySi9ZdDlqUDJPSFkvZGtaMlNYWk1kazUyVVhaVWRsZDJXblplOW1OMmFYWnZOblUyZXZhQTlvYTJqTGFTZHBrMm43YWtkcWsycmZheXRyZDJ2RGJBOXNXMnpIYlROdFkyMlRiZHR1STI1cmJxOXZEMjlyYjh0d0ozQ0hjT054UTNHZmNndHljM0s3Y3dOek0zTmpjNU56dzNRTGRGTjBzM1VQZFc5MXkzWXJkb2QyNTNkRGQ2OTRGM2h6ZU05NUszbUhlZU42UDNxYmV2TjdJM3RUZTRON3MzdjdmRU44bjN6N2ZWZDlzMzRQZm10K3gzOGZmMDkvZjMrdmY5K0FKNEJ2Z0xlQSs0TDdnenVEYTRPYmc4dUQrNFFyaEZ1RWk0UzdoT3VGRzRWTGhYdUZxNFhiaGd1R080WnJocHVHdTRoamloT0xLNHhEamIrUEs0K1hrQU9RTTVCamtKT1F3NUR6a1NPU1Q1T1BsTytXVjVaM2xxZVd6NWJ2bHcrWEw1ZFBsMitYajVmcm1FZVlvNWovbVYrWnY1b2ZtbithMzVzL201K2IvNXhmbkwrZEg1MS9uYStkMzU0UG5qK2ViNTZmbnMrZS81OHZuNHVmMDZBRG9ET2dZNkNUb01PZzg2RWpvVk9ocjZJTG9qdWlhNktib3N1aSs2TXJvNGVqMzZRUHBEK2tiNlNmcE0ray82VXZwVitsajZXL3BlK21INlpQcG4rbW42YS9wdCttLzZjZnB6K25YNmQvcDUrbnY2ZmZwLytvSDZoL3FOdXBONm1UcWJPcDA2b3pxbE9xcjZzSHF5ZXJSNnRucTRlcjQ2d0RyQ09zUTZ4anJJT3NvNnpEck9PdkQ3QjNzZ3V5SzdKYnNyZXpEN012czEremo3Ty9zK3dBQUFBVUFaQUFBQXlnRnNBQURBQVlBQ1FBTUFBOEFjYklNRUJFUkVqbXdEQkN3QU5Dd0RCQ3dCdEN3REJDd0NkQ3dEQkN3RGRBQXNBQkZXTEFDTHh1eEFodytXYkFBUlZpd0FDOGJzUUFRUGxteUJBSUFFUkk1c2dVQ0FCRVNPYklIQWdBUkVqbXlDQUlBRVJJNXNRb005TElNQWdBUkVqbXlEUUlBRVJJNXNBSVFzUTRNOURBeElTRVJJUU1SQVFFUkFRTWhBVFVCSVFNby9Ud0N4RGIrN3Y2NkFRemtBZ1ArL2dFQy9mMEZzUHFrQlFmOWZRSjMreEVDZVAxZUFsNklBbDRBQWdCRC8vSUI5QVd3QUFNQURnQS9zZ2tQRUJFU09iQUpFTEFBMEFDd0FFVllzQUl2RzdFQ0hENVpzQUJGV0xBTkx4dXhEUkErV2JJSEJRb3JXQ0hZRy9SWnNnRUhBaEVTT2JBQkx6QXhBU01UTXdFMk5qYzJGaFVVQmdZbUFUR2txYjcrVHdFNk1DNDhQRjQ3QVpzRUZmcXFMejBDQWp3dUx6c0VPZ0FBQWdESUJCRUNwZ1lJQUFRQUNRQVpBTEFETDdJQ0NnTVJFam13QWkrd0I5Q3dBeEN3Q05Bd01RRURCeE1YRndNakV4Y0JpVk51VUlqdlUyNVFpQVZ1L3FRQkFmY0prZjZrQWZZSkFBSUFVZ0FBQlBzRnNBQWJBQjhBandDd0FFVllzQXd2RzdFTUhENVpzQUJGV0xBUUx4dXhFQncrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0Jvdkc3RWFFRDVac2gwTUFoRVNPWHl3SFM4WXNnQURDaXRZSWRnYjlGbXdCTkN3SFJDd0J0Q3dIUkN3QzlDd0N5K3lDQU1LSzFnaDJCdjBXYkFMRUxBTzBMQUxFTEFTMExBSUVMQVUwTEFkRUxBVzBMQUFFTEFZMExBSUVMQWUwREF4QVNNREl4TWpOek1USXpjaEV6TURNeE16QXpNSEl3TXpCeU1ESXdNekV5TUN3L3FXa0pYbUdQK0ErQmdCRXBpUm1mdVlrcG5FR042QTJCanhsWkkwK29INkFacitaZ0dhaVFGaWl3R2cvbUFCb1A1Z2kvNmVpZjVtQWlNQllnQUFBUUJLL3pBRVBBYWNBQ3NBYmJJZkxDMFJFamtBc0FCRldMQUpMeHV4Q1J3K1diQUFSVml3SWk4YnNTSVFQbG15QWlJSkVSSTVzQWtRc0F6UXNBa1FzQkRRc0FrUXNoTUJDaXRZSWRnYjlGbXdBaEN5R1FFS0sxZ2gyQnYwV2JBaUVMQWYwTEFpRUxBbTBMQWlFTElwQVFvcldDSFlHL1JaTURFQk5pWW1KeVkzTmpZM056TUhGaFlISXpZbUp5WUdCd1lXQkJZV0J3WUdCd2NqTnlZbU56TUdGaGNXTmdNaENtcjlTNVFPQzlleEo1SW9sSkVQc3doblpIR1REQWxkQVJLT1FRY041YjBpa1NPa3FBdTFDM1YyZjZzQmZsYUFZVDE1eEtUWEY5dmVIZkhBazUwREFvTnZWbnh0ZDVwanE5SVV2OEVZNnJxRG5BSUNoUUFGQUx2LzVnVTRCY2dBRFFBYkFDa0FOd0E3QUlteUpUdzlFUkk1c0NVUXNBWFFzQ1VRc0JiUXNDVVFzQ3ZRc0NVUXNEalFBTEE0TDdBNkw3QUFSVml3QUM4YnNRQWNQbG13QUVWWXNDTXZHN0VqRUQ1WnNBQVFzQWZRc0FjdnNoRUVDaXRZSWRnYjlGbXdBQkN5R0FRS0sxZ2gyQnYwV2JBakVMQWMwTEFjTDdBakVMSXRCQW9yV0NIWUcvUlpzQndRc2pRRUNpdFlJZGdiOUZrd01RRVdGZ2NIQmdZbkppWTNOelkyQXdZV0Z4WTJOemMySmljbUJnY0JGaFlIQndZR0p5WW1OemMyTmdNR0ZoY1dOamMzTmlZbkpnWUhCU2NCRndJTmVZOElCZysxZlhtU0NBWU50ME1GUlVCRVpRc0pCMEpEUldZTEF0dDhqZ2dHRGJXQWVKTUlCZzJ5UGdWRFFrWmpDd2tIUWtOSFpBdjk4Mk1EY1dNRnhnU3BnVTJHcWdRQ3JINUFrSzMrZ1ZGZkFnSmxVVTVNWmdJQ1psSDkrZ1NyZmtPTnJ3UUNxb0ZFaTY3K2dWQmhBZ0ptVVU5TFpnSUNabEQxU0FSb1J3QURBRHIvNlFTSEJjZ0FIQUFsQURFQW1MSWVNak1SRWptd0hoQ3dEOUN3SGhDd01OQUFzQUJGV0xBSkx4dXhDUncrV2JBQVJWaXdHaThic1JvUVBsbXdBRVZZc0Jjdkc3RVhFRDVac2lBYUNSRVNPYklwQ1JvUkVqbXlBeUFwRVJJNXNnOHBJQkVTT2JJUUdna1JFam15RWhvSkVSSTVzaGdhQ1JFU09iSVZFQmdSRWptd0doQ3lIUUVLSzFnaDJCdjBXYklmSFJBUkVqbXdDUkN5THdFS0sxZ2gyQnYwV1RBeEV6WTNOeWNtTnpZMkZ4WVdCd1lIQnhNMk56TUdCeGNqSndZbkppWUZGamNCQndZSEJoWVRCaGNYTnpZM05pWWpJZ1pIRDg5eUswZ0lETmlraDdBSUNjeVQrVnNYb1J1YW5jcEpydEc5NWdHcGhwYis4U3V6RXc5K2NBZzVHNWxyQ3daU1JGTndBWUM2a2t4TmhIR2x5UVFDcTMrc2oyTCtnNGViLzZ6MWNZZ0VBdUZOQTNRQnFCNThnMnlPQTl4VVpTOW5VR2xBVkhrQUFRQ3FCQ0VCaVFZQUFBUUFFQUN3QXkreUFnVURFUkk1c0FJdk1ERUJBeU1UTXdGMlRJQk5rZ1dLL3BjQjN3QUFBUUJ0L2lvREdBWnNBQklBRUxJQ0V4UVJFamtBc0FRdnNBMHZNREVUTmhJQU54Y0dBZ0lYRkJJWEJ5WUNFelkzaFNHekFRU2dHNTNoZWdKclpTMm5zUWdDREFKTDV3RzJBVFZQZkhYK2gvMzUvTS8reFZ0d2RBSEdBU1ZnVndBQUFmK1AvaWtDT0FackFCSUFFTElIRXhRUkVqa0FzQVF2c0F3dk1ERUJCZ0lBQnljQUV6WW5BaWMzRmhJU0J3WUhBaU1qdVA3L25Cd0JWM011QWdYTEwzQ2JTUVFEREFKSjlQNU4vdFZPY3dFQ0Fqdm0xUUd0dW5CTy92MytxYmhoVmdBQkFHc0NYd09LQmJBQURnQWdBTEFBUlZpd0JDOGJzUVFjUGxtd0FOQVpzQUF2R0xBSjBCbXdDUzhZTURFQkpUY0ZFek1ESlJjRkV3Y0RBeWNCZ1A3clJBRVdNNVpHQVM4VC9zV1RnSVBlY2dQYldwQnhBVnorcUd5ZlcvN3RXQUVpL3VoaUFBQUJBRXdBa2dRMEJMWUFDd0FhQUxBSkw3QUEwTEFKRUxJR0FRb3JXQ0hZRy9SWnNBUFFNREVCSVFjaEF5TVRJVGNoRXpNQ3FnR0tILzUzVUxaUS9uWWZBWWxLdGdNTnIvNDBBY3l2QWFrQUFBSC9qLzdkQU9vQTJ3QUhBQmNBc0FndnNnUUZDaXRZSWRnYjlGbXdBTkN3QUM4d01RTW5OamMzTXdjR0NXaDBIQnF4RlNUKzNVdVBqWmVINUFBQUFRQVpBaDhDRHdLMkFBTUFFUUN3QWkreUFRRUtLMWdoMkJ2MFdUQXhBU0UzSVFIMC9pVWJBZHNDSDVjQUFBRUFOZi95QVJVQTB3QUlBQ0t5QXdrS0VSSTVBTEFBUlZpd0JTOGJzUVVRUGxteUFBVUtLMWdoMkJ2MFdUQXhOellXRGdJbU5EYWtNVUFDUUdBK1B0SUJQbUk5QkR0aVFRQUFBZitQLzRNRGtnV3dBQU1BRXdDd0FDK3dBRVZZc0FJdkc3RUNIRDVaTURFWEl3RXpNNlFEWUtOOUJpMEFBQUlBYVAvbkJDc0Z5UUFSQUNFQVJySVhJaU1SRWptd0Z4Q3dDTkFBc0FCRldMQUpMeHV4Q1J3K1diQUFSVml3QUM4YnNRQVFQbG13Q1JDeUZnRUtLMWdoMkJ2MFdiQUFFTEllQVFvcldDSFlHL1JaTURFRkppWTNOamMzRWdBWEZoWUhCZ2NIQWdBVE5pY21KeVlHQndNR0Z4SVhGalkzQWRpNHVBZ0NDU1F3QVE3ZHVyY0hBd2tqTmY3MHRRNEJCY0NNclNJckRnRUZ2NFd0SlJRRS9lNUtTUE1CTndFeUJRVDM2MHRJNi82My90QURoWGxEL2djRjJlaiszblJKL3ZjSEJ0RGlBQUVBK1FBQUExUUZ0d0FHQURrQXNBQkZXTEFGTHh1eEJSdytXYkFBUlZpd0FDOGJzUUFRUGxteUJBQUZFUkk1c0FRdnNnTUJDaXRZSWRnYjlGbXlBZ01GRVJJNU1ERWhJeE1GTnlVekFseTIxdjU5SHdJY0lBVE1pTEREQUFBQkFCY0FBQVFyQmNjQUdRQlVzZ01hR3hFU09RQ3dBRVZZc0JFdkc3RVJIRDVac0FCRldMQUFMeHV4QUJBK1diSVpBUW9yV0NIWUcvUlpzQUxRc2dNUkdSRVNPYkFSRUxJSkFRb3JXQ0hZRy9SWnNCRVFzQXpRc2hjWkVSRVNPVEF4SVNFM0FUYzJOelltSnlZR0J3YytBaGNXRmdjR0J3Y0JJUU8yL0dFV0FobGlxUklOY0dhRHNCT3pEWXZqaGJYVkR4SE1YUDRzQXIrTkFncGhxWTl1aXdRRW9Zd0Joczl2QXdUVHFNRFVYZjVEQUFBQkFEVC82QVFoQmNjQUtBQi9zZ2dwS2hFU09RQ3dBRVZZc0E0dkc3RU9IRDVac0FCRldMQWFMeHV4R2hBK1diSUFHZzRSRWptd0FDK3l6d0FCWGJLZkFBRnhzaThBQVYyeVh3QUJjckFPRUxJSEFRb3JXQ0hZRy9SWnNBNFFzQXJRc0FBUXNpZ0JDaXRZSWRnYjlGbXlGQ2dBRVJJNXNCb1FzQjNRc0JvUXNpRUJDaXRZSWRnYjlGa3dNUUVYTWpZM05pWW5KZ1lIQnpZa0Z4WVdCd1lHQnhZV0J3WUVKeVltTnhjR0ZoY1dOamMySmljbkFhQjRoTFVORFhCcmNwOFNzeEVCRWIyMzBRNEpqSHhqWWdnUS91Zkp1OTRJdFFaNGNvQ3FEQXVDZ1lzRE1nR0xkM1NGQWdLSmRBRzA0UUlFM2JWbnFqZ29yWFRGOEFRRTRMRUJjSWtFQkpxQmQ0VUVBUUFBQWdBRkFBQUVIUVd3QUFvQURnQkpBTEFBUlZpd0NTOGJzUWtjUGxtd0FFVllzQVF2RzdFRUVENVpzZ0VKQkJFU09iQUJMN0lDQVFvcldDSFlHL1Jac0FiUXNBRVFzQXZRc2dnR0N4RVNPYklOQ1FRUkVqa3dNUUV6QnlNREl4TWhOd0V6QVNFVEJ3Tlp4QnZETzdZNy9Yd1ZBeURHL1BNQnNJSWRBZW1YL3E0QlVuY0Q1L3c1QXN3cUFBQUJBSEwvNXdScUJiQUFIUUJvc2hzZUh4RVNPUUN3QUVWWXNBRXZHN0VCSEQ1WnNBQkZXTEFOTHh1eERSQStXYkFCRUxJREFRb3JXQ0hZRy9SWnNnY0JEUkVTT2JBSEw3SWFBUW9yV0NIWUcvUlpzZ1VIR2hFU09iQU5FTEFSMExBTkVMSVVBUW9yV0NIWUcvUlpzQm9Rc0IzUU1ERVRFeUVISVFNMkZ4WVNCd1lBSnlZbUp6TVdGaGNXTmpjMkppY21CZ2ZidVFMV0cvM0djRzZBdGNJU0UvN28wYTdXQnFrSGVtaUFyeEFPZW5aSmNUZ0MzUUxUcS81eVFRSUMvdlBRNFA3d0JBTGN0M2lFQWdTK21vZXZCQUl3TFFBQUFnQncvK1lEK0FXeUFCWUFKZ0Jpc2hnbktCRVNPYkFZRUxBTzBBQ3dBRVZZc0FBdkc3RUFIRDVac0FCRldMQU9MeHV4RGhBK1diQUFFTElCQVFvcldDSFlHL1Jac2djQURoRVNPYkFITDdJRkJ3NFJFam15RndFS0sxZ2gyQnYwV2JBT0VMSWdBUW9yV0NIWUcvUlpNREVCQnlNR0JBYzJGeDRDQndZQUp5WW1KeVkzRWdBaEFTWUdEd0lVRmhZWEZqWTNOaVltQTdzUUk4ais1RTZJdG5Pa1RRd1UvdXZLb3RBUENDRkZBWmNCT3Y3R1lhb3VCd0l5WWtKNXJSRUtLbUVGc3AwRThPcUlCQUo3MllQZC91RUdCT2JCYWJNQmRRR0svWEFDZEZwRFVWS2FVQUVGdnB0YWxsY0FBQUVBblFBQUJJd0ZzQUFHQURJQXNBQkZXTEFGTHh1eEJSdytXYkFBUlZpd0FTOGJzUUVRUGxtd0JSQ3lBd0VLSzFnaDJCdjBXYklBQXdVUkVqa3dNUUVCSXdFaE55RUVldnpweGdNVC9RZ1lBN3dGUHZyQ0JSaVlBQU1BUWYvb0JEWUZ5QUFYQUNNQUx3QnZzaHN3TVJFU09iQWJFTEFVMExBYkVMQW8wQUN3QUVWWXNCVXZHN0VWSEQ1WnNBQkZXTEFKTHh1eENSQStXYkl0RlFrUkVqbXdMUyt5R3dFS0sxZ2gyQnYwV2JJRExSc1JFam15RHhzdEVSSTVzQWtRc2lFQkNpdFlJZGdiOUZtd0ZSQ3lKd0VLSzFnaDJCdjBXVEF4QVFZR0J4WVdCd1lFSnlZbU56WTJOeVltTnpZa0Z4WVdBVFltSnlZR0J3WVdGeFkyRXpZbUp5WUdCd1lXRnhZMkJDZ0ppWFplV3dnUC91TEt2ZHdQQzVxRlRrc0lEZ0VHdjY3TS91Z01lSEo4c0E0TWVXOStzR0lMYVdGd21nMExhMkZ0bXdROWJhODVOclZyd2VrRUJPS3ZmYnM2TnFSZXVlUUVCTnI4c0hHWEJBS2hmM1NNQWdTYkF5RmxpZ1FDazNSb2hnSUNrUUFDQUpULy9nUVRCY2dBR0FBb0FHV3lFaWtxRVJJNXNCSVFzQm5RQUxBQVJWaXdDeThic1FzY1BsbXdBRVZZc0JNdkc3RVRFRDVac2dNVEN4RVNPYkFETDdJQUF3c1JFam13RXhDeUZRRUtLMWdoMkJ2MFdiQURFTElaQVFvcldDSFlHL1Jac0FzUXNpRUJDaXRZSWRnYjlGa3dNUUVHQmljdUFqYytBaGNXRmhjV0J3SUFCU00zTXpZa0p4WTJQd0ltSmljbUJnY0dGaGNXQXpkS3BsSnpvMHNNRFlqYmhLN0dDQU1jUXY1Ny9zOHRFQ1hYQVJQV1c2ZzJDQU1FYTJSOHJ3NEhFaHMyQW9CT1RRSUNmdHlDa1BDREJBVDB6V3VmL29yK2hRYWNCT241Qkc5ZVNWR2JxQVFGeVpjOWZqQmgvLzhBSy8veUFhUUVSZ0FtQUJMMkFBRUhBQklBandOekFCQUFzQUJGV0xBSkx4dXhDUmcrV1RBeC8vLy9tLzdkQVkwRVJnQW5BQklBZUFOekFRWUFFQXdBQUJBQXNBQkZXTEFBTHh1eEFCZytXVEF4QUFFQVFRRElBN2dFVHdBR0FCWUFzQUJGV0xBRkx4dXhCUmcrV2JBQzBMQUNMekF4QVFVSEFUY0JCd0VIQWpVaC9TWWFBMTBrQW9EOXV3RjdrZ0Y2elFBQ0FIQUJqd1AvQTg4QUF3QUhBQ1VBc0FjdnNBUFFzQU12c2dBQkNpdFlJZGdiOUZtd0J4Q3lCQUVLSzFnaDJCdjBXVEF4QVNFM0lRTWhOeUVENHZ6V0hBTXJaZnpXSEFNckF5NmgvY0NnQUFFQU9nQy9BOVFFUndBR0FCWUFzQUJGV0xBQ0x4dXhBaGcrV2JBRjBMQUZMekF4QVFFM0FRY0JOd01OL2FvaEF2d2EvSUFrQW80QkE3YitoWkgraE1rQUFBSUFwZi95QTc4Rnh3QVlBQ1FBWGJJZUpTWVJFam13SGhDd0N0QUFzQUJGV0xBUUx4dXhFQncrV2JBQVJWaXdJaThic1NJUVBsbXlIQVVLSzFnaDJCdjBXYkFBMExBQUw3SUVFQUFSRWptd0VCQ3lDUUVLSzFnaDJCdjBXYkFRRUxBTTBMSVZBQkFSRWprd01RRTJOamMzTmpjMkppY21CZ2NITmpZWEZoWUhCZ2NIQmdjRE5qWTNOaFlIRkFZSEJpWUJRUTFnYkZGOUVBeFdXMmFERWJRVDliR291UTRSdTNwaUYvZ0JPakF1UFFFOEx5ODdBWmx6c0dCSGIzcGVkZ1FDY1ZrQnBjY0NCTXlsdHFob1daZit3Qzg5QWdFN0x5NDhBUUk2QUFJQVJQNDdCcHNGbWdBM0FFUUFoN0pDUlVZUkVqbXdRaEN3QzlBQXNDY3ZzREF2c0FCRldMQUZMeHV4QlJBK1diQUFSVml3QUM4YnNRQVFQbG15QXpBQUVSSTVzZ3d3QUJFU09iQU1MN0FBRUxJVEFnb3JXQ0hZRy9SWnNEQVFzaG9DQ2l0WUlkZ2I5Rm13SnhDeUlnSUtLMWdoMkJ2MFdiQUZFTEk2QWdvcldDSFlHL1Jac0F3UXNrRUNDaXRZSWRnYjlGa3dNUVVtSmljR0p5WW1OellTTmhjV0Z3TUdGUVlYRmhJVE5nSW1KeVlFQWdNR0VoWVhGamNYQmlNbUpBSTFKaElBSkJjV0JCSVZGQUlHQVFZWEZqOENFeVluSmdJSEJLOVpiUTJJajNSd0RBcVkzSUtMaFlVS0JXR1R0Z3NIYXVlcDNmNkc5UXdJYnVDaXFhb2JpK1cvL3VhYUFwOEJHd0ZweU1JQkY1T0QzZjFPQlhWclhTQUJoVFEzaThFaUZBSlpUYXdEQXJhY29RRlBzUUlEWnYzU1FodUhBd1lCVmdFT3RBRVNqQU1FL3Y0YS91bTEvdVNSQVFSU2RWY0Jwd0ZCMHRrQnd3RlhzUU1EcVA2K3pPSCtvTFVCUHFzREJaVTFDd0g2SEFFRi91anRBQUFDLzY4QUFBU0xCYkFBQndBS0FFWUFzQUJGV0xBRUx4dXhCQncrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0FZdkc3RUdFRDVac2drRUFoRVNPYkFKTDdJQUFRb3JXQ0hZRy9SWnNnb0VBaEVTT1RBeEFTRURJd0V6QVNNQklRTURqZjJ5eDhrREY2VUJJTG45d0FIZmVRRjgvb1FGc1BwUUFob0Nwd0FEQURzQUFBU2dCYkFBRFFBV0FCOEFhTElZSUNFUkVqbXdHQkN3RGRDd0dCQ3dFTkFBc0FCRldMQUNMeHV4QWh3K1diQUFSVml3QUM4YnNRQVFQbG15R0FJQUVSSTVzQmd2c2hZQkNpdFlJZGdiOUZteUJ4WVlFUkk1c0FBUXNoQUJDaXRZSWRnYjlGbXdBaEN5SGdFS0sxZ2gyQnYwV1RBeE14TUZNaFlIQmdjV0ZnY0dCQ01EQXdVeU5qYzJKaWNsQlRJMk56WW1KeVU3L1FHcjM5NE9FdlZpWVFrUC91TGp5RnNCS1lpNER3NXVkdjdVQVE5L3J3OE5iWDcrNGdXd0FjaXowV29tdUcvRjV3S3AvZlFCa254MmhBU2JBWUp5YW13RkFRQUJBSFQvNWdUNUJja0FId0JPc2hVZ0lSRVNPUUN3QUVWWXNBMHZHN0VOSEQ1WnNBQkZXTEFETHh1eEF4QStXYklBRFFNUkVqbXlFQU1ORVJJNXNBMFFzaFFCQ2l0WUlkZ2I5Rm13QXhDeUhBRUtLMWdoMkJ2MFdUQXhBUVlBSnk0Q0p5WTNOeElBQlJZU0Z5TUNKeWNtQWc4Q0JoWVhGalkzQkpFcS9ydmpoOHB3QmdRTEVTOEJid0VIemZBSHV3M2pJYjM5SlJZR0JvK05tTWMwQWREaS92Z0dBMy92a1ZKT2VBRklBWHNGQlA3LzVBRXlHQUlGL3QzOGwxaTQyUVFGbkswQUFnQTdBQUFFMVFXd0FBb0FGUUJEc2c0V0Z4RVNPYkFPRUxBQzBBQ3dBRVZZc0FJdkc3RUNIRDVac0FCRldMQUFMeHV4QUJBK1diSU5BUW9yV0NIWUcvUlpzQUlRc2hVQkNpdFlJZGdiOUZrd01UTVRCVElFRWdjSEFnQWhFd01YTWdBM05pY21KaWM3L1FGNnNnRUJjQmNLTFA1cS9zMFp4cm5VQVNjc0l3c1BzSlFGc0FHeS9zZkNTZjdDL29VRkV2dUxBUUVJNXJpQm02OEVBQUFCQURzQUFBU3hCYkFBQ3dCT0FMQUFSVml3Qmk4YnNRWWNQbG13QUVWWXNBUXZHN0VFRUQ1WnNnc0VCaEVTT2JBTEw3SUFBUW9yV0NIWUcvUlpzQVFRc2dJQkNpdFlJZGdiOUZtd0JoQ3lDQUVLSzFnaDJCdjBXVEF4QVNFRElRY2hFeUVISVFNaEE5RDluRm9DeUJ6OGZmMERlUno5UTFFQ1pBS2gvZnlkQmJDZS9pd0FBQUVBT3dBQUJLUUZzQUFKQUVBQXNBQkZXTEFFTHh1eEJCdytXYkFBUlZpd0FpOGJzUUlRUGxteUNRSUVFUkk1c0FrdnNnQUJDaXRZSWRnYjlGbXdCQkN5QmdFS0sxZ2gyQnYwV1RBeEFTRURJeE1oQnlFRElRTzMvYkJ3dlAwRGJCejlVRllDVVFLRC9YMEZzSjcrRGdBQkFIbi82Z1VHQmNjQUlRQmNzaDhpSXhFU09RQ3dBRVZZc0F3dkc3RU1IRDVac0FCRldMQURMeHV4QXhBK1diSVFEQU1SRWptd0RCQ3lFd0VLSzFnaDJCdjBXYkFERUxJYkFRb3JXQ0hZRy9SWnNpRU1BeEVTT2JBaEw3SWVBUW9yV0NIWUcvUlpNREVsQmdRbkxnSW5KaElTSkJjV0ZoY2pKaVluSmdJREJ3Y1VGaGNXTnhNaE55RUVlMG4rNmJPUDFub0pCMG0yQVJHd3kvRVJ1Z3VRZjd6OUtCTURvcExUZkR6K3VCd0NBTUJuYndJRGdPK1lkd0dXQVNpY0F3VHAwNHFVQkFmKzVQN3ZqRXpGMXdJRmJRRkhuQUFBQVFBN0FBQUZkd1d3QUFzQVZRQ3dBRVZZc0FZdkc3RUdIRDVac0FCRldMQUtMeHV4Q2h3K1diQUFSVml3QUM4YnNRQVFQbG13QUVWWXNBUXZHN0VFRUQ1WnNBQVFzQW5Rc0FrdnNwOEpBWEt5THdrQlhiSUNBUW9yV0NIWUcvUlpNREVoSXhNaEF5TVRNd01oRXpNRWVyeDEvVGwxdlAyOGJRTEdiYjBDb2YxZkJiRDlqZ0p5QUFFQVNRQUFBZ0VGc0FBREFCMEFzQUJGV0xBQ0x4dXhBaHcrV2JBQVJWaXdBQzhic1FBUVBsa3dNU0VqRXpNQkJMdjl1d1d3QUFFQUN2L21CRW9Gc0FBUEFDNEFzQUJGV0xBQUx4dXhBQncrV2JBQVJWaXdCUzhic1FVUVBsbXdDZEN3QlJDeURBRUtLMWdoMkJ2MFdUQXhBVE1EQmdRbkppWTNNd1lXRnhZMk53T092SzhkL3V6T3dOSU11d3R3Y0h1cUV3V3crL25POVFRRTRNUjRqd0lFb29FQUFRQTdBQUFGVUFXd0FBc0FkQUN3QUVWWXNBVXZHN0VGSEQ1WnNBQkZXTEFITHh1eEJ4dytXYkFBUlZpd0FpOGJzUUlRUGxtd0FFVllzQXN2RzdFTEVENVpzZ0FDQlJFU09VQVJTZ0JhQUdvQWVnQ0tBSm9BcWdDNkFBaGRzamtBQVYyeUJnVUNFUkk1UUJNMkJrWUdWZ1ptQm5ZR2hnYVdCcVlHdGdZSlhUQXhBUWNESXhNekF3RXpBUUVqQWlEVlZMejl2SHdDNXZMOVd3SEYwUUtqdi80Y0JiRDlPd0xGL1hUODNBQUFBUUE3QUFBRHNRV3dBQVVBS0FDd0FFVllzQVF2RzdFRUhENVpzQUJGV0xBQ0x4dXhBaEErV2JJQUFRb3JXQ0hZRy9SWk1ERWxJUWNoRXpNQkV3S2VIUHltL2IyZG5RV3dBQUFCQURzQUFBYTNCYkFBRGdCWkFMQUFSVml3QUM4YnNRQWNQbG13QUVWWXNBSXZHN0VDSEQ1WnNBQkZXTEFFTHh1eEJCQStXYkFBUlZpd0NDOGJzUWdRUGxtd0FFVllzQXd2RzdFTUVENVpzZ0VBQkJFU09iSUhBQVFSRWpteUNnQUVFUkk1TURFQkV3RXpBeU1URXdFakFRTURJeE1DSmY4Q25QZjl1MlIzL1d5US92eGFZYno5QmJEN1hnU2krbEFDUUFKSyszWUVvZjJNL2RNRnNBQUFBUUE3QUFBRmR3V3dBQWtBVExJQkNnc1JFamtBc0FCRldMQUZMeHV4QlJ3K1diQUFSVml3Q0M4YnNRZ2NQbG13QUVWWXNBQXZHN0VBRUQ1WnNBQkZXTEFETHh1eEF4QStXYklDQlFBUkVqbXlCd1VBRVJJNU1ERWhJd0VESXhNekFSTXpCSHEyL2ZqRXZmMjJBZ25GdXdScSs1WUZzUHVSQkc4QUFBSUFkLy9uQlEwRnlBQVNBQ0lBUnJJWEl5UVJFam13RnhDd0NkQUFzQUJGV0xBS0x4dXhDaHcrV2JBQVJWaXdBQzhic1FBUVBsbXdDaEN5RmdFS0sxZ2gyQnYwV2JBQUVMSWVBUW9yV0NIWUcvUlpNREVGTGdJbkpoSVNOellYRmhJWEZnSUNCd1lCTmlZbkpnWUNCd2NHRmhjV0VoTTJBbEdMelhZR0JrS2lkSjNKMWZZSkJET0RaYkFCRGdhV2xJYlRoeElEQnBpUnZma3BGQlFEZ1BtYmVRRmtBUjVXZEFRRS91SDFhZjY4L3VwZXBBT1h4ZGtFQkpqKzBlaEJ4TjRFQlFFYkFRQitBQUFDQURzQUFBVHpCYkFBQ2dBVEFFMnlDaFFWRVJJNXNBb1FzQXpRQUxBQVJWaXdBeThic1FNY1BsbXdBRVZZc0FFdkc3RUJFRDVac2dzREFSRVNPYkFMTDdJQUFRb3JXQ0hZRy9SWnNBTVFzaElCQ2l0WUlkZ2I5Rmt3TVFFREl4TUZNaFlIQmdRakpRVXlOamMySmljbEFWcGp2UDBCNXVIMEVSTCsxL1Ard1FGRW1jUVJFSWFBL3FjQ092M0dCYkFCNzhiUjhKNEJtb2w3bVFRQkFBSUFiLzhLQlFRRnlBQVhBQ2dBUnJJY0tTb1JFam13SEJDd0JOQUFzQUJGV0xBUEx4dXhEeHcrV2JBQVJWaXdCUzhic1FVUVBsbXdEeEN5R3dFS0sxZ2gyQnYwV2JBRkVMSWtBUW9yV0NIWUcvUlpNREVsRndjbkJpTXVBaWNtRWhJM05oY2VBaGNXQndjQ0F6WW1KeVlHQWdjSEJoWVdGeFlTTnpZRGk5bUwva3BLaWRCekJnWkJubkNnem8zUWNnWURDZ3crYVFlWWtvYlRoeElEQkQ2SFlyajdLaFZNMFhIekVBR0Q5NXgrQVYwQkdWWjZCQU9DOTV4VVUxWCtVUUo5eU5ZRUJKaiswZWhCYzhob0F3Y0JHUDkvQUFBQ0FEb0FBQVRDQmJBQURnQVhBR0d5QlJnWkVSSTVzQVVRc0JiUUFMQUFSVml3QkM4YnNRUWNQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFOTHh1eERSQStXYklRQkFJUkVqbXdFQyt5QUFFS0sxZ2gyQnYwV2JJTEFBUVJFam13QkJDeUZnRUtLMWdoMkJ2MFdUQXhBU0VESXhNRkZoWUhCZ1lIRXdjakFRVXlOamMySmljbEFxMytzR2E5L1FHMjVmQVRDN0dUNGdISS9mOEJGSkRHRVErQ2hmN2RBazM5c3dXd0FRSG14b25RTmYyWkRRTHFBWm1BZlk0RUFRQUJBQ2YvNlFTakJjY0FLQUJoc2hNcEtoRVNPUUN3QUVWWXNBb3ZHN0VLSEQ1WnNBQkZXTEFmTHh1eEh4QStXYklDSHdvUkVqbXdDaEN3RDlDd0NoQ3lFZ0VLSzFnaDJCdjBXYkFDRUxJWUFRb3JXQ0hZRy9SWnNCOFFzQ1RRc0I4UXNpWUJDaXRZSWRnYjlGa3dNUUUyTHdJa056NENGeDRDQnljMkppY21CZ2NHSHdJRUF3NENKeTRDTnhjR0ZnUTJBMjBXdkswNi90d1RDcEx4aUlUUGJBYTlDb3lDaWJnT0ZNdVZTd0VhRlF1UTk0Nko0M1lIdkFtZkFTSzhBWGVnU2o4WmhmRjV1bVVEQTNESmZnR0drd0lDaEhLVlRUVWdndjhBZTdOaUF3Rnp5SDhCZ3BrRWdnQUJBS2dBQUFVSkJiQUFCd0F1QUxBQVJWaXdCaThic1FZY1BsbXdBRVZZc0FJdkc3RUNFRDVac0FZUXNnQUJDaXRZSWRnYjlGbXdCTkF3TVFFaEF5TVRJVGNoQk8zK08rRzc0ZjQ3SEFSRkJSTDY3Z1VTbmdBQUFRQm4vK2NGSUFXd0FCSUFQTElQRXhRUkVqa0FzQUJGV0xBS0x4dXhDaHcrV2JBQVJWaXdFaThic1JJY1BsbXdBRVZZc0FRdkc3RUVFRDVac2c0QkNpdFlJZGdiOUZrd01RRURCZ0FuTGdJM0V6TURCaFlYRmpZM0V3VWdxQ0wrdk9XUDAyUVJxTG1uRVlxTW1ORWJxQVd3L0Nmai92TUVBM3ZmamdQYS9DV1pyd1FHc2FBRDNBQUFBUUNrQUFBRllRV3dBQVlBT0xJQUJ3Z1JFamtBc0FCRldMQUJMeHV4QVJ3K1diQUFSVml3QlM4YnNRVWNQbG13QUVWWXNBTXZHN0VERUQ1WnNnQUJBeEVTT1RBeEFRRXpBU01CTXdJK0FrL1UvUkNtL3RuRkFRRUVyL3BRQmJBQUFRRERBQUFIUVFXd0FCSUFXUUN3QUVWWXNBTXZHN0VESEQ1WnNBQkZXTEFJTHh1eENCdytXYkFBUlZpd0VTOGJzUkVjUGxtd0FFVllzQW92RzdFS0VENVpzQUJGV0xBUEx4dXhEeEErV2JJQkF3b1JFam15QmdNS0VSSTVzZzBEQ2hFU09UQXhBUWMzQVRNVEZ6Y0JNd0VqQXljSEFTTURNd0crQkVRQnM1OXpDajhCZE1IOXhxdCtCQ3IrTUt0eXR3SEJzS3dEOC93QXBza0QzZnBRQkMxa2RQdmpCYkFBQWYvVUFBQUZLd1d3QUFzQWF3Q3dBRVZZc0FFdkc3RUJIRDVac0FCRldMQUtMeHV4Q2h3K1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBY3ZHN0VIRUQ1WnNnQUJCQkVTT1VBSmhnQ1dBS1lBdGdBRVhiSUdBUVFSRWpsQUNZa0dtUWFwQnJrR0JGMnlBd0FHRVJJNXNna0dBQkVTT1RBeEFRRXpBUUVqQVFFakFRRXpBcG9CcWVqOXlRRlQwLzcrL2tyb0FrUCt0dEFEZ3dJdC9TWDlLd0kzL2NrQzV3TEpBQUFCQUtnQUFBVXlCYkFBQ0FBeEFMQUFSVml3QVM4YnNRRWNQbG13QUVWWXNBY3ZHN0VISEQ1WnNBQkZXTEFFTHh1eEJCQStXYklBQVFRUkVqa3dNUUVCTXdFREl4TUJNd0pqQWUvZy9YTmR1MkQrdTh3QzFnTGEvR1g5NndJcUE0WUFBQUgvNndBQUJNNEZzQUFKQUVRQXNBQkZXTEFITHh1eEJ4dytXYkFBUlZpd0FpOGJzUUlRUGxteUFBRUtLMWdoMkJ2MFdiSUVBQUlSRWptd0J4Q3lCUUVLSzFnaDJCdjBXYklKQlFjUkVqa3dNVGNoQnlFM0FTRTNJUWZxQXlJYysvc2JBOGI5REJ3RDJocWRuWm9FZUo2WEFBSC8vLzdJQXFNR2dBQUhBQ0lBc0FRdnNBY3ZzZ0FCQ2l0WUlkZ2I5Rm13QkJDeUF3RUtLMWdoMkJ2MFdUQXhBU01CTXdjaEFTRUNpcm4rKzdvWS9wRUJOQUZ3QmVqNWVKZ0h1QUFCQUwvL2d3S2VCYkFBQXdBVEFMQUNMN0FBUlZpd0FDOGJzUUFjUGxrd01STXpBU08vcEFFN293V3crZE1BQWY5Ni9zZ0NId2FBQUFjQUpRQ3dBaSt3QVMrd0FoQ3lCUUVLSzFnaDJCdjBXYkFCRUxJR0FRb3JXQ0hZRy9SWk1ERVRJUUVoTnpNQkk2OEJjUDdML3BBWXV3RUZ2QWFBK0VpWUJvZ0FBUUJQQXRrRER3V3dBQVlBSjdJQUJ3Z1JFamtBc0FCRldMQURMeHV4QXh3K1diQUEwTElCQndNUkVqbXdBUyt3QmRBd01RRUJJd0V6RXlNQ0RQNzBzUUdoZktPZUJMbitJQUxYL1NrQUFmK0IvMmtERmdBQUFBTUFHd0N3QUVWWXNBTXZHN0VERUQ1WnNnQUJDaXRZSWRnYjlGa3dNUVVoTnlFQysveUdHd042bDVjQUFRRFBCTmdDS3dYK0FBTUFJd0N3QVMreUR3RUJYYkFBMEJtd0FDOFlzQUVRc0FMUXNBSXZ0QThDSHdJQ1hUQXhBU01ETXdJcmo4M05CTmdCSmdBQ0FEUC82QVBQQkZFQUlBQXJBSG15QkN3dEVSSTVzQVFRc0NMUUFMQUFSVml3R0M4YnNSZ1lQbG13QUVWWXNBVXZHN0VGRUQ1WnNBQkZXTEFBTHh1eEFCQStXYklER0FVUkVqbXlDeGdGRVJJNXNBc3ZzQmdRc2hBQkNpdFlJZGdiOUZteUV3c1lFUkk1c0FVUXNpRUJDaXRZSWRnYjlGbXdDeEN5SmdFS0sxZ2gyQnYwV1RBeElTWTFOd1luSmlZM05pUXpGemMySmljbUJnY0hQZ0lYRmhZSEF3Y0dGd2NsRmpZM055Y2lCZ2NHRmdLMUJ3T1ZwNCt6Q0FvQkdlVzlEQXBmWDEyUEVMWUpnc3h0cWJ3UFdBVUNEZ0wrTEZlYk9DZUpxN1lNQ1ZrZEhEbUtCQUt4aGF6QkFWWmhjUUlDWDA0Qlg1TlJBZ1RGby8zb1RUYzJFWXdDVjAzZkFXeGpUR1VBQWdBZi8rZ0QvZ1lBQUJJQUhnQmtzaHdmSUJFU09iQWNFTEFFMEFDd0NTK3dBRVZZc0Ewdkc3RU5HRDVac0FCRldMQUVMeHV4QkJBK1diQUFSVml3Qnk4YnNRY1FQbG15QmcwRUVSSTVzZ3NOQkJFU09iQU5FTElXQVFvcldDSFlHL1Jac0FRUXNoc0JDaXRZSWRnYjlGa3dNUUVHQWdZbkppY0hJd0V6QXpZWEZoWVhGZ2NuTmlZbkpnY0RGaGNXTmpZRDlSU095bnZFWHlXbkFRdTFiWUs2bks0RkFRZXVBMmhycVhWUlBLVnFuMUlDR0tiKzlvQURCSTkrQmdEOXdwQUVCTjdEUUR4VWtwc0VCSzcrS2FVRUJJYnhBQUVBUnYvcEErWUVVZ0FnQUV1eUFDRWlFUkk1QUxBQVJWaXdFUzhic1JFWVBsbXdBRVZZc0Fndkc3RUlFRDVac2dBQkNpdFlJZGdiOUZteUJCRUlFUkk1c2hRUkNCRVNPYkFSRUxJWUFRb3JXQ0hZRy9SWk1ERWxGalkzTnc0Q0p5NENOemMrQWhjV0ZoVW5KaVluSmdZSEJ3WVhGaFlCNkdHY0dLc1BoY3BxaDd0WURnVVRrT2lNcXN5cEFuSmhqYnNYQXdZRUIzYUNBblZmQVdhb1hnTUNpZldaTXB6MmlRUUUzS2tCYW9NRUE5akNHa0JFZFlnQUFBSUFTLy9vQkhVR0FBQVJBQjBBWkxJRUhoOFJFam13QkJDd0d0QUFzQWN2c0FCRldMQUVMeHV4QkJnK1diQUFSVml3RFM4YnNRMFFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNnWUVEUkVTT2JJTEJBMFJFam13RFJDeUZRRUtLMWdoMkJ2MFdiQUVFTElhQVFvcldDSFlHL1JaTURFVE5oSTJGeFlYRXpNQkl6Y0dKeVltSnlZWEJoWVhGamNUSmljbUJnWlRGSTdRZmJWaGFMWCs5cVVUZ0x5V3NnY0R0Z05zYUoxNlZqeWVhNk5WQWgrbEFRcUVBd1NBQWpYNkFIU01CQVRqdnpzV2o1NENCNlVCOUpRRUE0ZnpBQUlBUmYvcUErQUVVUUFYQUI4QWFiSVNJQ0VSRWptd0VoQ3dHZEFBc0FCRldMQUlMeHV4Q0JnK1diQUFSVml3QUM4YnNRQVFQbG15SEFnQUVSSTVzQnd2dEw4Y3p4d0NYYklPQVFvcldDSFlHL1Jac0FBUXNoSUJDaXRZSWRnYjlGbXlGQWdBRVJJNXNBZ1FzaGdCQ2l0WUlkZ2I5Rmt3TVFVbUFqYzNOaEkyRnhZV0Z4WUhCeUVHRmhjV054Y0dCZ01tQmdjRk56WW1BZlBLNUJJRkVaM2lnNmUrQ1FNSEMvMDlFb1dFb0lob1JOY1JjS2N4QWc0RUVIRVVCQUVpNGl1aEFRcUhBd1RXdDBGQlU1UE9CQVNVV0dKdkE4MERucHdCRUg2bkFBRUFkQUFBQTFBR0dRQVdBR095QmhjWUVSSTVBTEFBUlZpd0NTOGJzUWtlUGxtd0FFVllzQU12RzdFREdENVpzQUJGV0xBU0x4dXhFaGcrV2JBQVJWaXdBQzhic1FBUVBsbXdBeEN5QVFFS0sxZ2gyQnYwV2JBSkVMSU9BUW9yV0NIWUcvUlpzQUVRc0JUUXNCWFFNREV6RXlNM016YzJOellYTWhjSEppY2lCZ2NITXdjakEzZWtweG1tRWhwa2FhTXpUaFl3TVY1MURoRGdHZUNqQTZ1UGdLTmNZQUlSbHdvQ2RXRnJqL3hWQUFBQ0FBVCtUd1FvQkZJQUhRQXBBSU95Q3lvckVSSTVzQXNRc0NiUUFMQUFSVml3QkM4YnNRUVlQbG13QUVWWXNBY3ZHN0VIR0Q1WnNBQkZXTEFNTHh1eERCSStXYkFBUlZpd0dDOGJzUmdRUGxteUJnUVlFUkk1c2hBWURCRVNPYkFNRUxJU0FRb3JXQ0hZRy9SWnNoWUVHQkVTT2JBWUVMSWhBUW9yV0NIWUcvUlpzQVFRc2lZQkNpdFlJZGdiOUZrd01STTJFallYRmhjM013TUdCQ2NtSmljM0ZoY1dOamMzQmljdUFpY21Gd1lXRnhZM0V5WW5KZ1lIVkJpUHpYcThZQ1NtdEIzKzZzeHV5VHBuWXFHQnN4MFVoTEZsbFZJRUFyY0RhV3FpZFZVOG5aTzlFUUlmc1FFRmZRTUVpbm43M2MvNUJnSmtWMitSQkFTWWpHQ0VCQU5udzNnN0ZJK2RCQVNqQWZHVUJnVDQwd0FCQUI4QUFBUGpCZ0FBRWdCSnNnRVRGQkVTT1FDd0VpK3dBRVZZc0FJdkc3RUNHRDVac0FCRldMQVBMeHV4RHhBK1diQUFSVml3Qnk4YnNRY1FQbG15QUFJUEVSSTVzQUlRc2d3QkNpdFlJZGdiOUZrd01RRTJGeFlXQndNakV6WW5KaWNtQndNakFUTUJjWTY1bUpNVGRyVjNCZ1VSbEtaNGhyVUJDN1VEdHBzRUFzMjUvVHNDeURFcWpBTUVzdno4QmdBQUFnQXZBQUFCNHdYSEFBTUFEUUF4QUxBQVJWaXdBaThic1FJWVBsbXdBRVZZc0FFdkc3RUJFRDVac0FJUXNBclFzQW92c2dRRkNpdFlJZGdiOUZrd01UTWpFek1ETmhZVkRnSW1OamJqdEx5MEp5NDlBVHRlUEFJNkJEb0Jpd0k3TUM4OEJEcGVQZ0FDL3hUK1JnSFZCY2NBREFBWUFEd0FzQUJGV0xBTUx4dXhEQmcrV2JBQVJWaXdCQzhic1FRU1BsbXlDUUVLSzFnaDJCdjBXYkFNRUxBWDBMQVhMN0lRQlFvcldDSFlHL1JaTURFQkF3WUdKeVluTnhZWE1qY1RFelkyTnpZV0ZRWUdCd1ltQVpiTkZLV0ZOVUlRSlM2QkdzOGZBVGt3TGowQlBDOHRQQVE2KzBXWm9BSUNFcFFKQXBvRXV3RWNMejRDQWowdUx6d0NBandBQVFBZ0FBQUVHZ1lBQUF3QWRRQ3dBRVZZc0FRdkc3RUVIajVac0FCRldMQUlMeHV4Q0JnK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnQUlBaEVTT1VBVk9nQktBRm9BYWdCNkFJb0FtZ0NxQUxvQXlnQUtYYklHQ0FJUkVqbEFGVFlHUmdaV0JtWUdkZ2FHQnBZR3BnYTJCc1lHQ2wwd01RRUhBeU1CTXdNM0FUTUJBU01CbzQ1QXRRRUx0YUJ2QVlEci9nOEJWc1lCODMvK2pBWUEvR3B3QVdEK00vMlRBQUVBTHdBQUFlNEdBQUFEQUIwQXNBQkZXTEFDTHh1eEFoNCtXYkFBUlZpd0FDOGJzUUFRUGxrd01UTWpBVFBqdEFFS3RRWUFBQUVBSGdBQUJtb0VVZ0FnQUhleUZpRWlFUkk1QUxBQVJWaXdBeThic1FNWVBsbXdBRVZZc0Fndkc3RUlHRDVac0FCRldMQUFMeHV4QUJnK1diQUFSVml3Rnk4YnNSY1FQbG13QUVWWXNBMHZHN0VORUQ1WnNBQkZXTEFlTHh1eEhoQStXYklCSGdNUkVqbXlCZ01YRVJJNXNBTVFzaHNCQ2l0WUlkZ2I5Rm13RXRBd01RRUhOaGNXRmhjMkZ4WVdCd01qRXpZbkppY21CZ2NESXhNMkppY21Cd01qRXdHRUY0akJaNDhibU0raW1oUjN0SFlHQmhPZlk2RVhlN1o0RFYxaXFXU0p0YndFTzNtUUJBSmFVcklFQk5LeC9Ua0N5VFFyaUFNQ2YyZjlNUUxJYjNnQ0JKNzg2UVE2QUFBQkFCOEFBQVBqQkZJQUVnQlRzZ0lURkJFU09RQ3dBRVZZc0FNdkc3RURHRDVac0FCRldMQUFMeHV4QUJnK1diQUFSVml3RUM4YnNSQVFQbG13QUVWWXNBZ3ZHN0VJRUQ1WnNnRURFQkVTT2JBREVMSU5BUW9yV0NIWUcvUlpNREVCQnpZWEZoWUhBeU1UTmljbUp5WUhBeU1UQVlZYWtycVpraE4ydFhjR0JSR1VvM3VHdGJ3RU80bWdCQVRNdWYwN0FzZ3hLb3dEQTdIOC9BUTZBQUlBUmYvb0JCOEVVZ0FRQUNJQVE3SVhJeVFSRWptd0Z4Q3dDTkFBc0FCRldMQUFMeHV4QUJnK1diQUFSVml3Q1M4YnNRa1FQbG15RmdFS0sxZ2gyQnYwV2JBQUVMSWZBUW9yV0NIWUcvUlpNREVCSGdJSEJ3NENKeTRDTnpZU05nTUdGeFlXRnhZMk5qYzJKeVltSnlZR0J3SjRpTUpkRHdJVGx1Nk9oOE5hRFErWTcrQUhCd3A1WlZxWWFBOElCUXg2Wll6RUZ3Uk9BcEQ5bGhhZS80NEVBcEQ0bGFnQkRKUDl1RDlFZG93REExL0FkVncvZVl3RUErSzNBQUFDLzlmK1lBUDhCRklBRWdBZUFHZXlCQjhnRVJJNXNBUVFzQjNRQUxBQVJWaXdEUzhic1EwWVBsbXdBRVZZc0Fvdkc3RUtHRDVac0FCRldMQUhMeHV4QnhJK1diQUFSVml3QkM4YnNRUVFQbG15Q3cwSEVSSTVzQTBRc2hjQkNpdFlJZGdiOUZtd0JCQ3lIQUVLSzFnaDJCdjBXVEF4QVFZQ0JpY21Kd01qQVRjSE5oY1dGaGNXQnlNM05DWW5KZ2NERmhjV05nUHpGSXJNZkx4a1liVUJCS1FVaHJ1Y3JnVUJCclVGYjJtZGNsczlub2U5QWhpbC92aURBd1I3L2ZZRjJnRjVrQVFFM3NOQVBGU1Ntd1FFbWYzNWtBUUQyUUFDQUVuK1lBUW9CRklBRUFBY0FHaXlBQjBlRVJJNXNCclFBTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQU12RzdFREdENVpzQUJGV0xBRkx4dXhCUkkrV2JBQVJWaXdDUzhic1FrUVBsbXlBZ0FKRVJJNXNnY0FDUkVTT2JJVkFRb3JXQ0hZRy9SWnNBQVFzaG9CQ2l0WUlkZ2I5Rmt3TVFFV0Z6Y3pBU01UQmljbUppY21FalkyQXdjR0ZoY1dOeE1tSnlZR0FrbTNZQ0duL3Z5MFlvS3NtTFlIQmthTHZzOEZBMjlvbVhaZVFwYUp2QVJQQkg5dStpWUNCSHdFQXVMQWZBRVR6V2I5dUZTUm9RSUVsZ0lVaXdRRDJBQUFBUUFmQUFBQzFBUlVBQXdBUnJJRERRNFJFamtBc0FCRldMQUtMeHV4Q2hnK1diQUFSVml3Qnk4YnNRY1lQbG13QUVWWXNBUXZHN0VFRUQ1WnNBb1FzZ0VPQ2l0WUlkZ2I5Rm15Q0FvQkVSSTVNREVCSnlJSEF5TVROd2MyRnpJWEFzQlZybVNGdGJ5dkczT2NJVFVEbFFtZC9QOEVPZ0YrbHdRUEFBRUFMdi9wQTdZRVVBQW1BR095Rmljb0VSSTVBTEFBUlZpd0NDOGJzUWdZUGxtd0FFVllzQjB2RzdFZEVENVpzZ01kQ0JFU09iSUxDQjBSRWptd0NCQ3lEd0VLSzFnaDJCdjBXYkFERUxJVkFRb3JXQ0hZRy9SWnNpQUlIUkVTT2JBZEVMSWtBUW9yV0NIWUcvUlpNREVCTmljbkpqYzJOaGNXRmdjbk5pWW5KZ2NHQndZWEZ4WVdCdzRDSnlZbU54Y1VGak1XTmdLOUQ0cTg3Z2dIOTZla3pRUzBBbXBZWGtRL0NnMkFXN3FjQmdaNHlIR3M0QVMxZEdWamtBRWxjQzQzVXI2UHR3SUN1NVlCVVdZQ0FqQXRTVjRyR1RDYWNtV1dUd01DeFpzQlcyNENWd0FBQVFCRC8rMENsQVZBQUJZQVg3SVdGeGdSRWprQXNBQkZXTEFCTHh1eEFSZytXYkFBUlZpd0ZDOGJzUlFZUGxtd0FFVllzQTR2RzdFT0VENVpzQUVRc0FEUXNBQXZzQUVRc2dNQkNpdFlJZGdiOUZtd0RoQ3lDUUVLSzFnaDJCdjBXYkFERUxBUzBMQVQwREF4QVFNekJ5TURCaGNXTXpJM0J3WWpKaVkzRXlNM014TUIvUzdGR2NSeEF3SUhUaUUzRGtGRGJHd01icjhadnk0RlFQNzZqLzFmR2haT0NwY1NBcHVEQXA2UEFRWUFBQUVBVy8vb0JCNEVPZ0FUQUV5eUFSUVZFUkk1QUxBQVJWaXdCaThic1FZWVBsbXdBRVZZc0JBdkc3RVFHRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3RXk4YnNSTVFQbG13QWhDeURRRUtLMWdoMkJ2MFdUQXhKUVluSmlZM0V6TURCaGNXRmhjV054TXpBeU1Dem4vRW01VVRkTFYxQlFNRlRFVENhb2kxdkt0cmd3UUUxcmtDdS8xQ0xDcElVZ01Hb3dNVSs4WUFBUUJ1QUFBRDdRUTZBQVlBT0xJQUJ3Z1JFamtBc0FCRldMQUJMeHV4QVJnK1diQUFSVml3QlM4YnNRVVlQbG13QUVWWXNBTXZHN0VERUQ1WnNnQUZBeEVTT1RBeEpRRXpBU01ETXdHb0FZYS8vZCtLMUxMOUF6Mzd4Z1E2QUFFQWdBQUFCZjRFT2dBTUFHQ3lCUTBPRVJJNUFMQUFSVml3QVM4YnNRRVlQbG13QUVWWXNBZ3ZHN0VJR0Q1WnNBQkZXTEFMTHh1eEN4ZytXYkFBUlZpd0F5OGJzUU1RUGxtd0FFVllzQVl2RzdFR0VENVpzZ0FMQXhFU09iSUZDd01SRWpteUNnc0RFUkk1TURFQkFUTUJJd01CSXdNekV3RXpBK29CV2J2K0U1TncvbnFUZGExQ0FZQ1NBUUFET3Z2R0F6TDh6Z1E2L05vREpnQUFBZi9FQUFBRDlBUTZBQXNBVXdDd0FFVllzQUV2RzdFQkdENVpzQUJGV0xBS0x4dXhDaGcrV2JBQVJWaXdCQzhic1FRUVBsbXdBRVZZc0Fjdkc3RUhFRDVac2dBS0JCRVNPYklHQ2dRUkVqbXlBd0FHRVJJNXNna0dBQkVTT1RBeEFRRXpBUUVqQXdFakFRRXpBZkFCSnQ3K1RnRUl4YlArejkwQnYvOEF4Z0t3QVlyOTRQM21BWlQrYkFJc0FnNEFBZitsL2tVRDdBUTZBQThBUDdJQUVCRVJFamtBc0FCRldMQVBMeHV4RHhnK1diQUFSVml3QlM4YnNRVVNQbG15QUFVUEVSSTVzQThRc0FIUXNBVVFzZ2tCQ2l0WUlkZ2I5Rmt3TVFFQk13RUNKeVluTnhjV05qYzNBek1Cb3dHQnlQMStodElsU0JBdlZuMHdRYnU5QVJFREtmc1MvdmtEQVJHV0JRUlZYM3dFSXdBQUFmL3RBQUFEemdRNkFBa0FSQUN3QUVWWXNBY3ZHN0VIR0Q1WnNBQkZXTEFDTHh1eEFoQStXYklBQVFvcldDSFlHL1Jac2dRQUFoRVNPYkFIRUxJRkFRb3JXQ0hZRy9SWnNna0ZCeEVTT1RBeE55RUhJVGNCSVRjaEIrb0NZQnY4dmhrQ3hmM0xIQU1jR0plWGtRTVFtWXdBQVFBNC9wTURGUVkvQUIwQUxySU1IaDhSRWprQXNBQXZzQTR2c2drQURoRVNPWHl3Q1M4WXNnZ0RDaXRZSWRnYjlGbXlGQWdKRVJJNU1ERUJKaVkzTnpZbkppYzNOamMzRWlVWEJnTUhCZ2NXRnhZUEFoY1dGd0hlbnBRVEhBWUZFWk1RMlNBZk93RmZHOVF0SWlHeVp3b0RCQjhDQWhHRy9wTTE3NnpQTVNxSUNKRUs2K1FCVTJWMVJ2NzE4TWhlVFk0c0svTkhINTgxQUFFQUlmN3lBY0VGc0FBREFCTUFzQUF2c0FCRldMQUNMeHV4QWh3K1dUQXhFeU1CTTdPU0FRNlMvdklHdmdBQi80eitrQUpxQmpzQUhBQXVzaGtkSGhFU09RQ3dEaSt3SEMreUZod09FUkk1ZkxBV0x4aXlGd01LSzFnaDJCdjBXYklGRnhZUkVqa3dNUWMyRXpjMk55WW5KajhDSmljM0ZoWUhCd1lYRmhjSEJnY0hBZ1YwMlNzZkg4TnhEUVFGSHdJRGxTMmNrQk1iQmdVUWt3L2FJQnd6L3BiN1J3RVI0dEJkUlpNcUxmWkh1RHB4TmUrcjBESXBod2lSQ3U3UC9wNW9BQUFCQUdrQmpnVGRBeWNBRndBNHNoRVlHUkVTT1FDd0R5K3dBTkN3RHhDd0ZOQ3dGQyt5QXdFS0sxZ2gyQnYwV2JBUEVMSUlBUW9yV0NIWUcvUlpzQU1Rc0F6UU1ERUJCZ1luSmljbkppTW1Ed0kyTmhjV0Z4Y1dNekkyTndUZERzT01mbnM4U0VLSUxBaWNFTU9OZDJ4WlJEOUxhUklEQ3FQWkFnTndPa01EcHlVRG90RUVBMTFUUFc1bUFBTC84ZjZZQWFFRVR3QURBQTRBSkFDd0F5K3dBRVZZc0F3dkc3RU1HRDVac2djRkNpdFlJZGdiOUZtd0FkQ3dBUzh3TVJNekF5TUJGQVlHSmpVMk5qYzJGck9scWI0QnJ6cGdPd0U3THk0OUFxejc3QVZQTHo0RVBpMHdPd0lCT2dBQUFRQlMvd3NEOHdVbUFDSUFVcklISXlRUkVqa0FzQUJGV0xBU0x4dXhFaGcrV2JBQVJWaXdCeThic1FjUVBsbXlBQU1LSzFnaDJCdjBXYkFIRUxBRDBMQUhFTEFLMExBU0VMQVYwTEFaMExBVkVMSWNBd29yV0NIWUcvUlpNREVsRmpZM053WUdCd2NqTnlZbUp5WVNOalkzTnpNSEZoWVZJelFtSnlZQ0J3Y0dGZ0hwWVowYnJCWFJvQzYxTDNlUkRnd3NlYnAzTGJVdGc1T3FjR0dZeGc0QkEzU0NBbk5oQVlhOUh1bnNIcnlOYndFTDBvVVY0dUVneTVWcWhBUUcvd0RrS282ZEFBQUIvL01BQUFTSkJjb0FId0Jyc2hFZ0lSRVNPUUN3QUVWWXNCSXZHN0VTSEQ1WnNBQkZXTEFGTHh1eEJSQStXYklkRWdVUkVqbXdIUyt5QUFFS0sxZ2gyQnYwV2JBRkVMSURBUW9yV0NIWUcvUlpzQWpRc0FBUXNBdlFzQjBRc0EzUXNoVVNCUkVTT2JBU0VMSVpBUW9yV0NIWUcvUlpNREVCQndZSEpRY2hOeGMyTnpjak56TTNOaVFYRmhZSEp6WW1KeVlHQndjaEJ3RzRIQlJZQXNzZC9CVWRRM0VkRzZBYm5COFpBUmJBcU1BSXV3ZGlaVzZhRUNBQk5oc0NidFNaWndPZG5BSXAzYzZkL2N6MkJnVFJzUUZxZWdRRXBJSDduUUFBQWdBUy8rVUZqUVR4QUIwQUxRQS9zaXN1THhFU09iQXJFTEFRMEFDd0FFVllzQUl2RzdFQ0VENVpzQkhRc0JFdnNBSVFzaUlCQ2l0WUlkZ2I5Rm13RVJDeUtnRUtLMWdoMkJ2MFdUQXhKUVluSmljSEp6Y21KeVlTTnljM0Z6WVhGaGMzRndjV0Z4WUNCeGNIQVFZV0ZoY1dOalkzTmlZbUp5WUdCZ1BrdTc3SGlKMXRueDRLRTFsb2RZMXlzN2E4aWE5dnJTQU1FbEZqYzQvODRnOUtuMngxMTVFUURrbWViSGJZa0c2R0JBUitpSkNHVlZlV0FTRjFuWCtVZWdRQ2Q1aVNrMWRaa1A3bWVKWi9Bbkp5MEhzRUJIN2VlM1BPZVFRRWZ0d0FBUUJUQUFBRkpBV3dBQllBYXdDd0FFVllzQll2RzdFV0hENVpzQUJGV0xBQkx4dXhBUncrV2JBQVJWaXdEQzhic1F3UVBsbXlEeE1ESzdJQURCWVJFam0wRHhNZkV3SmRzQk1Rc0FQUXNCTVFzaElDQ2l0WUlkZ2I5Rm13QnRDd0R4Q3dCOUN3RHhDeURnSUtLMWdoMkJ2MFdiQUswREF4QVFFekFTRUhJUWNoQnlFREl4TWhOeUUzSVRjaEFUTUNiZ0hWNGYzdUFTa1cvb3dkQVhVVy9vdzV2RGora1JZQmJoMytrUllCTnY3bnl3TVBBcUg5TUgybGZQNitBVUo4cFgwQzBBQUFBdi8zL3ZJQjJRV3dBQU1BQndBWUFMQUFMN0FBUlZpd0JpOGJzUVljUGxteUJRRURLekF4QXhNekF4TWpFek1KaXJhS3FMYUV0djd5QXhmODZRUElBdllBQXYvZC9nNEVvUVhHQURFQVB3QnpBTEFITDdBQVJWaXdJaThic1NJY1BsbXlGUWNpRVJJNXNCVVFzam9CQ2l0WUlkZ2I5Rm15QWhVNkVSSTVzQWNRc0F2UXNBY1FzZzhCQ2l0WUlkZ2I5Rm15TGlJSEVSSTVzQzRRc2pNQkNpdFlJZGdiOUZteUd6TXVFUkk1c0NJUXNDYlFzQ0lRc2lrQkNpdFlJZGdiOUZrd01RRUdCeFlIQmdRbkppWTNOd1lXRmhjV05qWTNOaVlrSnlZM05qY21OelkyTnpZWEZoWUhJelltSnlZR0J3WVdCQmNFSlNjR0J3WVhGZ1FYTmpjMkppY0VQeExUWncwTy91RGUyZklMdFFZL2dsaFRsRndKREd2KzYxRHlGQTdTWXcwSWhuZDdqYy9oRExRSWhIeUh0dzhMWUFFUFJ3RU4vaFNhcHhZT1N6SUJBa0d1Rmd0ZmR3RzN2MkJucWE3TUFnVG14d0ZWZmtVQkFqWmpSVTF2V1NaejdMaG5hcVpzclM4d0FnVGx4bjZXQkFKMWFWRnRWQjkwQnpRdmwyUTlLVkVaTkpOSmNDb0FBZ0RiQk80RFVnWEhBQXNBRndBZEFMQUpMN0lEQlFvcldDSFlHL1Jac0EvUXNBa1FzQlhRc0JVdk1ERVROalkzTmhZSEZBWUhCaVlsTmpZM05oWUhGQVlIQmliYkFUb3ZMejBCUEM4dk93R2hBVG92TUR3QlBDOHVQUVZaTGowQ0FUc3ZMandDQVRvdExqNENBVHN3THpzQ0FUb0FBQU1BWXYvcUJlMEZ5QUFiQUNrQU9nQ0NBTEFBUlZpd0xpOGJzUzRjUGxtd0FFVllzRGN2RzdFM0VENVpzZ00zTGhFU09iQURMN1FQQXg4REFsMnlDaTQzRVJJNXNBb3Z0QUFLRUFvQ1hiSU9DZ01SRWpteUVRSUtLMWdoMkJ2MFdiQURFTElaQWdvcldDSFlHL1Jac2hzRENoRVNPYkEzRUxJZkJBb3JXQ0hZRy9SWnNDNFFzaVlFQ2l0WUlkZ2I5Rmt3TVFFR0JpY21KamMzTmpZWEZoWUhKelltSnlZR0JoY1hGaFlYRmpjRkZnQVhGaVFTSnlZQUp5WUVBZ2MyRWlRWEZnUVNCd1lDQkNjakppUUNCRVVPdXBXUm9BNEtGTStkanBzR2p3WkZXbDkvSFFFQ0IwOUVxaVA5TFJZQkJMNjdBVTIzRkJiL0FNRzkvck8yV3hia0FWN0NzZ0VjamhVWDVQNm92QXEzL3VpT0FsV1hwd1FFMktkaXZkc0NCS09VQVZWaUFnS1IveDRqVFZvREI3OGF6Lzc1QWdUZkFYMit6UUVDQlFUZy9vZ214d0ZreXdRQ3hQNmx4TXYrbnNnQkJNUUJXd0FBQWdEREFyTURUZ1hIQUIwQUp3QmdBTEFBUlZpd0ZpOGJzUlljUGxteUF5Z1dFUkk1c0FNdnNBRFFzQUF2c2drREZoRVNPYkFKTDdBV0VMSVBBd29yV0NIWUcvUlpzaElKRmhFU09YeXdFaThZc0FNUXNoNERDaXRZSWRnYjlGbXdDUkN5SVFRS0sxZ2gyQnYwV1RBeEFTY0dJeUltTnpZMk14YzNOaWNtSnlZR0J5YzJOaGNXRmdjREJ3WVhKVEkzTnlNR0JnY0dGZ0oyQkZ4eWFYZ0VCYnFuYndrREFnZFZPRmNQbkF1d2czdUZDallFQVFqK3UwdGJIRjFZYUFnRk5nSy9TbFo3WVhOOEFUWWJHRThEQVRFNEMyMS9BZ1NWZlA2bE9pMHVla1NQQTBBM0t5NEEvLzhBV1FDWEE0NERzd0FtQVhyNi9nQUhBWG9CT3YvK0FBRUFnUUYzQThVRElBQUZBQm9Bc0FRdnNBSFFzQUV2c0FRUXNnSUJDaXRZSWRnYjlGa3dNUUVqRXlFM0lRTjd0aS85alIwREp3RjNBUWloQUFRQVlmL21CZTBGeUFBUEFCOEFPUUJDQUlRQXNBQkZXTEFFTHh1eEJCdytXYkFBUlZpd0RDOGJzUXdRUGxteUZBUUtLMWdoMkJ2MFdiQUVFTEljQkFvcldDSFlHL1Jac2lFTUJCRVNPYkFoTDdJakJBd1JFam13SXkrMEFDTVFJd0pkc2pvaEl4RVNPYkE2TDdJZ0Fnb3JXQ0hZRy9SWnNpb2dPaEVTT2JBaEVMQXkwTEF5TDdBakVMSkNBZ29yV0NIWUcvUlpNREVUTmhJa0Z4WUVFZ2NHQWdRbkppUUNOeDRDRnhZa0VpY3VBaWNtQkFJRkF5TVRCUllXQndZR0J4WVhCd1lYRndjakpqOENOaVluSnhjMk5qYzJKaWNqZGhia0FWN0Nyd0Via3hZWDV2Nmx3TFArNkpPRURJSE5mcnNCU3JvVERvSExmcm4rdHIwQnZUV0toUUVCaTVVSEEwUlJUUWtCQ3dJREFvb0dBZ2NHQnpCRWxJOUlaUWtLUVZtTUF0TEhBV1RMQkFLLy9xWEp6UDZkeWdRRXZ3RmVMb1BjZGdNRTNBRjh3NFhZZEFNRTF2NkRiLzZ1QTFFQkJZRnlPbUF1TEdFOVZ4OUFFU1VrU0RaQ1JRU0JBUUpGT2o4K0F3QUJBT01GSVFPd0JiQUFBd0FSQUxBQkw3SUNBd29yV0NIWUcvUlpNREVCSVRjaEE1bjlTaGNDdGdVaGp3QUFBZ0RvQTcwQzJBWEhBQXNBRndBdkFMQUFSVml3QXk4YnNRTWNQbG13RDlDd0R5K3lDUUlLSzFnaDJCdjBXYkFERUxJVkFnb3JXQ0hZRy9SWk1ERVROallYRmhZSEJnWW5KaVkzQmhZek1qWTNOaVlqSWdic0JLRm5ZWDhDQko5bVlvTjlCajB4TmxVR0JqZzBObGNFdDIraEFnS1ZaWENjQWdLUlp6RkpVRGd3VDFVQUFnQWxBQUFEL3dUekFBc0FEd0JHQUxBSkw3QUFSVml3RFM4YnNRMFFQbG13Q1JDd0FOQ3dDUkN5QmdFS0sxZ2gyQnYwV2JBRDBMQU5FTElPQVFvcldDSFlHL1Jac2dVT0JoRVNPYlFMQlJzRkFsMHdNUUVoQnlFREl4TWhOeUVUTXhNaE55RUNuZ0ZoR1A2Z1FhUkIvb29aQVhWQm8zSDgxUmdES3dOV2wvNWlBWjZYQVozN0RaZ0FBUUJjQXBzQzVnVy9BQmNBVGdDd0FFVllzQTh2RzdFUEhENVpzQUJGV0xBQUx4dXhBQlErV2JJWEFnb3JXQ0hZRy9SWnNBTFFzZ01YRHhFU09iQVBFTElJQWdvcldDSFlHL1Jac2dzUEFCRVNPYklVRnc4UkVqa3dNUUVoTndFMk56WW1KeVlHQndjMk5oY1dGZ2NHRHdJaEFxTDl1aFFCWTJNTUJ6VXdRbEFPbWd1dWdIaUxCUWlYUU1RQmV3S2JkQUVxVkVvd05nRUJTejRCZFpVQ0FuNW1lMzB6a1FBQUFRQnVBbzBDNndXOEFDUUFjUUN3QUVWWXNBMHZHN0VOSEQ1WnNBQkZXTEFYTHh1eEZ4UStXYklBRncwUkVqbDhzQUF2R0xiUUFPQUE4QUFEWGJBTkVMSUhBZ29yV0NIWUcvUlpzZ2tBRFJFU09iQUFFTElqQkFvcldDSFlHL1Jac2hJakFCRVNPYkliRncwUkVqbXdGeEN5SGdJS0sxZ2gyQnYwV1RBeEFSYzJOamMySmlNaUJ5TTJOak1XRmdjR0J4WUhCZ1luSmlZMU14UVdNekkyTnpZbkp3RlhUa0pkQndZK01uQWRuQXVmZlg2T0JRZVlkZ1FGdFlWM2xaZENPa0JiQncyTlZ3UmxBUUk5TmpFeFhXVjVBM1poZDBJcmdXK0JBZ0o4YkRJM1FEVm1CUUVBQUFFQTFRVFlBcVVGL2dBREFDTUFzQUl2c2c4Q0FWMndBTkN3QUMrMER3QWZBQUpkc0FJUXNBUFFHYkFETHhnd01RRXpBU01CditiK3pwNEYvdjdhQUFBQi8rWCtZQVFsQkRvQUV3QlpzZzBVRlJFU09RQ3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQUlMeHV4Q0JnK1diQUFSVml3RVM4YnNSRVNQbG13QUVWWXNBNHZHN0VPRUQ1WnNBQkZXTEFMTHh1eEN4QStXYkFPRUxJRkFRb3JXQ0hZRy9SWk1ERUJBd1lYRmhjV054TXpBeU0zQmljaUp3TWpBUUdlWndvRENwSzNZWXUydktJVGI2S0hVRm0wQVFRRU92MlFWRHEzQXdhZEF5SDd4bk9LQWt2K0tnWGFBQUFCQUhzQUFBUEdCYkVBQ3dBa3NnQU1EUkVTT1FDd0FFVllzQW92RzdFS0hENVpzQUJGV0xBQUx4dXhBQkErV1RBeElSTW5KaVkzUGdJekJRTUNGRnRBMCtFVURwVHdrQUVWL0FJSUFRUC95WTdhZFFINlVBQUFBUUNsQW1nQmhRTk1BQXNBRHdDd0F5K3hDUW9yV05nYjNGa3dNUk0yTmpjMkZoVUdCZ2NHSnFVQlBUSXdRQUZBTVMxQkF0WXhRUUlDUGpJeFB3SUNPd0FBQWYvSS9rc0JFd0FBQUEwQU9RQ3dBRVZZc0FZdkc3RUdFajVac0FCRldMQU5MeHV4RFJBK1diSUJEUVlSRWptd0JoQ3lCd1lLSzFnaDJCdjBXYklNQmdFUkVqa3dNVE1IRmdjR0JnYzNOamMySnljM3B4V0JCQU91bGdTbUVBeG9MaTQzSFlabWNnTnNCbVZIREFhRkFBRUEzd0tpQW5BRnR3QUdBRUN5QVFjSUVSSTVBTEFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQUF2RzdFQUZENVpzZ1FBQlJFU09iQUVMN0lEQWdvcldDSFlHL1Jac2dJREJSRVNPVEF4QVNNVEJ6Y2xNd0h0bW1qY0dBRmtGUUtpQWxVNGgzRUFBQUlBd0FLdEEzc0Z5UUFOQUJzQU13Q3dBRVZZc0FBdkc3RUFIRDVac2djY0FCRVNPYkFITDdJUkF3b3JXQ0hZRy9SWnNBQVFzaGdEQ2l0WUlkZ2I5Rmt3TVFFV0ZnY0hCZ1luSmlZM056WTJBd1lXRnhZMk56YzJKaWNtQmdjQ1RZMmhEUWNSMFphT29RMEhFZE5MQ2toTlQzQVBDUWhLU0ZKd0RnWEZCTVdaUjZiSkJBVElsa2FveVA1SVlITUNBM0pvVVdadEFnSjBaUC8vQUE4QW1BTldBN1VBSmdGN0RRQUFCd0Y3QVY4QUFQLy9BTGtBQUFVekJhMEFKd0hWQUU0Q21BQW5BWHdCRVFBSUFRY0IyQUxBQUFBQUVBQ3dBRVZZc0FVdkc3RUZIRDVaTURILy93QzBBQUFGZVFXdEFDY0JmQURtQUFnQUp3SFZBRWtDbUFFSEFkWURCZ0FBQUJBQXNBQkZXTEFKTHh1eENSdytXVEF4Ly84QW5nQUFCWXdGdlFBbkFYd0JqQUFJQUNjQjJBTVpBQUFCQndIWEFLTUNtd0FRQUxBQVJWaXdJQzhic1NBY1Bsa3dNUUFDLzlQK2VnTDJCRThBR0FBa0FFWUFzQkF2c0FCRldMQWlMeHV4SWhnK1diSWNCUW9yV0NIWUcvUlpzQURRc0FBdnNnTVFBQkVTT2JBUUVMSUpBUW9yV0NIWUcvUlpzQkFRc0F6UXNoWUFFQkVTT1RBeEFRWUdCd2NHQndZV0Z4WTJOemNHQmljbUpqYzJOemMyTnhNVUJnY0dKalUyTmpjMkZnSklERk5wWVhjTkRWNWRZb1VTdEJQMHNhMitEdysvZEZzWjlqc3ZNRHNCUEM0dVBRS3BiYUZrVzNOelluUUNBbkZlQWFmTEJBVEtwcmV2WmxXVkFVQXZQZ0lDUGkwdk93SUJPUUFDLzRRQUFBZDRCYkFBRHdBU0FIY0FzQUJGV0xBR0x4dXhCaHcrV2JBQVJWaXdBQzhic1FBUVBsbXdBRVZZc0FRdkc3RUVFRDVac2hFR0FCRVNPYkFSTDdJQ0FRb3JXQ0hZRy9SWnNBWVFzZ2dCQ2l0WUlkZ2I5Rm15Q3dBR0VSSTVzQXN2c2d3QkNpdFlJZGdiOUZtd0FCQ3lEZ0VLSzFnaDJCdjBXYklTQmdBUkVqa3dNU0VoRXlFQkl3RWhCeUVESVFjaEF5RUJJUk1HdC95bkwvM2svdnZvQkZJRG9odjlZajhDUGh2OXlVY0NyZnNlQWJSZ0FXSCtud1d3bVA0cGwvM3RBWGdDMGdBQUFRQW9BTTRFQWdSakFBc0FPQUN3QXkreUNRd0RFUkk1c0FrdnNnb0pBeEVTT2JJRUF3a1JFam15QVFvRUVSSTVzQU1Rc0FYUXNnY0VDaEVTT2JBSkVMQUwwREF4RXdFQk53RUJGd0VCQndFQktBRjcvdnVBQVFZQmVXWCtpQUVHZ1A3NS9vVUJVZ0ZQQVZCeS9ySUJUb1Arc1A2d2NnRlEvckFBQUFNQUlQK2tCWndGNndBWkFDTUFMUUJtc2d3dUx4RVNPYkFNRUxBZzBMQU1FTEFwMEFDd0FFVllzQTB2RzdFTkhENVpzQUJGV0xBQUx4dXhBQkErV2JJY0RRQVJFam15SmcwQUVSSTVzQ1lRc0IzUXNBMFFzaDhCQ2l0WUlkZ2I5Rm13SEJDd0o5Q3dBQkN5S1FFS0sxZ2gyQnYwV1RBeEJTWW5CeU0zSmpjMkVoSTJOaGNXRnpjekF4WVhGZ0lDQndZQkZoY0JKaWNtQWdjR0FUWW5BUllYRmhJVE5nSk9wblY4bDcxcUJRRXhkN0xpZjg2Qmc1YlFNUW9PVnVLZmNQNWdBaDhDeGsyY3R2d3NJZ01wQkF2OVRVcHl2LzBvRmhVRVVKdm9xK1poQVN3QkE3bGhBd1I2cGY4QWRIcXAva1Qrd1VJdkFmOXNVd09NYUFVRi91ejB3QUZIVGs3OGlqb0VCUUVtQVE2VEFBQUNBRGdBQUFSaUJiQUFEUUFXQUZxeUVCY1lFUkk1c0JBUXNBblFBTEFBUlZpd0FDOGJzUUFjUGxtd0FFVllzQXN2RzdFTEVENVpzZ0VBQ3hFU09iQUJMN0lLQ3dBUkVqbXdDaSt3QVJDeURnRUtLMWdoMkJ2MFdiQUtFTElQQVFvcldDSFlHL1JaTURFQkF4Y1dGZ2NPQWlNbEF5TVRFd01GTWpZM05pWW5BZXN6N3REc0R3dU43cEgrNlRlMi9XbGZBUUdMd2hFT2dYWUZzUDdiQVFIanZJTEZhd0greHdXdy9rUDkzZ0daZjNpT0JBQUJBQjcvNXdRWkJoVUFMQUJic2lBdExoRVNPUUN3QUVWWXNBWXZHN0VHSGo1WnNBQkZXTEFVTHh1eEZCQStXYkFBUlZpd0FDOGJzUUFRUGxteUN3WVVFUkk1c0JRUXNoa0JDaXRZSWRnYjlGbXlIeFFHRVJJNXNBWVFzaWtCQ2l0WUlkZ2I5Rmt3TVRNakV6NENGeFlXQndZR0J3WWVBZ2NHQmljbUp6Y1dGekkyTnpZdUFqYytBemMySmljbUJnZlR0YjRTZHJwNW42NE5DYUlNQ1RhU09nTUs2SzJ5Y2p0cWNXV0xDd2Mza3owR0JUaEJPUWdLVEZGcGlCVUVWNGJPYWdJRXNwUmY5RXczYkpSeFBLUzdCQUpKbVVzQ1kxWTVhNVozUHp0aFcxODZVbXdFQTVlUkFBQURBQlAvNkFaaEJGSUFMQUEzQUVFQXg3SUNRa01SRWptd0FoQ3dNZEN3QWhDd085QUFzQUJGV0xBY0x4dXhIQmcrV2JBQVJWaXdBQzhic1FBUVBsbXdBRVZZc0FVdkc3RUZFRDVac2dNY0FCRVNPYklMSEFBUkVqbXdDeSswdnd2UEN3SmRzQndRc2pnQkNpdFlJZGdiOUZtd0VOQ3lFd3NjRVJJNXNCd1FzQmZRc2hvY0FCRVNPYkk4SEFBUkVqbXdQQyswdnp6UFBBSmRzaUVCQ2l0WUlkZ2I5Rm13QUJDeUp3RUtLMWdoMkJ2MFdiSXFIQUFSRWptd0JSQ3lMUUVLSzFnaDJCdjBXYkFMRUxJeUFRb3JXQ0hZRy9SWk1ERUZKaVluQmlVbUpqYzJOak1YTnpZbUp5WUdCeWMyTmhjV0ZoYzJGeDRDQndjaEJoY1dGaGNXTmpjWEJpVVdOamMzSnlJR0J3WVdBU1lHQnlFM05pY21KZ1J3ZWJrenFmN3NrcWtLQ3Y3WjRnd01WbHBva0ErekVQeTZiYU1pb3NKL3Jrb1JFdjFDQ1FrTmdXaGFuVW8xaXZ3VlJwOUNLOHQ0cGd3SldnTzdicW8xQWdvR0NRY0xaaFFDWFZXNEJBS3RqYUMwQVZab2VRUUNhMVlUbDdBQ0FsZE5xUVFDZnQyS2RrUkFhMzBCQWp3dmlYaVZBa2s1N2dGeFcwcFhBelVEblo0Z056SlFYQUFBQWdCYy8rZ0VWQVlyQUJ3QUtBQlFzaFlwS2hFU09iQVdFTEFtMEFDd0RpK3dBRVZZc0Jndkc3RVlIajVac0FCRldMQUhMeHV4QnhBK1diSVFEZ2NSRWptd0RoQ3lId0VLSzFnaDJCdjBXYkFIRUxJbEFRb3JXQ0hZRy9SWk1ERUJFZ01IQmdJR0p5WUNOejRDRnhZWEppY0hKemNtSnpjV0Z6Y1hBeVluSmdZSEJoWVhGalkzQTU2eE1nMFluZUdDdk9BVERvcmVoSnB2Qkdydk84OW1za2JjbHRFNjV6aXFrTVFURDRCd2Y3WWZCUlArMmY2Tlc2Zis5b1VEQkFFVHlaRHppQVFFYjdhWmxHeCtWalNkT0lpQ2JmMDNmZ1VFeTZtTHV3TUYyOEFBQUFNQVJBQ3BCQzRFdlFBREFBNEFHUUE3QUxBQ0w3SUJEZ29yV0NIWUcvUlpzQUlRc1EwS0sxallHOXhac1FjS0sxallHOXhac0FFUXNSSUtLMWpZRzl4WnNSZ0tLMWpZRzl4Wk1ERUJJVGNoQVRRMk56WVdGUTRDSmdNMk5qYzJGaFVPQWlZRUR2dzJJUVBKL2VnOU1qQkFBVDlpUG8wQlBUSXdRQUZBWWowQ1dMZ0JOekZCQWdJK01qRStCRHo5QURGQkFnSStNakUrQkQwQUFBTUFPZjk2QkNvRXVBQVpBQ0VBS3dCbXNnd3NMUkVTT2JBTUVMQWYwTEFNRUxBbzBBQ3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQU5MeHV4RFJBK1diSWNBQTBSRWpteUpBQU5FUkk1c0NRUXNCM1FzQUFRc2g4QkNpdFlJZGdiOUZtd0hCQ3dKZEN3RFJDeUp3RUtLMWdoMkJ2MFdUQXhBUllYTnhjSEZoY1dCd1lDQmljbUp3Y25OeVluSmpjM0VnQURCaGNCSmljbUFpVW1Kd0VXRnhZMk56WUNmbWRiWm9TUWJnY0NDQk9mOEk1WlhXYUVqWFlIQWdZQ0pBRTJzQW96QWNzM1FKM1JBbGNESC80NE1qbU15UjhOQkZBQ0s1VUJ6NExHTjFhYy92bUlBZ0lqbFFITmZNMDlQQkFCQndFei9XdUVXd0s2SFFJRS91MFRTa1g5VEJjQ0E5eTdYd0FBQXYvZy9tQUVCQVlBQUJFQUhRQmRzZ1FlSHhFU09iQUVFTEFjMEFDd0NTK3dBRVZZc0Ewdkc3RU5HRDVac0FCRldMQUhMeHV4QnhJK1diQUFSVml3QkM4YnNRUVFQbG15Q3cwSEVSSTVzQTBRc2hZQkNpdFlJZGdiOUZtd0JCQ3lHd0VLSzFnaDJCdjBXVEF4QVFZQ0JpY21Kd01qQVRNRE5oY1dGaGNXQnpjMEppY21Cd01XRnhZMkEvd1VqTXQ4dW1WaHRRRlR0R3FEdFo2dEF3RzZCWEJvb0hCYVBaMkp2UUlZcHY3MmdRTUVmUDMyQjZEOXlZa0VCT1M5UFQ1VWtad0NCSmo5K1k4RkE5c0FBZ0ExQUFBRndRV3dBQk1BRndCckFMQUFSVml3RHk4YnNROGNQbG13QUVWWXNBZ3ZHN0VJRUQ1WnNoUUlEeEVTT2JBVUw3SVFGQThSRWptd0VDK3dBTkN3RUJDeUZ3RUtLMWdoMkJ2MFdiQUQwTEFJRUxBRjBMQVVFTElIQVFvcldDSFlHL1Jac0JjUXNBclFzQkFRc0EzUXNBOFFzQkxRTURFQk13Y2pBeU1USVFNakV5TTNNeE16QXlFVE13RWhOeUVGUG9NWmdySzhkZjA2ZGIyeWdobUNNcjB6QXNZenZQd1JBc1VqL1RvRWpvNzhBQUtoL1Y4RUFJNEJJdjdlQVNMOWpzSUFBUUF1QUFBQm53UTZBQU1BSFFDd0FFVllzQUl2RzdFQ0dENVpzQUJGV0xBQkx4dXhBUkErV1RBeE15TVRNK08xdkxVRU9nQUFBUUF0QUFBRVZ3UTZBQXdBYUFDd0FFVllzQVF2RzdFRUdENVpzQUJGV0xBSUx4dXhDQmcrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0Fzdkc3RUxFRDVac0FJUXNBYlFzQVl2c3A4R0FWMjB2d2JQQmdKZHNpOEdBVjJ5L3dZQlhiSUJBUW9yV0NIWUcvUlpzZ29CQmhFU09UQXhBU01ESXhNekF6TUJNd0VCSXdHaGJsQzJ2TFpSVUFIUjZQM2xBWFRVQWMzK013UTYvallCeXYzcS9kd0FBUUFpQUFBRHNBV3dBQTBBV3dDd0FFVllzQXd2RzdFTUhENVpzQUJGV0xBR0x4dXhCaEErV2JJQkRBWVJFam13QVMrd0FOQ3dBUkN5QWdFS0sxZ2gyQnYwV2JBRDBMQUdFTElFQVFvcldDSFlHL1Jac0FNUXNBalFzQW5Rc0FBUXNBdlFzQXJRTURFQkpRY0ZBeUVISVJNSE56Y1RNd0dLQVE0WS92TmhBcDRjL0taeWloaUpkTDBEVDFPRVUvM1NuUUtOS1lRcEFwOEFBQUVBSXdBQUFqWUdBQUFMQUVvQXNBQkZXTEFLTHh1eENoNCtXYkFBUlZpd0JDOGJzUVFRUGxteUFRUUtFUkk1c0FFdnNBRFFzQUVRc2dJQkNpdFlJZGdiOUZtd0E5Q3dCdEN3QjlDd0FCQ3dDZEN3Q05Bd01RRTNCd2NESXhNSE56Y1RNd0dScFJpamdiWjFsaGVWZ0xVRGFqeURQZjBhQXA0Mmd6Y0MzZ0FBQVFBMS9rVUZZUVd3QUJNQVdySUdGQlVSRWprQXNBQkZXTEFBTHh1eEFCdytXYkFBUlZpd0VDOGJzUkFjUGxtd0FFVllzQVF2RzdFRUVqNVpzQUJGV0xBT0x4dXhEaEErV2JBRUVMSUpBUW9yV0NIWUcvUlpzZzBPRUJFU09iSVNEZ0FSRWprd01RRUJCZ1luSWljM0ZqTXlOemNCQXlNVE13RVRCV0grK1JuQmx6VkRIamdwaENVUi9nekd1L3kxQWZqRkJiRDUvYXk4QkJTWkViMWVCSEw3amdXdys1QUVjQUFCQUNUK1J3UHlCRklBR3dCYUFMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNBTXZHN0VER0Q1WnNBQkZXTEFLTHh1eENoSStXYkFBUlZpd0dTOGJzUmtRUGxteUFSa0RFUkk1c0FvUXNnOEJDaXRZSWRnYjlGbXdBeEN5RmdFS0sxZ2gyQnYwV1RBeEFRYzJGeFlXQndNR0JpY2lKemNXTXpJM0V6WW5KaWNtQndNakV3R0JGb3kvbzVrVmZSYS9salZESHpVdWpDQjhCZ01PcEo5eGpyYThCRHVic2dRRTQ3MzgvYWE2QWhTY0VNVUMrVFl3b0FVRWlmelRCRG9BQWdCVS8rMEhaUVhIQUJZQUpBQ1JzaFVsSmhFU09iQVZFTEFhMEFDd0FFVllzQXN2RzdFTEhENVpzQUJGV0xBTkx4dXhEUncrV2JBQVJWaXdBQzhic1FBUVBsbXdBRVZZc0FNdkc3RURFRDVac0EwUXNnOEJDaXRZSWRnYjlGbXlFZzBBRVJJNXNCSXZzaE1CQ2l0WUlkZ2I5Rm13QUJDeUZRRUtLMWdoMkJ2MFdiQURFTElYQVFvcldDSFlHL1Jac0FzUXNod0JDaXRZSWRnYjlGa3dNU0VoQndjbUpnSTNFeElBSHdJaEJ5RURJUWNoQXlFRkZqY1RKaU1tQmdjREJoY1dGZ1p5L05UWlJaamJZUlV2S3dGWjgwclRBemtjL1VOUkFtUWMvWjFhQXNqN29FeUswV3hmcit3aEx3b0hDbzRTQVFTZUFSS2ZBU3NCRWdGS0FnSVRudjRzbmYzOEdBTU5CSkFSQXZQVS90Uk9Ub09YQUFNQVIvL21CdUlFVXdBaUFETUFQUUNoc2hrK1B4RVNPYkFaRUxBdDBMQVpFTEEzMEFDd0FFVllzQVV2RzdFRkdENVpzQUJGV0xBQUx4dXhBQmcrV2JBQVJWaXdHeThic1JzUVBsbXdBRVZZc0JZdkc3RVdFRDVac2dNRkZoRVNPYkk0QlJZUkVqbXdPQyt5Q2dFS0sxZ2gyQnYwV2JBV0VMSVFBUW9yV0NIWUcvUlpzaElGRmhFU09iSVpCUllSRWptd0d4Q3lLQUVLSzFnaDJCdjBXYkFGRUxJd0FRb3JXQ0hZRy9SWnNEVFFNREVCRmhZWE5oY2VBZ2NISVFZWEZoWVhGamNYQmdZbkppWW5CaWN1QWpjM0VnQURCaGNXRmhjV05qOENOQ1luSmdZSEFTWUdCd1UzTmljbUpnSitlYjRyc3RsOXNFb1JFLzFNQ0FZS2RXQ3NrRDFFeUhOOHZTeXI5SVc4VlJBQ0pBRXRuUWNFQlhObGlNTWFBZ1Z6Yll6QkZ3UlNaYVUzQWY0RkNBY05ad1JPQW5SajNRTUNmdHlJZWoxQWJJRURCbTkvUVVJQ0FuRmYyUVlDanZtVkVBRUZBVFQ5dHo1RWRZOERCZHk3RmxlUHBBUUY1N1VCbHdPYWx3RWNOVEZQV3dBQkFETUFBQU1LQmhvQURRQXJBTEFBUlZpd0JDOGJzUVFlUGxtd0FFVllzQTB2RzdFTkVENVpzQVFRc2drQkNpdFlJZGdiOUZrd01UTVROallYTWhjSEppY2lCZ2NETThzV3hwNHZZeUVzTEZkMUVjMEVxNnZFQWhhUERBSnZadnRVQUFJQVVmL3BCU29GeGdBYUFDUUFVUUN3QUVWWXNCSXZHN0VTSEQ1WnNBQkZXTEFBTHh1eEFCQStXYklGQUJJUkVqbXdCUyt3RWhDeURBRUtLMWdoMkJ2MFdiQUFFTEliQVFvcldDSFlHL1Jac0FVUXNoOEJDaXRZSWRnYjlGa3dNUVVtSmdJM053VTNOaWNtSmljbUJ5YzJOaGNXQkJJSEJ3WUNCQ2NXTmpjRkJ3WVhGaFlDVDY3dFl4b1VBOUFERlFrUHZaaW15aU5FMUlHNEFRRnhHZzRmenY3Zm5hWDdSL3pvQnc4S0VLUVVBcWdCTDc1OEF3eGpZSnk1QXdOV2tTODJBd0t6L3I3R1k4ait1S3FnQmZYeUFTTlpVSUdSQUFIL1NmNUdBeThHR2dBZEFIR3lFaDRmRVJJNUFMQUFSVml3RkM4YnNSUWVQbG13QUVWWXNBOHZHN0VQR0Q1WnNBQkZXTEFjTHh1eEhCZytXYkFBUlZpd0JTOGJzUVVTUGxtd0hCQ3lBQUVLSzFnaDJCdjBXYkFGRUxJS0FRb3JXQ0hZRy9SWnNBQVFzQTNRc0E3UXNCUVFzaGtCQ2l0WUlkZ2I5Rmt3TVFFakF3WUdKeVluTnhZek1qY1RJemN6TnpZMkZ6SVhCeVlqSWdjSE13S0R4SjBVdTVjMVBodzFLb2dnbmFZV3BnNFZ4cGd6WEIwM0tMUWREY1VEcS92OHA3b0NBaE9TRU00RC9vOXhyOEFDRlpVTTNXTUFBZ0JuLytrR0d3WTNBQmdBS0FCT0FMQUFSVml3Q2k4YnNRb2NQbG13QUVWWXNBQXZHN0VBRUQ1WnNnd0FDaEVTT2JBTUw3SVNBZ29yV0NIWUcvUlpzQW9Rc2h3QkNpdFlJZGdiOUZtd0FCQ3lKQUVLSzFnaDJCdjBXVEF4QlM0Q0p5WTNOaElrRnhZWE5qWTNOd0lGRmhjV0FnSUVBVFltSnlZQ0F3WUhCaFlYRmhJM05nSkFpOUJ6QmdVYklzVUJGYWZsaG1SekU2RWovdVFhQlFaTnVmN3dBVlFHbFpXKy9pWVRBUWFXbE1UOEloSVVBNFAxbkcybnp3RkJvQU1FbVFxRmdBSCt0a0pwYVpqK2NmN1hvQU9XeE5nRUJmN1ovdjUvU0wvakJBVUJMLzZEQUFBQ0FFTC81d1QvQkxBQUZnQWxBRTRBc0FCRldMQUFMeHV4QUJnK1diQUFSVml3RHk4YnNROFFQbG15QWc4QUVSSTVzQUl2c2drQ0NpdFlJZGdiOUZtd0R4Q3lHZ0VLSzFnaDJCdjBXYkFBRUxJaUFRb3JXQ0hZRy9SWk1ERUJGaGMyTmpjekJnWUhGaGNXQWdRbkxnSTNOellBQXhRV0Z4WTJOelluSmlZbkpnWUdBb0xFZVV0U0U1QVFlWFlTQkFxTy92U2xpTDlZRUFNaUFUU29lRzZOeVJzSEJBbDJabTZ1V3dSUEJJa09ZMzJVcENCTFM4ZitxYjBFQkk3NGxSWCtBVGI5WUl5aEJBWGp5VDlGZVkwRUJJLzRBQUVBWi8vb0Jwb0dBZ0FhQUVZQXNBQkZXTEFTTHh1eEVodytXYkFBUlZpd0RTOGJzUTBRUGxtd0VoQ3dHdEN5QVEwYUVSSTVzQUV2c2dnQ0NpdFlJZGdiOUZtd0RSQ3lGZ0VLSzFnaDJCdjBXVEF4QVFjMk5qYzNCZ1lIQXc0Q0p5WUNOeE16QXdZV0Z4WTJOeE1GSmg1dmR4T1pGOUxBY0JhZi81amE5QnFvdWFjUmk0eVYwQnlyQmJEWkRveVFBYzdXQy8yRGxPRjVBd1FCRDlnRDJ2d2xtNjRFQktxZEErVUFBUUJhLytnRlRnU1JBQnNBVXdDd0FFVllzQTB2RzdFTkdENVpzQUJGV0xBRkx4dXhCUkErV2JBQVJWaXdDQzhic1FnUVBsbXdEUkN3RnRDeUdCWUlFUkk1c0JndnNnTUNDaXRZSWRnYjlGbXdDQkN5RXdFS0sxZ2gyQnYwV1RBeEFRWUdCd01qTndZbkppWTNFek1EQmhjV0ZoY1dOeE16QnpZMk53Vk9EcUtsbHFzWGZjV2NseFYwdFhVRkF3Vk1STUZyaUxRWVcxY1VCSkdvbmdiOHUydURCQVRZdHdLNy9VSXNLa2hTQXdpbEF4U0dCMVNCQUFIL0NmNUdBYThFT2dBTUFDZ0FzQUJGV0xBTUx4dXhEQmcrV2JBQVJWaXdCQzhic1FRU1BsbXlDUUVLSzFnaDJCdjBXVEF4QVFNR0JpY21KemNXTXpJM0V3R3Z4aGErbURZK0hqVXFpaVRHQkRyN2JxYThBZ0lUa2hEVEJJZ0FBQUlBUHYvcEE5OEVUZ0FZQUNJQVVRQ3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQUpMeHV4Q1JBK1diSU9BQWtSRWptd0RpK3dBQkN5RXdFS0sxZ2gyQnYwV2JBSkVMSVpBUW9yV0NIWUcvUlpzQTRRc2h3QkNpdFlJZGdiOUZrd01RRWVBZ2NIQmdJR0p5WUNOemNoTmljbUppY21CeWMyTndNV05qY2xCd1lYRmhZQ1I0YThWZzhFRVpYbGdzSEFHaElDc3dnR0NuUmdxWk05ZTlOT1pLVTMvZ01HQ0FnTGFRUk9Bb3oybFNTVy92K1JCQVlCQ05SNVBVQnRnUU1HYjM1M0MvdzJBNXFYQVJ3MU1VNWVBQUFCQVJjRTRnTmtCZ0FBQ0FBeEFMQUZMN0FCMExBQkw3RUFDaXRZMkJ2Y1diQUZFTEFIMExBSEw3UVBCeDhIQWwyd0E5Q3dBQkN3QnRDd0JpOHdNUUVWSnljSEJ6VUJNd05razNHd21RRVdhZ1R3RGdLcHFBTVFBUTRBQUFFQkpnVGpBNEFHQVFBSUFDQUFzQVF2c0FMUXNBSXZ0QThDSHdJQ1hiSUFCQUlSRWptd0I5Q3dCeTh3TVFFM054Y0JJd00xRndJdnNaOEIvdUp1enBZRlZxZ0REZjd2QVJBT0F2Ly9BT01GSVFPd0JiQUFCZ0J3QUFBQUFRRUhCTWNEVEFYWUFBd0FJZ0N3QXkreUR3TUJYYklKQkFvcldDSFlHL1Jac0FmUXNBY3ZzQURRc0FBdk1ERUJCZ1luSmlZM0Z3WVhGalkzQTB3TXE0Qjdrd0tUQjRGSFVnd0YxMzJUQkFLU2VRR1NCQUZWUVFBQUFRRU9CT3NCNHdYRkFBc0FFUUN3Q1MreUF3VUtLMWdoMkJ2MFdUQXhBVFEyTnpZV0ZRWUdCd1ltQVE0Nk1DNDlBVHN2TEQ0RlZDOCtBZ0k3TUM4OEFnSTVBQUFDQVFFRXN3S2tCbEVBQ3dBWEFDVUFzQWt2c0JYUXNCVXZzZ01JQ2l0WUlkZ2I5Rm13Q1JDeUR3Z0tLMWdoMkJ2MFdUQXhBVFkyTXpJV0ZRWUdJeUltTndZV016STJOelltSXlJR0FRTUNnVmxTY3dLQldWUnpZZ1EyS3k1UEJnWTRLaTVRQlhoYmZuUlZXWHh5VlM0L1J6SXVRa2tBQWYrdi9rOEJGZ0E1QUE4QUp3Q3dFQyt3QUVWWXNBb3ZHN0VLRWo1WnNnVURDaXRZSWRnYjlGbXdFQkN3RDlDd0R5OHdNUVVIQmdjR0Z4WTNGd1lqSWlZM05pVUJGa0Y2Q1FkQklFTUVSRk5PWHdJREFSWURMMXBaUHdJQkdua3JaVkt4Z2dBQUFRRGRCTm9EcmdYbkFCVUFQZ0N3QXkrd0NOQ3dDQyswRHdnZkNBSmRzQU1Rc0FyUXNBb3ZzQWdRc2c0RENpdFlJZGdiOUZtd0F4Q3lFd01LSzFnaDJCdjBXYkFPRUxBVjBEQXhBUVlHSXlJdUFnY0dCeWMyTmhjeUhnSTNNamNEcmd4NlhTVTlQRDRrVlI5NkRIMWRHeTlxTVJ0V0lBWGRiNFlmSmg0QkEyMEhib3dDRVVFU0FYRUFBZ0RDQk5BRHZnWC9BQU1BQndBN0FMQUNMN0FBMExBQUw3UVBBQjhBQWwyd0FoQ3dBOUFac0FNdkdMQUFFTEFGMExBRkw3QUNFTEFHMExBR0w3QURFTEFIMEJtd0J5OFlNREVCTXdFakF6TUJJd0xtMlA3R3N6VE4vdmVmQmYvKzBRRXYvdEVBQXYvcC9tb0JOZisyQUFzQUZ3QTVBTEFZTDdBRDBMQURMMEFMQUFNUUF5QURNQU5BQXdWZHNBL1FzQTh2c2drSENpdFlJZGdiOUZtd0F4Q3lGUWNLSzFnaDJCdjBXVEF4QnpRMk16SVdGUlFHSXlJbU53WVdNekkyTnpZbUl5SUdGMmhHUkZwalJrVmVWQVFvSUI4N0J3UW1IaVU2K1VsbVgwTkhZMWxHSHk4eEp5RXdPUUFCL1dvRTJQNi9CZjRBQXdBZUFMQUJMN0FBMEJtd0FDOFlzQUVRc0FMUXNBSXZ0QThDSHdJQ1hUQXhBU01ETS82L2pzZk1CTmdCSmdBQUFmM3JCTmovd2dYK0FBTUFIZ0N3QWkrd0FkQ3dBUyswRHdFZkFRSmRzQUlRc0FQUUdiQURMeGd3TVFFWEFTUCsyZW4reUo4Ri9nSCsyd0QvLy8wTEJOci8zQVhuQUFjQXBQd3VBQUFBQWYzMUJOai9OZ1p6QUEwQUpRQ3dEUyt3QjlDd0J5K3lEQTBIRVJJNXNnRUhEQkVTT2JJR0Jnb3JXQ0hZRy9SWk1ERUJOemMyTnpZak54WVdCd1lIQi8zMUZpbHJDZ3ViRDRLTUF3ZWlEQVRabVFRS1FrZHFBMkJSZ2gxSUFBTDgyd1RrLzRZRjdnQURBQWNBTndDd0FTK3dBTkFac0FBdkdMQUJFTEFGMExBRkw3QUcwTEFHTDdZUEJoOEdMd1lEWGJBRDBMQURMN0FBRUxBRTBCbXdCQzhZTURFQkl3TXpBU01ETS82S3RQdnFBY0dmd2RZRTVBRUsvdllCQ2dBQUFmeTcvcC85a1A5NUFBc0FFUUN3QXkreUNRVUtLMWdoMkJ2MFdUQXhCVFkyTnpZV0ZRWUdCd1ltL0xzQk9pOHVQUUU3THl3KytDOCtBZ0k3TUM4OEFnSTVBQUFCQVNFRTdnSkJCajhBQXdBZEFMQUNMN0FBMExBQUw3SVBBQUZkc2dNQ0FCRVNPUm13QXk4WU1ERUJNd01qQVpHd3JIUUdQLzZ2QUFNQTh3VHRBKzRHaUFBREFBNEFHUUE2QUxBTUw3QUMwTEFDTDdBQTBMQUFMN0FDRUxBRDBCbXdBeThZc0F3UXNnWUZDaXRZSWRnYjlGbXdEQkN3RmRDd0ZTK3dCaEN3R2RBd01RRXpBeU1GUGdJV0ZSUUdCd1ltSlRZV0ZRWUdCd1ltTmpZQ2lyNlJpdjdHQVRwZVBEd3ZMRDRDa0N3L0FUd3VMendDT2dhSS92Z29MejBFUEM0dlBBSUNPWjBDUEM4dlBBSUNPbDQrQVAvL0FLVUNhQUdGQTB3QUJnQjRBQUFBQVFCREFBQUVwUVd3QUFVQUt3Q3dBRVZZc0FRdkc3RUVIRDVac0FCRldMQUNMeHV4QWhBK1diQUVFTElBQVFvcldDSFlHL1JaTURFQklRTWpFeUVFaWYxWTRiMzlBMlVGRXZydUJiQUFBdit4QUFBRTNnV3dBQU1BQmdBdkFMQUFSVml3QUM4YnNRQWNQbG13QUVWWXNBSXZHN0VDRUQ1WnNnUUJDaXRZSWRnYjlGbXlCZ0lBRVJJNU1ERUJNd0VoSlNFREF3S25BVFg2MHdFakF6TFVCYkQ2VUowRUpnQUFBd0JwLytrRS9BWElBQU1BRmdBbkFGY0FzQUJGV0xBTkx4dXhEUncrV2JBQVJWaXdCQzhic1FRUVBsbXlBZ1FORVJJNWZMQUNMeGkwWUFKd0FnSmRzZ0VCQ2l0WUlkZ2I5Rm13RFJDeUd3RUtLMWdoMkJ2MFdiQUVFTElqQVFvcldDSFlHL1JaTURFQklUY2hBU1lDSnlZU056WWtGeFlTRnhZSEJ3WUNCQUUySmlZbkpnQURCZ2NHRmhjV0VoTTJBNi8rQ1JzQjkvNTQwL2NLQlRCQ1hRRXd2dFQyQ1FNS0RCL0MvdWNCVkFROGlHUEIvd0FrRUFFR2xwUzYreWtVQXBPWS9NRUVBUi8wWWdGQ2pNVFJCQVQrNC9kVVUxVFovcmFsQTVWN3YyVURCZjdPL3ZoMFE4RGhCQWNCR3dFQmZnQUIvOFFBQUFSeEJiQUFCZ0F4QUxBQVJWaXdBeThic1FNY1BsbXdBRVZZc0FFdkc3RUJFRDVac0FCRldMQUZMeHV4QlJBK1diSUFBd0VSRWprd01RRUJJd0V6QVNNQzdQMnAwUUwvcUFFR3dnU0grM2tGc1BwUUFBQURBQXdBQUFTR0JiQUFBd0FIQUFzQVR3Q3dBRVZZc0Fndkc3RUlIRDVac0FCRldMQUNMeHV4QWhBK1diSUFBUW9yV0NIWUcvUlpzQUlRc0FYUXNBVXZzaThGQVYyeUJnRUtLMWdoMkJ2MFdiQUlFTElLQVFvcldDSFlHL1JaTURFM0lRY2hFeUVISVJNaEJ5RW9BNDRjL0hMbEF0d2IvU000QTNrYy9JYWRuUU0vblFNT25nQUFBUUJFQUFBRmNBV3dBQWNBT0FDd0FFVllzQVl2RzdFR0hENVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdCQzhic1FRUVBsbXdCaEN5QWdFS0sxZ2gyQnYwV1RBeElTTVRJUU1qRXlFRWM3emgvVW5odlAwRUx3VVMrdTRGc0FBQUFmL2FBQUFFaVFXd0FBd0FQQUN3QUVWWXNBZ3ZHN0VJSEQ1WnNBQkZXTEFETHh1eEF4QStXYklCQVFvcldDSFlHL1Jac0FYUXNBZ1FzZ29CQ2l0WUlkZ2I5Rm13QjlBd01RRUJJUWNoTndFQk55RUhJUUVDOHYzMUF2RWMvQjRiQWpqK2toZ0RzaHo5TXdGVUF0RDl6WjJZQWtvQ1I0ZWUvZFlBQUFNQVZBQUFCWEFGc0FBSkFCTUFMQUJaQUxBQVJWaXdIaThic1I0Y1BsbXdBRVZZc0Nzdkc3RXJFRDVac2hRckhoRVNPYkFVTDdJQUFRb3JXQ0hZRy9SWnNoMGVLeEVTT2JBZEw3QWcwTElLQVFvcldDSFlHL1Jac0FIUXNBQVFzQXZRc0JRUXNDblFNREVCRXlNbUJnWUhCaFlYQVFNWEZqWTJOelltSndFR0ppWTNOaElrRnpNM0Z3Y3lGaFlIQmdJRUp5TUhJemNDTzVNQ1pMaUZEaFdRbkFGV2xBTml0NFFSRlpLYS9wcUY0bThQRDZzQkZaNE5KN29waXVKdkR4Q3QvdU9aQmlTK0pBRk9Bd3dSWDg5enBNMExBd3I4OVFFTlc4ZDdxTWtML0ZnQmp2bVVtd0VCa3dLNUFiaU8rWlNjL3Z5VEJxK3dBQUFCQUlZQUFBV2RCYkFBR1FCY3Nnb2FHeEVTT1FDd0FFVllzQVF2RzdFRUhENVpzQUJGV0xBUUx4dXhFQncrV2JBQVJWaXdHQzhic1JnY1BsbXdBRVZZc0Fzdkc3RUxFRDVac2hjRUN4RVNPYkFYTDdBQTBMQVhFTElNQVFvcldDSFlHL1Jac0FuUU1ERUJOalkzRXpNREJnQUhBeU1USmdJM0V6TURCaGNXRmhjVE13TC9uTTBkWEx4ZEsvN0Q3MFM5UmREWEcxaThXUWtIQ25ka3ByMENDQm5Ub3dJWi9kdnIvdUVYL3BZQmJCNEJOdUlDRHYzeFJVRnFqUmdEcEFBQkFBb0FBQVRhQmNjQUpnQlpzZ0FuS0JFU09RQ3dBRVZZc0Jvdkc3RWFIRDVac0FCRldMQVFMeHV4RUJBK1diQUFSVml3SlM4YnNTVVFQbG15SXdFS0sxZ2gyQnYwV2JBQTBMQWFFTElJQVFvcldDSFlHL1Jac0FBUXNBL1FzQ01Rc0JMUU1ERWxOaEkvQWpZbUp5WUdBaGNXRmhjSElUYzNBaE0zTmhJa0Z4NENGeFlDQndZSE53Y2hBbnVZeGlZUkNBT0tpS2ptU1FRRGFWOFovaUljMXFFcEZCNjFBUWllZjhaMENRYzlXVkIzMkJ6K0thRWhBUmozZVd1cXhBUUYrZjVKZnBXdkdLS2RBZ0VEQVRTRXRBRWhtQU1EZHQrTGFQNmNsb2RlQTUwQUFnQkkvK2NFTWdSVUFCZ0FKUUI1c2hVbUp4RVNPYkFWRUxBaTBBQ3dBRVZZc0JVdkc3RVZHRDVac0FCRldMQVlMeHV4R0JnK1diQUFSVml3RGk4YnNRNFFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNnVUJDaXRZSWRnYjlGbXlEQlVLRVJJNXNoY1ZDaEVTT2JBT0VMSWRBUW9yV0NIWUcvUlpzQlVRc2lJQkNpdFlJZGdiOUZrd01RRURCaGNXRnpNM0Z3WW5KaWNHSnlZQ056YzJBQmNXRnpjQkJ3WVdGeFkzRXlZbkpnWUhCREtFQ0FRRktoRVFDalU5akJDS3dLKzFGd3NzQVFHNXdGZ3YvWDRGQTIxbXBIVk1PSnFNdGhvRU92enJPaDA0QWdPTElBRUVuNmtFQXdFYzUwdjVBUjhGQnAyTy9iTlJoSllDQTc0QndiTUhCZTNNQUFBQy8vRCtnQVJNQmNjQUV3QXBBR1d5R3lvckVSSTVzQnNRc0JQUUFMQU9MN0FBUlZpd0FDOGJzUUFjUGxtd0FFVllzQXN2RzdFTEVENVpzaFFBQ3hFU09iQVVMN0luQVFvcldDSFlHL1Jac2dVbkZCRVNPYkFBRUxJYUFRb3JXQ0hZRy9SWnNBc1FzaUVCQ2l0WUlkZ2I5Rmt3TVFFV0ZnY0dCeFlXQndZRUp5WW5BeU1UUGdJVE5qWTNOaVluSmdZSEF4WVdNeFkyTnpZbUp5YzNBdEtzemc0UjFsNWdDUkQrNXN1c2IxYTIrUkdMMkExNm1nc0thV0pzcVJPT0tZaEpnN29RRG1oaGx4c0Z4QVRYcHJ4eUxycDl5LzRFQkYzK05BV3hjcnBxL1pFQ2dXMWhnUVFDajIvOHd6czRBcWVGY1o4RkFaY0FBQUVBaFA1Z0JCb0VPZ0FJQURpeUFBa0tFUkk1QUxBQVJWaXdBUzhic1FFWVBsbXdBRVZZc0Fjdkc3RUhHRDVac0FCRldMQUVMeHV4QkJJK1diSUFCd1FSRWprd01RRUJNd0VESXhNRE13RytBWnpBL2RoUXRWVytzUUVXQXlUNzlQNHlBZXNEN3dBQUFnQkQvK2NFRXdZZ0FDQUFMd0Jpc2dJd01SRVNPYkFDRUxBbzBBQ3dBRVZZc0FNdkc3RURIajVac0FCRldMQVZMeHV4RlJBK1diQURFTElJQVFvcldDSFlHL1Jac2kwVkF4RVNPYkF0TDdJT0FRb3JXQ0hZRy9SWnNoMHREaEVTT2JBVkVMSW5BUW9yV0NIWUcvUlpNREVCTmpZWEZoY0hKZ2NpQmdjR0Z4Y1dFZ2NIQmdBbkxnSTNOelkyTnpjbUpnTUdGeFlYRmhjV05qYzJKaWNtQmdGUEIrS3FlcEFVZ241VmRRb1BqelcxcFJRRElmN1Uwb2U5Vmc0REY5bWpBMHhVUVFjRkMxY3dUWVhBSGc5N2JZZkVCTzJPcFFJQ042RS9BazVBWFVFWVMvN2x3aFgyL3QwRkJJandraGF6L1I4TkpZYjlYejVCakVNbEFnWE95b25pRHhMbkFBRUFLZi9uQStVRVRRQW9BSGl5SmlrcUVSSTVBTEFBUlZpd0dTOGJzUmtZUGxtd0FFVllzQTB2RzdFTkVENVpzaWNaRFJFU09YeXdKeThZc29BbkFWMjBRQ2RRSndKZHNnQUJDaXRZSWRnYjlGbXdEUkN5QmdFS0sxZ2gyQnYwV2JJS0dRMFJFam15RXdBbkVSSTVzaDBaRFJFU09iQVpFTEloQVFvcldDSFlHL1JaTURFQklnWUhCaFlYRmpZM053WUVKeVluSmpjMk55WW1OelkyTnpjV0ZnY25OaVluSWdZSEJoY1hCd0lGZkpVS0NYeHFhNmdSdFJEKzlNU0xhS1FLQ3VkQ1RRUUcycnd0cnRVRHNnSnpZMnlZREJQUTFCc0IzMTVaU2x3REFtdFhBWjY3QlFJMlZxMjRVaUowUTR1dENnRUZzSTBCUzEwRFcxR1NCZ0dVQUFFQWd2NkFCRHdGc0FBY0FEbXlFeDBlRVJJNUFMQU5MN0FVTDdBQVJWaXdBQzhic1FBY1BsbXlHZ0VLSzFnaDJCdjBXYkFCMExBVUVMSUlBUW9yV0NIWUcvUlpNREVCQndFSEJnY0dGaGNYRmdjR0J5YzNOamMySnljbUpqY1NBUUVoTndROEYvNHZLc1laQ2lsS3pZc0tDc1pjSWs0S0NGOXZpbjRRSEFGQ0FWYjluUnNGc0lIK0lDM1gwRXRwRzBVeWhKaVpXU1JVUkRvZ0lTdXJrQUVNQVVvQlRKZ0FBQUVBSlA1aEEvTUVVZ0FTQUZPeUNCTVVFUkk1QUxBQVJWaXdBeThic1FNWVBsbXdBRVZZc0FBdkc3RUFHRDVac0FCRldMQUhMeHV4QnhJK1diQUFSVml3RUM4YnNSQVFQbG15QVFNSEVSSTVzQU1Rc2cwQkNpdFlJZGdiOUZrd01RRUhOaGNXRmdjREl4TTJKeVluSmdjREl4TUJnaFdPdTZhWEZidTF1d1lFRGFXcGJvaTJ2QVE3aWFBRUJOUEIrNnNFVWpZdm5BTUVxZnp1QkRvQUF3QnovK1VFS3dYS0FCRUFHd0FrQUdheUdTVW1FUkk1c0JrUXNBRFFzQmtRc0NMUUFMQUFSVml3Q1M4YnNRa2NQbG13QUVWWXNBQXZHN0VBRUQ1WnNoSUFDUkVTT1h5d0VpOFlzQWtRc2hnQkNpdFlJZGdiOUZtd0VoQ3lIUUVLSzFnaDJCdjBXYkFBRUxJaUFRb3JXQ0hZRy9SWk1ERUZMZ0kzTmhJM05nVVdFZ2NHQndjQ0FBRWhOelluQWljbUJnY0ZJUVlYRmhZWEZoTUIzSG1sU3dRRFRtS1FBUU8ydUFZQ0NSd3ovdW4rbFFJWUNROENDN2lJcnlrQisvM3BGZ01EWkZyMFd4UURmdTJYY3dIZW4ra0dCUDcyN1V0RnQvNjEvcTRET3pseVNnRVJCd1RvOE5DQVpZeVRBd3dCa1FBQkFJWC85QUh1QkRvQURnQW9BTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQW92RzdFS0VENVpzZ1VCQ2l0WUlkZ2I5Rmt3TVFFREJoY1dGekkzQndZbkppWTNFd0hNaUFNQ0JrOGlOQXhIUG14c0RJY0VPdnpYR2haS0F3cVlFZ0lDbUlRREpnQUIvN2YvOEFQQUJld0FHUUJOc2c0YUd4RVNPUUN3QUMrd0FFVllzQW92RzdFS0VENVpzQUJGV0xBUEx4dXhEeEErV2JBS0VMSUZBUW9yV0NIWUcvUlpzZzRBQ2hFU09iQUFFTElWQVFvcldDSFlHL1Jac0JmUU1ERUJNaGNURmhjek53Y0dCeUltSndNQkl3RW5KaVluSndjM05nR090aWppRkRrVEVnWWVLRkJpSUgzK1k5RUNOelFSS3lNWUdRd3dCZXl1KzZ0VEF3S2FDUUpXZFFKTy9QY0VFT0E2SndJQkFZNExBQUFCQUQvK2R3UVBCY2dBTGdCU3Noa3ZNQkVTT1FDd0dDK3dIaSt3QUVWWXNDd3ZHN0VzSEQ1WnNnSUJDaXRZSWRnYjlGbXlDU3dZRVJJNXNBa3ZzZ3NCQ2l0WUlkZ2I5Rm13SGhDeUVRRUtLMWdoMkJ2MFdiSWxDd2tSRWprd01RRW1JeUlHQndZV0Z4Y0hKeUlHQndZZUJBY0dCZ2NuTnpZM05pY21KeVlUTmpZM0ppWTNOamMyRnhZWEErVitXWXl6RFErUGxJc2JmOEhvRVF4eDlGay9Jd01GYVdCa096NElDbGluUlBVWERMdXZYV1lGQzZTUHhZTjdCUWdtYVZ0a2J3RUJtQUd2bTJ5Y1F5QXRSVE5JbkVsWFBVUS9PaGd0SVhRQkZvL1BPU3FWVnJWZVVRTUNKd0FCQUdELzlBU2tCRG9BRmdCY3NnMFhHQkVTT1FDd0FFVllzQlV2RzdFVkdENVpzQUJGV0xBTEx4dXhDeEErV2JBQVJWaXdFUzhic1JFUVBsbXdGUkN5QUFFS0sxZ2gyQnYwV2JBTEVMSUdBUW9yV0NIWUcvUlpzQUFRc0EvUXNCRFFzQlBRc0JUUU1ERUJJd01HRnhZekZqY0hCaWNtSmpjVElRTWpFeU0zSVFTSmwyOERBZ2RQSlM4SlFrSnRiUXhzL255aHRhR2tHd1FwQTZIOWNCb1dUQUlNbVJJQkFwaUZBbzM4WHdPaG1RQUFBdi9jL21BRCtRUlRBQk1BSUFCUXNnOGhJaEVTT2JBUEVMQVgwQUN3QUVWWXNBVXZHN0VGR0Q1WnNBQkZXTEFTTHh1eEVoSStXYkFBUlZpd0R5OGJzUThRUGxteUZnRUtLMWdoMkJ2MFdiQUZFTElkQVFvcldDSFlHL1JaTURFVE5qWTNOaGNlQWhjV0J3NENKeVluQXlNQkZoY1dOamMzTmlZbkpnWUhoaEZYUjRyR2M2VllBd0VKRTRISmdieGpZYllCTDBHWmliY1dDUWRrYlhxb0hnSkJjTWxKa0FVRGJNMS9QR0tZODRFQ0JIcjk5d0t6alFRRHphcHJvN0FFQXRTM0FBRUFUdjZKQStzRVV3QWhBRXF5R1NJakVSSTVBTEFUTDdBQVJWaXdBQzhic1FBWVBsbXdBRVZZc0Jrdkc3RVpFRDVac2dNQUV4RVNPYkFBRUxJSEFRb3JXQ0hZRy9SWnNCa1FzZzBCQ2l0WUlkZ2I5Rmt3TVFFV0ZnY25OaVluSmdZSEJ3SUZGeFlIQmdZSEp6YzJOelluSnlZQ056YzJFallDZTZ2RkNxb0hhR1dEdlJzRUhnRTBWcFVLQld0ZFhDbEhDUWRPTHMvSEV3UVJsdWNFVHdUWXJ3RnRnUVFGMjc0ZC92RmpIVGlJUjZCSFdpdExSejBYRERrQkI4VXJsZ0VBalFBQ0FFci81Z1N0QkRzQUVnQWhBRXl5SGlJakVSSTVzQjRRc0JIUUFMQUFSVml3RWk4YnNSSVlQbG13QUVWWXNBY3ZHN0VIRUQ1WnNCSVFzZ0VCQ2l0WUlkZ2I5Rm13QnhDeUZnRUtLMWdoMkJ2MFdiQUJFTEFlMERBeEFRVVdCd2NHQUNjdUFpY21OemMyQURNRkFSUVdGeFkyTnpZbkppWW5KZ1lHQkpMKzdaQVhBUjcrek0xdXJHWUpCUWNDSUFFcTJ3STEvRlZ6Ykl2Qkdna0ZDWFZqYXFaWUE2RURxZkFLN3Y3WkJnRm13SFpDUXhEekFTb0IvWHFQb0FRRjM3bGFQSENGQXdPQzZRQUFBUUNILyt3RUVBUTZBQkVBU2JJREVoTVJFamtBc0FCRldMQVFMeHV4RUJnK1diQUFSVml3Q2k4YnNRb1FQbG13RUJDeUFBRUtLMWdoMkJ2MFdiQUtFTElGQVFvcldDSFlHL1Jac0FBUXNBN1FzQS9RTURFQklRTUhGRE15TnhjR0p5WW1OeE1oTnlFRDl2NlljQUZJSVRzZVQxMXNadzFyL3E4YkEyNERwUDFvTFZRWGhESUJBcGFTQW8yV0FBRUFaLy9sQS9vRVBBQVZBRHl5QmhZWEVSSTVBTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQXN2RzdFTEdENVpzQUJGV0xBUkx4dXhFUkErV2JJRkFRb3JXQ0hZRy9SWk1ERUJBd2NVRmhjV0VnTW5KaWNYRmhjU0FDVW1KamNUQWFGdEJVcEhwTnNIQWdvaXRpWUZELzdHL3Y2dnFCZHRCRHI5YlYxZGFnSUdBWFVCRmphRGZRSjlndjU3L2k4R0JQRE5BbzRBQUFJQVFmNGlCVGdFUGdBYUFDTUFYN0lZSkNVUkVqbXdHQkN3RzlBQXNCa3ZzQUJGV0xBUkx4dXhFUmcrV2JBQVJWaXdCaThic1FZWVBsbXdBRVZZc0FBdkc3RUFFRDVac2cwQkNpdFlJZGdiOUZtd0FCQ3dHTkN3RFJDd0c5Q3dFUkN5SVFFS0sxZ2gyQnYwV1RBeEJTWUNOellTTnhjR0FoY1dGaGNUTmpZWEhnSUhCZ0FGQXlNQk5oSW5KaVlIQmdjQ0F1RGhIUlNsamxhQmV4TU9obTE3RFpKdWZzSmREaHYrclA3OFZiVUJJOEh0QmdkNFl6d1NEeDBCT2Vhb0FReGFpR3IrMklSc2tSZ0N6MmVBQWdLVStJZjEvdElWL2pNQ1l4OEJGTDZPcGdnRVFRQUFBUUJQL2lnRlR3UThBQjBBUkxJZEhoOFJFamtBc0E4dnNBQkZXTEFXTHh1eEZoZytXYkFBUlZpd0VTOGJzUkVRUGxteUhBRUtLMWdoMkJ2MFdiQUIwTEFXRUxBZDBMQUgwTEFSRUxBTzBEQXhBUU0yRWdNbkppY1hGaGNTQlFZSEF5TVRKZ0kzRXpNREJoY1dGaGNUQTJ1bDF1OEpBd3dsdFNjSUhmNzRwUEpVdFZYZTBDRlN0VklLQkFWNWNLa0VPdnhMSlFGQ0FSVStnbnNDZTRIK0pkcUhFLzQ1QWNzZkFVYjhBZWIrRjB4SmU1OFpBN0VBQUFFQVp2L2tCZndFUEFBcUFGcXlJU3NzRVJJNUFMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNCZ3ZHN0VZR0Q1WnNBQkZXTEFmTHh1eEh4QStXYkFBUlZpd0pDOGJzU1FRUGxteUNBRUtLMWdoMkJ2MFdiSU1Id0FSRWptd0V0Q3lJZ2dmRVJJNU1ERUJCd1lDQnhVVUZoY1dFeE16QXdZSEJoWVhGaE0ySnlZbkZ4WVhGZ0lHSnlZbUp3WW5MZ0kzRWhNQ0NVaExXd0pQU3RNOE03WXZCZ0VDVWxDMVREUVVEUzIzTHdvUmIrQ2JiSmdVZmQ5bmtFRURCZGNFT1grRC92cWZDbitGQXcwQlR3RS8vdFF2T210L0FnY0JLTXpPZzMwQ2ZJTGEvbDdaQkFLQmJQWUhBM0RTZ0FGZUFTd0FBQUlBVWYvbkJHMEZ5d0FrQUM4QWE3SW1NREVSRWptd0poQ3dGTkFBc0FCRldMQWVMeHV4SGh3K1diQUFSVml3Qnk4YnNRY1FQbG15S0I0SEVSSTVzQ2d2c2hjQkNpdFlJZGdiOUZtd0F0Q3lEUjRIRVJJNXNBY1FzaE1CQ2l0WUlkZ2I5Rm13S0JDd0l0Q3dIaEN5TEFFS0sxZ2gyQnYwV1RBeEFRWUhCd1lIQmljdUFqY1ROd01HRnhZV0Z4WTJOemNtQWpjM05qWVhGaFlIQXpZM0FRWVdGeE0zSmljbUJnY0VaelJnSHllQ2dMaDZ0RlFQTnJZMkJ3Y0xhVlYzbHhZZXdOSU9BZzdNbFpHWEVqdE9OdjNrQ201K093UUViMGhiQ2dKeUVnMjMwbk53QlFOMTBIOEJUZ0wrcnpnMVZtUURBNTJRcVNZQkZNVVFtc2NFQk02ay9wNExEZ0ZRZ0xrbEFWaElqUUlDYVZrQUFBRUFad0FBQk5nRndRQWFBRW15QUJzY0VSSTVBTEFBUlZpd0JDOGJzUVFjUGxtd0FFVllzQmN2RzdFWEhENVpzQUJGV0xBTkx4dXhEUkErV2JJQUJBMFJFam13QkJDeUNRRUtLMWdoMkJ2MFdiQVMwREF4QVFFMk5oY3lGd2NtSXlZSEFRTWpFd01tSnlZSEp6WXpGaFlYQWkwQkxUWjVUMEJBTHgwVlFqYithbUc2WmEwYU93OG1GVFkrUzJRZ0F3Z0IrMlpZQWh5WENRSlQvV3Y5MFFKSUFudEpBd0VJbVJrQ1YyQUFBQUlBWnYva0JrUUVPZ0FXQUN3QWFySUpMUzRSRWptd0NSQ3dKOUFBc0FCRldMQVZMeHV4RlJnK1diQUFSVml3Qnk4YnNRY1FQbG13QUVWWXNBd3ZHN0VNRUQ1WnNCVVFzZ0FCQ2l0WUlkZ2I5Rm15Q2hVSEVSSTVzQlRRc0JuUXNBY1FzaWtCQ2l0WUlkZ2I5Rm13SU5DeUpCa0hFUkk1TURFQkl4WVZGQUlHSnlZbUp3WW5MZ0kzTmpZM0J6Y2hBU1luSlFZR0J3WVdGeFlUTnpNSEJ3WVdGeFlUTmdZbmdBZHl3NFZ2bHhKKzNXR0NPQVlIUkVCMUhBV20vck1EQy96VFVFa0hCVDFDMlRnbXR5Y0dCMUpXcVR3ZEE2RmNXdEQraHJvRUFvTnI5d2NEY3R0OWxlZHZBcG4rc2xwYkFZdnFtbitPQlE0QmFQZjhSWVNMQWdRQlRxRUFBUUNoLy9JRmVnV3dBQmtBWVFDd0FFVllzQmd2RzdFWUhENVpzQUJGV0xBVUx4dXhGQkErV2JBQVJWaXdDaThic1FvUVBsbXdHQkN5RndFS0sxZ2gyQnYwV2JBQjBMSUVGQmdSRWptd0JDK3dDaEN5Q3dFS0sxZ2gyQnYwV2JBRUVMSVJBUW9yV0NIWUcvUlpNREVCSVFNMkZ4WVdCd1lFQnpjMk5qYzJKaWNtQndNakV5RTNJUVRxL2dkV28zYlc4QkVTL3Q3ekM1ZTVEdzZKaFh5bmVyemgvbTBjQkVrRkV2NDRNZ01DOGM3VTdnU1lBcDZQaHBFQ0F5NzlXUVVTbmdBQkFIai81Z1QvQmNjQUpBQnFBTEFBUlZpd0RTOGJzUTBjUGxtd0FFVllzQU12RzdFREVENVpzQTBRc1JFS0sxallHOXhac0EwUXNoUUJDaXRZSWRnYjlGbXdBeEN3R05Dd0dDK3lMeGdCWGJJWkFRb3JXQ0hZRy9SWnNBTVFzaUVCQ2l0WUlkZ2I5Rm13QXhDeEpBb3JXTmdiM0Zrd01RRUdBQ2N1QWljbUVoSTNOaGNXRWhjakppWW5KZ1lESVFjbEJ3WUhCaFlXRnhZMk53U1hLdjY3NDRmSmNRWUdUZWFvYlh2TjhBZTZCNHFCcnZZN0FqQWMvZDBDREFNR1FZSmNtc2N6QWREaS92Z0dBMy91a25BQnVBRkZRU3NEQlA3LzVLaWhBd1g4L3YyZEJRbzBPbTYvWkFNRm5hd0FBdi9NQUFBSDhnV3dBQmdBSVFCdXNob2lJeEVTT2JBYUVMQUswQUN3QUVWWXNBQXZHN0VBSEQ1WnNBQkZXTEFJTHh1eENCQStXYkFBUlZpd0VDOGJzUkFRUGxteUFnQUlFUkk1c0FJdnNBQVFzZ29CQ2l0WUlkZ2I5Rm13RUJDeUVnRUtLMWdoMkJ2MFdiQWIwTEFDRUxJaEFRb3JXQ0hZRy9SWk1ERUJBd1VXRmdjR0JDTWhFeUVEQndJQ0J5TTNOelkyRXpjVEFRTUZNalkzTmlZbkJWNWpBVWpNNHhFVC90YmsvZVhpL2hGNEh6N3d1MHdTSm9Tb0t4V1BBdUZrQVVxTXdoSVBmM2NGc1AzTEFRYnd3TTMzQlJMOTFKbit6djdwQkp3QkJ1Z0JCSGNDcXYwdC9jQUJwWWQ4bEFRQUFnQkRBQUFIL2dXd0FCSUFHd0NDc2dFY0hSRVNPYkFCRUxBVDBBQ3dBRVZZc0JJdkc3RVNIRDVac0FCRldMQUNMeHV4QWh3K1diQUFSVml3RHk4YnNROFFQbG13QUVWWXNBd3ZHN0VNRUQ1WnNnQUNEeEVTT2JBQUw3SUVEQUlSRWptd0JDK3dBQkN5RGdFS0sxZ2gyQnYwV2JBRUVMSVRBUW9yV0NIWUcvUlpzQXdRc2hRQkNpdFlJZGdiOUZrd01RRWhFek1EQlJZV0J3WUVJeUVUSVFNakV6TUJBd1V5TmpjMkppY0Jqd0szYnJ0cUFUZlI4UThSL3Rqbi9laDAvVWwwdmYyOEF1NWJBVW1Md0JFUGZYMERPUUozL1o0QkFkMjd4KzBDblAxa0JiRDlBZjMxQVpOL2JvY0VBQUVBdEFBQUJhSUZzQUFYQUZleUF4Z1pFUkk1QUxBQVJWaXdGaThic1JZY1BsbXdBRVZZc0Fndkc3RUlFRDVac0FCRldMQVNMeHV4RWhBK1diQVdFTElWQVFvcldDSFlHL1Jac0FIUXNnUUlGaEVTT2JBRUw3SVBBUW9yV0NIWUcvUlpNREVCSVFNMkZ4WVdCd01qRXpZbkppWW5KZ2NESXhNaE55RUUvUDRBVVp5cDM5TVhTNzFNQ0FnTWIydU13Mys4NHY1ekhBUklCUkwrVHlrQ0JPdlMvamtCeUVVMlVWTURBeXI5UFFVU25nQUJBRUwrbVFWdUJiQUFDd0JJQUxBSkw3QUFSVml3QUM4YnNRQWNQbG13QUVWWXNBUXZHN0VFSEQ1WnNBQkZXTEFHTHh1eEJoQStXYkFBUlZpd0NpOGJzUW9RUGxteUFnRUtLMWdoMkJ2MFdiQUQwREF4QVRNRElSTXpBeUVESXhNaEFUKzg0UUszNHJ2OS9rNCt2VC8rUHdXdyt1MEZFL3BRL3BrQlp3QUNBRFFBQUFTV0JiQUFEQUFWQUZ1eUR4WVhFUkk1c0E4UXNBUFFBTEFBUlZpd0N5OGJzUXNjUGxtd0FFVllzQWt2RzdFSkVENVpzQXNRc2dBQkNpdFlJZGdiOUZteUFnc0pFUkk1c0FJdnNnMEJDaXRZSWRnYjlGbXdDUkN5RGdFS0sxZ2gyQnYwV1RBeEFTRURCUllXQndZRUl5RVRJUUVEQlRJMk56WW1Kd1I2L1ZoTEFUYlk3QkVRL3RqcC9lWDlBMlg4MW1BQlNvM0FFUTU4ZkFVUy9rd0JBZUsveC9RRnNQMFEvZDBCbm9OMmlBUUFBQUwvaS82YUJYb0ZzQUFPQUJVQVZiSVNGaGNSRWptd0VoQ3dDOUFBc0FRdnNBQkZXTEFMTHh1eEN4dytXYkFBUlZpd0FpOGJzUUlRUGxtd0JCQ3dBZEN3QWhDeUJ3RUtLMWdoMkJ2MFdiQVAwTEFOMExBTEVMSVJBUW9yV0NIWUcvUlpNREVCSXhNaEF5TVRGellUTnhNaEF6TUZKUk1oQXdjQ0JQYTdQdndNUDd0WmE4OWxGSlFEVCtLNSs5Z0NzOGIrSkc0ZFhmNmJBV1grbWdJREFxa0JmazRDb1BydEF3TUVkZjRMY3Y2cEFBQUIvNndBQUFkMUJiQUFGUUNHQUxBQVJWaXdDUzhic1FrY1BsbXdBRVZZc0Ewdkc3RU5IRDVac0FCRldMQVJMeHV4RVJ3K1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBWXZHN0VHRUQ1WnNBQkZXTEFVTHh1eEZCQStXYkFDRUxBUTBMQVFMN0l2RUFGZHNzOFFBVjJ5QUFFS0sxZ2gyQnYwV2JBRTBMSUlFQUFSRWptd0VCQ3dDOUN5RXdBUUVSSTVNREVCSXdNakV5TUJJd0VCTXdFekV6TURNd0V6QVFFakJKV2NjN3gwbWYzOTlnSm8vc1hSQVFxbGJydHVrZ0htNmYzSkFWTGNBcGo5YUFLWS9XZ0RDZ0ttL1lnQ2VQMklBbmo5Ui8wSkFBRUFKZi9xQkpnRnh3QXFBR0FBc0FCRldMQU5MeHV4RFJ3K1diQUFSVml3R1M4YnNSa1FQbG13RFJDeUJnRUtLMWdoMkJ2MFdiQU5FTEFLMExBWkVMQXEwTEFxTDdJcEFRb3JXQ0hZRy9SWnNoSXBLaEVTT2JBWkVMQWQwTEFaRUxJZ0FRb3JXQ0hZRy9SWk1ERUJNalkzTmlZbkpnWUhCellrRnhZV0J3WUZGaFlIQmdZRUp5WW1OeGNHRmhjV05qYzJOelltSnljM0FtMlV2UTRObFlCK3V4UzZFZ0VzMHR2d0VCSCs5V2RmQ0F1WC92bVowUE1KdWdpVWZFV0dObTRRRG9LVXJSd0ROSVY0YzRJQ0FvbHZBYmJnQWdYZHRkUjBMYXh2aE1WckFnVG92UUYxa3dRQ0pDVk1mM1dDQlFHZUFBQUJBRU1BQUFWdUJiQUFDUUJkQUxBQVJWaXdBQzhic1FBY1BsbXdBRVZZc0Fjdkc3RUhIRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3QlM4YnNRVVFQbG15QkFBQ0VSSTVRQW1LQkpvRXFnUzZCQVJkc2drQUFoRVNPVUFKaFFtVkNhVUp0UWtFWFRBeEFUTURJeE1CSXhNekF3U3N3djI3d2Z5UHcvMjh3UVd3K2xBRVZ2dXFCYkQ3cWdBQUFmL0tBQUFGWlFXd0FCQUFUYklFRVJJUkVqa0FzQUJGV0xBQUx4dXhBQncrV2JBQVJWaXdBUzhic1FFUVBsbXdBRVZZc0Fndkc3RUlFRDVac0FBUXNnTUJDaXRZSWRnYjlGbXdDQkN5Q2dFS0sxZ2gyQnYwV1RBeEFRTWpFeUVEQWdZSEl6YzNOalkzTnhNRlpmeTg0ZjRJcDBIaXExY1NKSWVtS3hhUEJiRDZVQVVTL1BiKzgvVUduUUVJNVA5OUFxb0FBQUVBay8vbUJVQUZzQUFRQUR5eUF4RVNFUkk1QUxBQVJWaXdBUzhic1FFY1BsbXdBRVZZc0JBdkc3RVFIRDVac0FCRldMQUdMeHV4QmhBK1diSUtBUW9yV0NIWUcvUlpNREVCQVRNQkJnWW5KaWMzRnpJL0FnRXpBb1lCMk9MOVBWRzBland2RmxsalJTUTYvdHZKQW1RRFRQdENrM2tDQWdtWUJtTTRaZ1FxQUFBREFGdi94QVhmQmV3QUdBQWhBQ29BYXJJZUt5d1JFam13SGhDd0M5Q3dIaEN3STlBQXNCY3ZzaFlYS3hFU09iQVdMN0FBMExBQUw3SU5LeGNSRWptd0RTK3dDdEN3Q2krd0RSQ3dETkN3REMrd0RSQ3lIUUVLSzFnaDJCdjBXYkFXRUxJZkFRb3JXQ0hZRy9SWnNCMFFzQ1BRc0I4UXNDclFNREVCRnhZV0VnY0dBZ1FuSXdjak55SW1BamMyRWlRM016Y3pBUVlXRnhjVEl3WUVKUU16TmlRM05pWW5BOWdVbU9weEVCSzYvdHVuSUNlMktLanNjeEFRc3dFY29qWXFzUDBpRjV1aUxwOGV2UDcvQXBLZUhib0JBUmtXcEtjRkhRRURsLzczbktqKzY1a0J4TVdXQVF5Z293RVFuQVRPL04rNDVRd0NBMmtEOXZmOGx3UDB5TC9rQndBQUFRQkIvcUVGYlFXd0FBc0FPd0N3Q1Mrd0FFVllzQUF2RzdFQUhENVpzQUJGV0xBRUx4dXhCQncrV2JBQVJWaXdDaThic1FvUVBsbXlBZ0VLSzFnaDJCdjBXYkFHMERBeEFUTURJUk16QXpNREl4TWhBVDY4NFFLMzRydmhsV3FxUHZ2MkJiRDY3UVVUK3ZIK0FBRmZBQUVBemdBQUJVUUZzQUFTQUVpeUR4TVVFUkk1QUxBQVJWaXdFaThic1JJY1BsbXdBRVZZc0Fvdkc3RUtIRDVac0FCRldMQUJMeHV4QVJBK1diSVBBUW9SRWpsOHNBOHZHTElGQVFvcldDSFlHL1JaTURFQkF5TVRCaWNtSmpjVE13TUdGeFlYRmpjVEJVVDl2Ryt4eWR6V0YweThTd2dJR00raDRIMEZzUHBRQWx3M0FnTHIxUUhIL2poRk5hVURBellDdHdBQkFFSUFBQWM0QmJBQUN3QklBTEFBUlZpd0FDOGJzUUFjUGxtd0FFVllzQU12RzdFREhENVpzQUJGV0xBSEx4dXhCeHcrV2JBQVJWaXdDUzhic1FrUVBsbXlBUUVLSzFnaDJCdjBXYkFGMExBRzBEQXhBUU1oRXpNRElSTXpBeUVUQWZ2aEFlWGh1K0lCNHVHOC9mb0gvUVd3K3UwRkUvcnRCUlA2VUFXd0FBRUFRdjZoQnpnRnNBQVBBRlFBc0FzdnNBQkZXTEFBTHh1eEFCdytXYkFBUlZpd0F5OGJzUU1jUGxtd0FFVllzQWN2RzdFSEhENVpzQUJGV0xBTkx4dXhEUkErV2JJQkFRb3JXQ0hZRy9SWnNBWFFzQWJRc0FuUXNBclFzQUxRTURFQkF5RVRNd01oRXpNRE13TWpFeUVUQWZ2aEFlWGh1K0lCNHVHODRvOXBvajM2Sy8wRnNQcnRCUlA2N1FVVCt1ZitDZ0ZmQmJBQUFnQ0pBQUFGZ0FXd0FBd0FGUUJlc2dFV0Z4RVNPYkFCRUxBTjBBQ3dBRVZZc0FBdkc3RUFIRDVac0FCRldMQUpMeHV4Q1JBK1diSUNBQWtSRWptd0FpK3dBQkN5Q3dFS0sxZ2gyQnYwV2JBQ0VMSU5BUW9yV0NIWUcvUlpzQWtRc2c0QkNpdFlJZGdiOUZrd01STWhBd1VXRmdjR0JDTWhFeUVCQXdVeU5qYzJKaWVrQWtwbkFUYmE2UkVSL3Ruby9lYmkvbklCNDJBQlNvMi9FUTU4ZXdXdy9hNEJBZVc5eWZFRkdQMm8vZDBCbm9OMmlBUUFBQU1BUlFBQUJwWUZzQUFLQUJNQUZ3QnRzaElZR1JFU09iQVNFTEFHMExBU0VMQVYwQUN3QUVWWXNBa3ZHN0VKSEQ1WnNBQkZXTEFXTHh1eEZodytXYkFBUlZpd0J5OGJzUWNRUGxtd0FFVllzQlF2RzdFVUVENVpzZ0FKQnhFU09iQUFMN0lMQVFvcldDSFlHL1Jac0FjUXNnd0JDaXRZSWRnYjlGa3dNUUVGRmhZSEJnUWpJUk16QXdNRk1qWTNOaVluQVNNVE13R1dBVGJZN0JFUS90anAvZWY4dklKZ0FVcU53QkVPZkh3Q3dMdjl1d05lQVFIaXY4ZjBCYkQ5RVAzZEFaNkRkb2dFL1VFRnNBQUFBZ0EyQUFBRWdRV3dBQW9BRXdCTnNnMFVGUkVTT2JBTkVMQUIwQUN3QUVWWXNBa3ZHN0VKSEQ1WnNBQkZXTEFITHh1eEJ4QStXYklBQ1FjUkVqbXdBQyt5Q3dFS0sxZ2gyQnYwV2JBSEVMSU1BUW9yV0NIWUcvUlpNREVCQlJZV0J3WUVJeUVUTXdNREJUSTJOelltSndHSEFUYlk3QkVRL3RqcC9lZjh2SUpnQVVxTndCRU9mSHdEWGdFQjRyL0g5QVd3L1JEOTNRR2VnM2FJQkFBQkFIVC82UVQ4QmNvQUlnQmdBTEFBUlZpd0ZTOGJzUlVjUGxtd0FFVllzQjh2RzdFZkVENVpzQURRc0I4UXNnTUJDaXRZSWRnYjlGbXdIeEN3Q05Dd0NDK3lMd2dCWGJMUENBRmRzZ2NCQ2l0WUlkZ2I5Rm13RlJDeURnRUtLMWdoMkJ2MFdiQVZFTEFSMERBeEFSWVdGeFlTTndVM0lUWTNOaVluSmdZSEJ6WUFGeDRDRnhZQ0FnY0dKeVltSndFd0I0Mk9yT3czL2MwY0Fpa0pBZ09aa1kvRk1ic3VBVDNjak01M0J3WkwyNkJ2ZmRYNUNBSFBwNXdFQlFFSS9RR2VPRHU1MGdRRnBLc0I1Z0VJQmdOOTdKUnkvay8rdkVRd0F3VCs0UUFDQUVuLzV3Yk9CY2NBRndBbkFIZXlBU2dwRVJJNXNBRVFzQ0xRQUxBQVJWaXdEeThic1E4Y1BsbXdBRVZZc0Frdkc3RUpIRDVac0FCRldMQUFMeHV4QUJBK1diQUFSVml3Qmk4YnNRWVFQbG15Q2dZSkVSSTVmTEFLTHhpeUJRRUtLMWdoMkJ2MFdiQVBFTEliQVFvcldDSFlHL1Jac0FBUXNpTUJDaXRZSWRnYjlGa3dNUVVtSmdJM0l3TWpFek1ETXpZU0pCY1dFaGNXQWdJSEJnRTJKaWNtQmdJSEJ3WVdGeFlTRXpZRUVwdmVhUkRPYnJ2OXUzVEhJY0lCR2FiVjlna0VNNE5sc0FFT0JwYVVodE9IRWdNR21KRzkrU2tVRkFPaUFUYTIvWU1Gc1Axa3pnRkNvd01FL3VIMWFmNjgvdXBlcEFPWHhka0VCSmorMGVoQnhONEVCUUViQVFCK0FBTC82QUFBQk5nRnNRQU5BQllBWWJJUkZ4Z1JFam13RVJDd0F0QUFzQUJGV0xBTEx4dXhDeHcrV2JBQVJWaXdBQzhic1FBUVBsbXdBRVZZc0FNdkc3RURFRDVac2hJQUN4RVNPYkFTTDdJQkFRb3JXQ0hZRy9SWnNnVUJDeEVTT2JBTEVMSVVBUW9yV0NIWUcvUlpNREVoRXlFQkl3RW1KamMySkRNRkF3RUdGaGNGRXljaUJnTWVZLzdCL25uVEFieHlhQXNTQVRUc0FkSDkvYllRaFgwQkdXVCttc1lDTi8zSkFuQTZ5SC9ROEFINlVBUHlmSjBFQVFJK0Fab0FBQUlBUnYvbkJGVUdFUUFjQUNzQVRiSVpMQzBSRWptd0dSQ3dIZEFBc0JRdnNBQkZXTEFJTHh1eENCQStXYklBQ0JRUkVqbXdBQyt5R3dBSUVSSTVzQWdRc2lVQkNpdFlJZGdiOUZtd0FCQ3lLd0VLSzFnaDJCdjBXVEF4QVI0Q0J3Y0dBQ2N1QWo4Q0VnQTNOelkzTXc0Q0JBWUhOaGNtQmc4Q0ZoWVhGalkzTmlZbkFvMTZzVllNQXg3KzE5R0d3bGtRQkFVbkFTZnljWmNabFFwTGl2NjYwa0NwbW4rMkd3Y0RBM2xzaWJzYURuNTVBL3dDZnVDSEYvVCszUVVDamZHUEhpMEJUd0dtTVJVaGIyQjNTVUM0cDY2YkE2dVZMMVdFblFJRHpzaVl0UVFBQUFNQU1BQUFCQTBFT2dBTkFCWUFIZ0JYQUxBQVJWaXdBUzhic1FFWVBsbXdBRVZZc0FBdkc3RUFFRDVac2hjQUFSRVNPWHl3Rnk4WXNnNEJDaXRZSWRnYjlGbXlCdzRYRVJJNXNBQVFzZzhCQ2l0WUlkZ2I5Rm13QVJDeUhnRUtLMWdoMkJ2MFdUQXhNeE1GRmhZSEJnY1dGZ2NHQmdjREF3VXlOamMySmljbEZ6STJOelluSnpDOEFYN0syUW9LeWxCYUJBYm13ZkU1QVI1d2l3c0tZV0grNXQ2RGtnc1Y3UEVFT2dFQms0eWJWaGlCVkpLbkFnSGIvcm9CVzFGSVR3T1ZBVkpPamdjQkFBQUJBQzBBQUFPREJEb0FCUUFyQUxBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0FJdkc3RUNFRDVac0FRUXNnQUJDaXRZSWRnYjlGa3dNUUVoQXlNVElRTm4vaDJodHJ3Q21nT2gvRjhFT2dBQy80Myt3Z1ErQkRvQURnQVVBRkt5RWhVV0VSSTVzQklRc0FuUUFMQU1MN0FBUlZpd0JDOGJzUVFZUGxtd0FFVllzQW92RzdFS0VENVpzZ0FCQ2l0WUlkZ2I5Rm13RDlDd0J0Q3dEQkN3Q2RDd0JCQ3lFUUVLSzFnaDJCdjBXVEF4TnpZMk54TWhBek1ESXhNaEF5TVRCU1VUSVFNQ0xXK0lJRlFDcHFLSFVyUTMvU1UzdFZNQkpBSGpoUDYvUkVTVVp2eXVBWmI4WGY0ckFUNyt3Z0hWQXdNQytQNjcvdVVBQUFIL3BRQUFCZzRFT2dBVkFKQUFzQUJGV0xBSkx4dXhDUmcrV2JBQVJWaXdEUzhic1EwWVBsbXdBRVZZc0JFdkc3RVJHRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3Qmk4YnNRWVFQbG13QUVWWXNCUXZHN0VVRUQ1WnNBSVFzQkRRc0JBdnNyOFFBVjJ5L3hBQlhiSXZFQUZkc3M4UUFYR3lBQUVLSzFnaDJCdjBXYkFFMExJSUVBQVJFam13RUJDd0M5Q3lFd0FRRVJJNU1ERUJJd01qRXlNQkl3RURNeE16RXpNRE13RXpBUUVqQTd5RFViVlNkLzZJOFFIaTljN0JnRTYxVDNNQlgrZitTQUVTMXdIVy9pb0IxdjRxQWpvQ0FQNUFBY0QrUUFIQS9ldjkyd0FCQUNILzZnT3FCRkFBSndCcUFMQUFSVml3RFM4YnNRMFlQbG13QUVWWXNCa3ZHN0VaRUQ1WnNBMFFzZ1lCQ2l0WUlkZ2I5Rm13RFJDd0N0Q3dHUkN3SjlDd0p5K3lMeWNCWGJLL0p3RmRzaVlCQ2l0WUlkZ2I5Rm15RWlZbkVSSTVzQmtRc0J6UXNCa1FzaUFCQ2l0WUlkZ2I5Rmt3TVFFeU5qYzJKaU1tQmdjSE5qWVhGaFlIQmdjV0ZnY09BaWNtSmpjWEJoWVhGalkzTmljbk53SUJabnNJQ1dOWVdvNFJ0QkQ1cktuQkNnckNTMFVGQm5mTWQ2blZCckVFZEY5bmt3c1Z6YmtjQW5WV1QwZFlBbUJPQVpXdkFnS2xpNXhaSVgxUmFKWlFBd0s2bUFGU2F3SUNaRlNoQVFHY0FBQUJBQzhBQUFRM0JEb0FDUUJGQUxBQVJWaXdBQzhic1FBWVBsbXdBRVZZc0Fjdkc3RUhHRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3QlM4YnNRVVFQbG15QkFjQ0VSSTVzZ2tIQWhFU09UQXhBVE1ESXhNQkl4TXpBd044dTd5MWlQMmN1N3kwaHdRNis4WURDZnozQkRyODlnQUFBUUF2QUFBRVZ3UTZBQXdBZHdDd0FFVllzQVF2RzdFRUdENVpzQUJGV0xBSUx4dXhDQmcrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0Fzdkc3RUxFRDVac0FJUXNBYlFzQVl2c3A4R0FWMnkvd1lCWGJMUEJnRnhzcDhHQVhHMHZ3YlBCZ0pkc2k4R0FWMnlid1lCY3JJQkFRb3JXQ0hZRy9SWnNnb0JCaEVTT1RBeEFTTURJeE16QXpNQk13RUJJd0craVZHMXZMVlFiZ0d3NmYzK0FWdldBYzMrTXdRNi9qWUJ5djN2L2RjQUFBSC95QUFBQkRrRU9nQVJBRTJ5QkJJVEVSSTVBTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQUV2RzdFQkVENVpzQUJGV0xBSkx4dXhDUkErV2JBQUVMSURBUW9yV0NIWUcvUlpzQWtRc2d3QkNpdFlJZGdiOUZrd01RRURJeE1oQXdjR0JnY2pOemMyTmpjM0V3UTV2TGFpL3B4UkZqVytsVTRTSjJGOElCSmlCRHI3eGdPaC9vNXM4czREb2dJR29hNW5BZG9BQUFFQU1BQUFCWDRFT2dBTUFGa0FzQUJGV0xBQkx4dXhBUmcrV2JBQVJWaXdDeThic1FzWVBsbXdBRVZZc0FNdkc3RURFRDVac0FCRldMQUdMeHV4QmhBK1diQUFSVml3Q1M4YnNRa1FQbG15QUFzREVSSTVzZ1VMQXhFU09iSUlDd01SRWprd01TVUJNd01qRXdFakF3TWpFek1Db2dIMjVyeTFoLzRzZnRDT3RMemw5d05EKzhZREJmejdBeXo4MUFRNkFBQUJBQzhBQUFRMkJEb0FDd0NLQUxBQVJWaXdCaThic1FZWVBsbXdBRVZZc0Fvdkc3RUtHRDVac0FCRldMQUFMeHV4QUJBK1diQUFSVml3QkM4YnNRUVFQbG13QUJDd0NkQ3dDUyt5YndrQlhiUy9DYzhKQWwyeVB3a0JjYlRQQ2Q4SkFuR3lEd2tCY3JTZkNhOEpBbkd5L3drQlhiSVBDUUZ4c3A4SkFWMnlMd2tCWGJSdkNYOEpBbkt5QWdFS0sxZ2gyQnYwV1RBeElTTVRJUU1qRXpNRElSTXpBM3ExVWY0ZlViVzh0VkVCNEZLMUFjNytNZ1E2L2lzQjFRQUFBUUF2QUFBRU53UTZBQWNBT0FDd0FFVllzQVl2RzdFR0dENVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdCQzhic1FRUVBsbXdCaEN5QWdFS0sxZ2gyQnYwV1RBeElTTVRJUU1qRXlFRGU3V2kvaDZpdGJ3RFRBT2gvRjhFT2dBQUFRQmdBQUFENkFRNkFBY0FNUUN3QUVWWXNBWXZHN0VHR0Q1WnNBQkZXTEFDTHh1eEFoQStXYkFHRUxJQUFRb3JXQ0hZRy9SWnNBVFFzQVhRTURFQklRTWpFeUUzSVFQTy9xQ2l0S0grcHhvRGJnT2svRndEcEpZQUF3Qk0vbUFGUFFZQUFCOEFMQUE2QUgyeUp6czhFUkk1c0NjUXNCTFFzQ2NRc0RYUUFMQURMN0FBUlZpd0FDOGJzUUFZUGxtd0FFVllzQWN2RzdFSEdENVpzQUJGV0xBVEx4dXhFeEkrV2JBQVJWaXdGeThic1JjUVBsbXdFTkN3QnhDeUpBRUtLMWdoMkJ2MFdiQVhFTEl5QVFvcldDSFlHL1Jac0NuUXNBQVFzamNCQ2l0WUlkZ2I5Rmt3TVFFV0Z4TXpBellYRmhjV0R3SUdBaWNtSndNakV3WW5JaVluSmpjM0VoSUJOaWNtSnlZSEF4WVhGalkzQlFZVkZ4WVhGamNUSmlNbUJnY0NKMUpCVjdWWlRWSFZRUndDQ0FJaThiaFhURkMxVVVsSGtKOERBUVlNTGVzRENBc0RFS1l6UFk0c08zK3BHdnlNQmdJVG5TODZqalFxZmFFZ0JGQUNIZ0hRL2lvakFRUHJaM1I0RVBuKzVBTUNJZjVVQWFrZEFkVzVPemRTQVFBQkUvMjlaRWZ6QndJVS9POFFBZ0xIdGcwMVBqQy9Cd0lTQXhNU0FzM1BBQUVBTC82L0JEY0VPZ0FMQURzQXNBZ3ZzQUJGV0xBQUx4dXhBQmcrV2JBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0Fvdkc3RUtFRDVac2dJQkNpdFlJZGdiOUZtd0J0QXdNUk16QXlFVE13TXpBeU1USWV1MW9RSGhvcldpZm1TaU9QenFCRHI4WFFPai9GMytLQUZCQUFBQkFIc0FBQVFBQkRzQUVnQklzZzRURkJFU09RQ3dBRVZZc0JFdkc3RVJHRDVac0FCRldMQUpMeHV4Q1JnK1diQUFSVml3QVM4YnNRRVFQbG15RGdFSkVSSTVmTEFPTHhpeUJBRUtLMWdoMkJ2MFdUQXhJU01UQmljbUpqY1RNd01HRnhZWEZqY1RNd05FdGt0N2RySzdGVEsxTXdZRkVKNXVpV0syQVlraEFnTGF1UUU4L3NNMExaUUdBeDhDR3dBQkFDOEFBQVlJQkRvQUN3QklBTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQU12RzdFREdENVpzQUJGV0xBSEx4dXhCeGcrV2JBQVJWaXdDUzhic1FrUVBsbXlBUUVLSzFnaDJCdjBXYkFGMExBRzBEQXhBUU1oRXpNRElSTXpBeUVUQWFDaEFYK2h0YUlCZnFLMnZQcmp2QVE2L0YwRG8veGRBNlA3eGdRNkFBRUFKUDYvQmYwRU9nQVBBRXNBc0F3dnNBQkZXTEFBTHh1eEFCZytXYkFBUlZpd0F5OGJzUU1ZUGxtd0FFVllzQWN2RzdFSEdENVpzQUJGV0xBTkx4dXhEUkErV2JJQkFRb3JXQ0hZRy9SWnNBWFFzQW5RTURFQkF5RVRNd01oRXpNRE13TWpFeUVUQVphaUFYK2l0S0VCZmFLMm9wUmpvemo3QTd3RU92eGRBNlA4WFFPai9GMytLQUZCQkRvQUFBSUFWZ0FBQkhzRU9nQU1BQlVBWHJJQkZoY1JFam13QVJDd0RkQUFzQUJGV0xBQUx4dXhBQmcrV2JBQVJWaXdDUzhic1FrUVBsbXlBZ0FKRVJJNXNBSXZzQUFRc2dzQkNpdFlJZGdiOUZtd0FoQ3lEUUVLSzFnaDJCdjBXYkFKRUxJT0FRb3JXQ0hZRy9SWk1ERVRJUU1YRmhZSEJnWWpJUk1oQVFNRk5qWTNOaVluY1FIc1FmNmp2Z3NMODd2K05hSCt5UUdzUndFQWE0Y05DMVpZQkRyK2l3RUV1cGlseVFPaS9veithUUVDY1Y1WGF3UUFBd0F3QUFBRnFRUTZBQW9BRXdBWEFGb0FzQUJGV0xBS0x4dXhDaGcrV2JBQVJWaXdGaThic1JZWVBsbXdBRVZZc0Fndkc3RUlFRDVac0FCRldMQVZMeHV4RlJBK1diSUFDQW9SRWptd0FDK3lDd0VLSzFnaDJCdjBXYkFJRUxJTUFRb3JXQ0hZRy9SWk1ERUJGeFlXQndZR0l5RVRNd01EQlRZMk56WW1Kd0VqRXpNQlgrMnh3Z3NMODczK043eTFXMGNCQUd1SERRdFhWd0tTdGJ5MUFzVUNBYnVacGNrRU92MzAvbWtCQW5GZVYyc0UvZE1FT2dBQUFnQXdBQUFEdndRNkFBb0FFd0JOc2djVUZSRVNPYkFIRUxBTjBBQ3dBRVZZc0Frdkc3RUpHRDVac0FCRldMQUhMeHV4QnhBK1diSUFDUWNSRWptd0FDK3lDd0VLSzFnaDJCdjBXYkFIRUxJTUFRb3JXQ0hZRy9SWk1ERUJGeFlXQndZR0l5RVRNd01EQlRZMk56WW1Kd0ZmN2JIQ0N3dnp2ZjQzdkxWYlJ3RUFhNGNOQzFkWEFzVUNBYnVacGNrRU92MzAvbWtCQW5GZVYyc0VBQUFCQURULzV3UEVCRkFBSVFCb0FMQUFSVml3Q0M4YnNRZ1lQbG13QUVWWXNCSXZHN0VTRUQ1WnNBZ1FzZ0FCQ2l0WUlkZ2I5Rm13Q0JDd0JOQ3dFaEN3RmRDd0VoQ3lHUUVLSzFnaDJCdjBXYkFTRUxBZTBMQWVMN0l2SGdGZHNyOGVBVjJ5SUI0QmNiSWRBUW9yV0NIWUcvUlpNREVCSmdZSEJ6NENGeDRDRnhZSEJ3WUFKeVltTnhjR0ZoY1dOamNoTnlFMkpnSTdZNWdVcXdxRHlXeHNwR01KQlFZREhmN1YwS1hLQ0tzR2EyQjBzREgrY0JzQmhBaHpBN2NDZUY0QlpLdGZBUU5qdTNkQlFSbjcvc1lGQk55b0FXV0pCQVd4cnBpUnNBQUNBREQvNXdZSEJGUUFGUUFtQUgwQXNBQkZXTEFWTHh1eEZSZytXYkFBUlZpd0JDOGJzUVFZUGxtd0FFVllzQkl2RzdFU0VENVpzQUJGV0xBTUx4dXhEQkErV2JJQUVoVVJFamw4c0FBdkdMS0FBQUZkdEVBQVVBQUNYYlJRQUdBQUFuR3lFUUVLSzFnaDJCdjBXYkFNRUxJYkFRb3JXQ0hZRy9SWnNBUVFzaU1CQ2l0WUlkZ2I5Rmt3TVFFek5nQVhIZ0lIQndJQUp5NENOd1VESXhNekFRWVhGQllYRmpZM05pY21KaWNtQmdjQlVQUkNBU1BBaUw5WER3RWkvc3pZZnNGZEMvNy9VN1M4dEFGUEJRRjRib3ZMR3djRkNYWm1qTWdhQW0vbEFRQUZCSS82bUFuKy9QN0tCUUtFNElZQi9pa0VPdjNRS2kyTm9RUUY1TWsvUlhpTkJBWGp1QUFDLzc4QUFBUC9CRHNBRFFBV0FHR3lGQmNZRVJJNXNCUVFzQTNRQUxBQVJWaXdBQzhic1FBWVBsbXdBRVZZc0FFdkc3RUJFRDVac0FCRldMQUZMeHV4QlJBK1diSVNBQUVSRWptd0VpK3lBd0VLSzFnaDJCdjBXYklIQXdBUkVqbXdBQkN5RXdFS0sxZ2gyQnYwV1RBeEFRTWpFeUVCSXdFbUpqYzJOak1CQmhZWEJSTW5CZ1lELzd5MlNmNzUvci9QQVY5VlVBWUwrcmorK0FwV1RnRWlQL2RwamdRNis4WUJwZjViQWNVcW5GMmJ1UDZzVFZnRUFRRm5BUUptQUFBQkFCLytSUVBqQmdBQUl3Q0FBTEFoTDdBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0Fzdkc3RUxFajVac0FCRldMQWFMeHV4R2hBK1diSy9JUUZkc2k4aEFWMnlEeUVCWGJJaUdpRVJFam13SWkreUFRRUtLMWdoMkJ2MFdiSUNHZ1FSRWptd0N4Q3lFQUVLSzFnaDJCdjBXYkFFRUxJWEFRb3JXQ0hZRy9SWnNBRVFzQnpRc0NJUXNCL1FNREVCSVFNMkZ4WVdCd01HQmljaUp6Y1dNekkzRXpZbkppY21Cd01qRXlNM016Y3pCeUVDdS83ck5vNjZtcEVUZ1JiQWxTMUxIekV4aXlPQkJnUVJsYVo0aHJYU254cWZIN1VmQVJZRXVmNzltd1FFejdYODRxaTZCQlNTRDlNREZURXFqQU1Fc3Z6OEJMbVlyNjhBQVFCTy8rZ0QvUVJUQUI0QVpRQ3dBRVZZc0E4dkc3RVBHRDVac0FCRldMQUlMeHV4Q0JBK1diSUFBUW9yV0NIWUcvUlpzQWdRc0FUUXNBOFFzQkxRc0E4UXNoWUJDaXRZSWRnYjlGbXdDQkN3R3RDd0dpK3l2eG9CWGJML0dnRmRzaThhQVYyeUd3RUtLMWdoMkJ2MFdUQXhKUlkyTnpjT0FpY21BamMzRWdBWEZoWUhJelFtSnlZR0J5RUhJUVlXQWZGaG5SdXNENFhPYThyUkZ3TWVBUzNYcWNvQ3FuRmZlckl4QVk0Yi9uMFBkb0lDYzJFQlphaGdBd1VCS08wYkFRSUJNUVVFM2Focmd3UUZwNjJZbHJVQUF2L0RBQUFHTHdRNkFCZ0FJUUI1c2dvaUl4RVNPYkFLRUxBYTBBQ3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQUlMeHV4Q0JBK1diQUFSVml3RUM4YnNSQVFQbG15QWdBSUVSSTVzQUl2c0FBUXNnb0JDaXRZSWRnYjlGbXdFQkN5RXdFS0sxZ2gyQnYwV2JBSUVMSWJBUW9yV0NIWUcvUlpzQUlRc2lFQkNpdFlJZGdiOUZrd01RRURGeFlXQndZR0l5RVRJUU1IQmdZSEl6YzNOalkzTnhNQkF3VTJOamMySmljRUZraitwYjRKQ2ZHKy9qYWkvcnRSR0RQQW1rZ1RKbUY4SUJKaUFrZEFBUUJtakFzTFdGc0VPdjVrQVFXdGtadS9BNkgram5ibjBRR2lBZ2Focm1jQjJ2M00vbzhCQW0xWlNsb0ZBQUFDQUM4QUFBWlBCRG9BRWdBYkFIdXlBUndkRVJJNXNBRVFzQlBRQUxBQVJWaXdBaThic1FJWVBsbXdBRVZZc0JFdkc3RVJHRDVac0FCRldMQUxMeHV4Q3hBK1diQUFSVml3RHk4YnNROFFQbG15QVJFTEVSSTVzQUV2c0FUUXNBRVFzZzBCQ2l0WUlkZ2I5Rm13QkJDeUV3RUtLMWdoMkJ2MFdiQUxFTElVQVFvcldDSFlHL1JaTURFQklSTXpBeGNXRmdjR0JpTWhFeUVESXhNekFRTUZOalkzTmlZbkFWa0I0VWUxU1A2andBa0o4YjcrTjF2K0gxdTF2TFVDTkVBQkFHYUtEUXRYWEFLaEFabitZd0VFcnBDYnZ3SUsvZllFT3YzTS9vOEJBbXhhU2xvRkFBRUFId0FBQStNR0FBQWFBSG15QXhzY0VSSTVBTEFYTDdBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0Fndkc3RUlFRDVac0FCRldMQVJMeHV4RVJBK1diSy9Gd0Zkc2k4WEFWMnlEeGNCWGJJYUVSY1JFam13R2kreUFBRUtLMWdoMkJ2MFdiSUNCQkVSRWptd0JCQ3lEZ0VLSzFnaDJCdjBXYkFBRUxBVDBMQWFFTEFWMERBeEFTRUROaGNXRmdjREl4TTJKeVluSmdjREl4TWpOek0zTXdjaEF0SCswVEdPdVppVEUzYTFkd1lGRVpTbWVJYTEwNHNiaWg2MUlBRXRCTDcrK0pzRUFzMjUvVHNDeURFcWpBTUVzdno4Qkw2WHE2c0FBUUF2L3B3RU53UTZBQXNBUlFDd0NDK3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQURMeHV4QXhnK1diQUFSVml3QlM4YnNRVVFQbG13QUVWWXNBa3ZHN0VKRUQ1WnNnRUJDaXRZSWRnYjlGa3dNUUVESVJNekF5RURJeE1oRXdHZ29RSGhvclc4L3JnL3RENytzYndFT3Z4ZEE2UDd4djZjQVdRRU9nQUFBUUJ2LytRRzR3V3dBQ0VBWUxJR0lpTVJFamtBc0FCRldMQUFMeHV4QUJ3K1diQUFSVml3R1M4YnNSa2NQbG13QUVWWXNBNHZHN0VPSEQ1WnNBQkZXTEFFTHh1eEJCQStXYkFBUlZpd0NTOGJzUWtRUGxteUZBRUtLMWdoMkJ2MFdiSUhGQVFSRWptd0hkQXdNUUVEQmdZbkppWW5CaWNtSmpjVE13TUdGeFlXRnhZMk54TXpBd1lXRnhZMk54TUc0N1FiLzdscW5DQ0wzYXUwRTdTOHN3VUVCMUpGYlp3UnRjS3pERjVlWkk0VnRnV3crOTNFNHdRQ1gxQzNCZ2JudGdRais5d3RMVTVhQXdXUWVnUWsrOXg0aWdNRGhuY0VMd0FCQUUvLzVnWGZCRG9BSVFCTEFMQUFSVml3RGk4YnNRNFlQbG13QUVWWXNCZ3ZHN0VZR0Q1WnNBQkZXTEFoTHh1eElSZytXYkFBUlZpd0NTOGJzUWtRUGxtd0JOQ3dDUkN5RkFFS0sxZ2gyQnYwV2JBZDBEQXhBUU1HQmljbUppY0dKeVltTnhNekF3WVhGaFlYRmpZM0V6TURCaFlYRmpZM0V3WGZlaG5kckZxSUgzdSttS0lSZXJSNkJBTURSRHhiZ3hKN3Rub0tUMDlWZUJKNkJEcjlLTERNQkFKTlJaZ0VCTTZsQXRuOUppWW1RRkFEQkhockF0cjlKbVozQWdOMWJRTGFBQUFDQUM3Ly9BUERCaFlBRWdBYkFIR3lGUndkRVJJNXNCVVFzQW5RQUxBQVJWaXdEeThic1E4ZVBsbXdBRVZZc0Frdkc3RUpFRDVac2hJUENSRVNPYkFTTDdJQUFRb3JXQ0hZRy9SWnNnTVBDUkVTT2JBREw3QUFFTEFMMExBU0VMQU4wTEFKRUxJVkFRb3JXQ0hZRy9SWnNBTVFzaHNCQ2l0WUlkZ2I5Rmt3TVFFaEF4Y1dGZ2NHQmljaEV5TTNNeE16QXlFQkF4YzJOamMySmljQzF2N0pPdjJsdkF3Tys3WCtOYnk2RzdnNXRqa0JPUDVhVGY5b2pnd05WMVlFT3Y2d0FRYkVuckRWQkFRNmx3RkYvcnY5Z2Y1RkFnSjdhVnQzQkFBQUFRQkovK2NHc3dYS0FDc0FoN0lZTEMwUkVqa0FzQUJGV0xBckx4dXhLeHcrV2JBQVJWaXdCaThic1FZY1BsbXdBRVZZc0Nndkc3RW9FRDVac0FCRldMQWdMeHV4SUJBK1diSUFLeWdSRWptd0FDK3dCaEN3Q3RDd0JoQ3lEUUVLSzFnaDJCdjBXYkFBRUxBUTBMQUFFTEluQVFvcldDSFlHL1Jac0JMUXNDQVFzaGtCQ2l0WUlkZ2I5Rm13SUJDd0hOQXdNUUV6TmpZM05oY1dFaGNqSmlZbkpnWUhJUWNsQmdjR0ZoWVhGalkzTndZQUp5WUNKeVkzTndjREl4TXpBWmE1SVh4YXNQblA3d2E2QjRxQnEvTTlBaFFiL2ZjT0FnWStnVjJaeURTNkwvNjY0OHIzQndNT0JzWjN2UDI4QTBDUStWZXFCUVQrL2VLb29RTUY5UG1YQVU0OWJzQmtBd1dkckFIai92c0dCQUVZNVZCUUhBSDlWd1d3QUFFQUxQL29CWTBFVXdBa0FNU3lBeVVtRVJJNUFMQUFSVml3QkM4YnNRUVlQbG13QUVWWXNDUXZHN0VrR0Q1WnNBQkZXTEFoTHh1eElSQStXYkFBUlZpd0hDOGJzUndRUGxteUR4d0VFUkk1c0E4dnRMOFB6dzhDWGJRL0QwOFBBbkcwencvZkR3Snh0QThQSHc4Q2NyU2ZENjhQQW5HeS93OEJYYklQRHdGeHRDOFBQdzhDWGJSdkQzOFBBbkt3QU5DeUNBOEVFUkk1c0FRUXNnc0JDaXRZSWRnYjlGbXdEeEN5RUFFS0sxZ2gyQnYwV2JBY0VMSVVBUW9yV0NIWUcvUlpzaGNjQkJFU09iQVFFTEFmMERBeEFUTTJKQmNXRmdjak5DWW5KZ1lISVFjaEJoWVhGalkzTnc0Q0p5WUNOd2NESXhNekFVeXhRUUVadzZmTUFxcHdYMzJ4TUFHdUcvNWREM1oyWnBrYXJBK0h6R3UvMnhQQVVMYTh0Z0puOFB3RkJOMm9hb1FFQTZtcWw1YTFBd0oxWHdGbHFWOERCQUVUendIK01BUTZBQUFDLzdvQUFBUlRCYkFBQ3dBT0FGWUFzQUJGV0xBSUx4dXhDQncrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0FZdkc3RUdFRDVac0FCRldMQUtMeHV4Q2hBK1diSU5DQUlSRWptd0RTK3lBQUVLSzFnaDJCdjBXYkFFMExJT0NBSVJFamt3TVFFakF5TVRJd01qQVRNVEl3RWhBd05WcDB5NFRaYmV5UUw2cC9pNC9ob0JobHNCdHY1S0FiYitTZ1d3K2xBQ1dnSkhBQUwvb2dBQUE1b0VPZ0FMQUJBQVZnQ3dBRVZZc0Fndkc3RUlHRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3Qmk4YnNRWVFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNnMENDQkVTT2JBTkw3SUJBUW9yV0NIWUcvUlpzQVRRc2c4SUFoRVNPVEF4QVNNREl4TWpBeU1CTXhNakFTRURKd2NDcG5RMHRUUnlxTUVDYUp6MHNmNTJBU1ZJQlNnQktmN1hBU24rMXdRNis4WUJ3UUZHVEZzQUFnQmFBQUFHVlFXd0FCTUFGZ0I4QUxBQVJWaXdBaThic1FJY1BsbXdBRVZZc0JJdkc3RVNIRDVac0FCRldMQUVMeHV4QkJBK1diQUFSVml3Q0M4YnNRZ1FQbG13QUVWWXNBd3ZHN0VNRUQ1WnNBQkZXTEFRTHh1eEVCQStXYklWQWdRUkVqbXdGUyt3QU5Dd0ZSQ3lCZ0VLSzFnaDJCdjBXYkFLMExBR0VMQU8wTElXQWdRUkVqa3dNUUVoQVRNVEl3TWpBeU1USXdNakV5RURJeE16QVNFREFYOEJkZ0hCcC9pNVJxZE11RTJWNE1qbi9zSk52ZjI5QWFNQmhWb0NXUU5YK2xBQnR2NUtBYmIrU2dHNC9rZ0ZzUHlxQWtjQUFnQk9BQUFGU3dRNkFCTUFHQUIvQUxBQVJWaXdBaThic1FJWVBsbXdBRVZZc0JJdkc3RVNHRDVac0FCRldMQUVMeHV4QkJBK1diQUFSVml3Q0M4YnNRZ1FQbG13QUVWWXNBd3ZHN0VNRUQ1WnNBQkZXTEFRTHh1eEVCQStXYklBRUJJUkVqbXdBQyt3QWRDeURnRUtLMWdoMkJ2MFdiQUwwTEFIMExBQkVMQVUwTEFWMExJWEVnUVJFamt3TVFFaEFUTVRJd01qQXlNVEl3TWpFeU1ESXhNekFTRURKd2NCVVFFQ0FXbWI5TEJEZFRTMU5YT293YXJHTkxXOHRnRlJBU1ZJQmljQndRSjUrOFlCS2Y3WEFTbisxd0VvL3RnRU92MkhBVVpNV3dBQ0FDWUFBQVl2QmJBQUhnQWlBSGF5RGlNa0VSSTVzQTRRc0IvUUFMQUFSVml3SFM4YnNSMGNQbG13QUVWWXNCWXZHN0VXRUQ1WnNBQkZXTEFHTHh1eEJoQStXYkFBUlZpd0RpOGJzUTRRUGxteUd3NGRFUkk1c0JzdnNBRFFzQnNRc2hJQkNpdFlJZGdiOUZtd0ROQ3dHeEN3SDlDd0hSQ3lJZ0VLSzFnaDJCdjBXVEF4QVRNeUZnY0RJeE0ySnlZbkp3Y0RJeE1uSnlZR0J3TWpFellrTXpNQkJRRXpBUVVFUWczWTFSZzh2VDBJQnhYSmR4NXR2WElHZ0ptb0dEMjhQUjRCRVBnay92d0VodjA4RHdGby9kVURKK2JRL284QmNrTTBvQU1DSmYyWEFuZ1RBd0tJa2Y2SkFYSGIzd0tGQXYxOEFlZ0JBQUlBS1FBQUJRc0VPZ0FjQUNBQVdBQ3dBRVZZc0FVdkc3RUZHRDVac0FCRldMQWNMeHV4SEJBK1diSUVIQVVSRWptd0JDK3dCOUN3SEJDd0ZkQ3dETkN3QkJDeUdBRUtLMWdoMkJ2MFdiQVIwTEFFRUxBZDBMQUZFTElnQVFvcldDSFlHL1JaTURFek56WTJOd01oQVJZV0J3Y2pOelluSmljbkJ3TWpFeWNuSmdZSEJ3RVhFeUVwR2g3dDFyd0RvLzZOcTZjV0diWVpCd0lLdFRVUlQ3VlVBenFEbXhnY0FmVUo2LzZmcXRMWENRSGUvaDRMNU1Xa3BUMHpxQWNDRnY1UUFid0pBUUtDajdjQ1hBRUJSd0FDQUVnQUFBaGFCYkFBSkFBb0FKbXlJQ2txRVJJNXNDQVFzQ2pRQUxBQVJWaXdCeThic1FjY1BsbXdBRVZZc0Fzdkc3RUxIRDVac0FCRldMQUFMeHV4QUJBK1diQUFSVml3QlM4YnNRVVFQbG13QUVWWXNCTXZHN0VURUQ1WnNBQkZXTEFjTHh1eEhCQStXYklKQlFjUkVqbXdDUyt5QkFFS0sxZ2gyQnYwV2JBSkVMQU4wTEFFRUxBWjBMQUVFTEFmMExBSkVMQWwwTEFMRUxJb0FRb3JXQ0hZRy9SWk1ERWhFelkzQlFNakV6TURJUUVoQVRNV0Z4WUhBeU1UTmljbUp5Y0hBeU1USnljbUJnY0RBVE1CQlFKSFF5RmYvbTF6dlAyOGNBTkYvdlFFa1A0S0U5Wm9hQmM4dlQwSUJ4U3drUjl0dkhJSGdKV3FHRDRDaVE4QmFQM1ZBWXlvWXdQOWJBV3cvWHdDaFAxM0FYSnowUDZQQVhKRE5KUU5CQ2Y5bVFKM0ZBSUNnNVgraVFNcUFlZ0JBQUFDQUM0QUFBYnRCRG9BSWdBbUFJd0FzQUJGV0xBTEx4dXhDeGcrV2JBQVJWaXdDQzhic1FnWVBsbXdBRVZZc0FVdkc3RUZFRDVac0FCRldMQUFMeHV4QUJBK1diQUFSVml3R3k4YnNSc1FQbG13QUVWWXNCSXZHN0VTRUQ1WnNna0ZDQkVTT2JBSkw3SUVBUW9yV0NIWUcvUlpzQWtRc0EzUXNBUVFzQmZRc0FRUXNCN1FzQWtRc0NQUXNBc1FzaVlCQ2l0WUlkZ2I5Rmt3TVNFM05qY0ZBeU1UTXdNaEF5RUJGaFlIQnlNM05pY21KeWNIQXlNVEp5Y2lCZ2NIQVJjVElRSUtIQjFmL3BCUHRieTJWQUxCeEFPay9veXVwQlladGhrSEFncTFOUkZQdFZRRFI0R1VGeGtCOVFuci9wK3FzMm9EL2p3RU92NGlBZDcrSFEza3dxU2xQVE9vQndJVy9sQUJ2QWdDaVpta0Fsd0JBVWNBQXYvTy9rZ0VJUWVJQUMwQU5nQ0dBTEF6TDdBQVJWaXdDUzhic1FrY1BsbXdBRVZZc0I0dkc3RWVFajVac0FCRldMQVlMeHV4R0JBK1diQUpFTElJQVFvcldDSFlHL1Jac0JnUXNDM1FzQzB2c2l3QkNpdFlJZGdiOUZteUVDd3RFUkk1c0JnUXNpUUJDaXRZSWRnYjlGbXlEek1CWGJBekVMQTIwTEEyTDdRUE5oODJBbDJ5TGpNMkVSSTVzRERRc0RBdk1ERUJNalkzTmlZbkp5VTNCUjRDQndZRkZoWUhEZ0lqSndZR0J3WVhCeVltTnpZMk16TXlOamMySmljbk53RTNOeGNCSXdNMUZ3R3prNzhRREhCekQvN0xHd0VlZXNOaENCSCs3bXBrQ1FxTDdJMDBVVmtHRUk1UmJXc0RCYjJwSUl6QUR3NkdrWlViQVp1eG9BSCs0bS9ObGdNMmczcGhlUWtCQVpnQkEyT3FjZFZ3TEs1eGdzVnJBUU0vTm05RWVqbWhXMzZKbW4xNWhRVUJtQU9tcUFNTi91OEJFQTRDQUFML3l2NUlBNWdHTWdBb0FERUFud0N3TGkrd0FFVllzQWd2RzdFSUdENVpzQUJGV0xBYkx4dXhHeEkrV2JBQVJWaXdGUzhic1JVUVBsbXdDQkN5QndFS0sxZ2gyQnYwV2JBVkVMQW8wTEFvTDdJdktBRmRzdjhvQVYyeWp5Z0JjYksvS0FGZHNzOG9BWEd5WHlnQmNySW5BUW9yV0NIWUcvUlpzZzhuS0JFU09iQVZFTEloQVFvcldDSFlHL1Jac0M0UXNERFFzREF2dEE4d0h6QUNYYklwTGpBUkVqbXdLOUN3S3k4d01RRXlOamMySmljbE53VVdGZ2NHQmdjV0ZnY0dCQ01qQmdjR0Z3Y21KamMyTmpNeU5qYzJKeWMzQVRjM0Z3RWpBelVYQVlpSG1Rc0paMjMrenh3QkdMVFBDQVZuZGxaVEJBaisrOVFpbnhFUWpsSm5jUVFGdXJpTW1Rc1YrS1FiQVQ2eG53SCs0bS9ObHdKb1ZsTS9UUU1CbVFFRnBJSkpkak1qZGt1WXN3VnphMGw1TnFGZWZZcGZVWllHQVpnREhxZ0REZjd2QVJBT0FnQURBR24vNlFUOEJjZ0FFZ0FiQUNRQVpySUlKU1lSRWptd0NCQ3dGTkN3Q0JDd0hkQUFzQUJGV0xBSkx4dXhDUncrV2JBQVJWaXdBQzhic1FBUVBsbXdDUkN5RXdFS0sxZ2gyQnYwV2JJV0FBa1JFamw4c0JZdkdMQUFFTEljQVFvcldDSFlHL1Jac0JZUXNpQUJDaXRZSWRnYjlGa3dNUVVtQWljbUVqYzJKQmNXRWhjV0J3Y0dBZ1FUSmdJRElUWTNOaVlCRmpZM0lRWVhGQllDUXRQM0NnVTNSMkFCS0xmVTlna0RDZ3dmd3Y3bk1iSDNPd0wrQ0FJRG1QNmVydlU2L1FJSEFaZ1VCQUVmOUc0QlVJcTd3Z1FFL3VQM1ZGTlUyZjYycFFVM0JmNzUvdnc0UEw3USszTUcvUDQyT2JIUUFBTUFRdi9uQkNBRVV3QVJBQmdBSHdCTkFMQUFSVml3QkM4YnNRUVlQbG13QUVWWXNBMHZHN0VORUQ1WnNoSUJDaXRZSWRnYjlGbXlIQTBFRVJJNWZMQWNMeGl5RmdFS0sxZ2gyQnYwV2JBRUVMSVpBUW9yV0NIWUcvUlpNREVUTmhJMkZ4NENCd2NHQWdZbkxnSTNBUlkyTnlFR0ZnRW1CZ2NoTmlaVUZKdnZqNGkvV0JBQ0ZKenZqb2kvV0JBQmwzaTRPUDJ3REh3QkIzbTNOUUpOQjM0Q0lKNEJCbzhFQkkvOGxoZWQvdjZOQkFTTytKWCtlQVdwc0pEQkF6SURxcUtRdGdBQkFLMEFBQVZMQmNZQUR3QS9BTEFBUlZpd0R5OGJzUThjUGxtd0FFVllzQVl2RzdFR0hENVpzQUJGV0xBTkx4dXhEUkErV2JJQkRROFJFam13QmhDeUNBNEtLMWdoMkJ2MFdUQXhBUmMzQVRZMk14Y0hJeVlIQVNNRE13SUpDRHdCZlVtYmFqTVZDbWhGL2NLbjdjUUJibmVHQXlLcWZRS3JBNVQ3ZUFXd0FBRUFoQUFBQkR3RVVBQVFBRWF5QWhFU0VSSTVBTEFBUlZpd0JTOGJzUVVZUGxtd0FFVllzQkF2RzdFUUdENVpzQUJGV0xBTkx4dXhEUkErV2JJQkRSQVJFam13QlJDeUNnRUtLMWdoMkJ2MFdUQXhBUmMzRXpZek1oY0hKaU1pQndFakF6TUJtZ1FzOEdhc1BEUWtGaE5LT3Y1WWliYXhBVEpYYVFJZTdodVNDWEg4eFFRNkFBQUNBR3IvY3dUNkJqVUFGUUFwQUVnQXNBQkZXTEFMTHh1eEN4dytXYkFBUlZpd0F5OGJzUU1RUGxtd0FOQ3dDeEN3RHRDd0N4Q3lHd0VLSzFnaDJCdjBXYkFZMExBQUVMSWxBUW9yV0NIWUcvUlpzQ0xRTURFRkJ5TTNKZ0luSmpjU0FEYzNGd2NXRWhjVUJ3SUFFd0luQnljM0JnSVBBZ0lYTnhjSE5oSTNOZ0taRzdVYnNNWURBUm95QVR2cUdiVWFyN29DSGpUKzBjZ1B0aFMxRnByTUpCRUpGT1lXdFJlWHhDSWZESUdCSUFFZzRXNmFBU0VCWVI5M0FYb24vdURjZXFMKzZ2NnZBNzhCQXoxaUFXWWkvdm5WY21YK20wWm5BV1luQVFmZXlRQUFBZ0JFLzRnRUxRUzJBQk1BSndCTEFMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNBMHZHN0VORUQ1WnNBQVFzQVBRc0EwUXNBclFzaFFCQ2l0WUlkZ2I5Rm13QUJDeUhRRUtLMWdoMkJ2MFdiQWEwTEFVRUxBbDBEQXhBVGNYQnhZU0J3Y0dBZ2NISnpjbUFqYzNOaElUTmhJMU5DWW5CeWMzQmdZSEJ3WVZGQmMzRndJMkY3VVlvYUlXQWh6L3hSZTFGNTZlRlFNZS9NK0pta3BGRmJVV2NZMFhBZ2VLRnJVRVJYRUJjU2IrMnM0WDIvN2NJR3dCYmlZQkk4b1c0d0VoL0drdkFSYkVaSkFlWXdGa0s4cVJGVE01MEVGbkFRQUFBd0IwLytZR21nZFdBREVBUkFCTUFKa0FzQUJGV0xBV0x4dXhGaHcrV2JBQVJWaXdEUzhic1EwUVBsbXdGaEN3QU5Dd0RSQ3dDTkN5Q3cwV0VSSTVzQllRc2hjQkNpdFlJZGdiOUZtd0RSQ3lId0VLSzFnaDJCdjBXYklqRmcwUkVqbXdLTkN3RnhDd01kQ3dGaEN3UE5Dd1BDK3dOTkN3TkMreU1nSUtLMWdoMkJ2MFdiQTBFTEEzMExBM0w3SkFBZ29yV0NIWUcvUlpzRHdRc0VqUXNFZ3ZzRXpRc0V3dk1ERUJGaFlIQXc0Q0p5WW1Kd1luSmlZM054TTJOelkzQndZREF3WVhGaFlYRmpZM0V6TURCaFlYRmpZM0V6WW5KaVluRXdjbkppUWpJZ1lIQnljM05qWVhIZ01CTmpjM0Z3Y0dCd1UvcTdBWFhCTjh3WHBzb3lPSTI2T3hDZ05mSTNsNXZoTGFNVmtGQWdKUVNteVpGVWU4Umc1bVoyR0dHRjBHQVFKTlNhd0tQa2IrOEV3MlJRa0NmUU1KaFcwd1Y3WmIvZ0JNRHhLYUR4T2JCYThKOThYOXhZblNiZ1FDWFU2eEJBWGh1U1lDVk1seGNBU2VCLzdOL2RVdE1sbHJCQVdNZmdHdC9sTjFqUVFEbFpBQ1F5OHlWV2dHQWNXQkFnWjZPelVTQVNSc2NnSUJHRThZL3BKUlFXQUJaVzlaQUFBREFGTC81UVdtQmZZQUt3QS9BRWNBa2dDd0FFVllzQk12RzdFVEdENVpzQUJGV0xBTUx4dXhEQkErV2JBVEVMQUEwTEFNRUxBSDBMQVRFTElVQVFvcldDSFlHL1Jac0F3UXNoc0JDaXRZSWRnYjlGbXlId3dURVJJNXNDVFFzQlFRc0N2UXNCTVFzRGJRc0RZdnNDM1FzQzB2c2l3Q0NpdFlJZGdiOUZtd0xSQ3dNdEN3TWkreU93SUtLMWdoMkJ2MFdiQXRFTEJFMExCRUw3QkgwTEJITHpBeEFSWVdCd01HQmljbUppY0dKeVltTnhNMk5qY0hCZ01EQndZV0Z4WTJOemN6QndZV0Z4WTJOeE0zTkNjVEJ5NERJeVlHQndjbk56WTJGeDREQVRZM054Y0hCZ2NFZEpxWUVpb2IyYVJpamlGOXZKaWVFeXdkMTY0UnVTY3BBd05DUVZ1REVTYTBKQXRaVjFKd0V5MEVmTzBLV0ZLeFdDMDFSZ2tDZlFJTGhXMHZWNzVWL2Z4SkRoV2JEaFNZQkVRSjRiTCszOFRkQkFKUFJKb0dBK08xQVMrL3pnU1lCLzd6L3VRdFkyc0NCWGxyN094a2VnSURpSUFCTTBTaERRSEtnUUlYVFJvQk9qVVNBU1J0Y1FJQkdGSVYvb2hRTlcwQlpYSlhBQUFDQUcvLzRnYmpCd01BSWdBcUFIVUFzQUJGV0xBWkx4dXhHUncrV2JBQVJWaXdEeThic1E4Y1BsbXdBRVZZc0NJdkc3RWlIRDVac0FCRldMQUtMeHV4Q2hBK1diQUUwTElJQ2c4UkVqbXdDaEN5RlFFS0sxZ2gyQnYwV2JBZTBMQVpFTEFwMExBcEw3QXEwTEFxTDdJa0Jnb3JXQ0hZRy9SWnNDb1FzQ2ZRc0Njdk1ERUJBd1lHQnlNbUppY0dKeVltTnhNekF3WVhGaFlYRmpZM0V6TURCaFlYRmpZM0V5VTNJUWNoQnlNM0J1TzBHL2F6RG0yYUlJM2JxN1FUdEx5ekJRUUhVa1ZybWhhMHdyTU1YbDVramhXMi9JY1RBeFVTL3I4V3BCWUZzUHZkd09JQkFtQlB1UWdHNTdZRUkvdmNMUzFPV2dNRmlvQUVKUHZjZUlvREE0WjNCQy9vYTJ0OWZRQUFBZ0JQLytZRjN3V3dBQ0FBS0FCZ0FMQUFSVml3Rnk4YnNSY1lQbG13QUVWWXNBZ3ZHN0VJRUQ1WnNBVFFzQmNRc0EzUXNBZ1FzaE1CQ2l0WUlkZ2I5Rm13SE5Dd0Z4Q3dJTkN3RnhDd0o5Q3dKeSt3S05Dd0tDK3lJZ1lLSzFnaDJCdjBXYkFvRUxBbDBMQWxMekF4QVFNR0JpY21Kd1luSmlZM0V6TURCaGNXRmhjV05qY1RNd01HRmhjV05qY1RBVGNoQnlFSEl6Y0YzM3NYM3F1K1JIdSttNThSZXJSNkJBTURSRHhiZ3hKN3Rub0tUMDlWZUJKNi9Oc1VBeFFRL3I0WHBSY0VPdjBvcjgwRUJZK1lCQVRVbndMWi9TWW1Ka0JRQXdSNGF3TGEvU1ptZHdJRGRXMEMyZ0VMYTJ1QWdBQUJBR2IraEFUeUJjZ0FIQUJDQUxBQkw3QUFSVml3Q3k4YnNRc2NQbG13QUVWWXNBSXZHN0VDRUQ1WnNBc1FzQS9Rc0FzUXNoSUJDaXRZSWRnYjlGbXdBaEN5R3dFS0sxZ2gyQnYwV1RBeEFTTVRKaVlDTnpjMkVpUVhGaElISXpZbUp5WUdCZ2NEQnhRV0Z4Y0NXYnRGZ3JKSkZDWWV2UUVKbXQzM0Ryd0xrSTVvdG9RV0tnU05mSHYraEFGdUdMQUJEWlQwdndFbmt3TUUvdlhabktzRUEyN2lpZjd5VHFYRUJBRUFBUUJOL29JRDVBUlNBQmtBUWdDd0FTK3dBRVZZc0Fzdkc3RUxHRDVac0FCRldMQUNMeHV4QWhBK1diQUxFTEFQMExBTEVMSVNBUW9yV0NIWUcvUlpzQUlRc2hnRENpdFlJZGdiOUZrd01RRWpFeTRDTnpjK0FoY1dGZ2NuTmlZbkpnSUhCaFlYRndIcHRVWnBpam9PQkJPWDVZaWx5UWlxQm10Zm1jc0NBMnBtYnY2Q0FYSVpsT0tDSzVyK2lnUUUzcWdCWllrRUJ2N2I1SWlqQmdFQUFBRUFRQUFBQkxnRlBnQVRBQk1Bc0E0dnNBQkZXTEFFTHh1eEJCQStXVEF4QVJjSEp3TWpBU2MzRndFbk54Y1RNd0VYQnljQ0xQeFMvT3F3QVNYN1V2NEJEZjFVL1BLcy90VC9WZm9CdDZ4eXFmNitBWldyY3FvQmRhdDBxZ0ZNL21HcmNha0FBQUg4NkFTbS85QUYvQUFIQUJFQXNBQXZzZ01HQ2l0WUlkZ2I5Rmt3TVFFSEp6Y2hOeGNIL2FFWG9pb0NDeEtoSmdVamZRSHBiQUhZQUFBQi9Rc0ZGdi9xQmhRQUV3QXJBTEFTTDdBTjBMQU5MN0lGQWdvcldDSFlHL1Jac0JJUXNBclFzQklRc2hNQ0NpdFlJZGdiOUZrd01RRStBeGNXRmdjSEp6YzJKeVlHQmdjSE4vMDhRSGh1ZHoxbGJ3VURlZ0lJWUN4VStrTktEQVdWQVNrdEtBRUJiMlluQVJSa0JBRVNaUVVCZndBQUFmNFhCUlgrNUFaWEFBVUFEQUN3QVMrd0JkQ3dCUzh3TVFFM013Y1hCLzRYRks4YkpVMEY1WEtYY2prQUFBSCtPd1VYLzFFR1Z3QUZBQXdBc0FNdnNBRFFzQUF2TURFQkp6YzNNd2YrZ2tkUUZiRVlCUmRJZVgrRUFBQUkramord2dHVUJiRUFDd0FYQUNNQUx3QTdBRWNBVXdCZkFIb0FzRDh2c0VzdnNGY3ZzRE12c0FCRldMQURMeHV4QXh3K1diSUpDd29yV0NIWUcvUlpzRDhRc0EvUXNEOFFza1VMQ2l0WUlkZ2I5Rm13RmRDd1N4Q3dHOUN3U3hDeVVRc0tLMWdoMkJ2MFdiQWgwTEJYRUxBbjBMQlhFTEpkQ3dvcldDSFlHL1Jac0MzUXNETVFzamtMQ2l0WUlkZ2I5Rmt3TVFFMk5oY1dGaFVuTmlNbUJ3RTJOaGN5RmhVbk5pTW1Cd00yTmpNV0ZoVW5OaU1pQndFMk5oY1dGaFVuTmlNaUJ3RTJOaGNXRmhVbk5pTW1Cd0UyTmhjV0ZoVW5OaU1tQndFMk5oY1dGaFVuTmlNaUJ3TTJOaGNXRmhVbk5pTWlCLzJUQ25GYldHbHNCVkZUSFFHZkNYRmFXR3BzQlZKU0d4RUljVnRZYUdzRlVWTWQvbnNJYzFoWWFHc0ZVVlVhL1RFS2NWdFlhR3NGVVZJZS9rSUtjMXBZYVd3RlVWUWIvcEFKY0Z0WWFHc0ZVbFFiSmdoeldWaHBiQVZTVXhzRTgxbGxBUUZtV0FGbUFtYis2bGhtQVdsV0FXWUNadjRJVldjQlpWZ0JabVQ5K0ZkbkFnRmxXQUZtWlA3aldXVUJBbVZZQVdZQ1pnVVpXV1VCQW1WWUFXWUNadjRJV0dVQkFXVllBV1prL2ZoWFp3SUJaVmdCWm1RQUNQcFAvbU1CVXdYR0FBUUFDUUFPQUJNQUdBQWRBQ0lBSndBNUFMQWhMN0FTTDdBTEw3QWJMN0FtTDdBQVJWaXdCeThic1FjY1BsbXdBRVZZc0JZdkc3RVdHajVac0FCRldMQUNMeHV4QWhJK1dUQXhCUmNESXhNVEp4TXpBd0UzQlFjbEJRY2xOd1VCTnlVWEJRRUhCU2NsRXljRE54TUJGeE1IQS8zRkRheGxmNkVOcTJSK0Fhd0xBVGNSL3NEN2pncit5UkVCUUFQTkF3Rk1QZjdOL0dnRC9yVStBVFJwRVYxRGxBS3pFRjVGa2pvUy9xOEJZQVNpRUFGUi9xSCtFUXAvWEVVOENuOWJSQUd1RVpsTnYveU5FcGxPdndMbEFnRlBQdjdRL09ZQy9ySS9BUzhBQUFJQUx2LzhBOE1HY1FBU0FCc0FkTElRSEIwUkVqbXdFQkN3RmRBQXNBQkZXTEFOTHh1eERSdytXYkFBUlZpd0VTOGJzUkVjUGxtd0FFVllzQWt2RzdFSkVENVpzQkVRc2dBQkNpdFlJZGdiOUZteUFnMEpFUkk1c0FJdnNBQVFzQXZRc0F6UXNBSVFzaE1CQ2l0WUlkZ2I5Rm13Q1JDeUZBRUtLMWdoMkJ2MFdUQXhBU0VERnhZV0J3WUdKeUVUSXpjek56TUhJUUVERnpZMk56WW1Kd0w5L3NsaC9hVzhEQTc3dGY0MTRyb2J1U0sySWdFNC9qTk4vMmlPREExWFZnVVkvZElCQnNTZXNOVUVCUmlZd2NIOG92NUZBZ0o3YVZ0M0JBQUNBRG9BQUFUdUJiQUFEd0FjQUUyeUR4MGVFUkk1c0E4UXNCalFBTEFBUlZpd0JDOGJzUVFjUGxtd0FFVllzQUV2RzdFQkVENVpzaGNFQVJFU09iQVhMN0lBQVFvcldDSFlHL1Jac0FRUXNoVUJDaXRZSWRnYjlGa3dNUUVESXhNRkhnSUhCZ2NYQnljR0l3RTJOelltSnlVRElUSTNKemNCV21POS9RSDlpYzFrRGhLRFluTnFnS2dCT0RVTkVvWisvcWhqQVR4ZVdsVjBBanI5eGdXd0FRUnR4SCs2ZTVCZW1EWUJHMDFYZnBZRUFmM0ZINEJkQUFBQy85ZitZQVA5QkZJQUZRQW1BRzZ5SWljb0VSSTVzQ0lRc0FmUUFMQUFSVml3RUM4YnNSQVlQbG13QUVWWXNBd3ZHN0VNR0Q1WnNBQkZXTEFLTHh1eENoSStXYkFBUlZpd0J5OGJzUWNRUGxteUNSQUhFUkk1c2c0UUJ4RVNPYkFRRUxJYUFRb3JXQ0hZRy9SWnNBY1FzaDhCQ2l0WUlkZ2I5Rmt3TVFFR0J4Y0hKd1luSmljREl3RTNCellYRmhZWEZnY25OelltSnlZSEF4WVhNamNuTnhjMk53UDBJSTFYZEZOcFpiaGtZYlVCQktRVWhydWJzQVVCQjdjR0EyOXJuWEpiTzVwRVZFNTBSVWdYQWhmeG5ZTmVlemdDQW52OTlnWGFBWG1RQkFUZ3drQThBVlNMb2dRRW1mMzVqUVFwZUY1b2I0MEFBQUVBTlFBQUJNMEhBQUFKQURXeUF3b0xFUkk1QUxBSUw3QUFSVml3Qmk4YnNRWWNQbG13QUVWWXNBUXZHN0VFRUQ1WnNBWVFzZ0lCQ2l0WUlkZ2I5Rmt3TVFFakZTRURJeE1oRXpNRWhBUDlVT0c3L0FLeVBLNEZHQWI2N2dXd0FWQUFBUUFrQUFBRHRBVjJBQWNBTGdDd0JpK3dBRVZZc0FRdkc3RUVHRDVac0FCRldMQUNMeHV4QWhBK1diQUVFTElBQVFvcldDSFlHL1JaTURFQklRTWpFeUVUTXdOai9oaWh0cndCNkRpMEE2SDhYd1E2QVR3QUFBRUFRLzdlQktVRnNBQVdBRnV5QXhjWUVSSTVBTEFLTDdBQVJWaXdGUzhic1JVY1BsbXdBRVZZc0JNdkc3RVRFRDVac0JVUXNnQUJDaXRZSWRnYjlGbXlBeFVURVJJNXNBTXZzQW9Rc2dzRENpdFlJZGdiOUZtd0F4Q3lFUUVLSzFnaDJCdjBXVEF4QVNFREZ4WVdFZ2NDQUFjM05qWTNOaVluSndNakV5RUVpZjFZVWFTbTZtb1JIUDdrNnc2VHRSY1dwNit6ZEwzOUEyVUZFdjR2QVFTTy93Q24vdjMrM2dTU0E4N0h3OUlCQWYxaEJiQUFBUUFrL3VFRGVnUTZBQllBVzdJTUZ4Z1JFamtBc0FvdnNBQkZXTEFWTHh1eEZSZytXYkFBUlZpd0V5OGJzUk1RUGxtd0ZSQ3lBQUVLSzFnaDJCdjBXYklDRlJNUkVqbXdBaSt3Q2hDeUN3RUtLMWdoMkJ2MFdiQUNFTElTQVFvcldDSFlHL1JaTURFQklRTVhIZ0lIQmdJSEp6WTJOelltSnljREl4TWhBMS8rSERGamg4MWtEUkgyc2lSNW5oQVBpbjk2VkxhOEFwb0RvZjdrQVFSNDA0U3AvdjhtbGlDZGY0bWlCQUgrSFFRNkFBRUFOZ0FBQlVnRnNBQVVBR0lBc0FCRldMQUFMeHV4QUJ3K1diQUFSVml3REM4YnNRd2NQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFLTHh1eENoQStXYkFQMExBUEw3SXZEd0Zkc3M4UEFWMnlDQUVLSzFnaDJCdjBXYklCQ0E4UkVqbXdCZEN3RHhDd0V0QXdNUWtDSXdNakJ5TTNJd01qRXpNRE14TXpBek1CQlVqOS9BRW80T0pTSzVFc1pISzgvTDF3WkMyUkxrVUJxUVd3L1VUOURBS085UFQ5Y2dXdy9YOEJBUDhBQW9FQUFBRUFMUUFBQkpNRU9nQVVBSHNBc0FCRldMQU5MeHV4RFJnK1diQUFSVml3RkM4YnNSUVlQbG13QUVWWXNBb3ZHN0VLRUQ1WnNBQkZXTEFETHh1eEF4QStXYkFLRUxBTzBMQU9MN0tmRGdGZHN2OE9BVjJ5bnc0QmNiUy9EczhPQWwyeUx3NEJYYkp2RGdGeXNna0JDaXRZSWRnYjlGbXlBUWtPRVJJNXNBWFFzQTRRc0JMUU1ERUpBaU1ESndjak55TURJeE16QXpNM013YzNBUVNUL2xjQkJkbTdNaWVSSTJGUXRyeTJVV0Vta1NzbkFVc0VPdjMwL2RJQnpRSER3djR6QkRyK050WFhBUUhMQUFFQXV3QUFCc3dGc0FBT0FHc0FzQUJGV0xBR0x4dXhCaHcrV2JBQVJWaXdDaThic1FvY1BsbXdBRVZZc0FJdkc3RUNFRDVac0FCRldMQU5MeHV4RFJBK1diSUlCZ0lSRWptd0NDK3lMd2dCWGJMUENBRmRzZ0VCQ2l0WUlkZ2I5Rm13QmhDeUJBRUtLMWdoMkJ2MFdiSU1BUWdSRWprd01RRWpBeU1USVRjaEF6TUJNd0VCSXdPRnNYRzk0djR6R3dLSmI0a0NYUGY5WWdHOTJBS08vWElGR0pqOWZnS0MvVGI5R2dBQkFIUUFBQVdNQkRvQURnQ0FBTEFBUlZpd0JpOGJzUVlZUGxtd0FFVllzQW92RzdFS0dENVpzQUJGV0xBQ0x4dXhBaEErV2JBQVJWaXdEUzhic1EwUVBsbXdBaEN3Q2RDd0NTK3lud2tCWGJML0NRRmRzcDhKQVhHMHZ3blBDUUpkc2k4SkFWMnlid2tCY3JJQUFRb3JXQ0hZRy9SWnNBWVFzZ1FCQ2l0WUlkZ2I5Rm15REFBSkVSSTVNREVCSXdNakV5RTNJUU16QVRNQkFTTUM4b3BRdHFMK2NCd0NSRkJ1QWJEcS9md0JYTllCemY0ekE2R1ovallCeXYzdi9kY0FBQUVBT2dBQUIrQUZzQUFOQUY0QXNBQkZXTEFDTHh1eEFodytXYkFBUlZpd0RDOGJzUXdjUGxtd0FFVllzQVl2RzdFR0VENVpzQUJGV0xBS0x4dXhDaEErV2JBQjBMQUJMN0l2QVFGZHNBSVFzZ1FCQ2l0WUlkZ2I5Rm13QVJDeUNBRUtLMWdoMkJ2MFdUQXhBU0VUSVFjaEF5TVRJUU1qRXpNQmh3TEdiUU1tRy8yVzRydDEvVGwxdmYyOUF6NENjcGo2NkFLaC9WOEZzQUFCQUNRQUFBV1VCRG9BRFFDYkFMQUFSVml3QWk4YnNRSVlQbG13QUVWWXNBd3ZHN0VNR0Q1WnNBQkZXTEFHTHh1eEJoQStXYkFBUlZpd0NpOGJzUW9RUGxtd0JoQ3dBZEN3QVMreWJ3RUJYYlMvQWM4QkFsMnlQd0VCY2JUUEFkOEJBbkd5RHdFQmNyU2ZBYThCQW5HeS93RUJYYklQQVFGeHNwOEJBVjJ5THdFQlhiUnZBWDhCQW5Ld0FoQ3lCQUVLSzFnaDJCdjBXYkFCRUxJSUFRb3JXQ0hZRy9SWk1ERUJJUk1oQnlFREl4TWhBeU1UTXdGRUFlRlJBaDRiL3BpaXRGRCtIMUMydkxZQ1pRSFZtZnhmQWM3K01nUTZBQUFCQUVMKzNnZHZCYkFBRndCb3NoRVlHUkVTT1FDd0J5K3dBRVZZc0JZdkc3RVdIRDVac0FCRldMQVVMeHV4RkJBK1diQUFSVml3RVM4YnNSRVFQbG15QVJZSEVSSTVzQUV2c0FjUXNnZ0JDaXRZSWRnYjlGbXdBUkN5RGdFS0sxZ2gyQnYwV2JBV0VMSVNBUW9yV0NIWUcvUlpNREVCTXhZQUJ3SUFCemMyTmpjMkppY2pBeU1USVFNakV5RUZBV3I5QVFjYUhQN2s2dzZUdFJjV29xMkJkTHpoL1VuaHZQMEVMd05BQnY3TS8vNzkvdDRFa2dQT3g4RFNCUDFpQlJMNjdnV3dBQUFCQUNUKzRRWkJCRG9BR0FCWEFMQUlMN0FBUlZpd0dDOGJzUmdZUGxtd0FFVllzQlV2RzdFVkVENVpzQkxRc2dBU0dCRVNPYkFBTDdBSUVMSUpBUW9yV0NIWUcvUlpzQUFRc2hBQkNpdFlJZGdiOUZtd0dCQ3lFd0VLSzFnaDJCdjBXVEF4QVJjZUFnY0dCZ2NuTmpZM05pWW5Kd01qRXlFREl4TWhBK0NXaTlkcERoSDFzaVNBbGc4UWtZbXVWTFNoL2g2aHRyd0RUQUtGQVFOMzFJU3MveWFXSXFKNGhLY0VBZjRkQTZIOFh3UTZBQUFDQUhILzR3V3BCY2NBS2dBNUFJRUFzQUJGV0xBZkx4dXhIeHcrV2JBQVJWaXdCQzhic1FRUVBsbXdBTkN5QWdRZkVSSTVzQUl2c0I4UXNBN1FzZzhCQ2l0WUlkZ2I5Rm13QkJDeUZ3RUtLMWdoMkJ2MFdiQUNFTEl0RGdvcldDSFlHL1Jac2hrQ0xSRVNPYklvTFFJUkVqbXdBQkN5S2dFS0sxZ2gyQnYwV2JBZkVMSTBBUW9yV0NIWUcvUlpNREVGSmljR0p5NENKeVkzTnhJQU53Y0dCZzhDRkJZWEZqY21FemMyRWhjZUFoY1dCd2NDQnhZWEFSWVhOaE0zTmljbUp5WUdCd2NHQlJYTm81dWZqZG1DQ3djUEdURUJJZFFTaDdJaEhBT29sVHBNdnlraUovNjZaSkpPQWdFSEpEWDRYblQ5OGdxWjJ6RWdEZ1FMajJpUUhpSUtIUVJGUWdJRGd2Q2FYR0NrQVJvQlRRV2xCZnpkd2xhNTRRSUNFT2NCTnQzNkFUVUZBMjNKZHo4NTZQNnV4UlFDQWJIV2Q1b0JQTTVaVU9NSEJNbkIzRUlBQUFJQVgvL3FCRm9FVlFBbkFESUFnUUN3QUVWWXNCNHZHN0VlR0Q1WnNBQkZXTEFFTHh1eEJCQStXYkFBMExJQ0JCNFJFam13QWkrd0hoQ3dEZEN5RGdFS0sxZ2gyQnYwV2JBRUVMSVdBUW9yV0NIWUcvUlpzQUlRc2lvQkNpdFlJZGdiOUZteUdBSXFFUkk1c2lVcUFoRVNPYkFBRUxJbkFRb3JXQ0hZRy9SWnNCNFFzakFCQ2l0WUlkZ2I5Rmt3TVFVbUp3WW5MZ0luSmhJMk5qY0hCZ1lIQndZV0ZoY1dOeVkzTnpZMkZ4WVdGeFlIQmdjV0Z3RUdGelkyTnpVbUp5WURCQnVsZzRTQ2JxNWtCd2N6Y0tkc0VtQjRFQU1DTG1aSkl6Nk9IUXNhd1pGMWhnTUNGaU9jUTJIK2JoYURURW9MQlZlRUlRMEVOVUlDQVhEU2dIUUJCN2hyQTU0RnpzWTRZSjlXQVFFTXR2Qlp6Zk1GQkw2Z1Q0WGJuUThDQWFqU2VFN2h2eW1xQkFUKzdRQUFBUUNzL3FFR1l3V3dBQk1BV3dDd0VTK3dBRVZZc0Fjdkc3RUhIRDVac0FCRldMQU1MeHV4REJ3K1diQUFSVml3RXk4YnNSTVFQbG13QnhDeUNBRUtLMWdoMkJ2MFdiQUEwTEFIRUxBRjBMQUQwTEFDMExBVEVMSUtBUW9yV0NIWUcvUlpzQTdRTURFQklUY2hOVE1WSVFjaEF5RVRNd016QXlNVElRSVkvcFFhQVdTOEFYNGIvb3ZIQXJqaHZlR1VhNmc5Ky9ZRkdKY0JBWmY3aFFVVCt2SCtBQUZmQUFFQVYvNi9CTWdFT2dBUEFFc0FzQTB2c0FCRldMQURMeHV4QXhnK1diQUFSVml3RHk4YnNROFFQbG13QXhDeUJBRUtLMWdoMkJ2MFdiQUEwTEFQRUxJR0FRb3JXQ0hZRy9SWnNBTVFzQWpRc0FZUXNBclFNREVCSVRjaEJ5TURJUk16QXpNREl4TWhBV0grOWhvQ3NSdnhpQUhpb3JhaWZXU2lPUHpxQTZPWGwvejBBNlA4WGY0b0FVRUFBUURFQUFBRk9RV3dBQmtBVWJJSEdoc1JFamtBc0FCRldMQUFMeHV4QUJ3K1diQUFSVml3REM4YnNRd2NQbG13QUVWWXNBOHZHN0VQRUQ1WnNnWUFEeEVTT1h5d0JpOFlzQW5Rc0FZUXNoVUJDaXRZSWRnYjlGbXdFdEF3TVFFREJoY1dGaGNUTXdNMk54TXpBeU1UQmdjSEl6Y21KamNUQWVKTENRZ01ibXM3a2poaWpueTkvYnh1ZFgwdWtpN1UwaGRMQmJEK04wWTFVRklHQVRiKzBRMGhBcmY2VUFKY0l3enY2Z2ZpMkFISEFBRUFtQUFBQkJvRU93QVlBRW9Bc0FCRldMQVhMeHV4RnhnK1diQUFSVml3REM4YnNRd1lQbG13QUVWWXNBRXZHN0VCRUQ1WnNoRUJEQkVTT1h5d0VTOFlzZ2NCQ2l0WUlkZ2I5Rm13Qk5Dd0VSQ3dGTkF3TVNFakV3WUhCeU0zSmlZM0V6TURCaGNXRnhNekF6WTNFek1EWHJaS05HVWNraHlXbVJJeXRUUUZBUU43TnBNMFBWcGh0Z0dKRHcySWh4TFVyUUU4L3NNcktJc2RBUmorNlFnVEFoc0FBUURzQUFBRllnV3dBQklBUHdDd0FFVllzQUl2RzdFQ0hENVpzQUJGV0xBU0x4dXhFaEErV2JBQVJWaXdDaThic1FvUVBsbXlCUklDRVJJNXNBVXZzZzhCQ2l0WUlkZ2I5Rmt3TVRNVE13TTJGeFlXQndNakV6WW5KaWNtQndQcy9ieHZzY25lMUJkTXZFc0lDQmpQb2VCOUJiRDlwRGNDQk9yVS9qa0J5RVUyb1FZRE52MUpBQUlBaXYvckJjVUZ5QUFqQUM0QVZ3Q3dBRVZZc0JFdkc3RVJIRDVac0FCRldMQUFMeHV4QUJBK1diSWxBQkVSRWptd0pTK3lGd0VLSzFnaDJCdjBXYkFGMExBbEVMQU4wTEFBRUxJZUFRb3JXQ0hZRy9SWnNCRVFzaW9CQ2l0WUlkZ2I5Rmt3TVFVbUpnSTNOeVltTnhjR0Z4WVhOeElBRnhZU0Z4WUhCeUVIQmhjV0ZoY1dOamNYQmdFbE5qYzJKaWNtQmdjSEEzT3IrbTBiRTRXQUM1TUVBd3ByRkU0QlBOako1QVVCRFJEOG5nOE1DeENvaTE2cVZTS0EvZUFDcXc0Q0E0cUVqZE04RHhVQnBRRWZxMmNheHBnQ0tDUjJLMHdCQ2dFbkJRVCs5dTFhVW1SZVdsT0dtZ01DTGlXUVlBTlhBazQ4b2JFRUJNclFPZ0FBQWdBSC8rb0VSd1JUQUI4QUtRQmVBTEFBUlZpd0R5OGJzUThZUGxtd0FFVllzQUF2RzdFQUVENVpzaVFBRHhFU09iQWtMN1MvSk04a0FsMnlGUUVLSzFnaDJCdjBXYkFGMExBa0VMQU0wTEFBRUxJWkFRb3JXQ0hZRy9SWnNBOFFzaUFCQ2l0WUlkZ2I5Rmt3TVFVdUFqYzNKaVkzRndjR0Z6WWtGeFlXRnhZSEJ5RUdGaGNXTmpjWEJnWVRKZ1lIQlRjMkp5WW1BbENGeTFjWEJHQmRCNDhFQXo5R0FSaXBwcjBHQWdnTS9UMFRoSDlja1Qxb1NOd0ZiYTAwQWc0RUNBY0xhUlFDa1BDSkV4NnJoZ0UzWGkzUTdRVUUyTFpBUVZPWXlnTUNVVUZZYUdrRHpRV2Rud0lTTlRSVVp3QUFBUUExL3RNRlJBV3dBQllBWGJJVkZ4Z1JFamtBc0E0dnNBQkZXTEFDTHh1eEFodytXYkFBUlZpd0JpOGJzUVljUGxtd0FFVllzQUF2RzdFQUVENVpzZ1FBQWhFU09iQUVMN0FJMExBT0VMSVBBUW9yV0NIWUcvUlpzQVFRc2hZQkNpdFlJZGdiOUZrd01UTWpFek1ETXdFekFSWVNCd0lBQnpjMk5qYzJKaWNsOHIzOXZXMTRBbC9yL1pEVDJCZ2EvdDdxQzVLMUZ4YWpyZjcxQmJEOWp3SngvWVFZL3MvcS92Mysyd2FhQXMzRXdOTUJBUUFCQUMzKytnUldCRG9BRmdCakFMQUdMN0FBUlZpd0VpOGJzUklZUGxtd0FFVllzQlV2RzdFVkdENVpzQUJGV0xBUEx4dXhEeEErV2JBVDBMQVRMN1MvRTg4VEFsMnlMeE1CWGJML0V3RmRzQURRc0FZUXNnY0JDaXRZSWRnYjlGbXdFeEN5RGdFS0sxZ2gyQnYwV1RBeEFSWVdCd1lHQnljMk5qYzJKaWNuQXlNVE13TXpBVE1DYktPcUVCSHpzU1IvbHcwUGpKT3dVTGE4dGxGUUFjN3FBbUFnNktLbDhpV1dINXB2ZjVBRkFmNHpCRHIrTmdIS0FBQUJBRVArUndWdEJiQUFGQUJtQUxBSUw3QUFSVml3QUM4YnNRQWNQbG13QUVWWXNBTXZHN0VESEQ1WnNBQkZXTEFTTHh1eEVoQStXYklCRWdBUkVqbDhzQUV2R0xJZkFRRnh0R0FCY0FFQ1hiS1FBUUZkc0FnUXNnMEJDaXRZSWRnYjlGbXdBUkN5RVFFS0sxZ2gyQnYwV1RBeEFRTWhFek1CQmdZbklpYzNGak15TnhNaEF5TVRBZnh5QXJWenUvNzVHY0tWTGtrZU9DaU1JM2o5UzIrOS9RV3cvVzRDa3ZuOHJiZ0NGSmtSMGdMSy9YOEZzQUFBQVFBay9rY0VLd1E2QUJRQWZnQ3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQURMeHV4QXhnK1diQUFSVml3Q0M4YnNRZ1NQbG13QUVWWXNCSXZHN0VTRUQ1WnNBSFFzQUV2c204QkFWMjB2d0hQQVFKZHN2OEJBVjJ5RHdFQmNiS2ZBUUZkc2k4QkFWMnlQd0VCY2JBSUVMSU5BUW9yV0NIWUcvUlpzQUVRc2hFQkNpdFlJZGdiOUZrd01RRURJUk16QXdZR0p5SW5OeFl6TWpjVElRTWpFd0dXVWdIaFVyVEhGcjZXTEVzZk5TdU1JMXIrSDFDMnZBUTYvaXNCMWZ0dHA3a0NGSklRMHdJYy9qSUVPZ0FDQUZILzZRVXFCY1lBR2dBa0FGNnlHaVVtRVJJNXNCb1FzQnpRQUxBQVJWaXdBQzhic1FBY1BsbXdBRVZZc0Frdkc3RUpFRDVac2c4QUNSRVNPYkFQTDdBQUVMSVZBUW9yV0NIWUcvUlpzQWtRc2hzQkNpdFlJZGdiOUZtd0R4Q3lId01LSzFnaDJCdjBXVEF4QVJZRUVnY0hCZ0lFSnlZbUFqYzNCVGMySnlZbUp5WUhKelkyQXhZMk53VUhCaGNXRmdNQXVBRUJjUm9NSGREKzNhV3Y3R01hRkFQUUF4VUpENzJZcHNvalJOUW9wZnRIL09nSER3b1FwQVhEQXJQK3ZzWlZ6djZ3cWdNRXB3RXR2M3dEREdOZ25Ma0RBMWFSTHpiNnd3WDE4Z0VqV1ZDQmtRQUFBUUE4LytjRWV3V3dBQnNBWmJJWkhCMFJFamtBc0FCRldMQUNMeHV4QWh3K1diQUFSVml3REM4YnNRd1FQbG13QWhDeUFBRUtLMWdoMkJ2MFdiSUVBQUlSRWpteUJRSU1FUkk1c0FVdnNBd1FzQkRRc0F3UXNoTUJDaXRZSWRnYjlGbXdCUkN5R1FNS0sxZ2gyQnYwV1RBeEFTRTNJUWNCRmhZSERnSW5KaVkzTXdZV0Z4WTJOelltSnljM0EzejlrUndEVWhmK0k3VEVEZ3VROG8yKzNReTZDSHR1Zzc4UUVZS0xsQndGRXA2Ry9pUVE1cnFEeUd3REJPeTZkSk1FQkpaL2pKSUVBYUFBQUFILy9QNXhCRFVFT2dBYUFHR3lCUnNjRVJJNUFMQUxMN0FBUlZpd0FpOGJzUUlZUGxteUFBRUtLMWdoMkJ2MFdiSUVBQUlSRWpteUdnc0NFUkk1c0JvdnNBWFFzQXNRc1E4S0sxallHOXhac0FzUXNoSUJDaXRZSWRnYjlGbXdHaEN5R1FFS0sxZ2gyQnYwV1RBeEFTRTNJUWNCRmhZSEJnUW5KaVkzTXdZV0Z4WTJOelltSnljM0F5ejlvaHNEVEJYK0o3Uy9EaEgrMWRxOTNReTBDSHh3aHNNUEVJaUtsQnNEb1psLy9oWVM0clhFOHdRRTdMaHptQVFFbTM2TmtBUUJvUC8vLy9qK1JRVG5CYkFBSmdDd1FnQUFKZ0hldVVBQUJ3R3ZBT2tBQVAvLy8rbitSUVBRQkRvQUpnRHJUUUFBSmdIZW00NEJCd0d2QU5vQUFBQUlBTElBQ1FGZE1ERUFBZ0F4QUFBRTRRV3dBQW9BRXdCUXNnUVVGUkVTT2JBRUVMQU4wQUN3QUVWWXNBRXZHN0VCSEQ1WnNBQkZXTEFETHh1eEF4QStXYklBQVFNUkVqbXdBQyt3QXhDeUN3RUtLMWdoMkJ2MFdiQUFFTElNQVFvcldDSFlHL1JaTURFQkV6TURKU1ltTnpZa014TVRKU0lHQndZV0Z3UEFZNzc5L2Z2SjVSRVJBUzdmNG1QK3RvMi9FUkI2ZXdOekFqMzZVQUVHNjhQTjh2MHBBamdCbW9SM25RWUFBZ0F5Ly80R013V3dBQmNBSUFCYXNoZ2hJaEVTT2JBWUVMQUgwQUN3QUVWWXNBZ3ZHN0VJSEQ1WnNBQkZXTEFYTHh1eEZ4QStXYklHRndnUkVqbXdCaSt3RnhDeUdBRUtLMWdoMkJ2MFdiQUswTElRQmhjUkVqbXdCaEN5R2dFS0sxZ2gyQnYwV1RBeEpTWW1OellrTXdVVE13TVhOalluSmljWEZoY1dBZ1luSlJNbElnWUhCaFlYQWVMTjR4RVRBU3ZpQVdCa3ZlSkxqWjRGQWhPdkR3Z1BjK1dUL3Y1aS9yYU13QkVRZlhnQkNPMi96ZklCQWozNjZ3RUM1OUZTVUFGUlVLdis2NVlDblFJNEFacUVlWjBFQUFBQ0FFei81Z1pCQmhnQUl3QXpBSUN5QmpRMUVSSTVzQVlRc0NUUUFMQUFSVml3Qnk4YnNRY2VQbG13QUVWWXNBUXZHN0VFR0Q1WnNBQkZXTEFlTHh1eEhoQStXYkFBUlZpd0dpOGJzUm9RUGxteUJnUWVFUkk1c2c0QkNpdFlJZGdiOUZteUZBUWVFUkk1c2h3RUhoRVNPYkFFRUxJbUFRb3JXQ0hZRy9SWnNCNFFzaThCQ2l0WUlkZ2I5Rmt3TVJNMkVqWVhGaGNUTXdNR0Z4WVdGeFlTRXpZbk54WVhGZ0lFSnlZbkJpY21KaWNtTndFbUp5WUdCd2NHRnhZV0Z4WTJOemRWRll6TGdLNWRiYlhQQkFRRlFqbWp4Z2dDRUtnTkF3ZUkvdjJtN2kyTHpKZXhCd01HQXVJL2tJaTJIZ01IQXdWcllWZURNd1lDQXJJQkZvY0RCSUFDVHZ0QUpDVS9TZ01KQVVFQkltTmtBV1JqMS82Z3Z3TUZzYnNFQXRTMVBUc0JRb0FFQmQvVEZEdy9iWDhEQTFOQ1B3QUFBUUN0LytnRnFnV3dBQzBBWEFDd0FFVllzQTR2RzdFT0hENVpzQUJGV0xBcUx4dXhLaEErV2JJRkxnNFJFam13QlMreUJBRUtLMWdoMkJ2MFdiQU9FTElOQVFvcldDSFlHL1Jac2hVRUJSRVNPYkFxRUxJZEFRb3JXQ0hZRy9SWnNpTXFEaEVTT1RBeEFUWW1KeWMzRnpJMk56WW1KeVUzQlJZWEZnY0dCUllXRnhZSEJoWVhGallTTnpZbk14WVhGZ0lHSnlZbU53S0JDV05qeVJ5Q29iZ1FEWHVBL3BrY0FUbjdjbDhQRmY3MVJsSUdCQXdIT3o5ZGtGY0dBeEN2REFRR2d2Q2ZqNWNJQVhWMmh3VUNuZ0dGaEhKOEJBR2VBUUYvYXFqbmNCOTZVVFI1UjF3RUJZUUJGOEJqWkdSajF2NmZ2d0lDcUpzQUFBRUFhUC9qQkxnRU9nQW5BRmtBc0FCRldMQWVMeHV4SGhnK1diQUFSVml3RGk4YnNRNFFQbG15QWdFS0sxZ2gyQnYwV2JJSERoNFJFam15RmlnZUVSSTVzQll2c2hVQkNpdFlJZGdiOUZtd0hoQ3lIUUVLSzFnaDJCdjBXYklsRlJZUkVqa3dNU1VHRnhZMk56WW5GeFlYRmdJR0p5WW1OemMySnljM0Z6STJOelluSlRjWEZoWUhCZ2NIRmdjQ2tRaFNhcFlZR2lpcER3a1NjZVdRZlgwR0NBdXgyQm1yZFl3S0ZkVCs5eFQ0dDhjS0NKayttQS9UVXdRRm9wQ2VuUUZPVHB6KzJhRURBbnh5VFl3S0FaWUJXVkdmQ3dHV0FRV2xqb2xQSFRpeUFBQUJBSy8rMWdPVkJhOEFKd0JXQUxBYkw3QUFSVml3Q2k4YnNRb2NQbG13QUVWWXNCNHZHN0VlRUQ1WnNnRW9DaEVTT2JBQkw3SUFBUW9yV0NIWUcvUlpzQW9Rc2drQkNpdFlJZGdiOUZteUVRQUJFUkk1c0I0UXNSY0tLMWpZRzl4Wk1ERVROeGN5TmpjMkppY2xOeGNXRmdjR0JnY1dGeFlQQWpjSEJnY25OamNqSmljbU56YzJKaWV2RzVPbnZBOE5lNEQrNkJ2dTNlVVJDNG1Fa0JBRUJ4Y0dxaGNrdVdoWEwyQWhCUVFJRmcxbmFnSjVsd0dMZ1hpQUJBR1hBUUhZdkhHbk8wQ3JNeldJR0FHTjNaUk1aM2NyUnlVL25IT09CQUFBQVFDZy9zWURkZ1E2QUNNQVZnQ3dHaSt3QUVWWXNBb3ZHN0VLR0Q1WnNBQkZXTEFkTHh1eEhSQStXYklCSkFvUkVqbXdBUyt5QUFFS0sxZ2gyQnYwV2JBS0VMSUpBUW9yV0NIWUcvUlpzaEVBQVJFU09iQWRFTEVXQ2l0WTJCdmNXVEF4RXpjWE1qWTNOaVluSlRjRkZoWUhCZ1lIRmhjV0J3YzNCd1lISnpZM0l5WTNOellub0JuRWRvNExDbUZuL3VBYkFRaTF4d29GYTNKM0VBVUdESnNXSXJ4blhpeGNLUVlSRDdFQnVKY0JXRk5SVmdNQmxnRUZwWTVRZWkwdGZpa29Td0dPMjVWTWMzc3JWSStmQ1FBQUFmL2YvK1VIT3dXd0FDUUFZcklqSlNZUkVqa0FzQUJGV0xBT0x4dXhEaHcrV2JBQVJWaXdJUzhic1NFUVBsbXdBRVZZc0FZdkc3RUdFRDVac0E0UXNnQUJDaXRZSWRnYjlGbXdCaEN5Q0FFS0sxZ2gyQnYwV2JBaEVMSVZBUW9yV0NIWUcvUlpzaHNPQmhFU09UQXhBU0VEQndJQ0J5TTNOelkyTnpjVElRTUdGeFlXRnhZU0V6WW5OeFlYRmdJRUp5WW1Od1NBL2l0M0p6L3R0MHNSTTM2ZEt4bVFBMGU4QkFRRlFUZWZ3d2dDRWE4TkF3ZUovdjJrb0owUkJSTDkzYnorMi83MkJKd0RETjN3amdLcSs2a2pKRDVKQXdrQlBRRWhZMlFCWkdQWi9xREFCQWJDcVFBQUFmL2EvK1VHQlFRNkFDUUFZcklBSlNZUkVqa0FzQUJGV0xBT0x4dXhEaGcrV2JBQVJWaXdJUzhic1NFUVBsbXdBRVZZc0FZdkc3RUdFRDVac0E0UXNnQUJDaXRZSWRnYjlGbXdCaEN5Q1FFS0sxZ2gyQnYwV2JBaEVMSVZBUW9yV0NIWUcvUlpzaG9oRGhFU09UQXhBU0VEQndZR0J5TTNOelkyTnpjVElRTUdGeFlXRnhZU0V6WW5NeFlYRmdJR0p5WW1Od05SL3NkU0ZqVytsVTRUSm1SK0lBMWlBcHg3QXdNRlF6ZUpvUVVCRWFnTkJRaDU1SkNiblJFRG9mNk9iUExPQTZJQ0JxbkRTZ0hhL1I0akpVQk5BUVlCSmdFRVhsNWVYc1QrczdBRUJNQ3NBQUFCQUR2LzVnYzhCYkFBSGdCN0FMQUFSVml3R3k4YnNSc2NQbG13QUVWWXNCNHZHN0VlSEQ1WnNBQkZXTEFZTHh1eEdCQStXYkFBUlZpd0VpOGJzUklRUGxteUJnRUtLMWdoMkJ2MFdiSUxFaDRSRWptd0dCQ3dITkN3SEMreS94d0JYYkpmSEFGZHNzOGNBVjJ5THh3QlhiSWZIQUZ4c2s4Y0FYR3lGd0VLSzFnaDJCdjBXVEF4QVFNR0Z4WVdGeFlTRXpZbk54WVhGZ0lFSnlZbU54TWhBeU1UTXdNaEV3Vll1Z01EQlVJMW44UUdBaEd3RFFRSGlmNytwcHljRFMvOVdHKzkvYjF6QXFoeUJiRDdweU1rUGtrQkNBRS9BUjVqWkFGa1k5ditvOEFEQk1TcEFTZjlmd1d3L1c0Q2tnQUJBQ1AvNXdZWEJEb0FIZ0NMQUxBQVJWaXdCUzhic1FVWVBsbXdBRVZZc0Fndkc3RUlHRDVac0FCRldMQWJMeHV4R3hBK1diQUFSVml3QWk4YnNRSVFQbG13QnRDd0JpK3lid1lCWGJML0JnRmRzZzhHQVhHMG53YXZCZ0p4c2o4R0FYRzB2d2JQQmdKZHNpOEdBVjIwendiZkJnSnhzZ0VCQ2l0WUlkZ2I5Rm13R3hDeUR3RUtLMWdoMkJ2MFdiSVVHd2dSRWprd01RRWhBeU1UTXdNaEV6TURCaGNXRmhjV0VoTTJKek1XRnhZQ0JpY21KamNERXY0V1VMVzh0VklCNlZLMWV3UUVCVUU0aWFRREFSR25EZ1VJZWVLVG1aMFBBYzMrTXdRNi9pb0IxdjBlSXlWQlNnTUdBU2tCQVY1ZVhsM0kvcmV2QWdMR3FBQUJBR3IvNkFTQ0JjZ0FJZ0JBQUxBQVJWaXdDUzhic1FrY1BsbXdBRVZZc0FBdkc3RUFFRDVac0FrUXNnNEJDaXRZSWRnYjlGbXdBQkN5RndFS0sxZ2gyQnYwV2JJZEFBa1JFamt3TVFVbUppY21OemNTQUJjV0Z3Y21KeVlDQndjR0Z4WVdGeFkyTmpjMEp6TVhGZ0lFQWtqRy9oTUhDaWN0QVdyOHlZdEZmcGV3L3lNbkJ3SURub1pvcDFjQkM3TUtCNGIrL2hVRi9NNU1UL2tCSGdGY0FnSldpMFVDQXY3NjNQWTBOcDNFQWdOb3dySmFXYlBWL3ZHVUFBRUFUUC9uQTRvRVVnQWZBRDBBc0FCRldMQVRMeHV4RXhnK1diQUFSVml3Q3k4YnNRc1FQbG15QUFFS0sxZ2gyQnYwV2JJRkN4TVJFam13RXhDeUdBRUtLMWdoMkJ2MFdUQXhKUlkyTmpjbk14Y1dCZ1luTGdJM056WUFGeFlYQnlZakpnWUhCaGNXRmdIMlNtb3VBZ0twQmdObHdubUh2MWdRQXgwQkt0S29hamxoZm9YQUdnd0dDbnVDQWo5eWRIVjBuN3hrQXdTTitKSWErd0U0QWdKRWpqMEMyckZuUm5TTUFBQUJBSnIvNVFVZ0JiQUFHZ0JEQUxBQVJWaXdBeThic1FNY1BsbXdBRVZZc0Jjdkc3RVhFRDVac0FNUXNnUUJDaXRZSWRnYjlGbXdBTkN3RnhDeUNRRUtLMWdoMkJ2MFdiSVBGd01SRWprd01RRWhOeUVISVFNR0ZoY1dOaEkzTmljM0ZoY1dBZ2NHSnlZbU53Sm4vak1jQkY4Yy9pdWhDRU5EYTZOWkF3RVFyZzREQlY5ZWxOMllvQTBGRXA2ZS9FZGliUUlFa0FFWnNHTmtBV1JqdGY3SmFLVUVBc09zQUFBQkFIMy82QVNJQkRvQUdnQk5zZ1ViSEJFU09RQ3dBRVZZc0FJdkc3RUNHRDVac0FCRldMQVhMeHV4RnhBK1diQUNFTElBQVFvcldDSFlHL1Jac0FUUXNBWFFzQmNRc2dzQkNpdFlJZGdiOUZteUVBSVhFUkk1TURFQklUY2hCeUVEQmhjV0ZoY1dFaWNtSnhjV0Z4WUNCaWNtSmpjQjJQNmxHZ054R3Y2Z1lRUUVCVUk1aGFNR0F4S25EZ2tRY2VPVG1wME5BNlNXbHYyMEpDVS9Td01HQVFMVFVVOEJUMCtpL3RpZ0FRTEVxZ0FBQVFCcS8ra0ZJd1hIQUN3QVpySWFMUzRSRWprQXNBQkZXTEFiTHh1eEd4dytXYkFBUlZpd0RpOGJzUTRRUGxteUJnRUtLMWdoMkJ2MFdiSUtHdzRSRWptd0RoQ3dLOUN3S3kreUxBRUtLMWdoMkJ2MFdiSVVMQ3NSRWpteUh4c09FUkk1c0JzUXNpTUJDaXRZSWRnYjlGa3dNUUVpQmdjR0ZoY1dOamMzQmdZRUp5NENOellsSmlZM05qWWtGeDRDQnljMkppY21Cd1lIQmhZWEZ3Y0N6YjNRRGcrd25aWGhGYndPbi83NW01bnhkQW9WQVRKZlpBVUlsQUVQcDRiWWRnVzdCWnlGbkd0M0VBNlptN1FjQXBpUGYzV0xBd0tUZXdHRXdXWURBbXk2ZXY5ak1LQmRnTUZwQWdObHRuY0JiWVFGQWtCSWYzRjZBUUdlQUFBQ0FQSUVjZ05NQmRZQUJRQVFBQnNBc0EwdnNBYlFzQVl2c0FIUXNBRXZzQTBRc0FYUXNBVXZNREVCRXpNSEFRY0RNd2NHRnhZWEJ5WW1Od0hxbzc4Qi92Wlk0cVFOQ2dnSUpraElTQWtFbFFGQkZ2N0ZBZ0ZUVHo0Mk56TTNMb3hXLy84QUdRSWZBZzhDdGdBR0FCRUFBUC8vQUJrQ0h3SVBBcllBQmdBUkFBRC8vd0NuQW9zRWxRTWlBRVlCbDlvQVRNMUFBUC8vQUprQ2l3WFhBeUlBUmdHWGlBQm1aa0FBLy8vL1gvNXNBeDhBQUFBbkFFUC8zdjhEQVFZQVF3a0FBQlFBUUFrQUFoQUNJQUl3QWdSZHNyQUNBVjB3TVFBQkFLNEVNUUlGQmhNQUJ3QVdBTEFBUlZpd0FDOGJzUUFlUGxtd0JkQ3dCUzh3TVFFWEJnY0hJemMyQWFGa2NCc1l0QklrQmhOS2pJYUdjTjRBQUFFQWlRUVdBZUFHQUFBSEFCWUFzQUJGV0xBRUx4dXhCQjQrV2JBQTBMQUFMekF4RXljMk56Y3pCd2J0WkhZWUY3SVRKQVFXU3BPS2czbmhBQUgvbVA3bEFPb0F0UUFIQUJjQXNBZ3ZzZ1FGQ2l0WUlkZ2I5Rm13QU5Dd0FDOHdNUU1uTmpjM013Y0dCV056R0JLMUR5UCs1VXVRaTJwZzNBQUFBUURVQkJjQnVnWUFBQXNBREFDd0N5K3dCdEN3Qmk4d01RRUhCaGNXRndjbUp5WTNOd0doRmdzS0NpWnFaeEFGQmhVR0FJVk5Sa2RGUldxZE1UR0EvLzhBdGdReEF6NEdFd0FtQVd3SUFBQUhBV3dCT1FBQS8vOEFsUVFXQXhVR0FBQW1BVzBNQUFBSEFXMEJOUUFBQUFML2xQN1NBaFVBOWdBSEFBOEFJd0N3RUMreUJBVUtLMWdoMkJ2MFdiQU0wTEFNTDdBSTBMQUlMN0FBMExBQUx6QXhBeWMyTnpjekJ3WVhKelkzTnpNSEJnUm9kQnNldEJrblptZDBHaDYxR1NmKzBrdVhsNnVjOFpkTG1wU3JuUEFBQVFCM0FBQUVVUVd3QUFzQVN3Q3dBRVZZc0Fndkc3RUlIRDVac0FCRldMQUdMeHV4QmhnK1diQUFSVml3Q2k4YnNRb1lQbG13QUVWWXNBSXZHN0VDRUQ1WnNBb1FzZ0FCQ2l0WUlkZ2I5Rm13Qk5Dd0JkQXdNUUVoQXlNVElUY2hFek1ESVFRNC9ubVN0WkgrZkJnQmd6dTJPd0dKQTZIOFh3T2htUUYyL29vQUFBSC85djVnQkdBRnNBQVRBSHdBc0FCRldMQU1MeHV4REJ3K1diQUFSVml3Q2k4YnNRb1lQbG13QUVWWXNBNHZHN0VPR0Q1WnNBQkZXTEFDTHh1eEFoSStXYkFBUlZpd0FDOGJzUUFRUGxtd0FFVllzQVF2RzdFRUVENVpzZ1lCQ2l0WUlkZ2I5Rm13RGhDeUNBRUtLMWdoMkJ2MFdiQUowTEFRMExBUjBMQUdFTEFTMExBVDBEQXhJU0VESXhNaE55RVRJVGNoRXpNRElRY2hBeUVEdC81MlFiWkMvbjRZQVlGNi9uNFlBWUU3dGpzQmloaitkbmtCaXY1Z0FhQ1hBd3FaQVhiK2lwbjg5Z0FCQUtBQ0ZRSXNBOHdBRFFBV3Nnb09EeEVTT1FDd0F5K3hDZ29yV05nYjNGa3dNUk0yTmpNeUZoVUhCZ1lqSWlZMW9RWjFWbEZwQWdaeFdsSm5BdjFlY1cxWUtscHVhbFVBLy84QU9mL3lBc0VBMHdBbUFCSUVBQUFIQUJJQnJBQUEvLzhBT2YveUJGTUEwd0FtQUJJRUFBQW5BQklCckFBQUFBY0FFZ00rQUFBQUFRQWFBaDRBMndLM0FBTUFEd0N3QWkreEFRb3JXTmdiM0Zrd01STWpOek8vcFJ1bUFoNlpBQVlBbC8vbkJ2NEZ4d0FYQUNZQUtnQTRBRVlBVkFDRkFMQXBMN0FuTDdBQVJWaXdHQzhic1JnY1BsbXdBRVZZc0JFdkc3RVJFRDVac0FEUXNBQXZzQVhRc0FVdnNCRVFzQTNRc0EwdnNCZ1FzQi9Rc0I4dnNCRVFzaTRFQ2l0WUlkZ2I5Rm13QUJDeU5RUUtLMWdoMkJ2MFdiQXVFTEE4MExBMUVMQkQwTEFmRUxKS0JBb3JXQ0hZRy9SWnNCZ1FzbEVFQ2l0WUlkZ2I5Rmt3TVFFV0ZoYzJGeFlYRmdjSEJnWW5KaWNHSnlZbU56YzJOZ0VXRmdjSEJnWW5KaVkzTno0Q0F5Y0JGd0VHRmhjV05qYzNOaVluSmdZSEJRWVdGeFkyTnpjMkppY21CZ2NCQmhZWEZqWTNOelltSnlZR0J3UTdRbkFlWm9kNFNFWUlCZzIzZ3BVK1pJVjRrUWdHRGJmK01YeU9DQVlQdG4xNWtnZ0hDRm1OUFdJRGNXTCtyUWRFUWtaakN3a0hRa05HWXd3QnRBZERRa2RqQ3drSFFrTkdZd3o3N0FkRVFrTmxEQWtIUWtOSVl3c0Nrd0k4UEhvQ0FsZFZma09PclFJRmRIc0VBcXQvUW8ydkF6RUVxMzlOaHFvRUFxeCtURldQVFBxcFNBUm9SL3c4VG1RQ0FtZFJUMDVqQWdKalUxQk1aZ0lDYVU5UFMyWUNBbU5UQXVSTlpBSUNZMVJPVEdZQ0FtaFBBQUFCQUY4QW1RSlVBN1VBQmdBUUFMQUZMN0lDQndVUkVqbXdBaTh3TVFFVEl3TTNBVE1CQzdKOTRRSUJXNWdDSFA1OUFZTVVBWVVBQUFFQUFnQ1lBZmNEdFFBR0FCQUFzQUF2c2dNSEFCRVNPYkFETHpBeEFSTUhBU01CQXdFVzRRTCtwWmdCU0xFRHRmNTlGZjU3QVpnQmhRQUIvKzhBY0FQQ0JTQUFBd0FKQUxBQUw3QUNMekF4TnljQkYxRmlBM0ZpY0VnRWFFZ0EvLzhBWVFLUUF1UUZwUU1IQWRnQWNRS1FBQk1Bc0FCRldMQUpMeHV4Q1J3K1diQU4wREF4QUFBQkFINENpd05LQmJvQUVRQk1BTEFBUlZpd0FDOGJzUUFjUGxtd0FFVllzQU12RzdFREhENVpzQUJGV0xBUEx4dXhEeFErV2JBQVJWaXdDQzhic1FnVVBsbXlBUU1QRVJJNXNBTVFzZ3dEQ2l0WUlkZ2I5Rmt3TVFFWE5qTXlGZ2NESXhNM0ppY21Cd01qRXdHRUFWeUdjWElNVTZaTkF3Um1ZME5ncDRzRnJIeUtvcEgrQkFIZFFuNERBbS85elFNZ0FBSC84d0FBQklrRnlnQW5BSThBc0FCRldMQVhMeHV4Rnh3K1diQUFSVml3Qmk4YnNRWVFQbG15SndZWEVSSTVzQ2N2c2dBQ0NpdFlJZGdiOUZtd0JoQ3lCUUVLSzFnaDJCdjBXYkFKMExBQUVMQU4wTEFuRUxBUDBMQW5FTEFqMExBakw3WVBJeDhqTHlNRFhiSWtBZ29yV0NIWUcvUlpzQkhRc0NNUXNCUFFzQmNRc1JzS0sxallHOXhac0JjUXNoNEJDaXRZSWRnYjlGa3dNUUVoQndZSEpRY2hOeGMyTnpjSE56TTNJemN6TnpZa0Z4WVdCeWMySmljbUJnY0hJUWNoQnlFQzUvNitDUmhVQXNzZC9CVWRRMmtsQzZzV29SU2VGcGtWR1FFV3dLakFDTHNIWkdOdm1nOFZBVklXL3JNVUFVb0Ixa1NVWXdLZG5BSW0wRWNCZlloOXI4MzJCZ1RSc1FGcmVRUUVwMzJ2ZllnQUJRQUtBQUFHUWdXd0FCc0FId0FqQUNZQUtRQ3hBTEFBUlZpd0Z5OGJzUmNjUGxtd0FFVllzQm92RzdFYUhENVpzQUJGV0xBTUx4dXhEQkErV2JBQVJWaXdDUzhic1FrUVBsbXlFQXdYRVJJNXNCQXZzQlRRc0JRdnRBOFVIeFFDWGJBazBMQWtMN0FZMExBWUw3QUEwTEFBTDdBVUVMSVRBUW9yV0NIWUcvUlpzQi9Rc0NQUXNBUFFzQkFRc0J6UXNCd3ZzQ0RRc0NBdnNBVFFzQVF2c0JBUXNnOEJDaXRZSWRnYjlGbXdDOUN3S2RDd0I5Q3lKaGNNRVJJNXNpY0pHaEVTT1RBeEFUTUhJd2N6QnlNREl3TWhBeU1USXpjek55TTNNeE16RXlFVE13RWhKeU1GTXpjaEpUTW5BVGNqQldyWUd0Z2EyQnJZVmJmaC9tcFZ2RlhURzlJYTB4dlNXclh0QVloYXUvdnVBVGRFMkFIanl4cisyUDU1ZVZjQ1BCMXFBNnlZbEpqK0dBSG8vaGdCNkppVW1BSUUvZndDQlB6UWxKU1VtTDc4MTZjQUFnQTUvKzBHSlFXd0FDQUFLUUNJQUxBQVJWaXdIQzhic1J3WVBsbXdBRVZZc0JZdkc3RVdIRDVac0FCRldMQVVMeHV4RkJBK1diQUFSVml3Q3k4YnNRc1FQbG13SEJDd0g5Q3lBUUVLSzFnaDJCdjBXYkFMRUxJR0FRb3JXQ0hZRy9SWnNBRVFzQS9Rc2lFV0ZCRVNPYkFoTDdJVEFRb3JXQ0hZRy9SWnNCd1FzQjNRc0IwdnNCWVFzaWtCQ2l0WUlkZ2I5Rmt3TVFFakF3WVhGak15TndjR0p5WW1OeE1qQWlFbkF5TVRCUjRDQnpjVE13TXpBUmMrQWljbUp5Y0dDOE55QXdJSFR5QTFDMEpFYTJ3TWJvRnYvblRGWTdYOUFXSjR0RnNGa0MrMUxzWDdSYkI0bTBNTUU3ekZBNnY5WUJvWFRRcVlFZ0VDbFlnQ252NkpBZjNMQmJBQkExeW5jQUVCQnY3Ni9wSUJBbXJFYTZrSUFRRC8vd0E2LytrSDZnV3dBQ1lBTmdBQUFBY0FWd1EwQUFBQUJ3QWlBQUFIYVFXd0FCOEFJd0FuQUNzQU1BQTFBRG9BdHdDd0FFVllzQjR2RzdFZUhENVpzQUJGV0xBYkx4dXhHeHcrV2JBQVJWaXdBaThic1FJY1BsbXdBRVZZc0Ewdkc3RU5FRDVac0FCRldMQVFMeHV4RUJBK1diSVVFQnNSRWptd0ZDK3dHTkN3R0Mrd0hOQ3dOdEN3QU5Dd0JOQ3dHQkN5RndFS0sxZ2gyQnYwV2JBbjBMQWowTEFyMExBSDBMQVVFTEFrMExBZzBMQW8wTEFJMExBVUVMSVRBUW9yV0NIWUcvUlpzRExRc0EvUXNDM1FzQXZRc2pRUUhoRVNPYkEwRUxBdjBMSTVIaEFSRWprd01RRWhFek1ETXdjakJ6TUhJUU1qQXlFREl3TWhOek1uSXpjekF6TVRJUk16QVNFbkl3VXpOeU1GTXpjakV3Y1hGemNsQnhjSE53RTNKeWNIQktRQlNibkR3bzRic1ZEZ0cvNzl3NnN4L3BIZHF4NysreHZoRExRYmp4MjJHQUZLMTUzK25BRWFGSzMrWHA1WS93TUVuMDMrZkZZREJVUDlCbE1CQ1VVQmxXSUtBaXNEMUFIYy9pU1l3cGorSGdIaS9oNEI0cGpDbUFIYy9pUUIzUHpLd3NMQ3dzTCtxQUlwc3NNYUFSaTZwUUljQWx0aWF3QUFBZ0FmLy93RnlBUTZBQTRBR3dCS0FMQUFSVml3Rmk4YnNSWVlQbG13QUVWWXNBd3ZHN0VNRUQ1WnNBL1FzaElCQ2l0WUlkZ2I5Rm13RmhDd0R0Q3lCUklPRVJJNXNnc0JDaXRZSWRnYjlGbXlFQXNQRVJJNU1ERUJGaFlIQXlNVE5pY21KeVVESXhzQ013TUZNamNUTXdNR0JpY0M2NW1QRXpXMU5nWUNDcEwrd2FHMXZNR0F0V1VCS3VFb2RMVnlHY3VyQkRnRnpjRCt0d0ZNTUN5VkJRTDhYd1E2KzhZQzNmMjdBdlVDci8xWnljNEVBQUFCQUZILzdBU0lCY2NBSlFDS3NoOG1KeEVTT1FDd0FFVllzQmd2RzdFWUhENVpzQUJGV0xBTEx4dXhDeEErV2JJbEdBc1JFam13SlMreUFBSUtLMWdoMkJ2MFdiQUxFTElHQVFvcldDSFlHL1Jac0FBUXNBL1FzQ1VRc0JEUXNDVVFzQlhRc0JVdnRnOFZIeFV2RlFOZHNoSUNDaXRZSWRnYjlGbXdHQkN5SFFFS0sxZ2gyQnYwV2JBVkVMQWcwTEFTRUxBaTBEQXhBU0VHRnhZV0Z4WTNGd1luSmdJM0J6Y3pOeU0zTXhJQUZ6SVhCeVluSmdZSElRY2hCeUVETHY2T0NRY01obkpmZkFWeWQrTHVJTFFXckJtdEZxVStBVHZvV1pRaWFtT2gweTRCZWhiK2pCZ0JkUUlkU2tkNGhnTURJcUVkQWdRQk52WUJmSWw5QVEwQkd3SWVwQ1FDQXNyQ2ZZa0FCQUJEQUFBRit3V3dBQmtBSGdBakFDZ0F3QUN3QUVWWXNBc3ZHN0VMSEQ1WnNBQkZXTEFCTHh1eEFSQStXYkFMRUxJb0FRb3JXQ0hZRy9SWnNDVFFzQ1F2UUFrQUpCQWtJQ1F3SkFSZHNBYlFzQVl2dEE4R0h3WUNYYlFnQmpBR0FsMnlzQVlCWGJBajBMQWpMN1N3SThBakFsMUFDUUFqRUNNZ0l6QWpCRjJ5QUFFS0sxZ2gyQnYwV2JBR0VMSURBUW9yV0NIWUcvUlpzQ1FRc2h3QkNpdFlJZGdiOUZtd0I5Q3dKQkN3Q3RDd0NpK3dKQkN3RDlDd0hCQ3dFdEN3QmhDd0hkQ3dGTkN3QXhDd0l0Q3dGOUF3TVFFREl4TWpOek0zSXpjek53VXlGaGN6QnljSEJ6Y0hCd1loQVRjRkJ3VUZOamNGQnhNbEppY2hBWlJqdTQzQUdzQVJ3UnZBS2dIdHBlSW43aHU0Q2c3Qkc5U1kvcVFCZGduOWZCQUNmZjZjb1hMOXVoQlVBalk0bGY2bkFqcjl4Z013bDE2WDlBRitkWmNCTXk0Q2x3SDJBYmswQVY0QjhBSmFBbGtCNVFKUEJRQUFBUUJKQUFBRWNnV3dBQm9BWHdDd0FFVllzQmt2RzdFWkhENVpzQUJGV0xBTUx4dXhEQkErV2JBWkVMSVlBUW9yV0NIWUcvUlpzQUhRc0JnUXNCUFFzQk12c0FQUXNCTVFzaElCQ2l0WUlkZ2I5Rm13QnRDd0VoQ3dEdEN3RGkreUNRRUtLMWdoMkJ2MFdUQXhBUWNXQnpNSEl3WUVCd0VISXdFM0Z6STNCVGNoSmlZbkpUY2hCQ25tSndUUFNZODAvd0RsQVh3QjJmNWpGT0wxWnYzR1NRSUJCbnhvL3VCSkE0a0ZFZ0ZlWjU2eXJ3Zjl5QTRDY25RQ3l3R2VYV1FFQVo0QUFBRUFDdi9wQkJRRnNBQWVBSTBBc0FCRldMQVJMeHV4RVJ3K1diQUFSVml3QlM4YnNRVVFQbG15RXhFRkVSSTVzQk12c0JmUXNCY3ZzZ0FYQVYyeUdBRUtLMWdoMkJ2MFdiQVowTEFJMExBSjBMQVhFTEFXMExBTDBMQUswTEFURUxJVUFRb3JXQ0hZRy9SWnNCWFFzQXpRc0EzUXNCTVFzQkxRc0EvUXNBN1FzQVVRc2hvQkNpdFlJZGdiOUZteUhnVVJFUkk1c0I0dk1ERUJCd1lDQkNjbUp4TUZQd0lGTnlVVE13Y2xCd1VISlFjRkF6WVNOemNFRkFvYndmN2xya3B5WXY3L0l2OGEvdjhoQVFBN3ZDMEJDQ0grK1JrQkNDSCsrV0cvOHlVT0F3Tk8xZjZ6cWdJQ0V3SlVicnh2am02OGJ3RlUrM0s4Y285eXZIUDk0UVVCRmZCckFBQUIvL0lBQUFTR0JEb0FIQUJWQUxBQVJWaXdIQzhic1J3WVBsbXdBRVZZc0Fndkc3RUlFRDVac0FCRldMQVBMeHV4RHhBK1diQUFSVml3RlM4YnNSVVFQbG15QUE4Y0VSSTVzQUF2c2c0QkNpdFlJZGdiOUZtd0VkQ3dBQkN3R3RBd01RRWVBaFVVQndjak56WW5KaVluQXlNVEJnSUhCeU0zRWdBM056TURGSGFuVlFvZXRSd1VCZ3RwWFlHMWdaZkdKeUsxSHk4Qk51b290UU52RjVQdGkwdEl1cXA4WjR5WUhQMHpBc3dsL3dEWnpya0JLd0ZxSThrQUFBTC81UUFBQlRVRnNBQVdBQjhBYlFDd0FFVllzQXd2RzdFTUhENVpzQUJGV0xBREx4dXhBeEErV2JJR0F3d1JFam13QmkreUJRRUtLMWdoMkJ2MFdiQUIwTEFHRUxBSzBMQUtMN1FQQ2g4S0FsMnlDUUVLSzFnaDJCdjBXYkFVMExBR0VMQVYwTEFLRUxBWDBMQU1FTElmQVFvcldDSFlHL1JaTURFQklRTWpFeU0zTXpjak56TVRCUllXQndZRUl5VUhJUUVGTWpZM05pWW5KUUt0L3J3d3V6REpITWdaeWh6SWZ3SDkwK29SRXY3VjhQNmxHQUZGL3U0QlJabkRFUkNIZnY2bUFSUCs3UUVUbm9tZEF0a0JCK3krMHZNQmlRRW1BWnlMZXBZRUFRQUVBTXovNWdVNUJjZ0FHd0FwQURjQU93QjdBTEE0TDdBNkw3QUFSVml3Q2k4YnNRb2NQbG13QUVWWXNDTXZHN0VqRUQ1WnNBb1FzQVBRc0FNdnNnQURDaEVTT2JJT0NnTVJFam13Q2hDeUVRUUtLMWdoMkJ2MFdiQURFTElZQkFvcldDSFlHL1Jac0NNUXNCelFzQnd2c0NNUXNpMEVDaXRZSWRnYjlGbXdIQkN5TkFRS0sxZ2gyQnYwV1RBeEFRWUdKeVltTnpjMk5oY1dGZ2NuTmlZbklnWUhCd1lXRnpJMk53RVdGZ2NIQmdZbkppWTNOelkyQXdZV0Z4WTJOemMySmljbUJnY0ZKd0VYQXVVTW4zTnppQWtHRGF0OGI0a0Nod00yUUVGY0NnZ0lPRHc4VGcwQjBIdVBDQVlOdFlGNWtRZ0dETFEvQlVOQ1NHRUxDUWREUWtWbUMvM3paQU54WXdRZWM0OEVBcXQrUTR1dkFnS1BjUUU2VFFKb1ZrWktad0pMTy81MEJLbC9RNDJ2QkFLcmdFU0xyZjZDVUdFQ0FtbE9UMHhtQWdKbVVmVklCR2hIQUFBQ0FFdi82d1BEQmhjQUhBQWtBRk1Bc0FrdnNBQkZXTEFQTHh1eER4NCtXYkFBUlZpd0FDOGJzUUFRUGxtd0NSQ3lDQUVLSzFnaDJCdjBXYkFXMExBQUVMSWNBUW9yV0NIWUcvUlpzQWtRc0IzUXNBOFFzaUlCQ2l0WUlkZ2I5Rmt3TVFVbUppY21OemNHQnpjMk54TTJOaGNXRmdjSEJnQUhCd1lWQmhZWEF6WVNOelluSmdjQ1ZZT29GQTBQQkdSdEZHVnNYaGl1aEhGNkNnTVQvd0RIRVFnQ1VsQnRmbzBHQkVOdUdSVUdsSUZQV0JRYkFyQUNJUUlodHNrREJLK0hIOGYralhGak5USlZZZ1VDWDI4QkNxUnRCUWJsQUFBRUFEVUFBQWZ2QmNVQUF3QVJBQ0FBS2dDSUFMQUFSVml3Snk4YnNTY2NQbG13QUVWWXNDa3ZHN0VwSEQ1WnNBQkZXTEFFTHh1eEJCdytXYkFBUlZpd0lTOGJzU0VRUGxtd0FFVllzQ1F2RzdFa0VENVpzQVFRc0F2UXNBc3ZzQUxRc0FJdnNnRURDaXRZSWRnYjlGbXdDeEN5RlFNS0sxZ2gyQnYwV2JBRUVMSWRBd29yV0NIWUcvUlpzaU1wSkJFU09iSW9JU2tSRWprd01RRWhOeUVERmhZSEJ3WUdKeVltTnpjMk5nTUdGaGNXTmo4REppY21CZ2NCSXdFREl4TXpBUk16QjBuOXFob0NWcUtRbmd3SkVkQ1dqNkVNQ0EvVVNnaExTazVyRVFJTEFRYUlVbTBPL2dUQi9vUEh0UHpCQVgvSHN3R2NqZ09YQk1PVFY2WENCQVRDa2xhaXlQNCtZMmNDQTJWZ0RHTXBvQU1DYldMN21RUjIrNG9Gc1B1SEJIa0FBZ0RxQTVZRXJRV3dBQXdBRkFCdEFMQUFSVml3Qmk4YnNRWWNQbG13QUVWWXNBa3ZHN0VKSEQ1WnNBQkZXTEFUTHh1eEV4dytXYklCRlFZUkVqbXdBUyt5QUFrQkVSSTVzZ01CQmhFU09iQUUwTElJQVFrUkVqbXdBUkN3QzlDd0JoQ3hEUW9yV05nYjNGbXdBUkN3RDlDd0RSQ3dFZEN3RXRBd01RRURCd01ESXhNekV4TXpBeU1CSXdNakV5TTNJUVE2d3pSR1IxbGVha1hTY1Y1WS9tcU9VRmxQanc0QmVBVVMvb1lDQVpIK2NBSVovbk1CamYzbkFjaitPQUhJVVFBQ0FJTC82UVI4QkZJQUZRQWNBR0t5QWgwZUVSSTVzQUlRc0JiUUFMQUFSVml3Q2k4YnNRb1lQbG13QUVWWXNBSXZHN0VDRUQ1WnNob0tBaEVTT2JBYUw3SVBDZ29yV0NIWUcvUlpzQUlRc2hNS0NpdFlJZGdiOUZteUZRb0NFUkk1c0FvUXNoWUtDaXRZSWRnYjlGa3dNU1VHSnlZbUFqYzJFaVFYSGdJSEJ5RURGaGNXTndNbUJ3TWhFeVlEc0xpK2hOQmtEZzZ5QVFTS2dMNWdDd1g5RkR0Zmo2cld6b2lhTXdJTE0xMWRkQVFDbWdFQ2laSUJFWnNFQklyN2tqSCt0bWNFQjM4REt3TjgvdW9CSDJ6Ly93QzEvL1FGZEFXYkFDY0IxUUJLQW9ZQUp3RjhBTjhBQUFFSEFkd0MvQUFBQUJBQXNBQkZXTEFGTHh1eEJSdytXVEF4Ly84QWt2LzBCaEFGdGdBbkFkY0Fsd0tVQUNjQmZBR1lBQUFCQndIY0E1Z0FBQUFRQUxBQVJWaXdEUzhic1EwY1Bsa3dNZi8vQUkvLzlBWUdCYVFBSndIWkFIa0Nqd0FuQVh3QmR3QUFBUWNCM0FPT0FBQUFFQUN3QUVWWXNBRXZHN0VCSEQ1Wk1ESC8vd0MrLy9RRnZBV2tBQ2NCMndDUEFvOEFKd0Y4QVJjQUFBRUhBZHdEUkFBQUFCQUFzQUJGV0xBRkx4dXhCUncrV1RBeEFBSUFUZi9uQkRjRjdBQWVBQ3dBUndDd0R5K3dBRVZZc0Jjdkc3RVhFRDVac2dBUEZ4RVNPYkFBTDdBUEVMSUpBUW9yV0NIWUcvUlpzQUFRc2g4QkNpdFlJZGdiOUZtd0Z4Q3lKZ0VLSzFnaDJCdjBXVEF4QVJZV0Z6WW5MZ0luSmdZSEp6WVhGaFlTQndJQ0JDY21BajhDTmdBWEpnWUdGeFlXRnhZMk56YzJKZ0prVnBjMEJBSUVRWGxTUzQ5R0FwT2xrOE5VQ0EyZS92Nmt1OVlHQXdJZEFTTFZiS3hXQ3dseVk0L0NKQW9Ea3dQK0FrdEZMalZsc21BREFpTVltRVFCQTU3KzA4RCsyLzU2eXdRRkFRVFRNUkxsQVJXZEEzM2tqM0tEQkFYejVVRlVlUUFBQVFBay95c0ZSZ1d3QUFjQUp3Q3dCQyt3QUVWWXNBWXZHN0VHSEQ1WnNBUVFzQUhRc0FZUXNnSUJDaXRZSWRnYjlGa3dNUVVqRXlFREl3RWhCRUcxN3YxTTdiVUJCUVFkMVFYdCtoTUdoUUFCLzZ6Kzh3VFNCYkFBREFBMUFMQURMN0FBUlZpd0NDOGJzUWdjUGxtd0F4Q3lBZ0VLSzFnaDJCdjBXYkFGMExBSUVMSUtBUW9yV0NIWUcvUlpzQWZRTURFQkFTRUhJVGNCQVRjaEJ5RUJBMC85V2dOakcvdTdHZ0xNL2kwWUEvc2IvTmtCd1FKQy9VbVltQUxNQXRLSG1QMUVBQUVBcXdLTEEvRURJZ0FEQUJzQXNBQkZXTEFDTHh1eEFoWStXYklCQVFvcldDSFlHL1JaTURFQklUY2hBOWI4MVJzREt3S0xsd0FBQVFCQkFBQUZEZ1d3QUFnQVBMSURDUW9SRWprQXNBY3ZzQUJGV0xBQkx4dXhBUncrV2JBQVJWaXdBeThic1FNUVBsbXlBQUVERVJJNXNBY1FzZ1lCQ2l0WUlkZ2I5Rmt3TVFFQk13RWpBeU0zSVFIbEFtbkEvUGFLZ2JnY0FTNEJIZ1NTK2xBQ2RKb0FBQU1BVGYvbUI2RUVVZ0FaQUNvQU93QkVBTEFBUlZpd0JpOGJzUVlRUGxtd0FOQ3dCaEN3RGRDd0RTK3dFOUN3QmhDeUhRRUtLMWdoMkJ2MFdiQU5FTEluQVFvcldDSFlHL1Jac0MvUXNCMFFzRGpRTURFRkppWW5CZ1luSmlZbkpoSWtGeFlXRnpZMkZ4NENCd0lBQVJRV0Z4WTJOamMzTmlZbkppY21CZ1lGTnlZbUp5WUdCZ2NIQmhZV0Z4WTJOd1ZwanRRb2ZmU0ZvOVFTRTVJQkM1Nk4xU2g2OW9xQnUxa1BIdjdJK3RWM2FsU3JpUndIQlQ4NFRsNXBwV0lGendRRGMybFVxSTRkQndaTmgwK054QmNWQk1lZnlhVURCT1czckFGYXdnUUV4cUhFcXdNRWsvdU4vdjMrdVFITWlhY0NBbTdDWFNwS3FEcFJCQVNEOXc5VGo2RUVBbW5EWUNsUHZYTUVCZWV6QUFBQi94citSUU1IQmhvQUZRQTlzZ0lXRnhFU09RQ3dBRVZZc0E0dkc3RU9IajVac0FCRldMQURMeHV4QXhJK1diSUlBUW9yV0NIWUcvUlpzQTRRc2hNQkNpdFlJZGdiOUZrd01SY0dCaWNtSnpjV0Z4WTNFelkyRnhZWEJ5WWpJZ2Z4RTdtVk5VRWNOQm1jSHNNVHhaMDJYQ0l3S0xjamE2T3RBZ0lVa2c0QkI4a0ZES2pFQWdFVmp3M2xBQUlBTVFFVkJDMEQ4d0FXQUNrQWF3Q3dHUyt3QXRDd0FpK3dDTkN3Q0Mrd0FoQ3dDOUN3Q0JDeURnRUtLMWdoMkJ2MFdiQUNFTElVQVFvcldDSFlHL1Jac0E0UXNCYlFzQmtRc0IzUXNCMHZzQmtRc0IvUXNCMFFzaUlCQ2l0WUlkZ2I5Rm13R1JDeUpnRUtLMWdoMkJ2MFdiQWlFTEFwMERBeEV6WXpNaGNYRmhZek1qWTNCd1luSWlZbkp5WWpJZ2NITmpNMkZoWXpNamNIQmljaUppWWpJZ2NIakcyUVUxQTRNVjQ2UEhkTkZXK0NPMkF4TWxSU2Y0azRibzB5VTlSTmVvUVViNElzU3RsVWJIQXRBNFp0S3g4ZEtUaEh2VzhDS1IwY0wzL21iZ0VhZUgrOGJ3SVdlbGttQUFBQkFIQUFuUVAvQk5NQUV3QTNBTEFUTDdJQUFRb3JXQ0hZRy9SWnNBVFFzQk1Rc0FmUXNCTVFzQS9Rc0E4dnNoQUJDaXRZSWRnYjlGbXdDTkN3RHhDd0M5QXdNUUVoQnljM0l6Y3pOeUUzSVJNWEJ6TUhJUWNoQTVyK0E3TmJoYVFjL2IzK2Nod0I2Y0Zia3JnZC91NjhBYU1Cai9KQnNhRC9vUUVFUWNPaC93RC8vLy9VQUFJRHlRUkNBR1lBSUJGaFFBQTVtZ0FIQVpmL0tmMTMvLzhBR1FBQkErZ0VUUUJtQUNJVWMwQUFPWm9BQndHWC8yNzlkZ0FDQUVFQUFBUFVCYkFBQlFBSkFEaXlDQW9MRVJJNXNBZ1FzQUhRQUxBQVJWaXdBQzhic1FBY1BsbXdBRVZZc0FNdkc3RURFRDVac2dZQUF4RVNPYklJQUFNUkVqa3dNUUV6QVFFakNRSVRBUUk5aVFFTy9nV0svdklDS1A2UHRBRnlCYkQ5SGYwekF1RUNCUDNuL2Y0Q0YvLy9BSGdBcEFId0JQY0FKd0FTQUVNQXNnQUhBQklBMndRa0FBSUFjQUo1QW5jRU9nQURBQWNBSlFDd0FFVllzQU12RzdFREdENVpzQURRc0FBdnNBWFFzQVV2c0FNUXNBYlFzQVl2TURFVEl4TXpFeU1UTS9xS1RvcmdpaytLQW5rQndmNC9BY0VBQUFILzQvOWZBUThBN3dBSEFBd0FzQVF2c0FEUXNBQXZNREVYSnpZM056TUhCa1pqV3hZUHJBa2VvVXA3ZVZJLzB3RC8vd0IwQUFBRmF3WVpBQ1lBU2dBQUFBY0FTZ0liQUFBQUFnQllBQUFFQlFZWkFCWUFHZ0JwQUxBQVJWaXdDUzhic1FrZVBsbXdBRVZZc0JNdkc3RVRHRDVac0FCRldMQVpMeHV4R1JnK1diQUFSVml3Rmk4YnNSWVFQbG13QUVWWXNCZ3ZHN0VZRUQ1WnNCTVFzaFFCQ2l0WUlkZ2I5Rm13QWRDd0V4Q3dCTkN3Q1JDeUR3RUtLMWdoMkJ2MFdUQXhNeE1qUHdJMk56WVhGaFlYQnlZbkpnY0hNd2NqQXlFakV6TmJvNllacGc0YmVIT3ZSNFZHTEhGdjVTSU4xeG5Xb3dJNHRyeTJBNnVQQVdTM1pGOENBaU1ZbmpNQ0JPUlhqL3hWQkRvQUFRQjBBQUFFWWdZYUFCZ0FYQUN3QUVWWXNCTXZHN0VUSGo1WnNBQkZXTEFITHh1eEJ4ZytXYkFBUlZpd0NpOGJzUW9RUGxtd0FFVllzQmd2RzdFWUVENVpzQk1Rc2dJQkNpdFlJZGdiOUZtd0J4Q3lDQUVLSzFnaDJCdjBXYkFNMExBSEVMQVAwREF4QVNZaklnWUhCek1ISXdNakV5TTNNemMyTmhjV0Z4Y0RJd09mZ1R0amVBOFM0Um5nbzdXa3B4bW1FaHJZcG0yNFlQNjFCV1VXYjE5emoveFZBNnVQZjZlNkFnSXFGUG9vQUFJQWRBQUFCbGNHR3dBbkFDc0Fsd0N3QUVWWXNBZ3ZHN0VJSGo1WnNBQkZXTEFXTHh1eEZoNCtXYkFBUlZpd0lDOGJzU0FZUGxtd0FFVllzQ292RzdFcUdENVpzQUJGV0xBbkx4dXhKeEErV2JBQVJWaXdKQzhic1NRUVBsbXdBRVZZc0Nrdkc3RXBFRDVac0NBUXNpRUJDaXRZSWRnYjlGbXdKZEN3QWRDd0lCQ3dFdEN3Qk5Dd0NCQ3lEUUVLSzFnaDJCdjBXYkFXRUxJY0FRb3JXQ0hZRy9SWk1ERXpFeU0zTXpjMk5oY1dGd2NtSnlJR0J3Y2hOelkyRnhZV0Z3Y21KeVlIQnpNSEl3TWpFeUVESVNNVE0zZWtweG1tRVJmVW9EWkxGakF4V1hVUkV3R0REaHJudFVpSlJDOXpiK1FpRGRnWjE2TzFvLzU5b3dSdnRieTFBNnVQZWFqQUFnSVFtQW9DYWw1NVpiSEpBZ0ltR0pzekFnTGlWNC84VlFPci9GVUVPZ0FBQVFCMEFBQUdtUVliQUNvQWlnQ3dBRVZZc0Frdkc3RUpIajVac0FCRldMQVhMeHV4Rng0K1diQUFSVml3SXk4YnNTTVlQbG13QUVWWXNDb3ZHN0VxRUQ1WnNBQkZXTEFuTHh1eEp4QStXYkFBUlZpd0hDOGJzUndRUGxtd0l4Q3lKQUVLSzFnaDJCdjBXYkFvMExBQjBMQWpFTEFUMExBRTBMQUpFTElPQVFvcldDSFlHL1Jac0JjUXNoOEJDaXRZSWRnYjlGa3dNVE1USXpjek56WTNOaGNXRndjbUl5SUdCd2NoTnpZMkZ4WVhGd01qRXlZakpnY0hNd2NqQXlNVElRTjNvNllacGhJZGVtYU9OVXNXT2loYmRSQVJBWVFQR2RhcVZuRy8vclh6Z1R6TklnN2hHdCtqdGFQK2ZhTURxNDkvdGw1T0FnSVFtQXh1WjJ4cnRNRUNBaFlvK2lnRlpCWUM0MStQL0ZVRHEveFZBQUFCQUhULzdRVElCaG9BSmdDQkFMQUFSVml3SWk4YnNTSWVQbG13QUVWWXNCNHZHN0VlR0Q1WnNBQkZXTEFSTHh1eEVSZytXYkFBUlZpd0pTOGJzU1VZUGxtd0FFVllzQXN2RzdFTEVENVpzQUJGV0xBWkx4dXhHUkErV2JBZUVMSWJBUW9yV0NIWUcvUlpzQkRRc0FIUXNBc1FzZ1lCQ2l0WUlkZ2I5Rm13SWhDeUZRRUtLMWdoMkJ2MFdUQXhBU01EQmhjV016STNCd1luSmlZM0V5TTNNeE1tSnlJR0J3TWpFeU0zTXpjMk5oY1dGd016Qks3RGNnTUNCMDhpTWdwQ1FXNXNERzdBR3I4elJXcFZjaExOdGFTbkdhWVJGOFdlck5VOHhRT3IvV0FhRjAwS21CSUJBcHVDQXA2UEFTRWtBbXRwKzFNRHE0OTRwY01DQTJiK2l3QUJBQ24vNlFaMkJoTUFUUUMyQUxBQVJWaXdTQzhic1VnZVBsbXdBRVZZc0VFdkc3RkJHRDVac0FCRldMQVNMeHV4RWhnK1diQUFSVml3TGk4YnNTNFFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNCSVFzRXpRc2dFQkNpdFlJZGdiOUZtd0NoQ3lCUUVLSzFnaDJCdjBXYkFCRUxBUDBMQklFTElYQVFvcldDSFlHL1Jac2g5QkxoRVNPYkJCRUxJaUFRb3JXQ0hZRy9SWnNqb3VRUkVTT2JBNkVMSW5BUW9yV0NIWUcvUlpzakl1UVJFU09iQXVFTEkxQVFvcldDSFlHL1JaTURFQkl3TUhGQmNXTndjR0p5WW1OemNUSXpjek56WW5KaWNtQmg4Q0ZnY2pOaVluSmdZSEJnUVhGZ2NPQWljbUpqY3pGQllYRmpZM05pY25KamMrQWpNV0Z5WTNOallYRmhZSEJ6TUdYY1JzQVZJYk9BeExPbUZxQXdKcXR4bTFEQVVFRG90bGVnd0ZGZ2NHdFFKb1dGMkVEQTRCSnp6S0N3WjV5bktyM1FhMGNXVmtrQXdTa3FEL0N3VjF4VzFiV1JNSEQ5MlVxYkVVRGNRRHEvMTlOR1FEQVF1WUV3SUJrSWNrQW9HUFZpc3FqZ01EaVpJN3EwQThVbVVDQWx0TGFVMGJXYlJrbGxBREFzV2JYV3NDQWxkTmN5MHVWY0JnbEZNQkgzcy9ocU1DQk5LcVZ3QUFGdityL25JSVJnV3VBQTBBSEFBcEFEZ0FQZ0JFQUVvQVVBQlhBRnNBWHdCakFHY0Fhd0J2QUhjQWV3Qi9BSU1BaHdDTEFJOEJEQUN3UGkrd0FFVllzRWN2RzdGSEhENVpzbjlLQXl1eWZIc0RLN0o0Z3dNcnNvQTdBeXV5Q2o1SEVSSTVzQW92c0FQUXNBTXZzQTdRc0E0dnNBb1FzQS9Rc0E4dnNsRU9EeEVTT2JCUkw3SndCd29yV0NIWUcvUlpzaFpSY0JFU09iQUtFTElnQndvcldDSFlHL1Jac0FNUXNpWUhDaXRZSWRnYjlGbXdEeEN3S3RDd0tpK3dEaEN3TDlDd0x5K3lOUWNLSzFnaDJCdjBXYkErRUxJOUNnb3JXQ0hZRy9SWnNENFFzR3pRc0dqUXNHVFFzRC9Rc0QwUXNHM1FzR25Rc0dYUXNFRFFzRWNRc2tnS0NpdFlJZGdiOUZtd1lOQ3dYTkN3V05Dd1M5Q3dSeEN3WWRDd1hkQ3dXZEN3VE5Dd0RoQ3lVZ2NLSzFnaDJCdjBXYkFQRUxKM0J3b3JXQ0hZRy9SWk1ERUJCZ1luSmlZM056WTJGeFlXQnhNVEZ4WVdCd1lHQnhZVkJnY0dCd0UySmljbUJnY0hCaFlXTmpjQk13TUdCaU1pSmljWEJqYzJOamNCRXpNSE13Y2hOek0zTXdNQkV5RUhJd2NsTnlFREl6Y0JCek0yTnpZbkFUY2hCeUUzSVFjaE55RUhFemNoQnlFM0lRY2hOeUVIQVRjMk56WXZBZ0VqTnpNM0l6Y3pBeU0zTXlVak56TTNJemN6QXlNM013TVFDb3RmWG5RRUNRaUxZRjEwQWd0Z3FsNWZBd0kzSjA4QkZqU0YvcmdGT0RvN1Znd05Cemw0VlFzRDBHRTdDbXROVW1ZQldRUllMRGtKK1dNM2J5Uy9GQVQvRk1Ba2JUZjV0VElCTFJTK0hnWGJGQUV1TW0wZSsrZ2ViMjhPRFZJQlNoVUJEeFg5YmhVQkRoWDlieFVCRFJYTkZBRVBGUDF1RkFFT0ZQMXZGQUVORkFGWVYzc05Da1VoWHZ6T2J5MXZGVzhzYjY5dkxXOEhBRzBzYlJWdExXMnZiU3h0QWRSbGVnSUNlbUZ1WlhzQ0FucGcvcmdDSlFFRFNrSXdPUlVkV0RBaFRnUUJTME5PQWdKT1NISS9VZ1JSUlFGUC9vVlBXMUpWQWw4Q0FUZ3AvTW9CTzhweGNjcit4UVlmQVIxMHFhbDAvdU9wL0xhcEJWUklCd05MZEhSMGRIUjArVGh4Y1hGeGNYRUR3Z0VHVVRjSEF3SCswdngrK3Z3VitYNzhmdnI4RmZrQUJRQmMvZFVIMXdoekFBTUFIQUFnQUNRQUtBQTBBTEFsTDdBaEw3SWNIZ01yc0NVUXNBRFFzQUF2c0NFUXNBTFFzQUl2c2cwQUhCRVNPYkFOTDdJZkFoNFJFam13SHk4d01Ra0RCVFEyTnpZMk5UUW1JeUlHQnpNMk5qTXlGaFVVQndZR0ZSY2pGVE1ETXhVakF6TVZJd1FZQTcvOFFmeEVCQThlSkVwY3A1V1FvQUxMQWpvck9UaGRXeS9LeXNwTEJBUUNCQVFHVXZ3eC9ERUR6L0U2T2hnbmgwcUFsNHQvTXpSQU5GODhRVnhNVzZyOVRBUUtuZ1FBQVFCaUFBQUVTZ1d3QUFZQU9iSUJCd2dSRWprQXNBQkZXTEFGTHh1eEJSdytXYkFBUlZpd0FpOGJzUUlRUGxtd0JSQ3lBd0VLSzFnaDJCdjBXYklBQXdVUkVqa3dNUUVCSXdFaE55RUVOdnpydndNUy9UNGJBMzBGUGZyREJSaVlBQUFDQUVILzZBUW9CRklBRWdBaEFFT3lDQ0lqRVJJNXNBZ1FzQmZRQUxBQVJWaXdBQzhic1FBWVBsbXdBRVZZc0Frdkc3RUpFRDVac2hZQkNpdFlJZGdiOUZtd0FCQ3lIZ0VLSzFnaDJCdjBXVEF4QVI0Q0J3Y09BaWNtSmljbU56YzJFallERmhZWEZqWTNOaWNtSmljbUJnWUNnSXJEV3c4REZaMzFqNkxYR2d3SkF4V2c4UGNEZTNDTTBoMEZBUU44Y1cyeVlRUk9CSS82bHhhZy80MEVCTXV1VUZFV293RUZpdjFmaDZRRUJlTEtLeTZJcVFRRWpQc0FBQUgvRC81RkFROEFtQUFNQUNjQXNBMHZzQUJGV0xBRUx4dXhCQkkrV2JJSkFRb3JXQ0hZRy9SWnNBMFFzQXpRc0F3dk1ERWxBd1lHSnlZbk54WVhNamMzQVE4bkc3eVBORDhiTGpHRkpDbVkvdnVncmdJQ0VaOE9BclA4QUFBQi83MyttUURNQUprQUF3QVNBTEFFTDdBQzBMQUNMN0FBMExBQUx6QXhFeU1UTTNPMldiYittUUlBQUFJQkV3VFhBM01HendBTEFCNEFYQUN3QXkreUNRUUtLMWdoMkJ2MFdiQUgwTEFITDdBTDBMQUxMN0FIRUxBUDBMQVBMN0FTMExBU0w3SS9FZ0Zkc0E4UXNCVFFzQlF2c0JJUXNoZ0VDaXRZSWRnYjlGbXdEeEN5SEFRS0sxZ2gyQnYwV2JBWUVMQWUwREF4QVFZR0p5WW1OUmNHRnpJM0V3WUdJeUltQndZSEp6WTJNeklXRmpjMk53Tk1DYVIvZTVLUUJIMkRITGdKWGtZcGdpZEZIbElNWVVNa2VDUVRReUlGcjJaeUFnSjFZQUoxQW5ZQkRWQm5Ud0VEVlJSVFpVWUtBUU5XQUFJQkVnVGVBMFVIQXdBTEFCb0FRd0N3QXkreUNRUUtLMWdoMkJ2MFdiQUwwTEFMTDdBSDBMQUhMN0FMRUxBYTBMQWFMN0FVMExBVUw3SVpHaFFSRWpteURSUVpFUkk1c1JNS0sxallHOXhaTURFQkJnWW5KaVkxRndZWE1qY25OemMyTnpZbUl6Y1hGZ2NHQndjRFJRdWhmSHFSakFhQWhCdS9FaTloQndSQVVnd1g5QVFEbXdvRnNXWnRBZ0p3WUFKeUFuTVNmQU1JTXhvYlV3RU1mV0lZUHdBQUFnRVJCTjhEWEFhS0FBNEFFZ0EzQUxBRUw3SUxCQW9yV0NIWUcvUlpzQTdRc0E0dnNBblFzQWt2c0E0UXNCSFFzQkV2c0EvUXNBOHZzQkVRc0JMUUdiQVNMeGd3TVFFR0JnY2pKaVluTlJjR0Z4WTJOeWNYQndjRFhBcWRmdytCa3dLU0JJTTlXUTQ1b3NKeEJiQmliUUlEYjJBQkFuTUNBVGs4MndIRUFRQUNBTTBFNUFPV0J0TUFCZ0FZQUkwQXNBRXZzQWJRc0FZdlFBa1BCaDhHTHdZL0JnUmRzZ0FCQmhFU09SbXdBQzhZc0FZUXNBTFFzQUVRc0FQUXNBTXZzQUFRc0FUUUdiQUVMeGl3QmhDd0N0Q3dDaTlBQ3g4S0x3by9DazhLWHdvRlhiQU4wTEFOTDdRL0RVOE5BbDJ3Q2hDd0Q5Q3dEeSt3RFJDeUV3WUtLMWdoMkJ2MFdiQUtFTElXQmdvcldDSFlHL1Jac0JNUXNCalFNREVCSXljSEl5VXpOd1lHSXlJbUJ3WUhKelkyTXpJV056WTNBNWFUcGRxM0FVK0E2d3RkUFNseEp6NGlUd3RkUUNaMkprQWlCT1NkbmZUbVJsbEtBUVJHRTBWZFNRRUNSZ0FDQU00RTVBUjVCczhBQmdBVkFGMEFzQUV2c0FEUUdiQUFMeGl3QVJDd0J0Q3dCaSsyRHdZZkJpOEdBMTJ3QXRDd0FSQ3dBOUN3QXkrd0FCQ3dCTkFac0FRdkdMQUJFTEFIMExBSEw3QU8wTEFPTDdJSUJ3NFJFam14RFFvcldOZ2IzRm15RkE0SEVSSTVNREVCSXljSEJ3RXpGemMzTmpZbkp6Y1dGZ2NHQmdjSEE1YVVvTjYyQVRhM3FCTXJWZzVoSHd0M2NnTURSRW9LQk9TNXVBRUJCbnlEQlF0cUJRSmRCMUJETmtVUVBRQUFBZ0FpQk04RGt3YUNBQVlBQ2dCT0FMQUJMN0FBMEJtd0FDOFlzQUVRc0FQUXNBTXZzQVhRc0FVdnRnOEZId1V2QlFOZHNBTFFzQUFRc0FUUUdiQUVMeGl3QVJDd0NOQ3dDQyt3QjlBWnNBY3ZHTEFJRUxBSzBMQUtMekF4QVNNbkJ5TUJNd1VqQXpNRGs2K0t3TkFCUjVUK2ozeVd0Z1RQblowQkJsVUJBZ0FDQU5JRTRRVDdCcFVBQmdBS0FGUUFzQU12c0FIUXNBRXZ0ZzhCSHdFdkFRTmRzQU1Rc0FMUUdiQUNMeGl3QVJDd0JOQ3dBeEN3QmRDd0JTK3dBaEN3QnRBWnNBWXZHTEFERUxBSjBMQUpMN0FIMExBSEw3QUpFTEFLMEJtd0NpOFlNREVCTXhNakp3Y2pBVE1ESXdJYmxldXZpTURTQTFuUThaWUY2UDc1bnA0QnRQNzlBQUlCRVFUZkExd0dpZ0FPQUJJQU53Q3dCQyt5Q3dRS0sxZ2gyQnYwV2JBTzBMQU9MN0FKMExBSkw3QU9FTEFTMExBU0w3QVEwTEFRTDdBU0VMQVIwQm13RVM4WU1ERUJCZ1lISXlZbUp6VVhCaGNXTmpjbE14Y2pBMXdLblg4UGdaTUNrZ1NEUFZrTy91R0pTMVlGc0dKdEFnTnZZQUVDY3dJQk9UemJ4Z0FBQVFEOEJJNENKd1k5QUFjQURBQ3dCUyt3QU5Dd0FDOHdNUUVYQmdjSEl6YzJBY0JuU3hRWXRCRWRCajFYYm1hRWNzRUFBQUwvcFFBQUErTUVqUUFIQUFvQVU3SUVDd3dSRWptd0JCQ3dDdEFBc0FCRldMQUVMeHV4QkJvK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBY3ZHN0VIRUQ1WnNnZ0NCQkVTT2JBSUw3SUFBUW9yV0NIWUcvUlpzZ29DQkJFU09UQXhBU0VESXdFekFTTUJJUU1DK2Y0Sm5NRUNtNklCQWJEK0l3R0VhQUVYL3VrRWpmdHpBYTRCK3dBQUF3QWRBQUFENXdTTkFBMEFGZ0FlQUh1eUdCOGdFUkk1c0JnUXNBM1FzQmdRc0JiUUFMQUFSVml3QVM4YnNRRWFQbG13QUVWWXNBQXZHN0VBRUQ1WnNoY0FBUkVTT2JBWEw3Sy9Gd0ZkdEI4WEx4Y0NYYlRmRis4WEFsMnlEZ0VLSzFnaDJCdjBXYklIRGhjUkVqbXdBQkN5RHdFS0sxZ2gyQnYwV2JBQkVMSWVBUW9yV0NIWUcvUlpNREV6RXdVV0ZnY0dCeFlXQndZR0J3TURGekkyTnpZbUp5Y1hNalkzTmljbkhjc0Jmci9DQ2dyU1QxWUVDTzNBdjBMMGJwVU1DMWRrK2Rsdmpnb1UxK0VFalFFRnBJeXFVeHFPWFoyMUF3SVMvb1VCWmxwVVlnV09BVjFUb0FVQkFBQUJBRWYvN0FRM0JLTUFIQUJPc2hNZEhoRVNPUUN3QUVWWXNBc3ZHN0VMR2o1WnNBQkZXTEFETHh1eEF4QStXYklBQ3dNUkVqbXlEZ01MRVJJNXNBc1FzaElCQ2l0WUlkZ2I5Rm13QXhDeUdnRUtLMWdoMkJ2MFdUQXhBUVlFSnk0Q056Y1NBQmNXRmhjakppWW5KZ1lIQmhjV0ZoY1dOd1BtSS83dHlJckJWaEVNSlFFNTRMalZDTE1GYlhpVHloOGJCZ1YyYlB0TUFYcTcwd1FFalB1WVdBRUlBVEFHQk5XMmNvSUVCY3Eybm1OMWl3UUsvQUFBQWdBZEFBQUVEd1NOQUFvQUZRQkRzaFVXRnhFU09iQVZFTEFDMEFDd0FFVllzQUl2RzdFQ0dqNVpzQUJGV0xBQUx4dXhBQkErV2JJTkFRb3JXQ0hZRy9SWnNBSVFzaFVCQ2l0WUlkZ2I5Rmt3TVRNVEJSNENCd2NDQUNFVEF4Y3lOamMzTmljbUp4M0xBVktXMm1VUUJSeitvdjc2Q0phVXZQTVpCaEk0UmF3RWpRRUVqZmlhTVA3OC9zc0Q5UHlqQWR2SE1hSm1mQVlBQUFFQUhRQUFBKzhFalFBTEFHR3lDUXdORVJJNUFMQUFSVml3Qmk4YnNRWWFQbG13QUVWWXNBUXZHN0VFRUQ1WnNnc0dCQkVTT2JBTEw3UWZDeThMQWwyeXZ3c0JYYklBQVFvcldDSFlHL1Jac0FRUXNnSUJDaXRZSWRnYjlGbXdCaEN5Q0FFS0sxZ2gyQnYwV1RBeEFTRURJUWNoRXlFSElRTWhBekg5L1VJQ1dSdjg4OHNEQnh2OXJqb0NCQUlPL29tWEJJMlovcklBQVFBZEFBQUQ0Z1NOQUFrQVI3SUhDZ3NSRWprQXNBQkZXTEFFTHh1eEJCbytXYkFBUlZpd0FpOGJzUUlRUGxteUNBSUVFUkk1c0FndnNnRUJDaXRZSWRnYjlGbXdCQkN5QndFS0sxZ2gyQnYwV1RBeEFTRURJeE1oQnlFRElRTWgvZ2hYdGNzQytodjl1ejhCK1FIei9nMEVqWm4rbUFBQUFRQk0vKzRFUVFTakFCOEFYTEllSUNFUkVqa0FzQUJGV0xBTEx4dXhDeG8rV2JBQVJWaXdBeThic1FNUVBsbXlEZ3NERVJJNXNBc1FzaEVCQ2l0WUlkZ2I5Rm13QXhDeUdRRUtLMWdoMkJ2MFdiSWZDd01SRWptd0h5K3lIQUVLSzFnaDJCdjBXVEF4SlFZR0p5NENOemNTQUJjV0ZoY25KaWNtQmdjR0Z4WVdGeFkzTnlFM0lRUFdQL0Nla2M5ZEVRY2hBVHZvczlZUXNSVGFsTXdnSEFzTWhXK2xhaTMrN2hvQnc1WlJWd01Da1B5ZE93RVdBVFlHQk1DdkFkTUlCY2k0bjE5NmlBTUZUdTZRQUFBQkFCMEFBQVNhQkkwQUN3Qm9zZ0VNRFJFU09RQ3dBRVZZc0Fvdkc3RUtHajVac0FCRldMQUhMeHV4QnhvK1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBRXZHN0VCRUQ1WnNnZ0VCeEVTT1h5d0NDOFl0R0FJY0FnQ2NiS2dDQUZkdEdBSWNBZ0NYYklEQVFvcldDSFlHL1JaTURFaEl4TWhBeU1UTXdNaEV6TUR6N1JXL2JoWHRjdTBXUUpJV3JVQjh2NE9CSTM5L1FJREFBQUJBQ29BQUFHcUJJMEFBd0Frc2dJRUJSRVNPUUN3QUVWWXNBSXZHN0VDR2o1WnNBQkZXTEFBTHh1eEFCQStXVEF4TXlNVE0rQzJ5cllFalFBQi8vYi82d09iQkkwQURnQXZzZ3dQRUJFU09RQ3dBRVZZc0FBdkc3RUFHajVac0FCRldMQUZMeHV4QlJBK1diSUxBUW9yV0NIWUcvUlpNREVCTXdNR0JpY21KamNYQmhjV05qY0M1TGVNRnV5b3JjSUl0UXpJVzM0UkJJMzh4YVBFQkFTNW9BSEJCQUp2WkFBQkFCMEFBQVIvQkkwQURBQk1zZ29ORGhFU09RQ3dBRVZZc0FRdkc3RUVHajVac0FCRldMQUlMeHV4Q0JvK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnQUVBaEVTT2JJR0JBSVJFamt3TVFFSEF5TVRNd00zQVRNQkFTTUJ3ckJBdGN1MFg1SUJ3KzM5ekFGOHpBSUdsZjZQQkkzOTRJa0JsLzN3L1lNQUFRQWRBQUFESXdTTkFBVUFMN0lGQmdjUkVqa0FzQUJGV0xBRUx4dXhCQm8rV2JBQVJWaXdBaThic1FJUVBsbXlBUUVLSzFnaDJCdjBXVEF4TnlFSElSTXo3QUkzRy8wVnk3U1hsd1NOQUFBQkFCMEFBQVd3QkkwQURnQmdzZ2dQRUJFU09RQ3dBRVZZc0FBdkc3RUFHajVac0FCRldMQUNMeHV4QWhvK1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBZ3ZHN0VJRUQ1WnNBQkZXTEFNTHh1eERCQStXYklCQUFRUkVqbXlCd0FFRVJJNXNnb0FCQkVTT1RBeEFSTUJNd01qRXhNQkl3c0NJeE1CemQwQ0YrL0t0RWRxL2VXRjRreEV0TXNFamZ4ekE0Mzdjd0diQWZ2OGFnT3MvZHYrZVFTTkFBRUFIUUFBQkpvRWpRQUpBRXl5QVFvTEVSSTVBTEFBUlZpd0JTOGJzUVVhUGxtd0FFVllzQWd2RzdFSUdqNVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdBeThic1FNUVBsbXlBZ1VBRVJJNXNnY0ZBQkVTT1RBeElTTUJBeU1UTXdFVE13UFByZjVLbXJYTHJRRzNtclFEZFB5TUJJMzhpd04xQUFBQ0FFci82Z1JPQktNQUR3QWZBRWF5SENBaEVSSTVzQndRc0FqUUFMQUFSVml3Q0M4YnNRZ2FQbG13QUVWWXNBQXZHN0VBRUQ1WnNBZ1FzaE1CQ2l0WUlkZ2I5Rm13QUJDeUd3RUtLMWdoMkJ2MFdUQXhCU1ltQWpjM0VnQVhIZ0lIQndJQUV5WW1KeVlHQndZWEZoWVhGalkzTmdIMmo4VllFUVVnQVQvbGo4UlhFQVFjL3NLdUNYMXRsZEVkRlFnS2ZteVV6aDhWRUFTUkFRT2NLd0VOQVVjR0JJNytueW4rOFA2MUF4TjRpUVFGMTdhRlgzeU5CQVhSdklNQUFnQWRBQUFFS1FTTkFBb0FFd0JOc2dvVUZSRVNPYkFLRUxBTTBBQ3dBRVZZc0FNdkc3RURHajVac0FCRldMQUJMeHV4QVJBK1diSU1Bd0VSRWptd0RDK3lDZ0VLSzFnaDJCdjBXYkFERUxJVEFRb3JXQ0hZRy9SWk1ERUJBeU1UQlJZV0J3WUVJeVVGTWpZM05pWW5KUUVlVExYTEFibXoxUXNNL3ZyUi92MEJCMzJmRGd0dlovN2tBYmIrU2dTTkFRVENvS3pGbVFGeVpWOXNCQUVBQUFJQVJmODNCRXNFb3dBVEFDTUFPUUN3QUVWWXNBMHZHN0VOR2o1WnNBQkZXTEFGTHh1eEJSQStXYkFORUxJWEFRb3JXQ0hZRy9SWnNBVVFzaDhCQ2l0WUlkZ2I5Rmt3TVNVWEJ5Y0dJeVlDUHdJU0FCY1dGaElIQndJREppWW5KZ1lIQmhjV0ZoY1dOamMyQXd5Mmd0dENOOGZnREFNR0h3RkE1SkRHV0JJR0tvQUpmbTZWengwVkNBbDhiWlhPSHhaQnBHYkZDd01CSGVnbk5RRUlBVVlHQkpIKy9aNHkvcWNDSFhxTEJBWFl0b1JmZW84RUJkQzloUUFBQWdBZEFBQUVBUVNOQUEwQUZnQk5BTEFBUlZpd0JDOGJzUVFhUGxtd0FFVllzQUl2RzdFQ0VENVpzZzRDQkJFU09iQU9MN0lCQVFvcldDSFlHL1Jac2dvQkJCRVNPYkFDRUxBTjBMQUVFTElXQVFvcldDSFlHL1JaTURFQklRTWpFd1VXRmdjR0JSTVZJd0VYTWpZM05pWW5Kd0l6L3UxT3Rjc0JrYjNMREJMKytjYkEvbGprZDZBTUMyaHU5QUhCL2o4RWpRRUZ1SjNvWWY0akRBSllBWFJnVzJnRkFRQUFBUUFSLytzRDdRU2RBQ2NBVkFDd0FFVllzQW92RzdFS0dqNVpzQUJGV0xBZUx4dXhIaEErV2JJREhnb1JFam13Q2hDeUVnRUtLMWdoMkJ2MFdiQU8wTEFERUxJWEFRb3JXQ0hZRy9SWnNCNFFzaVVCQ2l0WUlkZ2I5Rm13SXRBd01RRTJMd0lrTnpZMk56Y1dGZ2NuTmljbUp5SUdCd1lYRnhZV0J3WUVKeVltTnhjR0ZoY3lOZ0xaRXFSOVB2Ny9EUWpuc3ltejF3VzBCU2szZjNHU0RCRzZRcnVsQ0FyKzk4RzY3d1cxQjRCOGVKWUJNWHMySnhkbXpveXlDZ0VFeEowQlVUUkZBMTVTY1RrVU43SjdtTEVGQXNlbEFXVnhBbHdBQUFFQWJRQUFCRUlFalFBSEFDNEFzQUJGV0xBR0x4dXhCaG8rV2JBQVJWaXdBeThic1FNUVBsbXdCaEN5QlFFS0sxZ2gyQnYwV2JBQjBEQXhBU0VESXhNaE55RUVKdjUrc0xXdy9uNGNBN2tEOVB3TUEvU1pBQUFCQUVYLzZnUlhCSTBBRVFBdUFMQUFSVml3Q1M4YnNRa2FQbG13QUVWWXNBUXZHN0VFRUQ1WnNnMEJDaXRZSWRnYjlGbXdDUkN3RWRBd01RRURCZ1FuSmlZM0V6TURCaFlYRmpZM0V3UlhneG4rNnNpLzJST0RzNFFOZFhSNnFSV0VCSTM4OWJyZUJBVGNzd01NL1BOMWdRTUVnbnNERFFBQkFIb0FBQVNaQkk0QUNBQTRzZ1VKQ2hFU09RQ3dBRVZZc0Fndkc3RUlHajVac0FCRldMQURMeHV4QXhvK1diQUFSVml3QlM4YnNRVVFQbG15QVFnRkVSSTVNREVCRnpjQk13RWpBemNCMGdjc0FjdkovWHFwOExVQkpGdGhBMlA3Y3dTTkFRQUJBSlVBQUFZcEJJNEFFZ0JaQUxBQVJWaXdBeThic1FNYVBsbXdBRVZZc0JJdkc3RVNHajVac0FCRldMQUlMeHV4Q0JvK1diQUFSVml3RHk4YnNROFFQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnRVBFaEVTT2JJR0N3Z1JFam15RFJJTEVSSTVNREVCQnpjQk14TVhOd0V6QVNNRE5RY0JJd00zQVdzR0d3R0xvVkVCSHdGVHVmNFZxbG9FL2w2cVZhY0JKbEpDQTNmOGhqMWNBMXY3Y3dPVkNndjhiQVNOQVFBQi83WUFBQVJ0QkkwQUN3Qk1zZ0FNRFJFU09RQ3dBRVZZc0FFdkc3RUJHajVac0FCRldMQUtMeHV4Q2hvK1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBY3ZHN0VIRUQ1WnNnQUJCQkVTT2JJR0FRUVJFamt3TVFFQk13RUJJd01CSXdFQk13SW9BV0hrL2hRQklzblYvcFRqQWZqKzZNZ0Myd0d5L2JUOXZ3RzYva1lDVlFJNEFBQUJBSFFBQUFSbEJJMEFDQUE0c2dBSkNoRVNPUUN3QUVWWXNBRXZHN0VCR2o1WnNBQkZXTEFITHh1eEJ4bytXYkFBUlZpd0JDOGJzUVFRUGxteUFBRUVFUkk1TURFQkFUTUJBeU1UQVRNQi9BR1QxdjNVUmJWTC91ckFBa3NDUXYwQS9uTUJyUUxnQUFILzNBQUFCQTRFalFBSkFFdXlCUW9MRVJJNUFMQUFSVml3Qnk4YnNRY2FQbG13QUVWWXNBSXZHN0VDRUQ1WnNnRUJDaXRZSWRnYjlGbXlCQUlCRVJJNXNBY1FzZ1lCQ2l0WUlkZ2I5Rm15Q1FZSEVSSTVNREUzSVFjaE53RWhOeUVINEFLV0cveUJHQU1WL1lzYkExOFhsNWVGQTIrWmdnQUFBZ0FkLy9BQ2dRTWxBQTBBR1FCR3NoQWFHeEVTT2JBUUVMQUgwQUN3QUVWWXNBY3ZHN0VIRmo1WnNBQkZXTEFBTHh1eEFCQStXYkFIRUxJUUFnb3JXQ0hZRy9SWnNBQVFzaFlDQ2l0WUlkZ2I5Rmt3TVFVbUpqYzNOallYRmhZSEJ3WUdFeVluSmc4Q0ZoY1dOemNCSUlLQkRBMFRyWW1CZ1F3T0U2czBCR09GSFJRQkJHV0VIUk1NQkxTWmVxNjRCQVMxbVlHcXRBSXhmQU1EeExNM2Z3TUd5YllBQUFFQWF3QUFBZndERlFBR0FESUFzQUJGV0xBRkx4dXhCUlkrV2JBQVJWaXdBUzhic1FFUVBsbXlCQUVGRVJJNXNBUXZzZ01DQ2l0WUlkZ2I5Rmt3TVNFakV3YzNKVE1CZVpwbzNCZ0JaQlVDVlRpSGNRQUFBZi9wQUFBQ2N3TWtBQmNBUndDd0FFVllzQTh2RzdFUEZqNVpzQUJGV0xBQkx4dXhBUkErV2JJV0Fnb3JXQ0hZRy9SWnNBTFFzZ01QRmhFU09iQVBFTElJQWdvcldDSFlHL1Jac2hVV0R4RVNPVEF4SVNFM0FUWTNOaVluSmdZSEJ6WTJGeFlXQndZUEFpRUNMLzI2RkFGall3d0hOVEJDVUE2YUM2NkFlSXNGQ0pkQXhBRjdkQUVxVkVvd05nRUJTejRCZFpVQ0FuNW1lMzB6a1FBQi8vdi84d0o0QXlJQUpBQnNBTEFBUlZpd0RTOGJzUTBXUGxtd0FFVllzQmN2RzdFWEVENVpzZ0FYRFJFU09YeXdBQzhZdG9BQWtBQ2dBQU5kdHFBQXNBREFBQU54c0EwUXNnY0NDaXRZSWRnYjlGbXdBQkN5SkFJS0sxZ2gyQnYwV2JJU0pBQVJFam13RnhDeUhnSUtLMWdoMkJ2MFdUQXhFeGMyTmpjMkppTWlCeU0yTmpNV0ZnY0dCeFlIQmdZbkppWTFNeFFXTXpJMk56WW5KK1JPUWwwSEJqNHljQjJjQzU5OWZvNEZCNWgyQkFXMWhYZVZsMEk2UUZzSERZMVhBY3NCQWowMk1URmRaWGtEZG1GM1FpdUJiNEVDQW54c01qZEFOV1lGQVFBQUF2L3dBQUFDY3dNVkFBb0FEZ0JGQUxBQVJWaXdDUzhic1FrV1BsbXdBRVZZc0FVdkc3RUZFRDVac2d3RkNSRVNPYkFNTDdBQTBMSURBZ29yV0NIWUcvUlpzQWJRc0F3UXNBalFzZzBKQlJFU09UQXhBVE1ISXdjak55RTNBVE1CTXhNSEFndG9GMmNlbWg3K2xRMEJ2NlQrUWRBNkZnRXJncW1wY0FIOC9oWUJJeDRBQVFBVy8vTUNqd01WQUJzQVlBQ3dBRVZZc0FFdkc3RUJGajVac0FCRldMQU5MeHV4RFJBK1diQUJFTElFQWdvcldDSFlHL1Jac2djTkFSRVNPYkFITDdBRjBMQU5FTEFSMExBTkVMSVRBZ29yV0NIWUcvUlpzQWNRc2hrQ0NpdFlJZGdiOUZtd0J4Q3dHOUF3TVJNVElRY2hCell6TWhZSEJnWW5KaVluRnhZM01qWTNOaVluSWdkR2RnSFRHUDZ3TzBCQ2JZRUVCcTZEZFpFRmxBbHZRVllJQmtFOFF6OEJoZ0dQaEtzY2hYTjhtd0lDZ0dNQlpRSlNSRHhHQVNvQUFnQWUvL0lDYUFNZ0FCSUFIUUJWQUxBQVJWaXdBQzhic1FBV1BsbXdBRVZZc0F3dkc3RU1FRDVac0FBUXNnRUNDaXRZSWRnYjlGbXlCZ3dBRVJJNXNBWXZzZ1FHREJFU09iSVRBZ29yV0NIWUcvUlpzQXdRc2hnQ0NpdFlJZGdiOUZrd01RRUhJeVlITmhjeUZnY0dCaVltTnpjMkpETURKZ2NIQmhZeU5qYzJKZ0k4RFF2K1ZsSm1hbllHQnJEOGtnc0ZGZ0VKMU1kZFBRUUhPbjVYQmdjOEF4K0RBK0ZPQXBOc2VwOEVySXc0ek83K2JnSlJJa2RnVnowNVNnQUFBUUF2QUFBQ3N3TVZBQVlBTWdDd0FFVllzQVV2RzdFRkZqNVpzQUJGV0xBQ0x4dXhBaEErV2JBRkVMSUVBZ29yV0NIWUcvUlpzZ0FFQlJFU09UQXhBUUVqQVNFM0lRS2gvanV0QWNYK1RoY0NXZ0t4L1U4Q2s0SUFBd0FMLy9RQ2VBTWpBQlFBSUFBc0FINEFzQUJGV0xBU0x4dXhFaFkrV2JBQVJWaXdDQzhic1FnUVBsbXlLZ2dTRVJJNWZMQXFMeGkwVUNwZ0tnSnh0cUFxc0NyQUtnTnh0b0Fxa0NxZ0tnTmR0Q0FxTUNvQ2NySVlBZ29yV0NIWUcvUlpzZ0lxR0JFU09iSU5HQ29SRWptd0NCQ3lIZ0lLSzFnaDJCdjBXYkFTRUxJa0Fnb3JXQ0hZRy9SWk1ERUJCZ2NXQndZR0J5TW1KamMyTnlZM05qWVhGaFlETmlZaklnWUhCaFl6TWpZVE5pWWpJZ1lIQmhZek1qWUNjd2VJYkFRRG8zMFFmcEFGQjV4YkJBU2plSFNKeEFWQ05qNVZCd1pDTmo1V0x3VTJNRFpKQmdZNExqSk9Ba3R4U1R0MmFZQURBM2RpZ2trM2FXdDlBZ0ozL2tJeE4wQTBNamRCQVlvcU5Ud3ZLelU5QUFJQU52LzNBbmNESWdBVEFDRUFVUUN3QUVWWXNBZ3ZHN0VJRmo1WnNBQkZXTEFQTHh1eER4QStXYklDRHdnUkVqbXdBaSt3RHhDeUVRSUtLMWdoMkJ2MFdiQUNFTElVQWdvcldDSFlHL1Jac0FnUXNod0NDaXRZSWRnYjlGa3dNUUVHSXlJbU56WTJGeFlXQndjR0JDTW5OekkySnhZM056WW5KaVlqSWdZSEJoWUJ3azFhYTNvR0JxK0NmNFVMQkJiKy85UVVEWWViV0ZFOUNBTURCVGN0UFZVSEJqc0JRRUNPY1h1b0FnS3hrRFBTNFFGL1hxSUVTejRkSFM4NFhFSThUQUFCQUpNQ2l3TVlBeUlBQXdBUkFMQUNMN0lCQVFvcldDSFlHL1JaTURFQklUY2hBdjM5bGhzQ2FnS0xsd0FBQXdFTEJEOERHd1p4QUFNQUR3QVpBRDRBc0FCRldMQU5MeHV4RFJnK1diQUgwTEFITDdBQzBMQUNMN0FBMExBQUw3QU5FTElTQndvcldDSFlHL1Jac0FjUXNoZ0hDaXRZSWRnYjlGa3dNUUV6QnlNSE5EWXpNaFlWRkFZaklpWTNGak15TmpjMkppTWlBbFBJOW4rYlpVZERXV0ZHUlZ4U0JUNGhPZ2NFSWlKRUJuRzIza1pvWFVSRlpsdEVVRE1uSHpRQUFBUC9tdjVIQkVrRVVnQXFBRGdBUmdDUEFMQUFSVml3Snk4YnNTY1lQbG13QUVWWXNCWXZHN0VXRWo1WnNDY1FzQ3JRc0NvdnNnQURDaXRZSWRnYjlGbXlDQlluRVJJNXNBZ3ZzZzhJRmhFU09iQVBMN1NRRDZBUEFsMnlPQUVLSzFnaDJCdjBXYkljT0E4UkVqbXlJQWduRVJJNXNCWVFzakVCQ2l0WUlkZ2I5Rm13Q0JDeVBBRUtLMWdoMkJ2MFdiQW5FTEpEQVFvcldDSFlHL1JaTURFQkJ4WUhCd1lIQmljaUp3WUhCaGNYRmhZSEJnWUVKeVltTnpZMk55WTNOamNtTnpjMk56WWZBZ1VCSndZSEJoWXpNalkyTnpZbUp3TUdGaGNXTmpjM05pWW5KZ1lIQkMrUUlRa0ZISjU4bDBsTlFnZ0pZTEM2dFFnR2svN3Foc0xpQndWeFh5WUdDb3VDQ3dFUm5vQ2pKbXNCY2Z6MVQ0SVJDWUZ5WEs5bENRcFRidDhHZFZsam5BOENCM0JkWXB3UUE2Y0JYR0Vrcm1OTkFoYzRPVVlFQWdhVWcyT2NZQU1Gam5sWml6QXZQM3hlYkxBTXZtZFRBZ0lUQWZ2eUJ6OTVTVkl6V2prL1JBTUNuVlp2QWdKNFd4WldkUUlDZFY0QUFBSUFTLy9rQkljRVVnQVRBQ1VBYnJJaUppY1JFam13SWhDd0M5QUFzQUJGV0xBTEx4dXhDeGcrV2JBQVJWaXdEeThic1E4WVBsbXdBRVZZc0FJdkc3RUNFRDVac0FCRldMQVRMeHV4RXhBK1diSUFBZ3NSRWpteURnc0NFUkk1c0FJUXNoa0JDaXRZSWRnYjlGbXdDeEN5SWdFS0sxZ2gyQnYwV1RBeEpRSW5KaVluSmpjMkVqWVhGaFlYTnpNREV5TUJCaGNXRmhjV056WTNOelluSmljbUJnY0RNcGY4bWJFSEF3Z1VqYzkrZktvZ1VMREtFS2o5NGdjREJXeGdvRzh4RndVR0hUT0RqTFFhOHY3eUJ3VFV0VGxXcHdFYmlRTUVpblh1L2RiOThBSHRQRDl2Z0FNRDBGMWlJMjVrcndZRjdjd0FBQUlBUXdBQUJPVUZyd0FjQUNVQVliSWVKaWNSRWptd0hoQ3dITkFBc0FCRldMQURMeHV4QXh3K1diQUFSVml3QVM4YnNRRVFQbG13QUVWWXNCTXZHN0VURUQ1WnNoMEJBeEVTT2JBZEw3SUFBUW9yV0NIWUcvUlpzZ2tBSFJFU09iQURFTElsQVFvcldDSFlHL1JaTURFQkF5TVRCVElXQndZRkZoY1dCd2NHRnhZWEJ5TW1KeVkzTnpZbUp5VUZNalkzTmlZbkpRRnRiYjM5QWQzZTZoRVYvdldRRUFRR0ZnY0RCQ0VEdVNBRkF3a1VEV2xvL3JZQkphSzVFQTE2Zi82MUFuVDlqQVd2QWRlLzVIQkFxek0xbFRjb09pb1pMVVl1UllwMGlRYWVBWWlDZEg0RUFRQUJBRVFBQUFWcUJiQUFEQUJrc2dvTkRoRVNPUUN3QUVWWXNBUXZHN0VFSEQ1WnNBQkZXTEFJTHh1eENCdytXYkFBUlZpd0FpOGJzUUlRUGxtd0FFVllzQXN2RzdFTEVENVpzZ1lDQkJFU09iQUdMN0xQQmdGZHNpOEdBVjJ5QVFFS0sxZ2gyQnYwV2JJS0FRWVJFamt3TVFFakF5TVRNd016QVRNQkFTTUNJN0p4dlAyN2I0a0NYZmY5WVFHODFnS08vWElGc1AxK0FvTDlOZjBiQUFFQUpRQUFCQjRHQUFBTUFGQ3lCUTBPRVJJNUFMQUVMN0FBUlZpd0NDOGJzUWdZUGxtd0FFVllzQUl2RzdFQ0VENVpzQUJGV0xBTEx4dXhDeEErV2JJR0FnZ1JFam13QmkreUFRRUtLMWdoMkJ2MFdiSUtBUVlSRWprd01RRWpBeU1CTXdNekFUTUJBU01CdElKWHRnRUx0Wmx5QVh6ay9qSUJOOGdCOWY0TEJnRDhqZ0dzL2dyOXZBQUFBUUJFQUFBRlNnV3dBQXNBVExJSkRBMFJFamtBc0FCRldMQURMeHV4QXh3K1diQUFSVml3Qnk4YnNRY2NQbG13QUVWWXNBRXZHN0VCRUQ1WnNBQkZXTEFLTHh1eENoQStXYklBQXdFUkVqbXlCUU1CRVJJNU1ERUJBeU1UTXdNekFUTUJBU01CZVhtOC9idDJDUUxCK3Z6NkFpSFhBcno5UkFXdy9YZ0NpUDB5L1I0QUFRQWxBQUFFQmdZWUFBd0FVN0lGRFE0UkVqa0FzQUJGV0xBRUx4dXhCQjQrV2JBQVJWaXdDQzhic1FnWVBsbXdBRVZZc0FJdkc3RUNFRDVac0FCRldMQUxMeHV4Q3hBK1diSUFCQUlSRWpteUJnUUNFUkk1c2dvSEFCRVNPVEF4QVNNREl3RXpBeGNCTXdFQkl3RThCbHUyQVErMnB3SUJ5UG45MlFHRnpBSHovZzBHR1B4ekFRR3cvZ1Q5d2dBQUFRQVMveE1EN3dWekFDd0FiYklnTFM0UkVqa0FzQUJGV0xBSkx4dXhDUm8rV2JBQVJWaXdJeThic1NNUVBsbXlCQ01KRVJJNXNBa1FzQXpRc0FrUXNCRFFzQXdRc2hRQkNpdFlJZGdiOUZtd0JCQ3lHUUVLSzFnaDJCdjBXYkFqRUxBZzBMQWpFTEFuMExBZ0VMSXFBUW9yV0NIWUcvUlpNREVCTmk4Q0pEYzJOamMzTXdjV0ZnY25OaWNtSnlJR0J3WVdGaGNXQndZR0J3Y2pOeVltTnhjR0ZoY3lOZ0xhRXFSOVB2Ny9EUW5lcnl5Uks1R2RCclFGS1RkL2NaSU1CMXJ2U01VTUNOTzNMSkl0b3JnR3RBVitmSGlXQVRGN05pY1haczZKckJIWjNSeS9nd0ZSTkVVRFhsSThWVVltYUwyRXFoTGg0eGpCandGbWNBSmNBQUVBQmdBQUE5Z0VvZ0FlQUdxeUdoOGdFUkk1QUxBQVJWaXdFeThic1JNYVBsbXdBRVZZc0FZdkc3RUdFRDVac2g0R0V4RVNPYkFlTDdJQUJBb3JXQ0hZRy9SWnNBWVFzZ1VCQ2l0WUlkZ2I5Rm13Q05Dd0FCQ3dETkN3SGhDd0Q5Q3dFeEN3RjlDd0V4Q3lHUUVLSzFnaDJCdjBXVEF4QVNVR0J3Y2xCeUUzRnpZM053YzNNemMyTmhjV0ZnY25OaWNtQmdjSElRTDAvb0lqTWlFQ2hCdjhuUllKWmlNVXBoYWNDeGZxcmFlcUNyWVFyV0I5RUEwQmlRSDBBYzVjTlFLWWxnRXB4WElCZVdyYjhBVUUwcTRCNGdjRG1ZNXlBQUVBTkFBQUJHNEVqUUFYQUpTeUFCZ1pFUkk1QUxBQVJWaXdBUzhic1FFYVBsbXdBRVZZc0Jjdkc3RVhHajVac0FCRldMQU5MeHV4RFJBK1diSUFEUmNSRWpteUVCY05FUkk1c0JBdnNnOFFBVjJ3Rk5Dd0ZDKzBEeFFmRkFKeFFBOFBGQjhVTHhRL0ZFOFVYeFJ2RkFkZHNBVFFzQVF2c0JRUXNoTUVDaXRZSWRnYjlGbXdCZEN3RUJDd0NkQ3dFQkN5RHdRS0sxZ2gyQnYwV2JBSzBEQXhBUUV6QVRNSEpRY0hKUWNoQnlNM0lUY2hOeUUzTXdNekFnVUJrOWIrT084Vy90RUxFUUUvRnY3SEo3VW4vc1VWQVRvTy9zVVYvdXkvQWt3Q1FmMk1lUUlNUXdKNDNkMTRTM2tDZEFBQkFCMEFBQVBOQkkwQUJRQXlzZ0VHQnhFU09RQ3dBRVZZc0FRdkc3RUVHajVac0FCRldMQUNMeHV4QWhBK1diQUVFTElCQVFvcldDSFlHL1JaTURFQklRTWpFeUVEc3YzUXNMWExBdVVEOVB3TUJJMEFBQUwvc0FBQUE4NEVqUUFEQUFnQVBMSUNDUW9SRWptd0FoQ3dCdEFBc0FCRldMQUNMeHV4QWhvK1diQUFSVml3QUM4YnNRQVFQbG15QlFJQUVSSTVzZ2dCQ2l0WUlkZ2I5Rmt3TVNFaEFUTURKd2NCSVFQTysrSUNocVp5Q2liK2ZRSTBCSTMrejJ4WC9TY0FBQU1BU3YvcUJGZ0VwQUFEQUJJQUlnQm5zaGNqSkJFU09iQVhFTEFDMExBWEVMQUUwQUN3QUVWWXNBc3ZHN0VMR2o1WnNBQkZXTEFFTHh1eEJCQStXYkFDMExBQ0w3TGZBZ0Zkc2g4Q0FWMnlBUUVLSzFnaDJCdjBXYkFMRUxJV0FRb3JXQ0hZRy9SWnNBUVFzaDRCQ2l0WUlkZ2I5Rmt3TVFFaE55RUJKZ0kzTnhJQUZ4WVdFZ2NIQWdBVEppWW5KZ1lIQmhjV0ZoY1dOamMyQXp2K0xCc0IxUDZxMXVBYkJTQUJRT1NQeEZjUUJpSCt4TE1KZkc2VzBCMFZDQWgvYlpUT0h4VUIrWm45WGdVQk8vUXNBUXdCU0FZRWp2OEFuelQrNy83Q0F4UjRpQVFGMmJTRVlIbVFCQVhSdklRQUFBSC9zQUFBQTg0RWpRQUlBRGl5QWdrS0VSSTVBTEFBUlZpd0FpOGJzUUlhUGxtd0FFVllzQUF2RzdFQUVENVpzQUJGV0xBRUx4dXhCQkErV2JJSEFnQVJFamt3TVRNakFUTVRJd01uQjJTMEFvYW04c2VkQ2lvRWpmdHpBMXhzWUFBQUEvL1RBQUFEbFFTTkFBTUFCd0FMQUdTeUFBd05FUkk1c0FUUXNBQVFzQXJRQUxBQVJWaXdDaThic1FvYVBsbXdBRVZZc0FBdkc3RUFFRDVac2dNQkNpdFlJZGdiOUZtd0FCQ3dCOUN3QnkreUh3Y0JYYkxmQndGZHNnUUJDaXRZSWRnYjlGbXdDaEN5Q1FFS0sxZ2gyQnYwV1RBeElTRTNJUkVoTnlFVElUY2hBc3I5Q1JzQzkvMktHd0oyZXYwSkd3TDNtQUY3bUFGSm1RQUFBUUFkQUFBRWhnU05BQWNBUDdJQkNBa1JFamtBc0FCRldMQUdMeHV4QmhvK1diQUFSVml3QUM4YnNRQVFQbG13QUVWWXNBUXZHN0VFRUQ1WnNBWVFzZ01CQ2l0WUlkZ2I5Rmt3TVNFakV5RURJeE1oQTd5MnNQM01zTFhMQTU0RDlQd01CSTBBQWYvVkFBQUQzZ1NOQUF3QVE3SUdEUTRSRWprQXNBQkZXTEFJTHh1eENCbytXYkFBUlZpd0F5OGJzUU1RUGxteUFnRUtLMWdoMkJ2MFdiQUYwTEFJRUxJTEFRb3JXQ0hZRy9SWnNBZlFNREVCQVNFSElUY0JBemNoQnlFVEFsbitmZ0tJRy95UkdnR1UvQmdEUHh6OW0vNENPdjVmbVprQnVBRzFoNW4rWUFBREFGRUFBQVR6QkkwQUVnQVlBQjRBYjdJSEh5QVJFam13QnhDd0Z0Q3dCeEN3SE5BQXNBQkZXTEFSTHh1eEVSbytXYkFBUlZpd0NDOGJzUWdRUGxteUVCRUlFUkk1c0JBdnNBRFFzZ2tJRVJFU09iQUpMN0FHMExBSkVMSVZBUW9yV0NIWUcvUlpzQUFRc2hzQkNpdFlJZGdiOUZtd0Z0Q3dGUkN3SE5Bd01RRVdGZ2NHQUFjSEl6Y21KamMrQWpjM013RUNCUk1HQmdVU0pRTTJOZ05KeWVFUEV2N0w2eGkxR012aEVReVQrSndadGYyeUh3RVlkS0s2QXdvZi91cDFvTHNFRkJQMXdORCsvdzF1Y0JIOXZJclJlUWwyL2EzKzdoOENkUTJuZlFFUEgvMk1EYWdBQVFCK0FBQUU5UVNOQUJvQVhMSVpHeHdSRWprQXNBQkZXTEFETHh1eEF4bytXYkFBUlZpd0VTOGJzUkVhUGxtd0FFVllzQmt2RzdFWkdqNVpzQUJGV0xBSkx4dXhDUkErV2JJWUF3a1JFam13R0Mrd0FOQ3dHQkN5Q3dFS0sxZ2gyQnYwV2JBSTBEQXhBU1FURXpNREJnQUhBeU1USmlZbkpqY1RNd01HRnhZV0Z4TXpBcklCSHpzMHRUVWsvdWJnT0xZNGw3WVVEUTAwdGpRSkFnSmtYWUsyQWJrNkFXSUJPUDdJOS83YkdQN2ZBU0VXd0pwZlpRRTQvc2RBUVhLUkZ3TFVBQUVBREFBQUJHb0VvUUFpQUZteUFDTWtFUkk1QUxBQVJWaXdHQzhic1JnYVBsbXdBRVZZc0E4dkc3RVBFRDVac0FCRldMQWhMeHV4SVJBK1diSWdBUW9yV0NIWUcvUlpzQURRc0JnUXNnWUJDaXRZSWRnYjlGbXdBQkN3RHRDd0lCQ3dFZEF3TVNVa0V6YzJKaWNtQmdjR0J4Y1dGd2NoTnpjbUp5WVNKQmNXRWc4Q0FnYzNCeUVDVlFFZk5BVVRoSXlaMHhZTUFRRU9xaGorU2h5cFlBRUVsQUVTcDhqcEJ3TUdLZFN5Ry81Sm5FTUJqU1NweGdNRXphMTBPU25pTjUyWEFvN0YxQUUycXdRRS92alRMeXorenAwRGx3QUJBR3ovNndUb0JJMEFHQUJvc2djWkdoRVNPUUN3QUVWWXNBSXZHN0VDR2o1WnNBQkZXTEFPTHh1eERoQStXYkFBUlZpd0Z5OGJzUmNRUGxtd0FoQ3lBUUVLSzFnaDJCdjBXYkFGMExJSUFoY1JFam13Q0Mrd0RoQ3lEd0VLSzFnaDJCdjBXYkFJRUxJVUFRb3JXQ0hZRy9SWk1ERUJJVGNoQnlFRE5oY1dGZ2NHQmdjM0pEYzJKaWNtQndNakFjWCtweHNEYnh2K256cVZsYm5GREE3LzZBOEJGeGtOWFhKK3RtYTBBL1NabWY3V05BUUV6cmk4eHdLWEJlbHVnZ0lETXYzTkFBQUJBRWYvN0FRM0JLTUFId0Jxc2hNZ0lSRVNPUUN3QUVWWXNBc3ZHN0VMR2o1WnNBQkZXTEFETHh1eEF4QStXYkFMRUxBUDBMQUxFTElTQVFvcldDSFlHL1Jac0FNUXNCYlFzQll2c3Q4V0FWMnlIeFlCWGJJWEFRb3JXQ0hZRy9SWnNBTVFzaDBCQ2l0WUlkZ2I5Rm13QXhDd0g5QXdNUUVHQkNjdUFqYzNFZ0FYRmhZWEl5WW1KeVlHQnlFSElRWVhGaFlYRmpjRDVpUCs3Y2lLd1ZZUkRDVUJPZUM0MVFpekJXMTRrTUl1QWJrYi9sSUlCZ2g1Wi90TUFYcTcwd1FFalB1WVdBRUlBVEFHQk5XMmNvSUVBN205bUVKQmJvQUVDUG9BQXYvRUFBQUdxQVNOQUJjQUlBQjJzZ2doSWhFU09iQUlFTEFaMEFDd0FFVllzQlV2RzdFVkdqNVpzQUJGV0xBR0x4dXhCaEErV2JBQVJWaXdEUzhic1EwUVBsbXdGUkN5Q1FFS0sxZ2gyQnYwV2JBTkVMSVFBUW9yV0NIWUcvUlpzaGNHRlJFU09iQVhMN0lZQVFvcldDSFlHL1Jac0FZUXNob0JDaXRZSWRnYjlGa3dNUUVXRmdjR0JDTWhFeUVEQmdZSEl6Y3pNalkzTnhNaEF3Y0RCVEkyTnpZbUp3VXRyczBMRGY3K3l2NDJyLzV0Y3piS25FTVdJbU9CSVJKdEF2bE5Ha2tCQW5LZURRdGtaZ0xXQkwrZHFzd0Q5UDNLNmRRQnBLUythd0ljL2txWS9sa0JmR1pYYVFVQUFBSUFIUUFBQnJVRWpRQVNBQnNBaExJQkhCMFJFam13QVJDd0ZOQUFzQUJGV0xBQ0x4dXhBaG8rV2JBQVJWaXdFUzhic1JFYVBsbXdBRVZZc0Fzdkc3RUxFRDVac0FCRldMQVBMeHV4RHhBK1diSUFEeEVSRWpsOHNBQXZHTElFQ3dJUkVqbXdCQyt3QUJDeURnRUtLMWdoMkJ2MFdiQUVFTElUQVFvcldDSFlHL1Jac0FzUXNoVUJDaXRZSWRnYjlGa3dNUUVoRXpNREJSWVdCd1lFSXlFVElRTWpFek1CQXdVeU5qYzJKaWNCUXdJMVdyUk1BUUN1elFzTC92N0wvalZYL2N0WHRjdTBBb1JLQVFKeW53MExZbWdDaWdJRC9rb0JCTCtkcU00Qjh2NE9CSTM5c3Y1WkFYcG9WbW9GQUFFQWJRQUFCTzBFalFBV0FGZXlCeGNZRVJJNUFMQUFSVml3QWk4YnNRSWFQbG13QUVWWXNBd3ZHN0VNRUQ1WnNBQkZXTEFWTHh1eEZSQStXYkFDRUxJQkFRb3JXQ0hZRy9SWnNBWFFzZ2dNQWhFU09iQUlMN0lTQVFvcldDSFlHL1JaTURFQklUY2hCeUVETmhjV0ZnY0RJeE0ySnlZbkpnY0RJd0hHL3FjY0EyOGIvcDg2a1pxOHhCUTZ0VGtIQmhhb2diTm10UVAwbVpuKzFqSURBdGk3L3B3QlpUZ3VrUVlETXYzTkFBRUFIZjZiQklVRWpRQUxBRUt5QVF3TkVSSTVBTEFDTDdBQVJWaXdCaThic1FZYVBsbXdBRVZZc0Fvdkc3RUtHajVac0FCRldMQUFMeHV4QUJBK1diQUUwTElJQVFvcldDSFlHL1JaTURFaElRTWpFeUVUTXdNaEV6TUR1LzZOUHJVKy9vckx0TEFDTmJDMC9wc0JaUVNOL0FzRDlRQUNBQi8vK3dQYkJJMEFEQUFWQUZ1eUV4WVhFUkk1c0JNUXNBUFFBTEFBUlZpd0N5OGJzUXNhUGxtd0FFVllzQW92RzdFS0VENVpzQXNRc2dFQkNpdFlJZGdiOUZteUFnb0xFUkk1c0FJdnNoUUJDaXRZSWRnYjlGbXdDaEN5RlFFS0sxZ2gyQnYwV1RBeEFTRURCUllXQndZRUp5VVRJUUUyTmpjMkppY2xBd1BCL2NBeUFSbXR2aFFXL3V2Qi9rektBdkwrS1hHVUJBSnlaLzcvU2dQMy91QUJCTDZlcmM0RUFRU04vQW9DZUdkYlpnVUIvbGtBQXYrSi9xd0VtZ1NOQUE0QUZRQlZzaElXRnhFU09iQVNFTEFFMEFDd0RDK3dBRVZZc0FRdkc3RUVHajVac0FCRldMQUtMeHV4Q2hBK1diSUdBUW9yV0NIWUcvUlpzQXdRc0FuUXNBWVFzQTdRc0JEUXNBUVFzaEVCQ2l0WUlkZ2I5Rmt3TVRjMk5qY1RJUU16QXlNVElRTWpFd1VsRXlFREJ3SXRiSVluWWdMeXNJdFd0VHo4MUR1MlZ3RWpBaktWL25OTUVFV1dZdmkzQWViOEMvNFVBVlQrclFIckF3TURYUDZRUS83dEFBQUIvNjhBQUFZRUJJMEFGUUNTc2cwV0Z4RVNPUUN3QUVWWXNBa3ZHN0VKR2o1WnNBQkZXTEFOTHh1eERSbytXYkFBUlZpd0VTOGJzUkVhUGxtd0FFVllzQUl2RzdFQ0VENVpzQUJGV0xBR0x4dXhCaEErV2JBQVJWaXdGQzhic1JRUVBsbXlEQUlORVJJNWZMQU1MeGl5b0F3QlhiUmdESEFNQWwyeUJBRUtLMWdoMkJ2MFdiQUIwTElJQkF3UkVqbXdEQkN3RDlDeUV3d0VFUkk1TURFQkp3TWpFeU1CSXdFRE14TXpFek1ETXdFekFRRWpBNkJvVjdaWVd2NTM4UUhxOE03TFcxaTJXVThCZk9mK1BBRVExQUgxQWY0S0FmYitDZ0piQWpMK0F3SDkvZ01CL2YzRC9iQUFBQUVBRWYvdUE5NEVvQUFvQUlLeUdpa3FFUkk1QUxBQVJWaXdEeThic1E4YVBsbXdBRVZZc0Jzdkc3RWJFRDVac0E4UXNnY0JDaXRZSWRnYjlGbXlEQThiRVJJNXNpZ1BHeEVTT2JBb0w3Sy9LQUZkc2k4b0FWMjAzeWp2S0FKZHRLOG92eWdDY2JJbkFRb3JXQ0hZRy9SWnNoUW5LQkVTT2JJZkd3OFJFam13R3hDeUlRRUtLMWdoMkJ2MFdUQXhBVEkyTnpZbkppY21Cd1lIQnpZMkZ4WVdCd1lIRmhZSERnSW5KaVkzTXhRWEZqWTNOaVVuTndJQmY1SUtCeGt6bG10RlF4RzJFUHUzdnRjS0N2SlZZQVVIZmVLSnRkTUZzdG1CcVFzWS92dUVHd0tmWVZjMkpVMEVBaTBzVVFHV3NBSURwbzI0WWlHR1hXdWRWQUlDdFpxeEJRTm1XN3dDQVpnQUFRQWZBQUFFb1FTTkFBa0FUTElEQ2dzUkVqa0FzQUJGV0xBQUx4dXhBQm8rV2JBQVJWaXdCeThic1FjYVBsbXdBRVZZc0FJdkc3RUNFRDVac0FCRldMQUZMeHV4QlJBK1diSUVBQUlSRWpteUNRQUNFUkk1TURFQk13TWpFd0VqRXpNREEvV3N5cktjL1FtcnlyS2NCSTM3Y3dOLy9JRUVqZnlCQUFFQUhnQUFCRmNFalFBTUFHaXlDZzBPRVJJNUFMQUFSVml3QkM4YnNRUWFQbG13QUVWWXNBZ3ZHN0VJR2o1WnNBQkZXTEFDTHh1eEFoQStXYkFBUlZpd0N5OGJzUXNRUGxteUJnUUNFUkk1ZkxBR0x4aXlvQVlCWGJSZ0JuQUdBbDJ5QVFFS0sxZ2gyQnYwV2JJS0FRWVJFamt3TVFFakF5TVRNd016QVRNQkFTTUJsMjFYdGN1MFdGZ0IwdWo5MXdGdzJnSDIvZ29FamY0REFmMzl2UDIzQUFIL3hBQUFCSGtFalFBUUFFMnlCQkVTRVJJNUFMQUFSVml3QUM4YnNRQWFQbG13QUVWWXNBRXZHN0VCRUQ1WnNBQkZXTEFJTHh1eENCQStXYkFBRUxJREFRb3JXQ0hZRy9SWnNBZ1FzZ29CQ2l0WUlkZ2I5Rmt3TVFFREl4TWhBd1lHQnlNM056WTJOemNUQkhuTHRLLytiWFUyeDVWTEZpbGdmQ0FTYndTTiszTUQ5UDNQNk5jRXBBSUhucmh1QWh3QUFRQlkvK2dFVkFTTkFCRUFRN0lCRWhNUkVqa0FzQUJGV0xBQ0x4dXhBaG8rV2JBQVJWaXdFQzhic1JBYVBsbXdBRVZZc0Fndkc3RUlFRDVac2dFQ0NCRVNPYklOQVFvcldDSFlHL1JaTURFQkZ3RXpBUTRDSXlJbk54WTNNamNETXdIZUZBR0oyZjNhUG1OOFVEVTBFem9kWGxMcnlBSW5iUUxUL0dSd1pUUUpsUWdCYndPZkFBRUFIZjZzQklZRWpRQUxBRUt5Q1F3TkVSSTVBTEFDTDdBQVJWaXdCaThic1FZYVBsbXdBRVZZc0Fvdkc3RUtHajVac0FCRldMQUVMeHV4QkJBK1diSUFBUW9yV0NIWUcvUlpzQW5RTURFbE13TWpFeUVUTXdNaEV6TUQxNmhub2p2OGJNdTBzQUkxc0xXWS9oUUJWQVNOL0FzRDlRQUJBRm9BQUFRdUJJMEFFZ0JJc2c4VEZCRVNPUUN3QUVWWXNBZ3ZHN0VJR2o1WnNBQkZXTEFSTHh1eEVSbytXYkFBUlZpd0FDOGJzUUFRUGxteURnQUlFUkk1ZkxBT0x4aXlCQUVLSzFnaDJCdjBXVEF4SVNNVEJpY21KamNUTXdNR0Z4WVhGamNUTXdOa3RWV1BuYnJFRkRtMU9nY0hGcXFDc0dhMEFjTXhBZ0xXdmdGai9wdzRMcE1EQXpFQ01nQUJBQjBBQUFYOUJJMEFDd0JNc2dZTURSRVNPUUN3QUVWWXNBSXZHN0VDR2o1WnNBQkZXTEFHTHh1eEJobytXYkFBUlZpd0NpOGJzUW9hUGxtd0FFVllzQUF2RzdFQUVENVpzZ2tCQ2l0WUlkZ2I5Rm13QmRBd01TRWhFek1ESVJNekF5RVRNd1V5K3V2THRMQUJlN0Myc0FGN3NMVUVqZndMQS9YOEN3UDFBQUVBSGY2c0JmNEVqUUFQQUZLeURCQVJFUkk1QUxBQ0w3QUFSVml3Qmk4YnNRWWFQbG13QUVWWXNBb3ZHN0VLR2o1WnNBQkZXTEFPTHh1eERobytXYkFBUlZpd0JDOGJzUVFRUGxteUFBRUtLMWdoMkJ2MFdiQU4wTEFKMERBeEpUTURJeE1oRXpNRElSTXpBeUVUTXdWT3FXZWpQUHIweTdTd0FYdXd0ckFCZTdDMm1QNFVBVlFFamZ3TEEvWDhDd1AxQUFBQ0FGRC8rd1NiQkkwQURBQVZBRnV5QmhZWEVSSTVzQVlRc0EzUUFMQUFSVml3Q2k4YnNRb2FQbG13QUVWWXNBY3ZHN0VIRUQ1WnNBb1FzZ2tCQ2l0WUlkZ2I5Rm15REFjS0VSSTVzQXd2c2hRQkNpdFlJZGdiOUZtd0J4Q3lGUUVLSzFnaDJCdjBXVEF4QVJZV0J3WUVKeVVUSVRjaEF4TTJOamMySmljbEF3TXdyYjRVRnY3c3dmNUtzUDY2R3dINVRMVnprUVFDY1dqL0FFb0MxZ1MrbnF2UUJBRUQ5Sm4rU3YzQUFubG1XbWNGQWY1Wi8vOEFILy83QmFFRWpRQW1BZ2dBQUFBSEFjSUQ5d0FBQUFJQUgvLzdBOU1FalFBS0FCTUFUYklMRkJVUkVqbXdDeEN3QnRBQXNBQkZXTEFJTHh1eENCbytXYkFBUlZpd0J5OGJzUWNRUGxteUNnY0lFUkk1c0FvdnNoSUJDaXRZSWRnYjlGbXdCeEN5RXdFS0sxZ2gyQnYwV1RBeEFSWVdCd1lFSnlVVE13TVROalkzTmlZbkpRTUNhSzIrRkJiKzdNTCtUTXF5VExWeGxBUUVjbW4rLzBvQzFnUytucXZRQkFFRWpmNUsvY0FDZUdkV2F3VUIvbGtBQUFFQUlQL3FCQm9Fb1FBZkFIT3lCQ0FoRVJJNUFMQUFSVml3RlM4YnNSVWFQbG13QUVWWXNCd3ZHN0VjRUQ1WnNBRFFzQndRc2dNQkNpdFlJZGdiOUZteUNCd1ZFUkk1ZkxBSUx4aTBZQWh3Q0FKZHNxQUlBVjIwWUFod0NBSnhzZ2NCQ2l0WUlkZ2I5Rm13RlJDeURnRUtLMWdoMkJ2MFdiQVZFTEFTMERBeEV4WVdGeFkyTnlFM0lUWW5KaVluSmdZSEJ6WWtGeFlTQndjQ0FDY21KaWZUQjNSN2pMd3Qva2diQWF3SUJneDhhWUNiSXJVbUFRL0YwK0ViQ2lMK3pONjkzQWdCZW5kNkF3TzZ2cGhEUW14K0JBU0VkZ0c4MWdRRS9zN3ZULzc0L3NrR0JOT3pBQUFDQUIzLzZnWDNCS0lBRlFBbUFJcXlBU2NvRVJJNXNBRVFzQ0xRQUxBQVJWaXdDUzhic1FrYVBsbXdBRVZZc0E0dkc3RU9HajVac0FCRldMQUdMeHV4QmhBK1diQUFSVml3QUM4YnNRQVFQbG15Q2dZSkVSSTVmTEFLTHhpMFlBcHdDZ0p4c3FBS0FWMjBZQXB3Q2dKZHNnVUJDaXRZSWRnYjlGbXdEaEN5R3dFS0sxZ2gyQnYwV2JBQUVMSWpBUW9yV0NIWUcvUlpNREVGTGdJM0J3TWpFek1ETXpZQUZ4WVdFZ2NIQWdBVE5pY21KaWNtQmdjR0Z4WVdGeFkyTndPZmhzaGdFZGRadGN1MFY4bEFBU3pUajhSWEVBWWgvc1d3QndRSmZtNlMwQjhXQ0FsK2JaYk9IaEFDaWZXUEFmNENCSTMrQ2ZrQkV3UUVqdjhBbnpQKzcvN0JBb0ZHUjNxTUJBWFJ0WVJuZW84RUJkVEFBQUwvM3dBQUJFQUVqZ0FOQUJVQVliSVFGaGNSRWptd0VCQ3dCOUFBc0FCRldMQUhMeHV4QnhvK1diQUFSVml3QUM4YnNRQVFQbG13QUVWWXNBa3ZHN0VKRUQ1WnNoRUhBQkVTT2JBUkw3SUxBUW9yV0NIWUcvUlpzZ0VMRVJFU09iQUhFTElTQVFvcldDSFlHL1JaTURFakFTWW1OelkyTXdVREl4TWhBUk1HRndVVEp5SUdJUUY5WEZzR0MvbkpBY2pLdFZUKzRQNjF0aGJqQVFKQy9uYVJBaEVtbFdTbXVBSDdjd0hmL2lFREthOEJBUUY4QVdzQUFBSC8rZ0FBQkN3RWpRQU5BR1d5Q3c0UEVSSTVBTEFBUlZpd0NDOGJzUWdhUGxtd0FFVllzQUl2RzdFQ0VENVpzZ2NDQ0JFU09YeXdCeThZc3FBSEFWMjBZQWR3QndKZHRHQUhjQWNDY2JJRUFRb3JXQ0hZRy9SWnNBSFFzQWdRc2dzQkNpdFlJZGdiOUZtd0J4Q3dETkF3TVFFakF5TVRJemN6RXlFSElRTXpBbVhiV2JWWjJ4dmFXQUxsRy8zUVBkc0IvZjREQWYyWEFmbVovcUFBQWYrdi9xd0dCQVNOQUJrQXJiSVVHaHNSRWprQXNBTXZzQUJGV0xBUUx4dXhFQm8rV2JBQVJWaXdGQzhic1JRYVBsbXdBRVZZc0Jndkc3RVlHajVac0FCRldMQUZMeHV4QlJBK1diQUFSVml3Q1M4YnNRa1FQbG13QUVWWXNBMHZHN0VORUQ1WnNoWVFCUkVTT1h5d0ZpOFlzcUFXQVYyMFlCWndGZ0pkdEdBV2NCWUNjYklJQVFvcldDSFlHL1Jac2dBSUZoRVNPYkFGRUxJQkFRb3JXQ0hZRy9SWnNBZ1FzQXZRc2c4V0NCRVNPYkFXRUxBUzBEQXhBUk16QXlNVEl3TWpBeU1USXdFakFRTXpFek1UTXdNekFUTUVRTXViVmFROGNOeGxWN1pZV3Y1MzhRSHE4TTdMVzFpMldVOEJmT2NDVVA1Ry9oWUJWQUgyL2dvQjl2NEtBbHNDTXY0REFmMytBd0g5QUFBQkFCNytyQVJYQkkwQUVBQ0FzZ0FSRWhFU09RQ3dBeSt3QUVWWXNBc3ZHN0VMR2o1WnNBQkZXTEFQTHh1eER4bytXYkFBUlZpd0JpOGJzUVlRUGxtd0FFVllzQWt2RzdFSkVENVpzZzBKQ3hFU09YeXdEUzhZdEdBTmNBMENjYktnRFFGZHRHQU5jQTBDWGJJSUFRb3JXQ0hZRy9SWnNnQUlEUkVTT2JBR0VMSUJBUW9yV0NIWUcvUlpNREVCQVRNREl4TWpBU01ESXhNekF6TUJNd0l1QVJHaFZhVThYdjdUYlZlMXk3UllXQUhTNkFKSi9rMytGZ0ZVQWZiK0NnU04vZ01CL1FBQkFCNEFBQVVOQkkwQUZBQjRzZ1VWRmhFU09RQ3dBRVZZc0FZdkc3RUdHajVac0FCRldMQVRMeHV4RXhvK1diQUFSVml3Q1M4YnNRa1FQbG13QUVWWXNCRXZHN0VSRUQ1WnNnQUdDUkVTT1h5d0FDOFlzcUFBQVYyMFlBQndBQUpkdEdBQWNBQUNjYkFFMExBQUVMSVFBUW9yV0NIWUcvUlpzZ2dRQUJFU09iQU0wREF4QVRjM013Y3pBVE1CQVNNQkp3Y2pOeU1ESXhNekFUOVRKNUV0TmdIUzZQM1dBWERhL3RSQktaRWxURmkxeTY4Q2p3SGs1UUgrL2J6OXR3SDJBYy9PL2dvRWpRQUFBUUJwQUFBRk9nU05BQTRBZmJJSER4QVJFamtBc0FCRldMQUdMeHV4QmhvK1diQUFSVml3Q2k4YnNRb2FQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFOTHh1eERSQStXYklJQmdJUkVqbDhzQWd2R0xLZ0NBRmR0R0FJY0FnQ1hiUmdDSEFJQW5HeUFRRUtLMWdoMkJ2MFdiQUdFTElGQVFvcldDSFlHL1Jac2d3QkNCRVNPVEF4QVNNREl4TWhOeUVETndFekFRRWpBbmxzVjdhdy9ya2JBZnhaV1FIUjZmM1dBWERhQWZiK0NnUDFtUDREQVFIOC9iejl0d0FBQWdCUS8rb0ZPQVNpQUNRQU1RQ2lzaFl5TXhFU09iQVdFTEFsMEFDd0FFVllzQXN2RzdFTEdqNVpzQUJGV0xBYkx4dXhHeG8rV2JBQVJWaXdCQzhic1FRUVBsbXdBRVZZc0FBdkc3RUFFRDVac2dJRUd4RVNPYkFDTDdBTEVMSU1BUW9yV0NIWUcvUlpzQVFRc2hRQkNpdFlJZGdiOUZtd0FoQ3lKd0VLSzFnaDJCdjBXYklXRkNjUkVqbXdBQkN5SkFFS0sxZ2gyQnYwV2JJaUpDY1JFam13R3hDeUxnRUtLMWdoMkJ2MFdUQXhCU1luQmljbUFoTTNFZ0EzQndZR0FoY1dGeFlYTWpjbUV4SVNGeFlXRnhZSEFnY1dGd0VXRnpZVE5qYzFKaWNtQmdjRTRNeWJsWmYvL2g0RElBRWEyeEYxbzBzT0VYZENhVEEvcEI4YTc3aVdvQU1CRFNuYlNILzkvUWVXeHlZTUF3cUtlNFFHRlFRM1BBSUVBVkFCRWlBQkF3RW5CSjRCbWY3UmtLdEtLUUVKeEFFdUFRSUJHd1VFekt0QmJ2N2F0Z3dDQVlEUFk0Y0JGV2s4THJVR0JmTFIvLzhBZEFBQUJHVUVqUUFtQWRJQUFBQUhBZDRBRVA3ZUFBSC90djZzQkcwRWpRQVFBRnF5QUJFU0VSSTVBTEFITDdBQVJWaXdBUzhic1FFYVBsbXdBRVZZc0E4dkc3RVBHajVac0FCRldMQU1MeHV4REJBK1diQUFSVml3Q2k4YnNRb1FQbG15QUFFSEVSSTVzZ1FCQ2l0WUlkZ2I5Rm15Q3dFSEVSSTVNREVCQVRNQkV6VVhBeU1USXdNQkl3RUJNd0lvQVdIay9oVFZxMVNsUEdyVi9wVGpBZmorNk1nQzJ3R3kvYlQrVlFNRS9oY0JWQUc2L2tZQ1ZRSTRBQUFCQUd6K3JBVi9CSTBBRHdCV3Nnc1FFUkVTT1FDd0FpK3dBRVZZc0Fndkc3RUlHajVac0FCRldMQU9MeHV4RGhvK1diQUFSVml3QkM4YnNRUVFQbG15QUFFS0sxZ2gyQnYwV2JBSUVMSUhBUW9yV0NIWUcvUlpzQXZRc0FBUXNBM1FNREVsTXdNakV5RVRJVGNoQnlFRElSTXpCTStwWjZJOC9HeXYvcVliQTI4Yi9xQ1ZBak93dHBqK0ZBRlVBL1NabWZ5a0EvVUFBQUVBV2dBQUJDMEVqUUFZQUZHeUJCa2FFUkk1QUxBQVJWaXdDeThic1FzYVBsbXdBRVZZc0Jjdkc3RVhHajVac0FCRldMQUFMeHV4QUJBK1diSVJDd0FSRWpsOHNCRXZHTElIQVFvcldDSFlHL1Jac0FUUXNCRVFzQlRRTURFaEl4TUdCd2NqTnlZbU54TXpBd1lYRmhjM013YzJOeE16QTJPMVZXZG5KNUlucUtFU09yVTdCZ01LalMrUkxWbHpaclFCd3lJS3g4VVMxYTRCWS82Y01DcUhIUER1RFNBQ01nQUFBUUFkQUFBRDdBU05BQk1BUnJJUUZCVVJFamtBc0FCRldMQUFMeHV4QUJvK1diQUFSVml3Q1M4YnNRa1FQbG13QUVWWXNCSXZHN0VTRUQ1WnNnUVNBQkVTT2JBRUw3SVBBUW9yV0NIWUcvUlpNREVUTXdNMkZ4NENCd01qRXpZbkppY21Cd01qNkxWVmxwUjlyVkFOT3JVNkJ3WVdxbnkzWnJVRWpmNDlNZ0lEWUxwNS9wd0JaVGd1a1FZRE0vM09BQUFDQUMvLzhRVmhCS0VBSGdBbkFHbXlEaWdwRVJJNXNBNFFzQ0RRQUxBQVJWaXdEeThic1E4YVBsbXdBRVZZc0FBdkc3RUFFRDVac2lNQUR4RVNPYkFqTDdLL0l3RmRzaFFCQ2l0WUlkZ2I5Rm13QmRDd0l4Q3dETkN3QUJDeUdnRUtLMWdoMkJ2MFdiQVBFTElmQVFvcldDSFlHL1JaTURFRkxnSTNOeVltTnhjR0ZoYzJBQmNlQWdjSElRWVhGaFlYRmpjWEJnTW1CZ2NGTmljbUpnTWZrK3BxSEFHUWxndVZDVWhTT0FFMzFaUFJXUk1VL01zTkRCT1hkNGlkTFg1ZGpzOHFBb1VSQ3hPR0R3R005WThJQzhtaEFXTnRFTzBCRmdRQ2lQQ2FobEJDYVhRQkFraVRWUVFSQThHcEFXTTlYbWNBQWdCQi8rd0VaQVNjQUJjQUlRQmVzaE1pSXhFU09iQVRFTEFZMEFDd0FFVllzQUF2RzdFQUdqNVpzQUJGV0xBSUx4dXhDQkErV2JJTkNBQVJFam13RFMrd0FCQ3lFd0VLSzFnaDJCdjBXYkFJRUxJWUFRb3JXQ0hZRy9SWnNBMFFzaDBCQ2l0WUlkZ2I5Rmt3TVFFZUFnY0hCZ0FuTGdJM053VTJKeVltSnlZSEp6WVRGamMyTnlVR0Z4WVdBcEtVMm1RUkVDTCt1OTZWejFrVEZBTXlGQXdVbkhXRW95cUtVTEp6UWlEOWV4RU1FWWdFbkFPSjg1UjE5LzdQQkFPRjhKcUdCVmxDWm5VQkFrbVVWZnZ0QkpkWWZRRmhQMTFwQUFBQkFCSC82QVB3QkkwQUd3Qm1zZ3NjSFJFU09RQ3dBRVZZc0FJdkc3RUNHajVac0FCRldMQU1MeHV4REJBK1diQUNFTElCQVFvcldDSFlHL1Jac0FUUXNoc01BaEVTT2JBYkw3SVpBUW9yV0NIWUcvUlpzZ1ViR1JFU09iSVFEQUlSRWptd0RCQ3lFd0VLSzFnaDJCdjBXVEF4QVNFM0lRY0JGaFlIRGdJbkppWTNNeFFXRnhZMk56WW1KeWMzQXVEOTFCd0RJQlQrZEpPd0NBZUc0SWExMGdXeWNtYUdwZ3dLY0hPSUhnUDBtWDcrbnhTNWgzT25XQU1GdFp4WVl3SUNkR2RZWXdVQnJnQUFBd0JLLytvRVdBU2tBQTRBRlFBY0FIT3lGeDBlRVJJNXNCY1FzQURRc0JjUXNCRFFBTEFBUlZpd0J5OGJzUWNhUGxtd0FFVllzQUF2RzdFQUVENVpzZzhCQ2l0WUlkZ2I5Rm15R1FBSEVSSTVmTEFaTHhpeW9Ca0JYYlJnR1hBWkFsMjBZQmx3R1FKeHNoTUJDaXRZSWRnYjlGbXdCeEN5RmdFS0sxZ2gyQnYwV1RBeEJTWUNOemNTQUJjV0ZoSUhCd0lBSnhZMk55RUdGZ0VtQmdjaE5pWUNBTmJnR3dVZ0FVRGtqOFJYRUFVYy9zTGdqTWd1L1lnUGd3RWVpc291QW5jUmdCQUZBVHYwTEFFTUFVZ0dCSTcvQUo0di92UCt1SjhGdmJtbHh3TjBCYjYzcE1jQUFBSC8vd0FBQTlnRW9nQW5BSyt5SlNncEVSSTVBTEFBUlZpd0hpOGJzUjRhUGxtd0FFVllzQXd2RzdFTUVENVpzZ1lNSGhFU09iQUdMN0lQQmdGZHNBSFFzQUV2UUFrZkFTOEJQd0ZQQVFSZHNnQUJBVjJ5QWdRS0sxZ2gyQnYwV2JBR0VMSUhCQW9yV0NIWUcvUlpzQXdRc2dzQkNpdFlJZGdiOUZtd0R0Q3dCeEN3RTlDd0JoQ3dGTkN3QWhDd0dOQ3dBUkN3R2RDd0hoQ3dJdEN5RHlJQlhiSTlJZ0Zkc2t3aUFWMndIaEN5SkFFS0sxZ2gyQnYwV1RBeEFTRUhJUWNISlFjbEJnY2xCeUUzRnpZM053YzNGemMzSXpjek56WTJGeFlXQnljMkp5WUdCd0dEQVpFVi9ua1FCUUdKRmY1L0p5OENoQnY4blJZSlJDWVJvUmFiQkJDZEZwTUlIK2FxcDZvS3RoQ3RXWG9ZQXFoNVhCSUJlUUZ2UlFLWWxnRWRaekVCZVFFU1hIazYydVlGQk5LdUFlSUhBNFdFQUFFQUh2L3dBOThFb1FBaUFKV3lBeU1rRVJJNUFMQUFSVml3Rmk4YnNSWWFQbG13QUVWWXNBa3ZHN0VKRUQ1WnNpSUpGaEVTT2JBaUw3SU1JZ0ZkdEJBaUlDSUNYYkFPMExJTkJBb3JXQ0hZRy9SWnNBSFFzQWtRc2dRQkNpdFlJZGdiOUZtd0loQ3dIdEN3SGk5QUNSOGVMeDQvSGs4ZUJGMnlBQjRCWGJBVDBMSVFCQW9yV0NIWUcvUlpzQllRc2hzQkNpdFlJZGdiOUZtd0VCQ3dJTkF3TVFFRkJoWVhGamNYQmljbUpqY0hOek0zSXpjek5pUVhGaGNISmlNbUF5RUhJUWNoQXZiK2RBUjJjVkI1RFhCc3V0c0tuaFdTRkpNVmpqMEJEOFJjaWlSWmIvbGFBWk1XL25FVEFaQUJsZ0YraXdJREhaY2RBZ0xpd1FGNWJYblQyUUlDSDVVZkJQN3BlVzBBQUFRQUhRQUFCNllFb2dBREFCRUFId0FwQUtpeUtDb3JFUkk1c0NnUXNBSFFzQ2dRc0EzUXNDZ1FzQlBRQUxBQVJWaXdKaThic1NZYVBsbXdBRVZZc0Nndkc3RW9HajVac0FCRldMQUVMeHV4QkJvK1diQUFSVml3SUM4YnNTQVFQbG13QUVWWXNDTXZHN0VqRUQ1WnNBUVFzQXZRc0FzdnNBTFFzQUl2dEFBQ0VBSUNYYklCQXdvcldDSFlHL1Jac0FzUXNoVURDaXRZSWRnYjlGbXdCQkN5SEFNS0sxZ2gyQnYwV2JJaUppQVJFam15SnlBbUVSSTVNREVsSVRjaEF4WVdCd2NHQmljbUpqYzNOallEQmhZWEZqWTNOelltSnlZR0J3RWpBUU1qRXpNQkV6TUc3djNqR1FJZWtwQ2dEQWNQMEplT29Rb0hEOU5KQjB0TFVXd09DUWRNU1ZGd0MvNHVyZjVLbXJYTHJRRzNtclM5amdOVEJMNk9TWjdBQkFTN2tFbWZ3UDVXV21ZQ0FtbGRWVnhrQWdKdFgveTVBM1Q4akFTTi9Jc0RkUUFDLzkwQUFBUndCSTBBRmdBZkFIWUFzQUJGV0xBTUx4dXhEQm8rV2JBQVJWaXdBeThic1FNUVBsbXlCZ01NRVJJNXNBWXZzQlhRc2dFQkNpdFlJZGdiOUZtd0JOQ3dCaEN3Q3RDd0NpKzB2Z3JPQ2dKZFFBa09DaDRLTGdvK0NnUmRzZ2dCQ2l0WUlkZ2I5Rm13Rk5Dd0NoQ3dGOUN3REJDeUh3RUtLMWdoMkJ2MFdUQXhKU01ISXpjak56TTNJemN6RXdVV0ZnY0dCQ01sQnpNbkJUWTJOelltSnlVQ1NQb2d0aUM3RzdvUXV4dTZad0cxcnNvTEMvNzd4djdwRVB2UkFRSnpuQTBNYUYvKzZiUzB0SmhabUFKUUFRVEluNnJUQVZueEFnSjlaV0Z3QkFFQUFBSUFILy9tQkJFR0FBQVRBQ0FBWkxJRklTSVJFam13QlJDd0hkQUFzQW92c0FCRldMQU9MeHV4RGhnK1diQUFSVml3Q0M4YnNRZ1FQbG13QUVWWXNBVXZHN0VGRUQ1WnNnY09DQkVTT2JJTURnZ1JFam13RGhDeUZ3RUtLMWdoMkJ2MFdiQUZFTEljQVFvcldDSFlHL1JaTURFQkJnWUhCaWNtSndjakFUTUROaGNlQWhjV0p5WW1KeVlIQXhZWEZqWTNOZ1FKRUZsRGk4WEhYaXVlQVF1MWJZSzZaNTVYQlFLNENYTmtxWFZST3FhS3hob0pBaGg1MGt5YkJRU1RnZ1lBL2NLUUJBRm94SFU5UW5XSkF3U3UvaW1tQkFYZXVsb0FBUUJELytnRDlnUlVBQndBUzdJQUhSNFJFamtBc0FCRldMQVBMeHV4RHhnK1diQUFSVml3Q0M4YnNRZ1FQbG15QUFFS0sxZ2gyQnYwV2JJRUR3Z1JFam15RWdnUEVSSTVzQThRc2hZQkNpdFlJZGdiOUZrd01TVVdOamMzRGdJbkpnSTNOeElBRnhZV0J5TTBKaWNtQWdjSEZCWUI2bUdkRzZ3UWhzeHJ5dFVaQXg0Qkx0aW16UUtxY1YrYnlRc0Jkb0lDY21JQlphbGZBd1FCTE9vYkFRQUJOQVlFMmF4cmd3UUcvdmppSkpTWEFBSUFSLy9uQklVR0FBQVNBQ0FBWWJJRUlTSVJFam13QkJDd0hkQUFzQWN2c0FCRldMQUVMeHV4QkJnK1diQUFSVml3Q2k4YnNRb1FQbG13QUVWWXNBMHZHN0VORUQ1WnNnWUVDaEVTT2JJTEJBb1JFam15R0FFS0sxZ2gyQnYwV2JBRUVMSWRBUW9yV0NIWUcvUlpNREVUTmhJMkZ4WVhFek1CSXpjR0p5WW1KeVkzTXdZWEZCWVhGamNUSmljbUJnZFFFNWJaZ0xSaGFiWCs5WnNPaEx5YnV3d0VCclVGQVhocm9uVldQSjJPeGhzQ0g2QUJEWVlEQklBQ05mb0FlSkVFQk9XN1B6d3BMSW1qQWdTakFmU1RCQVhjdGdBQ0FDVCtVQVEyQkZRQUd3QXFBSHl5Q3lzc0VSSTVzQXNRc0NiUUFMQUFSVml3QkM4YnNRUVlQbG13QUVWWXNBY3ZHN0VIR0Q1WnNBQkZXTEFNTHh1eERCSStXYkFBUlZpd0ZpOGJzUllRUGxteUJnUVdFUkk1c0F3UXNoRUJDaXRZSWRnYjlGbXlGQVFXRVJJNXNCWVFzaUVCQ2l0WUlkZ2I5Rm13QkJDeUpnRUtLMWdoMkJ2MFdUQXhFelkzTmhjV0Z6Y3pBd1lBSnlZbk54WVhCQk0zQmljbUppY21Oek1HRnhZV0Z4WTNFeVluSmdjR0IxQVhZcFh5d1Y4cm02d2ovdWZXdUp4QmVKNEJCRkVUaUxDYnV3b0VCclVIQlFsMFk2SjNWVHFndm1vNER3SWZ3WlRnQmdTUmdmd1U4UDd5QkFSbWkxb0VCZ0V5VllRRUJPVzZQencrUTNXSkJBU2xBZTZXQmdPN1pIZi8vd0NwQUFBREJBVzNBQVlBRmJBQUFBTC8xLzVnQkJBRVVnQVJBQjRBWkxJQUh5QVJFam13RzlBQXNBQkZXTEFKTHh1eENSZytXYkFBUlZpd0JpOGJzUVlZUGxtd0FFVllzQU12RzdFREVqNVpzQUJGV0xBQUx4dXhBQkErV2JJSENRTVJFam13Q1JDeUZRRUtLMWdoMkJ2MFdiQUFFTElhQVFvcldDSFlHL1JaTURFRkppY0RJd0UzQnpZWEZoWVhGZ2NIQmdBVEppWW5KZ2NERmhjV05qYzJBZ3k3WkdHMUFRU2FENGkrb0xnSkF3Y0pLdjd6alF0NFpKNXlXejJkanMwWkNCVUVlLzMyQmRvQmZwVUVCTjdCUUQ0NzdmN2hBc3QyaUFNRW1mMzVqd1VENUxWY0FBSUFSdjVnQkRVRVZBQVJBQjRBYTdJREh5QVJFam13QXhDd0hOQUFzQUJGV0xBR0x4dXhCaGcrV2JBQVJWaXdBeThic1FNWVBsbXdBRVZZc0Fndkc3RUlFajVac0FCRldMQU1MeHV4REJBK1diSUZCZ3dSRWpteUNnWU1FUkk1c2hjQkNpdFlJZGdiOUZtd0F4Q3lIQUVLSzFnaDJCdjBXVEF4RXpZQUZ4WVhOek1CSXhNR0p5NENKeVkzQmhjV0ZoY1dOeE1tSnlZR1R5QUJHYzY1WVNlZS92eTFZb0tzWnA1YkJ3UzhCd1lKZDJPWmQxMUJsWkRNQWg3NUFUMEZCSVJ6K2lZQ0JId0VBV2ZDZHpoRVBrUjNpd01FbHdJVGlRWUY1UUFDQUVYLzZ3UDdCRk1BRlFBZkFGK3lBQ0FoRVJJNXNCZlFBTEFBUlZpd0NDOGJzUWdZUGxtd0FFVllzQUF2RzdFQUVENVpzaG9JQUJFU09iQWFMN1MvR3M4YUFsMnlEQUVLSzFnaDJCdjBXYkFBRUxJUUFRb3JXQ0hZRy9SWnNBZ1FzaFlCQ2l0WUlkZ2I5Rmt3TVFVbUFqYzNFamMyRnhZU0J3Y2hCaFlYRmpjWEJnWURKZ1lIQlRjMkp5WW1BZ3pZN3hVREhhQ1d4c1BDR3hQOVBnK1RpNDJTTEVDMkFtNnVOQUlSQlFrSERXZ1RBZ0V2NXh3QkFaNlRCUWIrOHRoNmw4a0VCRjJCT1RnRHpBV2JvUUViTnpOVFhRQUFBZ0ExL2xBRUtBUlNBQndBS2dCOHNnc3JMQkVTT2JBTEVMQW4wQUN3QUVWWXNBY3ZHN0VIR0Q1WnNBQkZXTEFFTHh1eEJCZytXYkFBUlZpd0RDOGJzUXdTUGxtd0FFVllzQll2RzdFV0VENVpzZ1lIRmhFU09iQU1FTElSQVFvcldDSFlHL1Jac2hRSEZoRVNPYkFXRUxJaUFRb3JXQ0hZRy9SWnNBUVFzaWNCQ2l0WUlkZ2I5Rmt3TVJNMkVqWVhGaGMzTXdNR0FDY21KemNXRnhZVE53WW5KaVluSnlZM013WVhGaFlYRmpjVEppY21CZ2RWRkl2UGY4RmZLNXV1SS83cDFxaU5RVytJL1U4YWhMR01yQlFFQWdhMkJ3TUVhV0tlZVZVOG5ZcTNHd0llcEFFTGhRTUVrWUQ4QXVuKy9RUUVVNHRKQWdZQkZYS0VCQVRCcVRZK096dERkNGtFQjZjQjhaUUdBOWJCQUFFQWdmL25CVUVGeUFBZkFFNnlDeUFoRVJJNUFMQUFSVml3REM4YnNRd2NQbG13QUVWWXNBTXZHN0VERUQ1WnNnQU1BeEVTT2JJUUF3d1JFam13REJDeUZBRUtLMWdoMkJ2MFdiQURFTElkQVFvcldDSFlHL1JaTURFQkJnQW5MZ0luSmhJU0pCY1dBQmNqSmljbUp5WUdBZ2NIRkJZV0Z3UVRCTndzL3Jiamo5dURDZ3RkMEFFVW50VUJCQWk3QmoxUG00ZmZseE1EVFpKbEFUSm5BYy9nL3ZnRUE0VCtuYUlCYlFFZWpnTUUvdm5maWxOckJBU1kvdFRVVkh6TmJBTUxBVkVBQUFFQWhQL29CVU1GeHdBaEFGeXlGQ0lqRVJJNUFMQUFSVml3RFM4YnNRMGNQbG13QUVWWXNBTXZHN0VERUQ1WnNoRUREUkVTT2JBTkVMSVRBUW9yV0NIWUcvUlpzQU1Rc2hzQkNpdFlJZGdiOUZteUlBMERFUkk1c0NBdnNoOEJDaXRZSWRnYjlGa3dNU1VHQkNjdUFpY21OellTSkJjV0ZoY2pBaVVtQmdJWEZCWVdGeFkzRXlFM0lRUzJTZjdlczVqa2lBc0ZEUjdQQVMyeDEvNFN1UnorNTVic2tnSlJuV3plZ0R6K3VSd0NBTDVsY1FNRGgvK2dVWDdZQVZ5d0F3VHAwd0VhQ0FTNi9xREllOU53QVFWdUFVYWJBQUFDQUVRQUFBVVdCYkFBREFBWEFFYXlDeGdaRVJJNXNBc1FzQmZRQUxBQVJWaXdBUzhic1FFY1BsbXdBRVZZc0FBdkc3RUFFRDVac0FFUXNnMEJDaXRZSWRnYjlGbXdBQkN5RGdFS0sxZ2gyQnYwV1RBeE14TUZNZ1FYRmdjSEJnSUVCd01ERnpJMk5oSW5KaVluUlAwQmo3MEJFejA1RkFNWTJmNm96QW5HelpUNHFEc1FGc0NkQmJBQnZhYWV2eHZTL3JlNEFRVVMrNHNCZit3Qk1YK2h0UVFBQUFJQWhmL29CVjRGeUFBVEFDQUFScklJSVNJUkVqbXdDQkN3R05BQXNBQkZXTEFKTHh1eENSdytXYkFBUlZpd0FDOGJzUUFRUGxtd0NSQ3lGd0VLSzFnaDJCdjBXYkFBRUxJZEFRb3JXQ0hZRy9SWk1ERUZKaVlDSnlZU0VpUVhIZ0lYRmdjSEJnSUVBVFFtSnlZR0FoSVdGeFkyRWdLQ2pkbUFDd3hqMVFFUm1ZelpnZ3NGQ1FZZDBmN1JBVytwbVpQemxRYXJscEh6a2hVRGlRRUJucTBCWHdFWWpnTURoLytlVmxRcjAvNm90Z09Id080RUJMeitwLzV3N2dRR3VBRmRBQUFDQUlYL0JBVmtCY2dBRlFBakFFYXlBeVFsRVJJNXNBTVFzQnJRQUxBQVJWaXdEaThic1E0Y1BsbXdBRVZZc0FVdkc3RUZFRDVac0E0UXNoa0JDaXRZSWRnYjlGbXdCUkN5SUFFS0sxZ2gyQnYwV1RBeEpSY0hKd1lqSmlZQ0p5WVNFaVFYRmhZU0Z4WUNBaE1tSmljbUJnSVhGaFlYRmpZU0E2elFpLzg0T29yV2hBc01aZE1CRUpxTjNIOExDbUhKWndPcGxwTDFsQU1EcTVhUzlaQTl5SEh5Q2dHR0FRT2hyUUZoQVJXT0F3T0ovd0NlcmY2aC92d0M0c3prQkFTKy9xYkZ5TzRFQnJzQllRQUJBTHNBQUFNUkJJMEFCZ0F5QUxBQVJWaXdCUzhic1FVYVBsbXdBRVZZc0FFdkc3RUJFRDVac2dRRkFSRVNPYkFFTDdJREFRb3JXQ0hZRy9SWk1ERWhJeE1GTnlVekFreTBvZjZDSUFJVUlnT2hpckRHQUFFQU9RQUFBL2tFb3dBWUFFMEFzQUJGV0xBUUx4dXhFQm8rV2JBQVJWaXdBQzhic1FBUVBsbXlHQUVLSzFnaDJCdjBXYkFDMExJRUVCZ1JFam13RUJDeUNRRUtLMWdoMkJ2MFdiQVFFTEFNMExJV0dCQVJFamt3TVNFaE53RTNOamMySmljbUJnY0hOaVFYSGdJSEJnY0JJUU9aL0tBWkFqSXBnQXdMWlZ0MXBoV3lFUUVjdjJ1cVZnZ1E2UDVlQWwyTEFjRWpiM05SWmdJRWtIZ0JzK3NDQTFPVFlMdTUvck1BQVFBZEFBQUVBd1hFQUFjQUt3Q3dBRVZZc0FZdkc3RUdHajVac0FCRldMQUVMeHV4QkJBK1diQUdFTElEQVFvcldDSFlHL1JaTURFQk13TWhBeU1USVFOT3RWSDkwTEMxeXdJd0JjVCtNUHdNQkkwQUFmK0IvcUVFRUFTTkFCb0FUZ0N3RFMrd0FFVllzQUl2RzdFQ0dqNVpzZ0VCQ2l0WUlkZ2I5Rm13Qk5DeUJRMENFUkk1c0FVdnNBMFFzaElCQ2l0WUlkZ2I5Rm13QlJDeUdRRUtLMWdoMkJ2MFdiSWFCUmtSRWprd01RRWhOeUVIQVI0Q0J3WUdCQ2NtSnpjV0Z4WWtOelltSnljM0F3MzlqeHNEV1JiK1JHZVZSd2tQcGY3cnFMWFJQcEtycmdFQUZoT1ZwRUVQQS9TWmZ2NXdFM3U3YTZEOWpRSUNaSXhYQkFUU3JKdW5CUUZ2QUFMLzAvNjJCREFFalFBS0FBNEFSZ0N3QUVWWXNBa3ZHN0VKR2o1WnNBQkZXTEFHTHh1eEJoQStXYklNQVFvcldDSFlHL1Jac0FEUXNBWVFzQVBRc0FZUXNBWFFzQVV2c0F3UXNBalFzQWtRc0EzUU1ERWxNd2NqQXlNVElUY0JNd0VoRXdjRGNNQWJ2em0yT3YweUZRTnd5ZnluQWZLTUpaYVgvcmNCU1hjRUYvd0pBdjQzQVAvL0FKQUNpQUwwQmIwREJ3SFVBSE1DbUFBVEFMQUFSVml3Qnk4YnNRY2NQbG13RU5Bd01RRC8vd0JoQXBnQzVBV3RBd2NCMkFCeEFwZ0FFd0N3QUVWWXNBa3ZHN0VKSEQ1WnNBM1FNREVBLy84QWlRS0xBd0lGclFNSEFka0Fjd0tZQUJBQXNBQkZXTEFCTHh1eEFSdytXVEF4Ly84QWtRS0tBdHNGdUFNSEFkb0Fjd0tZQUJNQXNBQkZXTEFTTHh1eEVodytXYkFUMERBeEFQLy9BS0lDbUFNbUJhMERCd0hiQUhNQ21BQVFBTEFBUlZpd0JTOGJzUVVjUGxrd01mLy9BSDRDakFMckJic0RCd0hjQUhNQ21BQVpBTEFBUlZpd0VpOGJzUkljUGxtd0dOQ3dFaEN3Sk5Bd01RRC8vd0NwQW84QzZnVzZBd2NCM1FCekFwZ0FFd0N3QUVWWXNBZ3ZHN0VJSEQ1WnNCelFNREVBQUFILzFmNmFCRVFFakFBY0FGdXlCeDBlRVJJNUFMQU9MN0FBUlZpd0FTOGJzUUVhUGxteUF3RUtLMWdoMkJ2MFdiSUhBUTRSRWptd0J5K3dCZEN5RVFFT0VSSTVzQTRRc2hNQkNpdFlJZGdiOUZtd0J4Q3lHUUVLSzFnaDJCdjBXYkFIRUxBYzBEQXhFeE1oQnlFRE5oY2VBZ2NHQUNjbUp6Y1dGeFkyTnpZbUp5WUdCMWp0QXY4ZS9aU0NiNUI2ckUwTkdQNno2Y2V6UkhQSW51SVREM3Q2VzRZcUFYWURGcXYrYzBNQ0FYN2NodTcrMUFRRWI0eGpCUUxkcElXekJBTStVUUFCQUN2K3RnUTNCSTBBQmdBb3NnRUhDQkVTT1FDd0FTK3dBRVZZc0FVdkc3RUZHajVac2dNQkNpdFlJZGdiOUZtd0FOQXdNUUVCSXdFaE55RUVJL3pIdndNdS9UWWJBNDBFR2ZxZEJUK1lBQUlBU2YveUJxY0VvQUFXQUNJQW5iSUxJeVFSRWptd0N4Q3dHZEFBc0FCRldMQU5MeHV4RFJvK1diQUFSVml3Q2k4YnNRb2FQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFBTHh1eEFCQStXYkFORUxJUEFRb3JXQ0hZRy9SWnNoSU5BQkVTT2JBU0w3UWZFaThTQWwyeXZ4SUJYYklUQVFvcldDSFlHL1Jac0FBUXNoWUJDaXRZSWRnYjlGbXdBaEN5RndFS0sxZ2gyQnYwV2JBS0VMSWFBUW9yV0NIWUcvUlpNREVoSVFVakpnSTNOeElBRnpJV015RUhJUU1oQnlFRElRVTNFeWNtQmdjR0Z4UVdGd1hqL1pYKzJWWFUzeHNHSUFFLzVseklZQUowRy8ydU93SUZHLzM5UWdKYS9IbHpvZUthMUJzTkFYeDBEZ1VCT3ZNeUFRb0JRQUlSbWY2eW1QNkpDZ01EYVF3QzNzSndNWkNsQkFBQUFnQS8vcVVFUGdTbUFCa0FKd0JSc2hzb0tSRVNPYkFiRUxBTjBBQ3dGUyt3QUVWWXNBMHZHN0VOR2o1WnNCVVFzZ0FCQ2l0WUlkZ2I5Rm15QkJVTkVSSTVzQVF2c2hvQkNpdFlJZGdiOUZtd0RSQ3lJZ0VLSzFnaDJCdjBXVEF4QlFRVEJpY3VBamMyTmpjMkZ4WVNCd2NHQWdRbkppYzNGZ0VXTmo4Q05pWW5KZ1lIQmhZQlFBRllub2lwZnJWVURRcFdSby9SMk5VZUp5UEQvdU9wa253emJRRTNaYWMxRndZRGRuU0d0UkVQYzhFSEFkWnNCQUdCNEl0c3gwbVhCQVgrelAzNTJ2Nnpwd01DUFl3eUFmd0VYRldXV295Z0JBUFdwWS9EQUFBQ0FHVC81d1I0QktZQUVRQWdBRGtBc0FCRldMQUtMeHV4Q2hvK1diQUFSVml3QUM4YnNRQVFQbG13Q2hDeUZRRUtLMWdoMkJ2MFdiQUFFTEljQVFvcldDSFlHL1JaTURFRkppWUNOemMyTmpjMkZ4WVNCd2NHQWdZQkp5WW5KZ0lIRlJRV0Z4WTJOellDR1pYSVdCSUNFR05Sb3V2UDRBb0VFNkQrQVFJRUg5ZXg1QWVEZVozWEhBb1ZCSllCREtnVWZ1UlNwUVVGL3VMeE43Yis0SmtDM2ovK0NBYisyUGtobTY0RUJlelBYQUQvLy84Si9rWUJyd1E2QUFZQW13QUEvLy8vQ2Y1R0FhOEVPZ0FHQUpzQUFQLy9BQzRBQUFHZkJEb0FCZ0NNQUFELy8vOTYvbGtCbndRNkFDWUFqQUFBQUFZQW84c0svLzhBTGdBQUFaOEVPZ0FHQUl3QUFQLy8vL0grcVFHZkJEb0FKZ0NNQUFBQUJ3Q3NBellBQ2dBQkFCMy81d1BVQktJQUlRQmZBTEFBUlZpd0ZTOGJzUlVhUGxtd0FFVllzQkF2RzdFUUVENVpzQUJGV0xBZkx4dXhIeEErV2JJQ0FRb3JXQ0hZRy9SWnNna2ZGUkVTT2JBSkw3SUlBd29yV0NIWUcvUlpzQlVRc2d3QkNpdFlJZGdiOUZteUdRa0lFUkk1TURFbEZoY3lOamMySnljM0FTWW5KZ1lIQXlNVE5qWVhGaFlYQVJZV0J3WUdKeVluQVdWS1ZXR0pEQlB0WFJrQkdEeGphb1lVZ0xTQUhlaThaN05jL3J5T2x3Y004TEpyY2JVekFvTmxxd01Ca2dFaFBBSUNrNGI5RHdMeDFkd0VCRmhjL3JJU25YeXYxd0lDTWYvL0FCa0NId0lQQXJZQ0JnQVJBQUFBQWdBdkFBQUU4d1d3QUE0QUhRQnRBTEFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQUF2RzdFQUVENVpzZ01BQlJFU09iQURMN0xQQXdGZHNwOERBWEd5THdNQlhiUnZBMzhEQW5LeUFnRUtLMWdoMkJ2MFdiQVEwTEFBRUxJUkFRb3JXQ0hZRy9SWnNBVVFzaHNCQ2l0WUlkZ2I5Rm13QXhDd0hkQXdNVE1USXpjekV3VXlCQklIQndJQUlSTWhBeGN5QURjMkp5WW1KeWNESVZsem5SdWRid0Y2c2dFQmNCY0tMUDVxL3MyOC91OVl1ZFFCSnl3akN3K3dsTjlVQVJJQ21wY0Nmd0d5L3NmQ1NmN0Mvb1VDbXY0REFRRUk1cmlCbTY4RUFmNGZBQUFDQUM4QUFBVHpCYkFBRGdBZEFHMnlEeDRmRVJJNXNBOFFzQWJRQUxBQVJWaXdCaThic1FZY1BsbXdBRVZZc0FBdkc3RUFFRDVac0FQUXNBTXZzaThEQVYyeXp3TUJYYklDQVFvcldDSFlHL1Jac0JEUXNBQVFzaElCQ2l0WUlkZ2I5Rm13QmhDeUdnRUtLMWdoMkJ2MFdiQURFTEFjMExBZDBEQXhNeE1qTnpNVEJUSUVFZ2NIQWdBaEV5RURGeklBTnpZbkppWW5Kd01oV1hPZEc1MXZBWHF5QVFGd0Z3b3MvbXIremJ6KzcxaTUxQUVuTENNTEQ3Q1UzMVFCRWdLYWx3Si9BYkwreDhKSi9zTCtoUUthL2dNQkFRam11SUdicndRQi9oOEFBQUVBUFFBQUJBRUdBQUFhQUdNQXNCZ3ZzQUJGV0xBRUx4dXhCQmcrV2JBQVJWaXdFUzhic1JFUVBsbXdBRVZZc0Frdkc3RUpFRDVac2k4WUFWMnlEeGdCWGJJV0VSZ1JFam13RmkreUV3RUtLMWdoMkJ2MFdiQUIwTEFFRUxJT0FRb3JXQ0hZRy9SWnNCWVFzQm5RTURFQklRTTJGeFlXQndNakV6WW5KaWNtQndNakV5TTNNemN6QnlFQzEvN3ROWTY1bUpNVGRyVjNCZ1VSbEtaNGhyWFdwaHVsRzdVZEFSSUUwdjdrbXdRQ3pibjlPd0xJTVNxTUF3U3kvUHdFMHBlWGx3QUJBS2dBQUFVSkJiQUFEd0JNQUxBQVJWaXdDaThic1FvY1BsbXdBRVZZc0FJdkc3RUNFRDVac2dZQ0NoRVNPYkFHTDdJRkFRb3JXQ0hZRy9SWnNBSFFzQW9Rc2drQkNpdFlJZGdiOUZtd0RkQ3dCaEN3RHRBd01RRWpBeU1USXpjekV5RTNJUWNoQXpNRHROK091NDdRRzg4NS9qc2NCRVVjL2pzNTRBTTMvTWtETjVjQlJKNmUvcndBQUFILzlQL3RBcFFGUUFBZUFHb0FzQUJGV0xBWkx4dXhHUmcrV2JBQVJWaXdDeThic1FzUVBsbXdHUkN3SGRDd0hTK3lBQjBCWGJBUzBMSVBBUW9yV0NIWUcvUlpzQUhRc0FzUXNnWUJDaXRZSWRnYjlGbXdHUkN5SEFFS0sxZ2gyQnYwV2JBVDBMQVpFTEFXMExBWkVMQVkwTEFZTHpBeEFTTURCaGNXTXpJM0J3WWpKaVkzRXlNM016Y2pOek1UTXdNekJ5TUhNd0plNERnREFnZE9JVGNPUVVOc2JBdzIxaHZVSDc4WnZ5NjBMc1VaeEIvaEFscitzQm9XVGdxWEVnS2Jnd0ZObDdxUEFRYisrbys2QVAvLy82OEFBQVNMQnpRQ0pnQWxBQUFCQndCRUFXa0JOZ0FUQUxBQVJWaXdCQzhic1FRY1BsbXdETnd3TVFELy8vK3ZBQUFFbUFjMEFpWUFKUUFBQVFjQWRRSHpBVFlBRXdDd0FFVllzQVV2RzdFRkhENVpzQTNjTURFQS8vLy9yd0FBQklzSE5nSW1BQ1VBQUFFSEFKMEErUUUyQUJNQXNBQkZXTEFFTHh1eEJCdytXYkFRM0RBeEFQLy8vNjhBQUFTdkJ5RUNKZ0FsQUFBQkJ3Q2tBUUVCT2dBVEFMQUFSVml3QlM4YnNRVWNQbG13RHR3d01RRC8vLyt2QUFBRWl3YjlBaVlBSlFBQUFRY0FhZ0V6QVRZQUZnQ3dBRVZZc0FRdkc3RUVIRDVac0JUY3NDRFFNREgvLy8rdkFBQUVpd2VTQWlZQUpRQUFBUWNBb2dGK0FVRUFEQUN3QkMrd0ZOeXdGOUF3TWYvLy82OEFBQVNkQjVNQ0pnQWxBQUFBQndIZkFZSUJJdi8vQUhUK1FnVDVCY2tDSmdBbkFBQUFCd0I1QWNMLzkvLy9BRHNBQUFTeEIwQUNKZ0FwQUFBQkJ3QkVBVGNCUWdBVEFMQUFSVml3Qmk4YnNRWWNQbG13RGR3d01RRC8vd0E3QUFBRXNRZEFBaVlBS1FBQUFRY0FkUUhCQVVJQUNRQ3dCaSt3RHR3d01RRC8vd0E3QUFBRXNRZENBaVlBS1FBQUFRY0FuUURIQVVJQUV3Q3dBRVZZc0FZdkc3RUdIRDVac0JIY01ERUEvLzhBT3dBQUJMRUhDUUltQUNrQUFBRUhBR29CQVFGQ0FBd0FzQVl2c0NIY3NBelFNREgvL3dCSkFBQUNHUWRBQWlZQUxRQUFBUWNBUlAvdUFVSUFFd0N3QUVWWXNBSXZHN0VDSEQ1WnNBWGNNREVBLy84QVNRQUFBeHdIUUFJbUFDMEFBQUVIQUhVQWR3RkNBQWtBc0FJdnNBYmNNREVBLy84QVNRQUFBdUlIUWdJbUFDMEFBQUVIQUozL2ZnRkNBQk1Bc0FCRldMQUNMeHV4QWh3K1diQUozREF4QVAvL0FFa0FBQU1LQndrQ0pnQXRBQUFCQndCcS83Z0JRZ0FNQUxBQ0w3QVozTEFFMERBeC8vOEFPd0FBQlhjSElRSW1BRElBQUFFSEFLUUJOUUU2QUJNQXNBQkZXTEFJTHh1eENCdytXYkFOM0RBeEFQLy9BSGYvNXdVTkJ6WUNKZ0F6QUFBQkJ3QkVBWW9CT0FBVEFMQUFSVml3Q2k4YnNRb2NQbG13Sk53d01RRC8vd0IzLytjRkRRYzJBaVlBTXdBQUFRY0FkUUlVQVRnQUNRQ3dDaSt3SmR3d01RRC8vd0IzLytjRkRRYzRBaVlBTXdBQUFRY0FuUUVhQVRnQUV3Q3dBRVZZc0Fvdkc3RUtIRDVac0NqY01ERUEvLzhBZC8vbkJRMEhJd0ltQURNQUFBRUhBS1FCSWdFOEFCTUFzQUJGV0xBS0x4dXhDaHcrV2JBbTNEQXhBUC8vQUhmLzV3VU5CdjhDSmdBekFBQUJCd0JxQVZRQk9BQU1BTEFLTDdBNDNMQWowREF4Ly84QVovL25CU0FITkFJbUFEa0FBQUVIQUVRQlpBRTJBQk1Bc0FCRldMQUtMeHV4Q2h3K1diQVUzREF4QVAvL0FHZi81d1VnQnpRQ0pnQTVBQUFCQndCMUFlNEJOZ0FKQUxBQUw3QVYzREF4QVAvL0FHZi81d1VnQnpZQ0pnQTVBQUFCQndDZEFQUUJOZ0FUQUxBQVJWaXdDaThic1FvY1BsbXdHTnd3TVFELy93Qm4vK2NGSUFiOUFpWUFPUUFBQVFjQWFnRXVBVFlBREFDd0FDK3dLTnl3RTlBd01mLy9BS2dBQUFVeUJ6UUNKZ0E5QUFBQkJ3QjFBYjBCTmdBSkFMQUJMN0FMM0RBeEFQLy9BRFAvNkFQUEJmNENKZ0JGQUFBQkJ3QkVBTnNBQUFBVEFMQUFSVml3R0M4YnNSZ1lQbG13TGR3d01RRC8vd0F6LytnRUNnWCtBaVlBUlFBQUFRY0FkUUZsQUFBQUNRQ3dHQyt3THR3d01RRC8vd0F6LytnRHp3WUFBaVlBUlFBQUFRWUFuV3NBQUJNQXNBQkZXTEFZTHh1eEdCZytXYkF4M0RBeEFQLy9BRFAvNkFRaEJlc0NKZ0JGQUFBQkJnQ2tjd1FBQ1FDd0dDK3dOdHd3TVFELy93QXovK2dEOXdYSEFpWUFSUUFBQVFjQWFnQ2xBQUFBREFDd0dDK3dRZHl3TE5Bd01mLy9BRFAvNkFQUEJsd0NKZ0JGQUFBQkJ3Q2lBUEFBQ3dBTUFMQVlMN0ExM0xBNDBEQXgvLzhBTS8vb0JBOEdYZ0ltQUVVQUFBQUhBZDhBOVAvdC8vOEFSdjVDQStZRVVnSW1BRWNBQUFBSEFIa0JQdi8zLy84QVJmL3FBK0FGL2dJbUFFa0FBQUVIQUVRQXdBQUFBQk1Bc0FCRldMQUlMeHV4Q0JnK1diQWgzREF4QVAvL0FFWC82Z1B2QmY0Q0pnQkpBQUFCQndCMUFVb0FBQUFKQUxBSUw3QWkzREF4QVAvL0FFWC82Z1BnQmdBQ0pnQkpBQUFCQmdDZFVBQUFFd0N3QUVWWXNBZ3ZHN0VJR0Q1WnNDWGNNREVBLy84QVJmL3FBK0FGeHdJbUFFa0FBQUVIQUdvQWlnQUFBQXdBc0FndnNEWGNzQ0RRTURILy93QXVBQUFCeHdYOUFpWUFqQUFBQVFZQVJKei9BQk1Bc0FCRldMQUNMeHV4QWhnK1diQUYzREF4QVAvL0FDNEFBQUxLQmYwQ0pnQ01BQUFCQmdCMUpmOEFDUUN3QWkrd0J0d3dNUUQvL3dBdUFBQUNrQVgvQWlZQWpBQUFBUWNBbmY4cy8vOEFFd0N3QUVWWXNBSXZHN0VDR0Q1WnNBbmNNREVBLy84QUxnQUFBcmdGeGdJbUFJd0FBQUVIQUdyL1p2Ly9BQllBc0FCRldMQUNMeHV4QWhnK1diQU4zTEFaMERBeC8vOEFId0FBQkJnRjZ3SW1BRklBQUFFR0FLUnFCQUFKQUxBREw3QWQzREF4QVAvL0FFWC82QVFmQmY0Q0pnQlRBQUFCQndCRUFNa0FBQUFUQUxBQVJWaXdBQzhic1FBWVBsbXdKTnd3TVFELy93QkYvK2dFSHdYK0FpWUFVd0FBQVFjQWRRRlRBQUFBQ1FDd0FDK3dKZHd3TVFELy93QkYvK2dFSHdZQUFpWUFVd0FBQVFZQW5Wa0FBQk1Bc0FCRldMQUFMeHV4QUJnK1diQW8zREF4QVAvL0FFWC82QVFmQmVzQ0pnQlRBQUFCQmdDa1lRUUFDUUN3QUMrd0xkd3dNUUQvL3dCRi8rZ0VId1hIQWlZQVV3QUFBUWNBYWdDVEFBQUFEQUN3QUMrd09OeXdJOUF3TWYvL0FGdi82QVFlQmY0Q0pnQlpBQUFCQndCRUFNMEFBQUFUQUxBQVJWaXdCeThic1FjWVBsbXdGZHd3TVFELy93QmIvK2dFSGdYK0FpWUFXUUFBQVFjQWRRRlhBQUFBQ1FDd0JpK3dGdHd3TVFELy93QmIvK2dFSGdZQUFpWUFXUUFBQVFZQW5WMEFBQk1Bc0FCRldMQUdMeHV4QmhnK1diQVozREF4QVAvL0FGdi82QVFlQmNjQ0pnQlpBQUFCQndCcUFKY0FBQUFNQUxBR0w3QXAzTEFVMERBeC8vLy9wZjVGQSt3Ri9nSW1BRjBBQUFFSEFIVUJIZ0FBQUFrQXNBRXZzQkxjTURFQS8vLy9wZjVGQSt3Rnh3SW1BRjBBQUFFR0FHcGVBQUFNQUxBQkw3QWwzTEFRMERBeC8vLy9yd0FBQkxRRzdnSW1BQ1VBQUFFSEFIQUJCQUUrQUJNQXNBQkZXTEFFTHh1eEJCdytXYkFNM0RBeEFQLy9BRFAvNkFRbUJiZ0NKZ0JGQUFBQkJnQndkZ2dBRXdDd0FFVllzQmd2RzdFWUdENVpzQzNjTURFQS8vLy9yd0FBQklzSER3SW1BQ1VBQUFFSEFLQUJMZ0UzQUJNQXNBQkZXTEFFTHh1eEJCdytXYkFPM0RBeEFQLy9BRFAvNkFQc0Jka0NKZ0JGQUFBQkJ3Q2dBS0FBQVFBSkFMQVlMN0F2M0RBeEFBQUMvNi8rVHdTTEJiQUFGd0FhQUhTeUZSc2NFUkk1c0JVUXNCclFBTEFBUlZpd0ZTOGJzUlVjUGxtd0FFVllzQk12RzdFVEVENVpzQUJGV0xBWEx4dXhGeEErV2JBQVJWaXdDeThic1FzU1BsbXlCZ01LSzFnaDJCdjBXYkFYRUxBUTBMQVFMN0lZRXhVUkVqbXdHQyt5RWdFS0sxZ2gyQnYwV2JJYUZSTVJFamt3TVNFWEJ3WUhCaGNXTnhjR0l5SW1OelkzQXlFREl3RXpBUUVoQXdSbEJFRjZDUWRCSUVNRVJGTk9Yd0lEeUVMOXNzZkpBeGVsQVNEOUJ3SGZlUU12V2xrL0FnRWFlU3RsVXBweEFXditoQVd3K2xBQ0dnS25BQUlBTS81UEE4OEVVUUF2QURvQW5iSVRPendSRWptd0V4Q3dNZEFBc0FCRldMQW5MeHV4SnhnK1diQUFSVml3Q3k4YnNRc1NQbG13QUVWWXNCUXZHN0VVRUQ1WnNBQkZXTEF2THh1eEx4QStXYkFMRUxJR0F3b3JXQ0hZRy9SWnNDOFFzQkRRc0JBdnNoSW5GQkVTT2JJYUp4UVJFam13R2krd0p4Q3lId0VLSzFnaDJCdjBXYklpR2ljUkVqbXdGQkN5TUFFS0sxZ2gyQnYwV2JBYUVMSTFBUW9yV0NIWUcvUlpNREVoRndjR0J3WVhGamNYQmlNaUpqYzJOeWMzQmljbUpqYzJKRE1YTnpZbUp5WUdCd2MrQWhjV0ZnY0RCd1lYQnlVV05qYzNKeUlHQndZV0EwUUVRWG9KQjBFZ1F3UkVVMDVmQWdQTEF3T1ZwNCt6Q0FvQkdlVzlEQXBmWDEyUEVMWUpnc3h0cWJ3UFdBVUNEZ0wrTEZlYk9DZUpxN1lNQ1ZrREwxcFpQd0lCR25rclpWS2FjakF3aWdRQ3NZV3N3UUZXWVhFQ0FsOU9BVitUVVFJRXhhUDk2RTAzTmhHTUFsZE4zd0ZzWTB4bC8vOEFkUC9tQlBrSFZRSW1BQ2NBQUFFSEFIVUIvd0ZYQUFrQXNBMHZzQ0xjTURFQS8vOEFSdi9wQStZRi9nSW1BRWNBQUFFSEFIVUJLZ0FBQUFrQXNCRXZzQ1BjTURFQS8vOEFkUC9tQlBrSFZ3SW1BQ2NBQUFFSEFKMEJCUUZYQUFrQXNBMHZzQ0hjTURFQS8vOEFSdi9wQStZR0FBSW1BRWNBQUFFR0FKMHdBQUFKQUxBUkw3QWkzREF4QVAvL0FIVC81Z1Q1Qnh3Q0pnQW5BQUFCQndDaEFkd0JWd0FKQUxBTkw3QXAzREF4QVAvL0FFYi82UVBtQmNVQ0pnQkhBQUFCQndDaEFRY0FBQUFKQUxBUkw3QXEzREF4QVAvL0FIVC81Z1Q1QjFrQ0pnQW5BQUFCQndDZUFSb0JXQUFKQUxBTkw3QWszREF4QVAvL0FFYi82UVBtQmdJQ0pnQkhBQUFCQmdDZVJRRUFDUUN3RVMrd0pkd3dNUUQvL3dBN0FBQUUxUWRFQWlZQUtBQUFBUWNBbmdEU0FVTUFDUUN3QVMrd0d0d3dNUUQvL3dCTC8rZ0ZwZ1lDQUNZQVNBQUFBQWNCb2dTWEJSUC8vd0E3QUFBRXNRYjZBaVlBS1FBQUFRY0FjQURTQVVvQUNRQ3dCaSt3RE53d01RRC8vd0JGLytvRUN3VzRBaVlBU1FBQUFRWUFjRnNJQUFrQXNBZ3ZzQ0RjTURFQS8vOEFPd0FBQkxFSEd3SW1BQ2tBQUFFSEFLQUEvQUZEQUFrQXNBWXZzQS9jTURFQS8vOEFSZi9xQStBRjJRSW1BRWtBQUFFSEFLQUFoUUFCQUFrQXNBZ3ZzQ1BjTURFQS8vOEFPd0FBQkxFSEJ3SW1BQ2tBQUFFSEFLRUJuZ0ZDQUFrQXNBWXZzQlhjTURFQS8vOEFSZi9xQStBRnhRSW1BRWtBQUFFSEFLRUJKd0FBQUFrQXNBZ3ZzQ25jTURFQUFBRUFPLzVQQkxFRnNBQWNBSUN5RkIwZUVSSTVBTEFBUlZpd0Z5OGJzUmNjUGxtd0FFVllzQkF2RzdFUUVqNVpzQUJGV0xBRUx4dXhCQkErV2JBQVJWaXdGUzhic1JVUVBsbXlIQmNFRVJJNXNCd3ZzZ0FCQ2l0WUlkZ2I5Rm13RlJDeUFnRUtLMWdoMkJ2MFdiQUQwTEFRRUxJTEF3b3JXQ0hZRy9SWnNCY1FzaGtCQ2l0WUlkZ2I5Rmt3TVFFaEF5RUhJeGNIQmdjR0Z4WTNGd1lqSWlZM05qY2hFeUVISVFNaEE5RDluRm9DeUJ4TEJFRjZDUWRCSUVNRVJGTk9Yd0lEcS8xNy9RTjVIUDFEVVFKa0FxSDkvSjBETDFwWlB3SUJHbmtyWlZLUmFRV3dudjRzQUFBQ0FFWCthQVBaQkZFQUpnQXVBSDZ5QkM4d0VSSTVzQVFRc0NqUUFMQU1MN0FBUlZpd0dpOGJzUm9ZUGxtd0FFVllzQkV2RzdFUkVENVpzaVFCQ2l0WUlkZ2I5Rm15QWhFa0VSSTVzQXdRc2djRENpdFlJZGdiOUZteUt4b1JFUkk1c0NzdnRMOHJ6eXNDWGJJZ0FRb3JXQ0hZRy9SWnNpWWFFUkVTT2JBYUVMSW5BUW9yV0NIWUcvUlpNREVsQmdjSEJnY0dGeFkzRndZaklpWTNOamN1QWpjM05oSTJGeFlXRnhZSEJ5RUdGaGNXTndNbUJnY0ZOelltQTR0VGhUdDFDZ2RCSUVNRVJGTk9Yd0lEY0h5MFZnc0ZFWjNpZzZlK0NRTUhDLzA5RW9XRW9JakVjS2N4QWc0RUVIRzdkelVyVjFrL0FnRWFlU3RsVW5KZENvbm9peXVoQVFxSEF3VFd0MEZCVTVQT0JBU1VBcVFEbnB3QkVINm4vLzhBT3dBQUJMRUhSQUltQUNrQUFBRUhBSjRBM0FGREFBa0FzQVl2c0JEY01ERUEvLzhBUmYvcUErVUdBZ0ltQUVrQUFBRUdBSjVsQVFBSkFMQUlMN0FrM0RBeEFQLy9BSG4vNmdVR0IxY0NKZ0FyQUFBQkJ3Q2RBUDBCVndBSkFMQU1MN0FqM0RBeEFQLy9BQVQrVHdRb0JnQUNKZ0JMQUFBQkJnQ2RVd0FBQ1FDd0JDK3dLOXd3TVFELy93QjUvK29GQmdjd0FpWUFLd0FBQVFjQW9BRXlBVmdBQ1FDd0RDK3dKZHd3TVFELy93QUUvazhFS0FYWkFpWUFTd0FBQVFjQW9BQ0lBQUVBQ1FDd0JDK3dMZHd3TVFELy93QjUvK29GQmdjY0FpWUFLd0FBQVFjQW9RSFVBVmNBQ1FDd0RDK3dLOXd3TVFELy93QUUvazhFS0FYRkFpWUFTd0FBQVFjQW9RRXFBQUFBQ1FDd0JDK3dNOXd3TVFELy93QjUvZllGQmdYSEFpWUFLd0FBQUFjQm9nRlkvcGYvL3dBRS9rOEVLQWFWQWlZQVN3QUFBUWNCdVFFeUFGZ0FDUUN3QkMrd0x0d3dNUUQvL3dBN0FBQUZkd2RDQWlZQUxBQUFBUWNBblFFaEFVSUFDUUN3Qmkrd0Rkd3dNUUQvL3dBZkFBQUQ0d2RCQWlZQVRBQUFBUWNBblFCVUFVRUFEZ0N3RVMrd0ZOeXkzeFFCWFRBeC8vOEFTUUFBQXpRSExRSW1BQzBBQUFFSEFLVC9oZ0ZHQUFrQXNBSXZzQTdjTURFQS8vOEFFUUFBQXVJRjZRSW1BSXdBQUFFSEFLVC9OQUFDQUFrQXNBSXZzQTdjTURFQS8vOEFTUUFBQXprRytnSW1BQzBBQUFFSEFIRC9pUUZLQUFrQXNBSXZzQVRjTURFQS8vOEFHZ0FBQXVjRnRnSW1BSXdBQUFFSEFIRC9Od0FHQUFrQXNBSXZzQVRjTURFQS8vOEFTUUFBQXY4SEd3SW1BQzBBQUFFSEFLRC9zd0ZEQUFrQXNBSXZzQWZjTURFQS8vOEFMZ0FBQXEwRjJBSW1BSXdBQUFFSEFLRC9ZUUFBQUFrQXNBSXZzQWZjTURFQS8vLy9qdjVZQWdFRnNBSW1BQzBBQUFBR0FLUGZDZi8vLzNEK1R3SGpCY2NDSmdCTkFBQUFCZ0Nqd1FELy93QkpBQUFDTndjSEFpWUFMUUFBQVFjQW9RQlVBVUlBQ1FDd0FpK3dEZHd3TVFELy93QkovK1lHY0FXd0FDWUFMUUFBQUFjQUxnSW1BQUQvL3dBdi9rWUR3UVhIQUNZQVRRQUFBQWNBVGdIc0FBRC8vd0FLLytZRkNnYzFBaVlBTGdBQUFRY0FuUUdtQVRVQUNRQ3dBQyt3RWR3d01RRC8vLzhKL2tZQ2xnWFlBaVlBbXdBQUFRY0FuZjh5LzlnQUNRQ3dBQyt3RHR3d01RRC8vd0E3L2xnRlVBV3dBaVlBTHdBQUFBY0JvZ0ZhL3ZuLy93QWcva1VFR2dZQUFpWUFUd0FBQUFjQm9nRFkvdWIvL3dBN0FBQURzUWN2QWlZQU1BQUFBUWNBZFFCbEFURUFDUUN3QkMrd0NOd3dNUUQvL3dBdkFBQUREZ2VVQWlZQVVBQUFBUWNBZFFCcEFaWUFDUUN3QWkrd0J0d3dNUUQvL3dBNy9na0RzUVd3QWlZQU1BQUFBQWNCb2dFbC9xci8vLytqL2drQjdnWUFBaVlBVUFBQUFBY0Jvdi9BL3FyLy93QTdBQUFEc1FXeEFpWUFNQUFBQVFjQm9nS2FCTUlBRUFDd0FFVllzQW92RzdFS0hENVpNREgvL3dBdkFBQURPd1lDQUNZQVVBQUFBQWNCb2dJc0JSUC8vd0E3QUFBRHNRV3dBaVlBTUFBQUFBY0FvUUZNL2NYLy93QXZBQUFDckFZQUFDWUFVQUFBQUFjQW9RREovYmIvL3dBN0FBQUZkd2MwQWlZQU1nQUFBUWNBZFFJbkFUWUFDUUN3QlMrd0ROd3dNUUQvL3dBZkFBQUVBUVgrQWlZQVVnQUFBUWNBZFFGY0FBQUFDUUN3QXkrd0Zkd3dNUUQvL3dBNy9na0Zkd1d3QWlZQU1nQUFBQWNCb2dHRy9xci8vd0FmL2drRDR3UlNBaVlBVWdBQUFBY0JvZ0R1L3FyLy93QTdBQUFGZHdjNEFpWUFNZ0FBQVFjQW5nRkNBVGNBQ1FDd0JTK3dEdHd3TVFELy93QWZBQUFEOXdZQ0FpWUFVZ0FBQVFZQW5uY0JBQWtBc0FNdnNCZmNNREVBLy84QUh3QUFBK01HQkFJbUFGSUFBQUFIQWFJQVJRVVYvLzhBZC8vbkJRMEc4QUltQURNQUFBRUhBSEFCSlFGQUFBa0FzQW92c0NQY01ERUEvLzhBUmYvb0JCOEZ1QUltQUZNQUFBRUdBSEJrQ0FBSkFMQUFMN0FqM0RBeEFQLy9BSGYvNXdVTkJ4RUNKZ0F6QUFBQkJ3Q2dBVThCT1FBSkFMQUtMN0FtM0RBeEFQLy9BRVgvNkFRZkJka0NKZ0JUQUFBQkJ3Q2dBSTRBQVFBSkFMQUFMN0FtM0RBeEFQLy9BSGYvNXdWVUJ6Y0NKZ0F6QUFBQkJ3Q2xBWllCT0FBTUFMQUtMN0FsM0xBbjBEQXgvLzhBUmYvb0JKTUYvd0ltQUZNQUFBRUhBS1VBMVFBQUFBd0FzQUF2c0NYY3NDZlFNREgvL3dBNkFBQUV3Z2MwQWlZQU5nQUFBUWNBZFFHMkFUWUFDUUN3QkMrd0d0d3dNUUQvL3dBZkFBQURZUVgrQWlZQVZnQUFBUWNBZFFDOEFBQUFDUUN3Q2krd0Q5d3dNUUQvL3dBNi9na0V3Z1d3QWlZQU5nQUFBQWNCb2dFZC9xci8vLytmL2drQzFBUlVBaVlBVmdBQUFBY0Jvdis4L3FyLy93QTZBQUFFd2djNEFpWUFOZ0FBQVFjQW5nRFJBVGNBQ1FDd0JDK3dITnd3TVFELy93QWZBQUFEV0FZQ0FpWUFWZ0FBQVFZQW50Z0JBQWtBc0FvdnNCSGNNREVBLy84QUovL3BCS01ITmdJbUFEY0FBQUVIQUhVQndnRTRBQWtBc0FvdnNDdmNNREVBLy84QUx2L3BBK3dGL2dJbUFGY0FBQUVIQUhVQlJ3QUFBQWtBc0FndnNDbmNNREVBLy84QUovL3BCS01IT0FJbUFEY0FBQUVIQUowQXlBRTRBQWtBc0FvdnNDcmNNREVBLy84QUx2L3BBN1lHQUFJbUFGY0FBQUVHQUoxTkFBQUpBTEFJTDdBbzNEQXhBUC8vQUNmK1N3U2pCY2NDSmdBM0FBQUFCd0I1QVpJQUFQLy9BQzcrUXdPMkJGQUNKZ0JYQUFBQUJ3QjVBVnYvK1AvL0FDZjkvd1NqQmNjQ0pnQTNBQUFBQndHaUFTeitvUC8vQUM3OTlnTzJCRkFDSmdCWEFBQUFCd0dpQVBYK2wvLy9BQ2YvNlFTakJ6b0NKZ0EzQUFBQkJ3Q2VBTjBCT1FBSkFMQUtMN0F0M0RBeEFQLy9BQzcvNlFQaUJnSUNKZ0JYQUFBQkJnQ2VZZ0VBQ1FDd0NDK3dLOXd3TVFELy93Q28vZjhGQ1FXd0FpWUFPQUFBQUFjQm9nRWUvcUQvL3dCRC9mOENsQVZBQWlZQVdBQUFBQWNCb2dDQy9xRC8vd0NvL2tzRkNRV3dBaVlBT0FBQUFBY0FlUUdFQUFELy93QkQva3NDbEFWQUFpWUFXQUFBQUFjQWVRRG9BQUQvL3dDb0FBQUZDUWM0QWlZQU9BQUFBUWNBbmdEU0FUY0FDUUN3Qmkrd0ROd3dNUUQvL3dCRC8rMERqUVo1QUNZQVdBQUFBQWNCb2dKK0JZci8vd0JuLytjRklBY2hBaVlBT1FBQUFRY0FwQUQ4QVRvQUNRQ3dBQyt3SGR3d01RRC8vd0JiLytnRUhnWHJBaVlBV1FBQUFRWUFwR1VFQUFrQXNBWXZzQjdjTURFQS8vOEFaLy9uQlNBRzdnSW1BRGtBQUFFSEFIQUEvd0UrQUFrQXNBQXZzQlBjTURFQS8vOEFXLy9vQkI0RnVBSW1BRmtBQUFFR0FIQm9DQUFKQUxBR0w3QVUzREF4QVAvL0FHZi81d1VnQnc4Q0pnQTVBQUFCQndDZ0FTa0JOd0FKQUxBQUw3QVczREF4QVAvL0FGdi82QVFlQmRrQ0pnQlpBQUFCQndDZ0FKSUFBUUFKQUxBR0w3QVgzREF4QVAvL0FHZi81d1VnQjVJQ0pnQTVBQUFCQndDaUFYa0JRUUFNQUxBQUw3QWMzTEFmMERBeC8vOEFXLy9vQkI0R1hBSW1BRmtBQUFFSEFLSUE0Z0FMQUF3QXNBWXZzQjNjc0NEUU1ESC8vd0JuLytjRkxnYzFBaVlBT1FBQUFRY0FwUUZ3QVRZQURBQ3dBQyt3RmR5d0Y5QXdNZi8vQUZ2LzZBU1hCZjhDSmdCWkFBQUJCd0NsQU5rQUFBQU1BTEFHTDdBVzNMQVkwREF4QUFFQVovNTdCU2dGc0FBZkFGQUFzQUJGV0xBWEx4dXhGeHcrV2JBQVJWaXdEUzhic1EwU1BsbXdBRVZZc0JJdkc3RVNFRDVac2hzQkNpdFlJZGdiOUZteUJCSWJFUkk1c0EwUXNnZ0RDaXRZSWRnYjlGbXdGeEN3SDlBd01RRURCZ1lIQmdjR0Z4WTNGd1lqSWlZM05qY21BamNUTXdNR0ZoY1dOamNUQlNpb0Y3MldsUWtIUVNCREJFUlRUbDhDQkZiWjhSbW91YWNSaW95WTBSdW9CYkQ4SjUvME5tZGdQd0lCR25rclpWSm5VZ1lCRDlZRDJ2d2xtYThFQnJHZ0E5d0FBUUJiL2s4RUhnUTZBQ01BWXdDd0FFVllzQmd2RzdFWUdENVpzQUJGV0xBVEx4dXhFeEErV2JBQVJWaXdJeThic1NNUVBsbXdBRVZZc0Fzdkc3RUxFajVac2dZRENpdFlJZGdiOUZtd0l4Q3dFTkN5RVJNWUVSSTVzQk1Rc2g0QkNpdFlJZGdiOUZtd0dCQ3dJZEF3TVNFWEJ3WUhCaGNXTnhjR0l5SW1OelkzTndZbkppWTNFek1EQmhjV0ZoY1dOeE16QXdOVUJFRjZDUWRCSUVNRVJGTk9Yd0lEeEJSL3hKdVZFM1MxZFFVREJVeEV3bXFJdGJ3REwxcFpQd0lCR25rclpWS1hjVjJEQkFUV3VRSzcvVUlzS2toU0F3YWpBeFQ3eGdELy93RERBQUFIUVFjMkFpWUFPd0FBQVFjQW5RSGNBVFlBQ1FDd0F5K3dGTnd3TVFELy93Q0FBQUFGL2dZQUFpWUFXd0FBQVFjQW5RRWJBQUFBQ1FDd0FTK3dEdHd3TVFELy93Q29BQUFGTWdjMkFpWUFQUUFBQVFjQW5RRERBVFlBQ1FDd0FTK3dDdHd3TVFELy8vK2wva1VEN0FZQUFpWUFYUUFBQVFZQW5TUUFBQWtBc0FFdnNCSGNNREVBLy84QXFBQUFCVElHL1FJbUFEMEFBQUVIQUdvQS9RRTJBQXdBc0FFdnNCN2NzQW5RTURILy8vL3JBQUFFemdjMEFpWUFQZ0FBQVFjQWRRRzhBVFlBQ1FDd0J5K3dETnd3TVFELy8vL3RBQUFEemdYK0FpWUFYZ0FBQVFjQWRRRWtBQUFBQ1FDd0J5K3dETnd3TVFELy8vL3JBQUFFemdiN0FpWUFQZ0FBQVFjQW9RR1pBVFlBQ1FDd0J5K3dFOXd3TVFELy8vL3RBQUFEemdYRkFpWUFYZ0FBQVFjQW9RRUJBQUFBQ1FDd0J5K3dFOXd3TVFELy8vL3JBQUFFemdjNEFpWUFQZ0FBQVFjQW5nRFhBVGNBQ1FDd0J5K3dEdHd3TVFELy8vL3RBQUFEemdZQ0FpWUFYZ0FBQVFZQW5qOEJBQWtBc0FjdnNBN2NNREVBLy8vL2hBQUFCM2dIUUFJbUFJRUFBQUVIQUhVQzl3RkNBQk1Bc0FCRldMQUdMeHV4Qmh3K1diQVYzREF4QVAvL0FCUC82QVpoQmY4Q0pnQ0dBQUFCQndCMUFuTUFBUUFUQUxBQVJWaXdGeThic1JjWVBsbXdSTnd3TVFELy93QWcvNlFGbkFkK0FpWUFnd0FBQVFjQWRRSW9BWUFBRXdDd0FFVllzQTB2RzdFTkhENVpzRERjTURFQS8vOEFPZjk2QkNvRi9nSW1BSWtBQUFFSEFIVUJPUUFBQUJNQXNBQkZXTEFBTHh1eEFCZytXYkF1M0RBeEFQLy8vN0FBQUFRUEJJMENKZ0c5QUFBQkJ3SGUveDMvZUFBc0FMSWZHUUZ4dE44Wjd4a0NjYlFmR1M4WkFsMnlieGtCY3JKUEdRRnh0TzhaL3hrQ1hiSmZHUUZkTURILy8vK3dBQUFFRHdTTkFpWUJ2UUFBQVFjQjN2OGQvM2dBTEFDeUh4a0JjYlRmR2U4WkFuRzBIeGt2R1FKZHNtOFpBWEt5VHhrQmNiVHZHZjhaQWwyeVh4a0JYVEF4Ly84QWJRQUFCRUlFalFJbUFjMEFBQUVHQWQ0OTRBQUlBTElBQ3dGZE1ESC8vLytsQUFBRDR3WWNBaVlCdWdBQUFRY0FSQURnQUI0QUV3Q3dBRVZZc0FRdkc3RUVHajVac0F6Y01ERUEvLy8vcFFBQUJBOEdIQUltQWJvQUFBRUhBSFVCYWdBZUFBa0FzQVF2c0EzY01ERUEvLy8vcFFBQUErTUdIZ0ltQWJvQUFBRUdBSjF3SGdBVEFMQUFSVml3QkM4YnNRUWFQbG13RU53d01RRC8vLytsQUFBRUpnWUpBaVlCdWdBQUFRWUFwSGdpQUFrQXNBUXZzQlhjTURFQS8vLy9wUUFBQS93RjVRSW1BYm9BQUFFSEFHb0FxZ0FlQUF3QXNBUXZzQ0Rjc0F2UU1ESC8vLytsQUFBRDR3WjZBaVlCdWdBQUFRY0FvZ0QxQUNrQURBQ3dCQyt3Rk55d0Y5QXdNZi8vLzZVQUFBUVVCbnNDSmdHNkFBQUFCd0hmQVBrQUN2Ly9BRWYrU0FRM0JLTUNKZ0c4QUFBQUJ3QjVBV2ovL2YvL0FCMEFBQVB2Qmh3Q0pnRytBQUFCQndCRUFMUUFIZ0FUQUxBQVJWaXdCaThic1FZYVBsbXdEZHd3TVFELy93QWRBQUFEN3dZY0FpWUJ2Z0FBQVFjQWRRRStBQjRBQ1FDd0JpK3dEdHd3TVFELy93QWRBQUFEN3dZZUFpWUJ2Z0FBQVFZQW5VUWVBQWtBc0FZdnNBM2NNREVBLy84QUhRQUFBKzhGNVFJbUFiNEFBQUVHQUdwK0hnQU1BTEFHTDdBaDNMQU0wREF4Ly84QUtnQUFBY1VHSEFJbUFjSUFBQUVHQUVTYUhnQVRBTEFBUlZpd0FpOGJzUUlhUGxtd0Jkd3dNUUQvL3dBcUFBQUN5QVljQWlZQndnQUFBUVlBZFNNZUFBa0FzQUl2c0FiY01ERUEvLzhBS2dBQUFvNEdIZ0ltQWNJQUFBRUhBSjMvS2dBZUFBa0FzQUl2c0FYY01ERUEvLzhBS2dBQUFyWUY1UUltQWNJQUFBRUhBR3IvWkFBZUFBd0FzQUl2c0JuY3NBVFFNREgvL3dBZEFBQUVtZ1lKQWlZQnh3QUFBUWNBcEFDaUFDSUFDUUN3QlMrd0ZOd3dNUUQvL3dCSy8rb0VUZ1ljQWlZQnlBQUFBUWNBUkFENEFCNEFFd0N3QUVWWXNBZ3ZHN0VJR2o1WnNDSGNNREVBLy84QVN2L3FCRTRHSEFJbUFjZ0FBQUVIQUhVQmdnQWVBQWtBc0FndnNDTGNNREVBLy84QVN2L3FCRTRHSGdJbUFjZ0FBQUVIQUowQWlBQWVBQWtBc0FndnNDSGNNREVBLy84QVN2L3FCRTRHQ1FJbUFjZ0FBQUVIQUtRQWtBQWlBQWtBc0FndnNDcmNNREVBLy84QVN2L3FCRTRGNVFJbUFjZ0FBQUVIQUdvQXdnQWVBQXdBc0FndnNEWGNzQ0RRTURILy93QkYvK29FVndZY0FpWUJ6Z0FBQVFjQVJBRGFBQjRBRXdDd0FFVllzQWt2RzdFSkdqNVpzQlBjTURFQS8vOEFSZi9xQkZjR0hBSW1BYzRBQUFFSEFIVUJaQUFlQUFrQXNBQXZzQlRjTURFQS8vOEFSZi9xQkZjR0hnSW1BYzRBQUFFR0FKMXFIZ0FKQUxBQUw3QVQzREF4QVAvL0FFWC82Z1JYQmVVQ0pnSE9BQUFCQndCcUFLUUFIZ0FNQUxBQUw3QW4zTEFTMERBeC8vOEFkQUFBQkdVR0hBSW1BZElBQUFFSEFIVUJPZ0FlQUFrQXNBRXZzQXZjTURFQS8vLy9wUUFBQkNzRjFnSW1BYm9BQUFFR0FIQjdKZ0FKQUxBRUw3QUwzREF4QVAvLy82VUFBQVB4QmZjQ0pnRzZBQUFCQndDZ0FLVUFId0FKQUxBRUw3QU8zREF4QUFBQy82WCtUd1BqQkkwQUZnQVpBR3V5RkJvYkVSSTVzQlFRc0JuUUFMQUFSVml3RkM4YnNSUWFQbG13QUVWWXNCSXZHN0VTRUQ1WnNBQkZXTEFXTHh1eEZoQStXYkFBUlZpd0NpOGJzUW9TUGxteUJRTUtLMWdoMkJ2MFdiSVhFaFFSRWptd0Z5K3lFUUVLSzFnaDJCdjBXYklaRkJJUkVqa3dNU0VIQmdjR0Z4WTNGd1lqSWlZM05qY0RJUU1qQVRNQkFTRURBOEZCZWdrSFFTQkRCRVJUVGw4Q0E4ODEvZ21jd1FLYm9nRUIvWE1CaEdneVdsay9BZ0VhZVN0bFVwcDFBUUwrNlFTTiszTUJyZ0g3Ly84QVIvL3NCRGNHSEFJbUFid0FBQUVIQUhVQmJ3QWVBQWtBc0FzdnNCL2NNREVBLy84QVIvL3NCRGNHSGdJbUFid0FBQUVHQUoxMUhnQUpBTEFMTDdBZTNEQXhBUC8vQUVmLzdBUTNCZU1DSmdHOEFBQUJCd0NoQVV3QUhnQUpBTEFMTDdBbTNEQXhBUC8vQUVmLzdBUTNCaUFDSmdHOEFBQUJCd0NlQUlvQUh3QUpBTEFMTDdBaDNEQXhBUC8vQUIwQUFBUVBCaUFDSmdHOUFBQUJCZ0NlTlI4QUNRQ3dBUyt3R3R3d01RRC8vd0FkQUFBRC93WFdBaVlCdmdBQUFRWUFjRThtQUFrQXNBWXZzQXpjTURFQS8vOEFIUUFBQSs4Rjl3SW1BYjRBQUFFR0FLQjVId0FKQUxBR0w3QVAzREF4QVAvL0FCMEFBQVB2QmVNQ0pnRytBQUFCQndDaEFSc0FIZ0FKQUxBR0w3QVYzREF4QUFBQkFCMytUd1B2QkkwQUhBQ01zaEVkSGhFU09RQ3dBRVZZc0Jjdkc3RVhHajVac0FCRldMQVFMeHV4RUJJK1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNCVXZHN0VWRUQ1WnNod1hCQkVTT2JBY0w3UWZIQzhjQWwyeXZ4d0JYYklBQVFvcldDSFlHL1Jac0JVUXNnSUJDaXRZSWRnYjlGbXdBOUN3RUJDeUN3TUtLMWdoMkJ2MFdiQVhFTElaQVFvcldDSFlHL1JaTURFQklRTWhCeU1YQndZSEJoY1dOeGNHSXlJbU56WTNJUk1oQnlFRElRTXgvZjFDQWxrYlB3UkJlZ2tIUVNCREJFUlRUbDhDQTZ2OTVjc0RCeHY5cmpvQ0JBSU8vb21YQXk5YVdUOENBUnA1SzJWU2tXa0VqWm4rc2dELy93QWRBQUFEN3dZZ0FpWUJ2Z0FBQVFZQW5sa2ZBQWtBc0FZdnNCRGNNREVBLy84QVRQL3VCRUVHSGdJbUFjQUFBQUVHQUoxekhnQUpBTEFMTDdBaDNEQXhBUC8vQUV6LzdnUkJCZmNDSmdIQUFBQUJCd0NnQUtnQUh3QUpBTEFMTDdBajNEQXhBUC8vQUV6LzdnUkJCZU1DSmdIQUFBQUJCd0NoQVVvQUhnQUpBTEFMTDdBcDNEQXhBUC8vQUV6OS9BUkJCS01DSmdIQUFBQUFCd0dpQVFmK25mLy9BQjBBQUFTYUJoNENKZ0hCQUFBQkJ3Q2RBSkVBSGdBSkFMQUdMN0FOM0RBeEFQLy9BQThBQUFMZ0Jna0NKZ0hDQUFBQkJ3Q2sveklBSWdBSkFMQUNMN0FPM0RBeEFQLy9BQmdBQUFMbEJkWUNKZ0hDQUFBQkJ3QncvelVBSmdBSkFMQUNMN0FFM0RBeEFQLy9BQ29BQUFLckJmY0NKZ0hDQUFBQkJ3Q2cvMThBSHdBSkFMQUNMN0FIM0RBeEFQLy8vM3IrVHdHcUJJMENKZ0hDQUFBQUJnQ2p5d0QvL3dBcUFBQUI0d1hqQWlZQndnQUFBUVlBb1FBZUFBa0FzQUl2c0EzY01ERUEvLy8vOXYvckJHZ0dIZ0ltQWNNQUFBRUhBSjBCQkFBZUFBa0FzQUF2c0JEY01ERUEvLzhBSGY0RkJIOEVqUUltQWNRQUFBQUhBYUlBei82bS8vOEFIUUFBQXlNR0hBSW1BY1VBQUFFR0FIVVhIZ0FKQUxBRUw3QUkzREF4QVAvL0FCMytCd01qQkkwQ0pnSEZBQUFBQndHaUFNeitxUC8vQUIwQUFBTWpCSTRDSmdIRkFBQUJCd0dpQWhNRG53QVFBTEFBUlZpd0NpOGJzUW9hUGxrd01mLy9BQjBBQUFNakJJMENKZ0hGQUFBQUJ3Q2hBT0Q5Ti8vL0FCMEFBQVNhQmh3Q0pnSEhBQUFCQndCMUFaUUFIZ0FKQUxBRkw3QU0zREF4QVAvL0FCMytBd1NhQkkwQ0pnSEhBQUFBQndHaUFTVCtwUC8vQUIwQUFBU2FCaUFDSmdISEFBQUJCd0NlQUs4QUh3QUpBTEFGTDdBTzNEQXhBUC8vQUVyLzZnUk9CZFlDSmdISUFBQUJCd0J3QUpNQUpnQUpBTEFJTDdBZzNEQXhBUC8vQUVyLzZnUk9CZmNDSmdISUFBQUJCd0NnQUwwQUh3QUpBTEFJTDdBajNEQXhBUC8vQUVyLzZnVENCaDBDSmdISUFBQUJCd0NsQVFRQUhnQU1BTEFJTDdBaTNMQWswREF4Ly84QUhRQUFCQUVHSEFJbUFjc0FBQUVIQUhVQkx3QWVBQWtBc0FRdnNCbmNNREVBLy84QUhmNEhCQUVFalFJbUFjc0FBQUFIQWFJQXlmNm8vLzhBSFFBQUJBRUdJQUltQWNzQUFBRUdBSjVLSHdBSkFMQUVMN0FiM0RBeEFQLy9BQkgvNndQdEJod0NKZ0hNQUFBQkJ3QjFBVVVBSGdBSkFMQUtMN0FxM0RBeEFQLy9BQkgvNndQdEJoNENKZ0hNQUFBQkJnQ2RTeDRBQ1FDd0NpK3dLZHd3TVFELy93QVIva3NEN1FTZEFpWUJ6QUFBQUFjQWVRRkpBQUQvL3dBUi8rc0Q3UVlnQWlZQnpBQUFBUVlBbm1BZkFBa0FzQW92c0N6Y01ERUEvLzhBYmY0QkJFSUVqUUltQWMwQUFBQUhBYUlBei82aS8vOEFiUUFBQkVJR0lBSW1BYzBBQUFFR0FKNVVId0FKQUxBR0w3QU0zREF4QVAvL0FHMytUUVJDQkkwQ0pnSE5BQUFBQndCNUFUVUFBdi8vQUVYLzZnUlhCZ2tDSmdIT0FBQUJCZ0NrY2lJQUNRQ3dBQyt3SE53d01RRC8vd0JGLytvRVZ3WFdBaVlCemdBQUFRWUFjSFVtQUFrQXNBQXZzQkxjTURFQS8vOEFSZi9xQkZjRjl3SW1BYzRBQUFFSEFLQUFud0FmQUFrQXNBQXZzQlhjTURFQS8vOEFSZi9xQkZjR2VnSW1BYzRBQUFFSEFLSUE3d0FwQUF3QXNBQXZzQnZjc0I3UU1ESC8vd0JGLytvRXBBWWRBaVlCemdBQUFRY0FwUURtQUI0QURBQ3dBQyt3Rk55d0Z0QXdNUUFCQUVYK2RBUlhCSTBBSUFCaHNna2hJaEVTT1FDd0FFVllzQ0F2RzdFZ0dqNVpzQUJGV0xBWUx4dXhHQm8rV2JBQVJWaXdEaThic1E0U1BsbXdBRVZZc0JNdkc3RVRFRDVac2dRVElCRVNPYkFPRUxJSkF3b3JXQ0hZRy9SWnNCTVFzaHdCQ2l0WUlkZ2I5Rmt3TVFFREJnWUhCZ1lIQmhjV054Y0dJeUltTnpZM0ppWTNFek1EQmhZWEZqWTNFd1JYZ3hPa2dGUktCQWRCSUVNRVJGTk9Yd0lFWXJUSEU0T3poQTExZEhxcEZZUUVqZnoxaDhjcU8yQXZQd0lCR25rclpWSndWUTNhcWdNTS9QTjFnUU1FZ25zRERRRC8vd0NWQUFBR0tRWWVBaVlCMEFBQUFRY0FuUUUzQUI0QUNRQ3dFaSt3Rk53d01RRC8vd0IwQUFBRVpRWWVBaVlCMGdBQUFRWUFuVUFlQUFrQXNBRXZzQXJjTURFQS8vOEFkQUFBQkdVRjVRSW1BZElBQUFFR0FHcDZIZ0FNQUxBQkw3QWUzTEFKMERBeC8vLy8zQUFBQkE0R0hBSW1BZE1BQUFFSEFIVUJPZ0FlQUFrQXNBY3ZzQXpjTURFQS8vLy8zQUFBQkE0RjR3SW1BZE1BQUFFSEFLRUJGd0FlQUFrQXNBY3ZzQlBjTURFQS8vLy8zQUFBQkE0R0lBSW1BZE1BQUFFR0FKNVZId0FKQUxBSEw3QU8zREF4QVAvLy82OEFBQVNMQmo4Q0pnQWxBQUFBQmdDdEJBRC8vd0JqQUFBRkZRWS9BQ1lBS1dRQUFBY0FyZjlDQUFELy93QnhBQUFGMndaQkFDWUFMR1FBQUFjQXJmOVFBQUwvL3dCM0FBQUNaUVpBQUNZQUxXUUFBQWNBcmY5V0FBSC8vd0JxLytjRklRWS9BQ1lBTXhRQUFBY0FyZjlKQUFELy8vL3VBQUFGbGdZL0FDWUFQV1FBQUFjQXJmN05BQUQvL3dBZUFBQUU3Z1kvQUNZQXVSUUFBQWNBcmY5TUFBRC8vd0FnLy9RREd3WjBBaVlBd2dBQUFRY0Fydjh0Lyt3QUhBQ3dBRVZZc0E0dkc3RU9HRDVac0J2Y3NCSFFzQnNRc0NUUU1ESC8vLyt2QUFBRWl3V3dBZ1lBSlFBQS8vOEFPd0FBQktBRnNBSUdBQ1lBQVAvL0FEc0FBQVN4QmJBQ0JnQXBBQUQvLy8vckFBQUV6Z1d3QWdZQVBnQUEvLzhBT3dBQUJYY0ZzQUlHQUN3QUFQLy9BRWtBQUFJQkJiQUNCZ0F0QUFELy93QTdBQUFGVUFXd0FnWUFMd0FBLy84QU93QUFCcmNGc0FJR0FERUFBUC8vQURzQUFBVjNCYkFDQmdBeUFBRC8vd0IzLytjRkRRWElBZ1lBTXdBQS8vOEFPd0FBQlBNRnNBSUdBRFFBQVAvL0FLZ0FBQVVKQmJBQ0JnQTRBQUQvL3dDb0FBQUZNZ1d3QWdZQVBRQUEvLy8vMUFBQUJTc0ZzQUlHQUR3QUFQLy9BRWtBQUFNS0J3a0NKZ0F0QUFBQkJ3QnEvN2dCUWdBTUFMQUNMN0FaM0xBRTBEQXgvLzhBcUFBQUJUSUcvUUltQUQwQUFBRUhBR29BL1FFMkFBd0FzQUV2c0I3Y3NBblFNREgvL3dCSS8rY0VNZ1k2QWlZQXVnQUFBUWNBclFGby8vc0FDUUN3RlMrd0tOd3dNUUQvL3dBcC8rY0Q1UVk1QWlZQXZnQUFBUWNBclFFaC8vb0FDUUN3R2krd0s5d3dNUUQvL3dBay9tRUQ4d1k2QWlZQXdBQUFBUWNBclFFNy8vc0FDUUN3QXkrd0Zkd3dNUUQvL3dDRi8vUUNaUVlsQWlZQXdnQUFBUVlBclNUbUFBa0FzQUF2c0JIY01ERUEvLzhBWi8vbEJBb0dkQUltQU1vQUFBRUdBSzRjN0FBU0FMQUxMN0FyM0xBVzBMQXJFTEFhMERBeC8vOEFMUUFBQkZjRU9nSUdBSTBBQVAvL0FFWC82QVFmQkZJQ0JnQlRBQUQvLy8vbC9tQUVKUVE2QWdZQWRnQUEvLzhBYmdBQUErMEVPZ0lHQUZvQUFQLy8vOFFBQUFQMEJEb0NCZ0JjQUFELy93Qm4vL1FDM2dXekFpWUF3Z0FBQVFZQWFvenNBQXdBc0FBdnNDVGNzQS9RTURILy93Qm4vK1VEK2dXekFpWUF5Z0FBQVFZQWFudnNBQXdBc0FzdnNDdmNzQmJRTURILy93QkYvK2dFSHdZNkFpWUFVd0FBQVFjQXJRRXMvL3NBQ1FDd0FDK3dKZHd3TVFELy93Qm4vK1VEK2dZbEFpWUF5Z0FBQVFjQXJRRVUvK1lBQ1FDd0N5K3dHTnd3TVFELy93Qm0vK1FGL0FZaUFpWUF6UUFBQVFjQXJRSTgvK01BQ1FDd0dDK3dMZHd3TVFELy93QTdBQUFFc1FjSkFpWUFLUUFBQVFjQWFnRUJBVUlBRmdDd0FFVllzQVl2RzdFR0hENVpzQlhjc0NIUU1ESC8vd0JEQUFBRXBRZEFBaVlBc0FBQUFRY0FkUUhIQVVJQUV3Q3dBRVZZc0FRdkc3RUVIRDVac0FqY01ERUFBQUVBSi8vcEJLTUZ4d0FvQUdHeUV5a3FFUkk1QUxBQVJWaXdDaThic1FvY1BsbXdBRVZZc0I4dkc3RWZFRDVac2dJZkNoRVNPYkFLRUxBUDBMQUtFTElTQVFvcldDSFlHL1Jac0FJUXNoZ0JDaXRZSWRnYjlGbXdIeEN3Sk5Dd0h4Q3lKd0VLSzFnaDJCdjBXVEF4QVRZdkFpUTNQZ0lYSGdJSEp6WW1KeVlHQndZZkFnUUREZ0luTGdJM0Z3WVdCRFlEYlJhOHJUciszQk1La3ZHSWhNOXNCcjBLaklLSnVBNFV5NVZMQVJvVkM1RDNqb25qZGdlOENaOEJJcndCZDZCS1B4bUY4WG02WlFNRGNNbCtBWWFUQWdLRWNwVk5OU0NDL3dCN3MySURBWFBJZndHQ21RU0MvLzhBU1FBQUFnRUZzQUlHQUMwQUFQLy9BRWtBQUFNS0J3a0NKZ0F0QUFBQkJ3QnEvN2dCUWdBTUFMQUNMN0FaM0xBRTBEQXgvLzhBQ3YvbUJFb0ZzQUlHQUM0QUFQLy9BRVFBQUFWcUJiQUNCZ0hqQUFELy93QTdBQUFGVUFjdUFpWUFMd0FBQVFjQWRRR3dBVEFBRXdDd0FFVllzQVV2RzdFRkhENVpzQTdjTURFQS8vOEFrLy9tQlVBSEd3SW1BTjBBQUFFSEFLQUJGZ0ZEQUJNQXNBQkZXTEFRTHh1eEVCdytXYkFVM0RBeEFQLy8vNjhBQUFTTEJiQUNCZ0FsQUFELy93QTdBQUFFb0FXd0FnWUFKZ0FBLy84QVF3QUFCS1VGc0FJR0FMQUFBUC8vQURzQUFBU3hCYkFDQmdBcEFBRC8vd0JEQUFBRmJnY2JBaVlBMndBQUFRY0FvQUZyQVVNQUNRQ3dBQyt3RGR3d01RRC8vd0E3QUFBR3R3V3dBZ1lBTVFBQS8vOEFPd0FBQlhjRnNBSUdBQ3dBQVAvL0FIZi81d1VOQmNnQ0JnQXpBQUQvL3dCRUFBQUZjQVd3QWdZQXRRQUEvLzhBT3dBQUJQTUZzQUlHQURRQUFQLy9BSFQvNWdUNUJja0NCZ0FuQUFELy93Q29BQUFGQ1FXd0FnWUFPQUFBLy8vLzFBQUFCU3NGc0FJR0FEd0FBUC8vQURQLzZBUFBCRkVDQmdCRkFBRC8vd0JGLytvRDRBUlJBZ1lBU1FBQS8vOEFMd0FBQkRjRnhRSW1BTzhBQUFFSEFLQUFwZi90QUFrQXNBQXZzQTNjTURFQS8vOEFSZi9vQkI4RVVnSUdBRk1BQVAvLy85ZitZQVA4QkZJQ0JnQlVBQUFBQVFCRy8ra0Q1Z1JTQUNBQVM3SUFJU0lSRWprQXNBQkZXTEFSTHh1eEVSZytXYkFBUlZpd0NDOGJzUWdRUGxteUFBRUtLMWdoMkJ2MFdiSUVFUWdSRWpteUZCRUlFUkk1c0JFUXNoZ0JDaXRZSWRnYjlGa3dNU1VXTmpjM0RnSW5MZ0kzTno0Q0Z4WVdGU2NtSmljbUJnY0hCaGNXRmdIb1lad1lxdytGeW1xSHUxZ09CUk9RNkl5cXpLa0NjbUdOdXhjREJnUUhkb0lDZFY4QlpxaGVBd0tKOVpreW5QYUpCQVRjcVFGcWd3UUQyTUlhUUVSMWlBRC8vLytsL2tVRDdBUTZBZ1lBWFFBQS8vLy94QUFBQS9RRU9nSUdBRndBQVAvL0FFWC82Z1BnQmNjQ0pnQkpBQUFCQndCcUFJb0FBQUFNQUxBSUw3QTEzTEFnMERBeC8vOEFMUUFBQTRNRjZnSW1BT3NBQUFFSEFIVUF6Ly9zQUJNQXNBQkZXTEFGTHh1eEJSZytXYkFJM0RBeEFQLy9BQzcvNlFPMkJGQUNCZ0JYQUFELy93QXZBQUFCNHdYSEFnWUFUUUFBLy84QUxnQUFBcmdGeGdJbUFJd0FBQUVIQUdyL1p2Ly9BQXdBc0FJdnNCbmNzQVRRTURILy8vOFUva1lCMVFYSEFnWUFUZ0FBLy84QUx3QUFCRmNGNlFJbUFQQUFBQUVIQUhVQk9mL3JBQk1Bc0FCRldMQUlMeHV4Q0JnK1diQVAzREF4QVAvLy82WCtSUVBzQmRrQ0pnQmRBQUFCQmdDZ1dRRUFFd0N3QUVWWXNBOHZHN0VQR0Q1WnNCUGNNREVBLy84QXd3QUFCMEVITkFJbUFEc0FBQUVIQUVRQ1RBRTJBQk1Bc0FCRldMQUVMeHV4QkJ3K1diQVUzREF4QVAvL0FJQUFBQVgrQmY0Q0pnQmJBQUFCQndCRUFZc0FBQUFUQUxBQVJWaXdDeThic1FzWVBsbXdEdHd3TVFELy93RERBQUFIUVFjMEFpWUFPd0FBQVFjQWRRTFdBVFlBRXdDd0FFVllzQVF2RzdFRUhENVpzQlhjTURFQS8vOEFnQUFBQmY0Ri9nSW1BRnNBQUFFSEFIVUNGUUFBQUJNQXNBQkZXTEFNTHh1eERCZytXYkFQM0RBeEFQLy9BTU1BQUFkQkJ2MENKZ0E3QUFBQkJ3QnFBaFlCTmdBV0FMQUFSVml3QXk4YnNRTWNQbG13SE55d0tOQXdNZi8vQUlBQUFBWCtCY2NDSmdCYkFBQUJCd0JxQVZVQUFBQVdBTEFBUlZpd0N5OGJzUXNZUGxtd0Z0eXdJdEF3TWYvL0FLZ0FBQVV5QnpRQ0pnQTlBQUFCQndCRUFUTUJOZ0FUQUxBQVJWaXdDQzhic1FnY1BsbXdDdHd3TVFELy8vK2wva1VEN0FYK0FpWUFYUUFBQVFjQVJBQ1VBQUFBRXdDd0FFVllzQTh2RzdFUEdENVpzQkhjTURFQS8vOEFxZ1FoQVlrR0FBSUdBQXNBQVAvL0FNZ0VFUUttQmdnQ0JnQUdBQUQvL3dCRC8vSUQvUVd3QUNZQUJRQUFBQWNBQlFJSkFBRC8vLzhKL2tZQ3h3WGFBaVlBbXdBQUFRY0FudjlILzlrQUV3Q3dBRVZZc0F3dkc3RU1HRDVac0JMY01ERUEvLzhBaVFRV0FlQUdBQUlHQVcwQUFQLy9BRHNBQUFhM0J6UUNKZ0F4QUFBQkJ3QjFBc1lCTmdBVEFMQUFSVml3QWk4YnNRSWNQbG13RWR3d01RRC8vd0FlQUFBR2FnWCtBaVlBVVFBQUFRY0FkUUtrQUFBQUV3Q3dBRVZZc0FNdkc3RURHRDVac0NQY01ERUEvLy8vci81cUJJc0ZzQUltQUNVQUFBQUhBS1lCZEFBQS8vOEFNLzVxQTg4RVVRSW1BRVVBQUFBSEFLWUF3UUFBLy84QU93QUFCTEVIUUFJbUFDa0FBQUVIQUVRQk53RkNBQk1Bc0FCRldMQUdMeHV4Qmh3K1diQU4zREF4QVAvL0FFTUFBQVZ1QjBBQ0pnRGJBQUFCQndCRUFhWUJRZ0FUQUxBQVJWaXdDQzhic1FnY1BsbXdDOXd3TVFELy93QkYvK29ENEFYK0FpWUFTUUFBQVFjQVJBREFBQUFBRXdDd0FFVllzQWd2RzdFSUdENVpzQ0hjTURFQS8vOEFMd0FBQkRjRjZnSW1BTzhBQUFFSEFFUUE0UC9zQUJNQXNBQkZXTEFJTHh1eENCZytXYkFMM0RBeEFQLy9BSVlBQUFXZEJiQUNCZ0M0QUFELy93QlAvaWdGVHdROEFnWUF6QUFBLy84QXJRQUFCVXNHNkFJbUFSZ0FBQUVIQUtzRVJBRDZBQllBc0FCRldMQVBMeHV4RHh3K1diQVIzTEFWMERBeC8vOEFoQUFBQkR3RndRSW1BUmtBQUFFSEFLc0Rydi9UQUJZQXNBQkZXTEFRTHh1eEVCZytXYkFTM0xBVzBEQXgvLzhBUmY1RkNHTUVVZ0FtQUZNQUFBQUhBRjBFZHdBQS8vOEFkLzVGQ1V3RnlBQW1BRE1BQUFBSEFGMEZZQUFBLy84QUpmNVJCSmdGeHdJbUFOb0FBQUFIQWJBQmcvKzQvLzhBSWY1U0E2b0VVQUltQU80QUFBQUhBYkFCTGYrNS8vOEFkUDVSQlBrRnlRSW1BQ2NBQUFBSEFiQUJ5dis0Ly84QVJ2NVJBK1lFVWdJbUFFY0FBQUFIQWJBQlJ2KzQvLzhBcUFBQUJUSUZzQUlHQUQwQUFQLy9BSVQrWUFRYUJEb0NCZ0M4QUFELy93QkpBQUFDQVFXd0FnWUFMUUFBLy8vL3JBQUFCM1VIR3dJbUFOa0FBQUVIQUtBQ0xBRkRBQk1Bc0FCRldMQU5MeHV4RFJ3K1diQVozREF4QVAvLy82VUFBQVlPQmNVQ0pnRHRBQUFCQndDZ0FWei83UUFUQUxBQVJWaXdEUzhic1EwWVBsbXdHZHd3TVFELy93QkpBQUFDQVFXd0FnWUFMUUFBLy8vL3J3QUFCSXNIRHdJbUFDVUFBQUVIQUtBQkxnRTNBQk1Bc0FCRldMQUVMeHV4QkJ3K1diQU8zREF4QVAvL0FEUC82QVBzQmRrQ0pnQkZBQUFCQndDZ0FLQUFBUUFUQUxBQVJWaXdHQzhic1JnWVBsbXdMOXd3TVFELy8vK3ZBQUFFaXdiOUFpWUFKUUFBQVFjQWFnRXpBVFlBRmdDd0FFVllzQVF2RzdFRUhENVpzQlRjc0NEUU1ESC8vd0F6LytnRDl3WEhBaVlBUlFBQUFRY0FhZ0NsQUFBQURBQ3dHQyt3UWR5d0xOQXdNZi8vLzRRQUFBZDRCYkFDQmdDQkFBRC8vd0FULytnR1lRUlNBZ1lBaGdBQS8vOEFPd0FBQkxFSEd3SW1BQ2tBQUFFSEFLQUEvQUZEQUFrQXNBWXZzQS9jTURFQS8vOEFSZi9xQStBRjJRSW1BRWtBQUFFSEFLQUFoUUFCQUFrQXNBZ3ZzQ1BjTURFQS8vOEFVZi9wQlNvRzJ3SW1BVVVBQUFFSEFHb0JDQUVVQUF3QXNBQXZzRHJjc0NYUU1ESC8vd0ErLytrRDN3Uk9BZ1lBbkFBQS8vOEFQdi9wQStFRnlBSW1BSndBQUFFSEFHb0Fqd0FCQUF3QXNBQXZzRGpjc0NQUU1ESC8vLytzQUFBSGRRY0pBaVlBMlFBQUFRY0FhZ0l4QVVJQURBQ3dDUyt3Szl5d0Z0QXdNZi8vLzZVQUFBWU9CYk1DSmdEdEFBQUJCd0JxQVdILzdBQU1BTEFKTDdBcjNMQVcwREF4Ly84QUpmL3FCSmdISGdJbUFOb0FBQUVIQUdvQStBRlhBQXdBc0EwdnNFRGNzQ3ZRTURILy93QWgvK29EdVFYSEFpWUE3Z0FBQVFZQWFtY0FBQXdBc0EwdnNEM2NzQ2pRTURILy93QkRBQUFGYmdiNkFpWUEyd0FBQVFjQWNBRkJBVW9BQ1FDd0FDK3dDdHd3TVFELy93QXZBQUFFTndXa0FpWUE3d0FBQVFZQWNIdjBBQWtBc0FBdnNBcmNNREVBLy84QVF3QUFCVzRIQ1FJbUFOc0FBQUVIQUdvQmNBRkNBQXdBc0FBdnNCL2NzQXJRTURILy93QXZBQUFFTndXekFpWUE3d0FBQVFjQWFnQ3EvK3dBREFDd0FDK3dIOXl3Q3RBd01mLy9BSGYvNXdVTkJ2OENKZ0F6QUFBQkJ3QnFBVlFCT0FBTUFMQUtMN0E0M0xBajBEQXgvLzhBUmYvb0JCOEZ4d0ltQUZNQUFBRUhBR29Ba3dBQUFBd0FzQUF2c0RqY3NDUFFNREgvL3dCcC8ra0UvQVhJQWdZQkZnQUEvLzhBUXYvbkJDQUVVd0lHQVJjQUFQLy9BR24vNlFUOEJ3UUNKZ0VXQUFBQkJ3QnFBV0FCUFFBTUFMQUpMN0E2M0xBbDBEQXgvLzhBUXYvbkJDQUZ5UUltQVJjQUFBRUhBR29Ba0FBQ0FBd0FzQVF2c0RYY3NDRFFNREgvL3dCMC8ra0UvQWNmQWlZQTVnQUFBUWNBYWdGTUFWZ0FEQUN3RlMrd09OeXdJOUF3TWYvL0FEVC81d1BXQmNjQ0pnRCtBQUFCQndCcUFJUUFBQUFNQUxBSUw3QTMzTEFpMERBeC8vOEFrLy9tQlVBRytnSW1BTjBBQUFFSEFIQUE3QUZLQUFrQXNBRXZzQkhjTURFQS8vLy9wZjVGQSt3RnVBSW1BRjBBQUFFR0FIQXZDQUFKQUxBQkw3QVEzREF4QVAvL0FKUC81Z1ZBQndrQ0pnRGRBQUFCQndCcUFSc0JRZ0FNQUxBQkw3QW0zTEFSMERBeC8vLy9wZjVGQSt3Rnh3SW1BRjBBQUFFR0FHcGVBQUFNQUxBQkw3QWwzTEFRMERBeC8vOEFrLy9tQlVBSFFRSW1BTjBBQUFFSEFLVUJYUUZDQUJZQXNBQkZXTEFCTHh1eEFSdytXYkFUM0xBWDBEQXgvLy8vcGY1RkJGNEYvd0ltQUYwQUFBRUhBS1VBb0FBQUFCWUFzQUJGV0xBQkx4dXhBUmcrV2JBUzNMQVcwREF4Ly84QXpnQUFCVVFIQ1FJbUFPQUFBQUVIQUdvQlJBRkNBQllBc0FCRldMQVNMeHV4RWh3K1diQW8zTEFjMERBeC8vOEFld0FBQkFBRnN3SW1BUGdBQUFFR0FHcHA3QUFNQUxBSUw3QW8zTEFUMERBeC8vOEFSUUFBQnBZSENRQW1BT1VQQUFBbkFDMEVsUUFBQVFjQWFnSUlBVUlBRmdDd0FFVllzQW92RzdFS0hENVpzQ0hjc0MzUU1ESC8vd0F3QUFBRnFRV3pBQ1lBL1FBQUFDY0FqQVFLQUFBQkJ3QnFBV3IvN0FBV0FMQUFSVml3Q2k4YnNRb1lQbG13SWR5d0xkQXdNZi8vLzlUK1JRVXJCYkFDSmdBOEFBQUFCd0d2QTVVQUFQLy8vOFQrUlFQMEJEb0NKZ0JjQUFBQUJ3R3ZBcW9BQVAvL0FFdi82QVIxQmdBQ0JnQklBQUQvLy8vSy9rVUZaUVd3QWlZQTNBQUFBQWNCcndRa0FBRC8vLy9JL2tVRVNnUTZBaVlBOFFBQUFBY0Jyd003QUFELy8vK3YvcDhFaXdXd0FpWUFKUUFBQUFjQXJBVGNBQUQvL3dBei9wOER6d1JSQWlZQVJRQUFBQWNBckFRcEFBRC8vLyt2QUFBRWl3ZTVBaVlBSlFBQUFRY0FxZ1VCQVVZQUNRQ3dCQyt3R053d01RRC8vd0F6LytnRHp3YURBaVlBUlFBQUFRY0FxZ1J6QUJBQUNRQ3dHQyt3T2R3d01RRC8vLyt2QUFBRjdRZkRBaVlBSlFBQUFRY0J0d0R5QVM0QUZnQ3dBRVZZc0FVdkc3RUZIRDVac0E3Y3NCVFFNREgvL3dBei8rZ0ZYd2FPQWlZQVJRQUFBUVlCdDJUNUFCWUFzQUJGV0xBWUx4dXhHQmcrV2JBdjNMQTEwREF4Ly8vL3J3QUFCSXNIdndJbUFDVUFBQUVIQWJZQStBRTlBQllBc0FCRldMQUZMeHV4QlJ3K1diQU0zTEFUMERBeC8vOEFNLy9vQS8wR2lRSW1BRVVBQUFFR0FiWnFCd0FXQUxBQVJWaXdHQzhic1JnWVBsbXdMOXl3Tk5Bd01mLy8vNjhBQUFWc0Irb0NKZ0FsQUFBQkJ3RzFBUE1CR3dBV0FMQUFSVml3QlM4YnNRVWNQbG13RE55d0lOQXdNZi8vQURQLzZBVGVCclVDSmdCRkFBQUJCZ0cxWmVZQUZnQ3dBRVZZc0Jndkc3RVlHRDVac0MvY3NEUFFNREgvLy8rdkFBQUVpd2ZaQWlZQUpRQUFBUWNCdEFEdkFRWUFGZ0N3QUVWWXNBUXZHN0VFSEQ1WnNBN2NzQlhRTURILy93QXovK2dEOXdha0FpWUFSUUFBQVFZQnRHSFJBQllBc0FCRldMQVlMeHV4R0JnK1diQXQzTEEyMERBeC8vLy9yLzZmQklzSE5nSW1BQ1VBQUFBbkFKMEErUUUyQVFjQXJBVGNBQUFBRXdDd0FFVllzQVF2RzdFRUhENVpzQkRjTURFQS8vOEFNLzZmQTg4R0FBSW1BRVVBQUFBbUFKMXJBQUVIQUt3RUtRQUFBQk1Bc0FCRldMQVlMeHV4R0JnK1diQXgzREF4QVAvLy82OEFBQVNMQjdjQ0pnQWxBQUFCQndHekFSY0JMUUFNQUxBRUw3QU8zTEFhMERBeC8vOEFNLy9vQStVR2dnSW1BRVVBQUFFSEFiTUFpZi80QUF3QXNCZ3ZzQy9jc0R2UU1ESC8vLyt2QUFBRWl3ZTNBaVlBSlFBQUFRY0J1QUVYQVMwQURBQ3dCQyt3RHR5d0d0QXdNZi8vQURQLzZBUGxCb0lDSmdCRkFBQUJCd0c0QUluLytBQU1BTEFZTDdBdjNMQTcwREF4Ly8vL3J3QUFCSXNJUUFJbUFDVUFBQUVIQWJJQkhnRTlBQXdBc0FRdnNBN2NzQmZRTURILy93QXovK2dEMVFjS0FpWUFSUUFBQVFjQnNnQ1FBQWNBREFDd0dDK3dMOXl3T05Bd01mLy8vNjhBQUFTU0NCUUNKZ0FsQUFBQkJ3R3hBUjhCUlFBTUFMQUVMN0FPM0xBWDBEQXgvLzhBTS8vb0JBUUczZ0ltQUVVQUFBRUhBYkVBa1FBUEFBd0FzQmd2c0MvY3NEalFNREgvLy8rdi9wOEVpd2NQQWlZQUpRQUFBQ2NBb0FFdUFUY0JCd0NzQk53QUFBQVRBTEFBUlZpd0JDOGJzUVFjUGxtd0R0d3dNUUQvL3dBei9wOEQ3QVhaQWlZQVJRQUFBQ2NBb0FDZ0FBRUJCd0NzQkNrQUFBQVRBTEFBUlZpd0dDOGJzUmdZUGxtd0w5d3dNUUQvL3dBNy9xa0VzUVd3QWlZQUtRQUFBQWNBckFTZEFBci8vd0JGL3A4RDRBUlJBaVlBU1FBQUFBY0FyQVIwQUFELy93QTdBQUFFc1FmRkFpWUFLUUFBQVFjQXFnVFBBVklBQ1FDd0JpK3dHZHd3TVFELy93QkYvK29ENEFhREFpWUFTUUFBQVFjQXFnUllBQkFBQ1FDd0NDK3dMZHd3TVFELy93QTdBQUFFc1FjdEFpWUFLUUFBQVFjQXBBRFBBVVlBQ1FDd0JpK3dGdHd3TVFELy93QkYvK29FQmdYckFpWUFTUUFBQVFZQXBGZ0VBQWtBc0FndnNDcmNNREVBLy84QU93QUFCYnNIendJbUFDa0FBQUVIQWJjQXdBRTZBQllBc0FCRldMQUdMeHV4Qmh3K1diQVIzTEFWMERBeC8vOEFSZi9xQlVRR2pnSW1BRWtBQUFFR0FiZEorUUFXQUxBQVJWaXdDQzhic1FnWVBsbXdJOXl3S2RBd01mLy9BRHNBQUFTeEI4c0NKZ0FwQUFBQkJ3RzJBTVlCU1FBV0FMQUFSVml3Qmk4YnNRWWNQbG13RDl5d0ZOQXdNZi8vQUVYLzZnUGlCb2tDSmdCSkFBQUJCZ0cyVHdjQUZnQ3dBRVZZc0Fndkc3RUlHRDVac0NQY3NDalFNREgvL3dBN0FBQUZPZ2YyQWlZQUtRQUFBUWNCdFFEQkFTY0FGZ0N3QUVWWXNBWXZHN0VHSEQ1WnNBL2NzQ0hRTURILy93QkYvK29Fd3dhMUFpWUFTUUFBQVFZQnRVcm1BQllBc0FCRldMQUlMeHV4Q0JnK1diQWgzTEExMERBeC8vOEFPd0FBQkxFSDVRSW1BQ2tBQUFFSEFiUUF2UUVTQUJZQXNBQkZXTEFHTHh1eEJodytXYkFQM0xBVzBEQXgvLzhBUmYvcUErQUdwQUltQUVrQUFBRUdBYlJHMFFBV0FMQUFSVml3Q0M4YnNRZ1lQbG13STl5d0t0QXdNZi8vQUR2K3FRU3hCMElDSmdBcEFBQUFKd0NkQU1jQlFnRUhBS3dFblFBS0FCTUFzQUJGV0xBR0x4dXhCaHcrV2JBUjNEQXhBUC8vQUVYK253UGdCZ0FDSmdCSkFBQUFKZ0NkVUFBQkJ3Q3NCSFFBQUFBVEFMQUFSVml3Q0M4YnNRZ1lQbG13SmR3d01RRC8vd0JKQUFBQ3V3ZkZBaVlBTFFBQUFRY0FxZ09GQVZJQUNRQ3dBaSt3RWR3d01RRC8vd0F1QUFBQ2FRYUJBaVlBakFBQUFRY0FxZ016QUE0QUNRQ3dBaSt3RWR3d01RRC8vd0FPL3FnQ0FRV3dBaVlBTFFBQUFBY0FyQU5UQUFuLy8vL3gvcWtCNHdYSEFpWUFUUUFBQUFjQXJBTTJBQXIvL3dCMy9wOEZEUVhJQWlZQU13QUFBQWNBckFUeEFBRC8vd0JGL3A4RUh3UlNBaVlBVXdBQUFBY0FyQVNFQUFELy93QjMvK2NGRFFlN0FpWUFNd0FBQVFjQXFnVWlBVWdBQ1FDd0NpK3dNTnd3TVFELy93QkYvK2dFSHdhREFpWUFVd0FBQVFjQXFnUmhBQkFBQ1FDd0FDK3dNTnd3TVFELy93QjMvK2NHRGdmRkFpWUFNd0FBQVFjQnR3RVRBVEFBRmdDd0FFVllzQW92RzdFS0hENVpzQ2Jjc0N6UU1ESC8vd0JGLytnRlRRYU9BaVlBVXdBQUFRWUJ0MUw1QUJZQXNBQkZXTEFBTHh1eEFCZytXYkFtM0xBczBEQXgvLzhBZC8vbkJRMEh3UUltQURNQUFBRUhBYllCR1FFL0FCWUFzQUJGV0xBS0x4dXhDaHcrV2JBbTNMQXIwREF4Ly84QVJmL29CQjhHaVFJbUFGTUFBQUVHQWJaWUJ3QVdBTEFBUlZpd0FDOGJzUUFZUGxtd0p0eXdLOUF3TWYvL0FIZi81d1dOQit3Q0pnQXpBQUFCQndHMUFSUUJIUUFXQUxBQVJWaXdDaThic1FvY1BsbXdKdHl3S3RBd01mLy9BRVgvNkFUTUJyVUNKZ0JUQUFBQkJnRzFVK1lBRmdDd0FFVllzQUF2RzdFQUdENVpzQ1Rjc0RqUU1ESC8vd0IzLytjRkRRZmJBaVlBTXdBQUFRY0J0QUVRQVFnQUZnQ3dBRVZZc0Fvdkc3RUtIRDVac0NUY3NDM1FNREgvL3dCRi8rZ0VId2FrQWlZQVV3QUFBUVlCdEUvUkFCWUFzQUJGV0xBQUx4dXhBQmcrV2JBazNMQXQwREF4Ly84QWQvNmZCUTBIT0FJbUFETUFBQUFuQUowQkdnRTRBUWNBckFUeEFBQUFFd0N3QUVWWXNBb3ZHN0VLSEQ1WnNDamNNREVBLy84QVJmNmZCQjhHQUFJbUFGTUFBQUFtQUoxWkFBRUhBS3dFaEFBQUFCTUFzQUJGV0xBQUx4dXhBQmcrV2JBbzNEQXhBUC8vQUdmLzZRWWJCeThDSmdDWEFBQUJCd0IxQWc4Qk1RQVRBTEFBUlZpd0NpOGJzUW9jUGxtd0s5d3dNUUQvL3dCQy8rY0Uvd1grQWlZQW1BQUFBUWNBZFFGbUFBQUFFd0N3QUVWWXNBQXZHN0VBR0Q1WnNDamNNREVBLy84QVovL3BCaHNITHdJbUFKY0FBQUVIQUVRQmhRRXhBQk1Bc0FCRldMQUtMeHV4Q2h3K1diQXEzREF4QVAvL0FFTC81d1QvQmY0Q0pnQ1lBQUFCQndCRUFOd0FBQUFUQUxBQVJWaXdBQzhic1FBWVBsbXdKOXd3TVFELy93Qm4vK2tHR3dlMEFpWUFsd0FBQVFjQXFnVWRBVUVBRXdDd0FFVllzQW92RzdFS0hENVpzQ25jTURFQS8vOEFRdi9uQlA4R2d3SW1BSmdBQUFFSEFLb0VkQUFRQUJNQXNBQkZXTEFBTHh1eEFCZytXYkFtM0RBeEFQLy9BR2YvNlFZYkJ4d0NKZ0NYQUFBQkJ3Q2tBUjBCTlFBVEFMQUFSVml3Q2k4YnNRb2NQbG13TE53d01RRC8vd0JDLytjRS93WHJBaVlBbUFBQUFRWUFwSFFFQUJNQXNBQkZXTEFBTHh1eEFCZytXYkFwM0RBeEFQLy9BR2YrbndZYkJqY0NKZ0NYQUFBQUJ3Q3NCT01BQVAvL0FFTCtsZ1QvQkxBQ0pnQ1lBQUFBQndDc0JIYi85Ly8vQUdmK253VWdCYkFDSmdBNUFBQUFCd0NzQk1nQUFQLy9BRnYrbndRZUJEb0NKZ0JaQUFBQUJ3Q3NCREFBQVAvL0FHZi81d1VnQjdrQ0pnQTVBQUFCQndDcUJQd0JSZ0FKQUxBQUw3QWczREF4QVAvL0FGdi82QVFlQm9NQ0pnQlpBQUFCQndDcUJHVUFFQUFKQUxBR0w3QWgzREF4QVAvL0FHZi82QWFhQjBBQ0pnQ1pBQUFCQndCMUFna0JRZ0FUQUxBQVJWaXdHaThic1JvY1BsbXdIZHd3TVFELy93QmEvK2dGVGdYcUFpWUFtZ0FBQVFjQWRRRmcvK3dBRXdDd0FFVllzQll2RzdFV0dENVpzQjdjTURFQS8vOEFaLy9vQnBvSFFBSW1BSmtBQUFFSEFFUUJmd0ZDQUJNQXNBQkZXTEFTTHh1eEVodytXYkFjM0RBeEFQLy9BRnIvNkFWT0Jlb0NKZ0NhQUFBQkJ3QkVBTmIvN0FBVEFMQUFSVml3RFM4YnNRMFlQbG13SGR3d01RRC8vd0JuLytnR21nZkZBaVlBbVFBQUFRY0FxZ1VYQVZJQUV3Q3dBRVZZc0Jvdkc3RWFIRDVac0NqY01ERUEvLzhBV3Yvb0JVNEdid0ltQUpvQUFBRUhBS29FYnYvOEFCTUFzQUJGV0xBTkx4dXhEUmcrV2JBYzNEQXhBUC8vQUdmLzZBYWFCeTBDSmdDWkFBQUJCd0NrQVJjQlJnQVRBTEFBUlZpd0dpOGJzUm9jUGxtd0h0d3dNUUQvL3dCYS8rZ0ZUZ1hYQWlZQW1nQUFBUVlBcEc3d0FCTUFzQUJGV0xBV0x4dXhGaGcrV2JBZjNEQXhBUC8vQUdmK2x3YWFCZ0lDSmdDWkFBQUFCd0NzQk9ILytQLy9BRnIrbndWT0JKRUNKZ0NhQUFBQUJ3Q3NCRFlBQVAvL0FLaitud1V5QmJBQ0pnQTlBQUFBQndDc0JKY0FBUC8vLzZYK0FnUHNCRG9DSmdCZEFBQUFCd0NzQk5yL1kvLy9BS2dBQUFVeUI3a0NKZ0E5QUFBQkJ3Q3FCTXNCUmdBSkFMQUJMN0FXM0RBeEFQLy8vNlgrUlFQc0JvTUNKZ0JkQUFBQkJ3Q3FCQ3dBRUFBSkFMQUJMN0FkM0RBeEFQLy9BS2dBQUFVeUJ5RUNKZ0E5QUFBQkJ3Q2tBTXNCT2dBSkFMQUJMN0FUM0RBeEFQLy8vNlgrUlFQc0Jlc0NKZ0JkQUFBQkJnQ2tMQVFBQ1FDd0FTK3dHdHd3TVFBQUFnQkwvK2dGRVFZQUFCa0FKUUI4QUxBV0w3QUFSVml3RHk4YnNROFlQbG13QUVWWXNBTXZHN0VERUQ1WnNBQkZXTEFHTHh1eEJoQStXYklQRmdGZHNpOFdBVjJ5RkFNV0VSSTVzQlF2c0JqUXNnRUJDaXRZSWRnYjlGbXlCQVlQRVJJNXNoRVBCaEVTT2JBUzBMQUdFTElkQVFvcldDSFlHL1Jac0E4UXNpSUJDaXRZSWRnYjlGa3dNUUVqQXlNM0JpY21KaWNtTnpZU05oY1dGeE1qTnpNM013Y3pBUVlXRnhZM0V5WW5KZ1lHQlBhMTFxVVRnTHlXc2djRENCU08wSDIxWVREOEcvMGN0UnEyKy9BRGJHaWRlbFk4bm11alZRVFMreTUwakFRRTQ3ODdVcVVCQ29RREJJQUJCNWVYbC94T2o1NENCNlVCOUpRRUE0ZnovLzhBQVA3TkJSRUdBQUFtQUVnQUFBQW5BZDRCK1FKSEFBY0FRd0IvLzJULy93QkUvcGdGYWdXd0FpWUI0d0FBQUFjQnNBUUMvLy8vL3dBdi9wa0VWd1E2QWlZQThBQUFBQWNCc0FOR0FBRC8vd0E3L3BrRmR3V3dBaVlBTEFBQUFBY0JzQVJsQUFELy93QXYvcGtFTmdRNkFpWUE4d0FBQUFjQnNBTm1BQUQvL3dDby9wa0ZDUVd3QWlZQU9BQUFBQWNCc0FJdEFBRC8vd0JnL3BrRDZBUTZBaVlBOVFBQUFBY0JzQUc0QUFELy8vL1UvcGtGS3dXd0FpWUFQQUFBQUFjQnNBUERBQUQvLy8vRS9wa0Q5QVE2QWlZQVhBQUFBQWNCc0FMWUFBRC8vd0RPL3BrRlJBV3dBaVlBNEFBQUFBY0JzQVFrQUFELy93QjcvcGtFQUFRN0FpWUErQUFBQUFjQnNBTWtBQUQvL3dETy9wa0ZSQVd3QWlZQTRBQUFBQWNCc0FMbkFBRC8vd0I3L3BrRUFBUTdBaVlBK0FBQUFBY0JzQUhtQUFELy93QkQvcGtFcFFXd0FpWUFzQUFBQUFjQnNBRG5BQUQvL3dBdC9wa0Rnd1E2QWlZQTZ3QUFBQWNCc0FET0FBRC8vLytzL3BrSGRRV3dBaVlBMlFBQUFBY0JzQVl3QUFELy8vK2wvcGtHRGdRNkFpWUE3UUFBQUFjQnNBVDBBQUQvL3dDSy9sVUZ4UVhJQWlZQlB3QUFBQWNCc0FMai83ei8vd0FIL2xrRVJ3UlRBaVlCUUFBQUFBY0JzQUhuLzhELy93QWZBQUFENHdZQUFnWUFUQUFBQUFJQUt3QUFCSUVGc0FBU0FCc0FicklWSEIwUkVqbXdGUkN3QU5BQXNBQkZXTEFQTHh1eER4dytXYkFBUlZpd0NTOGJzUWtRUGxteURnOEpFUkk1c0E0dnNnc0JDaXRZSWRnYjlGbXdBTkN5QWc4SkVSSTVzQUl2c0E0UXNCSFFzQUlRc2hNQkNpdFlJZGdiOUZtd0NSQ3lGQUVLSzFnaDJCdjBXVEF4QVNNSEJSWVdCd1lFSXlFVEl6Y3pOek1ITXdFREJUSTJOelltSndLVjVDb0JOdGpzRVJEKzJPbjk1Ny9LRzhranZDUGwvcnhnQVVxTndCRU9mSHdFVVBJQkFlSy94L1FFVUpmSnlmM1ovZDBCbm9OMmlBUUFBZ0FyQUFBRWdRV3dBQklBR3dCeHNoVWNIUkVTT2JBVkVMQUEwQUN3QUVWWXNCQXZHN0VRSEQ1WnNBQkZXTEFKTHh1eENSQStXYklTRUFrUkVqbXdFaSt5QUFFS0sxZ2gyQnYwV2JJREVBa1JFam13QXkrd0FCQ3dDOUN3RWhDd0RkQ3dDUkN5RlFFS0sxZ2gyQnYwV2JBREVMSWJBUW9yV0NIWUcvUlpNREVCSXdjRkZoWUhCZ1FqSVJNak56TTNNd2N6QVFNRk1qWTNOaVluQXBYa0tnRTIyT3dSRVA3WTZmM252OG9ieVNPOEkrWCt2R0FCU28zQUVRNThmQVJROGdFQjRyL0g5QVJRbDhuSi9kbjkzUUdlZzNhSUJBQUFBUUFRQUFBRXBRV3dBQTBBVUxJTERnOFJFamtBc0FCRldMQUlMeHV4Q0J3K1diQUFSVml3QWk4YnNRSVFQbG15RFFnQ0VSSTVzQTB2c2dBQkNpdFlJZGdiOUZtd0JOQ3dEUkN3QnRDd0NCQ3lDZ0VLSzFnaDJCdjBXVEF4QVNFREl4TWpOek1USVFjaEF5RUNldjc4ZHIxM3FodXBiQU5sSFAxWVVRRUZBcXo5VkFLc2x3SnRudjR4QUFBQi8rWUFBQU9EQkRvQURRQlFzZ3NPRHhFU09RQ3dBRVZZc0Fndkc3RUlHRDVac0FCRldMQUNMeHV4QWhBK1diSU5DQUlSRWptd0RTK3lBQUVLSzFnaDJCdjBXYkFFMExBTkVMQUcwTEFJRUxJS0FRb3JXQ0hZRy9SWk1ERUJJUU1qRXlNM014TWhCeUVESVFKUS91WlR0bE9hRzVsUEFwb2MvaDAwQVJzQjMvNGhBZCtYQWNTWi90VUFBQUVBV0FBQUJYNEZzQUFVQUcwQXNBQkZXTEFTTHh1eEVodytXYkFBUlZpd0JDOGJzUVFjUGxtd0FFVllzQXN2RzdFTEVENVpzQUJGV0xBSUx4dXhDQkErV2JJVEVnc1JFam13RXkrd0VOQ3lEUUVLSzFnaDJCdjBXYkFCMExBTEVMQUMwTEFDTDdJS0FRb3JXQ0hZRy9SWnNnWUtBaEVTT1RBeEFTTURNd0V6QVFFakFTTURJeE1qTnpNM013Y3pBc2Y0TG9rQ1hmZjlZUUc4MXY1eXNuRzh1N1lidFNpN0ova0VOLzczQW9MOU5mMGJBbzc5Y2dRM2wrTGlBQUFCQURrQUFBUXlCZ0FBRkFCbUFMQVJMN0FBUlZpd0JDOGJzUVFZUGxtd0FFVllzQXN2RzdFTEVENVpzQUJGV0xBSUx4dXhDQkErV2JJUUVRc1JFam13RUMrd0U5Q3lBUUVLSzFnaDJCdjBXYkFMRUxBQzBMQUNMN0lLQVFvcldDSFlHL1Jac2dZS0FoRVNPYkFCRUxBTjBEQXhBU01ETXdFekFRRWpBU01ESXhNak56TTNNd2N6QXFub1lYSUJmT1QrTWdFM3lQNzFnbGUyMDgwYnpSMjFIZWdFd2YzTkFheitDdjI4QWZYK0N3VEJsNmlvLy84QVEvNmFCVzRIR3dJbUFOc0FBQUFuQUtBQmF3RkRBUWNBRUFSUS83MEFFd0N3QUVWWXNBZ3ZHN0VJSEQ1WnNBM2NNREVBLy84QUwvNmFCRVVGeFFJbUFPOEFBQUFuQUtBQXBmL3RBUWNBRUFOYi83MEFFd0N3QUVWWXNBZ3ZHN0VJR0Q1WnNBM2NNREVBLy84QU8vNmFCWGNGc0FJbUFDd0FBQUFIQUJBRVdmKzkvLzhBTC82YUJFUUVPZ0ltQVBNQUFBQUhBQkFEV3YrOS8vOEFPLzZhQnJjRnNBSW1BREVBQUFBSEFCQUZqUCs5Ly84QU1QNmFCWXNFT2dJbUFQSUFBQUFIQUJBRW9mKzkvLy8veXY2YUJXVUZzQUltQU53QUFBQUhBQkFFUnYrOS8vLy95UDZhQkVjRU9nSW1BUEVBQUFBSEFCQURYZis5QUFFQXFBQUFCVElGc0FBT0FGYXlDZzhRRVJJNUFMQUFSVml3Q0M4YnNRZ2NQbG13QUVWWXNBc3ZHN0VMSEQ1WnNBQkZXTEFDTHh1eEFoQStXYklHQWdnUkVqbXdCaSt5QlFFS0sxZ2gyQnYwV2JBQTBMSUtDQUlSRWptd0JoQ3dEdEF3TVFFakF5TVRJemN6QVRNVEFUTUJNd044MlZ1N1d0VWJsZjdtek84QjcrRDkxWkFDQ2YzM0FnbVhBeEQ5SmdMYS9QQUFBQUVBWGY1Z0JCb0VPZ0FPQUdPeUFROFFFUkk1QUxBQVJWaXdDUzhic1FrWVBsbXdBRVZZc0Fzdkc3RUxHRDVac0FCRldMQURMeHV4QXhJK1diQUFSVml3QUM4YnNRQVFQbG13QUVWWXNBUXZHN0VFRUQ1WnNnWUJDaXRZSWRnYjlGbXlDZ3NBRVJJNXNBM1FzQTdRTURFRkl3TWpFeU0zTXdNekV3RXpBVE1DeDk5R3RVYldHNzJ4c1lrQm5NRCtDcjRML21zQmxaY0RydnpjQXlUOFVnQUIvOVFBQUFVckJiQUFFUUJpQUxBQVJWaXdEQzhic1F3Y1BsbXdBRVZZc0E0dkc3RU9IRDVac0FCRldMQUZMeHV4QlJBK1diQUFSVml3QXk4YnNRTVFQbG15Q1F3RkVSSTVmTEFKTHhpd0VOQ3lBQUVLSzFnaDJCdjBXYklFQlF3UkVqbXdDTkN5RFF3RkVSSTVNREVCSXdFakFRRWpBU00zTXdFekV3RXpBVE1Ec2FRQk90UCsvdjVLNkFJS2x4dVIvdHJRL1FHcDZQNFRqZ0tlL1dJQ04vM0pBcDZYQW52OTB3SXQvWVVBQUFIL3hBQUFBL1FFT2dBUkFHb0FzQUJGV0xBTUx4dXhEQmcrV2JBQVJWaXdEaThic1E0WVBsbXdBRVZZc0FVdkc3RUZFRDVac0FCRldMQURMeHV4QXhBK1diSUpCUXdSRWpsOHNBa3ZHTElJQVFvcldDSFlHL1Jac0FIUXNnUUZEQkVTT2JJTkRBVVJFam13Q1JDd0VkQjhzQkV2R0RBeEFTTVRJd01CSXdFak56TURNeE1CTXdFekF3K3g3TVd6L3MvZEFZS2hHNTdieHFjQkp0NyttWjBCNGY0ZkFaVCtiQUhobHdIQy9uWUJpdjQrLy84QUtmL25BK1VFVFFJR0FMNEFBUC8vLzljQUFBU2tCYkFDSmdBcUFBQUFCd0hlLzBUK2YvLy9BSmtDaXdYWEF5SUFSZ0dYaUFCbVprQUEvLzhBRndBQUJDc0Z4d0lHQUJZQUFQLy9BRFQvNkFRaEJjY0NCZ0FYQUFELy93QUZBQUFFSFFXd0FnWUFHQUFBLy84QWN2L25CR29Gc0FJR0FCa0FBUC8vQUpULy9nUVRCY2dBQmdBZEFBRC8vd0I4LytjRVB3WEpBQVlBRkJRQS8vOEFlZi9xQlFZSFZRSW1BQ3NBQUFFSEFIVUI5d0ZYQUJNQXNBQkZXTEFNTHh1eERCdytXYkFrM0RBeEFQLy9BQVQrVHdRb0JmNENKZ0JMQUFBQkJ3QjFBVTBBQUFBVEFMQUFSVml3QkM4YnNRUVlQbG13TE53d01RRC8vd0E3QUFBRmR3YzBBaVlBTWdBQUFRY0FSQUdkQVRZQUV3Q3dBRVZZc0FZdkc3RUdIRDVac0F2Y01ERUEvLzhBSHdBQUErTUYvZ0ltQUZJQUFBRUhBRVFBMGdBQUFCTUFzQUJGV0xBREx4dXhBeGcrV2JBVTNEQXhBUC8vLzY4QUFBU0xCeUFDSmdBbEFBQUJCd0NyQklBQk1nQVdBTEFBUlZpd0JDOGJzUVFjUGxtd0ROeXdFTkF3TWYvL0FEUC82QVBQQmVzQ0pnQkZBQUFCQndDckEvTC8vUUFXQUxBQVJWaXdHQzhic1JnWVBsbXdMZHl3TWRBd01mLy9BRHNBQUFTeEJ5d0NKZ0FwQUFBQkJ3Q3JCRTRCUGdBV0FMQUFSVml3Qmk4YnNRWWNQbG13RGR5d0VkQXdNZi8vQUVYLzZnUGdCZXNDSmdCSkFBQUJCd0NyQTlmLy9RQVdBTEFBUlZpd0NDOGJzUWdZUGxtd0lkeXdKZEF3TWYvLy85OEFBQUtLQnl3Q0pnQXRBQUFCQndDckF3UUJQZ0FXQUxBQVJWaXdBaThic1FJY1BsbXdCZHl3Q2RBd01mLy8vNDBBQUFJNEJla0NKZ0NNQUFBQkJ3Q3JBckwvK3dBV0FMQUFSVml3QWk4YnNRSVlQbG13QmR5d0NkQXdNZi8vQUhmLzV3VU5CeUlDSmdBekFBQUJCd0NyQktFQk5BQVdBTEFBUlZpd0NpOGJzUW9jUGxtd0pOeXdLTkF3TWYvL0FFWC82QVFmQmVzQ0pnQlRBQUFCQndDckErRC8vUUFXQUxBQVJWaXdBQzhic1FBWVBsbXdKTnl3S05Bd01mLy9BRG9BQUFUQ0J5QUNKZ0EyQUFBQkJ3Q3JCRU1CTWdBV0FMQUFSVml3QkM4YnNRUWNQbG13R2R5d0hkQXdNZi8vQUI4QUFBTFVCZXNDSmdCV0FBQUJCd0NyQTBuLy9RQVdBTEFBUlZpd0NpOGJzUW9ZUGxtd0V0eXdEZEF3TWYvL0FHZi81d1VnQnlBQ0pnQTVBQUFCQndDckJIc0JNZ0FXQUxBQVJWaXdDaThic1FvY1BsbXdGTnl3R05Bd01mLy9BRnYvNkFRZUJlc0NKZ0JaQUFBQkJ3Q3JBK1QvL1FBV0FMQUFSVml3Qnk4YnNRY1lQbG13RmR5d0dkQXdNZi8vLzdJQUFBVThCajhBSmdEUFpBQUFCd0N0L3BFQUFQLy9BRHYrcVFTZ0JiQUNKZ0FtQUFBQUJ3Q3NCSmdBQ3YvL0FCLytsZ1ArQmdBQ0pnQkdBQUFBQndDc0JJYi85Ly8vQUR2K3FRVFZCYkFDSmdBb0FBQUFCd0NzQkpjQUN2Ly9BRXYrbndSMUJnQUNKZ0JJQUFBQUJ3Q3NCSmtBQVAvL0FEditDUVRWQmJBQ0pnQW9BQUFBQndHaUFSLytxdi8vQUV2OS93UjFCZ0FDSmdCSUFBQUFCd0dpQVNIK29QLy9BRHYrcVFWM0JiQUNKZ0FzQUFBQUJ3Q3NCUG9BQ3YvL0FCLytxUVBqQmdBQ0pnQk1BQUFBQndDc0JIOEFDdi8vQURzQUFBVlFCeTRDSmdBdkFBQUJCd0IxQWJBQk1BQVRBTEFBUlZpd0JTOGJzUVVjUGxtd0R0d3dNUUQvL3dBZ0FBQUVJZ2MvQWlZQVR3QUFBUWNBZFFGOUFVRUFDUUN3QlMrd0Q5d3dNUUQvL3dBNy92Z0ZVQVd3QWlZQUx3QUFBQWNBckFUU0FGbi8vd0FnL3VVRUdnWUFBaVlBVHdBQUFBY0FyQVJRQUViLy93QTcvcWtEc1FXd0FpWUFNQUFBQUFjQXJBU2RBQXIvLy8veS9xa0I3Z1lBQWlZQVVBQUFBQWNBckFNM0FBci8vd0E3L3FrR3R3V3dBaVlBTVFBQUFBY0FyQVduQUFyLy93QWUvcWtHYWdSU0FpWUFVUUFBQUFjQXJBV3JBQXIvL3dBNy9xa0Zkd1d3QWlZQU1nQUFBQWNBckFUK0FBci8vd0FmL3FrRDR3UlNBaVlBVWdBQUFBY0FyQVJtQUFyLy93QTdBQUFFOHdkQUFpWUFOQUFBQVFjQWRRRzBBVUlBRXdDd0FFVllzQU12RzdFREhENVpzQmJjTURFQS8vLy8xLzVnQkRZRjlRSW1BRlFBQUFFSEFIVUJrZi8zQUJNQXNBQkZXTEFOTHh1eERSZytXYkFoM0RBeEFQLy9BRHIrcVFUQ0JiQUNKZ0EyQUFBQUJ3Q3NCSlVBQ3YvLy8rNytxUUxVQkZRQ0pnQldBQUFBQndDc0F6TUFDdi8vQUNmK253U2pCY2NDSmdBM0FBQUFCd0NzQktRQUFQLy9BQzcrbHdPMkJGQUNKZ0JYQUFBQUJ3Q3NCRzMvK1AvL0FLaitud1VKQmJBQ0pnQTRBQUFBQndDc0JKWUFBUC8vQUVQK253S1VCVUFDSmdCWUFBQUFCd0NzQS9vQUFQLy9BS1FBQUFWaEJ5MENKZ0E2QUFBQkJ3Q2tBT0VCUmdBVEFMQUFSVml3QVM4YnNRRWNQbG13Q3R3d01RRC8vd0J1QUFBRDdRWGlBaVlBV2dBQUFRWUFwQnY3QUJNQXNBQkZXTEFCTHh1eEFSZytXYkFLM0RBeEFQLy9BS1QrcVFWaEJiQUNKZ0E2QUFBQUJ3Q3NCTW9BQ3YvL0FHNytxUVB0QkRvQ0pnQmFBQUFBQndDc0JEZ0FDdi8vQU1QK3FRZEJCYkFDSmdBN0FBQUFCd0NzQmMwQUN2Ly9BSUQrcVFYK0JEb0NKZ0JiQUFBQUJ3Q3NCU3dBQ3YvLy8rditxUVRPQmJBQ0pnQStBQUFBQndDc0JKZ0FDdi8vLyszK3FRUE9CRG9DSmdCZUFBQUFCd0NzQkVJQUN2Ly8vd3ovNXdWVEJkWUFKZ0F6UmdBQUJ3RmEvaG9BQVAvLy82VUFBQVBqQlJ3Q0pnRzZBQUFBQndDdC82diszZi8vLytFQUFBUXJCUjhBSmdHK1BBQUFCd0N0L3NEKzRQLy8vLzBBQUFUV0JSd0FKZ0hCUEFBQUJ3Q3QvdHorM2YvL0FBRUFBQUhtQlI0QUpnSENQQUFBQndDdC91RCszLy8vQUIzLzZnUllCUndBSmdISUNnQUFCd0N0L3Z6KzNmLy8vNXNBQUFTaEJSd0FKZ0hTUEFBQUJ3Q3QvbnIrM2YvL0FCWUFBQVIwQlJzQUpnSHpDZ0FBQndDdC94VCszUC8vLzZVQUFBUGpCSTBDQmdHNkFBRC8vd0FkQUFBRDV3U05BZ1lCdXdBQS8vOEFIUUFBQSs4RWpRSUdBYjRBQVAvLy85d0FBQVFPQkkwQ0JnSFRBQUQvL3dBZEFBQUVtZ1NOQWdZQndRQUEvLzhBS2dBQUFhb0VqUUlHQWNJQUFQLy9BQjBBQUFSL0JJMENCZ0hFQUFELy93QWRBQUFGc0FTTkFnWUJ4Z0FBLy84QVN2L3FCRTRFb3dJR0FjZ0FBUC8vQUIwQUFBUXBCSTBDQmdISkFBRC8vd0J0QUFBRVFnU05BZ1lCelFBQS8vOEFkQUFBQkdVRWpRSUdBZElBQVAvLy83WUFBQVJ0QkkwQ0JnSFJBQUQvL3dBcUFBQUN0Z1hsQWlZQndnQUFBUWNBYXY5a0FCNEFGZ0N3QUVWWXNBSXZHN0VDR2o1WnNBM2NzQm5RTURILy93QjBBQUFFWlFYbEFpWUIwZ0FBQVFZQWFub2VBQllBc0FCRldMQUlMeHV4Q0JvK1diQVMzTEFlMERBeC8vOEFIUUFBQSs4RjVRSW1BYjRBQUFFR0FHcCtIZ0FXQUxBQVJWaXdCaThic1FZYVBsbXdGZHl3SWRBd01mLy9BQjBBQUFQZ0Jod0NKZ0hxQUFBQkJ3QjFBVHNBSGdBVEFMQUFSVml3QlM4YnNRVWFQbG13Q053d01RRC8vd0FSLytzRDdRU2RBZ1lCekFBQS8vOEFLZ0FBQWFvRWpRSUdBY0lBQVAvL0FDb0FBQUsyQmVVQ0pnSENBQUFCQndCcS8yUUFIZ0FXQUxBQVJWaXdBaThic1FJYVBsbXdEZHl3R2RBd01mLy8vL2IvNndPYkJJMENCZ0hEQUFELy93QWRBQUFFZndZY0FpWUJ4QUFBQVFjQWRRRXRBQjRBRXdDd0FFVllzQWd2RzdFSUdqNVpzQS9jTURFQS8vOEFXUC9vQkZRRjl3SW1BZ0VBQUFFR0FLQjBId0FUQUxBQVJWaXdBaThic1FJYVBsbXdGZHd3TVFELy8vK2xBQUFENHdTTkFnWUJ1Z0FBLy84QUhRQUFBK2NFalFJR0Fic0FBUC8vQUIwQUFBUE5CSTBDQmdIcUFBRC8vd0FkQUFBRDd3U05BZ1lCdmdBQS8vOEFId0FBQktFRjl3SW1BZjRBQUFFSEFLQUExQUFmQUJNQXNBQkZXTEFJTHh1eENCbytXYkFOM0RBeEFQLy9BQjBBQUFXd0JJMENCZ0hHQUFELy93QWRBQUFFbWdTTkFnWUJ3UUFBLy84QVN2L3FCRTRFb3dJR0FjZ0FBUC8vQUIwQUFBU0dCSTBDQmdIdkFBRC8vd0FkQUFBRUtRU05BZ1lCeVFBQS8vOEFSLy9zQkRjRW93SUdBYndBQVAvL0FHMEFBQVJDQkkwQ0JnSE5BQUQvLy8rMkFBQUViUVNOQWdZQjBRQUFBQUVBRWY1UUE5NEVvQUFxQUlZQXNBQkZXTEFQTHh1eER4bytXYkFBUlZpd0hTOGJzUjBRUGxtd0FFVllzQnN2RzdFYkVqNVpzQThRc2djQkNpdFlJZGdiOUZtd0R4Q3dETkN5S2gwUEVSSTVmTEFxTHhpMFlDcHdLZ0pkc3FBcUFWMjBZQ3B3S2dKeHNpa0JDaXRZSWRnYjlGbXlGQ2txRVJJNXNCMFFzQnJRc0NIUXNCb1FzaU1CQ2l0WUlkZ2I5Rmt3TVFFeU5qYzJKeVluSmdjR0J3YzJOaGNXRmdjR0J4WVdCd1lHQndNakV5WW1Oek1VRnhZMk56WWxKemNDQVgrU0NnY1pNNVpyUlVNUnRoRDd0NzdYQ2dyeVZXQUZDT1M4U0xaS2k1QUZzdG1CcVFzWS92dUVHd0tmWVZjMkpVMEVBaTBzVVFHV3NBSURwbzI0WWlHR1haRzRELzVlQWF3Y3FuK3hCUU5tVzd3Q0FaZ0FBUUFkL3BrRW1nU05BQThBY2dDd0FTK3dBRVZZc0Frdkc3RUpHajVac0FCRldMQU1MeHV4REJvK1diQUFSVml3Qmk4YnNRWVFQbG13QUVWWXNBSXZHN0VDRUQ1WnNnb0dDUkVTT1h5d0NpOFl0R0FLY0FvQ2NiS2dDZ0ZkdEdBS2NBb0NYYklGQVFvcldDSFlHL1Jac0FJUXNnNEJDaXRZSWRnYjlGa3dNUUVqRXlNVElRTWpFek1ESVJNekF6TUVMclkrbTFiOXVGZTF5N1JaQWtoYXRiR2UvcGtCWndIeS9nNEVqZjM5QWdQOERBQUFBUUJJL2xZRVB3U2pBQjRBV0FDd0FFVllzQTB2RzdFTkdqNVpzQUJGV0xBREx4dXhBeEErV2JBQVJWaXdCQzhic1FRU1BsbXdBeEN3QnRDd0RSQ3dFZEN3RFJDeUZBRUtLMWdoMkJ2MFdiQURFTEljQVFvcldDSFlHL1Jac0FNUXNCN1FNREVCQmdZSEF5TVRKZ0kzTnhJQUZ4WVdGeU1tSmljbUJnY0dGeFlXRnhZM0ErNGY3S3hIdGtxZG54Z01KUUU1NExqVkNMTUZiWGlUeWg4YkJnVjJiUHRNQVhxcDBRNytaQUdwS0FFbXhsZ0JDQUV3QmdUVnRuS0NCQVhLdHA1amRZc0VDdndBLy84QWRBQUFCR1VFalFJR0FkSUFBUC8vQUMvK1VRVmhCS0VDSmdJWEFBQUFCd0d3QXB2L3VQLy9BQjhBQUFTaEJkWUNKZ0grQUFBQkJ3QndBS29BSmdBVEFMQUFSVml3Q0M4YnNRZ2FQbG13Qzl3d01RRC8vd0JZLytnRVZBWFdBaVlDQVFBQUFRWUFjRW9tQUJNQXNBQkZXTEFSTHh1eEVSbytXYkFUM0RBeEFQLy9BRkVBQUFUekJJMENCZ0h4QUFELy8vK3YvazhFaXdXd0FpWUFKUUFBQUFjQW93Rm5BQUQvL3dBei9rOER6d1JSQWlZQVJRQUFBQWNBb3dDMEFBRC8vd0E3L2xrRXNRV3dBaVlBS1FBQUFBY0Fvd0VvQUFyLy93QkYvazhENEFSUkFpWUFTUUFBQUFjQW93RC9BQUFBQUFBQUFBMEFvZ0FEQUFFRUNRQUFBRjRBQUFBREFBRUVDUUFCQUF3QVhnQURBQUVFQ1FBQ0FBd0FhZ0FEQUFFRUNRQURBQm9BZGdBREFBRUVDUUFFQUJvQWRnQURBQUVFQ1FBRkFDd0FrQUFEQUFFRUNRQUdBQm9BdkFBREFBRUVDUUFIQUVBQTFnQURBQUVFQ1FBSkFBd0JGZ0FEQUFFRUNRQUxBQlFCSWdBREFBRUVDUUFNQUNZQk5nQURBQUVFQ1FBTkFGd0JYQUFEQUFFRUNRQU9BRlFCdUFCREFHOEFjQUI1QUhJQWFRQm5BR2dBZEFBZ0FESUFNQUF4QURFQUlBQkhBRzhBYndCbkFHd0FaUUFnQUVrQWJnQmpBQzRBSUFCQkFHd0FiQUFnQUZJQWFRQm5BR2dBZEFCekFDQUFVZ0JsQUhNQVpRQnlBSFlBWlFCa0FDNEFVZ0J2QUdJQWJ3QjBBRzhBU1FCMEFHRUFiQUJwQUdNQVVnQnZBR0lBYndCMEFHOEFJQUJKQUhRQVlRQnNBR2tBWXdCV0FHVUFjZ0J6QUdrQWJ3QnVBQ0FBTWdBdUFEQUFNQUF4QURFQU1BQXhBRHNBSUFBeUFEQUFNUUEwQUZJQWJ3QmlBRzhBZEFCdkFDMEFTUUIwQUdFQWJBQnBBR01BVWdCdkFHSUFid0IwQUc4QUlBQnBBSE1BSUFCaEFDQUFkQUJ5QUdFQVpBQmxBRzBBWVFCeUFHc0FJQUJ2QUdZQUlBQkhBRzhBYndCbkFHd0FaUUF1QUVjQWJ3QnZBR2NBYkFCbEFFY0Fid0J2QUdjQWJBQmxBQzRBWXdCdkFHMEFRd0JvQUhJQWFRQnpBSFFBYVFCaEFHNEFJQUJTQUc4QVlnQmxBSElBZEFCekFHOEFiZ0JNQUdrQVl3QmxBRzRBY3dCbEFHUUFJQUIxQUc0QVpBQmxBSElBSUFCMEFHZ0FaUUFnQUVFQWNBQmhBR01BYUFCbEFDQUFUQUJwQUdNQVpRQnVBSE1BWlFBc0FDQUFWZ0JsQUhJQWN3QnBBRzhBYmdBZ0FESUFMZ0F3QUdnQWRBQjBBSEFBT2dBdkFDOEFkd0IzQUhjQUxnQmhBSEFBWVFCakFHZ0FaUUF1QUc4QWNnQm5BQzhBYkFCcEFHTUFaUUJ1QUhNQVpRQnpBQzhBVEFCSkFFTUFSUUJPQUZNQVJRQXRBRElBTGdBd0FBQUFBd0FBLy9RQUFQOXFBR1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBSUFDQUFDLy84QUR3QUJBQUFBREFBQUFBQUFBQUFDQUY0QUpRQStBQUVBUlFCZUFBRUFlUUI1QUFNQWdRQ0JBQUVBZ3dDREFBRUFoZ0NHQUFFQWlRQ0pBQUVBaXdDVkFBRUFsd0NjQUFFQW93Q2pBQU1BcHdDc0FBTUFzQUN3QUFFQXVRQzZBQUVBdmdDK0FBRUF3QURBQUFFQXdnRENBQUVBeGdER0FBRUF5Z0RLQUFFQXpBRE5BQUVBendEUUFBRUEwZ0RTQUFFQTJRRGRBQUVBNEFEZ0FBRUE1QURrQUFFQTVnRG9BQUVBNmdENkFBRUEvQUQ4QUFFQS9nRUFBQUVCQWdFQ0FBRUJCd0VJQUFFQkZRRVpBQUVCR3dFYkFBRUJId0VoQUFFQkl3RWtBQU1CT0FFNUFBRUJQZ0ZBQUFFQlJRRkZBQUVCVFFGTkFBRUJUd0ZQQUFFQlV3RlRBQUVCVlFGWEFBRUJXUUZaQUFFQm9nR2lBQU1Cb3dHcEFBSUJ1Z0hUQUFFQjRnSGlBQUVCNUFIa0FBRUI2Z0hxQUFFQjh3SHpBQUVCOVFIMUFBRUIvQUgrQUFFQ0FBSUJBQUVDQXdJREFBRUNCd0lIQUFFQ0NRSUxBQUVDRVFJUkFBRUNGZ0lZQUFFQ0dnSWFBQUVDUGdKREFBRUNSd0t2QUFFQ3NnTllBQUVEV3dOcUFBRURjUU54QUFFRGN3TjNBQUVEZWdOL0FBRURnUU9FQUFFRGhnT0tBQUVEakFPbkFBRURxd09yQUFFRHJRTzBBQUVEdGdPNEFBRUR2UU8vQUFFRHdRUE5BQUVEendQWkFBRUQzQVBzQUFFRDd3UklBQUVFU3dSTEFBRUVUUVJOQUFFRVR3UlFBQUVFV3dSYkFBRUVZZ1JrQUFFRVpnUm1BQUVFYWdScUFBRUViQVJ0QUFFRWJ3UnZBQUVFZHdTR0FBRUVod1NIQUFJRWlBU3dBQUVFc2dUS0FBRUV6QVRRQUFFRTBnVFZBQUVFMXdUWkFBRUUyd1RjQUFFRTNnVGhBQUVBQVFBQUFBb0FYQUNhQUFSRVJreFVBQnBqZVhKc0FDaG5jbVZyQURac1lYUnVBRVFBQkFBQUFBRC8vd0FDQUFBQUJBQUVBQUFBQVAvL0FBSUFBUUFGQUFRQUFBQUEvLzhBQWdBQ0FBWUFCQUFBQUFELy93QUNBQU1BQndBSVkzQnpjQUF5WTNCemNBQXlZM0J6Y0FBeVkzQnpjQUF5YTJWeWJnQTRhMlZ5YmdBNGEyVnliZ0E0YTJWeWJnQTRBQUFBQVFBQUFBQUFBUUFCQUFJQUJnSFlBQUVBQUFBQkFBZ0FBUUFLQUFVQUpBQklBQUVBM2dBSUFDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQU93QThBRDBBUGdCbEFHY0FrZ0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QU5FQTBnRFRBTlFBMVFEV0FOY0EyQURaQU5vQTJ3RGNBTjBBM2dEZkFPQUE0UURpQU9NQTVBRGxBT1lBNXdEb0FTd0JNQUV5QVRnQk9nRThBVDRCUHdGRkFVWUJmd0dGQVlvQmpRSkhBa2dDU2dKTUFrMENUZ0pQQWxBQ1VRSlNBbE1DVkFKVkFsWUNWd0pZQWxrQ1dnSmJBbHdDWFFKZUFsOENZQUpoQW1JQ1l3SmtBbVVDWmdLREFvVUNod0tKQW9zQ2pRS1BBcEVDa3dLVkFwY0NtUUtiQXAwQ253S2hBcU1DcFFLbkFxa0Nxd0t0QXE4Q3NnSzBBcllDdUFLNkFyd0N2Z0xBQXNJQ3hRTEhBc2tDeXdMTkFzOEMwUUxUQXRVQzJRTGJBdDBDM3dMaEF1TUM1UUxuQXVrQzZ3THRBdThDOFFMeUF2UUM5Z05UQTFRRFZRTldBMWNEV0FOWkExc0RYQU5kQTE0RFh3TmdBMkVEWWdOa0EyVURaZ05uQTJnRGFRTnFBM29EZXdOOEEzMERmZ04vQTRBRGdRT0NBNE1EaEFPRkE0WURod09JQTRrRGlnT0xBNHdEalFPT0E0OER1d085QTc4RDFBUGFBK0FFU1FSTEJFOEVWd1JaQkY0RWFnQUNBQUFBQkFBT0Q4NFY4alZpQUFFRFZBQUVBQUFCcFFyU0N0SUdnZ3R3Q29BSy9nK2FEQUFHaUE3dUR1NE1SZzZnQ2lJTzdnN3VENW9LaWdhU0RHWU1SZ3JZQ3F3TlVnOFFDbDRMNGdzUURCWUdtQTIyRGJZTnRnd2dDeEFLVUF4TURiQU1UQXNRQnFZTjVndHdENW9MY0Fhc0JySUd2QWJDQnNnTVRBYk9CdGdOdGdiK0J4UUhLZ2N3QjBZSFRBZFNCNFFIaWdlUURjQU53QWUrRHU0SDRBZ0NEVklJTUE3dUR1NExKZzd1RHU0SVJnM0FEY0FJZUFpQ0NJd0lwZzFJQ0xnTnNBalNDT2dMRUFreUNVd0phQWxvQ3hBSllnbG9DV2dKYUF0d0RDQUsyQXhNQ3hBTjVnMUlEcUFPb0ExSUN0SUswZ3JTQ3RJSzBnbUtDYkFKdWduRUNlSUo5QW9HQ2hnSy9nK2FENW9QbWcrYURHWUxjQXR3QzNBTGNBdHdDM0FMY0FyK0RBQU1BQXdBREFBTzdnN3VEdTRPN2c3dUQ1b1BtZythRDVvUG1neEdERVlNUmd4R0R4QUw0Z3ZpQytJTDRndmlDK0lMNGd3V0RCWU1GZ3dXRGJZTUlBd2dEQ0FNSUF3Z0RFd01UQXR3QytJTGNBdmlDM0FMNGdyK0N2NEsvZ3IrRDVvTUFBd1dEQUFNRmd3QURCWU1BQXdXREFBTUZnN3VEYllPN2c3dUR1NE83Zzd1REVZT29Bb2lDaUlLSWdvaUR1NE50Zzd1RGJZTzdnMjJEYllQbWd3Z0Q1b01JQSthRENBS1VBcFFDbEFNWmd4bURHWU1SZ3hHREVZTVJneEdERVlLckE4UURFd1BFQXBlQ2w0S1hndHdEQUFPN2c3dUQ1b1BFQXR3Q29BTUFBcGVEdTRPN2c2Z0R1NE83ZythQ29vTVpnOFFEVklPN2c4UURiWU1JQXhNRENBTUFBM21EdTRPN2d4R0RxQU9vQXNtQzNBS2dBM21EQUFPN2c3dUQ1b0tpZ3IrREdZTlVndmlEQllNSUFzUURFd05zQXdXRFVnTVRBcXNDcXdLckE4UURFd0swZ3JTQ3RJTzdnMjJDM0FMNGd3QURCWUsyQXhNQ3Y0UEVBeE1EdTROVWcyd0R1NExjQXZpQzNBTDRnd0FEQllNRmd3V0RWSU5zQSthRENBTUlBc1FDeVlNVEFzbURFd0xKZ3hNRFZJTnNBdHdDK0lMY0F2aUMzQUw0Z3R3QytJTGNBdmlDM0FMNGd0d0MrSUxjQXZpQzNBTDRndHdDK0lMY0F2aUMzQUw0Z3dBREJZTUFBd1dEQUFNRmd3QURCWU1BQXdXREFBTUZnd0FEQllNQUF3V0R1NE83ZythRENBUG1nd2dENW9NSUErYURDQVBtZ3dnRDVvTUlBK2FEQ0FNSUF4R0RFWVBFQXhNRHhBTVRBOFFERXdPb0E3dURHWU5VZzJ3RGVZTlNBMVNEYkFOdGczQURlWU9vQTd1RHU0UEVBK2FBQUlBaHdBR0FBWUFBQUFMQUFzQUFRQVRBQk1BQWdBbEFDb0FBd0FzQURVQUNRQTRBRDRBRXdCRkFFWUFHZ0JKQUVvQUhBQk1BRXdBSGdCUkFGUUFId0JXQUZZQUl3QmFBRm9BSkFCY0FGMEFKUUNLQUlvQUp3Q2NBSndBS0FDd0FMUUFLUUMyQUxnQUxnQzZBTG9BTVFDOEFMMEFNZ0MvQU1BQU5BRENBTVFBTmdER0FNc0FPUURSQU5FQVB3RFRBTjBBUUFEZkFOOEFTd0RoQU9NQVRBRGxBT2NBVHdEcEFPMEFVZ0R3QVBBQVZ3RDFBUGNBV0FENkFQc0FXd0Q5QVA4QVhRRURBUVFBWUFFSkFRa0FZZ0VNQVF3QVl3RVhBUmtBWkFFckFTMEFad0V3QVRBQWFnRXlBVElBYXdGSkFVa0FiQUZzQVcwQWJRRnZBWEVBYndHNkFib0FjZ0c5QWIwQWN3SEVBY1VBZEFISUFjZ0FkZ0hLQWNzQWR3SE5BYzBBZVFJb0FpZ0FlZ0lxQWlzQWV3SkhBa2dBZlFKS0Frb0Fmd0pNQW0wQWdBSnZBbklBb2dKM0Fud0FwZ0tCQW9rQXJBS0xBb3NBdFFLTkFvMEF0Z0tQQW84QXR3S1JBcEVBdUFLVEFwd0F1UUtsQXFjQXd3S3BBcWtBeGdLckFxc0F4d0t0QXEwQXlBS3ZBcThBeVFLeUFySUF5Z0swQXJRQXl3SzJBcllBekFLNEFyZ0F6UUs2QXJvQXpnSzhBcndBendLK0Fzb0EwQUxNQXN3QTNRTE9BczRBM2dMUUF0QUEzd0xiQXRzQTRBTGRBdDBBNFFMZkF0OEE0Z0xoQXVFQTR3TGpBdU1BNUFMbEF1VUE1UUxuQXVjQTVnTHBBdWtBNXdMckF1c0E2QUx0QXUwQTZRTHZBdklBNmdMMEF2UUE3Z0wyQXZZQTd3TlRBMWdBOEFOYkEyb0E5Z050QTIwQkJnTnhBM0VCQndOekEzTUJDQU4zQTNjQkNRTjZBM3NCQ2dOOUE0WUJEQU9JQTRvQkZnT01BNUVCR1FPVEE1UUJId09XQTVrQklRT2ZBNkFCSlFPaUE2SUJKd09rQTZRQktBT21BNmtCS1FPc0E3RUJMUU96QTdNQk13TzNBN2dCTkFPOUE3MEJOZ08vQThnQk53UExBOHdCUVFQT0E5RUJRd1BZQTlrQlJ3UGRBOTBCU1FQZkErVUJTZ1BxQStzQlVRUHZCQmNCVXdRWkJCa0JmQVFiQkNnQmZRUXdCREFCaXdRekJETUJqQVExQkRVQmpRUkJCRVlCamdSSkJFa0JsQVJMQkVzQmxRUk5CRTBCbGdSUEJGQUJsd1JWQkZnQm1RUmJCRnNCblFSZEJGNEJuZ1JnQkdBQm9BUmtCR1FCb1FSbUJHWUJvZ1JxQkdvQm93U3FCS29CcEFBQkFCUC9JQUFDQUZiLzVnRzYvOEFBQVFHNkFBNEFBd0FOQUJRQVFRQVNBR0VBRXdBQkFQWC85UUFCQU1NQURRQUNBTGYvd2dEREFCQUFBUURELytJQUFRREcvL0lBQVFEREFBNEFBZ0RKLyswQTlmL0FBQWtBdnYvbUFNSC82d0RDLytrQXhQL3dBTVgvNXdESi8rTUF5Ly9PQU16LzFBRE4vOXNBQlFEQi8rd0F3d0FQQU1YLzZnREovOFFBeS8vbkFBVUFTdi9wQU1ILzdnRERBQkFBeGYvc0FNbi9JQUFCQU1NQUR3QUZBTW4vNmdEcy8rNEE5ZityQVRQLzdBRlkvK3dBQVFEMS85VUFBUURKQUFzQURBQktBQXdBeFFBTEFNa0FEQUc2Lzc4QnZQL3VBY0QvN0FISS8rMEJ5di9zQWN6LzlRSE5BQTRCendBTkFkSUFEUUFCQVBYLzJBQUJBUFgvcWdBTEFPWC8xQUQxLzhrQkNQL2xBUi8vNHdFei84UUJQUC9oQVUzLzFBRk8vL1VCVC8vbkFWZi8wZ0ZZLzhrQUNBRGwvOGtBOWYvZkFRai83UUVmLytzQk0vL2ZBVC8vNlFGTy8vVUJXUC9nQUFnQTVmL21BUFgvMEFFei84NEJQUC9vQVUzLzV3RlAvKzBCVi8vbUFWai8wQUFMQU5nQUZBRGwvK0FBN0FBVEFUei80UUU5LytBQlFQL2hBVVgvNlFGTi85OEJULy9lQVZmLzN3RlovL0lBQlFBYi8vSUE1Zi94QVUzLzhnRlAvL0lCVi8veUFBd0EyQUFUQU9YLzVnRG0vL1FBN0FBU0FQWC81d0V6LytjQlBQL2xBVDMvNkFGTi8rWUJULy9tQVZmLzVnRlkvK2NBQWdEWS8rSUJWLy9rQUFJQTJQL2hBT3ovNUFBR0FPei83Z0QxLys0QkNQLzBBUi8vOFFFei8rOEJXUC92QUFRQTlmLzBBUWovOVFFei8vVUJXUC8xQUFZQTdBQVVBUFgvN1FENy8rSUJNLy90QVQzLzdRRlkvKzBBQlFFYi8rc0J2UC9yQWNELzZRSEkvK3NCeXYvckFCSUFTZ0FOQU1iL3F3REgvOEFBeS8vVkFPei9xZ0ViLytJQkh3QU1BVTRBQ3dGUUFBc0J1disvQWJ6LzdnSEEvK3dCeVAvdEFjci83QUhNLy9VQnpRQU9BYzhBRFFIU0FBMEFCZ0RzQUJRQTlmL3dBUUFBREFFei8vQUJQZi9tQVZqLzhBQUZBT3dBT2dEMS8rTUJNLy9pQVQzLzR3RlkvK01BQVFEcy8rOEFDQUQxLzdvQkNQL1BBUi8vMndFei8xQUJQZitkQVU3LzhBRlEvL0lCV1A5TUFBa0J2UC95QWNELzhnSEkvL0lCeXYveUFjMy93QUhPLyt3QnovL0hBZEQvMkFIUy83OEFBZ0hQLys0QjBQLzFBQUlCeVAvckFjci82d0FIQWNqLzd3SEsvL0FCemYrN0FjNy83QUhQLzdjQjBQL1ZBZEwvdEFBRUFjMy83Z0hQLy9FQjBmL3NBZEwvNmdBRUFjMy82UUhQLytzQjBQL3hBZEwvNVFBRUFjMy84Z0hQLy9FQjBQLzFBZEwvN2dBQ0FjOEFEUUhTQUEwQUN3QmIvNlFCdWdBVEFiei84d0hBLy9FQnlQL3lBY3IvOFFITi96c0J6di9hQWMvL1ZBSFEvNUVCMHY4L0FBTUFTZ0FQQUZnQU1nQmJBQkVBQ0FCYi8rVUF0Ly9MQU16LzVBRzZBQTBCdlAvdEFjRC82d0hJLyt3Qnl2L3NBQUlCRUFBTEFWZi81Z0FJQUZnQURnQ0IvNThBdy8vZUFNYi81UURZLzZnQTdQL0tBVXIvNHdHNi84WUFDUUFOQUE4QVFRQU1BRmIvNndCaEFBNEJ1di9MQWJ6LzZRSEEvK2NCeVAvbkFjci81d0FCQUZzQUN3QUpBQTBBRkFCQkFCRUFWdi9pQUdFQUV3RzYvN1FCdlAvWkFjRC8yUUhJLzlrQnl2L1pBQVFBRGYvbUFFSC85QUJoLys4QlFQL3RBQVVBeWYvcUFPei83Z0QxLzdBQk0vL3NBVmovN0FBU0FOai9yZ0RsQUJJQTZ2L2dBT3ovclFEdS85WUEvUC9mQVFELzBnRUcvK0FCRy8vT0FTdi8zUUV0LytJQk1mL2dBVGYvNEFFOS8ra0JRUC9hQVVyL3ZRRlUvOThCVndBUkFCd0FJLy9EQUZqLzd3QmIvOThBbWYvdUFMZi81UUM0LzlFQXd3QVJBTW4veUFEWUFCTUE1Zi9GQVBYL3lnRXovNThCUFA5UkFUMy9ld0UvLzhvQlFQL2RBVVgvOGdGTi8zVUJULy9LQVZmL1R3RlkvNHdCd1AvMUFjai85UUhOLzhjQnp2L3hBYy8velFIUS85MEIwdi9FQUFjQTlmL3dBUWovOFFFZi8vTUJNLy94QVU3Lzh3RlEvK2tCV1AvVEFBVUFTdi91QUZ2LzZnSFAvL0FCMFAvdEFkTC84QUFDQVBYLzlRRnQvN0FBQ1FESi8rb0E3UCs0QVBYLzZnRUkvL0FCSC8veEFUUC82d0ZPLy9VQldQL3NBVzMvc0FBQkFici82d0FHQUVvQURRREZBQXNBeHYvcUFNa0FEQURzLzhnQkcvL3hBRGdBQlAvWUFGYi90UUJiLzhjQWJmNjRBSHovS0FDQi8wMEFoditPQUluL29RQzMvNjRBdnY5K0FNTC9ad0RGLzRjQXh2OWxBTW4vbmdETC8yb0F6UDl6QU0zL1hnRFkvNlVBNVFBUEFPbi81QURxLzZBQTdQOTBBTzcvZ0FEMS83SUEvUDk5QVA3L2dBRUEvM2tCQnY5OUFRai9md0ViLzVnQkgvL2FBU3YvZ1FFdC81Z0JNZjk5QVRQL3N3RTMvNkFCUGY5OEFULy9tZ0ZBLzJ3QlJmL21BVXIvYXdGTy81SUJVUCt0QVZUL2V3RlhBQThCV1ArUkFWbi84Z0c2LzY4QnZQKzVBY0QvdVFISS83a0J5dis1QWN6L3ZBSE4vL0VCMFAveEFkSC83UUFDQU96L3lRRWIvKzRBRndDMy85UUF3Zi90QU1NQUVRREovK0FBeS8vbkFNei81UUROLys0QTJBQVNBT24vNlFEMS85Y0JNLy9YQVQzLzB3RS8vOVlCUVAvRkFVWC81d0ZOQUEwQlR3QU1BVmovMWdGWi8vSUJ2UC9wQWNELzV3SEkvK2NCeXYvcEFBRUJHLy94QUFJQTlmL0FBVzMvc0FBSkFPWC93d0QxLzg4Qk0vL09BVHovNXdFLy85OEJUZi9SQVUvLzdBRlgvNkFCV1AvUkFDNEFWdjl0QUZ2L2pBQnQvYjhBZlA1OUFJSCt2QUNHL3lzQWlmOUxBTGYvWVFDKy93OEF3djdvQU1YL0h3REcvdVVBeWY5R0FNdis3UURNL3YwQXpmN1pBTmovVWdEbEFBVUE2Zis5QU9yL1NRRHMvdjRBN3Y4VEFQWC9hQUQ4L3c0QS92OFRBUUQvQndFRy93NEJDUDhSQVJ2L1BBRWYvNndCSy84VkFTMy9QQUV4L3c0Qk0vOXFBVGYvU1FFOS93d0JQLzgvQVVEKzhRRkYvOEFCU3Y3dkFVNy9NUUZRLzE4QlZQOEtBVmNBQlFGWS96QUJXZi9WQUJNQVcvL0JBTGYveFFESi83UUE2Zi9YQVBYL3VRRUkvN0lCRy8vU0FSLy95QUV6LzZBQlBmL0ZBVVgvNUFGTy84d0JVUC9NQVZqL3l3RlovKzhCdlAvb0FjRC81Z0hJLytjQnl2L25BQWdBMkFBVkFPd0FGUUU4LytRQlBmL2xBVC8vNUFGTi8rTUJULy9pQVZmLzVBQWlBQXIvNGdBTkFCUUFEdi9QQUVFQUVnQksvK29BVnYvWUFGai82Z0JoQUJNQWJmK3VBSHovelFDQi82QUFodi9CQUluL3dBQzMvOUFBdS8vcUFMNy94Z0MvQUEwQXdmL3BBTUwvMWdERi8rZ0F4dis2QU1uLzZRREwvOHNBelAvYUFNMy94d0YxLzlNQnV2K3JBYnovelFIQS84c0J5UC9MQWNyL3l3SE4vL01CMFAvekFkSC83d0FKQUlILzN3QzAvL01BdHYvd0FNUC82Z0RZLzk4QTVmL2dBVmYvNEFHNi8rMEIwZi8xQUFFQUdBQUVBQUFBQndBcUFGUUFxZ1BjQkZvRXhBVUdBQUVBQndBRUFBd0FLZ0ExQURZQVB3QktBQW9BT1AvWUFOSC8yQURWLzlnQk12L1lBVHIvMkFMYi85Z0MzZi9ZQXQvLzJBT08vOWdFVGYvWUFCVUFPZ0FVQURzQUVnQTlBQllCR0FBVUFtWUFGZ0x0QUJJQzd3QVdBdkVBRmdOWUFCWURad0FXQTJvQUZnT2dBQklEb2dBU0E2UUFFZ09tQUJZRHR3QVVBNzhBRmdSQkFCWUVRd0FXQkVVQUZnUnFBQllBekFBUS94WUFFdjhXQUNYL1ZnQXUvdmdBT0FBVUFFWC8zZ0JILytzQVNQL3JBRW4vNndCTC8rc0FVLy9yQUZYLzZ3QlovK29BV3Yvb0FGMy82QUNULytzQW1QL3JBSnIvNmdDeC8xWUFzLzlXQUxyLzZ3QzgvK2dBeC8vckFNai82d0RLLytvQTBRQVVBTlVBRkFEMi8rc0JBdi9yQVF6L1ZnRVgvK3NCR2Yvb0FSMy82d0VoLytzQk1nQVVBVG4vNndFNkFCUUJTLy9yQVV6LzZ3RlcvK3NCYnY4V0FYTC9GZ0YyL3hZQmQvOFdBa3ovVmdKTi8xWUNUdjlXQWsvL1ZnSlEvMVlDVWY5V0FsTC9WZ0puLzk0Q2FQL2VBbW4vM2dKcS85NENhLy9lQW16LzNnSnQvOTRDYnYvckFtLy82d0p3LytzQ2NmL3JBbkwvNndKNC8rc0NlZi9yQW5yLzZ3SjcvK3NDZlAvckFuMy82Z0orLytvQ2YvL3FBb0QvNmdLQi8rZ0Nndi9vQW9QL1ZnS0UvOTRDaGY5V0FvYi8zZ0tILzFZQ2lQL2VBb3IvNndLTS8rc0Nqdi9yQXBELzZ3S1MvK3NDbFAvckFwYi82d0tZLytzQ212L3JBcHovNndLZS8rc0NvUC9yQXFMLzZ3S2svK3NDc3Y3NEFzYi82d0xJLytzQ3l2L3JBdHNBRkFMZEFCUUMzd0FVQXVMLzZnTGsvK29DNXYvcUF1ai82Z0xxLytvQzdQL3FBdkQvNkFOVC8xWURXLzlXQTJ2LzZ3TnYvK29EY2YvckEzUC82QU4yLytvRGQvL3JBM2ovNmdOLy92Z0RnLzlXQTQ0QUZBT1EvOTREa2YvckE1UC82d09WLytzRGx2L29BNWovNndPZi8rZ0RwLy9vQTYvL1ZnT3cvOTREcy8vckE3ai82QU81LytzRHZ2L3JBOEQvNkFQRi8xWUR4di9lQThmL1ZnUEkvOTREelAvckE4Ny82d1BQLytzRDJmL3JBOXYvNndQZC8rc0Q0Zi9vQStQLzZBUGwvK2dEN1AvckErLy9WZ1B3Lzk0RDhmOVdBL0wvM2dQei8xWUQ5UC9lQS9YL1ZnUDIvOTREOS85V0Evai8zZ1A1LzFZRCt2L2VBL3YvVmdQOC85NEQvZjlXQS83LzNnUC8vMVlFQVAvZUJBSC9WZ1FDLzk0RUEvOVdCQVQvM2dRRi8xWUVCdi9lQkFqLzZ3UUsvK3NFRFAvckJBNy82d1FRLytzRUV2L3JCQlQvNndRVy8rc0VIUC9yQkI3LzZ3UWcvK3NFSXYvckJDVC82d1FtLytzRUtQL3JCQ3IvNndRcy8rc0VMdi9yQkRELzZ3UXkvK3NFTlAvcUJEYi82Z1E0LytvRU92L3FCRHovNmdRKy8rb0VRUC9xQkVMLzZBUkUvK2dFUnYvb0JFMEFGQUFmQURqLzFRQTYvK1FBTy8vc0FEMy8zUURSLzlVQTFmL1ZBUmovNUFFeS85VUJPdi9WQW1iLzNRTGIvOVVDM2YvVkF0Ly8xUUx0Lyt3QzcvL2RBdkgvM1FOWS85MERaLy9kQTJyLzNRT08vOVVEb1Avc0E2TC83QU9rLyt3RHB2L2RBN2YvNUFPLy85MEVRZi9kQkVQLzNRUkYvOTBFVGYvVkJHci8zUUFhQURqL3NBQTYvKzBBUGYvUUFOSC9zQURWLzdBQkdQL3RBVEwvc0FFNi83QUNadi9RQXR2L3NBTGQvN0FDMy8rd0F1Ly8wQUx4LzlBRFdQL1FBMmYvMEFOcS85QURqdit3QTZiLzBBTzMvKzBEdi8vUUJFSC8wQVJELzlBRVJmL1FCRTMvc0FScS85QUFFQUF1Lys0QU9mL3VBbUwvN2dKai8rNENaUC91QW1YLzdnS3kvKzRDNGYvdUF1UC83Z0xsLys0QzUvL3VBdW4vN2dMci8rNERmLy91QkRQLzdnUTEvKzRBUndBR0FCQUFDd0FRQUVmLzZBQkkvK2dBU2Yvb0FFdi82QUJWLytnQWsvL29BSmovNkFDNi8rZ0F4Ly9vQU1qLzZBRDIvK2dCQXYvb0FSMy82QUVoLytnQk9mL29BVXYvNkFGTS8rZ0JWdi9vQVd3QUVBRnRBQkFCYndBUUFYQUFFQUZ4QUJBQ2J2L29BbS8vNkFKdy8rZ0NjZi9vQW5MLzZBS0svK2dDalAvb0FvNy82QUtRLytnQ2t2L29BcFQvNkFLVy8rZ0NtUC9vQXByLzZBS2MvK2dDbnYvb0FxRC82QUtpLytnQ3BQL29BMnYvNkFPUi8rZ0RsZi9vQTVqLzZBT29BQkFEcVFBUUE2d0FFQU96LytnRHVmL29BNzcvNkFQTS8rZ0R6di9vQTgvLzZBUGIvK2dEN1Avb0JBai82QVFLLytnRURQL29CQTcvNkFRUS8rZ0VFdi9vQkJULzZBUVcvK2dFS3Yvb0JDei82QVF1LytnRU12L29BQUVBVmdBRUFBQUFKZ0NtQVp3QitnSVVBbFlDekFQQ0JMZ0ZrZ1lzQ01ZS2pBdGVERlFPR2c1TURuNE8vQkRpRVZnU0toUk1GUUlXYUJjaUY2Z1lCaGpJR1Q0ZXdCbFFHcUljNEIwQ0hoZ2VsaDdBSHVvQUFRQW1BRThBV0FCYkFGOEFuQUMwQUxZQXR3QzRBTDhBd2dEREFNUUF5UURMQU13QXpRRFJBTlVBMXdEWUFOb0E0Z0RtQU9jQTZBRHBBT29BN0FEdUFQQUE5UUQzQVBvQS93RUNBU0VCYlFBOUFFZi83QUJJLyt3QVNmL3NBRXYvN0FCVi8rd0FrLy9zQUpqLzdBQzYvK3dBeC8vc0FNai83QUQyLyt3QkF2L3NBUjMvN0FFaC8rd0JPZi9zQVV2LzdBRk0vK3dCVnYvc0FtNy83QUp2Lyt3Q2NQL3NBbkgvN0FKeS8rd0Npdi9zQW96LzdBS08vK3dDa1Avc0FwTC83QUtVLyt3Q2x2L3NBcGovN0FLYS8rd0NuUC9zQXA3LzdBS2cvK3dDb3Yvc0FxVC83QU5yLyt3RGtmL3NBNVgvN0FPWS8rd0RzLy9zQTduLzdBTysvK3dEelAvc0E4Ny83QVBQLyt3RDIvL3NBK3ovN0FRSS8rd0VDdi9zQkF6LzdBUU8vK3dFRVAvc0JCTC83QVFVLyt3RUZ2L3NCQ3IvN0FRcy8rd0VMdi9zQkRMLzdBQVhBRlAvN0FFWC8rd0NlUC9zQW5uLzdBSjYvK3dDZS8vc0Fuei83QUxHLyt3Q3lQL3NBc3IvN0FOeC8rd0RkLy9zQTVQLzdBUFovK3dEM2Yvc0JCei83QVFlLyt3RUlQL3NCQ0wvN0FRay8rd0VKdi9zQkNqLzdBUXcvK3dBQmdBUS80UUFFditFQVc3L2hBRnkvNFFCZHYrRUFYZi9oQUFRQUM3LzdBQTUvK3dDWXYvc0FtUC83QUprLyt3Q1pmL3NBckwvN0FMaC8rd0M0Ly9zQXVYLzdBTG4vK3dDNmYvc0F1di83QU4vLyt3RU0vL3NCRFgvN0FBZEFBYi84Z0FMLy9JQVd2L3pBRjMvOHdDOC8vTUJHZi96QVd6LzhnRnQvL0lCYi8veUFYRC84Z0Z4Ly9JQ2dmL3pBb0wvOHdMdy8vTURjLy96QTViLzh3T2YvL01EcC8vekE2ai84Z09wLy9JRHJQL3lBN2ovOHdQQS8vTUQ0Zi96QStQLzh3UGwvL01FUXYvekJFVC84d1JHLy9NQVBRQW4vL01BSy8vekFEUC84d0ExLy9NQWcvL3pBSkwvOHdDWC8vTUFzdi96QU5MLzh3RUgvL01CRnYvekFSci84d0VjLy9NQkh2L3pBU0QvOHdFNC8vTUJWZi96QWlqLzh3SXAvL01DSy8vekFpei84d0pULy9NQ1hmL3pBbDcvOHdKZi8vTUNZUC96QW1ILzh3S0ovL01DaS8vekFvMy84d0tQLy9NQ25mL3pBcC8vOHdLaC8vTUNvLy96QXNYLzh3TEgvL01DeWYvekF2ci84d05YLy9NRFpQL3pBNHIvOHdPTi8vTUR1di96QTczLzh3UFkvL01EMnYvekE5ei84d1FiLy9NRUhmL3pCQi8vOHdRaC8vTUVJLy96QkNYLzh3UW4vL01FS2YvekJDdi84d1F0Ly9NRUwvL3pCREgvOHdTcS8vTUFQUUFuLytZQUsvL21BRFAvNWdBMS8rWUFnLy9tQUpMLzVnQ1gvK1lBc3YvbUFOTC81Z0VILytZQkZ2L21BUnIvNWdFYy8rWUJIdi9tQVNELzVnRTQvK1lCVmYvbUFpai81Z0lwLytZQ0svL21BaXovNWdKVC8rWUNYZi9tQWw3LzVnSmYvK1lDWVAvbUFtSC81Z0tKLytZQ2kvL21BbzMvNWdLUC8rWUNuZi9tQXAvLzVnS2gvK1lDby8vbUFzWC81Z0xILytZQ3lmL21BdnIvNWdOWC8rWURaUC9tQTRyLzVnT04vK1lEdXYvbUE3My81Z1BZLytZRDJ2L21BOXovNWdRYi8rWUVIZi9tQkIvLzVnUWgvK1lFSS8vbUJDWC81Z1FuLytZRUtmL21CQ3YvNWdRdC8rWUVMLy9tQkRILzVnU3EvK1lBTmdBbC8rUUFQUC9TQUQzLzB3Q3gvK1FBcy8va0FObi8wZ0VNLytRQ1RQL2tBazMvNUFKTy8rUUNULy9rQWxELzVBSlIvK1FDVXYva0FtYi8wd0tELytRQ2hmL2tBb2YvNUFMdi85TUM4Zi9UQTFQLzVBTlkvOU1EVy8va0EyZi8wd05vLzlJRGF2L1RBNFAvNUFPUC85SURwdi9UQTYvLzVBTy8vOU1Ed3YvU0E4WC81QVBILytRRDBQL1NBK3IvMGdQdi8rUUQ4Zi9rQS9QLzVBUDEvK1FEOS8va0Evbi81QVA3LytRRC9mL2tBLy8vNUFRQi8rUUVBLy9rQkFYLzVBUkIvOU1FUS8vVEJFWC8wd1JQLzlJRVYvL1NCR3IvMHdBbUFCRC9IZ0FTL3g0QUpmL05BTEgvelFDei84MEJEUC9OQVc3L0hnRnkveDRCZHY4ZUFYZi9IZ0pNLzgwQ1RmL05BazcvelFKUC84MENVUC9OQWxIL3pRSlMvODBDZy8vTkFvWC96UUtILzgwRFUvL05BMXYvelFPRC84MERyLy9OQThYL3pRUEgvODBENy8vTkEvSC96UVB6LzgwRDlmL05BL2YvelFQNS84MEQrLy9OQS8zL3pRUC8vODBFQWYvTkJBUC96UVFGLzgwQXBnQkgvOXdBU1AvY0FFbi8zQUJMLzl3QVVmL3pBRkwvOHdCVC85WUFWUC96QUZYLzNBQlovOTBBV3YvaEFGMy80UUNULzl3QW1QL2NBSnIvM1FDNi85d0F2UC9oQU1ELzh3REgvOXdBeVAvY0FNci8zUURyLy9NQTcvL3pBUEQvOHdEeS8vTUE4Ly96QVBULzh3RDIvOXdBOS8vekFQbi84d0Q2Ly9NQS9mL3pBUC8vOHdFQy85d0JCUC96QVJmLzFnRVovK0VCSGYvY0FTSC8zQUUxLy9NQk9mL2NBVVQvOHdGSi8vTUJTLy9jQVV6LzNBRlcvOXdDYnYvY0FtLy8zQUp3Lzl3Q2NmL2NBbkwvM0FKMy8vTUNlUC9XQW5uLzFnSjYvOVlDZS8vV0Fuei8xZ0o5LzkwQ2Z2L2RBbi8vM1FLQS85MENnZi9oQW9MLzRRS0svOXdDalAvY0FvNy8zQUtRLzl3Q2t2L2NBcFQvM0FLVy85d0NtUC9jQXByLzNBS2MvOXdDbnYvY0FxRC8zQUtpLzl3Q3BQL2NBci8vOHdMQi8vTUN3Ly96QXNULzh3TEcvOVlDeVAvV0Fzci8xZ0xpLzkwQzVQL2RBdWIvM1FMby85MEM2di9kQXV6LzNRTHcvK0VEYS8vY0EyMy84d052LzkwRGNmL1dBM1AvNFFOMi85MERkLy9XQTNqLzNRT1IvOXdEa3YvekE1UC8xZ09VLy9NRGxmL2NBNWIvNFFPWS85d0RtZi96QTU3Lzh3T2YvK0VEcC8vaEE2Ny84d096Lzl3RHRQL3pBN2ovNFFPNS85d0R2di9jQThELzRRUE0vOXdEenYvY0E4Ly8zQVBWLy9NRDEvL3pBOW4vMWdQYi85d0QzZi9XQStILzRRUGovK0VENWYvaEErbi84d1BzLzl3RUNQL2NCQXIvM0FRTS85d0VEdi9jQkJELzNBUVMvOXdFRlAvY0JCYi8zQVFjLzlZRUh2L1dCQ0QvMWdRaS85WUVKUC9XQkNiLzFnUW8vOVlFS3YvY0JDei8zQVF1Lzl3RU1QL1dCREwvM0FRMC85MEVOdi9kQkRqLzNRUTYvOTBFUFAvZEJENy8zUVJBLzkwRVF2L2hCRVQvNFFSRy8rRUVTdi96QkV6Lzh3UlcvL01FWS8vekJHWC84d1JuLy9NQWNRQUcvOW9BQy8vYUFFZi84QUJJLy9BQVNmL3dBRXYvOEFCVi8vQUFXZi92QUZyLzNBQmQvOXdBay8vd0FKai84QUNhLys4QXV2L3dBTHovM0FESC8vQUF5UC93QU1yLzd3RDIvL0FCQXYvd0FSbi8zQUVkLy9BQklmL3dBVG4vOEFGTC8vQUJUUC93QVZiLzhBRnMvOW9CYmYvYUFXLy8yZ0Z3LzlvQmNmL2FBbTcvOEFKdi8vQUNjUC93QW5ILzhBSnkvL0FDZmYvdkFuNy83d0ovLys4Q2dQL3ZBb0gvM0FLQy85d0Npdi93QW96LzhBS08vL0FDa1Avd0FwTC84QUtVLy9BQ2x2L3dBcGovOEFLYS8vQUNuUC93QXA3LzhBS2cvL0FDb3Yvd0FxVC84QUxpLys4QzVQL3ZBdWIvN3dMby8rOEM2di92QXV6Lzd3THcvOXdEYS8vd0EyLy83d056Lzl3RGR2L3ZBM2ovN3dPUi8vQURsZi93QTViLzNBT1kvL0FEbi8vY0E2Zi8zQU9vLzlvRHFmL2FBNnovMmdPei8vQUR1UC9jQTduLzhBTysvL0FEd1AvY0E4ei84QVBPLy9BRHovL3dBOXYvOEFQaC85d0Q0Ly9jQStYLzNBUHMvL0FFQ1Avd0JBci84QVFNLy9BRUR2L3dCQkQvOEFRUy8vQUVGUC93QkJiLzhBUXEvL0FFTFAvd0JDNy84QVF5Ly9BRU5QL3ZCRGIvN3dRNC8rOEVPdi92QkR6Lzd3USsvKzhFUVAvdkJFTC8zQVJFLzl3RVJ2L2NBRFFBQnYrZ0FBdi9vQUJaLy9FQVd2L0ZBRjMveFFDYS8vRUF2UC9GQU1yLzhRRVovOFVCYlArZ0FXMy9vQUZ2LzZBQmNQK2dBWEgvb0FKOS8vRUNmdi94QW4vLzhRS0EvL0VDZ2YvRkFvTC94UUxpLy9FQzVQL3hBdWIvOFFMby8vRUM2di94QXV6LzhRTHcvOFVEYi8veEEzUC94UU4yLy9FRGVQL3hBNWIveFFPZi84VURwLy9GQTZqL29BT3AvNkFEclArZ0E3ai94UVBBLzhVRDRmL0ZBK1AveFFQbC84VUVOUC94QkRiLzhRUTQvL0VFT3YveEJEei84UVErLy9FRVFQL3hCRUwveFFSRS84VUVSdi9GQUQwQVIvL25BRWovNXdCSi8rY0FTLy9uQUZYLzV3Q1QvK2NBbVAvbkFMci81d0RILytjQXlQL25BUGIvNXdFQy8rY0JIZi9uQVNILzV3RTUvK2NCUy8vbkFVei81d0ZXLytjQ2J2L25BbS8vNXdKdy8rY0NjZi9uQW5MLzV3S0svK2NDalAvbkFvNy81d0tRLytjQ2t2L25BcFQvNXdLVy8rY0NtUC9uQXByLzV3S2MvK2NDbnYvbkFxRC81d0tpLytjQ3BQL25BMnYvNXdPUi8rY0RsZi9uQTVqLzV3T3ovK2NEdWYvbkE3Ny81d1BNLytjRHp2L25BOC8vNXdQYi8rY0Q3UC9uQkFqLzV3UUsvK2NFRFAvbkJBNy81d1FRLytjRUV2L25CQlQvNXdRVy8rY0VLdi9uQkN6LzV3UXUvK2NFTXYvbkFIRUFCZ0FNQUFzQURBQkgvK2dBU1Avb0FFbi82QUJMLytnQVUvL3FBRlgvNkFCYUFBc0FYUUFMQUpQLzZBQ1kvK2dBdXYvb0FMd0FDd0RILytnQXlQL29BUGIvNkFFQy8rZ0JGLy9xQVJrQUN3RWQvK2dCSWYvb0FUbi82QUZMLytnQlRQL29BVmIvNkFGc0FBd0JiUUFNQVc4QURBRndBQXdCY1FBTUFtNy82QUp2LytnQ2NQL29BbkgvNkFKeS8rZ0NlUC9xQW5uLzZnSjYvK29DZS8vcUFuei82Z0tCQUFzQ2dnQUxBb3IvNkFLTS8rZ0Nqdi9vQXBELzZBS1MvK2dDbFAvb0FwYi82QUtZLytnQ212L29BcHovNkFLZS8rZ0NvUC9vQXFMLzZBS2svK2dDeHYvcUFzai82Z0xLLytvQzhBQUxBMnYvNkFOeC8rb0Rjd0FMQTNmLzZnT1IvK2dEay8vcUE1WC82QU9XQUFzRG1QL29BNThBQ3dPbkFBc0RxQUFNQTZrQURBT3NBQXdEcy8vb0E3Z0FDd081LytnRHZ2L29BOEFBQ3dQTS8rZ0R6di9vQTgvLzZBUFovK29EMi8vb0E5My82Z1BoQUFzRDR3QUxBK1VBQ3dQcy8rZ0VDUC9vQkFyLzZBUU0vK2dFRHYvb0JCRC82QVFTLytnRUZQL29CQmIvNkFRYy8rb0VIdi9xQkNELzZnUWkvK29FSlAvcUJDYi82Z1FvLytvRUt2L29CQ3ovNkFRdS8rZ0VNUC9xQkRMLzZBUkNBQXNFUkFBTEJFWUFDd0FNQUZ6LzdRQmUvKzBBN2YvdEF2UC83UUwxLyswQzkvL3RBNWYvN1FQRC8rMEQwZi90QSt2LzdRUlEvKzBFV1AvdEFBd0FYUC95QUY3LzhnRHQvL0lDOC8veUF2WC84Z0wzLy9JRGwvL3lBOFAvOGdQUi8vSUQ2Ly95QkZELzhnUlkvL0lBSHdCYS8vUUFYUC95QUYzLzlBQmUvL01BdlAvMEFPMy84Z0VaLy9RQ2dmLzBBb0wvOUFMdy8vUUM4Ly96QXZYLzh3TDMvL01EYy8vMEE1Yi85QU9YLy9JRG4vLzBBNmYvOUFPNC8vUUR3UC8wQThQLzhnUFIvL0lENGYvMEErUC85QVBsLy9RRDYvL3lCRUwvOUFSRS8vUUVSdi8wQkZELzhnUlkvL0lBZVFBRy84b0FDLy9LQURqLzBnQTYvOVFBUFAvMEFEMy8wd0JSLzlFQVV2L1JBRlQvMFFCYS8rWUFYUC92QUYzLzVnQzgvK1lBd1AvUkFOSC8wZ0RWLzlJQTJmLzBBTjMvN1FEZy8rRUE2Ly9SQU8zLzd3RHYvOUVBOFAvUkFQTC8wUUR6LzlFQTlQL1JBUGYvMFFENS85RUErdi9SQVAzLzBRRC8vOUVCQlAvUkFSai8xQUVaLytZQk12L1NBVFgvMFFFNi85SUJSUC9SQVVuLzBRRnMvOG9CYmYvS0FXLy95Z0Z3LzhvQmNmL0tBbWIvMHdKMy85RUNnZi9tQW9MLzVnSy8vOUVDd2YvUkFzUC8wUUxFLzlFQzIvL1NBdDMvMGdMZi85SUM3Ly9UQXZELzVnTHgvOU1EV1AvVEEyZi8wd05vLy9RRGF2L1RBMjMvMFFOei8rWURndi90QTQ3LzBnT1AvL1FEa3YvUkE1VC8wUU9XLytZRGwvL3ZBNW4vMFFPZS85RURuLy9tQTZiLzB3T24vK1lEcVAvS0E2bi95Z09zLzhvRHJ2L1JBN1QvMFFPMy85UUR1UC9tQTcvLzB3UEEvK1lEd3YvMEE4UC83d1BRLy9RRDBmL3ZBOVgvMFFQWC85RUQ0UC90QStILzVnUGkvKzBENC8vbUErVC83UVBsLytZRDV2L2hBK24vMFFQcS8vUUQ2Ly92QkVILzB3UkMvK1lFUS8vVEJFVC81Z1JGLzlNRVJ2L21CRXIvMFFSTS85RUVUZi9TQkUvLzlBUlEvKzhFVWYvaEJGUC80UVJXLzlFRVYvLzBCRmovN3dSai85RUVaZi9SQkdmLzBRUnEvOU1BSFFBNC83NEFXdi92QUYzLzd3QzgvKzhBMGYrK0FOWC92Z0VaLys4Qk12KytBVHIvdmdLQi8rOENndi92QXR2L3ZnTGQvNzRDMy8rK0F2RC83d056Lys4RGp2KytBNWIvN3dPZi8rOERwLy92QTdqLzd3UEEvKzhENGYvdkErUC83d1BsLys4RVF2L3ZCRVQvN3dSRy8rOEVUZisrQURRQU9QL21BRHIvNXdBOC8vSUFQZi9uQUZ6LzhRRFIvK1lBMWYvbUFObi84Z0RkLys0QTRQL29BTzMvOFFFWS8rY0JNdi9tQVRyLzVnSm0vK2NDMi8vbUF0My81Z0xmLytZQzcvL25BdkgvNXdOWS8rY0RaLy9uQTJqLzhnTnEvK2NEZ3YvdUE0Ny81Z09QLy9JRGwvL3hBNmIvNXdPMy8rY0R2Ly9uQThMLzhnUEQvL0VEMFAveUE5SC84UVBnLys0RDR2L3VBK1QvN2dQbS8rZ0Q2di95QSt2LzhRUkIvK2NFUS8vbkJFWC81d1JOLytZRVQvL3lCRkQvOFFSUi8rZ0VVLy9vQkZmLzhnUlkvL0VFYXYvbkFJZ0FKUUFRQUNmLzZBQXIvK2dBTS8vb0FEWC82QUE0LytBQU92L2dBRDMvM3dDRC8rZ0Frdi9vQUpmLzZBQ3hBQkFBc3Yvb0FMTUFFQURSLytBQTB2L29BTk1BRUFEVi8rQUEzQUFRQU9ELzRRRHhBQkFBK1AvZ0FRTUFFQUVILytnQkRBQVFBUmIvNkFFWS8rQUJHdi9vQVJ6LzZBRWUvK2dCSVAvb0FUTC80QUU0LytnQk92L2dBVkVBRUFGVi8rZ0NLUC9vQWluLzZBSXIvK2dDTFAvb0Frd0FFQUpOQUJBQ1RnQVFBazhBRUFKUUFCQUNVUUFRQWxJQUVBSlQvK2dDWGYvb0FsNy82QUpmLytnQ1lQL29BbUgvNkFKbS85OENnd0FRQW9VQUVBS0hBQkFDaWYvb0Fvdi82QUtOLytnQ2ovL29BcDMvNkFLZi8rZ0NvZi9vQXFQLzZBTEYvK2dDeC8vb0Fzbi82QUxiLytBQzNmL2dBdC8vNEFMdi85OEM4Zi9mQXZyLzZBTlRBQkFEVi8vb0Exai8zd05iQUJBRFpQL29BMmYvM3dOcS85OERnd0FRQTRyLzZBT04vK2dEanYvZ0E2Yi8zd092QUJBRHQvL2dBN3IvNkFPOS8rZ0R2Ly9mQThVQUVBUEhBQkFEMlAvb0E5ci82QVBjLytnRDV2L2hBK2YvNEFQdEFCQUQ3Z0FRQSs4QUVBUHhBQkFEOHdBUUEvVUFFQVAzQUJBRCtRQVFBL3NBRUFQOUFCQUQvd0FRQkFFQUVBUURBQkFFQlFBUUJCdi82QVFkLytnRUgvL29CQ0gvNkFRai8rZ0VKZi9vQkNmLzZBUXAvK2dFSy8vb0JDMy82QVF2LytnRU1mL29CRUgvM3dSRC85OEVSZi9mQkUzLzRBUlIvK0VFVXYvZ0JGUC80UVJVLytBRWFBQVFCR2tBRUFScS85OEVxdi9vQUMwQU9QL3hBRHIvOUFBOC8vUUFQZi93QU5ILzhRRFQvL1VBMWYveEFObi85QURjLy9VQTNmL3pBUmovOUFFeS8vRUJPdi94QVZILzlRSm0vL0FDMi8veEF0My84UUxmLy9FQzcvL3dBdkgvOEFOWS8vQURaLy93QTJqLzlBTnEvL0FEZ3YvekE0Ny84UU9QLy9RRHB2L3dBN2YvOUFPLy8vQUR3di8wQTlELzlBUGcvL01ENHYvekErVC84d1BxLy9RRDdmLzFCRUgvOEFSRC8vQUVSZi93QkUzLzhRUlAvL1FFVi8vMEJHai85UVJxLy9BQVdRQWxBQThBT1AvbUFEci81Z0E4QUE0QVBmL21BTEVBRHdDekFBOEEwZi9tQU5NQURnRFYvK1lBMlFBT0FOd0FEZ0RkQUFzQTRQL2xBUEVBRHdENC8rZ0JBd0FQQVF3QUR3RVkvK1lCTXYvbUFUci81Z0ZSQUE0Q1RBQVBBazBBRHdKT0FBOENUd0FQQWxBQUR3SlJBQThDVWdBUEFtYi81Z0tEQUE4Q2hRQVBBb2NBRHdMYi8rWUMzZi9tQXQvLzVnTHYvK1lDOGYvbUExTUFEd05ZLytZRFd3QVBBMmYvNWdOb0FBNERhdi9tQTRJQUN3T0RBQThEanYvbUE0OEFEZ09tLytZRHJ3QVBBN2YvNWdPLy8rWUR3Z0FPQThVQUR3UEhBQThEMEFBT0ErQUFDd1BpQUFzRDVBQUxBK2IvNVFQbi8rZ0Q2Z0FPQSswQURnUHVBQThEN3dBUEEvRUFEd1B6QUE4RDlRQVBBL2NBRHdQNUFBOEQrd0FQQS8wQUR3UC9BQThFQVFBUEJBTUFEd1FGQUE4RVFmL21CRVAvNWdSRi8rWUVUZi9tQkU4QURnUlIvK1VFVXYvb0JGUC81UVJVLytnRVZ3QU9CR2dBRGdScEFBOEVhdi9tQUM0QU9QL2pBRHovNVFBOS8rUUEwZi9qQU5QLzVRRFYvK01BMmYvbEFOei81UURkLytrQThmL3FBUVAvNmdFeS8rTUJPdi9qQVZILzVRSm0vK1FDMi8vakF0My80d0xmLytNQzcvL2tBdkgvNUFOWS8rUURaLy9rQTJqLzVRTnEvK1FEZ3YvcEE0Ny80d09QLytVRHB2L2tBNy8vNUFQQy8rVUQwUC9sQStELzZRUGkvK2tENVAvcEErci81UVB0LytVRDd2L3FCRUgvNUFSRC8rUUVSZi9rQkUzLzR3UlAvK1VFVi8vbEJHai81UVJwLytvRWF2L2tBQ0VBT1AvaUFEei81QURSLytJQTAvL2tBTlgvNGdEWi8rUUEzUC9rQU4zLzZRRHgvK3NCQS8vckFUTC80Z0U2LytJQlVmL2tBdHYvNGdMZC8rSUMzLy9pQTJqLzVBT0MvK2tEanYvaUE0Ly81QVBDLytRRDBQL2tBK0QvNlFQaS8ra0Q1UC9wQStyLzVBUHQvK1FEN3YvckJFMy80Z1JQLytRRVYvL2tCR2ovNUFScC8rc0FGd0E0LytzQVBmL3pBTkgvNndEVi8rc0JNdi9yQVRyLzZ3Sm0vL01DMi8vckF0My82d0xmLytzQzcvL3pBdkgvOHdOWS8vTURaLy96QTJyLzh3T08vK3NEcHYvekE3Ly84d1JCLy9NRVEvL3pCRVgvOHdSTi8rc0Vhdi96QURBQVVmL3ZBRkwvN3dCVS8rOEFYUC93QU1ELzd3RHIvKzhBN2Yvd0FPLy83d0R3Lys4QTh2L3ZBUFAvN3dEMC8rOEE5Ly92QVBuLzd3RDYvKzhBL2YvdkFQLy83d0VFLys4Qk5mL3ZBVVQvN3dGSi8rOENkLy92QXIvLzd3TEIvKzhDdy8vdkFzVC83d050Lys4RGt2L3ZBNVQvN3dPWC8vQURtZi92QTU3Lzd3T3UvKzhEdFAvdkE4UC84QVBSLy9BRDFmL3ZBOWYvN3dQcC8rOEQ2Ly93QkVyLzd3Uk0vKzhFVVAvd0JGYi83d1JZLy9BRVkvL3ZCR1gvN3dSbi8rOEFIUUFHLy9JQUMvL3lBRnIvOVFCZC8vVUF2UC8xQVJuLzlRRnMvL0lCYmYveUFXLy84Z0Z3Ly9JQmNmL3lBb0gvOVFLQy8vVUM4UC8xQTNQLzlRT1cvL1VEbi8vMUE2Zi85UU9vLy9JRHFmL3lBNnovOGdPNC8vVUR3UC8xQStILzlRUGovL1VENWYvMUJFTC85UVJFLy9VRVJ2LzFBQVFBK1AvdEErZi83UVJTLyswRVZQL3RBRlFBUi8vd0FFai84QUJKLy9BQVMvL3dBRlAvNndCVi8vQUFrLy93QUpqLzhBQzYvL0FBeC8vd0FNai84QUQyLy9BQkF2L3dBUmYvNndFZC8vQUJJZi93QVRuLzhBRkwvL0FCVFAvd0FWYi84QUp1Ly9BQ2IvL3dBbkQvOEFKeC8vQUNjdi93QW5qLzZ3SjUvK3NDZXYvckFudi82d0o4LytzQ2l2L3dBb3ovOEFLTy8vQUNrUC93QXBMLzhBS1UvL0FDbHYvd0Fwai84QUthLy9BQ25QL3dBcDcvOEFLZy8vQUNvdi93QXFULzhBTEcvK3NDeVAvckFzci82d05yLy9BRGNmL3JBM2YvNndPUi8vQURrLy9yQTVYLzhBT1kvL0FEcy8vd0E3bi84QU8rLy9BRHpQL3dBODcvOEFQUC8vQUQyZi9yQTl2LzhBUGQvK3NEN1Avd0JBai84QVFLLy9BRURQL3dCQTcvOEFRUS8vQUVFdi93QkJULzhBUVcvL0FFSFAvckJCNy82d1FnLytzRUl2L3JCQ1QvNndRbS8rc0VLUC9yQkNyLzhBUXMvL0FFTHYvd0JERC82d1F5Ly9BQWp3QUdBQTBBQ3dBTkFFWC84QUJILzdBQVNQK3dBRW4vc0FCTC83QUFVLy9XQUZYL3NBQmFBQXNBWFFBTEFKUC9zQUNZLzdBQXV2K3dBTHdBQ3dESS83QUE4Zit2QVBiL3NBRUMvN0FCQS8rdkFSZi8xZ0VaQUFzQkhmK3dBU0gvc0FFNS83QUJTLyt3QVV6L3NBRlcvN0FCYkFBTkFXMEFEUUZ2QUEwQmNBQU5BWEVBRFFKbi8vQUNhUC93QW1uLzhBSnEvL0FDYS8vd0Ftei84QUp0Ly9BQ2J2K3dBbS8vc0FKdy83QUNjZit3QW5ML3NBSjQvOVlDZWYvV0Fuci8xZ0o3LzlZQ2ZQL1dBb0VBQ3dLQ0FBc0NoUC93QW9iLzhBS0kvL0FDaXYrd0Fvei9zQUtPLzdBQ2tQK3dBcEwvc0FLVS83QUNsdit3QXBqL3NBS2EvN0FDblArd0FwNy9zQUtnLzdBQ292K3dBcVQvc0FMRy85WUN5UC9XQXNyLzFnTHdBQXNEYS8rd0EzSC8xZ056QUFzRGQvL1dBNUQvOEFPUi83QURrLy9XQTVYL3NBT1dBQXNEbVArd0E1OEFDd09uQUFzRHFBQU5BNmtBRFFPc0FBMERzUC93QTdQL3NBTzRBQXNEdWYrd0E3Ny9zQVBBQUFzRHh2L3dBOGovOEFQTS83QUR6dit3QTgvL3NBUFovOVlEMi8rd0E5My8xZ1BoQUFzRDR3QUxBK1VBQ3dQcy83QUQ3dit2QS9ELzhBUHkvL0FEOVAvd0EvYi84QVA0Ly9BRCt2L3dBL3ovOEFQKy8vQUVBUC93QkFMLzhBUUUvL0FFQnYvd0JBai9zQVFLLzdBRURQK3dCQTcvc0FRUS83QUVFdit3QkJUL3NBUVcvN0FFSFAvV0JCNy8xZ1FnLzlZRUl2L1dCQ1QvMWdRbS85WUVLUC9XQkNyL3NBUXMvN0FFTHYrd0JERC8xZ1F5LzdBRVFnQUxCRVFBQ3dSR0FBc0VhZit2QUFnQThRQVFBUGovOEFFREFCQUQ1Ly93QSs0QUVBUlMvL0FFVlAvd0JHa0FFQUJGQUVjQURBQklBQXdBU1FBTUFFc0FEQUJWQUF3QWt3QU1BSmdBREFDNkFBd0F4d0FNQU1nQURBRHhBQmdBOWdBTUFQai85d0VDQUF3QkF3QVlBUjBBREFFaEFBd0JPUUFNQVVzQURBRk1BQXdCVmdBTUFtNEFEQUp2QUF3Q2NBQU1BbkVBREFKeUFBd0NpZ0FNQW93QURBS09BQXdDa0FBTUFwSUFEQUtVQUF3Q2xnQU1BcGdBREFLYUFBd0NuQUFNQXA0QURBS2dBQXdDb2dBTUFxUUFEQU5yQUF3RGtRQU1BNVVBREFPWUFBd0Rzd0FNQTdrQURBTytBQXdEekFBTUE4NEFEQVBQQUF3RDJ3QU1BK2YvOXdQc0FBd0Q3Z0FZQkFnQURBUUtBQXdFREFBTUJBNEFEQVFRQUF3RUVnQU1CQlFBREFRV0FBd0VLZ0FNQkN3QURBUXVBQXdFTWdBTUJGTC85d1JVLy9jRWFRQVlBQjhBV3YvMEFGei84QUJkLy9RQXZQLzBBTzMvOEFEeC8vTUJBLy96QVJuLzlBS0IvL1FDZ3YvMEF2RC85QU56Ly9RRGx2LzBBNWYvOEFPZi8vUURwLy8wQTdqLzlBUEEvL1FEdy8vd0E5SC84QVBoLy9RRDQvLzBBK1gvOUFQci8vQUQ3di96QkVMLzlBUkUvL1FFUnYvMEJGRC84QVJZLy9BRWFmL3pBQW9BQnYvV0FBdi8xZ0ZzLzlZQmJmL1dBVy8vMWdGdy85WUJjZi9XQTZqLzFnT3AvOVlEclAvV0FBb0FCdi8xQUF2LzlRRnMvL1VCYmYvMUFXLy85UUZ3Ly9VQmNmLzFBNmovOVFPcC8vVURyUC8xQUNFQVRBQWdBRThBSUFCUUFDQUFVLytBQUZmL2tBRVgvNEFDZVArQUFubi9nQUo2LzRBQ2UvK0FBbnovZ0FMRy80QUN5UCtBQXNyL2dBTFMvNUFDMVArUUF0Yi9rQUxZLzVBQzJ2K1FBM0gvZ0FOMy80QURrLytBQTVyL2tBUFovNEFEM2YrQUJCei9nQVFlLzRBRUlQK0FCQ0wvZ0FRay80QUVKditBQkNqL2dBUXcvNEFBQWdlS0FBUUFBQXBlRWI0QUlRQWRBQUFBRWYvTy80OEFFdi8xLysvL2lQLzAvN3YvZi8vMUFBei9xZitpLzhrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rVUFBQUFBLytqL3lRQUEvL01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSQUFELzVRQVJBQUFBQUFBQUFBQUFBUC9qQUFBQUFBQUEvK1QvNUFBQUFCSUFFUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzRRQUFBQUFBQUFBQUFBQUFBQUFBQUFELzVRQUFBQUQvNnYvVkFBQUFBUC9yLytyL212L3BBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvK01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rWUFBQUFBQUFBQUFBQUEvKzBBQUFBVS8rOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC83UUFBQUFBQUFBQUFBQUFBQUFBQUFBRC95Lys0LzN6L2Z2L2tBQUFBQVArZEFBOEFFUCtoLzhRQUVBQVFBQUFBQVAreEFBRC9KZ0FBLzUzL3MvOFkvNVAvOFArUC80ei9FQUFBLzVML2N2OE0vdy8vdlFBQUFBRC9SQUFGQUFmL1MvK0dBQWNBQndBQUFBRC9QZ0FBL25vQUFQOUUvMnIrWXY4ei85SC9MUDhuQUFBQUFBQUFBQUFBQVAvWUFBQUFBQUFBLyt3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvN0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvWS82TUFBUC9oQUFBQUFQL2xBQUFBQVAvcEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rWUFBUC9BLytrQUFBQUFBQUFBQUFBQUFBRC9ld0FBQUFEL3YvL0svckFBQVA5eC91My8xQUFBLzFIL0VRQUFBQUFBRXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9KQUE4QUFQL1pBQUFBQUFBQS8vTUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8zYi80ZjY4LytiLzh3QUFBQUFBQUFBQS8vVUFBUDg0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9xQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOVFBQUFBRC84d0FBQUFELzBnQUFBQUQvNUFBQUFBQUFBQUFBQUFEL3RRQUEveDhBQVAvVUFBRC8yd0FBQUFELzBnQUFBQUFBQUFBUi8rSC8wUUFSLytjQUFBQUEvK3NBQUFBQS8rc0FBQUFPQUFBQUFBQUFBQUFBQUFBQUFBRC81Z0FBLzlJQUFBQUFBQUFBQUFBQUFBQUFBUC9zQUFBQUFQL2ovNkFBQVArL0FCRUFFZi9aLytJQUVnQVNBQUFBQVAraUFBMy9MUUFBLzcvLzZmL00vOWovOFArMy84Yi9vQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC80UUFBQUE3LzdRQUFBQUFBQUFBQUFBRC8xUUFBLzRVQUFQL2hBQUQveEFBQUFBRC8zd0FBQUFBQUFBQUEvK1VBQUFBQS8rWUFBQUFBLytzQUFBQUEvKzBBQUFBQUFBQUFBQUFBQUEwQUFBQUFBQUQvNndBQUFBQUFBQUFBQUFBQUFBQUFBQUQveWdBQS8rbi91Ly9wQUFBQUFQKzlBQUFBRWdBQUFBQUFBQUFTQUFBQUFQK2xBQUQrYlFBQS83MEFBUCtKLzVvQUFQK1IvOUlBQUFBQUFBRC84UUFBQUFBQUFBQUEvNzBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzFBQUQvOGdBQUFBRC80d0FBQUFBQUFBQUEvL0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOFFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOHdBQUFBQUFBQUFBLy9JQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQK1lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC94QUFELzhBQUFBQUQvZUFBQUFBQUFBQUFBLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvOWNBQUFBQUFBLy84UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzVVQUFQL3pBQUFBQUFBQUFBRC84UUFBQUFBQUFBQUFBQklBQUFBQUFBQUFBQUFRLyt3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQK0ZBQUQvN1FBQUFBQUFBQUFBLzlnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQL3NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVArVi84TUFBQUFBQUFBQUFBQUFBQUFBQUFBQS80Z0FBQUFBQUFEL3hRQUFBQUQvN0FBQS84Ny9zQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC9WZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvL1VBQUFBQUFBQUFBQUFBLzhBQUFBQUEvdlVBQUFBQS84ai9yZi9uLytzQUFQL3dBQUFBQUFBQS84a0FBQUFBQUFBQUFBQUFBQUFBQUFBQS85My8yUUFBQUFBQUFQOTVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8xQUFBQUFBQUFBQUFBQUFBQUFBSUFlQUFHQUFZQUFBQUxBQXNBQVFBUUFCQUFBZ0FTQUJJQUF3QWxBQ2tBQkFBc0FEUUFDUUE0QUQ0QUVnQkZBRWNBR1FCSkFFa0FIQUJNQUV3QUhRQlJBRlFBSGdCV0FGWUFJZ0JhQUZvQUl3QmNBRjRBSkFDS0FJb0FKd0N3QUxNQUtBQzhBTHdBTEFEQUFNQUFMUURHQU1ZQUxnRFRBTlFBTHdEV0FOWUFNUURaQU5rQU1nRGJBTjBBTXdEZkFOOEFOZ0RoQU9FQU53RGpBT01BT0FEbEFPVUFPUURyQU9zQU9nRHRBTzBBT3dEMkFQWUFQQUQ3QVBzQVBRRDlBUDRBUGdFREFRUUFRQUVKQVFrQVFnRU1BUXdBUXdFWEFSa0FSQUVyQVMwQVJ3RXdBVEFBU2dFeUFUSUFTd0ZKQVVrQVRBRnNBWElBVFFGMkFYY0FWQUlvQWlnQVZnSXFBaXNBVndKSEFrZ0FXUUpLQWtvQVd3Sk1BbklBWEFKM0Fud0Fnd0tCQXBFQWlRS1RBcHdBbWdLbEFxY0FwQUtwQXFrQXB3S3JBcXNBcUFLdEFxMEFxUUt2QXE4QXFnS3lBcklBcXdLMEFyUUFyQUsyQXJZQXJRSzRBcmdBcmdLNkFyb0Fyd0s4QXJ3QXNBSytBc29Bc1FMTUFzd0F2Z0xPQXM0QXZ3TFFBdEFBd0FMYkF0c0F3UUxkQXQwQXdnTGZBdDhBd3dMaEF1RUF4QUxqQXVNQXhRTGxBdVVBeGdMbkF1Y0F4d0xwQXVrQXlBTHJBdXNBeVFMdEF1MEF5Z0x2QXZjQXl3TlRBMWdBMUFOYkEyb0EyZ050QTIwQTZnTnhBM0VBNndOekEzTUE3QU4zQTNjQTdRTjZBM3NBN2dOOUE0WUE4QU9JQTRvQStnT01BNUVBL1FPVEE1a0JBd09mQTZBQkNnT2lBNklCREFPa0E2UUJEUU9tQTZrQkRnT3NBN0VCRWdPekE3TUJHQU8zQTdnQkdRTzlBOGdCR3dQTEE4d0JKd1BPQTlFQktRUFlBOWtCTFFQZEE5MEJMd1BmQStVQk1BUHFBK3NCTndQdkJCY0JPUVFaQkJrQllnUWJCQ2dCWXdRd0JEQUJjUVF6QkRNQmNnUTFCRFVCY3dSQkJFWUJkQVJKQkVrQmVnUkxCRXNCZXdSTkJFMEJmQVJQQkZBQmZRUlZCRmdCZndSYkJGc0Jnd1JkQkY0QmhBUmdCR0FCaGdSa0JHUUJod1JtQkdZQmlBUnFCR29CaVFTcUJLb0JpZ0FDQVRvQUJnQUdBQjBBQ3dBTEFCMEFFQUFRQUI0QUVnQVNBQjRBSmdBbUFBRUFKd0FuQUFRQUtBQW9BQU1BS1FBcEFBVUFMQUF0QUFJQUxnQXVBQXdBTHdBdkFBa0FNQUF3QUFvQU1RQXlBQUlBTXdBekFBTUFOQUEwQUFzQU9BQTRBQVlBT1FBNUFBd0FPZ0E2QUEwQU93QTdBQkFBUEFBOEFBNEFQUUE5QUE4QVBnQStBQkVBUlFCRkFCTUFSZ0JHQUJVQVJ3QkhBQlFBU1FCSkFCWUFUQUJNQUJjQVVRQlNBQmNBVXdCVEFCZ0FWQUJVQUJVQVZnQldBQm9BV2dCYUFCa0FYQUJjQUJzQVhRQmRBQmtBWGdCZUFCd0FpZ0NLQUJVQXNBQ3dBQWNBc2dDeUFBTUF2QUM4QUJrQXdBREFBQmNBeGdER0FCVUEwd0RVQUI4QTFnRFdBQUlBMlFEWkFBNEEyd0RjQUFJQTNRRGRBQklBM3dEZkFBSUE0UURoQUFJQTR3RGpBQjhBNVFEbEFCOEE2d0RyQUFnQTdRRHRBQnNBOWdEMkFCVUErd0Q3QUNBQS9RRDlBQ0FBL2dEK0FCVUJBd0VFQUNBQkNRRUpBQ0FCRndFWEFCZ0JHQUVZQUEwQkdRRVpBQmtCS3dFckFCVUJMQUVzQUFjQkxRRXRBQWdCTUFFd0FBa0JNZ0V5QUFrQlNRRkpBQWdCYkFGdEFCMEJiZ0Z1QUI0QmJ3RnhBQjBCY2dGeUFCNEJkZ0YzQUI0Q0tBSW9BQVFDS2dJckFBTUNSd0pJQUFNQ1NnSktBQVlDVXdKVEFBUUNWQUpYQUFVQ1dBSmNBQUlDWFFKaEFBTUNZZ0psQUF3Q1pnSm1BQThDWndKdEFCTUNiZ0p1QUJRQ2J3SnlBQllDZHdKM0FCY0NlQUo4QUJnQ2dRS0NBQmtDaEFLRUFCTUNoZ0tHQUJNQ2lBS0lBQk1DaVFLSkFBUUNpZ0tLQUJRQ2l3S0xBQVFDakFLTUFCUUNqUUtOQUFRQ2pnS09BQlFDandLUEFBUUNrQUtRQUJRQ2tRS1JBQU1Da3dLVEFBVUNsQUtVQUJZQ2xRS1ZBQVVDbGdLV0FCWUNsd0tYQUFVQ21BS1lBQllDbVFLWkFBVUNtZ0thQUJZQ213S2JBQVVDbkFLY0FCWUNwUUtsQUFJQ3BnS21BQmNDcHdLbkFBSUNxUUtwQUFJQ3F3S3JBQUlDclFLdEFBSUNyd0t2QUFJQ3NnS3lBQXdDdEFLMEFBa0N0Z0syQUFvQ3VBSzRBQW9DdWdLNkFBb0N2QUs4QUFvQ3ZnSytBQUlDdndLL0FCY0N3QUxBQUFJQ3dRTEJBQmNDd2dMQ0FBSUN3d0xFQUJjQ3hRTEZBQU1DeGdMR0FCZ0N4d0xIQUFNQ3lBTElBQmdDeVFMSkFBTUN5Z0xLQUJnQ3pBTE1BQm9DemdMT0FCb0MwQUxRQUJvQzJ3TGJBQVlDM1FMZEFBWUMzd0xmQUFZQzRRTGhBQXdDNHdMakFBd0M1UUxsQUF3QzV3TG5BQXdDNlFMcEFBd0M2d0xyQUF3QzdRTHRBQkFDN3dMdkFBOEM4QUx3QUJrQzhRTHhBQThDOGdMeUFCRUM4d0x6QUJ3QzlBTDBBQkVDOVFMMUFCd0M5Z0wyQUJFQzl3TDNBQndEVkFOVUFBVURWUU5XQUFJRFZ3TlhBQU1EV0FOWUFBOERYQU5jQUFFRFhRTmRBQVVEWGdOZUFCRURYd05nQUFJRFlRTmhBQWtEWWdOakFBSURaQU5rQUFNRFpRTmxBQXNEWmdObUFBWURad05uQUE4RGFBTm9BQTREYVFOcEFBSURhZ05xQUE4RGJRTnRBQmNEY1FOeEFCZ0Rjd056QUJrRGR3TjNBQmdEZWdONkFBVURld043QUFjRGZRTitBQUlEZndOL0FBd0RnQU9CQUFrRGdnT0NBQklEaEFPRUFBRURoUU9GQUFjRGhnT0dBQVVEaUFPSkFBSURpZ09LQUFNRGpBT01BQXNEalFPTkFBUURqZ09PQUFZRGp3T1BBQTREa0FPUUFCTURrUU9SQUJZRGt3T1RBQmdEbEFPVUFCVURsUU9WQUJRRGxnT1dBQmtEbHdPWEFCc0RtQU9ZQUJZRG1RT1pBQWdEbndPZkFCa0RvQU9nQUJBRG9nT2lBQkFEcEFPa0FCQURwZ09tQUE4RHB3T25BQmtEcUFPcEFCMERyQU9zQUIwRHJRT3RBQUlEcmdPdUFCY0RzQU93QUJNRHNRT3hBQVVEc3dPekFCWUR0d08zQUEwRHVBTzRBQmtEdlFPOUFBUUR2Z08rQUJRRHZ3Ty9BQThEd0FQQUFCa0R3UVBCQUFJRHdnUENBQTREd3dQREFCc0R4QVBFQUFJRHhnUEdBQk1EeUFQSUFCTUR5d1BMQUFVRHpBUE1BQllEemdQUEFCWUQwQVBRQUE0RDBRUFJBQnNEMkFQWUFBTUQyUVBaQUJnRDNRUGRBQmdEM3dQZkFCVUQ0QVBnQUJJRDRRUGhBQmtENGdQaUFCSUQ0d1BqQUJrRDVBUGtBQklENVFQbEFCa0Q2Z1BxQUE0RDZ3UHJBQnNEOEFQd0FCTUQ4Z1B5QUJNRDlBUDBBQk1EOWdQMkFCTUQrQVA0QUJNRCtnUDZBQk1EL0FQOEFCTUQvZ1ArQUJNRUFBUUFBQk1FQWdRQ0FCTUVCQVFFQUJNRUJnUUdBQk1FQndRSEFBVUVDQVFJQUJZRUNRUUpBQVVFQ2dRS0FCWUVDd1FMQUFVRURBUU1BQllFRFFRTkFBVUVEZ1FPQUJZRUR3UVBBQVVFRUFRUUFCWUVFUVFSQUFVRUVnUVNBQllFRXdRVEFBVUVGQVFVQUJZRUZRUVZBQVVFRmdRV0FCWUVGd1FYQUFJRUdRUVpBQUlFR3dRYkFBTUVIQVFjQUJnRUhRUWRBQU1FSGdRZUFCZ0VId1FmQUFNRUlBUWdBQmdFSVFRaEFBTUVJZ1FpQUJnRUl3UWpBQU1FSkFRa0FCZ0VKUVFsQUFNRUpnUW1BQmdFSndRbkFBTUVLQVFvQUJnRU1BUXdBQmdFTXdRekFBd0VOUVExQUF3RVFRUkJBQThFUWdSQ0FCa0VRd1JEQUE4RVJBUkVBQmtFUlFSRkFBOEVSZ1JHQUJrRVNRUkpBQWtFU3dSTEFBSUVUUVJOQUFZRVR3UlBBQTRFVUFSUUFCc0VWUVJWQUFjRVZnUldBQWdFVndSWEFBNEVXQVJZQUJzRVd3UmJBQmNFWFFSZEFCOEVYZ1JlQUFjRVlBUmdBQWtFWkFSa0FBSUVaZ1JtQUFJRWFnUnFBQThFcWdTcUFBTUFBZ0Z0QUFZQUJnQUhBQXNBQ3dBSEFCQUFFQUFUQUJFQUVRQVhBQklBRWdBVEFDVUFKUUFSQUNjQUp3QUZBQ3NBS3dBRkFDNEFMZ0FjQURNQU13QUZBRFVBTlFBRkFEY0FOd0FaQURnQU9BQUtBRGtBT1FBR0FEb0FPZ0FOQURzQU93QUpBRHdBUEFBU0FEMEFQUUFPQUQ0QVBnQVVBRVVBUlFBYUFFY0FTUUFWQUVzQVN3QVZBRkVBVWdBWUFGTUFVd0FJQUZRQVZBQVlBRlVBVlFBVkFGY0FWd0FiQUZrQVdRQUxBRm9BV2dBQ0FGd0FYQUFXQUYwQVhRQUNBRjRBWGdBTUFJTUFnd0FGQUpJQWtnQUZBSk1Ba3dBVkFKY0Fsd0FGQUpnQW1BQVZBSm9BbWdBTEFMRUFzUUFSQUxJQXNnQUZBTE1Bc3dBUkFMb0F1Z0FWQUx3QXZBQUNBTUFBd0FBWUFNY0F5QUFWQU1vQXlnQUxBTkVBMFFBS0FOSUEwZ0FGQU5NQTB3QUJBTlVBMVFBS0FOa0EyUUFTQU53QTNBQUJBTjBBM1FBUUFPQUE0QUFQQU9zQTZ3QVlBTzBBN1FBV0FPOEE4QUFZQVBFQThRQUVBUElBOUFBWUFQWUE5Z0FWQVBjQTl3QVlBUGdBK0FBREFQa0ErZ0FZQVAwQS9RQVlBUDhBL3dBWUFRSUJBZ0FWQVFNQkF3QUVBUVFCQkFBWUFRY0JCd0FGQVF3QkRBQVJBUllCRmdBRkFSY0JGd0FJQVJnQkdBQU5BUmtCR1FBQ0FSb0JHZ0FGQVJ3QkhBQUZBUjBCSFFBVkFSNEJIZ0FGQVNBQklBQUZBU0VCSVFBVkFUSUJNZ0FLQVRVQk5RQVlBVGdCT0FBRkFUa0JPUUFWQVRvQk9nQUtBVVFCUkFBWUFVa0JTUUFZQVVzQlRBQVZBVkVCVVFBQkFWVUJWUUFGQVZZQlZnQVZBV2tCYWdBWEFXd0JiUUFIQVc0QmJnQVRBVzhCY1FBSEFYSUJjZ0FUQVhZQmR3QVRBaWdDS1FBRkFpc0NMQUFGQWtZQ1JnQVhBa3dDVWdBUkFsTUNVd0FGQWwwQ1lRQUZBbUlDWlFBR0FtWUNaZ0FPQW1jQ2JRQWFBbTRDY2dBVkFuY0Nkd0FZQW5nQ2ZBQUlBbjBDZ0FBTEFvRUNnZ0FDQW9NQ2d3QVJBb1FDaEFBYUFvVUNoUUFSQW9ZQ2hnQWFBb2NDaHdBUkFvZ0NpQUFhQW9rQ2lRQUZBb29DaWdBVkFvc0Npd0FGQW93Q2pBQVZBbzBDalFBRkFvNENqZ0FWQW84Q2p3QUZBcEFDa0FBVkFwSUNrZ0FWQXBRQ2xBQVZBcFlDbGdBVkFwZ0NtQUFWQXBvQ21nQVZBcHdDbkFBVkFwMENuUUFGQXA0Q25nQVZBcDhDbndBRkFxQUNvQUFWQXFFQ29RQUZBcUlDb2dBVkFxTUNvd0FGQXFRQ3BBQVZBcklDc2dBY0FyOEN2d0FZQXNFQ3dRQVlBc01DeEFBWUFzVUN4UUFGQXNZQ3hnQUlBc2NDeHdBRkFzZ0N5QUFJQXNrQ3lRQUZBc29DeWdBSUF0RUMwUUFaQXRJQzBnQWJBdE1DMHdBWkF0UUMxQUFiQXRVQzFRQVpBdFlDMWdBYkF0Y0Mxd0FaQXRnQzJBQWJBdGtDMlFBWkF0b0MyZ0FiQXRzQzJ3QUtBdDBDM1FBS0F0OEMzd0FLQXVFQzRRQUdBdUlDNGdBTEF1TUM0d0FHQXVRQzVBQUxBdVVDNVFBR0F1WUM1Z0FMQXVjQzV3QUdBdWdDNkFBTEF1a0M2UUFHQXVvQzZnQUxBdXNDNndBR0F1d0M3QUFMQXUwQzdRQUpBdThDN3dBT0F2QUM4QUFDQXZFQzhRQU9BdklDOGdBVUF2TUM4d0FNQXZRQzlBQVVBdlVDOVFBTUF2WUM5Z0FVQXZjQzl3QU1Bdm9DK2dBRkExTURVd0FSQTFjRFZ3QUZBMWdEV0FBT0Exc0RXd0FSQTE0RFhnQVVBMlFEWkFBRkEyY0Rad0FPQTJnRGFBQVNBMm9EYWdBT0Eyc0Rhd0FWQTIwRGJRQVlBMjhEYndBTEEzRURjUUFJQTNNRGN3QUNBM1lEZGdBTEEzY0Rkd0FJQTNnRGVBQUxBMzhEZndBY0E0SURnZ0FRQTRNRGd3QVJBNG9EaWdBRkE0MERqUUFGQTQ0RGpnQUtBNDhEandBU0E1QURrQUFhQTVFRGtRQVZBNUlEa2dBWUE1TURrd0FJQTVRRGxBQVlBNVVEbFFBVkE1WURsZ0FDQTVjRGx3QVdBNWdEbUFBVkE1a0RtUUFZQTVvRG1nQWJBNTREbmdBWUE1OERud0FDQTZBRG9BQUpBNklEb2dBSkE2UURwQUFKQTZZRHBnQU9BNmNEcHdBQ0E2Z0RxUUFIQTZ3RHJBQUhBNjREcmdBWUE2OERyd0FSQTdBRHNBQWFBN01Ec3dBVkE3UUR0QUFZQTdjRHR3QU5BN2dEdUFBQ0E3a0R1UUFWQTdvRHVnQUZBNzBEdlFBRkE3NER2Z0FWQTc4RHZ3QU9BOEFEd0FBQ0E4SUR3Z0FTQThNRHd3QVdBOFVEeFFBUkE4WUR4Z0FhQThjRHh3QVJBOGdEeUFBYUE4d0R6QUFWQTg0RHp3QVZBOUFEMEFBU0E5RUQwUUFXQTlVRDFRQVlBOWNEMXdBWUE5Z0QyQUFGQTlrRDJRQUlBOW9EMmdBRkE5c0Qyd0FWQTl3RDNBQUZBOTBEM1FBSUErQUQ0QUFRQStFRDRRQUNBK0lENGdBUUErTUQ0d0FDQStRRDVBQVFBK1VENVFBQ0ErWUQ1Z0FQQStjRDV3QURBK2tENlFBWUErb0Q2Z0FTQStzRDZ3QVdBK3dEN0FBVkErMEQ3UUFCQSs0RDdnQUVBKzhEN3dBUkEvQUQ4QUFhQS9FRDhRQVJBL0lEOGdBYUEvTUQ4d0FSQS9RRDlBQWFBL1VEOVFBUkEvWUQ5Z0FhQS9jRDl3QVJBL2dEK0FBYUEva0QrUUFSQS9vRCtnQWFBL3NEK3dBUkEvd0QvQUFhQS8wRC9RQVJBLzREL2dBYUEvOEQvd0FSQkFBRUFBQWFCQUVFQVFBUkJBSUVBZ0FhQkFNRUF3QVJCQVFFQkFBYUJBVUVCUUFSQkFZRUJnQWFCQWdFQ0FBVkJBb0VDZ0FWQkF3RURBQVZCQTRFRGdBVkJCQUVFQUFWQkJJRUVnQVZCQlFFRkFBVkJCWUVGZ0FWQkJzRUd3QUZCQndFSEFBSUJCMEVIUUFGQkI0RUhnQUlCQjhFSHdBRkJDQUVJQUFJQkNFRUlRQUZCQ0lFSWdBSUJDTUVJd0FGQkNRRUpBQUlCQ1VFSlFBRkJDWUVKZ0FJQkNjRUp3QUZCQ2dFS0FBSUJDa0VLUUFGQkNvRUtnQVZCQ3NFS3dBRkJDd0VMQUFWQkMwRUxRQUZCQzRFTGdBVkJDOEVMd0FGQkRBRU1BQUlCREVFTVFBRkJESUVNZ0FWQkRNRU13QUdCRFFFTkFBTEJEVUVOUUFHQkRZRU5nQUxCRGdFT0FBTEJEb0VPZ0FMQkR3RVBBQUxCRDRFUGdBTEJFQUVRQUFMQkVFRVFRQU9CRUlFUWdBQ0JFTUVRd0FPQkVRRVJBQUNCRVVFUlFBT0JFWUVSZ0FDQkVvRVNnQVlCRXdFVEFBWUJFMEVUUUFLQkU4RVR3QVNCRkFFVUFBV0JGRUVVUUFQQkZJRVVnQURCRk1FVXdBUEJGUUVWQUFEQkZZRVZnQVlCRmNFVndBU0JGZ0VXQUFXQkdNRVl3QVlCR1VFWlFBWUJHY0Vad0FZQkdnRWFBQUJCR2tFYVFBRUJHb0VhZ0FPQkhBRWNBQVhCS29FcWdBRkFBRUFBQUFLQWdZRzhBQUVSRVpNVkFBYVkzbHliQUJJWjNKbGF3QjJiR0YwYmdDa0FBUUFBQUFBLy84QUVnQUFBQW9BRkFBZUFDZ0FOQUJCQUVzQVZRQmZBR2tBY3dCOUFJY0FrUUNiQUtVQXJ3QUVBQUFBQVAvL0FCSUFBUUFMQUJVQUh3QXBBRFVBUWdCTUFGWUFZQUJxQUhRQWZnQ0lBSklBbkFDbUFMQUFCQUFBQUFELy93QVNBQUlBREFBV0FDQUFLZ0EyQUVNQVRRQlhBR0VBYXdCMUFIOEFpUUNUQUowQXB3Q3hBQ2dBQmtGYVJTQUFWRU5TVkNBQWZrMVBUQ0FBcUU1QlZpQUExRkpQVFNBQkFGUlZVaUFCTEFBQS8vOEFFd0FEQUEwQUZ3QWhBQ3NBTWdBM0FFUUFUZ0JZQUdJQWJBQjJBSUFBaWdDVUFKNEFxQUN5QUFELy93QVNBQVFBRGdBWUFDSUFMQUE0QUVVQVR3QlpBR01BYlFCM0FJRUFpd0NWQUo4QXFRQ3pBQUQvL3dBU0FBVUFEd0FaQUNNQUxRQTVBRVlBVUFCYUFHUUFiZ0I0QUlJQWpBQ1dBS0FBcWdDMEFBRC8vd0FUQUFZQUVBQWFBQ1FBTGdBNkFENEFSd0JSQUZzQVpRQnZBSGtBZ3dDTkFKY0FvUUNyQUxVQUFQLy9BQk1BQndBUkFCc0FKUUF2QURzQVB3QklBRklBWEFCbUFIQUFlZ0NFQUk0QW1BQ2lBS3dBdGdBQS8vOEFFd0FJQUJJQUhBQW1BREFBUEFCQUFFa0FVd0JkQUdjQWNRQjdBSVVBandDWkFLTUFyUUMzQUFELy93QVRBQWtBRXdBZEFDY0FNUUF6QUQwQVNnQlVBRjRBYUFCeUFId0FoZ0NRQUpvQXBBQ3VBTGdBdVdNeWMyTUVXR015YzJNRVdHTXljMk1FV0dNeWMyTUVXR015YzJNRVdHTXljMk1FV0dNeWMyTUVXR015YzJNRVdHTXljMk1FV0dNeWMyTUVXR05qYlhBRVhtTmpiWEFFWG1OamJYQUVYbU5qYlhBRVhtTmpiWEFFWG1OamJYQUVYbU5qYlhBRVhtTmpiWEFFWG1OamJYQUVYbU5qYlhBRVhtUnNhV2NFWm1Sc2FXY0VabVJzYVdjRVptUnNhV2NFWm1Sc2FXY0VabVJzYVdjRVptUnNhV2NFWm1Sc2FXY0VabVJzYVdjRVptUnNhV2NFWm1SdWIyMEViR1J1YjIwRWJHUnViMjBFYkdSdWIyMEViR1J1YjIwRWJHUnViMjBFYkdSdWIyMEViR1J1YjIwRWJHUnViMjBFYkdSdWIyMEViR1p5WVdNRWNtWnlZV01FY21aeVlXTUVjbVp5WVdNRWNtWnlZV01FY21aeVlXTUVjbVp5WVdNRWNtWnlZV01FY21aeVlXTUVjbVp5WVdNRWNteHBaMkVFZkd4cFoyRUVoR3h1ZFcwRWlteHVkVzBFaW14dWRXMEVpbXh1ZFcwRWlteHVkVzBFaW14dWRXMEVpbXh1ZFcwRWlteHVkVzBFaW14dWRXMEVpbXh1ZFcwRWlteHZZMndFa0d4dlkyd0VsbXh2WTJ3RW5HNTFiWElFb201MWJYSUVvbTUxYlhJRW9tNTFiWElFb201MWJYSUVvbTUxYlhJRW9tNTFiWElFb201MWJYSUVvbTUxYlhJRW9tNTFiWElFb205dWRXMEVxRzl1ZFcwRXFHOXVkVzBFcUc5dWRXMEVxRzl1ZFcwRXFHOXVkVzBFcUc5dWRXMEVxRzl1ZFcwRXFHOXVkVzBFcUc5dWRXMEVxSEJ1ZFcwRXJuQnVkVzBFcm5CdWRXMEVybkJ1ZFcwRXJuQnVkVzBFcm5CdWRXMEVybkJ1ZFcwRXJuQnVkVzBFcm5CdWRXMEVybkJ1ZFcwRXJuTnRZM0FFdEhOdFkzQUV0SE50WTNBRXRITnRZM0FFdEhOdFkzQUV0SE50WTNBRXRITnRZM0FFdEhOdFkzQUV0SE50WTNBRXRITnRZM0FFdEhOek1ERUV1bk56TURFRXVuTnpNREVFdW5Oek1ERUV1bk56TURFRXVuTnpNREVFdW5Oek1ERUV1bk56TURFRXVuTnpNREVFdW5Oek1ERUV1bk56TURJRXdITnpNRElFd0hOek1ESUV3SE56TURJRXdITnpNRElFd0hOek1ESUV3SE56TURJRXdITnpNRElFd0hOek1ESUV3SE56TURJRXdITnpNRE1FeG5Oek1ETUV4bk56TURNRXhuTnpNRE1FeG5Oek1ETUV4bk56TURNRXhuTnpNRE1FeG5Oek1ETUV4bk56TURNRXhuTnpNRE1FeG5Oek1EUUV6SE56TURRRXpITnpNRFFFekhOek1EUUV6SE56TURRRXpITnpNRFFFekhOek1EUUV6SE56TURRRXpITnpNRFFFekhOek1EUUV6SE56TURVRTBuTnpNRFVFMG5Oek1EVUUwbk56TURVRTBuTnpNRFVFMG5Oek1EVUUwbk56TURVRTBuTnpNRFVFMG5Oek1EVUUwbk56TURVRTBuTnpNRFlFMkhOek1EWUUySE56TURZRTJITnpNRFlFMkhOek1EWUUySE56TURZRTJITnpNRFlFMkhOek1EWUUySE56TURZRTJITnpNRFlFMkhOek1EY0Uzbk56TURjRTNuTnpNRGNFM25Oek1EY0Uzbk56TURjRTNuTnpNRGNFM25Oek1EY0Uzbk56TURjRTNuTnpNRGNFM25Oek1EY0UzblJ1ZFcwRTVIUnVkVzBFNUhSdWRXMEU1SFJ1ZFcwRTVIUnVkVzBFNUhSdWRXMEU1SFJ1ZFcwRTVIUnVkVzBFNUhSdWRXMEU1SFJ1ZFcwRTVBQUFBQUVBQUFBQUFBSUFBZ0FEQUFBQUFRQUhBQUFBQVFBWUFBQUFBd0FWQUJZQUZ3QUFBQUlBQ0FBSkFBQUFBUUFKQUFBQUFRQVVBQUFBQVFBRUFBQUFBUUFHQUFBQUFRQUZBQUFBQVFBWkFBQUFBUUFSQUFBQUFRQVRBQUFBQVFBQkFBQUFBUUFLQUFBQUFRQUxBQUFBQVFBTUFBQUFBUUFOQUFBQUFRQU9BQUFBQVFBUEFBQUFBUUFRQUFBQUFRQVNBQnNBT0FQR0JyUUhZQTN3RGZBT0JnNG9EbDRPaEE2eURzWU8yZzd1RHdBUEdnOWNEM29QbUEvS0Qvd1FMaEJDRUhvUWJCQjZFS1lBQVFBQUFBRUFDQUFDQWNRQTN3SG5BYm9CdXdHOEFiMEJ2Z0cvQWNBQndRSENBY01CeEFIRkFjWUJ4d0hJQWNrQnlnSExBY3dCelFIT0FjOEIwQUhSQWRJQjB3SG9BZWtDUkFJN0Flb0I2d0hzQWUwQjdnSHZBZkFCOFFIeUFmTUI5QUgxQWZZQjl3SDRBZmtCK2dIN0Fmd0IvUUgrQWdBQ0FRVGRBZ0lDQXdJRUFnVUNCZ0lIQWdnQ0NRSUtBZ3NDTHdJUEFoQUNFUUlVQWhVQ0ZnSVhBaGdDR1FJYkFod0NIZ0lkQXZ3Qy9RTCtBdjhEQUFNQkF3SURBd01FQXdVREJnTUhBd2dEQ1FNS0F3c0REQU1OQXc0RER3TVFBeEVERWdNVEF4UURGUU1XQXhjREdBTVpBeG9ER3dNY0F4MERIZ01mQXlBRElRTWlBeU1ESkFNbEF5WURKd01vQXlrREtnTXJBeXdETFFNdUF5OERNQU14QXpJRE13TTBBelVETmdNM0F6Z0RPUU02QXpzRFBBTTlBejREUHdOQUEwRURRZ05EQTBRRFJnTkZBMGNEU0FOSkEwb0RTd05NQTAwRFRnTlBBMUFEVVFOU0JLc0VyQVN0Qks0RXJ3U3dCTEVFc2dTekJMUUV0UVMyQkxjRXVBUzVCTG9FdXdTOEJMMEV2Z1MvQk1BRXdRVENCTU1FeEFURkJNWUIvd1RIQk1nRXlRVEtCTXNFekFUTkJNNEV6d1RRQk5FRTBnVFRCTlFFMVFUV0JOZ0UyUVRiQWhvRTNBSU9CTmNDRXdJTkJOb0NEQUlTQUFFQTN3QUlBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QUQwQVBnQmxBR2NBaFFDU0FMQUFzUUN5QUxNQXRBQzFBTFlBdHdDNEFMa0EwUURTQU5NQTFBRFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBTjhBNEFEaEFPSUE0d0RrQU9VQTVnRG5BT2dCTEFFd0FUSUJPQUU2QVR3QlBnRS9BVVVCUmdGL0FZVUJpZ0dOQWtjQ1NBSktBa3dDVFFKT0FrOENVQUpSQWxJQ1V3SlVBbFVDVmdKWEFsZ0NXUUphQWxzQ1hBSmRBbDRDWHdKZ0FtRUNZZ0pqQW1RQ1pRSm1Bb01DaFFLSEFva0Npd0tOQW84Q2tRS1RBcFVDbHdLWkFwc0NuUUtmQXFFQ293S2xBcWNDcVFLckFxMENyd0t5QXJRQ3RnSzRBcm9DdkFLK0FzQUN3Z0xGQXNjQ3lRTExBczBDendMUkF0TUMxUUxaQXRzQzNRTGZBdUVDNHdMbEF1Y0M2UUxyQXUwQzd3THhBdklDOUFMMkExTURWQU5WQTFZRFZ3TllBMWtEV3dOY0ExMERYZ05mQTJBRFlRTmlBMlFEWlFObUEyY0RhQU5wQTJvRGVnTjdBM3dEZlFOK0EzOERnQU9CQTRJRGd3T0VBNFVEaGdPSEE0Z0RpUU9LQTRzRGpBT05BNDREandPN0E3MER2d1BVQTlvRDRBUkpCRXNFVHdSWEJGa0VYZ1JxQUFFQUFBQUJBQWdBQWdGMEFMY0J1Z0c3QWJ3QnZRRytBYjhCd0FIQkFjSUJ3d0hFQWNVQnhnSEhBY2dCeVFIS0Fjc0J6QUhOQWM0Qnp3SFFBZEVCMGdIVEF2MERNQUk3QWZvRXlnVExBZnNCL0FIOUFmNEIvd0lBQk00RXp3VFJCTlFFM1FJQ0FnTUNCQUlGQWdZQ0J3SUlBZ2tDQ2dJTEFmUUI5UUgyQWZjQitBSDVBaThDRHdJUUFoRUNGQUlWQWhjQ0dRTCtBdjhEQUFNQkF3SURBd01FQXdVREJnTUhBd2dEQ1FNS0F3c0REQU1OQXc0RER3TVFBeEVERWdNVEF4UURGUU1XQXhjREdBTVpBMDhER2dNYkF4d0RIUU1lQXg4RElBTWhBeUlESXdNa0F5VURKZ01uQXlnREtRTXFBeXNETEFNdEF5NERMd014QXpJRE13TTBBelVETmdNM0F6Z0RPUU02QXpzRFBBTTlBejREUHdOQUEwRURRZ05EQTBRRFJnTkZBMGNEU0FOSkEwb0RTd05NQTAwRFRnTlFBMUVEVWdUSkJNd0V6UVRRQk5JRTB3SUJCTlVFd1FUQ0JNTUV4QVRGQk1ZRXh3VElCTllFMkFUWkFoZ0Uyd0lhQk53Qy9BSU9CTmNDRXdJTkJOb0NGZ0lNQWhJQUFRQzNBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQ0hBSXdBa3dEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QkFBRUJBUUlCQXdFRUFRVUJCZ0V0QVRFQk13RTVBVHNCUFFGQUFVY0NTd0puQW1nQ2FRSnFBbXNDYkFKdEFtNENid0p3QW5FQ2NnSnpBblFDZFFKMkFuY0NlQUo1QW5vQ2V3SjhBbjBDZmdKL0FvQUNnUUtDQW9RQ2hnS0lBb29DakFLT0FwQUNrZ0tVQXBZQ21BS2FBcHdDbmdLZ0FxSUNwQUttQXFnQ3FnS3NBcTRDc3dLMUFyY0N1UUs3QXIwQ3Z3TEJBc01DeGdMSUFzb0N6QUxPQXRBQzBnTFVBdFlDMmdMY0F0NEM0QUxpQXVRQzVnTG9BdW9DN0FMdUF2QUM4d0wxQXZjRGtBT1JBNUlEa3dPVUE1VURsZ09YQTVnRG1RT2FBNXNEbkFPZEE1NERud084QTc0RHdBUE9BOVVEMndQaEJFY0VTZ1JNQkZBRVdBUmFCRnNFWHdSckFBWUFBQUFHQUJJQUtnQkNBRm9BY2dDS0FBTUFBQUFCQUJJQUFRQ1FBQUVBQUFBYUFBRUFBUUJOQUFNQUFBQUJBQklBQVFCNEFBRUFBQUFhQUFFQUFRQk9BQU1BQUFBQkFCSUFBUUJnQUFFQUFBQWFBQUVBQVFLdUFBTUFBQUFCQUJJQUFRQklBQUVBQUFBYUFBRUFBUU9iQUFNQUFBQUJBQklBQVFBd0FBRUFBQUFhQUFFQUFRT2RBQU1BQUFBQkFCSUFBUUFZQUFFQUFBQWFBQUVBQVFRYUFBSUFBUUNuQUtzQUFBQUVBQUFBQVFBSUFBRUdIZ0EyQUhJQXBBQ3VBTGdBeWdEOEFRNEJHQUZLQVdRQmZnR1FBYm9CN0FIMkFoZ0NNZ0pFQW5ZQ2lBS2lBc3dDM2dNUUF4b0RKQU0yQTJnRGNnTjhBNFlEb0FPNkE4d0Q5Z1FvQkRJRVZBUnVCSUFFc2dURUJONEZDQVVhQlNRRkxnVTRCVUlGYkFXV0JjQUY2Z1lVQUFZQURnQVVBQm9BSUFBbUFDd0NUQUFDQUtjQ1RRQUNBS2dDVHdBQ0FLa0Q4UUFDQUtvRWV3QUNBS3NEN3dBQ0FLd0FBUUFFQklnQUFnQ3NBQUVBQkFLSkFBSUFxQUFDQUFZQURBU0tBQUlBckFTTUFBSUJvZ0FHQUE0QUZBQWFBQ0FBSmdBc0FsUUFBZ0NuQWxVQUFnQ29CQXNBQWdDcEJBa0FBZ0NxQkgwQUFnQ3JCQWNBQWdDc0FBSUFCZ0FNQkhjQUFnQ29BcU1BQWdHaUFBRUFCQVNPQUFJQXJBQUdBQTRBRkFBYUFDQUFKZ0FzQWxnQUFnQ25BbGtBQWdDb0FxY0FBZ0NwQkJjQUFnQ3FCSDhBQWdDckJCa0FBZ0NzQUFNQUNBQU9BQlFFa0FBQ0FLZ0VrZ0FDQUt3Q3RBQUNBYUlBQXdBSUFBNEFGQUsyQUFJQXFBU1VBQUlBckFLNEFBSUJvZ0FDQUFZQURBT3RBQUlBcUFTV0FBSUFyQUFGQUF3QUVnQVlBQjRBSkFSNUFBSUFwd0srQUFJQXFBSmNBQUlBcVFTWUFBSUFyQUxBQUFJQm9nQUdBQTRBRkFBYUFDQUFKZ0FzQWwwQUFnQ25BbDRBQWdDb0FtQUFBZ0NwQkIwQUFnQ3FCSUVBQWdDckJCc0FBZ0NzQUFFQUJBU2FBQUlBcUFBRUFBb0FFQUFXQUJ3Q3l3QUNBS2dFZ3dBQ0FLc0VuQUFDQUt3Q3pRQUNBYUlBQXdBSUFBNEFGQUxSQUFJQXFBU2VBQUlBckFMWEFBSUJvZ0FDQUFZQURBU2dBQUlBckFMYkFBSUJvZ0FHQUE0QUZBQWFBQ0FBSmdBc0FtSUFBZ0NuQW1NQUFnQ29BdUVBQWdDcEJEVUFBZ0NxQklVQUFnQ3JCRE1BQWdDc0FBSUFCZ0FNQktJQUFnQ3BCS1FBQWdDc0FBTUFDQUFPQUJRRG9BQUNBS2NEb2dBQ0FLZ0VwZ0FDQUt3QUJRQU1BQklBR0FBZUFDUURwZ0FDQUtjQ1pnQUNBS2dFUlFBQ0FLa0VRd0FDQUtvRVFRQUNBS3dBQWdBR0FBd0M4Z0FDQUtnRXFBQUNBS3dBQmdBT0FCUUFHZ0FnQUNZQUxBSm5BQUlBcHdKb0FBSUFxQUpxQUFJQXFRUHlBQUlBcWdSOEFBSUFxd1B3QUFJQXJBQUJBQVFFaVFBQ0FLd0FBUUFFQW9vQUFnQ29BQUlBQmdBTUJJc0FBZ0NzQkkwQUFnR2lBQVlBRGdBVUFCb0FJQUFtQUN3Q2J3QUNBS2NDY0FBQ0FLZ0VEQUFDQUtrRUNnQUNBS29FZmdBQ0FLc0VDQUFDQUt3QUFRQUVCSGdBQWdDb0FBRUFCQVNQQUFJQXJBQUJBQVFFR2dBQ0FLd0FBd0FJQUE0QUZBU1JBQUlBcUFTVEFBSUFyQUsxQUFJQm9nQURBQWdBRGdBVUFyY0FBZ0NvQkpVQUFnQ3NBcmtBQWdHaUFBSUFCZ0FNQTY0QUFnQ29CSmNBQWdDc0FBVUFEQUFTQUJnQUhnQWtCSG9BQWdDbkFyOEFBZ0NvQW5jQUFnQ3BCSmtBQWdDc0FzRUFBZ0dpQUFZQURnQVVBQm9BSUFBbUFDd0NlQUFDQUtjQ2VRQUNBS2dDZXdBQ0FLa0VIZ0FDQUtvRWdnQUNBS3NFSEFBQ0FLd0FBUUFFQkpzQUFnQ29BQVFBQ2dBUUFCWUFIQUxNQUFJQXFBU0VBQUlBcXdTZEFBSUFyQUxPQUFJQm9nQURBQWdBRGdBVUF0SUFBZ0NvQko4QUFnQ3NBdGdBQWdHaUFBSUFCZ0FNQktFQUFnQ3NBdHdBQWdHaUFBWUFEZ0FVQUJvQUlBQW1BQ3dDZlFBQ0FLY0NmZ0FDQUtnQzRnQUNBS2tFTmdBQ0FLb0VoZ0FDQUtzRU5BQUNBS3dBQWdBR0FBd0Vvd0FDQUtrRXBRQUNBS3dBQXdBSUFBNEFGQU9oQUFJQXB3T2pBQUlBcUFTbkFBSUFyQUFGQUF3QUVnQVlBQjRBSkFPbkFBSUFwd0tCQUFJQXFBUkdBQUlBcVFSRUFBSUFxZ1JDQUFJQXJBQUNBQVlBREFMekFBSUFxQVNwQUFJQXJBQUJBQVFDK0FBQ0FLZ0FBUUFFQXZvQUFnQ29BQUVBQkFMNUFBSUFxQUFCQUFRQyt3QUNBS2dBQlFBTUFCSUFHQUFlQUNRQ2N3QUNBS2NDZEFBQ0FLZ0NxQUFDQUtrRUdBQUNBS29FZ0FBQ0FLc0FCUUFNQUJJQUdBQWVBQ1FFS3dBQ0FLY0VLUUFDQUtnRUx3QUNBS2tFTFFBQ0FLb0VNUUFDQUt3QUJRQU1BQklBR0FBZUFDUUVMQUFDQUtjRUtnQUNBS2dFTUFBQ0FLa0VMZ0FDQUtvRU1nQUNBS3dBQlFBTUFCSUFHQUFlQUNRRU9RQUNBS2NFTndBQ0FLZ0VQUUFDQUtrRU93QUNBS29FUHdBQ0FLd0FCUUFNQUJJQUdBQWVBQ1FFT2dBQ0FLY0VPQUFDQUtnRVBnQUNBS2tFUEFBQ0FLb0VRQUFDQUt3QUFRQUVCSWNBQWdDb0FBSUFFUUFsQUNrQUFBQXJBQzBBQlFBdkFEUUFDQUEyQURzQURnQTlBRDRBRkFCRkFFa0FGZ0JMQUUwQUd3QlBBRlFBSGdCV0FGc0FKQUJkQUY0QUtnQ0JBSUVBTEFDREFJTUFMUUNHQUlZQUxnQ0pBSWtBTHdDTUFJd0FNQUNYQUpvQU1RRFBBTThBTlFBQkFBQUFBUUFJQUFFQUJnQUNBQUVBQWdMVkF0WUFBUUFBQUFFQUNBQUNBQTRBQkFUZUJOOEU0QVRoQUFFQUJBS0hBb2dDbVFLYUFBUUFBQUFCQUFnQUFRQW1BQUlBQ2dBY0FBSUFCZ0FNQWFNQUFnQktBYWdBQWdCWUFBRUFCQUdwQUFJQVdBQUJBQUlBU2dCWEFBUUFBQUFCQUFnQUFRQkVBQUlBQ2dBVUFBRUFCQUdrQUFJQVRRQUJBQVFCcGdBQ0FFMEFCQUFBQUFFQUNBQUJBQjRBQWdBS0FCUUFBUUFFQWFVQUFnQlFBQUVBQkFHbkFBSUFVQUFCQUFJQVNnR2pBQUVBQUFBQkFBZ0FBUUFHQVpVQUFRQUJBRXNBQVFBQUFBRUFDQUFCQUFZQkp3QUJBQUVBdWdBQkFBQUFBUUFJQUFFQUJnR3NBQUVBQVFBMkFBRUFBQUFCQUFnQUFnQWNBQUlCNHdIa0FBRUFBQUFCQUFnQUFnQUtBQUlCNVFIbUFBRUFBZ0F2QUU4QUFRQUFBQUVBQ0FBQ0FCNEFEQUlvQWlvQ0tRSXJBaXdDSHdJZ0FpRUNJZ0d1QWlRQ0pRQUJBQXdBSndBb0FDc0FNd0ExQUVZQVJ3QklBRXNBVXdCVUFGVUFBUUFBQUFFQUNBQUNBQXdBQXdJbUFpY0NKd0FCQUFNQVNRQkxBaUlBQVFBQUFBRUFDQUFDQUdZQUNBSTlBaTBDTGdJd0FqRUNPUUk2QWp3QUFRQUFBQUVBQ0FBQ0FCWUFDQUFiQUJVQUZnQVhBQmdBR1FBZEFCUUFBUUFJQWEwQ0l3UnhCSElFY3dSMEJIVUVkZ0FCQUFBQUFRQUlBQUlBRmdBSUJIWUNJd1J4QkhJRWN3UjBBYTBFZFFBQkFBZ0FGQUFWQUJZQUZ3QVlBQmtBR3dBZEFBRUFBQUFCQUFnQUFnQVdBQWdBRlFBV0FCY0FHQUFaQUJzQUhRQVVBQUVBQ0FJdEFpNENNQUl4QWprQ09nSThBajBBQVFBQUFBRUFDQUFCQUFZQmFRQUJBQUVBRXdBR0FBQUFBUUFJQUFNQUFRQVNBQUVBVWdBQUFBRUFBQUFhQUFJQUFnRjhBWHdBQUFIVUFkMEFBUUFCQUFBQUFRQUlBQUVBS0FIQUFBRUFBQUFCQUFnQUFnQWFBQW9DTWdCNkFITUFkQUl6QWpRQ05RSTJBamNDT0FBQ0FBRUFGQUFkQUFBQUFRQUFBQUVBQ0FBQ0FDWUFFQUhVQWRVQjFnSFhBZGdCMlFIYUFkc0IzQUhkQWtBQ1BnSkJBa0lDUHdKREFBRUFFQUFVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUUwQVRnS3VBNXNEblFRYSIsCiAgIlJvYm90by1NZWRpdW0udHRmIjogIkFBRUFBQUFSQVFBQUJBQVFSMUJQVTMycWNZd0FBZ2lvQUFCWkRFZFRWVUpNbkNqZ0FBSmh0QUFBR1doUFV5OHlvUXV4dGdBQUFaZ0FBQUJnWTIxaGNFQW1TSElBQUJwc0FBQVN5R04yZENBRWx5dEtBQUF2dkFBQUFGWm1jR2R0ZS9saHF3QUFMVFFBQUFHOFoyRnpjQUFJQUJNQUFnaWNBQUFBREdkc2VXYXVubUxwQUFBNTNBQUJ5OHhvWkcxNFBUODhJQUFBRllBQUFBVHNhR1ZoWlBoN3F3Z0FBQUVjQUFBQU5taG9aV0VLN3dxYkFBQUJWQUFBQUNSb2JYUjRKUE5FOVFBQUFmZ0FBQk9JYkc5allkM2VacTBBQURBVUFBQUp4bTFoZUhBSEVnTDFBQUFCZUFBQUFDQnVZVzFsUFdOdlRBQUNCYWdBQUFMVWNHOXpkUDl0QUdRQUFnaDhBQUFBSUhCeVpYQWJzZmcyQUFBdThBQUFBTXdBQVFBQUFBSUFBQkZBcEcxZkR6ejFBQnNJQUFBQUFBREU4QkV1QUFBQUFORGJUcFQ2SlAzVkNWd0ljd0FBQUFrQUFnQUFBQUFBQUFBQkFBQUhiUDRNQUFBSmEvb2sva0VKWEFBQkFBQUFBQUFBQUFBQUFBQUFBQUFFNGdBQkFBQUU0Z0NQQUJZQVRnQUZBQUVBQUFBQUFBNEFBQUlBQWhZQUJnQUJBQU1FbFFIMEFBVUFBQVdhQlRNQUFBRWZCWm9GTXdBQUE5RUFaZ0lBQUFBQ0FBQUFBQUFBQUFBQTRBQUsvMUFBSVg4QUFBQWhBQUFBQUVkUFQwY0FRQUFBLy8wR0FQNEFBR1lIbWdJQUlBQUJud0FBQUFBRU9nV3dBQ0FBSUFBQ0E0d0FaQUFBQUFBQUFBQUFBZjRBQUFIK0FBQUNKUUNQQXBnQVpRVGlBR0FFakFCa0JlQUFZd1VkQUZZQldnQlNBc29BZ0FMU0FDZ0RpUUFiQkhVQVJBSENBQndDb0FCSEFqd0Fod01xQUFJRWpBQnBCSXdBcUFTTUFGRUVqQUJQQkl3QU5BU01BSUVFakFCMUJJd0FSUVNNQUdnRWpBQmRBaDhBZ2dIbkFDNEVFUUEvQkhvQWtRUXFBSUFENUFBOEJ5Z0FXd1ZUQUJJRkRBQ1VCVGtBWmdVNkFKUUVoZ0NVQkdVQWxBVnlBR29GcndDVUFrSUFvd1J4QUMwRkN3Q1VCRlFBbEFjQkFKUUZyZ0NVQllZQVpnVWRBSlFGaGdCZ0JQNEFsQVRVQUVvRTJ3QXRCVGNBZlFVdEFCSUhDZ0F3QlJBQUtRVGdBQWNFMFFCUUFqRUFoQU5ZQUJRQ01RQU1BMnNBTlFPY0FBTUNsQUF4QkZRQVdnU0JBSHdFTUFCUEJJUUFUd1JMQUZNQzFnQXRCSWtBVWdSeEFIa0NDd0I5QWdIL3RRUXRBSDBDQ3dDTUJ2WUFmQVJ6QUhrRWpnQlBCSUVBZkFTTEFFOEMwQUI4QkNFQVN3S3BBQWdFY2dCM0EvVUFGZ1h5QUNFRUJnQWZBK1VBREFRR0FGSUNyd0E0QWdJQXJnS3ZBQnNGVVFCMUFoNEFoZ1I5QUdRRXRRQmVCWjBBWFFUZ0FCa0IvQUNJQlBnQVdnT0ZBRjBHUkFCWEE1RUFqUVBpQUZjRWJRQi9Ca1FBVndQYkFJY0RDZ0IvQkVvQVh3TDJBRHdDOWdBM0Fwc0FjQVM3QUpJRDdRQkZBa0lBamdJUUFHMEM5Z0NBQTZjQWR3UGlBRjBGMEFCWkJpc0FVQVpYQUdjRDVBQkNCNFgvOWdSRUFFMEZoQUJwQk1vQWxBVG5BSWdHd1FCSUJLY0Fad1NSQUVNRWlBQlBCSmNBZ2dXd0FCOENHZ0NQQkpnQWpnUmtBQ0lDVHdBaEJaTUFrQVNJQUg0SHRBQmtCem9BV3dJTUFJc0ZpQUJSQXRELzVBV0tBRmdFbmdCUEJhUUFmUVR5QUhjQ0p2KzFCRHdBV1FQbUFKUURzQUJ5QTl3QWh3TjhBSFVDQ3dDQkFySUFlQUpOQUNrRDJBQjZBeDhBU1FKc0FJSUFBUHlPQUFEOVhnQUEvSE1BQVAwK0FBRDhEQUFBL1J3Q1hRREdCRHdBWndKQ0FJNEVkUUNiQmI4QUdRVjZBRnNGT0FBZ0JKQUFiQVd4QUpzRWtBQkhCZThBU2dXcUFFUUZXd0JyQklRQVZnVEdBSllFRGdBZ0JJZ0FWQVJnQUdBRUdnQmhCSWdBZmdTaEFITUNxZ0NwQkdvQUZnUVRBR1FFOHdBdEJJZ0FnQVEzQUZJRWtBQlNCQzBBUHdSZ0FJQUYwQUJFQmNrQVR3YVVBR1lFc3dCMkJIdi80UVp4QURNRi9nQWlCVmtBYUFpSUFDMElqd0NiQmxzQU1RV3FBSklGQ0FDUUJnWUFKQWVpQUJZRTFnQkpCYWdBbEFXcEFDMEZDZ0E1Qmw4QVR3WDVBSklGaVFDT0I1c0FtQWY1QUpnR0dnQVlCdmtBbXdVSEFKQUZVQUJyQjFRQW9BVDNBQ0FFZlFCYkJJOEFqd05hQUlVRTlnQW5CbllBSGdRV0FFMEVtQUNHQkc0QWp3U2FBQ0VHQXdDUEJKY0FoZ1NZQUlZRDlRQWpCZE1BVkFUVEFJWUVaZ0JmQm80QWhnYnNBSDRGRndBZkJtOEFqd1JvQUk4RVBBQlJCb1FBa1FSd0FDY0VjZi9iQkR3QVZBYlJBQjRHNUFDR0JJbi83Z1NZQUlZSFNRQ0lCazhBY0FSbi8rQUhLQUNZQmdFQWhnVU1BQndFWUFBS0IwSUFyQVkyQUowRzdRQ0FCZVlBZ2dreUFLTUgrUUNQQkNBQUtBUHdBRE1GZWdCZkJJZ0FUd1VhQUJBRURnQWdCWG9BWHdTSUFFOEhSUUNJQmtRQWRBZEpBSWdHVHdCd0JSb0FaZ1JLQUZ3RS93QnRBQUQ4WmdBQS9ITUFBUDE3QUFEOXBRQUEraVFBQVBwTkJHZi80QVVUQUpRRWhnQjhCR29BandPaEFINEV0d0NiQkNBQWZnVXNBSkFFcXdDT0JwVUFOQVdrQUQwSDBBQ1VCYW9BZmdoSEFKc0c5UUIrQmlvQVp3VC9BR0VITVFBdEJYQUFKZ1YwQUlBRWN3QjBCWWNBaFFZa0FCWUV3Ly9MQlNFQWtBUjRBSTRGcndDYkJJZ0FmZ1dJQUZFRXBnQmJCS1lBWFFUSEFEUURVd0F0QlFjQVVnYnhBR2dHM1FCZUJsTUFQQVVvQUM4RWV3QklCRDRBZEFlK0FFSUduUUJBQi8wQWxBYWVBSGNGQkFCZEJDd0FWUVdxQUNFRkhRQkVCVlVBZ1FNc0FHY0VGQUFBQ0NrQUFBUVVBQUFJS1FBQUFya0FBQUlLQUFBQlhBQUFCSDhBQUFJd0FBQUJvZ0FBQU5FQUFBQUFBQUFDb1FCSEFxRUFSd1VwQUowR01BQ0JBNTBBQkFIQUFHTUJ2QUF6QWM0QU1nR29BRW9ERkFCc0F4c0FRQU1JQURJRVhRQkFCSmtBWEFMTEFJZ0QrZ0NLQmFZQWlnRnNBRWNIcHdCS0FuSUFiQUpwQUZRRG5BQXRBdllBTlFOY0FHa0V0UUJmQm5BQUlRYTRBSmdJa3dDVUI0Z0FOUWFNQUh3RWpBQmVCZlVBSVFRMEFDZ0VvZ0FoQlY0QVR3VjlBQ2dGNUFCd0ErSUFUQWd1QUpBRkNRQnRCUlFBbGdZMUFGa0czUUJVQnRFQVd3YWlBRmdFa1FCaUJaWUFwZ1RaQUVBRWd3Q2VCTElBT3doRkFGNENMZit2Qkk0QVpRUjZBSkVFRVFBOEJDb0FnQVFNQUNRQ1d3Q2hBcGdBWXdIeEFFVUZHd0F0QktnQUdBUzhBQzBISXdBdEJ5TUFMUVVSQUMwR3R3QkxBQUFBQUFnd0FGa0lOUUJjQkRNQU9nU1RBRThDRVArd0FiTUFYQU9oQUhVRG9RQjFBNkVBZFFRTEFIVUVDd0IxQkF2L1RBUUxBSG9Eb1FCMUFnVUFsQVNlQUFrRVlBQjJCSUFBVHdSNkFIWUQ0QUIyQThVQWRnU21BRlFFM2dCMkFmd0FoUVBWQUNRRVd3QjJBN2tBZGdZR0FIWUUzUUIyQk1BQVR3UnRBSFlFd0FCTUJGd0FkZ1EwQUQ0RU93QWtCSVFBWndSN0FBa0dCd0FvQkY0QUZRUThBQVVFS2dCQkF2WUFTd0wyQUlBQzlnQThBdllBTndMMkFEVUM5Z0JQQXZZQVRRTDJBRFlDOWdCTEF2WUFSZ081QUpBQ3NnQ1dCRHNBQ2dTN0FGWUZSQUNiQlNnQW13UXdBSUVGT1FDYkJDMEFnUVEwQUQ0RVpnQTRCRTBBRGdPNUFIWUVld0FKQk1BQVR3UjdBQWtEbUFCQ0JOZ0FkZ1FaQUVRRm5RQlFCVlFBVUFUa0FGOEZrUUFrQklBQVR3ZFVBQ1FIVndCMkJaY0FKQVRYQUhZRWNRQjJCVmtBSndZNkFCb0VSZ0JDQk9RQWRnUmNBSFlFeXdBa0JFWUFId1ZkQUhZRWpBQkJCb1FBZGdjS0FIWUZXZ0FLQmlBQWRnUm5BSFlFZ0FBOEJwSUFkZ1NJQUVNRUlnQUtCcElBR2dTZEFIWUZHZ0IyQlc0QUpBWHdBRThFV2dBRkJNUUFGUWFWQUNRRWpBQkJCSXdBZGdYK0FBb0UwZ0JQQkVZQVFnVEFBRThFWmdBNEEvY0FSZ2cyQUhZRTZ3QW9CSWdBZkFROUFGQUVtQUJQQTZRQVd3U2hBRXdFbEFCOEJKOEFUd1JMQUZNRWlRQlJCWG9BYXdXaUFHc0ZoZ0NiQmVBQWF3WGlBR3NFR3dDWEJJSUFiZ081QUhZRVZ3QVBCTDRBTlFMMkFFc0M5Z0ExQXZZQVR3TDJBRTBDOWdBMkF2WUFTd0wyQUVZRWF3Qm1CQzRBUXdhWUFFOEV0QUJ6Qk9zQVlnSW0vN1VDSnYrMUFoc0Fqd0liLy9zQ0d3Q1BCR0FBZGdIK0FBQUNvQUJIQlZqLzl3VlkvL2NFai8vVUJOc0FMUUtwLytnRlV3QVNCVk1BRWdWVEFCSUZVd0FTQlZNQUVnVlRBQklGVXdBU0JUa0FaZ1NHQUpRRWhnQ1VCSVlBbEFTR0FKUUNRdi9JQWtJQW93SkMvOHNDUXYrL0JhNEFsQVdHQUdZRmhnQm1CWVlBWmdXR0FHWUZoZ0JtQlRjQWZRVTNBSDBGTndCOUJUY0FmUVRnQUFjRVZBQmFCRlFBV2dSVUFGb0VWQUJhQkZRQVdnUlVBRm9FVkFCYUJEQUFUd1JMQUZNRVN3QlRCRXNBVXdSTEFGTUNHdiswQWhvQWp3SWEvN2NDR3YrckJITUFlUVNPQUU4RWpnQlBCSTRBVHdTT0FFOEVqZ0JQQkhJQWR3UnlBSGNFY2dCM0JISUFkd1BsQUF3RDVRQU1CVk1BRWdSVUFGb0ZVd0FTQkZRQVdnVlRBQklFVkFCYUJUa0FaZ1F3QUU4Rk9RQm1CREFBVHdVNUFHWUVNQUJQQlRrQVpnUXdBRThGT2dDVUJSb0FUd1NHQUpRRVN3QlRCSVlBbEFSTEFGTUVoZ0NVQkVzQVV3U0dBSlFFU3dCVEJJWUFsQVJMQUZNRmNnQnFCSWtBVWdWeUFHb0VpUUJTQlhJQWFnU0pBRklGY2dCcUJJa0FVZ1d2QUpRRWNRQjVBa0wvc3dJYS81OENRdis1QWhyL3BRSkMvOThDR3YvTEFrSUFGd0lMQUFBQ1FnQ2RCck1Bb3dRTUFIMEVjUUF0QWliL3RRVUxBSlFFTFFCOUJGUUFsQUlMQUlvRVZBQ1VBZ3NBVlFSVUFKUUNvUUNNQkZRQWxBTG5BSXdGcmdDVUJITUFlUVd1QUpRRWN3QjVCYTRBbEFSekFIa0VjLytsQllZQVpnU09BRThGaGdCbUJJNEFUd1dHQUdZRWpnQlBCUDRBbEFMUUFId0UvZ0NVQXRBQVR3VCtBSlFDMEFBNEJOUUFTZ1FoQUVzRTFBQktCQ0VBU3dUVUFFb0VJUUJMQk5RQVNnUWhBRXNFMUFCS0JDRUFTd1RiQUMwQ3FRQUlCTnNBTFFLcEFBZ0Uyd0F0QXRFQUNBVTNBSDBFY2dCM0JUY0FmUVJ5QUhjRk53QjlCSElBZHdVM0FIMEVjZ0IzQlRjQWZRUnlBSGNGTndCOUJISUFkd2NLQURBRjhnQWhCT0FBQndQbEFBd0U0QUFIQk5FQVVBUUdBRklFMFFCUUJBWUFVZ1RSQUZBRUJnQlNCNFgvOWdiQkFFZ0ZoQUJwQklnQVR3UjYvNllFZXYrbUJEc0FKQVNlQUFrRW5nQUpCSjRBQ1FTZUFBa0VuZ0FKQko0QUNRU2VBQWtFZ0FCUEErQUFkZ1BnQUhZRDRBQjJBK0FBZGdIOC82WUIvQUNEQWZ6L3FRSDgvNTBFM1FCMkJNQUFUd1RBQUU4RXdBQlBCTUFBVHdUQUFFOEVoQUJuQklRQVp3U0VBR2NFaEFCbkJEd0FCUVNlQUFrRW5nQUpCSjRBQ1FTQUFFOEVnQUJQQklBQVR3U0FBRThFZWdCcUErQUFkZ1BnQUhZRDRBQjJBK0FBZGdQZ0FIWUVwZ0JVQktZQVZBU21BRlFFcGdCVUJONEFkZ0g4LzVFQi9QK1hBZnovdlFIOEFCVUIvQUI4QTlVQUpBUmJBSFlEdVFCMkE3a0FkZ081QUhZRHVRQjJCTjBBZGdUZEFIWUUzUUIyQk1BQVR3VEFBRThFd0FCUEJGd0FkZ1JjQUhZRVhBQjJCRFFBUGdRMEFENEVOQUErQkRRQVBnUTdBQ1FFT3dBa0JEc0FKQVNFQUdjRWhBQm5CSVFBWndTRUFHY0VoQUJuQklRQVp3WUhBQ2dFUEFBRkJEd0FCUVFxQUVFRUtnQkJCQ29BUVFWVEFCSUU2djlLQmhQL1V3S20vMVlGbXYrbkJVVCs0UVZ2LzdJQ3F2K0hCVk1BRWdVTUFKUUVoZ0NVQk5FQVVBV3ZBSlFDUWdDakJRc0FsQWNCQUpRRnJnQ1VCWVlBWmdVZEFKUUUyd0F0Qk9BQUJ3VVFBQ2tDUXYrL0JPQUFCd1NFQUZZRVlBQmdCSWdBZmdLcUFLa0VZQUNBQkpnQWpnU09BRThFdXdDU0EvVUFGZ1FHQUI4Q3F2L01CR0FBZ0FTT0FFOEVZQUNBQnBRQVpnU0dBSlFFZFFDYkJOUUFTZ0pDQUtNQ1F2Ky9CSEVBTFFVb0FKc0ZDd0NVQlFvQU9RVlRBQklGREFDVUJIVUFtd1NHQUpRRnFBQ1VCd0VBbEFXdkFKUUZoZ0JtQmJFQW13VWRBSlFGT1FCbUJOc0FMUVVRQUNrRVZBQmFCRXNBVXdTWUFJWUVqZ0JQQklFQWZBUXdBRThENVFBTUJBWUFId1JMQUZNRFdnQ0ZCQ0VBU3dJTEFIMENHdityQWdIL3RRUnVBSThENVFBTUJ3b0FNQVh5QUNFSENnQXdCZklBSVFjS0FEQUY4Z0FoQk9BQUJ3UGxBQXdCV2dCU0FwZ0FaUVJLQUk4Q0p2K3hBYndBTXdjQkFKUUc5Z0I4QlZNQUVnUlVBRm9FaGdDVUJhZ0FsQVJMQUZNRW1BQ0dCYW9BUkFYSkFFOEZHZ0FRQkE3LzhRaHpBRThKYXdCbUJOWUFTUVFXQUUwRk9RQm1CREFBVHdUZ0FBY0VEZ0FnQWtJQW93ZWlBQllHZGdBZUFrSUFvd1ZUQUJJRVZBQmFCVk1BRWdSVUFGb0hoZi8yQnNFQVNBU0dBSlFFU3dCVEJZZ0FVUVE4QUZrRVBBQlpCNklBRmdaMkFCNEUxZ0JKQkJZQVRRV29BSlFFbUFDR0JhZ0FsQVNZQUlZRmhnQm1CSTRBVHdWNkFGOEVpQUJQQlhvQVh3U0lBRThGVUFCckJEd0FVUVVLQURrRDVRQU1CUW9BT1FQbEFBd0ZDZ0E1QStVQURBV0pBSTRFWmdCZkJ2a0Ftd1p2QUk4RkVBQXBCQVlBSHdTRUFFOEZxUUF0QkpvQUlRVlRBQklFVkFCYUJWTUFFZ1JVQUZvRlV3QVNCRlFBV2dWVEFCQUVWUCthQlZNQUVnUlVBRm9GVXdBU0JGUUFXZ1ZUQUJJRVZBQmFCVk1BRWdSVUFGb0ZVd0FTQkZRQVdnVlRBQklFVkFCYUJWTUFFZ1JVQUZvRlV3QVNCRlFBV2dTR0FKUUVTd0JUQklZQWxBUkxBRk1FaGdDVUJFc0FVd1NHQUpRRVN3QlRCSWIvMVFSTC80NEVoZ0NVQkVzQVV3U0dBSlFFU3dCVEJJWUFsQVJMQUZNQ1FnQ2pBaG9BandKQ0FKUUNDd0I0QllZQVpnU09BRThGaGdCbUJJNEFUd1dHQUdZRWpnQlBCWVlBSndTTy82TUZoZ0JtQkk0QVR3V0dBR1lFamdCUEJZWUFaZ1NPQUU4RmlnQllCSjRBVHdXS0FGZ0VuZ0JQQllvQVdBU2VBRThGaWdCWUJKNEFUd1dLQUZnRW5nQlBCVGNBZlFSeUFIY0ZOd0I5QkhJQWR3V2tBSDBFOGdCM0JhUUFmUVR5QUhjRnBBQjlCUElBZHdXa0FIMEU4Z0IzQmFRQWZRVHlBSGNFNEFBSEErVUFEQVRnQUFjRDVRQU1CT0FBQndQbEFBd0VvZ0JQQktJQVR3VW9BSnNFYmdDUEJhOEFsQVNYQUlZRTJ3QXRBL1VBSXdVUUFDa0VCZ0FmQllrQWpnUm1BRjhGaVFDT0JHWUFYd1IxQUpzRFdnQ0ZCNklBRmdaMkFCNEdKQUFXQk1QL3l3UnhBSGtGQi8vUUJRZi8wQVIxLy9BRFd2L2lCVHovNHdSRS82NEZxQUNVQkpnQWhnV3ZBSlFFbHdDR0J3RUFsQVlEQUk4RnFRQXRCSm9BSVFUZ0FBY0VEZ0FnQlJBQUtRUUdBQjhFWUFCZ0JHVUFBZ1l3QUlFRWpBQlJCSXdBVHdTTUFEUUVqQUNCQktBQVhRUzBBSDBGY2dCcUJJa0FVZ1d1QUpRRWN3QjVCVk1BRWdSVUFBMEVoZ0JJQkVzQUFRSkMvdllDR3Y3aUJZWUFaZ1NPQUJZRS9nQXlBdEQvYmdVM0FIRUVjZ0FQQk4vK3JBVU1BSlFFZ1FCOEJUb0FsQVNFQUU4Rk9nQ1VCSVFBVHdXdkFKUUVjUUI1QlFzQWxBUXRBSDBGQ3dDVUJDMEFmUVJVQUpRQ0N3QjRCd0VBbEFiMkFId0ZyZ0NVQkhNQWVRVWRBSlFFZ1FCOEJQNEFsQUxRQUhJRTFBQktCQ0VBU3dUYkFDMENxUUFJQlMwQUVnUDFBQllGTFFBU0EvVUFGZ2NLQURBRjhnQWhCTkVBVUFRR0FGSUZ6UDRjQko0QUNRUWMveW9GR3Y4M0Fqai9PUVRLLzVNRWVQN29CTzcvcEFTZUFBa0VZQUIyQStBQWRnUXFBRUVFM2dCMkFmd0FoUVJiQUhZR0JnQjJCTUFBVHdSdEFIWUVPd0FrQkR3QUJRUmVBQlVCL1ArZEJEd0FCUVBnQUhZRHVRQjJCRFFBUGdIOEFJVUIvUCtkQTlVQUpBUmJBSFlFUmdBZkJKNEFDUVJnQUhZRHVRQjJBK0FBZGdUa0FIWUdCZ0IyQk40QWRnVEFBRThFMkFCMkJHMEFkZ1NBQUU4RU93QWtCRjRBRlFSR0FFSUUzZ0IyQklBQVR3UThBQVVGL2dBS0JPUUFkZ1JHQUI4Rm5RQlFCVk1BRWdSVUFGb0VoZ0NVQkVzQVV3SWFBSGdBQUFBQkFBQUU1QWtMQkFBQUFnSUNBd1lGQndZQ0F3TUVCUUlEQXdRRkJRVUZCUVVGQlFVRkFnSUZCUVVFQ0FZR0JnWUZCUVlHQXdVR0JRZ0dCZ1lHQmdVRkJnWUlCZ1VGQWdRQ0JBUURCUVVGQlFVREJRVUNBZ1VDQ0FVRkJRVURCUU1GQkFjRkJBVURBZ01HQWdVRkJnVUNCZ1FIQkFRRkJ3UURCUU1EQXdVRUF3SURCQVFIQndjRUNBVUdCUVlJQlFVRkJRWUNCUVVEQmdVSkNBSUdBd1lGQmdZQ0JRUUVCQVFDQXdNRUJBTUFBQUFBQUFBREJRTUZCZ1lHQlFZRkJ3WUdCUVVGQlFVRkJRVURCUVVHQlFVRkJRVUhCd2NGQlFjSEJnb0tCd1lHQndrRkJnWUdCd2NHQ1FrSENBWUdDQVlGQlFRR0J3VUZCUVVIQlFVRUJ3VUZCd2dHQndVRkJ3VUZCUWdJQlFVSUJ3VUlCd1lGQ0FjSUJ3b0pCUVFHQlFZRkJnVUlCd2dIQmdVR0FBQUFBQUFBQlFZRkJRUUZCUVlGQndZSkJna0lCd1lJQmdZRkJnY0ZCZ1VHQlFZRkJRVUVCZ2dJQndZRkJRa0hDUWNHQlFZR0JnUUZDUVVKQXdJQ0JRSUNBUUFEQXdZSEJBSUNBZ0lEQkFNRkJRTUVCZ0lKQXdNRUF3UUZCd2dLQ0FjRkJ3VUZCZ1lIQkFrR0JnY0lDQWNGQmdVRkJRa0NCUVVGQlFVREF3SUdCUVVJQ0FZSUFBa0pCUVVDQWdRRUJBVUZCUVVFQWdVRkJRVUVCQVVGQWdRRkJBY0ZCUVVGQlFVRkJRVUhCUVVGQXdNREF3TURBd01EQXdRREJRVUdCZ1VHQlFVRkJRUUZCUVVFQlFVR0JnWUdCUWdJQmdVRkJnY0ZCZ1VGQlFZRkJ3Z0dCd1VGQndVRkJ3VUdCZ2NGQlFjRkJRY0ZCUVVGQkFrR0JRVUZCQVVGQlFVRkJnWUdCd2NGQlFRRkJRTURBd01EQXdNRkJRY0ZCZ0lDQWdJQ0JRSURCZ1lGQlFNR0JnWUdCZ1lHQmdVRkJRVURBd01EQmdZR0JnWUdCZ1lHQmdVRkJRVUZCUVVGQlFVRkJRVUNBZ0lDQlFVRkJRVUZCUVVGQlFRRUJnVUdCUVlGQmdVR0JRWUZCZ1VHQmdVRkJRVUZCUVVGQlFVR0JRWUZCZ1VHQlFZRkF3SURBZ01DQXdJRENBVUZBZ1lGQlFJRkFnVURCUU1HQlFZRkJnVUZCZ1VHQlFZRkJnTUdBd1lEQlFVRkJRVUZCUVVGQlFVREJRTUZBd1lGQmdVR0JRWUZCZ1VHQlFnSEJRUUZCUVVGQlFVRkNBZ0dCUVVGQlFVRkJRVUZCUVVGQkFRRUJBSUNBZ0lGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQkFRRUJBUUZCUVVGQlFJQ0FnSUNCQVVFQkFRRUJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUWNGQlFVRkJRWUdCd01HQmdZREJnWUZCUVlEQmdnR0JnWUZCUVlEQlFVRkJRTUZCUVVGQkFVREJRVUZCd1VGQlFNREJRWUdCZ1lHQlFVR0NBWUdCZ1lHQlFZRkJRVUZCUVVFQlFVRUJRSUNBZ1VFQ0FjSUJ3Z0hCUVFDQXdVQ0FnZ0lCZ1VGQmdVRkJnY0dCUW9MQlFVR0JRVUZBd2tIQXdZRkJnVUlDQVVGQmdVRkNRY0ZCUVlGQmdVR0JRWUZCZ1VHQlFZRUJnUUdCQVlGQ0FjR0JRVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQmdVR0JRVUZCUVVGQlFVRkJRVUZCUVVGQlFVREFnTUNCZ1VHQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlHQmdZR0JnWUdCZ1lGQkFVRUJRUUZCUVlGQmdVRkJBWUZCZ1VHQlFVRUNRY0hCUVVHQmdVRUJnVUdCUVlGQ0FjR0JRVUZCZ1VGQlFjRkJRVUZCUVVHQlFZRkJnVUZCUU1DQmdVR0F3WUZCUVlGQmdVR0JRWUZCZ1VHQlFVQ0NBZ0dCUVlGQmdNRkJRVURCZ1FHQkFnSEJRVUhCUVVHQXdVRkJnVUZCQVVGQWdVSEJRVUZCUVVDQlFRRUJRSUNCQVVGQlFVRUJBWUhCUVVGQlFVRkJRVUZCUVVIQmdVR0JnVUZCUUlBQUFBREFBQUFBd0FBQUJ3QUF3QUJBQUFBSEFBREFBb0FBQWFJQUFRR2JBQUFBT29BZ0FBR0FHb0FBQUFDQUEwQWZnQ2dBS3dBclFDL0FNWUF6d0RtQU84QS9nRVBBUkVCSlFFbkFUQUJVd0ZmQVdjQmZnRi9BWThCa2dHaEFiQUI4QUgvQWhzQ053SlpBcndDeHdMSkF0MEM4d01CQXdNRENRTVBBeU1EaWdPTUE1SURvUU93QTdrRHlRUE9BOUlEMWdRbEJDOEVSUVJQQkdJRWJ3UjVCSVlFemdUWEJPRUU5UVVCQlJBRkV4NEJIajhlaFI3eEh2TWUrUjlOSUFzZ0VTQVZJQjRnSWlBbklEQWdNeUE2SUR3Z1JDQjBJSDhncENDcUlLd2dzU0M2SUwwaEJTRVRJUlloSWlFbUlTNGhYaUlDSWdZaUR5SVNJaG9pSGlJcklrZ2lZQ0psSmNydUF2YkQrd1QrLy8vOS8vOEFBQUFBQUFJQURRQWdBS0FBb1FDdEFLNEF3QURIQU5BQTV3RHdBUDhCRUFFU0FTWUJLQUV4QVZRQllBRm9BWDhCandHU0FhQUJyd0h3QWZvQ0dBSTNBbGtDdkFMR0Fza0MyQUx6QXdBREF3TUpBdzhESXdPRUE0d0RqZ09UQTZNRHNRTzZBOG9EMFFQV0JBQUVKZ1F3QkVZRVVBUmpCSEFFZWdTSUJNOEUyQVRpQlBZRkFnVVJIZ0FlUGg2QUhxQWU4aDcwSDAwZ0FDQVFJQk1nRnlBZ0lDVWdNQ0F5SURrZ1BDQkVJSFFnZnlDaklLWWdxeUN4SUxrZ3ZDRUZJUk1oRmlFaUlTWWhMaUZiSWdJaUJpSVBJaEVpR2lJZUlpc2lTQ0pnSW1RbHl1NEI5c1A3QWY3Ly8vei8vd0FCQUFELzl2L2tBYVQvd2dHWS84RUFBQUdMQUFBQmhnQUFBWUlBQUFHQUFBQUJmZ0FBQVhZQUFBRjQveFgvQnY4RS92Zis2Z0c2QUFBQUFQNWsva01BNy8zWC9kYjl5UDJ6L2FmOXB2MmgvWno5aVFBQS84ci95UUFBQUFEOUNRQUEvNnI4L2Z6NkFBRDh1UUFBL0xFQUFQeW1BQUQ4b0FBQS92UUFBUDd4QUFEOFNRQUE1YTdsYnVVZjVVN2tzK1ZNNVZ6aFcrRlhBQURoVk9GVDRWSGhTZU4xNFVIamJlRTQ0UW5nL3dBQTROb0FBT0RWNE03Z3plQ0c0SG5nZCtCczM1UGdZZUExMzVMZXE5K0czNFhmZnQ5NzMyL2ZVOTg4M3puYjFST2ZDdDhHb3dLckFhOEFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEyZ0FBQU9RQUFBRU9BQUFCS0FBQUFTZ0FBQUVvQUFBQmFnQUFBQUFBQUFBQUFBQUFBQUFBQVdvQmRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGaUFBQUFBQUZxQVlZQUFBR2VBQUFBQUFBQUFiWUFBQUgrQUFBQ0pnQUFBa2dBQUFKWUFBQUM0Z0FBQXZJQUFBTUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBdmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMb0FBQUM2QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUpMQWt3Q1RRSk9BazhDVUFDQkFrY0NXd0pjQWwwQ1hnSmZBbUFBZ2dDREFtRUNZZ0pqQW1RQ1pRQ0VBSVVDWmdKbkFtZ0NhUUpxQW1zQWhnQ0hBbllDZHdKNEFua0NlZ0o3QUlnQWlRSjhBbjBDZmdKL0FvQUFpZ0pHQkVZQWl3SklBSXdDcndLd0FyRUNzZ0t6QXJRQWpRSzFBcllDdHdLNEFya0N1Z0s3QXJ3QWpnQ1BBcjBDdmdLL0FzQUN3UUxDQXNNQWtBQ1JBc1FDeFFMR0FzY0N5QUxKQUpJQWt3TFlBdGtDM0FMZEF0NEMzd0pKQWtvQ1VRSnNBdmNDK0FMNUF2b0MxZ0xYQXRvQzJ3Q3RBSzREVWdDdkExTURWQU5WQUxBQXNRTmNBMTBEWGdDeUExOERZQUN6QTJFRFlnQzBBMk1BdFFOa0FMWURaUU5tQUxjRFp3QzRBTGtEYUFOcEEyb0Rhd05zQTIwRGJnTnZBTU1EY1FOeUFNUURjQURGQU1ZQXh3RElBTWtBeWdETEEzTUF6QUROQTdBRGVRRFJBM29BMGdON0Ezd0RmUU4rQU5NQTFBRFZBNEFEc1FPQkFOWURnZ0RYQTRNRGhBRFlBNFVBMlFEYUFOc0RoZ04vQU53RGh3T0lBNGtEaWdPTEE0d0RqUURkQU40RGpnT1BBT2tBNmdEckFPd0RrQUR0QU80QTd3T1JBUEFBOFFEeUFQTURrZ0QwQTVNRGxBRDFBNVVBOWdPV0E3SURsd0VCQTVnQkFnT1pBNW9EbXdPY0FRTUJCQUVGQTUwRHN3T2VBUVlCQndFSUJGd0R0QU8xQVJZQkZ3RVlBUmtEdGdPM0E3a0R1QUVuQVNnRVlRUmlCRnNCS1FFcUFTc0JMQUV0QkYwRVhnRXVBUzhFVmdSWEE3b0R1d1JJQkVrQk1BRXhCRjhFWUFFeUFUTUVTZ1JMQVRRQk5RRTJBVGNCT0FFNUE3d0R2UVJNQkUwRHZnTy9CR2tFYWdST0JFOEJPZ0U3QkZBRVVRRThBVDBCUGdSYUFUOEJRQVJZQkZrRHdBUEJBOElCUVFGQ0JHY0VhQUZEQVVRRVl3UmtCRklFVXdSbEJHWUJSUVBOQTh3RHpnUFBBOUFEMFFQU0FVWUJSd1JVQkZVRDV3UG9BVWdCU1FQcEErb0Vhd1JzQVVvRDZ3UnRBK3dEN1FGcEFXb0Vid1J1QVg4RVJ3R0ZBQXdBQUFBQURFQUFBQUFBQUFBQkJBQUFBQUFBQUFBQUFBQUFBUUFBQUFJQUFBQUNBQUFBQWdBQUFBMEFBQUFOQUFBQUF3QUFBQ0FBQUFCK0FBQUFCQUFBQUtBQUFBQ2dBQUFDUkFBQUFLRUFBQUNzQUFBQVl3QUFBSzBBQUFDdEFBQUNSUUFBQUs0QUFBQy9BQUFBYndBQUFNQUFBQURGQUFBQ1N3QUFBTVlBQUFER0FBQUFnUUFBQU1jQUFBRFBBQUFDVWdBQUFOQUFBQURRQUFBQ1J3QUFBTkVBQUFEV0FBQUNXd0FBQU5jQUFBRFlBQUFBZ2dBQUFOa0FBQURkQUFBQ1lRQUFBTjRBQUFEZkFBQUFoQUFBQU9BQUFBRGxBQUFDWmdBQUFPWUFBQURtQUFBQWhnQUFBT2NBQUFEdkFBQUNiUUFBQVBBQUFBRHdBQUFBaHdBQUFQRUFBQUQyQUFBQ2RnQUFBUGNBQUFENEFBQUFpQUFBQVBrQUFBRDlBQUFDZkFBQUFQNEFBQUQrQUFBQWlnQUFBUDhBQUFFUEFBQUNnUUFBQVJBQUFBRVFBQUFDUmdBQUFSRUFBQUVSQUFBRVJnQUFBUklBQUFFbEFBQUNrZ0FBQVNZQUFBRW1BQUFBaXdBQUFTY0FBQUVuQUFBQ1NBQUFBU2dBQUFFd0FBQUNwZ0FBQVRFQUFBRXhBQUFBakFBQUFUSUFBQUUzQUFBQ3J3QUFBVGdBQUFFNEFBQUFqUUFBQVRrQUFBRkFBQUFDdFFBQUFVRUFBQUZDQUFBQWpnQUFBVU1BQUFGSkFBQUN2UUFBQVVvQUFBRkxBQUFBa0FBQUFVd0FBQUZSQUFBQ3hBQUFBVklBQUFGVEFBQUFrZ0FBQVZRQUFBRmZBQUFDeWdBQUFXQUFBQUZoQUFBQzJBQUFBV0lBQUFGbEFBQUMzQUFBQVdZQUFBRm5BQUFDU1FBQUFXZ0FBQUYrQUFBQzRBQUFBWDhBQUFGL0FBQUFsQUFBQVk4QUFBR1BBQUFBbFFBQUFaSUFBQUdTQUFBQWxnQUFBYUFBQUFHaEFBQUFsd0FBQWE4QUFBR3dBQUFBbVFBQUFmQUFBQUh3QUFBRHFnQUFBZm9BQUFINkFBQUNVUUFBQWZzQUFBSDdBQUFDYkFBQUFmd0FBQUgvQUFBQzl3QUFBaGdBQUFJWkFBQUMxZ0FBQWhvQUFBSWJBQUFDMmdBQUFqY0FBQUkzQUFBQW13QUFBbGtBQUFKWkFBQUFuQUFBQXJ3QUFBSzhBQUFEcXdBQUFzWUFBQUxIQUFBQW5RQUFBc2tBQUFMSkFBQUFud0FBQXRnQUFBTGRBQUFBb0FBQUF2TUFBQUx6QUFBQXBnQUFBd0FBQUFNQkFBQUFwd0FBQXdNQUFBTURBQUFBcVFBQUF3a0FBQU1KQUFBQXFnQUFBdzhBQUFNUEFBQUFxd0FBQXlNQUFBTWpBQUFBckFBQUE0UUFBQU9GQUFBQXJRQUFBNFlBQUFPR0FBQURVZ0FBQTRjQUFBT0hBQUFBcndBQUE0Z0FBQU9LQUFBRFV3QUFBNHdBQUFPTUFBQURWZ0FBQTQ0QUFBT1NBQUFEVndBQUE1TUFBQU9VQUFBQXNBQUFBNVVBQUFPWEFBQURYQUFBQTVnQUFBT1lBQUFBc2dBQUE1a0FBQU9hQUFBRFh3QUFBNXNBQUFPYkFBQUFzd0FBQTV3QUFBT2RBQUFEWVFBQUE1NEFBQU9lQUFBQXRBQUFBNThBQUFPZkFBQURZd0FBQTZBQUFBT2dBQUFBdFFBQUE2RUFBQU9oQUFBRFpBQUFBNk1BQUFPakFBQUF0Z0FBQTZRQUFBT2xBQUFEWlFBQUE2WUFBQU9tQUFBQXR3QUFBNmNBQUFPbkFBQURad0FBQTZnQUFBT3BBQUFBdUFBQUE2b0FBQU93QUFBRGFBQUFBN0VBQUFPNUFBQUF1Z0FBQTdvQUFBTzZBQUFEYndBQUE3c0FBQU83QUFBQXd3QUFBN3dBQUFPOUFBQURjUUFBQTc0QUFBTytBQUFBeEFBQUE3OEFBQU8vQUFBRGNBQUFBOEFBQUFQR0FBQUF4UUFBQThjQUFBUEhBQUFEY3dBQUE4Z0FBQVBKQUFBQXpBQUFBOG9BQUFQT0FBQURkQUFBQTlFQUFBUFNBQUFBemdBQUE5WUFBQVBXQUFBQTBBQUFCQUFBQUFRQUFBQURzQUFBQkFFQUFBUUJBQUFEZVFBQUJBSUFBQVFDQUFBQTBRQUFCQU1BQUFRREFBQURlZ0FBQkFRQUFBUUVBQUFBMGdBQUJBVUFBQVFJQUFBRGV3QUFCQWtBQUFRTEFBQUEwd0FBQkF3QUFBUU1BQUFEZ0FBQUJBMEFBQVFOQUFBRHNRQUFCQTRBQUFRT0FBQURnUUFBQkE4QUFBUVBBQUFBMWdBQUJCQUFBQVFRQUFBRGdnQUFCQkVBQUFRUkFBQUExd0FBQkJJQUFBUVRBQUFEZ3dBQUJCUUFBQVFVQUFBQTJBQUFCQlVBQUFRVkFBQURoUUFBQkJZQUFBUVlBQUFBMlFBQUJCa0FBQVFaQUFBRGhnQUFCQm9BQUFRYUFBQURmd0FBQkJzQUFBUWJBQUFBM0FBQUJCd0FBQVFpQUFBRGh3QUFCQ01BQUFRa0FBQUEzUUFBQkNVQUFBUWxBQUFEamdBQUJDWUFBQVF2QUFBQTN3QUFCREFBQUFRd0FBQURqd0FBQkRFQUFBUTBBQUFBNlFBQUJEVUFBQVExQUFBRGtBQUFCRFlBQUFRNEFBQUE3UUFBQkRrQUFBUTVBQUFEa1FBQUJEb0FBQVE5QUFBQThBQUFCRDRBQUFRK0FBQURrZ0FBQkQ4QUFBUS9BQUFBOUFBQUJFQUFBQVJCQUFBRGt3QUFCRUlBQUFSQ0FBQUE5UUFBQkVNQUFBUkRBQUFEbFFBQUJFUUFBQVJFQUFBQTlnQUFCRVVBQUFSRkFBQURsZ0FBQkVZQUFBUlBBQUFBOXdBQUJGQUFBQVJRQUFBRHNnQUFCRkVBQUFSUkFBQURsd0FBQkZJQUFBUlNBQUFCQVFBQUJGTUFBQVJUQUFBRG1BQUFCRlFBQUFSVUFBQUJBZ0FBQkZVQUFBUllBQUFEbVFBQUJGa0FBQVJiQUFBQkF3QUFCRndBQUFSY0FBQURuUUFBQkYwQUFBUmRBQUFEc3dBQUJGNEFBQVJlQUFBRG5nQUFCRjhBQUFSaEFBQUJCZ0FBQkdJQUFBUmlBQUFFWEFBQUJHTUFBQVJ2QUFBQkNRQUFCSEFBQUFSeEFBQUR0QUFBQkhJQUFBUjFBQUFCRmdBQUJIWUFBQVIzQUFBRHRnQUFCSGdBQUFSNEFBQUR1UUFBQkhrQUFBUjVBQUFEdUFBQUJIb0FBQVNHQUFBQkdnQUFCSWdBQUFTSkFBQUJKd0FBQklvQUFBU0xBQUFFWVFBQUJJd0FBQVNNQUFBRVd3QUFCSTBBQUFTUkFBQUJLUUFBQkpJQUFBU1RBQUFFWFFBQUJKUUFBQVNWQUFBQkxnQUFCSllBQUFTWEFBQUVWZ0FBQkpnQUFBU1pBQUFEdWdBQUJKb0FBQVNiQUFBRVNBQUFCSndBQUFTZEFBQUJNQUFBQko0QUFBU2ZBQUFFWHdBQUJLQUFBQVNoQUFBQk1nQUFCS0lBQUFTakFBQUVTZ0FBQktRQUFBU3BBQUFCTkFBQUJLb0FBQVNyQUFBRHZBQUFCS3dBQUFTdEFBQUVUQUFBQks0QUFBU3ZBQUFEdmdBQUJMQUFBQVN4QUFBRWFRQUFCTElBQUFTekFBQUVUZ0FBQkxRQUFBUzFBQUFCT2dBQUJMWUFBQVMzQUFBRVVBQUFCTGdBQUFTNkFBQUJQQUFBQkxzQUFBUzdBQUFFV2dBQUJMd0FBQVM5QUFBQlB3QUFCTDRBQUFTL0FBQUVXQUFBQk1BQUFBVENBQUFEd0FBQUJNTUFBQVRFQUFBQlFRQUFCTVVBQUFUR0FBQUVad0FBQk1jQUFBVElBQUFCUXdBQUJNa0FBQVRLQUFBRVl3QUFCTXNBQUFUTUFBQUVVZ0FBQk0wQUFBVE9BQUFFWlFBQUJNOEFBQVRYQUFBRHd3QUFCTmdBQUFUWUFBQUJSUUFBQk5rQUFBVFpBQUFEelFBQUJOb0FBQVRhQUFBRHpBQUFCTnNBQUFUZkFBQUR6Z0FBQk9BQUFBVGhBQUFCUmdBQUJPSUFBQVQxQUFBRDB3QUFCUFlBQUFUM0FBQUVWQUFBQlBnQUFBVDVBQUFENXdBQUJQb0FBQVQ3QUFBQlNBQUFCUHdBQUFUOUFBQUQ2UUFBQlA0QUFBVC9BQUFFYXdBQUJRQUFBQVVBQUFBQlNnQUFCUUVBQUFVQkFBQUQ2d0FBQlFJQUFBVVFBQUFCU3dBQUJSRUFBQVVSQUFBRWJRQUFCUklBQUFVVEFBQUQ3QUFBSGdBQUFCNEJBQUFEcmdBQUhqNEFBQjQvQUFBRHJBQUFIb0FBQUI2RkFBQURud0FBSHFBQUFCN3hBQUFEN2dBQUh2SUFBQjd6QUFBRHBRQUFIdlFBQUI3NUFBQUVRQUFBSDAwQUFCOU5BQUFFcVFBQUlBQUFBQ0FMQUFBQld3QUFJQkFBQUNBUkFBQUJad0FBSUJNQUFDQVVBQUFCYVFBQUlCVUFBQ0FWQUFBRWJ3QUFJQmNBQUNBZUFBQUJhd0FBSUNBQUFDQWlBQUFCY3dBQUlDVUFBQ0FuQUFBQmRnQUFJREFBQUNBd0FBQUJlUUFBSURJQUFDQXpBQUFEcHdBQUlEa0FBQ0E2QUFBQmVnQUFJRHdBQUNBOEFBQURxUUFBSUVRQUFDQkVBQUFCZkFBQUlIUUFBQ0IwQUFBQmZRQUFJSDhBQUNCL0FBQUJmZ0FBSUtNQUFDQ2pBQUFFYmdBQUlLUUFBQ0NrQUFBQmZ3QUFJS1lBQUNDcUFBQUJnQUFBSUtzQUFDQ3JBQUFFUndBQUlLd0FBQ0NzQUFBQmhRQUFJTEVBQUNDeEFBQUJoZ0FBSUxrQUFDQzZBQUFCaHdBQUlMd0FBQ0M5QUFBQmlRQUFJUVVBQUNFRkFBQUJpd0FBSVJNQUFDRVRBQUFCakFBQUlSWUFBQ0VXQUFBQmpRQUFJU0lBQUNFaUFBQUJqZ0FBSVNZQUFDRW1BQUFBdVFBQUlTNEFBQ0V1QUFBQmp3QUFJVnNBQUNGZUFBQUJrQUFBSWdJQUFDSUNBQUFCbEFBQUlnWUFBQ0lHQUFBQXNRQUFJZzhBQUNJUEFBQUJsUUFBSWhFQUFDSVNBQUFCbGdBQUlob0FBQ0lhQUFBQm1BQUFJaDRBQUNJZUFBQUJtUUFBSWlzQUFDSXJBQUFCbWdBQUlrZ0FBQ0pJQUFBQm13QUFJbUFBQUNKZ0FBQUJuQUFBSW1RQUFDSmxBQUFCblFBQUpjb0FBQ1hLQUFBQm53QUE3Z0VBQU80Q0FBQUJvQUFBOXNNQUFQYkRBQUFCb2dBQSt3RUFBUHNFQUFBQnBBQUEvdjhBQVA3L0FBQUJxZ0FBLy93QUFQLzlBQUFCcTdBQUxFdXdDVkJZc1FFQmpsbTRBZitGc0lRZHNRa0RYMTR0c0FFc0lDQkZhVVN3QVdBdHNBSXNzQUVxSVMyd0F5d2dSckFESlVaU1dDTlpJSW9naWtsa2lpQkdJR2hoWkxBRUpVWWdhR0ZrVWxnalpZcFpMeUN3QUZOWWFTQ3dBRlJZSWJCQVdSdHBJTEFBVkZnaHNFQmxXVms2TGJBRUxDQkdzQVFsUmxKWUk0cFpJRVlnYW1Ga3NBUWxSaUJxWVdSU1dDT0tXUy85TGJBRkxFc2dzQU1tVUZoUldMQ0FSQnV3UUVSWkd5RWhJRVd3d0ZCWXNNQkVHeUZaV1Myd0Jpd2dJRVZwUkxBQllDQWdSWDFwR0VTd0FXQXRzQWNzc0FZcUxiQUlMRXNnc0FNbVUxaXdRQnV3QUZtS2lpQ3dBeVpUV0NNaHNJQ0tpaHVLSTFrZ3NBTW1VMWdqSWJEQWlvb2JpaU5aSUxBREpsTllJeUc0QVFDS2lodUtJMWtnc0FNbVUxZ2pJYmdCUUlxS0c0b2pXU0N3QXlaVFdMQURKVVc0QVlCUVdDTWh1QUdBSXlFYnNBTWxSU01oSXlGWkd5RlpSQzJ3Q1N4TFUxaEZSQnNoSVZrdHNBb3NzQ2xGTGJBTExMQXFSUzJ3REN5eEp3R0lJSXBUV0xsQUFBUUFZN2dJQUloVVdMa0FLUVBvY0ZrYnNDTlRXTEFnaUxnUUFGUll1UUFwQStod1dWbFpMYkFOTExCQWlMZ2dBRnBZc1NvQVJCdTVBQ29ENkVSWkxiQU1LN0FBS3dDeUFRMENLd0d5RGdFQ0t3RzNEam93SlJzUUFBZ3JBTGNCT0M0a0doRUFDQ3UzQWs1QU1pTVZBQWdydHdOSU95NGhGQUFJSzdjRVRrQXlJeFVBQ0N1M0JUQW9IeFlPQUFncnR3WmpVVDh0R3dBSUs3Y0hRRFFrR2hFQUNDdTNDRnRLT2lrWkFBZ3J0d21EWkU0Nkl3QUlLN2NLZDJKTU5pRUFDQ3UzQzVGM1hEb2pBQWdydHd4MllFczJIUUFJSzdjTkxDUWNGQXdBQ0NzQXNnOE5CeXV3QUNCRmZXa1lSTEt3RXdGenNsQVRBWFN5Z0JNQmRMSndFd0Yxc2c4ZkFYT3lieDhCZFFBcUFNd0FrUUNlQUpFQTdBQnlBTElBZlFCV0FGOEFUZ0JnQVFRQXhBQUFBQlQrWUFBVUFwc0FFUDg1QUEzK2x3QVNBeUVBQ3dRNkFCUUVqUUFRQmJBQUZBWVlBQlVHd0FBUUFsc0FFZ2NFQUFVQUFBQUFBQUFBQUFCZ0FHQUFZQUJnQUdBQW1nREVBVUFCdndKWUF2UUREZ002QTJrRG5BUEJBK01EK1FRZ0JEY0Vpd1M1QlFvRmZRWEJCaWNHandhOEJ6b0hwQWV3Qjd3SDJ3Z0NDQ0VJaHdrekNYTUozUW93Q25rS3VRcnZDMDRMaXd1bUM5a01JQXhFREowTTJRMHpEWDROM2c0M0RxVU96dzhORHo0UGpRL1lFQWtRUVJCbEVId1FvUkRJRU9NUkJCR0RFZU1TTnhLVUV3Z1RVUlBMRkFzVVJSU1FGTmNVOGhWZEZhWVY5QlpZRnJnVzlSZGpGNjRYOUJna0dISVl1eGo4R1RRWmR4bU9HYzhhRXhwUUdySWJGUnQyRzlrYitCeVRITVFkWlIzakhlOGVEQjY4SHRJZkVSOVVINmNnR1NBNUlJb2d0aURXSVFzaE9TR0RJWThocVNIRElkMGlSaUtxSXVnall5TzBKQ0FrM2lWV0phc21IU1o4SnRvbTlTZEJKNG9ueHlnZUtIa28vU21aS2NrcUxDcVNLdjhyWXl1M0xCRXNRaXlsTE53dEJDME1MVHN0WGkyV0xjSXVCUzQ2TG40dW5pNitMc2N1OVM4bkwwTXZYQytoTDZrdnp5LzhNSFV3b3pEak1SRXhUVEhDTWh3eWhUTDRNMmd6bXpRUE5JMDA1elV3TmFNMTBEWW9OcGcyNlRkQ041ODM5VGc1T0hnNDVEazJPWlk2RGpwZU90TTdORHVqUEJnOGpEemRQUms5Y1QzTlBqayt1RDd4UHpvL2dEL3NRQ0pBWTBDZ1FPbEJRa0dtUWZKQ2FFTG5RMEZEcVVRVFJEbEVqa1Q3UlhsRnNrWURSa3BHbEVicVJ4aEhSRWZPU0FSSVJraURTTWRKRzBsOVNjZEtPRXF3U3dsTGdVdnZUR05NMDAwM1RYTk4wazR4VHBoUEhVK2VUK3RRT1ZDbFVSSlJoRkgxVW41VEJsT2tWRGRVcFZVUFZWTlZtVllFVm10WEsxZmpXRnhZMjFrd1dZTlp1Rm5VV2dkYUhWb3pXd1JiY2x2YVhERmNvRnpNWFBWZFNsMlZYZXRlUFY2Tlh1SmZRVitQWCsxZ1EyRFNZVnhob21IbFlqZGlobUxKWXpoanQyUVhaR3hreW1VbFpZeGw3bVpJWmxkbVoyYTJaeDVucFdnWGFJQm81bWxLYWJWcUgycURhdkJyUzJ1ZGErOXNRR3kyYk9GczRXemhiT0ZzNFd6aGJPRnM0V3poYk9GczRXemhiT0ZzNld6eGJQdHRCVzBnYlVOdFpXMkZiYVJ0c0cyOGJlNXVMRzZOYnJGdXZXN05idVp2dEcvUWIreHYvM0FUY0ZwdzNIRitjZ3B5Rm5MbWMwdHp5WFIrZE9SMVhuVzJkaVIyd1hjaWQ3aDRGbmg0ZUpKNHJIakdlT0I1UzNseGVhbDV2M256ZW9WNngzdEdlNFY3bEh1amU5eDc3M3dZZkRGOFBYeWdmUFY5am40WWZvOS9TSDlJZ1BpQllZR09nZ3VDUElKU2dzR0RHNE5vZzltRUw0UjFoTHlGQ29VdGhXdUY3NFpFaG95R3pJY0NoMkNIdW9mVmlBQ0lRNGhuaUxtSThvbEdpWStKNm9wQ2lxdUsxWXNPaXorTGlZdlNqQU9NTzR5RGpLeU0vbzF4amJPT0VvNXVqcHVQSDQ5L2o1V1A2SkNXa1ArUllwR3JrZkdTTTVKMGt1cVRVNVBKay9PVUtKU2JsTTZWR0pWS2xZMlYrNVpNbHErWERKZUZsL2lZaUpqWW1SZVpiSm5DbWoyYXU1cjNtMCtibUp2Ym5CU2NWWnlObk11ZElaMHRuWG1kNzU1K250R2ZFNStVbi9tZ1g2REJvVkNoWEtHdG9mbWlSNktJb3ZlalhLTzZwRENrd3FWSHBkNm1VNmF5cHdXblphZHRwN21vSHFpQnFQS3BiYW5BcWlLcWJhckpxeXFyVkt1cnE5ZXNMcXgycklxc25xeXdyTVNzMXF6dHJRR3RYNjJGcmdLdVpxNjRyc0N1eUs3UXJ0dXU0NjlKcjBtdlVhL0JzREd3a3JEVXNUZXhUckZsc1h5eGpyR21zYm14eGJIUnNlaXgvN0lXc2k2eVJiSmNzbk95aTdLZHNyU3l5N0xpc3ZtekViTW9zenF6VWJOcHM0Q3psN09wczcrejFiUHN0QVMwRUxRY3RETzBSYlJidEhLMGlMU2V0TFcwemJUZXRQVzFCN1VkdFM2MVJyVmR0VysxaGJXY3RhNjF4YlhjdGUyMkJMWWJ0b1czSjdjNXQwdTNZcmQ0dDQrM3ByZTR0OG0zMjdmcnVBSzRFN2dxdUVDNFY3aHV1TnU1Y3JtSnVacTVzYm5IdWQ2NTlMb0x1aUs2THJwQXVsZTZhYnFBdXBLNnFickF1dGU2N3JyNXV3UzdHN3NudXpPN1NydGh1MjI3ZWJ1UXU2ZTdzN3UvdTlTNzZidjF2QUc4R0x3cXZEYThRcnhadkdxOGY3eVd2S2U4dnJ6VnZPMjlCYjBYdlNtOU5iMUJ2Vk85WkwxMnZZaTluNzIxdmNHOXpiM1p2ZVc5OTc0SXZoUytJTDRzdmppK1Q3NWJ2bksraUw2YXZyQyt4NzdldnZHL0JMOGN2eSsvamIvdndBYkFIY0Ewd0VyQVlzQjV3SkRBcDhDK3dOREE0Y0Q0d1FyQkljRTR3V2pCbU1Hb3diL0Ixc0hzd2YzQ0ZjSXR3am5DUmNKY3duUENpY0tnd3JmQ3pjTGt3dnpERHNNbHd6ZkRUY05ldzNiRGpjT2t3N3JEMHNQcHcvL0VGc1I5eEkvRXBjUzh4TTNFM3NUMHhRckZJY1dPeGFURnVzWFJ4ZWpGOU1ZS3hoekdNOFpLeGxYR2E4YUN4bzdHcE1hd3hzWEcwY2JveHZUSEM4Y2N4elBIUnNkWXgyVEhkY2VIeDUzSHFjZTZ4OGJIM01mb3gvN0lEOGdteURuSVRNaXR5TVRJMnNqeHlRakpIOGsxeVVESlRNbFl5V1RKY01sOHlZakpvOG1yeWJQSnU4bkR5Y3ZKMDhuYnllUEo2OG56eWZ2S0E4b0x5aFBLSzhwRHlsWEtaOHA1eW9yS3BNcXN5clRLdk1yRXlzeks1TXI3eXczTEg4c3h5MG5MWU12T3k5Ykw3c3YyeS83TUZjd3N6RFRNUE14RXpFek1ZOHhyekhQTWU4eUR6SXZNazh5YnpLUE1xOHl6ek1yTTBzemF6UzdOTnMwK3pWWE5iTTEwelh6TmxNMmN6YlBOeWMzZ3pmZk9EczRsempqT1M4NWl6blBPaDg2bXpyTE94TTdNenVQTzljOEJ6dzNQSk04N3oxTFBhYzl4ejNuUGtjK3B6N1hQd2MvTno5blA1Yy94ei9uUUFkQUowQ0RRTjlBLzBGYlFiZENGMEp6UXBOQ3MwTVBRMmREeDBQblJFTkVvMFVEUldORnYwWWJSbk5HMDBjelI1Tkg4MGdUU0ROSWswanZTVTlKcTBuelNqZEtsMHJ6UzFOTHMwd1RURzlNMzAxUFRYOU5yMDNQVGY5T0wwNWZUbzlPMTA4ZlQ0TlB5MUF2VUhkUXcxRUxVVmRSbjFIZlVodFNaMUt2VXZ0VFExT1BVOWRVSTFSclZLdFU2MVViVlV0VmsxWGJWaU5XWjFiTFZ4TlhkMWUvV0F0WVUxaWZXT2RaSjFsaldhdFo4MW9qV2xOYWcxcXpXdnRiUTF1UFc5ZGNJMXhyWExkYy8xMUxYWk5kMDE0UFhqOWVoMTYzWHY5ZkwxOTNYNmRmNjJBYllFdGdlMkNyWVBOaE8yR0RZY3RpRTJKYllxTmk2Mk16WTNkanAyUFhaQWRrTjJSL1pNZGxEMlZUWnp0bm8yZlRhQU5vTTJoamFKTm93Mmp6YVNOcFUybURhYk5wNDJvVGFrTnFjMnFqYXROckEyc2piTGR1UzI5RGNEOXh0M016YzU5MEMzUTdkR3QwbTNUTGRQdDFLM1pYZDVONCszcGJlbnQ2cTNyVGV2TjdFM3N6ZTFON2MzdVRlOXQ4STN4L2ZOdDlPMzJiZmZ0K1czNjdmeHQvZTMvYmdEdUFtNEQ3Z1Z1Qmk0RzdnZXVDRzRKTGdudUNxNExiZ3d1RFU0T2JnOHVEKzRRcmhGdUVpNFM3aE91Rkc0VmpoYXVGMjRZTGhqdUdhNGFiaHN1SEU0ZFhoNGVIdDRmbmlCZUlSNGgzaUtlSTE0a0hpVGVKWjRtWGljZUo5NG9YaWplS1Y0cDNpcGVLdDRyWGl2ZUxGNHMzaTFlTGQ0dVhpL2VNVTR5dmpQZU5GNDAzalplTnQ0My9qbGVPZDQ2WGpyZU8xNDh6ajFPUGM0K1RqN09QMDQvemtCT1FNNUpubEN1VnI1WFBsZitXUjVhTGxxdVcyNWNMbHp1WGE1ZVlBQUFBRkFHUUFBQU1vQmJBQUF3QUdBQWtBREFBUEFHK3lEQkFSRVJJNXNBd1FzQURRc0F3UXNBYlFzQXdRc0FuUXNBd1FzQTNRQUxBQVJWaXdBaThic1FJZlBsbXdBRVZZc0FBdkc3RUFEejVac2dRQ0FCRVNPYklGQWdBUkVqbXlCd0lBRVJJNXNnZ0NBQkVTT2JBSzNMSU1BZ0FSRWpteURRSUFFUkk1c0FJUXNBN2NNREVoSVJFaEF4RUJBUkVCQXlFQk5RRWhBeWo5UEFMRU52N3Uvcm9CRE9RQ0EvNytBUUw5L1FXdytxUUZCLzE5QW5mN0VRSjQvVjRDWG9nQ1hnQUNBSS8vOGdHakJiQUFBd0FOQUR1eUJnNFBFUkk1c0FZUXNBSFFBTEFBUlZpd0FpOGJzUUlmUGxtd0FFVllzQXd2RzdFTUR6NVpzZ1lOQ2l0WUlkZ2I5Rm13QWRDd0FTOHdNUUVqQXlFQk5EWXlGaFVVQmlJbUFYN1JGd0VBL3ZsS2dFcEloRWdCclFRRCtzTTVTMHM1TjBwS0FBSUFaUVAwQWtBR0FBQUVBQWtBSlFDd0FFVllzQU12RzdFRElUNVpzQUxRc0FJdnNBZlFzQWN2c0FNUXNBalFzQWd2TURFQkF5TVJNd1VESXhFekFSTWppNjRCTFNPTHJnVjMvbjBDREluK2ZRSU1BQUlBWUFBQUJMd0ZzQUFiQUI4QWpRQ3dBRVZZc0F3dkc3RU1IejVac0FCRldMQVFMeHV4RUI4K1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNCb3ZHN0VhRHo1WnNoME1BaEVTT2JBZEw3SUFBd29yV0NIWUcvUlpzQVRRc0IwUXNBYlFzQjBRc0F2UXNBc3ZzZ2dEQ2l0WUlkZ2I5Rm13Q3hDd0R0Q3dDeEN3RXRDd0NCQ3dGTkN3SFJDd0Z0Q3dBQkN3R05Dd0NCQ3dIdEF3TVFFakF5TVRJelVoRXlNMUlSTXpBek1UTXdNekZTTURNeFVqQXlNRE14TWpBcy9nVEtoTTV3RUZPdk1CRVU2blR1Rk9wMDdRN2pyZCsweW5kdUE2NEFHYS9tWUJtcDRCT1o4Qm9QNWdBYUQrWUovK3g1NytaZ0k0QVRrQUFRQmsveTBFSmdhYkFDd0FmYklxTFM0UkVqa0FzQUJGV0xBTUx4dXhEQjgrV2JBQVJWaXdDUzhic1FrZlBsbXdBRVZZc0NNdkc3RWpEejVac0FCRldMQWdMeHV4SUE4K1diSVpEQ0FSRWptd0dSQ3lBZ0VLSzFnaDJCdjBXYklQQ1NNUkVqbXdEQkN5RXdFS0sxZ2gyQnYwV2JJbkl3a1JFam13SXhDeUtnRUtLMWdoMkJ2MFdUQXhBVFFtSmljbU5UUTJOelV6RlJZV0ZTTTBKaU1pQmhVVUZnUWVBaFVVQmdjVkl6VW1KalV6RkJZek1qWURNMno4UnVuS3JhQ3V2dkp4WVdCc2F3RUFrbVEyejdtZnh0WHpmM1J5ZHdGOFZXOVpKbjMxcHRZVTJ0d1o5Y1Ira1doaFYybGVVR2VHV3FuU0U4UENGdkRHZm9wdUFBQUZBR1AvN0FXSkJjVUFEUUFhQUNjQU5RQTVBSW15QlRvN0VSSTVzQVVRc0JQUXNBVVFzQnZRc0FVUXNDalFzQVVRc0RiUUFMQTJMN0E0TDdBQVJWaXdBeThic1FNZlBsbXdBRVZZc0NVdkc3RWxEejVac0FNUXNBclFzQW92c2hFQ0NpdFlJZGdiOUZtd0F4Q3lHQUlLSzFnaDJCdjBXYkFsRUxBZTBMQWVMN0FsRUxJckFnb3JXQ0hZRy9SWnNCNFFzaklDQ2l0WUlkZ2I5Rmt3TVJNME5qTXlGaFVWRkFZaklpWTFGeFFXTXpJMk5UVTBKaUlHRlFFME5qTXlGaFVWRkFZZ0pqVVhGQll6TWpZMU5UUW1JeUlHRlFVbkFSZGpxb3FNcWFtS2g2K3FUVDgrVEUxK1N3SVNyb2VJcmFmKzZLdXFUejVBU1U0OVBrMytBbjBDeDMwRW1JU3BxWWxJZzZpbGpBWkZWVlZKU1VWV1YwZjgwSWFtcG8xSGdxbW5pUVZFVjFOTFMwWlVWRXIwU0FSeVNBQURBRmIvN0FVUkJjUUFIQUFsQURFQW1MSXVNak1SRWptd0xoQ3dFTkN3TGhDd0h0QUFzQUJGV0xBSkx4dXhDUjgrV2JBQVJWaXdHeThic1JzUFBsbXdBRVZZc0Jndkc3RVlEejVac2lBYkNSRVNPYklvQ1JzUkVqbXlBeUFvRVJJNXNoQW9JQkVTT2JJVEd3a1JFam15RVJNWUVSSTVzaGtZRXhFU09iSVdFUmtSRWptd0d4Q3lIUUVLSzFnaDJCdjBXYklmSFJFUkVqbXdDUkN5THdFS0sxZ2gyQnYwV1RBeEV6UTJOeVltTlRRMk16SVdGUlFHQndjQk5qVXpFQWNYSVNjR0lDUUZNamNCQndZVkZCWURGQmMzTnpZMU5DWWpJZ1pXYnFKVlE5Q3duOHRjYVdNQkdUM1RmdGIrNWxLYy9sRCsvUUhpZTJ2K3doOTRnaGxuYng4K1ZrSkhWQUdKWmFsMGE1WkdxOGU3aWx1WlRFait0SGlUL3ZPcy9XRjE1U05TQVhjV1czVmxmZ09xVkg5TUdUZFdPVkZnQUFBQkFGSUQvQUVMQmdBQUJBQVdBTEFBUlZpd0F5OGJzUU1oUGxtd0F0Q3dBaTh3TVFFREl4RXpBUXNhbjdrRmcvNTVBZ1FBQVFDQS9qRUNvZ1pmQUJBQUVMSUhFUklSRWprQXNBUXZzQTB2TURFVE5CSVNOeGNHQWdNSEVCSVhCeVlDQW9CODhJWXdqYThJQWF1YU1JYnhld0pRNXdHZkFVZENqbXYrU2Y3bFZ2N1IvaVY4aDBJQlNRR2RBQUVBS1A0eEFsRUdYd0FTQUJDeUJ4TVVFUkk1QUxBRUw3QU9MekF4QVJRQ0FnY25OaElSTlJBQ0p5YzNGaElTRndKUmV2aUhNSmF2bUk0Zk1JRHdnQWdDUU43K1kvNnRRWWQwQWQwQk1oY0JGZ0hKaWh5SVB2N0Uvbm5RQUFBQkFCc0NUUU4wQmJBQURnQWdBTEFBUlZpd0JDOGJzUVFmUGxtd0FOQVpzQUF2R0xBSjBCbXdDUzhZTURFQkpUY0ZBek1ESlJjRkV3Y0RBeWNCVFA3UE53RXVEN01QQVNrMi9zcklrYlN5a2dQTVdLbDFBVmorb25Pc1dQNzJhZ0VnL3VsbUFBQUJBRVFBa2dRcUJMWUFDd0FhQUxBSkw3QUEwTEFKRUxJR0FRb3JXQ0hZRy9SWnNBUFFNREVCSVJVaEVTTVJJVFVoRVRNQ3JnRjgvb1RzL29JQmZ1d0RJZDcrVHdHeDNnR1ZBQUVBSFA2NEFWMEE2d0FKQUJpeUNRb0xFUkk1QUxBS0w3SUZEUW9yV0NIWUcvUlpNREVUSnpZMk56VXpCd1lHbjRNNkt3SGJBUUZwL3JoT1c0ZEd2YTlxMVFBQUFRQkhBZ2tDVkFMTkFBTUFFUUN3QWkreUFRRUtLMWdoMkJ2MFdUQXhBU0UxSVFKVS9mTUNEUUlKeEFBQkFJZi85UUdpQVFBQUNnQWlzZ0FMREJFU09RQ3dBRVZZc0FZdkc3RUdEejVac2dBTkNpdFlJZGdiOUZrd01RRXlGaFVVQmlNaUpqUTJBUlJFU2twRVFVeEtBUUJOT2psTFNuUk5BQUFCQUFML2d3TCtCYkFBQXdBVEFMQUFMN0FBUlZpd0FpOGJzUUlmUGxrd01SY2pBVFBCdndJOXYzMEdMUUFBQWdCcC8rd0VJZ1hFQUEwQUd3QkdzZ01jSFJFU09iQURFTEFSMEFDd0FFVllzQW92RzdFS0h6NVpzQUJGV0xBREx4dXhBdzgrV2JBS0VMSVJBUW9yV0NIWUcvUlpzQU1Rc2hnQkNpdFlJZGdiOUZrd01RRVFBaU1pQWdNMUVCSXpNaElUSnpRbUl5SUdCeEVVRmpNeU5qY0VJdXZ3N084RDYvSHY2d1B6Y0hwM2NBTnllblZ3QXdKbC9zYit3UUUzQVRIOEFUb0JPdjdPL3M4VXpiKzF3UDYyek1pNXhRQUFBUUNvQUFBQy93VzFBQVlBT1FDd0FFVllzQVV2RzdFRkh6NVpzQUJGV0xBQUx4dXhBQTgrV2JJRUFBVVJFam13QkMreUF3RUtLMWdoMkJ2MFdiSUNBd1VSRWprd01TRWpFUVUxSlRNQy8vTCttd0k0SHdTUmVzM1JBQUFCQUZFQUFBUkFCY1FBR1FCT3NoRWFHeEVTT1FDd0FFVllzQkV2RzdFUkh6NVpzQUJGV0xBQUx4dXhBQTgrV2JJREVRQVJFam13RVJDeUNRRUtLMWdoMkJ2MFdiSVdFUUFSRWptd0FCQ3lHQUVLSzFnaDJCdjBXVEF4SVNFMUFUWTJOVFFtSXlJR0ZTTTBOall6TWhZVkZBWUhBU0VFUVB3dEFlVnBXWFZqZG9MemVlR1QxUFY3alA2Y0FxU25BaEYxblU5b2dKQjloZFYyMWJ4dDc1aitnd0FCQUUvLzdBUVZCY1FBS1FCdXNnY3FLeEVTT1FDd0FFVllzQTh2RzdFUEh6NVpzQUJGV0xBYkx4dXhHdzgrV2JJQkR4c1JFam13QVMreUh3RUJjYktmQVFGZHNqOEJBWEd3RHhDeUJ3RUtLMWdoMkJ2MFdiQUJFTElvQVFvcldDSFlHL1Jac2hVb0FSRVNPYkFiRUxJaUFRb3JXQ0hZRy9SWk1ERUJNelkyTlRRbUl5SUdGU00wTmpZek1oWVZGQVlIRmhZVkZBUWpJaVExTXhRV016STJOVFFtSXlNQmhwUndnMjF3WW43emQ5V0Uydmw5WTNoOS92UGIwdjcwODRGdGNZS0lobzhEUndGeWJHaHpjVnR3dUdmYncyS3RMQ213ZXNUbzRMcGdlSGh5YzN3QUFBSUFOQUFBQkZnRnNBQUtBQTRBU1FDd0FFVllzQWt2RzdFSkh6NVpzQUJGV0xBRUx4dXhCQTgrV2JJQkNRUVJFam13QVMreUFnRUtLMWdoMkJ2MFdiQUcwTEFCRUxBTDBMSUlCZ3NSRWpteURRa0VFUkk1TURFQk14VWpFU01SSVNjQk13RWhFUWNEbzdXMTgvMkxCd0owKy8yUUFYMFNBZ2ZEL3J3QlJKUUQyUHhYQW1BZ0FBQUJBSUgvN0FRNkJiQUFIUUJxc2hvZUh4RVNPUUN3QUVWWXNBRXZHN0VCSHo1WnNBQkZXTEFOTHh1eERROCtXYkFCRUxJREFRb3JXQ0hZRy9SWnNnY0JEUkVTT2JBSEw3SWFBUW9yV0NIWUcvUlpzZ1VIR2hFU09iQU5FTElVQVFvcldDSFlHL1Jac2hFVUdoRVNPYklkR2hRUkVqa3dNUk1USVJVaEF6WXpNaElWRkFBaklpUW5NeFlXTXpJMk5UUW1JeUlHQjY1UEF3Nzl2Q2hsZjlEbi93RGZ5UDc1QytzT2ZHUndmWXA1UWx3MkF0SUMzdEwrcERyKzl1SGUvdm5qdW1weG9JcUZteU16QUFBQ0FIWC83QVEzQmJjQUZBQWZBR0t5RlNBaEVSSTVzQlVRc0EzUUFMQUFSVml3QUM4YnNRQWZQbG13QUVWWXNBMHZHN0VORHo1WnNBQVFzZ0VCQ2l0WUlkZ2I5Rm15QndBTkVSSTVzQWN2c2dVSERSRVNPYklWQVFvcldDSFlHL1Jac0EwUXNoc0JDaXRZSWRnYjlGa3dNUUVWSXdZR0J6WXpNaElWRkFBaklnQVJOUkFBSVFNaUJnY1ZGQll5TmhBbUEyRWV6UFFYZGJiQjMvNzcxTnIrOFFGMUFWN3NVSVVmaU5oK2dBVzN5UVBheUh2KzhOZmUvdTBCUWdFRlV3Ri9BYkw5U1ZwTFNxSy9vZ0VJcGdBQUFRQkZBQUFFTmdXd0FBWUFNZ0N3QUVWWXNBVXZHN0VGSHo1WnNBQkZXTEFCTHh1eEFROCtXYkFGRUxJREFRb3JXQ0hZRy9SWnNnQURCUkVTT1RBeEFRRWpBU0UxSVFRMi9ici9Ba1g5RHdQeEJTbjYxd1R0d3dBQUF3Qm8vK3dFSWdYRUFCY0FJUUFyQUhTeUNTd3RFUkk1c0FrUXNCclFzQWtRc0NUUUFMQUFSVml3RlM4YnNSVWZQbG13QUVWWXNBa3ZHN0VKRHo1WnNpa0pGUkVTT2JBcEw3SWZLUUZ4c2hvQkNpdFlJZGdiOUZteUF4b3BFUkk1c2c4cEdoRVNPYkFKRUxJZkFRb3JXQ0hZRy9SWnNCVVFzaVVCQ2l0WUlkZ2I5Rmt3TVFFVUJnY1dGaFVVQkNNaUpEVTBOamNtSmpVME5qTXlGZ00wSmlJR0ZSUVdNallETkNZaUJoVVVGakkyQkFKdVgzSjcvdnpZMmY3N2ZIQmViZkRNemZEVGdkUi9mZHg3SDI2NmJHMjZiUVF3YTZjd05iaDB3T0hpdjNXNk1qQ25hN3JhMnZ5dmJJV0ViV3VBZkFMOVgzdDFaV1IyZGdBQUFnQmQvL29FRWdYRUFCVUFJUUJrc2draUl4RVNPYkFKRUxBVzBBQ3dBRVZZc0Frdkc3RUpIejVac0FCRldMQVJMeHV4RVE4K1diSVdFUWtSRWpsOHNCWXZHTElDQVFvcldDSFlHL1Jac2dBQ0NSRVNPYkFSRUxJU0FRb3JXQ0hZRy9SWnNBa1FzaDBCQ2l0WUlkZ2I5Rmt3TVFFR0l5SUNOVFEyTmpNeUFCRVZFQUFGSXpVek5qWURNalkzTlRRbUlnWVZGQllESG5xandPUjAxbzNjQVFMK25QNmZIU1BYNXR4SmdDT0UwbjErQW1HQkFRM2JrT3FDL3JqKzdVVCtkdjVpQThrRHlRRVBWRXBmb2NTdGhJbW9BUC8vQUlMLzlRR2RCRkVBSmdBUyt3QUFCd0FTLy9zRFVmLy9BQzcrdUFHSUJGRUFKd0FTLytZRFVRQUdBQkFTQUFBQkFEOEFwQU9FQkU0QUJnQVhzZ0FIQ0JFU09RQ3dBRVZZc0FVdkc3RUZHejVaTURFQkJSVUJOUUVWQVRZQ1R2eTdBMFVDZCtEekFYWEJBWFR6QUFJQWtRRmtBKzhEMWdBREFBY0FKUUN3Qnkrd0E5Q3dBeSt5QUFFS0sxZ2gyQnYwV2JBSEVMSUVBUW9yV0NIWUcvUlpNREVCSVRVaEVTRTFJUVB2L0tJRFh2eWlBMTRERE1yOWpza0FBQUVBZ0FDbEErQUVUZ0FHQUJleUFBY0lFUkk1QUxBQVJWaXdBaThic1FJYlBsa3dNUUVsTlFFVkFUVUM2djJXQTJEOG9BSjg0Ky8rak1IK2pPOEFBZ0E4Ly9RRG1BWEVBQmdBSXdCZXNna2tKUkVTT2JBSkVMQWMwQUN3QUVWWXNCQXZHN0VRSHo1WnNBQkZXTEFpTHh1eElnOCtXYkljRFFvcldDSFlHL1Jac0FEUXNBQXZzZ1FBRUJFU09iQVFFTElKQVFvcldDSFlHL1Jac2d3UUFCRVNPYklWQUJBUkVqa3dNUUUwTmpZM05qVTBKaU1pQmhVak5qWXpNaFlWRkFjSEJnY0RORFl6TWhZVkZBWWlKZ0ZlUXNNYUtGMWFWbW56QXUzRHllR1llMElDOUVvL1FFcEloRWNCcklXZXZTZzlSMTVqWVZPeHpzeTNvNTU1UzVEK3lUdEpTemszU2tvQUFnQmIvanNHMlFXUUFEWUFRZ0I4c2p0RFJCRVNPYkE3RUxBajBBQ3dLaSt3TXkrd0FFVllzQU12RzdFRER6NVpzQUJGV0xBSUx4dXhDQTgrV2JJRk13Z1JFam15RHpNSUVSSTVzQTh2c0FnUXNqb0NDaXRZSWRnYjlGbXdGZEN3TXhDeUd3SUtLMWdoMkJ2MFdiQXFFTElqQWdvcldDSFlHL1Jac0E4UXNrQUNDaXRZSWRnYjlGa3dNUUVHQWlNaUp3WUdJeUltTnpZU05qTXlGaGNEQmpNeU5qY1NBQ0VpQkFJSEJoSUVNekkyTnhjR0JpTWlKQ2NtRXhJU0pETXlCQklCQmhZek1qWTNFeVlqSWdZR3pRemV2clU5TTRkS2twY1NFSC9EYmxTQlZ6UVRoV2FEQmhIK3dmN0F4UDdSc2drTWl3RWZ6MVMzUUNZOXoybisvcFJiWGdzTTNnR0I5dmtCWjdMOEF3MUtVVFpnSGkweUwyK01BZ2I2L3QrYVRFend5YU1CQm84cVF2M054dHV1QVhFQmlNVCtqZTN4L3FPMktDS0pLREhYek5NQkpnRVNBYlh5Mi81bC9veUlqVjlUQWUwVDBRQUNBQklBQUFWQ0JiQUFCd0FLQUVZQXNBQkZXTEFFTHh1eEJCOCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVl2RzdFR0R6NVpzZ2tFQWhFU09iQUpMN0lBQVFvcldDSFlHL1Jac2dvRUFoRVNPVEF4QVNFRElRRXpBU0VCSVFNRHcvM01kdjc1QWliakFpZisrUDJjQWFiVEFWUCtyUVd3K2xBQ0h3SmNBQU1BbEFBQUJLTUZzQUFPQUJZQUh3QnRzZ0lnSVJFU09iQUNFTEFSMExBQ0VMQWUwQUN3QUVWWXNBRXZHN0VCSHo1WnNBQkZXTEFBTHh1eEFBOCtXYklYQUFFUkVqbXdGeSt5SHhjQmNiSVBBUW9yV0NIWUcvUlpzZ2dQRnhFU09iQUFFTElRQVFvcldDSFlHL1Jac0FFUXNoNEJDaXRZSWRnYjlGa3dNVE1SSVRJRUZSUUdCeFlXRlJRRUl3RVJJVEkyTlRRbkpUTXlOalUwSmlNamxBSHo5d0VDYkdoMmdmNzU5ZjdxQVJsM2h1aiswdmgyaFh1QzlnV3d4c1Jrb0N3Z3NYek4zQUtSL2psMmFlTUZ1bXRpYkdBQUFRQm0vK3dFNndYRUFCMEFRTElESGg4UkVqa0FzQUJGV0xBTUx4dXhEQjgrV2JBQVJWaXdBeThic1FNUFBsbXdEQkN5RXdFS0sxZ2gyQnYwV2JBREVMSWFBUW9yV0NIWUcvUlpNREVCQmdBaklpUUNKelUwRWlRek1nQVhJeVltSXlJR0J4VVVGak15TmpjRTZ4YisxUG11L3ZlUUE1SUJFYlB4QVNZWS9CS1RqcVd4QXFtamxaWVVBZHJwL3Z1bEFUREppTTRCT3FyKyt1K2RpL0hwZ2V6NGhwd0FBQUlBbEFBQUJOSUZzQUFMQUJVQVJySUNGaGNSRWptd0FoQ3dGZEFBc0FCRldMQUJMeHV4QVI4K1diQUFSVml3QUM4YnNRQVBQbG13QVJDeURBRUtLMWdoMkJ2MFdiQUFFTElOQVFvcldDSFlHL1JaTURFekVTRXlCQklWRlJRQ0JDTURFVE15TmpjMU5DWWpsQUd1d1FFcnBLWCt6OFdtcGNmVkFzN0VCYkNzL3NUTVNjLyt4cW9FNVB2bStlbFI3Zm9BQVFDVUFBQUVUQVd3QUFzQVRnQ3dBRVZZc0FZdkc3RUdIejVac0FCRldMQUVMeHV4QkE4K1diSUxCZ1FSRWptd0N5K3lBQUVLSzFnaDJCdjBXYkFFRUxJQ0FRb3JXQ0hZRy9SWnNBWVFzZ2dCQ2l0WUlkZ2I5Rmt3TVFFaEVTRVZJUkVoRlNFUklRUG4vYW9DdS94SUE3SDlUQUpXQW9yK1FNb0ZzTXorYmdBQkFKUUFBQVF4QmJBQUNRQkFBTEFBUlZpd0JDOGJzUVFmUGxtd0FFVllzQUl2RzdFQ0R6NVpzZ2tFQWhFU09iQUpMN0lBQVFvcldDSFlHL1Jac0FRUXNnWUJDaXRZSWRnYjlGa3dNUUVoRVNNUklSVWhFU0VEMi8yMi9RT2QvV0FDU2dKcC9aY0ZzTXorVHdBQkFHci83QVR3QmNRQUhnQlZzZ3NmSUJFU09RQ3dBRVZZc0Fzdkc3RUxIejVac0FCRldMQURMeHV4QXc4K1diQUxFTElSQVFvcldDSFlHL1Jac0FNUXNoZ0JDaXRZSWRnYjlGbXlIZ3NERVJJNXNCNHZzaHNCQ2l0WUlkZ2I5Rmt3TVNVR0JDTWlKQUluTlJBQUlUSUVGeU1DSVNJR0J4VVVFak15TnhFaE5TRUU4RS8rNkxLMy91YVpBd0U4QVJ2ekFSNGQrQ3IrK2FxeEE4ZXh3bEwrMUFJb3ZXZHFwZ0Uxem5JQlNnRno4T0lCQi9YdGNPeisrMWdCSGNBQUFRQ1VBQUFGR0FXd0FBc0FUQUN3QUVWWXNBWXZHN0VHSHo1WnNBQkZXTEFLTHh1eENoOCtXYkFBUlZpd0FDOGJzUUFQUGxtd0FFVllzQVF2RzdFRUR6NVpzZ2tHQUJFU09iQUpMN0lDQVFvcldDSFlHL1JaTURFaEl4RWhFU01STXhFaEVUTUZHUHo5ZGYzOUFvdjhBb2Y5ZVFXdy9hSUNYZ0FCQUtNQUFBR2ZCYkFBQXdBZEFMQUFSVml3QWk4YnNRSWZQbG13QUVWWXNBQXZHN0VBRHo1Wk1ERWhJeEV6QVovOC9BV3dBQUFCQUMzLzdBUGtCYkFBRHdBdnNnVVFFUkVTT1FDd0FFVllzQUF2RzdFQUh6NVpzQUJGV0xBRkx4dXhCUTgrV2JJTUFRb3JXQ0hZRy9SWk1ERUJNeEVVQkNNaUpqVXpGQll6TWpZMUF1ajgvdnZXNVBqOGMyMW1lUVd3L0FQUjl1Yk5kSFdIZHdBQkFKUUFBQVVZQmJBQURBQlRBTEFBUlZpd0JDOGJzUVFmUGxtd0FFVllzQWd2RzdFSUh6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdDeThic1FzUFBsbXlBQVFDRVJJNXRHb0FlZ0FDWGJJR0JBSVJFam0wWlFaMUJnSmRNREVCQnhFakVUTVJOd0VoQVFFaEFqYWwvZjJNQWFvQk12M2pBanorMUFKMXIvNDZCYkQ5VmEwQi92MTcvTlVBQVFDVUFBQUVKZ1d3QUFVQUtBQ3dBRVZZc0FRdkc3RUVIejVac0FCRldMQUNMeHV4QWc4K1diSUFBUW9yV0NIWUcvUlpNREVsSVJVaEVUTUJrUUtWL0c3OXlzb0ZzQUFBQVFDVUFBQUdhZ1d3QUE0QWJnQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQUNMeHV4QWg4K1diQUFSVml3QkM4YnNRUVBQbG13QUVWWXNBZ3ZHN0VJRHo1WnNBQkZXTEFNTHh1eERBOCtXYklCQUFRUkVqbTBaUUYxQVFKZHNnY0FCQkVTT2JScUIzb0hBbDJ5Q2dBRUVSSTV0R29LZWdvQ1hUQXhDUUloRVNNUkV3RWpBUk1SSXhFQjNBR2tBYU1CUi93Wi9sSzEvbE1aL0FXdys2UUVYUHBRQWVBQ2d2dWVCR0g5Zi80Z0JiQUFBQUVBbEFBQUJSY0ZzQUFKQUV5eUFRb0xFUkk1QUxBQVJWaXdCUzhic1FVZlBsbXdBRVZZc0Fndkc3RUlIejVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3QXk4YnNRTVBQbG15QWdVQUVSSTVzZ2NGQUJFU09UQXhJU01CRVNNUk13RVJNd1VYL2YxMy9mMENpL3NFQ2Z2M0JiRDc4d1FOQUFJQVp2L3NCUjRGeEFBUUFCNEFScklFSHlBUkVqbXdCQkN3Rk5BQXNBQkZXTEFNTHh1eERCOCtXYkFBUlZpd0JDOGJzUVFQUGxtd0RCQ3lGQUVLSzFnaDJCdjBXYkFFRUxJYkFRb3JXQ0hZRy9SWk1ERUJGQUlFSXlJa0FpYzFOQklrSUFRU0Z3YzBBaU1pQWdjVkZCSXpNaEkxQlI2VS91MnpzZjdybHdHWEFSTUJaQUVUbGdIOXQ2aWt1UUs3cHFpMUFyTFcvcjJ0clFGQTBWTFZBVWF0cS82LzFRWHlBUUwrLyt0VThQNzZBUUQyQUFJQWxBQUFCTlFGc0FBS0FCTUFUYklLRkJVUkVqbXdDaEN3RE5BQXNBQkZXTEFETHh1eEF4OCtXYkFBUlZpd0FTOGJzUUVQUGxteUN3RURFUkk1c0FzdnNnQUJDaXRZSWRnYjlGbXdBeEN5RXdFS0sxZ2gyQnYwV1RBeEFSRWpFU0V5QkJVVUJDTWxJVEkyTlRRbUp5RUJrZjBDTGZRQkgvN24vZjdUQVRDSGpwQisvc2tDSGYzakJiRCswZGJ1eTM5NGRvMENBQUlBWVA4RUJSb0Z4QUFWQUNNQVJySUlKQ1VSRWptd0NCQ3dJTkFBc0FCRldMQVJMeHV4RVI4K1diQUFSVml3Q0M4YnNRZ1BQbG13RVJDeUdRRUtLMWdoMkJ2MFdiQUlFTElnQVFvcldDSFlHL1JaTURFQkZBSUhGd2NsQmlNaUpBSW5OVFFTSkRNeUJCSVhCelFtSXlJQ0J4VVVFak15RWpVRkdZTjIrcVQreWoxR3NQN3Jsd0dYQVJPeHRBRVRsZ0grdUtpanVRSzVwNm0xQXJMUC90Rlp3NVQxRGEwQlFORlMxUUZHcmF2K3Y5VUY5djcrLytwVjdQNzJBUUQyQUFJQWxBQUFCTjRGc0FBT0FCY0FXcklGR0JrUkVqbXdCUkN3RU5BQXNBQkZXTEFFTHh1eEJCOCtXYkFBUlZpd0FpOGJzUUlQUGxteUR3SUVFUkk1c0E4dnNnRUJDaXRZSWRnYjlGbXlDd0VQRVJJNXNBSVFzQTdRc0FRUXNoY0JDaXRZSWRnYjlGa3dNUUVoRVNNUklUSUVGUlFHQndFVklRRWhNalkxTkNZbklRS3IvdWI5QWdEOEFSS05mZ0ZIL3ZIOXdnRUVnSkNGaFA3MUFqSDl6d1d3NHRhU3hUWDlvUTBDL0lGd2RZQUNBQUFCQUVyLzdBU0tCY1FBSndCanNoRW9LUkVTT1FDd0FFVllzQWt2RzdFSkh6NVpzQUJGV0xBZEx4dXhIUTgrV2JJQ0hRa1JFam15RGdrZEVSSTVzQWtRc2hFQkNpdFlJZGdiOUZtd0FoQ3lGd0VLSzFnaDJCdjBXYklpSFFrUkVqbXdIUkN5SlFFS0sxZ2gyQnYwV1RBeEFUUW1KQ2NtTlRRa016SVdGaFVqTkNZaklnWVZGQllFRmhZVkZBUWpJaVFtTlRNVUZqTXlOZ09OaC82Z2FNY0JIK1dZN29qOGo0VjhpWlFCVk01Zy91bnZudjczay8ya21ZU0ZBWGRnYUdwQmZjbXc1SERQZm5LQmFsOVFhMldCcDNDMjEzWE9pWHlJYXdBQUFRQXRBQUFFc0FXd0FBY0FMZ0N3QUVWWXNBWXZHN0VHSHo1WnNBQkZXTEFDTHh1eEFnOCtXYkFHRUxJQUFRb3JXQ0hZRy9SWnNBVFFNREVCSVJFakVTRTFJUVN3L2pyNy9qNEVnd1RrK3h3RTVNd0FBUUI5Lyt3RXZRV3dBQkFBUExJRUVSSVJFamtBc0FCRldMQUpMeHV4Q1I4K1diQUFSVml3RUM4YnNSQWZQbG13QUVWWXNBUXZHN0VFRHo1WnNnMEJDaXRZSWRnYjlGa3dNUUVSRkFBaklnQTFFVE1SRkJZeklCRVJCTDMrMS9mNi90cjhsSkFCSkFXdy9EUG8vdkVCQyswRHpQd3lrcG9CTkFQR0FBRUFFZ0FBQlIwRnNBQUdBRGl5QUFjSUVSSTVBTEFBUlZpd0FTOGJzUUVmUGxtd0FFVllzQVV2RzdFRkh6NVpzQUJGV0xBREx4dXhBdzgrV2JJQUFRTVJFamt3TVFFQklRRWpBU0VDbFFGeUFSYjk5UFg5OWdFVkFUMEVjL3BRQmJBQUFRQXdBQUFHNVFXd0FBd0FZTElGRFE0UkVqa0FzQUJGV0xBQkx4dXhBUjgrV2JBQVJWaXdDQzhic1FnZlBsbXdBRVZZc0Fzdkc3RUxIejVac0FCRldMQURMeHV4QXc4K1diQUFSVml3Qmk4YnNRWVBQbG15QUFFREVSSTVzZ1VCQXhFU09iSUtBUU1SRWprd01RRVRNd0VqQVFFakFUTVRBVE1GQ3VENy9yRHkvdXYrNWZQK3NQdmlBUmJVQVdnRVNQcFFCQ2Y3MlFXdys3b0VSZ0FCQUNrQUFBVHBCYkFBQ3dCVEFMQUFSVml3QVM4YnNRRWZQbG13QUVWWXNBb3ZHN0VLSHo1WnNBQkZXTEFFTHh1eEJBOCtXYkFBUlZpd0J5OGJzUWNQUGxteUFBRUVFUkk1c2dZQkJCRVNPYklEQUFZUkVqbXlDUVlBRVJJNU1ERUJBU0VCQVNFQkFTRUJBU0VDaVFFeUFTVCtTQUhDL3RuK3gvN0cvdG9Cdy81SEFTUURvZ0lPL1M3OUlnSVcvZW9DM2dMU0FBQUJBQWNBQUFUV0JiQUFDQUF4QUxBQVJWaXdBUzhic1FFZlBsbXdBRVZZc0Fjdkc3RUhIejVac0FCRldMQUVMeHV4QkE4K1diSUFBUVFSRWprd01RRUJJUUVSSXhFQklRSnZBVThCR1A0WS92NFhBUmtDL2dLeS9Hajk2QUlZQTVnQUFBRUFVQUFBQkl3RnNBQUpBRVFBc0FCRldMQUhMeHV4Qng4K1diQUFSVml3QWk4YnNRSVBQbG15QUFFS0sxZ2gyQnYwV2JJRUFBSVJFam13QnhDeUJRRUtLMWdoMkJ2MFdiSUpCUWNSRWprd01TVWhGU0UxQVNFMUlSVUJnZ01LKzhRQzhmMFVCQi9LeXFRRVFNeWdBQUFCQUlUK3ZBSWNCbzRBQndBaUFMQUVMN0FITDdJQUFRb3JXQ0hZRy9SWnNBUVFzZ01CQ2l0WUlkZ2I5Rmt3TVFFakVUTVZJUkVoQWh5bHBmNW9BWmdGMFBtcHZRZlNBQUFCQUJUL2d3TmtCYkFBQXdBVEFMQUNMN0FBUlZpd0FDOGJzUUFmUGxrd01STXpBU01VOEFKZzhBV3crZE1BQVFBTS9yd0JwZ2FPQUFjQUpRQ3dBaSt3QVMrd0FoQ3lCUUVLSzFnaDJCdjBXYkFCRUxJR0FRb3JXQ0hZRy9SWk1ERVRJUkVoTlRNUkl3d0JtdjVtcDZjR2p2Z3V2UVpYQUFBQkFEVUMyUU0xQmJBQUJnQW5zZ0FIQ0JFU09RQ3dBRVZZc0FNdkc3RURIejVac0FEUXNnRUhBeEVTT2JBQkw3QUYwREF4QVFNakFUTUJJd0cxc3M0Qks2c0JLczBFcHY0ekF0ZjlLUUFCQUFQL1FRT1lBQUFBQXdBYkFMQUFSVml3QXk4YnNRTVBQbG15QUFFS0sxZ2gyQnYwV1RBeEJTRTFJUU9ZL0dzRGxiKy9BQUFCQURFRTBRSUpCZ0FBQXdBa0FMQUJMN0lQQVFGZHNBUFFzQU12dEE4REh3TUNYYklBQVFNUkVqa1pzQUF2R0RBeEFTTUJJUUlKeXY3eUFSVUUwUUV2QUFBQ0FGci83QVA3QkU0QUhnQXBBSVd5RnlvckVSSTVzQmNRc0NEUUFMQUFSVml3Rnk4YnNSY2JQbG13QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFBTHh1eEFBOCtXYklDRndRUkVqbXlDeGNFRVJJNXNBc3ZzQmNRc2c4QkNpdFlJZGdiOUZteUVnc1BFUkk1UUFrTUVod1NMQkk4RWdSZHNBUVFzaDhCQ2l0WUlkZ2I5Rm13Q3hDeUl3Y0tLMWdoMkJ2MFdUQXhJU1luQmlNaUpqVTBKRE16TlRRbUl5SUdGU00wTmpZek1oWVhFUlFYRlNVeU5qYzFJeUlHRlJRV0F3TVFESFNvbzg0QkFlK1ZYbUJUYXZOMnkzMis0Z01wL2YxSWZ5Q0RoNGhkSDBaNXVvbXR1VWRVWlZOQVdadFl2NjMrR0pKWEVhOUdPOHhlVmtaVEFBSUFmUC9zQkRJR0FBQVBBQnNBWkxJVEhCMFJFam13RXhDd0ROQUFzQWt2c0FCRldMQU1MeHV4REJzK1diQUFSVml3QXk4YnNRTVBQbG13QUVWWXNBWXZHN0VHRHo1WnNnVU1BeEVTT2JJS0RBTVJFam13REJDeUV3RUtLMWdoMkJ2MFdiQURFTElZQVFvcldDSFlHL1JaTURFQkZBSWpJaWNISXhFekVUWXpNaElSSnpRbUl5SUhFUll6TWpZM0JETGh4YjVxRE56emFiTEc0dk44ZHA1QVFaOXlmQUlDRXZ6KzFvbDFCZ0Q5MG56KzJ2NzRCN0N3aXY1Q2phcXNBQUVBVC8vc0EvVUVUZ0FjQUV1eUFCMGVFUkk1QUxBQVJWaXdEeThic1E4YlBsbXdBRVZZc0Fndkc3RUlEejVac2dBQkNpdFlJZGdiOUZteUF3Z1BFUkk1c2hNUENCRVNPYkFQRUxJV0FRb3JXQ0hZRy9SWk1ERWxNalkzTXc0Q0l5SUFFVFUwQURNeUZoY2pKaVlqSWdZSEZSUVdBamxiZUFUbEJIYktkZVArOWdFSTVNSHpCdVVFZDF4MmdBRi9ybXBPWmE5bUFTWUJBeG4zQVNuaHQxMTRxNjRuc0swQUFBSUFULy9zQkFNR0FBQU9BQmtBWkxJWEdoc1JFam13RnhDd0E5QUFzQVl2c0FCRldMQURMeHV4QXhzK1diQUFSVml3REM4YnNRd1BQbG13QUVWWXNBZ3ZHN0VJRHo1WnNnVUREQkVTT2JJS0F3d1JFam13REJDeUVnRUtLMWdoMkJ2MFdiQURFTElYQVFvcldDSFlHL1JaTURFVE5CSXpNaGNSTXhFakp3WWpJZ0kzRkJZek1qY1JKaU1pQmsvb3c2eHE4OXdNYmJhKzYvTi9kWlZGUTVWMmdBSWwrZ0V2ZUFJcStnQndoQUV5OHFXNWhRSE9ncnNBQUFJQVUvL3NCQXNFVGdBVkFCMEFnN0lXSGg4UkVqbXdGaEN3Q05BQXNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0FDOGJzUUFQUGxteUdnQUlFUkk1c0JvdnRMOGF6eG9DWGJSZkdtOGFBbkcwSHhvdkdnSnh0TzhhL3hvQ2NiS01HZ0Zkc2d3SENpdFlJZGdiOUZtd0FCQ3lFQUVLSzFnaDJCdjBXYklTQ0FBUkVqbXdDQkN5RmdFS0sxZ2gyQnYwV1RBeEJTSUFOVFUwTmpZek1oSVJGU0VXRmpNeU54Y0dCZ01pQmdjaE5TWW1BbG5uL3VGOTRvdmQ4ZjA5QzUxM3AybURRZG1rWkhzUkFjOEljaFFCSS9JZW92K08vdWIrL21LR25JZDlZV3NEbjR4OUVucDlBQUFCQUMwQUFBTFdCaFVBRkFCVHNnY1ZGaEVTT1FDd0FFVllzQWd2RzdFSUlUNVpzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdBQzhic1FBUFBsbXdCQkN3RU5DeUV3RUtLMWdoMkJ2MFdiQUIwTEFJRUxJTkFRb3JXQ0hZRy9SWk1ERXpFU00xTXpVME5qTXlGd2NtSXlJVkZUTVZJeEhTcGFYSXRFQklCaWcxcnR6Y0E0YTBZN1RFRXI0SXMyQzAvSG9BQUFJQVV2NVdCQXdFVGdBWkFDUUFnN0lpSlNZUkVqbXdJaEN3QzlBQXNBQkZXTEFETHh1eEF4cytXYkFBUlZpd0JpOGJzUVliUGxtd0FFVllzQXN2RzdFTEVUNVpzQUJGV0xBWEx4dXhGdzgrV2JJRkF4Y1JFam13Q3hDeUVRRUtLMWdoMkJ2MFdiSVBFUmNSRWpteUZRTVhFUkk1c0JjUXNoMEJDaXRZSWRnYjlGbXdBeEN5SWdFS0sxZ2gyQnYwV1RBeEV6UVNNeklYTnpNUkZBUWpJaVluTnhZek1qWTFOUVlqSWdJM0ZCWXpNamNSSmlNaUJsTHR4TGxxQzl2KzkrRjM0enR6Y0tSNWpHbXZ2dkh5aFhhVFIwV1RlSVVDSmZ3QkxZRnQrK2ZWOW1OUWtvV0RmMGwxQVM3Mm83dCtBZHg3dmdBQkFIa0FBQVA0QmdBQUVBQkNzZ29SRWhFU09RQ3dFQyt3QUVWWXNBSXZHN0VDR3o1WnNBQkZXTEFOTHh1eERROCtXYkFBUlZpd0JpOGJzUVlQUGxtd0FoQ3lDZ0VLSzFnaDJCdjBXVEF4QVRZeklCTVJJeEUwSmlNaUJ4RWpFVE1CYkhlMkFWb0Y4MkZla2tqejh3UEVpdjUxL1QwQ3VuQmRndno3QmdBQUFBSUFmUUFBQVpBRjFRQURBQTBBUHJJR0RnOFJFam13QmhDd0FkQUFzQUJGV0xBQ0x4dXhBaHMrV2JBQVJWaXdBUzhic1FFUFBsbXdBaEN3RE5Dd0RDK3lCZzBLSzFnaDJCdjBXVEF4SVNNUk13RTBOaklXRlJRR0lpWUJmL1B6L3Y1SGhFaEloRWNFT2dFWk9FcEtPRGRKU1FBQUF2KzEva3NCaFFYVkFBd0FGZ0JKc2dNWEdCRVNPYkFERUxBUTBBQ3dBRVZZc0F3dkc3RU1HejVac0FCRldMQUVMeHV4QkJFK1diSUpBUW9yV0NIWUcvUlpzQXdRc0JYUXNCVXZzZzhOQ2l0WUlkZ2I5Rmt3TVFFUkZBWWpJaWMxRmpNeU54RURORFl5RmhVVUJpSW1BWHFsbjBNK0pqQjVBeFZIaEVoSWhFY0VPdnRtcHE4UndBbUVCS01CR1RoS1NqZzNTVWtBQVFCOUFBQUVOZ1lBQUF3QVV3Q3dBRVZZc0FRdkc3RUVJVDVac0FCRldMQUlMeHV4Q0JzK1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNBc3ZHN0VMRHo1WnNnQUlBaEVTT2JScUFIb0FBbDJ5QmdnQ0VSSTV0R1VHZFFZQ1hUQXhBUWNSSXhFekVUY0JJUUVCSVFIY2JQUHpUQUVyQVNUK2JnRzkvdWNCMEcvK253WUEvSXBmQVZIK1BmMkpBQUVBakFBQUFYOEdBQUFEQUIwQXNBQkZXTEFDTHh1eEFpRStXYkFBUlZpd0FDOGJzUUFQUGxrd01TRWpFVE1CZi9QekJnQUFBQUVBZkFBQUJua0VUZ0FkQUhleUJCNGZFUkk1QUxBQVJWaXdBeThic1FNYlBsbXdBRVZZc0Fjdkc3RUhHejVac0FCRldMQUFMeHV4QUJzK1diQUFSVml3R3k4YnNSc1BQbG13QUVWWXNCVXZHN0VWRHo1WnNBQkZXTEFNTHh1eERBOCtXYklCQXhzUkVqbXlCUWNWRVJJNXNBY1FzaEFCQ2l0WUlkZ2I5Rm13R05Bd01RRVhOak15RnpZek1oWVhFU01STkNZaklnWUhFeU1SSmlNaUJ4RWpFUUZoQjNMRzJWQjIxck92QXZOYWFGTnBGUUh6QmI2U1BmTUVPbkdGcHFiR3dmMDVBc0JuWUZsSS9Sb0N5TDkzL1BBRU9nQUJBSGtBQUFQNEJFNEFFQUJUc2dzUkVoRVNPUUN3QUVWWXNBTXZHN0VER3o1WnNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0RpOGJzUTRQUGxtd0FFVllzQWN2RzdFSER6NVpzZ0VPQXhFU09iQURFTElMQVFvcldDSFlHL1JaTURFQkZ6WXpJQk1SSXhFMEppTWlCeEVqRVFGZUIzakRBVklHODFsbGswanpCRHA5a2Y1OS9UVUN2V2RqaGZ6K0JEb0FBQUlBVC8vc0JEMEVUZ0FQQUJvQVE3SU1HeHdSRWptd0RCQ3dHTkFBc0FCRldMQUVMeHV4QkJzK1diQUFSVml3REM4YnNRd1BQbG15RWdFS0sxZ2gyQnYwV2JBRUVMSVlBUW9yV0NIWUcvUlpNREVUTkRZMk16SUFGeGNVQmdZaklnQTFGeFFXTWpZMU5DWWpJZ1pQZnVTVTJ3RVJDd0Y3NVpibC91M3ppdmFKalhsM2pBSW5uLytKL3VicE9hRDhpZ0V4L2dtbnZjQzVwTUM5QUFJQWZQNWdCREFFVGdBUEFCb0FicklUR3h3UkVqbXdFeEN3RE5BQXNBQkZXTEFNTHh1eERCcytXYkFBUlZpd0NTOGJzUWtiUGxtd0FFVllzQVl2RzdFR0VUNVpzQUJGV0xBREx4dXhBdzgrV2JJRkRBTVJFam15Q2d3REVSSTVzQXdRc2hNQkNpdFlJZGdiOUZtd0F4Q3lHQUVLSzFnaDJCdjBXVEF4QVJRQ0l5SW5FU01STXhjMk16SVNFU2MwSmlNaUJ4RVdNekkyQkREa3dMSnI4K0FLYTdqRzRmS0JlSlZCUXBaMGd3SVMrLzdWZGYzL0JkcHVndjdaL3ZvR29yNTcvaUIrdXdBQUFnQlAvbUFFQWdST0FBNEFHUUJyc2hjYUd4RVNPYkFYRUxBRDBBQ3dBRVZZc0FNdkc3RURHejVac0FCRldMQUdMeHV4QmhzK1diQUFSVml3Q0M4YnNRZ1JQbG13QUVWWXNBd3ZHN0VNRHo1WnNnVUREQkVTT2JJS0F3d1JFam15RWdFS0sxZ2gyQnYwV2JBREVMSVhBUW9yV0NIWUcvUlpNREVUTkJJek1oYzNNeEVqRVFZaklnSTNGQll6TWpjUkppTWlCay9veHJWcUR0anphcXJDNnZPRGRKQkdSbzUwaFFJbS9nRXFmMnY2SmdIOGNBRXY5cWE5ZXdIc2Ryb0FBUUI4QUFBQ3RBUk9BQTBBUnJJSkRnOFJFamtBc0FCRldMQUlMeHV4Q0JzK1diQUFSVml3Q3k4YnNRc2JQbG13QUVWWXNBVXZHN0VGRHo1WnNBc1FzZ0lCQ2l0WUlkZ2I5Rm15Q1FzRkVSSTVNREVCSmlNaUJ4RWpFVE1YTmpNeUZ3S3pNRE9uT3ZQb0JsaWNOQ0lEWEFpQS9Sd0VPbm1ORGdBQkFFdi83QVBLQkU0QUpnQnBzZ2tuS0JFU09RQ3dBRVZZc0Frdkc3RUpHejVac0FCRldMQWNMeHV4SEE4K1diSUNIQWtSRWptd0FoQ3dGdEN3Q1JDeUVBRUtLMWdoMkJ2MFdiSU5GaEFSRWptMERBMGNEUUpkc0J3UXNpUUJDaXRZSWRnYjlGbXlJU1FDRVJJNXRBTWhFeUVDWFRBeEFUUW1KaWNtTlRRMk16SVdGU00wSmlNaUJoVVVGZ1FXRmhVVUJpTWlKaVkxTXhZV016STJBdHRyK0ZPMjdMYkM3L05vVmxCbFhnRWVvMC95eElYUWRPd0ZlR05nWkFFbVFVUTBLRmluakx6QW1VWmRTajQ0UGo5WGVsZVN0V0NvWVZaZFNRQUFBUUFJLyt3Q2NnVkJBQlFBVXJJQUZSWVJFamtBc0FCRldMQVRMeHV4RXhzK1diQUFSVml3RFM4YnNRMFBQbG13RXhDd0FkQ3dBTkN3QUMrd0FSQ3lCQUVLSzFnaDJCdjBXYkFORUxJSUFRb3JXQ0hZRy9SWnNBUVFzQkRRTURFQkVUTVZJeEVVRmpNeU54VUdJeUFSRVNNMU14RUJyYisvTVQ4cUsxTk4vdWl5c2dWQi92bTAvYVErTndxOEZ3RTFBbVcwQVFjQUFRQjMvK3dEOXdRNkFCQUFVN0lLRVJJUkVqa0FzQUJGV0xBSEx4dXhCeHMrV2JBQVJWaXdEUzhic1EwYlBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQVBMeHV4RHc4K1diSUFBZzBSRWptd0FoQ3lDZ0VLSzFnaDJCdjBXVEF4SlFZaklpWTFFVE1SRkRNeU54RXpFU01EREd2RnNMWHpxN0UrOCtWcWZzN0RBcjM5UnM1L0F3bjd4Z0FCQUJZQUFBUGFCRG9BQmdBNHNnQUhDQkVTT1FDd0FFVllzQUV2RzdFQkd6NVpzQUJGV0xBRkx4dXhCUnMrV2JBQVJWaXdBeThic1FNUFBsbXlBQVVERVJJNU1ERUJFek1CSXdFekFmcmwrLzZKMC82Ry9BRTBBd2I3eGdRNkFBQUJBQ0VBQUFYTUJEb0FEQUJnc2dVTkRoRVNPUUN3QUVWWXNBRXZHN0VCR3o1WnNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0N5OGJzUXNiUGxtd0FFVllzQU12RzdFRER6NVpzQUJGV0xBR0x4dXhCZzgrV2JJQUN3TVJFam15QlFzREVSSTVzZ29MQXhFU09UQXhBUk16QVNNREF5TUJNeE1UTXdRenJPMysyY2pvNU1qKzJPMnYzcmNCVHdMcis4WUM1LzBaQkRyOUhRTGpBQUFCQUI4QUFBUG9CRG9BQ3dCVEFMQUFSVml3QVM4YnNRRWJQbG13QUVWWXNBb3ZHN0VLR3o1WnNBQkZXTEFFTHh1eEJBOCtXYkFBUlZpd0J5OGJzUWNQUGxteUFBb0VFUkk1c2dZS0JCRVNPYklEQUFZUkVqbXlDUVlBRVJJNU1ERUJFeUVCQVNFREF5RUJBU0VDQWM0QkR2NjFBVmIrOU5qWC92SUJWdjYyQVF3QzFnRmsvZXY5MndGeS9vNENKUUlWQUFFQURQNUxBOVlFT2dBUEFEK3lBQkFSRVJJNUFMQUFSVml3RHk4YnNROGJQbG13QUVWWXNBVXZHN0VGRVQ1WnNnQUZEeEVTT2JBUEVMQUIwTEFGRUxJSkFRb3JXQ0hZRy9SWk1ERUJFeUVCQWlNaUp6VVhNalkzTndFaEFmZmNBUVArVW1QdE5VQXVYRjBiSS82RUFRWUJYQUxlK3lMKzd4SzhBME5QWFFRMUFBQUJBRklBQUFQQUJEb0FDUUJFQUxBQVJWaXdCeThic1FjYlBsbXdBRVZZc0FJdkc3RUNEejVac2dBQkNpdFlJZGdiOUZteUJBQUNFUkk1c0FjUXNnVUJDaXRZSWRnYjlGbXlDUVVIRVJJNU1ERWxJUlVoTlFFaE5TRVZBWUFDUVB5U0FpWDk1UU5Qd3NLZkF0ZkVtZ0FBQVFBNC9wZ0NrUVk5QUJjQU5ySVNHQmtSRWprQXNBd3ZzQUJGV0xBQUx4dXhBQmMrV2JJR0FBd1JFam13QmkreUJRY0tLMWdoMkJ2MFdiSVNCUVlSRWprd01RRWtBelUwSXpVeU5UVTJOamNYQmdjVkZBY1dGUlVXRndKaC9wOEh3Y0VEdGJBd3JRYXRyUWF0L3BoakFXRFY0YkxpMUxUZU1vdzQrdGpoVzF6ajFmbzRBQUFCQUs3KzhnRlZCYkFBQXdBVEFMQUFMN0FBUlZpd0FpOGJzUUlmUGxrd01RRWpFVE1CVmFlbi92SUd2Z0FBQVFBYi9wZ0NkUVk5QUJnQU5ySUZHUm9SRWprQXNBc3ZzQUJGV0xBWUx4dXhHQmMrV2JJUkdBc1JFam13RVMreUVnY0tLMWdoMkJ2MFdiSUZFaEVSRWprd01SYzJOelUwTnlZMU5TWW5OeFlXRlJVVU14VWlGUlVVQmdjYnNBUzJ0Z1N3TUxheXdzS3p0ZHM1LzlEblZsYnF6Lzg1akRQbHVjamhzdUhGdStVekFBRUFkUUdEQk53REx3QVhBRCt5RVJnWkVSSTVBTEFQTDdJREdBOFJFam13QXkrd0R4Q3lDQUVLSzFnaDJCdjBXYkFERUxBTDBMQURFTElVQVFvcldDSFlHL1Jac0E4UXNCZlFNREVCRkFZaklpNENJeUlHRlNNME5qTXlIZ0l6TWpZMUJOeStqa3A5bWtNbVEwM0J0cFJLaFpGREowTlVBeEt3M3ppSklXaFVxOXM3aENKd1ZBQUNBSWIrbEFHWkJFMEFBd0FQQUQ2eUJ4QVJFUkk1c0FjUXNBRFFBTEFBUlZpd0RTOGJzUTBiUGxtd0FFVllzQU12RzdFREZ6NVpzQTBRc2djTkNpdFlJZGdiOUZtd0FOQ3dBQzh3TVJNekV5RUJGQVlqSWlZMU5EWXpNaGFxMFJqKy93RUhTRUZDU0VoQ1FVZ0NsdnYrQlRjNFMwczROMHRMQUFFQVpQOExCQW9GSmdBZ0FGMnlHeUVpRVJJNUFMQUFSVml3RVM4YnNSRWJQbG13QUVWWXNBb3ZHN0VLRHo1WnNnQUJDaXRZSWRnYjlGbXlBd29SRVJJNXNBb1FzQWZRc0FjdnNCRVFzQlRRc0JRdnNoZ1JDaEVTT2JBUkVMSWJBUW9yV0NIWUcvUlpNREVsTWpZM013WUdCeFVqTlNZQ05UVTBFamMxTXhVV0ZoY2pKaVlqSWdNSEZCWUNUMWw0QnVRRXhaTEl0OHpNdDhpZXVRVGtCM1piNWhBQmY2NW9VSWpOSE9ycUlnRWYzQnpWQVNBaTRlQWMySnhnZGY3SVNMQ3RBQUFCQUY0QUFBUjhCY01BSHdCbHNob2dJUkVTT1FDd0FFVllzQkl2RzdFU0h6NVpzQUJGV0xBRkx4dXhCUTgrV2JJRUFRb3JXQ0hZRy9SWnNBalFzaDRGRWhFU09iQWVMN0lmQVFvcldDSFlHL1Jac0F6UXNCNFFzQS9Rc2hZRkVoRVNPYkFTRUxJWkFRb3JXQ0hZRy9SWk1ERUJGeFFISVFjaE5UTTJOalVuSXpVekp6UTJJQllWSXpRbUl5SUdGUmNoRlFIOUIwQUN1QUg3NTFJbkt3ZWhtd2o2QVpibzlXbGVXV2NKQVRjQ1ZyQ0hWY3JLQ1c5YnVjZnl5dXJhdUY5cGdtanl4d0FDQUYzLzVRVlBCUEVBR3dBb0FEK3lBaWtxRVJJNXNBSVFzQi9RQUxBQVJWaXdBaThic1FJUFBsbXdFTkN3RUMrd0FoQ3lJQWNLSzFnaDJCdjBXYkFRRUxJbUJ3b3JXQ0hZRy9SWk1ERWxCaU1pSndjbk55WTFORGNuTnhjMk16SVhOeGNIRmhVVUJ4Y0hBUlFXRmpJMk5qUW1KaUlHQmdROW44dktub0dOaDJSdGtJMk9tOERDbTVHT2xHdGlpNDc4ZUc2KzNMNXRiYjNldm0xcmYzNkVrSW1jeGNpbGs1Q1JjM1dVa1plZnlzR2NqWkVDZTNqT2RYYk83c3gxZGN3QUFBRUFHUUFBQk1BRnNBQVdBSElBc0FCRldMQVdMeHV4Rmg4K1diQUFSVml3REM4YnNRd1BQbG15QUF3V0VSSTVzQllRc0FIUXNnOE1GaEVTT2JBUEw3QVQwTEFUTDdRUEV4OFRBbDJ3Qk5Dd0JDK3dFeEN5RWdRS0sxZ2gyQnYwV2JBRzBMQVBFTEFIMExBSEw3QVBFTElPQkFvcldDSFlHL1Jac0FyUU1ERUJBU0VCSVJVaEZTRVZJUkVqRVNFMUlUVWhOU0VCSVFKdEFUc0JHUDUzQVEzK293RmQvcVA4L3A0Qll2NmVBUm4rZHdFWkF6UUNmUDAybUlxWC90TUJMWmVLbUFMS0FBSUFpUDd5QVcwRnNBQURBQWNBR0FDd0FDK3dBRVZZc0FZdkc3RUdIejVac2dVQkF5c3dNUk1STXhFUkl4RXppT1hsNWY3eUF4djg1UVBJQXZZQUFnQmEvaVlFakFYRUFDOEFQUUNDc2lBK1B4RVNPYkFnRUxBdzBBQ3dCeSt3QUVWWXNDQXZHN0VnSHo1WnNqa2dCeEVTT2JBNUVMSVRBUW9yV0NIWUcvUlpzZ0k1RXhFU09iQUhFTElPQVFvcldDSFlHL1Jac2dzT0V4RVNPYkl5SUFjUkVqbXdNaEN5TEFFS0sxZ2gyQnYwV2JJYU1pd1JFam13SUJDeUp3RUtLMWdoMkJ2MFdiSWtMQ2NSRWprd01RRVVCeFlWRkFRaklpUTFOeFFXTXpJMk5UUW1KeTRDTlRRM0ppWTFOQ1F6TWdRVkl6UW1JeUlHRlJRV0JCWVdKU1luQmhVVUZoOENOalUwSmdTTXE0Zis4dXIyL3VEeW5JaDVqWWE3dkw1ZHFVRkVBUlBtOEFFTTg1RjRlNHQ0QVlQQ1d2M05VVXhzWTVXekxuT0lBY2U0V1dTNXJjYlp6d0Z1ZUY5UFRWczNNMjZhYmJoYU1vaGtxc3poekdxQVgxSlVWMmh4bVc0VkhDaDhVVll2TlJBdmRWRmhBQUlBWFFUZkF5TUZ6QUFJQUJFQUlnQ3dCeSt5RHdjQlhiSUNCUW9yV0NIWUcvUlpzQXZRc0FjUXNCRFFzQkF2TURFVE5EWXlGaFFHSWlZbE5EWXlGaFFHSWlaZFEzWkVSSFpEQWNoRWRrUkVka1FGVmpKRVJHUkVSREV5UkVSa1JFUUFBd0JYLyt3RjRnWEVBQm9BS0FBMkFJNnlIemM0RVJJNXNCOFFzQW5Rc0I4UXNEUFFBTEFBUlZpd015OGJzVE1QUGxtd0xkQ3dMUyt5QWpNdEVSSTVzQUl2dEE4Q0h3SUNYYklKTFRNUkVqbXdDUyswQUFrUUNRSmRzZzBKQWhFU09iSVFBZ29yV0NIWUcvUlpzQUlRc2hjQ0NpdFlJZGdiOUZteUdnSUpFUkk1c0MwUXNoOElDaXRZSWRnYjlGbXdNeEN5SlFnS0sxZ2gyQnYwV1RBeEFSUUdJQ1kxTlRRMk16SVdGU00wSmlNaUJoVVZGQll6TWpZMUpUUUNKQ01pQkFJUUVnUWdKQklsTkJJa0lBUVNFQUlFSXlJa0FnUmVyLzdBdmIrZW82MmNYRmhjWjJoYldWb0JwcGIrN3FPZi91K2Ntd0VSQVVBQkU1ajY3N3NCU3dHQUFVcTd1LzY0d3NIK3Q3d0NWSmlpMWJSeHJ0V2xsV0JUaUhaMWRvWlJZb1dtQVIycnBQN2cvcXorNEtlcUFTQ255Z0ZheDhmK3B2NXMvcWJKeUFGYUFBSUFqUUt6QXhFRnhBQWFBQ1FBajdJTkpTWVJFam13RFJDd0hOQUFzQUJGV0xBVUx4dXhGQjgrV2JJREpSUVJFam13QXkrd0FOQ3dBQyt5QVFNVUVSSTVzZ29ERkJFU09iQUtMN0FVRUxJTkFnb3JXQ0hZRy9SWnNoQUtEUkVTT2JMTUVBRmRRQk1NRUJ3UUxCQThFRXdRWEJCc0VId1FqQkFKWGJLNkVBRnhzQU1Rc2hzQ0NpdFlJZGdiOUZtd0NoQ3lId0lLSzFnaDJCdjBXVEF4QVNjR0l5SW1OVFEyTXpNMU5DTWlCaFVuTkRZek1oWVZFUlFYSlRJMk56VWpCZ1lWRkFKZ0VVMThkb09vcldaMFFVbXRyNGlKbWhyK29DaFVHMnBNVmdMQlJGSjdhVzU1TTM4ek1BNW9nWkdFL3NSaFVZSWtHWWtCUERGWS8vOEFWd0NLQTRVRHFRQW1BWHJyQUFBSEFYb0JVZ0FBQUFFQWZ3RjJBOElESlFBRkFCb0FzQVF2c0FIUXNBRXZzQVFRc2dJQkNpdFlJZGdiOUZrd01RRWpFU0UxSVFQQ3lQMkZBME1CZGdFRXF3QUVBRmYvN0FYaUJjUUFEUUFiQURFQU9nQ2RzZ283UEJFU09iQUtFTEFTMExBS0VMQXgwTEFLRUxBejBBQ3dBRVZZc0FNdkc3RURIejVac0FCRldMQUtMeHV4Q2c4K1diQURFTElTQ0FvcldDSFlHL1Jac0FvUXNoZ0lDaXRZSWRnYjlGbXlIUW9ERVJJNXNCMHZzaDhEQ2hFU09iQWZMN1FBSHhBZkFsMnlNaDBmRVJJNXNESXZzaHdJQ2l0WUlkZ2I5Rm15SlJ3eUVSSTVzQjBRc0N6UXNCOFFzam9JQ2l0WUlkZ2I5Rmt3TVJNMEVpUWdCQklRQWdRaklpUUNKVFFDSkNNaUJBSVFFZ1FnSkJJbEVTTVJJVElXRlJRSEZoWVVGaGNWSXlZMU5DWWpKek15TmpVMEppY2pWN3NCU3dHQUFVcTd1LzY0d3NIK3Q3d0ZFWmIrN3FPZi91K2Ntd0VSQVVBQkU1ajlKWmNCR1ptc2VFRTBCd3FiRFVKTm5vOUZYVWRkalFMWnlnRmF4OGYrcHY1cy9xYkp5QUZheTZZQkhhdWsvdUQrclA3Z3A2b0JJRnYrcndOU2gzMTFQeDF2bzBRWEVDS2dURU9HUGpaR093RUFBUUNIQlJJRFhnV3dBQU1BRVFDd0FTK3lBZ01LSzFnaDJCdjBXVEF4QVNFMUlRTmUvU2tDMXdVU25nQUNBSDhEcndLTEJjUUFDUUFUQURteUFCUVZFUkk1c0FyUUFMQUFSVml3QUM4YnNRQWZQbG13Q3RDd0NpK3lCUUlLSzFnaDJCdjBXYkFBRUxJUUFnb3JXQ0hZRy9SWk1ERUJNaFlVQmlNaUpqUTJFekkyTlRRbUlnWVVGZ0dIYXBxWWJHMmJuV3MxUlVWcVNFa0Z4SjdjbTV2Y252NTRSelUwVEV4b1NBQUNBRjhBQVFQekJQd0FDd0FQQUVZQXNBa3ZzQUJGV0xBTkx4dXhEUTgrV2JBSkVMQUEwTEFKRUxJR0FRb3JXQ0hZRy9SWnNBUFFzQTBRc2c0QkNpdFlJZGdiOUZteUJRNEdFUkk1dEFzRkd3VUNYVEF4QVNFVklSRWpFU0UxSVJFekFTRTFJUUtjQVZmK3Fkaittd0ZsMkFFeS9LOERVUU9EeC81OEFZVEhBWG43QmNRQUFBRUFQQUtiQXJJRnV3QVhBRm15Q0JnWkVSSTVBTEFBUlZpd0R5OGJzUThmUGxtd0FFVllzQUF2RzdFQUV6NVpzaFlDQ2l0WUlkZ2I5Rm15QWdBV0VSSTVzZ01QQUJFU09iQVBFTElJQWdvcldDSFlHL1Jac2d3UEFCRVNPYklURHdBUkVqa3dNUUVoTlFFMk5UUW1JeUlHRlNNME5qTXlGaFVVRHdJaEFyTDluQUVkY1RZME9rSzZxWWVQbkdwaWpBRnpBcHQ5QVFWblF5bzFRalowbVlCemEyWlhjUUFCQURjQ2p3S3BCYm9BSkFCOXNoNGxKaEVTT1FDd0FFVllzQTB2RzdFTkh6NVpzQUJGV0xBWEx4dXhGeE0rV2JJQkZ3MFJFamw4c0FFdkdMWkFBVkFCWUFFRGNiS1FBUUZkc0EwUXNnWUNDaXRZSWRnYjlGbXlDUUVORVJJNXNBRVFzaU1DQ2l0WUlkZ2I5Rm15RWlNQkVSSTVzaHNYRFJFU09iQVhFTEllQWdvcldDSFlHL1JaTURFQk16STFOQ1lqSWdZVkl6UTJNeklXRlJRSEZoVVVCaU1pSmpVekZCWXpNalkxTkNjakFReFJoRFkrTUVHNnBZS1BvNGVWc1krSHE3cEZQRDg5aGx3RWJHRWpOU2NqWTN4NWFYY3pLWTVxZm45eEpqVTNLbVVCQUFBQkFIQUUwUUpJQmdBQUF3QWpBTEFDTDdJUEFnRmRzQURRc0FBdnRBOEFId0FDWGJBQ0VMQUQwQm13QXk4WU1ERUJJUUVqQVRNQkZmN3J3d1lBL3RFQUFRQ1MvbUFFSHdRNkFCSUFZTElORXhRUkVqa0FzQUJGV0xBQUx4dXhBQnMrV2JBQVJWaXdCeThic1FjYlBsbXdBRVZZc0JBdkc3RVFFVDVac0FCRldMQU5MeHV4RFE4K1diQUFSVml3Q2k4YnNRb1BQbG13RFJDeUJBRUtLMWdoMkJ2MFdiSUxEUWNSRWprd01RRVJGaFl6TWpjUk14RWpKd1lqSWljUkl4RUJoQUpaYXFnNzg5OEhYSk41VGZJRU92MkVqWUo1QXhMN3hsWnJOLzQrQmRvQUFRQkZBQUFEVmdXd0FBb0FLN0lDQ3d3UkVqa0FzQUJGV0xBSUx4dXhDQjgrV2JBQVJWaXdBQzhic1FBUFBsbXlBUUFJRVJJNU1ERWhFU01pSkRVMEpETWhFUUtFVU9iKzl3RUs1Z0VoQWdqKzF0WC8rbEFBQUFFQWpnSkZBYWtEVWdBS0FCYXlDQXNNRVJJNUFMQUNMN0VJQ2l0WTJCdmNXVEF4RXpRMk1oWVZGQVlqSWlhT1NvWkxUa0JCVEFMS09rNU9PanRLU2dBQkFHMytRUUhKQUFNQURnQTBzZ2tQRUJFU09RQ3dCaSt3QUVWWXNBNHZHN0VPRHo1WnNBWVFzUWNLSzFqWUc5eFpzZzBIRGhFU09iSUJEUTRSRWprd01TVUhGaFVVQmlNbk1qWTFOQ1luTndFK0M1YXNtd2RDUjBkUUlBTTJHNUpwZG9rdktpMGpCWXNBQVFDQUFxQUNBZ1d6QUFZQU9iSUJCd2dSRWprQXNBQkZXTEFGTHh1eEJSOCtXYkFBUlZpd0FDOGJzUUFUUGxteUJBVUFFUkk1c0FRUXNnTUNDaXRZSWRnYjlGa3dNUUVqRVFjMUpUTUNBcm5KQVc4VEFxQUNPakNTZHdBQ0FIY0NzZ01zQmNRQURBQWFBRUN5Q1JzY0VSSTVzQWtRc0JEUUFMQUFSVml3QWk4YnNRSWZQbG15Q1JzQ0VSSTVzQWt2c2hBQ0NpdFlJZGdiOUZtd0FoQ3lGd0lLSzFnaDJCdjBXVEF4RXpRMklCWVZGUlFHSXlJbU5SY1VGak15TmpjMU5DWWpJZ1lWZDc4Qk5zQzhuWjYrcjExUVRsc0JYVTlPWFFSaG9NUENwa2lmdzhTakJXSnViR0ZRWVc1dFpnRC8vd0JkQUlvRG1RT3BBQ1lCZXdrQUFBY0Jld0YrQUFELy93QlpBQUFGZ3dXckFDY0IxZi9aQXBnQUp3RjhBUnNBQ0FFSEFkZ0N4UUFBQUJBQXNBQkZXTEFGTHh1eEJSOCtXVEF4Ly84QVVBQUFCY3dGcmdBbkFYd0E4QUFJQUNjQjFmL1FBcHNCQndIV0F4b0FBQUFRQUxBQVJWaXdDUzhic1FrZlBsa3dNZi8vQUdjQUFBWDhCYnNBSndGOEFhZ0FDQUFuQWRnRFBnQUFBUWNCMXdBd0Fwc0FFQUN3QUVWWXNDQXZHN0VnSHo1Wk1ERUFBZ0JDL244RHBRUk9BQmtBSXdCaHNoQWtKUkVTT2JBUUVMQWQwQUN3QUVWWXNDRXZHN0VoR3o1WnNBQkZXTEFRTHh1eEVCYytXYkFoRUxJZERRb3JXQ0hZRy9SWnNBRFFzQUF2c2dNQUVCRVNPYkFRRUxJSkFRb3JXQ0hZRy9SWnNnd1FBQkVTT2JJV0VBQVJFamt3TVFFR0JnY0hCaFVVRmpNeU5qVXpCZ1lqSWlZMU5EYzNOamMzRXhRR0lpWTFORFl5RmdKMkFqVkpaMXBpV1ZocTh3THZ3czdpbTF4T0NnTDNSNFJJU0lSSEFwVjhrVTlxWVdwZVhXUlRzZERKdUtXalhVaHpOUUUzT0V0TE9EZExTd0FBQXYvMkFBQUhWd1d3QUE4QUVnQjNBTEFBUlZpd0JpOGJzUVlmUGxtd0FFVllzQUF2RzdFQUR6NVpzQUJGV0xBRUx4dXhCQTgrV2JJUkJnQVJFam13RVMreUFnRUtLMWdoMkJ2MFdiQUdFTElJQVFvcldDSFlHL1Jac2dzR0FCRVNPYkFMTDdJTUFRb3JXQ0hZRy9SWnNBQVFzZzRCQ2l0WUlkZ2I5Rm15RWdZQUVSSTVNREVoSVFNaEF5RUJJUlVoRXlFVklSTWhBU0VEQjFmOGZnLytDcmorM2dOREErRDllaEVDSlAza0ZBS1grdTBCZVJzQlZQNnNCYkRGL21qRi9qWUJad0tJQUFBQkFFMEExZ1BzQklZQUN3QTRBTEFETDdJSkRBTVJFam13Q1MreUNna0RFUkk1c2dRRENSRVNPYklCQ2dRUkVqbXdBeEN3QmRDeUJ3UUtFUkk1c0FrUXNBdlFNREVUQVFFM0FRRVhBUUVIQVFGTkFUeit4SlFCT3dFOGxQN0VBVHlVL3NUK3hRRnNBVUlCUXBiK3ZnRkNsdjYrL3I2V0FVSCt2d0FBQXdCcC82RUZJZ1h1QUJjQUlBQXBBR2F5RUNvckVSSTVzQkFRc0IzUXNCQVFzQ2JRQUxBQVJWaXdFQzhic1JBZlBsbXdBRVZZc0FRdkc3RUVEejVac2hvUUJCRVNPYklqRUFRUkVqbXdJeEN3RzlDd0VCQ3lIUUVLSzFnaDJCdjBXYkFhRUxBazBMQUVFTEltQVFvcldDSFlHL1JaTURFQkZBSUVJeUluQnlNM0poRTFOQklrTXpJWE56TUhGaE1GRkJjQkppTWlBZ2NGTkNjQkZqTXlFalVGSXBUKzdiU2toRnVwa2NPV0FSU3l4WTlYcDVPZEFmeEVSd0gyVjRla3VRSUN2eXorRjA1cHFiVUNzdGIrdmExTGx1N0RBV2REMVFGRXIyV1A4OEgrdzB2UGdBTTZWZjcvNndpbWN2emNOZ0VBOWdBQUFnQ1VBQUFFZmdXd0FBd0FGQUJYc2dJVkZoRVNPYkFDRUxBUDBBQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQUtMeHV4Q2c4K1diSUJDZ0FSRWptd0FTK3lEZ29BRVJJNXNBNHZzZ2tCQ2l0WUlkZ2I5Rm13QVJDeURRRUtLMWdoMkJ2MFdUQXhBUkV6TWdRVkZBUWpJeEVqRVJNUk16STJOQ1luQVlmeDlBRVMvdTd6OHZQejluMlJqSG9Gc1A3bzdzakg3LzdVQmJEK0pmNGFndDZFQWdBQUFRQ0kvK3dFbXdZVkFDd0FXN0lqTFM0UkVqa0FzQUJGV0xBRkx4dXhCU0UrV2JBQVJWaXdGUzhic1JVUFBsbXdBRVZZc0FBdkc3RUFEejVac2c0RkZSRVNPYkFWRUxJY0FRb3JXQ0hZRy9SWnNpSVZCUkVTT2JBRkVMSXFBUW9yV0NIWUcvUlpNREVoSXhFME5qTXlGaFVVRGdJVkZCNENGUlFHSXlJbUp6Y1dGak15TmpVMExnSTFORFkxTkNZaklnY0JldkxsenJ2WEcwVVdRYkpSMmNaUXF5WXhMWDgyWVZwR3JsRitYRkM0QkFSUjF1NjdxVDVpY1VFbkxGU1VpVXVydVNjWnd4d2xWa014VzRpSVVGakpUVkZoOXdBQUF3QkkvK3dHaEFSUUFDa0FOQUE4QU1xeUFqMCtFUkk1c0FJUXNDM1FzQUlRc0RqUUFMQUFSVml3Rnk4YnNSY2JQbG13QUVWWXNBVXZHN0VGRHo1WnNBRFFzQUF2c2d3RkZ4RVNPYkFNTDdLUERBRmRzQmNRc2hBQkNpdFlJZGdiOUZtd0Z4Q3dHOUN3R3kreU9BQWJFUkk1c0RndnRCODRMemdDY2JUdk9QODRBbkcwWHpodk9BSnh0TDg0enpnQ1hiS01PQUZkc2lBSENpdFlJZGdiOUZtd0FCQ3lJd0VLSzFnaDJCdjBXYkFGRUxJcUFRb3JXQ0hZRy9SWnNBd1FzaThIQ2l0WUlkZ2I5Rm13R3hDeU5RRUtLMWdoMkJ2MFdUQXhCU0luQmdZaklpWTFORFl6TXpVMEppTWlCaFVuTkRZek1oYzJGeklTRlJVaEZoWXpNamMzRndZR0pUSTJOelVqQmdZVkZCWUJJZ1lISVRVMEpnVG0vWXhCMW9hd3lPN3B2MTlZVzNQeS9jWGZiNFBJMU83OVNRbVlob2xyUFVsRzBmeVlPb2d0eEdoNFhRTXJZMzhRQWNSdEZLRk5WTENjbnF4SFcyZFpRaE9TdVlXSEF2Nzk2NG1MbmpvaXBqaEF1RHNyMFFKZlJrRlBBdWVLZng1eGVnQUNBR2YvN0FSQUJpd0FIUUFyQUdXeUJ5d3RFUkk1c0FjUXNDalFBTEFBUlZpd0dTOGJzUmtoUGxtd0FFVllzQWN2RzdFSER6NVpzZzhIR1JFU09iQVBMN0lSRHdjUkVqbXdHUkN5R0FFS0sxZ2gyQnYwV2JBUEVMSWlBUW9yV0NIWUcvUlpzQWNRc2lnQkNpdFlJZGdiOUZrd01RRVNFUlVVQWdZaklpWW1OVFEyTmpNeUZ5WW5CeWMzSmljM0ZoYzNGd01uSmlZaklnWVZGQll6TWpZMUEwTCtmdVdNaXVKK2NjNkVrbkV4ZnN4T3JINmlTKzZ4dEU2UEFTQjdUbjZMalc1dmlRVVgvdmYrYjFLbS92bVNmdUtJbGVkOVc2bDZoMjF5VWlyRE1vZDRiZjBaRWpBNHFKVitxTWl0QUFBREFFTUFrd1EzQk13QUF3QU5BQmtBVXJJRUdoc1JFam13QkJDd0FOQ3dCQkN3RWRBQXNBTXZzZ0FCQ2l0WUlkZ2I5Rm13QXhDeENRb3JXTmdiM0ZteUJBMEtLMWdoMkJ2MFdiQUFFTEVSQ2l0WTJCdmNXYklYRFFvcldDSFlHL1JaTURFQklUVWhBVElXRkFZaklpWTBOZ00wTmpNeUZoVVVCaU1pSmdRMy9Bd0Q5UDRKUkVwS1JFTktTa3BLUTBSS1NrUkRTZ0pHMUFHeVRISkxTM0pNL0VvNlRFdzZPVXBLQUFNQVQvOTNCRDBFdXdBVkFCMEFKUUJtc2dRbUp4RVNPYkFFRUxBYjBMQUVFTEFqMEFDd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBUEx4dXhEdzgrV2JJWUJBOFJFam15SUFRUEVSSTVzQ0FRc0JuUXNBUVFzaHNCQ2l0WUlkZ2I5Rm13R0JDd0lkQ3dEeEN5SXdFS0sxZ2gyQnYwV1RBeEV6UTJOak15RnpjekJ4WVJGQVlHSXlJbkJ5TTNKaE1VRndFbUl5SUdCVFFuQVJZek1qWlBmdVNVYWxoSGtXYkVlK1dXWFZwSWtXYk84MEFCS3k4NWQ0d0NDVHIrMkNzemU0a0NKNS8vaVNLUDBKbit3S0Q4aWg2VHo1WUJOcHhpQW1FV3ZhZVVYZjJuRWNBQUFBSUFndjVnQkRjR0FBQVBBQm9BWkxJVEd4d1JFam13RXhDd0ROQUFzQWt2c0FCRldMQU1MeHV4REJzK1diQUFSVml3Qmk4YnNRWVJQbG13QUVWWXNBTXZHN0VERHo1WnNnVU1BeEVTT2JJS0RBTVJFam13REJDeUV3RUtLMWdoMkJ2MFdiQURFTElZQVFvcldDSFlHL1JaTURFQkZBSWpJaWNSSXhFekVUWXpNaElSSnpRbUl5SUhFUll6TWpZRU4rUENzbXZ6ODJxd3hlUHpnM2FWUVVLV2RJTUNFdmYrMFhYOS93ZWcvZGQzL3RyKytnV211bnYrSUg2N0FBQUNBQjhBQUFXZEJiQUFFd0FYQUdzQXNBQkZXTEFQTHh1eER4OCtXYkFBUlZpd0NDOGJzUWdQUGxteUZBZ1BFUkk1c0JRdnNoQVVEeEVTT2JBUUw3QUEwTEFRRUxJWEJ3b3JXQ0hZRy9SWnNBUFFzQWdRc0FYUXNCUVFzZ2NCQ2l0WUlkZ2I5Rm13RnhDd0N0Q3dFQkN3RGRDd0R4Q3dFdEF3TVFFekZTTVJJeEVoRVNNUkl6VXpFVE1SSVJFekFTRTFJUVVlZjMvOC9YWDhmSHo4QW92OC9Ia0NpLzExQks2aSsvUUNoLzE1QkF5aUFRTCsvZ0VDL2FLNkFBRUFqd0FBQVlJRU9nQURBQjBBc0FCRldMQUNMeHV4QWhzK1diQUFSVml3QUM4YnNRQVBQbGt3TVNFakVUTUJndlB6QkRvQUFBRUFqZ0FBQkdzRU9nQU1BRjhBc0FCRldMQUVMeHV4QkJzK1diQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFMTHh1eEN3OCtXYklHQWdRUkVqbXdCaSswSHdZdkJnSnhzbzhHQVYyeUFRRUtLMWdoMkJ2MFdiSUtBUVlSRWprd01RRWpFU01STXhFekFTRUJBU0VCNzIveThsVUJVQUVzL21FQnVmN0xBYXorVkFRNi9sQUJzUDN6L2RNQUFRQWlBQUFFTmdXd0FBMEFXd0N3QUVWWXNBd3ZHN0VNSHo1WnNBQkZXTEFHTHh1eEJnOCtXYklCREFZUkVqbXdBUyt3QU5Dd0FSQ3lBZ2NLSzFnaDJCdjBXYkFEMExBR0VMSUVBUW9yV0NIWUcvUlpzQU1Rc0FqUXNBblFzQUFRc0F2UXNBclFNREVCTnhVSEVTRVZJUkVITlRjUk13R2g2dW9DbGZ4dWdvTDlBMmRIazBmOTlzb0NoeWVUSndLV0FBQUJBQ0VBQUFJdUJnQUFDd0JLQUxBQVJWaXdDaThic1FvaFBsbXdBRVZZc0FRdkc3RUVEejVac2dFRUNoRVNPYkFCTDdBQTBMQUJFTElDQndvcldDSFlHL1Jac0FQUXNBYlFzQWZRc0FBUXNBblFzQWpRTURFQk54VUhFU01SQnpVM0VUTUJtcFNVODRhRzh3TjVOWkkxL1JrQ2tDK1NMd0xlQUFFQWtQNUxCUWtGc0FBVEFHZXlCaFFWRVJJNUFMQUFSVml3QUM4YnNRQWZQbG13QUVWWXNCQXZHN0VRSHo1WnNBQkZXTEFFTHh1eEJCRStXYkFBUlZpd0RDOGJzUXdQUGxtd0FFVllzQTR2RzdFT0R6NVpzQVFRc2drQkNpdFlJZGdiOUZteURRQU1FUkk1c2hJT0FCRVNPVEF4QVJFVUJpTWlKemNXTXpJMU5RRVJJeEV6QVJFRkNiNnBSandPS0RwNy9ZSDgvQUovQmJENkdMZkdFY2NNdURFRUZmdnJCYkQ3N0FRVUFBRUFmdjVMQkFZRVRnQWFBR0d5RlJzY0VSSTVBTEFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBS0x4dXhDaEUrV2JBQVJWaXdHQzhic1JnUFBsbXlBUmdERVJJNXNBb1FzZzhCQ2l0WUlkZ2I5Rm13QXhDeUZRRUtLMWdoMkJ2MFdUQXhBUmMyTXpJV0Z4RVVCaU1pSnpjV016STFFVFFtSXlJSEVTTVJBVndOYzhTd3RRRzdwa1U2RGlnN2ZGMXBrVXZ6QkRxV3F0YlMvUnUwd2hIR0RMQUMyWGh3Wi96Z0JEb0FBZ0JrLyt3SExRWEVBQmNBSXdDUnNnRWtKUkVTT2JBQkVMQWEwQUN3QUVWWXNBd3ZHN0VNSHo1WnNBQkZXTEFPTHh1eERoOCtXYkFBUlZpd0F5OGJzUU1QUGxtd0FFVllzQUF2RzdFQUR6NVpzQTRRc2hBQkNpdFlJZGdiOUZteUVnQU9FUkk1c0JJdnNoVUJDaXRZSWRnYjlGbXdBQkN5RndFS0sxZ2gyQnYwV2JBREVMSVlBUW9yV0NIWUcvUlpzQXdRc2gwQkNpdFlJZGdiOUZrd01TRWhCaU1pSkFJbkVUUVNKRE15RnlFVklSRWhGU0VSSVFVeU54RW1JeUlHQnhFVUZnY3QvSjJuZWFmKzk1UUNrUUVMcUh1bkExejlUQUpXL2FvQ3UvdDlZMmh5VzZHdkFiSVVrd0VOcWdFNnJBRVNsaFRNL203SS9rQWNEUVE0RHMrOC9zckIwUUFBQXdCYi8rd0c4Z1JQQUI0QUtnQXlBSnV5R1RNMEVSSTVzQmtRc0NUUXNCa1FzQzdRQUxBQVJWaXdBeThic1FNYlBsbXdBRVZZc0Fndkc3RUlHejVac0FCRldMQVhMeHV4Rnc4K1diQUFSVml3R3k4YnNSc1BQbG15QlFnWEVSSTVzaThYQ0JFU09iQXZMN1FmTHk4dkFuR3lqQzhCWGJJTUJ3b3JXQ0hZRy9SWnNCY1FzaEFCQ2l0WUlkZ2I5Rm15R1FnWEVSSTVzQ0xRc0FNUXNpZ0JDaXRZSWRnYjlGbXdLOUF3TVJNMEFETXlGelkyRnpJU0ZSVWhGaFl6TWpZM0Z3WUdJeUluQmlNaUFCRVhGQll6TWpZMU5DWWpJZ1lsSWdZSElUVTBKbHNCRCtENWhrRzNiZGJ1L1ZZTGtYVlpqMGRQUjgxNDk0eUc5dVArOHZLR2VYZUdoM2gxaUFQaFZYZ1VBYlZ4QWlmNEFTK3hWRjRCL3Yzc2lJdWVLaktlUDBHdXJnRXRBUUlKcXJxNXdLYSt1cnFKZVJsdmVnQUFBUUNMQUFBQ2xRWVZBQXdBTXJJRERRNFJFamtBc0FCRldMQUVMeHV4QkNFK1diQUFSVml3QUM4YnNRQVBQbG13QkJDeUNRRUtLMWdoMkJ2MFdUQXhNeEUwTmpNeUZ3Y21JeUlWRVl2Q3NEOVpHU295b3dTY3RzTVZ1UXU2KzJnQUFnQlIvK3dGSGdYRUFCWUFIZ0Jic2dBZklCRVNPYkFYMEFDd0FFVllzQTh2RzdFUEh6NVpzQUJGV0xBQUx4dXhBQTgrV2JJRkR3QVJFam13QlMrd0R4Q3lDQUVLSzFnaDJCdjBXYkFBRUxJWEFRb3JXQ0hZRy9SWnNBVVFzaG9CQ2l0WUlkZ2I5Rmt3TVFVZ0FCRTFJU1ltSXlJSEJ5YzNOak1nQUJFVkZBSUVKekkyTnlFVkZCWUN1UDdjL3IwRDBBWGZ6S2VYTkRFaHNOb0JPZ0Zyb3Y3bHFaYStFdjB2dWhRQllBRkppZUR3TkJQR0QwaitpLzYzYThQK3c2L1UycjBmdWI4QUFmL2sva3NDMHdZVkFCNEFjYklVSHlBUkVqa0FzQUJGV0xBVkx4dXhGU0UrV2JBQVJWaXdFQzhic1JBYlBsbXdBRVZZc0Iwdkc3RWRHejVac0FCRldMQUZMeHV4QlJFK1diQWRFTElBQVFvcldDSFlHL1Jac0FVUXNnc0JDaXRZSWRnYjlGbXdBQkN3RHRDd0Q5Q3dGUkN5R2dFS0sxZ2gyQnYwV1RBeEFTTVJGQVlqSWljM0ZoWXpNalVSSXpVek5UUTJNeklYQnlZaklnY1ZNd0tFeWJXa1NEWVBCMFFTZUtXbHdyRTlXeGttTzUwQnlRT0cvRFd3d0JHL0F3cXVBOHEwWXJiREZid0tyV2NBQWdCWS8rd0ZxZ1l1QUJnQUpnQmJzZ1FuS0JFU09iQUVFTEFqMEFDd0FFVllzQTB2RzdFTkh6NVpzQUJGV0xBRUx4dXhCQTgrV2JJUERRUVJFam13RHkreUZnZ0tLMWdoMkJ2MFdiQU5FTEljQVFvcldDSFlHL1Jac0FRUXNpTUJDaXRZSWRnYjlGa3dNUUVVQWdRaklpUUNKelUwRWlRek1oYzJOalV6RkFZSEZoY0hOQ1lqSWdJSEZSUVNNeklTTlFVUWxQN3R0TEQrNjVjQmx3RVRzZitpVDB5N2VYeFhCUDI0cUtTNUFybW9xYlVDc3RiK3ZhMnRBVURSVXRVQlJxMm9EWU9DcE5FanA5OFM5djcrLyt0VTdQNzJBUUQyQUFBQ0FFLy83QVM3QktnQUZ3QWlBRnV5RkNNa0VSSTVzQlFRc0NEUUFMQUFSVml3QkM4YnNRUWJQbG13QUVWWXNCUXZHN0VVRHo1WnNnWUVGQkVTT2JBR0w3SU5DQW9yV0NIWUcvUlpzQlFRc2hvQkNpdFlJZGdiOUZtd0JCQ3lJQUVLSzFnaDJCdjBXVEF4RXpRMk5qTXlGelkyTlRNVUJnY1dGeFVVQmdZaklnQVJGeFFXTWpZMU5DWWpJZ1pQZmVTVTRZbzFNS2RZWno4Q2UrZVY0LzdzOG9yMmlZMTVkNHdDSjZIOWlaVVRhbktHc3lWOW5oMmcvSW9CTGdFQkNhZTl3TG1udmIwQUFBRUFmZi9zQmowR0FRQVlBRlN5REJrYUVSSTVBTEFBUlZpd0dDOGJzUmdmUGxtd0FFVllzQkV2RzdFUkh6NVpzQUJGV0xBTUx4dXhEQTgrV2JJQkRCZ1JFam13QVMreUNBZ0tLMWdoMkJ2MFdiQU1FTElWQVFvcldDSFlHL1JaTURFQkZUWTJOVE1VQmdjUkZBQWpJZ0ExRVRNUkZCWXpJQkVSQkwxdFhyVzd4ZjdYOS9yKzJ2eVVrQUVrQmJEY0NvS2g1TllKL2FYby92RUJDKzBEelB3eWtwb0JOQVBHQUFFQWQvL3NCU2dFa3dBWkFHR3lCeG9iRVJJNUFMQUFSVml3RFM4YnNRMGJQbG13QUVWWXNBZ3ZHN0VJRHo1WnNBQkZXTEFFTHh1eEJBOCtXYkFORUxBVDBMSVZFd2dSRWptd0ZTK3lBd2dLSzFnaDJCdjBXYklHRlFnUkVqbXdDQkN5RUFFS0sxZ2gyQnYwV1RBeEFSUUdCeEVqSndZaklpWTFFVE1SRkRNeU54RXpGVFkyTnpjRktJK2k1UVpyeGJDMTg2dXhQdk5JUVFVQ0JKT3lwUXY4ejJwK3pzTUN2ZjFHem44RENZZ0hRa3hNQUFIL3RmNUxBWk1FT2dBTUFDK3lBdzBPRVJJNUFMQUFSVml3REM4YnNRd2JQbG13QUVWWXNBUXZHN0VFRVQ1WnNna0JDaXRZSWRnYjlGa3dNUUVSQmdZaklpYzNGak15TlJFQmt3RzRwMFk0RHljNmZBUTYrNFd5d2hHL0RjQUViQUFBQWdCWi8rd0QrQVJQQUJZQUhnQmVzZ2dmSUJFU09iQUlFTEFYMEFDd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBSUx4dXhDQTgrV2JJTUFBZ1JFam13REMrd0FCQ3lFQUVLSzFnaDJCdjBXYkFJRUxJWEFRb3JXQ0hZRy9SWnNBd1FzaG9IQ2l0WUlkZ2I5Rmt3TVFFeUFCVVZGQVlHSnlJQ05UVWhKaVlqSWdZSEp6WTJFekkyTnlFVkZCWUNBT1FCRkh2YWh0WHZBcW9MajNkV2kwNVBSdEtSVm5nVC9rdHhCRS8rMVBZZm12dU5BUUVCN1lpSW9TYzFuajVEL0dDT2RCbHZlZ0FBQVFDVUJPQURRd1lCQUFnQVJRQ3dCQyt5RHdRQlhiSlFCQUZkc25BRUFWMndBdEN3QWkrd0FkQVpzQUV2R0xBRUVMQUgwTEFITDdRUEJ4OEhBbDJ5QXdjRUVSSTVzQUVRc0FYUUdiQUZMeGd3TVFFVkl5Y0hJelVCTXdORHc1YVZ3UUVQandUckM1eWNEUUVVQUFBQkFISUU0QU0wQmdFQUNBQWxBTEFFTDdJUEJBRmRzQUhRc0FFdnRBOEJId0VDWGJJQUJBRVJFam13Q05Dd0NDOHdNUUUzTXhVQkl3RTFNd0hTa3REKzZaYis2ODRGWnBzSy91a0JHQWtBLy84QWh3VVNBMTRGc0FBR0FIQUFBQUFCQUhVRXpBTDdCZVlBQ3dBdkFMQURMN0lQQXdGZHNBYlFzQVl2dEE4R0h3WUNYYkFERUxJSUFnb3JXQ0hZRy9SWnNBWVFzQXZRc0Fzdk1ERUJGQVlnSmpVekZCWXlOalVDKzdEKzJyQzJTNFJLQmVaK25KeCtRa2xKUWdBQUFRQ0JCTjhCaHdYVkFBa0FIYklEQ2dzUkVqa0FzQWd2c2c4SUFWMnlBZ1VLSzFnaDJCdjBXVEF4RXpRMk1oWVZGQVlpSm9GRWZrUkVma1FGV1RWSFJ6VTBSa1lBQUFJQWVBU05Bak1HS2dBSkFCUUFLZ0N3QlMreUR3VUJYYkFUMExBVEw3SUFDZ29yV0NIWUcvUlpzQVVRc2cwS0NpdFlJZGdiOUZrd01RRXlGaFFHSXlJbU5EWUhGQll6TWpZMU5DWWlCZ0ZXWFlCOVlHRjlmeEZDTGk5QlAySS9CaXA3cW5oNHFudlFMMEZBTUM1RFF3QUJBQ24rVWdHaEFEd0FEd0Fpc2c4UUVSRVNPUUN3QUVWWXNBb3ZHN0VLRVQ1WnNnVURDaXRZSWRnYjlGa3dNU0VHQmhVVU16STNGd1lqSWlZMU5EY0JqRmRLUnl3dUZVbGNYM1QwT0Y0eFJCZU9MRzVidFd3QUFRQjZCTnNEVndYMUFCVUFRQUN3QXkrd0NOQ3dDQysyRHdnZkNDOElBMTJ3QXhDd0M5Q3dDeSt3Q0JDeUR3TUtLMWdoMkJ2MFdiQURFTElTQXdvcldDSFlHL1Jac0E4UXNCWFFNREVCRkFZaklpNENJeUlHRlNjME5qTXlGak15TmpVRFYzOWdKemxwS3hvbU5aVi9Yem1oTkNZMkJlbHVraEU4RERrdUNHNldXamt2QUFBQ0FFa0UwUU5XQmY4QUF3QUhBRUFBc0FJdnNnOENBVjJ3QU5Dd0FDKzBEd0FmQUFKZHNBSVFzQVBRR2JBREx4aXdBQkN3QmRDd0JTK3dBaEN3QnRDd0JpK3dBeEN3QjlBWnNBY3ZHREF4QVRNQkl3TXpBeU1DYU83KzlzV1E2ZDY1QmYvKzBnRXUvdElBQWdDQy9tb0I3UCsrQUFzQUZ3QTlBTEFZTDdBRDBMQURMMEFQQUFNUUF5QURNQU5BQTFBRFlBTUhYYkFQMExBUEw3SUpDUW9yV0NIWUcvUlpzQU1Rc2hVSkNpdFlJZGdiOUZrd01SYzBOak15RmhVVUJpTWlKamNVRmpNeU5qVTBKaU1pQm9KcFRrbHFha2xPYVdVd0lpRXRMU0VpTU81SlkyRkxTbDVnU0NFdUxTSWtNREFBQUFIOGpnVFIvbVlHQUFBREFDTUFzQUV2c2c4QkFWMndBTkFac0FBdkdMQUJFTEFDMExBQ0w3UVBBaDhDQWwwd01RRWpBU0grWnNyKzhnRVZCTkVCTHdBQi9WNEUwZjgyQmdBQUF3QWpBTEFDTDdJUEFnRmRzQUhRc0FFdnRBOEJId0VDWGJBQ0VMQUQwQm13QXk4WU1ERUJJUUVqL2lFQkZmN3J3d1lBL3RILy8veHpCTnYvVUFYMUFBY0FwUHY1QUFBQUFmMCtCT2IrbVFaL0FBNEFKUUN3QUMrd0J0Q3dCaSt5QVFBR0VSSTVzZ2NJQ2l0WUlkZ2I5Rm15RFFFQUVSSTVNREVCSnpZMk5UUWpOeklXRlJRR0J4WDlVUWRKUVpZSHFhdE9TQVRta2dVY0kwaDdhRmc4VGdwRkFBQUMvQXdFNVA4MEJlNEFBd0FIQURjQXNBRXZzQURRR2JBQUx4aXdBUkN3QmRDd0JTK3dCdEN3QmkrMkR3WWZCaThHQTEyd0E5Q3dBeSt3QUJDd0JOQVpzQVF2R0RBeEFTTUJJUUVqQXpQK0I5RCsxUUVHQWlMRDlmb0U1QUVLL3ZZQkNnQUFBZjBjL3BUK0wvK0xBQWdBRVFDd0FpK3lCZ1VLSzFnaDJCdjBXVEF4QlRRMk1oWVVCaUltL1J4SGhFaEloRWZ4TlVkSGFrWkdBQUFCQU1ZRTZRSGlCa0VBQXdBWEFMQUNMN0FBMExBQUw3QUNFTEFEMEJtd0F5OFlNREVCTXdNakFRUGZqSkFHUWY2b0FBTUFad1RmQTdvR3J3QURBQXdBRlFBN0FMQVVMN0FDMExBQ0w3QUIwTEFCTDdRUEFSOEJBbDJ3QWhDd0E5QVpzQU12R0xBVUVMQUwwTEFMTDdJR0JRb3JXQ0hZRy9SWnNBL1FNREVCTXdNakJUUTJNaFlVQmlJbUpUUTJNaFlVQmlJbUFlN2xncEwrcUVSMlEwTjJSQUpXUTNaRVJIWkRCcS8rMWk4eVJFUmtSRVF4TWtSRVpFUkUvLzhBamdKRkFha0RVZ0lHQUhnQUFBQUJBSnNBQUFRM0JiQUFCUUFyQUxBQVJWaXdCQzhic1FRZlBsbXdBRVZZc0FJdkc3RUNEejVac0FRUXNnQUJDaXRZSWRnYjlGa3dNUUVoRVNNUklRUTMvV0Q4QTV3RTVQc2NCYkFBQWdBWkFBQUZvQVd3QUFNQUJnQXZBTEFBUlZpd0FDOGJzUUFmUGxtd0FFVllzQUl2RzdFQ0R6NVpzZ1FCQ2l0WUlkZ2I5Rm15QmdJQUVSSTVNREVCTXdFaEpTRUJBbS96QWo3NmVRRlZBdUQrbUFXdytsREtBN3NBQXdCYi8rd0ZFd1hFQUFNQUZBQWlBSGF5Q0NNa0VSSTVzQWdRc0FIUXNBZ1FzQi9RQUxBQVJWaXdFQzhic1JBZlBsbXdBRVZZc0Fndkc3RUlEejVac2dJSUVCRVNPWHl3QWk4WXRHQUNjQUlDWGJRd0FrQUNBbDJ5QUFJQmNiSUJBUW9yV0NIWUcvUlpzQkFRc2hnQkNpdFlJZGdiOUZtd0NCQ3lId0VLSzFnaDJCdjBXVEF4QVNFMUlRVVVBZ1FqSWlRQ0p6VTBFaVFnQkJJWEJ6UUNJeUlDQnhVVUVqTXlFalVEby81QUFjQUJjSlQrN2JPdy91NlpBNVlCRkFGa0FST1dBZnkzcWFTNUFydW1xYlVDZWNLSjF2NjlyYW9CUE0xZDFRRkVyNnYrdjlVRjd3RUYvdi9yVlBEKytnRUE5Z0FCQUNBQUFBVVNCYkFBQmdBeEFMQUFSVml3QXk4YnNRTWZQbG13QUVWWXNBRXZHN0VCRHo1WnNBQkZXTEFGTHh1eEJROCtXYklBQXdFUkVqa3dNUUVCSVFFekFTRUNtUDZYL3ZFQi92VUIvLzd3QkVUN3ZBV3crbEFBQUFNQWJBQUFCQzRGc0FBREFBY0FDd0JMQUxBQVJWaXdDQzhic1FnZlBsbXdBRVZZc0FJdkc3RUNEejVac2dBQkNpdFlJZGdiOUZteUJRZ0NFUkk1c0FVdnNnWUJDaXRZSWRnYjlGbXdDQkN5Q2dFS0sxZ2gyQnYwV1RBeE55RVZJUk1oRlNFRElSVWhiQVBDL0Q1a0F2YjlDbGNEbWZ4bnlzb0RUY1lES2N3QUFRQ2JBQUFGRkFXd0FBY0FPQUN3QUVWWXNBWXZHN0VHSHo1WnNBQkZXTEFBTHh1eEFBOCtXYkFBUlZpd0JDOGJzUVFQUGxtd0JoQ3lBZ0VLSzFnaDJCdjBXVEF4SVNNUklSRWpFU0VGRlB6OWYvd0VlUVRrK3h3RnNBQUJBRWNBQUFSTkJiQUFEQUE4QUxBQVJWaXdDQzhic1FnZlBsbXdBRVZZc0FNdkc3RUREejVac2dFQkNpdFlJZGdiOUZtd0JkQ3dDQkN5Q2dFS0sxZ2gyQnYwV2JBSDBEQXhBUUVoRlNFMUFRRTFJUlVoQVFNYy9uVUN2UHY2QWNuK053UGkvV3NCaUFMUS9mcktsd0pDQWorWXpQMy9BQUFEQUVvQUFBV3VCYkFBRlFBY0FDTUFiTElMSkNVUkVqbXdDeEN3R2RDd0N4Q3dJTkFBc0FCRldMQVVMeHV4RkI4K1diQUFSVml3Q2k4YnNRb1BQbG15RXhRS0VSSTVzQk12c0FEUXNna0tGQkVTT2JBSkw3QU0wTEFKRUxJaEFRb3JXQ0hZRy9SWnNCblFzQk1Rc2hvQkNpdFlJZGdiOUZtd0lOQXdNUUVXQkJZVkZBWUhCZ2NWSXpVbUpDWVFOaVEzTlRNQkZCWVhFUVlHQlRRbUp4RTJOZ044b1FFRGpvaDhoYW45b3Y3OGo0NEJBNlQ5L2NhcWs1YW5BM1NtbEpHcEJQOERqLzZlbXZaSVRRT3BxUUdNK2dFKy80OERzZjBmb0xBQ0FxNEV0NStndGdUOVVnS3pBQUFCQUVRQUFBVmNCYkFBRndCY3NnQVlHUkVTT1FDd0FFVllzQkV2RzdFUkh6NVpzQUJGV0xBV0x4dXhGaDgrV2JBQVJWaXdCQzhic1FRZlBsbXdBRVZZc0Fzdkc3RUxEejVac2hVTEZoRVNPYkFWTDdBQTBMQVZFTElNQVFvcldDSFlHL1Jac0FuUU1ERUJOalkxRVRNUkJnQUhFU01SSmdBbkVUTVJGaFlYRVRNRFRJT1EvUVArNmZiODhQN29CUHdCajREOEFrTVh2cWNCOGY0Rzl2N1BHZjZLQVhVWEFURDFBZi8rQzUzQ0dBTnNBQUFCQUdzQUFBVGRCY01BSlFCY3NnY21KeEVTT1FDd0FFVllzQm92RzdFYUh6NVpzQUJGV0xBUEx4dXhEdzgrV2JBQVJWaXdKQzhic1NRUFBsbXdEeEN5RVFFS0sxZ2gyQnYwV2JBTzBMQUEwTEFhRUxJSEFRb3JXQ0hZRy9SWnNCRVFzQ0xRc0NQUU1ERWxOaEkzTlRRbUl5SUdGUlVVRWhjVklUVXpKZ0kxTlRRU0pETXlCQklWRlJRQ0J6TVZJUUxmZEhzQm5aQ09tMzkzL2dmWWEzaU9BUVdrcFFFR2tIZHIxUDRRenlBQkVPZHR5dHJaeldUci91c2V6OHRuQVIrZVlyWUJIWitlL3VLMVpaZiszR2ZMQUFBQ0FGYi82d1I1QkU0QUZnQWhBSG15SHlJakVSSTVzQjhRc0JQUUFMQUFSVml3RXk4YnNSTWJQbG13QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFNTHh1eERBOCtXYkFBUlZpd0NDOGJzUWdQUGxteUF3RUtLMWdoMkJ2MFdiSUtFd3dSRWpteUZSTU1FUkk1c0F3UXNob0JDaXRZSWRnYjlGbXdFeEN5SHdFS0sxZ2gyQnYwV1RBeEFSRVdNekkzRndZaklpY0dJeUlDTlRVUUVqTXlGemNCRkJZek1qY1JKaU1pQmdQOUEwWVJDaGd6VEtJMVpzSEQ0K1RFdFdjVC9oeDZkb3hHUm9wemZ3UTYvUHA3QkxRZW82SUJIZmdOQVFvQk5wZUQvYitlcllnQng0N0ZBQUlBbHY1M0JHb0Z4QUFVQUNnQVpiSW5LU29SRWptd0p4Q3dBTkFBc0E4dnNBQkZXTEFBTHh1eEFCOCtXYkFBUlZpd0RDOGJzUXdQUGxteUp3QU1FUkk1c0NjdnNpUUJDaXRZSWRnYjlGbXlCaVFuRVJJNXNBQVFzaGdCQ2l0WUlkZ2I5Rm13REJDeUhnRUtLMWdoMkJ2MFdUQXhBVElXRlJRR0J4WVdGUlFHSXlJbkVTTVJORFkyQVRRbUl5SUdGUkVXTXpJMk5UUW1KeU0xTXpJQ2FjL3lZMWg1Z3ZMUnBYcnlmTmtCVEhGZFlJRlluWEdKZW1kN1NOUUZ4Tml5WDVzd0xMMkN6ZXhUL2pnRnFYUEJjUDV0V25aK2FQemxVb2x1YlpFQnVRQUFBUUFnL2w4RDlRUTZBQWdBT0xJQUNRb1JFamtBc0FCRldMQUJMeHV4QVJzK1diQUFSVml3Qnk4YnNRY2JQbG13QUVWWXNBUXZHN0VFRVQ1WnNnQUhCQkVTT1RBeEFSTXpBUkVqRVFFekFnN3MrLzZQOC82UCt3RTdBdi83OFA0MUFkQUVDd0FBQWdCVS8rd0VPQVlnQUI4QUt3QmlzaFlzTFJFU09iQVdFTEFqMEFDd0FFVllzQU12RzdFRElUNVpzQUJGV0xBV0x4dXhGZzgrV2JBREVMSUpBUW9yV0NIWUcvUlpzZzRXQXhFU09iQU9MN0lwQVFvcldDSFlHL1Jac2gwcERoRVNPYkFXRUxJakFRb3JXQ0hZRy9SWk1ERVRORFl6TWhZWEZTWWpJZ1lWRkJjV0VoY1ZGQVlHSXlJQUVUUTJOeWNtSmhNVUZqTXlOalUwSmljaUJ0RFV0MGx4VDVkcFRscTg0TjRDZXVHVjR2N3V1SWtDVzJoMmlYbDNoNUZ0ZVlrRTZwR2xGaHZETlQwMFhVSlAvdXJNSEp2Mmh3RWpBUU9sL3lJRktJbjlmYUs4dkxaNHl4ZStBQUVBWVAvc0JBd0VUUUFuQUl1eUZpZ3BFUkk1QUxBQVJWaXdDUzhic1FrYlBsbXdBRVZZc0NVdkc3RWxEejVac2hjSkpSRVNPWHl3Rnk4WXRFQVhVQmNDWGJUUUYrQVhBbDJ5R0FjS0sxZ2gyQnYwV2JJREdCY1JFam13Q1JDeUVBRUtLMWdoMkJ2MFdiSU5GeEFSRWpteUhBMEJYYklMRFFGZHNDVVFzaDRCQ2l0WUlkZ2I5Rm15SVI0WUVSSTV0QVFoRkNFQ1hUQXhFelEyTnlZbU5UUTJNeklXRlNNMEppTWlCaFVVRmpNekZTTUdGUlFXTXpJMk5UTVVCQ01pSkdCcFlsZGgrTksvLy9KNldWNXlZR25IMGRKOVptS0M4djc4eTlYKytBRXlYSDhnSkhsSWxxVzFrVHhQVFQ4OFM2MERrejlYV1VLYnVySUFBQUVBWWY1K0E4b0ZzQUFlQUVxeUNCOGdFUkk1QUxBUEw3QUFSVml3QUM4YnNRQWZQbG13QUVWWXNCVXZHN0VWRHo1WnNBQVFzaHdCQ2l0WUlkZ2I5Rm15QVJ3QUVSSTVzQlVRc2dnQkNpdFlJZGdiOUZrd01RRVZBUVlHRlJRV0Z4Y1dGaFVVQmdjbk5qVTJKeWNtSnlZMUVBRTNJVFVEeXY1Z1ZrWTlTOTFoVDNwU2ZWMENibWpFU2prQkpkejl4QVd3a2Y0S2JicHJWRm9ZUWg5aVVVZTZQbVZuUmowaEd6SnBVSXNCSUFGUi9jTUFBQUVBZnY1aEJBWUVUZ0FSQUZPeURCSVRFUkk1QUxBQVJWaXdBeThic1FNYlBsbXdBRVZZc0FBdkc3RUFHejVac0FCRldMQUhMeHV4QnhFK1diQUFSVml3RHk4YnNROFBQbG15QVFNUEVSSTVzQU1Rc2d3QkNpdFlJZGdiOUZrd01RRVhOak15RmhjUkl4RTBKaU1pQnhFakVRRmNESGZCdHEwRDgxNW9sa2J6QkRxRGw4VEYrNXdFVTI1cGV2enZCRG9BQXdCei8rd0VMQVhFQUEwQUZnQWVBSG15QXg4Z0VSSTVzQU1Rc0JQUXNBTVFzQnZRQUxBQVJWaXdDaThic1FvZlBsbXdBRVZZc0FNdkc3RUREejVac2c0RENoRVNPWHl3RGk4WXRHQU9jQTRDWGJRd0RrQU9BbDJ5QUE0QmNiQUtFTElUQVFvcldDSFlHL1Jac0E0UXNoZ0JDaXRZSWRnYjlGbXdBeEN5R3dFS0sxZ2gyQnYwV1RBeEFSQUNJeUlDQXpVUUVqTXlFaE1GSVRVMEppTWlCaFVGSVJVVUZqSTJOd1FzK09QZitnWDI1dUwyQmYwNkFkUjZjVzk2QWRUK0xIdmdkd0lDY3Y3RS9yWUJRUUV0NlFFMUFVeit4UDdUSXpET3k4dk83eXJRMGNyS0FBQUJBS24vOUFKaEJEb0FEQUFvQUxBQVJWaXdBQzhic1FBYlBsbXdBRVZZc0Frdkc3RUpEejVac2dRQkNpdFlJZGdiOUZrd01RRVJGQll6TWpjVkJpTWdFUkVCbkRJK0tpdEtWdjdvQkRyODlqMDJDcndYQVRVREVRQUJBQmIvN2dSS0Jmc0FHUUJRc2dNYUd4RVNPUUN3QUMrd0FFVllzQXN2RzdFTER6NVpzQUJGV0xBUUx4dXhFQTgrV2JBTEVMSUhBUW9yV0NIWUcvUlpzZzhBQ3hFU09iQVBFTEFTMExBQUVMSVZBUW9yV0NIWUcvUlpNREVCTWhZWEFSWVhGemNYQmlNaUppY0RBeUVCSnlZbkl3Y25OZ0VTYkhnZkFhc2tNU0FSQkNvMGJYVXJ5dmIrOXdHQld5SkpJaHNET3dYN1ZWRDd2MVlIQVFIQUNsaHZBaFQ5TndRUDJrc0RBcllRQUFFQVpQNTJBOVFGeEFBc0FGYXlBeTB1RVJJNUFMQVdMN0FBUlZpd0tpOGJzU29mUGxteUFnRUtLMWdoMkJ2MFdiSUlMU29SRWptd0NDK3lDUUVLSzFnaDJCdjBXYklkTFNvUkVqbXdIUkN5RGdFS0sxZ2gyQnYwV2JJa0NRZ1JFamt3TVFFbUl5SUdGUlFoTXhVaklCRVVGZ1FXRnhZVkJnWUhKelkyTlRRbUpDY21KalUwTmpjbUpqVTBKRE15RndPRGlsZDZpQUVjaVl6K25vRUJHVzhqVVFKN1VJTTFMai8rL1V4L2RxT1FibndCQXVPWmZRVGFKRlpMdU1iKzQyS0lRaVVZT0cxSXV6dGtPVkFwSXkxRUlEVzNsSkhFTFNpT1lhYkZMQUFBQVFBdC8vUUV6d1E2QUJRQVhMSUxGUllSRWprQXNBQkZXTEFUTHh1eEV4cytXYkFBUlZpd0NpOGJzUW9QUGxtd0FFVllzQTh2RzdFUER6NVpzQk1Rc2dBSENpdFlJZGdiOUZtd0NoQ3lCUUVLSzFnaDJCdjBXYkFBRUxBTjBMQU8wTEFSMExBUzBEQXhBU01SRkJZek1qY1ZCaU1nRVJFaEVTTVJJelVoQkttZk1UOG1MMHBXL3VqK3RQT3JCSHdEZlAyMlBqY0t2QmNCTlFKVC9JUURmTDRBQWdDQS9tQUVNUVJPQUE0QUdnQlhzaEViSEJFU09iQVJFTEFBMEFDd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBS0x4dXhDaEUrV2JBQVJWaXdCeThic1FjUFBsbXlDUUFIRVJJNXNoRUJDaXRZSWRnYjlGbXdBQkN5RndFS0sxZ2gyQnYwV1RBeEFUSVNFUlVVQWlNaUp4RWpFVFFBQXhZek1qWTFOQ1lqSWdZVkFsYmcrK0RCczJyekFRTVFRNVYyZlh4eVpuY0VUdjdML3U4UDh2N2xkLzM5QTl2eUFTSDgxWFd0czdqRndhQUFBQUVBVXY2S0Era0VUZ0FpQUUyeUd5TWtFUkk1QUxBQVJWaXdBQzhic1FBYlBsbXdBRVZZc0JRdkc3RVVGejVac0FBUXNBVFFzQUFRc2djQkNpdFlJZGdiOUZteUhDTUFFUkk1c0J3UXNnMEJDaXRZSWRnYjlGa3dNUUV5RmhVak5DWWpJZ1lWRlJRV0JCWVdGeFFHQnljMk5qVTBKaWNtSmljMU5EWTJBampFN2VSdFlIR0RsQUV1WURFQmYweC9NeW84UWU3dEFYamNCRTdkdTJGMHZLb2FnNXRXT1ZOQ1NMODRaVGRPTENncUR6ZiswU2VkK29rQUFBSUFVdi9zQkg0RU9nQVBBQnNBVExJSEhCMFJFam13QnhDd0U5QUFzQUJGV0xBT0x4dXhEaHMrV2JBQVJWaXdCeThic1FjUFBsbXdEaEN5QUFFS0sxZ2gyQnYwV2JBSEVMSVRBUW9yV0NIWUcvUlpzQUFRc0JuUU1ERUJJUllWRkFZR0l5SUFFVFUwQURjaEFSUVdNekkyTlRRbUl5SUdCSDcrOWJwNjNwSGkvdkFCRE44Q1FmekhoWHAxZ1lOMWRvY0RkcEw3anV5REFTd0JBd3p1QVNNQy9kaXB1N3k5bkxPd0FBQUJBRC8vN0FQc0JEb0FFQUJKc2dFUkVoRVNPUUN3QUVWWXNBOHZHN0VQR3o1WnNBQkZXTEFLTHh1eENnOCtXYkFQRUxJQUFRb3JXQ0hZRy9SWnNBb1FzZ1VCQ2l0WUlkZ2I5Rm13QUJDd0RkQ3dEdEF3TVFFaEVSUVdNekkzRndZaklBTVJJVFVoQSt6K21Dc3pKemNtVUd6KzdBWCtyZ090QTNuOXNEczdGckVzQVRrQ1ZNRUFBUUNBLytzRUNBUTZBQklBT0xJT0V4UVJFamtBc0FCRldMQUFMeHV4QUJzK1diQUFSVml3RGk4YnNRNFBQbG15QXdFS0sxZ2gyQnYwV2JBQUVMQUkwTEFJTHpBeEFSRVFNekkyTlNZRE14WVJFQUFqSWlZbkVRRnlvWEdSQTI3eGMvNzg1OHZSQVFRNi9YYisvZW1nNXdFZDV2N2kvdlQrd2VMWUFwVUFBZ0JFL2lJRmhRUkJBQm9BSXdCZnNoQWtKUkVTT2JBUUVMQWIwQUN3R1Mrd0FFVllzQkV2RzdFUkd6NVpzQUJGV0xBR0x4dXhCaHMrV2JBQVJWaXdBQzhic1FBUFBsbXlEUUVLSzFnaDJCdjBXYkFBRUxBWTBMQU5FTEFiMExBUkVMSWhBUW9yV0NIWUcvUlpNREVGSkFBMU5CSTNGd1lHQnhRV0Z4RTBOak15RmhZVkZBQUZFU01UTmpZMUppWWpJaFVDWmY3OC91TitjNWhJVEFLYWxKNThrK3lIL3Q3KzlmUHpsYVVDalhRM0Rod0JOLytrQVFWVGtrYThhS0hOSGdLQWQ1S04rNUx6L3RjYS9qRUNsQm5CbDVlL1BnQUFBUUJQL2lJRmZnUTZBQmdBUkxJQUdSb1JFamtBc0EwdnNBQkZXTEFVTHh1eEZCcytXYkFBUlZpd0R5OGJzUThQUGxteUZ3RUtLMWdoMkJ2MFdiQUIwTEFVRUxBWTBMQUcwTEFQRUxBTTBEQXhBUkUyTmpVbUF6TVdFUkFBQlJFakVTUUFBeEV6RVJBRkVRTlNrNmNGY081NS91SCs4L1ArL1A3MUFmTUJIUVE2L0gwYnpxVGlBUlRqL3UzKy9QN0tHdjR5QWRBZUFUTUJDZ0h0L2hqK29qd0RnZ0FCQUdiLzdBWXRCRG9BSUFCV3Nob2hJaEVTT1FDd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBWUx4dXhHQTgrV2JBQVJWaXdIQzhic1J3UFBsbXlCUUVLSzFnaDJCdjBXYklKQUJ3UkVqbXdEdEN3QUJDd0U5Q3dFeSt5R2dVWUVSSTVNREVCQWdjVUZqTXlOalVSTXhFV0ZqTXlOalVtQXpNV0VBSWpJaWNHSXlJQ0VEY0I1WVlIWVZoYllQc0NYMXBZWVFlRjhZM1Z5K2hjWE9iTDFvMEVPdjdwN2IzTG5aUUJSdjZ2anBqTHZlOEJGZWo5eVA3UzN0NEJMZ0k0NkFBQ0FIYi83QVNZQmNRQUlBQXBBR3V5RHlvckVSSTVzQThRc0NIUUFMQUFSVml3R2k4YnNSb2ZQbG13QUVWWXNBWXZHN0VHRHo1WnNpUWFCaEVTT2JBa0w3SVRBUW9yV0NIWUcvUlpzQUxRc2dzYUJoRVNPYkFHRUxJUEFRb3JXQ0hZRy9SWnNDUVFzQjdRc0JvUXNpY0JDaXRZSWRnYjlGa3dNUUVHQnhVVUJpTWlBRFVSTnhFVUZqTXlOalUxSmdBbk5UUTJNeklXRlJFMk53RVVGaGNSSmlNaUJnU1lPa1Q2MWRQKy91eUNibUp0MGY4QUE4V2xwN3hMS3YycWZXc0ViVFJEQWxjVUMzWGEvUUVGMUFFZEF2N2VmWStHZzN3bUFSUEFHNm5NMEx2K3pnd0xBU05zb2lBQlJacEpBQUFCLytFQUFBU2VCY01BR2dCQ3NnQWJIQkVTT1FDd0FFVllzQVF2RzdFRUh6NVpzQUJGV0xBTkx4dXhEUTgrV2JJQUJBMFJFam13QkJDeUNRRUtLMWdoMkJ2MFdiQVMwTEFFRUxBWDBEQXhBUk0yTmpNeUZ3Y21JeUlIQVJFakVRRW1JeUlISnpZek1oWVhBai9TSzNwZ1JrSW1EU2hCSC83Wi9QN2JJVUFyQ2lROFNtZDlMQU1IQWZoa1lCckNCVVg5YS8zdUFoQUNsMFVGd1J0a2JBQUFBZ0F6Lyt3R1ZBUTZBQklBSmdCd3NnZ25LQkVTT2JBSUVMQWUwQUN3QUVWWXNCRXZHN0VSR3o1WnNBQkZXTEFHTHh1eEJnOCtXYkFBUlZpd0NpOGJzUW9QUGxtd0VSQ3lBQUVLSzFnaDJCdjBXYklJRVFZUkVqbXdEOUN3RU5Dd0ZkQ3dGdEN3Q2hDeUd3RUtLMWdoMkJ2MFdiSWZFQW9SRWptd0pOQXdNUUVqRmhVUUFpTWlKd1lqSWdJUk5EY2pOU0VCSmljaEJnY1VGak15TmpjMU14VVdGak15TmdaVWdEZkt2TzVjWE82OXlEWnZCaUgreFFROS9NWThCRk5MWEdZQitnSmpYVXRUQTRPZXIvN2kvdFRpNGdFdUFSeXhuTGY5L0tDdHNaeSt5cGVWNk82UGw4b0FBUUFpLy9JRnZBV3dBQmdBYnJJUkdSb1JFamtBc0FCRldMQVhMeHV4Rng4K1diQUFSVml3Q1M4YnNRa1BQbG13QUVWWXNCTXZHN0VURHo1WnNCY1FzZ0FCQ2l0WUlkZ2I5Rm15QkJjSkVSSTVzQVF2c0FrUXNnb0JDaXRZSWRnYjlGbXdCQkN5RUFFS0sxZ2gyQnYwV2JBQUVMQVYwTEFXMERBeEFTRVJOak15QkJBRUl5Y3lOalVtSmlNaUJ4RWpFU0UxSVFTUS9oT1VjdnNCR1A3dS9nR0pqQUdQajRaNC9mNThCRzRFNVA1MEp2RCtVT3kvZVlSM2h5RDlkQVRrekFBQkFHai83QVR2QmNRQUh3QnhzZ01nSVJFU09RQ3dBRVZZc0F3dkc3RU1IejVac0FCRldMQURMeHV4QXc4K1diQU1FTElUQVFvcldDSFlHL1Jac2hjTUF4RVNPWHl3Rnk4WXREQVhRQmNDWGJSZ0YzQVhBbDIwMEJmZ0Z3SmRzZ0FYQVhHeUdBRUtLMWdoMkJ2MFdiQURFTEljQVFvcldDSFlHL1JaTURFQkJnQWpJaVFDSnpVMEVpUXpNZ0FYSXlZbUl5SUdCeUVWSVJZV016STJOd1R1RnY3VStLLys5WkVCa2dFUnRQTUJKUmo4RXBTT29iQUlBZnYrQkFlcm5aT1dGQUhaNlA3N3BRRTJ6M3ZQQVRxcS92YnNuSTdsMHNyZDVZZWRBQUFDQUMwQUFBaEJCYkFBR1FBaUFIU3lDU01rRVJJNXNBa1FzQnJRQUxBQVJWaXdHQzhic1JnZlBsbXdBRVZZc0Fndkc3RUlEejVac0FCRldMQVFMeHV4RUE4K1diSUFHQWdSRWptd0FDK3dHQkN5Q2dFS0sxZ2gyQnYwV2JBUUVMSVNBUW9yV0NIWUcvUlpzQUFRc2hvQkNpdFlJZGdiOUZtd0VoQ3dHOUN3SE5Bd01RRWhIZ0lWRkFRSElSRWhBd0lDQmlNak5UYytBamNUSVJFUklUSTJOVFFtSndVTkFUR1o2My8rNitYOXl2NUNHZzlqdko1QUtGZGZNUW9jQTZzQktYNlJqM29Eb1FGMTFJZk8vUVVFNVAzTi92aiszWWJLQXdocTE5RUN5ZjBtL2ZTVGRYT1BBZ0FDQUpzQUFBaEhCYkFBRXdBY0FJZXlBUjBlRVJJNXNBRVFzQlRRQUxBQVJWaXdBaThic1FJZlBsbXdBRVZZc0JNdkc3RVRIejVac0FCRldMQVFMeHV4RUE4K1diQUFSVml3RFM4YnNRMFBQbG15QUJBVEVSSTVzQUF2c3A4QUFWMnlCQTBDRVJJNXNBUXZzQUFRc2c4QkNpdFlJZGdiOUZtd0JCQ3lGQUVLSzFnaDJCdjBXYkFORUxJVkFRb3JXQ0hZRy9SWk1ERUJJUkV6RVNFeUZoWVZGQVFqSVJFaEVTTVJNd0VSSVRJMk5UUW1Jd0dYQW9EOEFTdWM3bi8rNC9QOTRQMkEvUHdEZkFFcGZwS1VmQU5GQW12OTBtN0xoYzMzQW5yOWhnV3cvUWorR0lad2I0TUFBUUF4QUFBRnlBV3dBQlVBVmdDd0FFVllzQlF2RzdFVUh6NVpzQUJGV0xBSUx4dXhDQTgrV2JBQVJWaXdFQzhic1JBUFBsbXdGQkN5QUFFS0sxZ2gyQnYwV2JJRUVCUVJFam13QkMreURRRUtLMWdoMkJ2MFdiQUFFTEFTMExBVDBEQXhBU0VSTmpNZ0JCVVJJeEUwSmlNaUJ4RWpFU0UxSVFTUy9oR0Rqd0VNQVFmOGZacU1odnoraWdSaEJPVCtteHZzNWY0M0FjcUxlaHo5VFFUa3pBQUFBUUNTL3BnRkRRV3dBQXNBU0FDd0NTK3dBRVZZc0FBdkc3RUFIejVac0FCRldMQUVMeHV4QkI4K1diQUFSVml3Qmk4YnNRWVBQbG13QUVWWXNBb3ZHN0VLRHo1WnNnSUJDaXRZSWRnYjlGbXdBOUF3TVJNekVTRVJNeEVoRVNNUklaTDlBb0g5L2t2OS9qY0ZzUHNhQk9iNlVQNllBV2dBQWdDUUFBQUV3UVd3QUEwQUZnQmJzaEFYR0JFU09iQVFFTEFEMEFDd0FFVllzQXd2RzdFTUh6NVpzQUJGV0xBS0x4dXhDZzgrV2JBTUVMSUFBUW9yV0NIWUcvUlpzZ0lNQ2hFU09iQUNMN0lPQVFvcldDSFlHL1Jac0FvUXNnOEJDaXRZSWRnYjlGa3dNUUVoRVNFeUZoWVZGQVFISVJFaEFSRWhNalkxTkNZbkJDejlZUUVxb081OC91dnYvZE1EblAxaEFTbUFqNHg4Qk9UK24yN0toY3o0QWdXdy9RaitFb3R6Ym9BQ0FBQUNBQ1QrbWdYY0JiQUFEZ0FVQUdXeUVoVVdFUkk1c0JJUXNBdlFBTEFBUlZpd0N5OGJzUXNmUGxtd0FFVllzQVF2RzdFRUZ6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBRUVMQUIwTEFDRUxJR0FRb3JXQ0hZRy9SWnNBM1FzQTdRc0EvUXNCRFFzQXNRc2hFQkNpdFlJZGdiOUZrd01RRWpFU0VSSXdNek5oSTNFeUVSTXlFaEVTRURBZ1hQOFB4QjlBaDFWMmdQSmdPV3VmdmJBbkQrVnhnYi9wb0JadjZhQWpCVUFVSExBb2I3R2dRYS9tYitaUUFBQVFBV0FBQUhtd1d3QUJVQWZRQ3dBRVZZc0Frdkc3RUpIejVac0FCRldMQU5MeHV4RFI4K1diQUFSVml3RVM4YnNSRWZQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFHTHh1eEJnOCtXYkFBUlZpd0ZDOGJzUlFQUGxteUVBa0NFUkk1c0JBdnNnQUJDaXRZSWRnYjlGbXdCTkN5Q0JBQUVSSTVzQkFRc0F2UXNoTUFFQkVTT1RBeEFTTVJJeEVqQVNFQkFTRUJNeEV6RVRNQklRRUJJUVQvby95cS9wdit4UUhWL2tvQk1nRmNuZnlXQVZrQk1mNU9BZEgreGdKMC9Zd0NkUDJNQXdjQ3FmMmdBbUQ5b0FKZy9Wbjg5d0FBQVFCSi8rMEVmd1hEQUNrQWhySWxLaXNSRWprQXNBQkZXTEFMTHh1eEN4OCtXYkFBUlZpd0Z5OGJzUmNQUGxtd0N4Q3lBd0VLSzFnaDJCdjBXYklvQ3hjUkVqbDhzQ2d2R0xJUUtBRmR0REFvUUNnQ1hiUmdLSEFvQWwyMG9DaXdLQUpkc2dZb0F4RVNPYklsQVFvcldDSFlHL1Jac2hFbEtCRVNPYkFYRUxJZkFRb3JXQ0hZRy9SWnNod2xIeEVTT1RBeEFUUW1JeUlHRlNNME5qWXpNZ1FWRkFZSEZoWVZGQVFqSWlZbU5UTVVGak15TmpVMEppTWpOVE1nQTJ5VWYyMlMvSVRxamZvQkZYaHNlb0grMVBxYStYMzhuSGlHbzQrS3E2SUJEQVFqWW5SelczZTZaOXJFWTZZd0txdC94T2R1dm50ZWdYNWxlMi9JQUFBQkFKUUFBQVVOQmJBQUNRQkZBTEFBUlZpd0FDOGJzUUFmUGxtd0FFVllzQWN2RzdFSEh6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdCUzhic1FVUFBsbXlCQUFDRVJJNXNna0FBaEVTT1RBeEFUTVJJeEVCSXhFekVRUVEvZjM5Z2YzOUJiRDZVQVFOKy9NRnNQdnlBQUFCQUMwQUFBVU5CYkFBRVFCTnNnUVNFeEVTT1FDd0FFVllzQUF2RzdFQUh6NVpzQUJGV0xBQkx4dXhBUTgrV2JBQVJWaXdDUzhic1FrUFBsbXdBQkN5QXdFS0sxZ2gyQnYwV2JBSkVMSUxBUW9yV0NIWUcvUlpNREVCRVNNUklRTUNBZ1lqSXpVM1BnSTNFd1VOL1A1Q0dnOWp2SjVBS0ZkZk1Rb2NCYkQ2VUFUay9jMysrUDdkaHNvRENHclgwUUxKQUFFQU9mL3JCTjBGc0FBUEFFbXlBQkFSRVJJNUFMQUFSVml3RHk4YnNROGZQbG13QUVWWXNBWXZHN0VHRHo1WnNnQVBCaEVTT2JBUEVMQUIwTEFCTDdBR0VMSUtBUW9yV0NIWUcvUlpzZzBHRHhFU09UQXhBUUVoQVFjR0l5YzNGak15TnpjQklRS2dBU1FCR2Y0RkxtVGdhQUlZUFd3c05QNE9BUlFDdHdMNSswaGJzZ2JJQkZ4N0JDUUFBd0JQLzhRR0dBWHNBQllBSHdBb0FGV3lDaWtxRVJJNXNBb1FzQjdRc0FvUXNDRFFBTEFLTDdBVkw3SVVGUW9SRWptd0ZDK3dBTkN5Q3dvVkVSSTVzQXN2c0FqUXNpRUJDaXRZSWRnYjlGbXdIdEN3RkJDeUh3RUtLMWdoMkJ2MFdiQWcwREF4QVRJRUVoVVVBZ1FqRlNNMUl5WWtBalUwRWlRek5UTUJJZ1lWRkJZWE14RXpFVE15TmpVMEppTURycnNCRnBtWi91dTg4eGVwL3V5WW1nRVV2dlArKzZyQnU2c1g4eEdydjcrdEJTYVkvdkNzcXY3eGw3NitBWllCRGFxdEFSS1h4djV2ejd5MHpRSUREdnp5ejdhNTBBQUFBUUNTL3FFRnZRV3dBQXNBT3dDd0NTK3dBRVZZc0FBdkc3RUFIejVac0FCRldMQUVMeHV4QkI4K1diQUFSVml3Q2k4YnNRb1BQbG15QWdFS0sxZ2gyQnYwV2JBRzBEQXhFek1SSVJFekVUTURJeEVoa3YwQ2dmMndGT2o3MFFXdyt4b0U1dnNjL2RVQlh3QUFBUUNPQUFBRTdnV3dBQkVBUHdDd0FFVllzQUF2RzdFQUh6NVpzQUJGV0xBSkx4dXhDUjgrV2JBQVJWaXdBUzhic1FFUFBsbXlEZ0VKRVJJNXNBNHZzZ1VCQ2l0WUlkZ2I5Rmt3TVFFUkl4RUdJeUFrSnhFekVSWVdNekkzRVFUdS9LS3cvdnYrOUFIOEFYNlhycVFGc1BwUUFqMHA1dWdCenY0d2kzWXFBcWNBQUFFQW1BQUFCd01Gc0FBTEFFZ0FzQUJGV0xBQUx4dXhBQjgrV2JBQVJWaXdBeThic1FNZlBsbXdBRVZZc0Fjdkc3RUhIejVac0FCRldMQUpMeHV4Q1E4K1diSUJBUW9yV0NIWUcvUlpzQVhRc0FiUU1ERUJFU0VSTXhFaEVUTVJJUkVCbGdHOC9BRzUvUG1WQmJEN0dnVG0reG9FNXZwUUJiQUFBUUNZL3FJSHJRV3dBQThBVkFDd0N5K3dBRVZZc0FBdkc3RUFIejVac0FCRldMQURMeHV4QXg4K1diQUFSVml3Qnk4YnNRY2ZQbG13QUVWWXNBMHZHN0VORHo1WnNnRUJDaXRZSWRnYjlGbXdCZEN3QnRDd0NkQ3dDdEN3QXRBd01RRVJJUkV6RVNFUk14RXpBeU1SSVJFQmxnRzgvQUc1L0tvVTN2bmRCYkQ3R2dUbSt4b0U1dnNTL2VBQlhnV3dBQUFDQUJnQUFBWFVCYkFBRFFBV0FGNnlBUmNZRVJJNXNBRVFzQTdRQUxBQVJWaXdBQzhic1FBZlBsbXdBRVZZc0Fvdkc3RUtEejVac2dJQUNoRVNPYkFDTDdBQUVMSU1BUW9yV0NIWUcvUlpzQUlRc2c0QkNpdFlJZGdiOUZtd0NoQ3lEd0VLSzFnaDJCdjBXVEF4RXlFUklUSVdGaFVVQkFjaEVTRUJFU0V5TmpVMEppY1lBb2NCS3FEdWZmN3A3djNVL25VQ2h3RXBnSStNZkFXdy9kTnV5WWJOOXdJRTdmM0wvaEtMYzI2QUFnQUFBd0NiQUFBR1dBV3dBQXNBRHdBWUFHMnlBaGthRVJJNXNBSVFzQTNRc0FJUXNCZlFBTEFBUlZpd0N5OGJzUXNmUGxtd0FFVllzQTR2RzdFT0h6NVpzQUJGV0xBSUx4dXhDQTgrV2JBQVJWaXdEQzhic1F3UFBsbXlBQWdMRVJJNXNBQXZzaEFCQ2l0WUlkZ2I5Rm13Q0JDeUVRRUtLMWdoMkJ2MFdUQXhBU0V5RmhZVkZBUUhJUkV6QVNNUk13RVJJVEkyTlRRbUp3R1lBU3FnN256KzYrLzkwLzBFd1B6OCswQUJLWUNQakh3RGcyN0toY3o0QWdXdytsQUZzUDBJL2hLTGMyNkFBZ0FDQUpBQUFBVEJCYkFBQ3dBVUFFMnlEaFVXRVJJNXNBNFFzQUhRQUxBQVJWaXdDeThic1FzZlBsbXdBRVZZc0Frdkc3RUpEejVac2dBSkN4RVNPYkFBTDdJTUFRb3JXQ0hZRy9SWnNBa1FzZzBCQ2l0WUlkZ2I5Rmt3TVFFaE1oWVdGUlFFQnlFUk14RVJJVEkyTlRRbUp3R05BU3FnN256KzYrLzkwLzBCS1lDUGpId0RnMjdLaGN6NEFnV3cvUWorRW90emJvQUNBQUVBYS8vc0JQRUZ4QUFmQUgreUF5QWhFUkk1QUxBQVJWaXdFeThic1JNZlBsbXdBRVZZc0J3dkc3RWNEejVac2drVEhCRVNPWHl3Q1M4WXRHQUpjQWtDWGJUUUNlQUpBbDIwTUFsQUNRSmRzZ0FKQVhHeUJnRUtLMWdoMkJ2MFdiQWNFTElEQVFvcldDSFlHL1Jac2dBR0F4RVNPYkFURUxJTUFRb3JXQ0hZRy9SWnNnOEpEQkVTT1RBeEFSWVdNekkyTnlFMUlTWW1JeUlHQnlNMkFETXlCQklYRlJRQ0JDTWlBQ2NCYUJTWGs1eXJCdjMrQWdJSXNhQ01sUkw4R0FFbDhyTUJFSk1Cai83MHNQaisxQllCMlo2RzVOZk0yT1NNbnU0QkNLait5TTE3ei83SHFBRUY2QUFBQWdDZy8rd0hCd1hFQUJjQUpRQitzaEltSnhFU09iQVNFTEFkMEFDd0FFVllzQk12RzdFVEh6NVpzQUJGV0xBTkx4dXhEUjgrV2JBQVJWaXdCQzhic1FRUFBsbXdBRVZZc0Fvdkc3RUtEejVac2c0S0RSRVNPWHl3RGk4WXRHQU9jQTRDWGJJSUFRb3JXQ0hZRy9SWnNCTVFzaHNCQ2l0WUlkZ2I5Rm13QkJDeUlnRUtLMWdoMkJ2MFdUQXhBUlFDQkNNaUpBSW5JeEVqRVRNUk16WVNKRE15QkJJWEJ6UUNJeUlDQnhVVUVqTXlFalVIQjVUKzdiT24vdmllRHJiOC9MTUdtZ0VQcmJJQkU1WUIvYmVvcExrQ3U2YW90UUt5MXY2OXJaZ0JITDM5b3dXdy9YSEpBVFdscS82LzFRWHlBUUwrLyt0VThQNzZBUUQyQUFBQ0FDQUFBQVJmQmJBQURBQVZBR0d5RUJZWEVSSTVzQkFRc0FyUUFMQUFSVml3Q2k4YnNRb2ZQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFETHh1eEF3OCtXYklSQ2dBUkVqbXdFUyt5QVFFS0sxZ2gyQnYwV2JJRkFSRVJFam13Q2hDeUVnRUtLMWdoMkJ2MFdUQXhJUkVoQVNFQkpoRTBKRGNoRVFFVUZqTXpFU01pQmdOaS91Yis1Lzd4QVVYK0FSUDJBZS85QklxSzYrdU1pQUlnL2VBQ2EzZ0JFZEhwQXZwUUErbDdpZ0lBaGdBQ0FGdi82d1E4QmhNQUdnQW1BRlN5RGljb0VSSTVzQTRRc0J2UUFMQUFSVml3RVM4YnNSRWhQbG13QUVWWXNBY3ZHN0VIRHo1WnNnQVJCeEVTT2JBQUw3SVpBQWNSRWpteUd3RUtLMWdoMkJ2MFdiQUhFTEloQVFvcldDSFlHL1JaTURFQk1oSVZGUlFBSXlJQUVUVVFFamMyTmpVekZBWUdCd1lHQnpZWElnWVZGQll6TWpZMU5DWUNlc3oyL3ZYbDMvN3UrUGFLVWNSQ2lLYVlueHVSazNhR2hIcDVoWVVEL3Y3djZnenEvdDRCS0FFQVJnRmVBWmd6SEQ4MlpYNVBJeUNra1pYRG42V2NycSt3aktNQUF3Q1BBQUFFT2dRNkFBNEFGUUFjQUhpeUFoMGVFUkk1c0FJUXNCWFFzQUlRc0JmUUFMQUFSVml3QVM4YnNRRWJQbG13QUVWWXNBQXZHN0VBRHo1WnNoWUJBQkVTT1h5d0ZpOFl0RUFXVUJZQ1hiVFFGdUFXQWwyeUR3Y0tLMWdoMkJ2MFdiSUlEeFlSRWptd0FCQ3lFQUVLSzFnaDJCdjBXYkFCRUxJYkFRb3JXQ0hZRy9SWk1ERXpFU0V5RmhVVUJnY1dGaFVVQmlNQkVTRXlOVFFqSlRNeU5UUW5JNDhCdDk3b1hWdHFmTi9SL3ZnQkNydSsvdm5JejhUVEJEcWJrVXQzSUJhR1c1ZWVBYzMrODRhSHJucUFCQUFCQUlVQUFBTk5CRG9BQlFBckFMQUFSVml3QkM4YnNRUWJQbG13QUVWWXNBSXZHN0VDRHo1WnNBUVFzZ0FCQ2l0WUlkZ2I5Rmt3TVFFaEVTTVJJUU5OL2lyeUFzZ0RkdnlLQkRvQUFnQW4vcjRFeFFRNkFBNEFGQUJic2hJVkZoRVNPYkFTRUxBRTBBQ3dEQyt3QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFLTHh1eENnOCtXYklBQVFvcldDSFlHL1Jac0FiUXNBZlFzQXdRc0FuUXNBY1FzQS9Rc0JEUXNBUVFzaEVCQ2l0WUlkZ2I5Rmt3TVRjMk5qY1RJUkV6RVNNUklSRWpFeUVoRVNFSEFvRmxSUWNPQXUrVzh2MUs5Z0VCZGdHZi91OEhEc0p4eTU0Qm52eUkvZndCUXY2K0FnUUNwOC8rMWdBQkFCNEFBQVpjQkRvQUZRQ0NBTEFBUlZpd0NTOGJzUWtiUGxtd0FFVllzQTB2RzdFTkd6NVpzQUJGV0xBUkx4dXhFUnMrV2JBQVJWaXdBaThic1FJUFBsbXdBRVZZc0FZdkc3RUdEejVac0FCRldMQVVMeHV4RkE4K1diSVFFUUlSRWptd0VDK3lqeEFCWGJJQUFRb3JXQ0hZRy9SWnNBVFFzZ2dRQUJFU09iQVFFTEFMMExJVEFCQVJFamt3TVFFakVTTVJJd01oQVFFaEV6TVJNeEV6RXlFQkFTRUVOWUh6Z1BuKzFnRm4vcXdCS2ZWeTgzUDJBU24rclFGcC90SUJzLzVOQWJQK1RRSXpBZ2YrVndHcC9sY0JxZjM4L2NvQUFBRUFUZi9zQThRRVRRQW5BSTJ5SGlncEVSSTVBTEFBUlZpd0pTOGJzU1ViUGxtd0FFVllzQWd2RzdFSUR6NVpzaGtsQ0JFU09YeXdHUzhZdEVBWlVCa0NYYlRRR2VBWkFsMnlGZ2NLSzFnaDJCdjBXYklERmhrUkVqbXdDQkN5RUFjS0sxZ2gyQnYwV2JJTkZoQVJFam0wQXcwVERRSmRzQ1VRc2g0SENpdFlJZGdiOUZteUlSa2VFUkk1UUFrTElSc2hLeUU3SVFSZE1ERUJGQVlIRmhVVUJpTWlKaVkxTXhRV016STJOVFFtSXlNMU16WTFOQ1lqSWdZVkl6UTJNeklXQTdCWFQ3cnl5M3pNY3ZKMldsbHBYR0N1dEtOZVVsQnU4dkM1eWVBREVraDVKRUc2bGJGVG1XbENXVk5EVDBhdkFvUkNTazg4ajdla0FBRUFoZ0FBQkJJRU9nQUpBRVVBc0FCRldMQUFMeHV4QUJzK1diQUFSVml3Qnk4YnNRY2JQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFGTHh1eEJROCtXYklFQndJUkVqbXlDUWNDRVJJNU1ERUJNeEVqRVFFakVUTVJBeUR5OHY1WTh2SUVPdnZHQXRMOUxnUTYvUzRBQUFFQWp3QUFCR1VFT2dBTUFHZ0FzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdDQzhic1FnYlBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQUxMeHV4Q3c4K1diSUdBZ1FSRWpsOHNBWXZHTFRUQnVNR0FsMjBRd1pUQmdKZHNoTUdBWEd5QVFFS0sxZ2gyQnYwV2JJS0FRWVJFamt3TVFFakVTTVJNeEV6QVNFQkFTRUIvWHZ6ODJzQkt3RXMvbmtCcVA3RUFheitWQVE2L2xBQnNQMzYvY3dBQUFFQUlRQUFCQlFFT2dBUEFFMnlCQkFSRVJJNUFMQUFSVml3QUM4YnNRQWJQbG13QUVWWXNBRXZHN0VCRHo1WnNBQkZXTEFJTHh1eENBOCtXYkFBRUxJREFRb3JXQ0hZRy9SWnNBZ1FzZ29CQ2l0WUlkZ2I5Rmt3TVFFUkl4RWhBd0lHSXlNbk56WTJOeE1FRlBQK3poUVRxN0JMQVRKUVNRb1VCRHI3eGdOMi9vZis4TzNLQlF1dDVRSE9BQUFCQUk4QUFBVnZCRG9BREFCWkFMQUFSVml3QVM4YnNRRWJQbG13QUVWWXNBc3ZHN0VMR3o1WnNBQkZXTEFETHh1eEF3OCtXYkFBUlZpd0JpOGJzUVlQUGxtd0FFVllzQWt2RzdFSkR6NVpzZ0FMQXhFU09iSUZDd01SRWpteUNBc0RFUkk1TURFQkFTRVJJeEVCSXdFUkl4RWhBdjhCUUFFdzgvN1dwZjdWOHdFeUFTc0REL3ZHQXN6OU5BTFEvVEFFT2dBQUFRQ0dBQUFFRVFRNkFBc0FmZ0N3QUVWWXNBWXZHN0VHR3o1WnNBQkZXTEFLTHh1eENocytXYkFBUlZpd0FDOGJzUUFQUGxtd0FFVllzQVF2RzdFRUR6NVpzZ2tLQUJFU09iQUpMN1MvQ2M4SkFsMnl2d2tCY2JRdkNUOEpBbkt5WHdrQmNyVHZDZjhKQW5HMEh3a3ZDUUp4c284SkFWMjBqd21mQ1FKeXNnSUJDaXRZSWRnYjlGa3dNU0VqRVNFUkl4RXpFU0VSTXdRUjgvNWI4L01CcGZNQnRmNUxCRHIrUFFIREFBRUFoZ0FBQkJJRU9nQUhBRGdBc0FCRldMQUdMeHV4QmhzK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBUXZHN0VFRHo1WnNBWVFzZ0lCQ2l0WUlkZ2I5Rmt3TVNFakVTRVJJeEVoQkJMei9scnpBNHdEZHZ5S0JEb0FBUUFqQUFBRDBBUTZBQWNBTVFDd0FFVllzQVl2RzdFR0d6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBR0VMSUFBUW9yV0NIWUcvUlpzQVRRc0FYUU1ERUJJUkVqRVNFMUlRUFEvcUh6L3FVRHJRTjUvSWNEZWNFQUFBTUFWUDVnQlg4R0FBQWFBQ1FBTHdCL3NnY3dNUkVTT2JBSEVMQWcwTEFIRUxBcTBBQ3dCaSt3QUVWWXNBTXZHN0VER3o1WnNBQkZXTEFLTHh1eENocytXYkFBUlZpd0V5OGJzUk1SUGxtd0FFVllzQkF2RzdFUUR6NVpzQUJGV0xBWEx4dXhGdzgrV2JBS0VMSWVBUW9yV0NIWUcvUlpzQkFRc2lNQkNpdFlJZGdiOUZtd0tOQ3dIaEN3TGRBd01STVFFak15RnhFekVUWXpNaElSRkFJaklpY1JJeEVHSXlJQ0p5VTBKaU1pQnhFV016SUJGQll6TWpjUkppTWlCbFRSdTB3KzhrQld1dFBVdDFORjhqMVByOUVKQkRkMGFpMGxJVFBjL0xwc2FpMGhJaXBvY0FJT0FRa0JOeHdCenY0dUlQN0wvdUR6L3VZZS9sWUJwaG9CQStNOHRzY04vVG9LQVV1aXFRb0N5UXJCQUFFQWh2Ni9CS1VFT2dBTEFEc0FzQWd2c0FCRldMQUFMeHV4QUJzK1diQUFSVml3QkM4YnNRUWJQbG13QUVWWXNBb3ZHN0VLRHo1WnNnSUJDaXRZSWRnYjlGbXdCdEF3TVJNekVTRVJNeEV6QXlNUklZYnpBYWJ6a3hUZC9OSUVPdnlJQTNqOGlQMzlBVUVBQUFFQVh3QUFBK0FFT3dBUkFFaXlCQklURVJJNUFMQUFSVml3Q1M4YnNRa2JQbG13QUVWWXNCQXZHN0VRR3o1WnNBQkZXTEFCTHh1eEFROCtXYklOQVFrUkVqbDhzQTB2R0xJRUFRb3JXQ0hZRy9SWk1ERWhJeEVHSXlJbU5SRXpFUlFXTXpJM0VUTUQ0UE5lYU43cTgybHNZbVR6QVdrVzFjY0JUUDYwZG1JWEFnd0FBQUVBaGdBQUJnTUVPZ0FMQUVnQXNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQWN2RzdFSEd6NVpzQUJGV0xBSkx4dXhDUTgrV2JJQkFRb3JXQ0hZRy9SWnNBWFFzQWJRTURFQkVTRVJNeEVoRVRNUklSRUJlUUZTOHdGVDh2cURCRHI4aUFONC9JZ0RlUHZHQkRvQUFRQisvcjhHdEFRNkFBOEFTd0N3REMrd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBREx4dXhBeHMrV2JBQVJWaXdCeThic1FjYlBsbXdBRVZZc0Ewdkc3RU5EejVac2dFQkNpdFlJZGdiOUZtd0JkQ3dDZEF3TVFFUklSRXpFU0VSTXhFekF5TVJJUkVCY1FGUzh3RlQ4cmtVM2ZxN0JEcjhpQU40L0lnRGVQeUkvZjBCUVFRNkFBSUFId0FBQk9vRU9nQU5BQlVBVzdJQUZoY1JFam13RHRBQXNBQkZXTEFNTHh1eERCcytXYkFBUlZpd0NDOGJzUWdQUGxteUFBd0lFUkk1c0FBdnNBd1FzZ29CQ2l0WUlkZ2I5Rm13QUJDeURnRUtLMWdoMkJ2MFdiQUlFTElQQVFvcldDSFlHL1JaTURFQk16SVdGaFVVQmdjaEVTRTFJUkVSTXpJMk5DWW5Ba3J1aGNabjdNVCtIZjdJQWl2dFdXZGxWZ0xpWEtadXA4b0JBM2JFL2VYK28xbWtYd0VBQUFNQWp3QUFCY2tFT2dBTEFBOEFGd0J0c2djWUdSRVNPYkFIRUxBTjBMQUhFTEFVMEFDd0FFVllzQW92RzdFS0d6NVpzQUJGV0xBT0x4dXhEaHMrV2JBQVJWaXdDQzhic1FnUFBsbXdBRVZZc0F3dkc3RU1EejVac2dBT0NCRVNPYkFBTDdJUUFRb3JXQ0hZRy9SWnNBZ1FzaEVCQ2l0WUlkZ2I5Rmt3TVFFek1oWVdGUlFHQnlFUk13RWpFVE1CRVRNeU5qUW1Kd0dDN29YR1orekUvaDN6QkVmejgvdTU3VmxuWlZZQzRseW1icWZLQVFRNis4WUVPdjNsL3FOWnBGOEJBQUFDQUk4QUFBUWlCRG9BQ3dBVEFFMnlEaFFWRVJJNXNBNFFzQUhRQUxBQVJWaXdDaThic1FvYlBsbXdBRVZZc0Fndkc3RUlEejVac2dBS0NCRVNPYkFBTDdJTUFRb3JXQ0hZRy9SWnNBZ1FzZzBCQ2l0WUlkZ2I5Rmt3TVFFek1oWVdGUlFHQnlFUk14RVJNekkyTkNZbkFZTHVoY1puN01UK0hmUHRXV2RsVmdMaVhLWnVwOG9CQkRyOTVmNmpXYVJmQVFBQUFRQlIvK3dENkFST0FDQUFmYklRSVNJUkVqa0FzQUJGV0xBSUx4dXhDQnMrV2JBQVJWaXdFQzhic1JBUFBsbXdDQkN5QUFFS0sxZ2gyQnYwV2JJZUNCQVJFamw4c0I0dkdMUkFIbEFlQWwyeUF4NEFFUkk1c2h3REFWMnlDd01CWGJJYkJ3b3JXQ0hZRy9SWnNCQVFzaGdCQ2l0WUlkZ2I5Rm15RlJzWUVSSTV0QVFWRkJVQ1hUQXhBU0lHRlNNME5qWXpNZ0FWRlJRR0JpTWlKaVkxTXhRV016STJOeUUxSVNZbUFnRlZkdVYweW5MY0FRdDUzSkY3eUc3bGRsWm1mZ3orckFGVERuNERpMmxQWks5by90TDhHWnY4aUdlNmRWMTNtWW1vaEk4QUFBSUFrZi9zQmpnRVRnQVVBQjhBaGJJVklDRVJFam13RlJDd0RkQUFzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdFeThic1JNYlBsbXdBRVZZc0JFdkc3RVJEejVac0FCRldMQU1MeHV4REE4K1diSUJFUk1SRWpsOHNBRXZHTFRRQWVBQkFsMjBRQUZRQVFKZHNnOEJDaXRZSWRnYjlGbXdEQkN5RndFS0sxZ2gyQnYwV2JBRUVMSWRBUW9yV0NIWUcvUlpNREVCTXpZa016SUFGeGNVQmdZaklnQW5JeEVqRVRNQkZCWXlOalUwSmlNaUJnR0V6QnNCQ3N2YkFSRUxBWHZsbHRMKzh4WEs4L01CdVlyMmlJMTRkNHdDaDgvNC91YnBPYUQ4aWdFRTFQNDhCRHI5MktlOXdMbW52YjBBQUFJQUp3QUFBOThFT2dBTkFCWUFZYklVRnhnUkVqbXdGQkN3Qk5BQXNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0FTOGJzUUVQUGxtd0FFVllzQVV2RzdFRkR6NVpzaElBQVJFU09iQVNMN0lEQVFvcldDSFlHL1Jac2djREVoRVNPYkFBRUxJVEFRb3JXQ0hZRy9SWk1ERUJFU01SSXdNakV5WW1OVFEyTndNVUZqTXpFU01pQmdQZjh1UG4vUDlrYStuR3ZHVlA3K0JaYWdRNis4WUJqZjV6QWJVcW5HV1h3UUwrb0VSVkFUaGFBQUFCLzl2K1N3UDRCZ0FBSVFDTHNoVWlJeEVTT1FDd0hpK3dBRVZZc0FRdkc3RUVHejVac0FCRldMQUtMeHV4Q2hFK1diQUFSVml3R0M4YnNSZ1BQbG0ybng2dkhyOGVBMTJ5THg0QlhiSVBIZ0Zkc2lFWUhoRVNPYkFoTDdJQUJ3b3JXQ0hZRy9SWnNnSVlCQkVTT2JBS0VMSVBBUW9yV0NIWUcvUlpzQVFRc2hVQkNpdFlJZGdiOUZtd0FCQ3dHdEN3SVJDd0hOQXdNUUVoRlRZeklCTVJGQVlqSWljM0ZqTXlOUkUwSmlNaUJ4RWpFU00xTXpVekZTRUNkLzcxZDdZQldnVzVwa1k2RHljN2UyRmVra2p6bnA3ekFRc0VyZW1LL25YOC9yTEVFYjhOdndMdGNGMkMvUHNFcmF1b3FBQUJBRlQvN0FQNUJFNEFIUUI2c2hZZUh4RVNPUUN3QUVWWXNBOHZHN0VQR3o1WnNBQkZXTEFJTHh1eENBOCtXYklBQVFvcldDSFlHL1Jac2hrUENCRVNPWHl3R1M4WXRCOFpMeGtDY2JJYkJ3b3JXQ0hZRy9SWnNnTUFHeEVTT2JRRUF4UURBbDJ3RHhDeUZnRUtLMWdoMkJ2MFdiSVRHUllSRWpteUhCTUJYYklMRXdGZE1ERWxNalkzTXc0Q0l5SUFFVFUwQURNeUZoY2pKaVlqSWdZSElSVWhFZ0krV1hnRzVBTjR5blRrL3ZnQkNPVEE5UVRrQjNaYmJuMEtBVnYrcGhtdWFGQm1zR1FCSndFQ0dmY0JLZUsyWUhXVWphais3QUFBQWdBZUFBQUdtZ1E2QUJZQUh3QjVzZ2tnSVJFU09iQUpFTEFYMEFDd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBSUx4dXhDQTgrV2JBQVJWaXdEeThic1E4UFBsbXlBUUFJRVJJNXNBRXZzQUFRc2dvQkNpdFlJZGdiOUZtd0R4Q3lFUUVLSzFnaDJCdjBXYkFCRUxJWEFRb3JXQ0hZRy9SWnNBZ1FzaGdCQ2l0WUlkZ2I5Rmt3TVFFUk14WVdGUlFHQnlFUklRTUNCZ2NqSnpjMk5qY1RBUkV6TWpZMU5DWW5BL3I0dytYcHcvNFovdVlWRTZpdlRnSXlVa2NLRkFMejdWaG9aRllFT3Y2SEE3eWZvTUVDQTNiK2gvN3k3Z0hLQlF1djR3SE8vY1grd1ZoTlNGRUJBQUlBaGdBQUJyRUVPZ0FTQUJzQWdySUJIQjBSRWptd0FSQ3dFOUFBc0FCRldMQUNMeHV4QWhzK1diQUFSVml3RVM4YnNSRWJQbG13QUVWWXNBc3ZHN0VMRHo1WnNBQkZXTEFQTHh1eER3OCtXYklCRVFzUkVqbXdBUyt5QkJFTEVSSTVzQVF2c0FFUXNnMEJDaXRZSWRnYjlGbXdCQkN5RXdFS0sxZ2gyQnYwV2JBTEVMSVVBUW9yV0NIWUcvUlpNREVCSVJFekVUTVdGaFVVQmdjaEVTRVJJeEV6QVJFek1qWTFOQ1lqQVhrQnBmUDR3K1hwdy80Wi9sdno4d0tZN1ZwbVpGc0Nud0diL29jRHZKK2d3UUlCM2Y0akJEcjl4ZjdCV2t0R1ZBQUFBZi91QUFBRCtBWUFBQmdBZWJJTUdSb1JFamtBc0JVdnNBQkZXTEFFTHh1eEJCcytXYkFBUlZpd0J5OGJzUWNQUGxtd0FFVllzQTh2RzdFUER6NVpzcjhWQVYyeUx4VUJYYklQRlFGZHNoZ1BGUkVTT2JBWUw3SUFCd29yV0NIWUcvUlpzZ0lFQnhFU09iQUVFTElNQVFvcldDSFlHL1Jac0FBUXNCSFFzQmdRc0JQUU1ERUJJUlUyTXlBVEVTTVJOQ1lqSWdjUkl4RWpOVE0xTXhVaEFvdis0WGUyQVZvRjgyRmVra2p6aTR2ekFSOEV0ZkdLL25YOVBRSzZjRjJDL1BzRXRhcWhvUUFCQUliK21nUVNCRG9BQ3dCRkFMQUlMN0FBUlZpd0FDOGJzUUFiUGxtd0FFVllzQU12RzdFREd6NVpzQUJGV0xBRkx4dXhCUTgrV2JBQVJWaXdDUzhic1FrUFBsbXlBUUVLSzFnaDJCdjBXVEF4QVJFaEVUTVJJUkVqRVNFUkFYa0JwdlArdGZQK3NnUTYvSWdEZVB2Ry9wb0JaZ1E2QUFBQkFJai82d2JCQmJBQUhnQmdzZ1lmSUJFU09RQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQU1MeHV4REI4K1diQUFSVml3RlM4YnNSVWZQbG13QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFJTHh1eENBOCtXYklHQUFRUkVqbXlFUUVLSzFnaDJCdjBXYkFhMERBeEFSRVVCaU1pSndZaklpWTFFVE1SRkJZek1qWTFFU0VSRkJZek1qWTFFUWJCK2RMbGJYSHB6L1A5WjE1cGNnRUJiV05oYmdXdysvL1c3cVdsNzlVRUFmdjhkWUtCZHdRRCsveDBnMzk1QkFNQUFRQncvK3NGN1FRNkFCNEFZTElHSHlBUkVqa0FzQUJGV0xBQUx4dXhBQnMrV2JBQVJWaXdEQzhic1F3YlBsbXdBRVZZc0JVdkc3RVZHejVac0FCRldMQUVMeHV4QkE4K1diQUFSVml3Q0M4YnNRZ1BQbG15QmhVRUVSSTVzaEVCQ2l0WUlkZ2I5Rm13R3RBd01RRVJCZ1lqSWljR0l5SW1OUkV6RVJRV016STJOUkV6RVJRV016STJOUkVGN1FIYXZjZGdac3U0MWZOVVJsTm05RnhQU2xzRU92MU93ZHlPanQzREFxLzlVWEpzYkhJQ3IvMVJjbXhzY2dLdkFBTC80QUFBQkNFR0dBQVNBQnNBY2JJVkhCMFJFam13RlJDd0E5QUFzQUJGV0xBUEx4dXhEeUUrV2JBQVJWaXdDUzhic1FrUFBsbXlFZzhKRVJJNXNCSXZzZ0FIQ2l0WUlkZ2I5Rm15QWc4SkVSSTVzQUl2c0FBUXNBdlFzQklRc0EzUXNBSVFzaE1CQ2l0WUlkZ2I5Rm13Q1JDeUZBRUtLMWdoMkJ2MFdUQXhBU0VSTXhZV0ZSUUdCeUVSSXpVekVUTVJJUUVSTXpJMk5UUW1Kd0tqL3Q3M3hPWGx3UDRTcnE3ekFTTCszdTFiWldOWEJEcit5UVBPcnEzVEJBUTZxd0V6L3MzOVcvNkNaVmxWYVFJQUFRQ1kvKzBHelFYRkFDVUFqcklPSmljUkVqa0FzQUJGV0xBa0x4dXhKQjgrV2JBQVJWaXdCUzhic1FVZlBsbXdBRVZZc0J3dkc3RWNEejVac0FCRldMQWlMeHV4SWc4K1diSUFJaVFSRWptd0FDK3lId0FCY2JJSUpCd1JFam13QlJDeURBRUtLMWdoMkJ2MFdiQUFFTEFQMExBQUVMSWhBUW9yV0NIWUcvUlpzQkxRc0J3UXNoVUJDaXRZSWRnYjlGbXlHQ1FjRVJJNU1ERUJNellTSkRNeUFCY2pKaVlqSWdZSElSVWhGaFl6TWpZM013WUFJeUlrQWljakVTTVJNd0dVdFF1V0FRbXI4UUVtR1B3U2s0Nmhxd3NCNmY0V0FxaWlsWllVL0JiKzAvaXMvdmlUQTdUOC9BTlB2Z0VkbS83Njc1MkwzY3pENGZLR25PbisrNkVCTk1yOWRBV3dBQUFCQUliLzdBVzZCRTRBSXdDU3NnMGtKUkVTT1FDd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBakx4dXhJeHMrV2JBQVJWaXdHeThic1JzUFBsbXdBRVZZc0NBdkc3RWdEejVac2c0RUd4RVNPWHl3RGk4WXRFQU9VQTRDWGJBQTBMQUVFTElMQVFvcldDSFlHL1Jac2dnT0N4RVNPYkFPRUxJUEJ3b3JXQ0hZRy9SWnNCc1FzaE1CQ2l0WUlkZ2I5Rm15RmhNUEVSSTVzQThRc0I3UU1ERUJNellrTXpJV0Z5TW1KaU1pQXlFVklSWVdNekkyTnpNT0FpTWlKQ2NqRVNNUk13RjVuUlFCQk5MQjlRVGtCM1piMnhvQmZQNkZDbjF1V1hnRzVBTjR5blRUL3YwVW52UHpBbkhlLytLMllIWCs1cXVLam1oUVpyQmsvdHorT2dRNkFBQUNBQndBQUFVWEJiQUFDd0FPQUZZQXNBQkZXTEFJTHh1eENCOCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVl2RzdFR0R6NVpzQUJGV0xBS0x4dXhDZzgrV2JJTkNBSVJFam13RFMreUFBRUtLMWdoMkJ2MFdiQUUwTElPQ0FJUkVqa3dNUUVqRVNNUkl3TWhBVE1CSVFFaEF3T0RmdUZ6ai83NkFnYjFBZ0QrK3YzZ0FWT29BYXIrVmdHcS9sWUZzUHBRQW1nQitBQUFBZ0FLQUFBRVJRUTZBQXNBRUFCV0FMQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFHTHh1eEJnOCtXYkFBUlZpd0NpOGJzUW9QUGxteURRSUlFUkk1c0EwdnNnRUJDaXRZSWRnYjlGbXdCTkN5RHdnQ0VSSTVNREVCSXhFakVTTURJd0V6QVNNQk13TW5Cd0xrWGNOYmFQY0JxZWNCcS9mK1hQaGtHUmtCRi83cEFSZis2UVE2KzhZQnhBRUdaR1FBQWdDc0FBQUhNQVd3QUJNQUZnQjhBTEFBUlZpd0FpOGJzUUlmUGxtd0FFVllzQkl2RzdFU0h6NVpzQUJGV0xBRUx4dXhCQTgrV2JBQVJWaXdDQzhic1FnUFBsbXdBRVZZc0F3dkc3RU1EejVac0FCRldMQVFMeHV4RUE4K1diSVZBZ1FSRWptd0ZTK3dBTkN3RlJDeUJnRUtLMWdoMkJ2MFdiQUswTEFHRUxBTzBMSVdBZ1FSRWprd01RRWhBVE1CSVFNakVTTVJJd01oRXlFUkl4RXpBU0VEQWFnQmFBRXI5UUlBL3ZxT2Z1SnlqLzc2bVA3Yi9Qd0NZZ0ZUcVFKbkEwbjZVQUdxL2xZQnF2NVdBYXYrVlFXdy9MZ0IrUUFBQWdDZEFBQUdHQVE2QUJNQUdBQi9BTEFBUlZpd0FpOGJzUUliUGxtd0FFVllzQkl2RzdFU0d6NVpzQUJGV0xBRUx4dXhCQTgrV2JBQVJWaXdDQzhic1FnUFBsbXdBRVZZc0F3dkc3RU1EejVac0FCRldMQVFMeHV4RUE4K1diSUFFQklSRWptd0FDK3dBZEN5RGdFS0sxZ2gyQnYwV2JBTDBMQUgwTEFCRUxBVTBMQVYwTElYRWdRUkVqa3dNUUV6RXpNQkl3TWpFU01SSXdNakV5TVJJeEV6QVRNREp3Y0JrUDc0NXdHcjkycGR3MXRvOTIyNjgvTUI3ZmhrR1JrQnhBSjIrOFlCRi83cEFSZis2UUVYL3VrRU92MktBUVprWkFBQ0FJQUFBQVp1QmJBQUdnQWRBSHF5R3g0ZkVSSTVzQnNRc0EzUUFMQUFSVml3R1M4YnNSa2ZQbG13QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFNTHh1eERBOCtXYkFBUlZpd0V5OGJzUk1QUGxteUFCa0VFUkk1c0FBdnNna0JDaXRZSWRnYjlGbXdEdEN3RDlDd0FCQ3dHTkN5R3hrRUVSSTVzQmtRc2h3QkNpdFlJZGdiOUZrd01RRVdGaGNSSXhFbUppTWpCeEVqRVNNaUJnY1JJeEUyTmlFQklRRVRJUVI2L3ZFRi9BSjJqMmdHL0g2UGRRUDhBL29CRC82RkJPVDlqdW4rTHdNb0JOblkvbzBCYklGdkMvMnZBbHh1ZnY2UUFXemgyd0tJL1lvQnFRQUNBSUlBQUFWa0JEb0FHZ0FkQUhxeUd4NGZFUkk1c0JzUXNCVFFBTEFBUlZpd0JTOGJzUVViUGxtd0FFVllzQUF2RzdFQUR6NVpzQUJGV0xBTEx4dXhDdzgrV2JBQVJWaXdFeThic1JNUFBsbXlCQVVBRVJJNXNBUXZzQWZRc0FRUXNoQUhDaXRZSWRnYjlGbXdGZEN3RnRDeUd3VUFFUkk1c0FVUXNod0JDaXRZSWRnYjlGa3dNVE0xTmpZM0FTRUJGaFlYRlNNMUppWW5Jd2NSSXhFaklnWUhGUUVUSVlJQ3hjeis2d1AwL3VyR3ZnTHpBVjV5THdIeUxYbGdBd0dGbGY3V3NzN1NEUUhiL2lRUjA4ZXpzWDl5QWdQK1h3R2tibnk2QW1rQklnQUFBZ0NqQUFBSXN3V3dBQ0FBSXdDWHNod2tKUkVTT2JBY0VMQWowQUN3QUVWWXNBY3ZHN0VISHo1WnNBQkZXTEFMTHh1eEN4OCtXYkFBUlZpd0FDOGJzUUFQUGxtd0FFVllzQVV2RzdFRkR6NVpzQUJGV0xBUkx4dXhFUTgrV2JBQVJWaXdHUzhic1JrUFBsbXlDUWNBRVJJNXNBa3ZzZ01CQ2l0WUlkZ2I5Rm13Q1JDd0RkQ3dBeEN3SE5Dd0Y5Q3lJUWNBRVJJNXNBc1FzaUlCQ2l0WUlkZ2I5Rmt3TVNFUk5EY2hFU01STXhFaEFTRUJGaFlYRVNNUkppWWpJd2NSSXhFaklnWUhFUUVUSVFMRk8vNmYvUHdETVA2SEJPWCtoUDd4QmZ3Q2RvOW9CZngva1hNREFnanAvaTRCWUtGbC9ab0ZzUDE3QW9YOWVBVFoyUDZOQVd5QmJ3bjlyUUpjY1h6K2tRTTVBYW9BQUFJQWp3QUFCM1lFT2dBZ0FDTUFsN0lkSkNVUkVqbXdIUkN3STlBQXNBQkZXTEFITHh1eEJ4cytXYkFBUlZpd0N5OGJzUXNiUGxtd0FFVllzQUF2RzdFQUR6NVpzQUJGV0xBRkx4dXhCUTgrV2JBQVJWaXdFUzhic1JFUFBsbXdBRVZZc0Jrdkc3RVpEejVac2drTEFCRVNPYkFKTDdJREJ3b3JXQ0hZRy9SWnNBa1FzQTNRc0FNUXNCelFzQmZRc2lFTEFCRVNPYkFMRUxJaUFRb3JXQ0hZRy9SWk1ERWhOVFkzSVJFakVUTVJJUUVoQVJZV0Z4VWpOU1ltSnlNSEVTTVJJeUlHQnhVQkV5RUNsUUUxL3Jmejh3S2wvdXdEOVA3cXhiNEM4Z0ZlY3k0QjhpMTVZQU1CaFpYKzFyQ1VaUDVZQkRyK0p3SFovaVFSMU1henNYOXlBZ1ArWHdHa2JueTZBbWtCSWdBQUFnQW8va0FEcWdlSUFDY0FNQUNuc2dJeE1oRVNPYkFDRUxBbzBBQ3dMQyt3QUVWWXNBVXZHN0VGSHo1WnNBQkZXTEFYTHh1eEZ4RStXYkFBUlZpd0VTOGJzUkVQUGxtd0JSQ3lBd0VLSzFnaDJCdjBXYkltQlJFUkVqbDhzQ1l2R0xJUUpnRmRza0FtQVYyMFlDWndKZ0pkc2lNQkNpdFlJZGdiOUZteURDTW1FUkk1c0JFUXNoMEJDaXRZSWRnYjlGbXlEeXdCWGJBc0VMQXAwTEFwTDdRUEtSOHBBbDJ5S0N3cEVSSTVzRERRc0RBdk1ERUJOQ1lqSVRVaE1nUVZGQVlIQkJVVUJDTWpCaFVVRndjbUppYzBOamN6TmpZMU5DRWpOVE1nQXpjekZRRWpBVFV6QXBhRmV2N2xBUlh0QVF0OWJnRU0vdmZvTlhxWVVvU2lBckdrUDNLSi9zK0ppUUVRbEpQUC91cVgvdXZPQkNGZWFzZlB0WENqTEZmK3hlZ0RZMnRCbVNpM2Y0YUxBZ0Y5WmZQSEE1K2JDdjdwQVJnSkFBSUFNLzVJQTRnR0hBQW5BREFBbGJJQ01USVJFam13QWhDd0tOQUFzQ3d2c0FCRldMQUZMeHV4QlJzK1diQUFSVml3Rnk4YnNSY1JQbG13QUVWWXNCSXZHN0VTRHo1WnNBVVFzZ1FCQ2l0WUlkZ2I5Rm15SlJJRkVSSTVmTEFsTHhpMFFDVlFKUUpkc2lRSENpdFlJZGdiOUZteURDUWxFUkk1c0JJUXNoMEJDaXRZSWRnYjlGbXdMQkN3S2RDd0tTKzBEeWtmS1FKZHNpZ3BMQkVTT2JBdzBEQXhBVFFtSXlFMUlUSVdGUlFHQnhZVkZBWWpJd1lWRkJjSEppWW5ORFkzTXpJMk5UUWhJelV6TWdNM014VUJJd0UxTXdKMGMybis1QUVYM1BoaFY5bjIwRFora0ZHQ2xnS3BvVFZzZC83NWtaWGlvSkxRL3VtVy91dk5BdjQ4UjdtbGpVOTNKRUtzbHE4RVltdEJrVEMyY0gySEFWQS9sS2tERXBzTC91b0JGd29BQUFNQVgvL3NCUmNGeEFBUUFCY0FIZ0Jtc2dRZklCRVNPYkFFRUxBUjBMQUVFTEFZMEFDd0FFVllzQXd2RzdFTUh6NVpzQUJGV0xBRUx4dXhCQTgrV2JBTUVMSVJBUW9yV0NIWUcvUlpzaFFFREJFU09YeXdGQzhZc0FRUXNoZ0JDaXRZSWRnYjlGbXdGQkN5SEFjS0sxZ2gyQnYwV1RBeEFSUUNCQ01pSkFJbk5UUVNKQ0FFRWhjQklnWUhJU1ltQXpJMk55RVdGZ1VYbFA3dHM3RCs3cGtEbGdFVUFXUUJFNVlCL2FTZ3RnZ0N2QWkwb0orekN2MUVDcmdDc3RiK3ZhMnFBVHpOWGRVQlJLK3Ivci9WQWUvdzJkdnUrOHJsM3RucUFBQURBRS8vN0FROUJFNEFEd0FXQUIwQVo3SUVIaDhSRWptd0JCQ3dFTkN3QkJDd0Y5QUFzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdEQzhic1F3UFBsbXlFQUVLSzFnaDJCdjBXYkliQkF3UkVqbDhzQnN2R0xSQUcxQWJBbDJ5RXdjS0sxZ2gyQnYwV2JBRUVMSVhBUW9yV0NIWUcvUlpNREVUTkRZMk16SUFGeGNVQmdZaklnQVJBVEkyTnlFV0ZoTWlCZ2NoSmlaUGZlU1UyZ0VUQ3dGNzU1WGovdXdCOTJ1RkVQMy9FSVJyYW9VUUFnQVFoUUlub2YySi91ZnFPYUQ4aWdFdUFRSCtrNUtKaUpNQzNaV0NncFVBQUFFQUVBQUFCUE1Gd2dBUEFFYXlBaEFSRVJJNUFMQUFSVml3Qmk4YnNRWWZQbG13QUVWWXNBOHZHN0VQSHo1WnNBQkZXTEFNTHh1eERBOCtXYklCREE4UkVqbXdCaEN5Q0FFS0sxZ2gyQnYwV1RBeEFSYzNFelkyTXhjSEl3WUhBU01CSVFKaEd4dmtOWng2TFFJWVZDZittUFQrRGdFTkFZdHlid0wzckpjQjF3SjgrNVFGc0FBQkFDQUFBQVFZQkU0QUVRQkdzZ0lTRXhFU09RQ3dBRVZZc0FVdkc3RUZHejVac0FCRldMQVJMeHV4RVJzK1diQUFSVml3RGk4YnNRNFBQbG15QVFVT0VSSTVzQVVRc2dvQkNpdFlJZGdiOUZrd01RRVhOeE1TTXpJWEJ5WWpJZ1lIQVNNQk13SGpGQlI2V3M5REp4Y01JQ0k3RGY3MjAvNlMrd0Z1WVdFQnZnRWlGc0FHTmlyODRnUTZBQUlBWC85MkJSY0dMZ0FUQUNjQVZiSUZLQ2tSRWptd0JSQ3dJZEFBc0FCRldMQU5MeHV4RFI4K1diQUFSVml3QXk4YnNRTVBQbG13QnRDd0RSQ3dFTkN3RFJDeUdnRUtLMWdoMkJ2MFdiQVgwTEFERUxJa0FRb3JXQ0hZRy9SWnNDSFFNREVCRUFBSEZTTTFKZ0FETlJBQU56VXpGUllBRVNjMEppY1ZJelVHQmhVVkZCWVhOVE1WTmpZMUJSZis4K25HNlA3dkF3RVM2Y2JxQVEzOWduakdlWVdFZThaNWdBS3kvdHIraXlOK2ZpTUJjd0VkVlFFa0FYb2pjWElqL29iKzJRYk85U05nWVNQMXowekgvU1ZnWHlQMnp3QUNBRS8vaUFROUJMUUFFd0FsQUZpeUF5WW5FUkk1c0FNUXNCVFFBTEFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQkF2RzdFUUR6NVpzQU1Rc0FiUXNCQVFzQTNRc0JBUXNpTUJDaXRZSWRnYjlGbXdGTkN3QXhDeUhRRUtLMWdoMkJ2MFdiQWEwREF4RXpRU056VXpGUllTRlJVVUFnY1ZJelVtQWpVQk5qWTFOQ1luRlNNMUJnWVZGQllYTlROUDNiMjR2OTNmdjdpNzNRSlFVbHBhVUxoUFdGWlB1QUluMmdFbUgyNXRILzdZM1JIYi90a2RhMndmQVNiZC9xY2V0WmVDc2g5Z1lDR3lsWU91SVdnQUFBTUFpUC9yQnJVSFB3QXFBRDBBUmdDNnNqQkhTQkVTT2JBd0VMQUowTEF3RUxCRjBBQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQVNMeHV4RWg4K1diQUFSVml3Qnk4YnNRY1BQbG13QUVWWXNBc3ZHN0VMRHo1WnNna0FCeEVTT2JBU0VMSVRBUW9yV0NIWUcvUlpzQXNRc2hvQkNpdFlJZGdiOUZteUhnc1NFUkk1c0NQUXNCTVFzQ3JRc0JJUXNEYlFzRFl2c0N6UXNDd3ZzaXNJQ2l0WUlkZ2I5Rm13TEJDd010Q3dNaSt5T1FnS0sxZ2gyQnYwV2JBc0VMQkMwTEJDTDdCRzBMQkdMekF4QVRJV0Z4RVVCaU1pSndZaklpWW5FVFEyTXhVaUJoVVJGQll6TWpZMUVUTVJGaFl6TWpZMUVUUW1JeE1WSXlJdUFpTWlGUlVqTlRRek1oNENBVFkzTlRNVkZBWUhCUFRPOGdIeDBPTnljdVBPOEFUenoxOW1abDlwY3ZVQmNXaGZabVpmYWlGVGlyOHdGR2lHNnlWR3lXLytLVUVEcVdBN0JiRDYzZjNxM2Z1ZW52YlZBaURkL2N5T2dQM3RnSTZCZHdHQy9ubHpnSTZBQWhPQWpnSGpoaU5MQ21nUUl0d1BUeHIraDFJOGFHY3hlQjhBQUFNQWRQL3JCZEVGNHdBcUFEMEFSZ0N2c2dsSFNCRVNPYkFKRUxBNjBMQUpFTEJHMEFDd0FFVllzQkl2RzdFU0d6NVpzQUJGV0xBTEx4dXhDdzgrV2JBU0VMQUEwTEFBTDdBTEVMQUgwTElKRWdzUkVqbXdFaEN5RXdFS0sxZ2gyQnYwV2JBTEVMSWFBUW9yV0NIWUcvUlpzaDRMRWhFU09iQWowTEFURUxBcTBMQVNFTEEyMExBMkw3QXQwTEF0TDdJckNBb3JXQ0hZRy9SWnNDMFFzRExRc0RJdnNqa0lDaXRZSWRnYjlGbXdOaEN3UWRDd1FTK3dSdEN3Umk4d01RRXlGaGNWRkFZaklpY0dJeUltSnhFME5qTVZJZ1lWRlJRV016STJOelV6RlJZV016STJOVFUwSmlNVEZTTWlMZ0lqSWhVVkl6VTBNekllQWdFMk56VXpGUlFHQndRNnV0d0IxTFhGWVdQQ3N0TUUzTHRKVzFORFVGNEI3QUZlVVVKVVcwbTlKRk9Ld1N3VmFJZnJKVWJGY1A0d1FRT3BZRHNFUitYTStNem5rWkhneFFFRHplZkRkWHoxZkhWd2FzckthbkIxZlBWOGRRSG5oaU5NQ1dnUUl0d1BUaHYraFZJOGFHY3hlQjhBQWdDSS8rc0d3UWNSQUI0QUpnQjlzZ1luS0JFU09iQUdFTEFqMEFDd0FFVllzQTB2RzdFTkh6NVpzQUJGV0xBSUx4dXhDQTgrV2JBRTBMSUdDQTBSRWptd0NCQ3lFUUVLSzFnaDJCdjBXYkFORUxBVjBMQVZMN0FSRUxBYTBMQVZFTEFlMExBZUw3QU5FTEFsMExBbEw3QW0wTEFtTDdJZ0NBb3JXQ0hZRy9SWnNDWVFzQ1BRc0NNdk1ERUJFUlFHSXlJbkJpTWlKalVSTXhFVUZqTXlOalVSSVJFVUZqTXlOalVSSlRVaEZ5RVZJelVHd2ZuUzVXMXg2Yy96L1dkZWFYSUJBVzFqWVc3OE9RTlZBZjZtdFFXdysvL1c3cVdsNzlVRUFmdjhkWUtCZHdRRCsveDBnMzk1QkFQbmVucC9md0FDQUhELzZ3WHRCYkVBSGdBbUFJbXlCaWNvRVJJNXNBWVFzQ1hRQUxBQVJWaXdEUzhic1EwYlBsbXdBRVZZc0JVdkc3RVZHejVac0FCRldMQWVMeHV4SGhzK1diQUFSVml3QkM4YnNRUVBQbG13QUVWWXNBZ3ZHN0VJRHo1WnNnWUlGUkVTT2JJUkFRb3JXQ0hZRy9SWnNCclFzQTBRc0NYUXNDVXZzQi9Rc0I4dnNpQUlDaXRZSWRnYjlGbXdIeEN3SXRDd0k5QXdNUUVSQmdZaklpY0dJeUltTlJFekVSUVdNekkyTlJFekVSUVdNekkyTlJFbE5TRVhJUlVqTlFYdEFkcTl4MkJteTdqVjgxUkdVMmIwWEU5S1cveWRBemdFL3JLMUJEcjlUc0hjam83ZHd3S3YvVkZ5Ykd4eUFxLzlVWEpzYkhJQ3IveDdlMzkvQUFFQVp2Nk1CTFlGeFFBWUFGT3lGeGthRVJJNUFMQUFSVml3Q2k4YnNRb2ZQbG13QUVWWXNBQXZHN0VBRno1WnNBQkZXTEFDTHh1eEFnOCtXYkFLRUxBTzBMQUtFTElRQVFvcldDSFlHL1Jac0FJUXNoY0JDaXRZSWRnYjlGa3dNUUVqRVNZQU5SRTBFaVF6SUFBVkl4QWhJZ1lWRVJRV0Z6TUROUHZUL3dDTkFRR2pBUUFCSC96KzNZeXBxWXFmL293QlppQUJSL2tCRWE4QkdKdis5K2tCSnQrOC91MjIzd0VBQVFCYy9va0Q4d1JPQUJvQVU3SVpHeHdSRWprQXNBQkZXTEFLTHh1eENocytXYkFBUlZpd0FDOGJzUUFYUGxtd0FFVllzQUl2RzdFQ0R6NVpzQW9Rc0EvUXNBb1FzaElCQ2l0WUlkZ2I5Rm13QWhDeUdRRUtLMWdoMkJ2MFdUQXhBU01SSmdJMU5UUTJOak15RmhZVkl6UW1JeUlHRlJVVUZoY3pBdFh6czlONTI1Sjh4bS9sZEZoeGduNXdtUDZKQVdvZ0FTUGNISnY4aVdlN2RsdDZ2YWdib2JzQ0FBRUFiUUFBQkpNRlBnQVRBQk1Bc0E0dnNBQkZXTEFFTHh1eEJBOCtXVEF4QVFVSEpRTWpFeVUzQlJNbE53VVRNd01GQnlVQ1d3RWhTUDdkdGEvaC90OUhBU1hLL3Q1SkFTTzVyT1FCSlV6KzRBSEJySUNxL3NFQmpxdUFxd0ZvcTRLckFVYithNnQvcWdBQi9HWUVvdjg1QmYwQUJ3QVJBTEFBTDdJREJnb3JXQ0hZRy9SWk1ERUJGU2MzSVNjWEZmMFhzUUVDSWdHeEJTQitBZTVzQWR3QUFBSDhjd1VYLzIwR0ZRQVBBQzRBc0FzdnNBZlFzQWN2c2dBSUNpdFlJZGdiOUZtd0N4Q3dCTkN3QkMrd0N4Q3lEQWdLSzFnaDJCdjBXVEF4QVRJVkZTTTFOQ01pQkFjak5UTTJKUDUvN29ocU52N2lpeWtuZVFFWUJoWGNJaEJvZHdHR0FYY0FBQUg5ZXdVVy9uSUdZQUFGQUF3QXNBRXZzQVhRc0FVdk1ERUJOVE1IRndmOWU3MEJPMUlGM0lTV2NFUUFBZjJsQlJiK25BWmdBQVVBREFDd0F5K3dBTkN3QUM4d01RRW5OeWN6RmYzM1Vqc0J2UVVXUkhDV2hBQUkraVQreEFHL0JhOEFEQUFhQUNjQU5RQkNBRThBWEFCcUFIb0FzRVV2c0ZNdnNHQXZzRGd2c0FCRldMQUNMeHV4QWg4K1diSUpDUW9yV0NIWUcvUlpzRVVRc0JEUXNFVVFza3dKQ2l0WUlkZ2I5Rm13RjlDd1V4Q3dIdEN3VXhDeVdna0tLMWdoMkJ2MFdiQWwwTEJnRUxBcjBMQmdFTEpuQ1FvcldDSFlHL1Jac0RMUXNEZ1FzajhKQ2l0WUlkZ2I5Rmt3TVFFME5qSVdGU00wSmlNaUJoVUJORFl6TWhZVkl6UW1JeUlHRlJNME5qTXlGaFVqTkNZaUJoVUJORFl6TWhZVkl6UW1JeUlHRlFFME5qSVdGU00wSmlNaUJoVUJORFl5RmhVak5DWWpJZ1lWQVRRMk16SVdGU00wSmlJR0ZSTTBOak15RmhVak5DWWpJZ1lWL1JGenZuUndNekF1TXdIZWRGMWZkWEUxTGl3elNIVmRYM1J3TlZ3ei9zdDBYVjkwY0RVdUxUUDlUM08rZEhBek1DNHovVTEwdm5Sd016QXVNLzdlZFYxZmRIQTFYRE0xZFYxZmRYRTFMaTB6QlBOVWFHaFVMamMxTVA3clZHaG5WVEUwTlREK0NWVm5hRlF4TkRjdS9mbFVhR2hVTVRRM0x2N2tWR2hvVkM0M055NEZHbFJvYUZRdU56VXcvZ2xWWjJoVU1UUTNMdjM1VldkblZURTBOVEFBQ1BwTi9tTUJqQVhHQUFRQUNRQU9BQk1BR0FBZEFDSUFKd0F2QUxBaEw3QVdMN0FTTDdBTEw3QWJMN0FtTDdBQVJWaXdCeThic1FjZlBsbXdBRVZZc0FJdkc3RUNFVDVaTURFRkZ3TWpFd01uRXpNREFUY0ZGU1VGQnlVMUJRRTNKUmNGQVFjRkp5VURKd00zRXdFWEV3Y0QvbEFMZW1CR09neDZZRVlDSFEwQlRmNm0rM1VOL3JNQldnT2NBZ0ZBUlA3Yi9QTUMvc0JGQVNZckVaUkJ4Z05nRVpSQ3hEd08vcTBCWVFTaURnRlMvcUQrRVF4OFlrYzdESHhpUndHdUVKbEV5UHlPRVpsRnlBTGtBZ0ZHUmY3Vi9PTUMvcnRIQVNzQUFBTC80QUFBQkNFR1lnQVNBQnNBZExJVkhCMFJFam13RlJDd0E5QUFzQUJGV0xBTkx4dXhEUjgrV2JBQVJWaXdFUzhic1JFZlBsbXdBRVZZc0Frdkc3RUpEejVac0JFUXNnQUhDaXRZSWRnYjlGbXlBZzBKRVJJNXNBSXZzQUFRc0F2UXNBelFzQUlRc2hNQkNpdFlJZGdiOUZtd0NSQ3lGQUVLSzFnaDJCdjBXVEF4QVNFUk14WVdGUlFHQnlFUkl6VXpOVE1WSVFFUk16STJOVFFtSndLai90NzN4T1hsd1A0U3JxN3pBU0wrM3UxYlpXTlhCUVg5L2dQT3JxM1RCQVVGcTdLeS9KRCtnbVZaVldrQ0FBQUNBSlFBQUFUWkJiQUFEZ0FiQUUyeUJCd2RFUkk1c0FRUXNCZlFBTEFBUlZpd0F5OGJzUU1mUGxtd0FFVllzQUV2RzdFQkR6NVpzaFlEQVJFU09iQVdMN0lBQVFvcldDSFlHL1Jac0FNUXNoUUJDaXRZSWRnYjlGa3dNUUVSSXhFaE1nUVZGQWNYQnljR0l4TTJOVFFtSnlFUklUSTNKemNCa2YwQ0xmUUJIM1Y2YlloNXF2a2NrSDcreVFFd1R6cHpiZ0lkL2VNRnNQN1J3WGVIWkpZM0FVTTFTbmFOQXY0RUZvQmtBQUFDQUh6K1lBUXdCRTRBRXdBaUFHNnlGeU1rRVJJNXNCY1FzQkRRQUxBQVJWaXdFQzhic1JBYlBsbXdBRVZZc0Ewdkc3RU5HejVac0FCRldMQUtMeHV4Q2hFK1diQUFSVml3Qnk4YnNRY1BQbG15Q1JBSEVSSTVzZzRRQnhFU09iQVFFTElYQVFvcldDSFlHL1Jac0FjUXNod0JDaXRZSWRnYjlGa3dNUUVVQnhjSEp3WWpJaWNSSXhFekZ6WXpNaElSSnpRbUl5SUhFUll6TWpjbk54YzJCREJ1YW05b1dYQ3lhL1BnQ211NHh1SHlnWGlWUVVLV1JqSnFibGtpQWhMMGwzcGplRFoxL2Y4RjJtNkMvdG4rK2dhaXZuditJSDRoZTJSbldBQUJBSThBQUFRMEJ4QUFCd0F5c2dFSUNSRVNPUUN3QUVWWXNBUXZHN0VFSHo1WnNBQkZXTEFDTHh1eEFnOCtXYkFFRUxJQUFRb3JXQ0hZRy9SWk1ERUJJUkVqRVNFUk13UTAvVmo5QXJMekJPVDdIQVd3QVdBQUFRQitBQUFEV3dWekFBY0FLd0N3QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFDTHh1eEFnOCtXYkFFRUxJQUFRb3JXQ0hZRy9SWk1ERUJJUkVqRVNFUk13TmIvaGJ6QWV2eUEzYjhpZ1E2QVRrQUFBRUFtLzdHQkowRnNBQVVBRnV5RHhVV0VSSTVBTEFKTDdBQVJWaXdFeThic1JNZlBsbXdBRVZZc0JFdkc3RVJEejVac0JNUXNnQUJDaXRZSWRnYjlGbXlBeE1KRVJJNXNBTXZzQWtRc2dvSENpdFlJZGdiOUZtd0F4Q3lEd0VLSzFnaDJCdjBXVEF4QVNFUk15QUFFUkFBSXljeU5qVUNKU01SSXhFaEJEZjlZS2dCSWdFOC92YnpBWU9JQXY2cnZQd0RuQVRrL2wvK3pmN3MvdlQrMXJxendnRjdDZjJIQmJBQUFRQisvdUlEMndRNkFCVUFTcklMRmhjUkVqa0FzQW92c0FCRldMQVVMeHV4RkJzK1diQUFSVml3RWk4YnNSSVBQbG13RkJDeUFBRUtLMWdoMkJ2MFdiSURGQW9SRWptd0F5K3lFQUVLSzFnaDJCdjBXVEF4QVNFVk15QUFGUlFHQmdjbk5qVTBKaU1qRVNNUklRTkcvaXRKQVFFQklGNnJjMVhlbTQ1Tzh3TElBM2JsL3ZyZFlNS05IYTVLMUlHWC9qb0VPZ0FBQVFDUUFBQUZOZ1d3QUJRQVlRQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQU1MeHV4REI4K1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNBb3ZHN0VLRHo1WnNnOEtEQkVTT2JBUEw3S2ZEd0Zkc2dnQkNpdFlJZGdiOUZteUFRZ1BFUkk1c0FYUXNBOFFzQkxRTURFSkFpRUJJeFVqTlNNUkl4RXpFVE0xTXhVekFRVU4vbndCcmY3Qi90TkJvMW45L1Ztak53RWJCYkQ5Vy96MUFtM3A2ZjJUQmJEOW12NytBbVlBQUFFQWpnQUFCSzRFT2dBVUFGd0FzQUJGV0xBTkx4dXhEUnMrV2JBQVJWaXdGQzhic1JRYlBsbXdBRVZZc0Fvdkc3RUtEejVac0FCRldMQURMeHV4QXc4K1diSU9DZzBSRWptd0RpK3lDUUVLSzFnaDJCdjBXYklCQ1E0UkVqbXdCZEN3RGhDd0V0QXdNUWtDSVFNakZTTTFJeEVqRVRNUk16VXpGVE1UQkpUK3hBRlcvc3ZZTDV0WDh2SlhteWZQQkRyOS92M0lBYXl5c3Y1VUJEcitVTWZIQWJBQUFRQTBBQUFHb2dXd0FBNEFZUUN3QUVWWXNBWXZHN0VHSHo1WnNBQkZXTEFLTHh1eENoOCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQTB2RzdFTkR6NVpzZ2dHQWhFU09iQUlMN0lCQVFvcldDSFlHL1Jac0FZUXNnUUJDaXRZSWRnYjlGbXlEQUVJRVJJNU1ERUJJeEVqRVNFMUlSRXpBU0VCQVNFRHRxMzgvaWNDMVlzQnJRRTIvZ3dDSC83UUFuRDlrQVRzeFAyY0FtVDlSLzBKQUFFQVBRQUFCYWdFT2dBT0FHc0FzQUJGV0xBR0x4dXhCaHMrV2JBQVJWaXdDaThic1FvYlBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQU5MeHV4RFE4K1diSUpDZ0lSRWptd0NTK3lMd2tCY2JLTUNRRmRzZ0FCQ2l0WUlkZ2I5Rm13QmhDeUJBRUtLMWdoMkJ2MFdiSU1BQWtSRWprd01RRWpFU01SSVRVaEVUTUJJUUVCSVFOQWUvTCthZ0tJYkFFcUFTMytlQUdvL3NVQnJQNVVBM2JFL2xBQnNQMzUvYzBBQVFDVUFBQUhnd1d3QUEwQWh3Q3dBRVZZc0FJdkc3RUNIejVac0FCRldMQU1MeHV4REI4K1diQUFSVml3Qmk4YnNRWVBQbG13QUVWWXNBb3ZHN0VLRHo1WnNnRUNCaEVTT2JBQkw3S2ZBUUZkc204QkFYR3kzd0VCY2JJUEFRRnlzcDhCQVhHeVB3RUJjYlF2QVQ4QkFuS3lmQUVCWGJBQ0VMSUVBUW9yV0NIWUcvUlpzQUVRc2dnQkNpdFlJZGdiOUZrd01RRWhFU0VWSVJFakVTRVJJeEV6QVpFQ2l3Tm4vWlg4L1hYOS9RTlNBbDdEK3hNQ2gvMTVCYkFBQUFFQWZnQUFCV1lFT2dBTkFHWUFzQUJGV0xBQ0x4dXhBaHMrV2JBQVJWaXdEQzhic1F3YlBsbXdBRVZZc0FZdkc3RUdEejVac0FCRldMQUtMeHV4Q2c4K1diSUJEQVlSRWpsOHNBRXZHTFJBQVZBQkFsMndBaEN5QkFFS0sxZ2gyQnYwV2JBQkVMSUlBUW9yV0NIWUcvUlpNREVCSVJFaEZTRVJJeEVoRVNNUk13RnhBYVVDVVA2ajgvNWI4L01DZHdIRHhQeUtBYlgrU3dRNkFBRUFtLzdFQis4RnNBQVdBR2l5RUJjWUVSSTVBTEFITDdBQVJWaXdGUzhic1JVZlBsbXdBRVZZc0JNdkc3RVREejVac0FCRldMQVFMeHV4RUE4K1diSUJGUWNSRWptd0FTK3dCeEN5Q0FjS0sxZ2gyQnYwV2JBQkVMSU5BUW9yV0NIWUcvUlpzQlVRc2hFQkNpdFlJZGdiOUZrd01RRXpJQUFSRUFBakp6STJOUUlsSXhFakVTRVJJeEVoQlJSOUFTSUJQUDcyOHdHRGlBTCtxNUg4L1gvOEJIa0RRZjdOL3V6KzlQN1d1clBDQVhzSi9Za0U1UHNjQmJBQUFRQisvdVlHdWdRNkFCZ0FWN0lTR1JvUkVqa0FzQWd2c0FCRldMQVhMeHV4RnhzK1diQUFSVml3RlM4YnNSVVBQbG13QUVWWXNCSXZHN0VTRHo1WnNnRVhDQkVTT2JBQkw3SVBBUW9yV0NIWUcvUlpzQmNRc2hNQkNpdFlJZGdiOUZrd01RRXpJQUFWRkFZR0J5YzJOalUwSmlNakVTTVJJUkVqRVNFRUNuMEJCd0VzWGF0elZYVnBwWnAvOC81YTh3T01BcFQrKzk1aHY0NGRyU2lQWjRLWC9qWURkdnlLQkRvQUFBSUFaLy9yQmRjRnhRQWxBRElBaGJJV016UVJFam13RmhDd0p0QUFzQUJGV0xBTkx4dXhEUjgrV2JBQVJWaXdIUzhic1IwZlBsbXdBRVZZc0FRdkc3RUVEejVac0FEUXNBQXZzZ0lFSFJFU09iQUNMN0FORUxJT0FRb3JXQ0hZRy9SWnNBUVFzaFVCQ2l0WUlkZ2I5Rm13QUJDeUpRRUtLMWdoMkJ2MFdiQUNFTEFwMExBZEVMSXZBUW9yV0NIWUcvUlpNREVGSWljR0l5SWtBaWMxTkJJMk14VWlCaFVWRkJJek1qY21FVFUwRWpNeUVoRVZFQWNXTXdFVUZoYzJFVFUwSmlNaUJoVUYxOSt6bExlNy90U3BBMzNoakdaKzI3SXhLZUx0dU1MenUxeHEvWTVsWTZKZ1dGUmVGVWRIcmdFMnY4bXZBUjZoMU9HOXVOZisrUWZMQVVUTDhBRTEvci8rK3NiKzJzb1VBaG1FMVVpUEFRblZycXV2b1FBQ0FHSC82d1RKQkU0QUlnQXVBSXl5QkM4d0VSSTVzQVFRc0NQUUFMQUFSVml3Q3k4YnNRc2JQbG13QUVWWXNCb3ZHN0VhR3o1WnNBQkZXTEFFTHh1eEJBOCtXYkFBUlZpd0FDOGJzUUFQUGxteUFnUWFFUkk1c0FJdnNBc1FzZ3dCQ2l0WUlkZ2I5Rm13QkJDeUV3RUtLMWdoMkJ2MFdiQUFFTElpQXdvcldDSFlHL1Jac0FJUXNDWFFzQm9Rc2lzQkNpdFlJZGdiOUZrd01RVWlKd1lqSWdBUk5UUVNNeFVHQmhVVkZCWXpOeVkxTlRRMk16SVdGUlVVQnhZekFSUVhOalUxTkNZaklnWVZCTW02azNxUTVmN1UyNnBBUzVwOUpZKzJsSmE5Z1UxWS9nNTRZejB4TWpzU05qa0JRZ0VFUXM4QkRNb0VsSHRKcHN3Q2xlSjZ1K3IvelhmVGxCRUJqNnBzWTZsN2E0ZDRhZ0FCQUMzK29RYTNCYkFBRHdCUEFMQU5MN0FBUlZpd0NDOGJzUWdmUGxtd0FFVllzQUl2RzdFQ0h6NVpzQUJGV0xBT0x4dXhEZzgrV2JBQ0VMSUFBUW9yV0NIWUcvUlpzQVhRc0E0UXNnWUJDaXRZSWRnYjlGbXdDdEF3TVFFaE5TRVZJUkVoRVRNUk13TWpFU0VCamY2Z0E3Nytud0tCL0xBVTUvdlJCT3pFeFB2ZUJPYjdIUDNWQVY4QUFBRUFKdjYvQlRvRU9nQVBBRXNBc0EwdnNBQkZXTEFETHh1eEF4cytXYkFBUlZpd0R5OGJzUThQUGxtd0F4Q3lCQUVLSzFnaDJCdjBXYkFBMExBUEVMSUdBUW9yV0NIWUcvUlpzQU1Rc0FqUXNBWVFzQXJRTURFQkl6VWhGU01SSVJFekVUTURJeEVoQVJ2MUFzUGJBYWJ6a3hUZC9OSURkOFBEL1VzRGVQeUkvZjBCUVFBQUFRQ0FBQUFFNFFXd0FCZ0FUN0lGR1JvUkVqa0FzQUJGV0xBQUx4dXhBQjgrV2JBQVJWaXdDeThic1FzZlBsbXdBRVZZc0E0dkc3RU9EejVac2dVT0FCRVNPYkFGTDdBSTBMQUZFTElVQVFvcldDSFlHL1Jac0JIUU1ERUJFUllYRmhjUk14RTJOeEV6RVNNUkJnY1ZJelVtSmljUkFYMENUelZ1bzJ4ay9mMWdjS1AyK2dFRnNQNHNtRGtuQlFFci90d0tHUUtuK2xBQ1BCZ0s2K1VHNnQ4QnpRQUJBSFFBQUFQMUJEc0FGZ0JSc2dZWEdCRVNPUUN3QUVWWXNCVXZHN0VWR3o1WnNBQkZXTEFNTHh1eERCcytXYkFBUlZpd0FTOGJzUUVQUGxteUR3RU1FUkk1ZkxBUEx4aXlCd0VLSzFnaDJCdjBXYkFFMExBUEVMQVMwREF4SVNNUkJnY1ZJelVtSmljUk14RVdGeEV6RVRZM0VUTUQ5Zk5GTWFPMnZnSHlBWUtqT3p2ekFXa09CWXFMRTlDeEFWRCtzS3dmQVF2Kzd3WU9BZ3dBQUFFQWhRQUFCT1VGc0FBUkFFYXlCUklURVJJNUFMQUFSVml3QVM4YnNRRWZQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFKTHh1eENROCtXYklGQVFBUkVqbXdCUyt5RGdFS0sxZ2gyQnYwV1RBeE14RXpFVFl6SUFRWEVTTVJKaVlqSWdjUmhmeWdzZ0VGQVF3Qi9BRitsNjZrQmJEOXd5bm02ZjR6QWRDTGRpcjlXUUFBQWdBVy8ra0Z2QVhFQUJ3QUpBQmtzaFlsSmhFU09iQVdFTEFqMEFDd0FFVllzQTR2RzdFT0h6NVpzQUJGV0xBQUx4dXhBQTgrV2JJZUFBNFJFam13SGkreUVnRUtLMWdoMkJ2MFdiQUUwTEFlRUxBSzBMQUFFTElYQVFvcldDSFlHL1Jac0E0UXNpSUJDaXRZSWRnYjlGa3dNUVVnQUJFMUppWTFNeFFYTkJJa0Z5QUFFUlVoRlJRV016STNGd1lHQVNFMU5DWWpJZ1lEM1A3Uy9xcWJwN1dObEFFSW5nRUlBU0w4bU11OXNhd3hROWorQlFKc21wU09zQmNCVkFFclBCalVxcllxcmdFY29BSCtuUDY1aERYSzEwYkZLQzREYkIrNHdOMEFBdi9MLyt3RWl3Uk9BQm9BSVFDTXNpQWlJeEVTT2JBZ0VMQVUwQUN3QUVWWXNBMHZHN0VOR3o1WnNBQkZXTEFBTHh1eEFBOCtXYkljQUEwUkVqbXdIQyswdnh6UEhBSmR0RjhjYnh3Q2NiUWZIQzhjQW5HeWp4d0JYYlR2SFA4Y0FuR3lFUWNLSzFnaDJCdjBXYkFFMExBY0VMQUswTEFBRUxJVkFRb3JXQ0hZRy9SWnNoY0FEUkVTT2JBTkVMSWdBUW9yV0NIWUcvUlpNREVGSWlRbkp5WW1OVE1VRnpZa016SVNFUlVoRmhZek1qY1hCZ1lCSVRVbUppSUdBdGpVL3VZVUE0S0dxV2dmQVFlNzNmSDlQUXVkZDZobmhFSGEvbTBCendoeXlub1UrOUV5SGNHVGxUREY4LzdtL3Y1aWhweUhmV0ZyQXBZU2VuMk1BQUFCQUpEK3Z3VHRCYkFBRmdCbXNoVVhHQkVTT1FDd0VDK3dBRVZZc0FRdkc3RUVIejVac0FCRldMQUlMeHV4Q0I4K1diQUFSVml3QWk4YnNRSVBQbG15QndRQ0VSSTVmTEFITHhpMEFBY1FCd0pkc0FyUXNCQVFzaEVCQ2l0WUlkZ2I5Rm13QnhDeUZnRUtLMWdoMkJ2MFdUQXhBU01SSXhFekVUTUJJUUVXQUJVUUFDTW5JQkVDSlNFQmxRajkvWEVCc2dFeS9pTHBBUUQrOFBRQkFRa0MvcTcrK0FKeC9ZOEZzUDJrQWx6OWloLysxL24rOC83VHdnRnZBWG9HQUFBQkFJNys2Z1JEQkRvQUZnQlpzZzBYR0JFU09RQ3dCeSt3QUVWWXNCRXZHN0VSR3o1WnNBQkZXTEFWTHh1eEZScytXYkFBUlZpd0R5OGJzUThQUGxteUZCVVBFUkk1ZkxBVUx4aTBRQlJRRkFKZHNnNEJDaXRZSWRnYjlGbXlBQlFPRVJJNU1ERUJGaFlWRkFZR0J5YzJKelFtSnlNUkl4RXpFVE1CSVFMTnI3eGVxbk5WNEFLTmk2N3k4bFVCUVFFdEFtRXA0NjFndW9nY3JVZktkb1VKL2xRRU92NVFBYkFBQUFFQW0vNUxCUk1Gc0FBVUFIU3lDaFVXRVJJNUFMQUFSVml3QUM4YnNRQWZQbG13QUVWWXNBTXZHN0VESHo1WnNBQkZXTEFTTHh1eEVnOCtXYkFBUlZpd0NDOGJzUWdSUGxteUFnQVNFUkk1ZkxBQ0x4aTBZQUp3QWdKZHREQUNRQUlDWGJBSUVMSU5BUW9yV0NIWUcvUlpzQUlRc2hBQkNpdFlJZGdiOUZrd01RRVJJUkV6RVJRR0l5SW5OeFl6TWpVUklSRWpFUUdYQW4vOXZxbEZQQTRrUG52OWdmd0ZzUDJEQW4zNkdMZkdFY2NNdWdLWS9aY0ZzQUFBQVFCKy9rc0VDUVE2QUJRQWJiSUxGUllSRWprQXNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQkl2RzdFU0R6NVpzQUJGV0xBSUx4dXhDQkUrV2JJQ0F4SVJFamw4c0FJdkdMUkFBbEFDQWwyd0NCQ3lEUUVLSzFnaDJCdjBXYkFDRUxJUUFRb3JXQ0hZRy9SWk1ERUJFU0VSTXhFR0JpTWlKemNXTXpJMUVTRVJJeEVCY1FHbDh3RzZwa1U2RHljN2ZQNWI4d1E2L2owQncvdUZzOEVSdnczQUFlZitTd1E2QUFBQ0FGSC82d1VlQmNRQUZnQWVBRjZ5Q0I4Z0VSSTVzQWdRc0JmUUFMQUFSVml3QUM4YnNRQWZQbG13QUVWWXNBZ3ZHN0VJRHo1WnNnMEFDQkVTT2JBTkw3QUFFTElRQVFvcldDSFlHL1Jac0FnUXNoY0JDaXRZSWRnYjlGbXdEUkN5R2dFS0sxZ2gyQnYwV1RBeEFTQUFFUlVVQWdRbklBQVJOU0VtSmlNaUJ3Y25OellCTWpZM0lSVVVGZ0p4QVVBQmJhRCs0Nm4rM1A2OUE5QUYzOHlubHpReEc2WUJLWmErRXYwdnVnWEUvb3ordG12Qi9zS3hBUUZnQVVtSjRQQTBFOFlOU3ZyODJyMGZ1YjhBQUFFQVcvL3JCRXNGc0FBYkFHdXlDeHdkRVJJNUFMQUFSVml3QWk4YnNRSWZQbG13QUVWWXNBc3ZHN0VMRHo1WnNBSVFzZ0FCQ2l0WUlkZ2I5Rm15QkFJQUVSSTVzaHNMQWhFU09YeXdHeThZc0FYUXNoQUxBaEVTT2JBTEVMSVRBUW9yV0NIWUcvUlpzQnNRc2hrSENpdFlJZGdiOUZrd01RRWhOU0VYQVJZV0ZSUUVJeUltSmpVekZCWXpNalkxTkNZakl6VUMvLzJTQTVFQi9vYkkydjdsNm92aWZ2eUhhSG1RbVpHTUJPVE1vLzVQR09yQ3hlaG52NE5mZ0g5a2xJV3NBQUFCQUYzK2RRUkdCRG9BR3dCY3Nnc2NIUkVTT1FDd0N5K3dBRVZZc0FJdkc3RUNHejVac2dBQkNpdFlJZGdiOUZteUJBQUNFUkk1c2hzTEFoRVNPYkFiTDdBRjBMSVFDd0lSRWptd0N4Q3lFd0VLSzFnaDJCdjBXYkFiRUxJWkJ3b3JXQ0hZRy9SWk1ERUJJVFVoRndFV0ZoVVVCQ01pSmlZMU14UVdNekkyTlRRbUl5TTFBdlQ5bXdPTUFmNkl5OWYrNnV1SjVIdnppV3g2bEpxVGp3TjJ4SnYrUXhucHY4THFhTCtCWUlXQWFaYURxLy8vQURUK1N3U0pCYkFBSmdDd1VnQUFKZ0hlcENrQUJ3R3ZBVFVBQVAvL0FDMytTUU9pQkRvQUpnRHJWUUFBSndIZS81My9lZ0FIQWE4QkMvLytBQUlBVWdBQUJJTUZzQUFMQUJRQVVMSUVGUllSRWptd0JCQ3dEdEFBc0FCRldMQUJMeHV4QVI4K1diQUFSVml3QXk4YnNRTVBQbG15QUFFREVSSTVzQUF2c0FNUXNnd0JDaXRZSWRnYjlGbXdBQkN5RFFFS0sxZ2gyQnYwV1RBeEFSRXpFU0VpSmlZMU5DUTNBUkVoSWdZVkZCWVhBNGI5L2RxZDdvQUJGZXNCTlA3WGZKS0xlUU9iQWhYNlVIVFVpTXo4QS8wdkFnYUpkWFNSQXdBQUFnQm9BQUFHc0FXd0FCZ0FJUUJnc2djaUl4RVNPYkFIRUxBWjBBQ3dBRVZZc0Fndkc3RUlIejVac0FCRldMQUFMeHV4QUE4K1diSUhDQUFSRWptd0J5K3dBQkN5Q2dFS0sxZ2gyQnYwV2JJUkNBQVJFam13R2RDd0J4Q3lHZ0VLSzFnaDJCdjBXYkFaRUxBaDBEQXhJU0lrTlRRa055RVJNeEV6TmpZM05pWW5NeFlXQndZR0J5VVJJU0lHRlJRV0Z3Snk3UDdpQVJYckFUVDhTMTVzQlFJaEhmVWZKZ0lFODh6K3NmN1dmWkNPZXYzVHp2b0RBaFg3R2dLS2ZVclpURjdNUmRUOEE4b0NCb3AwZFpJQkFBSUFYdi9uQm44R0dBQWZBQ3NBZzdJWkxDMFJFam13R1JDd0t0QUFzQUJGV0xBR0x4dXhCaUUrV2JBQVJWaXdBeThic1FNYlBsbXdBRVZZc0Jndkc3RVlEejVac0FCRldMQWNMeHV4SEE4K1diSUZBeGdSRWptd0dCQ3lDd0VLSzFnaDJCdjBXYklRQXhnUkVqbXlHZ01ZRVJJNXNBTVFzaUlCQ2l0WUlkZ2I5Rm13SEJDeUtBRUtLMWdoMkJ2MFdUQXhFeEFTTXpJWEVUTVJCaFl6TmpZM05pY3pGeFlIRGdJakJDY0dJeUlDSndFbUl5SUdGUlFXTXpJM0oxN2t3Nk5sOHdKT1EzU0NCQVJBN0JjdkF3Sjk0b3orLzFWcnk3bmdDd0t1UjROemYzcDJqVVVHQWc0QkNnRTJlQUpDKzA5UGFRSzNxYjdWV2JlRHFQbUZCTGV6QVFYZUFWRm93YzJlcW5KRUFBRUFQUC9uQmVNRnNBQXBBR095SXlvckVSSTVBTEFBUlZpd0NTOGJzUWtmUGxtd0FFVllzQ0l2RzdFaUR6NVpzZ0VxQ1JFU09iQUJMN0lBQVFvcldDSFlHL1Jac0FrUXNnY0JDaXRZSWRnYjlGbXlEd0FCRVJJNXNDSVFzaFVCQ2l0WUlkZ2I5Rm15R2lJSkVSSTVNREVUTlRNMk5qVTBJU0UxSVJZRUZSUUhGaE1WQmhZek5qWTNOaWN6RmhZSERnSWpCaVluTlRRbUkrYW5rNFQrOC82bEFXVDZBUWIvOWdVQlBETmxjZ1FFUVBVYUt3SUNldHFLcDdJSWZHY0NZczBCYlhYUnpRSFR6T1prUC83K1RUbEpBcmFqdnRWaXltZXArSVVFcDZvK2JuNEFBQUVBTC8vaUJQNEVPZ0FrQUdDeUR5VW1FUkk1QUxBQVJWaXdIUzhic1IwYlBsbXdBRVZZc0E0dkc3RU9EejVac2dJQkNpdFlJZGdiOUZteUJ3NGRFUkk1c2hZbEhSRVNPYkFXTDdJVUJ3b3JXQ0hZRy9SWnNCMFFzaHNCQ2l0WUlkZ2I5Rm15SWhRV0VSSTVNREVsQmpNMk5qYzJKek1XRmdjR0JpTUdKaWMxTkNNakp6TTJOVFFqSXljaEZoWVFCeFlYQXdFQ1RscGdBd1JCN0MwWUFRVHB2SjZnQ0tMbUFzSzV5LzhHQVJUTDVMQzVCdXRZQW85L2xxbUdnRG5NOGdOeGcwaC92UVNEbHNNQ3B2N0tTakNzQUFFQVNQNjZCRGNGc0FBaUFGK3lDeU1rRVJJNUFMQVhMN0FBUlZpd0NTOGJzUWtmUGxtd0FFVllzQnN2RzdFYkR6NVpzZ0VKR3hFU09iQUJMN0lBQVFvcldDSFlHL1Jac0FrUXNnY0JDaXRZSWRnYjlGbXlEd0FCRVJJNXNCc1FzaElCQ2l0WUlkZ2I5Rmt3TVJNbk16WTJOVFFoSVNjaEZnUVZGQWNXRXhVekZSUUdCeWMyTmpjakppYzFOQ1lqbHdIT2tZSCs2LzdxQXdFdTd3RUQ1T01EeldSYWd5UTRDS004QTM1MEFsekRBWE52NjhNRDNNbmZaa2YrOW9hc1k5aExUVGwzU1RHeGhIR0ZBQUVBZFA2cEJCb0VPZ0FpQUYreUJpTWtFUkk1QUxBWUw3QUFSVml3Q1M4YnNRa2JQbG13QUVWWXNCd3ZHN0VjRHo1WnNnRUpIQkVTT2JBQkw3SUFCd29yV0NIWUcvUlpzQWtRc2djQkNpdFlJZGdiOUZteUVBQUJFUkk1c0J3UXNoTUJDaXRZSWRnYjlGa3dNUk1uTXpJMU5DWWpJU2NoTWhjV0ZSUUhGaGNWTXhVVUJnY25OalkzSXlZbk5UUWpzd0hoMG10ai91RUVBU0RqZUdxdHNRSzdhRldESmpnR3Bpc0J3d0diczQ1S1U4RmtXWktlVHp6REpLeGwya2ROUFg1UEhvTlVwZ0FBQVFCQy8rc0hmd1d3QUNJQVlySUFJeVFSRWprQXNBQkZXTEFOTHh1eERSOCtXYkFBUlZpd0h5OGJzUjhQUGxtd0FFVllzQVl2RzdFR0R6NVpzQTBRc2dBQkNpdFlJZGdiOUZtd0JoQ3lDQUVLSzFnaDJCdjBXYkFmRUxJU0FRb3JXQ0hZRy9SWnNoY2ZEUkVTT1RBeEFTRURBZ0lHQnlNMU56WTJFeE1oRVJRV016STJOelluTXhZV0J3NENJeUltTlFRSC9tRVlEbUc1bkVvb2VtZ1BIQU9PVEQ5dWZ3UUVRZlljS1FJQ2YrQ013OFlFNC8zZy92YiswNG9DeWdNSjN3RWNBdC83dkZKa3RLZTcyR2JIWnFmN2hNRzlBQUVBUVAvckJsb0VPZ0FoQUdLeUlDSWpFUkk1QUxBQVJWaXdEQzhic1F3YlBsbXdBRVZZc0I0dkc3RWVEejVac0FCRldMQUZMeHV4QlE4K1diQU1FTElBQVFvcldDSFlHL1Jac0FVUXNnY0JDaXRZSWRnYjlGbXdIaEN5RVFFS0sxZ2gyQnYwV2JJV0hnd1JFamt3TVFFaEF3SUdCeU1uTnpZMk54TWhFUllXTXpJMk56WW5NeGNXQnc0Q0l5SW1Kd01YL3ZjVEVhaXRVd0l5VUVrS0ZBTGhBVkZGV0djRUJFRHNGakFEQW5ESGZjTEhBUU4wL3ByKzZmUUR5Z1VMcmVVQnp2MHJVbVNnbWJYSVVMRjhtK1o4dnJrQUFRQ1UvK2NIaGdXd0FCMEFaYklVSGg4UkVqa0FzQUJGV0xBQUx4dXhBQjgrV2JBQVJWaXdHUzhic1JrZlBsbXdBRVZZc0Jjdkc3RVhEejVac0FCRldMQVJMeHV4RVE4K1diSUVBUW9yV0NIWUcvUlpzZ2tBRnhFU09iSWNBQmNSRWptd0hDK3lGUUVLSzFnaDJCdjBXVEF4QVJFVUZqTTJOamMySnpNWEZnY09BaU1HSmljMUlSRWpFVE1SSVJFRkNrMCtjSDRFQkVIMkZ5OERBbnppanJ2RENmMkMvUHdDZmdXdys3eFdZQUt6cHJ2WVdiZURxUGVIQk1ERC8vMlhCYkQ5Z3dKOUFBQUJBSGYvNHdaY0JEb0FIQUI0c2hzZEhoRVNPUUN3QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQm92RzdFYUR6NVpzZ2NJQWhFU09YeXdCeThZdE5BSDRBY0NYYlJBQjFBSEFsMnlBQUVLSzFnaDJCdjBXYkFhRUxJTkFRb3JXQ0hZRy9SWnNoSUlBaEVTT1RBeEFTRVJJeEV6RVNFUk14RUdGak0yTmpjMkp6TVdGZ2NPQWlNRUF3TWEvbER6OHdHdzh3SlNSbDVrQXdSQTZ4b3JBZ0p3eDM3K2loTUJ1djVHQkRyK1F3RzkvUzFTWmdLbWthL09YYjlobStaOENBR0VBQUVBWGYvckJMc0Z4UUFoQUVleUFDSWpFUkk1QUxBQVJWaXdDUzhic1FrZlBsbXdBRVZZc0FBdkc3RUFEejVac0FrUXNnNEJDaXRZSWRnYjlGbXdBQkN5RlFFS0sxZ2gyQnYwV2JJYUFBa1JFamt3TVFVaUpBSW5FVFFTSkRNeUZ3Y21JeUlHRlJFVUZqTTJOamMySnpNWEZnY09BZ0s3clA3cm13S2FBUmV0MzRnL2hxS2R4Y1NlZllNREF6WDFKeE1CQW9IcUZad0JHSzBCRDY4QkhaNVp1RVRudlA4QXR1a0NoWFNWekxGWVdJdk5iZ0FBQVFCVi8rc0Q1d1JPQUI0QVJMSVRIeUFSRWprQXNBQkZXTEFUTHh1eEV4cytXYkFBUlZpd0N5OGJzUXNQUGxteUFBRUtLMWdoMkJ2MFdiSUZDeE1SRWptd0V4Q3lHQUVLSzFnaDJCdjBXVEF4SlRZMk56UW5NeFlIQmdZaklnQTFOVFEyTmpNeUZ3Y21JeUlHRlJVVUZnSmFVVVVDRStzZEFnVFN0ZWYrNG56aWtydGdMbU9LY291VXJ3SkRSM2RuakZLZ3NBRXgrQjZYK290Q3ZUcTlwQ0NhdndBQkFDSC81d1ZhQmJBQUdRQk5zZ1VhR3hFU09RQ3dBRVZZc0FJdkc3RUNIejVac0FCRldMQVdMeHV4Rmc4K1diQUNFTElBQVFvcldDSFlHL1Jac0FUUXNBWFFzQllRc2drQkNpdFlJZGdiOUZteURoWUNFUkk1TURFQklUVWhGU0VSRkJZek5qWTNOaWN6RmhZSERnSWpCaVluQWVQK1BnU0EvajVOUG5CK0JBUkI5UnNyQXdKOTRveTd3d2tFNDgzTi9JZFVZQUsybzd2WVlzcG5xUG1GQk1EREFBRUFSUC9qQk1zRU9nQVhBRTJ5QlJnWkVSSTVBTEFBUlZpd0FpOGJzUUliUGxtd0FFVllzQlV2RzdFVkR6NVpzQUlRc2dBQkNpdFlJZGdiOUZtd0JOQ3dCZEN3RlJDeUNRRUtLMWdoMkJ2MFdiSU9GUUlSRWprd01RRWhOU0VWSVJFVUZqTTJOamMySnpNV0ZnY0dCaU1FQXdHSi9yc0RpLzZ0VWtWZVl3TUVRT3NzR1FFRThjTCtpUk1EZDhQRC9mQlVaQUtFZEpPZWZINDN6UElJQVlRQUFBRUFnZi9yQlA4RnhRQW9BSE95SmlrcUVSSTVBTEFBUlZpd0ZpOGJzUllmUGxtd0FFVllzQXN2RzdFTER6NVpzZ01CQ2l0WUlkZ2I5Rm15SkJZTEVSSTVmTEFrTHhpeWN5UUJYYkpnSkFGZHNpVUJDaXRZSWRnYjlGbXlCZ01sRVJJNXNoQWxKQkVTT2JBV0VMSWVBUW9yV0NIWUcvUlpzaHNrSGhFU09UQXhBUlFXTXpJMk5UTVVCZ1FqSUNRMU5DVW1KalUwSkNFeUZoWVZJelFtSXlJR0ZSUWhNeFVqSWdZQmY3ZVpocTc4amY3OW9QN3ovcjhCRG5hQ0FTOEJDWmY2aS8yamZKQ3FBVE8ydjUyakFaaGxmb0ZlZ3I1cDZjVDlWekdtWXNYYmFicDNXWFZ6WTluSWNBQUFBZ0JuQkc4QzFnWFhBQVVBRFFBYkFMQUxMN0FIMExBSEw3QUIwTEFCTDdBTEVMQUUwTEFFTHpBeEFSTXpGUU1qQVRNVkZoY0hKalVCazNEVDVsMysxTEVEVEZDd0JKZ0JQeFgrd1FGVVgzdEdTRnErQVAvL0FFY0NDUUpVQXMwQUJnQVJBQUQvL3dCSEFna0NWQUxOQUFZQUVRQUEvLzhBblFKdEJKa0RNUUJHQVpmZ0FFek5RQUQvL3dDQkFtMEYwUU14QUVZQmw0VUFabVpBQVAvL0FBVCtQd09aQUFBQUp3QkRBQUgrL2dFR0FFTUJBQUFjQUxZQUFoQUNJQUlEWGJRUUFpQUNBbkcyZ0FLUUFxQUNBMTB3TVFBQkFHTUVJQUdXQmhvQUNBQWRzZ2dKQ2hFU09RQ3dBRVZZc0FBdkc3RUFJVDVac0FUUXNBUXZNREVCRndZSEZTTTFOallCR254YkE5VUJad1lhVFlXUW1JcGcwUUFBQVFBekJBQUJaUVlBQUFnQUhiSUlDUW9SRWprQXNBQkZXTEFFTHh1eEJDRStXYkFBMExBQUx6QXhFeWMyTnpVekZSUUdyM3hhQTlWcEJBQk5nNUtlaW1mUkFBQUJBREwrMWdGa0FNb0FDQUFZc2dnSkNoRVNPUUN3Q1MreUJBMEtLMWdoMkJ2MFdUQXhFeWMyTnpVekZRWUdyWHRWQTlvQlp2N1dUbitVazRWZDBBQUFBUUJLQkFBQmZBWUFBQWdBRmdDd0FFVllzQWd2RzdFSUlUNVpzQVRRc0FRdk1ERUJGUllYQnlZbU5UVUJId05hZkUxcEJnQ2VqNFpOUHRGbml2Ly9BR3dFSUFMdkJob0FKZ0ZzQ1FBQUJ3RnNBVmtBQVAvL0FFQUVBQUxBQmdBQUpnRnREUUFBQndGdEFWc0FBQUFDQURMK3dnS3FBUDhBQ1FBU0FDR3lDeE1VRVJJNXNBc1FzQVhRQUxBVEw3SUVEUW9yV0NIWUcvUlpzQTdRTURFVEp6WTNOVE1WQmdjR0Z5YzJOelV6RlJRR3NYOVZBOW9CTnpINGYxZ0UybWIrd2s2Sm5jbTZiSEprUVU2T2xzdTJZOTBBQVFCQUFBQUVIZ1d3QUFzQVN3Q3dBRVZZc0Fndkc3RUlIejVac0FCRldMQUdMeHV4QmhzK1diQUFSVml3Q2k4YnNRb2JQbG13QUVWWXNBSXZHN0VDRHo1WnNBb1FzZ0FCQ2l0WUlkZ2I5Rm13Qk5Dd0JkQXdNUUVoRVNNUklUVWhFVE1SSVFRZS9vanovbzBCYy9NQmVBTnkvSTREY3NnQmR2NktBQUVBWFA1Z0JEa0ZzQUFUQUh3QXNBQkZXTEFNTHh1eERCOCtXYkFBUlZpd0NpOGJzUW9iUGxtd0FFVllzQTR2RzdFT0d6NVpzQUJGV0xBQ0x4dXhBaEUrV2JBQVJWaXdBQzhic1FBUFBsbXdBRVZZc0FRdkc3RUVEejVac2dZQkNpdFlJZGdiOUZtd0RoQ3lDQUVLSzFnaDJCdjBXYkFKMExBUTBMQVIwTEFHRUxBUzBMQVQwREF4SVNFUkl4RWhOU0VSSVRVaEVUTVJJUlVoRVNFRU9mNkk4LzZPQVhMK2pnRnk4d0Y0L29nQmVQNWdBYURDQXJURUFYYitpc1Q5VEFBQUFRQ0lBZ1lDUkFQYkFBMEFGcklERGc4UkVqa0FzQU12c1FvS0sxallHOXhaTURFVE5EWXpNaFlWRlJRR0l5SW1KNGg1WkdkNGQyZGplUUlEQTE5NWVXSWxYbmR6WFFELy93Q0svL1VEYndFQUFDWUFFZ01BQUFjQUVnSE5BQUQvL3dDSy8vVUZLQUVBQUNZQUVnTUFBQ2NBRWdITkFBQUFCd0FTQTRZQUFBQUJBRWNDQ1FFaEFzMEFBd0FZc2dBRUJSRVNPUUN3QXkreUFBRUtLMWdoMkJ2MFdUQXhBU00xTXdFaDJ0b0NDY1FBQUFZQVN2L3NCMThGeEFBVkFDTUFKd0EwQUVFQVRnQzRzaWhQVUJFU09iQW9FTEFDMExBb0VMQWIwTEFvRUxBbTBMQW9FTEExMExBb0VMQkgwQUN3SkMrd0ppK3dBRVZZc0Jrdkc3RVpIejVac0FCRldMQVNMeHV4RWc4K1diQUQwTEFETDdJRkF4SVJFam13QjlDd0J5K3dFaEN3RHRDd0RpK3lFQklERVJJNXNCa1FzQ0RRc0NBdnNCSVFzaXNDQ2l0WUlkZ2I5Rm13QXhDeU1nSUtLMWdoMkJ2MFdiQXJFTEE0MExBeUVMQS8wTEFnRUxKRkFnb3JXQ0hZRy9SWnNCa1Fza3dDQ2l0WUlkZ2I5Rmt3TVFFME5qTXlGell6TWhZVkZSUUdJeUluQmlNaUpqVUJORFl6TWhZVkZSUUdJeUltTlFFbkFSY0RGQll6TWpZMU5UUW1JZ1lWQlJRV016STJOVFUwSmlJR0ZRRVVGak15TmpVMU5DWWlCaFVETDZ5SWxrNU9sWWF2cVlxWFRrNlVpcXo5RzZpRmlxdXJpSVdxQVhkOUFzZDlzRTgrUUVwT2ZFMEJ4MDgrUUVwT2ZFMzdUazAvUGt4TmZrc0JaWUtxYjIrbmpFZUJxbTV1cW9ZRGU0T3Fxb2xHZ3FtcGlmd2JTQVJ5U1B3NFJGZFNURXRHVkZSS1NrUlhVa3hMUmxSVVNnTHFSVlZWU1VoR1ZsZEpBQUFCQUd3QWlnSXpBNmtBQmdBUUFMQUZMN0lDQndVUkVqbXdBaTh3TVFFVEl3RTFBVE1CUFBlbi91QUJJS2NDR2Y1eEFZWVRBWVlBQUFFQVZBQ0tBaHNEcVFBR0FCQUFzQUF2c2dNSEFCRVNPYkFETHpBeEV3RVZBU01UQS9zQklQN2dwL2YzQTZuK2VoUCtlZ0dQQVpBQUFRQXRBRzBEY1FVbkFBTUFDUUN3QUMrd0FpOHdNVGNuQVJlcWZRTEhmVzFJQkhKSUFQLy9BRFVDa3dLK0JhZ0RCd0hZQUFBQ2t3QVRBTEFBUlZpd0NTOGJzUWtmUGxtd0RkQXdNUUFBQVFCcEFvd0Mvd1c2QUE4QVU3SUtFQkVSRWprQXNBQkZXTEFBTHh1eEFCOCtXYkFBUlZpd0F5OGJzUU1mUGxtd0FFVllzQTB2RzdFTkV6NVpzQUJGV0xBSEx4dXhCeE0rV2JJQkF3MFJFam13QXhDeUNnTUtLMWdoMkJ2MFdUQXhBUmMyTXlBUkVTTVJKaU1pQnhFakVRRUJJRXVRQVFQRkJYMWpKOFVGckhtSC9zbitDUUhhclZuOTBnTWdBQUVBWHdBQUJId0Z3d0FuQUk2eUh5Z3BFUkk1QUxBQVJWaXdGeThic1JjZlBsbXdBRVZZc0FZdkc3RUdEejVac2ljR0Z4RVNPYkFuTDdJTkFnb3JXQ0hZRy9SWnNBSFFzQVlRc2dVQkNpdFlJZGdiOUZtd0NkQ3dKeEN3RU5Dd0p4Q3dJOUN3SXkrMkR5TWZJeThqQTEyeUpRSUtLMWdoMkJ2MFdiQVIwTEFqRUxBVTBMQVhFTEllQVFvcldDSFlHL1Jac2hzakhoRVNPVEF4QVNFWEZBY2hCeUUxTXpZMk5TY2pOVE1uSXpVekp6UTJJQllWSXpRbUl5SUdGUmNoRlNFWElRTXkvdEFDUUFLNEFmdm5VaWNyQXFXZ0JKeVhCZm9CbHVqMWFWOVlad1lCUC83R0JRRTFBZFF1aDFYS3lnbHZXemVSZVpDaHl1cmF1RjlwZ21paGtIa0FCUUFoQUFBR1R3V3dBQnNBSHdBakFDWUFLUUM5c2dvcUt4RVNPYkFLRUxBZjBMQUtFTEFoMExBS0VMQW0wTEFLRUxBbzBBQ3dBRVZZc0Jvdkc3RWFIejVac0FCRldMQVhMeHV4Rng4K1diQUFSVml3REM4YnNRd1BQbG13QUVWWXNBa3ZHN0VKRHo1WnNnVUpHaEVTT2JBRkw3QUIwTEFCTDdJUEFRRmRzZ01EQ2l0WUlkZ2I5Rm13QlJDeUJ3TUtLMWdoMkJ2MFdiQWwwTEFLMExBTzBMQUZFTEFkMExBaDBMQVIwTEFERUxBZTBMQWkwTEFTMExBQkVMQVowTEFuMExBVjBMQUpFTEFrMExBWEVMQXAwREF4QVRNVkl4VXpGU01SSXdFaEVTTVJJelV6TlNNMU14RXpBU0VSTXdFek5TTUZNeWNqQVRVakFUTW5CWGZZMk5qWS9mN0ovcTM4MDlQVDAvd0JOUUZYKy81eGxQUCtaKzVmandLTUwvMmpLeXNEeGFDWG9QNFNBZTcrRWdIdW9KZWdBZXYrRlFIci9ONlhsNWYrZmtzQjEwUUFBZ0NZLyt3R09nV3dBQjRBSlFDaXNpRW1KeEVTT2JBaEVMQVEwQUN3QUVWWXNCVXZHN0VWSHo1WnNBQkZXTEFaTHh1eEdScytXYkFBUlZpd0hTOGJzUjBiUGxtd0FFVllzQW92RzdFS0R6NVpzQUJGV0xBVEx4dXhFdzgrV2JBZEVMSUFBUW9yV0NIWUcvUlpzQW9Rc2dVQkNpdFlJZGdiOUZtd0FCQ3dEZEN3RHRDeUlCTVZFUkk1c0NBdnNoRUJDaXRZSWRnYjlGbXdIUkN3SE5Dd0hDK3dGUkN5SkFFS0sxZ2gyQnYwV1RBeEFTTVJGQll6TWpjVkJpTWdFUkVqQmdZSEl4RWpFU0V5RmhjekVUTVJNd0V6TWhFMEp5TUdNNzh5UHlZdlUwMys2SGdjOU1xZStnR00xUDBZZGZLLysxK1M5T2FnQTRiOXBEMDRDcndYQVRVQ1phMjdBLzNsQmJERHN3RUgvdm4rclFFQTl3WUEvLzhBbFAvc0NEd0ZzQUFtQURZQUFBQUhBRmNFY2dBQUFBY0FOUUFBQjFNRnNBQWZBQ01BSndBckFDNEFNUUEwQU91eU1qVTJFUkk1c0RJUXNCN1FzRElRc0NMUXNESVFzQ2ZRc0RJUXNDclFzRElRc0M3UXNESVFzRERRQUxBQVJWaXdBaThic1FJZlBsbXdBRVZZc0I4dkc3RWZIejVac0FCRldMQWJMeHV4R3g4K1diQUFSVml3RUM4YnNSQVBQbG13QUVWWXNBMHZHN0VORHo1WnNna1FBaEVTT2JBSkw3QUYwTEFGTDdJUEJRRmRzQUhRc0FVUXNnY0RDaXRZSWRnYjlGbXdDUkN5Q2dNS0sxZ2gyQnYwV2JBdDBMQU8wTEF3MExBUzBMQUpFTEFsMExBcDBMQWgwTEFWMExBSEVMQW0wTEFxMExBaTBMQVcwTEFCRUxBZDBMQVowTEFRRUxBdjBMQXMwTEFmRUxBeTBMQUJFTEEwMERBeEFTRVRNd016RlNNSE14VWhBeU1ESVFNakF5RTFNeWNqTlRNRE14TWhFek1CTXpjakJUTTNJd1V6SnlNQk55TUZOeU1CQnpNRW1BRXhWL3RpbXI4bDVQNzNmdk9RL3ZLUzhuLysvZDRsdVpSaSsxZ0JOR3pVL2M2Zkt1b0REcDhoNmY2bXVpcGxBYkFtVnYweUwxVUJwd2dRQkFjQnFmNVhvS0tnL2RzQ0pmM2JBaVdnb3FBQnFmNVhBYW45RmFLaW9xS2kvZ0MrdWJrQ0FSOEFBZ0I4QUFBR0VBUTZBQTBBR3dCcnNnZ2NIUkVTT2JBSUVMQVEwQUN3QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFXTHh1eEZocytXYkFBUlZpd0N5OGJzUXNQUGxtd0FFVllzQTR2RzdFT0R6NVpzaEVCQ2l0WUlkZ2I5Rm13QUJDeUNRRUtLMWdoMkJ2MFdiSUZFUWtSRWpteUVBa1JFUkk1TURFQk1oWVhFU01STkNZaklSRWpFUUVSTXhFaE1qWTNFVE1SQmdZakF3eTdyZ0x6V21uK3J2TUJtZk1CVUdwWkFmUUI3OXdFT3NETC9yVUJRbTFqL0lvRU92dkdBdGI5N1dGb0FxNzlWN3pWQUFFQVh2L3RCREFGd3dBakFJcXlGU1FsRVJJNUFMQUFSVml3Rmk4YnNSWWZQbG13QUVWWXNBa3ZHN0VKRHo1WnNpTVdDUkVTT2JBakw3SUFBZ29yV0NIWUcvUlpzQWtRc2dRQkNpdFlJZGdiOUZtd0FCQ3dETkN3SXhDd0R0Q3dJeEN3RTlDd0V5KzJEeE1mRXk4VEExMnlFQUlLSzFnaDJCdjBXYkFXRUxJYkFRb3JXQ0hZRy9SWnNCTVFzQjdRc0JBUXNDRFFNREVCSVJZV016STNGd1lqSUFBREl6VXpOU00xTXpZQU16SVhCeVlqSWdZSElSVWhGU0VEYXY2Y0JxT1libDhjZUlEL0FQN2FDS3lzckswTkFTejlhb1VjWm1XWG9na0JZLzZjQVdRQ0Q2NnNJY3dkQVNBQkFvMkFqZjhCR3gvTklxeWtqWUFBQUFRQUlRQUFCZFFGc0FBYUFCOEFKQUFwQU9PeURDb3JFUkk1c0F3UXNCelFzQXdRc0NQUXNBd1FzQ2pRQUxBQVJWaXdDeThic1FzZlBsbXdBRVZZc0FFdkc3RUJEejVac0FzUXNpUUJDaXRZSWRnYjlGbXdJTkN3SUM5QUV3QWdFQ0FnSURBZ1FDQlFJR0FnY0NDQUlBbGRzQjdRc0I0dnRyQWV3QjdRSGdOZFFBc0FIaEFlSUI0d0hrQWVCVjJ5SmdNS0sxZ2gyQnYwV2JBbjBMQW5MMEFQTUNkQUoxQW5ZQ2R3SjRBbmtDY0hYYklBQVFvcldDSFlHL1Jac0NZUXNBUFFzQjRRc0FiUXNDQVFzQS9Rc2hJRENpdFlJZGdiOUZtd0hOQ3dIZEN3QjlDd0lCQ3dDdEN3SGhDd0ZOQ3dKaEN3RjlBd01RRVJJeEVqTlRNMUl6VXpFU0V5QkJjekZTTVhCek1WSXdZR0l3RW5JUlVoSlNFbUp5RUJJUlVoTWdIVy9iaTR1TGdDTGEwQkFUemt2UUlCdk9FMityMEJGUVA5dmdKRC9iMEI4RVp5L3NnQjlQNE1BVEY3QWgzOTR3TWZvRWlnQVFtSWdhQW1JcUI5aFFIQ0tFam9Pd0wrT3pjQUFRQW9BQUFFREFXd0FCb0FiYklXR3h3UkVqa0FzQUJGV0xBWkx4dXhHUjgrV2JBQVJWaXdEQzhic1F3UFBsbXdHUkN5R0FFS0sxZ2gyQnYwV2JBQjBMQVpFTEFVMExBVUw3QUQwTEFVRUxJVEJ3b3JXQ0hZRy9SWnNBYlFzQlFRc0E3UXNBNHZzZ2tIQ2l0WUlkZ2I5Rm15RFFrT0VSSTVNREVCSXhZWE13Y2pCZ1lIQVJVaEFTY3pNalkzSVRjaEppTWhOeUVEMmRvekQ4b3lseGJjeVFIUy91SCtBd0g5Y0lNVy9lWXpBZU14MlA3ek5nT3VCUGxMWmJhbHJ4SDkzdzBDVVpsZFRMYWJ6QUFBQVFBaC8rd0VVUVd3QUI0QWtiSWJIeUFSRWprQXNBQkZXTEFSTHh1eEVSOCtXYkFBUlZpd0JTOGJzUVVQUGxteUV4RUZFUkk1c0JNdnNCZlFzQmN2c2dBWEFWMnlHQUVLSzFnaDJCdjBXYkFaMExBSTBMQUowTEFYRUxBVzBMQUwwTEFLMExBVEVMSVVBUW9yV0NIWUcvUlpzQlhRc0F6UXNBM1FzQk1Rc0JMUXNBL1FzQTdRc0FVUXNob0JDaXRZSWRnYjlGbXlIZ1VSRVJJNU1ERUJGUVlDQkNNaUp4RUhOVGMxQnpVM0VUTVZOeFVIRlRjVkJ4RTJOalUxQkZFQ2x2N3RzbXVNM056YzNQemg0ZUhocXJJQy8xblMvc09yRkFKZFY4ZFhpVmZJVndFNzExcklXb2xheUZuOSt3TDgrRTBBQUFFQVR3QUFCUThFT2dBWEFGeXlBQmdaRVJJNUFMQUFSVml3Rnk4YnNSY2JQbG13QUVWWXNCQXZHN0VRRHo1WnNBQkZXTEFMTHh1eEN3OCtXYkFBUlZpd0JTOGJzUVVQUGxteUZRc1hFUkk1c0JVdnNBRFFzQlVRc2d3QkNpdFlJZGdiOUZtd0NkQXdNUUVXQUJNVkl6VW1KaWNSSXhFR0JoVVZJelVTQURjMU13TW80QUVEQlBNQmdYTHpjWUx6QXdFRTMvTURhaW4ra3Y3c3Y3akY3eXI5YWdLVkt2UEhzYm9CRkFGd0s5RUFBZ0FvQUFBRk13V3dBQllBSHdCNHNoZ2dJUkVTT2JBWUVMQU4wQUN3QUVWWXNBd3ZHN0VNSHo1WnNBQkZXTEFDTHh1eEFnOCtXYklHQWd3UkVqbXdCaSt5QlFFS0sxZ2gyQnYwV2JBQjBMQUdFTEFLMExBS0w3SVBDZ0Zkc2drQkNpdFlJZGdiOUZtd0ZOQ3dCaEN3RmRDd0NoQ3dGOUN3REJDeUh3RUtLMWdoMkJ2MFdUQXhKU0VWSXpVak5UTTFJelV6RVNFeUJCVVVCQWNoRlNFQklUSTJOVFFtSnlFRE0vNisvTTNOemMwQ0xmRUJJUDd1OVA3RUFVTCt2Z0V0aUpDTmZQN0U1K2ZueTJ2TEFzajcwTlR4QTJzQk5uNTljSTREQUFRQWNQL3NCWWtGeFFBWkFDWUFOQUE0QUpTeUdqazZFUkk1c0JvUXNBRFFzQm9Rc0NmUXNCb1FzRGZRQUxBMUw3QTNMN0FBUlZpd0NTOGJzUWtmUGxtd0FFVllzQ1F2RzdFa0R6NVpzQWtRc0FQUXNBTXZzZzBKQXhFU09iQUpFTElRQWdvcldDSFlHL1Jac0FNUXNoWUNDaXRZSWRnYjlGbXlHUU1KRVJJNXNDUVFzQjNRc0IwdnNDUVFzaW9DQ2l0WUlkZ2I5Rm13SFJDeU1RSUtLMWdoMkJ2MFdUQXhBUlFHSUNZMU5UUTJNeklXRlNNMEppTWlCaFVWRkJZeU5qVUJORFl6TWhZVkZSUUdJQ1kxRnhRV016STJOVFUwSmlNaUJoVUZKd0VYQXJHZi93Q2lub0tBb2FwQk5qUkNRMnBBQVJpdWg0aXRwLzdvcTZwUFBrQkpUajArVGYzN2ZnTEhmZ1FsYzVLbmlrZUNxNVJ6TlVCVVNrcEZWVU14L1VDR3BxYU5SNEtwcDRrRlJGZFRTMHRHVkZSSzlFZ0Vja2dBQWdCTS8rc0RrQVg1QUJjQUlRQmFzZ0VpSXhFU09iQUJFTEFZMEFDd0RDK3dBRVZZc0FBdkc3RUFEejVac2dZTUFCRVNPYkFHTDdJRkJ3b3JXQ0hZRy9SWnNCUFFzQUFRc2hjQkNpdFlJZGdiOUZtd0JoQ3dHTkN3REJDeUh3RUtLMWdoMkJ2MFdUQXhCU0ltTlFZak5USTNFVFkyTXpJV0ZSVVVBZ2NWRkJZekF6WTJOVFUwSmlNaUJ3TGI0ZTFoWUdGZ0E3S2FpS3pYc21oczFFMVhLeUJXQXhYcjVSTzdHQUhwdjlhMG15YXQvcWxuVFk1NkFrUkx6R1lwUDBDeUFBQUVBSkFBQUFmQ0JjQUFBd0FQQUIwQUp3Q21zaDRvS1JFU09iQWVFTEFCMExBZUVMQUUwTEFlRUxBUTBBQ3dBRVZZc0NZdkc3RW1IejVac0FCRldMQWtMeHV4SkI4K1diQUFSVml3Qmk4YnNRWWZQbG13QUVWWXNDRXZHN0VoRHo1WnNBQkZXTEFmTHh1eEh3OCtXYkFHRUxBTjBMQU5MN0FDMExBQ0w3SUFBZ0Zkc2dFQ0NpdFlJZGdiOUZtd0RSQ3lFd0lLSzFnaDJCdjBXYkFHRUxJYUFnb3JXQ0hZRy9SWnNpQWtJUkVTT2JJbEh5WVJFamt3TVFFaE5TRUJORFlnRmhVVkZBWWdKalVYRkJZek1qWTFOVFFtSXlJR0ZRRWhBUkVqRVNFQkVUTUhsLzJmQW1IOWRyNEJPTCs2L3NLOXIxeFJUMXRjVUU5Yy9zZis5UDROOUFFTEFmYnlBWnlWQWkrZndjQ21UcHpDd3FJR1lHeHNZMUZmYlcxaSs2TUVDdnYyQmJENzh3UU5BQUFDQUcwRGxBUlhCYkFBREFBVUFHMEFzQUJGV0xBR0x4dXhCaDgrV2JBQVJWaXdDUzhic1FrZlBsbXdBRVZZc0JNdkc3RVRIejVac2dFVkJoRVNPYkFCTDdJQUNRRVJFam15QXdFR0VSSTVzQVRRc2dnQkNSRVNPYkFCRUxBTDBMQUdFTEVOQ2l0WTJCdmNXYkFCRUxBUDBMQU5FTEFSMExBUzBEQXhBUU1qQXhFakVUTVRFek1SSXdFakVTTVJJelVoQStoOFBueHZpWUdGaFcvK0VZcDFqUUdNQlFuK2l3RjAvb3dDSFA2REFYMzk1QUc5L2tVQnUxOEFBQUlBbHYvc0JKRUVUZ0FWQUJ3QVlySUNIUjRSRWptd0FoQ3dGdEFBc0FCRldMQUtMeHV4Q2hzK1diQUFSVml3QWk4YnNRSVBQbG15R1FvQ0VSSTVzQmt2c2c4S0NpdFlJZGdiOUZtd0FoQ3lFd3dLSzFnaDJCdjBXYklWQ2dJUkVqbXdDaEN5RmdvS0sxZ2gyQnYwV1RBeEpRWWpJaVlDTlRRU05qTXlGaFlYRlNFUkZqTXlOd0VpQnhFaEVTWUVGTGU3a2ZTSGtQaUVoZU9FQS8wQWQ1ckVyUDZRbDNvQ0hITmVjcDBCQVpPUEFRT2ZpL09RUHY2NGJub0RLbnIrNndFZWNmLy9BRm4vOVFYTEJaa0FKd0hWLzlrQ2hnQW5BWHdBK3dBQUFRY0IzQU1oQUFBQUVBQ3dBRVZZc0FZdkc3RUdIejVaTURILy93QlUvL1VHYUFXMEFDY0Ixd0FkQXBRQUp3RjhBYWdBQUFFSEFkd0R2Z0FBQUJBQXNBQkZXTEFOTHh1eERSOCtXVEF4Ly84QVcvLzFCbHdGcUFBbkFka0FEQUtUQUNjQmZBR01BQUFCQndIY0E3SUFBQUFRQUxBQVJWaXdBUzhic1FFZlBsa3dNZi8vQUZqLzlRWWFCYU1BSndIYkFDSUNqZ0FuQVh3Qk13QUFBUWNCM0FOd0FBQUFFQUN3QUVWWXNBVXZHN0VGSHo1Wk1ERUFBZ0JpLytzRVF3WDFBQmtBSmdCYnNoTW5LQkVTT2JBVEVMQWcwQUN3Q3krd0FFVllzQk12RzdFVER6NVpzZ0FMRXhFU09iQUFMN0lDQ3hNUkVqbXdDeEN5QlFFS0sxZ2gyQnYwV2JBQUVMSWFBUW9yV0NIWUcvUlpzQk1Rc2lBQkNpdFlJZGdiOUZrd01RRXlGeVltSXlJSEp6YzJNeUFBRVJVVUFnWWpJZ0ExTlRRU0Z5SUdGUlFXTXpJMk5UVW1KZ0k0cm5jYXhZUjhpeDA4Ym84QkRRRW5ldU9VNC83ei92UjdoWVI2ZVlVV2l3UUVmY0xsTmJjWkxQNU8vbkkxd2Y3VHB3RWs5dzNmQVJMQ3A2U2FzTkRGVlV4ZkFBRUFwdjhiQlBRRnNBQUhBQ2NBc0FRdnNBQkZXTEFHTHh1eEJoOCtXYkFFRUxBQjBMQUdFTElDQVFvcldDSFlHL1JaTURFRkl4RWhFU01SSVFUMDlQMlo4d1JPNVFYVStpd0dsUUFCQUVEKzh3VEJCYkFBREFBMUFMQURMN0FBUlZpd0NDOGJzUWdmUGxtd0F4Q3lBZ0VLSzFnaDJCdjBXYkFGMExBSUVMSUtBUW9yV0NIWUcvUlpzQWZRTURFQkFTRVZJVFVCQVRVaEZTRUJBNC85N2dORSszOENULzJ4QkVmODlnSVNBa1A5YzhPWEFzZ0N4cGpEL1hNQUFRQ2VBbTBEN3dNeEFBTUFFUUN3QWkreUFRRUtLMWdoMkJ2MFdUQXhBU0UxSVFQdi9LOERVUUp0eEFBQkFEc0FBQVNTQmJBQUNBQThzZ0FKQ2hFU09RQ3dCeSt3QUVWWXNBRXZHN0VCSHo1WnNBQkZXTEFETHh1eEF3OCtXYklBQVFNUkVqbXdCeEN5QmdFS0sxZ2gyQnYwV1RBeEFRRXpBU01ESXpVaEFrRUJlTm4rRjhYWTBRRm5BU3NFaGZwUUFrSEZBQU1BWHYvc0I5OEVUZ0FhQUNvQU9RQnlzZ2M2T3hFU09iQUhFTEFpMExBSEVMQXkwQUN3QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFKTHh1eENROCtXYkFFRUxBVzBMQVdMN0lIRmdRUkVqbXdFdEN3RWkreUZCWUVFUkk1c0JZUXNoNEJDaXRZSWRnYjlGbXdCQkN5SndFS0sxZ2gyQnYwV2JBdTBMQWVFTEEzMERBeEFSUUdCaU1pSmljQ0lTSW1KalUxTkJJMk15QVRFaUV5RmhZWEJ6UW1JeUlIQmdjVkZoY1dNekkyTlFVVUZqTXlOamMzTlNZbkppTWlCZ2ZmZ09hUWplbFZxdjdmaitXQmdlU09BU1NwcVFFa2p1U0JBZStTZXFSdUtBOFBMbXVmZVpYNlhaSjdhYXdyQnc4b2JxUjVrZ0lSbVAyUW82Zit0bzcvbVJXWUFRQ1AvcmtCUjQvOWx3U2F4c2xLUWlSRlZjUERvZ1dkdzdPUUdpUkNTc25EQUFBQi82LytTd0tvQmhVQUZRQTlzZ0lXRnhFU09RQ3dBRVZZc0E0dkc3RU9JVDVac0FCRldMQURMeHV4QXhFK1diSUlBUW9yV0NIWUcvUlpzQTRRc2hNQkNpdFlJZGdiOUZrd01RVVVCaU1pSnpjV016STNFVFEyTXpJWEJ5WWpJaFVCa0xhcVFqOFNMQ1dLQXNDeVAxa1pLaktqVDdDMkU3ME5uUVQwczhNVnVRdTRBQUFDQUdVQkFRUVZBL29BRlFBckFIaXlFQ3d0RVJJNXNCQVFzQnpRQUxBWkw3QUQwTEFETDdBSTBMQUlMN0FERUxBSzBMQUlFTElOQVFvcldDSFlHL1Jac0FNUXNoSUJDaXRZSWRnYjlGbXdEUkN3RmRDd0dSQ3dIdEN3SGkrd0dSQ3dJTkN3SGhDeUl3RUtLMWdoMkJ2MFdiQVpFTElvQVFvcldDSFlHL1Jac0NNUXNDdlFNREVUTmpZek5oY1hGak15TnhVR0l5SW5KeVlISWdZSEZUWTJNellYRnhZek1qY1ZCaU1pSnljbUJ5SUdCMlV3aEVKU1RKeEdVWVJsWm45UlJwaFBWRUtITURDQVFsUlBtRVpSaDJWbWcxRkduRXhTUW9Rd0E0NHlPQUlpVGlCKzJXb2dUQ1FDUWp6TE1qZ0NKRXdnZnRscUlFNGlBa0k4QUFFQWtRQ0FBKzhFd3dBVEFEY0FzQk12c2dBQkNpdFlJZGdiOUZtd0JOQ3dFeEN3QjlDd0V4Q3dEOUN3RHkreUVBRUtLMWdoMkJ2MFdiQUkwTEFQRUxBTDBEQXhBU0VISnpjak5TRTNJVFVoTnhjSE14VWhCeUVENy8zaWdHMWRzQUVoZnY1aEFoQ0dibU85L3RGOUFhd0JaT1ErcHNuZnl1MCtyOHJmLy84QVBBQVRBNDBFYXdCbkFDQUFBQUNMUUFBNW1nQUhBWmYvbnYybS8vOEFnQUFUQStBRWF3Qm5BQ0lBQUFDTFFBQTVtZ0FIQVpmLzR2Mm1BQUlBSkFBQUErc0ZzQUFGQUFrQU9MSUdDZ3NSRWptd0JoQ3dCTkFBc0FCRldMQUFMeHV4QUI4K1diQUFSVml3QXk4YnNRTVBQbG15QmdBREVSSTVzZ2dBQXhFU09UQXhBVE1CQVNNQkFRTVRFd0dreEFHRC9vREYvbjRCNGUzeTdBV3cvU2Y5S1FMWEFkYitLdjRwQWRjQS8vOEFvUUNyQWJ3RkJ3QW5BQklBR2dDMkFRY0FFZ0FhQkFjQUNRQ3dBQyt3RWR3d01RQUFBZ0JqQW44Q1BnUTVBQU1BQndBcXNnQUlDUkVTT2JBRjBBQ3dBaSt3QUVWWXNBWXZHN0VHR3o1WnNnQUlBaEVTT2JBQUw3QUUwREF4QVNNUk13RWpFVE1CQUoyZEFUNmRuUUovQWJyK1JnRzZBQUVBUmY5bkFWb0JCZ0FJQUF3QXNBUXZzQURRc0FBdk1ERVhKelkzTlRNVkJnYkZnRWtEeVFGVG1VMXplMlJQWGJyLy93QXRBQUFGR2dZVkFDWUFTZ0FBQUFjQVNnSkVBQUFBQWdBWUFBQUVGd1lWQUJjQUd3QnpzZ2tjSFJFU09iQUpFTEFaMEFDd0FFVllzQWt2RzdFSklUNVpzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdHaThic1JvYlBsbXdBRVZZc0Jjdkc3RVhEejVac0FCRldMQVpMeHV4R1E4K1diQUVFTEFUMExJV0FRb3JXQ0hZRy9SWnNBSFFzQWtRc2c4QkNpdFlJZGdiOUZrd01UTVJJelV6TlQ0Q016SVdGd2NtSXlJR0ZSVXpGU01SSVNNUk03MmxwUUZxd29oUWswOGxpbkp2Wk5YVkFtZno4d09HdEVwL3Rsd2lHc2t3WVdGRXRQeDZCRG9BQVFBdEFBQUVMQVlWQUJZQVk3SVNGeGdSRWprQXNBQkZXTEFTTHh1eEVpRStXYkFBUlZpd0RpOGJzUTRiUGxtd0FFVllzQWt2RzdFSkR6NVpzQUJGV0xBV0x4dXhGZzgrV2JBU0VMSUNBUW9yV0NIWUcvUlpzQTRRc0FYUXNBNFFzZ3NCQ2l0WUlkZ2I5Rm13Q05Bd01RRW1JeUlWRlRNVkl4RWpFU00xTXpVMk5qTXlCUkVqQXpsbVNzVGMzUE9scFFIWHhIb0JSUE1GUHc2NFc3VDhlZ09HdEdHM3d6RDZHd0FDQUMwQUFBYVRCaFVBS0FBc0FMV3lGQzB1RVJJNXNCUVFzQ3JRQUxBQVJWaXdDQzhic1FnaFBsbXdBRVZZc0JZdkc3RVdJVDVac0FCRldMQXJMeHV4S3hzK1diQUFSVml3SVM4YnNTRWJQbG13QUVWWXNCRXZHN0VSR3o1WnNBQkZXTEFFTHh1eEJCcytXYkFBUlZpd0tDOGJzU2dQUGxtd0FFVllzQ1V2RzdFbER6NVpzQUJGV0xBcUx4dXhLZzgrV2JBaEVMSWlBUW9yV0NIWUcvUlpzQ2JRc0FIUXNBZ1FzZzBCQ2l0WUlkZ2I5Rm13RmhDeUhBRUtLMWdoMkJ2MFdUQXhNeEVqTlRNMU5EWXpNaGNISmlNaUZSVWhOVDRDTXpJV0Z3Y21JeUlHRlJVekZTTVJJeEVoRVNFakVUUFNwYVhJdEVCSUJpZzFyZ0YwQVdyQ2lGQ1RUeWFJYzI5azFkWHovb3dFenZQekE0YTBZN1RFRXI0SXMyQktmN1pjSWhySk1HRmhSTFQ4ZWdPRy9Ib0VPZ0FCQUMwQUFBYVRCaFVBSndDbHNoTW9LUkVTT1FDd0FFVllzQlV2RzdFVklUNVpzQUJGV0xBSUx4dXhDQ0UrV2JBQVJWaXdCQzhic1FRYlBsbXdBRVZZc0JBdkc3RVFHejVac0FCRldMQWZMeHV4SHhzK1diQUFSVml3Snk4YnNTY1BQbG13QUVWWXNDUXZHN0VrRHo1WnNBQkZXTEFaTHh1eEdROCtXYkFFRUxJQkFRb3JXQ0hZRy9SWnNBZ1FzZzBCQ2l0WUlkZ2I5Rm13RlJDeUhBRUtLMWdoMkJ2MFdiQUJFTEFtMExBaTBEQXhNeEVqTlRNMU5EWXpNaGNISmlNaUZSVWhOVFkyTXpJRkVTTVJKaU1pRlJVekZTTVJJeEVoRWRLbHBjaTBRRWdHS0RXdUFYUUIxOFI2QVVUelprckUzTnp6L293RGhyUmp0TVFTdmdpellHRzN3ekQ2R3dVL0RyaGJ0UHg2QTRiOGVnQUJBQzMvN0FUUkJoVUFKQUNGc2hNbEpoRVNPUUN3QUVWWXNBOHZHN0VQR3o1WnNBQkZXTEFhTHh1eEdocytXYkFBUlZpd0l5OGJzU01iUGxtd0FFVllzQW92RzdFS0R6NVpzQ01Rc2dBSENpdFlJZGdiOUZtd0NoQ3lCUUVLSzFnaDJCdjBXYkFBRUxBTjBMQU8wTEFqRUxJZkFRb3JXQ0hZRy9SWnNoTUJDaXRZSWRnYjlGbXdEaEN3R05Dd0dkQXdNUUVqRVJRV016STNGUVlqSUJFUkl6VXpOU1lqSWhVUkl4RWpOVE0xTkRZek1oWVhFVE1FeTc4eFB5WXZVMDMrNkxLeVJXeWo4Nldsd3JCbDhYSy9BNGI5cEQ0M0Nyd1hBVFVDWmJUNElMbjdad09HdEdLMnd6Z3gvbzRBQVFCTC8rd0dnQVlZQUV3QXA3SkdUVTRSRWprQXNBQkZXTEJITHh1eFJ5RStXYkFBUlZpd1FDOGJzVUFiUGxtd0FFVllzQTh2RzdFUEd6NVpzQUJGV0xCTEx4dXhTeHMrV2JBQVJWaXdDUzhic1FrUFBsbXdBRVZZc0N3dkc3RXNEejVac0VzUXNnQUhDaXRZSWRnYjlGbXdDUkN5QkFFS0sxZ2gyQnYwV2JBQUVMQU4wTEFPMExCSEVMSVVCd29yV0NIWUcvUlpzRUFRc2lBSENpdFlJZGdiOUZtd0xCQ3lOQWNLSzFnaDJCdjBXVEF4QVNNUkZETXlOeFVHSXlJbUp4RWpOVE0xTkNZaklnWVZGQjRDRlNNMEppTWlCaFVVRmdRV0ZoVVVCaU1pSmlZMU14WVdNekkyTlRRbUppY21OVFEyTXpJWEpqVTBOak15RmhVVk13WjV2M0VtTDFOTmg1QUJyS3hnV0U5WUhTRWM5R2hXVUdWZUFSNmpUL0xFaGRCMDdBVjRZMkJrYS9oVHR1eTJXMDB0MmE3SjNyOERodjIzaUFxOEY2cWlBazYwV0dKcFZFVTZhV1o1VFVaZFNqNDRQajlYZWxlU3RXQ29ZVlpkU1R0QlJEUW9XS2VNdkJkc1Q0R2x5c1ZQQUJZQVdmNXlCK3dGcmdBTkFCb0FLQUEzQUQwQVF3QkpBRThBVmdCYUFGNEFZZ0JtQUdvQWJnQjJBSG9BZmdDQ0FJWUFpZ0NPQWNDeUVJK1FFUkk1c0JBUXNBRFFzQkFRc0J2UXNCQVFzRERRc0JBUXNEelFzQkFRc0Q3UXNCQVFzRWJRc0JBUXNFclFzQkFRc0ZEUXNCQVFzRmZRc0JBUXNGdlFzQkFRc0dIUXNCQVFzR1BRc0JBUXNHZlFzQkFRc0czUXNCQVFzSERRc0JBUXNIZlFzQkFRc0h2UXNCQVFzSC9Rc0JBUXNJVFFzQkFRc0lqUXNCQVFzSXpRQUxBOUw3QUFSVml3Umk4YnNVWWZQbG15ZlVRREs3SjhlUU1yc25pQkF5dXlnRGtESzdJS1JqMFJFam13Q2krd0E5Q3dBeSt3RHRDd0RpK3dDaEN3RDlDd0R5K3lidzRQRVJJNWZMQnZMeGl5VUFzS0sxZ2gyQnYwV2JJVlVHOFJFam13Q2hDeUhnc0tLMWdoMkJ2MFdiQURFTElsQ3dvcldDSFlHL1Jac0E4UXNDblFzQ2t2c0E0UXNDN1FzQzR2c2pRTENpdFlJZGdiOUZtd1BSQ3dhOUN3WjlDd1k5Q3dQdEN5UHd3S0sxZ2gyQnYwV2JCbDBMQnAwTEJ0MExBODBMQTVFTEJCMExCR0VMSkhEQW9yV0NIWUcvUlpzRnZRc0ZmUXNFclFzRVlRc0dEUXNGelFzRmpRc0V2UXNFUVFzRTdRc0E0UXNsRUxDaXRZSWRnYjlGbXdSeEN3WDlDd0R4Q3lkZ3NLSzFnaDJCdjBXYkI0RUxDRTBMQjVFTENGMExCOEVMQ0kwTEI5RUxDSjBMQ0FFTENNMExDQkVMQ04wREF4QVJRR0l5SW1KelUwTmpNeUZoY1RFVE15RmhVVUJ4WVdGUlFqQVRRbUl5SUdGUlVVRmpNeU5qVUJNeEVVQmlNaUpqVXpGRE15TmpVQkVUTVZNeFVoTlRNMU14RUJFU0VWSXhVbE5TRVJJelVCRlRNeU5UUW5FelVoRlNFMUlSVWhOU0VWQVRVaEZTRTFJUlVoTlNFVkV6TXlOVFFtSXlNQkl6VXpOU00xTXhFak5UTWxJelV6TlNNMU14RWpOVE1ETjRGa1pvQUNmbWhsZ0FKRHZHSnlWREkwMFA2UFNrRkFTa3BDUUVrRHVseHBVbGh0WFdncE52bkVjY1FGS01kditHMEJOY1FGN0FFMmIveGNmbWRpeXdFVy9Wc0JGZjFjQVJRQ0NnRVcvVnNCRmYxY0FSUzhYWFk2UEYzODhYRnhjWEZ4Y1FjaWIyOXZiMjl2QWRSaWVYaGVkVjk4ZUY3K3N3SWxTVTFVSUExR0xac0JTRVZPVGtWd1JVNU9SUUZQL29aT1hWRlRXellzL01rQk84cHhjY3IreFFZZkFSMTBxYWwwL3VPcC9MYXBVMUlFQTBwMGRIUjBkSFQ1T0hGeGNYRnhjUVBFVUNrZS90UDhmdnI4RmZsKy9INzYvQlg1QUFVQVhQM1ZCOWNJY3dBREFCd0FJQUFrQUNnQVRBQ3dJUyt3SlMrd0FOQ3dBQyt3SVJDd0F0Q3dBaSt5SUFJQUVSSTVzQ0F2c0IzUXNCMHZzQVRRc0FRdnNnMEFBaEVTT2JBTkw3QVUwTEFVTDdJSEJCUVJFam15R1JRRUVSSTVNREVKQXdVME5qYzJOalUwSmlNaUJnY3pOall6TWhZVkZBY0dCaFVYSXhVekF6TVZJd016RlNNRUdBTy8vRUg4UkFRUEhpUktYS2VWa0tBQ3l3STZLems0WFZzdnlzcktTd1FFQWdRRUJsTDhNZnd4QTgveE9qb1lKNGRLZ0plTGZ6TTBRRFJmUEVGY1RGdXEvVXdFQ3A0RUFBRUFPZ0FBQStvRnNBQUdBRElBc0FCRldMQUZMeHV4QlI4K1diQUFSVml3QVM4YnNRRVBQbG13QlJDeUF3RUtLMWdoMkJ2MFdiSUFBd1VSRWprd01RRUJJd0VoTlNFRDZ2M1U5QUlzL1VRRHNBVXArdGNFN2NNQUFBSUFULzVXQkJjRVRnQWJBQ1lBZzdJZkp5Z1JFam13SHhDd0ROQUFzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdCeThic1FjYlBsbXdBRVZZc0F3dkc3RU1FVDVac0FCRldMQVlMeHV4R0E4K1diSUdCQmdSRWptd0RCQ3lFZ0VLSzFnaDJCdjBXYklRRWhnUkVqbXlGZ1FZRVJJNXNCZ1FzaDhCQ2l0WUlkZ2I5Rm13QkJDeUpBRUtLMWdoMkJ2MFdUQXhFelEyTmpNeUZ6Y3pFUlFBSXlJbUp6Y1dNekkyTlRVR0l5SW1KamNVRmpNeU54RW1JeUlHVDIzTmhiOXBFTkgrKys5VnVVazFncENPZzJxdWY4eHk4NDk0bFVaRmxIeU5BaWFnKzQyR2N2d2M5djcyTHkyd1RKeWJGbmVNL0oyZndJRUIyWHZCQUFBQi83RCtTd0dPQU0wQURRQXVzZ01PRHhFU09RQ3dEaSt3QUVWWXNBVXZHN0VGRVQ1WnNnb0JDaXRZSWRnYjlGbXdEaEN3RGRDd0RTOHdNU1VSRkFjR0l5SW5OeFl6TWpVUkFZNXdXNVZHT0E0a1BYek4vdmZJWWs4UnhneXlBUVVBQUFFQVhQNmFBVThBdFFBREFCSUFzQVF2c0FMUXNBSXZzQUhRc0FFdk1ERUJJeEV6QVUvejgvNmFBaHNBQWdCMUJOQUM5d2JjQUF3QUlBQjdBTEFETDdBRzBMQUdMMEFMRHdZZkJpOEdQd1pQQmdWZHNBTVFzZ2tHQ2l0WUlkZ2I5Rm13QmhDd0ROQ3dEQyt3QmhDd0VOQ3dFQyt3RTlDd0V5OUFEUThUSHhNdkV6OFRUeE5mRXdaZHNCQVFzQmJRc0JZdnNCTVFzaG9JQ2l0WUlkZ2I5Rm13RUJDeUhRZ0tLMWdoMkJ2MFdiQWFFTEFnMERBeEFSUUdJQ1kxTXhRV016STJOUk1VQmlNaUppTWlCaFVuTkRZek1oWXpNalkxQXZldy90NndyMHhHU0VxUVgwYzRnU29mS21oaFJTK0lMQjRzQmJCbGUzdGxOVG84TXdFUFMydEhNaVViVFd4SE1pUUFBZ0IxQk5VQzlnY0lBQTBBSEFCWkFMQURMN0FIMExBSEwwQUxEd2NmQnk4SFB3ZFBCd1Zkc0FNUXNnb0dDaXRZSWRnYjlGbXdCeEN3RGRDd0RTK3dCeEN3RHRDd0RpK3dGTkN3RkMreUR3NFVFUkk1c2hVTUNpdFlJZGdiOUZteUd3NFBFUkk1TURFQkZBWWpJaVkxTXhRV016STJOU2NuTmpZMU5DTTNNaFlWRkFZSEJ3TDJyNUdTcjYxUVJFVk4zd2hJUDVJSG5wOU9SQUVGc0dKNWVXSTBPVG96R1hZQ0Z4bzJZRkJFTHpvSU9nQUFBZ0IxQk5NREFBWitBQTBBRVFCZEFMQURMN0FHMExBR0wwQUxEd1lmQmk4R1B3WlBCZ1Zkc0FNUXNnb0dDaXRZSWRnYjlGbXdCaEN3RGRDd0RTK3dCaEN3RU5Dd0VDK3dEdEN3RGk5QUR3OE9IdzR2RGo4T1R3NWZEbThPQjEyd0VCQ3dFZEFac0JFdkdEQXhBUlFHSXlJbU5UTVVGak15TmpVbk13Y2pBd0N2bHBXeHNVeEpSMHhsdHFtQUJiQmhmSHBqTkR3OE5NN0FBQUlBZFFUbkExd0cwUUFHQUJvQWpRQ3dBUyt3QTlDd0F5K3dCTkFac0FRdkdMQUEwQm13QUM4WXNBTVFzQVhRc0FVdlFBa1BCUjhGTHdVL0JRUmRzZ0lGQXhFU09iQUswTEFLTDBBSlB3cFBDbDhLYndvRVhiQU4wTEFOTDBBUER3MGZEUzhOUHcxUERWOE5idzBIWGJBS0VMQVEwTEFRTDdBTkVMSVVCZ29yV0NIWUcvUlpzQW9Rc2hjR0NpdFlJZGdiOUZtd0ZCQ3dHdEF3TVFFakp3Y2pKVE0zRkFZaklpWWpJZ1lWSnpRMk16SVdNekkyTlFOY3diT3l3UUVxazdwWlBURjdKQnNwV2xrOEtuOG1HaXdFNTQ2TzdkOCtYMElzR3hoQVlFRXRIQUFDQUhVRTV3UUtCc3NBQmdBVkFHQUFzQUV2c0FQUXNBTXZzQVRRR2JBRUx4aXdBTkFac0FBdkdMQURFTEFGMExBRkwwQUpEd1VmQlM4RlB3VUVYYklDQXdVUkVqbXdBUkN3QjlDd0J5K3dEZEN3RFMreUNBY05FUkk1c2c0R0NpdFlJZGdiOUZteUZBZ0hFUkk1TURFQkl5Y0hJeVV6RnljMk5qVTBJemN5RmhVVUJnY0hBMXpCczdMQkFSYTd1UWMvT0lFSGlZeEpPQUVFNTZLaStuUjlCUmdkUG1sWlN6ZEJCenNBQXY5TUJOb0RYQWFEQUFZQUNnQmJBTEFETDdBRTBCbXdCQzhZc0FEUUdiQUFMeGl3QXhDd0FkQ3dBUyt3QnRDd0JpOUFDUThHSHdZdkJqOEdCRjJ5QWdNR0VSSTVzQU1Rc0FqUXNBZ3ZzQWZRR2JBSEx4aXdDQkN3Q3RDd0NpKzJEd29mQ2k4S0ExMHdNUUVqSndjakpUTUZJd016QTF6Vm41L1VBU09oL29lZDE5MEUybzZPK2x3QkN3QUNBSG9FNXdTTEJwQUFCZ0FLQUZzQXNBTXZzQVhRc0FVdnNBRFFzQUF2UUFrUEFCOEFMd0EvQUFSZHNBTVFzQUxRR2JBQ0x4aXlCQU1BRVJJNXNBYlFHYkFHTHhpd0F4Q3dDZEN3Q1Mrd0I5Q3dCeSsyRHdjZkJ5OEhBMTJ3Q1JDd0N0QVpzQW92R0RBeEFUTUZJeWNISXdFekF5TUJuYUVCSTlTZm45VURNOTdZblFYaCtvNk9BYW4rOVFBQUFnQjFCTlFEQUFaK0FBMEFFUUJkQUxBREw3QUcwTEFHTDBBTER3WWZCaThHUHdaUEJnVmRzQU1Rc2dvR0NpdFlJZGdiOUZtd0JoQ3dEZEN3RFMrd0JoQ3dFZEN3RVMrd0R0Q3dEaTlBRHc4T0h3NHZEajhPVHc1ZkRtOE9CMTJ3RVJDd0VOQVpzQkF2R0RBeEFSUUdJeUltTlRNVUZqTXlOalVsTXhjakF3Q3ZscFd4c1V4SlIweitsTGR5Z0FXeFlYeDZZelE4UERUTndBQUFBUUNVQkdrQnFRWXJBQWdBSGJJSUNRb1JFamtBc0FCRldMQUFMeHV4QUNFK1diQUUwTEFFTHpBeEFSY0dCd2NqTlRRMkFTYURQd0lCMDFVR0sxTnRmSWFGV2JZQUFBSUFDUUFBQkpRRWpRQUhBQW9BUmdDd0FFVllzQVF2RzdFRUhUNVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdCaThic1FZUFBsbXlDUVFDRVJJNXNBa3ZzZ0FCQ2l0WUlkZ2I5Rm15Q2dRQ0VSSTVNREVsSVFjakFUTUJJd0VoQXdNLy9oNWY5UUhYM3dIVjl2NEdBVlNxK2ZrRWpmdHpBYklCdWdBREFIWUFBQVFLQkkwQURnQVdBQjhBcExJZUlDRVJFam13SGhDd0F0Q3dIaEN3RWRBQXNBQkZXTEFCTHh1eEFSMCtXYkFBUlZpd0FDOGJzUUFQUGxteUZ3RUFFUkk1c0JjdnRLOFh2eGNDWGJSdkYzOFhBbkd5L3hjQmNiSVBGd0Z5dEk4WG54Y0NjckpmRndGeXNzOFhBWEd5UHhjQmNiUWZGeThYQWwyMHZ4ZlBGd0p5c2c4QkNpdFlJZGdiOUZteUNBOFhFUkk1c0FBUXNoQUJDaXRZSWRnYjlGbXdBUkN5SGdFS0sxZ2gyQnYwV1RBeE14RWhNaFlWRkFZSEZoWVZGQVlqQXhFek1qWTFOQ2NuTXpZMk5UUW1JeU4yQWEvZTYxbGJZSERpM2VMa1ptUzArdFJiWTJkbHhnU05wWnhQZ3lNWGoyT2pxd0g3L3NkVlFaNEZxZ0pJUlU5R0FBQUJBRS8vOEFSREJKMEFHd0JPc2dNY0hSRVNPUUN3QUVWWXNBc3ZHN0VMSFQ1WnNBQkZXTEFETHh1eEF3OCtXYklQQ3dNUkVqbXdDeEN5RWdFS0sxZ2gyQnYwV2JBREVMSVlBUW9yV0NIWUcvUlpzaHNEQ3hFU09UQXhBUVlFSXlJQUVUVTBOall6TWdRWEl5WW1JeUFSRlJRV016STJOd1JDRWY3MzJleis3SDdzbk5ZQkJCVHpESDF5L3UyR2gzaDhEUUdFdjlVQkxBRUxSS24vaXRyQ2NHbitqa2k1dFdKd0FBSUFkZ0FBQkNvRWpRQUxBQk1BUnJJVEZCVVJFam13RXhDd0F0QUFzQUJGV0xBQkx4dXhBUjArV2JBQVJWaXdBQzhic1FBUFBsbXdBUkN5REFFS0sxZ2gyQnYwV2JBQUVMSU5BUW9yV0NIWUcvUlpNREV6RVNFeUJCWVhGUlFHQkNNREVUTWdFelVRSlhZQmU2UUJBNUFDai83NXFJT0NBVWNHL3NrRWpZcjduejJqL29zRHlmejVBVnhEQVdBSUFBRUFkZ0FBQTdVRWpRQUxBRTRBc0FCRldMQUdMeHV4QmgwK1diQUFSVml3QkM4YnNRUVBQbG15Q3dZRUVSSTVzQXN2c2dBQkNpdFlJZGdiOUZtd0JCQ3lBZ0VLSzFnaDJCdjBXYkFHRUxJSUFRb3JXQ0hZRy9SWk1ERUJJUkVoRlNFUklSVWhFU0VEWC80S0Frejh3UU04L2JjQjlnSDQvc3JDQkkzRS92SUFBUUIyQUFBRG5nU05BQWtBUUFDd0FFVllzQVF2RzdFRUhUNVpzQUJGV0xBQ0x4dXhBZzgrV2JJSkJBSVJFam13Q1MreUFBRUtLMWdoMkJ2MFdiQUVFTElHQVFvcldDSFlHL1JaTURFQklSRWpFU0VWSVJFaEExditEdk1ES1AzTEFmSUIyLzRsQkkzRS90VUFBUUJVLy9BRVNBU2RBQndBWExJYUhSNFJFamtBc0FCRldMQUtMeHV4Q2gwK1diQUFSVml3QXk4YnNRTVBQbG15RGdNS0VSSTVzQW9Rc2hFQkNpdFlJZGdiOUZtd0F4Q3lGd0VLSzFnaDJCdjBXYkliQXdvUkVqbXdHeSt5R1FjS0sxZ2gyQnYwV1RBeEpRY0dJU0lBRVRVUUFETXlGaGNqSmlZaklCRVZGQllnTnpVak5TRUVTQmVXL3RYNC90d0JGdlRYK2hudEVubHMvdVNnQVNoRytRSHJreGlMQVM0QkNVRUJDUUVzdzhCa1hQNkpRTGU2T2NpeEFBQUJBSFlBQUFSb0JJMEFDd0NHQUxBQVJWaXdCaThic1FZZFBsbXdBRVZZc0Fvdkc3RUtIVDVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3QkM4YnNRUVBQbG15Q1FZQUVSSTVzQWt2dEs4SnZ3a0NYYkkvQ1FGeHNzOEpBWEd5UHdrQmNyTC9DUUZ4c2c4SkFYSzBid2wvQ1FKeHROOEo3d2tDWGJKZkNRRnl0QndKTEFrQ1hiSUNBUW9yV0NIWUcvUlpNREVoSXhFaEVTTVJNeEVoRVRNRWFQUDk5UFB6QWd6ekFkditKUVNOL2hFQjd3QUJBSVVBQUFGM0JJMEFBd0FkQUxBQVJWaXdBaThic1FJZFBsbXdBRVZZc0FBdkc3RUFEejVaTURFaEl4RXpBWGZ5OGdTTkFBQUJBQ1QvOEFOa0JJMEFEZ0Fpc2dVUEVCRVNPUUN3QUVWWXNBVXZHN0VGRHo1WnNnc0JDaXRZSWRnYjlGa3dNUUV6RVJRR0l5SW1OVE1VTXpJMk5RSng4K095eXVIMHQwdFhCSTM4NEs3UHdLK3RYbDBBQUFFQWRnQUFCR2dFalFBTUFFc0FzQUJGV0xBRUx4dXhCQjArV2JBQVJWaXdDQzhic1FnZFBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQUxMeHV4Q3c4K1diSUdBZ1FSRWptd0JoQ3dBZEN5Q2dFR0VSSTVNREVCQnhFakVUTVJOd0VoQVFFaEFmQ0g4L051QVU4QkxQNURBZFArM2dIYmcvNm9CSTM5L1lZQmZmMzMvWHdBQVFCMkFBQURsQVNOQUFVQUtBQ3dBRVZZc0FRdkc3RUVIVDVac0FCRldMQUNMeHV4QWc4K1diSUFBUW9yV0NIWUcvUlpNREVsSVJVaEVUTUJhUUlyL09MendzSUVqUUFBQVFCMkFBQUZqd1NOQUE0QVlMSUJEeEFSRWprQXNBQkZXTEFBTHh1eEFCMCtXYkFBUlZpd0FpOGJzUUlkUGxtd0FFVllzQVF2RzdFRUR6NVpzQUJGV0xBSUx4dXhDQTgrV2JBQVJWaXdEQzhic1F3UFBsbXlBUUFFRVJJNXNnY0FCQkVTT2JJS0FBUVJFamt3TVFrQ0lSRWpFUk1CSXdFVEVTTVJBYklCVVFGT0FUN3lHZjZncVA2aEdmSUVqZnkxQTB2N2N3RTdBanI4aXdOdy9jdit4UVNOQUFBQkFIWUFBQVJuQkkwQUNRQkZBTEFBUlZpd0JTOGJzUVVkUGxtd0FFVllzQWd2RzdFSUhUNVpzQUJGV0xBQUx4dXhBQTgrV2JBQVJWaXdBeThic1FNUFBsbXlBZ1VBRVJJNXNnY0ZBQkVTT1RBeElTTUJFU01STXdFUk13Um44djMwOC9NQ0RQSURHL3psQkkzODVBTWNBQUFDQUUvLzhBUnZCSjBBRGdBY0FFYXlBeDBlRVJJNXNBTVFzQkxRQUxBQVJWaXdDeThic1FzZFBsbXdBRVZZc0FNdkc3RUREejVac0FzUXNoSUJDaXRZSWRnYjlGbXdBeEN5R1FFS0sxZ2gyQnYwV1RBeEFSQUFJeUlBRVRVMEVqWXpNZ0FSSnpRbUl5SUdGUlVVRmpNeU5qVUViLzdmN2V6KzJvWHdtL0FCSVBLV2lJYVltWWVJbEFJcy92ait6QUUxQVF3dXJBRUhpLzdIL3ZVSXQ4REF0eld5eDhPMkFBQUNBSFlBQUFRc0JJMEFDZ0FUQUUyeUJCUVZFUkk1c0FRUXNBelFBTEFBUlZpd0F5OGJzUU1kUGxtd0FFVllzQUV2RzdFQkR6NVpzZ3NCQXhFU09iQUxMN0lBQVFvcldDSFlHL1Jac0FNUXNoSUJDaXRZSWRnYjlGa3dNUUVSSXhFaE1oWVZGQVlISnpNeU5qVTBKaU1qQVduekFlWFUvZkhVL3ZKb2QzbGw4d0daL21jRWpkV3RxY1lEeEZoVVYya0FBQUlBVFA4d0JHd0VuUUFVQUNJQVJySUlJeVFSRWptd0NCQ3dIOUFBc0FCRldMQVJMeHV4RVIwK1diQUFSVml3Q0M4YnNRZ1BQbG13RVJDeUdBRUtLMWdoMkJ2MFdiQUlFTElmQVFvcldDSFlHL1JaTURFQkZBWUhGd2NsQmlNaUpnSW5OVFFTTmpNeUFCRW5OQ1lqSWdZVkZSUVdNekkyTlFSc2JtUFBuZjcyTWpTYThvUUJndkdjN3dFaThaZUpocGVYaUltVkFpeWo4VWlZaU1rSml3RUJxam1yQVFXTy9zais5QWkzd01PMk03REp3N1lBQWdCMkFBQUVPUVNOQUEwQUZnQmhzZ1VYR0JFU09iQUZFTEFQMEFDd0FFVllzQVF2RzdFRUhUNVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdEUzhic1EwUFBsbXlEZ0lFRVJJNXNBNHZzZ0FCQ2l0WUlkZ2I5Rm15Q2dBT0VSSTVzQVFRc2hVQkNpdFlJZGdiOUZrd01RRWpFU01SSVRJV0ZSUUhBUlVoQVRNeU5qVTBKaU1qQWtqZjh3SEkydkRoQVJMKy9QNDAxV3hzYVcvVkFhbitWd1NOdDZyclcvNGxDd0pyWDA1UllBQUJBRDcvOEFQdkJKMEFKUUJqc2drbUp4RVNPUUN3QUVWWXNBa3ZHN0VKSFQ1WnNBQkZXTEFjTHh1eEhBOCtXYklESEFrUkVqbXlEUWtjRVJJNXNBa1FzaEFCQ2l0WUlkZ2I5Rm13QXhDeUZRRUtLMWdoMkJ2MFdiSWhIQWtSRWptd0hCQ3lJd0VLSzFnaDJCdjBXVEF4QVRRbUpDWW1OVFEyTXpJV0ZTTTBKaU1pQmhVVUZoY1dGaFVVQmlNaUppWTFNeFFoTWpZREFtait6N0JUOXNQUy92TjRaVjl1Y1kvZHdQak1pdVYrOUFFQVlXOEJNa0pQVEdLRFhKSzd5S0JSWFUxQU9rd2pOcktPbWE1ZHFuSEFTZ0FCQUNRQUFBUVdCSTBBQndBdUFMQUFSVml3Qmk4YnNRWWRQbG13QUVWWXNBSXZHN0VDRHo1WnNBWVFzZ0FCQ2l0WUlkZ2I5Rm13Qk5Bd01RRWhFU01SSVRVaEJCYitmdlArZ3dQeUE4bjhOd1BKeEFBQkFHZi84QVFlQkkwQUR3QTFzZ3dRRVJFU09RQ3dBRVZZc0Fndkc3RUlIVDVac0FCRldMQUVMeHV4QkE4K1diSU1BUW9yV0NIWUcvUlpzQWdRc0EvUU1ERUJFUlFFSUNRMUVUTVJGQll6TWpjUkJCNysvLzVLL3dEeGZtemxCQVNOL1FHKzROM0JBdi85QUhObzFBTUhBQUFCQUFrQUFBUnlCSTBBQ0FBeEFMQUFSVml3QXk4YnNRTWRQbG13QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFGTHh1eEJROCtXYklCQXdVUkVqa3dNUUVYTndFaEFTTUJJUUlxRXhJQklnRUIva2IyL2tjQkFRRTRUVXNEVi90ekJJMEFBQUVBS0FBQUJlVUVqUUFNQUZrQXNBQkZXTEFCTHh1eEFSMCtXYkFBUlZpd0NDOGJzUWdkUGxtd0FFVllzQXN2RzdFTEhUNVpzQUJGV0xBREx4dXhBdzgrV2JBQVJWaXdCaThic1FZUFBsbXlBQUVERVJJNXNnVUJBeEVTT2JJS0FRTVJFamt3TVFFVE13RWpBd01qQVRNVEV6TUVTcS9zL3VicjJOdnIvdWJzc2RqV0FTc0RZdnR6QTBIOHZ3U04vSndEWkFBQkFCVUFBQVJLQkkwQUN3QlRBTEFBUlZpd0FTOGJzUUVkUGxtd0FFVllzQW92RzdFS0hUNVpzQUJGV0xBRUx4dXhCQTgrV2JBQVJWaXdCeThic1FjUFBsbXlBQUVFRVJJNXNnWUJCQkVTT2JJREFBWVJFam15Q1FZQUVSSTVNREVCRXlFQkFTRURBeUVCQVNFQ0ovSUJIUDZKQVl6KzRQLzYvdVFCZ2Y2SUFSb0MrZ0dUL2I3OXRRR1ovbWNDU3dKQ0FBRUFCUUFBQkRZRWpRQUlBREVBc0FCRldMQUJMeHV4QVIwK1diQUFSVml3Qnk4YnNRY2RQbG13QUVWWXNBUXZHN0VFRHo1WnNnQUJCQkVTT1RBeEFRRWhBUkVqRVFFaEFoMEJEZ0VML2wzeS9tUUJDd0o2QWhQOUIvNXNBYUVDN0FBQUFRQkJBQUFEOHdTTkFBa0FSQUN3QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFDTHh1eEFnOCtXYklBQVFvcldDSFlHL1Jac2dRQUFoRVNPYkFIRUxJRkFRb3JXQ0hZRy9SWnNna0ZCeEVTT1RBeEpTRVZJVFVCSVRVaEZRRjRBbnY4VGdKcy9aVURvTUxDalFNOHhJb0FBQUlBUy8vMUFxb0RJQUFOQUJjQVJySURHQmtSRWptd0F4Q3dFTkFBc0FCRldMQUtMeHV4Q2hrK1diQUFSVml3QXk4YnNRTVBQbG13Q2hDeUVBSUtLMWdoMkJ2MFdiQURFTElWQWdvcldDSFlHL1JaTURFQkZBWWpJaVkxTlRRMk16SVdGU2MwSXlJSEZSUXpNamNDcXA2UWtwK2VrWkNndTNWeUEzZHZCQUUrbjZxcW5waWRycTJlREttZnVLbWFBQUVBZ0FBQUFnSURFd0FHQURFQXNBQkZXTEFGTHh1eEJSaytXYkFBUlZpd0FTOGJzUUVQUGxtd0JSQ3dCTkN3QkMreUF3SUtLMWdoMkJ2MFdUQXhJU01SQnpVbE13SUN1Y2tCYnhNQ09qQ1Nkd0FCQUR3QUFBS3lBeUFBRndCWnNnZ1lHUkVTT1FDd0FFVllzQTh2RzdFUEdUNVpzQUJGV0xBQUx4dXhBQTgrV2JJV0Fnb3JXQ0hZRy9SWnNnSVdBQkVTT2JJRER3QVJFam13RHhDeUNBSUtLMWdoMkJ2MFdiSU1BQThSRWpteUZRQVBFUkk1TURFaElUVUJOalUwSmlNaUJoVWpORFl6TWhZVkZBOENJUUt5L1p3QkhYRTJORHBDdXFtSGo1eHFZb3dCYzMwQkJXZERLalZDTm5TWmdITnJabGR4QUFFQU4vLzFBcWtESUFBa0FIK3lIaVVtRVJJNUFMQUFSVml3RFM4YnNRMFpQbG13QUVWWXNCY3ZHN0VYRHo1WnNnQVhEUkVTT1h5d0FDOFl0RkFBWUFBQ2NiYUFBSkFBb0FBRFhiQU5FTElHQWdvcldDSFlHL1Jac2dvQUJoRVNPYkFBRUxJa0Fnb3JXQ0hZRy9SWnNoSWtBQkVTT2JBWEVMSWVBZ29yV0NIWUcvUlpzaHNrSGhFU09UQXhBVE15TlRRbUl5SUdGU00wTmpNeUZoVVVCeFlWRkFZaklpWTFNeFFXTXpJMk5UUW5Jd0VNVVlRMlBqQkJ1cVdDajZPSGxiR1BoNnU2UlR3L1BZWmNBZEpoSXpVbkkyTjhlV2wzTXltT2FuNS9jU1kxTnlwbEFRQUFBZ0ExQUFBQ3ZnTVZBQW9BRGdCSkFMQUFSVml3Q1M4YnNRa1pQbG13QUVWWXNBUXZHN0VFRHo1WnNnRUpCQkVTT2JBQkw3SUNBZ29yV0NIWUcvUlpzQWJRc0FFUXNBdlFzZ2dMQmhFU09iSU5DUVFSRWprd01RRXpGU01WSXpVaEp3RXpBVE0xQndKZlgxKzcvcG9KQVcyOS9vdTZEZ0U2bDZPamVRSDUvaVh5RmdBQUFRQlAvL1VDcmdNVkFCb0FhcklOR3h3UkVqa0FzQUJGV0xBQ0x4dXhBaGsrV2JBQVJWaXdEUzhic1EwUFBsbXdBaEN5QXdJS0sxZ2gyQnYwV2JJSEFnMFJFam13QnkreUdBSUtLMWdoMkJ2MFdiSUZHQWNSRWptd0RSQ3lFd0lLSzFnaDJCdjBXYklSRXhnUkVqbXlHaGdURVJJNU1ERVRFeUVWSVFjMk16SVdGUlFHSXlJbUp6TVdNekkxTkNZaklnZGlOQUhzL3F3VVBrZURqS09NZ2EwQ3VRVnlkVU5DUXpVQmZ3R1dscFFiaG5wNG1ZUmpVbjA0UkNnQUFBSUFUZi8xQXJrRElnQVRBQjRBVzdJVUh5QVJFam13RkJDd0ROQUFzQUJGV0xBQUx4dXhBQmsrV2JBQVJWaXdEQzhic1F3UFBsbXdBQkN5QVFJS0sxZ2gyQnYwV2JJR0RBQVJFam13QmkreUZBSUtLMWdoMkJ2MFdiQU1FTElhQWdvcldDSFlHL1JaTURFQkZTSUdCell6TWhZVkZBWWpJaVkxTlRRMk13TWlCZ2NWRkRNeU5qVTBBaktSaVExSGEzV0hxSWFUcS9EZWxpMUNEMzgxUkFNaW1WOWlSWTU2ZDVtbm16SFM2UDVYSkJja2tVWTJkQUFCQURZQUFBS3VBeFVBQmdBeUFMQUFSVml3QlM4YnNRVVpQbG13QUVWWXNBSXZHN0VDRHo1WnNBVVFzZ1FDQ2l0WUlkZ2I5Rm15QUFRRkVSSTVNREVCQVNNQklUVWhBcTcrcmNRQlUvNU1BbmdDclAxVUFuK1dBQUFEQUV2LzlRS3FBeUFBRXdBY0FDUUFscklISlNZUkVqbXdCeEN3Rk5Dd0J4Q3dJdEFBc0FCRldMQVJMeHV4RVJrK1diQUFSVml3Qnk4YnNRY1BQbG15SWdjUkVSSTVmTEFpTHhpMmdDS1FJcUFpQTEyMFVDSmdJZ0p4dEFBaUVDSUNjYlJBSWxBaUFsMjAwQ0xnSWdKeHNoa0NDaXRZSWRnYjlGbXlBaUlaRVJJNXNnd1pJaEVTT2JBSEVMSVVBZ29yV0NIWUcvUlpzQkVRc2g4Q0NpdFlJZGdiOUZrd01RRVVCeFlWRkFZaklpWTFORGNtTlRRMk16SVdBVEkyTkNZaUJoUVdFelFpRlJRV01qWUNsM0dFb1k2TXBJUnhtNEdDbS83a05VQkJha0JBbDhRellERUNRWFEzUFlCcWVubHJnRDAzZEdsMmR2M2dNMW93TUZvekFhdFdWaWN3TUFBQ0FFYi85d0tqQXlBQUV3QWZBR0N5RkNBaEVSSTVzQlFRc0FqUUFMQUFSVml3Q0M4YnNRZ1pQbG13QUVWWXNCQXZHN0VRRHo1WnNnSVFDQkVTT1h5d0FpOFlzQkFRc2hFQ0NpdFlJZGdiOUZtd0FoQ3lGQUlLSzFnaDJCdjBXYkFJRUxJYUFnb3JXQ0hZRy9SWk1ERUJCaU1pSmpVME5qTXlGaGNWRkFZSEl6VXlOaWN5TnpVMEppTWlCaFVVRmdIblFscCtoNnFFaTZJQzNPQVRqM2xqVGlOQ05ETkJQQUUyT1lwOWVLU21senZYMlFHVFVxdzBSVWhCVGprM1JBQUJBSkFDaHdNdEF6RUFBd0FSQUxBQ0w3SUJBUW9yV0NIWUcvUlpNREVCSVRVaEF5MzlZd0tkQW9lcUFBTUFsZ1JJQXFJR2xRQURBQThBR3dCT0FMQU5MN0FaMExBWkw3SUhDUW9yV0NIWUcvUlpzQUxRc0FJdnNBRFFzQUF2UUE4UEFCOEFMd0EvQUU4QVh3QnZBQWRkc0FJUXNBUFFHYkFETHhpd0RSQ3lFd2tLSzFnaDJCdjBXVEF4QVRNSEl3YzBOak15RmhVVUJpTWlKamNVRmpNeU5qVTBKaU1pQmdHODV2V1ZnbTVPVEd4cFQxRnJZelFsSkRBd0pDVTBCcFhDM2s1a1pVMUtZMkpMSlRFeEpTY3pNd0FEQUFyK1NnUWJCRTRBS1FBMkFFTUFtN0lJUkVVUkVqbXdDQkN3TU5Dd0NCQ3dPdEFBc0FCRldMQW1MeHV4SmhzK1diQUFSVml3Rmk4YnNSWVJQbG13SmhDd0tOQ3dLQyt5QUFNS0sxZ2gyQnYwV2JJSUZpWVJFam13Q0MreUR4WUlFUkk1c0E4dnNqVUJDaXRZSWRnYjlGbXlHelVQRVJJNXNoOElKaEVTT2JBV0VMSXdBUW9yV0NIWUcvUlpzQWdRc2pvQkNpdFlJZGdiOUZtd0poQ3lRUUVLSzFnaDJCdjBXVEF4QVNNV0ZSVVVCZ1lqSWljR0ZSUVhNeFlXRlJRR0JpTWlKRFUwTnlZMU5EY21KalUxTkRZek1oY2hBUVlHRlJRV016STJOVFFuSlFNVUZqTXlOalUxTkNZaUJoVUVHNG82Yzg2QVVVVWxjOExEeW8vNm10bis5Yll5ZFZway9NZFZTd0Z4L1RBa01ZaHlocXlUL3VwQWVsbFlkM1c0ZFFPZ1ZXa1daS2xmRWlNdlNnTUJtbzVZcG1LYmVhVlpNa2gzVVRHZVh4YWl5aFQ3NVJOSU1FSk5Ya0JyQ1FJQ3MwdG1aMDRTU21abVRRQUNBRmIvNndSZkJFNEFFQUFkQUc2eUd4NGZFUkk1c0JzUXNBblFBTEFBUlZpd0NTOGJzUWtiUGxtd0FFVllzQXd2RzdFTUd6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdFQzhic1JBUFBsbXlBQWtDRVJJNXNnc0pBaEVTT2JBQ0VMSVVBUW9yV0NIWUcvUlpzQWtRc2hzQkNpdFlJZGdiOUZrd01TVUdJeUlDTlRVUUVqTXlGemN6QXhNakFSUVdNekkyTnpVbUppTWlCZ05qYnZMSDV1akg2WEVjM1d4ejNmM0hmSFJnZkJjUmZXTnpmOFRaQVNEMER3RUtBVGJYdy8zaS9lUUIrYUNzcTZZdnBibkZBQUFDQUpzQUFBVHlCYkFBRmdBZUFHR3lHQjhnRVJJNXNCZ1FzQVRRQUxBQVJWaXdBeThic1FNZlBsbXdBRVZZc0FFdkc3RUJEejVac0FCRldMQVBMeHV4RHc4K1diSVhBd0VSRWptd0Z5K3lBQUVLSzFnaDJCdjBXYklKQUJjUkVqbXdBeEN5SFFFS0sxZ2gyQnYwV1RBeEFSRWpFU0V5RmhVVUJ4WVRGUlFYRlNFbUp6VTBKaU1sSVRJMk5UUWhJUUdYL0FJcDlmLzM1UVZIL3Z3N0JIdHcvdE1CRkpDQi92ais0d0pXL2FvRnNObk40MlZGL3ZaenFUMGFNYmg1ZElES2NXM21BQUFCQUpzQUFBVXdCYkFBREFCWUFMQUFSVml3QkM4YnNRUWZQbG13QUVWWXNBZ3ZHN0VJSHo1WnNBQkZXTEFDTHh1eEFnOCtXYkFBUlZpd0N5OGJzUXNQUGxteUJnSUVFUkk1c0FZdnNoOEdBWEd5QVFFS0sxZ2gyQnYwV2JJS0FRWVJFamt3TVFFakVTTVJNeEV6QVNFQkFTRUNRNno4L0lzQnJBRTIvZ3dDSVA3UUFuRDlrQVd3L1p3Q1pQMUgvUWtBQUFFQWdRQUFCRFVHQUFBTUFGTUFzQUJGV0xBRUx4dXhCQ0UrV2JBQVJWaXdDQzhic1FnYlBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQUxMeHV4Q3c4K1diSUhDQUlSRWptd0J5K3lBQUVLSzFnaDJCdjBXYklLQUFjUkVqa3dNUUVqRVNNUk14RXpBU0VCQVNFQjRtL3k4bWtCRHdFYy9wOEJqLzdtQWRuK0p3WUEvSndCbnY0Ui9iVUFBUUNiQUFBRkVnV3dBQXNBVEFDd0FFVllzQU12RzdFREh6NVpzQUJGV0xBSEx4dXhCeDgrV2JBQVJWaXdBUzhic1FFUFBsbXdBRVZZc0Fvdkc3RUtEejVac2dBREFSRVNPYklGQXdFUkVqbXlDUUFGRVJJNU1ERUJFU01STXhFekFTRUJBU0VCbC96OEJnSVpBVGo5cFFKLy9zZ0NtdjFtQmJEOWZ3S0IvVFg5R3dBQUFRQ0JBQUFFSWdZWUFBb0FUQUN3QUVWWXNBTXZHN0VESVQ1WnNBQkZXTEFHTHh1eEJocytXYkFBUlZpd0FTOGJzUUVQUGxtd0FFVllzQWt2RzdFSkR6NVpzZ0FHQVJFU09iSUZCZ0VSRWpteUNBQUZFUkk1TURFQkVTTVJNeEVCSVFFQklRRno4dklCV1FFcS9sQUIzUDdiQWV2K0ZRWVkvSVFCbnY0TS9ib0FBQUVBUHY4VEErOEZjd0FxQUcreUV5c3NFUkk1QUxBQVJWaXdDUzhic1FrZFBsbXdBRVZZc0NJdkc3RWlEejVac2dNaUNSRVNPYkFKRUxBTTBMQURFTElZQVFvcldDSFlHL1Jac0FrUXNoTUJDaXRZSWRnYjlGbXlFQmdURVJJNXNDSVFzQi9Rc0NJUXNpZ0JDaXRZSWRnYjlGbXlKZ01vRVJJNU1ERUJOQ1lrSmlZMU5EWTNOVE1WRmhZVkl6UW1JeUlHRlJRV0Z4WVdGUlFHQnhVak5TWW1OVE1VSVRJMkF3Sm8vcyt3VTgrcG9LYkw4M2hsWDI1eGo5M0F3NjZndmVQMEFRQmhid0V5UWs5TVlvTmNoclFRMmR3VndJMVJYVTFBT2t3ak5yS09ocXdSNGVFVHg1ckFTZ0FBQVFBNEFBQUVHZ1NkQUI4QWJySWJJQ0VSRWprQXNBQkZXTEFUTHh1eEV4MCtXYkFBUlZpd0JTOGJzUVVQUGxteUh4TUZFUkk1c0I4dnNnQUNDaXRZSWRnYjlGbXdCUkN5QXdFS0sxZ2gyQnYwV2JBSDBMQUkwTEFBRUxBTTBMQWZFTEFPMExBVEVMSWFBUW9yV0NIWUcvUlpzaGNmR2hFU09UQXhBU0VXQnlFSElUVXpOalluSnlNMU15Y21Oak15RmhVak5DWWpJZ1lYRnlFRFIvNkZCbEFDbUFIOFpRb3BLd01Cb0pzREJ0aS93dG56VjFCTlZ3VUVBWUFCNWJKd3c4TUxrMzBIazJuTzd0UzhZV3ArZVdrQUFRQU9BQUFFUHdTTkFCZ0FsYklBR1JvUkVqa0FzQUJGV0xBQkx4dXhBUjArV2JBQVJWaXdHQzhic1JnZFBsbXdBRVZZc0F3dkc3RU1EejVac2dBTUdCRVNPYklKREFFUkVqbXdDUyt3Qk5Dd0JDOUFEUThFSHdRdkJEOEVUd1JmQkFaZHRzOEUzd1R2QkFOZHNnWUNDaXRZSWRnYjlGbXdDUkN5Q2dJS0sxZ2gyQnYwV2JBTzBMQUpFTEFRMExBUUw3QUdFTEFUMExBRUVMQVcwTEFXTHpBeEFRRWhBVE1WSVFjVklSVWhGU00xSVRVaE5TY2hOVE1CSVFJbEFROEJDLzYrMWY3YUVBRTIvc3J5L3NvQk5nbiswOXordmdFTEFub0NFLzIza3gwcWtkblprVFlSa3dKSkFBQUJBSFlBQUFPWEJJMEFCUUF5c2dFR0J4RVNPUUN3QUVWWXNBUXZHN0VFSFQ1WnNBQkZXTEFETHh1eEF3OCtXYkFFRUxJQUFRb3JXQ0hZRy9SWk1ERUJJUkVqRVNFRGwvM1M4d01oQThuOE53U05BQUFDQUFrQUFBUnlCSTBBQXdBSUFEeXlCUWtLRVJJNXNBVVFzQUxRQUxBQVJWaXdBaThic1FJZFBsbXdBRVZZc0FBdkc3RUFEejVac2dVQUFoRVNPYklIQVFvcldDSFlHL1JaTURFaElRRXpBeWNIQXlFRWN2dVhBYm4yYVJJVDNnSGpCSTMreVV0Ti9XOEFBd0JQLy9BRWJ3U2RBQU1BRWdBZ0FIYXlCeUVpRVJJNXNBY1FzQUhRc0FjUXNCYlFBTEFBUlZpd0R5OGJzUThkUGxtd0FFVllzQWN2RzdFSER6NVpzZ01QQnhFU09YeXdBeThZdEdBRGNBTUNYYlF3QTBBREFsMnlBQU1CY2JJQUFRb3JXQ0hZRy9SWnNBOFFzaFlCQ2l0WUlkZ2I5Rm13QnhDeUhRRUtLMWdoMkJ2MFdUQXhBU0UxSVFVUUFDTWlBQkUxTkJJMk16SUFFU2MwSmlNaUJoVVZGQll6TWpZMUF6aitXZ0dtQVRmKzMrM3MvdHFGOEp2d0FTRHlsb2lHbUptSGlKUUIzOE4yL3ZqK3pBRTFBUXd1ckFFSGkvN0gvdlVJdDhEQXR6V3l4OE8yQUFBQkFBa0FBQVJ5QkkwQUNBQTRzZ2NKQ2hFU09RQ3dBRVZZc0FJdkc3RUNIVDVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3QkM4YnNRUVBQbG15QndJQUVSSTVNREVoSVFFekFTRUJKd2NCQ3Y3L0FibjJBYnIrLy83ZUVoTUVqZnR6QTFaTFRRQURBRUlBQUFOVkJJMEFBd0FIQUFzQVhySUVEQTBSRWptd0JCQ3dBTkN3QkJDd0NOQUFzQUJGV0xBS0x4dXhDaDArV2JBQVJWaXdBQzhic1FBUFBsbXlBZ0VLSzFnaDJCdjBXYklIQ2dBUkVqbXdCeSt5QkFFS0sxZ2gyQnYwV2JBS0VMSUlBUW9yV0NIWUcvUlpNREVoSVRVaEF5RTFJUk1oTlNFRFZmenRBeE5KL1g0Q2drbjg3UU1Ud3dFNHhBRUt4QUFBQVFCMkFBQUVZZ1NOQUFjQVA3SUJDQWtSRWprQXNBQkZXTEFHTHh1eEJoMCtXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQUV2RzdFQkR6NVpzQVlRc2dJQkNpdFlJZGdiOUZrd01TRWpFU0VSSXhFaEJHTDAvZnZ6QSt3RHlmdzNCSTBBQUFFQVJBQUFBK1lFalFBTUFFdXlBQTBPRVJJNUFMQUFSVml3Q0M4YnNRZ2RQbG13QUVWWXNBTXZHN0VERHo1WnNnRUJDaXRZSWRnYjlGbXlCUUVERVJJNXNBZ1FzZ29CQ2l0WUlkZ2I5Rm15QndvSUVSSTVNREVCQVNFVklUVUJBVFVoRlNFQkFwRCs1Z0p3L0Y0QlAvN0JBM3o5dWdFV0FrWCtmOFNZQWJjQnBwakUvbzhBQXdCUUFBQUZUUVNOQUJFQUZnQWNBRyt5Q0IwZUVSSTVzQWdRc0JUUXNBZ1FzQnJRQUxBQVJWaXdFQzhic1JBZFBsbXdBRVZZc0Fndkc3RUlEejVac2c4UUNCRVNPYkFQTDdBQTBMSUpDQkFSRWptd0NTK3dCdEN3Q1JDeUZBRUtLMWdoMkJ2MFdiQVBFTElWQVFvcldDSFlHL1Jac0JyUXNCUVFzQnZRTURFQkZnUVZGQVFIRlNNMUppUTFOQ1EzTlRNQkFnVVJCQVUwSmljUkpBTko4QUVVL3VudDgvRCs2Z0VYNy9QOStRUUJHUDdzQXhtUWdnRVNCQlVQOXNyUStnOXRiQS81ME0zM0RYajl0Lzc5RlFJcUZmdUZnUXI5MWhVQUFBRUFVQUFBQlFNRWpRQVlBRXV5QUJrYUVSSTVBTEFBUlZpd0VpOGJzUklkUGxtd0FFVllzQXd2RzdFTUR6NVpzaFlNRWhFU09iQVdMN0FBMExBU0VMQVgwTEFFMExBV0VMSU5BUW9yV0NIWUcvUlpzQXJRTURFQk5qWTFFVE1SQmdjR0J4RWpFU1lDQXhFekVSUVdGeEV6QXlOL2J2TUJhSDM2OCtQN0F2TndmZk1CM1JqQ3B3RXYvczNqazY4ZC91Z0JGeFlCS2dFQUFUYiswYWpBR0FLdkFBRUFYd0FBQklRRW5RQWpBRnl5QnlRbEVSSTVBTEFBUlZpd0dTOGJzUmtkUGxtd0FFVllzQTh2RzdFUER6NVpzQUJGV0xBaUx4dXhJZzgrV2JBUEVMSVJBUW9yV0NIWUcvUlpzQTdRc0FEUXNCa1FzZ2NCQ2l0WUlkZ2I5Rm13RVJDd0lOQ3dJZEF3TVNVMk5qVTFOQ1lqSWdZVkZSUVdGeFVoTlRNbUVUVTBOall6TWdBVkZSUUdCek1WSVFLdGVHeVVqWXFVZG5UK01MQzlnL0tjNmdFcVkxbTIvaS9JSXNtd0s1NnNxYVFvc2NjanlNU2JBU2NXa2V5RS91UHRHWTNmU3NRQUFBRUFKUC9zQlZJRWpRQVpBR3V5RmhvYkVSSTVBTEFBUlZpd0FpOGJzUUlkUGxtd0FFVllzQTR2RzdFT0R6NVpzQUJGV0xBWUx4dXhHQTgrV2JBQ0VMSUFBUW9yV0NIWUcvUlpzQVRRc0FYUXNnZ0NEaEVTT2JBSUw3QU9FTElQQndvcldDSFlHL1Jac0FnUXNoVUJDaXRZSWRnYjlGa3dNUUVoTlNFVklSVTJNeklXRlJRR0l6VXlOalUwSmlNaUJ4RWpBWDcrcGdPdC9xQ0tqZHJ3OE90emRuUjFnWVh6QThuRXhPNG4xTWE4d0wxVWFYSm5KdjNuQUFFQVQvL3dCRU1FblFBZEFJK3lBeDRmRVJJNUFMQUFSVml3Q3k4YnNRc2RQbG13QUVWWXNBTXZHN0VERHo1WnNnOExBeEVTT2JBTEVMSVNBUW9yV0NIWUcvUlpzaFVMQXhFU09iQVZMN0wvRlFGeHNnOFZBWEt5UHhVQmNiTFBGUUZ4dEc4VmZ4VUNjYlN2RmI4VkFsMnlYeFVCY3JLUEZRRnlzaFlCQ2l0WUlkZ2I5Rm13QXhDeUdnRUtLMWdoMkJ2MFdiSWRBd3NSRWprd01RRUdCQ01pQUJFMU5EWTJNeklFRnlNbUppTWlBeUVWSVJZV016STJOd1JDRWY3MzJleis3SDdzbk5ZQkJCVHpESDF5K3hZQmdQNkFDbjZEZUh3TkFZUy8xUUVzQVF0RXFmK0syc0p3YWY3UHhKU2ZZbkFBQWdBa0FBQUhGUVNOQUJjQUlBQjJzZ1FoSWhFU09iQUVFTEFZMEFDd0FFVllzQkl2RzdFU0hUNVpzQUJGV0xBREx4dXhBdzgrV2JBQVJWaXdDeThic1FzUFBsbXdFaEN5QlFFS0sxZ2gyQnYwV2JBTEVMSU9BUW9yV0NIWUcvUlpzaFFTQXhFU09iQVVMN0lZQVFvcldDSFlHL1Jac0FNUXNoa0JDaXRZSWRnYjlGa3dNUUVVQmdjaEVTRURCZ0lHSXlNM056WTJOeE1oRVRNeUZpVVJNekkyTlRRbUl3Y1YrYy8rRmY2a0RndFlySkUwQVNaZ1Rnd1ZBenZzMnZyOVFQRm5kWFptQVgrcjBnSUR5ZjZjNy83L2RjMENCNS90QWl2K2JOQU0vbzVyVTFGakFBQUNBSFlBQUFjWUJJMEFFd0FjQU1HeUFSMGVFUkk1c0FFUXNCVFFBTEFBUlZpd0V5OGJzUk1kUGxtd0FFVllzQUl2RzdFQ0hUNVpzQUJGV0xBUUx4dXhFQTgrV2JBQVJWaXdEUzhic1EwUFBsbXlBQkFURVJJNXNBQXZ0SzhBdndBQ1hiSS9BQUZ4c3M4QUFYR3lQd0FCY3JKZkFBRnlzdjhBQVhHeUR3QUJjclJ2QUg4QUFuRzAzd0R2QUFKZHRCOEFMd0FDWGJLZkFBRnlzZ1FOQWhFU09iQUVMN0FBRUxJUEFRb3JXQ0hZRy9SWnNBUVFzaFFCQ2l0WUlkZ2I5Rm13RFJDeUZRRUtLMWdoMkJ2MFdUQXhBU0VSTXhFek1oWVdGUlFHSXlFUklSRWpFVE1CRVRNeU5qVTBKaU1CYVFIOTgvS00wbS8vMHY0Zi9nUHo4d0x3OFdkMWRtWUNuZ0h2L214ZnEzQ3YwQUhiL2lVRWpmMm8vbzVyVTFGakFBQUJBQ1FBQUFWU0JJMEFGUUJYc2hJV0Z4RVNPUUN3QUVWWXNBTXZHN0VESFQ1WnNBQkZXTEFVTHh1eEZBOCtXYkFBUlZpd0RTOGJzUTBQUGxtd0F4Q3lCQUVLSzFnaDJCdjBXYkFBMExJSUZBTVJFam13Q0MreUVRRUtLMWdoMkJ2MFdUQXhBU0UxSVJVaEZUWXpNaFlYRVNNUk5DWWpJZ2NSSXdGKy9xWURyZjZnaG83ZTZ3VHpkSFNCaGZNRHljVEU3U2JQeS82WUFWcDhhU2I5NXdBQUFRQjIvcDhFWVFTTkFBc0FUN0lEREEwUkVqa0FzQUl2c0FCRldMQUdMeHV4QmgwK1diQUFSVml3Q2k4YnNRb2RQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFFTHh1eEJBOCtXYklJQVFvcldDSFlHL1Jac0FuUU1ERWhJUkVqRVNFUk14RWhFVE1FWWY2SzgvNSs4d0lGOC82ZkFXRUVqZncyQThvQUFnQjJBQUFFS0FTTkFBc0FGQUJlc2dnVkZoRVNPYkFJRUxBTTBBQ3dBRVZZc0Fvdkc3RUtIVDVac0FCRldMQUlMeHV4Q0E4K1diQUtFTElBQVFvcldDSFlHL1Jac2dNS0NCRVNPYkFETDdBSUVMSU1BUW9yV0NIWUcvUlpzQU1Rc2hJQkNpdFlJZGdiOUZrd01RRWhGVE1XRmhBR0l5RVJJUUV5TmpVMEppY2pFUU95L2JmOHovVDQyZjRmQXp6K3FHaHpjR2IyQTh2Z0E4VCtxTXdFamZ3MlkxUlBYUUgrbkFBQ0FDZityd1VWQkkwQUR3QVZBRnV5RXhZWEVSSTVzQk1Rc0FYUUFMQU5MN0FBUlZpd0JTOGJzUVVkUGxtd0FFVllzQXN2RzdFTER6NVpzZ0FCQ2l0WUlkZ2I5Rm13QjlDd0NOQ3dEUkN3Q3RDd0NCQ3dFTkN3RWRDd0JSQ3lFZ0VLSzFnaDJCdjBXVEF4Tno0Q054TWhFVE1SSXhFaEVTTVRJU0VSSVFjQ2drcENJd1VNQXoyVzh2ejM4d0VCZEFIdy9xRUhEY05SaHJSK0FjSDhOdjNzQVZIK3J3SVVBd2I4L3E0QUFRQWFBQUFHSHdTTkFCVUFucklCRmhjUkVqa0FzQUJGV0xBUkx4dXhFUjArV2JBQVJWaXdEaThic1E0ZFBsbXdBRVZZc0Fvdkc3RUtIVDVac0FCRldMQUdMeHV4Qmc4K1diQUFSVml3QXk4YnNRTVBQbG13QUVWWXNCVXZHN0VWRHo1WnNnd0REaEVTT2JBTUw3SS9EQUZ4c2w4TUFYS3l6d3dCY2JTdkRMOE1BbDIwand5ZkRBSnlzQS9Rc2dFQkNpdFlJZGdiOUZtd0JOQ3lDQThFRVJJNXNoTUJEeEVTT1RBeEFTTVJJeEVqQXlFQkFTRVRNeEV6RVRNVElRRUJJUVAxWC9OZy9QN1RBVnoreEFFZTkxVHpWUGNCSHY3Q0FWNyswd0hWL2lzQjFmNHJBbFFDT2Y0Z0FlRCtJQUhnL2REOW93QUFBUUJDLy9BRDV3U2RBQ2NBaXJJbUtDa1JFamtBc0FCRldMQUtMeHV4Q2gwK1diQUFSVml3Rmk4YnNSWVBQbG13Q2hDeUF3RUtLMWdoMkJ2MFdiSUdDaFlSRWpteUpnb1dFUkk1c0NZdnNzOG1BWEd5UHlZQmNiU3ZKcjhtQWwyeS95WUJjYklQSmdGeXNsOG1BWEt5SXdFS0sxZ2gyQnYwV2JJUUl5WVJFam15SEJZS0VSSTVzQllRc2g0QkNpdFlJZGdiOUZrd01RRTBKaU1pQmhVak5EWXpNaFlWRkFZSEZoWVZGQVFqSWlZbkpqVXpGak15TmpVMEp5TTFNellDNG5CclcyYno4OFBZOUc1ZGIyNysvdHhkcno5ODh3dktkM1RnbEpySEEwTkdUMFk4bExPbmxsdUtKeVNSVzUrMUxTOWJuNU5YU0tZRHNBUUFBUUIyQUFBRWJnU05BQWtBVExJQUNnc1JFamtBc0FCRldMQUFMeHV4QUIwK1diQUFSVml3Q0M4YnNRZ2RQbG13QUVWWXNBVXZHN0VGRHo1WnNBQkZXTEFETHh1eEF3OCtXYklFQXdBUkVqbXlDUVVJRVJJNU1ERUJNeEVqRVFFakVUTVJBM3Z6OC8zdTgvTUVqZnR6QXlQODNRU04vT0FBQVFCMkFBQUVRQVNOQUF3QWQ3SUFEUTRSRWprQXNBQkZXTEFJTHh1eENCMCtXYkFBUlZpd0JTOGJzUVVkUGxtd0FFVllzQUl2RzdFQ0R6NVpzQUJGV0xBTUx4dXhEQTgrV2JJR0FnVVJFam13QmkreVB3WUJjYkpmQmdGeXNzOEdBWEcwcndhL0JnSmR0SThHbndZQ2NySUJBUW9yV0NIWUcvUlpzZ29CQmhFU09UQXhBU01SSXhFekVUTUJJUUVCSVFIVGF2UHpZd0U0QVIzK2NnR3QvdEVCMWY0ckJJMytJQUhnL2NYOXJnQUJBQ1FBQUFSVkJJMEFFQUJOc2dRUkVoRVNPUUN3QUVWWXNBQXZHN0VBSFQ1WnNBQkZXTEFCTHh1eEFROCtXYkFBUlZpd0NTOGJzUWtQUGxtd0FCQ3lBd0VLSzFnaDJCdjBXYkFKRUxJTUFRb3JXQ0hZRy9SWk1ERUJFU01SSVFNR0FnWUhJemMzTmpZM0V3UlY4LzZrRHd4WHFvdzZBU2RpU2d3V0JJMzdjd1BKL3AvdC92NTRBYzBFQzZEbUFpc0FBQUVBSC8vc0JEa0VqUUFQQUVPeUFCQVJFUkk1QUxBQVJWaXdEeThic1E4ZFBsbXdBRVZZc0FJdkc3RUNIVDVac0FCRldMQUlMeHV4Q0E4K1diSUJDQThSRWpteUN3RUtLMWdoMkJ2MFdUQXhBUmNUSVFFT0FpTW5OeGN5TndFaEFpa1Q4d0VLL25BNFduNWFaZ0ZYWURQK1d3RU9Ba3MzQW5uOGZuNXBPQVhBQkdFRGZ3QUFBUUIyL3E4RkpBU05BQXNBUXJJSkRBMFJFamtBc0FNdnNBQkZXTEFITHh1eEJ4MCtXYkFBUlZpd0NpOGJzUW9kUGxtd0FFVllzQVV2RzdFRkR6NVpzZ2dCQ2l0WUlkZ2I5Rm13QU5Bd01TVXpBeU1SSVJFekVTRVJNd1Jpd2hUZC9FUHpBZ1gwdy8zc0FWRUVqZncyQThvQUFRQkJBQUFFRmdTTkFCRUFScklFRWhNUkVqa0FzQUJGV0xBSkx4dXhDUjArV2JBQVJWaXdFQzhic1JBZFBsbXdBRVZZc0FFdkc3RUJEejVac2cwQkNSRVNPYkFOTDdJRUFRb3JXQ0hZRy9SWk1ERWhJeEVHSXlJbUp4RXpFUlFXTXpJM0VUTUVGdk9HZ2Vyd0FmTnZlWUtGOHdHcUp0TFJBV2Irbm5kc0pnSWZBQUVBZGdBQUJnNEVqUUFMQUVHeUJ3d05FUkk1QUxBQVJWaXdBeThic1FNZFBsbXdBRVZZc0FFdkc3RUJEejVac2dRQkNpdFlJZGdiOUZtd0F4Q3dCdEN3QkJDd0NOQ3dCaEN3Q3RBd01TRWhFVE1SSVJFekVTRVJNd1lPK21qekFWL3pBV0R6QkkzOE5nUEsvRFlEeWdBQkFIYityd2JSQkkwQUR3QkJzZ3NRRVJFU09RQ3dBeSt3QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFFTHh1eEJBOCtXYklBQVFvcldDSFlHL1Jac0EzUXNBblFzQWNRc0FyUXNBN1FNREVsTXdNakVTRVJNeEVoRVRNUklSRXpCZy9DRk4zNmx2TUJYL01CWVBURC9ld0JVUVNOL0RZRHl2dzJBOG9BQWdBS0FBQUZHd1NOQUF3QUZRQmVzZ2dXRnhFU09iQUlFTEFVMEFDd0FFVllzQWN2RzdFSEhUNVpzQUJGV0xBREx4dXhBdzgrV2JBSEVMSUZBUW9yV0NIWUcvUlpzZ29IQXhFU09iQUtMN0FERUxJTkFRb3JXQ0hZRy9SWnNBb1FzaE1CQ2l0WUlkZ2I5Rmt3TVFFVUJnY2hFU0UxSVJFek1oWUJNalkxTkNZbkl4RUZHL25QL2hYK29nSlM2OXY1L2pKbWRYRmkrUUYvcTlJQ0E4bkUvbXpRL3BwclUwOWpBdjZPLy84QWRnQUFCYWtFalFBbUFnZ0FBQUFIQWNJRU1nQUFBQUlBZGdBQUJDZ0VqUUFMQUJRQVRiSURGUllSRWptd0F4Q3dETkFBc0FCRldMQUdMeHV4QmgwK1diQUFSVml3QkM4YnNRUVBQbG15QndRR0VSSTVzQWN2c2hNQkNpdFlJZGdiOUZtd0JCQ3lGQUVLSzFnaDJCdjBXVEF4QVJRR0l5RVJNeEV6TWhZV0FUSTJOVFFtSnlNUkJDai8wdjRmOC9LTTBtLytNbVoxY1dMNUFYK3YwQVNOL214ZnEvN1VhMU5QWXdMK2pnQUFBUUE4Ly9BRU1BU2RBQjBBaDdJREhoOFJFamtBc0FCRldMQVNMeHV4RWgwK1diQUFSVml3R2k4YnNSb1BQbG15QUJvU0VSSTVzZ01CQ2l0WUlkZ2I5Rm15Q1JJYUVSSTVzQWt2c3M4SkFYR3lQd2tCY2JSdkNYOEpBbkcwcndtL0NRSmRzdjhKQVhHeUR3a0JjckpmQ1FGeXNnWUJDaXRZSWRnYjlGbXdFaEN5Q3dFS0sxZ2gyQnYwV2JJT0Vob1JFamt3TVFFV0ZqTXlOamNoTlNFQ0l5SUdCeU0ySkRNeUFCY1hGQVlHSXlJa0p3RXZEWHg0Z29BSy9uOEJnQmI3Y24wTTh4UUJCTmJpQVJjTUFYdnFtOXorK0E4QmhIQmluNVRFQVRGcGNNTGEvdWp3ZGFuL2lOcTZBQUFDQUhiLzhBWkJCSjBBRXdBaEFLK3lCQ0lqRVJJNXNBUVFzQm5RQUxBQVJWaXdFQzhic1JBZFBsbXdBRVZZc0Fzdkc3RUxIVDVac0FCRldMQURMeHV4QXc4K1diQUFSVml3Q0M4YnNRZ1BQbG15RFFnTEVSSTVzQTB2dEs4TnZ3MENYYlJ2RFg4TkFuR3kvdzBCY2JJUERRRnl0SThObncwQ2NySmZEUUZ5c3M4TkFYR3lQdzBCY2JRZkRTOE5BbDJ5encwQmNySUdBUW9yV0NIWUcvUlpzQkFRc2hjQkNpdFlJZGdiOUZtd0F4Q3lIZ0VLSzFnaDJCdjBXVEF4QVJBQUl5SUFKeU1SSXhFekVUTTJBRE15QUJFbk5DWWpJZ1lWRlJRV016STJOUVpCL3QvdDN2N2lFN3p5OHJ3VUFSM2M4QUVnOHBhSWhwaVpoNGlVQWl6KytQN01BUkRpL2g0RWpmNFk2UUVQL3NmKzlRaTN3TUMzTmJMSHc3WUFBZ0JEQUFBRUVnU05BQXdBRlFCYXNnWVdGeEVTT2JBR0VMQVEwQUN3QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFKTHh1eENROCtXYklSQ1FjUkVqbXdFUyt5Q2dFS0sxZ2gyQnYwV2JJQkNoRVJFam13Q1JDd0ROQ3dCeEN5RWdFS0sxZ2gyQnYwV1RBeE13RW1OVFEyTXlFUkl4RWpBeE1VRmpNekVTTWlCa01CRnRidzB3SE04L0htTG1GcjNkMWhhd0lLVnRHanVmdHpBYnorUkFNaVNsa0JTbGNBQUFFQUNnQUFBLzhFalFBTkFGQ3lBUTRQRVJJNUFMQUFSVml3Q0M4YnNRZ2RQbG13QUVWWXNBSXZHN0VDRHo1WnNnY0NDQkVTT2JBSEw3SUVCd29yV0NIWUcvUlpzQUhRc0FnUXNnc0JDaXRZSWRnYjlGbXdCeEN3RE5Bd01RRWpFU01SSXpVekVTRVZJUkV6QXFmVzg5VFVBeUg5MHRZQjV2NGFBZWFxQWYzRS9zY0FBQUVBR3Y2dkJtMEVqUUFaQUtTeUNCb2JFUkk1QUxBREw3QUFSVml3RVM4YnNSRWRQbG13QUVWWXNBVXZHN0VGRHo1WnNBQkZXTEFKTHh1eENROCtXYkFBUlZpd0RTOGJzUTBQUGxteUZ3a1JFUkk1c0JjdnNqOFhBWEd5WHhjQmNyTFBGd0Z4dEs4WHZ4Y0NYYlNQRjU4WEFuS3lCd0VLSzFnaDJCdjBXYklBQnhjUkVqbXdCUkN5QVFFS0sxZ2gyQnYwV2JBSEVMQUwwTElQRndjUkVqbXdGeEN3RXRDd0VSQ3dGTkN3R05Bd01RRVRNeEVqRVNNREl4RWpFU01ESVFFQklSTXpFVE1STXhNaEJNSHV2dENyL1YvellQeiswd0ZjL3NRQkh2ZFU4MVQzQVI0Q1hmNWwvZTBCVVFIVi9pc0IxZjRyQWxRQ09mNGdBZUQrSUFIZ0FBRUFkdjZ2Qkh3RWpRQVFBSWl5QUJFU0VSSTVBTEFFTDdBQVJWaXdEQzhic1F3ZFBsbXdBRVZZc0E4dkc3RVBIVDVac0FCRldMQUpMeHV4Q1E4K1diQUFSVml3Qmk4YnNRWVBQbG15RFFrTUVSSTVzQTB2c2o4TkFYR3lYdzBCY3JMUERRRnh0SzhOdncwQ1hiU1BEWjhOQW5LeUNBRUtLMWdoMkJ2MFdiSUFDQTBSRWptd0JoQ3lBUUVLSzFnaDJCdjBXVEF4QVFFekVTTVJJd0VqRVNNUk14RXpBU0VDa3dFaHlOQ2Ivc0pxOC9OakFUZ0JIUUpTL25EOTdRRlJBZFgrS3dTTi9pQUI0QUFCQUhZQUFBVCtCSTBBRkFDQXNnVVZGaEVTT1FDd0FFVllzQlF2RzdFVUhUNVpzQUJGV0xBR0x4dXhCaDArV2JBQVJWaXdFUzhic1JFUFBsbXdBRVZZc0Fvdkc3RUtEejVac2dBUkZCRVNPYkFBTDdJL0FBRnhzbDhBQVhLeXp3QUJjYlN2QUw4QUFsMjBqd0NmQUFKeXNBVFFzQUFRc2hBQkNpdFlJZGdiOUZtd0ROQ3lDQXdBRVJJNU1ERUJNelV6RlRNQklRRUJJUUVqRlNNMUl4RWpFVE1CYVVlak53RTRBUnorY2dHdS90SCt3ajZqUi9QekFxM2UzZ0hnL2NUOXJ3SFZ5OHYrS3dTTkFBQUJBQ1FBQUFWT0JJMEFEZ0NGc2drUEVCRVNPUUN3QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFLTHh1eENoMCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQTR2RzdFT0R6NVpzZ2dDQnhFU09iQUlMN0kvQ0FGeHNsOElBWEt5endnQmNiU3ZDTDhJQWwyMGp3aWZDQUp5c2dFQkNpdFlJZGdiOUZtd0J4Q3lCQUVLSzFnaDJCdjBXYklNQVFnUkVqa3dNUUVqRVNNUklUVWhFVE1CSVFFQklRTGhhdlArb0FKVFl3RTRBUjMrY2dHdC90RUIxZjRyQThyRC9pQUI0UDNFL2E4QUFnQlAvK3NGbUFTbEFDTUFMZ0NNc2hVdk1CRVNPYkFWRUxBazBBQ3dBRVZZc0Jzdkc3RWJIVDVac0FCRldMQUxMeHV4Q3gwK1diQUFSVml3QkM4YnNRUVBQbG13QUVWWXNBQXZHN0VBRHo1WnNnSUVHeEVTT2JBQ0w3QUxFTElNQVFvcldDSFlHL1Jac0FRUXNoTUJDaXRZSWRnYjlGbXdBQkN5SXdFS0sxZ2gyQnYwV2JBQ0VMQW0wTEFiRUxJc0FRb3JXQ0hZRy9SWk1ERUZJaWNHSXlBQUF6VTBBRE1WSWdZVkZSUVdNek0zSmdNMU5CSXpNaElYRlJBSEZqTUJFQmMyTnpVMEppTWlFUVdZNDY2UnFmN2EvcXdFQVFqYmNYL0x3QnNid0FMY3Y4YmRBYU5mWFAyVXZxSUJVMXV6RURrK0FUd0JHRHIrQVM3TXRMRW15ODBDcWdFZUxPb0JEZjc4N0VqKy82MExBZEwrOUc5NDh6V2drUDdTLy84QUJRQUFCRFlFalFBbUFkSUFBQUFIQWQ0QU8vN1ZBQUVBRmY2dkJJc0VqUUFQQUZxeUNoQVJFUkk1QUxBSEw3QUFSVml3QVM4YnNRRWRQbG13QUVWWXNBOHZHN0VQSFQ1WnNBQkZXTEFMTHh1eEN3OCtXYkFBUlZpd0NTOGJzUWtQUGxteUFBOExFUkk1c2dRQkNpdFlJZGdiOUZteUNnc1BFUkk1TURFQkV5RUJBVE1SSXhFakF3TWhBUUVoQWlmeUFSeitpUUVKeE0rUy8vcis1QUdCL29nQkdnTDZBWlA5dnY1My9lMEJVUUdaL21jQ1N3SkNBQUVBSlA2dkJpNEVqUUFQQUZ5eUNSQVJFUkk1QUxBQ0w3QUFSVml3Q0M4YnNRZ2RQbG13QUVWWXNBNHZHN0VPSFQ1WnNBQkZXTEFFTHh1eEJBOCtXYklBQVFvcldDSFlHL1Jac0FnUXNnWUJDaXRZSWRnYjlGbXdDdEN3QzlDd0FCQ3dETkN3RGRBd01TVXpBeU1SSVJFaE5TRVZJUkVoRVRNRmFzUVUzdnhFL3FRRG92NnNBZ2J5dy8zc0FWRUR5Y1RFL1BvRHlnQUFBUUJCQUFBRUZnU05BQmNBVDdJRUdCa1JFamtBc0FCRldMQU1MeHV4REIwK1diQUFSVml3Rmk4YnNSWWRQbG13QUVWWXNBRXZHN0VCRHo1WnNoQUJEQkVTT2JBUUw3SUhBUW9yV0NIWUcvUlpzQVRRc0JBUXNCUFFNREVoSXhFR0J4VWpOU1ltSnhFekVSUVdGelV6RlRZM0VUTUVGdk5NVnFQTXp3THpWRmFqU2xqekFhb1dDc3pJRGRHL0FXcituMnRwRFBQeUNSZ0NId0FBQVFCMkFBQUVTd1NOQUJFQVJySUVFaE1SRWprQXNBQkZXTEFCTHh1eEFSMCtXYkFBUlZpd0VDOGJzUkFQUGxtd0FFVllzQWt2RzdFSkR6NVpzZ1FRQVJFU09iQUVMN0lOQVFvcldDSFlHL1JaTURFVE14RTJNeklXRlJFakVUUW1JeUlIRVNOMjg0YUE3ZS96ZFhTQmhmTUVqZjVXSnRiUi9wNEJZWHhwSnYzZ0FBSUFDdi93QmFnRW93QWJBQ01BWkxJTkpDVVJFam13RFJDd0hkQUFzQUJGV0xBT0x4dXhEaDArV2JBQVJWaXdBQzhic1FBUFBsbXlJQTRBRVJJNXNDQXZzaElCQ2l0WUlkZ2I5Rm13QTlDd0lCQ3dDdEN3QUJDeUZRRUtLMWdoMkJ2MFdiQU9FTEljQVFvcldDSFlHL1JaTURFRklBQW5KaVkxTXhRV0Z6NENNeUFBRVJVaEVpRXlOemNYQmdZRElnWUhJVFUwSmdQSi92cit3QXl1djhGVVdBbVA4WkVCQUFFWC9NQVNBVStHY3k5Qk84V2hnS0FJQWt5VkVBRVI2Z3ZkdTExMkRKTGtmdjdsL3ZlVi90QXJFcm9oTEFQdXBZd1docFVBQUFJQVQvL3dCSUVFb3dBV0FCNEFYcklJSHlBUkVqbXdDQkN3RjlBQXNBQkZXTEFBTHh1eEFCMCtXYkFBUlZpd0NDOGJzUWdQUGxteURRQUlFUkk1c0EwdnNBQVFzaEFCQ2l0WUlkZ2I5Rm13Q0JDeUZ3RUtLMWdoMkJ2MFdiQU5FTElhQVFvcldDSFlHL1JaTURFQklBQVhGUlFHQmlNZ0FCRTFJU1ltSXlJSEJ5YzJOaE15TmpjaEZSUVdBamtCQ3dFN0FvejVsdjcrL3VzRFB3ZXpwb1oyTFVGQXlaaUJuZ3I5dEpRRW8vN2MrWHFiK1lnQkhBRUlsWmFhTEJHNklpdjhFcU9PRm9hVkFBQUJBRUwvN0FQb0JJMEFHUUJwc2hJYUd4RVNPUUN3QUVWWXNBSXZHN0VDSFQ1WnNBQkZXTEFMTHh1eEN3OCtXYkFDRUxJQUFRb3JXQ0hZRy9SWnNnUUNBQkVTT2JJWkN3SVJFam13R1Mrd0JkQ3lEd3NDRVJJNXNBc1FzaElCQ2l0WUlkZ2I5Rm13R1JDeUdBY0tLMWdoMkJ2MFdUQXhBU0UxSVJjQkZoWVZGQVFqSWlZMU14WVdNekkyTlRRakl6VUNqZjNlQTFJQi9zYWl3djhBMzlEMzh3UnhaWE56OFgwRHljU2Ivc0FVdjR1b3dMbWhTVkJhVTdDN0FBTUFULy93Qkc4RW5RQU9BQlVBSEFCK3NnTWRIaEVTT2JBREVMQVAwTEFERUxBVzBBQ3dBRVZZc0Fzdkc3RUxIVDVac0FCRldMQURMeHV4QXc4K1diQUxFTElQQVFvcldDSFlHL1Jac2hNTEF4RVNPWHl3RXk4WXRHQVRjQk1DWGJRd0UwQVRBbDJ5OEJNQlhiSUFFd0Z4c0FNUXNoWUJDaXRZSWRnYjlGbXdFeEN5R1FFS0sxZ2gyQnYwV1RBeEFSQUFJeUlBRVRVMEVqWXpNZ0FSQVNJR0J5RW1KZ015TmpjaEZoWUViLzdmN2V6KzJvWHdtL0FCSVAzd2VaUU9BallPazNoNWtRNzl6QStWQWl6KytQN01BVFVCREM2c0FRZUwvc2YrOVFGL25aV1ZuZnpiblpPVG5RQUFBUUE0QUFBRUdnU2RBQ2NBcnJJbEtDa1JFamtBc0FCRldMQWRMeHV4SFIwK1diQUFSVml3REM4YnNRd1BQbG15QmgwTUVSSTVzQVl2c2c4R0FWMndBZEN3QVMreXp3RUJYVUFKSHdFdkFUOEJUd0VFWGJJQUFRRmRzZ0lDQ2l0WUlkZ2I5Rm13QmhDeUJ3SUtLMWdoMkJ2MFdiQU1FTElLQVFvcldDSFlHL1Jac0E3UXNBL1FzQWNRc0JIUXNBWVFzQlBRc0FJUXNCYlFzQUVRc0JqUXNCMFFzaVFCQ2l0WUlkZ2I5Rm15SVNRQkVSSTVzZ3doQVYwd01RRWhGU0VYRlNFVklRWUhJUWNoTlRNMk55TTFNelVuSXpVekp5WTJNeklXRlNNMEppTWlCaGNCeEFHRC9vSURBWHYrY3hJbUFwZ0IvR1VLTkJLV29RT2VtUUVHMkwvRTEvTlVVMDFYQlFLNmtrSVdrMFUxdzhNT2JKTU9TcEluenU3UXRscG5mbmtBQUFFQVJ2L3dBN0FFbmdBaUFLQ3lDaU1rRVJJNUFMQUFSVml3Rmk4YnNSWWRQbG13QUVWWXNBa3ZHN0VKRHo1WnNpSVdDUkVTT2JBaUw3SVBJZ0ZkdEJBaUlDSUNYYklBQWdvcldDSFlHL1Jac0FrUXNnUUJDaXRZSWRnYjlGbXdBQkN3RE5Dd0loQ3dEdEN3SWhDd0U5Q3dFeSt5enhNQlhiWWZFeThUUHhNRFhiSUFFd0Zkc2hBQ0NpdFlJZGdiOUZtd0ZoQ3lHd0VLSzFnaDJCdjBXYkFURUxBZDBMQVFFTEFmMERBeEFTRVdGak15TnhjR0l5SWtKeU0xTXpVak5UTTJOak15RndjbUl5SUhJUlVoRlNFRFR2NkRFWHR2VUhrYmRtN1UvdjhhbDVLU21Cci8wMng2Rmx0MTFpSUJmUDU5QVlNQmhHcG9ITDhmME1TU1hKUEQxaUMvSE5hVFhBQUFCQUIyQUFBSHh3U2VBQU1BRHdBZEFDY0FxckllS0NrUkVqbXdIaEN3QWRDd0hoQ3dCTkN3SGhDd0VOQUFzQUJGV0xBbUx4dXhKaDArV2JBQVJWaXdKQzhic1NRZFBsbXdBRVZZc0FZdkc3RUdIVDVac0FCRldMQWhMeHV4SVE4K1diQUFSVml3SHk4YnNSOFBQbG13QmhDd0RkQ3dEUyt3QXRDd0FpKzJBQUlRQWlBQ0ExMnlBUUlLSzFnaDJCdjBXYkFORUxJVEFnb3JXQ0hZRy9SWnNBWVFzaG9DQ2l0WUlkZ2I5Rm15SUNRaEVSSTVzaVVmSmhFU09UQXhKU0UxSVFFME5pQVdGUlVVQmlBbU5SY1VGak15TmpjMU5DWWpJZ1lWQVNNQkVTTVJNd0VSTXdlSS9jVUNPLzJLdndFMndMNyt5c0d2V2xOUVdBSmRUMDVkL3FieS9mVHo4d0lNOHNpVkFmS1d1YmljU0phNHVKc0ZWMlZpVkZOWFpHTmIvTFFERy96bEJJMzg1QU1jQUFBQ0FDZ0FBQVNxQkkwQUZRQWVBSXl5RFI4Z0VSSTVzQTBRc0JmUUFMQUFSVml3REM4YnNRd2RQbG13QUVWWXNBTXZHN0VERHo1WnNnWUREQkVTT2JBR0w3SUZBUW9yV0NIWUcvUlpzQUhRc0FZUXNBclFzQW92dGc4S0h3b3ZDZ05kdG84S253cXZDZ05kdEI4S0x3b0NjYklKQVFvcldDSFlHL1Jac0JQUXNBWVFzQlRRc0FvUXNCYlFzQXdRc2g0QkNpdFlJZGdiOUZrd01TVWhGU00xSXpVek5TTTFNeEVoTWhZUUJnY2hGU0VCTXpJMk5UUW1JeU1DOXY3MTg5RFEwTkFCNjlIMjdjais5Z0VML3ZYNFlYTjFYdm1abVptMlRiY0NPdFArdE0wRlRRRUVaMVZXWlFBQ0FIei83QVJHQmdBQUR3QWFBR1N5RXhzY0VSSTVzQk1Rc0F6UUFMQUpMN0FBUlZpd0RDOGJzUXdiUGxtd0FFVllzQU12RzdFRER6NVpzQUJGV0xBR0x4dXhCZzgrV2JJRkRBTVJFam15Q2d3REVSSTVzQXdRc2hNQkNpdFlJZGdiOUZtd0F4Q3lHQUVLSzFnaDJCdjBXVEF4QVJRQ0l5SW5CeU1STXhFMk16SVNFU2MwSmlNaUJ4RVdNekkyQkVieng4QnRFZEx6YWJMTThQT0xlNXBFUjVsNmlnSVI5UDdQam5vR0FQM1NmUDdXL3ZvSXBydUYvamVIdkFBQUFRQlEvK3dFQUFST0FCMEFTN0lYSGg4UkVqa0FzQUJGV0xBUUx4dXhFQnMrV2JBQVJWaXdDQzhic1FnUFBsbXlBQUVLSzFnaDJCdjBXYklEQ0JBUkVqbXlGQkFJRVJJNXNCQVFzaGNCQ2l0WUlkZ2I5Rmt3TVNVeU5qY3pEZ0lqSWdBMU5UUTJOak15RmhjakppWWpJZ1lWRlJRV0FrSmFlZ2JrQkhyS2RPYis4bnJobU1QMEJ1UUhlRng1aFlXdWFVOW1zR1FCSy80Wm52dUg1TFJmZHJPeUc2MndBQUlBVC8vc0JCY0dBQUFSQUJ3QVpMSWFIUjRSRWptd0doQ3dCTkFBc0FjdnNBQkZXTEFFTHh1eEJCcytXYkFBUlZpd0RTOGJzUTBQUGxtd0FFVllzQWt2RzdFSkR6NVpzZ1lFRFJFU09iSUxCQTBSRWptd0RSQ3lGUUVLSzFnaDJCdjBXYkFFRUxJYUFRb3JXQ0hZRy9SWk1ERVRORFkyTXpJWEVUTVJJeWNHSXlJbUpqVTNGQll6TWpjUkppTWlCazl3ellLc2F2UFRFV3k3ZnN0MDg0MTdsRVpHa24yTkFpYWYvWXgzQWluNkFIV0pqUDJiQVozQ2dRSFhmY0VBLy84QVd3QUFBcklGdFFBR0FCV3pBQUFDQUV6LzdBUlZCRTRBRHdBWkFFT3lCQm9iRVJJNXNBUVFzQmZRQUxBQVJWaXdCQzhic1FRYlBsbXdBRVZZc0F3dkc3RU1EejVac2hJQkNpdFlJZGdiOUZtd0JCQ3lGd0VLSzFnaDJCdjBXVEF4RXpRMk5qTXlBQlVWRkFZR0l5SUFOUmNVRmpJMk5UUW1JZ1pNZ3V1VzVnRWdmKzJZNXY3aDhwWDhrNWY0bFFJbm4vMkwvczM4RFozOGpRRXgvZ21neE1TMW44WEdBQUlBZlA1Z0JFUUVUZ0FRQUJzQWJySVpIQjBSRWptd0dSQ3dEZEFBc0FCRldMQU5MeHV4RFJzK1diQUFSVml3Q2k4YnNRb2JQbG13QUVWWXNBY3ZHN0VIRVQ1WnNBQkZXTEFFTHh1eEJBOCtXYklHRFFRUkVqbXlDdzBFRVJJNXNBMFFzaFFCQ2l0WUlkZ2I5Rm13QkJDeUdRRUtLMWdoMkJ2MFdUQXhBUlFHQmlNaUp4RWpFVE1YTmpNeUVoY0hOQ1lqSWdjUkZqTXlOZ1JFYjhpQnNXenoyUTVzdXNIdkN2R1JmSkpFUlpONGt3SVJudjJLZFA0QUJkcHhoZjdyN0NlZnduaitGM2pEQUFBQ0FFLytZQVFXQkU0QUVBQWJBR3V5R1J3ZEVSSTVzQmtRc0FUUUFMQUFSVml3QkM4YnNRUWJQbG13QUVWWXNBY3ZHN0VIR3o1WnNBQkZXTEFKTHh1eENSRStXYkFBUlZpd0RTOGJzUTBQUGxteUJnUU5FUkk1c2dzRURSRVNPYklVQVFvcldDSFlHL1Jac0FRUXNoa0JDaXRZSWRnYjlGa3dNUk0wTmpZek1oYzNNeEVqRVFZaklnSW5OeFFXTXpJM0VTWWpJZ1pQYjgyR3Qyc1Iwdk5xcXI3MkMvS1RlSkJHU0l4K2p3SW1vdnlLZ203NkpnSDhjQUVjNGllZXhYWUI5SFBHQUFBQ0FGUC83QVFMQkU0QUZnQWVBSHl5Q0I4Z0VSSTVzQWdRc0JmUUFMQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNBQXZHN0VBRHo1WnNoc0lBQkVTT2JBYkw3Uy9HODhiQWwyMFh4dHZHd0p4dEI4Ykx4c0NjYktQR3dGZHRPOGIveHNDY2JJTUJ3b3JXQ0hZRy9SWnNBQVFzaEFCQ2l0WUlkZ2I5Rm13Q0JDeUZ3RUtLMWdoMkJ2MFdUQXhCU0lBTlRVME5qWXpNaElWRlNFV0ZqTXlOamNYQmdZRElnWUhJVFUwSmdKMjh2N1BmZUtMM2ZIOVBnK3BqVldTTVRvL3ZhZG1mQkFCMEhNVUFTajNJWjc1aS83MDkzdUZuUzhncGpJNUE1K05mQnB3ZndBQUFnQlIvbFlFQkFST0FCa0FKQUNEc2lJbEpoRVNPYkFpRUxBTDBBQ3dBRVZZc0FNdkc3RURHejVac0FCRldMQUdMeHV4QmhzK1diQUFSVml3Q3k4YnNRc1JQbG13QUVWWXNCY3ZHN0VYRHo1WnNnVURGeEVTT2JBTEVMSVJBUW9yV0NIWUcvUlpzZzhSRnhFU09iSVZBeGNSRWptd0Z4Q3lIUUVLSzFnaDJCdjBXYkFERUxJaUFRb3JXQ0hZRy9SWk1ERVROQkl6TWhjM014RVVBQ01pSmljM0ZqTXlOalUxQmlNaUFqY1VGak15TnhFbUl5SUdVZWZEdldzUjBQNzY3VmV2TnpWMWc0NkNhcTYrNnZLQmM1ZERSSlIyZ0FJbS9RRXJobkw4RVBMKy9pNGhzRCtXbENKMkFTLzJxTGVGQWRGL3RRQUFBUUJyLytzRkpnWEZBQjBBUUxJTUhoOFJFamtBc0FCRldMQU1MeHV4REI4K1diQUFSVml3QXk4YnNRTVBQbG13REJDeUV3RUtLMWdoMkJ2MFdiQURFTElhQVFvcldDSFlHL1JaTURFQkJnQWpJaVFDSnpVMEVpUXpNZ0FYSXlZbUl5SUNGUlVVRWpNeU5qY0ZKQmYrMHZtMi90eWdBWjRCSUxmN0FUUVgvUmFqa0t6TTBxeVJteFlCMnVuKytyUUJSZEk4MVFGS3RQN3o2WmlTL3Vidk5Pdis1SStXQUFFQWEvL3JCU1lGeFFBZ0FGV3lEQ0VpRVJJNUFMQUFSVml3REM4YnNRd2ZQbG13QUVWWXNBTXZHN0VERHo1WnNBd1FzaElCQ2l0WUlkZ2I5Rm13QXhDeUdRRUtLMWdoMkJ2MFdiSWdEQU1SRWptd0lDK3lIUUVLSzFnaDJCdjBXVEF4SlFZRUl5SWtBaWMxTkJJa016SUVGeU1DSVNJQ0J4VVVFak15TmpjUklUVWhCU1pHL3R5d3dQN09yUUtmQVNPMytBRXJIL2t1L3VtcTB3UG92R1NiSC83ZEFoKzhYM0t5QVVqUk1ka0JUN2J3NHdFSC91WHBNK3orM3pBa0FSdkFBQUFDQUpzQUFBVVhCYkFBQ3dBVkFFYXlBeFlYRVJJNXNBTVFzQS9RQUxBQVJWaXdBUzhic1FFZlBsbXdBRVZZc0FBdkc3RUFEejVac0FFUXNnd0JDaXRZSWRnYjlGbXdBQkN5RFFFS0sxZ2gyQnYwV1RBeE14RWhNZ1FTRnhVVUFnUUhBeEV6TWhJMU5UUUNJNXNCdnNnQlFiSURzUDdBek1TdTNQangyZ1d3c2Y3RHlEak0vcit5QXdUaysrWUJEdkFtNmdFTUFBQUNBR3YvNndWeUJjVUFFUUFnQUVheUJDRWlFUkk1c0FRUXNCM1FBTEFBUlZpd0RTOGJzUTBmUGxtd0FFVllzQVF2RzdFRUR6NVpzQTBRc2hVQkNpdFlJZGdiOUZtd0JCQ3lIUUVLSzFnaDJCdjBXVEF4QVJRQ0JDTWlKQUluTlRRU0pETXlCQklYQnpRQ0l5SUNGUlVVRmhZek1oSTNCWEttL3RpMHN2N1lxZ0dsQVNxMHNnRW1xQVQ3M0sycDMyYTJicVRZQ2dMRHp2Nnd1cm9CVHNreHl3Rk53TGYrdWNZUzVBRWkvdHZvSlpQeGhnRUoyZ0FBQWdCci93TUZjZ1hGQUJRQUl3QkdzZ2drSlJFU09iQUlFTEFnMEFDd0FFVllzQkF2RzdFUUh6NVpzQUJGV0xBSUx4dXhDQTgrV2JBUUVMSVlBUW9yV0NIWUcvUlpzQWdRc2lBQkNpdFlJZGdiOUZrd01RRVVBZ2NYQnlVR0l5SWtBaWMxTkJJa0lBUVNGd2MwQWlNaUFoVVZGQllXTXpJU05RVnlsNG52cGY3VlF6NnovdHFxQXFjQktBRm9BU2VvQWZ2Y3JhcmVaclZ2cnRrQ3hzcit2V0xBbFBVTnR3Rk55eTdRQVZLN3QvNnZ6Z1hzQVIvKzNlOGRsL0tFQVNEMUFBQUJBSmNBQUFMdkJJd0FCZ0F5QUxBQVJWaXdCUzhic1FVZFBsbXdBRVZZc0FBdkc3RUFEejVac2dRQUJSRVNPYkFFTDdJREFRb3JXQ0hZRy9SWk1ERWhJeEVGTlNVekF1L3ovcHNDT1I4RGFYck4wQUFCQUc0QUFBUXNCSjRBR1FCWnNna2FHeEVTT1FDd0FFVllzQkV2RzdFUkhUNVpzQUJGV0xBQUx4dXhBQTgrV2JJWUFRb3JXQ0hZRy9SWnNnSVlBQkVTT2JJREFCRVJFam13RVJDeUNRRUtLMWdoMkJ2MFdiSU1BQkVSRWpteUZ4RUFFUkk1TURFaElUVUJOalkxTkNZaklnWVZJelEyTmpNeUZoVVVCZ2NCSVFRcy9HQUIrMFk1YVZwbmUvTjUxNFhLNmxkdS9yRUNTWjhCdWo5alFFaGFlR0J6dkdxM25GcWZadjdXQUFBQkFIWUFBQU9YQmNRQUJ3QXlzZ01JQ1JFU09RQ3dBRVZZc0FZdkc3RUdIVDVac0FCRldMQUZMeHV4QlE4K1diQUdFTElDQVFvcldDSFlHL1JaTURFQk14RWhFU01SSVFLazgvM1M4d0l1QmNUK0JmdzNCSTBBQVFBUC9xTUQ4Z1NOQUJrQVdiSVNHaHNSRWprQXNBd3ZzQUJGV0xBQ0x4dXhBaDArV2JJQUFRb3JXQ0hZRy9SWnNnUUFBaEVTT2JJRkRBSVJFam13QlMrd0RCQ3lFUUVLSzFnaDJCdjBXYkFGRUxJWEF3b3JXQ0hZRy9SWnNoa1hCUkVTT1RBeEFTRTFJUlVCRmhZVkZBWUVJeUluTnhZek1qWTFOQ1lqSXpVQ252MjZBM2YrbmF2YmtQN3lzTWZPT1oydHBNU3F0MGdEeWNTUC9vQWE5N0NqODRSbnRsaTRrcGFTZXdBQUFnQTEvc1FFaXdTTUFBb0FEZ0JTQUxBQVJWaXdDUzhic1FrZFBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQUdMeHV4Qmc4K1diSUFBUW9yV0NIWUcvUlpzQVlRc0FYUXNBVXZzZ2dHQUJFU09iQUFFTEFNMExJTkNRSVJFamt3TVNVekZTTVJJeEVoSndFekFTRVJCd1BWdHJieS9WZ0dBcWI2L1dRQnFoZkN3LzdGQVR1VUEvbjhOZ0tBS2dELy93QkxBbzBDcWdXNEF3Y0IxQUFBQXBnQUV3Q3dBRVZZc0Fvdkc3RUtIejVac0JEUU1ERUEvLzhBTlFLWUFyNEZyUU1IQWRnQUFBS1lBQk1Bc0FCRldMQUpMeHV4Q1I4K1diQU4wREF4QVAvL0FFOENqUUt1QmEwREJ3SFpBQUFDbUFBUUFMQUFSVml3QVM4YnNRRWZQbGt3TWYvL0FFMENqUUs1QmJvREJ3SGFBQUFDbUFBVEFMQUFSVml3QUM4YnNRQWZQbG13Rk5Bd01RRC8vd0EyQXBnQ3JnV3RBd2NCMndBQUFwZ0FFQUN3QUVWWXNBVXZHN0VGSHo1Wk1ESC8vd0JMQW8wQ3FnVzRBd2NCM0FBQUFwZ0FHUUN3QUVWWXNCRXZHN0VSSHo1WnNCblFzQkVRc0IvUU1ERUEvLzhBUmdLUEFxTUZ1QU1IQWQwQUFBS1lBQk1Bc0FCRldMQUlMeHV4Q0I4K1diQWEwREF4QUFBQkFHYitvQVFlQkl3QUhBQmRzaGtkSGhFU09RQ3dEaSt3QUVWWXNBRXZHN0VCSFQ1WnNnTUJDaXRZSWRnYjlGbXlCd0VPRVJJNXNBY3ZzaGtCQ2l0WUlkZ2I5Rm15QlFjWkVSSTVzQTRRc2hNQkNpdFlJZGdiOUZteUVSTVpFUkk1c2h3WkV4RVNPVEF4RXhNaEZTRUROamMyRWhVVUJnWWpJaWMzRmpNeU5qVTBKaU1pQmdlSFdnTXAvWm90WlliUDdZWDFwZVMxU29TOWo2dU9lRk5tR3dGMUF4ZlMvcW95QWdMKzkrU1k4NEoxc21PemxJZWlOVHNBQUFFQVEvN0VCQkFFakFBR0FDVUFzQUV2c0FCRldMQUZMeHV4QlIwK1diSURBUW9yV0NIWUcvUlpzZ0FEQlJFU09UQXhBUUVqQVNFMUlRUVEvYmJ6QWo3OU1nUE5CQWI2dmdVRnd3QUNBRS8vOEFadEJKMEFGQUFlQUpHeUZoOGdFUkk1c0JZUXNBdlFBTEFBUlZpd0NpOGJzUW9kUGxtd0FFVllzQXN2RzdFTEhUNVpzQUJGV0xBQUx4dXhBQTgrV2JBQVJWaXdBaThic1FJUFBsbXdDeEN5RFFFS0sxZ2gyQnYwV2JJUUFBc1JFam13RUMreUVRRUtLMWdoMkJ2MFdiQUFFTElUQVFvcldDSFlHL1Jac0FJUXNoVUJDaXRZSWRnYjlGbXdDaEN5R0FFS0sxZ2gyQnYwV1RBeElTRUZJZ0FSTlRRU05qTUZJUlVoRVNFVklSRWhCVGNSSnlJR0ZSVVVGZ1p0L1VmK3Jleisyb1h3bXdGVEFyajl0d0gyL2dvQ1RQdjB6YytHbUprUUFUVUJEQzZzQVFlTEVNVCs4c1AreWc4SUF4UUp3TGMxc3NjQUFnQnovclFFVkFTZ0FCZ0FKQUJUc2g4bEpoRVNPYkFmRUxBTTBBQ3dGQyt3QUVWWXNBd3ZHN0VNSFQ1WnNCUVFzZ0FCQ2l0WUlkZ2I5Rm15R1JRTUVSSTVmTEFaTHhpeUJRRUtLMWdoMkJ2MFdiQU1FTElmQVFvcldDSFlHL1JaTURFRk1qWTNCaU1pQWpVME5qWXpNZ0FSRlJRQ0JDTWlKemNXRXpJM05UUW1JeUlHRlJRV0FlbVl2Umx5cXRIM2U5cUg4UUVVa2Y3enNwNkVMMzNSc0ZLSWYyMkhpb25JdmxvQkV1V1o3WUQrMGY3Mnp1WCtzckk4dGk4QjZYaXNwYlN4a29xd0FBQUNBR0wvNndTRkJLQUFEUUFhQUVheUF4c2NFUkk1c0FNUXNCZlFBTEFBUlZpd0NpOGJzUW9kUGxtd0FFVllzQU12RzdFRER6NVpzQW9Rc2hFQkNpdFlJZGdiOUZtd0F4Q3lGZ0VLSzFnaDJCdjBXVEF4QVJBQUl5SW1BalVRQURNeUZoSUhOQ1lnQmhVVkZCWXpNalkzQklYKzQvT2U4NElCSC9LZjhvSHltLzcybVpxR2haY0NBajcrNmY3RWpnRU14d0VXQVQ2Ty92T251TWZJdWl5MXpjVzAvLy8vdGY1TEFaTUVPZ0lHQUpzQUFQLy8vN1grU3dHVEJEb0NCZ0NiQUFELy93Q1BBQUFCZ2dRNkFBWUFqQUFBLy8vLysvNWNBWUlFT2dBbUFJd0FBQUFHQUtQU0N2Ly9BSThBQUFHQ0JEb0FCZ0NNQUFBQUFRQjIvK3NFRmdTY0FDRUFaYklCSWlNUkVqa0FzQUJGV0xBVkx4dXhGUjArV2JBQVJWaXdIeThic1I4UFBsbXdBRVZZc0JBdkc3RVFEejVac0I4UXNnSUJDaXRZSWRnYjlGbXlDaDhWRVJJNXNBb3ZzQm5Rc2dnRENpdFlJZGdiOUZtd0ZSQ3lEUUVLSzFnaDJCdjBXVEF4SlJZek1qWTFOQ1lqSXpVVEppTWlGUkVqRVRZMk16SVdGd01XRmhVVUJpTWlKd0hyUzBoTlhIeDBWTXBHVWJIdkFkSFBlTTFvK2FHcTJhOThiTnN4WlZKWVI2TUJBVG41L1J3QzhOZlZZVy8rMUJla2dhL0tOZ0QvL3dCSEFna0NWQUxOQWdZQUVRQUFBQUwvOXdBQUJQQUZzQUFQQUIwQWdySVFIaDhSRWptd0VCQ3dCdEFBc0FCRldMQUZMeHV4QlI4K1diQUFSVml3QUM4YnNRQVBQbG15QXdBRkVSSTVzQU12c3M4REFWMnlQd01CY2JKdkF3RnhzaDhEQVhHeW53TUJYYklQQXdGeXNnSUhDaXRZSWRnYjlGbXdFZEN3QUJDeUVnRUtLMWdoMkJ2MFdiQUZFTEliQVFvcldDSFlHL1Jac0FNUXNCM1FNREV6RVNNMU14RWhNZ1FTRlJVVUFnUWpFeU1STXpJMk5UVTBKaU1qRVRPeXU3c0Jyc0VCSzZTbC9zL0ZQK1dqeTlYT3hMSGxBb3lxQW5xcy9zVE1TYy8reHFvQ2pQNCsvZkJHN2ZyK1VnQUFBdi8zQUFBRThBV3dBQThBSFFDQ3NoQWVIeEVTT2JBUUVMQUcwQUN3QUVWWXNBVXZHN0VGSHo1WnNBQkZXTEFBTHh1eEFBOCtXYklEQUFVUkVqbXdBeSt5endNQlhiSS9Bd0Z4c204REFYR3lId01CY2JLZkF3RmRzZzhEQVhLeUFnY0tLMWdoMkJ2MFdiQVIwTEFBRUxJU0FRb3JXQ0hZRy9SWnNBVVFzaHNCQ2l0WUlkZ2I5Rm13QXhDd0hkQXdNVE1SSXpVekVTRXlCQklWRlJRQ0JDTVRJeEV6TWpZMU5UUW1JeU1STTdLN3V3R3V3UUVycEtYK3o4VS81YVBMMWM3RXNlVUNqS29DZXF6K3hNeEp6LzdHcWdLTS9qNzk4RWJ0K3Y1U0FBQUIvOVFBQUFRV0JnQUFHQUIwc2d3WkdoRVNPUUN3RlMrd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBSEx4dXhCdzgrV2JBQVJWaXdEeThic1E4UFBsbXlMeFVCWGJJUEZRRmRzaGdQRlJFU09iQVlMN0lBQndvcldDSFlHL1Jac2dJRUR4RVNPYkFFRUxJTUFRb3JXQ0hZRy9SWnNBQVFzQkhRc0JnUXNCUFFNREVCSXhFMk15QVRFU01STkNZaklnY1JJeEVqTlRNMU14VXpBbkhuZDdZQldnWHpZVjZTU1BQRHcvUG5CTWYrL1lyK2RmMDlBcnB3WFlMOCt3VEhxbytQQUFFQUxRQUFCTEFGc0FBUEFFd0FzQUJGV0xBS0x4dXhDaDgrV2JBQVJWaXdBaThic1FJUFBsbXlEd29DRVJJNXNBOHZzZ0FIQ2l0WUlkZ2I5Rm13Qk5Dd0R4Q3dCdEN3Q2hDeUNBRUtLMWdoMkJ2MFdiQU0wREF4QVNNUkl4RWpOVE1SSVRVaEZTRVJNd081ei92VDAvNCtCSVArT3M4REV2enVBeEtxQVNqTXpQN1lBQUgvNlAvc0FvVUZRUUFjQUhLeUFCMGVFUkk1QUxBQVJWaXdHeThic1JzYlBsbXdBRVZZc0JFdkc3RVJEejVac0JzUXNBSFFzQnNRc2hnQkNpdFlJZGdiOUZtd0JOQ3dHeEN3RjlDd0Z5K3dCZEN3QlMrd0Z4Q3lGQWNLSzFnaDJCdjBXYkFJMExBUkVMSU1BUW9yV0NIWUcvUlpzQnNRc0J6UXNCd3ZNREVCRVRNVkl4VXpGU01SRkJZek1qY1ZCaU1nRVJFak5UTTFJelV6RVFHdHY3L1kyREUvS2l0VFRmN28wdEt5c2dWQi92bTBwYXIrOHo0M0Nyd1hBVFVCRnFxbHRBRUgvLzhBRWdBQUJVSUhOZ0ltQUNVQUFBRUhBRVFCSXdFMkFCTUFzQUJGV0xBRUx4dXhCQjgrV2JBTTNEQXhBUC8vQUJJQUFBVkNCellDSmdBbEFBQUJCd0IxQWNJQk5nQVRBTEFBUlZpd0JTOGJzUVVmUGxtd0Rkd3dNUUQvL3dBU0FBQUZRZ2MzQWlZQUpRQUFBUWNBblFEREFUWUFFd0N3QUVWWXNBUXZHN0VFSHo1WnNBL2NNREVBLy84QUVnQUFCVUlITEFJbUFDVUFBQUVIQUtRQXhRRTNBQWtBc0FRdnNCYmNNREVBLy84QUVnQUFCVUlIQWdJbUFDVUFBQUVIQUdvQTdnRTJBQllBc0FCRldMQUVMeHV4QkI4K1diQVMzTEFiMERBeC8vOEFFZ0FBQlVJSGxBSW1BQ1VBQUFFSEFLSUJXQUZxQUF3QXNBUXZzQkRjc0JYUU1ESC8vd0FTQUFBRlFnZXhBaVlBSlFBQUFBY0Izd0ZlQVJ6Ly93Qm0vandFNndYRUFpWUFKd0FBQUFjQWVRSEovL3YvL3dDVUFBQUVUQWM5QWlZQUtRQUFBUWNBUkFEb0FUMEFFd0N3QUVWWXNBWXZHN0VHSHo1WnNBM2NNREVBLy84QWxBQUFCRXdIUFFJbUFDa0FBQUVIQUhVQmh3RTlBQk1Bc0FCRldMQUdMeHV4Qmg4K1diQU8zREF4QVAvL0FKUUFBQVJNQno0Q0pnQXBBQUFCQndDZEFJZ0JQUUFUQUxBQVJWaXdCaThic1FZZlBsbXdFTnd3TVFELy93Q1VBQUFFVEFjSkFpWUFLUUFBQVFjQWFnQ3pBVDBBRmdDd0FFVllzQVl2RzdFR0h6NVpzQlBjc0J6UU1ESC8vLy9JQUFBQm9BYzlBaVlBTFFBQUFRY0FSUCtYQVQwQUV3Q3dBRVZZc0FJdkc3RUNIejVac0FYY01ERUEvLzhBb3dBQUFuMEhQUUltQUMwQUFBRUhBSFVBTlFFOUFCTUFzQUJGV0xBREx4dXhBeDgrV2JBRzNEQXhBUC8vLzhzQUFBSjZCejRDSmdBdEFBQUJCd0NkL3pjQlBRQVRBTEFBUlZpd0FpOGJzUUlmUGxtd0NOd3dNUUQvLy8rL0FBQUNoUWNKQWlZQUxRQUFBUWNBYXY5aUFUMEFGZ0N3QUVWWXNBSXZHN0VDSHo1WnNBdmNzQlRRTURILy93Q1VBQUFGRndjc0FpWUFNZ0FBQVFjQXBBRHVBVGNBQ1FDd0JTK3dGZHd3TVFELy93Qm0vK3dGSGdjMkFpWUFNd0FBQVFjQVJBRTZBVFlBRXdDd0FFVllzQXd2RzdFTUh6NVpzQ0RjTURFQS8vOEFadi9zQlI0SE5nSW1BRE1BQUFFSEFIVUIyUUUyQUJNQXNBQkZXTEFOTHh1eERSOCtXYkFoM0RBeEFQLy9BR2IvN0FVZUJ6Y0NKZ0F6QUFBQkJ3Q2RBTm9CTmdBVEFMQUFSVml3REM4YnNRd2ZQbG13STl3d01RRC8vd0JtLyt3RkhnY3NBaVlBTXdBQUFRY0FwQURjQVRjQUV3Q3dBRVZZc0Ewdkc3RU5IejVac0NMY01ERUEvLzhBWnYvc0JSNEhBZ0ltQURNQUFBRUhBR29CQlFFMkFCWUFzQUJGV0xBTUx4dXhEQjgrV2JBbTNMQXYwREF4Ly84QWZmL3NCTDBITmdJbUFEa0FBQUVIQUVRQkVRRTJBQk1Bc0FCRldMQUpMeHV4Q1I4K1diQVMzREF4QVAvL0FIMy83QVM5QnpZQ0pnQTVBQUFCQndCMUFiQUJOZ0FKQUxBQUw3QVQzREF4QVAvL0FIMy83QVM5QnpjQ0pnQTVBQUFCQndDZEFMRUJOZ0FUQUxBQVJWaXdDUzhic1FrZlBsbXdGZHd3TVFELy93QjkvK3dFdlFjQ0FpWUFPUUFBQVFjQWFnRGNBVFlBRmdDd0FFVllzQWt2RzdFSkh6NVpzQmpjc0NIUU1ESC8vd0FIQUFBRTFnYzJBaVlBUFFBQUFRY0FkUUdIQVRZQUV3Q3dBRVZZc0FFdkc3RUJIejVac0F2Y01ERUEvLzhBV3Yvc0Evc0dBQUltQUVVQUFBRUhBRVFBclFBQUFCTUFzQUJGV0xBWEx4dXhGeHMrV2JBcjNEQXhBUC8vQUZyLzdBUDdCZ0FDSmdCRkFBQUJCd0IxQVV3QUFBQUpBTEFYTDdBczNEQXhBUC8vQUZyLzdBUDdCZ0VDSmdCRkFBQUJCZ0NkVFFBQUV3Q3dBRVZZc0Jjdkc3RVhHejVac0M3Y01ERUEvLzhBV3Yvc0Evc0Y5Z0ltQUVVQUFBRUdBS1JQQVFBVEFMQUFSVml3Rnk4YnNSY2JQbG13TGR3d01RRC8vd0JhLyt3RCt3WE1BaVlBUlFBQUFRWUFhbmdBQUJZQXNBQkZXTEFYTHh1eEZ4cytXYkF4M0xBNjBEQXgvLzhBV3Yvc0Evc0dYZ0ltQUVVQUFBRUhBS0lBNGdBMEFCWUFzQUJGV0xBWEx4dXhGeHMrV2JBdjNMQTMwREF4Ly84QVd2L3NBL3NHZkFJbUFFVUFBQUFIQWQ4QTZQL24vLzhBVC80OEEvVUVUZ0ltQUVjQUFBQUhBSGtCUGYvNy8vOEFVLy9zQkFzR0FBSW1BRWtBQUFFSEFFUUFvUUFBQUJNQXNBQkZXTEFJTHh1eENCcytXYkFmM0RBeEFQLy9BRlAvN0FRTEJnQUNKZ0JKQUFBQkJ3QjFBVUFBQUFBSkFMQUlMN0FnM0RBeEFQLy9BRlAvN0FRTEJnRUNKZ0JKQUFBQkJnQ2RRUUFBRXdDd0FFVllzQWd2RzdFSUd6NVpzQ0xjTURFQS8vOEFVLy9zQkFzRnpBSW1BRWtBQUFFR0FHcHNBQUFXQUxBQVJWaXdDQzhic1FnYlBsbXdKZHl3THRBd01mLy8vN1FBQUFHTUJma0NKZ0NNQUFBQkJnQkVnL2tBRXdDd0FFVllzQUl2RzdFQ0d6NVpzQVhjTURFQS8vOEFqd0FBQW1rRitRSW1BSXdBQUFFR0FIVWgrUUFUQUxBQVJWaXdBeThic1FNYlBsbXdCdHd3TVFELy8vKzNBQUFDWmdYNkFpWUFqQUFBQVFjQW5mOGovL2tBRXdDd0FFVllzQUl2RzdFQ0d6NVpzQWpjTURFQS8vLy9xd0FBQW5FRnhRSW1BSXdBQUFFSEFHci9Udi81QUJZQXNBQkZXTEFDTHh1eEFocytXYkFMM0xBVTBEQXgvLzhBZVFBQUEvZ0Y5Z0ltQUZJQUFBRUdBS1JWQVFBSkFMQURMN0FjM0RBeEFQLy9BRS8vN0FROUJnQUNKZ0JUQUFBQkJ3QkVBTFlBQUFBVEFMQUFSVml3QkM4YnNRUWJQbG13SE53d01RRC8vd0JQLyt3RVBRWUFBaVlBVXdBQUFRY0FkUUZWQUFBQUNRQ3dCQyt3SGR3d01RRC8vd0JQLyt3RVBRWUJBaVlBVXdBQUFRWUFuVllBQUJNQXNBQkZXTEFFTHh1eEJCcytXYkFmM0RBeEFQLy9BRS8vN0FROUJmWUNKZ0JUQUFBQkJnQ2tXQUVBQ1FDd0JDK3dKdHd3TVFELy93QlAvK3dFUFFYTUFpWUFVd0FBQVFjQWFnQ0JBQUFBRmdDd0FFVllzQVF2RzdFRUd6NVpzQ0xjc0N2UU1ESC8vd0IzLyt3RDl3WUFBaVlBV1FBQUFRY0FSQUN2QUFBQUV3Q3dBRVZZc0Fjdkc3RUhHejVac0JMY01ERUEvLzhBZC8vc0EvY0dBQUltQUZrQUFBRUhBSFVCVGdBQUFBa0FzQVl2c0JQY01ERUEvLzhBZC8vc0EvY0dBUUltQUZrQUFBRUdBSjFQQUFBVEFMQUFSVml3Qnk4YnNRY2JQbG13RmR3d01RRC8vd0IzLyt3RDl3WE1BaVlBV1FBQUFRWUFhbm9BQUJZQXNBQkZXTEFITHh1eEJ4cytXYkFZM0xBaDBEQXgvLzhBRFA1TEE5WUdBQUltQUYwQUFBRUhBSFVCRmdBQUFBa0FzQUV2c0JMY01ERUEvLzhBRFA1TEE5WUZ6QUltQUYwQUFBRUdBR3BDQUFBV0FMQUFSVml3RHk4YnNROGJQbG13Rjl5d0lOQXdNZi8vQUJJQUFBVkNCdW9DSmdBbEFBQUJCd0J3QUw0Qk9nQVRBTEFBUlZpd0JDOGJzUVFmUGxtd0ROd3dNUUQvL3dCYS8rd0Qrd1cwQWlZQVJRQUFBUVlBY0VnRUFBa0FzQmN2c0NyY01ERUEvLzhBRWdBQUJVSUhIQUltQUNVQUFBRUhBS0FBOWdFMkFCTUFzQUJGV0xBRUx4dXhCQjgrV2JBTzNEQXhBUC8vQUZyLzdBUDdCZVlDSmdCRkFBQUJCd0NnQUlBQUFBQVRBTEFBUlZpd0Z5OGJzUmNiUGxtd0xkd3dNUUFBQWdBUy9sSUZRZ1d3QUJZQUdRQjBzaGthR3hFU09iQVpFTEFXMEFDd0FFVllzQll2RzdFV0h6NVpzQUJGV0xBVUx4dXhGQTgrV2JBQVJWaXdBUzhic1FFUFBsbXdBRVZZc0F3dkc3RU1FVDVac2djRENpdFlJZGdiOUZtd0FSQ3dFZEN3RVMreUZ4UVdFUkk1c0JjdnNoTUJDaXRZSWRnYjlGbXlHUllVRVJJNU1ERUJBU01HQmhVVU16STNGd1lqSWlZMU5EY0RJUU1oQVFNaEF3TWJBaWMrVjBwSExDNFZTVnhmZEpWei9jeDIvdmtDSm1JQnB0TUZzUHBRT0Y0eFJCZU9MRzVialdJQlNmNnRCYkQ4YndKY0FBQUNBRnIrVWdQN0JFNEFMUUE0QUtheUZ6azZFUkk1c0JjUXNDL1FBTEFBUlZpd0Z5OGJzUmNiUGxtd0FFVllzQ2t2RzdFcEVUNVpzQUJGV0xBRUx4dXhCQTgrV2JBQVJWaXdIaThic1I0UFBsbXdBTkN3QUMreUFoY0VFUkk1c2dzWEJCRVNPYkFMTDdBWEVMSVBBUW9yV0NIWUcvUlpzaElMRHhFU09VQUpEQkljRWl3U1BCSUVYYkFwRUxJa0F3b3JXQ0hZRy9SWnNBUVFzaTRCQ2l0WUlkZ2I5Rm13Q3hDeU1nRUtLMWdoMkJ2MFdUQXhKU1luQmlNaUpqVTBKRE16TlRRbUl5SUdGU00wTmpZek1oWVhFUlFYRlNNR0JoVVVNekkzRndZaklpWTFOQU15TmpjMUl5SUdGUlFXQXY4TERYU29vODRCQWUrVlhtQlRhdk4yeTMyKzRnTXBLbGRLUnl3dUZVbGNYM1IyU0g4Z2c0ZUlYUWNaUlhtNmlhMjVSMVJsVTBCWm0xaS9yZjRZa2xjUk9GNHhSQmVPTEc1YmpBRUlSanZNWGxaR1UvLy9BR2IvN0FUckIwc0NKZ0FuQUFBQkJ3QjFBY0FCU3dBSkFMQU1MN0FnM0RBeEFQLy9BRS8vN0FQMUJnQUNKZ0JIQUFBQkJ3QjFBU2tBQUFBSkFMQVBMN0FmM0RBeEFQLy9BR2IvN0FUckIwd0NKZ0FuQUFBQkJ3Q2RBTUVCU3dBVEFMQUFSVml3REM4YnNRd2ZQbG13SU53d01RRC8vd0JQLyt3RDlRWUJBaVlBUndBQUFRWUFuU29BQUJNQXNBQkZXTEFQTHh1eER4cytXYkFmM0RBeEFQLy9BR2IvN0FUckJ5a0NKZ0FuQUFBQkJ3Q2hBYWNCVkFBVEFMQUFSVml3REM4YnNRd2ZQbG13SnR3d01RRC8vd0JQLyt3RDlRWGVBaVlBUndBQUFRY0FvUUVRQUFrQUV3Q3dBRVZZc0E4dkc3RVBHejVac0NYY01ERUEvLzhBWnYvc0JPc0hUQUltQUNjQUFBRUhBSjRBMkFGTEFBa0FzQXd2c0NMY01ERUEvLzhBVC8vc0EvVUdBUUltQUVjQUFBRUdBSjVCQUFBSkFMQVBMN0FoM0RBeEFQLy9BSlFBQUFUU0J6NENKZ0FvQUFBQkJ3Q2VBR2NCUFFBSkFMQUJMN0FhM0RBeEFQLy9BRS8vN0FWYkJnSUFKZ0JJQUFBQkJ3R2lCQUVFL0FBR0FMQWVMekF4Ly84QWxBQUFCRXdHOFFJbUFDa0FBQUVIQUhBQWd3RkJBQk1Bc0FCRldMQUdMeHV4Qmg4K1diQU4zREF4QVAvL0FGUC83QVFMQmJRQ0pnQkpBQUFCQmdCd1BBUUFDUUN3Q0Mrd0h0d3dNUUQvL3dDVUFBQUVUQWNqQWlZQUtRQUFBUWNBb0FDN0FUMEFFd0N3QUVWWXNBWXZHN0VHSHo1WnNBL2NNREVBLy84QVUvL3NCQXNGNWdJbUFFa0FBQUVHQUtCMEFBQVRBTEFBUlZpd0NDOGJzUWdiUGxtd0lkd3dNUUQvL3dDVUFBQUVUQWNiQWlZQUtRQUFBUWNBb1FGdUFVWUFFd0N3QUVWWXNBWXZHN0VHSHo1WnNCVGNNREVBLy84QVUvL3NCQXNGM2dJbUFFa0FBQUVIQUtFQkp3QUpBQk1Bc0FCRldMQUlMeHV4Q0JzK1diQW0zREF4QUFBQkFKVCtVZ1JNQmJBQUd3Q0FzaEVjSFJFU09RQ3dBRVZZc0JZdkc3RVdIejVac0FCRldMQVBMeHV4RHhFK1diQUFSVml3QkM4YnNRUVBQbG13QUVWWXNCUXZHN0VVRHo1WnNob1VGaEVTT2JBYUw3SUJBUW9yV0NIWUcvUlpzQlFRc2dJQkNpdFlJZGdiOUZtd0E5Q3dEeEN5Q2dNS0sxZ2gyQnYwV2JBV0VMSVlBUW9yV0NIWUcvUlpNREVCSVJFaEZTTUdCaFVVTXpJM0Z3WWpJaVkxTkRjaEVTRVZJUkVoQStmOXFnSzdiMWRLUnl3dUZVbGNYM1NIL1pNRHNmMU1BbFlDaXY1QXlqaGVNVVFYaml4dVc0WmZCYkRNL200QUFBSUFVLzV0QkFzRVRnQWpBQ3NBcGJJUkxDMFJFam13RVJDd0pOQUFzQUJGV0xBWkx4dXhHUnMrV2JBQVJWaXdEQzhic1F3UlBsbXdBRVZZc0JFdkc3RVJEejVac2dJUkdSRVNPYkFNRUxJSEF3b3JXQ0hZRy9SWnNpZ1pFUkVTT2JBb0w3UWZLQzhvQW5HMHZ5alBLQUpkc284b0FWMjBYeWh2S0FKeHRPOG8veWdDY2JJZEJ3b3JXQ0hZRy9SWnNCRVFzaUVCQ2l0WUlkZ2I5Rm15SXhrUkVSSTVzQmtRc2lRQkNpdFlJZGdiOUZrd01TVUdCd1lHRlJRek1qY1hCaU1pSmpVME55WUFKelUwTmpZek1oSVJGU0VXRmpNeU53RWlCZ2NoTlNZbUEvcEpjVmRLUnl3dUZVbGNYM1JRei83N0JuM2lpOTN4L1QwTG5YZW5hZjdGWkhzUkFjOEljcmhxTXpoZU1VUVhqaXh1VzJaU0RRRVQxenFpLzQ3KzV2NytZb2FjaHdKV2pIMFNlbjMvL3dDVUFBQUVUQWMrQWlZQUtRQUFBUWNBbmdDZkFUMEFFd0N3QUVWWXNBWXZHN0VHSHo1WnNCSGNNREVBLy84QVUvL3NCQXNHQVFJbUFFa0FBQUVHQUo1WUFBQUpBTEFJTDdBaTNEQXhBUC8vQUdyLzdBVHdCMHdDSmdBckFBQUJCd0NkQUw0QlN3QVRBTEFBUlZpd0N5OGJzUXNmUGxtd0lkd3dNUUQvL3dCUy9sWUVEQVlCQWlZQVN3QUFBUVlBblVBQUFCTUFzQUJGV0xBREx4dXhBeHMrV2JBbjNEQXhBUC8vQUdyLzdBVHdCekVDSmdBckFBQUJCd0NnQVBFQlN3QVRBTEFBUlZpd0N5OGJzUXNmUGxtd0l0d3dNUUQvL3dCUy9sWUVEQVhtQWlZQVN3QUFBUVlBb0hNQUFCTUFzQUJGV0xBREx4dXhBeHMrV2JBbzNEQXhBUC8vQUdyLzdBVHdCeWtDSmdBckFBQUJCd0NoQWFRQlZBQVRBTEFBUlZpd0N5OGJzUXNmUGxtd0o5d3dNUUQvL3dCUy9sWUVEQVhlQWlZQVN3QUFBUWNBb1FFbUFBa0FFd0N3QUVWWXNBTXZHN0VER3o1WnNDM2NNREVBLy84QWF2MzVCUEFGeEFJbUFDc0FBQUFIQWFJQnUvNlMvLzhBVXY1V0JBd0dxUUltQUVzQUFBRUhBYmtCSndCK0FBa0FzQU12c0NuY01ERUEvLzhBbEFBQUJSZ0hQZ0ltQUN3QUFBRUhBSjBBNGdFOUFCTUFzQUJGV0xBSEx4dXhCeDgrV2JBUTNEQXhBUC8vQUhrQUFBUDRCMTRDSmdCTUFBQUJCd0NkQUJjQlhRQUpBTEFRTDdBVDNEQXhBUC8vLzdNQUFBS1FCek1DSmdBdEFBQUJCd0NrL3prQlBnQVRBTEFBUlZpd0F5OGJzUU1mUGxtd0I5d3dNUUQvLy8rZkFBQUNmQVh2QWlZQWpBQUFBUWNBcFA4bC8vb0FDUUN3QWkrd0Q5d3dNUUQvLy8rNUFBQUNrQWJ4QWlZQUxRQUFBUWNBY1A4eUFVRUFFd0N3QUVWWXNBSXZHN0VDSHo1WnNBWGNNREVBLy8vL3BRQUFBbndGclFJbUFJd0FBQUVIQUhEL0h2LzlBQk1Bc0FCRldMQUNMeHV4QWhzK1diQUYzREF4QVAvLy85OEFBQUpsQnlNQ0pnQXRBQUFCQndDZy8yb0JQUUFUQUxBQVJWaXdBaThic1FJZlBsbXdCOXd3TVFELy8vL0xBQUFDVVFYZkFpWUFqQUFBQVFjQW9QOVcvL2tBRXdDd0FFVllzQUl2RzdFQ0d6NVpzQWZjTURFQS8vOEFGLzVZQVo4RnNBSW1BQzBBQUFBR0FLUHVCdi8vQUFEK1VnR1FCZFVDSmdCTkFBQUFCZ0NqMXdELy93Q2RBQUFCb3djYkFpWUFMUUFBQVFjQW9RQWNBVVlBRXdDd0FFVllzQUl2RzdFQ0h6NVpzQXpjTURFQS8vOEFvLy9zQmlZRnNBQW1BQzBBQUFBSEFDNENRZ0FBLy84QWZmNUxBNUFGMVFBbUFFMEFBQUFIQUU0Q0N3QUEvLzhBTGYvc0JLc0hOd0ltQUM0QUFBRUhBSjBCYUFFMkFCTUFzQUJGV0xBQUx4dXhBQjgrV2JBVTNEQXhBUC8vLzdYK1N3SnJCZDhDSmdDYkFBQUJCd0NkL3lqLzNnQVRBTEFBUlZpd0RDOGJzUXdiUGxtd0Vkd3dNUUQvL3dDVS9ma0ZHQVd3QWlZQUx3QUFBQWNCb2dHZC9wTC8vd0I5L2ZrRU5nWUFBaVlBVHdBQUFBY0JvZ0V0L3BMLy93Q1VBQUFFSmdjMkFpWUFNQUFBQVFjQWRRQXBBVFlBRXdDd0FFVllzQVV2RzdFRkh6NVpzQWpjTURFQS8vOEFpZ0FBQW1JSGtRSW1BRkFBQUFFSEFIVUFHZ0dSQUJNQXNBQkZXTEFETHh1eEF5RStXYkFHM0RBeEFQLy9BSlQ5K1FRbUJiQUNKZ0F3QUFBQUJ3R2lBVzMra3YvL0FGWDkrUUYvQmdBQ0pnQlFBQUFBQndHaUFCRCtrdi8vQUpRQUFBUW1CYkVDSmdBd0FBQUJCd0dpQWdvRXF3QVFBTEFBUlZpd0NpOGJzUW9mUGxrd01mLy9BSXdBQUFMbkJnSUFKZ0JRQUFBQkJ3R2lBWTBFL0FBUUFMQUFSVml3Q0M4YnNRZ2hQbGt3TWYvL0FKUUFBQVFtQmJBQ0pnQXdBQUFBQndDaEFjcjkxUC8vQUl3QUFBTHJCZ0FBSmdCUUFBQUFCd0NoQVdUOXIvLy9BSlFBQUFVWEJ6WUNKZ0F5QUFBQkJ3QjFBZXNCTmdBVEFMQUFSVml3Q0M4YnNRZ2ZQbG13RE53d01RRC8vd0I1QUFBRCtBWUFBaVlBVWdBQUFRY0FkUUZTQUFBQUNRQ3dBeSt3RTl3d01RRC8vd0NVL2ZrRkZ3V3dBaVlBTWdBQUFBY0JvZ0hjL3BMLy93QjUvZmtEK0FST0FpWUFVZ0FBQUFjQm9nRkIvcEwvL3dDVUFBQUZGd2MzQWlZQU1nQUFBUWNBbmdFREFUWUFFd0N3QUVWWXNBWXZHN0VHSHo1WnNBL2NNREVBLy84QWVRQUFBL2dHQVFJbUFGSUFBQUVHQUo1cUFBQUpBTEFETDdBVjNEQXhBUC8vLzZVQUFBUDRCZ01DSmdCU0FBQUJCd0dpLzJBRS9RQVFBTEFBUlZpd0ZTOGJzUlVoUGxrd01mLy9BR2IvN0FVZUJ1b0NKZ0F6QUFBQkJ3QndBTlVCT2dBVEFMQUFSVml3REM4YnNRd2ZQbG13SU53d01RRC8vd0JQLyt3RVBRVzBBaVlBVXdBQUFRWUFjRkVFQUFrQXNBUXZzQnZjTURFQS8vOEFadi9zQlI0SEhBSW1BRE1BQUFFSEFLQUJEUUUyQUJNQXNBQkZXTEFNTHh1eERCOCtXYkFpM0RBeEFQLy9BRS8vN0FROUJlWUNKZ0JUQUFBQkJ3Q2dBSWtBQUFBVEFMQUFSVml3QkM4YnNRUWJQbG13SHR3d01RRC8vd0JtLyt3RkhnYzFBaVlBTXdBQUFRY0FwUUZqQVRZQUZnQ3dBRVZZc0Ewdkc3RU5IejVac0NIY3NDWFFNREgvL3dCUC8rd0VQUVgvQWlZQVV3QUFBUWNBcFFEZkFBQUFGZ0N3QUVWWXNBUXZHN0VFR3o1WnNCM2NzQ0hRTURILy93Q1VBQUFFM2djMkFpWUFOZ0FBQVFjQWRRRnhBVFlBQ1FDd0JDK3dHdHd3TVFELy93QjhBQUFDOVFZQUFpWUFWZ0FBQVFjQWRRQ3RBQUFBQ1FDd0N5K3dFTnd3TVFELy93Q1UvZmtFM2dXd0FpWUFOZ0FBQUFjQm9nRnUvcEwvL3dCUC9ma0N0QVJPQWlZQVZnQUFBQWNCb2dBSy9wTC8vd0NVQUFBRTNnYzNBaVlBTmdBQUFRY0FuZ0NKQVRZQUNRQ3dCQyt3SE53d01RRC8vd0E0QUFBQytnWUJBaVlBVmdBQUFRWUFuc1lBQUFrQXNBc3ZzQkxjTURFQS8vOEFTdi9zQklvSE5nSW1BRGNBQUFFSEFIVUJqZ0UyQUFrQXNBa3ZzQ3JjTURFQS8vOEFTLy9zQThvR0FBSW1BRmNBQUFFSEFIVUJPZ0FBQUFrQXNBa3ZzQ25jTURFQS8vOEFTdi9zQklvSE53SW1BRGNBQUFFSEFKMEFqd0UyQUJNQXNBQkZXTEFKTHh1eENSOCtXYkFxM0RBeEFQLy9BRXYvN0FQS0JnRUNKZ0JYQUFBQkJnQ2RPd0FBRXdDd0FFVllzQWt2RzdFSkd6NVpzQ25jTURFQS8vOEFTdjVCQklvRnhBSW1BRGNBQUFBSEFIa0JuUUFBLy84QVMvNDRBOG9FVGdJbUFGY0FBQUFIQUhrQlJQLzMvLzhBU3YzNUJJb0Z4QUltQURjQUFBQUhBYUlCaWY2Uy8vOEFTLzM1QThvRVRnSW1BRmNBQUFBSEFhSUJNUDZTLy84QVN2L3NCSW9ITndJbUFEY0FBQUVIQUo0QXBnRTJBQWtBc0FrdnNDemNNREVBLy84QVMvL3NBOG9HQVFJbUFGY0FBQUVHQUo1U0FBQUpBTEFKTDdBcjNEQXhBUC8vQUMzOStRU3dCYkFDSmdBNEFBQUFCd0dpQVhmK2t2Ly9BQWo5K1FKeUJVRUNKZ0JZQUFBQUJ3R2lBTWora3YvL0FDMytSQVN3QmJBQ0pnQTRBQUFBQndCNUFZc0FBLy8vQUFqK1FRS2xCVUVDSmdCWUFBQUFCd0I1QU53QUFQLy9BQzBBQUFTd0J6Y0NKZ0E0QUFBQkJ3Q2VBSmdCTmdBVEFMQUFSVml3Qmk4YnNRWWZQbG13RGR3d01RRC8vd0FJLyt3REp3YURBQ1lBV0FBQUFBY0JvZ0hOQlgzLy93QjkvK3dFdlFjc0FpWUFPUUFBQVFjQXBBQ3pBVGNBRXdDd0FFVllzQkF2RzdFUUh6NVpzQlRjTURFQS8vOEFkLy9zQS9jRjlnSW1BRmtBQUFFR0FLUlJBUUFUQUxBQVJWaXdEUzhic1EwYlBsbXdGTnd3TVFELy93QjkvK3dFdlFicUFpWUFPUUFBQVFjQWNBQ3NBVG9BQ1FDd0FDK3dFZHd3TVFELy93QjMvK3dEOXdXMEFpWUFXUUFBQVFZQWNFb0VBQk1Bc0FCRldMQUdMeHV4QmhzK1diQVMzREF4QVAvL0FIMy83QVM5Qnh3Q0pnQTVBQUFCQndDZ0FPUUJOZ0FUQUxBQVJWaXdDUzhic1FrZlBsbXdGTnd3TVFELy93QjMvK3dEOXdYbUFpWUFXUUFBQVFjQW9BQ0NBQUFBRXdDd0FFVllzQWN2RzdFSEd6NVpzQlRjTURFQS8vOEFmZi9zQkwwSGxBSW1BRGtBQUFFSEFLSUJSZ0ZxQUF3QXNBQXZzQmJjc0J2UU1ESC8vd0IzLyt3RDl3WmVBaVlBV1FBQUFRY0FvZ0RrQURRQURBQ3dCaSt3RnR5d0c5QXdNZi8vQUgzLzdBUzlCelVDSmdBNUFBQUJCd0NsQVRvQk5nQVdBTEFBUlZpd0VDOGJzUkFmUGxtd0U5eXdGOUF3TWYvL0FIZi83QVF1QmY4Q0pnQlpBQUFCQndDbEFOZ0FBQUFNQUxBR0w3QVQzTEFWMERBeEFBRUFmZjZKQkwwRnNBQWZBRmV5SENBaEVSSTVBTEFBUlZpd0dDOGJzUmdmUGxtd0FFVllzQk12RzdFVER6NVpzQUJGV0xBT0x4dXhEaGMrV2JJRUV4Z1JFam15Q1FNS0sxZ2gyQnYwV2JBVEVMSWNBUW9yV0NIWUcvUlpzQmdRc0IvUU1ERUJFUlFHQndZR0ZSUXpNamNYQmlNaUpqVTBOeUFBTlJFekVSUVdNeUFSRVFTOWhYNDlUMGNzTGhWSlhGOTBOdjhBL3R2OGxKQUJKQVd3L0RLWTVEMHBXVGRFRjQ0c2JsdFZSUUVNNndQTi9ES1NtZ0UwQThZQUFRQjMvbElEOXdRNkFCOEFacklhSUNFUkVqa0FzQUJGV0xBWEx4dXhGeHMrV2JBQVJWaXdFaThic1JJUFBsbXdBRVZZc0I4dkc3RWZEejVac0FCRldMQUtMeHV4Q2hFK1diSUZBd29yV0NIWUcvUlpzQjhRc0EvUXNBOHZzQklRc2hvQkNpdFlJZGdiOUZtd0Z4Q3dIZEF3TVNFR0JoVVVNekkzRndZaklpWTFORGNuQmlNaUpqVVJNeEVVTXpJM0VUTVJBK0pYU2tjc0xoVkpYRjkwa2dWcnhiQzE4NnV4UHZNNFhqRkVGNDRzYmx1TVlXSit6c01DdmYxR3puOERDZnZHLy84QU1BQUFCdVVITndJbUFEc0FBQUVIQUowQnFBRTJBQk1Bc0FCRldMQU1MeHV4REI4K1diQVAzREF4QVAvL0FDRUFBQVhNQmdFQ0pnQmJBQUFCQndDZEFRb0FBQUFUQUxBQVJWaXdDeThic1FzYlBsbXdFZHd3TVFELy93QUhBQUFFMWdjM0FpWUFQUUFBQVFjQW5RQ0lBVFlBRXdDd0FFVllzQUV2RzdFQkh6NVpzQXZjTURFQS8vOEFEUDVMQTlZR0FRSW1BRjBBQUFFR0FKMFhBQUFUQUxBQVJWaXdEeThic1E4YlBsbXdGTnd3TVFELy93QUhBQUFFMWdjQ0FpWUFQUUFBQVFjQWFnQ3pBVFlBRmdDd0FFVllzQWd2RzdFSUh6NVpzQkRjc0JuUU1ESC8vd0JRQUFBRWpBYzJBaVlBUGdBQUFRY0FkUUdEQVRZQUV3Q3dBRVZZc0Fjdkc3RUhIejVac0F6Y01ERUEvLzhBVWdBQUE4QUdBQUltQUY0QUFBRUhBSFVCR3dBQUFCTUFzQUJGV0xBSEx4dXhCeHMrV2JBTTNEQXhBUC8vQUZBQUFBU01CeFFDSmdBK0FBQUJCd0NoQVdvQlB3QVRBTEFBUlZpd0J5OGJzUWNmUGxtd0V0d3dNUUQvL3dCU0FBQUR3QVhlQWlZQVhnQUFBUWNBb1FFQ0FBa0FFd0N3QUVWWXNBY3ZHN0VIR3o1WnNCTGNNREVBLy84QVVBQUFCSXdITndJbUFENEFBQUVIQUo0QW13RTJBQWtBc0FjdnNBN2NNREVBLy84QVVnQUFBOEFHQVFJbUFGNEFBQUVHQUo0ekFBQUpBTEFITDdBTzNEQXhBUC8vLy9ZQUFBZFhCMElDSmdDQkFBQUJCd0IxQXJzQlFnQVRBTEFBUlZpd0JpOGJzUVlmUGxtd0Zkd3dNUUQvL3dCSS8rd0doQVlCQWlZQWhnQUFBUWNBZFFKeEFBRUFDUUN3Rnkrd1A5d3dNUUQvL3dCcC82RUZJZ2VBQWlZQWd3QUFBUWNBZFFIZ0FZQUFFd0N3QUVWWXNCQXZHN0VRSHo1WnNDemNNREVBLy84QVQvOTNCRDBGL2dJbUFJa0FBQUVIQUhVQk1QLytBQk1Bc0FCRldMQUVMeHV4QkJzK1diQW8zREF4QVAvLy82WUFBQVFxQkkwQ0pnRzlBQUFCQndIZS94Yi9iZ0JHQUxJZkZ3RnhzbThYQVhHeS94Y0JjYklQRndGeXRxOFh2eGZQRndOeXN2OFhBWEt5WHhjQmNyYS9GODhYM3hjRGNiSS9Gd0Z4dE44WDd4Y0NYYlFmRnk4WEFsMHdNZi8vLzZZQUFBUXFCSTBDSmdHOUFBQUJCd0hlL3hiL2JnQkdBTElmRndGeHNtOFhBWEd5L3hjQmNiSVBGd0Z5dHE4WHZ4ZlBGd055c3Y4WEFYS3lYeGNCY3JhL0Y4OFgzeGNEY2JJL0Z3Rnh0TjhYN3hjQ1hiUWZGeThYQWwwd01mLy9BQ1FBQUFRV0JJMENKZ0hOQUFBQkJnSGVNcjRBQ0FDeUFBc0JYVEF4Ly84QUNRQUFCSlFHSGdJbUFib0FBQUVIQUVRQXh3QWVBQk1Bc0FCRldMQUVMeHV4QkIwK1diQU0zREF4QVAvL0FBa0FBQVNVQmg0Q0pnRzZBQUFCQndCMUFXWUFIZ0FUQUxBQVJWaXdCUzhic1FVZFBsbXdEZHd3TVFELy93QUpBQUFFbEFZZkFpWUJ1Z0FBQVFZQW5XY2VBQk1Bc0FCRldMQUVMeHV4QkIwK1diQVAzREF4QVAvL0FBa0FBQVNVQmhRQ0pnRzZBQUFCQmdDa2FSOEFDUUN3QkMrd0Z0d3dNUUQvL3dBSkFBQUVsQVhxQWlZQnVnQUFBUWNBYWdDU0FCNEFGZ0N3QUVWWXNBUXZHN0VFSFQ1WnNCTGNzQnZRTURILy93QUpBQUFFbEFaOEFpWUJ1Z0FBQVFjQW9nRDhBRklBRmdDd0FFVllzQVF2RzdFRUhUNVpzQkRjc0JqUU1ESC8vd0FKQUFBRWxBYVpBaVlCdWdBQUFBY0Izd0VDQUFULy93QlAva0VFUXdTZEFpWUJ2QUFBQUFjQWVRRnJBQUQvL3dCMkFBQUR0UVllQWlZQnZnQUFBUWNBUkFDV0FCNEFFd0N3QUVWWXNBWXZHN0VHSFQ1WnNBM2NNREVBLy84QWRnQUFBN1VHSGdJbUFiNEFBQUVIQUhVQk5RQWVBQk1Bc0FCRldMQUhMeHV4QngwK1diQU8zREF4QVAvL0FIWUFBQU8xQmg4Q0pnRytBQUFCQmdDZE5oNEFFd0N3QUVWWXNBWXZHN0VHSFQ1WnNCRGNNREVBLy84QWRnQUFBN1VGNmdJbUFiNEFBQUVHQUdwaEhnQVdBTEFBUlZpd0JpOGJzUVlkUGxtd0U5eXdITkF3TWYvLy82WUFBQUYrQmg0Q0pnSENBQUFCQndCRS8zVUFIZ0FUQUxBQVJWaXdBaThic1FJZFBsbXdCZHd3TVFELy93Q0RBQUFDV3dZZUFpWUJ3Z0FBQVFZQWRSTWVBQk1Bc0FCRldMQURMeHV4QXgwK1diQUczREF4QVAvLy82a0FBQUpZQmg4Q0pnSENBQUFCQndDZC94VUFIZ0FUQUxBQVJWaXdBaThic1FJZFBsbXdDTnd3TVFELy8vK2RBQUFDWXdYcUFpWUJ3Z0FBQVFjQWF2OUFBQjRBRmdDd0FFVllzQUl2RzdFQ0hUNVpzQXZjc0JUUU1ESC8vd0IyQUFBRVp3WVVBaVlCeHdBQUFRY0FwQUNJQUI4QUNRQ3dCUyt3RmR3d01RRC8vd0JQLy9BRWJ3WWVBaVlCeUFBQUFRY0FSQURWQUI0QUV3Q3dBRVZZc0Fzdkc3RUxIVDVac0I3Y01ERUEvLzhBVC8vd0JHOEdIZ0ltQWNnQUFBRUhBSFVCZEFBZUFBa0FzQXN2c0IvY01ERUEvLzhBVC8vd0JHOEdId0ltQWNnQUFBRUdBSjExSGdBVEFMQUFSVml3Q3k4YnNRc2RQbG13SWR3d01RRC8vd0JQLy9BRWJ3WVVBaVlCeUFBQUFRWUFwSGNmQUFrQXNBc3ZzQ2pjTURFQS8vOEFULy93Qkc4RjZnSW1BY2dBQUFFSEFHb0FvQUFlQUJZQXNBQkZXTEFMTHh1eEN4MCtXYkFrM0xBdDBEQXgvLzhBWi8vd0JCNEdIZ0ltQWM0QUFBRUhBRVFBdFFBZUFCTUFzQUJGV0xBSUx4dXhDQjArV2JBUjNEQXhBUC8vQUdmLzhBUWVCaDRDSmdIT0FBQUJCd0IxQVZRQUhnQVRBTEFBUlZpd0R5OGJzUThkUGxtd0V0d3dNUUQvL3dCbi8vQUVIZ1lmQWlZQnpnQUFBUVlBblZVZUFCTUFzQUJGV0xBSUx4dXhDQjArV2JBVTNEQXhBUC8vQUdmLzhBUWVCZW9DSmdIT0FBQUJCd0JxQUlBQUhnQVdBTEFBUlZpd0NDOGJzUWdkUGxtd0Y5eXdJTkF3TWYvL0FBVUFBQVEyQmg0Q0pnSFNBQUFCQndCMUFTMEFIZ0FUQUxBQVJWaXdBUzhic1FFZFBsbXdDOXd3TVFELy93QUpBQUFFbEFYU0FpWUJ1Z0FBQVFZQWNHSWlBQk1Bc0FCRldMQUVMeHV4QkIwK1diQU0zREF4QVAvL0FBa0FBQVNVQmdRQ0pnRzZBQUFCQndDZ0FKb0FIZ0FUQUxBQVJWaXdCQzhic1FRZFBsbXdEdHd3TVFBQUFnQUovbElFbEFTTkFCWUFHUUJ4c2hrYUd4RVNPYkFaRUxBVzBBQ3dBRVZZc0FBdkc3RUFIVDVac0FCRldMQVVMeHV4RkE4K1diQUFSVml3QVM4YnNRRVBQbG13QUVWWXNBd3ZHN0VNRVQ1WnNnY0RDaXRZSWRnYjlGbXdBUkN3RWRDeUZ4UUFFUkk1c0JjdnNoTUJDaXRZSWRnYjlGbXlHUUFVRVJJNU1ERUJBU01HQmhVVU16STNGd1lqSWlZMU5EY25JUWNqQVFNaEF3Sy9BZFUyVjBwSExDNFZTVnhmZEoxWi9oNWY5UUhYUEFGVXFnU04rM000WGpGRUY0NHNibHVTWWV2NUJJMzlKUUc2QVAvL0FFLy84QVJEQmg0Q0pnRzhBQUFCQndCMUFXTUFIZ0FKQUxBTEw3QWUzREF4QVAvL0FFLy84QVJEQmg4Q0pnRzhBQUFCQmdDZFpCNEFFd0N3QUVWWXNBc3ZHN0VMSFQ1WnNDRGNNREVBLy84QVQvL3dCRU1GL0FJbUFid0FBQUVIQUtFQlNnQW5BQk1Bc0FCRldMQUxMeHV4Q3gwK1diQWszREF4QVAvL0FFLy84QVJEQmg4Q0pnRzhBQUFCQmdDZWV4NEFDUUN3Q3krd0lOd3dNUUQvL3dCcUFBQUVLZ1lmQWlZQnZRQUFBUVlBbnZnZUFBa0FzQUV2c0JqY01ERUEvLzhBZGdBQUE3VUYwZ0ltQWI0QUFBRUdBSEF4SWdBVEFMQUFSVml3Qmk4YnNRWWRQbG13RGR3d01RRC8vd0IyQUFBRHRRWUVBaVlCdmdBQUFRWUFvR2tlQUJNQXNBQkZXTEFHTHh1eEJoMCtXYkFQM0RBeEFQLy9BSFlBQUFPMUJmd0NKZ0crQUFBQkJ3Q2hBUndBSndBVEFMQUFSVml3Qmk4YnNRWWRQbG13Rk53d01RQUFBUUIyL2xJRHRRU05BQnNBZ0xJUkhCMFJFamtBc0FCRldMQVdMeHV4RmgwK1diQUFSVml3RHk4YnNROFJQbG13QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFVTHh1eEZBOCtXYkliRmdRUkVqbXdHeSt5QUFFS0sxZ2gyQnYwV2JBVUVMSUNBUW9yV0NIWUcvUlpzQVBRc0E4UXNnb0RDaXRZSWRnYjlGbXdGaEN5R0FFS0sxZ2gyQnYwV1RBeEFTRVJJUlVqQmdZVkZETXlOeGNHSXlJbU5UUTNJUkVoRlNFUklRTmYvZ29DVEY1WFNrY3NMaFZKWEY5MGgvMzdBeno5dHdIMkFmait5c0k0WGpGRUY0NHNibHVHWHdTTnhQN3lBUC8vQUhZQUFBTzFCaDhDSmdHK0FBQUJCZ0NlVFI0QUV3Q3dBRVZZc0FZdkc3RUdIVDVac0JIY01ERUEvLzhBVlAvd0JFZ0dId0ltQWNBQUFBRUdBSjFvSGdBVEFMQUFSVml3Q2k4YnNRb2RQbG13SWR3d01RRC8vd0JVLy9BRVNBWUVBaVlCd0FBQUFRY0FvQUNiQUI0QUV3Q3dBRVZZc0Fvdkc3RUtIVDVac0NEY01ERUEvLzhBVlAvd0JFZ0YvQUltQWNBQUFBRUhBS0VCVGdBbkFCTUFzQUJGV0xBS0x4dXhDaDArV2JBbDNEQXhBUC8vQUZUOStRUklCSjBDSmdIQUFBQUFCd0dpQVdyK2t2Ly9BSFlBQUFSb0JoOENKZ0hCQUFBQkJnQ2RleDRBRXdDd0FFVllzQWN2RzdFSEhUNVpzQkRjTURFQS8vLy9rUUFBQW00R0ZBSW1BY0lBQUFFSEFLVC9Gd0FmQUFrQXNBSXZzQS9jTURFQS8vLy9sd0FBQW00RjBnSW1BY0lBQUFFSEFIRC9FQUFpQUJNQXNBQkZXTEFDTHh1eEFoMCtXYkFGM0RBeEFQLy8vNzBBQUFKREJnUUNKZ0hDQUFBQkJ3Q2cvMGdBSGdBVEFMQUFSVml3QWk4YnNRSWRQbG13Qjl3d01RRC8vd0FWL2xJQmpRU05BaVlCd2dBQUFBWUFvK3dBLy84QWZBQUFBWUlGL0FJbUFjSUFBQUVHQUtIN0p3QVRBTEFBUlZpd0FpOGJzUUlkUGxtd0ROd3dNUUQvL3dBay8vQUVOd1lmQWlZQnd3QUFBUWNBblFEMEFCNEFFd0N3QUVWWXNBQXZHN0VBSFQ1WnNCUGNNREVBLy84QWR2MzVCR2dFalFJbUFjUUFBQUFIQWFJQkV2NlMvLzhBZGdBQUE1UUdIZ0ltQWNVQUFBRUdBSFVLSGdBVEFMQUFSVml3QlM4YnNRVWRQbG13Q053d01RRC8vd0IyL2ZrRGxBU05BaVlCeFFBQUFBY0JvZ0VRL3BMLy93QjJBQUFEbEFTUUFpWUJ4UUFBQVFjQm9nR1ZBNG9BRUFDd0FFVllzQW92RzdFS0hUNVpNREgvL3dCMkFBQURsQVNOQWlZQnhRQUFBQWNBb1FGeS9VYi8vd0IyQUFBRVp3WWVBaVlCeHdBQUFRY0FkUUdGQUI0QUV3Q3dBRVZZc0Fndkc3RUlIVDVac0F6Y01ERUEvLzhBZHYzNUJHY0VqUUltQWNjQUFBQUhBYUlCZVA2Uy8vOEFkZ0FBQkdjR0h3SW1BY2NBQUFFSEFKNEFuUUFlQUJNQXNBQkZXTEFHTHh1eEJoMCtXYkFQM0RBeEFQLy9BRS8vOEFSdkJkSUNKZ0hJQUFBQkJnQndjQ0lBQ1FDd0N5K3dIZHd3TVFELy93QlAvL0FFYndZRUFpWUJ5QUFBQVFjQW9BQ29BQjRBRXdDd0FFVllzQXN2RzdFTEhUNVpzQ0RjTURFQS8vOEFULy93Qkc4R0hRSW1BY2dBQUFFSEFLVUEvZ0FlQUF3QXNBc3ZzQi9jc0NIUU1ESC8vd0IyQUFBRU9RWWVBaVlCeXdBQUFRY0FkUUVYQUI0QUNRQ3dCQyt3R2R3d01RRC8vd0IyL2ZrRU9RU05BaVlCeXdBQUFBY0JvZ0VZL3BMLy93QjJBQUFFT1FZZkFpWUJ5d0FBQVFZQW5pOGVBQWtBc0FRdnNCdmNNREVBLy84QVB2L3dBKzhHSGdJbUFjd0FBQUVIQUhVQlFRQWVBQWtBc0FrdnNDamNNREVBLy84QVB2L3dBKzhHSHdJbUFjd0FBQUVHQUoxQ0hnQVRBTEFBUlZpd0NTOGJzUWtkUGxtd0t0d3dNUUQvL3dBKy9rRUQ3d1NkQWlZQnpBQUFBQWNBZVFGUEFBRC8vd0ErLy9BRDd3WWZBaVlCekFBQUFRWUFubGtlQUFrQXNBa3ZzQ3JjTURFQS8vOEFKUDM1QkJZRWpRSW1BYzBBQUFBSEFhSUJKZjZTLy84QUpBQUFCQllHSHdJbUFjMEFBQUVHQUo1SEhnQVRBTEFBUlZpd0JpOGJzUVlkUGxtd0Rkd3dNUUQvL3dBay9rY0VGZ1NOQWlZQnpRQUFBQWNBZVFFNUFBYi8vd0JuLy9BRUhnWVVBaVlCemdBQUFRWUFwRmNmQUJNQXNBQkZXTEFQTHh1eER4MCtXYkFUM0RBeEFQLy9BR2YvOEFRZUJkSUNKZ0hPQUFBQkJnQndVQ0lBQ1FDd0FDK3dFTnd3TVFELy93Qm4vL0FFSGdZRUFpWUJ6Z0FBQVFjQW9BQ0lBQjRBRXdDd0FFVllzQWd2RzdFSUhUNVpzQlBjTURFQS8vOEFaLy93QkI0R2ZBSW1BYzRBQUFFSEFLSUE2Z0JTQUF3QXNBQXZzQlhjc0JyUU1ESC8vd0JuLy9BRU5BWWRBaVlCemdBQUFRY0FwUURlQUI0QURBQ3dBQyt3RXR5d0ZOQXdNUUFCQUdmK2dnUWVCSTBBSGdCaHNoc2ZJQkVTT1FDd0FFVllzQmN2RzdFWEhUNVpzQUJGV0xBQUx4dXhBQjArV2JBQVJWaXdEUzhic1EwWFBsbXdBRVZZc0JJdkc3RVNEejVac2dRU0FCRVNPYkFORUxJSUF3b3JXQ0hZRy9SWnNCSVFzaHNCQ2l0WUlkZ2I5Rmt3TVFFUkJnWUhCaFVVTXpJM0Z3WWpJaVkxTkRjbUppY1JNeEVVRmpNeU54RUVIZ0Y5ZDM5SExDNFZTVnhmZEVETjhnTHhmbXpsQkFTTi9QeUJ2VEpXV2tRWGppeHVXMTFKQnRhN0F3WDlBSE5vMUFNSC8vOEFLQUFBQmVVR0h3SW1BZEFBQUFFSEFKMEJHUUFlQUJNQXNBQkZXTEFCTHh1eEFSMCtXYkFQM0RBeEFQLy9BQVVBQUFRMkJoOENKZ0hTQUFBQkJnQ2RMaDRBRXdDd0FFVllzQWd2RzdFSUhUNVpzQTNjTURFQS8vOEFCUUFBQkRZRjZnSW1BZElBQUFFR0FHcFpIZ0FXQUxBQVJWaXdDQzhic1FnZFBsbXdFTnl3R2RBd01mLy9BRUVBQUFQekJoNENKZ0hUQUFBQkJ3QjFBVEFBSGdBVEFMQUFSVml3Q0M4YnNRZ2RQbG13RE53d01RRC8vd0JCQUFBRDh3WDhBaVlCMHdBQUFRY0FvUUVYQUNjQUV3Q3dBRVZZc0Fjdkc3RUhIVDVac0JMY01ERUEvLzhBUVFBQUEvTUdId0ltQWRNQUFBRUdBSjVJSGdBVEFMQUFSVml3Qnk4YnNRY2RQbG13RDl3d01RRC8vd0FTQUFBRlFnWkJBaVlBSlFBQUFBWUFyYjhBLy8vL1NnQUFCTEFHUVFBbUFDbGtBQUFIQUszK2hBQUEvLy8vVXdBQUJYd0dRUUFtQUN4a0FBQUhBSzMralFBQS8vLy9WZ0FBQWdNR1F3QW1BQzFrQUFBSEFLMytrQUFDLy8vL3AvL3NCVElHUVFBbUFETVVBQUFIQUszKzRRQUEvLy8rNFFBQUJUb0dRUUFtQUQxa0FBQUhBSzMrR3dBQS8vLy9zZ0FBQlBFR1FRQW1BTGtVQUFBSEFLMys3QUFBLy8vL2gvLzBBdG9HbWdJbUFNSUFBQUVIQUs3L0lQL3JBQndBc0FCRldMQU1MeHV4REJzK1diQVkzTEFRMExBWUVMQWgwREF4Ly84QUVnQUFCVUlGc0FJR0FDVUFBUC8vQUpRQUFBU2pCYkFDQmdBbUFBRC8vd0NVQUFBRVRBV3dBZ1lBS1FBQS8vOEFVQUFBQkl3RnNBSUdBRDRBQVAvL0FKUUFBQVVZQmJBQ0JnQXNBQUQvL3dDakFBQUJud1d3QWdZQUxRQUEvLzhBbEFBQUJSZ0ZzQUlHQUM4QUFQLy9BSlFBQUFacUJiQUNCZ0F4QUFELy93Q1VBQUFGRndXd0FnWUFNZ0FBLy84QVp2L3NCUjRGeEFJR0FETUFBUC8vQUpRQUFBVFVCYkFDQmdBMEFBRC8vd0F0QUFBRXNBV3dBZ1lBT0FBQS8vOEFCd0FBQk5ZRnNBSUdBRDBBQVAvL0FDa0FBQVRwQmJBQ0JnQThBQUQvLy8rL0FBQUNoUWNKQWlZQUxRQUFBUWNBYXY5aUFUMEFGZ0N3QUVWWXNBSXZHN0VDSHo1WnNBdmNzQlRRTURILy93QUhBQUFFMWdjQ0FpWUFQUUFBQVFjQWFnQ3pBVFlBRmdDd0FFVllzQWd2RzdFSUh6NVpzQkRjc0JuUU1ESC8vd0JXLytzRWVRWkJBaVlBdWdBQUFRY0FyUUZRQUFBQUNRQ3dFeSt3Sk53d01RRC8vd0JnLyt3RURBWkJBaVlBdmdBQUFRY0FyUUVaQUFBQUNRQ3dDUyt3S3R3d01RRC8vd0IrL21FRUJnWkJBaVlBd0FBQUFRY0FyUUVqQUFBQUNRQ3dBeSt3Rk53d01RRC8vd0NwLy9RQ1lRWXNBaVlBd2dBQUFRWUFyUS9yQUFrQXNBQXZzQS9jTURFQS8vOEFnUC9yQkFnR29nSW1BTW9BQUFFR0FLNGQ4d0FjQUxBQVJWaXdBQzhic1FBYlBsbXdIdHl3RmRDd0hoQ3dKOUF3TWYvL0FJNEFBQVJyQkRvQ0JnQ05BQUQvL3dCUC8rd0VQUVJPQWdZQVV3QUEvLzhBa3Y1Z0JCOEVPZ0lHQUhZQUFQLy9BQllBQUFQYUJEb0NCZ0JhQUFELy93QWZBQUFENkFRNkFnWUFYQUFBLy8vL3pQLzBBcElGdHdJbUFNSUFBQUVIQUdyL2IvL3JBQllBc0FCRldMQU1MeHV4REJzK1diQVUzTEFkMERBeC8vOEFnUC9yQkFnRnZ3SW1BTW9BQUFFR0FHcHM4d0FXQUxBQVJWaXdBQzhic1FBYlBsbXdHdHl3STlBd01mLy9BRS8vN0FROUJrRUNKZ0JUQUFBQkJ3Q3RBU0lBQUFBSkFMQUVMN0FkM0RBeEFQLy9BSUQvNndRSUJqUUNKZ0RLQUFBQkJ3Q3RBUTMvOHdBSkFMQUFMN0FWM0RBeEFQLy9BR2IvN0FZdEJqSUNKZ0ROQUFBQkJ3Q3RBaXovOFFBSkFMQUFMN0FqM0RBeEFQLy9BSlFBQUFSTUJ3a0NKZ0FwQUFBQkJ3QnFBTE1CUFFBV0FMQUFSVml3Qmk4YnNRWWZQbG13RTl5d0hOQXdNZi8vQUpzQUFBUTNCejBDSmdDd0FBQUJCd0IxQVlJQlBRQVRBTEFBUlZpd0JDOGJzUVFmUGxtd0NOd3dNUUFBQVFCSy8rd0VpZ1hFQUNjQVk3SVJLQ2tSRWprQXNBQkZXTEFKTHh1eENSOCtXYkFBUlZpd0hTOGJzUjBQUGxteUFoMEpFUkk1c2c0SkhSRVNPYkFKRUxJUkFRb3JXQ0hZRy9SWnNBSVFzaGNCQ2l0WUlkZ2I5Rm15SWgwSkVSSTVzQjBRc2lVQkNpdFlJZGdiOUZrd01RRTBKaVFuSmpVMEpETXlGaFlWSXpRbUl5SUdGUlFXQkJZV0ZSUUVJeUlrSmpVekZCWXpNallEallmK29HakhBUi9sbU82SS9JK0ZmSW1VQVZUT1lQN3A3NTcrOTVQOXBKbUVoUUYzWUdocVFYM0pzT1J3ejM1eWdXcGZVR3RsZ2Fkd3R0ZDF6b2w4aUdzQS8vOEFvd0FBQVo4RnNBSUdBQzBBQVAvLy83OEFBQUtGQndrQ0pnQXRBQUFCQndCcS8ySUJQUUFXQUxBQVJWaXdBaThic1FJZlBsbXdDOXl3Rk5Bd01mLy9BQzMvN0FQa0JiQUNCZ0F1QUFELy93Q2JBQUFGTUFXd0FnWUI0d0FBLy84QWxBQUFCUmdITmdJbUFDOEFBQUVIQUhVQmJnRTJBQk1Bc0FCRldMQUZMeHV4QlI4K1diQVAzREF4QVAvL0FEbi82d1RkQnlNQ0pnRGRBQUFCQndDZ0FOa0JQUUFUQUxBQVJWaXdEeThic1E4ZlBsbXdFOXd3TVFELy93QVNBQUFGUWdXd0FnWUFKUUFBLy84QWxBQUFCS01Gc0FJR0FDWUFBUC8vQUpzQUFBUTNCYkFDQmdDd0FBRC8vd0NVQUFBRVRBV3dBZ1lBS1FBQS8vOEFsQUFBQlEwSEl3SW1BTnNBQUFFSEFLQUJIUUU5QUJNQXNBQkZXTEFJTHh1eENCOCtXYkFOM0RBeEFQLy9BSlFBQUFacUJiQUNCZ0F4QUFELy93Q1VBQUFGR0FXd0FnWUFMQUFBLy84QVp2L3NCUjRGeEFJR0FETUFBUC8vQUpzQUFBVVVCYkFDQmdDMUFBRC8vd0NVQUFBRTFBV3dBZ1lBTkFBQS8vOEFadi9zQk9zRnhBSUdBQ2NBQVAvL0FDMEFBQVN3QmJBQ0JnQTRBQUQvL3dBcEFBQUU2UVd3QWdZQVBBQUEvLzhBV3Yvc0Evc0VUZ0lHQUVVQUFQLy9BRlAvN0FRTEJFNENCZ0JKQUFELy93Q0dBQUFFRWdYWkFpWUE3d0FBQVFjQW9BQ1gvL01BRXdDd0FFVllzQWd2RzdFSUd6NVpzQTNjTURFQS8vOEFULy9zQkQwRVRnSUdBRk1BQVAvL0FIeitZQVF3QkU0Q0JnQlVBQUFBQVFCUC8rd0Q5UVJPQUJ3QVM3SUFIUjRSRWprQXNBQkZXTEFQTHh1eER4cytXYkFBUlZpd0NDOGJzUWdQUGxteUFBRUtLMWdoMkJ2MFdiSURDQThSRWpteUV3OElFUkk1c0E4UXNoWUJDaXRZSWRnYjlGa3dNU1V5TmpjekRnSWpJZ0FSTlRRQU16SVdGeU1tSmlNaUJnY1ZGQllDT1Z0NEJPVUVkc3AxNC83MkFRamt3Zk1HNVFSM1hIYUFBWCt1YWs1bHIyWUJKZ0VER2ZjQktlRzNYWGlycmlld3JRRC8vd0FNL2tzRDFnUTZBZ1lBWFFBQS8vOEFId0FBQStnRU9nSUdBRndBQVAvL0FGUC83QVFMQmN3Q0pnQkpBQUFCQmdCcWJBQUFGZ0N3QUVWWXNBZ3ZHN0VJR3o1WnNDWGNzQzdRTURILy93Q0ZBQUFEVFFYekFpWUE2d0FBQVFjQWRRREMvL01BRXdDd0FFVllzQVF2RzdFRUd6NVpzQWpjTURFQS8vOEFTLy9zQThvRVRnSUdBRmNBQVAvL0FIMEFBQUdRQmRVQ0JnQk5BQUQvLy8rckFBQUNjUVhGQWlZQWpBQUFBUWNBYXY5Ty8va0FGZ0N3QUVWWXNBSXZHN0VDR3o1WnNBdmNzQlRRTURILy8vKzEva3NCaFFYVkFnWUFUZ0FBLy84QWp3QUFCR1VGOGdJbUFQQUFBQUVIQUhVQlJQL3lBQk1Bc0FCRldMQUVMeHV4QkJzK1diQVAzREF4QVAvL0FBeitTd1BXQmVZQ0pnQmRBQUFCQmdDZ1NnQUFFd0N3QUVWWXNBOHZHN0VQR3o1WnNCUGNNREVBLy84QU1BQUFCdVVITmdJbUFEc0FBQUVIQUVRQ0NBRTJBQk1Bc0FCRldMQUxMeHV4Q3g4K1diQU8zREF4QVAvL0FDRUFBQVhNQmdBQ0pnQmJBQUFCQndCRUFXb0FBQUFUQUxBQVJWaXdDeThic1FzYlBsbXdEdHd3TVFELy93QXdBQUFHNVFjMkFpWUFPd0FBQVFjQWRRS25BVFlBRXdDd0FFVllzQXd2RzdFTUh6NVpzQS9jTURFQS8vOEFJUUFBQmN3R0FBSW1BRnNBQUFFSEFIVUNDUUFBQUJNQXNBQkZXTEFNTHh1eERCcytXYkFQM0RBeEFQLy9BREFBQUFibEJ3SUNKZ0E3QUFBQkJ3QnFBZE1CTmdBTUFMQUJMN0FXM0xBTjBEQXgvLzhBSVFBQUJjd0Z6QUltQUZzQUFBRUhBR29CTlFBQUFBd0FzQUV2c0JiY3NBM1FNREgvL3dBSEFBQUUxZ2MyQWlZQVBRQUFBUWNBUkFEb0FUWUFFd0N3QUVWWXNBZ3ZHN0VJSHo1WnNBcmNNREVBLy84QURQNUxBOVlHQUFJbUFGMEFBQUVHQUVSM0FBQUpBTEFCTDdBUTNEQXhBUC8vQUZJRC9BRUxCZ0FEQmdBTEFBQUFGZ0N3QUVWWXNBUXZHN0VFSVQ1WnNBSFFzQUV2TURILy93QmxBL1FDUUFZQUF3WUFCZ0FBQUN3QXNBQkZXTEFKTHh1eENTRStXYkFBUlZpd0JDOGJzUVFoUGxtd0NSQ3dCdEN3Qmkrd0FkQ3dBUzh3TWYvL0FJLy84Z1BJQmJBQUpnQUZBQUFBQndBRkFpVUFBUC8vLzdIK1N3SnpCZDhDSmdDYkFBQUJCd0NlL3ovLzNnQUpBTEFBTDdBUjNEQXhBUC8vQURNRUFBRmxCZ0FDQmdGdEFBRC8vd0NVQUFBR2FnYzJBaVlBTVFBQUFRY0FkUUtRQVRZQUV3Q3dBRVZZc0FJdkc3RUNIejVac0JIY01ERUEvLzhBZkFBQUJua0dBQUltQUZFQUFBRUhBSFVDb0FBQUFBa0FzQU12c0NEY01ERUEvLzhBRXY1dEJVSUZzQUltQUNVQUFBQUhBS1lCZWdBRC8vOEFXdjV4QS9zRVRnSW1BRVVBQUFBSEFLWUFyUUFILy84QWxBQUFCRXdIUFFJbUFDa0FBQUVIQUVRQTZBRTlBQk1Bc0FCRldMQUdMeHV4Qmg4K1diQU4zREF4QVAvL0FKUUFBQVVOQnowQ0pnRGJBQUFCQndCRUFVb0JQUUFUQUxBQVJWaXdDQzhic1FnZlBsbXdDOXd3TVFELy93QlQvK3dFQ3dZQUFpWUFTUUFBQVFjQVJBQ2hBQUFBRXdDd0FFVllzQWd2RzdFSUd6NVpzQi9jTURFQS8vOEFoZ0FBQkJJRjh3SW1BTzhBQUFFSEFFUUF4UC96QUJNQXNBQkZXTEFJTHh1eENCcytXYkFMM0RBeEFQLy9BRVFBQUFWY0JiQUNCZ0M0QUFELy93QlAvaUlGZmdRNkFnWUF6QUFBLy84QUVBQUFCUE1HL0FJbUFSZ0FBQUVIQUtzRVNRRU9BQllBc0FCRldMQVBMeHV4RHg4K1diQVIzTEFWMERBeC8vLy84UUFBQkJnRjBBSW1BUmtBQUFFSEFLc0Q1Zi9pQUJZQXNBQkZXTEFSTHh1eEVScytXYkFUM0xBWDBEQXgvLzhBVC81TENHUUVUZ0FtQUZNQUFBQUhBRjBFamdBQS8vOEFadjVMQ1Z3RnhBQW1BRE1BQUFBSEFGMEZoZ0FBLy84QVNmNDZCSDhGd3dJbUFOb0FBQUFIQWJBQmt2K2cvLzhBVGY0N0E4UUVUUUltQU80QUFBQUhBYkFCT2YraC8vOEFadjQrQk9zRnhBSW1BQ2NBQUFBSEFiQUIxditrLy84QVQvNCtBL1VFVGdJbUFFY0FBQUFIQWJBQlN2K2svLzhBQndBQUJOWUZzQUlHQUQwQUFQLy9BQ0QrWHdQMUJEb0NCZ0M4QUFELy93Q2pBQUFCbndXd0FnWUFMUUFBLy84QUZnQUFCNXNISXdJbUFOa0FBQUVIQUtBQ0hRRTlBQk1Bc0FCRldMQU5MeHV4RFI4K1diQVozREF4QVAvL0FCNEFBQVpjQmRrQ0pnRHRBQUFCQndDZ0FZZi84d0FUQUxBQVJWaXdEUzhic1EwYlBsbXdHZHd3TVFELy93Q2pBQUFCbndXd0FnWUFMUUFBLy84QUVnQUFCVUlISEFJbUFDVUFBQUVIQUtBQTlnRTJBQk1Bc0FCRldMQUVMeHV4QkI4K1diQU8zREF4QVAvL0FGci83QVA3QmVZQ0pnQkZBQUFCQndDZ0FJQUFBQUFUQUxBQVJWaXdGeThic1JjYlBsbXdMZHd3TVFELy93QVNBQUFGUWdjQ0FpWUFKUUFBQVFjQWFnRHVBVFlBRmdDd0FFVllzQVF2RzdFRUh6NVpzQkxjc0J2UU1ESC8vd0JhLyt3RCt3WE1BaVlBUlFBQUFRWUFhbmdBQUJZQXNBQkZXTEFYTHh1eEZ4cytXYkF4M0xBNjBEQXgvLy8vOWdBQUIxY0ZzQUlHQUlFQUFQLy9BRWovN0FhRUJGQUNCZ0NHQUFELy93Q1VBQUFFVEFjakFpWUFLUUFBQVFjQW9BQzdBVDBBRXdDd0FFVllzQVl2RzdFR0h6NVpzQS9jTURFQS8vOEFVLy9zQkFzRjVnSW1BRWtBQUFFR0FLQjBBQUFUQUxBQVJWaXdDQzhic1FnYlBsbXdJZHd3TVFELy93QlIvK3NGSGdiYkFpWUJSUUFBQVFjQWFnRENBUThBRmdDd0FFVllzQUF2RzdFQUh6NVpzQ2Jjc0MvUU1ESC8vd0JaLyt3RCtBUlBBZ1lBbkFBQS8vOEFXZi9zQS9nRnpRSW1BSndBQUFFR0FHcHBBUUFXQUxBQVJWaXdBQzhic1FBYlBsbXdKdHl3TDlBd01mLy9BQllBQUFlYkJ3a0NKZ0RaQUFBQkJ3QnFBaFVCUFFBV0FMQUFSVml3RFM4YnNRMGZQbG13SGR5d0p0QXdNZi8vQUI0QUFBWmNCYjhDSmdEdEFBQUJCd0JxQVgvLzh3QVdBTEFBUlZpd0RTOGJzUTBiUGxtd0hkeXdKdEF3TWYvL0FFbi83UVIvQnhjQ0pnRGFBQUFCQndCcUFLTUJTd0FXQUxBQVJWaXdDeThic1FzZlBsbXdNZHl3T3RBd01mLy9BRTMvN0FQRUJjd0NKZ0R1QUFBQkJnQnFUZ0FBRmdDd0FFVllzQ1V2RzdFbEd6NVpzQy9jc0RqUU1ESC8vd0NVQUFBRkRRYnhBaVlBMndBQUFRY0FjQURsQVVFQUV3Q3dBRVZZc0Fndkc3RUlIejVac0F2Y01ERUEvLzhBaGdBQUJCSUZwd0ltQU84QUFBRUdBSEJmOXdBVEFMQUFSVml3Qnk4YnNRY2JQbG13Qzl3d01RRC8vd0NVQUFBRkRRY0pBaVlBMndBQUFRY0FhZ0VWQVQwQUZnQ3dBRVZZc0Fndkc3RUlIejVac0JIY3NCclFNREgvL3dDR0FBQUVFZ1cvQWlZQTd3QUFBUWNBYWdDUC8vTUFGZ0N3QUVWWXNBZ3ZHN0VJR3o1WnNCSGNzQnJRTURILy93Qm0vK3dGSGdjQ0FpWUFNd0FBQVFjQWFnRUZBVFlBRmdDd0FFVllzQXd2RzdFTUh6NVpzQ2Jjc0MvUU1ESC8vd0JQLyt3RVBRWE1BaVlBVXdBQUFRY0FhZ0NCQUFBQUZnQ3dBRVZZc0FRdkc3RUVHejVac0NMY3NDdlFNREgvL3dCZi8rd0ZGd1hFQWdZQkZnQUEvLzhBVC8vc0JEMEVUZ0lHQVJjQUFQLy9BRi8vN0FVWEJ3WUNKZ0VXQUFBQkJ3QnFBUk1CT2dBV0FMQUFSVml3REM4YnNRd2ZQbG13SnR5d0w5QXdNZi8vQUUvLzdBUTlCY3dDSmdFWEFBQUJCZ0JxY3dBQUZnQ3dBRVZZc0FRdkc3RUVHejVac0NYY3NDN1FNREgvL3dCci8rd0U4UWNZQWlZQTVnQUFBUWNBYWdEakFVd0FGZ0N3QUVWWXNCTXZHN0VUSHo1WnNDZmNzRERRTURILy93QlIvK3dENkFYTUFpWUEvZ0FBQVFZQWFsa0FBQllBc0FCRldMQUlMeHV4Q0JzK1diQW8zTEF4MERBeC8vOEFPZi9yQk4wRzhRSW1BTjBBQUFFSEFIQUFvUUZCQUFrQXNBRXZzQkRjTURFQS8vOEFEUDVMQTlZRnRBSW1BRjBBQUFFR0FIQVNCQUFKQUxBQkw3QVEzREF4QVAvL0FEbi82d1RkQndrQ0pnRGRBQUFCQndCcUFORUJQUUFXQUxBQVJWaXdEeThic1E4ZlBsbXdGOXl3SU5Bd01mLy9BQXorU3dQV0Jjd0NKZ0JkQUFBQkJnQnFRZ0FBRmdDd0FFVllzQTh2RzdFUEd6NVpzQmZjc0NEUU1ESC8vd0E1LytzRTNRYzhBaVlBM1FBQUFRY0FwUUV2QVQwQUZnQ3dBRVZZc0E4dkc3RVBIejVac0JiY3NCTFFNREgvL3dBTS9rc0Q5Z1gvQWlZQVhRQUFBUWNBcFFDZ0FBQUFGZ0N3QUVWWXNBOHZHN0VQR3o1WnNCYmNzQkxRTURILy93Q09BQUFFN2djSkFpWUE0QUFBQVFjQWFnRVBBVDBBRmdDd0FFVllzQW92RzdFS0h6NVpzQm5jc0NMUU1ESC8vd0JmQUFBRDRBVy9BaVlBK0FBQUFRWUFhbWZ6QUJZQXNBQkZXTEFKTHh1eENScytXYkFaM0xBaTBEQXgvLzhBbXdBQUJsZ0hDZ0FtQU9VTEFBQW5BQzBFdVFBQUFRY0FhZ0hDQVQ0QUZnQ3dBRVZZc0Fzdkc3RUxIejVac0NEY3NDblFNREgvL3dDUEFBQUZ5UVcvQUNZQS9RQUFBQ2NBakFSSEFBQUJCd0JxQVhULzh3QVdBTEFBUlZpd0N5OGJzUXNiUGxtd0g5eXdLTkF3TWYvL0FDbitTd1ZSQmJBQ0pnQThBQUFBQndHdkE4TUFBUC8vQUIvK1N3UldCRG9DSmdCY0FBQUFCd0d2QXNnQUFQLy9BRS8vN0FRREJnQUNCZ0JJQUFELy93QXQva3NGL1FXd0FpWUEzQUFBQUFjQnJ3UnZBQUQvL3dBaC9rc0ZCd1E2QWlZQThRQUFBQWNCcndONUFBRC8vd0FTL3BjRlFnV3dBaVlBSlFBQUFBY0FyQVVOQUFQLy93QmEvcHNEK3dST0FpWUFSUUFBQUFjQXJBUkFBQWYvL3dBU0FBQUZRZ2U3QWlZQUpRQUFBUWNBcWdVRkFUd0FDUUN3QkMrd0M5d3dNUUQvL3dCYS8rd0Qrd2FGQWlZQVJRQUFBUWNBcWdTUEFBWUFDUUN3Rnkrd0t0d3dNUUQvL3dBU0FBQUZTZ2V4QWlZQUpRQUFBUWNCdHdDL0FTRUFGd0N3QUVWWXNBVXZHN0VGSHo1WnNRNEo5TEFVMERBeEFQLy9BRnIvN0FUVUJud0NKZ0JGQUFBQkJnRzNTZXdBREFDd0Z5K3dMTnl3TWRBd01mLy9BQkFBQUFWQ0I2NENKZ0FsQUFBQkJ3RzJBTVFCS3dBWEFMQUFSVml3QkM4YnNRUWZQbG14RGduMHNCUFFNREVBLy8vL212L3NBL3NHZVFJbUFFVUFBQUVHQWJaTzlnQU1BTEFYTDdBcTNMQXgwREF4Ly84QUVnQUFCVUlIM2dJbUFDVUFBQUVIQWJVQXd3RVRBQXdBc0FRdnNBdmNzQkxRTURILy93QmEvK3dFVndhcEFpWUFSUUFBQVFZQnRVM2VBQXdBc0JjdnNDcmNzREhRTURILy93QVNBQUFGUWdmV0FpWUFKUUFBQVFjQnRBREVBUVVBREFDd0JDK3dDOXl3RXRBd01mLy9BRnIvN0FQN0JxRUNKZ0JGQUFBQkJnRzBUdEFBREFDd0Z5K3dLdHl3TWRBd01mLy9BQkwrbHdWQ0J6Y0NKZ0FsQUFBQUp3Q2RBTU1CTmdBSEFLd0ZEUUFELy84QVd2NmJBL3NHQVFJbUFFVUFBQUFtQUoxTkFBQUhBS3dFUUFBSC8vOEFFZ0FBQlVJSHJnSW1BQ1VBQUFFSEFiTUE3d0V3QUF3QXNBUXZzQTdjc0JuUU1ESC8vd0JhLyt3RCt3WjVBaVlBUlFBQUFRWUJzM243QUF3QXNCY3ZzQzNjc0RqUU1ESC8vd0FTQUFBRlFnZXVBaVlBSlFBQUFRY0J1QUR2QVRBQURBQ3dCQyt3RHR5d0dkQXdNZi8vQUZyLzdBUDdCbmtDSmdCRkFBQUJCZ0c0ZWZzQURBQ3dGeSt3TGR5d09OQXdNZi8vQUJJQUFBVkNDRDRDSmdBbEFBQUJCd0d5QU80Qk5nQU1BTEFFTDdBTzNMQVowREF4Ly84QVd2L3NBL3NIQ0FJbUFFVUFBQUVHQWJKNEFBQU1BTEFYTDdBdDNMQTQwREF4Ly84QUVnQUFCVUlJR0FJbUFDVUFBQUVIQWJFQThRRThBQXdBc0FRdnNCVGNzQmpRTURILy93QmEvK3dEK3diaUFpWUFSUUFBQVFZQnNYc0dBQXdBc0JjdnNEUGNzRGZRTURILy93QVMvcGNGUWdjY0FpWUFKUUFBQUNjQW9BRDJBVFlBQndDc0JRMEFBLy8vQUZyK213UDdCZVlDSmdCRkFBQUFKd0NnQUlBQUFBQUhBS3dFUUFBSC8vOEFsUDZlQkV3RnNBSW1BQ2tBQUFBSEFLd0V5d0FLLy84QVUvNlVCQXNFVGdJbUFFa0FBQUFIQUt3RWp3QUEvLzhBbEFBQUJFd0h3Z0ltQUNrQUFBRUhBS29FeWdGREFBa0FzQVl2c0F6Y01ERUEvLzhBVS8vc0JBc0doUUltQUVrQUFBRUhBS29FZ3dBR0FBa0FzQWd2c0I3Y01ERUEvLzhBbEFBQUJFd0hNd0ltQUNrQUFBRUhBS1FBaWdFK0FBa0FzQVl2c0JmY01ERUEvLzhBVS8vc0JBc0Y5Z0ltQUVrQUFBRUdBS1JEQVFBSkFMQUlMN0FwM0RBeEFQLy9BSlFBQUFVUEI3Z0NKZ0FwQUFBQkJ3RzNBSVFCS0FBWEFMQUFSVml3Qnk4YnNRY2ZQbG14RHduMHNCWFFNREVBLy84QVUvL3NCTWdHZkFJbUFFa0FBQUVHQWJjOTdBQU1BTEFJTDdBZzNMQWwwREF4Ly8vLzFRQUFCRXdIdFFJbUFDa0FBQUVIQWJZQWlRRXlBQmNBc0FCRldMQUdMeHV4Qmg4K1diRVBDZlN3Rk5Bd01RRC8vLytPLyt3RUN3WjVBaVlBU1FBQUFRWUJ0a0wyQUF3QXNBZ3ZzQjdjc0NYUU1ESC8vd0NVQUFBRWtnZmxBaVlBS1FBQUFRY0J0UUNJQVJvQURBQ3dCaSt3RE55d0U5QXdNZi8vQUZQLzdBUkxCcWtDSmdCSkFBQUJCZ0cxUWQ0QURBQ3dDQyt3SHR5d0pkQXdNZi8vQUpRQUFBUk1COTBDSmdBcEFBQUJCd0cwQUlrQkRBQU1BTEFHTDdBTTNMQVQwREF4Ly84QVUvL3NCQXNHb1FJbUFFa0FBQUVHQWJSQzBBQU1BTEFJTDdBZTNMQWwwREF4Ly84QWxQNmVCRXdIUGdJbUFDa0FBQUFuQUowQWlBRTlBQWNBckFUTEFBci8vd0JUL3BRRUN3WUJBaVlBU1FBQUFDWUFuVUVBQUFjQXJBU1BBQUQvL3dDakFBQUNFUWZDQWlZQUxRQUFBUWNBcWdONEFVTUFDUUN3QWkrd0JOd3dNUUQvL3dDUEFBQUIvUVorQWlZQWpBQUFBUWNBcWdOay8vOEFDUUN3QWkrd0JOd3dNUUQvL3dDVS9wb0Jwd1d3QWlZQUxRQUFBQWNBckFONEFBYi8vd0I0L3A0QmtBWFZBaVlBVFFBQUFBY0FyQU5jQUFyLy93Qm0vcFFGSGdYRUFpWUFNd0FBQUFjQXJBVWRBQUQvL3dCUC9wSUVQUVJPQWlZQVV3QUFBQWNBckFTZC8vNy8vd0JtLyt3RkhnZTdBaVlBTXdBQUFRY0FxZ1VjQVR3QUNRQ3dGQyt3SDl3d01RRC8vd0JQLyt3RVBRYUZBaVlBVXdBQUFRY0FxZ1NZQUFZQUNRQ3dCQyt3Rzl3d01RRC8vd0JtLyt3RllRZXhBaVlBTXdBQUFRY0J0d0RXQVNFQURBQ3dGQyt3SWR5d0p0QXdNZi8vQUUvLzdBVGRCbndDSmdCVEFBQUJCZ0czVXV3QURBQ3dCQyt3SGR5d0l0QXdNZi8vQUNmLzdBVWVCNjRDSmdBekFBQUJCd0cyQU5zQkt3QU1BTEFVTDdBZjNMQW0wREF4Ly8vL28vL3NCRDBHZVFJbUFGTUFBQUVHQWJaWDlnQU1BTEFFTDdBYjNMQWkwREF4Ly84QVp2L3NCUjRIM2dJbUFETUFBQUVIQWJVQTJnRVRBQXdBc0JRdnNCL2NzQ2JRTURILy93QlAvK3dFWUFhcEFpWUFVd0FBQVFZQnRWYmVBQXdBc0FRdnNCdmNzQ0xRTURILy93Qm0vK3dGSGdmV0FpWUFNd0FBQVFjQnRBRGJBUVVBREFDd0ZDK3dIOXl3SnRBd01mLy9BRS8vN0FROUJxRUNKZ0JUQUFBQkJnRzBWOUFBREFDd0JDK3dHOXl3SXRBd01mLy9BR2IrbEFVZUJ6Y0NKZ0F6QUFBQUp3Q2RBTm9CTmdBSEFLd0ZIUUFBLy84QVQvNlNCRDBHQVFJbUFGTUFBQUFtQUoxV0FBQUhBS3dFbmYvKy8vOEFXUC9zQmFvSE13SW1BSmNBQUFBSEFIVUIwd0V6Ly84QVQvL3NCTHNHQUFJbUFKZ0FBQUVIQUhVQldBQUFBQWtBc0FrdnNDWGNNREVBLy84QVdQL3NCYW9ITXdJbUFKY0FBQUFIQUVRQk5BRXovLzhBVC8vc0JMc0dBQUltQUpnQUFBRUhBRVFBdVFBQUFBa0FzQWt2c0NQY01ERUEvLzhBV1Avc0Jhb0h1QUltQUpjQUFBQUhBS29GRmdFNS8vOEFULy9zQkxzR2hRSW1BSmdBQUFFSEFLb0Vtd0FHQUFrQXNBa3ZzQ1BjTURFQS8vOEFXUC9zQmFvSEtRSW1BSmNBQUFBSEFLUUExZ0UwLy84QVQvL3NCTHNGOWdJbUFKZ0FBQUVHQUtSYkFRQUpBTEFKTDdBdTNEQXhBUC8vQUZqK2xBV3FCaTRDSmdDWEFBQUFCd0NzQlFZQUFQLy9BRS8raXdTN0JLZ0NKZ0NZQUFBQUJ3Q3NCSnIvOS8vL0FIMytsQVM5QmJBQ0pnQTVBQUFBQndDc0JQSUFBUC8vQUhmK2xBUDNCRG9DSmdCWkFBQUFCd0NzQkVFQUFQLy9BSDMvN0FTOUI3c0NKZ0E1QUFBQkJ3Q3FCUE1CUEFBSkFMQUFMN0FSM0RBeEFQLy9BSGYvN0FQM0JvVUNKZ0JaQUFBQkJ3Q3FCSkVBQmdBSkFMQUdMN0FSM0RBeEFQLy9BSDMvN0FZOUIwSUNKZ0NaQUFBQkJ3QjFBZGNCUWdBSkFMQUVMN0FiM0RBeEFQLy9BSGYvN0FVb0Jld0NKZ0NhQUFBQkJ3QjFBVmYvN0FBSkFMQUFMN0FjM0RBeEFQLy9BSDMvN0FZOUIwSUNKZ0NaQUFBQkJ3QkVBVGdCUWdBSkFMQUVMN0FaM0RBeEFQLy9BSGYvN0FVb0Jld0NKZ0NhQUFBQkJ3QkVBTGovN0FBSkFMQUFMN0FhM0RBeEFQLy9BSDMvN0FZOUI4Y0NKZ0NaQUFBQkJ3Q3FCUm9CU0FBSkFMQUVMN0FaM0RBeEFQLy9BSGYvN0FVb0JuRUNKZ0NhQUFBQkJ3Q3FCSnIvOGdBSkFMQUFMN0FhM0RBeEFQLy9BSDMvN0FZOUJ6Z0NKZ0NaQUFBQkJ3Q2tBTm9CUXdBSkFMQUVMN0FrM0RBeEFQLy9BSGYvN0FVb0JlSUNKZ0NhQUFBQkJnQ2tXdTBBQ1FDd0FDK3dKZHd3TVFELy93Qjkvb3NHUFFZQkFpWUFtUUFBQUFjQXJBVVovL2YvL3dCMy9wUUZLQVNUQWlZQW1nQUFBQWNBckFSRkFBRC8vd0FIL3FRRTFnV3dBaVlBUFFBQUFBY0FyQVRHQUJELy93QU0vZzhEMWdRNkFpWUFYUUFBQUFjQXJBVkcvM3YvL3dBSEFBQUUxZ2U3QWlZQVBRQUFBUWNBcWdUS0FUd0FDUUN3QVMrd0Nkd3dNUUQvL3dBTS9rc0QxZ2FGQWlZQVhRQUFBUWNBcWdSWkFBWUFDUUN3QVMrd0VOd3dNUUQvL3dBSEFBQUUxZ2NzQWlZQVBRQUFBUWNBcEFDS0FUY0FDUUN3QVMrd0ZOd3dNUUQvL3dBTS9rc0QxZ1gyQWlZQVhRQUFBUVlBcEJrQkFBa0FzQUV2c0J2Y01ERUFBQUlBVC8vc0JMSUdBQUFXQUNFQWpMSWZJaU1SRWptd0h4Q3dFTkFBc0JNdnNBQkZXTEFNTHh1eERCcytXYkFBUlZpd0JpOGJzUVlQUGxtd0FFVllzQUl2RzdFQ0R6NVpzaThUQVYyeUR4TUJYYklXQWhNUkVqbXdGaSt5QUFjS0sxZ2gyQnYwV2JJRURBWVJFam15RGd3R0VSSTVzQS9Rc0JZUXNCSFFzQVlRc2hvQkNpdFlJZGdiOUZtd0RCQ3lId0VLSzFnaDJCdjBXVEF4QVNNUkl5Y0dJeUlDRVRRU016SVhOU00xTXpVekZUTUJGQll6TWpjUkppTWlCZ1N5cjl3TWJiYSs2K2pEckdyNysvT3YvSkIvZFpWRlE1VjJnQVRKK3pkd2hBRXlBUWY2QVM5NDg2cU5qZnlkcGJtRkFjNkN1Ly8vQUUvK3JnU3lCZ0FBSmdCSUFBQUFKd0hlQVlVQ1FnRUhBRU1BbWY5dEFCSUFzaThjQVYyeUh4d0JjYktmSEFGZE1ESC8vd0NiL3BvRmZnV3dBaVlCNHdBQUFBY0JzQVF2QUFELy93Q1AvcG9Fd2dRNkFpWUE4QUFBQUFjQnNBTnpBQUQvL3dDVS9wb0Yyd1d3QWlZQUxBQUFBQWNCc0FTTUFBRC8vd0NHL3BvRTFRUTZBaVlBOHdBQUFBY0JzQU9HQUFELy93QXQvcG9Fc0FXd0FpWUFPQUFBQUFjQnNBSk5BQUQvL3dBai9wb0QwQVE2QWlZQTlRQUFBQWNCc0FIbUFBRC8vd0FwL3BvRklnV3dBaVlBUEFBQUFBY0JzQVBUQUFELy93QWYvcG9FSndRNkFpWUFYQUFBQUFjQnNBTFlBQUQvL3dDTy9wb0ZyUVd3QWlZQTRBQUFBQWNCc0FSZUFBRC8vd0JmL3BvRXBBUTdBaVlBK0FBQUFBY0JzQU5WQUFELy93Q08vcG9FN2dXd0FpWUE0QUFBQUFjQnNBTFBBQUQvL3dCZi9wb0Q0QVE3QWlZQStBQUFBQWNCc0FIR0FBRC8vd0NiL3BvRU53V3dBaVlBc0FBQUFBY0JzQUVIQUFELy93Q0YvcG9EVFFRNkFpWUE2d0FBQUFjQnNBRHNBQUQvL3dBVy9wb0lCUVd3QWlZQTJRQUFBQWNCc0FhMkFBRC8vd0FlL3BvR3RBUTZBaVlBN1FBQUFBY0JzQVZsQUFELy93QVcva01GdkFYRUFpWUJQd0FBQUFjQnNBTHQvNm4vLy8vTC9rWUVpd1JPQWlZQlFBQUFBQWNCc0FIMS82ei8vd0I1QUFBRCtBWUFBZ1lBVEFBQUFBTC8wQUFBQk1FRnNBQVRBQndBYnJJQUhSNFJFam13RnRBQXNBQkZXTEFRTHh1eEVCOCtXYkFBUlZpd0NpOGJzUW9QUGxteUV4QUtFUkk1c0JNdnNnQUhDaXRZSWRnYjlGbXlBaEFLRVJJNXNBSXZzQUFRc0F6UXNCTVFzQTdRc0FJUXNoUUJDaXRZSWRnYjlGbXdDaEN5RlFFS0sxZ2gyQnYwV1RBeEFTTVZJVElXRmhVVUJBY2hFU00xTXpVekZUTURFU0V5TmpVMEppY0NiZUFCS3FEdWZQN3I3LzNUd01EOTRPQUJLWUNQakh3RVI4UnV5b1hNK0FJRVI2cS92LzNIL2hLTGMyNkFBZ0FDLzlBQUFBVEJCYkFBRXdBY0FHNnlBQjBlRVJJNXNCYlFBTEFBUlZpd0VDOGJzUkFmUGxtd0FFVllzQW92RzdFS0R6NVpzaE1RQ2hFU09iQVRMN0lBQndvcldDSFlHL1Jac2dJUUNoRVNPYkFDTDdBQUVMQU0wTEFURUxBTzBMQUNFTElVQVFvcldDSFlHL1Jac0FvUXNoVUJDaXRZSWRnYjlGa3dNUUVqRlNFeUZoWVZGQVFISVJFak5UTTFNeFV6QXhFaE1qWTFOQ1luQW0zZ0FTcWc3bnorNisvOTA4REEvZURnQVNtQWo0eDhCRWZFYnNxRnpQZ0NCRWVxdjcvOXgvNFNpM051Z0FJQUFmL3dBQUFFTndXd0FBMEFTUUN3QUVWWXNBZ3ZHN0VJSHo1WnNBQkZXTEFDTHh1eEFnOCtXYklOQ0FJUkVqbXdEUyt5QUFjS0sxZ2gyQnYwV2JBRTBMQU5FTEFHMExBSUVMSUtBUW9yV0NIWUcvUlpNREVCSXhFakVTTTFNeEVoRlNFUk13S045dnlycXdPYy9XRDJBcC85WVFLZnFnSm56UDVsQUFILzRnQUFBMDBFT2dBTkFFa0FzQUJGV0xBSUx4dXhDQnMrV2JBQVJWaXdBaThic1FJUFBsbXlEUWdDRVJJNXNBMHZzZ0FIQ2l0WUlkZ2I5Rm13Qk5Dd0RSQ3dCdEN3Q0JDeUNnRUtLMWdoMkJ2MFdUQXhBU0VSSXhFak5UTVJJUlVoRlNFQ2YvNzQ4cU9qQXNqK0tnRUlBZEgrTHdIUnFnRy94UHNBQUFILzR3QUFCVVFGc0FBVUFIUUFzQUJGV0xBSUx4dXhDQjgrV2JBQVJWaXdFQzhic1JBZlBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQVRMeHV4RXc4K1diSU9DQUlSRWptd0RpK3lBUUVLSzFnaDJCdjBXYklIQ0FJUkVqbXdCeSt5QkFFS0sxZ2gyQnYwV2JBSEVMQUswTEFFRUxBTTBMSVNBUTRSRWprd01RRWpFU01SSXpVek5UTVZNeFVqRlRNQklRRUJJUUpYclB6TXpQelYxWXNCckFFMi9nd0NJUDdRQW5EOWtBUS9xc2ZIcXZNQ1pQMUgvUWtBQWYrdUFBQUVTUVlBQUJRQWRBQ3dBRVZZc0Fndkc3RUlJVDVac0FCRldMQVFMeHV4RUJzK1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNCTXZHN0VURHo1WnNnNFFBaEVTT2JBT0w3SUJBUW9yV0NIWUcvUlpzZ2NJRUJFU09iQUhMN0lFQndvcldDSFlHL1Jac0FjUXNBclFzQVFRc0F6UXNoSUJEaEVTT1RBeEFTTVJJeEVqTlRNMU14VXpGU01STXdFaEFRRWhBZlp2OHVmbjhzVEVhUUVQQVJ6K253R1AvdVlCMmY0bkJMdXFtNXVxL2VFQm52NFIvYlVBLy84QWxQNStCZDBISXdJbUFOc0FBQUFuQUtBQkhRRTlBUWNBRUFTQS84WUFFd0N3QUVWWXNBZ3ZHN0VJSHo1WnNBM2NNREVBLy84QWh2NStCT1FGMlFJbUFPOEFBQUFuQUtBQWwvL3pBUWNBRUFPSC84WUFFd0N3QUVWWXNBZ3ZHN0VJR3o1WnNBM2NNREVBLy84QWxQNStCZWtGc0FJbUFDd0FBQUFIQUJBRWpQL0cvLzhBaHY1K0JPTUVPZ0ltQVBNQUFBQUhBQkFEaHYvRy8vOEFsUDUrQnpJRnNBSW1BREVBQUFBSEFCQUYxZi9HLy84QWovNStCa0VFT2dJbUFQSUFBQUFIQUJBRTVQL0cvLzhBTGY1K0Jkd0ZzQUltQU53QUFBQUhBQkFFZi8vRy8vOEFJZjUrQk9ZRU9nSW1BUEVBQUFBSEFCQURpZi9HQUFFQUJ3QUFCTllGc0FBT0FGYXlDZzhRRVJJNUFMQUFSVml3Q0M4YnNRZ2ZQbG13QUVWWXNBc3ZHN0VMSHo1WnNBQkZXTEFDTHh1eEFnOCtXYklHQWdnUkVqbXdCaSt5QlFjS0sxZ2gyQnYwV2JBQjBMSUtDQUlSRWptd0JoQ3dEdEF3TVFFakVTTVJJelV6QVNFQkFTRUJNd1BEMWY3S2V2NW5BUmtCVHdGUEFSaitaNFlDQlAzOEFnU3FBd0w5VGdLeS9QNEFBQUVBSVA1ZkEvVUVPZ0FPQUdPeUNnOFFFUkk1QUxBQVJWaXdDQzhic1FnYlBsbXdBRVZZc0Fzdkc3RUxHejVac0FCRldMQUNMeHV4QWhFK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBUXZHN0VFRHo1WnNnWUhDaXRZSWRnYjlGbXlDZ3NBRVJJNXNBM1FzQTdRTURFRkl4RWpFU00xTXdFekV4TXpBVE1EWU56enpxTCt1L3Z6N1B2K3ZLOEIvbUFCb0tvRGtmMEJBdi84YndBQUFRQXBBQUFFNlFXd0FCRUFZd0N3QUVWWXNBc3ZHN0VMSHo1WnNBQkZXTEFPTHh1eERoOCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVV2RzdFRkR6NVpzaEVMQWhFU09iQVJMN0lBQndvcldDSFlHL1Jac2dRTEFoRVNPYkFIMExBUkVMQUowTElOQ3dJUkVqa3dNUUVqQVNFQkFTRUJJelV6QVNFQkFTRUJNd1BiaHdHVi90bit4LzdHL3RvQmxvRnovb0lCSkFFeUFUSUJKUDZEZVFLVi9Xc0NGdjNxQXBXcUFuSDk4Z0lPL1k4QUFRQWZBQUFENkFRNkFCRUFZd0N3QUVWWXNBc3ZHN0VMR3o1WnNBQkZXTEFPTHh1eERocytXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVV2RzdFRkR6NVpzaEVPQWhFU09iQVJMN0lBQndvcldDSFlHL1Jac2dRT0FoRVNPYkFIMExBUkVMQUowTElORGdJUkVqa3dNUUVqQVNFREF5RUJJelV6QVNFVEV5RUJNd05YbFFFbS92VFkxLzd5QVNXS2d2N3ZBUXpLemdFTy91Nk1BZGYrS1FGeS9vNEIxNm9CdWY2Y0FXVCtSLy8vQUdELzdBUU1CRTBDQmdDK0FBRC8vd0FDQUFBRU1RV3dBaVlBS2dBQUFBY0Izdjl5L21uLy93Q0JBbTBGMFFNeEFFWUJsNFVBWm1aQUFQLy9BRkVBQUFSQUJjUUNCZ0FXQUFELy93QlAvK3dFRlFYRUFnWUFGd0FBLy84QU5BQUFCRmdGc0FJR0FCZ0FBUC8vQUlILzdBUTZCYkFDQmdBWkFBRC8vd0JkLy9vRUVnWEVBQVlBSFFBQS8vOEFmZi9zQkRZRnhBQUdBQlFVQVAvL0FHci83QVR3QjBzQ0pnQXJBQUFCQndCMUFiMEJTd0FKQUxBTEw3QWgzREF4QVAvL0FGTCtWZ1FNQmdBQ0pnQkxBQUFCQndCMUFUOEFBQUFKQUxBREw3QW4zREF4QVAvL0FKUUFBQVVYQnpZQ0pnQXlBQUFCQndCRUFVd0JOZ0FUQUxBQVJWaXdCaThic1FZZlBsbXdDOXd3TVFELy93QjVBQUFEK0FZQUFpWUFVZ0FBQVFjQVJBQ3pBQUFBRXdDd0FFVllzQUF2RzdFQUd6NVpzQkxjTURFQS8vOEFFZ0FBQlVJSElRSW1BQ1VBQUFFSEFLc0Vkd0V6QUJZQXNBQkZXTEFFTHh1eEJCOCtXYkFNM0xBUTBEQXgvLzhBRGYvc0Evc0Y3QUltQUVVQUFBRUhBS3NFQWYvK0FCWUFzQUJGV0xBWEx4dXhGeHMrV2JBcjNMQXYwREF4Ly84QVNBQUFCRXdIS0FJbUFDa0FBQUVIQUtzRVBBRTZBQllBc0FCRldMQUdMeHV4Qmg4K1diQU4zTEFSMERBeC8vOEFBZi9zQkFzRjdBSW1BRWtBQUFFSEFLc0Q5Zi8rQUJZQXNBQkZXTEFJTHh1eENCcytXYkFmM0xBajBEQXgvLy8rOWdBQUFoNEhLQUltQUMwQUFBRUhBS3NDNmdFNkFCWUFzQUJGV0xBQ0x4dXhBaDgrV2JBRjNMQUowREF4Ly8vKzRnQUFBZ29GNUFJbUFJd0FBQUVIQUtzQzF2LzJBQllBc0FCRldMQUNMeHV4QWhzK1diQUYzTEFKMERBeC8vOEFadi9zQlI0SElRSW1BRE1BQUFFSEFLc0VqZ0V6QUJZQXNBQkZXTEFNTHh1eERCOCtXYkFnM0xBazBEQXgvLzhBRnYvc0JEMEY3QUltQUZNQUFBRUhBS3NFQ3YvK0FCWUFzQUJGV0xBRUx4dXhCQnMrV2JBYzNMQWcwREF4Ly84QU1nQUFCTjRISVFJbUFEWUFBQUVIQUtzRUpnRXpBQllBc0FCRldMQUVMeHV4QkI4K1diQVozTEFkMERBeC8vLy9iZ0FBQXJRRjdBSW1BRllBQUFFSEFLc0RZdi8rQUJZQXNBQkZXTEFITHh1eEJ4cytXYkFQM0xBVDBEQXgvLzhBY2Yvc0JMMEhJUUltQURrQUFBRUhBS3NFWlFFekFCWUFzQUJGV0xBSkx4dXhDUjgrV2JBUzNMQVcwREF4Ly84QUQvL3NBL2NGN0FJbUFGa0FBQUVIQUtzRUEvLytBQllBc0FCRldMQUhMeHV4QnhzK1diQVMzTEFXMERBeC8vLytyQUFBQlFJR1FRQW1BTTlrQUFBSEFLMzk1Z0FBLy84QWxQNmVCS01Gc0FJbUFDWUFBQUFIQUt3RXVRQUsvLzhBZlA2TEJESUdBQUltQUVZQUFBQUhBS3dFeS8vMy8vOEFsUDZlQk5JRnNBSW1BQ2dBQUFBSEFLd0VsQUFLLy84QVQvNlVCQU1HQUFJbUFFZ0FBQUFIQUt3RXRBQUEvLzhBbFAzNUJOSUZzQUltQUNnQUFBQUhBYUlCU1A2Uy8vOEFULzM1QkFNR0FBSW1BRWdBQUFBSEFhSUJhUDZTLy84QWxQNmVCUmdGc0FJbUFDd0FBQUFIQUt3RkpnQUsvLzhBZWY2ZUEvZ0dBQUltQUV3QUFBQUhBS3dFb1FBSy8vOEFsQUFBQlJnSE5nSW1BQzhBQUFFSEFIVUJiZ0UyQUFrQXNBUXZzQS9jTURFQS8vOEFmUUFBQkRZSFBRSW1BRThBQUFFSEFIVUJhd0U5QUFrQXNBUXZzQS9jTURFQS8vOEFsUDdmQlJnRnNBSW1BQzhBQUFBSEFLd0U2UUJMLy84QWZmN0tCRFlHQUFJbUFFOEFBQUFIQUt3RWVRQTIvLzhBbFA2ZUJDWUZzQUltQURBQUFBQUhBS3dFdVFBSy8vOEFlUDZlQVlzR0FBSW1BRkFBQUFBSEFLd0RYQUFLLy84QWxQNmVCbW9Gc0FJbUFERUFBQUFIQUt3RjFnQUsvLzhBZlA2ZUJua0VUZ0ltQUZFQUFBQUhBS3dGMlFBSy8vOEFsUDZhQlJjRnNBSW1BRElBQUFBSEFLd0ZLQUFHLy84QWVmNmVBL2dFVGdJbUFGSUFBQUFIQUt3RWpRQUsvLzhBbEFBQUJOUUhRZ0ltQURRQUFBRUhBSFVCY2dGQ0FBa0FzQU12c0JiY01ERUEvLzhBZlA1Z0JEQUY5d0ltQUZRQUFBRUhBSFVCbmYvM0FBa0FzQXd2c0IzY01ERUEvLzhBbFA2ZUJONEZzQUltQURZQUFBQUhBS3dFdWdBSy8vOEFjdjZlQXJRRVRnSW1BRllBQUFBSEFLd0RWZ0FLLy84QVN2NlVCSW9GeEFJbUFEY0FBQUFIQUt3RTFRQUEvLzhBUy82TEE4b0VUZ0ltQUZjQUFBQUhBS3dFZlAvMy8vOEFMZjZYQkxBRnNBSW1BRGdBQUFBSEFLd0V3d0FELy84QUNQNlVBbklGUVFJbUFGZ0FBQUFIQUt3RUZBQUEvLzhBRWdBQUJSMEhPQUltQURvQUFBRUhBS1FBc0FGREFBa0FzQUV2c0JMY01ERUEvLzhBRmdBQUE5b0Y3UUltQUZvQUFBRUdBS1FZK0FBSkFMQUJMN0FTM0RBeEFQLy9BQkwrbmdVZEJiQUNKZ0E2QUFBQUJ3Q3NCTzhBQ3YvL0FCYituZ1BhQkRvQ0pnQmFBQUFBQndDc0JGY0FDdi8vQUREK25nYmxCYkFDSmdBN0FBQUFCd0NzQmVZQUN2Ly9BQ0grbmdYTUJEb0NKZ0JiQUFBQUJ3Q3NCVTRBQ3YvL0FGRCtuZ1NNQmJBQ0pnQStBQUFBQndDc0JNRUFDdi8vQUZMK25nUEFCRG9DSmdCZUFBQUFCd0NzQkdNQUN2Ly8vaHovN0FWa0JkY0FKZ0F6UmdBQUJ3RmEvYlVBQVAvL0FBa0FBQVNVQlI0Q0pnRzZBQUFBQndDdC8zYiszZi8vL3lvQUFBUHhCU0VBSmdHK1BBQUFCd0N0L21UKzRQLy8vemNBQUFTa0JSd0FKZ0hCUEFBQUJ3Q3QvbkgrMi8vLy96a0FBQUd6QlNFQUpnSENQQUFBQndDdC9uUCs0UC8vLzVQLzhBUjVCUjRBSmdISUNnQUFCd0N0L3MzKzNmLy8vdWdBQUFSeUJSNEFKZ0hTUEFBQUJ3Q3QvaUwrM2YvLy82UUFBQVNPQlI0QUpnSHpDZ0FBQndDdC90NyszZi8vQUFrQUFBU1VCSTBDQmdHNkFBRC8vd0IyQUFBRUNnU05BZ1lCdXdBQS8vOEFkZ0FBQTdVRWpRSUdBYjRBQVAvL0FFRUFBQVB6QkkwQ0JnSFRBQUQvL3dCMkFBQUVhQVNOQWdZQndRQUEvLzhBaFFBQUFYY0VqUUlHQWNJQUFQLy9BSFlBQUFSb0JJMENCZ0hFQUFELy93QjJBQUFGandTTkFnWUJ4Z0FBLy84QVQvL3dCRzhFblFJR0FjZ0FBUC8vQUhZQUFBUXNCSTBDQmdISkFBRC8vd0FrQUFBRUZnU05BZ1lCelFBQS8vOEFCUUFBQkRZRWpRSUdBZElBQVAvL0FCVUFBQVJLQkkwQ0JnSFJBQUQvLy8rZEFBQUNZd1hxQWlZQndnQUFBUWNBYXY5QUFCNEFGZ0N3QUVWWXNBSXZHN0VDSFQ1WnNBdmNzQlRRTURILy93QUZBQUFFTmdYcUFpWUIwZ0FBQVFZQWFsa2VBQllBc0FCRldMQUlMeHV4Q0IwK1diQVEzTEFaMERBeC8vOEFkZ0FBQTdVRjZnSW1BYjRBQUFFR0FHcGhIZ0FXQUxBQVJWaXdCaThic1FZZFBsbXdFOXl3SE5Bd01mLy9BSFlBQUFPWEJoNENKZ0hxQUFBQkJ3QjFBU01BSGdBSkFMQUVMN0FJM0RBeEFQLy9BRDcvOEFQdkJKMENCZ0hNQUFELy93Q0ZBQUFCZHdTTkFnWUJ3Z0FBLy8vL25RQUFBbU1GNmdJbUFjSUFBQUVIQUdyL1FBQWVBQllBc0FCRldMQUNMeHV4QWgwK1diQUwzTEFVMERBeC8vOEFKUC93QTJRRWpRSUdBY01BQVAvL0FIWUFBQVJvQmg0Q0pnSEVBQUFCQndCMUFSY0FIZ0FKQUxBRUw3QVAzREF4QVAvL0FCLy83QVE1QmdRQ0pnSUJBQUFCQmdDZ2VoNEFFd0N3QUVWWXNBOHZHN0VQSFQ1WnNCUGNNREVBLy84QUNRQUFCSlFFalFJR0Fib0FBUC8vQUhZQUFBUUtCSTBDQmdHN0FBRC8vd0IyQUFBRGx3U05BZ1lCNmdBQS8vOEFkZ0FBQTdVRWpRSUdBYjRBQVAvL0FIWUFBQVJ1QmdRQ0pnSCtBQUFCQndDZ0FMb0FIZ0FUQUxBQVJWaXdDQzhic1FnZFBsbXdEZHd3TVFELy93QjJBQUFGandTTkFnWUJ4Z0FBLy84QWRnQUFCR2dFalFJR0FjRUFBUC8vQUUvLzhBUnZCSjBDQmdISUFBRC8vd0IyQUFBRVlnU05BZ1lCN3dBQS8vOEFkZ0FBQkN3RWpRSUdBY2tBQVAvL0FFLy84QVJEQkowQ0JnRzhBQUQvL3dBa0FBQUVGZ1NOQWdZQnpRQUEvLzhBRlFBQUJFb0VqUUlHQWRFQUFBQUJBRUwrT1FQbkJKMEFLQUNrc2ljcEtoRVNPUUN3Rnkrd0FFVllzQW92RzdFS0hUNVpzQUJGV0xBWkx4dXhHUTgrV2JBS0VMSURBUW9yV0NIWUcvUlpzZ1lLR1JFU09iSW5HUW9SRWptd0p5K3lYeWNCY3JJL0p3RnhzczhuQVhHeS95Y0JjYklQSndGeXRHOG5meWNDY2JTdko3OG5BbDJ5anljQmNySy9Kd0Z5c2lRQkNpdFlJZGdiOUZteUVDUW5FUkk1c0JrUXNCYlFzaDBaQ2hFU09iQVpFTElmQVFvcldDSFlHL1JaTURFQk5DWWpJZ1lWSXpRMk16SVdGUlFHQnhZV0ZSUUdCeEVqRVNZbU5UTVdNekkyTlRRbkl6VXpOZ0xpY0d0Ylp2UHp3OWowYmwxdmJydXM4NXV3OHd2S2QzVGdsSnJIQTBOR1QwWThsTE9ubGx1S0p5U1JXNGF1R1A1QkFjSVlySWVUVjBpbUE3QUVBQUFCQUhiK21nVXNCSTBBRHdDb3NnTVFFUkVTT1FDd0FFVllzQXd2RzdFTUhUNVpzQUJGV0xBSkx4dXhDUjArV2JBQVJWaXdBUzhic1FFWFBsbXdBRVZZc0FZdkc3RUdEejVac0FCRldMQURMeHV4QXc4K1diSUtCZ2tSRWptd0NpKzByd3EvQ2dKZHNqOEtBWEd5endvQmNiSS9DZ0Z5c3Y4S0FYR3lEd29CY3JSdkNuOEtBbkcwM3dydkNnSmR0QjhLTHdvQ1hiSmZDZ0Z5c2dVQkNpdFlJZGdiOUZtd0F4Q3lEZ2NLSzFnaDJCdjBXVEF4QVNNUkl4RWhFU01STXhFaEVUTVJNd1VzODhUOTlQUHpBZ3p6eFA2YUFXWUIyLzRsQkkzK0VRSHYvQ2dBQVFCUC9rTUVRd1NkQUI0QVhySWJIeUFSRWprQXNBQkZXTEFPTHh1eERoMCtXYkFBUlZpd0JDOGJzUVFSUGxtd0FFVllzQU12RzdFRER6NVpzQWJRc2hJT0F4RVNPYkFPRUxJVkFRb3JXQ0hZRy9SWnNBTVFzaHNCQ2l0WUlkZ2I5Rm15SGdNT0VSSTVNREVCQmdZSEVTTVJKZ0luTlRRMk5qTXlCQmNqSmlZaklCRVZGQll6TWpZM0JFSU14cW56dGM4QmZ1eWMxZ0VFRlBNTWZYTCs3WWFIZUh3TkFZU2YwQnYrU1FHNUpBRWYzVStwLzRyYXduQnAvbzVJdWJWaWNQLy9BQVVBQUFRMkJJMENCZ0hTQUFELy93QUsvam9GcUFTakFpWUNGd0FBQUFjQnNBTG0vNkQvL3dCMkFBQUViZ1hTQWlZQi9nQUFBUWNBY0FDQ0FDSUFDUUN3QUMrd0N0d3dNUUQvL3dBZi8rd0VPUVhTQWlZQ0FRQUFBUVlBY0VJaUFBa0FzQUl2c0JEY01ERUEvLzhBVUFBQUJVMEVqUUlHQWZFQUFQLy9BQkwrVlFWQ0JiQUNKZ0FsQUFBQUJ3Q2pBWUlBQS8vL0FGcitXUVA3QkU0Q0pnQkZBQUFBQndDakFMVUFCLy8vQUpUK1hBUk1CYkFDSmdBcEFBQUFCd0NqQVVBQUN2Ly9BRlArVWdRTEJFNENKZ0JKQUFBQUJ3Q2pBUVFBQVAvL0FIaituZ0dMQkRvQ0pnQ01BQUFBQndDc0Exd0FDZ0FBQUE4QXVnQURBQUVFQ1FBQUFGNEFBQUFEQUFFRUNRQUJBQm9BWGdBREFBRUVDUUFDQUE0QWVBQURBQUVFQ1FBREFCb0FYZ0FEQUFFRUNRQUVBQm9BWGdBREFBRUVDUUFGQUN3QWhnQURBQUVFQ1FBR0FCb0FzZ0FEQUFFRUNRQUhBRUFBekFBREFBRUVDUUFKQUF3QkRBQURBQUVFQ1FBTEFCUUJHQUFEQUFFRUNRQU1BQ1lCTEFBREFBRUVDUUFOQUZ3QlVnQURBQUVFQ1FBT0FGUUJyZ0FEQUFFRUNRQVFBQXdDQWdBREFBRUVDUUFSQUF3Q0RnQkRBRzhBY0FCNUFISUFhUUJuQUdnQWRBQWdBRElBTUFBeEFERUFJQUJIQUc4QWJ3Qm5BR3dBWlFBZ0FFa0FiZ0JqQUM0QUlBQkJBR3dBYkFBZ0FGSUFhUUJuQUdnQWRBQnpBQ0FBVWdCbEFITUFaUUJ5QUhZQVpRQmtBQzRBVWdCdkFHSUFid0IwQUc4QUlBQk5BR1VBWkFCcEFIVUFiUUJTQUdVQVp3QjFBR3dBWVFCeUFGWUFaUUJ5QUhNQWFRQnZBRzRBSUFBeUFDNEFNQUF3QURFQU1RQTFBRElBT3dBZ0FESUFNQUF4QURRQVVnQnZBR0lBYndCMEFHOEFMUUJOQUdVQVpBQnBBSFVBYlFCU0FHOEFZZ0J2QUhRQWJ3QWdBR2tBY3dBZ0FHRUFJQUIwQUhJQVlRQmtBR1VBYlFCaEFISUFhd0FnQUc4QVpnQWdBRWNBYndCdkFHY0FiQUJsQUM0QVJ3QnZBRzhBWndCc0FHVUFSd0J2QUc4QVp3QnNBR1VBTGdCakFHOEFiUUJEQUdnQWNnQnBBSE1BZEFCcEFHRUFiZ0FnQUZJQWJ3QmlBR1VBY2dCMEFITUFid0J1QUV3QWFRQmpBR1VBYmdCekFHVUFaQUFnQUhVQWJnQmtBR1VBY2dBZ0FIUUFhQUJsQUNBQVFRQndBR0VBWXdCb0FHVUFJQUJNQUdrQVl3QmxBRzRBY3dCbEFDd0FJQUJXQUdVQWNnQnpBR2tBYndCdUFDQUFNZ0F1QURBQWFBQjBBSFFBY0FBNkFDOEFMd0IzQUhjQWR3QXVBR0VBY0FCaEFHTUFhQUJsQUM0QWJ3QnlBR2NBTHdCc0FHa0FZd0JsQUc0QWN3QmxBSE1BTHdCTUFFa0FRd0JGQUU0QVV3QkZBQzBBTWdBdUFEQUFVZ0J2QUdJQWJ3QjBBRzhBVFFCbEFHUUFhUUIxQUcwQUF3QUFBQUFBQVA5cUFHUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFJQUNBQUMvLzhBRHdBQkFBQUFDZ0JjQUt3QUJFUkdURlFBR21ONWNtd0FLR2R5WldzQU5teGhkRzRBUkFBRUFBQUFBUC8vQUFJQUFBQUVBQVFBQUFBQS8vOEFBZ0FCQUFVQUJBQUFBQUQvL3dBQ0FBSUFCZ0FFQUFBQUFQLy9BQUlBQXdBSEFBaGpjSE53QURKamNITndBRGhqY0hOd0FENWpjSE53QUVSclpYSnVBRXByWlhKdUFFcHJaWEp1QUVwclpYSnVBRW9BQUFBQkFBRUFBQUFCQUFNQUFBQUJBQUlBQUFBQkFBQUFBQUFCQUFRQUJRQU1BQXdBREFBTUFkNEFBUUFBQUFFQUNBQUJBQW9BQlFBa0FFZ0FBUURlQUFnQUpRQW1BQ2NBS0FBcEFDb0FLd0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU53QTRBRGtBT2dBN0FEd0FQUUErQUdVQVp3Q1NBTEFBc1FDeUFMTUF0QUMxQUxZQXR3QzRBTGtBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQkxBRXdBVElCT0FFNkFUd0JQZ0UvQVVVQlJnRi9BWVVCaWdHTkFrWUNSd0pKQWtzQ1RBSk5BazRDVHdKUUFsRUNVZ0pUQWxRQ1ZRSldBbGNDV0FKWkFsb0NXd0pjQWwwQ1hnSmZBbUFDWVFKaUFtTUNaQUpsQW9JQ2hBS0dBb2dDaWdLTUFvNENrQUtTQXBRQ2xnS1lBcG9DbkFLZUFxQUNvZ0trQXFZQ3FBS3FBcXdDcmdLeEFyTUN0UUszQXJrQ3V3SzlBcjhDd1FMRUFzWUN5QUxLQXN3Q3pnTFFBdElDMUFMWUF0b0MzQUxlQXVBQzRnTGtBdVlDNkFMcUF1d0M3Z0x3QXZFQzh3TDFBMUlEVXdOVUExVURWZ05YQTFnRFdnTmJBMXdEWFFOZUExOERZQU5oQTJNRFpBTmxBMllEWndOb0Eya0RlUU42QTNzRGZBTjlBMzREZndPQUE0RURnZ09EQTRRRGhRT0dBNGNEaUFPSkE0b0Rpd09NQTQwRGpnTzZBN3dEdmdQVEE5a0Qzd1JJQkVvRVRnUldCRmdFWFFScEFBSUFBQUFDQUFvN3VnQUJBMndBQkFBQUFiRUdzamFlTnA0RzNBY3lOMEEyVERiS080bzMyQWM0T3Q0NjNqZ2VPb3cxNmpyZU90NDdpalpXQ25JSzlEZytPQjQycERaNE9USTdBRFlxQzE0M3RqYmNOKzRMb0F6S0ROUTVsam1XTi9nMjNEWVlEY280SkE0c09aQTRKQTVHTnR3T2lEbktOMEE3aWpkQUR3SVAvQkQ2RWRnU2RqZ2tFbnc1bGhVNkZ4UVlKaGhBR0VZWVRCcEdHa3dhZ2hxMEd6SWNxQjVhSUJnNjNpRk9JdUE1TWlVdU90NDYzamIyT3Q0NjNpWDRKNUk1b0Nod0tUSXB3Q29lS3ZnNUtDdUNPWkFzVEN4MkxkdzIzREJpTUtBeDBqT1FOdHd5VkRMYU13UXpXak9RTjBBMytEYWtPQ1F6dGpiY09jbzVLRHFNT293NUtEYWVNK0EybmphZU5wNDFValY0TllJMWpEV3FOYncxempYZ05zbzdpanVLTzRvN2lqZytOMEEzUURkQU4wQTNRRGRBTjBBMnlqZllOOWczMkRmWU90NDYzanJlT3Q0NjNqdUtPNG83aWp1S080bzRIamdlT0I0NEhqc0FON1kzdGplMk43WTN0amUyTjdZMzdqZnVOKzQzN2ptV04vZzMrRGY0Ti9nMytEZ2tPQ1EzUURlMk4wQTN0amRBTjdZMnlqYktOc28yeWp1S045ZzM3amZZTis0MzJEZnVOOWczN2pmWU4rNDYzam1XT3Q0NjNqcmVPdDQ2M2pnZU9vdzE2alhxTmVvMTZqcmVPWlk2M2ptV090NDVsam1XTzRvMytEdUtOL2c3aWpmNE5oZzJHRFlZT0Q0NFBqZytPQjQ0SGpnZU9CNDRIamdlTm5nN0FEZ2tPd0EyS2pZcU5pbzNRRGZZT3Q0NjNqdUtPd0EzUURaTU45ZzJLanJlT3Q0NmpEcmVPdDQ3aWpaV09ENDdBRGt5T3Q0N0FEbVdOL2c0SkRmNE45ZzV5anJlT3Q0NEhqcU1Pb3cyOWpkQU5rdzV5amZZT3Q0NjNqdUtObFkyeWpnK09USTN0amZ1Ti9nMjNEZ2tPWkEzN2prb09DUTJlRFo0Tm5nN0FEZ2tOcDQybmphZU90NDVsamRBTjdZMzJEZnVOcVE0SkRiS093QTRKRHJlT1RJNWtEcmVOMEEzdGpkQU43WTMyRGZ1Tis0Mzdqa3lPWkE3aWpmNE4vZzIzRGIyT0NRMjlqZ2tOdlk0SkRreU9aQTNRRGUyTjBBM3RqZEFON1kzUURlMk4wQTN0amRBTjdZM1FEZTJOMEEzdGpkQU43WTNRRGUyTjBBM3RqZEFON1kzMkRmdU45ZzM3amZZTis0MzJEZnVOOWczN2pmWU4rNDMyRGZ1TjlnMzdqcmVPdDQ3aWpmNE80bzMrRHVLTi9nN2lqZjRPNG8zK0R1S04vZzdpamY0Ti9nNEhqZ2VPd0E0SkRzQU9DUTdBRGdrT293NjNqZytPVEk1a0RuS09TZzVNam1RT1pZNW9EbktPb3c2M2pyZU93QTdpZ0FDQUlzQUJBQUVBQUFBQmdBR0FBRUFDd0FNQUFJQUV3QVRBQVFBSlFBcUFBVUFMQUEyQUFzQU9BQS9BQllBUlFCR0FCNEFTUUJLQUNBQVRBQk1BQ0lBVHdCUEFDTUFVUUJVQUNRQVZnQldBQ2dBV0FCWUFDa0FXZ0JkQUNvQVh3QmZBQzRBaWdDS0FDOEFuQUNjQURBQXNBQzBBREVBdGdDNEFEWUF1Z0M2QURrQXZBQzhBRG9BdndEQUFEc0F3Z0RDQUQwQXhBREVBRDRBeGdETkFEOEEwUURSQUVjQTB3RGRBRWdBM3dEZkFGTUE0UURqQUZRQTVRRHVBRmNBOEFEd0FHRUE5UUQzQUdJQStnRDdBR1VBL1FEL0FHY0JBZ0VFQUdvQkNRRUpBRzBCREFFTUFHNEJGd0VaQUc4QklRRWhBSElCS3dFdEFITUJNQUV3QUhZQk1nRXlBSGNCU1FGSkFIZ0JiQUZ0QUhrQmJ3RnhBSHNCdWdHNkFINEJ2UUc5QUg4QnhBSEZBSUFCeUFISUFJSUJ5Z0hMQUlNQnpRSE5BSVVDS0FJb0FJWUNLZ0lyQUljQ1JnSkhBSWtDU1FKSkFJc0NTd0pzQUl3Q2JnSnhBSzRDZGdKN0FMSUNnQUtJQUxnQ2lnS0tBTUVDakFLTUFNSUNqZ0tPQU1NQ2tBS1FBTVFDa2dLYkFNVUNwQUttQU04Q3FBS29BTklDcWdLcUFOTUNyQUtzQU5RQ3JnS3VBTlVDc1FLeEFOWUNzd0t6QU5jQ3RRSzFBTmdDdHdLM0FOa0N1UUs1QU5vQ3V3SzdBTnNDdlFMSkFOd0N5d0xMQU9rQ3pRTE5BT29DendMUEFPc0MyZ0xhQU93QzNBTGNBTzBDM2dMZUFPNEM0QUxnQU84QzRnTGlBUEFDNUFMa0FQRUM1Z0xtQVBJQzZBTG9BUE1DNmdMcUFQUUM3QUxzQVBVQzdnTHhBUFlDOHdMekFQb0M5UUwxQVBzRFVnTlhBUHdEV2dOcEFRSURiQU5zQVJJRGNBTndBUk1EY2dOeUFSUURkZ04yQVJVRGVRTjZBUllEZkFPRkFSZ0Rod09KQVNJRGl3T1FBU1VEa2dPVEFTc0RsUU9ZQVMwRG5nT2ZBVEVEb1FPaEFUTURvd09qQVRRRHBRT29BVFVEcXdPd0FUa0RzZ095QVQ4RHRnTzNBVUFEdkFPOEFVSUR2Z1BIQVVNRHlnUExBVTBEelFQUUFVOEQxd1BZQVZNRDNBUGNBVlVEM2dQa0FWWUQ2UVBxQVYwRDdnUVdBVjhFR0FRWUFZZ0VHZ1FuQVlrRUx3UXZBWmNFTWdReUFaZ0VOQVEwQVprRVFBUkZBWm9FU0FSSUFhQUVTZ1JLQWFFRVRBUk1BYUlFVGdSUEFhTUVWQVJYQWFVRVdnUmFBYWtFWEFSZEFhb0VYd1JmQWF3RVl3UmpBYTBFWlFSbEFhNEVhUVJwQWE4RXFRU3BBYkFBQ2dBNC84UUEwZi9FQU5YL3hBRXkvOFFCT3YvRUF0ci94QUxjLzhRQzN2L0VBNDMveEFSTS84UUFGUUE2QUJRQU93QW1BRDBBRmdFWUFCUUNaUUFXQXV3QUpnTHVBQllDOEFBV0ExY0FGZ05tQUJZRGFRQVdBNThBSmdPaEFDWURvd0FtQTZVQUZnTzJBQlFEdmdBV0JFQUFGZ1JDQUJZRVJBQVdCR2tBRmdBQkFCUC9DQURPQUJEKzdnQVMvdTRBSmY5QUFDNy9NQUE0QUJRQVJmL2VBRWYvNndCSS8rc0FTZi9yQUV2LzZ3QlQvK3NBVmYvckFGYi81Z0JaLytvQVd2L29BRjMvNkFDVC8rc0FtUC9yQUpyLzZnQ3gvMEFBcy85QUFMci82d0M4LytnQXgvL3JBTWovNndESy8rb0EwUUFVQU5VQUZBRDIvK3NCQXYvckFRei9RQUVYLytzQkdmL29BUjMvNndFaC8rc0JNZ0FVQVRuLzZ3RTZBQlFCUy8vckFVei82d0ZXLytzQmJ2N3VBWEwrN2dGMi91NEJkLzd1QWJyL3dBSkwvMEFDVFA5QUFrMy9RQUpPLzBBQ1QvOUFBbEQvUUFKUi8wQUNadi9lQW1mLzNnSm8vOTRDYWYvZUFtci8zZ0pyLzk0Q2JQL2VBbTMvNndKdS8rc0NiLy9yQW5ELzZ3SngvK3NDZC8vckFuai82d0o1LytzQ2V2L3JBbnYvNndKOC8rb0NmZi9xQW43LzZnSi8vK29DZ1Avb0FvSC82QUtDLzBBQ2cvL2VBb1QvUUFLRi85NENodjlBQW9mLzNnS0ovK3NDaS8vckFvMy82d0tQLytzQ2tmL3JBcFAvNndLVi8rc0NsLy9yQXBuLzZ3S2IvK3NDbmYvckFwLy82d0toLytzQ28vL3JBckgvTUFMRi8rc0N4Ly9yQXNuLzZ3TGFBQlFDM0FBVUF0NEFGQUxoLytvQzQvL3FBdVgvNmdMbi8rb0M2Zi9xQXV2LzZnTHYvK2dEVXY5QUExci9RQU5xLytzRGJ2L3FBM0QvNndOeS8rZ0RkZi9xQTNiLzZ3TjMvK29EZnY4d0E0TC9RQU9OQUJRRGovL2VBNUQvNndPUy8rc0RsUC9yQTVYLzZBT1gvK3NEbnYvb0E2Yi82QU91LzBBRHIvL2VBN0wvNndPMy8rZ0R1UC9yQTczLzZ3Ty8vK2dEeFA5QUE4WC8zZ1BHLzBBRHgvL2VBOHYvNndQTi8rc0R6di9yQTlqLzZ3UGEvK3NEM1AvckErRC82QVBpLytnRDVQL29BK3YvNndQdS8wQUQ3Ly9lQS9EL1FBUHgvOTREOHY5QUEvUC8zZ1AwLzBBRDlmL2VBL2IvUUFQMy85NEQrUDlBQS9uLzNnUDYvMEFEKy8vZUEvei9RQVA5Lzk0RC92OUFBLy8vM2dRQS8wQUVBZi9lQkFML1FBUUQvOTRFQlA5QUJBWC8zZ1FILytzRUNmL3JCQXYvNndRTi8rc0VELy9yQkJILzZ3UVQvK3NFRmYvckJCdi82d1FkLytzRUgvL3JCQ0gvNndRai8rc0VKZi9yQkNmLzZ3UXAvK3NFSy8vckJDMy82d1F2LytzRU1mL3JCRFAvNmdRMS8rb0VOLy9xQkRuLzZnUTcvK29FUGYvcUJELy82Z1JCLytnRVEvL29CRVgvNkFSTUFCUUFJQUE0Lzk4QU92L2tBRHYvN0FBOS85MEEwZi9mQU5YLzN3RVkvK1FCTXYvZkFUci8zd0c2QUE0Q1pmL2RBdHIvM3dMYy85OEMzdi9mQXV6LzdBTHUvOTBDOFAvZEExZi8zUU5tLzkwRGFmL2RBNDMvM3dPZi8rd0RvZi9zQTZQLzdBT2wvOTBEdHYva0E3Ny8zUVJBLzkwRVF2L2RCRVQvM1FSTS85OEVhZi9kQUJvQU9QL09BRHIvN1FBOS85QUEwZi9PQU5YL3pnRVkvKzBCTXYvT0FUci96Z0psLzlBQzJ2L09BdHovemdMZS84NEM3di9RQXZELzBBTlgvOUFEWnYvUUEybi8wQU9OLzg0RHBmL1FBN2IvN1FPKy85QUVRUC9RQkVMLzBBUkUvOUFFVFAvT0JHbi8wQUFRQUM3LzdnQTUvKzRDWWYvdUFtTC83Z0pqLys0Q1pQL3VBckgvN2dMZy8rNEM0di91QXVULzdnTG0vKzRDNlAvdUF1ci83Z04rLys0RU12L3VCRFQvN2dCS0FBWUFFQUFMQUJBQURRQVVBRUVBRWdCSC8rZ0FTUC9vQUVuLzZBQkwvK2dBVmYvb0FHRUFFd0NULytnQW1QL29BTHIvNkFESC8rZ0F5UC9vQVBiLzZBRUMvK2dCSGYvb0FTSC82QUU1LytnQlMvL29BVXovNkFGVy8rZ0JiQUFRQVcwQUVBRnZBQkFCY0FBUUFYRUFFQUp0LytnQ2J2L29BbS8vNkFKdy8rZ0NjZi9vQW9uLzZBS0wvK2dDamYvb0FvLy82QUtSLytnQ2svL29BcFgvNkFLWC8rZ0NtZi9vQXB2LzZBS2QvK2dDbi8vb0FxSC82QUtqLytnRGF2L29BNUQvNkFPVS8rZ0RsLy9vQTZjQUVBT29BQkFEcXdBUUE3TC82QU80LytnRHZmL29BOHYvNkFQTi8rZ0R6di9vQTlyLzZBUHIvK2dFQi8vb0JBbi82QVFMLytnRURmL29CQS8vNkFRUi8rZ0VFLy9vQkJYLzZBUXAvK2dFSy8vb0JDMy82QVF4LytnQUFnRDEvOVlCYmYrWUFEMEFSLy9zQUVqLzdBQkovK3dBUy8vc0FGWC83QUNULyt3QW1QL3NBTHIvN0FESC8rd0F5UC9zQVBiLzdBRUMvK3dCSGYvc0FTSC83QUU1Lyt3QlMvL3NBVXovN0FGVy8rd0NiZi9zQW03LzdBSnYvK3dDY1Avc0FuSC83QUtKLyt3Q2kvL3NBbzMvN0FLUC8rd0NrZi9zQXBQLzdBS1YvK3dDbC8vc0Fwbi83QUtiLyt3Q25mL3NBcC8vN0FLaC8rd0NvLy9zQTJyLzdBT1EvK3dEbFAvc0E1Zi83QU95Lyt3RHVQL3NBNzMvN0FQTC8rd0R6Zi9zQTg3LzdBUGEvK3dENi8vc0JBZi83QVFKLyt3RUMvL3NCQTMvN0FRUC8rd0VFZi9zQkJQLzdBUVYvK3dFS2Yvc0JDdi83QVF0Lyt3RU1mL3NBQmdBVS8vaUFSZi80Z0Z0QUJnQ2QvL2lBbmovNGdKNS8rSUNldi9pQW52LzRnTEYvK0lDeC8vaUFzbi80Z053LytJRGR2L2lBNUwvNGdQWS8rSUQzUC9pQkJ2LzRnUWQvK0lFSC8vaUJDSC80Z1FqLytJRUpmL2lCQ2YvNGdRdi8rSUFCZ0FRLzRRQUV2K0VBVzcvaEFGeS80UUJkditFQVhmL2hBQVFBQzcvN0FBNS8rd0NZZi9zQW1MLzdBSmovK3dDWlAvc0FySC83QUxnLyt3QzR2L3NBdVQvN0FMbS8rd0M2UC9zQXVyLzdBTisvK3dFTXYvc0JEVC83QUFlQUFiLzhnQUwvL0lBV3YvekFGMy84d0M4Ly9NQTlmLzFBUm4vOHdGcy8vSUJiZi95QVcvLzhnRncvL0lCY2YveUFvRC84d0tCLy9NQzcvL3pBM0wvOHdPVi8vTURudi96QTZiLzh3T24vL0lEcVAveUE2di84Z08zLy9NRHYvL3pBK0QvOHdQaS8vTUQ1UC96QkVILzh3UkQvL01FUmYvekFENEFKLy96QUN2Lzh3QXovL01BTmYvekFJUC84d0NTLy9NQWwvL3pBTEwvOHdEREFBMEEwdi96QVFmLzh3RVcvL01CR3YvekFSei84d0VlLy9NQklQL3pBVGovOHdGVi8vTUNLUC96QWluLzh3SXIvL01DTFAvekFsTC84d0pjLy9NQ1hmL3pBbDcvOHdKZi8vTUNZUC96QW9qLzh3S0svL01DalAvekFvNy84d0tjLy9NQ252L3pBcUQvOHdLaS8vTUN4UC96QXNiLzh3TEkvL01DK2YvekExYi84d05qLy9NRGlmL3pBNHovOHdPNS8vTUR2UC96QTlmLzh3UFovL01EMi8vekJCci84d1FjLy9NRUh2L3pCQ0QvOHdRaS8vTUVKUC96QkNiLzh3UW8vL01FS3YvekJDei84d1F1Ly9NRU1QL3pCS24vOHdBL0FDZi81Z0FyLytZQU0vL21BRFgvNWdDRC8rWUFrdi9tQUpmLzVnQ3kvK1lBdC8vQ0FNTUFFQURTLytZQkIvL21BUmIvNWdFYS8rWUJIUC9tQVI3LzVnRWcvK1lCT1AvbUFWWC81Z0lvLytZQ0tmL21BaXYvNWdJcy8rWUNVdi9tQWx6LzVnSmQvK1lDWHYvbUFsLy81Z0pnLytZQ2lQL21Bb3IvNWdLTS8rWUNqdi9tQXB6LzVnS2UvK1lDb1AvbUFxTC81Z0xFLytZQ3h2L21Bc2ovNWdMNS8rWURWdi9tQTJQLzVnT0ovK1lEalAvbUE3bi81Z084LytZRDEvL21BOW4vNWdQYi8rWUVHdi9tQkJ6LzVnUWUvK1lFSVAvbUJDTC81Z1FrLytZRUp2L21CQ2ovNWdRcS8rWUVMUC9tQkM3LzVnUXcvK1lFcWYvbUFEY0FKZi9rQUR6LzBnQTkvOU1Bc2Yva0FMUC81QURELytJQTJmL1NBUXovNUFKTC8rUUNUUC9rQWszLzVBSk8vK1FDVC8va0FsRC81QUpSLytRQ1pmL1RBb0wvNUFLRS8rUUNodi9rQXU3LzB3THcvOU1EVXYva0ExZi8wd05hLytRRFp2L1RBMmYvMGdOcC85TURndi9rQTQ3LzBnT2wvOU1EcnYva0E3Ny8wd1BCLzlJRHhQL2tBOGIvNUFQUC85SUQ2Zi9TQSs3LzVBUHcvK1FEOHYva0EvVC81QVAyLytRRCtQL2tBL3IvNUFQOC8rUUQvdi9rQkFELzVBUUMvK1FFQlAva0JFRC8wd1JDLzlNRVJQL1RCRTcvMGdSVy85SUVhZi9UQUNjQUVQOUdBQkwvUmdBbC84MEFzZi9OQUxQL3pRREcvL0lCRFAvTkFXNy9SZ0Z5LzBZQmR2OUdBWGYvUmdKTC84MENUUC9OQWszL3pRSk8vODBDVC8vTkFsRC96UUpSLzgwQ2d2L05Bb1QvelFLRy84MERVdi9OQTFyL3pRT0MvODBEcnYvTkE4VC96UVBHLzgwRDd2L05BL0QvelFQeS84MEQ5UC9OQS9iL3pRUDQvODBEK3YvTkEvei96UVArLzgwRUFQL05CQUwvelFRRS84MEFBUUREQUE0QXJ3QkgvOXdBU1AvY0FFbi8zQUJMLzl3QVVmL0JBRkwvd1FCVC85WUFWUC9CQUZYLzNBQlovOTBBV3YvaEFGMy80UUNULzl3QW1QL2NBSnIvM1FDNi85d0F2UC9oQUw3LzVnREEvOEVBd2YvckFNTC82UURFLy9BQXhmL25BTWYvM0FESS85d0F5Zi9qQU1yLzNRREwvODRBelAvVUFNMy8yd0RyLzhFQTcvL0JBUEQvd1FEeS84RUE4Ly9CQVBUL3dRRDIvOXdBOS8vQkFQbi93UUQ2LzhFQS9mL0JBUC8vd1FFQy85d0JCUC9CQVJmLzFnRVovK0VCSGYvY0FTSC8zQUUxLzhFQk9mL2NBVVQvd1FGSi84RUJTLy9jQVV6LzNBRlcvOXdDYmYvY0FtNy8zQUp2Lzl3Q2NQL2NBbkgvM0FKMi84RUNkLy9XQW5qLzFnSjUvOVlDZXYvV0Fudi8xZ0o4LzkwQ2ZmL2RBbjcvM1FKLy85MENnUC9oQW9ILzRRS0ovOXdDaS8vY0FvMy8zQUtQLzl3Q2tmL2NBcFAvM0FLVi85d0NsLy9jQXBuLzNBS2IvOXdDbmYvY0FwLy8zQUtoLzl3Q28vL2NBcjcvd1FMQS84RUN3di9CQXNQL3dRTEYvOVlDeC8vV0Fzbi8xZ0xoLzkwQzQvL2RBdVgvM1FMbi85MEM2Zi9kQXV2LzNRTHYvK0VEYXYvY0Eyei93UU51LzkwRGNQL1dBM0wvNFFOMS85MERkdi9XQTNmLzNRT1EvOXdEa2YvQkE1TC8xZ09ULzhFRGxQL2NBNVgvNFFPWC85d0RtUC9CQTUzL3dRT2UvK0VEcHYvaEE2My93UU95Lzl3RHMvL0JBN2YvNFFPNC85d0R2Zi9jQTcvLzRRUEwvOXdEemYvY0E4Ny8zQVBVLzhFRDF2L0JBOWovMWdQYS85d0QzUC9XQStELzRRUGkvK0VENVAvaEErai93UVByLzl3RUIvL2NCQW4vM0FRTC85d0VEZi9jQkEvLzNBUVIvOXdFRS8vY0JCWC8zQVFiLzlZRUhmL1dCQi8vMWdRaC85WUVJLy9XQkNYLzFnUW4vOVlFS2YvY0JDdi8zQVF0Lzl3RUwvL1dCREgvM0FRei85MEVOZi9kQkRmLzNRUTUvOTBFTy8vZEJEMy8zUVEvLzkwRVFmL2hCRVAvNFFSRi8rRUVTZi9CQkV2L3dRUlYvOEVFWXYvQkJHVC93UVJtLzhFQWRnQUcvOW9BQy8vYUFFZi84QUJJLy9BQVNmL3dBRXYvOEFCVi8vQUFXZi92QUZyLzNBQmQvOXdBay8vd0FKai84QUNhLys4QXV2L3dBTHovM0FEQi8rd0F3d0FQQU1YLzZnREgvL0FBeVAvd0FNbi96Z0RLLys4QXkvL25BUGIvOEFFQy8vQUJHZi9jQVIzLzhBRWgvL0FCT2Yvd0FVdi84QUZNLy9BQlZ2L3dBV3ovMmdGdC85b0JiLy9hQVhELzJnRngvOW9DYmYvd0FtNy84QUp2Ly9BQ2NQL3dBbkgvOEFKOC8rOENmZi92QW43Lzd3Si8vKzhDZ1AvY0FvSC8zQUtKLy9BQ2kvL3dBbzMvOEFLUC8vQUNrZi93QXBQLzhBS1YvL0FDbC8vd0Fwbi84QUtiLy9BQ25mL3dBcC8vOEFLaC8vQUNvLy93QXVILzd3TGovKzhDNWYvdkF1Zi83d0xwLys4QzYvL3ZBdS8vM0FOcS8vQURidi92QTNMLzNBTjEvKzhEZC8vdkE1RC84QU9VLy9BRGxmL2NBNWYvOEFPZS85d0Rwdi9jQTZmLzJnT28vOW9EcS8vYUE3TC84QU8zLzl3RHVQL3dBNzMvOEFPLy85d0R5Ly93QTgzLzhBUE8vL0FEMnYvd0ErRC8zQVBpLzl3RDVQL2NBK3YvOEFRSC8vQUVDZi93QkF2LzhBUU4vL0FFRC8vd0JCSC84QVFULy9BRUZmL3dCQ24vOEFRci8vQUVMZi93QkRILzhBUXovKzhFTmYvdkJEZi83d1E1Lys4RU8vL3ZCRDMvN3dRLy8rOEVRZi9jQkVQLzNBUkYvOXdBUkFBUUFBd0FFZ0FNQUVmLzV3QkkvK2NBU2YvbkFFdi81d0JWLytjQWsvL25BSmovNXdDNi8rY0F3d0FQQU1mLzV3REkvK2NBOXYvbkFRTC81d0VkLytjQklmL25BVG4vNXdGTC8rY0JUUC9uQVZiLzV3RnVBQXdCY2dBTUFYWUFEQUYzQUF3Q2JmL25BbTcvNXdKdi8rY0NjUC9uQW5ILzV3S0ovK2NDaS8vbkFvMy81d0tQLytjQ2tmL25BcFAvNXdLVi8rY0NsLy9uQXBuLzV3S2IvK2NDbmYvbkFwLy81d0toLytjQ28vL25BMnIvNXdPUS8rY0RsUC9uQTVmLzV3T3kvK2NEdVAvbkE3My81d1BMLytjRHpmL25BODcvNXdQYS8rY0Q2Ly9uQkFmLzV3UUovK2NFQy8vbkJBMy81d1FQLytjRUVmL25CQlAvNXdRVi8rY0VLZi9uQkN2LzV3UXQvK2NFTWYvbkFBWUF5Zi9xQU96LzdnRDEvOVVBL2YvdEFUUC83QUZZLyt3QUFRRDEvOEFBQVFESkFDQUFmZ0FHQUF3QUN3QU1BRWYvNkFCSS8rZ0FTZi9vQUVvQURBQkwvK2dBVS8vcUFGWC82QUJhQUFzQVhRQUxBSlAvNkFDWS8rZ0F1di9vQUx3QUN3REQvNUFBeFFBTEFNZi82QURJLytnQXlRQU1BUGIvNkFFQy8rZ0JGLy9xQVJrQUN3RWQvK2dCSWYvb0FUbi82QUZMLytnQlRQL29BVmIvNkFGc0FBd0JiUUFNQVc4QURBRndBQXdCY1FBTUFici92d0c4Lys0QndQL3NBY2ovN1FISy8rd0J6UC8xQWMwQURnSFBBQTBCMGdBTkFtMy82QUp1LytnQ2IvL29BbkQvNkFKeC8rZ0NkLy9xQW5qLzZnSjUvK29DZXYvcUFudi82Z0tBQUFzQ2dRQUxBb24vNkFLTC8rZ0NqZi9vQW8vLzZBS1IvK2dDay8vb0FwWC82QUtYLytnQ21mL29BcHYvNkFLZC8rZ0NuLy9vQXFILzZBS2ovK2dDeGYvcUFzZi82Z0xKLytvQzd3QUxBMnIvNkFOdy8rb0RjZ0FMQTNiLzZnT1EvK2dEa3YvcUE1VC82QU9WQUFzRGwvL29BNTRBQ3dPbUFBc0Rwd0FNQTZnQURBT3JBQXdEc3Yvb0E3Y0FDd080LytnRHZmL29BNzhBQ3dQTC8rZ0R6Zi9vQTg3LzZBUFkvK29EMnYvb0E5ei82Z1BnQUFzRDRnQUxBK1FBQ3dQci8rZ0VCLy9vQkFuLzZBUUwvK2dFRGYvb0JBLy82QVFSLytnRUUvL29CQlgvNkFRYi8rb0VIZi9xQkIvLzZnUWgvK29FSS8vcUJDWC82Z1FuLytvRUtmL29CQ3YvNkFRdC8rZ0VMLy9xQkRILzZBUkJBQXNFUXdBTEJFVUFDd0FCQVBYLzRnQU5BRnovN1FCZS8rMEE3Zi90QVBYL3dBTHkvKzBDOVAvdEF2Yi83UU9XLyswRHd2L3RBOUQvN1FQcS8rMEVULy90QkZmLzdRQU1BRnovOGdCZS8vSUE3Zi95QXZMLzhnTDAvL0lDOXYveUE1Yi84Z1BDLy9JRDBQL3lBK3IvOGdSUC8vSUVWLy95QUI4QVd2LzBBRnovOGdCZC8vUUFYdi96QUx6LzlBRHQvL0lCR2YvMEFvRC85QUtCLy9RQzcvLzBBdkwvOHdMMC8vTUM5di96QTNMLzlBT1YvL1FEbHYveUE1Ny85QU9tLy9RRHQvLzBBNy8vOUFQQy8vSUQwUC95QStELzlBUGkvL1FENVAvMEErci84Z1JCLy9RRVEvLzBCRVgvOUFSUC8vSUVWLy95QUYwQUJ2L0tBQXYveWdBNC85SUFPdi9VQUR6LzlBQTkvOU1BV3YvbUFGei83d0JkLytZQXZQL21BTkgvMGdEVi85SUEyZi8wQU4zLzdRRGcvK0VBNWYvVUFPMy83d0QxLzhrQS9mL1JBUWovNVFFWS85UUJHZi9tQVIvLzR3RXkvOUlCTS8vRUFUci8wZ0U4LytFQlRmL1VBVTcvOVFGUC8rY0JWLzlrQVZqL3lRRnMvOG9CYmYvS0FXLy95Z0Z3LzhvQmNmL0tBbVgvMHdLQS8rWUNnZi9tQXRyLzBnTGMvOUlDM3YvU0F1Ny8wd0x2LytZQzhQL1RBMWYvMHdObS85TURaLy8wQTJuLzB3TnkvK1lEZ2YvdEE0My8wZ09PLy9RRGxmL21BNWIvN3dPZS8rWURwZi9UQTZiLzVnT24vOG9EcVAvS0E2di95Z08yLzlRRHQvL21BNzcvMHdPLy8rWUR3Zi8wQThMLzd3UFAvL1FEMFAvdkE5Ly83UVBnLytZRDRmL3RBK0wvNWdQai8rMEQ1UC9tQStYLzRRUHAvL1FENnYvdkJFRC8wd1JCLytZRVF2L1RCRVAvNWdSRS85TUVSZi9tQkV6LzBnUk8vL1FFVC8vdkJGRC80UVJTLytFRVZ2LzBCRmYvN3dScC85TUFiQUFHLzhBQUMvL0FBRGovblFBNi84Y0FQUC93QUQzL3F3QlIvOUlBVXYvU0FGVC8wZ0RBLzlJQTBmK2RBTlAvOVFEVi81MEEyZi93QU56LzlRRGQvK29BNFAvbEFPWC93UURyLzlJQTcvL1NBUEQvMGdEeS85SUE4Ly9TQVBULzBnRDEvODBBOS8vU0FQbi8wZ0Q2LzlJQS9mL1NBUC8vMGdFRS85SUJHUC9IQVRML25RRXovOHdCTmYvU0FUci9uUUU4LytVQlAvL2ZBVVQvMGdGSi85SUJUZi9PQVUvLzZnRlIvL1VCVi8rZUFWai96Z0ZzLzhBQmJmL0FBVy8vd0FGdy84QUJjZi9BQW1YL3F3SjIvOUlDdnYvU0FzRC8wZ0xDLzlJQ3cvL1NBdHIvblFMYy81MEMzditkQXU3L3F3THcvNnNEVi8rckEyYi9xd05uLy9BRGFmK3JBMnovMGdPQi8rb0RqZitkQTQ3LzhBT1IvOUlEay8vU0E1ai8wZ09kLzlJRHBmK3JBNmYvd0FPby84QURxLy9BQTYzLzBnT3ovOUlEdHYvSEE3Ny9xd1BCLy9BRHovL3dBOVQvMGdQVy85SUQzLy9xQStILzZnUGovK29ENWYvbEErai8wZ1BwLy9BRDdQLzFCRUQvcXdSQy82c0VSUCtyQkVuLzBnUkwvOUlFVFArZEJFNy84QVJRLytVRVV2L2xCRlgvMGdSVy8vQUVZdi9TQkdULzBnUm0vOUlFWi8vMUJHbi9xd0J2QUFiL3NRQUwvN0VBT1ArZUFEci94UUE4Ly9JQVBmK29BRkgvendCUy84OEFWUC9QQUZ6Lzd3REEvODhBMGYrZUFOWC9uZ0RaLy9JQTNmL3NBT0QvNFFEbC84SUE2Ly9QQU8zLzd3RHYvODhBOFAvUEFQTC96d0R6Lzg4QTlQL1BBUFgveGdEMy84OEErZi9QQVByL3p3RDkvODhBLy8vUEFRVC96d0VZLzhVQk12K2VBVFAvd0FFMS84OEJPditlQVR6LzRRRS8vOThCUlAvUEFVbi96d0ZOLzgwQlQvL29BVmYvbndGWS84WUJiUCt4QVczL3NRRnYvN0VCY1AreEFYSC9zUUpsLzZnQ2R2L1BBcjcvendMQS84OEN3di9QQXNQL3p3TGEvNTRDM1ArZUF0Ny9uZ0x1LzZnQzhQK29BMWYvcUFObS82Z0RaLy95QTJuL3FBTnMvODhEZ2Yvc0E0My9uZ09PLy9JRGtmL1BBNVAvendPVy8rOERtUC9QQTUzL3p3T2wvNmdEcC8reEE2ai9zUU9yLzdFRHJmL1BBN1AvendPMi84VUR2ditvQThILzhnUEMvKzhEei8veUE5RC83d1BVLzg4RDF2L1BBOS8vN0FQaC8rd0Q0Ly9zQStYLzRRUG8vODhENmYveUErci83d1JBLzZnRVF2K29CRVQvcUFSSi84OEVTLy9QQkV6L25nUk8vL0lFVC8vdkJGRC80UVJTLytFRVZmL1BCRmIvOGdSWC8rOEVZdi9QQkdUL3p3Um0vODhFYWYrb0FFMEFPUCsrQUZILzRRQlMvK0VBVlAvaEFGci83d0JkLys4QXZQL3ZBTUQvNFFEUi83NEExZisrQU9YL3lRRHIvK0VBNy8vaEFQRC80UUR5LytFQTgvL2hBUFQvNFFEMS85OEE5Ly9oQVBuLzRRRDYvK0VBL2YvaEFQLy80UUVFLytFQkNQL3RBUm4vN3dFZi8rc0JNdisrQVRQLzN3RTEvK0VCT3YrK0FULy82UUZFLytFQlNmL2hBVTcvOVFGWS8rQUNkdi9oQW9ELzd3S0IvKzhDdnYvaEFzRC80UUxDLytFQ3cvL2hBdHIvdmdMYy83NEMzdisrQXUvLzd3TnMvK0VEY3YvdkE0My92Z09SLytFRGsvL2hBNVgvN3dPWS8rRURuZi9oQTU3Lzd3T20vKzhEcmYvaEE3UC80UU8zLys4RHYvL3ZBOVQvNFFQVy8rRUQ0UC92QStMLzd3UGsvKzhENlAvaEJFSC83d1JELys4RVJmL3ZCRW4vNFFSTC8rRUVUUCsrQkZYLzRRUmkvK0VFWlAvaEJHYi80UUJrQURqLzVnQTYvK2NBUFAveUFEMy81d0JSLzlZQVV2L1dBRlQvMWdCYy8vRUF3UC9XQU5ILzVnRFYvK1lBMmYveUFOMy83Z0RnLytnQTVmL21BT3YvMWdEdC8vRUE3Ly9XQVBELzFnRHkvOVlBOC8vV0FQVC8xZ0QxLzlBQTkvL1dBUG4vMWdENi85WUEvZi9XQVAvLzFnRUUvOVlCR1AvbkFUTC81Z0V6Lzg0Qk5mL1dBVHIvNWdFOC8rZ0JSUC9XQVVuLzFnRk4vK2NCVC8vdEFWZi81Z0ZZLzlBQ1pmL25BbmIvMWdLKy85WUN3UC9XQXNMLzFnTEQvOVlDMnYvbUF0ei81Z0xlLytZQzd2L25BdkQvNXdOWC8rY0Radi9uQTJmLzhnTnAvK2NEYlAvV0E0SC83Z09OLytZRGp2L3lBNUgvMWdPVC85WURsdi94QTVqLzFnT2QvOVlEcGYvbkE2My8xZ096LzlZRHR2L25BNzcvNXdQQi8vSUR3di94QTgvLzhnUFEvL0VEMVAvV0E5Yi8xZ1BmLys0RDRmL3VBK1AvN2dQbC8rZ0Q2UC9XQStuLzhnUHEvL0VFUVAvbkJFTC81d1JFLytjRVNmL1dCRXYvMWdSTS8rWUVUdi95QkUvLzhRUlEvK2dFVXYvb0JGWC8xZ1JXLy9JRVYvL3hCR0wvMWdSay85WUVadi9XQkduLzV3Q1RBQ1VBRUFBbi8rZ0FLLy9vQURQLzZBQTEvK2dBT1AvZ0FEci80QUE5Lzk4QWcvL29BSkwvNkFDWC8rZ0FzUUFRQUxMLzZBQ3pBQkFBMGYvZ0FOTC82QURUQUJBQTFmL2dBTmdBRkFEY0FCQUE0UC9oQU9YLzRBRHNBQk1BOFFBUUFQai80QUVEQUJBQkIvL29BUXdBRUFFVy8rZ0JHUC9nQVJyLzZBRWMvK2dCSHYvb0FTRC82QUV5LytBQk9QL29BVHIvNEFFOC8rRUJQZi9nQVVELzRRRkYvK2tCVGYvZkFVLy8zZ0ZSQUJBQlZmL29BVmYvM3dGWi8vSUNLUC9vQWluLzZBSXIvK2dDTFAvb0Frc0FFQUpNQUJBQ1RRQVFBazRBRUFKUEFCQUNVQUFRQWxFQUVBSlMvK2dDWFAvb0FsMy82QUplLytnQ1gvL29BbUQvNkFKbC85OENnZ0FRQW9RQUVBS0dBQkFDaVAvb0Fvci82QUtNLytnQ2p2L29BcHovNkFLZS8rZ0NvUC9vQXFMLzZBTEUvK2dDeHYvb0Fzai82QUxhLytBQzNQL2dBdDcvNEFMdS85OEM4UC9mQXZuLzZBTlNBQkFEVnYvb0ExZi8zd05hQUJBRFkvL29BMmIvM3dOcC85OERnZ0FRQTRuLzZBT00vK2dEamYvZ0E2WC8zd091QUJBRHR2L2dBN24vNkFPOC8rZ0R2di9mQThRQUVBUEdBQkFEMS8vb0E5bi82QVBiLytnRDVmL2hBK2IvNEFQc0FCQUQ3UUFRQSs0QUVBUHdBQkFEOGdBUUEvUUFFQVAyQUJBRCtBQVFBL29BRUFQOEFCQUQvZ0FRQkFBQUVBUUNBQkFFQkFBUUJCci82QVFjLytnRUh2L29CQ0QvNkFRaS8rZ0VKUC9vQkNiLzZBUW8vK2dFS3Yvb0JDei82QVF1LytnRU1QL29CRUQvM3dSQy85OEVSUC9mQkV6LzRBUlEvK0VFVWYvZ0JGTC80UVJULytBRVp3QVFCR2dBRUFScC85OEVxZi9vQURJQUcvL3lBRGovOFFBNi8vUUFQUC8wQUQzLzhBRFIvL0VBMC8vMUFOWC84UURaLy9RQTNQLzFBTjMvOHdEbC8vRUJHUC8wQVRMLzhRRTYvL0VCVGYveUFVLy84Z0ZSLy9VQlYvL3lBbVgvOEFMYS8vRUMzUC94QXQ3LzhRTHUvL0FDOFAvd0ExZi84QU5tLy9BRFovLzBBMm4vOEFPQi8vTURqZi94QTQ3LzlBT2wvL0FEdHYvMEE3Ny84QVBCLy9RRHovLzBBOS8vOHdQaC8vTUQ0Ly96QStuLzlBUHMvL1VFUVAvd0JFTC84QVJFLy9BRVRQL3hCRTcvOUFSVy8vUUVaLy8xQkduLzhBQm1BQ1VBRHdBNC8rWUFPdi9tQUR3QURnQTkvK1lBc1FBUEFMTUFEd0RSLytZQTB3QU9BTlgvNWdEWUFCTUEyUUFPQU53QURnRGRBQXNBNFAvbEFPWC81Z0RtLy9RQTdBQVNBUEVBRHdEMS8rY0ErUC9vQVAzLzV3RURBQThCREFBUEFSai81Z0V5LytZQk0vL25BVHIvNWdFOC8rVUJQZi9vQVUzLzVnRlAvK1lCVVFBT0FWZi81Z0ZZLytjQ1N3QVBBa3dBRHdKTkFBOENUZ0FQQWs4QUR3SlFBQThDVVFBUEFtWC81Z0tDQUE4Q2hBQVBBb1lBRHdMYS8rWUMzUC9tQXQ3LzVnTHUvK1lDOFAvbUExSUFEd05YLytZRFdnQVBBMmIvNWdObkFBNERhZi9tQTRFQUN3T0NBQThEamYvbUE0NEFEZ09sLytZRHJnQVBBN2IvNWdPKy8rWUR3UUFPQThRQUR3UEdBQThEendBT0E5OEFDd1BoQUFzRDR3QUxBK1gvNVFQbS8rZ0Q2UUFPQSt3QURnUHRBQThEN2dBUEEvQUFEd1B5QUE4RDlBQVBBL1lBRHdQNEFBOEQrZ0FQQS93QUR3UCtBQThFQUFBUEJBSUFEd1FFQUE4RVFQL21CRUwvNWdSRS8rWUVUUC9tQkU0QURnUlEvK1VFVWYvb0JGTC81UVJULytnRVZnQU9CR2NBRGdSb0FBOEVhZi9tQURjQUJ2Ky9BQXYvdndBNC81OEFPdi9KQUQzL3JRRFIvNThBMWYrZkFOMy83QURnLytZQTVmL0VBUFgvelFEOS85VUJHUC9KQVRML253RXovOHdCT3YrZkFUei81Z0UvLzk4QlRmL1JBVS8vN0FGWC82RUJXUC9QQVd6L3Z3RnQvNzhCYi8rL0FYRC92d0Z4Lzc4Q1pmK3RBdHIvbndMYy81OEMzditmQXU3L3JRTHcvNjBEVi8rdEEyYi9yUU5wLzYwRGdmL3NBNDMvbndPbC82MERwLysvQTZqL3Z3T3IvNzhEdHYvSkE3Ny9yUVBmLyt3RDRmL3NBK1AvN0FQbC8rWUVRUCt0QkVML3JRUkUvNjBFVFArZkJGRC81Z1JTLytZRWFmK3RBREFBT1AvakFEei81UUE5LytRQTBmL2pBTlAvNVFEVi8rTUEyUC9pQU5uLzVRRGMvK1VBM2YvcEFQSC82Z0VELytvQk12L2pBVHIvNHdGUi8rVUJWLy9rQW1YLzVBTGEvK01DM1AvakF0Ny80d0x1LytRQzhQL2tBMWYvNUFObS8rUURaLy9sQTJuLzVBT0IvK2tEamYvakE0Ny81UU9sLytRRHZ2L2tBOEgvNVFQUC8rVUQzLy9wQStILzZRUGovK2tENmYvbEErei81UVB0LytvRVFQL2tCRUwvNUFSRS8rUUVUUC9qQkU3LzVRUlcvK1VFWi8vbEJHai82Z1JwLytRQUl3QTQvK0lBUFAva0FOSC80Z0RULytRQTFmL2lBTmovNFFEWi8rUUEzUC9rQU4zLzZRRHMvK1FBOGYvckFRUC82d0V5LytJQk92L2lBVkgvNUFMYS8rSUMzUC9pQXQ3LzRnTm4vK1FEZ2YvcEE0My80Z09PLytRRHdmL2tBOC8vNUFQZi8ra0Q0Zi9wQStQLzZRUHAvK1FEN1Ava0ErMy82d1JNLytJRVR2L2tCRmIvNUFSbi8rUUVhUC9yQUJjQU9QL3JBRDMvOHdEUi8rc0ExZi9yQVRMLzZ3RTYvK3NDWmYvekF0ci82d0xjLytzQzN2L3JBdTcvOHdMdy8vTURWLy96QTJiLzh3TnAvL01EamYvckE2WC84d08rLy9NRVFQL3pCRUwvOHdSRS8vTUVUUC9yQkduLzh3QTJBRkgvN3dCUy8rOEFWUC92QUZ6LzhBREEvKzhBNi8vdkFPei83Z0R0Ly9BQTcvL3ZBUEQvN3dEeS8rOEE4Ly92QVBULzd3RDEvKzRBOS8vdkFQbi83d0Q2Lys4QS9mL3ZBUC8vN3dFRS8rOEJDUC8wQVIvLzhRRXovKzhCTmYvdkFVVC83d0ZKLys4QldQL3ZBbmIvN3dLKy8rOEN3UC92QXNMLzd3TEQvKzhEYlAvdkE1SC83d09ULys4RGx2L3dBNWovN3dPZC8rOERyZi92QTdQLzd3UEMvL0FEMFAvd0E5VC83d1BXLys4RDZQL3ZBK3IvOEFSSi8rOEVTLy92QkUvLzhBUlYvKzhFVi8vd0JHTC83d1JrLys4RVp2L3ZBQ0lBQnYveUFBdi84Z0JhLy9VQVhmLzFBTHovOVFEMS8vUUEvZi8wQVFqLzlRRVovL1VCTS8vMUFWai85UUZzLy9JQmJmL3lBVy8vOGdGdy8vSUJjZi95QW9ELzlRS0IvL1VDNy8vMUEzTC85UU9WLy9VRG52LzFBNmIvOVFPbi8vSURxUC95QTZ2LzhnTzMvL1VEdi8vMUErRC85UVBpLy9VRDVQLzFCRUgvOVFSRC8vVUVSZi8xQURJQVVmL3VBRkwvN2dCVS8rNEF3UC91QU92LzdnRHNBQlFBNy8vdUFQRC83Z0R5Lys0QTgvL3VBUFQvN2dEMS8rMEE5Ly91QVBqLzdRRDUvKzRBK3YvdUFQdi8wQUQ5Lys0QS8vL3VBUVQvN2dFei8rMEJOZi91QVQzLzdRRkUvKzRCU2YvdUFWai83UUoyLys0Q3Z2L3VBc0QvN2dMQy8rNEN3Ly91QTJ6LzdnT1IvKzREay8vdUE1ai83Z09kLys0RHJmL3VBN1AvN2dQVS8rNEQxdi91QStiLzdRUG8vKzRFU2YvdUJFdi83Z1JSLyswRVUvL3RCRlgvN2dSaS8rNEVaUC91QkdiLzdnQUtBQWIvOVFBTC8vVUJiUC8xQVczLzlRRnYvL1VCY1AvMUFYSC85UU9uLy9VRHFQLzFBNnYvOVFCWkFFZi84QUJJLy9BQVNmL3dBRXYvOEFCVC84Y0FWZi93QUpQLzhBQ1kvL0FBdXYvd0FNZi84QURJLy9BQTl2L3dBUUwvOEFFWC84Y0JHLy9yQVIzLzhBRWgvL0FCT2Yvd0FVdi84QUZNLy9BQlZ2L3dBYnovNndIQS8ra0J5UC9yQWNyLzZ3SnQvL0FDYnYvd0FtLy84QUp3Ly9BQ2NmL3dBbmYveHdKNC84Y0NlZi9IQW5yL3h3SjcvOGNDaWYvd0Fvdi84QUtOLy9BQ2ovL3dBcEgvOEFLVC8vQUNsZi93QXBmLzhBS1ovL0FDbS8vd0FwMy84QUtmLy9BQ29mL3dBcVAvOEFMRi84Y0N4Ly9IQXNuL3h3TnEvL0FEY1AvSEEzYi94d09RLy9BRGt2L0hBNVQvOEFPWC8vQURzdi93QTdqLzhBTzkvL0FEeS8vd0E4My84QVBPLy9BRDJQL0hBOXIvOEFQYy84Y0Q2Ly93QkFmLzhBUUovL0FFQy8vd0JBMy84QVFQLy9BRUVmL3dCQlAvOEFRVi8vQUVHLy9IQkIzL3h3UWYvOGNFSWYvSEJDUC94d1FsLzhjRUovL0hCQ24vOEFRci8vQUVMZi93QkMvL3h3UXgvL0FBb1FBR0FBMEFDd0FOQUVYLzhBQkgvOEFBU1AvQUFFbi93QUJLQUEwQVMvL0FBRlAvNGdCVi84QUFXZ0FMQUYwQUN3Q1QvOEFBbVAvQUFMci93QUM4QUFzQXh2L1dBTWYvd0FESS84QUF5Ly9WQU96L3lBRHgvOWNBOXYvQUFRTC93QUVELzljQkYvL2lBUmtBQ3dFYi8rd0JIZi9BQVI4QURBRWgvOEFCT2YvQUFVdi93QUZNLzhBQlRnQUxBVkFBQ3dGVy84QUJiQUFOQVcwQURRRnZBQTBCY0FBTkFYRUFEUUc2Lzc4QnZQL3VBY0QvN0FISS8rMEJ5di9zQWN6LzlRSE5BQTRCendBTkFkSUFEUUptLy9BQ1ovL3dBbWovOEFKcC8vQUNhdi93QW12LzhBSnMvL0FDYmYvQUFtNy93QUp2LzhBQ2NQL0FBbkgvd0FKMy8rSUNlUC9pQW5uLzRnSjYvK0lDZS8vaUFvQUFDd0tCQUFzQ2cvL3dBb1gvOEFLSC8vQUNpZi9BQW92L3dBS04vOEFDai8vQUFwSC93QUtULzhBQ2xmL0FBcGYvd0FLWi84QUNtLy9BQXAzL3dBS2YvOEFDb2YvQUFxUC93QUxGLytJQ3gvL2lBc24vNGdMdkFBc0Rhdi9BQTNELzRnTnlBQXNEZHYvaUE0Ly84QU9RLzhBRGt2L2lBNVQvd0FPVkFBc0RsLy9BQTU0QUN3T21BQXNEcHdBTkE2Z0FEUU9yQUEwRHIvL3dBN0wvd0FPM0FBc0R1UC9BQTczL3dBTy9BQXNEeGYvd0E4Zi84QVBMLzhBRHpmL0FBODcvd0FQWS8rSUQydi9BQTl6LzRnUGdBQXNENGdBTEErUUFDd1ByLzhBRDdmL1hBKy8vOEFQeC8vQUQ4Ly93QS9YLzhBUDMvL0FEK2Yvd0Evdi84QVA5Ly9BRC8vL3dCQUgvOEFRRC8vQUVCZi93QkFmL3dBUUovOEFFQy8vQUJBMy93QVFQLzhBRUVmL0FCQlAvd0FRVi84QUVHLy9pQkIzLzRnUWYvK0lFSWYvaUJDUC80Z1FsLytJRUovL2lCQ24vd0FRci84QUVMZi9BQkMvLzRnUXgvOEFFUVFBTEJFTUFDd1JGQUFzRWFQL1hBQThBN0FBVUFQRUFFQUQxLy9BQStQL3dBUDMvOEFFQUFCWUJBd0FRQVRQLzVnRTkvOXdCV1Avd0ErYi84QVB0QUJBRVVmL3dCRlAvOEFSb0FCQUFUQUJILys0QVNQL3VBRW4vN2dCTC8rNEFWZi91QUpQLzdnQ1kvKzRBdXYvdUFNZi83Z0RJLys0QTdBQVNBUEVBRGdEMS8rTUE5di91QVBqLzR3RDcvN2dBL2YvakFRTC83Z0VEQUE0QkhmL3VBU0gvN2dFei83b0JPZi91QVQzLzJRRkwvKzRCVFAvdUFWYi83Z0ZZLytNQ2JmL3VBbTcvN2dKdi8rNENjUC91QW5ILzdnS0ovKzRDaS8vdUFvMy83Z0tQLys0Q2tmL3VBcFAvN2dLVi8rNENsLy91QXBuLzdnS2IvKzRDbmYvdUFwLy83Z0toLys0Q28vL3VBMnIvN2dPUS8rNERsUC91QTVmLzdnT3kvKzREdVAvdUE3My83Z1BMLys0RHpmL3VBODcvN2dQYS8rNEQ1di9qQSt2LzdnUHRBQTRFQi8vdUJBbi83Z1FMLys0RURmL3VCQS8vN2dRUi8rNEVFLy91QkJYLzdnUXAvKzRFSy8vdUJDMy83Z1F4Lys0RVVmL2pCRlAvNHdSb0FBNEFJQUJhLzhBQVhmL0FBTHovd0FEMS80QUErUC91QVAzLzhBRUkvOXNCR2YvQUFSLy8zQUV6LzBjQlBmL3VBVTRBQndGUS8vUUJXUDkvQW9EL3dBS0IvOEFDNy8vQUEzTC93QU9WLzhBRG52L0FBNmIvd0FPMy84QUR2Ly9BQStEL3dBUGkvOEFENVAvQUErYi83Z1JCLzhBRVEvL0FCRVgvd0FSUi8rNEVVLy91QUNFQVd2LzBBRnovOEFCZC8vUUF2UC8wQU96Lzd3RHQvL0FBOGYvekFQMy83Z0VELy9NQkdmLzBBb0QvOUFLQi8vUUM3Ly8wQTNMLzlBT1YvL1FEbHYvd0E1Ny85QU9tLy9RRHQvLzBBNy8vOUFQQy8vQUQwUC93QStELzlBUGkvL1FENVAvMEErci84QVB0Ly9NRVFmLzBCRVAvOUFSRi8vUUVULy93QkZmLzhBUm8vL01BQ2dBRy85WUFDLy9XQVd6LzFnRnQvOVlCYi8vV0FYRC8xZ0Z4LzlZRHAvL1dBNmovMWdPci85WUFGUUJjLytBQTdmL2dBUFgvZGdENC84SUEvZi9UQVFqLzJRRWYvOXNCTS84ZUFUMy83UUZPLy9BQlVQL3lBVmovVmdPVy8rQUR3di9nQTlELzRBUG0vOElENnYvZ0JFLy80QVJSLzhJRVUvL0NCRmYvNEFBTkFQWC9aQUQ0LzlJQS9mL1pBUWovMlFFZi85c0JNLzhlQVQzLzdRRk8vL0FCVVAveUFWai9WZ1BtLzlJRVVmL1NCRlAvMGdBSkFQWC9hZ0Q5LzhZQkNQL1pBUi8vMndFei94NEJQZi90QVU3LzhBRlEvL0lCV1A5V0FBb0FCdi9YQUF2LzF3RnMvOWNCYmYvWEFXLy8xd0Z3LzljQmNmL1hBNmYvMXdPby85Y0RxLy9YQUZ3QVIvK1lBRWovbUFCSi81Z0FTLytZQUZQL2NBQlYvNWdBVi84WUFGc0FDd0NULzVnQW1QK1lBTHIvbUFESC81Z0F5UCtZQVBiL21BRUMvNWdCRi85d0FSMy9tQUVoLzVnQk9mK1lBVXYvbUFGTS81Z0JWditZQW0zL21BSnUvNWdDYi8rWUFuRC9tQUp4LzVnQ2QvOXdBbmovY0FKNS8zQUNldjl3QW52L2NBS0ovNWdDaS8rWUFvMy9tQUtQLzVnQ2tmK1lBcFAvbUFLVi81Z0NsLytZQXBuL21BS2IvNWdDbmYrWUFwLy9tQUtoLzVnQ28vK1lBc1gvY0FMSC8zQUN5Zjl3QXRIL0dBTFQveGdDMWY4WUF0Zi9HQUxaL3hnRGF2K1lBM0QvY0FOMi8zQURrUCtZQTVML2NBT1UvNWdEbC8rWUE1bi9HQU95LzVnRHVQK1lBNzMvbUFQTC81Z0R6ZitZQTg3L21BUFkvM0FEMnYrWUE5ei9jQVByLzVnRUIvK1lCQW4vbUFRTC81Z0VEZitZQkEvL21BUVIvNWdFRS8rWUJCWC9tQVFiLzNBRUhmOXdCQi8vY0FRaC8zQUVJLzl3QkNYL2NBUW4vM0FFS2YrWUJDdi9tQVF0LzVnRUwvOXdCREgvbUFBSkFiei84Z0hBLy9JQnlQL3lBY3IvOGdITi84QUJ6di9zQWMvL3h3SFEvOWdCMHYrL0FBSUJ6Ly91QWRELzlRQUNBY2ovNndISy8rc0FCd0hJLys4Qnl2L3dBYzMvdXdITy8rd0J6LyszQWRELzFRSFMvN1FBQkFITi8rNEJ6Ly94QWRILzdBSFMvK29BQkFITi8ra0J6Ly9yQWRELzhRSFMvK1VBQkFITi8vSUJ6Ly94QWRELzlRSFMvKzRBQWdIUEFBMEIwZ0FOQUFzQVcvL01BYm9BRXdHOC8vTUJ3UC94QWNqLzhnSEsvL0lCemYrOUFjNy83Z0hQLzdnQjBQL1hBZEwvdHdBRUFFb0FGQUJZQURJQVd3QVJBVzBBRUFBSUFGdi81UUMzLzhzQXpQL2tBYm9BRFFHOC8rMEJ3UC9yQWNqLzdBSEsvK3dBQWdFUUFBc0JWLy9tQUFnQVdBQU9BSUgrMXdERC81Z0F4di9IQU5qL0VnRHMvMUlCU3YvUEFici9nQUFKQUEwQUR3QkJBQXdBVnYvckFHRUFEZ0c2LzhzQnZQL3BBY0QvNXdISS8rY0J5di9uQUFFQVd3QUxBQWtBRFFBVUFFRUFFUUJXLytJQVlRQVRBYnIvdEFHOC85a0J3UC9aQWNqLzJRSEsvOWtBQkFBTi8rWUFRZi8wQUdILzd3RkEvKzBBQmdESi8rb0E3UC91QVBYLzFnRDkvKzBCTS8vc0FWai83QUFTQU5qL3JnRGxBQklBNnYvZ0FPei9yUUR1LzlZQS9QL2ZBUUQvMGdFRy8rQUJHLy9PQVN2LzNRRXQvK0lCTWYvZ0FUZi80QUU5LytrQlFQL2FBVXIvdlFGVS85OEJWd0FSQUIwQUkvK3ZBRmovN3dCYi85OEFtZi91QUxmLzVRQzQvOUVBd3dBUkFNbi95QURZQUJNQTVmL0ZBUFgveWdEOS85QUJNLytCQVR6L1pRRTkvNFVCUC85bUFVRC8zUUZGLy9JQlRmK3hBVS8veWdGWC82a0JXUC9JQWNELzlRSEkvL1VCemYvSEFjNy84UUhQLzgwQjBQL2RBZEwveEFBSUFQWC84QUQ5Ly9BQkNQL3hBUi8vOHdFei8vRUJUdi96QVZELzh3RlkvL0VBQlFCSy8rNEFXLy9xQWMvLzhBSFEvKzBCMHYvd0FBSUE5Zi8xQVczL3dBQUpBTW4vNmdEcy83Z0E5Zi9pQVFqLzhBRWYvL0VCTS8vckFVNy85UUZZLyt3QmJmK1FBQUVCdXYvckFBWUFTZ0FOQU1VQUN3REcvK29BeVFBTUFPei95QUViLy9FQU9nQUUvOFFBVnYrL0FGdi8wUUJ0LzJ3QWZQOXVBSUgvUXdDRy82d0FpZitoQUxmL3VBQysvMzRBd3Y5N0FNWC9td0RHLzNrQXlmK3lBTXYvZmdETS8zMEF6Zjk4QU5qL3J3RGxBQThBNmYva0FPci9vQURzLzNRQTd2K0FBUFgvc2dEOC8zMEEvZit5QVA3L2dBRUEvM2tCQVFBb0FRYi9mUUVJLzM4QkcvOW1BUi8vMmdFci80RUJMZitZQVRIL2ZRRXovN01CTi8rZ0FUMy9mQUUvLzVvQlFQOXNBVVgvNWdGSy8yc0JUditTQVZEL3JRRlUvM3NCVndBUEFWai9rUUZaLy9JQnV2K3ZBYnovdVFIQS83a0J5UCs1QWNyL3VRSE0vN3dCemYveEFkRC84UUhSLyswQUFnRHMvMmdCRy8vdUFCY0F0Ly9VQU1ILzdRRERBQkVBeWYvZ0FNdi81d0RNLytVQXpmL3VBTmdBRWdEcC8ra0E5Zi9YQVRQLzF3RTkvOU1CUC8vV0FVRC94UUZGLytjQlRRQU5BVThBREFGWS85WUJXZi95QWJ6LzZRSEEvK2NCeVAvbkFjci82UUFCQVJ2LzhRQUNBUFgvMWdGdC80Z0FDZ0RsLzhNQTlmL1BBUDMvMUFFei84NEJQUC9uQVQvLzN3Rk4vOUVCVC8vc0FWZi9vQUZZLzlFQU1BQlcvMzRBVy8rZEFHMys4UUI4L3ZRQWdmNnJBSWIvWGdDSi8wc0F0Lzl5QUw3L0R3REMvd29BeGY5QkFNYi9Cd0RKLzJnQXkvOFBBTXovRGdETi93d0EyUDlqQU9VQUJRRHAvNzBBNnY5SkFPeisvZ0R1L3hNQTlmOW9BUHovRGdEOS8yZ0EvdjhUQVFEL0J3RUJBREFCQnY4T0FRai9FUUViL3VjQkgvK3NBU3YvRlFFdC96d0JNZjhPQVRQL2FnRTMvMGtCUGY4TUFULy9Qd0ZBL3ZFQlJmL0FBVXIrN3dGTy96RUJVUDlmQVZUL0NnRlhBQVVCV1A4d0FWbi8xUUFVQUZ2L3dRQzMvOFVBeWYrMEFPbi8xd0QxLzdrQS9mL3BBUWovc2dFYi85SUJILy9JQVRQL29BRTkvOFVCUmYva0FVNy96QUZRLzh3QldQL0xBVm4vN3dHOC8rZ0J3UC9tQWNqLzV3SEsvK2NBQ0FEWUFCVUE3QUFWQVR6LzVBRTkvK1VCUC8va0FVMy80d0ZQLytJQlYvL2tBQ0lBQ3YvaUFBMEFGQUFPLzg4QVFRQVNBRXIvNmdCVy85Z0FXUC9xQUdFQUV3QnQvNjRBZlAvTkFJSC9vQUNHLzhFQWlmL0FBTGYvMEFDNy8rb0F2di9HQUw4QURRREIvK2tBd3YvV0FNWC82QURHLzdvQXlmL3BBTXYveXdETS85b0F6Zi9IQVhYLzB3RzYvNnNCdlAvTkFjRC95d0hJLzhzQnl2L0xBYzMvOHdIUS8vTUIwZi92QUFrQWdmL2ZBTFQvOHdDMi8vQUF3Ly9xQU5qLzN3RGwvK0FCVi8vZ0Fici83UUhSLy9VQUFnZUtBQVFBQUFwZUVqWUFJUUFkQUFELzIvK0kvODcveGYvcy82WC9wQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvdU1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVArSUFBQUFBQUFBLzlELzlBQUEvK3YvaVAvdi83UC8yZjlxLy9YL3pnQU1BQkgveVFBUy85OEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rVUFBUC9vQUFEL3lRQUFBQUFBQUFBQUFBQUFBQUFBLy9NQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9qQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvK3NBQUFBQUFBQUFBQUFBQUFEL3F3QUEvK29BQVAvVkFBQUFBQUFBLytFQUFBQUFBQUFBQVArRy8rci82UUFBQUFBQUFBQUFBQUFBQUFBQUFBRC83UUFBLyswQUFBQUFBQlFBQUFBQUFBQUFBUC92LytZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ0FBQUFBQUFBQUFBQUFBQVAvakFBQUFBQUFBLytRQUFBQUFBQUFBRWYva0FCSC81UUFBQUFBQUVRQUFBQUFBQUFBQUFBQUFBQUFBLytvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvNWdBQS8rVUFBUC9oQUFBQUFBQUFBQUFBQVAvcC85Z0FBQUFBQUFBQUFQK2pBQUFBQUFBQUFBRC9YQUFBQUFBQUFBQUEvdUFBRXdBQUFBQUFBQUFBQUFEL3dQOHovK2ovTXYrai91bi84ditGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8wNy85Zi96QUFELzh3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUR3QUEvMjhBQVArbkFBQUFBUDVzLzgzLzNBQUEvMGdBQUFBQUFBQUFBUCtJLzFqL3AvK24vekQvdFAva0FCQUFBQUFRQUE4QUVQKy8vNjcveFAvTEFBRC9mdjk4QUFEKy9nQUFBQUQrOFA4by8vRC9zd0FBQUFEL3RmL1MvOVFBQVAvU0FBRC84d0FBQUFBQUFBQUFBQUQvNVAvMUFBQUFBQUFBQUFBQUFBQUEveWtBQUFBQS8yTUFBQUFBQUFBQUFBQUEvOVgvMy8vaEFBRC80UUFBQUFBQURnQUFBQUFBQUFBQS8rMEFBQUFBQUFBQUFBQUFBQUFBQVA5eEFBQUFBUC9FQUFBQUFBQUFBQUFBQUFBQUFBRC81Z0FBLytzQUFQL25BQUFBQUFBT0FBQUFBUC9yLytFQUFBQVJBQUFBRWYvUkFBQUFBQUFBQUFEL1pBQUFBQUFBQUFBQUFBRC9hdi9CLzcvLzJQKy8vOGIvNHdBUi82QUFFZ0FSQUJMLzJmL3MvK0lBQUFBQUFBQUFBQUFBL3hrQURRQUEvMmovb1Avdy8ra0FBQUFBQUEwQUFQL3JBQUQvNndBQS8rWUFBQUFBQUFBQUFBQUEvKzMvNVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzd3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvK01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8xLy9FQUFBQUEvL0lBQUFBQUFBQUFBQUFBQUFBQUFBQUEvL0VBQVAvMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC84Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvL01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQK29BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC84Zi93QUFBQUFQL3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFQL3JBQUFBRUFBQS8rTC83UUFBLzl3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJJQUFBQUFBQUFBQUFBQUFBRC9Vd0FBQUFBQUFBQUFBQUFBQUFBQUFBOEFBUC94Ly9NQUFQL3hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS85Y0FBQUFBLzFrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQL3NBQUQvMkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOEFBQS8vQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvTS85Zi8xWC9WZjltLzJ2L3ZRQUhBQUFBQndBRkFBZi9mdjloLzRiL2tnQUEvdy8vREFBQS9qWUFBQUFBL2g0QUFQL1IvMm9BQVAvQUFBQUFBQUFBQUFBQUFBQUFBQUQvbndBQS84Z0FBUCt0QUFBQUFBQUFBQUQvNXdBQUFBRC82d0FBQUFBQUFBQUFBQUFBQVAvSkFBQUFBUCtsLzYvL3ZmK3UvNzMvMHYvcEFCSUFBQUFBQUFBQUVnQUFBQUFBQVAvS0FBRC91Ly9wQUFEK2R3QUFBQUQvT1FBQUFBQUFBQUFBQUFBQUFBQUEvK3dBQVAvc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzlnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQOTVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC90UUFBQUFBQUFBQUEvK01BQUFBQUFBQUFBQUFBQUFBQUFQL3JBQUlBZUFBR0FBWUFBQUFMQUFzQUFRQVFBQkFBQWdBU0FCSUFBd0FsQUNrQUJBQXNBRFFBQ1FBNEFENEFFZ0JGQUVjQUdRQkpBRWtBSEFCTUFFd0FIUUJSQUZRQUhnQldBRllBSWdCYUFGb0FJd0JjQUY0QUpBQ0tBSW9BSndDd0FMTUFLQUM4QUx3QUxBREFBTUFBTFFER0FNWUFMZ0RUQU5RQUx3RFdBTllBTVFEWkFOa0FNZ0RiQU4wQU13RGZBTjhBTmdEaEFPRUFOd0RqQU9NQU9BRGxBT1VBT1FEckFPc0FPZ0R0QU8wQU93RDJBUFlBUEFEN0FQc0FQUUQ5QVA0QVBnRURBUVFBUUFFSkFRa0FRZ0VNQVF3QVF3RVhBUmtBUkFFckFTMEFSd0V3QVRBQVNnRXlBVElBU3dGSkFVa0FUQUZzQVhJQVRRRjJBWGNBVkFJb0FpZ0FWZ0lxQWlzQVZ3SkdBa2NBV1FKSkFra0FXd0pMQW5FQVhBSjJBbnNBZ3dLQUFwQUFpUUtTQXBzQW1nS2tBcVlBcEFLb0FxZ0Fwd0txQXFvQXFBS3NBcXdBcVFLdUFxNEFxZ0t4QXJFQXF3S3pBck1BckFLMUFyVUFyUUszQXJjQXJnSzVBcmtBcndLN0Fyc0FzQUs5QXNrQXNRTExBc3NBdmdMTkFzMEF2d0xQQXM4QXdBTGFBdG9Bd1FMY0F0d0F3Z0xlQXQ0QXd3TGdBdUFBeEFMaUF1SUF4UUxrQXVRQXhnTG1BdVlBeHdMb0F1Z0F5QUxxQXVvQXlRTHNBdXdBeWdMdUF2WUF5d05TQTFjQTFBTmFBMmtBMmdOc0Eyd0E2Z053QTNBQTZ3TnlBM0lBN0FOMkEzWUE3UU41QTNvQTdnTjhBNFVBOEFPSEE0a0ErZ09MQTVBQS9RT1NBNWdCQXdPZUE1OEJDZ09oQTZFQkRBT2pBNk1CRFFPbEE2Z0JEZ09yQTdBQkVnT3lBN0lCR0FPMkE3Y0JHUU84QThjQkd3UEtBOHNCSndQTkE5QUJLUVBYQTlnQkxRUGNBOXdCTHdQZUErUUJNQVBwQStvQk53UHVCQllCT1FRWUJCZ0JZZ1FhQkNjQll3UXZCQzhCY1FReUJESUJjZ1EwQkRRQmN3UkFCRVVCZEFSSUJFZ0JlZ1JLQkVvQmV3Uk1CRXdCZkFST0JFOEJmUVJVQkZjQmZ3UmFCRm9CZ3dSY0JGMEJoQVJmQkY4QmhnUmpCR01CaHdSbEJHVUJpQVJwQkdrQmlRU3BCS2tCaWdBQ0FVNEFFQUFRQUFFQUVnQVNBQUVBSlFBbEFBSUFKZ0FtQUFNQUp3QW5BQVFBS0FBb0FBVUFLUUFwQUFZQUxBQXRBQWNBTGdBdUFBZ0FMd0F2QUFrQU1BQXdBQW9BTVFBeUFBY0FNd0F6QUFVQU5BQTBBQXNBT0FBNEFBd0FPUUE1QUFnQU9nQTZBQTBBT3dBN0FBNEFQQUE4QUE4QVBRQTlBQkFBUGdBK0FCRUFSUUJGQUJJQVJnQkdBQk1BUndCSEFCUUFTUUJKQUJVQVRBQk1BQllBVVFCU0FCWUFVd0JUQUJjQVZBQlVBQk1BVmdCV0FCZ0FXZ0JhQUJrQVhBQmNBQm9BWFFCZEFCa0FYZ0JlQUJzQWlnQ0tBQk1Bc0FDd0FCd0FzUUN4QUFJQXNnQ3lBQVVBc3dDekFBSUF2QUM4QUJrQXdBREFBQllBeGdER0FCTUEwd0RVQUIwQTFnRFdBQWNBMlFEWkFBOEEyd0RjQUFjQTNRRGRBQjRBM3dEZkFBY0E0UURoQUFjQTR3RGpBQjBBNVFEbEFCMEE2d0RyQUI4QTdRRHRBQm9BOWdEMkFCTUErd0Q3QUNBQS9RRDlBQ0FBL2dEK0FCTUJBd0VFQUNBQkNRRUpBQ0FCREFFTUFBSUJGd0VYQUJjQkdBRVlBQTBCR1FFWkFCa0JLd0VyQUJNQkxBRXNBQndCTFFFdEFCOEJNQUV3QUFrQk1nRXlBQWtCU1FGSkFCOEJiZ0Z1QUFFQmNnRnlBQUVCZGdGM0FBRUNLQUlvQUFRQ0tnSXJBQVVDUmdKSEFBVUNTUUpKQUF3Q1N3SlJBQUlDVWdKU0FBUUNVd0pXQUFZQ1Z3SmJBQWNDWEFKZ0FBVUNZUUprQUFnQ1pRSmxBQkFDWmdKc0FCSUNiUUp0QUJRQ2JnSnhBQlVDZGdKMkFCWUNkd0o3QUJjQ2dBS0JBQmtDZ2dLQ0FBSUNnd0tEQUJJQ2hBS0VBQUlDaFFLRkFCSUNoZ0tHQUFJQ2h3S0hBQklDaUFLSUFBUUNpUUtKQUJRQ2lnS0tBQVFDaXdLTEFCUUNqQUtNQUFRQ2pRS05BQlFDamdLT0FBUUNqd0tQQUJRQ2tBS1FBQVVDa2dLU0FBWUNrd0tUQUJVQ2xBS1VBQVlDbFFLVkFCVUNsZ0tXQUFZQ2x3S1hBQlVDbUFLWUFBWUNtUUtaQUJVQ21nS2FBQVlDbXdLYkFCVUNwQUtrQUFjQ3BRS2xBQllDcGdLbUFBY0NxQUtvQUFjQ3FnS3FBQWNDckFLc0FBY0NyZ0t1QUFjQ3NRS3hBQWdDc3dLekFBa0N0UUsxQUFvQ3R3SzNBQW9DdVFLNUFBb0N1d0s3QUFvQ3ZRSzlBQWNDdmdLK0FCWUN2d0svQUFjQ3dBTEFBQllDd1FMQkFBY0N3Z0xEQUJZQ3hBTEVBQVVDeFFMRkFCY0N4Z0xHQUFVQ3h3TEhBQmNDeUFMSUFBVUN5UUxKQUJjQ3l3TExBQmdDelFMTkFCZ0N6d0xQQUJnQzJnTGFBQXdDM0FMY0FBd0MzZ0xlQUF3QzRBTGdBQWdDNGdMaUFBZ0M1QUxrQUFnQzVnTG1BQWdDNkFMb0FBZ0M2Z0xxQUFnQzdBTHNBQTRDN2dMdUFCQUM3d0x2QUJrQzhBTHdBQkFDOFFMeEFCRUM4Z0x5QUJzQzh3THpBQkVDOUFMMEFCc0M5UUwxQUJFQzlnTDJBQnNEVWdOU0FBSURVd05UQUFZRFZBTlZBQWNEVmdOV0FBVURWd05YQUJBRFdnTmFBQUlEV3dOYkFBTURYQU5jQUFZRFhRTmRBQkVEWGdOZkFBY0RZQU5nQUFrRFlRTmlBQWNEWXdOakFBVURaQU5rQUFzRFpRTmxBQXdEWmdObUFCQURad05uQUE4RGFBTm9BQWNEYVFOcEFCQURiQU5zQUJZRGNBTndBQmNEY2dOeUFCa0RkZ04yQUJjRGVRTjVBQVlEZWdONkFCd0RmQU45QUFjRGZnTitBQWdEZndPQUFBa0RnUU9CQUI0RGdnT0NBQUlEZ3dPREFBTURoQU9FQUJ3RGhRT0ZBQVlEaHdPSUFBY0RpUU9KQUFVRGl3T0xBQXNEakFPTUFBUURqUU9OQUF3RGpnT09BQThEandPUEFCSURrQU9RQUJVRGtnT1NBQmNEa3dPVEFCTURsQU9VQUJRRGxRT1ZBQmtEbGdPV0FCb0Rsd09YQUJVRG1BT1lBQjhEbmdPZUFCa0Rud09mQUE0RG9RT2hBQTREb3dPakFBNERwUU9sQUJBRHBnT21BQmtEckFPc0FBY0RyUU90QUJZRHJnT3VBQUlEcndPdkFCSURzQU93QUFZRHNnT3lBQlVEdGdPMkFBMER0d08zQUJrRHZBTzhBQVFEdlFPOUFCUUR2Z08rQUJBRHZ3Ty9BQmtEd0FQQUFBY0R3UVBCQUE4RHdnUENBQm9Ed3dQREFBY0R4QVBFQUFJRHhRUEZBQklEeGdQR0FBSUR4d1BIQUJJRHlnUEtBQVlEeXdQTEFCVUR6UVBPQUJVRHp3UFBBQThEMEFQUUFCb0Qxd1BYQUFVRDJBUFlBQmNEM0FQY0FCY0QzZ1BlQUJNRDN3UGZBQjRENEFQZ0FCa0Q0UVBoQUI0RDRnUGlBQmtENHdQakFCNEQ1QVBrQUJrRDZRUHBBQThENmdQcUFCb0Q3Z1B1QUFJRDd3UHZBQklEOEFQd0FBSUQ4UVB4QUJJRDhnUHlBQUlEOHdQekFCSUQ5QVAwQUFJRDlRUDFBQklEOWdQMkFBSUQ5d1AzQUJJRCtBUDRBQUlEK1FQNUFCSUQrZ1A2QUFJRCt3UDdBQklEL0FQOEFBSUQvUVA5QUJJRC9nUCtBQUlEL3dQL0FCSUVBQVFBQUFJRUFRUUJBQklFQWdRQ0FBSUVBd1FEQUJJRUJBUUVBQUlFQlFRRkFCSUVCZ1FHQUFZRUJ3UUhBQlVFQ0FRSUFBWUVDUVFKQUJVRUNnUUtBQVlFQ3dRTEFCVUVEQVFNQUFZRURRUU5BQlVFRGdRT0FBWUVEd1FQQUJVRUVBUVFBQVlFRVFRUkFCVUVFZ1FTQUFZRUV3UVRBQlVFRkFRVUFBWUVGUVFWQUJVRUZnUVdBQWNFR0FRWUFBY0VHZ1FhQUFVRUd3UWJBQmNFSEFRY0FBVUVIUVFkQUJjRUhnUWVBQVVFSHdRZkFCY0VJQVFnQUFVRUlRUWhBQmNFSWdRaUFBVUVJd1FqQUJjRUpBUWtBQVVFSlFRbEFCY0VKZ1FtQUFVRUp3UW5BQmNFTHdRdkFCY0VNZ1F5QUFnRU5BUTBBQWdFUUFSQUFCQUVRUVJCQUJrRVFnUkNBQkFFUXdSREFCa0VSQVJFQUJBRVJRUkZBQmtFU0FSSUFBa0VTZ1JLQUFjRVRBUk1BQXdFVGdST0FBOEVUd1JQQUJvRVZBUlVBQndFVlFSVkFCOEVWZ1JXQUE4RVZ3UlhBQm9FV2dSYUFCWUVYQVJjQUIwRVhRUmRBQndFWHdSZkFBa0VZd1JqQUFjRVpRUmxBQWNFYVFScEFCQUVxUVNwQUFVQUFnRnRBQVlBQmdBQkFBc0FDd0FCQUJBQUVBQVdBQkVBRVFBWkFCSUFFZ0FXQUNVQUpRQUNBQ2NBSndBSUFDc0FLd0FJQUM0QUxnQWFBRE1BTXdBSUFEVUFOUUFJQURjQU53QWJBRGdBT0FBSkFEa0FPUUFLQURvQU9nQUxBRHNBT3dBTUFEd0FQQUFYQUQwQVBRQU5BRDRBUGdBWUFFVUFSUUFEQUVjQVNRQUVBRXNBU3dBRUFGRUFVZ0FGQUZNQVV3QUdBRlFBVkFBRkFGVUFWUUFFQUZjQVZ3QUhBRmtBV1FBT0FGb0FXZ0FQQUZ3QVhBQWNBRjBBWFFBUEFGNEFYZ0FRQUlNQWd3QUlBSklBa2dBSUFKTUFrd0FFQUpjQWx3QUlBSmdBbUFBRUFKb0FtZ0FPQUxFQXNRQUNBTElBc2dBSUFMTUFzd0FDQUxvQXVnQUVBTHdBdkFBUEFNQUF3QUFGQU1jQXlBQUVBTW9BeWdBT0FORUEwUUFKQU5JQTBnQUlBTk1BMHdBUkFOVUExUUFKQU5rQTJRQVhBTndBM0FBUkFOMEEzUUFWQU9BQTRBQVNBT3NBNndBRkFPMEE3UUFjQU84QThBQUZBUEVBOFFBVEFQSUE5QUFGQVBZQTlnQUVBUGNBOXdBRkFQZ0ErQUFVQVBrQStnQUZBUDBBL1FBRkFQOEEvd0FGQVFJQkFnQUVBUU1CQXdBVEFRUUJCQUFGQVFjQkJ3QUlBUXdCREFBQ0FSWUJGZ0FJQVJjQkZ3QUdBUmdCR0FBTEFSa0JHUUFQQVJvQkdnQUlBUndCSEFBSUFSMEJIUUFFQVI0QkhnQUlBU0FCSUFBSUFTRUJJUUFFQVRJQk1nQUpBVFVCTlFBRkFUZ0JPQUFJQVRrQk9RQUVBVG9CT2dBSkFVUUJSQUFGQVVrQlNRQUZBVXNCVEFBRUFWRUJVUUFSQVZVQlZRQUlBVllCVmdBRUFXa0JhZ0FaQVd3QmJRQUJBVzRCYmdBV0FXOEJjUUFCQVhJQmNnQVdBWFlCZHdBV0FpZ0NLUUFJQWlzQ0xBQUlBa1VDUlFBWkFrc0NVUUFDQWxJQ1VnQUlBbHdDWUFBSUFtRUNaQUFLQW1VQ1pRQU5BbVlDYkFBREFtMENjUUFFQW5ZQ2RnQUZBbmNDZXdBR0Fud0Nmd0FPQW9BQ2dRQVBBb0lDZ2dBQ0FvTUNnd0FEQW9RQ2hBQUNBb1VDaFFBREFvWUNoZ0FDQW9jQ2h3QURBb2dDaUFBSUFva0NpUUFFQW9vQ2lnQUlBb3NDaXdBRUFvd0NqQUFJQW8wQ2pRQUVBbzRDamdBSUFvOENqd0FFQXBFQ2tRQUVBcE1Da3dBRUFwVUNsUUFFQXBjQ2x3QUVBcGtDbVFBRUFwc0Ntd0FFQXB3Q25BQUlBcDBDblFBRUFwNENuZ0FJQXA4Q253QUVBcUFDb0FBSUFxRUNvUUFFQXFJQ29nQUlBcU1Db3dBRUFyRUNzUUFhQXI0Q3ZnQUZBc0FDd0FBRkFzSUN3d0FGQXNRQ3hBQUlBc1VDeFFBR0FzWUN4Z0FJQXNjQ3h3QUdBc2dDeUFBSUFza0N5UUFHQXRBQzBBQWJBdEVDMFFBSEF0SUMwZ0FiQXRNQzB3QUhBdFFDMUFBYkF0VUMxUUFIQXRZQzFnQWJBdGNDMXdBSEF0Z0MyQUFiQXRrQzJRQUhBdG9DMmdBSkF0d0MzQUFKQXQ0QzNnQUpBdUFDNEFBS0F1RUM0UUFPQXVJQzRnQUtBdU1DNHdBT0F1UUM1QUFLQXVVQzVRQU9BdVlDNWdBS0F1Y0M1d0FPQXVnQzZBQUtBdWtDNlFBT0F1b0M2Z0FLQXVzQzZ3QU9BdXdDN0FBTUF1NEM3Z0FOQXU4Qzd3QVBBdkFDOEFBTkF2RUM4UUFZQXZJQzhnQVFBdk1DOHdBWUF2UUM5QUFRQXZVQzlRQVlBdllDOWdBUUF2a0MrUUFJQTFJRFVnQUNBMVlEVmdBSUExY0RWd0FOQTFvRFdnQUNBMTBEWFFBWUEyTURZd0FJQTJZRFpnQU5BMmNEWndBWEEya0RhUUFOQTJvRGFnQUVBMndEYkFBRkEyNERiZ0FPQTNBRGNBQUdBM0lEY2dBUEEzVURkUUFPQTNZRGRnQUdBM2NEZHdBT0EzNERmZ0FhQTRFRGdRQVZBNElEZ2dBQ0E0a0RpUUFJQTR3RGpBQUlBNDBEalFBSkE0NERqZ0FYQTQ4RGp3QURBNUFEa0FBRUE1RURrUUFGQTVJRGtnQUdBNU1Ea3dBRkE1UURsQUFFQTVVRGxRQVBBNVlEbGdBY0E1Y0Rsd0FFQTVnRG1BQUZBNWtEbVFBSEE1MERuUUFGQTU0RG5nQVBBNThEbndBTUE2RURvUUFNQTZNRG93QU1BNlVEcFFBTkE2WURwZ0FQQTZjRHFBQUJBNnNEcXdBQkE2MERyUUFGQTY0RHJnQUNBNjhEcndBREE3SURzZ0FFQTdNRHN3QUZBN1lEdGdBTEE3Y0R0d0FQQTdnRHVBQUVBN2tEdVFBSUE3d0R2QUFJQTcwRHZRQUVBNzREdmdBTkE3OER2d0FQQThFRHdRQVhBOElEd2dBY0E4UUR4QUFDQThVRHhRQURBOFlEeGdBQ0E4Y0R4d0FEQThzRHl3QUVBODBEemdBRUE4OER6d0FYQTlBRDBBQWNBOVFEMUFBRkE5WUQxZ0FGQTljRDF3QUlBOWdEMkFBR0E5a0QyUUFJQTlvRDJnQUVBOXNEMndBSUE5d0QzQUFHQTk4RDN3QVZBK0FENEFBUEErRUQ0UUFWQStJRDRnQVBBK01ENHdBVkErUUQ1QUFQQStVRDVRQVNBK1lENWdBVUErZ0Q2QUFGQStrRDZRQVhBK29ENmdBY0Erc0Q2d0FFQSt3RDdBQVJBKzBEN1FBVEErNEQ3Z0FDQSs4RDd3QURBL0FEOEFBQ0EvRUQ4UUFEQS9JRDhnQUNBL01EOHdBREEvUUQ5QUFDQS9VRDlRQURBL1lEOWdBQ0EvY0Q5d0FEQS9nRCtBQUNBL2tEK1FBREEvb0QrZ0FDQS9zRCt3QURBL3dEL0FBQ0EvMEQvUUFEQS80RC9nQUNBLzhEL3dBREJBQUVBQUFDQkFFRUFRQURCQUlFQWdBQ0JBTUVBd0FEQkFRRUJBQUNCQVVFQlFBREJBY0VCd0FFQkFrRUNRQUVCQXNFQ3dBRUJBMEVEUUFFQkE4RUR3QUVCQkVFRVFBRUJCTUVFd0FFQkJVRUZRQUVCQm9FR2dBSUJCc0VHd0FHQkJ3RUhBQUlCQjBFSFFBR0JCNEVIZ0FJQkI4RUh3QUdCQ0FFSUFBSUJDRUVJUUFHQkNJRUlnQUlCQ01FSXdBR0JDUUVKQUFJQkNVRUpRQUdCQ1lFSmdBSUJDY0VKd0FHQkNnRUtBQUlCQ2tFS1FBRUJDb0VLZ0FJQkNzRUt3QUVCQ3dFTEFBSUJDMEVMUUFFQkM0RUxnQUlCQzhFTHdBR0JEQUVNQUFJQkRFRU1RQUVCRElFTWdBS0JETUVNd0FPQkRRRU5BQUtCRFVFTlFBT0JEY0VOd0FPQkRrRU9RQU9CRHNFT3dBT0JEMEVQUUFPQkQ4RVB3QU9CRUFFUUFBTkJFRUVRUUFQQkVJRVFnQU5CRU1FUXdBUEJFUUVSQUFOQkVVRVJRQVBCRWtFU1FBRkJFc0VTd0FGQkV3RVRBQUpCRTRFVGdBWEJFOEVUd0FjQkZBRVVBQVNCRkVFVVFBVUJGSUVVZ0FTQkZNRVV3QVVCRlVFVlFBRkJGWUVWZ0FYQkZjRVZ3QWNCR0lFWWdBRkJHUUVaQUFGQkdZRVpnQUZCR2NFWndBUkJHZ0VhQUFUQkdrRWFRQU5CRzhFYndBWkJLa0VxUUFJQUFFQUFBQUtBZ1lJRUFBRVJFWk1WQUFhWTNseWJBQklaM0psYXdCMmJHRjBiZ0NrQUFRQUFBQUEvLzhBRWdBQUFBb0FGQUFlQUNnQU5BQkJBRXNBVlFCZkFHa0Fjd0I5QUljQWtRQ2JBS1VBcndBRUFBQUFBUC8vQUJJQUFRQUxBQlVBSHdBcEFEVUFRZ0JNQUZZQVlBQnFBSFFBZmdDSUFKSUFuQUNtQUxBQUJBQUFBQUQvL3dBU0FBSUFEQUFXQUNBQUtnQTJBRU1BVFFCWEFHRUFhd0IxQUg4QWlRQ1RBSjBBcHdDeEFDZ0FCa0ZhUlNBQVZFTlNWQ0FBZmsxUFRDQUFxRTVCVmlBQTFGSlBUU0FCQUZSVlVpQUJMQUFBLy84QUV3QURBQTBBRndBaEFDc0FNZ0EzQUVRQVRnQllBR0lBYkFCMkFJQUFpZ0NVQUo0QXFBQ3lBQUQvL3dBU0FBUUFEZ0FZQUNJQUxBQTRBRVVBVHdCWkFHTUFiUUIzQUlFQWl3Q1ZBSjhBcVFDekFBRC8vd0FTQUFVQUR3QVpBQ01BTFFBNUFFWUFVQUJhQUdRQWJnQjRBSUlBakFDV0FLQUFxZ0MwQUFELy93QVRBQVlBRUFBYUFDUUFMZ0E2QUQ0QVJ3QlJBRnNBWlFCdkFIa0Fnd0NOQUpjQW9RQ3JBTFVBQVAvL0FCTUFCd0FSQUJzQUpRQXZBRHNBUHdCSUFGSUFYQUJtQUhBQWVnQ0VBSTRBbUFDaUFLd0F0Z0FBLy84QUV3QUlBQklBSEFBbUFEQUFQQUJBQUVrQVV3QmRBR2NBY1FCN0FJVUFqd0NaQUtNQXJRQzNBQUQvL3dBVEFBa0FFd0FkQUNjQU1RQXpBRDBBU2dCVUFGNEFhQUJ5QUh3QWhnQ1FBSm9BcEFDdUFMZ0F1V015YzJNRVdHTXljMk1FWG1NeWMyTUVaR015YzJNRWFtTXljMk1FYW1NeWMyTUVhbU15YzJNRWFtTXljMk1FYW1NeWMyTUVhbU15YzJNRWFtTmpiWEFFY0dOamJYQUVjR05qYlhBRWNHTmpiWEFFY0dOamJYQUVjR05qYlhBRWNHTmpiWEFFY0dOamJYQUVjR05qYlhBRWNHTmpiWEFFY0dSc2FXY0VlR1JzYVdjRWZtUnNhV2NFaEdSc2FXY0VpbVJzYVdjRWltUnNhV2NFaW1Sc2FXY0VpbVJzYVdjRWltUnNhV2NFaW1Sc2FXY0VpbVJ1YjIwRWtHUnViMjBFbG1SdWIyMEVuR1J1YjIwRW9tUnViMjBFb21SdWIyMEVvbVJ1YjIwRW9tUnViMjBFb21SdWIyMEVvbVJ1YjIwRW9tWnlZV01FcUdaeVlXTUVxR1p5WVdNRXFHWnlZV01FcUdaeVlXTUVxR1p5WVdNRXFHWnlZV01FcUdaeVlXTUVxR1p5WVdNRXFHWnlZV01FcUd4cFoyRUVzbXhwWjJFRXVteHVkVzBFd0d4dWRXMEV4bXh1ZFcwRXpHeHVkVzBFMG14dWRXMEUwbXh1ZFcwRTBteHVkVzBFMG14dWRXMEUwbXh1ZFcwRTBteHVkVzBFMG14dlkyd0UyR3h2WTJ3RTNteHZZMndFNUc1MWJYSUU2bTUxYlhJRThHNTFiWElFOW01MWJYSUUvRzUxYlhJRS9HNTFiWElFL0c1MWJYSUUvRzUxYlhJRS9HNTFiWElFL0c1MWJYSUUvRzl1ZFcwRkFtOXVkVzBGQ0c5dWRXMEZEbTl1ZFcwRkZHOXVkVzBGRkc5dWRXMEZGRzl1ZFcwRkZHOXVkVzBGRkc5dWRXMEZGRzl1ZFcwRkZIQnVkVzBGR25CdWRXMEZJSEJ1ZFcwRkpuQnVkVzBGTEhCdWRXMEZMSEJ1ZFcwRkxIQnVkVzBGTEhCdWRXMEZMSEJ1ZFcwRkxIQnVkVzBGTEhOdFkzQUZNbk50WTNBRk9ITnRZM0FGUG5OdFkzQUZSSE50WTNBRlJITnRZM0FGUkhOdFkzQUZSSE50WTNBRlJITnRZM0FGUkhOdFkzQUZSSE56TURFRlNuTnpNREVGVUhOek1ERUZWbk56TURFRlhITnpNREVGWEhOek1ERUZYSE56TURFRlhITnpNREVGWEhOek1ERUZYSE56TURFRlhITnpNRElGWW5Oek1ESUZhSE56TURJRmJuTnpNRElGZEhOek1ESUZkSE56TURJRmRITnpNRElGZEhOek1ESUZkSE56TURJRmRITnpNRElGZEhOek1ETUZlbk56TURNRmdITnpNRE1GaG5Oek1ETUZqSE56TURNRmpITnpNRE1GakhOek1ETUZqSE56TURNRmpITnpNRE1GakhOek1ETUZqSE56TURRRmtuTnpNRFFGbUhOek1EUUZubk56TURRRnBITnpNRFFGcEhOek1EUUZwSE56TURRRnBITnpNRFFGcEhOek1EUUZwSE56TURRRnBITnpNRFVGcW5Oek1EVUZzSE56TURVRnRuTnpNRFVGdkhOek1EVUZ2SE56TURVRnZITnpNRFVGdkhOek1EVUZ2SE56TURVRnZITnpNRFVGdkhOek1EWUZ3bk56TURZRnlITnpNRFlGem5Oek1EWUYxSE56TURZRjFITnpNRFlGMUhOek1EWUYxSE56TURZRjFITnpNRFlGMUhOek1EWUYxSE56TURjRjJuTnpNRGNGNEhOek1EY0Y1bk56TURjRjdITnpNRGNGN0hOek1EY0Y3SE56TURjRjdITnpNRGNGN0hOek1EY0Y3SE56TURjRjdIUnVkVzBGOG5SdWRXMEYrSFJ1ZFcwRi9uUnVkVzBHQkhSdWRXMEdCSFJ1ZFcwR0JIUnVkVzBHQkhSdWRXMEdCSFJ1ZFcwR0JIUnVkVzBHQkFBQUFBRUFBUUFBQUFFQUF3QUFBQUVBQWdBQUFBRUFBQUFBQUFJQUNBQUpBQUFBQVFBT0FBQUFBUUFRQUFBQUFRQVBBQUFBQVFBTkFBQUFBUUJEQUFBQUFRQkZBQUFBQVFCRUFBQUFBUUJDQUFBQUF3QS9BRUFBUVFBQUFBSUFFUUFTQUFBQUFRQVNBQUFBQVFBOEFBQUFBUUErQUFBQUFRQTlBQUFBQVFBN0FBQUFBUUFLQUFBQUFRQU1BQUFBQVFBTEFBQUFBUUJIQUFBQUFRQkpBQUFBQVFCSUFBQUFBUUJHQUFBQUFRQXdBQUFBQVFBeUFBQUFBUUF4QUFBQUFRQXZBQUFBQVFBNEFBQUFBUUE2QUFBQUFRQTVBQUFBQVFBM0FBQUFBUUFGQUFBQUFRQUhBQUFBQVFBR0FBQUFBUUFFQUFBQUFRQVVBQUFBQVFBV0FBQUFBUUFWQUFBQUFRQVRBQUFBQVFBWUFBQUFBUUFhQUFBQUFRQVpBQUFBQVFBWEFBQUFBUUFjQUFBQUFRQWVBQUFBQVFBZEFBQUFBUUFiQUFBQUFRQWdBQUFBQVFBaUFBQUFBUUFoQUFBQUFRQWZBQUFBQVFBa0FBQUFBUUFtQUFBQUFRQWxBQUFBQVFBakFBQUFBUUFvQUFBQUFRQXFBQUFBQVFBcEFBQUFBUUFuQUFBQUFRQXNBQUFBQVFBdUFBQUFBUUF0QUFBQUFRQXJBQUFBQVFBMEFBQUFBUUEyQUFBQUFRQTFBQUFBQVFBekFFc0FtQUNZQUpnQW1BUW1CQ1lFSmdRbUJ4UUh3QTVRRGxBT1pnNklEb2dPaUE2SURyNE81QThTRHhJUEVnOFNEeVlQSmc4bUR5WVBPZzg2RHpvUE9nOU9EMDRQVGc5T0QyQVBZQTlnRDJBUGVnOTZEM29QZWcrOEQ3d1B2QSs4RDlvUDJnL2FEOW9QK0EvNEQvZ1ArQkFxRUNvUUtoQXFFRndRWEJCY0VGd1FqaENpRU5vUXpCRE1FTXdRekJEYUVOb1EyaERhRVFZQUFRQUFBQUVBQ0FBQ0FjUUEzd0huQWJvQnV3RzhBYjBCdmdHL0FjQUJ3UUhDQWNNQnhBSEZBY1lCeHdISUFja0J5Z0hMQWN3QnpRSE9BYzhCMEFIUkFkSUIwd0hvQWVrQ1F3STdBZW9CNndIc0FlMEI3Z0h2QWZBQjhRSHlBZk1COUFIMUFmWUI5d0g0QWZrQitnSDdBZndCL1FIK0FnQUNBUVRjQWdJQ0F3SUVBZ1VDQmdJSEFnZ0NDUUlLQWdzQ0x3SVBBaEFDRVFJVUFoVUNGZ0lYQWhnQ0dRSWJBaHdDSGdJZEF2c0MvQUw5QXY0Qy93TUFBd0VEQWdNREF3UURCUU1HQXdjRENBTUpBd29EQ3dNTUF3MEREZ01QQXhBREVRTVNBeE1ERkFNVkF4WURGd01ZQXhrREdnTWJBeHdESFFNZUF4OERJQU1oQXlJREl3TWtBeVVESmdNbkF5Z0RLUU1xQXlzRExBTXRBeTRETHdNd0F6RURNZ016QXpRRE5RTTJBemNET0FNNUF6b0RPd004QXowRFBnTS9BMEFEUVFOQ0EwTURSUU5FQTBZRFJ3TklBMGtEU2dOTEEwd0RUUU5PQTA4RFVBTlJCS29FcXdTc0JLMEVyZ1N2QkxBRXNRU3lCTE1FdEFTMUJMWUV0d1M0QkxrRXVnUzdCTHdFdlFTK0JMOEV3QVRCQk1JRXd3VEVCTVVCL3dUR0JNY0V5QVRKQk1vRXl3VE1CTTBFemdUUEJOQUUwUVRTQk5NRTFBVFZCTmNFMkFUYUFob0Uyd0lPQk5ZQ0V3SU5CTmtDREFJU0FBRUEzd0FJQUNVQUpnQW5BQ2dBS1FBcUFDc0FMQUF0QUM0QUx3QXdBREVBTWdBekFEUUFOUUEyQURjQU9BQTVBRG9BT3dBOEFEMEFQZ0JsQUdjQWhRQ1NBTEFBc1FDeUFMTUF0QUMxQUxZQXR3QzRBTGtBMFFEU0FOTUExQURWQU5ZQTF3RFlBTmtBMmdEYkFOd0EzUURlQU44QTRBRGhBT0lBNHdEa0FPVUE1Z0RuQU9nQkxBRXdBVElCT0FFNkFUd0JQZ0UvQVVVQlJnRi9BWVVCaWdHTkFrWUNSd0pKQWtzQ1RBSk5BazRDVHdKUUFsRUNVZ0pUQWxRQ1ZRSldBbGNDV0FKWkFsb0NXd0pjQWwwQ1hnSmZBbUFDWVFKaUFtTUNaQUpsQW9JQ2hBS0dBb2dDaWdLTUFvNENrQUtTQXBRQ2xnS1lBcG9DbkFLZUFxQUNvZ0trQXFZQ3FBS3FBcXdDcmdLeEFyTUN0UUszQXJrQ3V3SzlBcjhDd1FMRUFzWUN5QUxLQXN3Q3pnTFFBdElDMUFMWUF0b0MzQUxlQXVBQzRnTGtBdVlDNkFMcUF1d0M3Z0x3QXZFQzh3TDFBMUlEVXdOVUExVURWZ05YQTFnRFdnTmJBMXdEWFFOZUExOERZQU5oQTJNRFpBTmxBMllEWndOb0Eya0RlUU42QTNzRGZBTjlBMzREZndPQUE0RURnZ09EQTRRRGhRT0dBNGNEaUFPSkE0b0Rpd09NQTQwRGpnTzZBN3dEdmdQVEE5a0Qzd1JJQkVvRVRnUldCRmdFWFFScEFBRUFBQUFCQUFnQUFnRjBBTGNCdWdHN0Fid0J2UUcrQWI4QndBSEJBY0lCd3dIRUFjVUJ4Z0hIQWNnQnlRSEtBY3NCekFITkFjNEJ6d0hRQWRFQjBnSFRBdndETHdJN0Fmb0V5UVRLQWZzQi9BSDlBZjRCL3dJQUJNMEV6Z1RRQk5NRTNBSUNBZ01DQkFJRkFnWUNCd0lJQWdrQ0NnSUxBZlFCOVFIMkFmY0IrQUg1QWk4Q0R3SVFBaEVDRkFJVkFoY0NHUUw5QXY0Qy93TUFBd0VEQWdNREF3UURCUU1HQXdjRENBTUpBd29EQ3dNTUF3MEREZ01QQXhBREVRTVNBeE1ERkFNVkF4WURGd01ZQTA0REdRTWFBeHNESEFNZEF4NERId01nQXlFRElnTWpBeVFESlFNbUF5Y0RLQU1wQXlvREt3TXNBeTBETGdNd0F6RURNZ016QXpRRE5RTTJBemNET0FNNUF6b0RPd004QXowRFBnTS9BMEFEUVFOQ0EwTURSUU5FQTBZRFJ3TklBMGtEU2dOTEEwd0RUUU5QQTFBRFVRVElCTXNFekFUUEJORUUwZ0lCQk5RRXdBVEJCTUlFd3dURUJNVUV4Z1RIQk5VRTF3VFlBaGdFMmdJYUJOc0Mrd0lPQk5ZQ0V3SU5CTmtDRmdJTUFoSUFBUUMzQUVVQVJnQkhBRWdBU1FCS0FFc0FUQUJOQUU0QVR3QlFBRkVBVWdCVEFGUUFWUUJXQUZjQVdBQlpBRm9BV3dCY0FGMEFYZ0NIQUl3QWt3RHBBT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1BOUFEMUFQWUE5d0Q0QVBrQStnRDdBUHdBL1FEK0FQOEJBQUVCQVFJQkF3RUVBUVVCQmdFdEFURUJNd0U1QVRzQlBRRkFBVWNDU2dKbUFtY0NhQUpwQW1vQ2F3SnNBbTBDYmdKdkFuQUNjUUp5QW5NQ2RBSjFBbllDZHdKNEFua0NlZ0o3QW53Q2ZRSitBbjhDZ0FLQkFvTUNoUUtIQW9rQ2l3S05BbzhDa1FLVEFwVUNsd0taQXBzQ25RS2ZBcUVDb3dLbEFxY0NxUUtyQXEwQ3NnSzBBcllDdUFLNkFyd0N2Z0xBQXNJQ3hRTEhBc2tDeXdMTkFzOEMwUUxUQXRVQzJRTGJBdDBDM3dMaEF1TUM1UUxuQXVrQzZ3THRBdThDOGdMMEF2WURqd09RQTVFRGtnT1RBNVFEbFFPV0E1Y0RtQU9aQTVvRG13T2NBNTBEbmdPN0E3MER2d1BOQTlRRDJnUGdCRVlFU1FSTEJFOEVWd1JaQkZvRVhnUnFBQVlBQUFBR0FCSUFLZ0JDQUZvQWNnQ0tBQU1BQUFBQkFCSUFBUUNRQUFFQUFBQktBQUVBQVFCTkFBTUFBQUFCQUJJQUFRQjRBQUVBQUFCS0FBRUFBUUJPQUFNQUFBQUJBQklBQVFCZ0FBRUFBQUJLQUFFQUFRS3RBQU1BQUFBQkFCSUFBUUJJQUFFQUFBQktBQUVBQVFPYUFBTUFBQUFCQUJJQUFRQXdBQUVBQUFCS0FBRUFBUU9jQUFNQUFBQUJBQklBQVFBWUFBRUFBQUJLQUFFQUFRUVpBQUlBQVFDbkFLc0FBQUFFQUFBQUFRQUlBQUVHSGdBMkFISUFwQUN1QUxnQXlnRDhBUTRCR0FGS0FXUUJmZ0dRQWJvQjdBSDJBaGdDTWdKRUFuWUNpQUtpQXN3QzNnTVFBeG9ESkFNMkEyZ0RjZ044QTRZRG9BTzZBOHdEOWdRb0JESUVWQVJ1QklBRXNnVEVCTjRGQ0FVYUJTUUZMZ1U0QlVJRmJBV1dCY0FGNmdZVUFBWUFEZ0FVQUJvQUlBQW1BQ3dDU3dBQ0FLY0NUQUFDQUtnQ1RnQUNBS2tEOEFBQ0FLb0VlZ0FDQUtzRDdnQUNBS3dBQVFBRUJJY0FBZ0NzQUFFQUJBS0lBQUlBcUFBQ0FBWUFEQVNKQUFJQXJBU0xBQUlCb2dBR0FBNEFGQUFhQUNBQUpnQXNBbE1BQWdDbkFsUUFBZ0NvQkFvQUFnQ3BCQWdBQWdDcUJId0FBZ0NyQkFZQUFnQ3NBQUlBQmdBTUJIWUFBZ0NvQXFJQUFnR2lBQUVBQkFTTkFBSUFyQUFHQUE0QUZBQWFBQ0FBSmdBc0FsY0FBZ0NuQWxnQUFnQ29BcVlBQWdDcEJCWUFBZ0NxQkg0QUFnQ3JCQmdBQWdDc0FBTUFDQUFPQUJRRWp3QUNBS2dFa1FBQ0FLd0Nzd0FDQWFJQUF3QUlBQTRBRkFLMUFBSUFxQVNUQUFJQXJBSzNBQUlCb2dBQ0FBWUFEQU9zQUFJQXFBU1ZBQUlBckFBRkFBd0FFZ0FZQUI0QUpBUjRBQUlBcHdLOUFBSUFxQUpiQUFJQXFRU1hBQUlBckFLL0FBSUJvZ0FHQUE0QUZBQWFBQ0FBSmdBc0Fsd0FBZ0NuQWwwQUFnQ29BbDhBQWdDcEJCd0FBZ0NxQklBQUFnQ3JCQm9BQWdDc0FBRUFCQVNaQUFJQXFBQUVBQW9BRUFBV0FCd0N5Z0FDQUtnRWdnQUNBS3NFbXdBQ0FLd0N6QUFDQWFJQUF3QUlBQTRBRkFMUUFBSUFxQVNkQUFJQXJBTFdBQUlCb2dBQ0FBWUFEQVNmQUFJQXJBTGFBQUlCb2dBR0FBNEFGQUFhQUNBQUpnQXNBbUVBQWdDbkFtSUFBZ0NvQXVBQUFnQ3BCRFFBQWdDcUJJUUFBZ0NyQkRJQUFnQ3NBQUlBQmdBTUJLRUFBZ0NwQktNQUFnQ3NBQU1BQ0FBT0FCUURud0FDQUtjRG9RQUNBS2dFcFFBQ0FLd0FCUUFNQUJJQUdBQWVBQ1FEcFFBQ0FLY0NaUUFDQUtnRVJBQUNBS2tFUWdBQ0FLb0VRQUFDQUt3QUFnQUdBQXdDOFFBQ0FLZ0Vwd0FDQUt3QUJnQU9BQlFBR2dBZ0FDWUFMQUptQUFJQXB3Sm5BQUlBcUFKcEFBSUFxUVB4QUFJQXFnUjdBQUlBcXdQdkFBSUFyQUFCQUFRRWlBQUNBS3dBQVFBRUFva0FBZ0NvQUFJQUJnQU1CSW9BQWdDc0JJd0FBZ0dpQUFZQURnQVVBQm9BSUFBbUFDd0NiZ0FDQUtjQ2J3QUNBS2dFQ3dBQ0FLa0VDUUFDQUtvRWZRQUNBS3NFQndBQ0FLd0FBUUFFQkhjQUFnQ29BQUVBQkFTT0FBSUFyQUFCQUFRRUdRQUNBS3dBQXdBSUFBNEFGQVNRQUFJQXFBU1NBQUlBckFLMEFBSUJvZ0FEQUFnQURnQVVBcllBQWdDb0JKUUFBZ0NzQXJnQUFnR2lBQUlBQmdBTUE2MEFBZ0NvQkpZQUFnQ3NBQVVBREFBU0FCZ0FIZ0FrQkhrQUFnQ25BcjRBQWdDb0FuWUFBZ0NwQkpnQUFnQ3NBc0FBQWdHaUFBWUFEZ0FVQUJvQUlBQW1BQ3dDZHdBQ0FLY0NlQUFDQUtnQ2VnQUNBS2tFSFFBQ0FLb0VnUUFDQUtzRUd3QUNBS3dBQVFBRUJKb0FBZ0NvQUFRQUNnQVFBQllBSEFMTEFBSUFxQVNEQUFJQXF3U2NBQUlBckFMTkFBSUJvZ0FEQUFnQURnQVVBdEVBQWdDb0JKNEFBZ0NzQXRjQUFnR2lBQUlBQmdBTUJLQUFBZ0NzQXRzQUFnR2lBQVlBRGdBVUFCb0FJQUFtQUN3Q2ZBQUNBS2NDZlFBQ0FLZ0M0UUFDQUtrRU5RQUNBS29FaFFBQ0FLc0VNd0FDQUt3QUFnQUdBQXdFb2dBQ0FLa0VwQUFDQUt3QUF3QUlBQTRBRkFPZ0FBSUFwd09pQUFJQXFBU21BQUlBckFBRkFBd0FFZ0FZQUI0QUpBT21BQUlBcHdLQUFBSUFxQVJGQUFJQXFRUkRBQUlBcWdSQkFBSUFyQUFDQUFZQURBTHlBQUlBcUFTb0FBSUFyQUFCQUFRQzl3QUNBS2dBQVFBRUF2a0FBZ0NvQUFFQUJBTDRBQUlBcUFBQkFBUUMrZ0FDQUtnQUJRQU1BQklBR0FBZUFDUUNjZ0FDQUtjQ2N3QUNBS2dDcHdBQ0FLa0VGd0FDQUtvRWZ3QUNBS3NBQlFBTUFCSUFHQUFlQUNRRUtnQUNBS2NFS0FBQ0FLZ0VMZ0FDQUtrRUxBQUNBS29FTUFBQ0FLd0FCUUFNQUJJQUdBQWVBQ1FFS3dBQ0FLY0VLUUFDQUtnRUx3QUNBS2tFTFFBQ0FLb0VNUUFDQUt3QUJRQU1BQklBR0FBZUFDUUVPQUFDQUtjRU5nQUNBS2dFUEFBQ0FLa0VPZ0FDQUtvRVBnQUNBS3dBQlFBTUFCSUFHQUFlQUNRRU9RQUNBS2NFTndBQ0FLZ0VQUUFDQUtrRU93QUNBS29FUHdBQ0FLd0FBUUFFQklZQUFnQ29BQUlBRVFBbEFDa0FBQUFyQUMwQUJRQXZBRFFBQ0FBMkFEc0FEZ0E5QUQ0QUZBQkZBRWtBRmdCTEFFMEFHd0JQQUZRQUhnQldBRnNBSkFCZEFGNEFLZ0NCQUlFQUxBQ0RBSU1BTFFDR0FJWUFMZ0NKQUlrQUx3Q01BSXdBTUFDWEFKb0FNUURQQU04QU5RQUJBQUFBQVFBSUFBRUFCZ0FDQUFFQUFnTFVBdFVBQVFBQUFBRUFDQUFDQUE0QUJBVGRCTjRFM3dUZ0FBRUFCQUtHQW9jQ21BS1pBQVFBQUFBQkFBZ0FBUUFtQUFJQUNnQWNBQUlBQmdBTUFhTUFBZ0JLQWFnQUFnQllBQUVBQkFHcEFBSUFXQUFCQUFJQVNnQlhBQVFBQUFBQkFBZ0FBUUJFQUFJQUNnQVVBQUVBQkFHa0FBSUFUUUFCQUFRQnBnQUNBRTBBQkFBQUFBRUFDQUFCQUI0QUFnQUtBQlFBQVFBRUFhVUFBZ0JRQUFFQUJBR25BQUlBVUFBQkFBSUFTZ0dqQUFFQUFBQUJBQWdBQVFBR0FaVUFBUUFCQUVzQUFRQUFBQUVBQ0FBQkFBWUJKd0FCQUFFQXVnQUJBQUFBQVFBSUFBRUFCZ0dzQUFFQUFRQTJBQUVBQUFBQkFBZ0FBZ0FjQUFJQjR3SGtBQUVBQUFBQkFBZ0FBZ0FLQUFJQjVRSG1BQUVBQWdBdkFFOEFBUUFBQUFFQUNBQUNBQjRBREFJb0Fpb0NLUUlyQWl3Q0h3SWdBaUVCcmdJakFpUUNKUUFCQUF3QUp3QW9BQ3NBTXdBMUFFWUFSd0JJQUVzQVV3QlVBRlVBQVFBQUFBRUFDQUFDQUF3QUF3SW1BaWNDSndBQkFBTUFTUUJMQWE0QUFRQUFBQUVBQ0FBQ0FHWUFDQUk5QWkwQ0xnSXdBakVDT1FJNkFqd0FBUUFBQUFFQUNBQUNBQllBQ0FBYkFCVUFGZ0FYQUJnQUdRQWRBQlFBQVFBSUFhMENJZ1J3QkhFRWNnUnpCSFFFZFFBQkFBQUFBUUFJQUFJQUZnQUlCSFVDSWdSd0JIRUVjZ1J6QWEwRWRBQUJBQWdBRkFBVkFCWUFGd0FZQUJrQUd3QWRBQUVBQUFBQkFBZ0FBZ0FXQUFnQUZRQVdBQmNBR0FBWkFCc0FIUUFVQUFFQUNBSXRBaTRDTUFJeEFqa0NPZ0k4QWowQUFRQUFBQUVBQ0FBQkFBWUJhUUFCQUFFQUV3QUdBQUFBQVFBSUFBTUFBUUFTQUFFQVVnQUFBQUVBQUFCS0FBSUFBZ0Y4QVh3QUFBSFVBZDBBQVFBQkFBQUFBUUFJQUFFQUtBSEFBQUVBQUFBQkFBZ0FBZ0FhQUFvQ01nQjZBSE1BZEFJekFqUUNOUUkyQWpjQ09BQUNBQUVBRkFBZEFBQUFBUUFBQUFFQUNBQUNBQ1lBRUFIVUFkVUIxZ0hYQWRnQjJRSGFBZHNCM0FIZEFrQUNQZ0pCQWtJQ1B3VGhBQUVBRUFBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFFMEFUZ0t0QTVvRG5BUVoiLAogICJSb2JvdG8tTWVkaXVtSXRhbGljLnR0ZiI6ICJBQUVBQUFBUkFRQUFCQUFRUjFCUFV5RWNiWThBQWhRY0FBQlpha2RUVlVMRW5MZGNBQUp0aUFBQUdYeFBVeTh5b1F1dyt3QUFBWmdBQUFCZ1kyMWhjTmh1RHhJQUFCcHNBQUFHWEdOMmRDQUVseXRLQUFBalVBQUFBRlptY0dkdGUvbGhxd0FBSU1nQUFBRzhaMkZ6Y0FBSUFCTUFBaFFRQUFBQURHZHNlV1pndWJVR0FBQXRjQUFCNDJwb1pHMTRMeHBQN3dBQUZZQUFBQVRzYUdWaFpQaTJxd3NBQUFFY0FBQUFObWhvWldFTTJ4S1JBQUFCVkFBQUFDUm9iWFI0clJxWU5BQUFBZmdBQUJPSWJHOWpZU0tacWN3QUFDT29BQUFKeG0xaGVIQUhFZ0xaQUFBQmVBQUFBQ0J1WVcxbFJ1Uno0d0FDRU53QUFBTVVjRzl6ZFA5aEFHUUFBaFB3QUFBQUlIQnlaWEFic2ZnMkFBQWloQUFBQU13QUFRQUFBQUlBQUxEaDZ2MWZEenoxQUJzSUFBQUFBQURFOEJFdUFBQUFBTkRiVHBmNlFmM1ZDWGdJY3dBQ0FBa0FBZ0FBQUFBQUFBQUJBQUFIYlA0TUFBQUpOL3BCL213SmVBZ0FBYk1BQUFBQUFBQUFBQUFBQUFBRTRnQUJBQUFFNGdDUEFCWUFWZ0FGQUFFQUFBQUFBQTRBQUFJQUFmSUFCZ0FCQUFNRUdRSDBBQVVBQUFXYUJUTUFBQUVmQlpvRk13QUFBOUVBWmdJQUFBQUNBQUFBQUFBQUFBQUE0QUFLLzFBQUlYOEFBQUFoQUFBQUFFZFBUMGNBQVFBQS8vMEdBUDRBQUdZSG1nSUFJQUFCbndBQUFBQUVPZ1d3QUNBQUlBQUNBNVlBWkFBS0FBQUFDZ0FBQWZrQUFBSDVBQUFDSHdBM0FvNEFvUVRIQURzRWN3QkNCYjBBdFFVQUFDMEJXZ0NRQXI4QWFBTEcvNVFEZUFCbkJGMEFQUUcvLzRrQ2xnQTJBalVBTUFNYy8zOEVjd0JnQkhNQTd3UnpBQXNFY3dBbUJITUFDUVJ6QUZvRWN3QmpCSE1BaGdSekFEc0Vjd0NPQWhrQUt3SGkvNW9EL0FBeUJHSUFZZ1FVQUM4RDBBQ1ZCdnNBTWdVMC82UUU3d0FuQlJzQVpRVWNBQ2NFYlFBbkJFMEFKd1ZTQUdzRmpRQW5BanNBTlFSWkFBTUU3Z0FuQkQwQUp3YlZBQ2NGakFBbkJXWUFhd1VBQUNjRlpnQmtCT0lBSndTNUFDUUV3QUNjQlJrQVd3VVBBSnNHM2dDM0JQUC93d1RGQUtFRXR2L2xBaXIvN3dOSUFLd0NLdjk2QTFzQVJBT0svM2tDaWdES0JEMEFJZ1JvQUJBRUdnQTRCR3NBT3dRMEFEc0N5Z0JmQkhELzl3UlpBQTBDQlFBZkFmei9EQVFYQUJFQ0JRQWZCc3NBRUFSYkFBMEVkUUE1QkdqL3h3UnlBRHNDeEFBUUJBc0FIQUtmQURzRVdnQktBK0VBWkFYT0FIY0Q4Zis1QTlIL3RRUHgvK2NDcEFBd0FmMEFJQUtrLzVrRk1nQmJBZmtBQUFJWS8rWUVaUUJNQkp2LzlnVjhBQWdFeFFCUUFmZi83QVRjLzl3RGRBRFJCaDRBWGdPQUFMNER6Z0JKQkZVQWdBS1dBRFlHSGdCZUE4Y0E3d0w5QU9RRU13QWJBdWtBVmdMcEFHY0NrUURJQktILzNRUFpBSDBDT3dDZUFnci8wd0xwQU9FRGxRQytBODRBQWdXdEFMa0dCZ0N4QmpBQWxnUFEvOUlGTlAra0JUVC9wQVUwLzZRRk5QK2tCVFQvcEFVMC82UUhWZitIQlJzQVpRUnRBQ2NFYlFBbkJHMEFKd1J0QUNjQ093QTFBanNBTlFJN0FEVUNPd0ExQlRyLy93V01BQ2NGWmdCckJXWUFhd1ZtQUdzRlpnQnJCV1lBYXdRdEFDTUZaQUFWQlJrQVd3VVpBRnNGR1FCYkJSa0FXd1RGQUtFRXJ3QW5CTXNBR3dROUFDSUVQUUFpQkQwQUlnUTlBQ0lFUFFBaUJEMEFJZ2FYQUE4RUdnQTRCRFFBT3dRMEFEc0VOQUE3QkRRQU93SVVBQ0lDRkFBaUFoUUFJZ0lVQUNJRWpRQkdCRnNBRFFSMUFEa0VkUUE1QkhVQU9RUjFBRGtFZFFBNUJIZ0FQUVJ2QUNvRVdnQktCRm9BU2dSYUFFb0VXZ0JLQTlIL3RRUisvODBEMGYrMUJUVC9wQVE5QUNJRk5QK2tCRDBBSWdVMC82UUVQUUFpQlJzQVpRUWFBRGdGR3dCbEJCb0FPQVViQUdVRUdnQTRCUnNBWlFRYUFEZ0ZIQUFuQlFFQU93VTYvLzhFaVFBN0JHMEFKd1EwQURzRWJRQW5CRFFBT3dSdEFDY0VOQUE3QkcwQUp3UTBBRHdFYlFBbkJEUUFPd1ZTQUdzRWNQLzNCVklBYXdSdy8vY0ZVZ0JyQkhELzl3VlNBR3NFY1AvM0JZMEFKd1JaQUEwRmpnQXVCSGNBS3dJN0FEVUNGQUFVQWpzQU5RSVVBQjhDT3dBMUFoUUFJZ0k3LzQ0Q0JmOTJBanNBTlFJVUFDSUdsQUExQkFFQUh3UlpBQU1DSVA4UEJPNEFKd1FYQUJFRWZ3QWhCRDBBSndJRkFCOEVQUUFuQWdYL29nUTlBQ2NDbXdBZkJEMEFKd0xoQUI4RVRBQWhBa2NBSHdXTUFDY0VXd0FOQll3QUp3UmJBQTBGakFBbkJGc0FEUVJiQUEwRmNnQWpCRzhBRVFWbUFHc0VkUUE1QldZQWF3UjFBRGtGWmdCckJIVUFPUWVEQUZBSERRQkNCT0lBSndMRUFCQUU0Z0FuQXNUL25BVGlBQ2NDeEFBUUJMa0FKQVFMQUJ3RXVRQWtCQXNBSEFTNUFDUUVDd0FjQkxrQUpBUUxBQndFd0FDY0FwOEFPd1RBQUp3Q3h3QTdCTUFBbkFLZi8rSUZHUUJiQkZvQVNnVVpBRnNFV2dCS0JSa0FXd1JhQUVvRkdRQmJCRm9BU2dVWkFGc0VXZ0JLQlJrQVd3UmFBRW9HM2dDM0JjNEFkd1RGQUtFRDBmKzFCTVVBb1FTMi8rVUQ4Zi9uQkxiLzVRUHgvK2NFdHYvbEEvSC81d0lHQUI0RmFBQk9Bc1QvU2dWcEFGc0VoUUEyQllNQVd3VFdBRW9DSVA4UEJWSUFhd1J3Ly9jRmpBQW5CRnNBRFFVMC82UUVQUUFpQjFYL2h3YVhBQThGWkFBVkJHOEFLZ1UwLzZRRVBRQWlCRzBBSndRMEFEc0NPLy9KQWhUL2ZnVm1BR3NFZFFBNUJPSUFKd0xFQUFjRkdRQmJCRm9BU2dTNUFDUUVDd0FjQk1BQW5BS2ZBRHNDSVA4UEJDVUFOZ0c1QUlvRDBnRUNBNTRCRFFQSUFPOERhd0QrQWdVQkFnS25BUG9DUmYrb0E4UUEzZ01SQUt3Q1kvL3VBQXI5VkFBSy9kY0FDdnoyQUFyOTFnQUsvTDhBQ3Z5Z0FsVUJMZ1FsQU9nRk5QK2tBanNBbmdUUi83NEY4Zi9HQXAvL3lnVjZBQmdGS2Y5WUJWQUFIUUtnQUFzRk5QK2tCTzhBSndSZEFDNEZuZitxQkcwQUp3UzIvK1VGalFBbkJWb0FYZ0k3QURVRTdnQW5CUnIvc2diVkFDY0ZqQUFuQkhjQUFBVm1BR3NGandBdUJRQUFKd1IzLzl3RXdBQ2NCTVVBb1FYTEFGSUU4Ly9EQllrQWRRVThBQWtDT3dBMUJNVUFvUVJyQUQ0RVNBQW9CRzhBRVFLZ0FHNEVTQUJYQkdzQVBnU3IvK1VEK1FCM0JHOEFPQVJJQUNnRUJRQm1CRzhBRVFTSEFHd0NvQUJ1Qkg4QUlRUlMvNmdFb2YvZEErRUFaQVArQUQ0RWRRQTVCTmNBWFFSdi84c0VJUUE3QkhjQU9BUVhBRzRFU0FCWEJhMEFNZ1B4LzdrRnB3QS9CbXNBVkFLZ0FFd0VTQUJYQkhVQU9RUklBRmNHYXdCVUJKa0FVQVJqQUcwRXgvOGtCa29BVndSdEFDY0ViUUFuQmRvQWtRUmRBQzRGT2dCbkJMa0FKQUk3QURVQ093QTFCRmtBQXdoUS84b0lWd0F1QmpRQW9BVHVBQ2NGaHdBbkJPMEFtd1dKQUNVRk5QK2tCT3NBSXdUdkFDY0VYUUF1QmVML2hBUnRBQ2NIY2YrbEJMc0FIZ1dIQUNjRmh3QW5CUW9BTGdXSS84b0cxUUFuQlkwQUp3Vm1BR3NGandBdUJRQUFKd1ViQUdVRXdBQ2NCTzBBbXdZNEFGWUU4Ly9EQmRVQUpRVm9BTVVIYXdBckI4WUFLd1gxQUlrR3pRQXVCT29BSXdVeEFFOEhKZ0F5Qk52L3NBUTlBQ0lFWlFCREJIWUFJZ05LQUJnRTJ2K0ZCRFFBT3daTy82MEVBUUFXQkg4QUdRUi9BQmtFVmdBaUJJSC92d1hmQUNJRWZnQVpCSFVBT1FSL0FCa0VhUC9IQkJvQU9BUGhBRk1EMGYrMUJiQUFQUVB4LzdrRXVBQVpCRTRBY0FabUFCa0d3UUFTQlBvQVR3WklBQ0lFVUFBaUJDVUFJd1pjQUNRRVdQKzJCRFFBT3dRMEFEc0VXUUFOQTBvQUdBUWxBRHNFQ3dBY0FnVUFId0lVQUNJQi9QOE1CcWYvdlFhNUFCa0VjQUFOQkZZQUlnUi9BQmtEMGYrMUJIOEFHUWNiQUdBR0tRQkVCT29BSXdSUEFDRUcrd0FyQmQwQUdRVHYvNjRFU1ArY0J4UUFQZ1lRQURBR3dnQVVCY01BRmdqMUFEVUh4Z0FpQkFyL3FnUGMvN1VGaVFCMUJhY0FQd1ZhQUdJRWJ3QTJCUDBBcUFQNUFIY0UvUUNvQS9rQWR3azNBR3NJUmdBNUJWb0FaZ1J2QURnSEZ3QmlCaDRBU3djYkFHQUdLUUJFQlAwQVZnUXpBRVVFNHdBNEFBcjg1Z0FLL1E0QUN2NHJBQXIrUEFBSytrRUFDdnB2QlljQUp3Ui9BQmtFNmdBakJFOEFJUVQyQUNjRWJmL0hCRklBSWdPUEFCRUVYZi84QTByL3l3U2RBQzRFQ2dBUkIzSC9wUVpPLzYwRXV3QWVCQUVBRmdVS0FDNEVWZ0FpQlE0QUl3U1JBQ0VGSGdBM0JDNEFHUVpzQUtRRmd3QnNCWTBBSndSK0FCa0huZ0FuQllrQUVRZ1JBQzRHeWdBUkJnVUFaUVRqQUVzRkd3QmxCQm9BT0FUQUFKd0Q0UUJUQk1VQW9RUDVBSGNFeFFDaEEva0FWQVR6LzhNRDhmKzVCd1FBblFWUUFGWUZhQURGQkU0QWNBVlVBTGtFV3dDRkJXY0E1d1JaQUEwRi93QmlCS2ovOUFYL0FHSUVxUC8wQWpzQU5RZHgvNlVHVHYrdEJRUUFJd1JnQUNFRmlQL0tCSUgvdndXTkFDNEVid0FSQlkwQUp3UitBQmtGYUFERkJFNEFjQWJWQUNjRjN3QWlBanNBTlFVMC82UUVQUUFpQlRUL3BBUTlBQ0lIVmYrSEJwY0FEd1J0QUNjRU5BQTdCV2dBU0FRbEFEWUZhQUJJQkNVQU5nZHgvNlVHVHYrdEJMc0FIZ1FCQUJZRWpBQXZCSXovOEFXSEFDY0Vmd0FaQlljQUp3Ui9BQmtGWmdCckJIVUFPUVZhQUdJRWJ3QTJCVm9BWWdSdkFEWUZNUUJQQkNVQUl3VHRBSnNEMGYrMUJPMEFtd1BSLzdVRTdRQ2JBOUgvdFFWb0FNVUVUZ0J3QkYwQUxnTktBQmdHelFBdUJrZ0FJZ1NzQURNRFF3QUpCUFAvd3dQeC83a0U4Ly9EQS9IL3VRVHFBREFFYXdBN0JzWUFSUWF5QUVjR0xBQ3FCUW9BWVFSakFKSUVKd0NNQjQzLzNnWjAvOTRIeWdBbkJuVUFDd1RuQUV3RUZnQTlCWWtBa0FVQUFITUZOZ0JXQkVnQUtBV0kvOG9FZ2YrL0JUVC9wQVE5QUNJRTd3QW5CR2dBRUFVY0FDY0Vhd0E3QlJ3QUp3UnJBRHNGalFBbkJGa0FEUVR1QUNjRUZ3QVJCTzRBSndRWEFCRUVQUUFuQWdYLzVBYlZBQ2NHeXdBUUJ0VUFKd2JMQUJBRmpBQW5CRnNBRFFVQUFDY0VhUC9IQk9JQUp3TEUvOTRFdVFBa0JBc0FIQVRBQUp3Q253QTdCUThBbXdQaEFHUUZEd0NiQStFQVpBYmVBTGNGemdCM0J0NEF0d1hPQUhjRzNnQzNCYzRBZHdiZUFMY0Z6Z0IzQkxiLzVRUHgvK2NGTlAra0JEMEFJZ1UwLzZRRVBRQWlCVFQvcEFROUFDSUZOUCtrQkQwQUlnVTAvNlFFUFFBaUJUVC9wQVE5QUNJRk5QK2tCRDBBSWdVMC82UUVQUUFpQlRUL3BBUTlBQ0lGTlAra0JEMEFJZ1UwLzZRRVBRQWlCVFQvcEFROUFDSUViUUFuQkRRQU93UnRBQ2NFTkFBN0JHMEFKd1EwQURzRWJRQW5CRFFBT3dSdEFDY0VOQUE3QkcwQUp3UTBBRHNFYlFBbkJEUUFPd1J0QUNjRU5BQTdBanNBTlFJVUFDSUNPLy8vQWdYLzVBVm1BR3NFZFFBNUJXWUFhd1IxQURrRlpnQnJCSFVBT1FWbUFHc0VkUUE1QldZQWF3UjFBRGtGWmdCckJIVUFPUVZtQUdzRWRRQTVCV2tBV3dTRkFEWUZhUUJiQklVQU5nVnBBRnNFaFFBMkJXa0FXd1NGQURZRmFRQmJCSVVBTmdVWkFGc0VXZ0JLQlJrQVd3UmFBRW9GZ3dCYkJOWUFTZ1dEQUZzRTFnQktCWU1BV3dUV0FFb0Znd0JiQk5ZQVNnV0RBRnNFMWdCS0JNVUFvUVBSLzdVRXhRQ2hBOUgvdFFURkFLRUQwZisxQk1VQW9RUFIvN1VGclA2ekF4NEE3QVAvQUFBSDlBQUFBLzhBQUFmMEFBQUNyZ0FBQWdRQUFBRmNBQUFFWmdBQUFpa0FBQUdmQUFBQTFRQUFBQW9BQUFLWEFEWUNsd0EyQlFzQW5BWUtBSUlHQ2dDQ0E0di9UZ0c5QUs0QnVRQ0tBY3IvcEFHbEFNMERCZ0MzQXcwQWx3TDcvNkVFUlFCcEJJRC8rd0xBQUo0RDVRQXpCWVVBTXdGckFEWUhkZ0NkQVZvQWtBS09BS0VDYVFCZEFtRC8rUVErQURjRGl2L2hBdWtBWXdOTUFHNEVUZi9EQkp2LzlnWkpBQTBHamdBckNGc0FKd2RZQUNvR1pBQVFCSW4vOUFSekFFNEYwUUJDQkI0QU93U0lBQkFGUC8va0JWMy81Z1hCQU1JRHpnQXhCL2tBSXdUc0FPMEU5d0I5Qmc4QXRnYXlBSUlHcHdDSUJua0F0UVI0QUVVRmRRQWZCTDcvcHdScUFKd0VtQUEwQ0E4QVNRSW0veGNFZFFBd0JHSUFZZ1A4LzlVRUZBQVhBL2NBT2dKVEFHa0NqZ0JtQWV6L3p3VCtBRjhFamdCTEJLSUFYd2IyQUY4RzlnQmZCUFFBWHdhTkFCY0FDZ0FBQi92L3FRZzFBRndEaHYvWEJHUC9wd1NtQURvRVkvK25BNllBQ2dRMkFDMEVUZ0FSQkI0QURnUVhBQlFGR3dBdUJCb0FGQVVLQUM0RkpnQXVCS0VBT3dRbC80Y0Nwd0VHQkwwQUNnTHBBRE1DNlFBSUF1a0FJd0xwQUJZQzZRQUtBdW4vOFFMcC8vUUM2Zi9qQXVrQWJRTHBBQmNFQlAvWkJYd0FRd1UxQUhBRXlBQUFBNllBa3dYakFJd0VZd0J3QkdzQU9RUWxBR0lFSGdBT0JFVUFDZ1NtQURjRVZRQUtCS1lBT2dUQ0FBb0Y0Z0FLQTZZQUNnUkVBQW9Ed3YveUFmY0FHQVREQUFvRWpBQS9BN0lBQ2dQTUFBb0VZZ0FLQkdjQU9RUklBQW9FaGYrYkFmOEE2d09QQVFRRDlnRGNBL1lBRXdQMkFOZ0Q5Z0RYQTQ4QkJBT1BBUVVEandFRUJFYi9wQVFsQUcwRVp3QTVCWEFBWWdRZEFGVUVlZ0FxQWdyL0J3R3cvN0lFRlAvV0J5Yi93UWNwQUFvRmRnQmlCTHdBQ2dSWkFBc0ZPditEQmhUL3FRUXZBQXdFeUFBTEJFVUFDZ1N3LzhFRUx3QnlCVDRBQ2dSekFGMEdYQUFLQnQ0QUNnVTdBRW9GK3dBTEJFOEFDd1JuQUJNR2FnQUtCRy8vMGdRTS8vVUdhditwQklRQUNnVDlBQW9GVGdCaUJjd0FRQVJEQUcwRXFmK2tCbXdBWWdSekFGMEVjd0FLQmRvQU53UzNBRFFFTHdBTUJLWUFPZ1JPQUFRRDR3QWVDQUVBQ2dUUC85a0Vid0FRQkNZQU53Ui9BRHNEa2dDa0JJY0FOQVI3LzhjRWhnQTdCRFFBT3dSd0FEQUZXZ0J2QllFQWNRVm1BQzRGdlFCeUJiOEFjZ1FGQUtzRWFRQWZBNllBQ2dSQS8zOEVwUC9SQXVrQWlnTHBBR1FDNlFCOUF1a0FpUUxwQUpZQzZRQjdBdWtBcGdSVC85UUVHQUFuQm04QU9nU2FBRWNFendCT0FpRC9Ed0lnL3c4Q0ZRQWlBaFgvZlFJVkFDSUVTQUFLQkdML2x3UmkvNWNFSlFCaUJJWC9td1NGLzVzRWhmK2JCSVgvbXdTRi81c0VoZitiQklYL213Um5BRGtEekFBS0E4d0FDZ1BNQUFvRHpBQUtBZmNBR0FIM0FCZ0I5d0FZQWZjQUdBVENBQW9FcGdBNkJLWUFPZ1NtQURvRXBnQTZCS1lBT2dSckFEa0Vtd0IwQkljQWpnUnpBRm9FY3dBSkJITUFKZ1J6QUFzRWF3QTVCR3NBT1FSckFEa0VKUUJ0QklYL213U0YvNXNFaGYrYkJHY0FPUVJuQURrRVp3QTVCR2NBT1FSaUFBb0R6QUFLQTh3QUNnUE1BQW9EekFBS0E4d0FDZ1NNQUQ4RWpBQS9CSXdBUHdTTUFEOEV3d0FLQWZjQURRSDNBQmdCOXdBWUFmZi9pZ0gzQUJnRHd2L3lCRVFBQ2dPbUFBb0RwZ0FLQTZZQUNnT21BQW9Fd2dBS0JNSUFDZ1RDQUFvRXBnQTZCS1lBT2dTbUFEb0VSUUFLQkVVQUNnUkZBQW9FSGdBT0JCNEFEZ1FlQUE0RUhnQU9CQ1VBWWdRbEFHSUVKUUJpQkdzQU9RUnJBRGtFYXdBNUJHc0FPUVJyQURrRWF3QTZCZU1BakFRbEFHMEVKUUJ0QkJULzFnUVUvOVlFRlAvV0JJWC9td1FJLzIwRS8vOTRBalAvZXdTdy85SUVZZjhzQk5MLzRnU0YvNXNFU0FBS0E4d0FDZ1FVLzlZRXd3QUtBZmNBR0FSRUFBb0Y0Z0FLQktZQU9nUlZBQW9FSlFCaUJDVUFiUVJHLzZRQjl3QVlCQ1VBYlFQTUFBb0RwZ0FLQkI0QURnSDNBQmdCOXdBWUE4TC84Z1JFQUFvRUx3QnlCSVgvbXdSSUFBb0RwZ0FLQTh3QUNnVElBQXNGNGdBS0JNTUFDZ1NtQURvRXZRQUtCRlVBQ2dSbkFEa0VKUUJpQkViL3BBUXZBQTBFd3dBS0JHY0FPZ1FsQUcwRjJnQTNCTWdBQ3dRdkFISUZmQUJEQlRUL3BBUTlBQ0lFYlFBbkJEUUFPd0lVLytRQUFBQUJBQUFFNUFrS0JBQUFBZ0lDQXdVRkJnWUNBd01FQlFJREFnUUZCUVVGQlFVRkJRVUZBZ0lFQlFVRUNBWUdCZ1lGQlFZR0F3VUdCUWdHQmdZR0JnVUZCZ1lJQmdVRkFnUUNCQVFEQlFVRkJRVURCUVVDQWdVQ0NBVUZCUVVEQlFNRkJBY0VCQVFEQWdNR0FnSUZCUVlGQWdVRUJ3UUVCUU1IQkFNRkF3TURCUVFEQWdNRUJBWUhCd1FHQmdZR0JnWUlCZ1VGQlFVREF3TURCZ1lHQmdZR0JnVUdCZ1lHQmdVRkJRVUZCUVVGQlFjRkJRVUZCUUlDQWdJRkJRVUZCUVVGQlFVRkJRVUZCQVVFQmdVR0JRWUZCZ1VHQlFZRkJnVUdCZ1lGQlFVRkJRVUZCUVVGQlFZRkJnVUdCUVlGQmdVR0JRTUNBd0lEQWdNQ0F3SUhCUVVDQmdVRkJRSUZBZ1VEQlFNRkF3WUZCZ1VHQlFVR0JRWUZCZ1VHQlFnSUJnTUdBd1lEQlFVRkJRVUZCUVVGQXdVREJRTUdCUVlGQmdVR0JRWUZCZ1VJQndVRUJRVUVCUVFGQkFJR0F3WUZCZ1VDQmdVR0JRWUZDQWNHQlFZRkJRVURBZ1lGQmdNR0JRVUZCUU1DQlFJRUJBUUVBZ01EQkFNREFBQUFBQUFBQXdVR0F3VUhBd1lHQmdNR0JnVUdCUVVHQmdNR0JnZ0dCUVlHQmdVRkJRY0dCZ1lEQlFVRkJRTUZCUVVFQlFVRkJRVURCUVVGQkFRRkJRVUZCUVVGQmdRR0J3TUZCUVVIQlFVRkJ3VUZCd1VHQlFNREJRa0pCd1lHQmdZR0JnWUZCd1VJQlFZR0JnWUlCZ1lHQmdZRkJnY0dCd1lJQ1FjSUJnWUlCUVVGQlFRRkJRY0ZCUVVGQlFjRkJRVUZCUVFFQmdRRkJRY0lCZ2NGQlFjRkJRVUZCQVVGQWdJQ0J3Z0ZCUVVFQlFnSEJnVUlCd1lGQ0FjSUJnb0pCUVFHQmdZRkJnUUdCQW9KQmdVSUJ3Z0hCZ1VHQUFBQUFBQUFCZ1VHQlFZRkJRUUZCQVVGQ0FjRkJRWUZCZ1VHQlFjR0JnVUpCZ2tJQndZR0JRVUVCUVFGQkFZRUNBWUdCUVlGQmdVSEJRY0ZBd2dIQmdVR0JRWUZCZ1VHQlFnSEF3WUZCZ1VJQndVRkJnVUdCUWdIQlFVRkJRWUZCZ1VHQlFZRkJnVUdCUVlFQmdRR0JBWUZCUVFJQndVRUJnUUdCQVlGQ0FnSEJnVUZDUWNKQndZRkJnWUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUZBZ2dJQ0FnR0JRWUZCZ01GQlFVREJnUUdCQWdIQ0FjSUJ3Z0hCUVFHQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkF3SURBZ1lGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQlFRRkJBVUVCUVFHQkFVSkJRa0RBZ0lGQWdJQkFBTURCZ2NIQkFJQ0FnSURBd01GQlFNRUJnSUlBZ01EQXdVRUF3UUZCUWNIQ1FnSEJRVUhCUVVHQmdZRUNRWUdCd2dIQndVR0JRVUZDUUlGQlFRRkJBTURBZ1lGQlFnSUJnY0FDUWtFQlFVRkJBVUZCUVVHQlFZR0JRVURCUU1EQXdNREF3TURBd01GQmdZRkJBY0ZCUVVGQlFVRkJRVUhCQVVFQWdVRkJBUUZCUVVGQWdRRUJBUUVCQVFFQlFVRkJnVUZBZ0lGQ0FnR0JRVUdCd1VGQlFVRkJnVUhDQVlIQlFVSEJRVUhCUVlHQndVRkJ3VUZCd1VGQlFVRUNRVUZCUVVFQlFVRkJRVUdCZ1lHQmdVRkJBVUZBd01EQXdNREF3VUZCd1VGQWdJQ0FnSUZCUVVGQlFVRkJRVUZCUVVFQkFRRUFnSUNBZ1VGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUVCQVFFQkFVRkJRVUZBZ0lDQWdJRUJRUUVCQVFGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJ3VUZCUVVGQlFVR0FnVUZCUVVGQkFVRkFnVUhCUVVGQlFVQ0JRUUVCUUlDQkFVRkJRVUVCQVVIQlFVRkJRVUZCUVVGQlFVSEJRVUdCZ1VGQlFJQUFBQURBQUFBQXdBQUFCd0FBd0FCQUFBQUhBQURBQW9BQUFLa0FBUUNpQUFBQUo0QWdBQUdBQjRBQUFBQ0FBMEFmZ0YvQVk4QmtnR2hBYkFCOEFIL0Foc0NOd0paQXJ3Q3h3TEpBdDBDOHdNQkF3TURDUU1QQXlNRGlnT01BNkVEemdQU0E5WUVoZ1VUSGdFZVB4NkZIdmtmVFNBTElCRWdGU0FlSUNJZ0p5QXdJRE1nT2lBOElFUWdkQ0IvSUtRZ3JDQ3hJTG9ndlNFRklSTWhGaUVpSVNZaExpRmVJZ0lpQmlJUEloSWlHaUllSWlzaVNDSmdJbVVseXU0QzlzUDdCUDcvLy8zLy93QUFBQUFBQWdBTkFDQUFvQUdQQVpJQm9BR3ZBZkFCK2dJWUFqY0NXUUs4QXNZQ3lRTFlBdk1EQUFNREF3a0REd01qQTRRRGpBT09BNk1EMFFQV0JBQUVpQjRBSGo0ZWdCNmdIMDBnQUNBUUlCTWdGeUFnSUNVZ01DQXlJRGtnUENCRUlIUWdmeUNqSUtZZ3NTQzVJTHdoQlNFVElSWWhJaUVtSVM0aFd5SUNJZ1lpRHlJUklob2lIaUlySWtnaVlDSmtKY3J1QWZiRCt3SCsvLy84Ly84QUFRQUEvL2IvNVAvRC83VC9zditsLzVqL1dmOVUvMGovTGY4TS9xcitvZjZnL3BMK2ZmNXgvbkQrYS81bS9sUDk4LzN5L2ZIOThQM3UvZXo5dy8zQzVOYmtxT1I0NUdMa0QrTmU0MXJqV2VOWTQxZmpWZU5ONDB6alIrTkc0ei9qRU9NRzR1UGk0dUxlNHRmaTF1S1A0b0xpZ09KMTRIUGlhdUkrNFp2ZmYrR1A0WTdoaCtHRTRYamhYT0ZGNFVMZDNoV29ET2dJckFTMEE3Z0FBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0FBQUFBQTdnQUFBQUFBQUFBVGdBQUFBQUFBQUFBQUFBQUFRQUFBQUlBQUFBQ0FBQUFBZ0FBQUEwQUFBQU5BQUFBQXdBQUFDQUFBQUIrQUFBQUJBQUFBS0FBQUFGL0FBQUFZd0FBQVk4QUFBR1BBQUFCUXdBQUFaSUFBQUdTQUFBQlJBQUFBYUFBQUFHaEFBQUJSUUFBQWE4QUFBR3dBQUFCUndBQUFmQUFBQUh3QUFBQlNRQUFBZm9BQUFIL0FBQUJUZ0FBQWhnQUFBSWJBQUFCWUFBQUFqY0FBQUkzQUFBQlpBQUFBbGtBQUFKWkFBQUJaUUFBQXJ3QUFBSzhBQUFCWmdBQUFzWUFBQUxIQUFBQlp3QUFBc2tBQUFMSkFBQUJhUUFBQXRnQUFBTGRBQUFCYWdBQUF2TUFBQUx6QUFBQmNBQUFBd0FBQUFNQkFBQUJjUUFBQXdNQUFBTURBQUFCY3dBQUF3a0FBQU1KQUFBQmRBQUFBdzhBQUFNUEFBQUJkUUFBQXlNQUFBTWpBQUFCZGdBQUE0UUFBQU9LQUFBQmR3QUFBNHdBQUFPTUFBQUJmZ0FBQTQ0QUFBT2hBQUFCZndBQUE2TUFBQVBPQUFBQmt3QUFBOUVBQUFQU0FBQUJ2d0FBQTlZQUFBUFdBQUFCd2dBQUJBQUFBQVNHQUFBQnd3QUFCSWdBQUFVVEFBQUNTZ0FBSGdBQUFCNEJBQUFDMWdBQUhqNEFBQjQvQUFBQzVnQUFIb0FBQUI2RkFBQUMrQUFBSHFBQUFCNzVBQUFEQWdBQUgwMEFBQjlOQUFBRFhBQUFJQUFBQUNBTEFBQURYZ0FBSUJBQUFDQVJBQUFEYWdBQUlCTUFBQ0FWQUFBRGJBQUFJQmNBQUNBZUFBQURid0FBSUNBQUFDQWlBQUFEZHdBQUlDVUFBQ0FuQUFBRGVnQUFJREFBQUNBd0FBQURmUUFBSURJQUFDQXpBQUFEZmdBQUlEa0FBQ0E2QUFBRGdBQUFJRHdBQUNBOEFBQURnZ0FBSUVRQUFDQkVBQUFEZ3dBQUlIUUFBQ0IwQUFBRGhBQUFJSDhBQUNCL0FBQURoUUFBSUtNQUFDQ2tBQUFEaGdBQUlLWUFBQ0NzQUFBRGlBQUFJTEVBQUNDeEFBQURqd0FBSUxrQUFDQzZBQUFEa0FBQUlMd0FBQ0M5QUFBRGtnQUFJUVVBQUNFRkFBQURsQUFBSVJNQUFDRVRBQUFEbFFBQUlSWUFBQ0VXQUFBRGxnQUFJU0lBQUNFaUFBQURsd0FBSVNZQUFDRW1BQUFCbVFBQUlTNEFBQ0V1QUFBRG1BQUFJVnNBQUNGZUFBQURtUUFBSWdJQUFDSUNBQUFEblFBQUlnWUFBQ0lHQUFBQmhRQUFJZzhBQUNJUEFBQURuZ0FBSWhFQUFDSVNBQUFEbndBQUlob0FBQ0lhQUFBRG9RQUFJaDRBQUNJZUFBQURvZ0FBSWlzQUFDSXJBQUFEb3dBQUlrZ0FBQ0pJQUFBRHBBQUFJbUFBQUNKZ0FBQURwUUFBSW1RQUFDSmxBQUFEcGdBQUpjb0FBQ1hLQUFBRHFBQUE3Z0VBQU80Q0FBQURxUUFBOXNNQUFQYkRBQUFEcXdBQSt3RUFBUHNFQUFBRHJRQUEvdjhBQVA3L0FBQURzd0FBLy93QUFQLzlBQUFEdExBQUxFdXdDVkJZc1FFQmpsbTRBZitGc0lRZHNRa0RYMTR0c0FFc0lDQkZhVVN3QVdBdHNBSXNzQUVxSVMyd0F5d2dSckFESlVaU1dDTlpJSW9naWtsa2lpQkdJR2hoWkxBRUpVWWdhR0ZrVWxnalpZcFpMeUN3QUZOWWFTQ3dBRlJZSWJCQVdSdHBJTEFBVkZnaHNFQmxXVms2TGJBRUxDQkdzQVFsUmxKWUk0cFpJRVlnYW1Ga3NBUWxSaUJxWVdSU1dDT0tXUy85TGJBRkxFc2dzQU1tVUZoUldMQ0FSQnV3UUVSWkd5RWhJRVd3d0ZCWXNNQkVHeUZaV1Myd0Jpd2dJRVZwUkxBQllDQWdSWDFwR0VTd0FXQXRzQWNzc0FZcUxiQUlMRXNnc0FNbVUxaXdRQnV3QUZtS2lpQ3dBeVpUV0NNaHNJQ0tpaHVLSTFrZ3NBTW1VMWdqSWJEQWlvb2JpaU5aSUxBREpsTllJeUc0QVFDS2lodUtJMWtnc0FNbVUxZ2pJYmdCUUlxS0c0b2pXU0N3QXlaVFdMQURKVVc0QVlCUVdDTWh1QUdBSXlFYnNBTWxSU01oSXlGWkd5RlpSQzJ3Q1N4TFUxaEZSQnNoSVZrdHNBb3NzQ2xGTGJBTExMQXFSUzJ3REN5eEp3R0lJSXBUV0xsQUFBUUFZN2dJQUloVVdMa0FLUVBvY0ZrYnNDTlRXTEFnaUxnUUFGUll1UUFwQStod1dWbFpMYkFOTExCQWlMZ2dBRnBZc1NvQVJCdTVBQ29ENkVSWkxiQU1LN0FBS3dDeUFRMENLd0d5RGdFQ0t3RzNEam93SlJzUUFBZ3JBTGNCT0M0a0doRUFDQ3UzQWs1QU1pTVZBQWdydHdOSU95NGhGQUFJSzdjRVRrQXlJeFVBQ0N1M0JUQW9IeFlPQUFncnR3WmpVVDh0R3dBSUs3Y0hRRFFrR2hFQUNDdTNDRnRLT2lrWkFBZ3J0d21EWkU0Nkl3QUlLN2NLZDJKTU5pRUFDQ3UzQzVGM1hEb2pBQWdydHd4MllFczJIUUFJSzdjTkxDUWNGQXdBQ0NzQXNnOE5CeXV3QUNCRmZXa1lSTEt3RXdGenNsQVRBWFN5Z0JNQmRMSndFd0Yxc2c4ZkFYT3lieDhCZFFBcUFNd0FrUUNlQUpFQTdBQnlBTElBZlFCV0FGOEFUZ0JnQVFRQXhBQUFBQlQrWUFBVUFwc0FFUDg1QUEzK2x3QVNBeUVBQ3dRNkFCUUVqUUFRQmJBQUZBWVlBQlVHd0FBUUFsc0FFZ2NFQUFVQUFBQUFBQUFBQUFCZ0FHQUFZQUJnQUdBQW5RRElBVVlCMVFLREF4WURNUU5nQTRzRHZnUG1CQVVFSEFSRkJGd0V2UVRzQlVVRndBWUdCbkVHNGdjUUI1a0lDQWdVQ0NBSVFRaHBDSW9JK1FtMUNmVUtZd3JEQ3hNTFZndU9DL2dNT3d4V0RKQU0yUXorRFZnTmxnMzZEa29PdFE4UkQ0Y1Bzdy81RUNvUWVSRERFUFVSTHhGVkVXd1JreEc2RWRVUjlSS0NFdTBUUXhPckZDY1VmeFVNRlZZVmxCWG1GaThXU3hiREZ4SVhiUmZhR0VzWWl4a0VHVndacWhuYUdpa2FjUnExR3U4YlBSdFVHNkliNXh2bkhDUWNpQnoySFdNZHloM3JIb3Nld2g5M0gvQWYvQ0FhSUNJZzVpRDlJVDhoaENIZElsSWljaUxFSXZNakZ5TkpJM2dqelNQWkkvTWtEU1FuSkpna3J5VEdKTjBrN3lVQ0pSVWxlaVdHSlowbHRDWExKZDRsOVNZTUppTW1OaWFqSnJVbXpDYmVKdkFuQWljVkoxRW56eWZtSi8wb0ZDZ3NLRU1vbXlrUUtTY3BQaWxVS1dvcGdpbWFLbjhxaXlxaUtya3F6eXJtS3Z3ckVpc3BLMEVydXl2UksrZ3IveXdWTENzc1BTeVpMUmN0TGkxQUxWRXRaQzEyTGRrdDZ5NENMaE11SlM0M0xxY3ZWaTlvTDNvdmpDK2RMNjh2d1MvVEwrUXYrekFITUhRdy9ERVRNU1F4TmpGSE1Wa3hhekhmTW40eWxUS21Ncmd5eVRMYk11d3kvak1RTXh3ekxqTkZNMWN6dWpRa05EWTBTRFJmTkhZMGlEU2FOS1Uwc0RUQ05OMDA2VFQxTlFjMUhqVXFOVFkxaERXYk5iSTF2alhLTmQ4MTd6WDdOZ2MyVXphVE5xbzJ2RGJJTnRRMjZ6YjhOd3czYURmTE45MDM3amdBT0JJNEpUZzRPTVk1Z3ptVk9hYzVzem0vT2RFNTRqbjBPZ1k2R0RvcE9qVTZRVHBUT21RNmNEcDhPcE02bnpybE8xZzdhanQ3TzQwN25qdXdPOEk3MVR2b08vczhEang1UFBJOUNUMGdQVGM5VFQxZ1BYYzlqajJnUGJJOXhEM1ZQZ28rZkQ3blAySS8xa0F6UUpsQXEwQzlRTTlBNWtEOVFRbEJGVUVzUVQ1QlZVRnNRWVJCbkVHMFFjeEI1RUg4UWhSQ0xFSkVRbHhDZEVLTVFwaENwRUt3UXJ4QzYwTlZRMkZEbkVQRVE4eEQvRVFpUkdGRWprVFZSUXRGVVVWd1JaQkZtVVhMUmYxR0hrWTNSb2xHbEVhY1JxaEd0RWJBUnN4RzJFYmtSdnBIQWtjS1J6RkhYa2RtUjI1SGRrZ0FTQWhJRUVnOVNFVklUVWlQU0pkSXgwalBTUTFKRlVrZFNadEpvMG9EU25KS2hVcVlTcXBLdkVyT1N0OUs5RXQrUy9sTUxVeXRUVDVObTAzcVRuRk9vazZxVHdWUERVOFZUNHhQbEUvc1VFOVF0MUVuVVc5UnVsSXFVakpTbEZNUFV5SlRORk5HVTFoVGFsUHFWRVJVVUZUUFZPWlUrVlZoVlhoVjkxWnRWblZXaUZhUVZ3NVhoVmZnVi9kWURsZ2dXRjlZWjFqRFdNdFkwMWtzV1RSWm9Wb3BXbVJhZGxwK1dzcGEwbHJhV3VKYTZscnlXdnBiQWx0SFc4SmJ5bHdDWEVsY2lWelZYVEJkbUYzcFhtbGU5VjlWWDExZjIyQmNZSU5nM0dEa1lWTmg2V0lrWWpaaWlHTFJZeHhqZFdOOVk2MWp0V1FMWkRoa1FHVGdaT2hsSUdWb1phaGw4R1pMWnJGbkFHZHpaLzVvWFdoMGFJWnBCV2tjYVlWcGpXbVZhYWhwc0dvcGFxQnJDbXNoYXpoclNXdUlhL2xzWld6U2JVQnR5MjVZYnFWdTlHOWhiOUJ3U0hDNmNVeHgzSEo1Y3loek1ITTRjN1YwSlhScGRLNTB4blRlZE9wMDluVnFkZGgyczNlSWVCaDRxSGtGZVY5NWszbXdlZWw2QUhvWGV2SjdZWHQ4ZTVkOEJIeHpmTTk5UzMxN2ZhVjk1bjRvZm9SKzAzN2ZmdXQrOTM4RGZ3OS9HMzkxZjh5QUxJQ0tnTnlCTTRFL2dVdUJtSUhwZ2srQ3FZTlVnKytEKzRRSGhCT0VINFFuaEMrRWU0VExoTmVFNDRVc2hYS0Zmb1dLaGVHR01ZWjJobjZIQUllTmg1bUhwWWV0aDcrSDBZZ3ppSTZJbW9pbWlRbUpaNGx6aVgrSmk0bVhpYU9KcjRtM2ljbUoyNG51aWdHS0NZb1JpaU9LTklxbmlxK0t3b3JVaXVlSytvc05peCtMaG92bmkvNk1GSXduakRxTVRZeGZqR2VNYjR5Q2pKU01wNHk1ak11TTNJenZqUUdORkkwc2pUK05VWTFkaldtTmhZMmhqYkNOd0kzTWpkaU9NbzZKanR5TzVJOU9qK2VRWTVEYWtVMlJ1NUl1a3AyVEVKT0NrK09VT3BTVGxPcVZiNVYzbFlPVmo1V2JsYWVWczVXL2xjdVYxNVhqbGUrVis1WUhsaG1XSzVZM2xrT1dUNVpibG5LV2hKYVFscHlXcUphMGxzYVcySmJrbHZDVy9KY0lseFNYSUpjeWwwT1hUNWRibDNLWGlaZWdsN2VYeXBmZGwrbVg5WmdCbUEyWUdaZ2xtRGVZU1poaG1IaVlrSmlubUwrWTFwanVtUVdaSUprNm1WS1phWmw4bVk2Wm9abXptY2FaMkpuem1nNmFHcG9tbWppYVNwcGNtbTJhaFpxY21yU2F5NXJqbXZxYkVwc3BtMFNiWHB0d200S2JqcHVhbTZhYnNwdkVtOWFiN3B3Rm5CMmNOSnhNbkdPY2U1eVNuSzJjeDV6ZW5QV2RESjBqblRxZFVaMW9uWDZkaXAyV25hS2RycDNGbmR5ZDg1NEtuaUdlT0o1UG5tYWVmWjZUbnArZXE1N0NudGllNUo3d253S2ZGSjhtbnplZlE1OXZuMitmYjU5dm4yK2ZiNTl2bjIrZmI1OXZuMitmYjU5dm4zZWZmNStKbjVPZm5aKzRuOXFmL0tBYm9EMmdTYUJWb0lpZ3lhRXVvVk9oWDZGdm9ZaWljcUtCb3BpaXRLTFJvdDJpOEtNRW8wK2pXNlBxcEpPbExxVTZwZ3ltZDZhUnB4aW4xS2czcUxpcEY2bU1xajJxcXF0SXE2bXNFNnd0ckVlc1lheDdyUFN0SEsxV3JXMnRvcTVCcm9pdS82OUFyMCt2WHErWHI2cXYxSy90ci9td2FMREtzWEt5RHJLYXMzQ3pjTFUydForMTZyWWJ0cGkyenJiNXQzTzMzcmhkdUtDNDVMa3N1WGE1N2Jwa3V5aTdmTHV2dkJ5OHJMelp2VUc5cXIzdnZtUyt2TDdtdnppL2ZML3R3RTNBdU1EUHdSckJTc0dOd2JuQ01jS013dS9EUGNPZXc5akVLOFJReEpYRXk4VG14VVBGcjhYcXhpL0dmY2JaeDJqSHBzZkZ5QlBJV3NpZ3lQN0pkTW5EeWlUS21jcmp5eFRMajh2eHpCN01xTXpaek8vTkJjMTZ6ZkRPU002S3p1YlBQYys2MEJ2UVdkQ3owUGZSUU5GNzBjTFIvZEkrMHByU3B0TDMwMi9UL05SYTFKL1ZKOVdPMWZmV1hOYnoxdi9YVXRlaDEvWFlQZGl4MlJyWmdOb0EycGpiSWR2RDNFVGNzZDBKM1hQZGU5M2Mza1hlczk4dDM3VGdGT0NENE5QaFB1R3Q0ZGppTStKaDRyN2pDT01jNHpEalF1Tlc0MmpqZitPVDQvYmtIZVNuNVJqbGR1Vis1WWJsanVXWjVhSG1EK1k2NW1YbWRlYU01cVBtdWViSzV0M204T2I4NXdqbkgrYzI1MHpuWHVkMDU0cm5vZWUwNThibjNlZnY2QURvRXVnbDZEem9ST2hNNkZUb1hPaGs2R3pvZnVpUDZLTG91ZWpQNk9IcFZlbG42WGpwaXVtYjZiSHB4K25ZNmVycVh1cDA2b1hxbCtxcDZyWHF5K3JkNnZUckJ1c1I2eUxyT2V0RjYxdnJaK3Q4NjRqcm4rdXI2OExyMCt2bDYvanNDdXdXN0Nmc09leEs3RmJzWit4ejdJbnNsZXltN0xmc3llemM3Ty90V2UxdzdZYnRtTzJ2N2NIdCsrNEg3aFB1SCs0cjdqZnVRKzVQN2xmdVgrNW43bS91ZCs1LzdvZnVqKzZYN3AvdXArNnY3cmZ1eXU3Yzd1N3ZBTzhJN3hEdkkrOHI3ejN2VCs5WDcxL3ZaKzl2NzRIdmllK1I3NW52b2UrcDc3SHZ1ZS9COEYzdzB2RTY4VUx4VHZGZzhYSHhlZkdGOFpIeG5mR3A4YlVBQUFBRkFHUUFBQU1vQmJBQUF3QUdBQWtBREFBUEFHK3lEQkFSRVJJNXNBd1FzQURRc0F3UXNBYlFzQXdRc0FuUXNBd1FzQTNRQUxBQVJWaXdBaThic1FJZlBsbXdBRVZZc0FBdkc3RUFEejVac2dRQ0FCRVNPYklGQWdBUkVqbXlCd0lBRVJJNXNnZ0NBQkVTT2JBSzNMSU1BZ0FSRWpteURRSUFFUkk1c0FJUXNBN2NNREVoSVJFaEF4RUJBUkVCQXlFQk5RRWhBeWo5UEFMRU52N3Uvcm9CRE9RQ0EvNytBUUw5L1FXdytxUUZCLzE5QW5mN0VRSjQvVjRDWG9nQ1hnQUNBRGYvN3dJZ0JiQUFBd0FPQUR1eUFnOFFFUkk1c0FJUXNBdlFBTEFBUlZpd0FpOGJzUUlmUGxtd0FFVllzQXd2RzdFTUR6NVpzZ2NOQ2l0WUlkZ2I5Rm13QWRDd0FTOHdNUUVqRXpNQk5EWTNOaFlVQmdjR0pnRld6Sno2L2hkTE9qbE9Tem8zVUFHdEJBUDZ2enRNQWdKS2Nrc0NBa2NBQUFJQW9RUDBBc0lHQUFBRUFBa0FKUUN3QUVWWXNBTXZHN0VESVQ1WnNBTFFzQUl2c0FmUXNBY3ZzQU1Rc0FqUXNBZ3ZNREVCQXlNVE13VURJeE16QVlkY2lsT3FBUTFjaWxPcUJXeitpQUlNbFA2SUFnd0FBZ0E3QUFBRTVRV3dBQnNBSHdDTkFMQUFSVml3REM4YnNRd2ZQbG13QUVWWXNCQXZHN0VRSHo1WnNBQkZXTEFDTHh1eEFnOCtXYkFBUlZpd0dpOGJzUm9QUGxteUhRd0NFUkk1c0IwdnNnQURDaXRZSWRnYjlGbXdCTkN3SFJDd0J0Q3dIUkN3QzlDd0N5K3lDQU1LSzFnaDJCdjBXYkFMRUxBTzBMQUxFTEFTMExBSUVMQVUwTEFkRUxBVzBMQUFFTEFZMExBSUVMQWUwREF4QVNNREl4TWpOek1USXpjaEV6TURNeE16QXpNSEl3TXpCeU1ESXdNekV5TUNsdE9ScXBIZUhQcHY2UndCQlpXcGxkU1VxWlRISE9SdTFCenhrYWtKMDIvVEFacitaZ0dhbmdFNW53R2cvbUFCb1A1Z24vN0hudjVtQWpnQk9RQUFBUUJDL3kwRVVRYWJBRFVBYjdJbk5qY1JFamtBc0FCRldMQVFMeHV4RUI4K1diQUFSVml3Snk4YnNTY1BQbG15QkNjUUVSSTVzQkFRc0EzUXNoVW5FQkVTT2JBUUVMSVlBUW9yV0NIWUcvUlpzQVFRc2g4QkNpdFlJZGdiOUZtd0p4Q3dLdEN5TGhBbkVSSTVzQ2NRc2pJQkNpdFlJZGdiOUZrd01RRTJKeVluSmlZbkpqYzJOelkzTnpNSEZoY1dCeU0ySmljbUJnY0dGeFlYRmhjV0J3WUhCZ2NISXpjbUp5WTNGd1lXRnhZM05nTCtDU2tvZGp0ZUpLb09DM0p4dFNpZEtaVktUQXJzQ1ZSWVhYd05DU2dvZEhVK3VBOExkM1c5Skp3bHAxbFlDZTBIWldOcVIwa0JnMHc0T1RFWk14eUJ6NnBzYlJYYTNpQjRlcjZBakFNQ2IyTk5OVFl6TkN5QzJxMXJhUlREeEJsNmViOEJnSVlDQWprNkFBVUF0Zi9uQlQ0RnlBQU5BQnNBS1FBM0FEc0FpYkluUEQwUkVqbXdKeEN3QmRDd0p4Q3dGdEN3SnhDd0s5Q3dKeEN3T05BQXNEZ3ZzRG92c0FCRldMQUFMeHV4QUI4K1diQUFSVml3SXk4YnNTTVBQbG13QUJDd0I5Q3dCeSt5RVFJS0sxZ2gyQnYwV2JBQUVMSVlBZ29yV0NIWUcvUlpzQ01Rc0J6UXNCd3ZzQ01Rc2kwQ0NpdFlJZGdiOUZtd0hCQ3lOQUlLSzFnaDJCdjBXVEF4QVJZV0J3Y0dCaWNtSmpjM05qWURCaFlYRmpZM056WW1KeVlHQndFV0ZnY0hCZ1luSmlZM056WTJBd1lXRnhZMk56YzJKaWNtQmdjRkp3RVhBZytEa2dnR0Q3bUNmcGtJQncyM0pBYzRPanhZQ3drSE9EczlXZ2dDdllLVENBWU91b0o4bWdZRkM3a2lCVG8zUFZVTUNnVTZOMEJZQ1AzeGVBTnZlQVhHQktxQVRZbW1CQUtxZjBxSnF2NkJRRmNDQWxkR1RrRllBZ0pkU3Y0Q0JLcCtUb2VwQkFLbWhFR09yZjZDUlZNQ0FsTkxUMGhRQWdKZFNPNVBCR2RQQUFNQUxmL3BCS0VGeUFBZUFDZ0FOQUJ5c2kwMU5oRVNPYkF0RUxBUjBMQXRFTEFoMEFDd0FFVllzQWt2RzdFSkh6NVpzQUJGV0xBWUx4dXhHQTgrV2JBQVJWaXdIQzhic1J3UFBsbXlFZ2tZRVJJNXNoVUpHQkVTT2JJZkFRb3JXQ0hZRy9SWnNpTUpHQkVTT2JJc0NSZ1JFam13Q1JDeU1nRUtLMWdoMkJ2MFdUQXhFelkzTnlZbU56WTJGeDRDQndZR0J3Y1ROamMzQWdjWElTY0dKeVltQlJZMk53TUhCZ2NHRmhNR0Z4YzNOamMySmlNaUJqZ014bkk5S0FRTTVLeGRsbEFGQldsMmVkWlRGY3NZb0tIKy9qMnd4N3ZzQWJkRWVEanpJb2tSREdod0NqQVhZNEVNQmtnM1NHUUJnYmFNUzNDTlA2clVCQU5Ta1ZkYW5WSlEvcng4a0FIKzhLMzZYM1lFQXQ0ZUFUUWpBWEVXWUhkZ2VBT2dSVndxUGxKcU9VbHBBQUVBa0FQOEFaWUdBQUFFQUJZQXNBQkZXTEFETHh1eEF5RStXYkFDMExBQ0x6QXhBUU1qRXpNQmdWU2RVYlVGZC82RkFnUUFBQUVBYVA0eEF5QUdZQUFSQUJDeUJoSVRFUkk1QUxBREw3QU1MekF4RXhJQU54Y0FBd1lIQmhJWEJ5WUNFelkzZ0RVQlQvZ2svcXBtSlFFQ1pHSTRxN2NJQWd3Q1RBRnRBamx1a1A3NC9jek92OHYrMFZlRmFnSEFBU3BnVmdBQi81VCtMd0pRQmw4QUR3QVFzZ2tRRVJFU09RQ3dDQyt3QUM4d01RTW5OaElUTnhBbk54WVdFZ2NDQWdCSEpkVHdHZ1RFT1hPalR3UUpzLzdlL2krS3BRSXZBWDk4QWFXc2hrYjkvcVMxL3VuOTlmNlhBQUVBWndKTEE2VUZzQUFPQUNBQXNBQkZXTEFFTHh1eEJCOCtXYkFBMEJtd0FDOFlzQW5RR2JBSkx4Z3dNUUVsTndVVE13TWxGd1VUQndNREp3Ri8vdWhQQVJjdHNFc0JMaGord1plVmZOeUdBOUZZb1hjQlhmNm9jTFJZL3ZGaUFTSCs3RzRBQUFFQVBRQ1NCQzRFdGdBTEFCb0FzQWt2c0FEUXNBa1FzZ1lCQ2l0WUlkZ2I5Rm13QTlBd01RRWhCeUVESXhNaE55RVRNd0s5QVhFbi9wQkw1MHorakNnQmNrYm5BeUhlL2s4QnNkNEJsUUFBQWYrSi9yZ0JGQURyQUFjQUdMSUhDQWtSRWprQXNBZ3ZzZ1FOQ2l0WUlkZ2I5Rmt3TVJNbk5qYzNNd2NHQ0g5Mkd5WFZHaWordUZDZWQ4Nmg5d0FCQURZQ0NRSllBczBBQXdBUkFMQUNMN0lCQVFvcldDSFlHL1JaTURFQklUY2hBalgrQVNNQi93SUp4QUFBQVFBdy8vSUJRd0VEQUFzQUlySUlEQTBSRWprQXNBQkZXTEFKTHh1eENROCtXYklERFFvcldDSFlHL1JaTURFM05EWTNOaFlWRkFZSEJpWXdUVHc3VDB3OU8wOTFQVTBDQWtzN09rMENBa29BQUFIL2YvK0RBNElGc0FBREFCTUFzQUF2c0FCRldMQUNMeHV4QWg4K1dUQXhGeU1CTTBQRUF6N0ZmUVl0QUFBQ0FHRC81d1E2QmNrQUVRQWdBRWF5RnlFaUVSSTVzQmNRc0FEUUFMQUFSVml3Q1M4YnNRa2ZQbG13QUVWWXNBQXZHN0VBRHo1WnNBa1FzaFlCQ2l0WUlkZ2I5Rm13QUJDeUhnRUtLMWdoMkJ2MFdUQXhCU1ltTnpZM0V4SUFGeFlXQndZSEJ3SUFFelkxSmljbUJnY0RCaGNVRnhZVEFkKzl3Z01CQ1NjeEFSamV2TU1EQVFrbk0vN3JpQTBGb0hxVUhpNE1BYVRpUVJRRS9lUktTZ0VFQVRJQkxnVUUrT1JMU2YzK3gvN05BNUJ5TU9JSEJiek4vc05uUE9vSERRRnVBQUVBN3dBQUEzZ0Z0UUFHQURrQXNBQkZXTEFGTHh1eEJSOCtXYkFBUlZpd0FDOGJzUUFQUGxteUJBQUZFUkk1c0FRdnNnTUJDaXRZSWRnYjlGbXlBZ01GRVJJNU1ERWhJeE1GTnlVekFvSHN5djZRSlFKQUpBU01ldGZNQUFBQkFBc0FBQVEvQmNjQUdBQlZzZ2taR2hFU09RQ3dBRVZZc0JBdkc3RVFIejVac0FCRldMQUFMeHV4QUE4K1diSURFQUFSRWptd0VCQ3lDQUVLSzFnaDJCdjBXYklNRUFBUkVqbXlGUkFBRVJJNXNBQVFzaGNCQ2l0WUlkZ2I5Rmt3TVNFaE53RTJOelltSnlZR0J3YytBaGNXRmdjR0J3Y0JJUVBDL0VrY0FsMnBFUTFhV20rWUVPd0tqKzJLdnQwTkVlUSsvbHNDaDdFQ1JhV0dYMzhFQkpOL0FZYldkd01FMUxMTTR6MytkQUFBQVFBbS8rZ0VPUVhGQUNvQVo3SUlLeXdSRWprQXNBQkZXTEFQTHh1eER4OCtXYkFBUlZpd0d5OGJzUnNQUGxtd0FkQ3dBUyt3RHhDeUJ3RUtLMWdoMkJ2MFdiQVBFTEFMMExBQkVMSXBBUW9yV0NIWUcvUlpzaFVwQVJFU09iQWJFTEFnMExBYkVMSWpBUW9yV0NIWUcvUlpNREVCRnpJMk56WW1KeVlHQndjK0FoY1dGZ2NHQmdjV0Z4VUdCQ2N1QWpjWEJoWVhGalkzTmlZbkp3R2dnWFdjQ3d0ZVhWNktEdTBKaU50L3crRU5CNFovclFzTi90bldlOFJwQk93RVoyTnRtUXdNYzJ5WkEwY0JmbWxqY1FJQ2NsMEJkYmhqQVFUYnVHU25QRkRHTU1UMEJBRm51M2dCWUhVREJJaHViM1FEQVFBQUFnQUpBQUFFS2dXd0FBb0FEZ0JKQUxBQVJWaXdDUzhic1FrZlBsbXdBRVZZc0FRdkc3RUVEejVac2dFSkJCRVNPYkFCTDdJQ0FRb3JXQ0hZRy9SWnNBYlFzQUVRc0F2UXNnZ0dDeEVTT2JJTkNRUVJFamt3TVFFekJ5TURJeE1oTndFekFTRVRCd042c0NLdk9lMDQvWjRWQXdMOS9RY0JhWEVZQWdmRC9yd0JSS0FEelB4WEFtTWlBQUFCQUZyLzV3UnpCYkFBSFFCcXNob2VIeEVTT1FDd0FFVllzQUV2RzdFQkh6NVpzQUJGV0xBTkx4dXhEUTgrV2JBQkVMSURBUW9yV0NIWUcvUlpzZ2NCRFJFU09iQUhMN0lhQVFvcldDSFlHL1Jac2dVSEdoRVNPYkFORUxJVUFRb3JXQ0hZRy9SWnNoRVVHaEVTT2JJZEdoUVJFamt3TVJNVElRY2hBell6RmhJSEJnQW5KaVluTXhZV0Z4WTJOelltSnlZR0I3cS9Bdm9oL2M5blpuaTV4eElTL3R6WHR1TUc0d2RsVzIrWER3eHFhVUJsTUFMVkF0dlMvcU02QXY3MDFkdis2Z1FFNHJsbWN3SURxSXg4bVFJQ0xTZ0FBZ0JqLytnRUV3VzRBQmNBSlFCYnNoa21KeEVTT2JBWkVMQUcwQUN3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFQTHh1eER3OCtXYkFBRUxJQ0FRb3JXQ0hZRy9SWnNnY0FEeEVTT2JBSEw3SVlBUW9yV0NIWUcvUlpzQThRc2lBQkNpdFlJZGdiOUZrd01RRUhKeVlFQnpZWEhnSUhEZ0luSmlZbkpqY1NBQ0VCSmdZSEJoY1VGaGNXTmpjMkpnUE1GQTNBL3VaUWhLbDFwRXdNREk3bGlLM1lEd2tnUVFHcEFVait0RkNNTUFzQlhsaHNsdzhOWUFXNHlnRUMwOWFBQkFKLzNZS083WUVEQk83Q2E3TUJaUUdXL1VrQ1dWSmxLNENXQWdPb2lIK2lBQUVBaGdBQUJKd0ZzQUFHQURJQXNBQkZXTEFGTHh1eEJSOCtXYkFBUlZpd0FTOGJzUUVQUGxtd0JSQ3lBd0VLSzFnaDJCdjBXYklBQXdVUkVqa3dNUUVCSVFFaE55RUVoZjBFL3YwQytmMHFId1BVQlIzNjR3VHR3d0FBQXdBNy8rZ0VSUVhJQUJZQUlnQXVBR3V5R2k4d0VSSTVzQm9Rc0JMUXNCb1FzQ2ZRQUxBQVJWaXdFeThic1JNZlBsbXdBRVZZc0Fndkc3RUlEejVac0N6UXNDd3ZzaG9CQ2l0WUlkZ2I5Rm15QWl3YUVSSTVzZzBhTEJFU09iQUlFTElnQVFvcldDSFlHL1Jac0JNUXNpWUJDaXRZSWRnYjlGa3dNUUVHQnhZV0J3WUVKeVltTnpZbEppWTNOaVFYSGdJQk5pWW5KZ1lIQmhZWEZqWVROaVluSmdZSEJoWVhGallFUEJMdVdWY0lEZjdnMWNMbERSSUJFVXRJQmc0QkRNZDN0VnIrdFF0a1htcVdEQXRtWFd5VFlBbFZVMXVCQ3dsV1VWeUJCRGpaZHptd2FzRHRCQVRmdGZOOU5xRmN2T1VFQTJTMC9QaGxnd0lDajIxbmV3SUNpZ0w3V25ZQ0FvQm1YbklDQW9JQUFBSUFqdi81QkM4RnlBQVlBQ1lBV0xJWkp5Z1JFam13R1JDd0ZkQUFzQUJGV0xBTkx4dXhEUjgrV2JBQVJWaXdGaThic1JZUFBsbXlBQUVLSzFnaDJCdjBXYklGRmcwUkVqbXdCUyt5R1FFS0sxZ2gyQnYwV2JBTkVMSWhBUW9yV0NIWUcvUlpNREUzRmlRM0JpY3VBamMrQWhjZUFoY1dCd0lBSVNNM0FSWTJQd0kySmljbUJoY1dGdmZVQVFwQ2lKaHhwbElNRFkva2gzV3RZQWNGSEVEK1hQNjhGaE1CU2txRU1BMEVBMWhZZmFBUEIxckNBdEhSaEFJQ2QrQ0lrZktFQkFOeDBZRnJvUDZPL25qS0Fkb0NWVXRoUm9LWkJBVDRxRmxzLy84QUsvL3lBZEFFVkFBbUFCTDdBQUFIQUJJQWpRTlIvLy8vbXY2NEFid0VWQUFuQUJJQWVRTlJBQVlBRUJFQUFBRUFNZ0NxQThNRVZBQUdBQmV5QUFjSUVSSTVBTEFBUlZpd0JTOGJzUVViUGxrd01RRUZCd0UzQVFjQk1nSVdLZjBUSWdOdkxRSnk0T2dCZGNFQmRQNEFBQUlBWWdGa0JCUUQxZ0FEQUFjQUpRQ3dCeSt3QTlDd0F5K3lBQUVLSzFnaDJCdjBXYkFIRUxJRUFRb3JXQ0hZRy9SWk1ERUJJVGNoQXlFM0lRUHgvTG9rQTBWdC9Mc2pBMFlERE1yOWpza0FBUUF2QUo4RDJRUkpBQVlBRjdJQUJ3Z1JFamtBc0FCRldMQUNMeHV4QWhzK1dUQXhBU1UzQVFjQk53TGIvYzhvQXdjaS9IZ3NBb0hqNWY2THdmNk0rZ0FBQWdDVi8vRUQzd1hKQUJnQUpBQmVzaDRsSmhFU09iQWVFTEFLMEFDd0FFVllzQkF2RzdFUUh6NVpzQUJGV0xBaUx4dXhJZzgrV2JJY0RRb3JXQ0hZRy9SWnNBRFFzQUF2c2dRUUFCRVNPYkFRRUxJSkFRb3JXQ0hZRy9SWnNnMFFJaEVTT2JJVkFCQVJFamt3TVFFK0FqYzJKeVltSnlZR0J3YzJKQmNXRmdjR0J3Y0dCd0UwTmpjMkZoVVVCaU1HSmdFL0RGM0xIMTRTQ0VnNVVuRVI3QkVCQUw2eHlnNFB2WHBlRlA3V1N6bzRUazgyT0U0QnEzMndyQ1JzZGpROUFRSmpWUUd5MGdRRXpxcXhvMlpXamY3Rk8wd0NBa281UFVrQ1J3QUFBZ0F5L2pzR3BBV1RBRHNBUndCOHNoNUlTUkVTT2JBZUVMQkYwQUN3S3krd05DK3dBRVZZc0FBdkc3RUFEejVac0FCRldMQUZMeHV4QlE4K1diSUROQUFSRWpteUREUUFFUkk1c0F3dnNBQVFzajRFQ2l0WUlkZ2I5Rm13Rk5Dd05CQ3lIUUlLSzFnaDJCdjBXYkFyRUxJbUJBb3JXQ0hZRy9SWnNBd1Fza1FFQ2l0WUlkZ2I5Rmt3TVFVbUppY0dKeVltTnpZU05oY1dGaGNEQndZV0Z4WTJFamMySmljbUp5WUVBZ0lIQmhJV0Z4WTNGd1lqSmlRQ0p5WVNBQ1FYRmdRU0Z4WUNCZ0VHRnhZMk54TW1KeVlHQndTbVRYWVVnNHR5ZWdrSG4rS0VWWVZEaGdnSEtDOVppVllIQkRzOGZmS24vdHJyaFFjSWFkdWZwcTBiaXVYRC90MmNCQVNlQVNBQmI4bkFBUnFhQkFTQjUvMWpCV280ZHgyQkxTbUNzU1FWQWtwT25BTUN0YUNoQVUrdUFnSTVNUDNKUEQ5SkFnU1FBUk9zaHRaSGtnUURrZjdmL291K3JmNzBpd0VDUzR4V0FhUUJPTlBkQWNBQldyRURBNkwreWNqVC9wTEVBVXlpQXdOclRBSHhFUUlGKytVQUFBTC9wQUFBQks0RnNBQUhBQW9BUmdDd0FFVllzQVF2RzdFRUh6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdCaThic1FZUFBsbXlDUVFDRVJJNXNBa3ZzZ0FCQ2l0WUlkZ2I5Rm15Q2dRQ0VSSTVNREVCSVFNaEFUTUJJd0VoQXdOOS9kK3UvdllERXQ0Qkd2aitEZ0dZWXdGVC9xMEZzUHBRQWg4Q1dnQUFBd0FuQUFBRXZBV3dBQTBBRmdBZUFHbXlHQjhnRVJJNXNCZ1FzQTNRc0JnUXNCRFFBTEFBUlZpd0FpOGJzUUlmUGxtd0FFVllzQUF2RzdFQUR6NVpzQmZRc0JjdnNwOFhBVjJ5RGdFS0sxZ2gyQnYwV2JJSERoY1JFam13QUJDeUVBRUtLMWdoMkJ2MFdiQUNFTElkQVFvcldDSFlHL1JaTURFekV3VVdGZ2NHQnhZV0J3WUVJd01EQlRJMk56WW1KeVVYTWpZM05pY2xKLzBCdit6dERoTHhXbUlIRHY3YjhLMVBBUU4xcEE4T1dtaisrT042bWc0WjF2Ny9CYkFCQWN1MDFHc2dxbmJJNkFLUi9qa0JmR3huZEFTN0FYUmp1d2NCQUFFQVpmL29CUTBGeHdBZUFFNnlDeDhnRVJJNUFMQUFSVml3REM4YnNRd2ZQbG13QUVWWXNBTXZHN0VERHo1WnNnQU1BeEVTT2JJUURBTVJFam13REJDeUV3RUtLMWdoMkJ2MFdiQURFTEljQVFvcldDSFlHL1JaTURFQkJnQW5MZ0luSmhJU0pCY1dFaGNqSmlZbkpnWVBBZ1lXRmhjRUV3U3FKZjZ3OFl2UmRnY0dSTUVCR2F6Wi9RajFCWGwzbzl3bUZBa0lMWEpZQVJkUEFkdmsvdkVFQTM3eG1ISUJpUUU0bmdNRS92ZnBuSXNEQmZUcGhXWm50VjhEQ3dFdEFBSUFKd0FBQk9BRnNBQUxBQllBUnJJS0Z4Z1JFam13Q2hDd0Q5QUFzQUJGV0xBQkx4dXhBUjgrV2JBQVJWaXdBQzhic1FBUFBsbXdBUkN5REFFS0sxZ2gyQnYwV2JBQUVMSU9BUW9yV0NIWUcvUlpNREV6RXdVeUJCSUhCd1lDQkNNVEF4Y3lKRGMySnlZbUp5ZjhBWXEyQVFkMkZ3c2V6ZjY4d2lxMmtzWUJCU1VhQndtWGhnV3dBYlgrd2NCUHlmN0pyQVRrKytZQis5MlljWkdrQkFBQkFDY0FBQVM2QmJBQUN3Qk9BTEFBUlZpd0JpOGJzUVlmUGxtd0FFVllzQVF2RzdFRUR6NVpzZ3NHQkJFU09iQUxMN0lBQVFvcldDSFlHL1Jac0FRUXNnSUJDaXRZSWRnYjlGbXdCaEN5Q0FFS0sxZ2gyQnYwV1RBeEFTRURJUWNoRXlFSElRTWhBOVA5dkU0Q3BpUDhZL3dEbHlUOVlVWUNSUUtLL2tES0JiRE0vbTRBQUFFQUp3QUFCS2NGc0FBSkFFQUFzQUJGV0xBRUx4dXhCQjgrV2JBQVJWaXdBaThic1FJUFBsbXlDUVFDRVJJNXNBa3ZzZ0FCQ2l0WUlkZ2I5Rm13QkJDeUJnRUtLMWdoMkJ2MFdUQXhBU0VESXhNaEJ5RURJUVBCL2Nocjkvd0RoQ1Q5ZEVzQ09RSnAvWmNGc016K1R3QUJBR3YvNmdVV0JjZ0FJUUJic2g4aUl4RVNPUUN3QUVWWXNBMHZHN0VOSHo1WnNBQkZXTEFETHh1eEF3OCtXYkFORUxBUTBMQU5FTElUQVFvcldDSFlHL1Jac0FNUXNoc0JDaXRZSWRnYjlGbXlJQTBERVJJNXNDQXZzaDhCQ2l0WUlkZ2I5Rmt3TVNVR0JDY3VBaWNtRWhJM05oY1dGaGNuQWljbUJnY0dCd1lXRnhZM0V5RTNJUVNRVVA3Y3RKRGNnUWtIUUtWMm9NN2I5eER2RnVPcTJ5Z1hBZ2FQaWE5eE52N2NJZ0lYdldockFnRi84NXQ0QVhRQklWSnZCQVQwM0FFQkFRY0YrZXVKVjdQT0FnUmJBUjNBQUFFQUp3QUFCWWNGc0FBTEFGT3lCd3dORVJJNUFMQUFSVml3Qmk4YnNRWWZQbG13QUVWWXNBb3ZHN0VLSHo1WnNBQkZXTEFBTHh1eEFBOCtXYkFBUlZpd0JDOGJzUVFQUGxteUNRWUFFUkk1c0FrdnNnSUJDaXRZSWRnYjlGa3dNU0VqRXlFREl4TXpBeUVUTXdTSzluRDlpbkQzL2ZkcUFuWnA5d0tIL1hrRnNQMmlBbDRBQVFBMUFBQUNLQVd3QUFNQUhRQ3dBRVZZc0FJdkc3RUNIejVac0FCRldMQUFMeHV4QUE4K1dUQXhJU01UTXdFcjl2MzJCYkFBQVFBRC8rY0VZUVd3QUE0QU5ySU1EeEFSRWprQXNBQkZXTEFBTHh1eEFCOCtXYkFBUlZpd0JTOGJzUVVQUGxteUNBQUZFUkk1c2dzQkNpdFlJZGdiOUZrd01RRXpBd1lFSnlZbU54Y0dGeFkyTndOcjlxNGYvdVBSek5jSzlnN0FaSThWQmJEOEE5VDRCQVRxeHdIbEJBU0dlZ0FCQUNjQUFBVnhCYkFBREFCVEFMQUFSVml3QkM4YnNRUWZQbG13QUVWWXNBZ3ZHN0VJSHo1WnNBQkZXTEFDTHh1eEFnOCtXYkFBUlZpd0N5OGJzUXNQUGxteUFBUUNFUkk1dEdvQWVnQUNYYklHQkFJUkVqbTBaUVoxQmdKZE1ERUJCd01qRXpNRE53RWhBUUVoQWpQSVRmZjk5M1daQWZZQlBQMTRBWm4rN0FKenQvNUVCYkQ5WTU4Qi92MXYvT0VBQUFFQUp3QUFBOE1Gc0FBRkFDZ0FzQUJGV0xBRUx4dXhCQjgrV2JBQVJWaXdBaThic1FJUFBsbXlBQUVLSzFnaDJCdjBXVEF4SlNFSElSTXpBVUVDZ2lUOGlQMzN5c29Gc0FBQUFRQW5BQUFHemdXd0FBNEFiZ0N3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFDTHh1eEFoOCtXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQWd2RzdFSUR6NVpzQUJGV0xBTUx4dXhEQTgrV2JJQkFBUVJFam0wWlFGMUFRSmRzZ2NBQkJFU09iUnFCM29IQWwyeUNnQUVFUkk1dEdvS2Vnb0NYVEF4QVJNQklRTWpFeE1CSXdzQ0l4TUNYdFVDVndGRS9QWlZnZjJvc3Q5YlVmYjlCYkQ3cGdSYStsQUI3UUpmKzdRRWJmMW0vaTBGc0FBQUFRQW5BQUFGaGdXd0FBa0FUTElCQ2dzUkVqa0FzQUJGV0xBRkx4dXhCUjgrV2JBQVJWaXdDQzhic1FnZlBsbXdBRVZZc0FBdkc3RUFEejVac0FCRldMQURMeHV4QXc4K1diSUNCUUFSRWpteUJ3VUFFUkk1TURFaEl3RURJeE16QVJNekJJbnYvam0xOS8zdkFjZTI5Z1FUKyswRnNQdnBCQmNBQUFJQWEvL25CU0VGeUFBU0FDSUFScklaSXlRUkVqbXdHUkN3QU5BQXNBQkZXTEFLTHh1eENoOCtXYkFBUlZpd0FDOGJzUUFQUGxtd0NoQ3lHQUVLSzFnaDJCdjBXYkFBRUxJZkFRb3JXQ0hZRy9SWk1ERUZMZ0luSmhJU056WVhGZ0FYRmdJQ0J3WVROelltSmljbUJnSUhCaFlYRmhJM0FsZU8xM2dJQnp1WGFhM2oyQUVCREFZNWkyZXkyZ2tHTW5kYmZzTjVDZ3FFaEszaEl4UURndmVkZlFGT0FSTlhqZ1FFL3Q3M2ZQNi8vdk5hbkFNWWFtMjVZUU1FbHY3TzU3ZlNCQVVCRHZVQUFnQW5BQUFGQkFXd0FBb0FFd0JOc2dvVUZSRVNPYkFLRUxBTTBBQ3dBRVZZc0FNdkc3RURIejVac0FCRldMQUJMeHV4QVE4K1diSUxBUU1SRWptd0N5K3lBQUVLSzFnaDJCdjBXYkFERUxJVEFRb3JXQ0hZRy9SWk1ERUJBeU1UQlRJRUJ3WUVJeVVGTWpZM05pWW5KUUY4WHZmOUFmamtBUVFSRXY3SysvN3ZBUnVHcXhFT2IzRCt6QUlkL2VNRnNBSDV6ZFQ1ekFLSWVtK0hCUUVBQUFJQVpQOEVCUm9GeUFBV0FDWUFScklESnlnUkVqbXdBeEN3Sk5BQXNBQkZXTEFPTHh1eERoOCtXYkFBUlZpd0JTOGJzUVVQUGxtd0RoQ3lIQUVLSzFnaDJCdjBXYkFGRUxJakFRb3JXQ0hZRy9SWk1ERWxGd2NsQmljbUFDY21FaEkzTmhjZUFoY1dCd2NDQXpjMkppWW5KZ0lEQmhZV0Z4WVNOd09yMEs3L0FGQXYxZjc5REFZN25YT28ySkRXZWdjRUNndytyUWtHTTNoYnhQRU9CalIzV2FYaUtGYklpdlFNQVFJQkpQWjlBVWtCSGxtQ0JBT0MrNXhXVmxmK2JnSHRhbTY0WUFNRy9wZit1Rys2WVFNSEFRRHpBQUFDQUNjQUFBVFlCYkFBRGdBWEFGcXlCUmdaRVJJNXNBVVFzQkRRQUxBQVJWaXdCQzhic1FRZlBsbXdBRVZZc0FJdkc3RUNEejVac2c4Q0JCRVNPYkFQTDdJQkFRb3JXQ0hZRy9SWnNnc0JEeEVTT2JBQ0VMQU8wTEFFRUxJWEFRb3JXQ0hZRy9SWk1ERUJJUU1qRXdVeUZnY0dCZ2NUQnlFQkZ6STJOelltSnlVQ2x2N3FZdmY5QWN2dC9CRUxwcGJYQWY3Ni9sTHZnYTBQRDI1dy92Z0NNZjNQQmJBQjVNdU56enY5cGc4Qy9BS0hkSEY1QkFFQUFRQWsvK29FdXdYSEFDa0FZYklES2lzUkVqa0FzQUJGV0xBS0x4dXhDaDgrV2JBQVJWaXdIeThic1I4UFBsbXlBeDhLRVJJNXNBb1FzQTdRc0FvUXNoSUJDaXRZSWRnYjlGbXdBeEN5R0FFS0sxZ2gyQnYwV2JBZkVMQWswTEFmRUxJbkFRb3JXQ0hZRy9SWk1ERUJOaWNuSmlZM1BnSVhIZ0lISnpZbUp5WUdCd1lYRnhZV0J3NENKeTRDTnhjR0ZoY1dOZ05NRnJOUjRyNEpDSm42allqVWNBVDJCM04wZGFFT0ZMNUw1YllMQ283N2w0L3BmQVgzQ0lxQmVLRUJmcEJHSGsvWWozeTlaZ01EY2NtQkFYSitBd0p5WVg5SkcxTGRsM3UzWkFJQmR0R0ZBWHlHQWdKcUFBQUJBSndBQUFVaUJiQUFCd0F1QUxBQVJWaXdCaThic1FZZlBsbXdBRVZZc0FJdkc3RUNEejVac0FZUXNnQUJDaXRZSWRnYjlGbXdCTkF3TVFFaEF5TVRJVGNoQlA3K1NObjIydjVMSkFSaUJPVDdIQVRrekFBQUFRQmIvK1lGTHdXd0FCSUFQTElQRXhRUkVqa0FzQUJGV0xBQUx4dXhBQjgrV2JBQVJWaXdDUzhic1FrZlBsbXdBRVZZc0FRdkc3RUVEejVac2c0QkNpdFlJZGdiOUZrd01RRURCZ0FuSmdJM054TXpBd1lXRnhZMk54TUZMNlVpL3JYcjJ2MExBNlgycFJKMmU0ZTBHYWNGc1B3ejZmN3NCQVFCQU00bUE4NzhNWXVjQkFTYWtBUFVBQUFCQUpzQUFBV0JCYkFBQmdBNHNnQUhDQkVTT1FDd0FFVllzQUV2RzdFQkh6NVpzQUJGV0xBRkx4dXhCUjgrV2JBQVJWaXdBeThic1FNUFBsbXlBQUVERVJJNU1ERUJBU0VCSXdFaEFsRUNHQUVZL1NEdi91a0JCZ0UvQkhINlVBV3dBQUVBdHdBQUJ6b0ZzQUFNQUdDeUJRME9FUkk1QUxBQVJWaXdBUzhic1FFZlBsbXdBRVZZc0Fndkc3RUlIejVac0FCRldMQUxMeHV4Q3g4K1diQUFSVml3QXk4YnNRTVBQbG13QUVWWXNBWXZHN0VHRHo1WnNnQUJBeEVTT2JJRkFRTVJFam15Q2dFREVSSTVNREVCQVRNQkl3TUJJd016RXdFekJMc0JoUHY5MXV4bC9ranVZdTh3QWJmUEFXb0VSdnBRQkNUNzNBV3crNzhFUVFBQUFmL0RBQUFGUndXd0FBc0FVd0N3QUVWWXNBRXZHN0VCSHo1WnNBQkZXTEFLTHh1eENoOCtXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQWN2RzdFSER6NVpzZ0FCQkJFU09iSUdBUVFSRWpteUF3QUdFUkk1c2drR0FCRVNPVEF4QVFFaEFRRWhBd0VoQVFFaEFxTUJlZ0VxL2RzQlB2N3UzUDU4L3RVQ01mN0pBUkFEb3dJTi9TUDlMUUlWL2VzQzZRTEhBQUVBb1FBQUJVMEZzQUFJQURFQXNBQkZXTEFCTHh1eEFSOCtXYkFBUlZpd0J5OGJzUWNmUGxtd0FFVllzQVF2RzdFRUR6NVpzZ0FCQkJFU09UQXhBUUVoQVFNakV3RWhBbk1CdkFFZS9YNWIrR0QreVFFRkF3QUNzUHhiL2ZVQ0pRT0xBQUFCLytVQUFBVG5CYkFBQ1FCRUFMQUFSVml3Qnk4YnNRY2ZQbG13QUVWWXNBSXZHN0VDRHo1WnNnQUJDaXRZSWRnYjlGbXlCQUFDRVJJNXNBY1FzZ1VCQ2l0WUlkZ2I5Rm15Q1FVSEVSSTVNREVsSVFjaE53RWhOeUVIQVRvQzdDVDc0eDhEamYweUpBUUFIc3JLc0FRMHpLd0FBQUgvNy82OEFyVUdqZ0FIQUNJQXNBUXZzQWN2c2dBQkNpdFlJZGdiOUZtd0JCQ3lBd0VLSzFnaDJCdjBXVEF4QVNNRE13Y2hBU0VDbDUvK29CNytjd0U1QVkwRjBQbXB2UWZTQUFBQkFLei9nd0xJQmJBQUF3QVRBTEFDTDdBQVJWaXdBQzhic1FBZlBsa3dNUk16QVNPczRBRTg0QVd3K2RNQUFmOTYvcndDUXdhT0FBY0FKUUN3QWkrd0FTK3dBaEN5QlFFS0sxZ2gyQnYwV2JBQkVMSUdBUW9yV0NIWUcvUlpNREVUSVFFaE56TVRJN1FCai83SC9uQWVvdjZqQm83NExyMEdWd0FBQVFCRUF0a0RMZ1d3QUFZQUo3SUFCd2dSRWprQXNBQkZXTEFETHh1eEF4OCtXYkFBMExJQkJ3TVJFam13QVMrd0JkQXdNUUVESXdFekV5TUNGUDNUQWFDbm83MEVwUDQxQXRmOUtRQUFBZjk1LzBFREZnQUFBQU1BR3dDd0FFVllzQU12RzdFRER6NVpzZ0FCQ2l0WUlkZ2I5Rmt3TVFVaE55RUM5UHlGSWdON3Y3OEFBUURLQk5FQ1ZnWUFBQU1BSkFDd0FTK3lEd0VCWGJBRDBMQURMN1FQQXg4REFsMnlBQUVERVJJNUdiQUFMeGd3TVFFakF6TUNWclhYL2dUUkFTOEFBQUlBSXYvb0E5d0VVQUFnQUNzQWhiSUtMQzBSRWptd0NoQ3dKdEFBc0FCRldMQVlMeHV4R0JzK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBUXZHN0VFRHo1WnNnSUVHQkVTT2JJS0dBQVJFam13Q2krd0dCQ3lFQWNLSzFnaDJCdjBXYklUQ2hBUkVqbEFDUXdUSEJNc0V6d1RCRjJ3QkJDeUlRRUtLMWdoMkJ2MFdiQUtFTEltQndvcldDSFlHL1JaTURFaEpqY0dKeVltTnpZa014YzNOaWNtSnlZR0J3YytBaGNXRmdjREJ3WVhCeVVXTmpjM0p5SUdCd1lXQXBNTUFvYWJqYmtHQ0FFWTdKb09CZ1lVZTB4ekRlMEhnTlIyc2NZUlV3Z0RFZ0grSVV1QUxTVnhocUFMQ0Vzb1BYMEVBckdJcThRQ1NpY2liQU1DVVVRQ1pKZFVBZ1ROby80RldqczRFcTRDU1RyTkFXVllRMDBBQUFJQUVQL29CQThHQUFBUkFCNEFaTElFSHlBUkVqbXdCQkN3RzlBQXNBa3ZzQUJGV0xBTkx4dXhEUnMrV2JBQVJWaXdCeThic1FjUFBsbXdBRVZZc0FRdkc3RUVEejVac2dZTkJ4RVNPYklMRFFjUkVqbXdEUkN5RlFFS0sxZ2gyQnYwV2JBRUVMSWFBUW9yV0NIWUcvUlpNREVCQmdJR0p5WW5CeU1CTXdNMkZ4WVdGeFluTkNZbkpnY0RGaGNXTmpjMkJBY1VpY3QvdFZ3bTJRRUs3bXg1cHAyeEJRSHNXbFdQWTA0c2tYaWJGZ2dDR0tYKzlZQURCSWQyQmdEOTBZRUVCTjdCUEM5dGV3SUVqdjVBaUFVRHZxMVZBQUFCQURqLzZRUHVCRklBSEFCTHNnQWRIaEVTT1FDd0FFVllzQkV2RzdFUkd6NVpzQUJGV0xBSUx4dXhDQTgrV2JJQUFRb3JXQ0hZRy9SWnNnUVJDQkVTT2JJVkNCRVJFam13RVJDeUdBRUtLMWdoMkJ2MFdUQXhKUlkyTnpjT0FpY3VBamMzUGdJWEZoWVZJelFtSnlZR0J3SUI2RldERXVBTGhkQnhpOFJhRHdNUmxleVFzTkxlVzFhTG9BWUhyUUpuVXdGcnNHSURBb3ozbUNPZC80b0VCT0cwWFhZRUJQVGUvdk1BQWdBNy8rY0VpQVlBQUJJQUhRQmhzZ1FlSHhFU09iQUVFTEFiMEFDd0J5K3dBRVZZc0FRdkc3RUVHejVac0FCRldMQUpMeHV4Q1E4K1diQUFSVml3RFM4YnNRMFBQbG15QmdRSkVSSTVzZ3NFQ1JFU09iSVdBUW9yV0NIWUcvUlpzQVFRc2hzQkNpdFlJZGdiOUZrd01STTJFallYRmhjVE13RWpOd1luSmlZbkpqY1hCaFlYRmpjVEppY21Ca1FVak01K3BWMW83djcxMUJCK3FwZTFCd01HNlFkYldvbGtVUytIaUtZQ0hxY0JDb01EQkhjQ0xQb0FjSWtFQXVXK1BqdElmSklDQklrQjBYMEVCUGdBQUFJQU8vL3FCQUlFVVFBV0FCOEFnN0lSSUNFUkVqbXdFUkN3RjlBQXNBQkZXTEFKTHh1eENScytXYkFBUlZpd0FDOGJzUUFQUGxteUdnQUpFUkk1c0JvdnRMOGF6eG9DWGJSZkdtOGFBbkcwSHhvdkdnSnhzbzhhQVYyMDd4ci9HZ0p4c2cwSENpdFlJZGdiOUZtd0FCQ3lFUUVLSzFnaDJCdjBXYklUQ1FBUkVqbXdDUkN5RndFS0sxZ2gyQnYwV1RBeEJTNENOemMyRWpZWEZoSUhCeUVHRmhjV054Y0dCZ01tQXdVM05pY21KZ0g2amM5akRBTVNuZXFKeThzWkR2MVhDWHBybVlGNFJONGZ2RjRCd1FRSEJndGFGQU9JN0pFcHBRRUhpQU1FL3Ryc2FJR2VBZ1dLZm1GckE2SUcvdkFCRlM0c1IxSUFBUUJmQUFBRFhnWWFBQlVBWTdJVkZoY1JFamtBc0FCRldMQUlMeHV4Q0NFK1diQUFSVml3QXk4YnNRTWJQbG13QUVWWXNCRXZHN0VSR3o1WnNBQkZXTEFBTHh1eEFBOCtXYkFERUxJQkFRb3JXQ0hZRy9SWnNBZ1FzZzBCQ2l0WUlkZ2I5Rm13QVJDd0U5Q3dGTkF3TVRNVEl6Y3pOelkyRnhZWEJ5WWpKZ1lIQnpNSEl3TmpuYUVnb0JBYTI2MDlVQm9zTFZWc0R3L1dJTldkQTRhMGRLakVBZ0lTdmdvQlhsTm10UHg2QUFBQy8vZitUd1JDQkZFQUhBQXFBSU95QkNzc0VSSTVzQVFRc0NQUUFMQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFNTHh1eERCRStXYkFBUlZpd0dDOGJzUmdQUGxteUJnZ1lFUkk1c0F3UXNoSUJDaXRZSWRnYjlGbXlFQklZRVJJNXNoWUlHQkVTT2JBWUVMSWlBUW9yV0NIWUcvUlpzQVFRc2ljQkNpdFlJZGdiOUZrd01STTJFallYRmhjM0Z3TUdCQ2NtSmljM0ZoY1dOamMzQmljbUppY21Od1lYRmhZWEZqY1RKaWNtQmdkR0U0blFockpiSmRpekh2N1gxWExNUG41Zm1YU25IQkY5bjVpM0NRUHpCZ0lDWEZXSFpWVTBoWGlrR1FJZW9nRUdpd0lFZjI4QisrVFUrd1lDWkZLUGd3UUVoMzFNZVFRQzRyODhQak03YW53REJZSUIzbmNFQThDdEFBQUJBQTBBQUFQNUJnQUFFZ0JKc2dFVEZCRVNPUUN3RVMrd0FFVllzQUl2RzdFQ0d6NVpzQUJGV0xBR0x4dXhCZzgrV2JBQVJWaXdEeThic1E4UFBsbXlBQUlHRVJJNXNBSVFzZ3dCQ2l0WUlkZ2I5Rmt3TVFFMkZ4WVdCd01qRXpZbkppY21Cd01qQVRNQmw0ZXNtcFVUZE8xMkJRTU5nNFJvaCswQkN1NER3NDRFQXRhOS9VZ0N1eXNsZWdNQ2hQejZCZ0FBQWdBZkFBQUNDUVhZQUFNQUR3QStzZ1FRRVJFU09iQUVFTEFBMEFDd0FFVllzQUl2RzdFQ0d6NVpzQUJGV0xBQUx4dXhBQTgrV2JBQ0VMQU4wTEFOTDdJSERRb3JXQ0hZRy9SWk1ERWhJeE16QXpRMk56WVdGUlFHQndZbUFRenR2TzNMU0QwNlRVczZPVTRFT2dFVk4wNENBa3MyT1VvQ0Fra0FBQUwvRFA1R0FmNEYyQUFNQUJnQVNiSUJHUm9SRWptd0FSQ3dEZEFBc0FCRldMQUFMeHV4QUJzK1diQUFSVml3QkM4YnNRUVJQbG15Q1FFS0sxZ2gyQnYwV2JBQUVMQVcwTEFXTDdJUURRb3JXQ0hZRy9SWk1ERUJBd1lHSnlZbk54WXpNamNURXpRMk56WVdGUlFHQnlJbUFjUEhGcnlYUUVjVUxpWi9Hc2tkU0R3NlRVczZQRW9FT3Z0bnFMTUNBaEhBQzVVRWxRRVZPa3NDQWtrNE9Vb0NSd0FBQVFBUkFBQUVTZ1lBQUF3QVV3Q3dBRVZZc0FRdkc3RUVJVDVac0FCRldMQUlMeHV4Q0JzK1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNBc3ZHN0VMRHo1WnNnQUlBaEVTT2JScUFIb0FBbDJ5QmdnQ0VSSTV0R1VHZFFZQ1hUQXhBUWNESXdFekF6Y0JJUUVCSVFHL2hqdnRBUXJ0bUZNQldBRXYvaUFCUFA3L0FjNTMvcWtHQVB5WVZnRk0vakw5bEFBQkFCOEFBQUlYQmdBQUF3QWRBTEFBUlZpd0FpOGJzUUloUGxtd0FFVllzQUF2RzdFQUR6NVpNREVoSXdFekFRenRBUXZ0QmdBQUFBRUFFQUFBQm1nRVVnQWhBSGV5RmlJakVSSTVBTEFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQWd2RzdFSUd6NVpzQUJGV0xBQUx4dXhBQnMrV2JBQVJWaXdEQzhic1F3UFBsbXdBRVZZc0JZdkc3RVdEejVac0FCRldMQWZMeHV4SHc4K1diSUJDQXdSRWpteUJnZ01FUkk1c0FnUXNoSUJDaXRZSWRnYjlGbXdITkF3TVFFSE5oY1dGaGMyRnhZV0J3TWpFelluSmljbUJ3Y0RJeE0ySnlZbkpnY0RJeE1CcVJXR3VtYUhHSmJDbnBrVGRlMTJCUVFRaEpOVkEzenVkZ1VFRUlTRldZbnR1d1E3YzRvRUFscEtxZ1FFMGJ6OVF3Sy9MQ1YxQXdTbEZ2MHZBcndySlhrREFubjg3d1E2QUFFQURRQUFBL29FVWdBU0FGT3lBaE1VRVJJNUFMQUFSVml3QXk4YnNRTWJQbG13QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFITHh1eEJ3OCtXYkFBUlZpd0VDOGJzUkFQUGxteUFRTUhFUkk1c0FNUXNnMEJDaXRZSWRnYjlGa3dNUUVITmhjV0ZnY0RJeE0ySnlZbkpnY0RJeE1CcHhpTHRwaVNFM1h0ZGdVRURZR0hab2Z0dXdRN2Y1WUVBOU85L1VVQ3Zpc2xkd01DaC96OUJEb0FBZ0E1LytnRUp3UlNBQkFBSUFCRHNoc2hJaEVTT2JBYkVMQUUwQUN3QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFNTHh1eERBOCtXYklVQVFvcldDSFlHL1Jac0FRUXNoc0JDaXRZSWRnYjlGa3dNUk0yRWpZWEhnSUhCZ0lHSnk0Q054Y1dGaGNXTmpjM05DWW5KZ2NHQndaSkVabndrb3ZLWFE0UW0vR1Rpc2xlRGV3RlpWcDZwUlVHWm1HWVdEVU9DQUlobndFRWpnUUNrUHFaclA3NGpRUUNqL21XZEdsL0F3UENxR0tBa2dRRW1WMTVWQUFDLzhmK1lBUU5CRklBRWdBZUFHZXlCQjhnRVJJNXNBUVFzQjNRQUxBQVJWaXdEUzhic1EwYlBsbXdBRVZZc0Fvdkc3RUtHejVac0FCRldMQUhMeHV4QnhFK1diQUFSVml3QkM4YnNRUVBQbG15Q3cwSEVSSTVzQTBRc2hjQkNpdFlJZGdiOUZtd0JCQ3lIQUVLSzFnaDJCdjBXVEF4QVFZQ0JpY21Kd01qQVRjSE5oY2VBaGNXQnpjMkppY21Cd01XRnhZMkJBVVVoYzEvcVdGaDdnRUUyUko4cTJlWVVRTUI4Z1VEVzF1R1lsUXRpbmFoQWhtaS92aUhBd1IwL2YwRjJnRndod1FCWjhSNFBUOUpnWTRDQkgvK0hYa0VBNzRBQUFJQU8vNWdCRGdFVWdBU0FDQUFhN0lFSVNJUkVqbXdCQkN3R05BQXNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0JDOGJzUVFiUGxtd0FFVllzQWt2RzdFSkVUNVpzQUJGV0xBTkx4dXhEUTgrV2JJR0NBMFJFam15Q3dnTkVSSTVzaGNCQ2l0WUlkZ2I5Rm13QkJDeUhRRUtLMWdoMkJ2MFdUQXhFellTTmhjV0Z6Y1hBU01UQmljbUppY21Oek1IQmhZWEZqWTNFeVluSmdZSFJCU096bitzWENmVy92enRZbm1jbTdRSEF3YnVCUU5iV0V0dkxWZzBnbktmSEFJZnF3RUpmd01FZlcwQitpWUIvWFVFQXVPK1B6eEloNHNDQTBVNEFlNXlCQU95cEFBQkFCQUFBQUx2QkZNQURRQkdzZ2tPRHhFU09RQ3dBRVZZc0Fndkc3RUlHejVac0FCRldMQUxMeHV4Q3hzK1diQUFSVml3QlM4YnNRVVBQbG13Q3hDeUFnRUtLMWdoMkJ2MFdiSUpDd1VSRWprd01RRW1JeVlIQXlNVE53YzJGeklYQXRRdUw1eGNndTI3NFJodmtTRTZBMXdLQklYOUd3UTZBWHVUQXc4QUFBRUFIUC9wQThRRVVBQWtBSFN5SXlVbUVSSTVBTEFBUlZpd0NDOGJzUWdiUGxtd0FFVllzQnN2RzdFYkR6NVpzZ01iQ0JFU09iSUxDQnNSRWpteUhBc0JYYklMQ3dGZHNBZ1FzZzhCQ2l0WUlkZ2I5Rm13QXhDeUV3RUtLMWdoMkJ2MFdiSWVDQnNSRWptMEJCNFVIZ0pkc0JzUXNpSUJDaXRZSWRnYjlGa3dNUUUySkNjbU56WTJGeFlXQnljMkppY2lCZ2NHQkJjV0J3NENKeVltTnhjV0ZoY3lOZ0tYRWY3ZE5jNEhCZit5ck5rQzZ3SldTMDl4Q1E0QkhFVEdCd1Y5MG5heDZRTGxBbVJYV0hVQkxHTk5GMWkwa3I4Q0FyNmFBVXRWQWs0L1cwY2VWN2xubVZFREFzcWVBVmRhQVVrQUFRQTcvKzBDcmdWQkFCWUFYTElXRnhnUkVqa0FzQUJGV0xBQkx4dXhBUnMrV2JBQVJWaXdGQzhic1JRYlBsbXdBRVZZc0E0dkc3RU9EejVac0FFUXNBRFFzQUF2c0FFUXNnTUJDaXRZSWRnYjlGbXdEaEN5Q1FFS0sxZ2gyQnYwV2JBREVMQVMwREF4QVFNekJ5TURCaGNXRnpJM0J3WWpKaVkzRXlNM014TUNJeTY1SDdwbUF3SUdTaVV2RUVwTGZIc05aYTBnckM0RlFmNzV0UDJpR1JSQkF3bStGUUtsaUFKcXRBRUhBQUFCQUVyLzZBUXhCRG9BRXdCUXNnRVVGUkVTT1FDd0FFVllzQWN2RzdFSEd6NVpzQUJGV0xBUUx4dXhFQnMrV2JBQVJWaXdFaThic1JJUFBsbXdBRVZZc0FJdkc3RUNEejVac2dBUUVoRVNPYklOQVFvcldDSFlHL1JaTURFbEJpY3VBamNUTXdNR0Z4WVhGamNUTXdNakFxMTd1V21MT3d4MTdYWUVBd3B6bldHSTdidmVhNE1FQW1TemVRSzgvVUVsSTN3RkJvUURDdnZHQUFBQkFHUUFBQVFOQkRvQUJnQTRzZ0FIQ0JFU09RQ3dBRVZZc0FFdkc3RUJHejVac0FCRldMQUZMeHV4QlJzK1diQUFSVml3QXk4YnNRTVBQbG15QUFVREVSSTVNREVCQVRNQkl3TXpBYm9CVnYzOTY4N0c3Z0UzQXdQN3hnUTZBQUFCQUhjQUFBWDRCRG9BREFCZ3NnVU5EaEVTT1FDd0FFVllzQUV2RzdFQkd6NVpzQUJGV0xBSUx4dXhDQnMrV2JBQVJWaXdDeThic1FzYlBsbXdBRVZZc0FNdkc3RUREejVac0FCRldMQUdMeHV4Qmc4K1diSUFDd01SRWpteUJRc0RFUkk1c2dvTEF4RVNPVEF4QVFFekFTTURBU01ETXhNQk13UGhBU251L2liRFgvNml4R1BnS1FGV3N3RlJBdW43eGdMay9Sd0VPdjBpQXQ0QUFBSC91UUFBQkJNRU9nQUxBRk1Bc0FCRldMQUJMeHV4QVJzK1diQUFSVml3Q2k4YnNRb2JQbG13QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFITHh1eEJ3OCtXYklBQ2dRUkVqbXlCZ29FRVJJNXNnTUFCaEVTT2JJSkJnQVJFamt3TVFFVElRRVRJd01CSVFFRE13SC8vd0VWL21MeCtKZis5djdzQWF2cCtBTFlBV0w5NFAzbUFYSCtqd0l3QWdvQUFBSC90ZjVGQkJJRU9nQVBBRU95QUJBUkVSSTVBTEFBUlZpd0R5OGJzUThiUGxtd0FFVllzQUV2RzdFQkd6NVpzQUJGV0xBRkx4dXhCUkUrV2JJQUJROFJFam15Q1FFS0sxZ2gyQnYwV1RBeEFRRWhBUUluSmljM0Z4WTJOemNETXdHNEFWUUJCdjEvaHRzMlJSUXJWbkFtT2JYMkFWNEMzUHNML3dBREFoSzhCQU5IUzNBRUp3QUIvK2NBQUFQa0JEb0FDUUJFQUxBQVJWaXdCeThic1FjYlBsbXdBRVZZc0FJdkc3RUNEejVac2dBQkNpdFlJZGdiOUZteUJBQUNFUkk1c0FjUXNnVUJDaXRZSWRnYjlGbXlDUVVIRVJJNU1ERWxJUWNoTndFaE55RUhBVGdDSmlMOHF4NENpUDM5SXdNM0hjTENxd0xMeEtVQUFBRUFNUDZaQXdVR1FBQWJBRGF5REJ3ZEVSSTVBTEFPTDdBQVJWaXdBQzhic1FBWFBsbXlDUTRBRVJJNXNBa3ZzZ2dIQ2l0WUlkZ2I5Rm15RkFnSkVSSTVNREVCSmlZM056WW5KaWMzTmpjM0VpVVhCZ01IQmdjV0ZnOENCaGNCelo2Y0V4d0ZCQTJHRWNjZkh6a0JZeVBCSXgwaHVVazJDUjREQTRQK21UUHdyc3d0SjNvTHNncmQ0QUZRYUk5Ry92cmF4V0Ezb2xqbVI2bzZBQUVBSVA3eUFkSUZzQUFEQUJNQXNBQXZzQUJGV0xBQ0x4dXhBaDgrV1RBeEV5TUJNOFNrQVE2ay92SUd2Z0FCLzVuK2xRSnZCanNBSEFBMnNob2RIaEVTT1FDd0RpK3dBRVZZc0J3dkc3RWNGejVac2hZT0hCRVNPYkFXTDdJWEJ3b3JXQ0hZRy9SWnNnVVhGaEVTT1RBeEJ6WTNOelkzSmljbVB3STBKemNXRmdjSEJoY1dGd2NHQndjQ0JXZTRLU0lqdm5BT0JRVWVCSUUzbzVBU0hBVUVEWWNTeUI0Zk9mNmQyMEQ0OU1OYlNwQXJMZVpJcWptSk52R296QzRtZkF1eUN0dmYvcXhtQUFBQkFGc0JmZ1RLQXpRQUZnQThzZ1VYR0JFU09RQ3dEaSt3QU5DeUF4Y09FUkk1c0FNdnNBNFFzZ2dCQ2l0WUlkZ2I5Rm13QXhDd0N0Q3dBeEN5RXdFS0sxZ2gyQnYwV1RBeEFRWUdKeTRESXlZSEl6WTJGeDRETXpJMk53VEtETVNVVVg1MFF5R0hJcnNPeDVGU2duQkVIMFJkRUFNVXJ1Z0VBa3AwSkFQQXI5d0VBa3h5SkdsY0FBQUMvK2IrbEFIT0JGQUFBd0FPQUQ2eUN3OFFFUkk1c0FzUXNBTFFBTEFBUlZpd0RDOGJzUXdiUGxtd0FFVllzQUl2RzdFQ0Z6NVpzQXdRc2djTkNpdFlJZGdiOUZtd0FkQ3dBUzh3TVJNekF5TUJGQVlHSmpVME5qYzJGcS9NbXZzQjZFcDJURW83T2swQ2x2ditCVHM1VFFSS09EbE1BZ0pMQUFFQVRQOExCQVlGSmdBaEFGZXlFaUlqRVJJNUFMQUFSVml3RlM4YnNSVWJQbG13QUVWWXNBY3ZHN0VIRHo1WnNnQUJDaXRZSWRnYjlGbXlCQWNWRVJJNXNBY1FzQXJRc0JVUXNCTFFzaGtWQnhFU09iQVZFTEljQVFvcldDSFlHL1JaTURFbEZqWTNOd1lHQndjak55NENOemMyRWpjM013Y1dGZ2NqTkNZbkpnSVZGQllCOWxpQUZOOE8xcUF2eERCcmlUb09BaG4yd1M3RExvU1RBdDFjVTQrcFhLMENhRklCamNjZDZ1d2JrOStFRk9VQklpTGg0eUhTbTJGeEJBYis5dkJxZlFBQUFmLzJBQUFFcFFYSEFDQUFhckljSVNJUkVqa0FzQUJGV0xBVEx4dXhFeDgrV2JBQVJWaXdCUzhic1FVUFBsbXlIaE1GRVJJNXNCNHZzZ0FCQ2l0WUlkZ2I5Rm13QlJDeUF3RUtLMWdoMkJ2MFdiQUkwTEFBRUxBTDBMQWVFTEFOMExBVEVMQVcwTEFURUxJYUFRb3JXQ0hZRy9SWk1ERUJCd1lISlFjaE54YzJOemNqTnpNM1BnSVhGaFlISnpZbUp5WUdCd2NoQndIdUZoRlpBcWdrL0FRa1JXUWNHSjBqbHg4UWk5bC90TXNJN3dWU1UxcC9EaDBCTGlNQ1ZxNkNYd1BLeVFJa3NybkgrMy9IYVFRRTJiWUJYMmNFQW9adzZzY0FBQUlBQ1AvbEJYOEU4UUFjQUN3QVA3SWlMUzRSRWptd0loQ3dFTkFBc0FCRldMQUNMeHV4QWc4K1diQVIwTEFSTDdBQ0VMSWhCd29yV0NIWUcvUlpzQkVRc2lrSENpdFlJZGdiOUZrd01TVUdKeVluQnljM0ppY21FamNuTnhjMkZ4WVhOeGNIRmdjR0J4Y0hBUVlXRmhjV05qWTNOaVltSnlZR0JnUFV0cnpEaDVoNG1oc0tFMWhtYzVkdXI3SzVpS3A1cVQ0VUdvTnZtUHo0RDBTYWFYSFJqeEFQUkpwcGN0T01hWUVFQkhxRW00QlZWcE1CSEhXYmhZOTBCQUp5bEp5T3VhZkpucFdHQW5KdXlYa0VCSG5aZDI3SGVBUUVldFFBQVFCUUFBQUZPQVd3QUJZQWNnQ3dBRVZZc0JZdkc3RVdIejVac0FCRldMQU1MeHV4REE4K1diSUFEQllSRWptd0ZoQ3dBZEN5RHd3V0VSSTVzQTh2c0JQUXNCTXZ0QThUSHhNQ1hiQUUwTEFFTDdBVEVMSVNCQW9yV0NIWUcvUlpzQWJRc0E4UXNBZlFzQWN2c0E4UXNnNEVDaXRZSWRnYjlGbXdDdEF3TVFFQklRRXpCeUVISVFjaEF5TVRJVGNoTnlFM0lRRWhBbm9Cb0FFZS9nZitHLzZ1R0FGVEcvNnVOUGMxL3FnYkFWY1kvcWdiQVJqKy9nRUZBellDZXYwMm1JcVgvdE1CTFplS21BTEtBQUFDLyt6KzhnSDRCYkFBQXdBSEFCZ0FzQUF2c0FCRldMQUdMeHV4Qmg4K1diSUZBUU1yTURFREV6TURFeU1UTXhTTDM0cW80SVRnL3ZJREcvemxBOGdDOWdBQy85eitJd1N4QmNZQUxnQTVBSUN5SnpvN0VSSTVzQ2NRc0RUUUFMQUlMN0FBUlZpd0h5OGJzUjhmUGxteUFnZ2ZFUkk1c0FnUXNBelFzQWdRc2c4QkNpdFlJZGdiOUZteUZRZ2ZFUkk1c2hvZkNCRVNPYkFmRUxBajBMQWZFTEltQVFvcldDSFlHL1Jac2l3SUh4RVNPYkFWRUxJekFRb3JXQ0hZRy9SWnNDd1FzamtCQ2l0WUlkZ2I5Rmt3TVFFR0J4WUhEZ0luSmlZM013WVdGekkyTnpZdkFpUTNOamNtTnpZa0Z4WVdCeWMySmljbUJ3WUhCZ1FYRmlVR0J3WWZBalkzTmljRVVnN0lZUTBKai9DUjRQc0Y4QVorZUhpZERSVzVrbG4rNnhVT3htQU5EZ0VxNDlickNld0dkR2x5VGxNT0ZnRjhWT1g5Ym5rVUZyYkRLSUVVRnNJQno3VnBhS2g1ckZrREF1TEZhM2tDWWxONFFUQWpkL1c0WjIya3NOQUNCT1RHQVd4N0FnSXVNVnFHY1N0MElEZDJpRDFBRHp0eWdVUUFBQUlBMFFUZUE0TUZ6UUFLQUJVQUlnQ3dFUyt5RHhFQlhiSUxCUW9yV0NIWUcvUlpzQURRc0JFUXNBYlFzQVl2TURFQk1oWVZGQVlISWlZME5pVXlGaFVVQmdjaUpqUTJBVXcyUmtZMU9FUkVBZkk0UkVZMU4wVkZCYzFETVRORkFrUmdTQUZFTURORkFrSmtSZ0FBQXdCZS8rZ0Y2UVhIQUJzQUtRQTZBSld5TGpzOEVSSTVzQzRRc0JMUXNDNFFzQ2ZRQUxBQVJWaXdMeThic1M4ZlBsbXdBRVZZc0Rjdkc3RTNEejVac2dNM0x4RVNPYkFETDdRUEF4OERBbDJ5Q2k4M0VSSTVzQW92dEFBS0VBb0NYYklBQXdvUkVqbXlEZ29ERVJJNXNoRUNDaXRZSWRnYjlGbXdBeEN5R1FJS0sxZ2gyQnYwV2JBM0VMSWZDQW9yV0NIWUcvUlpzQzhRc2lZSUNpdFlJZGdiOUZrd01RRUdCaWNtSmpjM05qWVhGaFlISnpZbUp5WUdCaFVYRmhZWEZqY0ZGZ0FYRmlRU0p5WUNKeVlFQWdjMkVqWWtGeFlFRWdjR0FnUW5KaVFDQkVNTXVabVNwQTRLRTlDZWxab0VtQVZJVVYxN0hRSUZTMEtuSC8wOUV3RUJ2TGdCU2JjU0UvekF1ZjYzdVdJUmllQUJEWkN5QVI2UEZSYm0vcVcvdHY3bWtBSlVscWdFQk5pblpiemNBZ1NwandGYVdRSUNqdmdiTEV0WUF3ZTVHTXorK3dJRTJ3RjN3Y29CQVFVRTJ2NkpLSllCRjlsdkF3TEYvcWJFeWY2YXlBUUV4QUZjQUFBQ0FMNENzd05RQmNjQUhRQW5BR3V5RWlncEVSSTVzQklRc0I3UUFMQUFSVml3Rmk4YnNSWWZQbG15QkNnV0VSSTVzQVF2c0FEUXNBQXZzZ29FRmhFU09iQUtMN0FXRUxJUUFnb3JXQ0hZRy9SWnNBb1FzUklLSzFqWUc5eFpzQVFRc2g0Q0NpdFlJZGdiOUZtd0NoQ3hJZ29yV05nYjNGa3dNUUVtTndZaklpWTNOall6RnpjMkp5WW5KZ2NuTmpZWEZoWUhBd2NHRnlVeU56Y2pCZ1lIQmhZQ2JnVUNYVzFxZVFRQ3U2aG9Dd1FCQjB4M0c2d0xzWUo2akFvMkJBRUovclZGV2h0VFVtWUlCekVDdnlnZVVudGhjMzBCTlJrV1N3TUVadzV2ZlFJQ2xuMytwVG90TDRJK2lnTStOU1lzLy84QVNRQ0tBNjBEcVFBbUE0RHNBQUFIQTRBQlNBQUFBQUVBZ0FGMkE4b0RKUUFGQUJvQXNBUXZzQUhRc0FFdnNBUVFzZ0lCQ2l0WUlkZ2I5Rmt3TVFFakV5RTNJUU4veEM3OWx4OERLd0YyQVFTci8vOEFOZ0lKQWxnQ3pRSUdBQkVBQUFBRUFGNy82QVhwQmNnQUR3QWZBRGdBUVFDZnNqcENReEVTT2JBNkVMQUQwTEE2RUxBZDBMQTZFTEE0MEFDd0FFVllzQVF2RzdFRUh6NVpzQUJGV0xBTUx4dXhEQTgrV2JJVUNBb3JXQ0hZRy9SWnNBUVFzaHdJQ2l0WUlkZ2I5Rm15SVF3RUVSSTVzQ0V2c2lRRURCRVNPYkFrTDdRQUpCQWtBbDJ5SUNFa0VSSTVzQ0F2c2lBZ0FWMnlPUWdLSzFnaDJCdjBXYklwSURrUkVqbXdJUkN3TWRDd0pCQ3lRQWdLSzFnaDJCdjBXVEF4RXpZU0pCY1dCQklIQmdJRUp5WWtBamNlQWhjV0pCSTNOZ0ltSnlZRUFnVURJeE1GRmhZSEJnY1dGeFlHRnhjSEl5WTNOamMySmljbkZ6WTJOelltSnlkekZ0NEJYc1d5QVI2UEZSYm0vcVcvdHY3bWtJb01mc2wrbkFFbnlSY1ZhZUNZdWY2M3VBRzROWlNGQVFTUGxBVUhpVWtIQWcwQkJBR1ZCUUlCREFZc1FwQ0JTbVVLQ3p0WmlnTFN4Z0ZoendRQ3hmNm14TW4rbXNnRUJNUUJYQ3VEMTNZREJLUUJMYXVmQVI2bUJBVGEvb3h3L3E4RFVnRUZobkYwVEM1a0gza2NQaElsSkNGZlAwUUVpQUVDUXpZN1BRTUJBQUVBN3dVU0E4c0ZzQUFEQUJFQXNBRXZzZ0lEQ2l0WUlkZ2I5Rmt3TVFFaE55RURzdjA5R1FMREJSS2VBQUFDQU9RRHJBTGtCY2NBQ3dBWEFDOEFzQUJGV0xBREx4dXhBeDgrV2JBUDBMQVBMN0lKQWdvcldDSFlHL1Jac0FNUXNoVUNDaXRZSWRnYjlGa3dNUk0yTmhjV0ZnY0dCaWNtSmpjR0ZqTXlOamMySmlNaUJ1WUNwRzlqaGdJRW9HeG1pSW9HTmpFM1VBWUdOUzgyVkFTdmI2a0NBcGxwY3FNQ0FwWnJMRWxQTkRGSlZBQUNBQnNBQVFRRkJQd0FDd0FQQUVZQXNBa3ZzQUJGV0xBTkx4dXhEUTgrV2JBSkVMQUEwTEFKRUxJR0FRb3JXQ0hZRy9SWnNBUFFzQTBRc2c0QkNpdFlJZGdiOUZteUJRNEdFUkk1dEFzRkd3VUNYVEF4QVNFSElRTWpFeUUzSVJNekV5RTNJUUs0QVUwZy9yUTkwejMrcFNBQldUelRZZnpISHdNNUE0UEgvbndCaE1jQmVmc0Z4QUFCQUZZQ213THhCYjhBRndCWnNnZ1lHUkVTT1FDd0FFVllzQTh2RzdFUEh6NVpzQUJGV0xBQUx4dXhBQk0rV2JJV0Fnb3JXQ0hZRy9SWnNnSUFGaEVTT2JJRER3QVJFam13RHhDeUNBSUtLMWdoMkJ2MFdiSU1Ed0FSRWpteUV3OEFFUkk1TURFQklUY0JOamMySmljaUJnY0hOallYRmhZSEJnOENCUUtwL2EwWUFWWmhEQWNyS1RwRERMWUtyNEova2dVRmxrK2RBVjhDbTRjQkdWTkRLUzhCUnpRQmVaZ0NBb05vZm5jOGJnSUFBUUJuQW8wQytBVytBQ1FBYjdJSkpTWVJFamtBc0FCRldMQU5MeHV4RFI4K1diQUFSVml3R0M4YnNSZ1RQbG15QVJnTkVSSTVmTEFCTHhpd0RSQ3lCd0lLSzFnaDJCdjBXYklLQVFjUkVqbXdBUkN5SXdJS0sxZ2gyQnYwV2JJVEl3RVJFam13R0JDeUhnSUtLMWdoMkJ2MFdiSWNJeDRSRWprd01RRXpOalkzTmljbkpnY0hOallYRmhZSEJnWUhGZ2NHQmljbUpqVVhGaGN5TmpjMkp5TUJXVk05VFFjSlNoZGRITG9KcG4yQm1RVURTVkoyQkFPOGkzMlpzUVJxTmxNSERYaGNCR3dDT0M1RERRSUNUQUZwZWdJRGQySTdWeVlwZ1crQ0FnS0RiUUZaQWpndldRVUFBUURJQk5FQzBnWUFBQU1BSXdDd0FpK3lEd0lCWGJBQTBMQUFMN1FQQUI4QUFsMndBaEN3QTlBWnNBTXZHREF4QVNFQkl3RzFBUjMreE00R0FQN1JBQUgvM2Y1Z0JGUUVPZ0FUQUZheURSUVZFUkk1QUxBQVJWaXdBQzhic1FBYlBsbXdBRVZZc0Fndkc3RUlHejVac0FCRldMQVJMeHV4RVJFK1diQUFSVml3Q2k4YnNRb1BQbG13QUVWWXNBNHZHN0VPRHo1WnNnVUJDaXRZSWRnYjlGa3dNUUVEQmhjV0Z4WTNFek1ESXpjR0p5SW5BeU1CQWMxbUNBSUZoWmhhaXUyNzF3OW9qR3hTVnV3QkJBUTYvWkpWS0owREJId0RFL3ZHVm00Q09mNDlCZG9BQVFCOUFBQUQzQVd4QUFvQUs3SUNDd3dSRWprQXNBQkZXTEFJTHh1eENCOCtXYkFBUlZpd0FDOGJzUUFQUGxteUFRQUlFUkk1TURFaEV5Y21KamMyQURNRkF3SVNXampUNUJRVEFTdmhBU3o5QWdnQkEvL0owd0VLQWZwUUFBRUFuZ0pDQWJFRFZRQUxBQml5QXd3TkVSSTVBTEFETDdJSkRRb3JXQ0hZRy9SWk1ERVRORFkzTmhZVkZBWUhCaWFlVFRzOVRrNDhPMDRDeGoxT0FnSlBPRHROQWdKS0FBSC8wLzQ5QVM4QUJBQU9BQ215QWc4UUVSSTVBTEFBTDdBSEw3SUlBZ29yV0NIWUcvUlpzZzBJQUJFU09iSUJBQTBSRWprd01UY0hGaFlIQmdZSE56WTNOaWNuTjhVVFBqOEJBcktuQW9rUUNWSTRMUVE3RGxVL2JYY0dqUVphUEEwR2lRQUJBT0VDb0FLQkJiTUFCZ0E1c2dFSENCRVNPUUN3QUVWWXNBVXZHN0VGSHo1WnNBQkZXTEFBTHh1eEFCTStXYklFQlFBUkVqbXdCQkN5QXdJS0sxZ2gyQnYwV1RBeEFTTVRCemNsTXdIL3RXUE1Hd0Z1RndLZ0FqWXZtWE1BQWdDK0FxMERmUVhJQUE0QUhBQkFzaEVkSGhFU09iQVJFTEFPMEFDd0FFVllzQUF2RzdFQUh6NVpzZ2NkQUJFU09iQUhMN0lTQWdvcldDSFlHL1Jac0FBUXNoa0NDaXRZSWRnYjlGa3dNUUVXRmdjSEJnWW5KaVkzTno0Q0F3WVdGeFkyTnpjMkppY21CZ2NDU3BDakN3WVAwcG1OcHdzR0NtZW1jUWhGUms5c0RBZ0lSVVpRYkFzRnhRVEhtVUtremdRRXhKdENicWxiL2tsaGJBSUNkV2RHWkdrQ0FuWmtBUC8vQUFJQWlnTjFBNmtBSmdPQkNRQUFCd09CQVhNQUFQLy9BTGtBQUFVcUJhc0FKd1BQQUV3Q21BQW5BNE1CRkFBSUFRY0R6QUt3QUFBQUVBQ3dBRVZZc0FVdkc3RUZIejVaTURILy93Q3hBQUFGZ0FXdUFDY0Rnd0RxQUFnQUp3UFBBRVFDbXdFSEE4NERBZ0FBQUJBQXNBQkZXTEFKTHh1eENSOCtXVEF4Ly84QWxnQUFCWjhGdndBbkE0TUJuUUFJQUNjRHpBTWxBQUFCQndQTkFLSUNtd0FRQUxBQVJWaXdJQzhic1NBZlBsa3dNUUFDLzlMK2VnTWpCRkVBR0FBa0FHR3lJU1VtRVJJNXNDRVFzQUxRQUxBQVJWaXdJaThic1NJYlBsbXdBRVZZc0JBdkc3RVFGejVac0NJUXNod05DaXRZSWRnYjlGbXdBTkN3QUMreUJCQUFFUkk1c0JBUXNna0JDaXRZSWRnYjlGbXlEQkFBRVJJNXNoVUFFQkVTT1RBeEFRWUdCd2NHQndZV0Z4WTJOek1HQkNjbUpqYzJOemMyTndFVUJnY0dKalUwTmpjMkZnSnJDMWRmVW5nT0MwcE9VM01SN1JIKy9MeTN5UTBQdzIxZkZBRXNTam83VEVvN09rd0NsblNyVjBwdGIxSmdBZ0psVjdQVEJBVE1xYk9yWGxhTUFUczdTd0lDU2pnNVRBSUNTZ0QvLy8ra0FBQUVyZ2MyQWlZQUpRQUFBUWNBUkFGYkFUWUFFd0N3QUVWWXNBUXZHN0VFSHo1WnNBemNNREVBLy8vL3BBQUFCTWdITmdJbUFDVUFBQUVIQUhjQjlnRTJBQk1Bc0FCRldMQUZMeHV4QlI4K1diQU4zREF4QVAvLy82UUFBQVN1QnpjQ0pnQWxBQUFCQndGbkFQSUJOZ0FUQUxBQVJWaXdCQzhic1FRZlBsbXdEOXd3TVFELy8vK2tBQUFFeVFjckFpWUFKUUFBQVFjQmJnRUFBVGNBQ1FDd0JDK3dGZHd3TVFELy8vK2tBQUFFcmdjREFpWUFKUUFBQVFjQWF3RW9BVFlBREFDd0JDK3dITnl3QzlBd01mLy8vNlFBQUFTdUI1VUNKZ0FsQUFBQkJ3RnNBWXdCYWdBTUFMQUVMN0FVM0xBWDBEQXhBQUwvaHdBQUIzZ0ZzQUFQQUJJQWR3Q3dBRVZZc0FZdkc3RUdIejVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3QkM4YnNRUVBQbG15RVFZQUVSSTVzQkV2c2dJQkNpdFlJZGdiOUZtd0JoQ3lDQUVLSzFnaDJCdjBXYklMQmdBUkVqbXdDeSt5REFFS0sxZ2gyQnYwV2JBQUVMSU9BUW9yV0NIWUcvUlpzaElHQUJFU09UQXhJU0VUSVFNaEFTRUhJUU1oQnlFRElRRWhFd2EzL0prcy9pSHUvdGdFSmdQTEkvMk9Od0lWSS8zMFBBS0UrMWdCWmxVQlZQNnNCYkRGL21qRi9qWUJad0o2QVAvL0FHWCtPQVVOQmNjQ0pnQW5BQUFBQndCN0Fici8rLy8vQUNjQUFBUzZCejBDSmdBcEFBQUJCd0JFQVNNQlBRQVRBTEFBUlZpd0JpOGJzUVlmUGxtd0Rkd3dNUUQvL3dBbkFBQUV1Z2M5QWlZQUtRQUFBUWNBZHdHK0FUMEFFd0N3QUVWWXNBWXZHN0VHSHo1WnNBN2NNREVBLy84QUp3QUFCTG9IUGdJbUFDa0FBQUVIQVdjQXVnRTlBQk1Bc0FCRldMQUdMeHV4Qmg4K1diQVIzREF4QVAvL0FDY0FBQVM2QndvQ0pnQXBBQUFCQndCckFQQUJQUUFNQUxBR0w3QWQzTEFNMERBeC8vOEFOUUFBQWpJSFBRSW1BQzBBQUFFSEFFVC8zQUU5QUJNQXNBQkZXTEFDTHh1eEFoOCtXYkFGM0RBeEFQLy9BRFVBQUFOSUJ6MENKZ0F0QUFBQkJ3QjNBSFlCUFFBVEFMQUFSVml3QXk4YnNRTWZQbG13QnR3d01RRC8vd0ExQUFBREVnYytBaVlBTFFBQUFRY0JaLzl6QVQwQUV3Q3dBRVZZc0FJdkc3RUNIejVac0FqY01ERUEvLzhBTlFBQUF5d0hDZ0ltQUMwQUFBRUhBR3YvcVFFOUFBd0FzQUl2c0JYY3NBVFFNREVBQXYvL0FBQUUvZ1d3QUE4QUhnQnBzaDRmSUJFU09iQWVFTEFPMEFDd0FFVllzQVV2RzdFRkh6NVpzQUJGV0xBQUx4dXhBQTgrV2JJREFBVVJFamw4c0FNdkdMSUNCd29yV0NIWUcvUlpzQkhRc0FBUXNoTUJDaXRZSWRnYjlGbXdCUkN5SEFFS0sxZ2gyQnYwV2JBREVMQWQwTEFlMERBeE14TWpOek1UQlRJRUVnY0hCZ0lFSXhNakF4Y3lKRGMySnlZbUp5Y0RNMFZ4dHg2MmJnR0t0Z0VIZGhjTEhzMyt2TUtmM1U2U3hnRUZKUm9IQ1plR3VVdmVBb3lxQW5vQnRmN0J3RS9KL3Ntc0FveitQZ0g3M1poeGthUUVBZjVTQVAvL0FDY0FBQVdHQnlzQ0pnQXlBQUFCQndGdUFTZ0JOd0FKQUxBRkw3QVUzREF4QVAvL0FHdi81d1VoQnpZQ0pnQXpBQUFCQndCRUFYSUJOZ0FUQUxBQVJWaXdDaThic1FvZlBsbXdKTnd3TVFELy93QnIvK2NGSVFjMkFpWUFNd0FBQVFjQWR3SU5BVFlBQ1FDd0NpK3dKZHd3TVFELy93QnIvK2NGSVFjM0FpWUFNd0FBQVFjQlp3RUpBVFlBQ1FDd0NpK3dKTnd3TVFELy93QnIvK2NGSVFjckFpWUFNd0FBQVFjQmJnRVhBVGNBQ1FDd0NpK3dMZHd3TVFELy93QnIvK2NGSVFjREFpWUFNd0FBQVFjQWF3RS9BVFlBREFDd0NpK3dOTnl3STlBd01RQUJBQ01BMWdRVUJJWUFDd0E0QUxBREw3SUpEQU1SRWptd0NTK3lDZ2tERVJJNXNnUURDUkVTT2JJQkNnUVJFam13QXhDd0JkQ3lCd1FLRVJJNXNBa1FzQXZRTURFVEFRTTNFd0VYQVJNSEF3RWpBV3Y3bnZvQmFuLytsZnVlKy82WEFYY0JRUUZEaS82L0FVR2gvci8rdllzQlFQN0FBQUFEQUJYL29RV1lCZTBBRndBaEFDc0FWYkllTEMwUkVqbXdIaEN3QzlDd0hoQ3dKOUFBc0FCRldMQU1MeHV4REI4K1diQUFSVml3QUM4YnNRQVBQbG15SndFS0sxZ2gyQnYwV2JBbDBMQWEwTEFNRUxJZEFRb3JXQ0hZRy9SWnNCdlFzQ1RRTURFRkppY0hKemNtTnpjU0VpUVhGaGMzTXdjV0Z4WUNBZ1FCQmhjQkppY21BZ2NHQVRZbkFSWVhGaEkzTndKWG5IdDJ0Y0pzQWdNVHdRRTF2cjZBY0xQRU9BNFJTc24rNVA1aEF4UUNmVDZCcHVJcEdnTFFCUWI5a3o5Z3NPTWtFUlVFU1pjQjhMRGlUd0VNQVg3S0FnUmpqL1I1Z0tyK1pmN0ltd0lpVlZNRFAwNEZCZjhBNlpVQkVFWkgvTll5QWdVQkYvcDVBUC8vQUZ2LzVnVXZCellDSmdBNUFBQUJCd0JFQVVvQk5nQVRBTEFBUlZpd0NpOGJzUW9mUGxtd0ZOd3dNUUQvL3dCYi8rWUZMd2MyQWlZQU9RQUFBUWNBZHdIbEFUWUFFd0N3QUVWWXNCSXZHN0VTSHo1WnNCWGNNREVBLy84QVcvL21CUzhITndJbUFEa0FBQUVIQVdjQTRRRTJBQk1Bc0FCRldMQUtMeHV4Q2g4K1diQVgzREF4QVAvL0FGdi81Z1V2QndNQ0pnQTVBQUFCQndCckFSY0JOZ0FXQUxBQVJWaXdDaThic1FvZlBsbXdKTnl3R2RBd01mLy9BS0VBQUFWTkJ6WUNKZ0E5QUFBQkJ3QjNBYjBCTmdBVEFMQUFSVml3QVM4YnNRRWZQbG13Qzl3d01RQUFBZ0FuQUFBRWdnV3dBQXdBRlFCWHNnOFdGeEVTT2JBUEVMQUkwQUN3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFLTHh1eENnOCtXYklDQUFvUkVqbXdBaSt5RHdBS0VSSTVzQTh2c2dnQkNpdFlJZGdiOUZtd0FoQ3lGUUVLSzFnaDJCdjBXVEF4QVFNWEZoWUhCZ1FqSndNakV4TURGelkyTnpZbUp3SVJNY3ZlK1E4US9zM3IvRFh0L1p0VjRZQ3NEdzV3YWdXdy91Z0JBZXJDeS9RQi90UUZzUDRsL2hvQ0FvbHhhM3dFQUFBQkFCdi81d1JNQmhvQUxRQllzaUV1THhFU09RQ3dBRVZZc0FVdkc3RUZJVDVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3RlM4YnNSVVBQbG15RGdVVkVSSTVzaG9CQ2l0WUlkZ2I5Rm15SUJVRkVSSTVzQVVRc2lvQkNpdFlJZGdiOUZrd01TRWpFellrRnhZV0J3NERCd1llQWdjR0JpY21KemNXTXpJMk56WW1KeVkzUGdNM05pWW5KZ1lIQVFqdHZSd0JBTWludmcwRUpHQWNCd2d1aURVQ0NmaTlxM0ZFWjJ4WWRnc0lNa1orQ1FReVBEUUhDVVZHV25VVUJGSFM5d1FFdlp3eFY1cENKakZtbVc0NHJjVUVBa0hCUWxsSk5HWkxobTg1WFZsY04weGNCQU9EaC8vL0FDTC82QVBjQmdBQ0pnQkZBQUFCQndCRUFMTUFBQUFUQUxBQVJWaXdHQzhic1JnYlBsbXdMZHd3TVFELy93QWkvK2dFSUFZQUFpWUFSUUFBQVFjQWR3Rk9BQUFBRXdDd0FFVllzQmd2RzdFWUd6NVpzQzdjTURFQS8vOEFJdi9vQStrR0FRSW1BRVVBQUFFR0FXZEtBQUFUQUxBQVJWaXdHQzhic1JnYlBsbXdNTnd3TVFELy93QWkvK2dFSVFYMUFpWUFSUUFBQVFZQmJsZ0JBQk1Bc0FCRldMQVlMeHV4R0JzK1diQXYzREF4QVAvL0FDTC82QVFEQmMwQ0pnQkZBQUFCQndCckFJQUFBQUFXQUxBQVJWaXdHQzhic1JnYlBsbXdNdHl3UGRBd01mLy9BQ0wvNkFQY0JsOENKZ0JGQUFBQkJ3RnNBT1FBTkFBV0FMQUFSVml3R0M4YnNSZ2JQbG13TmR5d085QXdNUUFEQUEvLzZBWndCRklBS3dBMUFENEErTElDUDBBUkVqbXdBaEN3TDlDd0FoQ3dPZEFBc0FCRldMQWRMeHV4SFJzK1diQUFSVml3R1M4YnNSa2JQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFGTHh1eEJROCtXYklESFFBUkVqbXlDd1VaRVJJNXNBc3ZzQmtRc2hFQkNpdFlJZGdiOUZteUZBc1JFUkk1UUFrTUZCd1VMQlE4RkFSZHNoc2RBQkVTT2JJNkhRQVJFam13T2krMEh6b3ZPZ0p4c284NkFWMjBYenB2T2dKeHRMODZ6em9DWGJUdk92ODZBbkd5SVFjS0sxZ2gyQnYwV2JBQUVMSWxBUW9yV0NIWUcvUlpzaWdkQUJFU09iQUZFTElzQndvcldDSFlHL1Jac0FzUXNqQUhDaXRZSWRnYjlGbXdIUkN5TmdFS0sxZ2gyQnYwV1RBeEJTSW1Kd1luSmlZM05pUXpGemMySnlZbkpnWUhKejRDRnhZWE5oY1dFZ2NISVFZV0Z4WTJOeGNHQmlVeU56Y25CZ1lIQmhZQkpnWUhJVGMySnlZRWFuTzhOYXo5bXJRSUNnRUY1cjhOQmdRUmQxZDNEZTBIZTl0NzExcWJ1Y0xIR2hYOVl3NTNjMVdYU2pwQjAveTJjb29vcVd1UkRBbE9BNDFna2k0QnRnWUhCQTRUVTB5a0JBS3ZrNkd5QWtvbUluVURBbFJKRTJLWlV3SUZnSWdFQnY3eTFvMkluUUlDTlNlb09UNjRadElCQTE1UFAwZ0M1d09IaHlFdEtvMEEvLzhBT1A0NEErNEVVZ0ltQUVjQUFBQUhBSHNCUFAvNy8vOEFPLy9xQkFJR0FBSW1BRWtBQUFFSEFFUUFuQUFBQUJNQXNBQkZXTEFKTHh1eENScytXYkFoM0RBeEFQLy9BRHYvNmdRSkJnQUNKZ0JKQUFBQkJ3QjNBVGNBQUFBVEFMQUFSVml3Q1M4YnNRa2JQbG13SXR3d01RRC8vd0E3LytvRUFnWUJBaVlBU1FBQUFRWUJaek1BQUJNQXNBQkZXTEFKTHh1eENScytXYkFrM0RBeEFQLy9BRHYvNmdRQ0JjMENKZ0JKQUFBQkJnQnJhUUFBRmdDd0FFVllzQWt2RzdFSkd6NVpzQ2Jjc0RIUU1ESC8vd0FpQUFBQjV3WDVBaVlBOUFBQUFRWUFSSkg1QUJNQXNBQkZXTEFDTHh1eEFocytXYkFGM0RBeEFQLy9BQ0lBQUFMOUJma0NKZ0QwQUFBQkJnQjNLL2tBRXdDd0FFVllzQU12RzdFREd6NVpzQWJjTURFQS8vOEFJZ0FBQXNjRitnSW1BUFFBQUFFSEFXZi9LUC81QUJNQXNBQkZXTEFDTHh1eEFocytXYkFJM0RBeEFQLy9BQ0lBQUFMaEJjWUNKZ0QwQUFBQkJ3QnIvMTcvK1FBV0FMQUFSVml3QWk4YnNRSWJQbG13Q3R5d0ZkQXdNUUFDQUViLzZBUktCaXdBSGdBcUFGNnlFQ3NzRVJJNXNCQVFzQ2pRQUxBQVJWaXdHaThic1JvaFBsbXdBRVZZc0Fndkc3RUlEejVac2hBYUNCRVNPYkFRTDdBYUVMSVpBUW9yV0NIWUcvUlpzQkFRc2lFSENpdFlJZGdiOUZtd0NCQ3lKd0VLSzFnaDJCdjBXVEF4QVJZU0J3Y0dBZ1luTGdJM1BnSVhGaGNtSndjbk55WW5OeFlYTnhjQkppY21CZ2NHRmhjV05qY0RwVnRCRnd3WHFPeUpmOFZnREEySTRJV0thd1JnNEQrNFc2VmIzcFRKUHY3NE5wTi9xeEFPYVdKMm94a0ZGSnYrdkxOV3AvN3NpUU1FZ055QmtQQ0dCQVJabVlxSWVXeEpNTUkyZzNwNS9UbGhCUUsyazNpbEF3WFFyUUQvL3dBTkFBQUVKd1gxQWlZQVVnQUFBUVlCYmw0QkFCTUFzQUJGV0xBREx4dXhBeHMrV2JBVzNEQXhBUC8vQURuLzZBUW5CZ0FDSmdCVEFBQUJCd0JFQUxBQUFBQVRBTEFBUlZpd0JDOGJzUVFiUGxtd0l0d3dNUUQvL3dBNS8rZ0VKd1lBQWlZQVV3QUFBUWNBZHdGTEFBQUFFd0N3QUVWWXNBUXZHN0VFR3o1WnNDUGNNREVBLy84QU9mL29CQ2NHQVFJbUFGTUFBQUVHQVdkSEFBQVRBTEFBUlZpd0JDOGJzUVFiUGxtd0pkd3dNUUQvL3dBNS8rZ0VKd1gxQWlZQVV3QUFBUVlCYmxVQkFCTUFzQUJGV0xBRUx4dXhCQnMrV2JBazNEQXhBUC8vQURuLzZBUW5CYzBDSmdCVEFBQUJCZ0JyZlFBQURBQ3dCQyt3TXR5d0lkQXdNUUFEQUQwQWtBUTZCTThBQXdBUEFCc0FVcklZSEIwUkVqbXdHQkN3QU5Dd0dCQ3dCdEFBc0FNdnNnQUJDaXRZSWRnYjlGbXdBeEN4RFFvcldOZ2IzRm15QncwS0sxZ2gyQnYwV2JBQUVMRVRDaXRZMkJ2Y1diSVpEUW9yV0NIWUcvUlpNREVCSVRjaEFUUTJOellXRlJRR0J3WW1BelEyTnpZV0ZSUUdCd1ltQkJUOEtTVUQyUDNDVGpvOVRrcytPMCtPVEQwNVVVdzlPVkVDUnRRQktUMUxBZ0pNT0RsT0FnSkkvUW81VUFJQ1NUdzdTd0lDU0FBQUF3QXEvM2NFTXdTN0FCc0FKQUF1QUZXeUt5OHdFUkk1c0NzUXNCSFFzQ3NRc0NMUUFMQUFSVml3QlM4YnNRVWJQbG13QUVWWXNCSXZHN0VTRHo1WnNpb0JDaXRZSWRnYjlGbXdLTkN3SHRDd0JSQ3lJUUVLSzFnaDJCdjBXYkFmMExBbjBEQXhFelkyTnpZWEZoYzNGd2NXRnhZSEJnSUdKeVluQnljM0ppY21OeGNHRndFbUp5WUdCaVUySndFV0Z4WTJOelpFRDE1T25OOWVYMkdia25BSEFnZ1VtL1NVVmx0bG01SjJDQU1INFFFVUFaUW1OV1NYVUFJUUFSTCtjQ2dxZWFzZURBSWdkdE5PblFRQ0k1QUIwb1RET2xPZi92NkxBZ0lmbEFIUmdzYzlQSHcvUFFKbkV3SUJnZkdEUER6OW9RNENBNzZ2VkFELy93QksvK2dFTVFZQUFpWUFXUUFBQVFjQVJBQzFBQUFBRXdDd0FFVllzQWd2RzdFSUd6NVpzQlhjTURFQS8vOEFTdi9vQkRFR0FBSW1BRmtBQUFFSEFIY0JVQUFBQUFrQXNBY3ZzQmJjTURFQS8vOEFTdi9vQkRFR0FRSW1BRmtBQUFFR0FXZE1BQUFKQUxBSEw3QVYzREF4QVAvL0FFci82QVF4QmMwQ0pnQlpBQUFCQndCckFJSUFBQUFNQUxBSEw3QWwzTEFVMERBeC8vLy90ZjVGQkJJR0FBSW1BRjBBQUFFSEFIY0JHZ0FBQUFrQXNBRXZzQkxjTURFQUFBTC96ZjVnQkJRR0FBQVJBQjBBVnJJRUhoOFJFam13QkJDd0hOQUFzQWt2c0FCRldMQU5MeHV4RFJzK1diQUFSVml3Qnk4YnNRY1JQbG13QUVWWXNBUXZHN0VFRHo1WnNBMFFzaFlCQ2l0WUlkZ2I5Rm13QkJDeUd3RUtLMWdoMkJ2MFdUQXhBUVlDQmljbUp3TWpBVE1ETmhjV0ZoY1dCemMySmljbUJ3TVdGeFkyQkF3VWlNMTlxR0poN2dGVDdXcDZvNTJ4QlFIekJRTmFYWVZpVlMrSmRxRUNHS1QrOTRRREJIWDkvUWVnL2RaOEJBVGV3VHhCU24rTkJBUi8vaDE1QkFPKy8vLy90ZjVGQkJJRnpRSW1BRjBBQUFFR0FHdE1BQUFNQUxBQkw3QWgzTEFRMERBeC8vLy9wQUFBQk1VRzZnSW1BQ1VBQUFFSEFISUErZ0U2QUJNQXNBQkZXTEFFTHh1eEJCOCtXYkFNM0RBeEFQLy9BQ0wvNkFRZEJiUUNKZ0JGQUFBQkJnQnlVZ1FBQ1FDd0dDK3dMTnd3TVFELy8vK2tBQUFFcmdjZEFpWUFKUUFBQVFjQmFnRXdBVFlBQ1FDd0JDK3dEdHd3TVFELy93QWkvK2dEOUFYbkFpWUFSUUFBQVFjQmFnQ0lBQUFBQ1FDd0dDK3dMOXd3TVFBQUF2K2svbEVFcmdXd0FCY0FHZ0Izc2hVYkhCRVNPYkFWRUxBYTBBQ3dBRVZZc0JVdkc3RVZIejVac0FCRldMQUxMeHV4Q3hFK1diQUFSVml3RXk4YnNSTVBQbG13QUVWWXNCY3ZHN0VYRHo1WnNBc1FzZ1lEQ2l0WUlkZ2I5Rm13RnhDd0VOQ3dFQyt5R1JNVkVSSTVzQmt2c2hFQkNpdFlJZGdiOUZteUdoVVRFUkk1TURFaEZ3Y0dCd1lYRmpjWEJpY2lKamMyTndNaEF5RUJNd0VCSVFNRWNRVXZnd2NGT0JzOURFVlZWMmtDQTdRMi9kK3UvdllERXQ0Qkd2MFdBWmhqQXg5V1Zqa0RBUmVRS3dKdFZKVnBBVUgrclFXdytsQUNId0phQUFBQ0FDTCtVUVBjQkZBQU1BQTdBSnV5R2p3OUVSSTVzQm9Rc0RiUUFMQUFSVml3S0M4YnNTZ2JQbG13QUVWWXNBc3ZHN0VMRVQ1WnNBQkZXTEFBTHh1eEFBOCtXYkFBUlZpd0ZDOGJzUlFQUGxtd0FCQ3dFTkN3RUMreUVpZ0FFUkk1c2hvVUtCRVNPYkFhTDdBb0VMSWdCd29yV0NIWUcvUlpzaVFhSUJFU09VQUpEQ1FjSkN3a1BDUUVYYkFVRUxJeEFRb3JXQ0hZRy9SWnNCb1FzallIQ2l0WUlkZ2I5Rmt3TVNFWEJ3WUhCaGNXTnhjR0p5SW1OelkzSnpVR0p5WW1OellrTXhjM05pY21KeVlHQndjK0FoY1dGZ2NEQndZWEJ5VVdOamMzSnlJR0J3WVdBMG9GTDRNSEJUZ2JQUXhGVlZkcEFnTzFCSWFiamJrR0NBRVk3Sm9PQmdZVWUweHpEZTBIZ05SMnNjWVJVd2dERWdIK0lVdUFMU1Z4aHFBTENFc0RIMVpXT1FNQkY1QXJBbTFVbG1rcEtYMEVBckdJcThRQ1NpY2liQU1DVVVRQ1pKZFVBZ1ROby80RldqczRFcTRDU1RyTkFXVllRMDBBLy84QVpmL29CUTBIU3dJbUFDY0FBQUVIQUhjQitBRkxBQWtBc0F3dnNDSGNNREVBLy84QU9QL3BBL01HQUFJbUFFY0FBQUVIQUhjQklRQUFBQWtBc0JFdnNCL2NNREVBLy84QVpmL29CUTBIVEFJbUFDY0FBQUVIQVdjQTlBRkxBQWtBc0F3dnNDRGNNREVBLy84QU9QL3BBKzRHQVFJbUFFY0FBQUVHQVdjZEFBQUpBTEFSTDdBZTNEQXhBUC8vQUdYLzZBVU5CeXdDSmdBbkFBQUJCd0ZyQWRVQlZBQUpBTEFNTDdBbjNEQXhBUC8vQURqLzZRUHVCZUVDSmdCSEFBQUJCd0ZyQVA0QUNRQUpBTEFSTDdBbDNEQXhBUC8vQUdYLzZBVU5CMUFDSmdBbkFBQUJCd0ZvQVFzQlN3QUpBTEFNTDdBajNEQXhBUC8vQURqLzZRUHdCZ1VDSmdCSEFBQUJCZ0ZvTkFBQUNRQ3dFUyt3SWR3d01RRC8vd0FuQUFBRTRBZENBaVlBS0FBQUFRY0JhQUNiQVQwQUV3Q3dBRVZZc0FFdkc3RUJIejVac0J6Y01ERUEvLzhBTy8vbkJkVUdBZ0FtQUVnQUFBQUhBNnNFdndUOEFBTC8vd0FBQlA0RnNBQVBBQjRBYWJJZUh5QVJFam13SGhDd0R0QUFzQUJGV0xBRkx4dXhCUjgrV2JBQVJWaXdBQzhic1FBUFBsbXlBd0FGRVJJNWZMQURMeGl5QWdjS0sxZ2gyQnYwV2JBUjBMQUFFTElUQVFvcldDSFlHL1Jac0FVUXNod0JDaXRZSWRnYjlGbXdBeEN3SGRDd0h0QXdNVE1USXpjekV3VXlCQklIQndZQ0JDTVRJd01YTWlRM05pY21KaWNuQXpORmNiY2V0bTRCaXJZQkIzWVhDeDdOL3J6Q245MU9rc1lCQlNVYUJ3bVhocmxMM2dLTXFnSjZBYlgrd2NCUHlmN0pyQUtNL2o0Qis5MlljWkdrQkFIK1VnQUFBZ0E3LytjRkdRWUFBQm9BSlFDTXNnVW1KeEVTT2JBRkVMQWowQUN3Rnkrd0FFVllzQkF2RzdFUUd6NVpzQUJGV0xBREx4dXhBdzgrV2JBQVJWaXdCaThic1FZUFBsbXlMeGNCWGJJUEZ3RmRzaFlYQXhFU09iQVdMN0lUQndvcldDSFlHL1Jac0FIUXNnUUdFQkVTT2JJU0VBWVJFam13RmhDd0dkQ3dCaEN5SGdFS0sxZ2gyQnYwV2JBUUVMSWpBUW9yV0NIWUcvUlpNREVCSXdNak53WW5KaVluSmpjM05oSTJGeFlYTnlNM016Y3pCek1CQmhZWEZqY1RKaWNtQmdUN3FkWFVFSDZxbDdVSEF3WURGSXpPZnFWZEx2QWU4UnZ1R2FyOEVRZGJXb2xrVVMrSGlLWUV5ZnMzY0lrRUF1VytQanNWcHdFS2d3TUVkL1dxalkzOFRueVNBZ1NKQWRGOUJBVDRBUC8vQUNjQUFBUzZCdkVDSmdBcEFBQUJCd0J5QU1JQlFRQVRBTEFBUlZpd0JpOGJzUVlmUGxtd0Rkd3dNUUQvL3dBNy8rb0VCZ1cwQWlZQVNRQUFBUVlBY2pzRUFBa0FzQWt2c0NEY01ERUEvLzhBSndBQUJMb0hKQUltQUNrQUFBRUhBV29BK0FFOUFBa0FzQVl2c0EvY01ERUEvLzhBTy8vcUJBSUY1d0ltQUVrQUFBRUdBV3B4QUFBSkFMQUpMN0FqM0RBeEFQLy9BQ2NBQUFTNkJ4NENKZ0FwQUFBQkJ3RnJBWnNCUmdBSkFMQUdMN0FVM0RBeEFQLy9BRHYvNmdRQ0JlRUNKZ0JKQUFBQkJ3RnJBUlFBQ1FBSkFMQUpMN0FvM0RBeEFBQUJBQ2YrVVFTNkJiQUFIQUNBc2hFZEhoRVNPUUN3QUVWWXNCY3ZHN0VYSHo1WnNBQkZXTEFRTHh1eEVCRStXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQlV2RzdFVkR6NVpzaHNWRnhFU09iQWJMN0lCQVFvcldDSFlHL1Jac0JVUXNnSUJDaXRZSWRnYjlGbXdBOUN3RUJDeUN3TUtLMWdoMkJ2MFdiQVhFTElaQVFvcldDSFlHL1JaTURFQklRTWhCeU1YQndZSEJoY1dOeGNHSnlJbU56WTNJUk1oQnlFRElRUFQvYnhPQXFZamNRVXZnd2NGT0JzOURFVlZWMmtDQTViOXNQd0RseVQ5WVVZQ1JRS0sva0RLQXg5V1Zqa0RBUmVRS3dKdFZJeGdCYkRNL200QUFnQTgvbXdFQ0FSUkFDTUFMQUNoc2dZdExoRVNPYkFHRUxBazBBQ3dBRVZZc0Jrdkc3RVpHejVac0FCRldMQU1MeHV4REJFK1diQUFSVml3RVM4YnNSRVBQbG13QTlDeUppMFpFUkk1c0NZdnNvOG1BVjIwSHlZdkpnSnh0SjhtcnlZQ2NiUmZKbThtQW5HMHZ5YlBKZ0pkdE84bS95WUNjYlF2Smo4bUFuS3lIUWNLSzFnaDJCdjBXYkFSRUxJaEFRb3JXQ0hZRy9SWnNpTVJHUkVTT2JBWkVMSWtBUW9yV0NIWUcvUlpNREVsQmdjSEJnY0dGeFkzRndZbklpWTNOamNtQWpjM05oSTJGeFlTQndjaEJoWVhGamNESmdNRk56WW5KaVlEcGxXTk1XMElCVGdiUFF4RlZWZHBBZ0pndDh3UkF4S2Q2b25MeXhrTy9WY0plbXVaZ2NtOFhnSEJCQWNHQzFxMmVESWhURkk1QXdFWGtDc0NiVlJ0VlJrQkhNNHBwUUVIaUFNRS90cnNhSUdlQWdXS0FsZ0cvdkFCRlM0c1IxTC8vd0FuQUFBRXVnZENBaVlBS1FBQUFRY0JhQURSQVQwQUV3Q3dBRVZZc0FZdkc3RUdIejVac0JIY01ERUEvLzhBTy8vcUJBWUdCUUltQUVrQUFBRUdBV2hLQUFBSkFMQUpMN0FrM0RBeEFQLy9BR3YvNmdVV0Iwd0NKZ0FyQUFBQkJ3Rm5BUEVCU3dBSkFMQU5MN0FqM0RBeEFQLy8vL2YrVHdSQ0JnRUNKZ0JMQUFBQkJnRm5QZ0FBQ1FDd0JDK3dMTnd3TVFELy93QnIvK29GRmdjeUFpWUFLd0FBQVFjQmFnRXZBVXNBQ1FDd0RTK3dKZHd3TVFELy8vLzMvazhFUWdYbkFpWUFTd0FBQVFZQmFud0FBQWtBc0FRdnNDN2NNREVBLy84QWEvL3FCUllITEFJbUFDc0FBQUVIQVdzQjBnRlVBQWtBc0EwdnNDcmNNREVBLy8vLzkvNVBCRUlGNFFJbUFFc0FBQUVIQVdzQkh3QUpBQWtBc0FRdnNEUGNNREVBLy84QWEvMzVCUllGeUFJbUFDc0FBQUFIQTZzQmJ2NlMvLy8vOS81UEJFSUdxd0ltQUVzQUFBRUhBKzBCTkFCK0FBa0FzQVF2c0MvY01ERUEvLzhBSndBQUJZY0hQZ0ltQUN3QUFBRUhBV2NCRWdFOUFCTUFzQUJGV0xBSEx4dXhCeDgrV2JBUTNEQXhBUC8vQUEwQUFBUDVCMTRDSmdCTUFBQUJCd0ZuQUZJQlhRQUpBTEFSTDdBVTNEQXhBQUFDQUM0QUFBWGJCYkFBRXdBWEFHc0FzQUJGV0xBUEx4dXhEeDgrV2JBQVJWaXdDQzhic1FnUFBsbXlGQWdQRVJJNXNCUXZzaEFVRHhFU09iQVFMN0FBMExBUUVMSVhCd29yV0NIWUcvUlpzQVBRc0FnUXNBWFFzQlFRc2djQkNpdFlJZGdiOUZtd0Z4Q3dDdEN3RUJDd0RkQ3dEeEN3RXRBd01RRXpCeU1ESXhNaEF5TVRJemN6RXpNRElSTXpBU0UzSVFWZmZCMTdzL1p3L1lwdzlyTjRISGd0OXk0Q2RpMzIvQ3NDZGlIOWlnU3VvdnYwQW9mOWVRUU1vZ0VDL3Y0QkF2Mml1Z0FCQUNzQUFBUVhCZ0FBR2dCMHNnTWJIQkVTT1FDd0dDK3dBRVZZc0FRdkc3RUVHejVac0FCRldMQVJMeHV4RVE4K1diQUFSVml3Q1M4YnNRa1BQbG15THhnQlhiSVBHQUZkc2hvUkdCRVNPYkFhTDdJQkJ3b3JXQ0hZRy9SWnNnSVJCQkVTT2JBRUVMSU9BUW9yV0NIWUcvUlpzQUVRc0JQUXNCb1FzQmJRTURFQkl3TTJGeFlXQndNakV6WW5KaWNtQndNakV5TTNNemN6QnpNQ3krUXloNnlhbFJOMDdYWUZBdzJEaEdpSDdkUy9IcjRaN2h6aUJNZisvSTRFQXRhOS9VZ0N1eXNsZWdNQ2hQejZCTWVxajQ4QS8vOEFOUUFBQTBvSE1nSW1BQzBBQUFFSEFXNy9nUUUrQUFrQXNBSXZzQTdjTURFQS8vOEFGQUFBQXY4RjdnSW1BUFFBQUFFSEFXNy9Odi82QUFrQXNBSXZzQTdjTURFQS8vOEFOUUFBQTBZRzhRSW1BQzBBQUFFSEFITC9ld0ZCQUJNQXNBQkZXTEFDTHh1eEFoOCtXYkFGM0RBeEFQLy9BQjhBQUFMN0JhMENKZ0QwQUFBQkJ3QnkvekQvL1FBVEFMQUFSVml3QWk4YnNRSWJQbG13QmR3d01RRC8vd0ExQUFBREhRY2tBaVlBTFFBQUFRY0Jhdit4QVQwQUNRQ3dBaSt3Qjl3d01RRC8vd0FpQUFBQzBnWGdBaVlBOUFBQUFRY0JhdjltLy9rQUNRQ3dBaSt3Qjl3d01RRC8vLytPL2xjQ0tBV3dBaVlBTFFBQUFBWUJiZVlHLy8vL2R2NVJBZ2tGMkFJbUFFMEFBQUFHQVczT0FQLy9BRFVBQUFKVUJ4NENKZ0F0QUFBQkJ3RnJBRk1CUmdBSkFMQUNMN0FNM0RBeEFBQUJBQ0lBQUFITEJEb0FBd0FkQUxBQVJWaXdBaThic1FJYlBsbXdBRVZZc0FBdkc3RUFEejVaTURFaEl4TXpBUS90dk8wRU92Ly9BRFgvNXdhY0JiQUFKZ0F0QUFBQUJ3QXVBanNBQVAvL0FCLytSZ1FEQmRnQUpnQk5BQUFBQndCT0FnVUFBUC8vQUFQLzV3VXhCemNDSmdBdUFBQUJCd0ZuQVpJQk5nQUpBTEFBTDdBUTNEQXhBUC8vL3cvK1NBTEhCZDhDSmdGa0FBQUJCd0ZuL3lqLzNnQVRBTEFBUlZpd0RDOGJzUXdiUGxtd0Vkd3dNUUQvL3dBbi9ma0ZjUVd3QWlZQUx3QUFBQWNEcXdGZi9wTC8vd0FSL2ZrRVNnWUFBaVlBVHdBQUFBY0Rxd0R1L3BJQUFRQWhBQUFFalFRNkFBd0FYd0N3QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQXN2RzdFTER6NVpzZ1lDQkJFU09iQUdMN1FmQmk4R0FuR3lqd1lCWGJJQkFRb3JXQ0hZRy9SWnNnb0JCaEVTT1RBeEFTTURJeE16QXpNQklRRUJJUUhMYzB2c3ZPeExTQUdSQVRiK0J3RkYvdVVCclA1VUJEcitVQUd3L2VmOTN3RC8vd0FuQUFBRHd3YzJBaVlBTUFBQUFRY0Fkd0JxQVRZQUV3Q3dBRVZZc0FVdkc3RUZIejVac0FqY01ERUEvLzhBSHdBQUF6MEhrUUltQUZBQUFBRUhBSGNBYXdHUkFCTUFzQUJGV0xBREx4dXhBeUUrV2JBRzNEQXhBUC8vQUNmOStRUERCYkFDSmdBd0FBQUFCd09yQVNYK2t2Ly8vNkw5K1FJWEJnQUNKZ0JRQUFBQUJ3T3IvOVAra3YvL0FDY0FBQVBmQmJFQ0pnQXdBQUFCQndPckFza0Vxd0FRQUxBQVJWaXdDaThic1FvZlBsa3dNZi8vQUI4QUFBTjBCZ0lBSmdCUUFBQUJCd09yQWw0RS9BQUdBTEFJTHpBeC8vOEFKd0FBQThNRnNBSW1BREFBQUFBSEFXc0JYUDNVLy84QUh3QUFBdk1HQUFBbUFGQUFBQUFIQVdzQTh2MnZBQUVBSVFBQUE5SUZzQUFOQUZzQXNBQkZXTEFNTHh1eERCOCtXYkFBUlZpd0JpOGJzUVlQUGxteUFRd0dFUkk1c0FFdnNBRFFzQUVRc2dJSENpdFlJZGdiOUZtd0E5Q3dCaEN5QkFFS0sxZ2gyQnYwV2JBREVMQUkwTEFKMExBQUVMQUwwTEFLMERBeEFUY0hCd01oQnlFVEJ6YzNFek1CeGZBYzcxb0NnaVA4aDNDRkc0Vnk5d05zUnB0SC9mcktBb0ltbXljQ2tnQUFBUUFmQUFBQ1d3WUFBQXNBU2dDd0FFVllzQW92RzdFS0lUNVpzQUJGV0xBRUx4dXhCQTgrV2JJQkJBb1JFam13QVMrd0FOQ3dBUkN5QWdjS0sxZ2gyQnYwV2JBRDBMQUcwTEFIMExBQUVMQUowTEFJMERBeEFUY0hCd01qRXdjM054TXpBY0taSEppQTduS01ISXAvN1FOL05KdzEvUjRDaXkrY0x3TFpBUC8vQUNjQUFBV0dCellDSmdBeUFBQUJCd0IzQWg0Qk5nQVRBTEFBUlZpd0NDOGJzUWdmUGxtd0ROd3dNUUQvL3dBTkFBQUVKZ1lBQWlZQVVnQUFBUWNBZHdGVUFBQUFDUUN3QXkrd0Zkd3dNUUQvL3dBbi9ma0ZoZ1d3QWlZQU1nQUFBQWNEcXdHUS9wTC8vd0FOL2ZrRCtnUlNBaVlBVWdBQUFBY0Rxd0Q2L3BMLy93QW5BQUFGaGdjN0FpWUFNZ0FBQVFjQmFBRXhBVFlBRXdDd0FFVllzQVl2RzdFR0h6NVpzQS9jTURFQS8vOEFEUUFBQkNNR0JRSW1BRklBQUFFR0FXaG5BQUFKQUxBREw3QVgzREF4QVAvL0FBMEFBQVA2QmdNQ0pnQlNBQUFCQndPckFFQUUvUUFHQUxBWEx6QXhBQUVBSS81R0JYZ0ZzQUFUQUdleUJoUVZFUkk1QUxBQVJWaXdBQzhic1FBZlBsbXdBRVZZc0JBdkc3RVFIejVac0FCRldMQUVMeHV4QkJFK1diQUFSVml3REM4YnNRd1BQbG13QUVWWXNBNHZHN0VPRHo1WnNBUVFzZ2tCQ2l0WUlkZ2I5Rm15RFFBTUVSSTVzaElPQUJFU09UQXhBUUVHQmljaUp6Y1dNekkzTndFREl4TXpBUk1GZVA3L0dOZWxPMHdqTmltQklnZitTTGYyL2U0QnU3Y0ZzUG9ZdHN3Q0ZNWU94Q2dFSC92aEJiRDc0Z1FlQUFBQkFCSCtSZ1FHQkZJQUd3QmhzZ0ljSFJFU09RQ3dBRVZZc0FNdkc3RURHejVac0FCRldMQUFMeHV4QUJzK1diQUFSVml3Q2k4YnNRb1JQbG13QUVWWXNCa3ZHN0VaRHo1WnNnRURHUkVTT2JBS0VMSVBBUW9yV0NIWUcvUlpzQU1Rc2hZQkNpdFlJZGdiOUZrd01RRUhOaGNXRmdjREJnWW5KaWMzRmpNeU54TTJKeVluSmdjREl4TUJwUmVHdTZHV0ZuWVkwS05CUkNNNUo0RWZkZ1VDQjR1RFpZM3V2QVE3bUs4RUErYkUvU0MxeGdJQkU4VVB1d0xUTFNtTUJRUnEvTjhFT3YvL0FHdi81d1VoQnVvQ0pnQXpBQUFCQndCeUFSRUJPZ0FKQUxBS0w3QWozREF4QVAvL0FEbi82QVFuQmJRQ0pnQlRBQUFCQmdCeVR3UUFDUUN3QkMrd0lkd3dNUUQvL3dCci8rY0ZJUWNkQWlZQU13QUFBUWNCYWdGSEFUWUFDUUN3Q2krd0p0d3dNUUQvL3dBNS8rZ0VKd1huQWlZQVV3QUFBUWNCYWdDRkFBQUFDUUN3QkMrd0pOd3dNUUQvL3dCci8rY0Zkd2MxQWlZQU13QUFBUWNCYndHT0FUWUFEQUN3Q2krd0pkeXdKOUF3TWYvL0FEbi82QVMxQmY4Q0pnQlRBQUFCQndGdkFNd0FBQUFNQUxBRUw3QWozTEFsMERBeEFBSUFVUC91QjRvRnhRQVhBQ1VBa2JJYkppY1JFam13R3hDd0Z0QUFzQUJGV0xBTUx4dXhEQjgrV2JBQVJWaXdEaThic1E0ZlBsbXdBRVZZc0FNdkc3RUREejVac0FCRldMQUFMeHV4QUE4K1diQU9FTElRQVFvcldDSFlHL1Jac2hNQURoRVNPYkFUTDdJVUFRb3JXQ0hZRy9SWnNBQVFzaGNCQ2l0WUlkZ2I5Rm13QXhDeUdBRUtLMWdoMkJ2MFdiQU1FTElkQVFvcldDSFlHL1JaTURFaElRY0hKaVlDTnhNMkVpUXpGeGNoQnlFRElRY2hBeUVGRmpjVEppY21CZ2NEQmhjV0ZnYVUvTVhFVjU3bmFSUXlITFVCRTZWS3p3TlNKUDFoUmdKRkpQMjlUZ0ttKzVCUGU4WnpUS0RhSGk4SkJnaUJFUUVFblFFUW9RRTlxUUVOa2dJVHpQNXV5UDVBR1FNTUJEc09BZ0xad3Y3VFNFWjBpQUFBQXdCQy8rZ0czQVJTQUNBQUx3QTVBTGl5R2pvN0VSSTVzQm9Rc0NuUXNCb1FzRFBRQUxBQVJWaXdDUzhic1FrYlBsbXdBRVZZc0FRdkc3RUVHejVac0FCRldMQWNMeHV4SEE4K1diQUFSVml3Rnk4YnNSY1BQbG15QndrY0VSSTVzalFKSEJFU09iQTBMN0tQTkFGZHRCODBMelFDY2JJTkJ3b3JXQ0hZRy9SWnNCY1FzaEVCQ2l0WUlkZ2I5Rm15RXhjSkVSSTVzaG9KSEJFU09iQWNFTElsQVFvcldDSFlHL1Jac0FRUXNpd0JDaXRZSWRnYjlGbXdDUkN5TUFFS0sxZ2gyQnYwV1RBeEV6WVNOaGNXRmhjMkZ4WVNCd2NoQmhZWEZqY1hCZ1luSmlZbkJpY3VBamN6QnhjV0Z4WTJOemMxSmljbUJnY0JKZ1lISVRjMkp5WW1WQlNZN3BSeXR6R216c1BKR2hiOWNBMXJhSnFhUVVQTWUzYTFNYWJsaXNKWUVPd0ZBUTZzZTZRVkJ3aTBjcUFjQS90U2hUWUJwd1VIQlFoVEFpQ2hBUVNNQWdKZVViUUVCUDd6MTQrRm53TUZYNkErUVFJQ1hFNnhCQUtPK1paTEx0OEhBOGFsWVIzeUNBT3hwQUZUQVhxTUhDMHBRMDMvL3dBbkFBQUUyQWMyQWlZQU5nQUFBUWNBZHdHb0FUWUFDUUN3QkMrd0d0d3dNUUQvL3dBUUFBQURoZ1lBQWlZQVZnQUFBUWNBZHdDMEFBQUFDUUN3Q3krd0VOd3dNUUQvL3dBbi9ma0UyQVd3QWlZQU5nQUFBQWNEcXdFbS9wTC8vLytjL2ZrQzd3UlRBaVlBVmdBQUFBY0RxLy9OL3BMLy93QW5BQUFFMkFjN0FpWUFOZ0FBQVFjQmFBQzdBVFlBQ1FDd0JDK3dITnd3TVFELy93QVFBQUFEaEFZRkFpWUFWZ0FBQVFZQmFNZ0FBQWtBc0FzdnNCTGNNREVBLy84QUpQL3FCTHNITmdJbUFEY0FBQUVIQUhjQnhBRTJBQWtBc0FvdnNDemNNREVBLy84QUhQL3BCQU1HQUFJbUFGY0FBQUVIQUhjQk1RQUFBQWtBc0FndnNDZmNNREVBLy84QUpQL3FCTHNITndJbUFEY0FBQUVIQVdjQXdBRTJBQWtBc0FvdnNDdmNNREVBLy84QUhQL3BBOHdHQVFJbUFGY0FBQUVHQVdjdEFBQUpBTEFJTDdBbTNEQXhBUC8vQUNUK1BRUzdCY2NDSmdBM0FBQUFCd0I3QVpBQUFQLy9BQnorTkFQRUJGQUNKZ0JYQUFBQUJ3QjdBVUwvOS8vL0FDVC82Z1M3QnpzQ0pnQTNBQUFCQndGb0FOY0JOZ0FKQUxBS0w3QXUzREF4QVAvL0FCei82UVFBQmdVQ0pnQlhBQUFCQmdGb1JBQUFDUUN3Q0Mrd0tkd3dNUUQvL3dDYy9rQUZJZ1d3QWlZQU9BQUFBQWNBZXdGL0FBUC8vd0E3L2owQ3JnVkJBaVlBV0FBQUFBY0Fld0RWQUFELy93Q2NBQUFGSWdjN0FpWUFPQUFBQVFjQmFBREpBVFlBRXdDd0FFVllzQVl2RzdFR0h6NVpzQTNjTURFQS8vOEFPLy90QThnR2d3QW1BRmdBQUFBSEE2c0NzZ1Y5QUFFQW5BQUFCU0lGc0FBUEFFd0FzQUJGV0xBS0x4dXhDaDgrV2JBQVJWaXdBaThic1FJUFBsbXlEd29DRVJJNXNBOHZzZ0FIQ2l0WUlkZ2I5Rm13Qk5Dd0R4Q3dCdEN3Q2hDeUNBRUtLMWdoMkJ2MFdiQU0wREF4QVNNREl4TWpOek1USVRjaEJ5RURNd08reVlqMmljMGV6RFQrU3lRRVlpVCtTRFRLQXhMODdnTVNxZ0Vvek16KzJBQUFBZi9pLyswQ3JnVkJBQjRBZ0xJWEh5QVJFamtBc0FCRldMQVZMeHV4RlJzK1diQUFSVml3R1M4YnNSa2JQbG13QUVWWXNBc3ZHN0VMRHo1WnNoNFpDeEVTT2JBZUw3SUFCd29yV0NIWUcvUlpzQXNRc2dZQkNpdFlJZGdiOUZtd0FCQ3dEOUN3SGhDd0VkQ3dGUkN5RXdFS0sxZ2gyQnYwV2JBVkVMQVgwTEFYTDdBVEVMQWIwTEFjMERBeEFTTURCaGNXRnpJM0J3WWpKaVkzRXlNM016Y2pOek1UTXdNekJ5TUhNd0p0MFMwREFnWktKUzhRU2t0OGV3MHV6eDdORzYwZ3JDN3VMcmtmdWh6U0FqZis4UmtVUVFNSnZoVUNwWWdCRzZxbHRBRUgvdm0wcGYvL0FGdi81Z1V2QnlzQ0pnQTVBQUFCQndGdUFPOEJOd0FKQUxBQUw3QWQzREF4QVAvL0FFci82QVF4QmZVQ0pnQlpBQUFCQmdGdVdnRUFDUUN3Qnkrd0h0d3dNUUQvL3dCYi8rWUZMd2JxQWlZQU9RQUFBUWNBY2dEcEFUb0FDUUN3QUMrd0U5d3dNUUQvL3dCSy8rZ0VNUVcwQWlZQVdRQUFBUVlBY2xRRUFBa0FzQWN2c0JUY01ERUEvLzhBVy8vbUJTOEhIUUltQURrQUFBRUhBV29CSHdFMkFBa0FzQUF2c0JiY01ERUEvLzhBU3Yvb0JERUY1d0ltQUZrQUFBRUhBV29BaWdBQUFBa0FzQWN2c0JmY01ERUEvLzhBVy8vbUJTOEhsUUltQURrQUFBRUhBV3dCZXdGcUFBd0FzQUF2c0J6Y3NCL1FNREgvL3dCSy8rZ0VNUVpmQWlZQVdRQUFBUWNCYkFEbUFEUUFEQUN3Qnkrd0hkeXdJTkF3TWYvL0FGdi81Z1ZQQnpVQ0pnQTVBQUFCQndGdkFXWUJOZ0FNQUxBQUw3QVYzTEFYMERBeC8vOEFTdi9vQkxvRi93SW1BRmtBQUFFSEFXOEEwUUFBQUF3QXNBY3ZzQmJjc0JqUU1ERUFBUUJiL29nRk1nV3dBQ0FBWWJJSElTSVJFamtBc0FCRldMQUFMeHV4QUI4K1diQUFSVml3Rnk4YnNSY2ZQbG13QUVWWXNBMHZHN0VORno1WnNBQkZXTEFTTHh1eEVnOCtXYklFRWdBUkVqbXdEUkN5Q0FNS0sxZ2gyQnYwV2JBU0VMSWNBUW9yV0NIWUcvUlpNREVCQXdZR0J3WUhCaGNXTnhjR0p5SW1OelkzTGdJM0V6TURCaFlYRmpZM0V3VXlwUmUrbFhvS0JUZ2JQUXhGVlZkcEFnSTlrTkpnRWFYMnBSSjJlNGUwR2FjRnNQd3pwUFk0VUZnNUF3RVhrQ3NDYlZSWVNBaUUzNHdEenZ3eGk1d0VCSnFRQTlRQUFBRUFTdjVSQkRFRU9nQWpBSGV5RWlRbEVSSTVBTEFBUlZpd0dDOGJzUmdiUGxtd0FFVllzQ0V2RzdFaEd6NVpzQUJGV0xBTEx4dXhDeEUrV2JBQVJWaXdBQzhic1FBUFBsbXdBRVZZc0JNdkc3RVREejVac0FzUXNnWURDaXRZSWRnYjlGbXdBQkN3RU5Dd0VDK3lFU0VBRVJJNXNCTVFzaDRCQ2l0WUlkZ2I5Rmt3TVNFWEJ3WUhCaGNXTnhjR0p5SW1OelkzTndZbkxnSTNFek1EQmhjV0Z4WTNFek1EQTF3Rkw0TUhCVGdiUFF4RlZWZHBBZ094RW51NWFZczdESFh0ZGdRRENuT2RZWWp0dXdNZlZsWTVBd0VYa0NzQ2JWU1daMXFEQkFKa3Mza0N2UDFCSlNOOEJRYUVBd3I3eGdELy93QzNBQUFIT2djM0FpWUFPd0FBQVFjQlp3Ry9BVFlBRXdDd0FFVllzQXd2RzdFTUh6NVpzQS9jTURFQS8vOEFkd0FBQmZnR0FRSW1BRnNBQUFFSEFXY0JBZ0FBQUJNQXNBQkZXTEFMTHh1eEN4cytXYkFSM0RBeEFQLy9BS0VBQUFWTkJ6Y0NKZ0E5QUFBQkJ3Rm5BTGtCTmdBVEFMQUFSVml3QVM4YnNRRWZQbG13Qzl3d01RRC8vLysxL2tVRUVnWUJBaVlBWFFBQUFRWUJaeFlBQUJNQXNBQkZXTEFQTHh1eER4cytXYkFVM0RBeEFQLy9BS0VBQUFWTkJ3TUNKZ0E5QUFBQkJ3QnJBTzhCTmdBTUFMQUJMN0FhM0xBSjBEQXgvLy8vNVFBQUJPY0hOZ0ltQUQ0QUFBRUhBSGNCdVFFMkFCTUFzQUJGV0xBSEx4dXhCeDgrV2JBTTNEQXhBUC8vLytjQUFBUHhCZ0FDSmdCZUFBQUJCd0IzQVI4QUFBQVRBTEFBUlZpd0J5OGJzUWNiUGxtd0ROd3dNUUQvLy8vbEFBQUU1d2NYQWlZQVBnQUFBUWNCYXdHV0FUOEFDUUN3Qnkrd0V0d3dNUUQvLy8vbkFBQUQ1QVhoQWlZQVhnQUFBUWNCYXdEOEFBa0FDUUN3Qnkrd0V0d3dNUUQvLy8vbEFBQUU1d2M3QWlZQVBnQUFBUWNCYUFETUFUWUFDUUN3Qnkrd0R0d3dNUUQvLy8vbkFBQUQ3Z1lGQWlZQVhnQUFBUVlCYURJQUFBa0FzQWN2c0E3Y01ERUFBQUVBSGdBQUF5QUdHZ0FOQURLeUFnNFBFUkk1QUxBQVJWaXdCQzhic1FRaFBsbXdBRVZZc0FBdkc3RUFEejVac0FRUXNna0JDaXRZSWRnYjlGa3dNVE1UTmpZWEZoY0hKaWNpQmdjREhza1gycW84WWl3c0xWQm9EOG9FbjdIS0FnRVh1QXdDWTFuN1pnQUNBRTcvNkFVdkJjTUFHZ0FrQUY2eURTVW1FUkk1c0EwUXNCelFBTEFBUlZpd0VpOGJzUklmUGxtd0FFVllzQUF2RzdFQUR6NVpzZ2dTQUJFU09iQUlMN0FTRUxJTkFRb3JXQ0hZRy9SWnNBQVFzaHNCQ2l0WUlkZ2I5Rm13Q0JDeUhnRUtLMWdoMkJ2MFdUQXhCU1lrSnljbU56Y0ZOaWNtSmljbUJ5YzJJUllFRWdjSEJnSUVKeFkyTnlFSEJoY1dGZ0pKMC83N0dnUUZEQllEcnc4S0VxcUxwTkVlaGdFZnZnRUxkeGtQSHN2KzFwMlIya1A5UlFjT0NoQ1JGQVRyMURKVVdvOEJXMU9IbHdNRFNjbFVBN0QrdzhSb3pmNjhydGNEeTlFaVRrTnNkd0FCLzByK1JnTk1CaGtBSFFCeHNnSWVIeEVTT1FDd0FFVllzQlF2RzdFVUlUNVpzQUJGV0xBUEx4dXhEeHMrV2JBQVJWaXdIQzhic1J3YlBsbXdBRVZZc0FVdkc3RUZFVDVac0J3UXNnQUJDaXRZSWRnYjlGbXdCUkN5Q2dFS0sxZ2gyQnYwV2JBQUVMQU4wTEFPMExBVUVMSVpBUW9yV0NIWUcvUlpNREVCSXdNR0JpY21KemNXRnpJM0V5TTNNemMyTmhjV0Z3Y21JeUlIQnpNQ29jT1VFOGlpUTBBZ055UjRIWmVoSGFBTUZkaXFOV2NxTnlla0d3dkRBNGI4Tks3R0FnSVN2ZzRDcVFQVHRHV3l5QUlCRnJzTXhWSUFBZ0JiLytnR0pnWXVBQm9BS3dCYnNpQXNMUkVTT2JBZ0VMQWEwQUN3QUVWWXNBb3ZHN0VLSHo1WnNBQkZXTEFBTHh1eEFBOCtXYklOQ2dBUkVqbXdEUyt5RXdnS0sxZ2gyQnYwV2JBS0VMSWZBUW9yV0NIWUcvUlpzQUFRc2lnQkNpdFlJZGdiOUZrd01RVXVBaWNtRWhJM05oY1dGaGMyTmpjekFnVVdGeFlDQWdjR0V6YzJKaWNtQWc4Q0JoWVdGeFlTTndKSWo5UjdDQWMvbVd5cjNuZkZRMUpsRTdVZy92SVZCUVU5bzNXbDlBa0tnNGFzNVNNSkNBWTFkMW1sNGlnVUE0SDNvWDRCVUFFU1Y0a0VBbGhRRDRDRi9xNUhaMldHL3AzKzIxaDdBeGhxdGRBRUJmN3U5VUJwYmJ4aEF3Y0JBUE1BQWdBMi8rWUZCUVNvQUJnQUp3QmJzaDBvS1JFU09iQWRFTEFFMEFDd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBVkx4dXhGUTgrV2JJSEJCVVJFam13QnkreURnZ0tLMWdoMkJ2MFdiQVZFTEljQVFvcldDSFlHL1Jac0FRUXNpTUJDaXRZSWRnYjlGa3dNUk0yRWpZWEZoWVhOamMzTXdZR0J4WVhGZ2NDQUNjbUFqY1hGaFlYRmpZM056WW1KeVlHQndaUkVwM3hsR0t2UG1jYkRxRU9jMjRQQXdJSUpmN0szZFRnR09vRFkxbDZxQmdIQTJOaWVxWVpDQUlnb0FFR2l3SUNTVTBwZkV5UXFTZElSMGRKL3ZIK3pBVUdBVFhsYzJsL0JBUENxV0o5bFFRRHc2eFJBQUVBVy8vb0JxMEdBZ0FhQUZTeUZ4c2NFUkk1QUxBQVJWaXdBQzhic1FBZlBsbXdBRVZZc0JFdkc3RVJIejVac0FCRldMQU1MeHV4REE4K1diSUJBQXdSRWptd0FTK3lDQWdLSzFnaDJCdjBXYkFNRUxJV0FRb3JXQ0hZRy9SWk1ERUJCelkyTnpjR0JnY0RCZ0FuTGdJM0V6TURCaFlYRmpZM0V3VXlLR3AzRmEwVDFjMXNJdjY1OEpYY1p4R2w5cVVTZFgySHN4bW5CYkRmQzRtY0FkYmlEUDJrNlA3dUJBTis1SkVEenZ3eGlwNEVCSnFSQTlRQUFBRUFTdi9vQldFRWxBQWJBR2l5RkJ3ZEVSSTVBTEFBUlZpd0RTOGJzUTBiUGxtd0FFVllzQll2RzdFV0d6NVpzQUJGV0xBRUx4dXhCQTgrV2JBQVJWaXdDQzhic1FnUFBsbXlHQllFRVJJNXNCZ3ZzZ01JQ2l0WUlkZ2I5Rm15QmhZRUVSSTVzQWdRc2hNQkNpdFlJZGdiOUZrd01RRUdCZ2NESXpjR0p5NENOeE16QXdZWEZoY1dOeE16QnpZMk53VmhENlNsazk0VmU3bHBpenNNZGUxMUJBTUhkcDVmaU8wZlVsSVNCSlN1cVF6OHoydURCQUprczNrQ3ZQMUJKU044QlFhRUF3cUxEVng3Ly8vL0QvNUlBdnNGNHdJbUFXUUFBQUVIQVdqL1AvL2VBQWtBc0FBdnNCSGNNREVBLy84QWEvL3FCUllIU3dJbUFDc0FBQUVIQUhjQjlRRkxBQWtBc0EwdnNDVGNNREVBLy8vLzkvNVBCRUlHQUFJbUFFc0FBQUVIQUhjQlFnQUFBQWtBc0FRdnNDM2NNREVBLy84QUp3QUFCWVlITmdJbUFESUFBQUVIQUVRQmd3RTJBQk1Bc0FCRldMQUdMeHV4Qmg4K1diQUwzREF4QVAvL0FBMEFBQVA2QmdBQ0pnQlNBQUFCQndCRUFMa0FBQUFUQUxBQVJWaXdBeThic1FNYlBsbXdGTnd3TVFELy8vK2tBQUFFMmdleEFpWUFKUUFBQUFjRHhRR0VBUnovL3dBaS8rZ0VNZ1o4QWlZQVJRQUFBQWNEeFFEYy8rZi8vLytIQUFBSGVBZENBaVlBaVFBQUFRY0Fkd0xxQVVJQUV3Q3dBRVZZc0FZdkc3RUdIejVac0JYY01ERUEvLzhBRC8vb0JuQUdBUUltQUtrQUFBRUhBSGNDYXdBQkFBa0FzQmt2c0VIY01ERUEvLzhBRmYraEJaZ0hnQUltQUpzQUFBRUhBSGNDSUFHQUFCTUFzQUJGV0xBTUx4dXhEQjgrV2JBdTNEQXhBUC8vQUNyL2R3UXpCZjRDSmdDN0FBQUJCd0IzQVRQLy9nQVRBTEFBUlZpd0JTOGJzUVViUGxtd01kd3dNUUQvLy8ra0FBQUVyZ2NoQWlZQUpRQUFBUWNCZFFTS0FUTUFGZ0N3QUVWWXNBUXZHN0VFSHo1WnNBemNzQkRRTURILy93QWkvK2dEM0FYc0FpWUFSUUFBQVFjQmRRUGkvLzRBRmdDd0FFVllzQmd2RzdFWUd6NVpzQzNjc0RIUU1ESC8vd0FuQUFBRXVnY29BaVlBS1FBQUFRY0JkUVJTQVRvQUZnQ3dBRVZZc0FZdkc3RUdIejVac0EzY3NCSFFNREgvL3dBNy8rb0VBZ1hzQWlZQVNRQUFBUWNCZFFQTC8vNEFGZ0N3QUVWWXNBa3ZHN0VKR3o1WnNDSGNzQ1hRTURILy8vL0pBQUFDdlFjb0FpWUFMUUFBQVFjQmRRTUtBVG9BRmdDd0FFVllzQUl2RzdFQ0h6NVpzQVhjc0FuUU1ESC8vLzkrQUFBQ2NnWGtBaVlBOUFBQUFRY0JkUUsvLy9ZQUZnQ3dBRVZZc0FJdkc3RUNHejVac0FYY3NBblFNREgvL3dCci8rY0ZJUWNoQWlZQU13QUFBUWNCZFFTaEFUTUFGZ0N3QUVWWXNBb3ZHN0VLSHo1WnNDVGNzQ2pRTURILy93QTUvK2dFSndYc0FpWUFVd0FBQVFjQmRRUGYvLzRBRmdDd0FFVllzQVF2RzdFRUd6NVpzQ0xjc0NiUU1ESC8vd0FuQUFBRTJBY2hBaVlBTmdBQUFRY0JkUVE4QVRNQUZnQ3dBRVZZc0FRdkc3RUVIejVac0JuY3NCM1FNREgvL3dBSEFBQUMrd1hzQWlZQVZnQUFBUWNCZFFOSS8vNEFGZ0N3QUVWWXNBY3ZHN0VIR3o1WnNBL2NzQlBRTURILy93QmIvK1lGTHdjaEFpWUFPUUFBQVFjQmRRUjVBVE1BRmdDd0FFVllzQW92RzdFS0h6NVpzQlRjc0JqUU1ESC8vd0JLLytnRU1RWHNBaVlBV1FBQUFRY0JkUVBrLy80QUZnQ3dBRVZZc0Fndkc3RUlHejVac0JYY3NCblFNREgvL3dBay9ma0V1d1hIQWlZQU53QUFBQWNEcXdFKy9wTC8vd0FjL2ZrRHhBUlFBaVlBVndBQUFBY0Rxd0R3L3BMLy93Q2MvZmtGSWdXd0FpWUFPQUFBQUFjRHF3RXQvcEwvL3dBNy9ma0NyZ1ZCQWlZQVdBQUFBQWNEcXdDRC9wSUFBZjhQL2tnQjNBUTZBQXdBS0FDd0FFVllzQXd2RzdFTUd6NVpzQUJGV0xBRUx4dXhCQkUrV2JJSkFRb3JXQ0hZRy9SWk1ERUJBd1lHSXlJbk54WXpNamNUQWR6REdNeWpQVVlmTlNwL0ljSUVPdnVJdGNVUndSRENCRzRBQUFJQU52L3FBL1lFVUFBVkFCMEFaYklRSGg4UkVqbXdFQkN3RnRBQXNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0NDOGJzUWdQUGxteURBQUlFUkk1c0F3dnNBQVFzaEFCQ2l0WUlkZ2I5Rm15RWd3UUVSSTVzQWdRc2hZQkNpdFlJZGdiOUZtd0RCQ3lHQWNLSzFnaDJCdjBXVEF4QVJZU0J3Y09BaWNtQWpjM0lUWW1KeVlISnpZMkV4WVRJUVlYRmhZQ1JjN2pGZ2NWbXVTRHhjZ2FGZ0tRREdwcGw1eEJROHdIcUdmK1dBMEdDRlVFVGdUKzFlWTVsL3lEQXdZQkROV1BnNkVEQlYrZ1BrTDhYUVlCQzBrcFEwLy8vd0NLQkFBQi9nWUFBd1lEY1FBQUFBWUFzQVF2TURFQUFRRUNCTjBEbndZQkFBZ0FTZ0N3QlMreUR3VUJYYkFHMEJtd0JpOFlzQURRR2JBQUx4aXdCUkN3QWRDd0FTK3dCUkN3Qk5Dd0JDK3dBdEN3QWkrd0JSQ3dCOUN3QnkrMER3Y2ZCd0pkc2dNRkJ4RVNPVEF4QVJVbkp3Y0hKd0V6QTUrNWRhM0JBUUV0aUFUdUVRT2JtZ1FTQVJJQUFBRUJEUVRnQTd3R0JRQUlBQ1VBc0FRdnNnOEVBVjJ3QXRDd0FpKzBEd0lmQWdKZHNnQUVBaEVTT2JBSDBMQUhMekF4QVRjM0ZRRWpBelVYQWtLcDBmN01rdW5FQldlWkJCRCs3QUVWRUFULy93RHZCUklEeXdXd0FBWUFjZ0FBQUFFQS9nVElBMndGNXdBTUFDd0FzQU12c2c4REFWMndBTkN3QUMrMER3QWZBQUpkc0FiUXNBWXZzQU1Rc2drQ0NpdFlJZGdiOUZrd01RRUdCaWNtSmpVWEJqTXlOamNEYkFxNmg0U2ZzQVY0UTB3TUJlZUZtZ1FDbVlBQmpFNDlBQUVCQWdUY0FnRUYyQUFLQUIyeUFBc01FUkk1QUxBSUw3SVBDQUZkc2dJRkNpdFlJZGdiOUZrd01RRTBOallXRlJRR0J3WW1BUUpIYmtwSE56WkxCVlU0UndSRk5qbEVBZ0pGQUFBQ0FQb0VqQUtvQmlzQUN3QVhBQzhBc0FrdnNnOEpBVjJ3RmRDd0ZTK3lEeFVCWGJJRERBb3JXQ0hZRy9SWnNBa1FzZzhLQ2l0WUlkZ2I5Rmt3TVJNME5qTXlGaFVVQmlNaUpqY0dGak15TmpjMkppTWlCdnFGWFZKNmhGMVhkbXNHTWlzeVNRWUdNU3N5U2dWU1duOTFWRmw5ZEZRb1FrZ3VLMEJKQUFBQi82aitVUUVrQUQwQUR3QWJBTEFBUlZpd0NpOGJzUW9SUGxteUJRTUtLMWdoMkJ2MFdUQXhCUWNHQndZWEZqY1hCaWNpSmpjMkpRRWtMNE1IQlRnYlBReEZWVmRwQWdNQkNBTWZWbFk1QXdFWGtDc0NiVlN6ZGdBQkFONEUyd1BKQmZRQUZBQkJBTEFETDdBSTBMQUlMN1FQQ0I4SUFsMnlEZ01LSzFnaDJCdjBXYkFVMExBQTBMQURFTEFLMExBS0w3QUwwTEFMTDdBREVMSVNBd29yV0NIWUcvUlpNREVCQmdZaklpNENCd1lISnpZMkZ4WVdGeGMyTndQSkRJRmVHQzFyTkIxUEc1VUtnbUF3bGlJWlVSd0Y2WGVNRGowVEFRTmxDSEtYQWdGWkJBRURaZ0FBQWdDc0JORUQ2UVgvQUFNQUJ3QkFBTEFDTDdJUEFnRmRzQURRc0FBdnRBOEFId0FDWGJBQ0VMQUQwQm13QXk4WXNBQVFzQVhRc0FVdnNBSVFzQWJRc0FZdnNBTVFzQWZRR2JBSEx4Z3dNUUV6QVNNRE13RWpBdS82L3NuU1Z2UCs5TVVGLy83U0FTNyswZ0FBQXYvdS9ta0JUZisvQUFzQUZ3QTlBTEFZTDdBRDBMQURMMEFQQUFNUUF5QURNQU5BQTFBRFlBTUhYYkFQMExBUEw3SUpDUW9yV0NIWUcvUlpzQU1Rc2hVSkNpdFlJZGdiOUZrd01RYzBOak15RmhVVUJpTWlKamNHRmpNeU5qYzJKaWNpQmhKcVMwbGhhVWhLWkdFRUpSMGhOZ1lGSGlBak9mVk5aMkpFU21aZVJoOHJNeUVkTVFFMkFBQUIvVlFFMGY3WkJnQUFBd0FqQUxBQkw3SVBBUUZkc0FEUUdiQUFMeGl3QVJDd0F0Q3dBaSswRHdJZkFnSmRNREVCSXdNei90bTAwZndFMFFFdkFBSDkxd1RSLytrR0FBQURBQ01Bc0FJdnNnOENBVjJ3QWRDd0FTKzBEd0VmQVFKZHNBSVFzQVBRR2JBREx4Z3dNUUVoQVNQK3lRRWcvcjdRQmdEKzBmLy8vUFlFMi8vaEJmUUFCd0Z1L0JnQUFBQUIvZFlFNWY4OUJuOEFEZ0FsQUxBT0w3QUgwTEFITDdJQkRnY1JFam15Q0FnS0sxZ2gyQnYwV2JJTkFRNFJFamt3TVFFM056WTNOaWNuTnhjRUJ3WUhCLzNXRGk5ZkNRcHJJaEVvQVF3REE2QUtCT2FTQlFzNlBBUUJmQUlXb1gwZVJnQUFBdnkvQk9UL3N3WHVBQU1BQndBM0FMQUJMN0FBMEJtd0FDOFlzQUVRc0FYUXNBVXZzQWJRc0FZdnRnOEdId1l2QmdOZHNBUFFzQU12c0FBUXNBVFFHYkFFTHhnd01RRWpBeUVCSXdNaC9wSGQ5UUVTQWVMT3dBRUVCT1FCQ3Y3MkFRb0FBQUg4b1A2Ui9hei9qZ0FMQUJFQXNBTXZzZ2tOQ2l0WUlkZ2I5Rmt3TVFVME5qYzJGaFVVQmdjR0p2eWdTem8zVUVvN09rMzFOa2tDQWtRM09VVUNBa1lBQUFFQkxnVHBBb2dHUVFBREFCY0FzQUl2c0FEUXNBQXZzQUlRc0FQUUdiQURMeGd3TVFFekF5TUJwdUxFbGdaQi9xZ0FBd0RvQk53RUl3YXZBQU1BRHdBYkFENEFzQTB2c0FMUXNBSXZzQURRc0FBdnRBOEFId0FDWGJBQ0VMQUQwQm13QXk4WXNBMFFzZ2NGQ2l0WUlkZ2I5Rm13RTlDd0RSQ3dHZEN3R1M4d01RRXpBeU1GTkRZM05oWVZCZ1lIQmlZbE5qWTNOaFlWRkFZSEJpWUNuZWl6bC82dFJEY3lTZ0ZHTXpKTEFrUUJSak15UzBVMk5FZ0dyLzdXTWpCSUFnSkNORFJFQWdKQ016UkVBZ0pDTkRCSUFnSkVBUC8vLzZRQUFBU3VCa0VDSmdBbEFBQUFCZ0Yzd1FELy93Q2VBa0lCc1FOVkFnWUFlZ0FBLy8vL3ZnQUFCUjRHUVFBbUFDbGtBQUFIQVhmK2tBQUEvLy8veGdBQUJlc0dRUUFtQUN4a0FBQUhBWGYrbUFBQS8vLy95Z0FBQW93R1F3QW1BQzFrQUFBSEFYZituQUFDLy84QUdQL25CVFVHUVFBbUFETVVBQUFIQVhmKzZnQUEvLy8vV0FBQUJiRUdRUUFtQUQxa0FBQUhBWGYrS2dBQS8vOEFIUUFBQlFzR1FRQW1BWmtVQUFBSEFYZis5QUFBLy84QUMvLzBBMFlHbWdJbUFha0FBQUVIQVhqL0kvL3JBQklBc0FBdnNDZmNzQTdRc0NjUXNCTFFNREgvLy8ra0FBQUVyZ1d3QWdZQUpRQUEvLzhBSndBQUJMd0ZzQUlHQUNZQUFBQUJBQzRBQUFTc0JiQUFCUUFyQUxBQVJWaXdCQzhic1FRZlBsbXdBRVZZc0FJdkc3RUNEejVac0FRUXNnQUJDaXRZSWRnYjlGa3dNUUVoQXlNVElRU0kvWFhaOXZ3RGdnVGsreHdGc0FBQy82b0FBQVVKQmJBQUF3QUdBQzhBc0FCRldMQUFMeHV4QUI4K1diQUFSVml3QWk4YnNRSVBQbG15QkFFS0sxZ2gyQnYwV2JJR0FnQVJFamt3TVFFekFTRWxJUU1DNiswQk1mcWhBWG9DeWJjRnNQcFF5Z081QVAvL0FDY0FBQVM2QmJBQ0JnQXBBQUQvLy8vbEFBQUU1d1d3QWdZQVBnQUEvLzhBSndBQUJZY0ZzQUlHQUN3QUFBQURBRjcvNXdVV0JjZ0FBd0FWQUNVQWc3SWJKaWNSRWptd0d4Q3dBdEN3R3hDd0RkQUFzQUJGV0xBTkx4dXhEUjgrV2JBQVJWaXdCQzhic1FRUFBsbXlBZ1FORVJJNWZMQUNMeGl5WUFJQlhiSkNBZ0Zkc25JQ0FWMjAwQUxnQWdKZHNqQUNBVjJ5QUFJQmNiSUJBUW9yV0NIWUcvUlpzQTBRc2hvQkNpdFlJZGdiOUZtd0JCQ3lJZ0VLSzFnaDJCdjBXVEF4QVNFM0lRRXVBaWNtRWhJM05nUUFGeFlDQWdjR0V6YzJKaWNtQWc4Q0JoWVhGaEkzQTVEK1N5TUJ0UDZhajlaNkNBYzZuM1NvQWJBQkFRd0dPWXRuc3R3SkI0T0RyK0lpQ2dnS2hJV2w0aWdDZWNMOHNRT0QrSjF6QVZFQklWcUNDUDdlOTN6K3YvN3pXcHdER1dxOHlRUUYvdTN0UjJtMzBnUUhBUUR6QVAvL0FEVUFBQUlvQmJBQ0JnQXRBQUQvL3dBbkFBQUZjUVd3QWdZQUx3QUFBQUgvc2dBQUJIOEZzQUFHQURFQXNBQkZXTEFETHh1eEF4OCtXYkFBUlZpd0FTOGJzUUVQUGxtd0FFVllzQVV2RzdFRkR6NVpzZ0FEQVJFU09UQXhBUUVoQVRNVElRTGUvZVgrN3dMcjcvUC9BQVJCKzc4RnNQcFEvLzhBSndBQUJzNEZzQUlHQURFQUFQLy9BQ2NBQUFXR0JiQUNCZ0F5QUFBQUF3QUFBQUFFaUFXd0FBTUFCd0FMQUVzQXNBQkZXTEFJTHh1eENCOCtXYkFBUlZpd0FpOGJzUUlQUGxteUFBRUtLMWdoMkJ2MFdiSUZDQUlSRWptd0JTK3lCZ0VLSzFnaDJCdjBXYkFJRUxJS0FRb3JXQ0hZRy9SWk1ERTNJUWNoRXlFSElSTWhCeUVrQTZZai9GbjBBdUVqL1I4NEEzOGovSURLeWdOTnhnTXB6QUQvL3dCci8rY0ZJUVhJQWdZQU13QUFBQUVBTGdBQUJZTUZzQUFIQURnQXNBQkZXTEFHTHh1eEJoOCtXYkFBUlZpd0FDOGJzUUFQUGxtd0FFVllzQVF2RzdFRUR6NVpzQVlRc2dJQkNpdFlJZGdiOUZrd01TRWpFeUVESXhNaEJJYjIyZjJVMmZiOEJGa0U1UHNjQmJBQS8vOEFKd0FBQlFRRnNBSUdBRFFBQUFBQi85d0FBQVNmQmJBQURBQThBTEFBUlZpd0NDOGJzUWdmUGxtd0FFVllzQU12RzdFRER6NVpzZ0VCQ2l0WUlkZ2I5Rm13QmRDd0NCQ3lDZ0VLSzFnaDJCdjBXYkFIMERBeEFRRWhCeUUzQVFFM0lRY2hBUU1iL2k4Q25pUDhGeHdDSVA2b0dRUEdKUDEyQVNzQzBmMzV5cUlDUXdJK2pjeitBUUQvL3dDY0FBQUZJZ1d3QWdZQU9BQUEvLzhBb1FBQUJVMEZzQUlHQUQwQUFBQURBRklBQUFXeEJiQUFGUUFjQUNNQWRiSVRKQ1VSRWptd0V4Q3dHdEN3RXhDd0lkQUFzQUJGV0xBVkx4dXhGUjgrV2JBQVJWaXdDQzhic1FnUFBsbXlFeFVJRVJJNXNCTXZzQURRc0FBdnNnb0lGUkVTT2JBS0w3QUgwTEFITDdBS0VMSVpBUW9yV0NIWUcvUlpzQk1Rc2hvQkNpdFlJZGdiOUZtd0lOQ3dHUkN3SWRBd01RRVdBQWNHQWdRSEJ5TTNMZ0kzTmhJM05qYzNNd0VHRmhjVEJnWUZOaVluQXpZMkE5WGJBUUVWRDYzKzZhY2s5eVNSM0d3UEQ2cUtqNnNtOS8xWUVYeUZncGpIQTBRU2VvV0JsY2NFL1FyK3pPYWYvd0NOQTZxckJZNzJrNkFCQUVsTEE3TDlGNUt1Q3dLeUNNQ01sYkFOL1U0SXZmLy8vOE1BQUFWSEJiQUNCZ0E4QUFBQUFRQjFBQUFGMXdXd0FCa0FYTElLR2hzUkVqa0FzQUJGV0xBRUx4dXhCQjgrV2JBQVJWaXdFQzhic1JBZlBsbXdBRVZZc0Jndkc3RVlIejVac0FCRldMQUtMeHV4Q2c4K1diSVhCQW9SRWptd0Z5K3dBTkN3RnhDeURBRUtLMWdoMkJ2MFdiQUowREF4QVRZMk54TXpBd1lBQndNakV5WUNOeE16QXdZWEZoWVhFek1EUVlhckdWWDNWaXIrd2ZaSTlramMyeDFUOWxRSUF3VmpXWjcwQWo4Ynhab0I5LzRDK2Y3VkYvNkpBWGNmQVVIb0FmSCtEajQ4WW9jWUEyMEFBUUFKQUFBRTl3WEhBQ01BV2JJQUpDVVJFamtBc0FCRldMQVpMeHV4R1I4K1diQUFSVml3RHk4YnNROFBQbG13QUVWWXNDSXZHN0VpRHo1WnNpRUJDaXRZSWRnYjlGbXdBTkN3R1JDeUJ3RUtLMWdoMkJ2MFdiQUFFTEFPMExBaEVMQVIwREF4SlRZU0V6YzFBaWNtQmdJSEJoWVhCeUUzTndJVE56WVNKQmNXRmhJSEJ3SUZOd2NoQW9DUHF5RUdDOCtRdmo0REJWRlJJUDRVSmRHaEpRMGF0QUVTcEozZ1poVU5OZjcyMFNUK0hjNG5BVE1CTjA4ekFROElCZHYrZkhhUXJ4blF5d0lCRGdFU1hiZ0JKcDhFQktUKzNxaFgvcDdSQk12Ly93QTFBQUFETEFjS0FpWUFMUUFBQVFjQWEvK3BBVDBBREFDd0FpK3dGZHl3Qk5Bd01mLy9BS0VBQUFWTkJ3TUNKZ0E5QUFBQkJ3QnJBTzhCTmdBTUFMQUJMN0FhM0xBSjBEQXgvLzhBUHYvcUJETUdRUUltQWFFQUFBRUhBWGNCUmdBQUFBa0FzQm92c0M3Y01ERUEvLzhBS1AvcUJBSUdRUUltQWFVQUFBRUhBWGNCRUFBQUFBa0FzQWd2c0NyY01ERUEvLzhBRWY1aEJBWUdRUUltQWFjQUFBRUhBWGNCR2dBQUFBa0FzQU12c0JYY01ERUEvLzhBYnYvMEFwSUdMQUltQWFrQUFBRUdBWGNLNndBSkFMQUFMN0FRM0RBeEFQLy9BRmYvNVFROUJxSUNKZ0cxQUFBQkJnRjRHdk1BRWdDd0NpK3dNTnl3RjlDd01CQ3dHOUF3TVFBQ0FENy82Z1F6QkZFQUhRQXJBSG15R2l3dEVSSTVzQm9Rc0NUUUFMQUFSVml3R2k4YnNSb2JQbG13QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFRTHh1eEVBOCtXYkFBUlZpd0NpOGJzUW9QUGxteUJRRUtLMWdoMkJ2MFdiSU5HaEFSRWpteUhCb1FFUkk1c0JBUXNpTUJDaXRZSWRnYjlGbXdHaEN5S0FFS0sxZ2gyQnYwV1RBeEFRTUdGeFlYTXpjWEJpY21KaWNHQmljbUppY21OemMyRWpZWEZoYzNBUVlYRmhZWEZqY1RKaWNtQmdjRU00QUhBZ0luRGcwR05VQk9YZzA4bEdTYXRBY0RCZ01WaTh5QXJWVXgvY3dHQVFKWlVvUmlVQzkvZVo0V0JEcjlCalFhTkFJRHR4MENBbFJMUzFrQ0F0dTFQVHdWckFFVGhnTUVsWVg5dURNNFpIUUNBNHNCeVlrRUJkTzJBQUFDLytYK2R3UnJCY2NBRkFBcEFHV3lGQ29yRVJJNXNCUVFzQnpRQUxBUEw3QUFSVml3QUM4YnNRQWZQbG13QUVWWXNBd3ZHN0VNRHo1WnNoVUFEQkVTT2JBVkw3SW5BUW9yV0NIWUcvUlpzZ1VuRlJFU09iQUFFTEliQVFvcldDSFlHL1Jac0F3UXNpRUJDaXRZSWRnYjlGa3dNUUVXRmdjR0J4WVdCdzRDSnlZbkF5TVRQZ0lUTmpZM05pWW5KZ1lIQXhZWE1qWTNOaVluSnpjQzI3allEUTdjWGw0SUNvYmJoSjEwVit6M0VKTGlGMm1DQ3dsWVVXQ1JFb3RLa1hHakVBNVpXSVFhQmNRRTFhbkRkUzY2ZFlYUmJ3TUVVdjQyQmFoM3hHMzlsQUowYVZodUJBS0FadnplVUFLUGNtV01CUUc0QUFBQkFIZitYd1F3QkRvQUNBQTRzZ0FKQ2hFU09RQ3dBRVZZc0FFdkc3RUJHejVac0FCRldMQUhMeHV4QnhzK1diQUFSVml3QkM4YnNRUVJQbG15QUFjRUVSSTVNREVCQVRNQkF5TVRBek1CeVFGcC92M2ZUdTFUc093QlBnTDgrK0wrUXdIZUEvMEFBQUlBT1AvbkJEZ0dKQUFmQUM0QVlySUNMekFSRWptd0FoQ3dKdEFBc0FCRldMQURMeHV4QXlFK1diQUFSVml3RlM4YnNSVVBQbG13QXhDeUNBRUtLMWdoMkJ2MFdiSU9GUU1SRWptd0RpK3lLd0VLSzFnaDJCdjBXYkljS3c0UkVqbXdGUkN5SlFFS0sxZ2gyQnYwV1RBeEFUWTJGeFlYQnlZSElnWUhCaGNYQkFNSERnSW5MZ0kzTmpZM05TWW1Bd1lYRmhZWEZqWTNOaVluQmdZSEFVRUg2N0ZzbVJXRWFreHJDZzl3TEFHR0p3TVVtZStRaXNSY0RoTGJua2hOQndZREEyTlhkNlFjRG1aZ2VxVVlCT0tWclFJQ01jUTRBa0UzVFRjVXJQNTFGSjM2aUFRRWgvR1V2djhjRHllRy9YTTFPMmg5QXdPOXZIKzdIZ082cWdBQkFDai82Z1FDQkZFQUp3Q2dzaFFvS1JFU09RQ3dBRVZZc0Fndkc3RUlHejVac0FCRldMQWxMeHV4SlE4K1diSVZDQ1VSRWptd0ZTK3lqeFVCWGJRZkZTOFZBbkcwWHhWdkZRSnh0TDhWenhVQ1hiVHZGZjhWQW5HeVdoVUJYYklYQndvcldDSFlHL1Jac2dJWEZSRVNPYkFJRUxJUEFRb3JXQ0hZRy9SWnNnd1ZEeEVTT2JZTURCd01MQXdEWGJBbEVMSWRBUW9yV0NIWUcvUlpzaUFYSFJFU09iUURJQk1nQWwwd01STTJOeVltTnpZa0Z4WVdGU2MwSmlNbUJnY0dGeGNISnlJR0J3WVdGeFkyTnpNT0FpY21KaThLNWoxUEFnVUJEYzZ5MitsbFRsbUdDaE94MFIrMGJvUUpDR2RjV280TzdnbUMzWDdEN0FFcHQxTWhiVWlhcmdRRnNwQUJRa2dDVUVSNUJnR3RBVlZLUDA0REFsVkthNXhRQWdTcUFBRUFadjU5QkZBRnNBQWJBRSt5RWh3ZEVSSTVBTEFNTDdBQVJWaXdBQzhic1FBZlBsbXlHUUVLSzFnaDJCdjBXYklCR1FBUkVqbXlBZ3dBRVJJNXNoTU1BQkVTT2JBVEVMSUdBUW9yV0NIWUcvUlpzaGdBREJFU09UQXhBUWNCQmhjV0Z4Y1dGZ2NHQnljM05qYzJKeWNrRXpZU053RWhOd1JRSFA0VzRnY0RYYkJaU1FRSzNub3JQd3NLVG5YKzd4d09xckVCRlAzZUlnV3duUDRKOU5sZUpEMGhZVW1scEdzdlNEbzNIQ1JiQVEyS0FTcXlBUS9EQUFFQUVmNWhCQVlFVWdBU0FGT3lDQk1VRVJJNUFMQUFSVml3QXk4YnNRTWJQbG13QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFITHh1eEJ4RStXYkFBUlZpd0VDOGJzUkFQUGxteUFRTVFFUkk1c0FNUXNnMEJDaXRZSWRnYjlGa3dNUUVITmhjV0ZnY0RJeE0ySnlZbkpnY0RJeE1CcFJTS3RhR1ZFN3Z0dkFVRERvYUlaWW51dkFRN2had0VCTlRBKzZzRVZDd25nQU1FZmZ6dUJEb0FBd0JzLytjRVB3WEpBQkVBR1FBaUFJYXlJQ01rRVJJNXNDQVFzQURRc0NBUXNCalFBTEFBUlZpd0NTOGJzUWtmUGxtd0FFVllzQUF2RzdFQUR6NVpzaE1KQUJFU09YeXdFeThZc21BVEFWMnlRaE1CWGJKeUV3RmR0TkFUNEJNQ1hiSXdFd0Zkc2dBVEFYR3dDUkN5RndFS0sxZ2gyQnYwV2JBVEVMSWFBUW9yV0NIWUcvUlpzQUFRc2lBQkNpdFlJZGdiOUZrd01RVW1BamMwTnpjU0FCY1dFZ2NHQndjQ0FBRWhOalVtSnlZREFTRUdGeFFXRnhZVEFlaTR4QUlKSHpFQkh0KzV3Z0VCQ1NJMC91Zit0Z0hKRlFXZjJVc0JuLzQzRlFGVVR0Wk9GQVFCQmV0TFI4d0JRZ0ZKQlFUKy9PZExSOTMreGY2OEExR0RVZThIQ1A2aS9zMkRTM21DQXd3QlpBQUFBUUJ1Ly9RQ0NnUTZBQTBBS0FDd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBSkx4dXhDUTgrV2JJRUFRb3JXQ0hZRy9SWk1ERUJBeFVXRnpJM0J3WW5KaVkzRXdIcmd3TkxKeTBRU2t0OGV3MkRCRHI4OVMxQUF3bStGZ0lDbzRrREZ2Ly9BQ0VBQUFTTkJEb0NCZ0Q3QUFBQUFmK28vL0FEMWdYN0FCb0FVYklQR3h3UkVqa0FzQUF2c0FCRldMQUxMeHV4Q3c4K1diQUFSVml3RUM4YnNSQVBQbG13Q3hDeUJnRUtLMWdoMkJ2MFdiSVBBQkFSRWpteUVoQUFFUkk1c0FBUXNoWUJDaXRZSWRnYjlGa3dNUUVXRnhNV0ZoY3pOd2NHSXlZbUp3TUJJUUVuSmlZbkp3YzNOZ0dadUREb0NCNGtFaEVOS2lwZmNoMXAvcGIrOUFJeExnc3FLeHNiRGo0RitRU2wrOFFmTmdVQnd3Z0NabXNDQlAwNUJCM0FLQzBDQVFHNEQvLy8vOTMrWUFSVUJEb0NCZ0I0QUFELy93QmtBQUFFRFFRNkFnWUFXZ0FBQUFFQVB2NTFCQ1lGeFFBdEFGYXlCUzR2RVJJNUFMQVhMN0FBUlZpd0t5OGJzU3NmUGxteUFnRUtLMWdoMkJ2MFdiSUhMaXNSRWptd0J5K3lDZ0VLSzFnaDJCdjBXYkllRnlzUkVqbXdIaEN5RUFFS0sxZ2gyQnYwV2JJbENnY1JFamt3TVFFbUl5SUdCd1lGRndjbklnWUhCaFlmQWhZSEJnWUhKemMyTnpZbkp5WW5KaE0yTmpjbUpqYzJKRE15RndQdWUxaDhtQXdiQVErRkkzNnMweElMWVdDRUxxa0lCWGhzZ0M5Q0NRYy9LcUJDMmhVS3VLdFVZQVFJQVIvYmpJZ0UyaVpiVHE4Q0FjWUJtWTVkZ3h3bER6eVFVcWxOYWpGSVBUSVpEek1qY2dFQmpjczRLSWxZcnNZdUFQLy9BRG4vNkFRbkJGSUNCZ0JUQUFBQUFRQmQvL1VFMmdRNkFCWUFYTElORnhnUkVqa0FzQUJGV0xBVkx4dXhGUnMrV2JBQVJWaXdDeThic1FzUFBsbXdBRVZZc0JFdkc3RVJEejVac0JVUXNnQUJDaXRZSWRnYjlGbXdDeEN5QmdFS0sxZ2gyQnYwV2JBQUVMQVAwTEFRMExBVDBMQVUwREF4QVNNREJoY1dGekkzQndZakppWTNFeUVESXhNak55RUV1WnRqQXdJR1NpWXZFVVZRZkhzTll2N0FtKzJicHlJRVd3TjgvYlFaRkVFRENiNFZBcU9LQWxqOGhBTjh2Z0FDLzh2K1lBUU1CRk1BRWdBZ0FGQ3lEaUVpRVJJNXNBNFFzQmJRQUxBQVJWaXdCUzhic1FVYlBsbXdBRVZZc0JFdkc3RVJFVDVac0FCRldMQU9MeHV4RGc4K1diSVZBUW9yV0NIWUcvUlpzQVVRc2gwQkNpdFlJZGdiOUZrd01STTJOamMyRnhZV0Z4WUhCd1lHSnlZbkF5TUJGaGNXTmpjMkp5WW1KeVlHQjNVUVcwaVEwTERJQ1FNSERTejNzYWxoWWU0QmF6U0RkWjRWQ3dNSVZVNXJqaGtDUG0vSlNaUUZCT25IUlVWVDMvZ0ZCSGI5K3dLL2J3UURzNTkxUFhGc0F3Sy9vZ0FCQUR2K2lRUHdCRk1BSUFCWnNnMGhJaEVTT1FDd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBYUx4dXhHZzgrV2JBQVJWaXdFeThic1JNWFBsbXdBQkN4QXdvcldOZ2IzRm13QUJDeUJ3RUtLMWdoMkJ2MFdiQWFFTElOQVFvcldDSFlHL1JaTURFQkZoWUhKelltSnlZR0J3Y0dGeGNXQndZR0J5YzNOamMySmljbUFqYzNFZ0FDYzdUSkNONEZWVlJ6b1JZRUhPNXRvQWNEZTJ4NUtVTUpCQ1U2emI4VEFoMEJNUVJPQk9HMEFXUnVCQVBBb3lQdFZ5YzlqMUdyVFdzc1NqOGhLQkErQVFURUZBRUNBVFVBQWdBNC8rZ0V0Z1E3QUJFQUlnQmhzaGdqSkJFU09iQVlFTEFIMEFDd0FFVllzQkF2RzdFUUd6NVpzQUJGV0xBUkx4dXhFUnMrV2JBQVJWaXdDQzhic1FnUFBsbXdFUkN5QUFFS0sxZ2gyQnYwV2JBSUVMSVhBUW9yV0NIWUcvUlpzQkFRc2lBQkNpdFlJZGdiOUZrd01RRUZGZ2NIRGdJbkxnSTNOellBTXdVQkJoY1dGaGNXTmpjM05pY21KaWNtQmdTUy92NkRFUU1RbHUrS2k4UlpFQUlpQVRIZUFqdjhnQVlDQkdCWGI1MGNCd1lDQlY1VmVLQURkZ09yeHhhUjdZVUVBcEQ4bFJEN0FTRUIvZEUyUFc1OEFnT3NwUzgwT21aM0F3TzJBQUFCQUc3LzZ3UWpCRG9BRVFCSnNnTVNFeEVTT1FDd0FFVllzQkF2RzdFUUd6NVpzQUJGV0xBS0x4dXhDZzgrV2JBUUVMSUFBUW9yV0NIWUcvUlpzQW9Rc2dVQkNpdFlJZGdiOUZtd0FCQ3dEdEN3RDlBd01RRWhBd2NVTXhZM0Z3WW5KaVkzRXlFM0lRUUIvcU5sQWo4aFBSVlNYM3g2RG1IK3R5SURrd041L2E4b1NnRVZ0Q3NDQXF1V0FrbkJBQUFCQUZmLzVRUCtCRHdBRmdBOHNoQVhHQkVTT1FDd0FFVllzQW92RzdFS0d6NVpzQUJGV0xBQUx4dXhBQnMrV2JBQVJWaXdFUzhic1JFUFBsbXlCUUVLSzFnaDJCdjBXVEF4QVFNSEJoWVhGaElESmljWEZnY0dBZ1luSmlZM054TUJ2MjBGQWpzNWxjTU9CaUhpT2dzUG0vaVpxYmdLQTI0RU92MXJURXhmQWdZQmRBRWtnWDBCcWRmNy9zYWhCQVBYd0NZQ2tRQUNBREwrSWdWdEJFUUFHd0FrQUZteUdTVW1FUkk1c0JrUXNCelFBTEFhTDdBQVJWaXdFaThic1JJYlBsbXdBRVZZc0Fjdkc3RUhHejVac0FCRldMQUFMeHV4QUE4K1diQVowTEljQVFvcldDSFlHL1Jac0E3UXNCSVFzaUlCQ2l0WUlkZ2I5Rmt3TVFVbUp5WTNOaEkzRndZQ0Z4WVdGeE0yTmhjZUFnY0dBQVVESXdFMk5pY21KZ2NHQndINjduSm9HUk9iaG9oeGJnd0tjV0J4RHFaN2g5Rm1EaHIrci83elYrMEJYcTNLQWdOblZqWU1EQ09xbk9DZ0FRbGJsbWorOUgxamhob0NoWFdUQWdLUTlZMzAvdEVhL2pFQ2tTVHhxNEdRQmdRMi8vLy91UUFBQkJNRU9nSUdBRndBQUFBQkFELytJZ1dLQkR3QUhRQlNzZzRlSHhFU09RQ3dEeSt3QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0ZTOGJzUlViUGxtd0FFVllzQkV2RzdFUkR6NVpzQTdRc2dFQkNpdFlJZGdiOUZtd0hOQXdNUUVETmpZU0p5WW5GeFlYRWdjR0JRTWpFeVlDTnhNekF3WVhGaFlYRXdPZW81Sy9SQXdKSTk0ckNoL3ZxZjcwVisxWDRka2dVdTFTQ1FNRFoxK2lCRHI4ZWlLM0FRNnJmbmdDZG4vK1JPR2ZHZjR5QWRJaUFVVDNBZW4rRkVKQWE0NGNBNE1BQVFCVS8rUUdFQVE5QUNzQVhySWpMQzBSRWprQXNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0d5OGJzUnNiUGxtd0FFVllzQ0V2RzdFaER6NVpzQUJGV0xBbUx4dXhKZzgrV2JJSEFRb3JXQ0hZRy9SWnNnd2hBQkVTT2JBaEVMSVNBUW9yV0NIWUcvUlpNREVCQndZR0J3WVdGeFkyTnhNekF3WVhGeFlYRmpZM056WW5KaWNYRmhjV0FnWW5KaVluQmljbUpqY1FFd0lvVWs5R0F3TkRQVnQ5RXpYMU5Ba0RBaEJ5Vm5rY0NoRU1EQzNpTkF3VGN1YWthcGdZaGRPaXJBTGVCRG1ZbGVpRGQzc0RCcUNaQVViK3Vrc3hHNWdEQkttcVFJS0NnWHdEZUlMZC9sblZCQUo0WmVZSEJPblhBVjhCS3dELy93Qk0vL1FDL2dXNEFpWUJxUUFBQVFjQWEvOTcvK3NBREFDd0FDK3dIOXl3RHRBd01mLy9BRmYvNVFQK0JjQUNKZ0cxQUFBQkJnQnJjdk1BREFDd0NpK3dLTnl3RjlBd01mLy9BRG4vNkFRbkJrRUNKZ0JUQUFBQkJ3RjNBUTBBQUFBSkFMQUVMN0FqM0RBeEFQLy9BRmYvNVFQK0JqUUNKZ0cxQUFBQkJ3RjNBUUwvOHdBSkFMQUtMN0FaM0RBeEFQLy9BRlQvNUFZUUJqSUNKZ0c1QUFBQkJ3RjNBaGovOFFBSkFMQWFMN0F1M0RBeEFBQUNBRkQvNWdTTkJja0FIZ0FvQUd1eUZDa3FFUkk1c0JRUXNDRFFBTEFBUlZpd0dTOGJzUmtmUGxtd0FFVllzQVl2RzdFR0R6NVpzaUVaQmhFU09iQWhMN0lUQVFvcldDSFlHL1Jac0FMUXNnd1pCaEVTT2JBR0VMSVFBUW9yV0NIWUcvUlpzQ0VRc0IzUXNCa1FzaVVCQ2l0WUlkZ2I5Rmt3TVFFR0J3Y0dCQ2N1QWpjVE53TUdGaGNXRXpjbUFqYzJOaGNXRmdjRE53RUdGeE0zTkNjbUJnY0VnamxMRXlYKzU4aCt2RnNQTCtjd0RtUmh5alFVdDhzT0U5eWZtS0VTTkhMOThSSzZPQVJVT1VvTEFsWVRDM1hoL0FZRGVkZUFBU01DL3RwNGpnTUhBU0J2TEFFVnU3L1JCQVRacmY3TEdBRWg0VXdCT0Rkd0FnSlVUUUFBQVFCdEFBQUZCZ1hKQUJnQVZMSU1HUm9SRWprQXNBQkZXTEFFTHh1eEJCOCtXYkFBUlZpd0ZpOGJzUllmUGxtd0FFVllzQXd2RzdFTUR6NVpzZ0FXREJFU09iQUVFTElJQVFvcldDSFlHL1Jac0JZUXNoRUJDaXRZSWRnYjlGa3dNUUVCTmpZWEZoY0hKd1lIQVFNakV3TW1KeVlISnpZekZoY0NSd0VUUDRwWE8xRTFNMEVzL21oWjlsNm5GVGdSSlJFOFFLOC9Bd2tCNTNsZ0FnSVp3d1lEUmYxZC9md0NId0tKUGdNQkJjUVlCTXYvLy84a0FBQUZhZ1pCQUNZQndHUUFBQWNCZC8zMkFBQUFBZ0JYLytNR2ZRUTZBQlFBS2dCbXNna3JMQkVTT2JBSkVMQWgwQUN3QUVWWXNCTXZHN0VUR3o1WnNBQkZXTEFNTHh1eERBOCtXYkFURUxJQkFRb3JXQ0hZRy9SWnNBd1FzQWZRc2dvVERCRVNPYkFCRUxBWDBMQVMwTEFNRUxJZEFRb3JXQ0hZRy9SWnNpRU1FaEVTT2JBbjBEQXhBU2NYQmdJR0JpY21KaWNHSnlZbU54STNCemNoQVNZbkpRWUdCd1lYRmpZM056TUhCaGNXRnhZVE5nWmFlQU1DUEhpeGIydWNHSWJhbUtFR0JIaHlJZ1gwL240QkIvemRTRHdHQzNCYmZoZ2s5Q0lJQXdxQmt6WWJBNE1CcElyKzI5eHRBd0o0YWVzSEJPdmRBUURRQXJiK3BsRlNBb25YZlBZR0I1YWQ2ZU5KTmJJREJBRXBsLy8vQUNjQUFBUzZCejBDSmdBcEFBQUJCd0JFQVNNQlBRQVRBTEFBUlZpd0JpOGJzUVlmUGxtd0Rkd3dNUUQvL3dBbkFBQUV1Z2NLQWlZQUtRQUFBUWNBYXdEd0FUMEFEQUN3Qmkrd0hkeXdETkF3TVFBQkFKSC84UVdGQmJBQUdRQnVzZ0VhR3hFU09RQ3dBRVZZc0Jndkc3RVlIejVac0FCRldMQUtMeHV4Q2c4K1diQUFSVml3RkM4YnNSUVBQbG13R0JDeUFBRUtLMWdoMkJ2MFdiSUVHQlFSRWptd0JDK3dDaEN5Q3dFS0sxZ2gyQnYwV2JBRUVMSVJBUW9yV0NIWUcvUlpzQUFRc0JiUXNCZlFNREVCSVFNMkZ4WVdCd1lFQnpjMk5qYzJKaWNtQndNakV5RTNJUVRmL2lKTmpXL2Y5aEVTL3NqK0U0dWpEdzF5ZVc2U2R2Zlovb2NrQkU0RTVQNXpKd0lDODhyWjhRSy9CSWw2Ym9FRUF5RDljd1RrekFELy93QXVBQUFFckFjOUFpWUJoQUFBQVFjQWR3RzVBVDBBRXdDd0FFVllzQVF2RzdFRUh6NVpzQWpjTURFQUFBRUFaLy9vQlJFRnh3QWdBSVd5RkNFaUVSSTVBTEFBUlZpd0RDOGJzUXdmUGxtd0FFVllzQU12RzdFRER6NVpzZ0FNQXhFU09iSVFBd3dSRWptd0RCQ3lFd0VLSzFnaDJCdjBXYklXREFNUkVqbDhzQll2R0xKZ0ZnRmRzbklXQVYyeVFoWUJYYkl3RmdGZHROQVc0QllDWGJJQUZnRnhzaGtCQ2l0WUlkZ2I5Rm13QXhDeUhRRUtLMWdoMkJ2MFdUQXhBUVlBSnk0Q0p5WVNFaVFYRmhJWEl5WW1KeVlHQnlVSElRY0dGaGNXTmpjRXFTSCtyL0NMMFhjSEJrVENBUnlwMlB3TDlRVjdkcGJVUFFIMEpQNFpDUVorZkl1MkpBSGI0Lzd3QkFOKzc1cHhBWWtCT1o0REJQNzQ2NTZMQXdYVDZ3SEtZcVM1QkFhWGt3QUFBUUFrLytvRXV3WEhBQ2tBWWJJREtpc1JFamtBc0FCRldMQUtMeHV4Q2g4K1diQUFSVml3SHk4YnNSOFBQbG15QXg4S0VSSTVzQW9Rc0E3UXNBb1FzaElCQ2l0WUlkZ2I5Rm13QXhDeUdBRUtLMWdoMkJ2MFdiQWZFTEFrMExBZkVMSW5BUW9yV0NIWUcvUlpNREVCTmljbkppWTNQZ0lYSGdJSEp6WW1KeVlHQndZWEZ4WVdCdzRDSnk0Q054Y0dGaGNXTmdOTUZyTlI0cjRKQ0puNmpZalVjQVQyQjNOMGRhRU9GTDVMNWJZTENvNzdsNC9wZkFYM0NJcUJlS0VCZnBCR0hrL1lqM3k5WmdNRGNjbUJBWEorQXdKeVlYOUpHMUxkbDN1M1pBSUJkdEdGQVh5R0FnSnFBUC8vQURVQUFBSW9CYkFDQmdBdEFBRC8vd0ExQUFBRExBY0tBaVlBTFFBQUFRY0FhLytwQVQwQURBQ3dBaSt3RmR5d0JOQXdNZi8vQUFQLzV3UmhCYkFDQmdBdUFBQUFBdi9LQUFBSDlRV3dBQmtBSWdCNXNnb2pKQkVTT2JBS0VMQWIwQUN3QUVWWXNCZ3ZHN0VZSHo1WnNBQkZXTEFJTHh1eENBOCtXYkFBUlZpd0VDOGJzUkFQUGxteUFSZ0lFUkk1c0FFdnNCZ1FzZ29CQ2l0WUlkZ2I5Rm13RUJDeUVnRUtLMWdoMkJ2MFdiQUlFTEljQVFvcldDSFlHL1Jac0FFUXNpSUJDaXRZSWRnYjlGa3dNUUVGSGdJSEJnQWpJUk1oQXdjQ0FnY2pOemMyTmpjM0V5RURBd1UyTmpjMkppY0ZJQUVSaXRSbUN4SCt4ZlQ5MzluK1VuRWVRL3ZDV3hZa2Y2SXBFNG9Ea1g5YkFSSi9zQklQY1drRG9RRUVkc3lDMC83N0JPVDk5Wkwrei83dkJjb0JDZC8zYndLWC9TYjk5QUlDbEgxdWlBUUFBZ0F1QUFBSC9RV3dBQklBR3dDQ3NnRWNIUkVTT2JBQkVMQVUwQUN3QUVWWXNBSXZHN0VDSHo1WnNBQkZXTEFSTHh1eEVSOCtXYkFBUlZpd0N5OGJzUXNQUGxtd0FFVllzQTh2RzdFUER6NVpzZ0VDQ3hFU09iQUJMN0lGQWdzUkVqbXdCUyt3QVJDeURRRUtLMWdoMkJ2MFdiQUxFTElWQVFvcldDSFlHL1Jac0FVUXNoc0JDaXRZSWRnYjlGa3dNUUVoRXpNREZ4WVdCd1lFSXlFVElRTWpFek1CQXdVMk5qYzJKaWNCdFFKcmJQWmgvT0wrRHhEK3h2VDkzMjc5bFc3Mi9QWUMzbFVCRW9HdUR3NXhhd05GQW12OTBnRUI4Y1BPL2dKNi9ZWUZzUDBJL2hnQ0FveHphSHdFQUFFQW9BQUFCWmdGc0FBV0FGMnlBUmNZRVJJNUFMQUFSVml3RlM4YnNSVWZQbG13QUVWWXNBZ3ZHN0VJRHo1WnNBQkZXTEFSTHh1eEVROCtXYkFWRUxJQUFRb3JXQ0hZRy9SWnNnUVZDQkVTT2JBRUw3SU9BUW9yV0NIWUcvUlpzQUFRc0JQUXNCVFFNREVCSVFNMkZ4WVdCd01qRXpZbkppY21Cd01qRXlFM0lRVGgvaUJHZ29icTZ4aEw5MHdJQnhXK1pLOTk5dG4rbFNRRVFRVGsvcG9jQWdUMTEvNDRBY2xBTUk0R0F4ejlUQVRrekFELy93QW5BQUFGY1FjMkFpWUFMd0FBQVFjQWR3R2xBVFlBRXdDd0FFVllzQVV2RzdFRkh6NVpzQS9jTURFQS8vOEFKd0FBQlh3SFBRSW1BZHNBQUFFSEFFUUJnZ0U5QUJNQXNBQkZXTEFJTHh1eENCOCtXYkFMM0RBeEFQLy9BSnYvNXdWVEJ5UUNKZ0htQUFBQkJ3RnFBUlVCUFFBSkFMQUJMN0FVM0RBeEFBQUJBQ1grbUFWOEJiQUFDd0JJQUxBSkw3QUFSVml3QUM4YnNRQWZQbG13QUVWWXNBUXZHN0VFSHo1WnNBQkZXTEFHTHh1eEJnOCtXYkFBUlZpd0NpOGJzUW9QUGxteUFnRUtLMWdoMkJ2MFdiQUQwREF4QVRNRElSTXpBeUVESXhNaEFTTDMyZ0pzMnZmOS9say85ei8rUkFXdyt4b0U1dnBRL3BnQmFQLy8vNlFBQUFTdUJiQUNCZ0FsQUFBQUFnQWpBQUFFb1FXd0FBd0FGUUJlc2c4V0Z4RVNPYkFQRUxBSjBBQ3dBRVZZc0Fzdkc3RUxIejVac0FCRldMQUpMeHV4Q1E4K1diQUxFTElBQVFvcldDSFlHL1Jac2dNTENSRVNPYkFETDdBSkVMSVBBUW9yV0NIWUcvUlpzQU1Rc2hVQkNpdFlJZGdiOUZrd01RRWhBeGNXRmdjR0JDTWhFeUVCQXdVMk5qYzJKaWNFZmYxMlBmN2ovUkVRL3NmMC9kMzhBNEw4OGxZQkVvR3VEdzV3YXdUay9wOEJBZS9FMFA0RnNQMEkvaElDQXBCM2FYa0UvLzhBSndBQUJMd0ZzQUlHQUNZQUFQLy9BQzRBQUFTc0JiQUNCZ0dFQUFBQUF2K0UvcG9Ga1FXd0FBNEFGUUJWc2hJV0Z4RVNPYkFTRUxBTDBBQ3dBUyt3QUVWWXNBc3ZHN0VMSHo1WnNBQkZXTEFDTHh1eEFnOCtXYkFCRUxBRTBMQUNFTElOQVFvcldDSFlHL1Jac0JEUXNBYlFzQXNRc2hFQkNpdFlJZGdiOUZrd01RRWpFeUVESXhNWE5oSVRFeUVETXdVbEV5RURCd0lFL3VzKy9HQS83bHRsYzU0M2lBTjkyYlQ3OWdKZnQvNW1iaEZWL3BvQlp2NmFBakFEVXdFekFRNENWZnNhQkFRRUd2NGFRdjY4Ly84QUp3QUFCTG9Gc0FJR0FDa0FBQUFCLzZVQUFBZmdCYkFBRlFCOUFMQUFSVml3Q1M4YnNRa2ZQbG13QUVWWXNBMHZHN0VOSHo1WnNBQkZXTEFSTHh1eEVSOCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVl2RzdFR0R6NVpzQUJGV0xBVUx4dXhGQTgrV2JJUUNRSVJFam13RUMreUFBRUtLMWdoMkJ2MFdiQUUwTElJRUFBUkVqbXdFQkN3QzlDeUV3QVFFUkk1TURFQkl3TWpFeU1CSVFFQklSTXpFek1ETXdFaEFRRWhCT1NqYnZadW5mNDUvcjRDV1A3U0FSdnBuV3IyYW9vQnR3RTUvZHNCTi83ZEFuVDlqQUowL1l3REV3S2QvYUFDWVAyZ0FtRDlUZjBEQUFFQUh2L3RCS2dGeFFBcEFJR3lCeW9yRVJJNUFMQUFSVml3RGk4YnNRNGZQbG13QUVWWXNCb3ZHN0VhRHo1WnNnQU9HaEVTT2JBQUw3SWZBQUZ4c3A4QUFWMnllZ0FCWGJKS0FBRmRzQTRRc2dZQkNpdFlJZGdiOUZteUNnNGFFUkk1c0FBUXNpY0JDaXRZSWRnYjlGbXlFeWNBRVJJNXNoME9HaEVTT2JBYUVMSWhBUW9yV0NIWUcvUlpNREVCTWpZM05pWW5KZ1lIQno0Q0Z4WVdCd1lGRmhZSEJnUUhCeVlrTnhjR0ZoY1dOamMyTHdJM0FuZCtvUXdNZlcxbm9oSDFDWTc0ak9ENERoSCsvV05jQnd6KzJlVTEwdjcvQi9NRWdtWit3UTRiMFNTMUl3TkplR3BlY0FJQ2NHRUJkN3BwQWdYWXVjOTRMcXhzdStzTUFRTG52d0ZrZVFJRWdXN0ZHUU1CeUFBQUFRQW5BQUFGZkFXd0FBa0FSUUN3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFITHh1eEJ4OCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVV2RzdFRkR6NVpzZ1FBQWhFU09iSUpBQUlSRWprd01RRXpBeU1UQVNNVE13TUVmZi85OTdMODYvNzk5N0lGc1BwUUEvNzhBZ1d3L0FFQS8vOEFKd0FBQlh3SEpBSW1BZHNBQUFFSEFXb0JWd0U5QUFrQXNBQXZzQTNjTURFQS8vOEFMZ0FBQlhzRnNBSUdBOEVBQUFBQi84b0FBQVY4QmJBQUVRQk5zZ1FTRXhFU09RQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQUJMeHV4QVE4K1diQUFSVml3Q1M4YnNRa1BQbG13QUJDeUF3RUtLMWdoMkJ2MFdiQUpFTElNQVFvcldDSFlHL1JaTURFQkF5TVRJUU1IQWdJSEl6YzNOalkzTnhNRmZQMzIyZjVTY1I1RS9NTllGaUorb1NvV2lnV3crbEFFNVAzMWt2N0wvdkFDeWdJSDFQQ0NBcGNBLy84QUp3QUFCczRGc0FJR0FERUFBUC8vQUNjQUFBV0hCYkFDQmdBc0FBRC8vd0JyLytjRklRWElBZ1lBTXdBQS8vOEFMZ0FBQllNRnNBSUdBWkVBQVAvL0FDY0FBQVVFQmJBQ0JnQTBBQUQvL3dCbC8rZ0ZEUVhIQWdZQUp3QUEvLzhBbkFBQUJTSUZzQUlHQURnQUFBQUJBSnYvNXdWVEJiQUFFQUJEc2dBUkVoRVNPUUN3QUVWWXNBRXZHN0VCSHo1WnNBQkZXTEFQTHh1eER4OCtXYkFBUlZpd0JpOGJzUVlQUGxteUFBRUdFUkk1c2dzQkNpdFlJZGdiOUZrd01RRUJJUUVHQmljaUp6Y1dOekkzTndFaEFwY0Jud0VkL1UxVXduOHZRUmMwSDI1RFJQN1hBUUlDdUFMNCsxV2Jnd0lIeUFjQmJId0VGZ0FEQUZiL3hBWVNCZXdBRndBZkFDa0FYcklWS2lzUkVqbXdGUkN3SGRDd0ZSQ3dJZEFBc0FvdnNCY3ZzZ0FYQ2hFU09iQUFMN0lNQ2hjUkVqbXdEQyt3Q2RDd0FCQ3dGTkN3REJDeUd3RUtLMWdoMkJ2MFdiQVVFTElkQVFvcldDSFlHL1Jac0NEUXNCc1FzQ0hRTURFQk1oWVNCd1lDQkNjbkJ5TTNJaVlDTnpZU0pCY1hOek1CQmhZWEZ4TWlCaVVETWpZM05pY21KaWNFREtMd2RCQVJ2ZjdYcXhRbzdTaWs3M1lRRXJzQktxd1dLdWI5SUJTUWxSV1R1dWdDa0pHMDZCZ0tDaENGYXdVa212N3hvYXorNlpnREFiL0FsZ0VOb2EwQkdKc0NBY2Y4M0t6SUJ3RURFZDdkL08vWnRreEZhbjBJQVAvLy84TUFBQVZIQmJBQ0JnQThBQUFBQVFBbC9xRUZmQVd3QUFzQU93Q3dDUyt3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFFTHh1eEJCOCtXYkFBUlZpd0NpOGJzUW9QUGxteUFnRUtLMWdoMkJ2MFdiQUcwREF4QVRNRElSTXpBek1ESXhNaEFTTDMyZ0pzMnZmWnEzVGpQZnZ4QmJEN0dnVG0reHo5MVFGZkFBRUF4UUFBQldvRnNBQVFBRWF5QlJFU0VSSTVBTEFBUlZpd0FDOGJzUUFmUGxtd0FFVllzQWt2RzdFSkh6NVpzQUJGV0xBQkx4dXhBUTgrV2JJTkFRa1JFam13RFMreUJRRUtLMWdoMkJ2MFdUQXhBUU1qRXdZbkppWTNFek1EQmhZRU54TUZhdjMyYTVxdDV2QVpUUFpNRUdBQkJzNThCYkQ2VUFJK0xBUUM4OXdCeWY0MmdJSUdLZ0tvQUFBQkFDc0FBQWRqQmJBQUN3QklBTEFBUlZpd0FDOGJzUUFmUGxtd0FFVllzQU12RzdFREh6NVpzQUJGV0xBSEx4dXhCeDgrV2JBQVJWaXdDUzhic1FrUFBsbXlBUUVLSzFnaDJCdjBXYkFGMExBRzBEQXhBUU1oRXpNRElSTXpBeUVUQWgvWkFhM1o5OW9CcXRyMi9mbkYvQVd3K3hvRTV2c2FCT2I2VUFXd0FBRUFLLzZpQjJNRnNBQVBBRlFBc0FzdnNBQkZXTEFBTHh1eEFCOCtXYkFBUlZpd0F5OGJzUU1mUGxtd0FFVllzQWN2RzdFSEh6NVpzQUJGV0xBTkx4dXhEUTgrV2JJQkFRb3JXQ0hZRy9SWnNBWFFzQWJRc0FuUXNBclFzQUxRTURFQkF5RVRNd01oRXpNRE13TWpFeUVUQWgvWkFhM1o5OW9CcXRyMjI2VnkyVDM2RFB3RnNQc2FCT2I3R2dUbSt4TDk0QUZlQmJBQUFnQ0pBQUFGblFXd0FBd0FGUUJlc2dFV0Z4RVNPYkFCRUxBTjBBQ3dBRVZZc0FBdkc3RUFIejVac0FCRldMQUpMeHV4Q1E4K1diSURBQWtSRWptd0F5K3dBQkN5Q3dFS0sxZ2gyQnYwV2JBSkVMSVBBUW9yV0NIWUcvUlpzQU1Rc2hVQkNpdFlJZGdiOUZrd01STWhBeGNXRmdjR0JDTWhFeUVCQXdVeU5qYzJKaWVyQW5WZy9lSC9EeEQreC9iOTM5ditnQUlVVmdFU2dLOFBEVzF0QmJEOTB3RUI3TWJSL2dUdC9jditFZ0dSZDJkN0JBQURBQzRBQUFhOUJiQUFDZ0FUQUJjQWNMSUdHQmtSRWptd0JoQ3dEOUN3QmhDd0ZkQUFzQUJGV0xBSkx4dXhDUjgrV2JBQVJWaXdGaThic1JZZlBsbXdBRVZZc0Fjdkc3RUhEejVac0FCRldMQVVMeHV4RkE4K1diSUJDUWNSRWptd0FTK3dCeEN5RFFFS0sxZ2gyQnYwV2JBQkVMSVRBUW9yV0NIWUcvUlpNREVCRnhZV0J3WUVJeUVUTXdNREJUWTJOelltSndFakV6TUJ3ZjdqL1JFUS9zZjAvZDM5OTRSV0FSS0JyZzhPY0dzQzlmYjk5Z09EQVFIdnhORCtCYkQ5Q1A0U0FnS1FkMmw1QlAxSkJiQUFBZ0FqQUFBRWxBV3dBQW9BRXdCUXNnMFVGUkVTT2JBTkVMQUgwQUN3QUVWWXNBa3ZHN0VKSHo1WnNBQkZXTEFITHh1eEJ3OCtXYklCQ1FjUkVqbXdBUyt3QnhDeURRRUtLMWdoMkJ2MFdiQUJFTElUQVFvcldDSFlHL1JaTURFQkZ4WVdCd1lFSXlFVE13TURCVFkyTnpZbUp3RzIvdVA5RVJEK3gvVDkzZjMzaEZZQkVvR3VEdzV3YXdPREFRSHZ4TkQrQmJEOUNQNFNBZ0tRZDJsNUJBQUFBUUJQLytrRTl3WElBQ0FBaGJJT0lTSVJFamtBc0FCRldMQVVMeHV4RkI4K1diQUFSVml3SFM4YnNSMFBQbG15QXdFS0sxZ2gyQnYwV2JJSUZCMFJFamw4c0FndkdMSXdDQUZkc25JSUFWMnk0Z2dCWGJKQ0NBRmRzbUFJQVYyeTBBZ0JYYklBQ0FGeHNnY0JDaXRZSWRnYjlGbXdGQkN5RFFFS0sxZ2gyQnYwV2JJUkZCMFJFam15SUIwVUVSSTVNREVCRmhZWEZqWTNCVGNoTnpZbUp5WUdCd2MyQUJjZUFoY1dBZ0lFSnlZQUp3RkRCMzU4bE00Ni9nVWtBZTRJQTROK2lyQWo5U2dCUyt1TzFIa0pCa2U5L3V5bjN2NzlDQUhhbTRnREJkYnNBY3hrbjdZRUJKcVVBZVlCRkFRRGZ2R1llUDV6L3RHZEF3UUJCZVVBQUFJQU12L25CdmtGeHdBWUFDZ0FnN0lOS1NvUkVqbXdEUkN3Sk5BQXNBQkZXTEFJTHh1eENCOCtXYkFBUlZpd0VDOGJzUkFmUGxtd0FFVllzQVl2RzdFR0R6NVpzQUJGV0xBQUx4dXhBQTgrV2JJS0NBWVJFamw4c0FvdkdMSWZDZ0Z4dEdBS2NBb0NYYklFQVFvcldDSFlHL1Jac0JBUXNoNEJDaXRZSWRnYjlGbXdBQkN5SlFFS0sxZ2gyQnYwV1RBeEJTWUFFVGNqQXlNVE13TXpOaEkzTmhjV0FCY1dBZ0lIQmhNM05pWW1KeVlHQWdjR0ZoY1dFamNFTCtQKy9BRzRhZmI5OW5Lc0orK3ViM3pZQVFFTUJqbUxaN0xhQ1FZeWQxdCt3M2tLQ29TRXJlRWpGQVVCUEFFSkovMmpCYkQ5Y2VJQlZFUXNBd1QrM3ZkOC9yLys4MXFjQXhocWJibGhBd1NXL3M3bnQ5SUVCUUVPOVFBQy83QUFBQVRUQmJFQURnQVhBR0d5RWhnWkVSSTVzQklRc0F2UUFMQUFSVml3RFM4YnNRMGZQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFETHh1eEF3OCtXYklURFFBUkVqbXdFeSt5QVFFS0sxZ2gyQnYwV2JJRkV3RVJFam13RFJDeUZBRUtLMWdoMkJ2MFdUQXhJUk1oQVNFQkppWTNQZ0l6QlFNQkJoWVhGeE1uSWdZQzMxLys5LzZRL3VzQnNXZFlDZ3VYL3A0QjZmMzl5ZzlyYy9GWjE0YXRBaUQ5NEFKdlFjVjNqYzFyQWZwUUErRnhod1FCQWdBQ2kvLy9BQ0wvNkFQY0JGQUNCZ0JGQUFBQUFnQkQvK1lFWVFZVEFCc0FLd0Jpc2hnc0xSRVNPYkFZRUxBZDBBQ3dBRVZZc0JNdkc3RVRJVDVac0FCRldMQUdMeHV4Qmc4K1diSUFFd1lSRWptd0FDK3lGd0FURVJJNXNoRVRGeEVTT2JJYUFBWVJFam15SEFFS0sxZ2gyQnYwV2JBR0VMSWxBUW9yV0NIWUcvUlpNREVCRmhJSEJnQW5MZ0kzTnpVM0VnQTNOelkzTXc0Q0JBWUhOaGNtQmdZSEJoY1dGaGNXTmpjM05pWUNucnJQRWhiKzBlQ0x4MXNRQWdveEFTUG5YcE1Wd1FoU212N1h2MEdlZ0U5OVRRc0hCQWRpV0hXZ0ZRSU5ad1ArQlA3czEvZit6Z1FFanZtV0ZRTkxBVkFCampJU0hXWmtnRk01cEplWXhBSk5qRnRLT21SekF3T3dvQldMb0FBQUF3QWlBQUFFRmdRNkFBNEFGd0FmQUk2eUdTQWhFUkk1c0JrUXNBN1FzQmtRc0JIUUFMQUFSVml3QVM4YnNRRWJQbG13QUVWWXNBQXZHN0VBRHo1WnNoZ0FBUkVTT2JBWUw3S01HQUZkdEY4WWJ4Z0NjYlR2R1A4WUFuRzB2eGpQR0FKZHRCd1lMQmdDY2JKYUdBRmRzZzhIQ2l0WUlkZ2I5Rm15Q0E4WUVSSTVzQUFRc2hBQkNpdFlJZGdiOUZtd0FSQ3lId0VLSzFnaDJCdjBXVEF4TXhNRkZoY1dCd1lIRmhZSEJnWUhBd01YTmpZM05pWW5KeGN5TnpZbUp5Y2l2QUdlbEdLa0NRclFWR0VDQmVuTXpDLzBZVzhKQ2tkUzhyYlVGZ2xOWk1zRU9nRUVLMG1xb0ZFWmVsYVVwZ01CemY3ekFRTktRVGxEQTY4Qmdqby9Bd0VBQVFBWUFBQURpUVE2QUFVQUt3Q3dBRVZZc0FRdkc3RUVHejVac0FCRldMQUNMeHV4QWc4K1diQUVFTElBQVFvcldDSFlHL1JaTURFQklRTWpFeUVEWnY0NW11MjhBclVEZHZ5S0JEb0FBditGL3I0RVpBUTZBQTRBRkFCYnNoSVZGaEVTT2JBU0VMQUUwQUN3REMrd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBS0x4dXhDZzgrV2JJQUFRb3JXQ0hZRy9SWnNBYlFzQWZRc0F3UXNBblFzQWNRc0EvUXNCRFFzQVFRc2hFQkNpdFlJZGdiOUZrd01UYzJOamNUSVFNekF5TVRJUU1qRXdVbEV5RURBakZxZ1I5T0F0dWFrVnJzT1AxaE9QRmJBV2dCbFhiKytUWS92Mkh2cWdHQi9JajkvQUZDL3I0Q0F3TUVBcWYrOWY3MC8vOEFPLy9xQkFJRVVRSUdBRWtBQUFBQi82MEFBQVp5QkRvQUZRQ0NBTEFBUlZpd0NTOGJzUWtiUGxtd0FFVllzQTB2RzdFTkd6NVpzQUJGV0xBUkx4dXhFUnMrV2JBQVJWaXdBaThic1FJUFBsbXdBRVZZc0FZdkc3RUdEejVac0FCRldMQVVMeHV4RkE4K1diSVFFUUlSRWptd0VDK3lqeEFCWGJJQUFRb3JXQ0hZRy9SWnNBVFFzZ2dRQUJFU09iQVFFTEFMMExJVEFCQVJFamt3TVFFakF5TVRJd0VoQVFNaEV6TVRNd016QVNFQkV5RUQvNE5NN1V4ei9zTCt6d0hJNndFVHBIUks3VXBuQVRrQk1QNVQrUDdvQWJQK1RRR3ovazBDUHdINy9sY0JxZjVYQWFuOThQM1dBQUFCQUJiLzZRTzhCRkFBS1FDanNoa3FLeEVTT1FDd0FFVllzQ1l2RzdFbUd6NVpzQUJGV0xBS0x4dXhDZzgrV2JJWkpnb1JFam13R1MrMDd4bi9HUUp4dEI4Wkx4a0NjYksvR1FGeHRGOFpieGtDY2JTL0djOFpBbDJ5akJrQlhiSmFHUUZkc2hZSENpdFlJZGdiOUZteUF4WVpFUkk1c0FvUXNoRUJDaXRZSWRnYjlGbXlEaFlSRVJJNXRBTU9FdzRDWGJBbUVMSWZBUW9yV0NIWUcvUlpzaUlaSHhFU09iUU1JaHdpQWwwd01RRUdCZ2NXRmdjT0FpY21KamN6QmhZek1qWTNOaWNuTnhjMk5qYzJKaU1tQmdjSE5qWVhIZ0lEdGdWZVpraEZCQVY4MTMydzJ3VHBBbUpRVjNrTEZhVzRINXhWWndrSFQwUkxjdy90RFBtNGM3QmNBeHBLZGpNaGZVOXBsMUVEQXIyWFJWWlZTSWNGQWE4QkFrbEVQMGNDVFVFQmxMVUNBa3FKQUFBQkFCa0FBQVJJQkRvQUNRQkZBTEFBUlZpd0FDOGJzUUFiUGxtd0FFVllzQWN2RzdFSEd6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdCUzhic1FVUFBsbXlCQWNDRVJJNXNna0hBaEVTT1RBeEFUTURJeE1CSXhNekF3TlU5THp0ZlAzeTlMenRmQVE2KzhZQ3d2MCtCRHI5UGdELy93QVpBQUFFU0FYYUFpWUIrd0FBQVFjQmFnQ2MvL01BQ1FDd0FDK3dEZHd3TVFBQUFRQWlBQUFFZ1FRNkFBd0FhQUN3QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFJTHh1eENCcytXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQXN2RzdFTER6NVpzZ1lDQkJFU09YeXdCaThZdE5NRzR3WUNYYlJEQmxNR0FsMnlFd1lCY2JJQkFRb3JXQ0hZRy9SWnNnb0JCaEVTT1RBeEFTTURJeE16QXpNQklRRUJJUUhZZmt2dHZPMUxYZ0Z0QVRiK0h3RTAvdDBCclA1VUJEcitVQUd3L2U3OTJBQUIvNy8vL3dSSkJEb0FFQUJOc2dRUkVoRVNPUUN3QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFCTHh1eEFROCtXYkFBUlZpd0NDOGJzUWdQUGxtd0FCQ3lBd0VLSzFnaDJCdjBXYkFJRUxJS0FRb3JXQ0hZRy9SWk1ERUJBeU1USVFNR0JpY2pOemMyTmpjM0V3Ukp1KzZhL3Rwak5jeWZVaFlrVzNNZkQyQUVPdnZHQTNiK1BPYk5BY2tEQ0pldlVnSE9BQUVBSWdBQUJab0VPZ0FNQUZrQXNBQkZXTEFCTHh1eEFScytXYkFBUlZpd0N5OGJzUXNiUGxtd0FFVllzQU12RzdFRER6NVpzQUJGV0xBR0x4dXhCZzgrV2JBQVJWaXdDUzhic1FrUFBsbXlBQXNERVJJNXNnVUxBeEVTT2JJSUN3TVJFamt3TVFFQklRTWpFd0VqQXdNakV5RUNyd0c5QVM2ODdYcitiS0ttZ08yOEFTVUJMUU1OKzhZQ3V2MUdBdHI5SmdRNkFBRUFHUUFBQkVjRU9nQUxBSDRBc0FCRldMQUdMeHV4QmhzK1diQUFSVml3Q2k4YnNRb2JQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFFTHh1eEJBOCtXYklKQ2dBUkVqbXdDUyswdnduUENRSmRzcjhKQVhHMEx3ay9DUUp5c2w4SkFYSzA3d24vQ1FKeHRCOEpMd2tDY2JLUENRRmR0SThKbndrQ2NySUNBUW9yV0NIWUcvUlpNREVoSXhNaEF5TVRNd01oRXpNRGkrNU0vbXBNN3J6dVR3R1hUdTRCdGY1TEJEcitQUUhEQVAvL0FEbi82QVFuQkZJQ0JnQlRBQUFBQVFBWkFBQUVTQVE2QUFjQU9BQ3dBRVZZc0FZdkc3RUdHejVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3QkM4YnNRUVBQbG13QmhDeUFnRUtLMWdoMkJ2MFdUQXhJU01USVFNakV5RURqTzZhL21tYTdyd0Rjd04yL0lvRU9nRC8vLy9IL21BRURRUlNBZ1lBVkFBQUFBRUFPUC9wQSs0RVVnQWNBRXV5QUIwZUVSSTVBTEFBUlZpd0VTOGJzUkViUGxtd0FFVllzQWd2RzdFSUR6NVpzZ0FCQ2l0WUlkZ2I5Rm15QkJFSUVSSTVzaFVJRVJFU09iQVJFTElZQVFvcldDSFlHL1JaTURFbEZqWTNOdzRDSnk0Q056YytBaGNXRmhVak5DWW5KZ1lIQWdIb1ZZTVM0QXVGMEhHTHhGb1BBeEdWN0pDdzB0NWJWb3VnQmdldEFtZFRBV3V3WWdNQ2pQZVlJNTMvaWdRRTRiUmRkZ1FFOU43Kzh3QUJBRk1BQUFRSUJEb0FCd0F4QUxBQVJWaXdCaThic1FZYlBsbXdBRVZZc0FJdkc3RUNEejVac0FZUXNnQUJDaXRZSWRnYjlGbXdCTkN3QmRBd01RRWhBeU1USVRjaEErYitySnZ0bXY2dklnT1RBM244aHdONXdmLy8vN1grUlFRU0JEb0NCZ0JkQUFBQUF3QTkvbUFGVVFZQUFDRUFMQUE0QUh5eUV6azZFUkk1c0JNUXNDblFzQk1Rc0RUUUFMQURMN0FBUlZpd0FDOGJzUUFiUGxtd0FFVllzQWN2RzdFSEd6NVpzQUJGV0xBVUx4dXhGQkUrV2JBQVJWaXdHQzhic1JnUFBsbXdBRVZZc0JFdkc3RVJEejVac0FBUXNqWUJDaXRZSWRnYjlGbXdKdEN3R0JDeU1RRUtLMWdoMkJ2MFdiQXIwREF4QVJZWEV6TUROaGNXRmdjR0J3Y09BaWNtSndNakV3WWpJaVluSmpjM05oSTJBVFluSmljbUJ3TVdNeklCQmhjV0Z4WTNFeVlqSmdNQ0dFUkZXTzFhUmtpWW53RUJCZ1VYaEx4eFQwaFM3VkkrUnBLaEF3RUdCaHFCdndLNUNRRUZrQ014Z3ljbTV2MEVDUU1LaUJnM2hDUWgxenNFVUFJZEFjLytMU0VDQXZIUlFEZ2tvL0J5QXdFZy9sVUJweG5adUR3M0s3UUJCSDc5d2xzNTJRY0NEUDAzQ3dGSFZ6QzBCd0VJQXN3TEJQNlpBUC8vLzdrQUFBUVRCRG9DQmdCY0FBQUFBUUFaL3I4RVNBUTZBQXNBT3dDd0NDK3dBRVZZc0FBdkc3RUFHejVac0FCRldMQUVMeHV4QkJzK1diQUFSVml3Q2k4YnNRb1BQbG15QWdFS0sxZ2gyQnYwV2JBRzBEQXhFek1ESVJNekF6TURJeE1oMWU2YkFaaWE3cHVRYmRrNC9Pb0VPdnlJQTNqOGlQMzlBVUVBQUFFQWNBQUFCQ0FFT3dBU0FFaXlEaE1VRVJJNUFMQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNCRXZHN0VSR3o1WnNBQkZXTEFBTHh1eEFBOCtXYklPRVFBUkVqbDhzQTR2R0xJRUFRb3JXQ0hZRy9SWk1ERWhJeE1HSXlZbU54TXpBd1lYRmhjV054TXpBMlR0Umx0aHdzOFROZTQyQmdVTWtsTnlZZTBCYXhZQzNMd0JUUDZ6TUNaNUJnTVhBZzBBQUFFQUdRQUFCaW9FT2dBTEFFZ0FzQUJGV0xBQUx4dXhBQnMrV2JBQVJWaXdBeThic1FNYlBsbXdBRVZZc0Fjdkc3RUhHejVac0FCRldMQUpMeHV4Q1E4K1diSUJBUW9yV0NIWUcvUlpzQVhRc0FiUU1ERUJBeUVUTXdNaEV6TURJUk1CdzVzQlJwdnRtZ0ZIbXUyOCtxdThCRHI4aUFONC9JZ0RlUHZHQkRvQUFRQVMvcjhHUEFRNkFBOEFTd0N3REMrd0FFVllzQUF2RzdFQUd6NVpzQUJGV0xBREx4dXhBeHMrV2JBQVJWaXdCeThic1FjYlBsbXdBRVZZc0Ewdkc3RU5EejVac2dFQkNpdFlJZGdiOUZtd0JkQ3dDZEF3TVFFRElSTXpBeUVUTXdNekF5TVRJUk1CdTVzQlI1cnRtZ0ZIbSt5YXRHM1pPZnJqdXdRNi9JZ0RlUHlJQTNqOGlQMzlBVUVFT2dBQUFnQlBBQUFFcGdRNkFBd0FGUUJlc2d3V0Z4RVNPYkFNRUxBTjBBQ3dBRVZZc0Fzdkc3RUxHejVac0FCRldMQUhMeHV4Qnc4K1diSUJDd2NSRWptd0FTK3dDeEN5Q1FFS0sxZ2gyQnYwV2JBSEVMSVBBUW9yV0NIWUcvUlpzQUVRc2hVQkNpdFlJZGdiOUZrd01RRVhGaFlIQmdRaklSTWhOeUVEQXhjMk5qYzJKaWNDVWRhd3p3a0wvdnpML2lHYS90RWlBaHhkUGRoY2ZBMExURXdDNGdFRXdxR3AwUU4yeFAzbC9xTUJBbDVUVFZrRUFBQURBQ0lBQUFYeEJEb0FDZ0FUQUJjQWJiSUNHQmtSRWptd0FoQ3dFZEN3QWhDd0ZkQUFzQUJGV0xBSkx4dXhDUnMrV2JBQVJWaXdGaThic1JZYlBsbXdBRVZZc0Fjdkc3RUhEejVac0FCRldMQVVMeHV4RkE4K1diSUJCd2tSRWptd0FTK3lDd0VLSzFnaDJCdjBXYkFIRUxJTkFRb3JXQ0hZRy9SWk1ERUJGeFlXQndZRUl5RVRNd01ERnpZMk56WW1Kd0VqRXpNQmo5YXd6d2tML3Z6TC9pRzg3VjA5MkZ4OERRdE5Td0xVN2J6dEF1SUJCTUtocWRFRU92M2wvcU1CQWw1VFRWa0UvZUlFT2dBQ0FDSUFBQVBrQkRvQUNnQVRBRTJ5RFJRVkVSSTVzQTBRc0FmUUFMQUFSVml3Q1M4YnNRa2JQbG13QUVWWXNBY3ZHN0VIRHo1WnNnRUhDUkVTT2JBQkw3SUxBUW9yV0NIWUcvUlpzQWNRc2cwQkNpdFlJZGdiOUZrd01RRVhGaFlIQmdRaklSTXpBd01YTmpZM05pWW5BWS9Xc004SkMvNzh5LzRodk8xZFBkaGNmQTBMVFVzQzRnRUV3cUdwMFFRNi9lWCtvd0VDWGxOTldRUUFBQUVBSS8vb0E5UUVVQUFmQUhTeUFDQWhFUkk1QUxBQVJWaXdDQzhic1FnYlBsbXdBRVZZc0JFdkc3RVJEejVac0FnUXNnQUJDaXRZSWRnYjlGbXlIQWdSRVJJNWZMQWNMeGl5VXh3QlhiSkFIQUZkc2dNY0FCRVNPYkliQndvcldDSFlHL1Jac0JFUXNoZ0JDaXRZSWRnYjlGbXlGUnNZRVJJNXNsTVZBVjB3TVFFbUJnY0hQZ0lYSGdJSEJ3WUNCaWNtSmpjWEJoWVhGaE1GTnlFMkpnSXNWSDBRM3dtRHpuS0l2VmNQQXhLVzdvNnIwQWJmQlZkUngxeityaDRCUXdoZEE0d0NhVkVCYkxCaEFRU00rSllibi83K2pRUUU0TE1CVzNZRUJnRXFBYWgra3dBQUFnQWsvK2tHRUFSVEFCY0FKd0NMc2lZb0tSRVNPYkFtRUxBUDBBQ3dBRVZZc0JZdkc3RVdHejVac0FCRldMQUVMeHV4QkJzK1diQUFSVml3RkM4YnNSUVBQbG13QUVWWXNBNHZHN0VPRHo1WnNnQVdGQkVTT2JBQUw3UWZBQzhBQW5HeXZ3QUJjYktQQUFGZHNsOEFBWEt5RXdFS0sxZ2gyQnYwV2JBT0VMSWRBUW9yV0NIWUcvUlpzQVFRc2lRQkNpdFlJZGdiOUZrd01RRXpOaVFYSGdJSEJ3WUNCd1luTGdJM0J3TWpFek1CQmhjV0ZoY1dOamMzTkNZbkpnWUhBWUc3UndFaHdJdkVYUkFDRnJTTlpIcCt4V01JeTAvdHZPMEJUUVlEQTJKYWQ2b1pCMkZnZWFjWkFvZmI4UVFFalAyWUZxNys3ejh0QXdOOTE0SUIvandFT3YzUk56eHBnQU1Gd2F4aGhJOEVBOEd2QUFBQy83WUFBQVFXQkRzQURRQVdBR0d5RkJjWUVSSTVzQlFRc0FUUUFMQUFSVml3QUM4YnNRQWJQbG13QUVWWXNBRXZHN0VCRHo1WnNBQkZXTEFGTHh1eEJROCtXYklTQUFFUkVqbXdFaSt5QXdFS0sxZ2gyQnYwV2JJSEF4SVJFam13QUJDeUV3RUtLMWdoMkJ2MFdUQXhBUU1qRXlNQklRRW1KamMySkRNREJoWVhGeE1uQmdZRUZyenNSZFArMnY3OEFVNVFUUVVLQVFqRjZ3dE9SUE0yeTF4L0JEcjd4Z0dOL25NQnVpMldXNkhDL3BkQVRnSUJBVGdCQWwvLy93QTcvK29FQWdZQUFpWUFTUUFBQVFjQVJBQ2NBQUFBRXdDd0FFVllzQWt2RzdFSkd6NVpzQ0hjTURFQS8vOEFPLy9xQkFJRnpRSW1BRWtBQUFFR0FHdHBBQUFNQUxBSkw3QXgzTEFnMERBeEFBRUFEZjVIQS9rR0FBQWpBSVd5QXlRbEVSSTVBTEFoTDdBQVJWaXdCQzhic1FRYlBsbXdBRVZZc0Fzdkc3RUxFVDVac0FCRldMQWFMeHV4R2c4K1diYWZJYThodnlFRFhiSXZJUUZkc2c4aEFWMnlJeG9oRVJJNXNDTXZzQi9Rc2h3SENpdFlJZGdiOUZtd0FkQ3lBaG9FRVJJNXNBc1FzaEFCQ2l0WUlkZ2I5Rm13QkJDeUZ3RUtLMWdoMkJ2MFdUQXhBU0VITmhjV0ZnY0RCZ1lqSmljM0ZqTXlOeE0ySnlZbkpnY0RJeE1qTnpNM013Y2hBc3orL2pPSHE1bVhFM29ZeWFWRFFoODFLMzhnZkFVRURZT0Zab2Z0ejVrZW1SM3VIZ0VFQkszcWpnUUMwOEQ5Q2JYRkFoREJFTUlDN3lzbGVnTUNoUHo2QksycnFLai8vd0FZQUFBRG1BWHpBaVlCOWdBQUFRY0Fkd0RHLy9NQUV3Q3dBRVZZc0FRdkc3RUVHejVac0FqY01ERUFBQUVBTy8vb0EvWUVWQUFmQUdLeUdDQWhFUkk1QUxBQVJWaXdFQzhic1JBYlBsbXdBRVZZc0Fndkc3RUlEejVac2dBQkNpdFlJZGdiOUZteUdoQUlFUkk1ZkxBYUx4aXlIQWNLSzFnaDJCdjBXYklEQUJ3UkVqbXdFQkN5RndFS0sxZ2gyQnYwV2JJVUdoY1JFamt3TVNVV05qYzNEZ0luTGdJM054SUFGeFlXQnlNMEppY21CZ2NsQnlFR0ZnSGxWb01VM3d1RTFYR012MVlRQWgwQk1ONnd6Z0xkWEZOb2t5MEJXQjcrdHcxZnJRSm5Vd0ZycjJRREJJcjNtQlFCQWdFMkJnVGh0R0Z5QkFPTW1nR29nSk1BLy84QUhQL3BBOFFFVUFJR0FGY0FBUC8vQUI4QUFBSUpCZGdDQmdCTkFBRC8vd0FpQUFBQzRRWEdBaVlBOUFBQUFRY0FhLzllLy9rQURBQ3dBaSt3RmR5d0JOQXdNZi8vL3d6K1JnSCtCZGdDQmdCT0FBQUFBdis5QUFBR1JnUTZBQmNBSHdCNXNnb2dJUkVTT2JBS0VMQVowQUN3QUVWWXNBQXZHN0VBR3o1WnNBQkZXTEFJTHh1eENBOCtXYkFBUlZpd0R5OGJzUThQUGxteUFnQUlFUkk1c0FJdnNBQVFzZ29CQ2l0WUlkZ2I5Rm13RHhDeUVRRUtLMWdoMkJ2MFdiQUlFTElhQVFvcldDSFlHL1Jac0FJUXNoOEJDaXRZSWRnYjlGa3dNUUVERnhZV0J3WUVJeUVUSVFNQ0JnY2pOemMyTmpjM0V3RURGelkyTnpZbkJEQkIxckxQQ1F2L0FNeitJWnIrOFVzM3lhWmtGU1ZjYng0U1lBSjdOOWhaZlEwU293UTYvb2NCQmJlWnBjWURkdjZyL3RYeEJja0RDSmFkWlFITy9jWCt3UUVDWEUrSUNnQUNBQmtBQUFaY0JEb0FFZ0FiQUlLeUFSd2RFUkk1c0FFUXNCUFFBTEFBUlZpd0FpOGJzUUliUGxtd0FFVllzQkV2RzdFUkd6NVpzQUJGV0xBTEx4dXhDdzgrV2JBQVJWaXdEeThic1E4UFBsbXlBUkVMRVJJNXNBRXZzZ1FSQ3hFU09iQUVMN0FCRUxJTkFRb3JXQ0hZRy9SWnNBUVFzaE1CQ2l0WUlkZ2I5Rm13Q3hDeUZBRUtLMWdoMkJ2MFdUQXhBU0VUTXdNWEZoWUhCZ1FqSVJNaEF5TVRNd0VERnpZMk56WW1Kd0Y3QVpkSDdrTFdzczhKQ2Y3L3pmNGhVLzVxVSs2ODdnSWhPTmhkZXdzS1NsRUNud0diL29jQkJiZVpwTWNCM2Y0akJEcjl4ZjdCQVFKZlRFQk5CUUFBQVFBTkFBQUQrUVlBQUJvQWM3SURHeHdSRWprQXNCZ3ZzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdFUzhic1JFUFBsbXdBRVZZc0Frdkc3RUpEejVac3I4WUFWMnlMeGdCWGJJUEdBRmRzaG9SR0JFU09iQWFMN0FXMExJVEJ3b3JXQ0hZRy9SWnNBSFFzZ0lFRVJFU09iQUVFTElPQVFvcldDSFlHL1JaTURFQklRYzJGeFlXQndNakV6WW5KaWNtQndNakV5TTNNemN6QnlFQzRmN2tMb2VzbXBVVGRPMTJCUU1OZzRSb2grM1FoeDZISE80ZkFSa0V0ZktPQkFMV3ZmMUlBcnNySlhvREFvVDgrZ1MxcXFHaEFQLy9BQ0lBQUFTQkJmSUNKZ0g5QUFBQkJ3QjNBVVQvOGdBVEFMQUFSVml3QkM4YnNRUWJQbG13RDl3d01RRC8vd0FaQUFBRVNBWHpBaVlCK3dBQUFRY0FSQURILy9NQUV3Q3dBRVZZc0Fndkc3RUlHejVac0F2Y01ERUEvLy8vdGY1RkJCSUY1d0ltQUYwQUFBRUdBV3BVQUFBSkFMQUJMN0FUM0RBeEFBQUJBQm4rbWdSSUJEb0FDd0JGQUxBSUw3QUFSVml3QUM4YnNRQWJQbG13QUVWWXNBTXZHN0VER3o1WnNBQkZXTEFGTHh1eEJROCtXYkFBUlZpd0NTOGJzUWtQUGxteUFRRUtLMWdoMkJ2MFdUQXhBUU1oRXpNRElRTWpFeUVUQWNPYkFaaWE3cnordno3dVAvNjd2QVE2L0lnRGVQdkcvcG9CWmdRNkFBQUJBR0QvNWdjdUJiQUFJd0Jnc2dZa0pSRVNPUUN3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFOTHh1eERSOCtXYkFBUlZpd0dDOGJzUmdmUGxtd0FFVllzQVF2RzdFRUR6NVpzQUJGV0xBSkx4dXhDUTgrV2JJSEFBUVJFam15RkFFS0sxZ2gyQnYwV2JBZjBEQXhBUU1HQkNjbUppY0dKeVltTnhNekF3WVhGaFlYRmpZM0V6TURCaGNXRmhjV05qY1RCeTZ2SGY3dnpteWdKWTdhdTg4VnJ2ZXZCUU1GUzBOa2lSU3YrNjhGQlFkUVJWK0JGYThGc1B2OTBQY0VBbGRNcVFRRStzUUVCUHY3S2l0SVZ3TUVnM2dFQmZ2N0xTdExVUU1EZjNzRUJRQUFBUUJFLytZR0hnUTZBQ0lBWExJWEl5UVJFamtBc0FCRldMQUFMeHV4QUJzK1diQUFSVml3RFM4YnNRMGJQbG13QUVWWXNCY3ZHN0VYR3o1WnNBQkZXTEFKTHh1eENROCtXYkFFMExBRUw3SUhGd2tSRWptd0NSQ3lFd0VLSzFnaDJCdjBXYkFlMERBeEFRTUdCaWNtSmljR0p5WW1OeE16QXdjVUZoY1dOamNUTXdNR0Z4WVdGeFkyTnhNR0huTWM4cmRiamlLQ3VxbXlFM1B0Y2dRNE9GTjBFM1B1Y2dRQ0FrSTdUMmdRY3dRNi9WTEU0Z1FDU2tLUkJBVG10Z0t2L1ZCSFExRURCWE53QXJEOVVDWW1RMDRCQTNackFyQUFBZ0FqQUFBRWxBV3dBQklBR3dCMHNoVWNIUkVTT2JBVkVMQUowQUN3QUVWWXNBOHZHN0VQSHo1WnNBQkZXTEFKTHh1eENROCtXYklTQ1E4UkVqbXdFaSt5QUFjS0sxZ2gyQnYwV2JJRER3a1JFam13QXkrd0FCQ3dDOUN3RE5Dd0VoQ3dEZEN3Q1JDeUZRRUtLMWdoMkJ2MFdiQURFTEliQVFvcldDSFlHL1JaTURFQkl3Y1hGaFlIQmdRaklSTWpOek0zTXdjekFRTUZOalkzTmlZbkFySFpJdjdqL1JFUS9zZjAvZDIrdXg2N0lmY2kydjdFVmdFU2dhNFBEbkJyQkVmRUFRSHZ4TkQrQkVlcXY3Lzl4LzRTQWdLUWQybDVCQUFDQUNILy9BUHBCaGdBRWdBYkFIR3lGUndkRVJJNXNCVVFzQVBRQUxBQVJWaXdEeThic1E4aFBsbXdBRVZZc0Frdkc3RUpEejVac2hJUENSRVNPYkFTTDdJQUJ3b3JXQ0hZRy9SWnNnSVBDUkVTT2JBQ0w3QUFFTEFMMExBU0VMQU4wTEFDRUxJVEFRb3JXQ0hZRy9SWnNBa1FzaFFCQ2l0WUlkZ2I5Rmt3TVFFaEF4Y1dGZ2NHQkNjaEV5TTNNeE16QXlFQkF4YzJOamMySmljQzQvN25Oc2U1MVF3Ti92VEMvaCs4cVI2b051MDJBUnIrY2tQWllId0xDa1pQQkRyK3lRRUJ6S20yMmdRRU9xc0JNLzdOL1Z2K2dnSUNjRlpNWmdVQUFRQXIvK2tHM3dYS0FDWUFpYkljSnlnUkVqa0FzQUJGV0xBbEx4dXhKUjgrV2JBQVJWaXdCQzhic1FRZlBsbXdBRVZZc0NNdkc3RWpEejVac0FCRldMQWJMeHV4R3c4K1diSUFKU01SRWptd0FDK3lCd1FiRVJJNXNBUVFzZ3NCQ2l0WUlkZ2I5Rm13QUJDd0R0Q3dBQkN5SWdFS0sxZ2gyQnYwV2JBUjBMQWJFTElWQVFvcldDSFlHL1Jac2hnYkJCRVNPVEF4QVJjU0FCY1dFaGNqSmlZbkpnWUhKUWNoQndZV0Z3UVROd1lBSnk0Q0p5WTNCd01qRXpNQnRLWlFBVjM2MlBzTDlRVjVkNVhTUEFIaUl2NHJDZzE5ZndFWFQvWW4vcTd3aWRGNEJnUU90WEgyL1BjRFR3RUJNZ0ZLQlFUKyt1eWNpd01GeitFQncyU3F3Z1FMQVMwQjVQN3lCQU4rNnBKUlVnSDlkQVd3QUFBQkFCbi82QVdrQkZNQUpnQ1ZzZzBuS0JFU09RQ3dBRVZZc0NZdkc3RW1HejVac0FCRldMQUVMeHV4QkJzK1diQUFSVml3SXk4YnNTTVBQbG13QUVWWXNCNHZHN0VlRHo1WnNnNGVCQkVTT1h5d0RpOFlzbElPQVYyeVFBNEJYYkFCMExBRUVMSUxBUW9yV0NIWUcvUlpzZ2dPQ3hFU09iQU9FTElQQndvcldDSFlHL1Jac0I0UXNoWUJDaXRZSWRnYjlGbXlHUllQRVJJNXNBOFFzQ0hRTURFQk16WWtGeFlXQnlNMEppY21BeVVISVFZWEZoY1dGeFkyTnpjT0FpY21BamNIQXlNVE13Rnpqa1VCSE1PdjBBTGRXVmJSVmdGNUh2NldCUVVMU2lVNldJRVQ0QXVJMDNERjRSS2hUdTY4N2dKeDdmVUZCT0MxWDNRRUJ2N2VBYXN5TW13d0dBRUNhVkVCYkxCaUF3UUJFY2NCL2pvRU9nQUMvNjRBQUFTRUJiQUFDd0FPQUZZQXNBQkZXTEFJTHh1eENCOCtXYkFBUlZpd0FpOGJzUUlQUGxtd0FFVllzQVl2RzdFR0R6NVpzQUJGV0xBS0x4dXhDZzgrV2JJTkNBSVJFam13RFMreUFBRUtLMWdoMkJ2MFdiQUUwTElPQ0FJUkVqa3dNUUVqQXlNVEl3TWhBVE1USXdFaEF3Tk9mVXJjU21uVi92Y0M4Ky8wOXY1Y0FVaExBYXIrVmdHcS9sWUZzUHBRQW1nQjlRQUFBditjQUFBRHVBUTZBQXNBRUFCV0FMQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFHTHh1eEJnOCtXYkFBUlZpd0NpOGJzUW9QUGxteURRSUlFUkk1c0EwdnNnRUJDaXRZSWRnYjlGbXdCTkN5RHdnQ0VSSTVNREVCSXdNakV5TURJd0V6RXlNQk13TW5Cd0tmWXpDK01WS1crd0pZNGVQaS9yUHdOZ1V1QVJmKzZRRVgvdWtFT3Z2R0FjUUJFMVJ0QUFBQ0FENEFBQWFOQmJBQUV3QVdBSHdBc0FCRldMQUNMeHV4QWg4K1diQUFSVml3RWk4YnNSSWZQbG13QUVWWXNBUXZHN0VFRHo1WnNBQkZXTEFJTHh1eENBOCtXYkFBUlZpd0RDOGJzUXdQUGxtd0FFVllzQkF2RzdFUUR6NVpzaFVDQkJFU09iQVZMN0FBMExBVkVMSUdBUW9yV0NIWUcvUlpzQXJRc0FZUXNBN1FzaFlDQkJFU09UQXhBU0VCTXhNakF5TURJeE1qQXlFVElRTWpFek1CSVFNQm53RllBYkx3OVBaQWZVcmRTbWpWL3ZiZS91dEw5djMyQWNJQlNFd0Nad05KK2xBQnF2NVdBYXIrVmdHci9sVUZzUHk0QWZZQUFBSUFNQUFBQlgwRU9nQVRBQmdBZndDd0FFVllzQUl2RzdFQ0d6NVpzQUJGV0xBU0x4dXhFaHMrV2JBQVJWaXdCQzhic1FRUFBsbXdBRVZZc0Fndkc3RUlEejVac0FCRldMQU1MeHV4REE4K1diQUFSVml3RUM4YnNSQVBQbG15QUJBU0VSSTVzQUF2c0FIUXNnNEJDaXRZSWRnYjlGbXdDOUN3QjlDd0FSQ3dGTkN3RmRDeUZ4SUVFUkk1TURFQk13RXpFeU1ESXdNakV5TURJeE1qQXlNVE13RXpBeWNIQVd2d0FWN2g0K2MyWFRLK01WS1crNXV1TWUyNzdnRjE4RFlGTGdIRUFuYjd4Z0VYL3VrQkYvN3BBUmYrNlFRNi9Zb0JFMVJ0QUFJQUZBQUFCbVFGc0FBYkFCNEFkN0lNSHlBUkVqbXdEQkN3SE5BQXNBQkZXTEFhTHh1eEdoOCtXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQXd2RzdFTUR6NVpzQUJGV0xBVEx4dXhFdzgrV2JJWUdnUVJFam13R0Mrd0FOQ3dHQkN5RHdFS0sxZ2gyQnYwV2JBSjBMSWNHZ1FSRWptd0doQ3lIUUVLSzFnaDJCdjBXVEF4QVJZV0J3TWpFelltSnljSEF5TVRKeVlHQndNakV6WWtKUmNESVFFQklRUjUyZFFYT2ZZNUVGWjhhQXhzOW1sc2haOFdPdlk1SUFFYkFRRVI5Z1RBL1NRQkxQNCtBeVFFNzlIK29BRmhlWDBGQXcvOXNBSmNBZ0Z6aHY2YUFXRGs0d0lCQW9qOWpBR25BQUlBRmdBQUJTb0VPZ0FiQUI0QWM3SWNIeUFSRWptd0hCQ3dGTkFBc0FCRldMQUZMeHV4QlJzK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBc3ZHN0VMRHo1WnNBQkZXTEFVTHh1eEZBOCtXYkFFMExBRUw3QUgwTEFFRUxJU0FRb3JXQ0hZRy9SWnNCZlFzaHdGQUJFU09iQUZFTElkQVFvcldDSFlHL1JaTURFek56WTJOd01oQVJZV0J3Y2pOelluSmljbkJ3TWpFeWNpQmdjSEFSTWhGaG9kNTlDeEE5ZitsS1NmRkJudUdnWUJCcG9rQmszc1RpWnloQlVjQWQzQy91Q3Z6TmNPQWRyK0lCRGp2cW1xTkMyTkRRSUkvbUVCcGdGemZyWUNhd0VnQUFJQU5RQUFDSmtGc0FBaEFDUUFsN0lkSlNZUkVqbXdIUkN3Sk5BQXNBQkZXTEFITHh1eEJ4OCtXYkFBUlZpd0N5OGJzUXNmUGxtd0FFVllzQUF2RzdFQUR6NVpzQUJGV0xBRkx4dXhCUTgrV2JBQVJWaXdFUzhic1JFUFBsbXdBRVZZc0Jvdkc3RWFEejVac2drSEFCRVNPYkFKTDdJZEFRb3JXQ0hZRy9SWnNBUFFzQWtRc0EzUXNCMFFzQmZRc2lJSEFCRVNPYkFMRUxJakFRb3JXQ0hZRy9SWk1ERWhFelkzQlFNakV6TURJUU1oQVJZV0J3TWpFelluSmljbkJ3TWpFeWNtQmdjREFRRWhBa2M3RjFiK3AydjIvZlp3QXgzK0JNTCtFOW5VRnpuMk9nY0dFckpuQzJ6MmFXNkVueFk3QW9BQksvNDlBVitmYXdQOW1nV3cvWHNDaGYxMEJPL1IvcUFCWVQwdWlnWUREZjJ1QWx3Q0FYT0cvcG9ET2dHcEFBQUNBQ0lBQUFjdEJEb0FJUUFrQUpteUd5VW1FUkk1c0JzUXNDVFFBTEFBUlZpd0J5OGJzUWNiUGxtd0FFVllzQXN2RzdFTEd6NVpzQUJGV0xBQUx4dXhBQTgrV2JBQVJWaXdCUzhic1FVUFBsbXdBRVZZc0JFdkc3RVJEejVac0FCRldMQWFMeHV4R2c4K1diQUZFTEFKMExBSkw3QUswTEljQVFvcldDSFlHL1Jac0FUUXNBb1FzQTNRc0J3UXNCZlFzaUlMQUJFU09iQUxFTElqQVFvcldDSFlHL1JaTURFaE56WTNCUU1qRXpNRElRTWhBUllXQndjak56WW5KaWNuQndNakV5TUdCZ2NIQVJNaEFoZ2NHazMrdmtydHZPMVNBcGE1QTlmK2xhR2dGQm50R2djQ0I1b2pCazNzVGl0emdSUWFBZDNDL3VDcG5tUUQvbGdFT3Y0bkFkbitJQkRpdjZtcU5TeVJDUUlJL21FQnBnRjJoYW9DYXdFZ0FBQUMvNnIrUWdReEI0d0FLZ0F6QUl1eUNUUTFFUkk1c0FrUXNEUFFBTEFiTDdBd0w3QUFSVml3Q1M4YnNRa2ZQbG13QUVWWXNCVXZHN0VWRHo1WnNnQUpGUkVTT2JBQUw3QUpFTElHQVFvcldDSFlHL1Jac0FBUXNpZ0JDaXRZSWRnYjlGbXlEeWdBRVJJNXNCVVFzaUlCQ2l0WUlkZ2I5Rm15RHpBQlhiQXdFTEF5MExBeUw3SVBNZ0Zkc2lzd01oRVNPYkF0MExBdEx6QXhBVEkyTnpZbUp5VTNGeDRDQndZRkZoWUhCZ1FuSndZSEJoY0hKaVkzTmpZekZ6STJOelltSnljM0FUYzNGUUVqQXpVWEFhUjlwQTRMWld2KzNpUDRoOUpxQ0JIKzltWm9Cdy8rMWRzMWpCRVFoMXQwaFFZRnhxbzBjcWtQRG5pQW1TTUJsS3JRL3MyVDZjUURUWE5xVm1NRkFjY0JBVnlwZE9GdExLdHd5ZThDQVFWcGFENlZLcmx4aEpjQmdXeHJlUVVCeHdPZ21RUVEvdXdCRlJBRUFBTC90ZjVLQThVR0lBQWxBQzRBdjdJckx6QVJFam13S3hDd0JOQUFzQ3N2c0FCRldMQUhMeHV4QnhzK1diQUFSVml3Rnk4YnNSY1JQbG13QUVWWXNCRXZHN0VSRHo1WnNnQVJCeEVTT2JBQUw3Uy9BTThBQWwyMFh3QnZBQUp4dEM4QVB3QUNjclR2QVA4QUFuRzBId0F2QUFKeHNvOEFBVjJ5dndBQmNyQUhFTElFQVFvcldDSFlHL1Jac0FBUXNpTUhDaXRZSWRnYjlGbXlEQ01BRVJJNXNCRVFzaDBCQ2l0WUlkZ2I5Rm13S3hDd0xkQ3dMUyswRHkwZkxRSmRzaVlyTFJFU09iQW8wTEFvTHpBeEFUWTNOaWNoTnhjV0ZnY0dCeFlIQmdRakl3WUhCaGNISmlZM05qWXpGekkyTnpZbkl6Y0JOemNYQVNNRE5SY0JoT1FYRXNMKzNpSHZ6dWtIQ3RHc0JBWCs4OVlsa3hFUWYxbG9nZ1FGdjZFd2FJME5GT2FoSGdGUHF0QUIvc3lUNmNNQ2JnYVJkUWU1QVFHYWpaMWNScHFlcndWcVlVS1BMckZ0ZjQ4QlVFYUdCNmtERTVrRUVmN3RBUlFSQkFELy93QjFBQUFGMXdXd0FnWUJtQUFBLy84QVAvNGlCWW9FUEFJR0FiZ0FBQUFEQUdMLzV3VWFCY2dBRWdBYkFDUUFjTElVSlNZUkVqbXdGQkN3Q2RDd0ZCQ3dIZEFBc0FCRldMQUtMeHV4Q2g4K1diQUFSVml3QUM4YnNRQVBQbG13Q2hDeUV3RUtLMWdoMkJ2MFdiSVdDZ0FSRWpsOHNCWXZHTEp6RmdGZHNtQVdBVjJ3QUJDeUhBRUtLMWdoMkJ2MFdiQVdFTElnQndvcldDSFlHL1JaTURFRkxnSW5KaEkzTmlRWEZnQVhGZ0lDQndZREpnWUhKVFkzTmlZQkZqWTNCUVlWRkJZQ1VJL1dlZ2dIT0VWZ0FUTzkyQUVCREFZNWkyZXlHcG5hUGdLb0J3RURoUDY4bXRVKy9WZ0doaFFEZy9pZGN3RkRoN3ZKQkFUKzN2ZDgvci8rODFxY0JRd0YzdklCTURXbnV2dk1CZHZ2QVRBenA3WUFBd0EyLytjRUpnUlNBQkVBRndBZEFHcXlHQjRmRVJJNXNCZ1FzQXpRc0JnUXNCTFFBTEFBUlZpd0JDOGJzUVFiUGxtd0FFVllzQTB2RzdFTkR6NVpzaElCQ2l0WUlkZ2I5Rm15R2dRTkVSSTVmTEFhTHhpeVVob0JYYkpBR2dGZHNoVUhDaXRZSWRnYjlGbXdCQkN5R0FFS0sxZ2gyQnYwV1RBeEV6WVNOaGNlQWdjSEJnSUdKeVlDTnpjQkZoTUZCaFlUSmdNbE5pWkdFcHZ6azR2SFd4QUNGSnp6a3NqaENnTUJwOUpoL2c0SVplWE5aQUh4Q0dnQ0lKNEJCWThFQkk3OGxoYWYvdjZNQkFVQkdkb28vcUlIQVNRQmc1WUMzQWYrNEFGOW1BQUJBS2dBQUFWZUJjWUFEd0JHc2dJUUVSRVNPUUN3QUVWWXNBWXZHN0VHSHo1WnNBQkZXTEFQTHh1eER4OCtXYkFBUlZpd0RDOGJzUXdQUGxteUFRd1BFUkk1c0FZUXNnZ0JDaXRZSWRnYjlGa3dNUUVYTndFMk5oY1hCeWNpQndFakF6TUNLZ1F5QVZkTHRIWXlHUkZiUHYzaTd1ZitBWUJqZGdMdHNwUUNBZGNCZ2Z1VUJiQUFBUUIzQUFBRVJBUlNBQkFBUnJJTkVSSVJFamtBc0FCRldMQUZMeHV4QlJzK1diQUFSVml3RUM4YnNSQWJQbG13QUVWWXNBMHZHN0VORHo1WnNnRU5FQkVTT2JBRkVMSUtBUW9yV0NIWUcvUlpNREVCRnpjVEVqTXlGd2NtQnlJSEFTTURNd0dwQWlTL2Q4ODRPQ2NZRWtzMy9udk9wK2NCYm1CZ0FjSUJJaGpCQ2dKdi9PNEVPd0QvL3dDb0FBQUZYZ2I4QWlZQ053QUFBUWNCZFFSWEFRNEFGZ0N3QUVWWXNBOHZHN0VQSHo1WnNCSGNzQlhRTURILy93QjNBQUFFUkFYUUFpWUNPQUFBQVFjQmRRUEMvK0lBRmdDd0FFVllzQTh2RzdFUEd6NVpzQkxjc0JiUU1ESC8vd0JyL2tVSmVBWElBQ1lBTXdBQUFBY0FYUVZtQUFELy93QTUva1VJaHdSU0FDWUFVd0FBQUFjQVhRUjFBQUFBQWdCbS8zVUZGQVl2QUJRQUpnQlZzaGtuS0JFU09iQVpFTEFBMEFDd0FFVllzQTB2RzdFTkh6NVpzQUJGV0xBREx4dXhBdzgrV2JBQTBMQU5FTEFLMExBTkVMSVhBUW9yV0NIWUcvUlpzQnJRc0FNUXNpQUJDaXRZSWRnYjlGbXdJOUF3TVFVSEp6Y21BaWMzRWdBbE54Y0hGaElYRmdjQ0FCTW1Kd2NuTndZQ0F4VVdGemNYQnlRVE5nS2tITUVjc2NnRUFSSUJUUUVRR2NFWnI4Y0ZBaHcwL3NhVkJad1Z3aGFsc2c4TW1CWENGZ0VQUGhnTWZ3R0FKQUVlNGt3QmJnSERKbklCZENUKzRlWjRsdjduL3FvRG9mQkFZZ0ZrTmY2eS9zVkM0ejFpQVdKWEFaUzJBQUlBT1ArSEJEVUV0UUFUQUNNQVdMSUFKQ1VSRWptd0ZOQUFzQUJGV0xBQUx4dXhBQnMrV2JBQVJWaXdDaThic1FvUFBsbXdBQkN3QTlDd0NoQ3dEZEN3Q2hDeUZBRUtLMWdoMkJ2MFdiQUFFTEljQVFvcldDSFlHL1Jac0JuUXNCUVFzQ0hRTURFQk54Y0hGaElIQndZQUJ3Y25OeVlDTnpjMkVoTTJOamMySndjbk53WUdCd1lYTnhjQ05SbTBHYWFtRlFJYy92cklHTFFZcGFNVkJ5UC8xRzk5QmdSdUZiUVdiWGtIQjJ3WHRBUkdid0Z2Si83Ynp4YmcvdHNjYkFGdUp3RWp5ekhhQVJMOGtpM3NzN2c4WVFGak1PZXh0ajlwQVFBREFHTC81UWJjQjBRQU1RQkdBRThBcjdJOVVGRVJFam13UFJDd0NkQ3dQUkN3UjlBQXNBQkZXTEFVTHh1eEZCOCtXYkFBUlZpd0J5OGJzUWNQUGxtd0ZCQ3dBTkN3QUMreUNnY1VFUkk1c0FjUXNBelFzQlFRc2hVQkNpdFlJZGdiOUZtd0J4Q3lLUUVLSzFnaDJCdjBXYkFlMExJaUZBY1JFam13RlJDd01kQ3dGQkN3UHRDd1BpK3dNOUN3TXkreU1nZ0tLMWdoMkJ2MFdiQXpFTEE1MExBNUw3SkNDQW9yV0NIWUcvUlpzRDRRc0V2UXNFc3ZzRS9Rc0U4dk1ERUJGaElIQXdZQUp5WW1Kd1luTGdJM0V6WWtOd2NHQmdjREJoY1dGaGNXTmpjVE13TUdGeFlXRnhZMk54TTJOU1luRXdjakxnTWpJZ1lIQnljM05qWVhIZ01CTmpZM054Y0hCZ2NGV0wzSEYxVWUvdS9KWjZNcGt0QjhzMUlQVlI4QkVkVVhZWUFWVlFVQkFrbEVab2tVUCs4L0JRVUlWVWRlZkJaV0JnU0tzUWtlTzNGeGJUY3pRQWtDZ3dJSWdtd3dXclZpL2Uwckp3Z1NwUTBSbmdXeENmNzd6ZjN0M1A3L0JBSlRTYU1HQW5uYWd3SVQzdm9FekFLTWd2M3NLaTVUWHdRRmhuc0JmLzU4THl4SlVRTURpb2dDRlMwdXBnb0I1b2dDSnk4a09ERVRBU1pzY1FJQkYwa1ovb294UGlWZUFXWnZXd0FEQUV2LzVRWERCZWdBTUFCRkFFMEFyN0k2VGs4UkVqbXdPaEN3Q3RDd09oQ3dSdEFBc0FCRldMQVZMeHV4RlJzK1diQUFSVml3RFM4YnNRMFBQbG13RlJDd0FOQ3dBQyt3RFJDd0NOQ3lDdzBWRVJJNXNCVVFzaFlCQ2l0WUlkZ2I5Rm13RFJDeUhRRUtLMWdoMkJ2MFdiSWhGUTBSRWptd0tOQ3dGaEN3TU5Dd0ZSQ3dQZEN3UFMrd010Q3dNaSt5TVFnS0sxZ2gyQnYwV2JBeUVMQTQwTEE0TDdKQkNBb3JXQ0hZRy9SWnNEMFFzRW5Rc0VrdnNFM1FzRTB2TURFQkhnSUhCd1lHSnlZbUp3WW5KaVkzRXpZM05qY0hCZzhDQmhZWEZqWTNOek1IQmhjV0ZoY1dOamNUTnpZbUp3RUhJeTRESXlJR0J3Y25OelkyRng0REFUWTNOeGNIQmdjRWEzR2VTUTBoSGV5eVdZMGpnTENvcmhRa0lZeDNyeFdwSnlRRUJEYzJVRzhSSCtZZEJBTURSVHRIWWhFbUJBSTdPZ0VEQ1NFNmJYaHJOekpBQ1FLRUFnaUNiREJhdjFuOThFc1BFYVlORUtBRVNBWnZ4SHp1MCswRkFrdEVsQVFFOGI0QkE5aHZYZ1BEQitYOVNFaGZBZ1YzYk1mSEppWkNVQUVEZW5VQkREOUZWUVlCNm9nQ0pUSWpPREVUQVNac2NRSUJGMDBWL29oVlAxNEJaVzljQUFBQ0FHRC81QWN0QnhFQUl3QXJBSVd5Qml3dEVSSTVzQVlRc0NyUUFMQUFSVml3QUM4YnNRQWZQbG13QUVWWXNBMHZHN0VOSHo1WnNBQkZXTEFZTHh1eEdCOCtXYkFBUlZpd0NTOGJzUWtQUGxtd0JOQ3dCQyt5QndBSkVSSTVzQWtRc2hRQkNpdFlJZGdiOUZtd0g5Q3dBQkN3S3RDd0tpK3dLTkN3S0MreUpnZ0tLMWdoMkJ2MFdiQW9FTEFyMExBckx6QXhBUU1HQkNjbUppY0dKeVltTnhNekF3WVhGaFlYRmpZM0V6TURCaGNXRmhjV05qY1RKVGNoQnlFSEl6Y0hMYThkL3U3TmFhSW1qOW0veWhTdTk2OEZBd1ZMUTJTSkZLLzdyd1VGQjFCRlhZTVZyL3g5RmdNOUZmNnhGN0VYQmJENy9kRDVCQUpYVHFvRUJ2dkNCQVQ3K3lvclNsVURCSU40QkFYNyt5MHJTMUVEQTM1OEJBWG5lbnAvZndBQ0FFVC81Z1llQmJFQUlnQXFBSW15Rnlzc0VSSTVzQmNRc0NuUUFMQUFSVml3QUM4YnNRQWJQbG13QUVWWXNBMHZHN0VOR3o1WnNBQkZXTEFYTHh1eEZ4cytXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQWt2RzdFSkR6NVpzZ2NYQkJFU09iSVRBUW9yV0NIWUcvUlpzQjdRc0JjUXNDblFzQ2t2c0NyUXNDb3ZzaVFJQ2l0WUlkZ2I5Rm13S2hDd0o5Q3dKeTh3TVFFREJnWW5KaVluQmljbUpqY1RNd01IRkJZWEZqWTNFek1EQmhjV0ZoY1dOamNUSlRjaEJ5RUhJemNHSG5NYzg3WmJqaUtEdWFteUUzUHRjZ1E0T0ZOekUzVHVjZ1FDQWtJN1QyZ1FjL3ppRmdNaEUvNitGN0VXQkRyOVVzYmdCQUpLUXBJRUJPbTBBcS85VUVkRFVRTURjR3NDdHYxUUppWkRUZ0VEZG1zQ3NQeDdlMzkvQUFBQkFGYitqQVRxQmNvQUdRQlRzZ0FhR3hFU09RQ3dBRVZZc0Fvdkc3RUtIejVac0FCRldMQUFMeHV4QUJjK1diQUFSVml3QWk4YnNRSVBQbG13Q2hDd0R0Q3dDaEN5RUFFS0sxZ2gyQnYwV2JBQ0VMSVlBUW9yV0NIWUcvUlpNREVCSXhNbUpnSTNFeElBRnhZU0J5Y1NKeVlHQndNSEJoWVhGd0o2OVVWOXJVb1RLaTBCWGZMazl3ejJFdmlQeXlBdEF3TjBhcWYrakFGb0dxa0JBcElCREFFZkFWUUZCUDczNWdFQklBY0Q0c2orNFVDUnFRUUJBQUFCQUVYK2lRUDhCRk1BR1FCVHNnQWFHeEVTT1FDd0FFVllzQW92RzdFS0d6NVpzQUJGV0xBQUx4dXhBQmMrV2JBQVJWaXdBaThic1FJUFBsbXdDaEN3RHRDd0NoQ3lFUUVLSzFnaDJCdjBXYkFDRUxJWUFRb3JXQ0hZRy9SWk1ERUJJeE1tQWpjM0VqYzJGeFlXQnljMkppY21CZ2NIQmhZWEZ3SWs3VVdibkJZQkhabVoxcXpQQnQ4RlZsSnhveFlLQjFaWW5mNkpBV3duQVNETUN3RUducHdGQk9PeUFWdDNCQVhDbzJwOGt3UUNBQUFCQURnQUFBUzZCVDRBRXdBVEFMQU9MN0FBUlZpd0JDOGJzUVFQUGxrd01RRVhCeWNESXdFbk54Y0JKemNYRXpjQkJRY25BakQ3VlAzcHVRRW0rMVQrQVF2OVZ2M3R0LzdWQVFCWitRRzRySFdxL3I4Qmw2dDFxd0Z6cTNlckFVY0IvbUtyZEtrQUFBSDg1Z1NpLytJRi9RQUhBQkVBc0FBdnNnTUdDaXRZSWRnYjlGa3dNUUVISnpjaE54Y0gvYW9XcmlzQ0VST3RKd1VnZmdIdWJBSGNBQUFCL1E0RkZ2L3pCaFFBRWdBckFMQUVMN0FJMExBSUw3SUFBZ29yV0NIWUcvUlpzQVFRc0EzUXNBMHZzZzRDQ2l0WUlkZ2I5Rmt3TVFNV0ZnY0hKemMySnlZR0JBY0hOekkrQXVSa2N3UURnZ0lHVmlwVC92TkJRd3RLVjlGaEJoTUNiR2NvQVJSZEJBSVFZZ1VCaHhOTkZ3QUIvaXNGRmY4Q0JtQUFCUUFNQUxBQkw3QUYwTEFGTHpBeEFUY3pCeGNIL2lzV3VSNG1VQVhuZWFSc093QUFBZjQ4QlJmL1d3WmdBQVVBREFDd0F5K3dBTkN3QUM4d01RRW5OemN6Qi82S1RrOFh1UmtGRjA1eWlZOEFBQWo2UWY3Q0FaNEZzUUFMQUJjQUl3QXZBRHNBUndCVEFGOEFlZ0N3UHkrd1N5K3dWeSt3TXkrd0FFVllzQU12RzdFREh6NVpzZ2tKQ2l0WUlkZ2I5Rm13UHhDd0Q5Q3dQeEN5UlFrS0sxZ2gyQnYwV2JBVjBMQkxFTEFiMExCTEVMSlJDUW9yV0NIWUcvUlpzQ0hRc0ZjUXNDZlFzRmNRc2wwSkNpdFlJZGdiOUZtd0xkQ3dNeEN5T1FrS0sxZ2gyQnYwV1RBeEFUWTJGeklXRlNjMkl5WUhBVFkyTXhZV0Z5YzJJeUlIQXpZMkZ4WVdGeWMySXlZSEFUWTJGeFlXRnljMkl5WUhBVFkyRnhZV0Z5YzJJeVlIQVRZMkZ6SVdGU2MySXlJSEFUWTJGeFlXRnljMkl5WUhBelkyRnhZV0Z5YzJJeVlIL1owSWIxdFhiV3NGVUZVYkFaMEliMXBaYXdKc0JWQlNIUklJYmx0WWFnSnJCVkJUSHY1NkNIRlhXR29DYXdWUVVoNzlNQWh3VzFocUFtc0ZVRk1lL2tJSWNGdFhiV3NGVDFRZC9vOElibHRZYWdKckJWQlRIaWNJYjFwWWF3SnNCVkJTSGdUeldHWUJhVllCWmdKbS91cFhaZ0ZtV0FGbVpQNEhXR1lCQVdaWEFXWUNadjMzV1dZQ0FXWlhBV1lDWnY3aldXVUJBV2RYQVdZQ1pnVVpXV1VCYVZZQlptVCtCMWhtQVFGbVZ3Rm1BbWI5OTFobUFRRm1Wd0ZtQW1ZQUFBajZiLzVqQVhNRnhnQUVBQWtBRGdBVEFCZ0FIUUFpQUNjQUx3Q3dJUyt3Rmkrd0VpK3dDeSt3R3krd0ppK3dBRVZZc0Fjdkc3RUhIejVac0FCRldMQUNMeHV4QWhFK1dUQXhCUmNESXhNVEp4TXpBd0UzQlFjbEJRY2xOd1VCTnlVWEJRRUhCU2NsRXljRE54TUJGeE1IQS8za0RxdG1mYVFPcW1aOUFha0tBVGtRL3NEN2p3cit4eEVCUHdQT0F3RktQLzdRL0dZRC9yWkFBVEp0RVY5QmxnS3hFVjlEbERvVC9yQUJZQVNoRVFGUi9xSCtFUXFBV2tROENvQmFSQUd1RXBoT3Z2eU5FNWhQdndMa0FRRlRPLzdRL09ZQi9xNDlBVEFBLy84QUovNStCWHdISkFJbUFkc0FBQUFuQVdvQlZ3RTlBUWNBRUFSVS84WUFFd0N3QUVWWXNBZ3ZHN0VJSHo1WnNBM2NNREVBLy84QUdmNStCSFlGMmdJbUFmc0FBQUFuQVdvQW5QL3pBUWNBRUFOaS84WUFFd0N3QUVWWXNBZ3ZHN0VJR3o1WnNBM2NNREVBQUFJQUl3QUFCSlFGc0FBU0FCc0FkTElWSEIwUkVqbXdGUkN3Q2RBQXNBQkZXTEFQTHh1eER4OCtXYkFBUlZpd0NTOGJzUWtQUGxteUVna1BFUkk1c0JJdnNnQUhDaXRZSWRnYjlGbXlBdzhKRVJJNXNBTXZzQUFRc0F2UXNBelFzQklRc0EzUXNBa1FzaFVCQ2l0WUlkZ2I5Rm13QXhDeUd3RUtLMWdoMkJ2MFdUQXhBU01IRnhZV0J3WUVJeUVUSXpjek56TUhNd0VEQlRZMk56WW1Kd0t4MlNMKzQvMFJFUDdIOVAzZHZyc2V1eUgzSXRyK3hGWUJFb0d1RHc1d2F3Ukh4QUVCNzhUUS9nUkhxcisvL2NmK0VnSUNrSGRwZVFRQUFnQWgvL3dENlFaaUFCSUFHd0Iwc2hVY0hSRVNPYkFWRUxBRDBBQ3dBRVZZc0Ewdkc3RU5IejVac0FCRldMQVJMeHV4RVI4K1diQUFSVml3Q1M4YnNRa1BQbG13RVJDeUFBY0tLMWdoMkJ2MFdiSUNEUWtSRWptd0FpK3dBQkN3QzlDd0ROQ3dBaEN5RXdFS0sxZ2gyQnYwV2JBSkVMSVVBUW9yV0NIWUcvUlpNREVCSVFNWEZoWUhCZ1FuSVJNak56TTNNd2NoQVFNWE5qWTNOaVluQXdiKzUxbkh1ZFVNRGY3MHd2NGYzNmtlcUNEdEh3RVovazlEMldCOEN3cEdUd1VGL2Y0QkFjeXB0dG9FQlFXcnNyTDhrUDZDQWdKd1ZreG1CUUFBQWdBbkFBQUZCUVd3QUE0QUd3Qk5zZ1FjSFJFU09iQUVFTEFYMEFDd0FFVllzQU12RzdFREh6NVpzQUJGV0xBQkx4dXhBUTgrV2JJV0F3RVJFam13RmkreUFBRUtLMWdoMkJ2MFdiQURFTElVQVFvcldDSFlHL1JaTURFQkF5TVRCVElFQndZSEZ3Y25CaU1CTmpjMkppY2xBeUUyTnljM0FYeGU5LzBCOStZQkJCTVRsRjl4WjRLckFSc3NDeEp4YmY3TVdBRVpSMDVZY2dJZC9lTUZzQUg3ek1PQmpWcVdOZ0ZEUkVOdWlnUUIvZ1FDRjRoWkFBTC94LzVnQkE4RVVnQVZBQ1lBYnJJRkp5Z1JFam13QlJDd0g5QUFzQUJGV0xBT0x4dXhEaHMrV2JBQVJWaXdDeThic1FzYlBsbXdBRVZZc0Fndkc3RUlFVDVac0FCRldMQUZMeHV4QlE4K1diSUhEZ1VSRWpteURBNEZFUkk1c0E0UXNoa0JDaXRZSWRnYjlGbXdCUkN5SGdFS0sxZ2gyQnYwV1RBeEpSY0hKd1luSmljREl3RTNCellYRmhZWEZnY0hCZ01tSmljbUJ3TVdGekkzSnpjWE5qYzJBMVJSY1U1alpxVmlZZTRCQk5rU2ZLeWNzUVlDQndVandRSmNWWVZpVlM2RU8wbFJjMFE0RWdxQ2dGbDROZ0lDYy8zK0Jkb0JjSWNFQk56RVFEMGs3d0dEYTM0Q0JILytIWGdDSW9OWmFHRnhTUUFBQVFBaUFBQUUzd2NRQUFrQU1ySURDZ3NSRWprQXNBQkZXTEFHTHh1eEJoOCtXYkFBUlZpd0JDOGJzUVFQUGxtd0JoQ3lBZ0VLSzFnaDJCdjBXVEF4QVNNSElRTWpFeUVUTXdTT0J3SDliTm4zL1FLZFBlWUU3UW43SEFXd0FXQUFBUUFSQUFBRHpBVnpBQWNBS3dDd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBQ0x4dXhBZzgrV2JBRUVMSUFBUW9yV0NIWUcvUlpNREVCSVFNakV5RVRNd04wL2lXYTdyd0IzRGZzQTNiOGlnUTZBVGtBQWYvOEFBQUVyQVd3QUEwQVNRQ3dBRVZZc0Fndkc3RUlIejVac0FCRldMQUNMeHV4QWc4K1diSU5DQUlSRWptd0RTK3lBQWNLSzFnaDJCdjBXYkFFMExBTkVMQUcwTEFJRUxJS0FRb3JXQ0hZRy9SWk1ERUJJd01qRXlNM014TWhCeUVETXdLSDczVDJkS1llcFdzRGdpVDlkVWZ2QXAvOVlRS2ZxZ0puelA1bEFBSC95d0FBQTRrRU9nQU5BRWtBc0FCRldMQUlMeHV4Q0JzK1diQUFSVml3QWk4YnNRSVBQbG15RFFnQ0VSSTVzQTB2c2dBSENpdFlJZGdiOUZtd0JOQ3dEUkN3QnRDd0NCQ3lDZ0VLSzFnaDJCdjBXVEF4QVNFREl4TWpOek1USVFjaEJ5RUNWdjhBVWUxUm5oNmRUZ0sxSS80NUxBRUJBZEgrTHdIUnFnRy94UHNBQUFFQUx2N0VCS3dGc0FBWEFGdXlBeGdaRVJJNUFMQUtMN0FBUlZpd0ZpOGJzUllmUGxtd0FFVllzQlF2RzdFVUR6NVpzQllRc2dBQkNpdFlJZGdiOUZteUF4WVVFUkk1c0FNdnNBb1FzZ3NIQ2l0WUlkZ2I5Rm13QXhDeUVnRUtLMWdoMkJ2MFdUQXhBU0VETXhZV0VnY0NBQWMzTmhNMkp5WW1KeU1ESXhNaEJJajlkVW1ZcWU1ckVSdit6dndTNzBjZ0RRMkdkN1J0OXZ3RGdnVGsvbDRFai83OXFmNzcvc3dHdXdZQkY0QnhibmtFL1lnRnNBQUJBQkgrM3dPQ0JEb0FGUUJLc2c4V0Z4RVNPUUN3Q2krd0FFVllzQlF2RzdFVUd6NVpzQUJGV0xBU0x4dXhFZzgrV2JBVUVMSUFBUW9yV0NIWUcvUlpzZ01VRWhFU09iQURMN0lRQVFvcldDSFlHL1JaTURFQklRY1hIZ0lIQmdJSEp6WTNOaVluSndNakV5RURYLzQ2S0VDUDJXa05EL08wUXVzZURuVjFYRS91dkFLMUEzYmxBUU41MW9pai92d3dzMUhVZVpFRUFmNDZCRG9BLy8vL3BmNmFCK0FGc0FJbUFka0FBQUFIQS8wR2d3QUEvLy8vcmY2YUJuSUVPZ0ltQWZrQUFBQUhBLzBGUEFBQS8vOEFIdjQ2QktnRnhRSW1BZG9BQUFBSEEvMEJkZitnLy84QUZ2NDdBN3dFVUFJbUFmb0FBQUFIQS8wQkgvK2gvLzhBTHY2YUJYc0ZzQUltQThFQUFBQUhBLzBFRHdBQS8vOEFJdjZhQklFRU9nSW1BZjBBQUFBSEEvMERXUUFBQUFFQUl3QUFCWU1Gc0FBVUFHRUFzQUJGV0xBQUx4dXhBQjgrV2JBQVJWaXdEQzhic1F3ZlBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQUtMeHV4Q2c4K1diSVBDZ3dSRWptd0R5K3ludzhCWGJJSUFRb3JXQ0hZRy9SWnNnRUlEeEVTT2JBRjBMQVBFTEFTMERBeENRSWhBeWNISXpjakF5TVRNd016TnpNRE13RUZnLzRJQVJYKzFyWkJMcDhwVld6My9mZHJWQzJnTXpJQmZ3V3cvVTc5QWdKdEFlcnAvWk1Gc1AyYS92OEFBbWdBQUFFQUlRQUFCTTBFT2dBVUFGd0FzQUJGV0xBTkx4dXhEUnMrV2JBQVJWaXdGQzhic1JRYlBsbXdBRVZZc0Fvdkc3RUtEejVac0FCRldMQURMeHV4QXc4K1diSU9DZzBSRWptd0RpK3lDUUVLSzFnaDJCdjBXYklCQ1E0UkVqbXdCZEN3RGhDd0V0QXdNUUVCRXlFREp3Y2pOeU1ESXhNekF6TTNNd2N6QVFUTi9tcmwvdUNHTHlTWUlGTkw3THpzUzFJa21Da2lBUllFT3YzeC9kVUJyQUd6c3Y1VUJEcitVTWZKQWJJQUFBRUFOd0FBQlk4RnNBQVVBRzRBc0FCRldMQUVMeHV4QkI4K1diQUFSVml3RWk4YnNSSWZQbG13QUVWWXNBc3ZHN0VMRHo1WnNBQkZXTEFJTHh1eENBOCtXYklURWdzUkVqbXdFeSt3RU5DeURRY0tLMWdoMkJ2MFdiQUIwTElDQ3hJUkVqbXdBaSt5Q2dFS0sxZ2gyQnYwV2JJR0NnSVJFamt3TVFFakJ6TUJJUUVCSVFFakF5TVRJemN6TnpNSE13TEN6aXA5QWdvQlB2MllBWWIrNlA2OXJtejJ2TWNleGlQMkk4OEVQL01DWlAwNy9SVUNjUDJRQkQrcXg4Y0FBQUVBR1FBQUJGa0dBQUFVQUdvQXNCSXZzQUJGV0xBRUx4dXhCQnMrV2JBQVJWaXdDeThic1FzUFBsbXdBRVZZc0Fndkc3RUlEejVac2hNU0N4RVNPYkFUTDdJQkJ3b3JXQ0hZRy9SWnNnSUxCQkVTT2JBQ0w3SUtBUW9yV0NIWUcvUlpzZ1lLQWhFU09iQUJFTEFOMExBVEVMQVEwREF4QVNNRE13RWhBUUVoQXlNREl4TWpOek0zTXdjekFxUytYbDBCVHdFbC9ra0JHUDc5M25KUzdkTGhIdUViN0J1K0JMdjk0UUdlL2dYOXdRSFovaWNFdTZxYm13QUFBUUNrQUFBRzR3V3dBQTRBWVFDd0FFVllzQVl2RzdFR0h6NVpzQUJGV0xBS0x4dXhDaDgrV2JBQVJWaXdBaThic1FJUFBsbXdBRVZZc0Ewdkc3RU5EejVac2dnR0FoRVNPYkFJTDdJQkFRb3JXQ0hZRy9SWnNBWVFzZ1FCQ2l0WUlkZ2I5Rm15REFFSUVSSTVNREVCSXdNakV5RTNJUU16QVNFQkFTRURwcTlzOXRyK05TTUN3R3A5QWdzQlB2MlhBWWIrNkFKdy9aQUU3TVQ5bkFKay9UdjlGUUFCQUd3QUFBVzdCRG9BRGdCckFMQUFSVml3Qmk4YnNRWWJQbG13QUVWWXNBb3ZHN0VLR3o1WnNBQkZXTEFDTHh1eEFnOCtXYkFBUlZpd0RTOGJzUTBQUGxteUNRb0NFUkk1c0FrdnNpOEpBWEd5akFrQlhiSUFBUW9yV0NIWUcvUlpzQVlRc2dRQkNpdFlJZGdiOUZteURBQUpFUkk1TURFQkl3TWpFeUUzSVFNekFTRUJBU0VERVg1SzdacitkaUlDZDB4ZkFXMEJOdjRlQVRUKzNnR3MvbFFEZHNUK1VBR3cvZTM5MmYvL0FDZittZ1dIQmJBQ0pnQXNBQUFBQndQOUJHa0FBUC8vQUJuK21nUnBCRG9DSmdJQUFBQUFCd1A5QTJzQUFBQUJBQ2NBQUFmZkJiQUFEUUJkQUxBQVJWaXdBaThic1FJZlBsbXdBRVZZc0F3dkc3RU1IejVac0FCRldMQUdMeHV4Qmc4K1diQUFSVml3Q2k4YnNRb1BQbG15QVFJR0VSSTVzQUV2c0FJUXNnUUJDaXRZSWRnYjlGbXdBUkN5Q0FFS0sxZ2gyQnYwV1RBeEFTRVRJUWNoQXlNVElRTWpFek1Cc1FKMmFRTlBJdjJvMi9ady9ZcHc5LzMzQTFJQ1hzUDdFd0tIL1hrRnNBQUFBUUFSQUFBRmtnUTZBQTBBWmdDd0FFVllzQUl2RzdFQ0d6NVpzQUJGV0xBTUx4dXhEQnMrV2JBQVJWaXdCaThic1FZUFBsbXdBRVZZc0Fvdkc3RUtEejVac2dFTUJoRVNPWHl3QVM4WXRFQUJVQUVDWGJBQ0VMSUVBUW9yV0NIWUcvUlpzQUVRc2dnQkNpdFlJZGdiOUZrd01RRWhFeUVISVFNakV5RURJeE16QVd3QmwwNENRU1ArcnBydFRQNXBUTzY4N2dKM0FjUEUvSW9CdGY1TEJEb0FBUUF1L3NJSGhnV3dBQmtBYUxJVUdoc1JFamtBc0FndnNBQkZXTEFZTHh1eEdCOCtXYkFBUlZpd0VpOGJzUklQUGxtd0FFVllzQll2RzdFV0R6NVpzZ0VZRWhFU09iQUJMN0FJRUxJSkJ3b3JXQ0hZRy9SWnNBRVFzaEFCQ2l0WUlkZ2I5Rm13R0JDeUZBRUtLMWdoMkJ2MFdUQXhBVE1XRmhJSEFnQUhOellUTmljbUppY2pBeU1USVFNakV5RUZGbTZwN21zUkcvN08vQkx2UnlBTkRZWjNpbTMyMmYyVTJmYjhCRmtEUUFTUC92MnAvdnYrekFhN0JnRVhnSEZ1ZVFUOWlnVGsreHdGc0FBQUFRQVIvdU1HVWdRNkFCY0FWN0lRR0JrUkVqa0FzQWN2c0FCRldMQVdMeHV4RmhzK1diQUFSVml3RUM4YnNSQVBQbG13QUVWWXNCUXZHN0VVRHo1WnNnRVdFQkVTT2JBQkw3SU9BUW9yV0NIWUcvUlpzQllRc2hJQkNpdFlJZGdiOUZrd01RRVhGZ0FIQmdJSEp6WTJOelltSnljREl4TWhBeU1USVFQMlllNEJEUk1QOUxOQ2VZUU1EMzkvalZEdG1mNXBtdTY4QTNNQ2xBRUMvdnpVcHY4QU1MSXFtR040a3dRQi9qWURkdnlLQkRvQUFnQmwvK2dGMlFYSEFDc0FPZ0NNc2hrN1BCRVNPYkFaRUxBNjBBQ3dBRVZZc0NBdkc3RWdIejVac0FCRldMQU9MeHV4RGg4K1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBUXZHN0VFRHo1WnNnSUVJQkVTT2JBQ0w3QU9FTElQQVFvcldDSFlHL1Jac0FRUXNoY0JDaXRZSWRnYjlGbXdBQkN5S3dFS0sxZ2gyQnYwV2JBQ0VMQXYwTEFnRUxJMkFRb3JXQ0hZRy9SWk1ERUZKaWNHSnk0Q0p5WTNOeElBTndjR0JnSUdGeFlXRnpJM0poTTNOaEkyRnhZV0Z4Y1dCd2NDQnhZWEFSWVdGellUTnpZMU5DY21Bd2NHQlVyU3BLdWlrT21RRUFrTUdpNEJPT0FZYjVvL0NRWU1tWDh4TXFVbElCaVN4bmFSdFJNRUFRY2lNZHRQYWY0QUEwVStyU3dpQ24rck5pUUpGd2RCU1FRQ2YrcVdWMWFyQVNzQlVnWFVBczcraUhnOGpxY0RDUEFCRnRHa0FRaDlBd1RSdFRkQ1Bkcisyc0lPQWdHa1dwbzVqUUVBNGxNeXpnY0kvc2J2UFFBQUFnQkwvK29Fa2dSU0FDY0FNZ0NNc2hzek5CRVNPYkFiRUxBcDBBQ3dBRVZZc0Iwdkc3RWRHejVac0FCRldMQU1MeHV4REJzK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBUXZHN0VFRHo1WnNnSUVIUkVTT2JBQ0w3QU1FTElOQVFvcldDSFlHL1Jac0FRUXNoUUJDaXRZSWRnYjlGbXdBQkN5SndNS0sxZ2gyQnYwV2JBQ0VMQXEwTEFkRUxJd0FRb3JXQ0hZRy9SWk1ERUZKaWNHSnlZbUFqYzNOaEkzQndZSEJ4VVdGaGN6TnlZM056NENGeFlXRnhZSEJ3WUhGaGNCQmhjMlB3STBKeVlIQkUyemg0bUJqdEJnRVFjYTg3MFdseVlPQldkYkZ4WmZGaE1TYlpwYWU1SUdBZ1VSSVo0NVlmNXBFVjlyRnc4R1MyOGRGQVEwT2dJQ21nRUltRHZjQVFzR3loUCtlRTF2aFFNQ3FjYU9lc1JjQXdUQm5qUXZmdFdXQ3dJQmpxZHdaYVNCVjVrREJ2WUEvLzhBWmY0K0JRMEZ4d0ltQUNjQUFBQUhBLzBCdVAray8vOEFPUDQrQSs0RVVnSW1BRWNBQUFBSEEvMEJPditrLy84QW5QNmFCU0lGc0FJbUFEZ0FBQUFIQS8wQ093QUEvLzhBVS82YUJBZ0VPZ0ltQWdVQUFBQUhBLzBCMkFBQS8vOEFvUUFBQlUwRnNBSUdBRDBBQVAvL0FIZitYd1F3QkRvQ0JnR2pBQUFBQVFDaEFBQUZUUVd3QUE0QVZySUtEeEFSRWprQXNBQkZXTEFJTHh1eENCOCtXYkFBUlZpd0N5OGJzUXNmUGxtd0FFVllzQUl2RzdFQ0R6NVpzZ1lDQ0JFU09iQUdMN0lGQndvcldDSFlHL1Jac0FIUXNnb0lBaEVTT2JBR0VMQU8wREF4QVNNREl4TWpOek1CSVJNQklRRXpBNW5QV3ZoYXhCNTkvdmdCQmMwQnZBRWUvZTU4QWdUOS9BSUVxZ01DL1ZBQ3NQeitBQUFCQUZUK1h3UXdCRG9BRGdCanNnb1BFQkVTT1FDd0FFVllzQWd2RzdFSUd6NVpzQUJGV0xBTEx4dXhDeHMrV2JBQVJWaXdBaThic1FJUlBsbXdBRVZZc0FBdkc3RUFEejVac0FCRldMQUVMeHV4QkE4K1diSUdCd29yV0NIWUcvUlpzZ29MQUJFU09iQU4wTEFPMERBeEJTTURJeE1qTnpNRE14TUJNd0V6QXQvVlNlMUl5QjZpbmV4bUFXbisvaWlsQWY1Z0FhQ3FBNUg5QkFMOC9HLy8vLy9EL3BvRlJ3V3dBaVlBUEFBQUFBY0QvUVBBQUFELy8vKzUvcG9FRXdRNkFpWUFYQUFBQUFjRC9RTE5BQUFBQVFDZC9xRUdiZ1d3QUE4QVR3Q3dEUyt3QUVWWXNBZ3ZHN0VJSHo1WnNBQkZXTEFDTHh1eEFoOCtXYkFBUlZpd0RpOGJzUTRQUGxtd0FoQ3lBQUVLSzFnaDJCdjBXYkFGMExBT0VMSUdBUW9yV0NIWUcvUlpzQXJRTURFQklUY2hCeUVESVJNekF6TURJeE1oQWZQK3FpTURveVArcXJnQ2JkbjIyYXR6NHo3NzhBVHN4TVQ3M2dUbSt4ejkxUUZmQUFBQkFGYit2d1RZQkRvQUR3QkxBTEFOTDdBQVJWaXdBeThic1FNYlBsbXdBRVZZc0E4dkc3RVBEejVac0FNUXNnUUJDaXRZSWRnYjlGbXdBTkN3RHhDeUJnRUtLMWdoMkJ2MFdiQURFTEFJMExBR0VMQUswREF4QVNNM0lRY2pBeUVUTXdNekF5TVRJUUZFN2lJQ3NDUFVlQUdYbSsyYWoyM1lPUHpxQTNmRHcvMUxBM2o4aVAzOUFVRUEvLzhBeGY2YUJXb0ZzQUltQWVvQUFBQUhBLzBFUFFBQS8vOEFjUDZhQkRvRU93SW1BZ29BQUFBSEEvMERQQUFBQUFFQXVRQUFCVndGc0FBWUFFK3lCUmthRVJJNUFMQUFSVml3QUM4YnNRQWZQbG13QUVWWXNBc3ZHN0VMSHo1WnNBQkZXTEFPTHh1eERnOCtXYklGRGdBUkVqbXdCUyt3Q05Dd0JSQ3lGQUVLSzFnaDJCdjBXYkFSMERBeEFRTUdGeFlYRXpNRE5qY1RNd01qRXdZSEJ5TTNKaVkzRXdJU1N3Y0ZES2s3bnpoZWNIdjMvZmRyVVg4dW9DL1kweGRMQmJEK05Ub3VqUkVCSy83YkN4Z0NxUHBRQWowV0RPem5EUGJQQWNrQUFBRUFoUUFBQkRRRU93QVZBRSt5QkJZWEVSSTVBTEFBUlZpd0NpOGJzUW9iUGxtd0FFVllzQlF2RzdFVUd6NVpzQUJGV0xBQUx4dXhBQTgrV2JJUEZBQVJFam13RHkreUJnRUtLMWdoMkJ2MFdiQUQwTEFQRUxBUzBEQXhJU01UQndjak55WW1OeE16QXdjR0Z4TXpBemNUTXdONTdrVjFIYUFmblpzU051dzRCQU5aTmFBMWRHRHRBV29UaTQwWDI2UUJUUDZ5UUdzaUFRdis3aFFDRFFBQkFPY0FBQVdNQmJBQUVBQkdzZ0lSRWhFU09RQ3dBRVZZc0FFdkc3RUJIejVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3Q1M4YnNRa1BQbG15QlFrQkVSSTVzQVV2c2c0QkNpdFlJZGdiOUZrd01UTVRNd00yRnhZV0J3TWpFelltSkFjRDUvMzJhNXF0NXZBWlRQWk1FR0QrK3M1OEJiRDl3aXdFQXZQYy9qY0J5bitEQmlyOVdQLy9BQTBBQUFQNUJnQUNCZ0JNQUFBQUFnQmkvK29Gd1FYSUFDRUFMQUJrc2h3dExoRVNPYkFjRUxBcjBBQ3dBRVZZc0JBdkc3RVFIejVac0FCRldMQUFMeHV4QUE4K1diSWpBQkFSRWptd0l5K3lGZ0VLSzFnaDJCdjBXYkFGMExBakVMQU0wTEFBRUxJZEFRb3JXQ0hZRy9SWnNCQVFzaWtCQ2l0WUlkZ2I5Rmt3TVFVbUpBSTNOeVltTnhjSEZCYzJFaVFYRmhJWEZnY0hKUWNHRnhZV0Z4WTNGd1lCSlRjMkp5WW1KeVlHQndOb3NQNzNkQjROZzRFSnNBSmVKYndCQzUvUTZRVUJDeGI4dWd3UENnNmJnSjNESFhUOThRSmJCd3NEQlhab2g4UTNGZ0drQVNHdlNCelRwUUZFZENpMEFTR1pCQVQrNnVwU1VZa0JPRk5LZFlnREEwaklVd05sQlNGQ1FuQ0JBd1hHendBQy8vVC82Z1NEQkZNQUhBQW1BSkd5RFNjb0VSSTVzQTBRc0I3UUFMQUFSVml3RGk4YnNRNGJQbG13QUVWWXNBQXZHN0VBRHo1WnNpRU9BQkVTT2JBaEw3Uy9JYzhoQWwyMFh5RnZJUUp4c3I4aEFYRzBIeUV2SVFKeHNvOGhBVjIwN3lIL0lRSnhzaElIQ2l0WUlkZ2I5Rm13Qk5Dd0lSQ3dDOUN3QUJDeUZ3RUtLMWdoMkJ2MFdiSVpEZ0FSRWptd0RoQ3lIUUVLSzFnaDJCdjBXVEF4QlM0Q055WW1OeGNIQmhjMkpCY1dFZ2NISVFZV0ZoY1dOeGNHQmdNbUJnY0ZOelluSmlZQ2JZdlFZUlJwYUFla0JBTkNTUUVhczhySkhnLzlWd2N0YUVtYWdIaEQ0ZzllalRVQndRVUhCUXBZRkFPSTdZa2d1NVFCT0Y4dDAra0ZCZjdaNm1oUmdVMENCWWw5WVdzRG9nTjlrQUlXTGl4SFV2Ly9BR0wrUXdYQkJjZ0NKZ0orQUFBQUJ3UDlBc2YvcWYvLy8vVCtSZ1NEQkZNQ0pnSi9BQUFBQndQOUFkZi9yUC8vQURVQUFBSW9CYkFDQmdBdEFBRC8vLytsQUFBSDRBY2tBaVlCMlFBQUFRY0JhZ0pRQVQwQUNRQ3dDUyt3R2R3d01RRC8vLyt0QUFBR2NnWGFBaVlCK1FBQUFRY0JhZ0dGLy9NQUNRQ3dDUyt3R2R3d01RQUFBUUFqL3IwRld3V3dBQmtBWHJJWUdoc1JFamtBc0JBdnNBQkZXTEFFTHh1eEJCOCtXYkFBUlZpd0NDOGJzUWdmUGxtd0FFVllzQUl2RzdFQ0R6NVpzZ2NFQWhFU09iQUhMN0lZQVFvcldDSFlHL1Jac2dvSEdCRVNPYkFRRUxJUkFRb3JXQ0hZRy9SWk1ERUJJd01qRXpNRE13RWhBUllTQndJQUJ6YzJOaEluSmlZbkp3R1ZDSFAzL2ZkcVpBSU9BVHo5dDhqSUdCdit4L3dUY1p4SURRMkVjdjBDY3YyT0JiRDlwQUpjL1lZZi9zemovdmYreWdUREJJa0JBWGR0ZVFRQ0FBRUFJZjduQklBRU9nQVdBRjZ5QmhjWUVSSTVBTEFHTDdBQVJWaXdFUzhic1JFYlBsbXdBRVZZc0JVdkc3RVZHejVac0FCRldMQVBMeHV4RHc4K1diSVREeEVSRWptd0V5K3lEZ0VLSzFnaDJCdjBXYklBRGhNUkVqbXdCaEN5QndjS0sxZ2gyQnYwV1RBeEFSWVdCd1lHQnljMk5qYzJKaWNuQXlNVE13TXpBU0VDdDQrV0RnL3lza0oxaGd3T2NtNjJTK3k4N0V0SUFZTUJOd0pjS3VhZG8vY3VzaVdSWW0ySEJnSCtWQVE2L2xBQnNBRC8vLy9LL240RmZBV3dBaVlCM2dBQUFBY0FFQVJULzhiLy8vKy8vbjRFZUFRNkFpWUIvZ0FBQUFjQUVBTmsvOFlBQVFBdS9rWUZnZ1d3QUJRQWRMSUtGUllSRWprQXNBQkZXTEFBTHh1eEFCOCtXYkFBUlZpd0F5OGJzUU1mUGxtd0FFVllzQkl2RzdFU0R6NVpzQUJGV0xBSUx4dXhDQkUrV2JJQ0FCSVJFamw4c0FJdkdMUmdBbkFDQWwyME1BSkFBZ0pkc0FnUXNnMEJDaXRZSWRnYjlGbXdBaEN5RUFFS0sxZ2gyQnYwV1RBeEFRTWhFek1CQmdZbklpYzNGak15TnhNaEF5TVRBaUJ1QW1wdjkvNytHTmFtTjA0ak5pbUFJVy85bG12Mi9BV3cvWU1DZmZvWHVNa0NFOGNPeEFLUi9aY0ZzQUFBQVFBUi9rY0VQd1E2QUJRQWJiSUxGUllSRWprQXNBQkZXTEFBTHh1eEFCcytXYkFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQkl2RzdFU0R6NVpzQUJGV0xBSUx4dXhDQkUrV2JJQ0F4SVJFamw4c0FJdkdMUkFBbEFDQWwyd0NCQ3lEUUVLSzFnaDJCdjBXYkFDRUxJUUFRb3JXQ0hZRy9SWk1ERUJBeUVUTXdNR0JpTWlKemNXTXpJM0V5RURJeE1CdTA4QmwwL3R3eGpOb3p0SUhqMGpnQ0ZTL21sTTdyd0VPdjQ5QWNQN2g3VEdFc0VRd2dIcC9rc0VPdi8vQUNmK2ZnV0hCYkFDSmdBc0FBQUFCd0FRQkYvL3h2Ly9BQm4rZmdSMUJEb0NKZ0lBQUFBQUJ3QVFBMkgveHYvL0FNWCttZ1ZxQmJBQ0pnSHFBQUFBQndQOUFyb0FBUC8vQUhEK21nUWdCRHNDSmdJS0FBQUFCd1A5QWJrQUFQLy9BQ2YrZmdiT0JiQUNKZ0F4QUFBQUJ3QVFCWjcveHYvL0FDTCtmZ1hKQkRvQ0pnSC9BQUFBQndBUUJMWC94di8vQURVQUFBSW9CYkFDQmdBdEFBRC8vLytrQUFBRXJnY2RBaVlBSlFBQUFRY0JhZ0V3QVRZQUNRQ3dCQyt3RHR3d01RRC8vd0FpLytnRDlBWG5BaVlBUlFBQUFRY0JhZ0NJQUFBQUNRQ3dHQyt3TDl3d01RRC8vLytrQUFBRXJnY0RBaVlBSlFBQUFRY0Fhd0VvQVRZQURBQ3dCQyt3SE55d0M5QXdNZi8vQUNMLzZBUURCYzBDSmdCRkFBQUJCd0JyQUlBQUFBQU1BTEFZTDdBOTNMQXMwREF4Ly8vL2h3QUFCM2dGc0FJR0FJa0FBUC8vQUEvLzZBWndCRklDQmdDcEFBRC8vd0FuQUFBRXVnY2tBaVlBS1FBQUFRY0JhZ0Q0QVQwQUNRQ3dCaSt3RDl3d01RRC8vd0E3LytvRUFnWG5BaVlBU1FBQUFRWUJhbkVBQUFrQXNBa3ZzQ1BjTURFQUFBSUFTUC9vQlRjRnd3QWFBQ1FBWHJJVkpTWVJFam13RlJDd0hOQUFzQUJGV0xBQUx4dXhBQjgrV2JBQVJWaXdDaThic1FvUFBsbXlFQUFLRVJJNXNCQXZzQUFRc2hVQkNpdFlJZGdiOUZtd0NoQ3lHd0VLSzFnaDJCdjBXYkFRRUxJZUFRb3JXQ0hZRy9SWk1ERUJGZ1FYRmdjSEJnSUVKeVltQWpjM0JUWW5KaVluSmdjbk5qWVRGalkzSVFjR0Z4WVdBdSs5QVE4OVB4a1FIY3IrMXF5ejhtUWFGZ092RHdvU3FvdWswUjVBd1F5UjJrUDlSUWNPQ2hDUkJjTUNycHFneW03Ry9yeXZCQVNxQVRERmp3RmJVNGVYQXdOSnlTa3IrdndEeTlFaVRrTnNkd0QvL3dBMi8rb0Q5Z1JRQWdZQlpRQUEvLzhBU1Avb0JUY0czQUltQXBvQUFBRUhBR3NBOXdFUEFBd0FzQUF2c0RiY3NDWFFNREgvL3dBMi8rb0Q5Z1hPQWlZQlpRQUFBUVlBYTNJQkFBd0FzQUF2c0MvY3NCN1FNREgvLy8rbEFBQUg0QWNLQWlZQjJRQUFBUWNBYXdKSUFUMEFEQUN3Q1Mrd0o5eXdGdEF3TWYvLy82MEFBQVp5QmNBQ0pnSDVBQUFCQndCckFYMy84d0FNQUxBSkw3QW4zTEFXMERBeC8vOEFIdi90QktnSEdBSW1BZG9BQUFFSEFHc0E0d0ZMQUF3QXNBNHZzRHZjc0NyUU1ESC8vd0FXLytrRDJnWE5BaVlCK2dBQUFRWUFhMWNBQUF3QXNDWXZzRHZjc0NyUU1ERUFBUUF2LytZRW5BV3dBQnNBYXJJWkhCMFJFamtBc0FCRldMQUNMeHV4QWg4K1diQUFSVml3REM4YnNRd1BQbG13QWhDeUFBRUtLMWdoMkJ2MFdiSUVBQUlSRWpteUd3d0NFUkk1c0JzdnNoa0hDaXRZSWRnYjlGbXlCUnNaRVJJNXNoQU1HUkVTT2JBTUVMSVRBUW9yV0NIWUcvUlpNREVCSVRjaEJ3RVdGZ2NPQWljbUpqY3pCaFlYRmpZM05pWW5KemNEVS8ydUpBTjNIZjVGcUxBT0M1YjdrOGpvQ1BRRWJWcHZyUkFSZElHWElBVGt6SzcrVlJudnI0Ykphd1FFN0x0a2VRSUVmMitCaXdRQnR3QUIvL0QrY2dSVUJEb0FHd0Jkc2dzY0hSRVNPUUN3REMrd0FFVllzQUl2RzdFQ0d6NVpzZ0FCQ2l0WUlkZ2I5Rm15QkFBQ0VSSTVzaHNNQWhFU09iQWJMN0laQndvcldDSFlHL1Jac2dVWkd4RVNPYklQQWd3UkVqbXdEQkN5RXdFS0sxZ2gyQnYwV1RBeEFTRTNJUWNCRmhZSERnSW5KaVkzRndZV0Z4WTJOelltSnljM0F3bjl0aU1EY2h6K1JhVzFEd3VXK0pMRzV3anNCR3RmY3JFUUVYYUNtaUFEZHNTbS9rb1o2N0NGeUdzREJPdTZBV1IrQWdTRGNJT0tCQUcyLy84QUp3QUFCWHdHOFFJbUFkc0FBQUVIQUhJQklRRkJBQk1Bc0FCRldMQUlMeHV4Q0I4K1diQUwzREF4QVAvL0FCa0FBQVJJQmFjQ0pnSDdBQUFCQmdCeVp2Y0FFd0N3QUVWWXNBY3ZHN0VIR3o1WnNBdmNNREVBLy84QUp3QUFCWHdIQ2dJbUFkc0FBQUVIQUdzQlR3RTlBQXdBc0FBdnNCdmNzQXJRTURILy93QVpBQUFFU0FYQUFpWUIrd0FBQVFjQWF3Q1UvL01BREFDd0FDK3dHOXl3Q3RBd01mLy9BR3YvNXdVaEJ3TUNKZ0F6QUFBQkJ3QnJBVDhCTmdBTUFMQUtMN0EwM0xBajBEQXgvLzhBT2Yvb0JDY0Z6UUltQUZNQUFBRUdBR3Q5QUFBTUFMQUVMN0F5M0xBaDBEQXgvLzhBWXYvbkJSb0Z5QUlHQWpVQUFQLy9BRGIvNXdRbUJGSUNCZ0kyQUFELy93QmkvK2NGR2djSEFpWUNOUUFBQVFjQWF3Rk5BVG9BREFDd0NpK3dOdHl3SmRBd01mLy9BRGIvNXdRbUJjMENKZ0kyQUFBQkJnQnJld0FBREFDd0JDK3dMOXl3SHRBd01mLy9BRS8vNlFUM0J4a0NKZ0h3QUFBQkJ3QnJBU0VCVEFBTUFMQVVMN0F5M0xBaDBEQXgvLzhBSS8vb0ErVUZ6UUltQWhBQUFBRUdBR3RpQUFBTUFMQUlMN0F4M0xBZzBEQXgvLzhBbS8vbkJWTUc4UUltQWVZQUFBRUhBSElBM3dGQkFBa0FzQUV2c0JIY01ERUEvLy8vdGY1RkJCSUZ0QUltQUYwQUFBRUdBSEllQkFBSkFMQUJMN0FRM0RBeEFQLy9BSnYvNXdWVEJ3b0NKZ0htQUFBQkJ3QnJBUTBCUFFBTUFMQUJMN0FpM0xBUjBEQXgvLy8vdGY1RkJCSUZ6UUltQUYwQUFBRUdBR3RNQUFBTUFMQUJMN0FoM0xBUTBEQXgvLzhBbS8vbkJWTUhQQUltQWVZQUFBRUhBVzhCWEFFOUFBd0FzQUV2c0JQY3NCWFFNREgvLy8rMS9rVUVoQVgvQWlZQVhRQUFBUWNCYndDYkFBQUFGZ0N3QUVWWXNBOHZHN0VQR3o1WnNCYmNzQkxRTURILy93REZBQUFGYWdjS0FpWUI2Z0FBQVFjQWF3RkpBVDBBREFDd0FDK3dJdHl3RWRBd01mLy9BSEFBQUFRZ0JjQUNKZ0lLQUFBQkJnQnJiZk1BREFDd0NDK3dKTnl3RTlBd01mLy9BQzcrbWdTc0JiQUNKZ0dFQUFBQUJ3UDlBUDhBQVAvL0FCaittZ09KQkRvQ0pnSDJBQUFBQndQOUFPVUFBUC8vQUM0QUFBYTlCd3NBSmdIdkN3QUFKd0F0QkpVQUFBRUhBR3NCOXdFK0FCWUFzQUJGV0xBS0x4dXhDaDgrV2JBZTNMQXAwREF4Ly84QUlnQUFCZkVGd0FBbUFnOEFBQUFuQVBRRUpnQUFBUWNBYXdGeS8vTUFGZ0N3QUVWWXNBb3ZHN0VLR3o1WnNCN2NzQ25RTURILy93QXova1lFL0FXd0FDWUJoRkFBQUNZRDFhNHBBQWNEL0FFc0FBRC8vd0FKL2tRRDJ3UTZBQ1lCOWxJQUFDY0QxZitKLzNvQUJ3UDhBUUwvL3YvLy84UCtSZ1ZIQmJBQ0pnQThBQUFBQndQOEE3QUFBUC8vLzduK1JnUVRCRG9DSmdCY0FBQUFCd1A4QXIwQUFBQUIvOE1BQUFWSEJiQUFFUUJqQUxBQVJWaXdDeThic1FzZlBsbXdBRVZZc0E0dkc3RU9IejVac0FCRldMQUNMeHV4QWc4K1diQUFSVml3QlM4YnNRVVBQbG15RVFzQ0VSSTVzQkV2c2dBSENpdFlJZGdiOUZteUJBc0NFUkk1c0FmUXNCRVFzQW5Rc2cwTEFoRVNPVEF4QVNNQklRTUJJUUVqTnpNQklSTUJJUUV6QThlS0FTUCs3dHorZlA3VkFmRjRIblQrN3dFUTFnRjZBU3IrTEhJQ2xmMXJBaFg5NndLVnFnSngvZk1DRGYyUEFBQUIvN2tBQUFRVEJEb0FFUUJqQUxBQVJWaXdDeThic1FzYlBsbXdBRVZZc0E0dkc3RU9HejVac0FCRldMQUNMeHV4QWc4K1diQUFSVml3QlM4YnNRVVBQbG15RVE0Q0VSSTVzQkV2c2dBSENpdFlJZGdiOUZteUJBNENFUkk1c0FmUXNCRVFzQW5Rc2cwT0FoRVNPVEF4QVNNVEl3TUJJUUVqTnpNRE14TVRJUUV6QXltVzAvaVgvdmIrN0FGbmdoNkV4ZmlNL3dFVi9yQ0VBZGYrS1FGeC9vOEIxNm9CdWY2ZUFXTCtSd0FDQURBQUFBVDRCYkFBREFBVkFGQ3lEQllYRVJJNXNBd1FzQS9RQUxBQVJWaXdBUzhic1FFZlBsbXdBRVZZc0FNdkc3RUREejVac2dBQkF4RVNPYkFBTDdBREVMSU5BUW9yV0NIWUcvUlpzQUFRc2c0QkNpdFlJZGdiOUZrd01RRVRNd01sTGdJM1BnSXpFeE1sQmdZSEJoWVhBNlJkOS8zOStZdlNad3NMbWYrWnNGcis3b0N0RHhGdmFRT2JBaFg2VUFFRWM4eUVqTlZ6L1M0Q0JnSUNqM2R2akFULy93QTcvK2NFaUFZQUFnWUFTQUFBQUFJQVJRQUFCb0FGc0FBWUFDRUFXcklaSWlNUkVqbXdHUkN3Q2RBQXNBQkZXTEFLTHh1eENoOCtXYkFBUlZpd0dDOGJzUmdQUGxteUNBb1lFUkk1c0FndnNCZ1FzZ3dCQ2l0WUlkZ2I5Rm15RWdvWUVSSTVzQm5Rc0FnUXNob0JDaXRZSWRnYjlGa3dNU1V1QWpjK0FqTUZFek1ERnpZMk5UUW5GeFlYRWdBakpSTWxCZ1lIQmhZWEFnaUwwbVlMQzVyOW1RRXVYZmJaTzMrYUZlWVNCaEQrMy9uKzExcis3SDJ1RVE5dWFRRUVkTXVFak5aeUFRSVYreG9DQXViZlhWZ0JXVnYrMXY2YnlnSUdBZ0tOZUhDTUJBQUFBZ0JILytZR1VRWVlBQ01BTWdDQXNnWXpOQkVTT2JBR0VMQWswQUN3QUVWWXNBY3ZHN0VISVQ1WnNBQkZXTEFhTHh1eEdnOCtXYkFBUlZpd0h5OGJzUjhQUGxteUJBY2ZFUkk1c0FRdnNnWUhIeEVTT2JBYUVMSU9BUW9yV0NIWUcvUlpzaE1ISHhFU09iSWRCeDhSRWptd0JCQ3lKZ0VLSzFnaDJCdjBXYkFmRUxJdkFRb3JXQ0hZRy9SWk1ERVROaEkyRnhZWEV6TURCaGNXRmhjV0VoTTJKeGNXRnhZQ0JDY2lKaWNHSnlZbUp5WUJKaWNtQmdjSEJoY1dGaGNXTnpkUEZZckxnWnhaYmUzTkF3TUROeStPcndjQ0V0OE9CQWVML3ZXcGRwOGNocitac2djREF0RTNkM3lkRlFNR0FRSmFVbjVsQmdJSHNBRVZoZ01FZHdKRSswNGVIemRBQXdrQkt3RU5aR1FCWkdQYi9xSzlBMXBadUFRRTA3ZzdBVzVqQkFMUHNSUXpPR1p6QWdSMVJRQUFBUUNxLytnRnVnV3dBQ29BWTdJVkt5d1JFamtBc0FCRldMQU5MeHV4RFI4K1diQUFSVml3Snk4YnNTY1BQbG15QmlzTkVSSTVzQVl2c2dNQkNpdFlJZGdiOUZtd0RSQ3lEQUVLSzFnaDJCdjBXYklVQXdZUkVqbXdKeEN5R3dFS0sxZ2gyQnYwV2JJZ0RTY1JFamt3TVFFMkppY25OeGN5TmpjMkp5VTNCUllXQndZR0J4WVdCd2NHRmhjV0VoTTJKeGNXRnhZQ0JpY21KamNDWkFsVlYrRWtqNVdrRGhubS9wMGtBUy92OVE4SWtabGlYd2tIQlMwdGdwb0hBaEhvRFFRSGlmK25sNTRJQVh0bGV3VUN6UUY0ZEw4SkFjMEJBZGJBYjZzK0lxUitSalpJQWdrQk1BRUJaR1FCWkdQZC9xUzlBZ0t3bXdBQkFHSC80d1ROQkRvQUtRQmdzaVVxS3hFU09RQ3dBRVZZc0I4dkc3RWZHejVac0FCRldMQVFMeHV4RUE4K1diSURBUW9yV0NIWUcvUlpzZ2tRSHhFU09iSVlLaDhSRWptd0dDK3lGd0VLSzFnaDJCdjBXYkFmRUxJZUFRb3JXQ0hZRy9SWnNpWVhHQkVTT1RBeEpSVVdGeFkyTmljbUp4Y1dGeFlDQmljbUpqYzNOaWNuTnhjMk56WW5KVGNYRmhZSEJnWUhGaFlIQXE0RE4wbHlQUVVFRk40UkNSSnc1WldYa1FVSkM0UHdINlhPRkJXci92UWM5cjNNQ0FWamEwOUdCdWtoTXdNRmJOVjVUMDRCVGs2YS90YWdBUU44ZEV4eEJ3SzlBUWFKaEFvQnd3RUZwbzlQZFM4YWVGSUFBUUNTL3JrRDJRV3dBQ2NBWDdJa0tDa1JFamtBc0JzdnNBQkZXTEFLTHh1eENoOCtXYkFBUlZpd0h5OGJzUjhQUGxteUFTZ0tFUkk1c0FFdnNnQUJDaXRZSWRnYjlGbXdDaEN5Q1FFS0sxZ2gyQnYwV2JJUUFBRVJFam13SHhDeUdBVUtLMWdoMkJ2MFdUQXhFemNYTWpZM05pWW5KVGNYRmhZSEJnVVdGaGNXRHdJM0J3WUhKelkzQnlZbkpqYzNOaVlua2lLMWpxY09EbTVyL3RvZitPWHlEeEgrK2tkVUNBUUhGZ1BQR2lqSGcyUXNsU1VFQXdvU0RsMWVBbHpEQVhsemJYRUVBY01CQWQ3QTNuVWVlRlF6TlhjTUJLRDNuRkdIYndFdVJ5eE1mVzJBQkFBQkFJeitxQU81QkRvQUl3QmZzaDhrSlJFU09RQ3dHUyt3QUVWWXNBa3ZHN0VKR3o1WnNBQkZXTEFkTHh1eEhROCtXYklCSkFrUkVqbXdBUyt5QUFFS0sxZ2gyQnYwV2JBSkVMSUlBUW9yV0NIWUcvUlpzaEFBQVJFU09iQWRFTElWQVFvcldDSFlHL1JaTURFVE54YzJOelltSnlVM0JSWVdCd1lHQnhZWEZnY0hOd2NHQnljMk53Y21OemMySmllTUg5TFdGd3BVVlA3YUhnRU52ZFVLQldWbmJnMEVCZ2ErR1NiSWcyc29tU01HRHdsTlRBR2Jzd0VHa0VOUUFnSEJBUVd3a0ZCN01UUjdKaWdoQWFIeG9WR1djUUV0VG9CT1RnTUFBZi9lLytVSFNnV3dBQ01BWXJJakpDVVJFamtBc0FCRldMQU5MeHV4RFI4K1diQUFSVml3SUM4YnNTQVBQbG13QUVWWXNBVXZHN0VGRHo1WnNBMFFzZ0FCQ2l0WUlkZ2I5Rm13QlJDeUNBRUtLMWdoMkJ2MFdiQWdFTElVQVFvcldDSFlHL1Jac2hrTkJSRVNPVEF4QVNFREFnSUhJemMzTmpZM054TWhBd1lYRmhZWEZoSVROaWNYRmhjV0FnUW5KaVkzQkZuK2I1QkQrY0JlRnpOMG15a1Vpd04xdWdNREF6VXVpYW9GQWhMcERnUUhqdjc0cDYydkVnVGovVnYrMVA3ekJjb0RETmJwY2dLbSs3a2RIelJBQXdrQkpRRU1aR1FCWkdQZi9xTzlCQVRQcmdBQi85Ny81d1ltQkRvQUlnQmlzZ0FqSkJFU09RQ3dBRVZZc0Ewdkc3RU5HejVac0FCRldMQUZMeHV4QlE4K1diQUFSVml3SHk4YnNSOFBQbG13RFJDeUFBRUtLMWdoMkJ2MFdiQUZFTElIQVFvcldDSFlHL1Jac0I4UXNoSUJDaXRZSWRnYjlGbXlHQTBGRVJJNU1ERUJJd01HQmljak56YzJOamMzRXlFREJoWVhGalkzTnpZbkZ4WVhGZ0lHSnlZbU53TXcvbUkzenFCTkZTVmJjeDhPWUFMTWVRZzhQbTZHRFFJQkV0OE9CUXA1N1ptc3N4SURkUDQvNnMwRXlRTUltckJPQWM3OUxGRmxBZ1RwM0R4ZVhnRmVYc1ArdHJZREFzeXZBQUFCQUNmLzVnZFFCYkFBSGdCeHNoWWZJQkVTT1FDd0FFVllzQUF2RzdFQUh6NVpzQUJGV0xBYUx4dXhHaDgrV2JBQVJWaXdFaThic1JJUFBsbXdBRVZZc0Jndkc3RVlEejVac0JJUXNnWUJDaXRZSWRnYjlGbXlDd0FZRVJJNXNoMEFHQkVTT1h5d0hTOFl0REFkUUIwQ1hiSVdBUW9yV0NIWUcvUlpNREVCQXdZWEZoWVhGaElUTmljWEZoY1dBZ1FuSmlZM055RURJeE16QXlFVEJYaTNBd01FTXkySnF3VUNFdWtPQkFlTy92bXBwNjhPSi8yWGEvYjk5bThDYVc4RnNQdTNIUjQyUHdFSUFTSUJEbVJrQVdSajRQNmp1d01DenJILy9aY0ZzUDJEQW4wQUFBRUFDLy9tQmlrRU9nQWVBSFN5Q0I4Z0VSSTVBTEFBUlZpd0JDOGJzUVFiUGxtd0FFVllzQWd2RzdFSUd6NVpzQUJGV0xBYkx4dXhHdzgrV2JBQVJWaXdBaThic1FJUFBsbXlCd2dDRVJJNWZMQUhMeGl5VXdjQlhiSkFCd0Zkc2dBQkNpdFlJZGdiOUZtd0d4Q3lEd0VLSzFnaDJCdjBXYklVQ0FJUkVqa3dNUUVoQXlNVE13TWhFek1EQmhjV0ZoY1dFamMwSnhjV0Z4WUNCaWNtSmpjQzUvNWVUZTI4N1U0Qm9rM3RlUU1EQlRzd2Q0MENFZDRPQlFwNDdwbXBzUXdCdXY1R0JEcitRd0c5L1N3ZklEWkJBUVlCRSs5ZVhnRmVYcjcrc3JnREFzcXlBQUVBVFAvb0JKUUZ4d0FoQUVleUZ5SWpFUkk1QUxBQVJWaXdDUzhic1FrZlBsbXdBRVZZc0FBdkc3RUFEejVac0FrUXNnNEJDaXRZSWRnYjlGbXdBQkN5RndFS0sxZ2gyQnYwV2JJY0NRQVJFamt3TVFVbUpnSTNFellTSkJjV0Z3Y21KeVlHQndjR0Z4WVdGeFkySnlZbkZ4Y1dBZ1FDVXFQeWNSWXBITDhCSXF6TWoxQjZtNkxxSGlnS0NRMk5iNU91QVFFTjZ3MEtpLzd5RlFTa0FSeW1BUWF6QVI2YkFRUll0a1VDQXU2Ky9VWktlWk1EQXREaVdGY0JydGIrNzVZQUFRQTkvK2NEcWdSUkFCOEFRN0lBSUNFUkVqa0FzQUJGV0xBVEx4dXhFeHMrV2JBQVJWaXdDaThic1FvUFBsbXlBQUVLSzFnaDJCdjBXYkFLRUxBRTBMQVRFTElZQVFvcldDSFlHL1JaTURFbEZqWTNKek1YRmdZR0p5NENOemMrQWhjV0Z3Y21JeUlHQndZWEZoWUNCVmxpQWdYZkNBWnN6SDZOeTE4T0JSS1o4cEdvYlVGZGdYaXFGd3NHQ1d5dkFtbVdibTJldzJVREJJNzFsQ3FaL1l3QkFrUzdQYitkWHo5b2VnQUFBUUNRLytZRk5BV3dBQm9BVGJJSkd4d1JFamtBc0FCRldMQUNMeHV4QWg4K1diQUFSVml3Rnk4YnNSY1BQbG13QWhDeUFBRUtLMWdoMkJ2MFdiQUUwTEFGMExBWEVMSUtBUW9yV0NIWUcvUlpzaEFDRnhFU09UQXhBU0UzSVFjaEF3Y1dGaGNXRWpjM05pY1hGaGNXQWdRbkppWTNBa1grU3lRRVh5VCtUSllCQXpVdWg2Y0xBUUlTNkE0REI0bisrS3Vvcnc0RTQ4M04vSVU3TkVBREJnRVIveDVrWkFGa1k5bitvY0FEQXM2eEFBRUFjLy9vQkpjRU9nQVpBRTJ5Q2hvYkVSSTVBTEFBUlZpd0FpOGJzUUliUGxtd0FFVllzQll2RzdFV0R6NVpzQUlRc2dBQkNpdFlJZGdiOUZtd0JOQ3dCZEN3RmhDeUN3RUtLMWdoMkJ2MFdiSVFBaFlSRWprd01RRWhOeUVISVFNR0Z4WVdGeFkySnlZbkZ4WUhCZ1FuSmlZM0FhLyt4Q0lEY2lQK3VGZ0RBd1U3TVhlSUNnVVUzU2tPR2Y3M3dxbXlEZ04zdzhQOTd4OGdOMEFCQk95d1Mwb0J0SGZOK3dJQ3pLOEFBQUVBVnYvb0JTSUZ5QUFyQUhTeUd5d3RFUkk1QUxBQVJWaXdIQzhic1J3ZlBsbXdBRVZZc0E0dkc3RU9EejVac2lrY0RoRVNPYkFwTDdJZktRRnhza29wQVYyeUFBRUtLMWdoMkJ2MFdiQU9FTElHQVFvcldDSFlHL1Jac2dvY0RoRVNPYklVQUNrUkVqbXlIeHdPRVJJNXNCd1FzaU1CQ2l0WUlkZ2I5Rmt3TVFFaUJnY0dGaGNXTmpjM0JnWUVKeTRDTnpZbEppY21OelkySkJjV0JBY25OaVluSmdZSEJoWVhGd2NDdzZDN0R3MmJoNEsvRWZVTG9mNzFtNXo2ZHdvUkFUQlFNVDRHQ0o4QkVLYlZBUWdFOUFTR2JvM0JEdzZEaEwwa0FvTjhkMk4zQXdKK1pRR0Z3bVlEQW02N2V2dG5MRU5WWm9qQVpBTUY0YlVCWFc4Q0EzbG5aV3NCQWNqLy93QW8vK29FQWdSUkFnWUJwUUFBLy8vL3l2NUdCWXdGc0FJbUFkNEFBQUFIQS93RVRRQUEvLy8vdi81R0JKMEVPZ0ltQWY0QUFBQUhBL3dEWGdBQS8vLy9wUDVzQks0RnNBSW1BQ1VBQUFBSEFYQUJid0FELy84QUl2NXdBOXdFVUFJbUFFVUFBQUFIQVhBQXFRQUgvLzhBSi82YkJMd0ZzQUltQUNZQUFBQUhBWFlFbHdBSy8vOEFFUDZJQkE4R0FBSW1BRVlBQUFBSEFYWUVwZi8zLy84QUovNmJCT0FGc0FJbUFDZ0FBQUFIQVhZRWN3QUsvLzhBTy82UkJJZ0dBQUltQUVnQUFBQUhBWFlFa0FBQS8vOEFKLzM1Qk9BRnNBSW1BQ2dBQUFBSEE2c0JBZjZTLy84QU8vMzVCSWdHQUFJbUFFZ0FBQUFIQTZzQkh2NlMvLzhBSi82YkJZY0ZzQUltQUN3QUFBQUhBWFlGQUFBSy8vOEFEZjZiQS9rR0FBSW1BRXdBQUFBSEFYWUVmd0FLLy84QUp3QUFCWEVITmdJbUFDOEFBQUVIQUhjQnBRRTJBQWtBc0FRdnNBL2NNREVBLy84QUVRQUFCSFVIUFFJbUFFOEFBQUVIQUhjQm93RTlBQWtBc0FRdnNBL2NNREVBLy84QUovN2NCWEVGc0FJbUFDOEFBQUFIQVhZRTBRQkwvLzhBRWY3SEJFb0dBQUltQUU4QUFBQUhBWFlFWUFBMi8vOEFKLzZiQThNRnNBSW1BREFBQUFBSEFYWUVsd0FLLy8vLzVQNmJBaGNHQUFJbUFGQUFBQUFIQVhZRFJBQUsvLzhBSndBQUJzNEhOZ0ltQURFQUFBRUhBSGNDdmdFMkFCTUFzQUJGV0xBQ0x4dXhBaDgrV2JBUjNEQXhBUC8vQUJBQUFBWm9CZ0FDSmdCUkFBQUJCd0IzQXBnQUFBQUpBTEFETDdBazNEQXhBUC8vQUNmK213Yk9CYkFDSmdBeEFBQUFCd0YyQmFzQUN2Ly9BQkQrbXdab0JGSUNKZ0JSQUFBQUJ3RjJCYTRBQ3YvL0FDZitsd1dHQmJBQ0pnQXlBQUFBQndGMkJRSUFCdi8vQUEzK213UDZCRklDSmdCU0FBQUFCd0YyQkd3QUN2Ly9BQ2NBQUFVRUIwSUNKZ0EwQUFBQkJ3QjNBYXNCUWdBSkFMQURMN0FXM0RBeEFQLy8vOGYrWUFSdEJmY0NKZ0JVQUFBQkJ3QjNBWnYvOXdBSkFMQU5MN0FoM0RBeEFQLy9BQ2YrbXdUWUJiQUNKZ0EyQUFBQUJ3RjJCSmdBQ3YvLy85Nyttd0x2QkZNQ0pnQldBQUFBQndGMkF6NEFDdi8vQUNUK2tRUzdCY2NDSmdBM0FBQUFCd0YyQkxBQUFQLy9BQnoraUFQRUJGQUNKZ0JYQUFBQUJ3RjJCR0wvOS8vL0FKeitsQVVpQmJBQ0pnQTRBQUFBQndGMkJKOEFBLy8vQUR2K2tRS3VCVUVDSmdCWUFBQUFCd0YyQS9VQUFQLy9BSnNBQUFXQkJ6Y0NKZ0E2QUFBQkJ3RnVBTjBCUXdBSkFMQUJMN0FSM0RBeEFQLy9BR1FBQUFRTkJld0NKZ0JhQUFBQkJnRnVGdmdBQ1FDd0FTK3dFZHd3TVFELy93Q2IvcHNGZ1FXd0FpWUFPZ0FBQUFjQmRnVFZBQXIvL3dCay9wc0VEUVE2QWlZQVdnQUFBQWNCZGdSQ0FBci8vd0MzQUFBSE9nYzJBaVlBT3dBQUFRY0FSQUlvQVRZQUV3Q3dBRVZZc0Fzdkc3RUxIejVac0E3Y01ERUEvLzhBZHdBQUJmZ0dBQUltQUZzQUFBRUhBRVFCYXdBQUFCTUFzQUJGV0xBTEx4dXhDeHMrV2JBTzNEQXhBUC8vQUxjQUFBYzZCellDSmdBN0FBQUJCd0IzQXNNQk5nQVRBTEFBUlZpd0RDOGJzUXdmUGxtd0Q5d3dNUUQvL3dCM0FBQUYrQVlBQWlZQVd3QUFBUWNBZHdJR0FBQUFFd0N3QUVWWXNBd3ZHN0VNR3o1WnNBL2NNREVBLy84QXR3QUFCem9IQXdJbUFEc0FBQUVIQUdzQjlRRTJBQXdBc0FFdnNCN2NzQTNRTURILy93QjNBQUFGK0FYTkFpWUFXd0FBQVFjQWF3RTRBQUFBREFDd0FTK3dIdHl3RGRBd01mLy9BTGYrbXdjNkJiQUNKZ0E3QUFBQUJ3RjJCY1VBQ3YvL0FIZittd1g0QkRvQ0pnQmJBQUFBQndGMkJTY0FDdi8vLytYK213VG5CYkFDSmdBK0FBQUFCd0YyQko4QUN2Ly8vK2YrbXdQa0JEb0NKZ0JlQUFBQUJ3RjJCRU1BQ3YvLy82VCtsQVN1QmJBQ0pnQWxBQUFBQndGMkJPY0FBLy8vQUNMK21BUGNCRkFDSmdCRkFBQUFCd0YyQkNFQUIvLy8vNlFBQUFTdUI3c0NKZ0FsQUFBQkJ3RjBCUlVCUEFBSkFMQUVMN0FaM0RBeEFQLy9BQ0wvNkFQY0JvVUNKZ0JGQUFBQkJ3RjBCRzBBQmdBSkFMQVlMN0E2M0RBeEFQLy8vNlFBQUFZWUI3RUNKZ0FsQUFBQkJ3UHZBT3NCSVFBV0FMQUFSVml3QlM4YnNRVWZQbG13RHR5d0ZOQXdNZi8vQUNMLzZBVndCbndDSmdCRkFBQUJCZ1B2USt3QUZnQ3dBRVZZc0Jndkc3RVlHejVac0MvY3NEWFFNREgvLy8ra0FBQUVyZ2V1QWlZQUpRQUFBUWNEOEFEeUFTc0FGZ0N3QUVWWXNBUXZHN0VFSHo1WnNBN2NzQlBRTURILy93QWkvK2dEOGdaNUFpWUFSUUFBQVFZRDhFcjJBQllBc0FCRldMQVlMeHV4R0JzK1diQXQzTEEwMERBeC8vLy9wQUFBQllBSDNnSW1BQ1VBQUFFSEEvRUE3QUVUQUJZQXNBQkZXTEFGTHh1eEJSOCtXYkFNM0xBUzBEQXgvLzhBSXYvb0JOZ0dxUUltQUVVQUFBRUdBL0ZFM2dBV0FMQUFSVml3R0M4YnNSZ2JQbG13TGR5d005QXdNZi8vLzZRQUFBU3VCOVVDSmdBbEFBQUJCd1B5QU9zQkJRQVdBTEFBUlZpd0JDOGJzUVFmUGxtd0R0eXdGZEF3TWYvL0FDTC82QVBzQnFBQ0pnQkZBQUFCQmdQeVE5QUFGZ0N3QUVWWXNCZ3ZHN0VZR3o1WnNDM2NzRGJRTURILy8vK2svcFFFcmdjM0FpWUFKUUFBQUNjQlp3RHlBVFlCQndGMkJPY0FBd0FUQUxBQVJWaXdCQzhic1FRZlBsbXdEOXd3TVFELy93QWkvcGdENlFZQkFpWUFSUUFBQUNZQlowb0FBUWNCZGdRaEFBY0FFd0N3QUVWWXNCZ3ZHN0VZR3o1WnNERGNNREVBLy8vL3BBQUFCSzRIcmdJbUFDVUFBQUVIQS9NQkhBRXdBQllBc0FCRldMQUVMeHV4QkI4K1diQU8zTEFhMERBeC8vOEFJdi9vQSs0R2VRSW1BRVVBQUFFR0EvTjArd0FXQUxBQVJWaXdHQzhic1JnYlBsbXdMOXl3TzlBd01mLy8vNlFBQUFTdUI2NENKZ0FsQUFBQkJ3UHVBUndCTUFBTUFMQUVMN0FPM0xBYTBEQXgvLzhBSXYvb0ErNEdlUUltQUVVQUFBRUdBKzUwK3dBTUFMQVlMN0F2M0xBNDBEQXgvLy8vcEFBQUJLNElQZ0ltQUNVQUFBRUhBL1FCSEFFMkFBd0FzQVF2c0E3Y3NCalFNREgvL3dBaS8rZ0Q0Z2NJQWlZQVJRQUFBUVlEOUhRQUFBd0FzQmd2c0MvY3NEblFNREgvLy8ra0FBQUVyZ2dYQWlZQUpRQUFBUWNEOVFFZ0FUd0FEQUN3QkMrd0R0eXdGOUF3TWYvL0FDTC82QVA2QnVFQ0pnQkZBQUFCQmdQMWVBWUFEQUN3R0Mrd0w5eXdPTkF3TWYvLy82VCtsQVN1QngwQ0pnQWxBQUFBSndGcUFUQUJOZ0VIQVhZRTV3QURBQk1Bc0FCRldMQUVMeHV4QkI4K1diQU8zREF4QVAvL0FDTCttQVAwQmVjQ0pnQkZBQUFBSndGcUFJZ0FBQUVIQVhZRUlRQUhBQk1Bc0FCRldMQVlMeHV4R0JzK1diQXYzREF4QVAvL0FDZittd1M2QmJBQ0pnQXBBQUFBQndGMkJLZ0FDdi8vQUR2K2tRUUNCRkVDSmdCSkFBQUFCd0YyQkhZQUFQLy9BQ2NBQUFTNkI4SUNKZ0FwQUFBQkJ3RjBCTjBCUXdBSkFMQUdMN0FhM0RBeEFQLy9BRHYvNmdRQ0JvVUNKZ0JKQUFBQkJ3RjBCRllBQmdBSkFMQUpMN0F1M0RBeEFQLy9BQ2NBQUFTNkJ6SUNKZ0FwQUFBQkJ3RnVBTWdCUGdBSkFMQUdMN0FXM0RBeEFQLy9BRHYvNmdRS0JmVUNKZ0JKQUFBQkJnRnVRUUVBQ1FDd0NTK3dLdHd3TVFELy93QW5BQUFGNEFlNEFpWUFLUUFBQVFjRDd3Q3pBU2dBRmdDd0FFVllzQWN2RzdFSEh6NVpzQS9jc0JYUU1ESC8vd0E3LytvRldRWjhBaVlBU1FBQUFRWUQ3eXpzQUJZQXNBQkZXTEFKTHh1eENScytXYkFqM0xBcDBEQXgvLzhBSndBQUJMb0h0UUltQUNrQUFBRUhBL0FBdWdFeUFCWUFzQUJGV0xBR0x4dXhCaDgrV2JBUDNMQVUwREF4Ly84QU8vL3FCQUlHZVFJbUFFa0FBQUVHQS9BejlnQVdBTEFBUlZpd0NTOGJzUWtiUGxtd0k5eXdLTkF3TWYvL0FDY0FBQVZJQitVQ0pnQXBBQUFCQndQeEFMUUJHZ0FXQUxBQVJWaXdCaThic1FZZlBsbXdEOXl3RTlBd01mLy9BRHYvNmdUQkJxa0NKZ0JKQUFBQkJnUHhMZDRBRmdDd0FFVllzQWt2RzdFSkd6NVpzQ0hjc0NmUU1ESC8vd0FuQUFBRXVnZmNBaVlBS1FBQUFRY0Q4Z0N6QVF3QUZnQ3dBRVZZc0FZdkc3RUdIejVac0EvY3NCYlFNREgvL3dBNy8rb0VBZ2FnQWlZQVNRQUFBUVlEOGl6UUFCWUFzQUJGV0xBSkx4dXhDUnMrV2JBaDNMQXEwREF4Ly84QUovNmJCTG9IUGdJbUFDa0FBQUFuQVdjQXVnRTlBUWNCZGdTb0FBb0FFd0N3QUVWWXNBWXZHN0VHSHo1WnNCRGNNREVBLy84QU8vNlJCQUlHQVFJbUFFa0FBQUFtQVdjekFBRUhBWFlFZGdBQUFCTUFzQUJGV0xBSkx4dXhDUnMrV2JBazNEQXhBUC8vQURVQUFBTFNCOElDSmdBdEFBQUJCd0YwQTVVQlF3QUpBTEFDTDdBUzNEQXhBUC8vQUNJQUFBS0hCbjRDSmdEMEFBQUJCd0YwQTByLy93QUpBTEFDTDdBUzNEQXhBUC8vLy8vK2x3SW9CYkFDSmdBdEFBQUFCd0YyQTE4QUJ2Ly8vK1QrbXdJSkJkZ0NKZ0JOQUFBQUJ3RjJBMFFBQ3YvL0FHditrUVVoQmNnQ0pnQXpBQUFBQndGMkJQWUFBUC8vQURuK2p3UW5CRklDSmdCVEFBQUFCd0YyQklULy92Ly9BR3YvNXdVaEI3c0NKZ0F6QUFBQkJ3RjBCU3dCUEFBSkFMQUtMN0F4M0RBeEFQLy9BRG4vNkFRbkJvVUNKZ0JUQUFBQkJ3RjBCR29BQmdBSkFMQUVMN0F2M0RBeEFQLy9BR3YvNXdZdkI3RUNKZ0F6QUFBQkJ3UHZBUUlCSVFBV0FMQUFSVml3Q2k4YnNRb2ZQbG13SnR5d0xOQXdNZi8vQURuLzZBVnRCbndDSmdCVEFBQUJCZ1B2UU93QUZnQ3dBRVZZc0FRdkc3RUVHejVac0NUY3NDclFNREgvL3dCci8rY0ZJUWV1QWlZQU13QUFBUWNEOEFFSkFTc0FGZ0N3QUVWWXNBb3ZHN0VLSHo1WnNDVGNzQ3ZRTURILy93QTUvK2dFSndaNUFpWUFVd0FBQVFZRDhFZjJBQllBc0FCRldMQUVMeHV4QkJzK1diQWszTEFwMERBeC8vOEFhLy9uQlpjSDNnSW1BRE1BQUFFSEEvRUJBd0VUQUJZQXNBQkZXTEFLTHh1eENoOCtXYkFrM0xBcTBEQXgvLzhBT2Yvb0JOVUdxUUltQUZNQUFBRUdBL0ZCM2dBV0FMQUFSVml3QkM4YnNRUWJQbG13SXR5d0tOQXdNZi8vQUd2LzV3VWhCOVVDSmdBekFBQUJCd1B5QVFJQkJRQVdBTEFBUlZpd0NpOGJzUW9mUGxtd0pOeXdMZEF3TWYvL0FEbi82QVFuQnFBQ0pnQlRBQUFCQmdQeVFOQUFGZ0N3QUVWWXNBUXZHN0VFR3o1WnNDTGNzQ3ZRTURILy93QnIvcEVGSVFjM0FpWUFNd0FBQUNjQlp3RUpBVFlCQndGMkJQWUFBQUFUQUxBQVJWaXdDaThic1FvZlBsbXdKZHd3TVFELy93QTUvbzhFSndZQkFpWUFVd0FBQUNZQlowY0FBUWNCZGdTRS8vNEFFd0N3QUVWWXNBUXZHN0VFR3o1WnNDUGNNREVBLy84QVcvL29CaVlITXdJbUFVVUFBQUVIQUhjQ0JnRXpBQk1Bc0FCRldMQUtMeHV4Q2g4K1diQXUzREF4QVAvL0FEYi81Z1VGQmdBQ0pnRkdBQUFCQndCM0FWb0FBQUFUQUxBQVJWaXdCQzhic1FRYlBsbXdLdHd3TVFELy93QmIvK2dHSmdjekFpWUJSUUFBQVFjQVJBRnJBVE1BRXdDd0FFVllzQW92RzdFS0h6NVpzQzNjTURFQS8vOEFOdi9tQlFVR0FBSW1BVVlBQUFFSEFFUUF2d0FBQUJNQXNBQkZXTEFFTHh1eEJCcytXYkFwM0RBeEFQLy9BRnYvNkFZbUI3Z0NKZ0ZGQUFBQkJ3RjBCU1VCT1FBVEFMQUFSVml3Q2k4YnNRb2ZQbG13T3R3d01RRC8vd0EyLytZRkJRYUZBaVlCUmdBQUFRY0JkQVI1QUFZQUV3Q3dBRVZZc0FRdkc3RUVHejVac0NqY01ERUEvLzhBVy8vb0JpWUhLQUltQVVVQUFBRUhBVzRCRUFFMEFCTUFzQUJGV0xBS0x4dXhDaDgrV2JBdjNEQXhBUC8vQURiLzVnVUZCZlVDSmdGR0FBQUJCZ0Z1WkFFQUV3Q3dBRVZZc0FRdkc3RUVHejVac0N2Y01ERUEvLzhBVy82UkJpWUdMZ0ltQVVVQUFBQUhBWFlFNEFBQS8vOEFOdjZJQlFVRXFBSW1BVVlBQUFBSEFYWUVkZi8zLy84QVcvNlJCUzhGc0FJbUFEa0FBQUFIQVhZRXpBQUEvLzhBU3Y2UkJERUVPZ0ltQUZrQUFBQUhBWFlFSVFBQS8vOEFXLy9tQlM4SHV3SW1BRGtBQUFFSEFYUUZCQUU4QUJNQXNBQkZXTEFLTHh1eENoOCtXYkFUM0RBeEFQLy9BRXIvNkFReEJvVUNKZ0JaQUFBQkJ3RjBCRzhBQmdBVEFMQUFSVml3Q0M4YnNRZ2JQbG13Rk53d01RRC8vd0JiLytnR3JRZENBaVlCUndBQUFRY0Fkd0lOQVVJQUV3Q3dBRVZZc0Jvdkc3RWFIejVac0IzY01ERUEvLzhBU3Yvb0JXRUY3QUltQVVnQUFBRUhBSGNCVmYvc0FCTUFzQUJGV0xBV0x4dXhGaHMrV2JBZTNEQXhBUC8vQUZ2LzZBYXRCMElDSmdGSEFBQUJCd0JFQVhJQlFnQVRBTEFBUlZpd0VpOGJzUklmUGxtd0hOd3dNUUQvL3dCSy8rZ0ZZUVhzQWlZQlNBQUFBUWNBUkFDNi8rd0FFd0N3QUVWWXNBNHZHN0VPR3o1WnNCM2NNREVBLy84QVcvL29CcTBIeHdJbUFVY0FBQUVIQVhRRkxBRklBQk1Bc0FCRldMQVNMeHV4RWg4K1diQWIzREF4QVAvL0FFci82QVZoQm5FQ0pnRklBQUFCQndGMEJIVC84Z0FUQUxBQVJWaXdEaThic1E0YlBsbXdITnd3TVFELy93QmIvK2dHclFjM0FpWUJSd0FBQVFjQmJnRVhBVU1BRXdDd0FFVllzQm92RzdFYUh6NVpzQjdjTURFQS8vOEFTdi9vQldFRjRRSW1BVWdBQUFFR0FXNWY3UUFUQUxBQVJWaXdGaThic1JZYlBsbXdIOXd3TVFELy93QmIvb2dHclFZQ0FpWUJSd0FBQUFjQmRnVHcvL2YvL3dCSy9wRUZZUVNVQWlZQlNBQUFBQWNCZGdRbEFBRC8vd0NoQUFBRlRRYzJBaVlBUFFBQUFRY0FSQUVpQVRZQUV3Q3dBRVZZc0Fndkc3RUlIejVac0FyY01ERUEvLy8vdGY1RkJCSUdBQUltQUYwQUFBRUdBRVIvQUFBVEFMQUFSVml3RHk4YnNROGJQbG13RWR3d01RRC8vd0NoL3FFRlRRV3dBaVlBUFFBQUFBY0JkZ1NrQUJELy8vKzEvZ3dFRWdRNkFpWUFYUUFBQUFjQmRnVUgvM3YvL3dDaEFBQUZUUWU3QWlZQVBRQUFBUWNCZEFUY0FUd0FDUUN3QVMrd0Y5d3dNUUQvLy8rMS9rVUVFZ2FGQWlZQVhRQUFBUWNCZEFRNUFBWUFDUUN3QVMrd0h0d3dNUUQvL3dDaEFBQUZUUWNyQWlZQVBRQUFBUWNCYmdESEFUY0FDUUN3QVMrd0U5d3dNUUQvLy8rMS9rVUVFZ1gxQWlZQVhRQUFBUVlCYmlRQkFBa0FzQUV2c0JyY01ERUEvLy8rcy8vbkJXY0YyQUFtQUROR0FBQUhBMTM5eHdBQUFBSUE3QVJ4QTJBRjJBQUZBQTRBRlFDd0RDK3dCOUN3QWRDd0RCQ3dCTkN3QmRBd01RRVROd2NCQndNekJ3WVdGd2NtTndIMW5jNEIvdkZkNjYwUENRNG1UWmdRQkprQlBnRVkvc01CQVZWVFBHUXdRMTJ4QVAvL0FEWUNDUUpZQXMwQUJnQVJBQUQvL3dBMkFna0NXQUxOQUFZQUVRQUEvLzhBbkFKdEJLVURNUUJHQTZEaEFFek5RQUQvL3dDQ0FtMEY0d014QUVZRG9Ja0FabVpBQVAvL0FJSUNiUVhqQXpFQVJnT2dpUUJtWmtBQS8vLy9UdjQvQXhjQUFBQW5BRVAvMWY3K0FRWUFRd0VBQUJ3QXRnQUNFQUlnQWdOZHRCQUNJQUlDY2JhQUFwQUNvQUlEWFRBeEFBRUFyZ1FnQWlJR0dnQUhBQjJ5QndnSkVSSTVBTEFBUlZpd0FDOGJzUUFoUGxtd0JOQ3dCQzh3TVFFWEJnY0hJemMyQWF0M2F4d2QwQlFtQmhwUGpYK2ZmT2NBQVFDS0JBQUIvZ1lBQUFjQUhiSUNDQWtSRWprQXNBQkZXTEFFTHh1eEJDRStXYkFBMExBQUx6QXhBU2MyTnpjekJ3WUJBWGRxSEI3UUZpVUVBRStMZ2FXSTRnQUIvNlQrMWdFVkFNb0FCd0FZc2djSUNSRVNPUUN3Q0MreUJBMEtLMWdoMkJ2MFdUQXhFeWMyTnpjekJ3WWFkbVliSE5RVEkvN1dVSW1CbW52Z0FBRUF6UVFCQWRJR0FBQUtBQk95Q0FzTUVSSTVBTEFBTDdBRzBMQUdMekF4QVFjR0Z4WVhCeVltTnpjQndCa01DZ2trZTBWRkRCWUdBSkZPU0VsR1NVZklZbzcvL3dDM0JDQURjUVlhQUNZRGNBa0FBQWNEY0FGUEFBRC8vd0NYQkFBRFR3WUFBQ1lEY1EwQUFBY0RjUUZSQUFBQUF2K2gvc0lDV3dEL0FBZ0FFUUFoc2cwU0V4RVNPYkFORUxBRjBBQ3dFaSt5QkEwS0sxZ2gyQnYwV2JBTjBEQXhFeWMyTnpjekJ3WUdGeWMyTnpjekJ3WUdHM3B2R2lEVUhSSjczM3AwR1NEVkhoSisvc0pRb0pTNXRuSFBSMUNqa2JtM2RNa0FBUUJwQUFBRVN3V3dBQXNBU3dDd0FFVllzQWd2RzdFSUh6NVpzQUJGV0xBR0x4dXhCaHMrV2JBQVJWaXdDaThic1FvYlBsbXdBRVZZc0FJdkc3RUNEejVac0FvUXNnQUJDaXRZSWRnYjlGbXdCTkN3QmRBd01RRWhBeU1USVRjaEV6TURJUVFyL3BTSzdvditseUFCWnp2dU93RnRBM0w4amdOeXlBRjIvb29BQUFILysvNWdCR1VGc0FBVEFId0FzQUJGV0xBTUx4dXhEQjgrV2JBQVJWaXdDaThic1FvYlBsbXdBRVZZc0E0dkc3RU9HejVac0FCRldMQUNMeHV4QWhFK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBUXZHN0VFRHo1WnNnWUJDaXRZSWRnYjlGbXdEaEN5Q0FFS0sxZ2gyQnYwV2JBSjBMQVEwTEFSMExBR0VMQVMwTEFUMERBeElTRURJeE1oTnlFVElUY2hFek1ESVFjaEF5RUR2UDZUUWUxQi9wa2ZBV1pzL3BrZkFXYzY3anNCYlIvK2xHMEJidjVnQWFEQ0FyVEVBWGIraXNUOVRBQUJBSjRDQkFKTkE5d0FEUUFXc2dNT0R4RVNPUUN3QXkreENnb3JXTmdiM0Zrd01STTJOak1XRmhVSEJnWWpJaVkxbndaOVlGdHdBZ2Q5WDFwd0F2eGtmQUoyWGl0a2MzUmIvLzhBTS8veUF3SUJBd0FtQUJJREFBQUhBQklCdndBQS8vOEFNLy95Qks0QkF3QW1BQklEQUFBbkFCSUJ2d0FBQUFjQUVnTnJBQUFBQVFBMkFna0JMZ0xOQUFNQUdMSUFCQVVSRWprQXNBTXZzZ0FCQ2l0WUlkZ2I5Rmt3TVFFak56TUJDOVVqMVFJSnhBQUdBSjMvNkFjR0JjY0FGZ0FrQUNnQU5nQkVBRklBdUxJQ1UxUVJFam13QWhDd0dkQ3dBaEN3SjlDd0FoQ3dLOUN3QWhDd09OQ3dBaEN3VGRBQXNDVXZzQ2N2c0FCRldMQVhMeHV4Rng4K1diQUFSVml3RXk4YnNSTVBQbG13QTlDd0F5K3lCUU1URVJJNXNBZlFzQWN2c0JNUXNBN1FzQTR2c2hFVEF4RVNPYkFYRUxBZTBMQWVMN0FURUxJc0Fnb3JXQ0hZRy9SWnNBTVFzak1DQ2l0WUlkZ2I5Rm13TEJDd090Q3dNeEN3UWRDd0hoQ3lTQUlLSzFnaDJCdjBXYkFYRUxKUEFnb3JXQ0hZRy9SWk1ERUJOallYRmhjMkZ4WVdCd2NHQmljbUppY0dKeVltTndNV0ZnY0hCZ1luSmlZM056WTJFeWNCRndFR0ZoY1dOamMzTmlZbkpnWUhCUVlXRnhZMk56YzJKaWNtQmdjQkJoWVhGalkzTnpZbUp5WUdCd0xyRHI2RWxEeG5nbjJWQ0FZTnVvZEFjU0JtZ24yVkJ2YUFsZ2dIRGJ5QmVwVUlCUXUxQW5nRGIzbityd1U2TjBGVUN3a0hPamsrVndzQnNBVTZPRDlWQ3dvSE9qaytXZ243OXdVNk56MVdEQW9GT0RvOVZnd0JaSWFyQWdWcmNBSUNxb0JFakswQ0FUWTRid0lDcW44RXJnU3FnRXFJcWdRQ3EzOUFqTEQ2cUU4RVowLzhQMFZUQWdKWVJrOUNWZ0lDV0VWUVJWTUNBbGRIVDBKV0FnSmFTZ0xyU0ZBQ0FsWklUVVZWQWdKV1NmLy9BSkFEL0FHV0JnQURCZ0FMQUFBQURBQ3dCQyt3QWRDd0FTOHdNZi8vQUtFRDlBTENCZ0FEQmdBR0FBQUFHd0N3Q1Mrd0J0Q3dCaSt3QWRDd0FTK3dDUkN3Qk5Dd0JDOHdNUUFBQVFCZEFJb0NaUU9wQUFZQUVBQ3dCUyt5QWdjRkVSSTVzQUl2TURFQkV5TUROd0V6QVNhbWxOc0JBVlN6QWd6K2ZnR0ZGQUdHQUFBQi8va0FpZ0lDQTZrQUJnQVFBTEFBTDdJREJ3QVJFam13QXk4d01RRVRCd0VqQVFNQkp0d0MvcTIwQVQrbEE2bitmQlgrZWdHYkFZVC8vd0EzLys4RVB3V3dBQ1lBQlFBQUFBY0FCUUlmQUFBQUFmL2hBRzhEeVFVbEFBTUFDUUN3QUMrd0FpOHdNVGNuQVJkYWVRTndlRzlQQkdkUEFQLy9BR01Da3dMc0Jha0RCd1BNQUhJQ2t3QVRBTEFBUlZpd0NTOGJzUWtmUGxtd0RkQXdNUUFBQVFCdUFvd0RVd1c2QUJJQVRMSVBFeFFSRWprQXNBQkZXTEFFTHh1eEJCOCtXYkFBUlZpd0FDOGJzUUFmUGxtd0FFVllzQkF2RzdFUUV6NVpzQUJGV0xBSUx4dXhDQk0rV2JBRUVMSU5Bd29yV0NIWUcvUlpNREVCRnpZMk16SVdCd01qRXpjMkp5WUhBeU1UQVlvQ05HeEJjblFQVXNGTEJBUmZWajlod1lzRnJYcElQNmVNL2dVQnlqMS9BZ0piL2RFRElBRC8vLy9EQUFBRXB3V3dBaVlBS2dBQUFBY0QxZjh3L21rQUFmLzJBQUFFcFFYSkFDWUFtcklXSnlnUkVqa0FzQUJGV0xBWEx4dXhGeDgrV2JBQVJWaXdCaThic1FZUFBsbXlKUmNHRVJJNXNDVXZzZ0FDQ2l0WUlkZ2I5Rm13QmhDeUNRRUtLMWdoMkJ2MFdiQUUwTEFFTDdBQUVMQU4wTEFsRUxBUDBMQVBMN0FsRUxBVDBMQVRMN1lQRXg4VEx4TURYYklRQWdvcldDSFlHL1Jac0JjUXNoMEJDaXRZSWRnYjlGbXlHeE1kRVJJNXNCTVFzQ0hRc0JBUXNDUFFNREVCSVFjR0J5VUhJVGNYTmpjM0J6Y3pOeU0zTXpjMkpCY1dGZ2NuTmljbUJnY0hJUWNoQnlFREEvN2hCeFJiQXFnay9BUWtSV1FmQ3FnYW14S1lHWk1UR0FFVng3VExDTzhKcWxwK0RoSUJOaHIrMEJFQkxRSFVMWUZmQThySkFTU3hPQUdSZVpDZ3h2VUdCTm0yQWNVRUFvVnBvSkI1QUFVQURRQUFCbDhGc0FBYkFCOEFJd0FtQUNrQXZiSUtLaXNSRWptd0NoQ3dIOUN3Q2hDd0lkQ3dDaEN3SnRDd0NoQ3dLTkFBc0FCRldMQWFMeHV4R2g4K1diQUFSVml3Rnk4YnNSY2ZQbG13QUVWWXNBd3ZHN0VNRHo1WnNBQkZXTEFKTHh1eENROCtXYklGQ1JvUkVqbXdCUyt3QWRDd0FTK3lEd0VCWGJJREF3b3JXQ0hZRy9SWnNBVVFzZ2NEQ2l0WUlkZ2I5Rm13SmRDd0N0Q3dEdEN3QlJDd0hkQ3dJZEN3RWRDd0F4Q3dIdEN3SXRDd0V0Q3dBUkN3R2RDd0o5Q3dGZEN3Q1JDd0pOQ3dGeEN3S2RBd01RRXpCeU1ITXdjakF5TURJUU1qRXlNM016Y2pOek1UTXhNaEV6TUJNemNqQlRNbkl3RTNCd0UzSndXTjBoelJHOUljMFZidjJQNnhWdlpXelJ6TUc4MGN6RmJ1MWdGVFZ2WDk2cFViOHY1ZzdrS1JBakFUTC80SEtoc0R4YUNYb1A0U0FlNytFZ0h1b0plZ0FlditGUUhyL042WGw1ZitmVTREQWRVRFJnQUFBZ0FyLyswR1dBV3dBQ0FBS1FDaXNpWXFLeEVTT2JBbUVMQVkwQUN3QUVWWXNCY3ZHN0VYSHo1WnNBQkZXTEFjTHh1eEhCcytXYkFBUlZpd0h5OGJzUjhiUGxtd0FFVllzQlF2RzdFVUR6NVpzQUJGV0xBTEx4dXhDdzgrV2JBZkVMSUFBUW9yV0NIWUcvUlpzQXNRc2dZQkNpdFlJZGdiOUZtd0FCQ3dEOUN3RU5DeUloUVhFUkk1c0NJdnNoSUJDaXRZSWRnYjlGbXdIeEN3SHRDd0hpK3dGeEN5S0FFS0sxZ2gyQnYwV1RBeEFTTURCaGNXRnpJM0J3WW5KaVkzRXlNQ0lTY0RJeE1GSGdJSE54TXpBek1CRnpZM05pY21KeWNHT2JsbkF3SUdTaVl2RVV0S2Uzc05aV21DL25DYlh2VDhBWE44djJnRWVTN3RMcm43U0lMS1FpTUxFNkNiQTRiOW9oa1VRUU1KdmhVQkFxT0pBbXIrbEFIOTVRV3dBUU5jcUc4QkFRZisrZjZ0QWdPc1hGMk9DQUVBLy84QUovL3BDQlFGc0FBbUFEWUFBQUFIQUZjRVVBQUFBQWNBS2dBQUIzMEZzQUFmQUNNQUp3QXJBQzRBTVFBMEFPdXlNalUyRVJJNXNESVFzQjdRc0RJUXNDTFFzRElRc0NmUXNESVFzQ3JRc0RJUXNDN1FzRElRc0REUUFMQUFSVml3QWk4YnNRSWZQbG13QUVWWXNCOHZHN0VmSHo1WnNBQkZXTEFiTHh1eEd4OCtXYkFBUlZpd0VDOGJzUkFQUGxtd0FFVllzQTB2RzdFTkR6NVpzZ2tRQWhFU09iQUpMN0FGMExBRkw3SVBCUUZkc0FIUXNBVVFzZ2NEQ2l0WUlkZ2I5Rm13Q1JDeUNnTUtLMWdoMkJ2MFdiQXQwTEFPMExBdzBMQVMwTEFKRUxBbDBMQXAwTEFoMExBVjBMQUhFTEFtMExBcTBMQWkwTEFXMExBQkVMQWQwTEFaMExBUUVMQXYwTEFzMExBZkVMQXkwTEFCRUxBMDBEQXhBU0VUTXdNekJ5TUhNd2NqQXlNRElRTWpBeU0zTXljak56TURNeE1oRXpNQk16Y2pCVE0zSXdVekp5TUJOeU1GTnlNQkJ6Y0V2UUVubnZ1cGt4eTJRZHNjL3RudExmNzg3ZTBiL3h6YUI3Y2NraFh2Q3dFcHM4LzlYWmhHNFFMWm1UN2kvcHV6REdBQlFVZFQvU2ROVUFIMkVBNEVCd0dwL2xlZ29xRDkyd0lsL2RzQ0phQ2lvQUdwL2xjQnFmMFZvcUtpb3FMK0FyeTB0QUlIS1FJQUFBSUFFUC84QmpZRU9nQU9BQnNBYUxJQUhCMFJFam13RWRBQXNBQkZXTEFPTHh1eERocytXYkFBUlZpd0ZpOGJzUlliUGxtd0FFVllzQXd2RzdFTUR6NVpzQUJGV0xBUEx4dXhEdzgrV2JJU0FRb3JXQ0hZRy9SWnNBNFFzZ3NCQ2l0WUlkZ2I5Rm15QlJJTEVSSTVzaEFMRWhFU09UQXhBUllXQndNakV6WW5KaWNsQXlNYkFqTURCUlkzRXpNREJnUW5Bem1rbHhVejdqVUZBZ3FEL3E2YTdidlJmKzFkQVRuSUozWHVjUnYrOWM0RU9RWE14UDdBQVVJc0pYZ0ZBdnlLQkRyN3hnTFcvZTBDQXNRQ3QvMWJ4TlVFQVAvLy8vVCtyZ1VaQmdBQUpnQklBQUFBSndQVkFkMENRZ0VIQUVNQWUvOXRBQklBc2k4aEFWMnlIeUVCY2JLZklRRmRNREVBQVFCTy8rMEVuZ1hHQUNZQWlySU1KeWdSRWprQXNBQkZXTEFaTHh1eEdSOCtXYkFBUlZpd0N5OGJzUXNQUGxteUpoa0xFUkk1c0NZdnNnQUNDaXRZSWRnYjlGbXdDeEN5QmdFS0sxZ2gyQnYwV2JBQUVMQVEwTEFtRUxBUjBMQW1FTEFXMExBV0w3WVBGaDhXTHhZRFhiSVRBZ29yV0NIWUcvUlpzQmtRc2g0QkNpdFlJZGdiOUZtd0ZoQ3dJZEN3RXhDd0k5QXdNUUVoQmhjV0ZoY1dOeGNHSnk0Q053YzNNemNqTnpNU0FCY1dGd2NtSnlZR0J5RUhJUWNoQTBUK3F3a0lDM3BwVzNNSGVuT1ozV1VVcnhtbUY2Z1pvRUlCU1BCampERmZYNVRDTGdGaEdmNm5Gd0ZhQWc5RVBXTnhBd0lpenhzQ0E0cjVtd0dOZ0kwQkJ3RVdBZ0llelNNQ0FxNm5qWUFBQkFCQ0FBQUdEd1d3QUJvQUh3QWtBQ2tBMjdJYUtpc1JFam13R2hDd0hkQ3dHaEN3STlDd0doQ3dLTkFBc0FCRldMQUxMeHV4Q3g4K1diQUFSVml3QVM4YnNRRVBQbG13Q3hDeUpBRUtLMWdoMkJ2MFdiQUswTEFLTDBBUkFBb1FDaUFLTUFwQUNsQUtZQXB3Q2doZHNnY0RDaXRZSWRnYjlGbXdCdEN3Qmk5QUN3QUdFQVlnQmpBR1FBWUZYYklEQXdvcldDSFlHL1Jac0NmUXNDY3ZRQTh3SjBBblVDZGdKM0FuZ0NlUUp3ZGRzZ0FCQ2l0WUlkZ2I5Rm13Q2hDd0lOQ3dJQyt3RDlDd0R5K3dCeEN3SGRDd0V0Q3dCaEN3SHRDd0hpK3dGTkN3RkMrd0F4Q3dKdEN3RjlBd01RRURJeE1qTnhjM0J6Y3pFd1V5RmhjekJ5Y0dCemNIQndZRUl3RTNJUWNoSlNVbUp5VUJCUWNsTmdHL1h2ZUxzeDJ0RmJnZHNpOEIvTFRxSmVrZHNRZ1B2aDdPVWY3K3RnRk5DZjNPRkFJdy9mZ0I0eTkyL3RVQmxQNGRFUUViZHdJZC9lTURINkFDVEFLZ0FRa0JqSHlnQWlra0E2QUJnMzhCeENsTTZBUTVBUVArUEFFN0FnRUFBQUVBT3dBQUJJY0ZzQUFaQUdheUVCb2JFUkk1QUxBQVJWaXdHQzhic1JnZlBsbXdBRVZZc0F3dkc3RU1EejVac0JnUXNoY0JDaXRZSWRnYjlGbXdBTkN3RnhDd0U5Q3dFeSt3QTlDd0V4Q3lFZ2NLSzFnaDJCdjBXYkFHMExBU0VMQU8wTEFPTDdJSkJ3b3JXQ0hZRy9SWk1ERUJJeFlITndjakJnWUhBUlVoQVRjWE1qY0ZOeUVtSnlVM0lRUTAxUnNFMFZDTk4rM1FBV2IrN3Y1eEdPbkxaZjN0VVFIVURzTCs1VmtEbXdUNVZsc0J0cWlyRlAzakR3SmNqZ0t0QXJhVkJRSE1BQUVBRVAvbkJFY0ZzQUFlQUpHeUd4OGdFUkk1QUxBQVJWaXdFUzhic1JFZlBsbXdBRVZZc0FVdkc3RUZEejVac2hNUkJSRVNPYkFUTDdBWDBMQVhMN0lBRndGZHNoZ0JDaXRZSWRnYjlGbXdHZEN3Q05Dd0NkQ3dGeEN3RnRDd0M5Q3dDdEN3RXhDeUZBRUtLMWdoMkJ2MFdiQVYwTEFNMExBTjBMQVRFTEFTMExBUDBMQU8wTEFGRUxJYUFRb3JXQ0hZRy9SWnNoNEZFUkVTT1RBeEFRY0dBZ1FuSmljVEJ6OENCemMzRXpNSE53OENOd2NIQXpZU056Y0VSd2dieGY3YnNIU0RZdVVsNUJibEplUTI5eVhxSmVrWDZ5WHFYYTdlSHdnQy8welQvcld1QWdJVkFsZFcwVmQrVnRKWEFUYlJXZEphZmxuU1dmMytCUUVIN0UwQUFBSC81QUFBQkt3RU9nQWFBRnl5RFJzY0VSSTVBTEFBUlZpd0dTOGJzUmtiUGxtd0FFVllzQVl2RzdFR0R6NVpzQUJGV0xBTkx4dXhEUTgrV2JBQVJWaXdFaThic1JJUFBsbXlBQTBaRVJJNXNBQXZzZ3dCQ2l0WUlkZ2I5Rm13RDlDd0FCQ3dHTkF3TVFFV0ZoY1dCd2NqTnpjMkppY0RJeE1HQXdjak54SUFQd0l6QXpxZHV4RUpEaDN0SVFnRlRWTjU3bnI0UmlidEl6UUJMTm9NSyswRGFDajZ2Rzlzcjg1cGdiY28vV2tDbUdIK3B0M0xBUmtCV2lrQzBRQUMvK1lBQUFWZ0JiQUFGZ0FmQUhpeUdDQWhFUkk1c0JnUXNBM1FBTEFBUlZpd0RDOGJzUXdmUGxtd0FFVllzQUl2RzdFQ0R6NVpzZ1lDREJFU09iQUdMN0lGQVFvcldDSFlHL1Jac0FIUXNBWVFzQXJRc0FvdnNnOEtBVjJ5Q1FFS0sxZ2gyQnYwV2JBVTBMQUdFTEFWMExBS0VMQVgwTEFNRUxJZkFRb3JXQ0hZRy9SWk1ERWxJUWNqTnlNM016Y2pOek1UQlRJRUJ3WUVJeVVISVFFRk1qWTNOaVluSlFMYi9za3A5aWpISk1ZVHh5UEhmQUgzNWdFQkVSTCt4dlgreXhNQk9mNzlBUmVGc0JFT2Mydit5K2ZuNTh0cnl3TElBZmpLMmZnQmF3RTJBb2QvYm9VRUFRQUVBTUwvNXdVK0Jja0FIQUFxQURnQVBBQ1VzZ0U5UGhFU09iQUJFTEFvMExBQkVMQXMwTEFCRUxBNTBBQ3dPUyt3T3krd0FFVllzQW92RzdFS0h6NVpzQUJGV0xBa0x4dXhKQTgrV2JBS0VMQUQwTEFETDdJT0F3b1JFam13Q2hDeUVRSUtLMWdoMkJ2MFdiQURFTElaQWdvcldDSFlHL1Jac2h3RENoRVNPYkFrRUxBZDBMQWRMN0FrRUxJdUFnb3JXQ0hZRy9SWnNCMFFzalVDQ2l0WUlkZ2I5Rmt3TVFFR0JpY21KamMzTmpZWEZoWVZKelltSXlJR0J3Y1ZGaFlYTWpZM0FSWVdCd2NHQmljbUpqYzNOallEQmhZWEZqWTNOelltSnlZR0J3VW5BUmNDN0FxaGUzZU5DQVlOckg5NWpLVUNNakkzVEFvSkFpMG5NRU1PQWVKK2x3Z0dEYmVIZnBrSUJRdTZKQVU4Tmo1VURBb0ZPamMvV0FuOTZua0RiM29FSlhpUUFnS3JmMFNOclFJRWxITUJPRUJZUlU0eUxqZ0JQRGYrYkFLb2dVU01yZ1FDcW9CQ2pheitnMGRTQWdKVlNrOUlVQUlDVzBudlR3Um5UZ0FDQURILzZnUGlCZjhBR2dBa0FGcXlGaVVtRVJJNXNCWVFzQnZRQUxBT0w3QUFSVml3QUM4YnNRQVBQbG15Q0FBT0VSSTVzQWd2c2djSENpdFlJZGdiOUZtd0ZkQ3dBQkN5R2dFS0sxZ2gyQnYwV2JBSUVMQWIwTEFPRUxJaEFRb3JXQ0hZRy9SWk1ERUZMZ0kzTndZSE56WTNFelkyRnhZV0J3Y0dBQWNIQmhVVUZ3TTJQd0kwSnlZSEJ3Sm1nN3RRRmdSTGRoUmJabFFheTVXQWpnc0VGUDc2eFE4SW5XdkhIUVVDTmxNYUJ4WUhjOHAvRUJFRnZBSVZBZC9JM2dVRXVZd3N0LzZ3Wms0ekxwZ0xBaiswMHlVbFZRVUZtU3dBQUFRQUl3QUFCK2tGeFFBREFCRUFId0FwQUtHeUlDb3JFUkk1c0NBUXNBSFFzQ0FRc0JEUXNDQVFzQlBRQUxBQVJWaXdKUzhic1NVZlBsbXdBRVZZc0Nndkc3RW9IejVac0FCRldMQUhMeHV4Qng4K1diQUFSVml3SUM4YnNTQVBQbG13QUVWWXNDTXZHN0VqRHo1WnNBY1FzQTdRc0E0dnNBUFFzQU12c2dBQ0NpdFlJZGdiOUZtd0RoQ3lGUUlLSzFnaDJCdjBXYkFIRUxJY0Fnb3JXQ0hZRy9SWnNpSWxJQkVTT2JJbkpTQVJFamt3TVFFaE55RUJOallYRmhZSEJ3WUdKeVltTnhjR0ZoY1dOamMzTmlZbkpnWUhBU01CQXlNVE13RVRNd2M5L2E4YkFsRDk1QkhUbDQ2bEN3Y1ExSldRcEFxc0NFVkhUV29QQ2doRVNGQnBEdjRRLy83TnR1NzkvZ0UxdCt3Qm5KVUNMcC9IQkFURG1rcW94UVFFeEpjQ1lHa0NBMjFqVlY5ckFnSnhYdnVnQkJUNzdBV3crK2tFRndBQ0FPMERrd1RMQmJBQURBQVVBRzBBc0FCRldMQUdMeHV4Qmg4K1diQUFSVml3Q1M4YnNRa2ZQbG13QUVWWXNCTXZHN0VUSHo1WnNnRVZCaEVTT2JBQkw3SUFDUUVSRWpteUF3RUdFUkk1c0FUUXNnZ0JDUkVTT2JBQkVMQUwwTEFHRUxFTkNpdFkyQnZjV2JBQkVMQVAwTEFORUxBUjBMQVMwREF4QVFNSEF3TWpFek1URXpNREl3RWpBeU1USXpjaEJENnVQRHhEYmwrQ09jT0hYbTMrYjRaTmMwMkpFUUdDQlBiK253SUJmdjZEQWh6K2hnRjYvZVFCdmY1RkFidGZBQUlBZmYvcEJIY0VVZ0FXQUIwQVlySVVIaDhSRWptd0ZCQ3dHTkFBc0FCRldMQUtMeHV4Q2hzK1diQUFSVml3QWk4YnNRSVBQbG15R2dvQ0VSSTVzQm92c2c4TUNpdFlJZGdiOUZtd0FoQ3lFd3dLSzFnaDJCdjBXYklXQ2dJUkVqbXdDaEN5Rnd3S0sxZ2gyQnYwV1RBeEpRWW5KaVlDTnpZU0pCY2VBZ2NISVFNV0Z4WTJOd01tQndNaEV5WURyTExDaE05b0RnNnhBUU9KZ3NCZkNnWDlFenhkajFPNmRjcUttalFDQ2pWY1hITUVBcGNCQW95UkFSU1pCQVNPK0pFeC9yWm5CQU0zUkFNckEzeis2Z0VnYXdELy93QzIvL0lGaVFXWkFDY0R6d0JKQW9ZQUp3T0RBUE1BQUFFSEE4Z0RDUUFBQUJBQXNBQkZXTEFGTHh1eEJSOCtXVEF4Ly84QWd2L3lCaUVGdUFBbkE4MEFqZ0tVQUNjRGd3R2JBQUFCQndQSUE2RUFBQUFRQUxBQVJWaXdEUzhic1EwZlBsa3dNZi8vQUlqLzhnWVdCYWdBSndQTEFINENrd0FuQTRNQmdBQUFBUWNEeUFPV0FBQUFFQUN3QUVWWXNBRXZHN0VCSHo1Wk1ESC8vd0MxLy9JRjFnV2pBQ2NEeVFDU0FvNEFKd09EQVNvQUFBRUhBOGdEVmdBQUFCQUFzQUJGV0xBRkx4dXhCUjgrV1RBeEFBSUFSZi9uQkVnRjlRQWRBQzBBVkxJSUxpOFJFam13Q0JDd0h0QUFzQTB2c0FCRldMQVZMeHV4RlE4K1diSUFEUlVSRWptd0FDK3dEUkN5QndFS0sxZ2gyQnYwV2JBQUVMSWVBUW9yV0NIWUcvUlpzQlVRc2ljQkNpdFlJZGdiOUZrd01RRVdGelluSmlZbkpnWUhKellYRmhJVEZRSUNCQ2N1QWpjM1BnSVhKZ1lIQndZWEZoWVhGalkzTnlZbUFtU2thd01DQ29SdVJZTkNESkdpME4wR0RaNysrYW1LdzFzUUFoR1I0cGwycGhVREJnUUZZVmQ2cFNBTkRuUUVCUVI3S2pDVnNnUURJQlc1UXdFRS90Zis2a2IrMS81MzBnUUNpdkdURnBIcWZjWURxSlFWTmpsa2N3TUZ6czVWVGxzQUFRQWYveHNGVlFXd0FBY0FKd0N3QkMrd0FFVllzQVl2RzdFR0h6NVpzQVFRc0FIUXNBWVFzZ0lCQ2l0WUlkZ2I5Rmt3TVFVakV5RURJd0VoQkUzdTZmMnQ2ZTBCQndRdjVRWFUraXdHbFFBQi82Zis4d1Q2QmJBQURBQTFBTEFETDdBQVJWaXdDQzhic1FnZlBsbXdBeEN5QWdFS0sxZ2gyQnYwV2JBRjBMQUlFTElLQVFvcldDSFlHL1Jac0FmUU1ERUJBU0VISVRjQkFUY2hCeUVCQTNQOWxBTWlJdnVnSEFLNS9qMFpCQ2dpL1FRQm1RSkYvWEhEb2dMSUFzYU53LzExQUFFQW5BSnRBL2dETVFBREFCRUFzQUl2c2dFQkNpdFlJZGdiOUZrd01RRWhOeUVEMWZ6SEl3TTVBbTNFQUFBQkFEUUFBQVVKQmJBQUNBQThzZ0FKQ2hFU09RQ3dCeSt3QUVWWXNBRXZHN0VCSHo1WnNBQkZXTEFETHh1eEF3OCtXYklBQVFNUkVqbXdCeEN5QmdFS0sxZ2gyQnYwV1RBeEFRRXpBU01ESXpjaEFmY0NOZDM5S2NCdTBDTUJXUUV0QklQNlVBSkJ4UUFBQXdCSi8rZ0hyZ1JTQUI0QUx3QkJBR0t5QmtKREVSSTVzQVlRc0NuUXNBWVFzRHZRQUxBQVJWaXdDaThic1FvUFBsbXdCTkN3Q2hDd0U5Q3dFeSt3R2RDeUJ4a0tFUkk1c2hZWkNoRVNPYkFURUxJL0FRb3JXQ0hZRy9SWnNDVFFzQW9Rc2pVQkNpdFlJZGdiOUZtd0xOQXdNUUVHQWdZbkppWW5CZ1luTGdJM056WVNOaGNXRmhjMk5oY1dGaGNXQnljMkp5Y21KeVlHQndjR0ZoWVhGalkzQlFZWEZoWVhGalkyTnpjMkppY21KeVlHQjU4U24vU1BpTlV1ZXZDRmhNUmdEd0lTbi9PT2k5WXRlUEdIaWNrc0pnM3BCZ1FGSXA1MTNTb0hCa1o2Ulh5eUYvcUxCZ1VIWmxoTGwzOGJCZ1FtSlZGcWU3QUNHSnYrL0pFRUJMS1Z0SnNEQkk3OWxCZVhBUVdSQkFTeWtyS1pBd0tlaUhhQ0FUVTlKYjRGQXRhR0pFdWxhQUlGeXFNUU5qeHBmQU1DWHE1WUpEZDRNMndFQmNzQUFmOFgva1VESWdZWkFCWUFQYklCRnhnUkVqa0FzQUJGV0xBT0x4dXhEaUUrV2JBQVJWaXdBeThic1FNUlBsbXlDQUVLSzFnaDJCdjBXYkFPRUxJVEFRb3JXQ0hZRy9SWk1ERUZCZ1luSWljM0ZqTVdOeE0yTmhjV0Z3Y21JeUlHQndFZkZjcWpPVTBqT1JXUEc3NFYxNm8xWnlrd0tWQmxEVSt2dlFRVnZBOEVzQVRyc2NZQ0FSYTREV0JUQUFJQU1BRCtCRFVEK1FBU0FDVUFlTElPSmljUkVqbXdEaEN3SU5BQXNBSXZzQWJRc0FZdnNBSVFzQWpRc0FZUXNnc0JDaXRZSWRnYjlGbXdBaEN5RUFFS0sxZ2gyQnYwV2JBTEVMQVMwTEFDRUxBVjBMQVZMN0FaMExBWkw3QVZFTEFiMExBWkVMSWVBUW9yV0NIWUcvUlpzQlVRc2lNQkNpdFlJZGdiOUZtd0hoQ3dKZEF3TVJNMk16SVdGak15TndjR0p5SXVBaU1HQndjMk16SVdGak15TndjR0p5SXVBaU1HQjQ1dGpWM1pUUzE3Z2hadGZEeGthMlkvaG9nemJZbGQyMHd0ZW9jWWE0QXhWcVpWTG9lREE1QnBlUmQ5MldzQ0tUMHFBbnpLYVhrWGZkbHJBaHhjR0FKOEFBQUJBR0lBZ2dRVUJNRUFFd0EzQUxBVEw3SUFBUW9yV0NIWUcvUlpzQVRRc0JNUXNBZlFzQk1Rc0EvUXNBOHZzaEFCQ2l0WUlkZ2I5Rm13Q05Dd0R4Q3dDOUF3TVFFaEJ5YzNJemNoTnlFM0lUY1hCek1ISVFjaEE2ZjkrcU5xY3FRakFSR2gvblFrQWZpcmFubXhJLzdob0FHWkFXVGlSWjNKMzhyclJhYkszd0QvLy8vVkFCTUQyd1J4QUdjQUlBQVlBSXRBQURtYUFBY0RvUDg1L2FiLy93QVhBQk1EOHdSbkFHY0FJZ0FhQUl0QUFEbWFBQWNEb1A5Ny9hWUFBZ0E2QUFBRDRnV3dBQVVBQ1FBNHNnWUtDeEVTT2JBR0VMQUUwQUN3QUVWWXNBQXZHN0VBSHo1WnNBQkZXTEFETHh1eEF3OCtXYklHQUFNUkVqbXlDQUFERVJJNU1ERUJNeE1CSXdNQkFSTUJBaVcvL3Y0V3dQNENLdjdBbEFFL0JiRDlHdjAyQXVRQngvNGYvamNCNHdELy93QnBBS2dDRGdVS0FDY0FFZ0E1QUxZQkJ3QVNBTXNFQndBSkFMQURMN0FWM0RBeEFBQUNBR1lDZndLQ0JEa0FBd0FIQUNxeUFBZ0pFUkk1c0FYUUFMQUNMN0FBUlZpd0JpOGJzUVliUGxteUFBZ0NFUkk1c0FBdnNBVFFNREVCSXhNekV5TVRNd0VBbWsyYTU1cE9tZ0ovQWJyK1JnRzZBQUFCLzgvL1p3RVdBUVlBQndBTUFMQUVMN0FBMExBQUx6QXhGeWMyTnpjekJ3WktlMThWRDhRTkpKbFBoWGhUVnNVQS8vOEFYd0FBQlpFR0dnQW1BRW9BQUFBSEFFb0NNd0FBQUFJQVN3QUFCRXdHR2dBVkFCa0FnN0lIR2hzUkVqbXdCeEN3RjlBQXNBQkZXTEFJTHh1eENDRStXYkFBUlZpd0F5OGJzUU1iUGxtd0FFVllzQkl2RzdFU0d6NVpzQUJGV0xBWUx4dXhHQnMrV2JBQVJWaXdBQzhic1FBUFBsbXdBRVZZc0JZdkc3RVdEejVac0FNUXNnRUJDaXRZSWRnYjlGbXdDQkN5RGdFS0sxZ2gyQnYwV2JBQkVMQVQwTEFVMERBeE14TWpOeGMzTmpZWEZoWVhCeVlqSmdjSE53Y2pBeUVqRXpOUG5LQWdtQTRqL01OT2xVbzVmbkRVS0EzWElNNmRBbFh1dk8wRGhyUUJVYjdTQkFFbUY4Z3pBc3BDQWJUOGVnUTZBQUVBWHdBQUJLUUdHUUFZQUcyeUVoa2FFUkk1QUxBQVJWaXdFeThic1JNaFBsbXdBRVZZc0FZdkc3RUdHejVac0FCRldMQU9MeHV4RGhzK1diQUFSVml3Q2k4YnNRb1BQbG13QUVWWXNCY3ZHN0VYRHo1WnNCTVFzZ0lCQ2l0WUlkZ2I5Rm13QmhDeUNBRUtLMWdoMkJ2MFdiQU0wTEFOMERBeEFTWUhJZ1lIQnpNSEl3TWpFeU0vQWpZMkZ4WVhGd01qQTU5dE5WMTREdzdYSU5XZDdaMmhJSjhPR3UrN2JXM2EvK3dGUWhBQlgxNWF0UHg2QTRhMEFXVzJ3d0lDRUNENkd3QUNBRjhBQUFhMUJob0FKd0FyQUw2eUV5d3RFUkk1c0JNUXNDblFBTEFBUlZpd0ZpOGJzUlloUGxtd0FFVllzQU12RzdFREd6NVpzQUJGV0xBUkx4dXhFUnMrV2JBQVJWaXdJQzhic1NBYlBsbXdBRVZZc0Nvdkc3RXFHejVac0FCRldMQUlMeHV4Q0NFK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNDTXZHN0VqRHo1WnNBQkZXTEFvTHh1eEtBOCtXYkFERUxJQkFRb3JXQ0hZRy9SWnNBZ1FzZzBCQ2l0WUlkZ2I5Rm13RmhDeUhBRUtLMWdoMkJ2MFdiQUJFTEFoMExBaTBMQWwwTEFtMERBeE14TWpOek0zTmpZWEZoY0hKaU1tQmdjSEJUYzJOaGNXRmhjSEppY21Cd2MzQnlNREl4TWhBeUVqRXpOam5hRWdvQTBaMzY0OFVCb3NMVlZzRHc4QllCRW0rTUJPbGtvNmVuVFRLQTNYSU02ZDdaeittWjBFcWUyODdRT0d0R0MzeVFJQ0VyNEtBVjVUWmdGaHRza0NBaVlYeURFQ0FzcENBYlQ4ZWdPRy9Ib0VPZ0FCQUY4QUFBYjVCaHNBS2dDcnNoTXJMQkVTT1FDd0FFVllzQWd2RzdFSUlUNVpzQUJGV0xBV0x4dXhGaUUrV2JBQVJWaXdBeThic1FNYlBsbXdBRVZZc0JFdkc3RVJHejVac0FCRldMQWlMeHV4SWhzK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNCb3ZHN0VhRHo1WnNBQkZXTEFtTHh1eEpnOCtXYkFERUxJQkFRb3JXQ0hZRy9SWnNBZ1FzZzBCQ2l0WUlkZ2I5Rm13RmhDeUhnRUtLMWdoMkJ2MFdiQUJFTEFrMExBbDBMQW8wTEFwMERBeE14TWpOek0zTmpZWEZoY0hKaU1tQmdjSEpUYzJOaGNXRnhjQkl4TW1JeUlHQndjekJ5TURJeE1oQTJPZG9TQ2dEUm5pclRKWUdqY2hWV3dQRUFGbkRScnZ1MlprNi84QTdlMkdJVnQ1RUE3V0g5V2Q3WnorbVowRGhyUmZ1TW9FQVJLK0NnRmZVbVlCWmJiREFnRU9JL29iQlVFUVhGdGd0UHg2QTRiOGVnQUJBRi8vN1FUN0Joa0FKd0NVc2hBb0tSRVNPUUN3QUVWWXNDSXZHN0VpSVQ1WnNBQkZXTEFSTHh1eEVScytXYkFBUlZpd0hTOGJzUjBiUGxtd0FFVllzQ1l2RzdFbUd6NVpzQUJGV0xBWkx4dXhHUTgrV2JBQVJWaXdDeThic1FzUFBsbXdKaEN5QUFFS0sxZ2gyQnYwV2JBTEVMSUdBUW9yV0NIWUcvUlpzQUFRc0EvUXNCRFFzQ0lRc2hVQkNpdFlJZGdiOUZtd0VCQ3dHOUN3SE5Bd01RRWpBd1lYRmhjV053Y0dKeVltTnhNak56TTNKaU1pQmdjREl4TWpOek0zTmpZWEZoWVhBek1FMjdsbUF3SUdTU015RVVwS2Uzd05aYTBnckM5Q1kwMW5EOHZ0bmFFZ29BMFoxNnB5MjJrNnVRT0cvYUlaRkVBREFncStGUUVDbzRrQ2FyVDZJbDFZKzE4RGhyUmZ1TWdDQVQ4ci9vNEFBUUFYLytrR25RWWFBRW9Bd0xJcFMwd1JFamtBc0FCRldMQStMeHV4UGhzK1diQUFSVml3UlM4YnNVVWhQbG13QUVWWXNCQXZHN0VRR3o1WnNBQkZXTEJKTHh1eFNScytXYkFBUlZpd0xDOGJzU3dQUGxtd0FFVllzQW92RzdFS0R6NVpzRWtRc2dFQkNpdFlJZGdiOUZtd0NoQ3lCUUVLSzFnaDJCdjBXYkFCRUxBTzBMQkZFTElWQndvcldDSFlHL1Jac2gxSkxCRVNPYkErRUxJZ0FRb3JXQ0hZRy9SWnNqY3NQaEVTT2JBM0VMSW1BUW9yV0NIWUcvUlpzQ3dRc2pNQkNpdFlJZGdiOUZrd01RRWpBd2NXRnhZM0J3WW5KaVkzRXlNM016YzJKaWNtQmg4Q0ZnY0hOaVluSWdZSEJnUVhGZ2NPQWljbUpqY3pGQllYTWpZM05pUW5KamMySkJjeUZ5WTNOallYRmhZSEJ6TUdmcmxrQWdOTEl6SVJTMHA3ZUE5Z3B4K21EUXBLVFYxekNRUVRCZ1R1QWxKTVRuTUxEd0VRUk0wS0JYN1ZkckhrQXVaalZscDFEQkgrN2hiNENBY0JCYkZMWHhNR0R1dW91Y1VWRExrRGh2MjJMMUlEQWdxK0ZRRUN0SmtDU2JSWlgya0NBNFdOUEtvNk9RRkxWZ0pOUVZwRkhWZTdhSmxSQXdMSm4xaFpBa2xCWUU0SVdNT1d2Z0laZkRtSnBRSUUxcXhZQUFBVy82bitjZ2hGQmE0QURRQWFBQ2dBTndBOUFFTUFTUUJQQUZZQVdnQmVBR0lBWmdCcUFHNEFkZ0I2QUg0QWdnQ0dBSW9BamdHaHNsdVBrQkVTT2JCYkVMQU0wTEJiRUxBYTBMQmJFTEFjMExCYkVMQXgwTEJiRUxBODBMQmJFTEErMExCYkVMQkcwTEJiRUxCSzBMQmJFTEJTMExCYkVMQlgwTEJiRUxCaDBMQmJFTEJqMExCYkVMQnAwTEJiRUxCdDBMQmJFTEJ3MExCYkVMQjYwTEJiRUxCKzBMQmJFTENDMExCYkVMQ0UwTEJiRUxDSTBMQmJFTENNMEFDd1BTK3dBRVZZc0VZdkc3RkdIejVac244NkF5dXlkNElESzdKN2VnTXJza2wrQXl1eWlVNERLN0tGaUFNcnNvMkVBeXV5UVl3REs3SUtQVVlSRWptd0NpK3dBOUN3QXkrd0R0Q3dEaSt3Q2hDd0Q5Q3dEeSt5Ync0UEVSSTVmTEJ2THhpeVVBc0tLMWdoMkJ2MFdiSVZVRzhSRWptd0NoQ3lIZ3NLSzFnaDJCdjBXYkFERUxJbEN3b3JXQ0hZRy9SWnNBOFFzQ25Rc0NrdnNBNFFzQzdRc0M0dnNqUUxDaXRZSWRnYjlGbXdQUkN3YTlDd1o5Q3dZOUN3UHRDeVB3d0tLMWdoMkJ2MFdiQmwwTEJwMExCdDBMQTgwTEJHRUxKSERBb3JXQ0hZRy9SWnNGL1FzRnZRc0ZmUXNFclFzRVlRc0dEUXNGelFzRmpRc0V2UXNBNFFzbEVMQ2l0WUlkZ2I5Rm13RHhDeWRnc0tLMWdoMkJ2MFdUQXhBUVlHSnlZbU56YzJOaGNXRmdjVEV4Y1dCd1lHQnhZVkZBWUhBVFltSnlZR0J3Y0dGaGNXTmpjQk13TUdCaU1HSmljWEJqY3lOamNCRXpNSE13Y2hOek0zTXdNQkV5RUhJd2NsTnlFREl6Y0JCek0yTnpZbkFUY2hCeUUzSVFjaE55RUhFemNoQnlFM0lRY2hOeUVIQVRjMk56WXZBZ0VqTnpNM0l6Y3pBeU0zTXlVak56TTNJemN6QXlNM013TVBDb2hnWVhRRUNBaUZaVjExQWd4Z3FMOERBaVk0VDIxZy9yVUhOem8vVlFzUEJ6ZzdQMVFMQTlCak93aHBUMU5uQWxnRVZpMDZDZmxrTjI4a3Z4UUUveFRBSkcwMytiVXlBUzBVdmg0RjJ4UUJMek50SHZ2b0htMXVFZzFSQVVnVkFSQVYvVzBWQVE4Vi9XNFZBUTRWekJRQkR4VDliaFFCRGhUOWJ4UUJEUlFCVjFaNkVBcEFJMkQ4em5BdGJ4VnZMSEN2Y0MxdkJ3QnRMRzRVYlN4dXIyNHRiUUhVWm5rQ0FuMWVjR0IrQWdKNFl2NjRBaVVCQm9rbk9DQWRXRWxXQXdGTVFGQUNBbFJEY1VCUkFnSlJSUUZQL29WTlhRRlRWUUpmQWprcS9Na0JPOHB4Y2NyK3hRWWZBUjEwcWFsMC91T3AvTGFwQlZWSEJ3TkxkSFIwZEhSMCtUaHhjWEZ4Y1hFRHdnRUdVVFlJQXdMKzBmeCsrdndWK1g3OGZ2cjhGZmtBQUFVQVhQM1ZCOWNJY3dBREFCd0FJQUFrQUNnQVRBQ3dJUyt3SlMrd0FOQ3dBQyt3SVJDd0F0Q3dBaSt5SUFJQUVSSTVzQ0F2c0IzUXNCMHZzQVRRc0FRdnNnMEFBaEVTT2JBTkw3QVUwTEFVTDdJSEJCUVJFam15R1JRRUVSSTVNREVKQXdVME5qYzJOalUwSmlNaUJnY3pOall6TWhZVkZBY0dCaFVYSXhVekF6TVZJd016RlNNRUdBTy8vRUg4UkFRUEhpUktYS2VWa0tBQ3l3STZLems0WFZzdnlzcktTd1FFQWdRRUJsTDhNZnd4QTgveE9qb1lKNGRLZ0plTGZ6TTBRRFJmUEVGY1RGdXEvVXdFQ3A0RUFBUC8xd0FBQTU4RWpRQURBQWNBQ3dCZXNnUU1EUkVTT2JBRUVMQUEwTEFFRUxBSTBBQ3dBRVZZc0Fvdkc3RUtIVDVac0FCRldMQUFMeHV4QUE4K1diSUNBUW9yV0NIWUcvUlpzZ2NLQUJFU09iQUhMN0lFQVFvcldDSFlHL1Jac0FvUXNnZ0JDaXRZSWRnYjlGa3dNU0VoTnlFRElUY2hFeUUzSVFMVS9RTWpBdjBTL1pBakFuQjAvUU1qQXYzREFUakVBUXJFQUFIL3B3QUFBK3dFalFBSUFEaXlCd2tLRVJJNUFMQUFSVml3QWk4YnNRSWRQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFFTHh1eEJBOCtXYklIQWdBUkVqa3dNVE1qQVRNVElRTW5CNUhxQW5idDR2Ny9nd1VpQkkzN2N3TkhYbEVBQXdBNi8rb0VZd1NpQUFNQUZBQWlBSEd5R0NNa0VSSTVzQmdRc0FMUXNCZ1FzQTNRQUxBQVJWaXdEUzhic1EwZFBsbXdBRVZZc0FRdkc3RUVEejVac2dNTkJCRVNPWHl3QXk4WXRHQURjQU1DWGJRd0EwQURBbDJ5QUFFS0sxZ2gyQnYwV2JBTkVMSVlBUW9yV0NIWUcvUlpzQVFRc2g4QkNpdFlJZGdiOUZrd01RRWhOeUVCSmlZQ056Y1NOellYRmhZU0J3Y0NBQk1tSmljbUFnY1hGaFlYRmhJM0F4RCtaU01CbS83Sms5RmVFUU1oc2FIa2s4NWRFUVFnL3JtREJXeGltc0FKQVFWc1lwZkFDd0hmdy8xT0FwVUJCSjRjQVIyb21BVUVrdjc4bmlIKzdmNjVBdnR0Z3dRRy92em9SM0dGQkFZQkFQQUFBQUwvcHdBQUErd0VqUUFEQUFnQVBMSUZDUW9SRWptd0JSQ3dBdEFBc0FCRldMQUNMeHV4QWgwK1diQUFSVml3QUM4YnNRQVBQbG15QlFBQ0VSSTVzZ2NCQ2l0WUlkZ2I5Rmt3TVNFaEFUTURKd2NCSVFQcys3c0NkdTJpQlJ6K3J3SFhCSTMrdWw1RS9XSUFBQUVBQ2dBQUE5OEVqUUFGQURLeUFRWUhFUkk1QUxBQVJWaXdCQzhic1FRZFBsbXdBRVZZc0FJdkc3RUNEejVac0FRUXNnQUJDaXRZSWRnYjlGa3dNUUVoQXlNVElRTzgvZU9vN2NvREN3UEovRGNFalFBQUFRQXRBQUFFaUFTTkFCZ0FsYklBR1JvUkVqa0FzQUJGV0xBQkx4dXhBUjArV2JBQVJWaXdHQzhic1JnZFBsbXdBRVZZc0F3dkc3RU1EejVac2dBTUdCRVNPYklKREFFUkVqbXdDUyt3Qk5Dd0JDOUFEUThFSHdRdkJEOEVUd1JmQkFaZHRzOEUzd1R2QkFOZHNnWUNDaXRZSWRnYjlGbXdDUkN5Q2dJS0sxZ2gyQnYwV2JBTzBMQUpFTEFRMExBUUw3QUdFTEFUMExBRUVMQVcwTEFXTHpBeEFRRWhBVE1ISlFjSEpRY2hCeU0zSVRjRk55Y2hOek1ETXdJVUFXTUJFZjVpeVJ2KzZSb01BVElhL3RRbTdTZiswaG9CS0JJRC90UWIzTlAyQW53Q0VmMjNrd01nTEFLUjJkbVJBVGtQa3dKSkFBRUFFUUFBQkFrRW9nQWZBR1d5R3lBaEVSSTVBTEFBUlZpd0ZDOGJzUlFkUGxtd0FFVllzQVl2RzdFR0R6NVpzaDhHRkJFU09iQWZMN0FQMExJT0Fnb3JXQ0hZRy9SWnNBRFFzQVlRc2dVQkNpdFlJZGdiOUZtd0NOQ3dGQkN5R2dFS0sxZ2gyQnYwV2JJWEh4b1JFamt3TVFFbEJnWUhKUWNoTnhjMlB3SUhOek0zTmpZWEZoWUhKelluSmdZSEJ5RURHLzZZRVRzNkFva2svSDhkQ0YwaURRT2xISllNR1BHNHJiMEk3Z3VQVW1jTkNnRjJBZVVCVkpKQUE4UENBU1d2Unc0RmsyalQ3d1FFMXJnQnhnY0NoSDVpQUFBQkFBNy9Fd1AvQlhNQUt3QnZzaDhzTFJFU09RQ3dBRVZZc0Frdkc3RUpIVDVac0FCRldMQWlMeHV4SWc4K1diSURJZ2tSRWptd0NSQ3dETkN3QXhDeUdRRUtLMWdoMkJ2MFdiQUpFTElUQVFvcldDSFlHL1Jac2hBWkV4RVNPYkFpRUxBZjBMQWlFTElwQVFvcldDSFlHL1Jac2lVREtSRVNPVEF4QVRZbkp5WW1OelkyTnpjekJ4WVdCeWMySmljaUJnY0dGeGNXRmdjR0JnY0hJemNtSmpjWEJoWXpNallDdXhHUFBNeXNCd25qc3l5ZExaR2pBdXNEWmxWZGV3d1JuVDdJb1FnSjJyUXVuQzZrdkFUc0JXNXVZSHNCT1dvdkVqaXRmbzYwRWRuZkc3dUtBVlpYQVZCRFlEQVNQYk9BanFzUjRlTVl4NVFCWFdKTkFBRUFGQUFBQkRVR0dBQUtBRXdBc0FCRldMQURMeHV4QXlFK1diQUFSVml3Qmk4YnNRWWJQbG13QUVWWXNBRXZHN0VCRHo1WnNBQkZXTEFKTHh1eENROCtXYklBQmdFUkVqbXlCUVlCRVJJNXNnZ0FCUkVTT1RBeEFRTWpBVE1EQVNFQkFTRUJXRmZ0QVEvdG1nR0tBVFg5K3dGaS92VUI5ZjRMQmhqOGtRR1IvZ0g5eFFBQUFRQXVBQUFGWndXd0FBc0FUQUN3QUVWWXNBTXZHN0VESHo1WnNBQkZXTEFITHh1eEJ4OCtXYkFBUlZpd0FTOGJzUUVQUGxtd0FFVllzQW92RzdFS0R6NVpzZ0FEQVJFU09iSUZBd0VSRWpteUNRQUZFUkk1TURFQkF5TVRNd00zQVNFQkFTRUJtWFgyL1BaMkFnSjRBVVA5THdIbC91TUNvLzFkQmJEOWZRRUNndjBxL1NZQUFBRUFGQUFBQkVVR0FBQU1BRk1Bc0FCRldMQUVMeHV4QkNFK1diQUFSVml3Q0M4YnNRZ2JQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFMTHh1eEN3OCtXYklIQ0FJUkVqbXdCeSt5QUFFS0sxZ2gyQnYwV2JJS0FBY1JFamt3TVFFakF5TUJNd016QVNFQkFTRUJ4WEpTN1FFTDdKZGRBVThCSmY1SkFSaisvUUhaL2ljR0FQeWNBWjcrQmYzQkFBRUFMZ0FBQlhzRnNBQU1BRmdBc0FCRldMQUVMeHV4QkI4K1diQUFSVml3Q0M4YnNRZ2ZQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFMTHh1eEN3OCtXYklHQWdRUkVqbXdCaSt5SHdZQmNiSUJBUW9yV0NIWUcvUlpzZ29CQmhFU09UQXhBU01ESXhNekF6TUJJUUVCSVFJK3JtejIvUFpxZlFJS0FUNzltQUdHL3VnQ2NQMlFCYkQ5bkFKay9UdjlGUUFDQUM3Ly93VHdCYkFBSGdBbkFHR3lJQ2dwRVJJNXNDQVFzQjdRQUxBQVJWaXdBeThic1FNZlBsbXdBRVZZc0JVdkc3RVZEejVac0FCRldMQUJMeHV4QVE4K1diSWdBd0VSRWptd0lDK3lIZ0VLSzFnaDJCdjBXYklLSGlBUkVqbXdBeEN5SndFS0sxZ2gyQnYwV1RBeEFRTWpFd1V5RmdjR0JnY1dGeFlIQndZWEZoY0hCeVluSmpjM05pY21KeVVYTWpZM05pWW5KUUdNYVBiOEFmYmg3dzhJajVPVUVRVUdGQWNFQkNRQzlTTUZBd29TQmdZVWxQN3cvNHVpRGcxcGFQN1pBbGI5cWdXd0FkdkNjS2s5UUtzME5vczNKRDBwR3dFc1NpeE1lVEFxakFuTEFYZHdhbThFQVFBQUFnQTcvK01Fa1FSVUFCSUFJd0J1c2hra0pSRVNPYkFaRUxBSzBBQ3dBRVZZc0Fvdkc3RUtHejVac0FCRldMQU9MeHV4RGhzK1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNCSXZHN0VTRHo1WnNnQUNDaEVTT2JJTkNnSVJFam13QWhDeUdBRUtLMWdoMkJ2MFdiQUtFTElnQVFvcldDSFlHL1JaTURFbEJpY21KajhDTmdBWEZoWVhOek1ERXlNQkJoY1dGaGNXTmo4Q0p5WW5KZ1lIQXhDTzQ2dTVDUU1JSndFR3dXMmdKMFRjekJIVC9qSUdBZ0pjVW1haUlBWUJCQnVQZFpvYnhlSUhCZi9jTFRuNkFTb0ZBM0ZteGYzVC9mTUI4ak01WlhVQ0E3NmNMa1ExM0FjRng4SUFBQVAvaC81SEJGQUVVQUFyQURrQVJ3Q2JzaWRJU1JFU09iQW5FTEE1MExBbkVMQkUwQUN3QUVWWXNDZ3ZHN0VvR3o1WnNBQkZXTEFXTHh1eEZoRStXYkFvRUxBcjBMQXJMN0lBQXdvcldDSFlHL1Jac2djV0tCRVNPYkFITDdJT0ZnY1JFam13RGkreUxBRUtLMWdoMkJ2MFdiSWJMQTRSRWpteUlBY29FUkk1c0JZUXNqTUJDaXRZSWRnYjlGbXdCeEN5UFFFS0sxZ2gyQnYwV2JBb0VMSkVBUW9yV0NIWUcvUlpNREVCQnhZSEJ3WUVKeUluQmdjR0ZoY1hGaFlIQmdZRUp5WW1OelkzSmpjMk5qY21KamMzTmpZM054Y1hJUUVtSndZSEJoWXpNalkzTmlZbkF3WVdGekkyTnpjMkppY21CZ2NFTm9NZ0NRUVgvdTI2UTFJeUJ3WXBPcTJ6dEFjRmwvN2toOC9wQkFmUUlRWUhWanRIUXdVREVQVzNLQ3B3QVhYODhEZ2VZdzRKY1dlRnVBMEpQMWUvQm1CUVdJVU5Bd1pnVUZTSURnT2dBVnhlSDZQSEFoUXlKeUFpQXdJR21JTm1vbUlEQlk1NHBXWXlQVWxsSmphWVdDR1d4UW9CQXhQNzNnTUZPMWsvU1Z0S016Z0RBcTFKWUFKb1RoVk5Yd0lDWmxRQUF3RUdCRWNEVmdhVkFBTUFEZ0FaQUU0QXNBMHZzQmZRc0JjdnNnY0pDaXRZSWRnYjlGbXdBdEN3QWkrd0FOQ3dBQzlBRHc4QUh3QXZBRDhBVHdCZkFHOEFCMTJ3QWhDd0E5QVpzQU12R0xBTkVMSVJDUW9yV0NIWUcvUlpNREVCRndVbkJ6UTJNeklXRlJRR0lpWTNGak15TmpjMkppTWlCZ0poOWY3d3BwcHVUVXhpYkpobFlRTkFKRG9HQkNRZUpqY0dsUUhCQWVaUGEyaEVUV2hpUjFFM0pDUXhOQUFBQVFBS0FBQUVwQVNOQUFjQVA3SUJDQWtSRWprQXNBQkZXTEFHTHh1eEJoMCtXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQUV2RzdFQkR6NVpzQVlRc2dJQkNpdFlJZGdiOUZrd01TRWpFeUVESXhNaEE5bnVxUDRNcU8zS0E5QUR5ZnczQkkwQUFnQXovL1VDZ2dNakFCUUFJUUJuc2dnaUl4RVNPYkFJRUxBYzBBQ3dBRVZZc0Fndkc3RUlHVDVac0FCRldMQVBMeHV4RHc4K1diSUNEd2dSRWptd0FpKzJEd0lmQWk4Q0ExMndEeEN5RWdJS0sxZ2gyQnYwV2JBQ0VMSVZBZ29yV0NIWUcvUlpzQWdRc2h3Q0NpdFlJZGdiOUZrd01RRUdJeUltTnpZMkZ4WVdCd2NHQkNNbk56TVdOaWNXTnpjMkp5WWpJZ1lIQmhZQnNrdE1iWHNFQnJtQWdZc0pCUmIrL05rVkRReDNqa1E5T2d3REFndE5ORXdIQml3Qk56bUxjNEdtQWdTd2tUVFYzZ0dUQWxTc0FqWkhHQmxXVkRveFF3QURBQWovOGdLQUF5TUFGQUFnQUN3QWlySVhMUzRSRWptd0Z4Q3dFdEN3RnhDd0pOQUFzQUJGV0xBU0x4dXhFaGsrV2JBQVJWaXdDQzhic1FnUFBsbXlLZ2dTRVJJNXNDb3Z0dDhxN3lyL0tnTmR0ZzhxSHlvdktnTmR0cThxdnlyUEtnTnhzaGdDQ2l0WUlkZ2I5Rm15QXhncUVSSTVzZzBxR0JFU09iQUlFTEllQWdvcldDSFlHL1Jac0JJUXNpUUNDaXRZSWRnYjlGa3dNUUVHQmdjV0J3WUdKeVltTnpZM0pqYzJOaGNXRmdNMkppTWlCZ2NHRmpNeU5oTTJKaU1pQmdjR0ZqTXlOZ0o5QTBCR1pnUUVyNFovbGdNRG1sWUVCS2Q2ZG8vZUJUTXdNa3dIQnpZdUwwOHZCU3NtS2tFSEJpMG1La0FDU1RsWUtENXhjSDhDQW5ka2ZFODZaR3QrQWdKMC9rVW9MemdyS0RJMEFYd25LakVxSnlzeUFBQUJBQ01BQUFLN0F4VUFCZ0F5QUxBQVJWaXdCUzhic1FVWlBsbXdBRVZZc0FJdkc3RUNEejVac0FVUXNnUUNDaXRZSWRnYjlGbXlBQVFGRVJJNU1ERUJBU01CSVRjaEFxZitTYzBCdVA1Zkd3Sm1BcC85WVFKL2xnQUNBQmIvOGdKekF5UUFGQUFoQUZ1eUhTSWpFUkk1c0IwUXNBZlFBTEFBUlZpd0FDOGJzUUFaUGxtd0FFVllzQTB2RzdFTkR6NVpzQUFRc2dJQ0NpdFlJZGdiOUZteUJ3MEFFUkk1c0FjdnNoVUNDaXRZSWRnYjlGbXdEUkN5SEFJS0sxZ2gyQnYwV1RBeEFRY25KZ1lITmpNeUZnY0dCaWNtSmpjM05qWTNBeUlIQndZWEZqTXlOamMySmdKRURnZDBwVEJRWFdaNkJBUzJnNGlVQ2djWi9zbXNUVG9GQXdNS1ZqTlNCZ2N6QXlTYkFRTmJhMFdNYzN1Z0FnS3hqVVhCNEFuK1dENGtHeHBhVGpVeU93QUFBUUFLLy9JQ2tRTVZBQndBYXJJSEhSNFJFamtBc0FCRldMQUNMeHV4QWhrK1diQUFSVml3RFM4YnNRMFBQbG13QWhDeUF3SUtLMWdoMkJ2MFdiSUhBZzBSRWptd0J5K3lHZ2dLSzFnaDJCdjBXYklGQnhvUkVqbXdEUkN5RkFJS0sxZ2gyQnYwV2JJUkZCb1JFam15SEJvVUVSSTVNREVURXlFSEpRYzJOellXQndZR0p5WW1KeGNXRmpjMk5qYzJKaWNpQnpoNEFlRWIvcmszT0VOdGd3UUV1SUo0bXdTd0JETXZQRWdJQnpZMVFUVUJnd0dTbGdHWEdRSUNoSFIrbmdJQ2dtWUJMeVFCQVVrNU5UOEJKd0FBQXYveEFBQUNlZ01XQUFvQURnQkpBTEFBUlZpd0NTOGJzUWtaUGxtd0FFVllzQVF2RzdFRUR6NVpzZ0VKQkJFU09iQUJMN0lDQWdvcldDSFlHL1Jac0FiUXNBRVFzQXZRc2dnTEJoRVNPYklOQ1FRUkVqa3dNUUUzQnlNSEl6Y2hOd0UzQVRNM0J3SVdaQnhjSExnZS9xVU5BYkM2L2xPcU14SUJPUUdYbzZPRkFld0MvaVQxR0FBQUFmLzAvL01DaFFNa0FDUUFiN0lDSlNZUkVqa0FzQUJGV0xBTkx4dXhEUmsrV2JBQVJWaXdHQzhic1JnUFBsbXlBUmdORVJJNWZMQUJMeGl3RFJDeUJ3SUtLMWdoMkJ2MFdiSUpBUWNSRWptd0FSQ3lJd0lLSzFnaDJCdjBXYklUSXdFUkVqbXdHQkN5SGdJS0sxZ2gyQnYwV2JJYkhpTVJFamt3TVJNek5qWTNOaWNuSmdjSE5qWVhGaFlIQmdZSEZnY0dCaWNtSmpVWEZoY3lOamMySnlQbVV6MU5Cd2xLRjEwY3VnbW1mWUdaQlFOSlVuWUVBN3lMZlpteEJHbzJVd2NOZUZ3QjBnSTRMa01OQWdKTUFXbDZBZ04zWWp0WEppbUJiNElDQW9OdEFWa0NPQzlaQlFBQUFmL2pBQUFDZmdNa0FCY0FXYklJR0JrUkVqa0FzQUJGV0xBUEx4dXhEeGsrV2JBQVJWaXdBQzhic1FBUFBsbXlGZ0lLSzFnaDJCdjBXYklDRmdBUkVqbXlBdzhBRVJJNXNBOFFzZ2dDQ2l0WUlkZ2I5Rm15REFBUEVSSTVzaFVBRHhFU09UQXhJU0UzQVRZM05pWW5JZ1lIQnpZMkZ4WVdCd1lQQWdVQ052MnRHQUZXWVF3SEt5azZRd3kyQ3ErQ2Y1SUZCWlpQblFGZmh3RVpVME1wTHdGSE5BRjVtQUlDZzJoK2R6eHVBZ0FCQUcwQUFBSU5BeE1BQmdBeEFMQUFSVml3QlM4YnNRVVpQbG13QUVWWXNBRXZHN0VCRHo1WnNBVVFzQVRRc0FRdnNnTUNDaXRZSWRnYjlGa3dNU0VqRXdjM0pUTUJpN1ZqekJzQmJoY0NOaStaY3dBQ0FCZi84QUtNQXlVQURRQVpBRWF5RVJvYkVSSTVzQkVRc0FmUUFMQUFSVml3Qnk4YnNRY1pQbG13QUVWWXNBQXZHN0VBRHo1WnNBY1FzaEVDQ2l0WUlkZ2I5Rm13QUJDeUZ3SUtLMWdoMkJ2MFdUQXhCU1ltTnpjMk5oY1dGZ2NIQmdZVE56UW5KZzhDRkJjV053RWxoSW9MRUJPeWlJU0pDdzhTc1IwQ1ZuWVhGZ0paZGhjTUJMQ1dqNml3QkFTeWxvK21zQUh6TjI4REE3V3dNRzhEQjhNQUFBSC8yUUFBQkFjRWpRQU1BRXV5QUEwT0VSSTVBTEFBUlZpd0NDOGJzUWdkUGxtd0FFVllzQU12RzdFRER6NVpzZ0VCQ2l0WUlkZ2I5Rm15QlFFREVSSTVzQWdRc2dvQkNpdFlJZGdiOUZteUJ3b0lFUkk1TURFQkFTRUhJVGNCQXpjaEJ5RVRBbnYrc3dKV0kveDRIUUdDN1JrRFl5UDl3OVVDUlA2QXhLUUJ0d0dtak1UK2tBQURBRU1BQUFVM0JJNEFFUUFYQUIwQWJMSVFIaDhSRWptd0VCQ3dGZEN3RUJDd0c5QUFzQUJGV0xBUUx4dXhFQjArV2JBQVJWaXdCeThic1FjUFBsbXlEeEFIRVJJNXNBOHZzQURRc2dZSEVCRVNPYkFHTDdBSjBMSVVBUW9yV0NIWUcvUlpzQThRc2hVQkNpdFlJZGdiOUZtd0d0Q3dGQkN3RzlBd01RRVdGZ2NHQUFjSEl6Y21KamMySkRjM0Z3RUdGeE1HQmdVMkp3TTJOZ04rME9rUEVQN0srUmp1R2RIb0R4QUJPUGNiN2Yya0gvSnFqNTRDN3h2dGE0dWpCQk1VOWJ6Ui93QVFiVzRUK3NIUC9BNTVBZjJ2N3lJQ0xoQ1RaK2NoL2RJUGx3QUFBUUJ3QUFBRlVRU05BQmtBWExJWUdoc1JFamtBc0FCRldMQUVMeHV4QkIwK1diQUFSVml3RUM4YnNSQWRQbG13QUVWWXNCZ3ZHN0VZSFQ1WnNBQkZXTEFLTHh1eENnOCtXYklYQkFvUkVqbXdGeSt3QU5Dd0Z4Q3lEQUVLSzFnaDJCdjBXYkFKMERBeEFUWTJOeE16QXdZQUJ3TWpFeVlDTnhNekF3WUhCaFlYRXpNREFYcVpIRFB1TlNuKzNlUTM3ampMeEI0eTdUSUlBUU5SVkg3dEFkb2F1YW9CTnY3Ri9QN2JHUDduQVJrZEFUbnZBUy8rMERrOGFZb1lBckFBQVFBQUFBQUVlQVNoQUNRQVdiSUFKU1lSRWprQXNBQkZXTEFhTHh1eEdoMCtXYkFBUlZpd0VDOGJzUkFQUGxtd0FFVllzQ012RzdFakR6NVpzaUVCQ2l0WUlkZ2I5Rm13QU5Dd0doQ3lDQUVLSzFnaDJCdjBXYkFBRUxBUDBMQWhFTEFTMERBeEpUWTJOelluSmlZbkpnWUdCeGNXRndjaE56Y21OemMrQWhjZUFnY0hBZ2MzQnlFQ1RueVZHUXdHREc5Z2FhQlVBd0VNa2g3K1BDU3BnUmNGRXFYK2s0M1VadzBGSStDMEkvNDh4eVhJc1dnOFltc0RBMjNRdHlURE9NbkVBcmY2SzVMdWZ3UURnK2lQSy83bm5BVEVBQUVBa3dLSEF6d0RNUUFEQUJFQXNBSXZzZ0VCQ2l0WUlkZ2I5Rmt3TVFFaE55RURIdjExSGdLTEFvZXFBQUFCQUl3QUFBWWVCSTBBREFCWkFMQUFSVml3QVM4YnNRRWRQbG13QUVWWXNBZ3ZHN0VJSFQ1WnNBQkZXTEFMTHh1eEN4MCtXYkFBUlZpd0F5OGJzUU1QUGxtd0FFVllzQVl2RzdFR0R6NVpzZ0FCQXhFU09iSUZBUU1SRWpteUNnRURFUkk1TURFQkFUTUJJd01CSXdNekV3RXpBL0lCUU96K0pPVkEvcHptUitBVUFXZlJBUzREWC90ekF6Nzh3Z1NOL0tFRFh3QUJBSEFBQUFTNEJJNEFDQUF4QUxBQVJWaXdBeThic1FNZFBsbXdBRVZZc0Fjdkc3RUhIVDVac0FCRldMQUZMeHV4QlE4K1diSUJBd1VSRWprd01RRVhOd0VoQVNNRE53SGtCU01CcUFFRS9Zbnc0ZW9CT0VwVEEwejdjd1NOQVFBQkFEbi82d1JxQkkwQUVRQThzZzRTRXhFU09RQ3dBRVZZc0FBdkc3RUFIVDVac0FCRldMQUlMeHV4Q0IwK1diQUFSVml3QkM4YnNRUVBQbG15RFFFS0sxZ2gyQnYwV1RBeEFRTUdCQ2NtSmpjVE13TUdGaGNXTmpjVEJHcUFHLzdsMHNuZ0ZJSHNnZ3RiWjJ1T0VvTUVqZjBCd3VFRUJPVzFBd0Q4LzJWeUF3UnZhUU1IQUFFQVlnQUFCRm9FalFBSEFDNEFzQUJGV0xBR0x4dXhCaDArV2JBQVJWaXdBaThic1FJUFBsbXdCaEN5QUFFS0sxZ2gyQnYwV2JBRTBEQXhBU0VESXhNaE55RUVOLzZLcU8yby9vNGpBOVVEeWZ3M0E4bkVBQUFCQUE3LzdRUC9CSjhBSmdCdHNoRW5LQkVTT1FDd0FFVllzQWt2RzdFSkhUNVpzQUJGV0xBY0x4dXhIQTgrV2JJQ0hBa1JFam15REFrY0VSSTVzZ3dNQVYyd0NSQ3lFQUVLSzFnaDJCdjBXYkFDRUxJVkFRb3JXQ0hZRy9SWnNpQUpIQkVTT2JJRElBRmRzQndRc2lRQkNpdFlJZGdiOUZrd01RRTJMd0ltTnpZa0Z4WVdCeWMySmljaUJnY0dCQmNXQnc0Q0p5WW5KamNYQmhZek1qWUN1eEdQZGtmOURRa0JDNys4NEFMckEyZFVYWHNNRVFFOVJzUUtCMy9ZZ0o1eXBnVHNCVzF1WVhzQk9Xb3ZKQnBrMUp1OEFnWENvZ0ZXVmdGUVEyRmRKV2ZHYkpkUEF3SkhhTWdCWFdKTkFBQUNBQW9BQUFRV0JJMEFEUUFWQUY2eUFCWVhFUkk1c0EvUUFMQUFSVml3QkM4YnNRUWRQbG13QUVWWXNBSXZHN0VDRHo1WnNBQkZXTEFNTHh1eERBOCtXYklQQkFJUkVqbXdEeSt5QUFFS0sxZ2gyQnYwV2JJS0FBOFJFam13QkJDeUZRRUtLMWdoMkJ2MFdUQXhBU01ESXhNRkZoWUhCZ1VURlNNQkZ6WTJOelluSndJZjNrcnR5Z0dzeGRFS0QvOEF1ZnorcU1Ob2hnd1d1dHdCcWY1WEJJMEJCYmViOEdIK0tRMENhd0lDWUZXZkNRRUFBQUlBTi84d0JHQUVvd0FUQUNJQVJySURJeVFSRWptd0F4Q3dIOUFBc0FCRldMQU5MeHV4RFIwK1diQUFSVml3QlM4YnNRVVBQbG13RFJDeUZ3RUtLMWdoMkJ2MFdiQUZFTEllQVFvcldDSFlHL1JaTURFbEZ3Y25CaU1tSmdJM054SUFGeFlXRWdjSEFnTW1KaWNtQWdjVkZoWVhGalkzTmdNcXI2WGRPaWlSejE0UkF5QUJTZTJUejEwUkJ5NnlCMnhpbWI4S0JXeGlnTFFmRmt5ZWZzZ0hBcFVCQnA0YkFSRUJTd1lFa3Y3NW9Ucit2d0lDYjRBRUJ2Nzg1a2h4aGdRRnQ2cDNBQUlBQ2dBQUJEWUVqUUFLQUJNQVRiSUVGQlVSRWptd0JCQ3dETkFBc0FCRldMQURMeHV4QXgwK1diQUFSVml3QVM4YnNRRVBQbG15Q3dFREVSSTVzQXN2c2dBQkNpdFlJZGdiOUZtd0F4Q3lFZ0VLSzFnaDJCdjBXVEF4QVFNakV3VVdGZ2NHQkNNbkZ6STJOelltSnljQlBrZnR5Z0hJdk40TEN2N3QxOWZkYTR3TUMxeFkrQUdaL21jRWpRRUUwS1d2ek1VQllGVlNZUVFCQUFJQU92L3FCR01Fb1FBUUFDQUFSckllSVNJUkVqbXdIaEN3Q05BQXNBQkZXTEFKTHh1eENSMCtXYkFBUlZpd0FDOGJzUUFQUGxtd0NSQ3lGZ0VLSzFnaDJCdjBXYkFBRUxJZEFRb3JXQ0hZRy9SWk1ERUZKaVlDTnpjMkVqWVhGaFlTQndjQ0FCTTJKeVltSnlZQ0J4Y1dGaGNXTmpjQis1UFJYUkVKR0tYOG1KUE9YUkVESVA2NWZnWURCV3RpbXNBSkFRVnRZWWU0R1JBRWxRRURuVU9sQVFXTEJBU1MvdnVjSFA3cC9yY0NmajFBYm9JRUJ2NzY1VWh4aFFRRnpyOEFBUUFLQUFBRXFBU05BQWtBUlFDd0FFVllzQVV2RzdFRkhUNVpzQUJGV0xBSUx4dXhDQjArV2JBQVJWaXdBQzhic1FBUFBsbXdBRVZZc0FNdkc3RUREejVac2dJRkFCRVNPYklIQlFBUkVqa3dNU0VqQVFNakV6TUJFek1EM3VUK2lZenR5dVVCZDR6c0F5WDgyd1NOL05vREpnQUJBQW9BQUFYSUJJMEFEZ0Jnc2dFUEVCRVNPUUN3QUVWWXNBQXZHN0VBSFQ1WnNBQkZXTEFDTHh1eEFoMCtXYkFBUlZpd0JDOGJzUVFQUGxtd0FFVllzQWd2RzdFSUR6NVpzQUJGV0xBTUx4dXhEQTgrV2JJQkFBUVJFam15QndBRUVSSTVzZ29BQkJFU09UQXhBUk1CSVFNakV4TUJJd3NDSXhNQ0E3UUIxUUU4eSt3NWRQNGRwYjVOTmV6S0JJMzh0d05KKzNNQlNBSVgvS0VEZlAyeS90SUVqUUFBQVFBS0FBQUROQVNOQUFVQUtBQ3dBRVZZc0FRdkc3RUVIVDVac0FCRldMQUNMeHV4QWc4K1diSUFBUW9yV0NIWUcvUlpNREVsSVFjaEV6TUJHUUliSS96NXl1M0N3Z1NOQUFBQkFBb0FBQVNkQkkwQURBQkxBTEFBUlZpd0JDOGJzUVFkUGxtd0FFVllzQWd2RzdFSUhUNVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdDeThic1FzUFBsbXlCZ0lFRVJJNXNBWVFzQUhRc2dvQkJoRVNPVEF4QVFjREl4TXpBemNCSVFFQklRSFZwRHJ0eXUxWGZBR0FBVGY5NmdGUS92WUIyWXYrc2dTTi9ndCtBWGY5N1AySEFBQUIvL0wvNndPd0JJMEFEZ0F2c2dVUEVCRVNPUUN3QUVWWXNBQXZHN0VBSFQ1WnNBQkZXTEFGTHh1eEJROCtXYklMQVFvcldDSFlHL1JaTURFQk13TUdCaWNtSmpjWEJoY1dOamNDdysyR0dmZXR0Y1lHN1FtZlNtZ1BCSTM4NExQUEJBVERxZ0dyQkFKald3QUJBQmdBQUFIUEJJMEFBd0FkQUxBQVJWaXdBaThic1FJZFBsbXdBRVZZc0FBdkc3RUFEejVaTURFaEl4TXpBUVh0eSt3RWpRQUJBQW9BQUFTcEJJMEFDd0NHQUxBQVJWaXdCaThic1FZZFBsbXdBRVZZc0Fvdkc3RUtIVDVac0FCRldMQUFMeHV4QUE4K1diQUFSVml3QkM4YnNRUVBQbG15Q1FZQUVSSTVzQWt2dEs4SnZ3a0NYYkkvQ1FGeHNzOEpBWEd5UHdrQmNyTC9DUUZ4c2c4SkFYSzBid2wvQ1FKeHROOEo3d2tDWGJKZkNRRnl0QndKTEFrQ1hiSUNBUW9yV0NIWUcvUlpNREVoSXhNaEF5TVRNd01oRXpNRDMrMVMvZ1pUN2NydFZnSDdWdTBCMi80bEJJMytFUUh2QUFBQkFELy84QVJSQktNQUlBQmtzZ0loSWhFU09RQ3dBRVZZc0Fzdkc3RUxIVDVac0FCRldMQURMeHV4QXc4K1diSWZDd01SRWptd0h5K3dDeEN5RVFFS0sxZ2gyQnYwV2JJUEh4RVJFam15REE4QlhiQURFTElhQVFvcldDSFlHL1Jac0I4UXNoMEJDaXRZSWRnYjlGa3dNU1VHQlFjdUFqYzNFZ0FYRmhZWEp5WW5KZ1lIQndZWEZoWVhGamMzSXpjaEErZC8vdG82bGRSZ0VRWWZBVUh0d2QwUTVCSzloclViREFjRkNIUm1oMW9vOHlBQjNaS1VEUUVDa1ArZU53RVJBVHdHQk1tNEFid0dCYnVxV2tGQmJuc0RBanJJc1FBQkFBb0FBQVBtQkkwQUNRQkZBTEFBUlZpd0JDOGJzUVFkUGxtd0FFVllzQUl2RzdFQ0R6NVpzZ2tFQWhFU09iQUpMN0pLQ1FGZHNnQUJDaXRZSWRnYjlGbXdCQkN5QmdFS0sxZ2gyQnYwV1RBeEFTRURJeE1oQnlFRElRTXMvaDVUN2NvREVpUDkzRFFCNUFIYi9pVUVqY1QrMVFBQUFRQUtBQUFEK1FTTkFBc0FVd0N3QUVWWXNBWXZHN0VHSFQ1WnNBQkZXTEFFTHh1eEJBOCtXYklMQmdRUkVqbXdDeSt5U1FzQlhiSUFBUW9yV0NIWUcvUlpzQVFRc2dJQkNpdFlJZGdiOUZtd0JoQ3lDQUVLSzFnaDJCdjBXVEF4QVNFRElRY2hFeUVISVFNaEF6WCtHallDT3lQODJjb0RKU1A5eVM4QjZBSDQvc3JDQkkzRS92SUFBZ0FLQUFBRUdnU05BQW9BRmdCRHNnNFhHQkVTT2JBT0VMQUMwQUN3QUVWWXNBSXZHN0VDSFQ1WnNBQkZXTEFBTHh1eEFBOCtXYklOQVFvcldDSFlHL1Jac0FJUXNoWUJDaXRZSWRnYjlGa3dNVE1UQlI0Q0J3Y0dBQ0VUQXhjeU5qYzNOaWNtSmljS3lnRmlsK0ZzRUFVZC9xSCs5eCtHY0tuUEdBWUlCZ3A1YmdTTkFRU1AvWmtzL2Y3R0E4bjgrUUhCdFN4SFFHaHlCQUFBQVFBNS8rd0VTUVNqQUJ3QVRySVRIUjRSRWprQXNBQkZXTEFMTHh1eEN4MCtXYkFBUlZpd0F5OGJzUU1QUGxteUFBc0RFUkk1c2c0TEF4RVNPYkFMRUxJU0FRb3JXQ0hZRy9SWnNBTVFzaG9CQ2l0WUlkZ2I5Rmt3TVFFR0JDY3VBamMzRWdBWEZoWVhKeVltSnlZR0J3WVhGQllYRmpjRC9CeiszOVNReVZrU0JpQUJRZW5DNGdyckEyQnJoYkFhRUFGa1llTTRBWVc5M0FRQ2tQK2ZOQUVPQVVFR0JOMjlBV2R3QkFYQXRJay9jSDhFQ05vQUFBTUFDZ0FBQkFBRWpRQU9BQllBSGdDc3NoZ2ZJQkVTT2JBWUVMQUMwTEFZRUxBVzBBQ3dBRVZZc0FFdkc3RUJIVDVac0FCRldMQUFMeHV4QUE4K1diSVlBQUVSRWptd0dDK3l2eGdCY3JTdkdMOFlBbDIwYnhoL0dBSnhzdjhZQVhHeUR4Z0JjclNQR0o4WUFuS3lYeGdCY3JMUEdBRnhzajhZQVhHMEh4Z3ZHQUpkc25rWUFWMnlTUmdCWGJJV0FRb3JXQ0hZRy9SWnNnZ1dHQkVTT2JBQUVMSVJBUW9yV0NIWUcvUlpzQUVRc2g0QkNpdFlJZGdiOUZrd01UTVRCUVFYRmdjR0J4WVdCd1lHSXdNREZ6WTJOelluSnhjMk5qYzJKeWNLeWdHVUFTWlVIZ1lLejB0VUJBajMzcEEyejJWNkRCYW0xOEZmY2d3VXNzMEVqUUVJcERsVHJGY2FpRm1rc2dINy9zY0JBMUpKa2dtckFRTlBSWWdGQVFBQy81c0FBQVFGQkkwQUJ3QUtBRVlBc0FCRldMQUVMeHV4QkIwK1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNBWXZHN0VHRHo1WnNna0VBaEVTT2JBSkw3SUFBUW9yV0NIWUcvUlpzZ29FQWhFU09UQXhKU0VISXdFekV5TUJJUU1DN3Y0dWlQa0NrOXI5NXY1aUFVaFgrZmtFamZ0ekFiSUJ1QUFBQVFEckJHa0NOZ1l0QUFjQUZnQ3dBRVZZc0FBdkc3RUFJVDVac0FUUXNBUXZNREVCRndZSEJ5TTNOZ0cxZ1ZFV0ZzNFJId1l0VjMxMmVuZlhBQUFDQVFRRTBRTjZCbjRBQ3dBUEFGb0FzQU12c0FiUXNBWXZRQXNQQmg4R0x3WS9CazhHQlYyd0FOQ3dBQyt3QXhDeUNRWUtLMWdoMkJ2MFdiQUdFTEFQMExBUEw3QU0wTEFNTDBBUER3d2ZEQzhNUHd4UERGOE1id3dIWGJBUEVMQU8wQm13RGk4WU1ERUJCZ1luSmlZbkZ3WVhGamNsTXhjakEzb0l0WXlMb0FLcUJJQ0dHLzdSb2s1dEJiRm9lQU1EZUdRQ2J3SUNjODNBQUFBQ0FOd0U1d1V0QnBBQUJnQUtBRnNBc0FNdnNBWFFzQVV2c0FEUXNBQXZRQWtQQUI4QUx3QS9BQVJkc0FNUXNBTFFHYkFDTHhpeUJBTUFFUkk1c0FiUUdiQUdMeGl3QXhDd0NkQ3dDUyt3QjlDd0J5KzJEd2NmQnk4SEExMndDUkN3Q3RBWnNBb3ZHREF4QVRNWEl5Y0hJd0VYQVNNQ0lwM3d1WUt5NWdOcDZQOEFxZ1hoK28yTkFha0IvdllBQWdBVEJOb0RxQWFEQUFZQUNnQmJBTEFETDdBRTBCbXdCQzhZc0FEUUdiQUFMeGl3QXhDd0FkQ3dBUyt3QnRDd0JpOUFDUThHSHdZdkJqOEdCRjJ5QWdNR0VSSTVzQU1Rc0FqUXNBZ3ZzQWZRR2JBSEx4aXdDQkN3Q3RDd0NpKzJEd29mQ2k4S0ExMHdNUUVqSndjakpUTUZJd016QTZpN2diTGxBVWFkL29lS29zY0UybzJOK2x3QkN3QUNBTmdFNXdTVUJzc0FCZ0FWQUdnQXNBTXZzQVRRR2JBRUx4aXdBTkFac0FBdkdMQURFTEFCMExBQkw3QURFTEFGMExBRkwwQUpEd1VmQlM4RlB3VUVYYklDQXdVUkVqbXdBeEN3QjlDd0J5K3dEdEN3RGkreVB3NEJYYklJQnc0UkVqbXlEd1lLSzFnaDJCdjBXYklVQ0FjUkVqa3dNUUVqSndjbkpUTVhOemMyTnpZbkp6Y1dGZ2NHQndjRHFxZVJ5ZEVCT2Jhb0N5SmFCd2ROS2c5M2dRRURpQWtFNTZHaEFmbDBmUU1LTXk4R0Ftb0RVMGhyR1QwQUFBSUExd1RuQTZrRzBBQUdBQm9BamdDd0F5K3dCTkFac0FRdkdMQUEwQm13QUM4WXNBTVFzQUhRc0FFdnNBTVFzQVhRc0FVdlFBa1BCUjhGTHdVL0JRUmRzZ0lEQlJFU09iQUswTEFLTDBBSlB3cFBDbDhLYndvRVhiQU8wTEFPTDBBTkR3NGZEaThPUHc1UERsOE9CbDJ3Q2hDd0VOQ3dFQyt3RGhDeUZBWUtLMWdoMkJ2MFdiQUtFTElZQmdvcldDSFlHL1Jac0JRUXNCclFNREVCSXljSEl5VXpOd1lHSXlJbUpnY0dCeWMyTmpNeUZoWTNOamNEcWFXVnhkTUJTNC9tQ1ZVN0kyNGtFak1nV2dwVFBDRnpJUkk1SEFUbmpZM3QzMFJiUFFrQ0EwTVlTRm8rQ0FFRVJRQUFBZ0VFQk5BRGVnWitBQXdBRUFCYUFMQURMN0FHMExBR0wwQUxEd1lmQmk4R1B3WlBCZ1Zkc0FEUXNBQXZzQU1Rc2drR0NpdFlJZGdiOUZtd0JoQ3dEOUN3RHkrd0RkQ3dEUzlBRHc4Tkh3MHZEVDhOVHcxZkRXOE5CMTJ3RHhDd0VOQVpzQkF2R0RBeEFRWUdKeVltSnhjR0Z4WTJOeWNYQnlNRGVnaTFqSXVnQXFvRWdEcFpEa0REeG84RnNHaDRBd040WkFKdkFnRTNPODRCdmdBQ0FRVUUwZ051QndnQURBQWJBRjBBc0FNdnNBYlFzQVl2UUFzUEJoOEdMd1kvQms4R0JWMndBTkN3QUMrd0F4Q3lDUVlLSzFnaDJCdjBXYkFHRUxBYjBMQWJMN0FVMExBVUw3US9GRThVQWwyeURoc1VFUkk1c2hVTUNpdFlJZGdiOUZteUdnNGJFUkk1TURFQkJnWW5KaVluRndZWEZqWTNKemMzTmpjMkp5YzNGeFlWQmdjSEEyNEpzWWlEb2dLbUJINDZXQTdRQ2pCWENRbGZLZzFJMkFPWENRV3hhM1FDQW5abUFtd0NBVFU2R1hZQ0JqQXJCQUZoQkJONFhSZzhBQUlCQkFUTkE0SUcyd0FMQUNBQWRnQ3dBeSt3QnRDd0JpOUFDdzhHSHdZdkJqOEdUd1lGWGJBQTBMQUFMN0FERUxJSkJnb3JXQ0hZRy9SWnNBQVFzQkRRc0JBdnNCUFFzQk12UUFzUEV4OFRMeE0vRTA4VEJWMndFQkN3RmRDd0ZTK3dFeEN5R1FnS0sxZ2gyQnYwV2JBUUVMSWVDQW9yV0NIWUcvUlpzQmtRc0NEUU1ERUJCZ1luSmlZbkZ3WVhGamNUQmdjR0J5SW1Cd1lISnpZMk16SVdGeFkzTmpjRGNRaXlpNFdoQXFnRWZZVWJ2UW9zTGtZb2lTZzdIMllKWGtZV0p5OUdLRHdmQmJCcmVBSUNlMllDYmdJQ2NnRVJWREl6QWs0REExUWJVR3NOR2ljREExTUFBQUgvcEFBQUJJQUVqUUFMQUZNQXNBQkZXTEFCTHh1eEFSMCtXYkFBUlZpd0NpOGJzUW9kUGxtd0FFVllzQVF2RzdFRUR6NVpzQUJGV0xBSEx4dXhCdzgrV2JJQUFRUVJFam15QmdFRUVSSTVzZ01BQmhFU09iSUpCZ0FSRWprd01RRUJJUUVCSVFNQklRRUJJUUlyQVRFQkpQNGxBUlgrOTdEK3gvN2NBZWIrL0FFRUF2c0JrdjJ5L2NFQm1QNW9BbGNDTmdBQkFHMEFBQVNBQkkwQUNBQXhBTEFBUlZpd0FTOGJzUUVkUGxtd0FFVllzQWN2RzdFSEhUNVpzQUJGV0xBRUx4dXhCQTgrV2JJQUFRUVJFamt3TVFFQklRRURJeE1CTXdJTUFXSUJFdjNjUk94TC92YjNBbndDRWZ6Ni9ua0JyZ0xmQUFFQU9mL3NCRWtFb3dBZUFJU3lIQjhnRVJJNUFMQUFSVml3Q3k4YnNRc2RQbG13QUVWWXNBTXZHN0VERHo1WnNnQUxBeEVTT2JJT0N3TVJFam13Q3hDeUVnRUtLMWdoMkJ2MFdiSVZDd01SRWpsOHNCVXZHTEx3RlFGZHNnQVZBWEcwTUJWQUZRSmR0SUFWa0JVQ2NiUmdGWEFWQWwyeUZnRUtLMWdoMkJ2MFdiQURFTEljQVFvcldDSFlHL1JaTURFQkJnUW5MZ0kzTnhJQUZ4WVdGeWNtSmljbUF5RUhJUVlYRmhZWEZqY0QvQnorMzlTUXlWa1NCaUFCUWVyQjRncnJBMkJyN1Z3QmZTTCtrZ1lGQjJWWDR6a0JoYjNjQkFLUS81ODBBUTRCUVFZRTNiMEJaM0FFQi83SHhEZzJXMmdEQ05vQUFBRUFZdi9yQlEwRWpRQVhBR3V5QlJnWkVSSTVBTEFBUlZpd0FpOGJzUUlkUGxtd0FFVllzQll2RzdFV0R6NVpzQUJGV0xBT0x4dXhEZzgrV2JBQ0VMSUFBUW9yV0NIWUcvUlpzQVRRc0FYUXNnZ0NGaEVTT2JBSUw3QU9FTElQQndvcldDSFlHL1Jac0FnUXNoTUJDaXRZSWRnYjlGa3dNUUVoTnlFSElRYzJGeFlXQndZRUJ6YzJOelluSmdjREl3R3kvckFqQTVJai9xd3loSWpBMHd3Ty92YnlGUEFaR3M1bm4yUHRBOG5FeE84cEF3TFZ1YnpIQXIwRndjb0dBeWY5NWdBQkFGVUFBQVJpQmJBQUJnQXlBTEFBUlZpd0JTOGJzUVVmUGxtd0FFVllzQUV2RzdFQkR6NVpzQVVRc2dNQkNpdFlJZGdiOUZteUFBTUZFUkk1TURFQkFTTUJJVGNoQkVqOUIvb0M5LzFlSWdPV0JSejY1QVR0d3dBQ0FDcitVQVJNQkZFQUhBQXFBSHl5QkNzc0VSSTVzQVFRc0NmUUFMQUFSVml3Qnk4YnNRY2JQbG13QUVWWXNBUXZHN0VFR3o1WnNBQkZXTEFNTHh1eERCRStXYkFBUlZpd0ZpOGJzUllQUGxteUJnY1dFUkk1c0F3UXNoRUJDaXRZSWRnYjlGbXlGQWNXRVJJNXNCWVFzaUlCQ2l0WUlkZ2I5Rm13QkJDeUp3RUtLMWdoMkJ2MFdUQXhFellTTmhjV0Z6Y3pBd1lBSnlZbk54WVhCQk0zQmljdUFpY21OeGNHRnhZV0Z4WTNFeVluSmdZSFJCT1UxNEcyV2lyUHFpTCsxK1N1bTBKempBRUZTZ2Qrb0dXZFhBWUVCdTRHQkFWaVZZcGtWVFNHZnF3WEFoK2pBUXlEQXdTRGMvd1o4Zjd1QkFSWnNrMENCd0U4RzN3RUFXakRkajg5QVRVN1ozMERCWVVCMjNjRUE4YW1BQUFCL3dmK1JnRS9BTTBBREFBc0FMQU5MN0FBUlZpd0JDOGJzUVFSUGxteUNRRUtLMWdoMkJ2MFdiQU5FTElNQlFvcldDSFlHL1JaTURFbEF3WUdKeVluTnhZek1qY1RBVDhxR05DaVJFQWlPU1orSUN2Ti92UzB4d0lDRXNVUHJ3RU1BQUgvc3Y2YUFQNEF0UUFEQUJJQXNBUXZzQUxRc0FJdnNBSFFzQUV2TURFVEl4TXpvTzVlN3Y2YUFodi8vLy9XQUFBRUp3WWpBaVlFcVFBQUFRWUJhRXNlQUJNQXNBQkZXTEFITHh1eEJ4MCtXYkFQM0RBeEFBQUMvOEgvL3diRUJJMEFHQUFoQUd1eUJTSWpFUkk1c0FVUXNCclFBTEFBUlZpd0V5OGJzUk1kUGxtd0FFVllzQU12RzdFRER6NVpzQUJGV0xBTEx4dXhDdzgrV2JBVEVMSUZBUW9yV0NIWUcvUlpzaFlUQXhFU09iQVdMN0FERUxJYkFRb3JXQ0hZRy9SWnNCWVFzaUVCQ2l0WUlkZ2I5Rmt3TVFFR0JDTWhFeUVEQndJR0p5TTNOelkyTnpjVElRTVhGaFlsQXhjMk5qYzJKaWNHdVF2KzdkcitIcW4rc0VRWk8rZTZQaGdpWm53ZkQyZ0RKRWJIeHViOWEwSGNabzhOQzFoWkFZZXYyQVBKL3JaLy91enRBY3dCQnFUQVhBSDYvbXdCQWNvSS9vNEJBbXRhVEZvRkFBQUNBQW9BQUFiSEJJMEFFZ0FiQUlHeUFod2RFUkk1c0FJUXNCVFFBTEFBUlZpd0FpOGJzUUlkUGxtd0FFVllzQkV2RzdFUkhUNVpzQUJGV0xBTEx4dXhDdzgrV2JBQVJWaXdEeThic1E4UFBsbXlBUUlMRVJJNXNBRXZzQUlRc1JzS0sxallHOXhac2dVQkNpdFlJZGdiOUZtd0FSQ3lEUUVLSzFnaDJCdjBXYkFMRUxJVkFRb3JXQ0hZRy9SWk1ERUJJUk16QXhjV0ZnY0dCQ01oRXlFREl4TXpBUU1YTmpZM05pWW5BV3NCN0ZidVI4bkY1UXNML3UzWS9oMVQvaFJUN2NydEFuSkIzR2lORFF0WVdRS2VBZS8rYkFFQnlxYXYyQUhiL2lVRWpmMm8vbzRCQW10YVRGb0ZBQUVBWWdBQUJRNEVqUUFXQUZxeUJSY1lFUkk1QUxBQVJWaXdBaThic1FJZFBsbXdBRVZZc0F3dkc3RU1EejVac0FCRldMQVZMeHV4RlE4K1diQUNFTElBQVFvcldDSFlHL1Jac0FUUXNBWFFzZ2dDREJFU09iQUlMN0lTQVFvcldDSFlHL1JaTURFQklUY2hCeUVITmhjV0ZnY0RJeE0ySnlZbkpnY0RJd0d5L3JBakE1SWovcXd5Z1lySnpCUTQ3VGtHQlJPYmJKdGo3UVBKeE1UdUp3SUU0TUwrcGdGYk5DbC9CZ01tL2VZQUFRQUsvcDhFb3dTTkFBc0FUN0lEREEwUkVqa0FzQUl2c0FCRldMQUdMeHV4QmgwK1diQUFSVml3Q2k4YnNRb2RQbG13QUVWWXNBQXZHN0VBRHo1WnNBQkZXTEFFTHh1eEJBOCtXYklJQVFvcldDSFlHL1Jac0FuUU1ERWhJUU1qRXlFVE13TWhFek1EMlA2V1B1MCsvb25LN2FnQjlLanUvcDhCWVFTTi9EWUR5Z0FBQWdBTC8vd0Q5d1NOQUEwQUZnQmVzaFFYR0JFU09iQVVFTEFKMEFDd0FFVllzQXd2RzdFTUhUNVpzQUJGV0xBTEx4dXhDdzgrV2JBTUVMSUFBUW9yV0NIWUcvUlpzZ01NQ3hFU09iQURMN0FMRUxJT0FRb3JXQ0hZRy9SWnNBTVFzaFFCQ2l0WUlkZ2I5Rmt3TVFFaEJ4Y1dGZ2NPQWljbEV5RUJOalkzTkNZbkp3TUQxZjNKSi9uQXhSVVFrdWVGL2puTEF5SCtHV2g4QW1sYzNENER5K0FCQmNPaWQ3RmNBd0VFamZ3MUFtWlhURmNDQWY2Y0FBTC9nLzZ2Qk1BRWpRQU9BQlFBVnJJU0ZSWVJFam13RWhDd0NkQUFzQUJGV0xBRUx4dXhCQjArV2JBQVJWaXdDaThic1FvUFBsbXlBQUVLSzFnaDJCdjBXYkVNQ2l0WTJCdmNXYkFJMExJUEJBb1JFam13QkJDeUVRRUtLMWdoMkJ2MFdUQXhOelkyTnhNaEF6TURJeE1oQXlNVEJTVVRJUU1DTVcrREpGSURKNm1TWE8wNy9SQTc3VjBCWndIamh2NnVRRUhBWmYzRkFhYjhOdjNzQVZIK3J3SVRBd1FEQnY2NC90d0FBQUgvcVFBQUJqc0VqUUFWQUo2eUFSWVhFUkk1QUxBQVJWaXdFUzhic1JFZFBsbXdBRVZZc0E0dkc3RU9IVDVac0FCRldMQUtMeHV4Q2gwK1diQUFSVml3Qmk4YnNRWVBQbG13QUVWWXNBTXZHN0VERHo1WnNBQkZXTEFWTHh1eEZROCtXYklNQXc0UkVqbXdEQyt5UHd3QmNiSmZEQUZ5c3M4TUFYRzByd3kvREFKZHRJOE1ud3dDY3JBUDBMSUJBUW9yV0NIWUcvUlpzQVRRc2dnUEJCRVNPYklUQVE4UkVqa3dNUUVqQXlNVEl3RWhBUU1oRXpNVE13TXpBU0VCRXlFRHltWlI3VkpWL3JyK3pBSER5d0VKbkZkVDdsUkpBVVFCSlA1aDV2N3VBZFgrS3dIVi9pc0NZUUlzL2lBQjRQNGdBZUQ5dy8yd0FBQUJBQXovN2dQdkJLQUFKZ0JCc2lBbktCRVNPUUN3QUMrd0FFVllzQmd2RzdFWUR6NVpzZ2tBR0JFU09iSU1BQmdSRWpteUh3RUtLMWdoMkJ2MFdiQUFFTElrQndvcldDSFlHL1JaTURFQk1qWTNOaVlpQmdjSE5qWVhGaFlIQmdjV0ZnY09BaWNtSmpjekZoWXpGalkzTmljbk53SUZab0FLQ21Xd2FnL3VEUDNDdzk0SUN1bFJXZ1FGZk95THVkNEU2Z0pjVm1xUURCWGNoeUFDcWxOTlJFeEZQZ0dZc2dJRHBvMjFaU09HV1dxZFZ3SUN1WnhIVEFOWlQ2QUJBYkFBQUFFQUN3QUFCSzRFalFBSkFFeXlBQW9MRVJJNUFMQUFSVml3QUM4YnNRQWRQbG13QUVWWXNBZ3ZHN0VJSFQ1WnNBQkZXTEFGTHh1eEJROCtXYkFBUlZpd0F5OGJzUU1QUGxteUJBTUFFUkk1c2drRkNCRVNPVEF4QVRNREl4TUJJeE16QXdQTDQ4dnFqLzFtNDh2cWp3U04rM01ETWZ6UEJJMzgwZ0FCQUFvQUFBUnRCSTBBREFCM3NnQU5EaEVTT1FDd0FFVllzQWd2RzdFSUhUNVpzQUJGV0xBRkx4dXhCUjArV2JBQVJWaXdBaThic1FJUFBsbXdBRVZZc0F3dkc3RU1EejVac2dZQ0JSRVNPYkFHTDdJL0JnRnhzbDhHQVhLeXp3WUJjYlN2QnI4R0FsMjBqd2FmQmdKeXNnRUJDaXRZSWRnYjlGbXlDZ0VHRVJJNU1ERUJJd01qRXpNRE13RWhBUUVoQWJadFV1M0s3VlJYQVlNQkp2NFFBVFArNlFIVi9pc0VqZjRnQWVEOXVmMjZBQUFCLzhFQUFBU1hCSTBBRVFBL3NnUVNFeEVTT1FDd0FFVllzQUF2RzdFQUhUNVpzQUJGV0xBQkx4dXhBUTgrV2JBQVJWaXdDUzhic1FrUFBsbXdBQkN5QXdFS0sxZ2gyQnYwV1RBeEFRTWpFeUVEQndJR0J5TTNOelkyTnpjVEJKZks3cW4rc1VZWlBPSzBSeGdrWjNzY0Qya0VqZnR6QThuK3RuMys3ZTBDekFNS3FiaFpBZm9BQVFCeS8rZ0VnZ1NPQUE4QVRySUJFQkVSRWprQXNBY3ZzQUJGV0xBUEx4dXhEeDArV2JBQVJWaXdDQzhic1FnUFBsbXlBUThJRVJJNXNnSVBDQkVTT2JBQ0w3QUlFTEVLQ2l0WTJCdmNXYklPRHdnUkVqbXdEaTh3TVFFWEFTRUJCZ1lqSnpjWE5qWTNBemNDRUFjQlhBRVAvZDFjc25SckVWSTZUaVA2OVFKS09BSjcvSFNqZGdYRUJnRTZLd044QVFBQkFBcityd1M0QkkwQUN3QkNzZ2tNRFJFU09RQ3dBeSt3QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFLTHh1eENoMCtXYkFBUlZpd0JTOGJzUVVQUGxteUNBRUtLMWdoMkJ2MFdiQUEwREF4SlRNREl4TWhFek1ESVJNekEvdTljTmc3L0YvSzdhZ0I5S2p2dy8zc0FWRUVqZncyQThvQUFRQmRBQUFFWkFTTkFCSUFScklPRXhRUkVqa0FzQUJGV0xBSUx4dXhDQjArV2JBQVJWaXdFUzhic1JFZFBsbXdBRVZZc0FBdkc3RUFEejVac2c0SUFCRVNPYkFPTDdJRUFRb3JXQ0hZRy9SWk1ERWhJeE1HSnlZbU54TXpBd1lYRmhjV054TXpBNXJ1VW45LzBOTVZPTzQ2QmdZVG0yK1laTzBCcXljQ0F1REVBV0grbmpRcGdBTURKUUlnQUFFQUNnQUFCa01FalFBTEFFR3lCd3dORVJJNUFMQUFSVml3QXk4YnNRTWRQbG13QUVWWXNBRXZHN0VCRHo1WnNnUUJDaXRZSWRnYjlGbXdBeEN3QnRDd0JCQ3dDTkN3QmhDd0N0QXdNU0VoRXpNRElSTXpBeUVUTXdWNCtwTEs3YWdCVTZqdXFRRlVxTzRFamZ3MkE4cjhOZ1BLQUFBQkFBcityd1pZQkkwQUR3QkJzZ3NRRVJFU09RQ3dBeSt3QUVWWXNBY3ZHN0VISFQ1WnNBQkZXTEFFTHh1eEJBOCtXYklBQVFvcldDSFlHL1Jac0EzUXNBblFzQWNRc0FyUXNBN1FNREVsTXdNakV5RVRNd01oRXpNRElSTXpCWnU5Y05nNytyL0s3YWdCVTZqdXFRRlVxTy9EL2V3QlVRU04vRFlEeXZ3MkE4b0FBZ0JLLy9zRTR3U05BQXdBRlFCZXNnc1dGeEVTT2JBTEVMQVUwQUN3QUVWWXNBb3ZHN0VLSFQ1WnNBQkZXTEFITHh1eEJ3OCtXYklBQ2djUkVqbXdBQyt3Q2hDeUNBRUtLMWdoMkJ2MFdiQUhFTElOQVFvcldDSFlHL1Jac0FBUXNoTUJDaXRZSWRnYjlGa3dNUUVXRmdjR0JDY2xFeUUzSVFNVE5qWTNOaVluSndNRFhydktGaGorMWN6K09LaityQ01DUGthWFpYOENBbTFZMjBFQytBWEtvclBaQkFFRHljVCtiUDNKQW10WlRsd0NBZjZPLy84QUMvLzdCZUVFalFBbUJCRUFBQUFIQStRRUVnQUFBQUlBQy8vN0EvY0VqUUFLQUJNQVQ3SVJGQlVSRWptd0VSQ3dBTkFBc0FCRldMQUlMeHV4Q0IwK1diQUFSVml3Qnk4YnNRY1BQbG13Q0JDeEVRb3JXTmdiM0ZteUFBRUtLMWdoMkJ2MFdiQUhFTElMQVFvcldDSFlHL1JaTURFQkZoWUhCZ1FuSlJNekF4TTJOamMySmljbkF3Snl1OG9XR1A3VnkvNDR5K3BIbDJPQ0FnSnNXdHRCQXZnRnlhT3oyUVFCQkkzK2JQM0pBbXRaVFYwQ0FmNk9BQUVBRS8vcUJCNEVvUUFkQUlHeUN4NGZFUkk1QUxBQVJWaXdFaThic1JJZFBsbXdBRVZZc0Jvdkc3RWFEejVac2dBYUVoRVNPYklEQVFvcldDSFlHL1Jac2dnU0doRVNPWHl3Q0M4WXRHQUljQWdDWGJRd0NFQUlBbDJ5OEFnQlhiSUFDQUZ4dElBSWtBZ0NjYklGQVFvcldDSFlHL1Jac0JJUXNnc0JDaXRZSWRnYjlGbXlEeElhRVJJNU1ERVRGaFlYRmhNaE55RTJKaWNtQmdjSE5pUVhGaElQQWdJQUp5WW1KLzBGWld6dVZ2NkNJd0Z1RFdsdGNZd2E3aUFCSU5ESzZBZ0VCaUgrdytmRDZRZ0JoV3BuQXdjQk84U1BvQU1FYzJvQnZ1SUVBLzdyNHpjei92RCt3Z1lFMkxrQUFBSUFDdi9yQmlJRW9nQVdBQ01BbHJJQkpDVVJFam13QVJDd0g5QUFzQUJGV0xBT0x4dXhEaDArV2JBQVJWaXdDUzhic1FrZFBsbXdBRVZZc0FZdkc3RUdEejVac0FCRldMQUFMeHV4QUE4K1diSUtCZ2tSRWpsOHNBb3ZHTFJnQ25BS0FsMnk4QW9CWGJJQUNnRnh0REFLUUFvQ1hiU0FDcEFLQW5HeUJRRUtLMWdoMkJ2MFdiQU9FTElhQVFvcldDSFlHL1Jac0FBUXNpQUJDaXRZSWRnYjlGa3dNUVV1QWpjSEF5TVRNd016TmdBWEZoWVNCd2NHQWdRVE5DWW5KZ0lIQmhZWEZoSTNBN3FIejJjTHZsVHN5dXhWckVVQk5kS1V6bDBSQkJXZy92L1RhMm1keEFJRGEyeWJ2d2dSQklQa2lRSCtIZ1NOL2hqMEFRa0ZCSlArL1o0a3N2N3dsQUxTaUpBRUJ2N3Y5NGFiQkFZQkRPNEFBQUwvMGdBQUJGWUVqZ0FOQUJZQVliSVJGeGdSRWptd0VSQ3dETkFBc0FCRldMQUhMeHV4QngwK1diQUFSVml3QUM4YnNRQVBQbG13QUVWWXNBa3ZHN0VKRHo1WnNoSUhBQkVTT2JBU0w3SUxBUW9yV0NIWUcvUlpzZ0VMRWhFU09iQUhFTElUQVFvcldDSFlHL1JaTURFakFTWW1OellrTXdVREl4TWpBUk1HRmhjWEV5Y2lCaTRCY2xKU0Jna0JCODhCMGNydVR1TCsxTEVMVlZIak9zbGZnd0lQSzVGZXA3NEIrM01CdlA1RUF4dEtUd0lCQVVvQld3QUFBZi8xQUFBRVJBU05BQTBBVUxJQkRnOFJFamtBc0FCRldMQUlMeHV4Q0IwK1diQUFSVml3QWk4YnNRSVBQbG15QndJSUVSSTVzQWN2c2dRSENpdFlJZGdiOUZtd0FkQ3dDQkN5Q3dFS0sxZ2gyQnYwV2JBSEVMQU0wREF4QVNNREl4TWpOek1USVFjaEF6TUNnTTlWN1ZUT0hzMVpBd3NqL2VNMjBBSG0vaG9CNXFvQi9jVCt4d0FBQWYrcC9xOEdPd1NOQUJrQXFySUlHaHNSRWprQXNBTXZzQUJGV0xBUkx4dXhFUjArV2JBQVJWaXdCUzhic1FVUFBsbXdBRVZZc0Frdkc3RUpEejVac0FCRldMQU5MeHV4RFE4K1diSVhDUkVSRWptd0Z5K3lQeGNCY2JKZkZ3RnlzczhYQVhHMHJ4ZS9Gd0pkdEk4WG54Y0NjcklIQVFvcldDSFlHL1Jac2dBSEZ4RVNPYkFGRUxJQkFRb3JXQ0hZRy9SWnNBY1FzQXZRc2c4WEJ4RVNPYkFYRUxBUzBMQVJFTEFVMExBVUw3QVkwTEFZTHpBeEFSTXpBeU1USXdNakF5TVRJd0VoQVFNaEV6TVRNd016QVNFRW5KdkFYY3M3bjZWaFV1MVNWZjY2L3N3Qnc4c0JDWnhYVSs1VVNRRkVBU1FDVVA1eS9lMEJVUUhWL2lzQjFmNHJBbUVDTFA0Z0FlRCtJQUhnQUFBQkFBcityd1J0QkkwQUVBQ0lzZ0FSRWhFU09RQ3dCQyt3QUVWWXNBd3ZHN0VNSFQ1WnNBQkZXTEFQTHh1eER4MCtXYkFBUlZpd0NTOGJzUWtQUGxtd0FFVllzQVl2RzdFR0R6NVpzZzBKREJFU09iQU5MN0kvRFFGeHNsOE5BWEt5encwQmNiU3ZEYjhOQWwyMGp3MmZEUUp5c2dnQkNpdFlJZGdiOUZteUFBZ05FUkk1c0FZUXNnRUJDaXRZSWRnYjlGa3dNUUVUTXdNakV5TURJd01qRXpNRE13RWhBbjNOeTEzTE80L2piVkx0eXUxVVZ3R0RBU1lDUnY1OC9lMEJVUUhWL2lzRWpmNGdBZUFBQUFFQUNnQUFCU1FFalFBVUFJQ3lCUlVXRVJJNUFMQUFSVml3RkM4YnNSUWRQbG13QUVWWXNBWXZHN0VHSFQ1WnNBQkZXTEFSTHh1eEVROCtXYkFBUlZpd0NpOGJzUW9QUGxteUFCRVVFUkk1c0FBdnNqOEFBWEd5WHdBQmNyTFBBQUZ4dEs4QXZ3QUNYYlNQQUo4QUFuS3dCTkN3QUJDeUVBRUtLMWdoMkJ2MFdiQU0wTElJREFBUkVqa3dNUUV6TnpNSE53RWhBUUVoQXljSEl6Y2pBeU1UTXdGcFJDdWdMaklCZ3dFbC9oQUJOUDdxNGo4cG9DbEVWdTNLNWdLcjRPQUJBZUg5dVAyN0FkVUJ6TTMrS1FTTkFBRUFZZ0FBQlhJRWpRQU9BSVd5Q1E4UUVSSTVBTEFBUlZpd0J5OGJzUWNkUGxtd0FFVllzQW92RzdFS0hUNVpzQUJGV0xBQ0x4dXhBZzgrV2JBQVJWaXdEaThic1E0UFBsbXlDQUlIRVJJNXNBZ3ZzajhJQVhHeVh3Z0JjckxQQ0FGeHRLOEl2d2dDWGJTUENKOElBbkt5QVFFS0sxZ2gyQnYwV2JBSEVMSUVBUW9yV0NIWUcvUlpzZ3dCQ0JFU09UQXhBU01ESXhNaE55RURNd0VGQVFFaEFyeHRVdTJvL3FvakFrSlVWd0dDQVNiK0VRRXovdWtCMWY0ckE4ckQvaUFCNEFIOXVmMjdBQUFDQUVELzZnVjVCS2tBSkFBdkFJS3lBekF4RVJJNXNBTVFzQy9RQUxBQVJWaXdDeThic1FzZFBsbXdBRVZZc0Jzdkc3RWJIVDVac0FCRldMQUVMeHV4QkE4K1diQUEwTElDQkJzUkVqbXdBaSt3Q3hDeURBRUtLMWdoMkJ2MFdiQUVFTElUQVFvcldDSFlHL1Jac0FBUXNpUUJDaXRZSWRnYjlGbXdBaEN3SjlDd0d4Q3lMQUVLSzFnaDJCdjBXVEF4QlNZbkJpY2tBQk0zRWdBM0J3WUdCd2NHRmhjM0ppWTNOellTRnhZV0Z4WUhCZ2NXTXdFV0Z6WTNOelluSmdNR0JSemJuYUtZL3ZYKzRSc0RIQUV1NXhaNG14b0dGWjZrUDBndkRBVWUrN21kc1FrRUVTUEhaMGo5K2dOL3RDQU5ESWU2SndrU0J6TStBZ0lCUndFVEhnRUlBVFVFelFLenJpdkMwQUlEYWVGK0p2RUJEd1VFeWExUGVQbXhCd0ZsczF4KzhvN1FCUWIrekdFQS8vOEFiUUFBQklBRWpRQW1BL2NBQUFBSEE5VUFCZjdWQUFIL3BQNnZCSUFFalFBUEFGcXlDaEFSRVJJNUFMQUhMN0FBUlZpd0FTOGJzUUVkUGxtd0FFVllzQTh2RzdFUEhUNVpzQUJGV0xBTEx4dXhDdzgrV2JBQVJWaXdDUzhic1FrUFBsbXlBQThMRVJJNXNnUUJDaXRZSWRnYjlGbXlDZ3NQRVJJNU1ERUJBU0VCRXpNREl4TWpBd0VoQVFFaEFpc0JNUUVrL2lXNHhsekxPNGF3L3NmKzNBSG0vdndCQkFMN0FaTDlzdjZEL2UwQlVRR1kvbWdDVndJMkFBQUJBR0wrcndXNkJJMEFEd0Jjc2drUUVSRVNPUUN3QWkrd0FFVllzQWd2RzdFSUhUNVpzQUJGV0xBT0x4dXhEaDArV2JBQVJWaXdCQzhic1FRUFBsbXlBQUVLSzFnaDJCdjBXYkFJRUxJR0FRb3JXQ0hZRy9SWnNBclFzQXZRc0FBUXNBelFzQTNRTURFbE13TWpFeUVUSVRjaEJ5RURJUk16QlB1L2NOazcvR0NvL3E0akE0Y2kvcmFHQWZXbzdjUDk3QUZSQThuRXhQejZBOG9BQUFFQVhRQUFCR1FFalFBWUFFK3lCUmthRVJJNUFMQUFSVml3Q3k4YnNRc2RQbG13QUVWWXNCY3ZHN0VYSFQ1WnNBQkZXTEFBTHh1eEFBOCtXYklSQ3dBUkVqbXdFUyt5QndFS0sxZ2gyQnYwV2JBRTBMQVJFTEFVMERBeElTTVRCZ2NISXpjbUpqY1RNd01HRnhZWE56TUhOamNUTXdPYTdsRkdYQ3FmS3Erd0ZEbnVPZ2NDQTNVeG55OUVYV1R0QWFzVkM4M0tFdHkyQVdIK3BDc29lQnYwOHdvWEFpQUFBQUVBQ2dBQUJCRUVqUUFTQUVheURoTVVFUkk1QUxBQVJWaXdBQzhic1FBZFBsbXdBRVZZc0Fndkc3RUlEejVac0FCRldMQVJMeHV4RVE4K1diSUVBQWdSRWptd0JDK3lEZ0VLSzFnaDJCdjBXVEF4RXpNRE5oY1dGZ2NESXhNMkp5WW5KZ2NESTlUdFVZUjQwTlVWT2UwNkJnWVRtMnliWk8wRWpmNVZKd0lDNGNQK253RmlOQ2wvQmdNbS9kOEFBQUlBTi8veEJhVUVwd0FiQUNRQVpMSU9KU1lSRWptd0RoQ3dIZEFBc0FCRldMQVBMeHV4RHgwK1diQUFSVml3QUM4YnNRQVBQbG15SUE4QUVSSTVzQ0F2c2hNQkNpdFlJZGdiOUZtd0JOQ3dJQkN3RE5Dd0FCQ3lGd0VLSzFnaDJCdjBXYkFQRUxJY0FRb3JXQ0hZRy9SWk1ERUZMZ0kzSmlZM0Z3WVhGaGMyQUJjV0VnY0hJUVlXRnhZM0Z3WURKZ1lISVRZbkppWURXSnJ5ZFJDWG1RdThBd01IY3owQlF0bm03eDBYL040U2twR0JxUzkzZlgyM0xRSTZFUXNQZEE4QmcrZVJFdHUxQVNja2VCdm9BUThFQlA3WTlKbU9uZ0lEUDcxS0ErNERuNWRUTjA1WUFBQUNBRFQvN0FSNkJLSUFGUUFmQUY2eUVTQWhFUkk1c0JFUXNCZlFBTEFBUlZpd0FDOGJzUUFkUGxtd0FFVllzQWd2RzdFSUR6NVpzZzRBQ0JFU09iQU9MN0FBRUxJUkFRb3JXQ0hZRy9SWnNBZ1FzaFlCQ2l0WUlkZ2I5Rm13RGhDeUdRRUtLMWdoMkJ2MFdUQXhBUjRDQndjR0FDY3VBamMzSVRZbUp5WUhKellURmpZM0lRY0dGeFlXQW9PZjYyMFJEU0QrcStlWjExd1RHQU1nRXBLUGdLc3dlbng4dHkzOXh3WUxDaEIxQktJRGl2aWNaZnYreXdRRGlmV2ZtWkdiQWdNL3ZFdjhFZ09mbHhrOU0xQlhBQUFCQUF6LzV3UUZCSTBBR2dCcXNoTWJIQkVTT1FDd0FFVllzQUl2RzdFQ0hUNVpzQUJGV0xBTUx4dXhEQTgrV2JBQ0VMSUFBUW9yV0NIWUcvUlpzZ1FBQWhFU09iSWFEQUlSRWptd0dpK3lHQUVLSzFnaDJCdjBXYklGR0JvUkVqbXdEQkN5RWdFS0sxZ2gyQnYwV2JJUUVoZ1JFamt3TVFFaE55RUhBUllXQnc0Q0p5WW1Oek1XRnhZMk56WW1KeWMzQXJIOStDSURPaHYrbG9tZUNBZUc2SWk4MmdUcUJMVnNqQW9LWDJDUklnUEp4S1greFJlNWdYV25XUU1Gdkp5VUJRSmlWRTFYQXdIRkFBQURBRHIvN0FSakJLTUFFQUFYQUI0QWlMSVpIeUFSRWptd0dSQ3dFTkN3R1JDd0V0QUFzQUJGV0xBSUx4dXhDQjArV2JBQVJWaXdBQzhic1FBUFBsbXdDQkN5RVFFS0sxZ2gyQnYwV2JJVkNBQVJFamw4c0JVdkdMSXdGUUZkc2tNVkFWMjBZQlZ3RlFKZHN2QVZBVjJ5QUJVQmNiU0FGWkFWQW5Hd0FCQ3lHQUVLSzFnaDJCdjBXYkFWRUxJYkFRb3JXQ0hZRy9SWk1ERUZKaVlDTnpjU0FCY1dGaElIQndZQ0JCRW1CZ2NoTmlZREZqWTNJUVlXQWZ1UzBWNFJBeDhCU2UrUnoxNFJCQldnL3Y5eXJUTUNKUXB2LzNPck12M2NDbkFRQXBVQkJKNGNBUkVCVFFZQ2t2NzZuaVN5L3ZHVUErMEZtS0NNb3Z6ZUJabWRocVlBQVFBRUFBQUVDZ1NpQUNZQXBySWxKeWdSRWprQXNBQkZXTEFlTHh1eEhoMCtXYkFBUlZpd0RDOGJzUXdQUGxteUJoNE1FUkk1c0FZdnNnOEdBVjJ3QWRDd0FTK3l6d0VCWFVBSkh3RXZBVDhCVHdFRVhiSUFBUUZkc2dJQ0NpdFlJZGdiOUZtd0JoQ3lCd0lLSzFnaDJCdjBXYkFNRUxJUEFRb3JXQ0hZRy9SWnNBclFzQWNRc0JQUXNBWVFzQlRRc0FJUXNCalFzQUVRc0JuUXNCNFFzaVFCQ2l0WUlkZ2I5Rm15SVFFa0VSSTVNREVCSVFjbEJ3Y2xCeVVHQnlVSElUY1hOamMzQnpjWE56Y0hOek0zTmpZWEZoWUhKelluSmdNQnZnR0NHdjZURHdnQmRoditpU00yQW9ray9IOGRDRFFmRTVnY2xnWVFvQnVOQXh2d3ZhNjlDTzBLa0tRb0FycVNBa01aQXBNQlJEb0R3OElCRmtBcEE1TUNFVXNDa2hqWCtRUUUwYk1Cd0FNRC92OEFBQUVBSHYvd0Erc0VvZ0FpQUp1eUhTTWtFUkk1QUxBVkw3QUFSVml3Q0M4YnNRZ1BQbG15SWhVSUVSSTVzQ0l2c2c4aUFWMnl6eUlCWGJRUUlpQWlBbDJ5QUFJS0sxZ2gyQnYwV2JBSUVMSURBUW9yV0NIWUcvUlpzQUFRc0F6UXNDSVFzQTNRc0NJUXNCM1FzQjB2c3M4ZEFWMjJIeDB2SFQ4ZEExMnlBQjBCWGJJZ0Fnb3JXQ0hZRy9SWnNBL1FzQjBRc0JMUXNCSXZzQlVRc2hvQkNpdFlJZGdiOUZrd01RRWhCaGNXTnhjR0p5WW1Od2MzTXpjak56TTJKQmNXRndjbUp5SUdCeVVISVFjaEF4SCtsUVRDUllNTWMyaSs2UVNjR28wUmpocUpRUUVWeDE2RkpWcHJaNDh3QVhrYS9va1FBWGdCaE1zRUF4M0JIZ0lDM0xVQmtseVR5ZFFDQWg3QkhnSm9jd0dUWEFBRUFBb0FBQWUrQktNQUF3QVJBQjhBS1FDcXNpQXFLeEVTT2JBZ0VMQUIwTEFnRUxBTjBMQWdFTEFUMEFDd0FFVllzQ1V2RzdFbEhUNVpzQUJGV0xBb0x4dXhLQjArV2JBQVJWaXdCQzhic1FRZFBsbXdBRVZZc0NBdkc3RWdEejVac0FCRldMQWpMeHV4SXc4K1diQUVFTEFMMExBTEw3QUQwTEFETDdZQUF4QURJQU1EWGJJQUFnb3JXQ0hZRy9SWnNBc1FzaFVDQ2l0WUlkZ2I5Rm13QkJDeUhBSUtLMWdoMkJ2MFdiSWlKU0FSRWpteUp5VWdFUkk1TURFbElUY2hBeFlXQndjR0JpY21KamMzTmpZREJoWVhGalkzTnpZbUp5WUdCd0VqQVFNakV6TUJFek1IQ3YzVUd3SXJtNCttQ2dZTzBKbVFwZ29GRE5VN0IwWkhTMnNPQ2dkR1JreHNEdjRmNVA2SmpPM0s1UUYzak96SWxRTkNCTHVSUXB6Q0JBUytqVUNkeFA1ZFdXQUNCR2haVGxsZ0FnSmtXdnl4QXlYODJ3U04vTm9ESmdBQy85a0FBQVN5QkkwQUZnQWZBSk95QUNBaEVSSTVzQi9RQUxBQVJWaXdEQzhic1F3ZFBsbXdBRVZZc0FJdkc3RUNEejVac2dZQ0RCRVNPYkFHTDdRZkJpOEdBbkd5QlFjS0sxZ2gyQnYwV2JBQjBMQUdFTEFLMExBS0w3UWZDaThLQW5HMkR3b2ZDaThLQTEyMmp3cWZDcThLQTEyeUNRY0tLMWdoMkJ2MFdiQVUwTEFHRUxBVjBMQUtFTEFYMExBWEw3QU1FTElmQVFvcldDSFlHL1JaTURFbElRY2pOeU0zTXpjak56TVRCUllXQndZRUl5Y0hJUU1YTmpZM05pWW5Kd0tUL3YwYjdSdktJTWtPeXlISll3SE91ZGtMQ3Y3dzB2NE9BUVRYNUdLTERReFhWUDJabVptMlRiY0NPZ0VGekorcjFnRk5BUVFCQW1wWlQxOEVBUUFDQUJELzZBUWpCZ0FBRWdBZkFHU3lCQ0FoRVJJNXNBUVFzQnpRQUxBSkw3QUFSVml3RFM4YnNRMGJQbG13QUVWWXNBY3ZHN0VIRHo1WnNBQkZXTEFFTHh1eEJBOCtXYklHRFFjUkVqbXlDdzBIRVJJNXNBMFFzaFlCQ2l0WUlkZ2I5Rm13QkJDeUd3RUtLMWdoMkJ2MFdUQXhBUVlDQmljbUp3Y2pBVE1ETmhjV0ZoY1dCeWNuSmljbUJ3TVdGeFkyTnpZRUdoT1MxbiszWFMzUEFRcnViSG1tb2JzSkF3YnFCQnllaldWUk00dDhxUmdJQWhpZy92T0RBd1NNZXdZQS9kR0JCQVRmdjBFK2N5ZThCUVNKL2pXREJBUENxRlFBQUFFQU4vL29CQU1FVkFBYkFFdXlBQndkRVJJNUFMQUFSVml3RHk4YnNROGJQbG13QUVWWXNBZ3ZHN0VJRHo1WnNnQUJDaXRZSWRnYjlGbXlCQThJRVJJNXNoTUlEeEVTT2JBUEVMSVdBUW9yV0NIWUcvUlpNREVsRmpZM053NENKeVlDTnpjU0FCY1dGaFVqSmlZbkpnWUhCaFlCOFZlREZ0OE9odFJ3MDk0WUFoMEJOdCt3ME4wQ1hsS0tyQWdHWXEwQ1oxTUJiSzlqQXdVQk1PZ1VBUUVCTndZRTRyTmljUVFHOHVLQ2pRQUFBZ0E3LytjRW13WUFBQklBSHdCaHNnUWdJUkVTT2JBRUVMQVowQUN3Qnkrd0FFVllzQVF2RzdFRUd6NVpzQUJGV0xBSkx4dXhDUTgrV2JBQVJWaXdEUzhic1EwUFBsbXlCZ1FKRVJJNXNnc0VDUkVTT2JJWUFRb3JXQ0hZRy9SWnNBUVFzaDBCQ2l0WUlkZ2I5Rmt3TVJNMkVqWVhGaGNUTXdFak53WW5KaVluSmpjekJoY1dGaGNXTnhNbUp5WUdSQk9XMW9HalgyanQvdmJNREgrdW03NE1CQWJ1QmdRRllsZUZaMVExZzMyc0FoK2pBUXlFQXdSMkFpdjZBSFdPQkFUbHV6ODhOVHRuZmdRRWhRSGFlQVFEd3YvL0FLUUFBQU10QmJVQUJnQVZ0UUFBQWdBMC8rZ0VQd1JSQUJNQUl3QkRzaGdrSlJFU09iQVlFTEFFMEFDd0FFVllzQVV2RzdFRkd6NVpzQUJGV0xBT0x4dXhEZzgrV2JJWEFRb3JXQ0hZRy9SWnNBVVFzaDhCQ2l0WUlkZ2I5Rmt3TVJNMkVqYzJGeDRDQndjR0FnWW5KaVluSmpjWEZoWVhGalkzTmljbUppY21CZ2NHUlJhN2ttVjVqTXhoRUFJVW9QdVRqYzR2TFEvckIybGFlN01jQmdRSmFsbCtzaGNJQWlDd0FSTkJMUU1Da1B5V0ZwNysvNDBFQXBKL2U1RjJhWHdEQmNTOU9ENXJmd01EeTZWUkFBQUMvOGYrWUFRaEJGSUFFZ0FlQUdDeUJCOGdFUkk1c0FRUXNCM1FBTEFBUlZpd0RTOGJzUTBiUGxtd0FFVllzQW92RzdFS0d6NVpzQUJGV0xBSEx4dXhCeEUrV2JBQVJWaXdCQzhic1FRUFBsbXdEUkN5RndFS0sxZ2gyQnYwV2JBRUVMSWNBUW9yV0NIWUcvUlpNREVCQmdJR0p5WW5BeU1CTndjMkZ4WVdGeFlISnpjMEppY21Cd01XRnhZMkJCZ1RrZFovcUdGaDdnRUUwZzU4cjU2OUNRTUc3UVJtWDRSalZ6S0hlckVDR0o3Kzg0VURCSFA5L2dYYUFYS0pCQUxrdlVBK0FVdCtqUVFFZlA0VmRBUUR4Z0FDQUR2K1lBUkxCRkVBRWdBZUFHdXlEQjhnRVJJNXNBd1FzQmpRQUxBQVJWaXdCeThic1FjYlBsbXdBRVZZc0FRdkc3RUVHejVac0FCRldMQUpMeHV4Q1JFK1diQUFSVml3RFM4YnNRMFBQbG15QmdjTkVSSTVzZ3NIRFJFU09iSVhBUW9yV0NIWUcvUlpzQVFRc2h3QkNpdFlJZGdiOUZrd01STTJFallYRmhjM013RWpFd1luSmlZbkpqY1hCeFFXRnhZM0V5WW5KZ1pFRXBMWmhhOWNLdEQrL08xamVaMmN3QXdFQnU0RVpGNkRaRmszZjMyeEFoK2VBUTZHQXdSL2Ivb21BZjExQkFMaHZ6ODlBVXA3bEFJRWVRSDNid01EeHdBQUFnQTcvK3NFQ0FSVUFCVUFIZ0NBc2dBZklCRVNPYkFXMEFDd0FFVllzQWd2RzdFSUd6NVpzQUJGV0xBQUx4dXhBQTgrV2JJWkNBQVJFam13R1MrMHZ4blBHUUpkdEY4WmJ4a0NjYlFmR1M4WkFuR3lqeGtCWGJUdkdmOFpBbkd5REFjS0sxZ2gyQnYwV2JBQUVMSVFBUW9yV0NIWUcvUlpzaElBQ0JFU09iQUlFTElXQVFvcldDSFlHL1JaTURFRkxnSTNOellBRnhZU0J3Y2hCaFlYRmpjWEJnWURKZ01GTnpZbkppWUNEWkRZYWc0Q0dRRTUxOGZOR3hQOVdBcUdmWW1TTFQ2OUVjQmlBY0lHQ0FVSVdCTUJpUFNYRlA0QlFRWUUvdXJpZ24rZkFnUlJxRE0zQTZFRy92QUJIUzhyUWs4QUFBSUFNUDVRQkRvRVVRQWJBQ2tBZkxJRUtpc1JFam13QkJDd0p0QUFzQUJGV0xBSEx4dXhCeHMrV2JBQVJWaXdCQzhic1FRYlBsbXdBRVZZc0F3dkc3RU1FVDVac0FCRldMQVdMeHV4Rmc4K1diSUdCeFlSRWptd0RCQ3lFUUVLSzFnaDJCdjBXYklVQnhZUkVqbXdGaEN5SVFFS0sxZ2gyQnYwV2JBRUVMSW1BUW9yV0NIWUcvUlpNREVUTmhJMkZ4WVhOek1EQmdBbkppYzNGaGNXRXpjR0p5WW1KeVkzTXdZWEZCWVhGamNUSmljbUJnZEdGSWJPZ3JWY0s4NnRJdjdZNGFDU1FteDcrRXdSZnArYXNBY0RCdTBHQVZoV2kySlNNSWg1bnhZQ0g2VUJCb2NDQklSei9BenQvdmNFQkV5eFB3SUhBUkJGZWdRRTRNRStPek03YUg4RUJJa0IxSG9FQThHckFBRUFiLy9uQlVZRnlBQWRBRTZ5REI0ZkVSSTVBTEFBUlZpd0RTOGJzUTBmUGxtd0FFVllzQU12RzdFRER6NVpzZ0FOQXhFU09iSVJBdzBSRWptd0RSQ3lFd0VLSzFnaDJCdjBXYkFERUxJYUFRb3JXQ0hZRy9SWk1ERUJCZ0FuTGdJbkpqYzJFaVFYRmdBWEl3SW5KZ0FEQndZV0Z4WTJOd1RlSS82eDlaTGVoUXNJR1NQVEFTaXQzd0VLQ3ZVTi9jai9BQklDQTVPSWk3a21BZHpqL3U0RUE0VDdubk9TelFGSHBBTUUvdlRuQVNRSEJ2NlgvdVl2dmRnRUJweVBBQUVBY2Yvb0JVb0Z5QUFrQUZ5eUZTVW1FUkk1QUxBQVJWaXdEaThic1E0ZlBsbXdBRVZZc0FNdkc3RUREejVac2hFT0F4RVNPYkFPRUxJVUFRb3JXQ0hZRy9SWnNBTVFzaDRCQ2l0WUlkZ2I5Rm15SXc0REVSSTVzQ012c2lJQkNpdFlJZGdiOUZrd01TVUdCQ2N1QWljbU56YzJFaVFYRmdRWEp3SW5KZ1lHQndZWEZCWVdGeFkzRXlFM0lRVEFTLzdhdHBqc2pnNElDd1FiendFMXR0NEJCUkx3Ri9WMHc0a1hEQUZJam1DNmNEWCs1U0lDRUx4amNRTURoUHFlVmw0bjB3RmJ0UU1FOU4wQkFRQUlBMy83bTE0OWRidGxBUVZZQVJ2QUFBSUFMZ0FBQlIwRnNBQUxBQllBUTdJUEZ4Z1JFam13RHhDd0N0QUFzQUJGV0xBQ0x4dXhBaDgrV2JBQVJWaXdBQzhic1FBUFBsbXlEZ0VLSzFnaDJCdjBXYkFDRUxJV0FRb3JXQ0hZRy9SWk1ERXpFd1V5QkJJSEJ3WUNCQWNUQXhjeUFEYzJKeVltSnk3OEFaaTlBUnVERlFVWjEvNm14Z3EybXRNQktTb2NEeFN4a1FXd0FiZit2Y1lzeHY2OXVBSUU1UHZtQVFFQjJKQjNrNk1FQUFBQ0FITC82QVZ5QmNnQUV3QW5BRWF5Q2lncEVSSTVzQW9Rc0J2UUFMQUFSVml3Q3k4YnNRc2ZQbG13QUVWWXNBQXZHN0VBRHo1WnNBc1FzaG9CQ2l0WUlkZ2I5Rm13QUJDeUpBRUtLMWdoMkJ2MFdUQXhCUzRDSnlZM056WVNKQmNlQWhjV0FnSUVBVFkzTkNZbUp5WUFCd2NHRlJRV0ZoY1dBRGNDZjQvaGlBMElDZ3dpMVFFenJaRGdpQTBPWk5iKzVnRk9CZ0ZCZzF5MS92VWlBZ1pDZzF5d0FRSW5GUU9IL3FCV1YxTENBVWV0QXdPRy9KNnUvcG4rNm84RERqUTZicjFrQXdYK3kvWVBORHB3d0djREJ3RWg1UUFBQWdCeS93TUZiQVhJQUJrQUt3QkdzaUVzTFJFU09iQWhFTEFEMEFDd0FFVllzQkF2RzdFUUh6NVpzQUJGV0xBRkx4dXhCUTgrV2JBUUVMSWdBUW9yV0NIWUcvUlpzQVVRc2ljQkNpdFlJZGdiOUZrd01TVVhCeWNHSXk0Q0p5WTNOellTSkJjV0ZoSVhGZ2NIQmdJRE5qYzBKaVluSmdZQ0ZSUVdGeFkyRWpjRDJNYXU5VVk0a3QySURRY0tDU0RWQVRTeGsrR0hEQVlLQ0IvSUNBY0JQNE5laWR1R2w0cHp4bzRXVThhSzlBc0RoditoVjFjK3hnRlFzUU1EaVA4QW5WaFhOOHIreFFJL05UcHl2R1VEQks3K3dyaTgzUVFGZlFFQ21nQUFBUUNyQUFBRE5RU01BQVlBTWdDd0FFVllzQVV2RzdFRkhUNVpzQUJGV0xBQUx4dXhBQTgrV2JJRUFBVVJFam13QkMreUF3RUtLMWdoMkJ2MFdUQXhJU01UQlRjbE13Sng3WmYra0NZQ1FDUURaSHJYeXdBQkFCOEFBQVFLQktBQUdRQlZzZ29hR3hFU09RQ3dBRVZZc0JFdkc3RVJIVDVac0FCRldMQUFMeHV4QUE4K1diSURFUUFSRWptd0VSQ3lDUUVLSzFnaDJCdjBXYklORVFBUkVqbXlGd0FSRVJJNXNBQVFzaGtCQ2l0WUlkZ2I5Rmt3TVNFaE53RTNOamMySmljbUJnY0hQZ0lYRmhZSEJnY0hBUVVEcGZ4NkhnSWJQVzBPQ1ZOT1pJb1E2d21JNG9LMjBBb010MDMrcHdJd3FRR2tNMTlsUmxRQ0FucGlBbmU5YUFFRnNwV25uVUQrOVFJQUFBRUFDZ0FBQkJVRnhBQUhBREt5QXdnSkVSSTVBTEFBUlZpd0JpOGJzUVlkUGxtd0FFVllzQVV2RzdFRkR6NVpzQVlRc2dJQkNpdFlJZGdiOUZrd01RRXpBeUVESXhNaEF5ZnVXZjNqcU8zS0FoMEZ4UDRGL0RjRWpRQUFBZjkvL3FBRUZRU05BQmdBV2JJRkdSb1JFamtBc0F3dnNBQkZXTEFDTHh1eEFoMCtXYklBQVFvcldDSFlHL1Jac2dRQUFoRVNPYklGREFJUkVqbXdCUyt3REJDeUVRRUtLMWdoMkJ2MFdiQUZFTElXQXdvcldDSFlHL1Jac2hnV0JSRVNPVEF4QVNFM0lRY0JGaFlIQmdZRUp5WW5OeFlYRmpZM0VpVW5Od0xBL2RRakExNGIvbVNUcHcwT3JQN2NxckxTU28ram9la1RJLzdoWlJJRHljU2Evb1llOUtHaStZc0RBMmEwV1FJQ3dKY0JDaFFDaGdBQUF2L1Ivc1FFSXdTTUFBb0FEZ0JTQUxBQVJWaXdDUzhic1FrZFBsbXdBRVZZc0FJdkc3RUNEejVac0FCRldMQUdMeHV4Qmc4K1diSUFBUW9yV0NIWUcvUlpzQVlRc0FYUXNBVXZzZ2dHQUJFU09iQUFFTEFNMExJTkNRSVJFamt3TVNVekJ5TURJeE1oTndFekFTRVRCd055c1NLd04rMDMvVzBWQXpuOC9OY0JsSGNld3NQK3hRRTdvQVB0L0RZQ2d5d0EvLzhBaWdLSUF2OEZ2UU1IQTlBQWN3S1lBQk1Bc0FCRldMQUhMeHV4Qng4K1diQVIwREF4QVAvL0FHUUNtQUx0QmE0REJ3UE1BSE1DbUFBVEFMQUFSVml3Q1M4YnNRa2ZQbG13RGRBd01RRC8vd0I5QW9vREJBV3RBd2NEeXdCekFwZ0FFQUN3QUVWWXNBRXZHN0VCSHo1Wk1ESC8vd0NKQW9vQzVnVzhBd2NEeWdCekFwZ0FFd0N3QUVWWXNCUXZHN0VVSHo1WnNCWFFNREVBLy84QWxnS1lBeTRGclFNSEE4a0Fjd0tZQUJBQXNBQkZXTEFGTHh1eEJSOCtXVEF4Ly84QWV3S0tBdk1GdXdNSEE4Z0Fjd0tZQUJrQXNBQkZXTEFTTHh1eEVoOCtXYkFZMExBU0VMQWswREF4QVAvL0FLWUNqUUwxQmJzREJ3UEhBSE1DbUFBVEFMQUFSVml3Q0M4YnNRZ2ZQbG13SE5Bd01RQUFBZi9VL3AwRVRnU01BQndBWGJJSEhSNFJFamtBc0E4dnNBQkZXTEFCTHh1eEFSMCtXYklEQVFvcldDSFlHL1Jac2djQkR4RVNPYkFITDdJYUFRb3JXQ0hZRy9SWnNnVWFCeEVTT2JBUEVMSVVBUW9yV0NIWUcvUlpzaElVR2hFU09iSWNHaFFSRWprd01STVRJUWNoQXpZWE1oWVdCd1lHQkNjbUp6Y1dGeFkyTnpZbUp5WUhXZUVERkNYOXIzRmpnSHF2VUEwUG52NzNwTSs1V25leWtjd1REbWhwbEVnQmRnTVcwdjZvTmdKNjM0bVg4NDBDQkhXdlpBSUN2cFovbndNRWNnQUFBUUFuL3NRRVZBU01BQVlBSlFDd0FTK3dBRVZZc0FVdkc3RUZIVDVac2dNQkNpdFlJZGdiOUZteUFBTUZFUkk1TURFQkFTTUJJVGNoQkRyODV2a0REUDFOSXdPeEEvbjZ5d1VGd3dBQUFnQTYvL0lHb1FTZkFCZ0FKQUNSc2dFbEpoRVNPYkFCRUxBYjBBQ3dBRVZZc0F3dkc3RU1IVDVac0FCRldMQVBMeHV4RHgwK1diQUFSVml3QWk4YnNRSVBQbG13QUVWWXNBQXZHN0VBRHo1WnNBOFFzaEVCQ2l0WUlkZ2I5Rm15RkFBUEVSSTVzQlF2c2hVQkNpdFlJZGdiOUZtd0FCQ3lHQUVLSzFnaDJCdjBXYkFDRUxJWkFRb3JXQ0hZRy9SWnNBd1FzaHdCQ2l0WUlkZ2I5Rmt3TVNFaEJTTW1KZ0kzTnpZU05oY3lGak1oQnlFRElRY2hBeUVGTnhNbkpnWUhCaGNXRmhjRjJmMTcvdkpPa2RCZEVRWVhvditkV2NSZEFvRWovY293QWVnai9obzJBanY4YTJXV3hJSzJJUllGQldwZERnS1VBUU9kTnFrQkNKQUJFY1QrOHNQK3lnd0VBeFlNQXJTcGNHTndoQVFBQWdCSC9yQUVSZ1NqQUJrQUtBQlJzaU1wS2hFU09iQWpFTEFFMEFDd0ZTK3dBRVZZc0F3dkc3RU1IVDVac0JVUXNnQUJDaXRZSWRnYjlGbXlCUlVNRVJJNXNBVXZzaG9CQ2l0WUlkZ2I5Rm13REJDeUlnRUtLMWdoMkJ2MFdUQXhCUlkyTndZbkpnSTNQZ0lYRmhZU0J3Y0dBZ1FuSmljM0ZnRVdOemMySnlZbUp5WUdCaGNXRmdGUWtkcFFncG04elJRT2xPaUxrOHRZRXgwa3hmN2tyWXlSUVhJQklxRnhIQWNDQTJSYVc0NUhDZ2xlaXdPNTBsMEVBZ0VWMTVQNGhnSUVrZjcrb3NMeC9xYXJBd0k5dEM4QjZRUjdyamc4YUhvREEzaldaMXh0QUFJQVR2L21CSW9FcFFBTUFCMEFScklTSGg4UkVqbXdFaEN3QU5BQXNBQkZXTEFHTHh1eEJoMCtXYkFBUlZpd0FDOGJzUUFQUGxtd0JoQ3lFUUVLSzFnaDJCdjBXYkFBRUxJYUFRb3JXQ0hZRy9SWk1ERUZKZ0lURWdBWEZoSURCd0lBRXpjMEppY21CZ2NIQmhjV0ZoY1dOamNDR09Mb0d5UUJSKy9nNXhzTE1QN0VqUVZyYUlxOEdRUUdBd1ZzWVlxN0dSVUZBVW9CQVFFaEFVa0ZCZjY2L3Y1SC92NyszQUtBVTR5VkJBWFV3aUE4UW5TTEJBWFd4d0QvLy84UC9rZ0IzQVE2QWdZQlpBQUEvLy8vRC81SUFkd0VPZ0lHQVdRQUFQLy9BQ0lBQUFITEJEb0FCZ0QwQUFELy8vOTkvbHNCeXdRNkFDWUE5QUFBQUFZQmJkVUsvLzhBSWdBQUFjc0VPZ0FHQVBRQUFBQUJBQXIvNWdQb0JLRUFJQUJwc2djaEloRVNPUUN3QUVWWXNCUXZHN0VVSFQ1WnNBQkZXTEFlTHh1eEhnOCtXYkFBUlZpd0R5OGJzUThQUGxtd0hoQ3lBZ0VLSzFnaDJCdjBXYklKSGhRUkVqbXdDUyt5QndjS0sxZ2gyQnYwV2JBVUVMSU1Cd29yV0NIWUcvUlpzaGdKQnhFU09UQXhKUll6TWpZM05pY25OemNtSnlZSEF5TVROallYRmhZWEFSWVdCd1lHSnlZbkFaQkZSVTl2Q3hQU1lCL3VOVSt4S24vcGZoN3l3WEsvWHY3WWdvNEdDdkN1Ym5mYk0yNVRsQUlCcnZvMkFnUDMvUlFDN05iZkJBUm5hdjdURnFGM3I5Z0NBamIvLy8rWEFBQUVHZ1NOQWlZRDZRQUFBUWNEMWY4RS8yNEFPd0N5SHhvQmNiSnZHZ0Z4c3Y4YUFYR3lEeG9CY3JLZkdnRnlzbDhhQVhLMnZ4clBHdDhhQTNHeVB4b0JjYkxmR2dGZHRCOGFMeG9DWFRBeEFQLy8vNWNBQUFRYUJJMENKZ1BwQUFBQkJ3UFYvd1QvYmdBN0FMSWZHZ0Z4c204YUFYR3kveG9CY2JJUEdnRnlzcDhhQVhLeVh4b0JjcmEvR3M4YTN4b0RjYkkvR2dGeHN0OGFBVjIwSHhvdkdnSmRNREVBLy84QVlnQUFCRm9FalFJbUE5a0FBQUVHQTlVbHZnQUlBTElBQ3dGZE1ESC8vLytiQUFBRUJRWWVBaVlEN0FBQUFRY0FSQURTQUI0QUV3Q3dBRVZZc0FRdkc3RUVIVDVac0F6Y01ERUEvLy8vbXdBQUJEOEdIZ0ltQSt3QUFBRUhBSGNCYlFBZUFCTUFzQUJGV0xBRkx4dXhCUjArV2JBTjNEQXhBUC8vLzVzQUFBUUlCaDhDSmdQc0FBQUJCZ0ZuYVI0QUV3Q3dBRVZZc0FRdkc3RUVIVDVac0EvY01ERUEvLy8vbXdBQUJFQUdFd0ltQSt3QUFBRUdBVzUzSHdBSkFMQUVMN0FWM0RBeEFQLy8vNXNBQUFRaUJlc0NKZ1BzQUFBQkJ3QnJBSjhBSGdBTUFMQUVMN0FjM0xBTDBEQXgvLy8vbXdBQUJBVUdmUUltQSt3QUFBRUhBV3dCQXdCU0FBd0FzQVF2c0JUY3NCZlFNREgvLy8rYkFBQUVVUWFaQWlZRDdBQUFBQWNEeFFEN0FBVC8vd0E1L2owRVNRU2pBaVlENmdBQUFBY0Fld0ZnQUFELy93QUtBQUFEK1FZZUFpWUQ2QUFBQVFjQVJBQ2lBQjRBRXdDd0FFVllzQVl2RzdFR0hUNVpzQTNjTURFQS8vOEFDZ0FBQkE4R0hnSW1BK2dBQUFFSEFIY0JQUUFlQUJNQXNBQkZXTEFITHh1eEJ4MCtXYkFPM0RBeEFQLy9BQW9BQUFQNUJoOENKZ1BvQUFBQkJnRm5PUjRBRXdDd0FFVllzQVl2RzdFR0hUNVpzQkRjTURFQS8vOEFDZ0FBQS9rRjZ3SW1BK2dBQUFFR0FHdHZIZ0FNQUxBR0w3QWQzTEFNMERBeC8vOEFHQUFBQWVBR0hnSW1BK1FBQUFFR0FFU0tIZ0FUQUxBQVJWaXdBaThic1FJZFBsbXdCZHd3TVFELy93QVlBQUFDOWdZZUFpWUQ1QUFBQVFZQWR5UWVBQk1Bc0FCRldMQURMeHV4QXgwK1diQUczREF4QVAvL0FCZ0FBQUxBQmg4Q0pnUGtBQUFCQndGbi95RUFIZ0FUQUxBQVJWaXdBaThic1FJZFBsbXdDTnd3TVFELy93QVlBQUFDMmdYckFpWUQ1QUFBQVFjQWEvOVhBQjRBREFDd0FpK3dGZHl3Qk5Bd01mLy9BQW9BQUFTb0JoTUNKZ1BmQUFBQkJ3RnVBSlVBSHdBSkFMQUZMN0FVM0RBeEFQLy9BRHIvNmdSakJoNENKZ1BlQUFBQkJ3QkVBTjhBSGdBVEFMQUFSVml3Q1M4YnNRa2RQbG13SXR3d01RRC8vd0E2LytvRVl3WWVBaVlEM2dBQUFRY0Fkd0Y2QUI0QUNRQ3dDUyt3STl3d01RRC8vd0E2LytvRVl3WWZBaVlEM2dBQUFRWUJaM1llQUFrQXNBa3ZzQ0xjTURFQS8vOEFPdi9xQkdNR0V3SW1BOTRBQUFFSEFXNEFoQUFmQUFrQXNBa3ZzQ3ZjTURFQS8vOEFPdi9xQkdNRjZ3SW1BOTRBQUFFSEFHc0FyQUFlQUF3QXNBa3ZzRExjc0NIUU1ESC8vd0E1LytzRWFnWWVBaVlEMkFBQUFRY0FSQURBQUI0QUV3Q3dBRVZZc0Frdkc3RUpIVDVac0JQY01ERUEvLzhBZFAvbkJFNEZ5UUFHQUJRVUFQLy9BSTcvK1FRdkJjZ0FCZ0FkQUFELy93QmEvK2NFY3dXd0FnWUFHUUFBLy84QUNRQUFCQ29Gc0FJR0FCZ0FBUC8vQUNiLzZBUTVCY1VDQmdBWEFBRC8vd0FMQUFBRVB3WEhBZ1lBRmdBQS8vOEFPZi9yQkdvR0hnSW1BOWdBQUFFSEFIY0JXd0FlQUFrQXNBQXZzQlRjTURFQS8vOEFPZi9yQkdvR0h3SW1BOWdBQUFFR0FXZFhIZ0FKQUxBQUw3QVQzREF4QVAvL0FEbi82d1JxQmVzQ0pnUFlBQUFCQndCckFJMEFIZ0FNQUxBQUw3QWozTEFTMERBeC8vOEFiUUFBQklBR0hnSW1BL2NBQUFFSEFIY0JOUUFlQUJNQXNBQkZXTEFCTHh1eEFSMCtXYkFMM0RBeEFQLy8vNXNBQUFROEJkSUNKZ1BzQUFBQkJnQnljU0lBRXdDd0FFVllzQVF2RzdFRUhUNVpzQXpjTURFQS8vLy9td0FBQkJNR0JRSW1BK3dBQUFFSEFXb0Fwd0FlQUFrQXNBUXZzQTdjTURFQUFBTC9tLzVSQkFVRWpRQVhBQm9BaExJVkd4d1JFam13RlJDd0d0QUFzQUJGV0xBVkx4dXhGUjArV2JBQVJWaXdDeThic1FzUlBsbXdBRVZZc0FBdkc3RUFEejVac0FCRldMQVRMeHV4RXc4K1diQUFSVml3QVM4YnNRRVBQbG13Q3hDeUJnTUtLMWdoMkJ2MFdiQUJFTEFRMExBUUw3SVpGUUFSRWptd0dTK3lFUWNLSzFnaDJCdjBXYklhRlFBUkVqa3dNU0VYQndZSEJoY1dOeGNHSnlJbU56WTNKeUVISXdFekV3RWhBd1BRQlMrREJ3VTRHejBNUlZWWGFRSUR2Q3orTG9qNUFwUGEvZjE4QVVoWEF4OVdWamtEQVJlUUt3SnRWSmhyNHZrRWpmdHpBYklCdVAvL0FEbi83QVJKQmg0Q0pnUHFBQUFCQndCM0FXb0FIZ0FKQUxBTEw3QWYzREF4QVAvL0FEbi83QVJKQmg4Q0pnUHFBQUFCQmdGblpoNEFDUUN3Q3krd0h0d3dNUUQvL3dBNS8rd0VTUVgvQWlZRDZnQUFBUWNCYXdGSEFDY0FDUUN3Q3krd0pkd3dNUUQvL3dBNS8rd0VTUVlqQWlZRDZnQUFBUVlCYUgwZUFBa0FzQXN2c0NIY01ERUEvLzhBQ2dBQUJCb0dJd0ltQStrQUFBRUdBV2orSGdBVEFMQUFSVml3QWk4YnNRSWRQbG13Rzl3d01RRC8vd0FLQUFBRURBWFNBaVlENkFBQUFRWUFja0VpQUJNQXNBQkZXTEFHTHh1eEJoMCtXYkFOM0RBeEFQLy9BQW9BQUFQNUJnVUNKZ1BvQUFBQkJnRnFkeDRBQ1FDd0JpK3dEOXd3TVFELy93QUtBQUFEK1FYL0FpWUQ2QUFBQVFjQmF3RWFBQ2NBQ1FDd0JpK3dGTnd3TVFBQUFRQUsvbEVEK1FTTkFCd0FnTElWSFI0UkVqa0FzQUJGV0xBWEx4dXhGeDArV2JBQVJWaXdFQzhic1JBUlBsbXdBRVZZc0FRdkc3RUVEejVac0FCRldMQVZMeHV4RlE4K1diSWNGd1FSRWptd0hDK3lBQUVLSzFnaDJCdjBXYkFWRUxJQ0FRb3JXQ0hZRy9SWnNBUFFzQkFRc2dzRENpdFlJZGdiOUZtd0Z4Q3lHUUVLSzFnaDJCdjBXVEF4QVNFRElRY2pGd2NHQndZWEZqY1hCaWNpSmpjMk55RVRJUWNoQXlFRE5mNGFOZ0k3STJBRkw0TUhCVGdiUFF4RlZWZHBBZ09XL2hYS0F5VWovY2t2QWVnQitQN0t3Z01mVmxZNUF3RVhrQ3NDYlZTTVlBU054UDd5Ly84QUNnQUFCQXdHSXdJbUErZ0FBQUVHQVdoUUhnQVRBTEFBUlZpd0JpOGJzUVlkUGxtd0Vkd3dNUUQvL3dBLy8vQUVVUVlmQWlZRDVnQUFBUVlCWjJvZUFBa0FzQXN2c0NMY01ERUEvLzhBUC8vd0JGRUdCUUltQStZQUFBRUhBV29BcUFBZUFBa0FzQXN2c0NUY01ERUEvLzhBUC8vd0JGRUYvd0ltQStZQUFBRUhBV3NCU3dBbkFBa0FzQXN2c0NuY01ERUEvLzhBUC8zNUJGRUVvd0ltQStZQUFBQUhBNnNCSVA2Uy8vOEFDZ0FBQktrR0h3SW1BK1VBQUFFR0FXZDhIZ0FUQUxBQVJWaXdCeThic1FjZFBsbXdFTnd3TVFELy93QU5BQUFDK0FZVEFpWUQ1QUFBQVFjQmJ2OHZBQjhBQ1FDd0FpK3dEdHd3TVFELy93QVlBQUFDOUFYU0FpWUQ1QUFBQVFjQWN2OHBBQ0lBRXdDd0FFVllzQUl2RzdFQ0hUNVpzQVhjTURFQS8vOEFHQUFBQXNzR0JRSW1BK1FBQUFFSEFXci9Yd0FlQUFrQXNBSXZzQWZjTURFQS8vLy9pdjVSQWM4RWpRSW1BK1FBQUFBR0FXM2lBUC8vQUJnQUFBSUNCZjhDSmdQa0FBQUJCZ0ZyQVNjQUNRQ3dBaSt3RE53d01RRC8vLy95LytzRWtBWWZBaVlENHdBQUFRY0Jad0R4QUI0QUV3Q3dBRVZZc0FBdkc3RUFIVDVac0JQY01ERUEvLzhBQ3YzNUJKMEVqUUltQStJQUFBQUhBNnNBelA2Uy8vOEFDZ0FBQXpRR0hnSW1BK0VBQUFFR0FIY2JIZ0FUQUxBQVJWaXdCUzhic1FVZFBsbXdDTnd3TVFELy93QUsvZmtETkFTTkFpWUQ0UUFBQUFjRHF3REsvcEwvL3dBS0FBQURPd1NRQWlZRDRRQUFBUWNEcXdJbEE0b0FFQUN3QUVWWXNBb3ZHN0VLSFQ1Wk1ESC8vd0FLQUFBRE5BU05BaVlENFFBQUFBY0Jhd0R1L1ViLy93QUtBQUFFcUFZZUFpWUQzd0FBQVFjQWR3R0xBQjRBRXdDd0FFVllzQWd2RzdFSUhUNVpzQXpjTURFQS8vOEFDdjM1QktnRWpRSW1BOThBQUFBSEE2c0JMdjZTLy84QUNnQUFCS2dHSXdJbUE5OEFBQUVIQVdnQW5nQWVBQk1Bc0FCRldMQUdMeHV4QmgwK1diQVAzREF4QVAvL0FEci82Z1JqQmRJQ0pnUGVBQUFCQmdCeWZpSUFDUUN3Q1Mrd0lkd3dNUUQvL3dBNi8rb0VZd1lGQWlZRDNnQUFBUWNCYWdDMEFCNEFDUUN3Q1Mrd0pOd3dNUUQvL3dBNi8rb0U1QVlkQWlZRDNnQUFBUWNCYndEN0FCNEFEQUN3Q1Mrd0k5eXdKZEF3TWYvL0FBb0FBQVFXQmg0Q0pnUGJBQUFCQndCM0FTQUFIZ0FKQUxBRUw3QVkzREF4QVAvL0FBcjkrUVFXQkkwQ0pnUGJBQUFBQndPckFOTCtrdi8vQUFvQUFBUVdCaU1DSmdQYkFBQUJCZ0ZvTXg0QUNRQ3dCQyt3R3R3d01RRC8vd0FPLyswRUd3WWVBaVlEMmdBQUFRY0Fkd0ZKQUI0QUNRQ3dDUyt3S2R3d01RRC8vd0FPLyswRC93WWZBaVlEMmdBQUFRWUJaMFVlQUFrQXNBa3ZzQ2pjTURFQS8vOEFEdjQ5QS84RW53SW1BOW9BQUFBSEFIc0JSUUFBLy84QUR2L3RCQmdHSXdJbUE5b0FBQUVHQVdoY0hnQUpBTEFKTDdBcjNEQXhBUC8vQUdMOStRUmFCSTBDSmdQWkFBQUFCd09yQU43K2t2Ly9BR0lBQUFSYUJpTUNKZ1BaQUFBQkJnRm9TaDRBRXdDd0FFVllzQVl2RzdFR0hUNVpzQTNjTURFQS8vOEFZdjVEQkZvRWpRSW1BOWtBQUFBSEFIc0JNQUFHLy84QU9mL3JCR29HRXdJbUE5Z0FBQUVHQVc1bEh3QUpBTEFBTDdBYzNEQXhBUC8vQURuLzZ3UnFCZElDSmdQWUFBQUJCZ0J5WHlJQUNRQ3dBQyt3RXR3d01RRC8vd0E1LytzRWFnWUZBaVlEMkFBQUFRY0JhZ0NWQUI0QUNRQ3dBQyt3RmR3d01RRC8vd0E1LytzRWFnWjlBaVlEMkFBQUFRY0JiQUR4QUZJQURBQ3dBQyt3Rzl5d0h0QXdNZi8vQURuLzZ3VEZCaDBDSmdQWUFBQUJCd0Z2QU53QUhnQU1BTEFBTDdBVTNMQVcwREF4QUFFQU92NkJCR29FalFBZkFHR3lCU0FoRVJJNUFMQUFSVml3QUM4YnNRQWRQbG13QUVWWXNCWXZHN0VXSFQ1WnNBQkZXTEFOTHh1eERSYytXYkFBUlZpd0VpOGJzUklQUGxteUJCSUFFUkk1c0EwUXNnZ0RDaXRZSWRnYjlGbXdFaEN5R3dFS0sxZ2gyQnYwV1RBeEFRTUdCZ2NHQndZWEZqY1hCaWNpSmpjMk55WW1OeE16QXdZV0Z4WTJOeE1FYW9JWXA0UjVDZ1U0R3owTVJWVlhhUUlDUzdMQ0U0SHNnZ3RiWjJ1T0VvTUVqZnoxamNNcFQxZzVBd0VYa0NzQ2JWUmlUUlBkcWdNQS9QOWxjZ01FYjJrREJ3RC8vd0NNQUFBR0hnWWZBaVlEMWdBQUFRY0Jad0VWQUI0QUV3Q3dBRVZZc0FFdkc3RUJIVDVac0EvY01ERUEvLzhBYlFBQUJJQUdId0ltQS9jQUFBRUdBV2N4SGdBVEFMQUFSVml3Q0M4YnNRZ2RQbG13RGR3d01RRC8vd0J0QUFBRWdBWHJBaVlEOXdBQUFRWUFhMmNlQUF3QXNBRXZzQnJjc0FuUU1ESC8vLy9XQUFBRUp3WWVBaVlFcVFBQUFRY0Fkd0U0QUI0QUV3Q3dBRVZZc0Fndkc3RUlIVDVac0F6Y01ERUEvLy8vMWdBQUJDY0Yvd0ltQktrQUFBRUhBV3NCRlFBbkFBa0FzQWN2c0JMY01ERUFBQUgvMWdBQUJDY0VqUUFKQUVRQXNBQkZXTEFITHh1eEJ4MCtXYkFBUlZpd0FpOGJzUUlQUGxteUFBRUtLMWdoMkJ2MFdiSUVBQUlSRWptd0J4Q3lCUUVLSzFnaDJCdjBXYklKQlFjUkVqa3dNU1VoQnlFM0FTRTNJUWNCTUFKZ0kveHBHd0xmL2E4akE0VWF3c0tZQXpIRWxnRC8vLytiQUFBRUJRVWVBaVlEN0FBQUFBY0JkLzlJL3QzLy8vOXRBQUFFTlFVaEFDWUQ2RHdBQUFjQmQvNC8vdUQvLy85NEFBQUU1UVVjQUNZRDVUd0FBQWNCZC81Sy90di8vLzk3QUFBQ0N3VWhBQ1lENUR3QUFBY0JkLzVOL3VELy8vL1MvK29FYlFVZUFDWUQzZ29BQUFjQmQvNmsvdDMvLy84c0FBQUV2QVVlQUNZRDl6d0FBQWNCZC8zKy90My8vLy9pQUFBRWdnVWVBQ1lEMUFvQUFBY0JkLzYwL3QzLy8vK2JBQUFFQlFTTkFnWUQ3QUFBLy84QUNnQUFCQUFFalFJR0Erc0FBUC8vQUFvQUFBUDVCSTBDQmdQb0FBRC8vLy9XQUFBRUp3U05BZ1lFcVFBQS8vOEFDZ0FBQktrRWpRSUdBK1VBQVAvL0FCZ0FBQUhQQkkwQ0JnUGtBQUQvL3dBS0FBQUVuUVNOQWdZRDRnQUEvLzhBQ2dBQUJjZ0VqUUlHQStBQUFQLy9BRHIvNmdSakJLRUNCZ1BlQUFELy93QUtBQUFFTmdTTkFnWUQzUUFBLy84QVlnQUFCRm9FalFJR0E5a0FBUC8vQUcwQUFBU0FCSTBDQmdQM0FBRC8vLytrQUFBRWdBU05BZ1lEOWdBQS8vOEFHQUFBQXRvRjZ3SW1BK1FBQUFFSEFHdi9Wd0FlQUF3QXNBSXZzQlhjc0FUUU1ESC8vd0J0QUFBRWdBWHJBaVlEOXdBQUFRWUFhMmNlQUF3QXNBRXZzQnJjc0FuUU1ESC8vd0FLQUFBRCtRWHJBaVlENkFBQUFRWUFhMjhlQUF3QXNBWXZzQjNjc0F6UU1ESC8vd0FLQUFBRC9nWWVBaVlEdWdBQUFRY0Fkd0VzQUI0QUNRQ3dCQyt3Q053d01RRC8vd0FPLyswRC93U2ZBZ1lEMmdBQS8vOEFHQUFBQWM4RWpRSUdBK1FBQVAvL0FCZ0FBQUxhQmVzQ0pnUGtBQUFCQndCci8xY0FIZ0FNQUxBQ0w3QVYzTEFFMERBeC8vLy84di9yQTdBRWpRSUdBK01BQVAvL0FBb0FBQVNkQmg0Q0pnUGlBQUFCQndCM0FTQUFIZ0FKQUxBRUw3QVAzREF4QVAvL0FITC82QVNDQmdVQ0pnUUtBQUFCQndGcUFJZ0FIZ0FKQUxBUEw3QVQzREF4QVAvLy81c0FBQVFGQkkwQ0JnUHNBQUQvL3dBS0FBQUVBQVNOQWdZRDZ3QUEvLzhBQ2dBQUE5OEVqUUlHQTdvQUFQLy9BQW9BQUFQNUJJMENCZ1BvQUFELy93QUxBQUFFcmdZRkFpWUVCd0FBQVFjQmFnREdBQjRBQ1FDd0FDK3dEZHd3TVFELy93QUtBQUFGeUFTTkFnWUQ0QUFBLy84QUNnQUFCS2tFalFJR0ErVUFBUC8vQURyLzZnUmpCS0VDQmdQZUFBRC8vd0FLQUFBRXBBU05BZ1lEeGdBQS8vOEFDZ0FBQkRZRWpRSUdBOTBBQVAvL0FEbi83QVJKQktNQ0JnUHFBQUQvL3dCaUFBQUVXZ1NOQWdZRDJRQUEvLy8vcEFBQUJJQUVqUUlHQS9ZQUFBQUJBQTMrT1FQdUJLQUFLQUN3c2lJcEtoRVNPUUN3R0Mrd0FFVllzQXd2RzdFTUhUNVpzQUJGV0xBWEx4dXhGdzgrV2JBTUVMSUdBUW9yV0NIWUcvUlpzaWdYREJFU09iQW9MN0svS0FGeXRLOG92eWdDWGJSdktIOG9Bbkd5L3lnQmNiSVBLQUZ5c2w4b0FYS3l6eWdCY2JJL0tBRnh0QjhvTHlnQ1hiS1BLQUZ5c2tvb0FWMnlDU2dHRVJJNXNpWUJDaXRZSWRnYjlGbXlFU1lvRVJJNXNCY1FzQnJRc0JjUXNpRUJDaXRZSWRnYjlGbXlIaVloRVJJNU1ERUJNalkzTmlZaUJnY0hOallYRmhZSEJnY1dGZ2NHQmdjREl4TW1KamN6RmhZekZqWTNOaWNuTndJRVpvQUtDbVd3YWcvdURQM0N3OTRJQ3VsUldnUUgyTFpON2srR2hnTHFBbHhXYXBBTUZkeUhJQUtxVTAxRVRFVStBWml5QWdPbWpiVmxJNFpaanJVVS9rUUJ5Q09xZVVkTUExbFBvQUVCc0FBQkFBcittZ1M5QkkwQUR3Q29zZ01RRVJFU09RQ3dBRVZZc0F3dkc3RU1IVDVac0FCRldMQUpMeHV4Q1IwK1diQUFSVml3QVM4YnNRRVhQbG13QUVWWXNBWXZHN0VHRHo1WnNBQkZXTEFETHh1eEF3OCtXYklLQmdrUkVqbXdDaSswcndxL0NnSmRzajhLQVhHeXp3b0JjYkkvQ2dGeXN2OEtBWEd5RHdvQmNyUnZDbjhLQW5HMDN3cnZDZ0pkdEI4S0x3b0NYYkpmQ2dGeXNnVUJDaXRZSWRnYjlGbXdBeEN5RGdjS0sxZ2gyQnYwV1RBeEFTTVRJeE1oQXlNVE13TWhFek1ETXdSZjdqNjlVdjRHVSszSzdWWUIrMWJ0cTcvK21nRm1BZHYrSlFTTi9oRUI3L3dvQUFBQkFEcitRd1JQQktNQUhnQmVzZ01mSUJFU09RQ3dBRVZZc0Ewdkc3RU5IVDVac0FCRldMQUVMeHV4QkJFK1diQUFSVml3QXk4YnNRTVBQbG15QUFNTkVSSTVzQWJRc2hFTkF4RVNPYkFORUxJVUFRb3JXQ0hZRy9SWnNBTVFzaHdCQ2l0WUlkZ2I5Rmt3TVFFR0JnY0RJeE1tQWpjM0VnQVhGaFlYSnlZbUp5WUdCd1lYRkJZWEZqY0VBaG5vckV2dVRwdVZGd1lnQVVIcHd1SUs2d05nYTRXd0doQUJaR0hqT0FHRnA5UVYvazRCd1M4QktNVTBBUTRCUVFZRTNiMEJaM0FFQmNDMGlUOXdmd1FJMmdELy93QnRBQUFFZ0FTTkFnWUQ5d0FBLy84QU4vNDZCYVVFcHdJbUJDQUFBQUFIQS8wQ3YvK2cvLzhBQ3dBQUJLNEYwZ0ltQkFjQUFBRUhBSElBa0FBaUFBa0FzQUF2c0FyY01ERUEvLzhBY3Yvb0JJSUYwZ0ltQkFvQUFBRUdBSEpTSWdBSkFMQVBMN0FRM0RBeEFQLy9BRU1BQUFVM0JJNENCZ1BTQUFELy8vK2svbFFFcmdXd0FpWUFKUUFBQUFjQmJRRnRBQVAvL3dBaS9sZ0QzQVJRQWlZQVJRQUFBQWNCYlFDbkFBZi8vd0FuL2xzRXVnV3dBaVlBS1FBQUFBY0JiUUV1QUFyLy93QTcvbEVFQWdSUkFpWUFTUUFBQUFjQmJRRDhBQUQvLy8vay9wc0J5d1E2QWlZQTlBQUFBQWNCZGdORUFBb0FBQUFBQUE4QXVnQURBQUVFQ1FBQUFGNEFBQUFEQUFFRUNRQUJBQm9BWGdBREFBRUVDUUFDQUF3QWVBQURBQUVFQ1FBREFDZ0FoQUFEQUFFRUNRQUVBQ2dBaEFBREFBRUVDUUFGQUN3QXJBQURBQUVFQ1FBR0FDWUEyQUFEQUFFRUNRQUhBRUFBL2dBREFBRUVDUUFKQUF3QlBnQURBQUVFQ1FBTEFCUUJTZ0FEQUFFRUNRQU1BQ1lCWGdBREFBRUVDUUFOQUZ3QmhBQURBQUVFQ1FBT0FGUUI0QUFEQUFFRUNRQVFBQXdDTkFBREFBRUVDUUFSQUJvQ1FBQkRBRzhBY0FCNUFISUFhUUJuQUdnQWRBQWdBRElBTUFBeEFERUFJQUJIQUc4QWJ3Qm5BR3dBWlFBZ0FFa0FiZ0JqQUM0QUlBQkJBR3dBYkFBZ0FGSUFhUUJuQUdnQWRBQnpBQ0FBVWdCbEFITUFaUUJ5QUhZQVpRQmtBQzRBVWdCdkFHSUFid0IwQUc4QUlBQk5BR1VBWkFCcEFIVUFiUUJKQUhRQVlRQnNBR2tBWXdCU0FHOEFZZ0J2QUhRQWJ3QWdBRTBBWlFCa0FHa0FkUUJ0QUNBQVNRQjBBR0VBYkFCcEFHTUFWZ0JsQUhJQWN3QnBBRzhBYmdBZ0FESUFMZ0F3QURBQU1RQXhBRFVBTWdBN0FDQUFNZ0F3QURFQU5BQlNBRzhBWWdCdkFIUUFid0F0QUUwQVpRQmtBR2tBZFFCdEFFa0FkQUJoQUd3QWFRQmpBRklBYndCaUFHOEFkQUJ2QUNBQWFRQnpBQ0FBWVFBZ0FIUUFjZ0JoQUdRQVpRQnRBR0VBY2dCckFDQUFid0JtQUNBQVJ3QnZBRzhBWndCc0FHVUFMZ0JIQUc4QWJ3Qm5BR3dBWlFCSEFHOEFid0JuQUd3QVpRQXVBR01BYndCdEFFTUFhQUJ5QUdrQWN3QjBBR2tBWVFCdUFDQUFVZ0J2QUdJQVpRQnlBSFFBY3dCdkFHNEFUQUJwQUdNQVpRQnVBSE1BWlFCa0FDQUFkUUJ1QUdRQVpRQnlBQ0FBZEFCb0FHVUFJQUJCQUhBQVlRQmpBR2dBWlFBZ0FFd0FhUUJqQUdVQWJnQnpBR1VBTEFBZ0FGWUFaUUJ5QUhNQWFRQnZBRzRBSUFBeUFDNEFNQUJvQUhRQWRBQndBRG9BTHdBdkFIY0Fkd0IzQUM0QVlRQndBR0VBWXdCb0FHVUFMZ0J2QUhJQVp3QXZBR3dBYVFCakFHVUFiZ0J6QUdVQWN3QXZBRXdBU1FCREFFVUFUZ0JUQUVVQUxRQXlBQzRBTUFCU0FHOEFZZ0J2QUhRQWJ3Qk5BR1VBWkFCcEFIVUFiUUFnQUVrQWRBQmhBR3dBYVFCakFBTUFBUC8wQUFEL2FnQmtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQ0FBZ0FBdi8vQUE4QUFRQUFBQW9BWEFDc0FBUkVSa3hVQUJwamVYSnNBQ2huY21WckFEWnNZWFJ1QUVRQUJBQUFBQUQvL3dBQ0FBQUFCQUFFQUFBQUFQLy9BQUlBQVFBRkFBUUFBQUFBLy84QUFnQUNBQVlBQkFBQUFBRC8vd0FDQUFNQUJ3QUlZM0J6Y0FBeVkzQnpjQUE0WTNCemNBQStZM0J6Y0FCRWEyVnliZ0JLYTJWeWJnQkthMlZ5YmdCS2EyVnliZ0JLQUFBQUFRQUJBQUFBQVFBREFBQUFBUUFDQUFBQUFRQUFBQUFBQVFBRUFBVUFEQUFNQUF3QURBSGVBQUVBQUFBQkFBZ0FBUUFLQUFVQUpBQklBQUVBM2dBSUFDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQU93QThBRDBBUGdCbUFHZ0Fnd0NFQUlVQWhnQ0hBSWdBaWdDTEFJd0FqUUNPQUk4QWtBQ1JBSklBa3dDVUFKVUFsZ0NYQUpnQW1RQ2NBSjBBbmdDZkFLQUF3d0RGQU1jQXlRRExBTTBBendEUkFOTUExUURYQU5rQTJ3RGRBTjhBNFFEakFPVUE1d0RyQU8wQTd3RHhBUE1BOXdENUFQd0EvZ0VBQVFJQkJnRUlBUW9CRHdFUkFSTUJGUUVYQVJrQkd3RWRBUjhCSVFFakFTVUJKd0VwQVNzQkxRRXZBVEVCTXdFMUFUY0JPUUU3QVR3QlBnRkFBVTRCWWdGNUFYc0JmQUY5QVg0QmZ3R0FBWUlCZ3dHRUFZVUJoZ0dIQVlnQmlRR0tBWXNCakFHTkFZOEJrQUdSQVpJQmt3R1VBWlVCbGdHWEFaZ0JtUUdhQVpzQnhBSEZBY1lCeHdISUFja0J5Z0hMQWN3QnpRSE9BYzhCMFFIU0FkTUIxQUhWQWRZQjF3SFlBZGtCMmdIYkFkd0IzUUhlQWQ4QjRBSGhBZUlCNHdIa0FlVUI1Z0huQWVnQjZRSHFBZXNCN0FIdEFlNEI3d0h3QWZFQjhnSlNBbFFDV0FKYUFsd0NYZ0ppQW1RQ2FnSnNBbkFDY2dKMEFuWUNlZ0o4QW40Q2dBS2FBcUlDcEFLcUFyQURod09PQTVNRGxnQUNBQUFBQWdBS085b0FBUU5zQUFRQUFBR3hCdEk2K2pyNkJ2d0hVamZlSTJJN21EdXFPSFlIV0RpV09KWTQzalRlRHFnNGxqaVdPNm9taEFxU0N4UTFNRGplTkk0M3VEZEtPT1FQWWd0K09GUTJHamlNQzhBTTZnejBONjQzcmppNE5ob08xZzNxT1c0T1REZW9PVzRPWmpmZU45NDMzamZlTjk0MzNqdVlPSFk0ZGpoMk9IWTRsamlXT0pZNGxqdXFPSlk3cWp1cU82bzdxanVxT040NDNqamVPTjQ0NURoVU9GUTRWRGhVT0ZRNFZEaU1PSXc0akRpTU42NDR1RGk0T0xnNHVEaTRPVzQyR2psdU45NDRWRGZlT0ZRMzNqaFVPNWc3bUR1WU81ZzdxanVxT0hZNGpEaDJPSXc0ZGppTU9IWTRqRGgyT0l3NGxqZXVPSlk0bGppV09KWTRsamplTk40T3FBNm9EcWdPcURpV042NDRsamV1T0pZM3JqZXVPNm80dUR1cU9MZzdxamk0RHRZTzFnN1dOVEExTURVd09ONDQzamplT040NDNqamVON2c0NURsdU9PUVBZZzlpRDJJMzNqaFVOVEFPNkRyNk45NDRkamlXT0pZN3FqamtOOTRqWWpaK045NDRkZzlpT0pZN3FqaVdOTjQzM2ppV09KWVBoRHVxSm9RUWZqVXdPT1FSZkRkS0VsbzRsamprTjY0UytEbHVFdjQzcmhXOE9XNFhsamk0R0tnWXdoaklHTTRheUJyT0d3UWJOamk0T0hZNGRodTBObjQ0bGppV09ONGRLaDdjSUpvMDNqWTBPSlkzM2lIUUkySTJmaU5zT0hZM1NpVzZPSlkwM2ppV09KWTRsanVxSm9RN21EVXdOalEzU2ppV09KWW1waWhBTkQ0cEhpbmdLbTQ0VkNyTUs2WTNRQ3d3T0l3M3FDejZMU1E0dURZYUxvbzViallhTjZneEVERk9Nb0EwYURZYU13STRqRGlNTjBBemlET3lOQWc1YmpRK05HZzMzamk0Tkk0NWJqU09PVzQwdERZYU5uNDNRRForTjBvM3FEVGVOTjQwM2pUZU9KWTdtRFV3T09RNWJqamtOMG8zcURldU9KWTNTamVvT0pZNGxqaVdOOTQ0VkRmZU9GUTRkamlNT0l3NGpEZEtONmc3cWppNE9MZzJHalkwT1c0Mk5EbHVOalE1YmpaK04wQTNRRGRLTjZnMzNqaFVPSlkzcmplNE43ZzN1RGZlT0ZRMzNqaFVOOTQ0VkRmZU9GUTMzamhVTjk0NFZEZmVPRlEzM2poVU45NDRWRGZlT0ZRMzNqaFVOOTQ0VkRoMk9JdzRkamlNT0hZNGpEaDJPSXc0ZGppTU9IWTRqRGgyT0l3NGRqaU1PSlk0bGp1cU9MZzdxamk0TzZvNHVEdXFPTGc3cWppNE82bzR1RHVxT0xnNHVEamVPTjQ0NURsdU9PUTViamprT1c0NDVEbHVPNm82K2ptSU92bzYranI2T3ZvNitqc0FPd283SERzdU8wQTdYanRvTzNJN21EdXFPNm9BQVFHeEFBUUFCZ0FMQUF3QUV3QWxBQ1lBSndBb0FDa0FLZ0FzQUMwQUxnQXZBREFBTVFBeUFETUFOQUExQURZQU9BQTVBRG9BT3dBOEFEMEFQZ0EvQUVVQVJnQkpBRW9BVEFCUEFGRUFVZ0JUQUZRQVZnQllBRm9BV3dCY0FGMEFYd0NEQUlRQWhRQ0dBSWNBaUFDS0FJc0FqQUNOQUk0QWp3Q1FBSkVBa2dDVEFKUUFsUUNXQUpjQW1BQ1pBSndBblFDZUFKOEFvQUNqQUtRQXBRQ21BS2NBcUFDckFLd0FyUUN1QUxRQXRRQzJBTGNBdUFDNUFNQUF3UURDQU1NQXhBREZBTVlBeHdESUFNa0F5d0ROQU04QTBRRFRBTlVBMWdEWEFOZ0EyUURhQU5zQTNBRGRBTjRBNXdEb0FPc0E3UUR2QVBFQTh3RDNBUGtBL0FEK0FRQUJBZ0VHQVFjQkNBRUpBUW9CQ3dFTUFROEJFQUVSQVJJQkV3RVVBUmdCR2dFY0FTVUJKd0VwQVNzQkxRRXZBVEVCTXdFMUFUY0JPUUU2QVRzQlBBRStBVUFCVGdGUEFXSUJaUUZtQVhrQmV3RjhBWDBCZmdGL0FZSUJnd0dFQVlVQmhnR0hBWWdCaVFHS0FZc0JqQUdOQVk0Qmp3R1FBWklCa3dHVUFaVUJsZ0dYQVpnQm1nR2JBWjRCb1FHakFhWUJwd0dwQWEwQnJnR3ZBYkVCc2dHekFiUUJ0UUcyQWJnQnVRRzhBY01CeEFIRkFjWUJ5UUhLQWNzQnpBSE5BYzRCendIUkFkSUIwd0hVQWRVQjFnSFhBZGdCMlFIYUFkc0IzUUhlQWQ4QjRBSGhBZU1CNUFIbEFlWUI2QUhwQWVzQjdBSHRBZThCOEFIeEFmSUI4d0gwQWZVQjlnSDNBZmdCK1FINkFmMENBUUlEQWdVQ0JnSUhBZ2dDQ1FJTUFnMENEd0lRQWhFQ0V3SVVBaFlDRndJY0FoMENJUUlsQWlZQ0tRSTJBamNDT0FJNUFqb0NSQUpSQWxJQ1V3SlVBbGdDV1FKY0FsNENZQUppQW1RQ2JBSnVBbkFDY1FKeUFuUUNkUUo5QW9JQ2d3S0VBb3NDandLUkFwSUNrd0tVQXBVQ21BS1pBcHNDblFLZUFwOENxQUtwQXEwQ3J3S3dBckVDc2dLekFyUUN0UUs0QXJrQ3ZRSytBcjhDMWdMWEF1WUM1d0w0QXZvQy9BTUNBd01EQkFNRkF3WURCd01JQXdrRENnTUxBd3dERFFNT0F3OERFQU1SQXhJREV3TVVBeFVERmdNWEF4Z0RHUU1hQXhzREhBTWRBeDRESHdNZ0F5RURJZ01qQXlRREpRTW1BeWNES0FNcEF5b0RMQU11QXk4RE1BTXhBeklETXdNMEF6VUROZ00zQXpnRE9RTTZBenNEUXdOR0EwZ0RWQU5WQTFZRFZ3TllBMWtEV2dOYkExd0RjQU54QTNNRGRBTjFBMzREZndQWkE5c0QzQVBlQStFRDRnUHBBK3dFTVFRekJEUUFDZ0E0LzhRQkpmL0VBU2YveEFGaS84UUJ4Zi9FQWM3L3hBSGwvOFFDWXYvRUFtNy94QUoyLzhRQUZRQTZBQlFBT3dBbUFEMEFGZ0NnQUJZQk53QW1BVGtBRmdFN0FCWUJmd0FXQVpVQUZnR2JBQllDTndBVUFqa0FGQUp3QUJZQ2NnQVdBdmdBSmdMNkFDWUMvQUFtQTFRQUZnTldBQllEV0FBV0Exb0FGZ0FCQUJQL0NBRE9BQkQrN2dBUy91NEFKZjlBQUM3L01BQTRBQlFBUmYvZUFFZi82d0JJLytzQVNmL3JBRXYvNndCVC8rc0FWZi9yQUZiLzVnQlovK29BV3Yvb0FGMy82QUNELzBBQWhQOUFBSVgvUUFDRy8wQUFoLzlBQUlqL1FBQ2ovOTRBcFAvZUFLWC8zZ0NtLzk0QXAvL2VBS2ovM2dDcS8rc0FxLy9yQUt6LzZ3Q3QvK3NBcnYvckFMWC82d0MyLytzQXQvL3JBTGovNndDNS8rc0F2UC9xQUwzLzZnQysvK29Bdi8vcUFNRC82QURDLytnQXcvOUFBTVQvM2dERi8wQUF4di9lQU1mL1FBREkvOTRBeXYvckFNei82d0RPLytzQTBQL3JBTkwvNndEVy8rc0EyUC9yQU5yLzZ3RGMvK3NBM3YvckFPRC82d0RpLytzQTVQL3JBT2IvNndEMy96QUJFUC9yQVJMLzZ3RVUvK3NCRnYvckFTVUFGQUVuQUJRQkxQL3FBUzcvNmdFdy8rb0JNdi9xQVRULzZnRTIvK29CT3Yvb0FVYi82d0ZJLytvQlR2OUFBVS8vM2dGaUFCUUJlZjlBQVlML1FBR0YvMEFCalA5QUFaei82d0dnLytvQm9mL3JBYVAvNkFHdC8rZ0JyLy9yQWJMLzZ3R3ovK3NCdGYvcUFidi82Z0c4LytzQnZmL3FBY1VBRkFITC96QUJ6Z0FVQWRQL1FBSGxBQlFCOC8vZUFmai82d0lCLytzQ0JQL3JBZ2IvNkFJSC8rc0NFLy9yQWhULzZ3SVgvK3NDSWYvb0Fpbi9RQUkyLytzQ09QL29BanIvNkFJOC8rc0NRUC9yQWtULzZ3SmlBQlFDYS8vckFtMy82d0p1QUJRQ2NmL29BbllBRkFLUy8wQUNrLy9lQXBUL1FBS1YvOTRDbWYvckFwdi82d0tkLytzQ3FmL3JBcXYvNndLdC8rc0NzZi9vQXJQLzZBSzEvK2dDdy8vckFzVC82d0xGLytzQ3ovL3JBdGIvUUFMWC85NERBdjlBQXdQLzNnTUUvMEFEQmYvZUF3Yi9RQU1ILzk0RENQOUFBd24vM2dNSy8wQURDLy9lQXd6L1FBTU4vOTRERHY5QUF3Ly8zZ01RLzBBREVmL2VBeEwvUUFNVC85NERGUDlBQXhYLzNnTVcvMEFERi8vZUF4ai9RQU1aLzk0REcvL3JBeDMvNndNZi8rc0RJZi9yQXlQLzZ3TWwvK3NESi8vckF5bi82d012LytzRE1mL3JBelAvNndNMS8rc0ROLy9yQXpuLzZ3TTcvK3NEUGYvckF6Ly82d05CLytzRFEvL3JBMFgvNndOSC8rb0RTZi9xQTB2LzZnTk4vK29EVC8vcUExSC82Z05ULytvRFZmL29BMWYvNkFOWi8rZ0RXLy9vQTNMKzdnTjIvdTREZXY3dUEzdis3Z1BzLzhBQUlBQTQvOThBT3Yva0FEdi83QUE5LzkwQW9QL2RBU1gvM3dFbi85OEJOLy9zQVRuLzNRRTcvOTBCWXYvZkFYLy8zUUdWLzkwQm0vL2RBY1gvM3dITy85OEI1Zi9mQWpmLzVBSTUvK1FDWXYvZkFtNy8zd0p3LzkwQ2N2L2RBbmIvM3dMNC8rd0Mrdi9zQXZ6LzdBTlUvOTBEVnYvZEExai8zUU5hLzkwRDdBQU9BQm9BT1AvT0FEci83UUE5LzlBQW9QL1FBU1gvemdFbi84NEJPZi9RQVR2LzBBRmkvODRCZi8vUUFaWC8wQUdiLzlBQnhmL09BYzcvemdIbC84NENOLy90QWpuLzdRSmkvODRDYnYvT0FuRC8wQUp5LzlBQ2R2L09BMVQvMEFOVy85QURXUC9RQTFyLzBBQVFBQzcvN2dBNS8rNEFuUC91QUozLzdnQ2UvKzRBbi8vdUFQZi83Z0VyLys0QkxmL3VBUy8vN2dFeC8rNEJNLy91QVRYLzdnSEwvKzREUnYvdUEwai83Z0JLQUFZQUVBQUxBQkFBRFFBVUFFRUFFZ0JILytnQVNQL29BRW4vNkFCTC8rZ0FWZi9vQUdFQUV3Q3EvK2dBcS8vb0FLei82QUN0LytnQXJ2L29BTXIvNkFETS8rZ0F6di9vQU5ELzZBRFMvK2dBMXYvb0FOai82QURhLytnQTNQL29BTjcvNkFEZy8rZ0E0di9vQU9ULzZBRG0vK2dCRnYvb0FVYi82QUZtQUJBQm5QL29BYUgvNkFHeS8rZ0JzLy9vQWZqLzZBSUUvK2dDQi8vb0FoUC82QUlVLytnQ0YvL29BanovNkFKQS8rZ0NSUC9vQW12LzZBSnQvK2dDbWYvb0Fwdi82QUtkLytnQ3EvL29Bc1AvNkFMRS8rZ0N4Zi9vQXMvLzZBTWIvK2dESGYvb0F4Ly82QU1oLytnREkvL29BeVgvNkFNbi8rZ0RLZi9vQXozLzZBTS8vK2dEUWYvb0EwWC82QU53QUJBRGNRQVFBM01BRUFOMEFCQURkUUFRQTM0QUVBTi9BQkFBQWdJRi85WURjZitZQUQwQVIvL3NBRWovN0FCSi8rd0FTLy9zQUZYLzdBQ3EvK3dBcS8vc0FLei83QUN0Lyt3QXJ2L3NBTXIvN0FETS8rd0F6di9zQU5ELzdBRFMvK3dBMXYvc0FOai83QURhLyt3QTNQL3NBTjcvN0FEZy8rd0E0di9zQU9ULzdBRG0vK3dCRnYvc0FVYi83QUdjLyt3Qm9mL3NBYkwvN0FHei8rd0IrUC9zQWdULzdBSUgvK3dDRS8vc0FoVC83QUlYLyt3Q1BQL3NBa0QvN0FKRS8rd0NhLy9zQW0zLzdBS1ovK3dDbS8vc0FwMy83QUtyLyt3Q3cvL3NBc1QvN0FMRi8rd0N6Ly9zQXh2LzdBTWQvK3dESC8vc0F5SC83QU1qLyt3REpmL3NBeWYvN0FNcC8rd0RQZi9zQXovLzdBTkIvK3dEUmYvc0FCZ0FVLy9pQUxYLzRnQzIvK0lBdC8vaUFMai80Z0M1LytJQkVQL2lBUkwvNGdFVS8rSUJyLy9pQWJ6LzRnSUIvK0lDTnYvaUFxbi80Z0t0LytJREwvL2lBekgvNGdNei8rSUROZi9pQXpmLzRnTTUvK0lETy8vaUEwUC80Z054QUJnQUJnQVEvNFFBRXYrRUEzTC9oQU4yLzRRRGV2K0VBM3YvaEFBUUFDNy83QUE1Lyt3QW5QL3NBSjMvN0FDZS8rd0FuLy9zQVBmLzdBRXIvK3dCTGYvc0FTLy83QUV4Lyt3Qk0vL3NBVFgvN0FITC8rd0RSdi9zQTBqLzdBQUxBRnYvekFQVy85Y0QxLys0QTlqLzdnUFovNzBEM1AveUE5Ny84Z1BtLy9FRDZ2L3pBK3dBRXdQMy83Y0FCQUJLQUJRQVdBQXlBRnNBRVFOeEFCQUFIZ0FHLy9JQUMvL3lBRnIvOHdCZC8vTUF3UC96QU1MLzh3RTYvL01CWnYveUFhUC84d0d0Ly9NQ0JmLzFBZ2IvOHdJaC8vTUNPUC96QWpyLzh3SngvL01Dc2YvekFyUC84d0sxLy9NRFZmL3pBMWYvOHdOWi8vTURXLy96QTNELzhnTngvL0lEYy8veUEzVC84Z04xLy9JRGZ2L3lBMy8vOGdBSUFGdi81UUdXLzhzQnVQL2tBOXovN0FQZS8rd0Q1di9yQStyLzdRUHNBQTBBUGdBbi8vTUFLLy96QURQLzh3QTEvL01BaXYvekFKWC84d0NXLy9NQWwvL3pBSmovOHdDWi8vTUFtLy96QU1uLzh3REwvL01BemYvekFNLy84d0RmLy9NQTRmL3pBT1AvOHdEbC8vTUJELy96QVJILzh3RVQvL01CRmYvekFVWC84d0ZTLy9NQmZ2L3pBWW4vOHdHUS8vTUJxd0FOQWNmLzh3SGgvL01CNVAvekFpUC84d0kxLy9NQ08vL3pBajMvOHdJLy8vTUNRZi96QWtQLzh3SnEvL01DYlAvekFxai84d0txLy9NQ3JQL3pBczcvOHdNdS8vTURNUC96QXpMLzh3TTAvL01ETnYvekF6ai84d002Ly9NRFBQL3pBejcvOHdOQS8vTURRdi96QTBULzh3TmMvL01FTWYvekJETC84d1EwLy9NRU5mL3pBRDhBSi8vbUFDdi81Z0F6LytZQU5mL21BSXIvNWdDVi8rWUFsdi9tQUpmLzVnQ1kvK1lBbWYvbUFKdi81Z0RKLytZQXkvL21BTTMvNWdEUC8rWUEzLy9tQU9ILzVnRGovK1lBNWYvbUFRLy81Z0VSLytZQkUvL21BUlgvNWdGRi8rWUJVdi9tQVg3LzVnR0ovK1lCa1AvbUFaYi93Z0dyQUJBQngvL21BZUgvNWdIay8rWUNJLy9tQWpYLzVnSTcvK1lDUGYvbUFqLy81Z0pCLytZQ1EvL21BbXIvNWdKcy8rWUNxUC9tQXFyLzVnS3MvK1lDenYvbUF5Ny81Z013LytZRE12L21BelQvNWdNMi8rWURPUC9tQXpyLzVnTTgvK1lEUHYvbUEwRC81Z05DLytZRFJQL21BMXovNWdReC8rWUVNdi9tQkRULzVnUTEvK1lBTndBbC8rUUFQUC9TQUQzLzB3Q0QvK1FBaFAva0FJWC81QUNHLytRQWgvL2tBSWovNUFDZy85TUF3Ly9rQU1YLzVBREgvK1FCT2YvVEFUdi8wd0ZPLytRQmVmL2tBWC8vMHdHQy8rUUJoZi9rQVl6LzVBR1YvOU1CbC8vU0Fadi8wd0dyLytJQjAvL2tBZG4vMGdIby85SUNLZi9rQWxqLzBnSncvOU1DY3YvVEFuVC8wZ0tELzlJQ2t2L2tBcFQvNUFLZS85SUN2di9TQXRiLzVBTUMvK1FEQlAva0F3Yi81QU1JLytRREN2L2tBd3ovNUFNTy8rUURFUC9rQXhMLzVBTVUvK1FERnYva0F4ai81QU5VLzlNRFZ2L1RBMWovMHdOYS85TUFKd0FRLzBZQUV2OUdBQ1gvelFDRC84MEFoUC9OQUlYL3pRQ0cvODBBaC8vTkFJai96UURELzgwQXhmL05BTWYvelFGTy84MEJlZi9OQVlML3pRR0YvODBCalAvTkFiSC84Z0hULzgwQ0tmL05BcEwvelFLVS84MEMxdi9OQXdML3pRTUUvODBEQnYvTkF3ai96UU1LLzgwRERQL05BdzcvelFNUS84MERFdi9OQXhUL3pRTVcvODBER1AvTkEzTC9SZ04yLzBZRGV2OUdBM3YvUmdBQkFhc0FEZ0N2QUVmLzNBQkkvOXdBU2YvY0FFdi8zQUJSLzhFQVV2L0JBRlAvMWdCVS84RUFWZi9jQUZuLzNRQmEvK0VBWGYvaEFLci8zQUNyLzl3QXJQL2NBSzMvM0FDdS85d0F0UC9CQUxYLzFnQzIvOVlBdC8vV0FMai8xZ0M1LzlZQXZQL2RBTDMvM1FDKy85MEF2Ly9kQU1ELzRRREMvK0VBeXYvY0FNei8zQURPLzl3QTBQL2NBTkwvM0FEVy85d0EyUC9jQU5yLzNBRGMvOXdBM3YvY0FPRC8zQURpLzl3QTVQL2NBT2IvM0FFSC84RUJDZi9CQVF2L3dRRU0vOEVCRVAvV0FSTC8xZ0VVLzlZQkZ2L2NBU3ovM1FFdS85MEJNUC9kQVRMLzNRRTAvOTBCTnYvZEFUci80UUZHLzl3QlNQL2RBWnovM0FHZS84RUJvUC9kQWFILzNBR2ovK0VCcGYvbUFhZi93UUdvLytzQnFmL3BBYTMvNFFHdS8vQUJyLy9XQWJELzV3R3kvOXdCcy8vY0FiVC80d0cxLzkwQnR2L09BYmovMUFHNS85c0J1Ly9kQWJ6LzFnRzkvOTBCOXYvQkFmai8zQUg3LzhFQi9QL0JBZjMvd1FILy84RUNBUC9CQWdILzFnSUMvOEVDQS8vQkFnVC8zQUlHLytFQ0IvL2NBZ24vd1FJTC84RUNEUC9CQWcvL3dRSVIvOEVDRS8vY0FoVC8zQUlXLzhFQ0YvL2NBaDMvd1FJZi84RUNJUC9CQWlILzRRSTIvOVlDT1AvaEFqci80UUk4Lzl3Q1FQL2NBa1QvM0FKTi84RUNYZi9CQW1YL3dRSm4vOEVDYS8vY0FtMy8zQUp4LytFQ2l2L0JBb3ovd1FLUS84RUNtZi9jQXB2LzNBS2QvOXdDcGYvQkFxZi93UUtwLzlZQ3EvL2NBcTMvMWdLeC8rRUNzLy9oQXJYLzRRSzUvOEVDdS8vQkFyMy93UUxELzl3Q3hQL2NBc1gvM0FMUC85d0M1Ly9CQXh2LzNBTWQvOXdESC8vY0F5SC8zQU1qLzl3REpmL2NBeWYvM0FNcC85d0RMLy9XQXpILzFnTXovOVlETmYvV0F6Zi8xZ001LzlZRE8vL1dBejMvM0FNLy85d0RRZi9jQTBQLzFnTkYvOXdEUi8vZEEwbi8zUU5MLzkwRFRmL2RBMC8vM1FOUi85MERVLy9kQTFYLzRRTlgvK0VEV2YvaEExdi80UUIyQUFiLzJnQUwvOW9BUi8vd0FFai84QUJKLy9BQVMvL3dBRlgvOEFCWi8rOEFXdi9jQUYzLzNBQ3EvL0FBcS8vd0FLei84QUN0Ly9BQXJ2L3dBTHovN3dDOS8rOEF2di92QUwvLzd3REEvOXdBd3YvY0FNci84QURNLy9BQXp2L3dBTkQvOEFEUy8vQUExdi93QU5qLzhBRGEvL0FBM1Avd0FONy84QURnLy9BQTR2L3dBT1QvOEFEbS8vQUJGdi93QVN6Lzd3RXUvKzhCTVAvdkFUTC83d0UwLys4Qk52L3ZBVHIvM0FGRy8vQUJTUC92QVdiLzJnR2MvL0FCb1AvdkFhSC84QUdqLzl3QnFQL3NBYXNBRHdHdC85d0JzUC9xQWJMLzhBR3ovL0FCdFAvT0FiWC83d0cyLytjQnUvL3ZBYjMvN3dINC8vQUNCUC93QWdiLzNBSUgvL0FDRS8vd0FoVC84QUlYLy9BQ0lmL2NBamovM0FJNi85d0NQUC93QWtELzhBSkUvL0FDYS8vd0FtMy84QUp4Lzl3Q21mL3dBcHYvOEFLZC8vQUNxLy93QXJILzNBS3ovOXdDdGYvY0FzUC84QUxFLy9BQ3hmL3dBcy8vOEFNYi8vQURIZi93QXgvLzhBTWgvL0FESS8vd0F5WC84QU1uLy9BREtmL3dBejMvOEFNLy8vQURRZi93QTBYLzhBTkgvKzhEU2YvdkEwdi83d05OLys4RFQvL3ZBMUgvN3dOVC8rOERWZi9jQTFmLzNBTlovOXdEVy8vY0EzRC8yZ054LzlvRGMvL2FBM1QvMmdOMS85b0Rmdi9hQTMvLzJnQkVBQkFBREFBU0FBd0FSLy9uQUVqLzV3QkovK2NBUy8vbkFGWC81d0NxLytjQXEvL25BS3ovNXdDdC8rY0Fydi9uQU1yLzV3RE0vK2NBenYvbkFORC81d0RTLytjQTF2L25BTmovNXdEYS8rY0EzUC9uQU43LzV3RGcvK2NBNHYvbkFPVC81d0RtLytjQkZ2L25BVWIvNXdHYy8rY0JvZi9uQWFzQUR3R3kvK2NCcy8vbkFmai81d0lFLytjQ0IvL25BaFAvNXdJVS8rY0NGLy9uQWp6LzV3SkEvK2NDUlAvbkFtdi81d0p0LytjQ21mL25BcHYvNXdLZC8rY0NxLy9uQXNQLzV3TEUvK2NDeGYvbkFzLy81d01iLytjREhmL25BeC8vNXdNaC8rY0RJLy9uQXlYLzV3TW4vK2NES2YvbkF6My81d00vLytjRFFmL25BMFgvNXdOeUFBd0RkZ0FNQTNvQURBTjdBQXdBQmdHMC8rb0I5Ly91QWdYLzFRSVAvKzBDWS8vc0F0SC83QUFCQWdYL3dBQUJBYlFBSUFCK0FBWUFEQUFMQUF3QVIvL29BRWovNkFCSi8rZ0FTZ0FNQUV2LzZBQlQvK29BVmYvb0FGb0FDd0JkQUFzQXF2L29BS3YvNkFDcy8rZ0FyZi9vQUs3LzZBQzEvK29BdHYvcUFMZi82Z0M0LytvQXVmL3FBTUFBQ3dEQ0FBc0F5di9vQU16LzZBRE8vK2dBMFAvb0FOTC82QURXLytnQTJQL29BTnIvNkFEYy8rZ0Ezdi9vQU9ELzZBRGkvK2dBNVAvb0FPYi82QUVRLytvQkV2L3FBUlQvNmdFVy8rZ0JPZ0FMQVViLzZBRm1BQXdCblAvb0FhSC82QUdqQUFzQnEvK1FBYTBBQ3dHdi8rb0JzQUFMQWJMLzZBR3ovK2dCdEFBTUFiei82Z0g0LytnQ0FmL3FBZ1QvNkFJR0FBc0NCLy9vQWhQLzZBSVUvK2dDRi8vb0FpRUFDd0kyLytvQ09BQUxBam9BQ3dJOC8rZ0NRUC9vQWtULzZBSnIvK2dDYmYvb0FuRUFDd0taLytnQ20vL29BcDMvNkFLcC8rb0NxLy9vQXEzLzZnS3hBQXNDc3dBTEFyVUFDd0xELytnQ3hQL29Bc1gvNkFMUC8rZ0RHLy9vQXgzLzZBTWYvK2dESWYvb0F5UC82QU1sLytnREovL29BeW4vNkFNdi8rb0RNZi9xQXpQLzZnTTEvK29ETi8vcUF6bi82Z003LytvRFBmL29Bei8vNkFOQi8rZ0RRLy9xQTBYLzZBTlZBQXNEVndBTEExa0FDd05iQUFzRGNBQU1BM0VBREFOekFBd0RkQUFNQTNVQURBTitBQXdEZndBTUE5Y0FEUVBaQUE0RDJ2LzFBOXovN0FQZS8rMEQ1di9zQStyLzdnUHMvNzhEOXdBTkFBRUNCZi9pQUEwQVhQL3RBRjcvN1FFOS8rMEJQLy90QVVILzdRSDUvKzBDQmYvQUFnai83UUpaLyswQ2RmL3RBb1QvN1FLZi8rMEN2Ly90QUF3QVhQL3lBRjcvOGdFOS8vSUJQLy95QVVILzhnSDUvL0lDQ1AveUFsbi84Z0oxLy9JQ2hQL3lBcC8vOGdLLy8vSUFId0JhLy9RQVhQL3lBRjMvOUFCZS8vTUF3UC8wQU1MLzlBRTYvL1FCUGYvekFULy84d0ZCLy9NQm8vLzBBYTMvOUFINS8vSUNCdi8wQWdqLzhnSWgvL1FDT1AvMEFqci85QUpaLy9JQ2NmLzBBblgvOGdLRS8vSUNuLy95QXJILzlBS3ovL1FDdGYvMEFyLy84Z05WLy9RRFYvLzBBMW4vOUFOYi8vUUFYUUFHLzhvQUMvL0tBRGovMGdBNi85UUFQUC8wQUQzLzB3QmEvK1lBWFAvdkFGMy81Z0NnLzlNQXdQL21BTUwvNWdFbC85SUJKLy9TQVRuLzB3RTYvK1lCTy8vVEFXTC8wZ0ZtLzhvQmYvL1RBWlgvMHdHWC8vUUJtLy9UQWFQLzVnR3QvK1lCeGYvU0FjNy8wZ0hSLyswQjJmLzBBZVgvMGdIbS8rMEI2UC8wQWVyLzRRSHYvOVFCK2YvdkFnWC95UUlHLytZQ0NQL3ZBZy8vMFFJaC8rWUNKUC9sQWpmLzFBSTQvK1lDT2YvVUFqci81Z0pDLytNQ1dQLzBBbG4vN3dKaS85SUNZLy9FQW03LzBnSncvOU1DY2YvbUFuTC8wd0owLy9RQ2RmL3ZBbmIvMGdKNC8rRUNldi9oQW9QLzlBS0UvKzhDamYvaEFwNy85QUtmLys4Q3NQL3RBckgvNWdLeS8rMENzLy9tQXJULzdRSzEvK1lDdHYvaEFyNy85QUsvLys4Q3h2L1VBc2YvOVFMSS8rY0MwUDlrQXRIL3lRTlUvOU1EVmYvbUExYi8wd05YLytZRFdQL1RBMW4vNWdOYS85TURXLy9tQTNEL3lnTngvOG9EYy8vS0EzVC95Z04xLzhvRGZ2L0tBMy8veWdCc0FBYi93QUFMLzhBQU9QK2RBRHIveHdBOC8vQUFQZityQUZILzBnQlMvOUlBVlAvU0FLRC9xd0MwLzlJQkIvL1NBUW4vMGdFTC85SUJEUC9TQVNYL25RRW4vNTBCT2YrckFUdi9xd0ZpLzUwQlp2L0FBWC8vcXdHVi82c0JsLy93QVp2L3F3R2UvOUlCcC8vU0FjWC9uUUhNLy9VQnp2K2RBZEgvNmdIWi8vQUIzdi8xQWVYL25RSG0vK29CNlAvd0Flci81UUh2LzhFQjl2L1NBZnYvMGdIOC85SUIvZi9TQWYvLzBnSUEvOUlDQXYvU0FnUC8wZ0lGLzgwQ0NmL1NBZ3YvMGdJTS85SUNELy9TQWhILzBnSVcvOUlDSGYvU0FoLy8wZ0lnLzlJQ04vL0hBam4veHdKTi85SUNXUC93QWwzLzBnSmkvNTBDWS8vTUFtWC8wZ0puLzlJQ2J2K2RBbkQvcXdKeS82c0NkUC93QW5iL25RSjQvK1VDZXYvbEFuNy8zd0tELy9BQ2gvLzFBb3IvMGdLTS85SUNqZi9sQXBELzBnS2UvL0FDcGYvU0FxZi8wZ0t3LytvQ3N2L3FBclQvNmdLMi8rVUN1Zi9TQXJ2LzBnSzkvOUlDdnYvd0FzYi96Z0xJLytvQ3l2LzFBdEQvbmdMUi84NEMxUC8xQXVmLzBnTlUvNnNEVnYrckExai9xd05hLzZzRGNQL0FBM0gvd0FOei84QURkUC9BQTNYL3dBTisvOEFEZi8vQUFHOEFCdit4QUF2L3NRQTQvNTRBT3YvRkFEei84Z0E5LzZnQVVmL1BBRkwvendCVS84OEFYUC92QUtEL3FBQzAvODhCQi8vUEFRbi96d0VMLzg4QkRQL1BBU1gvbmdFbi81NEJPZitvQVR2L3FBRmkvNTRCWnYreEFYLy9xQUdWLzZnQmwvL3lBWnYvcUFHZS84OEJwLy9QQWNYL25nSE8vNTRCMGYvc0Fkbi84Z0hsLzU0QjV2L3NBZWovOGdIcS8rRUI3Ly9DQWZiL3p3SDUvKzhCKy8vUEFmei96d0g5Lzg4Qi8vL1BBZ0QvendJQy84OENBLy9QQWdYL3hnSUkvKzhDQ2YvUEFndi96d0lNLzg4Q0QvL1BBaEgvendJVy84OENIZi9QQWgvL3p3SWcvODhDTi8vRkFqbi94UUpOLzg4Q1dQL3lBbG4vN3dKZC84OENZditlQW1QL3dBSmwvODhDWi8vUEFtNy9uZ0p3LzZnQ2N2K29BblQvOGdKMS8rOENkditlQW5qLzRRSjYvK0VDZnYvZkFvUC84Z0tFLys4Q2l2L1BBb3ovendLTi8rRUNrUC9QQXA3LzhnS2YvKzhDcGYvUEFxZi96d0t3Lyt3Q3N2L3NBclQvN0FLMi8rRUN1Zi9QQXJ2L3p3SzkvODhDdnYveUFyLy83d0xHLzgwQ3lQL29BdEQvbndMUi84WUM1Ly9QQTFUL3FBTlcvNmdEV1Arb0Exci9xQU53LzdFRGNmK3hBM1Avc1FOMC83RURkZit4QTM3L3NRTi8vN0VBVFFBNC83NEFVZi9oQUZMLzRRQlUvK0VBV3YvdkFGMy83d0MwLytFQXdQL3ZBTUwvN3dFSC8rRUJDZi9oQVF2LzRRRU0vK0VCSmYrK0FTZi92Z0U2Lys4Qll2KytBWjcvNFFHai8rOEJwLy9oQWEzLzd3SEYvNzRCenYrK0FlWC92Z0h2LzhrQjl2L2hBZnYvNFFIOC8rRUIvZi9oQWYvLzRRSUEvK0VDQXYvaEFnUC80UUlGLzk4Q0J2L3ZBZ24vNFFJTC8rRUNEUC9oQWcvLzRRSVIvK0VDRnYvaEFoMy80UUlmLytFQ0lQL2hBaUgvN3dJay8rMENPUC92QWpyLzd3SkMvK3NDVGYvaEFsMy80UUppLzc0Q1kvL2ZBbVgvNFFKbi8rRUNidisrQW5ILzd3SjIvNzRDZnYvcEFvci80UUtNLytFQ2tQL2hBcVgvNFFLbi8rRUNzZi92QXJQLzd3SzEvKzhDdWYvaEFydi80UUs5LytFQ3gvLzFBdEgvNEFMbi8rRURWZi92QTFmLzd3TlovKzhEVy8vdkFHUUFPUC9tQURyLzV3QTgvL0lBUGYvbkFGSC8xZ0JTLzlZQVZQL1dBRnovOFFDZy8rY0F0UC9XQVFmLzFnRUovOVlCQy8vV0FRei8xZ0VsLytZQkovL21BVG4vNXdFNy8rY0JZdi9tQVgvLzV3R1YvK2NCbC8veUFadi81d0dlLzlZQnAvL1dBY1gvNWdITy8rWUIwZi91QWRuLzhnSGwvK1lCNXYvdUFlai84Z0hxLytnQjcvL21BZmIvMWdINS8vRUIrLy9XQWZ6LzFnSDkvOVlCLy8vV0FnRC8xZ0lDLzlZQ0EvL1dBZ1gvMEFJSS8vRUNDZi9XQWd2LzFnSU0vOVlDRC8vV0FoSC8xZ0lXLzlZQ0hmL1dBaC8vMWdJZy85WUNOLy9uQWpuLzV3Sk4vOVlDV1AveUFsbi84UUpkLzlZQ1l2L21BbVAvemdKbC85WUNaLy9XQW03LzVnSncvK2NDY3YvbkFuVC84Z0oxLy9FQ2R2L21BbmovNkFKNi8rZ0NnLy95QW9ULzhRS0svOVlDalAvV0FvMy82QUtRLzlZQ252L3lBcC8vOFFLbC85WUNwLy9XQXJELzdnS3kvKzRDdFAvdUFyYi82QUs1LzlZQ3UvL1dBcjMvMWdLKy8vSUN2Ly94QXNiLzV3TEkvKzBDMFAvbUF0SC8wQUxuLzlZRFZQL25BMWIvNXdOWS8rY0RXdi9uQUFJQ0xRQUxBdEQvNWdDVEFDVUFFQUFuLytnQUsvL29BRFAvNkFBMS8rZ0FPUC9nQURyLzRBQTkvOThBZ3dBUUFJUUFFQUNGQUJBQWhnQVFBSWNBRUFDSUFCQUFpdi9vQUpYLzZBQ1cvK2dBbC8vb0FKai82QUNaLytnQW0vL29BS0QvM3dEREFCQUF4UUFRQU1jQUVBREovK2dBeS8vb0FNMy82QURQLytnQTMvL29BT0gvNkFEai8rZ0E1Zi9vQVEvLzZBRVIvK2dCRS8vb0FSWC82QUVsLytBQkovL2dBVG4vM3dFNy85OEJSZi9vQVU0QUVBRlMvK2dCWXYvZ0FYa0FFQUYrLytnQmYvL2ZBWUlBRUFHRkFCQUJpZi9vQVl3QUVBR1EvK2dCbGYvZkFadi8zd0hGLytBQngvL29BY3dBRUFITy8rQUIwd0FRQWRjQUZBSGVBQkFCNGYvb0FlVC82QUhsLytBQjZ2L2hBZS8vNEFIM0FCTUIvZ0FRQWdyLzRBSWNBQkFDSS8vb0Fpa0FFQUkxLytnQ04vL2dBam4vNEFJNy8rZ0NQZi9vQWovLzZBSkIvK2dDUS8vb0FtTC80QUpxLytnQ2JQL29BbTcvNEFKdy85OENjdi9mQW5iLzRBSjQvK0VDZWYvZ0Fuci80UUo3LytBQ2YvL2hBb2NBRUFLSUFCQUNqZi9oQW83LzRBS1NBQkFDbEFBUUFwci82UUtvLytnQ3F2L29BcXovNkFLMi8rRUN0Ly9nQXNiLzN3TEkvOTRDeWdBUUFzNy82QUxRLzk4QzB2L3lBdFFBRUFMVkFCQUMxZ0FRQXdJQUVBTUVBQkFEQmdBUUF3Z0FFQU1LQUJBRERBQVFBdzRBRUFNUUFCQURFZ0FRQXhRQUVBTVdBQkFER0FBUUF5Ny82QU13LytnRE12L29BelQvNkFNMi8rZ0RPUC9vQXpyLzZBTTgvK2dEUHYvb0EwRC82QU5DLytnRFJQL29BMVQvM3dOVy85OERXUC9mQTFyLzN3TmMvK2dFTWYvb0JETC82QVEwLytnRU5mL29BRElBRy8veUFEai84UUE2Ly9RQVBQLzBBRDMvOEFDZy8vQUJKZi94QVNmLzhRRTUvL0FCTy8vd0FXTC84UUYvLy9BQmxmL3dBWmYvOUFHYi8vQUJ4Zi94QWN6LzlRSE8vL0VCMGYvekFkbi85QUhlLy9VQjVmL3hBZWIvOHdIby8vUUI3Ly94QWpmLzlBSTUvL1FDV1AvMEFtTC84UUp1Ly9FQ2NQL3dBbkwvOEFKMC8vUUNkdi94QW9QLzlBS0gvL1VDbnYvMEFyRC84d0t5Ly9NQ3RQL3pBcjcvOUFMRy8vSUN5UC95QXNyLzlRTFEvL0lDMVAvMUExVC84QU5XLy9BRFdQL3dBMXIvOEFBSUFGZ0FEZ0NKL3RjQnEvK1lBYkgveHdIWC94SUI5LzlTQXNML3p3UHMvNEFBWmdBbEFBOEFPUC9tQURyLzVnQThBQTRBUGYvbUFJTUFEd0NFQUE4QWhRQVBBSVlBRHdDSEFBOEFpQUFQQUtELzVnRERBQThBeFFBUEFNY0FEd0VsLytZQkovL21BVG4vNWdFNy8rWUJUZ0FQQVdMLzVnRjVBQThCZi8vbUFZSUFEd0dGQUE4QmpBQVBBWlgvNWdHWEFBNEJtLy9tQWNYLzVnSE1BQTRCenYvbUFkRUFDd0hUQUE4QjF3QVRBZGtBRGdIZUFBNEI1Zi9tQWVZQUN3SG9BQTRCNnYvbEFlLy81Z0h3Ly9RQjl3QVNBZjRBRHdJRi8rY0NDdi9vQWcvLzV3SWNBQThDS1FBUEFqZi81Z0k1LytZQ1dBQU9BbUwvNWdKai8rY0Nidi9tQW5ELzVnSnkvK1lDZEFBT0FuYi81Z0o0LytVQ2VmL29BbnIvNVFKNy8rZ0Nnd0FPQW9jQURnS0lBQThDamYvbEFvNy82QUtTQUE4Q2xBQVBBcDRBRGdLd0FBc0NzZ0FMQXJRQUN3SzIvK1VDdC8vb0FyNEFEZ0xHLytZQ3lQL21Bc29BRGdMUS8rWUMwZi9uQXRRQURnTFZBQThDMWdBUEF3SUFEd01FQUE4REJnQVBBd2dBRHdNS0FBOEREQUFQQXc0QUR3TVFBQThERWdBUEF4UUFEd01XQUE4REdBQVBBMVQvNWdOVy8rWURXUC9tQTFyLzVnQTNBQWIvdndBTC83OEFPUCtmQURyL3lRQTkvNjBBb1ArdEFTWC9ud0VuLzU4Qk9mK3RBVHYvclFGaS81OEJadisvQVgvL3JRR1YvNjBCbS8rdEFjWC9ud0hPLzU4QjBmL3NBZVgvbndIbS8rd0I2di9tQWUvL3hBSUYvODBDRC8vVkFqZi95UUk1LzhrQ1l2K2ZBbVAvekFKdS81OENjUCt0QW5ML3JRSjIvNThDZVAvbUFuci81Z0orLzk4Q2pmL21BckQvN0FLeS8rd0N0UC9zQXJiLzVnTEcvOUVDeVAvc0F0RC9vUUxSLzg4RFZQK3RBMWIvclFOWS82MERXdit0QTNEL3Z3TngvNzhEYy8rL0EzVC92d04xLzc4RGZ2Ky9BMy8vdndBd0FEai80d0E4LytVQVBmL2tBS0QvNUFFbC8rTUJKLy9qQVRuLzVBRTcvK1FCWXYvakFYLy81QUdWLytRQmwvL2xBWnYvNUFIRi8rTUJ6UC9sQWM3LzR3SFIvK2tCMS8vaUFkbi81UUhlLytVQjVmL2pBZWIvNlFIby8rVUIvdi9xQWh6LzZnSlkvK1VDWXYvakFtNy80d0p3LytRQ2N2L2tBblQvNVFKMi8rTUNnLy9sQW9mLzVRS0kvK29DbnYvbEFyRC82UUt5LytrQ3RQL3BBcjcvNVFMSy8rVUMwUC9rQXRULzVRTFYvK29EVlAva0ExYi81QU5ZLytRRFd2L2tBQ01BT1AvaUFEei81QUVsLytJQkovL2lBV0wvNGdHWC8rUUJ4Zi9pQWN6LzVBSE8vK0lCMGYvcEFkZi80UUhaLytRQjN2L2tBZVgvNGdIbS8ra0I2UC9rQWZmLzVBSCsvK3NDSFAvckFsai81QUppLytJQ2J2L2lBblQvNUFKMi8rSUNnLy9rQW9mLzVBS0kvK3NDbnYva0FyRC82UUt5LytrQ3RQL3BBcjcvNUFMSy8rUUMxUC9rQXRYLzZ3QVhBRGovNndBOS8vTUFvUC96QVNYLzZ3RW4vK3NCT2YvekFUdi84d0ZpLytzQmYvL3pBWlgvOHdHYi8vTUJ4Zi9yQWM3LzZ3SGwvK3NDWXYvckFtNy82d0p3Ly9NQ2N2L3pBbmIvNndOVS8vTURWdi96QTFqLzh3TmEvL01BTmdCUi8rOEFVdi92QUZULzd3QmMvL0FBdFAvdkFRZi83d0VKLys4QkMvL3ZBUXovN3dHZS8rOEJwLy92QWZiLzd3SDMvKzRCK2Yvd0Fmdi83d0g4Lys4Qi9mL3ZBZi8vN3dJQS8rOENBdi92QWdQLzd3SUYvKzRDQ1Avd0Fnbi83d0lMLys4Q0RQL3ZBZy8vN3dJUi8rOENGdi92QWgzLzd3SWYvKzhDSVAvdkFpVC85QUpDLy9FQ1RmL3ZBbG4vOEFKZC8rOENZLy92QW1YLzd3Sm4vKzhDZGYvd0FvVC84QUtLLys4Q2pQL3ZBcEQvN3dLZi8vQUNwZi92QXFmLzd3SzUvKzhDdS8vdkFyMy83d0svLy9BQzBmL3ZBdWYvN3dBaUFBYi84Z0FMLy9JQVd2LzFBRjMvOVFEQS8vVUF3di8xQVRyLzlRRm0vL0lCby8vMUFhMy85UUlGLy9RQ0J2LzFBZy8vOUFJaC8vVUNKUC8xQWpqLzlRSTYvL1VDWS8vMUFuSC85UUt4Ly9VQ3MvLzFBclgvOVFMUi8vVURWZi8xQTFmLzlRTlovL1VEVy8vMUEzRC84Z054Ly9JRGMvL3lBM1QvOGdOMS8vSURmdi95QTMvLzhnQXlBRkgvN2dCUy8rNEFWUC91QUxULzdnRUgvKzRCQ2YvdUFRdi83Z0VNLys0Qm52L3VBYWYvN2dIMi8rNEI5d0FVQWZ2LzdnSDgvKzRCL2YvdUFmLy83Z0lBLys0Q0F2L3VBZ1AvN2dJRi8rMENDZi91QWdyLzdRSUwvKzRDRFAvdUFnMy8wQUlQLys0Q0VmL3VBaGIvN2dJZC8rNENILy91QWlELzdnSk4vKzRDWGYvdUFtUC83UUpsLys0Q1ovL3VBbm4vN1FKNy8rMENpdi91QW96LzdnS08vKzBDa1AvdUFxWC83Z0tuLys0Q3QvL3RBcm4vN2dLNy8rNEN2Zi91QXRILzdRTG4vKzRBQ2dBRy8vVUFDLy8xQVdiLzlRTncvL1VEY2YvMUEzUC85UU4wLy9VRGRmLzFBMzcvOVFOLy8vVUFXUUJILy9BQVNQL3dBRW4vOEFCTC8vQUFVLy9IQUZYLzhBQ3EvL0FBcS8vd0FLei84QUN0Ly9BQXJ2L3dBTFgveHdDMi84Y0F0Ly9IQUxqL3h3QzUvOGNBeXYvd0FNei84QURPLy9BQTBQL3dBTkwvOEFEVy8vQUEyUC93QU5yLzhBRGMvL0FBM3Yvd0FPRC84QURpLy9BQTVQL3dBT2IvOEFFUS84Y0JFdi9IQVJUL3h3RVcvL0FCUnYvd0Faei84QUdoLy9BQnIvL0hBYkwvOEFHei8vQUJ2UC9IQWZqLzhBSUIvOGNDQlAvd0FnZi84QUlULy9BQ0ZQL3dBaGYvOEFJMi84Y0NQUC93QWo3LzZ3SkEvL0FDUlAvd0Ftdi84QUp0Ly9BQ21mL3dBcHYvOEFLZC8vQUNxZi9IQXF2LzhBS3QvOGNDdy8vd0FzVC84QUxGLy9BQ3ovL3dBeHYvOEFNZC8vQURILy93QXlILzhBTWovL0FESmYvd0F5Zi84QU1wLy9BREwvL0hBekgveHdNei84Y0ROZi9IQXpmL3h3TTUvOGNETy8vSEF6My84QU0vLy9BRFFmL3dBMFAveHdORi8vQUQzUC9yQTk3LzZ3UG0vK2tENnYvckFLRUFCZ0FOQUFzQURRQkYvL0FBUi8vQUFFai93QUJKLzhBQVNnQU5BRXYvd0FCVC8rSUFWZi9BQUZvQUN3QmRBQXNBby8vd0FLVC84QUNsLy9BQXB2L3dBS2YvOEFDby8vQUFxdi9BQUt2L3dBQ3MvOEFBcmYvQUFLNy93QUMxLytJQXR2L2lBTGYvNGdDNC8rSUF1Zi9pQU1BQUN3RENBQXNBeFAvd0FNYi84QURJLy9BQXl2L0FBTXovd0FETy84QUEwUC9BQU5ML3dBRFcvOEFBMlAvQUFOci93QURjLzhBQTN2L0FBT0Qvd0FEaS84QUE1UC9BQU9iL3dBRVEvK0lCRXYvaUFSVC80Z0VXLzhBQk9nQUxBVWIvd0FGUC8vQUJaZ0FOQVp6L3dBR2gvOEFCb3dBTEFhMEFDd0d2LytJQnNmL1dBYkwvd0FHei84QUJ0di9WQWJ6LzRnSHovL0FCOS8vSUFmai93QUgrLzljQ0FmL2lBZ1Qvd0FJR0FBc0NCLy9BQWhQL3dBSVUvOEFDRi8vQUFoei8xd0loQUFzQ052L2lBamdBQ3dJNkFBc0NQUC9BQWo3LzdBSkEvOEFDUWdBTUFrVC93QUpyLzhBQ2JmL0FBbkVBQ3dLSS85Y0NrLy93QXBYLzhBS1ovOEFDbS8vQUFwMy93QUtwLytJQ3EvL0FBcTMvNGdLeEFBc0Nzd0FMQXJVQUN3TEQvOEFDeFAvQUFzWC93QUxIQUFzQ3lRQUxBcy8vd0FMVi85Y0MxLy93QXdQLzhBTUYvL0FEQi8vd0F3bi84QU1MLy9BRERmL3dBdy8vOEFNUi8vQURFLy93QXhYLzhBTVgvL0FER2Yvd0F4di93QU1kLzhBREgvL0FBeUgvd0FNai84QURKZi9BQXlmL3dBTXAvOEFETC8vaUF6SC80Z016LytJRE5mL2lBemYvNGdNNS8rSURPLy9pQXozL3dBTS8vOEFEUWYvQUEwUC80Z05GLzhBRFZRQUxBMWNBQ3dOWkFBc0RXd0FMQTNBQURRTnhBQTBEY3dBTkEzUUFEUU4xQUEwRGZnQU5BMzhBRFFQWEFBMEQyUUFPQTlyLzlRUGMvK3dEM3YvdEErYi83QVBxLys0RDdQKy9BL2NBRFFBUEFmY0FGQUgrQUJBQ0JmL3dBZ3IvOEFJUC8vQUNFZ0FXQWh3QUVBSmovK1lDZWYvd0Fudi8zQUtJQUJBQ2p2L3dBcmYvOEFMUi8vQUMxUUFRQUV3QVIvL3VBRWovN2dCSi8rNEFTLy91QUZYLzdnQ3EvKzRBcS8vdUFLei83Z0N0Lys0QXJ2L3VBTXIvN2dETS8rNEF6di91QU5ELzdnRFMvKzRBMXYvdUFOai83Z0RhLys0QTNQL3VBTjcvN2dEZy8rNEE0di91QU9ULzdnRG0vKzRCRnYvdUFVYi83Z0djLys0Qm9mL3VBYkwvN2dHei8rNEI5d0FTQWZqLzdnSCtBQTRDQlAvdUFnWC80d0lILys0Q0N2L2pBZzMvdUFJUC8rTUNFLy91QWhULzdnSVgvKzRDSEFBT0Fqei83Z0pBLys0Q1JQL3VBbVAvdWdKci8rNENiZi91QW5uLzR3SjcvOWtDaUFBT0FvNy80d0taLys0Q20vL3VBcDMvN2dLci8rNEN0Ly9qQXNQLzdnTEUvKzRDeGYvdUFzLy83Z0xSLytNQzFRQU9BeHYvN2dNZC8rNERILy91QXlILzdnTWovKzRESmYvdUF5Zi83Z01wLys0RFBmL3VBei8vN2dOQi8rNERSZi91QUNBQVd2L0FBRjMvd0FEQS84QUF3di9BQVRyL3dBR2ovOEFCcmYvQUFnWC9nQUlHLzhBQ0N2L3VBZy8vOEFJaC84QUNKUC9iQWpqL3dBSTYvOEFDUXYvY0FtUC9Sd0p4LzhBQ2VmL3VBbnYvN2dLTy8rNENzZi9BQXJQL3dBSzEvOEFDdC8vdUFzY0FCd0xKLy9RQzBmOS9BMVgvd0FOWC84QURXZi9BQTF2L3dBQWhBRnIvOUFCYy8vQUFYZi8wQU1ELzlBREMvL1FCT3YvMEFhUC85QUd0Ly9RQjkvL3ZBZm4vOEFIKy8vTUNCdi8wQWdqLzhBSVAvKzRDSFAvekFpSC85QUk0Ly9RQ092LzBBbG4vOEFKeC8vUUNkZi93QW9ULzhBS0kvL01Dbi8vd0FySC85QUt6Ly9RQ3RmLzBBci8vOEFMVi8vTURWZi8wQTFmLzlBTlovL1FEVy8vMEFBb0FCdi9XQUF2LzFnRm0vOVlEY1AvV0EzSC8xZ056LzlZRGRQL1dBM1gvMWdOKy85WURmLy9XQUJVQVhQL2dBZm4vNEFJRi8zWUNDUC9nQWdyL3dnSVAvOU1DSlAvWkFrTC8yd0paLytBQ1kvOGVBblgvNEFKNS84SUNlLy90QW9ULzRBS08vOElDbi8vZ0FyZi93Z0svLytBQ3gvL3dBc24vOGdMUi8xWUFEUUlGLzJRQ0N2L1NBZy8vMlFJay85a0NRdi9iQW1QL0hnSjUvOUlDZS8vdEFvNy8wZ0szLzlJQ3gvL3dBc24vOGdMUi8xWUFDZ0h2LzhNQ0JmL1BBZy8vMUFKai84NENldi9uQW43LzN3TEcvOUVDeVAvc0F0RC9vQUxSLzlFQUNRSUYvMm9DRC8vR0FpVC8yUUpDLzlzQ1kvOGVBbnYvN1FMSC8vQUN5Zi95QXRIL1ZnQUpBQTBBRkFCQkFCRUFWdi9pQUdFQUV3UGMvOWtEM3YvWkErYi8yUVBxLzlrRDdQKzBBQW9BQnYvWEFBdi8xd0ZtLzljRGNQL1hBM0gvMXdOei85Y0RkUC9YQTNYLzF3TisvOWNEZi8vWEFCUUFXLy9CQVpiL3hRRzAvN1FCOVAvWEFnWC91UUlQLytrQ0pQK3lBajcvMGdKQy84Z0NZLytnQW52L3hRS2EvK1FDeC8vTUFzbi96QUxSLzhzQzB2L3ZBOXovNXdQZS8rY0Q1di9tQStyLzZBQTZBQVQveEFCVy83OEFXLy9SQUc3L2JBQisvMjRBaWY5REFLbi9yQUM3LzZFQmx2KzRBYVgvZmdHcC8zc0JzUCtiQWJIL2VRRzAvN0lCdHY5K0Fiai9mUUc1LzN3QjEvK3ZBZThBRHdIMC8rUUI5ZitnQWZmL2RBSDYvNEFDQmYreUFnNy9mUUlQLzdJQ0VQK0FBaEwvZVFJVkFDZ0NJdjk5QWlUL2Z3SSsvMllDUXYvYUFsSC9nUUpULzVnQ1gvOTlBbVAvc3dKcC82QUNlLzk4QW43L21nSi8vMndDbXYvbUFzTC9hd0xILzVJQ3lmK3RBczMvZXdMUUFBOEMwZitSQXRMLzhnUFcvL0VEMmYveEE5ci92QVBjLzdrRDN2KzVBK2IvdVFQcS83a0Q3UCt2QS9iLzdRQUdBYlQvNmdIMy8rNENCZi9XQWcvLzdRSmovK3dDMGYvc0FCSUIxLyt1QWU4QUVnSDEvK0FCOS8rdEFmci8xZ0lPLzk4Q0V2L1NBaUwvNEFJKy84NENVZi9kQWxQLzRnSmYvK0FDYWYvZ0Fudi82UUovLzlvQ3d2KzlBczMvM3dMUUFCRUFNQUJXLzM0QVcvK2RBRzcrOFFCKy92UUFpZjZyQUtuL1hnQzcvMHNCbHY5eUFhWC9Ed0dwL3dvQnNQOUJBYkgvQndHMC8yZ0J0djhQQWJqL0RnRzUvd3dCMS85akFlOEFCUUgwLzcwQjlmOUpBZmYrL2dINi94TUNCZjlvQWc3L0RnSVAvMmdDRVA4VEFoTC9Cd0lWQURBQ0l2OE9BaVQvRVFJKy91Y0NRditzQWxIL0ZRSlQvendDWC84T0FtUC9hZ0pwLzBrQ2UvOE1BbjcvUHdKLy92RUNtdi9BQXNMKzd3TEgvekVDeWY5ZkFzMy9DZ0xRQUFVQzBmOHdBdEwvMVFBQ0FmZi9hQUkrLys0QUZ3R1cvOVFCcVAvdEFhc0FFUUcwLytBQnR2L25BYmovNVFHNS8rNEIxd0FTQWZULzZRSUYvOWNDWS8vWEFudi8wd0orLzlZQ2YvL0ZBcHIvNXdMR0FBMEN5QUFNQXRILzFnTFMvL0lEM1AvcEE5Ny81d1BtLytjRDZ2L3BBQUVDUHYveEFBSUNCZi9XQTNIL2lBQUpBQTBBRHdCQkFBd0FWdi9yQUdFQURnUGMvK2NEM3YvbkErYi81d1BxLytrRDdQL0xBQjBBSS8rdkFGai83d0JiLzk4QlIvL3VBWmIvNVFHWS85RUJxd0FSQWJUL3lBSFhBQk1CNy8vRkFnWC95Z0lQLzlBQ1kvK0JBbnIvWlFKNy80VUNmdjltQW4vLzNRS2EvL0lDeHYreEFzai95Z0xRLzZrQzBmL0lBOWIvM1FQWC84MEQyUC94QTluL3h3UGUvL1VENXYvMUEvZi94QUFJQWdYLzhBSVAvL0FDSlAveEFrTC84d0pqLy9FQ3gvL3pBc24vOHdMUi8vRUFCUUJLLys0QVcvL3FBOWIvN1FQWC8vQUQ5Ly93QUFJQ0JmLzFBM0gvd0FBSUFkY0FGUUgzQUJVQ2V2L2tBbnYvNVFKKy8rUUN4di9qQXNqLzRnTFEvK1FBQ1FHMC8rb0I5Lys0QWdYLzRnSWsvL0FDUXYveEFtUC82d0xILy9VQzBmL3NBM0gva0FBQkErei82d0FpQUFyLzRnQU5BQlFBRHYvUEFFRUFFZ0JLLytvQVZ2L1lBRmovNmdCaEFCTUFidit1QUg3L3pRQ0ovNkFBcWYvQkFMdi93QUdXLzlBQm92L3FBYVgveGdHbUFBMEJxUC9wQWFuLzFnR3cvK2dCc2YrNkFiVC82UUcyLzhzQnVQL2FBYm4veHdONS85TUQxdi96QTluLzh3UGMvOHNEM3YvTEErYi95d1BxLzgwRDdQK3JBL2IvN3dBR0FFb0FEUUd3QUFzQnNmL3FBYlFBREFIMy84Z0NQdi94QUZ3QVIvK1lBRWovbUFCSi81Z0FTLytZQUZQL2NBQlYvNWdBVi84WUFGc0FDd0NxLzVnQXEvK1lBS3ovbUFDdC81Z0FyditZQUxYL2NBQzIvM0FBdC85d0FMai9jQUM1LzNBQXl2K1lBTXovbUFETy81Z0EwUCtZQU5ML21BRFcvNWdBMlArWUFOci9tQURjLzVnQTN2K1lBT0QvbUFEaS81Z0E1UCtZQU9iL21BRVEvM0FCRXY5d0FSVC9jQUVXLzVnQkh2OFlBU0QvR0FFaS94Z0JKUDhZQVViL21BRmgveGdCblArWUFhSC9tQUd2LzNBQnN2K1lBYlAvbUFHOC8zQUIrUCtZQWdIL2NBSUUvNWdDQi8rWUFoUC9tQUlVLzVnQ0YvK1lBaGovR0FJMi8zQUNQUCtZQWtEL21BSkUvNWdDYS8rWUFtMy9tQUtaLzVnQ20vK1lBcDMvbUFLcC8zQUNxLytZQXEzL2NBTEQvNWdDeFArWUFzWC9tQUxQLzVnREcvK1lBeDMvbUFNZi81Z0RJZitZQXlQL21BTWwvNWdESi8rWUF5bi9tQU12LzNBRE1mOXdBelAvY0FNMS8zQUROLzl3QXpuL2NBTTcvM0FEUGYrWUF6Ly9tQU5CLzVnRFEvOXdBMFgvbUFBQkFGc0FDd0FDQTljQURRUDNBQTBBQkFQVy8vVUQxLy94QTluLzhnUDMvKzRBQkFQVy8vRUQxLy9yQTluLzZRUDMvK1VBQkFQWC8vRUQyZi91QS9iLzdBUDMvK29BQndQVy85VUQxLyszQTlqLzdBUFovN3NEM1Avd0E5Ny83d1AzLzdRQUFnUGMvK3NEM3YvckFBSUQxdi8xQTlmLzdnQUpBOWIvMkFQWC84Y0QyUC9zQTluL3dBUGMvL0lEM3YveUErYi84Z1BxLy9JRDkvKy9BQVFBRGYvbUFFSC85QUJoLys4Q2YvL3RBQWtBaWYvZkFZLy84d0dULy9BQnEvL3FBZGYvM3dIdi8rQUMwUC9nQSt6LzdRUDIvL1VBQWdlS0FBUUFBQXFrRXFBQUlRQWRBQUQvMi8rSS84Ny94Zi9zLzZYL3BBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS91TUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUCtJQUFBQUFBQUEvOUQvOUFBQS8rdi9pUC92LzdQLzJmOXEvL1gvemdBTUFCSC95UUFTLzk4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLytVQUFQL29BQUQveVFBQUFBQUFBQUFBQUFBQUFBQUEvL01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQL2pBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rc0FBQUFBQUFBQUFBQUFBQUQvcXdBQS8rb0FBUC9WQUFBQUFBQUEvK0VBQUFBQUFBQUFBUCtHLytyLzZRQUFBQUFBQUFBQUFBQUFBQUFBQUFELzdRQUEvKzBBQUFBQUFCUUFBQUFBQUFBQUFQL3YvK1lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVnQUFBQUFBQUFBQUFBQUFBUC9qQUFBQUFBQUEvK1FBQUFBQUFBQUFFZi9rQUJILzVRQUFBQUFBRVFBQUFBQUFBQUFBQUFBQUFBQUEvK29BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC81Z0FBLytVQUFQL2hBQUFBQUFBQUFBQUFBUC9wLzlnQUFBQUFBQUFBQVArakFBQUFBQUFBQUFEL1hBQUFBQUFBQUFBQS91QUFFd0FBQUFBQUFBQUFBQUQvd1A4ei8rai9NditqL3VuLzh2K0ZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzA3LzlmL3pBQUQvOHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRHdBQS8yOEFBUCtuQUFBQUFQNXMvODMvM0FBQS8wZ0FBQUFBQUFBQUFQK0kvMWovcC8rbi96RC90UC9rQUJBQUFBQVFBQThBRVArLy82Ny94UC9MQUFEL2Z2OThBQUQrL2dBQUFBRCs4UDhvLy9EL3N3QUFBQUQvdGYvUy85UUFBUC9TQUFELzh3QUFBQUFBQUFBQUFBRC81UC8xQUFBQUFBQUFBQUFBQUFBQS95a0FBQUFBLzJNQUFBQUFBQUFBQUFBQS85WC8zLy9oQUFELzRRQUFBQUFBRGdBQUFBQUFBQUFBLyswQUFBQUFBQUFBQUFBQUFBQUFBUDl4QUFBQUFQL0VBQUFBQUFBQUFBQUFBQUFBQUFELzVnQUEvK3NBQVAvbkFBQUFBQUFPQUFBQUFQL3IvK0VBQUFBUkFBQUFFZi9SQUFBQUFBQUFBQUQvWkFBQUFBQUFBQUFBQUFEL2F2L0IvNy8vMlArLy84Yi80d0FSLzZBQUVnQVJBQkwvMmYvcy8rSUFBQUFBQUFBQUFBQUEveGtBRFFBQS8yai9vUC93LytrQUFBQUFBQTBBQVAvckFBRC82d0FBLytZQUFBQUFBQUFBQUFBQS8rMy81UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvN3dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLy9FQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzEvL0VBQUFBQS8vSUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vRUFBUC8xQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzhnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8vTUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvN0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVArb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzhmL3dBQUFBQVAvd0FBQUFBQUFBQUFBQUFBQUFBQUFBQVAvckFBQUFFQUFBLytMLzdRQUEvOXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQklBQUFBQUFBQUFBQUFBQUFEL1V3QUFBQUFBQUFBQUFBQUFBQUFBQUE4QUFQL3gvL01BQVAveEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzljQUFBQUEvMWtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvc0FBRC8yQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC84QUFBLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC9NLzlmLzFYL1ZmOW0vMnYvdlFBSEFBQUFCd0FGQUFmL2Z2OWgvNGIva2dBQS93Ly9EQUFBL2pZQUFBQUEvaDRBQVAvUi8yb0FBUC9BQUFBQUFBQUFBQUFBQUFBQUFBRC9ud0FBLzhnQUFQK3RBQUFBQUFBQUFBRC81d0FBQUFELzZ3QUFBQUFBQUFBQUFBQUFBUC9KQUFBQUFQK2wvNi8vdmYrdS83My8wdi9wQUJJQUFBQUFBQUFBRWdBQUFBQUFBUC9LQUFEL3UvL3BBQUQrZHdBQUFBRC9PUUFBQUFBQUFBQUFBQUFBQUFBQS8rd0FBUC9zQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvOWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVA5NUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFEL3RRQUFBQUFBQUFBQS8rTUFBQUFBQUFBQUFBQUFBQUFBQVAvckFBRUJpd0FHQUFzQUVBQVNBQ1VBSmdBbkFDZ0FLUUFzQUMwQUxnQXZBREFBTVFBeUFETUFOQUE0QURrQU9nQTdBRHdBUFFBK0FFVUFSZ0JIQUVrQVRBQlJBRklBVXdCVUFGWUFXZ0JjQUYwQVhnQ0RBSVFBaFFDR0FJY0FpQUNLQUlzQWpBQ05BSTRBandDUUFKRUFrZ0NUQUpRQWxRQ1dBSmNBbUFDWkFKd0FuUUNlQUo4QW9BQ2pBS1FBcFFDbUFLY0FxQUNxQUtzQXJBQ3RBSzRBdEFDMUFMWUF0d0M0QUxrQXdBREJBTUlBd3dERUFNVUF4Z0RIQU1nQXlRREtBTXNBekFETkFNNEF6d0RRQU5FQTB3RFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBT2NBNkFEckFPMEE3d0R4QVBNQTl3RDVBUHdBL2dFQUFRSUJCZ0VIQVFnQkNRRUtBUXNCREFFUEFSQUJFUUVTQVJNQkZBRVlBUm9CSEFFbEFTY0JLUUVyQVMwQkx3RXhBVE1CTlFFM0FUa0JPZ0U3QVR3QlBRRStBVDhCUUFGQkFVNEJUd0ZpQVdZQmVRRjdBWHdCZlFGK0FYOEJnZ0dEQVlRQmhRR0dBWWNCaUFHSkFZb0Jpd0dNQVkwQmpnR1FBWklCbEFHVkFaY0JtZ0diQVo0Qm93R25BYTBCcndHeEFid0J3d0hFQWNZQnlRSEtBY3NCekFITkFjOEIwUUhTQWRNQjFRSFdBZGdCMlFIYkFkMEIzZ0hmQWVBQjRRSGpBZVFCNVFIbUFlZ0I2UUhyQWUwQjd3SHpBZllCK0FINUFnRUNBd0lFQWdZQ0J3SUlBZzBDRHdJUUFoTUNGQUlXQWh3Q0hRSWhBaVVDSmdJcEFqWUNOd0k0QWprQ09nSlJBbElDVXdKVUFsZ0NXUUpjQWw0Q1lBSmlBbVFDYkFKdEFtNENjQUp4QW5JQ2RBSjFBbjBDZ2dLREFvUUNpd0tQQXBFQ2tnS1RBcFFDbFFLWUFwa0Ntd0tkQXA0Q253S29BcWtDclFLdkFyQUNzUUt5QXJNQ3RBSzFBcmdDdVFLOUFyNEN2d0xXQXRjQzVnTG5BdmdDK2dMOEF3SURBd01FQXdVREJnTUhBd2dEQ1FNS0F3c0REQU1OQXc0RER3TVFBeEVERWdNVEF4UURGUU1XQXhjREdBTVpBeG9ER3dNY0F4MERIZ01mQXlBRElRTWlBeU1ESkFNbEF5WURKd01vQXlrREtnTXNBeTRETHdNd0F6RURNZ016QXpRRE5RTTJBemNET0FNNUF6b0RPd05EQTBZRFNBTlVBMVVEVmdOWEExZ0RXUU5hQTFzRFhBTndBM0VEY2dOekEzUURkUU4yQTNvRGV3TitBMzhFTVFRekJEUUFBZ0ZVQUJBQUVBQUJBQklBRWdBQkFDVUFKUUFDQUNZQUpnQURBQ2NBSndBRUFDZ0FLQUFGQUNrQUtRQUdBQ3dBTFFBSEFDNEFMZ0FJQUM4QUx3QUpBREFBTUFBS0FERUFNZ0FIQURNQU13QUZBRFFBTkFBTEFEZ0FPQUFNQURrQU9RQUlBRG9BT2dBTkFEc0FPd0FPQUR3QVBBQVBBRDBBUFFBUUFENEFQZ0FSQUVVQVJRQVNBRVlBUmdBVEFFY0FSd0FVQUVrQVNRQVZBRXdBVEFBV0FGRUFVZ0FXQUZNQVV3QVhBRlFBVkFBVEFGWUFWZ0FZQUZvQVdnQVpBRndBWEFBYUFGMEFYUUFaQUY0QVhnQWJBSU1BaUFBQ0FJb0FpZ0FFQUlzQWpnQUdBSThBa2dBSEFKTUFrd0FGQUpRQWxBQUhBSlVBbVFBRkFKd0Fud0FJQUtBQW9BQVFBS01BcUFBU0FLb0FxZ0FVQUtzQXJnQVZBTFFBdEFBV0FMVUF1UUFYQU1BQXdBQVpBTUVBd1FBVEFNSUF3Z0FaQU1NQXd3QUNBTVFBeEFBU0FNVUF4UUFDQU1ZQXhnQVNBTWNBeHdBQ0FNZ0F5QUFTQU1rQXlRQUVBTW9BeWdBVUFNc0F5d0FFQU13QXpBQVVBTTBBelFBRUFNNEF6Z0FVQU04QXp3QUVBTkFBMEFBVUFORUEwUUFGQU5NQTB3QUZBTlVBMVFBR0FOWUExZ0FWQU5jQTF3QUdBTmdBMkFBVkFOa0EyUUFHQU5vQTJnQVZBTnNBMndBR0FOd0EzQUFWQU4wQTNRQUdBTjRBM2dBVkFPY0E1d0FIQU9nQTZBQVdBT3NBNndBSEFPMEE3UUFIQU84QTd3QUhBUEVBOFFBSEFQTUE4d0FIQVBjQTl3QUlBUGtBK1FBSkFQd0EvQUFLQVA0QS9nQUtBUUFCQUFBS0FRSUJBZ0FLQVFZQkJnQUhBUWNCQndBV0FRZ0JDQUFIQVFrQkNRQVdBUW9CQ2dBSEFRc0JEQUFXQVE4QkR3QUZBUkFCRUFBWEFSRUJFUUFGQVJJQkVnQVhBUk1CRXdBRkFSUUJGQUFYQVJnQkdBQVlBUm9CR2dBWUFSd0JIQUFZQVNVQkpRQU1BU2NCSndBTUFTa0JLUUFNQVNzQkt3QUlBUzBCTFFBSUFTOEJMd0FJQVRFQk1RQUlBVE1CTXdBSUFUVUJOUUFJQVRjQk53QU9BVGtCT1FBUUFUb0JPZ0FaQVRzQk93QVFBVHdCUEFBUkFUMEJQUUFiQVQ0QlBnQVJBVDhCUHdBYkFVQUJRQUFSQVVFQlFRQWJBVTRCVGdBQ0FVOEJUd0FTQVdJQllnQU1BWGtCZVFBQ0FYc0Jld0FHQVh3QmZRQUhBWDRCZmdBRkFYOEJmd0FRQVlJQmdnQUNBWU1CZ3dBREFZUUJoQUFjQVlVQmhRQUNBWVlCaGdBR0FZY0Jod0FSQVlnQmlBQUhBWWtCaVFBRkFZb0JpZ0FIQVlzQml3QUpBWXdCakFBQ0FZMEJqZ0FIQVpBQmtBQUZBWklCa2dBTEFaUUJsQUFNQVpVQmxRQVFBWmNCbHdBUEFab0JtZ0FIQVpzQm13QVFBWjRCbmdBV0FhTUJvd0FaQWFjQnB3QVdBYTBCclFBWkFhOEJyd0FYQWJFQnNRQVRBYndCdkFBWEFjTUJ4QUFHQWNZQnhnQWNBY2tCeWdBSEFjc0J5d0FJQWN3QnpRQWRBYzhCendBSkFkRUIwUUFlQWRJQjBnQUhBZE1CMHdBQ0FkVUIxUUFEQWRZQjFnQWNBZGdCMkFBR0Fka0IyUUFQQWRzQjJ3QUhBZDBCM1FBSkFkNEI0QUFIQWVFQjRRQUZBZU1CNHdBTEFlUUI1QUFFQWVVQjVRQU1BZVlCNWdBZUFlZ0I2QUFQQWVrQjZRQUhBZXNCNndBSEFlMEI3UUFkQWU4Qjd3QWRBZk1COHdBU0FmWUI5Z0FmQWZnQitBQVZBZmtCK1FBYUFnRUNBUUFYQWdNQ0F3QVRBZ1FDQkFBVUFnWUNCZ0FaQWdjQ0J3QVRBZ2dDQ0FBYUFnMENEUUFnQWc4Q0R3QWdBaEFDRUFBVEFoTUNGQUFWQWhZQ0ZnQWZBaHdDSFFBZ0FpRUNJUUFaQWlVQ0pRQWRBaVlDSmdBZ0Fpa0NLUUFDQWpZQ05nQVhBamNDTndBTkFqZ0NPQUFaQWprQ09RQU5Bam9DT2dBWkFsRUNVUUFUQWxJQ1VnQWNBbE1DVXdBZkFsUUNWQUFjQWxnQ1dBQVBBbGtDV1FBYUFsd0NYQUFKQWw0Q1hnQUpBbUFDWUFBSkFtSUNZZ0FKQW1RQ1pBQUhBbXdDYkFBRUFtMENiUUFVQW00Q2JnQU1BbkFDY0FBUUFuRUNjUUFaQW5JQ2NnQVFBblFDZEFBUEFuVUNkUUFhQW4wQ2ZRQVdBb0lDZ2dBSEFvTUNnd0FQQW9RQ2hBQWFBb3NDaXdBSEFvOENqd0FIQXBFQ2tRQUhBcElDa2dBQ0FwTUNrd0FTQXBRQ2xBQUNBcFVDbFFBU0FwZ0NtQUFHQXBrQ21RQVZBcHNDbXdBVkFwMENuUUFWQXA0Q25nQVBBcDhDbndBYUFxZ0NxQUFGQXFrQ3FRQVhBcTBDclFBWEFxOENyd0FUQXJBQ3NBQWVBckVDc1FBWkFySUNzZ0FlQXJNQ3N3QVpBclFDdEFBZUFyVUN0UUFaQXJnQ3VBQWNBcmtDdVFBZkFyMEN2UUFmQXI0Q3ZnQVBBcjhDdndBYUF0WUMxZ0FDQXRjQzF3QVNBdVlDNWdBSEF1Y0M1d0FXQXZnQytBQU9Bdm9DK2dBT0F2d0MvQUFPQXdJREFnQUNBd01EQXdBU0F3UURCQUFDQXdVREJRQVNBd1lEQmdBQ0F3Y0RCd0FTQXdnRENBQUNBd2tEQ1FBU0F3b0RDZ0FDQXdzREN3QVNBd3dEREFBQ0F3MEREUUFTQXc0RERnQUNBdzhERHdBU0F4QURFQUFDQXhFREVRQVNBeElERWdBQ0F4TURFd0FTQXhRREZBQUNBeFVERlFBU0F4WURGZ0FDQXhjREZ3QVNBeGdER0FBQ0F4a0RHUUFTQXhvREdnQUdBeHNER3dBVkF4d0RIQUFHQXgwREhRQVZBeDRESGdBR0F4OERId0FWQXlBRElBQUdBeUVESVFBVkF5SURJZ0FHQXlNREl3QVZBeVFESkFBR0F5VURKUUFWQXlZREpnQUdBeWNESndBVkF5Z0RLQUFHQXlrREtRQVZBeW9ES2dBSEF5d0RMQUFIQXk0RExnQUZBeThETHdBWEF6QURNQUFGQXpFRE1RQVhBeklETWdBRkF6TURNd0FYQXpRRE5BQUZBelVETlFBWEF6WUROZ0FGQXpjRE53QVhBemdET0FBRkF6a0RPUUFYQXpvRE9nQUZBenNET3dBWEEwTURRd0FYQTBZRFJnQUlBMGdEU0FBSUExUURWQUFRQTFVRFZRQVpBMVlEVmdBUUExY0RWd0FaQTFnRFdBQVFBMWtEV1FBWkExb0RXZ0FRQTFzRFd3QVpBMXdEWEFBRkEzSURjZ0FCQTNZRGRnQUJBM29EZXdBQkJERUVNUUFFQkRNRU5BQUZBQUVBQmdRd0FBRUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBQUFGZ0FaQUJZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUFBQWdBQUFBQUFBQUFDQUFBQUFBQUdnQUFBQUFBQUFBQUFBZ0FBQUFJQUFBQUd3QUpBQW9BQ3dBTUFCY0FEUUFZQUFBQUFBQUFBQUFBQUFBQUFBTUFBQUFFQUFRQUJBQUFBQVFBQUFBQUFBQUFBQUFBQUFVQUJRQUdBQVVBQkFBQUFBY0FBQUFPQUE4QUFBQWNBQThBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBSUFBZ0FDQUFJQUFnQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSUFBZ0FDQUFJQUFnQUFBQUlBQW9BQ2dBS0FBb0FEUUFBQUFBQUF3QURBQU1BQXdBREFBTUFBQUFFQUFRQUJBQUVBQVFBQUFBQUFBQUFBQUFBQUFVQUJnQUdBQVlBQmdBR0FBQUFBQUFPQUE0QURnQU9BQThBQUFBUEFBSUFBd0FDQUFNQUFnQURBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUFBQVFBQUFBQUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQUFBQlFBQUFBVUFCUUFBQUFBQUNBQUdBQWdBQmdBSUFBWUFDQUFFQUFBQUFBQUFBQUFBQUFBQUFCc0FCd0FiQUFjQUd3QUhBQnNBQndBSkFBQUFDUUFBQUFBQUFBQUtBQTRBQ2dBT0FBb0FEZ0FLQUE0QUNnQU9BQW9BRGdBTUFBQUFEUUFQQUEwQUdBQVFBQmdBRUFBWUFCQUFBQUFBQUFBQUNBQUVBQUFBRGdBQUFBQUFBQUFBQUFBQUFnQURBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUd3QUhBQWtBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFBQUFBQUFBQUFBQ0FBTkFBQUFBQUFDQUFBQUFBQUNBQUFBR0FBQUFBZ0FBQUFBQUFJQUFBQUFBQUFBQ0FBQUFBQUFBQUFBQUEwQUFBQVhBQUFBQUFBQUFBMEFCQUFBQUFVQUFBQU9BQVFBQUFBUEFBQUFBQUFBQUFVQUFBQUFBQUFBQUFBQUFBOEFBQUFHQUFBQUFBQUVBQVFBQUFBT0FBQUFBQUFBQUFBQUFBQU9BQVlBRGdBQUFBQUFBQUFBQUFBQUFBQUFBQWtBQUFBSUFBQUFBQUFBQUJvQUVRQUFBQWtBQUFBQUFCVUFBQUFDQUFBQUFBQUFBQUFBQUFBWEFBQUFBQUFBQUFBQUVRQUFBQUFBQ0FBQUFBQUFDQUFKQUJVQUFBQVhBQUFBRWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXdBQUFBQUFCUUFBQUFRQUhBQUFBQVVBQlFBRkFCTUFCUUFGQUFZQUJRQUZBQVFBQUFBUEFBUUFIQUFGQUJRQUJRQUZBQUFBQUFBRkFBQUFCUUFBQUFRQUJBQUFBQVVBQkFBSEFBQUFBQUFBQUJNQUJRQUFBQVVBQlFBUEFBQUFDQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFHQUFzQUR3QUxBQThBQ0FBRUFBZ0FBQUFJQUFRQUNBQUFBQWdBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCY0FIQUFBQUFBQUFBQUZBQUFBQUFBQUFBQUFDUUFBQUFBQUJRQUFBQVVBQUFBQUFBZ0FCQUFJQUFRQUNRQUFBQTBBRHdBTkFBQUFGd0FjQUFrQUFBQVNBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRndBY0FBQUFBQUFSQUJNQUFBQUZBQUFBQlFBU0FCUUFBQUFGQUFBQUFnQURBQUlBQXdBQUFBQUFBQUFFQUFBQUJBQUFBQVFBRndBY0FBQUFBQUFBQUFBQUFBQUZBQUFBQlFBSUFBWUFDQUFFQUFnQUJnQUFBQUFBRlFBUEFCVUFEd0FWQUE4QUVnQVVBQUFBQlFBQUFBVUFBQUFGQUJjQUhBQUFBQUFBQUFBRUFBUUFCQUFBQUFBQUFBQUFBQkVBQUFBQUFBQUFDQUFFQUFBQUFBQUFBQUFBRVFBVEFBSUFBd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBREFBQUFBd0FBQUFNQUFBQUFBQUFBQUFBQUFBQ0FBTUFBZ0FEQUFJQUF3QUNBQU1BQWdBREFBSUFBd0FDQUFNQUFnQURBQUlBQXdBQ0FBTUFBZ0FEQUFJQUF3QUFBQVFBQUFBRUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUFBQUFBQUFBQ0FBR0FBZ0FCZ0FJQUFZQUNBQUdBQWdBQmdBSUFBWUFDQUFHQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCZ0FJQUFRQUNnQU9BQW9BRGdBQUFBNEFBQUFPQUFBQURnQUFBQTRBQUFBT0FBMEFEd0FOQUE4QURRQVBBQTBBRHdBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmtBR1FBWkFBQUFBUUFCQUJZQUFRQUJBQUVBRmdBQUFBQUFBQUFXQUJZQUFBQUFBQUVBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQWdBQUFBSUFBZ0FBQUFCQUFBQUNnSUdDQkFBQkVSR1RGUUFHbU41Y213QVNHZHlaV3NBZG14aGRHNEFwQUFFQUFBQUFQLy9BQklBQUFBS0FCUUFIZ0FvQURRQVFRQkxBRlVBWHdCcEFITUFmUUNIQUpFQW13Q2xBSzhBQkFBQUFBRC8vd0FTQUFFQUN3QVZBQjhBS1FBMUFFSUFUQUJXQUdBQWFnQjBBSDRBaUFDU0FKd0FwZ0N3QUFRQUFBQUEvLzhBRWdBQ0FBd0FGZ0FnQUNvQU5nQkRBRTBBVndCaEFHc0FkUUIvQUlrQWt3Q2RBS2NBc1FBb0FBWkJXa1VnQUZSRFVsUWdBSDVOVDB3Z0FLaE9RVllnQU5SU1QwMGdBUUJVVlZJZ0FTd0FBUC8vQUJNQUF3QU5BQmNBSVFBckFESUFOd0JFQUU0QVdBQmlBR3dBZGdDQUFJb0FsQUNlQUtnQXNnQUEvLzhBRWdBRUFBNEFHQUFpQUN3QU9BQkZBRThBV1FCakFHMEFkd0NCQUlzQWxRQ2ZBS2tBc3dBQS8vOEFFZ0FGQUE4QUdRQWpBQzBBT1FCR0FGQUFXZ0JrQUc0QWVBQ0NBSXdBbGdDZ0FLb0F0QUFBLy84QUV3QUdBQkFBR2dBa0FDNEFPZ0ErQUVjQVVRQmJBR1VBYndCNUFJTUFqUUNYQUtFQXF3QzFBQUQvL3dBVEFBY0FFUUFiQUNVQUx3QTdBRDhBU0FCU0FGd0FaZ0J3QUhvQWhBQ09BSmdBb2dDc0FMWUFBUC8vQUJNQUNBQVNBQndBSmdBd0FEd0FRQUJKQUZNQVhRQm5BSEVBZXdDRkFJOEFtUUNqQUswQXR3QUEvLzhBRXdBSkFCTUFIUUFuQURFQU13QTlBRW9BVkFCZUFHZ0FjZ0I4QUlZQWtBQ2FBS1FBcmdDNEFMbGpNbk5qQkZoak1uTmpCRjVqTW5OakJHUmpNbk5qQkdwak1uTmpCR3BqTW5OakJHcGpNbk5qQkdwak1uTmpCR3BqTW5OakJHcGpNbk5qQkdwalkyMXdCSEJqWTIxd0JIQmpZMjF3QkhCalkyMXdCSEJqWTIxd0JIQmpZMjF3QkhCalkyMXdCSEJqWTIxd0JIQmpZMjF3QkhCalkyMXdCSEJrYkdsbkJIaGtiR2xuQkg1a2JHbG5CSVJrYkdsbkJJcGtiR2xuQklwa2JHbG5CSXBrYkdsbkJJcGtiR2xuQklwa2JHbG5CSXBrYkdsbkJJcGtibTl0QkpCa2JtOXRCSlprYm05dEJKeGtibTl0QktKa2JtOXRCS0prYm05dEJLSmtibTl0QktKa2JtOXRCS0prYm05dEJLSmtibTl0QktKbWNtRmpCS2htY21GakJLaG1jbUZqQktobWNtRmpCS2htY21GakJLaG1jbUZqQktobWNtRmpCS2htY21GakJLaG1jbUZqQktobWNtRmpCS2hzYVdkaEJMSnNhV2RoQkxwc2JuVnRCTUJzYm5WdEJNWnNiblZ0Qk14c2JuVnRCTkpzYm5WdEJOSnNiblZ0Qk5Kc2JuVnRCTkpzYm5WdEJOSnNiblZ0Qk5Kc2JuVnRCTkpzYjJOc0JOaHNiMk5zQk41c2IyTnNCT1J1ZFcxeUJPcHVkVzF5QlBCdWRXMXlCUFp1ZFcxeUJQeHVkVzF5QlB4dWRXMXlCUHh1ZFcxeUJQeHVkVzF5QlB4dWRXMXlCUHh1ZFcxeUJQeHZiblZ0QlFKdmJuVnRCUWh2Ym5WdEJRNXZiblZ0QlJSdmJuVnRCUlJ2Ym5WdEJSUnZiblZ0QlJSdmJuVnRCUlJ2Ym5WdEJSUnZiblZ0QlJSd2JuVnRCUnB3Ym5WdEJTQndiblZ0QlNad2JuVnRCU3h3Ym5WdEJTeHdiblZ0QlN4d2JuVnRCU3h3Ym5WdEJTeHdiblZ0QlN4d2JuVnRCU3h6YldOd0JUSnpiV053QlRoemJXTndCVDV6YldOd0JVUnpiV053QlVSemJXTndCVVJ6YldOd0JVUnpiV053QlVSemJXTndCVVJ6YldOd0JVUnpjekF4QlVwemN6QXhCVkJ6Y3pBeEJWWnpjekF4QlZ4emN6QXhCVnh6Y3pBeEJWeHpjekF4QlZ4emN6QXhCVnh6Y3pBeEJWeHpjekF4QlZ4emN6QXlCV0p6Y3pBeUJXaHpjekF5Qlc1emN6QXlCWFJ6Y3pBeUJYUnpjekF5QlhSemN6QXlCWFJ6Y3pBeUJYUnpjekF5QlhSemN6QXlCWFJ6Y3pBekJYcHpjekF6QllCemN6QXpCWVp6Y3pBekJZeHpjekF6Qll4emN6QXpCWXh6Y3pBekJZeHpjekF6Qll4emN6QXpCWXh6Y3pBekJZeHpjekEwQlpKemN6QTBCWmh6Y3pBMEJaNXpjekEwQmFSemN6QTBCYVJ6Y3pBMEJhUnpjekEwQmFSemN6QTBCYVJ6Y3pBMEJhUnpjekEwQmFSemN6QTFCYXB6Y3pBMUJiQnpjekExQmJaemN6QTFCYnh6Y3pBMUJieHpjekExQmJ4emN6QTFCYnh6Y3pBMUJieHpjekExQmJ4emN6QTFCYnh6Y3pBMkJjSnpjekEyQmNoemN6QTJCYzV6Y3pBMkJkUnpjekEyQmRSemN6QTJCZFJ6Y3pBMkJkUnpjekEyQmRSemN6QTJCZFJ6Y3pBMkJkUnpjekEzQmRwemN6QTNCZUJ6Y3pBM0JlWnpjekEzQmV4emN6QTNCZXh6Y3pBM0JleHpjekEzQmV4emN6QTNCZXh6Y3pBM0JleHpjekEzQmV4MGJuVnRCZkowYm5WdEJmaDBiblZ0QmY1MGJuVnRCZ1IwYm5WdEJnUjBiblZ0QmdSMGJuVnRCZ1IwYm5WdEJnUjBiblZ0QmdSMGJuVnRCZ1FBQUFBQkFBRUFBQUFCQUFNQUFBQUJBQUlBQUFBQkFBQUFBQUFDQUFnQUNRQUFBQUVBRGdBQUFBRUFFQUFBQUFFQUR3QUFBQUVBRFFBQUFBRUFRd0FBQUFFQVJRQUFBQUVBUkFBQUFBRUFRZ0FBQUFNQVB3QkFBRUVBQUFBQ0FCRUFFZ0FBQUFFQUVnQUFBQUVBUEFBQUFBRUFQZ0FBQUFFQVBRQUFBQUVBT3dBQUFBRUFDZ0FBQUFFQURBQUFBQUVBQ3dBQUFBRUFSd0FBQUFFQVNRQUFBQUVBU0FBQUFBRUFSZ0FBQUFFQU1BQUFBQUVBTWdBQUFBRUFNUUFBQUFFQUx3QUFBQUVBT0FBQUFBRUFPZ0FBQUFFQU9RQUFBQUVBTndBQUFBRUFCUUFBQUFFQUJ3QUFBQUVBQmdBQUFBRUFCQUFBQUFFQUZBQUFBQUVBRmdBQUFBRUFGUUFBQUFFQUV3QUFBQUVBR0FBQUFBRUFHZ0FBQUFFQUdRQUFBQUVBRndBQUFBRUFIQUFBQUFFQUhnQUFBQUVBSFFBQUFBRUFHd0FBQUFFQUlBQUFBQUVBSWdBQUFBRUFJUUFBQUFFQUh3QUFBQUVBSkFBQUFBRUFKZ0FBQUFFQUpRQUFBQUVBSXdBQUFBRUFLQUFBQUFFQUtnQUFBQUVBS1FBQUFBRUFKd0FBQUFFQUxBQUFBQUVBTGdBQUFBRUFMUUFBQUFFQUt3QUFBQUVBTkFBQUFBRUFOZ0FBQUFFQU5RQUFBQUVBTXdCTEFKZ0FtQUNZQUpnRUpnUW1CQ1lFSmdjVUI4QU9VQTVRRG1ZT2lBNklEb2dPaUE2K0R1UVBFZzhTRHhJUEVnOG1EeVlQSmc4bUR6b1BPZzg2RHpvUFRnOU9EMDRQVGc5Z0QyQVBZQTlnRDNvUGVnOTZEM29QdkErOEQ3d1B2QS9hRDlvUDJnL2FEL2dQK0EvNEQvZ1FLaEFxRUNvUUtoQmNFRndRWEJCY0VJNFFvaER1RU13UXpCRE1FTXdRN2hEdUVPNFE3aEVhQUFFQUFBQUJBQWdBQWdIRUFOOER2UVBzQStzRDZnUHBBK2dENXdQbUErVUQ1QVBqQStJRDRRUGdBOThEM2dQZEE5d0Qyd1BhQTlrRDJBUFhBOVlEOWdQM0JLa0R2QU83QkZBRVVRUlNCRk1FVkFSVkJGY0VXQVJaQkZvRVd3UmNCRjBFWGdSZkJFNEVZQVJoQkdJRVl3UmtCR1VFWmdSdEJHNEVid1J3QkV3RWNRUnlCSE1FZEFSMUJIWUVkd1I0QkUwRWVRUjZCSHNFZkFSOUJINEVmd1NBQklFRWdnU0RCSVFFaFFTR0JJY0VpQVNKQklvRWl3U01CSTBFamdTUEJKQUVrUVNTQkpNRVJBU1VCSlVFbGdTWEJKZ0VtUVNhQkowRW5BUlBCSjRFbndTZ0JLRUVvZ1NqQktRRXBRU21CS2NFcUFQK0JGWUVtd1NxQktzRXJBU3RCSzRFcndTd0JMRUVzZ082QTdrRXN3UzBCTFVEdUFTMkJMY0R0d1M0QTdZRXVRUEdCTG9EMFFTN0JMd0QwZ1M5QTlNRDFBUytCTDhFd0FQNUJNRUQrQVRDQk1NRXhBVEZBLzhFQUFRQkJNWUV4d1FDQk1nRUF3VEpCTW9FQkFUTEJBVUVCZ1FIQk13RUNBUUpCTTBFemdUUEJOQUUwUVRTQk5NRUNnVGNCTlFFQ3dRTUJBMEVEZ1FQQkJBRUVRUVNCQk1FRkFRNEJCVUVGZ1RWQkJjRUdBUVpCTllFR2dUWEJOZ0VHd1FjQkIwRUhnUWZCQ0FFMlFRaEJDSUUyZ1FqQk5zRUpBUWxCQ2NFSmdBQkFOOEFDQUFsQUNZQUp3QW9BQ2tBS2dBckFDd0FMUUF1QUM4QU1BQXhBRElBTXdBMEFEVUFOZ0EzQURnQU9RQTZBRHNBUEFBOUFENEFaZ0JvQUlNQWhBQ0ZBSVlBaHdDSUFJb0Fpd0NNQUkwQWpnQ1BBSkFBa1FDU0FKTUFsQUNWQUpZQWx3Q1lBSmtBbkFDZEFKNEFud0NnQUtJQXd3REZBTWNBeVFETEFNMEF6d0RSQU5NQTFRRFhBTmtBMndEZEFOOEE0UURqQU9VQTV3RHJBTzBBN3dEeEFQTUE5d0Q1QVB3QS9nRUFBUUlCQmdFSUFRb0JEd0VSQVJNQkZRRVhBUmtCR3dFZEFSOEJJUUVqQVNVQkp3RXBBU3NCTFFFdkFURUJNd0UxQVRjQk9RRTdBVHdCUGdGQUFVNEJZZ0Y1QVhzQmZBRjlBWDRCZndHQUFZSUJnd0dFQVlVQmhnR0hBWWdCaVFHS0FZc0JqQUdOQVk4QmtBR1JBWklCa3dHVUFaVUJsZ0dYQVpnQm1RR2FBWnNCeEFIRkFjWUJ4d0hJQWNrQnlnSExBY3dCelFIT0FjOEIwUUhTQWRNQjFBSFZBZFlCMXdIWUFka0IyZ0hiQWR3QjNRSGVBZDhCNEFIaEFlSUI0d0hrQWVVQjVnSG5BZWdCNlFIcUFlc0I3QUh0QWU0Qjd3SHdBZkVCOGdKU0FsUUNXQUphQWx3Q1hnSmlBbVFDYWdKc0FuQUNjZ0owQW5ZQ2VnSjhBbjRDZ0FLYUFxSUNwQUtxQXJBRGh3T09BNU1EbGdBQkFBQUFBUUFJQUFJQmRBQzNBK3dENndQcUEra0Q2QVBuQStZRDVRUGtBK01ENGdQaEErQUQzd1BlQTkwRDNBUGJBOW9EMlFQWUE5Y0QxZ1AyQS9jRXFRUlFCRkVFVWdSVEJGUUVWUVJYQkZnRVdRUmFCRnNFWEFSZEJGNEVYd1JPQkdBRVlRUmlCR01FWkFSbEJHWUViUVJ1Qkc4RWNBU21CSEVFY2dSekJIUUVkUVIyQkhjRWVBUk5CSGtFZWdSN0JId0VmUVIrQkg4RWdBU0JCSUlFZ3dTRUJJVUVoZ1NIQklnRWlRU0tCSXNFakFTTkJJNEVqd1NRQkpFRWtnU1RCRVFFbEFTVkJKWUVsd1NZQkprRW1nU2RCSndFVHdTZUJKOEVvQVNoQktJRW93U2tCS1VFcHdTb0EvNEVWZ1NiQk1nRUF3VEpCTW9FQkFUTEJBVUVCZ1FIQk13RUNBUUpCTTBFemdUUEJOQUUwUVRTQk5NRUNnVGNCTlFFQ3dRTUJBMEVEZ1FQQkJBRUVRUVNCQk1FRkFUQUEva0V3UVA0Qk1JRXd3VEVCTVVEL3dRQUJBRUV4Z1RIQkFJRU9BUVZCQllFMVFRWEJCZ0VHUVRXQkJvRTF3VFlCQnNFSEFRZEJCNEVId1FnQk5rRUlRUWlCTm9FSXdUYkFBRUF0d0JGQUVZQVJ3QklBRWtBU2dCTEFFd0FUUUJPQUU4QVVBQlJBRklBVXdCVUFGVUFWZ0JYQUZnQVdRQmFBRnNBWEFCZEFGNEFvd0NrQUtVQXBnQ25BS2dBcWdDckFLd0FyUUN1QUs4QXNBQ3hBTElBc3dDMEFMVUF0Z0MzQUxnQXVRQzhBTDBBdmdDL0FNQUF3Z0RFQU1ZQXlBREtBTXdBemdEUUFOSUExQURXQU5nQTJnRGNBTjRBNEFEaUFPUUE1Z0RvQU93QTdnRHdBUElBOUFENEFQb0EvUUQvQVFFQkF3RUhBUWtCQ3dFUUFSSUJGQUVXQVJnQkdnRWNBUjRCSUFFaUFTUUJKZ0VvQVNvQkxBRXVBVEFCTWdFMEFUWUJPQUU2QVQwQlB3RkJBVThCWXdIekFmUUI5UUgyQWZjQitBSDVBZm9CK3dIOEFmMEIvZ0gvQWdBQ0FRSUNBZ01DQkFJRkFnWUNCd0lJQWdrQ0NnSUxBZ3dDRFFJT0FnOENFQUlSQWhJQ0ZBSVZBaFlDRndJWUFoa0NHZ0liQWh3Q0hRSWVBaDhDSVFJaUFsTUNWUUpaQWxzQ1hRSmZBbU1DWlFKckFtMENjUUp6QW5VQ2R3SjdBbjBDZndLQkFwc0Nvd0tsQXFzQ3NRQUdBQUFBQmdBU0FDb0FRZ0JhQUhJQWlnQURBQUFBQVFBU0FBRUFrQUFCQUFBQVNnQUJBQUVBVFFBREFBQUFBUUFTQUFFQWVBQUJBQUFBU2dBQkFBRUFUZ0FEQUFBQUFRQVNBQUVBWUFBQkFBQUFTZ0FCQUFFQThnQURBQUFBQVFBU0FBRUFTQUFCQUFBQVNnQUJBQUVDR1FBREFBQUFBUUFTQUFFQU1BQUJBQUFBU2dBQkFBRUNHd0FEQUFBQUFRQVNBQUVBR0FBQkFBQUFTZ0FCQUFFRExRQUNBQUVCY1FGMUFBQUFCQUFBQUFFQUNBQUJCaDRBTmdCeUFLUUFyZ0M0QU1vQS9BRU9BUmdCU2dGa0FYNEJrQUc2QWV3QjlnSVlBaklDUkFKMkFvZ0NvZ0xNQXQ0REVBTWFBeVFETmdOb0EzSURmQU9HQTZBRHVnUE1BL1lFS0FReUJGUUViZ1NBQkxJRXhBVGVCUWdGR2dVa0JTNEZPQVZDQld3RmxnWEFCZW9HRkFBR0FBNEFGQUFhQUNBQUpnQXNBSU1BQWdGeEFJUUFBZ0Z5QUlZQUFnRnpBd1FBQWdGMEFWUUFBZ0YxQXdJQUFnRjJBQUVBQkFMWUFBSUJkZ0FCQUFRQXlRQUNBWElBQWdBR0FBd0MyZ0FDQVhZQzNBQUNBNnNBQmdBT0FCUUFHZ0FnQUNZQUxBQ0xBQUlCY1FDTUFBSUJjZ01lQUFJQmN3TWNBQUlCZEFGV0FBSUJkUU1hQUFJQmRnQUNBQVlBREFGS0FBSUJjZ0RsQUFJRHF3QUJBQVFDM2dBQ0FYWUFCZ0FPQUJRQUdnQWdBQ1lBTEFDUEFBSUJjUUNRQUFJQmNnRHJBQUlCY3dNcUFBSUJkQUZZQUFJQmRRTXNBQUlCZGdBREFBZ0FEZ0FVQXVBQUFnRnlBdUlBQWdGMkFQa0FBZ09yQUFNQUNBQU9BQlFBL0FBQ0FYSUM1QUFDQVhZQS9nQUNBNnNBQWdBR0FBd0M1Z0FDQVhJQzZBQUNBWFlBQlFBTUFCSUFHQUFlQUNRQlRBQUNBWEVCQmdBQ0FYSUFsQUFDQVhNQzZnQUNBWFlCQ0FBQ0E2c0FCZ0FPQUJRQUdnQWdBQ1lBTEFDVkFBSUJjUUNXQUFJQmNnQ1lBQUlCY3dNd0FBSUJkQUZhQUFJQmRRTXVBQUlCZGdBQkFBUUM3QUFDQVhJQUJBQUtBQkFBRmdBY0FSY0FBZ0Z5QVZ3QUFnRjFBdTRBQWdGMkFSa0FBZ09yQUFNQUNBQU9BQlFCSFFBQ0FYSUM4QUFDQVhZQllBQUNBNnNBQWdBR0FBd0M4Z0FDQVhZQllnQUNBNnNBQmdBT0FCUUFHZ0FnQUNZQUxBQ2NBQUlCY1FDZEFBSUJjZ0VyQUFJQmN3TklBQUlCZEFGZUFBSUJkUU5HQUFJQmRnQUNBQVlBREFMMEFBSUJjd0wyQUFJQmRnQURBQWdBRGdBVUF2Z0FBZ0Z4QXZvQUFnRnlBdjRBQWdGMkFBVUFEQUFTQUJnQUhnQWtBMVFBQWdGeEFLQUFBZ0Z5QTFvQUFnRnpBMWdBQWdGMEExWUFBZ0YyQUFJQUJnQU1BVHdBQWdGeUF3QUFBZ0YyQUFZQURnQVVBQm9BSUFBbUFDd0Fvd0FDQVhFQXBBQUNBWElBcGdBQ0FYTURCUUFDQVhRQlZRQUNBWFVEQXdBQ0FYWUFBUUFFQXRrQUFnRjJBQUVBQkFES0FBSUJjZ0FDQUFZQURBTGJBQUlCZGdMZEFBSURxd0FHQUE0QUZBQWFBQ0FBSmdBc0FLc0FBZ0Z4QUt3QUFnRnlBeDhBQWdGekF4MEFBZ0YwQVZjQUFnRjFBeHNBQWdGMkFBRUFCQUZMQUFJQmNnQUJBQVFDM3dBQ0FYWUFBUUFFQXkwQUFnRjJBQU1BQ0FBT0FCUUM0UUFDQVhJQzR3QUNBWFlBK2dBQ0E2c0FBd0FJQUE0QUZBRDlBQUlCY2dMbEFBSUJkZ0QvQUFJRHF3QUNBQVlBREFMbkFBSUJjZ0xwQUFJQmRnQUZBQXdBRWdBWUFCNEFKQUZOQUFJQmNRRUhBQUlCY2dDMEFBSUJjd0xyQUFJQmRnRUpBQUlEcXdBR0FBNEFGQUFhQUNBQUpnQXNBTFVBQWdGeEFMWUFBZ0Z5QUxnQUFnRnpBekVBQWdGMEFWc0FBZ0YxQXk4QUFnRjJBQUVBQkFMdEFBSUJjZ0FFQUFvQUVBQVdBQndCR0FBQ0FYSUJYUUFDQVhVQzd3QUNBWFlCR2dBQ0E2c0FBd0FJQUE0QUZBRWVBQUlCY2dMeEFBSUJkZ0ZoQUFJRHF3QUNBQVlBREFMekFBSUJkZ0ZqQUFJRHF3QUdBQTRBRkFBYUFDQUFKZ0FzQUx3QUFnRnhBTDBBQWdGeUFTd0FBZ0Z6QTBrQUFnRjBBVjhBQWdGMUEwY0FBZ0YyQUFJQUJnQU1BdlVBQWdGekF2Y0FBZ0YyQUFNQUNBQU9BQlFDK1FBQ0FYRUMrd0FDQVhJQy93QUNBWFlBQlFBTUFCSUFHQUFlQUNRRFZRQUNBWEVBd0FBQ0FYSURXd0FDQVhNRFdRQUNBWFFEVndBQ0FYWUFBZ0FHQUF3QlBRQUNBWElEQVFBQ0FYWUFBUUFFQVZBQUFnRnlBQUVBQkFGU0FBSUJjZ0FCQUFRQlVRQUNBWElBQVFBRUFWTUFBZ0Z5QUFVQURBQVNBQmdBSGdBa0FLOEFBZ0Z4QUxBQUFnRnlBT3dBQWdGekF5c0FBZ0YwQVZrQUFnRjFBQVVBREFBU0FCZ0FIZ0FrQXo0QUFnRnhBendBQWdGeUEwSUFBZ0Z6QTBBQUFnRjBBMFFBQWdGMkFBVUFEQUFTQUJnQUhnQWtBejhBQWdGeEF6MEFBZ0Z5QTBNQUFnRnpBMEVBQWdGMEEwVUFBZ0YyQUFVQURBQVNBQmdBSGdBa0Ewd0FBZ0Z4QTBvQUFnRnlBMUFBQWdGekEwNEFBZ0YwQTFJQUFnRjJBQVVBREFBU0FCZ0FIZ0FrQTAwQUFnRnhBMHNBQWdGeUExRUFBZ0Z6QTA4QUFnRjBBMU1BQWdGMkFBRUFCQUhCQUFJQmNnQUNBQkVBSlFBcEFBQUFLd0F0QUFVQUx3QTBBQWdBTmdBN0FBNEFQUUErQUJRQVJRQkpBQllBU3dCTkFCc0FUd0JVQUI0QVZnQmJBQ1FBWFFCZUFDb0FpUUNKQUN3QW13Q2JBQzBBcVFDcEFDNEF1d0M3QUM4QTlBRDBBREFCUlFGSUFERUJ3QUhBQURVQUFRQUFBQUVBQ0FBQkFBWUFQd0FCQUFJQklRRWlBQUVBQUFBQkFBZ0FBZ0FPQUFRRTNRVGVCTjhFNEFBQkFBUUF4d0RJQU5zQTNBQUVBQUFBQVFBSUFBRUFKZ0FDQUFvQUhBQUNBQVlBREFPc0FBSUFTZ094QUFJQVdBQUJBQVFEc2dBQ0FGZ0FBUUFDQUVvQVZ3QUVBQUFBQVFBSUFBRUFSQUFDQUFvQUZBQUJBQVFEclFBQ0FFMEFBUUFFQTY4QUFnQk5BQVFBQUFBQkFBZ0FBUUFlQUFJQUNnQVVBQUVBQkFPdUFBSUFVQUFCQUFRRHNBQUNBRkFBQVFBQ0FFb0RyQUFCQUFBQUFRQUlBQUVBQmdONUFBRUFBUUJMQUFFQUFBQUJBQWdBQVFBR0FpSUFBUUFCQWFFQUFRQUFBQUVBQ0FBQkFBWURqQUFCQUFFQU5nQUJBQUFBQVFBSUFBSUFIQUFDQThFRHdBQUJBQUFBQVFBSUFBSUFDZ0FDQTc4RHZnQUJBQUlBTHdCUEFBRUFBQUFCQUFnQUFnQWVBQXdFTVFRekJESUVOQVExQkNnRUtRUXFBL3NFTEFRdEJDNEFBUUFNQUNjQUtBQXJBRE1BTlFCR0FFY0FTQUJMQUZNQVZBQlZBQUVBQUFBQkFBZ0FBZ0FNQUFNRUx3UXdCREFBQVFBREFFa0FTd1A3QUFFQUFBQUJBQWdBQWdCbUFBZ0VSZ1EyQkRjRU9RUTZCRUlFUXdSRkFBRUFBQUFCQUFnQUFnQVdBQWdBR3dBVkFCUUFIUUFaQUJnQUZ3QVdBQUVBQ0FQNkJDc0Vad1JvQkdrRWFnUnJCR3dBQVFBQUFBRUFDQUFDQUJZQUNBUm5CQ3NFYkFSckJHb0VhUVA2QkdnQUFRQUlBQlFBRlFBV0FCY0FHQUFaQUJzQUhRQUJBQUFBQVFBSUFBSUFGZ0FJQUJVQUZnQVhBQmdBR1FBYkFCMEFGQUFCQUFnRU5nUTNCRGtFT2dSQ0JFTUVSUVJHQUFFQUFBQUJBQWdBQVFBR0EzQUFBUUFCQUJNQUJnQUFBQUVBQ0FBREFBRUFFZ0FCQUdZQUFBQUJBQUFBU2dBQ0FBSURnd09EQUFBRHh3UFFBQUVBQVFBQUFBRUFDQUFDQUR3QUNnUFFBODhEemdQTkE4d0R5d1BLQThrRHlBUEhBQUVBQUFBQkFBZ0FBZ0FhQUFvRU93QjhBSFVBZGdROEJEMEVQZ1EvQkVBRVFRQUNBQUVBRkFBZEFBQUFBUUFBQUFFQUNBQUNBQ1lBRUFQUUE4OER6Z1BOQTh3RHl3UEtBOGtEeUFQSEJFa0VSd1JLQkVzRVNBVGhBQUVBRUFBVUFCVUFGZ0FYQUJnQUdRQWFBQnNBSEFBZEFFMEFUZ0R5QWhrQ0d3TXQiLAogICJSb2JvdG8tUmVndWxhci50dGYiOiAiQUFFQUFBQVNBUUFBQkFBZ1IwUkZSdFJYMUZrQUFnL3NBQUFDUkVkUVQxTktjdUN6QUFJU01BQUFVaVJIVTFWQ3c0YVpFUUFDWkZRQUFCZm9UMU12TXFDbnNhWUFBQUdvQUFBQVlHTnRZWEJBbWtsMkFBQWFmQUFBRXNoamRuUWdKRUVHNVFBQUw5d0FBQUJNWm5CbmJXZjBYS3NBQUMxRUFBQUJ2R2RoYzNBQUNBQVRBQUlQNEFBQUFBeG5iSGxtSE4yYkJRQUFPZkFBQWRNMmFHUnRlRGM0RVJjQUFCV1FBQUFFN0dobFlXVDRScXNPQUFBQkxBQUFBRFpvYUdWaENyb0tnZ0FBQVdRQUFBQWthRzEwZU9pRWlJZ0FBQUlJQUFBVGlHeHZZMkhneUdlcEFBQXdLQUFBQ2NadFlYaHdCeElDK1FBQUFZZ0FBQUFnYm1GdFpUVlRZMWtBQWcwb0FBQUNtSEJ2YzNUL2JRQmtBQUlQd0FBQUFDQndjbVZ3ZEtDUDdBQUFMd0FBQUFEYkFBRUFBQUFDQUFDRUtsbm9Ydzg4OVFBYkNBQUFBQUFBeFBBUkxnQUFBQURRMjA2YStodjkxUWt3Q0hNQUFBQUpBQUlBQUFBQUFBQUFBUUFBQjJ6K0RBQUFDVW42Ry81S0NUQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUJPSUFBUUFBQk9JQWp3QVdBRlFBQlFBQkFBQUFBQUFPQUFBQ0FBSVVBQVlBQVFBREJJVUJrQUFGQUFBRm1nVXpBQUFCSHdXYUJUTUFBQVBSQUdZQ0FBQUFBZ0FBQUFBQUFBQUFBT0FBQ3Y5UUFDRi9BQUFBSVFBQUFBQkhUMDlIQUVBQUFQLzlCZ0QrQUFCbUI1b0NBQ0FBQVo4QUFBQUFCRG9Gc0FBZ0FDQUFBZ09NQUdRQUFBQUFBQUFBQUFIN0FBQUIrd0FBQWc4QW9BS1BBSWdFN1FCM0JINEFiZ1hjQUdrRStRQmxBV1VBWndLOEFJVUN5QUFtQTNJQUhBU0pBRTRCa2dBZEFqVUFKUUliQUpBRFRBQVNCSDRBY3dSK0FLb0VmZ0JkQkg0QVhnUitBRFVFZmdDYUJINEFoQVIrQUUwRWZnQndCSDRBWkFId0FJWUJzUUFwQkJFQVNBUmtBSmdFTGdDR0E4Y0FTd2N2QUdvRk9BQWNCUHNBcVFVMUFIY0ZQd0NwQkl3QXFRUnNBS2tGY3dCNkJiUUFxUUl0QUxjRWFnQTFCUVFBcVFST0FLa0cvQUNwQmJRQXFRV0FBSFlGREFDcEJZQUFiUVR0QUtnRXZ3QlFCTVlBTVFVd0FJd0ZGd0FjQnhrQVBRVUVBRGtFemdBUEJNb0FWZ0lmQUpJRFNBQW9BaDhBQ1FOWUFFQURuQUFFQW5rQU9RUmFBRzBFZlFDTUJEQUFYQVNEQUY4RVBRQmRBc2NBUEFSOUFHQUVhQUNNQWZFQWpRSHAvNzhFRGdDTkFmRUFuQWNEQUlzRWFnQ01CSkFBV3dSOUFJd0VqQUJmQXJVQWpBUWdBRjhDblFBSkJHa0FpQVBnQUNFR0F3QXJBL2NBS1FQSkFCWUQ5d0JZQXJVQVFBSHpBSzhDdFFBVEJYRUFnd0h6QUlzRVlBQnBCS1lBV3dXMEFHa0UyQUFmQWVzQWt3VG9BRm9EV0FCbUJra0FXd09UQUpNRHdRQm1CRzRBZndaS0FGb0RxZ0I0QXYwQWdnUkdBR0VDN3dCQ0F1OEFQZ0tDQUhzRWlBQ2FBK2tBUXdJV0FKTUIrd0IwQXU4QWVnT2pBSG9Ed0FCbUJkd0FWUVkxQUZBR09RQnZBOGtBUkFkNi8vSUVSQUJaQllBQWRnUzZBS1lFd2dDTEJzRUFUZ1N3QUg0RWtRQkhCSWdBV3dTY0FKVUZtZ0FkQWZvQW13UnpBSm9FVHdBaUFpa0FJZ1dMQUtJRWlBQ1JCNkVBYUFkRUFHRUIvQUNnQlljQVhRSzUvK1FGZmdCbEJKSUFXd1dRQUl3RTh3Q0lBZ1AvdEFRM0FHSUR4QUNwQTQwQWpBT3JBSGdEYWdDQkFmRUFqUUt0QUhrQ0tnQXlBOFlBZXdMOEFGNENXZ0IrQUFEOHB3QUEvVzhBQVB5TEFBRDlYZ0FBL0NjQjcvMDRBZzBBdHdRTEFIRUNGd0NUQkhNQXNRV2tBQjhGY1FCbkJUNEFNZ1NSQUhnRnRRQ3lCSkVBUlFXN0FFMEZpUUJhQlZJQWNRU0ZBR1FFdlFDZ0JBSUFMZ1NJQUdBRVVBQmpCQ1VBYlFTSUFKRUVqZ0I2QXBjQXd3UnVBQ1VEN0FCbEJNUUFLUVNJQUpFRVRRQmxCSWdBWUFRc0FGRUVYUUNQQmFNQVZ3V2FBRjhHbHdCNkJLRUFlUVJDLzlvR1NBQktCZjhBS2dWa0FIc0lrUUF4Q0tRQXNRYUNBRDRGdEFDd0JRc0FvZ1lFQURJSFF3QWJCTDhBVUFXMEFMRUZxUUF2QlFjQVRRWXNBRk1GMlFDdkJYb0FsZ2VIQUxBSHdBQ3dCaElBRUFickFMSUZCUUNqQldRQWt3Y25BTGNGR0FCWkJHd0FZUVNTQUowRFd3Q2FCTlFBTGdZZ0FCVUVFQUJZQko0QW5BUlNBSndFb0FBc0JlOEFuUVNkQUp3RW5nQ2NBOWdBS0FYTkFHUUV2UUNjQkZrQVp3WjRBSndHbmdDUkJQY0FIZ1kyQUowRVdBQ2RCRTBBWkFhSEFKMEVaQUF2QkdqLzZBUk5BR2NHeVFBbkJ1UUFuQVNKLy8wRW5nQ2NCd2dBbkFZckFJRUVWdi9jQnlzQXR3WDRBSmtFMGdBb0JFWUFEd2NMQU1rR0N3QzhCdEVBa3dYaEFKWUpCQUMyQjlFQW13UWpBRkFEMndCTUJYRUFad1NMQUZzRkNnQVdCQU1BTGdWeEFHY0VpQUJiQndFQW5BWWtBSDRIQ0FDY0Jpc0FnUVV5QUhVRVJ3QmtCUDBBZEFBQS9HY0FBUHh4QUFEOVpnQUEvYVFBQVBvYkFBRDZMQVJXLzl3Rkd3Q29CSWtBakFSakFLSURrQUNSQk5zQXNRUUZBSkVGQ1FDakJINEFtZ2FNQUVRRmd3QStCODhBcUFXMEFKRUlNUUN3QnZRQWtRWHVBSEVFMHdCdEJ5d0FOQVZjQUI4RmJ3Q1dCR29BZ3dWd0FJb0dMd0EvQkwzLzNnVUpBS01FV2dDYUJiSUFzUVNJQUpFRmh3QmRCS2dBYUFTb0FHa0V0d0E2QTBrQU93VDJBRmNHbEFCWkJ1UUFaQVpXQURZRkt3QXhCRWtBVWdRSEFIa0h3UUJFQm5VQVB3ZjdBS2tHb1FDUUJQWUFkZ1FkQUdVRnJRQWpCU0FBUmdWa0FKWURJQUJ2QkJRQUFBZ3BBQUFFRkFBQUNDa0FBQUs1QUFBQ0NnQUFBVndBQUFSL0FBQUNNQUFBQWFJQUFBRFJBQUFBQUFBQUFqUUFKUUkwQUNVRlFBQ2lCajhBa0FPbUFBMEJtUUJnQVprQU1BR1hBQ1FCbVFCUEF0UUFhQUxiQUR3Q3dRQWtCR2tBUmdTUEFGY0NzZ0NLQThRQWxBVmFBSlFBOWdBbUI2b0FSQUptQUd3Q1pnQlpBNk1BT3dMdkFEWURZQUI2QktZQVd3WlZBQjhHa0FDbkNIWUFxQWRqQURrR0t3Q01CSDRBWHdYYUFCOEVJZ0FxQkhRQUlBVklBRjBGVHdBZkJlY0FlZ1BPQUdnSU9nQ2lCUUVBWndVWEFKZ0dKZ0JVQnRjQVpBYlBBR01HYWdCWkJJOEFhZ1dPQUtrRXJ3QkZCSklBcUFURkFEOElPZ0JpQWd6L3NBU0NBR1VFWkFDWUJCRUFQZ1F2QUlVRUNBQXJBa3dBdFFLUEFHNENBd0JjQlBNQVBBUnVBQjhFaXdBOEJ0UUFQQWJVQUR3RTdnQThCcHNBWHdBQUFBQUlNd0JiQ0RVQVhBUWdBRHNFbmdCYUFmei90Z0dSQUdjRHBBQ0RBNTRBZ1FPZkFJRUQ5QUJwQkE0QWFRUHovMTREN3dCdUE2UUFnUUg5QUo4RWhRQVRCRkFBaWdSOEFHQUVnQUNLQStZQWlnUExBSW9FckFCakJPTUFpZ0hvQUpjRHp3QXJCRlFBaWdPMEFJb0dBZ0NLQk9NQWlnUzdBR0FFWEFDS0JMc0FXUVJLQUlvRUlBQkRCQ1lBS0FSOEFIUUVad0FVQmhVQU1RUlVBQ1lFS3dBTkJDTUFSd0x2QUZBQzd3QjZBdThBUWdMdkFENEM3d0EyQXU4QVd3THZBRllDN3dBNkF1OEFUd0x2QUVrRGxnQ1BBclVBbmdRNkFCNEV3d0JrQlV3QXNRVWtBTElFRXdDU0JUMEFzZ1FQQUpJRUlBQkRCRE1BTUFROEFCWURyd0NLQkdjQUZBUzdBR0FFWndBVUE0a0FQZ1RPQUlvRDd3QS9CV2NBWUFVWEFHQUU4Z0IxQlhJQUpnUjhBR0FIUVFBbkIwOEFpZ1YwQUNnRXpRQ0tCRmtBaWdVa0FDNEdDd0FmQkQ4QVJ3VHNBSW9FVGdDTEJNRUFKd1FmQUNJRktBQ0tCR29BUFFaUkFJb0dyQUNLQlIwQUNBWHhBSW9FVGdDS0JIc0FTd1oyQUlvRWh3QlFCQkVBQ3daSEFCOEVlUUNMQlFrQWl3VTNBQ01Gd2dCZ0JGOEFEUVNvQUNZR1lRQW1CR29BUFFScUFJb0Z3d0FDQk1vQVhnUS9BRWNFdXdCZ0JETUFNQVBqQUVJSUlnQ0tCS3NBS0FSOUFJd0VNZ0JjQkpNQVd3U01BRnNEZVFCWEJJMEFqQVNjQUZzRVBRQmRCSDBBWUFXQkFINEZyZ0IrQlpNQXNnWGdBSDRGNHdCK0E5VUFvQVNDQUlNRHJ3Q0tCRmdBRHdUUEFENEM3d0JRQXU4QU5nTHZBRnNDN3dCV0F1OEFPZ0x2QUU4Qzd3QkpCR3NBWlFRdUFFb0dwQUJnQkxrQWdnVUFBSGdDQnYrMEFnVC90QUg3QUpzQisvLzZBZnNBbXdIN0FJWUVVQUNLQWZzQUFBSTFBQ1VGWFFBbEJWMEFKUVNHQUFBRXhnQXhBcDMvOUFVNEFCd0ZPQUFjQlRnQUhBVTRBQndGT0FBY0JUZ0FIQVU0QUJ3Rk5RQjNCSXdBcVFTTUFLa0VqQUNwQkl3QXFRSXQvK0FDTFFDd0FpMy82UUl0LzlZRnRBQ3BCWUFBZGdXQUFIWUZnQUIyQllBQWRnV0FBSFlGTUFDTUJUQUFqQVV3QUl3Rk1BQ01CTTRBRHdSYUFHMEVXZ0J0QkZvQWJRUmFBRzBFV2dCdEJGb0FiUVJhQUcwRU1BQmNCRDBBWFFROUFGMEVQUUJkQkQwQVhRSDYvOFlCK2dDV0Fmci96d0g2Lzd3RWFnQ01CSkFBV3dTUUFGc0VrQUJiQkpBQVd3U1FBRnNFYVFDSUJHa0FpQVJwQUlnRWFRQ0lBOGtBRmdQSkFCWUZPQUFjQkZvQWJRVTRBQndFV2dCdEJUZ0FIQVJhQUcwRk5RQjNCREFBWEFVMUFIY0VNQUJjQlRVQWR3UXdBRndGTlFCM0JEQUFYQVUvQUtrRkdRQmZCSXdBcVFROUFGMEVqQUNwQkQwQVhRU01BS2tFUFFCZEJJd0FxUVE5QUYwRWpBQ3BCRDBBWFFWekFIb0VmUUJnQlhNQWVnUjlBR0FGY3dCNkJIMEFZQVZ6QUhvRWZRQmdCYlFBcVFSb0FJd0NMZiszQWZyL25RSXQvN1lCK3YrY0FpMy83QUg2LzlJQ0xRQVlBZkgvK3dJdEFLb0dsd0MzQTlvQWpRUnFBRFVDQS8rMEJRUUFxUVFPQUkwRVRnQ2hBZkVBa3dST0FLa0I4UUJYQkU0QXFRS0hBSndFVGdDcEFzMEFuQVcwQUtrRWFnQ01CYlFBcVFScUFJd0Z0QUNwQkdvQWpBUnEvN3dGZ0FCMkJKQUFXd1dBQUhZRWtBQmJCWUFBZGdTUUFGc0U3UUNvQXJVQWpBVHRBS2dDdFFCVEJPMEFxQUsxQUdNRXZ3QlFCQ0FBWHdTL0FGQUVJQUJmQkw4QVVBUWdBRjhFdndCUUJDQUFYd1MvQUZBRUlBQmZCTVlBTVFLZEFBa0V4Z0F4QXAwQUNRVEdBREVDeFFBSkJUQUFqQVJwQUlnRk1BQ01CR2tBaUFVd0FJd0VhUUNJQlRBQWpBUnBBSWdGTUFDTUJHa0FpQVV3QUl3RWFRQ0lCeGtBUFFZREFDc0V6Z0FQQThrQUZnVE9BQThFeWdCV0EvY0FXQVRLQUZZRDl3QllCTW9BVmdQM0FGZ0hldi95QnNFQVRnV0FBSFlFaUFCYkJJRC92Z1NBLzc0RUpnQW9CSVVBRXdTRkFCTUVoUUFUQklVQUV3U0ZBQk1FaFFBVEJJVUFFd1I4QUdBRDVnQ0tBK1lBaWdQbUFJb0Q1Z0NLQWVqL3ZnSG9BSTRCNlAvSEFlai90QVRqQUlvRXV3QmdCTHNBWUFTN0FHQUV1d0JnQkxzQVlBUjhBSFFFZkFCMEJId0FkQVI4QUhRRUt3QU5CSVVBRXdTRkFCTUVoUUFUQkh3QVlBUjhBR0FFZkFCZ0JId0FZQVNBQUlvRDVnQ0tBK1lBaWdQbUFJb0Q1Z0NLQStZQWlnU3NBR01FckFCakJLd0FZd1NzQUdNRTR3Q0tBZWovbFFIby81UUI2UC9LQWVnQUJnSG9BSWtEendBckJGUUFpZ08wQUlJRHRBQ0tBN1FBaWdPMEFJb0U0d0NLQk9NQWlnVGpBSW9FdXdCZ0JMc0FZQVM3QUdBRVNnQ0tCRW9BaWdSS0FJb0VJQUJEQkNBQVF3UWdBRU1FSUFCREJDWUFLQVFtQUNnRUpnQW9CSHdBZEFSOEFIUUVmQUIwQkh3QWRBUjhBSFFFZkFCMEJoVUFNUVFyQUEwRUt3QU5CQ01BUndRakFFY0VJd0JIQlRnQUhBVHcvL0FHR1AvK0FwRUFCQVdVLy9vRk12OTRCV2IvL1FLWC81c0ZPQUFjQlBzQXFRU01BS2tFeWdCV0JiUUFxUUl0QUxjRkJBQ3BCdndBcVFXMEFLa0ZnQUIyQlF3QXFRVEdBREVFemdBUEJRUUFPUUl0LzlZRXpnQVBCSVVBWkFSUUFHTUVpQUNSQXBjQXd3UmRBSThFY3dDYUJKQUFXd1NJQUpvRDRBQWhBL2NBS1FLWC8rWUVYUUNQQkpBQVd3UmRBSThHbHdCNkJJd0FxUVJ6QUxFRXZ3QlFBaTBBdHdJdC85WUVhZ0ExQlNRQXNnVUVBS2tGQndCTkJUZ0FIQVQ3QUtrRWN3Q3hCSXdBcVFXMEFMRUcvQUNwQmJRQXFRV0FBSFlGdFFDeUJRd0FxUVUxQUhjRXhnQXhCUVFBT1FSYUFHMEVQUUJkQko0QW5BU1FBRnNFZlFDTUJEQUFYQVBKQUJZRDl3QXBCRDBBWFFOYkFKb0VJQUJmQWZFQWpRSDYvN3dCNmYrL0JGSUFuQVBKQUJZSEdRQTlCZ01BS3djWkFEMEdBd0FyQnhrQVBRWURBQ3NFemdBUEE4a0FGZ0ZsQUdjQ2p3Q0lCQjRBb0FJRC83UUJtUUF3QnZ3QXFRY0RBSXNGT0FBY0JGb0FiUVNNQUtrRnRBQ3hCRDBBWFFTZUFKd0ZpUUJhQlpvQVh3VUtBQllFQS8vN0NGa0FXd2xKQUhZRXZ3QlFCQkFBV0FVMUFIY0VNQUJjQk00QUR3UUNBQzRDTFFDM0IwTUFHd1lnQUJVQ0xRQzNCVGdBSEFSYUFHMEZPQUFjQkZvQWJRZDYvL0lHd1FCT0JJd0FxUVE5QUYwRmh3QmRCRGNBWWdRM0FHSUhRd0FiQmlBQUZRUy9BRkFFRUFCWUJiUUFzUVNlQUp3RnRBQ3hCSjRBbkFXQUFIWUVrQUJiQlhFQVp3U0xBRnNGY1FCbkJJc0FXd1ZrQUpNRVRRQmtCUWNBVFFQSkFCWUZCd0JOQThrQUZnVUhBRTBEeVFBV0JYb0FsZ1JaQUdjRzZ3Q3lCallBblFVRUFEa0Q5d0FwQklNQVh3V3BBQzhFb0FBc0JUZ0FIQVJhQUcwRk9BQWNCRm9BYlFVNEFCd0VXZ0J0QlRnQUhBUmEvOG9GT0FBY0JGb0FiUVU0QUJ3RVdnQnRCVGdBSEFSYUFHMEZPQUFjQkZvQWJRVTRBQndFV2dCdEJUZ0FIQVJhQUcwRk9BQWNCRm9BYlFVNEFCd0VXZ0J0Qkl3QXFRUTlBRjBFakFDcEJEMEFYUVNNQUtrRVBRQmRCSXdBcVFROUFGMEVqUC93QkQzL3VnU01BS2tFUFFCZEJJd0FxUVE5QUYwRWpBQ3BCRDBBWFFJdEFMY0IrZ0NiQWkwQW93SHhBSVVGZ0FCMkJKQUFXd1dBQUhZRWtBQmJCWUFBZGdTUUFGc0ZnQUJIQkpEL3hBV0FBSFlFa0FCYkJZQUFkZ1NRQUZzRmdBQjJCSkFBV3dWK0FHVUVrZ0JiQlg0QVpRU1NBRnNGZmdCbEJKSUFXd1YrQUdVRWtnQmJCWDRBWlFTU0FGc0ZNQUNNQkdrQWlBVXdBSXdFYVFDSUJaQUFqQVR6QUlnRmtBQ01CUE1BaUFXUUFJd0U4d0NJQlpBQWpBVHpBSWdGa0FDTUJQTUFpQVRPQUE4RHlRQVdCTTRBRHdQSkFCWUV6Z0FQQThrQUZnU2hBRjhFb1FCZkJTUUFzZ1JTQUp3RnRBQ3BCSjBBbkFUR0FERUQyQUFvQlFRQU9RUDNBQ2tGZWdDV0JGa0Fad1Y2QUpZRVdRQm5CSE1Bc1FOYkFKb0hRd0FiQmlBQUZRWXZBRDhFdmYvZUJHZ0FqQVVGLzlRRkJmL1VCSE1BQXdOYi8vd0ZPQUFMQkNmLzB3VzBBTEVFbmdDY0JiUUFxUVNkQUp3Ry9BQ3BCZThBblFXcEFDOEVvQUFzQk00QUR3UUNBQzRGQkFBNUEvY0FLUVJRQUdNRWJBQVNCajhBa0FSK0FGMEVmZ0JlQkg0QU5RUitBSm9Fa2dCa0JLWUFod1Z6QUhvRWZRQmdCYlFBcVFScUFJd0ZPQUFjQkZvQU9RU01BRjhFUFFBcEFpMy9DZ0g2L3ZBRmdBQjJCSkFBTXdUdEFGVUN0ZitMQlRBQWpBUnBBQ3NFcHY4NkJQc0FxUVI5QUl3RlB3Q3BCSU1BWHdVL0FLa0Vnd0JmQmJRQXFRUm9BSXdGQkFDcEJBNEFqUVVFQUtrRURnQ05CRTRBcVFIeEFJWUcvQUNwQndNQWl3VzBBS2tFYWdDTUJRd0FxUVI5QUl3RTdRQ29BclVBZ2dTL0FGQUVJQUJmQk1ZQU1RS2RBQWtGRndBY0ErQUFJUVVYQUJ3RDRBQWhCeGtBUFFZREFDc0V5Z0JXQS9jQVdBWEcvbmdFaFFBVEJDTC9ud1VmLzd3Q0pQL0FCTVgvM3dSbi8xY0UvUC80QklVQUV3UlFBSW9ENWdDS0JDTUFSd1RqQUlvQjZBQ1hCRlFBaWdZQ0FJb0V1d0JnQkZ3QWlnUW1BQ2dFS3dBTkJGUUFKZ0hvLzdRRUt3QU5BK1lBaWdPdkFJb0VJQUJEQWVnQWx3SG8vN1FEendBckJGUUFpZ1FmQUNJRWhRQVRCRkFBaWdPdkFJb0Q1Z0NLQk93QWlnWUNBSW9FNHdDS0JMc0FZQVRPQUlvRVhBQ0tCSHdBWUFRbUFDZ0VWQUFtQkQ4QVJ3VGpBSW9FZkFCZ0JDc0FEUVhEQUFJRTdBQ0tCQjhBSWdWbkFHQUZPQUFjQkZvQWJRU01BS2tFUFFCZEFBQUFBUUFBQk9RSkNnUUFBQUlDQWdNR0JRY0dBZ01EQkFVQ0FnSUVCUVVGQlFVRkJRVUZCUUlDQlFVRkJBZ0dCZ1lHQlFVR0JnSUZCZ1VJQmdZR0JnWUZCUVlHQ0FZRkJRSUVBZ1FFQXdVRkJRVUZBd1VGQWdJRkFnZ0ZCUVVGQXdVREJRUUhCQVFFQXdJREJnSUZCUVlGQWdZRUJ3UUVCUWNFQXdVREF3TUZCQUlDQXdRRUJ3Y0hCQWdGQmdVRkNBVUZCUVVHQWdVRkFnWUZDUWdDQmdNR0JRWUdBZ1VFQkFRRUFnTUNCQU1EQUFBQUFBQUNBZ1VDQlFZR0JnVUdCUVlHQmdVRkJRVUZCUVVGQXdVRUJRVUZCUVVGQmdZSEJRVUhCd1lLQ2djR0JnY0lCUVlHQmdjSEJnZ0pCd2dHQmdnR0JRVUVCUWNGQlFVRkJ3VUZCQWNGQlFjSEJnY0ZCUWNGQlFVSUNBVUZDQWNGQ0FjRkJRZ0hDQWNLQ1FVRUJnVUdCUVlGQ0FjSUJ3WUZCZ0FBQUFBQUFBVUdCUVVFQlFVR0JRY0dDUVlKQ0FjRkNBWUdCUVlIQlFZRkJnVUdCUVVGQkFZSENBY0dCUVVKQndrSEJnVUdCZ1lFQlFrRkNRTUNBZ1VDQWdFQUFnSUdCd1FDQWdJQ0F3TURCUVVEQkFZQkNRTURCQU1FQlFjSENnZ0hCUWNGQlFZR0J3UUpCZ1lIQ0FnSEJRWUZCUVVKQWdVRkJRVUZBd01DQmdVRkNBZ0dCd0FKQ1FVRkFnSUVCQVFFQlFRRUJBSUZCUVVGQkFRRkJnSUVCUVFIQmdVRkJRVUZCUVVGQndVRkJRTURBd01EQXdNREF3TUVBd1VGQmdZRkJnVUZCUVVFQlFVRkJBVUVCZ1lHQmdVSUNBWUZCUVlIQlFZRkJRVUdCUWNJQmdjRkJRY0ZCUWNGQmdZR0JRVUhCUVVHQlFVRkJRUUpCUVVGQlFVRUJRVUZCUVlHQmdjSEJBVUVCUVVEQXdNREF3TURCUVVIQlFZQ0FnSUNBZ0lGQWdJR0JnVUZBd1lHQmdZR0JnWUdCUVVGQlFJQ0FnSUdCZ1lHQmdZR0JnWUdCUVVGQlFVRkJRVUZCUVVGQlFJQ0FnSUZCUVVGQlFVRkJRVUZCQVFHQlFZRkJnVUdCUVlGQmdVR0JRWUdCUVVGQlFVRkJRVUZCUVlGQmdVR0JRWUZCZ1VDQWdJQ0FnSUNBZ0lIQkFVQ0JnVUZBZ1VDQlFNRkF3WUZCZ1VHQlFVR0JRWUZCZ1VHQXdZREJnTUZCUVVGQlFVRkJRVUZCUU1GQXdVREJnVUdCUVlGQmdVR0JRWUZDQWNGQkFVRkJBVUVCUVFJQ0FZRkJRVUZCUVVGQlFVRkJRVUVCQVFFQWdJQ0FnWUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUVCQVFFQkFVRkJRVUdBZ0lDQWdJRUJRUUVCQVFHQmdZRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJ3VUZCUVVGQmdZSEF3WUdCZ01HQmdVRkJnSUdDQVlHQmdVRkJnSUZCUVVGQXdVRkJRVUVCQU1GQlFVSEJRVUZBZ0lGQmdZR0JnWUZCUVlJQmdZR0JnWUZCZ1VGQlFVRkJRUUVCUVFGQWdJQ0JRUUlCd2dIQ0FjRkJBSURCUUlDQ0FnR0JRVUdCUVVHQmdZRkNRb0ZCUVlGQlFVQ0NBY0NCZ1VHQlFnSUJRVUdCUVVJQndVRkJnVUdCUVlGQmdVR0JRWUZCZ1FHQkFZRUJnVUlCd1lFQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUUlDQWdJR0JRWUZCZ1VHQlFZRkJnVUdCUVlGQmdVR0JRWUZCZ1VHQlFZRkJnWUdCZ1lHQmdZR0JnVUVCUVFGQkFVRkJnVUdCUVVFQmdRR0JRWUZCUVFJQndjRkJRWUdCUVFHQlFZRkJnVUlCd1lGQlFVR0JBVUZCd1VGQlFVRkJRWUZCZ1VHQlFVRkFnSUdCUVlEQmdVRkJnVUdCUVlGQmdVR0JRWUZCUUlJQ0FZRkJnVUdBd1VGQlFNR0JBWUVDQWNGQkFjRkJRWUNCUVVHQlFVRUJRWUNCUWNGQlFVRkJRSUZCQVFGQWdJRUJRVUZCUVFFQmdjR0JRVUZCUVVGQlFZRkJRWUdCUVlHQlFVRkFBQUFBd0FBQUFNQUFBQWNBQU1BQVFBQUFCd0FBd0FLQUFBR2lBQUVCbXdBQUFEcUFJQUFCZ0JxQUFBQUFnQU5BSDRBb0FDc0FLMEF2d0RHQU04QTVnRHZBUDRCRHdFUkFTVUJKd0V3QVZNQlh3Rm5BWDRCZndHUEFaSUJvUUd3QWZBQi93SWJBamNDV1FLOEFzY0N5UUxkQXZNREFRTURBd2tERHdNakE0b0RqQU9TQTZFRHNBTzVBOGtEemdQU0E5WUVKUVF2QkVVRVR3UmlCRzhFZVFTR0JNNEUxd1RoQlBVRkFRVVFCUk1lQVI0L0hvVWU4Ujd6SHZrZlRTQUxJQkVnRlNBZUlDSWdKeUF3SURNZ09pQThJRVFnZENCL0lLUWdxaUNzSUxFZ3VpQzlJUVVoRXlFV0lTSWhKaUV1SVY0aUFpSUdJZzhpRWlJYUloNGlLeUpJSW1BaVpTWEs3Z0wydy9zRS92Ly8vZi8vQUFBQUFBQUNBQTBBSUFDZ0FLRUFyUUN1QU1BQXh3RFFBT2NBOEFEL0FSQUJFZ0VtQVNnQk1RRlVBV0FCYUFGL0FZOEJrZ0dnQWE4QjhBSDZBaGdDTndKWkFyd0N4Z0xKQXRnQzh3TUFBd01EQ1FNUEF5TURoQU9NQTQ0RGt3T2pBN0VEdWdQS0E5RUQxZ1FBQkNZRU1BUkdCRkFFWXdSd0JIb0VpQVRQQk5nRTRnVDJCUUlGRVI0QUhqNGVnQjZnSHZJZTlCOU5JQUFnRUNBVElCY2dJQ0FsSURBZ01pQTVJRHdnUkNCMElIOGdveUNtSUtzZ3NTQzVJTHdoQlNFVElSWWhJaUVtSVM0aFd5SUNJZ1lpRHlJUklob2lIaUlySWtnaVlDSmtKY3J1QWZiRCt3SCsvLy84Ly84QUFRQUEvL2IvNUFHbC84SUJtZi9CQUFBQmpBQUFBWWNBQUFHREFBQUJnUUFBQVg4QUFBRjNBQUFCZWY4Vi93Yi9CUDczL3VvQnV3QUFBQUQrWlA1REFQRDkxLzNXL2NqOXMvMm4vYWI5b2YyYy9Za0FBUC9MLzhvQUFBQUEvUWtBQVArci9QMzgrZ0FBL0xrQUFQeXhBQUQ4cGdBQS9LQUFBUDcxQUFEKzhnQUEvRWtBQU9XdjVXL2xJT1ZQNUxUbFRlVmQ0VnZoVndBQTRWVGhVK0ZSNFVuamR1RkI0MjdoT09FSjRQOEFBT0RhQUFEZzFlRE80TTNnaHVCNTRIZmdiTitUNEdIZ05kK1MzcXZmaHQrRjMzN2ZlOTl2MzFQZlBOODUyOVVUbndyZkJxTUNxd0d2QUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU5vQUFBRGtBQUFCRGdBQUFTZ0FBQUVvQUFBQktBQUFBV29BQUFBQUFBQUFBQUFBQUFBQUFBRnFBWFFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJZZ0FBQUFBQmFnR0dBQUFCbmdBQUFBQUFBQUcyQUFBQi9nQUFBaVlBQUFKSUFBQUNXQUFBQXVJQUFBTHlBQUFEQmdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUM2QUFBQXVnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ1RBSk5BazRDVHdKUUFsRUFnUUpJQWx3Q1hRSmVBbDhDWUFKaEFJSUFnd0ppQW1NQ1pBSmxBbVlBaEFDRkFtY0NhQUpwQW1vQ2F3SnNBSVlBaHdKM0FuZ0NlUUo2QW5zQ2ZBQ0lBSWtDZlFKK0FuOENnQUtCQUlvQ1J3UkhBSXNDU1FDTUFyQUNzUUt5QXJNQ3RBSzFBSTBDdGdLM0FyZ0N1UUs2QXJzQ3ZBSzlBSTRBandLK0FyOEN3QUxCQXNJQ3d3TEVBSkFBa1FMRkFzWUN4d0xJQXNrQ3lnQ1NBSk1DMlFMYUF0MEMzZ0xmQXVBQ1NnSkxBbElDYlFMNEF2a0MrZ0w3QXRjQzJBTGJBdHdBclFDdUExTUFyd05VQTFVRFZnQ3dBTEVEWFFOZUExOEFzZ05nQTJFQXN3TmlBMk1BdEFOa0FMVURaUUMyQTJZRFp3QzNBMmdBdUFDNUEya0RhZ05yQTJ3RGJRTnVBMjhEY0FEREEzSURjd0RFQTNFQXhRREdBTWNBeUFESkFNb0F5d04wQU13QXpRT3hBM29BMFFON0FOSURmQU45QTM0RGZ3RFRBTlFBMVFPQkE3SURnZ0RXQTRNQTF3T0VBNFVBMkFPR0FOa0EyZ0RiQTRjRGdBRGNBNGdEaVFPS0E0c0RqQU9OQTQ0QTNRRGVBNDhEa0FEcEFPb0E2d0RzQTVFQTdRRHVBTzhEa2dEd0FQRUE4Z0R6QTVNQTlBT1VBNVVBOVFPV0FQWURsd096QTVnQkFRT1pBUUlEbWdPYkE1d0RuUUVEQVFRQkJRT2VBN1FEbndFR0FRY0JDQVJkQTdVRHRnRVdBUmNCR0FFWkE3Y0R1QU82QTdrQkp3RW9CR0lFWXdSY0FTa0JLZ0VyQVN3QkxRUmVCRjhCTGdFdkJGY0VXQU83QTd3RVNRUktBVEFCTVFSZ0JHRUJNZ0V6QkVzRVRBRTBBVFVCTmdFM0FUZ0JPUU85QTc0RVRRUk9BNzhEd0FScUJHc0VUd1JRQVRvQk93UlJCRklCUEFFOUFUNEVXd0UvQVVBRVdRUmFBOEVEd2dQREFVRUJRZ1JvQkdrQlF3RkVCR1FFWlFSVEJGUUVaZ1JuQVVVRHpnUE5BODhEMEFQUkE5SUQwd0ZHQVVjRVZRUldBK2dENlFGSUFVa0Q2Z1ByQkd3RWJRRktBK3dFYmdQdEErNEJhUUZxQkhBRWJ3Ri9CRWdCaFFBTUFBQUFBQXhBQUFBQUFBQUFBUVFBQUFBQUFBQUFBQUFBQUFFQUFBQUNBQUFBQWdBQUFBSUFBQUFOQUFBQURRQUFBQU1BQUFBZ0FBQUFmZ0FBQUFRQUFBQ2dBQUFBb0FBQUFrVUFBQUNoQUFBQXJBQUFBR01BQUFDdEFBQUFyUUFBQWtZQUFBQ3VBQUFBdndBQUFHOEFBQURBQUFBQXhRQUFBa3dBQUFER0FBQUF4Z0FBQUlFQUFBREhBQUFBendBQUFsTUFBQURRQUFBQTBBQUFBa2dBQUFEUkFBQUExZ0FBQWx3QUFBRFhBQUFBMkFBQUFJSUFBQURaQUFBQTNRQUFBbUlBQUFEZUFBQUEzd0FBQUlRQUFBRGdBQUFBNVFBQUFtY0FBQURtQUFBQTVnQUFBSVlBQUFEbkFBQUE3d0FBQW00QUFBRHdBQUFBOEFBQUFJY0FBQUR4QUFBQTlnQUFBbmNBQUFEM0FBQUErQUFBQUlnQUFBRDVBQUFBL1FBQUFuMEFBQUQrQUFBQS9nQUFBSW9BQUFEL0FBQUJEd0FBQW9JQUFBRVFBQUFCRUFBQUFrY0FBQUVSQUFBQkVRQUFCRWNBQUFFU0FBQUJKUUFBQXBNQUFBRW1BQUFCSmdBQUFJc0FBQUVuQUFBQkp3QUFBa2tBQUFFb0FBQUJNQUFBQXFjQUFBRXhBQUFCTVFBQUFJd0FBQUV5QUFBQk53QUFBckFBQUFFNEFBQUJPQUFBQUkwQUFBRTVBQUFCUUFBQUFyWUFBQUZCQUFBQlFnQUFBSTRBQUFGREFBQUJTUUFBQXI0QUFBRktBQUFCU3dBQUFKQUFBQUZNQUFBQlVRQUFBc1VBQUFGU0FBQUJVd0FBQUpJQUFBRlVBQUFCWHdBQUFzc0FBQUZnQUFBQllRQUFBdGtBQUFGaUFBQUJaUUFBQXQwQUFBRm1BQUFCWndBQUFrb0FBQUZvQUFBQmZnQUFBdUVBQUFGL0FBQUJmd0FBQUpRQUFBR1BBQUFCandBQUFKVUFBQUdTQUFBQmtnQUFBSllBQUFHZ0FBQUJvUUFBQUpjQUFBR3ZBQUFCc0FBQUFKa0FBQUh3QUFBQjhBQUFBNnNBQUFINkFBQUIrZ0FBQWxJQUFBSDdBQUFCK3dBQUFtMEFBQUg4QUFBQi93QUFBdmdBQUFJWUFBQUNHUUFBQXRjQUFBSWFBQUFDR3dBQUF0c0FBQUkzQUFBQ053QUFBSnNBQUFKWkFBQUNXUUFBQUp3QUFBSzhBQUFDdkFBQUE2d0FBQUxHQUFBQ3h3QUFBSjBBQUFMSkFBQUN5UUFBQUo4QUFBTFlBQUFDM1FBQUFLQUFBQUx6QUFBQzh3QUFBS1lBQUFNQUFBQURBUUFBQUtjQUFBTURBQUFEQXdBQUFLa0FBQU1KQUFBRENRQUFBS29BQUFNUEFBQUREd0FBQUtzQUFBTWpBQUFESXdBQUFLd0FBQU9FQUFBRGhRQUFBSzBBQUFPR0FBQURoZ0FBQTFNQUFBT0hBQUFEaHdBQUFLOEFBQU9JQUFBRGlnQUFBMVFBQUFPTUFBQURqQUFBQTFjQUFBT09BQUFEa2dBQUExZ0FBQU9UQUFBRGxBQUFBTEFBQUFPVkFBQURsd0FBQTEwQUFBT1lBQUFEbUFBQUFMSUFBQU9aQUFBRG1nQUFBMkFBQUFPYkFBQURtd0FBQUxNQUFBT2NBQUFEblFBQUEySUFBQU9lQUFBRG5nQUFBTFFBQUFPZkFBQURud0FBQTJRQUFBT2dBQUFEb0FBQUFMVUFBQU9oQUFBRG9RQUFBMlVBQUFPakFBQURvd0FBQUxZQUFBT2tBQUFEcFFBQUEyWUFBQU9tQUFBRHBnQUFBTGNBQUFPbkFBQURwd0FBQTJnQUFBT29BQUFEcVFBQUFMZ0FBQU9xQUFBRHNBQUFBMmtBQUFPeEFBQUR1UUFBQUxvQUFBTzZBQUFEdWdBQUEzQUFBQU83QUFBRHV3QUFBTU1BQUFPOEFBQUR2UUFBQTNJQUFBTytBQUFEdmdBQUFNUUFBQU8vQUFBRHZ3QUFBM0VBQUFQQUFBQUR4Z0FBQU1VQUFBUEhBQUFEeHdBQUEzUUFBQVBJQUFBRHlRQUFBTXdBQUFQS0FBQUR6Z0FBQTNVQUFBUFJBQUFEMGdBQUFNNEFBQVBXQUFBRDFnQUFBTkFBQUFRQUFBQUVBQUFBQTdFQUFBUUJBQUFFQVFBQUEzb0FBQVFDQUFBRUFnQUFBTkVBQUFRREFBQUVBd0FBQTNzQUFBUUVBQUFFQkFBQUFOSUFBQVFGQUFBRUNBQUFBM3dBQUFRSkFBQUVDd0FBQU5NQUFBUU1BQUFFREFBQUE0RUFBQVFOQUFBRURRQUFBN0lBQUFRT0FBQUVEZ0FBQTRJQUFBUVBBQUFFRHdBQUFOWUFBQVFRQUFBRUVBQUFBNE1BQUFRUkFBQUVFUUFBQU5jQUFBUVNBQUFFRXdBQUE0UUFBQVFVQUFBRUZBQUFBTmdBQUFRVkFBQUVGUUFBQTRZQUFBUVdBQUFFR0FBQUFOa0FBQVFaQUFBRUdRQUFBNGNBQUFRYUFBQUVHZ0FBQTRBQUFBUWJBQUFFR3dBQUFOd0FBQVFjQUFBRUlnQUFBNGdBQUFRakFBQUVKQUFBQU4wQUFBUWxBQUFFSlFBQUE0OEFBQVFtQUFBRUx3QUFBTjhBQUFRd0FBQUVNQUFBQTVBQUFBUXhBQUFFTkFBQUFPa0FBQVExQUFBRU5RQUFBNUVBQUFRMkFBQUVPQUFBQU8wQUFBUTVBQUFFT1FBQUE1SUFBQVE2QUFBRVBRQUFBUEFBQUFRK0FBQUVQZ0FBQTVNQUFBUS9BQUFFUHdBQUFQUUFBQVJBQUFBRVFRQUFBNVFBQUFSQ0FBQUVRZ0FBQVBVQUFBUkRBQUFFUXdBQUE1WUFBQVJFQUFBRVJBQUFBUFlBQUFSRkFBQUVSUUFBQTVjQUFBUkdBQUFFVHdBQUFQY0FBQVJRQUFBRVVBQUFBN01BQUFSUkFBQUVVUUFBQTVnQUFBUlNBQUFFVWdBQUFRRUFBQVJUQUFBRVV3QUFBNWtBQUFSVUFBQUVWQUFBQVFJQUFBUlZBQUFFV0FBQUE1b0FBQVJaQUFBRVd3QUFBUU1BQUFSY0FBQUVYQUFBQTU0QUFBUmRBQUFFWFFBQUE3UUFBQVJlQUFBRVhnQUFBNThBQUFSZkFBQUVZUUFBQVFZQUFBUmlBQUFFWWdBQUJGMEFBQVJqQUFBRWJ3QUFBUWtBQUFSd0FBQUVjUUFBQTdVQUFBUnlBQUFFZFFBQUFSWUFBQVIyQUFBRWR3QUFBN2NBQUFSNEFBQUVlQUFBQTdvQUFBUjVBQUFFZVFBQUE3a0FBQVI2QUFBRWhnQUFBUm9BQUFTSUFBQUVpUUFBQVNjQUFBU0tBQUFFaXdBQUJHSUFBQVNNQUFBRWpBQUFCRndBQUFTTkFBQUVrUUFBQVNrQUFBU1NBQUFFa3dBQUJGNEFBQVNVQUFBRWxRQUFBUzRBQUFTV0FBQUVsd0FBQkZjQUFBU1lBQUFFbVFBQUE3c0FBQVNhQUFBRW13QUFCRWtBQUFTY0FBQUVuUUFBQVRBQUFBU2VBQUFFbndBQUJHQUFBQVNnQUFBRW9RQUFBVElBQUFTaUFBQUVvd0FBQkVzQUFBU2tBQUFFcVFBQUFUUUFBQVNxQUFBRXF3QUFBNzBBQUFTc0FBQUVyUUFBQkUwQUFBU3VBQUFFcndBQUE3OEFBQVN3QUFBRXNRQUFCR29BQUFTeUFBQUVzd0FBQkU4QUFBUzBBQUFFdFFBQUFUb0FBQVMyQUFBRXR3QUFCRkVBQUFTNEFBQUV1Z0FBQVR3QUFBUzdBQUFFdXdBQUJGc0FBQVM4QUFBRXZRQUFBVDhBQUFTK0FBQUV2d0FBQkZrQUFBVEFBQUFFd2dBQUE4RUFBQVREQUFBRXhBQUFBVUVBQUFURkFBQUV4Z0FBQkdnQUFBVEhBQUFFeUFBQUFVTUFBQVRKQUFBRXlnQUFCR1FBQUFUTEFBQUV6QUFBQkZNQUFBVE5BQUFFemdBQUJHWUFBQVRQQUFBRTF3QUFBOFFBQUFUWUFBQUUyQUFBQVVVQUFBVFpBQUFFMlFBQUE4NEFBQVRhQUFBRTJnQUFBODBBQUFUYkFBQUUzd0FBQTg4QUFBVGdBQUFFNFFBQUFVWUFBQVRpQUFBRTlRQUFBOVFBQUFUMkFBQUU5d0FBQkZVQUFBVDRBQUFFK1FBQUErZ0FBQVQ2QUFBRSt3QUFBVWdBQUFUOEFBQUUvUUFBQStvQUFBVCtBQUFFL3dBQUJHd0FBQVVBQUFBRkFBQUFBVW9BQUFVQkFBQUZBUUFBQSt3QUFBVUNBQUFGRUFBQUFVc0FBQVVSQUFBRkVRQUFCRzRBQUFVU0FBQUZFd0FBQSswQUFCNEFBQUFlQVFBQUE2OEFBQjQrQUFBZVB3QUFBNjBBQUI2QUFBQWVoUUFBQTZBQUFCNmdBQUFlOFFBQUErOEFBQjd5QUFBZTh3QUFBNllBQUI3MEFBQWUrUUFBQkVFQUFCOU5BQUFmVFFBQUJLb0FBQ0FBQUFBZ0N3QUFBVnNBQUNBUUFBQWdFUUFBQVdjQUFDQVRBQUFnRkFBQUFXa0FBQ0FWQUFBZ0ZRQUFCSEFBQUNBWEFBQWdIZ0FBQVdzQUFDQWdBQUFnSWdBQUFYTUFBQ0FsQUFBZ0p3QUFBWFlBQUNBd0FBQWdNQUFBQVhrQUFDQXlBQUFnTXdBQUE2Z0FBQ0E1QUFBZ09nQUFBWG9BQUNBOEFBQWdQQUFBQTZvQUFDQkVBQUFnUkFBQUFYd0FBQ0IwQUFBZ2RBQUFBWDBBQUNCL0FBQWdmd0FBQVg0QUFDQ2pBQUFnb3dBQUJHOEFBQ0NrQUFBZ3BBQUFBWDhBQUNDbUFBQWdxZ0FBQVlBQUFDQ3JBQUFncXdBQUJFZ0FBQ0NzQUFBZ3JBQUFBWVVBQUNDeEFBQWdzUUFBQVlZQUFDQzVBQUFndWdBQUFZY0FBQ0M4QUFBZ3ZRQUFBWWtBQUNFRkFBQWhCUUFBQVlzQUFDRVRBQUFoRXdBQUFZd0FBQ0VXQUFBaEZnQUFBWTBBQUNFaUFBQWhJZ0FBQVk0QUFDRW1BQUFoSmdBQUFMa0FBQ0V1QUFBaExnQUFBWThBQUNGYkFBQWhYZ0FBQVpBQUFDSUNBQUFpQWdBQUFaUUFBQ0lHQUFBaUJnQUFBTEVBQUNJUEFBQWlEd0FBQVpVQUFDSVJBQUFpRWdBQUFaWUFBQ0lhQUFBaUdnQUFBWmdBQUNJZUFBQWlIZ0FBQVprQUFDSXJBQUFpS3dBQUFab0FBQ0pJQUFBaVNBQUFBWnNBQUNKZ0FBQWlZQUFBQVp3QUFDSmtBQUFpWlFBQUFaMEFBQ1hLQUFBbHlnQUFBWjhBQU80QkFBRHVBZ0FBQWFBQUFQYkRBQUQyd3dBQUFhSUFBUHNCQUFEN0JBQUFBYVFBQVA3L0FBRCsvd0FBQWFvQUFQLzhBQUQvL1FBQUFhdXdBQ3hMc0FsUVdMRUJBWTVadUFIL2hiQ0VIYkVKQTE5ZUxiQUJMQ0FnUldsRXNBRmdMYkFDTExBQktpRXRzQU1zSUVhd0F5VkdVbGdqV1NDS0lJcEpaSW9nUmlCb1lXU3dCQ1ZHSUdoaFpGSllJMldLV1M4Z3NBQlRXR2tnc0FCVVdDR3dRRmtiYVNDd0FGUllJYkJBWlZsWk9pMndCQ3dnUnJBRUpVWlNXQ09LV1NCR0lHcGhaTEFFSlVZZ2FtRmtVbGdqaWxrdi9TMndCU3hMSUxBREpsQllVVml3Z0VRYnNFQkVXUnNoSVNCRnNNQlFXTERBUkJzaFdWa3RzQVlzSUNCRmFVU3dBV0FnSUVWOWFSaEVzQUZnTGJBSExMQUdLaTJ3Q0N4TElMQURKbE5Zc0VBYnNBQlppb29nc0FNbVUxZ2pJYkNBaW9vYmlpTlpJTEFESmxOWUl5R3d3SXFLRzRvaldTQ3dBeVpUV0NNaHVBRUFpb29iaWlOWklMQURKbE5ZSXlHNEFVQ0tpaHVLSTFrZ3NBTW1VMWl3QXlWRnVBR0FVRmdqSWJnQmdDTWhHN0FESlVVaklTTWhXUnNoV1VRdHNBa3NTMU5ZUlVRYklTRlpMYkFLTExBa1JTMndDeXl3SlVVdHNBd3NzU2NCaUNDS1UxaTVRQUFFQUdPNENBQ0lWRmk1QUNRRDZIQlpHN0FqVTFpd0lJaTRFQUJVV0xrQUpBUG9jRmxaV1Myd0RTeXdRSWk0SUFCYVdMRWxBRVFidVFBbEEraEVXUzJ3REN1d0FDc0FzZ0VPQWlzQnNnOEJBaXNCdHc4Nk1DVWJFQUFJS3dDM0FVZzdMaUVVQUFncnR3SllTRGdvRkFBSUs3Y0RVa00wSlJZQUNDdTNCRjVOUENzWkFBZ3J0d1UyTENJWkR3QUlLN2NHY1YxR01oc0FDQ3UzQjVGM1hEb2pBQWdydHdoK1oxQTVHZ0FJSzdjSlZFVTJKaGNBQ0N1M0NuWmdTellkQUFncnR3dURaRTQ2SXdBSUs3Y00yYktLWXp3QUNDdTNEUlFSRFFrR0FBZ3J0dzQ4TWljY0VRQUlLd0N5RUFvSEs3QUFJRVY5YVJoRXNqQVNBWE95c0JRQmM3SlFGQUYwc29BVUFYU3ljQlFCZGJJUEhBRnpzbThjQVhVQUFDb0FuUUNBQUlvQWVBRFVBR1FBVGdCYUFJY0FZQUJXQURRQ1BBQzhBTVFBQUFBVS9tQUFGQUtiQUNBRElRQUxCRG9BRkFTTkFCQUZzQUFVQmhnQUZRR21BQkVHd0FBT0FBQUFBQUFBQUdFQVlRQmhBR0VBWVFDVEFMZ0JPQUdxQWpvQ3pRTGtBdzRET0FOckE1QURyd1BGQStZRC9RUktCSGdFeHdVOEJYOEYzd1krQm1zRzN3ZEdCMXNIY0FlUEI3WUgxUWd6Q05ZSkZRbDBDY2dLRFFwTkNvTUs2d3N0QzBnTGV3dlFDL1FNUWd4K0ROTU5IZzJERGQ4T1NnNTBEcllPNWc4N0Q1QVB3QS80RUJ3UU14QllFSDhRbWhDNkVUSVJrQkhqRWtFU3FCTDZFM1FUdVJQeEZEMFVsQlN2RlJvVlpSV3pGaGNXZUJhMUZ4OFhjUmU0RitnWU5oaDlHTUlZK2hrN0dWSVpraG5aR2d3YWFCcmFHejBibkJ1N0hHQWNqeDAxSGFNZHJ4M01Ib1FlbWg3V0h4a2ZhUi9rSUFRZ1RTQjVJSmdnMHlFRklVOGhXeUYxSVk4aHFTSUtJbTBpcXlNbUkzb2o2aVNvSlJjbGFDWFpKamdtbGlheEp3RW5TeWVJSjlrb05DaTNLVkVwZ2lubktrNHF1Q3NZSzJzcnhDdnlMRlVzZ3l5bkxMVXM0Q3ovTFRndGJDMndMZU11SVM0K0xsc3VaQzZYTHNndTVDOEFMME12VHk5MUw2SXdIVEJLTUl3d3VqRDJNV2N4d1RJcE1wNHpFek5HTTdjMEl6Ui9OTW8xU2pWM05kQTJQamFQTnVrM1JEZWJOOTQ0SHppSU9PUTVTem5DT2hVNml6cm1PMTg3MVR4SFBKczgxejB1UFlZOTlENXBQcTQrK0Q5QVA3RS81MEFzUUdsQXNrRUtRVzFCdVVJMlFzZERJa09TUkFsRUwwU0ZSUGhGY1VXcVJnRkdTRWFRUnV4SEdrZEdSOUZJQjBoSFNJUkl5RWtmU1lGSnkwbzlTc05MSGt1VlRCVk1pa3ozVFY1Tm1rMzhUbHhPeEU5R1QrRlFMVkI4VU9kUlZsSExVanBTeFZOUFU5OVVlbFQ4VlhSVnVGWCtWbXBXMFZlS1dFUll3MWxDV1pOWjRGb1ZXakZhYUZwK1dwUmJaVnZZWEVCY20xME9YVDVkYUYyOVhoSmVhVjdMWHg5ZmZsL0lZREZnajJEdFlZeGlJMkp6WXJaakJtTlVZNVprQm1SM1pNOWxNMldzWmlObWkyYnJaMFJuVTJkblo3Um9GMmllYVE1cGUybmVhajVxckdzVmE1NXNJR3g4Yk01dElHMXhiZVp1Rlc0VmJoVnVGVzRWYmhWdUZXNFZiaFZ1Rlc0VmJoVnVGVzRkYmlWdUwyNDVibEJ1ZEc2WWJycHUxVzdoYnUxdkpXOWpiOFJ2NTIvemNBTndGM0RvY1FSeElYRTBjVWh4ajNJWGNyUnpRM05QZEE5MGNuVHVkWXQxN1habWRyOTNLWGZaZUQ5NDAza3hlWk41cEhtMWVjWjUxM3BJZW01NnBuckJldlY3aDN2SWZGTjhrM3l4Zk05OUNIMFZmVDk5WW4xdWZkWitLSDYwZnlKL2xJQlhnRmVDQm9KeWdwK0M2SU1UZ3ltRG1ZUDVoRWVFdElVTGhWT0ZtNFhxaGdTR1E0YXBodjJIUkllSGg3NklIWWhlaUhtSXI0anlpUmFKWjRtZ2lmT0tQWXFiaXZPTFdJdUNpNytMNzR4SGpKQ013SXo0alVHTmJJMjdqaXFPYkk3SWp5R1BUby9La0NlUVBaQ2lrVXVScnBJUmttR1NwcExua3ltVG5KUUFsRzZVbUpUT2xUU1ZacFd5bGVTV0k1YUpsdUNYUVplZm1BK1lnNWo0bVVxWmlabmdtamVhcTVza20yQ2JzSnY0bkQ2Y2VaeTZuUG1kUTUyYm5hZWQ5SjVqbnVDZk41OTVuLzZnWDZEQW9SMmhzS0hCb2h5aWFLSzJvdmlqYUtQTHBDK2tuNlV4cGJXbVM2YTlweDJuYjZmUHFFbW9VYWkycVJlcGVhbndxa3VxdTZzSHEyYXJ6cXY0ckV1c2Q2ekhyUXV0SDYwenJVV3RXYTFycllLdGxxM3NyaEt1azY3MXIwT3ZTNjlUcjF1dlpxOXVyM3F2M2EvZHIrV3dTN0N4c1JDeFVyRzJzYzJ4NUxIN3NoS3lLN0pFc2xDeVhMSnpzb3F5b2JLNnN0R3k2TEwvc3hpekw3TkdzMTJ6ZExPTHM2U3p1N1BTcyttMEFyUVp0REMwUjdSZHRITzBqTFNsdExHMHZiVFV0T3UxQWJVYXRUQzFSclZkdFhhMWpMV2p0YnExMExYbXRmKzJGcll0dGtPMlhMWnp0b3Uyb3JhNHRzKzI1cmRKdDkrMzlyZ051Q1M0T3JoUnVHaTRmN2lWdUt5NDNiajB1UXE1SWJrNHVVKzVacm5PdWxLNmFicC91cGE2ckxyRHV0cTY4YnNJdXhTN0s3dEN1MVM3YTd1Q3U1bTdzTHZIdTk2NzZidjB2QXU4Rjd3anZEcThVYnhkdkdtOGdMeVh2S084cjd6RXZQbTlCYjBSdlNpOVA3MUx2VmU5YnIyRXZaUzlxNzNCdmRpOTc3NEl2aUcrT0w1UHZsdStaNzUrdnBTK3E3N0N2dG0rNzc3N3Z3ZS9FNzhmdnphL1RMOVl2MlMvY0w5OHY1Ty9uNysydjh5LzQ3LzV3QkRBSjhCQXdGbkFjc0NMd09qQlRzRmx3WHpCazhHcHdjTEIyY0h3d2dmQ0hzSTF3a3ZDWXNKNXdwRENwOExLd3ZMREJjTWN3elBEU2NOZnczakRrY09kdzZuRHdNUFh3KzNFQmNRYnhESEVTTVJoeEhqRWo4U214TDNFMU1UdHhRVEZHOFV4eFVyRlljVjN4WTdGOGNZSXhoN0dOY1pNeG1MR2VNYU94cVhIRHNja3h6ckhVY2RveDNUSGk4ZWl4N25IME1mYngvSElDTWdVeUNySU5zaEx5RmZJYnNoNnlKSElxTWkveU5qSTc4ajd5UkhKS01rK3lVckpZTWxzeVlMSmpzbWt5YnJKMGNucXlnUEtYOHAyeW96S3BNcTd5dExLNk1yenl2L0xDOHNYeXlQTEw4czd5MWZMWDh0bnkyL0xkOHQveTRmTGo4dVh5NS9McDh1dnk3Zkx2OHZIeStETCtjd1F6Q2ZNUHN4VXpHL01kOHgveklmTWo4eVh6Sy9NeDh6ZXpQWE5ETTBselR6TnA4MnZ6Y2pOME0zWXplL09CczRPemhiT0hzNG16ajNPUmM1TnpsWE9YYzVsem0zT2RjNTl6b1hPamM2a3pxek90TThIencvUEY4OHd6MGZQVDg5WHozRFBlTStQejZYUHZNL1R6K3JRQWRBYTBEUFFTdEJoMEduUWNkQjkwSlRRbk5DejBNclExdERpMFBuUkVORW4wVDdSUnRGTzBXZlJnTkdNMFpqUnBOR3cwYnpSeU5IUTBkalI0TkgzMGc3U0Z0SXQwa1RTVzlKMDBuelNoTktiMHJMU3k5TFQwdXpUQmRNZTB6ZlRUOU5tMDN6VGxkT3UwOGZUNE5QbzAvRFVDZFFpMUR2VVU5UnExSURVbWRTeDFNclU0OVQ4MVJUVk1kVk8xVnJWWnRWdTFYclZodFdTMVo3VnRkWE0xZVhWL2RZVzFpN1dSOVpmMW5qV2tOYXIxc1hXM3RiMzF4RFhLZGRDMTF2WGROZU4xNmpYdzlmUDE5dlg4dGdKMkNEWU50aFAyR2ZZZ05pWTJMSFl5ZGppMlByWkZka3YyVWJaWGRscDJYWFpnZG1OMmFUWnU5blUyZXphQmRvZDJqYmFUdHBuMm4vYW10cTAyc3ZhNHRyNTJ4RGJKOXMrMjFYYmE5dDMyNFBiajl1YjI3TGJ5ZHZnMi9mY0R0d2wzRHpjVTl4cTNJRGNqTnlZM0tUY3NOekgzTjdjOWQwTDNZSGRsdDJpM2E3ZHV0M0czZExkM3QzcTNmYmVBdDRPM2hyZUp0NHkzajdlU3Q1VzNtTGVidDUyM3RUZk10OTAzN1BnRitCMTRKRGdxK0MzNE1QZ3orRGI0T2ZnOCtFOTRZM2g1ZUk3NGtQaVQrSlo0bUhpYWVKeDRubmlnZUtKNHFEaXQrTE80dVhpL3VNWDR6RGpTZU5pNDN2amxPT3Q0OGJqMytQNDVCSGtIZVFwNURYa1FlUk41Rm5rWmVSeDVIM2tsT1NtNUxMa3Z1VEs1TmJrNHVUdTVQcmxCdVVkNVRUbFFPVk01VmpsWk9WdzVYemxrK1dwNWJYbHdlWE41ZG5sNWVYeDVmM21DZVlWNWlIbUxlWTU1a1htVWVaWjVtSG1hZVp4NW5ubWdlYUo1cEhtbWVhaDVxbm1zZWE1NXRMbTZ1Y0M1eG5uSWVjcDUwTG5TdWRoNTNmbmYrZUg1NC9ubCtldTU3Ym52dWZHNTg3bjF1ZmU1K2JuN3VoNDZNVHBJdWtxNlRicFRlbGo2V3ZwZCttRDZZL3Btd0FBQUFVQVpBQUFBeWdGc0FBREFBWUFDUUFNQUE4QWNiSU1FQkVSRWptd0RCQ3dBTkN3REJDd0J0Q3dEQkN3Q2RDd0RCQ3dEZEFBc0FCRldMQUNMeHV4QWh3K1diQUFSVml3QUM4YnNRQVFQbG15QkFJQUVSSTVzZ1VDQUJFU09iSUhBZ0FSRWpteUNBSUFFUkk1c1FvTTlMSU1BZ0FSRWpteURRSUFFUkk1c0FJUXNRNE05REF4SVNFUklRTVJBUUVSQVFNaEFUVUJJUU1vL1R3Q3hEYis3djY2QVF6a0FnUCsvZ0VDL2YwRnNQcWtCUWY5ZlFKMyt4RUNlUDFlQWw2SUFsNEFBZ0NnLy9VQmV3V3dBQU1BREFBdkFMQUFSVml3QWk4YnNRSWNQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnWUZDaXRZSWRnYjlGbXlBUVlDRVJJNU1ERUJJd016QXpRMk1oWVVCaUltQVZ1bkRjTEpOMnc0T0d3M0Fac0VGZnF0TFQwOVdqczdBQUlBaUFRU0FpTUdBQUFFQUFrQUdRQ3dBeSt5QWdvREVSSTVzQUl2c0FmUXNBTVFzQWpRTURFQkF5TVRNd1VESXhNekFSVWVid0dNQVE0ZWJ3R01CWGorbWdIdWlQNmFBZTRBQWdCM0FBQUUwd1d3QUJzQUh3Q1BBTEFBUlZpd0RDOGJzUXdjUGxtd0FFVllzQkF2RzdFUUhENVpzQUJGV0xBQ0x4dXhBaEErV2JBQVJWaXdHaThic1JvUVBsbXlIUXdDRVJJNWZMQWRMeGl5QUFNS0sxZ2gyQnYwV2JBRTBMQWRFTEFHMExBZEVMQUwwTEFMTDdJSUF3b3JXQ0hZRy9SWnNBc1FzQTdRc0FzUXNCTFFzQWdRc0JUUXNCMFFzQmJRc0FBUXNCalFzQWdRc0I3UU1ERUJJUU1qRXlNMUlSTWhOU0VUTXdNaEV6TURNeFVqQXpNVkl3TWpBeUVUSVFMOS92aFFqMUR2QVFsRi92NEJIVktQVWdFSVVwQlN6T2RGNGZ0UWtKNEJDRVgrK0FHYS9tWUJtb2tCWW9zQm9QNWdBYUQrWUl2K25vbitaZ0lqQVdJQUFBRUFidjh3QkJFR25BQXJBR1lBc0FCRldMQUpMeHV4Q1J3K1diQUFSVml3SWk4YnNTSVFQbG15QWlJSkVSSTVzQWtRc0F6UXNBa1FzQkRRc0FrUXNoTUJDaXRZSWRnYjlGbXdBaEN5R1FFS0sxZ2gyQnYwV2JBaUVMQWYwTEFpRUxBbTBMQWlFTElwQVFvcldDSFlHL1JaTURFQk5DWW5KaVkxTkRZM05UTVZGaFlWSXpRbUl5SUdGUlFXQkJZV0ZSUUdCeFVqTlNZbU5UTVVGak15TmdOWWdablZ3NytubGFpN3VJWnlkMzZGQVRHclVjdTNsTHJUdVpLR2c1WUJkMXgrTTBIUm9hVFNGTnZjRit6TmphWjdibVo1WTNlZWFxbk9FNysvRWVmR2k1WitBQVVBYWYvckJZTUZ4UUFOQUJvQUpnQTBBRGdBZUFDd0FFVllzQU12RzdFREhENVpzQUJGV0xBakx4dXhJeEErV2JBREVMQUswTEFLTDdJUkJBb3JXQ0hZRy9SWnNBTVFzaGdFQ2l0WUlkZ2I5Rm13SXhDd0hkQ3dIUyt3SXhDeUtnUUtLMWdoMkJ2MFdiQWRFTEl4QkFvcldDSFlHL1Jac2pVakF4RVNPYkExTDdJM0F5TVJFam13Tnk4d01STTBOak15RmhVVkZBWWpJaVkxRnhRV016STJOVFUwSmlJR0ZRRTBOaUFXRlJVVUJpQW1OUmNVRmpNeU5qVTFOQ1lqSWdZVkJTY0JGMm1uZzRXbHA0R0Nxb3BZU2tkWFZwUldBanVuQVFhb3AvNzhxb3BZU2toV1YwbEhXZjRIYVFMSGFRU1lnNnFyaUVlRXA2ZUxCMDVsWWxWSlRtWm1VdnpSZzZtb2kwZURxYWVMQms5bFkxVktUMlJqVlBOQ0JISkNBQU1BWmYvc0JQTUZ4QUFlQUNjQU13Q0ZBTEFBUlZpd0NTOGJzUWtjUGxtd0FFVllzQnd2RzdFY0VENVpzQUJGV0xBWUx4dXhHQkErV2JJaUhBa1JFam15S2drY0VSSTVzZ01pS2hFU09iSVFLaUlSRWpteUVRa2NFUkk1c2hNY0NSRVNPYklaSEFrUkVqbXlGaEVaRVJJNXNCd1FzaDhCQ2l0WUlkZ2I5Rm15SVI4UkVSSTVzQWtRc2pFQkNpdFlJZGdiOUZrd01STTBOamNtSmpVME5qTXlGaFVVQmdjSEFUWTFNeFFIRnlNbkJnWWpJaVFGTWpjQkJ3WVZGQllERkJjM05qWTFOQ1lqSWdabGRhVmhRc1NvbHNSWmIyc0JSRVNuZTlEZVlVckhaOVgrL2dIWGszcituU0dubVNKMmRrUXlaRXhTWUFHSGFiQjFkcEJIcHJ5dmhWaVZVay8rZllLZi82ajVjMEpGNGt0d0Fha1llNEoyamdQbFlKQlRNRmMrUTFsdkFBRUFad1FoQVAwR0FBQUVBQkFBc0FNdnNnSUZBeEVTT2JBQ0x6QXhFd01qRXpQOUZZRUJsUVdSL3BBQjN3QUJBSVgrS2dLVkJtc0FFUUFKQUxBT0w3QUVMekF4RXpRU0VqY1hCZ0lEQnhBVEZoY0hKaWNDaFhud2dTYVN1d2tCalZWMUpvVjU3QUpQNGdHZ0FWUkdlbkQrTlA3alZmNSsvdVNxWUhGS3JnRlVBQUFCQUNiK0tnSTNCbXNBRVFBSkFMQU9MN0FFTHpBeEFSUUNBZ2NuTmhJVE5UUUNBaWMzRmhJU0FqZDE4WVFubXJzQ1dKMWlKNFR2ZHdKRjMvNW4vcVpKY1hZQjhRRXZJTklCYVFFZVVIRkovcXIrWkFBQkFCd0NZUU5WQmJBQURnQWdBTEFBUlZpd0JDOGJzUVFjUGxtd0FOQVpzQUF2R0xBSjBCbXdDUzhZTURFQkpUY0ZBek1ESlJjRkV3Y0RBeWNCU3Y3U0xnRXVDWmtLQVNrdS9zM0dmTHEwZlFQWFdwZHdBVmorbzI2WVcvN3hYZ0VnL3VkYkFBQUJBRTRBa2dRMEJMWUFDd0FhQUxBSkw3QUEwTEFKRUxJR0FRb3JXQ0hZRy9SWnNBUFFNREVCSVJVaEVTTVJJVFVoRVRNQ25nR1cvbXE2L21vQmxyb0REYS8rTkFITXJ3R3BBQUVBSGY3ZUFUUUEyd0FJQUJjQXNBa3ZzZ1FGQ2l0WUlkZ2I5Rm13QU5Dd0FDOHdNUk1uTmpjMU14VVVCb1pwWGdTMVkvN2VTSU9McDVGbHlnQUFBUUFsQWg4Q0RRSzJBQU1BRVFDd0FpK3lBUUVLSzFnaDJCdjBXVEF4QVNFMUlRSU4vaGdCNkFJZmx3QUJBSkQvOVFGMkFORUFDUUFiQUxBQVJWaXdCeThic1FjUVBsbXlBZ1VLSzFnaDJCdjBXVEF4TnpRMk1oWVZGQVlpSnBBNWNqczdjamxoTUVCQU1DNCtQZ0FCQUJML2d3TVFCYkFBQXdBVEFMQUFMN0FBUlZpd0FpOGJzUUljUGxrd01SY2pBVE94bndKZ25uMEdMUUFBQWdCei8rd0VDZ1hFQUEwQUd3QTVBTEFBUlZpd0NpOGJzUW9jUGxtd0FFVllzQU12RzdFREVENVpzQW9Rc2hFQkNpdFlJZGdiOUZtd0F4Q3lHQUVLSzFnaDJCdjBXVEF4QVJBQ0l5SUNBelVRRWpNeUVoTW5OQ1lqSWdZSEVSUVdNekkyTndRSzN1enA0QVRlN2V2ZUE3bUVqNDZDQW9tTGlZVURBbTMrdS83RUFUVUJNL2NCUVFFNC90UCt4ZzNyMTliZS90anM0ZFRrQUFFQXFnQUFBdGtGdHdBR0FEa0FzQUJGV0xBRkx4dXhCUncrV2JBQVJWaXdBQzhic1FBUVBsbXlCQUFGRVJJNXNBUXZzZ01CQ2l0WUlkZ2I5Rm15QWdNRkVSSTVNREVoSXhFRk5TVXpBdG02L29zQ0VoMEUwWW1veHdBQUFRQmRBQUFFTXdYRUFCY0FUUUN3QUVWWXNCQXZHN0VRSEQ1WnNBQkZXTEFBTHh1eEFCQStXYklYQVFvcldDSFlHL1Jac0FMUXNnTVFGeEVTT2JBUUVMSUpBUW9yV0NIWUcvUlpzQkFRc0F6UXNoVVhFQkVTT1RBeElTRTFBVFkyTlRRbUl5SUdGU00wSkRNeUZoVVVBUUVoQkRQOFJnSDRjRldLYzRxWnVRRUQyY3ZzL3U3K2VnTGJoUUl3ZjU5VmNwS2RqTW40MWJIWC90ZitXUUFCQUY3LzdBUDVCY1FBSmdCNEFMQUFSVml3RFM4YnNRMGNQbG13QUVWWXNCa3ZHN0VaRUQ1WnNnQU5HUkVTT2JBQUw3TFBBQUZkc3A4QUFYR3lMd0FCWGJKZkFBRnlzQTBRc2dZQkNpdFlJZGdiOUZtd0RSQ3dDZEN3QUJDeUpnRUtLMWdoMkJ2MFdiSVRKZ0FSRWptd0dSQ3dITkN3R1JDeUh3RUtLMWdoMkJ2MFdUQXhBVE0yTmpVUUl5SUdGU00wTmpNeUZoVVVCZ2NXRmhVVUJDQWtOVE1VRmpNeU5qVTBKaWNqQVlhTGc1Yi9lSSs1L2NQTzZudHFlSVAvQVA1bS92KzZsbjZHanB5VGl3TXlBb1p5QVFDSmNhM2wyc0pmc2l3bXNIL0U1dDYyYzRxTWczK0lBZ0FDQURVQUFBUlFCYkFBQ2dBT0FFa0FzQUJGV0xBSkx4dXhDUncrV2JBQVJWaXdCQzhic1FRUVBsbXlBUWtFRVJJNXNBRXZzZ0lCQ2l0WUlkZ2I5Rm13QnRDd0FSQ3dDOUN5Q0FZTEVSSTVzZzBKQkJFU09UQXhBVE1WSXhFakVTRTFBVE1CSVJFSEE0Ykt5cnI5YVFLTXhmMkJBY1VXQWVtWC9xNEJVbTBEOGZ3NUFzb29BQUVBbXYvc0JDMEZzQUFkQUdFQXNBQkZXTEFCTHh1eEFSdytXYkFBUlZpd0RTOGJzUTBRUGxtd0FSQ3lCQUVLSzFnaDJCdjBXYklIRFFFUkVqbXdCeSt5R2dFS0sxZ2gyQnYwV2JJRkJ4b1JFam13RFJDd0VkQ3dEUkN5RkFFS0sxZ2gyQnYwV2JBSEVMQWQwREF4RXhNaEZTRUROak15RWhVVUFpTWlKaWN6RmhZek1qWTFOQ1lqSWdjSHprb0M2djJ6TEd1SXgrcnoyc0gwRWE4UmtIYUJrNStFZVVVeEF0b0MxcXYrY3ovKytlRGgvdjNXdlgxL3NKdVNzVFVvQUFJQWhQL3NCQndGc1FBVUFDRUFUZ0N3QUVWWXNBQXZHN0VBSEQ1WnNBQkZXTEFOTHh1eERSQStXYkFBRUxJQkFRb3JXQ0hZRy9SWnNnY05BQkVTT2JBSEw3SVZBUW9yV0NIWUcvUlpzQTBRc2h3QkNpdFlJZGdiOUZrd01RRVZJd1lFQnpZek1oSVZGQUlqSWdBMU5SQUFKUU1pQmdjVkZCWXpNalkxTkNZRFR5TFkvd0FVYzhlKzQvWE8wZjc4QVZjQlU5SmZvQitpZVgyUGtRV3huUVQ0NFlUKzlOVGgvdklCUWYxSEFaSUJxUVg5Y0hKV1JMVGN1SldXdVFBQkFFMEFBQVFsQmJBQUJnQXlBTEFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQUV2RzdFQkVENVpzQVVRc2dNQkNpdFlJZGdiOUZteUFBTUZFUkk1TURFQkFTTUJJVFVoQkNYOXBjSUNXZnpzQTlnRlNQcTRCUmlZQUFBREFIRC83QVFPQmNRQUZ3QWhBQ3NBWVFDd0FFVllzQlV2RzdFVkhENVpzQUJGV0xBSkx4dXhDUkErV2JJbkNSVVJFam13SnkreXp5Y0JYYklhQVFvcldDSFlHL1Jac2dNYUp4RVNPYklQSnhvUkVqbXdDUkN5SHdFS0sxZ2gyQnYwV2JBVkVMSWlBUW9yV0NIWUcvUlpNREVCRkFZSEZoWVZGQVlqSWlZMU5EWTNKaVkxTkRZek1oWUROQ1lpQmhRV016STJBU0lHRlJRV01qWTBKZ1BzYzJKeWhmL1EwdjJCY21GdzdNSEE3WmViK3BlVGc0S1UvdXB0aDRYZWhZb0VORzJxTURHOGQ3M2c0YngydmpFd3FteTQyTmo4b1hxYW1QaU9qd1FhaDNSdmlZbmVqQUFBQWdCay8vOEQrQVhFQUJjQUpBQllBTEFBUlZpd0N5OGJzUXNjUGxtd0FFVllzQk12RzdFVEVENVpzZ01UQ3hFU09iQURMN0lBQXdzUkVqbXdFeEN5RkFFS0sxZ2gyQnYwV2JBREVMSVlBUW9yV0NIWUcvUlpzQXNRc2g4QkNpdFlJZGdiOUZrd01RRUdCaU1pSmlZMU5EWTJNeklTRVJVUUFBVWpOVE0yTmlVeU5qYzFOQ1lqSWdZVkZCWURQanFoWUg2N1ptL01pTmo1L3JEK3JTUW41ZmIrN2wyZEpKNTVlcFNQQW9CRlZIemhpSkxxZlA2OS91azIvbGYrZVFXY0JPZjZjbFJLdHVTN21aWEJBUC8vQUliLzlRRnRCRVFBSmdBUzlnQUJCd0FTLy9jRGN3QVFBTEFBUlZpd0RTOGJzUTBZUGxrd01mLy9BQ24rM2dGVkJFUUFKd0FTLzk4RGN3RUdBQkFNQUFBUUFMQUFSVml3QXk4YnNRTVlQbGt3TVFBQkFFZ0F3d042QkVvQUJnQVdBTEFBUlZpd0JTOGJzUVVZUGxtd0F0Q3dBaTh3TVFFRkZRRTFBUlVCQ0FKeS9NNERNZ0tFL2NRQmU1SUJlc1FBQUFJQW1BR1BBOW9EendBREFBY0FKUUN3Qnkrd0E5Q3dBeSt5QUFFS0sxZ2gyQnYwV2JBSEVMSUVBUW9yV0NIWUcvUlpNREVCSVRVaEVTRTFJUVBhL0w0RFF2eStBMElETHFIOXdLQUFBQUVBaGdERUE5d0VTd0FHQUJZQXNBQkZXTEFDTHh1eEFoZytXYkFGMExBRkx6QXhBUUUxQVJVQk5RTWIvV3NEVnZ5cUFvb0JBNzcraHBMK2hjQUFBZ0JMLy9VRGRnWEVBQmdBSVFCUkFMQUFSVml3RUM4YnNSQWNQbG13QUVWWXNDQXZHN0VnRUQ1WnNoc0ZDaXRZSWRnYjlGbXlBQnNRRVJJNXNnUVFBQkVTT2JBUUVMSUpBUW9yV0NIWUcvUlpzQkFRc0F6UXNoVUFFQkVTT1RBeEFUWTJOemMyTlRRbUl5SUdGU00yTmpNeUZoVVVCd2NHRlFNME5qSVdGQVlpSmdGbEFqSk5nMVJ1YVdaOHVRTGp0cjNUb20xSndUZHNPRGhzTndHYWQ0cFVoMTl0YVhkc1c2TEh5N0d2cW14Um1QN0RMVDA5V2pzN0FBQUNBR3IrT3diV0JaY0FOUUJDQUdnQXNESXZzQUJGV0xBSUx4dXhDQkErV2JBRDBMSVBNZ2dSRWptd0R5K3lCUWdQRVJJNXNBZ1FzamtDQ2l0WUlkZ2I5Rm13RmRDd01oQ3lHd0lLSzFnaDJCdjBXYkFJRUxBcTBMQXFMN0lqQWdvcldDSFlHL1Jac0E4UXNrQUNDaXRZSWRnYjlGa3dNUUVHQWlNaUp3WUdJeUltTnpZU05qTXlGaGNEQmpNeU5qY1NBQ0VpQkFJSEJoSUVNekkyTnhjR0JpTWlKQUlURWhJa016SUVFZ0VHRmpNeU5qYzNFeVlqSWdZR3lnell0YnMxTm90S2pwSVREM20vYVZHQVVEUVRrM0dNQmhQK3VmNnl5ZjdJdEFzTWtBRW4wVnExUENVK3pXbjYvcGl6REF6ZUFYenYrUUZrcnZ2eURsRllQRzhrQVM0NFFIV1pBZmJ5L3Vpb1ZWUG96YVVCQTVRclAvM1c1K0MwQVlVQm1NZitpUGI0L3BQQkxDTnpKekxoQWFjQkd3RVRBYmZ2NFA1YS9wQ09tR1pmQ1FIM0hlNEFBQUlBSEFBQUJSMEZzQUFIQUFvQVJnQ3dBRVZZc0FRdkc3RUVIRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3Qmk4YnNRWVFQbG15Q1FRQ0VSSTVzQWt2c2dBQkNpdFlJZGdiOUZteUNnUUNFUkk1TURFQklRTWpBVE1CSXdFaEF3UE4vWjZKeGdJc3FBSXR4ZjFOQWUvNEFYeitoQVd3K2xBQ0dnS3BBQU1BcVFBQUJJZ0ZzQUFPQUJZQUh3QlZBTEFBUlZpd0FTOGJzUUVjUGxtd0FFVllzQUF2RzdFQUVENVpzaGNBQVJFU09iQVhMN0lQQVFvcldDSFlHL1Jac2dnUEZ4RVNPYkFBRUxJUUFRb3JXQ0hZRy9SWnNBRVFzaDhCQ2l0WUlkZ2I5Rmt3TVRNUklUSVdGUlFHQnhZV0ZSUUdJd0VSSVRJMk5SQWhKU0V5TmpVMEppTWhxUUhjN2U5MFpIYUovdWoreHdFOWhwdis0djdBQVNKK2w0eVAvdVFGc01UQVpwMHJJYm1BeE9BQ3FmMzBpM29CQjVwK2JIaHRBQUFCQUhmLzdBVFlCY1FBSEFCRkFMQUFSVml3Q3k4YnNRc2NQbG13QUVWWXNBTXZHN0VERUQ1WnNBc1FzQS9Rc0FzUXNoSUJDaXRZSWRnYjlGbXdBeEN5R1FFS0sxZ2gyQnYwV2JBREVMQWMwREF4QVFZRUl5QUFFVFUwRWlRek1nQVhJeVltSXlJQ0ZSVVVFak15TmpjRTJCdis0ZTcrL3Y3SmtRRUtyK2dCR0JmQkdhZVd1TkhHc3FDckhBSE81L3NCY2dFMmpNc0JOS1grL2VXdW5QN3crNDN0L3VpUnRBQUNBS2tBQUFUR0JiQUFDd0FWQURrQXNBQkZXTEFCTHh1eEFSdytXYkFBUlZpd0FDOGJzUUFRUGxtd0FSQ3lEQUVLSzFnaDJCdjBXYkFBRUxJTkFRb3JXQ0hZRy9SWk1ERXpFU0V5QkJJWEZSUUNCQWNERVRNeUVqVTFOQUlucVFHYnZnRWtud0dmL3RuRTA4cmU5K25XQmJDby9zckpYYzcreXFZQ0JSTDdpd0VVLzFYNEFSTUNBQUFCQUtrQUFBUkdCYkFBQ3dCT0FMQUFSVml3Qmk4YnNRWWNQbG13QUVWWXNBUXZHN0VFRUQ1WnNnc0VCaEVTT2JBTEw3SUFBUW9yV0NIWUcvUlpzQVFRc2dJQkNpdFlJZGdiOUZtd0JoQ3lDQUVLSzFnaDJCdjBXVEF4QVNFUklSVWhFU0VWSVJFaEErRDlpUUxkL0dNRGsvMHRBbmNDb2YzOG5RV3dudjRzQUFFQXFRQUFCQzhGc0FBSkFFQUFzQUJGV0xBRUx4dXhCQncrV2JBQVJWaXdBaThic1FJUVBsbXlDUUlFRVJJNXNBa3ZzZ0FCQ2l0WUlkZ2I5Rm13QkJDeUJnRUtLMWdoMkJ2MFdUQXhBU0VSSXhFaEZTRVJJUVBNL1ozQUE0YjlPZ0pqQW9QOWZRV3dudjRPQUFFQWV2L3NCTndGeEFBZkFHSUFzQUJGV0xBTEx4dXhDeHcrV2JBQVJWaXdBeThic1FNUVBsbXdDeEN3RDlDd0N4Q3lFUUVLSzFnaDJCdjBXYkFERUxJWUFRb3JXQ0hZRy9SWnNoNERDeEVTT2JBZUw3UVBIaDhlQWwyMFB4NVBIZ0pkc2gwQkNpdFlJZGdiOUZrd01TVUdCQ01pSkFJbk5SQUFJVElFRnlNQ0lTSUNBeFVVRWpNeU5qY1JJVFVoQk54Sy92ZXdzdjdzbHdJQk13RVc1QUVXSDhBMi90N0J4d0hndjJ5aU5mNnZBaEMvYW1tbkFUVExmd0ZKQVdycDFnRWgvdkgrLzNmMS90OHdPUUZIbkFBQkFLa0FBQVVJQmJBQUN3QlZBTEFBUlZpd0JpOGJzUVljUGxtd0FFVllzQW92RzdFS0hENVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdCQzhic1FRUVBsbXdBQkN3Q2RDd0NTK3lud2tCY3JJdkNRRmRzZ0lCQ2l0WUlkZ2I5Rmt3TVNFakVTRVJJeEV6RVNFUk13VUl3ZjBpd01BQzNzRUNvZjFmQmJEOWpnSnlBQUFCQUxjQUFBRjNCYkFBQXdBZEFMQUFSVml3QWk4YnNRSWNQbG13QUVWWXNBQXZHN0VBRUQ1Wk1ERWhJeEV6QVhmQXdBV3dBQUFCQURYLzdBUE1CYkFBRHdBdUFMQUFSVml3QUM4YnNRQWNQbG13QUVWWXNBVXZHN0VGRUQ1WnNBblFzQVVRc2d3QkNpdFlJZGdiOUZrd01RRXpFUlFHSXlJbU5UTVVGak15TmpjREM4SDcwZG55d0ltQ2Q1TUJCYkQ3K2RIczNzaDlqSmFIQUFBQkFLa0FBQVVGQmJBQUN3QjBBTEFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQWN2RzdFSEhENVpzQUJGV0xBQ0x4dXhBaEErV2JBQVJWaXdDeThic1FzUVBsbXlBQUlGRVJJNVFCRktBRm9BYWdCNkFJb0FtZ0NxQUxvQUNGMnlPUUFCWGJJR0JRSVJFamxBRXpZR1JnWldCbVlHZGdhR0JwWUdwZ2EyQmdsZE1ERUJCeEVqRVRNUkFUTUJBU01DRzdMQXdBS0g2UDNEQW1ybUFxVzUvaFFGc1Awd0F0RDlmZnpUQUFFQXFRQUFCQndGc0FBRkFDZ0FzQUJGV0xBRUx4dXhCQncrV2JBQVJWaXdBaThic1FJUVBsbXlBQUVLSzFnaDJCdjBXVEF4SlNFVklSRXpBV29Dc3Z5TndaMmRCYkFBQUFFQXFRQUFCbElGc0FBT0FGa0FzQUJGV0xBQUx4dXhBQncrV2JBQVJWaXdBaThic1FJY1BsbXdBRVZZc0FRdkc3RUVFRDVac0FCRldMQUlMeHV4Q0JBK1diQUFSVml3REM4YnNRd1FQbG15QVFBRUVSSTVzZ2NBQkJFU09iSUtBQVFSRWprd01Ra0NNeEVqRVJNQkl3RVRFU01SQWFFQjNBSGMrY0FTL2lLVC9pTVR3QVd3KzF3RXBQcFFBamNDWlB0bEJKajluLzNKQmJBQUFBRUFxUUFBQlFnRnNBQUpBRXl5QVFvTEVSSTVBTEFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQWd2RzdFSUhENVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdBeThic1FNUVBsbXlBZ1VBRVJJNXNnY0ZBQkVTT1RBeElTTUJFU01STXdFUk13VUl3ZjBqd2NFQzM3OEVZdnVlQmJEN21RUm5BQUlBZHYvc0JRa0Z4QUFSQUI4QU9RQ3dBRVZZc0Ewdkc3RU5IRDVac0FCRldMQUVMeHV4QkJBK1diQU5FTElWQVFvcldDSFlHL1Jac0FRUXNod0JDaXRZSWRnYjlGa3dNUUVVQWdRaklpUUNKelUwRWlRek1nUVNGU2NRQWlNaUFnY1ZGQkl6TWhJM0JRbVEvdml3clA3Mmt3S1NBUXVzcndFTGtML1F1N2JSQTlPNXVzd0RBcW5XL3NHb3FRRTV6bW5TQVVLcnFmNi8xUUlCQXdFVi91djJhL3YrNFFFUC9RQUFBZ0NwQUFBRXdBV3dBQW9BRXdCTnNnb1VGUkVTT2JBS0VMQU0wQUN3QUVWWXNBTXZHN0VESEQ1WnNBQkZXTEFCTHh1eEFSQStXYklMQXdFUkVqbXdDeSt5QUFFS0sxZ2gyQnYwV2JBREVMSVNBUW9yV0NIWUcvUlpNREVCRVNNUklUSUVGUlFFSXlVaE1qWTFOQ1luSVFGcHdBSVo3d0VQL3ZmMy9xa0JXWnFrcEkvK25BSTYvY1lGc1BUSjFPV2RrWW1DbkFNQUFnQnQvd29GQmdYRUFCVUFJZ0JOc2dnakpCRVNPYkFJRUxBWjBBQ3dBRVZZc0JFdkc3RVJIRDVac0FCRldMQUlMeHV4Q0JBK1diSURDQkVSRWptd0VSQ3lHUUVLSzFnaDJCdjBXYkFJRUxJZ0FRb3JXQ0hZRy9SWk1ERUJGQUlIQlFjbEJpTWlKQUluTlRRU0pETXlCQklWSnhBQ0l5SUNCeFVVRWlBU053VUJobmtCQklQK3pVaFFyUDcya3dLU0FRdXNzQUVMa01ETnZyWFJBOUVCZE13REFxblQvczlXekhuMEVxa0JPYzVwMGdGQ3E2cit3ZFVCQVFFQkYvN3I5bXY2L3VBQkQvMEFBQUlBcUFBQUJNa0ZzQUFPQUJjQVliSUZHQmtSRWptd0JSQ3dGdEFBc0FCRldMQUVMeHV4QkJ3K1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBMHZHN0VORUQ1WnNoQUVBaEVTT2JBUUw3SUFBUW9yV0NIWUcvUlpzZ3NBQkJFU09iQUVFTElXQVFvcldDSFlHL1JaTURFQklSRWpFU0V5QkJVVUJnY0JGU01CSVRJMk5UUW1KeUVDdi82cXdRSGk5Z0VKazRNQlZzNzliZ0VuajZtaG1QN2FBazM5c3dXdzROYUl5akw5bGd3QzZwUjhoNUFCQUFBQkFGRC83QVJ5QmNRQUpnQmhzZ0FuS0JFU09RQ3dBRVZZc0FZdkc3RUdIRDVac0FCRldMQWFMeHV4R2hBK1diQUdFTEFMMExBR0VMSU9BUW9yV0NIWUcvUlpzaVlhQmhFU09iQW1FTElVQVFvcldDSFlHL1Jac0JvUXNCL1FzQm9Rc2lJQkNpdFlJZGdiOUZrd01RRW1KalUwSkRNeUZoWVZJelFtSXlJR0ZSUVdCQllXRlJRRUl5SWtKalV6RkJZek1qWTBKZ0pXOStFQkU5eVc2NEhCcUptT241Y0JhODFqL3V6bmx2NzhqY0hEbzVpaWxnS0pSOCtZck9GMHpIbUVsMzF2V1h0bWU2UnZzZFZ6eUgrRW1YeldkUUFBQVFBeEFBQUVsd1d3QUFjQUxnQ3dBRVZZc0FZdkc3RUdIRDVac0FCRldMQUNMeHV4QWhBK1diQUdFTElBQVFvcldDSFlHL1Jac0FUUU1ERUJJUkVqRVNFMUlRU1gvaXkvL2kwRVpnVVMrdTRGRXA0QUFRQ00vK3dFcWdXd0FCSUFQTElGRXhRUkVqa0FzQUJGV0xBQUx4dXhBQncrV2JBQVJWaXdDUzhic1FrY1BsbXdBRVZZc0FVdkc3RUZFRDVac2c0QkNpdFlJZGdiOUZrd01RRVJCZ0FIQnlJQUp4RXpFUlFXTXpJMk5SRUVxZ0grLzl3ejcvN2tBcjZ1b2FPdEJiRDhJczcrK2hBQ0FRTGlBK0Q4SnA2dnJwNEQyd0FBQVFBY0FBQUUvUVd3QUFZQU9MSUFCd2dSRWprQXNBQkZXTEFCTHh1eEFSdytXYkFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQU12RzdFREVENVpzZ0FCQXhFU09UQXhKUUV6QVNNQk13S0xBYURTL2VTcS9lWFIvd1N4K2xBRnNBQUFBUUE5QUFBRzdRV3dBQklBV1FDd0FFVllzQU12RzdFREhENVpzQUJGV0xBSUx4dXhDQncrV2JBQVJWaXdFUzhic1JFY1BsbXdBRVZZc0Fvdkc3RUtFRDVac0FCRldMQVBMeHV4RHhBK1diSUJBd29SRWpteUJnTUtFUkk1c2cwRENoRVNPVEF4QVJjM0FUTUJGemNUTXdFakFTY0hBU01CTXdIakhDa0JJS0lCR1NnZjRzSCtuNi8rMUJjWC9zbXYvcURBQWN2QXJRUDQvQWl3eEFQaytsQUVKVzl2KzlzRnNBQUJBRGtBQUFUT0JiQUFDd0JyQUxBQVJWaXdBUzhic1FFY1BsbXdBRVZZc0Fvdkc3RUtIRDVac0FCRldMQUVMeHV4QkJBK1diQUFSVml3Qnk4YnNRY1FQbG15QUFFRUVSSTVRQW1HQUpZQXBnQzJBQVJkc2dZQkJCRVNPVUFKaVFhWkJxa0d1UVlFWGJJREFBWVJFam15Q1FZQUVSSTVNREVCQVRNQkFTTUJBU01CQVRNQ2hBRmQ0djQwQWRmay9wcittT01CMlA0ejRRT0NBaTc5THYwaUFqajl5QUxlQXRJQUFBRUFEd0FBQkxzRnNBQUlBREVBc0FCRldMQUJMeHV4QVJ3K1diQUFSVml3Qnk4YnNRY2NQbG13QUVWWXNBUXZHN0VFRUQ1WnNnQUJCQkVTT1RBeEFRRXpBUkVqRVFFekFtVUJmTnIrQ3NEK0N0d0MxUUxiL0cvOTRRSWZBNUVBQUFFQVZnQUFCSG9Gc0FBSkFFUUFzQUJGV0xBSEx4dXhCeHcrV2JBQVJWaXdBaThic1FJUVBsbXlBQUVLSzFnaDJCdjBXYklFQUFJUkVqbXdCeEN5QlFFS0sxZ2gyQnYwV2JJSkJRY1JFamt3TVNVaEZTRTFBU0UxSVJVQk9RTkIrOXdESHZ6dkEvZWRuWkFFZ3A2TkFBQUJBSkwreUFJTEJvQUFCd0FpQUxBRUw3QUhMN0lBQVFvcldDSFlHL1Jac0FRUXNnTUJDaXRZSWRnYjlGa3dNUUVqRVRNVklSRWhBZ3Uvdi82SEFYa0Y2UGw0bUFlNEFBQUJBQ2ovZ3dNNEJiQUFBd0FUQUxBQ0w3QUFSVml3QUM4YnNRQWNQbGt3TVJNekFTTW9zQUpnc0FXdytkTUFBUUFKL3NnQmd3YUFBQWNBSlFDd0FpK3dBUyt3QWhDeUJRRUtLMWdoMkJ2MFdiQUJFTElHQVFvcldDSFlHL1JaTURFVElSRWhOVE1SSXdrQmV2Nkd3Y0VHZ1BoSW1BYUlBQUFCQUVBQzJRTVVCYkFBQmdBbnNnQUhDQkVTT1FDd0FFVllzQU12RzdFREhENVpzQURRc2dFSEF4RVNPYkFCTDdBRjBEQXhBUU1qQVRNQkl3R3F2cXdCSzM4Qktxc0V1LzRlQXRmOUtRQUJBQVQvYVFPWUFBQUFBd0FiQUxBQVJWaXdBeThic1FNUVBsbXlBQUVLSzFnaDJCdjBXVEF4QlNFMUlRT1kvR3dEbEplWEFBQUJBRGtFMkFIYUJmNEFBd0FqQUxBQkw3SVBBUUZkc0FEUUdiQUFMeGl3QVJDd0F0Q3dBaSswRHdJZkFnSmRNREVCSXdFekFkcWYvdjdmQk5nQkpnQUFBZ0J0Lyt3RDZnUk9BQjRBS0FCNXNoY3BLaEVTT2JBWEVMQWcwQUN3QUVWWXNCY3ZHN0VYR0Q1WnNBQkZXTEFFTHh1eEJCQStXYkFBUlZpd0FDOGJzUUFRUGxteUFoY0VFUkk1c2dzWEJCRVNPYkFMTDdBWEVMSVBBUW9yV0NIWUcvUlpzaElMRnhFU09iQUVFTElmQVFvcldDSFlHL1Jac0FzUXNpTUJDaXRZSWRnYjlGa3dNU0VtSndZaklpWTFOQ1F6TXpVMEppTWlCaFVqTkRZMk16SVdGeEVVRnhVbE1qWTNOU01nRlJRV0F5Z1FDb0d6b00wQkFlbTBkSEZqaHJwenhYYTcxQVFtL2d0WG5DT1IvcXgwSUZLR3RZdXB1MVZoYzJSSFVaZFl1NlQrRHBWWUVJMWFTTjdIVjJJQUFnQ00vK3dFSUFZQUFBNEFHUUJrc2hJYUd4RVNPYkFTRUxBRDBBQ3dDQyt3QUVWWXNBd3ZHN0VNR0Q1WnNBQkZXTEFETHh1eEF4QStXYkFBUlZpd0JpOGJzUVlRUGxteUJRZ0RFUkk1c2dvTUF4RVNPYkFNRUxJU0FRb3JXQ0hZRy9SWnNBTVFzaGNCQ2l0WUlkZ2I5Rmt3TVFFVUFpTWlKd2NqRVRNUk5pQVNFU2MwSmlNaUJ4RVdNekkyQkNEa3dNMXdDYXE1Y0FHSzRibVNpYmRRVmJTRmxBSVIrUDdUa1gwR0FQM0RpLzdXL3YwRnZjNnEvaXlxemdBQkFGei83QVBzQkU0QUhRQkpzaEFlSHhFU09RQ3dBRVZZc0JBdkc3RVFHRDVac0FCRldMQUlMeHV4Q0JBK1diSUFBUW9yV0NIWUcvUlpzQWdRc0FQUXNCQVFzQlRRc0JBUXNoY0JDaXRZSWRnYjlGa3dNU1V5TmpjekRnSWpJZ0FSTlRRMk5qTXlGaGNqSmlZaklnWVZGUlFXQWo1amxBaXZCWGJGYnQzKyszVFpsTGJ4Q0s4SWoybU5tNXFEZUZwZHFHUUJKd0VBSDU3MmlOcXVhWWZMd0NPN3lnQUFBZ0JmLyt3RDhBWUFBQThBR2dCa3NoZ2JIQkVTT2JBWUVMQUQwQUN3Qmkrd0FFVllzQU12RzdFREdENVpzQUJGV0xBTUx4dXhEQkErV2JBQVJWaXdDQzhic1FnUVBsbXlCUU1NRVJJNXNnb0REQkVTT2JBTUVMSVRBUW9yV0NIWUcvUlpzQU1Rc2hnQkNpdFlJZGdiOUZrd01STTBFak15RnhFekVTTW5CaU1pQWpVWEZCWXpNamNSSmlNaUJsL3N2NzV2dWFvSmI4YTg3Ym1ZaHJCUlU2eUltQUltK1FFdmdnSTArZ0IwaUFFMCtBZTQwSjRCOFpuU0FBQUNBRjMvN0FQekJFNEFGUUFkQUdteUNCNGZFUkk1c0FnUXNCYlFBTEFBUlZpd0NDOGJzUWdZUGxtd0FFVllzQUF2RzdFQUVENVpzaG9JQUJFU09iQWFMN1MvR3M4YUFsMnlEQUVLSzFnaDJCdjBXYkFBRUxJUUFRb3JXQ0hZRy9SWnNoTUlBQkVTT2JBSUVMSVdBUW9yV0NIWUcvUlpNREVGSWdBMU5UUTJOak15RWhFVklSWVdNekkyTnhjR0FTSUdCeUUxSmlZQ1Rkeis3SHZkZ2RQcS9TTUVzNHBpaUROeGlQN1pjSmdTQWg0SWlCUUJJZklpb2YyUC91cisvVTJneFZCQ1dORUR5cU9URG8yYkFBRUFQQUFBQXNvR0ZRQVZBR095RHhZWEVSSTVBTEFBUlZpd0NDOGJzUWdlUGxtd0FFVllzQU12RzdFREdENVpzQUJGV0xBUkx4dXhFUmcrV2JBQVJWaXdBQzhic1FBUVBsbXdBeEN5QVFFS0sxZ2gyQnYwV2JBSUVMSU5BUW9yV0NIWUcvUlpzQUVRc0JQUXNCVFFNREV6RVNNMU16VTBOak15RndjbUl5SUdGUlV6RlNNUjU2dXJ1cXBBUHdvdk5WcGk1K2NEcTQ5dnJyNFJsZ2xwWW5LUC9GVUFBZ0JnL2xZRDhnUk9BQmtBSkFDRHNpSWxKaEVTT2JBaUVMQUwwQUN3QUVWWXNBTXZHN0VER0Q1WnNBQkZXTEFHTHh1eEJoZytXYkFBUlZpd0N5OGJzUXNTUGxtd0FFVllzQmN2RzdFWEVENVpzZ1VERnhFU09iSVBGd3NSRWptd0N4Q3lFUUVLSzFnaDJCdjBXYklWQXhjUkVqbXdGeEN5SFFFS0sxZ2gyQnYwV2JBREVMSWlBUW9yV0NIWUcvUlpNREVUTkJJek1oYzNNeEVVQmlNaUppYzNGak15TmpVMUJpTWlBamNVRmpNeU54RW1JeUlHWU9yQnhtOEpxZm5TZGVBN1lIZXNoNWR2d0w3cnVwYUhyMUpWcW9lWUFpYjlBU3VNZVB2ZzB2SmtWMitUbUlwZGdBRXk4N2ZSbndIdW05SUFBQUVBakFBQUE5OEdBQUFSQUVteUNoSVRFUkk1QUxBUUw3QUFSVml3QWk4YnNRSVlQbG13QUVWWXNBVXZHN0VGRUQ1WnNBQkZXTEFPTHh1eERoQStXYklBQWdVUkVqbXdBaEN5Q2dFS0sxZ2gyQnYwV1RBeEFUWXpJQk1SSXhFbUppTWlCZ2NSSXhFekFVVjd4UUZYQTdrQmFXOWFpQ2E1dVFPM2wvNTkvVFVDekhWd1lFNzgvUVlBQUFJQWpRQUFBV2dGeEFBREFBd0FQcklHRFE0UkVqbXdCaEN3QWRBQXNBQkZXTEFDTHh1eEFoZytXYkFBUlZpd0FDOGJzUUFRUGxtd0FoQ3dDdEN3Q2kreUJnVUtLMWdoMkJ2MFdUQXhJU01STXdNME5qSVdGQVlpSmdGVnVibklOMnc0T0d3M0JEb0JIeTArUGxvOFBBQUMvNy8rU3dGWkJjUUFEQUFXQUVteUVCY1lFUkk1c0JBUXNBRFFBTEFBUlZpd0RDOGJzUXdZUGxtd0FFVllzQU12RzdFREVqNVpzZ2dCQ2l0WUlkZ2I5Rm13REJDd0ZkQ3dGUyt5RUFVS0sxZ2gyQnYwV1RBeEFSRVFJU0luTlJZek1qWTFFUU0wTmpNeUZoUUdJaVlCUy83bFBUUWdORDVCRXpjMU5qZzRiRFlFT3Z0Si9zZ1NsQWhEVXdTN0FSOHNQejVhUER3QUFBRUFqUUFBQkF3R0FBQU1BSFVBc0FCRldMQUVMeHV4QkI0K1diQUFSVml3Q0M4YnNRZ1lQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFMTHh1eEN4QStXYklBQ0FJUkVqbEFGVG9BU2dCYUFHb0FlZ0NLQUpvQXFnQzZBTW9BQ2wyeUJnZ0NFUkk1UUJVMkJrWUdWZ1ptQm5ZR2hnYVdCcVlHdGdiR0JncGRNREVCQnhFakVUTVJOd0V6QVFFakFicDB1YmxqQVZIaC9sc0IxdGtCOVhuK2hBWUEvRjkzQVdUK1BQMktBQUVBbkFBQUFWVUdBQUFEQUIwQXNBQkZXTEFDTHh1eEFoNCtXYkFBUlZpd0FDOGJzUUFRUGxrd01TRWpFVE1CVmJtNUJnQUFBQUVBaXdBQUJuZ0VUZ0FkQUhleUJCNGZFUkk1QUxBQVJWaXdBeThic1FNWVBsbXdBRVZZc0Fndkc3RUlHRDVac0FCRldMQUFMeHV4QUJnK1diQUFSVml3Q3k4YnNRc1FQbG13QUVWWXNCUXZHN0VVRUQ1WnNBQkZXTEFiTHh1eEd4QStXYklCQ0FzUkVqbXlCUWdMRVJJNXNBZ1FzaEFCQ2l0WUlkZ2I5Rm13R05Bd01RRVhOak15RnpZMk15QVRFU01STkNZaklnWUhFU01STkNNaUJ4RWpFUUU2QlhmSzQxSTJyWFlCWkFhNWFuMW5pQXU2NTdaRHVRUTZlSXl1VG1EK2gvMHJBc3AwYzN0by9USUN4ZXliL09vRU9nQUJBSXdBQUFQZkJFNEFFUUJUc2dzU0V4RVNPUUN3QUVWWXNBTXZHN0VER0Q1WnNBQkZXTEFBTHh1eEFCZytXYkFBUlZpd0JpOGJzUVlRUGxtd0FFVllzQTh2RzdFUEVENVpzZ0VEQmhFU09iQURFTElMQVFvcldDSFlHL1JaTURFQkZ6WXpJQk1SSXhFbUppTWlCZ2NSSXhFQk93Wjh5QUZYQTdrQmFXOWFpQ2E1QkRxSW5QNTkvVFVDekhWd1lFNzgvUVE2QUFBQ0FGdi83QVEwQkU0QUR3QWJBRU95REJ3ZEVSSTVzQXdRc0JQUUFMQUFSVml3QkM4YnNRUVlQbG13QUVWWXNBd3ZHN0VNRUQ1WnNoTUJDaXRZSWRnYjlGbXdCQkN5R1FFS0sxZ2gyQnYwV1RBeEV6UTJOak15QUJVVkZBWUdJeUlBTlJjVUZqTXlOalUwSmlNaUJsdDkzNC9kQVJGNTRaTGMvdSs2cDR5TnBxbU1pYWdDSjUvK2l2N08vZzJlKzR3Qk12d0p0TnJkeDdMZDJnQUNBSXorWUFRZUJFNEFEd0FhQUc2eUV4c2NFUkk1c0JNUXNBelFBTEFBUlZpd0RDOGJzUXdZUGxtd0FFVllzQWt2RzdFSkdENVpzQUJGV0xBR0x4dXhCaEkrV2JBQVJWaXdBeThic1FNUVBsbXlCUXdERVJJNXNnb01BeEVTT2JBTUVMSVRBUW9yV0NIWUcvUlpzQU1Rc2hnQkNpdFlJZGdiOUZrd01RRVVBaU1pSnhFakVUTVhOak15RWhFbk5DWWpJZ2NSRmpNeU5nUWU0c0hGY2JtcENYSEp3K081bklpb1ZGT3JoWjBDRWZmKzBuMzk5d1hhZUl6KzJ2NzZCTGZVbGYzN2xOTUFBQUlBWC81Z0ErOEVUZ0FQQUJvQWE3SVlHeHdSRWptd0dCQ3dBOUFBc0FCRldMQURMeHV4QXhnK1diQUFSVml3Qmk4YnNRWVlQbG13QUVWWXNBZ3ZHN0VJRWo1WnNBQkZXTEFNTHh1eERCQStXYklGQXd3UkVqbXlDZ01NRVJJNXNoTUJDaXRZSWRnYjlGbXdBeEN5R0FFS0sxZ2gyQnYwV1RBeEV6UVNNeklYTnpNUkl4RUdJeUlDTlJjVUZqTXlOeEVtSXlJR1grckZ3RzhJcXJsd3VzVHB1WjJGcFZkWW9vYWVBaWIvQVNtQmJmb21BZ1I0QVRIOENMclVrZ0lTajlVQUFRQ01BQUFDbHdST0FBMEFScklFRGc4UkVqa0FzQUJGV0xBTEx4dXhDeGcrV2JBQVJWaXdDQzhic1FnWVBsbXdBRVZZc0FVdkc3RUZFRDVac0FzUXNnSUJDaXRZSWRnYjlGbXlDUXNGRVJJNU1ERUJKaU1pQnhFakVUTVhOak15RndLWEtqRzJRYm0wQTF1bk5od0RsQWViL1FBRU9uMlJEZ0FCQUYvLzdBTzdCRTRBSmdCaHNna25LQkVTT1FDd0FFVllzQWt2RzdFSkdENVpzQUJGV0xBY0x4dXhIQkErV2JJREhBa1JFam13Q1JDd0RkQ3dDUkN5RUFFS0sxZ2gyQnYwV2JBREVMSVZBUW9yV0NIWUcvUlpzQndRc0NIUXNCd1FzaVFCQ2l0WUlkZ2I5Rmt3TVFFMEppUW1KalUwTmpNeUZoVWpOQ1lqSWdZVkZCWUVGaFlWRkFZaklpWW1OVE1XRmpNeU5nTUNjZjducFUvaHI3amx1b0ZpWlhKcUFSV3NVK2k1Z3NoeHVRV0xjbWwvQVI5TFV6eFVkRkNGdUw2VVRHNVlSME5FUGxaNVY1R3ZYS1ZnWFcxVkFBRUFDZi9zQWxZRlFBQVZBRit5RGhZWEVSSTVBTEFBUlZpd0FTOGJzUUVZUGxtd0FFVllzQk12RzdFVEdENVpzQUJGV0xBTkx4dXhEUkErV2JBQkVMQUEwTEFBTDdBQkVMSURBUW9yV0NIWUcvUlpzQTBRc2dnQkNpdFlJZGdiOUZtd0F4Q3dFZEN3RXRBd01RRVJNeFVqRVJRV016STNGUVlqSWlZMUVTTTFNeEVCaDhyS05rRWdPRWxGZkg3RnhRVkEvdnFQL1dGQlFReVdGSmFLQXArUEFRWUFBUUNJLyt3RDNBUTZBQkFBVTdJS0VSSVJFamtBc0FCRldMQUdMeHV4QmhnK1diQUFSVml3RFM4YnNRMFlQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFRTHh1eEVCQStXYklBRFFJUkVqbXdBaEN5Q2dFS0sxZ2gyQnYwV1RBeEpRWWpJaVluRVRNUkZETXlOeEV6RVNNREtHelJyYlVCdWNqVVJybXdhMy9KeFFMQS9VWDJuZ01UKzhZQUFBRUFJUUFBQTdvRU9nQUdBRGl5QUFjSUVSSTVBTEFBUlZpd0FTOGJzUUVZUGxtd0FFVllzQVV2RzdFRkdENVpzQUJGV0xBREx4dXhBeEErV2JJQUJRTVJFamt3TVNVQk13RWpBVE1COFFFTXZmNThqZjU0dmZzRFAvdkdCRG9BQUFFQUt3QUFCZE1FT2dBTUFHQ3lCUTBPRVJJNUFMQUFSVml3QVM4YnNRRVlQbG13QUVWWXNBZ3ZHN0VJR0Q1WnNBQkZXTEFMTHh1eEN4ZytXYkFBUlZpd0F5OGJzUU1RUGxtd0FFVllzQVl2RzdFR0VENVpzZ0FMQXhFU09iSUZDd01SRWpteUNnc0RFUkk1TURFbEV6TUJJd0VCSXdFekV4TXpCRXJRdWY3Rmx2NzUvd0NXL3NhNDFmeVYvd003KzhZRE5Qek1CRHI4MWdNcUFBRUFLUUFBQThvRU9nQUxBRk1Bc0FCRldMQUJMeHV4QVJnK1diQUFSVml3Q2k4YnNRb1lQbG13QUVWWXNBUXZHN0VFRUQ1WnNBQkZXTEFITHh1eEJ4QStXYklBQ2dRUkVqbXlCZ29FRVJJNXNnTUFCaEVTT2JJSkJnQVJFamt3TVFFVE13RUJJd01ESXdFQk13SDM4TmorbmdGdDF2cjYxd0Z0L3A3V0FxOEJpLzNwL2QwQmxmNXJBaU1DRndBQkFCYitTd093QkRvQUR3QkpzZ0FRRVJFU09RQ3dBRVZZc0FFdkc3RUJHRDVac0FCRldMQU9MeHV4RGhnK1diQUFSVml3QlM4YnNRVVNQbG15QUE0RkVSSTVzZ2tCQ2l0WUlkZ2I5Rm13QUJDd0RkQXdNUUVUTXdFQ0l5Y25OUmN5TmpjM0FUTUI3dnpHL2sxbDNDTkZNbDVwSWluK2Zzb0JEd01yK3gvKzhnTU5sZ1JNWlc0RUxnQUJBRmdBQUFPekJEb0FDUUJFQUxBQVJWaXdCeThic1FjWVBsbXdBRVZZc0FJdkc3RUNFRDVac2dBQkNpdFlJZGdiOUZteUJBQUNFUkk1c0FjUXNnVUJDaXRZSWRnYjlGbXlDUVVIRVJJNU1ERWxJUlVoTlFFaE5TRVZBVG9DZWZ5bEFsWDl0QU0wbDVlSUF4bVpnd0FBQVFCQS9wSUNuZ1k5QUJnQU1iSVRHUm9SRWprQXNBMHZzQUF2c2djTkFCRVNPYkFITDdJZkJ3RmRzZ1lEQ2l0WUlkZ2I5Rm15RXdZSEVSSTVNREVCSmlZMU5UUWpOVEkxTlRZMk54Y0dFUlVVQnhZVkZSSVhBbml4czlUVUFxK3pKdEducHdQTy9wSXk1YnpIODVIeTBMZmhNM05EL3ViSzQxbGE1YzcrN1VJQUFBRUFyLzd5QVVRRnNBQURBQk1Bc0FBdnNBQkZXTEFDTHh1eEFodytXVEF4QVNNUk13RkVsWlgrOGdhK0FBQUJBQlAra2dKeUJqMEFHQUF4c2dVWkdoRVNPUUN3Q3krd0dDK3lFUXNZRVJJNXNCRXZzaDhSQVYyeUVnTUtLMWdoMkJ2MFdiSUZFaEVSRWprd01SYzJFelUwTnlZMU5SQW5OeFlXRnhVVU14VWlGUlVVQmdjVHl3ZTF0ZEVtc2JJQjFOUzFyL3RCQVFyYzUxUlM2Y3NCR2tOek11RzUwdStSODhxODRqSUFBQUVBZ3dHU0JPOERJZ0FYQUVLeUVSZ1pFUkk1QUxBQVJWaXdEeThic1E4V1BsbXdBTkN3RHhDd0ZOQ3dGQyt5QXdFS0sxZ2gyQnYwV2JBUEVMSUlBUW9yV0NIWUcvUlpzQU1Rc0F2UU1ERUJGQVlqSWk0Q0l5SUdGUWMwTmpNeUZoWVhGekkyTlFUdnU0bElnS2xLS2s1VW9iaUxUSXl3UUIxTVh3TUpudGsxbENSclhnS2d6a0NoQ2dKMFh3QUNBSXYrbUFGbUJFMEFBd0FNQURLeUJnME9FUkk1c0FZUXNBRFFBTEFDTDdBQVJWaXdDeThic1FzWVBsbXlCZ1VLSzFnaDJCdjBXYklCQWdZUkVqa3dNUk16RXlNVEZBWWlKalEyTWhhcXFBM0N5VGRzT0Roc053S3MrK3dGVEMwK1BsbzhQQUFCQUduL0N3UDVCU1lBSVFCU3NnQWlJeEVTT1FDd0FFVllzQlF2RzdFVUdENVpzQUJGV0xBS0x4dXhDaEErV2JBSDBMSUFBUW9yV0NIWUcvUlpzQW9Rc0FQUXNCUVFzQkhRc0JRUXNCalFzQlFRc2hzQkNpdFlJZGdiOUZrd01TVXlOamN6QmdZSEZTTTFKZ0kxTlRRU056VXpGUllXRnlNbUppTWlCaFVWRkJZQ1NtU1VDSzhHeHBDNXM4aktzYm1Xd0FhdkNJOXBqWnViZzNsWmZza2E2ZW9pQVJ6Y0k5UUJIU0hpM3hmVWxtbUh5OEFqdThvQUFRQmJBQUFFYUFYRUFDRUFmTEljSWlNUkVqa0FzQUJGV0xBVUx4dXhGQncrV2JBQVJWaXdCUzhic1FVUVBsbXlIeFFGRVJJNXNCOHZzbDhmQVhLeWp4OEJjYksvSHdGZHNnQUJDaXRZSWRnYjlGbXdCUkN5QXdFS0sxZ2gyQnYwV2JBSDBMQUkwTEFBRUxBTjBMQWZFTEFQMExBVUVMQVkwTEFVRUxJYkFRb3JXQ0hZRy9SWk1ERUJGeFFISVFjaE5UTTJOamMxSnlNMU13TTBOak15RmhVak5DWWpJZ1lWRXlFVkFjRUlQZ0xkQWZ2NFRTZ3lBZ2lsb0FuMXlMN2V2Mzl2YVlJSkFUOENidHlhVzUyZENZTmdDTjJkQVFUSDd0U3hhM3lhZmY3OG5RQUFBZ0JwLytVRld3VHhBQnNBS2dBL3NnSXJMQkVTT2JBQ0VMQW4wQUN3QUVWWXNBSXZHN0VDRUQ1WnNCRFFzQkF2c0FJUXNoOEJDaXRZSWRnYjlGbXdFQkN5SndFS0sxZ2gyQnYwV1RBeEpRWWpJaWNISnpjbU5UUTNKemNYTmpNeUZ6Y1hCeFlWRkFjWEJ3RVVGaFl5TmpZMU5DWW1JeUlHQmdSUG45SFBuNGFDaTJod2s0S1Ruc1BFbjVXRWwyNW1qNFQ4WUhQRTRzUnhjY1Z3Y2NSemNJU0NpSWVObk1yT281ZUlsbmg1bUltYW84dkVuNUNJQW50NzFIcDcwM3Q2MDNsNDFBQUFBUUFmQUFBRXJRV3dBQllBYXdDd0FFVllzQll2RzdFV0hENVpzQUJGV0xBQkx4dXhBUncrV2JBQVJWaXdEQzhic1F3UVBsbXlEeE1ESzdJQURCWVJFam0wRHhNZkV3SmRzQk1Rc0FQUXNCTVFzaElDQ2l0WUlkZ2I5Rm13QnRDd0R4Q3dCOUN3RHhDeURnSUtLMWdoMkJ2MFdiQUswREF4QVFFekFTRVZJUlVoRlNFUkl4RWhOU0UxSVRVaEFUTUNaZ0ZzMi81ZUFUaitnQUdBL29EQi9vWUJldjZHQVRuK1h0d0REZ0tpL1RCOXBYeit2Z0ZDZktWOUF0QUFBQUlBay83eUFVMEZzQUFEQUFjQUdBQ3dBQyt3QUVWWXNBWXZHN0VHSEQ1WnNnVUJBeXN3TVJNUk14RVJJeEV6azdxNnV2N3lBeGY4NlFQSUF2WUFBZ0JhL2hFRWVRWEVBRFFBUkFDQXNpTkZSaEVTT2JBakVMQTEwQUN3Q0Mrd0FFVllzQ012RzdFakhENVpzaFlJSXhFU09iQVdFTEkvQVFvcldDSFlHL1Jac2dJV1B4RVNPYkFJRUxBTzBMQUlFTElSQVFvcldDSFlHL1Jac2pBakNCRVNPYkF3RUxJM0FRb3JXQ0hZRy9SWnNoMDNNQkVTT2JBakVMQW4wTEFqRUxJcUFRb3JXQ0hZRy9SWk1ERUJGQWNXRmhVVUJDTWlKaWNtTlRjVUZqTXlOalUwSmljdUFqVTBOeVltTlRRa016SUVGU00wSmlNaUJoVVVGaFlFSGdJbEppY0dCaFVVRmhZRUZ6WTJOVFFtQkhtNlJVaisvT1J3eVVhTHVyU2NpS2FPMGJiQVhiWkNSd0VMM3VnQkJMbW9pNDZoT0ljQkg2bHhPdjNoV2t0UVN6YUZBUndzVGxTTEFhKzlWVEdJWktqSE9EbHh6UUtDbDNWZ1dXaytNRytiYjdwWU1ZaGtwc2ppelgyYmMySkZVRUZRU0dHQnF4Z2JFMlZGUmxCQ1VoRVVaVVZZYlFBQUFnQm1CUEFDN3dYRkFBZ0FFUUFkQUxBSEw3SUNCUW9yV0NIWUcvUlpzQXZRc0FjUXNCRFFzQkF2TURFVE5EWXlGaFFHSWlZbE5EWXlGaFFHSWlabU4ydzRPR3czQWE0M2JEZzRiRGNGV3kwOVBWbzhQQ3N0UGo1YVBEd0FBQU1BVy8vckJlWUZ4QUFiQUNvQU9RQ1ZzaWM2T3hFU09iQW5FTEFEMExBbkVMQTIwQUN3QUVWWXNDNHZHN0V1SEQ1WnNBQkZXTEEyTHh1eE5oQStXYklETmk0UkVqbXdBeSswRHdNZkF3SmRzZ291TmhFU09iQUtMN1FBQ2hBS0FsMnlEZ29ERVJJNXNoRUNDaXRZSWRnYjlGbXdBeEN5R0FJS0sxZ2gyQnYwV2JJYkF3b1JFam13TmhDeUlBUUtLMWdoMkJ2MFdiQXVFTEluQkFvcldDSFlHL1JaTURFQkZBWWpJaVkxTlRRMk16SVdGU00wSmlNaUJoVVZGQll6TWpZMUpSUVNCQ0FrRWpVMEFpUWpJZ1FDQnpRU0pDQUVFaFVVQWdRaklpUUNCRit0bnAyOXY1dWdySkpmVzE1c2JGNWNYZjBCb0FFVEFVQUJFcUNlL3UyaG9QN3NuM083QVVzQmdBRkt1N1QrdGNiRi9yVzJBbFdab2RPMmJyRFRwSlZqVllwN2NYaUtWR1dFclA3YnBxWUJKYXlxQVNLbnBmN2Nxc29CV3NmSC9xYkt4ZjZvMGM4QldBQUFBZ0NUQXJNRER3WEVBQnNBSlFCc3NnNG1KeEVTT2JBT0VMQWQwQUN3QUVWWXNCVXZHN0VWSEQ1WnNnUW1GUkVTT2JBRUw3QUEwTElDQkJVUkVqbXlDd1FWRVJJNXNBc3ZzQlVRc2c0RENpdFlJZGdiOUZteUVRc1ZFUkk1c0FRUXNod0RDaXRZSWRnYjlGbXdDeEN5SUFRS0sxZ2gyQnYwV1RBeEFTWW5CaU1pSmpVME5qTXpOVFFqSWdZVkp6UTJNeklXRlJFVUZ5VXlOamMxSXdZR0ZSUUNhZ3dHVElCM2dxZXNiSHhGVDZHc2lZV2FHdjZrSzFnY2NGTlpBc0VpSmxaOFoyOTROSWMyTXd4bmdvK0cvc1JoVVhzb0c0NEJQek5lLy84QVpnQ1hBMlFEc3dBbUFYcjYvZ0FIQVhvQlJQLytBQUVBZndGM0E3NERJQUFGQUJvQXNBUXZzQUhRc0FFdnNBUVFzZ0lCQ2l0WUlkZ2I5Rmt3TVFFakVTRTFJUU8rdXYxN0F6OEJkd0VJb1FBRUFGci82d1hsQmNRQURnQWVBRFFBUFFDcHNqWStQeEVTT2JBMkVMQUwwTEEyRUxBVDBMQTJFTEFqMEFDd0FFVllzQU12RzdFREhENVpzQUJGV0xBTEx4dXhDeEErV2JJVEJBb3JXQ0hZRy9SWnNBTVFzaHNFQ2l0WUlkZ2I5Rm15SUFzREVSSTVzQ0F2c2lJREN4RVNPYkFpTDdRQUloQWlBbDJ5TlNBaUVSSTVzRFV2c3I4MUFWMjBBRFVRTlFKZHNoOENDaXRZSWRnYjlGbXlLQjgxRVJJNXNDQVFzQy9Rc0M4dnNDSVFzajBDQ2l0WUlkZ2I5Rmt3TVJNMEVpUWdCQklWRkFJRUl5SWtBamNVRWdRek1pUVNOVFFDSkNNaUJBSUZFU01SSVRJV0ZSUUhGaGNWRkJjVkl5WTBKeVluSnpNMk5qVTBKaU1qV3JzQlN3R0FBVXE3dFA2MXhzWCt0Ylp6b0FFVG9LRUJGSjJkL3V5aG9QN3Nud0hBalFFVW1hbUFlZ0VSa1E0REVIT3duRWhZVG1TS0F0bktBVnJIeC82bXlzWCtxTkhQQVZqSHJQN2JwcWtCSXF5ckFTR25wZjdjOWY2dUExR0RmWHRCTXBvOVZpWVFKTGtSWUFTQUFrSTJTVDBBQUFFQWVBVWhBMElGc0FBREFCRUFzQUV2c2dJRENpdFlJZGdiOUZrd01RRWhOU0VEUXYwMkFzb0ZJWThBQWdDQ0E4QUNmQVhFQUFzQUZnQXZBTEFBUlZpd0F5OGJzUU1jUGxtd0ROQ3dEQyt5Q1FJS0sxZ2gyQnYwV2JBREVMSVNBZ29yV0NIWUcvUlpNREVUTkRZek1oWVZGQVlqSWlZWE1qWTFOQ1lqSWdZVUZvS1ZhbWlUazJocGx2ODJTa28yTjB0TEJNQm9uSnRwYXBhV0ZrYzVPa3RQYkVvQUFnQmhBQUFEOVFUekFBc0FEd0JHQUxBSkw3QUFSVml3RFM4YnNRMFFQbG13Q1JDd0FOQ3dDUkN5QmdFS0sxZ2gyQnYwV2JBRDBMQU5FTElPQVFvcldDSFlHL1Jac2dVT0JoRVNPYlFMQlJzRkFsMHdNUUVoRlNFUkl4RWhOU0VSTXdFaE5TRUNpUUZzL3BTbi9uOEJnYWNCUWZ5OUEwTURWcGYrWWdHZWx3R2QrdzJZQUFBQkFFSUNtd0tyQmJzQUZnQlVzZ2dYR0JFU09RQ3dBRVZZc0E0dkc3RU9IRDVac0FCRldMQUFMeHV4QUJRK1diSVdBZ29yV0NIWUcvUlpzQUxRc2dNT0ZoRVNPYkFPRUxJSUFnb3JXQ0hZRy9SWnNBNFFzQXZRc2hRV0RoRVNPVEF4QVNFMUFUWTFOQ1lqSWdZVkl6UTJJQllWRkE4Q0lRS3IvYWtCTEcxQVBFdEhuYWNCQ0pwclZMQUJqd0tiYkFFYVprVXhQVXc1Y3BSL2JtaHJUNUVBQVFBK0FvOENtZ1c2QUNZQWliSWdKeWdSRWprQXNBQkZXTEFPTHh1eERodytXYkFBUlZpd0dTOGJzUmtVUGxteUFCa09FUkk1c0FBdnRtOEFmd0NQQUFOZHNqOEFBWEcyRHdBZkFDOEFBMTJ5WHdBQmNyQU9FTElIQWdvcldDSFlHL1Jac2dvT0dSRVNPYkFBRUxJbUJBb3JXQ0hZRy9SWnNoUW1BQkVTT2JJZEdRNFJFam13R1JDeUlBSUtLMWdoMkJ2MFdUQXhBVE15TmpVMEppTWlCaFVqTkRZek1oWVZGQVlIRmhVVUJpTWlKalV6RkJZek1qWTFOQ2NqQVFsVVNrZy9SamxMbmFOOGlaeEdRcFdxaUlTbW5rOURSa21jV0FSbFBUQXRPak1wWW50NWFEZGJHU21QYW4xK2F5MDhQRE54QWdBQUFRQjdCTmdDSEFYK0FBTUFJd0N3QWkreUR3SUJYYkFBMExBQUw3UVBBQjhBQWwyd0FoQ3dBOUFac0FNdkdEQXhBVE1CSXdFODRQNzBsUVgrL3RvQUFBRUFtdjVnQSs0RU9nQVNBRkN5RFJNVUVSSTVBTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQWN2RzdFSEdENVpzQUJGV0xBUUx4dXhFQkkrV2JBQVJWaXdEUzhic1EwUVBsbXlCQUVLSzFnaDJCdjBXYklMQncwUkVqa3dNUUVSRmhZek1qY1JNeEVqSndZaklpY1JJeEVCVXdGbmRNYyt1cWNKWGFxVFVia0VPdjJIbzV5WUF5RDd4bk9IU2Y0ckJkb0FBUUJEQUFBRFFBV3dBQW9BSzdJQ0N3d1JFamtBc0FCRldMQUlMeHV4Q0J3K1diQUFSVml3QUM4YnNRQVFQbG15QVFBSUVSSTVNREVoRVNNaUpEVTBKRE1oRVFLR1ZPYis5d0VLNWdFTkFnaisxdFgvK2xBQUFBRUFrd0pyQVhrRFNRQUpBQmF5QXdvTEVSSTVBTEFDTDdFSUNpdFkyQnZjV1RBeEV6UTJNaFlWRkFZaUpwTTVjanM3Y2prQzJUQkFRREF2UHo4QUFRQjAvazBCcWdBQUFBNEFRYklGRHhBUkVqa0FzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdCaThic1FZU1BsbTBFd1lqQmdKZHNnRUdBQkVTT2JFSENpdFkyQnZjV2JBQkVMQU4wREF4SVFjV0ZSUUdJeWN5TmpVMEppYzNBUjBNbWFDUEIwOVhRR0lnTkJ1U1lYRnJOQzhzS2dtR0FBRUFlZ0tpQWU4RnR3QUdBRUN5QVFjSUVSSTVBTEFBUlZpd0JTOGJzUVVjUGxtd0FFVllzQUF2RzdFQUZENVpzZ1FBQlJFU09iQUVMN0lEQWdvcldDSFlHL1Jac2dJREJSRVNPVEF4QVNNUkJ6VWxNd0h2bmRnQll4SUNvZ0paT1lCMUFBQUNBSG9Dc2dNbkJjUUFEQUFhQUVDeUF4c2NFUkk1c0FNUXNCRFFBTEFBUlZpd0F5OGJzUU1jUGxteUNoc0RFUkk1c0FvdnNoQURDaXRZSWRnYjlGbXdBeEN5RndNS0sxZ2gyQnYwV1RBeEV6UTJNeklXRlJVVUJpQW1OUmNVRmpNeU5qVTFOQ1lqSWdZSGVyeWFtN3k3L3N5K28yRlVVMTloVTFGZ0FnUmpuc1BCcGtxZndzS2xCbVJ5YzJWT1kzSnVZUUQvL3dCbUFKZ0RlQU8xQUNZQmV3MEFBQWNCZXdGcUFBRC8vd0JWQUFBRmtRV3RBQ2NCMWYvYkFwZ0FKd0Y4QVJnQUNBRUhBZGdDMWdBQUFCQUFzQUJGV0xBRkx4dXhCUncrV1RBeC8vOEFVQUFBQmNrRnJRQW5BWHdBN0FBSUFDY0IxZi9XQXBnQkJ3SFdBeDRBQUFBUUFMQUFSVml3Q1M4YnNRa2NQbGt3TWYvL0FHOEFBQVh0QmJzQUp3RjhBWmNBQ0FBbkFkZ0RNZ0FBQVFjQjF3QXhBcHNBRUFDd0FFVllzQ0V2RzdFaEhENVpNREVBQWdCRS9uOERlQVJOQUJnQUlnQlhzZ2tqSkJFU09iQUpFTEFjMEFDd0VDK3dBRVZZc0NFdkc3RWhHRDVac2dBUUlSRVNPYklERUFBUkVqbXdFQkN5Q1FFS0sxZ2gyQnYwV2JBUUVMQU0wTElWQUJBUkVqbXdJUkN5R3dVS0sxZ2gyQnYwV1RBeEFRNERCd2NVRmpNeU5qVXpCZ1lqSWlZMU5EYzNOalVURkFZaUpqVTBOaklXQWt3QktXQzRDd0owYldSOXVRTGh0OFRXb0cxQ3dUZHNPRGhzTndLb2FuOTJ3V01sYlhOeFc2SE15Yk90cjNGT2tnRTlMVDQrTFN3OFBBQUMvL0lBQUFkWEJiQUFEd0FTQUhjQXNBQkZXTEFHTHh1eEJodytXYkFBUlZpd0FDOGJzUUFRUGxtd0FFVllzQVF2RzdFRUVENVpzaEVHQUJFU09iQVJMN0lDQVFvcldDSFlHL1Jac0FZUXNnZ0JDaXRZSWRnYjlGbXlDd0FHRVJJNXNBc3ZzZ3dCQ2l0WUlkZ2I5Rm13QUJDeURnRUtLMWdoMkJ2MFdiSVNCZ0FSRWprd01TRWhBeUVESXdFaEZTRVRJUlVoRXlFQklRTUhWL3lORC8zTXplSURjQU8zL1UwVUFrNzl1QllDd2ZxdkFjZ2ZBV0grbndXd21QNHBsLzN0QVhnQzNRQUJBRmtBemdQZEJHTUFDd0E0QUxBREw3SUpEQU1SRWptd0NTK3lDZ2tERVJJNXNnUURDUkVTT2JJQkNnUVJFam13QXhDd0JkQ3lCd1FLRVJJNXNBa1FzQXZRTURFVEFRRTNBUUVYQVFFSEFRRlpBVXIrdUhjQlNRRkpkLzY0QVVwMy9yWCt0UUZKQVZBQlQzditzUUZQZS82eC9yQjdBVkgrcndBQUF3QjIvNk1GSFFYc0FCY0FJQUFwQUdheUJDb3JFUkk1c0FRUXNCM1FzQVFRc0NiUUFMQUFSVml3RUM4YnNSQWNQbG13QUVWWXNBUXZHN0VFRUQ1WnNob1FCQkVTT2JJakVBUVJFam13SXhDd0c5Q3dFQkN5SFFFS0sxZ2gyQnYwV2JBYUVMQWswTEFFRUxJbUFRb3JXQ0hZRy9SWk1ERUJGQUlFSXlJbkJ5TTNKaEUxTkJJa016SVhOek1IRmhNRkZCY0JKaU1pQWdjRk5DY0JGak15RWpjRkNaRCsrTENyZzJHT2tMNlNBUXVzMXBSbmpaK0pBdndzWWdJMFpxYTIwUU1ERlRqOTIxdDV1c3dEQXFuVy9zR29VcHZud0FGb1U5SUJRcXQ5cGYrNy90cGo5STBEaUcvKzYvWU50b1A4ajBBQkQvMEFBZ0NtQUFBRVhRV3dBQTBBRmdCWHNna1hHQkVTT2JBSkVMQVEwQUN3QUVWWXNBQXZHN0VBSEQ1WnNBQkZXTEFMTHh1eEN4QStXYklCQUFzUkVqbXdBUyt5RUFBTEVSSTVzQkF2c2drQkNpdFlJZGdiOUZtd0FSQ3lEZ0VLSzFnaDJCdjBXVEF4QVJFaE1oWVdGUlFFSXlFUkl4RVRFU0V5TmpVMEppY0JZQUVYazl4My92amovdTY2dWdFVmpxQ2dpQVd3L3R0cHduN0M1LzdIQmJEK1EvM2VsM2g3bHdFQUFRQ0wvK3dFYWdZU0FDb0FhYkloS3l3UkVqa0FzQUJGV0xBRkx4dXhCUjQrV2JBQVJWaXdFeThic1JNUVBsbXdBRVZZc0FBdkc3RUFFRDVac2dvVEJSRVNPYklPQlJNUkVqbXdFeEN5R2dFS0sxZ2gyQnYwV2JJZ0V3VVJFam15SXdVVEVSSTVzQVVRc2lnQkNpdFlJZGdiOUZrd01TRWpFVFEyTXpJV0ZSUUdGUlFlQWhVVUJpTWlKaWMzRmhZek1qWTFOQzRDTlRRMk5UUW1JeUlSQVVTNXo3cTB4WUJMdkZiTHRsRzFKaXN4aHpWcmNVcTlWNHRvV05vRVY5RHJzNTk5eTBVelg1Q0lUSit5TEJ5YklDeGVValJnazRwUldjOVVYbXYrMndBREFFNy83QVo4QkU0QUtnQTFBRDBBeHJJQ1BqOFJFam13QWhDd0x0Q3dBaEN3T2RBQXNBQkZXTEFYTHh1eEZ4ZytXYkFBUlZpd0hTOGJzUjBZUGxtd0FFVllzQUF2RzdFQUVENVpzQUJGV0xBRkx4dXhCUkErV2JJQ0hRQVJFam15REFVWEVSSTVzQXd2dEw4TXp3d0NYYkFYRUxJUUFRb3JXQ0hZRy9SWnNoTU1GeEVTT2JJYUhRQVJFam15T2gwQUVSSTVzRG92dEw4Nnp6b0NYYkloQVFvcldDSFlHL1Jac0FBUXNpVUJDaXRZSWRnYjlGbXlLQjBBRVJJNXNDdlFzQXdRc2k4QkNpdFlJZGdiOUZtd0VCQ3dOdEF3TVFVZ0p3WUdJeUltTlRRMk16TTFOQ1lqSWdZVkp6UTJNeklXRnpZMk16SVNGUlVoRmhZek1qYzNGd1lsTWpZM05TTUdCaFVVRmdFaUJnY2hOVFFtQk83Kys0aEI0bzJudk9QZDMyNW9hWXk0OHJ0enNESS9ybW5TNlAwb0I2NlZsSGt2UUo3OENVaWVNdVIxakdvRFVIT1ZFUUlhaGhTMFZsNnRsNTJ1Vld0N2JsRVRqN1ZUVTA5WC92L3BjN0MvVEIrSWVaWktOdTBDYmxOTlhRTTBxNHNmaEpNQUFBSUFmdi9zQkMwR0xBQWRBQ3NBVkxJSExDMFJFam13QnhDd0tOQUFzQUJGV0xBWkx4dXhHUjQrV2JBQVJWaXdCeThic1FjUVBsbXlEeGtIRVJJNXNBOHZzaEVaQnhFU09iSWlBUW9yV0NIWUcvUlpzQWNRc2lnQkNpdFlJZGdiOUZrd01RRVNFUlVVQmdZaklpWW1OVFEyTmpNeUZ5WW5CeWMzSmljM0ZoYzNGd01uSmlZaklnWVZGQll6TWpZMUF6VDVkZGlHaDl4NWNNK0JvM2t3amRwSndJUzNPZSt2dlVsb0FpR0xYSkdpcDRCOW1RVVYvdmorWjEyZS9aQ0I0SWFUNllKeXc0MlVZNE5iTVo4Mmk0RmsvUE00UFVtL3A0ekU0cmdBQUFNQVJ3Q3NCQzBFdWdBREFBMEFGd0JPc2djWUdSRVNPYkFIRUxBQTBMQUhFTEFSMEFDd0FpK3lBUUVLSzFnaDJCdjBXYkFDRUxFTUNpdFkyQnZjV2JFR0NpdFkyQnZjV2JBQkVMRVFDaXRZMkJ2Y1diRVdDaXRZMkJ2Y1dUQXhBU0UxSVFFME5qSVdGUlFHSWlZUk5EWXlGaFVVQmlJbUJDMzhHZ1BtL2FBNWNqczdjams1Y2pzN2Nqa0NXTGdCT2pCQVFEQXZQajc4L2pCQVFEQXVQejhBQUFNQVcvOTZCRFFFdUFBVkFCMEFKZ0Jqc2dRbktCRVNPYkFFRUxBYjBMQUVFTEFqMEFDd0FFVllzQVF2RzdFRUdENVpzQUJGV0xBUEx4dXhEeEErV2JJakFRb3JXQ0hZRy9SWnNpRWpCQkVTT2JBaEVMQVkwTEFFRUxJYkFRb3JXQ0hZRy9SWnNoa2JEeEVTT2JBWkVMQWcwREF4RXpRMk5qTXlGemN6QnhZUkZBWUdJeUluQnlNM0poTVVGd0VtSXlJR0JUUW5BUll6TWpZMVczdmhqMjVlU1h4bXczemdrR2hXU254a3pibGhBVmMrU0lxb0FtWlgvcXczUW91bkFpZWYvWXNxbE0yYS9zQ2Uvb2tqbGN1VkFUZkNid0sySU5xMXRtLzlVQm5idVFBQ0FKWCtZQVFuQmdBQUR3QWFBR1N5R0JzY0VSSTVzQmdRc0F6UUFMQUlMN0FBUlZpd0RDOGJzUXdZUGxtd0FFVllzQVl2RzdFR0VqNVpzQUJGV0xBREx4dXhBeEErV2JJRkRBTVJFam15Q2d3REVSSTVzQXdRc2hNQkNpdFlJZGdiOUZtd0F4Q3lHQUVLSzFnaDJCdjBXVEF4QVJRQ0l5SW5FU01STXhFMk16SVNFU2MwSmlNaUJ4RVdNekkyQkNmaXdjVnh1Ymx4d3NQanVaeUlxRlJUcTRXZEFoSDMvdEo5L2ZjSG9QM0toUDdhL3ZvRXQ5U1YvZnVVMHdBQUFnQWRBQUFGaUFXd0FCTUFGd0JyQUxBQVJWaXdEeThic1E4Y1BsbXdBRVZZc0Fndkc3RUlFRDVac2hRSUR4RVNPYkFVTDdJUUZBOFJFam13RUMrd0FOQ3dFQkN5RndFS0sxZ2gyQnYwV2JBRDBMQUlFTEFGMExBVUVMSUhBUW9yV0NIWUcvUlpzQmNRc0FyUXNCQVFzQTNRc0E4UXNCTFFNREVCTXhVakVTTVJJUkVqRVNNMU14RXpFU0VSTXdFaE5TRUZBb2FHd2YwandZYUd3UUxkd2Z4aUF0MzlJd1NPanZ3QUFxSDlYd1FBamdFaS90NEJJdjJPd2dBQkFKc0FBQUZWQkRvQUF3QWRBTEFBUlZpd0FpOGJzUUlZUGxtd0FFVllzQUF2RzdFQUVENVpNREVoSXhFekFWVzZ1Z1E2QUFBQkFKb0FBQVEvQkRvQURBQm9BTEFBUlZpd0JDOGJzUVFZUGxtd0FFVllzQWd2RzdFSUdENVpzQUJGV0xBQ0x4dXhBaEErV2JBQVJWaXdDeThic1FzUVBsbXdBaEN3QnRDd0JpK3lud1lCWGJTL0JzOEdBbDJ5THdZQlhiTC9CZ0Zkc2dFQkNpdFlJZGdiOUZteUNnRUdFUkk1TURFQkl4RWpFVE1STXdFekFRRWpBYjlydXJwYkFZM2YvandCNk9rQnpmNHpCRHIrTmdISy9mUDkwd0FBQVFBaUFBQUVHd1d3QUEwQVd3Q3dBRVZZc0F3dkc3RU1IRDVac0FCRldMQUdMeHV4QmhBK1diSUJEQVlSRWptd0FTK3dBTkN3QVJDeUFnRUtLMWdoMkJ2MFdiQUQwTEFHRUxJRUFRb3JXQ0hZRy9SWnNBTVFzQWpRc0FuUXNBQVFzQXZRc0FyUU1ERUJKUlVGRVNFVklSRUhOVGNSTXdGcEFRZisrUUt5L0kyR2hzRURTMVI5VlAzUG5RS1JLbjBxQXFJQUFBRUFJZ0FBQWdvR0FBQUxBRW9Bc0FCRldMQUtMeHV4Q2g0K1diQUFSVml3QkM4YnNRUVFQbG15QVFRS0VSSTVzQUV2c0FEUXNBRVFzZ0lCQ2l0WUlkZ2I5Rm13QTlDd0J0Q3dCOUN3QUJDd0NkQ3dDTkF3TVFFM0ZRY1JJeEVITlRjUk13RnNucDY2a0pDNkEyVTllejM5RmdLak4zczNBdUlBQVFDaS9rc0U4UVd3QUJNQVdySUdGQlVSRWprQXNBQkZXTEFBTHh1eEFCdytXYkFBUlZpd0VDOGJzUkFjUGxtd0FFVllzQVF2RzdFRUVqNVpzQUJGV0xBT0x4dXhEaEErV2JBRUVMSUpBUW9yV0NIWUcvUlpzZzBPRUJFU09iSVNEZ0FSRWprd01RRVJGQVlqSWljM0ZqTXlOVFVCRVNNUk13RVJCUEdybkQwMkRpVTlpUDB6d01BQ3pRV3crZjJvdWhLYUR0QkhCR3I3bGdXdys1Z0VhQUFBQVFDUi9rc0Q4QVJPQUJvQVliSU5HeHdSRWprQXNBQkZXTEFETHh1eEF4ZytXYkFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQW92RzdFS0VqNVpzQUJGV0xBWUx4dXhHQkErV2JJQkdBTVJFam13Q2hDeUR3RUtLMWdoMkJ2MFdiQURFTElWQVFvcldDSFlHL1JaTURFQkZ6WXpNaFlYRVJRR0l5SW5OeFl6TWpVUk5DWWpJZ2NSSXhFQk53MTB5N080QXFlYlBUWU9JMEtKYjMydlVib0VPcHF1ME12ODlLUzRFcDBOd2dMM2k0Q0YvTlFFT2dBQ0FHai82d2NKQmNRQUZ3QWpBSkd5QVNRbEVSSTVzQUVRc0JyUUFMQUFSVml3REM4YnNRd2NQbG13QUVWWXNBNHZHN0VPSEQ1WnNBQkZXTEFBTHh1eEFCQStXYkFBUlZpd0F5OGJzUU1RUGxtd0RoQ3lFQUVLSzFnaDJCdjBXYklUQUE0UkVqbXdFeSt5RkFFS0sxZ2gyQnYwV2JBQUVMSVdBUW9yV0NIWUcvUlpzQU1Rc2hnQkNpdFlJZGdiOUZtd0RCQ3lIUUVLSzFnaDJCdjBXVEF4SVNFR0l5SW1BaWNSTkJJMk16SVhJUlVoRVNFVklSRWhCVEkzRVNZaklnWUhFUlFXQnduOHNMSnlvdjZNQVl2K29ueXFBMGI5TFFKMy9Za0MzZnVNY1dadGJLM0NBc01WbGdFUHF3RTFyQUVSbHhTZS9peWQvZndiRGdTT0QrWFAvc2ZUNndBQUF3QmgvK3dIQUFST0FDQUFMQUEwQUpheUJqVTJFUkk1c0FZUXNDYlFzQVlRc0REUUFMQUFSVml3QkM4YnNRUVlQbG13QUVWWXNBb3ZHN0VLR0Q1WnNBQkZXTEFYTHh1eEZ4QStXYkFBUlZpd0hTOGJzUjBRUGxteUJ3b1hFUkk1c2pFS0Z4RVNPYkF4TDdJT0FRb3JXQ0hZRy9SWnNCY1FzaElCQ2l0WUlkZ2I5Rm15RkFvWEVSSTVzaG9LRnhFU09iQWswTEFFRUxJcUFRb3JXQ0hZRy9SWnNDM1FNREVUTkRZMk16SVdGelkyTXpJV0ZSVWhGaFl6TWpjWEJpTWlKaWNHQmlNaUFEVVhGQll6TWpZMU5DWWpJZ1lsSWdZSElUVTBKbUY1MjQ2SnlUMUJ4SERQNnYweUI2U0d2SGhLaWZXSHpUOCt4NGJjL3ZpNW9JdUpvS0dLaDZJRUxXT1dGZ0lPaVFJbm9QNkpkV1JtYy83cmRLckZiSDZFY0dSamNRRXcvZ20zMk5mT3R0blcxcU9LR24yV0FBQUJBS0FBQUFLQ0JoVUFEQUF5c2dNTkRoRVNPUUN3QUVWWXNBUXZHN0VFSGo1WnNBQkZXTEFBTHh1eEFCQStXYkFFRUxJSkFRb3JXQ0hZRy9SWk1ERXpFVFkyTXpJWEJ5WWpJaFVSb0FHd29qdFVGeWd6dHdTdXFiNFZqZ3ZkKzJBQUFBSUFYZi9zQlJJRnhBQVhBQjhBVzdJQUlDRVJFam13R05BQXNBQkZXTEFRTHh1eEVCdytXYkFBUlZpd0FDOGJzUUFRUGxteUJSQUFFUkk1c0FVdnNCQVFzZ2tCQ2l0WUlkZ2I5Rm13QUJDeUdBRUtLMWdoMkJ2MFdiQUZFTEliQVFvcldDSFlHL1JaTURFRklBQVJOU0UxRUFJaklnY0hKemMyTXlBQUVSVVVBZ1FuTWhJM0lSVVVGZ0s1L3VQK3dRUDA5TjJsaXowdkZwN29BUzRCWkp6KzZxZXAzZy84ejlNVUFWa0JSWFVIQVFJQkhEb2FqdzFZL29mK3NWVEYvcisybmdFRjJ5TGE1QUFCLytUK1N3SzhCaFVBSGdCeHNoUWZJQkVTT1FDd0FFVllzQlV2RzdFVkhqNVpzQUJGV0xBUUx4dXhFQmcrV2JBQVJWaXdIUzhic1IwWVBsbXdBRVZZc0FVdkc3RUZFajVac0IwUXNnQUJDaXRZSWRnYjlGbXdCUkN5Q2dFS0sxZ2gyQnYwV2JBQUVMQU8wTEFQMExBVkVMSWFBUW9yV0NIWUcvUlpNREVCSXhFVUJpTWlKemNXTXpJMk5SRWpOVE0xTmpZek1oY0hKaU1pQnhVekFtRExxSm85TWc0ZVEwRkhxNnNDcjZFN1ZCWW1QS3NFeXdPcisvNm50eEtURFdoY0JBU1BlS2U4RlpNS3czb0FBQUlBWmYvc0JaMEdOd0FYQUNVQVU3SUVKaWNSRWptd0JCQ3dJdEFBc0FCRldMQU5MeHV4RFJ3K1diQUFSVml3QkM4YnNRUVFQbG15RHcwRUVSSTVzQThRc0JYUXNBMFFzaHNCQ2l0WUlkZ2I5Rm13QkJDeUlnRUtLMWdoMkJ2MFdUQXhBUlFDQkNNaUpBSW5OVFFTSkRNeUZ6WTJOVE1RQlJZWEJ4QUNJeUlDQnhVVUVqTXlFaEVFK0pEKytMQ3IvdmFWQVpJQkM2endtMkJkcC83NVlRRyt6NzIyMFFQVHViL0xBcW5XL3NHb3FBRSt6MlRTQVVHc213ZURoUDZ6UGF6MkJBRUNBUmIrNi9acisvN2hBUm9CQVFBQUFnQmIvK3dFdWdTd0FCWUFJd0JUc2hNa0pSRVNPYkFURUxBYTBBQ3dBRVZZc0FRdkc3RUVHRDVac0FCRldMQVRMeHV4RXhBK1diSUdCQk1SRWptd0JoQ3dETkN3RXhDeUdnRUtLMWdoMkJ2MFdiQUVFTEloQVFvcldDSFlHL1JaTURFVE5EWTJNeklYTmpZMU14QUhGaFVWRkFZR0l5SUFOUmNVRmpNeU5qVTFOQ1lqSWdaYmUrR1B6NGhIUUpiUFNYemdrTjcrOGJtbmpZdW5xWXVLcUFJbm4vMkxpZ2hrZ1A3ZE00cXBGcDcraVFFeit3bTAydHU1RUxYYTJnQUFBUUNNLyt3R0hRWUNBQm9BVExJTUd4d1JFamtBc0FCRldMQVNMeHV4RWh3K1diQUFSVml3R2k4YnNSb2NQbG13QUVWWXNBMHZHN0VORUQ1WnNnRU5HaEVTT2JBQkVMQUkwTEFORUxJV0FRb3JXQ0hZRy9SWk1ERUJGVFkyTlRNVUJnY1JCZ0lIQnlJQUp4RXpFUlFXTXpJMk5SRUVxbk5objdIQ0FmVFRTZS8rNUFLK3JxR2pyUVd3MVF1Sms5TFJEUDEreC83OEZnUUJBdUlENFB3bW5xK3VuZ1BiQUFFQWlQL3NCUThFa0FBWkFHQ3lCeG9iRVJJNUFMQUFSVml3RXk4YnNSTVlQbG13QUVWWXNBMHZHN0VOR0Q1WnNBQkZXTEFJTHh1eENCQStXYkFBUlZpd0JTOGJzUVVRUGxteUZRZ1RFUkk1c0JVUXNBUFFzZ1lJRXhFU09iQUlFTElRQVFvcldDSFlHL1JaTURFQkZBWUhFU01uQmlNaUppY1JNeEVVTXpJM0VUTVZQZ0kxQlErVG9MQUViTkd0dFFHNXlOUkd1VVJFSFFTUXRKTUUvTHRyZjhuRkFzRDlSZmFlQXhPREFpTkliQUFCLzdUK1N3RmxCRG9BRFFBb0FMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNBUXZHN0VFRWo1WnNna0JDaXRZSWRnYjlGa3dNUUVSRkFZaklpYzNGak15TmpVUkFXV3FtRHMwRGg1RFFVZ0VPdnR0cXJJU2t3MW9YQVNUQUFJQVl2L3NBK2tFVHdBVUFCd0FaYklJSFI0UkVqbXdDQkN3RmRBQXNBQkZXTEFBTHh1eEFCZytXYkFBUlZpd0NDOGJzUWdRUGxteURRQUlFUkk1c0EwdnNBQVFzaEFCQ2l0WUlkZ2I5Rm15RWdBSUVSSTVzQWdRc2hVQkNpdFlJZGdiOUZtd0RSQ3lHQUVLSzFnaDJCdjBXVEF4QVRJQUZSVVVCZ1luSWlZMU5TRW1KaU1pQnljMkFUSTJOeUVWRkJZQi85d0JEbnpZZXREcEFzMEhvWWk2ZTBtTUFRNWlseFg5ODRrRVQvN1UrU1NWK0kwQi91bDBxTWhzZlliOE5hU0pHbjJXQUFFQXFRVGtBd1lHQUFBSUFEUUFzQVF2c0FmUXNBY3Z0QThISHdjQ1hiSUZCQWNSRWprWnNBVXZHTEFCMEJtd0FTOFlzQVFRc0FMUXNnTUVCeEVTT1RBeEFSVWpKd2NqTlJNekF3YVpscFdaOW5BRTdncXFxZ3dCRUFBQUFRQ01CT01DOWdYL0FBZ0FJQUN3QkMrd0FkQ3dBUyswRHdFZkFRSmRzZ0FFQVJFU09iQUkwTEFJTHpBeEFUY3pGUU1qQXpVekFjQ1dvUDV4KzUwRlZhb0svdTRCRWdyLy93QjRCU0VEUWdXd0FRWUFjQUFBQUFvQXNBRXZzUUlEOURBeEFBRUFnUVRMQXRnRjF3QU1BQ2F5Q1EwT0VSSTVBTEFETDdJUEF3RmRzZ2tFQ2l0WUlkZ2I5Rm13QnRDd0JpK3dETkF3TVFFVUJpQW1OVE1VRmpNeU5qVUMyS1grOUthWFRFbEdUd1hYZVpPVWVFWlBUa2NBQVFDTkJPNEJhQVhDQUFnQUdMSUNDUW9SRWprQXNBY3ZzZ0lGQ2l0WUlkZ2I5Rmt3TVJNME5qSVdGQVlpSm8wM2JEZzRiRGNGVnkwK1BsbzhQQUFDQUhrRXRBSW5CbEFBQ1FBVUFDcXlBeFVXRVJJNXNBTVFzQTNRQUxBREw3QUgwTEFITDdJL0J3RmRzQU1Rc0EzUXNBY1FzQkxRTURFQkZBWWpJaVkwTmpJV0JSUVdNekkyTkNZaklnWUNKM3hiWEh0N3VIdit0VU14TUVSRE1USkNCWUJYZFhhc2VucFdMMFJDWWtWR0FBQUJBREwrVHdHU0FEZ0FFQUF1c2dVUkVoRVNPUUN3RUMrd0FFVllzQW92RzdFS0VqNVpzZ1VEQ2l0WUlkZ2I5Rm0yRHhBZkVDOFFBMTB3TVNFSEJoVVVNekkzRndZaklpWTFORFkzQVg0NmNVNHdOQTFHV2xsbmhuc3RXMVpJR25rc2FGWlptamdBQUFFQWV3VFpBejRGNkFBWEFENEFzQU12c0FqUXNBZ3Z0QThJSHdnQ1hiQURFTEFMMExBTEw3QUlFTElQQXdvcldDSFlHL1Jac0FNUXNoUURDaXRZSWRnYjlGbXdEeEN3RjlBd01RRVVCaU1pTGdJaklnWVZKelEyTXpJZUFqTXlOalVEUG50Y0tUeGhLeHdwT254NVhTTTRZRE1mS3prRjNHeUdGRDROUHpFSGE0d1VPaEpFTFFBQ0FGNEUwQU1zQmY4QUF3QUhBRHNBc0FJdnNBRFFzQUF2dEE4QUh3QUNYYkFDRUxBRDBCbXdBeThZc0FBUXNBWFFzQVV2c0FJUXNBYlFzQVl2c0FNUXNBZlFHYkFITHhnd01RRXpBU01ETXdNakFsM1Avdk9wYmNYYWxnWC8vdEVCTC83UkFBQUNBSDcrYXdIVi83VUFDd0FXQURRQXNBTXZRQXNBQXhBRElBTXdBMEFEQlYyd0NkQ3dDUzlBQ1RBSlFBbFFDV0FKQkYyeUFBa0JYYkFPMExBREVMQVUwREF4RnpRMk16SVdGUlFHSXlJbU54UVdNalkxTkNZaklnWitaRXBIWW1CSlRHSlhORVl3TUNNbE12SkdZV0JIUmwxZVJTTXdNQ01rTWpRQUFmeW5CTmorU0FYK0FBTUFIZ0N3QVMrd0FOQVpzQUF2R0xBQkVMQUMwTEFDTDdRUEFoOENBbDB3TVFFakFUUCtTSi8rL3VBRTJBRW1BQUg5YndUWS94QUYvZ0FEQUI0QXNBSXZzQUhRc0FFdnRBOEJId0VDWGJBQ0VMQUQwQm13QXk4WU1ERUJNd0VqL2pEZy92U1ZCZjcrMnYvLy9Jc0UyZjlPQmVnQUJ3Q2svQkFBQUFBQi9WNEUyZjZVQm5RQURnQXVBTEFBTDdJUEFBRmRzQWZRc0FjdlFBa1BCeDhITHdjL0J3UmRzQWJRc2dFQUJoRVNPYklOQUFjUkVqa3dNUUVuTmpZMEppTTNNaFlWRkFZSEIvMTBBVXRHVzBzSGxacE9UUUVFMlprRkhrNG5hbWRWUFZBTFJ3QUMvQ2NFNVA4SEJlNEFBd0FIQURjQXNBRXZzQURRR2JBQUx4aXdBUkN3QmRDd0JTK3dCdEN3QmkrMkR3WWZCaThHQTEyd0E5Q3dBeSt3QUJDd0JOQVpzQVF2R0RBeEFTTUJNd0VqQXpQK0Fxbit6dUVCLzViMnpnVGtBUXIrOWdFS0FBSDlPUDZpL2hQL2RnQUlBQkVBc0FJdnNnY0ZDaXRZSWRnYjlGa3dNUVUwTmpJV0ZBWWlKdjA0TjJ3NE9HdzM5UzArUGxvOFBBQUFBUUMzQk80Qm13WS9BQU1BSFFDd0FpK3dBTkN3QUMreUR3QUJYYklEQWdBUkVqa1pzQU12R0RBeEV6TURJKzJ1ZEhBR1AvNnZBQUFEQUhFRThBT0RCb2dBQXdBTUFCVUFOd0N3Q3krd0F0Q3dBaSt3QWRDd0FTK3dBaEN3QTlBWnNBTXZHTEFMRUxJR0JRb3JXQ0hZRy9SWnNBL1FzQXNRc0JUUXNCUXZNREVCTXdNakJUUTJNaFlVQmlJbUpUUTJNaFlVQmlJbUFlRzhaWWYrd0Rkc09EaHNOd0kzTjJ3NE9HdzNCb2orK0NVdFBUMWFQRHdyTFQ0K1dqdzgvLzhBa3dKckFYa0RTUUVHQUhnQUFBQUdBTEFDTHpBeEFBRUFzUUFBQkRBRnNBQUZBQ3NBc0FCRldMQUVMeHV4QkJ3K1diQUFSVml3QWk4YnNRSVFQbG13QkJDeUFBRUtLMWdoMkJ2MFdUQXhBU0VSSXhFaEJERDlRc0VEZndVUyt1NEZzQUFDQUI4QUFBVnpCYkFBQXdBR0FDOEFzQUJGV0xBQUx4dXhBQncrV2JBQVJWaXdBaThic1FJUVBsbXlCQUVLSzFnaDJCdjBXYklHQWdBUkVqa3dNUUV6QVNFbElRRUNocW9DUS9xc0FRWURUUDVuQmJENlVKMEVLQUFEQUdmLzdBVDZCY1FBQXdBVkFDTUFkN0lJSkNVUkVqbXdDQkN3QWRDd0NCQ3dJTkFBc0FCRldMQVJMeHV4RVJ3K1diQUFSVml3Q0M4YnNRZ1FQbG15QWdnUkVSSTVzQUl2c3M4Q0FWMnkvd0lCWGJJdkFnRmR0TDhDendJQ2NiSUJBUW9yV0NIWUcvUlpzQkVRc2hrQkNpdFlJZGdiOUZtd0NCQ3lJQUVLSzFnaDJCdjBXVEF4QVNFMUlRVVVBZ1FqSWlRQ0p6VTBFaVF6TWdRU0Z3Y1FBaU1pQWdjVkZCSXpNaEkzQThEOSt3SUZBVHFQL3ZpeHJQNzJrd0tTQVF1c3J3RUlrUUsvMEx1MjBRUFJ1N3JNQXdLVG1JTFYvc0txcVFFNXptblNBVUtycVA3Rnp3c0JBd0VWL3V2MmEvcis0QUVQL1FBQkFESUFBQVVEQmJBQUJnQXhBTEFBUlZpd0F5OGJzUU1jUGxtd0FFVllzQUV2RzdFQkVENVpzQUJGV0xBRkx4dXhCUkErV2JJQUF3RVJFamt3TVFFQkl3RXpBU01DbXY1bXpnSVNyQUlUendTSiszY0ZzUHBRQUFBREFIZ0FBQVFoQmJBQUF3QUhBQXNBVHdDd0FFVllzQWd2RzdFSUhENVpzQUJGV0xBQ0x4dXhBaEErV2JJQUFRb3JXQ0hZRy9SWnNBSVFzQVhRc0FVdnNpOEZBVjJ5QmdFS0sxZ2gyQnYwV2JBSUVMSUtBUW9yV0NIWUcvUlpNREUzSVJVaEV5RVZJUU1oRlNGNEE2bjhWMWNDOHYwT1V3T1UvR3lkblFNL25RTU9uZ0FCQUxJQUFBVUJCYkFBQndBNEFMQUFSVml3Qmk4YnNRWWNQbG13QUVWWXNBQXZHN0VBRUQ1WnNBQkZXTEFFTHh1eEJCQStXYkFHRUxJQ0FRb3JXQ0hZRy9SWk1ERWhJeEVoRVNNUklRVUJ3ZjB5d0FSUEJSTDY3Z1d3QUFFQVJRQUFCRVFGc0FBTUFEd0FzQUJGV0xBSUx4dXhDQncrV2JBQVJWaXdBeThic1FNUVBsbXlBUUVLSzFnaDJCdjBXYkFGMExBSUVMSUtBUW9yV0NIWUcvUlpzQWZRTURFQkFTRVZJVFVCQVRVaEZTRUJBdkwrUXdNUC9BRUI0ZjRmQTg3OUpBRzdBczc5ejUyUEFrb0NSNUNlL2RRQUFBTUFUUUFBQlhRRnNBQVVBQnNBSXdCc3Nnb2tKUkVTT2JBS0VMQVYwTEFLRUxBYzBBQ3dBRVZZc0JNdkc3RVRIRDVac0FCRldMQUpMeHV4Q1JBK1diSVNFd2tSRWptd0VpK3dBTkN5Q0FrVEVSSTVzQWd2c0F2UXNBZ1FzaDBCQ2l0WUlkZ2I5Rm13RmRDd0VoQ3lGZ0VLSzFnaDJCdjBXYkFjMERBeEFUSUVGaFVVQmdRakZTTTFJaVFtRURZMk16VXpBeEVqSWdZUUZnRVJNekkyTlRRbUEwS2dBUU9Qa3Y4QW9NS2kvdjZQa2YrandzSUZyTVBDQVhRRXJNUERCUGVNL0p1ZC9ZdXZyNDM2QVRqOWpMbjduZ01LMHY2WTBBTUsvUGJSdGJQUkFBQUJBRm9BQUFVaEJiQUFHQUJjc2dBWkdoRVNPUUN3QUVWWXNBUXZHN0VFSEQ1WnNBQkZXTEFSTHh1eEVSdytXYkFBUlZpd0Z5OGJzUmNjUGxtd0FFVllzQXN2RzdFTEVENVpzaFlFQ3hFU09iQVdMN0FBMExBV0VMSU5BUW9yV0NIWUcvUlpzQXJRTURFQk5qWTFFVE1SRkFZR0J4RWpFU1lBSnhFekVSWVdGeEV6QXhhY3JzRi83Wi9CNS83dkE4QUJwWlhCQWdzWDE2b0NEZjN3bi9XVEQvNldBV29YQVNydEFoajk3NlBYR1FPa0FBQUJBSEVBQUFUTEJjUUFKQUJjc2hrbEpoRVNPUUN3QUVWWXNCa3ZHN0VaSEQ1WnNBQkZXTEFPTHh1eERoQStXYkFBUlZpd0l5OGJzU01RUGxtd0RoQ3lFQUVLSzFnaDJCdjBXYkFOMExBQTBMQVpFTElHQVFvcldDSFlHL1Jac0JBUXNDSFFzQ0xRTURFbE5oSTNOVFFtSUFZVkZSUVNGeFVoTlRNbUFqVTFOQkkyTXpJV0VoY1ZGQUlITXhVaEF1R0ttZ1BDL3E3QW5aSCtGTjFxZUkzK29hRDlqZ040YXR6K0hLSWJBUnpxaHVmMit1Vng4UDdZSEtLZFpnRXpvbSs2QVNTZm5QN2t0SUtnL3MxbW5RQUFBZ0JrLytzRWR3Uk9BQllBSVFCOHNoOGlJeEVTT2JBZkVMQVQwQUN3QUVWWXNCTXZHN0VUR0Q1WnNBQkZXTEFXTHh1eEZoZytXYkFBUlZpd0NDOGJzUWdRUGxtd0FFVllzQXd2RzdFTUVENVpzQWdRc2dNQkNpdFlJZGdiOUZteUNoTUlFUkk1c2hVVENCRVNPYkFNRUxJYUFRb3JXQ0hZRy9SWnNCTVFzaDhCQ2l0WUlkZ2I5Rmt3TVFFUkZqTXlOeGNHSXlJbkJpTWlBalUxRUJJek1oYzNBUlFXTXpJM0VTWWpJZ1lEN2dKT0V3OFhNRXFUSm12UndPVGl4TXRyRWYzTWtvZXRVbFdvaHBVRU92empqQVdKSXFXbEFSdjBEd0VJQVQyaGpmMjZyOE82QWI2ODR3QUFBZ0NnL29BRVRRWEVBQlFBS2dCcHNnQXJMQkVTT2JBWTBBQ3dEeSt3QUVWWXNBQXZHN0VBSEQ1WnNBQkZXTEFNTHh1eERCQStXYklvQUF3UkVqbXdLQyt5SlFFS0sxZ2gyQnYwV2JJR0pTZ1JFam15RGd3QUVSSTVzQUFRc2hnQkNpdFlJZGdiOUZtd0RCQ3lId0VLSzFnaDJCdjBXVEF4QVRJV0ZSUUdCeFlXRlJRR0l5SW5FU01STkRZMkFUUW1JeUlHQnhFV0ZqTXlOalUwSmljak5UTXlOZ0pkd2V0aVdIdUQrYzIxZUxwNnp3Rm5pR3RzbGdFc2tGNkdtb3h0bGxWNGZnWEUyNjVibUM0dHc0TE43MS8rTlFXeGJMeHIvbnRtaDQ1ci9NTTBQNkNCZHFVRG1IY0FBUUF1L21BRDN3UTZBQWdBT0xJQUNRb1JFamtBc0FCRldMQUJMeHV4QVJnK1diQUFSVml3Qnk4YnNRY1lQbG13QUVWWXNBUXZHN0VFRWo1WnNnQUhCQkVTT1RBeEFRRXpBUkVqRVFFekFnb0JHTDMraGJyK2hMMEJGQU1tKy8vK0p3SGdBL29BQWdCZy8rd0VKd1ljQUI0QUtnQmVzaFFyTEJFU09iQVVFTEFpMEFDd0FFVllzQU12RzdFREhqNVpzQUJGV0xBVUx4dXhGQkErV2JBREVMSUlBUW9yV0NIWUcvUlpzaHNVQXhFU09iQWJMN0lvQ3dvcldDSFlHL1Jac0F6UXNCUVFzaUlCQ2l0WUlkZ2I5Rmt3TVJNME5qTXlGd2NtSXlJR0ZSUUVFaGNWRkFZR0l5SUFOVFUwRWpjbkppWVRGQll6TWpZMU5DWW5JZ2JkeTYrTGhnS1hmRlpsQWJ2UEJYYmJrZDcrK2J5UUFXTnJQcUdKaUtDcGZZaWtCUFdJbnplZ08wZytiSm4rODhRbm1mT0ZBU2Z5RGFVQkNDTUZKNHo5WTdETHlzYUkyeG5OQUFFQVkvL3NBK3dFVFFBbEFHK3lBeVluRVJJNUFMQUFSVml3RlM4YnNSVVlQbG13QUVWWXNBb3ZHN0VLRUQ1WnNnTUJDaXRZSWRnYjlGbXdDaEN3QnRDd0NoQ3dJdEN3SWkreUx5SUJYYksvSWdGZHNpTUJDaXRZSWRnYjlGbXlEeU1pRVJJNXNoa1ZJaEVTT2JBVkVMSWNBUW9yV0NIWUcvUlpNREVCRkJZek1qWTFNeFFHSXlJbU5UUTNKaVkxTkRZek1oWVZJelFtSXlJR0ZSUXpNeFVqQmdFZWszWnhtN24veHN6NHpWaGk1OHE2K2JtUGEzQ0g5TVRnNmdFd1RXSnVVWnU1c1pPNlFpUjZTWlNtczQ1R1pWdEtvSlFHQUFFQWJmNkJBOE1Gc0FBZkFFdXlDQ0FoRVJJNUFMQVBMN0FBUlZpd0FDOGJzUUFjUGxteUhRRUtLMWdoMkJ2MFdiQUIwTElWSUFBUkVqbXlBaFVBRVJJNXNCVVFzZ2NCQ2l0WUlkZ2I5Rm15SEFBVkVSSTVNREVCRlFFR0JoVVVGaGNYRmhZVkJnWUhKelkyTlRRa0p5WW1OVFFTTndFaE5RUEQvcUtLWmtOUzkxRkhBbXhEWWk4ei9zdzJaMXVTZndFZC9ZTUZzSGorVmFIbGhWcGhHVWdZV0U1RnJEWlVOVlV0UkU0WUxabUJnZ0ZBbGdGRG1BQUJBSkgrWVFQd0JFNEFFZ0JUc2d3VEZCRVNPUUN3QUVWWXNBTXZHN0VER0Q1WnNBQkZXTEFBTHh1eEFCZytXYkFBUlZpd0J5OGJzUWNTUGxtd0FFVllzQkF2RzdFUUVENVpzZ0VRQXhFU09iQURFTElNQVFvcldDSFlHL1JaTURFQkZ6WXpNaFlYRVNNUk5DWWpJZ1lIRVNNUkFUZ0xlTWkrcmdHNWJJQmNnaUs2QkRxSW5NWE0rNlFFVVloOFYwNzg3d1E2QUFBREFIci83QVFTQmNRQURRQVdBQjRBa3JJREh5QVJFam13QXhDd0U5Q3dBeEN3RzlBQXNBQkZXTEFLTHh1eENodytXYkFBUlZpd0F5OGJzUU1RUGxteURnTUtFUkk1c0E0dnNsOE9BVjJ5L3c0QlhiU1BEcDhPQW5HMHZ3N1BEZ0p4c2k4T0FYR3l6dzRCWGJJdkRnRmR0TzhPL3c0Q2NiQUtFTElUQVFvcldDSFlHL1Jac0E0UXNoZ0JDaXRZSWRnYjlGbXdBeEN5R3dFS0sxZ2gyQnYwV1RBeEFSQUNJeUlDQXpVUUVqTXlFaE1GSVRVMEppTWlCaFVGSVJVVUZpQTJOd1FTN04vYjdnVHMzOTdyQlAwaEFpV0xpSWFNQWlYOTI1SUJCSTBDQW9EK3YvNnRBVXdCTk0wQlBRRk8vcnorelN3MzQvSHg0ODhuNWZydzR3QUFBUURELy9RQ1N3UTZBQXdBS0FDd0FFVllzQUF2RzdFQUdENVpzQUJGV0xBSkx4dXhDUkErV2JJRUFRb3JXQ0hZRy9SWk1ERUJFUlFXTXpJM0Z3WWpJaEVSQVh3M1FEQW5BVVpKK1FRNi9OYy9RQXlYRXdFbUF5QUFBUUFsLys4RU93WHVBQm9BVUxJUUd4d1JFamtBc0FBdnNBQkZXTEFMTHh1eEN4QStXYkFBUlZpd0VTOGJzUkVRUGxtd0N4Q3lCd0VLSzFnaDJCdjBXYklRQUFzUkVqbXdFQkN3RTlDd0FCQ3lGd0VLSzFnaDJCdjBXVEF4QVRJV0Z3RVdGak0zRndZaklpWW1Kd01CSXdFbkppWWpCeWMyQVFWaWVDRUJxeFF0SXlZR0pDcE5UajRkNXY3aXpnR0tZQmMxTFM4QktnWHVVRi83cXpNbkE1Z01KVlpRQWxIODlRUUY2emd1QW80TUFBRUFaZjUzQTZrRnhBQXRBRmF5QXk0dkVSSTVBTEFYTDdBQVJWaXdLeThic1NzY1BsbXlBZ0VLSzFnaDJCdjBXYklJTGlzUkVqbXdDQyt5Q1FFS0sxZ2gyQnYwV2JJZUxpc1JFam13SGhDeUR3RUtLMWdoMkJ2MFdiSWxDUWdSRWprd01RRW1JeUlHRlJRaE14VWpCZ1lWRkJZRUZoY1dGUlFHQnljM05qVTBMZ1ExTkRZM0ppWTFOQ1F6TWhjRGNvUmhqYUFCVFlXV3RzZVFBUTk4SUU5b1NHczVNVXptcVhkQnBKWjJnd0VDNUpGd0JRZ2taMVhibUFLY28zQ2RRU1VVTVdsQXB6MVVRRHcrSnk0elFtbVpiNUhMTGlxWVlKKzVKd0FCQUNuLzlBU2tCRG9BRkFCY3Nnc1ZGaEVTT1FDd0FFVllzQk12RzdFVEdENVpzQUJGV0xBS0x4dXhDaEErV2JBQVJWaXdEeThic1E4UVBsbXdFeEN5QUFFS0sxZ2gyQnYwV2JBS0VMSUZBUW9yV0NIWUcvUlpzQUFRc0EzUXNBN1FzQkhRc0JMUU1ERUJJeEVVRmpNeU54Y0dJeUlSRVNFUkl4RWpOU0VFY1p3MlFUQW5BVVpKK2Y1dnVha0VTQU9oL1hKQVFReVhFd0VtQW9mOFh3T2htUUFDQUpIK1lBUWZCRTRBRHdBYkFGZXlFaHdkRVJJNXNCSVFzQURRQUxBQVJWaXdBQzhic1FBWVBsbXdBRVZZc0Fvdkc3RUtFajVac0FCRldMQUhMeHV4QnhBK1diSUpBQWNSRWpteUVnRUtLMWdoMkJ2MFdiQUFFTElZQVFvcldDSFlHL1JaTURFQk1oSVhGeFFDSXlJbkVTTVJORFkyQXhZek1qWTFOQ1lqSWdZVkFsRFA5QXNCNEwvRGNycHh6WVJUcTRlV2tZVjFrQVJPL3ViK1F2RCs2SHo5K0FQa251eUEvTWlUdzhQTjROaXBBQUFCQUdYK2lnUGhCRTRBSWdCSnNnQWpKQkVTT1FDd0ZDK3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQWJMeHV4R3hBK1diQUFFTEFFMExBQUVMSUhBUW9yV0NIWUcvUlpzQnNRc2cwQkNpdFlJZGdiOUZrd01RRXlGaFVqTkNZaklnWVZGUkFGRnhZV0ZRWUdCeWMzTmpVMEppY21BalUxTkRZMkFqMjk1NitHYjRTYkFVQ0dZbEFDWTBwaUx6RkdWdXo0ZDljRVR0VzBib1Bic3lEKy9HTW1IV0JRUDZjK1ZUWThSaXNyRXpRQkFkTXFtUHVKQUFJQVlQL3NCSHNFT2dBUkFCMEFUTElJSGg4UkVqbXdDQkN3RmRBQXNBQkZXTEFRTHh1eEVCZytXYkFBUlZpd0NDOGJzUWdRUGxtd0VCQ3lBQUVLSzFnaDJCdjBXYkFJRUxJVkFRb3JXQ0hZRy9SWnNBQVFzQnZRTURFQklSWVJGUlFHQmlNaUFEVTFORFkyTnlFQkZCWXpNalkxTkNZaklnWUVlLzdreUhyZGpOcis5bmJaakFKQS9KK2dpb3Vmb1l1Sm53T2hsUDd2RVl6cmlBRXYvdzJZOG9nQi9kZTMxOW5Mck03TUFBRUFVZi9zQTlrRU9nQVFBRW15Q2hFU0VSSTVBTEFBUlZpd0R5OGJzUThZUGxtd0FFVllzQWt2RzdFSkVENVpzQThRc2dBQkNpdFlJZGdiOUZtd0NSQ3lCQUVLSzFnaDJCdjBXYkFBRUxBTjBMQU8wREF4QVNFUkZETXlOeGNHSXlJbUp4RWhOU0VEMmY2TmFTc3hLa3hxZlhVQi9xVURpQU9rL1dtRkdvSTBrNUlDazVZQUFRQ1AvK3dEOWdRNkFCSUFQTElPRXhRUkVqa0FzQUJGV0xBQUx4dXhBQmcrV2JBQVJWaXdDQzhic1FnWVBsbXdBRVZZc0E0dkc3RU9FRDVac2dNQkNpdFlJZGdiOUZrd01RRVJFRE15TmpVbUF6TVdFUkFBSXlJbUp4RUJTY21CcWdWMnczSCsvOXJDeUFJRU92MTUvcy82dHVjQklmSCs2Zjc1L3NIZzF3S1hBQUlBVi80aUJVd0VPZ0FaQUNJQVhMSVBJeVFSRWptd0R4Q3dHdEFBc0JndnNBQkZXTEFHTHh1eEJoZytXYkFBUlZpd0VDOGJzUkFZUGxtd0FFVllzQmN2RzdFWEVENVpzQURRc0JjUXNob0JDaXRZSWRnYjlGbXdETkN3RUJDeUlBRUtLMWdoMkJ2MFdUQXhCU1FBTlRRU054Y0dCeFFXRnhFME5qTXlGaFlWRkFBRkVTTVROalkxSmlZakloVUNiUDhBL3V1QmYyV2hDcldtaW5HQzRZTCszdjc3dWJtcXhBV2xna0lSRndFeis2Z0JCMWVGalBXdDVSb0N6R2w5amZpVjgvN1hGZjR6QW1ZVzNxU3AyRklBQUFFQVgvNG9CVU1FT2dBWkFGaXlBQm9iRVJJNUFMQU5MN0FBUlZpd0FDOGJzUUFZUGxtd0FFVllzQVl2RzdFR0dENVpzQUJGV0xBVEx4dXhFeGcrV2JBQVJWaXdEQzhic1F3UVBsbXlBUUVLSzFnaDJCdjBXYkFNRUxBUDBMQUJFTEFZMERBeEFSRTJOalVtQXpNV0VSQUFCUkVqRVNZQUVSRXpFUllXRnhFREhLdkRCWHJDZHY3ai92YTUvLzc3dWdLbW9nUTYvRTRZNWJMb0FSdnMvdW4rL2Y3UUZmNDVBY2thQVRZQkV3SG0vZzdDNUJrRHNRQUJBSHIvN0FZWkJEb0FJd0Jhc2hza0pSRVNPUUN3QUVWWXNBQXZHN0VBR0Q1WnNBQkZXTEFUTHh1eEV4ZytXYkFBUlZpd0dTOGJzUmtRUGxtd0FFVllzQjR2RzdFZUVENVpzZ1VCQ2l0WUlkZ2I5Rm15Q1FBZUVSSTVzQTdRc2hzVEdSRVNPVEF4QVFJSEZCWXpNalkxRVRNUkZoWXpNalkxSmdNekZoRVFBaU1pSndZR0l5SUNFUkEzQWNTS0IzSnFiSEc3QVhGcmFuSUhpc09Iejd6d1ZTbWtkN3pQaHdRNi91WHZ5K090cGdFdC9zNmtxdUxNN3dFYjlQN3EvdTMreis1MWVRRXhBUk1CSCtzQUFBSUFlZi9zQkhrRnhnQWZBQ2dBYnJJVUtTb1JFam13RkJDd0p0QUFzQUJGV0xBWkx4dXhHUncrV2JBQVJWaXdCaThic1FZUVBsbXlIUmtHRVJJNXNCMHZzZ0lCQ2l0WUlkZ2I5Rm15Q3hrR0VSSTVzQVlRc2c4QkNpdFlJZGdiOUZtd0FoQ3dFOUN3SFJDd0k5Q3dHUkN5SmdFS0sxZ2gyQnYwV1RBeEFRWUhGUVlHSXlJbU5SRTNFUlFXTXpJMk5UVW1BRFUwTmpNeUZoVVJOamNCRkJZWEVTWWpJaFVFZVR4VEF1WEl5L2U2akh4MGd0bis4N2lXbjdJL1NQMlVvb29GazVRQ2N4Y0pwdFB1OTljQlJ3TCtzSStia3BpbUh3RWEyYUM3eGJMK29RVVRBVktGdlI0QmFNYkVBQUFCLzlvQUFBUnVCYndBR2dCSnNnQWJIQkVTT1FDd0FFVllzQVF2RzdFRUhENVpzQUJGV0xBWEx4dXhGeHcrV2JBQVJWaXdEUzhic1EwUVBsbXlBQVFORVJJNXNBUVFzZ2tCQ2l0WUlkZ2I5Rm13RXRBd01RRVROall6TWhjSEppTWlCd0VSSXhFQkppTWlCeWMyTXpJV0Z3SWs0U3RyVjBnMEpBMG5SaVQrMTcvKzJDZERKdzBrTkVkWWF5b0RCZ0g3WTFnYmx3aFAvWGY5eGdJOEFvZFBDSlljVkYwQUFnQksvK3dHR3dRNkFCSUFKZ0J3c2dnbktCRVNPYkFJRUxBZTBBQ3dBRVZZc0JFdkc3RVJHRDVac0FCRldMQUdMeHV4QmhBK1diQUFSVml3Q2k4YnNRb1FQbG13RVJDeUFBRUtLMWdoMkJ2MFdiSUlFUVlSRWptd0Q5Q3dFTkN3RmRDd0Z0Q3dDaEN5R3dFS0sxZ2gyQnYwV2JJZkNoRVJFam13Sk5Bd01RRWpGaFVRQWlNaUp3WWpJZ0lSTkRjak5TRUJKaWNoQmdjVUZqTXlOamNSTXhFV0ZqTXlOZ1liaUVDOHEvRlRVL0NxdlVCMEJkSCsvZ1JLL0x0TEJHQllhWEVDdXdKeGFsWmdBNkdzeGY3di9zM3Y3d0V3QVJTL3Nwbjk5cXJIeUtuTDQ2ZWlBUWYrK2FLbjRnQUJBQ3IvOVFXeEJiQUFHQUJoc2hFWkdoRVNPUUN3QUVWWXNCY3ZHN0VYSEQ1WnNBQkZXTEFKTHh1eENSQStXYkFYRUxJQUFRb3JXQ0hZRy9SWnNnUVhDUkVTT2JBRUw3QUpFTElLQVFvcldDSFlHL1Jac0FRUXNoQUJDaXRZSWRnYjlGbXdBQkN3RmRDd0Z0QXdNUUVoRVRZek1nUVFCQ01uTWpZMUppWWpJZ2NSSXhFaE5TRUVsUDMybllUMEFSTCsvTzBDbTVnQ282S1dpc0grWVFScUJSTCtPVER4L2s3amxwR1VqcFl1L1ZvRkVwNEFBQUVBZS8vc0JOd0Z4QUFmQUlheUF5QWhFUkk1QUxBQVJWaXdDeThic1FzY1BsbXdBRVZZc0FNdkc3RURFRDVac0FzUXNBL1FzQXNRc2hJQkNpdFlJZGdiOUZteUZnTUxFUkk1c0JZdnRMOFd6eFlDY2JMUEZnRmRzcDhXQVhHeS94WUJYYkl2RmdGZHNsOFdBWEt5anhZQmNySVhBUW9yV0NIWUcvUlpzQU1Rc2h3QkNpdFlJZGdiOUZtd0F4Q3dIOUF3TVFFR0JDTWdBQkUxTkJJa016SUFGeU1tSmlNaUFnY2hGU0VWRkJJek1qWTNCTndiL3VIdS92Nyt5WThCQzdEb0FSZ1h3Qm1ubDduT0FnSTYvY2JHc3FDckhBSE81L3NCY2dFMmk4a0JOYWYrL2VXc252N3g2cDBDN2Y3b2tiUUFBZ0F4QUFBSU93V3dBQmdBSVFCMHNna2lJeEVTT2JBSkVMQVowQUN3QUVWWXNBQXZHN0VBSEQ1WnNBQkZXTEFJTHh1eENCQStXYkFBUlZpd0VDOGJzUkFRUGxteUFRQUlFUkk1c0FFdnNBQVFzZ29CQ2l0WUlkZ2I5Rm13RUJDeUVnRUtLMWdoMkJ2MFdiQUJFTElaQVFvcldDSFlHL1Jac0JJUXNCclFzQnZRTURFQkVTRVdCQlVVQkFjaEVTRURBZ0lHQnlNMU56NENOeE1CRVNFeU5qVTBKaWNFN2dGcDNnRUcvdjdlL2RQK0FCb1BXYXlRUHloZFpEUUxIZ04zQVYrTW9wMktCYkQ5eXdQd3k4YnpCQVVTL2IvKzN2N2NpUUtkQWdkcjZ2TUN3djB0L2NDZWhJQ2NBZ0FDQUxFQUFBaE5CYkFBRWdBYkFJS3lBUndkRVJJNXNBRVFzQlBRQUxBQVJWaXdFaThic1JJY1BsbXdBRVZZc0FJdkc3RUNIRDVac0FCRldMQVBMeHV4RHhBK1diQUFSVml3REM4YnNRd1FQbG15QUFJUEVSSTVzQUF2c2dRTUFoRVNPYkFFTDdBQUVMSU9BUW9yV0NIWUcvUlpzQVFRc2hNQkNpdFlJZGdiOUZtd0RCQ3lGQUVLSzFnaDJCdjBXVEF4QVNFUk14RWhGZ1FWRkFRSElSRWhFU01STXdFUklUSTJOVFFtSndGeUFzN0FBV3JpQVFIKy85LzkwLzB5d2NFRGpnRmZqcUNZaWdNNUFuZjluZ1BpdmIvcEJBS2MvV1FGc1AwQi9mV09lblNNQXdBQkFENEFBQVhVQmJBQUZRQmRzZzRXRnhFU09RQ3dBRVZZc0JRdkc3RVVIRDVac0FCRldMQUlMeHV4Q0JBK1diQUFSVml3RUM4YnNSQVFQbG13RkJDeUFBRUtLMWdoMkJ2MFdiSUVGQWdSRWptd0JDK3lEUUVLSzFnaDJCdjBXYkFBRUxBUzBMQVQwREF4QVNFUk5qTXlGaGNSSXhFbUppTWlCeEVqRVNFMUlRU20vZkNnci9yeUE4RUJpYVNwcHNEK2FBUm9CUkwrVUNqYTNmNHRBYzZZaGlyOVBnVVNuZ0FCQUxEK21RVC9CYkFBQ3dCSUFMQUpMN0FBUlZpd0FDOGJzUUFjUGxtd0FFVllzQVF2RzdFRUhENVpzQUJGV0xBR0x4dXhCaEErV2JBQVJWaXdDaThic1FvUVBsbXlBZ0VLSzFnaDJCdjBXYkFEMERBeEV6TVJJUkV6RVNFUkl4RWhzTUVDenNEK1FNSCtNZ1d3K3UwRkUvcFEvcGtCWndBQ0FLSUFBQVN4QmJBQURBQVZBRnV5RHhZWEVSSTVzQThRc0FQUUFMQUFSVml3Q3k4YnNRc2NQbG13QUVWWXNBa3ZHN0VKRUQ1WnNBc1FzZ0FCQ2l0WUlkZ2I5Rm15QWdzSkVSSTVzQUl2c2cwQkNpdFlJZGdiOUZtd0NSQ3lEZ0VLSzFnaDJCdjBXVEF4QVNFUklSWUVGUlFFQnlFUklRRVJJVEkyTlRRbUp3UWgvVUlCYXVRQkFQNyszLzNTQTMvOVFnRmZqNStaalFVUy9rd0Q1TVRGNmdRRnNQMFEvZDJZZ0h1T0FnQUNBREwrbWdYSkJiQUFEZ0FWQUZ1eUVoWVhFUkk1c0JJUXNBdlFBTEFFTDdBQVJWaXdDeThic1FzY1BsbXdBRVZZc0FJdkc3RUNFRDVac0FRUXNBSFFzQUlRc2dZQkNpdFlJZGdiOUZtd0RkQ3dEdEN3RDlDd0VOQ3dDeEN5RVFFS0sxZ2gyQnYwV1RBeEFTTVJJUkVqQXpNMkVqY1RJUkV6SVNFUklRTUdBZ1hIdi92cndBRjNYbThPSUFObnZ2dTdBc2IrRXhVTmEvNmJBV1grbWdJRGFnRmwxUUp2K3UwRWRmNVUrLzZlQUFFQUd3QUFCelVGc0FBVkFJWUFzQUJGV0xBSkx4dXhDUncrV2JBQVJWaXdEUzhic1EwY1BsbXdBRVZZc0JFdkc3RVJIRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3Qmk4YnNRWVFQbG13QUVWWXNCUXZHN0VVRUQ1WnNBSVFzQkRRc0JBdnNpOFFBVjJ5enhBQlhiSUFBUW9yV0NIWUcvUlpzQVRRc2dnUUFCRVNPYkFRRUxBTDBMSVRBQkFSRWprd01RRWpFU01SSXdFakFRRXpBVE1STXhFekFUTUJBU01FcUp6QXBmNWs4QUhxL2p6akFZT2x3SjRCZytMK1BBSHE3d0tZL1dnQ21QMW9Bd0FDc1AySUFuajlpQUo0L1ZIOC93QUJBRkQvN0FScUJjUUFLQUJ5c2dNcEtoRVNPUUN3QUVWWXNBc3ZHN0VMSEQ1WnNBQkZXTEFXTHh1eEZoQStXYkFMRUxJREFRb3JXQ0hZRy9SWnNBc1FzQWJRc2lVV0N4RVNPYkFsTDdMUEpRRmRzcDhsQVhHeUpBRUtLMWdoMkJ2MFdiSVJKQ1VSRWptd0ZoQ3dHOUN3RmhDeUhnRUtLMWdoMkJ2MFdUQXhBVFFtSXlJR0ZTTTBOall6TWdRVkZBWUhCQlVVQkNNaUppWTFNeFFXTXpJMk5SQWxJelV6TmpZRGxLbVpnSzNBZitTSzlBRU9mRzhCQWY3YzlKSHRoTUMyakoyNy9zTzBzNUtXQkNsMGlZMW9kTGhuMjhObHBqQlcvOFRtWjc2RGM1bVNlQUVBQlo0RGZnQUJBTEVBQUFUL0JiQUFDUUJkQUxBQVJWaXdBQzhic1FBY1BsbXdBRVZZc0Fjdkc3RUhIRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3QlM4YnNRVVFQbG15QkFBQ0VSSTVRQW1LQkpvRXFnUzZCQVJkc2drQUFoRVNPVUFKaFFtVkNhVUp0UWtFWFRBeEFUTVJJeEVCSXhFekVRUS93TUQ5TThIQkJiRDZVQVJpKzU0RnNQdWVBQUFCQUM4QUFBVDJCYkFBRVFCTnNnUVNFeEVTT1FDd0FFVllzQUF2RzdFQUhENVpzQUJGV0xBQkx4dXhBUkErV2JBQVJWaXdDUzhic1FrUVBsbXdBQkN5QXdFS0sxZ2gyQnYwV2JBSkVMSUxBUW9yV0NIWUcvUlpNREVCRVNNUklRTUNBZ1lISXpVM1BnSTNFd1Qyd1AzMkdnOVpySkEvS0Yxa05Bc2VCYkQ2VUFVUy9iLyszdjdjaVFLZEFnZHI2dk1Dd2dBQUFRQk4vK3NFeXdXd0FCRUFTcklFRWhNUkVqa0FzQUJGV0xBQkx4dXhBUncrV2JBQVJWaXdFQzhic1JBY1BsbXdBRVZZc0Fjdkc3RUhFRDVac2dBQkJ4RVNPYklMQVFvcldDSFlHL1Jac2c4SEVCRVNPVEF4QVFFekFRNENJeUluTnhjeVB3SUJNd0tkQVUvZi9mMDBXbmxiVHhZR1cya3pHU2IrRU5jQ1l3Tk4rME4wWVRNSm1BUmxORmtFTmdBQUF3QlQvOFFGNHdYc0FCZ0FJUUFxQUZ1eURDc3NFUkk1c0F3UXNDRFFzQXdRc0NMUUFMQUxMN0FYTDdJVkZ3c1JFam13RlMrd0FOQ3lDUXNYRVJJNXNBa3ZzQTNRc0JVUXNoa0JDaXRZSWRnYjlGbXdDUkN5SkFFS0sxZ2gyQnYwV2JBZjBMQVpFTEFpMERBeEFUTVdCQklWRkFJRUJ5TVZJelVqSWlRQ0VCSWtNek0xTXdNaUJoVVVGak16RVRNUk16STJOVFFtSXdONEg2VUJFSmVZL3ZTa0k3b2NwLzd2bDVjQkVhY2N1dGE4MjlxL0dyb2N2OWZYd3dVZUFaais5YVdtL3ZLWEFzVEVtQUVNQVU0QkRKak8vcHZuemM3bEEyZjhtZXZLeU9vQUFBRUFyLzZoQlpjRnNBQUxBRHNBc0FrdnNBQkZXTEFBTHh1eEFCdytXYkFBUlZpd0JDOGJzUVFjUGxtd0FFVllzQW92RzdFS0VENVpzZ0lCQ2l0WUlkZ2I5Rm13QnRBd01STXpFU0VSTXhFekF5TVJJYS9CQXM3QW1SS3QrOWNGc1BydEJSUDY4ZjRBQVY4QUFBRUFsZ0FBQk1nRnNBQVNBRWF5QlJNVUVSSTVBTEFBUlZpd0FDOGJzUUFjUGxtd0FFVllzQW92RzdFS0hENVpzQUJGV0xBQkx4dXhBUkErV2JJUEFBRVJFam13RHkreUJnRUtLMWdoMkJ2MFdUQXhBUkVqRVFZR0l5SW1KeEV6RVJZV016STNFUVRJd1dtc2J2bnlBOEVCaWFPK3hRV3crbEFDV3g0WDJOOEIwLzR5bUlZMkFyWUFBQUVBc0FBQUJ0Y0ZzQUFMQUVnQXNBQkZXTEFBTHh1eEFCdytXYkFBUlZpd0F5OGJzUU1jUGxtd0FFVllzQWN2RzdFSEhENVpzQUJGV0xBSkx4dXhDUkErV2JJQkFRb3JXQ0hZRy9SWnNBWFFzQWJRTURFQkVTRVJNeEVoRVRNUklSRUJjUUgxdndIeXdQblpCYkQ2N1FVVCt1MEZFL3BRQmJBQUFRQ3cvcUVIYWdXd0FBOEFWQUN3Q3krd0FFVllzQUF2RzdFQUhENVpzQUJGV0xBREx4dXhBeHcrV2JBQVJWaXdCeThic1FjY1BsbXdBRVZZc0Ewdkc3RU5FRDVac2dFQkNpdFlJZGdiOUZtd0JkQ3dCdEN3Q2RDd0N0Q3dBdEF3TVFFUklSRXpFU0VSTXhFekF5TVJJUkVCY1FIMXZ3SHl3Sk1TcGZuOUJiRDY3UVVUK3UwRkUvcm4vZ29CWHdXd0FBQUNBQkFBQUFXNEJiQUFEQUFWQUY2eUFSWVhFUkk1c0FFUXNBM1FBTEFBUlZpd0FDOGJzUUFjUGxtd0FFVllzQWt2RzdFSkVENVpzZ0lBQ1JFU09iQUNMN0FBRUxJTEFRb3JXQ0hZRy9SWnNBSVFzZzBCQ2l0WUlkZ2I5Rm13Q1JDeURnRUtLMWdoMkJ2MFdUQXhFeUVSSVRJRUZSUUVCeUVSSVFFUklUSTJOVFFtSnhBQ1d3RmE3d0VFL3Y3aS9kYitaZ0piQVYrT241bU1CYkQ5cnVYR3hlc0RCUmo5cVAzZG1JQjdqZ0lBQUFNQXNnQUFCakFGc0FBS0FCTUFGd0J0c2hJWUdSRVNPYkFTRUxBRzBMQVNFTEFWMEFDd0FFVllzQWt2RzdFSkhENVpzQUJGV0xBV0x4dXhGaHcrV2JBQVJWaXdCeThic1FjUVBsbXdBRVZZc0JRdkc3RVVFRDVac2dBSkJ4RVNPYkFBTDdJTEFRb3JXQ0hZRy9SWnNBY1FzZ3dCQ2l0WUlkZ2I5Rmt3TVFFaEZnUVZGQVFISVJFekVSRWhNalkxTkNZbkFTTVJNd0Z5QVdya0FRRCsvdC85MDhBQlg0K2ZtWTBEVjhEQUExNEQ1TVRGNmdRRnNQMFEvZDJZZ0h1T0F2MUFCYkFBQUFJQW93QUFCTEVGc0FBS0FCTUFUYklORkJVUkVqbXdEUkN3QWRBQXNBQkZXTEFKTHh1eENSdytXYkFBUlZpd0J5OGJzUWNRUGxteUFBa0hFUkk1c0FBdnNnc0JDaXRZSWRnYjlGbXdCeEN5REFFS0sxZ2gyQnYwV1RBeEFTRVdCQlVVQkFjaEVUTVJFU0V5TmpVMEppY0JZd0ZxNUFFQS92N2YvZFBBQVYrUG41bU5BMTRENU1URjZnUUZzUDBRL2QyWWdIdU9BZ0FBQVFDVC8rd0U5QVhFQUI4QWo3SU1JQ0VSRWprQXNBQkZXTEFUTHh1eEV4dytXYkFBUlZpd0hDOGJzUndRUGxtd0FOQ3dIQkN5QXdFS0sxZ2gyQnYwV2JJSUhCTVJFam13Q0MrMDd3ai9DQUp4c3M4SUFWMnlMd2dCY2JTL0NNOElBbkd5bndnQmNiTC9DQUZkc2k4SUFWMnlYd2dCY3JLUENBRnlzZ1lCQ2l0WUlkZ2I5Rm13RXhDeURBRUtLMWdoMkJ2MFdiQVRFTEFQMERBeEFSWVdNeklTTnlFMUlUUUNJeUlHQnlNMkFETXlCQklWRlJRQ0JDTWlKQ2NCVkJ5cm9LM0pBdjNEQWozUHVwYW5HY0VYQVJqb3NBRUxqNDcrL2FqdS91RWJBYzYwa1FFTzhKN3RBUlNjcnVVQkE2Zit5OG1SeWY3TXBmdm5BQUlBdC8vc0J0b0Z4QUFYQUNVQW9iSWhKaWNSRWptd0lSQ3dFdEFBc0FCRldMQVRMeHV4RXh3K1diQUFSVml3RFM4YnNRMGNQbG13QUVWWXNBUXZHN0VFRUQ1WnNBQkZXTEFLTHh1eENoQStXYklQQ2cwUkVqbXdEeSt5WHc4QlhiTC9Ed0ZkdEU4UFh3OENjYlNQRDU4UEFuR3lMdzhCY2JMUER3RmRzaThQQVYyeXp3OEJjYklJQVFvcldDSFlHL1Jac0JNUXNoc0JDaXRZSWRnYjlGbXdCQkN5SWdFS0sxZ2gyQnYwV1RBeEFSUUNCQ01pSkFJbkl4RWpFVE1STXpZU0pETXlCQklWSnhBQ0l5SUNCeFVVRWpNeUVqY0cycEQrK0xDbS92bVZDTkhBd05BRGtBRUtySzhCQzVDLzBMdTIwUVBUdWJyTUF3S3AxdjdCcUtBQktzZjlnd1d3L1dUT0FUZXJxZjYvMVFJQkF3RVYvdXYyYS92KzRRRVAvUUFBQWdCWkFBQUVaQVd3QUF3QUZRQmhzaEFXRnhFU09iQVFFTEFLMEFDd0FFVllzQW92RzdFS0hENVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdBeThic1FNUVBsbXlFUW9BRVJJNXNCRXZzZ0VCQ2l0WUlkZ2I5Rm15QlFFS0VSSTVzQW9Rc2hJQkNpdFlJZGdiOUZrd01TRVJJUUVqQVNRUk5DUXpJUkVCRkJZWElSRWhJZ1lEby82dy90UE5BVkwrNWdFUjh3SFAvTzJsa3dFYS91K2NwUUkzL2NrQ2JHOEJIdERuK2xBRCtZU2dBUUkrbEFBQ0FHSC83QVFvQmhFQUd3QW9BR0t5SENrcUVSSTVzQndRc0FqUUFMQUFSVml3RWk4YnNSSWVQbG13QUVWWXNBZ3ZHN0VJRUQ1WnNnQVNDQkVTT2JBQUw3SVhBQklSRWpteUR4SVhFUkk1c2hvQUNCRVNPYkljQVFvcldDSFlHL1Jac0FnUXNpTUJDaXRZSWRnYjlGa3dNUUV5RWhVVkZBWUdJeUlBTlRVUUVqYzJOalV6RkFZSEJ3WUdCellYSWdZVkZSUVdNekkyTlRRbUFtZk05WGJka05yKzl2MzNqR0tZY1h5S3BhVVprNitJb0tHSmlxQ2hBL3orNzk4Um1mR0ZBU1AxV2dGVkFaSXNHVWcvZll3ZEh5ZTVtcXFZdDZJUXJzdk14Sm01QUFNQW5RQUFCQ2tFT2dBT0FCWUFIQUNPc2hnZEhoRVNPYkFZRUxBQzBMQVlFTEFXMEFDd0FFVllzQUV2RzdFQkdENVpzQUJGV0xBQUx4dXhBQkErV2JJWEFRQVJFam13RnkrMHZ4ZlBGd0pkdEo4WHJ4Y0NjYkwvRndGZHNnOFhBWEcwTHhjL0Z3SmR0RzhYZnhjQ2NySVBBUW9yV0NIWUcvUlpzZ2dQRnhFU09iQUFFTElRQVFvcldDSFlHL1Jac0FFUXNoc0JDaXRZSWRnYjlGa3dNVE1SSVRJV0ZSUUdCeFlXRlJRR0l3RVJJVEkyTlRRakpUTWdFQ2NqblFHbTJPZGFXR0ozMjhqKzBBRXlkSFB1L3RYdkFRVDIvUVE2bDVKTGVTQVhobDJWbmdIYi9ycFdUcUtVQVRBRkFBQUJBSm9BQUFOSEJEb0FCUUFyQUxBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0FJdkc3RUNFRDVac0FRUXNnQUJDaXRZSWRnYjlGa3dNUUVoRVNNUklRTkgvZzI2QXEwRG9meGZCRG9BQWdBdS9zSUVrd1E2QUE0QUZBQmJzaElWRmhFU09iQVNFTEFFMEFDd0RDK3dBRVZZc0FRdkc3RUVHRDVac0FCRldMQUtMeHV4Q2hBK1diSUFBUW9yV0NIWUcvUlpzQWJRc0FmUXNBd1FzQW5Rc0FjUXNBL1FzQkRRc0FRUXNoRUJDaXRZSWRnYjlGa3dNVGMzTmhNVElSRXpFU01SSVJFakV5RWhFU0VEQW9OQWJBOFJBcm1MdWYwTnVRRUJMd0h4L3JNTEVaZFBqQUVZQWJEOFhmNHJBVDcrd2dIVkF2aisvdjY5QUFFQUZRQUFCZ1FFT2dBVkFKQUFzQUJGV0xBSkx4dXhDUmcrV2JBQVJWaXdEUzhic1EwWVBsbXdBRVZZc0JFdkc3RVJHRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3Qmk4YnNRWVFQbG13QUVWWXNCUXZHN0VVRUQ1WnNBSVFzQkRRc0JBdnNyOFFBVjJ5L3hBQlhiSXZFQUZkc3M4UUFYR3lBQUVLSzFnaDJCdjBXYkFFMExJSUVBQVJFam13RUJDd0M5Q3lFd0FRRVJJNU1ERUJJeEVqRVNNQkl3RUJNd0V6RVRNUk13RXpBUUVqQSt1Q3VZTCswZW9CZy82aTRBRVhmN2wrQVJuZy9xRUJnK29CMXY0cUFkYitLZ0l3QWdyK1FBSEEva0FCd1AzMS9kRUFBUUJZLyswRHJBUk5BQ1lBaHJJREp5Z1JFamtBc0FCRldMQUtMeHV4Q2hnK1diQUFSVml3RlM4YnNSVVFQbG13Q2hDeUF3RUtLMWdoMkJ2MFdiSWxDaFVSRWptd0pTKzBMeVUvSlFKZHRMOGx6eVVDWGJTZkphOGxBbkcwYnlWL0pRSnlzZ1lsQ2hFU09iSWlBUW9yV0NIWUcvUlpzaEFpSlJFU09iSVpGUW9SRWptd0ZSQ3lIQUVLSzFnaDJCdjBXVEF4QVRRbUl5SUdGU00wTmpNeUZoVVVCZ2NXRlJRR0l5SW1OVE1VRmpNeU5qVTBKaU1qTlRNMkF0OTBaV0tEdU95eHZ0UllVYjNtd0x2enVJMXBhb0p0YzduSnZRTVNURmxtUlkyMG81ZEplaVJBdkpXdXQ1eFBjV0pPVzArY0JRQUJBSndBQUFRQkJEb0FDUUJGQUxBQVJWaXdBQzhic1FBWVBsbXdBRVZZc0Fjdkc3RUhHRDVac0FCRldMQUNMeHV4QWhBK1diQUFSVml3QlM4YnNRVVFQbG15QkFjQ0VSSTVzZ2tIQWhFU09UQXhBVE1SSXhFQkl4RXpFUU5JdWJuK0RibTVCRHI3eGdNVi9Pc0VPdnpxQUFBQkFKd0FBQVEvQkRvQURBQjNBTEFBUlZpd0JDOGJzUVFZUGxtd0FFVllzQWd2RzdFSUdENVpzQUJGV0xBQ0x4dXhBaEErV2JBQVJWaXdDeThic1FzUVBsbXdBaEN3QnRDd0JpK3lud1lCWGJML0JnRmRzczhHQVhHeW53WUJjYlMvQnM4R0FsMnlMd1lCWGJKdkJnRnlzZ0VCQ2l0WUlkZ2I5Rm15Q2dFR0VSSTVNREVCSXhFakVUTVJNd0V6QVFFakFkMkh1cnA1QVd6Zy9sUUIwT3NCemY0ekJEcitOZ0hLL2ZqOXpnQUJBQ3dBQUFRREJEb0FEd0JOc2dRUUVSRVNPUUN3QUVWWXNBQXZHN0VBR0Q1WnNBQkZXTEFCTHh1eEFSQStXYkFBUlZpd0NDOGJzUWdRUGxtd0FCQ3lBd0VLSzFnaDJCdjBXYkFJRUxJS0FRb3JXQ0hZRy9SWk1ERUJFU01SSVFNQ0JnY2pOVGMyTmpjVEJBTzYvcEFXRXBla1NqVmFUZ3NVQkRyN3hnT2gvbXYrNmZBRm93UUt2UDRCendBQUFRQ2RBQUFGVWdRNkFBd0FXUUN3QUVWWXNBRXZHN0VCR0Q1WnNBQkZXTEFMTHh1eEN4ZytXYkFBUlZpd0F5OGJzUU1RUGxtd0FFVllzQVl2RzdFR0VENVpzQUJGV0xBSkx4dXhDUkErV2JJQUN3TVJFam15QlFzREVSSTVzZ2dMQXhFU09UQXhKUUV6RVNNUkFTTUJFU01STXdMN0FYRG51ZjZpZ1A2YnVmRDFBMFg3eGdNVC9PMERKUHpjQkRvQUFRQ2NBQUFFQUFRNkFBc0FpZ0N3QUVWWXNBWXZHN0VHR0Q1WnNBQkZXTEFLTHh1eENoZytXYkFBUlZpd0FDOGJzUUFRUGxtd0FFVllzQVF2RzdFRUVENVpzQUFRc0FuUXNBa3ZzbThKQVYyMHZ3blBDUUpkc2o4SkFYRzB6d25mQ1FKeHNnOEpBWEswbndtdkNRSnhzdjhKQVYyeUR3a0JjYktmQ1FGZHNpOEpBVjIwYndsL0NRSnlzZ0lCQ2l0WUlkZ2I5Rmt3TVNFakVTRVJJeEV6RVNFUk13UUF1ZjRQdXJvQjhia0J6djR5QkRyK0t3SFZBQUVBbkFBQUJBRUVPZ0FIQURnQXNBQkZXTEFHTHh1eEJoZytXYkFBUlZpd0FDOGJzUUFRUGxtd0FFVllzQVF2RzdFRUVENVpzQVlRc2dJQkNpdFlJZGdiOUZrd01TRWpFU0VSSXhFaEJBRzUvZzY2QTJVRG9meGZCRG9BQVFBb0FBQURzQVE2QUFjQU1RQ3dBRVZZc0FZdkc3RUdHRDVac0FCRldMQUNMeHV4QWhBK1diQUdFTElBQVFvcldDSFlHL1Jac0FUUXNBWFFNREVCSVJFakVTRTFJUU93L3BXNS9wd0RpQU9rL0Z3RHBKWUFBQU1BWlA1Z0JXa0dBQUFhQUNVQU1BQi9zZ2N4TWhFU09iQUhFTEFnMExBSEVMQXIwQUN3Qmkrd0FFVllzQU12RzdFREdENVpzQUJGV0xBS0x4dXhDaGcrV2JBQVJWaXdFeThic1JNU1BsbXdBRVZZc0JBdkc3RVFFRDVac0FCRldMQVhMeHV4RnhBK1diQUtFTEllQVFvcldDSFlHL1Jac0JBUXNpTUJDaXRZSWRnYjlGbXdLZEN3SGhDd0x0QXdNUk1RRWpNeUZ4RXpFVFl6TWhJUkZBSWpJaWNSSXhFR0l5SUNOU1UwSmlNaUJ4RVdNekkySlJRV016STNFU1lqSWdaazByZFZRTGxHWHJqUzBiZGhSYmxDVmJiUkJFeU1lejh2TFVOOGlmeHRnbm82THlvOWVvUUNDUUVQQVRZZEFjLytLeVAreXY3YzcvN21JUDVWQWFnZEFScjFEOHpoRlB6eEVjQ3l0cndTQXhFUjJnQUFBUUNjL3I4RWdnUTZBQXNBT3dDd0NDK3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQUVMeHV4QkJnK1diQUFSVml3Q2k4YnNRb1FQbG15QWdFS0sxZ2gyQnYwV2JBRzBEQXhFek1SSVJFekVUTURJeEVobkxvQjhybUJFcWI4MGdRNi9GMERvL3hkL2lnQlFRQUFBUUJuQUFBRHZRUTdBQkFBUnJJRUVSSVJFamtBc0FCRldMQUlMeHV4Q0JnK1diQUFSVml3RHk4YnNROFlQbG13QUVWWXNBQXZHN0VBRUQ1WnNnd1BBQkVTT2JBTUw3SUVBUW9yV0NIWUcvUlpNREVoSXhFR0l5SW1KeEV6RVJZek1qY1JNd085dW5xQXk5VUN1UVhrZ0hxNkFZZ2cwTUFCUS82MzhpQUNHZ0FCQUp3QUFBWGdCRG9BQ3dCSUFMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNBTXZHN0VER0Q1WnNBQkZXTEFITHh1eEJ4ZytXYkFBUlZpd0NTOGJzUWtRUGxteUFRRUtLMWdoMkJ2MFdiQUYwTEFHMERBeEFSRWhFVE1SSVJFekVTRVJBVllCakxrQmk3cjZ2QVE2L0YwRG8veGRBNlA3eGdRNkFBRUFrZjYvQm0wRU9nQVBBRXNBc0F3dnNBQkZXTEFBTHh1eEFCZytXYkFBUlZpd0F5OGJzUU1ZUGxtd0FFVllzQWN2RzdFSEdENVpzQUJGV0xBTkx4dXhEUkErV2JJQkFRb3JXQ0hZRy9SWnNBWFFzQW5RTURFQkVTRVJNeEVoRVRNUk13TWpFU0VSQVVzQmpMa0JpN3FZRXFiNjNBUTYvRjBEby94ZEE2UDhYZjRvQVVFRU9nQUNBQjRBQUFTL0JEb0FEQUFWQUY2eUFSWVhFUkk1c0FFUXNBM1FBTEFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQWt2RzdFSkVENVpzZ0lBQ1JFU09iQUNMN0FBRUxJTEFRb3JXQ0hZRy9SWnNBSVFzZzBCQ2l0WUlkZ2I5Rm13Q1JDeURnRUtLMWdoMkJ2MFdUQXhFeUVSSVJZV0ZSUUdJeUVSSVFFUklUSTJOVFFtSng0QitnRVp1TmJjdXY0Mi9yOEIrZ0VUYUhKdlpBUTYvb3NDdktHaXhBT2kvb3orYVd0ZFduTUNBQUFEQUowQUFBVi9CRG9BQ2dBT0FCY0FiYklHR0JrUkVqbXdCaEN3RE5Dd0JoQ3dFOUFBc0FCRldMQUpMeHV4Q1JnK1diQUFSVml3RFM4YnNRMFlQbG13QUVWWXNBY3ZHN0VIRUQ1WnNBQkZXTEFMTHh1eEN4QStXYklBRFFjUkVqbXdBQyt5RHdFS0sxZ2gyQnYwV2JBSEVMSVFBUW9yV0NIWUcvUlpNREVCSVJZV0ZSUUdJeUVSTXdFakVUTUJFU0V5TmpVMEppY0JWZ0VadU5iY3V2NDJ1UVFwdXJyNzF3RVRhSEp2WkFMRkFyeWhvc1FFT3Z2R0JEcjk5UDVwYTExYWN3SUFBZ0NkQUFBRC9RUTZBQW9BRXdCTnNnY1VGUkVTT2JBSEVMQU4wQUN3QUVWWXNBa3ZHN0VKR0Q1WnNBQkZXTEFITHh1eEJ4QStXYklBQ1FjUkVqbXdBQyt5Q3dFS0sxZ2gyQnYwV2JBSEVMSU1BUW9yV0NIWUcvUlpNREVCSVJZV0ZSUUdJeUVSTXhFUklUSTJOVFFtSndGV0FSbTQxdHk2L2phNUFSTm9jbTlrQXNVQ3ZLR2l4QVE2L2ZUK2FXdGRXbk1DQUFFQVpQL3NBK0FFVGdBZkFJS3lBQ0FoRVJJNUFMQUFSVml3Q0M4YnNRZ1lQbG13QUVWWXNCQXZHN0VRRUQ1WnNBZ1FzZ0FCQ2l0WUlkZ2I5Rm15SFFnUUVSSTVzQjB2dEM4ZFB4MENYYlMvSGM4ZEFsMjBueDJ2SFFKeHRHOGRmeDBDY3JJRENCMFJFam15RkJBSUVSSTVzQkFRc2hjQkNpdFlJZGdiOUZtd0hSQ3lHZ0VLSzFnaDJCdjBXVEF4QVNJR0ZTTTBOall6TWdBVkZSUUdCaU1pSmpVekZCWXpNalkzSVRVaEppWUNDR09Sc0hiRWF0TUJCWGZYaXJUd3NJNW1kNW9NL21vQmxBNldBN1orVmwycVpmN1A5aCtZKzRuZ3AyYUx1S0dZa3JFQUFBSUFuZi9zQmpBRVRnQVVBQjhBbmJJTklDRVJFam13RFJDd0ZkQUFzQUJGV0xBVUx4dXhGQmcrV2JBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0JFdkc3RVJFRDVac0FCRldMQU1MeHV4REJBK1diSUFFUlFSRWptd0FDKzB2d0RQQUFKZHRKOEFyd0FDY2JML0FBRmRzZzhBQVhHMEx3QS9BQUpkdGw4QWJ3Qi9BQU55c2hBQkNpdFlJZGdiOUZtd0RCQ3lHQUVLSzFnaDJCdjBXYkFFRUxJZEFRb3JXQ0hZRy9SWk1ERUJJVFlBTXpJQUZ4Y1VCZ1lqSWdBbklSRWpFVE1CRkJZZ05qVTBKaU1pQmdGV0FRUVZBUW5LMUFFT0N3Rjg0SkRSL3ZZUS92MjV1UUc2cHdFYXBhaU1pcWdDYjlnQkIvN2k1VHFlL29rQkVkcitLUVE2L2RlMDJ0N0dzZDdhQUFBQ0FDOEFBQVBIQkRvQURRQVdBR0d5RkJjWUVSSTVzQlFRc0EzUUFMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNBRXZHN0VCRUQ1WnNBQkZXTEFGTHh1eEJSQStXYklTQUFFUkVqbXdFaSt5QXdFS0sxZ2gyQnYwV2JJSEF3QVJFam13QUJDeUV3RUtLMWdoMkJ2MFdUQXhBUkVqRVNFREl3RW1KalUwTmpjREZCWVhJUkVoSWdZRHg3cis2Zi9JQVJCb2I5NjYzbXhaQVNiKzltZDZCRHI3eGdHbC9sc0J3U2FmYXBTMUFmNjBUMkVCQVdkbEFBSC82UDVMQTk4R0FBQWlBSVN5RFNNa0VSSTVBTEFmTDdBQVJWaXdCQzhic1FRWVBsbXdBRVZZc0Jrdkc3RVpFRDVac0FCRldMQUtMeHV4Q2hJK1diSy9Id0Zkc2k4ZkFWMnlEeDhCWGJJZUdSOFJFam13SGkrd0lkQ3lBUUVLSzFnaDJCdjBXYklDR1FRUkVqbXdDaEN5RHdFS0sxZ2gyQnYwV2JBRUVMSVZBUW9yV0NIWUcvUlpzQUVRc0J2UU1ERUJJUkUyTXlBVEVSUUdJeUluTnhZeU5qVVJOQ1lqSWdZSEVTTVJJelV6TlRNVklRSmovdUo3eFFGWEE2cVlQVFlQSTRKSWFYQmFpQ2E1cEtTNUFSNEV1ZjcrbC81OS9OeXFzaEtURFdoY0F5QjRjbUJPL1AwRXVaaXZyd0FCQUdmLzdBUDNCRTRBSHdDY3NnQWdJUkVTT1FDd0FFVllzQkF2RzdFUUdENVpzQUJGV0xBSUx4dXhDQkErV2JJQUFRb3JXQ0hZRy9SWnNnTUlFQkVTT2JJYkVBZ1JFam13R3krMER4c2ZHd0p5dEw4Ynp4c0NYYlNmRzY4YkFuRzB6eHZmR3dKeHN2OGJBVjJ5RHhzQmNiUXZHejhiQWwyMGJ4dC9Hd0p5c3I4YkFYS3lGQkFiRVJJNXNCQVFzaGNCQ2l0WUlkZ2I5Rm13R3hDeUhBRUtLMWdoMkJ2MFdUQXhKVEkyTnpNT0FpTWlBQkUxTkRZMk16SVdGeU1tSmlNaUJnY2hGU0VXRmdKSVk1UUlzQVY0eEc3ZS92MTEySlMyOFFpd0NJOW9ncG9LQVpUK2JBcVpnM2hhWHFoakFTZ0JBQjZmOTRiYXJtbUhzWjJZb0swQUFnQW5BQUFHaGdRNkFCWUFId0I1c2drZ0lSRVNPYkFKRUxBWDBBQ3dBRVZZc0FBdkc3RUFHRDVac0FCRldMQUlMeHV4Q0JBK1diQUFSVml3RHk4YnNROFFQbG15QVFBSUVSSTVzQUV2c0FBUXNnb0JDaXRZSWRnYjlGbXdEeEN5RVFFS0sxZ2gyQnYwV2JBQkVMSVhBUW9yV0NIWUcvUlpzQWdRc2hnQkNpdFlJZGdiOUZrd01RRVJJUllXRlJRR0J5RVJJUU1DQmdjak5UYzJOamNUQVJFaE1qWTFOQ1luQTk4QkhyYlQwN2YrS2Y2dkZ4U2NwVUUyVlUwTkZ3SzhBUk5sZFhKakJEcitaQU8xbEpPOEF3T2gvbHIrNitRQ293UUtwOU1DRC8zTS9vOXBWbEZnQVFBQUFnQ2NBQUFHcHdRNkFCSUFHd0I3c2dFY0hSRVNPYkFCRUxBVDBBQ3dBRVZZc0FJdkc3RUNHRDVac0FCRldMQVJMeHV4RVJnK1diQUFSVml3Q3k4YnNRc1FQbG13QUVWWXNBOHZHN0VQRUQ1WnNnRVJDeEVTT2JBQkw3QUUwTEFCRUxJTkFRb3JXQ0hZRy9SWnNBUVFzaE1CQ2l0WUlkZ2I5Rm13Q3hDeUZBRUtLMWdoMkJ2MFdUQXhBU0VSTXhFaEZoWVZGQVlqSVJFaEVTTVJNd0VSSVRJMk5UUW1Kd0ZXQWZHNUFTSzAwZG05L2piK0Q3cTZBcW9CRTJWMWNtTUNvUUdaL21NRXNaYVh1d0lLL2ZZRU92M00vbzlwVmxGZ0FRQUIvLzBBQUFQZkJnQUFHUUI1c2d3YUd4RVNPUUN3Rmkrd0FFVllzQVF2RzdFRUdENVpzQUJGV0xBSEx4dXhCeEErV2JBQVJWaXdFQzhic1JBUVBsbXl2eFlCWGJJdkZnRmRzZzhXQVYyeUdSQVdFUkk1c0JrdnNnQUJDaXRZSWRnYjlGbXlBZ1FIRVJJNXNBUVFzZ3dCQ2l0WUlkZ2I5Rm13QUJDd0V0Q3dHUkN3Rk5Bd01RRWhFVFl6SUJNUkl4RW1KaU1pQmdjUkl4RWpOVE0xTXhVaEFubit6SHZGQVZjRHVRRnBiMXFJSnJtUGo3a0JOQVMrL3ZtWC9uMzlOUUxNZFhCZ1R2ejlCTDZYcTZzQUFBRUFuUDZjQkFFRU9nQUxBRVVBc0FndnNBQkZXTEFBTHh1eEFCZytXYkFBUlZpd0F5OGJzUU1ZUGxtd0FFVllzQVV2RzdFRkVENVpzQUJGV0xBSkx4dXhDUkErV2JJQkFRb3JXQ0hZRy9SWk1ERUJFU0VSTXhFaEVTTVJJUkVCVmdIeXVmNnR1ZjZuQkRyOFhRT2orOGIrbkFGa0JEb0FBQUVBblAvc0JuVUZzQUFnQUdDeUJ5RWlFUkk1QUxBQVJWaXdBQzhic1FBY1BsbXdBRVZZc0E0dkc3RU9IRDVac0FCRldMQVhMeHV4Rnh3K1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNnY0FCQkVTT2JJVEFRb3JXQ0hZRy9SWnNCelFNREVCRVJRR0l5SW1Kd1lHSXlJbUp4RXpFUlFXTXpJMk5SRXpFUlFXTXpJMk5SRUdkZUhEYmFzeE5MSnh2ZGNCd1hKaWNvTEhmR2xxZWdXdys5N0czRmRaV1ZmYnd3UW0rOTE3aW9sOEJDUDczWDJJaVgwRUlnQUJBSUgvNndXdEJEb0FIZ0Jnc2dZZklCRVNPUUN3QUVWWXNBQXZHN0VBR0Q1WnNBQkZXTEFNTHh1eERCZytXYkFBUlZpd0ZTOGJzUlVZUGxtd0FFVllzQVF2RzdFRUVENVpzQUJGV0xBSUx4dXhDQkErV2JJR0ZRUVJFam15RVFFS0sxZ2gyQnYwV2JBYTBEQXhBUkVVQmlNaUp3WWpJaVluRVRNUkZoWXpNalkxRVRNUkZCWXpNalkzRVFXdHlxN0dXVi9PcDhBQnVRRmJVMkp2dW1WY1dXVUJCRHI5SjdER2xKVERzQUxjL1NObWRYaG5BdG45SjJkNGRXWUMzUUFDLzl3QUFBUDhCaFlBRVFBYUFIR3lGQnNjRVJJNXNCUVFzQVBRQUxBQVJWaXdEaThic1E0ZVBsbXdBRVZZc0Fndkc3RUlFRDVac2hFT0NCRVNPYkFSTDdJQUFRb3JXQ0hZRy9SWnNnSU9DQkVTT2JBQ0w3QUFFTEFLMExBUkVMQU0wTEFDRUxJU0FRb3JXQ0hZRy9SWnNBZ1FzaE1CQ2l0WUlkZ2I5Rmt3TVFFaEVTRVdGaEFHQnlFUkl6VXpFVE1SSVFFUklUSTJOVFFtSndLVy9yOEJHTHZVMUxmK0tyKy91Z0ZCL3I4QkVtbHhiMlFFT3Y2d0Fzcit0dEVEQkRxWEFVWCt1LzJCL2tWM1pHRjlBZ0FBQVFDMy8rMEdvQVhGQUNZQWg3SWVKeWdSRWprQXNBQkZXTEFGTHh1eEJSdytXYkFBUlZpd0ppOGJzU1ljUGxtd0FFVllzQjB2RzdFZEVENVpzQUJGV0xBakx4dXhJeEErV2JJUUJSMFJFam13RUMrd0FOQ3dCUkN3Q2RDd0JSQ3lEQUVLSzFnaDJCdjBXYkFRRUxJUkFRb3JXQ0hZRy9SWnNCMFFzaFlCQ2l0WUlkZ2I5Rm13SFJDd0dkQ3dFUkN3SWRBd01RRXpOaElrTXpJQUZ5TW1KaU1pQWdjaEZTRVZGQkl6TWpZM013WUVJeUFBRVRVakVTTVJNd0Y0eHdXVEFRYXM1Z0VaR01BWnA1ZTB6d1lDSHYzaXhyS2pxUnpBRy83aDd2Nysvc25Id2NFRFFNRUJKcDcvQU9pc252Nzc0cGNhN2Y3b2s3TG4rd0Z5QVRZVS9WY0ZzQUFCQUpuLzdBV2hCRTRBSkFERXNnTWxKaEVTT1FDd0FFVllzQVF2RzdFRUdENVpzQUJGV0xBa0x4dXhKQmcrV2JBQVJWaXdJUzhic1NFUVBsbXdBRVZZc0J3dkc3RWNFRDVac2c4Y0JCRVNPYkFQTDdTL0Q4OFBBbDIwUHc5UER3Snh0TThQM3c4Q2NiUVBEeDhQQW5LMG53K3ZEd0p4c3Y4UEFWMnlEdzhCY2JRdkR6OFBBbDIwYnc5L0R3SnlzQURRc2dnUEJCRVNPYkFFRUxJTEFRb3JXQ0hZRy9SWnNBOFFzaEFCQ2l0WUlkZ2I5Rm13SEJDeUZBRUtLMWdoMkJ2MFdiSVhIQVFSRWptd0VCQ3dIOUF3TVFFek5oSXpNaFlYSXlZbUl5SUdCeUVWSVJZV016STJOek1PQWlNaUFpY2pFU01STXdGVHZ4RC8wYmJ4Q0xBSWoyaUVtQW9CdGY1TENwbURZNVFJc0FWNHhHN1IvaERBdXJvQ1o5OEJDTnF1YVlleG5wZWdyWGhhWHFoakFRYmUvakFFT2dBQUFnQW9BQUFFNUFXd0FBc0FEZ0JXQUxBQVJWaXdDQzhic1FnY1BsbXdBRVZZc0FJdkc3RUNFRDVac0FCRldMQUdMeHV4QmhBK1diQUFSVml3Q2k4YnNRb1FQbG15RFFnQ0VSSTVzQTB2c2dBQkNpdFlJZGdiOUZtd0JOQ3lEZ2dDRVJJNU1ERUJJeEVqRVNNREl3RXpBU01CSVFNRGlhcThucGpGQWcyckFnVEYvWjhCazhjQnR2NUtBYmIrU2dXdytsQUNXZ0pKQUFBQ0FBOEFBQVFsQkRvQUN3QVFBRllBc0FCRldMQUlMeHV4Q0JnK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBWXZHN0VHRUQ1WnNBQkZXTEFLTHh1eENoQStXYklOQWdnUkVqbXdEUyt5QVFFS0sxZ2gyQnYwV2JBRTBMSVBDQUlSRWprd01RRWpFU01SSXdNakFUTUJJd0VoQXljSEF1MTF1WHgzdlFHNm53Rzl2djRaQVMrQUdCZ0JLZjdYQVNuKzF3UTYrOFlCd1FFN1dWa0FBQUlBeVFBQUJ2VUZzQUFUQUJZQWZBQ3dBRVZZc0FJdkc3RUNIRDVac0FCRldMQVNMeHV4RWh3K1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBZ3ZHN0VJRUQ1WnNBQkZXTEFNTHh1eERCQStXYkFBUlZpd0VDOGJzUkFRUGxteUZRSUVFUkk1c0JVdnNBRFFzQlVRc2dZQkNpdFlJZGdiOUZtd0N0Q3dCaEN3RHRDeUZnSUVFUkk1TURFQklRRXpBU01ESXhFakVTTURJeE1oRVNNUk13RWhBd0dLQVljQk5hc0NCTVdXcXJ5ZW1NV2UvclBCd1FKRkFaUEhBbGtEVi9wUUFiYitTZ0cyL2tvQnVQNUlCYkQ4cWdKSkFBQUNBTHdBQUFYa0JEb0FFd0FZQUg4QXNBQkZXTEFDTHh1eEFoZytXYkFBUlZpd0VpOGJzUklZUGxtd0FFVllzQVF2RzdFRUVENVpzQUJGV0xBSUx4dXhDQkErV2JBQVJWaXdEQzhic1F3UVBsbXdBRVZZc0JBdkc3RVFFRDVac2dBUUVoRVNPYkFBTDdBQjBMSU9BUW9yV0NIWUcvUlpzQXZRc0FmUXNBRVFzQlRRc0JYUXNoY1NCQkVTT1RBeEFTRUJNd0VqQXlNUkl4RWpBeU1USXhFakVUTUJJUU1uQndGMkFROEJBNThCdmI1NmRibDhkNzE1MGJxNkFja0JMNEFZR0FIQkFubjd4Z0VwL3RjQktmN1hBU2orMkFRNi9ZY0JPMWxaQUFBQ0FKTUFBQVkvQmJBQUhRQWhBSGF5SGlJakVSSTVzQjRRc0E3UUFMQUFSVml3SEM4YnNSd2NQbG13QUVWWXNBVXZHN0VGRUQ1WnNBQkZXTEFOTHh1eERSQStXYkFBUlZpd0ZTOGJzUlVRUGxteUFRMGNFUkk1c0FFdnNnb0JDaXRZSWRnYjlGbXdFTkN3QVJDd0d0Q3dBUkN3SHRDd0hCQ3lJQUVLSzFnaDJCdjBXVEF4QVRNeUZoY1JJeEVtSmljakJ4RWpFU2NqSWdZSEVTTVJOall6TXdFaEFUTUJJUVJCRy9Uc0E4RUJmSnFGRmNFTmlKNkNCTUFEN1BNcS9uZ0VzdjJmRUFFYS9ic0RLdFRZL29JQmVKQ0NBaVA5bHdKMkZudU4vbndCZnRqVUFvYjllZ0hvQUFBQ0FKWUFBQVZMQkRvQUd3QWZBSE95SENBaEVSSTVzQndRc0JUUUFMQUFSVml3Qmk4YnNRWVlQbG13QUVWWXNCc3ZHN0ViRUQ1WnNBQkZXTEFVTHh1eEZCQStXYkFBUlZpd0RDOGJzUXdRUGxteUhCUUdFUkk1c0J3dnNBVFFzQndRc0FmUXNoQUJDaXRZSWRnYjlGbXdGOUN3QmhDeUhnRUtLMWdoMkJ2MFdUQXhNelUyTmpjQklRRVdGaGNWSXpVbUppTWpCeEVqRVNjaklnWUhGUUV6RXlHV0JNclMvdUVEdi83Z3pzVUN1Z0p6akRVTHVRWStqSFVDQWFJSXQvNkx0czNTQmdIZi9pRUwwOUN0c1pLQkUvNVBBYnNKZnBXeEFsd0JSZ0FDQUxZQUFBaHlCYkFBSWdBbUFKT3lKaWNvRVJJNXNDWVFzQjdRQUxBQVJWaXdDQzhic1FnY1BsbXdBRVZZc0Fzdkc3RUxIRDVac0FCRldMQUZMeHV4QlJBK1diQUFSVml3SWk4YnNTSVFQbG13QUVWWXNCc3ZHN0ViRUQ1WnNBQkZXTEFUTHh1eEV4QStXYklKQlFnUkVqbXdDUyt5QkFFS0sxZ2gyQnYwV2JBSkVMQWowTEFOMExBRUVMQWUwTEFZMExBTEVMSW1BUW9yV0NIWUcvUlpNREVoRVRZM0lSRWpFVE1SSVFFaEFUTXlGaGNSSXhFbUppY2pCeEVqRVNjaklnWUhFUUV6QVNFQ3hRRlAvbUxCd1FOWi9ua0VzLzU0Ry9Uc0E4RUJmSnFGRnNBT2g1NkNCQUlWRUFFYS9ic0JlTE5wL1d3RnNQMThBb1Q5ZXRUWS9vSUJlSkNDQWlYOW1RSjFGM3VOL253REtnSG9BQUlBbXdBQUJ6c0VPZ0FoQUNVQWxySWVKaWNSRWptd0hoQ3dKZEFBc0FCRldMQUhMeHV4QnhnK1diQUFSVml3Q3k4YnNRc1lQbG13QUVWWXNBQXZHN0VBRUQ1WnNBQkZXTEFGTHh1eEJSQStXYkFBUlZpd0VTOGJzUkVRUGxtd0FFVllzQmt2RzdFWkVENVpzZ29MQUJFU09iQUtMN0lkQVFvcldDSFlHL1Jac0FQUXNBb1FzQTNRc0IwUXNCYlFzQW9Rc0NMUXNBc1FzaVFCQ2l0WUlkZ2I5Rmt3TVNFMU5qY2hFU01STXhFaEFTRUJGaFlYRlNNMUppWWpJd2NSSXhFbkl3WUdCeFVCTXhNaEFvWUNSdjZIdXJvQzBmN2hBNy8rNE03RkFyb0NjNHcxQzdrR1M0VnZBZ0dpQ0xmK2k2K3RhUDQ4QkRyK0lnSGUvaUVMMDlDdHNaS0JFLzVQQWJzSkFvQ1Ryd0pjQVVZQUFBSUFVUDVHQTZvSGhnQXBBRElBaDdJcU16UVJFam13S2hDd0F0QUFzQmt2c0M0dnNBQkZXTEFGTHh1eEJSdytXYkFBUlZpd0VpOGJzUklRUGxtd0JSQ3lBd0VLSzFnaDJCdjBXYklvQlJJUkVqbXdLQyt5SlFFS0sxZ2gyQnYwV2JJTUpTZ1JFam13RWhDeUh3RUtLMWdoMkJ2MFdiSVBMZ0Zkc0M0UXNDdlFzQ3N2dEE4ckh5c0NYYklxTGlzUkVqbXdNdEF3TVFFMEppTWhOU0V5QkJVVUJnY1dGaFVVQkNNakJoVVVGeGNISmlZMU5EWTNNelkyTlJBbEl6VXpJQU0zTXhVREl3TTFNd0xhbllmK3pnRXIzZ0VHZ1hPQ2lmNzM0RFNOZ2g5S2VvMmxvalNHbi82K21ZWUJQN3lYb1A1eStwMEVLbTZBbU5peVo2UXRLYTJDeE9VRGJXbENEMzAxcUdONmd3RUJsSGtCQ0FXWUE2V3FDdjd1QVJJS0FBSUFUUDVHQTNZR01BQXBBRElBbnJJdU16UVJFam13TGhDd0g5QUFzQmd2c0M0dnNBQkZXTEFGTHh1eEJSZytXYkFBUlZpd0VTOGJzUkVRUGxtd0JSQ3lBd0VLSzFnaDJCdjBXYklvQlJFUkVqbXdLQyswTHlnL0tBSmR0TDhvenlnQ1hiU2ZLSzhvQW5HMGJ5aC9LQUp5c2lVQkNpdFlJZGdiOUZteURDVW9FUkk1c0JFUXNoNEJDaXRZSWRnYjlGbXdMaEN3SzlDd0t5KzBEeXNmS3dKZHNpb3VLeEVTT2JBeTBEQXhBVFFtSnlFMUlUSVdGUlFHQnhZVkZBWWpJd1lWRkJjWEJ5WW1OVFEyTnpNMk56WTFOQ1VqTlRNZ0F6Y3pGUU1qQXpVekFxZC9jUDdKQVNmSzdtWmIxL1BJTW8yQ0gwdDhpcVdpTm5KRFAvN29tWWdCRTlxWG9QNXkrcDBEQ1VOVEFwbXFpMGwzSkVLdmxLOERiV2xDRDMwM3FHRjZnd0VDTUM1SW9nT1lBeDJxQ3Y3dUFSSUtBQUFEQUdmLzdBVDZCY1FBRVFBWUFCOEFpYklFSUNFUkVqbXdCQkN3RXRDd0JCQ3dHZEFBc0FCRldMQU5MeHV4RFJ3K1diQUFSVml3QkM4YnNRUVFQbG13RFJDeUVnRUtLMWdoMkJ2MFdiSVdEUVFSRWptd0ZpK3lMeFlCWGJMUEZnRmRzaThXQVhHeS94WUJYYkpmRmdGZHRFOFdYeFlDY2JLZkZnRnhzQVFRc2hrQkNpdFlJZGdiOUZtd0ZoQ3lIQUVLSzFnaDJCdjBXVEF4QVJRQ0JDTWlKQUluTlRRU0pETXlCQklYQVNJQ0J5RW1BZ015RWpjaEZoSUUrby8rK0xHcy92YVRBcElCQzZ5dkFRaVJBdjIydHRBRUF4UUV6cmEyeWdqODdBalRBcW5WL3NLcXFRRTV6bW5TQVVLcnFQN0Z6d0lOL3UzeStBRU4rM0FCQVBUcy92Z0FBQU1BVy8vc0JEUUVUZ0FQQUJVQUhBQ0hzZ1FkSGhFU09iQUVFTEFUMExBRUVMQVcwQUN3QUVWWXNBUXZHN0VFR0Q1WnNBQkZXTEFNTHh1eERCQStXYklhREFRUkVqbXdHaSswdnhyUEdnSmR0SjhhcnhvQ2NiTC9HZ0Zkc2c4YUFYRzBMeG8vR2dKZHRNOGEzeG9DY2JJUUFRb3JXQ0hZRy9SWnNBd1FzaFFCQ2l0WUlkZ2I5Rm13QkJDeUZnRUtLMWdoMkJ2MFdUQXhFelEyTmpNeUFCY1hGQVlHSXlJQU5RVWhGaFlnTmdFaUJnY2hKaVpiZStHUDFBRU9Dd0Y4NEpEZS92RURIUDJmRGFRQkFxSCszSDJpRHdKZUVxTUNKNS85aS83aTVUcWUvb2tCTS90RW03aTZBbm0xazVleEFBRUFGZ0FBQk4wRnd3QVBBRWF5QWhBUkVSSTVBTEFBUlZpd0JpOGJzUVljUGxtd0FFVllzQTh2RzdFUEhENVpzQUJGV0xBTUx4dXhEQkErV2JJQkJnd1JFam13QmhDeUNBRUtLMWdoMkJ2MFdUQXhBUmMzQVRZMk14Y0hJZ1lIQVNNQk13SkRJU01CQ0RPR1p5NEJRRUFmL255cS9nZlFBWGFDZ1FNL2wzZ0JxenhVKzNrRnNBQUJBQzRBQUFRTEJFMEFFUUJHc2dJU0V4RVNPUUN3QUVWWXNBVXZHN0VGR0Q1WnNBQkZXTEFSTHh1eEVSZytXYkFBUlZpd0RpOGJzUTRRUGxteUFRVU9FUkk1c0FVUXNnb0JDaXRZSWRnYjlGa3dNUUVYTnhNMk16SVhCeVlqSWdZSEFTTUJNd0hiRnhtZFRheEhJeFVOSFI4OEVQN1hqZjZEdlFFOFpHUUNIL0lZbEFnd0xmeTBCRG9BQUFJQVovOXpCUG9HTkFBVEFDY0FVcklGS0NrUkVqbXdCUkN3R2RBQXNBQkZXTEFOTHh1eERSdytXYkFBUlZpd0F5OGJzUU1RUGxtd0J0Q3dEUkN3RU5DeUZ3RUtLMWdoMkJ2MFdiQWEwTEFERUxJa0FRb3JXQ0hZRy9SWnNDSFFNREVCRUFBSEZTTTFKZ0FETlJBQU56VXpGUllBRVNjMEFpY1ZJelVHQWhVVkZCSVhOVE1WTmhJMUJQcisvdU81NWY3eEFRRU81N25pQVFPL21ZMjVrNk9ra3JtUGx3S3AvdDMra1NPQmZ4OEJjUUVqWUFFa0FYWWZkbmdsL3BEKzJRZmdBUWtqWVdRZi91N2ZYZDcrN0I5bVpDSUJDK0lBQUFJQVcvK0pCRFFFdFFBVEFDVUFXTElESmljUkVqbXdBeEN3SE5BQXNBQkZXTEFETHh1eEF4ZytXYkFBUlZpd0VDOGJzUkFRUGxtd0F4Q3dCdEN3RUJDd0RkQ3dFQkN5SXdFS0sxZ2gyQnYwV2JBVTBMQURFTElkQVFvcldDSFlHL1Jac0JyUU1ERVROQkkzTlRNVkZoSVZGUlFDQnhVak5TWUNOUUUyTmpVMEppY1ZJelVHQmhVVUZoYzFNMXZVdWJtNjJkMjJ1YlRaQWtaamRuUmx1V0p5Y1dPNUFpZlNBU29pY0c4Zy90amRFTmorMkIxcmJCOEJKOXorZVIvTnE1SFFJR0poSWRDbGtzc2laZ0FBQXdDYy8rc0did2RSQUN3QVFBQkpBS2F5Q2twTEVSSTVzQW9Rc0RMUXNBb1FzRW5RQUxBQVJWaXdGQzhic1JRY1BsbXdBRVZZc0Ewdkc3RU5FRDVac0JRUXNBRFFzQTBRc0FmUXNnb05GQkVTT2JBVUVMSVZBUW9yV0NIWUcvUlpzQTBRc2h3QkNpdFlJZGdiOUZteUlCUU5FUkk1c0NYUXNCVVFzQ3pRc0JRUXNEalFzRGd2c0MvUXNpMENDaXRZSWRnYjlGbXdMeEN3Tk5Dd05DK3lQQUlLSzFnaDJCdjBXYkE0RUxCRTBMQkowTEJKTHpBeEFUSVdGUkVVQmlNaUppY0dCaU1pSmljUk5EWXpGU0lHRlJFVUZqTXlOalVSTXhFVUZqTXlOalVSTkNZakV4VWpJaTRDSXlJVkZTTTFORFl6TWg0Q0FUWTNOVE1WRkFZSEJOdTcyZG03Y0xJME5MQnd1ZGdFMkwxamNYSmljb0xCZ25OamNHOWthQ3RRZ3JnMEdIR0FmMjRvU0w5cS9rQkNBNTFiT3dXdjhOYjl4dFR3VlZoWVZlak5Ba3JVOFo2ZGlmM0VqSnVKZkFHcy9sUjZpNXlNQWpxSW53SENmeUpRREhBUEpHNXNFVkliL3BCUVBHbG1NblVnQUFNQWZ2L3JCYW9GOFFBckFEOEFTQUNzc2dsSlNoRVNPYkFKRUxBODBMQUpFTEJJMEFDd0FFVllzQk12RzdFVEdENVpzQUJGV0xBTUx4dXhEQkErV2JBVEVMQUEwTEFNRUxBSDBMSUpEQk1SRWptd0V4Q3lGQUVLSzFnaDJCdjBXYkFNRUxJYkFRb3JXQ0hZRy9SWnNoOFREQkVTT2JBazBMQVVFTEFyMExBVEVMQTMwTEEzTDdBdDBMQXRMN0lzQWdvcldDSFlHL1Jac0MwUXNEUFFzRE12c2pzQ0NpdFlJZGdiOUZtd054Q3dROUN3UXkrd1NOQ3dTQzh3TVFFeUZoVVJGQVlqSWljR0JpTWlKaWNSTkRZekZTSUdGUkVVRmpNeU5qVTFNeFVXRmpNeU5qVVJOQ1lqRXhVaklpNENJeUlWRlNNMU5EWXpNaDRDQVRZM05UTVZGQVlIQkVLb3dNQ28wRjh2bkdLandRVEFxRkpkWEZOaWI3a0JjR0ZSWFYxUnFpeFBmc0F3R0hLQWYyOHBTcmR0L2tGQkE1NWJPd1JFMjhMKzM4SGFsVXRLMExzQk1zSGJtSWg4L3Q1N2lYaG42KzVuZFloOUFTRjhpQUhIZnlCU0MyOFBKRzVzRWxBYy9vWk9QMmhtTW5VZ0FBSUFuUC9zQm5VSEF3QWdBQ2dBZ3JJSEtTb1JFam13QnhDd0o5QUFzQUJGV0xBUEx4dXhEeHcrV2JBQVJWaXdGeThic1JjY1BsbXdBRVZZc0NBdkc3RWdIRDVac0FCRldMQUtMeHV4Q2hBK1diQUUwTElIQ2c4UkVqbXdDaEN5RXdFS0sxZ2gyQnYwV2JBYzBMQVBFTEFuMExBbkw3QW8wTEFvTDdJaUJnb3JXQ0hZRy9SWnNDZ1FzQ1hRc0NVdk1ERUJFUlFHSXlJbUp3WUdJeUltSnhFekVSUVdNekkyTlJFekVSUVdNekkyTlJFbE5TRVhJUlVqTlFaMTRjTnRxekUwc25HOTF3SEJjbUp5Z3NkOGFXcDYvRUlETEFIK3RhZ0ZzUHZleHR4WFdWbFgyOE1FSnZ2ZGU0cUpmQVFqKzkxOWlJbDlCQ0xvYTJ0OWZRQUFBZ0NCLytzRnJRV3dBQjRBSmdDRnNnWW5LQkVTT2JBR0VMQWowQUN3QUVWWXNBMHZHN0VOR0Q1WnNBQkZXTEFWTHh1eEZSZytXYkFBUlZpd0hpOGJzUjRZUGxtd0FFVllzQWd2RzdFSUVENVpzQVRRc0FRdnNnWUlEUkVTT2JBSUVMSVJBUW9yV0NIWUcvUlpzQnJRc0EwUXNDWFFzQ1V2c0NiUXNDWXZzaUFHQ2l0WUlkZ2I5Rm13SmhDd0k5Q3dJeTh3TVFFUkZBWWpJaWNHSXlJbUp4RXpFUllXTXpJMk5SRXpFUlFXTXpJMk54RUJOU0VYSVJVak5RV3R5cTdHV1YvT3A4QUJ1UUZiVTJKdnVtVmNXV1VCL0pNRExBUCtzNmtFT3YwbnNNYVVsTU93QXR6OUkyWjFlR2NDMmYwblozaDFaZ0xkQVF0cmE0Q0FBQUFCQUhYK2hBUzhCY1VBR1FCSnNoZ2FHeEVTT1FDd0FDK3dBRVZZc0Fvdkc3RUtIRDVac0FCRldMQUNMeHV4QWhBK1diQUtFTEFPMExBS0VMSVJBUW9yV0NIWUcvUlpzQUlRc2hrQkNpdFlJZGdiOUZrd01RRWpFU1lBTlRVMEVpUXpNZ0FYSXlZbUl5SUNGUlVVRWhjekF4Uy8yUDc0amdFQW9QY0JJQUxCQXJXaG9NM0ZuWHoraEFGc0hBRlcvL1N4QVNDZi92amducXorL05UMHl2NzdCQUFCQUdUK2dnUGdCRTRBR1FCSnNoZ2FHeEVTT1FDd0FDK3dBRVZZc0Fvdkc3RUtHRDVac0FCRldMQUNMeHV4QWhBK1diQUtFTEFPMExBS0VMSVJBUW9yV0NIWUcvUlpzQUlRc2hnQkNpdFlJZGdiOUZrd01RRWpFU1lDTlRVME5qWXpNaFlWSXpRbUl5SUdGUlVVRmhjekFxSzVzZFIzMTR1ejhLK1BaWVNjbG9KdC9vSUJjQjRCSnRram1mbUs0YWhsak5xMUg2amJBd0FBQVFCMEFBQUVrQVUrQUJNQUV3Q3dEaSt3QUVWWXNBUXZHN0VFRUQ1Wk1ERUJCUWNsQXlNVEpUY0ZFeVUzQlJNekF3VUhKUUpZQVNGRS90MjJxT0grMzBRQkpjMysza1lCSTd5bDV3RWxTUDdnQWI2c2U2cit2d0dPcTN1ckFXMnJmYXNCUy81b3EzcXFBQUg4WndTbS95Y0YvQUFIQUJFQXNBQXZzZ01HQ2l0WUlkZ2I5Rmt3TVFFVkp6Y2hKeGNWL1EybUFRSWJBYVVGSTMwQjZXd0IyQUFBQWZ4eEJSZi9aQVlWQUJNQUxnQ3dEaSt3Q05Dd0NDK3lBQUlLSzFnaDJCdjBXYkFPRUxBRjBMQUZMN0FPRUxJUEFnb3JXQ0hZRy9SWk1ERUJNaFlWRlNNMU5DTWlCd2NHQnlNMU1qNEMvblp2ZjRCeUtpMXZpWFk4YkdyQlJ3WVZiRzRrRG5BU0x6b0NmaHRURVFBQi9XWUZGdjVVQmxjQUJRQU1BTEFCTDdBRjBMQUZMekF4QVRVekZSY0gvV2F6TzAwRjNIdU1kRUVBQUFIOXBBVVcvcE1HVndBRkFBd0FzQU12c0FEUXNBQXZNREVCSnpjbk14WDk4VTA3QWJVRkZrRjBqSHNBQ1BvYi9zUUJ0Z1d2QUF3QUdnQW5BRFVBUWdCUEFGd0FhZ0I2QUxCRkw3QlRMN0JnTDdBNEw3QUFSVml3QWk4YnNRSWNQbG15Q1FzS0sxZ2gyQnYwV2JCRkVMQVEwTEJGRUxKTUN3b3JXQ0hZRy9SWnNCZlFzRk1Rc0I3UXNGTVFzbG9MQ2l0WUlkZ2I5Rm13SmRDd1lCQ3dLOUN3WUJDeVp3c0tLMWdoMkJ2MFdiQXkwTEE0RUxJL0N3b3JXQ0hZRy9SWk1ERUJORFl5RmhVak5DWWpJZ1lWQVRRMk16SVdGU00wSmlNaUJoVVRORFl6TWhZVkl6UW1JZ1lWQVRRMk16SVdGU00wSmlNaUJoVUJORFl5RmhVak5DWWpJZ1lWQVRRMk1oWVZJelFtSXlJR0ZRRTBOak15RmhVak5DWWlCaFVUTkRZek1oWVZJelFtSXlJR0ZmMEljNzUwY0RNd0xqTUIzblJkWDNWeE5TNHNNMGgxWFY5MGNEVmNNLzdMZEYxZmRIQTFMaTB6L1U5enZuUndNekF1TS8xTmRMNTBjRE13TGpQKzNuVmRYM1J3TlZ3ek5YVmRYM1Z4TlM0dE13VHpWR2hvVkM0M05URCs2MVJvWjFVeE5EVXcvZ2xWWjJoVU1UUTNMdjM1Vkdob1ZERTBOeTcrNUZSb2FGUXVOemN1QlJwVWFHaFVMamMxTVA0SlZXZG9WREUwTnk3OStWVm5aMVV4TkRVd0FBajZMUDVqQVdzRnhnQUVBQWtBRGdBVEFCZ0FIUUFpQUNjQU9RQ3dJUyt3RWkrd0N5K3dHeSt3Smkrd0FFVllzQWN2RzdFSEhENVpzQUJGV0xBV0x4dXhGaG8rV2JBQVJWaXdBaThic1FJU1Bsa3dNUVVYQXlNVEF5Y1RNd01CTndVVkpRVUhKVFVGQVRjbEZ3VUJCd1VuSlFNbkF6Y1RBUmNUQndQK0x3dDZZRVk2REhwZ1JnSWREUUZOL3FiN2RRMytzd0ZhQTV3Q0FVQkUvdHY4OHdMK3dFVUJKaXNSbEVIR0EyQVJsRUxFUEE3K3JRRmhCS0lPQVZMK29QNFJESHhpUnpzTWZHSkhBYTRRbVVUSS9JNFJtVVhJQXVRQ0FVWkYvdFg4NHdMK3UwY0JLd0FBQXYvY0FBQUQvQVp4QUJFQUdnQjBzaFFiSEJFU09iQVVFTEFEMEFDd0FFVllzQXd2RzdFTUhENVpzQUJGV0xBUUx4dXhFQncrV2JBQVJWaXdDQzhic1FnUVBsbXdFQkN5QUFFS0sxZ2gyQnYwV2JJQ0RBZ1JFam13QWkrd0FCQ3dDdEN3QzlDd0FoQ3lFZ0VLSzFnaDJCdjBXYkFJRUxJVEFRb3JXQ0hZRy9SWk1ERUJJUkVoRmhZUUJnY2hFU00xTXpVekZTRUJFU0V5TmpVMEppY0NsdjYvQVJpNzFOUzMvaXEvdjdvQlFmNi9BUkpwY1c5a0JSajkwZ0xLL3JiUkF3VVltTUhCL0tMK1JYZGtZWDBDQUFJQXFBQUFCTmNGc0FBT0FCc0FWTElFSEIwUkVqbXdCQkN3RjlBQXNBQkZXTEFETHh1eEF4dytXYkFBUlZpd0FTOGJzUUVRUGxteUZnTUJFUkk1c0JZdnNnQUJDaXRZSWRnYjlGbXlDUUFERVJJNXNBTVFzaFFCQ2l0WUlkZ2I5Rmt3TVFFUkl4RWhNZ1FWRkFjWEJ5Y0dJd0UyTlRRbUp5RVJJVEkzSnpjQmFjRUNHZXdCRTJkK2JZdDJxQUVaSmFXUi9xQUJXR0pGYm00Q092M0dCYkR5eTdwd2ltZVpOd0ViUVZ1Q25RTDl4UjE1WmdBQUFnQ00vbUFFSXdST0FCTUFJZ0Ixc2h3akpCRVNPYkFjRUxBUTBBQ3dBRVZZc0JBdkc3RVFHRDVac0FCRldMQU5MeHV4RFJnK1diQUFSVml3Q2k4YnNRb1NQbG13QUVWWXNBY3ZHN0VIRUQ1WnNnSUhFQkVTT2JJSkVBY1JFam15RGhBSEVSSTVzQkFRc2hjQkNpdFlJZGdiOUZtd0J4Q3lIQUVLSzFnaDJCdjBXVEF4QVJRSEZ3Y25CaU1pSnhFakVUTVhOak15RWhFbk5DWWpJZ2NSRmpNeU55YzNGellFSG1wdmJtNVpjOFZ4dWFrSmNjbkQ0N21jaUtoVVU2dFNQR1p1V2pJQ0VlNlhmV1o3T0gzOTl3WGFlSXorMnY3NkJMZlVsZjM3bENkeloyZGlBQUFCQUtJQUFBUWpCd0FBQ1FBMXNnTUtDeEVTT1FDd0NDK3dBRVZZc0FZdkc3RUdIRDVac0FCRldMQUVMeHV4QkJBK1diQUdFTElDQVFvcldDSFlHL1JaTURFQkl4VWhFU01SSVJFekJDTUQvVUxBQXNpNUJSZ0crdTRGc0FGUUFBQUJBSkVBQUFOQ0JYWUFCd0F1QUxBR0w3QUFSVml3QkM4YnNRUVlQbG13QUVWWXNBSXZHN0VDRUQ1WnNBUVFzZ0FCQ2l0WUlkZ2I5Rmt3TVFFaEVTTVJJUkV6QTBMK0Nib0IrTGtEb2Z4ZkJEb0JQQUFCQUxIKzN3UjhCYkFBRlFCYnNnb1dGeEVTT1FDd0NTK3dBRVZZc0JRdkc3RVVIRDVac0FCRldMQVNMeHV4RWhBK1diQVVFTElBQVFvcldDSFlHL1Jac2dNVUNSRVNPYkFETDdBSkVMSUtBUW9yV0NIWUcvUlpzQU1Rc2hBQkNpdFlJZGdiOUZrd01RRWhFVE1nQUJFUUFpTW5NalkxSmlZakl4RWpFU0VFTVAxQ3NnRWNBVHoxNUFLUmtBSE16clhCQTM4RkV2NHYvcy8rOFA3NC91ZVR3OHZMMVAxaEJiQUFBQUVBa2Y3bEE3NEVPZ0FXQUZ1eUN4Y1lFUkk1QUxBS0w3QUFSVml3RlM4YnNSVVlQbG13QUVWWXNCTXZHN0VURUQ1WnNCVVFzZ0FCQ2l0WUlkZ2I5Rm15QXhVS0VSSTVzQU12c0FvUXNnc0JDaXRZSWRnYjlGbXdBeEN5RVFFS0sxZ2gyQnYwV1RBeEFTRVJNeklBRlJRR0JnY25OalkxTkNZakl4RWpFU0VEUHY0TmJPOEJHR0txZFRDQWVMS1ljTG9DclFPaC91VCsvTmRpeUlZVmtpR1plWkdvL2gwRU9nQUFBUUNqQUFBRS93V3dBQlFBWWdDd0FFVllzQUF2RzdFQUhENVpzQUJGV0xBTUx4dXhEQncrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0Fvdkc3RUtFRDVac0EvUXNBOHZzaThQQVYyeXp3OEJYYklJQVFvcldDSFlHL1Jac2dFSUR4RVNPYkFGMExBUEVMQVMwREF4Q1FJakFTTVZJelVqRVNNUk14RXpFVE1STXdFRTB2NXdBYjN4L3FKUWxHakJ3V2lVVFFGREJiRDlUdjBDQW83MDlQMXlCYkQ5ZndFQS93QUNnUUFBQVFDYUFBQUVmd1E2QUJRQWV3Q3dBRVZZc0Ewdkc3RU5HRDVac0FCRldMQVVMeHV4RkJnK1diQUFSVml3Q2k4YnNRb1FQbG13QUVWWXNBTXZHN0VERUQ1WnNBb1FzQTdRc0E0dnNwOE9BVjJ5L3c0QlhiS2ZEZ0Z4dEw4T3p3NENYYkl2RGdGZHNtOE9BWEt5Q1FFS0sxZ2gyQnYwV2JJQkNRNFJFam13QmRDd0RoQ3dFdEF3TVFrQ0l3RWpGU00xSXhFakVUTVJNelV6RlRNQkJGcityZ0YzNi83ck1wUmx1cnBsbENvQkF3UTYvZjc5eUFITndzTCtNd1E2L2piVjFRSEtBQUVBUkFBQUJvc0ZzQUFPQUdzQXNBQkZXTEFHTHh1eEJodytXYkFBUlZpd0NpOGJzUW9jUGxtd0FFVllzQUl2RzdFQ0VENVpzQUJGV0xBTkx4dXhEUkErV2JJSUJnSVJFam13Q0MreUx3Z0JYYkxQQ0FGZHNnRUJDaXRZSWRnYjlGbXdCaEN5QkFFS0sxZ2gyQnYwV2JJTUFRZ1JFamt3TVFFakVTTVJJVFVoRVRNQk13RUJJd09Rc01IK0pRS2NsZ0g4Ny8zVUFsYnNBbzc5Y2dVWW1QMStBb0w5UC8wUkFBRUFQZ0FBQlgwRU9nQU9BSUFBc0FCRldMQUdMeHV4QmhnK1diQUFSVml3Q2k4YnNRb1lQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFOTHh1eERSQStXYkFDRUxBSjBMQUpMN0tmQ1FGZHN2OEpBVjJ5bndrQmNiUy9DYzhKQWwyeUx3a0JYYkp2Q1FGeXNnQUJDaXRZSWRnYjlGbXdCaEN5QkFFS0sxZ2gyQnYwV2JJTUFBa1JFamt3TVFFakVTTVJJVFVoRVRNQk13RUJJd01iaUxyK1pRSlZlZ0ZyNGY1VEFkSHJBYzMrTXdPaG1mNDJBY3I5K1AzT0FBQUJBS2dBQUFlRUJiQUFEUUJlQUxBQVJWaXdBaThic1FJY1BsbXdBRVZZc0F3dkc3RU1IRDVac0FCRldMQUdMeHV4QmhBK1diQUFSVml3Q2k4YnNRb1FQbG13QWRDd0FTK3lMd0VCWGJBQ0VMSUVBUW9yV0NIWUcvUlpzQUVRc2dnQkNpdFlJZGdiOUZrd01RRWhFU0VWSVJFakVTRVJJeEV6QVdrQzNnTTkvWVBBL1NMQndRTStBbktZK3VnQ29mMWZCYkFBQVFDUkFBQUZhUVE2QUEwQW13Q3dBRVZZc0FJdkc3RUNHRDVac0FCRldMQU1MeHV4REJnK1diQUFSVml3Qmk4YnNRWVFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNBWVFzQUhRc0FFdnNtOEJBVjIwdndIUEFRSmRzajhCQVhHMHp3SGZBUUp4c2c4QkFYSzBud0d2QVFKeHN2OEJBVjJ5RHdFQmNiS2ZBUUZkc2k4QkFWMjBid0YvQVFKeXNBSVFzZ1FCQ2l0WUlkZ2I5Rm13QVJDeUNBRUtLMWdoMkJ2MFdUQXhBU0VSSVJVaEVTTVJJUkVqRVRNQlN3SHhBaTMrakxuK0Q3cTZBbVVCMVpuOFh3SE8vaklFT2dBQUFRQ3cvdDhIelFXd0FCY0FhTElSR0JrUkVqa0FzQWN2c0FCRldMQVdMeHV4Rmh3K1diQUFSVml3RkM4YnNSUVFQbG13QUVWWXNCRXZHN0VSRUQ1WnNnRVdCeEVTT2JBQkw3QUhFTElJQVFvcldDSFlHL1Jac0FFUXNnNEJDaXRZSWRnYjlGbXdGaEN5RWdFS0sxZ2gyQnYwV1RBeEFUTWdBQkVRQWlNbk1qWTFKaVlqSXhFakVTRVJJeEVoQlA5MkFSd0JQUFhrQXBHUUFjek9lY0g5TXNBRVR3TkIvcy8rOFA3NC91ZVR3OHZMMVAxaEJSTDY3Z1d3QUFBQkFKSCs1UWF3QkRvQUdBQm9zaElaR2hFU09RQ3dDQyt3QUVWWXNCY3ZHN0VYR0Q1WnNBQkZXTEFWTHh1eEZSQStXYkFBUlZpd0VpOGJzUklRUGxteUFSY0lFUkk1c0FFdnNBZ1FzZ2tCQ2l0WUlkZ2I5Rm13QVJDeUR3RUtLMWdoMkJ2MFdiQVhFTElUQVFvcldDSFlHL1JaTURFQk16SUFGUWNHQmdjbk5qWTFOQ1lqSXhFakVTRVJJeEVoQS9hZytBRWlBeFRSbVRCOGU3eWdwTG4rRHJvRFpRS0YvdnpYSnFQaEc1SWdsbjJTcC80ZEE2SDhYd1E2QUFJQWNmL2tCYUlGeFFBb0FEWUFtN0lZTnpnUkVqbXdHQkN3S2RBQXNBQkZXTEFOTHh1eERSdytXYkFBUlZpd0h5OGJzUjhjUGxtd0FFVllzQVF2RzdFRUVENVpzQURRc0FBdnNnSUVIeEVTT2JBQ0w3QU5FTElPQVFvcldDSFlHL1Jac0FRUXNoVUJDaXRZSWRnYjlGbXdBaEN5TEFFS0sxZ2gyQnYwV2JJWEFpd1JFam15Sml3Q0VSSTVzQUFRc2lnQkNpdFlJZGdiOUZtd0h4Q3lNd0VLSzFnaDJCdjBXVEF4QlNJbkJpTWlKQUkxTlRRU05qTVhJZ1lWRlJRU016STNKZ0kxTlRRMk5qTXlFaFVWRkFJSEZqTUJGQllYTmpZMU5UUW1JeUlHRlFXaTE3T09yTEwrNUo5MTBvUUJkcFRzdjBZNGVZUm92WGEyNW05bWFIbjlmWGgxWW1oNVkyRjZIRWxDc2dGQ3hLeXhBU0tqcGY3WnB1eisxdzFoQVJXcTQ1cjlqZjdNL2V1ZS92WmZHZ0kwbU8xS1NPZU4rYkhPMHJJQUFBSUFiZi9yQkp3RVR3QWtBQzhBb3JJRU1ERVJFam13QkJDd0pkQUFzQUJGV0xBTUx4dXhEQmcrV2JBQVJWaXdIQzhic1J3WVBsbXdBRVZZc0FRdkc3RUVFRDVac0FCRldMQUFMeHV4QUJBK1diSUNCQndSRWptd0FpK3dEQkN5RFFFS0sxZ2gyQnYwV2JBRUVMSVVBUW9yV0NIWUcvUlpzQUlRc2ljQkNpdFlJZGdiOUZteUZoUW5FUkk1c0FBUXNpUUJDaXRZSWRnYjlGbXlJaWNrRVJJNXNCd1FzaXdCQ2l0WUlkZ2I5Rmt3TVFVaUp3WWpJaVlDTlRVMEVqTVZJZ1lWRlJRV016STNKaEUxTkRZek1oWVZGUlFIRmpNQkZCYzJOelUwSmlJR0J3U2Nzb3gyajR6aGY4V2JTVjJwaVM0c3dhMlBqTEtBVDJIK0Q1OW1BMGw0UmdFTU9VS1ZBUktuT3MwQkRwNnRrampCOEF1aUFSRmV3T3Y1em1Mam5SVUJxZFowYzdwMWdwNk5lZ0FBQVFBMC9xRUdrd1d3QUJNQVd3Q3dFUyt3QUVWWXNBY3ZHN0VISEQ1WnNBQkZXTEFNTHh1eERCdytXYkFBUlZpd0V5OGJzUk1RUGxtd0J4Q3lDQUVLSzFnaDJCdjBXYkFBMExBSEVMQUYwTEFEMExBQzBMQVRFTElLQVFvcldDSFlHL1Jac0E3UU1ERUJJVFVoTlRNVklSVWhFU0VSTXhFekF5TVJJUUdyL29rQmQ4RUJnZjUvQXM3Qm1CS3MrOVlGR0pjQkFaZjdoUVVUK3ZIK0FBRmZBQUVBSC82L0JSWUVPZ0FQQUVzQXNBMHZzQUJGV0xBREx4dXhBeGcrV2JBQVJWaXdEeThic1E4UVBsbXdBeEN5QkFFS0sxZ2gyQnYwV2JBQTBMQVBFTElHQVFvcldDSFlHL1Jac0FNUXNBalFzQVlRc0FyUU1ERUJJVFVoRlNNUklSRXpFVE1ESXhFaEFUSCs3Z0xFK1FIeXVvQVNwZnpTQTZPWGwvejBBNlA4WGY0b0FVRUFBUUNXQUFBRXlBV3dBQmNBVDdJRUdCa1JFamtBc0FCRldMQUFMeHV4QUJ3K1diQUFSVml3Q2k4YnNRb2NQbG13QUVWWXNBd3ZHN0VNRUQ1WnNnY0FEQkVTT2JBSEw3QUUwTEFIRUxJUUFRb3JXQ0hZRy9SWnNCUFFNREVCRVJZV014RXpFVFkzRVRNUkl4RUdCeFVqTlNJbUp4RUJWd0dKb0pWNWVNSEJjbitWK084RUJiRCtNcHFFQVRiKzBnMGhBcmI2VUFKYklnM3U2Tm5hQWRjQUFBRUFnd0FBQTlrRU93QVdBRSt5QmhjWUVSSTVBTEFBUlZpd0N5OGJzUXNZUGxtd0FFVllzQlV2RzdFVkdENVpzQUJGV0xBQUx4dXhBQkErV2JJUEZRQVJFam13RHkreUJ3RUtLMWdoMkJ2MFdiQUUwTEFQRUxBUzBEQXhJU01SQmdjVkl6VW1KaWNSTXhFV0Z4RXpFVFkzRVRNRDJicEdVNWF3dXdLNUJhK1dWRVc2QVlnVENZZUZEY3kxQVVQK3RkTWFBUmorNmdvUkFob0FBQUVBaWdBQUJMd0ZzQUFSQUVheUJSSVRFUkk1QUxBQVJWaXdBUzhic1FFY1BsbXdBRVZZc0FBdkc3RUFFRDVac0FCRldMQUpMeHV4Q1JBK1diSUZBUUFSRWptd0JTK3lEZ0VLSzFnaDJCdjBXVEF4TXhFekVUWXpNaFlYRVNNUkppWWpJZ2NSaXNHNXl2bnlBOEVCaWFPN3lBV3cvYVUxMk4vK0xRSE9tSVkzL1VzQUFBSUFQLy9xQmIwRnd3QWRBQ1VBWkxJWEppY1JFam13RnhDd0pOQUFzQUJGV0xBUEx4dXhEeHcrV2JBQVJWaXdBQzhic1FBUVBsbXlIdzhBRVJJNXNCOHZzaE1CQ2l0WUlkZ2I5Rm13Qk5Dd0h4Q3dDOUN3QUJDeUdBRUtLMWdoMkJ2MFdiQVBFTElqQVFvcldDSFlHL1JaTURFRklBQVJOU1ltTlRNVUZoYzBFall6SUFBUkZTRVZGQll6TWpjWEJnWUJJVFUwSmlNaUFnUHAvdUwrczVtbW1GQlhqdjJXQVFJQkhQeUMzc3l6cGk5QTB2M2dBcjZ6cTU3Q0ZnRlJBU2xiRThXaVduMFV0QUVmb3Y2ai9yNXNYZHozVTQ4dE5RTmFJZG5sL3YwQUF2L2UvK3dFWXdST0FCa0FJUUJ5c2hRaUl4RVNPYkFVRUxBYjBBQ3dBRVZZc0Ewdkc3RU5HRDVac0FCRldMQUFMeHV4QUJBK1diSWVEUUFSRWptd0hpKzB2eDdQSGdKZHNoRUJDaXRZSWRnYjlGbXdBOUN3SGhDd0NkQ3dBQkN5RlFFS0sxZ2gyQnYwV2JJWERRQVJFam13RFJDeUdnRUtLMWdoMkJ2MFdUQXhCU0lBTlNZbU5UTVVGejRDTXpJU0VSVWhGaFl6TWpjWEJnRWlCZ2NoTlNZbUFyM2MvdXg0ZDVObEZJVEljTlBxL1NNRXM0cXViM0dJL3Rsd21CSUNIZ2lJRkFFaCtoMnVocE13Z3NsdS91cisvVTJneFpKWTBRUEtvNU1PalpzQUFBRUFvLzdXQk13RnNBQVdBRjJ5RlJjWUVSSTVBTEFPTDdBQVJWaXdBaThic1FJY1BsbXdBRVZZc0FZdkc3RUdIRDVac0FCRldMQUFMeHV4QUJBK1diSUVBQUlSRWptd0JDK3dDTkN3RGhDeUR3RUtLMWdoMkJ2MFdiQUVFTElXQVFvcldDSFlHL1JaTURFaEl4RXpFVE1CTXdFV0FCVVFBaU1uTWpZMUppWW5JUUZrd2NHRkFnSGkvZmo0QVEzNTVnS1FrQUxIeC83c0JiRDlqd0p4L1lnVy90TDYvdmorNUpqQnljclNBUUFBQVFDYS92NEVHUVE2QUJZQWViSU5GeGdSRWprQXNBY3ZzQUJGV0xBUkx4dXhFUmcrV2JBQVJWaXdGUzhic1JVWVBsbXdBRVZZc0E4dkc3RVBFRDVac0JQUXNCTXZzcDhUQVYyeS94TUJYYktmRXdGeHRMOFR6eE1DWGJJdkV3RmRzczhUQVhHd0FOQ3dCeEN5Q0FFS0sxZ2gyQnYwV2JBVEVMSU9BUW9yV0NIWUcvUlpNREVCRmhZVkZBWUdCeWMyTlRRbUp5TVJJeEV6RVRNQk13Si93ODVrckhBdytLMmxzcnE2V3dHSzRBSmtIK0swWGNWOEU1STU1b3FTQXY0ekJEcitOZ0hLQUFBQkFMSCtTd1QrQmJBQUZRQ25zZ29XRnhFU09RQ3dBRVZZc0FBdkc3RUFIRDVac0FCRldMQURMeHV4QXh3K1diQUFSVml3Q0M4YnNRZ1NQbG13QUVWWXNCTXZHN0VURUQ1WnNBTFFzQUl2c2w4Q0FWMnl6d0lCWGJJZkFnRnh0RzhDZndJQ2NiUy9BczhDQW5HMER3SWZBZ0p5c3U4Q0FYR3lud0lCY2JKUEFnRnhzdjhDQVYyeXJ3SUJYYkl2QWdGZHNqOENBWEt3Q0JDeURRRUtLMWdoMkJ2MFdiQUNFTElSQVFvcldDSFlHL1JaTURFQkVTRVJNeEVVQmlNaUp6Y1dNekkyTlJFaEVTTVJBWElDek1Dcm5EdzJEaVU5UVVqOU5NRUZzUDF1QXBMNS9haTZFcG9PWjF3QzFmMS9CYkFBQUFFQWtmNUxBL1VFT2dBV0FKK3lDaGNZRVJJNUFMQUFSVml3QUM4YnNRQVlQbG13QUVWWXNBTXZHN0VER0Q1WnNBQkZXTEFJTHh1eENCSStXYkFBUlZpd0ZDOGJzUlFRUGxtd0F0Q3dBaSt5YndJQlhiUy9BczhDQWwyeVB3SUJjYlRQQXQ4Q0FuR3lEd0lCY3JTZkFxOENBbkd5L3dJQlhiSVBBZ0Z4c3A4Q0FWMnlMd0lCWGJSdkFuOENBbkt3Q0JDeURnRUtLMWdoMkJ2MFdiQUNFTElTQVFvcldDSFlHL1JaTURFQkVTRVJNeEVVQmlNaUp6Y1dGeGN5TmpVUklSRWpFUUZMQWZHNXE1ZzhOQThSUEJSQ1NQNFB1Z1E2L2lzQjFmdHRxcklTa3djRkFXaGNBaWYrTWdRNkFBQUNBRjMvN0FVU0JjUUFGd0FmQUY2eUNDQWhFUkk1c0FnUXNCalFBTEFBUlZpd0FDOGJzUUFjUGxtd0FFVllzQWd2RzdFSUVENVpzZzBBQ0JFU09iQU5MN0FBRUxJUkFRb3JXQ0hZRy9SWnNBZ1FzaGdCQ2l0WUlkZ2I5Rm13RFJDeUd3RUtLMWdoMkJ2MFdUQXhBU0FBRVJVVUFnUWpJQUFSTlNFMUVBSWpJZ2NISnpjMkFUSVNOeUVWRkJZQ2dBRXVBV1NjL3Vxbi91UCt3UVAwOU4ybGl6MHZGcDRCSWFuZUQvelAwd1hFL29mK3NWVEYvcisyQVZrQlJYVUhBUUlCSERvYWp3MVkrc1lCQmRzaTJ1UUFBUUJvLytzRUxBV3dBQnNBWjdJTEhCMFJFamtBc0FCRldMQUNMeHV4QWh3K1diQUFSVml3Q3k4YnNRc1FQbG13QWhDeUFBRUtLMWdoMkJ2MFdiQUUwTElGQWdzUkVqbXdCUyt3Q3hDd0VOQ3dDeEN5RXdFS0sxZ2gyQnYwV2JBRkVMSVpBUW9yV0NIWUcvUlpzQVVRc0J2UU1ERUJJVFVoRndFV0ZoVVVCQ01pSmlZMU14UVdNekkyTlRRbUl5TTFBeDM5ZGdOckFmNXIyZW4rOCtDRzIzYkFuSHVKbzZhZWpRVVNubjMrSGc3bnhzUG9hYjZDY3BxU2VKMk9sd0FBQVFCcC9uVUVLQVE2QUJvQVdySUxHeHdSRWprQXNBc3ZzQUJGV0xBQ0x4dXhBaGcrV2JJQUFRb3JXQ0hZRy9SWnNBVFFzZ1VDQ3hFU09iQUZMN0FMRUxBUTBMQUxFTElUQVFvcldDSFlHL1Jac0FVUXNoZ0RDaXRZSWRnYjlGbXdCUkN3R3RBd01RRWhOU0VYQVJZV0ZSUUVJeUltSmpVekZCWXpNalkxRUNVak5RTU0vWWdEWlFIK2N0VG8vdlRlaE5kNnVwNTlqYVQreWFBRG9abDIvaEVRNGNYRDUyYS9nM0dmbFhrQklnaVgvLzhBT3Y1TEJIUUZzQUFtQUxCRUFBQW1BZDZyUUFBSEFhOEE4QUFBLy84QU8vNUxBNVlFT2dBbUFPdFBBQUFtQWQ2c2pnRUhBYThBNFFBQUFBZ0FzZ0FHQVYwd01RQUNBRmNBQUFSbEJiQUFDZ0FUQUZDeUJCUVZFUkk1c0FRUXNBM1FBTEFBUlZpd0FTOGJzUUVjUGxtd0FFVllzQU12RzdFREVENVpzZ0FCQXhFU09iQUFMN0FERUxJTEFRb3JXQ0hZRy9SWnNBQVFzZ3dCQ2l0WUlkZ2I5Rmt3TVFFUk14RWhJaVExTkRZM0FSRWhJZ1lWRkJZWEE2UEMvZC9rL3ZmLzRBRnQvcUdNb1orS0EzTUNQZnBROHN2SDZ3VDlLZ0k0bG9DQ253RUFBZ0JaQUFBR1p3V3dBQmNBSHdCYXNnY2dJUkVTT2JBSEVMQVkwQUN3QUVWWXNBZ3ZHN0VJSEQ1WnNBQkZXTEFBTHh1eEFCQStXYklIQ0FBUkVqbXdCeSt3QUJDeUdBRUtLMWdoMkJ2MFdiQUswTElRQUFnUkVqbXdCeEN5R1FFS0sxZ2gyQnYwV1RBeElTSWtOVFFrTnlFUk14RTNOalkzTmljekZ4WUhCZ1lqSlJFaElnWVVGaGNDUitYKzl3RUI0d0Zxd1ZodmNnTUVRTG9XTHdNRTVjUCs3LzZnanA2WWhmVEp4dTBEQWozNjZ3RUNrbnVpcDBTWGJzUG9uUUk0bC82ZkJBQUFBZ0JrLytjR2JnWVlBQjhBS3dDRHNob3NMUkVTT2JBYUVMQXEwQUN3QUVWWXNBWXZHN0VHSGo1WnNBQkZXTEFETHh1eEF4ZytXYkFBUlZpd0dDOGJzUmdRUGxtd0FFVllzQnd2RzdFY0VENVpzZ1VER0JFU09iQVlFTElMQVFvcldDSFlHL1Jac2hFREdCRVNPYklhQXhnUkVqbXdBeEN5SWdFS0sxZ2gyQnYwV2JBY0VMSW9BUW9yV0NIWUcvUlpNREVURUJJek1oY1JNeEVHRmpNMk5qYzJKemNXRmdjT0FpTUdKd1lqSWdJMUFTWWpJZ1lWRkJZek1qY25aT0xFdDJxNUFsOU9pWmNFQkVHekhDa0NBbm5aaWZKT2JOdkE1QUxIVXFHSGxKR0lwMU1GQWdrQkNBRTlnd0pOKzBGZmVBTFF2YnJZQVdiSFpxbjVoQVM2dGdFYjlBRXhodC9lcmIrVFBnQUFBUUEyLytNRjFRV3dBQ2NBWTdJUUtDa1JFamtBc0FCRldMQUpMeHV4Q1J3K1diQUFSVml3SVM4YnNTRVFQbG15QVNnSkVSSTVzQUV2c2dBQkNpdFlJZGdiOUZtd0NSQ3lCd0VLSzFnaDJCdjBXYklQQUFFUkVqbXdJUkN5RlFFS0sxZ2gyQnYwV2JJYUlRa1JFamt3TVJNMU16WTJOVFFoSVRVaEZoWVZGQWNXRXhVVUZqTTJOamMySnpNWEZnY0dBaU1FQXpVMEppZittNStUL3N2K29BRnI3L3p0MndWVFFYU0dCQVJCdWhjd0F3VDJ4LzY5RDRkMUFubWVBbnVEKzU0QjBjbm9Za1grL0ZCUFd3TE91YnZZV0x1QS9mN1hDQUZOUUhpUUFRQUJBREgvNHdUb0JEb0FKd0Jnc2c4b0tSRVNPUUN3QUVWWXNCOHZHN0VmR0Q1WnNBQkZXTEFPTHh1eERoQStXYklDQVFvcldDSFlHL1Jac2djT0h4RVNPYklYS0I4UkVqbXdGeSt5RkFFS0sxZ2gyQnYwV2JBZkVMSWRBUW9yV0NIWUcvUlpzaVVVRnhFU09UQXhKUVl6TmpZM05pY3pGaFlIQmdZakJpWW5OVFFqSXljek5qWTFOQ1lqSVNjaEZoWVZGQWNXRndMbkFsOXdkZ01FUXJRdEdBRUU1N2lIaVFmWXpRTEFlbTU5ZGY3N0JnRVl4Tnk4dGdUVldBS2JpWm1taG9BNXpmQURjSU5IblpZQlYwcFZYWllEcDVpZFNqU3lBQUVBVXY3WEEvVUZyd0FoQUYyeUlDSWpFUkk1QUxBWEw3QUFSVml3Q1M4YnNRa2NQbG13QUVWWXNCb3ZHN0VhRUQ1WnNnRWlDUkVTT2JBQkw3SUFBUW9yV0NIWUcvUlpzQWtRc2djQkNpdFlJZGdiOUZteUR3QUJFUkk1c0JvUXNSSUtLMWpZRzl4Wk1ERVROVE0yTmpVUUlTRTFJUllXRlJRSEZoTVZNeFVVQmdjbk5qY2pKaWMxTkNZanI2bWttLzdLL3ZFQkllajA1ZDRFcVdGTmFsRU9hendEa25jQ2VaY0JmWVVCQlpjRDBzbmlaRWIrK0ttVVljaEFTSE51Tkt1UGZvMEFBQUVBZWY3SEE5a0VPZ0FnQUYyeUlDRWlFUkk1QUxBWEw3QUFSVml3Q0M4YnNRZ1lQbG13QUVWWXNCb3ZHN0VhRUQ1WnNnRWhDQkVTT2JBQkw3SUFBUW9yV0NIWUcvUlpzQWdRc2dZQkNpdFlJZGdiOUZteUR3QUJFUkk1c0JvUXNSSUtLMWpZRzl4Wk1ERVRKek0yTlRRaklUVWhGaGNXRlJRSEZoY1ZNeFVVQmdjbk5qY2pKaWMxTkNQQ0FkdnA5ZjdwQVNmZGJGYSt2UUdhWWsxcFZBMW5Nd0xhQWJpWEFxR3lsZ05uVTRTaFNUWEtUSlJoeWo1SWRIMGhoVjYwQUFFQVJQL3JCM0FGc0FBakFHS3lBQ1FsRVJJNUFMQUFSVml3RGk4YnNRNGNQbG13QUVWWXNDQXZHN0VnRUQ1WnNBQkZXTEFITHh1eEJ4QStXYkFPRUxJQUFRb3JXQ0hZRy9SWnNBY1FzZ2dCQ2l0WUlkZ2I5Rm13SUJDeUV3RUtLMWdoMkJ2MFdiSVpEaUFSRWprd01RRWhBd0lDQmdjak5UYytBamNUSVJFVUZqTXlOamMySnpjV0ZnY0dBZ2NISWlZMUJDZitHaG9QV2F5UVB5aGRaRFFMSGdOZldVK0Nsd1FDUDdvY0tRSUQ2Y011czdjRkV2Mi8vdDcrM0lrQ25RSUhhK3J6QXNMN3JHQjB6YnpBMGdGbXgyYnMvdG9TQXJxMEFBQUJBRC8vNndZNkJEb0FJUUJpc2lBaUl4RVNPUUN3QUVWWXNBd3ZHN0VNR0Q1WnNBQkZXTEFlTHh1eEhoQStXYkFBUlZpd0JpOGJzUVlRUGxtd0RCQ3lBQUVLSzFnaDJCdjBXYkFHRUxJSEFRb3JXQ0hZRy9SWnNCNFFzaEVCQ2l0WUlkZ2I5Rm15Rmg0TUVSSTVNREVCSVFNQ0JnY2pOVGMyTmpjVElSRVVGak15TmpjMkp6TVhGZ2NPQWlNaUppY0RNZjY3RnhTY3BVRTJWVTBORndLdldrOXNld1FFUWJNV01BTUNiTDU0cnJNQkE2SCtXdjdyNUFLakJBcW4wd0lQL1NGZ2ViZXJzc3RRc1h5YTVubTRzUUFCQUtuLzV3ZHhCYkFBSFFDdXNoUWVIeEVTT1FDd0FFVllzQUF2RzdFQUhENVpzQUJGV0xBWkx4dXhHUncrV2JBQVJWaXdFUzhic1JFUVBsbXdBRVZZc0Jjdkc3RVhFRDVac0JFUXNnUUJDaXRZSWRnYjlGbXlDZ0FSRVJJNXNCY1FzQnpRc0J3dnN1OGNBWEd5WHh3QlhiTFBIQUZkc2g4Y0FYRzBieHgvSEFKeHRMOGN6eHdDY2JLZkhBRnhzazhjQVhHeS94d0JYYkt2SEFGZHNpOGNBVjIwRHh3ZkhBSnlzajhjQVhLeUZRRUtLMWdoMkJ2MFdUQXhBUkVVRmpNMk5qYzJKemNXRmdjT0FpTUdKaWNSSVJFakVUTVJJUkVFNlYxS2hwUUVCRUs3R3lzQ0FudllpcXUxQ1AxQ3djRUN2Z1d3KzZ4bGJ3TE51cmZiQVdMS1o2ajdnd1M0dXdFbi9YOEZzUDF1QXBJQUFRQ1EvK2NHVFFRNkFCd0FvN0liSFI0UkVqa0FzQUJGV0xBRUx4dXhCQmcrV2JBQVJWaXdDQzhic1FnWVBsbXdBRVZZc0Jrdkc3RVpFRDVac0FCRldMQUNMeHV4QWhBK1diQUgwTEFITDdKdkJ3RmR0TDhIendjQ1hiSS9Cd0Z4dE04SDN3Y0NjYklQQndGeXRKOEhyd2NDY2JML0J3RmRzZzhIQVhHeW53Y0JYYkl2QndGZHRHOEhmd2NDY3JJQUFRb3JXQ0hZRy9SWnNCa1FzZzBCQ2l0WUlkZ2I5Rm15RWhrSUVSSTVNREVCSVJFakVUTVJJUkV6RVJRV016WTJOelluTXhjV0J3WUNJd1ltSndORC9nYTV1UUg2dVZ4TmJId0VCRUd5RnpBREJPYTdwN01JQWMzK013UTYvaW9CMXYwaFpIVUN0YXVzMFZPeGVlcis4UVMzdXdBQkFIYi82d1NnQmNVQUlnQkhzaFVqSkJFU09RQ3dBRVZZc0Frdkc3RUpIRDVac0FCRldMQUFMeHV4QUJBK1diQUpFTElPQVFvcldDSFlHL1Jac0FBUXNoWUJDaXRZSWRnYjlGbXlHd0FKRVJJNU1ERUZJaVFDSnhFMEVpUXpNaGNISmlNaUFoVVZGQllXTXpZMk56WW5NeGNXQnc0Q0FybWsvdmlWQXBRQkNxWGNoenVHb3F6WFlyQnhqWllEQXpXNkpoTUJBbnZlRlpzQkdLMEJFSzhCSHAxWWlrVCsvdEwrZzlWMUFwbUdtcyt6VzF1SXlXMEFBUUJsLytzRHh3Uk9BQjRBUkxJVEh5QVJFamtBc0FCRldMQVRMeHV4RXhnK1diQUFSVml3Q3k4YnNRc1FQbG15QUFFS0sxZ2gyQnYwV2JJRkN4TVJFam13RXhDeUdBRUtLMWdoMkJ2MFdUQXhKVFkyTnpRbk14WUhCZ1lqSWdBMU5UUTJOak15RndjbUl5SUdGUlVVRmdKUllGb0NGTEljQVFURXJkeis4SGJXaTdsZ0xHT0tnNXVtZ2dKUVdYcHlsbGFacVFFeTl4NlgrWXhDa0RyY3N4K3Iyd0FCQUNQLzV3VkhCYkFBR0FCTnNnVVpHaEVTT1FDd0FFVllzQUl2RzdFQ0hENVpzQUJGV0xBVkx4dXhGUkErV2JBQ0VMSUFBUW9yV0NIWUcvUlpzQVRRc0FYUXNCVVFzZ2tCQ2l0WUlkZ2I5Rm15RGdJVkVSSTVNREVCSVRVaEZTRVJGQll6TmpZU0p6Y1dGZ2NPQWlNR0ppY0IvdjRsQklEK0hGeE1ocFFJUXJvYkt3TUNlZG1KcXJjSUJSS2VudnhJWUhJQzBBRnUyd0ZpeW1lcCtZUUV0N3dBQUFFQVJ2L25CTGNFT2dBWUFFMnlGaGthRVJJNUFMQUFSVml3QWk4YnNRSVlQbG13QUVWWXNCVXZHN0VWRUQ1WnNBSVFzZ0FCQ2l0WUlkZ2I5Rm13Qk5Dd0JkQ3dGUkN5Q1FFS0sxZ2gyQnYwV2JJT0ZRSVJFamt3TVFFaE5TRVZJUkVVRmpNMk5qYzJKek1XRmdjR0JpTUdKaWNCclA2YUE0ditsVjVOY1hjREJFQ3lLaHNCQk9pNXFyTUlBNlNXbHYyMVkzUUNuWW1Ycm4yTVBORHZCTG01QUFFQWx2L3NCUDhGeFFBcEFHK3lKQ29yRVJJNUFMQUFSVml3Rmk4YnNSWWNQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnTUJDaXRZSWRnYjlGbXdDeEN3QnRDeUpRc1dFUkk1c0NVdnNzOGxBVjJ5bnlVQmNiSW1BUW9yV0NIWUcvUlpzaEFtSlJFU09iQVdFTEFiMExBV0VMSWVBUW9yV0NIWUcvUlpNREVCRkJZek1qWTFNeFFHQmlNZ0pEVTBKU1ltTlRRa0lUSVdGaFVqTkNZaklnWVZGQllYTXhVakJnWUJXTSt3bTh6QmpmNmQvdnYreEFFVWVJWUJKUUVHay9XTXdjR1NwOEt0bzhURXNiVUJrbmlTbUhTRHZtZmx4ZjlXTUtabHhOdGx1blZuajRoMmRYMENuZ0orQUFJQWJ3UndBc2tGMWdBRkFBMEFJd0N3Q3krd0I5Q3dCeSt3QWRDd0FTK3dDeEN3Qk5Dd0JDK3dCZEFac0FVdkdEQXhBUk16RlFNakFUTVZGaGNISmpVQmtYVEUzMW4rM3FnRFVFbXlCSlFCUWhYK3d3RlNXM3RWTzErN0FQLy9BQ1VDSHdJTkFyWUFCZ0FSQUFELy93QWxBaDhDRFFLMkFBWUFFUUFBLy84QW9nS0xCSTBESWdCR0FaZlpBRXpOUUFELy93Q1FBb3NGeVFNaUFFWUJsNFFBWm1aQUFQLy9BQTMrYkFPaEFBQUFKd0JEQUFuL0F3RUdBRU1KQUFBVUFFQUpBd0lUQWlNQ013SUVYYkt3QWdGZE1ERUFBUUJnQkRFQmVBWVRBQWdBSWJJSUNRb1JFamtBc0FCRldMQUFMeHV4QUI0K1diSUZDUUFSRWptd0JTOHdNUUVYQmdjVkl6VTBOZ0VPYWwwRHVHRUdFMGgvazRoMFpzZ0FBUUF3QkJZQlJ3WUFBQWdBSWJJSUNRb1JFamtBc0FCRldMQUVMeHV4QkI0K1diSUFDUVFSRWptd0FDOHdNUk1uTmpjMU14VUdCcGxwWFFPM0FXRUVGa2lDa0pDQ1pNY0FBUUFrL3VVQk93QzFBQWdBSHJJSUNRb1JFamtBc0FrdnNnUUZDaXRZSWRnYjlGbXdBTkN3QUM4d01STW5OamMxTXhVVUJvMXBXd081WS83bFNYK1NkbVJseWdBQkFFOEVGZ0ZuQmdBQUNBQU1BTEFJTDdBRTBMQUVMekF4QVJVV0Z3Y21KaWMxQVFZRVhXcE5Yd0lHQUpPUWYwaEF3bUdIQVAvL0FHZ0VNUUs3QmhNQUpnRnNDQUFBQndGc0FVTUFBUC8vQUR3RUZnS0dCZ0FBSmdGdERBQUFCd0Z0QVQ4QUFBQUNBQ1QrMHdKa0FQWUFDQUFSQURDeUNoSVRFUkk1c0FvUXNBWFFBTEFTTDdJRUJRb3JXQ0hZRy9SWnNBRFFzQUF2c0FuUXNBa3ZzQVFRc0EzUU1ERVRKelkzTlRNVkZBWVhKelkzTlRNVkZBYU5hVnNEdVdQZGFWc0R1bUgrMDBpSm1ibWtiTk5BU0ltWnVhUnIwUUFBQVFCR0FBQUVKQVd3QUFzQVN3Q3dBRVZZc0Fndkc3RUlIRDVac0FCRldMQUdMeHV4QmhnK1diQUFSVml3Q2k4YnNRb1lQbG13QUVWWXNBSXZHN0VDRUQ1WnNBb1FzZ0FCQ2l0WUlkZ2I5Rm13Qk5Dd0JkQXdNUUVoRVNNUklUVWhFVE1SSVFRay9teTYvbkFCa0xvQmxBT2gvRjhEb1prQmR2NktBQUVBVi81Z0JEUUZzQUFUQUh3QXNBQkZXTEFNTHh1eERCdytXYkFBUlZpd0NpOGJzUW9ZUGxtd0FFVllzQTR2RzdFT0dENVpzQUJGV0xBQ0x4dXhBaEkrV2JBQVJWaXdBQzhic1FBUVBsbXdBRVZZc0FRdkc3RUVFRDVac2dZQkNpdFlJZGdiOUZtd0RoQ3lDQUVLSzFnaDJCdjBXYkFKMExBUTBMQVIwTEFHRUxBUzBMQVQwREF4SVNFUkl4RWhOU0VSSVRVaEVUTVJJUlVoRVNFRU5QNXF1djV6QVkzK2N3R051Z0dXL21vQmx2NWdBYUNYQXdxWkFYYitpcG44OWdBQUFRQ0tBaGNDSWdQTEFBMEFGcklLRGc4UkVqa0FzQU12c1FvS0sxallHOXhaTURFVE5EWXpNaFlWRlJRR0l5SW1OWXB2WEZ0eWJsNWRid01FVjNCdFhTVlhibTlZLy84QWxQLzFBeThBMFFBbUFCSUVBQUFIQUJJQnVRQUEvLzhBbFAvMUJNNEEwUUFtQUJJRUFBQW5BQklCdVFBQUFBY0FFZ05ZQUFBQUFRQW1BaDRBendLM0FBTUFEd0N3QWkreEFRb3JXTmdiM0Zrd01STWpOVFBQcWFrQ0hwa0FBQVlBUlAvckIxY0Z4UUFWQUNNQUp3QTFBRU1BVVFDNHNnSlNVeEVTT2JBQ0VMQWIwTEFDRUxBbTBMQUNFTEFvMExBQ0VMQTIwTEFDRUxCSjBBQ3dBRVZZc0Jrdkc3RVpIRDVac0FCRldMQVNMeHV4RWhBK1diQUQwTEFETDdBSDBMQUhMN0FTRUxBTzBMQU9MN0FaRUxBZzBMQWdMN0lrRWhrUkVqbXdKQyt5SmhrU0VSSTVzQ1l2c0JJUXNpc0VDaXRZSWRnYjlGbXdBeEN5TWdRS0sxZ2gyQnYwV2JBckVMQTUwTEF5RUxCQTBMQWdFTEpIQkFvcldDSFlHL1Jac0JrUXNrNEVDaXRZSWRnYjlGa3dNUUUwTmpNeUZ6WXpNaFlWRlJRR0l5SW5CaU1pSmpVQk5EWXpNaFlWRlJRR0l5SW1OUUVuQVJjREZCWXpNalkxTlRRbUl5SUdGUVVVRmpNeU5qVTFOQ1lqSWdZVkFSUVdNekkyTlRVMEppTWlCaFVETjZlRG1FMVBsNE9vcDRLWlQweVhncXI5RGFlRGhLZWxoSUtxQVdsb0FzZG9zMWhLU0ZaWFNVZFpBY3RZU1VoV1YwbElWL3RDV0VwSFYxWktTRmdCWllPcGVYbW9pMGVEcVhoNHA0c0RlNE9xcW9oSWdhcW5pL3djUWdSeVF2dzNUMlZqVlVwUFpHTlVTazlsWmxKS1QyUmtVd0xxVG1WaVZVbE9abVZUQUFBQkFHd0FtUUlnQTdVQUJnQVFBTEFGTDdJQ0J3VVJFam13QWk4d01RRUJJd0UxQVRNQkhnRUNqZjdaQVNlTkFpYitjd0dFRXdHRkFBRUFXUUNZQWc0RHRRQUdBQkFBc0FBdnNnTUhBQkVTT2JBREx6QXhFd0VWQVNNQkFlY0JKLzdaamdFQy92NER0ZjU3RS81N0FZNEJqd0FCQURzQWJnTnFCU0lBQXdBSkFMQUFMN0FDTHpBeE55Y0JGNk5vQXNkb2JrSUVja0lBLy84QU5nS1FBcnNGcFFNSEFkZ0FBQUtRQUJNQXNBQkZXTEFKTHh1eENSdytXYkFOMERBeEFBQUJBSG9DaXdMNEJib0FEd0JUc2dvUUVSRVNPUUN3QUVWWXNBQXZHN0VBSEQ1WnNBQkZXTEFETHh1eEF4dytXYkFBUlZpd0RTOGJzUTBVUGxtd0FFVllzQVl2RzdFR0ZENVpzZ0VOQXhFU09iQURFTElLQXdvcldDSFlHL1JaTURFVEZ6WXpJQkVSSXhFbUl5SUhFU01SK2g1S2tnRUVxZ09OYml5cUJhdDdpdjdHL2dzQjVybHQvYzRESUFBQUFRQmJBQUFFYUFYRUFDa0FsckloS2lzUkVqa0FzQUJGV0xBWkx4dXhHUncrV2JBQVJWaXdCaThic1FZUVBsbXlLUmtHRVJJNXNDa3ZzZ0FDQ2l0WUlkZ2I5Rm13QmhDeUJBRUtLMWdoMkJ2MFdiQUkwTEFKMExBQUVMQU8wTEFwRUxBUTBMQXBFTEFWMExBVkw3WVBGUjhWTHhVRFhiSVNBZ29yV0NIWUcvUlpzQmtRc0IzUXNCa1FzaUFCQ2l0WUlkZ2I5Rm13RlJDd0pOQ3dFaEN3SnRBd01RRWhGeFFISVFjaE5UTTJOamMxSnlNMU15Y2pOVE1uTkRZek1oWVZJelFtSXlJR0ZSY2hGU0VYSVFNVi9yRURQZ0xkQWZ2NFRTZ3lBZ09xcGdTaW5RYjF5TDdldjM5dmFZSUdBVnorcVFRQlV3SFdSSnBiblowSmcyQUlSWDJJZmJmSDd0U3hhM3lhZmJkOWlBQUZBQjhBQUFZMkJiQUFHd0FmQUNNQUpnQXBBTEVBc0FCRldMQVhMeHV4Rnh3K1diQUFSVml3R2k4YnNSb2NQbG13QUVWWXNBd3ZHN0VNRUQ1WnNBQkZXTEFKTHh1eENSQStXYklRREJjUkVqbXdFQyt3Rk5Dd0ZDKzBEeFFmRkFKZHNDVFFzQ1F2c0JqUXNCZ3ZzQURRc0FBdnNCUVFzaE1CQ2l0WUlkZ2I5Rm13SDlDd0k5Q3dBOUN3RUJDd0hOQ3dIQyt3SU5Dd0lDK3dCTkN3QkMrd0VCQ3lEd0VLSzFnaDJCdjBXYkFMMExBcDBMQUgwTEltRnd3UkVqbXlKd2thRVJJNU1ERUJNeFVqRlRNVkl4RWpBU0VSSXhFak5UTTFJelV6RVRNQklSRXpBU0VuSXdVek5TRWxNeWNCTlNNRlY5L2YzOS9DL3NIK1lzRFoyZG5ad0FGUkFZKy8vR0VCTzJIYUFoVE0vdFQrVEhkM0F1Qm9BNnlZbEpqK0dBSG8vaGdCNkppVW1BSUUvZndDQlB6UWxKU1VtTGI4NTU4QUFBSUFwLy9zQmdNRnNBQWZBQ2dBb3JJaktTb1JFam13SXhDd0VkQUFzQUJGV0xBV0x4dXhGaHcrV2JBQVJWaXdHaThic1JvWVBsbXdBRVZZc0I0dkc3RWVHRDVac0FCRldMQUtMeHV4Q2hBK1diQUFSVml3RkM4YnNSUVFQbG13SGhDeUFBRUtLMWdoMkJ2MFdiQUtFTElGQVFvcldDSFlHL1Jac0FBUXNBN1FzQS9Rc2lFVUZoRVNPYkFoTDdJU0FRb3JXQ0hZRy9SWnNCNFFzQjNRc0IwdnNCWVFzaWNCQ2l0WUlkZ2I5Rmt3TVFFakVSUVdNekkzRndZaklpWTFFU01HQmdjakVTTVJJVElXRnpNUk14RXpBVE15TmpVMEppY2pCZjdLTmtFak5BRkpSbngranhUbng4bTVBWG5LN1JTUHVzcjdZc0NMaTRlRXl3T3IvV0ZCUVF5V0ZKYUtBcCszdlFMOXl3V3d3TFlCQnY3Ni9wS05sNWlPQXYvL0FLai83QWdRQmJBQUpnQTJBQUFBQndCWEJGVUFBQUFIQURrQUFBY3BCYkFBSHdBakFDY0FLd0F3QURVQU9nQzNBTEFBUlZpd0hpOGJzUjRjUGxtd0FFVllzQnN2RzdFYkhENVpzQUJGV0xBQ0x4dXhBaHcrV2JBQVJWaXdEUzhic1EwUVBsbXdBRVZZc0JBdkc3RVFFRDVac2hRUUd4RVNPYkFVTDdBWTBMQVlMN0FjMExBMjBMQUEwTEFFMExBWUVMSVhBUW9yV0NIWUcvUlpzQ2ZRc0NQUXNDdlFzQWZRc0JRUXNDVFFzQ0RRc0NqUXNBalFzQlFRc2hNQkNpdFlJZGdiOUZtd010Q3dEOUN3TGRDd0M5Q3lOQkFlRVJJNXNEUVFzQy9Rc2prZUVCRVNPVEF4QVNFVE13TXpGU01ITXhVaEF5TURJUU1qQXlFMU15Y2pOVE1ETXhNaEV6TURJU2NqQlRNM0lRVXpOeUVUSXhjWE55VWpGeGMzQVRNbkp3Y0Vod0ZUYk1Gemxib3Y2Zjd5ZEsrSS9vU05yM1grOXVVdnRwRnp3RzRCVm9paDR3RWtON1QrZXFVMy92Z0RQNlVzL3ZtNVdRd3BIL3pwVndZZEtBRkVYUmNYRndQVUFkeitKSmpDbVA0ZUFlTCtIZ0hpbU1LWUFkeitKQUhjL01yQ3dzTEN3djZtS3JMR0ZoZkFyUUljVVc5dkFBQUNBSXdBQUFXZUJEb0FEUUFiQUdRQXNBQkZXTEFXTHh1eEZoZytXYkFBUlZpd0FDOGJzUUFZUGxtd0FFVllzQXN2RzdFTEVENVpzQUJGV0xBT0x4dXhEaEErV2JJUkFRb3JXQ0hZRy9SWnNnVVJBQkVTT2JBRkw3QUFFTElLQVFvcldDSFlHL1Jac2c4S0N4RVNPYkFQTHpBeEFUSVdGeEVqRVRRbUp5RVJJeEVCRVRNUklUSTJOeEV6RVFZR0J3SzZyNmdFdVdWdi9yMjVBWW01QVQ1eFp3RzVBcVd0QkRyQnYvNmpBVXgvZUFIOFh3UTYrOFlDM2YyN2RYNENyLzFPd3NRQ0FBQUJBRi8vN0FRY0JjUUFJd0NIc2hVa0pSRVNPUUN3QUVWWXNCWXZHN0VXSEQ1WnNBQkZXTEFKTHh1eENSQStXYklqQ1JZUkVqbXdJeSt5QUFJS0sxZ2gyQnYwV2JBSkVMSUVBUW9yV0NIWUcvUlpzQUFRc0F6UXNDTVFzQS9Rc0NNUXNCL1FzQjh2dGc4Zkh4OHZId05kc2lBQ0NpdFlJZGdiOUZtd0VOQ3dIeEN3RTlDd0ZoQ3lHd0VLSzFnaDJCdjBXVEF4QVNFV0ZqTXlOeGNHSXlJQUF5TTFNelVqTlRNU0FETXlGd2NtSXlJR0J5RVZJUlVoQTFIK2dBUzBwWFJtRkhoNCtQN2pCckt5c3JJS0FSM3phb2NVYlc2a3NRWUJmLzZBQVlBQ0hjUFNJcUFlQVNVQkRIeUpmUUVHQVI4Zm9pUEx2SDJKQUFRQUh3QUFCYndGc0FBWkFCNEFJd0FvQUxnQXNBQkZXTEFMTHh1eEN4dytXYkFBUlZpd0FTOGJzUUVRUGxtd0N4Q3lLQUVLSzFnaDJCdjBXYklrS0FFUkVqbXdKQyt5Y0NRQmNiWUFKQkFrSUNRRFhiSWNBUW9yV0NIWUcvUlpzQjNRc0IwdnNuQWRBWEcyQUIwUUhTQWRBMTJ5SUFFS0sxZ2gyQnYwV2JBaDBMQWhMN0p3SVFGeHNpQWhBVjJ5QUFFS0sxZ2gyQnYwV2JBZ0VMQUQwTEFkRUxBRzBMQUdMN0FjRUxBSDBMQWtFTEFLMExBa0VMQVAwTEFjRUxBUzBMQWRFTEFVMExBVUx6QXhBUkVqRVNNMU16VWpOVE0xSVRJV0Z6TVZJeGNITXhVakJpRUJKeUVWSVFjaEZTRXlBU0VtSXlFQnBjREd4c2JHQWhteDZ6YnN3d01Dd3VWci9vd0JSQVQ5YlFLVlAvMnFBVm1zL2ZzQ1NsU2UvcWdDT3YzR0F6Q1hYcGYwaEhDWE1peVg5Z0czTkY2WFdRSGxWZ0FBQVFBcUFBQUQrQVd3QUJvQVpnQ3dBRVZZc0Jrdkc3RVpIRDVac0FCRldMQU1MeHV4REJBK1diQVpFTElZQVFvcldDSFlHL1Jac0FIUXNCZ1FzQlRRc0JRdnNBUFFzQlFRc2hNQkNpdFlJZGdiOUZtd0J0Q3dFeEN3RHRDd0RpK3lDUUVLSzFnaDJCdjBXYklOQ1E0UkVqa3dNUUVqRmhjekJ5TUdCaU1CRlNNQkp6TTJOamNoTnlFbUp5RTNJUVBLN0VBUnlTNllFdmJiQWUzai9lNEIrWDJjRmYyOUxnSVRNUGIrNXk4RG5RVVNVWFdlc3JUOXhBd0NhWDBCYTF5ZXZnaWVBQUVBSVAvdUJCb0ZzQUFlQUkwQXNBQkZXTEFSTHh1eEVSdytXYkFBUlZpd0JTOGJzUVVRUGxteUV4RUZFUkk1c0JNdnNCZlFzQmN2c2dBWEFWMnlHQUVLSzFnaDJCdjBXYkFaMExBSTBMQUowTEFYRUxBVzBMQUwwTEFLMExBVEVMSVVBUW9yV0NIWUcvUlpzQlhRc0F6UXNBM1FzQk1Rc0JMUXNBL1FzQTdRc0FVUXNob0JDaXRZSWRnYjlGbXlIZ1VSRVJJNXNCNHZNREVCRlFZQ0JDTWlKeEVITlRjMUJ6VTNFVE1STnhVSEZUY1ZCeEUyRWhFMUJCb0NrUDczcjFCczlQVDA5TUQ3Ky92N3Zza0RBMlRTL3NlbUVnSmFiN0p2bVcreWJ3Rlovdjl6c25PWmM3SnovZDRDQVJBQkNWZ0FBUUJkQUFBRTZ3UTZBQmNBWExJQUdCa1JFamtBc0FCRldMQVdMeHV4RmhnK1diQUFSVml3QkM4YnNRUVFQbG13QUVWWXNBb3ZHN0VLRUQ1WnNBQkZXTEFRTHh1eEVCQStXYklBQ2hZUkVqbXdBQyt5Q1FFS0sxZ2gyQnYwV2JBTTBMQUFFTEFWMERBeEFSWUFFUlVqTlNZQ0p4RWpFUVlDQnhVak5SSUFOelV6QXYvbkFRVzVBcDZUdVkrZkFya0RBUWZmdVFOeElmNk4vdHEzeU44QkJTRDlOQUxLSWY3MTJNYkZBUjBCYlNMSkFBSUFId0FBQlFNRnNBQVdBQjhBYlFDd0FFVllzQXd2RzdFTUhENVpzQUJGV0xBREx4dXhBeEErV2JJR0F3d1JFam13QmkreUJRRUtLMWdoMkJ2MFdiQUIwTEFHRUxBSzBMQUtMN1FQQ2g4S0FsMnlDUUVLSzFnaDJCdjBXYkFVMExBR0VMQVYwTEFLRUxBWDBMQU1FTElmQVFvcldDSFlHL1JaTURFQklSRWpFU00xTXpVak5UTVJJVElFRlJRRUJ5RVZJUUVoTWpZMU5DWW5JUUw4L3JHL3o4L1B6d0laNmdFUy92bnkvcU1CVC82eEFWcWJvcWlQL3FBQkUvN3RBUk9laVowQzJlN0wxZWNCaVFFbWtveC9uUUVBQkFCNi8rc0Znd1hGQUJzQUp3QTFBRGtBdDdJY09qc1JFam13SEJDd0FOQ3dIQkN3S05Dd0hCQ3dPTkFBc0FCRldMQUtMeHV4Q2h3K1diQUFSVml3SlM4YnNTVVFQbG13Q2hDd0E5Q3dBeSt5RGdvREVSSTV0aW9PT2c1S0RnTmRzQW9Rc2hFRUNpdFlJZGdiOUZtd0F4Q3lHQVFLSzFnaDJCdjBXYkliQXdvUkVqbTBOaHRHR3dKZHNpVWJBVjJ3SlJDd0g5Q3dIeSt3SlJDeUt3UUtLMWdoMkJ2MFdiQWZFTEl5QkFvcldDSFlHL1Jac2pZbENoRVNPYkEyTDdJNENpVVJFam13T0M4d01RRVVCaU1pSmpVMU5EWXpNaFlWSXpRbUl5SUdGUlVVRmpNeU5qVUJORFlnRmhVVkZBWWdKalVYRkJZek1qWTFOVFFtSXlJR0ZRVW5BUmNDcUpoN2VxR2VlM21jaWtsQ1FVMVBRVDFNQVJDbkFRYW9wLzc4cW9wWVNraFdWMGxIV2Y0R2FRTEhhUVFlYnBDb2lVZUNxNUZ2T2sxbVVrbE9aVXc2L1VlRHFhaUxSNE9wcDRzR1QyVmpWVXBQWkdOVTgwSUVja0lBQUFJQWFQL3JBMm9HRXdBWEFDRUFaTElUSWlNUkVqbXdFeEN3R05BQXNBQkZXTEFNTHh1eERCNCtXYkFBUlZpd0FDOGJzUUFRUGxteUJnd0FFUkk1c0FZdnNnVUJDaXRZSWRnYjlGbXdFOUN3QUJDeUZ3RUtLMWdoMkJ2MFdiQUdFTEFZMExBTUVMSWZBUW9yV0NIWUcvUlpNREVGSWlZMUJpTTFNamNSTmpZek1oWVZGUlFDQnhVVUZqTUROalkxTlRRbUl5SUhBc3pDMG1KdWNWOEJuWVY0bDg2cmEzRGJXV2N3Sm1jREZlcnJITEFqQWlTeXhxMlRKY0grajJ0aW1vMENZMVgxZXlkU1RORUFBQVFBb2dBQUI4WUZ3QUFEQUJBQUhnQW9BS095SHlrcUVSSTVzQjhRc0FIUXNCOFFzQVRRc0I4UXNCSFFBTEFBUlZpd0p5OGJzU2NjUGxtd0FFVllzQ1V2RzdFbEhENVpzQUJGV0xBSEx4dXhCeHcrV2JBQVJWaXdJaThic1NJUVBsbXdBRVZZc0NBdkc3RWdFRDVac0FjUXNBM1FzQUxRc0FJdnNoQUNBVjJ5QVFNS0sxZ2gyQnYwV2JBTkVMSVVBd29yV0NIWUcvUlpzQWNRc2hzRENpdFlJZGdiOUZteUlTVWdFUkk1c2lZZ0pSRVNPVEF4QVNFMUlRRTBOaUFXRlJVVUJpTWlKalVYRkJZek1qWTNOVFFtSXlJR0ZRRWpBUkVqRVRNQkVUTUhwUDJaQW1mOWRib0JPTHU1bko2Nm8xOVdWRjBCWDFWVVgvNjh6UDJ2dWNzQ1ZMY0JuSTRDUFp1K3U2TmRuYnE3b1FWaWEycGdaV0ZyYTJQN213UnUrNUlGc1B1UEJIRUFBZ0JuQTVjRU9BV3dBQXdBRkFCdEFMQUFSVml3Qmk4YnNRWWNQbG13QUVWWXNBa3ZHN0VKSEQ1WnNBQkZXTEFUTHh1eEV4dytXYklCRlFZUkVqbXdBUyt5QUFrQkVSSTVzZ01CQmhFU09iQUUwTElJQVFrUkVqbXdBUkN3QzlDd0JoQ3hEUW9yV05nYjNGbXdBUkN3RDlDd0RSQ3dFZEN3RXRBd01RRURJd01SSXhFekV4TXpFU01CSXhFakVTTTFJUVBlakRTTVduQ1FrSEJhL2d1VFc1UUJnZ1VoL25ZQmlmNTNBaG4rY1FHUC9lY0J5UDQ0QWNoUkFBQUNBSmovN0FTVEJFNEFGUUFjQUdLeUFoMGVFUkk1c0FJUXNCYlFBTEFBUlZpd0NpOGJzUW9ZUGxtd0FFVllzQUl2RzdFQ0VENVpzaG9LQWhFU09iQWFMN0lQQ2dvcldDSFlHL1Jac0FJUXNoTUtDaXRZSWRnYjlGbXlGUW9DRVJJNXNBb1FzaFlLQ2l0WUlkZ2I5Rmt3TVNVR0l5SW1BalUwRWpZek1oWVdGeFVoRVJZek1qY0JJZ2NSSVJFbUJCYTN1NUgwaDVENGhJWGpoQVA5QUhlYXhLeitrSmQ2QWh4elhuS2RBUUdUandFRG40dnprRDcrdUc1NkF5cDYvdXNCSG5ILy93QlUvL1VGc3dXYkFDY0IxZi9hQW9ZQUp3RjhBT1lBQUFBSEFkd0RGQUFBLy84QVpQLzFCbE1GdEFBbkFkY0FKZ0tVQUNjQmZBR2xBQUFBQndIY0E3UUFBUC8vQUdQLzlRWkpCYVFBSndIWkFBZ0Nqd0FuQVh3Qmd3QUFBQWNCM0FPcUFBRC8vd0JaLy9VRi9RV2tBQ2NCMndBZkFvOEFKd0Y4QVNBQUFBQUhBZHdEWGdBQUFBSUFhdi9yQkRJRjdBQWJBQ29BVzdJVkt5d1JFam13RlJDd0k5QUFzQTB2c0FCRldMQVZMeHV4RlJBK1diSUFEUlVSRWptd0FDK3lBd0FWRVJJNXNBMFFzZ2NCQ2l0WUlkZ2I5Rm13QUJDeUhBRUtLMWdoMkJ2MFdiQVZFTElqQVFvcldDSFlHL1JaTURFQk1oWVhMZ0lqSWdjbk56WXpJQUFSRlJRQ0JpTWlBRFUxTkFBWElnWVZGUlFXTXpJMk5UVW5KaVlDUEYybU9nNXBwbUNCbXhBeGRKY0JCd0VmZU42UTJ2NzRBUURrakorZmlvNmZCQnlnQS81TlJJelplVHVYRlREK1R2NXVNcnorMXFVQkkvWU8zQUVRbUx1Z0VLclArZHM5RDFwcUFBQUJBS24vS3dUbEJiQUFCd0FuQUxBRUw3QUFSVml3Qmk4YnNRWWNQbG13QkJDd0FkQ3dCaEN5QWdFS0sxZ2gyQnYwV1RBeEJTTVJJUkVqRVNFRTVibjlOcmtFUE5VRjdmb1RCb1VBQVFCRi92TUVxd1d3QUF3QU5RQ3dBeSt3QUVWWXNBZ3ZHN0VJSEQ1WnNBTVFzZ0lCQ2l0WUlkZ2I5Rm13QmRDd0NCQ3lDZ0VLSzFnaDJCdjBXYkFIMERBeEFRRWhGU0UxQVFFMUlSVWhBUU5yL2JzRGhmdWFBbUg5bndRWi9NY0NSZ0pCL1VxWWp3TE1BdEtRbVAxQ0FBRUFxQUtMQStzRElnQURBQnNBc0FCRldMQUNMeHV4QWhZK1diSUJBUW9yV0NIWUcvUlpNREVCSVRVaEErdjh2UU5EQW91WEFBRUFQd0FBQkpnRnNBQUlBRHl5QXdrS0VSSTVBTEFITDdBQVJWaXdBUzhic1FFY1BsbXdBRVZZc0FNdkc3RURFRDVac2dBQkF4RVNPYkFIRUxJR0FRb3JXQ0hZRy9SWk1ERUJBVE1CSXdNak5TRUNNQUdydmYzaWpmVzVBVHNCSEFTVStsQUNkSm9BQXdCaS8rc0h5d1JPQUJ3QUxBQThBRyt5QnowK0VSSTVzQWNRc0NUUXNBY1FzRFRRQUxBQVJWaXdCQzhic1FRUVBsbXdBRVZZc0Fvdkc3RUtFRDVac0JQUXNCTXZzQm5Rc0JrdnNnY1pCQkVTT2JJV0dRUVJFam13Q2hDeUlBRUtLMWdoMkJ2MFdiQVRFTElwQVFvcldDSFlHL1Jac0REUXNDQVFzRG5RTURFQkZBSUdJeUltSndZR0l5SW1BalUxTkJJMk16SVdGelkyTXpJQUZRVVVGak15TmpjM05TNENJeUlHRlNVMEppTWlCZ2NIRlI0Q016STJOUWZMZnQrSmtlNVFVZXlRaWQ2QWZ0K0lrZTFSVU8rU3pnRVcrVkNtaUhLNU5Bc1ljcEpRaHFZRjk2YUZjN3cxQ1JaMWtGQ0lwUUlQay84QWtiaXhzN2FQQVFDWEdKTUJBSkszczdHNS9zSHpEYkhjdktNbkttUEFZZHk1Q0s3ZnZhZ2ZLbUhGWU42NEFBSC9zUDVMQW80R0ZRQVZBRDJ5QWhZWEVSSTVBTEFBUlZpd0RpOGJzUTRlUGxtd0FFVllzQU12RzdFREVqNVpzZ2dCQ2l0WUlkZ2I5Rm13RGhDeUV3RUtLMWdoMkJ2MFdUQXhCUlFHSXlJbk54WXpNalVSTkRZek1oY0hKaU1pRlFGbHBKNDVPaEl1SVp1eG9UeFVHQ1UydG11aXFCU1JEYkVGR2FxK0ZZNEwyd0FDQUdVQkdBUUxBL1FBRlFBckFJMnlIQ3d0RVJJNXNCd1FzQVhRQUxBREw3SVBBd0Zkc0EzUXNBMHZzZ0FOQVYyeUNBRUtLMWdoMkJ2MFdiQURFTEFLMExBS0w3QURFTElTQVFvcldDSFlHL1Jac0EwUXNCWFFzQlV2c0EwUXNCblFzQmt2c0NQUXNDTXZzZ0FqQVYyeUhnRUtLMWdoMkJ2MFdiQVpFTEFnMExBZ0w3QVpFTElvQVFvcldDSFlHL1Jac0NNUXNDdlFzQ3N2TURFVE5qWXpOaGNYRmpNeU54VUdJeUluSnlZSElnWUhCelkyTXpZWEZ4WXpNamNYQmlNaUp5Y21CeUlHQjJZd2cwSlNTcGhDVG9abVo0Vk9RcUZFVDBLRE1BRXdna0pTU3BWRVVJVm1BV2VGVGtLWVNsSkNnekFEaFRNNkFpTk9INEMrYlI5VEh3SkVQT1V6T3dJalRTR0F2VzBmVGlNQ1JEd0FBQUVBbUFDYkE5b0UxUUFUQURjQXNCTXZzZ0FCQ2l0WUlkZ2I5Rm13Qk5Dd0V4Q3dCOUN3RXhDd0Q5Q3dEeSt5RUFFS0sxZ2gyQnYwV2JBSTBMQVBFTEFMMERBeEFTRUhKemNqTlNFM0lUVWhFeGNITXhVaEJ5RUQydjN0amw5c3JnRUxsZjVnQWY2WlgzZkQvdCtVQWJVQmovUTd1YUQvb1FFR084dWgvd0QvL3dBK0FBSURnUVErQUdZQUlBQmhRQUE1bWdFSEFaZi9sdjEzQUIwQXNBQkZXTEFGTHh1eEJSZytXYkFBUlZpd0NDOGJzUWdRUGxrd01RRC8vd0NGQUFFRDNBUlJBR1lBSWdCelFBQTVtZ0VIQVpmLzNmMTJBQjBBc0FCRldMQUNMeHV4QWhnK1diQUFSVml3Q0M4YnNRZ1FQbGt3TVFBQUFnQXJBQUFEM0FXd0FBVUFDUUE0c2dnS0N4RVNPYkFJRUxBQjBBQ3dBRVZZc0FBdkc3RUFIRDVac0FCRldMQURMeHV4QXhBK1diSUdBQU1SRWpteUNBQURFUkk1TURFQk13RUJJd2tFQWJ5TUFaVCtjSTMrYkFIVy91a0JIQUVZQmJEOUovMHBBdGNDRC8zeC9mSUNEZ0QvL3dDMUFLY0Jtd1QxQUNjQUVnQWxBTElBQndBU0FDVUVKQUFDQUc0Q2VRSXpCRG9BQXdBSEFDd0FzQUJGV0xBQ0x4dXhBaGcrV2JBQVJWaXdCaThic1FZWVBsbXdBaEN3QU5Dd0FDK3dCTkN3QmRBd01STWpFVE1CSXhFeis0Mk5BVGlOalFKNUFjSCtQd0hCQUFBQkFGei9Yd0ZYQU84QUNBQWdzZ2dKQ2hFU09RQ3dDUyt3Qk5Dd0JDKzBRQVJRQkFKZHNBRFFzQUF2TURFWEp6WTNOVE1WRkFiRmFVZ0NzVStoU0cxL1hFeGJzd0QvL3dBOEFBQUU5Z1lWQUNZQVNnQUFBQWNBU2dJc0FBQUFBZ0FmQUFBRHpRWVZBQlVBR1FDRHNnZ2FHeEVTT2JBSUVMQVgwQUN3QUVWWXNBZ3ZHN0VJSGo1WnNBQkZXTEFETHh1eEF4ZytXYkFBUlZpd0VTOGJzUkVZUGxtd0FFVllzQmd2RzdFWUdENVpzQUJGV0xBQUx4dXhBQkErV2JBQVJWaXdGaThic1JZUVBsbXdBeEN5QVFFS0sxZ2gyQnYwV2JBSUVMSU5BUW9yV0NIWUcvUlpzQUVRc0JQUXNCVFFNREV6RVNNMU16VTBOak15RndjbUl5SUdGUlV6RlNNUklTTVJNOHFycTgrOWNLc2ZmWEYzYWQzZEFrbTZ1Z09yajF5MXlqMmNNbXRyWG8vOFZRUTZBQUVBUEFBQUEra0dGUUFXQUZ3QXNBQkZXTEFTTHh1eEVoNCtXYkFBUlZpd0JpOGJzUVlZUGxtd0FFVllzQWt2RzdFSkVENVpzQUJGV0xBV0x4dXhGaEErV2JBU0VMSUNBUW9yV0NIWUcvUlpzQVlRc2djQkNpdFlJZGdiOUZtd0M5Q3dCaEN3RHRBd01RRW1JeUlWRlRNVkl4RWpFU00xTXpVMk5qTXlCUkVqQXpCOFRNam41N21ycXdIQXNXVUJLN2tGWXhUU2E0LzhWUU9yajNhdHVEMzZLQUFBQWdBOEFBQUdNZ1lWQUNjQUt3Q2RBTEFBUlZpd0ZpOGJzUlllUGxtd0FFVllzQWd2RzdFSUhqNVpzQUJGV0xBZ0x4dXhJQmcrV2JBQVJWaXdFaThic1JJWVBsbXdBRVZZc0FRdkc3RUVHRDVac0FCRldMQXFMeHV4S2hnK1diQUFSVml3S1M4YnNTa1FQbG13QUVWWXNDTXZHN0VqRUQ1WnNBQkZXTEFuTHh1eEp4QStXYkFnRUxJaEFRb3JXQ0hZRy9SWnNDWFFzQUhRc0FnUXNnMEJDaXRZSWRnYjlGbXdHOUF3TVRNUkl6VXpOVFEyTXpJWEJ5WWpJZ1lWRlNFMU5EWXpNaGNISmlNaUJoVVZNeFVqRVNNUklSRWhJeEV6NTZ1cnVxcEFQd292TlZwaUFaRFB2WENySDMxeWQybmUzcm4rY0FTU3Via0RxNDl2cnI0UmxnbHBZbkpjdGNvOW5ESnFiRjZQL0ZVRHEveFZCRG9BQUFFQVBBQUFCaklHRlFBb0FHb0FzQUJGV0xBSUx4dXhDQjQrV2JBQVJWaXdJUzhic1NFWVBsbXdBRVZZc0Nndkc3RW9FRDVac0NFUXNpSUJDaXRZSWRnYjlGbXdKdEN3QWRDd0lSQ3dFdEN3Qk5Dd0NCQ3lEUUVLSzFnaDJCdjBXYkFJRUxBVzBMQW9FTEFsMExBYTBMQU5FTEFkMERBeE14RWpOVE0xTkRZek1oY0hKaU1pQmhVVklUVTJOak15QlJFakVTWWpJaFVWTXhVakVTTVJJUkhucTZ1NnFrQS9DaTgxV21JQmtBSEFzV1VCSzdsOFRNam41N24rY0FPcmoyK3V2aEdXQ1dsaWNuYXR1RDM2S0FWakZOSnJqL3hWQTZ2OFZRQUJBRHovN0FTYkJoVUFKZ0J6QUxBQVJWaXdJUzhic1NFZVBsbXdBRVZZc0Iwdkc3RWRHRDVac0FCRldMQVlMeHV4R0JBK1diQUFSVml3Q2k4YnNRb1FQbG13SFJDd0VOQ3dKZEN5QVFFS0sxZ2gyQnYwV2JBS0VMSUZBUW9yV0NIWUcvUlpzQUVRc0E3UXNDRVFzaFVCQ2l0WUlkZ2I5Rm13RGhDd0d0QXdNUUVqRVJRV016STNGd1lqSWlZMUVTTTFNeEVtSnljaUZSRWpFU00xTXpVME5qTXlGaGNSTXdTV3lqWkJJelFCU1VaOGZzWEZQV1lZdDdtcnE3T2dYZHRheWdPci9XRkJRUXlXRkphS0FwK1BBUjhjQndIZCsyQURxNDl3cmI0NUxQNktBQUFCQUYvLzdBWlVCaEVBVEFDNXNoWk5UaEVTT1FDd0FFVllzRWN2RzdGSEhqNVpzQUJGV0xBUEx4dXhEeGcrV2JBQVJWaXdTeThic1VzWVBsbXdBRVZZc0VBdkc3RkFHRDVac0FCRldMQUpMeHV4Q1JBK1diQUFSVml3TEM4YnNTd1FQbG13U3hDeUFRRUtLMWdoMkJ2MFdiQUpFTElFQVFvcldDSFlHL1Jac0FFUXNBM1FzRWNRc2hRQkNpdFlJZGdiOUZtd1FCQ3lJQUVLSzFnaDJCdjBXYkk2TEVBUkVqbXdPaEN5SlFFS0sxZ2gyQnYwV2JBc0VMSTBBUW9yV0NIWUcvUlpNREVCSXhFVU16STNGd1lqSWlZMUVTTTFNelUwSmlNaUJoVVVIZ0lWSXpRbUl5SUdGUlFXQkJZV0ZSUUdJeUltSmpVekZoWXpNalkxTkNZa0ppWTFORFl6TWhjbU5UUTJNeklXRlJVekJrL0tkeU0wQVUxQ2RvUzh2R1ppV0Z3ZkpSNjZnV0psY21vQkZheFQ2TG1DeUhHNUJZdHlhWDl4L3VlbFQrR3ZZRllzeXB1NXljb0RxLzErbnd5V0ZLYVhBb0tQVlhKMVdFWTdhWEI4VEV4dVdFZERSRDVXZVZlUnIxeWxZRjF0VlVkTFV6eFVkRkNGdUI1dVVueWx4OE5OQUFBV0FGditjZ2Z1QmE0QURRQWFBQ2dBTndBOUFFTUFTUUJQQUZZQVdnQmVBR0lBWmdCcUFHNEFkZ0I2QUg0QWdnQ0dBSW9BamdHK3NoQ1BrQkVTT2JBUUVMQUEwTEFRRUxBYjBMQVFFTEF3MExBUUVMQTgwTEFRRUxBKzBMQVFFTEJHMExBUUVMQkswTEFRRUxCUTBMQVFFTEJYMExBUUVMQmIwTEFRRUxCaDBMQVFFTEJqMExBUUVMQm4wTEFRRUxCdDBMQVFFTEJ3MExBUUVMQjMwTEFRRUxCNzBMQVFFTEIvMExBUUVMQ0UwTEFRRUxDSTBMQVFFTENNMEFDd1BTK3dBRVZZc0VZdkc3RkdIRDVac241SkF5dXllbnNESzdLQ2R3TXJzbjg2QXl1eUNqMUdFUkk1c0FvdnNBUFFzQU12c0E3UXNBNHZzQW9Rc0EvUXNBOHZzbEFPRHhFU09iQlFMN0p2QndvcldDSFlHL1Jac2hWUWJ4RVNPYkFLRUxJZUJ3b3JXQ0hZRy9SWnNBTVFzaVVIQ2l0WUlkZ2I5Rm13RHhDd0tkQ3dLUyt3RGhDd0x0Q3dMaSt5TkFjS0sxZ2gyQnYwV2JBOUVMSThDZ29yV0NIWUcvUlpzRDBRc0d2UXNHZlFzR1BRc0Q3UXNEd1FzR3pRc0dqUXNHVFFzRC9Rc0RvUXNFSFFzRVlRc0dEUXNGelFzRmpRc0V2UXNrb0tDaXRZSWRnYjlGbXdXdEN3WHRDd1l0Q3dSOUN3U1JDd1R0Q3dEaEN5VVFjS0sxZ2gyQnYwV2JBUEVMSjJCd29yV0NIWUcvUlpzSGNRc0lUUXNIb1FzSVhRc0hzUXNJalFzSDRRc0luUXNIOFFzSXpRc0lJUXNJM1FNREVCRkFZaklpWW5OVFEyTXpJV0Z4TVJNeklXRlJRSEZoWVZGQ01CTkNZaklnWVZGUlFXTXpJMk5RRXpFUlFHSXlJbU5UTVVNekkyTlFFUk14VXpGU0UxTXpVekVRRVJJUlVqRlNVMUlSRWpOUUVWTXpJMU5DY1ROU0VWSVRVaEZTRTFJUlVCTlNFVklUVWhGU0UxSVJVVE16STFOQ1lqSXdFak5UTTFJelV6RVNNMU15VWpOVE0xSXpVekVTTTFNd001Z1dSbWdBSithR1dBQWtPOFluSlVNalRRL285S1FVQktTa0pBU1FPNlhHbFNXRzFkYUNrMitjUnh4QVVveDIvNGJRRTF4QVhzQVRadi9GeCtaMkxMQVJiOVd3RVYvVndCRkFJS0FSYjlXd0VWL1Z3QkZMeGRkam84WGZ6eGNYRnhjWEZ4QnlKdmIyOXZiMjhCMUdKNWVGNTFYM3g0WHY2ekFpVkpUVlFnRFVZdG13RklSVTVPUlhCRlRrNUZBVS8raGs1ZFVWTmJOaXo4eVFFN3luRnh5djdGQmg4QkhYU3BxWFQrNDZuOHRxbFRVZ1FEU25SMGRIUjBkUGs0Y1hGeGNYRnhBOFJRS1I3KzAveCsrdndWK1g3OGZ2cjhGZmtBQlFCYy9kVUgxd2h6QUFNQUhBQWdBQ1FBS0FCU3N4RVBFQVFyc3dRUEhBUXJzd29QRndRcnNBUVFzQjNRc0J3UXNCN1FBTEFoTDdBbEw3SWNIZ01yc0NVUXNBRFFzQUF2c0NFUXNBTFFzQUl2c2cwQUFoRVNPYkFOTDdJZkhnSVJFam13SHk4d01Ra0RCVFEyTnpZMk5UUW1JeUlHQnpNMk5qTXlGaFVVQndZR0ZSY2pGVE1ETXhVakF6TVZJd1FZQTcvOFFmeEVCQThlSkVwY3A1V1FvQUxMQWpvck9UaGRXeS9LeXNwTEJBUUNCQVFHVXZ3eC9ERUR6L0U2T2hnbmgwcUFsNHQvTXpSQU5GODhRVnhNVzZyOVRBUUtuZ1FBQVFBN0FBQUQwZ1d3QUFZQU1nQ3dBRVZZc0FVdkc3RUZIRDVac0FCRldMQUJMeHV4QVJBK1diQUZFTElEQVFvcldDSFlHL1Jac2dBREJSRVNPVEF4QVFFakFTRTFJUVBTL2I2NkFrRDlKUU9YQlVqNnVBVVltQUFBQWdCYS8rd0VSQVJPQUJBQUhBQTJBTEFBUlZpd0JDOGJzUVFZUGxtd0FFVllzQXd2RzdFTUVENVpzaFFCQ2l0WUlkZ2I5Rm13QkJDeUdnRUtLMWdoMkJ2MFdUQXhFelEyTmpNeUFCVVZGQVlHSXlJbUppYzNGQll6TWpZMU5DWWpJZ1phZ09PUTNRRWFmdVdTaitPQkFybXZqWTZ1c1kyTHJ3SW5uUCtNL3N6N0RwMzhqSWo1bWdxdzN1REVyK0RlQUFBQi83YitTd0ZuQUpnQURBQW5BTEFOTDdBQVJWaXdCQzhic1FRU1BsbXlDUUVLSzFnaDJCdjBXYkFORUxBTTBMQU1MekF4SlJVR0JpTWlKemNXTXpJMU5RRm5BYXFYT3pRT0hrT0ptUFdvc0JLZERjTHBBQUVBWi82WkFTRUFtUUFEQUJJQXNBUXZzQUxRc0FJdnNBSFFzQUV2TURFQkl4RXpBU0c2dXY2WkFnQUFBZ0NEQk5rQzBnYlFBQTBBSVFCN0FMQURMN0FIMExBSEwwQU5Ed2NmQnk4SFB3ZFBCMThIQmwyd0F4Q3lDZ1FLSzFnaDJCdjBXYkFIRUxBTjBMQU5MN0FIRUxBUjBMQVJMN0FVMExBVUwwQUxEeFFmRkM4VVB4UlBGQVZkc0JFUXNCZlFzQmN2c0JRUXNoc0VDaXRZSWRnYjlGbXdFUkN5SGdRS0sxZ2gyQnYwV2JBYkVMQWgwREF4QVJRR0l5SW1OVE1VRmpNeU5qVVRGQVlqSWlZaklnWVZKelEyTXpJV016STJOUUxTb1lhSG9aWktTRWRLaldCR09uY3NJakJUWUVVd2dTd2pNQVd1WDNaMlh6WkFRRFlCQ2twcFN6TW1GVXRyU3pNbUFBQUNBSUVFNEFMS0J3TUFEUUFjQUdVQXNBTXZzQWZRc0FjdlFBMFBCeDhITHdjL0IwOEhYd2NHWGJBREVMSUtCQW9yV0NIWUcvUlpzQWNRc0EzUXNBMHZzQWNRc0E3UXNBNHZzQlhRc0JVdlFBOFBGUjhWTHhVL0ZVOFZYeFZ2RlFkZHNCVFFzZzhVRGhFU09iSWJEaFVSRWprd01RRVVCaU1pSmpVekZCWXpNalkxSnljMk5qVTBJemN5RmhVVUJnY0hBc3FoZzRTaGtrcEpSVXpKQVVwQ29BZVFsRkZFQVFXd1huSnpYVFUrUFRZUmZBUVlIVHRTVGtJeU93YytBQUFDQUlFRTN3TGdCb29BRFFBUkFGOEFzQU12c0FmUXNBY3ZRQTBQQng4SEx3Yy9CMDhIWHdjR1hiQURFTElLQkFvcldDSFlHL1Jac0FjUXNBM1FzQTB2c0FjUXNCRFFzQkF2c0EvUXNBOHZRQThQRHg4UEx3OC9EMDhQWHc5dkR3ZGRzQkFRc0JIUUdiQVJMeGd3TVFFVUJpTWlKalV6RkJZek1qWTFKek1ISXdMZ3FJZUlxSmhQU1VkUFlKbWtaZ1d3WDNKeVh6YzlQelhheGdBQ0FHa0U1QU5HQnRRQUJnQWFBSVVBc0FNdnNBSFFzQUV2c0FiUXNBWXZRQWtQQmg4R0x3WS9CZ1Jkc2dRREJoRVNPUm13QkM4WXNBRFFzZ0lHQVJFU09iQUdFTEFLMExBS0w3US9DazhLQWwyd0RkQ3dEUzlBRFE4Tkh3MHZEVDhOVHcxZkRRWmRzQW9Rc0JEUXNCQXZzQTBRc2hRRUNpdFlJZGdiOUZtd0NoQ3lGd1FLSzFnaDJCdjBXYkFVRUxBYTBEQXhBU01uQnlNbE16Y1VCaU1pSmlNaUJoVW5ORFl6TWhZek1qWTFBMGFxeGNXcEFTMkR3MkJCTm00b0hUWk5ZRUFxZkNZZk5BVGtucDcwNVQ1ZVJ5NGRFejlpUmkwY0FBSUFhUVRrQSt3R3p3QUdBQlVBWVFDd0F5K3dCZEN3QlMrMkR3VWZCUzhGQTEyeUJBTUZFUkk1R2JBRUx4aXdBTkN3QXhDd0FkQ3dBUyt5QWdVREVSSTVzQWZRc0FjdnNBN1FzQTR2UUEwUERoOE9MdzQvRGs4T1h3NEdYYkFOMExJSUJ3MFJFam15RkE0SEVSSTVNREVCSXljSEl3RXpGeWMyTmpVMEl6Y3lGaFVVQmdjSEEwYXF4Y1dwQVJDOHZnRkJPNDBGZ0laS1BBRUU1THE2QVFaOGd3UWFJVU5jV0VrN1FnYzhBQUwvWGdUUEEwWUdnZ0FHQUFvQVhRQ3dBeSt5RHdNQlhiQUUwQm13QkM4WXNBRFFHYkFBTHhpd0F4Q3dBZEN3QVMrd0J0Q3dCaSsyRHdZZkJpOEdBMTJ5QWdNR0VSSTVzQU1Rc0FqUXNBZ3ZzQWZRR2JBSEx4aXdDQkN3Q3RDd0NpKzJEd29mQ2k4S0ExMHdNUUVqSndjakFUTUZJd016QTBiRnFxckVBU0tZL28rTXlNY0V6NTZlQVFaVkFRSUFBQUlBYmdUaEJGZ0dsUUFHQUFvQVhRQ3dBeSt5RHdNQlhiQUYwTEFGTDdBQTBMQUFMN1lQQUI4QUx3QURYYkFERUxBQzBCbXdBaThZc2dRREFCRVNPYkFHMEJtd0JpOFlzQU1Rc0FuUXNBa3ZzQWZRc0FjdnRnOEhId2N2QndOZHNBa1FzQXJRR2JBS0x4Z3dNUUV6QVNNbkJ5TUJNd01qQVpLWUFTTEZxYXJHQXlMSXlZMEY2UDc1bjU4QnRQNzlBQUlBZ1FUZkF1QUdpZ0FOQUJFQVh3Q3dBeSt3QjlDd0J5OUFEUThISHdjdkJ6OEhUd2RmQndaZHNBTVFzZ29FQ2l0WUlkZ2I5Rm13QnhDd0RkQ3dEUyt3QnhDd0VkQ3dFUyt3RDlDd0R5OUFEdzhQSHc4dkR6OFBUdzlmRDI4UEIxMndFUkN3RU5BWnNCQXZHREF4QVJRR0l5SW1OVE1VRmpNeU5qVWxNeGNqQXVDb2g0aW9tRTlKUjAvK3BwcHdaUVd3WDNKeVh6YzlQelhheGdBQUFRQ2ZCSTRCbGdZN0FBZ0FEQUN3QUMrd0JOQ3dCQzh3TVFFWEJnY1ZJelUwTmdFcmF6c0R1VlFHTzFOamI0aUNUYTBBQUFJQUV3QUFCSEFFalFBSEFBb0FSZ0N3QUVWWXNBUXZHN0VFR2o1WnNBQkZXTEFDTHh1eEFoQStXYkFBUlZpd0JpOGJzUVlRUGxteUNRUUNFUkk1c0FrdnNnQUJDaXRZSWRnYjlGbXlDZ1FDRVJJNU1ERUJJUU1qQVRNQkl3RWhBd05HL2ZodXZRSGZwZ0hZdlAzR0FaSEhBUmYrNlFTTiszTUJyZ0g5QUFNQWlnQUFBKzhFalFBT0FCWUFIZ0JvQUxBQVJWaXdBUzhic1FFYVBsbXdBRVZZc0FBdkc3RUFFRDVac2hjQUFSRVNPYkFYTDdLL0Z3RmR0QjhYTHhjQ1hiVGZGKzhYQWwyeUR3RUtLMWdoMkJ2MFdiSUlEeGNSRWptd0FCQ3lFQUVLSzFnaDJCdjBXYkFCRUxJZUFRb3JXQ0hZRy9SWk1ERXpFU0V5RmhVVUJnY1dGaFVVQmdjQkVTRXlOalUwSXlVek1qWTFOQ2NqaWdHVzBkNWZXR04wMnNuKzl3RUdjM3JyL3ZqcWJIemw3UVNObzV0UmZpRVlsV1dlcmdFQ0V2NkZZbFhFalZWVHFBVUFBQUVBWVAvd0JEQUVuUUFjQUV5eUF4MGVFUkk1QUxBQVJWaXdDeThic1FzYVBsbXdBRVZZc0FNdkc3RURFRDVac0FzUXNBL1FzQXNRc2hJQkNpdFlJZGdiOUZtd0F4Q3lHUUVLSzFnaDJCdjBXYkFERUxBYzBEQXhBUVlHSXlJQUVUVTBOall6TWhZWEl5WW1JeUlHQnhVVUZqTXlOamNFTUJUODBlRCs4WHZubU16M0U3a1NqWDZacHdHZmw0ZU5GQUY1dTg0Qkp3RURYcVQ1aU5PN2duVEx2V3E5ejIrREFBSUFpZ0FBQkI4RWpRQUtBQlFBUnJJQ0ZSWVJFam13QWhDd0ZOQUFzQUJGV0xBQkx4dXhBUm8rV2JBQVJWaXdBQzhic1FBUVBsbXdBUkN5Q3dFS0sxZ2gyQnYwV2JBQUVMSU1BUW9yV0NIWUcvUlpNREV6RVNFeUZoWVhGUlFBSVFNUk16STJOVFUwSmlPS0FXbWkrNHdEL3NuKytaNmt1c2E5dHdTTmhmYWZUZnorMWdQMC9LUFF3RURBelFBQkFJb0FBQU91QkkwQUN3QlVBTEFBUlZpd0JpOGJzUVlhUGxtd0FFVllzQVF2RzdFRUVENVpzQXZRc0FzdnN0OExBVjJ5SHdzQlhiSUFBUW9yV0NIWUcvUlpzQVFRc2dJQkNpdFlJZGdiOUZtd0JoQ3lDQUVLSzFnaDJCdjBXVEF4QVNFUklSVWhFU0VWSVJFaEExZjk3QUpyL053REh2MmJBaFFDRHY2Smx3U05tZjZ5QUFFQWlnQUFBNXNFalFBSkFFRUFzQUJGV0xBRUx4dXhCQm8rV2JBQVJWaXdBaThic1FJUVBsbXdDZEN3Q1MreUh3a0JYYklBQVFvcldDSFlHL1Jac0FRUXNnWUJDaXRZSWRnYjlGa3dNUUVoRVNNUklSVWhFU0VEUy8zNHVRTVIvYWdDQ0FIei9nMEVqWm4rbUFBQUFRQmovL0FFTlFTZEFCMEFYN0lLSGg4UkVqa0FzQUJGV0xBS0x4dXhDaG8rV2JBQVJWaXdBeThic1FNUVBsbXlIUW9ERVJJNXNCMHZzZzBkQ2hFU09iQUtFTElRQVFvcldDSFlHL1Jac0FNUXNoY0JDaXRZSWRnYjlGbXdIUkN5R2dNS0sxZ2gyQnYwV1RBeEpRWUdJeUlBSnpVUUFETXlGaGNqSmlNaUJoVVZGQll6TWpjMUlUVWhCRFZDNlpmdS91QUNBUXZ5eVBJYnVDYjFuNmE1b0xaUi91Y0IwWlpUVXdFcS9Gb0JCZ0VudkxYWnpzZFV2dGRLN3BBQUFBRUFpZ0FBQkZnRWpRQUxBRk1Bc0FCRldMQUdMeHV4QmhvK1diQUFSVml3Q2k4YnNRb2FQbG13QUVWWXNBQXZHN0VBRUQ1WnNBQkZXTEFFTHh1eEJCQStXYklKQUFvUkVqbDhzQWt2R0xLakNRRmRzZ0lCQ2l0WUlkZ2I5Rmt3TVNFakVTRVJJeEV6RVNFUk13Ull1ZjJrdWJrQ1hMa0I4djRPQkkzOS9RSURBQUFCQUpjQUFBRlJCSTBBQXdBZEFMQUFSVml3QWk4YnNRSWFQbG13QUVWWXNBQXZHN0VBRUQ1Wk1ERWhJeEV6QVZHNnVnU05BQUFCQUN2LzhBTk5CSTBBRHdBMXNnVVFFUkVTT1FDd0FFVllzQUF2RzdFQUdqNVpzQUJGV0xBRkx4dXhCUkErV2JBSjBMQUZFTElNQVFvcldDSFlHL1JaTURFQk14RVVCaU1pSmpVekZCWXpNalkxQXBLNzFMSEMyN3B4Y2x4dUJJMzh4WjNGdDZSZVptMWZBQUFCQUlvQUFBUlhCSTBBREFCTUFMQUFSVml3QkM4YnNRUWFQbG13QUVWWXNBZ3ZHN0VJR2o1WnNBQkZXTEFDTHh1eEFoQStXYkFBUlZpd0N5OGJzUXNRUGxteUFBSUlFUkk1c2dZQ0JCRVNPYklLQWdnUkVqa3dNUUVIRVNNUk14RTNBVE1CQVNNQjFwTzV1WUlCamVQK0lRSUI0UUlIanY2SEJJMzkxWkFCbS8zNS9Yb0FBQUVBaWdBQUE0c0VqUUFGQUNnQXNBQkZXTEFFTHh1eEJCbytXYkFBUlZpd0FpOGJzUUlRUGxteUFBRUtLMWdoMkJ2MFdUQXhKU0VWSVJFekFVTUNTUHovdVplWEJJMEFBQUVBaWdBQUJYY0VqUUFPQUdDeUFROFFFUkk1QUxBQVJWaXdBQzhic1FBYVBsbXdBRVZZc0FJdkc3RUNHajVac0FCRldMQUVMeHV4QkJBK1diQUFSVml3Q0M4YnNRZ1FQbG13QUVWWXNBd3ZHN0VNRUQ1WnNnRUFCQkVTT2JJSEFBUVJFam15Q2dBRUVSSTVNREVKQWpNUkl4RVRBU01CRXhFakVRRjZBWWNCaGZHNEUvNXlpUDV6RTdnRWpmeHhBNC83Y3dHUkFoWDhXZ09pL2UvK2J3U05BQUVBaWdBQUJGZ0VqUUFKQUVVQXNBQkZXTEFGTHh1eEJSbytXYkFBUlZpd0NDOGJzUWdhUGxtd0FFVllzQUF2RzdFQUVENVpzQUJGV0xBREx4dXhBeEErV2JJQ0JRQVJFam15QndVQUVSSTVNREVoSXdFUkl4RXpBUkV6QkZpNC9hTzV1UUpkdUFOcy9KUUVqZnlUQTIwQUFBSUFZUC93QkZvRW5RQU5BQnNBUnJJREhCMFJFam13QXhDd0VkQUFzQUJGV0xBS0x4dXhDaG8rV2JBQVJWaXdBeThic1FNUVBsbXdDaEN5RVFFS0sxZ2gyQnYwV2JBREVMSVlBUW9yV0NIWUcvUlpNREVCRUFBaklnQVJOUkFBTXpJQUZ3YzBKaU1pQmhVVkZCWXpNalkxQkZyKzdPamwvdWNCRitYcEFSTUN0NnlibHErd2w1eXBBaVQrKy83UkFUSUJCejRCQWdFMC90RC9CY2JTMXNWQ3c5ZlR4d0FDQUlvQUFBUWJCSTBBQ2dBVEFFMnlDaFFWRVJJNXNBb1FzQXpRQUxBQVJWaXdBeThic1FNYVBsbXdBRVZZc0FFdkc3RUJFRDVac2dzREFSRVNPYkFMTDdJQUFRb3JXQ0hZRy9SWnNBTVFzaElCQ2l0WUlkZ2I5Rmt3TVFFUkl4RWhNaFlWRkFZakpTRXlOalUwSmljaEFVTzVBZFBNOHVyVy91Z0JHbnlJaUhmKzRRRzIva29FamNlb3FyNllhbVJnZHdFQUFnQlovellFVndTZEFCTUFJUUJOc2dnaUl4RVNPYkFJRUxBZTBBQ3dBRVZZc0JBdkc3RVFHajVac0FCRldMQUlMeHV4Q0JBK1diSURDQkFSRWptd0VCQ3lGd0VLSzFnaDJCdjBXYkFJRUxJZUFRb3JXQ0hZRy9SWk1ERUJGQVlIRndjbEJpTWlBQkUxTkJJMk16SUFFU2MwSmlNaUJnY1ZGQll6TWpZMUJGVndadGg4L3ZrMlJ1VCs1WC9vbHVvQkZiZXNuSlNzQks2WW5Lb0NKS2J6UnFCdnh3MEJNUUVJUHFrQkE0cit6Zjc1QnNiU3o3bFZ3dGpUeHdBQ0FJb0FBQVFsQkkwQURRQVdBR0d5RlJjWUVSSTVzQlVRc0FYUUFMQUFSVml3QkM4YnNRUWFQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFNTHh1eERCQStXYklQQkFJUkVqbXdEeSt5QUFFS0sxZ2gyQnYwV2JJS0FBUVJFam13QkJDeUZRRUtLMWdoMkJ2MFdUQXhBU0VSSXhFaE1oWVZGQWNCRlNNQk16STJOVFFtSXlNQ1d2N3B1UUdxMWVmckFTREcvZVQyZFltR2Z2QUJ3ZjQvQkkyNnF1UlovaDRLQWxodFhXUnVBQUVBUS8vd0E5MEVuUUFsQUZvQXNBQkZXTEFKTHh1eENSbytXYkFBUlZpd0hDOGJzUndRUGxteUFod0pFUkk1c0FrUXNBM1FzQWtRc2hBQkNpdFlJZGdiOUZtd0FoQ3lGZ0VLSzFnaDJCdjBXYkFjRUxBZzBMQWNFTElqQVFvcldDSFlHL1JaTURFQk5DWWtKeVkxTkRZek1oWVZJelFtSXlJR0ZSUVdCQllXRlJRR0l5SWtOVE1VRmpNeU5nTWplZjdhVnNQenY4VDV1WTE1Y1laN0FUaXdWdlBIei83dnVwcU1mb0lCS2xCWVNpdGlzNCt5eUp4aWExbFFRVmhRWlloYms2bkxvbVp5V3dBQkFDZ0FBQVA5QkkwQUJ3QXVBTEFBUlZpd0JpOGJzUVlhUGxtd0FFVllzQUl2RzdFQ0VENVpzQVlRc2dBQkNpdFlJZGdiOUZtd0JOQXdNUUVoRVNNUklUVWhBLzMrY2JuK2N3UFZBL1Q4REFQMG1RQUJBSFQvOEFRS0JJMEFFUUE4c2dRU0V4RVNPUUN3QUVWWXNBQXZHN0VBR2o1WnNBQkZXTEFJTHh1eENCbytXYkFBUlZpd0JDOGJzUVFRUGxteURRRUtLMWdoMkJ2MFdUQXhBUkVVQmlNaUppY1JNeEVVRmpNeU5qVVJCQXI2MGRMMkE3ZVBoWU9QQkkzODlMYmIwN1lERlB6MGVZRi9ld01NQUFFQUZBQUFCRk1FalFBSUFERUFzQUJGV0xBREx4dXhBeG8rV2JBQVJWaXdCeThic1FjYVBsbXdBRVZZc0FVdkc3RUZFRDVac2dFREJSRVNPVEF4QVJjM0FUTUJJd0V6QWhvWkdnRkF4djQzcmY0M3h3RWtYbHdEYS90ekJJMEFBQUVBTVFBQUJmRUVqUUFTQUdDeURoTVVFUkk1QUxBQVJWaXdBeThic1FNYVBsbXdBRVZZc0Fndkc3RUlHajVac0FCRldMQVJMeHV4RVJvK1diQUFSVml3Q2k4YnNRb1FQbG13QUVWWXNBOHZHN0VQRUQ1WnNnRURDaEVTT2JJR0F3b1JFam15RFFNS0VSSTVNREVCRnpjVE14TVhOeE16QVNNQkp3Y0JJd0V6QWE4TEQvaWw5QTBNeHJqKzFxNysvQUVCL3ZTdC90ZTNBU1pRUUFOMy9JWTdVQU5sKzNNRGxRVUYvR3NFalFBQUFRQW1BQUFFTVFTTkFBc0FVd0N3QUVWWXNBRXZHN0VCR2o1WnNBQkZXTEFLTHh1eENobytXYkFBUlZpd0JDOGJzUVFRUGxtd0FFVllzQWN2RzdFSEVENVpzZ0FCQkJFU09iSUdBUVFSRWpteUF3QUdFUkk1c2drR0FCRVNPVEF4QVFFekFRRWpBUUVqQVFFekFpZ0JIOXorZFFHWjNQN1YvdGpjQVpiK2M5c0MyZ0d6L2I3OXRRRzcva1VDU3dKQ0FBQUJBQTBBQUFRY0JJMEFDQUF4QUxBQVJWaXdBUzhic1FFYVBsbXdBRVZZc0Fjdkc3RUhHajVac0FCRldMQUVMeHV4QkJBK1diSUFBUVFSRWprd01RRUJNd0VSSXhFQk13SVVBVGpRL2xLNS9salFBa29DUS8wSy9ta0JvZ0xyQUFBQkFFY0FBQVBnQkkwQUNRQkVBTEFBUlZpd0J5OGJzUWNhUGxtd0FFVllzQUl2RzdFQ0VENVpzZ0FCQ2l0WUlkZ2I5Rm15QkFBQ0VSSTVzQWNRc2dVQkNpdFlJZGdiOUZteUNRVUhFUkk1TURFbElSVWhOUUVoTlNFVkFTOENzZnhuQXBqOWNRTjRsNWQ4QTNpWmVRQUFBZ0JRLy9VQ25RTWdBQTBBRndCR3NnTVlHUkVTT2JBREVMQVEwQUN3QUVWWXNBb3ZHN0VLRmo1WnNBQkZXTEFETHh1eEF4QStXYkFLRUxJUUFnb3JXQ0hZRy9SWnNBTVFzaFVDQ2l0WUlkZ2I5Rmt3TVFFVUJpTWlKaWMxTkRZek1oWVhKelFqSWdjVkZETXlOd0tkbUkyTG5BR2JpNDJZQXAyS2hRU0xoQVFCUmFLdXJLQ09vNjZzblFmQXRMUEN0UUFCQUhvQUFBSHZBeFVBQmdBMUFMQUFSVml3QlM4YnNRVVdQbG13QUVWWXNBRXZHN0VCRUQ1WnNnUUZBUkVTT2JBRUw3SURBZ29yV0NIWUcvUlpzQUxRTURFaEl4RUhOU1V6QWUrZDJBRmpFZ0paT1lCMUFBRUFRZ0FBQXFzRElBQVdBRlN5Q0JjWUVSSTVBTEFBUlZpd0RpOGJzUTRXUGxtd0FFVllzQUF2RzdFQUVENVpzaFVDQ2l0WUlkZ2I5Rm13QXRDeUZCVU9FUkk1c2dNT0ZCRVNPYkFPRUxJSUFnb3JXQ0hZRy9SWnNBNFFzQXZRTURFaElUVUJOalUwSmlNaUJoVWpORFlnRmhVVUR3SWhBcXY5cVFFc2JVQThTMGVkcHdFSW1tdFVzQUdQYkFFYVprVXhQVXc1Y3BSL2JtaHJUNUVBQVFBKy8vVUNtZ01nQUNZQWNRQ3dBRVZZc0E0dkc3RU9GajVac0FCRldMQVpMeHV4R1JBK1diSUFHUTRSRWpsOHNBQXZHTGFBQUpBQW9BQURYYkFPRUxJSEFnb3JXQ0hZRy9SWnNnb0FCeEVTT2JBQUVMSW1BZ29yV0NIWUcvUlpzaFFtQUJFU09iQVpFTElnQWdvcldDSFlHL1Jac2gwbUlCRVNPVEF4QVRNeU5qVTBKaU1pQmhVak5EWXpNaFlWRkFZSEZoVVVCaU1pSmpVekZCWXpNalkxTkNjakFRbFVTa2cvUmpsTG5hTjhpWnhHUXBXcWlJU21uazlEUmttY1dBSExQVEF0T2pNcFludDVhRGRiR1NtUGFuMStheTA4UEROeEFnQUFBZ0EyQUFBQ3V3TVZBQW9BRGdCSkFMQUFSVml3Q1M4YnNRa1dQbG13QUVWWXNBUXZHN0VFRUQ1WnNnRUpCQkVTT2JBQkw3SUNBZ29yV0NIWUcvUlpzQWJRc0FFUXNBdlFzZ2dMQmhFU09iSU5DUVFSRWprd01RRXpGU01WSXpVaEp3RXpBVE1SQndKUWEydWQvb2tHQVhtaC9vVGZFUUVyZ3FtcFpnSUcvaFlCSVJ3QUFRQmIvL1VDcHdNVkFCc0FZUUN3QUVWWXNBRXZHN0VCRmo1WnNBQkZXTEFOTHh1eERSQStXYkFCRUxJRUNRb3JXQ0hZRy9SWnNnY05BUkVTT2JBSEw3SVpBZ29yV0NIWUcvUlpzZ1VIR1JFU09iQU5FTEFSMExBTkVMSVRBZ29yV0NIWUcvUlpzQWNRc0J2UU1ERVRFeUVWSVFjMk16SVdGUlFHSXlJbUp6TVdNekkyTlRRbUl5SUhjRElCM3Y2akZrRktnSStnaG5tbkJwc0tnVUZJVGtwSk93R0RBWktFcWgySmVYeVJmbVZqUzBRK1RTc0FBQUlBVnYvMUFxc0RIZ0FUQUI4QVRnQ3dBRVZZc0FBdkc3RUFGajVac0FCRldMQU1MeHV4REJBK1diQUFFTElCQWdvcldDSFlHL1Jac2dZTUFCRVNPYkFHTDdJVUFnb3JXQ0hZRy9SWnNBd1FzaHNDQ2l0WUlkZ2I5Rmt3TVFFVkl3UUhOak15RmhVVUJpTWlKalUxTkRZM0F5SUdCeFVVRmpNeU5qUW1BaWdSL3ZRWFNISjJoNStFaTZmZXpYNHpUUkZUUHoxT1J3TWVnd0xiVFpGM2RKcW1selBRNUFYK2Jpd2dJbFJWVDN4TUFBQUJBRG9BQUFLbEF4VUFCZ0F5QUxBQVJWaXdCUzhic1FVV1BsbXdBRVZZc0FJdkc3RUNFRDVac0FVUXNnUUNDaXRZSWRnYjlGbXlBQVVFRVJJNU1ERUJBU01CSVRVaEFxWCtvNllCWGY0N0Ftc0N1LzFGQXBPQ0FBQURBRS8vOVFLZkF5QUFFd0FlQUNnQWVnQ3dBRVZZc0JFdkc3RVJGajVac0FCRldMQUdMeHV4QmhBK1diSWtCaEVSRWptd0pDKzIzeVR2SlA4a0ExMjJEeVFmSkM4a0ExMnkveVFCY2JRUEpCOGtBbkt5RndJS0sxZ2gyQnYwV2JJQ0pCY1JFam15REJja0VSSTVzQVlRc2gwQ0NpdFlJZGdiOUZtd0VSQ3lId0lLSzFnaDJCdjBXVEF4QVJRSEZoVVVCaUFtTlRRMk55WTFORFl6TWhZRE5DWWpJZ1lWRkJZeU5nTWlCaFVVRmpJMk5DWUNpM2VMb1A3d29FcEFkNWQ5ZnBlSlRqNC9TMHgrVEl3M1B6OXdQMEFDUTNZM080TnFlWGxxUW1FYk4zWm5kbmIrT2pRNk9qUTFPam9COERVd0xqZzRYRGNBQUFJQVNmLzVBcFVESUFBU0FCNEFXZ0N3QUVWWXNBZ3ZHN0VJRmo1WnNBQkZXTEFQTHh1eER4QStXYklDRHdnUkVqbXdBaSsyRHdJZkFpOENBMTJ3RHhDeUVBSUtLMWdoMkJ2MFdiQUNFTElUQWdvcldDSFlHL1Jac0FnUXNoa0NDaXRZSWRnYjlGa3dNUUVHSXlJbU5UUTJNeklXRnhVUUJRYzFNalluTWpjMU5DWWpJZ1lWRkJZQjlrVmxkbzJqZ1ltY0EvNXpONWFFZTE0cVR6dzdURW9CUUVHS2ZubWdwWlE5L21RVUFYOWlua2M4VTFCVVEwRk9BQUVBandLTEF3c0RJZ0FEQUJFQXNBSXZzZ0VCQ2l0WUlkZ2I5Rmt3TVFFaE5TRURDLzJFQW53Q2k1Y0FBd0NlQkVBQ2JnWnlBQU1BRHdBYkFISUFzQUJGV0xBTkx4dXhEUmcrV2JBSDBMQUhMMEFKUHdkUEIxOEhid2NFWGJBQzBMQUNMN1kvQWs4Q1h3SURYYkFBMExBQUwwQVJEd0FmQUM4QVB3QlBBRjhBYndCL0FBaGRzQUlRc0FQUUdiQURMeGl3RFJDeUV3Y0tLMWdoMkJ2MFdiQUhFTElaQndvcldDSFlHL1JaTURFQk13Y2pCelEyTXpJV0ZSUUdJeUltTnhRV016STJOVFFtSXlJR0FiRzkzSEtDWkVoRVkyRkdTR1JWTXlRak1EQWpKVElHY3JqWFJtRmVTVWRjWGtVak1qRWtKakkwQUFNQUh2NUtCQkVFVGdBcEFEY0FSQUNQQUxBQVJWaXdKaThic1NZWVBsbXdBRVZZc0JZdkc3RVdFajVac0NZUXNDblFzQ2t2c2dBRENpdFlJZGdiOUZteUNCWW1FUkk1c0FndnNnNElGaEVTT2JBT0w3U1FEcUFPQWwyeU53RUtLMWdoMkJ2MFdiSWNOdzRSRWpteUlBZ21FUkk1c0JZUXNqQUJDaXRZSWRnYjlGbXdDQkN5T3dFS0sxZ2gyQnYwV2JBbUVMSkNBUW9yV0NIWUcvUlpNREVCSXhZWEZSUUdCaU1pSndZVkZCY3pGaFlWRkFZR0l5SW1OVFEyTnlZMU5EY21OVFUwTmpNeUZ5RUJCZ1lWRkJZek1qWTFOQ1luSXdNVUZqTXlOalUxTkNZaUJoVUVFWmM2QVcvRGVFOUpOSHEzeU02TjlKZlIvMTVVT0hPdThidFFSd0Z2L1R3NFBKU0RrczFvYk85MGpHbG5pb3JTaWdPblZHa1pZcVplRlNwQVVBSUJsWTlVb1dDYmVsT0tLaTlLZkZKcXhRdWR5aFQ3K0JwZE4wcFpja3hLUVFJQ3BWTjdlbGdTVjNoNFdnQUFBZ0JrLytzRVdBUk9BQkFBSEFCaEFMQUFSVml3Q1M4YnNRa1lQbG13QUVWWXNBd3ZHN0VNR0Q1WnNBQkZXTEFDTHh1eEFoQStXYkFBUlZpd0VDOGJzUkFRUGxteUFBSUpFUkk1c2dzSkFoRVNPYkFDRUxJVUFRb3JXQ0hZRy9SWnNBa1FzaG9CQ2l0WUlkZ2I5Rmt3TVNVQ0lTSUNOVFVRRWpNZ0V6Y3pBeE1qQVJRV016SVROU1ltSXlJR0E0SnMvdkxBNU9MRUFRbHNJckJxY2JEOWRaS0gwMGdja211R2xmSCsrZ0ViOUE4QkNBRTkvdi90L2VMOTVBSDByOE1CaHlTK3krTUFBZ0N4QUFBRTR3V3ZBQllBSGdCaHNoZ2ZJQkVTT2JBWUVMQUUwQUN3QUVWWXNBTXZHN0VESEQ1WnNBQkZXTEFCTHh1eEFSQStXYkFBUlZpd0R5OGJzUThRUGxteUZ3TUJFUkk1c0JjdnNnQUJDaXRZSWRnYjlGbXlDUmNBRVJJNXNBTVFzaDBCQ2l0WUlkZ2I5Rmt3TVFFUkl4RWhNaFlWRkFjV0V4VVdGeFVqSmljMU5DWWpKU0V5TmpVUUlTRUJjc0VDRHZENzdkNEZBa0hHT3dPTWYvNmVBVG1pbmY3UC9ya0NkUDJNQmEvU3pPVmpSZjc2bkkwOUdEYXNpM2lQblh5RUFRQUFBUUN5QUFBRkhRV3dBQXdBYUFDd0FFVllzQVF2RzdFRUhENVpzQUJGV0xBSUx4dXhDQncrV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0Fzdkc3RUxFRDVac2dZQ0JCRVNPWHl3Qmk4WXRHTUdjd1lDWGJRekJrTUdBbDJ5a3dZQlhiSUJBUW9yV0NIWUcvUlpzZ29CQmhFU09UQXhBU01SSXhFekVUTUJNd0VCSXdJanNjREFsZ0g5Ny8zVUFsWHJBbzc5Y2dXdy9YNENndjArL1JJQUFBRUFrZ0FBQkJRR0FBQU1BRk1Bc0FCRldMQUVMeHV4QkI0K1diQUFSVml3Q0M4YnNRZ1lQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFMTHh1eEN4QStXYklIQ0FJUkVqbXdCeSt5QUFFS0sxZ2gyQnYwV2JJS0FBY1JFamt3TVFFakVTTVJNeEV6QVRNQkFTTUJ6SUM2dW40Qk85ditoZ0d1MndIMS9nc0dBUHlPQWF6K0UvMnpBQUVBc2dBQUJQb0ZzQUFMQUV3QXNBQkZXTEFETHh1eEF4dytXYkFBUlZpd0J5OGJzUWNjUGxtd0FFVllzQUV2RzdFQkVENVpzQUJGV0xBS0x4dXhDaEErV2JJQUF3RVJFam15QlFNQkVSSTVzZ2tBQlJFU09UQXhBUkVqRVRNUk13RXpBUUVqQVhMQXdBd0NZL0g5YXdLOTdRSzEvVXNGc1AxNUFvZjlPLzBWQUFBQkFKSUFBQVB4QmhnQURBQk1BTEFBUlZpd0JDOGJzUVFlUGxtd0FFVllzQWd2RzdFSUdENVpzQUJGV0xBQ0x4dXhBaEErV2JBQVJWaXdDeThic1FzUVBsbXlBQWdDRVJJNXNnWUlBaEVTT2JJS0JnQVJFamt3TVFFakVTTVJNeEV6QVRNQkFTTUJVQVM2dWdFQml2RCtLd0gvNUFIei9nMEdHUHgxQWEzK0RmMjVBQUFCQUVQL0V3UGRCWE1BS3dCbUFMQUFSVml3Q1M4YnNRa2FQbG13QUVWWXNDSXZHN0VpRUQ1WnNnSWlDUkVTT2JBSkVMQU0wTEFKRUxBUTBMQUpFTElUQVFvcldDSFlHL1Jac0FJUXNoa0JDaXRZSWRnYjlGbXdJaEN3SDlDd0loQ3dKdEN3SWhDeUtRRUtLMWdoMkJ2MFdUQXhBVFFtSkNjbU5UUTJOelV6RlJZV0ZTTTBKaU1pQmhVVUZnUVdGaFVVQmdjVkl6VW1KalV6RkJZek1qWURJM24rMmxiRHk2YVZvOGE1alhseGhuc0JPTEJXdzZtVnV0KzZtb3grZ2dFcVVGaEtLMkt6Z3F3UTJkc1Z3b2hpYTFsUVFWaFFaWWhiZ3FZUTRlRVR3cFJtY2xzQUFBRUFNQUFBQSs4RW5RQWdBR0FBc0FCRldMQVVMeHV4RkJvK1diQUFSVml3Qnk4YnNRY1FQbG15RHdjVUVSSTVzQTh2c2c0RUNpdFlJZGdiOUZtd0FkQ3dCeEN5QkFFS0sxZ2gyQnYwV2JBSTBMQVVFTEFZMExBVUVMSWJBUW9yV0NIWUcvUlpzQThRc0IvUU1ERUJJUmNXQnlFSElUVXpOamMzSnlNMU15Y21Oak15RmhVak5DWWpJZ1lYRnlFREhmNXdBUVU0QXBRQi9JUUtUd2tCQWFTZ0JBYkx0YmZLdVdoZ1hXZ0VCQUdVQWZRaXkyK1ltQmZkUmlKNWU4bnN6TGR3ZDQrS2V3QUFBUUFXQUFBRUpRU05BQmNBaWdDd0FFVllzQmN2RzdFWEdqNVpzQUJGV0xBQkx4dXhBUm8rV2JBQVJWaXdEUzhic1EwUVBsbXlBQTBYRVJJNXNoQU5GeEVTT2JBUUw3SVBFQUZkc0JUUXNCUXZ0QThVSHhRQ2NVQVBEeFFmRkM4VVB4UlBGRjhVYnhRSFhiQUQwTEFVRUxJVEJBb3JXQ0hZRy9SWnNBYlFzQkFRc0FqUXNCQVFzZzhFQ2l0WUlkZ2I5Rm13QzlBd01RRUJNd0V6RlNFSEZTRVZJUlVqTlNFMUlUVWhOU0VCTXdJZEFUalEvcHY3L3NFRkFVVCt2TG4rdkFGRS9yd0JBUDZjMEFKTEFrTDlqSGtKUW5qZDNYaExlUUowQUFFQWlnQUFBNFVFalFBRkFES3lBUVlIRVJJNUFMQUFSVml3QkM4YnNRUWFQbG13QUVWWXNBSXZHN0VDRUQ1WnNBUVFzZ0FCQ2l0WUlkZ2I5Rmt3TVFFaEVTTVJJUU9GL2I2NUF2c0Q5UHdNQkkwQUFBSUFGQUFBQkZNRWpRQURBQWdBUExJRkNRb1JFam13QlJDd0F0QUFzQUJGV0xBQ0x4dXhBaG8rV2JBQVJWaXdBQzhic1FBUVBsbXlCUUlBRVJJNXNnY0JDaXRZSWRnYjlGa3dNU0VoQVRNREp3Y0JJUVJUKzhFQnlhMDlHaG4rK0FKREJJMyszVnhlL1RBQUFBTUFZUC93QkZvRW5RQURBQkVBSHdCZUFMQUFSVml3RGk4YnNRNGFQbG13QUVWWXNBY3ZHN0VIRUQ1WnNnSUhEaEVTT1h5d0FpOFl0R0FDY0FJQ2NiUmdBbkFDQWwyeUFRRUtLMWdoMkJ2MFdiQU9FTElWQVFvcldDSFlHL1Jac0FjUXNod0JDaXRZSWRnYjlGa3dNUUVoTlNFRkVBQWpJZ0FSTlJBQU16SUFGd2MwSmlNaUJoVVZGQll6TWpZMUExWCtId0hoQVFYKzdPamwvdWNCRitYcEFSTUN0NnlibHErd2w1eXBBZm1aYnY3Ny90RUJNZ0VIUGdFQ0FUVCswUDhGeHRMV3hVTEQxOVBIQUFFQUZBQUFCRk1FalFBSUFEaXlCd2tLRVJJNUFMQUFSVml3QWk4YnNRSWFQbG13QUVWWXNBQXZHN0VBRUQ1WnNBQkZXTEFFTHh1eEJCQStXYklIQWdBUkVqa3dNVE1qQVRNQkl3RW5COXZIQWNtdEFjbkcvc0FhR1FTTiszTURhbHhlQUFBREFENEFBQU5MQkkwQUF3QUhBQXNBWTdJRURBMFJFam13QkJDd0FkQ3dCQkN3Q2RBQXNBQkZXTEFLTHh1eENobytXYkFBUlZpd0FDOGJzUUFRUGxteUFnRUtLMWdoMkJ2MFdiSUhDZ0FSRWptd0J5K3l2d2NCWGJJRUFRb3JXQ0hZRy9SWnNBb1FzZ2dCQ2l0WUlkZ2I5Rmt3TVNFaE5TRURJVFVoRXlFMUlRTkwvUE1ERFVQOWR3S0pRL3p6QXcyWUFYdVlBVW1aQUFFQWlnQUFCRVFFalFBSEFEK3lBUWdKRVJJNUFMQUFSVml3Qmk4YnNRWWFQbG13QUVWWXNBQXZHN0VBRUQ1WnNBQkZXTEFFTHh1eEJCQStXYkFHRUxJQ0FRb3JXQ0hZRy9SWk1ERWhJeEVoRVNNUklRUkV1djI1dVFPNkEvVDhEQVNOQUFBQkFEOEFBQVBJQkkwQURBQkRzZ1lORGhFU09RQ3dBRVZZc0Fndkc3RUlHajVac0FCRldMQURMeHV4QXhBK1diSUJBUW9yV0NIWUcvUlpzQVhRc0FnUXNnb0JDaXRZSWRnYjlGbXdCOUF3TVFFQklSVWhOUUVCTlNFVklRRUNiLzYyQXFQOGR3RlIvcThEVi8yUEFVb0NPdjVmbVpBQnR3RzJrSm4rWHdBREFHQUFBQVVHQkkwQUVRQVhBQjRBWEFDd0FFVllzQkF2RzdFUUdqNVpzQUJGV0xBSUx4dXhDQkErV2JJUEVBZ1JFam13RHkrd0FOQ3lDUWdRRVJJNXNBa3ZzQWJRc0FrUXNoUUJDaXRZSWRnYjlGbXdEeEN5RlFFS0sxZ2gyQnYwV2JBYjBMQVVFTEFjMERBeEFSWUVGUlFFQnhVak5TWWtOVFFrTnpVekFSQUZFUVlHQlRRbUp4RTJOZ01RNWdFUS91M2p1ZW4rOGdFUTU3bitDQUUvbXFVRE5xYVltS1lFRmczNnk4MzhEVzV1RGZ2TXpmc05kdjIxL3RnUkFuTUpsNWlabFFuOWpncVdBQUFCQUdBQUFBUzJCSTBBRlFCY3NnQVdGeEVTT1FDd0FFVllzQU12RzdFREdqNVpzQUJGV0xBUEx4dXhEeG8rV2JBQVJWaXdGQzhic1JRYVBsbXdBRVZZc0Frdkc3RUpFRDVac2hNRENSRVNPYkFUTDdBQTBMQVRFTElMQVFvcldDSFlHL1Jac0FqUU1ERUJKQkVSTXhFR0FnY1JJeEVtQWljUk14RVFCUkV6QXVnQkZia0Q4dG02MmZBRnVnRVV1Z0c3TXdGckFUVCt2ZlArNGhqKzN3RWZGQUVkOGdGTC9zditqaTBDMUFBQkFIVUFBQVIrQkowQUlRQmNzZ2NpSXhFU09RQ3dBRVZZc0Jndkc3RVlHajVac0FCRldMQVBMeHV4RHhBK1diQUFSVml3SUM4YnNTQVFQbG13RHhDeUVRRUtLMWdoMkJ2MFdiQU8wTEFBMExBWUVMSUhBUW9yV0NIWUcvUlpzQkVRc0I3UXNCL1FNREVsTmpZMU5UUW1JeUlHRlJVVUZoY1ZJVFV6SmhFMU5BQXpNZ0FWRlJBSE14VWhBcnVJZjY2ZG5LeU5mLzQrcjdNQkcrZm9BUnl5dGY0OW5SL2Z6U2F6d01HM0ljemZJSjJYblFFNkh1NEJJLzdjOVJ6K3k1eVhBQUVBSnYvc0JTd0VqUUFaQUd1eUZob2JFUkk1QUxBQVJWaXdBaThic1FJYVBsbXdBRVZZc0E0dkc3RU9FRDVac0FCRldMQVlMeHV4R0JBK1diQUNFTElBQVFvcldDSFlHL1Jac0FUUXNBWFFzZ2dDRGhFU09iQUlMN0FPRUxJUEFRb3JXQ0hZRy9SWnNBZ1FzaFVCQ2l0WUlkZ2I5Rmt3TVFFaE5TRVZJUkUyTXpJV0ZSUUdJelV5TmpVMEppTWlCeEVqQVlyK25BT0ovcFNYbk5UaTVlQ05mMzJBblphNUEvU1ptZjdYTWRERXZyNlhiWGlEZVRMOXpnQUFBUUJnLy9BRU1BU2RBQjRBZmJJREh5QVJFamtBc0FCRldMQUxMeHV4Q3hvK1diQUFSVml3QXk4YnNRTVFQbG15RHdzREVSSTVzQXNRc2hJQkNpdFlJZGdiOUZteUZnc0RFUkk1ZkxBV0x4aXlvQllCWGJSZ0ZuQVdBbDJ5TUJZQmNiUmdGbkFXQW5HeUZ3RUtLMWdoMkJ2MFdiQURFTEliQVFvcldDSFlHL1Jac2g0REN4RVNPVEF4QVFZR0l5SUFFVFUwTmpZek1oWVhJeVltSXlJR0J5RVZJUllXTXpJMk53UXdGUHpSNFA3eGUrZVl6UGNUdVJLTmZwbWlCZ0cvL2tFRW9aR0hqUlFCZWJ2T0FTY0JBMTZrK1lqVHU0SjB3NitZc3NKdmd3QUNBQ2NBQUFiN0JJMEFGd0FnQUhheUJDRWlFUkk1c0FRUXNCalFBTEFBUlZpd0VpOGJzUklhUGxtd0FFVllzQU12RzdFREVENVpzQUJGV0xBTEx4dXhDeEErV2JBU0VMSUZBUW9yV0NIWUcvUlpzQXNRc2c0QkNpdFlJZGdiOUZteUZCSURFUkk1c0JRdnNoZ0JDaXRZSWRnYjlGbXdBeEN5R1FFS0sxZ2gyQnYwV1RBeEFSUUdCeUVSSVFNT0FnY2pOemMyTmhNVElSRWhGaFlsRVNFeU5qVTBKaU1HKytiRC9pditYZzhMVFpkN093UXVZRkVLRkFNT0FTVEI0UDA3QVJWeWhJTnpBVzZseHdJRDlQNWw3ZloxQWFVQkJMNEJDUUljL2tvRXdTMytXWFZqWDNBQUFnQ0tBQUFIQ1FTTkFCSUFHd0NKc2dFY0hSRVNPYkFCRUxBVDBBQ3dBRVZZc0FJdkc3RUNHajVac0FCRldMQVJMeHV4RVJvK1diQUFSVml3Q3k4YnNRc1FQbG13QUVWWXNBOHZHN0VQRUQ1WnNnRUNDeEVTT1h5d0FTOFlzcUFCQVYyeUJBSUxFUkk1c0FRdnNBRVFzZzBCQ2l0WUlkZ2I5Rm13QkJDeUV3RUtLMWdoMkJ2MFdiQUxFTElVQVFvcldDSFlHL1JaTURFQklSRXpFU0VXRmhVVUJnY2hFU0VSSXhFekFSRWhNalkxTkNZbkFVTUNTTGtCSk1IZzVzUCtLLzI0dWJrREFRRVZjNFI5YmdLS0FnUCtTZ1RCcEtYSEFnSHkvZzRFamYyeS9sbDNZVnR4QXdBQUFRQW9BQUFGTGdTTkFCVUFXcklIRmhjUkVqa0FzQUJGV0xBQ0x4dXhBaG8rV2JBQVJWaXdEQzhic1F3UVBsbXdBRVZZc0JRdkc3RVVFRDVac0FJUXNnQUJDaXRZSWRnYjlGbXdCTkN3QmRDeUNBSU1FUkk1c0FndnNoRUJDaXRZSWRnYjlGa3dNUUVoTlNFVklSRTJNeklXRnhFakVUUW1JeUlIRVNNQmkvNmRBNG4rbEpPZzFONEV1bjEvblphNkEvU1ptZjdYTWNyQi9vOEJaSWQ1TXYzT0FBQUJBSXIrbXdSREJJMEFDd0JQc2dNTURSRVNPUUN3QWkrd0FFVllzQVl2RzdFR0dqNVpzQUJGV0xBS0x4dXhDaG8rV2JBQVJWaXdBQzhic1FBUVBsbXdBRVZZc0FRdkc3RUVFRDVac2dnQkNpdFlJZGdiOUZtd0NkQXdNU0VoRVNNUklSRXpFU0VSTXdSRC9vRzUvbis1QWtlNS9wc0JaUVNOL0FzRDlRQUNBSW9BQUFRSUJJMEFEQUFWQUY2eUF4WVhFUkk1c0FNUXNBM1FBTEFBUlZpd0N5OGJzUXNhUGxtd0FFVllzQWt2RzdFSkVENVpzQXNRc2dBQkNpdFlJZGdiOUZteUF3c0pFUkk1c0FNdnNBa1FzZzBCQ2l0WUlkZ2I5Rm13QXhDeUV3RUtLMWdoMkJ2MFdUQXhBU0VSSVRJV0ZSUUdCeUVSSVFFeU5qVTBKaWNoRVFPVi9hNEJFYzdtNU1YK0t3TUwvc056aEgxdS90OEQ5LzdneEtXa3lBSUVqZndMZDJGYmNRUCtXUUFDQUM3K3JBVG5CSTBBRHdBVkFGdXlFeFlYRVJJNXNCTVFzQVhRQUxBSkw3QUFSVml3QlM4YnNRVWFQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnQUJDaXRZSWRnYjlGbXdCOUN3Q05Dd0NSQ3dEZEN3Q0JDd0VOQ3dFZEN3QlJDeUVnRUtLMWdoMkJ2MFdUQXhOemMyTmpjVElSRXpFU01SSVJFakV5RWhFU0VEQW9VcFIwY0hEZ01IajduOHVyb0JBUzRDUXY1a0RCR1lNVmI5MkFHWi9BditGQUZVL3EwQjZ3TmMvc2orbVFBQkFCOEFBQVhyQkkwQUZRQ1JzZ0VXRnhFU09RQ3dBRVZZc0Frdkc3RUpHajVac0FCRldMQU5MeHV4RFJvK1diQUFSVml3RVM4YnNSRWFQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFHTHh1eEJoQStXYkFBUlZpd0ZDOGJzUlFRUGxteUVBa0NFUkk1ZkxBUUx4aXlvQkFCWGJSZ0VIQVFBbDJ5QUFFS0sxZ2gyQnYwV2JBRTBMSVRFQUFSRWptd0V4Q3dDTkN3RUJDd0M5QXdNUUVqRVNNUkl3RWpBUUV6QVRNUk14RXpBVE1CQVNNRHhXTzZaUDdGNmdHRy9wN2dBU3hadWxrQkxPRCtuQUdJNmdIMi9nb0I5djRLQWxFQ1BQNERBZjMrQXdIOS9jMzlwZ0FBQVFCSC8vQUQxQVNkQUNnQWZiSWtLU29SRWprQXNBQkZXTEFLTHh1eENobytXYkFBUlZpd0ZpOGJzUllRUGxtd0NoQ3lBd0VLSzFnaDJCdjBXYklHQ2hZUkVqbXlKd29XRVJJNXNDY3Z0QjhuTHljQ1hiSy9Kd0ZkdE44bjd5Y0NYYklrQVFvcldDSFlHL1Jac2hBa0p4RVNPYkljRmdvUkVqbXdGaEN5SHdFS0sxZ2gyQnYwV1RBeEFUUW1JeUlHRlNNME5qTXlGaFVVQmdjV0ZoVVVCaU1pSmljbU5UTVdGak15TmpVMEpTTTFNellEQ0lwOWJvRzY3YnpUN201bmRuSCsxVnVwUFhtNUJZTjVpSkwrLzUyYzd3TlFWRjFZVDQ2MXFKWldqU2tra2x1ZXRDd3VXWjFXWUdCWXdRV1lCUUFCQUlvQUFBUmhCSTBBQ1FCTXNnQUtDeEVTT1FDd0FFVllzQUF2RzdFQUdqNVpzQUJGV0xBSEx4dXhCeG8rV2JBQVJWaXdBaThic1FJUVBsbXdBRVZZc0FVdkc3RUZFRDVac2dRQUFoRVNPYklKQUFJUkVqa3dNUUV6RVNNUkFTTVJNeEVEcUxtNS9adTV1UVNOKzNNRGRQeU1CSTM4akFBQkFJc0FBQVFzQkkwQURBQm9zZ29ORGhFU09RQ3dBRVZZc0FRdkc3RUVHajVac0FCRldMQUlMeHV4Q0JvK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBc3ZHN0VMRUQ1WnNnWUNCQkVTT1h5d0JpOFlzcUFHQVYyMFlBWndCZ0pkc2dFQkNpdFlJZGdiOUZteUNnRUdFUkk1TURFQkl4RWpFVE1STXdFekFRRWpBYTVxdWJsa0FZWGYvalVCNis4Qjl2NEtCSTMrQXdIOS9jWDlyZ0FBQVFBbkFBQUVOZ1NOQUE4QVRiSUVFQkVSRWprQXNBQkZXTEFBTHh1eEFCbytXYkFBUlZpd0FTOGJzUUVRUGxtd0FFVllzQWd2RzdFSUVENVpzQUFRc2dNQkNpdFlJZGdiOUZtd0NCQ3lDZ0VLSzFnaDJCdjBXVEF4QVJFakVTRURBZ0lISXpjM05qWTNFd1EydWY1ZUR3MmtzRVFFS1Y1UURSa0VqZnR6QS9UK2d2NnEvdVVGcFFNSG51SUNYZ0FBQVFBaS8rd0VDd1NOQUJFQVE3SUJFaE1SRWprQXNBQkZXTEFDTHh1eEFobytXYkFBUlZpd0VDOGJzUkFhUGxtd0FFVllzQWd2RzdFSUVENVpzZ0VJQWhFU09iSU1BUW9yV0NIWUcvUlpNREVCRndFekFRY0dCd2NpSnpjWE1qWTNBVE1COVMwQkZOWCtYaVZRcWlaUUZBWmNNVWtnL21iV0FqQjRBdFg4UlVtUkN3RUlrd1V4T3dPZkFBQUJBSXIrckFUeEJJMEFDd0JGc2drTURSRVNPUUN3QWkrd0FFVllzQVl2RzdFR0dqNVpzQUJGV0xBS0x4dXhDaG8rV2JBQVJWaXdCQzhic1FRUVBsbXlBQUVLSzFnaDJCdjBXYkFJMExBSjBEQXhKVE1ESXhFaEVUTVJJUkV6QkVTdEVxWDhVTGtDUjdxWS9oUUJWQVNOL0FzRDlRQUFBUUE5QUFBRDN3U05BQkVBUnJJRUVoTVJFamtBc0FCRldMQUlMeHV4Q0JvK1diQUFSVml3RUM4YnNSQWFQbG13QUVWWXNBQXZHN0VBRUQ1WnNnMElBQkVTT2JBTkw3SUVBUW9yV0NIWUcvUlpNREVoSXhFR0l5SW1KeEV6RVJRV016STNFVE1EMzdtUW85VGVCTGwrZjUyV3VRSENNTXJCQVhEK25ZZDVNZ0l4QUFFQWlnQUFCY1lFalFBTEFFK3lCUXdORVJJNUFMQUFSVml3QWk4YnNRSWFQbG13QUVWWXNBWXZHN0VHR2o1WnNBQkZXTEFLTHh1eENobytXYkFBUlZpd0FDOGJzUUFRUGxteUJBRUtLMWdoMkJ2MFdiQUkwTEFKMERBeElTRVJNeEVoRVRNUklSRXpCY2I2eExrQmlMb0JpTGtFamZ3TEEvWDhDd1AxQUFFQWl2NnNCblVFalFBUEFGaXlDeEFSRVJJNUFMQUNMN0FBUlZpd0JpOGJzUVlhUGxtd0FFVllzQW92RzdFS0dqNVpzQUJGV0xBT0x4dXhEaG8rV2JBQVJWaXdCQzhic1FRUVBsbXlBQUVLSzFnaDJCdjBXYkFJMExBSjBMQU0wTEFOMERBeEpUTURJeEVoRVRNUklSRXpFU0VSTXdYSHJoS20rczI1QVlpNkFZaTZtUDRVQVZRRWpmd0xBL1g4Q3dQMUFBQUNBQWdBQUFUV0JJMEFEUUFXQUY2eUNCY1lFUkk1c0FnUXNCWFFBTEFBUlZpd0J5OGJzUWNhUGxtd0FFVllzQU12RzdFREVENVpzQWNRc2dVQkNpdFlJZGdiOUZteUNnY0RFUkk1c0FvdnNBTVFzZzRCQ2l0WUlkZ2I5Rm13Q2hDeUZBRUtLMWdoMkJ2MFdUQXhBUlFHQnlFUklUVWhFU0V5RmhZQk1qWTFOQ1lqSVJFRTF1VEUvaXIrc0FJS0FSYUV3bWorVVhLRWczUCs2d0Z1cE1nQ0EvU1ova3BZby82OGRXTmZjUDVaLy84QWlnQUFCV2NFalFBbUFnZ0FBQUFIQWNJRUZnQUFBQUlBaWdBQUJBZ0VqUUFLQUJNQVVMSUlGQlVSRWptd0NCQ3dDOUFBc0FCRldMQUZMeHV4QlJvK1diQUFSVml3QXk4YnNRTVFQbG15Q0FVREVSSTVzQWd2c0FNUXNnc0JDaXRZSWRnYjlGbXdDQkN5RVFFS0sxZ2gyQnYwV1RBeEFSUUdCeUVSTXhFaE1oWUJNalkxTkNZbklSRUVDT1RGL2l1NUFSSE81djVRYzRSOWJ2N2ZBVzZreUFJRWpmNUt4UDZGZDJGYmNRUCtXUUFCQUV2LzhBUWJCSjBBSGdCNnNnTWZJQkVTT1FDd0FFVllzQk12RzdFVEdqNVpzQUJGV0xBYkx4dXhHeEErV2JJQUd4TVJFam15QXdFS0sxZ2gyQnYwV2JJSkV4c1JFamw4c0FrdkdMS2dDUUZkdEdBSmNBa0NYYkl3Q1FGeHRHQUpjQWtDY2JJR0FRb3JXQ0hZRy9SWnNCTVFzZ3dCQ2l0WUlkZ2I5Rm15RHhNYkVSSTVNREVCRmhZek1qWTNJVFVoSmlZaklnWUhJelkyTXpJQUZ4VVVCZ1lqSWlZbkFRUVVqWWVOb2dmK1FRRytCYU9ZZm8wU3VSUDN6T1FCRVFWNDRwWFAvaFFCZVlOdnU3bVlyOE4wZ3J2VC90LzBkYVA1aDg2N0FBQUNBSXIvOEFZVkJKMEFFd0FoQUlxeUJDSWpFUkk1c0FRUXNCalFBTEFBUlZpd0VDOGJzUkFhUGxtd0FFVllzQXN2RzdFTEdqNVpzQUJGV0xBREx4dXhBeEErV2JBQVJWaXdDQzhic1FnUVBsbXlEUWdMRVJJNWZMQU5MeGkwWUExd0RRSnhzcUFOQVYyMFlBMXdEUUpkc2dZQkNpdFlJZGdiOUZtd0VCQ3lGd0VLSzFnaDJCdjBXYkFERUxJZUFRb3JXQ0hZRy9SWk1ERUJFQUFqSWdBbkl4RWpFVE1STXpZQU16SUFGd2MwSmlNaUJoVVZGQll6TWpZMUJoWCs3T2pkL3VzTTJMbTUyQTRCRk5ycEFSTUN0NnlibHErd2w1eXBBaVQrKy83UkFSenkvZ0lFamY0SjhRRVcvdEQvQmNiUzFzVkN3OWZUeHdBQUFnQlFBQUFEL0FTTkFBMEFGQUJoc2hNVkZoRVNPYkFURUxBSDBBQ3dBRVZZc0Fjdkc3RUhHajVac0FCRldMQUFMeHV4QUJBK1diQUFSVml3Q1M4YnNRa1FQbG15RVFjQUVSSTVzQkV2c2dzQkNpdFlJZGdiOUZteUFRc0hFUkk1c0FjUXNoSUJDaXRZSWRnYjlGa3dNVE1CSmlZMU5EWTNJUkVqRVNFREV4UVhJUkVoSWxBQklucHgzTWdCMGJuKzBQOHU1Z0ViL3Uvd0FnMG1uV2loc2dMN2N3SGYvaUVETUxRRUFYd0FBUUFMQUFBRDV3U05BQTBBVUxJQkRnOFJFamtBc0FCRldMQUlMeHV4Q0JvK1diQUFSVml3QWk4YnNRSVFQbG15RFFnQ0VSSTVzQTB2c2dBQkNpdFlJZGdiOUZtd0JOQ3dEUkN3QnRDd0NCQ3lDZ0VLSzFnaDJCdjBXVEF4QVNNUkl4RWpOVE1SSVJVaEVUTUNoK0s1NGVFQysvMis0Z0g5L2dNQi9aY0IrWm4rb0FBQUFRQWYvcXdHSWdTTkFCa0FxcklJR2hzUkVqa0FzQUJGV0xBUUx4dXhFQm8rV2JBQVJWaXdGQzhic1JRYVBsbXdBRVZZc0Jndkc3RVlHajVac0FCRldMQU5MeHV4RFJBK1diQUFSVml3Q2k4YnNRb1FQbG13QUVWWXNBVXZHN0VGRUQ1WnNoY0tHQkVTT1h5d0Z5OFlzcUFYQVYyMFlCZHdGd0pkdEdBWGNCY0NjYklIQVFvcldDSFlHL1Jac2dBSEZ4RVNPYkFGRUxJQkFRb3JXQ0hZRy9SWnNBY1FzQXZRc2c4WEJ4RVNPYkFYRUxBUzBEQXhBUUV6RVNNUkl3RWpFU01SSXdFakFRRXpBVE1STXhFekFUTUVZd0VtbWFkNi9zUmp1bVQreGVvQmh2NmU0QUVzV2JwWkFTemdBbHIrUFA0V0FWUUI5djRLQWZiK0NnSlJBanorQXdIOS9nTUIvUUFCQUl2K3JBUk9CSTBBRUFDQXNnQVJFaEVTT1FDd0F5K3dBRVZZc0Fzdkc3RUxHajVac0FCRldMQVBMeHV4RHhvK1diQUFSVml3Q1M4YnNRa1FQbG13QUVWWXNBVXZHN0VGRUQ1WnNnMEpDeEVTT1h5d0RTOFl0R0FOY0EwQ2NiS2dEUUZkdEdBTmNBMENYYklJQVFvcldDSFlHL1Jac2dBSURSRVNPYkFGRUxJQkFRb3JXQ0hZRy9SWk1ERUJBVE1SSXhFakFTTVJJeEV6RVRNQk13SkJBVytlcUduK2NXcTV1V1FCaGQ4Q1V2NUUvaFlCVkFIMi9nb0VqZjREQWYwQUFBRUFpd0FBQk9jRWpRQVVBSGl5Q3hVV0VSSTVBTEFBUlZpd0JpOGJzUVlhUGxtd0FFVllzQk12RzdFVEdqNVpzQUJGV0xBSkx4dXhDUkErV2JBQVJWaXdFUzhic1JFUVBsbXlBQkVURVJJNWZMQUFMeGl5b0FBQlhiUmdBSEFBQWwyMFlBQndBQUp4c0FUUXNBQVFzaEFCQ2l0WUlkZ2I5Rm15Q0JBQUVSSTVzQXpRTURFQk16VXpGVE1CTXdFQkl3RWpGU00xSXhFakVUTUJSRkNVUEFHRTRQNDBBZXZ2L25GQmxGQzV1UUtRNU9RQi9mM0YvYTRCOXM3Ty9nb0VqUUFBQVFBakFBQUZGUVNOQUE0QWZiSUFEeEFSRWprQXNBQkZXTEFHTHh1eEJobytXYkFBUlZpd0NpOGJzUW9hUGxtd0FFVllzQUl2RzdFQ0VENVpzQUJGV0xBTkx4dXhEUkErV2JJSUFnWVJFamw4c0FndkdMS2dDQUZkdEdBSWNBZ0NYYlJnQ0hBSUFuR3lBUUVLSzFnaDJCdjBXYkFHRUxJRUFRb3JXQ0hZRy9SWnNnd0JDQkVTT1RBeEFTTVJJeEVoTlNFUk13RXpBUUVqQXBkcHV2NnZBZ3RqQVlYZy9qUUI2KzhCOXY0S0EvV1kvZ01CL2YzRi9hNEFBZ0JnLytzRld3U2ZBQ01BTGdDVXNoUXZNQkVTT2JBVUVMQWswQUN3QUVWWXNBc3ZHN0VMR2o1WnNBQkZXTEFiTHh1eEd4bytXYkFBUlZpd0FDOGJzUUFRUGxtd0FFVllzQVF2RzdFRUVENVpzZ0lFR3hFU09iQUNMN0FMRUxJTUFRb3JXQ0hZRy9SWnNBUVFzaE1CQ2l0WUlkZ2I5Rm13QWhDeUpnRUtLMWdoMkJ2MFdiSVZFeVlSRWpteUlRSW1FUkk1c0JzUXNpd0JDaXRZSWRnYjlGa3dNUVVpSndZaklBQVJOUkFTTXhjaUJoVVZGQll6TWpjbUF6VTBFak15RWhVVkVBY1dNd0VRRnpZUk5UUW1JeUlEQlZ2WnBvbWovdXIreHZUU0FYNlEwTWMyTXVNQno3VzR6YlplZHYyUzRiWmlhc1lGRkRzOEFVVUJLaG9CQXdFb25zUElJZWpsQ0xJQlJTZnJBUVQrLy9FNC90cXlFZ0g5L3N4NWdRRWVPS3lqL3NQLy93QU5BQUFFSEFTTkFDWUIwZ0FBQVFjQjNnQkUvdDRBQ0FDeUFBb0JYVEF4QUFFQUp2NnNCSEVFalFBUUFHdXlDeEVTRVJJNUFMQUhMN0FBUlZpd0FTOGJzUUVhUGxtd0FFVllzQTh2RzdFUEdqNVpzQUJGV0xBSkx4dXhDUkErV2JBQVJWaXdEQzhic1F3UVBsbXlBQUVNRVJJNXNnc01BUkVTT2JJREN3QVJFam13Q1JDeUJBRUtLMWdoMkJ2MFdiSU9BQXNSRWprd01RRUJNd0VCTlRNUkl4RWpBUUVqQVFFekFpZ0JIOXorZFFFeHFLaDAvdFgrMk53Qmx2NXoyd0xhQWJQOXZ2NUtBZjRXQVZRQnUvNUZBa3NDUWdBQUFRQW0vcXdGOGdTTkFBOEFYTElKRUJFUkVqa0FzQUl2c0FCRldMQUlMeHV4Q0JvK1diQUFSVml3RGk4YnNRNGFQbG13QUVWWXNBUXZHN0VFRUQ1WnNnQUJDaXRZSWRnYjlGbXdDQkN5QmdFS0sxZ2gyQnYwV2JBSzBMQUwwTEFBRUxBTTBMQU4wREF4SlRNREl4RWhFU0UxSVJVaEVTRVJNd1ZFcmhLbC9GRCttd09KL3BVQ1JycVkvaFFCVkFQMG1abjhwQVAxQUFBQkFEMEFBQVBmQkkwQUZ3QlBzZ1FZR1JFU09RQ3dBRVZZc0Fzdkc3RUxHajVac0FCRldMQVdMeHV4RmhvK1diQUFSVml3QUM4YnNRQVFQbG15RUFzQUVSSTVzQkF2c2djQkNpdFlJZGdiOUZtd0JOQ3dFQkN3RTlBd01TRWpFUVlIRlNNMUppWW5FVE1SRkJZWE5UTVZOamNSTXdQZnVXTnBsYnpKQTdsbmFKVm5aYmtCd2lFTHhzTUt5Ym9CYmY2ZGUzZ0w4TzBMSWdJeEFBQUJBSW9BQUFRc0JJMEFFUUJHc2dRU0V4RVNPUUN3QUVWWXNBQXZHN0VBR2o1WnNBQkZXTEFJTHh1eENCQStXYkFBUlZpd0VDOGJzUkFRUGxteUJBQUlFUkk1c0FRdnNnMEJDaXRZSWRnYjlGa3dNUk16RVRZek1oWVhFU01STkNZaklnY1JJNHE1bXBuVTNnUzVmbitZbTdrRWpmNCtNY3JCL284QlpJZDVNLzNQQUFBQ0FBTC84QVZyQkowQUhBQWtBR215RlNVbUVSSTVzQlVRc0I3UUFMQUFSVml3RGk4YnNRNGFQbG13QUVWWXNBQXZHN0VBRUQ1WnNpRU9BQkVTT2JBaEw3Sy9JUUZkc2hJQkNpdFlJZGdiOUZtd0E5Q3dJUkN3Q3RDd0FCQ3lGZ0VLSzFnaDJCdjBXYkFPRUxJZEFRb3JXQ0hZRy9SWk1ERUZJZ0ExSmlZMU14UVdGejRDTXpJQUVSVWhGQll6TWpZM0Z3WUdBeUlHQnlFMU5DWURrZi8renFhNG1WOW1CWWZwanZnQkVQeXV3YmRNaDFBNVBMaVdqN1VHQXBtdUVBRWk4d3ZHcUY1M0RKUHNnZjdyL3YyQ3NjQWZLSklvTHdRUndxUWJvYW9BQUFJQVh2L3dCR2tFblFBV0FCNEFYcklJSHlBUkVqbXdDQkN3RjlBQXNBQkZXTEFBTHh1eEFCbytXYkFBUlZpd0NDOGJzUWdRUGxteURRQUlFUkk1c0EwdnNBQVFzaEVCQ2l0WUlkZ2I5Rm13Q0JDeUZ3RUtLMWdoMkJ2MFdiQU5FTElhQVFvcldDSFlHL1JaTURFQk1nQVhGUlFHQmlNaUFCRTFJVFUwSmlNaUJ5YzJOaE15TmpjaEZSUVdBa2YzQVNrQ2hPeVQrUDd3QTFMQnQ1T1FPVUhBaVpHekJ2MW5yUVNkL3VEdmlKbjBpUUVWQVFHQ0FiSEJTSklwTC92dHhxRWJvS3dBQUFFQVIvL3RBOVFFalFBY0FHMnlHaDBlRVJJNUFMQUFSVml3QWk4YnNRSWFQbG13QUVWWXNBc3ZHN0VMRUQ1WnNBSVFzZ0FCQ2l0WUlkZ2I5Rm15QkFBQ0VSSTVzZ1VMQWhFU09iQUZMN0lSQ3dJUkVqbXdDeEN5RkFFS0sxZ2gyQnYwV2JBRkVMSWFBUW9yV0NIWUcvUlpzaHdGR2hFU09UQXhBU0UxSVJjQkZoWVZGQVlqSWlZbkpqVXpGaFl6TWpZMU5DWWpJelVDcy8yOEF6Z0MvcW14MGZ6WFdhczhlcmtGaVhPSWtvcUdnQVAwbVhiK214REZpNmUrTFM1YW5sbGthR3BmYXFVQUF3QmcvL0FFV2dTZEFBMEFGQUFiQUhPeUF4d2RFUkk1c0FNUXNBN1FzQU1Rc0JYUUFMQUFSVml3Q2k4YnNRb2FQbG13QUVWWXNBTXZHN0VERUQ1WnNnNEJDaXRZSWRnYjlGbXlHUW9ERVJJNWZMQVpMeGl5b0JrQlhiUmdHWEFaQWwyMFlCbHdHUUp4c2hFQkNpdFlJZGdiOUZtd0NoQ3lGUUVLSzFnaDJCdjBXVEF4QVJBQUl5SUFFVFVRQURNeUFCY0JNalkzSVJZV0V5SUdCeUVtSmdSYS91em81ZjduQVJmbDZRRVRBdjRFazZnSi9YWUtyWTJScXdnQ2lnbXFBaVQrKy83UkFUSUJCejRCQWdFMC90RC8vaHk4dExEQUEzZkRyTE84QUFBQkFEQUFBQVB2QkowQUp3Q3VzaDBvS1JFU09RQ3dBRVZZc0Iwdkc3RWRHajVac0FCRldMQU1MeHV4REJBK1diSUdIUXdSRWptd0JpK3lEd1lCY2JJUEJnRmRzazhHQVhHd0FkQ3dBUzlBQ1I4Qkx3RS9BVThCQkYyeUFBRUJYYklDQkFvcldDSFlHL1Jac0FZUXNnY0VDaXRZSWRnYjlGbXdEQkN5Q2dFS0sxZ2gyQnYwV2JBTzBMQVAwTEFIRUxBUjBMQUdFTEFUMExBQ0VMQVcwTEFCRUxBWTBMSWhBUjBSRWptd0hSQ3lKQUVLSzFnaDJCdjBXVEF4QVNFVklSY1ZJUlVoQmdjaEJ5RTFNelkzSXpVek5TY2pOVE1uSmpZek1oWVZJelFtSXlJR0Z3R0hBWmIrYmdNQmovNXNDaVFDbEFIOGhBby9GSitsQTZLZUFnYkx0YmZLdVdoZ1hXZ0VBcWg1WFJCNWFrZVltQktmZVJCZGVVREo3TXkzY0hlUGlnQUFBUUJDLy9BRG5nU2RBQ0VBbnJJVUlpTVJFamtBc0FCRldMQVZMeHV4RlJvK1diQUFSVml3Q0M4YnNRZ1FQbG15SVJVSUVSSTVzQ0V2c2c4aEFWMjBFQ0VnSVFKZHNnQUVDaXRZSWRnYjlGbXdDQkN5QXdFS0sxZ2gyQnYwV2JBQUVMQUwwTEFoRUxBTjBMQWhFTEFTMExBU0wwQUpIeEl2RWo4U1R4SUVYYklBRWdGZHNnOEVDaXRZSWRnYjlGbXdGUkN5R2dFS0sxZ2gyQnYwV2JBU0VMQWMwTEFQRUxBZTBEQXhBU0VTSVRJM0Z3WWpJaVluSXpVek5TTTFNelkyTXpJWEJ5WWpJQU1oRlNFVklRTXYvbWdnQVFKaWFCdDJiOVAxRkp1WGw1c1c5YzlnaHhWWmVmOEFJQUdZL21RQm5BR1cvdkVjbFI3YXpIbHRlY3pjSDVVYy92QjViUUFBQkFDS0FBQUhyUVNkQUFNQUVBQWVBQ2dBcUxJZktTb1JFam13SHhDd0FkQ3dIeEN3Qk5Dd0h4Q3dFZEFBc0FCRldMQW5MeHV4SnhvK1diQUFSVml3SlM4YnNTVWFQbG13QUVWWXNBY3ZHN0VIR2o1WnNBQkZXTEFpTHh1eEloQStXYkFBUlZpd0lDOGJzU0FRUGxtd0J4Q3dEZEN3RFMrd0F0Q3dBaSswQUFJUUFnSmRzZ0VEQ2l0WUlkZ2I5Rm13RFJDeUZBTUtLMWdoMkJ2MFdiQUhFTEliQXdvcldDSFlHL1Jac2lFbklCRVNPYkltSUNjUkVqa3dNU1VoTlNFQk5EWWdGaFVWRkFZaklpWTFGeFFXTXpJMk5UVTBKaU1pQmhVQkl3RVJJeEV6QVJFekIyNzkwd0l0L1pLOEFUUzl2cGVadjZOZVYxUmVZVk5TWWY2MXVQMmp1YmtDWGJpOWpnSURsYnE0bTFDWXRyZWNCVmxxYVZ4U1dtaG5YdnkxQTJ6OGxBU04vSk1EYlFBQUFnQW9BQUFFWmdTTkFCWUFId0NEc2dBZ0lSRVNPYkFZMEFDd0FFVllzQXd2RzdFTUdqNVpzQUJGV0xBQ0x4dXhBaEErV2JJV0RBSVJFam13RmkreUFBRUtLMWdoMkJ2MFdiQUUwTEFXRUxBRzBMQVdFTEFMMExBTEwwQUpEd3NmQ3k4TFB3c0VYYlMvQzg4TEFsMnlDQUVLSzFnaDJCdjBXYkFUMExBTEVMQVgwTEFNRUxJZUFRb3JXQ0hZRy9SWk1ERWxJUlVqTlNNMU16VWpOVE1SSVRJV0ZSUUdCeUVWSVNVaE1qWTFOQ1lqSVFLay92NjZ3TURBd0FIUHhlcmp2djdkQVFMKy9nRVZjb09FY1A3cXRMUzBtRm1ZQWxETXFLWExCRm54ZUdKa2VnQUFBZ0NNLyt3RU5BWUFBQkFBR3dCa3NoUWNIUkVTT2JBVUVMQU4wQUN3Q1Mrd0FFVllzQTB2RzdFTkdENVpzQUJGV0xBRUx4dXhCQkErV2JBQVJWaXdCeThic1FjUVBsbXlCZzBFRVJJNXNnc05CQkVTT2JBTkVMSVVBUW9yV0NIWUcvUlpzQVFRc2hrQkNpdFlJZGdiOUZrd01RRVVCZ1lqSWljSEl4RXpFVFl6TWhJUkp6UW1JeUlIRVJZek1qWUVORy9KZ05Gd0Q2QzVjTVhKOGJtampMZFFWYlNLb3dJU24veUxsWUVHQVAzRGkvN1QvdjhIdE5hcS9peXIyQUFBQVFCYy8rd0Q3d1JPQUIwQVNiSUFIaDhSRWprQXNBQkZXTEFRTHh1eEVCZytXYkFBUlZpd0NDOGJzUWdRUGxteUFBRUtLMWdoMkJ2MFdiQUlFTEFEMExBUUVMQVUwTEFRRUxJWEFRb3JXQ0hZRy9SWk1ERWxNalkzTXc0Q0l5SUFOVFUwTmpZek1oWVhJeVltSXlJR0ZSVVVGZ0pBWTVRSXNBVjR4RzdmL3Z0MjI1TzI4UWl3Q0k5b2o1dWRnM2hhWHFoakFTcjhJSjM1aHRxdWFZZk92eUc4eVFBQ0FGdi83QVFBQmdBQUVRQWNBR1N5R2gwZUVSSTVzQm9Rc0FUUUFMQUhMN0FBUlZpd0JDOGJzUVFZUGxtd0FFVllzQTB2RzdFTkVENVpzQUJGV0xBSkx4dXhDUkErV2JJR0JBMFJFam15Q3dRTkVSSTVzQTBRc2hVQkNpdFlJZGdiOUZtd0JCQ3lHZ0VLSzFnaDJCdjBXVEF4RXpRMk5qTXlGeEV6RVNNbkJpTWlKaVluTnhRV016STNFU1lqSWdaYmNjNkF2bSs1b1E1dnluekxkUUc1cUlxdlVsT3NqYWNDSnAvOGpZSUNOUG9BZUl5TSs1Z0dzZGlmQWZHWjFnQUNBRnYrVmdRQUJFNEFHd0FtQUh5eUh5Y29FUkk1c0I4UXNBdlFBTEFBUlZpd0F5OGJzUU1ZUGxtd0FFVllzQVl2RzdFR0dENVpzQUJGV0xBTEx4dXhDeEkrV2JBQVJWaXdHQzhic1JnUVBsbXlCUU1ZRVJJNXNBc1FzaElCQ2l0WUlkZ2I5Rm15RmdNWUVSSTVzQmdRc2g4QkNpdFlJZGdiOUZtd0F4Q3lKQUVLSzFnaDJCdjBXVEF4RXpRU016SVhOek1SQmdJaklpWW5OeFlXTXpJMk5UVUdJeUlDTlJjVUZqTXlOeEVtSXlJR1cvakd6RzhQblFMMDRGYklTRGMvbjArVmltL0J3dnE1cG91dlUxT3RqcVVDSnZZQk1wU0EvQTd2L3YwM01vb3FNckNvS0lFQk9QUUhzTm1oQWV1ZDF3RC8vd0JYQUFBQ2hnVzNBQVlBRmEwQUFBSUFqUDVnQkRJRVRnQVFBQnNBYnJJWkhCMFJFam13R1JDd0RkQUFzQUJGV0xBTkx4dXhEUmcrV2JBQVJWaXdDaThic1FvWVBsbXdBRVZZc0Fjdkc3RUhFajVac0FCRldMQUVMeHV4QkJBK1diSUdEUVFSRWpteUN3MEVFUkk1c0EwUXNoUUJDaXRZSWRnYjlGbXdCQkN5R1FFS0sxZ2gyQnYwV1RBeEFSUUdCaU1pSnhFakVUTVhOak15RWhjSE5DWWpJZ2NSRmpNeU5nUXlic2lCeFhHNW53OTB5c0h1Q3JpcGo2aFVVNnVNcWdJUm52eUxmZjMzQmRwOWtmN3A2aWV3MjVYOSs1VGZBQUFDQUZ2K1lBUC9CRTRBRHdBYUFHdXlHQnNjRVJJNXNCZ1FzQVBRQUxBQVJWaXdBeThic1FNWVBsbXdBRVZZc0FZdkc3RUdHRDVac0FCRldMQUlMeHV4Q0JJK1diQUFSVml3REM4YnNRd1FQbG15QlFNTUVSSTVzZ29EREJFU09iSVRBUW9yV0NIWUcvUlpzQU1Rc2hnQkNpdFlJZGdiOUZrd01STTBFak15RnpjekVTTVJCaU1pQWpVWEZCWXpNamNSSmlNaUJsdjN6TVJ2RHFDNWNMckgrcm1xaktaV1dLS09xZ0lsOVFFMGhuTDZKZ0lFZUFFMTlnZXUzNU1DRVkvZkFBSUFYZi9zQS9NRVRnQVVBQndBWXJJSUhSNFJFam13Q0JDd0ZkQUFzQUJGV0xBSUx4dXhDQmcrV2JBQVJWaXdBQzhic1FBUVBsbXlHUWdBRVJJNXNCa3Z0TDhaenhrQ1hiSU1BUW9yV0NIWUcvUlpzQUFRc2hBQkNpdFlJZGdiOUZtd0NCQ3lGUUVLSzFnaDJCdjBXVEF4QlNJQUp5YzBOall6TWhJVkZTRVdGak15TnhjR0FTSUdCeUUxTkNZQ2NlWCszUXNCZk4yQTFlajlKQWpDbWFCNE9ZUCs3bk9ZRVFJZ2lSUUJGK05PbS9XSy92N3dkSjNJV245eUE4cWdsaG1EbWdBQ0FHRCtWZ1B5QkU0QUdnQWxBSHl5SXlZbkVSSTVzQ01Rc0F2UUFMQUFSVml3QXk4YnNRTVlQbG13QUVWWXNBWXZHN0VHR0Q1WnNBQkZXTEFMTHh1eEN4SStXYkFBUlZpd0Z5OGJzUmNRUGxteUJRTVhFUkk1c0FzUXNoRUJDaXRZSWRnYjlGbXlGUU1YRVJJNXNCY1FzaDRCQ2l0WUlkZ2I5Rm13QXhDeUl3RUtLMWdoMkJ2MFdUQXhFelFTTXpJWE56TVJGQVlqSWlZbk54WXpNalkxTlFZaklnSTFGeFFXTXpJM0VTWWpJZ1pnNk1QS2NCQ2Q5ZUZTcjBFM2VvK1ZpVy9BdnV1NmxZaXZVbFdxaVpZQ0pmb0JMNU4vL0FYcS95MHBpa21ubmpxQUFUTDZDTFhUb0FIdW05QUFBUUIrLytzRkhRWEZBQjRBVExJTUh5QVJFamtBc0FCRldMQU1MeHV4REJ3K1diQUFSVml3QXk4YnNRTVFQbG13REJDd0VOQ3dEQkN5RXdFS0sxZ2gyQnYwV2JBREVMSWJBUW9yV0NIWUcvUlpzQU1Rc0I3UU1ERUJCZ0FqSWlRQ0p6VTBFaVF6TWdBWEl5WW1JeUlDRVJVVUVoWXpNalkzQlJ3WS90dnVzZjdob2dHZEFSdXk3UUV2R2NFWXY1M0E2bTdJZmFHd0dnSE8zLzc4dEFGSHkwVFRBVXF6L3Zyam82ait5LzcrTjZIL0FKQ2RxUUFCQUg3LzZ3VWVCY1FBSWdCdHNnd2pKQkVTT1FDd0FFVllzQXd2RzdFTUhENVpzQUJGV0xBREx4dXhBeEErV2JJUUF3d1JFam13RUMrd0RCQ3lFd0VLSzFnaDJCdjBXYkFERUxJYkFRb3JXQ0hZRy9SWnNpSU1BeEVTT2JBaUw3US9JazhpQWwyMER5SWZJZ0pkc2g4QkNpdFlJZGdiOUZrd01TVUdCQ01pSkFJbk5UUVNKRE15QkJjakppWWpJZ0lIQnhRU0ZqTXlOamNSSVRVaEJSNUQvdU93dS83V3FBT2JBUnkxOFFFaElzQWV1cHkxN0FvQmVOT0ZjclVxL3JBQ0Q3NWhjclFCUjlJdDJ3Rk90dVhhbFl6KzNQSkdyUDcyakRvd0FVYWJBQUlBc2dBQUJSRUZzQUFMQUJVQVJySURGaGNSRWptd0F4Q3dGZEFBc0FCRldMQUJMeHV4QVJ3K1diQUFSVml3QUM4YnNRQVFQbG13QVJDeURBRUtLMWdoMkJ2MFdiQUFFTElOQVFvcldDSFlHL1JaTURFekVTRXlCQklYRlJRQ0JBY0RFVE15QUJFMU5BQWpzZ0d4d1FFNHNRU3Qvc0xMNmQvcUFSUCs5K2dGc0t6K3hNZyswUDdCc1FJRkV2dUxBU29CQXlUOEFTZ0FBZ0IrLytzRlh3WEZBQkVBSWdCR3NnUWpKQkVTT2JBRUVMQWYwQUN3QUVWWXNBMHZHN0VOSEQ1WnNBQkZXTEFFTHh1eEJCQStXYkFORUxJV0FRb3JXQ0hZRy9SWnNBUVFzaDhCQ2l0WUlkZ2I5Rmt3TVFFVUFnUWpJaVFDSnpVMEVpUXpNZ1FTRndjMEFpWWpJZ1lHQnhVVUVoWXpNaEkxQlYraS91S3ZxLzdocGdLa0FTR3JyUUVnb3dHL2JzZDllTVp5QVhISmVjSHZBc0xPL3JDNXVRRkt5RGZOQVUrOHVmNjB6QVdpQVFDUGovNmNOYUQrL3BJQk8vOEFBQUlBZnY4RUJWOEZ4UUFWQUNZQVRiSUlKeWdSRWptd0NCQ3dJOUFBc0FCRldMQVJMeHV4RVJ3K1diQUFSVml3Q0M4YnNRZ1FQbG15QXdnUkVSSTVzQkVRc2hvQkNpdFlJZGdiOUZtd0NCQ3lJd0VLSzFnaDJCdjBXVEF4QVJRQ0J4Y0hKUVlqSWlRQ0p6VTBFaVF6TWdRU0ZTYzBBaVlqSWdZR0J4VVVFaFl6TWhJMUJWK3BsUHFEL3N3NVBLdis0S1FEb2dFaXJLNEJJYUsvYnNkOWVNZHhBWEhKZWNIdkFzTFUvcXhhdzNuekRMb0JSc1k2ekFGUXZyditzTTRCb3dFQmo1RC9uRE9nL3Y2U0FUdi9BQUFCQUtBQUFBTEpCSTBBQmdBeUFMQUFSVml3QlM4YnNRVWFQbG13QUVWWXNBQXZHN0VBRUQ1WnNnUUFCUkVTT2JBRUw3SURBUW9yV0NIWUcvUlpNREVoSXhFRk5TVXpBc201L3BBQ0NoOERwb3VveWdBQkFJTUFBQVFnQktBQUdBQlVzZ2taR2hFU09RQ3dBRVZZc0JFdkc3RVJHajVac0FCRldMQUFMeHV4QUJBK1diSVhBUW9yV0NIWUcvUlpzQUxRc2hZWEVSRVNPYklERVJZUkVqbXdFUkN5Q1FFS0sxZ2gyQnYwV2JBUkVMQU0wREF4SVNFMUFUWTNOelFtSXlJR0ZTTTBOall6TWhZVkZBY0JJUVFnL0ljQi9YMEtBMzFtZXBXNWVOSit1K0hGL29ZQ2VJTUJ5WE5VTlZSc2puVnd2Mnk0bUxHMC9xd0FBUUNLQUFBRGhRWEVBQWNBTXJJRENBa1JFamtBc0FCRldMQUdMeHV4QmhvK1diQUFSVml3QkM4YnNRUVFQbG13QmhDeUFnRUtLMWdoMkJ2MFdUQXhBVE1SSVJFakVTRUN6TG45dnJrQ1FnWEUvakQ4REFTTkFBRUFELzZqQTk0RWpRQVlBRTRBc0FzdnNBQkZXTEFDTHh1eEFobytXYklCQVFvcldDSFlHL1Jac0FUUXNnVUxBaEVTT2JBRkw3QUxFTElRQVFvcldDSFlHL1Jac0FVUXNoY0JDaXRZSWRnYjlGbXlHQmNGRVJJNU1ERUJJVFVoRlFFV0ZoVVVBQ01pSnpjV016STJOVFFtSXlNMUF1VDlkQU55L29DeTR2N00vOHJTTktXeHROZTV3RHdEOUpsMi9td1k5clA1L3RwbmkxaktwYXVsWndBQ0FENyt0Z1NnQkkwQUNnQU9BRXNBc0FCRldMQUpMeHV4Q1JvK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBWXZHN0VHRUQ1WnNnQUJDaXRZSWRnYjlGbXdCaEN3QmRDd0JTK3dBQkN3RE5DeURRa0NFUkk1TURFbE14VWpFU01SSVRVQk13RWhFUWNEMjhYRnV2MGRBdGJIL1R3Q0NoeVdsLzYzQVVsdEJDSDhDUUw4TlFELy93QlFBbzBDblFXNEF3Y0IxQUFBQXBnQUV3Q3dBRVZZc0Fvdkc3RUtIRDVac0JEUU1ERUEvLzhBTmdLWUFyc0ZyUU1IQWRnQUFBS1lBQk1Bc0FCRldMQUpMeHV4Q1J3K1diQU4wREF4QVAvL0FGc0NqUUtuQmEwREJ3SFpBQUFDbUFBUUFMQUFSVml3QVM4YnNRRWNQbGt3TWYvL0FGWUNqUUtyQmJZREJ3SGFBQUFDbUFBVEFMQUFSVml3QUM4YnNRQWNQbG13Rk5Bd01RRC8vd0E2QXBnQ3BRV3RBd2NCMndBQUFwZ0FFQUN3QUVWWXNBVXZHN0VGSEQ1Wk1ESC8vd0JQQW8wQ253VzRBd2NCM0FBQUFwZ0FHUUN3QUVWWXNCRXZHN0VSSEQ1WnNCZlFzQkVRc0IvUU1ERUEvLzhBU1FLUkFwVUZ1QU1IQWQwQUFBS1lBQk1Bc0FCRldMQUlMeHV4Q0J3K1diQVowREF4QUFBQkFHWCtvQVFGQkl3QUd3Qk9BTEFOTDdBQVJWaXdBUzhic1FFYVBsbXlCQUVLSzFnaDJCdjBXYklIRFFFUkVqbXdCeSt5R0FFS0sxZ2gyQnYwV2JJRkJ4Z1JFam13RFJDeUVnRUtLMWdoMkJ2MFdiQUhFTEFiMERBeEV4TWhGU0VETmpjMkVoVVVBQ01pSnpjV016STJOVFFtSXlJR0I0Wm1BeFQ5ZmpadmxjangvdUR4NEs4Nmd0T1p2NldIYW5VaUFYUURHS3YrZEVBQ0F2NzE0ZS8rNG5LTFpjK2tqN1k2VXdBQUFRQksvcllEOGdTTkFBWUFKUUN3QVMrd0FFVllzQVV2RzdFRkdqNVpzZ01CQ2l0WUlkZ2I5Rm15QUFNRkVSSTVNREVCQVNNQklUVWhBL0w5b0xvQ1YvMGJBNmdFSS9xVEJUK1lBQUlBWVAvd0JtMEVuUUFUQUIwQW1ySVZIaDhSRWptd0ZSQ3dDdEFBc0FCRldMQUpMeHV4Q1JvK1diQUFSVml3Q3k4YnNRc2FQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFBTHh1eEFCQStXYkFMRUxJTUFRb3JXQ0hZRy9SWnNBQVFzQS9Rc0E4dnNoOFBBVjJ5M3c4QlhiSVFBUW9yV0NIWUcvUlpzQUFRc2hNQkNpdFlJZGdiOUZtd0FoQ3lGQUVLSzFnaDJCdjBXYkFKRUxJWEFRb3JXQ0hZRy9SWk1ERWhJUVVpQUJFMUVBQXpCU0VWSVJFaEZTRVJJUVUzRVNjaUJoVVZGQllHYmYxai9vN2wvdWNCRitVQld3S3YvWnNDRlAzc0Ftejc4ZXJzbHErd0VBRXlBUWMrQVFJQk5CQ1ovcktZL29rTkJ3Tm5DZGJGUXNQWEFBSUFndjZwQkQ4RW9RQVlBQ1VBU3dDd0ZDK3dBRVZZc0F3dkc3RU1HajVac0JRUXNnQUJDaXRZSWRnYjlGbXlCUlFNRVJJNXNBVXZzZ01GREJFU09iSWFBUW9yV0NIWUcvUlpzQXdRc2lBQkNpdFlJZGdiOUZrd01RVXlOamNHSXlJQ05UUTJOak15QUJNVkZBSUVJeUluTnhZVE1qWTNOVFFtSXlJR0ZSUVdBZCt4M0JWM3Q5TC9kZEtFNndFRkFwTCs4NitmZGlaNjRHbWZJcUdTZjVpanYvVFphUUVVNHB6c2Z2N2MvdmI2M1A2NnJqeU9NZ0g4WEZLVXhjWERxNVhKQUFBQ0FIai82d1NKQktFQUN3QVpBRGtBc0FCRldMQUlMeHV4Q0JvK1diQUFSVml3QXk4YnNRTVFQbG13Q0JDeUR3RUtLMWdoMkJ2MFdiQURFTElXQVFvcldDSFlHL1JaTURFQkVBQWdBQU0xRUFBZ0FCTW5OQ1lqSWdZSEZSUVdNekkyTndTSi91aitJdjdtQVFFWkFkNEJHUUc2c3AyYnNnSzJtNXF4QWdJOC91cit4UUU4QVJRVUFSUUJQdjdFL3VzTnl1TGd4VFRKNWQzS0FQLy8vN1QrU3dGbEJEb0FCZ0NiQUFELy8vKzAva3NCWlFRNkFBWUFtd0FBLy84QW13QUFBVlVFT2dBR0FJd0FBUC8vLy9yK1dRRmFCRG9BSmdDTUFBQUFCZ0NqeUFyLy93Q2JBQUFCVlFRNkFBWUFqQUFBLy84QWh2NnNBV0VFT2dBbUFJd0FBQUFIQUt3RFRnQUtBQUVBaXYvc0Eva0VuUUFoQUZ3QXNBQkZXTEFWTHh1eEZSbytXYkFBUlZpd0VDOGJzUkFRUGxtd0FFVllzQjh2RzdFZkVENVpzZ0lCQ2l0WUlkZ2I5Rm15R1I4VkVSSTVzQmt2c1FnS0sxallHOXhac0JrUXNBclFzQlVRc2cwQkNpdFlJZGdiOUZrd01TVVdNekkyTlRRbUl5TTFFeVlqSWdNUkl4RTJOak15RmhjQkZoWVZGQVlqSWljQncxSllZWEtJaDFUdFRtUFRCTGdCeGNscncyWCs3cW0yMTdWM2FMVXplMk5pVllrQkp6Nys5ZjBHQXZYUzFsVmkvcllQbzRhc3pERUEvLzhBSlFJZkFnMEN0Z0lHQUJFQUFBQUNBQ1VBQUFUa0JiQUFEd0FkQUdZQXNBQkZXTEFGTHh1eEJSdytXYkFBUlZpd0FDOGJzUUFRUGxteUJBQUZFUkk1c0FRdnNzOEVBVjJ5THdRQlhiS2ZCQUZ4c2dFQkNpdFlJZGdiOUZtd0VkQ3dBQkN5RWdFS0sxZ2gyQnYwV2JBRkVMSWJBUW9yV0NIWUcvUlpzQVFRc0J6UU1ERXpFU00xTXhFaE1nUVNGeFVVQWdRSEV5RVJNeklTTnpVMEFpY2pFU0hIb3FJQm03NEJKSjhCbi83WnhFZis1c25lOXdIcDF1QUJHZ0thbHdKL3FQN0t5VjNPL3NxbUFnS2EvZ01CRXZsZCtBRVRBdjRmQUFBQ0FDVUFBQVRrQmJBQUR3QWRBR1lBc0FCRldMQUZMeHV4QlJ3K1diQUFSVml3QUM4YnNRQVFQbG15QkFBRkVSSTVzQVF2c3M4RUFWMnlMd1FCWGJLZkJBRnhzZ0VCQ2l0WUlkZ2I5Rm13RWRDd0FCQ3lFZ0VLSzFnaDJCdjBXYkFGRUxJYkFRb3JXQ0hZRy9SWnNBUVFzQnpRTURFekVTTTFNeEVoTWdRU0Z4VVVBZ1FIRXlFUk16SVNOelUwQWljakVTSEhvcUlCbTc0QkpKOEJuLzdaeEVmKzVzbmU5d0hwMXVBQkdnS2Fsd0ovcVA3S3lWM08vc3FtQWdLYS9nTUJFdmxkK0FFVEF2NGZBQUFCQUFBQUFBUDlCZ0FBR1FCcUFMQVhMN0FBUlZpd0JDOGJzUVFZUGxtd0FFVllzQkF2RzdFUUVENVpzQUJGV0xBSUx4dXhDQkErV2JJdkZ3RmRzZzhYQVYyeUZSQVhFUkk1c0JVdnNoSUJDaXRZSWRnYjlGbXdBZEN5QWhBRUVSSTVzQVFRc2d3QkNpdFlJZGdiOUZtd0ZSQ3dHTkF3TVFFaEVUWXpJQk1SSXhFbUppTWlCZ2NSSXhFak5UTTFNeFVoQW56KzUzdkZBVmNEdVFGcGIxcUlKcm1xcXJrQkdRVFMvdVdYL24zOU5RTE1kWEJnVHZ6OUJOS1hsNWNBQVFBeEFBQUVsd1d3QUE4QVRBQ3dBRVZZc0Fvdkc3RUtIRDVac0FCRldMQUNMeHV4QWhBK1diSVBDZ0lSRWptd0R5K3lBQUVLSzFnaDJCdjBXYkFFMExBUEVMQUcwTEFLRUxJSUFRb3JXQ0hZRy9SWnNBelFNREVCSXhFakVTTTFNeEVoTlNFVklSRXpBNnJudjliVy9pMEVadjRzNXdNMy9Na0RONWNCUko2ZS9yd0FBZi8wLyt3Q2NBVkFBQjBBY3dDd0FFVllzQUV2RzdFQkdENVpzQUJGV0xBUkx4dXhFUkErV2JBQkVMQUEwTEFBTDdBQkVMSUVBUW9yV0NIWUcvUlpzQUVRc0FYUXNBVXZzZ0FGQVYyeUNBRUtLMWdoMkJ2MFdiQVJFTElNQVFvcldDSFlHL1Jac0FnUXNCWFFzQVVRc0JqUXNBUVFzQm5Rc0FFUXNCelFNREVCRVRNVkl4VXpGU01SRkJZek1qY1ZCaU1pSmpVUkl6VXpOU00xTXhFQmg4cks2ZWsyUVNBNFNVVjhmdHJheGNVRlFQNzZqN3FYL3JKQlFReVdGSmFLQVU2WHVvOEJCdi8vQUJ3QUFBVWRCelFDSmdBbEFBQUJCd0JFQVRBQk5nQVVBTEFBUlZpd0JDOGJzUVFjUGxteERBajBNREgvL3dBY0FBQUZIUWMwQWlZQUpRQUFBUWNBZFFHL0FUWUFGQUN3QUVWWXNBVXZHN0VGSEQ1WnNRMEk5REF4Ly84QUhBQUFCUjBITmdJbUFDVUFBQUVIQUowQXlRRTJBQlFBc0FCRldMQUVMeHV4QkJ3K1diRVBCdlF3TWYvL0FCd0FBQVVkQnlJQ0pnQWxBQUFCQndDa0FNVUJPZ0FVQUxBQVJWaXdCUzhic1FVY1BsbXhEZ1QwTURILy93QWNBQUFGSFFiN0FpWUFKUUFBQVFjQWFnRDVBVFlBRndDd0FFVllzQVF2RzdFRUhENVpzUkVFOUxBYjBEQXhBUC8vQUJ3QUFBVWRCNUVDSmdBbEFBQUJCd0NpQVZBQlFRQVhBTEFBUlZpd0JDOGJzUVFjUGxteERnYjBzQmpRTURFQS8vOEFIQUFBQlIwSGxBSW1BQ1VBQUFBSEFkOEJXZ0VpLy84QWQvNUVCTmdGeEFJbUFDY0FBQUFIQUhrQjB2LzMvLzhBcVFBQUJFWUhRQUltQUNrQUFBRUhBRVFBK3dGQ0FCUUFzQUJGV0xBR0x4dXhCaHcrV2JFTkNQUXdNZi8vQUtrQUFBUkdCMEFDSmdBcEFBQUJCd0IxQVlvQlFnQVVBTEFBUlZpd0JpOGJzUVljUGxteERnajBNREgvL3dDcEFBQUVSZ2RDQWlZQUtRQUFBUWNBblFDVUFVSUFGQUN3QUVWWXNBWXZHN0VHSEQ1WnNSQUc5REF4Ly84QXFRQUFCRVlIQndJbUFDa0FBQUVIQUdvQXhBRkNBQmNBc0FCRldMQUdMeHV4Qmh3K1diRVNCUFN3RzlBd01RRC8vLy9nQUFBQmdRZEFBaVlBTFFBQUFRY0FSUCtuQVVJQUZBQ3dBRVZZc0FJdkc3RUNIRDVac1FVSTlEQXgvLzhBc0FBQUFsRUhRQUltQUMwQUFBRUhBSFVBTlFGQ0FCUUFzQUJGV0xBREx4dXhBeHcrV2JFR0NQUXdNZi8vLytrQUFBSkdCMElDSmdBdEFBQUJCd0NkLzBBQlFnQVVBTEFBUlZpd0FpOGJzUUljUGxteENBYjBNREgvLy8vV0FBQUNYd2NIQWlZQUxRQUFBUWNBYXY5d0FVSUFGd0N3QUVWWXNBSXZHN0VDSEQ1WnNRb0U5TEFVMERBeEFQLy9BS2tBQUFVSUJ5SUNKZ0F5QUFBQkJ3Q2tBUHNCT2dBVUFMQUFSVml3Qmk4YnNRWWNQbG14RFFUME1ESC8vd0IyLyt3RkNRYzJBaVlBTXdBQUFRY0FSQUZTQVRnQUZBQ3dBRVZZc0Ewdkc3RU5IRDVac1NFSTlEQXgvLzhBZHYvc0JRa0hOZ0ltQURNQUFBRUhBSFVCNFFFNEFCUUFzQUJGV0xBTkx4dXhEUncrV2JFaUNQUXdNZi8vQUhiLzdBVUpCemdDSmdBekFBQUJCd0NkQU9zQk9BQVVBTEFBUlZpd0RTOGJzUTBjUGxteElnYjBNREgvL3dCMi8rd0ZDUWNrQWlZQU13QUFBUWNBcEFEbkFUd0FGQUN3QUVWWXNBMHZHN0VOSEQ1WnNTTUU5REF4Ly84QWR2L3NCUWtHL1FJbUFETUFBQUVIQUdvQkd3RTRBQmNBc0FCRldMQU5MeHV4RFJ3K1diRW5CUFN3TU5Bd01RRC8vd0NNLyt3RXFnYzBBaVlBT1FBQUFRY0FSQUVyQVRZQUZBQ3dBRVZZc0Fvdkc3RUtIRDVac1JRSTlEQXgvLzhBalAvc0JLb0hOQUltQURrQUFBRUhBSFVCdWdFMkFCUUFzQUJGV0xBU0x4dXhFaHcrV2JFVkNQUXdNZi8vQUl6LzdBU3FCellDSmdBNUFBQUJCd0NkQU1RQk5nQVVBTEFBUlZpd0NpOGJzUW9jUGxteEZ3YjBNREgvL3dDTS8rd0VxZ2I3QWlZQU9RQUFBUWNBYWdEMEFUWUFGd0N3QUVWWXNBb3ZHN0VLSEQ1WnNSa0U5TEFqMERBeEFQLy9BQThBQUFTN0J6UUNKZ0E5QUFBQkJ3QjFBWWdCTmdBVUFMQUFSVml3QVM4YnNRRWNQbG14Q3dqME1ESC8vd0J0Lyt3RDZnWCtBaVlBUlFBQUFRY0FSQURWQUFBQUZBQ3dBRVZZc0Jjdkc3RVhHRDVac1NvSjlEQXgvLzhBYmYvc0Erb0YvZ0ltQUVVQUFBRUhBSFVCWkFBQUFCUUFzQUJGV0xBWEx4dXhGeGcrV2JFckNmUXdNZi8vQUczLzdBUHFCZ0FDSmdCRkFBQUJCZ0NkYmdBQUZBQ3dBRVZZc0Jjdkc3RVhHRDVac1NzQjlEQXgvLzhBYmYvc0Erb0Y3QUltQUVVQUFBRUdBS1JxQkFBVUFMQUFSVml3Rnk4YnNSY1lQbG14TEFIME1ESC8vd0J0Lyt3RDZnWEZBaVlBUlFBQUFRY0FhZ0NlQUFBQUZ3Q3dBRVZZc0Jjdkc3RVhHRDVac1RBQjlMQTUwREF4QVAvL0FHMy83QVBxQmxzQ0pnQkZBQUFCQndDaUFQVUFDd0FYQUxBQVJWaXdGeThic1JjWVBsbXhMQVQwc0RiUU1ERUEvLzhBYmYvc0Erb0dYd0ltQUVVQUFBQUhBZDhBLy8vdC8vOEFYUDVFQSt3RVRnSW1BRWNBQUFBSEFIa0JQLy8zLy84QVhmL3NBL01GL2dJbUFFa0FBQUVIQUVRQXhRQUFBQlFBc0FCRldMQUlMeHV4Q0JnK1diRWZDZlF3TWYvL0FGMy83QVB6QmY0Q0pnQkpBQUFCQndCMUFWUUFBQUFVQUxBQVJWaXdDQzhic1FnWVBsbXhJQW4wTURILy93QmQvK3dEOHdZQUFpWUFTUUFBQVFZQW5WNEFBQlFBc0FCRldMQUlMeHV4Q0JnK1diRWdBZlF3TWYvL0FGMy83QVB6QmNVQ0pnQkpBQUFCQndCcUFJNEFBQUFYQUxBQVJWaXdDQzhic1FnWVBsbXhKUUgwc0M3UU1ERUEvLy8veGdBQUFXY0YvUUltQUl3QUFBRUdBRVNOL3dBVUFMQUFSVml3QWk4YnNRSVlQbG14QlFuME1ESC8vd0NXQUFBQ053WDlBaVlBakFBQUFRWUFkUnYvQUJRQXNBQkZXTEFETHh1eEF4ZytXYkVHQ2ZRd01mLy8vODhBQUFJc0JmOENKZ0NNQUFBQkJ3Q2QveWIvL3dBVUFMQUFSVml3QWk4YnNRSVlQbG14Q0FIME1ESC8vLys4QUFBQ1JRWEVBaVlBakFBQUFRY0FhdjlXLy84QUZ3Q3dBRVZZc0FJdkc3RUNHRDVac1FzQjlMQVUwREF4QVAvL0FJd0FBQVBmQmV3Q0pnQlNBQUFCQmdDa1lRUUFGQUN3QUVWWXNBTXZHN0VER0Q1WnNSVUI5REF4Ly84QVcvL3NCRFFGL2dJbUFGTUFBQUVIQUVRQXp3QUFBQlFBc0FCRldMQUVMeHV4QkJnK1diRWRDZlF3TWYvL0FGdi83QVEwQmY0Q0pnQlRBQUFCQndCMUFWNEFBQUFVQUxBQVJWaXdCQzhic1FRWVBsbXhIZ24wTURILy93QmIvK3dFTkFZQUFpWUFVd0FBQVFZQW5XZ0FBQlFBc0FCRldMQUVMeHV4QkJnK1diRWVBZlF3TWYvL0FGdi83QVEwQmV3Q0pnQlRBQUFCQmdDa1pBUUFGQUN3QUVWWXNBUXZHN0VFR0Q1WnNSOEI5REF4Ly84QVcvL3NCRFFGeFFJbUFGTUFBQUVIQUdvQW1BQUFBQmNBc0FCRldMQUVMeHV4QkJnK1diRWpBZlN3TE5Bd01RRC8vd0NJLyt3RDNBWCtBaVlBV1FBQUFRY0FSQURIQUFBQUZBQ3dBRVZZc0Fjdkc3RUhHRDVac1JJSjlEQXgvLzhBaVAvc0E5d0YvZ0ltQUZrQUFBRUhBSFVCVmdBQUFCUUFzQUJGV0xBTkx4dXhEUmcrV2JFVENmUXdNZi8vQUlqLzdBUGNCZ0FDSmdCWkFBQUJCZ0NkWUFBQUZBQ3dBRVZZc0Fjdkc3RUhHRDVac1JVQjlEQXgvLzhBaVAvc0E5d0Z4UUltQUZrQUFBRUhBR29Ba0FBQUFCY0FzQUJGV0xBSEx4dXhCeGcrV2JFWUFmU3dJZEF3TVFELy93QVcva3NEc0FYK0FpWUFYUUFBQVFjQWRRRWJBQUFBRkFDd0FFVllzQUV2RzdFQkdENVpzUklKOURBeC8vOEFGdjVMQTdBRnhRSW1BRjBBQUFFR0FHcFZBQUFYQUxBQVJWaXdEeThic1E4WVBsbXhGd0gwc0NEUU1ERUEvLzhBSEFBQUJSMEc3Z0ltQUNVQUFBRUhBSEFBeHdFK0FCTUFzQUJGV0xBRUx4dXhCQncrV2JBTTNEQXhBUC8vQUczLzdBUHFCYmdDSmdCRkFBQUJCZ0J3YkFnQUV3Q3dBRVZZc0Jjdkc3RVhHRDVac0NyY01ERUEvLzhBSEFBQUJSMEhEZ0ltQUNVQUFBRUhBS0FBOUFFM0FCTUFzQUJGV0xBRUx4dXhCQncrV2JBTjNEQXhBUC8vQUczLzdBUHFCZGdDSmdCRkFBQUJCd0NnQUprQUFRQVRBTEFBUlZpd0Z5OGJzUmNZUGxtd0s5d3dNUUFBQWdBYy9rOEZIUVd3QUJZQUdRQm5BTEFBUlZpd0ZpOGJzUlljUGxtd0FFVllzQlF2RzdFVUVENVpzQUJGV0xBQkx4dXhBUkErV2JBQVJWaXdEQzhic1F3U1BsbXlCd01LSzFnaDJCdjBXYkFCRUxBUjBMQVJMN0lYRkJZUkVqbXdGeSt5RXdFS0sxZ2gyQnYwV2JJWkZoUVJFamt3TVFFQkl3Y0dGUlF6TWpjWEJpTWlKalUwTndNaEF5TUJBeUVEQXZBQ0xTWTZjVTR3TkExR1dsbG5xWWY5bm9uR0FpeWpBZS80QmJENlVDMWJWa2dhZVN4b1ZwQnNBWFAraEFXdy9Hb0NxUUFBQWdCdC9rOEQ2Z1JPQUMwQU53Q1FBTEFBUlZpd0Z5OGJzUmNZUGxtd0FFVllzQVF2RzdFRUVENVpzQUJGV0xBZUx4dXhIaEErV2JBQVJWaXdLUzhic1NrU1BsbXdIaEN3QU5Dd0FDK3lBZ1FYRVJJNXNnc1hCQkVTT2JBTEw3QVhFTElQQVFvcldDSFlHL1Jac2hJTEZ4RVNPYkFwRUxJa0F3b3JXQ0hZRy9SWnNBUVFzaTRCQ2l0WUlkZ2I5Rm13Q3hDeU13RUtLMWdoMkJ2MFdUQXhKU1luQmlNaUpqVTBKRE16TlRRbUl5SUdGU00wTmpZek1oWVhFUlFYRlNNSEJoVVVNekkzRndZaklpWTFOQ2N5TmpjMUl5QVZGQllESkE4SGdiT2d6UUVCNmJSMGNXT0d1blBGZHJ2VUJDWWhPbkZPTURRTlJscFpaNGhYbkNPUi9xeDBCeVpGaHJXTHFidFZZWE5rUjFHWFdMdWsvZzZWV0JBdFcxWklHbmtzYUZhUThGcEkzc2RYWWdELy93QjMvK3dFMkFkVkFpWUFKd0FBQVFjQWRRSEdBVmNBRkFDd0FFVllzQXN2RzdFTEhENVpzUjhJOURBeC8vOEFYUC9zQSt3Ri9nSW1BRWNBQUFFSEFIVUJNd0FBQUJRQXNBQkZXTEFRTHh1eEVCZytXYkVnQ2ZRd01mLy9BSGYvN0FUWUIxY0NKZ0FuQUFBQkJ3Q2RBTkFCVndBVUFMQUFSVml3Q3k4YnNRc2NQbG14SHdiME1ESC8vd0JjLyt3RDdBWUFBaVlBUndBQUFRWUFuVDBBQUJRQXNBQkZXTEFRTHh1eEVCZytXYkVnQWZRd01mLy9BSGYvN0FUWUJ4a0NKZ0FuQUFBQkJ3Q2hBYTRCVndBVUFMQUFSVml3Q3k4YnNRc2NQbG14SXdUME1ESC8vd0JjLyt3RDdBWENBaVlBUndBQUFRY0FvUUViQUFBQUZBQ3dBRVZZc0JBdkc3RVFHRDVac1NRQjlEQXgvLzhBZC8vc0JOZ0hWd0ltQUNjQUFBRUhBSjRBNWdGWUFCUUFzQUJGV0xBTEx4dXhDeHcrV2JFaEJ2UXdNZi8vQUZ6LzdBUHNCZ0FDSmdCSEFBQUJCZ0NlVXdFQUZBQ3dBRVZZc0JBdkc3RVFHRDVac1NJQjlEQXgvLzhBcVFBQUJNWUhRZ0ltQUNnQUFBRUhBSjRBbndGREFCUUFzQUJGV0xBQkx4dXhBUncrV2JFYkJ2UXdNZi8vQUYvLzdBVXJCZ0lBSmdCSUFBQUJCd0dpQTlRRkV3QklBTEx3SHdGeXNoOGZBVjJ5bng4QlhiSWZId0Z4dE04ZjN4OENjYkxmSHdGeXNsOGZBWEt5VHg4QmNiTFBId0ZkdEU4Zlh4OENYYkpnSHdGZHN1QWZBWEd5NEI4QlhUQXgvLzhBcVFBQUJFWUcrZ0ltQUNrQUFBRUhBSEFBa2dGS0FCTUFzQUJGV0xBR0x4dXhCaHcrV2JBTjNEQXhBUC8vQUYzLzdBUHpCYmdDSmdCSkFBQUJCZ0J3WEFnQUV3Q3dBRVZZc0Fndkc3RUlHRDVac0IvY01ERUEvLzhBcVFBQUJFWUhHZ0ltQUNrQUFBRUhBS0FBdndGREFCTUFzQUJGV0xBR0x4dXhCaHcrV2JBUDNEQXhBUC8vQUYzLzdBUHpCZGdDSmdCSkFBQUJCd0NnQUlrQUFRQVRBTEFBUlZpd0NDOGJzUWdZUGxtd0lkd3dNUUQvL3dDcEFBQUVSZ2NFQWlZQUtRQUFBUWNBb1FGeUFVSUFGQUN3QUVWWXNBWXZHN0VHSEQ1WnNSTUU5REF4Ly84QVhmL3NBL01Gd2dJbUFFa0FBQUVIQUtFQlBBQUFBQlFBc0FCRldMQUlMeHV4Q0JnK1diRWxBZlF3TVFBQkFLbitUd1JHQmJBQUd3QjJBTEFBUlZpd0ZpOGJzUlljUGxtd0FFVllzQlV2RzdFVkVENVpzQUJGV0xBUEx4dXhEeEkrV2JBQVJWaXdCQzhic1FRUVBsbXlHaFVXRVJJNXNCb3ZzZ0VCQ2l0WUlkZ2I5Rm13RlJDeUFnRUtLMWdoMkJ2MFdiQVBFTElLQXdvcldDSFlHL1Jac0JZUXNoa0JDaXRZSWRnYjlGa3dNUUVoRVNFVkl3Y0dGUlF6TWpjWEJpTWlKalUwTnlFUklSVWhFU0VENFAySkF0MUpPbkZPTURRTlJscFpaNXY5WFFPVC9TMENkd0toL2Z5ZExWdFdTQnA1TEdoV2lta0ZzSjcrTEFBQUFnQmQvbWdEOHdST0FDVUFMUUI2QUxBQVJWaXdHaThic1JvWVBsbXdBRVZZc0Ewdkc3RU5FajVac0FCRldMQVNMeHV4RWhBK1diQUUwTEFORUxJSUF3b3JXQ0hZRy9SWnNpb1NHaEVTT2JBcUw3Uy9LczhxQWwyeUhnRUtLMWdoMkJ2MFdiQVNFTElpQVFvcldDSFlHL1Jac2lVU0doRVNPYkFhRUxJbUFRb3JXQ0hZRy9SWk1ERWxCZ2N6QndZVkZETXlOeGNHSXlJbU5UUTNKZ0ExTlRRMk5qTXlFaEVWSVJZV016STJOd0VpQmdjaE5TWW1BK1ZIY3dFNmNVNHdOQTFHV2xsbll0cis5WHZkZ2RQcS9TTUVzNHBpaURQK3duQ1lFZ0llQ0lpOWJqWXRXMVpJR25rc2FGWnNXZ1FCSWU4aG9mMlAvdXIrL1UyZ3hWQkNBcUdqa3c2Tm13RC8vd0NwQUFBRVJnZENBaVlBS1FBQUFRY0FuZ0NxQVVNQUZBQ3dBRVZZc0FZdkc3RUdIRDVac1JFRzlEQXgvLzhBWGYvc0EvTUdBQUltQUVrQUFBRUdBSjUwQVFBVUFMQUFSVml3Q0M4YnNRZ1lQbG14SWdIME1ESC8vd0I2Lyt3RTNBZFhBaVlBS3dBQUFRY0FuUURJQVZjQUZBQ3dBRVZZc0Fzdkc3RUxIRDVac1NJRzlEQXgvLzhBWVA1V0EvSUdBQUltQUVzQUFBRUdBSjFWQUFBVUFMQUFSVml3QXk4YnNRTVlQbG14SndIME1ESC8vd0I2Lyt3RTNBY3ZBaVlBS3dBQUFRY0FvQUR6QVZnQUV3Q3dBRVZZc0Fzdkc3RUxIRDVac0NMY01ERUEvLzhBWVA1V0EvSUYyQUltQUVzQUFBRUhBS0FBZ0FBQkFCTUFzQUJGV0xBREx4dXhBeGcrV2JBbjNEQXhBUC8vQUhyLzdBVGNCeGtDSmdBckFBQUJCd0NoQWFZQlZ3QVVBTEFBUlZpd0N5OGJzUXNjUGxteEp3VDBNREgvL3dCZy9sWUQ4Z1hDQWlZQVN3QUFBUWNBb1FFekFBQUFGQUN3QUVWWXNBTXZHN0VER0Q1WnNTd0I5REF4Ly84QWV2My9CTndGeEFJbUFDc0FBQUFIQWFJQm8vNmcvLzhBWVA1V0EvSUdrd0ltQUVzQUFBRUhBYmtCS3dCWUFCTUFzQUJGV0xBREx4dXhBeGcrV2JBcTNEQXhBUC8vQUtrQUFBVUlCMElDSmdBc0FBQUJCd0NkQVBFQlFnQVVBTEFBUlZpd0J5OGJzUWNjUGxteEVBYjBNREgvL3dDTUFBQUQzd2RCQWlZQVRBQUFBUWNBblFBZEFVRUFDUUN3RVMrd0ZOd3dNUUQvLy8rM0FBQUNlZ2N1QWlZQUxRQUFBUWNBcFA4OEFVWUFGQUN3QUVWWXNBTXZHN0VESEQ1WnNRY0U5REF4Ly8vL25RQUFBbUFGNmdJbUFJd0FBQUVIQUtUL0lnQUNBQlFBc0FCRldMQURMeHV4QXhnK1diRUhBZlF3TWYvLy83WUFBQUtBQnZvQ0pnQXRBQUFCQndCdy96NEJTZ0FUQUxBQVJWaXdBaThic1FJY1BsbXdCZHd3TVFELy8vK2NBQUFDWmdXMkFpWUFqQUFBQVFjQWNQOGtBQVlBRXdDd0FFVllzQUl2RzdFQ0dENVpzQVhjTURFQS8vLy83QUFBQWtNSEdnSW1BQzBBQUFFSEFLRC9hd0ZEQUJNQXNBQkZXTEFDTHh1eEFodytXYkFIM0RBeEFQLy8vOUlBQUFJcEJkY0NKZ0NNQUFBQkJ3Q2cvMUVBQUFBVEFMQUFSVml3QWk4YnNRSVlQbG13Qjl3d01RRC8vd0FZL2xnQmVBV3dBaVlBTFFBQUFBWUFvK1lKLy8vLysvNVBBV2dGeEFJbUFFMEFBQUFHQUtQSkFQLy9BS29BQUFHRkJ3UUNKZ0F0QUFBQkJ3Q2hBQjBCUWdBVUFMQUFSVml3QWk4YnNRSWNQbG14Q3dUME1ESC8vd0MzLyt3RitRV3dBQ1lBTFFBQUFBY0FMZ0l0QUFELy93Q04va3NEU2dYRUFDWUFUUUFBQUFjQVRnSHhBQUQvL3dBMS8rd0VnZ2MxQWlZQUxnQUFBUWNBblFGOEFUVUFGQUN3QUVWWXNBQXZHN0VBSEQ1WnNSUUc5REF4Ly8vL3RQNUxBamtGMkFJbUFKc0FBQUVIQUozL00vL1lBQlFBc0FCRldMQU5MeHV4RFJnK1diRVNCUFF3TWYvL0FLbjkvd1VGQmJBQ0pnQXZBQUFBQndHaUFaVCtvUC8vQUkzOS93UU1CZ0FDSmdCUEFBQUFCd0dpQVJIK29QLy9BS0VBQUFRY0J5OENKZ0F3QUFBQkJ3QjFBQ1lCTVFBVUFMQUFSVml3QlM4YnNRVWNQbG14Q0FqME1ESC8vd0NUQUFBQ05BZVVBaVlBVUFBQUFRY0FkUUFZQVpZQUZBQ3dBRVZZc0FNdkc3RURIajVac1FZSjlEQXgvLzhBcWYzL0JCd0ZzQUltQURBQUFBQUhBYUlCYlA2Zy8vOEFWLzMvQVZVR0FBSW1BRkFBQUFBSEFhTC8rLzZnLy84QXFRQUFCQndGc1FJbUFEQUFBQUVIQWFJQjFRVENBQkFBc0FCRldMQUtMeHV4Q2h3K1dUQXgvLzhBbkFBQUFxMEdBZ0FtQUZBQUFBRUhBYUlCVmdVVEFGQUFzaDhJQVYyeW53Z0JYYlFmQ0M4SUFuR3lyd2dCY2JRdkNEOElBbkt5M3dnQmNyWmZDRzhJZndnRGNyVFBDTjhJQW5HeVR3Z0JjYkxQQ0FGZHRFOElYd2dDWGJKZ0NBRmRzdkFJQVhJd01mLy9BS2tBQUFRY0JiQUNKZ0F3QUFBQUJ3Q2hBYno5eGYvL0FKd0FBQUtnQmdBQUpnQlFBQUFBQndDaEFUajl0di8vQUtrQUFBVUlCelFDSmdBeUFBQUJCd0IxQWZVQk5nQVVBTEFBUlZpd0NDOGJzUWdjUGxteERBajBNREgvL3dDTUFBQUQzd1grQWlZQVVnQUFBUWNBZFFGYkFBQUFGQUN3QUVWWXNBTXZHN0VER0Q1WnNSUUo5REF4Ly84QXFmMy9CUWdGc0FJbUFESUFBQUFIQWFJQjBQNmcvLzhBalAzL0E5OEVUZ0ltQUZJQUFBQUhBYUlCTS82Zy8vOEFxUUFBQlFnSE5nSW1BRElBQUFFSEFKNEJGUUUzQUJRQXNBQkZXTEFHTHh1eEJodytXYkVQQnZRd01mLy9BSXdBQUFQZkJnQUNKZ0JTQUFBQkJnQ2Vld0VBRkFDd0FFVllzQU12RzdFREdENVpzUllCOURBeC8vLy92QUFBQTk4R0JBSW1BRklBQUFFSEFhTC9ZQVVWQUFZQXNCY3ZNREgvL3dCMi8rd0ZDUWJ3QWlZQU13QUFBUWNBY0FEcEFVQUFFd0N3QUVWWXNBMHZHN0VOSEQ1WnNDSGNNREVBLy84QVcvL3NCRFFGdUFJbUFGTUFBQUVHQUhCbUNBQVRBTEFBUlZpd0JDOGJzUVFZUGxtd0hkd3dNUUQvL3dCMi8rd0ZDUWNRQWlZQU13QUFBUWNBb0FFV0FUa0FFd0N3QUVWWXNBMHZHN0VOSEQ1WnNDTGNNREVBLy84QVcvL3NCRFFGMkFJbUFGTUFBQUVIQUtBQWt3QUJBQk1Bc0FCRldMQUVMeHV4QkJnK1diQWYzREF4QVAvL0FIYi83QVVKQnpjQ0pnQXpBQUFCQndDbEFXc0JPQUFYQUxBQVJWaXdEUzhic1EwY1BsbXhKZ2owc0NMUU1ERUEvLzhBVy8vc0JEUUYvd0ltQUZNQUFBRUhBS1VBNkFBQUFCY0FzQUJGV0xBRUx4dXhCQmcrV2JFaUNmU3dIdEF3TVFELy93Q29BQUFFeVFjMEFpWUFOZ0FBQVFjQWRRR0FBVFlBRkFDd0FFVllzQVF2RzdFRUhENVpzUm9JOURBeC8vOEFqQUFBQXRJRi9nSW1BRllBQUFFSEFIVUF0Z0FBQUJRQXNBQkZXTEFMTHh1eEN4ZytXYkVRQ2ZRd01mLy9BS2o5L3dUSkJiQUNKZ0EyQUFBQUJ3R2lBV1Arb1AvL0FGUDkvd0tYQkU0Q0pnQldBQUFBQndHaS8vZitvUC8vQUtnQUFBVEpCellDSmdBMkFBQUJCd0NlQUtBQk53QVVBTEFBUlZpd0JDOGJzUVFjUGxteEhRYjBNREgvL3dCakFBQUN6UVlBQWlZQVZnQUFBUVlBbnRjQkFCUUFzQUJGV0xBTEx4dXhDeGcrV2JFU0FmUXdNZi8vQUZELzdBUnlCellDSmdBM0FBQUJCd0IxQVkwQk9BQVVBTEFBUlZpd0JpOGJzUVljUGxteEtRajBNREgvL3dCZi8rd0R1d1grQWlZQVZ3QUFBUWNBZFFGUkFBQUFGQUN3QUVWWXNBa3ZHN0VKR0Q1WnNTa0o5REF4Ly84QVVQL3NCSElIT0FJbUFEY0FBQUVIQUowQWx3RTRBQlFBc0FCRldMQUdMeHV4Qmh3K1diRXBCdlF3TWYvL0FGLy83QU83QmdBQ0pnQlhBQUFCQmdDZFd3QUFGQUN3QUVWWXNBa3ZHN0VKR0Q1WnNTa0I5REF4Ly84QVVQNU5CSElGeEFJbUFEY0FBQUFIQUhrQm53QUEvLzhBWC81RkE3c0VUZ0ltQUZjQUFBQUhBSGtCWGYvNC8vOEFVUDMvQkhJRnhBSW1BRGNBQUFBSEFhSUJkZjZnLy84QVgvMy9BN3NFVGdJbUFGY0FBQUFIQWFJQk0vNmcvLzhBVVAvc0JISUhPQUltQURjQUFBRUhBSjRBclFFNUFCUUFzQUJGV0xBR0x4dXhCaHcrV2JFckJ2UXdNZi8vQUYvLzdBTzdCZ0FDSmdCWEFBQUJCZ0NlY1FFQUZBQ3dBRVZZc0Frdkc3RUpHRDVac1NzQjlEQXgvLzhBTWYzL0JKY0ZzQUltQURnQUFBQUhBYUlCWnY2Zy8vOEFDZjMvQWxZRlFBSW1BRmdBQUFBSEFhSUF4ZjZnLy84QU1mNU5CSmNGc0FJbUFEZ0FBQUFIQUhrQmtBQUEvLzhBQ2Y1TkFwa0ZRQUltQUZnQUFBQUhBSGtBN3dBQS8vOEFNUUFBQkpjSE5nSW1BRGdBQUFFSEFKNEFvZ0UzQUJRQXNBQkZXTEFHTHh1eEJodytXYkVOQnZRd01mLy9BQW4vN0FMc0Jua0FKZ0JZQUFBQUJ3R2lBWlVGaXYvL0FJei83QVNxQnlJQ0pnQTVBQUFCQndDa0FNQUJPZ0FVQUxBQVJWaXdFaThic1JJY1BsbXhGZ1QwTURILy93Q0kvK3dEM0FYc0FpWUFXUUFBQVFZQXBGd0VBQlFBc0FCRldMQU5MeHV4RFJnK1diRVVBZlF3TWYvL0FJei83QVNxQnU0Q0pnQTVBQUFCQndCd0FNSUJQZ0FUQUxBQVJWaXdFaThic1JJY1BsbXdFOXd3TVFELy93Q0kvK3dEM0FXNEFpWUFXUUFBQVFZQWNGNElBQk1Bc0FCRldMQUhMeHV4QnhnK1diQVMzREF4QVAvL0FJei83QVNxQnc0Q0pnQTVBQUFCQndDZ0FPOEJOd0FUQUxBQVJWaXdDaThic1FvY1BsbXdGdHd3TVFELy93Q0kvK3dEM0FYWUFpWUFXUUFBQVFjQW9BQ0xBQUVBRXdDd0FFVllzQWN2RzdFSEdENVpzQlRjTURFQS8vOEFqUC9zQktvSGtRSW1BRGtBQUFFSEFLSUJTd0ZCQUJjQXNBQkZXTEFLTHh1eENodytXYkVXQnZTd0lOQXdNUUQvL3dDSS8rd0QzQVpiQWlZQVdRQUFBUWNBb2dEbkFBc0FGd0N3QUVWWXNBY3ZHN0VIR0Q1WnNSUUU5TEFlMERBeEFQLy9BSXovN0FTcUJ6VUNKZ0E1QUFBQkJ3Q2xBVVFCTmdBWEFMQUFSVml3RWk4YnNSSWNQbG14RlFqMHNCblFNREVBLy84QWlQL3NCQXdGL3dJbUFGa0FBQUVIQUtVQTRBQUFBQmNBc0FCRldMQU5MeHV4RFJnK1diRVRDZlN3RjlBd01RQUFBUUNNL25zRXFnV3dBQ0FBVXdDd0FFVllzQmd2RzdFWUhENVpzQUJGV0xBTkx4dXhEUkkrV2JBQVJWaXdFeThic1JNUVBsbXdHQkN3SU5DeUJCTWdFUkk1c0EwUXNnZ0RDaXRZSWRnYjlGbXdFeEN5SEFFS0sxZ2gyQnYwV1RBeEFSRUdCZ2NHRlJRek1qY1hCaU1pSmpVME53Y2lBQ2NSTXhFVUZqTXlOalVSQktvQmlvT2JUakEwRFVaYVdXZFBGdS8rNUFLK3JxR2pyUVd3L0NHVTRqdHlZRWdhZVN4b1ZtRlRBUUVDNGdQZy9DYWVyNjZlQTlzQUFRQ0kvazhENWdRNkFCOEFiUUN3QUVWWXNCY3ZHN0VYR0Q1WnNBQkZXTEFkTHh1eEhSZytXYkFBUlZpd0h5OGJzUjhRUGxtd0FFVllzQkl2RzdFU0VENVpzQUJGV0xBS0x4dXhDaEkrV2JJRkF3b3JXQ0hZRy9SWnNCOFFzQS9Rc0E4dnNoQVNIUkVTT2JBU0VMSWFBUW9yV0NIWUcvUlpNREVoQndZVkZETXlOeGNHSXlJbU5UUTNKd1lqSWlZbkVUTVJGRE15TnhFekVRUFNPbkZPTURRTlJscFpaNllFYk5HdHRRRzV5TlJHdVMxYlZrZ2FlU3hvVm85cVpYL0p4UUxBL1VYMm5nTVQrOGIvL3dBOUFBQUc3UWMyQWlZQU93QUFBUWNBblFIRkFUWUFGQUN3QUVWWXNBTXZHN0VESEQ1WnNSY0c5REF4Ly84QUt3QUFCZE1HQUFJbUFGc0FBQUVIQUowQkpBQUFBQlFBc0FCRldMQU1MeHV4REJnK1diRVBBZlF3TWYvL0FBOEFBQVM3QnpZQ0pnQTlBQUFCQndDZEFKSUJOZ0FVQUxBQVJWaXdBUzhic1FFY1BsbXhDd2IwTURILy93QVcva3NEc0FZQUFpWUFYUUFBQVFZQW5TVUFBQlFBc0FCRldMQVBMeHV4RHhnK1diRVVBZlF3TWYvL0FBOEFBQVM3QnZzQ0pnQTlBQUFCQndCcUFNSUJOZ0FYQUxBQVJWaXdDQzhic1FnY1BsbXhFQVQwc0JuUU1ERUEvLzhBVmdBQUJIb0hOQUltQUQ0QUFBRUhBSFVCaHdFMkFCUUFzQUJGV0xBSEx4dXhCeHcrV2JFTUNQUXdNZi8vQUZnQUFBT3pCZjRDSmdCZUFBQUJCd0IxQVNFQUFBQVVBTEFBUlZpd0J5OGJzUWNZUGxteERBbjBNREgvL3dCV0FBQUVlZ2I0QWlZQVBnQUFBUWNBb1FGdkFUWUFGQUN3QUVWWXNBY3ZHN0VISEQ1WnNSRUU5REF4Ly84QVdBQUFBN01Gd2dJbUFGNEFBQUVIQUtFQkNRQUFBQlFBc0FCRldMQUhMeHV4QnhnK1diRVJBZlF3TWYvL0FGWUFBQVI2QnpZQ0pnQStBQUFCQndDZUFLY0JOd0FVQUxBQVJWaXdCeThic1FjY1BsbXhEd2IwTURILy93QllBQUFEc3dZQUFpWUFYZ0FBQVFZQW5rRUJBQlFBc0FCRldMQUhMeHV4QnhnK1diRVBBZlF3TWYvLy8vSUFBQWRYQjBBQ0pnQ0JBQUFCQndCMUFza0JRZ0FVQUxBQVJWaXdCaThic1FZY1BsbXhGUWowTURILy93Qk8vK3dHZkFYL0FpWUFoZ0FBQVFjQWRRSjZBQUVBRkFDd0FFVllzQjB2RzdFZEdENVpzVUFKOURBeC8vOEFkditqQlIwSGZnSW1BSU1BQUFFSEFIVUI2UUdBQUJRQXNBQkZXTEFRTHh1eEVCdytXYkVzQ1BRd01mLy9BRnYvZWdRMEJmNENKZ0NKQUFBQkJ3QjFBVGNBQUFBVUFMQUFSVml3QkM4YnNRUVlQbG14S1FuME1ESC8vLysrQUFBRUh3U05BaVlCdlFBQUFRY0Izdjh2LzNnQUxBQ3lIeGdCY2JUZkdPOFlBbkcwSHhndkdBSmRzaDhZQVhLeVR4Z0JjYlR2R1A4WUFsMnlYeGdCWFRBeC8vLy92Z0FBQkI4RWpRSW1BYjBBQUFFSEFkNy9MLzk0QURZQXRPOFgveGNDWGJKUEZ3RnhzaDhYQVhLeTN4Y0Jjckp2RndGeXROOFg3eGNDY2JJZkZ3RnhzbDhYQVYyMEh4Y3ZGd0pkTURILy93QW9BQUFEL1FTTkFpWUJ6UUFBQVFZQjNrWGdBQTBBc2dNS0FWMnlzQW9CWFRBeEFQLy9BQk1BQUFSd0Jod0NKZ0c2QUFBQkJ3QkVBTlVBSGdBVUFMQUFSVml3QkM4YnNRUWFQbG14REFiME1ESC8vd0FUQUFBRWNBWWNBaVlCdWdBQUFRY0FkUUZrQUI0QUZBQ3dBRVZZc0FVdkc3RUZHajVac1EwRzlEQXgvLzhBRXdBQUJIQUdIZ0ltQWJvQUFBRUdBSjF1SGdBVUFMQUFSVml3QkM4YnNRUWFQbG14RHdUME1ESC8vd0FUQUFBRWNBWUtBaVlCdWdBQUFRWUFwR29pQUJRQXNBQkZXTEFGTHh1eEJSbytXYkVPQXZRd01mLy9BQk1BQUFSd0JlTUNKZ0c2QUFBQkJ3QnFBSjRBSGdBWEFMQUFSVml3QkM4YnNRUWFQbG14RWdMMHNCdlFNREVBLy84QUV3QUFCSEFHZVFJbUFib0FBQUVIQUtJQTlRQXBBQmNBc0FCRldMQUVMeHV4QkJvK1diRU9CdlN3R05Bd01RRC8vd0FUQUFBRWNBWjhBaVlCdWdBQUFBY0Izd0QvQUFyLy93Qmcva29FTUFTZEFpWUJ2QUFBQUFjQWVRRjAvLzMvL3dDS0FBQURyZ1ljQWlZQnZnQUFBUWNBUkFDb0FCNEFGQUN3QUVWWXNBWXZHN0VHR2o1WnNRMEc5REF4Ly84QWlnQUFBNjRHSEFJbUFiNEFBQUVIQUhVQk53QWVBQlFBc0FCRldMQUhMeHV4QnhvK1diRU9CdlF3TWYvL0FJb0FBQU91Qmg0Q0pnRytBQUFCQmdDZFFSNEFGQUN3QUVWWXNBWXZHN0VHR2o1WnNSQUU5REF4Ly84QWlnQUFBNjRGNHdJbUFiNEFBQUVHQUdweEhnQVhBTEFBUlZpd0JpOGJzUVlhUGxteEV3TDBzQnpRTURFQS8vLy92Z0FBQVY4R0hBSW1BY0lBQUFFR0FFU0ZIZ0FVQUxBQVJWaXdBaThic1FJYVBsbXhCUWIwTURILy93Q09BQUFDTHdZY0FpWUJ3Z0FBQVFZQWRSTWVBQlFBc0FCRldMQURMeHV4QXhvK1diRUdCdlF3TWYvLy84Y0FBQUlrQmg0Q0pnSENBQUFCQndDZC94NEFIZ0FVQUxBQVJWaXdBaThic1FJYVBsbXhDQVQwTURILy8vKzBBQUFDUFFYakFpWUJ3Z0FBQVFjQWF2OU9BQjRBRndDd0FFVllzQUl2RzdFQ0dqNVpzUXNDOUxBVTBEQXhBUC8vQUlvQUFBUllCZ29DSmdISEFBQUJCd0NrQUpVQUlnQVVBTEFBUlZpd0JpOGJzUVlhUGxteERRTDBNREgvL3dCZy8vQUVXZ1ljQWlZQnlBQUFBUWNBUkFEdUFCNEFGQUN3QUVWWXNBb3ZHN0VLR2o1WnNSMEc5REF4Ly84QVlQL3dCRm9HSEFJbUFjZ0FBQUVIQUhVQmZRQWVBQlFBc0FCRldMQUtMeHV4Q2hvK1diRWVCdlF3TWYvL0FHRC84QVJhQmg0Q0pnSElBQUFCQndDZEFJY0FIZ0FVQUxBQVJWaXdDaThic1FvYVBsbXhJQVQwTURILy93QmcvL0FFV2dZS0FpWUJ5QUFBQVFjQXBBQ0RBQ0lBRkFDd0FFVllzQW92RzdFS0dqNVpzUjhDOURBeC8vOEFZUC93QkZvRjR3SW1BY2dBQUFFSEFHb0F0d0FlQUJjQXNBQkZXTEFLTHh1eENobytXYkVqQXZTd0xOQXdNUUQvL3dCMC8vQUVDZ1ljQWlZQnpnQUFBUWNBUkFEUEFCNEFGQUN3QUVWWXNBa3ZHN0VKR2o1WnNSTUc5REF4Ly84QWRQL3dCQW9HSEFJbUFjNEFBQUVIQUhVQlhnQWVBQlFBc0FCRldMQVJMeHV4RVJvK1diRVVCdlF3TWYvL0FIVC84QVFLQmg0Q0pnSE9BQUFCQmdDZGFCNEFGQUN3QUVWWXNBa3ZHN0VKR2o1WnNSWUU5REF4Ly84QWRQL3dCQW9GNHdJbUFjNEFBQUVIQUdvQW1BQWVBQmNBc0FCRldMQUpMeHV4Q1JvK1diRVpBdlN3SXRBd01RRC8vd0FOQUFBRUhBWWNBaVlCMGdBQUFRY0FkUUV6QUI0QUZBQ3dBRVZZc0FFdkc3RUJHajVac1FzRzlEQXgvLzhBRXdBQUJIQUYxZ0ltQWJvQUFBRUdBSEJzSmdBVEFMQUFSVml3QkM4YnNRUWFQbG13RE53d01RRC8vd0FUQUFBRWNBWDJBaVlCdWdBQUFRY0FvQUNaQUI4QUZBQ3dBRVZZc0FRdkc3RUVHajVac1E0STlEQXhBQUlBRS81UEJIQUVqUUFXQUJrQVp3Q3dBRVZZc0FBdkc3RUFHajVac0FCRldMQVVMeHV4RkJBK1diQUFSVml3QVM4YnNRRVFQbG13QUVWWXNBd3ZHN0VNRWo1WnNnY0RDaXRZSWRnYjlGbXdBUkN3RWRDd0VTK3lGeFFBRVJJNXNCY3ZzaE1CQ2l0WUlkZ2I5Rm15R1FBVUVSSTVNREVCQVNNSEJoVVVNekkzRndZaklpWTFORGNESVFNakFRTWhBd0tZQWRnbU9uRk9NRFFOUmxwWlo3Qm8vZmh1dlFIZmVBR1J4d1NOKzNNdFcxWklHbmtzYUZhVWJBRUsvdWtFamYwaEFmMEEvLzhBWVAvd0JEQUdIQUltQWJ3QUFBRUhBSFVCYVFBZUFCUUFzQUJGV0xBTEx4dXhDeG8rV2JFZkJ2UXdNZi8vQUdELzhBUXdCaDRDSmdHOEFBQUJCZ0NkY3g0QUZBQ3dBRVZZc0Fzdkc3RUxHajVac1NFRTlEQXgvLzhBWVAvd0JEQUY0QUltQWJ3QUFBRUhBS0VCVVFBZUFCUUFzQUJGV0xBTEx4dXhDeG8rV2JFakF2UXdNZi8vQUdELzhBUXdCaDRDSmdHOEFBQUJCd0NlQUlrQUh3QVVBTEFBUlZpd0N5OGJzUXNhUGxteElRYjBNREgvL3dDS0FBQUVId1llQWlZQnZRQUFBUVlBbmpJZkFCUUFzQUJGV0xBQkx4dXhBUm8rV2JFYUJ2UXdNZi8vQUlvQUFBT3VCZFlDSmdHK0FBQUJCZ0J3UHlZQUV3Q3dBRVZZc0FZdkc3RUdHajVac0EzY01ERUEvLzhBaWdBQUE2NEY5Z0ltQWI0QUFBRUdBS0JzSHdBVUFMQUFSVml3Qmk4YnNRWWFQbG14RHdqME1ESC8vd0NLQUFBRHJnWGdBaVlCdmdBQUFRY0FvUUVmQUI0QUZBQ3dBRVZZc0FZdkc3RUdHajVac1JNQzlEQXhBQUVBaXY1UEE2NEVqUUFiQUhnQXNBQkZXTEFXTHh1eEZobytXYkFBUlZpd0ZDOGJzUlFRUGxtd0FFVllzQTh2RzdFUEVqNVpzQlFRc0J2UXNCc3ZzaDhiQVYyeTN4c0JYYklBQVFvcldDSFlHL1Jac0JRUXNnSUJDaXRZSWRnYjlGbXdGQkN3QmRDd0R4Q3lDZ01LSzFnaDJCdjBXYkFXRUxJWkFRb3JXQ0hZRy9SWk1ERUJJUkVoRlNNSEJoVVVNekkzRndZaklpWTFORGNoRVNFVklSRWhBMWY5N0FKclBUcHhUakEwRFVaYVdXZWIvY29ESHYyYkFoUUNEdjZKbHkxYlZrZ2FlU3hvVm9wcEJJMlovcklBLy84QWlnQUFBNjRHSGdJbUFiNEFBQUVHQUo1WEh3QVVBTEFBUlZpd0JpOGJzUVlhUGxteEVRYjBNREgvL3dCai8vQUVOUVllQWlZQndBQUFBUVlBblhFZUFCUUFzQUJGV0xBS0x4dXhDaG8rV2JFZ0JQUXdNZi8vQUdQLzhBUTFCZllDSmdIQUFBQUJCd0NnQUp3QUh3QVVBTEFBUlZpd0NpOGJzUW9hUGxteElBajBNREgvL3dCai8vQUVOUVhnQWlZQndBQUFBUWNBb1FGUEFCNEFGQUN3QUVWWXNBb3ZHN0VLR2o1WnNTVUM5REF4Ly84QVkvMzhCRFVFblFJbUFjQUFBQUFIQWFJQlQvNmQvLzhBaWdBQUJGZ0dIZ0ltQWNFQUFBRUhBSjBBa0FBZUFCUUFzQUJGV0xBSEx4dXhCeG8rV2JFUUJQUXdNZi8vLzVVQUFBSllCZ29DSmdIQ0FBQUJCd0NrL3hvQUlnQVVBTEFBUlZpd0F5OGJzUU1hUGxteEJ3TDBNREgvLy8rVUFBQUNYZ1hXQWlZQndnQUFBUWNBY1A4Y0FDWUFFd0N3QUVWWXNBSXZHN0VDR2o1WnNBWGNNREVBLy8vL3lnQUFBaUVGOWdJbUFjSUFBQUVIQUtEL1NRQWZBQlFBc0FCRldMQUNMeHV4QWhvK1diRUhDUFF3TWYvL0FBYitUd0ZtQkkwQ0pnSENBQUFBQmdDajFBRC8vd0NKQUFBQlpBWGdBaVlCd2dBQUFRWUFvZndlQUJRQXNBQkZXTEFDTHh1eEFobytXYkVMQXZRd01mLy9BQ3YvOEFRTkJoNENKZ0hEQUFBQkJ3Q2RBUWNBSGdBVUFMQUFSVml3QUM4YnNRQWFQbG14RkFUME1ESC8vd0NLL2Z3RVZ3U05BaVlCeEFBQUFBY0JvZ0VVL3AzLy93Q0NBQUFEaXdZY0FpWUJ4UUFBQVFZQWRRY2VBQlFBc0FCRldMQUZMeHV4QlJvK1diRUlCdlF3TWYvL0FJcjkvQU9MQkkwQ0pnSEZBQUFBQndHaUFSRCtuZi8vQUlvQUFBT0xCSTRDSmdIRkFBQUJCd0dpQVg0RG53QVFBTEFBUlZpd0NpOGJzUW9hUGxrd01mLy9BSW9BQUFPTEJJMENKZ0hGQUFBQUJ3Q2hBV2I5Ti8vL0FJb0FBQVJZQmh3Q0pnSEhBQUFCQndCMUFZOEFIZ0FVQUxBQVJWaXdDQzhic1FnYVBsbXhEQWIwTURILy93Q0svZndFV0FTTkFpWUJ4d0FBQUFjQm9nRnMvcDMvL3dDS0FBQUVXQVllQWlZQnh3QUFBUWNBbmdDdkFCOEFGQUN3QUVWWXNBWXZHN0VHR2o1WnNROEc5REF4Ly84QVlQL3dCRm9GMWdJbUFjZ0FBQUVIQUhBQWhRQW1BQk1Bc0FCRldMQUtMeHV4Q2hvK1diQWQzREF4QVAvL0FHRC84QVJhQmZZQ0pnSElBQUFCQndDZ0FMSUFId0FVQUxBQVJWaXdDaThic1FvYVBsbXhId2owTURILy93QmcvL0FFV2dZZEFpWUJ5QUFBQVFjQXBRRUhBQjRBRndDd0FFVllzQW92RzdFS0dqNVpzUjRHOUxBaTBEQXhBUC8vQUlvQUFBUWxCaHdDSmdITEFBQUJCd0IxQVNjQUhnQVVBTEFBUlZpd0JTOGJzUVVhUGxteEdRYjBNREgvL3dDSy9md0VKUVNOQWlZQnl3QUFBQWNCb2dFTi9wMy8vd0NLQUFBRUpRWWVBaVlCeXdBQUFRWUFua2NmQUJRQXNBQkZXTEFFTHh1eEJCbytXYkVjQnZRd01mLy9BRVAvOEFQZEJod0NKZ0hNQUFBQkJ3QjFBVDRBSGdBVUFMQUFSVml3Q1M4YnNRa2FQbG14S0FiME1ESC8vd0JELy9BRDNRWWVBaVlCekFBQUFRWUFuVWdlQUJRQXNBQkZXTEFKTHh1eENSbytXYkVxQlBRd01mLy9BRVArVFFQZEJKMENKZ0hNQUFBQUJ3QjVBVk1BQVAvL0FFUC84QVBkQmg0Q0pnSE1BQUFCQmdDZVhoOEFGQUN3QUVWWXNBa3ZHN0VKR2o1WnNTb0c5REF4Ly84QUtQMzhBLzBFalFJbUFjMEFBQUFIQWFJQkZQNmQvLzhBS0FBQUEvMEdIZ0ltQWMwQUFBRUdBSjVSSHdBVUFMQUFSVml3Qmk4YnNRWWFQbG14RFFiME1ESC8vd0FvL2s4RC9RU05BaVlCelFBQUFBY0FlUUUrQUFMLy93QjAvL0FFQ2dZS0FpWUJ6Z0FBQVFZQXBHUWlBQlFBc0FCRldMQVJMeHV4RVJvK1diRVZBdlF3TWYvL0FIVC84QVFLQmRZQ0pnSE9BQUFCQmdCd1ppWUFFd0N3QUVWWXNBa3ZHN0VKR2o1WnNCUGNNREVBLy84QWRQL3dCQW9GOWdJbUFjNEFBQUVIQUtBQWt3QWZBQlFBc0FCRldMQUpMeHV4Q1JvK1diRVZDUFF3TWYvL0FIVC84QVFLQm5rQ0pnSE9BQUFCQndDaUFPOEFLUUFYQUxBQVJWaXdDUzhic1FrYVBsbXhGUWIwc0IvUU1ERUEvLzhBZFAvd0JCUUdIUUltQWM0QUFBRUhBS1VBNkFBZUFCY0FzQUJGV0xBUkx4dXhFUm8rV2JFVUJ2U3dHTkF3TVFBQUFRQjAvblFFQ2dTTkFDQUFVd0N3QUVWWXNCZ3ZHN0VZR2o1WnNBQkZXTEFPTHh1eERoSStXYkFBUlZpd0V5OGJzUk1RUGxtd0dCQ3dJTkN5QlJNZ0VSSTVzQTRRc2drRENpdFlJZGdiOUZtd0V4Q3lIQUVLSzFnaDJCdjBXVEF4QVJFVUJnY0hCaFVVTXpJM0Z3WWpJaVkxTkRjaUppY1JNeEVVRmpNeU5qVVJCQXA0YnpKc1RqQTBEVVphV1dkYXpma0V0NCtGZzQ4RWpmenplcm93S0Z0U1NCcDVMR2hXYUZiT3VBTVgvUFI1Z1g5N0F3d0EvLzhBTVFBQUJmRUdIZ0ltQWRBQUFBRUhBSjBCT3dBZUFCUUFzQUJGV0xBREx4dXhBeG8rV2JFWEJQUXdNZi8vQUEwQUFBUWNCaDRDSmdIU0FBQUJCZ0NkUFI0QUZBQ3dBRVZZc0Fndkc3RUlHajVac1EwRTlEQXgvLzhBRFFBQUJCd0Y0d0ltQWRJQUFBRUdBR3B0SGdBWEFMQUFSVml3Q0M4YnNRZ2FQbG14RUFMMHNCblFNREVBLy84QVJ3QUFBK0FHSEFJbUFkTUFBQUVIQUhVQk13QWVBQlFBc0FCRldMQUlMeHV4Q0JvK1diRU1CdlF3TWYvL0FFY0FBQVBnQmVBQ0pnSFRBQUFCQndDaEFSc0FIZ0FVQUxBQVJWaXdCeThic1FjYVBsbXhFUUwwTURILy93QkhBQUFENEFZZUFpWUIwd0FBQVFZQW5sTWZBQlFBc0FCRldMQUhMeHV4QnhvK1diRVBCdlF3TWYvL0FCd0FBQVVkQmo4Q0pnQWxBQUFBQmdDdEJBRC8vLy93QUFBRXFnWS9BQ1lBS1dRQUFBY0FyZjg1QUFELy8vLytBQUFGYkFaQkFDWUFMR1FBQUFjQXJmOUhBQUwvL3dBRUFBQUIyd1pBQUNZQUxXUUFBQWNBcmY5TkFBSC8vLy82Lyt3RkhRWS9BQ1lBTXhRQUFBY0FyZjlEQUFELy8vOTRBQUFGSHdZL0FDWUFQV1FBQUFjQXJmN0JBQUQvLy8vOUFBQUUzd1kvQUNZQXVSUUFBQWNBcmY5R0FBRC8vLytiLy9RQ3JRWjBBaVlBd2dBQUFRY0FydjhxLyt3QUhRQ3dBRVZZc0F3dkc3RU1HRDVac1JnQjlMQVAwTEFZRUxBaDBEQXhBUC8vQUJ3QUFBVWRCYkFDQmdBbEFBRC8vd0NwQUFBRWlBV3dBZ1lBSmdBQS8vOEFxUUFBQkVZRnNBSUdBQ2tBQVAvL0FGWUFBQVI2QmJBQ0JnQStBQUQvL3dDcEFBQUZDQVd3QWdZQUxBQUEvLzhBdHdBQUFYY0ZzQUlHQUMwQUFQLy9BS2tBQUFVRkJiQUNCZ0F2QUFELy93Q3BBQUFHVWdXd0FnWUFNUUFBLy84QXFRQUFCUWdGc0FJR0FESUFBUC8vQUhiLzdBVUpCY1FDQmdBekFBRC8vd0NwQUFBRXdBV3dBZ1lBTkFBQS8vOEFNUUFBQkpjRnNBSUdBRGdBQVAvL0FBOEFBQVM3QmJBQ0JnQTlBQUQvL3dBNUFBQUV6Z1d3QWdZQVBBQUEvLy8vMWdBQUFsOEhCd0ltQUMwQUFBRUhBR3IvY0FGQ0FCY0FzQUJGV0xBQ0x4dXhBaHcrV2JFTEJQU3dGTkF3TVFELy93QVBBQUFFdXdiN0FpWUFQUUFBQVFjQWFnRENBVFlBRndDd0FFVllzQWd2RzdFSUhENVpzUkFFOUxBWjBEQXhBUC8vQUdULzZ3UjNCam9DSmdDNkFBQUJCd0N0QVhYLyt3QVVBTEFBUlZpd0V5OGJzUk1ZUGxteEpBSDBNREgvL3dCai8rd0Q3QVk1QWlZQXZnQUFBUWNBclFFci8vb0FGQUN3QUVWWXNCVXZHN0VWR0Q1WnNTZ0I5REF4Ly84QWtmNWhBL0FHT2dJbUFNQUFBQUVIQUswQlJ2LzdBQlFBc0FCRldMQURMeHV4QXhnK1diRVZBZlF3TWYvL0FNUC85QUpMQmlVQ0pnRENBQUFCQmdDdEt1WUFGQUN3QUVWWXNBd3ZHN0VNR0Q1WnNROEI5REF4Ly84QWovL3NBL1lHZEFJbUFNb0FBQUVHQUs0aDdBQWRBTEFBUlZpd0FDOGJzUUFZUGxteEhRSDBzQlhRc0IwUXNDZlFNREVBLy84QW1nQUFCRDhFT2dJR0FJMEFBUC8vQUZ2LzdBUTBCRTRDQmdCVEFBRC8vd0NhL21BRDdnUTZBZ1lBZGdBQS8vOEFJUUFBQTdvRU9nSUdBRm9BQVAvL0FDa0FBQVBLQkRvQ0JnQmNBQUQvLy8vbS8vUUNid1d4QWlZQXdnQUFBUVlBYW9Ec0FCY0FzQUJGV0xBTUx4dXhEQmcrV2JFVUFmU3dIZEF3TVFELy93Q1AvK3dEOWdXeEFpWUF5Z0FBQVFZQWFuZnNBQmNBc0FCRldMQUFMeHV4QUJnK1diRWFBZlN3STlBd01RRC8vd0JiLyt3RU5BWTZBaVlBVXdBQUFRY0FyUUZELy9zQUZBQ3dBRVZZc0FRdkc3RUVHRDVac1I0QjlEQXgvLzhBai8vc0EvWUdKUUltQU1vQUFBRUhBSzBCSXYvbUFCUUFzQUJGV0xBQUx4dXhBQmcrV2JFVkFmUXdNZi8vQUhyLzdBWVpCaUlDSmdETkFBQUJCd0N0QWxQLzR3QVVBTEFBUlZpd0FDOGJzUUFZUGxteEpnSDBNREgvL3dDcEFBQUVSZ2NIQWlZQUtRQUFBUWNBYWdERUFVSUFGd0N3QUVWWXNBWXZHN0VHSEQ1WnNSTUU5TEFjMERBeEFQLy9BTEVBQUFRd0IwQUNKZ0N3QUFBQkJ3QjFBWkFCUWdBVUFMQUFSVml3QkM4YnNRUWNQbG14Q0FqME1ERUFBUUJRLyt3RWNnWEVBQ1lBWWJJQUp5Z1JFamtBc0FCRldMQUdMeHV4Qmh3K1diQUFSVml3R2k4YnNSb1FQbG13QmhDd0M5Q3dCaEN5RGdFS0sxZ2gyQnYwV2JJbUdnWVJFam13SmhDeUZBRUtLMWdoMkJ2MFdiQWFFTEFmMExBYUVMSWlBUW9yV0NIWUcvUlpNREVCSmlZMU5DUXpNaFlXRlNNMEppTWlCaFVVRmdRV0ZoVVVCQ01pSkNZMU14UVdNekkyTkNZQ1Z2ZmhBUlBjbHV1QndhaVpqcCtYQVd2TlkvN3M1NWIrL0kzQnc2T1lvcFlDaVVmUG1LemhkTXg1aEpkOWIxbDdabnVrYjdIVmM4aC9oSmw4MW5VQS8vOEF0d0FBQVhjRnNBSUdBQzBBQVAvLy85WUFBQUpmQndjQ0pnQXRBQUFCQndCcS8zQUJRZ0FYQUxBQVJWaXdBaThic1FJY1BsbXhDd1Qwc0JUUU1ERUEvLzhBTmYvc0E4d0ZzQUlHQUM0QUFQLy9BTElBQUFVZEJiQUNCZ0hqQUFELy93Q3BBQUFGQlFjdUFpWUFMd0FBQVFjQWRRRjdBVEFBRkFDd0FFVllzQVV2RzdFRkhENVpzUTRJOURBeC8vOEFUZi9yQk1zSEdnSW1BTjBBQUFFSEFLQUEyZ0ZEQUJNQXNBQkZXTEFSTHh1eEVSdytXYkFWM0RBeEFQLy9BQndBQUFVZEJiQUNCZ0FsQUFELy93Q3BBQUFFaUFXd0FnWUFKZ0FBLy84QXNRQUFCREFGc0FJR0FMQUFBUC8vQUtrQUFBUkdCYkFDQmdBcEFBRC8vd0N4QUFBRS93Y2FBaVlBMndBQUFRY0FvQUV4QVVNQUV3Q3dBRVZZc0Fndkc3RUlIRDVac0EzY01ERUEvLzhBcVFBQUJsSUZzQUlHQURFQUFQLy9BS2tBQUFVSUJiQUNCZ0FzQUFELy93QjIvK3dGQ1FYRUFnWUFNd0FBLy84QXNnQUFCUUVGc0FJR0FMVUFBUC8vQUtrQUFBVEFCYkFDQmdBMEFBRC8vd0IzLyt3RTJBWEVBZ1lBSndBQS8vOEFNUUFBQkpjRnNBSUdBRGdBQVAvL0FEa0FBQVRPQmJBQ0JnQThBQUQvL3dCdC8rd0Q2Z1JPQWdZQVJRQUEvLzhBWGYvc0EvTUVUZ0lHQUVrQUFQLy9BSndBQUFRQkJjUUNKZ0R2QUFBQkJ3Q2dBS0wvN1FBVEFMQUFSVml3Q0M4YnNRZ1lQbG13RGR3d01RRC8vd0JiLyt3RU5BUk9BZ1lBVXdBQS8vOEFqUDVnQkI0RVRnSUdBRlFBQUFBQkFGei83QVBzQkU0QUhRQkpzaEFlSHhFU09RQ3dBRVZZc0JBdkc3RVFHRDVac0FCRldMQUlMeHV4Q0JBK1diSUFBUW9yV0NIWUcvUlpzQWdRc0FQUXNCQVFzQlRRc0JBUXNoY0JDaXRZSWRnYjlGa3dNU1V5TmpjekRnSWpJZ0FSTlRRMk5qTXlGaGNqSmlZaklnWVZGUlFXQWo1amxBaXZCWGJGYnQzKyszVFpsTGJ4Q0s4SWoybU5tNXFEZUZwZHFHUUJKd0VBSDU3MmlOcXVhWWZMd0NPN3lnRC8vd0FXL2tzRHNBUTZBZ1lBWFFBQS8vOEFLUUFBQThvRU9nSUdBRndBQVAvL0FGMy83QVB6QmNVQ0pnQkpBQUFCQndCcUFJNEFBQUFYQUxBQVJWaXdDQzhic1FnWVBsbXhKUUgwc0M3UU1ERUEvLzhBbWdBQUEwY0Y2Z0ltQU9zQUFBRUhBSFVBemYvc0FCUUFzQUJGV0xBRUx4dXhCQmcrV2JFSUNmUXdNZi8vQUYvLzdBTzdCRTRDQmdCWEFBRC8vd0NOQUFBQmFBWEVBZ1lBVFFBQS8vLy92QUFBQWtVRnhBSW1BSXdBQUFFSEFHci9Wdi8vQUJjQXNBQkZXTEFDTHh1eEFoZytXYkVMQWZTd0ZOQXdNUUQvLy8rLy9rc0JXUVhFQWdZQVRnQUEvLzhBbkFBQUJEOEY2UUltQVBBQUFBRUhBSFVCTy8vckFCUUFzQUJGV0xBRUx4dXhCQmcrV2JFUENmUXdNZi8vQUJiK1N3T3dCZGdDSmdCZEFBQUJCZ0NnVUFFQUV3Q3dBRVZZc0E4dkc3RVBHRDVac0JQY01ERUEvLzhBUFFBQUJ1MEhOQUltQURzQUFBRUhBRVFDTEFFMkFCUUFzQUJGV0xBREx4dXhBeHcrV2JFVUNQUXdNZi8vQUNzQUFBWFRCZjRDSmdCYkFBQUJCd0JFQVlzQUFBQVVBTEFBUlZpd0N5OGJzUXNZUGxteERnbjBNREgvL3dBOUFBQUc3UWMwQWlZQU93QUFBUWNBZFFLN0FUWUFGQUN3QUVWWXNBUXZHN0VFSEQ1WnNSVUk5REF4Ly84QUt3QUFCZE1GL2dJbUFGc0FBQUVIQUhVQ0dnQUFBQlFBc0FCRldMQU1MeHV4REJnK1diRVBDZlF3TWYvL0FEMEFBQWJ0QnZzQ0pnQTdBQUFCQndCcUFmVUJOZ0FYQUxBQVJWaXdBeThic1FNY1BsbXhHZ1Qwc0NQUU1ERUEvLzhBS3dBQUJkTUZ4UUltQUZzQUFBRUhBR29CVkFBQUFCY0FzQUJGV0xBTEx4dXhDeGcrV2JFVUFmU3dIZEF3TVFELy93QVBBQUFFdXdjMEFpWUFQUUFBQVFjQVJBRDVBVFlBRkFDd0FFVllzQWd2RzdFSUhENVpzUW9JOURBeC8vOEFGdjVMQTdBRi9nSW1BRjBBQUFFSEFFUUFqQUFBQUJRQXNBQkZXTEFQTHh1eER4ZytXYkVSQ2ZRd01mLy9BR2NFSVFEOUJnQUNCZ0FMQUFELy93Q0lCQklDSXdZQUFnWUFCZ0FBLy84QW9QLzFBNG9Gc0FBbUFBVUFBQUFIQUFVQ0R3QUEvLy8vdFA1TEFqOEYyQUltQUpzQUFBRUhBSjcvU2YvWkFCUUFzQUJGV0xBTkx4dXhEUmcrV2JFVEFmUXdNZi8vQURBRUZnRkhCZ0FDQmdGdEFBRC8vd0NwQUFBR1VnYzBBaVlBTVFBQUFRY0FkUUtaQVRZQUZBQ3dBRVZZc0FJdkc3RUNIRDVac1JFSTlEQXgvLzhBaXdBQUJuZ0YvZ0ltQUZFQUFBRUhBSFVDclFBQUFCUUFzQUJGV0xBREx4dXhBeGcrV2JFZ0NmUXdNZi8vQUJ6K2F3VWRCYkFDSmdBbEFBQUFCd0NtQVg4QUFQLy9BRzMrYXdQcUJFNENKZ0JGQUFBQUJ3Q21BTWNBQVAvL0FLa0FBQVJHQjBBQ0pnQXBBQUFCQndCRUFQc0JRZ0FVQUxBQVJWaXdCaThic1FZY1BsbXhEUWowTURILy93Q3hBQUFFL3dkQUFpWUEyd0FBQVFjQVJBRnRBVUlBRkFDd0FFVllzQWd2RzdFSUhENVpzUXNJOURBeC8vOEFYZi9zQS9NRi9nSW1BRWtBQUFFSEFFUUF4UUFBQUJRQXNBQkZXTEFJTHh1eENCZytXYkVmQ2ZRd01mLy9BSndBQUFRQkJlb0NKZ0R2QUFBQkJ3QkVBTjcvN0FBVUFMQUFSVml3Q0M4YnNRZ1lQbG14Q3duME1ESC8vd0JhQUFBRklRV3dBZ1lBdUFBQS8vOEFYLzRvQlVNRU9nSUdBTXdBQVAvL0FCWUFBQVRkQnVnQ0pnRVlBQUFCQndDckJEa0ErZ0FYQUxBQVJWaXdEeThic1E4Y1BsbXhFUWowc0JYUU1ERUEvLy8vK3dBQUJBc0Z3UUltQVJrQUFBRUhBS3NEMVAvVEFCY0FzQUJGV0xBUkx4dXhFUmcrV2JFVENmU3dGOUF3TVFELy93QmIva3NJUUFST0FDWUFVd0FBQUFjQVhRU1FBQUQvL3dCMi9rc0pNQVhFQUNZQU13QUFBQWNBWFFXQUFBRC8vd0JRL2xFRWFnWEVBaVlBMmdBQUFBY0JzQUdjLzdqLy93QlkvbElEckFSTkFpWUE3Z0FBQUFjQnNBRkQvN24vL3dCMy9sRUUyQVhFQWlZQUp3QUFBQWNCc0FIbC83ai8vd0JjL2xFRDdBUk9BaVlBUndBQUFBY0JzQUZTLzdqLy93QVBBQUFFdXdXd0FnWUFQUUFBLy84QUx2NWdBOThFT2dJR0FMd0FBUC8vQUxjQUFBRjNCYkFDQmdBdEFBRC8vd0FiQUFBSE5RY2FBaVlBMlFBQUFRY0FvQUg0QVVNQUV3Q3dBRVZZc0Ewdkc3RU5IRDVac0JuY01ERUEvLzhBRlFBQUJnUUZ4QUltQU8wQUFBRUhBS0FCWC8vdEFCTUFzQUJGV0xBTkx4dXhEUmcrV2JBWjNEQXhBUC8vQUxjQUFBRjNCYkFDQmdBdEFBRC8vd0FjQUFBRkhRY09BaVlBSlFBQUFRY0FvQUQwQVRjQUV3Q3dBRVZZc0FRdkc3RUVIRDVac0E3Y01ERUEvLzhBYmYvc0Erb0YyQUltQUVVQUFBRUhBS0FBbVFBQkFCTUFzQUJGV0xBWEx4dXhGeGcrV2JBczNEQXhBUC8vQUJ3QUFBVWRCdnNDSmdBbEFBQUJCd0JxQVBrQk5nQVVBTEFBUlZpd0JDOGJzUVFjUGxteEVnVDBNREgvL3dCdC8rd0Q2Z1hGQWlZQVJRQUFBUWNBYWdDZUFBQUFGd0N3QUVWWXNCY3ZHN0VYR0Q1WnNUQUI5TEE1MERBeEFQLy8vL0lBQUFkWEJiQUNCZ0NCQUFELy93Qk8vK3dHZkFST0FnWUFoZ0FBLy84QXFRQUFCRVlIR2dJbUFDa0FBQUVIQUtBQXZ3RkRBQk1Bc0FCRldMQUdMeHV4Qmh3K1diQVAzREF4QVAvL0FGMy83QVB6QmRnQ0pnQkpBQUFCQndDZ0FJa0FBUUFUQUxBQVJWaXdDQzhic1FnWVBsbXdJZHd3TVFELy93QmQvK3dGRWdiWkFpWUJSUUFBQVFjQWFnRFRBUlFBRndDd0FFVllzQUF2RzdFQUhENVpzU2NFOUxBdzBEQXhBUC8vQUdMLzdBUHBCRThDQmdDY0FBRC8vd0JpLyt3RDZRWEdBaVlBbkFBQUFRY0FhZ0NIQUFFQUZ3Q3dBRVZZc0FBdkc3RUFHRDVac1NRQjlMQXQwREF4QVAvL0FCc0FBQWMxQndjQ0pnRFpBQUFCQndCcUFmMEJRZ0FYQUxBQVJWaXdEUzhic1EwY1BsbXhIUVQwc0NiUU1ERUEvLzhBRlFBQUJnUUZzUUltQU8wQUFBRUhBR29CWlAvc0FCY0FzQUJGV0xBTkx4dXhEUmcrV2JFZEFmU3dKdEF3TVFELy93QlEvK3dFYWdjY0FpWUEyZ0FBQVFjQWFnQzNBVmNBRndDd0FFVllzQXN2RzdFTEhENVpzVEFFOUxBNTBEQXhBUC8vQUZqLzdRT3NCY1VDSmdEdUFBQUJCZ0JxWGdBQUZ3Q3dBRVZZc0Fvdkc3RUtHRDVac1M0QjlMQTMwREF4QVAvL0FMRUFBQVQvQnZvQ0pnRGJBQUFCQndCd0FRUUJTZ0FUQUxBQVJWaXdDQzhic1FnY1BsbXdDOXd3TVFELy93Q2NBQUFFQVFXa0FpWUE3d0FBQVFZQWNIWDBBQk1Bc0FCRldMQUhMeHV4QnhnK1diQUwzREF4QVAvL0FMRUFBQVQvQndjQ0pnRGJBQUFCQndCcUFUWUJRZ0FYQUxBQVJWaXdDQzhic1FnY1BsbXhFUVQwc0JyUU1ERUEvLzhBbkFBQUJBRUZzUUltQU84QUFBRUhBR29BcC8vc0FCY0FzQUJGV0xBSUx4dXhDQmcrV2JFUkFmU3dHdEF3TVFELy93QjIvK3dGQ1FiOUFpWUFNd0FBQVFjQWFnRWJBVGdBRndDd0FFVllzQTB2RzdFTkhENVpzU2NFOUxBdzBEQXhBUC8vQUZ2LzdBUTBCY1VDSmdCVEFBQUJCd0JxQUpnQUFBQVhBTEFBUlZpd0JDOGJzUVFZUGxteEl3SDBzQ3pRTURFQS8vOEFaLy9zQlBvRnhBSUdBUllBQVAvL0FGdi83QVEwQkU0Q0JnRVhBQUQvL3dCbi8rd0UrZ2NDQWlZQkZnQUFBUWNBYWdFT0FUMEFGd0N3QUVWWXNBMHZHN0VOSEQ1WnNTY0U5TEF3MERBeEFQLy9BRnYvN0FRMEJjY0NKZ0VYQUFBQkJ3QnFBSWdBQWdBWEFMQUFSVml3QkM4YnNRUVlQbG14SkFIMHNDM1FNREVBLy84QWsvL3NCUFFISFFJbUFPWUFBQUVIQUdvQkRRRllBQmNBc0FCRldMQVRMeHV4RXh3K1diRW5CUFN3TU5Bd01RRC8vd0JrLyt3RDRBWEZBaVlBL2dBQUFRWUFhbndBQUJjQXNBQkZXTEFJTHh1eENCZytXYkVuQWZTd01OQXdNUUQvL3dCTi8rc0V5d2I2QWlZQTNRQUFBUWNBY0FDdEFVb0FFd0N3QUVWWXNCRXZHN0VSSEQ1WnNCUGNNREVBLy84QUZ2NUxBN0FGdUFJbUFGMEFBQUVHQUhBakNBQVRBTEFBUlZpd0RpOGJzUTRZUGxtd0Vkd3dNUUQvL3dCTi8rc0V5d2NIQWlZQTNRQUFBUWNBYWdEZkFVSUFGd0N3QUVWWXNCRXZHN0VSSEQ1WnNSa0U5TEFpMERBeEFQLy9BQmIrU3dPd0JjVUNKZ0JkQUFBQkJnQnFWUUFBRndDd0FFVllzQTh2RzdFUEdENVpzUmNCOUxBZzBEQXhBUC8vQUUzLzZ3VExCMEVDSmdEZEFBQUJCd0NsQVM4QlFnQVhBTEFBUlZpd0FTOGJzUUVjUGxteEZBajBzQmpRTURFQS8vOEFGdjVMQTlFRi93SW1BRjBBQUFFSEFLVUFwUUFBQUJjQXNBQkZXTEFQTHh1eER4ZytXYkVXQ2ZTd0V0QXdNUUQvL3dDV0FBQUV5QWNIQWlZQTRBQUFBUWNBYWdFSkFVSUFGd0N3QUVWWXNBc3ZHN0VMSEQ1WnNSb0U5TEFqMERBeEFQLy9BR2NBQUFPOUJiRUNKZ0Q0QUFBQkJnQnFaT3dBRndDd0FFVllzQWt2RzdFSkdENVpzUmdCOUxBaDBEQXhBUC8vQUxJQUFBWXdCd2NBSmdEbER3QUFKd0F0QkxrQUFBRUhBR29CMHdGQ0FCY0FzQUJGV0xBS0x4dXhDaHcrV2JFZkJQU3dLTkF3TVFELy93Q2RBQUFGZndXeEFDWUEvUUFBQUNjQWpBUXFBQUFCQndCcUFXMy83QUFYQUxBQVJWaXdDaThic1FvWVBsbXhId0gwc0NqUU1ERUEvLzhBT2Y1TEJRNEZzQUltQUR3QUFBQUhBYThEcHdBQS8vOEFLZjVMQkJ3RU9nSW1BRndBQUFBSEFhOEN0UUFBLy84QVgvL3NBL0FHQUFJR0FFZ0FBUC8vQUMvK1N3V3NCYkFDSmdEY0FBQUFCd0d2QkVVQUFQLy9BQ3orU3dTN0JEb0NKZ0R4QUFBQUJ3R3ZBMVFBQVAvL0FCeitvZ1VkQmJBQ0pnQWxBQUFBQndDc0JRSUFBUC8vQUczK29nUHFCRTRDSmdCRkFBQUFCd0NzQkVvQUFQLy9BQndBQUFVZEI3b0NKZ0FsQUFBQkJ3Q3FCTzRCUmdBVUFMQUFSVml3QkM4YnNRUWNQbG14Q3dqME1ESC8vd0J0Lyt3RDZnYUVBaVlBUlFBQUFRY0FxZ1NUQUJBQUZBQ3dBRVZZc0Jjdkc3RVhHRDVac1NrQjlEQXgvLzhBSEFBQUJSMEh3d0ltQUNVQUFBRUhBYmNBd3dFdUFCY0FzQUJGV0xBRkx4dXhCUncrV2JFT0RQU3dGTkF3TVFELy93QnQvK3dFd0FhT0FpWUFSUUFBQVFZQnQyajVBQmNBc0FCRldMQVhMeHV4RnhnK1diRXNDUFN3TXRBd01RRC8vd0FjQUFBRkhRZS9BaVlBSlFBQUFRY0J0Z0RIQVQwQUZ3Q3dBRVZZc0FRdkc3RUVIRDVac1E0TTlMQVQwREF4QVAvLy84ci83QVBxQm9rQ0pnQkZBQUFCQmdHMmJBY0FGd0N3QUVWWXNCY3ZHN0VYR0Q1WnNTd0k5TEF4MERBeEFQLy9BQndBQUFVZEIrb0NKZ0FsQUFBQkJ3RzFBTWdCR3dBWEFMQUFSVml3QlM4YnNRVWNQbG14REF6MHNDRFFNREVBLy84QWJmL3NCRmtHdFFJbUFFVUFBQUVHQWJWdDVnQVhBTEFBUlZpd0Z5OGJzUmNZUGxteEtnajBzRERRTURFQS8vOEFIQUFBQlIwSDJnSW1BQ1VBQUFFSEFiUUF4d0VHQUJjQXNBQkZXTEFGTHh1eEJSdytXYkVNRFBTd0ZkQXdNUUQvL3dCdC8rd0Q2Z2FsQWlZQVJRQUFBUVlCdEd6UkFCY0FzQUJGV0xBWEx4dXhGeGcrV2JFcUNQU3dNOUF3TVFELy93QWMvcUlGSFFjMkFpWUFKUUFBQUNjQW5RREpBVFlCQndDc0JRSUFBQUFVQUxBQVJWaXdCQzhic1FRY1BsbXhEd2IwTURILy93QnQvcUlENmdZQUFpWUFSUUFBQUNZQW5XNEFBUWNBckFSS0FBQUFGQUN3QUVWWXNCY3ZHN0VYR0Q1WnNTMEI5REF4Ly84QUhBQUFCUjBIdHdJbUFDVUFBQUVIQWJNQTZnRXRBQmNBc0FCRldMQUVMeHV4QkJ3K1diRU9CL1N3RzlBd01RRC8vd0J0Lyt3RDZnYUNBaVlBUlFBQUFRY0Jzd0NQLy9nQUZ3Q3dBRVZZc0Jjdkc3RVhHRDVac1N3RTlMQTUwREF4QVAvL0FCd0FBQVVkQjdjQ0pnQWxBQUFCQndHNEFPb0JMUUFYQUxBQVJWaXdCQzhic1FRY1BsbXhEZ2Ywc0J6UU1ERUEvLzhBYmYvc0Erb0dnZ0ltQUVVQUFBRUhBYmdBai8vNEFCY0FzQUJGV0xBWEx4dXhGeGcrV2JFc0JQU3dPdEF3TVFELy93QWNBQUFGSFFoQUFpWUFKUUFBQVFjQnNnRHVBVDBBRndDd0FFVllzQVF2RzdFRUhENVpzUTRIOUxBbjBEQXhBUC8vQUczLzdBUHFCd29DSmdCRkFBQUJCd0d5QUpNQUJ3QVhBTEFBUlZpd0Z5OGJzUmNZUGxteExBVDBzRVhRTURFQS8vOEFIQUFBQlIwSUZRSW1BQ1VBQUFFSEFiRUE3Z0ZGQUJjQXNBQkZXTEFFTHh1eEJCdytXYkVPQi9Td0hOQXdNUUQvL3dCdC8rd0Q2Z2JmQWlZQVJRQUFBUWNCc1FDVEFBOEFGd0N3QUVWWXNCY3ZHN0VYR0Q1WnNTd0U5TEE2MERBeEFQLy9BQnorb2dVZEJ3NENKZ0FsQUFBQUp3Q2dBUFFCTndFSEFLd0ZBZ0FBQUJNQXNBQkZXTEFFTHh1eEJCdytXYkFPM0RBeEFQLy9BRzMrb2dQcUJkZ0NKZ0JGQUFBQUp3Q2dBSmtBQVFFSEFLd0VTZ0FBQUJNQXNBQkZXTEFYTHh1eEZ4ZytXYkFzM0RBeEFQLy9BS24rb2dSR0JiQUNKZ0FwQUFBQUJ3Q3NCTUFBQVAvL0FGMytvZ1B6QkU0Q0pnQkpBQUFBQndDc0JJd0FBUC8vQUtrQUFBUkdCOFlDSmdBcEFBQUJCd0NxQkxrQlVnQVVBTEFBUlZpd0JpOGJzUVljUGxteERBajBNREgvL3dCZC8rd0Q4d2FFQWlZQVNRQUFBUWNBcWdTREFCQUFGQUN3QUVWWXNBZ3ZHN0VJR0Q1WnNSNEI5REF4Ly84QXFRQUFCRVlITGdJbUFDa0FBQUVIQUtRQWtBRkdBQlFBc0FCRldMQUdMeHV4Qmh3K1diRVBCUFF3TWYvL0FGMy83QVB6QmV3Q0pnQkpBQUFCQmdDa1dnUUFGQUN3QUVWWXNBZ3ZHN0VJR0Q1WnNTRUI5REF4Ly84QXFRQUFCT1lIendJbUFDa0FBQUVIQWJjQWpnRTZBQmNBc0FCRldMQUhMeHV4Qnh3K1diRVBEUFN3RmRBd01RRC8vd0JkLyt3RXNBYU9BaVlBU1FBQUFRWUJ0MWo1QUJjQXNBQkZXTEFJTHh1eENCZytXYkVoQ1BTd0o5QXdNUUQvLy8vd0FBQUVSZ2ZMQWlZQUtRQUFBUWNCdGdDU0FVa0FGd0N3QUVWWXNBWXZHN0VHSEQ1WnNROE05TEFVMERBeEFQLy8vN3IvN0FQekJva0NKZ0JKQUFBQkJnRzJYQWNBRndDd0FFVllzQWd2RzdFSUdENVpzU0VJOUxBbTBEQXhBUC8vQUtrQUFBUi9CL1lDSmdBcEFBQUJCd0cxQUpNQkp3QVhBTEFBUlZpd0JpOGJzUVljUGxteER3ejBzQlBRTURFQS8vOEFYZi9zQkVrR3RRSW1BRWtBQUFFR0FiVmQ1Z0FYQUxBQVJWaXdDQzhic1FnWVBsbXhId2owc0NYUU1ERUEvLzhBcVFBQUJFWUg1Z0ltQUNrQUFBRUhBYlFBa2dFU0FCY0FzQUJGV0xBR0x4dXhCaHcrV2JFUERQU3dGdEF3TVFELy93QmQvK3dEOHdhbEFpWUFTUUFBQVFZQnRGelJBQmNBc0FCRldMQUlMeHV4Q0JnK1diRWhDUFN3S05Bd01RRC8vd0NwL3FJRVJnZENBaVlBS1FBQUFDY0FuUUNVQVVJQkJ3Q3NCTUFBQUFBVUFMQUFSVml3Qmk4YnNRWWNQbG14RUFiME1ESC8vd0JkL3FJRDh3WUFBaVlBU1FBQUFDWUFuVjRBQVFjQXJBU01BQUFBRkFDd0FFVllzQWd2RzdFSUdENVpzU0FCOURBeC8vOEF0d0FBQWZnSHhnSW1BQzBBQUFFSEFLb0RaQUZTQUJRQXNBQkZXTEFDTHh1eEFodytXYkVFQ1BRd01mLy9BSnNBQUFIZUJvSUNKZ0NNQUFBQkJ3Q3FBMG9BRGdBVUFMQUFSVml3QWk4YnNRSVlQbG14QkFIME1ESC8vd0NqL3FJQmZnV3dBaVlBTFFBQUFBY0FyQU5yQUFELy93Q0YvcUlCYUFYRUFpWUFUUUFBQUFjQXJBTk5BQUQvL3dCMi9xSUZDUVhFQWlZQU13QUFBQWNBckFVWUFBRC8vd0JiL3FJRU5BUk9BaVlBVXdBQUFBY0FyQVNkQUFELy93QjIvK3dGQ1FlOEFpWUFNd0FBQVFjQXFnVVFBVWdBRkFDd0FFVllzQTB2RzdFTkhENVpzUzRJOURBeC8vOEFXLy9zQkRRR2hBSW1BRk1BQUFFSEFLb0VqUUFRQUJRQXNBQkZXTEFFTHh1eEJCZytXYkVxQWZRd01mLy9BSGIvN0FVOUI4VUNKZ0F6QUFBQkJ3RzNBT1VCTUFBWEFMQUFSVml3RFM4YnNRMGNQbG14SXd6MHNDblFNREVBLy84QVcvL3NCTG9HamdJbUFGTUFBQUVHQWJkaStRQVhBTEFBUlZpd0JDOGJzUVFZUGxteEh3ajBzQ1hRTURFQS8vOEFSLy9zQlFrSHdRSW1BRE1BQUFFSEFiWUE2UUUvQUJjQXNBQkZXTEFOTHh1eERSdytXYkVoRFBTd0tOQXdNUUQvLy8vRS8rd0VOQWFKQWlZQVV3QUFBUVlCdG1ZSEFCY0FzQUJGV0xBRUx4dXhCQmcrV2JFZENQU3dKTkF3TVFELy93QjIvK3dGQ1Fmc0FpWUFNd0FBQVFjQnRRRHFBUjBBRndDd0FFVllzQTB2RzdFTkhENVpzU0VNOUxBbjBEQXhBUC8vQUZ2LzdBUlRCclVDSmdCVEFBQUJCZ0cxWitZQUZ3Q3dBRVZZc0FRdkc3RUVHRDVac1IwSTlMQWowREF4QVAvL0FIYi83QVVKQjl3Q0pnQXpBQUFCQndHMEFPa0JDQUFYQUxBQVJWaXdEUzhic1EwY1BsbXhJUXowc0NyUU1ERUEvLzhBVy8vc0JEUUdwUUltQUZNQUFBRUdBYlJtMFFBWEFMQUFSVml3QkM4YnNRUVlQbG14SFFqMHNDYlFNREVBLy84QWR2NmlCUWtIT0FJbUFETUFBQUFuQUowQTZ3RTRBUWNBckFVWUFBQUFGQUN3QUVWWXNBMHZHN0VOSEQ1WnNTSUc5REF4Ly84QVcvNmlCRFFHQUFJbUFGTUFBQUFtQUoxb0FBRUhBS3dFblFBQUFCUUFzQUJGV0xBRUx4dXhCQmcrV2JFZUFmUXdNZi8vQUdYLzdBV2RCeThDSmdDWEFBQUJCd0IxQWQwQk1RQVVBTEFBUlZpd0RTOGJzUTBjUGxteEtBajBNREgvL3dCYi8rd0V1Z1grQWlZQW1BQUFBUWNBZFFGbEFBQUFGQUN3QUVWWXNBUXZHN0VFR0Q1WnNTWUo5REF4Ly84QVpmL3NCWjBITHdJbUFKY0FBQUVIQUVRQlRnRXhBQlFBc0FCRldMQU5MeHV4RFJ3K1diRW5DUFF3TWYvL0FGdi83QVM2QmY0Q0pnQ1lBQUFCQndCRUFOWUFBQUFVQUxBQVJWaXdCQzhic1FRWVBsbXhKUW4wTURILy93QmwvK3dGblFlMUFpWUFsd0FBQVFjQXFnVU1BVUVBRkFDd0FFVllzQTB2RzdFTkhENVpzVFFJOURBeC8vOEFXLy9zQkxvR2hBSW1BSmdBQUFFSEFLb0VsQUFRQUJRQXNBQkZXTEFFTHh1eEJCZytXYkV5QWZRd01mLy9BR1gvN0FXZEJ4MENKZ0NYQUFBQkJ3Q2tBT01CTlFBVUFMQUFSVml3RFM4YnNRMGNQbG14S1FUME1ESC8vd0JiLyt3RXVnWHNBaVlBbUFBQUFRWUFwR3NFQUJRQXNBQkZXTEFFTHh1eEJCZytXYkVuQWZRd01mLy9BR1grb2dXZEJqY0NKZ0NYQUFBQUJ3Q3NCUWtBQVAvL0FGditvZ1M2QkxBQ0pnQ1lBQUFBQndDc0JKc0FBUC8vQUl6K29nU3FCYkFDSmdBNUFBQUFCd0NzQk80QUFQLy9BSWorb2dQY0JEb0NKZ0JaQUFBQUJ3Q3NCRkVBQVAvL0FJei83QVNxQjdvQ0pnQTVBQUFCQndDcUJPa0JSZ0FVQUxBQVJWaXdDaThic1FvY1BsbXhFd2owTURILy93Q0kvK3dEM0FhRUFpWUFXUUFBQVFjQXFnU0ZBQkFBRkFDd0FFVllzQWN2RzdFSEdENVpzUkVCOURBeC8vOEFqUC9zQmgwSFFBSW1BSmtBQUFFSEFIVUIxQUZDQUJRQXNBQkZXTEFhTHh1eEdodytXYkVkQ1BRd01mLy9BSWovN0FVUEJlb0NKZ0NhQUFBQkJ3QjFBV1AvN0FBVUFMQUFSVml3RXk4YnNSTVlQbG14SEFuME1ESC8vd0NNLyt3R0hRZEFBaVlBbVFBQUFRY0FSQUZGQVVJQUZBQ3dBRVZZc0JJdkc3RVNIRDVac1J3STlEQXgvLzhBaVAvc0JROEY2Z0ltQUpvQUFBRUhBRVFBMVAvc0FCUUFzQUJGV0xBTkx4dXhEUmcrV2JFYkNmUXdNZi8vQUl6LzdBWWRCOFlDSmdDWkFBQUJCd0NxQlFNQlVnQVVBTEFBUlZpd0dpOGJzUm9jUGxteEtRajBNREgvL3dDSS8rd0ZEd1p3QWlZQW1nQUFBUWNBcWdTUy8vd0FGQUN3QUVWWXNCTXZHN0VUR0Q1WnNTZ0I5REF4Ly84QWpQL3NCaDBITGdJbUFKa0FBQUVIQUtRQTJnRkdBQlFBc0FCRldMQVNMeHV4RWh3K1diRWVCUFF3TWYvL0FJai83QVVQQmRnQ0pnQ2FBQUFCQmdDa2FmQUFGQUN3QUVWWXNCTXZHN0VUR0Q1WnNSMEI5REF4Ly84QWpQNmlCaDBHQWdJbUFKa0FBQUFIQUt3RkNRQUEvLzhBaVA2aUJROEVrQUltQUpvQUFBQUhBS3dFVndBQS8vOEFELzZpQkxzRnNBSW1BRDBBQUFBSEFLd0V1d0FBLy84QUZ2NEZBN0FFT2dJbUFGMEFBQUFIQUt3RkhQOWovLzhBRHdBQUJMc0h1Z0ltQUQwQUFBRUhBS29FdHdGR0FCUUFzQUJGV0xBSUx4dXhDQncrV2JFSkNQUXdNZi8vQUJiK1N3T3dCb1FDSmdCZEFBQUJCd0NxQkVvQUVBQVVBTEFBUlZpd0R5OGJzUThZUGxteEVBSDBNREgvL3dBUEFBQUV1d2NpQWlZQVBRQUFBUWNBcEFDT0FUb0FGQUN3QUVWWXNBRXZHN0VCSEQ1WnNRd0U5REF4Ly84QUZ2NUxBN0FGN0FJbUFGMEFBQUVHQUtRaEJBQVVBTEFBUlZpd0FTOGJzUUVZUGxteEV3SDBNREVBQWdCZi8rd0VyQVlBQUJjQUlnQi9BTEFVTDdBQVJWaXdEUzhic1EwWVBsbXdBRVZZc0FNdkc3RURFRDVac0FCRldMQUdMeHV4QmhBK1diSVBGQUZkc2k4VUFWMnlFd01VRVJJNXNCTXZzaEFCQ2l0WUlkZ2I5Rm13QWRDeUJBWU5FUkk1c2c4TkJoRVNPYkFURUxBVzBMQUdFTEliQVFvcldDSFlHL1Jac0EwUXNpQUJDaXRZSWRnYjlGa3dNUUVqRVNNbkJpTWlBalUxTkJJek1oY1JJVFVoTlRNVk13RVVGak15TnhFbUl5SUdCS3k4cWdsdnhyenQ3TCsrYi83NUFRZTV2UHhzbUlhd1VWT3NpSmdFMHZzdWRJZ0JOUGdPK1FFdmdnRUdsNWVYL0tpNDBKNEI4Wm5TQVAvL0FGLyt6UVNzQmdBQUpnQklBQUFBSndIZUFhRUNSd0VIQUVNQW4vOWtBQWdBc2k4ZUFWMHdNZi8vQUxMK21BVkVCYkFDSmdIakFBQUFCd0d3QkNQLy8vLy9BSnorbVFTQkJEb0NKZ0R3QUFBQUJ3R3dBMkFBQVAvL0FLbittUVdwQmJBQ0pnQXNBQUFBQndHd0JJZ0FBUC8vQUp6K21RU2lCRG9DSmdEekFBQUFCd0d3QTRFQUFQLy9BREgrbVFTWEJiQUNKZ0E0QUFBQUJ3R3dBajhBQVAvL0FDaittUU93QkRvQ0pnRDFBQUFBQndHd0FjWUFBUC8vQURuK21RVDRCYkFDSmdBOEFBQUFCd0d3QTljQUFQLy9BQ24rbVFRR0JEb0NKZ0JjQUFBQUJ3R3dBdVVBQVAvL0FKYittUVZtQmJBQ0pnRGdBQUFBQndHd0JFVUFBUC8vQUdmK21RUmVCRHNDSmdENEFBQUFCd0d3QXowQUFQLy9BSmIrbVFUSUJiQUNKZ0RnQUFBQUJ3R3dBdjRBQVAvL0FHZittUU85QkRzQ0pnRDRBQUFBQndHd0FmVUFBUC8vQUxIK21RUXdCYkFDSmdDd0FBQUFCd0d3QU84QUFQLy9BSnIrbVFOSEJEb0NKZ0RyQUFBQUJ3R3dBTlVBQVAvL0FCdittUWVDQmJBQ0pnRFpBQUFBQndHd0JtRUFBUC8vQUJYK21RWTlCRG9DSmdEdEFBQUFCd0d3QlJ3QUFQLy9BRC8rVlFXOUJjTUNKZ0UvQUFBQUJ3R3dBd2IvdlAvLy85NytXUVJqQkU0Q0pnRkFBQUFBQndHd0FnSC93UC8vQUl3QUFBUGZCZ0FDQmdCTUFBQUFBdi9VQUFBRXNRV3dBQklBR3dCaEFMQUFSVml3RHk4YnNROGNQbG13QUVWWXNBb3ZHN0VLRUQ1WnNnSUtEeEVTT2JBQ0w3SU9Ed0lSRWptd0RpK3lDd0VLSzFnaDJCdjBXYkFCMExBT0VMQVIwTEFDRUxJVEFRb3JXQ0hZRy9SWnNBb1FzaFFCQ2l0WUlkZ2I5Rmt3TVFFakZTRVdCQlVVQkFjaEVTTTFNelV6RlRNREVTRXlOalUwSmljQ1VPMEJhdVFCQVA3KzMvM1R6OC9BN2UwQlg0K2ZtWTBFVVBJRDVNVEY2Z1FFVUpmSnlmM1ovZDJZZ0h1T0FnQUMvOVFBQUFTeEJiQUFFZ0FiQUdFQXNBQkZXTEFRTHh1eEVCdytXYkFBUlZpd0NpOGJzUW9RUGxteUFnb1FFUkk1c0FJdnNoRUNFQkVTT2JBUkw3SUJBUW9yV0NIWUcvUlpzQXZRc0JFUXNBN1FzQUlRc2hNQkNpdFlJZGdiOUZtd0NoQ3lGQUVLSzFnaDJCdjBXVEF4QVNNVklSWUVGUlFFQnlFUkl6VXpOVE1WTXdNUklUSTJOVFFtSndKUTdRRnE1QUVBL3Y3Zi9kUFB6OER0N1FGZmo1K1pqUVJROGdQa3hNWHFCQVJRbDhuSi9kbjkzWmlBZTQ0Q0FBRUFBd0FBQkRBRnNBQU5BRTRBc0FCRldMQUlMeHV4Q0J3K1diQUFSVml3QWk4YnNRSVFQbG15RFFnQ0VSSTVzQTB2c25vTkFWMnlBQUVLSzFnaDJCdjBXYkFFMExBTkVMQUcwTEFJRUxJS0FRb3JXQ0hZRy9SWk1ERUJJUkVqRVNNMU14RWhGU0VSSVFKLy92UEJycTREZi8xQ0FRMENyUDFVQXF5WEFtMmUvakVBQUFILy9BQUFBMGNFT2dBTkFFa0FzQUJGV0xBSUx4dXhDQmcrV2JBQVJWaXdBaThic1FJUVBsbXlEUWdDRVJJNXNBMHZzZ0FCQ2l0WUlkZ2I5Rm13Qk5Dd0RSQ3dCdEN3Q0JDeUNnRUtLMWdoMkJ2MFdUQXhBU0VSSXhFak5UTVJJUlVoRVNFQ2VQN2N1cDZlQXEzK0RRRWtBZC8rSVFIZmx3SEVtZjdWQUFFQUN3QUFCVEVGc0FBVUFINEFzQUJGV0xBSUx4dXhDQncrV2JBQVJWaXdFQzhic1JBY1BsbXdBRVZZc0FJdkc3RUNFRDVac0FCRldMQVRMeHV4RXhBK1diSU9DQUlSRWptd0RpK3lMdzRCWGJMUERnRmRzZ0VCQ2l0WUlkZ2I5Rm15QndnQ0VSSTVzQWN2c2dRQkNpdFlJZGdiOUZtd0J4Q3dDdEN3QkJDd0ROQ3lFZ0VPRVJJNU1ERUJJeEVqRVNNMU16VXpGU0VWSVJFekFUTUJBU01DTjdIQXU3dkFBUUgrLzVZQi9lLzkxQUpWNndLTy9YSUVONWZpNHBmKzl3S0MvVDc5RWdBQUFmL1RBQUFFS0FZQUFCUUFkQUN3QUVWWXNBZ3ZHN0VJSGo1WnNBQkZXTEFRTHh1eEVCZytXYkFBUlZpd0FpOGJzUUlRUGxtd0FFVllzQk12RzdFVEVENVpzZzRRQWhFU09iQU9MN0lCQVFvcldDSFlHL1Jac2djSUVCRVNPYkFITDdJRUFRb3JXQ0hZRy9SWnNBY1FzQXJRc0FRUXNBelFzaElCRGhFU09UQXhBU01SSXhFak5UTTFNeFV6RlNNUk13RXpBUUVqQWVDQXV0UFR1dS92ZmdFNzIvNkdBYTdiQWZYK0N3VEJsNmlvbC8zTkFheitFLzJ6QVAvL0FMSCttd1d5QnhvQ0pnRGJBQUFBSndDZ0FURUJRd0VIQUJBRWZ2KzlBQk1Bc0FCRldMQUlMeHV4Q0J3K1diQU4zREF4QVAvL0FKeittd1MxQmNRQ0pnRHZBQUFBSndDZ0FLTC83UUVIQUJBRGdmKzlBQk1Bc0FCRldMQUlMeHV4Q0JnK1diQU4zREF4QVAvL0FLbittd1c3QmJBQ0pnQXNBQUFBQndBUUJJZi92Zi8vQUp6K213UzBCRG9DSmdEekFBQUFCd0FRQTREL3ZmLy9BS24rbXdiNEJiQUNKZ0F4QUFBQUJ3QVFCY1QvdmYvL0FKMyttd1lHQkRvQ0pnRHlBQUFBQndBUUJOTC92Zi8vQUMvK213V29CYkFDSmdEY0FBQUFCd0FRQkhUL3ZmLy9BQ3orbXdTM0JEb0NKZ0R4QUFBQUJ3QVFBNFAvdlFBQkFBOEFBQVM3QmJBQURnQldzZ29QRUJFU09RQ3dBRVZZc0Fndkc3RUlIRDVac0FCRldMQUxMeHV4Q3h3K1diQUFSVml3QWk4YnNRSVFQbG15QmdnQ0VSSTVzQVl2c2dVQkNpdFlJZGdiOUZtd0FOQ3lDZ2dDRVJJNXNBWVFzQTdRTURFQkl4RWpFU00xTXdFekFRRXpBVE1EcHVIQTI1VCtVZHdCZWdGODJ2NVJtZ0lKL2ZjQ0NaY0RFUDBsQXR2ODhBQUFBUUF1L21BRDN3UTZBQTRBWTdJS0R4QVJFamtBc0FCRldMQUlMeHV4Q0JnK1diQUFSVml3Q3k4YnNRc1lQbG13QUVWWXNBSXZHN0VDRWo1WnNBQkZXTEFBTHh1eEFCQStXYkFBUlZpd0JDOGJzUVFRUGxteUJnRUtLMWdoMkJ2MFdiSUtDd0FSRWptd0RkQ3dEdEF3TVFVakVTTVJJelV6QVRNQkFUTUJNd05LNXJyY3YvNmh2UUVmQVJpOS9xUElDLzVyQVpXWEE2NzgyZ01tL0ZJQUFBRUFPUUFBQk00RnNBQVJBR01Bc0FCRldMQUxMeHV4Q3h3K1diQUFSVml3RGk4YnNRNGNQbG13QUVWWXNBSXZHN0VDRUQ1WnNBQkZXTEFGTHh1eEJSQStXYklSQ3dJUkVqbXdFUyt5QUFFS0sxZ2gyQnYwV2JJRUN3SVJFam13QjlDd0VSQ3dDZEN5RFFzQ0VSSTVNREVCSXdFakFRRWpBU00xTXdFekFRRXpBVE1EeEtRQnJ1VCttdjZZNHdHdm9KSCthK0VCWHdGZDR2NXJsZ0tlL1dJQ09QM0lBcDZYQW52OTBnSXUvWVVBQVFBcEFBQUR5Z1E2QUJFQVl3Q3dBRVZZc0Fzdkc3RUxHRDVac0FCRldMQU9MeHV4RGhnK1diQUFSVml3QWk4YnNRSVFQbG13QUVWWXNBVXZHN0VGRUQ1WnNoRU9BaEVTT2JBUkw3SUFBUW9yV0NIWUcvUlpzZ1FPQWhFU09iQUgwTEFSRUxBSjBMSU5EZ0lSRWprd01RRWpBU01EQXlNQkl6VXpBVE1URXpNQk13TThzd0ZCMXZyNjF3RkJxcDcrMXRidDhOaisxcWNCNGY0ZkFaWCthd0hobHdIQy9uVUJpLzQrLy84QVkvL3NBK3dFVFFJR0FMNEFBUC8vQUJJQUFBUXZCYkFDSmdBcUFBQUFCd0hlLzRQK2YvLy9BSkFDaXdYSkF5SUFSZ0dYaEFCbVprQUEvLzhBWFFBQUJETUZ4QUlHQUJZQUFQLy9BRjcvN0FQNUJjUUNCZ0FYQUFELy93QTFBQUFFVUFXd0FnWUFHQUFBLy84QW12L3NCQzBGc0FJR0FCa0FBUC8vQUdULy93UDRCY1FBQmdBZEFBRC8vd0NILyt3RUhnWEVBQVlBRkJRQS8vOEFldi9zQk53SFZRSW1BQ3NBQUFFSEFIVUJ2Z0ZYQUJRQXNBQkZXTEFMTHh1eEN4dytXYkVpQ1BRd01mLy9BR0QrVmdQeUJmNENKZ0JMQUFBQkJ3QjFBVXNBQUFBVUFMQUFSVml3QXk4YnNRTVlQbG14SnduME1ESC8vd0NwQUFBRkNBYzBBaVlBTWdBQUFRY0FSQUZtQVRZQUZBQ3dBRVZZc0FZdkc3RUdIRDVac1FzSTlEQXgvLzhBakFBQUE5OEYvZ0ltQUZJQUFBRUhBRVFBekFBQUFCUUFzQUJGV0xBREx4dXhBeGcrV2JFVENmUXdNZi8vQUJ3QUFBVWRCeUFDSmdBbEFBQUJCd0NyQkcwQk1nQVhBTEFBUlZpd0JDOGJzUVFjUGxteERBajBzQkRRTURFQS8vOEFPZi9zQStvRjZ3SW1BRVVBQUFFSEFLc0VFdi85QUJjQXNBQkZXTEFYTHh1eEZ4ZytXYkVxQ2ZTd0x0QXdNUUQvL3dCZkFBQUVSZ2NzQWlZQUtRQUFBUWNBcXdRNEFUNEFGd0N3QUVWWXNBWXZHN0VHSEQ1WnNRMEk5TEFSMERBeEFQLy9BQ24vN0FQekJlc0NKZ0JKQUFBQkJ3Q3JCQUwvL1FBWEFMQUFSVml3Q0M4YnNRZ1lQbG14SHduMHNDUFFNREVBLy8vL0NnQUFBZW9ITEFJbUFDMEFBQUVIQUtzQzR3RStBQmNBc0FCRldMQUNMeHV4QWh3K1diRUZDUFN3Q2RBd01RRC8vLzd3QUFBQjBBWHBBaVlBakFBQUFRY0Fxd0xKLy9zQUZ3Q3dBRVZZc0FJdkc3RUNHRDVac1FVSjlMQUowREF4QVAvL0FIYi83QVVKQnlJQ0pnQXpBQUFCQndDckJJOEJOQUFYQUxBQVJWaXdEUzhic1EwY1BsbXhJUWowc0NYUU1ERUEvLzhBTS8vc0JEUUY2d0ltQUZNQUFBRUhBS3NFRFAvOUFCY0FzQUJGV0xBRUx4dXhCQmcrV2JFZENmU3dJZEF3TVFELy93QlZBQUFFeVFjZ0FpWUFOZ0FBQVFjQXF3UXVBVElBRndDd0FFVllzQVF2RzdFRUhENVpzUmtJOUxBZDBEQXhBUC8vLzRzQUFBS1hCZXNDSmdCV0FBQUJCd0NyQTJULy9RQVhBTEFBUlZpd0N5OGJzUXNZUGxteER3bjBzQlBRTURFQS8vOEFqUC9zQktvSElBSW1BRGtBQUFFSEFLc0VhQUV5QUJjQXNBQkZXTEFKTHh1eENSdytXYkVVQ1BTd0dOQXdNUUQvL3dBci8rd0QzQVhyQWlZQVdRQUFBUWNBcXdRRS8vMEFGd0N3QUVWWXNBY3ZHN0VIR0Q1WnNSSUo5TEFXMERBeEFQLy8vem9BQUFUU0JqOEFKZ0RQWkFBQUJ3Q3Qvb01BQVAvL0FLbitvZ1NJQmJBQ0pnQW1BQUFBQndDc0JMb0FBUC8vQUl6K29nUWdCZ0FDSmdCR0FBQUFCd0NzQktzQUFQLy9BS24rb2dUR0JiQUNKZ0FvQUFBQUJ3Q3NCTGtBQVAvL0FGLytvZ1B3QmdBQ0pnQklBQUFBQndDc0JMMEFBUC8vQUtuOS93VEdCYkFDSmdBb0FBQUFCd0dpQVdYK29QLy9BRi85L3dQd0JnQUNKZ0JJQUFBQUJ3R2lBV24rb1AvL0FLbitvZ1VJQmJBQ0pnQXNBQUFBQndDc0JSOEFBUC8vQUl6K29nUGZCZ0FDSmdCTUFBQUFCd0NzQktFQUFQLy9BS2tBQUFVRkJ5NENKZ0F2QUFBQkJ3QjFBWHNCTUFBVUFMQUFSVml3QlM4YnNRVWNQbG14RGdqME1ESC8vd0NOQUFBRURBYy9BaVlBVHdBQUFRY0FkUUZFQVVFQUNRQ3dCUyt3RDl3d01RRC8vd0NwL3FJRkJRV3dBaVlBTHdBQUFBY0FyQVRvQUFELy93Q04vcUlFREFZQUFpWUFUd0FBQUFjQXJBUmxBQUQvL3dDcC9xSUVIQVd3QWlZQU1BQUFBQWNBckFUQUFBRC8vd0NHL3FJQllRWUFBaVlBVUFBQUFBY0FyQU5PQUFELy93Q3AvcUlHVWdXd0FpWUFNUUFBQUFjQXJBWFNBQUQvL3dDTC9xSUdlQVJPQWlZQVVRQUFBQWNBckFYV0FBRC8vd0NwL3FJRkNBV3dBaVlBTWdBQUFBY0FyQVVrQUFELy93Q00vcUlEM3dST0FpWUFVZ0FBQUFjQXJBU0hBQUQvL3dDcEFBQUV3QWRBQWlZQU5BQUFBUWNBZFFGOEFVSUFGQUN3QUVWWXNBTXZHN0VESEQ1WnNSWUk5REF4Ly84QWpQNWdCQjRGOVFJbUFGUUFBQUVIQUhVQmsvLzNBQlFBc0FCRldMQU1MeHV4REJnK1diRWRDZlF3TWYvL0FLaitvZ1RKQmJBQ0pnQTJBQUFBQndDc0JMY0FBUC8vQUlMK29nS1hCRTRDSmdCV0FBQUFCd0NzQTBvQUFQLy9BRkQrb2dSeUJjUUNKZ0EzQUFBQUJ3Q3NCTWtBQVAvL0FGLytvZ083QkU0Q0pnQlhBQUFBQndDc0JJY0FBUC8vQURIK29nU1hCYkFDSmdBNEFBQUFCd0NzQkxvQUFQLy9BQW4rb2dKV0JVQUNKZ0JZQUFBQUJ3Q3NCQmtBQVAvL0FCd0FBQVQ5Qnk0Q0pnQTZBQUFCQndDa0FMUUJSZ0FVQUxBQVJWaXdCaThic1FZY1BsbXhDZ1QwTURILy93QWhBQUFEdWdYakFpWUFXZ0FBQVFZQXBCMzdBQlFBc0FCRldMQUJMeHV4QVJnK1diRUtBZlF3TWYvL0FCeitvZ1Q5QmJBQ0pnQTZBQUFBQndDc0JPUUFBUC8vQUNIK29nTzZCRG9DSmdCYUFBQUFCd0NzQkUwQUFQLy9BRDMrb2didEJiQUNKZ0E3QUFBQUJ3Q3NCZThBQVAvL0FDditvZ1hUQkRvQ0pnQmJBQUFBQndDc0JWTUFBUC8vQUZiK29nUjZCYkFDSmdBK0FBQUFCd0NzQkxvQUFQLy9BRmorb2dPekJEb0NKZ0JlQUFBQUJ3Q3NCR0lBQVAvLy9uai83QVZQQmRZQUpnQXpSZ0FBQndGYS9na0FBUC8vQUJNQUFBUndCUndDSmdHNkFBQUFCd0N0Lzl6KzNmLy8vNThBQUFQcUJSOEFKZ0crUEFBQUJ3Q3QvdWorNFAvLy83d0FBQVNVQlJ3QUpnSEJQQUFBQndDdC93WCszZi8vLzhBQUFBR05CUjRBSmdIQ1BBQUFCd0N0L3duKzMvLy8vOS8vOEFSa0JSd0FKZ0hJQ2dBQUJ3Q3QveWorM2YvLy8xY0FBQVJZQlJ3QUpnSFNQQUFBQndDdC9xRCszZi8vLy9nQUFBU0lCUnNBSmdIekNnQUFCd0N0LzBIKzNQLy9BQk1BQUFSd0JJMENCZ0c2QUFELy93Q0tBQUFEN3dTTkFnWUJ1d0FBLy84QWlnQUFBNjRFalFJR0FiNEFBUC8vQUVjQUFBUGdCSTBDQmdIVEFBRC8vd0NLQUFBRVdBU05BZ1lCd1FBQS8vOEFsd0FBQVZFRWpRSUdBY0lBQVAvL0FJb0FBQVJYQkkwQ0JnSEVBQUQvL3dDS0FBQUZkd1NOQWdZQnhnQUEvLzhBWVAvd0JGb0VuUUlHQWNnQUFQLy9BSW9BQUFRYkJJMENCZ0hKQUFELy93QW9BQUFEL1FTTkFnWUJ6UUFBLy84QURRQUFCQndFalFJR0FkSUFBUC8vQUNZQUFBUXhCSTBDQmdIUkFBRC8vLyswQUFBQ1BRWGpBaVlCd2dBQUFRY0FhdjlPQUI0QUZ3Q3dBRVZZc0FJdkc3RUNHajVac1FzQzlMQVUwREF4QVAvL0FBMEFBQVFjQmVNQ0pnSFNBQUFCQmdCcWJSNEFGd0N3QUVWWXNBZ3ZHN0VJR2o1WnNSQUM5TEFaMERBeEFQLy9BSW9BQUFPdUJlTUNKZ0crQUFBQkJnQnFjUjRBRndDd0FFVllzQVl2RzdFR0dqNVpzUk1DOUxBYzBEQXhBUC8vQUlvQUFBT0ZCaHdDSmdIcUFBQUJCd0IxQVRRQUhnQVVBTEFBUlZpd0JDOGJzUVFhUGxteENBYjBNREgvL3dCRC8vQUQzUVNkQWdZQnpBQUEvLzhBbHdBQUFWRUVqUUlHQWNJQUFQLy8vN1FBQUFJOUJlTUNKZ0hDQUFBQkJ3QnEvMDRBSGdBWEFMQUFSVml3QWk4YnNRSWFQbG14Q3dMMHNCVFFNREVBLy84QUsvL3dBMDBFalFJR0FjTUFBUC8vQUlvQUFBUlhCaHdDSmdIRUFBQUJCd0IxQVNVQUhnQVVBTEFBUlZpd0JTOGJzUVVhUGxteER3YjBNREgvL3dBaS8rd0VDd1gyQWlZQ0FRQUFBUVlBb0djZkFCUUFzQUJGV0xBQ0x4dXhBaG8rV2JFVUNQUXdNZi8vQUJNQUFBUndCSTBDQmdHNkFBRC8vd0NLQUFBRDd3U05BZ1lCdXdBQS8vOEFpZ0FBQTRVRWpRSUdBZW9BQVAvL0FJb0FBQU91QkkwQ0JnRytBQUQvL3dDS0FBQUVZUVgyQWlZQi9nQUFBUWNBb0FESkFCOEFGQUN3QUVWWXNBZ3ZHN0VJR2o1WnNRMEk5REF4Ly84QWlnQUFCWGNFalFJR0FjWUFBUC8vQUlvQUFBUllCSTBDQmdIQkFBRC8vd0JnLy9BRVdnU2RBZ1lCeUFBQS8vOEFpZ0FBQkVRRWpRSUdBZThBQVAvL0FJb0FBQVFiQkkwQ0JnSEpBQUQvL3dCZy8vQUVNQVNkQWdZQnZBQUEvLzhBS0FBQUEvMEVqUUlHQWMwQUFQLy9BQ1lBQUFReEJJMENCZ0hSQUFBQUFRQkgvbEFEMUFTZEFDa0FtZ0N3QUVWWXNBb3ZHN0VLR2o1WnNBQkZXTEFaTHh1eEdSQStXYkFBUlZpd0dDOGJzUmdTUGxtd0NoQ3lBd0VLSzFnaDJCdjBXYklHQ2hrUkVqbXlKeGtLRVJJNWZMQW5MeGl5OENjQlhiSUFKd0Z4c3FBbkFWMjBZQ2R3SndKZHNqQW5BWEcwWUNkd0p3SnhzaVlCQ2l0WUlkZ2I5Rm15RUNZbkVSSTVzQmtRc0JiUXNoMFpDaEVTT2JBWkVMSWdBUW9yV0NIWUcvUlpNREVCTkNZaklnWVZJelEyTXpJV0ZSUUdCeFlXRlJRR0J4RWpFU1ltTlRNV0ZqTXlOalUwSlNNMU16WURDSXA5Ym9HNjdielQ3bTVuZG5ITHI3cWp0cmtGZzNtSWt2Ny9uWnp2QTFCVVhWaFBqcldvbGxhTktTU1NXNHl2RXY1YkFhY1VyWWhXWUdCWXdRV1lCUUFBQVFDSy9wa0UrZ1NOQUE4QVhRQ3dBUyt3QUVWWXNBa3ZHN0VKR2o1WnNBQkZXTEFETHh1eEF4QStXYkFBUlZpd0JpOGJzUVlRUGxteUN3TUpFUkk1ZkxBTEx4aXlvQXNCWGJJRUFRb3JXQ0hZRy9SWnNBa1FzQXpRc0FNUXNnNEJDaXRZSWRnYjlGa3dNUUVqRVNNUklSRWpFVE1SSVJFekVUTUUrcnFoL2FTNXVRSmN1YUwrbVFGbkFmTCtEZ1NOL2YwQ0Evd01BQUFCQUdEK1ZnUXdCSjBBSHdCWUFMQUFSVml3RGk4YnNRNGFQbG13QUVWWXNBTXZHN0VERUQ1WnNBQkZXTEFGTHh1eEJSSStXYkFERUxBRzBMQU9FTEFTMExBT0VMSVZBUW9yV0NIWUcvUlpzQU1Rc2h3QkNpdFlJZGdiOUZtd0F4Q3dIOUF3TVFFR0JnY1JJeEVtQWpVMU5EWTJNeklXRnlNbUppTWlCZ2NWRkJZek1qWTNCREFVeTZtNnQ5ZDc1NWpNOXhPNUVvMSttYWNCbjVlSGpSUUJlYWpIRlA1Z0FhSWVBUjdqWWFUNWlOTzdnblRMdldxOXoyK0QvLzhBRFFBQUJCd0VqUUlHQWRJQUFQLy9BQUwrVVFWckJKMENKZ0lYQUFBQUJ3R3dBcnovdVAvL0FJb0FBQVJoQmRZQ0pnSCtBQUFCQndCd0FKd0FKZ0FUQUxBQVJWaXdDQzhic1FnYVBsbXdDOXd3TVFELy93QWkvK3dFQ3dYV0FpWUNBUUFBQVFZQWNEb21BQk1Bc0FCRldMQVJMeHV4RVJvK1diQVQzREF4QVAvL0FHQUFBQVVHQkkwQ0JnSHhBQUQvL3dBYy9rOEZIUVd3QWlZQUpRQUFBQWNBb3dGOEFBRC8vd0J0L2s4RDZnUk9BaVlBUlFBQUFBY0Fvd0RFQUFELy93Q3AvbGtFUmdXd0FpWUFLUUFBQUFjQW93RTZBQXIvL3dCZC9rOEQ4d1JPQWlZQVNRQUFBQWNBb3dFR0FBQUFBQUFBQUEwQW9nQURBQUVFQ1FBQUFGNEFBQUFEQUFFRUNRQUJBQXdBWGdBREFBRUVDUUFDQUE0QWFnQURBQUVFQ1FBREFBd0FYZ0FEQUFFRUNRQUVBQXdBWGdBREFBRUVDUUFGQUN3QWVBQURBQUVFQ1FBR0FCd0FwQUFEQUFFRUNRQUhBRUFBd0FBREFBRUVDUUFKQUF3QkFBQURBQUVFQ1FBTEFCUUJEQUFEQUFFRUNRQU1BQ1lCSUFBREFBRUVDUUFOQUZ3QlJnQURBQUVFQ1FBT0FGUUJvZ0JEQUc4QWNBQjVBSElBYVFCbkFHZ0FkQUFnQURJQU1BQXhBREVBSUFCSEFHOEFid0JuQUd3QVpRQWdBRWtBYmdCakFDNEFJQUJCQUd3QWJBQWdBRklBYVFCbkFHZ0FkQUJ6QUNBQVVnQmxBSE1BWlFCeUFIWUFaUUJrQUM0QVVnQnZBR0lBYndCMEFHOEFVZ0JsQUdjQWRRQnNBR0VBY2dCV0FHVUFjZ0J6QUdrQWJ3QnVBQ0FBTWdBdUFEQUFNQUF4QURFQU1BQXhBRHNBSUFBeUFEQUFNUUEwQUZJQWJ3QmlBRzhBZEFCdkFDMEFVZ0JsQUdjQWRRQnNBR0VBY2dCU0FHOEFZZ0J2QUhRQWJ3QWdBR2tBY3dBZ0FHRUFJQUIwQUhJQVlRQmtBR1VBYlFCaEFISUFhd0FnQUc4QVpnQWdBRWNBYndCdkFHY0FiQUJsQUM0QVJ3QnZBRzhBWndCc0FHVUFSd0J2QUc4QVp3QnNBR1VBTGdCakFHOEFiUUJEQUdnQWNnQnBBSE1BZEFCcEFHRUFiZ0FnQUZJQWJ3QmlBR1VBY2dCMEFITUFid0J1QUV3QWFRQmpBR1VBYmdCekFHVUFaQUFnQUhVQWJnQmtBR1VBY2dBZ0FIUUFhQUJsQUNBQVFRQndBR0VBWXdCb0FHVUFJQUJNQUdrQVl3QmxBRzRBY3dCbEFDd0FJQUJXQUdVQWNnQnpBR2tBYndCdUFDQUFNZ0F1QURBQWFBQjBBSFFBY0FBNkFDOEFMd0IzQUhjQWR3QXVBR0VBY0FCaEFHTUFhQUJsQUM0QWJ3QnlBR2NBTHdCc0FHa0FZd0JsQUc0QWN3QmxBSE1BTHdCTUFFa0FRd0JGQUU0QVV3QkZBQzBBTWdBdUFEQUFBd0FBQUFBQUFQOXFBR1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBSUFDQUFDLy84QUR3QUJBQUFBREFBQUFBQUFBQUFDQUY0QUpRQStBQUVBUlFCZUFBRUFlUUI1QUFNQWdRQ0JBQUVBZ3dDREFBRUFoZ0NHQUFFQWlRQ0pBQUVBaXdDVkFBRUFsd0NjQUFFQW93Q2pBQU1BcHdDc0FBTUFzQUN3QUFFQXVRQzZBQUVBdmdDK0FBRUF3QURBQUFFQXdnRENBQUVBeGdER0FBRUF5Z0RLQUFFQXpBRE5BQUVBendEUUFBRUEwZ0RTQUFFQTJRRGRBQUVBNEFEZ0FBRUE1QURrQUFFQTVnRG9BQUVBNmdENkFBRUEvQUQ4QUFFQS9nRUFBQUVCQWdFQ0FBRUJCd0VJQUFFQkZRRVpBQUVCR3dFYkFBRUJId0VoQUFFQkl3RWtBQU1CT0FFNUFBRUJQZ0ZBQUFFQlJRRkZBQUVCVFFGTkFBRUJUd0ZQQUFFQlV3RlRBQUVCVlFGWEFBRUJXUUZaQUFFQm9nR2lBQU1Cb3dHcEFBSUJ1Z0hUQUFFQjRnSGlBQUVCNUFIa0FBRUI2Z0hxQUFFQjh3SHpBQUVCOVFIMUFBRUIvQUgrQUFFQ0FBSUJBQUVDQXdJREFBRUNCd0lIQUFFQ0NRSUxBQUVDRVFJUkFBRUNGZ0lZQUFFQ0dnSWFBQUVDUGdKREFBRUNSd0t2QUFFQ3NnTllBQUVEV3dOcUFBRURjUU54QUFFRGN3TjNBQUVEZWdOL0FBRURnUU9FQUFFRGhnT0tBQUVEakFPbkFBRURxd09yQUFFRHJRTzBBQUVEdGdPNEFBRUR2UU8vQUFFRHdRUE5BQUVEendQWkFBRUQzQVBzQUFFRDd3UklBQUVFU3dSTEFBRUVUUVJOQUFFRVR3UlFBQUVFV3dSYkFBRUVZZ1JrQUFFRVpnUm1BQUVFYWdScUFBRUViQVJ0QUFFRWJ3UnZBQUVFZHdTR0FBRUVod1NIQUFJRWlBU3dBQUVFc2dUS0FBRUV6QVRRQUFFRTBnVFZBQUVFMXdUWkFBRUUyd1RjQUFFRTNnVGhBQUVBQVFBQUFBb0FYQUNhQUFSRVJreFVBQnBqZVhKc0FDaG5jbVZyQURac1lYUnVBRVFBQkFBQUFBRC8vd0FDQUFBQUJBQUVBQUFBQVAvL0FBSUFBUUFGQUFRQUFBQUEvLzhBQWdBQ0FBWUFCQUFBQUFELy93QUNBQU1BQndBSVkzQnpjQUF5WTNCemNBQXlZM0J6Y0FBeVkzQnpjQUF5YTJWeWJnQTRhMlZ5YmdBNGEyVnliZ0E0YTJWeWJnQTRBQUFBQVFBQUFBQUFBUUFCQUFJQUJnSFlBQUVBQUFBQkFBZ0FBUUFLQUFVQUpBQklBQUVBM2dBSUFDVUFKZ0FuQUNnQUtRQXFBQ3NBTEFBdEFDNEFMd0F3QURFQU1nQXpBRFFBTlFBMkFEY0FPQUE1QURvQU93QThBRDBBUGdCbEFHY0FrZ0N3QUxFQXNnQ3pBTFFBdFFDMkFMY0F1QUM1QU5FQTBnRFRBTlFBMVFEV0FOY0EyQURaQU5vQTJ3RGNBTjBBM2dEZkFPQUE0UURpQU9NQTVBRGxBT1lBNXdEb0FTd0JNQUV5QVRnQk9nRThBVDRCUHdGRkFVWUJmd0dGQVlvQmpRSkhBa2dDU2dKTUFrMENUZ0pQQWxBQ1VRSlNBbE1DVkFKVkFsWUNWd0pZQWxrQ1dnSmJBbHdDWFFKZUFsOENZQUpoQW1JQ1l3SmtBbVVDWmdLREFvVUNod0tKQW9zQ2pRS1BBcEVDa3dLVkFwY0NtUUtiQXAwQ253S2hBcU1DcFFLbkFxa0Nxd0t0QXE4Q3NnSzBBcllDdUFLNkFyd0N2Z0xBQXNJQ3hRTEhBc2tDeXdMTkFzOEMwUUxUQXRVQzJRTGJBdDBDM3dMaEF1TUM1UUxuQXVrQzZ3THRBdThDOFFMeUF2UUM5Z05UQTFRRFZRTldBMWNEV0FOWkExc0RYQU5kQTE0RFh3TmdBMkVEWWdOa0EyVURaZ05uQTJnRGFRTnFBM29EZXdOOEEzMERmZ04vQTRBRGdRT0NBNE1EaEFPRkE0WURod09JQTRrRGlnT0xBNHdEalFPT0E0OER1d085QTc4RDFBUGFBK0FFU1FSTEJFOEVWd1JaQkY0RWFnQUNBQUFBQkFBT0Q4NFY4alZpQUFFRFZBQUVBQUFCcFFyU0N0SUdnZ3R3Q29BSy9nK2FEQUFHaUE3dUR1NE1SZzZnQ2lJTzdnN3VENW9LaWdhU0RHWU1SZ3JZQ3F3TlVnOFFDbDRMNGdzUURCWUdtQTIyRGJZTnRnd2dDeEFLVUF4TURiQU1UQXNRQnFZTjVndHdENW9MY0Fhc0JySUd2QWJDQnNnTVRBYk9CdGdOdGdiK0J4UUhLZ2N3QjBZSFRBZFNCNFFIaWdlUURjQU53QWUrRHU0SDRBZ0NEVklJTUE3dUR1NExKZzd1RHU0SVJnM0FEY0FJZUFpQ0NJd0lwZzFJQ0xnTnNBalNDT2dMRUFreUNVd0phQWxvQ3hBSllnbG9DV2dKYUF0d0RDQUsyQXhNQ3hBTjVnMUlEcUFPb0ExSUN0SUswZ3JTQ3RJSzBnbUtDYkFKdWduRUNlSUo5QW9HQ2hnSy9nK2FENW9QbWcrYURHWUxjQXR3QzNBTGNBdHdDM0FMY0FyK0RBQU1BQXdBREFBTzdnN3VEdTRPN2c3dUQ1b1BtZythRDVvUG1neEdERVlNUmd4R0R4QUw0Z3ZpQytJTDRndmlDK0lMNGd3V0RCWU1GZ3dXRGJZTUlBd2dEQ0FNSUF3Z0RFd01UQXR3QytJTGNBdmlDM0FMNGdyK0N2NEsvZ3IrRDVvTUFBd1dEQUFNRmd3QURCWU1BQXdXREFBTUZnN3VEYllPN2c3dUR1NE83Zzd1REVZT29Bb2lDaUlLSWdvaUR1NE50Zzd1RGJZTzdnMjJEYllQbWd3Z0Q1b01JQSthRENBS1VBcFFDbEFNWmd4bURHWU1SZ3hHREVZTVJneEdERVlLckE4UURFd1BFQXBlQ2w0S1hndHdEQUFPN2c3dUQ1b1BFQXR3Q29BTUFBcGVEdTRPN2c2Z0R1NE83ZythQ29vTVpnOFFEVklPN2c4UURiWU1JQXhNRENBTUFBM21EdTRPN2d4R0RxQU9vQXNtQzNBS2dBM21EQUFPN2c3dUQ1b0tpZ3IrREdZTlVndmlEQllNSUFzUURFd05zQXdXRFVnTVRBcXNDcXdLckE4UURFd0swZ3JTQ3RJTzdnMjJDM0FMNGd3QURCWUsyQXhNQ3Y0UEVBeE1EdTROVWcyd0R1NExjQXZpQzNBTDRnd0FEQllNRmd3V0RWSU5zQSthRENBTUlBc1FDeVlNVEFzbURFd0xKZ3hNRFZJTnNBdHdDK0lMY0F2aUMzQUw0Z3R3QytJTGNBdmlDM0FMNGd0d0MrSUxjQXZpQzNBTDRndHdDK0lMY0F2aUMzQUw0Z3dBREJZTUFBd1dEQUFNRmd3QURCWU1BQXdXREFBTUZnd0FEQllNQUF3V0R1NE83ZythRENBUG1nd2dENW9NSUErYURDQVBtZ3dnRDVvTUlBK2FEQ0FNSUF4R0RFWVBFQXhNRHhBTVRBOFFERXdPb0E3dURHWU5VZzJ3RGVZTlNBMVNEYkFOdGczQURlWU9vQTd1RHU0UEVBK2FBQUlBaHdBR0FBWUFBQUFMQUFzQUFRQVRBQk1BQWdBbEFDb0FBd0FzQURVQUNRQTRBRDRBRXdCRkFFWUFHZ0JKQUVvQUhBQk1BRXdBSGdCUkFGUUFId0JXQUZZQUl3QmFBRm9BSkFCY0FGMEFKUUNLQUlvQUp3Q2NBSndBS0FDd0FMUUFLUUMyQUxnQUxnQzZBTG9BTVFDOEFMMEFNZ0MvQU1BQU5BRENBTVFBTmdER0FNc0FPUURSQU5FQVB3RFRBTjBBUUFEZkFOOEFTd0RoQU9NQVRBRGxBT2NBVHdEcEFPMEFVZ0R3QVBBQVZ3RDFBUGNBV0FENkFQc0FXd0Q5QVA4QVhRRURBUVFBWUFFSkFRa0FZZ0VNQVF3QVl3RVhBUmtBWkFFckFTMEFad0V3QVRBQWFnRXlBVElBYXdGSkFVa0FiQUZzQVcwQWJRRnZBWEVBYndHNkFib0FjZ0c5QWIwQWN3SEVBY1VBZEFISUFjZ0FkZ0hLQWNzQWR3SE5BYzBBZVFJb0FpZ0FlZ0lxQWlzQWV3SkhBa2dBZlFKS0Frb0Fmd0pNQW0wQWdBSnZBbklBb2dKM0Fud0FwZ0tCQW9rQXJBS0xBb3NBdFFLTkFvMEF0Z0tQQW84QXR3S1JBcEVBdUFLVEFwd0F1UUtsQXFjQXd3S3BBcWtBeGdLckFxc0F4d0t0QXEwQXlBS3ZBcThBeVFLeUFySUF5Z0swQXJRQXl3SzJBcllBekFLNEFyZ0F6UUs2QXJvQXpnSzhBcndBendLK0Fzb0EwQUxNQXN3QTNRTE9BczRBM2dMUUF0QUEzd0xiQXRzQTRBTGRBdDBBNFFMZkF0OEE0Z0xoQXVFQTR3TGpBdU1BNUFMbEF1VUE1UUxuQXVjQTVnTHBBdWtBNXdMckF1c0E2QUx0QXUwQTZRTHZBdklBNmdMMEF2UUE3Z0wyQXZZQTd3TlRBMWdBOEFOYkEyb0E5Z050QTIwQkJnTnhBM0VCQndOekEzTUJDQU4zQTNjQkNRTjZBM3NCQ2dOOUE0WUJEQU9JQTRvQkZnT01BNUVCR1FPVEE1UUJId09XQTVrQklRT2ZBNkFCSlFPaUE2SUJKd09rQTZRQktBT21BNmtCS1FPc0E3RUJMUU96QTdNQk13TzNBN2dCTkFPOUE3MEJOZ08vQThnQk53UExBOHdCUVFQT0E5RUJRd1BZQTlrQlJ3UGRBOTBCU1FQZkErVUJTZ1BxQStzQlVRUHZCQmNCVXdRWkJCa0JmQVFiQkNnQmZRUXdCREFCaXdRekJETUJqQVExQkRVQmpRUkJCRVlCamdSSkJFa0JsQVJMQkVzQmxRUk5CRTBCbGdSUEJGQUJsd1JWQkZnQm1RUmJCRnNCblFSZEJGNEJuZ1JnQkdBQm9BUmtCR1FCb1FSbUJHWUJvZ1JxQkdvQm93U3FCS29CcEFBQkFCUC9JQUFDQUZiLzVnRzYvOEFBQVFHNkFBNEFBd0FOQUJRQVFRQVNBR0VBRXdBQkFQWC85UUFCQU1NQURRQUNBTGYvd2dEREFCQUFBUURELytJQUFRREcvL0lBQVFEREFBNEFBZ0RKLyswQTlmL0FBQWtBdnYvbUFNSC82d0RDLytrQXhQL3dBTVgvNXdESi8rTUF5Ly9PQU16LzFBRE4vOXNBQlFEQi8rd0F3d0FQQU1YLzZnREovOFFBeS8vbkFBVUFTdi9wQU1ILzdnRERBQkFBeGYvc0FNbi9JQUFCQU1NQUR3QUZBTW4vNmdEcy8rNEE5ZityQVRQLzdBRlkvK3dBQVFEMS85VUFBUURKQUFzQURBQktBQXdBeFFBTEFNa0FEQUc2Lzc4QnZQL3VBY0QvN0FISS8rMEJ5di9zQWN6LzlRSE5BQTRCendBTkFkSUFEUUFCQVBYLzJBQUJBUFgvcWdBTEFPWC8xQUQxLzhrQkNQL2xBUi8vNHdFei84UUJQUC9oQVUzLzFBRk8vL1VCVC8vbkFWZi8wZ0ZZLzhrQUNBRGwvOGtBOWYvZkFRai83UUVmLytzQk0vL2ZBVC8vNlFGTy8vVUJXUC9nQUFnQTVmL21BUFgvMEFFei84NEJQUC9vQVUzLzV3RlAvKzBCVi8vbUFWai8wQUFMQU5nQUZBRGwvK0FBN0FBVEFUei80UUU5LytBQlFQL2hBVVgvNlFGTi85OEJULy9lQVZmLzN3RlovL0lBQlFBYi8vSUE1Zi94QVUzLzhnRlAvL0lCVi8veUFBd0EyQUFUQU9YLzVnRG0vL1FBN0FBU0FQWC81d0V6LytjQlBQL2xBVDMvNkFGTi8rWUJULy9tQVZmLzVnRlkvK2NBQWdEWS8rSUJWLy9rQUFJQTJQL2hBT3ovNUFBR0FPei83Z0QxLys0QkNQLzBBUi8vOFFFei8rOEJXUC92QUFRQTlmLzBBUWovOVFFei8vVUJXUC8xQUFZQTdBQVVBUFgvN1FENy8rSUJNLy90QVQzLzdRRlkvKzBBQlFFYi8rc0J2UC9yQWNELzZRSEkvK3NCeXYvckFCSUFTZ0FOQU1iL3F3REgvOEFBeS8vVkFPei9xZ0ViLytJQkh3QU1BVTRBQ3dGUUFBc0J1disvQWJ6LzdnSEEvK3dCeVAvdEFjci83QUhNLy9VQnpRQU9BYzhBRFFIU0FBMEFCZ0RzQUJRQTlmL3dBUUFBREFFei8vQUJQZi9tQVZqLzhBQUZBT3dBT2dEMS8rTUJNLy9pQVQzLzR3RlkvK01BQVFEcy8rOEFDQUQxLzdvQkNQL1BBUi8vMndFei8xQUJQZitkQVU3LzhBRlEvL0lCV1A5TUFBa0J2UC95QWNELzhnSEkvL0lCeXYveUFjMy93QUhPLyt3QnovL0hBZEQvMkFIUy83OEFBZ0hQLys0QjBQLzFBQUlCeVAvckFjci82d0FIQWNqLzd3SEsvL0FCemYrN0FjNy83QUhQLzdjQjBQL1ZBZEwvdEFBRUFjMy83Z0hQLy9FQjBmL3NBZEwvNmdBRUFjMy82UUhQLytzQjBQL3hBZEwvNVFBRUFjMy84Z0hQLy9FQjBQLzFBZEwvN2dBQ0FjOEFEUUhTQUEwQUN3QmIvNlFCdWdBVEFiei84d0hBLy9FQnlQL3lBY3IvOFFITi96c0J6di9hQWMvL1ZBSFEvNUVCMHY4L0FBTUFTZ0FQQUZnQU1nQmJBQkVBQ0FCYi8rVUF0Ly9MQU16LzVBRzZBQTBCdlAvdEFjRC82d0hJLyt3Qnl2L3NBQUlCRUFBTEFWZi81Z0FJQUZnQURnQ0IvNThBdy8vZUFNYi81UURZLzZnQTdQL0tBVXIvNHdHNi84WUFDUUFOQUE4QVFRQU1BRmIvNndCaEFBNEJ1di9MQWJ6LzZRSEEvK2NCeVAvbkFjci81d0FCQUZzQUN3QUpBQTBBRkFCQkFCRUFWdi9pQUdFQUV3RzYvN1FCdlAvWkFjRC8yUUhJLzlrQnl2L1pBQVFBRGYvbUFFSC85QUJoLys4QlFQL3RBQVVBeWYvcUFPei83Z0QxLzdBQk0vL3NBVmovN0FBU0FOai9yZ0RsQUJJQTZ2L2dBT3ovclFEdS85WUEvUC9mQVFELzBnRUcvK0FCRy8vT0FTdi8zUUV0LytJQk1mL2dBVGYvNEFFOS8ra0JRUC9hQVVyL3ZRRlUvOThCVndBUkFCd0FJLy9EQUZqLzd3QmIvOThBbWYvdUFMZi81UUM0LzlFQXd3QVJBTW4veUFEWUFCTUE1Zi9GQVBYL3lnRXovNThCUFA5UkFUMy9ld0UvLzhvQlFQL2RBVVgvOGdGTi8zVUJULy9LQVZmL1R3RlkvNHdCd1AvMUFjai85UUhOLzhjQnp2L3hBYy8velFIUS85MEIwdi9FQUFjQTlmL3dBUWovOFFFZi8vTUJNLy94QVU3Lzh3RlEvK2tCV1AvVEFBVUFTdi91QUZ2LzZnSFAvL0FCMFAvdEFkTC84QUFDQVBYLzlRRnQvN0FBQ1FESi8rb0E3UCs0QVBYLzZnRUkvL0FCSC8veEFUUC82d0ZPLy9VQldQL3NBVzMvc0FBQkFici82d0FHQUVvQURRREZBQXNBeHYvcUFNa0FEQURzLzhnQkcvL3hBRGdBQlAvWUFGYi90UUJiLzhjQWJmNjRBSHovS0FDQi8wMEFoditPQUluL29RQzMvNjRBdnY5K0FNTC9ad0RGLzRjQXh2OWxBTW4vbmdETC8yb0F6UDl6QU0zL1hnRFkvNlVBNVFBUEFPbi81QURxLzZBQTdQOTBBTzcvZ0FEMS83SUEvUDk5QVA3L2dBRUEvM2tCQnY5OUFRai9md0ViLzVnQkgvL2FBU3YvZ1FFdC81Z0JNZjk5QVRQL3N3RTMvNkFCUGY5OEFULy9tZ0ZBLzJ3QlJmL21BVXIvYXdGTy81SUJVUCt0QVZUL2V3RlhBQThCV1ArUkFWbi84Z0c2LzY4QnZQKzVBY0QvdVFISS83a0J5dis1QWN6L3ZBSE4vL0VCMFAveEFkSC83UUFDQU96L3lRRWIvKzRBRndDMy85UUF3Zi90QU1NQUVRREovK0FBeS8vbkFNei81UUROLys0QTJBQVNBT24vNlFEMS85Y0JNLy9YQVQzLzB3RS8vOVlCUVAvRkFVWC81d0ZOQUEwQlR3QU1BVmovMWdGWi8vSUJ2UC9wQWNELzV3SEkvK2NCeXYvcEFBRUJHLy94QUFJQTlmL0FBVzMvc0FBSkFPWC93d0QxLzg4Qk0vL09BVHovNXdFLy85OEJUZi9SQVUvLzdBRlgvNkFCV1AvUkFDNEFWdjl0QUZ2L2pBQnQvYjhBZlA1OUFJSCt2QUNHL3lzQWlmOUxBTGYvWVFDKy93OEF3djdvQU1YL0h3REcvdVVBeWY5R0FNdis3UURNL3YwQXpmN1pBTmovVWdEbEFBVUE2Zis5QU9yL1NRRHMvdjRBN3Y4VEFQWC9hQUQ4L3c0QS92OFRBUUQvQndFRy93NEJDUDhSQVJ2L1BBRWYvNndCSy84VkFTMy9QQUV4L3c0Qk0vOXFBVGYvU1FFOS93d0JQLzgvQVVEKzhRRkYvOEFCU3Y3dkFVNy9NUUZRLzE4QlZQOEtBVmNBQlFGWS96QUJXZi9WQUJNQVcvL0JBTGYveFFESi83UUE2Zi9YQVBYL3VRRUkvN0lCRy8vU0FSLy95QUV6LzZBQlBmL0ZBVVgvNUFGTy84d0JVUC9NQVZqL3l3RlovKzhCdlAvb0FjRC81Z0hJLytjQnl2L25BQWdBMkFBVkFPd0FGUUU4LytRQlBmL2xBVC8vNUFGTi8rTUJULy9pQVZmLzVBQWlBQXIvNGdBTkFCUUFEdi9QQUVFQUVnQksvK29BVnYvWUFGai82Z0JoQUJNQWJmK3VBSHovelFDQi82QUFodi9CQUluL3dBQzMvOUFBdS8vcUFMNy94Z0MvQUEwQXdmL3BBTUwvMWdERi8rZ0F4dis2QU1uLzZRREwvOHNBelAvYUFNMy94d0YxLzlNQnV2K3JBYnovelFIQS84c0J5UC9MQWNyL3l3SE4vL01CMFAvekFkSC83d0FKQUlILzN3QzAvL01BdHYvd0FNUC82Z0RZLzk4QTVmL2dBVmYvNEFHNi8rMEIwZi8xQUFFQUdBQUVBQUFBQndBcUFGUUFxZ1BjQkZvRXhBVUdBQUVBQndBRUFBd0FLZ0ExQURZQVB3QktBQW9BT1AvWUFOSC8yQURWLzlnQk12L1lBVHIvMkFMYi85Z0MzZi9ZQXQvLzJBT08vOWdFVGYvWUFCVUFPZ0FVQURzQUVnQTlBQllCR0FBVUFtWUFGZ0x0QUJJQzd3QVdBdkVBRmdOWUFCWURad0FXQTJvQUZnT2dBQklEb2dBU0E2UUFFZ09tQUJZRHR3QVVBNzhBRmdSQkFCWUVRd0FXQkVVQUZnUnFBQllBekFBUS94WUFFdjhXQUNYL1ZnQXUvdmdBT0FBVUFFWC8zZ0JILytzQVNQL3JBRW4vNndCTC8rc0FVLy9yQUZYLzZ3QlovK29BV3Yvb0FGMy82QUNULytzQW1QL3JBSnIvNmdDeC8xWUFzLzlXQUxyLzZ3QzgvK2dBeC8vckFNai82d0RLLytvQTBRQVVBTlVBRkFEMi8rc0JBdi9yQVF6L1ZnRVgvK3NCR2Yvb0FSMy82d0VoLytzQk1nQVVBVG4vNndFNkFCUUJTLy9yQVV6LzZ3RlcvK3NCYnY4V0FYTC9GZ0YyL3hZQmQvOFdBa3ovVmdKTi8xWUNUdjlXQWsvL1ZnSlEvMVlDVWY5V0FsTC9WZ0puLzk0Q2FQL2VBbW4vM2dKcS85NENhLy9lQW16LzNnSnQvOTRDYnYvckFtLy82d0p3LytzQ2NmL3JBbkwvNndKNC8rc0NlZi9yQW5yLzZ3SjcvK3NDZlAvckFuMy82Z0orLytvQ2YvL3FBb0QvNmdLQi8rZ0Nndi9vQW9QL1ZnS0UvOTRDaGY5V0FvYi8zZ0tILzFZQ2lQL2VBb3IvNndLTS8rc0Nqdi9yQXBELzZ3S1MvK3NDbFAvckFwYi82d0tZLytzQ212L3JBcHovNndLZS8rc0NvUC9yQXFMLzZ3S2svK3NDc3Y3NEFzYi82d0xJLytzQ3l2L3JBdHNBRkFMZEFCUUMzd0FVQXVMLzZnTGsvK29DNXYvcUF1ai82Z0xxLytvQzdQL3FBdkQvNkFOVC8xWURXLzlXQTJ2LzZ3TnYvK29EY2YvckEzUC82QU4yLytvRGQvL3JBM2ovNmdOLy92Z0RnLzlXQTQ0QUZBT1EvOTREa2YvckE1UC82d09WLytzRGx2L29BNWovNndPZi8rZ0RwLy9vQTYvL1ZnT3cvOTREcy8vckE3ai82QU81LytzRHZ2L3JBOEQvNkFQRi8xWUR4di9lQThmL1ZnUEkvOTREelAvckE4Ny82d1BQLytzRDJmL3JBOXYvNndQZC8rc0Q0Zi9vQStQLzZBUGwvK2dEN1AvckErLy9WZ1B3Lzk0RDhmOVdBL0wvM2dQei8xWUQ5UC9lQS9YL1ZnUDIvOTREOS85V0Evai8zZ1A1LzFZRCt2L2VBL3YvVmdQOC85NEQvZjlXQS83LzNnUC8vMVlFQVAvZUJBSC9WZ1FDLzk0RUEvOVdCQVQvM2dRRi8xWUVCdi9lQkFqLzZ3UUsvK3NFRFAvckJBNy82d1FRLytzRUV2L3JCQlQvNndRVy8rc0VIUC9yQkI3LzZ3UWcvK3NFSXYvckJDVC82d1FtLytzRUtQL3JCQ3IvNndRcy8rc0VMdi9yQkRELzZ3UXkvK3NFTlAvcUJEYi82Z1E0LytvRU92L3FCRHovNmdRKy8rb0VRUC9xQkVMLzZBUkUvK2dFUnYvb0JFMEFGQUFmQURqLzFRQTYvK1FBTy8vc0FEMy8zUURSLzlVQTFmL1ZBUmovNUFFeS85VUJPdi9WQW1iLzNRTGIvOVVDM2YvVkF0Ly8xUUx0Lyt3QzcvL2RBdkgvM1FOWS85MERaLy9kQTJyLzNRT08vOVVEb1Avc0E2TC83QU9rLyt3RHB2L2RBN2YvNUFPLy85MEVRZi9kQkVQLzNRUkYvOTBFVGYvVkJHci8zUUFhQURqL3NBQTYvKzBBUGYvUUFOSC9zQURWLzdBQkdQL3RBVEwvc0FFNi83QUNadi9RQXR2L3NBTGQvN0FDMy8rd0F1Ly8wQUx4LzlBRFdQL1FBMmYvMEFOcS85QURqdit3QTZiLzBBTzMvKzBEdi8vUUJFSC8wQVJELzlBRVJmL1FCRTMvc0FScS85QUFFQUF1Lys0QU9mL3VBbUwvN2dKai8rNENaUC91QW1YLzdnS3kvKzRDNGYvdUF1UC83Z0xsLys0QzUvL3VBdW4vN2dMci8rNERmLy91QkRQLzdnUTEvKzRBUndBR0FCQUFDd0FRQUVmLzZBQkkvK2dBU2Yvb0FFdi82QUJWLytnQWsvL29BSmovNkFDNi8rZ0F4Ly9vQU1qLzZBRDIvK2dCQXYvb0FSMy82QUVoLytnQk9mL29BVXYvNkFGTS8rZ0JWdi9vQVd3QUVBRnRBQkFCYndBUUFYQUFFQUZ4QUJBQ2J2L29BbS8vNkFKdy8rZ0NjZi9vQW5MLzZBS0svK2dDalAvb0FvNy82QUtRLytnQ2t2L29BcFQvNkFLVy8rZ0NtUC9vQXByLzZBS2MvK2dDbnYvb0FxRC82QUtpLytnQ3BQL29BMnYvNkFPUi8rZ0RsZi9vQTVqLzZBT29BQkFEcVFBUUE2d0FFQU96LytnRHVmL29BNzcvNkFQTS8rZ0R6di9vQTgvLzZBUGIvK2dEN1Avb0JBai82QVFLLytnRURQL29CQTcvNkFRUS8rZ0VFdi9vQkJULzZBUVcvK2dFS3Yvb0JDei82QVF1LytnRU12L29BQUVBVmdBRUFBQUFKZ0NtQVp3QitnSVVBbFlDekFQQ0JMZ0ZrZ1lzQ01ZS2pBdGVERlFPR2c1TURuNE8vQkRpRVZnU0toUk1GUUlXYUJjaUY2Z1lCaGpJR1Q0ZXdCbFFHcUljNEIwQ0hoZ2VsaDdBSHVvQUFRQW1BRThBV0FCYkFGOEFuQUMwQUxZQXR3QzRBTDhBd2dEREFNUUF5UURMQU13QXpRRFJBTlVBMXdEWUFOb0E0Z0RtQU9jQTZBRHBBT29BN0FEdUFQQUE5UUQzQVBvQS93RUNBU0VCYlFBOUFFZi83QUJJLyt3QVNmL3NBRXYvN0FCVi8rd0FrLy9zQUpqLzdBQzYvK3dBeC8vc0FNai83QUQyLyt3QkF2L3NBUjMvN0FFaC8rd0JPZi9zQVV2LzdBRk0vK3dCVnYvc0FtNy83QUp2Lyt3Q2NQL3NBbkgvN0FKeS8rd0Npdi9zQW96LzdBS08vK3dDa1Avc0FwTC83QUtVLyt3Q2x2L3NBcGovN0FLYS8rd0NuUC9zQXA3LzdBS2cvK3dDb3Yvc0FxVC83QU5yLyt3RGtmL3NBNVgvN0FPWS8rd0RzLy9zQTduLzdBTysvK3dEelAvc0E4Ny83QVBQLyt3RDIvL3NBK3ovN0FRSS8rd0VDdi9zQkF6LzdBUU8vK3dFRVAvc0JCTC83QVFVLyt3RUZ2L3NCQ3IvN0FRcy8rd0VMdi9zQkRMLzdBQVhBRlAvN0FFWC8rd0NlUC9zQW5uLzdBSjYvK3dDZS8vc0Fuei83QUxHLyt3Q3lQL3NBc3IvN0FOeC8rd0RkLy9zQTVQLzdBUFovK3dEM2Yvc0JCei83QVFlLyt3RUlQL3NCQ0wvN0FRay8rd0VKdi9zQkNqLzdBUXcvK3dBQmdBUS80UUFFditFQVc3L2hBRnkvNFFCZHYrRUFYZi9oQUFRQUM3LzdBQTUvK3dDWXYvc0FtUC83QUprLyt3Q1pmL3NBckwvN0FMaC8rd0M0Ly9zQXVYLzdBTG4vK3dDNmYvc0F1di83QU4vLyt3RU0vL3NCRFgvN0FBZEFBYi84Z0FMLy9JQVd2L3pBRjMvOHdDOC8vTUJHZi96QVd6LzhnRnQvL0lCYi8veUFYRC84Z0Z4Ly9JQ2dmL3pBb0wvOHdMdy8vTURjLy96QTViLzh3T2YvL01EcC8vekE2ai84Z09wLy9JRHJQL3lBN2ovOHdQQS8vTUQ0Zi96QStQLzh3UGwvL01FUXYvekJFVC84d1JHLy9NQVBRQW4vL01BSy8vekFEUC84d0ExLy9NQWcvL3pBSkwvOHdDWC8vTUFzdi96QU5MLzh3RUgvL01CRnYvekFSci84d0VjLy9NQkh2L3pBU0QvOHdFNC8vTUJWZi96QWlqLzh3SXAvL01DSy8vekFpei84d0pULy9NQ1hmL3pBbDcvOHdKZi8vTUNZUC96QW1ILzh3S0ovL01DaS8vekFvMy84d0tQLy9NQ25mL3pBcC8vOHdLaC8vTUNvLy96QXNYLzh3TEgvL01DeWYvekF2ci84d05YLy9NRFpQL3pBNHIvOHdPTi8vTUR1di96QTczLzh3UFkvL01EMnYvekE5ei84d1FiLy9NRUhmL3pCQi8vOHdRaC8vTUVJLy96QkNYLzh3UW4vL01FS2YvekJDdi84d1F0Ly9NRUwvL3pCREgvOHdTcS8vTUFQUUFuLytZQUsvL21BRFAvNWdBMS8rWUFnLy9tQUpMLzVnQ1gvK1lBc3YvbUFOTC81Z0VILytZQkZ2L21BUnIvNWdFYy8rWUJIdi9tQVNELzVnRTQvK1lCVmYvbUFpai81Z0lwLytZQ0svL21BaXovNWdKVC8rWUNYZi9tQWw3LzVnSmYvK1lDWVAvbUFtSC81Z0tKLytZQ2kvL21BbzMvNWdLUC8rWUNuZi9tQXAvLzVnS2gvK1lDby8vbUFzWC81Z0xILytZQ3lmL21BdnIvNWdOWC8rWURaUC9tQTRyLzVnT04vK1lEdXYvbUE3My81Z1BZLytZRDJ2L21BOXovNWdRYi8rWUVIZi9tQkIvLzVnUWgvK1lFSS8vbUJDWC81Z1FuLytZRUtmL21CQ3YvNWdRdC8rWUVMLy9tQkRILzVnU3EvK1lBTmdBbC8rUUFQUC9TQUQzLzB3Q3gvK1FBcy8va0FObi8wZ0VNLytRQ1RQL2tBazMvNUFKTy8rUUNULy9rQWxELzVBSlIvK1FDVXYva0FtYi8wd0tELytRQ2hmL2tBb2YvNUFMdi85TUM4Zi9UQTFQLzVBTlkvOU1EVy8va0EyZi8wd05vLzlJRGF2L1RBNFAvNUFPUC85SURwdi9UQTYvLzVBTy8vOU1Ed3YvU0E4WC81QVBILytRRDBQL1NBK3IvMGdQdi8rUUQ4Zi9rQS9QLzVBUDEvK1FEOS8va0Evbi81QVA3LytRRC9mL2tBLy8vNUFRQi8rUUVBLy9rQkFYLzVBUkIvOU1FUS8vVEJFWC8wd1JQLzlJRVYvL1NCR3IvMHdBbUFCRC9IZ0FTL3g0QUpmL05BTEgvelFDei84MEJEUC9OQVc3L0hnRnkveDRCZHY4ZUFYZi9IZ0pNLzgwQ1RmL05BazcvelFKUC84MENVUC9OQWxIL3pRSlMvODBDZy8vTkFvWC96UUtILzgwRFUvL05BMXYvelFPRC84MERyLy9OQThYL3pRUEgvODBENy8vTkEvSC96UVB6LzgwRDlmL05BL2YvelFQNS84MEQrLy9OQS8zL3pRUC8vODBFQWYvTkJBUC96UVFGLzgwQXBnQkgvOXdBU1AvY0FFbi8zQUJMLzl3QVVmL3pBRkwvOHdCVC85WUFWUC96QUZYLzNBQlovOTBBV3YvaEFGMy80UUNULzl3QW1QL2NBSnIvM1FDNi85d0F2UC9oQU1ELzh3REgvOXdBeVAvY0FNci8zUURyLy9NQTcvL3pBUEQvOHdEeS8vTUE4Ly96QVBULzh3RDIvOXdBOS8vekFQbi84d0Q2Ly9NQS9mL3pBUC8vOHdFQy85d0JCUC96QVJmLzFnRVovK0VCSGYvY0FTSC8zQUUxLy9NQk9mL2NBVVQvOHdGSi8vTUJTLy9jQVV6LzNBRlcvOXdDYnYvY0FtLy8zQUp3Lzl3Q2NmL2NBbkwvM0FKMy8vTUNlUC9XQW5uLzFnSjYvOVlDZS8vV0Fuei8xZ0o5LzkwQ2Z2L2RBbi8vM1FLQS85MENnZi9oQW9MLzRRS0svOXdDalAvY0FvNy8zQUtRLzl3Q2t2L2NBcFQvM0FLVy85d0NtUC9jQXByLzNBS2MvOXdDbnYvY0FxRC8zQUtpLzl3Q3BQL2NBci8vOHdMQi8vTUN3Ly96QXNULzh3TEcvOVlDeVAvV0Fzci8xZ0xpLzkwQzVQL2RBdWIvM1FMby85MEM2di9kQXV6LzNRTHcvK0VEYS8vY0EyMy84d052LzkwRGNmL1dBM1AvNFFOMi85MERkLy9XQTNqLzNRT1IvOXdEa3YvekE1UC8xZ09VLy9NRGxmL2NBNWIvNFFPWS85d0RtZi96QTU3Lzh3T2YvK0VEcC8vaEE2Ny84d096Lzl3RHRQL3pBN2ovNFFPNS85d0R2di9jQThELzRRUE0vOXdEenYvY0E4Ly8zQVBWLy9NRDEvL3pBOW4vMWdQYi85d0QzZi9XQStILzRRUGovK0VENWYvaEErbi84d1BzLzl3RUNQL2NCQXIvM0FRTS85d0VEdi9jQkJELzNBUVMvOXdFRlAvY0JCYi8zQVFjLzlZRUh2L1dCQ0QvMWdRaS85WUVKUC9XQkNiLzFnUW8vOVlFS3YvY0JDei8zQVF1Lzl3RU1QL1dCREwvM0FRMC85MEVOdi9kQkRqLzNRUTYvOTBFUFAvZEJENy8zUVJBLzkwRVF2L2hCRVQvNFFSRy8rRUVTdi96QkV6Lzh3UlcvL01FWS8vekJHWC84d1JuLy9NQWNRQUcvOW9BQy8vYUFFZi84QUJJLy9BQVNmL3dBRXYvOEFCVi8vQUFXZi92QUZyLzNBQmQvOXdBay8vd0FKai84QUNhLys4QXV2L3dBTHovM0FESC8vQUF5UC93QU1yLzd3RDIvL0FCQXYvd0FSbi8zQUVkLy9BQklmL3dBVG4vOEFGTC8vQUJUUC93QVZiLzhBRnMvOW9CYmYvYUFXLy8yZ0Z3LzlvQmNmL2FBbTcvOEFKdi8vQUNjUC93QW5ILzhBSnkvL0FDZmYvdkFuNy83d0ovLys4Q2dQL3ZBb0gvM0FLQy85d0Npdi93QW96LzhBS08vL0FDa1Avd0FwTC84QUtVLy9BQ2x2L3dBcGovOEFLYS8vQUNuUC93QXA3LzhBS2cvL0FDb3Yvd0FxVC84QUxpLys4QzVQL3ZBdWIvN3dMby8rOEM2di92QXV6Lzd3THcvOXdEYS8vd0EyLy83d056Lzl3RGR2L3ZBM2ovN3dPUi8vQURsZi93QTViLzNBT1kvL0FEbi8vY0E2Zi8zQU9vLzlvRHFmL2FBNnovMmdPei8vQUR1UC9jQTduLzhBTysvL0FEd1AvY0E4ei84QVBPLy9BRHovL3dBOXYvOEFQaC85d0Q0Ly9jQStYLzNBUHMvL0FFQ1Avd0JBci84QVFNLy9BRUR2L3dCQkQvOEFRUy8vQUVGUC93QkJiLzhBUXEvL0FFTFAvd0JDNy84QVF5Ly9BRU5QL3ZCRGIvN3dRNC8rOEVPdi92QkR6Lzd3USsvKzhFUVAvdkJFTC8zQVJFLzl3RVJ2L2NBRFFBQnYrZ0FBdi9vQUJaLy9FQVd2L0ZBRjMveFFDYS8vRUF2UC9GQU1yLzhRRVovOFVCYlArZ0FXMy9vQUZ2LzZBQmNQK2dBWEgvb0FKOS8vRUNmdi94QW4vLzhRS0EvL0VDZ2YvRkFvTC94UUxpLy9FQzVQL3hBdWIvOFFMby8vRUM2di94QXV6LzhRTHcvOFVEYi8veEEzUC94UU4yLy9FRGVQL3hBNWIveFFPZi84VURwLy9GQTZqL29BT3AvNkFEclArZ0E3ai94UVBBLzhVRDRmL0ZBK1AveFFQbC84VUVOUC94QkRiLzhRUTQvL0VFT3YveEJEei84UVErLy9FRVFQL3hCRUwveFFSRS84VUVSdi9GQUQwQVIvL25BRWovNXdCSi8rY0FTLy9uQUZYLzV3Q1QvK2NBbVAvbkFMci81d0RILytjQXlQL25BUGIvNXdFQy8rY0JIZi9uQVNILzV3RTUvK2NCUy8vbkFVei81d0ZXLytjQ2J2L25BbS8vNXdKdy8rY0NjZi9uQW5MLzV3S0svK2NDalAvbkFvNy81d0tRLytjQ2t2L25BcFQvNXdLVy8rY0NtUC9uQXByLzV3S2MvK2NDbnYvbkFxRC81d0tpLytjQ3BQL25BMnYvNXdPUi8rY0RsZi9uQTVqLzV3T3ovK2NEdWYvbkE3Ny81d1BNLytjRHp2L25BOC8vNXdQYi8rY0Q3UC9uQkFqLzV3UUsvK2NFRFAvbkJBNy81d1FRLytjRUV2L25CQlQvNXdRVy8rY0VLdi9uQkN6LzV3UXUvK2NFTXYvbkFIRUFCZ0FNQUFzQURBQkgvK2dBU1Avb0FFbi82QUJMLytnQVUvL3FBRlgvNkFCYUFBc0FYUUFMQUpQLzZBQ1kvK2dBdXYvb0FMd0FDd0RILytnQXlQL29BUGIvNkFFQy8rZ0JGLy9xQVJrQUN3RWQvK2dCSWYvb0FUbi82QUZMLytnQlRQL29BVmIvNkFGc0FBd0JiUUFNQVc4QURBRndBQXdCY1FBTUFtNy82QUp2LytnQ2NQL29BbkgvNkFKeS8rZ0NlUC9xQW5uLzZnSjYvK29DZS8vcUFuei82Z0tCQUFzQ2dnQUxBb3IvNkFLTS8rZ0Nqdi9vQXBELzZBS1MvK2dDbFAvb0FwYi82QUtZLytnQ212L29BcHovNkFLZS8rZ0NvUC9vQXFMLzZBS2svK2dDeHYvcUFzai82Z0xLLytvQzhBQUxBMnYvNkFOeC8rb0Rjd0FMQTNmLzZnT1IvK2dEay8vcUE1WC82QU9XQUFzRG1QL29BNThBQ3dPbkFBc0RxQUFNQTZrQURBT3NBQXdEcy8vb0E3Z0FDd081LytnRHZ2L29BOEFBQ3dQTS8rZ0R6di9vQTgvLzZBUFovK29EMi8vb0E5My82Z1BoQUFzRDR3QUxBK1VBQ3dQcy8rZ0VDUC9vQkFyLzZBUU0vK2dFRHYvb0JCRC82QVFTLytnRUZQL29CQmIvNkFRYy8rb0VIdi9xQkNELzZnUWkvK29FSlAvcUJDYi82Z1FvLytvRUt2L29CQ3ovNkFRdS8rZ0VNUC9xQkRMLzZBUkNBQXNFUkFBTEJFWUFDd0FNQUZ6LzdRQmUvKzBBN2YvdEF2UC83UUwxLyswQzkvL3RBNWYvN1FQRC8rMEQwZi90QSt2LzdRUlEvKzBFV1AvdEFBd0FYUC95QUY3LzhnRHQvL0lDOC8veUF2WC84Z0wzLy9JRGwvL3lBOFAvOGdQUi8vSUQ2Ly95QkZELzhnUlkvL0lBSHdCYS8vUUFYUC95QUYzLzlBQmUvL01BdlAvMEFPMy84Z0VaLy9RQ2dmLzBBb0wvOUFMdy8vUUM4Ly96QXZYLzh3TDMvL01EYy8vMEE1Yi85QU9YLy9JRG4vLzBBNmYvOUFPNC8vUUR3UC8wQThQLzhnUFIvL0lENGYvMEErUC85QVBsLy9RRDYvL3lCRUwvOUFSRS8vUUVSdi8wQkZELzhnUlkvL0lBZVFBRy84b0FDLy9LQURqLzBnQTYvOVFBUFAvMEFEMy8wd0JSLzlFQVV2L1JBRlQvMFFCYS8rWUFYUC92QUYzLzVnQzgvK1lBd1AvUkFOSC8wZ0RWLzlJQTJmLzBBTjMvN1FEZy8rRUE2Ly9SQU8zLzd3RHYvOUVBOFAvUkFQTC8wUUR6LzlFQTlQL1JBUGYvMFFENS85RUErdi9SQVAzLzBRRC8vOUVCQlAvUkFSai8xQUVaLytZQk12L1NBVFgvMFFFNi85SUJSUC9SQVVuLzBRRnMvOG9CYmYvS0FXLy95Z0Z3LzhvQmNmL0tBbWIvMHdKMy85RUNnZi9tQW9MLzVnSy8vOUVDd2YvUkFzUC8wUUxFLzlFQzIvL1NBdDMvMGdMZi85SUM3Ly9UQXZELzVnTHgvOU1EV1AvVEEyZi8wd05vLy9RRGF2L1RBMjMvMFFOei8rWURndi90QTQ3LzBnT1AvL1FEa3YvUkE1VC8wUU9XLytZRGwvL3ZBNW4vMFFPZS85RURuLy9tQTZiLzB3T24vK1lEcVAvS0E2bi95Z09zLzhvRHJ2L1JBN1QvMFFPMy85UUR1UC9tQTcvLzB3UEEvK1lEd3YvMEE4UC83d1BRLy9RRDBmL3ZBOVgvMFFQWC85RUQ0UC90QStILzVnUGkvKzBENC8vbUErVC83UVBsLytZRDV2L2hBK24vMFFQcS8vUUQ2Ly92QkVILzB3UkMvK1lFUS8vVEJFVC81Z1JGLzlNRVJ2L21CRXIvMFFSTS85RUVUZi9TQkUvLzlBUlEvKzhFVWYvaEJGUC80UVJXLzlFRVYvLzBCRmovN3dSai85RUVaZi9SQkdmLzBRUnEvOU1BSFFBNC83NEFXdi92QUYzLzd3QzgvKzhBMGYrK0FOWC92Z0VaLys4Qk12KytBVHIvdmdLQi8rOENndi92QXR2L3ZnTGQvNzRDMy8rK0F2RC83d056Lys4RGp2KytBNWIvN3dPZi8rOERwLy92QTdqLzd3UEEvKzhENGYvdkErUC83d1BsLys4RVF2L3ZCRVQvN3dSRy8rOEVUZisrQURRQU9QL21BRHIvNXdBOC8vSUFQZi9uQUZ6LzhRRFIvK1lBMWYvbUFObi84Z0RkLys0QTRQL29BTzMvOFFFWS8rY0JNdi9tQVRyLzVnSm0vK2NDMi8vbUF0My81Z0xmLytZQzcvL25BdkgvNXdOWS8rY0RaLy9uQTJqLzhnTnEvK2NEZ3YvdUE0Ny81Z09QLy9JRGwvL3hBNmIvNXdPMy8rY0R2Ly9uQThMLzhnUEQvL0VEMFAveUE5SC84UVBnLys0RDR2L3VBK1QvN2dQbS8rZ0Q2di95QSt2LzhRUkIvK2NFUS8vbkJFWC81d1JOLytZRVQvL3lCRkQvOFFSUi8rZ0VVLy9vQkZmLzhnUlkvL0VFYXYvbkFJZ0FKUUFRQUNmLzZBQXIvK2dBTS8vb0FEWC82QUE0LytBQU92L2dBRDMvM3dDRC8rZ0Frdi9vQUpmLzZBQ3hBQkFBc3Yvb0FMTUFFQURSLytBQTB2L29BTk1BRUFEVi8rQUEzQUFRQU9ELzRRRHhBQkFBK1AvZ0FRTUFFQUVILytnQkRBQVFBUmIvNkFFWS8rQUJHdi9vQVJ6LzZBRWUvK2dCSVAvb0FUTC80QUU0LytnQk92L2dBVkVBRUFGVi8rZ0NLUC9vQWluLzZBSXIvK2dDTFAvb0Frd0FFQUpOQUJBQ1RnQVFBazhBRUFKUUFCQUNVUUFRQWxJQUVBSlQvK2dDWGYvb0FsNy82QUpmLytnQ1lQL29BbUgvNkFKbS85OENnd0FRQW9VQUVBS0hBQkFDaWYvb0Fvdi82QUtOLytnQ2ovL29BcDMvNkFLZi8rZ0NvZi9vQXFQLzZBTEYvK2dDeC8vb0Fzbi82QUxiLytBQzNmL2dBdC8vNEFMdi85OEM4Zi9mQXZyLzZBTlRBQkFEVi8vb0Exai8zd05iQUJBRFpQL29BMmYvM3dOcS85OERnd0FRQTRyLzZBT04vK2dEanYvZ0E2Yi8zd092QUJBRHQvL2dBN3IvNkFPOS8rZ0R2Ly9mQThVQUVBUEhBQkFEMlAvb0E5ci82QVBjLytnRDV2L2hBK2YvNEFQdEFCQUQ3Z0FRQSs4QUVBUHhBQkFEOHdBUUEvVUFFQVAzQUJBRCtRQVFBL3NBRUFQOUFCQUQvd0FRQkFFQUVBUURBQkFFQlFBUUJCdi82QVFkLytnRUgvL29CQ0gvNkFRai8rZ0VKZi9vQkNmLzZBUXAvK2dFSy8vb0JDMy82QVF2LytnRU1mL29CRUgvM3dSRC85OEVSZi9mQkUzLzRBUlIvK0VFVXYvZ0JGUC80UVJVLytBRWFBQVFCR2tBRUFScS85OEVxdi9vQUMwQU9QL3hBRHIvOUFBOC8vUUFQZi93QU5ILzhRRFQvL1VBMWYveEFObi85QURjLy9VQTNmL3pBUmovOUFFeS8vRUJPdi94QVZILzlRSm0vL0FDMi8veEF0My84UUxmLy9FQzcvL3dBdkgvOEFOWS8vQURaLy93QTJqLzlBTnEvL0FEZ3YvekE0Ny84UU9QLy9RRHB2L3dBN2YvOUFPLy8vQUR3di8wQTlELzlBUGcvL01ENHYvekErVC84d1BxLy9RRDdmLzFCRUgvOEFSRC8vQUVSZi93QkUzLzhRUlAvL1FFVi8vMEJHai85UVJxLy9BQVdRQWxBQThBT1AvbUFEci81Z0E4QUE0QVBmL21BTEVBRHdDekFBOEEwZi9tQU5NQURnRFYvK1lBMlFBT0FOd0FEZ0RkQUFzQTRQL2xBUEVBRHdENC8rZ0JBd0FQQVF3QUR3RVkvK1lCTXYvbUFUci81Z0ZSQUE0Q1RBQVBBazBBRHdKT0FBOENUd0FQQWxBQUR3SlJBQThDVWdBUEFtYi81Z0tEQUE4Q2hRQVBBb2NBRHdMYi8rWUMzZi9tQXQvLzVnTHYvK1lDOGYvbUExTUFEd05ZLytZRFd3QVBBMmYvNWdOb0FBNERhdi9tQTRJQUN3T0RBQThEanYvbUE0OEFEZ09tLytZRHJ3QVBBN2YvNWdPLy8rWUR3Z0FPQThVQUR3UEhBQThEMEFBT0ErQUFDd1BpQUFzRDVBQUxBK2IvNVFQbi8rZ0Q2Z0FPQSswQURnUHVBQThEN3dBUEEvRUFEd1B6QUE4RDlRQVBBL2NBRHdQNUFBOEQrd0FQQS8wQUR3UC9BQThFQVFBUEJBTUFEd1FGQUE4RVFmL21CRVAvNWdSRi8rWUVUZi9tQkU4QURnUlIvK1VFVXYvb0JGUC81UVJVLytnRVZ3QU9CR2dBRGdScEFBOEVhdi9tQUM0QU9QL2pBRHovNVFBOS8rUUEwZi9qQU5QLzVRRFYvK01BMmYvbEFOei81UURkLytrQThmL3FBUVAvNmdFeS8rTUJPdi9qQVZILzVRSm0vK1FDMi8vakF0My80d0xmLytNQzcvL2tBdkgvNUFOWS8rUURaLy9rQTJqLzVRTnEvK1FEZ3YvcEE0Ny80d09QLytVRHB2L2tBNy8vNUFQQy8rVUQwUC9sQStELzZRUGkvK2tENVAvcEErci81UVB0LytVRDd2L3FCRUgvNUFSRC8rUUVSZi9rQkUzLzR3UlAvK1VFVi8vbEJHai81UVJwLytvRWF2L2tBQ0VBT1AvaUFEei81QURSLytJQTAvL2tBTlgvNGdEWi8rUUEzUC9rQU4zLzZRRHgvK3NCQS8vckFUTC80Z0U2LytJQlVmL2tBdHYvNGdMZC8rSUMzLy9pQTJqLzVBT0MvK2tEanYvaUE0Ly81QVBDLytRRDBQL2tBK0QvNlFQaS8ra0Q1UC9wQStyLzVBUHQvK1FEN3YvckJFMy80Z1JQLytRRVYvL2tCR2ovNUFScC8rc0FGd0E0LytzQVBmL3pBTkgvNndEVi8rc0JNdi9yQVRyLzZ3Sm0vL01DMi8vckF0My82d0xmLytzQzcvL3pBdkgvOHdOWS8vTURaLy96QTJyLzh3T08vK3NEcHYvekE3Ly84d1JCLy9NRVEvL3pCRVgvOHdSTi8rc0Vhdi96QURBQVVmL3ZBRkwvN3dCVS8rOEFYUC93QU1ELzd3RHIvKzhBN2Yvd0FPLy83d0R3Lys4QTh2L3ZBUFAvN3dEMC8rOEE5Ly92QVBuLzd3RDYvKzhBL2YvdkFQLy83d0VFLys4Qk5mL3ZBVVQvN3dGSi8rOENkLy92QXIvLzd3TEIvKzhDdy8vdkFzVC83d050Lys4RGt2L3ZBNVQvN3dPWC8vQURtZi92QTU3Lzd3T3UvKzhEdFAvdkE4UC84QVBSLy9BRDFmL3ZBOWYvN3dQcC8rOEQ2Ly93QkVyLzd3Uk0vKzhFVVAvd0JGYi83d1JZLy9BRVkvL3ZCR1gvN3dSbi8rOEFIUUFHLy9JQUMvL3lBRnIvOVFCZC8vVUF2UC8xQVJuLzlRRnMvL0lCYmYveUFXLy84Z0Z3Ly9JQmNmL3lBb0gvOVFLQy8vVUM4UC8xQTNQLzlRT1cvL1VEbi8vMUE2Zi85UU9vLy9JRHFmL3lBNnovOGdPNC8vVUR3UC8xQStILzlRUGovL1VENWYvMUJFTC85UVJFLy9VRVJ2LzFBQVFBK1AvdEErZi83UVJTLyswRVZQL3RBRlFBUi8vd0FFai84QUJKLy9BQVMvL3dBRlAvNndCVi8vQUFrLy93QUpqLzhBQzYvL0FBeC8vd0FNai84QUQyLy9BQkF2L3dBUmYvNndFZC8vQUJJZi93QVRuLzhBRkwvL0FCVFAvd0FWYi84QUp1Ly9BQ2IvL3dBbkQvOEFKeC8vQUNjdi93QW5qLzZ3SjUvK3NDZXYvckFudi82d0o4LytzQ2l2L3dBb3ovOEFLTy8vQUNrUC93QXBMLzhBS1UvL0FDbHYvd0Fwai84QUthLy9BQ25QL3dBcDcvOEFLZy8vQUNvdi93QXFULzhBTEcvK3NDeVAvckFzci82d05yLy9BRGNmL3JBM2YvNndPUi8vQURrLy9yQTVYLzhBT1kvL0FEcy8vd0E3bi84QU8rLy9BRHpQL3dBODcvOEFQUC8vQUQyZi9yQTl2LzhBUGQvK3NEN1Avd0JBai84QVFLLy9BRURQL3dCQTcvOEFRUS8vQUVFdi93QkJULzhBUVcvL0FFSFAvckJCNy82d1FnLytzRUl2L3JCQ1QvNndRbS8rc0VLUC9yQkNyLzhBUXMvL0FFTHYvd0JERC82d1F5Ly9BQWp3QUdBQTBBQ3dBTkFFWC84QUJILzdBQVNQK3dBRW4vc0FCTC83QUFVLy9XQUZYL3NBQmFBQXNBWFFBTEFKUC9zQUNZLzdBQXV2K3dBTHdBQ3dESS83QUE4Zit2QVBiL3NBRUMvN0FCQS8rdkFSZi8xZ0VaQUFzQkhmK3dBU0gvc0FFNS83QUJTLyt3QVV6L3NBRlcvN0FCYkFBTkFXMEFEUUZ2QUEwQmNBQU5BWEVBRFFKbi8vQUNhUC93QW1uLzhBSnEvL0FDYS8vd0Ftei84QUp0Ly9BQ2J2K3dBbS8vc0FKdy83QUNjZit3QW5ML3NBSjQvOVlDZWYvV0Fuci8xZ0o3LzlZQ2ZQL1dBb0VBQ3dLQ0FBc0NoUC93QW9iLzhBS0kvL0FDaXYrd0Fvei9zQUtPLzdBQ2tQK3dBcEwvc0FLVS83QUNsdit3QXBqL3NBS2EvN0FDblArd0FwNy9zQUtnLzdBQ292K3dBcVQvc0FMRy85WUN5UC9XQXNyLzFnTHdBQXNEYS8rd0EzSC8xZ056QUFzRGQvL1dBNUQvOEFPUi83QURrLy9XQTVYL3NBT1dBQXNEbVArd0E1OEFDd09uQUFzRHFBQU5BNmtBRFFPc0FBMERzUC93QTdQL3NBTzRBQXNEdWYrd0E3Ny9zQVBBQUFzRHh2L3dBOGovOEFQTS83QUR6dit3QTgvL3NBUFovOVlEMi8rd0E5My8xZ1BoQUFzRDR3QUxBK1VBQ3dQcy83QUQ3dit2QS9ELzhBUHkvL0FEOVAvd0EvYi84QVA0Ly9BRCt2L3dBL3ovOEFQKy8vQUVBUC93QkFMLzhBUUUvL0FFQnYvd0JBai9zQVFLLzdBRURQK3dCQTcvc0FRUS83QUVFdit3QkJUL3NBUVcvN0FFSFAvV0JCNy8xZ1FnLzlZRUl2L1dCQ1QvMWdRbS85WUVLUC9XQkNyL3NBUXMvN0FFTHYrd0JERC8xZ1F5LzdBRVFnQUxCRVFBQ3dSR0FBc0VhZit2QUFnQThRQVFBUGovOEFFREFCQUQ1Ly93QSs0QUVBUlMvL0FFVlAvd0JHa0FFQUJGQUVjQURBQklBQXdBU1FBTUFFc0FEQUJWQUF3QWt3QU1BSmdBREFDNkFBd0F4d0FNQU1nQURBRHhBQmdBOWdBTUFQai85d0VDQUF3QkF3QVlBUjBBREFFaEFBd0JPUUFNQVVzQURBRk1BQXdCVmdBTUFtNEFEQUp2QUF3Q2NBQU1BbkVBREFKeUFBd0NpZ0FNQW93QURBS09BQXdDa0FBTUFwSUFEQUtVQUF3Q2xnQU1BcGdBREFLYUFBd0NuQUFNQXA0QURBS2dBQXdDb2dBTUFxUUFEQU5yQUF3RGtRQU1BNVVBREFPWUFBd0Rzd0FNQTdrQURBTytBQXdEekFBTUE4NEFEQVBQQUF3RDJ3QU1BK2YvOXdQc0FBd0Q3Z0FZQkFnQURBUUtBQXdFREFBTUJBNEFEQVFRQUF3RUVnQU1CQlFBREFRV0FBd0VLZ0FNQkN3QURBUXVBQXdFTWdBTUJGTC85d1JVLy9jRWFRQVlBQjhBV3YvMEFGei84QUJkLy9RQXZQLzBBTzMvOEFEeC8vTUJBLy96QVJuLzlBS0IvL1FDZ3YvMEF2RC85QU56Ly9RRGx2LzBBNWYvOEFPZi8vUURwLy8wQTdqLzlBUEEvL1FEdy8vd0E5SC84QVBoLy9RRDQvLzBBK1gvOUFQci8vQUQ3di96QkVMLzlBUkUvL1FFUnYvMEJGRC84QVJZLy9BRWFmL3pBQW9BQnYvV0FBdi8xZ0ZzLzlZQmJmL1dBVy8vMWdGdy85WUJjZi9XQTZqLzFnT3AvOVlEclAvV0FBb0FCdi8xQUF2LzlRRnMvL1VCYmYvMUFXLy85UUZ3Ly9VQmNmLzFBNmovOVFPcC8vVURyUC8xQUNFQVRBQWdBRThBSUFCUUFDQUFVLytBQUZmL2tBRVgvNEFDZVArQUFubi9nQUo2LzRBQ2UvK0FBbnovZ0FMRy80QUN5UCtBQXNyL2dBTFMvNUFDMVArUUF0Yi9rQUxZLzVBQzJ2K1FBM0gvZ0FOMy80QURrLytBQTVyL2tBUFovNEFEM2YrQUJCei9nQVFlLzRBRUlQK0FCQ0wvZ0FRay80QUVKditBQkNqL2dBUXcvNEFBQWdlS0FBUUFBQXBlRWI0QUlRQWRBQUFBRWYvTy80OEFFdi8xLysvL2lQLzAvN3YvZi8vMUFBei9xZitpLzhrQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rVUFBQUFBLytqL3lRQUEvL01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFSQUFELzVRQVJBQUFBQUFBQUFBQUFBUC9qQUFBQUFBQUEvK1QvNUFBQUFCSUFFUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzRRQUFBQUFBQUFBQUFBQUFBQUFBQUFELzVRQUFBQUQvNnYvVkFBQUFBUC9yLytyL212L3BBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvK01BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rWUFBQUFBQUFBQUFBQUEvKzBBQUFBVS8rOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC83UUFBQUFBQUFBQUFBQUFBQUFBQUFBRC95Lys0LzN6L2Z2L2tBQUFBQVArZEFBOEFFUCtoLzhRQUVBQVFBQUFBQVAreEFBRC9KZ0FBLzUzL3MvOFkvNVAvOFArUC80ei9FQUFBLzVML2N2OE0vdy8vdlFBQUFBRC9SQUFGQUFmL1MvK0dBQWNBQndBQUFBRC9QZ0FBL25vQUFQOUUvMnIrWXY4ei85SC9MUDhuQUFBQUFBQUFBQUFBQVAvWUFBQUFBQUFBLyt3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvN0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvWS82TUFBUC9oQUFBQUFQL2xBQUFBQVAvcEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rWUFBUC9BLytrQUFBQUFBQUFBQUFBQUFBRC9ld0FBQUFEL3YvL0svckFBQVA5eC91My8xQUFBLzFIL0VRQUFBQUFBRXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9KQUE4QUFQL1pBQUFBQUFBQS8vTUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8zYi80ZjY4LytiLzh3QUFBQUFBQUFBQS8vVUFBUDg0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC9xQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOVFBQUFBRC84d0FBQUFELzBnQUFBQUQvNUFBQUFBQUFBQUFBQUFEL3RRQUEveDhBQVAvVUFBRC8yd0FBQUFELzBnQUFBQUFBQUFBUi8rSC8wUUFSLytjQUFBQUEvK3NBQUFBQS8rc0FBQUFPQUFBQUFBQUFBQUFBQUFBQUFBRC81Z0FBLzlJQUFBQUFBQUFBQUFBQUFBQUFBUC9zQUFBQUFQL2ovNkFBQVArL0FCRUFFZi9aLytJQUVnQVNBQUFBQVAraUFBMy9MUUFBLzcvLzZmL00vOWovOFArMy84Yi9vQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC80UUFBQUE3LzdRQUFBQUFBQUFBQUFBRC8xUUFBLzRVQUFQL2hBQUQveEFBQUFBRC8zd0FBQUFBQUFBQUEvK1VBQUFBQS8rWUFBQUFBLytzQUFBQUEvKzBBQUFBQUFBQUFBQUFBQUEwQUFBQUFBQUQvNndBQUFBQUFBQUFBQUFBQUFBQUFBQUQveWdBQS8rbi91Ly9wQUFBQUFQKzlBQUFBRWdBQUFBQUFBQUFTQUFBQUFQK2xBQUQrYlFBQS83MEFBUCtKLzVvQUFQK1IvOUlBQUFBQUFBRC84UUFBQUFBQUFBQUEvNzBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVAvMUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQLzFBQUQvOGdBQUFBRC80d0FBQUFBQUFBQUEvL0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOFFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOHdBQUFBQUFBQUFBLy9JQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQK1lBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC94QUFELzhBQUFBQUQvZUFBQUFBQUFBQUFBLy9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFELzZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvOWNBQUFBQUFBLy84UUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBLzVVQUFQL3pBQUFBQUFBQUFBRC84UUFBQUFBQUFBQUFBQklBQUFBQUFBQUFBQUFRLyt3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQK0ZBQUQvN1FBQUFBQUFBQUFBLzlnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQL3NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQS8rd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQvOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC93QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVArVi84TUFBQUFBQUFBQUFBQUFBQUFBQUFBQS80Z0FBQUFBQUFEL3hRQUFBQUQvN0FBQS84Ny9zQUFBQUFBQUFBQUFBQUFBQUFBQUFBRC9WZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEvL1VBQUFBQUFBQUFBQUFBLzhBQUFBQUEvdlVBQUFBQS84ai9yZi9uLytzQUFQL3dBQUFBQUFBQS84a0FBQUFBQUFBQUFBQUFBQUFBQUFBQS85My8yUUFBQUFBQUFQOTVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUC8xQUFBQUFBQUFBQUFBQUFBQUFBSUFlQUFHQUFZQUFBQUxBQXNBQVFBUUFCQUFBZ0FTQUJJQUF3QWxBQ2tBQkFBc0FEUUFDUUE0QUQ0QUVnQkZBRWNBR1FCSkFFa0FIQUJNQUV3QUhRQlJBRlFBSGdCV0FGWUFJZ0JhQUZvQUl3QmNBRjRBSkFDS0FJb0FKd0N3QUxNQUtBQzhBTHdBTEFEQUFNQUFMUURHQU1ZQUxnRFRBTlFBTHdEV0FOWUFNUURaQU5rQU1nRGJBTjBBTXdEZkFOOEFOZ0RoQU9FQU53RGpBT01BT0FEbEFPVUFPUURyQU9zQU9nRHRBTzBBT3dEMkFQWUFQQUQ3QVBzQVBRRDlBUDRBUGdFREFRUUFRQUVKQVFrQVFnRU1BUXdBUXdFWEFSa0FSQUVyQVMwQVJ3RXdBVEFBU2dFeUFUSUFTd0ZKQVVrQVRBRnNBWElBVFFGMkFYY0FWQUlvQWlnQVZnSXFBaXNBVndKSEFrZ0FXUUpLQWtvQVd3Sk1BbklBWEFKM0Fud0Fnd0tCQXBFQWlRS1RBcHdBbWdLbEFxY0FwQUtwQXFrQXB3S3JBcXNBcUFLdEFxMEFxUUt2QXE4QXFnS3lBcklBcXdLMEFyUUFyQUsyQXJZQXJRSzRBcmdBcmdLNkFyb0Fyd0s4QXJ3QXNBSytBc29Bc1FMTUFzd0F2Z0xPQXM0QXZ3TFFBdEFBd0FMYkF0c0F3UUxkQXQwQXdnTGZBdDhBd3dMaEF1RUF4QUxqQXVNQXhRTGxBdVVBeGdMbkF1Y0F4d0xwQXVrQXlBTHJBdXNBeVFMdEF1MEF5Z0x2QXZjQXl3TlRBMWdBMUFOYkEyb0EyZ050QTIwQTZnTnhBM0VBNndOekEzTUE3QU4zQTNjQTdRTjZBM3NBN2dOOUE0WUE4QU9JQTRvQStnT01BNUVBL1FPVEE1a0JBd09mQTZBQkNnT2lBNklCREFPa0E2UUJEUU9tQTZrQkRnT3NBN0VCRWdPekE3TUJHQU8zQTdnQkdRTzlBOGdCR3dQTEE4d0JKd1BPQTlFQktRUFlBOWtCTFFQZEE5MEJMd1BmQStVQk1BUHFBK3NCTndQdkJCY0JPUVFaQkJrQllnUWJCQ2dCWXdRd0JEQUJjUVF6QkRNQmNnUTFCRFVCY3dSQkJFWUJkQVJKQkVrQmVnUkxCRXNCZXdSTkJFMEJmQVJQQkZBQmZRUlZCRmdCZndSYkJGc0Jnd1JkQkY0QmhBUmdCR0FCaGdSa0JHUUJod1JtQkdZQmlBUnFCR29CaVFTcUJLb0JpZ0FDQVRvQUJnQUdBQjBBQ3dBTEFCMEFFQUFRQUI0QUVnQVNBQjRBSmdBbUFBRUFKd0FuQUFRQUtBQW9BQU1BS1FBcEFBVUFMQUF0QUFJQUxnQXVBQXdBTHdBdkFBa0FNQUF3QUFvQU1RQXlBQUlBTXdBekFBTUFOQUEwQUFzQU9BQTRBQVlBT1FBNUFBd0FPZ0E2QUEwQU93QTdBQkFBUEFBOEFBNEFQUUE5QUE4QVBnQStBQkVBUlFCRkFCTUFSZ0JHQUJVQVJ3QkhBQlFBU1FCSkFCWUFUQUJNQUJjQVVRQlNBQmNBVXdCVEFCZ0FWQUJVQUJVQVZnQldBQm9BV2dCYUFCa0FYQUJjQUJzQVhRQmRBQmtBWGdCZUFCd0FpZ0NLQUJVQXNBQ3dBQWNBc2dDeUFBTUF2QUM4QUJrQXdBREFBQmNBeGdER0FCVUEwd0RVQUI4QTFnRFdBQUlBMlFEWkFBNEEyd0RjQUFJQTNRRGRBQklBM3dEZkFBSUE0UURoQUFJQTR3RGpBQjhBNVFEbEFCOEE2d0RyQUFnQTdRRHRBQnNBOWdEMkFCVUErd0Q3QUNBQS9RRDlBQ0FBL2dEK0FCVUJBd0VFQUNBQkNRRUpBQ0FCRndFWEFCZ0JHQUVZQUEwQkdRRVpBQmtCS3dFckFCVUJMQUVzQUFjQkxRRXRBQWdCTUFFd0FBa0JNZ0V5QUFrQlNRRkpBQWdCYkFGdEFCMEJiZ0Z1QUI0QmJ3RnhBQjBCY2dGeUFCNEJkZ0YzQUI0Q0tBSW9BQVFDS2dJckFBTUNSd0pJQUFNQ1NnSktBQVlDVXdKVEFBUUNWQUpYQUFVQ1dBSmNBQUlDWFFKaEFBTUNZZ0psQUF3Q1pnSm1BQThDWndKdEFCTUNiZ0p1QUJRQ2J3SnlBQllDZHdKM0FCY0NlQUo4QUJnQ2dRS0NBQmtDaEFLRUFCTUNoZ0tHQUJNQ2lBS0lBQk1DaVFLSkFBUUNpZ0tLQUJRQ2l3S0xBQVFDakFLTUFCUUNqUUtOQUFRQ2pnS09BQlFDandLUEFBUUNrQUtRQUJRQ2tRS1JBQU1Da3dLVEFBVUNsQUtVQUJZQ2xRS1ZBQVVDbGdLV0FCWUNsd0tYQUFVQ21BS1lBQllDbVFLWkFBVUNtZ0thQUJZQ213S2JBQVVDbkFLY0FCWUNwUUtsQUFJQ3BnS21BQmNDcHdLbkFBSUNxUUtwQUFJQ3F3S3JBQUlDclFLdEFBSUNyd0t2QUFJQ3NnS3lBQXdDdEFLMEFBa0N0Z0syQUFvQ3VBSzRBQW9DdWdLNkFBb0N2QUs4QUFvQ3ZnSytBQUlDdndLL0FCY0N3QUxBQUFJQ3dRTEJBQmNDd2dMQ0FBSUN3d0xFQUJjQ3hRTEZBQU1DeGdMR0FCZ0N4d0xIQUFNQ3lBTElBQmdDeVFMSkFBTUN5Z0xLQUJnQ3pBTE1BQm9DemdMT0FCb0MwQUxRQUJvQzJ3TGJBQVlDM1FMZEFBWUMzd0xmQUFZQzRRTGhBQXdDNHdMakFBd0M1UUxsQUF3QzV3TG5BQXdDNlFMcEFBd0M2d0xyQUF3QzdRTHRBQkFDN3dMdkFBOEM4QUx3QUJrQzhRTHhBQThDOGdMeUFCRUM4d0x6QUJ3QzlBTDBBQkVDOVFMMUFCd0M5Z0wyQUJFQzl3TDNBQndEVkFOVUFBVURWUU5XQUFJRFZ3TlhBQU1EV0FOWUFBOERYQU5jQUFFRFhRTmRBQVVEWGdOZUFCRURYd05nQUFJRFlRTmhBQWtEWWdOakFBSURaQU5rQUFNRFpRTmxBQXNEWmdObUFBWURad05uQUE4RGFBTm9BQTREYVFOcEFBSURhZ05xQUE4RGJRTnRBQmNEY1FOeEFCZ0Rjd056QUJrRGR3TjNBQmdEZWdONkFBVURld043QUFjRGZRTitBQUlEZndOL0FBd0RnQU9CQUFrRGdnT0NBQklEaEFPRUFBRURoUU9GQUFjRGhnT0dBQVVEaUFPSkFBSURpZ09LQUFNRGpBT01BQXNEalFPTkFBUURqZ09PQUFZRGp3T1BBQTREa0FPUUFCTURrUU9SQUJZRGt3T1RBQmdEbEFPVUFCVURsUU9WQUJRRGxnT1dBQmtEbHdPWEFCc0RtQU9ZQUJZRG1RT1pBQWdEbndPZkFCa0RvQU9nQUJBRG9nT2lBQkFEcEFPa0FCQURwZ09tQUE4RHB3T25BQmtEcUFPcEFCMERyQU9zQUIwRHJRT3RBQUlEcmdPdUFCY0RzQU93QUJNRHNRT3hBQVVEc3dPekFCWUR0d08zQUEwRHVBTzRBQmtEdlFPOUFBUUR2Z08rQUJRRHZ3Ty9BQThEd0FQQUFCa0R3UVBCQUFJRHdnUENBQTREd3dQREFCc0R4QVBFQUFJRHhnUEdBQk1EeUFQSUFCTUR5d1BMQUFVRHpBUE1BQllEemdQUEFCWUQwQVBRQUE0RDBRUFJBQnNEMkFQWUFBTUQyUVBaQUJnRDNRUGRBQmdEM3dQZkFCVUQ0QVBnQUJJRDRRUGhBQmtENGdQaUFCSUQ0d1BqQUJrRDVBUGtBQklENVFQbEFCa0Q2Z1BxQUE0RDZ3UHJBQnNEOEFQd0FCTUQ4Z1B5QUJNRDlBUDBBQk1EOWdQMkFCTUQrQVA0QUJNRCtnUDZBQk1EL0FQOEFCTUQvZ1ArQUJNRUFBUUFBQk1FQWdRQ0FCTUVCQVFFQUJNRUJnUUdBQk1FQndRSEFBVUVDQVFJQUJZRUNRUUpBQVVFQ2dRS0FCWUVDd1FMQUFVRURBUU1BQllFRFFRTkFBVUVEZ1FPQUJZRUR3UVBBQVVFRUFRUUFCWUVFUVFSQUFVRUVnUVNBQllFRXdRVEFBVUVGQVFVQUJZRUZRUVZBQVVFRmdRV0FCWUVGd1FYQUFJRUdRUVpBQUlFR3dRYkFBTUVIQVFjQUJnRUhRUWRBQU1FSGdRZUFCZ0VId1FmQUFNRUlBUWdBQmdFSVFRaEFBTUVJZ1FpQUJnRUl3UWpBQU1FSkFRa0FCZ0VKUVFsQUFNRUpnUW1BQmdFSndRbkFBTUVLQVFvQUJnRU1BUXdBQmdFTXdRekFBd0VOUVExQUF3RVFRUkJBQThFUWdSQ0FCa0VRd1JEQUE4RVJBUkVBQmtFUlFSRkFBOEVSZ1JHQUJrRVNRUkpBQWtFU3dSTEFBSUVUUVJOQUFZRVR3UlBBQTRFVUFSUUFCc0VWUVJWQUFjRVZnUldBQWdFVndSWEFBNEVXQVJZQUJzRVd3UmJBQmNFWFFSZEFCOEVYZ1JlQUFjRVlBUmdBQWtFWkFSa0FBSUVaZ1JtQUFJRWFnUnFBQThFcWdTcUFBTUFBZ0Z0QUFZQUJnQUhBQXNBQ3dBSEFCQUFFQUFUQUJFQUVRQVhBQklBRWdBVEFDVUFKUUFSQUNjQUp3QUZBQ3NBS3dBRkFDNEFMZ0FjQURNQU13QUZBRFVBTlFBRkFEY0FOd0FaQURnQU9BQUtBRGtBT1FBR0FEb0FPZ0FOQURzQU93QUpBRHdBUEFBU0FEMEFQUUFPQUQ0QVBnQVVBRVVBUlFBYUFFY0FTUUFWQUVzQVN3QVZBRkVBVWdBWUFGTUFVd0FJQUZRQVZBQVlBRlVBVlFBVkFGY0FWd0FiQUZrQVdRQUxBRm9BV2dBQ0FGd0FYQUFXQUYwQVhRQUNBRjRBWGdBTUFJTUFnd0FGQUpJQWtnQUZBSk1Ba3dBVkFKY0Fsd0FGQUpnQW1BQVZBSm9BbWdBTEFMRUFzUUFSQUxJQXNnQUZBTE1Bc3dBUkFMb0F1Z0FWQUx3QXZBQUNBTUFBd0FBWUFNY0F5QUFWQU1vQXlnQUxBTkVBMFFBS0FOSUEwZ0FGQU5NQTB3QUJBTlVBMVFBS0FOa0EyUUFTQU53QTNBQUJBTjBBM1FBUUFPQUE0QUFQQU9zQTZ3QVlBTzBBN1FBV0FPOEE4QUFZQVBFQThRQUVBUElBOUFBWUFQWUE5Z0FWQVBjQTl3QVlBUGdBK0FBREFQa0ErZ0FZQVAwQS9RQVlBUDhBL3dBWUFRSUJBZ0FWQVFNQkF3QUVBUVFCQkFBWUFRY0JCd0FGQVF3QkRBQVJBUllCRmdBRkFSY0JGd0FJQVJnQkdBQU5BUmtCR1FBQ0FSb0JHZ0FGQVJ3QkhBQUZBUjBCSFFBVkFSNEJIZ0FGQVNBQklBQUZBU0VCSVFBVkFUSUJNZ0FLQVRVQk5RQVlBVGdCT0FBRkFUa0JPUUFWQVRvQk9nQUtBVVFCUkFBWUFVa0JTUUFZQVVzQlRBQVZBVkVCVVFBQkFWVUJWUUFGQVZZQlZnQVZBV2tCYWdBWEFXd0JiUUFIQVc0QmJnQVRBVzhCY1FBSEFYSUJjZ0FUQVhZQmR3QVRBaWdDS1FBRkFpc0NMQUFGQWtZQ1JnQVhBa3dDVWdBUkFsTUNVd0FGQWwwQ1lRQUZBbUlDWlFBR0FtWUNaZ0FPQW1jQ2JRQWFBbTRDY2dBVkFuY0Nkd0FZQW5nQ2ZBQUlBbjBDZ0FBTEFvRUNnZ0FDQW9NQ2d3QVJBb1FDaEFBYUFvVUNoUUFSQW9ZQ2hnQWFBb2NDaHdBUkFvZ0NpQUFhQW9rQ2lRQUZBb29DaWdBVkFvc0Npd0FGQW93Q2pBQVZBbzBDalFBRkFvNENqZ0FWQW84Q2p3QUZBcEFDa0FBVkFwSUNrZ0FWQXBRQ2xBQVZBcFlDbGdBVkFwZ0NtQUFWQXBvQ21nQVZBcHdDbkFBVkFwMENuUUFGQXA0Q25nQVZBcDhDbndBRkFxQUNvQUFWQXFFQ29RQUZBcUlDb2dBVkFxTUNvd0FGQXFRQ3BBQVZBcklDc2dBY0FyOEN2d0FZQXNFQ3dRQVlBc01DeEFBWUFzVUN4UUFGQXNZQ3hnQUlBc2NDeHdBRkFzZ0N5QUFJQXNrQ3lRQUZBc29DeWdBSUF0RUMwUUFaQXRJQzBnQWJBdE1DMHdBWkF0UUMxQUFiQXRVQzFRQVpBdFlDMWdBYkF0Y0Mxd0FaQXRnQzJBQWJBdGtDMlFBWkF0b0MyZ0FiQXRzQzJ3QUtBdDBDM1FBS0F0OEMzd0FLQXVFQzRRQUdBdUlDNGdBTEF1TUM0d0FHQXVRQzVBQUxBdVVDNVFBR0F1WUM1Z0FMQXVjQzV3QUdBdWdDNkFBTEF1a0M2UUFHQXVvQzZnQUxBdXNDNndBR0F1d0M3QUFMQXUwQzdRQUpBdThDN3dBT0F2QUM4QUFDQXZFQzhRQU9BdklDOGdBVUF2TUM4d0FNQXZRQzlBQVVBdlVDOVFBTUF2WUM5Z0FVQXZjQzl3QU1Bdm9DK2dBRkExTURVd0FSQTFjRFZ3QUZBMWdEV0FBT0Exc0RXd0FSQTE0RFhnQVVBMlFEWkFBRkEyY0Rad0FPQTJnRGFBQVNBMm9EYWdBT0Eyc0Rhd0FWQTIwRGJRQVlBMjhEYndBTEEzRURjUUFJQTNNRGN3QUNBM1lEZGdBTEEzY0Rkd0FJQTNnRGVBQUxBMzhEZndBY0E0SURnZ0FRQTRNRGd3QVJBNG9EaWdBRkE0MERqUUFGQTQ0RGpnQUtBNDhEandBU0E1QURrQUFhQTVFRGtRQVZBNUlEa2dBWUE1TURrd0FJQTVRRGxBQVlBNVVEbFFBVkE1WURsZ0FDQTVjRGx3QVdBNWdEbUFBVkE1a0RtUUFZQTVvRG1nQWJBNTREbmdBWUE1OERud0FDQTZBRG9BQUpBNklEb2dBSkE2UURwQUFKQTZZRHBnQU9BNmNEcHdBQ0E2Z0RxUUFIQTZ3RHJBQUhBNjREcmdBWUE2OERyd0FSQTdBRHNBQWFBN01Ec3dBVkE3UUR0QUFZQTdjRHR3QU5BN2dEdUFBQ0E3a0R1UUFWQTdvRHVnQUZBNzBEdlFBRkE3NER2Z0FWQTc4RHZ3QU9BOEFEd0FBQ0E4SUR3Z0FTQThNRHd3QVdBOFVEeFFBUkE4WUR4Z0FhQThjRHh3QVJBOGdEeUFBYUE4d0R6QUFWQTg0RHp3QVZBOUFEMEFBU0E5RUQwUUFXQTlVRDFRQVlBOWNEMXdBWUE5Z0QyQUFGQTlrRDJRQUlBOW9EMmdBRkE5c0Qyd0FWQTl3RDNBQUZBOTBEM1FBSUErQUQ0QUFRQStFRDRRQUNBK0lENGdBUUErTUQ0d0FDQStRRDVBQVFBK1VENVFBQ0ErWUQ1Z0FQQStjRDV3QURBK2tENlFBWUErb0Q2Z0FTQStzRDZ3QVdBK3dEN0FBVkErMEQ3UUFCQSs0RDdnQUVBKzhEN3dBUkEvQUQ4QUFhQS9FRDhRQVJBL0lEOGdBYUEvTUQ4d0FSQS9RRDlBQWFBL1VEOVFBUkEvWUQ5Z0FhQS9jRDl3QVJBL2dEK0FBYUEva0QrUUFSQS9vRCtnQWFBL3NEK3dBUkEvd0QvQUFhQS8wRC9RQVJBLzREL2dBYUEvOEQvd0FSQkFBRUFBQWFCQUVFQVFBUkJBSUVBZ0FhQkFNRUF3QVJCQVFFQkFBYUJBVUVCUUFSQkFZRUJnQWFCQWdFQ0FBVkJBb0VDZ0FWQkF3RURBQVZCQTRFRGdBVkJCQUVFQUFWQkJJRUVnQVZCQlFFRkFBVkJCWUVGZ0FWQkJzRUd3QUZCQndFSEFBSUJCMEVIUUFGQkI0RUhnQUlCQjhFSHdBRkJDQUVJQUFJQkNFRUlRQUZCQ0lFSWdBSUJDTUVJd0FGQkNRRUpBQUlCQ1VFSlFBRkJDWUVKZ0FJQkNjRUp3QUZCQ2dFS0FBSUJDa0VLUUFGQkNvRUtnQVZCQ3NFS3dBRkJDd0VMQUFWQkMwRUxRQUZCQzRFTGdBVkJDOEVMd0FGQkRBRU1BQUlCREVFTVFBRkJESUVNZ0FWQkRNRU13QUdCRFFFTkFBTEJEVUVOUUFHQkRZRU5nQUxCRGdFT0FBTEJEb0VPZ0FMQkR3RVBBQUxCRDRFUGdBTEJFQUVRQUFMQkVFRVFRQU9CRUlFUWdBQ0JFTUVRd0FPQkVRRVJBQUNCRVVFUlFBT0JFWUVSZ0FDQkVvRVNnQVlCRXdFVEFBWUJFMEVUUUFLQkU4RVR3QVNCRkFFVUFBV0JGRUVVUUFQQkZJRVVnQURCRk1FVXdBUEJGUUVWQUFEQkZZRVZnQVlCRmNFVndBU0JGZ0VXQUFXQkdNRVl3QVlCR1VFWlFBWUJHY0Vad0FZQkdnRWFBQUJCR2tFYVFBRUJHb0VhZ0FPQkhBRWNBQVhCS29FcWdBRkFBRUFBQUFLQWdZRzhBQUVSRVpNVkFBYVkzbHliQUJJWjNKbGF3QjJiR0YwYmdDa0FBUUFBQUFBLy84QUVnQUFBQW9BRkFBZUFDZ0FOQUJCQUVzQVZRQmZBR2tBY3dCOUFJY0FrUUNiQUtVQXJ3QUVBQUFBQVAvL0FCSUFBUUFMQUJVQUh3QXBBRFVBUWdCTUFGWUFZQUJxQUhRQWZnQ0lBSklBbkFDbUFMQUFCQUFBQUFELy93QVNBQUlBREFBV0FDQUFLZ0EyQUVNQVRRQlhBR0VBYXdCMUFIOEFpUUNUQUowQXB3Q3hBQ2dBQmtGYVJTQUFWRU5TVkNBQWZrMVBUQ0FBcUU1QlZpQUExRkpQVFNBQkFGUlZVaUFCTEFBQS8vOEFFd0FEQUEwQUZ3QWhBQ3NBTWdBM0FFUUFUZ0JZQUdJQWJBQjJBSUFBaWdDVUFKNEFxQUN5QUFELy93QVNBQVFBRGdBWUFDSUFMQUE0QUVVQVR3QlpBR01BYlFCM0FJRUFpd0NWQUo4QXFRQ3pBQUQvL3dBU0FBVUFEd0FaQUNNQUxRQTVBRVlBVUFCYUFHUUFiZ0I0QUlJQWpBQ1dBS0FBcWdDMEFBRC8vd0FUQUFZQUVBQWFBQ1FBTGdBNkFENEFSd0JSQUZzQVpRQnZBSGtBZ3dDTkFKY0FvUUNyQUxVQUFQLy9BQk1BQndBUkFCc0FKUUF2QURzQVB3QklBRklBWEFCbUFIQUFlZ0NFQUk0QW1BQ2lBS3dBdGdBQS8vOEFFd0FJQUJJQUhBQW1BREFBUEFCQUFFa0FVd0JkQUdjQWNRQjdBSVVBandDWkFLTUFyUUMzQUFELy93QVRBQWtBRXdBZEFDY0FNUUF6QUQwQVNnQlVBRjRBYUFCeUFId0FoZ0NRQUpvQXBBQ3VBTGdBdVdNeWMyTUVXR015YzJNRVdHTXljMk1FV0dNeWMyTUVXR015YzJNRVdHTXljMk1FV0dNeWMyTUVXR015YzJNRVdHTXljMk1FV0dNeWMyTUVXR05qYlhBRVhtTmpiWEFFWG1OamJYQUVYbU5qYlhBRVhtTmpiWEFFWG1OamJYQUVYbU5qYlhBRVhtTmpiWEFFWG1OamJYQUVYbU5qYlhBRVhtUnNhV2NFWm1Sc2FXY0VabVJzYVdjRVptUnNhV2NFWm1Sc2FXY0VabVJzYVdjRVptUnNhV2NFWm1Sc2FXY0VabVJzYVdjRVptUnNhV2NFWm1SdWIyMEViR1J1YjIwRWJHUnViMjBFYkdSdWIyMEViR1J1YjIwRWJHUnViMjBFYkdSdWIyMEViR1J1YjIwRWJHUnViMjBFYkdSdWIyMEViR1p5WVdNRWNtWnlZV01FY21aeVlXTUVjbVp5WVdNRWNtWnlZV01FY21aeVlXTUVjbVp5WVdNRWNtWnlZV01FY21aeVlXTUVjbVp5WVdNRWNteHBaMkVFZkd4cFoyRUVoR3h1ZFcwRWlteHVkVzBFaW14dWRXMEVpbXh1ZFcwRWlteHVkVzBFaW14dWRXMEVpbXh1ZFcwRWlteHVkVzBFaW14dWRXMEVpbXh1ZFcwRWlteHZZMndFa0d4dlkyd0VsbXh2WTJ3RW5HNTFiWElFb201MWJYSUVvbTUxYlhJRW9tNTFiWElFb201MWJYSUVvbTUxYlhJRW9tNTFiWElFb201MWJYSUVvbTUxYlhJRW9tNTFiWElFb205dWRXMEVxRzl1ZFcwRXFHOXVkVzBFcUc5dWRXMEVxRzl1ZFcwRXFHOXVkVzBFcUc5dWRXMEVxRzl1ZFcwRXFHOXVkVzBFcUc5dWRXMEVxSEJ1ZFcwRXJuQnVkVzBFcm5CdWRXMEVybkJ1ZFcwRXJuQnVkVzBFcm5CdWRXMEVybkJ1ZFcwRXJuQnVkVzBFcm5CdWRXMEVybkJ1ZFcwRXJuTnRZM0FFdEhOdFkzQUV0SE50WTNBRXRITnRZM0FFdEhOdFkzQUV0SE50WTNBRXRITnRZM0FFdEhOdFkzQUV0SE50WTNBRXRITnRZM0FFdEhOek1ERUV1bk56TURFRXVuTnpNREVFdW5Oek1ERUV1bk56TURFRXVuTnpNREVFdW5Oek1ERUV1bk56TURFRXVuTnpNREVFdW5Oek1ERUV1bk56TURJRXdITnpNRElFd0hOek1ESUV3SE56TURJRXdITnpNRElFd0hOek1ESUV3SE56TURJRXdITnpNRElFd0hOek1ESUV3SE56TURJRXdITnpNRE1FeG5Oek1ETUV4bk56TURNRXhuTnpNRE1FeG5Oek1ETUV4bk56TURNRXhuTnpNRE1FeG5Oek1ETUV4bk56TURNRXhuTnpNRE1FeG5Oek1EUUV6SE56TURRRXpITnpNRFFFekhOek1EUUV6SE56TURRRXpITnpNRFFFekhOek1EUUV6SE56TURRRXpITnpNRFFFekhOek1EUUV6SE56TURVRTBuTnpNRFVFMG5Oek1EVUUwbk56TURVRTBuTnpNRFVFMG5Oek1EVUUwbk56TURVRTBuTnpNRFVFMG5Oek1EVUUwbk56TURVRTBuTnpNRFlFMkhOek1EWUUySE56TURZRTJITnpNRFlFMkhOek1EWUUySE56TURZRTJITnpNRFlFMkhOek1EWUUySE56TURZRTJITnpNRFlFMkhOek1EY0Uzbk56TURjRTNuTnpNRGNFM25Oek1EY0Uzbk56TURjRTNuTnpNRGNFM25Oek1EY0Uzbk56TURjRTNuTnpNRGNFM25Oek1EY0UzblJ1ZFcwRTVIUnVkVzBFNUhSdWRXMEU1SFJ1ZFcwRTVIUnVkVzBFNUhSdWRXMEU1SFJ1ZFcwRTVIUnVkVzBFNUhSdWRXMEU1SFJ1ZFcwRTVBQUFBQUVBQUFBQUFBSUFBZ0FEQUFBQUFRQUhBQUFBQVFBWUFBQUFBd0FWQUJZQUZ3QUFBQUlBQ0FBSkFBQUFBUUFKQUFBQUFRQVVBQUFBQVFBRUFBQUFBUUFHQUFBQUFRQUZBQUFBQVFBWkFBQUFBUUFSQUFBQUFRQVRBQUFBQVFBQkFBQUFBUUFLQUFBQUFRQUxBQUFBQVFBTUFBQUFBUUFOQUFBQUFRQU9BQUFBQVFBUEFBQUFBUUFRQUFBQUFRQVNBQnNBT0FQR0JyUUhZQTN3RGZBT0JnNG9EbDRPaEE2eURzWU8yZzd1RHdBUEdnOWNEM29QbUEvS0Qvd1FMaEJDRUhvUWJCQjZFS1lBQVFBQUFBRUFDQUFDQWNRQTN3SG5BYm9CdXdHOEFiMEJ2Z0cvQWNBQndRSENBY01CeEFIRkFjWUJ4d0hJQWNrQnlnSExBY3dCelFIT0FjOEIwQUhSQWRJQjB3SG9BZWtDUkFJN0Flb0I2d0hzQWUwQjdnSHZBZkFCOFFIeUFmTUI5QUgxQWZZQjl3SDRBZmtCK2dIN0Fmd0IvUUgrQWdBQ0FRVGRBZ0lDQXdJRUFnVUNCZ0lIQWdnQ0NRSUtBZ3NDTHdJUEFoQUNFUUlVQWhVQ0ZnSVhBaGdDR1FJYkFod0NIZ0lkQXZ3Qy9RTCtBdjhEQUFNQkF3SURBd01FQXdVREJnTUhBd2dEQ1FNS0F3c0REQU1OQXc0RER3TVFBeEVERWdNVEF4UURGUU1XQXhjREdBTVpBeG9ER3dNY0F4MERIZ01mQXlBRElRTWlBeU1ESkFNbEF5WURKd01vQXlrREtnTXJBeXdETFFNdUF5OERNQU14QXpJRE13TTBBelVETmdNM0F6Z0RPUU02QXpzRFBBTTlBejREUHdOQUEwRURRZ05EQTBRRFJnTkZBMGNEU0FOSkEwb0RTd05NQTAwRFRnTlBBMUFEVVFOU0JLc0VyQVN0Qks0RXJ3U3dCTEVFc2dTekJMUUV0UVMyQkxjRXVBUzVCTG9FdXdTOEJMMEV2Z1MvQk1BRXdRVENCTU1FeEFURkJNWUIvd1RIQk1nRXlRVEtCTXNFekFUTkJNNEV6d1RRQk5FRTBnVFRCTlFFMVFUV0JOZ0UyUVRiQWhvRTNBSU9CTmNDRXdJTkJOb0NEQUlTQUFFQTN3QUlBQ1VBSmdBbkFDZ0FLUUFxQUNzQUxBQXRBQzRBTHdBd0FERUFNZ0F6QURRQU5RQTJBRGNBT0FBNUFEb0FPd0E4QUQwQVBnQmxBR2NBaFFDU0FMQUFzUUN5QUxNQXRBQzFBTFlBdHdDNEFMa0EwUURTQU5NQTFBRFZBTllBMXdEWUFOa0EyZ0RiQU53QTNRRGVBTjhBNEFEaEFPSUE0d0RrQU9VQTVnRG5BT2dCTEFFd0FUSUJPQUU2QVR3QlBnRS9BVVVCUmdGL0FZVUJpZ0dOQWtjQ1NBSktBa3dDVFFKT0FrOENVQUpSQWxJQ1V3SlVBbFVDVmdKWEFsZ0NXUUphQWxzQ1hBSmRBbDRDWHdKZ0FtRUNZZ0pqQW1RQ1pRSm1Bb01DaFFLSEFva0Npd0tOQW84Q2tRS1RBcFVDbHdLWkFwc0NuUUtmQXFFQ293S2xBcWNDcVFLckFxMENyd0t5QXJRQ3RnSzRBcm9DdkFLK0FzQUN3Z0xGQXNjQ3lRTExBczBDendMUkF0TUMxUUxaQXRzQzNRTGZBdUVDNHdMbEF1Y0M2UUxyQXUwQzd3THhBdklDOUFMMkExTURWQU5WQTFZRFZ3TllBMWtEV3dOY0ExMERYZ05mQTJBRFlRTmlBMlFEWlFObUEyY0RhQU5wQTJvRGVnTjdBM3dEZlFOK0EzOERnQU9CQTRJRGd3T0VBNFVEaGdPSEE0Z0RpUU9LQTRzRGpBT05BNDREandPN0E3MER2d1BVQTlvRDRBUkpCRXNFVHdSWEJGa0VYZ1JxQUFFQUFBQUJBQWdBQWdGMEFMY0J1Z0c3QWJ3QnZRRytBYjhCd0FIQkFjSUJ3d0hFQWNVQnhnSEhBY2dCeVFIS0Fjc0J6QUhOQWM0Qnp3SFFBZEVCMGdIVEF2MERNQUk3QWZvRXlnVExBZnNCL0FIOUFmNEIvd0lBQk00RXp3VFJCTlFFM1FJQ0FnTUNCQUlGQWdZQ0J3SUlBZ2tDQ2dJTEFmUUI5UUgyQWZjQitBSDVBaThDRHdJUUFoRUNGQUlWQWhjQ0dRTCtBdjhEQUFNQkF3SURBd01FQXdVREJnTUhBd2dEQ1FNS0F3c0REQU1OQXc0RER3TVFBeEVERWdNVEF4UURGUU1XQXhjREdBTVpBMDhER2dNYkF4d0RIUU1lQXg4RElBTWhBeUlESXdNa0F5VURKZ01uQXlnREtRTXFBeXNETEFNdEF5NERMd014QXpJRE13TTBBelVETmdNM0F6Z0RPUU02QXpzRFBBTTlBejREUHdOQUEwRURRZ05EQTBRRFJnTkZBMGNEU0FOSkEwb0RTd05NQTAwRFRnTlFBMUVEVWdUSkJNd0V6UVRRQk5JRTB3SUJCTlVFd1FUQ0JNTUV4QVRGQk1ZRXh3VElCTllFMkFUWkFoZ0Uyd0lhQk53Qy9BSU9CTmNDRXdJTkJOb0NGZ0lNQWhJQUFRQzNBRVVBUmdCSEFFZ0FTUUJLQUVzQVRBQk5BRTRBVHdCUUFGRUFVZ0JUQUZRQVZRQldBRmNBV0FCWkFGb0FXd0JjQUYwQVhnQ0hBSXdBa3dEcEFPb0E2d0RzQU8wQTdnRHZBUEFBOFFEeUFQTUE5QUQxQVBZQTl3RDRBUGtBK2dEN0FQd0EvUUQrQVA4QkFBRUJBUUlCQXdFRUFRVUJCZ0V0QVRFQk13RTVBVHNCUFFGQUFVY0NTd0puQW1nQ2FRSnFBbXNDYkFKdEFtNENid0p3QW5FQ2NnSnpBblFDZFFKMkFuY0NlQUo1QW5vQ2V3SjhBbjBDZmdKL0FvQUNnUUtDQW9RQ2hnS0lBb29DakFLT0FwQUNrZ0tVQXBZQ21BS2FBcHdDbmdLZ0FxSUNwQUttQXFnQ3FnS3NBcTRDc3dLMUFyY0N1UUs3QXIwQ3Z3TEJBc01DeGdMSUFzb0N6QUxPQXRBQzBnTFVBdFlDMmdMY0F0NEM0QUxpQXVRQzVnTG9BdW9DN0FMdUF2QUM4d0wxQXZjRGtBT1JBNUlEa3dPVUE1VURsZ09YQTVnRG1RT2FBNXNEbkFPZEE1NERud084QTc0RHdBUE9BOVVEMndQaEJFY0VTZ1JNQkZBRVdBUmFCRnNFWHdSckFBWUFBQUFHQUJJQUtnQkNBRm9BY2dDS0FBTUFBQUFCQUJJQUFRQ1FBQUVBQUFBYUFBRUFBUUJOQUFNQUFBQUJBQklBQVFCNEFBRUFBQUFhQUFFQUFRQk9BQU1BQUFBQkFCSUFBUUJnQUFFQUFBQWFBQUVBQVFLdUFBTUFBQUFCQUJJQUFRQklBQUVBQUFBYUFBRUFBUU9iQUFNQUFBQUJBQklBQVFBd0FBRUFBQUFhQUFFQUFRT2RBQU1BQUFBQkFCSUFBUUFZQUFFQUFBQWFBQUVBQVFRYUFBSUFBUUNuQUtzQUFBQUVBQUFBQVFBSUFBRUdIZ0EyQUhJQXBBQ3VBTGdBeWdEOEFRNEJHQUZLQVdRQmZnR1FBYm9CN0FIMkFoZ0NNZ0pFQW5ZQ2lBS2lBc3dDM2dNUUF4b0RKQU0yQTJnRGNnTjhBNFlEb0FPNkE4d0Q5Z1FvQkRJRVZBUnVCSUFFc2dURUJONEZDQVVhQlNRRkxnVTRCVUlGYkFXV0JjQUY2Z1lVQUFZQURnQVVBQm9BSUFBbUFDd0NUQUFDQUtjQ1RRQUNBS2dDVHdBQ0FLa0Q4UUFDQUtvRWV3QUNBS3NEN3dBQ0FLd0FBUUFFQklnQUFnQ3NBQUVBQkFLSkFBSUFxQUFDQUFZQURBU0tBQUlBckFTTUFBSUJvZ0FHQUE0QUZBQWFBQ0FBSmdBc0FsUUFBZ0NuQWxVQUFnQ29CQXNBQWdDcEJBa0FBZ0NxQkgwQUFnQ3JCQWNBQWdDc0FBSUFCZ0FNQkhjQUFnQ29BcU1BQWdHaUFBRUFCQVNPQUFJQXJBQUdBQTRBRkFBYUFDQUFKZ0FzQWxnQUFnQ25BbGtBQWdDb0FxY0FBZ0NwQkJjQUFnQ3FCSDhBQWdDckJCa0FBZ0NzQUFNQUNBQU9BQlFFa0FBQ0FLZ0VrZ0FDQUt3Q3RBQUNBYUlBQXdBSUFBNEFGQUsyQUFJQXFBU1VBQUlBckFLNEFBSUJvZ0FDQUFZQURBT3RBQUlBcUFTV0FBSUFyQUFGQUF3QUVnQVlBQjRBSkFSNUFBSUFwd0srQUFJQXFBSmNBQUlBcVFTWUFBSUFyQUxBQUFJQm9nQUdBQTRBRkFBYUFDQUFKZ0FzQWwwQUFnQ25BbDRBQWdDb0FtQUFBZ0NwQkIwQUFnQ3FCSUVBQWdDckJCc0FBZ0NzQUFFQUJBU2FBQUlBcUFBRUFBb0FFQUFXQUJ3Q3l3QUNBS2dFZ3dBQ0FLc0VuQUFDQUt3Q3pRQUNBYUlBQXdBSUFBNEFGQUxSQUFJQXFBU2VBQUlBckFMWEFBSUJvZ0FDQUFZQURBU2dBQUlBckFMYkFBSUJvZ0FHQUE0QUZBQWFBQ0FBSmdBc0FtSUFBZ0NuQW1NQUFnQ29BdUVBQWdDcEJEVUFBZ0NxQklVQUFnQ3JCRE1BQWdDc0FBSUFCZ0FNQktJQUFnQ3BCS1FBQWdDc0FBTUFDQUFPQUJRRG9BQUNBS2NEb2dBQ0FLZ0VwZ0FDQUt3QUJRQU1BQklBR0FBZUFDUURwZ0FDQUtjQ1pnQUNBS2dFUlFBQ0FLa0VRd0FDQUtvRVFRQUNBS3dBQWdBR0FBd0M4Z0FDQUtnRXFBQUNBS3dBQmdBT0FCUUFHZ0FnQUNZQUxBSm5BQUlBcHdKb0FBSUFxQUpxQUFJQXFRUHlBQUlBcWdSOEFBSUFxd1B3QUFJQXJBQUJBQVFFaVFBQ0FLd0FBUUFFQW9vQUFnQ29BQUlBQmdBTUJJc0FBZ0NzQkkwQUFnR2lBQVlBRGdBVUFCb0FJQUFtQUN3Q2J3QUNBS2NDY0FBQ0FLZ0VEQUFDQUtrRUNnQUNBS29FZmdBQ0FLc0VDQUFDQUt3QUFRQUVCSGdBQWdDb0FBRUFCQVNQQUFJQXJBQUJBQVFFR2dBQ0FLd0FBd0FJQUE0QUZBU1JBQUlBcUFTVEFBSUFyQUsxQUFJQm9nQURBQWdBRGdBVUFyY0FBZ0NvQkpVQUFnQ3NBcmtBQWdHaUFBSUFCZ0FNQTY0QUFnQ29CSmNBQWdDc0FBVUFEQUFTQUJnQUhnQWtCSG9BQWdDbkFyOEFBZ0NvQW5jQUFnQ3BCSmtBQWdDc0FzRUFBZ0dpQUFZQURnQVVBQm9BSUFBbUFDd0NlQUFDQUtjQ2VRQUNBS2dDZXdBQ0FLa0VIZ0FDQUtvRWdnQUNBS3NFSEFBQ0FLd0FBUUFFQkpzQUFnQ29BQVFBQ2dBUUFCWUFIQUxNQUFJQXFBU0VBQUlBcXdTZEFBSUFyQUxPQUFJQm9nQURBQWdBRGdBVUF0SUFBZ0NvQko4QUFnQ3NBdGdBQWdHaUFBSUFCZ0FNQktFQUFnQ3NBdHdBQWdHaUFBWUFEZ0FVQUJvQUlBQW1BQ3dDZlFBQ0FLY0NmZ0FDQUtnQzRnQUNBS2tFTmdBQ0FLb0VoZ0FDQUtzRU5BQUNBS3dBQWdBR0FBd0Vvd0FDQUtrRXBRQUNBS3dBQXdBSUFBNEFGQU9oQUFJQXB3T2pBQUlBcUFTbkFBSUFyQUFGQUF3QUVnQVlBQjRBSkFPbkFBSUFwd0tCQUFJQXFBUkdBQUlBcVFSRUFBSUFxZ1JDQUFJQXJBQUNBQVlBREFMekFBSUFxQVNwQUFJQXJBQUJBQVFDK0FBQ0FLZ0FBUUFFQXZvQUFnQ29BQUVBQkFMNUFBSUFxQUFCQUFRQyt3QUNBS2dBQlFBTUFCSUFHQUFlQUNRQ2N3QUNBS2NDZEFBQ0FLZ0NxQUFDQUtrRUdBQUNBS29FZ0FBQ0FLc0FCUUFNQUJJQUdBQWVBQ1FFS3dBQ0FLY0VLUUFDQUtnRUx3QUNBS2tFTFFBQ0FLb0VNUUFDQUt3QUJRQU1BQklBR0FBZUFDUUVMQUFDQUtjRUtnQUNBS2dFTUFBQ0FLa0VMZ0FDQUtvRU1nQUNBS3dBQlFBTUFCSUFHQUFlQUNRRU9RQUNBS2NFTndBQ0FLZ0VQUUFDQUtrRU93QUNBS29FUHdBQ0FLd0FCUUFNQUJJQUdBQWVBQ1FFT2dBQ0FLY0VPQUFDQUtnRVBnQUNBS2tFUEFBQ0FLb0VRQUFDQUt3QUFRQUVCSWNBQWdDb0FBSUFFUUFsQUNrQUFBQXJBQzBBQlFBdkFEUUFDQUEyQURzQURnQTlBRDRBRkFCRkFFa0FGZ0JMQUUwQUd3QlBBRlFBSGdCV0FGc0FKQUJkQUY0QUtnQ0JBSUVBTEFDREFJTUFMUUNHQUlZQUxnQ0pBSWtBTHdDTUFJd0FNQUNYQUpvQU1RRFBBTThBTlFBQkFBQUFBUUFJQUFFQUJnQUNBQUVBQWdMVkF0WUFBUUFBQUFFQUNBQUNBQTRBQkFUZUJOOEU0QVRoQUFFQUJBS0hBb2dDbVFLYUFBUUFBQUFCQUFnQUFRQW1BQUlBQ2dBY0FBSUFCZ0FNQWFNQUFnQktBYWdBQWdCWUFBRUFCQUdwQUFJQVdBQUJBQUlBU2dCWEFBUUFBQUFCQUFnQUFRQkVBQUlBQ2dBVUFBRUFCQUdrQUFJQVRRQUJBQVFCcGdBQ0FFMEFCQUFBQUFFQUNBQUJBQjRBQWdBS0FCUUFBUUFFQWFVQUFnQlFBQUVBQkFHbkFBSUFVQUFCQUFJQVNnR2pBQUVBQUFBQkFBZ0FBUUFHQVpVQUFRQUJBRXNBQVFBQUFBRUFDQUFCQUFZQkp3QUJBQUVBdWdBQkFBQUFBUUFJQUFFQUJnR3NBQUVBQVFBMkFBRUFBQUFCQUFnQUFnQWNBQUlCNHdIa0FBRUFBQUFCQUFnQUFnQUtBQUlCNVFIbUFBRUFBZ0F2QUU4QUFRQUFBQUVBQ0FBQ0FCNEFEQUlvQWlvQ0tRSXJBaXdDSHdJZ0FpRUNJZ0d1QWlRQ0pRQUJBQXdBSndBb0FDc0FNd0ExQUVZQVJ3QklBRXNBVXdCVUFGVUFBUUFBQUFFQUNBQUNBQXdBQXdJbUFpY0NKd0FCQUFNQVNRQkxBaUlBQVFBQUFBRUFDQUFDQUdZQUNBSTlBaTBDTGdJd0FqRUNPUUk2QWp3QUFRQUFBQUVBQ0FBQ0FCWUFDQUFiQUJVQUZnQVhBQmdBR1FBZEFCUUFBUUFJQWEwQ0l3UnhCSElFY3dSMEJIVUVkZ0FCQUFBQUFRQUlBQUlBRmdBSUJIWUNJd1J4QkhJRWN3UjBBYTBFZFFBQkFBZ0FGQUFWQUJZQUZ3QVlBQmtBR3dBZEFBRUFBQUFCQUFnQUFnQVdBQWdBRlFBV0FCY0FHQUFaQUJzQUhRQVVBQUVBQ0FJdEFpNENNQUl4QWprQ09nSThBajBBQVFBQUFBRUFDQUFCQUFZQmFRQUJBQUVBRXdBR0FBQUFBUUFJQUFNQUFRQVNBQUVBVWdBQUFBRUFBQUFhQUFJQUFnRjhBWHdBQUFIVUFkMEFBUUFCQUFBQUFRQUlBQUVBS0FIQUFBRUFBQUFCQUFnQUFnQWFBQW9DTWdCNkFITUFkQUl6QWpRQ05RSTJBamNDT0FBQ0FBRUFGQUFkQUFBQUFRQUFBQUVBQ0FBQ0FDWUFFQUhVQWRVQjFnSFhBZGdCMlFIYUFkc0IzQUhkQWtBQ1BnSkJBa0lDUHdKREFBRUFFQUFVQUJVQUZnQVhBQmdBR1FBYUFCc0FIQUFkQUUwQVRnS3VBNXNEblFRYSIKfTs="></script>
|
|
<link href="data:text/css,%40keyframes%20dtb%2Dspinner%7B100%25%7Btransform%3Arotate%28360deg%29%7D%7D%40%2Do%2Dkeyframes%20dtb%2Dspinner%7B100%25%7B%2Do%2Dtransform%3Arotate%28360deg%29%3Btransform%3Arotate%28360deg%29%7D%7D%40%2Dms%2Dkeyframes%20dtb%2Dspinner%7B100%25%7B%2Dms%2Dtransform%3Arotate%28360deg%29%3Btransform%3Arotate%28360deg%29%7D%7D%40%2Dwebkit%2Dkeyframes%20dtb%2Dspinner%7B100%25%7B%2Dwebkit%2Dtransform%3Arotate%28360deg%29%3Btransform%3Arotate%28360deg%29%7D%7D%40%2Dmoz%2Dkeyframes%20dtb%2Dspinner%7B100%25%7B%2Dmoz%2Dtransform%3Arotate%28360deg%29%3Btransform%3Arotate%28360deg%29%7D%7Ddiv%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%7Ddiv%2Edt%2Dbutton%2Dcollection%2Dtitle%7Btext%2Dalign%3Acenter%3Bpadding%3A0%2E3em%200%200%2E5em%3Bfont%2Dsize%3A0%2E9em%7Ddiv%2Edt%2Dbutton%2Dcollection%2Dtitle%3Aempty%7Bdisplay%3Anone%7Dbutton%2Edt%2Dbutton%2Cdiv%2Edt%2Dbutton%2Ca%2Edt%2Dbutton%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bbox%2Dsizing%3Aborder%2Dbox%3Bmargin%2Dright%3A0%2E333em%3Bmargin%2Dbottom%3A0%2E333em%3Bpadding%3A0%2E5em%201em%3Bborder%3A1px%20solid%20%23999%3Bborder%2Dradius%3A2px%3Bcursor%3Apointer%3Bfont%2Dsize%3A0%2E88em%3Bline%2Dheight%3A1%2E6em%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%3Btext%2Doverflow%3Aellipsis%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%3Bbox%2Dsizing%3Aborder%2Dbox%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%3Bwidth%3A100%25%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%2D200px%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%3Alast%2Dchild%7Bdisplay%3Ablock%20%21important%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%3E%3Alast%2Dchild%3E%2A%7B%2Dwebkit%2Dcolumn%2Dbreak%2Dinside%3Aavoid%3Bbreak%2Dinside%3Aavoid%7Ddiv%2Edt%2Dbutton%2Dcollection%2Etwo%2Dcolumn%7Bwidth%3A400px%7Ddiv%2Edt%2Dbutton%2Dcollection%2Etwo%2Dcolumn%3E%3Alast%2Dchild%7Bpadding%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%7Ddiv%2Edt%2Dbutton%2Dcollection%2Ethree%2Dcolumn%3E%3Alast%2Dchild%7Bpadding%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%7Ddiv%2Edt%2Dbutton%2Dcollection%2Efour%2Dcolumn%3E%3Alast%2Dchild%7Bpadding%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%2Dcollection%20%2Edt%2Dbutton%7Bborder%2Dradius%3A0%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%7Dbutton%2Edt%2Dbutton%2Eprocessing%2Cdiv%2Edt%2Dbutton%2Eprocessing%2Ca%2Edt%2Dbutton%2Eprocessing%7Bcolor%3Argba%280%2C0%2C0%2C0%2E2%29%7Dbutton%2Edt%2Dbutton%2Eprocessing%3Aafter%2Cdiv%2Edt%2Dbutton%2Eprocessing%3Aafter%2Ca%2Edt%2Dbutton%2Eprocessing%3Aafter%7Bposition%3Aabsolute%3Btop%3A50%25%3Bleft%3A50%25%3Bwidth%3A16px%3Bheight%3A16px%3Bmargin%3A%2D8px%200%200%20%2D8px%3Bbox%2Dsizing%3Aborder%2Dbox%3Bdisplay%3Ablock%3Bcontent%3A%27%20%27%3Bborder%3A2px%20solid%20%23282828%3Bborder%2Dradius%3A50%25%3Bborder%2Dleft%2Dcolor%3Atransparent%3Bborder%2Dright%2Dcolor%3Atransparent%3Banimation%3Adtb%2Dspinner%201500ms%20infinite%20linear%3B%2Do%2Danimation%3Adtb%2Dspinner%201500ms%20infinite%20linear%3B%2Dms%2Danimation%3Adtb%2Dspinner%201500ms%20infinite%20linear%3B%2Dwebkit%2Danimation%3Adtb%2Dspinner%201500ms%20infinite%20linear%3B%2Dmoz%2Danimation%3Adtb%2Dspinner%201500ms%20infinite%20linear%7D%0A" rel="stylesheet" />
|
|
<script src="data:application/javascript;base64,LyohCiBCdXR0b25zIGZvciBEYXRhVGFibGVzIDEuNi4xCiDCqTIwMTYtMjAxOSBTcHJ5TWVkaWEgTHRkIC0gZGF0YXRhYmxlcy5uZXQvbGljZW5zZQoqLwooZnVuY3Rpb24oZCl7ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwiZGF0YXRhYmxlcy5uZXQiXSxmdW5jdGlvbih1KXtyZXR1cm4gZCh1LHdpbmRvdyxkb2N1bWVudCl9KToib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHUsdCl7dXx8KHU9d2luZG93KTt0JiZ0LmZuLmRhdGFUYWJsZXx8KHQ9cmVxdWlyZSgiZGF0YXRhYmxlcy5uZXQiKSh1LHQpLiQpO3JldHVybiBkKHQsdSx1LmRvY3VtZW50KX06ZChqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGQsdSx0LHApe2Z1bmN0aW9uIHkoYSl7YT1uZXcgbS5BcGkoYSk7dmFyIGI9YS5pbml0KCkuYnV0dG9uc3x8bS5kZWZhdWx0cy5idXR0b25zO3JldHVybihuZXcgbihhLGIpKS5jb250YWluZXIoKX12YXIgbT1kLmZuLmRhdGFUYWJsZSxCPTAsQz0wLHE9bS5leHQuYnV0dG9ucyxuPWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YKbikpcmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybihuZXcgbihiLGEpKS5jb250YWluZXIoKX07InVuZGVmaW5lZCI9PT10eXBlb2YgYiYmKGI9e30pOyEwPT09YiYmKGI9e30pO2QuaXNBcnJheShiKSYmKGI9e2J1dHRvbnM6Yn0pO3RoaXMuYz1kLmV4dGVuZCghMCx7fSxuLmRlZmF1bHRzLGIpO2IuYnV0dG9ucyYmKHRoaXMuYy5idXR0b25zPWIuYnV0dG9ucyk7dGhpcy5zPXtkdDpuZXcgbS5BcGkoYSksYnV0dG9uczpbXSxsaXN0ZW5LZXlzOiIiLG5hbWVzcGFjZToiZHRiIitCKyt9O3RoaXMuZG9tPXtjb250YWluZXI6ZCgiPCIrdGhpcy5jLmRvbS5jb250YWluZXIudGFnKyIvPiIpLmFkZENsYXNzKHRoaXMuYy5kb20uY29udGFpbmVyLmNsYXNzTmFtZSl9O3RoaXMuX2NvbnN0cnVjdG9yKCl9O2QuZXh0ZW5kKG4ucHJvdG90eXBlLHthY3Rpb246ZnVuY3Rpb24oYSxiKXthPXRoaXMuX25vZGVUb0J1dHRvbihhKTtpZihiPT09cClyZXR1cm4gYS5jb25mLmFjdGlvbjthLmNvbmYuYWN0aW9uPQpiO3JldHVybiB0aGlzfSxhY3RpdmU6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLl9ub2RlVG9CdXR0b24oYSk7YT10aGlzLmMuZG9tLmJ1dHRvbi5hY3RpdmU7Yz1kKGMubm9kZSk7aWYoYj09PXApcmV0dXJuIGMuaGFzQ2xhc3MoYSk7Yy50b2dnbGVDbGFzcyhhLGI9PT1wPyEwOmIpO3JldHVybiB0aGlzfSxhZGQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLnMuYnV0dG9ucztpZigic3RyaW5nIj09PXR5cGVvZiBiKXtiPWIuc3BsaXQoIi0iKTt2YXIgZT10aGlzLnM7Yz0wO2Zvcih2YXIgZD1iLmxlbmd0aC0xO2M8ZDtjKyspZT1lLmJ1dHRvbnNbMSpiW2NdXTtjPWUuYnV0dG9ucztiPTEqYltiLmxlbmd0aC0xXX10aGlzLl9leHBhbmRCdXR0b24oYyxhLGUhPT1wLGIpO3RoaXMuX2RyYXcoKTtyZXR1cm4gdGhpc30sY29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tLmNvbnRhaW5lcn0sZGlzYWJsZTpmdW5jdGlvbihhKXthPXRoaXMuX25vZGVUb0J1dHRvbihhKTtkKGEubm9kZSkuYWRkQ2xhc3ModGhpcy5jLmRvbS5idXR0b24uZGlzYWJsZWQpOwpyZXR1cm4gdGhpc30sZGVzdHJveTpmdW5jdGlvbigpe2QoImJvZHkiKS5vZmYoImtleXVwLiIrdGhpcy5zLm5hbWVzcGFjZSk7dmFyIGE9dGhpcy5zLmJ1dHRvbnMuc2xpY2UoKSxiO3ZhciBjPTA7Zm9yKGI9YS5sZW5ndGg7YzxiO2MrKyl0aGlzLnJlbW92ZShhW2NdLm5vZGUpO3RoaXMuZG9tLmNvbnRhaW5lci5yZW1vdmUoKTthPXRoaXMucy5kdC5zZXR0aW5ncygpWzBdO2M9MDtmb3IoYj1hLmxlbmd0aDtjPGI7YysrKWlmKGEuaW5zdD09PXRoaXMpe2Euc3BsaWNlKGMsMSk7YnJlYWt9cmV0dXJuIHRoaXN9LGVuYWJsZTpmdW5jdGlvbihhLGIpe2lmKCExPT09YilyZXR1cm4gdGhpcy5kaXNhYmxlKGEpO2E9dGhpcy5fbm9kZVRvQnV0dG9uKGEpO2QoYS5ub2RlKS5yZW1vdmVDbGFzcyh0aGlzLmMuZG9tLmJ1dHRvbi5kaXNhYmxlZCk7cmV0dXJuIHRoaXN9LG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jLm5hbWV9LG5vZGU6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIHRoaXMuZG9tLmNvbnRhaW5lcjsKYT10aGlzLl9ub2RlVG9CdXR0b24oYSk7cmV0dXJuIGQoYS5ub2RlKX0scHJvY2Vzc2luZzpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMucy5kdCxlPXRoaXMuX25vZGVUb0J1dHRvbihhKTtpZihiPT09cClyZXR1cm4gZChlLm5vZGUpLmhhc0NsYXNzKCJwcm9jZXNzaW5nIik7ZChlLm5vZGUpLnRvZ2dsZUNsYXNzKCJwcm9jZXNzaW5nIixiKTtkKGMudGFibGUoKS5ub2RlKCkpLnRyaWdnZXJIYW5kbGVyKCJidXR0b25zLXByb2Nlc3NpbmcuZHQiLFtiLGMuYnV0dG9uKGEpLGMsZChhKSxlLmNvbmZdKTtyZXR1cm4gdGhpc30scmVtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX25vZGVUb0J1dHRvbihhKSxjPXRoaXMuX25vZGVUb0hvc3QoYSksZT10aGlzLnMuZHQ7aWYoYi5idXR0b25zLmxlbmd0aClmb3IodmFyIGc9Yi5idXR0b25zLmxlbmd0aC0xOzA8PWc7Zy0tKXRoaXMucmVtb3ZlKGIuYnV0dG9uc1tnXS5ub2RlKTtiLmNvbmYuZGVzdHJveSYmYi5jb25mLmRlc3Ryb3kuY2FsbChlLmJ1dHRvbihhKSwKZSxkKGEpLGIuY29uZik7dGhpcy5fcmVtb3ZlS2V5KGIuY29uZik7ZChiLm5vZGUpLnJlbW92ZSgpO2E9ZC5pbkFycmF5KGIsYyk7Yy5zcGxpY2UoYSwxKTtyZXR1cm4gdGhpc30sdGV4dDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX25vZGVUb0J1dHRvbihhKTthPXRoaXMuYy5kb20uY29sbGVjdGlvbi5idXR0b25MaW5lcjthPWMuaW5Db2xsZWN0aW9uJiZhJiZhLnRhZz9hLnRhZzp0aGlzLmMuZG9tLmJ1dHRvbkxpbmVyLnRhZzt2YXIgZT10aGlzLnMuZHQsZz1kKGMubm9kZSksZj1mdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGE/YShlLGcsYy5jb25mKTphfTtpZihiPT09cClyZXR1cm4gZihjLmNvbmYudGV4dCk7Yy5jb25mLnRleHQ9YjthP2cuY2hpbGRyZW4oYSkuaHRtbChmKGIpKTpnLmh0bWwoZihiKSk7cmV0dXJuIHRoaXN9LF9jb25zdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYj10aGlzLnMuZHQsYz1iLnNldHRpbmdzKClbMF0sZT10aGlzLmMuYnV0dG9uczsKYy5fYnV0dG9uc3x8KGMuX2J1dHRvbnM9W10pO2MuX2J1dHRvbnMucHVzaCh7aW5zdDp0aGlzLG5hbWU6dGhpcy5jLm5hbWV9KTtmb3IodmFyIGc9MCxmPWUubGVuZ3RoO2c8ZjtnKyspdGhpcy5hZGQoZVtnXSk7Yi5vbigiZGVzdHJveSIsZnVuY3Rpb24oYixlKXtlPT09YyYmYS5kZXN0cm95KCl9KTtkKCJib2R5Iikub24oImtleXVwLiIrdGhpcy5zLm5hbWVzcGFjZSxmdW5jdGlvbihiKXtpZighdC5hY3RpdmVFbGVtZW50fHx0LmFjdGl2ZUVsZW1lbnQ9PT10LmJvZHkpe3ZhciBjPVN0cmluZy5mcm9tQ2hhckNvZGUoYi5rZXlDb2RlKS50b0xvd2VyQ2FzZSgpOy0xIT09YS5zLmxpc3RlbktleXMudG9Mb3dlckNhc2UoKS5pbmRleE9mKGMpJiZhLl9rZXlwcmVzcyhjLGIpfX0pfSxfYWRkS2V5OmZ1bmN0aW9uKGEpe2Eua2V5JiYodGhpcy5zLmxpc3RlbktleXMrPWQuaXNQbGFpbk9iamVjdChhLmtleSk/YS5rZXkua2V5OmEua2V5KX0sX2RyYXc6ZnVuY3Rpb24oYSxiKXthfHwoYT10aGlzLmRvbS5jb250YWluZXIsCmI9dGhpcy5zLmJ1dHRvbnMpO2EuY2hpbGRyZW4oKS5kZXRhY2goKTtmb3IodmFyIGM9MCxlPWIubGVuZ3RoO2M8ZTtjKyspYS5hcHBlbmQoYltjXS5pbnNlcnRlciksYS5hcHBlbmQoIiAiKSxiW2NdLmJ1dHRvbnMmJmJbY10uYnV0dG9ucy5sZW5ndGgmJnRoaXMuX2RyYXcoYltjXS5jb2xsZWN0aW9uLGJbY10uYnV0dG9ucyl9LF9leHBhbmRCdXR0b246ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGc9dGhpcy5zLmR0LGY9MDtiPWQuaXNBcnJheShiKT9iOltiXTtmb3IodmFyIGg9MCxrPWIubGVuZ3RoO2g8aztoKyspe3ZhciByPXRoaXMuX3Jlc29sdmVFeHRlbmRzKGJbaF0pO2lmKHIpaWYoZC5pc0FycmF5KHIpKXRoaXMuX2V4cGFuZEJ1dHRvbihhLHIsYyxlKTtlbHNle3ZhciBsPXRoaXMuX2J1aWxkQnV0dG9uKHIsYyk7bCYmKGUhPT1wPyhhLnNwbGljZShlLDAsbCksZSsrKTphLnB1c2gobCksbC5jb25mLmJ1dHRvbnMmJihsLmNvbGxlY3Rpb249ZCgiPCIrdGhpcy5jLmRvbS5jb2xsZWN0aW9uLnRhZysKIi8+IiksbC5jb25mLl9jb2xsZWN0aW9uPWwuY29sbGVjdGlvbix0aGlzLl9leHBhbmRCdXR0b24obC5idXR0b25zLGwuY29uZi5idXR0b25zLCEwLGUpKSxyLmluaXQmJnIuaW5pdC5jYWxsKGcuYnV0dG9uKGwubm9kZSksZyxkKGwubm9kZSksciksZisrKX19fSxfYnVpbGRCdXR0b246ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmMuZG9tLmJ1dHRvbixlPXRoaXMuYy5kb20uYnV0dG9uTGluZXIsZz10aGlzLmMuZG9tLmNvbGxlY3Rpb24sZj10aGlzLnMuZHQsaD1mdW5jdGlvbihiKXtyZXR1cm4iZnVuY3Rpb24iPT09dHlwZW9mIGI/YihmLGwsYSk6Yn07YiYmZy5idXR0b24mJihjPWcuYnV0dG9uKTtiJiZnLmJ1dHRvbkxpbmVyJiYoZT1nLmJ1dHRvbkxpbmVyKTtpZihhLmF2YWlsYWJsZSYmIWEuYXZhaWxhYmxlKGYsYSkpcmV0dXJuITE7dmFyIGs9ZnVuY3Rpb24oYSxiLGMsZSl7ZS5hY3Rpb24uY2FsbChiLmJ1dHRvbihjKSxhLGIsYyxlKTtkKGIudGFibGUoKS5ub2RlKCkpLnRyaWdnZXJIYW5kbGVyKCJidXR0b25zLWFjdGlvbi5kdCIsCltiLmJ1dHRvbihjKSxiLGMsZV0pfTtnPWEudGFnfHxjLnRhZzt2YXIgcj1hLmNsaWNrQmx1cnM9PT1wPyEwOmEuY2xpY2tCbHVycyxsPWQoIjwiK2crIi8+IikuYWRkQ2xhc3MoYy5jbGFzc05hbWUpLmF0dHIoInRhYmluZGV4Iix0aGlzLnMuZHQuc2V0dGluZ3MoKVswXS5pVGFiSW5kZXgpLmF0dHIoImFyaWEtY29udHJvbHMiLHRoaXMucy5kdC50YWJsZSgpLm5vZGUoKS5pZCkub24oImNsaWNrLmR0YiIsZnVuY3Rpb24oYil7Yi5wcmV2ZW50RGVmYXVsdCgpOyFsLmhhc0NsYXNzKGMuZGlzYWJsZWQpJiZhLmFjdGlvbiYmayhiLGYsbCxhKTtyJiZsLmJsdXIoKX0pLm9uKCJrZXl1cC5kdGIiLGZ1bmN0aW9uKGIpezEzPT09Yi5rZXlDb2RlJiYhbC5oYXNDbGFzcyhjLmRpc2FibGVkKSYmYS5hY3Rpb24mJmsoYixmLGwsYSl9KTsiYSI9PT1nLnRvTG93ZXJDYXNlKCkmJmwuYXR0cigiaHJlZiIsIiMiKTsiYnV0dG9uIj09PWcudG9Mb3dlckNhc2UoKSYmbC5hdHRyKCJ0eXBlIiwiYnV0dG9uIik7CmUudGFnPyhnPWQoIjwiK2UudGFnKyIvPiIpLmh0bWwoaChhLnRleHQpKS5hZGRDbGFzcyhlLmNsYXNzTmFtZSksImEiPT09ZS50YWcudG9Mb3dlckNhc2UoKSYmZy5hdHRyKCJocmVmIiwiIyIpLGwuYXBwZW5kKGcpKTpsLmh0bWwoaChhLnRleHQpKTshMT09PWEuZW5hYmxlZCYmbC5hZGRDbGFzcyhjLmRpc2FibGVkKTthLmNsYXNzTmFtZSYmbC5hZGRDbGFzcyhhLmNsYXNzTmFtZSk7YS50aXRsZUF0dHImJmwuYXR0cigidGl0bGUiLGgoYS50aXRsZUF0dHIpKTthLmF0dHImJmwuYXR0cihhLmF0dHIpO2EubmFtZXNwYWNlfHwoYS5uYW1lc3BhY2U9Ii5kdC1idXR0b24tIitDKyspO2U9KGU9dGhpcy5jLmRvbS5idXR0b25Db250YWluZXIpJiZlLnRhZz9kKCI8IitlLnRhZysiLz4iKS5hZGRDbGFzcyhlLmNsYXNzTmFtZSkuYXBwZW5kKGwpOmw7dGhpcy5fYWRkS2V5KGEpO3RoaXMuYy5idXR0b25DcmVhdGVkJiYoZT10aGlzLmMuYnV0dG9uQ3JlYXRlZChhLGUpKTtyZXR1cm57Y29uZjphLApub2RlOmwuZ2V0KDApLGluc2VydGVyOmUsYnV0dG9uczpbXSxpbkNvbGxlY3Rpb246Yixjb2xsZWN0aW9uOm51bGx9fSxfbm9kZVRvQnV0dG9uOmZ1bmN0aW9uKGEsYil7Ynx8KGI9dGhpcy5zLmJ1dHRvbnMpO2Zvcih2YXIgYz0wLGU9Yi5sZW5ndGg7YzxlO2MrKyl7aWYoYltjXS5ub2RlPT09YSlyZXR1cm4gYltjXTtpZihiW2NdLmJ1dHRvbnMubGVuZ3RoKXt2YXIgZD10aGlzLl9ub2RlVG9CdXR0b24oYSxiW2NdLmJ1dHRvbnMpO2lmKGQpcmV0dXJuIGR9fX0sX25vZGVUb0hvc3Q6ZnVuY3Rpb24oYSxiKXtifHwoYj10aGlzLnMuYnV0dG9ucyk7Zm9yKHZhciBjPTAsZT1iLmxlbmd0aDtjPGU7YysrKXtpZihiW2NdLm5vZGU9PT1hKXJldHVybiBiO2lmKGJbY10uYnV0dG9ucy5sZW5ndGgpe3ZhciBkPXRoaXMuX25vZGVUb0hvc3QoYSxiW2NdLmJ1dHRvbnMpO2lmKGQpcmV0dXJuIGR9fX0sX2tleXByZXNzOmZ1bmN0aW9uKGEsYil7aWYoIWIuX2J1dHRvbnNIYW5kbGVkKXt2YXIgYz0KZnVuY3Rpb24oZSl7Zm9yKHZhciBnPTAsZj1lLmxlbmd0aDtnPGY7ZysrKXt2YXIgaD1lW2ddLmNvbmYsaz1lW2ddLm5vZGU7aC5rZXkmJihoLmtleT09PWE/KGIuX2J1dHRvbnNIYW5kbGVkPSEwLGQoaykuY2xpY2soKSk6IWQuaXNQbGFpbk9iamVjdChoLmtleSl8fGgua2V5LmtleSE9PWF8fGgua2V5LnNoaWZ0S2V5JiYhYi5zaGlmdEtleXx8aC5rZXkuYWx0S2V5JiYhYi5hbHRLZXl8fGgua2V5LmN0cmxLZXkmJiFiLmN0cmxLZXl8fGgua2V5Lm1ldGFLZXkmJiFiLm1ldGFLZXl8fChiLl9idXR0b25zSGFuZGxlZD0hMCxkKGspLmNsaWNrKCkpKTtlW2ddLmJ1dHRvbnMubGVuZ3RoJiZjKGVbZ10uYnV0dG9ucyl9fTtjKHRoaXMucy5idXR0b25zKX19LF9yZW1vdmVLZXk6ZnVuY3Rpb24oYSl7aWYoYS5rZXkpe3ZhciBiPWQuaXNQbGFpbk9iamVjdChhLmtleSk/YS5rZXkua2V5OmEua2V5O2E9dGhpcy5zLmxpc3RlbktleXMuc3BsaXQoIiIpO2I9ZC5pbkFycmF5KGIsYSk7YS5zcGxpY2UoYiwKMSk7dGhpcy5zLmxpc3RlbktleXM9YS5qb2luKCIiKX19LF9yZXNvbHZlRXh0ZW5kczpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnMuZHQsYyxlPWZ1bmN0aW9uKGMpe2Zvcih2YXIgZT0wOyFkLmlzUGxhaW5PYmplY3QoYykmJiFkLmlzQXJyYXkoYyk7KXtpZihjPT09cClyZXR1cm47aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBjKXtpZihjPWMoYixhKSwhYylyZXR1cm4hMX1lbHNlIGlmKCJzdHJpbmciPT09dHlwZW9mIGMpe2lmKCFxW2NdKXRocm93IlVua25vd24gYnV0dG9uIHR5cGU6ICIrYztjPXFbY119ZSsrO2lmKDMwPGUpdGhyb3ciQnV0dG9uczogVG9vIG1hbnkgaXRlcmF0aW9ucyI7fXJldHVybiBkLmlzQXJyYXkoYyk/YzpkLmV4dGVuZCh7fSxjKX07Zm9yKGE9ZShhKTthJiZhLmV4dGVuZDspe2lmKCFxW2EuZXh0ZW5kXSl0aHJvdyJDYW5ub3QgZXh0ZW5kIHVua25vd24gYnV0dG9uIHR5cGU6ICIrYS5leHRlbmQ7dmFyIGc9ZShxW2EuZXh0ZW5kXSk7aWYoZC5pc0FycmF5KGcpKXJldHVybiBnOwppZighZylyZXR1cm4hMTt2YXIgZj1nLmNsYXNzTmFtZTthPWQuZXh0ZW5kKHt9LGcsYSk7ZiYmYS5jbGFzc05hbWUhPT1mJiYoYS5jbGFzc05hbWU9ZisiICIrYS5jbGFzc05hbWUpO3ZhciBoPWEucG9zdGZpeEJ1dHRvbnM7aWYoaCl7YS5idXR0b25zfHwoYS5idXR0b25zPVtdKTtmPTA7Zm9yKGM9aC5sZW5ndGg7ZjxjO2YrKylhLmJ1dHRvbnMucHVzaChoW2ZdKTthLnBvc3RmaXhCdXR0b25zPW51bGx9aWYoaD1hLnByZWZpeEJ1dHRvbnMpe2EuYnV0dG9uc3x8KGEuYnV0dG9ucz1bXSk7Zj0wO2ZvcihjPWgubGVuZ3RoO2Y8YztmKyspYS5idXR0b25zLnNwbGljZShmLDAsaFtmXSk7YS5wcmVmaXhCdXR0b25zPW51bGx9YS5leHRlbmQ9Zy5leHRlbmR9cmV0dXJuIGF9LF9wb3BvdmVyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZT10aGlzLmMsZz1kLmV4dGVuZCh7YWxpZ246ImJ1dHRvbi1sZWZ0IixhdXRvQ2xvc2U6ITEsYmFja2dyb3VuZDohMCxiYWNrZ3JvdW5kQ2xhc3NOYW1lOiJkdC1idXR0b24tYmFja2dyb3VuZCIsCmNvbnRlbnRDbGFzc05hbWU6ZS5kb20uY29sbGVjdGlvbi5jbGFzc05hbWUsY29sbGVjdGlvbkxheW91dDoiIixjb2xsZWN0aW9uVGl0bGU6IiIsZHJvcHVwOiExLGZhZGU6NDAwLHJpZ2h0QWxpZ25DbGFzc05hbWU6ImR0LWJ1dHRvbi1yaWdodCIsdGFnOmUuZG9tLmNvbGxlY3Rpb24udGFnfSxjKSxmPWIubm9kZSgpLGg9ZnVuY3Rpb24oKXtkKCIuZHQtYnV0dG9uLWNvbGxlY3Rpb24iKS5zdG9wKCkuZmFkZU91dChnLmZhZGUsZnVuY3Rpb24oKXtkKHRoaXMpLmRldGFjaCgpfSk7ZChiLmJ1dHRvbnMoJ1thcmlhLWhhc3BvcHVwPSJ0cnVlIl1bYXJpYS1leHBhbmRlZD0idHJ1ZSJdJykubm9kZXMoKSkuYXR0cigiYXJpYS1leHBhbmRlZCIsImZhbHNlIik7ZCgiZGl2LmR0LWJ1dHRvbi1iYWNrZ3JvdW5kIikub2ZmKCJjbGljay5kdGItY29sbGVjdGlvbiIpO24uYmFja2dyb3VuZCghMSxnLmJhY2tncm91bmRDbGFzc05hbWUsZy5mYWRlLGYpO2QoImJvZHkiKS5vZmYoIi5kdGItY29sbGVjdGlvbiIpOwpiLm9mZigiYnV0dG9ucy1hY3Rpb24uYi1pbnRlcm5hbCIpfTshMT09PWEmJmgoKTtjPWQoYi5idXR0b25zKCdbYXJpYS1oYXNwb3B1cD0idHJ1ZSJdW2FyaWEtZXhwYW5kZWQ9InRydWUiXScpLm5vZGVzKCkpO2MubGVuZ3RoJiYoZj1jLmVxKDApLGgoKSk7Yz1kKCI8ZGl2Lz4iKS5hZGRDbGFzcygiZHQtYnV0dG9uLWNvbGxlY3Rpb24iKS5hZGRDbGFzcyhnLmNvbGxlY3Rpb25MYXlvdXQpLmNzcygiZGlzcGxheSIsIm5vbmUiKTthPWQoYSkuYWRkQ2xhc3MoZy5jb250ZW50Q2xhc3NOYW1lKS5hdHRyKCJyb2xlIiwibWVudSIpLmFwcGVuZFRvKGMpO2YuYXR0cigiYXJpYS1leHBhbmRlZCIsInRydWUiKTtmLnBhcmVudHMoImJvZHkiKVswXSE9PXQuYm9keSYmKGY9dC5ib2R5Lmxhc3RDaGlsZCk7Zy5jb2xsZWN0aW9uVGl0bGUmJmMucHJlcGVuZCgnPGRpdiBjbGFzcz0iZHQtYnV0dG9uLWNvbGxlY3Rpb24tdGl0bGUiPicrZy5jb2xsZWN0aW9uVGl0bGUrIjwvZGl2PiIpO2MuaW5zZXJ0QWZ0ZXIoZikuZmFkZUluKGcuZmFkZSk7CnZhciBrPWQoYi50YWJsZSgpLmNvbnRhaW5lcigpKTtlPWMuY3NzKCJwb3NpdGlvbiIpOyJkdC1jb250YWluZXIiPT09Zy5hbGlnbiYmKGY9Zi5wYXJlbnQoKSxjLmNzcygid2lkdGgiLGsud2lkdGgoKSkpO2lmKCJhYnNvbHV0ZSI9PT1lKXtlPWYucG9zaXRpb24oKTtjLmNzcyh7dG9wOmUudG9wK2Yub3V0ZXJIZWlnaHQoKSxsZWZ0OmUubGVmdH0pO3ZhciByPWMub3V0ZXJIZWlnaHQoKSxsPWMub3V0ZXJXaWR0aCgpLHc9ay5vZmZzZXQoKS50b3Aray5oZWlnaHQoKTt3PWUudG9wK2Yub3V0ZXJIZWlnaHQoKStyLXc7dmFyIEQ9ZS50b3AtcixtPWsub2Zmc2V0KCkudG9wO3I9ZS50b3Atci01Oyh3Pm0tRHx8Zy5kcm9wdXApJiYtcjxtJiZjLmNzcygidG9wIixyKTsoYy5oYXNDbGFzcyhnLnJpZ2h0QWxpZ25DbGFzc05hbWUpfHwiYnV0dG9uLXJpZ2h0Ij09PWcuYWxpZ24pJiZjLmNzcygibGVmdCIsZS5sZWZ0K2Yub3V0ZXJXaWR0aCgpLWwpO3I9ZS5sZWZ0K2w7az1rLm9mZnNldCgpLmxlZnQrCmsud2lkdGgoKTtyPmsmJmMuY3NzKCJsZWZ0IixlLmxlZnQtKHItaykpO2s9Zi5vZmZzZXQoKS5sZWZ0K2w7az5kKHUpLndpZHRoKCkmJmMuY3NzKCJsZWZ0IixlLmxlZnQtKGstZCh1KS53aWR0aCgpKSl9ZWxzZSBlPWMuaGVpZ2h0KCkvMixlPmQodSkuaGVpZ2h0KCkvMiYmKGU9ZCh1KS5oZWlnaHQoKS8yKSxjLmNzcygibWFyZ2luVG9wIiwtMSplKTtnLmJhY2tncm91bmQmJm4uYmFja2dyb3VuZCghMCxnLmJhY2tncm91bmRDbGFzc05hbWUsZy5mYWRlLGYpO2QoImRpdi5kdC1idXR0b24tYmFja2dyb3VuZCIpLm9uKCJjbGljay5kdGItY29sbGVjdGlvbiIsZnVuY3Rpb24oKXt9KTtkKCJib2R5Iikub24oImNsaWNrLmR0Yi1jb2xsZWN0aW9uIixmdW5jdGlvbihiKXt2YXIgYz1kLmZuLmFkZEJhY2s/ImFkZEJhY2siOiJhbmRTZWxmIjtkKGIudGFyZ2V0KS5wYXJlbnRzKClbY10oKS5maWx0ZXIoYSkubGVuZ3RofHxoKCl9KS5vbigia2V5dXAuZHRiLWNvbGxlY3Rpb24iLGZ1bmN0aW9uKGEpezI3PT09CmEua2V5Q29kZSYmaCgpfSk7Zy5hdXRvQ2xvc2UmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLm9uKCJidXR0b25zLWFjdGlvbi5iLWludGVybmFsIixmdW5jdGlvbihhLGIsYyxlKXtlWzBdIT09ZlswXSYmaCgpfSl9LDApfX0pO24uYmFja2dyb3VuZD1mdW5jdGlvbihhLGIsYyxlKXtjPT09cCYmKGM9NDAwKTtlfHwoZT10LmJvZHkpO2E/ZCgiPGRpdi8+IikuYWRkQ2xhc3MoYikuY3NzKCJkaXNwbGF5Iiwibm9uZSIpLmluc2VydEFmdGVyKGUpLnN0b3AoKS5mYWRlSW4oYyk6ZCgiZGl2LiIrYikuc3RvcCgpLmZhZGVPdXQoYyxmdW5jdGlvbigpe2QodGhpcykucmVtb3ZlQ2xhc3MoYikucmVtb3ZlKCl9KX07bi5pbnN0YW5jZVNlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoYT09PXB8fG51bGw9PT1hKXJldHVybiBkLm1hcChiLGZ1bmN0aW9uKGEpe3JldHVybiBhLmluc3R9KTt2YXIgYz1bXSxlPWQubWFwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIGEubmFtZX0pLGc9ZnVuY3Rpb24oYSl7aWYoZC5pc0FycmF5KGEpKWZvcih2YXIgZj0KMCxrPWEubGVuZ3RoO2Y8aztmKyspZyhhW2ZdKTtlbHNlInN0cmluZyI9PT10eXBlb2YgYT8tMSE9PWEuaW5kZXhPZigiLCIpP2coYS5zcGxpdCgiLCIpKTooYT1kLmluQXJyYXkoZC50cmltKGEpLGUpLC0xIT09YSYmYy5wdXNoKGJbYV0uaW5zdCkpOiJudW1iZXIiPT09dHlwZW9mIGEmJmMucHVzaChiW2FdLmluc3QpfTtnKGEpO3JldHVybiBjfTtuLmJ1dHRvblNlbGVjdG9yPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdLGU9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxnLGY9MCxrPWIubGVuZ3RoO2Y8aztmKyspaWYoZD1iW2ZdKWc9YyE9PXA/YytmOmYrIiIsYS5wdXNoKHtub2RlOmQubm9kZSxuYW1lOmQuY29uZi5uYW1lLGlkeDpnfSksZC5idXR0b25zJiZlKGEsZC5idXR0b25zLGcrIi0iKX0sZz1mdW5jdGlvbihhLGIpe3ZhciBmLGg9W107ZShoLGIucy5idXR0b25zKTt2YXIgaz1kLm1hcChoLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGV9KTtpZihkLmlzQXJyYXkoYSl8fAphIGluc3RhbmNlb2YgZClmb3Ioaz0wLGY9YS5sZW5ndGg7azxmO2srKylnKGFba10sYik7ZWxzZSBpZihudWxsPT09YXx8YT09PXB8fCIqIj09PWEpZm9yKGs9MCxmPWgubGVuZ3RoO2s8ZjtrKyspYy5wdXNoKHtpbnN0OmIsbm9kZTpoW2tdLm5vZGV9KTtlbHNlIGlmKCJudW1iZXIiPT09dHlwZW9mIGEpYy5wdXNoKHtpbnN0OmIsbm9kZTpiLnMuYnV0dG9uc1thXS5ub2RlfSk7ZWxzZSBpZigic3RyaW5nIj09PXR5cGVvZiBhKWlmKC0xIT09YS5pbmRleE9mKCIsIikpZm9yKGg9YS5zcGxpdCgiLCIpLGs9MCxmPWgubGVuZ3RoO2s8ZjtrKyspZyhkLnRyaW0oaFtrXSksYik7ZWxzZSBpZihhLm1hdGNoKC9eXGQrKFwtXGQrKSokLykpaz1kLm1hcChoLGZ1bmN0aW9uKGEpe3JldHVybiBhLmlkeH0pLGMucHVzaCh7aW5zdDpiLG5vZGU6aFtkLmluQXJyYXkoYSxrKV0ubm9kZX0pO2Vsc2UgaWYoLTEhPT1hLmluZGV4T2YoIjpuYW1lIikpZm9yKGE9YS5yZXBsYWNlKCI6bmFtZSIsIiIpLGs9CjAsZj1oLmxlbmd0aDtrPGY7aysrKWhba10ubmFtZT09PWEmJmMucHVzaCh7aW5zdDpiLG5vZGU6aFtrXS5ub2RlfSk7ZWxzZSBkKGspLmZpbHRlcihhKS5lYWNoKGZ1bmN0aW9uKCl7Yy5wdXNoKHtpbnN0OmIsbm9kZTp0aGlzfSl9KTtlbHNlIm9iamVjdCI9PT10eXBlb2YgYSYmYS5ub2RlTmFtZSYmKGg9ZC5pbkFycmF5KGEsayksLTEhPT1oJiZjLnB1c2goe2luc3Q6Yixub2RlOmtbaF19KSl9LGY9MCxoPWEubGVuZ3RoO2Y8aDtmKyspZyhiLGFbZl0pO3JldHVybiBjfTtuLmRlZmF1bHRzPXtidXR0b25zOlsiY29weSIsImV4Y2VsIiwiY3N2IiwicGRmIiwicHJpbnQiXSxuYW1lOiJtYWluIix0YWJJbmRleDowLGRvbTp7Y29udGFpbmVyOnt0YWc6ImRpdiIsY2xhc3NOYW1lOiJkdC1idXR0b25zIn0sY29sbGVjdGlvbjp7dGFnOiJkaXYiLGNsYXNzTmFtZToiIn0sYnV0dG9uOnt0YWc6IkFjdGl2ZVhPYmplY3QiaW4gdT8iYSI6ImJ1dHRvbiIsY2xhc3NOYW1lOiJkdC1idXR0b24iLAphY3RpdmU6ImFjdGl2ZSIsZGlzYWJsZWQ6ImRpc2FibGVkIn0sYnV0dG9uTGluZXI6e3RhZzoic3BhbiIsY2xhc3NOYW1lOiIifX19O24udmVyc2lvbj0iMS42LjEiO2QuZXh0ZW5kKHEse2NvbGxlY3Rpb246e3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5jb2xsZWN0aW9uIiwiQ29sbGVjdGlvbiIpfSxjbGFzc05hbWU6ImJ1dHRvbnMtY29sbGVjdGlvbiIsaW5pdDpmdW5jdGlvbihhLGIsYyl7Yi5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMSl9LGFjdGlvbjpmdW5jdGlvbihhLGIsYyxlKXthLnN0b3BQcm9wYWdhdGlvbigpO2UuX2NvbGxlY3Rpb24ucGFyZW50cygiYm9keSIpLmxlbmd0aD90aGlzLnBvcG92ZXIoITEsZSk6dGhpcy5wb3BvdmVyKGUuX2NvbGxlY3Rpb24sZSl9LGF0dHI6eyJhcmlhLWhhc3BvcHVwIjohMH19LGNvcHk6ZnVuY3Rpb24oYSxiKXtpZihxLmNvcHlIdG1sNSlyZXR1cm4iY29weUh0bWw1IjtpZihxLmNvcHlGbGFzaCYmcS5jb3B5Rmxhc2guYXZhaWxhYmxlKGEsCmIpKXJldHVybiJjb3B5Rmxhc2gifSxjc3Y6ZnVuY3Rpb24oYSxiKXtpZihxLmNzdkh0bWw1JiZxLmNzdkh0bWw1LmF2YWlsYWJsZShhLGIpKXJldHVybiJjc3ZIdG1sNSI7aWYocS5jc3ZGbGFzaCYmcS5jc3ZGbGFzaC5hdmFpbGFibGUoYSxiKSlyZXR1cm4iY3N2Rmxhc2gifSxleGNlbDpmdW5jdGlvbihhLGIpe2lmKHEuZXhjZWxIdG1sNSYmcS5leGNlbEh0bWw1LmF2YWlsYWJsZShhLGIpKXJldHVybiJleGNlbEh0bWw1IjtpZihxLmV4Y2VsRmxhc2gmJnEuZXhjZWxGbGFzaC5hdmFpbGFibGUoYSxiKSlyZXR1cm4iZXhjZWxGbGFzaCJ9LHBkZjpmdW5jdGlvbihhLGIpe2lmKHEucGRmSHRtbDUmJnEucGRmSHRtbDUuYXZhaWxhYmxlKGEsYikpcmV0dXJuInBkZkh0bWw1IjtpZihxLnBkZkZsYXNoJiZxLnBkZkZsYXNoLmF2YWlsYWJsZShhLGIpKXJldHVybiJwZGZGbGFzaCJ9LHBhZ2VMZW5ndGg6ZnVuY3Rpb24oYSl7YT1hLnNldHRpbmdzKClbMF0uYUxlbmd0aE1lbnU7dmFyIGI9ZC5pc0FycmF5KGFbMF0pPwphWzBdOmEsYz1kLmlzQXJyYXkoYVswXSk/YVsxXTphO3JldHVybntleHRlbmQ6ImNvbGxlY3Rpb24iLHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5wYWdlTGVuZ3RoIix7Ii0xIjoiU2hvdyBhbGwgcm93cyIsXzoiU2hvdyAlZCByb3dzIn0sYS5wYWdlLmxlbigpKX0sY2xhc3NOYW1lOiJidXR0b25zLXBhZ2UtbGVuZ3RoIixhdXRvQ2xvc2U6ITAsYnV0dG9uczpkLm1hcChiLGZ1bmN0aW9uKGEsYil7cmV0dXJue3RleHQ6Y1tiXSxjbGFzc05hbWU6ImJ1dHRvbi1wYWdlLWxlbmd0aCIsYWN0aW9uOmZ1bmN0aW9uKGIsYyl7Yy5wYWdlLmxlbihhKS5kcmF3KCl9LGluaXQ6ZnVuY3Rpb24oYixjLGQpe3ZhciBlPXRoaXM7Yz1mdW5jdGlvbigpe2UuYWN0aXZlKGIucGFnZS5sZW4oKT09PWEpfTtiLm9uKCJsZW5ndGguZHQiK2QubmFtZXNwYWNlLGMpO2MoKX0sZGVzdHJveTpmdW5jdGlvbihhLGIsYyl7YS5vZmYoImxlbmd0aC5kdCIrYy5uYW1lc3BhY2UpfX19KSwKaW5pdDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpczthLm9uKCJsZW5ndGguZHQiK2MubmFtZXNwYWNlLGZ1bmN0aW9uKCl7ZC50ZXh0KGMudGV4dCl9KX0sZGVzdHJveTpmdW5jdGlvbihhLGIsYyl7YS5vZmYoImxlbmd0aC5kdCIrYy5uYW1lc3BhY2UpfX19fSk7bS5BcGkucmVnaXN0ZXIoImJ1dHRvbnMoKSIsZnVuY3Rpb24oYSxiKXtiPT09cCYmKGI9YSxhPXApO3RoaXMuc2VsZWN0b3IuYnV0dG9uR3JvdXA9YTt2YXIgYz10aGlzLml0ZXJhdG9yKCEwLCJ0YWJsZSIsZnVuY3Rpb24oYyl7aWYoYy5fYnV0dG9ucylyZXR1cm4gbi5idXR0b25TZWxlY3RvcihuLmluc3RhbmNlU2VsZWN0b3IoYSxjLl9idXR0b25zKSxiKX0sITApO2MuX2dyb3VwU2VsZWN0b3I9YTtyZXR1cm4gY30pO20uQXBpLnJlZ2lzdGVyKCJidXR0b24oKSIsZnVuY3Rpb24oYSxiKXthPXRoaXMuYnV0dG9ucyhhLGIpOzE8YS5sZW5ndGgmJmEuc3BsaWNlKDEsYS5sZW5ndGgpO3JldHVybiBhfSk7bS5BcGkucmVnaXN0ZXJQbHVyYWwoImJ1dHRvbnMoKS5hY3RpdmUoKSIsCiJidXR0b24oKS5hY3RpdmUoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1wP3RoaXMubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLmluc3QuYWN0aXZlKGEubm9kZSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oYil7Yi5pbnN0LmFjdGl2ZShiLm5vZGUsYSl9KX0pO20uQXBpLnJlZ2lzdGVyUGx1cmFsKCJidXR0b25zKCkuYWN0aW9uKCkiLCJidXR0b24oKS5hY3Rpb24oKSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1wP3RoaXMubWFwKGZ1bmN0aW9uKGEpe3JldHVybiBhLmluc3QuYWN0aW9uKGEubm9kZSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oYil7Yi5pbnN0LmFjdGlvbihiLm5vZGUsYSl9KX0pO20uQXBpLnJlZ2lzdGVyKFsiYnV0dG9ucygpLmVuYWJsZSgpIiwiYnV0dG9uKCkuZW5hYmxlKCkiXSxmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2IuaW5zdC5lbmFibGUoYi5ub2RlLGEpfSl9KTttLkFwaS5yZWdpc3RlcihbImJ1dHRvbnMoKS5kaXNhYmxlKCkiLAoiYnV0dG9uKCkuZGlzYWJsZSgpIl0sZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGEpe2EuaW5zdC5kaXNhYmxlKGEubm9kZSl9KX0pO20uQXBpLnJlZ2lzdGVyUGx1cmFsKCJidXR0b25zKCkubm9kZXMoKSIsImJ1dHRvbigpLm5vZGUoKSIsZnVuY3Rpb24oKXt2YXIgYT1kKCk7ZCh0aGlzLmVhY2goZnVuY3Rpb24oYil7YT1hLmFkZChiLmluc3Qubm9kZShiLm5vZGUpKX0pKTtyZXR1cm4gYX0pO20uQXBpLnJlZ2lzdGVyUGx1cmFsKCJidXR0b25zKCkucHJvY2Vzc2luZygpIiwiYnV0dG9uKCkucHJvY2Vzc2luZygpIixmdW5jdGlvbihhKXtyZXR1cm4gYT09PXA/dGhpcy5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5zdC5wcm9jZXNzaW5nKGEubm9kZSl9KTp0aGlzLmVhY2goZnVuY3Rpb24oYil7Yi5pbnN0LnByb2Nlc3NpbmcoYi5ub2RlLGEpfSl9KTttLkFwaS5yZWdpc3RlclBsdXJhbCgiYnV0dG9ucygpLnRleHQoKSIsImJ1dHRvbigpLnRleHQoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT0KcD90aGlzLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYS5pbnN0LnRleHQoYS5ub2RlKX0pOnRoaXMuZWFjaChmdW5jdGlvbihiKXtiLmluc3QudGV4dChiLm5vZGUsYSl9KX0pO20uQXBpLnJlZ2lzdGVyUGx1cmFsKCJidXR0b25zKCkudHJpZ2dlcigpIiwiYnV0dG9uKCkudHJpZ2dlcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYSl7YS5pbnN0Lm5vZGUoYS5ub2RlKS50cmlnZ2VyKCJjbGljayIpfSl9KTttLkFwaS5yZWdpc3RlcigiYnV0dG9uKCkucG9wb3ZlcigpIixmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gYy5pbnN0Ll9wb3BvdmVyKGEsdGhpcy5idXR0b24odGhpc1swXS5ub2RlKSxiKX0pfSk7bS5BcGkucmVnaXN0ZXIoImJ1dHRvbnMoKS5jb250YWluZXJzKCkiLGZ1bmN0aW9uKCl7dmFyIGE9ZCgpLGI9dGhpcy5fZ3JvdXBTZWxlY3Rvcjt0aGlzLml0ZXJhdG9yKCEwLCJ0YWJsZSIsZnVuY3Rpb24oYyl7aWYoYy5fYnV0dG9ucyl7Yz0Kbi5pbnN0YW5jZVNlbGVjdG9yKGIsYy5fYnV0dG9ucyk7Zm9yKHZhciBkPTAsZz1jLmxlbmd0aDtkPGc7ZCsrKWE9YS5hZGQoY1tkXS5jb250YWluZXIoKSl9fSk7cmV0dXJuIGF9KTttLkFwaS5yZWdpc3RlcigiYnV0dG9ucygpLmNvbnRhaW5lcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRhaW5lcnMoKS5lcSgwKX0pO20uQXBpLnJlZ2lzdGVyKCJidXR0b24oKS5hZGQoKSIsZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNvbnRleHQ7Yy5sZW5ndGgmJihjPW4uaW5zdGFuY2VTZWxlY3Rvcih0aGlzLl9ncm91cFNlbGVjdG9yLGNbMF0uX2J1dHRvbnMpLGMubGVuZ3RoJiZjWzBdLmFkZChiLGEpKTtyZXR1cm4gdGhpcy5idXR0b24odGhpcy5fZ3JvdXBTZWxlY3RvcixhKX0pO20uQXBpLnJlZ2lzdGVyKCJidXR0b25zKCkuZGVzdHJveSgpIixmdW5jdGlvbigpe3RoaXMucGx1Y2soImluc3QiKS51bmlxdWUoKS5lYWNoKGZ1bmN0aW9uKGEpe2EuZGVzdHJveSgpfSk7cmV0dXJuIHRoaXN9KTsKbS5BcGkucmVnaXN0ZXJQbHVyYWwoImJ1dHRvbnMoKS5yZW1vdmUoKSIsImJ1dHRvbnMoKS5yZW1vdmUoKSIsZnVuY3Rpb24oKXt0aGlzLmVhY2goZnVuY3Rpb24oYSl7YS5pbnN0LnJlbW92ZShhLm5vZGUpfSk7cmV0dXJuIHRoaXN9KTt2YXIgdjttLkFwaS5yZWdpc3RlcigiYnV0dG9ucy5pbmZvKCkiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZT10aGlzO2lmKCExPT09YSlyZXR1cm4gdGhpcy5vZmYoImRlc3Ryb3kuYnRuLWluZm8iKSxkKCIjZGF0YXRhYmxlc19idXR0b25zX2luZm8iKS5mYWRlT3V0KGZ1bmN0aW9uKCl7ZCh0aGlzKS5yZW1vdmUoKX0pLGNsZWFyVGltZW91dCh2KSx2PW51bGwsdGhpczt2JiZjbGVhclRpbWVvdXQodik7ZCgiI2RhdGF0YWJsZXNfYnV0dG9uc19pbmZvIikubGVuZ3RoJiZkKCIjZGF0YXRhYmxlc19idXR0b25zX2luZm8iKS5yZW1vdmUoKTthPWE/IjxoMj4iK2ErIjwvaDI+IjoiIjtkKCc8ZGl2IGlkPSJkYXRhdGFibGVzX2J1dHRvbnNfaW5mbyIgY2xhc3M9ImR0LWJ1dHRvbi1pbmZvIi8+JykuaHRtbChhKS5hcHBlbmQoZCgiPGRpdi8+IilbInN0cmluZyI9PT0KdHlwZW9mIGI/Imh0bWwiOiJhcHBlbmQiXShiKSkuY3NzKCJkaXNwbGF5Iiwibm9uZSIpLmFwcGVuZFRvKCJib2R5IikuZmFkZUluKCk7YyE9PXAmJjAhPT1jJiYodj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5idXR0b25zLmluZm8oITEpfSxjKSk7dGhpcy5vbigiZGVzdHJveS5idG4taW5mbyIsZnVuY3Rpb24oKXtlLmJ1dHRvbnMuaW5mbyghMSl9KTtyZXR1cm4gdGhpc30pO20uQXBpLnJlZ2lzdGVyKCJidXR0b25zLmV4cG9ydERhdGEoKSIsZnVuY3Rpb24oYSl7aWYodGhpcy5jb250ZXh0Lmxlbmd0aClyZXR1cm4gRShuZXcgbS5BcGkodGhpcy5jb250ZXh0WzBdKSxhKX0pO20uQXBpLnJlZ2lzdGVyKCJidXR0b25zLmV4cG9ydEluZm8oKSIsZnVuY3Rpb24oYSl7YXx8KGE9e30pO3ZhciBiPWE7dmFyIGM9IioiPT09Yi5maWxlbmFtZSYmIioiIT09Yi50aXRsZSYmYi50aXRsZSE9PXAmJm51bGwhPT1iLnRpdGxlJiYiIiE9PWIudGl0bGU/Yi50aXRsZTpiLmZpbGVuYW1lOyJmdW5jdGlvbiI9PT0KdHlwZW9mIGMmJihjPWMoKSk7Yz09PXB8fG51bGw9PT1jP2M9bnVsbDooLTEhPT1jLmluZGV4T2YoIioiKSYmKGM9ZC50cmltKGMucmVwbGFjZSgiKiIsZCgiaGVhZCA+IHRpdGxlIikudGV4dCgpKSkpLGM9Yy5yZXBsYWNlKC9bXmEtekEtWjAtOV9cdTAwQTEtXHVGRkZGXC4sXC1fICFcKFwpXS9nLCIiKSwoYj14KGIuZXh0ZW5zaW9uKSl8fChiPSIiKSxjKz1iKTtiPXgoYS50aXRsZSk7Yj1udWxsPT09Yj9udWxsOi0xIT09Yi5pbmRleE9mKCIqIik/Yi5yZXBsYWNlKCIqIixkKCJoZWFkID4gdGl0bGUiKS50ZXh0KCl8fCJFeHBvcnRlZCBkYXRhIik6YjtyZXR1cm57ZmlsZW5hbWU6Yyx0aXRsZTpiLG1lc3NhZ2VUb3A6eih0aGlzLGEubWVzc2FnZXx8YS5tZXNzYWdlVG9wLCJ0b3AiKSxtZXNzYWdlQm90dG9tOnoodGhpcyxhLm1lc3NhZ2VCb3R0b20sImJvdHRvbSIpfX0pO3ZhciB4PWZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT09YXx8YT09PXA/bnVsbDoiZnVuY3Rpb24iPT09dHlwZW9mIGE/CmEoKTphfSx6PWZ1bmN0aW9uKGEsYixjKXtiPXgoYik7aWYobnVsbD09PWIpcmV0dXJuIG51bGw7YT1kKCJjYXB0aW9uIixhLnRhYmxlKCkuY29udGFpbmVyKCkpLmVxKDApO3JldHVybiIqIj09PWI/YS5jc3MoImNhcHRpb24tc2lkZSIpIT09Yz9udWxsOmEubGVuZ3RoP2EudGV4dCgpOiIiOmJ9LEE9ZCgiPHRleHRhcmVhLz4iKVswXSxFPWZ1bmN0aW9uKGEsYil7dmFyIGM9ZC5leHRlbmQoITAse30se3Jvd3M6bnVsbCxjb2x1bW5zOiIiLG1vZGlmaWVyOntzZWFyY2g6ImFwcGxpZWQiLG9yZGVyOiJhcHBsaWVkIn0sb3J0aG9nb25hbDoiZGlzcGxheSIsc3RyaXBIdG1sOiEwLHN0cmlwTmV3bGluZXM6ITAsZGVjb2RlRW50aXRpZXM6ITAsdHJpbTohMCxmb3JtYXQ6e2hlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4gZShhKX0sZm9vdGVyOmZ1bmN0aW9uKGEpe3JldHVybiBlKGEpfSxib2R5OmZ1bmN0aW9uKGEpe3JldHVybiBlKGEpfX0sY3VzdG9taXplRGF0YTpudWxsfSxiKSxlPWZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciIT09CnR5cGVvZiBhKXJldHVybiBhO2E9YS5yZXBsYWNlKC88c2NyaXB0XGJbXjxdKig/Oig/ITxcL3NjcmlwdD4pPFtePF0qKSo8XC9zY3JpcHQ+L2dpLCIiKTthPWEucmVwbGFjZSgvPCFcLVwtLio/XC1cLT4vZywiIik7Yy5zdHJpcEh0bWwmJihhPWEucmVwbGFjZSgvPFtePl0qPi9nLCIiKSk7Yy50cmltJiYoYT1hLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKSk7Yy5zdHJpcE5ld2xpbmVzJiYoYT1hLnJlcGxhY2UoL1xuL2csIiAiKSk7Yy5kZWNvZGVFbnRpdGllcyYmKEEuaW5uZXJIVE1MPWEsYT1BLnZhbHVlKTtyZXR1cm4gYX07Yj1hLmNvbHVtbnMoYy5jb2x1bW5zKS5pbmRleGVzKCkubWFwKGZ1bmN0aW9uKGIpe3ZhciBkPWEuY29sdW1uKGIpLmhlYWRlcigpO3JldHVybiBjLmZvcm1hdC5oZWFkZXIoZC5pbm5lckhUTUwsYixkKX0pLnRvQXJyYXkoKTt2YXIgZz1hLnRhYmxlKCkuZm9vdGVyKCk/YS5jb2x1bW5zKGMuY29sdW1ucykuaW5kZXhlcygpLm1hcChmdW5jdGlvbihiKXt2YXIgZD0KYS5jb2x1bW4oYikuZm9vdGVyKCk7cmV0dXJuIGMuZm9ybWF0LmZvb3RlcihkP2QuaW5uZXJIVE1MOiIiLGIsZCl9KS50b0FycmF5KCk6bnVsbCxmPWQuZXh0ZW5kKHt9LGMubW9kaWZpZXIpO2Euc2VsZWN0JiYiZnVuY3Rpb24iPT09dHlwZW9mIGEuc2VsZWN0LmluZm8mJmYuc2VsZWN0ZWQ9PT1wJiZhLnJvd3MoYy5yb3dzLGQuZXh0ZW5kKHtzZWxlY3RlZDohMH0sZikpLmFueSgpJiZkLmV4dGVuZChmLHtzZWxlY3RlZDohMH0pO2Y9YS5yb3dzKGMucm93cyxmKS5pbmRleGVzKCkudG9BcnJheSgpO3ZhciBoPWEuY2VsbHMoZixjLmNvbHVtbnMpO2Y9aC5yZW5kZXIoYy5vcnRob2dvbmFsKS50b0FycmF5KCk7aD1oLm5vZGVzKCkudG9BcnJheSgpO2Zvcih2YXIgaz1iLmxlbmd0aCxtPVtdLGw9MCxuPTAscT0wPGs/Zi5sZW5ndGgvazowO248cTtuKyspe2Zvcih2YXIgdT1ba10sdD0wO3Q8azt0KyspdVt0XT1jLmZvcm1hdC5ib2R5KGZbbF0sbix0LGhbbF0pLGwrKzttW25dPXV9Yj17aGVhZGVyOmIsCmZvb3RlcjpnLGJvZHk6bX07Yy5jdXN0b21pemVEYXRhJiZjLmN1c3RvbWl6ZURhdGEoYik7cmV0dXJuIGJ9O2QuZm4uZGF0YVRhYmxlLkJ1dHRvbnM9bjtkLmZuLkRhdGFUYWJsZS5CdXR0b25zPW47ZCh0KS5vbigiaW5pdC5kdCBwbHVnaW4taW5pdC5kdCIsZnVuY3Rpb24oYSxiKXsiZHQiPT09YS5uYW1lc3BhY2UmJihhPWIub0luaXQuYnV0dG9uc3x8bS5kZWZhdWx0cy5idXR0b25zKSYmIWIuX2J1dHRvbnMmJihuZXcgbihiLGEpKS5jb250YWluZXIoKX0pO20uZXh0LmZlYXR1cmUucHVzaCh7Zm5Jbml0OnksY0ZlYXR1cmU6IkIifSk7bS5leHQuZmVhdHVyZXMmJm0uZXh0LmZlYXR1cmVzLnJlZ2lzdGVyKCJidXR0b25zIix5KTtyZXR1cm4gbn0pOwo="></script>
|
|
<script src="data:application/javascript;base64,LyohCiBGbGFzaCBleHBvcnQgYnV0dG9ucyBmb3IgQnV0dG9ucyBhbmQgRGF0YVRhYmxlcy4KIDIwMTUtMjAxNyBTcHJ5TWVkaWEgTHRkIC0gZGF0YXRhYmxlcy5uZXQvbGljZW5zZQoKIFplcm9DbGlwYmFvcmQgLSBNSVQgbGljZW5zZQogQ29weXJpZ2h0IChjKSAyMDEyIEpvc2VwaCBIdWNrYWJ5CiovCihmdW5jdGlvbihnKXsiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiLCJkYXRhdGFibGVzLm5ldCIsImRhdGF0YWJsZXMubmV0LWJ1dHRvbnMiXSxmdW5jdGlvbihuKXtyZXR1cm4gZyhuLHdpbmRvdyxkb2N1bWVudCl9KToib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKG4sbSl7bnx8KG49d2luZG93KTttJiZtLmZuLmRhdGFUYWJsZXx8KG09cmVxdWlyZSgiZGF0YXRhYmxlcy5uZXQiKShuLG0pLiQpO20uZm4uZGF0YVRhYmxlLkJ1dHRvbnN8fHJlcXVpcmUoImRhdGF0YWJsZXMubmV0LWJ1dHRvbnMiKShuLG0pO3JldHVybiBnKG0sbixuLmRvY3VtZW50KX06ZyhqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGcsbixtLHUpe2Z1bmN0aW9uIEEoYSl7Zm9yKHZhciBiPSIiOzA8PWE7KWI9U3RyaW5nLmZyb21DaGFyQ29kZShhJTI2KzY1KStiLGE9TWF0aC5mbG9vcihhLzI2KS0xOwpyZXR1cm4gYn1mdW5jdGlvbiByKGEsYixjKXt2YXIgZD1hLmNyZWF0ZUVsZW1lbnQoYik7YyYmKGMuYXR0ciYmZyhkKS5hdHRyKGMuYXR0ciksYy5jaGlsZHJlbiYmZy5lYWNoKGMuY2hpbGRyZW4sZnVuY3Rpb24oYSxiKXtkLmFwcGVuZENoaWxkKGIpfSksbnVsbCE9PWMudGV4dCYmYy50ZXh0IT09dSYmZC5hcHBlbmRDaGlsZChhLmNyZWF0ZVRleHROb2RlKGMudGV4dCkpKTtyZXR1cm4gZH1mdW5jdGlvbiBHKGEsYil7dmFyIGM9YS5oZWFkZXJbYl0ubGVuZ3RoO2EuZm9vdGVyJiZhLmZvb3RlcltiXS5sZW5ndGg+YyYmKGM9YS5mb290ZXJbYl0ubGVuZ3RoKTtmb3IodmFyIGQ9MCxmPWEuYm9keS5sZW5ndGg7ZDxmO2QrKyl7dmFyIGU9YS5ib2R5W2RdW2JdO2U9bnVsbCE9PWUmJmUhPT11P2UudG9TdHJpbmcoKToiIjstMSE9PWUuaW5kZXhPZigiXG4iKT8oZT1lLnNwbGl0KCJcbiIpLGUuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBiLmxlbmd0aC1hLmxlbmd0aH0pLGU9ZVswXS5sZW5ndGgpOgplPWUubGVuZ3RoO2U+YyYmKGM9ZSk7aWYoNDA8YylyZXR1cm4gNTJ9Yyo9MS4zO3JldHVybiA2PGM/Yzo2fWZ1bmN0aW9uIEIoYSl7dj09PXUmJih2PS0xPT09ei5zZXJpYWxpemVUb1N0cmluZyhnLnBhcnNlWE1MKHRbInhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbCJdKSkuaW5kZXhPZigieG1sbnM6ciIpKTtnLmVhY2goYSxmdW5jdGlvbihiLGMpe2lmKGcuaXNQbGFpbk9iamVjdChjKSlCKGMpO2Vsc2V7aWYodil7dmFyIGQ9Yy5jaGlsZE5vZGVzWzBdLGYsZT1bXTtmb3IoZj1kLmF0dHJpYnV0ZXMubGVuZ3RoLTE7MDw9ZjtmLS0pe3ZhciBoPWQuYXR0cmlidXRlc1tmXS5ub2RlTmFtZTt2YXIgaz1kLmF0dHJpYnV0ZXNbZl0ubm9kZVZhbHVlOy0xIT09aC5pbmRleE9mKCI6IikmJihlLnB1c2goe25hbWU6aCx2YWx1ZTprfSksZC5yZW1vdmVBdHRyaWJ1dGUoaCkpfWY9MDtmb3IoaD1lLmxlbmd0aDtmPGg7ZisrKWs9Yy5jcmVhdGVBdHRyaWJ1dGUoZVtmXS5uYW1lLnJlcGxhY2UoIjoiLAoiX2R0X2JfbmFtZXNwYWNlX3Rva2VuXyIpKSxrLnZhbHVlPWVbZl0udmFsdWUsZC5zZXRBdHRyaWJ1dGVOb2RlKGspfWM9ei5zZXJpYWxpemVUb1N0cmluZyhjKTt2JiYoLTE9PT1jLmluZGV4T2YoIjw/eG1sIikmJihjPSc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+JytjKSxjPWMucmVwbGFjZSgvX2R0X2JfbmFtZXNwYWNlX3Rva2VuXy9nLCI6IikpO2M9Yy5yZXBsYWNlKC88KFtePD5dKj8pIHhtbG5zPSIiKFtePD5dKj8pPi9nLCI8JDEgJDI+Iik7YVtiXT1jfX0pfXZhciBsPWcuZm4uZGF0YVRhYmxlLGg9e3ZlcnNpb246IjEuMC40LVRhYmxlVG9vbHMyIixjbGllbnRzOnt9LG1vdmllUGF0aDoiIixuZXh0SWQ6MSwkOmZ1bmN0aW9uKGEpeyJzdHJpbmciPT10eXBlb2YgYSYmKGE9bS5nZXRFbGVtZW50QnlJZChhKSk7YS5hZGRDbGFzc3x8KGEuaGlkZT1mdW5jdGlvbigpe3RoaXMuc3R5bGUuZGlzcGxheT0ibm9uZSJ9LGEuc2hvdz0KZnVuY3Rpb24oKXt0aGlzLnN0eWxlLmRpc3BsYXk9IiJ9LGEuYWRkQ2xhc3M9ZnVuY3Rpb24oYSl7dGhpcy5yZW1vdmVDbGFzcyhhKTt0aGlzLmNsYXNzTmFtZSs9IiAiK2F9LGEucmVtb3ZlQ2xhc3M9ZnVuY3Rpb24oYSl7dGhpcy5jbGFzc05hbWU9dGhpcy5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCJcXHMqIithKyJcXHMqIiksIiAiKS5yZXBsYWNlKC9eXHMrLywiIikucmVwbGFjZSgvXHMrJC8sIiIpfSxhLmhhc0NsYXNzPWZ1bmN0aW9uKGEpe3JldHVybiEhdGhpcy5jbGFzc05hbWUubWF0Y2gobmV3IFJlZ0V4cCgiXFxzKiIrYSsiXFxzKiIpKX0pO3JldHVybiBhfSxzZXRNb3ZpZVBhdGg6ZnVuY3Rpb24oYSl7dGhpcy5tb3ZpZVBhdGg9YX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSxiLGMpeyhhPXRoaXMuY2xpZW50c1thXSkmJmEucmVjZWl2ZUV2ZW50KGIsYyl9LGxvZzpmdW5jdGlvbihhKXtjb25zb2xlLmxvZygiRmxhc2g6ICIrYSl9LHJlZ2lzdGVyOmZ1bmN0aW9uKGEsCmIpe3RoaXMuY2xpZW50c1thXT1ifSxnZXRET01PYmplY3RQb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIgYj17bGVmdDowLHRvcDowLHdpZHRoOmEud2lkdGg/YS53aWR0aDphLm9mZnNldFdpZHRoLGhlaWdodDphLmhlaWdodD9hLmhlaWdodDphLm9mZnNldEhlaWdodH07IiIhPT1hLnN0eWxlLndpZHRoJiYoYi53aWR0aD1hLnN0eWxlLndpZHRoLnJlcGxhY2UoInB4IiwiIikpOyIiIT09YS5zdHlsZS5oZWlnaHQmJihiLmhlaWdodD1hLnN0eWxlLmhlaWdodC5yZXBsYWNlKCJweCIsIiIpKTtmb3IoO2E7KWIubGVmdCs9YS5vZmZzZXRMZWZ0LGIudG9wKz1hLm9mZnNldFRvcCxhPWEub2Zmc2V0UGFyZW50O3JldHVybiBifSxDbGllbnQ6ZnVuY3Rpb24oYSl7dGhpcy5oYW5kbGVycz17fTt0aGlzLmlkPWgubmV4dElkKys7dGhpcy5tb3ZpZUlkPSJaZXJvQ2xpcGJvYXJkX1RhYmxlVG9vbHNNb3ZpZV8iK3RoaXMuaWQ7aC5yZWdpc3Rlcih0aGlzLmlkLHRoaXMpO2EmJnRoaXMuZ2x1ZShhKX19OwpoLkNsaWVudC5wcm90b3R5cGU9e2lkOjAscmVhZHk6ITEsbW92aWU6bnVsbCxjbGlwVGV4dDoiIixmaWxlTmFtZToiIixhY3Rpb246ImNvcHkiLGhhbmRDdXJzb3JFbmFibGVkOiEwLGNzc0VmZmVjdHM6ITAsaGFuZGxlcnM6bnVsbCxzaXplZDohMSxzaGVldE5hbWU6IiIsZ2x1ZTpmdW5jdGlvbihhLGIpe3RoaXMuZG9tRWxlbWVudD1oLiQoYSk7YT05OTt0aGlzLmRvbUVsZW1lbnQuc3R5bGUuekluZGV4JiYoYT1wYXJzZUludCh0aGlzLmRvbUVsZW1lbnQuc3R5bGUuekluZGV4LDEwKSsxKTt2YXIgYz1oLmdldERPTU9iamVjdFBvc2l0aW9uKHRoaXMuZG9tRWxlbWVudCk7dGhpcy5kaXY9bS5jcmVhdGVFbGVtZW50KCJkaXYiKTt2YXIgZD10aGlzLmRpdi5zdHlsZTtkLnBvc2l0aW9uPSJhYnNvbHV0ZSI7ZC5sZWZ0PSIwcHgiO2QudG9wPSIwcHgiO2Qud2lkdGg9Yy53aWR0aCsicHgiO2QuaGVpZ2h0PWMuaGVpZ2h0KyJweCI7ZC56SW5kZXg9YTsidW5kZWZpbmVkIiE9dHlwZW9mIGImJgoiIiE9PWImJih0aGlzLmRpdi50aXRsZT1iKTswIT09Yy53aWR0aCYmMCE9PWMuaGVpZ2h0JiYodGhpcy5zaXplZD0hMCk7dGhpcy5kb21FbGVtZW50JiYodGhpcy5kb21FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZGl2KSx0aGlzLmRpdi5pbm5lckhUTUw9dGhpcy5nZXRIVE1MKGMud2lkdGgsYy5oZWlnaHQpLnJlcGxhY2UoLyYvZywiJmFtcDsiKSl9LHBvc2l0aW9uRWxlbWVudDpmdW5jdGlvbigpe3ZhciBhPWguZ2V0RE9NT2JqZWN0UG9zaXRpb24odGhpcy5kb21FbGVtZW50KSxiPXRoaXMuZGl2LnN0eWxlO2IucG9zaXRpb249ImFic29sdXRlIjtiLndpZHRoPWEud2lkdGgrInB4IjtiLmhlaWdodD1hLmhlaWdodCsicHgiOzAhPT1hLndpZHRoJiYwIT09YS5oZWlnaHQmJih0aGlzLnNpemVkPSEwLGI9dGhpcy5kaXYuY2hpbGROb2Rlc1swXSxiLndpZHRoPWEud2lkdGgsYi5oZWlnaHQ9YS5oZWlnaHQpfSxnZXRIVE1MOmZ1bmN0aW9uKGEsYil7dmFyIGM9IiIsZD0iaWQ9Iit0aGlzLmlkKwoiJndpZHRoPSIrYSsiJmhlaWdodD0iK2I7aWYobmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvTVNJRS8pKXt2YXIgZj1sb2NhdGlvbi5ocmVmLm1hdGNoKC9eaHR0cHMvaSk/Imh0dHBzOi8vIjoiaHR0cDovLyI7Yys9JzxvYmplY3QgY2xhc3NpZD0iY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIiBjb2RlYmFzZT0iJytmKydkb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZmxhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj0xMCwwLDAsMCIgd2lkdGg9IicrYSsnIiBoZWlnaHQ9IicrYisnIiBpZD0iJyt0aGlzLm1vdmllSWQrJyIgYWxpZ249Im1pZGRsZSI+PHBhcmFtIG5hbWU9ImFsbG93U2NyaXB0QWNjZXNzIiB2YWx1ZT0iYWx3YXlzIiAvPjxwYXJhbSBuYW1lPSJhbGxvd0Z1bGxTY3JlZW4iIHZhbHVlPSJmYWxzZSIgLz48cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSInK2gubW92aWVQYXRoKyciIC8+PHBhcmFtIG5hbWU9Imxvb3AiIHZhbHVlPSJmYWxzZSIgLz48cGFyYW0gbmFtZT0ibWVudSIgdmFsdWU9ImZhbHNlIiAvPjxwYXJhbSBuYW1lPSJxdWFsaXR5IiB2YWx1ZT0iYmVzdCIgLz48cGFyYW0gbmFtZT0iYmdjb2xvciIgdmFsdWU9IiNmZmZmZmYiIC8+PHBhcmFtIG5hbWU9ImZsYXNodmFycyIgdmFsdWU9IicrCmQrJyIvPjxwYXJhbSBuYW1lPSJ3bW9kZSIgdmFsdWU9InRyYW5zcGFyZW50Ii8+PC9vYmplY3Q+J31lbHNlIGMrPSc8ZW1iZWQgaWQ9IicrdGhpcy5tb3ZpZUlkKyciIHNyYz0iJytoLm1vdmllUGF0aCsnIiBsb29wPSJmYWxzZSIgbWVudT0iZmFsc2UiIHF1YWxpdHk9ImJlc3QiIGJnY29sb3I9IiNmZmZmZmYiIHdpZHRoPSInK2ErJyIgaGVpZ2h0PSInK2IrJyIgbmFtZT0iJyt0aGlzLm1vdmllSWQrJyIgYWxpZ249Im1pZGRsZSIgYWxsb3dTY3JpcHRBY2Nlc3M9ImFsd2F5cyIgYWxsb3dGdWxsU2NyZWVuPSJmYWxzZSIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiBmbGFzaHZhcnM9IicrZCsnIiB3bW9kZT0idHJhbnNwYXJlbnQiIC8+JztyZXR1cm4gY30saGlkZTpmdW5jdGlvbigpe3RoaXMuZGl2JiYodGhpcy5kaXYuc3R5bGUubGVmdD0iLTIwMDBweCIpfSwKc2hvdzpmdW5jdGlvbigpe3RoaXMucmVwb3NpdGlvbigpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmRvbUVsZW1lbnQmJnRoaXMuZGl2JiYoZyh0aGlzLmRpdikucmVtb3ZlKCksdGhpcy5kaXY9dGhpcy5kb21FbGVtZW50PW51bGwsZy5lYWNoKGguY2xpZW50cyxmdW5jdGlvbihiLGMpe2M9PT1hJiZkZWxldGUgaC5jbGllbnRzW2JdfSkpfSxyZXBvc2l0aW9uOmZ1bmN0aW9uKGEpe2EmJigodGhpcy5kb21FbGVtZW50PWguJChhKSl8fHRoaXMuaGlkZSgpKTtpZih0aGlzLmRvbUVsZW1lbnQmJnRoaXMuZGl2KXthPWguZ2V0RE9NT2JqZWN0UG9zaXRpb24odGhpcy5kb21FbGVtZW50KTt2YXIgYj10aGlzLmRpdi5zdHlsZTtiLmxlZnQ9IiIrYS5sZWZ0KyJweCI7Yi50b3A9IiIrYS50b3ArInB4In19LGNsZWFyVGV4dDpmdW5jdGlvbigpe3RoaXMuY2xpcFRleHQ9IiI7dGhpcy5yZWFkeSYmdGhpcy5tb3ZpZS5jbGVhclRleHQoKX0sYXBwZW5kVGV4dDpmdW5jdGlvbihhKXt0aGlzLmNsaXBUZXh0Kz0KYTt0aGlzLnJlYWR5JiZ0aGlzLm1vdmllLmFwcGVuZFRleHQoYSl9LHNldFRleHQ6ZnVuY3Rpb24oYSl7dGhpcy5jbGlwVGV4dD1hO3RoaXMucmVhZHkmJnRoaXMubW92aWUuc2V0VGV4dChhKX0sc2V0RmlsZU5hbWU6ZnVuY3Rpb24oYSl7dGhpcy5maWxlTmFtZT1hO3RoaXMucmVhZHkmJnRoaXMubW92aWUuc2V0RmlsZU5hbWUoYSl9LHNldFNoZWV0RGF0YTpmdW5jdGlvbihhKXt0aGlzLnJlYWR5JiZ0aGlzLm1vdmllLnNldFNoZWV0RGF0YShKU09OLnN0cmluZ2lmeShhKSl9LHNldEFjdGlvbjpmdW5jdGlvbihhKXt0aGlzLmFjdGlvbj1hO3RoaXMucmVhZHkmJnRoaXMubW92aWUuc2V0QWN0aW9uKGEpfSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGEsYil7YT1hLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9eb24vLCIiKTt0aGlzLmhhbmRsZXJzW2FdfHwodGhpcy5oYW5kbGVyc1thXT1bXSk7dGhpcy5oYW5kbGVyc1thXS5wdXNoKGIpfSxzZXRIYW5kQ3Vyc29yOmZ1bmN0aW9uKGEpe3RoaXMuaGFuZEN1cnNvckVuYWJsZWQ9CmE7dGhpcy5yZWFkeSYmdGhpcy5tb3ZpZS5zZXRIYW5kQ3Vyc29yKGEpfSxzZXRDU1NFZmZlY3RzOmZ1bmN0aW9uKGEpe3RoaXMuY3NzRWZmZWN0cz0hIWF9LHJlY2VpdmVFdmVudDpmdW5jdGlvbihhLGIpe2E9YS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXm9uLywiIik7c3dpdGNoKGEpe2Nhc2UgImxvYWQiOnRoaXMubW92aWU9bS5nZXRFbGVtZW50QnlJZCh0aGlzLm1vdmllSWQpO2lmKCF0aGlzLm1vdmllKXt2YXIgYz10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjLnJlY2VpdmVFdmVudCgibG9hZCIsbnVsbCl9LDEpO3JldHVybn1pZighdGhpcy5yZWFkeSYmbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvRmlyZWZveC8pJiZuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9XaW5kb3dzLykpe2M9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5yZWNlaXZlRXZlbnQoImxvYWQiLG51bGwpfSwxMDApO3RoaXMucmVhZHk9ITA7cmV0dXJufXRoaXMucmVhZHk9CiEwO3RoaXMubW92aWUuY2xlYXJUZXh0KCk7dGhpcy5tb3ZpZS5hcHBlbmRUZXh0KHRoaXMuY2xpcFRleHQpO3RoaXMubW92aWUuc2V0RmlsZU5hbWUodGhpcy5maWxlTmFtZSk7dGhpcy5tb3ZpZS5zZXRBY3Rpb24odGhpcy5hY3Rpb24pO3RoaXMubW92aWUuc2V0SGFuZEN1cnNvcih0aGlzLmhhbmRDdXJzb3JFbmFibGVkKTticmVhaztjYXNlICJtb3VzZW92ZXIiOnRoaXMuZG9tRWxlbWVudCYmdGhpcy5jc3NFZmZlY3RzJiZ0aGlzLnJlY292ZXJBY3RpdmUmJnRoaXMuZG9tRWxlbWVudC5hZGRDbGFzcygiYWN0aXZlIik7YnJlYWs7Y2FzZSAibW91c2VvdXQiOnRoaXMuZG9tRWxlbWVudCYmdGhpcy5jc3NFZmZlY3RzJiYodGhpcy5yZWNvdmVyQWN0aXZlPSExLHRoaXMuZG9tRWxlbWVudC5oYXNDbGFzcygiYWN0aXZlIikmJih0aGlzLmRvbUVsZW1lbnQucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLHRoaXMucmVjb3ZlckFjdGl2ZT0hMCkpO2JyZWFrO2Nhc2UgIm1vdXNlZG93biI6dGhpcy5kb21FbGVtZW50JiYKdGhpcy5jc3NFZmZlY3RzJiZ0aGlzLmRvbUVsZW1lbnQuYWRkQ2xhc3MoImFjdGl2ZSIpO2JyZWFrO2Nhc2UgIm1vdXNldXAiOnRoaXMuZG9tRWxlbWVudCYmdGhpcy5jc3NFZmZlY3RzJiYodGhpcy5kb21FbGVtZW50LnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx0aGlzLnJlY292ZXJBY3RpdmU9ITEpfWlmKHRoaXMuaGFuZGxlcnNbYV0pZm9yKHZhciBkPTAsZj10aGlzLmhhbmRsZXJzW2FdLmxlbmd0aDtkPGY7ZCsrKXt2YXIgZT10aGlzLmhhbmRsZXJzW2FdW2RdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKWUodGhpcyxiKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZSYmMj09ZS5sZW5ndGgpZVswXVtlWzFdXSh0aGlzLGIpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKW5bZV0odGhpcyxiKX19fTtoLmhhc0ZsYXNoPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgQWN0aXZlWE9iamVjdCgiU2hvY2t3YXZlRmxhc2guU2hvY2t3YXZlRmxhc2giKSwhMH1jYXRjaChhKXtpZihuYXZpZ2F0b3IubWltZVR5cGVzJiYKbmF2aWdhdG9yLm1pbWVUeXBlc1siYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giXSE9PXUmJm5hdmlnYXRvci5taW1lVHlwZXNbImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIl0uZW5hYmxlZFBsdWdpbilyZXR1cm4hMH1yZXR1cm4hMX07bi5aZXJvQ2xpcGJvYXJkX1RhYmxlVG9vbHM9aDt2YXIgQz1mdW5jdGlvbihhLGIpe2IuYXR0cigiaWQiKTtiLnBhcmVudHMoImh0bWwiKS5sZW5ndGg/YS5nbHVlKGJbMF0sIiIpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXtDKGEsYil9LDUwMCl9LEg9ZnVuY3Rpb24oYSl7dmFyIGI9IlNoZWV0MSI7YS5zaGVldE5hbWUmJihiPWEuc2hlZXROYW1lLnJlcGxhY2UoL1tcW1xdXCpcL1xcXD86XS9nLCIiKSk7cmV0dXJuIGJ9LHg9ZnVuY3Rpb24oYSxiKXtiPWIubWF0Y2goL1tcc1xTXXsxLDgxOTJ9L2cpfHxbXTthLmNsZWFyVGV4dCgpO2Zvcih2YXIgYz0wLGQ9Yi5sZW5ndGg7YzxkO2MrKylhLmFwcGVuZFRleHQoYltjXSl9LEQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubmV3bGluZT8KYS5uZXdsaW5lOm5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1dpbmRvd3MvKT8iXHJcbiI6IlxuIn0sRT1mdW5jdGlvbihhLGIpe3ZhciBjPUQoYik7YT1hLmJ1dHRvbnMuZXhwb3J0RGF0YShiLmV4cG9ydE9wdGlvbnMpO3ZhciBkPWIuZmllbGRCb3VuZGFyeSxmPWIuZmllbGRTZXBhcmF0b3IsZT1uZXcgUmVnRXhwKGQsImciKSxnPWIuZXNjYXBlQ2hhciE9PXU/Yi5lc2NhcGVDaGFyOiJcXCIsaD1mdW5jdGlvbihhKXtmb3IodmFyIGI9IiIsYz0wLGg9YS5sZW5ndGg7YzxoO2MrKykwPGMmJihiKz1mKSxiKz1kP2QrKCIiK2FbY10pLnJlcGxhY2UoZSxnK2QpK2Q6YVtjXTtyZXR1cm4gYn0sbj1iLmhlYWRlcj9oKGEuaGVhZGVyKStjOiIiO2I9Yi5mb290ZXImJmEuZm9vdGVyP2MraChhLmZvb3Rlcik6IiI7Zm9yKHZhciBtPVtdLHA9MCxyPWEuYm9keS5sZW5ndGg7cDxyO3ArKyltLnB1c2goaChhLmJvZHlbcF0pKTtyZXR1cm57c3RyOm4rbS5qb2luKGMpK2Iscm93czptLmxlbmd0aH19LAp5PXthdmFpbGFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gaC5oYXNGbGFzaCgpfSxpbml0OmZ1bmN0aW9uKGEsYixjKXtoLm1vdmllUGF0aD1sLkJ1dHRvbnMuc3dmUGF0aDt2YXIgZD1uZXcgaC5DbGllbnQ7ZC5zZXRIYW5kQ3Vyc29yKCEwKTtkLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlRG93biIsZnVuY3Rpb24oZCl7Yy5fZnJvbUZsYXNoPSEwO2EuYnV0dG9uKGJbMF0pLnRyaWdnZXIoKTtjLl9mcm9tRmxhc2g9ITF9KTtDKGQsYik7Yy5fZmxhc2g9ZH0sZGVzdHJveTpmdW5jdGlvbihhLGIsYyl7Yy5fZmxhc2guZGVzdHJveSgpfSxmaWVsZFNlcGFyYXRvcjoiLCIsZmllbGRCb3VuZGFyeTonIicsZXhwb3J0T3B0aW9uczp7fSx0aXRsZToiKiIsbWVzc2FnZVRvcDoiKiIsbWVzc2FnZUJvdHRvbToiKiIsZmlsZW5hbWU6IioiLGV4dGVuc2lvbjoiLmNzdiIsaGVhZGVyOiEwLGZvb3RlcjohMX0sej0iIjt6PSJ1bmRlZmluZWQiPT09dHlwZW9mIG4uWE1MU2VyaWFsaXplcj9uZXcgZnVuY3Rpb24oKXt0aGlzLnNlcmlhbGl6ZVRvU3RyaW5nPQpmdW5jdGlvbihhKXtyZXR1cm4gYS54bWx9fTpuZXcgWE1MU2VyaWFsaXplcjt2YXIgdix0PXsiX3JlbHMvLnJlbHMiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PFJlbGF0aW9uc2hpcHMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcyI+PFJlbGF0aW9uc2hpcCBJZD0icklkMSIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudCIgVGFyZ2V0PSJ4bC93b3JrYm9vay54bWwiLz48L1JlbGF0aW9uc2hpcHM+JywieGwvX3JlbHMvd29ya2Jvb2sueG1sLnJlbHMiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PFJlbGF0aW9uc2hpcHMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcyI+PFJlbGF0aW9uc2hpcCBJZD0icklkMSIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXQiIFRhcmdldD0id29ya3NoZWV0cy9zaGVldDEueG1sIi8+PFJlbGF0aW9uc2hpcCBJZD0icklkMiIgVHlwZT0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9zdHlsZXMiIFRhcmdldD0ic3R5bGVzLnhtbCIvPjwvUmVsYXRpb25zaGlwcz4nLAoiW0NvbnRlbnRfVHlwZXNdLnhtbCI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48VHlwZXMgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvY29udGVudC10eXBlcyI+PERlZmF1bHQgRXh0ZW5zaW9uPSJ4bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94bWwiIC8+PERlZmF1bHQgRXh0ZW5zaW9uPSJyZWxzIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWwiIC8+PERlZmF1bHQgRXh0ZW5zaW9uPSJqcGVnIiBDb250ZW50VHlwZT0iaW1hZ2UvanBlZyIgLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3JrYm9vay54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbCIgLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sIiAvPjxPdmVycmlkZSBQYXJ0TmFtZT0iL3hsL3N0eWxlcy54bWwiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zdHlsZXMreG1sIiAvPjwvVHlwZXM+JywKInhsL3dvcmtib29rLnhtbCI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48d29ya2Jvb2sgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6cj0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcyI+PGZpbGVWZXJzaW9uIGFwcE5hbWU9InhsIiBsYXN0RWRpdGVkPSI1IiBsb3dlc3RFZGl0ZWQ9IjUiIHJ1cEJ1aWxkPSIyNDgxNiIvPjx3b3JrYm9va1ByIHNob3dJbmtBbm5vdGF0aW9uPSIwIiBhdXRvQ29tcHJlc3NQaWN0dXJlcz0iMCIvPjxib29rVmlld3M+PHdvcmtib29rVmlldyB4V2luZG93PSIwIiB5V2luZG93PSIwIiB3aW5kb3dXaWR0aD0iMjU2MDAiIHdpbmRvd0hlaWdodD0iMTkwMjAiIHRhYlJhdGlvPSI1MDAiLz48L2Jvb2tWaWV3cz48c2hlZXRzPjxzaGVldCBuYW1lPSIiIHNoZWV0SWQ9IjEiIHI6aWQ9InJJZDEiLz48L3NoZWV0cz48L3dvcmtib29rPicsCiJ4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PHdvcmtzaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczpyPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE0YWMiIHhtbG5zOngxNGFjPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMDkvOS9hYyI+PHNoZWV0RGF0YS8+PG1lcmdlQ2VsbHMgY291bnQ9IjAiLz48L3dvcmtzaGVldD4nLCJ4bC9zdHlsZXMueG1sIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3R5bGVTaGVldCB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluIiB4bWxuczptYz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDYiIG1jOklnbm9yYWJsZT0ieDE0YWMiIHhtbG5zOngxNGFjPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMDkvOS9hYyI+PG51bUZtdHMgY291bnQ9IjYiPjxudW1GbXQgbnVtRm10SWQ9IjE2NCIgZm9ybWF0Q29kZT0iIywjIzAuMDBfLSBbJCQtNDVDXSIvPjxudW1GbXQgbnVtRm10SWQ9IjE2NSIgZm9ybWF0Q29kZT0iJnF1b3Q7wqMmcXVvdDsjLCMjMC4wMCIvPjxudW1GbXQgbnVtRm10SWQ9IjE2NiIgZm9ybWF0Q29kZT0iWyTigqwtMl0gIywjIzAuMDAiLz48bnVtRm10IG51bUZtdElkPSIxNjciIGZvcm1hdENvZGU9IjAuMCUiLz48bnVtRm10IG51bUZtdElkPSIxNjgiIGZvcm1hdENvZGU9IiMsIyMwOygjLCMjMCkiLz48bnVtRm10IG51bUZtdElkPSIxNjkiIGZvcm1hdENvZGU9IiMsIyMwLjAwOygjLCMjMC4wMCkiLz48L251bUZtdHM+PGZvbnRzIGNvdW50PSI1IiB4MTRhYzprbm93bkZvbnRzPSIxIj48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PC9mb250Pjxmb250PjxzeiB2YWw9IjExIiAvPjxuYW1lIHZhbD0iQ2FsaWJyaSIgLz48Y29sb3IgcmdiPSJGRkZGRkZGRiIgLz48L2ZvbnQ+PGZvbnQ+PHN6IHZhbD0iMTEiIC8+PG5hbWUgdmFsPSJDYWxpYnJpIiAvPjxiIC8+PC9mb250Pjxmb250PjxzeiB2YWw9IjExIiAvPjxuYW1lIHZhbD0iQ2FsaWJyaSIgLz48aSAvPjwvZm9udD48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PHUgLz48L2ZvbnQ+PC9mb250cz48ZmlsbHMgY291bnQ9IjYiPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ibm9uZSIgLz48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJub25lIiAvPjwvZmlsbD48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9InNvbGlkIj48ZmdDb2xvciByZ2I9IkZGRDlEOUQ5IiAvPjxiZ0NvbG9yIGluZGV4ZWQ9IjY0IiAvPjwvcGF0dGVybkZpbGw+PC9maWxsPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ic29saWQiPjxmZ0NvbG9yIHJnYj0iRkZEOTk3OTUiIC8+PGJnQ29sb3IgaW5kZXhlZD0iNjQiIC8+PC9wYXR0ZXJuRmlsbD48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJzb2xpZCI+PGZnQ29sb3IgcmdiPSJmZmM2ZWZjZSIgLz48YmdDb2xvciBpbmRleGVkPSI2NCIgLz48L3BhdHRlcm5GaWxsPjwvZmlsbD48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9InNvbGlkIj48ZmdDb2xvciByZ2I9ImZmYzZjZmVmIiAvPjxiZ0NvbG9yIGluZGV4ZWQ9IjY0IiAvPjwvcGF0dGVybkZpbGw+PC9maWxsPjwvZmlsbHM+PGJvcmRlcnMgY291bnQ9IjIiPjxib3JkZXI+PGxlZnQgLz48cmlnaHQgLz48dG9wIC8+PGJvdHRvbSAvPjxkaWFnb25hbCAvPjwvYm9yZGVyPjxib3JkZXIgZGlhZ29uYWxVcD0iZmFsc2UiIGRpYWdvbmFsRG93bj0iZmFsc2UiPjxsZWZ0IHN0eWxlPSJ0aGluIj48Y29sb3IgYXV0bz0iMSIgLz48L2xlZnQ+PHJpZ2h0IHN0eWxlPSJ0aGluIj48Y29sb3IgYXV0bz0iMSIgLz48L3JpZ2h0Pjx0b3Agc3R5bGU9InRoaW4iPjxjb2xvciBhdXRvPSIxIiAvPjwvdG9wPjxib3R0b20gc3R5bGU9InRoaW4iPjxjb2xvciBhdXRvPSIxIiAvPjwvYm90dG9tPjxkaWFnb25hbCAvPjwvYm9yZGVyPjwvYm9yZGVycz48Y2VsbFN0eWxlWGZzIGNvdW50PSIxIj48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgLz48L2NlbGxTdHlsZVhmcz48Y2VsbFhmcyBjb3VudD0iNjEiPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIyIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIzIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIzIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSI1IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIwIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIzIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSI0IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSI0IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgaG9yaXpvbnRhbD0ibGVmdCIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgaG9yaXpvbnRhbD0iY2VudGVyIi8+PC94Zj48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseUFsaWdubWVudD0iMSI+PGFsaWdubWVudCBob3Jpem9udGFsPSJyaWdodCIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgaG9yaXpvbnRhbD0iZmlsbCIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgdGV4dFJvdGF0aW9uPSI5MCIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgd3JhcFRleHQ9IjEiLz48L3hmPjx4ZiBudW1GbXRJZD0iOSIgICBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjE2NCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIxNjUiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMTY2IiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjE2NyIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIxNjgiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMTY5IiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjMiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iNCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PC9jZWxsWGZzPjxjZWxsU3R5bGVzIGNvdW50PSIxIj48Y2VsbFN0eWxlIG5hbWU9Ik5vcm1hbCIgeGZJZD0iMCIgYnVpbHRpbklkPSIwIiAvPjwvY2VsbFN0eWxlcz48ZHhmcyBjb3VudD0iMCIgLz48dGFibGVTdHlsZXMgY291bnQ9IjAiIGRlZmF1bHRUYWJsZVN0eWxlPSJUYWJsZVN0eWxlTWVkaXVtOSIgZGVmYXVsdFBpdm90U3R5bGU9IlBpdm90U3R5bGVNZWRpdW00IiAvPjwvc3R5bGVTaGVldD4nfSwKRj1be21hdGNoOi9eXC0/XGQrXC5cZCUkLyxzdHlsZTo2MCxmbXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEvMTAwfX0se21hdGNoOi9eXC0/XGQrXC4/XGQqJSQvLHN0eWxlOjU2LGZtdDpmdW5jdGlvbihhKXtyZXR1cm4gYS8xMDB9fSx7bWF0Y2g6L15cLT9cJFtcZCxdKy4/XGQqJC8sc3R5bGU6NTd9LHttYXRjaDovXlwtP8KjW1xkLF0rLj9cZCokLyxzdHlsZTo1OH0se21hdGNoOi9eXC0/4oKsW1xkLF0rLj9cZCokLyxzdHlsZTo1OX0se21hdGNoOi9eXChbXGQsXStcKSQvLHN0eWxlOjYxLGZtdDpmdW5jdGlvbihhKXtyZXR1cm4tMSphLnJlcGxhY2UoL1tcKFwpXS9nLCIiKX19LHttYXRjaDovXlwoW1xkLF0rXC5cZHsyfVwpJC8sc3R5bGU6NjIsZm10OmZ1bmN0aW9uKGEpe3JldHVybi0xKmEucmVwbGFjZSgvW1woXCldL2csIiIpfX0se21hdGNoOi9eW1xkLF0rJC8sc3R5bGU6NjN9LHttYXRjaDovXltcZCxdK1wuXGR7Mn0kLyxzdHlsZTo2NH1dO2wuQnV0dG9ucy5zd2ZQYXRoPSIvL2Nkbi5kYXRhdGFibGVzLm5ldC9idXR0b25zLyIrCmwuQnV0dG9ucy52ZXJzaW9uKyIvc3dmL2ZsYXNoRXhwb3J0LnN3ZiI7bC5BcGkucmVnaXN0ZXIoImJ1dHRvbnMucmVzaXplKCkiLGZ1bmN0aW9uKCl7Zy5lYWNoKGguY2xpZW50cyxmdW5jdGlvbihhLGIpe2IuZG9tRWxlbWVudCE9PXUmJmIuZG9tRWxlbWVudC5wYXJlbnROb2RlJiZiLnBvc2l0aW9uRWxlbWVudCgpfSl9KTtsLmV4dC5idXR0b25zLmNvcHlGbGFzaD1nLmV4dGVuZCh7fSx5LHtjbGFzc05hbWU6ImJ1dHRvbnMtY29weSBidXR0b25zLWZsYXNoIix0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMuY29weSIsIkNvcHkiKX0sYWN0aW9uOmZ1bmN0aW9uKGEsYixjLGQpe2lmKGQuX2Zyb21GbGFzaCl7dGhpcy5wcm9jZXNzaW5nKCEwKTthPWQuX2ZsYXNoO3ZhciBmPUUoYixkKTtjPWIuYnV0dG9ucy5leHBvcnRJbmZvKGQpO3ZhciBlPUQoZCk7Zj1mLnN0cjtjLnRpdGxlJiYoZj1jLnRpdGxlK2UrZStmKTtjLm1lc3NhZ2VUb3AmJihmPWMubWVzc2FnZVRvcCsKZStlK2YpO2MubWVzc2FnZUJvdHRvbSYmKGY9ZitlK2UrYy5tZXNzYWdlQm90dG9tKTtkLmN1c3RvbWl6ZSYmKGY9ZC5jdXN0b21pemUoZixkLGIpKTthLnNldEFjdGlvbigiY29weSIpO3goYSxmKTt0aGlzLnByb2Nlc3NpbmcoITEpO2IuYnV0dG9ucy5pbmZvKGIuaTE4bigiYnV0dG9ucy5jb3B5VGl0bGUiLCJDb3B5IHRvIGNsaXBib2FyZCIpLGIuaTE4bigiYnV0dG9ucy5jb3B5U3VjY2VzcyIse186IkNvcGllZCAlZCByb3dzIHRvIGNsaXBib2FyZCIsMToiQ29waWVkIDEgcm93IHRvIGNsaXBib2FyZCJ9LGRhdGEucm93cyksM0UzKX19LGZpZWxkU2VwYXJhdG9yOiJcdCIsZmllbGRCb3VuZGFyeToiIn0pO2wuZXh0LmJ1dHRvbnMuY3N2Rmxhc2g9Zy5leHRlbmQoe30seSx7Y2xhc3NOYW1lOiJidXR0b25zLWNzdiBidXR0b25zLWZsYXNoIix0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMuY3N2IiwiQ1NWIil9LGFjdGlvbjpmdW5jdGlvbihhLGIsYyxkKXthPQpkLl9mbGFzaDt2YXIgZj1FKGIsZCk7Yz1iLmJ1dHRvbnMuZXhwb3J0SW5mbyhkKTtiPWQuY3VzdG9taXplP2QuY3VzdG9taXplKGYuc3RyLGQsYik6Zi5zdHI7YS5zZXRBY3Rpb24oImNzdiIpO2Euc2V0RmlsZU5hbWUoYy5maWxlbmFtZSk7eChhLGIpfSxlc2NhcGVDaGFyOiciJ30pO2wuZXh0LmJ1dHRvbnMuZXhjZWxGbGFzaD1nLmV4dGVuZCh7fSx5LHtjbGFzc05hbWU6ImJ1dHRvbnMtZXhjZWwgYnV0dG9ucy1mbGFzaCIsdGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5pMThuKCJidXR0b25zLmV4Y2VsIiwiRXhjZWwiKX0sYWN0aW9uOmZ1bmN0aW9uKGEsYixjLGQpe3RoaXMucHJvY2Vzc2luZyghMCk7YT1kLl9mbGFzaDt2YXIgZj0wLGU9Zy5wYXJzZVhNTCh0WyJ4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiXSksaD1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzaGVldERhdGEiKVswXTtjPXtfcmVsczp7Ii5yZWxzIjpnLnBhcnNlWE1MKHRbIl9yZWxzLy5yZWxzIl0pfSx4bDp7X3JlbHM6eyJ3b3JrYm9vay54bWwucmVscyI6Zy5wYXJzZVhNTCh0WyJ4bC9fcmVscy93b3JrYm9vay54bWwucmVscyJdKX0sCiJ3b3JrYm9vay54bWwiOmcucGFyc2VYTUwodFsieGwvd29ya2Jvb2sueG1sIl0pLCJzdHlsZXMueG1sIjpnLnBhcnNlWE1MKHRbInhsL3N0eWxlcy54bWwiXSksd29ya3NoZWV0czp7InNoZWV0MS54bWwiOmV9fSwiW0NvbnRlbnRfVHlwZXNdLnhtbCI6Zy5wYXJzZVhNTCh0WyJbQ29udGVudF9UeXBlc10ueG1sIl0pfTt2YXIgaz1iLmJ1dHRvbnMuZXhwb3J0RGF0YShkLmV4cG9ydE9wdGlvbnMpLG0sbixwPWZ1bmN0aW9uKGEpe209ZisxO249cihlLCJyb3ciLHthdHRyOntyOm19fSk7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aDtiPGM7YisrKXt2YXIgbD1BKGIpKyIiK20saz1udWxsO2lmKG51bGw9PT1hW2JdfHxhW2JdPT09dXx8IiI9PT1hW2JdKWlmKCEwPT09ZC5jcmVhdGVFbXB0eUNlbGxzKWFbYl09IiI7ZWxzZSBjb250aW51ZTthW2JdPWcudHJpbShhW2JdKTtmb3IodmFyIHA9MCx0PUYubGVuZ3RoO3A8dDtwKyspe3ZhciBxPUZbcF07aWYoYVtiXS5tYXRjaCYmIWFbYl0ubWF0Y2goL14wXGQrLykmJgphW2JdLm1hdGNoKHEubWF0Y2gpKXtrPWFbYl0ucmVwbGFjZSgvW15cZFwuXC1dL2csIiIpO3EuZm10JiYoaz1xLmZtdChrKSk7az1yKGUsImMiLHthdHRyOntyOmwsczpxLnN0eWxlfSxjaGlsZHJlbjpbcihlLCJ2Iix7dGV4dDprfSldfSk7YnJlYWt9fWt8fCgibnVtYmVyIj09PXR5cGVvZiBhW2JdfHxhW2JdLm1hdGNoJiZhW2JdLm1hdGNoKC9eLT9cZCsoXC5cZCspPyQvKSYmIWFbYl0ubWF0Y2goL14wXGQrLyk/az1yKGUsImMiLHthdHRyOnt0OiJuIixyOmx9LGNoaWxkcmVuOltyKGUsInYiLHt0ZXh0OmFbYl19KV19KToocT1hW2JdLnJlcGxhY2U/YVtiXS5yZXBsYWNlKC9bXHgwMC1ceDA5XHgwQlx4MENceDBFLVx4MUZceDdGLVx4OUZdL2csIiIpOmFbYl0saz1yKGUsImMiLHthdHRyOnt0OiJpbmxpbmVTdHIiLHI6bH0sY2hpbGRyZW46e3JvdzpyKGUsImlzIix7Y2hpbGRyZW46e3JvdzpyKGUsInQiLHt0ZXh0OnF9KX19KX19KSkpO24uYXBwZW5kQ2hpbGQoayl9aC5hcHBlbmRDaGlsZChuKTsKZisrfTtnKCJzaGVldHMgc2hlZXQiLGMueGxbIndvcmtib29rLnhtbCJdKS5hdHRyKCJuYW1lIixIKGQpKTtkLmN1c3RvbWl6ZURhdGEmJmQuY3VzdG9taXplRGF0YShrKTt2YXIgbD1mdW5jdGlvbihhLGIpe3ZhciBjPWcoIm1lcmdlQ2VsbHMiLGUpO2NbMF0uYXBwZW5kQ2hpbGQocihlLCJtZXJnZUNlbGwiLHthdHRyOntyZWY6IkEiK2ErIjoiK0EoYikrYX19KSk7Yy5hdHRyKCJjb3VudCIsYy5hdHRyKCJjb3VudCIpKzEpO2coInJvdzplcSgiKyhhLTEpKyIpIGMiLGUpLmF0dHIoInMiLCI1MSIpfSxxPWIuYnV0dG9ucy5leHBvcnRJbmZvKGQpO3EudGl0bGUmJihwKFtxLnRpdGxlXSxmKSxsKGYsay5oZWFkZXIubGVuZ3RoLTEpKTtxLm1lc3NhZ2VUb3AmJihwKFtxLm1lc3NhZ2VUb3BdLGYpLGwoZixrLmhlYWRlci5sZW5ndGgtMSkpO2QuaGVhZGVyJiYocChrLmhlYWRlcixmKSxnKCJyb3c6bGFzdCBjIixlKS5hdHRyKCJzIiwiMiIpKTtmb3IodmFyIHc9MCx2PWsuYm9keS5sZW5ndGg7dzwKdjt3KyspcChrLmJvZHlbd10sZik7ZC5mb290ZXImJmsuZm9vdGVyJiYocChrLmZvb3RlcixmKSxnKCJyb3c6bGFzdCBjIixlKS5hdHRyKCJzIiwiMiIpKTtxLm1lc3NhZ2VCb3R0b20mJihwKFtxLm1lc3NhZ2VCb3R0b21dLGYpLGwoZixrLmhlYWRlci5sZW5ndGgtMSkpO3A9cihlLCJjb2xzIik7Zygid29ya3NoZWV0IixlKS5wcmVwZW5kKHApO2w9MDtmb3Iodz1rLmhlYWRlci5sZW5ndGg7bDx3O2wrKylwLmFwcGVuZENoaWxkKHIoZSwiY29sIix7YXR0cjp7bWluOmwrMSxtYXg6bCsxLHdpZHRoOkcoayxsKSxjdXN0b21XaWR0aDoxfX0pKTtkLmN1c3RvbWl6ZSYmZC5jdXN0b21pemUoYyxkLGIpO0IoYyk7YS5zZXRBY3Rpb24oImV4Y2VsIik7YS5zZXRGaWxlTmFtZShxLmZpbGVuYW1lKTthLnNldFNoZWV0RGF0YShjKTt4KGEsIiIpO3RoaXMucHJvY2Vzc2luZyghMSl9LGV4dGVuc2lvbjoiLnhsc3giLGNyZWF0ZUVtcHR5Q2VsbHM6ITF9KTtsLmV4dC5idXR0b25zLnBkZkZsYXNoPQpnLmV4dGVuZCh7fSx5LHtjbGFzc05hbWU6ImJ1dHRvbnMtcGRmIGJ1dHRvbnMtZmxhc2giLHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5wZGYiLCJQREYiKX0sYWN0aW9uOmZ1bmN0aW9uKGEsYixjLGQpe3RoaXMucHJvY2Vzc2luZyghMCk7YT1kLl9mbGFzaDtjPWIuYnV0dG9ucy5leHBvcnREYXRhKGQuZXhwb3J0T3B0aW9ucyk7dmFyIGY9Yi5idXR0b25zLmV4cG9ydEluZm8oZCksZT1iLnRhYmxlKCkubm9kZSgpLm9mZnNldFdpZHRoLGc9Yi5jb2x1bW5zKGQuY29sdW1ucykuaW5kZXhlcygpLm1hcChmdW5jdGlvbihhKXtyZXR1cm4gYi5jb2x1bW4oYSkuaGVhZGVyKCkub2Zmc2V0V2lkdGgvZX0pO2Euc2V0QWN0aW9uKCJwZGYiKTthLnNldEZpbGVOYW1lKGYuZmlsZW5hbWUpO3goYSxKU09OLnN0cmluZ2lmeSh7dGl0bGU6Zi50aXRsZXx8IiIsbWVzc2FnZVRvcDpmLm1lc3NhZ2VUb3B8fCIiLG1lc3NhZ2VCb3R0b206Zi5tZXNzYWdlQm90dG9tfHwiIiwKY29sV2lkdGg6Zy50b0FycmF5KCksb3JpZW50YXRpb246ZC5vcmllbnRhdGlvbixzaXplOmQucGFnZVNpemUsaGVhZGVyOmQuaGVhZGVyP2MuaGVhZGVyOm51bGwsZm9vdGVyOmQuZm9vdGVyP2MuZm9vdGVyOm51bGwsYm9keTpjLmJvZHl9KSk7dGhpcy5wcm9jZXNzaW5nKCExKX0sZXh0ZW5zaW9uOiIucGRmIixvcmllbnRhdGlvbjoicG9ydHJhaXQiLHBhZ2VTaXplOiJBNCIsbmV3bGluZToiXG4ifSk7cmV0dXJuIGwuQnV0dG9uc30pOwo="></script>
|
|
<script src="data:application/javascript;base64,LyohCiBIVE1MNSBleHBvcnQgYnV0dG9ucyBmb3IgQnV0dG9ucyBhbmQgRGF0YVRhYmxlcy4KIDIwMTYgU3ByeU1lZGlhIEx0ZCAtIGRhdGF0YWJsZXMubmV0L2xpY2Vuc2UKCiBGaWxlU2F2ZXIuanMgKDEuMy4zKSAtIE1JVCBsaWNlbnNlCiBDb3B5cmlnaHQgwqkgMjAxNiBFbGkgR3JleSAtIGh0dHA6Ly9lbGlncmV5LmNvbQoqLwooZnVuY3Rpb24oZil7ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwiZGF0YXRhYmxlcy5uZXQiLCJkYXRhdGFibGVzLm5ldC1idXR0b25zIl0sZnVuY3Rpb24oZyl7cmV0dXJuIGYoZyx3aW5kb3csZG9jdW1lbnQpfSk6Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihnLHAseix0KXtnfHwoZz13aW5kb3cpO3AmJnAuZm4uZGF0YVRhYmxlfHwocD1yZXF1aXJlKCJkYXRhdGFibGVzLm5ldCIpKGcscCkuJCk7cC5mbi5kYXRhVGFibGUuQnV0dG9uc3x8cmVxdWlyZSgiZGF0YXRhYmxlcy5uZXQtYnV0dG9ucyIpKGcscCk7cmV0dXJuIGYocCxnLGcuZG9jdW1lbnQseix0KX06ZihqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGYsZyxwLHosdCx3KXtmdW5jdGlvbiBBKGEpe2Zvcih2YXIgYj0iIjswPD1hOyliPVN0cmluZy5mcm9tQ2hhckNvZGUoYSUyNis2NSkrYixhPU1hdGguZmxvb3IoYS8KMjYpLTE7cmV0dXJuIGJ9ZnVuY3Rpb24gRShhLGIpe3k9PT13JiYoeT0tMT09PUMuc2VyaWFsaXplVG9TdHJpbmcoZi5wYXJzZVhNTChGWyJ4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWwiXSkpLmluZGV4T2YoInhtbG5zOnIiKSk7Zi5lYWNoKGIsZnVuY3Rpb24oYixjKXtpZihmLmlzUGxhaW5PYmplY3QoYykpYj1hLmZvbGRlcihiKSxFKGIsYyk7ZWxzZXtpZih5KXt2YXIgZD1jLmNoaWxkTm9kZXNbMF0sZSxoPVtdO2ZvcihlPWQuYXR0cmlidXRlcy5sZW5ndGgtMTswPD1lO2UtLSl7dmFyIG09ZC5hdHRyaWJ1dGVzW2VdLm5vZGVOYW1lO3ZhciBrPWQuYXR0cmlidXRlc1tlXS5ub2RlVmFsdWU7LTEhPT1tLmluZGV4T2YoIjoiKSYmKGgucHVzaCh7bmFtZTptLHZhbHVlOmt9KSxkLnJlbW92ZUF0dHJpYnV0ZShtKSl9ZT0wO2ZvcihtPWgubGVuZ3RoO2U8bTtlKyspaz1jLmNyZWF0ZUF0dHJpYnV0ZShoW2VdLm5hbWUucmVwbGFjZSgiOiIsIl9kdF9iX25hbWVzcGFjZV90b2tlbl8iKSksCmsudmFsdWU9aFtlXS52YWx1ZSxkLnNldEF0dHJpYnV0ZU5vZGUoayl9Yz1DLnNlcmlhbGl6ZVRvU3RyaW5nKGMpO3kmJigtMT09PWMuaW5kZXhPZigiPD94bWwiKSYmKGM9Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz4nK2MpLGM9Yy5yZXBsYWNlKC9fZHRfYl9uYW1lc3BhY2VfdG9rZW5fL2csIjoiKSxjPWMucmVwbGFjZSgveG1sbnM6TlNbXGRdKz0iIiBOU1tcZF0rOi9nLCIiKSk7Yz1jLnJlcGxhY2UoLzwoW148Pl0qPykgeG1sbnM9IiIoW148Pl0qPyk+L2csIjwkMSAkMj4iKTthLmZpbGUoYixjKX19KX1mdW5jdGlvbiByKGEsYixkKXt2YXIgYz1hLmNyZWF0ZUVsZW1lbnQoYik7ZCYmKGQuYXR0ciYmZihjKS5hdHRyKGQuYXR0ciksZC5jaGlsZHJlbiYmZi5lYWNoKGQuY2hpbGRyZW4sZnVuY3Rpb24oYSxiKXtjLmFwcGVuZENoaWxkKGIpfSksbnVsbCE9PWQudGV4dCYmZC50ZXh0IT09dyYmYy5hcHBlbmRDaGlsZChhLmNyZWF0ZVRleHROb2RlKGQudGV4dCkpKTsKcmV0dXJuIGN9ZnVuY3Rpb24gTChhLGIpe3ZhciBkPWEuaGVhZGVyW2JdLmxlbmd0aDthLmZvb3RlciYmYS5mb290ZXJbYl0ubGVuZ3RoPmQmJihkPWEuZm9vdGVyW2JdLmxlbmd0aCk7Zm9yKHZhciBjPTAsZj1hLmJvZHkubGVuZ3RoO2M8ZjtjKyspe3ZhciBlPWEuYm9keVtjXVtiXTtlPW51bGwhPT1lJiZlIT09dz9lLnRvU3RyaW5nKCk6IiI7LTEhPT1lLmluZGV4T2YoIlxuIik/KGU9ZS5zcGxpdCgiXG4iKSxlLnNvcnQoZnVuY3Rpb24oYSxjKXtyZXR1cm4gYy5sZW5ndGgtYS5sZW5ndGh9KSxlPWVbMF0ubGVuZ3RoKTplPWUubGVuZ3RoO2U+ZCYmKGQ9ZSk7aWYoNDA8ZClyZXR1cm4gNTR9ZCo9MS4zNTtyZXR1cm4gNjxkP2Q6Nn12YXIgdj1mLmZuLmRhdGFUYWJsZTt2LkJ1dHRvbnMucGRmTWFrZT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4gdHx8Zy5wZGZNYWtlO3Q9bV9ha2V9O3YuQnV0dG9ucy5qc3ppcD1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4genx8Zy5KU1ppcDt6PWF9Owp2YXIgQj1mdW5jdGlvbihhKXtpZighKCJ1bmRlZmluZWQiPT09dHlwZW9mIGF8fCJ1bmRlZmluZWQiIT09dHlwZW9mIG5hdmlnYXRvciYmL01TSUUgWzEtOV1cLi8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkpe3ZhciBiPWEuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwiYSIpLGQ9ImRvd25sb2FkImluIGIsYz0vY29uc3RydWN0b3IvaS50ZXN0KGEuSFRNTEVsZW1lbnQpfHxhLnNhZmFyaSxmPS9DcmlPU1wvW1xkXSsvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksZT1mdW5jdGlvbihjKXsoYS5zZXRJbW1lZGlhdGV8fGEuc2V0VGltZW91dCkoZnVuY3Rpb24oKXt0aHJvdyBjO30sMCl9LGg9ZnVuY3Rpb24oYyl7c2V0VGltZW91dChmdW5jdGlvbigpeyJzdHJpbmciPT09dHlwZW9mIGM/KGEuVVJMfHxhLndlYmtpdFVSTHx8YSkucmV2b2tlT2JqZWN0VVJMKGMpOmMucmVtb3ZlKCl9LDRFNCl9LG09ZnVuY3Rpb24oYSl7cmV0dXJuL15ccyooPzp0ZXh0XC9cUyp8YXBwbGljYXRpb25cL3htbHxcUypcL1xTKlwreG1sKVxzKjsuKmNoYXJzZXRccyo9XHMqdXRmLTgvaS50ZXN0KGEudHlwZSk/Cm5ldyBCbG9iKFtTdHJpbmcuZnJvbUNoYXJDb2RlKDY1Mjc5KSxhXSx7dHlwZTphLnR5cGV9KTphfSxrPWZ1bmN0aW9uKGsscSxuKXtufHwoaz1tKGspKTt2YXIgbD10aGlzLGc9ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSI9PT1rLnR5cGUsRD1mdW5jdGlvbigpe3ZhciBhPVsid3JpdGVzdGFydCIsInByb2dyZXNzIiwid3JpdGUiLCJ3cml0ZWVuZCJdO2E9W10uY29uY2F0KGEpO2Zvcih2YXIgYz1hLmxlbmd0aDtjLS07KXt2YXIgYj1sWyJvbiIrYVtjXV07aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBiKXRyeXtiLmNhbGwobCxsKX1jYXRjaChNKXtlKE0pfX19O2wucmVhZHlTdGF0ZT1sLklOSVQ7aWYoZCl7dmFyIHU9KGEuVVJMfHxhLndlYmtpdFVSTHx8YSkuY3JlYXRlT2JqZWN0VVJMKGspO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtiLmhyZWY9dTtiLmRvd25sb2FkPXE7dmFyIGE9bmV3IE1vdXNlRXZlbnQoImNsaWNrIik7Yi5kaXNwYXRjaEV2ZW50KGEpO0QoKTtoKHUpO2wucmVhZHlTdGF0ZT0KbC5ET05FfSl9ZWxzZShmdW5jdGlvbigpe2lmKChmfHxnJiZjKSYmYS5GaWxlUmVhZGVyKXt2YXIgYj1uZXcgRmlsZVJlYWRlcjtiLm9ubG9hZGVuZD1mdW5jdGlvbigpe3ZhciBjPWY/Yi5yZXN1bHQ6Yi5yZXN1bHQucmVwbGFjZSgvXmRhdGE6W147XSo7LywiZGF0YTphdHRhY2htZW50L2ZpbGU7Iik7YS5vcGVuKGMsIl9ibGFuayIpfHwoYS5sb2NhdGlvbi5ocmVmPWMpO2wucmVhZHlTdGF0ZT1sLkRPTkU7RCgpfTtiLnJlYWRBc0RhdGFVUkwoayk7bC5yZWFkeVN0YXRlPWwuSU5JVH1lbHNlIHV8fCh1PShhLlVSTHx8YS53ZWJraXRVUkx8fGEpLmNyZWF0ZU9iamVjdFVSTChrKSksZz9hLmxvY2F0aW9uLmhyZWY9dTphLm9wZW4odSwiX2JsYW5rIil8fChhLmxvY2F0aW9uLmhyZWY9dSksbC5yZWFkeVN0YXRlPWwuRE9ORSxEKCksaCh1KX0pKCl9LG49ay5wcm90b3R5cGU7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgbmF2aWdhdG9yJiZuYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYilyZXR1cm4gZnVuY3Rpb24oYSwKYyxiKXtjPWN8fGEubmFtZXx8ImRvd25sb2FkIjtifHwoYT1tKGEpKTtyZXR1cm4gbmF2aWdhdG9yLm1zU2F2ZU9yT3BlbkJsb2IoYSxjKX07bi5hYm9ydD1mdW5jdGlvbigpe307bi5yZWFkeVN0YXRlPW4uSU5JVD0wO24uV1JJVElORz0xO24uRE9ORT0yO24uZXJyb3I9bi5vbndyaXRlc3RhcnQ9bi5vbnByb2dyZXNzPW4ub253cml0ZT1uLm9uYWJvcnQ9bi5vbmVycm9yPW4ub253cml0ZWVuZD1udWxsO3JldHVybiBmdW5jdGlvbihhLGMsYil7cmV0dXJuIG5ldyBrKGEsY3x8YS5uYW1lfHwiZG93bmxvYWQiLGIpfX19KCJ1bmRlZmluZWQiIT09dHlwZW9mIHNlbGYmJnNlbGZ8fCJ1bmRlZmluZWQiIT09dHlwZW9mIGcmJmd8fHRoaXMuY29udGVudCk7di5maWxlU2F2ZT1CO3ZhciBHPWZ1bmN0aW9uKGEpe3ZhciBiPSJTaGVldDEiO2Euc2hlZXROYW1lJiYoYj1hLnNoZWV0TmFtZS5yZXBsYWNlKC9bXFtcXVwqXC9cXFw/Ol0vZywiIikpO3JldHVybiBifSxIPWZ1bmN0aW9uKGEpe3JldHVybiBhLm5ld2xpbmU/CmEubmV3bGluZTpuYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9XaW5kb3dzLyk/IlxyXG4iOiJcbiJ9LEk9ZnVuY3Rpb24oYSxiKXt2YXIgZD1IKGIpO2E9YS5idXR0b25zLmV4cG9ydERhdGEoYi5leHBvcnRPcHRpb25zKTt2YXIgYz1iLmZpZWxkQm91bmRhcnksZj1iLmZpZWxkU2VwYXJhdG9yLGU9bmV3IFJlZ0V4cChjLCJnIiksaD1iLmVzY2FwZUNoYXIhPT13P2IuZXNjYXBlQ2hhcjoiXFwiLG09ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIiLGQ9MCxtPWEubGVuZ3RoO2Q8bTtkKyspMDxkJiYoYis9ZiksYis9Yz9jKygiIithW2RdKS5yZXBsYWNlKGUsaCtjKStjOmFbZF07cmV0dXJuIGJ9LGs9Yi5oZWFkZXI/bShhLmhlYWRlcikrZDoiIjtiPWIuZm9vdGVyJiZhLmZvb3Rlcj9kK20oYS5mb290ZXIpOiIiO2Zvcih2YXIgbj1bXSxnPTAscT1hLmJvZHkubGVuZ3RoO2c8cTtnKyspbi5wdXNoKG0oYS5ib2R5W2ddKSk7cmV0dXJue3N0cjprK24uam9pbihkKStiLHJvd3M6bi5sZW5ndGh9fSwKSj1mdW5jdGlvbigpe2lmKC0xPT09bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJTYWZhcmkiKXx8LTEhPT1uYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIkNocm9tZSIpfHwtMSE9PW5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZigiT3BlcmEiKSlyZXR1cm4hMTt2YXIgYT1uYXZpZ2F0b3IudXNlckFnZW50Lm1hdGNoKC9BcHBsZVdlYktpdFwvKFxkK1wuXGQrKS8pO3JldHVybiBhJiYxPGEubGVuZ3RoJiY2MDMuMT4xKmFbMV0/ITA6ITF9O3RyeXt2YXIgQz1uZXcgWE1MU2VyaWFsaXplcix5fWNhdGNoKGEpe312YXIgRj17Il9yZWxzLy5yZWxzIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/PjxSZWxhdGlvbnNoaXBzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHMiPjxSZWxhdGlvbnNoaXAgSWQ9InJJZDEiIFR5cGU9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvb2ZmaWNlRG9jdW1lbnQiIFRhcmdldD0ieGwvd29ya2Jvb2sueG1sIi8+PC9SZWxhdGlvbnNoaXBzPicsCiJ4bC9fcmVscy93b3JrYm9vay54bWwucmVscyI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJ5ZXMiPz48UmVsYXRpb25zaGlwcyB4bWxucz0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzIj48UmVsYXRpb25zaGlwIElkPSJySWQxIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldCIgVGFyZ2V0PSJ3b3Jrc2hlZXRzL3NoZWV0MS54bWwiLz48UmVsYXRpb25zaGlwIElkPSJySWQyIiBUeXBlPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3N0eWxlcyIgVGFyZ2V0PSJzdHlsZXMueG1sIi8+PC9SZWxhdGlvbnNoaXBzPicsIltDb250ZW50X1R5cGVzXS54bWwiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PFR5cGVzIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L2NvbnRlbnQtdHlwZXMiPjxEZWZhdWx0IEV4dGVuc2lvbj0ieG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24veG1sIiAvPjxEZWZhdWx0IEV4dGVuc2lvbj0icmVscyIgQ29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLnJlbGF0aW9uc2hpcHMreG1sIiAvPjxEZWZhdWx0IEV4dGVuc2lvbj0ianBlZyIgQ29udGVudFR5cGU9ImltYWdlL2pwZWciIC8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvd29ya2Jvb2sueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQubWFpbit4bWwiIC8+PE92ZXJyaWRlIFBhcnROYW1lPSIveGwvd29ya3NoZWV0cy9zaGVldDEueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbCIgLz48T3ZlcnJpZGUgUGFydE5hbWU9Ii94bC9zdHlsZXMueG1sIiBDb250ZW50VHlwZT0iYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbCIgLz48L1R5cGVzPicsCiJ4bC93b3JrYm9vay54bWwiOic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+PHdvcmtib29rIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4iIHhtbG5zOnI9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMiPjxmaWxlVmVyc2lvbiBhcHBOYW1lPSJ4bCIgbGFzdEVkaXRlZD0iNSIgbG93ZXN0RWRpdGVkPSI1IiBydXBCdWlsZD0iMjQ4MTYiLz48d29ya2Jvb2tQciBzaG93SW5rQW5ub3RhdGlvbj0iMCIgYXV0b0NvbXByZXNzUGljdHVyZXM9IjAiLz48Ym9va1ZpZXdzPjx3b3JrYm9va1ZpZXcgeFdpbmRvdz0iMCIgeVdpbmRvdz0iMCIgd2luZG93V2lkdGg9IjI1NjAwIiB3aW5kb3dIZWlnaHQ9IjE5MDIwIiB0YWJSYXRpbz0iNTAwIi8+PC9ib29rVmlld3M+PHNoZWV0cz48c2hlZXQgbmFtZT0iU2hlZXQxIiBzaGVldElkPSIxIiByOmlkPSJySWQxIi8+PC9zaGVldHM+PGRlZmluZWROYW1lcy8+PC93b3JrYm9vaz4nLAoieGwvd29ya3NoZWV0cy9zaGVldDEueG1sIjonPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9InllcyI/Pjx3b3Jrc2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6cj0iaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcyIgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2IiBtYzpJZ25vcmFibGU9IngxNGFjIiB4bWxuczp4MTRhYz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWMiPjxzaGVldERhdGEvPjxtZXJnZUNlbGxzIGNvdW50PSIwIi8+PC93b3Jrc2hlZXQ+JywieGwvc3R5bGVzLnhtbCI6Jzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+PHN0eWxlU2hlZXQgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpbiIgeG1sbnM6bWM9Imh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2IiBtYzpJZ25vcmFibGU9IngxNGFjIiB4bWxuczp4MTRhYz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWMiPjxudW1GbXRzIGNvdW50PSI2Ij48bnVtRm10IG51bUZtdElkPSIxNjQiIGZvcm1hdENvZGU9IiMsIyMwLjAwXy0gWyQkLTQ1Q10iLz48bnVtRm10IG51bUZtdElkPSIxNjUiIGZvcm1hdENvZGU9IiZxdW90O8KjJnF1b3Q7IywjIzAuMDAiLz48bnVtRm10IG51bUZtdElkPSIxNjYiIGZvcm1hdENvZGU9Ilsk4oKsLTJdICMsIyMwLjAwIi8+PG51bUZtdCBudW1GbXRJZD0iMTY3IiBmb3JtYXRDb2RlPSIwLjAlIi8+PG51bUZtdCBudW1GbXRJZD0iMTY4IiBmb3JtYXRDb2RlPSIjLCMjMDsoIywjIzApIi8+PG51bUZtdCBudW1GbXRJZD0iMTY5IiBmb3JtYXRDb2RlPSIjLCMjMC4wMDsoIywjIzAuMDApIi8+PC9udW1GbXRzPjxmb250cyBjb3VudD0iNSIgeDE0YWM6a25vd25Gb250cz0iMSI+PGZvbnQ+PHN6IHZhbD0iMTEiIC8+PG5hbWUgdmFsPSJDYWxpYnJpIiAvPjwvZm9udD48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PGNvbG9yIHJnYj0iRkZGRkZGRkYiIC8+PC9mb250Pjxmb250PjxzeiB2YWw9IjExIiAvPjxuYW1lIHZhbD0iQ2FsaWJyaSIgLz48YiAvPjwvZm9udD48Zm9udD48c3ogdmFsPSIxMSIgLz48bmFtZSB2YWw9IkNhbGlicmkiIC8+PGkgLz48L2ZvbnQ+PGZvbnQ+PHN6IHZhbD0iMTEiIC8+PG5hbWUgdmFsPSJDYWxpYnJpIiAvPjx1IC8+PC9mb250PjwvZm9udHM+PGZpbGxzIGNvdW50PSI2Ij48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9Im5vbmUiIC8+PC9maWxsPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ibm9uZSIgLz48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJzb2xpZCI+PGZnQ29sb3IgcmdiPSJGRkQ5RDlEOSIgLz48YmdDb2xvciBpbmRleGVkPSI2NCIgLz48L3BhdHRlcm5GaWxsPjwvZmlsbD48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9InNvbGlkIj48ZmdDb2xvciByZ2I9IkZGRDk5Nzk1IiAvPjxiZ0NvbG9yIGluZGV4ZWQ9IjY0IiAvPjwvcGF0dGVybkZpbGw+PC9maWxsPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT0ic29saWQiPjxmZ0NvbG9yIHJnYj0iZmZjNmVmY2UiIC8+PGJnQ29sb3IgaW5kZXhlZD0iNjQiIC8+PC9wYXR0ZXJuRmlsbD48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPSJzb2xpZCI+PGZnQ29sb3IgcmdiPSJmZmM2Y2ZlZiIgLz48YmdDb2xvciBpbmRleGVkPSI2NCIgLz48L3BhdHRlcm5GaWxsPjwvZmlsbD48L2ZpbGxzPjxib3JkZXJzIGNvdW50PSIyIj48Ym9yZGVyPjxsZWZ0IC8+PHJpZ2h0IC8+PHRvcCAvPjxib3R0b20gLz48ZGlhZ29uYWwgLz48L2JvcmRlcj48Ym9yZGVyIGRpYWdvbmFsVXA9ImZhbHNlIiBkaWFnb25hbERvd249ImZhbHNlIj48bGVmdCBzdHlsZT0idGhpbiI+PGNvbG9yIGF1dG89IjEiIC8+PC9sZWZ0PjxyaWdodCBzdHlsZT0idGhpbiI+PGNvbG9yIGF1dG89IjEiIC8+PC9yaWdodD48dG9wIHN0eWxlPSJ0aGluIj48Y29sb3IgYXV0bz0iMSIgLz48L3RvcD48Ym90dG9tIHN0eWxlPSJ0aGluIj48Y29sb3IgYXV0bz0iMSIgLz48L2JvdHRvbT48ZGlhZ29uYWwgLz48L2JvcmRlcj48L2JvcmRlcnM+PGNlbGxTdHlsZVhmcyBjb3VudD0iMSI+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIC8+PC9jZWxsU3R5bGVYZnM+PGNlbGxYZnMgY291bnQ9IjY3Ij48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIyIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIyIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIzIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSI0IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSI1IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSI1IiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSIwIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjIiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSIyIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iMiIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMSIgZmlsbElkPSIzIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjIiIGZpbGxJZD0iMyIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIzIiBmaWxsSWQ9IjMiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iNCIgZmlsbElkPSIzIiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIxIiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMiIgZmlsbElkPSI0IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjMiIGZpbGxJZD0iNCIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSI0IiBmaWxsSWQ9IjQiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMCIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjEiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIyIiBmaWxsSWQ9IjUiIGJvcmRlcklkPSIxIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiLz48eGYgbnVtRm10SWQ9IjAiIGZvbnRJZD0iMyIgZmlsbElkPSI1IiBib3JkZXJJZD0iMSIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIi8+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjQiIGZpbGxJZD0iNSIgYm9yZGVySWQ9IjEiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIvPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5QWxpZ25tZW50PSIxIj48YWxpZ25tZW50IGhvcml6b250YWw9ImxlZnQiLz48L3hmPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5QWxpZ25tZW50PSIxIj48YWxpZ25tZW50IGhvcml6b250YWw9ImNlbnRlciIvPjwveGY+PHhmIG51bUZtdElkPSIwIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlBbGlnbm1lbnQ9IjEiPjxhbGlnbm1lbnQgaG9yaXpvbnRhbD0icmlnaHQiLz48L3hmPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5QWxpZ25tZW50PSIxIj48YWxpZ25tZW50IGhvcml6b250YWw9ImZpbGwiLz48L3hmPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5QWxpZ25tZW50PSIxIj48YWxpZ25tZW50IHRleHRSb3RhdGlvbj0iOTAiLz48L3hmPjx4ZiBudW1GbXRJZD0iMCIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5QWxpZ25tZW50PSIxIj48YWxpZ25tZW50IHdyYXBUZXh0PSIxIi8+PC94Zj48eGYgbnVtRm10SWQ9IjkiICAgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIxNjQiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMTY1IiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjE2NiIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIxNjciIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMTY4IiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjE2OSIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIzIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48eGYgbnVtRm10SWQ9IjQiIGZvbnRJZD0iMCIgZmlsbElkPSIwIiBib3JkZXJJZD0iMCIgYXBwbHlGb250PSIxIiBhcHBseUZpbGw9IjEiIGFwcGx5Qm9yZGVyPSIxIiB4ZklkPSIwIiBhcHBseU51bWJlckZvcm1hdD0iMSIvPjx4ZiBudW1GbXRJZD0iMSIgZm9udElkPSIwIiBmaWxsSWQ9IjAiIGJvcmRlcklkPSIwIiBhcHBseUZvbnQ9IjEiIGFwcGx5RmlsbD0iMSIgYXBwbHlCb3JkZXI9IjEiIHhmSWQ9IjAiIGFwcGx5TnVtYmVyRm9ybWF0PSIxIi8+PHhmIG51bUZtdElkPSIyIiBmb250SWQ9IjAiIGZpbGxJZD0iMCIgYm9yZGVySWQ9IjAiIGFwcGx5Rm9udD0iMSIgYXBwbHlGaWxsPSIxIiBhcHBseUJvcmRlcj0iMSIgeGZJZD0iMCIgYXBwbHlOdW1iZXJGb3JtYXQ9IjEiLz48L2NlbGxYZnM+PGNlbGxTdHlsZXMgY291bnQ9IjEiPjxjZWxsU3R5bGUgbmFtZT0iTm9ybWFsIiB4ZklkPSIwIiBidWlsdGluSWQ9IjAiIC8+PC9jZWxsU3R5bGVzPjxkeGZzIGNvdW50PSIwIiAvPjx0YWJsZVN0eWxlcyBjb3VudD0iMCIgZGVmYXVsdFRhYmxlU3R5bGU9IlRhYmxlU3R5bGVNZWRpdW05IiBkZWZhdWx0UGl2b3RTdHlsZT0iUGl2b3RTdHlsZU1lZGl1bTQiIC8+PC9zdHlsZVNoZWV0Pid9LApLPVt7bWF0Y2g6L15cLT9cZCtcLlxkJSQvLHN0eWxlOjYwLGZtdDpmdW5jdGlvbihhKXtyZXR1cm4gYS8xMDB9fSx7bWF0Y2g6L15cLT9cZCtcLj9cZColJC8sc3R5bGU6NTYsZm10OmZ1bmN0aW9uKGEpe3JldHVybiBhLzEwMH19LHttYXRjaDovXlwtP1wkW1xkLF0rLj9cZCokLyxzdHlsZTo1N30se21hdGNoOi9eXC0/wqNbXGQsXSsuP1xkKiQvLHN0eWxlOjU4fSx7bWF0Y2g6L15cLT/igqxbXGQsXSsuP1xkKiQvLHN0eWxlOjU5fSx7bWF0Y2g6L15cLT9cZCskLyxzdHlsZTo2NX0se21hdGNoOi9eXC0/XGQrXC5cZHsyfSQvLHN0eWxlOjY2fSx7bWF0Y2g6L15cKFtcZCxdK1wpJC8sc3R5bGU6NjEsZm10OmZ1bmN0aW9uKGEpe3JldHVybi0xKmEucmVwbGFjZSgvW1woXCldL2csIiIpfX0se21hdGNoOi9eXChbXGQsXStcLlxkezJ9XCkkLyxzdHlsZTo2MixmbXQ6ZnVuY3Rpb24oYSl7cmV0dXJuLTEqYS5yZXBsYWNlKC9bXChcKV0vZywiIil9fSx7bWF0Y2g6L15cLT9bXGQsXSskLyxzdHlsZTo2M30sCnttYXRjaDovXlwtP1tcZCxdK1wuXGR7Mn0kLyxzdHlsZTo2NH1dO3YuZXh0LmJ1dHRvbnMuY29weUh0bWw1PXtjbGFzc05hbWU6ImJ1dHRvbnMtY29weSBidXR0b25zLWh0bWw1Iix0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMuY29weSIsIkNvcHkiKX0sYWN0aW9uOmZ1bmN0aW9uKGEsYixkLGMpe3RoaXMucHJvY2Vzc2luZyghMCk7dmFyIGc9dGhpczthPUkoYixjKTt2YXIgZT1iLmJ1dHRvbnMuZXhwb3J0SW5mbyhjKSxoPUgoYyksbT1hLnN0cjtkPWYoIjxkaXYvPiIpLmNzcyh7aGVpZ2h0OjEsd2lkdGg6MSxvdmVyZmxvdzoiaGlkZGVuIixwb3NpdGlvbjoiZml4ZWQiLHRvcDowLGxlZnQ6MH0pO2UudGl0bGUmJihtPWUudGl0bGUraCtoK20pO2UubWVzc2FnZVRvcCYmKG09ZS5tZXNzYWdlVG9wK2graCttKTtlLm1lc3NhZ2VCb3R0b20mJihtPW0raCtoK2UubWVzc2FnZUJvdHRvbSk7Yy5jdXN0b21pemUmJihtPWMuY3VzdG9taXplKG0sYyxiKSk7Yz1mKCI8dGV4dGFyZWEgcmVhZG9ubHkvPiIpLnZhbChtKS5hcHBlbmRUbyhkKTsKaWYocC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQoImNvcHkiKSl7ZC5hcHBlbmRUbyhiLnRhYmxlKCkuY29udGFpbmVyKCkpO2NbMF0uZm9jdXMoKTtjWzBdLnNlbGVjdCgpO3RyeXt2YXIgaz1wLmV4ZWNDb21tYW5kKCJjb3B5Iik7ZC5yZW1vdmUoKTtpZihrKXtiLmJ1dHRvbnMuaW5mbyhiLmkxOG4oImJ1dHRvbnMuY29weVRpdGxlIiwiQ29weSB0byBjbGlwYm9hcmQiKSxiLmkxOG4oImJ1dHRvbnMuY29weVN1Y2Nlc3MiLHsxOiJDb3BpZWQgb25lIHJvdyB0byBjbGlwYm9hcmQiLF86IkNvcGllZCAlZCByb3dzIHRvIGNsaXBib2FyZCJ9LGEucm93cyksMkUzKTt0aGlzLnByb2Nlc3NpbmcoITEpO3JldHVybn19Y2F0Y2gocSl7fX1rPWYoIjxzcGFuPiIrYi5pMThuKCJidXR0b25zLmNvcHlLZXlzIiwiUHJlc3MgPGk+Y3RybDwvaT4gb3IgPGk+4oyYPC9pPiArIDxpPkM8L2k+IHRvIGNvcHkgdGhlIHRhYmxlIGRhdGE8YnI+dG8geW91ciBzeXN0ZW0gY2xpcGJvYXJkLjxicj48YnI+VG8gY2FuY2VsLCBjbGljayB0aGlzIG1lc3NhZ2Ugb3IgcHJlc3MgZXNjYXBlLiIpKwoiPC9zcGFuPiIpLmFwcGVuZChkKTtiLmJ1dHRvbnMuaW5mbyhiLmkxOG4oImJ1dHRvbnMuY29weVRpdGxlIiwiQ29weSB0byBjbGlwYm9hcmQiKSxrLDApO2NbMF0uZm9jdXMoKTtjWzBdLnNlbGVjdCgpO3ZhciBuPWYoaykuY2xvc2VzdCgiLmR0LWJ1dHRvbi1pbmZvIikscj1mdW5jdGlvbigpe24ub2ZmKCJjbGljay5idXR0b25zLWNvcHkiKTtmKHApLm9mZigiLmJ1dHRvbnMtY29weSIpO2IuYnV0dG9ucy5pbmZvKCExKX07bi5vbigiY2xpY2suYnV0dG9ucy1jb3B5IixyKTtmKHApLm9uKCJrZXlkb3duLmJ1dHRvbnMtY29weSIsZnVuY3Rpb24oYSl7Mjc9PT1hLmtleUNvZGUmJihyKCksZy5wcm9jZXNzaW5nKCExKSl9KS5vbigiY29weS5idXR0b25zLWNvcHkgY3V0LmJ1dHRvbnMtY29weSIsZnVuY3Rpb24oKXtyKCk7Zy5wcm9jZXNzaW5nKCExKX0pfSxleHBvcnRPcHRpb25zOnt9LGZpZWxkU2VwYXJhdG9yOiJcdCIsZmllbGRCb3VuZGFyeToiIixoZWFkZXI6ITAsZm9vdGVyOiExLAp0aXRsZToiKiIsbWVzc2FnZVRvcDoiKiIsbWVzc2FnZUJvdHRvbToiKiJ9O3YuZXh0LmJ1dHRvbnMuY3N2SHRtbDU9e2JvbTohMSxjbGFzc05hbWU6ImJ1dHRvbnMtY3N2IGJ1dHRvbnMtaHRtbDUiLGF2YWlsYWJsZTpmdW5jdGlvbigpe3JldHVybiBnLkZpbGVSZWFkZXIhPT13JiZnLkJsb2J9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5jc3YiLCJDU1YiKX0sYWN0aW9uOmZ1bmN0aW9uKGEsYixkLGMpe3RoaXMucHJvY2Vzc2luZyghMCk7YT1JKGIsYykuc3RyO2Q9Yi5idXR0b25zLmV4cG9ydEluZm8oYyk7dmFyIGY9Yy5jaGFyc2V0O2MuY3VzdG9taXplJiYoYT1jLmN1c3RvbWl6ZShhLGMsYikpOyExIT09Zj8oZnx8KGY9cC5jaGFyYWN0ZXJTZXR8fHAuY2hhcnNldCksZiYmKGY9IjtjaGFyc2V0PSIrZikpOmY9IiI7Yy5ib20mJihhPSLvu78iK2EpO0IobmV3IEJsb2IoW2FdLHt0eXBlOiJ0ZXh0L2NzdiIrZn0pLGQuZmlsZW5hbWUsITApO3RoaXMucHJvY2Vzc2luZyghMSl9LApmaWxlbmFtZToiKiIsZXh0ZW5zaW9uOiIuY3N2IixleHBvcnRPcHRpb25zOnt9LGZpZWxkU2VwYXJhdG9yOiIsIixmaWVsZEJvdW5kYXJ5OiciJyxlc2NhcGVDaGFyOiciJyxjaGFyc2V0Om51bGwsaGVhZGVyOiEwLGZvb3RlcjohMX07di5leHQuYnV0dG9ucy5leGNlbEh0bWw1PXtjbGFzc05hbWU6ImJ1dHRvbnMtZXhjZWwgYnV0dG9ucy1odG1sNSIsYXZhaWxhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGcuRmlsZVJlYWRlciE9PXcmJih6fHxnLkpTWmlwKSE9PXcmJiFKKCkmJkN9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5leGNlbCIsIkV4Y2VsIil9LGFjdGlvbjpmdW5jdGlvbihhLGIsZCxjKXt0aGlzLnByb2Nlc3NpbmcoITApO3ZhciBwPXRoaXMsZT0wO2E9ZnVuY3Rpb24oYSl7cmV0dXJuIGYucGFyc2VYTUwoRlthXSl9O3ZhciBoPWEoInhsL3dvcmtzaGVldHMvc2hlZXQxLnhtbCIpLG09aC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2hlZXREYXRhIilbMF07CmE9e19yZWxzOnsiLnJlbHMiOmEoIl9yZWxzLy5yZWxzIil9LHhsOntfcmVsczp7Indvcmtib29rLnhtbC5yZWxzIjphKCJ4bC9fcmVscy93b3JrYm9vay54bWwucmVscyIpfSwid29ya2Jvb2sueG1sIjphKCJ4bC93b3JrYm9vay54bWwiKSwic3R5bGVzLnhtbCI6YSgieGwvc3R5bGVzLnhtbCIpLHdvcmtzaGVldHM6eyJzaGVldDEueG1sIjpofX0sIltDb250ZW50X1R5cGVzXS54bWwiOmEoIltDb250ZW50X1R5cGVzXS54bWwiKX07dmFyIGs9Yi5idXR0b25zLmV4cG9ydERhdGEoYy5leHBvcnRPcHRpb25zKSxuLHYscT1mdW5jdGlvbihhKXtuPWUrMTt2PXIoaCwicm93Iix7YXR0cjp7cjpufX0pO2Zvcih2YXIgYj0wLGQ9YS5sZW5ndGg7YjxkO2IrKyl7dmFyIGs9QShiKSsiIituLGc9bnVsbDtpZihudWxsPT09YVtiXXx8YVtiXT09PXd8fCIiPT09YVtiXSlpZighMD09PWMuY3JlYXRlRW1wdHlDZWxscylhW2JdPSIiO2Vsc2UgY29udGludWU7dmFyIGw9YVtiXTthW2JdPWYudHJpbShhW2JdKTsKZm9yKHZhciBxPTAscD1LLmxlbmd0aDtxPHA7cSsrKXt2YXIgdT1LW3FdO2lmKGFbYl0ubWF0Y2gmJiFhW2JdLm1hdGNoKC9eMFxkKy8pJiZhW2JdLm1hdGNoKHUubWF0Y2gpKXtnPWFbYl0ucmVwbGFjZSgvW15cZFwuXC1dL2csIiIpO3UuZm10JiYoZz11LmZtdChnKSk7Zz1yKGgsImMiLHthdHRyOntyOmssczp1LnN0eWxlfSxjaGlsZHJlbjpbcihoLCJ2Iix7dGV4dDpnfSldfSk7YnJlYWt9fWd8fCgibnVtYmVyIj09PXR5cGVvZiBhW2JdfHxhW2JdLm1hdGNoJiZhW2JdLm1hdGNoKC9eLT9cZCsoXC5cZCspPyQvKSYmIWFbYl0ubWF0Y2goL14wXGQrLyk/Zz1yKGgsImMiLHthdHRyOnt0OiJuIixyOmt9LGNoaWxkcmVuOltyKGgsInYiLHt0ZXh0OmFbYl19KV19KToobD1sLnJlcGxhY2U/bC5yZXBsYWNlKC9bXHgwMC1ceDA5XHgwQlx4MENceDBFLVx4MUZceDdGLVx4OUZdL2csIiIpOmwsZz1yKGgsImMiLHthdHRyOnt0OiJpbmxpbmVTdHIiLHI6a30sY2hpbGRyZW46e3JvdzpyKGgsCiJpcyIse2NoaWxkcmVuOntyb3c6cihoLCJ0Iix7dGV4dDpsLGF0dHI6eyJ4bWw6c3BhY2UiOiJwcmVzZXJ2ZSJ9fSl9fSl9fSkpKTt2LmFwcGVuZENoaWxkKGcpfW0uYXBwZW5kQ2hpbGQodik7ZSsrfTtjLmN1c3RvbWl6ZURhdGEmJmMuY3VzdG9taXplRGF0YShrKTt2YXIgeD1mdW5jdGlvbihhLGIpe3ZhciBjPWYoIm1lcmdlQ2VsbHMiLGgpO2NbMF0uYXBwZW5kQ2hpbGQocihoLCJtZXJnZUNlbGwiLHthdHRyOntyZWY6IkEiK2ErIjoiK0EoYikrYX19KSk7Yy5hdHRyKCJjb3VudCIscGFyc2VGbG9hdChjLmF0dHIoImNvdW50IikpKzEpO2YoInJvdzplcSgiKyhhLTEpKyIpIGMiLGgpLmF0dHIoInMiLCI1MSIpfSxsPWIuYnV0dG9ucy5leHBvcnRJbmZvKGMpO2wudGl0bGUmJihxKFtsLnRpdGxlXSxlKSx4KGUsay5oZWFkZXIubGVuZ3RoLTEpKTtsLm1lc3NhZ2VUb3AmJihxKFtsLm1lc3NhZ2VUb3BdLGUpLHgoZSxrLmhlYWRlci5sZW5ndGgtMSkpO2MuaGVhZGVyJiYocShrLmhlYWRlciwKZSksZigicm93Omxhc3QgYyIsaCkuYXR0cigicyIsIjIiKSk7ZD1lO3ZhciB0PTA7Zm9yKHZhciB5PWsuYm9keS5sZW5ndGg7dDx5O3QrKylxKGsuYm9keVt0XSxlKTt0PWU7Yy5mb290ZXImJmsuZm9vdGVyJiYocShrLmZvb3RlcixlKSxmKCJyb3c6bGFzdCBjIixoKS5hdHRyKCJzIiwiMiIpKTtsLm1lc3NhZ2VCb3R0b20mJihxKFtsLm1lc3NhZ2VCb3R0b21dLGUpLHgoZSxrLmhlYWRlci5sZW5ndGgtMSkpO3E9cihoLCJjb2xzIik7Zigid29ya3NoZWV0IixoKS5wcmVwZW5kKHEpO3g9MDtmb3IoeT1rLmhlYWRlci5sZW5ndGg7eDx5O3grKylxLmFwcGVuZENoaWxkKHIoaCwiY29sIix7YXR0cjp7bWluOngrMSxtYXg6eCsxLHdpZHRoOkwoayx4KSxjdXN0b21XaWR0aDoxfX0pKTtxPWEueGxbIndvcmtib29rLnhtbCJdO2YoInNoZWV0cyBzaGVldCIscSkuYXR0cigibmFtZSIsRyhjKSk7Yy5hdXRvRmlsdGVyJiYoZigibWVyZ2VDZWxscyIsaCkuYmVmb3JlKHIoaCwiYXV0b0ZpbHRlciIsCnthdHRyOntyZWY6IkEiK2QrIjoiK0Eoay5oZWFkZXIubGVuZ3RoLTEpK3R9fSkpLGYoImRlZmluZWROYW1lcyIscSkuYXBwZW5kKHIocSwiZGVmaW5lZE5hbWUiLHthdHRyOntuYW1lOiJfeGxubS5fRmlsdGVyRGF0YWJhc2UiLGxvY2FsU2hlZXRJZDoiMCIsaGlkZGVuOjF9LHRleHQ6RyhjKSsiISRBJCIrZCsiOiIrQShrLmhlYWRlci5sZW5ndGgtMSkrdH0pKSk7Yy5jdXN0b21pemUmJmMuY3VzdG9taXplKGEsYyxiKTswPT09ZigibWVyZ2VDZWxscyIsaCkuY2hpbGRyZW4oKS5sZW5ndGgmJmYoIm1lcmdlQ2VsbHMiLGgpLnJlbW92ZSgpO2I9bmV3ICh6fHxnLkpTWmlwKTtkPXt0eXBlOiJibG9iIixtaW1lVHlwZToiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQifTtFKGIsYSk7Yi5nZW5lcmF0ZUFzeW5jP2IuZ2VuZXJhdGVBc3luYyhkKS50aGVuKGZ1bmN0aW9uKGEpe0IoYSxsLmZpbGVuYW1lKTtwLnByb2Nlc3NpbmcoITEpfSk6CihCKGIuZ2VuZXJhdGUoZCksbC5maWxlbmFtZSksdGhpcy5wcm9jZXNzaW5nKCExKSl9LGZpbGVuYW1lOiIqIixleHRlbnNpb246Ii54bHN4IixleHBvcnRPcHRpb25zOnt9LGhlYWRlcjohMCxmb290ZXI6ITEsdGl0bGU6IioiLG1lc3NhZ2VUb3A6IioiLG1lc3NhZ2VCb3R0b206IioiLGNyZWF0ZUVtcHR5Q2VsbHM6ITEsYXV0b0ZpbHRlcjohMSxzaGVldE5hbWU6IiJ9O3YuZXh0LmJ1dHRvbnMucGRmSHRtbDU9e2NsYXNzTmFtZToiYnV0dG9ucy1wZGYgYnV0dG9ucy1odG1sNSIsYXZhaWxhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGcuRmlsZVJlYWRlciE9PXcmJih0fHxnLnBkZk1ha2UpfSx0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmkxOG4oImJ1dHRvbnMucGRmIiwiUERGIil9LGFjdGlvbjpmdW5jdGlvbihhLGIsZCxjKXt0aGlzLnByb2Nlc3NpbmcoITApO2Q9Yi5idXR0b25zLmV4cG9ydERhdGEoYy5leHBvcnRPcHRpb25zKTthPWIuYnV0dG9ucy5leHBvcnRJbmZvKGMpO3ZhciBwPQpbXTtjLmhlYWRlciYmcC5wdXNoKGYubWFwKGQuaGVhZGVyLGZ1bmN0aW9uKGEpe3JldHVybnt0ZXh0OiJzdHJpbmciPT09dHlwZW9mIGE/YTphKyIiLHN0eWxlOiJ0YWJsZUhlYWRlciJ9fSkpO2Zvcih2YXIgZT0wLGg9ZC5ib2R5Lmxlbmd0aDtlPGg7ZSsrKXAucHVzaChmLm1hcChkLmJvZHlbZV0sZnVuY3Rpb24oYSl7aWYobnVsbD09PWF8fGE9PT13KWE9IiI7cmV0dXJue3RleHQ6InN0cmluZyI9PT10eXBlb2YgYT9hOmErIiIsc3R5bGU6ZSUyPyJ0YWJsZUJvZHlFdmVuIjoidGFibGVCb2R5T2RkIn19KSk7Yy5mb290ZXImJmQuZm9vdGVyJiZwLnB1c2goZi5tYXAoZC5mb290ZXIsZnVuY3Rpb24oYSl7cmV0dXJue3RleHQ6InN0cmluZyI9PT10eXBlb2YgYT9hOmErIiIsc3R5bGU6InRhYmxlRm9vdGVyIn19KSk7ZD17cGFnZVNpemU6Yy5wYWdlU2l6ZSxwYWdlT3JpZW50YXRpb246Yy5vcmllbnRhdGlvbixjb250ZW50Olt7dGFibGU6e2hlYWRlclJvd3M6MSxib2R5OnB9LGxheW91dDoibm9Cb3JkZXJzIn1dLApzdHlsZXM6e3RhYmxlSGVhZGVyOntib2xkOiEwLGZvbnRTaXplOjExLGNvbG9yOiJ3aGl0ZSIsZmlsbENvbG9yOiIjMmQ0MTU0IixhbGlnbm1lbnQ6ImNlbnRlciJ9LHRhYmxlQm9keUV2ZW46e30sdGFibGVCb2R5T2RkOntmaWxsQ29sb3I6IiNmM2YzZjMifSx0YWJsZUZvb3Rlcjp7Ym9sZDohMCxmb250U2l6ZToxMSxjb2xvcjoid2hpdGUiLGZpbGxDb2xvcjoiIzJkNDE1NCJ9LHRpdGxlOnthbGlnbm1lbnQ6ImNlbnRlciIsZm9udFNpemU6MTV9LG1lc3NhZ2U6e319LGRlZmF1bHRTdHlsZTp7Zm9udFNpemU6MTB9fTthLm1lc3NhZ2VUb3AmJmQuY29udGVudC51bnNoaWZ0KHt0ZXh0OmEubWVzc2FnZVRvcCxzdHlsZToibWVzc2FnZSIsbWFyZ2luOlswLDAsMCwxMl19KTthLm1lc3NhZ2VCb3R0b20mJmQuY29udGVudC5wdXNoKHt0ZXh0OmEubWVzc2FnZUJvdHRvbSxzdHlsZToibWVzc2FnZSIsbWFyZ2luOlswLDAsMCwxMl19KTthLnRpdGxlJiZkLmNvbnRlbnQudW5zaGlmdCh7dGV4dDphLnRpdGxlLApzdHlsZToidGl0bGUiLG1hcmdpbjpbMCwwLDAsMTJdfSk7Yy5jdXN0b21pemUmJmMuY3VzdG9taXplKGQsYyxiKTtiPSh0fHxnLnBkZk1ha2UpLmNyZWF0ZVBkZihkKTsib3BlbiIhPT1jLmRvd25sb2FkfHxKKCk/Yi5kb3dubG9hZChhLmZpbGVuYW1lKTpiLm9wZW4oKTt0aGlzLnByb2Nlc3NpbmcoITEpfSx0aXRsZToiKiIsZmlsZW5hbWU6IioiLGV4dGVuc2lvbjoiLnBkZiIsZXhwb3J0T3B0aW9uczp7fSxvcmllbnRhdGlvbjoicG9ydHJhaXQiLHBhZ2VTaXplOiJBNCIsaGVhZGVyOiEwLGZvb3RlcjohMSxtZXNzYWdlVG9wOiIqIixtZXNzYWdlQm90dG9tOiIqIixjdXN0b21pemU6bnVsbCxkb3dubG9hZDoiZG93bmxvYWQifTtyZXR1cm4gdi5CdXR0b25zfSk7Cg=="></script>
|
|
<script src="data:application/javascript;base64,LyohCiBDb2x1bW4gdmlzaWJpbGl0eSBidXR0b25zIGZvciBCdXR0b25zIGFuZCBEYXRhVGFibGVzLgogMjAxNiBTcHJ5TWVkaWEgTHRkIC0gZGF0YXRhYmxlcy5uZXQvbGljZW5zZQoqLwooZnVuY3Rpb24oZil7ImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwiZGF0YXRhYmxlcy5uZXQiLCJkYXRhdGFibGVzLm5ldC1idXR0b25zIl0sZnVuY3Rpb24oYyl7cmV0dXJuIGYoYyx3aW5kb3csZG9jdW1lbnQpfSk6Im9iamVjdCI9PT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihjLGUpe2N8fChjPXdpbmRvdyk7ZSYmZS5mbi5kYXRhVGFibGV8fChlPXJlcXVpcmUoImRhdGF0YWJsZXMubmV0IikoYyxlKS4kKTtlLmZuLmRhdGFUYWJsZS5CdXR0b25zfHxyZXF1aXJlKCJkYXRhdGFibGVzLm5ldC1idXR0b25zIikoYyxlKTtyZXR1cm4gZihlLGMsYy5kb2N1bWVudCl9OmYoalF1ZXJ5LHdpbmRvdyxkb2N1bWVudCl9KShmdW5jdGlvbihmLGMsZSxoKXtjPWYuZm4uZGF0YVRhYmxlO2YuZXh0ZW5kKGMuZXh0LmJ1dHRvbnMse2NvbHZpczpmdW5jdGlvbihhLGIpe3JldHVybntleHRlbmQ6ImNvbGxlY3Rpb24iLAp0ZXh0OmZ1bmN0aW9uKGIpe3JldHVybiBiLmkxOG4oImJ1dHRvbnMuY29sdmlzIiwiQ29sdW1uIHZpc2liaWxpdHkiKX0sY2xhc3NOYW1lOiJidXR0b25zLWNvbHZpcyIsYnV0dG9uczpbe2V4dGVuZDoiY29sdW1uc1RvZ2dsZSIsY29sdW1uczpiLmNvbHVtbnMsY29sdW1uVGV4dDpiLmNvbHVtblRleHR9XX19LGNvbHVtbnNUb2dnbGU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5jb2x1bW5zKGIuY29sdW1ucykuaW5kZXhlcygpLm1hcChmdW5jdGlvbihhKXtyZXR1cm57ZXh0ZW5kOiJjb2x1bW5Ub2dnbGUiLGNvbHVtbnM6YSxjb2x1bW5UZXh0OmIuY29sdW1uVGV4dH19KS50b0FycmF5KCl9LGNvbHVtblRvZ2dsZTpmdW5jdGlvbihhLGIpe3JldHVybntleHRlbmQ6ImNvbHVtblZpc2liaWxpdHkiLGNvbHVtbnM6Yi5jb2x1bW5zLGNvbHVtblRleHQ6Yi5jb2x1bW5UZXh0fX0sY29sdW1uc1Zpc2liaWxpdHk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5jb2x1bW5zKGIuY29sdW1ucykuaW5kZXhlcygpLm1hcChmdW5jdGlvbihhKXtyZXR1cm57ZXh0ZW5kOiJjb2x1bW5WaXNpYmlsaXR5IiwKY29sdW1uczphLHZpc2liaWxpdHk6Yi52aXNpYmlsaXR5LGNvbHVtblRleHQ6Yi5jb2x1bW5UZXh0fX0pLnRvQXJyYXkoKX0sY29sdW1uVmlzaWJpbGl0eTp7Y29sdW1uczpoLHRleHQ6ZnVuY3Rpb24oYSxiLGQpe3JldHVybiBkLl9jb2x1bW5UZXh0KGEsZCl9LGNsYXNzTmFtZToiYnV0dG9ucy1jb2x1bW5WaXNpYmlsaXR5IixhY3Rpb246ZnVuY3Rpb24oYSxiLGQsZyl7YT1iLmNvbHVtbnMoZy5jb2x1bW5zKTtiPWEudmlzaWJsZSgpO2EudmlzaWJsZShnLnZpc2liaWxpdHkhPT1oP2cudmlzaWJpbGl0eTohKGIubGVuZ3RoJiZiWzBdKSl9LGluaXQ6ZnVuY3Rpb24oYSxiLGQpe3ZhciBnPXRoaXM7Yi5hdHRyKCJkYXRhLWN2LWlkeCIsZC5jb2x1bW5zKTthLm9uKCJjb2x1bW4tdmlzaWJpbGl0eS5kdCIrZC5uYW1lc3BhY2UsZnVuY3Rpb24oYixjKXtjLmJEZXN0cm95aW5nfHxjLm5UYWJsZSE9YS5zZXR0aW5ncygpWzBdLm5UYWJsZXx8Zy5hY3RpdmUoYS5jb2x1bW4oZC5jb2x1bW5zKS52aXNpYmxlKCkpfSkub24oImNvbHVtbi1yZW9yZGVyLmR0IisKZC5uYW1lc3BhY2UsZnVuY3Rpb24oYyxlLGYpezE9PT1hLmNvbHVtbnMoZC5jb2x1bW5zKS5jb3VudCgpJiYoYi50ZXh0KGQuX2NvbHVtblRleHQoYSxkKSksZy5hY3RpdmUoYS5jb2x1bW4oZC5jb2x1bW5zKS52aXNpYmxlKCkpKX0pO3RoaXMuYWN0aXZlKGEuY29sdW1uKGQuY29sdW1ucykudmlzaWJsZSgpKX0sZGVzdHJveTpmdW5jdGlvbihhLGIsZCl7YS5vZmYoImNvbHVtbi12aXNpYmlsaXR5LmR0IitkLm5hbWVzcGFjZSkub2ZmKCJjb2x1bW4tcmVvcmRlci5kdCIrZC5uYW1lc3BhY2UpfSxfY29sdW1uVGV4dDpmdW5jdGlvbihhLGIpe3ZhciBkPWEuY29sdW1uKGIuY29sdW1ucykuaW5kZXgoKSxjPWEuc2V0dGluZ3MoKVswXS5hb0NvbHVtbnNbZF0uc1RpdGxlLnJlcGxhY2UoL1xuL2csIiAiKS5yZXBsYWNlKC88YnJccypcLz8+L2dpLCIgIikucmVwbGFjZSgvPHNlbGVjdCguKj8pPFwvc2VsZWN0Pi9nLCIiKS5yZXBsYWNlKC88IVwtXC0uKj9cLVwtPi9nLCIiKS5yZXBsYWNlKC88Lio/Pi9nLAoiIikucmVwbGFjZSgvXlxzK3xccyskL2csIiIpO3JldHVybiBiLmNvbHVtblRleHQ/Yi5jb2x1bW5UZXh0KGEsZCxjKTpjfX0sY29sdmlzUmVzdG9yZTp7Y2xhc3NOYW1lOiJidXR0b25zLWNvbHZpc1Jlc3RvcmUiLHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaTE4bigiYnV0dG9ucy5jb2x2aXNSZXN0b3JlIiwiUmVzdG9yZSB2aXNpYmlsaXR5Iil9LGluaXQ6ZnVuY3Rpb24oYSxiLGQpe2QuX3Zpc09yaWdpbmFsPWEuY29sdW1ucygpLmluZGV4ZXMoKS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGEuY29sdW1uKGIpLnZpc2libGUoKX0pLnRvQXJyYXkoKX0sYWN0aW9uOmZ1bmN0aW9uKGEsYixkLGMpe2IuY29sdW1ucygpLmV2ZXJ5KGZ1bmN0aW9uKGEpe2E9Yi5jb2xSZW9yZGVyJiZiLmNvbFJlb3JkZXIudHJhbnNwb3NlP2IuY29sUmVvcmRlci50cmFuc3Bvc2UoYSwidG9PcmlnaW5hbCIpOmE7dGhpcy52aXNpYmxlKGMuX3Zpc09yaWdpbmFsW2FdKX0pfX0sY29sdmlzR3JvdXA6e2NsYXNzTmFtZToiYnV0dG9ucy1jb2x2aXNHcm91cCIsCmFjdGlvbjpmdW5jdGlvbihhLGIsZCxjKXtiLmNvbHVtbnMoYy5zaG93KS52aXNpYmxlKCEwLCExKTtiLmNvbHVtbnMoYy5oaWRlKS52aXNpYmxlKCExLCExKTtiLmNvbHVtbnMuYWRqdXN0KCl9LHNob3c6W10saGlkZTpbXX19KTtyZXR1cm4gYy5CdXR0b25zfSk7Cg=="></script>
|
|
<script src="data:application/javascript;base64,LyohCiBQcmludCBidXR0b24gZm9yIEJ1dHRvbnMgYW5kIERhdGFUYWJsZXMuCiAyMDE2IFNwcnlNZWRpYSBMdGQgLSBkYXRhdGFibGVzLm5ldC9saWNlbnNlCiovCihmdW5jdGlvbihjKXsiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiLCJkYXRhdGFibGVzLm5ldCIsImRhdGF0YWJsZXMubmV0LWJ1dHRvbnMiXSxmdW5jdGlvbihlKXtyZXR1cm4gYyhlLHdpbmRvdyxkb2N1bWVudCl9KToib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUsYSl7ZXx8KGU9d2luZG93KTthJiZhLmZuLmRhdGFUYWJsZXx8KGE9cmVxdWlyZSgiZGF0YXRhYmxlcy5uZXQiKShlLGEpLiQpO2EuZm4uZGF0YVRhYmxlLkJ1dHRvbnN8fHJlcXVpcmUoImRhdGF0YWJsZXMubmV0LWJ1dHRvbnMiKShlLGEpO3JldHVybiBjKGEsZSxlLmRvY3VtZW50KX06YyhqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGMsZSxhLHEpe3ZhciBrPWMuZm4uZGF0YVRhYmxlLGQ9YS5jcmVhdGVFbGVtZW50KCJhIikscD1mdW5jdGlvbihiKXtkLmhyZWY9YjtiPWQuaG9zdDstMT09PWIuaW5kZXhPZigiLyIpJiYKMCE9PWQucGF0aG5hbWUuaW5kZXhPZigiLyIpJiYoYis9Ii8iKTtyZXR1cm4gZC5wcm90b2NvbCsiLy8iK2IrZC5wYXRobmFtZStkLnNlYXJjaH07ay5leHQuYnV0dG9ucy5wcmludD17Y2xhc3NOYW1lOiJidXR0b25zLXByaW50Iix0ZXh0OmZ1bmN0aW9uKGIpe3JldHVybiBiLmkxOG4oImJ1dHRvbnMucHJpbnQiLCJQcmludCIpfSxhY3Rpb246ZnVuY3Rpb24oYixhLGQsZyl7Yj1hLmJ1dHRvbnMuZXhwb3J0RGF0YShjLmV4dGVuZCh7ZGVjb2RlRW50aXRpZXM6ITF9LGcuZXhwb3J0T3B0aW9ucykpO2Q9YS5idXR0b25zLmV4cG9ydEluZm8oZyk7dmFyIGs9YS5jb2x1bW5zKGcuZXhwb3J0T3B0aW9ucy5jb2x1bW5zKS5mbGF0dGVuKCkubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBhLnNldHRpbmdzKClbMF0uYW9Db2x1bW5zW2EuY29sdW1uKGIpLmluZGV4KCldLnNDbGFzc30pLnRvQXJyYXkoKSxtPWZ1bmN0aW9uKGIsYSl7Zm9yKHZhciBkPSI8dHI+IixjPTAsZT1iLmxlbmd0aDtjPGU7YysrKWQrPQoiPCIrYSsiICIrKGtbY10/J2NsYXNzPSInK2tbY10rJyInOiIiKSsiPiIrKG51bGw9PT1iW2NdfHxiW2NdPT09cT8iIjpiW2NdKSsiPC8iK2ErIj4iO3JldHVybiBkKyI8L3RyPiJ9LGg9Jzx0YWJsZSBjbGFzcz0iJythLnRhYmxlKCkubm9kZSgpLmNsYXNzTmFtZSsnIj4nO2cuaGVhZGVyJiYoaCs9Ijx0aGVhZD4iK20oYi5oZWFkZXIsInRoIikrIjwvdGhlYWQ+Iik7aCs9Ijx0Ym9keT4iO2Zvcih2YXIgbj0wLHI9Yi5ib2R5Lmxlbmd0aDtuPHI7bisrKWgrPW0oYi5ib2R5W25dLCJ0ZCIpO2grPSI8L3Rib2R5PiI7Zy5mb290ZXImJmIuZm9vdGVyJiYoaCs9Ijx0Zm9vdD4iK20oYi5mb290ZXIsInRoIikrIjwvdGZvb3Q+Iik7aCs9IjwvdGFibGU+Ijt2YXIgZj1lLm9wZW4oIiIsIiIpO2YuZG9jdW1lbnQuY2xvc2UoKTt2YXIgbD0iPHRpdGxlPiIrZC50aXRsZSsiPC90aXRsZT4iO2MoInN0eWxlLCBsaW5rIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWwsYT1jKHRoaXMpLmNsb25lKClbMF07CiJsaW5rIj09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmKGEuaHJlZj1wKGEuaHJlZikpO2w9YithLm91dGVySFRNTH0pO3RyeXtmLmRvY3VtZW50LmhlYWQuaW5uZXJIVE1MPWx9Y2F0Y2godCl7YyhmLmRvY3VtZW50LmhlYWQpLmh0bWwobCl9Zi5kb2N1bWVudC5ib2R5LmlubmVySFRNTD0iPGgxPiIrZC50aXRsZSsiPC9oMT48ZGl2PiIrKGQubWVzc2FnZVRvcHx8IiIpKyI8L2Rpdj4iK2grIjxkaXY+IisoZC5tZXNzYWdlQm90dG9tfHwiIikrIjwvZGl2PiI7YyhmLmRvY3VtZW50LmJvZHkpLmFkZENsYXNzKCJkdC1wcmludC12aWV3Iik7YygiaW1nIixmLmRvY3VtZW50LmJvZHkpLmVhY2goZnVuY3Rpb24oYixhKXthLnNldEF0dHJpYnV0ZSgic3JjIixwKGEuZ2V0QXR0cmlidXRlKCJzcmMiKSkpfSk7Zy5jdXN0b21pemUmJmcuY3VzdG9taXplKGYsZyxhKTtiPWZ1bmN0aW9uKCl7Zy5hdXRvUHJpbnQmJihmLnByaW50KCksZi5jbG9zZSgpKX07bmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvVHJpZGVudFwvXGQuXGQvKT8KYigpOmYuc2V0VGltZW91dChiLDFFMyl9LHRpdGxlOiIqIixtZXNzYWdlVG9wOiIqIixtZXNzYWdlQm90dG9tOiIqIixleHBvcnRPcHRpb25zOnt9LGhlYWRlcjohMCxmb290ZXI6ITEsYXV0b1ByaW50OiEwLGN1c3RvbWl6ZTpudWxsfTtyZXR1cm4gay5CdXR0b25zfSk7Cg=="></script>
|
|
<link href="data:text/css,%2Econtainer%2Dfluid%2Ecrosstalk%2Dbscols%7Bmargin%2Dleft%3A%2D30px%3Bmargin%2Dright%3A%2D30px%3Bwhite%2Dspace%3Anormal%7Dbody%3E%2Econtainer%2Dfluid%2Ecrosstalk%2Dbscols%7Bmargin%2Dleft%3Aauto%3Bmargin%2Dright%3Aauto%7D%2Ecrosstalk%2Dinput%2Dcheckboxgroup%20%2Ecrosstalk%2Doptions%2Dgroup%20%2Ecrosstalk%2Doptions%2Dcolumn%7Bdisplay%3Ainline%2Dblock%3Bpadding%2Dright%3A12px%3Bvertical%2Dalign%3Atop%7D%40media%20only%20screen%20and%20%28max%2Dwidth%3A%20480px%29%7B%2Ecrosstalk%2Dinput%2Dcheckboxgroup%20%2Ecrosstalk%2Doptions%2Dgroup%20%2Ecrosstalk%2Doptions%2Dcolumn%7Bdisplay%3Ablock%3Bpadding%2Dright%3Ainherit%7D%7D%2Ecrosstalk%2Dinput%7Bmargin%2Dbottom%3A15px%7D%2Ecrosstalk%2Dinput%20%2Econtrol%2Dlabel%7Bmargin%2Dbottom%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Ecrosstalk%2Dinput%20input%5Btype%3D%22checkbox%22%5D%7Bmargin%3A4px%200%200%3Bmargin%2Dtop%3A1px%3Bline%2Dheight%3Anormal%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%7Bposition%3Arelative%3Bdisplay%3Ablock%3Bmargin%2Dtop%3A10px%3Bmargin%2Dbottom%3A10px%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%3Elabel%7Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3A400%3Bcursor%3Apointer%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%20input%5Btype%3D%22checkbox%22%5D%2C%2Ecrosstalk%2Dinput%20%2Echeckbox%2Dinline%20input%5Btype%3D%22checkbox%22%5D%7Bposition%3Aabsolute%3Bmargin%2Dtop%3A2px%3Bmargin%2Dleft%3A%2D20px%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%2B%2Echeckbox%7Bmargin%2Dtop%3A%2D5px%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%2Dinline%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bpadding%2Dleft%3A20px%3Bmargin%2Dbottom%3A0%3Bfont%2Dweight%3A400%3Bvertical%2Dalign%3Amiddle%3Bcursor%3Apointer%7D%2Ecrosstalk%2Dinput%20%2Echeckbox%2Dinline%2B%2Echeckbox%2Dinline%7Bmargin%2Dtop%3A0%3Bmargin%2Dleft%3A10px%7D%0A" rel="stylesheet" />
|
|
<script src="data:application/javascript;base64,IWZ1bmN0aW9uIG8odSxhLGwpe2Z1bmN0aW9uIHMobixlKXtpZighYVtuXSl7aWYoIXVbbl0pe3ZhciB0PSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFlJiZ0KXJldHVybiB0KG4sITApO2lmKGYpcmV0dXJuIGYobiwhMCk7dmFyIHI9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrbisiJyIpO3Rocm93IHIuY29kZT0iTU9EVUxFX05PVF9GT1VORCIscn12YXIgaT1hW25dPXtleHBvcnRzOnt9fTt1W25dWzBdLmNhbGwoaS5leHBvcnRzLGZ1bmN0aW9uKGUpe3ZhciB0PXVbbl1bMV1bZV07cmV0dXJuIHModHx8ZSl9LGksaS5leHBvcnRzLG8sdSxhLGwpfXJldHVybiBhW25dLmV4cG9ydHN9Zm9yKHZhciBmPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGU9MDtlPGwubGVuZ3RoO2UrKylzKGxbZV0pO3JldHVybiBzfSh7MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmcihlLnByb3RvdHlwZSx0KSxuJiZyKGUsbiksZX19KCk7dmFyIGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsZSksdGhpcy5fdHlwZXM9e30sdGhpcy5fc2VxPTB9cmV0dXJuIHIoZSxbe2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fdHlwZXNbZV07bnx8KG49dGhpcy5fdHlwZXNbZV09e30pO3ZhciByPSJzdWIiK3RoaXMuX3NlcSsrO3JldHVybiBuW3JdPXQscn19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl90eXBlc1tlXTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCl7Zm9yKHZhciByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSYmbltyXT09PXQpcmV0dXJuIGRlbGV0ZSBuW3JdLHI7cmV0dXJuITF9aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiEoIW58fCFuW3RdKSYmKGRlbGV0ZSBuW3RdLHQpO3Rocm93IG5ldyBFcnJvcigiVW5leHBlY3RlZCB0eXBlIGZvciBsaXN0ZW5lciIpfX0se2tleToidHJpZ2dlciIsdmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3R5cGVzW2VdO2Zvcih2YXIgaSBpbiByKXIuaGFzT3duUHJvcGVydHkoaSkmJnJbaV0uY2FsbChuLHQpfX1dKSxlfSgpO24uZGVmYXVsdD1pfSx7fV0sMjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbi5GaWx0ZXJIYW5kbGU9dm9pZCAwO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQmJnIoZS5wcm90b3R5cGUsdCksbiYmcihlLG4pLGV9fSgpLGk9bChlKCIuL2V2ZW50cyIpKSxvPWwoZSgiLi9maWx0ZXJzZXQiKSksdT1sKGUoIi4vZ3JvdXAiKSksYT1mdW5jdGlvbihlKXt7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fX0oZSgiLi91dGlsIikpO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fXZhciBzPTE7bi5GaWx0ZXJIYW5kbGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKGUsdCl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsbiksdGhpcy5fZXZlbnRSZWxheT1uZXcgaS5kZWZhdWx0LHRoaXMuX2VtaXR0ZXI9bmV3IGEuU3Vic2NyaXB0aW9uVHJhY2tlcih0aGlzLl9ldmVudFJlbGF5KSx0aGlzLl9ncm91cD1udWxsLHRoaXMuX2ZpbHRlclNldD1udWxsLHRoaXMuX2ZpbHRlclZhcj1udWxsLHRoaXMuX3Zhck9uQ2hhbmdlU3ViPW51bGwsdGhpcy5fZXh0cmFJbmZvPWEuZXh0ZW5kKHtzZW5kZXI6dGhpc30sdCksdGhpcy5faWQ9ImZpbHRlciIrcysrLHRoaXMuc2V0R3JvdXAoZSl9cmV0dXJuIHIobixbe2tleToic2V0R3JvdXAiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzO2lmKHRoaXMuX2dyb3VwIT09ZSYmKCh0aGlzLl9ncm91cHx8ZSkmJih0aGlzLl9maWx0ZXJWYXImJih0aGlzLl9maWx0ZXJWYXIub2ZmKCJjaGFuZ2UiLHRoaXMuX3Zhck9uQ2hhbmdlU3ViKSx0aGlzLmNsZWFyKCksdGhpcy5fdmFyT25DaGFuZ2VTdWI9bnVsbCx0aGlzLl9maWx0ZXJWYXI9bnVsbCx0aGlzLl9maWx0ZXJTZXQ9bnVsbCksdGhpcy5fZ3JvdXA9ZSkpKXtlPSgwLHUuZGVmYXVsdCkoZSksdGhpcy5fZmlsdGVyU2V0PSh0PWUudmFyKCJmaWx0ZXJzZXQiKSwobj10LmdldCgpKXx8KG49bmV3IG8uZGVmYXVsdCx0LnNldChuKSksbiksdGhpcy5fZmlsdGVyVmFyPSgwLHUuZGVmYXVsdCkoZSkudmFyKCJmaWx0ZXIiKTt2YXIgaT10aGlzLl9maWx0ZXJWYXIub24oImNoYW5nZSIsZnVuY3Rpb24oZSl7ci5fZXZlbnRSZWxheS50cmlnZ2VyKCJjaGFuZ2UiLGUscil9KTt0aGlzLl92YXJPbkNoYW5nZVN1Yj1pfX19LHtrZXk6Il9tZXJnZUV4dHJhSW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGEuZXh0ZW5kKHt9LHRoaXMuX2V4dHJhSW5mbz90aGlzLl9leHRyYUluZm86bnVsbCxlfHxudWxsKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpcy5jbGVhcigpLHRoaXMuc2V0R3JvdXAobnVsbCl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fZmlsdGVyU2V0JiYodGhpcy5fZmlsdGVyU2V0LmNsZWFyKHRoaXMuX2lkKSx0aGlzLl9vbkNoYW5nZShlKSl9fSx7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dGhpcy5fZmlsdGVyU2V0JiYodGhpcy5fZmlsdGVyU2V0LnVwZGF0ZSh0aGlzLl9pZCxlKSx0aGlzLl9vbkNoYW5nZSh0KSl9fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZW1pdHRlci5vbihlLHQpfX0se2tleToib2ZmIix2YWx1ZTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9lbWl0dGVyLm9mZihlLHQpfX0se2tleToiX29uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLl9maWx0ZXJTZXQmJnRoaXMuX2ZpbHRlclZhci5zZXQodGhpcy5fZmlsdGVyU2V0LnZhbHVlLHRoaXMuX21lcmdlRXh0cmFJbmZvKGUpKX19LHtrZXk6ImZpbHRlcmVkS2V5cyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZpbHRlclNldD90aGlzLl9maWx0ZXJTZXQudmFsdWU6bnVsbH19XSksbn0oKX0seyIuL2V2ZW50cyI6MSwiLi9maWx0ZXJzZXQiOjMsIi4vZ3JvdXAiOjQsIi4vdXRpbCI6MTF9XSwzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZyKGUucHJvdG90eXBlLHQpLG4mJnIoZSxuKSxlfX0oKSxhPWUoIi4vdXRpbCIpO2Z1bmN0aW9uIGwoZSx0KXtyZXR1cm4gZT09PXQ/MDplPHQ/LTE6dDxlPzE6dm9pZCAwfXZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLGUpLHRoaXMucmVzZXQoKX1yZXR1cm4gcihlLFt7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLl9oYW5kbGVzPXt9LHRoaXMuX2tleXM9e30sdGhpcy5fdmFsdWU9bnVsbCx0aGlzLl9hY3RpdmVIYW5kbGVzPTB9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7bnVsbCE9PXQmJih0PXQuc2xpY2UoMCkpLnNvcnQobCk7dmFyIG49KDAsYS5kaWZmU29ydGVkTGlzdHMpKHRoaXMuX2hhbmRsZXNbZV0sdCkscj1uLmFkZGVkLGk9bi5yZW1vdmVkO3RoaXMuX2hhbmRsZXNbZV09dDtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKyl0aGlzLl9rZXlzW3Jbb11dPSh0aGlzLl9rZXlzW3Jbb11dfHwwKSsxO2Zvcih2YXIgdT0wO3U8aS5sZW5ndGg7dSsrKXRoaXMuX2tleXNbaVt1XV0tLTt0aGlzLl91cGRhdGVWYWx1ZSh0KX19LHtrZXk6Il91cGRhdGVWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT0wPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5fYWxsS2V5cyx0PU9iamVjdC5rZXlzKHRoaXMuX2hhbmRsZXMpLmxlbmd0aDtpZigwPT09dCl0aGlzLl92YWx1ZT1udWxsO2Vsc2V7dGhpcy5fdmFsdWU9W107Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3RoaXMuX2tleXNbZVtuXV09PT10JiZ0aGlzLl92YWx1ZS5wdXNoKGVbbl0pfX19fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYodm9pZCAwIT09dGhpcy5faGFuZGxlc1tlXSl7dmFyIHQ9dGhpcy5faGFuZGxlc1tlXTt0fHwodD1bXSk7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspdGhpcy5fa2V5c1t0W25dXS0tO2RlbGV0ZSB0aGlzLl9oYW5kbGVzW2VdLHRoaXMuX3VwZGF0ZVZhbHVlKCl9fX0se2tleToidmFsdWUiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl92YWx1ZX19LHtrZXk6Il9hbGxLZXlzIixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT1PYmplY3Qua2V5cyh0aGlzLl9rZXlzKTtyZXR1cm4gZS5zb3J0KGwpLGV9fV0pLGV9KCk7bi5kZWZhdWx0PWl9LHsiLi91dGlsIjoxMX1dLDQ6W2Z1bmN0aW9uKGwsZSxzKXsoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShzLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZyKGUucHJvdG90eXBlLHQpLG4mJnIoZSxuKSxlfX0oKSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfTtzLmRlZmF1bHQ9ZnVuY3Rpb24gZSh0KXt7aWYodCYmInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiB1Lmhhc093blByb3BlcnR5KHQpfHwodVt0XT1uZXcgYSh0KSksdVt0XTtpZigib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnIodCkpJiZ0Ll92YXJzJiZ0LnZhcilyZXR1cm4gdDtpZihBcnJheS5pc0FycmF5KHQpJiYxPT10Lmxlbmd0aCYmInN0cmluZyI9PXR5cGVvZiB0WzBdKXJldHVybiBlKHRbMF0pO3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCBncm91cE5hbWUgYXJndW1lbnQiKX19O3ZhciB0LGk9bCgiLi92YXIiKSxvPSh0PWkpJiZ0Ll9fZXNNb2R1bGU/dDp7ZGVmYXVsdDp0fTtlLl9fY3Jvc3N0YWxrX2dyb3Vwcz1lLl9fY3Jvc3N0YWxrX2dyb3Vwc3x8e307dmFyIHU9ZS5fX2Nyb3NzdGFsa19ncm91cHM7dmFyIGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUpeyFmdW5jdGlvbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpLHRoaXMubmFtZT1lLHRoaXMuX3ZhcnM9e319cmV0dXJuIG4odCxbe2tleToidmFyIix2YWx1ZTpmdW5jdGlvbihlKXtpZighZXx8InN0cmluZyIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB2YXIgbmFtZSIpO3JldHVybiB0aGlzLl92YXJzLmhhc093blByb3BlcnR5KGUpfHwodGhpcy5fdmFyc1tlXT1uZXcgby5kZWZhdWx0KHRoaXMsZSkpLHRoaXMuX3ZhcnNbZV19fSx7a2V5OiJoYXMiLHZhbHVlOmZ1bmN0aW9uKGUpe2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHZhciBuYW1lIik7cmV0dXJuIHRoaXMuX3ZhcnMuaGFzT3duUHJvcGVydHkoZSl9fV0pLHR9KCl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi92YXIiOjEyfV0sNTpbZnVuY3Rpb24oZixlLGMpeyhmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB0LG49ZigiLi9ncm91cCIpLHI9KHQ9bikmJnQuX19lc01vZHVsZT90OntkZWZhdWx0OnR9LGk9ZigiLi9zZWxlY3Rpb24iKSxvPWYoIi4vZmlsdGVyIiksdT1mKCIuL2lucHV0Iik7ZigiLi9pbnB1dF9zZWxlY3RpemUiKSxmKCIuL2lucHV0X2NoZWNrYm94Z3JvdXAiKSxmKCIuL2lucHV0X3NsaWRlciIpO3ZhciBhPSgwLHIuZGVmYXVsdCkoImRlZmF1bHQiKTtmdW5jdGlvbiBsKGUpe3JldHVybiBhLnZhcihlKX1lLlNoaW55JiZlLlNoaW55LmFkZEN1c3RvbU1lc3NhZ2VIYW5kbGVyKCJ1cGRhdGUtY2xpZW50LXZhbHVlIixmdW5jdGlvbihlKXsic3RyaW5nIj09dHlwZW9mIGUuZ3JvdXA/KDAsci5kZWZhdWx0KShlLmdyb3VwKS52YXIoZS5uYW1lKS5zZXQoZS52YWx1ZSk6bChlLm5hbWUpLnNldChlLnZhbHVlKX0pO3ZhciBzPXtncm91cDpyLmRlZmF1bHQsdmFyOmwsaGFzOmZ1bmN0aW9uKGUpe3JldHVybiBhLmhhcyhlKX0sU2VsZWN0aW9uSGFuZGxlOmkuU2VsZWN0aW9uSGFuZGxlLEZpbHRlckhhbmRsZTpvLkZpbHRlckhhbmRsZSxiaW5kOnUuYmluZH07Yy5kZWZhdWx0PXMsZS5jcm9zc3RhbGs9c30pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL2ZpbHRlciI6MiwiLi9ncm91cCI6NCwiLi9pbnB1dCI6NiwiLi9pbnB1dF9jaGVja2JveGdyb3VwIjo3LCIuL2lucHV0X3NlbGVjdGl6ZSI6OCwiLi9pbnB1dF9zbGlkZXIiOjksIi4vc2VsZWN0aW9uIjoxMH1dLDY6W2Z1bmN0aW9uKGUsdCxhKXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxhLnJlZ2lzdGVyPWZ1bmN0aW9uKGUpe3JbZS5jbGFzc05hbWVdPWUsdC5kb2N1bWVudCYmImNvbXBsZXRlIiE9PXQuZG9jdW1lbnQucmVhZHlTdGF0ZT9vKGZ1bmN0aW9uKCl7bigpfSk6dC5kb2N1bWVudCYmc2V0VGltZW91dChuLDEwMCl9LGEuYmluZD1uO3ZhciBvPXQualF1ZXJ5LHI9e307ZnVuY3Rpb24gbigpe09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49cltlXTtvKCIuIituLmNsYXNzTmFtZSkubm90KCIuY3Jvc3N0YWxrLWlucHV0LWJvdW5kIikuZWFjaChmdW5jdGlvbihlLHQpe2kobix0KX0pfSl9ZnVuY3Rpb24gaShlLHQpe3ZhciBuPW8odCkuZmluZCgic2NyaXB0W3R5cGU9J2FwcGxpY2F0aW9uL2pzb24nXVtkYXRhLWZvcj0nIit0LmlkLnJlcGxhY2UoLyhbISIjJCUmJygpKissLi86Ozw9Pj9AW1xcXF1eYHt8fX5dKS9nLCJcXCQxIikrIiddIikscj1KU09OLnBhcnNlKG5bMF0uaW5uZXJUZXh0KSxpPWUuZmFjdG9yeSh0LHIpO28odCkuZGF0YSgiY3Jvc3N0YWxrLWluc3RhbmNlIixpKSxvKHQpLmFkZENsYXNzKCJjcm9zc3RhbGstaW5wdXQtYm91bmQiKX1pZih0LlNoaW55KXt2YXIgZT1uZXcgdC5TaGlueS5JbnB1dEJpbmRpbmcsdT10LmpRdWVyeTt1LmV4dGVuZChlLHtmaW5kOmZ1bmN0aW9uKGUpe3JldHVybiB1KGUpLmZpbmQoIi5jcm9zc3RhbGstaW5wdXQiKX0saW5pdGlhbGl6ZTpmdW5jdGlvbihlKXt2YXIgdCxuO3UoZSkuaGFzQ2xhc3MoImNyb3NzdGFsay1pbnB1dC1ib3VuZCIpfHwobj1vKHQ9ZSksT2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbihlKXtuLmhhc0NsYXNzKGUpJiYhbi5oYXNDbGFzcygiY3Jvc3N0YWxrLWlucHV0LWJvdW5kIikmJmkocltlXSx0KX0pKX0sZ2V0SWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWR9LGdldFZhbHVlOmZ1bmN0aW9uKGUpe30sc2V0VmFsdWU6ZnVuY3Rpb24oZSx0KXt9LHJlY2VpdmVNZXNzYWdlOmZ1bmN0aW9uKGUsdCl7fSxzdWJzY3JpYmU6ZnVuY3Rpb24oZSx0KXt1KGUpLmRhdGEoImNyb3NzdGFsay1pbnN0YW5jZSIpLnJlc3VtZSgpfSx1bnN1YnNjcmliZTpmdW5jdGlvbihlKXt1KGUpLmRhdGEoImNyb3NzdGFsay1pbnN0YW5jZSIpLnN1c3BlbmQoKX19KSx0LlNoaW55LmlucHV0QmluZGluZ3MucmVnaXN0ZXIoZSwiY3Jvc3N0YWxrLmlucHV0QmluZGluZyIpfX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0se31dLDc6W2Z1bmN0aW9uKHIsZSx0KXsoZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO3ZhciB0PWZ1bmN0aW9uKGUpe3tpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9fShyKCIuL2lucHV0IikpLG49cigiLi9maWx0ZXIiKTt2YXIgYT1lLmpRdWVyeTt0LnJlZ2lzdGVyKHtjbGFzc05hbWU6ImNyb3NzdGFsay1pbnB1dC1jaGVja2JveGdyb3VwIixmYWN0b3J5OmZ1bmN0aW9uKGUscil7dmFyIGk9bmV3IG4uRmlsdGVySGFuZGxlKHIuZ3JvdXApLG89dm9pZCAwLHU9YShlKTtyZXR1cm4gdS5vbigiY2hhbmdlIiwiaW5wdXRbdHlwZT0nY2hlY2tib3gnXSIsZnVuY3Rpb24oKXt2YXIgZT11LmZpbmQoImlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZCIpO2lmKDA9PT1lLmxlbmd0aClvPW51bGwsaS5jbGVhcigpO2Vsc2V7dmFyIHQ9e307ZS5lYWNoKGZ1bmN0aW9uKCl7ci5tYXBbdGhpcy52YWx1ZV0uZm9yRWFjaChmdW5jdGlvbihlKXt0W2VdPSEwfSl9KTt2YXIgbj1PYmplY3Qua2V5cyh0KTtuLnNvcnQoKSxvPW4saS5zZXQobil9fSkse3N1c3BlbmQ6ZnVuY3Rpb24oKXtpLmNsZWFyKCl9LHJlc3VtZTpmdW5jdGlvbigpe28mJmkuc2V0KG8pfX19fSl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi9maWx0ZXIiOjIsIi4vaW5wdXQiOjZ9XSw4OltmdW5jdGlvbihyLGUsdCl7KGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD1uKHIoIi4vaW5wdXQiKSksbD1uKHIoIi4vdXRpbCIpKSxzPXIoIi4vZmlsdGVyIik7ZnVuY3Rpb24gbihlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9dmFyIGY9ZS5qUXVlcnk7dC5yZWdpc3Rlcih7Y2xhc3NOYW1lOiJjcm9zc3RhbGstaW5wdXQtc2VsZWN0IixmYWN0b3J5OmZ1bmN0aW9uKGUsbil7dmFyIHQ9bC5kYXRhZnJhbWVUb0QzKG4uaXRlbXMpLHI9e29wdGlvbnM6W3t2YWx1ZToiIixsYWJlbDoiKEFsbCkifV0uY29uY2F0KHQpLHZhbHVlRmllbGQ6InZhbHVlIixsYWJlbEZpZWxkOiJsYWJlbCIsc2VhcmNoRmllbGQ6ImxhYmVsIn0saT1mKGUpLmZpbmQoInNlbGVjdCIpWzBdLG89ZihpKS5zZWxlY3RpemUocilbMF0uc2VsZWN0aXplLHU9bmV3IHMuRmlsdGVySGFuZGxlKG4uZ3JvdXApLGE9dm9pZCAwO3JldHVybiBvLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7aWYoMD09PW8uaXRlbXMubGVuZ3RoKWE9bnVsbCx1LmNsZWFyKCk7ZWxzZXt2YXIgdD17fTtvLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oZSl7bi5tYXBbZV0uZm9yRWFjaChmdW5jdGlvbihlKXt0W2VdPSEwfSl9KTt2YXIgZT1PYmplY3Qua2V5cyh0KTtlLnNvcnQoKSxhPWUsdS5zZXQoZSl9fSkse3N1c3BlbmQ6ZnVuY3Rpb24oKXt1LmNsZWFyKCl9LHJlc3VtZTpmdW5jdGlvbigpe2EmJnUuc2V0KGEpfX19fSl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi9maWx0ZXIiOjIsIi4vaW5wdXQiOjYsIi4vdXRpbCI6MTF9XSw5OltmdW5jdGlvbihuLGUsdCl7KGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgZD1mdW5jdGlvbihlLHQpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGU7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKSlyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxyPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgdSxhPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEocj0odT1hLm5leHQoKSkuZG9uZSkmJihuLnB1c2godS52YWx1ZSksIXR8fG4ubGVuZ3RoIT09dCk7cj0hMCk7fWNhdGNoKGUpe2k9ITAsbz1lfWZpbmFsbHl7dHJ5eyFyJiZhLnJldHVybiYmYS5yZXR1cm4oKX1maW5hbGx5e2lmKGkpdGhyb3cgb319cmV0dXJuIG59KGUsdCk7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZSIpfSx0PWZ1bmN0aW9uKGUpe3tpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9fShuKCIuL2lucHV0IikpLGE9bigiLi9maWx0ZXIiKTt2YXIgdj1lLmpRdWVyeSxwPWUuc3RyZnRpbWU7ZnVuY3Rpb24geShlLHQpe2Zvcih2YXIgbj1lLnRvU3RyaW5nKCk7bi5sZW5ndGg8dDspbj0iMCIrbjtyZXR1cm4gbn10LnJlZ2lzdGVyKHtjbGFzc05hbWU6ImNyb3NzdGFsay1pbnB1dC1zbGlkZXIiLGZhY3Rvcnk6ZnVuY3Rpb24oZSxsKXt2YXIgcz1uZXcgYS5GaWx0ZXJIYW5kbGUobC5ncm91cCksdD17fSxmPXYoZSkuZmluZCgiaW5wdXQiKSxuPWYuZGF0YSgiZGF0YS10eXBlIikscj1mLmRhdGEoInRpbWUtZm9ybWF0IiksaT1mLmRhdGEoInJvdW5kIiksbz12b2lkIDA7aWYoImRhdGUiPT09bilvPXAudXRjKCksdC5wcmV0dGlmeT1mdW5jdGlvbihlKXtyZXR1cm4gbyhyLG5ldyBEYXRlKGUpKX07ZWxzZSBpZigiZGF0ZXRpbWUiPT09bil7dmFyIHU9Zi5kYXRhKCJ0aW1lem9uZSIpO289dT9wLnRpbWV6b25lKHUpOnAsdC5wcmV0dGlmeT1mdW5jdGlvbihlKXtyZXR1cm4gbyhyLG5ldyBEYXRlKGUpKX19ZWxzZSJudW1iZXIiPT09biYmdm9pZCAwIT09aSYmKHQucHJldHRpZnk9ZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC5wb3coMTAsaSk7cmV0dXJuIE1hdGgucm91bmQoZSp0KS90fSk7ZnVuY3Rpb24gYygpe3ZhciBlPWYuZGF0YSgiaW9uUmFuZ2VTbGlkZXIiKS5yZXN1bHQsdD12b2lkIDAsbj1mLmRhdGEoImRhdGEtdHlwZSIpO3JldHVybiB0PSJkYXRlIj09PW4/ZnVuY3Rpb24oZSl7cmV0dXJuKHQ9bmV3IERhdGUoK2UpKWluc3RhbmNlb2YgRGF0ZT90LmdldFVUQ0Z1bGxZZWFyKCkrIi0iK3kodC5nZXRVVENNb250aCgpKzEsMikrIi0iK3kodC5nZXRVVENEYXRlKCksMik6bnVsbDt2YXIgdH06ImRhdGV0aW1lIj09PW4/ZnVuY3Rpb24oZSl7cmV0dXJuK2UvMWUzfTpmdW5jdGlvbihlKXtyZXR1cm4rZX0sImRvdWJsZSI9PT1mLmRhdGEoImlvblJhbmdlU2xpZGVyIikub3B0aW9ucy50eXBlP1t0KGUuZnJvbSksdChlLnRvKV06dChlLmZyb20pfWYuaW9uUmFuZ2VTbGlkZXIodCk7dmFyIGg9bnVsbDtyZXR1cm4gZi5vbigiY2hhbmdlLmNyb3NzdGFsa1NsaWRlcklucHV0IixmdW5jdGlvbihlKXtpZighZi5kYXRhKCJ1cGRhdGluZyIpJiYhZi5kYXRhKCJhbmltYXRpbmciKSl7Zm9yKHZhciB0PWMoKSxuPWQodCwyKSxyPW5bMF0saT1uWzFdLG89W10sdT0wO3U8bC52YWx1ZXMubGVuZ3RoO3UrKyl7dmFyIGE9bC52YWx1ZXNbdV07cjw9YSYmYTw9aSYmby5wdXNoKGwua2V5c1t1XSl9by5zb3J0KCkscy5zZXQobyksaD1vfX0pLHtzdXNwZW5kOmZ1bmN0aW9uKCl7cy5jbGVhcigpfSxyZXN1bWU6ZnVuY3Rpb24oKXtoJiZzLnNldChoKX19fX0pfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Ii4vZmlsdGVyIjoyLCIuL2lucHV0Ijo2fV0sMTA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLG4uU2VsZWN0aW9uSGFuZGxlPXZvaWQgMDt2YXIgcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0JiZyKGUucHJvdG90eXBlLHQpLG4mJnIoZSxuKSxlfX0oKSxpPWEoZSgiLi9ldmVudHMiKSksbz1hKGUoIi4vZ3JvdXAiKSksdT1mdW5jdGlvbihlKXt7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fX0oZSgiLi91dGlsIikpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fW4uU2VsZWN0aW9uSGFuZGxlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gbigpe3ZhciBlPTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTpudWxsLHQ9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOm51bGw7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsbiksdGhpcy5fZXZlbnRSZWxheT1uZXcgaS5kZWZhdWx0LHRoaXMuX2VtaXR0ZXI9bmV3IHUuU3Vic2NyaXB0aW9uVHJhY2tlcih0aGlzLl9ldmVudFJlbGF5KSx0aGlzLl9ncm91cD1udWxsLHRoaXMuX3Zhcj1udWxsLHRoaXMuX3Zhck9uQ2hhbmdlU3ViPW51bGwsdGhpcy5fZXh0cmFJbmZvPXUuZXh0ZW5kKHtzZW5kZXI6dGhpc30sdCksdGhpcy5zZXRHcm91cChlKX1yZXR1cm4gcihuLFt7a2V5OiJzZXRHcm91cCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztpZih0aGlzLl9ncm91cCE9PWUmJih0aGlzLl9ncm91cHx8ZSkmJih0aGlzLl92YXImJih0aGlzLl92YXIub2ZmKCJjaGFuZ2UiLHRoaXMuX3Zhck9uQ2hhbmdlU3ViKSx0aGlzLl92YXI9bnVsbCx0aGlzLl92YXJPbkNoYW5nZVN1Yj1udWxsKSx0aGlzLl9ncm91cD1lKSl7dGhpcy5fdmFyPSgwLG8uZGVmYXVsdCkoZSkudmFyKCJzZWxlY3Rpb24iKTt2YXIgbj10aGlzLl92YXIub24oImNoYW5nZSIsZnVuY3Rpb24oZSl7dC5fZXZlbnRSZWxheS50cmlnZ2VyKCJjaGFuZ2UiLGUsdCl9KTt0aGlzLl92YXJPbkNoYW5nZVN1Yj1ufX19LHtrZXk6Il9tZXJnZUV4dHJhSW5mbyIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHUuZXh0ZW5kKHt9LHRoaXMuX2V4dHJhSW5mbz90aGlzLl9leHRyYUluZm86bnVsbCxlfHxudWxsKX19LHtrZXk6InNldCIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLl92YXImJnRoaXMuX3Zhci5zZXQoZSx0aGlzLl9tZXJnZUV4dHJhSW5mbyh0KSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5fdmFyJiZ0aGlzLnNldCh2b2lkIDAsdGhpcy5fbWVyZ2VFeHRyYUluZm8oZSkpfX0se2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2VtaXR0ZXIub24oZSx0KX19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZW1pdHRlci5vZmYoZSx0KX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpcy5zZXRHcm91cChudWxsKX19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFyP3RoaXMuX3Zhci5nZXQoKTpudWxsfX1dKSxufSgpfSx7Ii4vZXZlbnRzIjoxLCIuL2dyb3VwIjo0LCIuL3V0aWwiOjExfV0sMTE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KG4sIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQmJnIoZS5wcm90b3R5cGUsdCksbiYmcihlLG4pLGV9fSgpLGw9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9O2Z1bmN0aW9uIHUoZSl7Zm9yKHZhciB0PTE7dDxlLmxlbmd0aDt0KyspaWYoZVt0XTw9ZVt0LTFdKXRocm93IG5ldyBFcnJvcigiTGlzdCBpcyBub3Qgc29ydGVkIG9yIGNvbnRhaW5zIGR1cGxpY2F0ZSIpfW4uZXh0ZW5kPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49QXJyYXkoMTx0P3QtMTowKSxyPTE7cjx0O3IrKyluW3ItMV09YXJndW1lbnRzW3JdO2Zvcih2YXIgaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO2lmKG51bGwhPW8pZm9yKHZhciB1IGluIG8pby5oYXNPd25Qcm9wZXJ0eSh1KSYmKGVbdV09b1t1XSl9cmV0dXJuIGV9LG4uY2hlY2tTb3J0ZWQ9dSxuLmRpZmZTb3J0ZWRMaXN0cz1mdW5jdGlvbihlLHQpe3ZhciBuPTAscj0wO2V8fChlPVtdKTt0fHwodD1bXSk7dmFyIGk9W10sbz1bXTt1KGUpLHUodCk7Zm9yKDtuPGUubGVuZ3RoJiZyPHQubGVuZ3RoOyllW25dPT09dFtyXT8obisrLHIrKyk6ZVtuXTx0W3JdP2kucHVzaChlW24rK10pOm8ucHVzaCh0W3IrK10pO248ZS5sZW5ndGgmJihpPWkuY29uY2F0KGUuc2xpY2UobikpKTtyPHQubGVuZ3RoJiYobz1vLmNvbmNhdCh0LnNsaWNlKHIpKSk7cmV0dXJue3JlbW92ZWQ6aSxhZGRlZDpvfX0sbi5kYXRhZnJhbWVUb0QzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49dm9pZCAwO2Zvcih2YXIgciBpbiBlKXtpZihlLmhhc093blByb3BlcnR5KHIpJiZ0LnB1c2gociksIm9iamVjdCIhPT1sKGVbcl0pfHx2b2lkIDA9PT1lW3JdLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMiKTtpZih2b2lkIDAhPT1uJiZuIT09ZVtyXS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCIpO249ZVtyXS5sZW5ndGh9Zm9yKHZhciBpPVtdLG89dm9pZCAwLHU9MDt1PG47dSsrKXtvPXt9O2Zvcih2YXIgYT0wO2E8dC5sZW5ndGg7YSsrKW9bdFthXV09ZVt0W2FdXVt1XTtpLnB1c2gobyl9cmV0dXJuIGl9O24uU3Vic2NyaXB0aW9uVHJhY2tlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSl7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsdCksdGhpcy5fZW1pdHRlcj1lLHRoaXMuX3N1YnM9e319cmV0dXJuIHIodCxbe2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZW1pdHRlci5vbihlLHQpO3JldHVybiB0aGlzLl9zdWJzW25dPWUsbn19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9lbWl0dGVyLm9mZihlLHQpO3JldHVybiBuJiZkZWxldGUgdGhpcy5fc3Vic1tuXSxufX0se2tleToicmVtb3ZlQWxsTGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj10aGlzLl9zdWJzO3RoaXMuX3N1YnM9e30sT2JqZWN0LmtleXMobikuZm9yRWFjaChmdW5jdGlvbihlKXt0Ll9lbWl0dGVyLm9mZihuW2VdLGUpfSl9fV0pLHR9KCl9LHt9XSwxMjpbZnVuY3Rpb24oYSxlLGwpeyhmdW5jdGlvbihvKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGwsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBlLHU9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9LHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdCYmcihlLnByb3RvdHlwZSx0KSxuJiZyKGUsbiksZX19KCksbj1hKCIuL2V2ZW50cyIpLGk9KGU9bikmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9O3ZhciByPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLHQsbil7IWZ1bmN0aW9uKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsciksdGhpcy5fZ3JvdXA9ZSx0aGlzLl9uYW1lPXQsdGhpcy5fdmFsdWU9bix0aGlzLl9ldmVudHM9bmV3IGkuZGVmYXVsdH1yZXR1cm4gdChyLFt7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX0se2tleToic2V0Iix2YWx1ZTpmdW5jdGlvbihlLHQpe2lmKHRoaXMuX3ZhbHVlIT09ZSl7dmFyIG49dGhpcy5fdmFsdWU7dGhpcy5fdmFsdWU9ZTt2YXIgcj17fTtpZih0JiYib2JqZWN0Ij09PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOnUodCkpKWZvcih2YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJihyW2ldPXRbaV0pO3Iub2xkVmFsdWU9bixyLnZhbHVlPWUsdGhpcy5fZXZlbnRzLnRyaWdnZXIoImNoYW5nZSIscix0aGlzKSxvLlNoaW55JiZvLlNoaW55Lm9uSW5wdXRDaGFuZ2UmJm8uU2hpbnkub25JbnB1dENoYW5nZSgiLmNsaWVudFZhbHVlLSIrKG51bGwhPT10aGlzLl9ncm91cC5uYW1lP3RoaXMuX2dyb3VwLm5hbWUrIi0iOiIiKSt0aGlzLl9uYW1lLHZvaWQgMD09PWU/bnVsbDplKX19fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fZXZlbnRzLm9uKGUsdCl9fSx7a2V5OiJvZmYiLHZhbHVlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2V2ZW50cy5vZmYoZSx0KX19XSkscn0oKTtsLmRlZmF1bHQ9cn0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL2V2ZW50cyI6MX1dfSx7fSxbNV0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1jcm9zc3RhbGsubWluLmpzLm1hcA=="></script>
|
|
|
|
<script defer data-domain="reportcrh.tools.lanubia.com" src="data:application/javascript;base64,IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBhPXdpbmRvdy5sb2NhdGlvbixyPXdpbmRvdy5kb2N1bWVudCx0PXdpbmRvdy5sb2NhbFN0b3JhZ2Usbz1yLmN1cnJlbnRTY3JpcHQscz1vLmdldEF0dHJpYnV0ZSgiZGF0YS1hcGkiKXx8bmV3IFVSTChvLnNyYykub3JpZ2luKyIvYXBpL2V2ZW50IixsPXQmJnQucGxhdXNpYmxlX2lnbm9yZTtmdW5jdGlvbiBwKHQpe2NvbnNvbGUud2FybigiSWdub3JpbmcgRXZlbnQ6ICIrdCl9ZnVuY3Rpb24gZSh0LGUpe2lmKC9ebG9jYWxob3N0JHxeMTI3KFwuWzAtOV0rKXswLDJ9XC5bMC05XSskfF5cWzo6MT9cXSQvLnRlc3QoYS5ob3N0bmFtZSl8fCJmaWxlOiI9PT1hLnByb3RvY29sKXJldHVybiBwKCJsb2NhbGhvc3QiKTtpZighKHdpbmRvdy5fcGhhbnRvbXx8d2luZG93Ll9fbmlnaHRtYXJlfHx3aW5kb3cubmF2aWdhdG9yLndlYmRyaXZlcnx8d2luZG93LkN5cHJlc3MpKXtpZigidHJ1ZSI9PWwpcmV0dXJuIHAoImxvY2FsU3RvcmFnZSBmbGFnIik7dmFyIGk9e307aS5uPXQsaS51PWEuaHJlZixpLmQ9by5nZXRBdHRyaWJ1dGUoImRhdGEtZG9tYWluIiksaS5yPXIucmVmZXJyZXJ8fG51bGwsaS53PXdpbmRvdy5pbm5lcldpZHRoLGUmJmUubWV0YSYmKGkubT1KU09OLnN0cmluZ2lmeShlLm1ldGEpKSxlJiZlLnByb3BzJiYoaS5wPUpTT04uc3RyaW5naWZ5KGUucHJvcHMpKTt2YXIgbj1uZXcgWE1MSHR0cFJlcXVlc3Q7bi5vcGVuKCJQT1NUIixzLCEwKSxuLnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsInRleHQvcGxhaW4iKSxuLnNlbmQoSlNPTi5zdHJpbmdpZnkoaSkpLG4ub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09bi5yZWFkeVN0YXRlJiZlJiZlLmNhbGxiYWNrJiZlLmNhbGxiYWNrKCl9fX12YXIgaT13aW5kb3cucGxhdXNpYmxlJiZ3aW5kb3cucGxhdXNpYmxlLnF8fFtdO3dpbmRvdy5wbGF1c2libGU9ZTtmb3IodmFyIG4sdz0wO3c8aS5sZW5ndGg7dysrKWUuYXBwbHkodGhpcyxpW3ddKTtmdW5jdGlvbiBkKCl7biE9PWEucGF0aG5hbWUmJihuPWEucGF0aG5hbWUsZSgicGFnZXZpZXciKSl9dmFyIHUsYz13aW5kb3cuaGlzdG9yeTtjLnB1c2hTdGF0ZSYmKHU9Yy5wdXNoU3RhdGUsYy5wdXNoU3RhdGU9ZnVuY3Rpb24oKXt1LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxkKCl9LHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsZCkpLCJwcmVyZW5kZXIiPT09ci52aXNpYmlsaXR5U3RhdGU/ci5hZGRFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIixmdW5jdGlvbigpe258fCJ2aXNpYmxlIiE9PXIudmlzaWJpbGl0eVN0YXRlfHxkKCl9KTpkKCl9KCk7"></script>
|
|
|
|
<style type="text/css">
|
|
code{white-space: pre-wrap;}
|
|
span.smallcaps{font-variant: small-caps;}
|
|
span.underline{text-decoration: underline;}
|
|
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
|
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|
ul.task-list{list-style: none;}
|
|
</style>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="data:text/css,%0A%23TOC%3A%3Abefore%20%7B%0Acontent%3A%20%22%22%3B%0Adisplay%3A%20block%3B%0Aheight%3A%20200px%3B%0Amargin%3A%2020px%2020px%2040px%2020px%3B%0Abackground%2Dimage%3A%20url%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAaQAAAGkCAYAAAB%2BTFE1AAABJ2lDQ1BrQ0dDb2xvclNwYWNlQWRvYmVSR0IxOTk4AAAokWNgYFJILCjIYRJgYMjNKykKcndSiIiMUmB%2FwsDDIMIgziDEwJyYXFzgGBDgwwAEMBoVfLvGwAiiL%2BuCzMKUxwu4UlKLk4H0HyDOTi4oKmFgYMwAspXLSwpA7B4gWyQpG8xeAGIXAR0IZG8BsdMh7BNgNRD2HbCakCBnIPsDkM2XBGYzgeziS4ewBUBsqL0gIOiYkp%2BUqgDyvYahpaWFJol%2BIAhKUitKQLRzfkFlUWZ6RomCIzCkUhU885L1dBSMDIwMGBhA4Q5R%2FTkQHJ6MYmcQYgiAEJsjwcDgv5SBgeUPQsykl4FhgQ4DA%2F9UhJiaIQODgD4Dw745yaVFZVBjGJmMGRgI8QH7%2FkpC0oNXTwAAAAZiS0dEAP8A%2FwD%2FoL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB%2BQMFBIgMYByjXsAACAASURBVHja7d15eFRVmvjx92bf94UQEiAQEiBAIKCAIDuOgtrdDiqobauP2vP0tE870z12z%2FNrHbt7HJ2e1u7pcQEbp7UBWQRFcGOXfUkgbElIIDtJyL4Hsp3fHwjDUsutSlWlqvL9PA%2BPpurcqnPfW%2Fe899x77rkiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADqMRAjiDleu2qoLicrdbr6eW3CcpSYnsZ4AOHoQAAEBCAgCAhAQAICEBAEBCAgCQkAAAICEBAEhIAACQkAAAJCQAAEhIAAASEgAAJCQAAAkJAAASEgCAhAQAAAkJAEBCAgDARrwIAdyRpmmiaZY%2FOby3t5fgASQkwHZ%2B9Pf3SkpSosUZaeW6raqguJwAAv2AU3YAABISAAAkJAAACQkAABISAICEBAAACQkAQEICAICEBAAgIQEAQEICAJCQAAAgIQEASEgAAJCQAAAkJAAASEgAABISAAAkJAAACQkAABISAICEBAAACQkAQEICAICEBAAgIQEAQEICAJCQAAAgIQEASEgAAJCQAAAkJAAASEgAAJCQAAAkJAAASEgAABISAAAkJAAACQkAABISAICEBAAACQkAQEICAICEBAAgIQEAQEICAJCQAAAgIQEASEgAAJCQAAAkJAAASEgAABISAAAkJACAu%2FIiBMANR2gemnh42O44TdM0ggqQkADLPbVkkU0zyGu%2FIKaA7gNCQgAAICEBAEBCAgCQkAAAICEBAEhIAACQkAAAJCQAAEhIAAASEgAAJCQAAAkJAAASEiDS26sIAuBimBsfTmHluq2qoLicQDipp5bcJylJibQXoIcEACAhAQBAQgIAkJAAACAhAQBISAAAkJAAACQkAABISAAAkJAAACQkAABISAAAEhIAACQkAAAJCQAAEhIAgIQEAAAJCQDgErwIAZziyMhDEw8Pjo9spbe3lyCAhARY46klizSiYDsr121VBcXlBAKudWBKCAAAJCQAAEhIAAASEgAAJCQAAAkJAAASEgCAhAQAAAkJAEBCAgCAhAQAICEBAEBCAqCUIghwOcz2DafA7NS2db7kIkEAPSQAAEhIAAASEgAAJCQAAAkJAAASEgCAhAQAAAkJAEBCAgCAhAQAICEBAEBCAgCQkAAAICEBAEhIAACQkAAAJCQAAEhIAIABi0eYwzmOjDw08fDg%2BMhZaZpGEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYs7bXXX1PmS4n4%2BPhIVGSUjEsbJxmTMrSBGrC3%2Fvst1dHeYbZcXFycPPXkUy4Rp8LCQrV2%2FVqTZfwD%2FOXFF150yPrk5Oao4yeOS3V1tVy%2BclnE%2FC9UfvzcjxdERETssFUd9O4Xvj6%2BEhMTI%2BkT0mVc2jiHxOdc%2FjmVdTxLqqqq5MqVK6KU%2Bao%2B%2FdTTMih2kE3q19DYkPTue%2B9esFuj5KGJt5e3%2BAf4S1homMTExMiQ%2BCEyOnW0U%2BxPqz9erUpKSmz2ebNnzZbp06Y7XVtRU1uz%2Fv2%2FvL9ET9mMSRlyz8J7%2BrwOXpeqL%2BkuXFZWJieyT8j7K99Xzz7z7IBLSnl5eerdFe%2FqKnup%2BpLU1ta%2BHhUV9UtnX6%2FOzk7R8ztY%2FfFq9djSx%2By63Tdu2qiWv7%2Fc4uV6enueExGbJSRL9ovSslLJzMqUj9d9rJY%2BstSu8dnyxRb1znvvWB6f7h6b1aGnp%2Bc5S%2BJjKy%2F%2B%2FEWVMipFpkye0q8HxQ0NDWLL9W9ra3PKdiEzK3OJ3vU8cPCATb7Tw5qFzpw9I4ePHFYywBzNPGpR%2BWNZx15yq%2FU%2FdlROnzltt%2B1ecL5A7d2%2F12Xjc%2FjIYcnJzbFbfErLStWOnTtkoOrt7ZXcvFz5aNVH8spvXlHHMo8pgT0Tku6yTc1NkpeX1%2Bft4WHtgidPnxxwG%2Bj0mdN226Cuwtypvb44dfqUy8fn1KlTxMcBGhsbZdWaVfLu8ndJSnZQWFSoamtr7XrAbtOEVFtTO6A20JFjR1RnZ6dlMaqtlcKiQrfaYVpbW%2BWDv35gl3Wqqalx%2BfjU1NpvHdwhPraWdy5PXv3dq6qmpmY90bCdY5nH7H7AbtOEdOXKFTbQAO0lnTx1UjKzMm2elCxN%2BM7oSqf99gt3iI891NfXyzvL31lCJGwnOzvbqt%2Fn0WNH%2B9QueBB68xoaG5LOnz9v1bInsk%2B4ZUw%2B2fSJNDQ2JNnyM%2FWMFnN6dlwFt4iPHZPSeyveI0C2SEYns1V7R7t1B%2B5Zx%2Fr03SQkfb2cC9Y2Bu3t7XLy1Em321E6Ojpk7bq1F%2Fh1wFnk5uVK9slsklIfWXs2SESkoKCgT9%2FtNX3q9JtON%2BTk5EjH5Q62ys0JqV%2BXd1Z55%2FJk%2F4H9asZdMxw6BNfT01PGpY2TAP%2BA669FR0U%2FbMvvuHG%2F6LjcIWfOnJGu7i6X2C4eHh4yLm2cBAYEXn8tIDBghK0%2BPyoy6pfr1q%2B7aQRpW3ubnDxlfqBTcHCwjBs7zmSZru4uaWlpkZKSEovbom%2B2fWP3%2BI4dM1aio6Jveq2mrkZXYzxl8hTx9vK%2B6bX4%2BHinS%2Bx96cXv3LVTzZs7z6o2weuRhx%2B5acH8gnz19rtvk4W%2BU1pWqv7w1h%2F69Blnc866bXw2b9ksNTU166OjbZsQTFny0BKZNnWaXZPgrftFZlam%2Btvqv7nENnnw%2Fgdl9qzZDo1P%2BcVypSchRUVG3basKcdPHFebt2yWxsZGXeUrKiuktLRUJSYm2m3958yec9tnZx3PUnoS0uPLHnfq%2Bzf37turNn66sd8OwG87ZTcqedSAnYXB2u5rZESkyfd7enpk%2F8H9bnkqobOzU1Z%2FvNqhF5TjBzv%2BiNLZjmLdpa7mTJo4SXv15Ve1QbGDdC%2BTk5dDw2XHZGKuvauorJCLFy9a1d5xDcn8EZrZMgvmLzC%2FoTMz3TZGRcVFsmPnDscl3H44ZNKE47T%2B9KMf%2Fkg0Td82KCsrI2BWuHTpUn1JqekpkSIjI2XixIlmP8vae5JISCacOXtGtba2miwTEx2j6%2FRRUXGR1NS6770SX379pVRUVHBBGXYRFxenjUsbp6uspTd04nrvKNxcmRFJI2REkvnLkXoO5ElIdui%2BjhhxdeMMjhusp5fktvdK9PT0yKqPV%2FGjgd2MGT1GV7mODgZl2a29SxohY0aP0Tw8TKeO5uZmyc3LtfgAlYRkqod05ozZMskjk2%2F6b183uCu7ePGifPHlF%2FSSYBdRUVH6CnJ21WIF5wtUfUO9nvbueRGRhCEJZstaM3ychGTEocOHlJ5hvtdmHR6VPMr8qYQ695tK6Fbbd26X4pJikhJszsfbR1e5G28HgD66Bm9FRkpkZOQKEZHkZPMH4NZMJURC6sMGunE0U1pamubp6enWvSRfX1%2BzZZRSsnrNan5AsLnWtlZd5cLCwgiWhfQM2U9NSTX4%2F8ZYM5UQCclwT%2Bb1C4XmJyEYO3rsTX%2Frudh34oTrTiU0c8ZMXeWqa6pl46aN9JJgU6WlpbrKJSYmEiwLZB3PUpcvXzZb7sZreMkjkzV%2FP3%2FzB%2FYWTiVEQjLci9H1HKNbR%2F2MHzfe7DLtHa47ldDguMG6rpWJiOzdv1fyC%2FJJSrCZ49n6Rm6ljEohWBbQczbI19dX0sam3XR1bswY84NMLJ1KiIRk6IghK8tsmcjISLn1bvCZM2Zqeu6VcNXTdi2tLfLg%2FQ%2Fqvh9k9cecuoNtHDx0UFVXV5vfLyMiZUTSCIY1WOBc%2FjmzZdLGpt322qT0SWaXU0rJjl3671EkId2iqLhIVdeY%2F%2BFPmmh4Y%2BjpQbjqVEJtrW2SkJCg3THlDl3lGxsbZfXHq%2BkloU9y83LVps826So7b%2B48AmaB3d%2FuVr29vebbOwPJJy0tTddpO0sOwElIVnRfRUQmpk%2B06PUb9fT0yP4DrjeV0LUp6Zc9ukzXD1Hk6mPPT50%2BRVKCxSorK9X6T9ar5e8vl64u8yNeB8cNlrum30XvyAJ6ZpDx9%2FeXtLQ0g3EdP368nu0o5RfLdbUBXmySm%2Bl5flFsbKzED443uIGmT5uuvfjzF80edfT1uSH94cYLn4sXL5YNn2zQtdy6Dev4YUFERC5WXJTf%2F%2BH3Jhun7u5uaW5pltd%2F%2F7ruz%2FXx8ZEnn3hSXvrFSwTZgoSvJ8amro1PSp8kR44esdmBPj2kG5w8dVK1t5t%2FMJW5c6d6hkQWFxe73FRCNx6lzpg%2BQ9MzqlDk6mPPV%2F7vSnpJkM7OTim%2FWG7yX9WlKtGzH17j7eUtzz7zrAwaNIjekQX0zjdn7PKEiEhqaqoWGBho9jOOH9c3IIWEdGP3Vee5zonpExus3YC3dJddaiqhW3t9Sx9dusHHR9%2FNiqdOn5JjmcdISrCpsLAw%2Bek%2F%2FpSnFFgh67j5wVtBQUGSmpJqMrbpE9LNfk5zi76phEhIN9Az2CA%2BPl5iY2MjTJWZMnmK5uVl%2Fmyoq08lFB0V%2FfD3Hvie7vIbN220%2BWPPMXClpqTKqy%2B%2Fqg1NHEoyslDeuTzV1NRkttyE8RP0HKDr%2Bk49p%2B1ISN%2FZf2C%2F6unpMd99TdfX%2B9EzEaQ7TCV01%2FS7tNGpo3WV7bjMY89h00ZV3vzjmyrreBY9bwvpfRyOnrM9ySOTtZCQELPl9EwlREKyIHuLiKSnp79hqw3pDr0kEZEfP%2FdjLSAgQHcjsm%2F%2FPhoQ2ERJaYl8tOojefu9t1VDA71vvU6eNj9VUGhIqIwcMVJX73PiBPO9pM7OTjly7IgiIZlRXVOdWVxSbLbc0MShEhUZ9UtdGyh9oqbn%2BoorTyV0o4f%2FXv8TzD%2Ff%2BrnU1Ljvs6HgePn5%2BfLHP%2F%2FxQtWlKg52zB98q87OTj0H37o%2FU89D%2B%2FT0zEhIV4OUYctezzWG7m6%2BlStPJXRrAtYbn%2F547DncX2Njo7z9ztsEwgxbjK671fBhw7WI8Aiz5QrOm55KiPuQRN9pM03TZPas2RZdPJ2YPlHXkxOteW6IM3ryiSe1l%2F%2FtZdXUbP5iaVFxkezavUvNnTP3ekzNPfQLri8hIUF%2B%2FuLPze5HtbW1r7e0trxUVlYm2SezRc9kxyJXR3O9%2Fe7b6if%2F8BMGOhhLCjrml4uIiJBhQ4dZ3N7t3L3TZJlrUwnNnztfo4dkwIULF1RdfZ3ZcknDLT89PX7ceM3Pz89suZzcHLeJ57JHl%2Bku%2B%2BVXX950L5aekYlwbV6e%2BrZxVFTUL4cPG67dPfNu7YV%2FfEF7%2FtnnRc%2F9LiIi%2BQX5kn0ym1N3BuzYtUMpZT40ekfO3bSMDU7bDfgWQG%2FvpKS0RH71%2F35l8Y9cz7Tu16YSmnHXDJc%2FqktNTdU2bNyg9h%2FYb7ZsV3eXfLLxk%2Bun7vTe04SBZ8zoMVp1dXXmm396M0PPI8q%2F%2BuYrgmZhMrjRvv37LG7v3nnvHV3lKquuTiU0JH6IRg%2FpFtkns3WV6%2B7ulvb2dov%2F6Zm4UMQ1pxIyZslDS7To6GhdZfPO5V2%2Fhubv70%2BLAaNiYmImL3lI36XHqqoqKS0rpZd0g7LyMlVZVamrbGdnp1XtXV87AgM6IZ3IPqE6Lnc4RV2Ki4vdauTZY0sf0%2F2Yis2fbxYRkaDAIJdfbyX2awP1nGpxdxmTMrSYmBhdZfU8BXUgcaZr1camEhrQCUnvaBOHdaezMt1m5NnwYcO1BfMW6CpbV18nO3buUMHBwU67Pl5eXrruP9MzK7W19H62u1%2BLu%2FXBmMbofcLsQKFngJWjNLc0S05ujiIh3SAvL8%2B5jmDc6LSdiMii%2BxZpQ%2BKH6Cq7fed28fT0dNp1iYrSd%2F9ZS3OLXXdiPXx9fN16v01M0PeI8orKCrLQd87mnFUtLS1OVSdDo5sHbELas3eP0nt9x1Hq6uqksLDQrc7LPL7scV1H7JcvX5aDhw469broGZbe3tEu9poxoK6uTle5wYMHu%2FWQ56Agfad2Lbmm4e6ccUYYQ1MJDdiEpHe0Cb2kvomLi9MW3btIV1m9F1z7S3hYuL6e97k8m8%2FXd%2Br0KV0HUL6%2Bvm6%2F7%2BqZc1JExNkOOPu18T992unqZGgqoQGZkCqrKlVZeZlT1i07O9vt4j13zlzdz05y8uSqq5w9LqbrHQ06KHaQ2%2B%2B%2Fzc36Tl3qHVTj7g4dPqS6urucsm63dgz67ernufxzZgckpaSkaI4IgimPPvyohIaG9vk7CwoKZNeeXeZPM3w3ldCE8RPcam96bOljz7%2FxX28sv3LlisuuQ9LwJDlz9ozZcrl5uVJSWqJs9ViE6urqzNfeeE1XWXdI%2FOYUFRfpKsdtBN%2B1dzpP1%2Fn6%2BsqTTzxpk0S%2B78A%2Byckxf8N%2FwfkCaWhsSAoPCy%2Fs14T03or3%2Bq1LnXlc3waKiYmRaVOn2Swx6Hm0uYj7TCV0o8jIyBWHjxxe%2FvG6j112HVJTUuXzrZ%2FrKrtx00abfe%2FGTzdm6B3ynZKS4vYNrN4eaEx0jAx09fX181%2F93au6yk4YP0HGjhlrk%2FYuJzdH6UlISinJOp51QUQ0kQF4yi6%2FIF81NjbqKpsxKcOm352amqp3Y7pl7KfeOVXTM%2BGss4qPj9diY2J1lS0pLZHVH6%2Fu8wCVTzd%2FqvLO6RsNqufpnq5u245tqrW1VVfZIUOGyECXmZW5XW%2FZyZMm2%2Bx7x4weo%2BkdfHLjGasBl5As6X1kTMrYYMvv1rvBr00l5I7xf%2FaZZzW9c5I5o2nTpukue%2FTYUVnxlxVWb8ePVn2k9ny7R3%2FCv2OqW%2B%2B7Obk56quv9U8JlJqSKgOd3vYuJDjE5pdI9D7MtLKqUsrKy1SfElJfh1T21%2Bm6E9n6nj80bOgwiY6KftiW350xKUPTO1%2FbgYMHHBYTvfe32MojSx5x2R18zqw5uh9GKCJyNues%2FPrffq1279mtOzHtP7hfvfrbV1XW8Szd3%2BPl5SX3L77f6XtH1v7Wvt72tXp%2F5fu6243AwEAZlzZuQI9qOJd%2FTlXXVOtLHpMm2fz7MzL0n2G61t5ZfQ2pq7tL%2FvLBX9TE9IkW3dDY1dUlR44eMftcDFupq6t7rqy8bHl7e7scOHhAyi%2BW600edqnPuLRxoqehqaiskPdXvq%2FSJ6SLt7e3pE9It9nOdeNMyK1trfLFV184dEeZMH6CtmrNKuWq18ru%2B7v75JNNn%2BhvhJub5bPPP5Ofv%2FRzlTQ8SUaOGClhYWESGBgomqZJW1ubNDU1yYWiC3LhwgXZ8InlHfN5c%2BbJH%2F7zD04fu7q6Olmzdo1KTUk1eV9Xd3e3tLa2SmlZqeTm5YolPSMRkbum32W3dTh%2F4fxtpw0Liwp1LXvk6BF169D8uEFxDbGxsRG2qFtZWZmqq6%2BThsYGWbV6lf7kMdH27d2wocO03%2F77b1VtXa3ZsocOH5JNn25SfRrUcPrMaV3PSe9PBecLLL6Q7uHhIXfPvNsuR1eTMyaL3iPfM2fPXB%2FVVVlZqeLi4vpcp5KSEvXmn97s9%2B3y%2BLLHtVd%2B84ru63nOZOaMmdqbf3xTlZSWWHYQ19Ul5%2FLPybn8czatT1RUlNx3730u0xs4cvSIHDl6xG6fHxQUJIvuXWS3eHz9zddWH1CvWbvmttcW37c43FZ1O3DwgBw6csiiZWKiYyQxMdEu8cqYlCHfbP9GV9lv933LbN%2BGpIyy30glSy72ubvHlj7msnV%2F8oknn3eGYcVeXl7y1JNP8WO6gSXP5IL9zgZ999kNFnUG2ByO3UAi1j38yh2NSh6lzZo5yyXrHhkZueKZp54Rby%2FvfquDpmnyxGNPiKHnygxUi%2B5bZLOhywOovdtgr8%2BOjY2NSBiSQEKylo%2BPj0yZPEWz8w%2FAJWNjj1mkf%2FD9H%2BgeSu1skkcma08%2F9XS%2FPFjQw8NDHlv6mE2vLTrbb8PiZHTvIlk4fyHJyAJDE4dKdLRtB2%2Fd1t5ZMLjBYEIK8A%2Fo90BZMpLJ1Xovw4cN1wYNcr0pXmwxY4Uhjy97XNfEpc5ozOgx2gs%2FeUHCwsIcum%2F8%2BLkf2%2F3AyRKDYgf1W10CAwPl6R89LQsXkIwsNfVO%2B98qMGfWHE3vwDeDrUBycnK%2FB2pU8qh%2BOeqcO2euQ75r4fyFrtgjsMvnJiYmagsXLHTZnTohIUF79eVXtSmTpzgiAcp%2F%2FO4%2FtJRRKU7X%2BA5NHOrw%2FXX6tOny2m9f09xtqi1HCAsLk%2BnTpjskbndN0zfq0WBCumfhPf16btzb21vuWXCPw7%2F3%2FkX3O%2BxIL2NShuZKp%2B5GJI2QtLFpdovNvffcq%2Bl9zo2zenzZ49rPXviZjBwx0uafHR8fL88%2F%2B7w8%2F%2BzzTtvwLl602CETmoaHh8v8ufPl1%2F%2F66wWPLHmERGQFT09Phw4qeugHD2mD4wabLWfwxG%2F84HitrLxMffn1l1JQUGDXp2DeyMfHR0aOHCmL7l3ksGe6eHp6SmJiosyZNUccfZT1w8d%2FqO3bv08dOnJIKisrnXK6%2FNCQUMnIyJAH73%2FQ7rF5bNlj8l9%2F%2BC9x1pmJ9Rg%2BbLgmIlJ%2BsVwdPHRQTp8%2BbfXNoH5%2BfjJ2zFiZNnWaJI9M1v7ln%2F%2FFqdd9VPIo7cKFC%2BqrbV9JYWGh7sdEmItBeHi4DIodJEMTh8rIESMlISGBJGQlX19fGZU8ShYuWCiJCYkOjeNLv3hJ27J1izqRfULq6g0%2F20t3hez10LEbjnoK7fXZxupuz%2B905rrq2paayLUZeJ0lBs683UwpKS1RxcXFUlpWKrV1tdJQ3yDtHe3XD%2FS8vLyuNrxh4RIZGSlDhgyRYUOHSfLIZJdveK1qN%2Frxt9cf7aGtf8%2BG6uas%2B4y98woAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALhGIwSAeyi5WKUuVtVIe8cVCQ0OlCkTRrN%2Fg4QEwLG%2B3H1IHT6Rc9NrPt5esnjedEkfk8x%2BDpfgRQjsI%2Fd8iTpfXG7%2BiEDTxM%2FXR%2Fz9fMXfz1eiI8MkIS6GBsSJFJdVqoLicmloapH6phZpaGqRjstXRNM0CQ0OlMjwUIkKD5UhcdEyYfTIftl2tyYjEZHOrm45YuB1gB7SALN9%2FzG17%2Bgpq5b19vKSIXHRMi41SSaPS2Ub9ZOKS7Vqx4Es0XNg8X%2FbzlNSkhJlXOoIGT1yqEO2XWFphfrrJ18Zff83%2F%2FQMvyHQQ4J1urq7paisUorKKuU%2F31ujpmekyYwp4526UTl6Mlfd%2BPfgmCgZEhftsg3hroNZ6r3Vm63Ydj1yJr9IzuQXyeZt%2B9SDC2faPQZBgf5ZIpLBngNX50EInFtre4ds23dMPlj%2FhXLWOh4%2BcVZt3XlQbvx3rrDUZWN%2B5lyh2nM4u8%2BfkzIi0SH1jYkMnxwVEWrkvTB2IpCQYFvF5VXyn%2B%2BtUXUNTc85W92ycwrcKtafbdvX588ICwmS1BFDHdZDXDRnmgyNj73ptaiIUPn%2BPXez88BlcMrOxXpLazbvWC4iK5ylTpdq6uvf%2FtunbhPjwyfOqi93HzZbztPTQ3p6eo2%2BP3lcikPrPWJovCYiUtfQ9FzH5SvLh3w3MOYFdhuQkGDK9ElpMmbUMBER6ezskpr6Jqmpb5CauiYprbgkShk%2FO1dT3yhrt%2BxUj94%2Fzymuz5zIKQh3p22TX2R8AENIUKDcO%2FtOGTtq%2BPXYX6yqUeVVNZJ7vkSKyyult1eJp6eH3H1ner9sn8jw0BXOdMACkJCcXFhokCQOjjXYYJVVXFKbvtkrdQ3NRpfPKSiW8soaZcmggeNn8lVVTZ00tbRJc0ubNLe2SWv7ZfHw0CQ8JFgiw0MkKjxUhiXESUpSoq7PLausVqs%2F227wvcKyCtm29%2BhtmdXLy0vmTp%2BkObquepWUVxp9b%2BkD8yR%2B0M0xv%2FXv%2FcdOKaWUvGLh914ouahq6hultr5Jrv63Ubq6eyQwwE%2BCAwMkJChAYqIiJG3U8AURYSE7bl3eUKxFRAID%2FOWuyeN0x%2Bh8cbm6VNsg1XUNcqm2Qeobm8XXx1uiI8IkOjJMoiLCZGh8bFZMZPhkPZ9nqF4pSYkydMig63U6m1%2Bkcs%2BXSHVdg7S2dUhXd7eEhQRLVESoRIaFyJjkYTI4Nsqq7dzXuDoqTriK4aB2YmrY931zpsrUiWNNxv7Tb%2FaqE2eNX5tJHjZEnvjBPZq5nSY757zkni%2BWru4e3XUfMiha5t2Vcf00kCGf79ivsk6dE0tHWvj5%2Bsi%2F%2FuQJzZF1tcTLb640uEr%2Bvj7yKwP17qvyyhr12bZ9Ul3XoH%2Bd46Jl1h3pkjLi%2F5KxsXpHR4TJT3%2F0kGa%2BHtVq49ffmjwQusZD02RaRprcc%2FcdmjXxTBs1XB5ePFcTEVmx5nNVXlVjupHSNJk6cYzcO3uq5ui4OipO%2BC5mhMA5ff%2Beu7XgwACj7xeYuTcmO6dAfbTpGzmVd8GiBl5EpLyqRj7c%2BLVknsq7rTGpuFSrXn93tcq0Ihk5uq5W7RCa4baj40qnzbfx198eUe%2Bv3WJRo%2FldY2vxMqbsOpil%2FrJ2q65GVkSkVyk5kHla3lq5XhWVVVgc9%2FMlF%2BVSbX39WyvXm01GIiJKKTl0%2FKz8z4cbVX%2FG1dFxIiHBqcyemm7y%2FVN5F4z%2ByNPHJGt%2Bvj59%2Bv6v9hyWS7X19Te%2BVt%2FYLO0dl226nvaqqzWCg4wfBPzPh5ts1qj89ZOv1MGsMyavF5rqMcy8Y4JNjrrXbdmp9hzOll4r6tHQ1CJrNu%2BweLnLVzrlnb99Ft7Q1GLRctV1jXIg87Tqj7j2R5xISHAqUyaM1kKDA42%2BX1RWaXL5qRPH9On7u7p7A4PZ0wAAC8tJREFUZNPXex0yaMFZ6ho%2FKNpEg9ggb7y3Wh275SZgS%2BUWFKvC0gqrlx85LN4mMS8srVBnC4r79BlXOrtk3dZdFsfDmoQhIvLtkWyHx7U%2F4zTQMKjByQ2OjZKmljaD79U1NJlcdu70DO13f%2F5QdXZ1Xz0CFJFhCXEyODZKIsJCJNDfVxqbW%2BXQ8bNGv6Oyuu6mv%2F39fCUhLkZERNo6Lkt9o%2FHTF9fK3cjHx9thdbWutzZSckw0Pm3tl2XLzoPy1sr16u47J0hGWorFPZVv9h41WyY0OFD8%2Fa6u8%2BVbThdOGjvKJr%2Btr%2FYcMfpeUIC%2FzJ42UWKjwuVKZ5fkXSiRzFPnDJY9m18kBUXlKnn4EKt7bcGB%2FhIWGiyNTS3S0tZhsneVU1CsxiQP0xwVV2eKEwkJ%2FSosJMjoex2Xr5hdfnpGmuRdKJXxqSNMTj%2F0%2B%2BUfq5a2doPvFZdXqmFD4jQRuWnwwMnc82rjV98aXGbWneky764Mi3Y8W9fVGqkjhmobvtitTp8rNHsaZvO2%2FfLWyvVqzrRJkj5G36Sq%2B4%2BdUtv2HTP6%2FpC4aHlu6QM3fVZ9Y%2FP8s%2FlF20%2BfK5Tmlrabhp1b69ipPLVlxwGD70WEhcjPnl5y23fkFBSptVt2GVzm8ImzVtUjNDhQlj04X%2BJi%2Fm8U3Z7DJ9Sug8eNLlNn4CDIXnF1ljiRkOAUwkODjb6n51rO3On6ksKUCalirBG4VNvgkHV1lrouWTRH%2B58PNyk9F8Ubmlpk09ffytsffaq%2Bf89Ms8OTc8%2BXGH0vftDtjeZ3Dd8OsfGI2FO5542%2Bd%2B%2BsO%2BVnBl4fkzxcW715uzp34fZpoWrN9NYN8fXxln9%2B9lHtn5%2B9%2BfXZUydq%2F7vhS2XslHS9ge%2ByV1ydIU4DCdeQnFxQgL%2FR966d3rKFqPBQo%2B%2B1tLY7VUwcUdelD8x7PiQoUHf5S7X1smLN57L70HGT1wlMneK8KyPNYTE0Vg9fH2%2BTw55Hjxhq8PXG5laL6zAuJcnoexPHJhs%2FCDDwXfaKqzPEiR4SnEabiV6Qh4f%2B44mLVTWqrrFZ6hqapLa%2BSVra2qW7u0e6e3qku7tHvth9yGnW2Rnqem3Gg%2FVbd6kz%2BUW6lulVSnYfOiFbdx5Ui%2BdN1yzZngF%2BvpKWkuSwawvGrtN0d%2FfI2i07jSbVPYdPGHxdKSWXaurrY6MjIvTWIX2M8aQTERpiPM69vQ6LqzPEiYQEp2FqaGxwoL%2FZ5b89kq2OZufI8jWfO%2F26OmNdH148Vyspr1Lb9h%2BTsopqXcscPZkrx07mqlsfIV5xqdboIy3Cw0Ictk6V1XXq3VWfGXyvp7fX5KAOk7%2FV5haLRjkmxscaTRSBAX7Pi8hyPZ9jr7g6S5xISHCJhGTqlNLpvAvqs237ZOeBLKdfR2ev67VpbgpLK9SewyekuLzK7DKGHl9h6rSSnoMLWzFVj77o7dU%2FqtnTTO8%2BMjx0xctvrlze1%2FXpS1ydIU4kJDiVmrpGo%2B8Zu0cpp6BIrduyS1zhZ%2B9KdU1KHKyJXB3J983eY3LRxCwDLW3tcvxMvpqUNup6L6DdxKhIH2%2FH7YptNr6x2RoB%2Fn42%2Byx7xdUZ4kRCgtM4m1%2Bk1m3dZeKUxyCDr2%2Fbl2m2gR8SFy3R4WESGhIofr6%2BUl5ZLXqvldiSK9X1mmvDyr%2FZe1QdyDxt%2FGCi%2FuaDiRATU0E5svEzdStB3%2Bg%2FrPD19bbZt9orrs4QJxISnIap%2Byo0EZk4Nvm2c%2FCFpRXqr598ZXS5ofGx8sD8GRuiI8MevvH13PMlytGNvCvV1ZB77r5D27x9v8o6bfhGyFtP%2BYSHBjeIiMHrB44cyRgVHrpARLYbi%2Fkzjyy2ahDAb%2F5Jf1nNhqPY7RVXZ4jTQMOwbye1%2B9BxZer6UcLgWIOvm5q9ISQoQJ55ZLF2awNvqPF0BFeqqzHjU5N0H52bGllVU98kDU0tSY6oc0RYyA4vT0%2FD28SJYquXveLqbnEiIcEqqz7dpnYfOmGyzKw7Jxh83di0OqaSmIhIWWW1TdehqaVVRxnnqOs1Z84VquVrPlfHz%2BTrPqdy5UqX0ff8fG6fMDbQyLUTpZQcPZl7Qc93Vlyq7fM5n0gj93K1tnXIibP5LndOyV5xdbc4kZBgVm194%2Bt5F0rUroPH1e%2F%2B%2FKHKLyozWX7YkEGSPDzB4OkCLy9Po8tdqjU8GXZBUZmyZgirqZt29XyeI%2BuqR1d3t1ysqpHPtu2T%2F3hnldqy44AqLDX%2B2ICGppakL%2FcYf9x5dMTtjVl4mPGZN46cyDE5g%2FvxM%2FnqTx9sUGu37Ozzug6KNn4bzDffHpW6hqbn9HzO2fwi9enXe%2Fu9YbZXXN0tTs6Oa0j94Mvdh%2BVPH2xQl690SseVK%2FLff92oe1l%2FP195YMGMN4y9b2oWg9r6JjmSnaPuTB9zPZntO3bK6gYuLCTI6L0inV3d8pe1W1VaynAJ8PeT6toGqaqtl5q6Rln24PyG2KiICEfW1VIdl6%2FIsVN5cuxUnvz2vz9UEWEhEhEWLBGhweLh4SG1DU3yp%2F%2FdYHII79hRw297bcr40VJeaXh0XndPj3zy5R5Zu2WnSoiLEX8%2FX2lqaZX6xhYpuVgln23bdy3ufV6%2FWVPT3zibX%2FRSd8%2Ftz59qv3xF3vnbp8v3HT25PC0laUR4aPD1if1q6hvXNzS1LMktKJazBcViatCNI9krru4WJxISDLLmHLSnh4csvX%2BeRIWH%2FtJoQooINfkZX%2Bw6JK%2B89YEKCvCX1vYO2W5i4ISO0z4rXnnrg%2BXGHiVQWnFJSisu3fZ6b29vuKPr2tee06XaeqO9NoNH7KHBMiQu5rZe7MSxydo7f%2FtUVdXUm%2Bxd2qsXeMOByy%2B%2FPZL9krF7v7q6e2T7%2FkzZvj%2FzwstvrhQvT0%2Fp7umRP1tw8ORI9oqru8XJ2XHKzkUEBwbIDx%2F6OxmWYHom60HRkZqpCVlFrp5Xb2lrt%2FqZNDcanhDXh9NGjq2ro3h6eMj3Fs40%2Bv7CmVOcop6z7kzXYiL1TRpgqIfgbOwVV3eLEwkJfZI6IlF%2B8fxSbXiCvscqLJo7zeLv8PbykjQDp5jMWTBjcp%2FWzZF1dZQHF84UU9tq5LAh2uRxKU5R17%2B%2Fb7ZER4a5xX5iz7i6U5xISLD8KNvTQyaOTZZ%2FePx7suzBBRbd7zBqeII2deJY3eX9fX1k2YPz5eHFczVjw1yNiR8UrU2fZP1syo6sqzlhIUES1IepZobGD5Knltyr69lIDyyYoS17cL4Em7ip02hvOSjAZus8KDpC%2B%2BmTD2nzZ0wWby%2Fr4unIWSb6K67uFidnRYT6ma%2BPt%2Fj7%2BYqfr48EBwVIQlyMJMTF3PQgPGvcN2eqVlhaobbuPGj0GSy%2BPt6SOmKoPHTvLO1XP7n62uiRQ%2BXWh9MFBphupP9u9p1aTkGx2rbvmMl7hEKDAyUlKfGmh7E5uq6mDE8YfH3OujPnCiXnfInZZ075%2BfrI4NgoufuOCdenFtLf8x2qiYhs3XlQFZdXSl1js%2FT09JqoX5xMmzT2%2BnI3JWo%2FX4MPbPTW2QjefccErb6xef6ewye2V1yqlfrGFpOnn7w8PWVUUoKkjRpucjZtY%2FUKDDA%2FddC16zG3N%2BzeDouro%2BKEqwjQAFFUVqHqGq4miwB%2FXwkKDJDEwbF22f45BcWqtb1DRF39rgB%2FPwkOCtgQHXH7Ta79XVc9qmsbMlva2jNa2jrkSmfn1cdthwSbfRifNeoamp6rrW9a3tjSKr4%2B3hIcGCBBAf4N%2FfG4grqGpufqGpqWNza3ieahibeXl%2Fj5eEtEeEhWTGT4ZFf6%2Fdszru4UJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADO5f8DodhAHU3RkO8AAAAASUVORK5CYII%3D%29%3B%0Abackground%2Dsize%3A%20contain%3B%0Abackground%2Dposition%3A%20center%20center%3B%0Abackground%2Drepeat%3A%20no%2Drepeat%3B%0A%7D%0A%0A%2Etocify%20%7B%0Aborder%3A%20none%3B%20%0Aborder%2Dradius%3A%200px%3B%20%0A%0A%7D" type="text/css" />
|
|
|
|
|
|
|
|
<style type="text/css">
|
|
.main-container {
|
|
max-width: 940px;
|
|
margin-left: auto;
|
|
margin-right: auto;
|
|
}
|
|
img {
|
|
max-width:100%;
|
|
}
|
|
.tabbed-pane {
|
|
padding-top: 12px;
|
|
}
|
|
.html-widget {
|
|
margin-bottom: 20px;
|
|
}
|
|
button.code-folding-btn:focus {
|
|
outline: none;
|
|
}
|
|
summary {
|
|
display: list-item;
|
|
}
|
|
pre code {
|
|
padding: 0;
|
|
}
|
|
</style>
|
|
|
|
|
|
|
|
<!-- tabsets -->
|
|
|
|
<style type="text/css">
|
|
.tabset-dropdown > .nav-tabs {
|
|
display: inline-table;
|
|
max-height: 500px;
|
|
min-height: 44px;
|
|
overflow-y: auto;
|
|
border: 1px solid #ddd;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.tabset-dropdown > .nav-tabs > li.active:before {
|
|
content: "";
|
|
font-family: 'Glyphicons Halflings';
|
|
display: inline-block;
|
|
padding: 10px;
|
|
border-right: 1px solid #ddd;
|
|
}
|
|
|
|
.tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {
|
|
content: "";
|
|
border: none;
|
|
}
|
|
|
|
.tabset-dropdown > .nav-tabs.nav-tabs-open:before {
|
|
content: "";
|
|
font-family: 'Glyphicons Halflings';
|
|
display: inline-block;
|
|
padding: 10px;
|
|
border-right: 1px solid #ddd;
|
|
}
|
|
|
|
.tabset-dropdown > .nav-tabs > li.active {
|
|
display: block;
|
|
}
|
|
|
|
.tabset-dropdown > .nav-tabs > li > a,
|
|
.tabset-dropdown > .nav-tabs > li > a:focus,
|
|
.tabset-dropdown > .nav-tabs > li > a:hover {
|
|
border: none;
|
|
display: inline-block;
|
|
border-radius: 4px;
|
|
background-color: transparent;
|
|
}
|
|
|
|
.tabset-dropdown > .nav-tabs.nav-tabs-open > li {
|
|
display: block;
|
|
float: none;
|
|
}
|
|
|
|
.tabset-dropdown > .nav-tabs > li {
|
|
display: none;
|
|
}
|
|
</style>
|
|
|
|
<!-- code folding -->
|
|
|
|
|
|
|
|
<style type="text/css">
|
|
|
|
#TOC {
|
|
margin: 25px 0px 20px 0px;
|
|
}
|
|
@media (max-width: 768px) {
|
|
#TOC {
|
|
position: relative;
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
@media print {
|
|
.toc-content {
|
|
/* see https://github.com/w3c/csswg-drafts/issues/4434 */
|
|
float: right;
|
|
}
|
|
}
|
|
|
|
.toc-content {
|
|
padding-left: 30px;
|
|
padding-right: 40px;
|
|
}
|
|
|
|
div.main-container {
|
|
max-width: 1200px;
|
|
}
|
|
|
|
div.tocify {
|
|
width: 20%;
|
|
max-width: 260px;
|
|
max-height: 85%;
|
|
}
|
|
|
|
@media (min-width: 768px) and (max-width: 991px) {
|
|
div.tocify {
|
|
width: 25%;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 767px) {
|
|
div.tocify {
|
|
width: 100%;
|
|
max-width: none;
|
|
}
|
|
}
|
|
|
|
.tocify ul, .tocify li {
|
|
line-height: 20px;
|
|
}
|
|
|
|
.tocify-subheader .tocify-item {
|
|
font-size: 0.90em;
|
|
}
|
|
|
|
.tocify .list-group-item {
|
|
border-radius: 0px;
|
|
}
|
|
|
|
|
|
</style>
|
|
|
|
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
|
|
<div class="container-fluid main-container">
|
|
|
|
|
|
<!-- setup 3col/9col grid for toc_float and main content -->
|
|
<div class="row">
|
|
<div class="col-xs-12 col-sm-4 col-md-3">
|
|
<div id="TOC" class="tocify">
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toc-content col-xs-12 col-sm-8 col-md-9">
|
|
|
|
|
|
|
|
|
|
<div id="header">
|
|
|
|
|
|
|
|
<h1 class="title toc-ignore">Report</h1>
|
|
<h4 class="author">Data Science Team, LaNubia</h4>
|
|
<h4 class="date">30 May, 2022</h4>
|
|
|
|
</div>
|
|
|
|
|
|
<p><strong>Non commercial license of Highchart library used</strong></p>
|
|
<div id="status-report" class="section level2">
|
|
<h2>Status Report</h2>
|
|
<div id="input-available" class="section level3">
|
|
<h3>Input Available</h3>
|
|
<div id="htmlwidget-501f485536dc19741708" style="width:100%;height:500px;" class="highchart html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-501f485536dc19741708">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Observations by segment"},"yAxis":{"title":{"text":"Number of observations"},"type":"linear"},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"Input Summary"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0,"showInLegend":false},"treemap":{"layoutAlgorithm":"squarified"},"scatter":{"marker":{"symbol":"circle"}}},"series":[{"group":"group","data":[{"Input_data":"Projects","Observations":34433,"y":34433,"name":"Projects","drilldown":"Projects"},{"Input_data":"Accounts","Observations":7136,"y":7136,"name":"Accounts","drilldown":"Accounts"},{"Input_data":"Support","Observations":6435,"y":6435,"name":"Support","drilldown":"Support"},{"Input_data":"Contact","Observations":3896,"y":3896,"name":"Contact","drilldown":"Contact"}],"type":"column","name":"Segment view","colorByPoint":true}],"xAxis":{"type":"category","title":"Segment"},"drilldown":{"allowPointDrilldown":true,"series":[{"Input_data":"Accounts","data":[{"Country":"DE","Observations":3481,"name":"DE","y":3481},{"Country":"IT","Observations":2585,"name":"IT","y":2585},{"Country":"NL","Observations":646,"name":"NL","y":646},{"Country":"PL","Observations":339,"name":"PL","y":339},{"Country":"FI","Observations":34,"name":"FI","y":34},{"Country":"SE","Observations":31,"name":"SE","y":31},{"Country":"ES","Observations":11,"name":"ES","y":11},{"Country":"CN","Observations":9,"name":"CN","y":9}],"id":"Accounts","type":"column"},{"Input_data":"Contact","data":[{"Country":"DE","Observations":3152,"name":"DE","y":3152},{"Country":"NL","Observations":539,"name":"NL","y":539},{"Country":"PL","Observations":102,"name":"PL","y":102},{"Country":"SE","Observations":37,"name":"SE","y":37},{"Country":"IT","Observations":30,"name":"IT","y":30},{"Country":"FI","Observations":21,"name":"FI","y":21},{"Country":"ES","Observations":12,"name":"ES","y":12},{"Country":"CN","Observations":3,"name":"CN","y":3}],"id":"Contact","type":"column"},{"Input_data":"Projects","data":[{"Country":"DE","Observations":12949,"name":"DE","y":12949},{"Country":"PL","Observations":8396,"name":"PL","y":8396},{"Country":"NL","Observations":6076,"name":"NL","y":6076},{"Country":"IT","Observations":3437,"name":"IT","y":3437},{"Country":"ES","Observations":2265,"name":"ES","y":2265},{"Country":"CN","Observations":727,"name":"CN","y":727},{"Country":"FI","Observations":302,"name":"FI","y":302},{"Country":"SE","Observations":281,"name":"SE","y":281}],"id":"Projects","type":"column"},{"Input_data":"Support","data":[{"Country":"DE","Observations":2556,"name":"DE","y":2556},{"Country":"IT","Observations":1631,"name":"IT","y":1631},{"Country":"ES","Observations":991,"name":"ES","y":991},{"Country":"CZ","Observations":798,"name":"CZ","y":798},{"Country":"NL","Observations":240,"name":"NL","y":240},{"Country":"NO","Observations":102,"name":"NO","y":102},{"Country":"PL","Observations":83,"name":"PL","y":83},{"Country":"CN","Observations":34,"name":"CN","y":34}],"id":"Support","type":"column"}]},"tooltip":{"pointFormat":"<table>\n <tr>\n <th>No. of Observations(Input)<\/th>\n <td>{point.Observations}<\/td>\n <\/tr>\n<\/table>","useHTML":true,"valueDecimals":0},"subtitle":{"text":"Click on the bar to view details by country"}},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
|
|
<p>Simplified view</p>
|
|
<div id="htmlwidget-599dd639ffb82aa7ca97" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-599dd639ffb82aa7ca97">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["1","2","3","4"],["Projects","Accounts","Contact","Support"],[12949,3481,3152,2556],[8396,339,102,83],[6076,646,539,240],[3437,2585,30,1631],[2265,11,12,991],[null,null,null,798],[727,9,3,34],[302,34,21,null],[281,31,37,null],[null,null,null,102]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>Input_data<\/th>\n <th>DE<\/th>\n <th>PL<\/th>\n <th>NL<\/th>\n <th>IT<\/th>\n <th>ES<\/th>\n <th>CZ<\/th>\n <th>CN<\/th>\n <th>FI<\/th>\n <th>SE<\/th>\n <th>NO<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"columnDefs":[{"className":"dt-right","targets":[2,3,4,5,6,7,8,9,10,11]},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="contacts" class="section level3">
|
|
<h3>Contacts</h3>
|
|
<div id="template" class="section level4">
|
|
<h4>Template</h4>
|
|
<p>SAP templates available:</p>
|
|
<div id="htmlwidget-d6f0cde1864b31e4ffdf" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-d6f0cde1864b31e4ffdf">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["1","2","3","4","5"],["Contact","Contact_International_Version","Contact_Is_Contact_Person_For","Contact_Personal_Addresses","Contact_Notes"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>Sheet.Name<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"order":[],"autoWidth":false,"orderClasses":false,"columnDefs":[{"orderable":false,"targets":0}]}},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="summary-of-errors" class="section level4">
|
|
<h4>Summary of Errors</h4>
|
|
<div id="htmlwidget-68144d66cf64fd4d5e36" style="width:100%;height:500px;" class="highchart html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-68144d66cf64fd4d5e36">{"x":{"hc_opts":{"chart":{"reflow":true,"inverted":true},"title":{"text":"Expect vs Actual"},"yAxis":{"title":{"text":"Actual"},"type":"linear"},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"ErrorSum_Contact"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0,"showInLegend":false},"treemap":{"layoutAlgorithm":"squarified"},"scatter":{"marker":{"symbol":"circle"}},"pie":{"center":["70%","70%"],"size":200,"dataLabels":{"enabled":false},"showInLegend":true}},"series":[{"group":"group","data":[{"Country":"DE","Expected":3152,"Actual":3002,"Pending":150,"y":3002,"target":3152,"name":"DE"},{"Country":"NL","Expected":539,"Actual":521,"Pending":18,"y":521,"target":539,"name":"NL"},{"Country":"PL","Expected":102,"Actual":100,"Pending":2,"y":100,"target":102,"name":"PL"},{"Country":"SE","Expected":37,"Actual":36,"Pending":1,"y":36,"target":37,"name":"SE"},{"Country":"IT","Expected":30,"Actual":22,"Pending":8,"y":22,"target":30,"name":"IT"},{"Country":"FI","Expected":21,"Actual":20,"Pending":1,"y":20,"target":21,"name":"FI"},{"Country":"ES","Expected":12,"Actual":9,"Pending":3,"y":9,"target":12,"name":"ES"},{"Country":"CN","Expected":3,"Actual":2,"Pending":1,"y":2,"target":3,"name":"CN"}],"type":"bullet","color":"black","name":"Observations (Output)"},{"group":"group","data":[{"Country":"DE","Expected":3152,"Actual":3002,"Pending":150,"y":150,"name":"DE"},{"Country":"NL","Expected":539,"Actual":521,"Pending":18,"y":18,"name":"NL"},{"Country":"PL","Expected":102,"Actual":100,"Pending":2,"y":2,"name":"PL"},{"Country":"SE","Expected":37,"Actual":36,"Pending":1,"y":1,"name":"SE"},{"Country":"IT","Expected":30,"Actual":22,"Pending":8,"y":8,"name":"IT"},{"Country":"FI","Expected":21,"Actual":20,"Pending":1,"y":1,"name":"FI"},{"Country":"ES","Expected":12,"Actual":9,"Pending":3,"y":3,"name":"ES"},{"Country":"CN","Expected":3,"Actual":2,"Pending":1,"y":1,"name":"CN"}],"type":"pie","name":"Pending (Major Issues)"}],"xAxis":{"type":"category","title":{"text":"Country"},"categories":null},"subtitle":{"text":"Pie shows number of major issues identified"}},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="error-by-template" class="section level4">
|
|
<h4>Error by template</h4>
|
|
<div id="htmlwidget-859f786a325efc77c966" style="width:100%;height:500px;" class="highchart html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-859f786a325efc77c966">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Error Count"},"yAxis":{"title":{"text":"Number of errors"}},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"Error_Contact"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0},"treemap":{"layoutAlgorithm":"squarified"},"column":{"stacking":"normal"},"lang":{"drillUpText":"Back"}},"xAxis":{"type":"category"},"series":[{"group":"group","data":[{"name":"CN","y":1,"drilldown":"cn"},{"name":"SE","y":2,"drilldown":"se"},{"name":"FI","y":3,"drilldown":"fi"},{"name":"ES","y":4,"drilldown":"es"},{"name":"IT","y":9,"drilldown":"it"},{"name":"PL","y":10,"drilldown":"pl"},{"name":"NL","y":22,"drilldown":"nl"},{"name":"DE","y":177,"drilldown":"de"}],"type":"column","name":"Country View","showInLegend":false}],"drilldown":{"allowPointDrilldown":true,"series":[{"id":"de","type":"column","data":[{"name":"Length error","y":27,"drilldown":"de_length error"},{"name":"Missing","y":150,"drilldown":"de_missing"}],"name":"High Level Error"},{"id":"nl","type":"column","data":[{"name":"Length error","y":4,"drilldown":"nl_length error"},{"name":"Missing","y":18,"drilldown":"nl_missing"}],"name":"High Level Error"},{"id":"it","type":"column","data":[{"name":"Length error","y":1,"drilldown":"it_length error"},{"name":"Missing","y":8,"drilldown":"it_missing"}],"name":"High Level Error"},{"id":"pl","type":"column","data":[{"name":"Missing","y":2,"drilldown":"pl_missing"},{"name":"Length error","y":8,"drilldown":"pl_length error"}],"name":"High Level Error"},{"id":"es","type":"column","data":[{"name":"Length error","y":1,"drilldown":"es_length error"},{"name":"Missing","y":3,"drilldown":"es_missing"}],"name":"High Level Error"},{"id":"fi","type":"column","data":[{"name":"Missing","y":1,"drilldown":"fi_missing"},{"name":"Length error","y":2,"drilldown":"fi_length error"}],"name":"High Level Error"},{"id":"cn","type":"column","data":[{"name":"Missing","y":1,"drilldown":"cn_missing"}],"name":"High Level Error"},{"id":"se","type":"column","data":[{"name":"Length error","y":1,"drilldown":"se_length error"},{"name":"Missing","y":1,"drilldown":"se_missing"}],"name":"High Level Error"},{"id":"cn_missing","type":"column","data":[["Account_External_Key",1]],"name":"Deep Dive"},{"id":"se_missing","type":"column","data":[["Account_External_Key",1]],"name":"Deep Dive"},{"id":"se_length error","type":"column","data":[["Job_Title",1]],"name":"Deep Dive"},{"id":"fi_length error","type":"column","data":[["House_Number",2]],"name":"Deep Dive"},{"id":"fi_missing","type":"column","data":[["Account_External_Key",1]],"name":"Deep Dive"},{"id":"es_missing","type":"column","data":[["Account_External_Key",3]],"name":"Deep Dive"},{"id":"es_length error","type":"column","data":[["House_Number",1]],"name":"Deep Dive"},{"id":"it_missing","type":"column","data":[["Last_Name",1],["Account_External_Key",7]],"name":"Deep Dive"},{"id":"it_length error","type":"column","data":[["Job_Title",1]],"name":"Deep Dive"},{"id":"pl_length error","type":"column","data":[["Job_Title",2],["House_Number",6]],"name":"Deep Dive"},{"id":"pl_missing","type":"column","data":[["Account_External_Key",2]],"name":"Deep Dive"},{"id":"nl_missing","type":"column","data":[["Account_External_Key",18]],"name":"Deep Dive"},{"id":"nl_length error","type":"column","data":[["House_Number",4]],"name":"Deep Dive"},{"id":"de_missing","type":"column","data":[["Account_External_Key",150]],"name":"Deep Dive"},{"id":"de_length error","type":"column","data":[["House_Number",10],["Job_Title",17]],"name":"Deep Dive"}]},"subtitle":{"text":"Click on bar for deep dive"}},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="errors-in-details" class="section level4 tabset tabset-pills">
|
|
<h4 class="tabset tabset-pills">Errors in details</h4>
|
|
<div id="mandatory" class="section level5">
|
|
<h5>Mandatory</h5>
|
|
<div id="contact" class="section level6">
|
|
<h6>Contact</h6>
|
|
<div id="htmlwidget-5d1355dbad5e02aff5f6" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-5d1355dbad5e02aff5f6">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["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","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","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","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"],["CON00135959","CON00136873","CON00136536","CON00136515","CON00136445","CON00136417","CON00136408","CON00136407","CON00136381","CON00136370","CON00136366","CON00136362","CON00136340","CON00136324","CON00136264","CON00136257","CON00136207","CON00136203","CON00136194","CON00136191","CON00136187","CON00136183","CON00136134","CON00136118","CON00136078","CON00136066","CON00136065","CON00136041","CON00136039","CON00136037","CON00136035","CON00136033","CON00136026","CON00136016","CON00135980","CON00135958","CON00135941","CON00135873","CON00135871","CON00135861","CON00135859","CON00135849","CON00135848","CON00135841","CON00135834","CON00135815","CON00135809","CON00135801","CON00135796","CON00135795","CON00135792","CON00135791","CON00135772","CON00135766","CON00135765","CON00135703","CON00135669","CON00135663","CON00135662","CON00135660","CON00135651","CON00135613","CON00135609","CON00135607","CON00135606","CON00135595","CON00135581","CON00135556","CON00135542","CON00135539","CON00135527","CON00135524","CON00135514","CON00135512","CON00135508","CON00135493","CON00135482","CON00135467","CON00135464","CON00135463","CON00135459","CON00135442","CON00135424","CON00135410","CON00135408","CON00135404","CON00135399","CON00135397","CON00135388","CON00135387","CON00135377","CON00135355","CON00135342","CON00135341","CON00135326","CON00135325","CON00135321","CON00135279","CON00135277","CON00135252","CON00135251","CON00135239","CON00135235","CON00135221","CON00135211","CON00135210","CON00135208","CON00135205","CON00135197","CON00135196","CON00135195","CON00135188","CON00135170","CON00135151","CON00135119","CON00135060","CON00134966","CON00134963","CON00134946","CON00134935","CON00134926","CON00134925","CON00134921","CON00134920","CON00134916","CON00134899","CON00134897","CON00134889","CON00134888","CON00134878","CON00134864","CON00134851","CON00134850","CON00134845","CON00134828","CON00134817","CON00134784","CON00134731","CON00134729","CON00134643","CON00134635","CON00133341","CON00133213","CON00133126","CON00133125","CON00133124","CON00133123","CON00133097","CON00110046","CON00108758","CON00107683","CON00136894","CON00136895","CON00136896","CON00117857","CON00136459","CON00136458","CON00136397","CON00136378","CON00136320","CON00135261","CON00134939","CON00134655","CON00136504","CON00136463","CON00136336","CON00136328","CON00136168","CON00136086","CON00136030","CON00136024","CON00136002","CON00136000","CON00135986","CON00135937","CON00135612","CON00135602","CON00135349","CON00134927","CON00134682","CON00134681","CON00136659","CON00136568","CON00135497"],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],["Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active","Active"],[null,"Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Ms.","Mr.","Mr.","Mr.","Ms.","Mr.","Mr.","Mr.","Mr.","Mr.","","Mr.","Mr.","Mr.","Ms.","Mr.","Mr.","Mr.","Ms.","Mr.","Ms.","Mr.","Mr.","Ms.","Mr.","Mr.","Mr.","Mr.","Mr.","Ms.","Mr.","Mr.","Mr.","Mr.","Mr.","Ms.","Mr.","Mr.","Mr.","Ms.","Mr.","Mr.","Ms.","Mr.","Ms.","Mr.","Mr.","Mr.","Ms.","Mr.","","Mr.","Mr.","Mr.","Mr.","Mr.","Ms.","Ms.","Mr.","Ms.","Mr.","","Mr.","Ms.","Mr.","Mr.","Mr.","Mr.","Ms.","Mr.","Ms.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Ms.","Ms.","Ms.","Mr.","Mr.","Mr.","Mr.","Ms.","","Mr.","Ms.","Ms.","Mr.","Ms.","Mr.","Ms.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Ms.","Ms.","Mr.","Mr.","Mr.","Mr.","Ms.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Ms.","Mr.","Mr.","Mr.","Mr.","Mr.","Ms.","Mr.","Mr.","Mr.","Ms.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","","","Mr.","","","Mr.","","","","","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","","Mr.","Mr.","Mr.","Mr.","Ms.","Mr.","Mr.","Mr.","Mr.","Mr.","Mr.","Ms.","Mr.","Mr.","Ms."],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],["Jochem","Wilfried","","Günter","","Jörg","Elmir","","Stefan","Jonas","Andreas","Ina","","","Carsten","Marike Katrin","Manfred","Jarosław","Stephan","Felix","Alain","Christine","Ralph","Sven","","","","Martin","Sylvio","","Andreas","Erika","Matthias","Stephan","Stephanie","Christian","","Moritz","Ralf","Matthias","Susanne","Oliver","Hans-Josef","Wolfgang","Christian","Thomas","Antje","Daniel","Florian","Thomas","Xenia","Alexander","Matthias","Birgit","Volker","Katja","Roland","","","Nele","Spela","Dariusz","Andre","Sabine","Philip","","Folke","Barbara","Katja","","Dilay","Philipp","Guillaume","Henning","Dunja","R","Christopher","","","Isabel","","Petra","Andrei","Ruediger","Heiner","Tebroke","Dirk-Peter","Daniel","Martin","Hannah","Petra","Kerstin","Alexander","Florian","Christoph","Martin","Nina","Alexander","Marc Timo","","Teresa","Pierre","Carmen","Danusan","Laura","Florian","","","Wolfgang","","Roberto","Kirstin","Leonie","Jens","Jens","Otten","","Helga","Dominik","Norman","Rudolf","Najdan-Stefan","","","","","Frank","Kristof","Richard","Boris","Reimund","","Markus","Christian","","","","Jörg","Aleksandar","Tim-Lucas","Melanie","Gerald","Francisco Javier","Dominik","Angelique","Andrej","Michael","","","","","Eduardo","Frieda","Ilse","Juha","Micjhele","Giuseppe","Fabio","Giuseppe","","MARTINA","","Geom. Deferdinando","Erik","Werner","","Jeroen","Jurry","","Erik","Nico","Joep","Bob","Vanessa","Willem","Jack","Berry","","Maarten","Paul","Henny","Dominik","Kamil","Louise"],["Verdoorn","Muhl","Usselmann","Teltenkötter","Kisewetter","Hennig","Tanjic","Pejic","Schiene","Janke","Buchegger","Sonneborn","Platzer","Mentzel","Barde","Knoop","Derer","Kołodziej","Derleder","Müller Statik","Robert","Sloot","Lichtfusz","Engelbrecher","Kurth","Möhring","Kopf","Seifert","Weiße","Sieber","Faltus","Thiering","Büker","Böddeker","Wengertsmann","Mühl","haussecker","Scheible","Weber","Baumgartner","Siegel","Zembsch","Heine","Rost","Polstermüller","Haftmann","Heidler","Engels","Schuchard","Stolte","Andreou","Frisch","Jordan","Wohlfart","Rühle","Frau","Hartmann","Hille","Jablowski","Bolte","Roze","Tomczyk","Stapel","Köhl","Weisenburger","Jankovic","Jacobi","Staber","Krück","Höchstätter","Kuduban","Struth","Burg","Meyer","Pruss","Passlick","Weis","Meier","Richter","Evers","Gscheidle","Muzic","Szakács","Haeussermann","Apel","Lueb + Wolters","Carl","Klonek","Kramer","Loebbert","Scholz","Molling","Dreher","Keck","Pollinger","Brunnbauer","Beck","SCHWEIZER","Berg","Schnörr","Voit","Gadeceau","Stein","Rammohan","Kuger","Böttle","Zicora","Jentsch","Selbach","Burr","Galante","Krömer","Paul","Cebulla","Dolgner","Markus","Brinkmüller","Brehm","Abonyi","Wachholz","Büker","Furtunic","Wert","Röhrig","de Vries","Sieker","Tuchtenhagen","Ortynski","Kulasza","Schwitters","Lorenz","Menke","Josl","Riediger","Geiß","Blumhöfer","Diallo","Achinal","Tanovic","Wedell","Molitor","Hornauer","Hernandez","Spill","Tschepigina","Laier","Wächter","Künast","Lierkopolus","Van Nooy","Ehlers","Yanez Ferrer","Nevens","Vanderveken","Rinta-Seppälä","Vicentini","Dellaporta","Betti","Musinu","FAGGIOLI","IAFRATE","SOVILLA",null,"de Ruiter","van Ooijen","Kraaij","Verdonk","Nijland","Calculatie","Kouwenberg","Prins","Snippe","van Manen","Theuns","Kerkhoff","Stofmeel","de Lange","Meerkerk","Scheper","Linthorst","Lammers","Laskus","Semeniuk","Saaranen"],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,"","German","","","","","","","","German","","","","","German","German","Polish","","German","","","","","","","","","","German","","German","","","German","","","","","","","","","","","","","","German","German","","","","","","","","","","German","German","","German","","","","","German","","","","","","German","","German","","German","","","","","","","","","","","","","","German","","","German","German","","","","","German","","","","","German","","","","","","","German","","","","","","","","","","","","","","","","","","","","","German","","","","","","","German","","","","","","","","","","","English","","",null,"Italian","Italian","","","","","","Italian","Dutch","Dutch","Dutch","Dutch","Dutch","Dutch","Dutch","Dutch","","","","Dutch","Dutch","Dutch","Dutch","Dutch","Dutch","Dutch","Polish","Polish",null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,"","","","","Einkauf","","Bauleiter mit Entscheiderfunktion","","","Bauleiter","","","","Bauleiter","Einkauf","Einkauf","","Einkauf","","conducteur","","Gebietsleiter","Betriebsleiter","","Projektleitung","Bauleiter","Projektleitung","","Empfang","Senior Project Engineer, Piping & Layout","","","Geschäftsführer","Innendienst","Projektleiter","","Architekt","Bauleiter","Statiker","","","Tiefbau","","Strategischer Einkauf","","","Geschäftsführung","GF","GF, Fokus auf Holzbau, hin und wieder HBS-05","","Kalkulation der Niederlassung Frankfurt","Architekt","Architektin","","","Bauleiter","Bauleiter","","Vertrieb","Kaufm. Vwltg","IT-Support & Administrator","PM Hochbau","GF","Geschäftsführer","Technischer Leiter","","Einkäuferin","","","","Projektleiter","Ingénieur Travaux Gros Oeuvre","Erschließung Tiefbau / Straße","","Abteilungsleiter / Prokurist / Gesellschafter","Junior Produktmanager im Bereich HBM/Ausbau","Projekt","","","","","","","","","","","","","","Einkauf","Bauleiter","BL","Pressesprecher","Obmudsmann A26","Architektin","Project Category Management SLS/LHV","","","Azubi Abteilung Verkauf","Conducteur de travaux","","","","Architekt","","","Bauleitung","Projektleitung","Projektleiter","Architektin","Auszubildende","Projektleitung","","","Bauleitung","","","","","Bauleiter","Kalkulation","","Bauleiter","","","Bauleitung","GF","","","Bauleiter","","GF Spezialtiefbau","","Einkauf","","","Projektleiter","","MA","Piping Enigineer","","Piping Engineer","Piping Engineer","Piping Engineer","Piping Engineer","Technischer Leiter","Bauleiter","","Bauabteilung",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"konstruktor, kierownik projektu (kontraktu)","konstruktor",null],["Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person","Contact Person"],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,"066315149","0951/9144-904","02572/89191","+493366-26541","+49 69 9593207-0","0611/9446619","+49 641 9313797","030 5861989 88","","","+49 (30) 89786-7249","09971 8554-0","07225/66-362","02871 241351128","04271/84-0","+49 8677 978112","+48 501 078 429","097716306512","07441 8995-0","","0961 67001-124","","+49 5321 56527","+494101-702123","0345 56376-56","+49 689415-250","","0341/149589 31","+49 421 79296-0","+49 1520 9077 171","+49 5247 9808-23","05284 383","+49 5642 6007 24","07933/471","06102 454500","+49 7937 / 322977-2","030 60260930","+49 7529 97499-0","09942/94899-0","+49 9281 8339995","09721 476100","+49 (0)2 61/8 08 06-35","06201 - 54201","+49 69 668110-0","03013882214","06421 982933","02208 4148","+49 4841 772 330","+49 (0) 48 41 - 772 330","06173 - 933 130","+49 69 95412539-16","0511 47402512","+49 (0) 7551 94 553 -26","07161 / 965978-13","","+49 8342 9610-0","+4935971-5040","+494471-980661","+49 4271 84 134","0043506265302","+49 2173 970 153","04131 288-3421","+49 6825 40410-0","07271-98912325","06921028950","039291/49898-3","0043506261345","+49 6171 95641-12","08272/9957-0","+49 203 75853-206","+4969714498810","","04131 288-3424","+49 (69)36 00 95-242","0234-92567-1124","+49 (69) 668110-913","+49 421 70824159","0341 222260","0341 989758 35","+49 30 349906-0","","","","","","","","","","","","06251 / 935633","05363/8561-10","","","+43(0)551426615","","030 60988470","030 89062330","08761/686-36","","+49 6171 956410","0203 75853 249","","0711/2804100-61","+493391400200","+49341 14990302","","0751 36195-14","","+49 531 38901248","04271/84-0","0341 355855-330","(+49) 03591 6860","","0 71 61 - 9 53 15-0","07150/4963","+493089699511","+49 3949 9452 12","05284 383","","","+49 30 68912472","030 498790 77","+495221 28020","+49595492470","","","04203/8048805","","","+4938726/20219","0043557468882215","+49 6797305-0","0841 95479-12","069 9210181 0","0641/98426816","0221/921637-71","","+49 9721 47610 12","+49 621 65901 480","+49 8723 20 3751","+49 621 65901 863","+49 621 65901 206","+49 621 65901 288","+49 6132 44378 160","+49 621 39732500","+49 30 223 422 88","0721/961415103","0341 656715 55",null,null,null,"00358 (0) 20 757 9200",null,null,null,null,null,null,null,null,"+31 548595121","","+31 20-632-3331","+31 1 1356 1593","+31 546480000","+31 497 57 31 33","+31735991541","+31 299398985","0523280800","0355383527","0614660000","+31 355383527","+31 497 573133","+31 318 - 57 07 39","+31 184 682 394","+31 6 27 032 142","+31 402114411","+31 492548555","+48 22 833-62-87 #112","+48 22 833-62-87 #112","+46 706826008"],[null,"","","","","015118258651","","01776733372","","","00436648225627","+49 (172) 1500373","0151 1505 4041","","","","+49 160 96852750","","0152 58807377","","+33 6 10 27 17 90","","+49 1522 385 462 7","+49 160 7470503","","","","0152/58807294","","","","","","+49 170 4454176","","0173 / 3180486","","0157/31598939","","","","","","","01602829920","015142348972","","","","","","+49 172 2010430","01722424504","","0171/1748009","","","","","","","+49 172 3595054","","01726046215","01782016397","01739458871","","","","0175/9315608","","","+33 627953592","","","0160 8280336","+49 1520 1674629","","","","","","","0163/3205440","","","","","","","","+491722575438","0173 / 7011313","+49 163 8561018","00436646010816841","00436646010810526","","","","","","","","","0176 84123452","","","","","","0170 7098595","","","","","","","","","+49 173 6114069","0173 5149175","015111017700","","","","","","0170 5553407","0175 3883434","","","+491737099875","","","","","","0172/3727006","","015730087816","","","+49 171 766 54 91","","","","","","","0172/7117912","","+34 686454322","","",null,"","","338.3956436","+39 3894305114","+39 3357765174","+39 3490677370","+39 3391019463","+39 340 6349697","","","","","","","","","","0653309144","","","","06-11737052","","+31 6 27 032 142","+31 651229411","+31 653535761","+48 501-698-924","",null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],["j.verdoorn@bouygues-construction.com","wilfried-muhl@t-online.de","mail@joseph-stiftung.de","teltenkoetter@gmx.de","mail@wkb-beeskow.de","joerg.hennig@swietelsky.at","kontakt@teambau-wiesbaden.de","pejic@besthouse.de","schiene@wvm.de","jonas.janke@muck-petzet.com","a.buchegger@ir-gruppe.com","Ina.Sonneborn@deuwo.com","platzer@alt-bau.de","info@kohlbecker.de","c.barde@te-strote.de","mkp@leymann-baustoffe.de","m.derer@grundner-bau.de","j.kolodziej@spsconstruction.pl","stephan.derleder@lupp.de","info@mg-statik.de","alain.robert@vinci-construction.fr","einkauf.hochbau@scharnagl.de","ralph.lichtfusz@leviat.com","sven.engelbrecher@bauking.de","info@grote-bau.de","info@strabag.de","info@gross-bau.de","martin.seifert@lupp.de","info@baywa-baustoffe.de","sieber@ninoustatari.com","andreas.faltus@citec.com","e.thiering@f-e.de","buekerbau@gmx.de","boeddeker@luecking.de","info@wengertsmanngmbh.de","Christian.Muehl@bilfinger.com","haussecker@teamtragwerk.de","mail@f-o-k.net","r.weber@leuthe-bau.de","info@brunner-architekten.de","hcp.hof@t-online.de","info@wz.de","hans-josef.heine@raabkarcher.de","rost-weinheim@t-online.de","Christian.polstermueller@saint-gobain.com","t.haftmann@filmtec.de","heidler.immobilien@arcor.de","engels@bauunternehmung-reinartz.de","fs@planungswerft.de","ts@planungswerft.de","buero@hofmannbau-kronberg.de","frisch@augprien.de","jordan@bbu-projekt.com","MHM@steimle-architekten.com","ruehle@sigler-schumer-spieth.de","info@henchion-reuter.de","roland.hartmann@hubert-schmid.de","info@bendl-hts.de","bbs-bau@t-online.de","nbe@leymann-baustoffe.de","spela.roze@porr.at","dariusz.tomczyk@halfen.de","Andre.stapel@sparkassen-hanse-immobilien.de","Sabine.Koehl@gustav-koehl.de","info@w-mh.de","info@oundh-gmbh.de","jacobi@jbr-bau.de","barbara.staber@porr.at","k.krueck@ig-bauwerk.de","info@reitenberger.de","d.kuduban@bauenundleben.com","info@pecan-development.de","guillaume.burg@vinci-construction.fr","henning.meyer@sparkassen-hanse-immobilien.de","Pruss@gross-partner.de","R.Passlick@zetcon.de","Christopher.weis@saint-gobain.com","meier@wirth-architekten.com","info@grk-holding.com","Isabel.evers@wuv-architekten.de","h.gscheidle@crp-bauingenieure.de","Petra.Muzic@idk-koeln.de","a.szakacs@statik-schur.de","R.Haeussermann@ernst-glaeser.de","heiner.apel@kathmann-bau.de","G.tebroke@luw.de","carl@ibbaum-dresden.de","d.klonek@sh-ing.de","martin.kramer@wernersobek.com","loebbert@t-p-ing.de","P.Scholz@fdu.de","kerstin.molling@2ssm.de","dreher@bbg-bensheim.de","florian.keck@deubau-wolfsburg.de","christoph.pollinger@asfinag.at","A26-Ombudsmann@asfinag.at","nina@innauer-matt.com","alexander.schweizer@nexans.com","timo.berg@tbbk.de","info@schnoerrarchitekten.de","teresa.voit@bauzentrum-schwarz.de","pierre.gadeceau@vinci-construction.fr","stein@ig-bauwerk.de","d.rammohan@bauenundleben.com","kuger@stud.fra-uas.de","f.boettle@steimle-architekten.com","info@prima-gruppe.com","kalkulation@leipziger-hochbau.de","selbach@architekturlokal.de","Burr@weber-bauunternehmen.de","roberto.galante@geigergruppe.de","kk@varnhorn-stindt.de","lpl@leymann-baustoffe.de","jens.cebulla@immvestwolf.de","jens.dolgner@slb-bautzen.de","otten@bwh-holdorf.de","steeb-bau@steeb-bau.de","hb@architekt-brehm.de","dominik.abonyi@ibus-architekten.de","norman.wachholz@bauking.de","buekerbau@gmx.de","furtunic@pro-kompakt-gmbh.de","info@fischer-stahlbau.de","info@maz-bau.de","info@ammar-bau.de","info@akd-bau.de","info@kreutzjans.de","k.ortynski@deurer-bau.de","info@deurer-bau.de","info@liason-bau.de","einkauf@mbbau.eu","kontakt@bum.info","info@bau-josl.de","c.riediger@ir-gruppe.com","info@neumann-wolf.de","info@roess.com","info@krieger-schramm.de","ja@teamsimon.de","Aleksandar.Tanovic@idk-koeln.de","Tim-Lucas94@web.de","mm@wz-befestigungssysteme.de","gerald.hornauer@spiratec.engineering.com","Francisco.hernandez-lopez@Lindner-Group.com","dominik.spill@spiratec-engineering.com","angelique.tschepigina@spiratec-engineering.com","andrej.laier@spiratec-engineering.com","michael.waechter@spiratec-engineering.com","künast@g.com","info@caerus-construction.de","h.vannoyy@bam.de","hausverwaltung@lewo.de","eduardo.yanez@halfen.es","frieda.nevens@leviat.com","ilse.vanderveken@leviat.com","juha.rinta-seppala@fennovoima.fi","michele.vicentini@smingegneria.it","giuseppe.dellaporta@medingegneria.com","fabio.betti@ph5e5.it","giuseppe.musinu@enser.it","tecnico2@otsrl.net","martina.iafrate@studioteco.it","cantiere@tollotcostruzioni.it","f.deferdinando@nbispa.com","erikderuiter83@hotmail.com","bouwbedrijfsoest@gmail.com","calculatie@vdleij.nl","jverdonk@rijkbouw.nl","j.nijland@groothuis.nl","calculatie@montfortbouw.nl","erik@bodavi.nl","nico.prins@kakes-deurwaarder.nl","joep.snippe@bmn.nl","bob@vanderwardtbouw.nl","v.theuns@denijssoffers.nl","Willem@vanderwardtbouw.nl","j.stofmeel@montfortbouw.nl","b.delange@bouwbedrijfvandevliert.nl","p.meerkerk@lagendijk-bouw.nl","maarten@scheperbouw.nl","paul.linthorst@wesselman-info.nl","henny.lammers@wesselman-info.nl","ld@bwl-projekt.pl","ks@bwl-projekt.pl","louise@aakon.se"],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],["CN","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","ES","ES","ES","FI","IT","IT","IT","IT","IT","IT","IT","IT","NL","NL","NL","NL","NL","NL","NL","NL","NL","NL","NL","NL","NL","NL","NL","NL","NL","NL","PL","PL","SE"],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,"Aula Str. 8","Hans-Birkmayr-Straße 65","Dorfstraße 13","Bodelschwinghstr. 40","Hahnstr. 70","Kreuzberger Ring 44a","Neue Bäue 8","Fasanenstr. 42","Böttgerstr. 16","Johann-Schertler-Str. 1","Mecklenburgische Straße 57","Bierlweg 16","Hildastraße 20","Schlavenhorst 89","Nienburger Str. 105-133","Wackerstraße 31","Ściegiennego 270","Industriestrasse 6","Beethofenstraße 13","","Oskar-von-Miller-Str. 18","Am Kiefernbühl 20","Bornhardtstr. 1 a","Prisdorfer Straße 96","Freiimfelde 14","Dudweilerstraße 80","Industriestrasse 6","Dauthestr. 6","Osterdeich 11","Ludwig-Erhard-Str. 21","","Brinkstr. 8","Elsener Strasse 20","Röteweg 2","An der Gehespitz 50","Marktplatz 2","Klosterstr. 44","Eibeschstraße 32","Kandlbach 1","Fabrikzeile 21","Landwehrstrasse 44","Carl-Zeiss-Straße 1","Höhenweg 4","Hafeninsel 9","Am Kleinen Wannsee 5c","Goßfeldener Str. 30","Am Schildchen 23","Friedrichstraße 62","Friedrichstraße 62","Industriestr. 5","Lurgiallee 5","Lutherstr. 27","Marktplatz 6","Willi Bleicher Str. 1","Kaiserdamm 12","Iglauer Straße 2","Schulgasse 6","Fontanestr. 13","Nienburger Str. 105-133","Thalerhofstrasse 88","teststr. 30","Schröderstraße 16","Heusweilerstr. 96","Cany-Barville-Strasse 4","Bismarckstrasse 189","Hospitalstraße 2A","Thalerhofstrasse 88","Zimmersmühlenweg 11","Lindenstr. 5","Ehinger Straße 106","Bockenheimer Landstr. 72","","Schröderstraße 16","Bockenheimer Landstr. 47","Lennershofstraße 162","Hafeninsel 9","Mathildenstraße 17","Wächterstr. 15","Weißenfelser Str. 65 A","Darwinstr. 15","Sechtemer Str. 5","Talliner Str. 1","Gartenstraße 14","Westerstr. 93","Gelsenkirchener Str. 4","","Am Schloss Schellenberg 6","Darmstädter Landstraße 125","Alte Säge 1","Neukirchener Straße 46","","Darmstädter Straße 123","Dieselstr. 21","","","Kriechere 70","Kabelkamp 20","Klosterstraße 44","Drakestr. 53","Degernpoint F1","","Zimmersmühlenweg 11","Ehinger Straße 106","Nibelungenplatz 1","Marktplatz 6","Junckerstraße 10","Wurzener Straße 77","Eisenbahnstraße 17","Ravenburger Straße 16","Lochhausener Straße 203","Steinweg 37 (Eingang Ritterbrunnen)","Nienburger Str. 105-133","Elsterstr. 26","Gewerbepark 17","Steinbrüggen 7","Steebstraße 1","Saarstr. 32","Alt Tempelhof 18","Schermcker Straße 17","Brinkstr. 8","Industriestraße 9","Carl-Legien-Straße 16","Berliner Str. 100","Emmenthaler Str 98","Mindener Str. 82","Herrenstätter Str. 10","Siebenbornstraße 22","Siebenbornstraße 22","Schüsselkorb 23","Bahnhofstraße 19","Ursulastr. 3","Dammschleife 16","Johann-Schertler-Str. 1","Schönstrasse 10","Nürnberger Straße 34","Altenhöferallee 68","Lahnstr. 11a","Sechtemer Str. 5","Saalfelder Straße 32","Landwehrstraße 44","Donnersbergweg 2","Bahnhofstrasse 29","Donnersbergweg 2","Donnersbergweg 2","Donnersbergweg 2","Donnersbergweg 2","Sandhoferstr.96","Kurfürstendamm 193 A","Heerdter Lohweg 35","Cöthner Str. 62","Calle Ignacio Zuloaga 20","","","Salmisaarenaukio 1","Via dell' artigianato, 7","Via Tappia 166","Via Foresti 1","Viale Baccarini,29","Via 11 Settembre 2001","Via Tiarini,22","","Via Bona65","Bloeme Weide 18","Soesterbergsestraat 148","Distelweg 80B","Daniëlsweg 1","Ootmarsumseweg 12","Standerdmolen 11","Ammerzodenseweg 27","Slobbeland 10","Bruchterweg 103","Eemweg 29b","Kooiweg 20","Eemweg 29b","Standerdmolen 11","Ribesstraat 17","Boezem 4","Proefsteen 2","Elzentlaan 27","Aarle-Rixtelseweg 14","Jana Nowaka-Jeziorańskiego 7/214","Jana Nowaka-Jeziorańskiego 7/214","Flöjelbergsgatan 8A"],["Shanghai","Alsfeld","Bamberg","Emsdetten","Beeskow","Frankfurt a.Main","Wiesbaden","Gießen","Berlin","Berlin","Lauterach","Berlin","Pemfling","Gaggenau","Bocholt","Sulingen","Burghausen","Kielce","Bad Neustadt","Freudenstadt","Paris","Weiden/Opf.","Mannheim","Goslar","Pinneberg","Halle","St. Ingbert","Bad Neustadt","Leipzig","Bremen","Oberursel (Taunus)","Halle/Westf.","Marienmünster","Paderborn","Creglingen","Neu-Isenburg","Dörzbach","Berlin","Schlier","Viechtach","Hof","Schweinfurt","Koblenz","Weinheim","Offenbach","Berlin Wannsee","Marburg","Niederkassel","Husum","Husum","Kronberg im Taunus","Frankfurt am Main","Hannover","Stuttgart","Göppingen","Berlin","Marktoberdorf","Hohnstein","Cloppenburg","Sulingen","Unterpremstätten","Düsseldorf","Lüneburg","Illingen","Wörth am Rhein","Offenbach am Main","Calbe","Unterpremstätten","Oberursel (Taunus)","Laugna","Duisburg","Frankfurt","Paris","Lüneburg","Frankfurt","Bochum","Offenbach","Bremen","Leipzig","Leipzig","Berlin/Charlottenburg","Köln","Rostock","Aspach","Bremen","Borken","Dresden","Essen","Frankfurt am Main","Kirchzarten","Schrecksbach","München","Bensheim","Wolfsburg","Wien","Wien","Bezau","Hannover","Berlin","Berlin","Moosburg an der Isar","Paris","Oberursel (Taunus)","Duisburg","Frankfurt am Main","Stuttgart","Neuruppin","Leipzig","Ravensburg","Schlier","München","Braunschweig","Sulingen","Leipzig","Kubschütz / OT Litten","Holdorf","Rechberghausen","Hemmingen","Berlin","Oschersleben","Marienmünster","Eschborn","Offenbach","Berlin","Berlin","Herford","Lorup","Simmern","Simmern","Bremen","Hauzenberg","Nordhorn","Spornitz","Lauterach","München","Ingolstadt","Frankfurt","Gießen","Köln","Frankfurt am Main","Schweinfurt","Ludwigshafen am Rhein","Arnstorf","Ludwigshafen am Rhein","Ludwigshafen am Rhein","Ludwigshafen am Rhein","Ludwigshafen am Rhein","Mannheim","Berlin","Düsseldorf","Leipzig","Vaciamadrid","Madrid","Madrid","Helsinki","Sommacampagna","Saviano","CASTREZZATO","Faenza","MIRANDOLA","Bologna","PONTE NELLE ALPI","ROMA","Haarle","Soest","Amsterdam","Heinkenszand","Harbrinkhoek","Bergeijk","Hedel","Volendam","Hardenberg","Eemnes","Hoogerheide","Eemnes","Bergeijk","Ederveen","Streefkerk","Malden","Eindhoven","Helmond","Warszawa","Warszawa","Mölndal"],["nb","36304","96050","48282","15848","60528","65205","35390","10623","13357","A- 6923","14197","93482","76571","46395","27232","84489","","97616","72250","","92637","68305","38644","25421","06112","66386","97616","04317","28203","61440","33790","37696","33102","97993","63263","74677","10179","88281","94234","95028","97421","56070","69469","63067","14109","35041","53859","25813","25813","61476","60439","30171","70173","73033","14057","87616","01848","49661","27232","8141","40217","21335","66557","76744","63067","39240","8141","61440","86502","47249","60323","","21335","60325","44801","63067","28203","04107","04229","10589","50968","18107","71546","28199","46325","01157","45134","60598","79199","34637","80287","64625","38446","","","6870","30179","10179","12205","85368","","61440","47249","60318","70173","16816","04315","88212","88281","81249","38100","27232","04109","02627","49451","73098","71282","12099","39387","37696","65760","63073","13189","13409","32049","26901","56337","56337","28195","94051","48529","19372","A- 6923","81543","85055","60438","35398","50968","65931","97421","67059","94424","67059","67059","67059","67059","68305","10707","40549","04155","8755","E-28522","E-28522","180","37066","80039","25030","48018","41037","40129","32014","156","7448 PX","3768 MD","1001 NN","4451 HP","7615 PL","5571 RN","5321 GA","1131 AB","7772 BK","3755 LC","4631 SZ","3755 LC","5571 RN","6744 XA","2959 AE","6581 HX","5611 LG","5707 GL","03-984","03-984","431 37"],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],[279,289,99999,90135,90105,289,289,289,90172,99999,140,90172,293,90176,99999,301,309,90202,289,311,99999,293,289,305,90105,99999,99999,99999,99999,90149,289,301,305,289,99999,289,90176,99999,99999,99999,99999,311,289,289,289,289,289,99999,90149,90149,289,289,90106,90176,90176,99999,99999,90105,90105,301,138,90018,90149,289,289,289,305,138,90200,90135,307,99999,99999,90149,289,99999,289,90149,90172,90172,90172,99999,99999,99999,99999,99999,99999,99999,99999,99999,99999,309,90200,305,138,138,99999,99999,90172,90172,309,99999,90200,307,90200,99999,90105,90105,99999,99999,99999,305,301,99999,99999,299,99999,90176,90105,305,305,289,289,90164,99999,90105,90105,99999,99999,99999,99999,90105,90105,140,90135,99999,422,90200,99999,289,311,99999,99999,289,289,289,289,289,99999,90176,99999,99999,99999,99999,90197,99999,99999,90051,173,173,173,173,176,90154,90154,90154,90154,90154,90154,90154,90154,90150,90150,90150,90154,90154,90154,90154,90154,90154,90154,99999,99999,357],[null,"","","","","","","","","","Dipl. Ing.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Dr.","","","","","","","","Dipl.-Ing.","Dipl.-Ing. Architekt","","","","","","","","","","","","","","","","","","","","","","","Dipl.-Ing.","","","","","","","","","","","","","","","","","","","Mag. M.A.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Dipl. Ing.","","","","","","","","","","","","","","","","","",null,null,null,null,"Ing.","Ing.","Arch.","","","ING","SIG",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],["CON00135959","CON00136873","CON00136536","CON00136515","CON00136445","CON00136417","CON00136408","CON00136407","CON00136381","CON00136370","CON00136366","CON00136362","CON00136340","CON00136324","CON00136264","CON00136257","CON00136207","CON00136203","CON00136194","CON00136191","CON00136187","CON00136183","CON00136134","CON00136118","CON00136078","CON00136066","CON00136065","CON00136041","CON00136039","CON00136037","CON00136035","CON00136033","CON00136026","CON00136016","CON00135980","CON00135958","CON00135941","CON00135873","CON00135871","CON00135861","CON00135859","CON00135849","CON00135848","CON00135841","CON00135834","CON00135815","CON00135809","CON00135801","CON00135796","CON00135795","CON00135792","CON00135791","CON00135772","CON00135766","CON00135765","CON00135703","CON00135669","CON00135663","CON00135662","CON00135660","CON00135651","CON00135613","CON00135609","CON00135607","CON00135606","CON00135595","CON00135581","CON00135556","CON00135542","CON00135539","CON00135527","CON00135524","CON00135514","CON00135512","CON00135508","CON00135493","CON00135482","CON00135467","CON00135464","CON00135463","CON00135459","CON00135442","CON00135424","CON00135410","CON00135408","CON00135404","CON00135399","CON00135397","CON00135388","CON00135387","CON00135377","CON00135355","CON00135342","CON00135341","CON00135326","CON00135325","CON00135321","CON00135279","CON00135277","CON00135252","CON00135251","CON00135239","CON00135235","CON00135221","CON00135211","CON00135210","CON00135208","CON00135205","CON00135197","CON00135196","CON00135195","CON00135188","CON00135170","CON00135151","CON00135119","CON00135060","CON00134966","CON00134963","CON00134946","CON00134935","CON00134926","CON00134925","CON00134921","CON00134920","CON00134916","CON00134899","CON00134897","CON00134889","CON00134888","CON00134878","CON00134864","CON00134851","CON00134850","CON00134845","CON00134828","CON00134817","CON00134784","CON00134731","CON00134729","CON00134643","CON00134635","CON00133341","CON00133213","CON00133126","CON00133125","CON00133124","CON00133123","CON00133097","CON00110046","CON00108758","CON00107683","CON00136894","CON00136895","CON00136896","CON00117857","CON00136459","CON00136458","CON00136397","CON00136378","CON00136320","CON00135261","CON00134939","CON00134655","CON00136504","CON00136463","CON00136336","CON00136328","CON00136168","CON00136086","CON00136030","CON00136024","CON00136002","CON00136000","CON00135986","CON00135937","CON00135612","CON00135602","CON00135349","CON00134927","CON00134682","CON00134681","CON00136659","CON00136568","CON00135497"],[null,"","","Design","","","","","","","Underground construction","","","","","Sales","Purchase","","","Design","","","Project","","","","","Construction","Project","Reception","Project","Production","","","Administration","","","","","","Construction","Purchase","","","","Production","","","Design","Design","","","Design","","","Design","","","","Sales","Calculation","","Design","","","","","Purchase","","","","","","Project","","Underground construction","","Design","","","Management","","","","","","","","","","Design","Purchase","","","Project","Project","","Purchase","","","Sales","","","","","Design","","","","","","","Sales","","","","","","","","","","","","","","","","","","Purchase","","","Management","","Purchase","","","","","Sales","Project","Calculation","Project","Project","Project","Project","Project","","","","Direction","","","Design","","","","Construction","Design","Design","Purchase","Construction",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Design","Design","Design"],[null,"","","Decision Maker","","","","","","","Employee","","","","","Employee","Employee","Employee","","Employee","","","Employee","","","","","Leader","Leader","Employee","Leader","Employee","","Decision Maker","Backoffice","","Employee","","","","Employee","Employee","","","","","","","Decision Maker","Decision Maker","","","Employee","","","Employee","","","","Backoffice","Employee","","Employee","","","","","Employee","","","","","","Employee","","Leader","","Employee","","","Decision Maker","","","","Leader","","","","","","","Employee","","","Employee","Employee","","Decision Maker","","","Employee","","","","","","","","","","","","Employee","","","","","","","","","","","Employee","","","","","","","","","","Leader","","Backoffice","","","","","Employee","Leader","Leader","Leader","Leader","Leader","Leader","Leader","","","",null,null,null,"Leader","","","","Area Rep","Decision Maker","Area Rep","Area Rep","Employee",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"Decision Maker","Employee",null],["Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Last_Name missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing","Account_External_Key missing"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>External_Key<\/th>\n <th>Contact_ID<\/th>\n <th>Status<\/th>\n <th>Title<\/th>\n <th>Academic_Title<\/th>\n <th>Additional_Academic_Title<\/th>\n <th>Prefix<\/th>\n <th>First_Name<\/th>\n <th>Last_Name<\/th>\n <th>Additional_Last_Name<\/th>\n <th>Initials<\/th>\n <th>Middle_Name<\/th>\n <th>Gender<\/th>\n <th>Marital_Status<\/th>\n <th>Language<\/th>\n <th>Nick_Name<\/th>\n <th>Date_of_Birth<\/th>\n <th>Birth_Name<\/th>\n <th>Contact_Permission<\/th>\n <th>Profession<\/th>\n <th>Perception_Of_Company<\/th>\n <th>Account_External_Key<\/th>\n <th>Account_ID<\/th>\n <th>Building<\/th>\n <th>Floor<\/th>\n <th>Room<\/th>\n <th>Job_Title<\/th>\n <th>Function<\/th>\n <th>Department<\/th>\n <th>Department_From_Business_Card<\/th>\n <th>VIP_Contact<\/th>\n <th>Phone<\/th>\n <th>Mobile<\/th>\n <th>Fax<\/th>\n <th>EMail<\/th>\n <th>EMail_Invalid<\/th>\n <th>Best_Reached_By<\/th>\n <th>CountryRegion<\/th>\n <th>State_Text_Updatable<\/th>\n <th>House_Number<\/th>\n <th>Street<\/th>\n <th>City<\/th>\n <th>Postal_Code<\/th>\n <th>State<\/th>\n <th>Contact_Owner_External_Key<\/th>\n <th>Contact_Owner_ID<\/th>\n <th>Academic_title<\/th>\n <th>Former_CRM_reference<\/th>\n <th>Contact_Department<\/th>\n <th>Contact_Function<\/th>\n <th>error<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":46},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
</div>
|
|
<div id="codelist" class="section level5">
|
|
<h5>Codelist</h5>
|
|
</div>
|
|
<div id="length" class="section level5">
|
|
<h5>Length</h5>
|
|
<div id="htmlwidget-6fee21118a5185c17f4c" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-6fee21118a5185c17f4c">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["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","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44"],["CON00136403","CON00135443","CON00135267","CON00134798","CON00134769","CON00134718","CON00132873","CON00132779","CON00113993","CON00110734","CON00109618","CON00108643","CON00108565","CON00108558","CON00108557","CON00107964","CON00107789","CON00135457","CON00135332","CON00135303","CON00115242","CON00114651","CON00111710","CON00110589","CON00108594","CON00108588","CON00107378","CON00136899","CON00136175","CON00135271","CON00136414","CON00121734","CON00121712","CON00121685","CON00121357","CON00136649","CON00129726","CON00136649","CON00136451","CON00135680","CON00134787","CON00129726","CON00127302","CON00135569"],[51,43,46,43,45,48,50,48,57,60,43,48,48,46,43,47,48,16,21,16,15,15,15,15,15,15,15,12,21,12,50,12,11,12,12,43,45,21,21,11,11,15,11,61],[40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,10,10,10,10,10,10,10,10,10,10,10,10,10,40,10,10,10,10,40,40,10,10,10,10,10,10,40],["Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","Job_Title","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","Job_Title","House_Number","House_Number","House_Number","House_Number","Job_Title","Job_Title","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","Job_Title"],["Planung Oberleitungsanlagen und Bahnstromversorgung","Leitung Verkaufsinnendienst RBW Fertigteile","Advanced Mechanical Engineer & Design Engineer","Fachbereich Anlagenplanung Prozessindustrie","Geschäftsführer, Abteilungsleiter Engineering","Bachelorand Standardisierung Befestigungstechnik","Professional Engineer Piping & Process Engineering","Operational Buyer Procurement Services EMEA SER2","Tragwerkspl. hpt. Gewerbe / Industrie / aber auch Whg.bau","Konstr. Ing.bau - FBleitung Statisch-Konstruktive Prüfung K1","Externer Architekt Jan Matthies Ing.ges mbH","Projektmanager für NordProject NL HH & NL Berlin","Assist. GF / Koordination FLucht & Rettungspläne","Bauzeichner Flucht & Rettungswege, Brandschutz","Bauphy. Simulation Rauch & Wärmeentwicklung","Prokurist / Prüfer Hochbau / Büroleitung Bremen","Projekt- & Personalkoordinatorin, QM-Beauftragte","400/Hausnummer 1","3,Gewerbepark Friedb.","400/Hausnummer 1","41 - 43 (4. OG)","41 - 43 (4. OG)","41 - 43 (4. OG)","41 - 43 (4. OG)","41 - 43 (4. OG)","41 - 43 (4. OG)","41 - 43 (4. OG)","340 - Km1155","1 B, liikehuoneisto 8","7, 12.kerros","Layout & Piping Stress Analysis & Support Engineer","14d Gebouw 1","3 Weena 723","14d Gebouw 1","14d Gebouw 1","kierownik projektu (kontraktu), konstruktor","architekt, konstruktor, właściciel (wspólnik)","22, piętro 7, lokal 8","1-go Maja 87 lok. 315","39A lok. 13","3 maja 2/13","2 Tarnogórska 2","31/37 lok.6","Inköpschef internationell handel/kategorichef ingjutningsgods"],["DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","ES","FI","FI","IT","NL","NL","NL","NL","PL","PL","PL","PL","PL","PL","PL","PL","SE"],["Franz","Rainer","Sebastian","Silvio","Jörg","Jannik","Aleksandar","Frank","Ingo","Christian","Jan","Gerd","Stefanie","Anke","Torben","Matheus","Isabel","Bernd","Andreas","","Lutz","Björn","Astrid","Anke","","Tawab","Charlotte","Jose","Jaakko","Ville","Umberto","Bob","Mark","Hans","Jaimy","Mariusz","Jacek","Mariusz","Jacek","Michał","Wojciech","Jacek","Magdalena","Jamil"],["Müller","Hausner","Ebert","Koebe","Herrmann","Epp","Cajetinac","Bienert","Mathyl","Gehmert","Matthies","Große","Bargsten","Rehders","Eilers","Groß","König","Iwers","Hofmann","Mussar","Schlüter","Howe","Falkenstein","Hämmerling","Bortje","Ghanizada","Poels (ehem. Schwarzkopf)","de la Iglesia","Laamanen","Kantelinen","Rostoni","Zinnekeveld","van Stijn","Benschop","van Batenburg","Nowik","Mikoś","Nowik","Wnuk","Walendzik","Nowak","Mikoś","Kucharz","Dagher"],["","","","","Dipl.-Ing.","","","","","Dr.-Ing.","","","","","B. Sc. Physiker","Dipl.-Ing.","","","","","","","","","","","",null,null,null,null,"","Ir.","","","","","","","mgr inż.","","","",null]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>rowval<\/th>\n <th>ival<\/th>\n <th>rval<\/th>\n <th>colnm<\/th>\n <th>colval<\/th>\n <th>cntr<\/th>\n <th>fname<\/th>\n <th>lname<\/th>\n <th>owner<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":[2,3]},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="accounts" class="section level3">
|
|
<h3>Accounts</h3>
|
|
<div id="template-1" class="section level4">
|
|
<h4>Template</h4>
|
|
<p>SAP templates available:</p>
|
|
<div id="htmlwidget-aeb0a77566b0fcaf48b4" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-aeb0a77566b0fcaf48b4">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["1","2","3","4","5","6","7","8","9","10","11","12","13","14"],["Account","Account_Addresses","Account_Contact_Persons","Account_Identification","Account_International_Version","Account_Sales_Data","Account_Skills","Account_Tax_Numbers","Account_Team","Account_Notes","Account_Visiting_Hours","Account_Visits_Details","Account_Visiting_Hours_Weekly_R","Account_Visiting_Times"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>Sheet.Name<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"order":[],"autoWidth":false,"orderClasses":false,"columnDefs":[{"orderable":false,"targets":0}]}},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="summary-of-errors-1" class="section level4">
|
|
<h4>Summary of Errors</h4>
|
|
<div id="htmlwidget-56f1f622114e7519150a" style="width:100%;height:500px;" class="highchart html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-56f1f622114e7519150a">{"x":{"hc_opts":{"chart":{"reflow":true,"inverted":true},"title":{"text":"Expect vs Actual"},"yAxis":{"title":{"text":"Actual"},"type":"linear"},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"ErrorSumm_Account"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0,"showInLegend":false},"treemap":{"layoutAlgorithm":"squarified"},"scatter":{"marker":{"symbol":"circle"}},"pie":{"center":["70%","70%"],"size":200,"dataLabels":{"enabled":false},"showInLegend":true}},"series":[{"group":"group","data":[{"Country":"DE","Expected":3481,"Actual":3481,"Pending":0,"y":3481,"target":3481,"name":"DE"},{"Country":"IT","Expected":2585,"Actual":2585,"Pending":0,"y":2585,"target":2585,"name":"IT"},{"Country":"NL","Expected":646,"Actual":646,"Pending":0,"y":646,"target":646,"name":"NL"},{"Country":"PL","Expected":339,"Actual":339,"Pending":0,"y":339,"target":339,"name":"PL"},{"Country":"FI","Expected":34,"Actual":34,"Pending":0,"y":34,"target":34,"name":"FI"},{"Country":"SE","Expected":31,"Actual":31,"Pending":0,"y":31,"target":31,"name":"SE"},{"Country":"ES","Expected":11,"Actual":11,"Pending":0,"y":11,"target":11,"name":"ES"},{"Country":"CN","Expected":9,"Actual":9,"Pending":0,"y":9,"target":9,"name":"CN"}],"type":"bullet","color":"black","name":"Observations (Output)"},{"group":"group","data":[{"Country":"DE","Expected":3481,"Actual":3481,"Pending":0,"y":0,"name":"DE"},{"Country":"IT","Expected":2585,"Actual":2585,"Pending":0,"y":0,"name":"IT"},{"Country":"NL","Expected":646,"Actual":646,"Pending":0,"y":0,"name":"NL"},{"Country":"PL","Expected":339,"Actual":339,"Pending":0,"y":0,"name":"PL"},{"Country":"FI","Expected":34,"Actual":34,"Pending":0,"y":0,"name":"FI"},{"Country":"SE","Expected":31,"Actual":31,"Pending":0,"y":0,"name":"SE"},{"Country":"ES","Expected":11,"Actual":11,"Pending":0,"y":0,"name":"ES"},{"Country":"CN","Expected":9,"Actual":9,"Pending":0,"y":0,"name":"CN"}],"type":"pie","name":"Pending (Major Issues)"}],"xAxis":{"type":"category","title":{"text":"Country"},"categories":null},"subtitle":{"text":"Pie shows number of major issues identified"}},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="error-by-template-1" class="section level4">
|
|
<h4>Error by template</h4>
|
|
<div id="htmlwidget-974a8ccfbca4a58e2ee8" style="width:100%;height:500px;" class="highchart html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-974a8ccfbca4a58e2ee8">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Error Count"},"yAxis":{"title":{"text":"Number of errors"}},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"Error_Account"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0},"treemap":{"layoutAlgorithm":"squarified"},"column":{"stacking":"normal"},"lang":{"drillUpText":"Back"}},"xAxis":{"type":"category"},"series":[{"group":"group","data":[{"name":"DE","y":1,"drilldown":"de"},{"name":"CN","y":2,"drilldown":"cn"},{"name":"ES","y":2,"drilldown":"es"},{"name":"FI","y":3,"drilldown":"fi"},{"name":"NL","y":4,"drilldown":"nl"},{"name":"IT","y":7,"drilldown":"it"},{"name":"PL","y":9,"drilldown":"pl"}],"type":"column","name":"Country View","showInLegend":false}],"drilldown":{"allowPointDrilldown":true,"series":[{"id":"pl","type":"column","data":[{"name":"Length error","y":9,"drilldown":"pl_length error"}],"name":"High Level Error"},{"id":"it","type":"column","data":[{"name":"Length error","y":7,"drilldown":"it_length error"}],"name":"High Level Error"},{"id":"nl","type":"column","data":[{"name":"Length error","y":4,"drilldown":"nl_length error"}],"name":"High Level Error"},{"id":"fi","type":"column","data":[{"name":"Length error","y":3,"drilldown":"fi_length error"}],"name":"High Level Error"},{"id":"cn","type":"column","data":[{"name":"Length error","y":2,"drilldown":"cn_length error"}],"name":"High Level Error"},{"id":"es","type":"column","data":[{"name":"Length error","y":2,"drilldown":"es_length error"}],"name":"High Level Error"},{"id":"de","type":"column","data":[{"name":"Length error","y":1,"drilldown":"de_length error"}],"name":"High Level Error"},{"id":"de_length error","type":"column","data":[["House_Number",1]],"name":"Deep Dive"},{"id":"cn_length error","type":"column","data":[["House_Number",2]],"name":"Deep Dive"},{"id":"es_length error","type":"column","data":[["House_Number",2]],"name":"Deep Dive"},{"id":"fi_length error","type":"column","data":[["House_Number",3]],"name":"Deep Dive"},{"id":"nl_length error","type":"column","data":[["House_Number",4]],"name":"Deep Dive"},{"id":"it_length error","type":"column","data":[["House_Number",7]],"name":"Deep Dive"},{"id":"pl_length error","type":"column","data":[["House_Number",9]],"name":"Deep Dive"}]},"subtitle":{"text":"Click on bar for deep dive"}},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="errors-in-details-1" class="section level4 tabset tabset-pills">
|
|
<h4 class="tabset tabset-pills">Errors in details</h4>
|
|
<div id="mandatory-1" class="section level5 tabset tabset-pills">
|
|
<h5 class="tabset tabset-pills">Mandatory</h5>
|
|
<div id="account" class="section level6">
|
|
<h6>Account</h6>
|
|
<div id="htmlwidget-63ddafd9e1be787de760" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-63ddafd9e1be787de760">{"x":null,"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="account-team" class="section level6">
|
|
<h6>Account Team</h6>
|
|
<div id="htmlwidget-abbab67b1f209eccdf6b" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-abbab67b1f209eccdf6b">{"x":null,"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
</div>
|
|
<div id="codelist-1" class="section level5">
|
|
<h5>Codelist</h5>
|
|
</div>
|
|
<div id="length-1" class="section level5">
|
|
<h5>Length</h5>
|
|
<div id="htmlwidget-87ab0217be7555a4e792" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-87ab0217be7555a4e792">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["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","28"],["CN000002","CN000005","MM64433","ES000001","ES000005","FI000024","FI000018","FI000013","IT000093","IT001167","IT001547","IT001897","IT001919","IT002209","IT002755","NL77806847","NL77829976","NL000615","NL000414","PL000018","PL000027","PL000068","PL000113","PL000178","PL000183","PL000348","PL10991","PL15122"],[32,59,15,11,12,13,21,12,12,12,11,13,12,16,12,12,11,16,21,11,19,11,21,21,12,13,15,11],[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10],["House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number","House_Number"],["3,Lane 4,Sanzhou industry street","601, Block D, Vantone Centre, No. A6, Chaoyangmenwai Avenue","41 - 43 (4. OG)","340, km1156","340 - Km1155","91, 4th floor","1 B, liikehuoneisto 8","7, 12.kerros","101 km 22,24","1 Palazzo E1","27 km 0,900","4 Z.A.Lotto 4","131 km10,800","85 Venafrana 144","1 Palazzo E1","14d Gebouw 1","3 Weena 723","230 | studio 2.1","136 | 3e verd. | U.14","39A lok. 13","1000 Lecia PP 4/318","3 maja 2/13","1-go Maja 87 lok. 315","22, piętro 7, lokal 8","41-43 lok 26","8/10 lok. 118","2 Tarnogórska 2","31/37 lok.6"],["CN","CN","DE","ES","ES","FI","FI","FI","IT","IT","IT","IT","IT","IT","IT","NL","NL","NL","NL","PL","PL","PL","PL","PL","PL","PL","PL","PL"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>rowval<\/th>\n <th>ival<\/th>\n <th>rval<\/th>\n <th>colnm<\/th>\n <th>colval<\/th>\n <th>cntr<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":[2,3]},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="projects" class="section level3">
|
|
<h3>Projects</h3>
|
|
<div id="template-2" class="section level4">
|
|
<h4>Template</h4>
|
|
<p>SAP templates available:</p>
|
|
<div id="htmlwidget-e85ffe75768534bdaf0c" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-e85ffe75768534bdaf0c">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["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"],["Opportunity","Opportunity_Account_Team_Party_","Opportunity_Preceding_and_Follo","Opportunity_Competitor_Party_In","Opportunity_EndBuyer_Contact_Pa","Opportunity_External_Party_Info","Opportunity_Installed_Object","Opportunity_Product","Opportunity_Other_Party_Informa","Opportunity_Party_Information","Opportunity_Payer_Contact_Party","Opportunity_Product_Recipient_C","Opportunity_Prospect_Contact_Pa","Opportunity_Revenue_Splits","Opportunity_Sales_Employee_Part","Opportunity_Sales_Partner_Party","Opportunity_Sales_Team_Party_In","Opportunity_Notes","Opportunity_Competitor_Product","Contact_Party_Information","Opportunity_Item_Party_Informat","Opportunity_Product_Quantity_Pl","Opportunity_Product_Revenue_Pla","Opportunity_Product_Notes","Opportunity_Header_Revenue_Plan"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>Sheet.Name<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"order":[],"autoWidth":false,"orderClasses":false,"columnDefs":[{"orderable":false,"targets":0}]}},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="summary-of-errors-2" class="section level4">
|
|
<h4>Summary of Errors</h4>
|
|
<div id="htmlwidget-6b290fe8984ada17b361" style="width:100%;height:500px;" class="highchart html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-6b290fe8984ada17b361">{"x":{"hc_opts":{"chart":{"reflow":true,"inverted":true},"title":{"text":"Expect vs Actual"},"yAxis":{"title":{"text":"Actual"},"type":"linear"},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"ErrorSumm_Project"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0,"showInLegend":false},"treemap":{"layoutAlgorithm":"squarified"},"scatter":{"marker":{"symbol":"circle"}},"pie":{"center":["70%","70%"],"size":200,"dataLabels":{"enabled":false},"showInLegend":true}},"series":[{"group":"group","data":[{"Country":"DE","Expected":38847,"Actual":38847,"Pending":0,"y":38847,"target":38847,"name":"DE"},{"Country":"PL","Expected":25188,"Actual":25182,"Pending":6,"y":25182,"target":25188,"name":"PL"},{"Country":"NL","Expected":18228,"Actual":18222,"Pending":6,"y":18222,"target":18228,"name":"NL"},{"Country":"DE","Expected":12949,"Actual":12949,"Pending":0,"y":12949,"target":12949,"name":"DE"},{"Country":"IT","Expected":10311,"Actual":10311,"Pending":0,"y":10311,"target":10311,"name":"IT"},{"Country":"PL","Expected":8396,"Actual":8394,"Pending":2,"y":8394,"target":8396,"name":"PL"},{"Country":"ES","Expected":6795,"Actual":6795,"Pending":0,"y":6795,"target":6795,"name":"ES"},{"Country":"NL","Expected":6076,"Actual":6074,"Pending":2,"y":6074,"target":6076,"name":"NL"},{"Country":"DE","Expected":5295,"Actual":5295,"Pending":0,"y":5295,"target":5295,"name":"DE"},{"Country":"PL","Expected":4438,"Actual":4437,"Pending":1,"y":4437,"target":4438,"name":"PL"},{"Country":"IT","Expected":3437,"Actual":3437,"Pending":0,"y":3437,"target":3437,"name":"IT"},{"Country":"PL","Expected":2418,"Actual":2418,"Pending":0,"y":2418,"target":2418,"name":"PL"},{"Country":"NL","Expected":2316,"Actual":2314,"Pending":2,"y":2314,"target":2316,"name":"NL"},{"Country":"ES","Expected":2265,"Actual":2265,"Pending":0,"y":2265,"target":2265,"name":"ES"},{"Country":"CN","Expected":2181,"Actual":2172,"Pending":9,"y":2172,"target":2181,"name":"CN"},{"Country":"NL","Expected":2128,"Actual":2127,"Pending":1,"y":2127,"target":2128,"name":"NL"},{"Country":"IT","Expected":1433,"Actual":1433,"Pending":0,"y":1433,"target":1433,"name":"IT"},{"Country":"ES","Expected":1100,"Actual":1100,"Pending":0,"y":1100,"target":1100,"name":"ES"},{"Country":"FI","Expected":906,"Actual":906,"Pending":0,"y":906,"target":906,"name":"FI"},{"Country":"SE","Expected":843,"Actual":843,"Pending":0,"y":843,"target":843,"name":"SE"},{"Country":"CN","Expected":727,"Actual":724,"Pending":3,"y":724,"target":727,"name":"CN"},{"Country":"IT","Expected":714,"Actual":714,"Pending":0,"y":714,"target":714,"name":"IT"},{"Country":"CN","Expected":409,"Actual":408,"Pending":1,"y":408,"target":409,"name":"CN"},{"Country":"FI","Expected":302,"Actual":302,"Pending":0,"y":302,"target":302,"name":"FI"},{"Country":"SE","Expected":281,"Actual":281,"Pending":0,"y":281,"target":281,"name":"SE"},{"Country":"SE","Expected":148,"Actual":148,"Pending":0,"y":148,"target":148,"name":"SE"},{"Country":"FI","Expected":146,"Actual":146,"Pending":0,"y":146,"target":146,"name":"FI"},{"Country":"DE","Expected":13,"Actual":13,"Pending":0,"y":13,"target":13,"name":"DE"},{"Country":"SE","Expected":5,"Actual":5,"Pending":0,"y":5,"target":5,"name":"SE"},{"Country":"CN","Expected":2,"Actual":2,"Pending":0,"y":2,"target":2,"name":"CN"},{"Country":"ES","Expected":2,"Actual":2,"Pending":0,"y":2,"target":2,"name":"ES"},{"Country":"FI","Expected":2,"Actual":2,"Pending":0,"y":2,"target":2,"name":"FI"}],"type":"bullet","color":"black","name":"Observations (Output)"},{"group":"group","data":[{"Country":"DE","Expected":38847,"Actual":38847,"Pending":0,"y":0,"name":"DE"},{"Country":"PL","Expected":25188,"Actual":25182,"Pending":6,"y":6,"name":"PL"},{"Country":"NL","Expected":18228,"Actual":18222,"Pending":6,"y":6,"name":"NL"},{"Country":"DE","Expected":12949,"Actual":12949,"Pending":0,"y":0,"name":"DE"},{"Country":"IT","Expected":10311,"Actual":10311,"Pending":0,"y":0,"name":"IT"},{"Country":"PL","Expected":8396,"Actual":8394,"Pending":2,"y":2,"name":"PL"},{"Country":"ES","Expected":6795,"Actual":6795,"Pending":0,"y":0,"name":"ES"},{"Country":"NL","Expected":6076,"Actual":6074,"Pending":2,"y":2,"name":"NL"},{"Country":"DE","Expected":5295,"Actual":5295,"Pending":0,"y":0,"name":"DE"},{"Country":"PL","Expected":4438,"Actual":4437,"Pending":1,"y":1,"name":"PL"},{"Country":"IT","Expected":3437,"Actual":3437,"Pending":0,"y":0,"name":"IT"},{"Country":"PL","Expected":2418,"Actual":2418,"Pending":0,"y":0,"name":"PL"},{"Country":"NL","Expected":2316,"Actual":2314,"Pending":2,"y":2,"name":"NL"},{"Country":"ES","Expected":2265,"Actual":2265,"Pending":0,"y":0,"name":"ES"},{"Country":"CN","Expected":2181,"Actual":2172,"Pending":9,"y":9,"name":"CN"},{"Country":"NL","Expected":2128,"Actual":2127,"Pending":1,"y":1,"name":"NL"},{"Country":"IT","Expected":1433,"Actual":1433,"Pending":0,"y":0,"name":"IT"},{"Country":"ES","Expected":1100,"Actual":1100,"Pending":0,"y":0,"name":"ES"},{"Country":"FI","Expected":906,"Actual":906,"Pending":0,"y":0,"name":"FI"},{"Country":"SE","Expected":843,"Actual":843,"Pending":0,"y":0,"name":"SE"},{"Country":"CN","Expected":727,"Actual":724,"Pending":3,"y":3,"name":"CN"},{"Country":"IT","Expected":714,"Actual":714,"Pending":0,"y":0,"name":"IT"},{"Country":"CN","Expected":409,"Actual":408,"Pending":1,"y":1,"name":"CN"},{"Country":"FI","Expected":302,"Actual":302,"Pending":0,"y":0,"name":"FI"},{"Country":"SE","Expected":281,"Actual":281,"Pending":0,"y":0,"name":"SE"},{"Country":"SE","Expected":148,"Actual":148,"Pending":0,"y":0,"name":"SE"},{"Country":"FI","Expected":146,"Actual":146,"Pending":0,"y":0,"name":"FI"},{"Country":"DE","Expected":13,"Actual":13,"Pending":0,"y":0,"name":"DE"},{"Country":"SE","Expected":5,"Actual":5,"Pending":0,"y":0,"name":"SE"},{"Country":"CN","Expected":2,"Actual":2,"Pending":0,"y":0,"name":"CN"},{"Country":"ES","Expected":2,"Actual":2,"Pending":0,"y":0,"name":"ES"},{"Country":"FI","Expected":2,"Actual":2,"Pending":0,"y":0,"name":"FI"}],"type":"pie","name":"Pending (Major Issues)"}],"xAxis":{"type":"category","title":{"text":"Country"},"categories":null},"subtitle":{"text":"Pie shows number of major issues identified"}},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="error-by-template-2" class="section level4">
|
|
<h4>Error by template</h4>
|
|
<div id="htmlwidget-f505ae0dccb82f2e5a9a" style="width:100%;height:500px;" class="highchart html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-f505ae0dccb82f2e5a9a">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Error Count"},"yAxis":{"title":{"text":"Number of errors"}},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"Error_Project"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0},"treemap":{"layoutAlgorithm":"squarified"},"column":{"stacking":"normal"},"lang":{"drillUpText":"Back"}},"xAxis":{"type":"category"},"series":[{"group":"group","data":[{"name":"PL","y":9,"drilldown":"pl"},{"name":"NL","y":11,"drilldown":"nl"},{"name":"DE","y":12,"drilldown":"de"},{"name":"CN","y":13,"drilldown":"cn"},{"name":"ES","y":22,"drilldown":"es"}],"type":"column","name":"Country View","showInLegend":false}],"drilldown":{"allowPointDrilldown":true,"series":[{"id":"es","type":"column","data":[{"name":"Length error","y":22,"drilldown":"es_length error"}],"name":"High Level Error"},{"id":"de","type":"column","data":[{"name":"Length error","y":12,"drilldown":"de_length error"}],"name":"High Level Error"},{"id":"cn","type":"column","data":[{"name":"Missing","y":13,"drilldown":"cn_missing"}],"name":"High Level Error"},{"id":"nl","type":"column","data":[{"name":"Missing","y":11,"drilldown":"nl_missing"}],"name":"High Level Error"},{"id":"pl","type":"column","data":[{"name":"Missing","y":9,"drilldown":"pl_missing"}],"name":"High Level Error"},{"id":"pl_missing","type":"column","data":[["External_Key",2],["Opportunity_External_Key",7]],"name":"Deep Dive"},{"id":"nl_missing","type":"column","data":[["External_Key",2],["Opportunity_External_Key",9]],"name":"Deep Dive"},{"id":"de_length error","type":"column","data":[["Project_street",12]],"name":"Deep Dive"},{"id":"cn_missing","type":"column","data":[["External_Key",3],["Opportunity_External_Key",10]],"name":"Deep Dive"},{"id":"es_length error","type":"column","data":[["Project_street",22]],"name":"Deep Dive"}]},"subtitle":{"text":"Click on bar for deep dive"}},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="errors-in-details-2" class="section level4 tabset tabset-pills">
|
|
<h4 class="tabset tabset-pills">Errors in details</h4>
|
|
<div id="mandatory-2" class="section level5 tabset tabset-pills">
|
|
<h5 class="tabset tabset-pills">Mandatory</h5>
|
|
<div id="opportunity" class="section level6">
|
|
<h6>Opportunity</h6>
|
|
<pre><code>## [1] "No Data"</code></pre>
|
|
<pre><code>## Error in rbind.data.frame(path, ...): No Data</code></pre>
|
|
<div id="htmlwidget-92181a7a1c11a355d117" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-92181a7a1c11a355d117">{"x":null,"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="opportunity-sales-team-party-in" class="section level6">
|
|
<h6>Opportunity Sales Team Party In</h6>
|
|
<pre><code>## [1] "No Data"</code></pre>
|
|
<pre><code>## Error in rbind.data.frame(path, ...): No Data</code></pre>
|
|
<div id="htmlwidget-641dc5df78de99b1bf88" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-641dc5df78de99b1bf88">{"x":null,"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="opportunity-party-information" class="section level6">
|
|
<h6>Opportunity Party Information</h6>
|
|
<pre><code>## [1] "No Data"</code></pre>
|
|
<pre><code>## Error in rbind.data.frame(path, ...): No Data</code></pre>
|
|
<div id="htmlwidget-fbd129cf2da9a3ff9f06" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-fbd129cf2da9a3ff9f06">{"x":null,"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
</div>
|
|
<div id="codelist-2" class="section level5">
|
|
<h5>Codelist</h5>
|
|
</div>
|
|
<div id="length-2" class="section level5">
|
|
<h5>Length</h5>
|
|
<div id="htmlwidget-3c0b027b854a9cb4c4b8" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-3c0b027b854a9cb4c4b8">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["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","28","29","30","31","32","33","34"],["404747-001","404747","404651","375040","375017","370599-001","370599","359953","336616","318578-019","280249-002","280249-001","406259","399442","388652","376552-001","376552","376169-001","376169","353386-001","353386","350189-001","350189","347363","343338-001","343338","335126","332036","331288","330799","328563","316320-001","305933-002","303054-001"],[69,69,63,68,62,62,62,61,61,70,70,70,66,65,78,69,69,64,64,69,69,61,61,66,61,61,69,72,65,69,66,63,64,68],[60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60],["Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street","Project_street"],["Rhodeländer Weg / zwischen Groß-Ziethener- u. Waßmannsdorfer Chaussee","Rhodeländer Weg / zwischen Groß-Ziethener- u. Waßmannsdorfer Chaussee","Bischof-Ketteler-Str./Fritz-Erler-Str./Dietrich-Bonhoeffer-Str.","Kattenbrookstrift/Marion-Donnewenn-Str./Hinterm Heidbleek/Lüderworth","Rathauswettern/Rotenhäuser Str./ Neuenfelder Str./Dratelnstr.","Zimmersmühlenweg / In den Schwarzwiesen / Ludwig-Erhard-Straße","Zimmersmühlenweg / In den Schwarzwiesen / Ludwig-Erhard-Straße","Josefine-Clouth-Str./Xantener Str./Niehler Str./Kautschukstr.","Kardinal-Galen-Str./Aakerfährstraße/Hansastraße/Oranienstraße","Pasteurallee/Podbielskistrasse/In den sieben Stücken/Dora Gerson Stre.","Billhorner Kanalstr. 45-47/Köhnestr/Marckmannstr/Billhorner Mühlendamm","Billhorner Kanalstr. 45-47/Köhnestr/Marckmannstr/Billhorner Mühlendamm","C. del Arroyo del Monte Parcela T1 del APE.08.16 Arroyo del Fresno","Plaza Glòries Catalanes, C. Encants Vells y Gran Vía de les Corts","Carretera de las Peñas de San Pedro Nº km 5,3. Parque Aeronáutico y Logístico,","Av. Marques de Mont-Roig. C. Festa Major d'Iquique, C. Enric Granados","Av. Marques de Mont-Roig. C. Festa Major d'Iquique, C. Enric Granados","C. Joan de Batlle, C. Clementina Arderiu, C. Marque de Monistrol","C. Joan de Batlle, C. Clementina Arderiu, C. Marque de Monistrol","C. Mª de las Mercedes de Borbón esq C. Jose Antonio Fernandez Ordoñez","C. Mª de las Mercedes de Borbón esq C. Jose Antonio Fernandez Ordoñez","C. D'Antoni Santiburcio, 4-10 esq Passeig Torras I Bages, 143","C. D'Antoni Santiburcio, 4-10 esq Passeig Torras I Bages, 143","Av. Suertes, 57 con C. Cañada del Santísimo, 27. ensanche Vallecas","C. Boters, 18 - C. Ceramistes - C. Artesans - C. Nova Creació","C. Boters, 18 - C. Ceramistes - C. Artesans - C. Nova Creació","C. María de las Mercedes de Borbón con C. de Manuel Gutiérrez Mellado","C. Calle Santos Arcángel zona de cementerio en la futura Plaza del Ficus","Av. Gáldar / C. Alcalde Enrique Jorge- San Fernando de Maspalomas","Rúa camilo José Cela esq. Rúa Cantigas e Frores e Praza Augas Ferreas","C. Campanile Angular A, C. Tiepolo. Parcela R04-a - Parque Venecia","Polígono Industrial Entrevies zona de Carretera Vilaseca-Pineda","Calles Novelles,13 y 17 / Salomó, 4 y 8 / Passeig Mollerussa, 58","Av. Francisco Trujillo Villanueva (EUD.1b-MOD Plan Especial PE-T.1 )"],["DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","DE","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES","ES"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>rowval<\/th>\n <th>ival<\/th>\n <th>rval<\/th>\n <th>colnm<\/th>\n <th>colval<\/th>\n <th>cntr<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"filter":true,"columnDefs":[{"className":"dt-right","targets":[2,3]},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="support" class="section level3">
|
|
<h3>Support</h3>
|
|
<div id="template-3" class="section level4">
|
|
<h4>Template</h4>
|
|
<p>SAP templates available:</p>
|
|
<div id="htmlwidget-a116e502e5886d13f58e" style="width:100%;height:auto;" class="datatables html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-a116e502e5886d13f58e">{"x":{"filter":"none","vertical":false,"extensions":["Buttons"],"data":[["1","2","3","4","5","6","7","8","9","10","11","12"],["Service_Request","Service_Request_BTD_Reference","Service_Request_Item","Service_Request_Other_Party","Service_Request_Party","Service_Request_Location","Service_Request_Product","ServiceRequestSkillsCollectionC","Service_Request_Solution_Propos","Service_Request_Notes","Service_Request_Item_Notes","Service_Request_Location_Addres"]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>Sheet.Name<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"paging":true,"scrollX":true,"searching":true,"ordering":true,"dom":"Bfrtip","buttons":["copy","csv","excel","pdf"],"pageLength":10,"lengthMenu":[3,5,10],"order":[],"autoWidth":false,"orderClasses":false,"columnDefs":[{"orderable":false,"targets":0}]}},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
<div id="summary-of-errors-3" class="section level4">
|
|
<h4>Summary of Errors</h4>
|
|
<pre><code>## [1] "No Data"</code></pre>
|
|
<pre><code>## Error in rbind.data.frame(path, ...): No Data</code></pre>
|
|
<pre><code>## Error in `mutate_cols()`:
|
|
## ! Problem with `mutate()` column `Pending`.
|
|
## ℹ `Pending = Expected - Actual`.
|
|
## x object 'Expected' not found
|
|
## Caused by error:
|
|
## ! object 'Expected' not found</code></pre>
|
|
<pre><code>## Error in `mutate_cols()`:
|
|
## ! Problem with `mutate()` column `y`.
|
|
## ℹ `y = Actual`.
|
|
## x object 'Actual' not found
|
|
## Caused by error:
|
|
## ! object 'Actual' not found</code></pre>
|
|
</div>
|
|
<div id="error-by-template-3" class="section level4">
|
|
<h4>Error by template</h4>
|
|
<pre><code>## [1] "No Data"</code></pre>
|
|
<pre><code>## Error in rbind.data.frame(path, ...): No Data</code></pre>
|
|
<pre><code>## Error in `mutate_cols()`:
|
|
## ! Problem with `mutate()` column `err.deep`.
|
|
## ℹ `err.deep = word(err.type, -1)`.
|
|
## x object 'err.type' not found
|
|
## Caused by error in `word()`:
|
|
## ! object 'err.type' not found</code></pre>
|
|
<div id="htmlwidget-c7ea308c8b814150a6bd" style="width:100%;height:500px;" class="highchart html-widget"></div>
|
|
<script type="application/json" data-for="htmlwidget-c7ea308c8b814150a6bd">{"x":{"hc_opts":{"chart":{"reflow":true},"title":{"text":"Error Count"},"yAxis":{"title":{"text":"Number of errors"}},"credits":{"enabled":true,"text":"LaNubia Data Science","href":"https://www.lanubia.com/"},"exporting":{"enabled":true,"filename":"Error_Support"},"boost":{"enabled":false},"plotOptions":{"series":{"label":{"enabled":false},"turboThreshold":0},"treemap":{"layoutAlgorithm":"squarified"},"column":{"stacking":"normal"},"lang":{"drillUpText":"Back"}},"xAxis":{"type":"category"},"series":[{"group":"group","data":[{"name":"PL","y":9,"drilldown":"pl"},{"name":"NL","y":11,"drilldown":"nl"},{"name":"DE","y":12,"drilldown":"de"},{"name":"CN","y":13,"drilldown":"cn"},{"name":"ES","y":22,"drilldown":"es"}],"type":"column","name":"Country View","showInLegend":false}],"drilldown":{"allowPointDrilldown":true,"series":[{"id":"es","type":"column","data":[{"name":"Length error","y":22,"drilldown":"es_length error"}],"name":"High Level Error"},{"id":"de","type":"column","data":[{"name":"Length error","y":12,"drilldown":"de_length error"}],"name":"High Level Error"},{"id":"cn","type":"column","data":[{"name":"Missing","y":13,"drilldown":"cn_missing"}],"name":"High Level Error"},{"id":"nl","type":"column","data":[{"name":"Missing","y":11,"drilldown":"nl_missing"}],"name":"High Level Error"},{"id":"pl","type":"column","data":[{"name":"Missing","y":9,"drilldown":"pl_missing"}],"name":"High Level Error"},{"id":"pl_missing","type":"column","data":[["External_Key",2],["Opportunity_External_Key",7]],"name":"Deep Dive"},{"id":"nl_missing","type":"column","data":[["External_Key",2],["Opportunity_External_Key",9]],"name":"Deep Dive"},{"id":"de_length error","type":"column","data":[["Project_street",12]],"name":"Deep Dive"},{"id":"cn_missing","type":"column","data":[["External_Key",3],["Opportunity_External_Key",10]],"name":"Deep Dive"},{"id":"es_length error","type":"column","data":[["Project_street",22]],"name":"Deep Dive"}]},"subtitle":{"text":"Click on bar for deep dive"}},"theme":{"chart":{"backgroundColor":"transparent"},"colors":["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"]},"conf_opts":{"global":{"Date":null,"VMLRadialGradientURL":"http =//code.highcharts.com/list(version)/gfx/vml-radial-gradient.png","canvasToolsURL":"http =//code.highcharts.com/list(version)/modules/canvas-tools.js","getTimezoneOffset":null,"timezoneOffset":0,"useUTC":true},"lang":{"contextButtonTitle":"Chart context menu","decimalPoint":".","downloadJPEG":"Download JPEG image","downloadPDF":"Download PDF document","downloadPNG":"Download PNG image","downloadSVG":"Download SVG vector image","drillUpText":"Back to {series.name}","invalidDate":null,"loading":"Loading...","months":["January","February","March","April","May","June","July","August","September","October","November","December"],"noData":"No data to display","numericSymbols":["k","M","G","T","P","E"],"printChart":"Print chart","resetZoom":"Reset zoom","resetZoomTitle":"Reset zoom level 1:1","shortMonths":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"thousandsSep":" ","weekdays":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]}},"type":"chart","fonts":[],"debug":false},"evals":[],"jsHooks":[]}</script>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<script>
|
|
|
|
// add bootstrap table styles to pandoc tables
|
|
function bootstrapStylePandocTables() {
|
|
$('tr.odd').parent('tbody').parent('table').addClass('table table-condensed');
|
|
}
|
|
$(document).ready(function () {
|
|
bootstrapStylePandocTables();
|
|
});
|
|
|
|
|
|
</script>
|
|
|
|
<!-- tabsets -->
|
|
|
|
<script>
|
|
$(document).ready(function () {
|
|
window.buildTabsets("TOC");
|
|
});
|
|
|
|
$(document).ready(function () {
|
|
$('.tabset-dropdown > .nav-tabs > li').click(function () {
|
|
$(this).parent().toggleClass('nav-tabs-open');
|
|
});
|
|
});
|
|
</script>
|
|
|
|
<!-- code folding -->
|
|
|
|
<script>
|
|
$(document).ready(function () {
|
|
|
|
// temporarily add toc-ignore selector to headers for the consistency with Pandoc
|
|
$('.unlisted.unnumbered').addClass('toc-ignore')
|
|
|
|
// move toc-ignore selectors from section div to header
|
|
$('div.section.toc-ignore')
|
|
.removeClass('toc-ignore')
|
|
.children('h1,h2,h3,h4,h5').addClass('toc-ignore');
|
|
|
|
// establish options
|
|
var options = {
|
|
selectors: "h1,h2,h3,h4",
|
|
theme: "bootstrap3",
|
|
context: '.toc-content',
|
|
hashGenerator: function (text) {
|
|
return text.replace(/[.\\/?&!#<>]/g, '').replace(/\s/g, '_');
|
|
},
|
|
ignoreSelector: ".toc-ignore",
|
|
scrollTo: 0
|
|
};
|
|
options.showAndHide = true;
|
|
options.smoothScroll = true;
|
|
|
|
// tocify
|
|
var toc = $("#TOC").tocify(options).data("toc-tocify");
|
|
});
|
|
</script>
|
|
|
|
<!-- dynamically load mathjax for compatibility with self-contained -->
|
|
<script>
|
|
(function () {
|
|
var script = document.createElement("script");
|
|
script.type = "text/javascript";
|
|
script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
|
|
document.getElementsByTagName("head")[0].appendChild(script);
|
|
})();
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|