{"id":6092,"date":"2026-07-06T05:36:03","date_gmt":"2026-07-06T05:36:03","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-4-test-2-listening\/"},"modified":"2026-07-12T03:25:14","modified_gmt":"2026-07-12T03:25:14","slug":"celpip-set-4-test-2-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-4-test-2-listening\/","title":{"rendered":"CELPIP Set 4 Test 2 Listening"},"content":{"rendered":"<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400;600;700;800&#038;display=swap\" rel=\"stylesheet\">\n<div class=\"clp-wrap\" id=\"clpApp\" data-variant=\"A\">\n<p>  <!-- ============ 1. HERO ============ --><\/p>\n<section class=\"clp-hero\" data-screen-label=\"Hero\">\n<div class=\"clp-aurora\"><span><\/span><span><\/span><span><\/span><\/div>\n<div class=\"clp-hero-shimmer\"><\/div>\n<div class=\"clp-hero-badges\">\n      <span class=\"clp-badge-brand\">CELPIP<\/span><br \/>\n      <span class=\"clp-badge-set\">Set 4 &#183; Practice Test 2<\/span>\n    <\/div>\n<h1>CELPIP Listening Practice Test<\/h1>\n<div class=\"clp-hero-chips\">\n      <span class=\"clp-chip\">6 parts<\/span><br \/>\n      <span class=\"clp-chip\">38 questions<\/span><br \/>\n      <span class=\"clp-chip\">~47 minutes<\/span><br \/>\n      <span class=\"clp-chip\">Everything plays once<\/span>\n    <\/div>\n<p>    <button class=\"clp-cta\" id=\"clpStart\">Start test<\/button><br \/>\n  <\/section>\n<p>  <!-- ============ Sticky practice toolbar ============ --><\/p>\n<div class=\"clp-toolbar\" id=\"clpToolbar\" hidden data-screen-label=\"Toolbar\">\n    <span class=\"clp-score-chip\" id=\"clpScoreChip\">Answered 0\/38<\/span><br \/>\n    <span class=\"clp-toolbar-spacer\"><\/span><br \/>\n    <button class=\"clp-tbtn\" id=\"clpTimerToggle\">Timer: on<\/button><br \/>\n    <button class=\"clp-tbtn clp-tbtn-check\" id=\"clpCheck\">Check answers<\/button><br \/>\n    <button class=\"clp-tbtn\" id=\"clpReset\">Reset<\/button>\n  <\/div>\n<p>  <!-- ============ 2. CAT SIMULATOR ============ --><\/p>\n<section class=\"clp-sim\" id=\"clpSim\" data-screen-label=\"CAT Simulator\">\n<div class=\"clp-dots\" id=\"clpDots\"><\/div>\n<div class=\"clp-cat\" id=\"clpCat\"><\/div>\n<\/section>\n<p>  <!-- ============ 3. RESULTS ============ --><\/p>\n<section class=\"clp-results\" id=\"clpResults\" hidden data-screen-label=\"Results\"><\/section>\n<\/div>\n<p><script>eval(atob('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczR0Mi1wMXMxLm1wMyIsIjAuMSI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczR0Mi1wMXMyLm1wMyIsIjAuMiI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczR0Mi1wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczR0Mi1wMi5tcDMiLCIyLjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXM0dDItcDMubXAzIiwiMy4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zNHQyLXA0Lm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczR0Mi1wNS5tcDQiLCI1LjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXM0dDItcDYubXAzIn07dmFyIENMUF9BVURJT19WSURFTz17IjQuMCI6MX07CgooZnVuY3Rpb24oKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3MudGV4dENvbnRlbnQ9IlxuLyogPT09PT09PT09PT09IENFTFBJUCBMaXN0ZW5pbmcgUHJhY3RpY2UgXHUyMDE0IHNjb3BlZCwgV29yZFByZXNzLXNhZmUgPT09PT09PT09PT09ICovXG4uY2xwLXdyYXB7XG4gIC8qIFZBUklBTlRfQ0hST01FX1NUQVJUICovXG4gIC0tYmFyLWJnOiNFOEVCRUY7XG4gIC0tYmFyLWJvcmRlcjojRDNEOUUwO1xuICAtLWJhci10ZXh0OiMxRjI5Mzc7XG4gIC0tcGFuZWwtbWVkaWEtYmc6I0Y0RjVGNztcbiAgLS1wYW5lbC1tZWRpYS1ib3JkZXI6I0UzRTZFQTtcbiAgLS1tZWRpYS1jYXJkLWJnOiNFQ0VFRjE7XG4gIC0tbWVkaWEtY2FyZC1ib3JkZXI6I0Q4RERFMztcbiAgLS1wYW5lbC1xLWJnOiNFOUY0Rjc7XG4gIC0tcGFuZWwtcS1ib3JkZXI6I0Q2RThFRDtcbiAgLS1kZC1vcGVuLWJnOiNDQkVCRjQ7XG4gIC8qIFZBUklBTlRfQ0hST01FX0VORCAqL1xuICAtLW5hdnk6IzA1MEUyMDsgLS1kYXJrOiMwQTE2Mjg7IC0tYjkwMDojMEQyMzUyOyAtLWI3MDA6IzEyNDVBODsgLS1iNTAwOiMyNTYzRUI7XG4gIC0tYjQwMDojM0I4MkY2OyAtLWIyMDA6IzkzQzVGRDsgLS1iMTAwOiNEQkVBRkU7IC0tYjUwOiNFRkY2RkY7XG4gIC0tdGVhbDojMEQ5NDg4OyAtLWN5YW46IzA2QjZENDsgLS1ncmVlbjojMTBCOTgxOyAtLWdyZWVuNTA6I0VDRkRGNTtcbiAgLS1yb3NlOiNGNDNGNUU7IC0tb3JhbmdlOiNGOTczMTY7XG4gIC0tdGV4dDojMEYxNzJBOyAtLW11dGVkOiM0NzU1Njk7IC0tc3VidGxlOiM5NEEzQjg7IC0tYm9yZGVyOiNFMkU4RjA7XG4gIC0tY3JpbXNvbjojQjQyQjNDOyAtLXdoaXRlOiNGRkZGRkY7IC0tcGFnZTojRjhGQUZGO1xuICBmb250LWZhbWlseTonUGx1cyBKYWthcnRhIFNhbnMnLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLHNhbnMtc2VyaWY7XG4gIGNvbG9yOnZhcigtLXRleHQpO1xuICBtYXgtd2lkdGg6MTE0MHB4OyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjE2cHggMTZweCA0OHB4O1xuICBsaW5lLWhlaWdodDoxLjU7IGZvbnQtc2l6ZToxNnB4O1xufVxuLmNscC13cmFwICosIC5jbHAtd3JhcCAqOjpiZWZvcmUsIC5jbHAtd3JhcCAqOjphZnRlcnsgYm94LXNpemluZzpib3JkZXItYm94OyB9XG4uY2xwLXdyYXAgYnV0dG9ueyBmb250LWZhbWlseTppbmhlcml0OyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC13cmFwIGgxLC5jbHAtd3JhcCBoMiwuY2xwLXdyYXAgaDMsLmNscC13cmFwIHB7IG1hcmdpbjowOyB9XG5cbi8qID09PT09PT09PT09PSBIRVJPID09PT09PT09PT09PSAqL1xuLmNscC1oZXJve1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyBib3JkZXItcmFkaXVzOjIycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbmF2eSk7IGNvbG9yOiNmZmY7XG4gIHBhZGRpbmc6MzZweCA0MHB4O1xuICBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjE0cHg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7XG4gIGJveC1zaGFkb3c6MCAyMHB4IDQwcHggLTIwcHggcmdiYSg1LDE0LDMyLC40NSksIDAgNHB4IDEycHggLTZweCByZ2JhKDUsMTQsMzIsLjMpO1xufVxuLmNscC1hdXJvcmF7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lOyB9XG4uY2xwLWF1cm9yYSBzcGFue1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXJhZGl1czo1MCU7IGZpbHRlcjpibHVyKDYwcHgpOyBvcGFjaXR5Oi41O1xuICBhbmltYXRpb246Y2xwRmxvYXQgMTRzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTtcbn1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDEpeyB3aWR0aDo0MjBweDsgaGVpZ2h0OjQyMHB4OyBsZWZ0Oi0xMjBweDsgdG9wOi0yMDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMxMjQ1QTggMCUsdHJhbnNwYXJlbnQgNzAlKTsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMil7IHdpZHRoOjM4MHB4OyBoZWlnaHQ6MzgwcHg7IHJpZ2h0Oi04MHB4OyB0b3A6LTE2MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzBEOTQ4OCAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LTRzOyB9XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgzKXsgd2lkdGg6MzQwcHg7IGhlaWdodDozNDBweDsgcmlnaHQ6MjIlOyBib3R0b206LTI0MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzI1NjNFQiAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LThzOyB9XG5Aa2V5ZnJhbWVzIGNscEZsb2F0e1xuICBmcm9teyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKDEpOyB9XG4gIHRveyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoNDBweCwyNnB4LDApIHNjYWxlKDEuMTIpOyB9XG59XG4uY2xwLWhlcm8tc2hpbW1lcntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7XG4gIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDExNWRlZywgdHJhbnNwYXJlbnQgMzAlLCByZ2JhKDE0NywxOTcsMjUzLC4xMCkgNDUlLCByZ2JhKDYsMTgyLDIxMiwuMTIpIDUwJSwgdHJhbnNwYXJlbnQgNjUlKTtcbiAgYmFja2dyb3VuZC1zaXplOjI1MCUgMTAwJTtcbiAgYW5pbWF0aW9uOmNscFNoaW1tZXIgN3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGNscFNoaW1tZXJ7IDAle2JhY2tncm91bmQtcG9zaXRpb246MTIwJSAwO30gNTUle2JhY2tncm91bmQtcG9zaXRpb246LTQwJSAwO30gMTAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IH1cbi5jbHAtaGVyby1iYWRnZXN7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWJhZGdlLWJyYW5ke1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMnB4O1xuICBsZXR0ZXItc3BhY2luZzouMTJlbTsgcGFkZGluZzo1cHggMTJweDsgYm9yZGVyLXJhZGl1czo2cHg7XG59XG4uY2xwLWJhZGdlLXNldHsgY29sb3I6dmFyKC0tYjIwMCk7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IH1cbi5jbHAtaGVybyBoMXsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZTpjbGFtcCgyNnB4LDR2dyw0MHB4KTsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzotLjAyZW07IGxpbmUtaGVpZ2h0OjEuMTI7IH1cbi5jbHAtaGVyby1jaGlwc3sgZGlzcGxheTpmbGV4OyBnYXA6OHB4OyBmbGV4LXdyYXA6d3JhcDsgcG9zaXRpb246cmVsYXRpdmU7IH1cbi5jbHAtY2hpcHtcbiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOSk7IGJvcmRlcjoxcHggc29saWQgcmdiYSgxNDcsMTk3LDI1MywuMjUpO1xuICBjb2xvcjojREJFQUZFOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyBwYWRkaW5nOjZweCAxNHB4OyBib3JkZXItcmFkaXVzOjMycHg7XG4gIGJhY2tkcm9wLWZpbHRlcjpibHVyKDRweCk7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYmFja2dyb3VuZCAuMjVzIGVhc2U7XG59XG4uY2xwLWNoaXA6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE1KTsgfVxuLmNscC1jdGF7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBmb250LXNpemU6MTZweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjEzcHggMzRweDsgbWFyZ2luLXRvcDoycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDM3LDk5LDIzNSwuNjUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjJzIGVhc2UsIGJveC1zaGFkb3cgLjIycyBlYXNlLCBiYWNrZ3JvdW5kIC4yMnMgZWFzZTtcbn1cbi5jbHAtY3RhOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDp2YXIoLS1iNDAwKTsgYm94LXNoYWRvdzowIDE0cHggMjZweCAtOHB4IHJnYmEoMzcsOTksMjM1LC43NSk7IH1cblxuLyogPT09PT09PT09PT09IFNUSUNLWSBUT09MQkFSID09PT09PT09PT09PSAqL1xuLmNscC10b29sYmFyW2hpZGRlbl17IGRpc3BsYXk6bm9uZTsgfVxuLmNscC10b29sYmFye1xuICBwb3NpdGlvbjpzdGlja3k7IHRvcDo4cHg7IHotaW5kZXg6NjA7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgZmxleC13cmFwOndyYXA7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTIpOyBiYWNrZHJvcC1maWx0ZXI6Ymx1cig4cHgpO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDtcbiAgcGFkZGluZzo4cHggMTJweDsgbWFyZ2luOjE4cHggMCAwO1xuICBib3gtc2hhZG93OjAgOHB4IDI0cHggLTE0cHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA2cHggLTRweCByZ2JhKDE1LDIzLDQyLC4xMik7XG4gIG1pbi1oZWlnaHQ6NTJweDtcbn1cbi5jbHAtc2NvcmUtY2hpcHtcbiAgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjdweCAxNnB4O1xufVxuLmNscC10YnRue1xuICBib3JkZXItcmFkaXVzOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6OXB4IDE2cHg7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYmFja2dyb3VuZDojZmZmOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG4gIG1pbi1oZWlnaHQ6NDBweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJveC1zaGFkb3cgLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLXRidG46aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpOyBib3gtc2hhZG93OjAgNnB4IDE0cHggLThweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC10YnRuLWNoZWNreyBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgYm9yZGVyLWNvbG9yOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgfVxuLmNscC10YnRuLWNoZWNrOmhvdmVyeyBiYWNrZ3JvdW5kOiMwY2E2Nzg7IH1cbi5jbHAtdGJ0bltkaXNhYmxlZF17IG9wYWNpdHk6LjU7IGN1cnNvcjpub3QtYWxsb3dlZDsgdHJhbnNmb3JtOm5vbmU7IGJveC1zaGFkb3c6bm9uZTsgfVxuLmNscC10b29sYmFyLXNwYWNlcnsgZmxleDoxOyB9XG5cbi8qID09PT09PT09PT09PSBDQVQgU0lNVUxBVE9SID09PT09PT09PT09PSAqL1xuLmNscC1zaW17IG1hcmdpbi10b3A6MThweDsgfVxuLmNscC1kb3RzeyBkaXNwbGF5OmZsZXg7IGdhcDo2cHg7IG1hcmdpbjowIDAgMTBweCAycHg7IH1cbi5jbHAtZG90e1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tc3VidGxlKTtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjRweCAxMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjI1cyBlYXNlLCBjb2xvciAuMjVzIGVhc2U7XG59XG4uY2xwLWRvdC5jbHAtZG9uZXsgYmFja2dyb3VuZDp2YXIoLS1iMTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWIyMDApOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuLmNscC1kb3QuY2xwLWN1cnsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyB9XG4uY2xwLWRvdC5jbHAtY2xpY2thYmxleyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC1kb3Q6bm90KC5jbHAtY2xpY2thYmxlKXsgY3Vyc29yOmRlZmF1bHQ7IH1cblxuLmNscC1jYXR7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7IG92ZXJmbG93OnZpc2libGU7XG4gIGJhY2tncm91bmQ6I2ZmZjtcbiAgYm94LXNoYWRvdzowIDEwcHggMzBweCAtMThweCByZ2JhKDE1LDIzLDQyLC4yMiksIDAgMnB4IDhweCAtNXB4IHJnYmEoMTUsMjMsNDIsLjEpO1xufVxuLmNscC1iYXJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTJweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iYXItYmcpOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czoxMHB4IDEwcHggMCAwO1xuICBwYWRkaW5nOjlweCAxMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG59XG4uY2xwLWJhci10aXRsZXsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYmFyLXRleHQpOyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWJhci10aW1lcnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgd2hpdGUtc3BhY2U6bm93cmFwOyB9XG4uY2xwLWJhci10aW1lciBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtbmV4dHtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNzAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NHB4O1xuICBmb250LXNpemU6MTFweDsgZm9udC13ZWlnaHQ6NzAwOyBsZXR0ZXItc3BhY2luZzouMDhlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICBwYWRkaW5nOjdweCAxNnB4OyBtaW4taGVpZ2h0OjMwcHg7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZSwgdHJhbnNmb3JtIC4ycyBlYXNlO1xufVxuLmNscC1uZXh0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI5MDApOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgfVxuLmNscC1zY3JlZW57IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG5cbi5jbHAtaW5zdHJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgZ2FwOjlweDtcbiAgcGFkZGluZzoxNHB4IDE2cHggMTJweDsgYmFja2dyb3VuZDojZmZmO1xufVxuLmNscC1pbmZve1xuICBmbGV4Om5vbmU7IHdpZHRoOjE4cHg7IGhlaWdodDoxOHB4OyBtYXJnaW4tdG9wOjJweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjExcHg7IGZvbnQtc3R5bGU6aXRhbGljO1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtZmFtaWx5Okdlb3JnaWEsc2VyaWY7XG59XG4uY2xwLWluc3RyIHB7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLWI5MDApOyB9XG5cbi8qIGludHJvIHNjcmVlbiAqL1xuLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nOjZweCAyMHB4IDI2cHggNDRweDsgYmFja2dyb3VuZDojZmZmOyB9XG4uY2xwLWludHJvLWJvZHkgaDN7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo4MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEycHg7IH1cbi5jbHAtYnVsbGV0c3sgbGlzdC1zdHlsZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IG1heC13aWR0aDo2NDBweDsgfVxuLmNscC1idWxsZXRzIGxpe1xuICBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1iOTAwKTtcbiAgcGFkZGluZy1ib3R0b206MTBweDsgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG59XG4uY2xwLWJ1bGxldHMgbGk6OmJlZm9yZXsgY29udGVudDpcIlwiOyBmbGV4Om5vbmU7IHdpZHRoOjhweDsgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IG1hcmdpbi10b3A6NnB4OyB9XG5cbi8qIG1lZGlhIHNjcmVlbiAqL1xuLmNscC1tZWRpYS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1tZWRpYS1iZyk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXBhbmVsLW1lZGlhLWJvcmRlcik7XG4gIHBhZGRpbmc6MzRweCAyMHB4IDI2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxNHB4O1xufVxuLmNscC1tZWRpYS1jYXJke1xuICB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6NTIwcHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbWVkaWEtY2FyZC1iZyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIHBhZGRpbmc6MjJweCAyNnB4O1xufVxuLmNscC1tZWRpYS1jYXJkLmNscC1pcy12aWRlb3sgbWF4LXdpZHRoOjY2MHB4OyBwYWRkaW5nOjEycHg7IH1cbi5jbHAtbWVkaWEtem9uZXsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxOHB4OyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtem9uZXtcbiAgYXNwZWN0LXJhdGlvOjE2Lzk7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOnZhcigtLWRhcmspO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgbWFyZ2luLWJvdHRvbToxMnB4O1xuICBjb2xvcjojZmZmO1xufVxuLmNscC1zcGVha2Vye1xuICBmbGV4Om5vbmU7IHdpZHRoOjU2cHg7IGhlaWdodDo1NnB4OyBib3JkZXItcmFkaXVzOjhweDsgYmFja2dyb3VuZDojZmZmO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGNvbG9yOnZhcigtLW11dGVkKTtcbn1cbi5jbHAtaXMtdmlkZW8gLmNscC1zcGVha2VyeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEyKTsgYm9yZGVyOm5vbmU7IGNvbG9yOiNmZmY7IHdpZHRoOjY0cHg7IGhlaWdodDo2NHB4OyBib3JkZXItcmFkaXVzOjUwJTsgfVxuLmNscC1tZWRpYS1tYWlueyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtbWFpbnsgcGFkZGluZzowIDEwcHggNHB4OyB9XG4uY2xwLW1lZGlhLWxhYmVseyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1wcm9ncmVzc3sgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo2cHg7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7IG92ZXJmbG93OmhpZGRlbjsgfVxuLmNscC1pcy12aWRlbyAuY2xwLXByb2dyZXNzeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjYpOyB9XG4uY2xwLXByb2dyZXNzLWZpbGx7IGhlaWdodDoxMDAlOyB3aWR0aDowJTsgYmFja2dyb3VuZDp2YXIoLS1jeWFuKTsgYm9yZGVyLXJhZGl1czo2cHg7IHRyYW5zaXRpb246d2lkdGggLjNzIGxpbmVhcjsgfVxuLmNscC1tZWRpYS1tZXRhe1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjYwMDtcbn1cbi5jbHAtbWVkaWEtbWV0YSBzdmd7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtb25jZS1ub3RleyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC13ZWlnaHQ6NjAwOyB9XG5cbi8qIHF1ZXN0aW9uIHNjcmVlbiAqL1xuLmNscC1xLXBhbmVse1xuICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLXEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1xLWJvcmRlcik7XG4gIHBhZGRpbmc6MjBweCAyMnB4IDMwcHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MjBweDtcbn1cbi5jbHAtcXsgZm9udC1zaXplOjE1LjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbGluZS1oZWlnaHQ6MjsgfVxuLmNscC1xbnVteyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtZGR7XG4gIGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDtcbiAgYm9yZGVyOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IGRvdHRlZCB2YXIoLS1zdWJ0bGUpOyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBjb2xvcjp2YXIoLS1iNzAwKTsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDtcbiAgcGFkZGluZzo0cHggOHB4IDNweDsgbWFyZ2luOjAgMnB4OyBtaW4taGVpZ2h0OjMycHg7IG1heC13aWR0aDoxMDAlO1xuICBib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOyB2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC1kZDpob3ZlcnsgYmFja2dyb3VuZDpyZ2JhKDM3LDk5LDIzNSwuMDgpOyB9XG4uY2xwLWRkLmNscC1vcGVueyBiYWNrZ3JvdW5kOnZhcigtLWRkLW9wZW4tYmcpOyB9XG4uY2xwLWRkIC5jbHAtZGQtdGV4dHtcbiAgb3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOyB3aGl0ZS1zcGFjZTpub3dyYXA7IG1heC13aWR0aDo0MjBweDtcbn1cbi5jbHAtZGQgLmNscC1kZC1jYXJldHsgZm9udC1zaXplOjlweDsgY29sb3I6dmFyKC0tYjcwMCk7IGZsZXg6bm9uZTsgfVxuLmNscC1kZC5jbHAtdW5hbnN3ZXJlZCAuY2xwLWRkLXRleHR7IGxldHRlci1zcGFjaW5nOjJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgfVxuLmNscC1kZC5jbHAtbWFyay1yaWdodHsgYmFja2dyb3VuZDp2YXIoLS1ncmVlbjUwKTsgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojMDQ3ODU3OyB9XG4uY2xwLWRkLmNscC1tYXJrLXdyb25neyBiYWNrZ3JvdW5kOiNGRkYxRjI7IGJvcmRlcjoycHggc29saWQgdmFyKC0tcm9zZSk7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojQkUxMjNDOyB9XG4uY2xwLWRkW2Rpc2FibGVkXXsgY3Vyc29yOmRlZmF1bHQ7IH1cbi5jbHAtcmV2ZWFse1xuICBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MTMuNXB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOiMwNDc4NTc7IGxpbmUtaGVpZ2h0OjEuNTtcbiAgbWFyZ2luOjJweCAwIDAgMjZweDtcbn1cbi5jbHAtcmV2ZWFsIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC10b2RvLXRhZ3tcbiAgZm9udC1zaXplOjEwcHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IGNvbG9yOnZhcigtLW9yYW5nZSk7XG4gIGJvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yOyBib3JkZXItcmFkaXVzOjRweDsgcGFkZGluZzoxcHggNnB4OyBtYXJnaW4tbGVmdDo4cHg7IHZlcnRpY2FsLWFsaWduOjJweDtcbn1cblxuLyogZHJvcGRvd24gcG9wdXAgKi9cbi5jbHAtcG9we1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo4MDsgd2lkdGg6bWluKDM0MHB4LCBjYWxjKDEwMHZ3IC0gNDhweCkpO1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBib3gtc2hhZG93OjAgMThweCA0MHB4IC0xMnB4IHJnYmEoMTUsMjMsNDIsLjI4KSwgMCA0cHggMTJweCAtNnB4IHJnYmEoMTUsMjMsNDIsLjE0KTtcbiAgcGFkZGluZzo2cHg7IFxufVxuLmNscC1vcHR7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTFweDsgd2lkdGg6MTAwJTtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHRleHQtYWxpZ246bGVmdDtcbiAgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7XG4gIHBhZGRpbmc6MTBweCAxMnB4OyBtaW4taGVpZ2h0OjQycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xuICBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZTtcbn1cbi5jbHAtb3B0Omxhc3QtY2hpbGR7IGJvcmRlci1ib3R0b206bm9uZTsgfVxuLmNscC1vcHQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC1yYWRpb3tcbiAgZmxleDpub25lOyB3aWR0aDoxN3B4OyBoZWlnaHQ6MTdweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJvcmRlcjoycHggc29saWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDojZmZmOyBwb3NpdGlvbjpyZWxhdGl2ZTtcbn1cbi5jbHAtb3B0LmNscC1zZWwgLmNscC1yYWRpb3sgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyB9XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW86OmFmdGVye1xuICBjb250ZW50OlwiXCI7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDoyLjVweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7XG59XG5cbi8qIHByZS1zdGFydCAvIGZpbmlzaCAqL1xuLmNscC1pZGxle1xuICBwYWRkaW5nOjU2cHggMjRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4O1xufVxuLmNscC1pZGxlIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWF4LXdpZHRoOjQ4MHB4OyBtYXJnaW46MCBhdXRvOyB9XG4uY2xwLWZpbmlzaHsgcGFkZGluZzo0OHB4IDI0cHggNTZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1maW5pc2ggaDN7IGZvbnQtc2l6ZToyMnB4OyBmb250LXdlaWdodDo4MDA7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1maW5pc2ggcHsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjIycHg7IH1cbi5jbHAtZmluaXNoLWNoZWNre1xuICBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDMycHg7IG1pbi1oZWlnaHQ6NDRweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMTYsMTg1LDEyOSwuNTUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSwgYmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZmluaXNoLWNoZWNrOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG5cbi8qID09PT09PT09PT09PSBSRVNVTFRTID09PT09PT09PT09PSAqL1xuLmNscC1yZXN1bHRzeyBtYXJnaW4tdG9wOjMwcHg7IH1cbi5jbHAtcmVzdWx0cyBoMnsgZm9udC1zaXplOjI0cHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMWVtOyBtYXJnaW4tYm90dG9tOjE2cHg7IH1cbi5jbHAtcmVzLWdyaWR7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gMWZyOyBnYXA6MTZweDsgYWxpZ24taXRlbXM6c3RyZXRjaDsgfVxuLmNscC1jYXJke1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBwYWRkaW5nOjIycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA4cHggLTZweCByZ2JhKDE1LDIzLDQyLC4wOCk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYm94LXNoYWRvdyAuMjVzIGVhc2U7XG59XG4uY2xwLWNhcmQ6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBib3gtc2hhZG93OjAgMTZweCAzNnB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjMpOyB9XG4uY2xwLXJpbmctY2FyZHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDsgbWluLXdpZHRoOjIyMHB4OyB9XG4uY2xwLXJpbmctd3JhcHsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEzMnB4OyBoZWlnaHQ6MTMycHg7IH1cbi5jbHAtcmluZy13cmFwIHN2Z3sgdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpOyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXJpbmctbnVte1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47XG4gIGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZm9udC13ZWlnaHQ6ODAwO1xufVxuLmNscC1yaW5nLW51bSBieyBmb250LXNpemU6MjhweDsgbGluZS1oZWlnaHQ6MTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtcmluZy1udW0gc3BhbnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1yaW5nLWNhcmQgaDN7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1wYXJ0LWNoaXBzeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBnYXA6MTBweDsgbWFyZ2luLXRvcDoxMnB4OyB9XG4uY2xwLXBhcnQtY2hpcHtcbiAgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjhweCAxNnB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGNvbG9yOnZhcigtLWI5MDApO1xufVxuLmNscC1wYXJ0LWNoaXAgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLWNsYi1yb3d7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDsgZmxleC13cmFwOndyYXA7IG1hcmdpbi10b3A6MTZweDtcbiAgcGFkZGluZzoxNHB4IDE2cHg7IGJvcmRlci1yYWRpdXM6MTBweDsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO1xufVxuLmNscC1jbGItYmFkZ2V7XG4gIGJhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7XG4gIGJvcmRlci1yYWRpdXM6MTBweDsgcGFkZGluZzo4cHggMTZweDtcbn1cbi5jbHAtY2xiLXJvdyBweyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7IGZsZXg6MTsgbWluLXdpZHRoOjIwMHB4OyB9XG4uY2xwLXRyYW5zY3JpcHRzeyBtYXJnaW4tdG9wOjE2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTBweDsgfVxuLmNscC10ci1jYXJkeyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtdHItaGVhZHtcbiAgd2lkdGg6MTAwJTsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBnYXA6MTBweDtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHBhZGRpbmc6MTVweCAyMHB4OyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtaW4taGVpZ2h0OjQ4cHg7XG59XG4uY2xwLXRyLWhlYWQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC10ci1oZWFkIC5jbHAtdHItY2FyZXR7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtc2l6ZToxMXB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZTsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItY2FyZXR7IHRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTsgfVxuLmNscC10ci1ib2R5eyBkaXNwbGF5Om5vbmU7IHBhZGRpbmc6MCAyMHB4IDE4cHg7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjUwMDsgbGluZS1oZWlnaHQ6MS43OyB9XG4uY2xwLXRyLWNhcmQuY2xwLW9wZW4gLmNscC10ci1ib2R5eyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXRyLXRvZG97IGNvbG9yOnZhcigtLW9yYW5nZSk7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjEyLjVweDsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo4cHg7IH1cblxuLyogc2Nyb2xsIHJldmVhbCAqL1xuLmNscC1yZXZ7IG9wYWNpdHk6MDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTZweCk7IHRyYW5zaXRpb246b3BhY2l0eSAuNXMgZWFzZSwgdHJhbnNmb3JtIC41cyBlYXNlOyB9XG4uY2xwLXJldi5jbHAtaW57IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cblxuLyogPT09PT09PT09PT09IFJFU1BPTlNJVkUgPT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDo3MDBweCl7XG4gIC5jbHAtd3JhcHsgcGFkZGluZzoxMHB4IDEwcHggNDBweDsgfVxuICAuY2xwLWhlcm97IHBhZGRpbmc6MjhweCAyMnB4OyBib3JkZXItcmFkaXVzOjE2cHg7IH1cbiAgLmNscC1xeyBmb250LXNpemU6MTVweDsgfVxuICAuY2xwLWRkeyBtaW4taGVpZ2h0OjQwcHg7IH1cbiAgLmNscC1kZCAuY2xwLWRkLXRleHR7IG1heC13aWR0aDoxODBweDsgfVxuICAuY2xwLWJhcnsgZmxleC13cmFwOndyYXA7IH1cbiAgLmNscC1iYXItdGl0bGV7IGZsZXgtYmFzaXM6MTAwJTsgfVxuICAuY2xwLXEtcGFuZWx7IHBhZGRpbmc6MTZweCAxNHB4IDI2cHg7IH1cbiAgLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nLWxlZnQ6MjBweDsgfVxuICAuY2xwLXJlcy1ncmlkeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyOyB9XG4gIC5jbHAtbWVkaWEtY2FyZHsgcGFkZGluZzoxNnB4OyB9XG59XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7XG4gIC5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7XG4gICAgYW5pbWF0aW9uOm5vbmUgIWltcG9ydGFudDsgdHJhbnNpdGlvbjpub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmNscC1yZXZ7IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cbn1cblxuLmNscC1hdXJvcmEgc3BhbntmaWx0ZXI6Ymx1cigzNnB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX1cbi5jbHAtaGVyby1zaGltbWVye3dpbGwtY2hhbmdlOmJhY2tncm91bmQtcG9zaXRpb259XG4iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7fSkoKTsKCid1c2Ugc3RyaWN0JzsKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFRFU1RfREFUQSBcdTIwMTQgc3dhcCBpbiBuZXcgc2V0cyBoZXJlIHdpdGhvdXQgdG91Y2hpbmcgbWFya3VwLgogICBTaGFwZTogeyBwYXJ0czpbeyBuYW1lLCBoZWFkZXJUaXRsZSwgaW50cm9UaXRsZSwgaW50cm9CdWxsZXRzW10sCiAgICAgICAgICAgIHFJbnN0cnVjdGlvbiwgdHJhbnNjcmlwdCwgc2VjdGlvbnM6W3sgbGFiZWwsIG1lZGlhVHlwZSwKICAgICAgICAgICAgZHVyYXRpb24oc2VjKSwgdGltZU1pbnV0ZXMsIG1lZGlhSW5zdHJ1Y3Rpb24sCiAgICAgICAgICAgIHF1ZXN0aW9uczpbeyBuLCBzdGVtLCBvcHRpb25zWzRdLCBrZXkoMS00KSwgdG9kbz8gfV0gfV0gfV0gfQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFRFU1RfREFUQSA9IHsidGVzdExhYmVsIjoiU2V0IDQgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiIsInNldE5vIjo0LCJ0ZXN0Tm8iOjIsInBhcnRzIjpbeyJuYW1lIjoiUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaGVhZGVyVGl0bGUiOiJTZXQgNCBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIGluIGEgcGhhcm1hY3kuIFRoZSBtYW4gaXMgYXNraW5nIGFib3V0IGV5ZSBkcm9wcy4gVGhlIHBoYXJtYWNpc3Qgc2hvd3MgaGltIGRpZmZlcmVudCB0eXBlcyBvZiBub24tcHJlc2NyaXB0aW9uIGRyb3BzLiBJdCBwbGF5cyBpbiB0aHJlZSBzZWN0aW9ucywgYW5kIGVhY2ggc2VjdGlvbiBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgZWFjaCBzZWN0aW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIGluIGEgcGhhcm1hY3kuIFRoZSBtYW4gaXNcbmFza2luZyBhYm91dCBleWUgZHJvcHMuIFRoZSBwaGFybWFjaXN0IHNob3dzIGhpbSBkaWZmZXJlbnQgdHlwZXMgb2Ygbm9uLXByZXNjcmlwdGlvblxuZHJvcHMuXG5cblxuU2VjdGlvbiAxOlxuV09NQU46ICAgICAgICBHb29kIG1vcm5pbmcuIENhbiBJIGhlbHAgeW91P1xuTUFOOiBJXHUyMDE5bSBoYXZpbmcgYSBwcm9ibGVtIHdpdGggbXkgZXllcy4gVGhleSBhcmUgcmVkIGFuZCByZWFsbHkgaXRjaHkgYW5kIGRyaXZpbmcgbWVcbmNyYXp5LiBJXHUyMDE5bSB3b25kZXJpbmcgaWYgeW91IGNhbiByZWNvbW1lbmQgc29tZXRoaW5nLlxuV09NQU46ICAgICAgICBJIGNhbiBzZWUgeW91ciBleWVzIGxvb2sgcmVhbGx5IHNvcmUuIEhhdmUgeW91IGdvbmUgdG8geW91ciBkb2N0b3I\/XG5NQU46IE5vLCBub3QgeWV0LiBJIHRob3VnaHQgSVx1MjAxOWQgZ2V0IHNvbWUgZHJvcHMgdG8gbWFrZSB0aGUgcHJvYmxlbSBnbyBhd2F5IGFzIHF1aWNrIGFzXG5wb3NzaWJsZS5cbldPTUFOOiAgICAgICAgV2VsbCwgd2UgaGF2ZSBvdmVyLXRoZS1jb3VudGVyIGV5ZSBkcm9wcyB0aGF0IG1pZ2h0IGhlbHAuXG5NQU46IFdoYXQgZG9lcyBvdmVyLXRoZS1jb3VudGVyIG1lYW4\/XG5XT01BTjogSXQgbWVhbnMgdGhhdCB0aGUgcHJvZHVjdCBkb2Vzbid0IHJlcXVpcmUgYSBwcmVzY3JpcHRpb24uIFVzdWFsbHkgYW4gb3Zlci1cbnRoZS1jb3VudGVyIHByb2R1Y3QgaXMgbXVjaCBsZXNzIGV4cGVuc2l2ZSwgYnV0IGl0IGNhbiBiZSBqdXN0IGFzIGdvb2QgYXMgdGhlIHByZXNjcmlwdGlvbi5cbk1BTjogVGhhdFx1MjAxOXMgd2hhdCBJIHdhbnQuIFdoaWNoIGV5ZSBkcm9wcyBzaG91bGQgSSBnZXQ\/XG5XT01BTjogV2VsbCwgdGhpcyBicmFuZCBpcyB1c3VhbGx5IGVmZmVjdGl2ZS4gQnV0LCBpdCBkZXBlbmRzIG9uIHdoYXRcdTIwMTlzIHdyb25nIHdpdGhcbnlvdXIgZXllcy4gSWYgeW91IGhhdmUgYW4gaW5mZWN0aW9uLCBmb3IgZXhhbXBsZSwgeW91IHJlYWxseSBzaG91bGQgc2VlIHlvdXIgZG9jdG9yLlxuTUFOOiBPSy4gSVx1MjAxOWxsIGdldCB0aGVzZSwgYnV0IGlmIHRoZXkgZG9uXHUyMDE5dCBoZWxwIGluIGEgZmV3IGRheXMsIElcdTIwMTlsbCBzZWUgdGhlIGRvY3Rvci5cblNlY3Rpb24gMjpcbk1BTjogSGkuIEkgd2FzIGhlcmUgYSBmZXcgZGF5cyBhZ28gYW5kIGdvdCBzb21lIGV5ZSBkcm9wcy5cblxmV09NQU46ICAgICAgICBZZXMsIEkgcmVtZW1iZXIuIERpZCB0aGUgZHJvcHMgaGVscD9cbk1BTjogTm90IGFzIG11Y2ggYXMgSSBob3BlZCwgc28gSSB0b29rIHlvdXIgYWR2aWNlIGFuZCB3ZW50IHRvIHRoZSBkb2N0b3IuIEhlIGdhdmUgbWVcbnRoaXMgcHJlc2NyaXB0aW9uLlxuV09NQU46ICAgICAgICBEbyB5b3UgaGF2ZSBhIGhlYWx0aCBwbGFuIHRoYXQgY292ZXJzIHlvdXIgcHJlc2NyaXB0aW9ucz9cbk1BTjogTm8sIEkgZG9uJ3QuIFNvIGhvdyBtdWNoIHdpbGwgdGhlc2UgZHJvcHMgY29zdD9cbldPTUFOOiAkMzAuIFRoZXNlIGFyZSByZWFsbHkgZ29vZCBleWUgZHJvcHMuIFRoZXkgc2hvdWxkIHRha2UgY2FyZSBvZiB5b3VyXG5wcm9ibGVtIHF1aXRlIHF1aWNrbHkuXG5NQU46IFllYWgsIGJ1dCAkMzAgaXMgYSBsb3QuIFRoZSBvdGhlciBleWUgZHJvcHMgd2VyZSBvbmx5ICQxMCBhbmQgdGhleSBtYWRlIG15IGV5ZXNcbmZlZWwgYSBsaXR0bGUgYmV0dGVyLiBXaHkgaXMgdGhpcyBwcmVzY3JpcHRpb24gc28gbXVjaCBtb3JlIGV4cGVuc2l2ZT9cbldPTUFOOiBXZWxsLCBJIHRoaW5rIGl0XHUyMDE5cyBqdXN0IHRoZSB3YXkgcGhhcm1hY2V1dGljYWwgY29tcGFuaWVzIHNldCB0aGVpciBwcmljZXMuXG5Ib3dldmVyLCB5b3VyIGRvY3RvciBrbm93cyB0aGUgYmVzdCBtZWRpY2luZSB0byBzb2x2ZSB5b3VyIHByb2JsZW0sIHNvIHlvdSBjYW4gdHJ1c3RcbnRoYXQgdGhlc2UgYXJlIGV4Y2VsbGVudCBleWUgZHJvcHMuIElcdTIwMTlsbCBoYXZlIHRoZW0gcmVhZHkgZm9yIHlvdSBpbiB0ZW4gbWludXRlcy5cblNlY3Rpb24gMzpcbldPTUFOOiBZb3VyIGV5ZSBkcm9wcyBhcmUgcmVhZHkuIFVzZSB0aGUgZHJvcHMgZXZlcnkgZGF5IGZvciB0aGUgbmV4dCBzZXZlbiBkYXlzLlxuUHV0IHR3byBkcm9wcyBpbiBlYWNoIGV5ZSB0aHJlZSB0aW1lcyBhIGRheS4gVHJ5IHRvIHNwYWNlIHRoZSB0aW1lIG91dCBldmVubHkgb3ZlciB0aGVcbmNvdXJzZSBvZiB0aGUgZGF5LlxuTUFOOiBJIGNhbiBkbyB0aGF0LCBubyBwcm9ibGVtLlxuV09NQU46IFRoZSBlYXNpZXN0IHdheSB0byBnZXQgdGhlIGRyb3BzIGludG8geW91ciBleWUgaXMgdG8gcHVsbCBvdXQgdGhlIGJvdHRvbVxuZXllbGlkIGFuZCBzcXVlZXplIGluIHRoZSB0d28gZHJvcHMuIFRoZW4gY2xvc2UgdGhlIGV5ZSBhbmQgcnViIHZlcnkgZ2VudGx5IHRvIG1vdmUgdGhlXG5kcm9wcyBhcm91bmQuIFRoZW4gZG8gdGhlIG90aGVyIGV5ZS5cbk1BTjogVGhhdCBzb3VuZHMgcmVhbGx5IGhhcmQsIGJ1dCBJXHUyMDE5bGwgZ2l2ZSBpdCBhIHRyeS4gSSBkb25cdTIwMTl0IGxpa2UgYW55dGhpbmcgZ2V0dGluZyBuZWFyIG15XG5leWVzLlxuV09NQU46IFlvdSBzaG91bGQgc2VlIGEgbG90IG9mIGltcHJvdmVtZW50IGluIHR3byBvciB0aHJlZSBkYXlzLiBUaGVzZSBhcmUgcmVhbGx5XG5nb29kIGRyb3BzLlxuTUFOOiBHcmVhdC4gVGhhbmtzIGZvciB5b3VyIGhlbHAuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIFx1MjAxNCBTZWN0aW9uIDEiLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjo1NywidGltZU1pbnV0ZXMiOjIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoeSBkb2VzIHRoZSB3b21hbiBleHBsYWluIGFib3V0IG92ZXItdGhlLWNvdW50ZXIgcHJvZHVjdHM\/Iiwib3B0aW9ucyI6WyJUaGUgbWFuIGlzIHVuZmFtaWxpYXIgd2l0aCB0aGVtLiIsIlNoZSB3YW50cyB0byBzZWxsIGhpbSB0aGUgbW9zdCBleHBlbnNpdmUgZHJvcHMuIiwiSGUgYXNrZWQgaGVyIHRvIGRlc2NyaWJlIHRoZSBzdG9yZSdzIHJldHVybiBwb2xpY3kuIiwiU2hlIGlzIHJlcXVpcmVkIHRvIGV4cGxhaW4gaXQgdG8gZXZlcnkgY3VzdG9tZXIuIl0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoYXQgYWR2aWNlIGRpZCB0aGUgd29tYW4gZ2l2ZSB0aGUgbWFuPyIsIm9wdGlvbnMiOlsiSGUgc2hvdWxkIGJ1eSB0aGUgc3RvcmUncyBtb3N0IHBvcHVsYXIgYnJhbmQuIiwiSGUgc2hvdWxkIGNvbnNpZGVyIHZpc2l0aW5nIGhpcyBkb2N0b3IuIiwiSGUgc2hvdWxkIHVzZSB0aGUgZHJvcHMgb25seSBvbmNlIGEgZGF5LiIsIkhlIHNob3VsZCB3YWl0IGEgd2VlayBiZWZvcmUgYnV5aW5nIGFueXRoaW5nLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaHkgZG9lcyB0aGUgbWFuIGJ1eSBvdmVyLXRoZS1jb3VudGVyIGV5ZSBkcm9wcz8iLCJvcHRpb25zIjpbIlRoZXkgYXJlIHJlY29tbWVuZGVkIGJ5IGhpcyBkb2N0b3IuIiwiVGhleSBhcmUgdGhlIG9ubHkgb3B0aW9uIGF2YWlsYWJsZSBpbiBzdG9yZS4iLCJIZSB3YW50cyBzb21ldGhpbmcgaW1tZWRpYXRlbHkuIiwiVGhleSBhcmUgY292ZXJlZCBieSBoaXMgaGVhbHRoIHBsYW4uIl0sImtleSI6MywicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAyIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6NTUsInRpbWVNaW51dGVzIjoyLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBuZXh0IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjo0LCJzdGVtIjoiV2h5IGRvZXMgdGhlIG1hbiByZXR1cm4gdG8gdGhlIHBoYXJtYWN5PyIsIm9wdGlvbnMiOlsiVG8gYXNrIGZvciBhIHJlZnVuZCBvbiB0aGUgZmlyc3QgZHJvcHMuIiwiSGUgaGFzIGEgbmV3IHByZXNjcmlwdGlvbi4iLCJUbyBjb21wbGFpbiB0aGF0IGhpcyBleWVzIGdvdCB3b3JzZS4iLCJUbyBidXkgbW9yZSBvdmVyLXRoZS1jb3VudGVyIGRyb3BzLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaHkgaXMgdGhlIG1hbiB1cHNldCBhYm91dCB0aGUgcHJpY2U\/Iiwib3B0aW9ucyI6WyJIZSBkb2Vzbid0IGhhdmUgZW5vdWdoIG1vbmV5IHdpdGggaGltLiIsIlRoZSBwaGFybWFjeSBvdmVyY2hhcmdlZCBoaW0gYnkgbWlzdGFrZS4iLCJIaXMgaGVhbHRoIHBsYW4gcmVmdXNlcyB0byBjb3ZlciBpdC4iLCJJdCdzIG1vcmUgY29zdGx5IHRoYW4gaGlzIHByZXZpb3VzIHB1cmNoYXNlLiJdLCJrZXkiOjQsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMyIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjQzLCJ0aW1lTWludXRlcyI6MiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZmluYWwgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJxdWVzdGlvbnMiOlt7Im4iOjYsInN0ZW0iOiJXaGljaCBwaWN0dXJlIGJlc3QgZml0cyB0aGUgd29tYW4ncyBpbnN0cnVjdGlvbnM\/Iiwib3B0aW9ucyI6WyJBIHBlcnNvbiBwdWxsaW5nIGRvd24gdGhlIGJvdHRvbSBleWVsaWQgYW5kIHNxdWVlemluZyBpbiB0d28gZHJvcHMuIiwiQSBwZXJzb24gdGlsdGluZyB0aGVpciBoZWFkIGJhY2sgYW5kIGRyb3BwaW5nIGxpcXVpZCBvbnRvIGNsb3NlZCBleWVsaWRzLiIsIkEgcGVyc29uIGhvbGRpbmcgdGhlIGJvdHRsZSBhYm92ZSB0aGVpciBmb3JlaGVhZCBhbmQgYmxpbmtpbmcgcmFwaWRseS4iLCJBIHBlcnNvbiB3aXBpbmcgdGhlaXIgZXllcyB3aXRoIGEgdGlzc3VlIGJlZm9yZSBhcHBseWluZyBkcm9wcy4iXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo3LCJzdGVtIjoiV2h5IGRvZXMgdGhlIG1hbiB0aGluayB0aGUgaW5zdHJ1Y3Rpb25zIGFyZSBkaWZmaWN1bHQ\/Iiwib3B0aW9ucyI6WyJIZSBoYXMgcG9vciBleWVzaWdodCBhbmQgY2FuJ3Qgc2VlIHRoZSBib3R0bGUgY2xlYXJseS4iLCJIZSB3b3JyaWVzIGFib3V0IHRvdWNoaW5nIGhpcyBleWVzLiIsIkhlIGNhbid0IHJlbWVtYmVyIGhvdyBtYW55IHRpbWVzIGEgZGF5IHRvIHVzZSB0aGVtLiIsIkhlIGZpbmRzIHRoZSBib3R0bGUgdG9vIHNtYWxsIHRvIGhvbGQgc3RlYWRpbHkuIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6OCwic3RlbSI6IldoeSBkb2VzIHRoZSB3b21hbiB0ZWxsIHRoZSBtYW4gaG93IHRvIHVzZSB0aGUgZXllIGRyb3BzPyIsIm9wdGlvbnMiOlsiVGhlIGluc3RydWN0aW9ucyBhcmUgbWlzc2luZyBmcm9tIHRoZSBib3guIiwiVGhlIGRvY3RvciBhc2tlZCBoZXIgdG8gZXhwbGFpbiBpdCBjbGVhcmx5LiIsIlNoZSBrbm93cyBwZW9wbGUgYmVuZWZpdCBmcm9tIGluc3RydWN0aW9uLiIsIkl0IGlzIHN0b3JlIHBvbGljeSBmb3IgcHJlc2NyaXB0aW9uIG1lZGljaW5lLiJdLCJrZXkiOjMsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImhlYWRlclRpdGxlIjoiU2V0IDQgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgMjogTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIGF0IGEgZGVwYXJ0bWVudCBzdG9yZS4iLCJBZnRlciB0aGUgY29udmVyc2F0aW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiV09NQU46IFdvdywgdGhhdCB3YXMgcXVpdGUgdGhlIGxpbmV1cCBmb3IgQ3VzdG9tZXIgU2VydmljZS4gSVx1MjAxOWQgbGlrZSB0byByZXR1cm4gdGhpc1xucHVyY2hhc2UgYW5kIGdldCBteSBtb25leSBiYWNrLlxuTUFOOiBTb3JyeSB5b3UgaGFkIHRvIHdhaXQgc28gbG9uZy4gV2VcdTIwMTlyZSBzaG9ydC1zdGFmZmVkIHRvZGF5LCBhbmQgdGhlIG1hbmFnZXIgaXMgb2ZmXG5zaWNrLiBJcyB0aGVyZSBhbnl0aGluZyB3cm9uZyB3aXRoIHRoZSBwcmludGVyP1xuV09NQU46IE5vLCBpdFx1MjAxOXMgYSBncmVhdCBtYWNoaW5lLCBhbmQgYSByZWFsbHkgZ29vZCBkZWFsIHRvb1x1MjAxNGFuIGFsbC1pbi1vbmUgcHJpbnRlcixcbnNjYW5uZXIsIGNvcGllciwgYW5kIGZheCBmb3IgYWJvdXQgJDkwLiBXaGF0XHUyMDE5cyBub3QgdG8gbGlrZT8gVGhlIHRoaW5nIGlzLCBJIHdvblx1MjAxOXQgcmVhbGx5IHVzZVxuaXQgYmVjYXVzZSBteSBzb24ganVzdCBib3VnaHQgbWUgb25lIGV4YWN0bHkgbGlrZSBpdC5cbk1BTjogU28gaXRcdTIwMTlzIG5vdCBuZWVkZWQgYW55IG1vcmUuIE9rYXksIG91ciByZXR1cm4gcG9saWN5IGlzIHRoYXQgd2UgcmVmdW5kIHRoZVxucHVyY2hhc2UgcHJpY2Ugb2YgcmV0dXJuZWQgZWxlY3Ryb25pYyBkZXZpY2VzIGlmIHRoZXlcdTIwMTlyZSBicm91Z2h0IGJhY2sgaW4gbmV3IGNvbmRpdGlvblxud2l0aGluIDMwIGRheXMuIERvIHlvdSBoYXZlIHlvdXIgcmVjZWlwdCB3aXRoIHlvdT9cbldPTUFOOiBSaWdodCBoZXJlXHUyMDE0c29ycnksIGl0IGdvdCBhIGJpdCBjcnVtcGxlZCBpbiBteSB3YWxsZXQuIEkgYm91Z2h0IHRoZSBwcmludGVyXG5vbiBBdWd1c3QgOXRoLCBqdXN0IHRlbiBkYXlzIGFnby4gU28gaXRcdTIwMTlzIGNvdmVyZWQgdW5kZXIgeW91ciByZXR1cm4gcG9saWN5LCByaWdodD9cbk1BTjogTGV0XHUyMDE5cyB0YWtlIGEgbG9vayBpbnNpZGUgYW5kIHNlZS4gQWxsIHRoZSBvcmlnaW5hbCBwYWNrYWdpbmcgaXMgaGVyZSAuIC4gLiB0aGUgc2VyaWFsXG5udW1iZXIgb24gdGhlIHByaW50ZXIgbWF0Y2hlcyB0aGUgb25lIG9uIHRoZSBib3ggLiAuIC4geW91XHUyMDE5dmUgYnJvdWdodCB0aGUgaW5zdHJ1Y3Rpb25cbm1hbnVhbCwgVVNCIGNhYmxlLCB0ZWxlcGhvbmUgbGluZSBjb3JkLiBXaGVyZSBhcmUgdGhlIGluayBjYXJ0cmlkZ2VzP1xuV09NQU46IFRoZXlcdTIwMTlyZSBpbnNpZGUgdGhlIHByaW50ZXIuIEkgaW5zdGFsbGVkIHRoZW0gYWxyZWFkeS4gVGhleSB3b3JrIGp1c3QgZ3JlYXQsXG5hbmQgdGhlcmVcdTIwMTlzIHN0aWxsIGxvdHMgb2YgaW5rIGluIHRoZW0uXG5NQU46IE5vIHdvcnJpZXMuIFdlXHUyMDE5bGwgdGFrZSB0aGlzIHByaW50ZXIgYmFjayBmb3IgeW91LiBJZiB5b3UgZ2l2ZSBtZSB5b3VyIFZpc2EgY2FyZCwgSVxuY2FuIHJlaW1idXJzZSB5b3UuXG5XT01BTjogSSBzZWUgb24gdGhlIHJlY2VpcHQgdGhhdCBJIHdhcyBhbHNvIHBlcnN1YWRlZCB0byBidXkgYSBvbmUteWVhciB3YXJyYW50eSBmb3JcbiQxMC4gQW5kIHRoZXJlIHdhcyBhbHNvIHNvbWUgc29ydCBvZiAkOSBjaGFyZ2UgY2FsbGVkIGFuIFx1MjAxY0Vjby1GZWUuXHUyMDFkIFdoYXRcdTIwMTlzIHRoYXQ\/XG5NQU46IEl0XHUyMDE5cyBhIGZlZSB0aGUgZ292ZXJubWVudCBjb2xsZWN0cyBhdCBhbGwgc3RvcmVzLCBwcm92aW5jZS13aWRlLCB0byBoZWxwIHBheSBmb3JcbnJlY3ljbGluZyBhbmQgc2FmZSBkaXNwb3NhbCBvZiBlbGVjdHJvbmljIGl0ZW1zLiBXZVx1MjAxOWxsIHJlZnVuZCB5b3VyIEVjby1GZWUgYXMgd2VsbCBhcyB0aGVcbndhcnJhbnR5LiBUaGUgJDE0IGluIHNhbGVzIHRheCB3aWxsIGFsc28gYmUgY3JlZGl0ZWQgYmFjayB0byB5b3VyIGFjY291bnQuXG5cZldPTUFOOiBXb3csICQ5MCBmb3IgdGhlIHByaW50ZXIgLiAuIC4gcGx1cyAkMzMgaW4gd2FycmFudGllcywgZWNvLWZlZXMsIGFuZCB0YXhlcy5cblRoYXRcdTIwMTlzIGEgbG90IG9mIGhpZGRlbiBmZWVzLiBOb3cgdGhhdCBJIHRoaW5rIGFib3V0IGl0LCB0aGF0IHB1cmNoYXNlIHdhc25cdTIwMTl0IHN1Y2ggYSBiYXJnYWluXG5hZnRlciBhbGwuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6MTI2LCJ0aW1lTWludXRlcyI6MywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDIgbWludXRlcyBsb25nLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldobyBpcyB0aGUgd29tYW4gdGFsa2luZyB0bz8iLCJvcHRpb25zIjpbInRoZSBzdG9yZSBtYW5hZ2VyIiwiYSBjdXN0b21lciBzZXJ2aWNlIGNsZXJrIiwiYSByZXBhaXIgdGVjaG5pY2lhbiIsImFub3RoZXIgY3VzdG9tZXIiXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiV2hhdCBoYXBwZW5lZCBpbiB0aGlzIGNvbnZlcnNhdGlvbj8iLCJvcHRpb25zIjpbIkEgY29tcGxhaW50IHdhcyBmaWxlZC4iLCJBbiBpdGVtIHdhcyBleGNoYW5nZWQgZm9yIGEgZGlmZmVyZW50IG1vZGVsLiIsIkEgcmVxdWVzdCB3YXMgZ3JhbnRlZC4iLCJBIHdhcnJhbnR5IGNsYWltIHdhcyBkZW5pZWQuIl0sImtleSI6MywicmVjb24iOnRydWV9LHsibiI6Mywic3RlbSI6IldoeSBkb2VzIHRoZSBtYW4gb3BlbiB0aGUgYm94PyIsIm9wdGlvbnMiOlsiVG8gcmVwYWNrYWdlIHRoZSBwcmludGVyIGZvciBzaGlwcGluZy4iLCJUbyBjaGVjayB0aGF0IHRoZSBzZXJpYWwgbnVtYmVycyBtYXRjaC4iLCJUbyBlbnN1cmUgbm90aGluZydzIG1pc3NpbmcuIiwiVG8gdGVzdCB3aGV0aGVyIHRoZSBwcmludGVyIHN0aWxsIHdvcmtzLiJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIHdvbWFuIGdldD8iLCJvcHRpb25zIjpbImEgc3RvcmUgY3JlZGl0IGluc3RlYWQgb2YgY2FzaCIsImEgZnVsbCByZWltYnVyc2VtZW50IiwiYSBwYXJ0aWFsIHJlZnVuZCBtaW51cyBmZWVzIiwiYSByZXBsYWNlbWVudCBwcmludGVyIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoYXQgc2hvdWxkIHRoZSB3b21hbiBoYXZlIGRvbmUgZGlmZmVyZW50bHk\/Iiwib3B0aW9ucyI6WyJLZXB0IHRoZSBwcmludGVyIGluIGl0cyBvcmlnaW5hbCBwYWNrYWdpbmcgb25seS4iLCJDaGVja2VkIGlmIGhlciBzb24gYWxyZWFkeSBvd25lZCBvbmUgZmlyc3QuIiwiVGFrZW4gYWRkaXRpb25hbCBjb3N0cyBpbnRvIGFjY291bnQuIiwiQXNrZWQgZm9yIGEgd2FycmFudHkgZXh0ZW5zaW9uIGF0IHB1cmNoYXNlLiJdLCJrZXkiOjMsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgNCBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiB3aGVyZSBhIG1hbiBnZXRzIGluZm9ybWF0aW9uIGFib3V0IGxhbmRzY2FwaW5nLiIsIkFmdGVyIHRoZSBjb252ZXJzYXRpb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJXT01BTjogICAgICAgICBIaS4gV2VsY29tZSB0byBLaW5nJ3MgTGFuZHNjYXBpbmcuIFdoYXQgY2FuIEkgZG8gZm9yIHlvdT9cbk1BTjogSGkgdGhlcmUhIEknbSBoYXZpbmcgYSBwcm9ibGVtIHdpdGggYSB0cmVlIGluIG15IGJhY2t5YXJkLiBJIHRob3VnaHQgbWF5YmUgSVxuc2hvdWxkIGFzayBhbiBleHBlcnQuXG5XT01BTjogWW91XHUyMDE5dmUgY29tZSB0byB0aGUgcmlnaHQgcGxhY2UhIE91ciBsYW5kc2NhcGVycyBoYXZlIG92ZXIgMjAgeWVhcnMgb2ZcbmV4cGVyaWVuY2UuIFdoYXQgc2VlbXMgdG8gYmUgdGhlIHByb2JsZW0\/XG5NQU46IEkgaGF2ZSBhIHZlcnkgbGFyZ2UgbWFwbGUgdHJlZSwgYW5kIEkgdGhpbmsgaXRcdTIwMTlzIHJvdHRpbmcuIEl0IGhhcyBmdW5ndXMgZ3Jvd3RoIGFsbCBvdmVyXG50aGUgdHJ1bmsgYW5kIGl0IGhhcyByZWNlbnRseSBzdGFydGVkIHRvIGJlbmQgYSBsaXR0bGUsIGxpa2UgaXRcdTIwMTlzIGZhbGxpbmcgb3Zlci4gSXQgYmxvY2tzIGEgbG90IG9mXG5saWdodCB0byBteSBsaXZpbmcgcm9vbSB3aW5kb3dzIGFueXdheXMsIHNvIEkgdGhvdWdodCBtYXliZSBub3cgaXMgdGhlIHRpbWUgdG8gcmVtb3ZlXG5pdC5cbldPTUFOOiBMYXJnZSBmdW5ndXMgZ3Jvd3RoIHNvdW5kcyBsaWtlIGhlYXJ0IHJvdCBkaXNlYXNlLiBUaGF0XHUyMDE5cyBjb21tb24gaW4gbWFwbGVcbnRyZWVzLiBJdCB3aWxsIGRlY2F5IG1hcGxlcyBmcm9tIHRoZSBpbnNpZGUgb3V0LCBvZnRlbiBjYXVzaW5nIGEgaG9sbG93IGluc2lkZS4gSSB3b3VsZFxucmVjb21tZW5kIGdldHRpbmcgb25lIG9mIG91ciB0cmVlIHJlbW92YWwgZXhwZXJ0cyB0byBjb21lIGxvb2sgYXQgaXQgYW5kIGdpdmUgeW91IGFcbnByaWNlIGVzdGltYXRlLlxuTUFOOiBUaGF0J3Mgd2hhdCBJIHRoaW5rLCB0b28uIEkgaGF2ZSBhIG5laWdoYm91ciB3aG8gb2ZmZXJlZCB0byByZW1vdmUgaXQgZm9yIGZyZWUsIGJ1dFxudGhlIHRyZWUgaXMgdmVyeSBjbG9zZSB0byBhIHBvd2VyIGxpbmUsIHNvIEkgZG9uXHUyMDE5dCB3YW50IGFueSBhY2NpZGVudHMuIEFsc28sIHRoZXJlIG1pZ2h0IGJlXG5cZnNvbWUgZGlmZmljdWx0eSB3aXRoIHJlbW92aW5nIHRoZSB0cmVlLiBJIGxpdmUgb24gYSBzdGVlcCBoaWxsc2lkZSBvdmVybG9va2luZyBhIGxha2UsIGFuZFxubXkgYmFja3lhcmQgaXMgcXVpdGUgc21hbGwuXG5XT01BTjogSSBhZ3JlZSB3aXRoIHlvdS4gUmVtb3ZpbmcgdHJlZXMgYXJvdW5kIHBvd2VyIGxpbmVzIGNhbiBiZSBkYW5nZXJvdXMgYW5kXG5zaG91bGQgb25seSBiZSBoYW5kbGVkIGJ5IHByb2Zlc3Npb25hbHMuIFRoZSBzcGFjZSBvZiB0aGUgcHJvcGVydHkgc2hvdWxkbid0IGJlIGFcbnByb2JsZW0sIHRob3VnaC4gV2UgaGF2ZSBzZXZlcmFsIHdheXMgdGhhdCB3ZSBjYW4gcmVtb3ZlIGEgdHJlZSBpZiB0aGVyZSBpcyBsaW1pdGVkXG5zcGFjZS4gV2UgY2FuIHNhdyBpdCBpbnRvIG1hbnkgcGllY2VzLCBvciBpZiB5b3VyIHByb3BlcnR5IGlzIGNsb3NlIHRvIHRoZSB3YXRlciwgd2UgY2FuXG5icmluZyBpbiBhIGJvYXQgdG8gaGF1bCB0aGUgdHJlZS5cbk1BTjogT2gsIGdyZWF0LiBOb3csIHdoYXQgYWJvdXQgdGhlIHJlbWFpbmluZyBzdHVtcCBvZiB0aGUgdHJlZT8gVGhlIHRyZWUgaXMgcHJldHR5XG5iaWdcdTIwMTRJIHdvdWxkIHNheSB0aGUgc3R1bXAgaXMgYXQgbGVhc3QgMyBmZWV0IGluIGRpYW1ldGVyLlxuV09NQU46IFdlIGdyaW5kIGl0IGRvd24gdG8gdGhlIGdyb3VuZCwgYW5kIHRoZW4geW91IGNhbiBqdXN0IGxldCBsYXduIGdyb3cgb3ZlciBpdC5cbkFyZSB5b3Ugb3IgYW55IG9mIHlvdXIgbmVpZ2hib3VycyBnYXJkZW5lcnM\/IFdlIHVzdWFsbHkgbGVhdmUgdGhlIHdvb2QgY2hpcHMgZnJvbSB0aGVcbnN0dW1wIHRvIHBsYWNlIGFyb3VuZCBmbG93ZXJiZWRzLlxuTUFOOiBJJ20gbm90LCBidXQgc29tZSBvZiBteSBuZWlnaGJvdXJzIGFyZSBhbmQgSSdtIHN1cmUgdGhleSB3b3VsZCBsb3ZlIHRoYXQuXG5Xb25kZXJmdWwhIExldCdzIGJvb2sgYSB0aW1lIHRoaXMgd2VlayBmb3Igc29tZW9uZSB0byBjb21lIG91dCBhbmQgdGFrZSBhIGxvb2suIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6MTIzLCJ0aW1lTWludXRlcyI6MywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDIgbWludXRlcyBsb25nLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoeSBkaWQgdGhlIG1hbiBjYWxsIHRoZSB3b21hbj8iLCJvcHRpb25zIjpbIkhlIHdhbnRzIGEgcXVvdGUgZm9yIGEgbmV3IGdhcmRlbiBkZXNpZ24uIiwiSGUgaGFzIGFuIHVuaGVhbHRoeSB0cmVlIGluIGhpcyB5YXJkLiIsIkhlIG5lZWRzIGFkdmljZSBvbiBwbGFudGluZyBhIG1hcGxlIHRyZWUuIiwiSGUgd2FudHMgdG8gcmVwb3J0IHN0b3JtIGRhbWFnZSB0byBoaXMgbGF3bi4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiV2h5IHdvbid0IHRoZSBtYW4gYWxsb3cgaGlzIG5laWdoYm91ciB0byBoZWxwPyIsIm9wdGlvbnMiOlsiSGlzIG5laWdoYm91ciBoYXMgbm8gcHJvcGVyIGVxdWlwbWVudC4iLCJIaXMgbmVpZ2hib3VyIGlzIHRvbyBidXN5IHRoaXMgd2Vlay4iLCJUaGUgdHJlZSBpcyBpbiBhIGRpZmZpY3VsdCBwbGFjZS4iLCJIaXMgbmVpZ2hib3VyIGhhcyBubyBleHBlcmllbmNlIGF0IGFsbC4iXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2hpY2ggb2YgdGhlIHdvbWFuJ3Mgc3VnZ2VzdGlvbnMgaXMgdGhlIG1hbiBtb3N0IHBsZWFzZWQgd2l0aD8iLCJvcHRpb25zIjpbIlRoYXQgdGhleSBjYW4gcmVtb3ZlIHRoZSB0cmVlIGJ5IGJvYXQuIiwiVGhhdCBoZXIgY29tcGFueSBpcyB1c2VkIHRvIHNtYWxsIGJhY2t5YXJkcy4iLCJUaGF0IHRoZXkgb2ZmZXIgYSBmcmVlIGVzdGltYXRlIHZpc2l0LiIsIlRoYXQgdGhleSBjYW4gZmluaXNoIHRoZSBqb2IgaW4gb25lIGRheS4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2h5IGRvZXMgdGhlIHdvbWFuIGFzayBpZiB0aGUgbWFuIGFuZCBoaXMgbmVpZ2hib3VycyBhcmUgZ2FyZGVuZXJzPyIsIm9wdGlvbnMiOlsiQmVjYXVzZSB0aGV5IG9mZmVyIGEgZGlzY291bnQgdG8gZ2FyZGVuZXJzLiIsIkJlY2F1c2UgZ2FyZGVuZXJzIHJlcXVpcmUgYSBzcGVjaWFsIHBlcm1pdC4iLCJCZWNhdXNlIHdvb2QgY2hpcHMgZnJvbSB0aGUgdHJlZSBhcmUgZ29vZCBmb3IgZ2FyZGVucy4iLCJCZWNhdXNlIGdhcmRlbmVycyBjYW4gcmVtb3ZlIHN0dW1wcyB0aGVtc2VsdmVzLiJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaHkgaXMgdGhlIG1hbiBoYXBweSB0aGF0IHRoZSB0cmVlIHdpbGwgYmUgY3V0IGRvd24\/Iiwib3B0aW9ucyI6WyJJdCB3aWxsIGluY3JlYXNlIGhpcyBwcm9wZXJ0eSB2YWx1ZS4iLCJJdCBtYWtlcyBoaXMgbGl2aW5nIHJvb20gZGFyay4iLCJJdCBoYXMgYmVlbiBkYW1hZ2luZyBoaXMgZmVuY2UuIiwiSXQgaXMgZHJvcHBpbmcgbGVhdmVzIG9uIGhpcyBuZWlnaGJvdXIncyB5YXJkLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjYsInN0ZW0iOiJXaGF0IGRlY2lzaW9uIGRvIHRoZXkgbWFrZSBhdCB0aGUgZW5kIG9mIHRoZSBjb252ZXJzYXRpb24\/Iiwib3B0aW9ucyI6WyJUaGUgbWFuIHdpbGwgY2FsbCBiYWNrIG5leHQgd2Vlay4iLCJUaGUgd29tYW4gd2lsbCBlbWFpbCBhIGZvcm1hbCBxdW90ZS4iLCJUaGUgbWFuIHdpbGwgYm9vayBhbiBhcHBvaW50bWVudCB0aGlzIHdlZWsuIiwiVGhlIHdvbWFuIHdpbGwgY29uc3VsdCBhbm90aGVyIGV4cGVydCBmaXJzdC4iXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaGVhZGVyVGl0bGUiOiJTZXQgNCBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBuZXdzIGl0ZW0gYWJvdXQgYSBzdXJwcmlzaW5nIGJvb2suIiwiQWZ0ZXIgdGhlIG5ld3MgaXRlbSwgY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgdXNpbmcgdGhlIGRyb3AtZG93biBtZW51LiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IlJlY2VudGx5LCBhdCBhIG5laWdoYm9yaG9vZCB5YXJkIHNhbGUsIGJvb2sgZW50aHVzaWFzdCBEYWxlIE1hY2tlbnppZSBkaXNjb3ZlcmVkIGFcbmxpdGVyYXJ5IHRyZWFzdXJlLiBBdCB0aGUgeWFyZCBzYWxlLCBNYWNrZW56aWUgYm91Z2h0IHNldmVyYWwgYm9va3MgZm9yIGp1c3QgJDUuMDAuIFdoZW5cbmhlIHJldHVybmVkIGhvbWUsIGhlIG5vdGljZWQgdGhhdCBvbmUgb2YgdGhlIGJvb2tzLCBhbiBvbGQgY29weSBvZiBFbW1hIGJ5IHRoZSBmYW1vdXNcbkVuZ2xpc2ggbm92ZWxpc3QgSmFuZSBBdXN0ZW4sIHdhcyBhIHJhcmUgZmlyc3QgZWRpdGlvbiBvZiB0aGUgbm92ZWwuIEN1cmlvdXMgYWJvdXQgdGhlXG5cZnZhbHVlIG9mIHRoZSBib29rLCBNYWNrZW56aWUgbG9va2VkIHVwIGFuIGFudGlxdWUgYm9vayBkZWFsZXIgb24gdGhlIGludGVybmV0LiBcdTIwMWNJXG50aG91Z2h0IHRoZSBib29rIG1pZ2h0IGJlIHdvcnRoIGFib3V0IGZpZnR5IGRvbGxhcnMsXHUyMDFkIHNhaWQgTWFja2VuemllLiBCdXQsIG11Y2ggdG8gaGlzXG5zdXJwcmlzZSwgaGUgZm91bmQgb3V0IHRoYXQgYSBmaXJzdCBlZGl0aW9uIG9mIEVtbWEsIGxpa2UgdGhlIG9uZSBoZSBib3VnaHQgYXQgdGhlIHlhcmQgc2FsZSxcbndhcyB2YWx1ZWQgYXQgYXBwcm94aW1hdGVseSB0ZW4gdGhvdXNhbmQgZG9sbGFycy4gTWFja2VuemllIHBsYW5zIHRvIHNlbGwgdGhlIG5vdmVsXG50aHJvdWdoIGFuIGludGVybmV0IGF1Y3Rpb24gc2l0ZS4gSGUgd2FudHMgdG8gZG9uYXRlIGhhbGYgb2YgdGhlIHByb2ZpdHMgdG8gdGhlIHB1YmxpY1xubGlicmFyeVx1MjAxNHdoaWNoIGlzIGluIG5lZWQgb2YgYSBuZXcgcmVhZGluZyByb29tLiBcdTIwMWNJIGxvdmUgYm9va3MsXHUyMDFkIHNhaWQgTWFja2VuemllLCBcdTIwMWNhbmRcbndvdWxkIHJlYWxseSBsaWtlIHRvIGltcHJvdmUgb3VyIHB1YmxpYyBsaWJyYXJ5IHNvIHRoYXQgb3RoZXIgYm9va2xvdmVycyBjYW4gaGF2ZSBhIHF1aWV0XG5wbGFjZSB0byBnbyBhbmQgcmVhZC5cdTIwMWQgV2l0aCB0aGUgcmVtYWluaW5nIG1vbmV5LCBNYWNrZW56aWUgcGxhbnMgdG8gdGFrZSBhIHZhY2F0aW9uIHRvXG5HZXJtYW55IHRvIHZpc2l0IG9uZSBvZiB0aGUgd29ybGRcdTIwMTlzIGxhcmdlc3QgYW5udWFsIGJvb2sgZmFpcnMuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiTmV3cyBJdGVtIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6MTE3LCJ0aW1lTWludXRlcyI6MywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIG5ld3MgaXRlbS4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiTWFja2VuemllIGZvdW5kIGEgYm9vayB0aGF0Iiwib3B0aW9ucyI6WyJ3YXMgYSByYXJlIEdlcm1hbiBlZGl0aW9uIG9mIGEgbm92ZWwuIiwid2FzIGF1dG9ncmFwaGVkIGJ5IHRoZSBhdXRob3IuIiwiaGUgZG9uYXRlZCB0byB0aGUgbGlicmFyeS4iLCJ3YXMgdmVyeSB3ZWxsIGtub3duIGJ1dCByYXJlLiJdLCJrZXkiOjQsInJlY29uIjpmYWxzZX0seyJuIjoyLCJzdGVtIjoiTWFja2VuemllIGZvdW5kIHRoZSBib29rIiwib3B0aW9ucyI6WyJkdXJpbmcgYSB0cmlwIGFicm9hZC4iLCJhdCBhIHlhcmQgc2FsZS4iLCJvbiBhbiBpbnRlcm5ldCBzaXRlLiIsImF0IGFuIGFudGlxdWUgYm9vayBzaG9wLiJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjozLCJzdGVtIjoiTWFja2VuemllIHdhcyBzdXJwcmlzZWQiLCJvcHRpb25zIjpbImJ5IHRoZSB2YWx1ZSBvZiB0aGUgYm9vay4iLCJieSB3aGF0IGhlIGZvdW5kIGluIHRoZSBib29rLiIsInRoYXQgdGhlIGJvb2sgd2FzIGF2YWlsYWJsZSBvbmxpbmUuIiwidGhhdCB0aGUgbGlicmFyeSBkaWQgbm90IGhhdmUgdGhpcyBib29rLiJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX0seyJuIjo0LCJzdGVtIjoiTWFja2VuemllIGRlY2lkZWQgdG8iLCJvcHRpb25zIjpbImdpdmUgdGhlIGJvb2sgdG8gdGhlIGxpYnJhcnkuIiwia2VlcCB0aGUgYm9vayBoaW1zZWxmLiIsInNlbGwgdGhlIGJvb2sgb25saW5lLiIsImJ1eSB0aGUgYm9vayBmcm9tIHRoZSBhbnRpcXVlIGRlYWxlci4iXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9LHsibiI6NSwic3RlbSI6Ik1hY2tlbnppZSBhbHNvIHBsYW5zIHRvIiwib3B0aW9ucyI6WyJidWlsZCBhIG5ldyBsaWJyYXJ5IGZvciBoaXMgdG93bi4iLCJ2aXNpdCBhIGJvb2sgc2FsZSBpbiBHZXJtYW55LiIsInJlYWQgdGhlIGJvb2sgb25lIG1vcmUgdGltZS4iLCJidWlsZCBhIHJlYWRpbmcgcm9vbSBpbiBoaXMgaG91c2UuIl0sImtleSI6MiwicmVjb24iOmZhbHNlfV19XX0seyJuYW1lIjoiUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgNCBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgd2F0Y2ggYSBjb252ZXJzYXRpb24gYW1vbmcgdGhyZWUgZW1wbG95ZWVzLCB0d28gbWVuIGFuZCBvbmUgd29tYW4sIGluIGEgY29tcGFueVx1MjAxOXMgYnJlYWsgcm9vbS4gVGhleSBhcmUgZGlzY3Vzc2luZyBhbiBpc3N1ZSBhdCB3b3JrLiIsIkFmdGVyIHRoZSBkaXNjdXNzaW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCBhbnN3ZXIgdG8gZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCB3YXRjaCBhIGNvbnZlcnNhdGlvbiBhbW9uZyB0aHJlZSBlbXBsb3llZXMsIHR3byBtZW4gYW5kIG9uZSB3b21hbiwgaW4gYVxuY29tcGFueVx1MjAxOXMgYnJlYWsgcm9vbS4gVGhleSBhcmUgZGlzY3Vzc2luZyBhbiBpc3N1ZSBhdCB3b3JrLlxuXG5cbkpha2U6IEhleSBndXlzLCBoYXZlIHlvdSBzZWVuIG5leHQgbW9udGhcdTIwMTlzIHNjaGVkdWxlPyBJdCB3YXMgcG9zdGVkIGxhc3QgbmlnaHQuXG5HZW5lOiBZZWFoLCBhbmQgSSBub3RpY2VkIHRoYXQgSVx1MjAxOW0gc2NoZWR1bGVkIGZvciB0aHJlZSB3ZWVrZW5kcyBpbiBhIHJvdy4gU2FtZSB0aGluZ1xuaGFwcGVuZWQgdG8gbWUgbGFzdCBtb250aC4gSSBkaWRuXHUyMDE5dCBzYXkgYW55dGhpbmcgYWJvdXQgaXQgYmVjYXVzZSBJIGRpZG5cdTIwMTl0IHdhbnQgdG8gcm9ja1xudGhlIGJvYXQsIGJ1dCBJIHJlYWxseSBuZWVkIGEgd2Vla2VuZCBvZmYgbmV4dCBtb250aC5cbkppbGw6ICAgVGhhdCBkb2Vzblx1MjAxOXQgc2VlbSB2ZXJ5IGZhaXIuIEkgd29uZGVyIHdoYXRcdTIwMTlzIGdvaW5nIG9uIHdpdGggc2NoZWR1bGluZy5cbkpha2U6IFdlbGwsIG1heWJlIGl0XHUyMDE5cyBiZWNhdXNlIG1vc3Qgb2YgdXMgYW5kIHRoZSBvdGhlciBzdXBlcnZpc29ycyBoYXZlIGNoaWxkcmVuIGFuZFxueW91XHUyMDE5cmUgc2luZ2xlLCBHZW5lLiBJIG1lYW4sIGl0IGNhbiBiZSByZWFsbHkgaGFyZCB0byB3b3JrIHdlZWtlbmRzIHdoZW4geW91IGhhdmVcbmZhbWlseSByZXNwb25zaWJpbGl0aWVzLiBNeSB3aWZlIHdvcmtzIG1vc3Qgd2Vla2VuZHNcdTIwMTRJIGhhdmUgdG8gYmUgaG9tZS5cbkppbGw6IEJ1dCBKYWtlLCB0aGF0XHUyMDE5cyBub3QgcmVhbGx5IGZhaXIuIEkgbWVhbiwgaGUgcHJvYmFibHkgaGFzIG90aGVyIHJlc3BvbnNpYmlsaXRpZXMgdG9vLlxuSnVzdCBiZWNhdXNlIGhlIGRvZXNuXHUyMDE5dCBoYXZlIGtpZHMgZG9lc25cdTIwMTl0IG1lYW4gaGUgc2hvdWxkIHdvcmsgYWxtb3N0IGV2ZXJ5IHdlZWtlbmQuXG5KYWtlOiBMaXN0ZW4sIEkgd291bGRuXHUyMDE5dCBiZSBoYXBweSBlaXRoZXIuIEhhdmUgeW91IHRhbGtlZCB0byB0aGUgYm9zcyBhYm91dCBpdCwgR2VuZT9cbkdlbmU6IFllcywgYnV0IGhlIHNhaWQgaGUgY2FuXHUyMDE5dCBkbyBtdWNoIGFib3V0IGl0IGJlY2F1c2UgaXRcdTIwMTlzIGFscmVhZHkgYmVlbiBwb3N0ZWQuIEl0XHUyMDE5cyB1cFxudG8gbWUgdG8gZmluZCBzb21lb25lIHRvIGNoYW5nZSB3aXRoLiBIZSBhbHNvIHNhaWQgdGhhdCBiZWNhdXNlIEkgaGF2ZSB0aGUgbW9zdFxuc2VuaW9yaXR5LCBoZSBsaWtlcyB0byBoYXZlIG1lIHRoZXJlIG9uIGJ1c3kgd2Vla2VuZHMuIFRoZXJlXHUyMDE5cyBhIGxvdCBvZiBzcG9ydHMgZXF1aXBtZW50XG5yZW50YWxzIGFuZCBzcGVjaWFsIG9yZGVycyBhbmQgc3R1ZmYsIGJ1dCB5b3UgZ3V5cyBjb3VsZCB0b3RhbGx5IGhhbmRsZSB0aGF0LlxuSmlsbDogWWVhaCwgSSB0aGluayBhbnkgb2YgdXMgY291bGQgY292ZXIgdGhlIHdlZWtlbmRzLiBJIGFjdHVhbGx5IHRoaW5rIGl0IHdvdWxkIGJlXG5nb29kIGZvciB1cyB0byBnZXQgdXNlZCB0byB0aGUgYnVzeSB3ZWVrZW5kIHJ1c2guIEl0IGNhblx1MjAxOXQgYmUgYW55IGJ1c2llciB0aGFuIHRoZSBtb3JuaW5nc1xuXGZ0aGF0IHdlIGdldCBzdG9jay4gSSBtZWFuLCBpdCB0b29rIHVzIGhvdXJzIHRvIHB1dCBhd2F5IHRoZSBob2NrZXkgZXF1aXBtZW50IGFuZCB0aGVcbnNub3dib2FyZHMgbGFzdCBXZWRuZXNkYXkhXG5HZW5lOiBJIHdhbnRlZCB0byBnZXQgYXdheSBmb3IgYSBza2kgd2Vla2VuZCB3aXRoIHNvbWUgZnJpZW5kcyBuZXh0IG1vbnRoLiBJIHdhbnRlZFxudGVzdCBvdXQgdGhlIGRvd25oaWxsIHNraXMgSSBib3VnaHQgaGVyZSBsYXN0IHdlZWsuIFdvdWxkIHNvbWVvbmUgYmUgYWJsZSB0byBzd2l0Y2hcbnNoaWZ0cyB3aXRoIG1lPyBJIHdvdWxkIHZlcnkgaGFwcGlseSBkbyB0d28gZXZlbmluZyBzaGlmdHMgaW4gZXhjaGFuZ2UgZm9yIGEgd2Vla2VuZFxuc2hpZnQuXG5KYWtlOiBJXHUyMDE5bSBzb3JyeSwgR2VuZS4gSSB3b3VsZCBpZiBJIGNvdWxkLCBidXQgSSBoYXZlIGZhbWlseSBjb21pbmcgaW4sIHZpc2l0aW5nIG5leHRcbndlZWtlbmQgYW5kIG15IHdpZmVcdTIwMTlzIHdvcmtpbmcuIEFuZCBteSBzb24gaGFzIGEgaG9ja2V5IHRvdXJuYW1lbnQgdGhlIHdlZWtlbmRcbmFmdGVyIHRoYXQuIEkgYWN0dWFsbHkgcmVzZXJ2ZWQgdGhlc2Ugd2Vla2VuZHMgb2ZmIG1vbnRocyBhZ28uXG5KaWxsOiBJIGNvdWxkIHN3aXRjaCBzaGlmdHMgd2l0aCB5b3UgbmV4dCB3ZWVrZW5kLiBXb3VsZCB5b3UgYmUgd2lsbGluZyB0byB0YWtlIHR3b1xuZGF5IHNoaWZ0cyBmb3IgbWUgYXQgdGhlIGVuZCBvZiB0aGUgbW9udGgsIHRob3VnaD8gTXkgc29uIGhhcyBhIGZpZWxkIHRyaXAsIGFuZCBteVxuZGF1Z2h0ZXIgaGFzIGEgc2Nob29sIHBsYXksIGFuZCBJXHUyMDE5ZCByZWFsbHkgbGlrZSB0byBnbyFcbkdlbmU6IE9oLCB0aGFua3MgYSBtaWxsaW9uLCBKaWxsISBJXHUyMDE5bGwgZ28gdGFsayB0byBNci4gU21pdGggcmlnaHQgbm93LiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkRpc2N1c3Npb24gKHZpZGVvKSIsIm1lZGlhVHlwZSI6InZpZGVvIiwiZHVyYXRpb24iOjIxMiwidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJXYXRjaCB0aGUgZGlzY3Vzc2lvbi4gWW91IHdpbGwgd2F0Y2ggaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAxLjUgdG8gMiBtaW51dGVzIGxvbmcuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2hhdCBwcm9ibGVtIGFyZSB0aGUgY29sbGVhZ3VlcyBkaXNjdXNzaW5nPyIsIm9wdGlvbnMiOlsiYSBuZXcgYm9zcyIsIndvcmsgaG91cnMiLCJhIGZhbWlseSBpc3N1ZSIsIm92ZXJ0aW1lIHNoaWZ0cyJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjoyLCJzdGVtIjoiV2hhdCB0eXBlIG9mIHN0b3JlIGRvIHRoZXkgd29yayBpbj8iLCJvcHRpb25zIjpbImEgc3BvcnRzIGFyZW5hIiwiYSBkZXBhcnRtZW50IHN0b3JlIiwiYSBzcG9ydGluZyBnb29kcyByZXRhaWxlciIsImEgc2tpIGFuZCBzbm93Ym9hcmQgcmVzb3J0Il0sImtleSI6MywicmVjb24iOmZhbHNlfSx7Im4iOjMsInN0ZW0iOiJXaHkgZG9lcyBHZW5lLCB0aGUgb2xkZXIgbWFuLCB3YW50IGEgd2Vla2VuZCBvZmY\/Iiwib3B0aW9ucyI6WyJ0byB0YWtlIGEgc2hvcnQgdHJpcCIsInRvIHNwZW5kIHRpbWUgd2l0aCBmYW1pbHkiLCJ0byByZWxheCBhdCBob21lIiwidG8gZ28gYnV5IG5ldyBza2lzIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjQsInN0ZW0iOiJXaHkgZG9lcyB0aGUgYm9zcyBnaXZlIEdlbmUgbW9yZSB3ZWVrZW5kIHNoaWZ0cz8iLCJvcHRpb25zIjpbIk9ubHkgR2VuZSBpcyBxdWFsaWZpZWQgdG8gZG8gdGhlIHdvcmsuIiwiSGlzIGNvbGxlYWd1ZXMgY2FuJ3QgZG8gc3BlY2lhbCBvcmRlcnMuIiwiR2VuZSBoYXMgdG8gb3JkZXIgdGhlIHNraSBlcXVpcG1lbnQuIiwiR2VuZSBpcyB0aGUgbW9zdCBleHBlcmllbmNlZCBzdXBlcnZpc29yLiJdLCJrZXkiOjQsInJlY29uIjpmYWxzZX0seyJuIjo1LCJzdGVtIjoiSG93IGRvZXMgSmFrZSwgdGhlIHlvdW5nZXIgbWFuLCBmZWVsIGFib3V0IEdlbmUgd29ya2luZyB3ZWVrZW5kcz8iLCJvcHRpb25zIjpbIkhlIHRoaW5rcyBHZW5lIG5lZWRzIHRpbWUgd2l0aCBoaXMgZmFtaWx5LiIsIkdlbmUncyBsaWZlc3R5bGUgbWFrZXMgaXQgZWFzaWVyIGZvciBoaW0uIiwiSGUgdGhpbmtzIEdlbmUgZ2V0cyB0aGUgcXVpZXRlc3Qgc2hpZnRzLiIsIkhlIHdvdWxkIHByZWZlciB0byB3b3JrIHdlZWtlbmRzIGhpbXNlbGYuIl0sImtleSI6MiwicmVjb24iOmZhbHNlfSx7Im4iOjYsInN0ZW0iOiJXaHkgZG9lcyB0aGUgd29tYW4gc3dpdGNoIHNoaWZ0cyB3aXRoIEdlbmU\/Iiwib3B0aW9ucyI6WyJTaGUgZW5qb3lzIHdvcmtpbmcgd2Vla2VuZHMuIiwiU2hlIG93ZXMgR2VuZSBhIGZhdm91ci4iLCJJdCdzIGxlc3MgYnVzeSBvbiB3ZWVrZW5kcy4iLCJJdCBoZWxwcyBib3RoIG9mIHRoZW0gb3V0LiJdLCJrZXkiOjQsInJlY29uIjpmYWxzZX0seyJuIjo3LCJzdGVtIjoiSG93IHdpbGwgdGhlaXIgYm9zcyBsaWtlbHkgZmVlbCBhYm91dCB0aGUgc3dpdGNoPyIsIm9wdGlvbnMiOlsiYWNjZXB0aW5nIiwiZGlzY29udGVudCIsInN1cnByaXNlZCIsImlycml0YXRlZCJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX0seyJuIjo4LCJzdGVtIjoiSG93IGRvIHRoZSBjb2xsZWFndWVzIHRyZWF0IGVhY2ggb3RoZXI\/Iiwib3B0aW9ucyI6WyJUaGV5J3JlIGNvbnNpZGVyYXRlLiIsIlRoZXkncmUgYXJndW1lbnRhdGl2ZS4iLCJUaGV5J3JlIGluZGlmZmVyZW50LiIsIlRoZXkncmUgdW5hY2NvbW1vZGF0aW5nLiJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX1dfV19LHsibmFtZSI6IlBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaGVhZGVyVGl0bGUiOiJTZXQgNCBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBwcmVzZW50YXRpb24gYWJvdXQgYSBjaXR5IGNvbXBvc3QgaW5pdGlhdGl2ZS4iLCJBZnRlciB0aGUgcmVwb3J0LCBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCB1c2luZyB0aGUgZHJvcC1kb3duIG1lbnUuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiV2VsY29tZSB0byBDaGF0IFJhZGlvLiBPbiB0b2RheVx1MjAxOXMgYWdlbmRhIGlzIHRoZSB0b3BpYyBvZiBncmVlbiBiaW5zOiBhcmUgdGhleSBhIHN1Y2Nlc3Ncbm9yIGEgZmFpbHVyZT8gU3RhcnRlZCB0d28geWVhcnMgYWdvLCB0aGUgZ3JlZW4gYmluIHByb2dyYW0gaXMgYSB3YXN0ZSBtYW5hZ2VtZW50IHN0cmF0ZWd5XG5pbXBsZW1lbnRlZCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBnYXJiYWdlIHNlbnQgdG8gbXVuaWNpcGFsIGxhbmRmaWxscy4gQXMgcGFydCBvZiB0aGVcbnByb2dyYW0sIGluZGl2aWR1YWxzIGFyZSBhc2tlZCB0byBzZXBhcmF0ZSB0aGVpciBjb21wb3N0YWJsZSB3YXN0ZSwgc3VjaCBhcyBmb29kIGFuZFxueWFyZCB3YXN0ZSwgaW50byBncmVlbiBiaW5zIHByb3ZpZGVkIGJ5IHRoZSBjaXR5LiBUaGUgYmlucyBhcmUgY29sbGVjdGVkIG9uIGEgd2Vla2x5IGJhc2lzXG5hbmQsIHJhdGhlciB0aGFuIHRha2VuIHRvIGEgbGFuZGZpbGwsIGFyZSBicm91Z2h0IHRvIGEgZmFjaWxpdHkgdGhhdCB0dXJucyB0aGUgd2FzdGUgaW50b1xuY29tcG9zdC4gQWx0aG91Z2ggZ2VuZXJhbGx5IHdlbGwgcmVjZWl2ZWQsIHRoZSBwcm9ncmFtIGhhcyBoYWQgaXRzIHNoYXJlIG9mIGNyaXRpY2lzbVxuXG5cbkZvciBleGFtcGxlLCBmb3IgSnVkaXRoIEtuaWdodGxleSwgYSBidXN5IG1vdGhlciBvZiB0aHJlZSwgdGhlIGdyZWVuIGJpbnMgYXJlIGEgbmlnaHRtYXJlLlxuS25pZ2h0bGV5IGNvbXBsYWlucyB0aGF0LCBub3Qgb25seSBpcyBpdCB0aW1lIGNvbnN1bWluZyB0byBzb3J0IHRoZSBjb3Bpb3VzIGFtb3VudCBvZlxuZ2FyYmFnZSBwcm9kdWNlZCBieSBhIGxhcmdlIGZhbWlseSwgYnV0IHRoZSBiaW5zIGFyZSBhbHNvIHVuc2FuaXRhcnksIGF0dHJhY3RpbmcgYm90aFxuYW5pbWFscyBhbmQgYnVncy4gQWx0aG91Z2ggdGhlIGdyZWVuIGJpbiBpcyBub3Qgb2JsaWdhdG9yeSwgc2luY2UgdGhlIHByb2dyYW0gYmVnYW4sXG5yZWd1bGFyIGdhcmJhZ2UgcGljay11cCBoYXMgYmVlbiByZWR1Y2VkIHRvIGJpLW1vbnRobHksIGxlYXZpbmcgbWFueSwgbGlrZSBLbmlnaHRseSxcbmZlZWxpbmcgZm9yY2VkIGludG8gaXRzIHVzZS5cblxmSW4gY29udHJhc3QsIEtpcmsgQmVhdXJlZ2FyZCwgYW4gYXZpZCBnYXJkZW5lciwgaXMgdGhyaWxsZWQgd2l0aCB0aGUgY2l0eVx1MjAxOXMgaW5pdGlhdGl2ZS5cbkJlYXVyZWdhcmQsIHdobywgZm9yIG1hbnkgeWVhcnMsIGhhcyBjb21wb3N0ZWQgaGlzIG93biBnYXJiYWdlIGluIGEgYmFja3lhcmRcbmNvbXBvc3RlciwgaXMgZ2xhZCB0byBzZWUgdGhlIGNpdHkgY2F0Y2hpbmcgdXAuIEhlIGluc2lzdHMgdGhhdCBjb21wb3N0aW5nIGlzIGFuIGVhc3kgd2F5XG50byB0dXJuIHdhc3RlIGludG8gYSB2YWx1YWJsZSBwcm9kdWN0LCBhIHByb2R1Y3QgdXNlZCBieSBtYW55IGZhcm1lcnMgYW5kIGdhcmRlbmVycyBpblxucGxhY2Ugb2YgY2hlbWljYWwgZmVydGlsaXplcnMuIFdoaWxlIEJlYXVyZWdhcmQgYWNrbm93bGVkZ2VzIHRoYXQgYmFja3lhcmQgY29tcG9zdGluZ1xubWlnaHQgbm90IGJlIGVuam95ZWQgYnkgZXZlcnlvbmUsIGhlIHNlZXMgdGhlIGdyZWVuIGJpbiBwcm9ncmFtIGFzIGEgd2F5IHRvIG1ha2UgdGhlXG5jb21wb3N0aW5nIG9mIG9uZVx1MjAxOXMgb3duIGdhcmJhZ2UgYWNjZXNzaWJsZSB0byBldmVyeW9uZS5cblxuXG5Db3VuY2lsbG9yIFRydWR5IFZvbGtvdiwgb24gdGhlIG90aGVyIGhhbmQsIGFyZ3VlcywgcmVnYXJkbGVzcyBvZiBsaWtlIG9yIGRpc2xpa2UsIHRoYXQgdGhlXG5wcm9ncmFtIHdhcyBuZWNlc3NhcnkuIFdpdGggdGhlIGNpdHlcdTIwMTlzIHJhcGlkIHBvcHVsYXRpb24gZ3Jvd3RoLCBmaW5kaW5nIGFuIGVjb25vbWljYWxcbndheSB0byBtYW5hZ2UgdGhlIGluY3JlZGlibGUgYW1vdW50IG9mIGdhcmJhZ2UgYmVpbmcgcHJvZHVjZWQgd2FzIGVzc2VudGlhbC5cbkFjY29yZGluZyB0byBWb2xrb3YsIGNpdHkgY291bmNpbCB3YXMgZmFjZWQgd2l0aCB0d28gY2hvaWNlczogZWl0aGVyIGJ1aWxkIGEgbmV3XG5sYW5kZmlsbCwgb3IgZGVjcmVhc2UgdGhlIGFtb3VudCBvZiB3YXN0ZSBicm91Z2h0IHRvIHRoZSBjdXJyZW50IGxhbmRmaWxsLiBGb3IgVm9sa292LCB0aGVcbmdyZWVuIGJpbiBpcyBhIHdpbi13aW4gc29sdXRpb24uIE5vdCBvbmx5IGlzIHRoZSB3YXN0ZSBkaXZlcnRlZCBmcm9tIHRoZSBsYW5kZmlsbCwgYnV0IGl0IGlzXG5jb252ZXJ0ZWQgaW50byBhIHVzZWZ1bCBwcm9kdWN0IHdob3NlIHNhbGUgY2FuIGhlbHAgZGVmcmF5IHNvbWUgb2YgdGhlIGNvc3RzIG9mIHJ1bm5pbmdcbnRoZSBwcm9ncmFtLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IlJlcG9ydCIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjE4NSwidGltZU1pbnV0ZXMiOjQsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyByZXBvcnQuIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAzIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJUaGUgcmFkaW8gc2hvdyBpcyBkaXNjdXNzaW5nIGdyZWVuIGJpbnMgYmVjYXVzZSIsIm9wdGlvbnMiOlsidGhlIGNpdHkncyBjb21wb3N0aW5nIHByb2dyYW0gaXMgY29udHJvdmVyc2lhbC4iLCJob3VzZWhvbGQgZ2FyYmFnZSByZWR1Y3Rpb24gaXMgaW1wb3NzaWJsZS4iLCJwZW9wbGUgYXJlIHJlZnVzaW5nIHRvIHNlcGFyYXRlIHRoZWlyIGdhcmJhZ2UuIiwidGhleSBoYXZlIGJlZW4gcG9wdWxhciBmb3IgbWFueSB5ZWFycy4iXSwia2V5IjoxLCJyZWNvbiI6ZmFsc2V9LHsibiI6Miwic3RlbSI6IktuaWdodGxleSB1c2VzIHRoZSBncmVlbiBiaW4gYmVjYXVzZSIsIm9wdGlvbnMiOlsiY29tcG9zdCBpcyBhIGdyZWF0IG1hdGVyaWFsIGZvciBoZXIgZ2FyZGVuIHNvaWwuIiwic2hlIGhhcyBnYXJiYWdlIHBpY2t1cCBldmVyeSB0d28gd2Vla3MuIiwic2hlIGJlbGlldmVzIHRoZSBwcm9ncmFtIGlzIGEgZ29vZCBpbml0aWF0aXZlLiIsImhlciBjaGlsZHJlbiBlbmpveSBsZWFybmluZyBhYm91dCBjb21wb3N0aW5nLiJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjozLCJzdGVtIjoiQmVhdXJlZ2FyZGUsIHRoZSBnYXJkZW5lciwgdGhpbmtzIiwib3B0aW9ucyI6WyJiYWNreWFyZCBjb21wb3N0ZXJzIGFyZSBiZXR0ZXIgdGhhbiBncmVlbiBiaW5zLiIsImNvbXBvc3Rpbmcgd2l0aCBncmVlbiBiaW5zIGlzIGVhc2llciBmb3IgcGVvcGxlLiIsImxlYXJuaW5nIHRvIGNvbXBvc3QgY2FuIGJlIGNoYWxsZW5naW5nIGZvciBzb21lLiIsImJhY2t5YXJkIGNvbXBvc3RpbmcgaXMgbW9yZSBjb3N0bHkgdGhhbiBncmVlbiBiaW5zLiJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjo0LCJzdGVtIjoiVm9sa292LCB0aGUgY291bmNpbGxvciwgYmVsaWV2ZXMgdGhlIGdyZWVuIGJpbiBwcm9ncmFtIGlzIiwib3B0aW9ucyI6WyJhIGNvc3RseSB3YXN0ZSBvZiB0YXhwYXllcidzIG1vbmV5LiIsImFuIGVkdWNhdGlvbmFsIHVuZGVydGFraW5nIGZvciByZXNpZGVudHMuIiwiYW4gZWZmaWNpZW50IGZpeCB0byB0aGUgY2l0eSdzIHByb2JsZW0uIiwiYW4gYWRlcXVhdGUgd2F5IHRvIHRhY2tsZSBmb29kIHdhc3RlLiJdLCJrZXkiOjMsInJlY29uIjpmYWxzZX0seyJuIjo1LCJzdGVtIjoiVm9sa292IGFuZCBCZWF1cmVnYXJkZSB3b3VsZCBhZ3JlZSB0aGF0Iiwib3B0aW9ucyI6WyJ0aGUgZ3JlZW4gYmluIHByb2dyYW0gY3JlYXRlcyBzb21ldGhpbmcgdXNlZnVsLiIsImNoZW1pY2FsIGZlcnRpbGl6ZXJzIGFyZSBoYXJtZnVsIHRvIHRoZSBlbnZpcm9ubWVudC4iLCJ0aGUgY2l0eSdzIHdhc3RlIHByb2JsZW0gd2FzIGdldHRpbmcgb3V0IG9mIGNvbnRyb2wuIiwidGhlcmUgYXJlIG1hbnkgcHJvYmxlbXMgd2l0aCB0aGUgZ3JlZW4gYmluIHByb2dyYW0uIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjYsInN0ZW0iOiJXaXRob3V0IHRoZSBncmVlbiBiaW4gcHJvZ3JhbSwgaXQncyBsaWtlbHkgdGhhdCIsIm9wdGlvbnMiOlsicmVndWxhciBnYXJiYWdlIGNvbGxlY3Rpb24gd291bGQgc3RpbGwgYmUgYmktd2Vla2x5LiIsInRoZSBtb3RoZXIgd291bGQgcHVyY2hhc2UgYSBiYWNreWFyZCBjb21wb3N0ZXIuIiwiYSBzZWNvbmQgZ2FyYmFnZSBkdW1wIHdvdWxkIG5lZWQgdG8gYmUgYnVpbHQuIiwidGhlIGdhcmRlbmVyIHdvdWxkIGhhdmUgZGlmZmljdWx0eSBmaW5kaW5nIGNvbXBvc3QuIl0sImtleSI6MywicmVjb24iOmZhbHNlfV19XX1dfTsKCnZhciBDRUxQSVBfWVQgPSB7IHZpZGVvSWQ6ICcnIH07ICAvKiBlLmcuICdkUXc0dzlXZ1hjUScgXHUyMDE0IFNldCAyIFRlc3QgMSBmdWxsIGxpc3RlbmluZyB2aWRlbyAqLwp2YXIgQ0xQX0NIQVBURVJTID0geyAnMC4wJzpbMCw1MjBdLCAnMC4xJzpbMCw1MjBdLCAnMC4yJzpbMCw1MjBdLCAnMS4wJzpbNTIwLDg1M10sICcyLjAnOls4NTMsMTI3Ml0sICczLjAnOlsxMjcyLDEzNjRdLCAnNC4wJzpbMTM2NCwxNTAzXSwgJzUuMCc6WzE1MDMsMTc1N10gfTsKCi8qIFRPRE86IHBsYWNlaG9sZGVyIG1hcHBpbmcgXHUyMDE0IHZlcmlmeSBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBDRUxQSVAgc2NvcmUgY2hhcnQuICovCmZ1bmN0aW9uIGNsYkVzdGltYXRlKHJhdyl7CiAgaWYgKHJhdyA+PSAzNSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgMTBcdTIwMTMxMicsIG5vdGU6ICdBZHZhbmNlZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDMwKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA5JywgICAgICAgIG5vdGU6ICdFZmZlY3RpdmUgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAyNykgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgOCcsICAgICAgICBub3RlOiAnR29vZCBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDIyKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA3JywgICAgICAgIG5vdGU6ICdBZGVxdWF0ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDE3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA2JywgICAgICAgIG5vdGU6ICdEZXZlbG9waW5nIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTEpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDUnLCAgICAgICAgbm90ZTogJ0FjcXVpcmluZyBwcm9maWNpZW5jeScgfTsKICByZXR1cm4gICAgICAgICAgICB7IGxldmVsOiAnQ0VMUElQIDQgb3IgYmVsb3cnLCAgIG5vdGU6ICdLZWVwIHByYWN0aWNpbmchJyB9Owp9CgovKiA9PT09PT09PT09PT09PT09PT09PT0gZW5naW5lID09PT09PT09PT09PT09PT09PT09PSAqLwooZnVuY3Rpb24oKXsKICB2YXIgcmVkdWNlZE1vdGlvbiA9IHdpbmRvdy5tYXRjaE1lZGlhICYmIHdpbmRvdy5tYXRjaE1lZGlhKCcocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKScpLm1hdGNoZXM7CiAgdmFyIGNhdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDYXQnKTsKICB2YXIgZG90c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscERvdHMnKTsKICB2YXIgdG9vbGJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBUb29sYmFyJyk7CiAgdmFyIHJlc3VsdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBSZXN1bHRzJyk7CiAgdmFyIHNjb3JlQ2hpcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTY29yZUNoaXAnKTsKCiAgdmFyIFRPVEFMX1EgPSAwOwogIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHApeyBwLnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocyl7IFRPVEFMX1EgKz0gcy5xdWVzdGlvbnMubGVuZ3RoOyB9KTsgfSk7CgogIHZhciBzY3JlZW5zID0gW107CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ludHJvJywgcGk6IHBpIH0pOwogICAgcGFydC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlYywgc2kpewogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnbWVkaWEnLCBwaTogcGksIHNpOiBzaSB9KTsKICAgICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ3EnLCBwaTogcGksIHNpOiBzaSB9KTsKICAgIH0pOwogIH0pOwogIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdmaW5pc2gnIH0pOwoKICB2YXIgc3RhdGUgPSB7CiAgICBzdGFydGVkOiBmYWxzZSwKICAgIGlkeDogMCwKICAgIGFuc3dlcnM6IHt9LCAgICAgIC8qICJwaS5zaS5xaSIgLT4gb3B0aW9uIGluZGV4ICgwLTMpICovCiAgICBjaGVja2VkOiBmYWxzZSwKICAgIHRpbWVyT246IHRydWUKICB9OwogIHZhciBtZWRpYVRpbWVyID0gbnVsbCwgcVRpbWVyID0gbnVsbCwgcVJlbWFpbmluZyA9IDA7CiAgdmFyIHBvcHVwID0gbnVsbCwgb3BlblRyaWdnZXIgPSBudWxsOwoKICBmdW5jdGlvbiBxS2V5KHBpLCBzaSwgcWkpeyByZXR1cm4gcGkgKyAnLicgKyBzaSArICcuJyArIHFpOyB9CiAgZnVuY3Rpb24gZm10KHNlYyl7IHZhciBtID0gTWF0aC5mbG9vcihzZWMvNjApLCBzID0gc2VjICUgNjA7IHJldHVybiBtICsgJzonICsgKHMgPCAxMCA\/ICcwJyA6ICcnKSArIHM7IH0KICBmdW5jdGlvbiBlbCh0YWcsIGNscywgdGV4dCl7CiAgICB2YXIgZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsKICAgIGlmIChjbHMpIGUuY2xhc3NOYW1lID0gY2xzOwogICAgaWYgKHRleHQgIT09IHVuZGVmaW5lZCkgZS50ZXh0Q29udGVudCA9IHRleHQ7CiAgICByZXR1cm4gZTsKICB9CiAgZnVuY3Rpb24gc2Nyb2xsVG9FbCh0YXJnZXQsIG9mZnNldCl7CiAgICB2YXIgeSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cucGFnZVlPZmZzZXQgLSAob2Zmc2V0IHx8IDcwKTsKICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogeSwgYmVoYXZpb3I6IHJlZHVjZWRNb3Rpb24gPyAnYXV0bycgOiAnc21vb3RoJyB9KTsKICB9CiAgZnVuY3Rpb24gY2xlYXJUaW1lcnMoKXsKICAgIGlmIChtZWRpYVRpbWVyKXsgY2xlYXJJbnRlcnZhbChtZWRpYVRpbWVyKTsgbWVkaWFUaW1lciA9IG51bGw7IH0KICAgIGlmIChxVGltZXIpeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICB9CiAgZnVuY3Rpb24gYW5zd2VyZWRDb3VudCgpeyByZXR1cm4gT2JqZWN0LmtleXMoc3RhdGUuYW5zd2VycykubGVuZ3RoOyB9CiAgZnVuY3Rpb24gdXBkYXRlU2NvcmVDaGlwKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgIHNjb3JlQ2hpcC50ZXh0Q29udGVudCA9ICdTY29yZSAnICsgY29tcHV0ZVNjb3JlKCkudG90YWwgKyAnLycgKyBUT1RBTF9ROwogICAgfSBlbHNlIHsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ0Fuc3dlcmVkICcgKyBhbnN3ZXJlZENvdW50KCkgKyAnLycgKyBUT1RBTF9ROwogICAgfQogIH0KICBmdW5jdGlvbiBjb21wdXRlU2NvcmUoKXsKICAgIHZhciB0b3RhbCA9IDAsIHBlclBhcnQgPSBbXTsKICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGMgPSAwLCBuID0gMDsKICAgICAgcGFydC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHNlYywgc2kpewogICAgICAgIHNlYy5xdWVzdGlvbnMuZm9yRWFjaChmdW5jdGlvbihxLCBxaSl7CiAgICAgICAgICBuKys7CiAgICAgICAgICBpZiAoc3RhdGUuYW5zd2Vyc1txS2V5KHBpLCBzaSwgcWkpXSA9PT0gcS5rZXkgLSAxKXsgYysrOyB0b3RhbCsrOyB9CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgICBwZXJQYXJ0LnB1c2goeyBjb3JyZWN0OiBjLCB0b3RhbDogbiB9KTsKICAgIH0pOwogICAgcmV0dXJuIHsgdG90YWw6IHRvdGFsLCBwZXJQYXJ0OiBwZXJQYXJ0IH07CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRyb3Bkb3duIHBvcHVwIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBjbG9zZVBvcHVwKCl7CiAgICBpZiAocG9wdXApeyBwb3B1cC5yZW1vdmUoKTsgcG9wdXAgPSBudWxsOyB9CiAgICBpZiAob3BlblRyaWdnZXIpeyBvcGVuVHJpZ2dlci5jbGFzc0xpc3QucmVtb3ZlKCdjbHAtb3BlbicpOyBvcGVuVHJpZ2dlciA9IG51bGw7IH0KICB9CiAgZnVuY3Rpb24gb3BlblBvcHVwKHRyaWdnZXIsIHBpLCBzaSwgcWkpewogICAgaWYgKG9wZW5UcmlnZ2VyID09PSB0cmlnZ2VyKXsgY2xvc2VQb3B1cCgpOyByZXR1cm47IH0KICAgIGNsb3NlUG9wdXAoKTsKICAgIHZhciBxID0gVEVTVF9EQVRBLnBhcnRzW3BpXS5zZWN0aW9uc1tzaV0ucXVlc3Rpb25zW3FpXTsKICAgIHZhciBrZXkgPSBxS2V5KHBpLCBzaSwgcWkpOwogICAgcG9wdXAgPSBlbCgnZGl2JywgJ2NscC1wb3AnKTsKICAgIHEub3B0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKG9wdCwgb2kpewogICAgICB2YXIgYiA9IGVsKCdidXR0b24nLCAnY2xwLW9wdCcgKyAoc3RhdGUuYW5zd2Vyc1trZXldID09PSBvaSA\/ICcgY2xwLXNlbCcgOiAnJykpOwogICAgICBiLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtcmFkaW8nKSk7CiAgICAgIGIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgb3B0KSk7CiAgICAgIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgc3RhdGUuYW5zd2Vyc1trZXldID0gb2k7CiAgICAgICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICAgICAgY2xvc2VQb3B1cCgpOwogICAgICAgIHNldFRyaWdnZXJMYWJlbCh0cmlnZ2VyLCBvcHQsIGZhbHNlKTsKICAgICAgfSk7CiAgICAgIHBvcHVwLmFwcGVuZENoaWxkKGIpOwogICAgfSk7CiAgICBjYXQuYXBwZW5kQ2hpbGQocG9wdXApOwogICAgLyogcG9zaXRpb246IGJlbG93IHRyaWdnZXIsIGZsaXAgYWJvdmUgd2hlbiBuZWFyIHZpZXdwb3J0IGJvdHRvbSAqLwogICAgcG9wdXAuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOwogICAgdmFyIGNhdFJlY3QgPSBjYXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgdFJlY3QgPSB0cmlnZ2VyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgdmFyIHBvcFcgPSBwb3B1cC5vZmZzZXRXaWR0aCwgcG9wSCA9IHBvcHVwLm9mZnNldEhlaWdodDsKICAgIHZhciBsZWZ0ID0gdFJlY3QubGVmdCAtIGNhdFJlY3QubGVmdDsKICAgIGxlZnQgPSBNYXRoLm1heCg4LCBNYXRoLm1pbihsZWZ0LCBjYXQuY2xpZW50V2lkdGggLSBwb3BXIC0gOCkpOwogICAgdmFyIHRvcDsKICAgIGlmICh0UmVjdC5ib3R0b20gKyBwb3BIICsgMjQgPiB3aW5kb3cuaW5uZXJIZWlnaHQgJiYgdFJlY3QudG9wIC0gcG9wSCAtIDggPiAwKXsKICAgICAgdG9wID0gdFJlY3QudG9wIC0gY2F0UmVjdC50b3AgLSBwb3BIIC0gNjsgICAvKiBmbGlwIGFib3ZlICovCiAgICB9IGVsc2UgewogICAgICB0b3AgPSB0UmVjdC5ib3R0b20gLSBjYXRSZWN0LnRvcCArIDY7CiAgICB9CiAgICBwb3B1cC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7CiAgICBwb3B1cC5zdHlsZS50b3AgPSB0b3AgKyAncHgnOwogICAgcG9wdXAuc3R5bGUudmlzaWJpbGl0eSA9ICcnOwogICAgdHJpZ2dlci5jbGFzc0xpc3QuYWRkKCdjbHAtb3BlbicpOwogICAgb3BlblRyaWdnZXIgPSB0cmlnZ2VyOwogIH0KICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgIGlmIChwb3B1cCAmJiAhcG9wdXAuY29udGFpbnMoZXYudGFyZ2V0KSAmJiBldi50YXJnZXQgIT09IG9wZW5UcmlnZ2VyICYmICghb3BlblRyaWdnZXIgfHwgIW9wZW5UcmlnZ2VyLmNvbnRhaW5zKGV2LnRhcmdldCkpKXsKICAgICAgY2xvc2VQb3B1cCgpOwogICAgfQogIH0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjbG9zZVBvcHVwKTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgZnVuY3Rpb24oKXsgLyoga2VlcCBwb3B1cCBhbmNob3JlZDogY2xvc2Ugb24gc2Nyb2xsICovIGlmIChwb3B1cCkgY2xvc2VQb3B1cCgpOyB9LCB7IHBhc3NpdmU6IHRydWUgfSk7CgogIGZ1bmN0aW9uIHNldFRyaWdnZXJMYWJlbCh0cmlnZ2VyLCB0ZXh0LCB1bmFuc3dlcmVkKXsKICAgIHRyaWdnZXIuY2xhc3NMaXN0LnRvZ2dsZSgnY2xwLXVuYW5zd2VyZWQnLCAhIXVuYW5zd2VyZWQpOwogICAgdHJpZ2dlci5xdWVyeVNlbGVjdG9yKCcuY2xwLWRkLXRleHQnKS50ZXh0Q29udGVudCA9IHVuYW5zd2VyZWQgPyAnXHUyMDI2XHUyMDI2XHUyMDI2XHUyMDI2JyA6IHRleHQ7CiAgfQoKICAvKiAtLS0tLS0tLS0tIGRvdHMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlckRvdHMoKXsKICAgIGRvdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHZhciBjdXJQaSA9IC0xOwogICAgdmFyIHMgPSBzY3JlZW5zW3N0YXRlLmlkeF07CiAgICBpZiAocyAmJiBzLnBpICE9PSB1bmRlZmluZWQpIGN1clBpID0gcy5waTsKICAgIGlmIChzICYmIHMudHlwZSA9PT0gJ2ZpbmlzaCcpIGN1clBpID0gVEVTVF9EQVRBLnBhcnRzLmxlbmd0aDsgLyogYWxsIGRvbmUgKi8KICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGQgPSBlbCgnYnV0dG9uJywgJ2NscC1kb3QnLCAnUCcgKyAocGkgKyAxKSk7CiAgICAgIGQudHlwZSA9ICdidXR0b24nOwogICAgICBpZiAocGkgPT09IGN1clBpKSBkLmNsYXNzTGlzdC5hZGQoJ2NscC1jdXInKTsKICAgICAgZWxzZSBpZiAocGkgPCBjdXJQaSB8fCBzdGF0ZS5jaGVja2VkKSBkLmNsYXNzTGlzdC5hZGQoJ2NscC1kb25lJyk7CiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkLmNsYXNzTGlzdC5hZGQoJ2NscC1jbGlja2FibGUnKTsKICAgICAgICBkLnRpdGxlID0gJ1JldmlldyAnICsgcGFydC5uYW1lOwogICAgICAgIGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JlZW5zLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHNjcmVlbnNbaV0udHlwZSA9PT0gJ3EnICYmIHNjcmVlbnNbaV0ucGkgPT09IHBpKXsgc3RhdGUuaWR4ID0gaTsgYnJlYWs7IH0KICAgICAgICAgIH0KICAgICAgICAgIHJlbmRlcigpOyBzY3JvbGxUb0VsKGNhdCk7CiAgICAgICAgfSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZC50aXRsZSA9IHBhcnQubmFtZTsKICAgICAgfQogICAgICBkb3RzRWwuYXBwZW5kQ2hpbGQoZCk7CiAgICB9KTsKICB9CgogIC8qIC0tLS0tLS0tLS0gY2hyb21lIHBpZWNlcyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gbWFrZUJhcih0aXRsZSwgd2l0aFRpbWVyKXsKICAgIHZhciBiYXIgPSBlbCgnZGl2JywgJ2NscC1iYXInKTsKICAgIGJhci5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtYmFyLXRpdGxlJywgdGl0bGUpKTsKICAgIGlmICh3aXRoVGltZXIgJiYgc3RhdGUudGltZXJPbil7CiAgICAgIHZhciB0ID0gZWwoJ3NwYW4nLCAnY2xwLWJhci10aW1lcicpOwogICAgICB0LmlkID0gJ2NscFFUaW1lcic7CiAgICAgIHQuaW5uZXJIVE1MID0gJ1RpbWUgcmVtYWluaW5nOiA8Yj4nICsgZm10KHFSZW1haW5pbmcpICsgJzwvYj4nOwogICAgICBiYXIuYXBwZW5kQ2hpbGQodCk7CiAgICB9CiAgICB2YXIgbmV4dCA9IGVsKCdidXR0b24nLCAnY2xwLW5leHQnLCAnTmV4dCcpOwogICAgbmV4dC50eXBlID0gJ2J1dHRvbic7CiAgICBuZXh0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgY2xvc2VQb3B1cCgpOwogICAgICBpZiAoc3RhdGUuaWR4IDwgc2NyZWVucy5sZW5ndGggLSAxKXsgc3RhdGUuaWR4Kys7IHJlbmRlcigpOyBzY3JvbGxUb0VsKGNhdCk7IH0KICAgIH0pOwogICAgaWYgKHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAnZmluaXNoJykgbmV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgYmFyLmFwcGVuZENoaWxkKG5leHQpOwogICAgcmV0dXJuIGJhcjsKICB9CiAgZnVuY3Rpb24gbWFrZUluc3RyKHRleHQpewogICAgdmFyIHJvdyA9IGVsKCdkaXYnLCAnY2xwLWluc3RyJyk7CiAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWluZm8nLCAnaScpKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgncCcsICcnLCB0ZXh0KSk7CiAgICByZXR1cm4gcm93OwogIH0KICB2YXIgU1BFQUtFUl9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIxIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICc8cGF0aCBkPSJNOSA5IEwxNSA0IEwxNSAyMiBMOSAxNyBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPicgKwogICAgJzxwYXRoIGQ9Ik0yMC41IDYuNSBhOSA5IDAgMCAxIDAgMTMiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgdmFyIFBMQVlfU1ZHID0gJzxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICc8cGF0aCBkPSJNOCA1IEwyMSAxMyBMOCAyMSBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz48L3N2Zz4nOwoKICAvKiAtLS0tLS0tLS0tIHNjcmVlbnMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIHJlbmRlckludHJvKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgSW5zdHJ1Y3Rpb25zJyk7CiAgICByb290LmFwcGVuZENoaWxkKG1ha2VJbnN0cignSW5zdHJ1Y3Rpb25zOicpKTsKICAgIHZhciBib2R5ID0gZWwoJ2RpdicsICdjbHAtaW50cm8tYm9keScpOwogICAgYm9keS5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgcGFydC5pbnRyb1RpdGxlKSk7CiAgICB2YXIgdWwgPSBlbCgndWwnLCAnY2xwLWJ1bGxldHMnKTsKICAgIHBhcnQuaW50cm9CdWxsZXRzLmZvckVhY2goZnVuY3Rpb24oYil7IHVsLmFwcGVuZENoaWxkKGVsKCdsaScsICcnLCBiKSk7IH0pOwogICAgYm9keS5hcHBlbmRDaGlsZCh1bCk7CiAgICByb290LmFwcGVuZENoaWxkKGJvZHkpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyTWVkaWEoc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICB2YXIgc2VjID0gcGFydC5zZWN0aW9uc1tzY3Iuc2ldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgTWVkaWEnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKHNlYy5tZWRpYUluc3RydWN0aW9uKSk7CnZhciBfYWs9c2NyLnBpKyIuIitzY3Iuc2ksX2F1PSh0eXBlb2YgQ0xQX0FVRElPIT09InVuZGVmaW5lZCIpJiZDTFBfQVVESU9bX2FrXTtpZihfYXUpe3ZhciBfaXNWPSh0eXBlb2YgQ0xQX0FVRElPX1ZJREVPIT09InVuZGVmaW5lZCIpJiZDTFBfQVVESU9fVklERU9bX2FrXTt2YXIgX3A9ZWwoImRpdiIsImNscC1tZWRpYS1wYW5lbCIpO3ZhciBfYz1lbCgiZGl2IiwiY2xwLW1lZGlhLWNhcmQiKyhfaXNWPyIgY2xwLWlzLXZpZGVvIjoiIikpO3ZhciBfbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KF9pc1Y\/InZpZGVvIjoiYXVkaW8iKTtfbS5zcmM9X2F1O19tLmNvbnRyb2xzPXRydWU7X20ucHJlbG9hZD0ibm9uZSI7X20uY2xhc3NOYW1lPSJjbHAtcmVhbG1lZGlhIjtfbS5zZXRBdHRyaWJ1dGUoImNvbnRyb2xzTGlzdCIsIm5vZG93bmxvYWQiKTtfbS5zdHlsZS5jc3NUZXh0PV9pc1Y\/IndpZHRoOjEwMCU7Ym9yZGVyLXJhZGl1czo4cHg7YmFja2dyb3VuZDojMDAwO2Rpc3BsYXk6YmxvY2siOiJ3aWR0aDoxMDAlO2Rpc3BsYXk6YmxvY2siO19jLmFwcGVuZENoaWxkKF9tKTtfcC5hcHBlbmRDaGlsZChfYyk7X3AuYXBwZW5kQ2hpbGQoZWwoImRpdiIsImNscC1vbmNlLW5vdGUiLCJJbiB0aGUgcmVhbCB0ZXN0IHRoaXMgcmVjb3JkaW5nIHBsYXlzIG9uY2UuIEZvciBwcmFjdGljZSB5b3UgY2FuIHJlcGxheSBpdCBcdTIwMTQgYnV0IHRyeSB0byBsaXN0ZW4gb25seSBvbmNlIGZpcnN0LiIpKTtyb290LmFwcGVuZENoaWxkKF9wKTtyZXR1cm47fQoKICAgIGlmIChDRUxQSVBfWVQudmlkZW9JZCl7CiAgICAgIHZhciBjaCA9IENMUF9DSEFQVEVSU1tzY3IucGkgKyAnLicgKyBzY3Iuc2ldIHx8IFswLCAwXTsKICAgICAgdmFyIHZwYW5lbCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXBhbmVsJyk7CiAgICAgIHZhciB2Y2FyZCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLWNhcmQgY2xwLWlzLXZpZGVvJyk7CiAgICAgIHZhciB3cmFwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIHdyYXAuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjpyZWxhdGl2ZTt3aWR0aDoxMDAlO2FzcGVjdC1yYXRpbzoxNi85O2JvcmRlci1yYWRpdXM6OHB4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kOiMwMDA7JzsKICAgICAgdmFyIGlmciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICBpZnIuc3JjID0gJ2h0dHBzOi8vd3d3LnlvdXR1YmUtbm9jb29raWUuY29tL2VtYmVkLycgKyBDRUxQSVBfWVQudmlkZW9JZCArICc\/c3RhcnQ9JyArIGNoWzBdICsgKGNoWzFdID8gJyZlbmQ9JyArIGNoWzFdIDogJycpICsgJyZyZWw9MCZtb2Rlc3RicmFuZGluZz0xJzsKICAgICAgaWZyLmFsbG93ID0gJ2F1dG9wbGF5OyBlbmNyeXB0ZWQtbWVkaWE7IHBpY3R1cmUtaW4tcGljdHVyZSc7CiAgICAgIGlmci5hbGxvd0Z1bGxzY3JlZW4gPSB0cnVlOwogICAgICBpZnIudGl0bGUgPSAnQ0VMUElQIExpc3RlbmluZyBtZWRpYSc7CiAgICAgIGlmci5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXI6MDsnOwogICAgICB3cmFwLmFwcGVuZENoaWxkKGlmcik7CiAgICAgIHZjYXJkLmFwcGVuZENoaWxkKHdyYXApOwogICAgICB2cGFuZWwuYXBwZW5kQ2hpbGQodmNhcmQpOwogICAgICB2cGFuZWwuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsICdjbHAtb25jZS1ub3RlJywgJ0luIHRoZSByZWFsIHRlc3QgdGhpcyBwbGF5cyBvbmx5IG9uY2UgXHUyMDE0IHByZXNzIE5FWFQgd2hlbiBpdCBlbmRzLicpKTsKICAgICAgcm9vdC5hcHBlbmRDaGlsZCh2cGFuZWwpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIHBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCcgKyAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/ICcgY2xwLWlzLXZpZGVvJyA6ICcnKSk7CiAgICAvKiAuY2xwLW1lZGlhLXpvbmUgaXMgdGhlIGZ1dHVyZSBZb3VUdWJlLWVtYmVkIHRhcmdldCAoZGF0YS1tZWRpYS1zbG90KSAqLwogICAgdmFyIHpvbmUgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS16b25lJyk7CiAgICB6b25lLnNldEF0dHJpYnV0ZSgnZGF0YS1tZWRpYS1zbG90Jywgc2NyLnBpICsgJy4nICsgc2NyLnNpKTsKICAgIHZhciBpY29uID0gZWwoJ2RpdicsICdjbHAtc3BlYWtlcicpOwogICAgaWNvbi5pbm5lckhUTUwgPSBzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gUExBWV9TVkcgOiBTUEVBS0VSX1NWRzsKICAgIHZhciBtYWluID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbWFpbicpOwogICAgdmFyIGxhYmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbGFiZWwnLCAnUGxheWluZ1x1MjAyNicpOwogICAgdmFyIHByb2cgPSBlbCgnZGl2JywgJ2NscC1wcm9ncmVzcycpOwogICAgdmFyIGZpbGwgPSBlbCgnZGl2JywgJ2NscC1wcm9ncmVzcy1maWxsJyk7CiAgICBwcm9nLmFwcGVuZENoaWxkKGZpbGwpOwoKICAgIGlmIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nKXsKICAgICAgem9uZS5hcHBlbmRDaGlsZChpY29uKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZCh6b25lKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChsYWJlbCk7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQocHJvZyk7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQobWFpbik7CiAgICB9IGVsc2UgewogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgem9uZS5hcHBlbmRDaGlsZChpY29uKTsKICAgICAgem9uZS5hcHBlbmRDaGlsZChtYWluKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZCh6b25lKTsKICAgIH0KICAgIHBhbmVsLmFwcGVuZENoaWxkKGNhcmQpOwoKICAgIHZhciBtZXRhID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtbWV0YScpOwogICAgdmFyIHRpbWVTcGFuID0gZWwoJ3NwYW4nLCAnJywgJzA6MDAgLyAnICsgZm10KHNlYy5kdXJhdGlvbikpOwogICAgbWV0YS5hcHBlbmRDaGlsZCh0aW1lU3Bhbik7CiAgICB2YXIgdm9sID0gZWwoJ3NwYW4nLCAnJyk7CiAgICB2b2wuaW5uZXJIVE1MID0gJzxzdmcgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICAgJzxyZWN0IHg9IjMiIHk9IjkiIHdpZHRoPSI2IiBoZWlnaHQ9IjgiIHJ4PSIxIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTE4IDkgYTUuNSA1LjUgMCAwIDEgMCA4IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4nOwogICAgbWV0YS5hcHBlbmRDaGlsZCh2b2wpOwogICAgcGFuZWwuYXBwZW5kQ2hpbGQobWV0YSk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/ICdUaGlzIHZpZGVvIHBsYXlzJyA6ICdUaGlzIHJlY29yZGluZyBwbGF5cycpICsgJyBvbmx5IG9uY2UgXHUyMDE0IGp1c3QgbGlrZSB0aGUgcmVhbCB0ZXN0LicpKTsKICAgIGlmICghQ0VMUElQX1lULnZpZGVvSWQpeyBwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnT2ZmaWNpYWwgYXVkaW8vdmlkZW8gaXMgYmVpbmcgcHJlcGFyZWQgXHUyMDE0IHRoZSBiYXIgYWJvdmUgaXMgYSBzaW11bGF0aW9uLiBQcmVzcyBORVhUIHRvIGNvbnRpbnVlLicpKTsgfQogICAgcm9vdC5hcHBlbmRDaGlsZChwYW5lbCk7CgogICAgLyogc2ltdWxhdGVkIHBsYXliYWNrICovCiAgICB2YXIgZWxhcHNlZCA9IDA7CiAgICBtZWRpYVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgZWxhcHNlZCsrOwogICAgICBpZiAoZWxhcHNlZCA+PSBzZWMuZHVyYXRpb24pewogICAgICAgIGVsYXBzZWQgPSBzZWMuZHVyYXRpb247CiAgICAgICAgY2xlYXJJbnRlcnZhbChtZWRpYVRpbWVyKTsgbWVkaWFUaW1lciA9IG51bGw7CiAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSAnRmluaXNoZWQnOwogICAgICB9CiAgICAgIGZpbGwuc3R5bGUud2lkdGggPSBNYXRoLnJvdW5kKGVsYXBzZWQgLyBzZWMuZHVyYXRpb24gKiAxMDApICsgJyUnOwogICAgICB0aW1lU3Bhbi50ZXh0Q29udGVudCA9IGZtdChlbGFwc2VkKSArICcgLyAnICsgZm10KHNlYy5kdXJhdGlvbik7CiAgICB9LCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclF1ZXN0aW9ucyhzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBRdWVzdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKHBhcnQucUluc3RydWN0aW9uKSk7CgogICAgdmFyIHBhbmVsID0gZWwoJ2RpdicsICdjbHAtcS1wYW5lbCcpOwogICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgdmFyIGtleSA9IHFLZXkoc2NyLnBpLCBzY3Iuc2ksIHFpKTsKICAgICAgdmFyIHJvdyA9IGVsKCdkaXYnLCAnY2xwLXEnKTsKICAgICAgdmFyIG51bSA9IGVsKCdzcGFuJywgJ2NscC1xbnVtJywgcS5uICsgJy4gJyk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChudW0pOwogICAgICByb3cuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocS5zdGVtICsgJyAnKSk7CgogICAgICB2YXIgZGQgPSBlbCgnYnV0dG9uJywgJ2NscC1kZCcpOwogICAgICBkZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC10ZXh0JykpOwogICAgICBkZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtZGQtY2FyZXQnLCAnXHUyNUJDJykpOwogICAgICB2YXIgYW5zID0gc3RhdGUuYW5zd2Vyc1trZXldOwogICAgICBzZXRUcmlnZ2VyTGFiZWwoZGQsIGFucyAhPT0gdW5kZWZpbmVkID8gcS5vcHRpb25zW2Fuc10gOiAnJywgYW5zID09PSB1bmRlZmluZWQpOwogICAgICByb3cuYXBwZW5kQ2hpbGQoZGQpOwoKICAgICAgaWYgKHEudG9kbyl7CiAgICAgICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10b2RvLXRhZycsICdUT0RPJykpOwogICAgICB9CgogICAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgICAgZGQuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgIHZhciBjb3JyZWN0ID0gYW5zID09PSBxLmtleSAtIDE7CiAgICAgICAgZGQuY2xhc3NMaXN0LmFkZChjb3JyZWN0ID8gJ2NscC1tYXJrLXJpZ2h0JyA6ICdjbHAtbWFyay13cm9uZycpOwogICAgICAgIGlmICghY29ycmVjdCl7CiAgICAgICAgICB2YXIgcmV2ID0gZWwoJ3NwYW4nLCAnY2xwLXJldmVhbCcpOwogICAgICAgICAgcmV2LmlubmVySFRNTCA9ICdDb3JyZWN0IGFuc3dlcjogPGI+PC9iPic7CiAgICAgICAgICByZXYucXVlcnlTZWxlY3RvcignYicpLnRleHRDb250ZW50ID0gcS5vcHRpb25zW3Eua2V5IC0gMV07CiAgICAgICAgICByb3cuYXBwZW5kQ2hpbGQocmV2KTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgIG9wZW5Qb3B1cChkZCwgc2NyLnBpLCBzY3Iuc2ksIHFpKTsKICAgICAgICB9KTsKICAgICAgfQogICAgICBwYW5lbC5hcHBlbmRDaGlsZChyb3cpOwogICAgfSk7CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBjb3VudGRvd24gKi8KICAgIHFSZW1haW5pbmcgPSBzZWMudGltZU1pbnV0ZXMgKiA2MDsKICAgIHN0YXJ0UVRpbWVyKCk7CiAgfQogIGZ1bmN0aW9uIHN0YXJ0UVRpbWVyKCl7CiAgICBpZiAocVRpbWVyKSBjbGVhckludGVydmFsKHFUaW1lcik7CiAgICBpZiAoIXN0YXRlLnRpbWVyT24pIHJldHVybjsKICAgIHFUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgIGlmIChxUmVtYWluaW5nID4gMCkgcVJlbWFpbmluZy0tOwogICAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBRVGltZXInKTsKICAgICAgaWYgKHQpIHQuaW5uZXJIVE1MID0gJ1RpbWUgcmVtYWluaW5nOiA8Yj4nICsgZm10KHFSZW1haW5pbmcpICsgJzwvYj4nOwogICAgICBpZiAocVJlbWFpbmluZyA8PSAwKXsgY2xlYXJJbnRlcnZhbChxVGltZXIpOyBxVGltZXIgPSBudWxsOyB9CiAgICB9LCAxMDAwKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlckZpbmlzaChyb290KXsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsICdFbmQgb2YgVGVzdCcpOwogICAgdmFyIGJveCA9IGVsKCdkaXYnLCAnY2xwLWZpbmlzaCcpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnRW5kIG9mIHRoZSBMaXN0ZW5pbmcgVGVzdCcpKTsKICAgIGJveC5hcHBlbmRDaGlsZChlbCgncCcsICcnLCAnWW91IGhhdmUgYW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcgb2YgJyArIFRPVEFMX1EgKyAnIHF1ZXN0aW9ucy4gQ2hlY2sgeW91ciBhbnN3ZXJzIHRvIHNlZSB5b3VyIHNjb3JlLCBwYXJ0LWJ5LXBhcnQgcmVzdWx0cywgYW5kIHRyYW5zY3JpcHRzLicpKTsKICAgIHZhciBidG4gPSBlbCgnYnV0dG9uJywgJ2NscC1maW5pc2gtY2hlY2snLCAnQ2hlY2sgYW5zd2VycycpOwogICAgYnRuLnR5cGUgPSAnYnV0dG9uJzsKICAgIGJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGNoZWNrQW5zd2Vycyk7CiAgICBib3guYXBwZW5kQ2hpbGQoYnRuKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm94KTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlcigpewogICAgY2xlYXJUaW1lcnMoKTsKICAgIGNsb3NlUG9wdXAoKTsKICAgIGNhdC5pbm5lckhUTUwgPSAnJzsKICAgIHZhciBzY3IgPSBzY3JlZW5zW3N0YXRlLmlkeF07CgogICAgaWYgKCFzdGF0ZS5zdGFydGVkKXsKICAgICAgdmFyIGJhcjAgPSBlbCgnZGl2JywgJ2NscC1iYXInKTsKICAgICAgYmFyMC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtYmFyLXRpdGxlJywgVEVTVF9EQVRBLnRlc3RMYWJlbCArICcgXHUyMDEzIExpc3RlbmluZyBUZXN0JykpOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoYmFyMCk7CiAgICAgIHZhciBpZGxlID0gZWwoJ2RpdicsICdjbHAtaWRsZScpOwogICAgICB2YXIgcCA9IGVsKCdwJywgJycsICdQcmVzcyBcdTIwMUNTdGFydCB0ZXN0XHUyMDFEIGFib3ZlIHRvIGJlZ2luLiBUaGUgdGVzdCBoYXMgNiBwYXJ0cyBhbmQgMzggcXVlc3Rpb25zLCBhbmQgZXZlcnkgcmVjb3JkaW5nIGFuZCB2aWRlbyBwbGF5cyBvbmx5IG9uY2UgXHUyMDE0IGp1c3QgbGlrZSB0aGUgcmVhbCBjb21wdXRlci1kZWxpdmVyZWQgdGVzdC4nKTsKICAgICAgaWRsZS5hcHBlbmRDaGlsZChwKTsKICAgICAgY2F0LmFwcGVuZENoaWxkKGlkbGUpOwogICAgICByZW5kZXJEb3RzKCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgaXNRID0gc2NyLnR5cGUgPT09ICdxJzsKICAgIGlmIChpc1EpewogICAgICB2YXIgc2VjID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uc2VjdGlvbnNbc2NyLnNpXTsKICAgICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgfQogICAgdmFyIHRpdGxlID0gc2NyLnR5cGUgPT09ICdmaW5pc2gnCiAgICAgID8gVEVTVF9EQVRBLnRlc3RMYWJlbCArICcgXHUyMDEzIExpc3RlbmluZyBUZXN0JwogICAgICA6IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldLmhlYWRlclRpdGxlOwogICAgY2F0LmFwcGVuZENoaWxkKG1ha2VCYXIodGl0bGUsIGlzUSkpOwoKICAgIHZhciBzY3JlZW4gPSBlbCgnZGl2JywgJ2NscC1zY3JlZW4nKTsKICAgIGlmIChzY3IudHlwZSA9PT0gJ2ludHJvJykgcmVuZGVySW50cm8oc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdtZWRpYScpIHJlbmRlck1lZGlhKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgaWYgKHNjci50eXBlID09PSAncScpIHJlbmRlclF1ZXN0aW9ucyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIHJlbmRlckZpbmlzaChzY3JlZW4pOwogICAgY2F0LmFwcGVuZENoaWxkKHNjcmVlbik7CiAgICByZW5kZXJEb3RzKCk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIHJlc3VsdHMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNoZWNrQW5zd2VycygpewogICAgaWYgKHN0YXRlLmNoZWNrZWQpIHJldHVybjsKICAgIHN0YXRlLmNoZWNrZWQgPSB0cnVlOwogICAgdmFyIHNjb3JlID0gY29tcHV0ZVNjb3JlKCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHJlbmRlcigpOwogICAgcmVuZGVyUmVzdWx0cyhzY29yZSk7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gZmFsc2U7CiAgICBzY3JvbGxUb0VsKHJlc3VsdHNFbCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJSZXN1bHRzKHNjb3JlKXsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChlbCgnaDInLCAnJywgJ1lvdXIgcmVzdWx0cycpKTsKICAgIHZhciBncmlkID0gZWwoJ2RpdicsICdjbHAtcmVzLWdyaWQnKTsKCiAgICAvKiByaW5nIGNhcmQgKi8KICAgIHZhciByaW5nQ2FyZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJpbmctY2FyZCBjbHAtcmV2Jyk7CiAgICB2YXIgd3JhcCA9IGVsKCdkaXYnLCAnY2xwLXJpbmctd3JhcCcpOwogICAgdmFyIFIgPSA1NiwgQyA9IDIgKiBNYXRoLlBJICogUjsKICAgIHdyYXAuaW5uZXJIVE1MID0KICAgICAgJzxzdmcgd2lkdGg9IjEzMiIgaGVpZ2h0PSIxMzIiIHZpZXdCb3g9IjAgMCAxMzIgMTMyIj4nICsKICAgICAgJzxjaXJjbGUgY3g9IjY2IiBjeT0iNjYiIHI9IicgKyBSICsgJyIgc3Ryb2tlPSIjRTJFOEYwIiBzdHJva2Utd2lkdGg9IjExIiBmaWxsPSJub25lIi8+JyArCiAgICAgICc8Y2lyY2xlIGlkPSJjbHBSaW5nIiBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiMxMEI5ODEiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgJyArCiAgICAgICdzdHJva2UtZGFzaGFycmF5PSInICsgQyArICciIHN0cm9rZS1kYXNob2Zmc2V0PSInICsgQyArICciLz48L3N2Zz4nOwogICAgdmFyIG51bSA9IGVsKCdkaXYnLCAnY2xwLXJpbmctbnVtJyk7CiAgICB2YXIgYmlnID0gZWwoJ2InLCAnJywgJzAnKTsKICAgIG51bS5hcHBlbmRDaGlsZChiaWcpOwogICAgbnVtLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJycsICdvdXQgb2YgJyArIFRPVEFMX1EpKTsKICAgIHdyYXAuYXBwZW5kQ2hpbGQobnVtKTsKICAgIHJpbmdDYXJkLmFwcGVuZENoaWxkKHdyYXApOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdUb3RhbCBzY29yZScpKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQocmluZ0NhcmQpOwoKICAgIC8qIGJyZWFrZG93biBjYXJkICovCiAgICB2YXIgYmQgPSBlbCgnZGl2JywgJ2NscC1jYXJkIGNscC1yZXYnKTsKICAgIGJkLmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnUGFydC1ieS1wYXJ0IGJyZWFrZG93bicpKTsKICAgIHZhciBjaGlwcyA9IGVsKCdkaXYnLCAnY2xwLXBhcnQtY2hpcHMnKTsKICAgIHNjb3JlLnBlclBhcnQuZm9yRWFjaChmdW5jdGlvbihwcCwgcGkpewogICAgICB2YXIgYyA9IGVsKCdzcGFuJywgJ2NscC1wYXJ0LWNoaXAnKTsKICAgICAgYy5pbm5lckhUTUwgPSAnUCcgKyAocGkgKyAxKSArICcgPGI+JyArIHBwLmNvcnJlY3QgKyAnLycgKyBwcC50b3RhbCArICc8L2I+JzsKICAgICAgY2hpcHMuYXBwZW5kQ2hpbGQoYyk7CiAgICB9KTsKICAgIGJkLmFwcGVuZENoaWxkKGNoaXBzKTsKCiAgICB2YXIgZXN0ID0gY2xiRXN0aW1hdGUoc2NvcmUudG90YWwpOwogICAgdmFyIGNsYiA9IGVsKCdkaXYnLCAnY2xwLWNsYi1yb3cnKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtY2xiLWJhZGdlJywgZXN0LmxldmVsKSk7CiAgICBjbGIuYXBwZW5kQ2hpbGQoZWwoJ3AnLCAnJywgZXN0Lm5vdGUgKyAnIFx1MjAxNCBlc3RpbWF0ZWQgZnJvbSBhIHJhdyBzY29yZSBvZiAnICsgc2NvcmUudG90YWwgKyAnLycgKyBUT1RBTF9RICsgJy4gVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4nKSk7CiAgICBiZC5hcHBlbmRDaGlsZChjbGIpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChiZCk7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQoZ3JpZCk7CgogICAgLyogdHJhbnNjcmlwdHMgKi8KICAgIHZhciB0cldyYXAgPSBlbCgnZGl2JywgJ2NscC10cmFuc2NyaXB0cycpOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgY2FyZCA9IGVsKCdkaXYnLCAnY2xwLXRyLWNhcmQgY2xwLXJldicpOwogICAgICB2YXIgaGVhZCA9IGVsKCdidXR0b24nLCAnY2xwLXRyLWhlYWQnKTsKICAgICAgaGVhZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ1RyYW5zY3JpcHQgXHUyMDE0ICcgKyBwYXJ0Lm5hbWUpKTsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtdHItY2FyZXQnLCAnXHUyNUJDJykpOwogICAgICBoZWFkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsgY2FyZC5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtb3BlbicpOyB9KTsKICAgICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC10ci1ib2R5Jyk7CiAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFydC50cmFuc2NyaXB0KSk7CiAgICAgIGlmIChwYXJ0LnRyYW5zY3JpcHRUb2RvKXsKICAgICAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci10b2RvJywgJ1RPRE86IHJlcGxhY2UgdGhpcyBzdW1tYXJ5IHdpdGggdGhlIGZ1bGwgb2ZmaWNpYWwgdHJhbnNjcmlwdC4nKSk7CiAgICAgIH0KICAgICAgY2FyZC5hcHBlbmRDaGlsZChoZWFkKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChib2R5KTsKICAgICAgdHJXcmFwLmFwcGVuZENoaWxkKGNhcmQpOwogICAgfSk7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQodHJXcmFwKTsKCiAgICAvKiByZXZlYWwgKyBjb3VudC11cCAqLwogICAgdmFyIHJldkVscyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yQWxsKCcuY2xwLXJldicpOwogICAgaWYgKCdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93ICYmICFyZWR1Y2VkTW90aW9uKXsKICAgICAgdmFyIGlvID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGVudHJpZXMpewogICAgICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbil7CiAgICAgICAgICBpZiAoZW4uaXNJbnRlcnNlY3RpbmcpeyBlbi50YXJnZXQuY2xhc3NMaXN0LmFkZCgnY2xwLWluJyk7IGlvLnVub2JzZXJ2ZShlbi50YXJnZXQpOyB9CiAgICAgICAgfSk7CiAgICAgIH0sIHsgdGhyZXNob2xkOiAwLjE1IH0pOwogICAgICByZXZFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgaW8ub2JzZXJ2ZShlKTsgfSk7CiAgICB9IGVsc2UgewogICAgICByZXZFbHMuZm9yRWFjaChmdW5jdGlvbihlKXsgZS5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgfSk7CiAgICB9CgogICAgdmFyIHJpbmcgPSByZXN1bHRzRWwucXVlcnlTZWxlY3RvcignI2NscFJpbmcnKTsKICAgIHZhciB0YXJnZXQgPSBzY29yZS50b3RhbDsKICAgIGlmIChyZWR1Y2VkTW90aW9uKXsKICAgICAgYmlnLnRleHRDb250ZW50ID0gdGFyZ2V0OwogICAgICByaW5nLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBDICogKDEgLSB0YXJnZXQgLyBUT1RBTF9RKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciB0MCA9IG51bGwsIERVUiA9IDExMDA7CiAgICAgIGZ1bmN0aW9uIHN0ZXAodHMpewogICAgICAgIGlmICghdDApIHQwID0gdHM7CiAgICAgICAgdmFyIHAgPSBNYXRoLm1pbigxLCAodHMgLSB0MCkgLyBEVVIpOwogICAgICAgIHZhciBlYXNlID0gMSAtIE1hdGgucG93KDEgLSBwLCAzKTsKICAgICAgICBiaWcudGV4dENvbnRlbnQgPSBNYXRoLnJvdW5kKGVhc2UgKiB0YXJnZXQpOwogICAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIChlYXNlICogdGFyZ2V0KSAvIFRPVEFMX1EpOwogICAgICAgIGlmIChwIDwgMSkgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgICB9CiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKICAgIH0KICB9CgogIC8qIC0tLS0tLS0tLS0gdG9vbGJhciAvIGNvbnRyb2xzIC0tLS0tLS0tLS0gKi8KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU3RhcnQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBzdGF0ZS5zdGFydGVkID0gdHJ1ZTsKICAgIHN0YXRlLmlkeCA9IDA7CiAgICB0b29sYmFyLmhpZGRlbiA9IGZhbHNlOwogICAgcmVuZGVyKCk7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNpbScpKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwQ2hlY2snKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpIHJldHVybjsKICAgIGNoZWNrQW5zd2VycygpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBSZXNldCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSBmYWxzZTsKICAgIHN0YXRlLmlkeCA9IDA7CiAgICBzdGF0ZS5hbnN3ZXJzID0ge307CiAgICBzdGF0ZS5jaGVja2VkID0gZmFsc2U7CiAgICByZXN1bHRzRWwuaGlkZGVuID0gdHJ1ZTsKICAgIHJlc3VsdHNFbC5pbm5lckhUTUwgPSAnJzsKICAgIHRvb2xiYXIuaGlkZGVuID0gdHJ1ZTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICBzY3JvbGxUb0VsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBBcHAnKSwgMjApOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBUaW1lclRvZ2dsZScpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnRpbWVyT24gPSAhc3RhdGUudGltZXJPbjsKICAgIHRoaXMudGV4dENvbnRlbnQgPSAnVGltZXI6ICcgKyAoc3RhdGUudGltZXJPbiA\/ICdvbicgOiAnb2ZmJyk7CiAgICB2YXIgdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBRVGltZXInKTsKICAgIGlmICghc3RhdGUudGltZXJPbil7CiAgICAgIGlmIChxVGltZXIpeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgICAgaWYgKHQpIHQucmVtb3ZlKCk7CiAgICB9IGVsc2UgaWYgKHNjcmVlbnNbc3RhdGUuaWR4XSAmJiBzY3JlZW5zW3N0YXRlLmlkeF0udHlwZSA9PT0gJ3EnKXsKICAgICAgcmVuZGVyKCk7CiAgICB9CiAgfSk7CgogIHVwZGF0ZVNjb3JlQ2hpcCgpOwogIHJlbmRlcigpOwp9KSgpOwo='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 4 Practice Test 2: 6-part computer-delivered listening test in the real exam format, with audio, instant scoring and answer key. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-6092","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6092","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/comments?post=6092"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6092\/revisions"}],"predecessor-version":[{"id":6602,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6092\/revisions\/6602"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6092"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}