If you already have an account on our website, please log in to continue
PCEtLSBHb29nbGUgVGFnIE1hbmFnZXIgLS0+CjxzY3JpcHQ+KGZ1bmN0aW9uKHcsZCxzLGwsaSl7d1tsXT13W2xdfHxbXTt3W2xdLnB1c2goeydndG0uc3RhcnQnOgpuZXcgRGF0ZSgpLmdldFRpbWUoKSxldmVudDonZ3RtLmpzJ30pO3ZhciBmPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF0sCmo9ZC5jcmVhdGVFbGVtZW50KHMpLGRsPWwhPSdkYXRhTGF5ZXInPycmbD0nK2w6Jyc7ai5hc3luYz10cnVlO2ouc3JjPQonaHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RtLmpzP2lkPScraStkbDtmLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGosZik7Cn0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnZGF0YUxheWVyJywnR1RNLTVTQzQ1TUonKTtndGFnKCdzZXQnLCB7J3VzZXJfaWQnOiAnVVNFUl9JRCd9KTsgLy8gU2V0IHRoZSB1c2VyIElEIHVzaW5nIHNpZ25lZC1pbiB1c2VyX2lkLjwvc2NyaXB0Pgo8IS0tIEVuZCBHb29nbGUgVGFnIE1hbmFnZXIgLS0+CgoKCjwhLS0gVHdpdHRlciBjb252ZXJzaW9uIHRyYWNraW5nIGJhc2UgY29kZSAtLT4KPHNjcmlwdD4KIWZ1bmN0aW9uKGUsdCxuLHMsdSxhKXtlLnR3cXx8KHM9ZS50d3E9ZnVuY3Rpb24oKXtzLmV4ZT9zLmV4ZS5hcHBseShzLGFyZ3VtZW50cyk6cy5xdWV1ZS5wdXNoKGFyZ3VtZW50cyk7Cn0scy52ZXJzaW9uPScxLjEnLHMucXVldWU9W10sdT10LmNyZWF0ZUVsZW1lbnQobiksdS5hc3luYz0hMCx1LnNyYz0naHR0cHM6Ly9zdGF0aWMuYWRzLXR3aXR0ZXIuY29tL3V3dC5qcycsCmE9dC5nZXRFbGVtZW50c0J5VGFnTmFtZShuKVswXSxhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHUsYSkpfSh3aW5kb3csZG9jdW1lbnQsJ3NjcmlwdCcpOwp0d3EoJ2NvbmZpZycsJ28xbmowJyk7Cjwvc2NyaXB0Pgo8IS0tIEVuZCBUd2l0dGVyIGNvbnZlcnNpb24gdHJhY2tpbmcgYmFzZSBjb2RlIC0tPgoKPCEtLSBCZWdpbiBMaW5rdHJlZSBjb252ZXJzaW9uIHRyYWNraW5nIGNvZGUgLS0+CjxzY3JpcHQ+CihmdW5jdGlvbiAobCwgaSwgbiwgaywgdCwgciwgZWUpIHsKICBsW3RdID0gbFt0XSB8fCBmdW5jdGlvbiAoKSB7IChsW3RdLnEgPSBsW3RdLnEgfHwgW10pLnB1c2goYXJndW1lbnRzKSB9LAogIGxbdF0ubCA9IDEgKiBuZXcgRGF0ZSgpOyByID0gaS5jcmVhdGVFbGVtZW50KG4pOyBlZSA9IGkuZ2V0RWxlbWVudHNCeVRhZ05hbWUobilbMF07CiAgci5hc3luYyA9IDE7IHIuc3JjID0gazsgZWUucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUociwgZWUpCn0pCih3aW5kb3csIGRvY3VtZW50LCAnc2NyaXB0JywgJ2h0dHBzOi8vYXNzZXRzLnByb2R1Y3Rpb24ubGlua3RyLmVlL2x0cGl4ZWwvbHRwaXgubWluLmpzP3Q9JyArIDg2NGU1Kk1hdGguY2VpbChuZXcgRGF0ZS84NjRlNSksICdsdGknKQo8L3NjcmlwdD4KPHNjcmlwdD4KICBsdGkoJ2luaXQnLCAnTFRVLTdjNTQyMDE1LTllYzEtNGU3YS04OGYzLTZmNmQwMTNjOGMwZScpCiAgbHRpKCdwYWdlbG9hZGVkJykKPC9zY3JpcHQ+CjwhLS0gRW5kIExpbmt0cmVlIGNvbnZlcnNpb24gdHJhY2tpbmcgY29kZSAtLT4=PCEtLSBHb29nbGUgVGFnIE1hbmFnZXIgKG5vc2NyaXB0KSAtLT4KPG5vc2NyaXB0PjxpZnJhbWUgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ucy5odG1sP2lkPUdUTS01U0M0NU1KIgpoZWlnaHQ9IjAiIHdpZHRoPSIwIiBzdHlsZT0iZGlzcGxheTpub25lO3Zpc2liaWxpdHk6aGlkZGVuIj48L2lmcmFtZT48L25vc2NyaXB0Pgo8IS0tIEVuZCBHb29nbGUgVGFnIE1hbmFnZXIgKG5vc2NyaXB0KSAtLT4KCjwhLS0gR29vZ2xlIHRhZyAoZ3RhZy5qcykgLS0+CjxzY3JpcHQgYXN5bmMgc3JjPSJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbS9ndGFnL2pzP2lkPUctODU2WVIyNDdDSCI+PC9zY3JpcHQ+CjxzY3JpcHQ+CiAgd2luZG93LmRhdGFMYXllciA9IHdpbmRvdy5kYXRhTGF5ZXIgfHwgW107CiAgZnVuY3Rpb24gZ3RhZygpe2RhdGFMYXllci5wdXNoKGFyZ3VtZW50cyk7fQogIGd0YWcoJ2pzJywgbmV3IERhdGUoKSk7CgogIGd0YWcoJ2NvbmZpZycsICdHLTg1NllSMjQ3Q0gnKTsKPC9zY3JpcHQ+Cgo8IS0tIFN0YXJ0IG9mIExpdmVDaGF0ICh3d3cubGl2ZWNoYXQuY29tKSBjb2RlIC0tPgo8c2NyaXB0PgogICAgd2luZG93Ll9fbGMgPSB3aW5kb3cuX19sYyB8fCB7fTsKICAgIHdpbmRvdy5fX2xjLmxpY2Vuc2UgPSAxMjYwNDkxOwogICAgOyhmdW5jdGlvbihuLHQsYyl7ZnVuY3Rpb24gaShuKXtyZXR1cm4gZS5faD9lLl9oLmFwcGx5KG51bGwsbik6ZS5fcS5wdXNoKG4pfXZhciBlPXtfcTpbXSxfaDpudWxsLF92OiIyLjAiLG9uOmZ1bmN0aW9uKCl7aShbIm9uIixjLmNhbGwoYXJndW1lbnRzKV0pfSxvbmNlOmZ1bmN0aW9uKCl7aShbIm9uY2UiLGMuY2FsbChhcmd1bWVudHMpXSl9LG9mZjpmdW5jdGlvbigpe2koWyJvZmYiLGMuY2FsbChhcmd1bWVudHMpXSl9LGdldDpmdW5jdGlvbigpe2lmKCFlLl9oKXRocm93IG5ldyBFcnJvcigiW0xpdmVDaGF0V2lkZ2V0XSBZb3UgY2FuJ3QgdXNlIGdldHRlcnMgYmVmb3JlIGxvYWQuIik7cmV0dXJuIGkoWyJnZXQiLGMuY2FsbChhcmd1bWVudHMpXSl9LGNhbGw6ZnVuY3Rpb24oKXtpKFsiY2FsbCIsYy5jYWxsKGFyZ3VtZW50cyldKX0saW5pdDpmdW5jdGlvbigpe3ZhciBuPXQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7bi5hc3luYz0hMCxuLnR5cGU9InRleHQvamF2YXNjcmlwdCIsbi5zcmM9Imh0dHBzOi8vY2RuLmxpdmVjaGF0aW5jLmNvbS90cmFja2luZy5qcyIsdC5oZWFkLmFwcGVuZENoaWxkKG4pfX07IW4uX19sYy5hc3luY0luaXQmJmUuaW5pdCgpLG4uTGl2ZUNoYXRXaWRnZXQ9bi5MaXZlQ2hhdFdpZGdldHx8ZX0od2luZG93LGRvY3VtZW50LFtdLnNsaWNlKSkKPC9zY3JpcHQ+Cjxub3NjcmlwdD48YSBocmVmPSJodHRwczovL3d3dy5saXZlY2hhdC5jb20vY2hhdC13aXRoLzEyNjA0OTEvIiByZWw9Im5vZm9sbG93Ij5DaGF0IHdpdGggdXM8L2E+LCBwb3dlcmVkIGJ5IDxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpdmVjaGF0LmNvbS8/d2VsY29tZSIgcmVsPSJub29wZW5lciBub2ZvbGxvdyIgdGFyZ2V0PSJfYmxhbmsiPkxpdmVDaGF0PC9hPjwvbm9zY3JpcHQ+CjwhLS0gRW5kIG9mIExpdmVDaGF0IGNvZGUgLS0+Cgo8IS0tIEFmZmlsaWF0ZSBUcmFja2luZyBmb3IgR0E0IC0tPgo8c2NyaXB0PgooZnVuY3Rpb24oKSB7CiAgdmFyIHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7CiAgdmFyIGFmZiA9IHBhcmFtcy5nZXQoImFmZiIpOwogIGlmIChhZmYpIHsKICAgIGRvY3VtZW50LmNvb2tpZSA9ICJ0aW1fYWZmPSIgKyBhZmYgKyAiO3BhdGg9LzttYXgtYWdlPTE1NTUyMDAwO1NhbWVTaXRlPUxheCI7CiAgfSBlbHNlIHsKICAgIHZhciBtYXRjaCA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaCgvdGltX2FmZj0oW147XSspLyk7CiAgICBpZiAobWF0Y2gpIGFmZiA9IG1hdGNoWzFdOwogIH0KICBpZiAoYWZmICYmIHR5cGVvZiBndGFnID09PSAiZnVuY3Rpb24iKSB7CiAgICBndGFnKCJzZXQiLCB7ImFmZiI6IGFmZn0pOwogIH0KfSkoKTsKPC9zY3JpcHQ+Cgo8IS0tIEdBNCBGbG93cGxheWVyIFZpZGVvIFRyYWNraW5nICsgTWVtYmVyIERldGVjdGlvbiBmb3IgVElNIFNpdGVzIC0tPgo8c2NyaXB0PgooZnVuY3Rpb24oKSB7CiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIC8vIDEuIE1FTUJFUiB2cyBWSVNJVE9SIERFVEVDVElPTgogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAvLyBEcnVwYWwgYWRkcyAibG9nZ2VkLWluIiBjbGFzcyB0byBib2R5IGZvciBhdXRoZW50aWNhdGVkIHVzZXJzCiAgdmFyIHVzZXJUeXBlID0gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoImxvZ2dlZC1pbiIpID8gIm1lbWJlciIgOiAidmlzaXRvciI7CgogIC8vIFNldCBhcyBhIEdBNCB1c2VyIHByb3BlcnR5IHNvIGl0IHBlcnNpc3RzIGFjcm9zcyBhbGwgZXZlbnRzIGluIHRoZSBzZXNzaW9uCiAgaWYgKHR5cGVvZiBndGFnID09PSAiZnVuY3Rpb24iKSB7CiAgICBndGFnKCJzZXQiLCAidXNlcl9wcm9wZXJ0aWVzIiwgeyJtZW1iZXJfc3RhdHVzIjogdXNlclR5cGV9KTsKICB9CgogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAvLyAyLiBDT05URU5UIFRZUEUgREVURUNUSU9OCiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIHZhciBjb250ZW50VHlwZSA9ICJ1bmtub3duIjsKICB2YXIgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTsKICBpZiAocGF0aC5pbmRleE9mKCIvc2NlbmVzLyIpICE9PSAtMSkgewogICAgY29udGVudFR5cGUgPSAic2NlbmUiOwogIH0gZWxzZSBpZiAocGF0aC5pbmRleE9mKCIvbW92aWVzLyIpICE9PSAtMSkgewogICAgY29udGVudFR5cGUgPSAibW92aWUiOwogIH0KCiAgLy8gRGV0ZXJtaW5lIHRoZSBzdWJzaXRlIGZyb20gaG9zdG5hbWUKICB2YXIgaG9zdG5hbWUgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7CiAgdmFyIHN1YnNpdGUgPSAibWFpbiI7CiAgaWYgKGhvc3RuYW1lLmluZGV4T2YoInRpbWZ1Y2siKSAhPT0gLTEpIHN1YnNpdGUgPSAidGltZnVjayI7CiAgZWxzZSBpZiAoaG9zdG5hbWUuaW5kZXhPZigidGltc3VjayIpICE9PSAtMSkgc3Vic2l0ZSA9ICJ0aW1zdWNrIjsKICBlbHNlIGlmIChob3N0bmFtZS5pbmRleE9mKCJ0aW10YWxlcyIpICE9PSAtMSkgc3Vic2l0ZSA9ICJ0aW10YWxlcyI7CiAgZWxzZSBpZiAoaG9zdG5hbWUuaW5kZXhPZigidGltLnN0b3JlIikgIT09IC0xKSBzdWJzaXRlID0gInRpbV9zdG9yZSI7CiAgZWxzZSBpZiAoaG9zdG5hbWUuaW5kZXhPZigidG94eHhpY3Nob3AiKSAhPT0gLTEpIHN1YnNpdGUgPSAidG94eHhpY3Nob3AiOwoKICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgLy8gMy4gRkxPV1BMQVlFUiBFVkVOVCBUUkFDS0lORwogIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICBmdW5jdGlvbiBhdHRhY2hGbG93cGxheWVyVHJhY2tpbmcoKSB7CiAgICBpZiAodHlwZW9mIGpRdWVyeSA9PT0gInVuZGVmaW5lZCIgfHwgdHlwZW9mIGZsb3dwbGF5ZXIgPT09ICJ1bmRlZmluZWQiKSB7CiAgICAgIHNldFRpbWVvdXQoYXR0YWNoRmxvd3BsYXllclRyYWNraW5nLCA1MDApOwogICAgICByZXR1cm47CiAgICB9CgogICAgalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7CiAgICAgICQoIi5mbG93cGxheWVyIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpczsKICAgICAgICB2YXIgYXBpID0gZmxvd3BsYXllcihjb250YWluZXIpOwogICAgICAgIGlmICghYXBpKSByZXR1cm47CgogICAgICAgIHZhciBtaWxlc3RvbmVzRmlyZWQgPSB7fTsKICAgICAgICB2YXIgaGFzU3RhcnRlZCA9IGZhbHNlOwogICAgICAgIHZhciB2aWRlb1RpdGxlID0gIiI7CiAgICAgICAgdmFyIHZpZGVvRHVyYXRpb24gPSAwOwoKICAgICAgICB2YXIgaXNUcmFpbGVyID0gZmFsc2U7CiAgICAgICAgdmFyICRjb250YWluZXIgPSAkKGNvbnRhaW5lcik7CiAgICAgICAgaWYgKCRjb250YWluZXIuaGFzQ2xhc3MoInRyYWlsZXIiKSB8fAogICAgICAgICAgICAkY29udGFpbmVyLmNsb3Nlc3QoIi5maWVsZC1uYW1lLWZpZWxkLXRyYWlsZXIiKS5sZW5ndGggPiAwIHx8CiAgICAgICAgICAgICRjb250YWluZXIuZGF0YSgidHlwZSIpID09PSAidHJhaWxlciIpIHsKICAgICAgICAgIGlzVHJhaWxlciA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGlmICh1c2VyVHlwZSA9PT0gInZpc2l0b3IiKSB7CiAgICAgICAgICBpc1RyYWlsZXIgPSB0cnVlOwogICAgICAgIH0KICAgICAgICB2YXIgdmlkZW9Db250ZW50VHlwZSA9IGlzVHJhaWxlciA/ICJ0cmFpbGVyIiA6IGNvbnRlbnRUeXBlOwoKICAgICAgICBhcGkub24oInJlYWR5IiwgZnVuY3Rpb24oZSwgZnBBcGksIHZpZGVvKSB7CiAgICAgICAgICB2aWRlb1RpdGxlID0gdmlkZW8udGl0bGUgfHwgZG9jdW1lbnQudGl0bGUgfHwgIlVua25vd24iOwogICAgICAgICAgdmlkZW9EdXJhdGlvbiA9IHZpZGVvLmR1cmF0aW9uIHx8IDA7CiAgICAgICAgICBtaWxlc3RvbmVzRmlyZWQgPSB7fTsKICAgICAgICAgIGhhc1N0YXJ0ZWQgPSBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgYXBpLm9uKCJyZXN1bWUiLCBmdW5jdGlvbihlLCBmcEFwaSkgewogICAgICAgICAgaWYgKCFoYXNTdGFydGVkKSB7CiAgICAgICAgICAgIGhhc1N0YXJ0ZWQgPSB0cnVlOwogICAgICAgICAgICBpZiAodHlwZW9mIGd0YWcgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgICAgICBndGFnKCJldmVudCIsICJ2aWRlb19zdGFydCIsIHsKICAgICAgICAgICAgICAgICJ2aWRlb190aXRsZSI6IHZpZGVvVGl0bGUsCiAgICAgICAgICAgICAgICAidmlkZW9fZHVyYXRpb24iOiBNYXRoLnJvdW5kKHZpZGVvRHVyYXRpb24pLAogICAgICAgICAgICAgICAgInZpZGVvX2NvbnRlbnRfdHlwZSI6IHZpZGVvQ29udGVudFR5cGUsCiAgICAgICAgICAgICAgICAidmlkZW9fc3Vic2l0ZSI6IHN1YnNpdGUsCiAgICAgICAgICAgICAgICAidmlkZW9fdXNlcl90eXBlIjogdXNlclR5cGUKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBhcGkub24oInByb2dyZXNzIiwgZnVuY3Rpb24oZSwgZnBBcGksIGN1cnJlbnRUaW1lKSB7CiAgICAgICAgICBpZiAodmlkZW9EdXJhdGlvbiA8PSAwKSByZXR1cm47CiAgICAgICAgICB2YXIgcGN0ID0gKGN1cnJlbnRUaW1lIC8gdmlkZW9EdXJhdGlvbikgKiAxMDA7CiAgICAgICAgICB2YXIgbWlsZXN0b25lcyA9IFsyNSwgNTAsIDc1XTsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWlsZXN0b25lcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgbSA9IG1pbGVzdG9uZXNbaV07CiAgICAgICAgICAgIGlmIChwY3QgPj0gbSAmJiAhbWlsZXN0b25lc0ZpcmVkW21dKSB7CiAgICAgICAgICAgICAgbWlsZXN0b25lc0ZpcmVkW21dID0gdHJ1ZTsKICAgICAgICAgICAgICBpZiAodHlwZW9mIGd0YWcgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgICAgICAgIGd0YWcoImV2ZW50IiwgInZpZGVvX3Byb2dyZXNzIiwgewogICAgICAgICAgICAgICAgICAidmlkZW9fdGl0bGUiOiB2aWRlb1RpdGxlLAogICAgICAgICAgICAgICAgICAidmlkZW9fZHVyYXRpb24iOiBNYXRoLnJvdW5kKHZpZGVvRHVyYXRpb24pLAogICAgICAgICAgICAgICAgICAidmlkZW9fcGVyY2VudCI6IG0sCiAgICAgICAgICAgICAgICAgICJ2aWRlb19jdXJyZW50X3RpbWUiOiBNYXRoLnJvdW5kKGN1cnJlbnRUaW1lKSwKICAgICAgICAgICAgICAgICAgInZpZGVvX2NvbnRlbnRfdHlwZSI6IHZpZGVvQ29udGVudFR5cGUsCiAgICAgICAgICAgICAgICAgICJ2aWRlb19zdWJzaXRlIjogc3Vic2l0ZSwKICAgICAgICAgICAgICAgICAgInZpZGVvX3VzZXJfdHlwZSI6IHVzZXJUeXBlCiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgYXBpLm9uKCJmaW5pc2giLCBmdW5jdGlvbihlLCBmcEFwaSkgewogICAgICAgICAgaWYgKHR5cGVvZiBndGFnID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAgIGd0YWcoImV2ZW50IiwgInZpZGVvX2NvbXBsZXRlIiwgewogICAgICAgICAgICAgICJ2aWRlb190aXRsZSI6IHZpZGVvVGl0bGUsCiAgICAgICAgICAgICAgInZpZGVvX2R1cmF0aW9uIjogTWF0aC5yb3VuZCh2aWRlb0R1cmF0aW9uKSwKICAgICAgICAgICAgICAidmlkZW9fY29udGVudF90eXBlIjogdmlkZW9Db250ZW50VHlwZSwKICAgICAgICAgICAgICAidmlkZW9fc3Vic2l0ZSI6IHN1YnNpdGUsCiAgICAgICAgICAgICAgInZpZGVvX3VzZXJfdHlwZSI6IHVzZXJUeXBlCiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBhcGkub24oInNlZWsiLCBmdW5jdGlvbihlLCBmcEFwaSwgdGFyZ2V0VGltZSkgewogICAgICAgICAgaWYgKHR5cGVvZiBndGFnID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAgIGd0YWcoImV2ZW50IiwgInZpZGVvX3NlZWsiLCB7CiAgICAgICAgICAgICAgInZpZGVvX3RpdGxlIjogdmlkZW9UaXRsZSwKICAgICAgICAgICAgICAidmlkZW9fc2Vla190byI6IE1hdGgucm91bmQodGFyZ2V0VGltZSksCiAgICAgICAgICAgICAgInZpZGVvX2R1cmF0aW9uIjogTWF0aC5yb3VuZCh2aWRlb0R1cmF0aW9uKSwKICAgICAgICAgICAgICAidmlkZW9fY29udGVudF90eXBlIjogdmlkZW9Db250ZW50VHlwZSwKICAgICAgICAgICAgICAidmlkZW9fc3Vic2l0ZSI6IHN1YnNpdGUKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIGFwaS5vbigicXVhbGl0eSIsIGZ1bmN0aW9uKGUsIGZwQXBpLCBxdWFsaXR5KSB7CiAgICAgICAgICBpZiAodHlwZW9mIGd0YWcgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgICAgZ3RhZygiZXZlbnQiLCAidmlkZW9fcXVhbGl0eV9jaGFuZ2UiLCB7CiAgICAgICAgICAgICAgInZpZGVvX3RpdGxlIjogdmlkZW9UaXRsZSwKICAgICAgICAgICAgICAidmlkZW9fcXVhbGl0eSI6IHF1YWxpdHkgfHwgInVua25vd24iLAogICAgICAgICAgICAgICJ2aWRlb19jb250ZW50X3R5cGUiOiB2aWRlb0NvbnRlbnRUeXBlLAogICAgICAgICAgICAgICJ2aWRlb19zdWJzaXRlIjogc3Vic2l0ZQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKICB9CgogIGF0dGFjaEZsb3dwbGF5ZXJUcmFja2luZygpOwp9KSgpOwo8L3NjcmlwdD4=PHNjcmlwdD4KLy8gR0E0IFNpZ251cCBFdmVudApndGFnKCJldmVudCIsICJzaWduX3VwIiwgewogIG1ldGhvZDogInBhaWQiCn0pOwo8L3NjcmlwdD4KCjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4KPCEtLS8vPCFbQ0RBVEFbCiAgICB2YXIgcCA9IChsb2NhdGlvbi5wcm90b2NvbD09J2h0dHBzOic/J2h0dHBzOi8vdHJlYXN1cmVpc2xhbmRtZWRpYS5jb20vcmV2aXZlL3d3dy9kZWxpdmVyeS90anMucGhwJzonaHR0cDovL3RyZWFzdXJlaXNsYW5kbWVkaWEuY29tL3Jldml2ZS93d3cvZGVsaXZlcnkvdGpzLnBocCcpOwoKICAgIHZhciByPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSo5OTk5OTkpOwogICAgZG9jdW1lbnQud3JpdGUgKCI8IiArICJzY3JpcHQgbGFuZ3VhZ2U9J0phdmFTY3JpcHQnICIpOwogICAgZG9jdW1lbnQud3JpdGUgKCJ0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0nIitwKTsKICAgIGRvY3VtZW50LndyaXRlICgiP3RyYWNrZXJpZD0zJmFtcDthcHBlbmQ9MCZhbXA7cj0iK3IrIic+PCIgKyAiXC9zY3JpcHQ+Iik7Ci8vXV0+LS0+Cjwvc2NyaXB0Pgo8bm9zY3JpcHQ+CiAgPGRpdiBpZD0nbTNfdHJhY2tlcl8zJyBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwcHg7IHRvcDogMHB4OyB2aXNpYmlsaXR5OiBoaWRkZW47Jz4KICAgIDxpbWcgc3JjPSdodHRwczovL3RyZWFzdXJlaXNsYW5kbWVkaWEuY29tL3Jldml2ZS93d3cvZGVsaXZlcnkvdGkucGhwP3RyYWNrZXJpZD0zJmFtcDtjYj0nIHdpZHRoPScwJyBoZWlnaHQ9JzAnIGFsdD0nJyAvPgogIDwvZGl2Pgo8L25vc2NyaXB0Pg==