{"id":6101,"date":"2026-07-06T05:37:55","date_gmt":"2026-07-06T05:37:55","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-5-test-1-listening\/"},"modified":"2026-07-12T03:25:13","modified_gmt":"2026-07-12T03:25:13","slug":"celpip-set-5-test-1-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-5-test-1-listening\/","title":{"rendered":"CELPIP Set 5 Test 1 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 5 &#183; Practice Test 1<\/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('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczV0MS1wMXMxLm1wMyIsIjAuMSI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczV0MS1wMXMyLm1wMyIsIjAuMiI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczV0MS1wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczV0MS1wMi5tcDMiLCIyLjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXM1dDEtcDMubXAzIiwiMy4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zNXQxLXA0Lm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczV0MS1wNS5tcDQiLCI1LjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXM1dDEtcDYubXAzIn07dmFyIENMUF9BVURJT19WSURFTz17IjQuMCI6MX07CgooZnVuY3Rpb24oKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3MudGV4dENvbnRlbnQ9IlxuLyogPT09PT09PT09PT09IENFTFBJUCBMaXN0ZW5pbmcgUHJhY3RpY2UgXHUyMDE0IHNjb3BlZCwgV29yZFByZXNzLXNhZmUgPT09PT09PT09PT09ICovXG4uY2xwLXdyYXB7XG4gIC8qIFZBUklBTlRfQ0hST01FX1NUQVJUICovXG4gIC0tYmFyLWJnOiNFOEVCRUY7XG4gIC0tYmFyLWJvcmRlcjojRDNEOUUwO1xuICAtLWJhci10ZXh0OiMxRjI5Mzc7XG4gIC0tcGFuZWwtbWVkaWEtYmc6I0Y0RjVGNztcbiAgLS1wYW5lbC1tZWRpYS1ib3JkZXI6I0UzRTZFQTtcbiAgLS1tZWRpYS1jYXJkLWJnOiNFQ0VFRjE7XG4gIC0tbWVkaWEtY2FyZC1ib3JkZXI6I0Q4RERFMztcbiAgLS1wYW5lbC1xLWJnOiNFOUY0Rjc7XG4gIC0tcGFuZWwtcS1ib3JkZXI6I0Q2RThFRDtcbiAgLS1kZC1vcGVuLWJnOiNDQkVCRjQ7XG4gIC8qIFZBUklBTlRfQ0hST01FX0VORCAqL1xuICAtLW5hdnk6IzA1MEUyMDsgLS1kYXJrOiMwQTE2Mjg7IC0tYjkwMDojMEQyMzUyOyAtLWI3MDA6IzEyNDVBODsgLS1iNTAwOiMyNTYzRUI7XG4gIC0tYjQwMDojM0I4MkY2OyAtLWIyMDA6IzkzQzVGRDsgLS1iMTAwOiNEQkVBRkU7IC0tYjUwOiNFRkY2RkY7XG4gIC0tdGVhbDojMEQ5NDg4OyAtLWN5YW46IzA2QjZENDsgLS1ncmVlbjojMTBCOTgxOyAtLWdyZWVuNTA6I0VDRkRGNTtcbiAgLS1yb3NlOiNGNDNGNUU7IC0tb3JhbmdlOiNGOTczMTY7XG4gIC0tdGV4dDojMEYxNzJBOyAtLW11dGVkOiM0NzU1Njk7IC0tc3VidGxlOiM5NEEzQjg7IC0tYm9yZGVyOiNFMkU4RjA7XG4gIC0tY3JpbXNvbjojQjQyQjNDOyAtLXdoaXRlOiNGRkZGRkY7IC0tcGFnZTojRjhGQUZGO1xuICBmb250LWZhbWlseTonUGx1cyBKYWthcnRhIFNhbnMnLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLHNhbnMtc2VyaWY7XG4gIGNvbG9yOnZhcigtLXRleHQpO1xuICBtYXgtd2lkdGg6MTE0MHB4OyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjE2cHggMTZweCA0OHB4O1xuICBsaW5lLWhlaWdodDoxLjU7IGZvbnQtc2l6ZToxNnB4O1xufVxuLmNscC13cmFwICosIC5jbHAtd3JhcCAqOjpiZWZvcmUsIC5jbHAtd3JhcCAqOjphZnRlcnsgYm94LXNpemluZzpib3JkZXItYm94OyB9XG4uY2xwLXdyYXAgYnV0dG9ueyBmb250LWZhbWlseTppbmhlcml0OyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC13cmFwIGgxLC5jbHAtd3JhcCBoMiwuY2xwLXdyYXAgaDMsLmNscC13cmFwIHB7IG1hcmdpbjowOyB9XG5cbi8qID09PT09PT09PT09PSBIRVJPID09PT09PT09PT09PSAqL1xuLmNscC1oZXJve1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyBib3JkZXItcmFkaXVzOjIycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbmF2eSk7IGNvbG9yOiNmZmY7XG4gIHBhZGRpbmc6MzZweCA0MHB4O1xuICBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjE0cHg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7XG4gIGJveC1zaGFkb3c6MCAyMHB4IDQwcHggLTIwcHggcmdiYSg1LDE0LDMyLC40NSksIDAgNHB4IDEycHggLTZweCByZ2JhKDUsMTQsMzIsLjMpO1xufVxuLmNscC1hdXJvcmF7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lOyB9XG4uY2xwLWF1cm9yYSBzcGFue1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXJhZGl1czo1MCU7IGZpbHRlcjpibHVyKDYwcHgpOyBvcGFjaXR5Oi41O1xuICBhbmltYXRpb246Y2xwRmxvYXQgMTRzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTtcbn1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDEpeyB3aWR0aDo0MjBweDsgaGVpZ2h0OjQyMHB4OyBsZWZ0Oi0xMjBweDsgdG9wOi0yMDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMxMjQ1QTggMCUsdHJhbnNwYXJlbnQgNzAlKTsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMil7IHdpZHRoOjM4MHB4OyBoZWlnaHQ6MzgwcHg7IHJpZ2h0Oi04MHB4OyB0b3A6LTE2MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzBEOTQ4OCAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LTRzOyB9XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgzKXsgd2lkdGg6MzQwcHg7IGhlaWdodDozNDBweDsgcmlnaHQ6MjIlOyBib3R0b206LTI0MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzI1NjNFQiAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LThzOyB9XG5Aa2V5ZnJhbWVzIGNscEZsb2F0e1xuICBmcm9teyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKDEpOyB9XG4gIHRveyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoNDBweCwyNnB4LDApIHNjYWxlKDEuMTIpOyB9XG59XG4uY2xwLWhlcm8tc2hpbW1lcntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7XG4gIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDExNWRlZywgdHJhbnNwYXJlbnQgMzAlLCByZ2JhKDE0NywxOTcsMjUzLC4xMCkgNDUlLCByZ2JhKDYsMTgyLDIxMiwuMTIpIDUwJSwgdHJhbnNwYXJlbnQgNjUlKTtcbiAgYmFja2dyb3VuZC1zaXplOjI1MCUgMTAwJTtcbiAgYW5pbWF0aW9uOmNscFNoaW1tZXIgN3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGNscFNoaW1tZXJ7IDAle2JhY2tncm91bmQtcG9zaXRpb246MTIwJSAwO30gNTUle2JhY2tncm91bmQtcG9zaXRpb246LTQwJSAwO30gMTAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IH1cbi5jbHAtaGVyby1iYWRnZXN7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWJhZGdlLWJyYW5ke1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMnB4O1xuICBsZXR0ZXItc3BhY2luZzouMTJlbTsgcGFkZGluZzo1cHggMTJweDsgYm9yZGVyLXJhZGl1czo2cHg7XG59XG4uY2xwLWJhZGdlLXNldHsgY29sb3I6dmFyKC0tYjIwMCk7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IH1cbi5jbHAtaGVybyBoMXsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZTpjbGFtcCgyNnB4LDR2dyw0MHB4KTsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzotLjAyZW07IGxpbmUtaGVpZ2h0OjEuMTI7IH1cbi5jbHAtaGVyby1jaGlwc3sgZGlzcGxheTpmbGV4OyBnYXA6OHB4OyBmbGV4LXdyYXA6d3JhcDsgcG9zaXRpb246cmVsYXRpdmU7IH1cbi5jbHAtY2hpcHtcbiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOSk7IGJvcmRlcjoxcHggc29saWQgcmdiYSgxNDcsMTk3LDI1MywuMjUpO1xuICBjb2xvcjojREJFQUZFOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyBwYWRkaW5nOjZweCAxNHB4OyBib3JkZXItcmFkaXVzOjMycHg7XG4gIGJhY2tkcm9wLWZpbHRlcjpibHVyKDRweCk7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYmFja2dyb3VuZCAuMjVzIGVhc2U7XG59XG4uY2xwLWNoaXA6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE1KTsgfVxuLmNscC1jdGF7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBmb250LXNpemU6MTZweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjEzcHggMzRweDsgbWFyZ2luLXRvcDoycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDM3LDk5LDIzNSwuNjUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjJzIGVhc2UsIGJveC1zaGFkb3cgLjIycyBlYXNlLCBiYWNrZ3JvdW5kIC4yMnMgZWFzZTtcbn1cbi5jbHAtY3RhOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDp2YXIoLS1iNDAwKTsgYm94LXNoYWRvdzowIDE0cHggMjZweCAtOHB4IHJnYmEoMzcsOTksMjM1LC43NSk7IH1cblxuLyogPT09PT09PT09PT09IFNUSUNLWSBUT09MQkFSID09PT09PT09PT09PSAqL1xuLmNscC10b29sYmFyW2hpZGRlbl17IGRpc3BsYXk6bm9uZTsgfVxuLmNscC10b29sYmFye1xuICBwb3NpdGlvbjpzdGlja3k7IHRvcDo4cHg7IHotaW5kZXg6NjA7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgZmxleC13cmFwOndyYXA7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTIpOyBiYWNrZHJvcC1maWx0ZXI6Ymx1cig4cHgpO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDtcbiAgcGFkZGluZzo4cHggMTJweDsgbWFyZ2luOjE4cHggMCAwO1xuICBib3gtc2hhZG93OjAgOHB4IDI0cHggLTE0cHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA2cHggLTRweCByZ2JhKDE1LDIzLDQyLC4xMik7XG4gIG1pbi1oZWlnaHQ6NTJweDtcbn1cbi5jbHAtc2NvcmUtY2hpcHtcbiAgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjdweCAxNnB4O1xufVxuLmNscC10YnRue1xuICBib3JkZXItcmFkaXVzOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6OXB4IDE2cHg7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYmFja2dyb3VuZDojZmZmOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG4gIG1pbi1oZWlnaHQ6NDBweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJveC1zaGFkb3cgLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLXRidG46aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpOyBib3gtc2hhZG93OjAgNnB4IDE0cHggLThweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC10YnRuLWNoZWNreyBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgYm9yZGVyLWNvbG9yOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgfVxuLmNscC10YnRuLWNoZWNrOmhvdmVyeyBiYWNrZ3JvdW5kOiMwY2E2Nzg7IH1cbi5jbHAtdGJ0bltkaXNhYmxlZF17IG9wYWNpdHk6LjU7IGN1cnNvcjpub3QtYWxsb3dlZDsgdHJhbnNmb3JtOm5vbmU7IGJveC1zaGFkb3c6bm9uZTsgfVxuLmNscC10b29sYmFyLXNwYWNlcnsgZmxleDoxOyB9XG5cbi8qID09PT09PT09PT09PSBDQVQgU0lNVUxBVE9SID09PT09PT09PT09PSAqL1xuLmNscC1zaW17IG1hcmdpbi10b3A6MThweDsgfVxuLmNscC1kb3RzeyBkaXNwbGF5OmZsZXg7IGdhcDo2cHg7IG1hcmdpbjowIDAgMTBweCAycHg7IH1cbi5jbHAtZG90e1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tc3VidGxlKTtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjRweCAxMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjI1cyBlYXNlLCBjb2xvciAuMjVzIGVhc2U7XG59XG4uY2xwLWRvdC5jbHAtZG9uZXsgYmFja2dyb3VuZDp2YXIoLS1iMTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWIyMDApOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuLmNscC1kb3QuY2xwLWN1cnsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyB9XG4uY2xwLWRvdC5jbHAtY2xpY2thYmxleyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC1kb3Q6bm90KC5jbHAtY2xpY2thYmxlKXsgY3Vyc29yOmRlZmF1bHQ7IH1cblxuLmNscC1jYXR7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7IG92ZXJmbG93OnZpc2libGU7XG4gIGJhY2tncm91bmQ6I2ZmZjtcbiAgYm94LXNoYWRvdzowIDEwcHggMzBweCAtMThweCByZ2JhKDE1LDIzLDQyLC4yMiksIDAgMnB4IDhweCAtNXB4IHJnYmEoMTUsMjMsNDIsLjEpO1xufVxuLmNscC1iYXJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTJweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iYXItYmcpOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czoxMHB4IDEwcHggMCAwO1xuICBwYWRkaW5nOjlweCAxMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG59XG4uY2xwLWJhci10aXRsZXsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYmFyLXRleHQpOyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWJhci10aW1lcnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgd2hpdGUtc3BhY2U6bm93cmFwOyB9XG4uY2xwLWJhci10aW1lciBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtbmV4dHtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNzAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NHB4O1xuICBmb250LXNpemU6MTFweDsgZm9udC13ZWlnaHQ6NzAwOyBsZXR0ZXItc3BhY2luZzouMDhlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICBwYWRkaW5nOjdweCAxNnB4OyBtaW4taGVpZ2h0OjMwcHg7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZSwgdHJhbnNmb3JtIC4ycyBlYXNlO1xufVxuLmNscC1uZXh0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI5MDApOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgfVxuLmNscC1zY3JlZW57IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG5cbi5jbHAtaW5zdHJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgZ2FwOjlweDtcbiAgcGFkZGluZzoxNHB4IDE2cHggMTJweDsgYmFja2dyb3VuZDojZmZmO1xufVxuLmNscC1pbmZve1xuICBmbGV4Om5vbmU7IHdpZHRoOjE4cHg7IGhlaWdodDoxOHB4OyBtYXJnaW4tdG9wOjJweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjExcHg7IGZvbnQtc3R5bGU6aXRhbGljO1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtZmFtaWx5Okdlb3JnaWEsc2VyaWY7XG59XG4uY2xwLWluc3RyIHB7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLWI5MDApOyB9XG5cbi8qIGludHJvIHNjcmVlbiAqL1xuLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nOjZweCAyMHB4IDI2cHggNDRweDsgYmFja2dyb3VuZDojZmZmOyB9XG4uY2xwLWludHJvLWJvZHkgaDN7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo4MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEycHg7IH1cbi5jbHAtYnVsbGV0c3sgbGlzdC1zdHlsZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IG1heC13aWR0aDo2NDBweDsgfVxuLmNscC1idWxsZXRzIGxpe1xuICBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1iOTAwKTtcbiAgcGFkZGluZy1ib3R0b206MTBweDsgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG59XG4uY2xwLWJ1bGxldHMgbGk6OmJlZm9yZXsgY29udGVudDpcIlwiOyBmbGV4Om5vbmU7IHdpZHRoOjhweDsgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IG1hcmdpbi10b3A6NnB4OyB9XG5cbi8qIG1lZGlhIHNjcmVlbiAqL1xuLmNscC1tZWRpYS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1tZWRpYS1iZyk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXBhbmVsLW1lZGlhLWJvcmRlcik7XG4gIHBhZGRpbmc6MzRweCAyMHB4IDI2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxNHB4O1xufVxuLmNscC1tZWRpYS1jYXJke1xuICB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6NTIwcHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbWVkaWEtY2FyZC1iZyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIHBhZGRpbmc6MjJweCAyNnB4O1xufVxuLmNscC1tZWRpYS1jYXJkLmNscC1pcy12aWRlb3sgbWF4LXdpZHRoOjY2MHB4OyBwYWRkaW5nOjEycHg7IH1cbi5jbHAtbWVkaWEtem9uZXsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxOHB4OyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtem9uZXtcbiAgYXNwZWN0LXJhdGlvOjE2Lzk7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOnZhcigtLWRhcmspO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgbWFyZ2luLWJvdHRvbToxMnB4O1xuICBjb2xvcjojZmZmO1xufVxuLmNscC1zcGVha2Vye1xuICBmbGV4Om5vbmU7IHdpZHRoOjU2cHg7IGhlaWdodDo1NnB4OyBib3JkZXItcmFkaXVzOjhweDsgYmFja2dyb3VuZDojZmZmO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGNvbG9yOnZhcigtLW11dGVkKTtcbn1cbi5jbHAtaXMtdmlkZW8gLmNscC1zcGVha2VyeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEyKTsgYm9yZGVyOm5vbmU7IGNvbG9yOiNmZmY7IHdpZHRoOjY0cHg7IGhlaWdodDo2NHB4OyBib3JkZXItcmFkaXVzOjUwJTsgfVxuLmNscC1tZWRpYS1tYWlueyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtbWFpbnsgcGFkZGluZzowIDEwcHggNHB4OyB9XG4uY2xwLW1lZGlhLWxhYmVseyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1wcm9ncmVzc3sgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo2cHg7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7IG92ZXJmbG93OmhpZGRlbjsgfVxuLmNscC1pcy12aWRlbyAuY2xwLXByb2dyZXNzeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjYpOyB9XG4uY2xwLXByb2dyZXNzLWZpbGx7IGhlaWdodDoxMDAlOyB3aWR0aDowJTsgYmFja2dyb3VuZDp2YXIoLS1jeWFuKTsgYm9yZGVyLXJhZGl1czo2cHg7IHRyYW5zaXRpb246d2lkdGggLjNzIGxpbmVhcjsgfVxuLmNscC1tZWRpYS1tZXRhe1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjYwMDtcbn1cbi5jbHAtbWVkaWEtbWV0YSBzdmd7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtb25jZS1ub3RleyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC13ZWlnaHQ6NjAwOyB9XG5cbi8qIHF1ZXN0aW9uIHNjcmVlbiAqL1xuLmNscC1xLXBhbmVse1xuICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLXEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1xLWJvcmRlcik7XG4gIHBhZGRpbmc6MjBweCAyMnB4IDMwcHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MjBweDtcbn1cbi5jbHAtcXsgZm9udC1zaXplOjE1LjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbGluZS1oZWlnaHQ6MjsgfVxuLmNscC1xbnVteyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtZGR7XG4gIGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDtcbiAgYm9yZGVyOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IGRvdHRlZCB2YXIoLS1zdWJ0bGUpOyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBjb2xvcjp2YXIoLS1iNzAwKTsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDtcbiAgcGFkZGluZzo0cHggOHB4IDNweDsgbWFyZ2luOjAgMnB4OyBtaW4taGVpZ2h0OjMycHg7IG1heC13aWR0aDoxMDAlO1xuICBib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOyB2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC1kZDpob3ZlcnsgYmFja2dyb3VuZDpyZ2JhKDM3LDk5LDIzNSwuMDgpOyB9XG4uY2xwLWRkLmNscC1vcGVueyBiYWNrZ3JvdW5kOnZhcigtLWRkLW9wZW4tYmcpOyB9XG4uY2xwLWRkIC5jbHAtZGQtdGV4dHtcbiAgb3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOyB3aGl0ZS1zcGFjZTpub3dyYXA7IG1heC13aWR0aDo0MjBweDtcbn1cbi5jbHAtZGQgLmNscC1kZC1jYXJldHsgZm9udC1zaXplOjlweDsgY29sb3I6dmFyKC0tYjcwMCk7IGZsZXg6bm9uZTsgfVxuLmNscC1kZC5jbHAtdW5hbnN3ZXJlZCAuY2xwLWRkLXRleHR7IGxldHRlci1zcGFjaW5nOjJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgfVxuLmNscC1kZC5jbHAtbWFyay1yaWdodHsgYmFja2dyb3VuZDp2YXIoLS1ncmVlbjUwKTsgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojMDQ3ODU3OyB9XG4uY2xwLWRkLmNscC1tYXJrLXdyb25neyBiYWNrZ3JvdW5kOiNGRkYxRjI7IGJvcmRlcjoycHggc29saWQgdmFyKC0tcm9zZSk7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojQkUxMjNDOyB9XG4uY2xwLWRkW2Rpc2FibGVkXXsgY3Vyc29yOmRlZmF1bHQ7IH1cbi5jbHAtcmV2ZWFse1xuICBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MTMuNXB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOiMwNDc4NTc7IGxpbmUtaGVpZ2h0OjEuNTtcbiAgbWFyZ2luOjJweCAwIDAgMjZweDtcbn1cbi5jbHAtcmV2ZWFsIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC10b2RvLXRhZ3tcbiAgZm9udC1zaXplOjEwcHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IGNvbG9yOnZhcigtLW9yYW5nZSk7XG4gIGJvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yOyBib3JkZXItcmFkaXVzOjRweDsgcGFkZGluZzoxcHggNnB4OyBtYXJnaW4tbGVmdDo4cHg7IHZlcnRpY2FsLWFsaWduOjJweDtcbn1cblxuLyogZHJvcGRvd24gcG9wdXAgKi9cbi5jbHAtcG9we1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo4MDsgd2lkdGg6bWluKDM0MHB4LCBjYWxjKDEwMHZ3IC0gNDhweCkpO1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBib3gtc2hhZG93OjAgMThweCA0MHB4IC0xMnB4IHJnYmEoMTUsMjMsNDIsLjI4KSwgMCA0cHggMTJweCAtNnB4IHJnYmEoMTUsMjMsNDIsLjE0KTtcbiAgcGFkZGluZzo2cHg7IFxufVxuLmNscC1vcHR7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTFweDsgd2lkdGg6MTAwJTtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHRleHQtYWxpZ246bGVmdDtcbiAgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7XG4gIHBhZGRpbmc6MTBweCAxMnB4OyBtaW4taGVpZ2h0OjQycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xuICBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZTtcbn1cbi5jbHAtb3B0Omxhc3QtY2hpbGR7IGJvcmRlci1ib3R0b206bm9uZTsgfVxuLmNscC1vcHQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC1yYWRpb3tcbiAgZmxleDpub25lOyB3aWR0aDoxN3B4OyBoZWlnaHQ6MTdweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJvcmRlcjoycHggc29saWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDojZmZmOyBwb3NpdGlvbjpyZWxhdGl2ZTtcbn1cbi5jbHAtb3B0LmNscC1zZWwgLmNscC1yYWRpb3sgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyB9XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW86OmFmdGVye1xuICBjb250ZW50OlwiXCI7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDoyLjVweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7XG59XG5cbi8qIHByZS1zdGFydCAvIGZpbmlzaCAqL1xuLmNscC1pZGxle1xuICBwYWRkaW5nOjU2cHggMjRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4O1xufVxuLmNscC1pZGxlIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWF4LXdpZHRoOjQ4MHB4OyBtYXJnaW46MCBhdXRvOyB9XG4uY2xwLWZpbmlzaHsgcGFkZGluZzo0OHB4IDI0cHggNTZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1maW5pc2ggaDN7IGZvbnQtc2l6ZToyMnB4OyBmb250LXdlaWdodDo4MDA7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1maW5pc2ggcHsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjIycHg7IH1cbi5jbHAtZmluaXNoLWNoZWNre1xuICBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDMycHg7IG1pbi1oZWlnaHQ6NDRweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMTYsMTg1LDEyOSwuNTUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSwgYmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZmluaXNoLWNoZWNrOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG5cbi8qID09PT09PT09PT09PSBSRVNVTFRTID09PT09PT09PT09PSAqL1xuLmNscC1yZXN1bHRzeyBtYXJnaW4tdG9wOjMwcHg7IH1cbi5jbHAtcmVzdWx0cyBoMnsgZm9udC1zaXplOjI0cHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMWVtOyBtYXJnaW4tYm90dG9tOjE2cHg7IH1cbi5jbHAtcmVzLWdyaWR7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gMWZyOyBnYXA6MTZweDsgYWxpZ24taXRlbXM6c3RyZXRjaDsgfVxuLmNscC1jYXJke1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBwYWRkaW5nOjIycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA4cHggLTZweCByZ2JhKDE1LDIzLDQyLC4wOCk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYm94LXNoYWRvdyAuMjVzIGVhc2U7XG59XG4uY2xwLWNhcmQ6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBib3gtc2hhZG93OjAgMTZweCAzNnB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjMpOyB9XG4uY2xwLXJpbmctY2FyZHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDsgbWluLXdpZHRoOjIyMHB4OyB9XG4uY2xwLXJpbmctd3JhcHsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEzMnB4OyBoZWlnaHQ6MTMycHg7IH1cbi5jbHAtcmluZy13cmFwIHN2Z3sgdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpOyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXJpbmctbnVte1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47XG4gIGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZm9udC13ZWlnaHQ6ODAwO1xufVxuLmNscC1yaW5nLW51bSBieyBmb250LXNpemU6MjhweDsgbGluZS1oZWlnaHQ6MTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtcmluZy1udW0gc3BhbnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1yaW5nLWNhcmQgaDN7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1wYXJ0LWNoaXBzeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBnYXA6MTBweDsgbWFyZ2luLXRvcDoxMnB4OyB9XG4uY2xwLXBhcnQtY2hpcHtcbiAgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjhweCAxNnB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGNvbG9yOnZhcigtLWI5MDApO1xufVxuLmNscC1wYXJ0LWNoaXAgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLWNsYi1yb3d7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDsgZmxleC13cmFwOndyYXA7IG1hcmdpbi10b3A6MTZweDtcbiAgcGFkZGluZzoxNHB4IDE2cHg7IGJvcmRlci1yYWRpdXM6MTBweDsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO1xufVxuLmNscC1jbGItYmFkZ2V7XG4gIGJhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7XG4gIGJvcmRlci1yYWRpdXM6MTBweDsgcGFkZGluZzo4cHggMTZweDtcbn1cbi5jbHAtY2xiLXJvdyBweyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7IGZsZXg6MTsgbWluLXdpZHRoOjIwMHB4OyB9XG4uY2xwLXRyYW5zY3JpcHRzeyBtYXJnaW4tdG9wOjE2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTBweDsgfVxuLmNscC10ci1jYXJkeyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtdHItaGVhZHtcbiAgd2lkdGg6MTAwJTsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBnYXA6MTBweDtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHBhZGRpbmc6MTVweCAyMHB4OyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtaW4taGVpZ2h0OjQ4cHg7XG59XG4uY2xwLXRyLWhlYWQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC10ci1oZWFkIC5jbHAtdHItY2FyZXR7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtc2l6ZToxMXB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZTsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItY2FyZXR7IHRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTsgfVxuLmNscC10ci1ib2R5eyBkaXNwbGF5Om5vbmU7IHBhZGRpbmc6MCAyMHB4IDE4cHg7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjUwMDsgbGluZS1oZWlnaHQ6MS43OyB9XG4uY2xwLXRyLWNhcmQuY2xwLW9wZW4gLmNscC10ci1ib2R5eyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXRyLXRvZG97IGNvbG9yOnZhcigtLW9yYW5nZSk7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjEyLjVweDsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo4cHg7IH1cblxuLyogc2Nyb2xsIHJldmVhbCAqL1xuLmNscC1yZXZ7IG9wYWNpdHk6MDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTZweCk7IHRyYW5zaXRpb246b3BhY2l0eSAuNXMgZWFzZSwgdHJhbnNmb3JtIC41cyBlYXNlOyB9XG4uY2xwLXJldi5jbHAtaW57IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cblxuLyogPT09PT09PT09PT09IFJFU1BPTlNJVkUgPT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDo3MDBweCl7XG4gIC5jbHAtd3JhcHsgcGFkZGluZzoxMHB4IDEwcHggNDBweDsgfVxuICAuY2xwLWhlcm97IHBhZGRpbmc6MjhweCAyMnB4OyBib3JkZXItcmFkaXVzOjE2cHg7IH1cbiAgLmNscC1xeyBmb250LXNpemU6MTVweDsgfVxuICAuY2xwLWRkeyBtaW4taGVpZ2h0OjQwcHg7IH1cbiAgLmNscC1kZCAuY2xwLWRkLXRleHR7IG1heC13aWR0aDoxODBweDsgfVxuICAuY2xwLWJhcnsgZmxleC13cmFwOndyYXA7IH1cbiAgLmNscC1iYXItdGl0bGV7IGZsZXgtYmFzaXM6MTAwJTsgfVxuICAuY2xwLXEtcGFuZWx7IHBhZGRpbmc6MTZweCAxNHB4IDI2cHg7IH1cbiAgLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nLWxlZnQ6MjBweDsgfVxuICAuY2xwLXJlcy1ncmlkeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyOyB9XG4gIC5jbHAtbWVkaWEtY2FyZHsgcGFkZGluZzoxNnB4OyB9XG59XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7XG4gIC5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7XG4gICAgYW5pbWF0aW9uOm5vbmUgIWltcG9ydGFudDsgdHJhbnNpdGlvbjpub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmNscC1yZXZ7IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cbn1cblxuLmNscC1hdXJvcmEgc3BhbntmaWx0ZXI6Ymx1cigzNnB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX1cbi5jbHAtaGVyby1zaGltbWVye3dpbGwtY2hhbmdlOmJhY2tncm91bmQtcG9zaXRpb259XG4iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7fSkoKTsKCid1c2Ugc3RyaWN0JzsKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFRFU1RfREFUQSBcdTIwMTQgc3dhcCBpbiBuZXcgc2V0cyBoZXJlIHdpdGhvdXQgdG91Y2hpbmcgbWFya3VwLgogICBTaGFwZTogeyBwYXJ0czpbeyBuYW1lLCBoZWFkZXJUaXRsZSwgaW50cm9UaXRsZSwgaW50cm9CdWxsZXRzW10sCiAgICAgICAgICAgIHFJbnN0cnVjdGlvbiwgdHJhbnNjcmlwdCwgc2VjdGlvbnM6W3sgbGFiZWwsIG1lZGlhVHlwZSwKICAgICAgICAgICAgZHVyYXRpb24oc2VjKSwgdGltZU1pbnV0ZXMsIG1lZGlhSW5zdHJ1Y3Rpb24sCiAgICAgICAgICAgIHF1ZXN0aW9uczpbeyBuLCBzdGVtLCBvcHRpb25zWzRdLCBrZXkoMS00KSwgdG9kbz8gfV0gfV0gfV0gfQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFRFU1RfREFUQSA9IHsidGVzdExhYmVsIjoiU2V0IDUgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSIsInNldE5vIjo1LCJ0ZXN0Tm8iOjEsInBhcnRzIjpbeyJuYW1lIjoiUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaGVhZGVyVGl0bGUiOiJTZXQgNSBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuIG9uIGEgdG91ciBidXMuIFRoZSBtYW4gaXMgcGFydCBvZiB0aGUgdG91ciBncm91cCwgYW5kIHRoZSB3b21hbiBpcyB0aGUgYnVzIHRvdXIgZ3VpZGUuIEl0IHBsYXlzIGluIHRocmVlIHNlY3Rpb25zLCBhbmQgZWFjaCBzZWN0aW9uIHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciBlYWNoIHNlY3Rpb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gYSBtYW4gYW5kIGEgd29tYW4gb24gYSB0b3VyIGJ1cy4gVGhlIG1hbiBpcyBwYXJ0XG5vZiB0aGUgdG91ciBncm91cCwgYW5kIHRoZSB3b21hbiBpcyB0aGUgYnVzIHRvdXIgZ3VpZGUuXG5cblxuU2VjdGlvbiAxOlxuTUFOOiBFeGN1c2UgbWUsIGFyZSB3ZSBzdG9wcGluZyBhdCB0aGUgYXJ0IG11c2V1bSBuZXh0PyBGb3IgYW4gaG91cj9cbldPTUFOOiBZZXMsIGl0IGhhcyBhIHdvbmRlcmZ1bCBjb2xsZWN0aW9uIG9mIGVpZ2h0ZWVudGgtY2VudHVyeSBmdXJuaXR1cmUuIEkgdGhpbmtcbnlvdVx1MjAxOWxsIGZpbmQgaXQgdmVyeSBpbnRlcmVzdGluZy5cbk1BTjogWWVzLCBJIHRoaW5rIHlvdVx1MjAxOXJlIHJpZ2h0LCB3aGljaCBpcyB3aHkgSSB3YW50ZWQgdG8gYXNrIGlmIHdlIGNvdWxkIHN0YXkgbG9uZ2VyLiBJXG5kb3VidCBhbiBob3VyIHdpbGwgYmUgZW5vdWdoIHRpbWUuXG5XT01BTjogSVx1MjAxOW0gYWZyYWlkIHdlXHUyMDE5cmUgb24gYSB0aWdodCBzY2hlZHVsZS4gSWYgd2Ugc3RheSBsb25nZXIsIHdlIHdvblx1MjAxOXQgYmUgYWJsZSB0b1xuZ2V0IHRvIHRoZSByZXN0IG9mIG91ciBzdG9wcy5cbk1BTjogQnV0IGNvdWxkblx1MjAxOXQgSSBzdGF5IGxvbmdlcj8gSSBkb25cdTIwMTl0IG1pbmQgbWlzc2luZyB0aGUgbmV4dCBzdG9wLiBJIHJlYWxseSBkb25cdTIwMTl0IGxpa2VcbndpbmVcdTIwMTRub3QgcmVhbGx5IGludG8gdGFzdGluZyBhbmQgZHJpbmtpbmcuIFBlcmhhcHMgeW91IGNhbiBjb21lIGJhY2sgYW5kIGdldCBtZT9cbldPTUFOOiBTb3JyeSwgSVx1MjAxOW0gYWZyYWlkIHdlIGNhblx1MjAxOXQgZG8gdGhhdCBlaXRoZXIuIElmIEkgYXBwcm92ZSBzdWNoIGEgdGhpbmcgZm9yIHlvdSxcbmV2ZXJ5b25lIHdpbGwgd2FudCB0byBiZSBzdGF5aW5nIGxvbmdlciBoZXJlIGFuZCB0aGVyZS5cblNlY3Rpb24gMjpcbldPTUFOOiBJcyBldmVyeW9uZSByZWFkeSBmb3IgbHVuY2g\/IFdlXHUyMDE5bGwgYmUgc3RvcHBpbmcgYXQgYSBwb3B1bGFyIHZlZ2V0YXJpYW5cbnJlc3RhdXJhbnQgc2hvcnRseS5cbk1BTjogQ291bGRuXHUyMDE5dCB3ZSBzdG9wIHNvbWV3aGVyZSBlbHNlIGluc3RlYWQ\/IElcdTIwMTltIG5vdCBzdXJlIEkgbGlrZSB2ZWdldGFyaWFuIGZvb2QuXG5NYXliZSB3ZSBjb3VsZCBnbyB0byBhIHBsYWNlIHRoYXQgc2VsbHMgYnVyZ2VycyBhbmQgZnJpZXM\/XG5cZldPTUFOOiBJXHUyMDE5bSBhZnJhaWQgd2VcdTIwMTl2ZSBhbHJlYWR5IGJvb2tlZCBhIHJlc3RhdXJhbnQuIFdpdGggYSBncm91cCB0aGlzIHNpemUsIGl0XHUyMDE5c1xuaGFyZCB0byBmaW5kIGVub3VnaCB0YWJsZXMgYXQgdGhlIGxhc3QgbWludXRlLiBXZSBhbHNvIHdhbnQgcXVpY2sgc2VydmljZSBzaW5jZSB3ZVx1MjAxOXJlIG9uIGFcbnNjaGVkdWxlLlxuTUFOOiBZZXMsIGJ1dCB3ZSBoYXZlblx1MjAxOXQgcGFpZCB5ZXQuIFRoZXJlIGFyZSBwcm9iYWJseSBvdGhlciByZXN0YXVyYW50cyBuZWFyYnkuXG5Db3VsZG5cdTIwMTl0IHdlIGFsbCBqdXN0IGdvIHdoZXJlIHdlIHdhbnQgYW5kIG1lZXQgYmFjayBhdCB0aGUgYnVzIGF0LCBzYXksIG9uZSBvXHUyMDE5Y2xvY2s\/XG5XT01BTjogSVx1MjAxOWQgcmF0aGVyIHRoZSBncm91cCBzdGF5IHRvZ2V0aGVyLCBzaXIuIElmIGFueW9uZSBnZXRzIGxvc3Qgb3IgaW50byBzb21lIGtpbmRcbm9mIHRyb3VibGVcdTIwMTRcbk1BTjogSVx1MjAxOW0gc3VyZSB3ZSBjYW4gbWFuYWdlLiBXZVx1MjAxOXJlIGFsbCBhZHVsdHMgaGVyZS5cbldPTUFOOiBJXHUyMDE5bSBzb3JyeSwgc2lyXHUyMDE0SSBkaWRuXHUyMDE5dCBtZWFuIHRvIGltcGx5IHlvdSBjb3VsZG5cdTIwMTl0IG1hbmFnZSBvbiB5b3VyIG93bi5cbkJ1dCBhY2NpZGVudHMgY2FuIGhhcHBlbiwgYW5kIElcdTIwMTlkIGxpa2UgdG8gYmUgYWJsZSB0byBwcm92aWRlIGhlbHAgaW4gdGhhdCBjYXNlLlxuU2VjdGlvbiAzOlxuTUFOOiBFeGN1c2UgbWUsIGNvdWxkIHdlIGdvIGJhY2s\/IEkgZm9yZ290IG15IHVtYnJlbGxhIGF0IHRoZSByZXN0YXVyYW50LlxuV09NQU46ICAgICAgICBPaCBkZWFyLCBpdFx1MjAxOXMgcXVpdGUgYSB3YXkgYmFjay4gV2Ugd291bGRuXHUyMDE5dCBiZSBhYmxlIHRvIGtlZXAgdG8gb3VyXG5zY2hlZHVsZS5cbk1BTjogQnV0IGl0IGlzIGxvb2tpbmcgbGlrZSByYWluLCBhbmQgSVx1MjAxOWQgcmVhbGx5IGxpa2UgdG8gaGF2ZSBteSB1bWJyZWxsYS5cbldPTUFOOiBUaGUgcmVzdCBvZiBvdXIgc3RvcHMgYXJlIGluZG9vcnMsIGFuZCBJXHUyMDE5ZCBiZSBoYXBweSB0byBsZW5kIHlvdSBteVxudW1icmVsbGEsIHNpci5cbk1BTjogQnV0IElcdTIwMTlkIHJlYWxseSBsaWtlIHRvIGdvIGJhY2sgYW5kIGdldCBteSBvd24gdW1icmVsbGEuIEl0XHUyMDE5cyBhbiBleHBlbnNpdmUgb25lLlxuV09NQU46IFdoYXQgSVx1MjAxOWxsIGRvIHJpZ2h0IG5vdyBpcyBjYWxsIHRoZSByZXN0YXVyYW50IGFuZCBhc2sgdGhlbSB0byBrZWVwIGl0IHNhZmVcbnVudGlsIHlvdSBjYW4gZ28gYmFjayBvbiB5b3VyIG93bi4gV291bGQgdGhhdCBiZSBva2F5PyBPciBwZXJoYXBzIHRoZXlcdTIwMTlsbCBzZW5kIGl0IHRvXG55b3UsIGlmIHlvdVx1MjAxOWQgZ2l2ZSB0aGVtIHlvdXIgYWRkcmVzcy5cbk1BTjogVGhhdFx1MjAxOXMgYSBncmVhdCBpZGVhXHUyMDE0dGhhbmsgeW91ISBJXHUyMDE5ZCBiZSBhYmxlIHRvIHBpY2sgaXQgdXAgYWZ0ZXIgdGhlIHRvdXIuIEkgc3VwcG9zZSBJXG5jYW4gdXNlIG15IHJhaW5jb2F0IGluIHRoZSBtZWFudGltZS4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMSIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjQ1LCJ0aW1lTWludXRlcyI6MiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2h5IGRvZXMgdGhlIG1hbiBhcHByb2FjaCB0aGUgd29tYW4\/Iiwib3B0aW9ucyI6WyJ0byBjb21wbGFpbiBhYm91dCB0aGUgc2NoZWR1bGUiLCJ0byBhc2sgZm9yIG1vcmUgdGltZSIsInRvIHJlcXVlc3QgYSByZWZ1bmQiLCJ0byBjaGFuZ2Ugc2VhdHMgb24gdGhlIGJ1cyJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaGF0IGV4aGliaXQgaXMgYXQgdGhlIG11c2V1bT8iLCJvcHRpb25zIjpbIm1vZGVybiBzY3VscHR1cmUiLCJlaWdodGVlbnRoLWNlbnR1cnkgZnVybml0dXJlIiwibG9jYWwgd2lsZGxpZmUgcGhvdG9ncmFwaHkiLCJhbmNpZW50IHBvdHRlcnkiXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2hhdCBpcyB0cnVlIG9mIHRoZSBidXMgdG91cj8iLCJvcHRpb25zIjpbIkl0IG9ubHkgaGFzIGEgZmV3IHN0b3BzIGxlZnQuIiwiVGhlIGJ1cyB3aWxsIHN0b3AgYXQgbWFueSBwbGFjZXMuIiwiSXQgcnVucyBvbiBhIGZsZXhpYmxlIHNjaGVkdWxlLiIsIkl0IGFsbG93cyBwYXNzZW5nZXJzIHRvIGxlYXZlIGFueXRpbWUuIl0sImtleSI6MiwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAyIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6NTMsInRpbWVNaW51dGVzIjoyLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBuZXh0IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjo0LCJzdGVtIjoiV2h5IGRvZXMgdGhlIG1hbiB3YW50IHRvIGNoYW5nZSB0aGUgbHVuY2ggcGxhbj8iLCJvcHRpb25zIjpbIkhlIGlzIGluIGEgaHVycnkgdG8gbGVhdmUuIiwiSGUgaXNuJ3QgY29udGVudCB3aXRoIHRoZSByZXN0YXVyYW50IGNob2ljZS4iLCJIZSB3YW50cyB0byBlYXQgd2l0aCBhIGZyaWVuZC4iLCJIZSBkb2Vzbid0IGhhdmUgZW5vdWdoIG1vbmV5LiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaGF0IGlzIGxpa2VseSB0aGUgcmVhc29uIGZvciB0aGUgd29tYW4ncyByZXNwb25zZT8iLCJvcHRpb25zIjpbIlNoZSBkaXNsaWtlcyB0aGUgbWFuJ3MgYXR0aXR1ZGUuIiwiU2hlIGZlZWxzIHJlc3BvbnNpYmxlIGZvciB0aGUgZ3JvdXAuIiwiU2hlIGlzIHdvcnJpZWQgYWJvdXQgYmVpbmcgbGF0ZS4iLCJTaGUgaGFzIGhhZCBiYWQgZXhwZXJpZW5jZXMgYmVmb3JlLiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMyIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjQxLCJ0aW1lTWludXRlcyI6MiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZmluYWwgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJxdWVzdGlvbnMiOlt7Im4iOjYsInN0ZW0iOiJXaGF0IGlzIGxpa2VseSB0cnVlIGFib3V0IHRoZSBtYW4\/Iiwib3B0aW9ucyI6WyJIZSBpcyBuZXcgdG8gZ3JvdXAgdG91cnMuIiwiSGUgbGVmdCB0aGUgcmVzdGF1cmFudCBhIHdoaWxlIGFnby4iLCJIZSBwbGFucyB0byBza2lwIHRoZSBuZXh0IHN0b3AuIiwiSGUgZm9yZ290IGhpcyB3YWxsZXQgYXMgd2VsbC4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjo3LCJzdGVtIjoiSG93IGRvZXMgdGhlIHdvbWFuIGhlbHAgdGhlIG1hbj8iLCJvcHRpb25zIjpbIlNoZSBsZW5kcyBoaW0gbW9uZXkuIiwiU2hlIG9mZmVycyBoaW0gc29tZSBzb2x1dGlvbnMuIiwiU2hlIGNhbGxzIGFub3RoZXIgdG91ciBndWlkZS4iLCJTaGUgY2hhbmdlcyB0aGUgaXRpbmVyYXJ5LiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjgsInN0ZW0iOiJXaGF0IGlzIHRoZSBtYW4ncyByZWFjdGlvbiB0byB0aGUgd29tYW4ncyByZXNwb25zZT8iLCJvcHRpb25zIjpbImZydXN0cmF0aW9uIiwiYXBwcmVjaWF0aW9uIiwiY29uZnVzaW9uIiwiaW5kaWZmZXJlbmNlIl0sImtleSI6MiwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgNSBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAyOiBMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBEYWlseSBMaWZlIENvbnZlcnNhdGlvbiIsImludHJvQnVsbGV0cyI6WyJZb3UgYXJlIGFib3V0IHRvIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiB0d28gcGVvcGxlLCBhIG1hbiBhbmQgYSB3b21hbiwgd2hvIGtub3cgZWFjaCBvdGhlci4gVGhlIGNvbnZlcnNhdGlvbiB0YWtlcyBwbGFjZSBpbiBhIHBhcmsgd2hpbGUgdGhleSBhcmUgd2F0Y2hpbmcgdGhlaXIga2lkcyBwbGF5LiIsIkFmdGVyIHRoZSBjb252ZXJzYXRpb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3UgYXJlIGFib3V0IHRvIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiB0d28gcGVvcGxlLCBhIG1hbiBhbmQgYSB3b21hbiwgd2hvXG5rbm93IGVhY2ggb3RoZXIuIFRoZSBjb252ZXJzYXRpb24gdGFrZXMgcGxhY2UgaW4gYSBwYXJrIHdoaWxlIHRoZXkgYXJlIHdhdGNoaW5nIHRoZWlyXG5raWRzIHBsYXkuXG5cblxuTUFOOiBJdFx1MjAxOXMgYSBob3Qgb25lIHRvZGF5LCBpc25cdTIwMTl0IGl0P1xuV09NQU46IFllcywgaXQgaXMgdmVyeSBob3QuIE91ciBhcGFydG1lbnQgZG9lc25cdTIwMTl0IGhhdmUgYWlyIGNvbmRpdGlvbmluZywgc28gSSByZWFsbHlcbmxvb2sgZm9yd2FyZCB0byBiZWluZyBoZXJlIGluIHRoZSBwYXJrIGluIHRoZSBtaWRkbGUgb2YgdGhlIGRheSFcbk1BTjogU2FtZSBoZXJlLCBhbmQgZm9yIHRoZSBzYW1lIHJlYXNvbiEgSXRcdTIwMTlzIG5pY2UgdGhhdCB0aGVzZSBiZW5jaGVzIGFyZSBpbiB0aGUgc2hhZGVcbmFuZCBzdGlsbCBjbG9zZSBlbm91Z2ggdG8gdGhlIHBsYXlncm91bmQgZXF1aXBtZW50LiBNaW5qaSBkb2Vzblx1MjAxOXQgbG9vayB2ZXJ5IGhhcHB5XG50b2RheVx1MjAxNGlzIHlvdXIgZGF1Z2h0ZXIgaWxsP1xuV09NQU46IE5vLCBNaW5qaVx1MjAxOXMgZmluZS4gU2hlIHdhbnRlZCB0byBnbyB0byB0aGUgc3dpbW1pbmcgcG9vbCwgYnV0IEkgc2FpZCBcdTIwMThuby5cdTIwMTlcbkl0XHUyMDE5cyBqdXN0IHRvbyBsb25nIGEgYnVzIHJpZGUgb24gYSBob3QgZGF5IGxpa2UgdG9kYXkuXG5NQU46IEkga25vdyB3aGF0IHlvdSBtZWFuLiBZb3Uga25vdywgSSB3YXMgdGhpbmtpbmcsIGJlZm9yZSB5b3UgY2FtZSwgdGhhdCB0aGV5XG5zaG91bGQgaGF2ZSBzb21lIHNwcmlua2xlcnMgb3IgZm91bnRhaW5zIGhlcmUsIGZvciB0aGUga2lkcyB0byBwbGF5IGluLiBUaGVyZVx1MjAxOXMgYW4gb3Blblxuc3BhY2UgcmlnaHQgb3ZlciB0aGVyZSB0aGF0XHUyMDE5cyBub3QgYmVpbmcgdXNlZC5cbldPTUFOOiAgICAgICAgVGhleSBzYXkgd2VcdTIwMTlsbCBiZSBoYXZpbmcgbW9yZSBob3Qgc3BlbGxzIGxpa2UgdGhpcyAuIC4gLlxuTUFOOiBJdCBjb3VsZCBiZSBhIGxvdCBvZiBmdW5cdTIwMTR0aGVyZSBjb3VsZCBiZSB3YXRlciBzaG9vdGluZyBvdXQgb2YgZGlmZmVyZW50IHNwb3V0cyxcbnNvbWUgc3RhdGlvbmFyeSBhbmQgc29tZSBzcGlubmluZyBhcm91bmQgLiAuIC4gV2UgY291bGQgY2FsbCBpdCBhIHNwcmlua2xlciBwbGF5Z3JvdW5kISBJdFxuc2hvdWxkIGJlIGZyZWUsIG9mIGNvdXJzZSFcbldPTUFOOiBPZiBjb3Vyc2UsIGFuZCB5b3Uga25vdywgbGV0dGluZyBraWRzIHJ1biB0aHJvdWdoIHNwcmlua2xlcnMgd291bGRcbnByb2JhYmx5IGJlIGEgbG90IG1vcmUgaHlnaWVuaWMgdGhhbiBsZXR0aW5nIHRoZW0gc3dpbSBpbiBhIGNvbW11bmFsIHBvb2wuIEkgY29uZmVzcyBJXG53b3JyeSBhYm91dCB3aGF0IE1pbmppIG1pZ2h0IGNhdGNoIHdoZW4gc2hlIGdvZXMgc3dpbW1pbmcgYXQgdGhlIHBvb2xcdTIwMTRlYXJcbmluZmVjdGlvbnMsIGV5ZSBpbmZlY3Rpb25zIC4gLiAuXG5NQU46IFlvdSBtaWdodCBiZSByaWdodC4gVGhlIHdhdGVyIHdvdWxkIGNvbnRpbnVvdXNseSB3YXNoIGF3YXkuIFRoZSBraWRzIGNvdWxkIHN0aWxsXG53ZWFyIHRoZWlyIGJhdGhpbmcgc3VpdHMsIGJ1dCBhbHNvIHNuZWFrZXJzIG9yIHNwZWNpYWwgd2F0ZXIgc2hvZXMuXG5XT01BTjogSSBzdXNwZWN0IGEgc3ByaW5rbGVyIHBsYXlncm91bmQgd291bGQgdXNlIGxlc3Mgd2F0ZXIgdGhhbiBhIHN3aW1taW5nXG5wb29sLiBEaWQgeW91IGtub3cgdGhhdCB0aGV5XHUyMDE5cmUgdGFsa2luZyBhYm91dCByYXRpb25pbmcgdGhlIHdhdGVyIGFnYWluIHRoaXMgc3VtbWVyLCBhdFxubGVhc3QgZm9yIHdhdGVyaW5nIGxhd25zP1xuXGZNQU46IFllcywgSSBoZWFyZCB0aGF0LiBQZXJoYXBzIEkgc2hvdWxkIHNlbmQgbXkgc3VnZ2VzdGlvbiB0byB0aGUgQ2l0eSBQYXJrcyBhbmRcblJlY3JlYXRpb24gRGVwYXJ0bWVudC5cbldPTUFOOiAgICAgICAgSSB0aGluayB5b3Ugc2hvdWxkISBPbiBhIGRheSBsaWtlIHRvZGF5LCBldmVuIElcdTIwMTlkIHVzZSBpdC4gSnVzdCBhcyBJIGFtISIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjEwMiwidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAyIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaGF0IGlzIHRoZSBtYWluIHRvcGljIG9mIGRpc2N1c3Npb24\/Iiwib3B0aW9ucyI6WyJhIG5ldyBwbGF5Z3JvdW5kIHN3aW5nIHNldCIsImEgc3ByaW5rbGVyIHBsYXlncm91bmQiLCJhIHN1bW1lciBzd2ltbWluZyBjbGFzcyIsImEgc2hhZGVkIHBpY25pYyBhcmVhIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoYXQgaXMgdHJ1ZSBvZiB0aGUgbWFuJ3MgYXBhcnRtZW50PyIsIm9wdGlvbnMiOlsiSXQgaGFzIGEgc21hbGwgYmFsY29ueS4iLCJJdCBkb2VzIG5vdCBoYXZlIGFpciBjb25kaXRpb25pbmcuIiwiSXQgaXMgY2xvc2UgdG8gdGhlIHBvb2wuIiwiSXQgd2FzIHJlY2VudGx5IHJlbm92YXRlZC4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2h5IGRvZXMgdGhlIG1hbiBhc2sgaWYgTWluamkgaXMgc2ljaz8iLCJvcHRpb25zIjpbIlNoZSBsb29rcyBzYWQuIiwiU2hlIGlzIGNvdWdoaW5nLiIsIlNoZSByZWZ1c2VkIHRvIGVhdCBsdW5jaC4iLCJTaGUgZmVsbCBhc2xlZXAgb24gdGhlIGJlbmNoLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaHkgaXMgdGhlIHdvbWFuIHJlbHVjdGFudCB0byB0YWtlIE1pbmppIHRvIHN3aW1taW5nIHBvb2xzPyIsIm9wdGlvbnMiOlsiVGhlIHBvb2wgaXMgdG9vIGZhciBhd2F5LiIsIlNoZSBpcyBjb25jZXJuZWQgYWJvdXQgZ2VybXMuIiwiTWluamkgZG9lc24ndCBrbm93IGhvdyB0byBzd2ltLiIsIlRoZSBwb29sIGlzIHRvbyBleHBlbnNpdmUuIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoYXQgZG9lcyB0aGUgd29tYW4gdGhpbmsgb2YgdGhlIG1hbidzIHN1Z2dlc3Rpb24\/Iiwib3B0aW9ucyI6WyJJdCBpcyBhbiBleGNlbGxlbnQgaWRlYS4iLCJJdCB3b3VsZCBiZSB0b28gY29zdGx5LiIsIkl0IGlzIHVubmVjZXNzYXJ5LiIsIkl0IG1pZ2h0IG5vdCBiZSBzYWZlLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgNSBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiB3aGVyZSBhIHdvbWFuIG5lZWRzIGluZm9ybWF0aW9uIGFib3V0IG11c2ljYWwgaW5zdHJ1bWVudHMuIiwiQWZ0ZXIgdGhlIGNvbnZlcnNhdGlvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gd2hlcmUgYSB3b21hbiBuZWVkcyBpbmZvcm1hdGlvbiBhYm91dCBtdXNpY2FsXG5pbnN0cnVtZW50cy5cblxuXG5NQU46IEhpLCB3ZWxjb21lIHRvIE11c2ljIEFuZCBNb3JlLiBDYW4gSSBoZWxwIHlvdT9cbldPTUFOOiBIaSEgWWVzLCBJJ20gbG9va2luZyBmb3IgZWl0aGVyIGEgZ3VpdGFyIG9yIGEgZHJ1bSBzZXQuIEl0J3MgZm9yIG15IHNvbiwgZm9yIGhpc1xuYmlydGhkYXkuIEhlJ3MgYWx3YXlzIHdhbnRlZCBlaXRoZXIgb2YgdGhvc2UgdHdvIGluc3RydW1lbnRzLiBDb3VsZCB5b3UgdGVsbCBtZSBhIGxpdHRsZVxuYml0IGFib3V0IGJvdGg\/XG5NQU46IEhhcyB5b3VyIHNvbiBwbGF5ZWQgZWl0aGVyIGluc3RydW1lbnQgYmVmb3JlP1xuV09NQU46IFdlbGwsIGhlIGhhZCBhIHRveSBkcnVtIHNldCB3aGVuIGhlIHdhcyBmaXZlIGFuZCBsb3ZlZCBpdCBzbyBtdWNoIHRoYXQgaGVcbmJyb2tlIGl0LiBIZSdzIHRoaXJ0ZWVuIG5vdy4gSGlzIGZyaWVuZHMgYWxsIHBsYXkgZ3VpdGFyIGFuZCBzb21ldGltZXMgaGUgdHJpZXMgcGxheWluZyBvblxudGhlaXIgZ3VpdGFycywgYnV0IGhlJ3MgbmV2ZXIgdGFrZW4gbGVzc29ucy4gSSdkIHByZWZlciBpZiBoZSBwbGF5ZWQgdGhlIGd1aXRhci4gSSB0aGluayBkcnVtc1xud291bGQgYmUgdG9vIG5vaXN5OyBvdXIgaG91c2UgaGFzIHZlcnkgcG9vciBzb3VuZCBpbnN1bGF0aW9uLlxuTUFOOiBXZWxsLCB3ZSBoYXZlIG9wdGlvbnMgdGhhdCB3aWxsIG1ha2UgYm90aCB5b3UgYW5kIHlvdXIgc29uIGhhcHB5LiBXZSBzZWxsXG5yZWd1bGFyIGRydW0gc2V0cywgYnV0IGlmIHNvdW5kcHJvb2ZpbmcgaXMgYSBjb25jZXJuIHdlIGRvIHNlbGwgZWxlY3Ryb25pYyBkcnVtcyB0aGF0IHlvdVxuY2FuIHBsdWcgaGVhZHBob25lcyBpbnRvLCBzbyB0aGVuIHlvdSB3b25cdTIwMTl0IGhlYXIgYSB0aGluZy5cbldPTUFOOiAgICAgICAgV293ISBUaGF0IGNlcnRhaW5seSB3b3VsZCBiZSBuaWNlLiBXaGF0IGFib3V0IGd1aXRhcnM\/XG5cZk1BTjogWW91IGNvdWxkIGdldCBhIGNsYXNzaWNhbCBhY291c3RpYyBndWl0YXIsIG9yIGFuIGVsZWN0cmljIGd1aXRhci4gRm9yIGEgYmVnaW5uZXIsIEknZFxucmVjb21tZW5kIGEgY2xhc3NpY2FsIGFjb3VzdGljIHdpdGggbnlsb24gc3RyaW5ncy4gTnlsb24gc3RyaW5ncyBhcmUgc29mdGVyIG9uIHRoZSBmaW5nZXJzXG5hbmQgYXJlIG11Y2ggZWFzaWVyIHRvIGxlYXJuIG9uLlxuV09NQU46ICAgICAgICBBbGwgaGlzIGZyaWVuZHMgaGF2ZSBlbGVjdHJpYyBndWl0YXJzLCBzbyBoZSdkIHByb2JhYmx5IHdhbnQgYW4gZWxlY3RyaWMgb25lXG50b28uXG5NQU46IFRoZSBnb29kIHRoaW5nIGFib3V0IHRoZSBlbGVjdHJpYyBndWl0YXIgaXMgdGhhdCwgbGlrZSBlbGVjdHJvbmljIGRydW1zLCBoZSBjYW4gcGx1Z1xuaGVhZHBob25lcyBpbiBhbmQgeW91IHdvbid0IGhlYXIgaGltIHByYWN0aWNlLiBIb3dldmVyLCBlbGVjdHJpYyBndWl0YXJzIGhhdmUgc3RlZWxcbnN0cmluZ3MuIFRoZXkgY2FuIGJlIHF1aXRlIHBhaW5mdWwgb24gdGhlIGZpbmdlcnMgZm9yIGJlZ2lubmVycywgYW5kIGhlIG1heSBnZXQgZnJ1c3RyYXRlZFxuYW5kIGdpdmUgdXAgcXVpY2tseS5cbldPTUFOOiAgICAgICAgSSBzZWUuIFdlbGwgdGhlcmVcdTIwMTlzIHF1aXRlIGEgZmV3IG9wdGlvbnMuIFdoaWNoIGlzIHRoZSBtb3N0IGFmZm9yZGFibGU\/XG5NQU46IEFuIGVsZWN0cm9uaWMgZHJ1bSBzZXQgd291bGQgc2V0IHlvdSBiYWNrIHRoZSBtb3N0LiBUaGV5IHN0YXJ0IGF0IGFyb3VuZCAkNzAwLiBBXG5iZWdpbm5lciBlbGVjdHJpYyBndWl0YXIgd291bGQgYmUgYSBsb3QgY2hlYXBlciBhbmQgYSByZWd1bGFyIGFjb3VzdGljIGd1aXRhciB3b3VsZCBiZSB0aGVcbmNoZWFwZXN0LiBXZSBoYXZlIHNvbWUgbmljZSBxdWFsaXR5IG9uZXMgdGhhdCBhcmUgb24gc2FsZSByaWdodCBub3cuXG5XT01BTjogSSB0aGluayBhbiBlbGVjdHJpYyBndWl0YXIgbWlnaHQgYmUgdGhlIHdheSB0byBnby4gSSBrbm93IGl0IGhhcyBzdGVlbCBzdHJpbmdzLFxuYnV0IEkgdGhpbmsgaGUnZCBnZXQgdXNlZCB0byBpdC4gQ291bGQgeW91IHNob3cgbWUgc29tZT9cbk1BTjogQ2VydGFpbmx5ISBXZSBoYXZlIGEgZ3JlYXQgdmFyaWV0eSBvZiBzdHlsZXMuIFBsZWFzZSBmb2xsb3cgbWUhIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiQ29udmVyc2F0aW9uIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6MTM3LCJ0aW1lTWludXRlcyI6MywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDIgbWludXRlcyBsb25nLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgbXVzaWNhbCBleHBlcmllbmNlIGRvZXMgdGhlIHdvbWFuJ3Mgc29uIGhhdmU\/Iiwib3B0aW9ucyI6WyJIZSBwbGF5cyBpbiBhIHNjaG9vbCBiYW5kLiIsIkhlIGhhcyB0YWtlbiBndWl0YXIgbGVzc29ucyBmb3IgeWVhcnMuIiwiSGUgaGFzbid0IGhhZCBhbnkgZm9ybWFsIG11c2ljIGluc3RydWN0aW9uLiIsIkhlIHBlcmZvcm1zIGF0IGZhbWlseSBnYXRoZXJpbmdzLiJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaHkgZG9lcyB0aGUgd29tYW4gd2FudCB0byBidXkgaGVyIHNvbiBhIG11c2ljYWwgaW5zdHJ1bWVudD8iLCJvcHRpb25zIjpbIkhlIGVuam95cyBwbGF5aW5nIG11c2ljLiIsIkhlIG5lZWRzIGl0IGZvciBhIHNjaG9vbCBwcm9qZWN0LiIsIkhpcyBmcmllbmRzIGNvbnZpbmNlZCBoZXIgdG8gYnV5IG9uZS4iLCJTaGUgd2FudHMgaGltIHRvIGpvaW4gYSBiYW5kLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJXaGF0IHdhcyB0aGUgbWFuIHRyeWluZyB0byBkbz8iLCJvcHRpb25zIjpbIm1ha2UgYSBxdWljayBzYWxlIiwicHJvdmlkZSB0aGUgYmVzdCBpbmZvcm1hdGlvbiIsInByb21vdGUgdGhlIHN0b3JlJ3Mgc2FsZSBpdGVtcyIsImNvbnZpbmNlIGhlciB0byBidXkgdGhlIGNoZWFwZXN0IG9wdGlvbiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IHNvbHV0aW9uIGRvZXMgdGhlIG1hbiBvZmZlciBmb3IgdGhlIGRydW1zPyIsIm9wdGlvbnMiOlsiYSBzbWFsbGVyIGRydW0gc2V0IGZvciBiZWdpbm5lcnMiLCJzb3VuZHByb29maW5nIHBhbmVscyBmb3IgdGhlIHJvb20iLCJhbiBlbGVjdHJvbmljIGRydW0gc2V0IHRoYXQgY2FuIGJlIHNpbGVudCIsImRydW0gbGVzc29ucyBhdCB0aGUgc3RvcmUiXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiV2h5IGRvZXMgdGhlIG1hbiBzYXkgdGhlIGFjb3VzdGljIGd1aXRhciBtaWdodCBiZSBiZXR0ZXI\/Iiwib3B0aW9ucyI6WyJJdCBpcyBtb3JlIGR1cmFibGUgb3ZlciB0aW1lLiIsIkl0IHNvdW5kcyBiZXR0ZXIgdW5wbHVnZ2VkLiIsImJlY2F1c2UgdGhlIHN0cmluZ3MgYXJlIGxlc3MgcGFpbmZ1bCB0byB1c2UiLCJJdCBpcyBlYXNpZXIgdG8gY2FycnkgYXJvdW5kLiJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjYsInN0ZW0iOiJXaHkgZG9lcyB0aGUgd29tYW4gdGhpbmsgaGVyIHNvbiB3aWxsIHByZWZlciB0aGUgZWxlY3RyaWMgZ3VpdGFyPyIsIm9wdGlvbnMiOlsiSXQgaXMgbW9yZSBhZmZvcmRhYmxlLiIsIkl0IGlzIGVhc2llciB0byB0dW5lLiIsIkl0IGNvbWVzIHdpdGggYSB3YXJyYW50eS4iLCJiZWNhdXNlIGhlIGtub3dzIHBlb3BsZSB3aXRoIGVsZWN0cmljIGd1aXRhcnMiXSwia2V5Ijo0LCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaGVhZGVyVGl0bGUiOiJTZXQgNSBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBuZXdzIHN0b3J5IGFib3V0IGEgY291cGxlIHdobyBzdGFydGVkIGEgY29tbXVuaXR5IGdhcmRlbi4iLCJBZnRlciB0aGUgbmV3cyBpdGVtLCBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCB1c2luZyB0aGUgZHJvcC1kb3duIG1lbnUuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIG5ld3Mgc3RvcnkgYWJvdXQgYSBjb3VwbGUgd2hvIHN0YXJ0ZWQgYSBjb21tdW5pdHkgZ2FyZGVuLlxuXGZSZWNlbnRseSBhcnJpdmVkIHJlc2lkZW50cyBNaWtlIGFuZCBQYXVsYSBIZW5kcmlja3MgYXJlIGRlbGlnaHRlZCB0aGF0IHRoZSBjb21tdW5pdHlcbmdhcmRlbiB0aGV5IHN0YXJ0ZWQgdGhpcyBzcHJpbmcgaW4gdGhlaXIgdG93bmhvdXNlIGNvbXBsZXggaW4gQXJucHJpb3IsIE9udGFyaW8sIGhhc1xudHVybmVkIG91dCB0byBiZSBhIGJpZyBoaXQuIFRoZSBjb3VwbGUgaGF2ZSBiZWVuIGF2aWQgZ2FyZGVuZXJzIGZvciB5ZWFycy4gTWlrZSBzYWlkIHRoZXlcbndlcmUgZGlzYXBwb2ludGVkIHRoYXQgdGhlcmUgd2VyZW5cdTIwMTl0IGFueSBuZWFyYnkgY29tbXVuaXR5IGdhcmRlbnMgdG8gam9pbi4gVGhleVxuZGVjaWRlZCB0byBzdGFydCB0aGVpciBvd24uXG5cblxuVGhleSBzb29uIGZvdW5kIHRoYXQgYWxtb3N0IGV2ZXJ5b25lIGluIHRoZSBhcmVhIHdhcyBlbnRodXNpYXN0aWMgYWJvdXQgdGhlIGlkZWEuIEEgdGVhbVxub2YgdGhpcnR5IHJlc2lkZW50cyBjb252ZXJ0ZWQgYSBsYXJnZSB1bnVzZWQgcGF0Y2ggb2YgZ3Jhc3MgaW50byBnYXJkZW5pbmcgcGxvdHMuIFRoZXlcbmZpbGxlZCB0aGUgYmVkcyB3aXRoIHNvaWwgYW5kIGNvbXBvc3QuIFRoZXkgYWxzbyBkdWcgYSBwb25kIHRvIGNvbGxlY3QgcmFpbndhdGVyIGZvclxud2F0ZXJpbmcgcGxhbnRzLlxuXG5cbk5vdyB0aGUgZ2FyZGVuIGlzIHBhY2tlZCB3aXRoIHZlZ2V0YWJsZXMsIGZsb3dlcnMsIGFuZCBwZW9wbGUuIE9uZSByZXNpZGVudCwgQXRzdWtvXG5UYW5ha2EsIHNhaWQgdGhhdCBpdFx1MjAxOXMgYSBncmVhdCBwbGFjZSB0byBoYW5nIG91dCBhbmQgc29jaWFsaXplIHdpdGggdGhlIG5laWdoYm91cnMuIEFub3RoZXJcbm1hbiBzYWlkIGhlIHdhcyBkZWxpZ2h0ZWQgdG8gZmluZCB0aGF0IGdyb3dpbmcgaGlzIG93biB2ZWdldGFibGVzIGN1dCBkb3duIGhpcyBncm9jZXJ5XG5iaWxsLiBUaGUgbG9jYWwgd2lsZGxpZmUgc2VlbSB0byBiZW5lZml0IGFzIHdlbGwuIEdhcmRlbmVyIGFuZCBiaW9sb2dpc3QgSm9obiBDaGVuZXksIHdob1xuaXMgcmVzZWFyY2hpbmcgZnJvZyBwb3B1bGF0aW9ucyBpbiB0aGUgYXJlYSwgaXMgdGhyaWxsZWQgdGhhdCB0aGUgcG9uZCBpcyBub3cgaG9tZSB0byBhXG5zcGVjaWVzIG9mIGVuZGFuZ2VyZWQgZnJvZ3MuIFBhdWxhIHNhaWQgdGhlcmVcdTIwMTlzIHNvbWV0aGluZyBmb3IgZXZlcnlvbmUgaW4gdGhlIGNvbW11bml0eVxuZ2FyZGVuLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6Ik5ld3MgSXRlbSIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjgyLCJ0aW1lTWludXRlcyI6MywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIG5ld3MgaXRlbS4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiVGhlIGNvbW11bml0eSBnYXJkZW4gaXMgcGFydCBvZiIsIm9wdGlvbnMiOlsiYSBwdWJsaWMgcGFyayBhcmVhLiIsImdvdmVybm1lbnQgbGFuZC4iLCJhbiB1bnVzZWQgZ3Jhc3MgYXJlYS4iLCJ0aGUgSGVuZHJpY2tzJyBnYXJkZW4uIl0sImtleSI6MywicmVjb24iOmZhbHNlfSx7Im4iOjIsInN0ZW0iOiJUaGUgSGVuZHJpY2tzIHN0YXJ0ZWQgdGhlIGdhcmRlbiB0byIsIm9wdGlvbnMiOlsibWVldCB0aGVpciBuZWlnaGJvdXJzLiIsInJlZHVjZSB0aGVpciBmb29kIGJpbGwuIiwiZW5qb3kgdGhlaXIgaG9iYnkuIiwiaGVscCBsb2NhbCB3aWxkbGlmZS4iXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9LHsibiI6Mywic3RlbSI6IlRoZSBwZW9wbGUgYnVpbGRpbmcgdGhlIGdhcmRlbiB3ZXJlIiwib3B0aW9ucyI6WyJyZXRpcmVkLiIsImxvY2FsIHJlc2lkZW50cy4iLCJsb2NhbCB3b3JrZXJzLiIsIm1vc3RseSBzdHVkZW50cy4iXSwia2V5IjoyLCJyZWNvbiI6ZmFsc2V9LHsibiI6NCwic3RlbSI6IlRoZXkgYWRkZWQgdGhlIHBvbmQgdG8iLCJvcHRpb25zIjpbIndhdGVyIHRoZSBnYXJkZW5zLiIsImhlbHAgZW5kYW5nZXJlZCBmcm9ncy4iLCJtYWtlIHRoZSBhcmVhIHByZXR0aWVyLiIsImdyb3cgYXF1YXRpYyBwbGFudHMuIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjUsInN0ZW0iOiJQZW9wbGUgd2VyZSBlbnRodXNpYXN0aWMgYmVjYXVzZSB0aGV5IGNvdWxkIiwib3B0aW9ucyI6WyJzZWxsIGZsb3dlcnMgYW5kIHZlZ2V0YWJsZXMuIiwiZ2l2ZSBhIGhvbWUgdG8gd2lsZGxpZmUuIiwiZW5qb3kgYmVpbmcgb3V0ZG9vcnMuIiwic29jaWFsaXplIGFuZCBncm93IHZlZ2V0YWJsZXMuIl0sImtleSI6NCwicmVjb24iOmZhbHNlfV19XX0seyJuYW1lIjoiUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgNSBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA1OiBMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgd2F0Y2ggYSBjb252ZXJzYXRpb24gYW1vbmcgdGhyZWUgY28td29ya2Vyc1x1MjAxNHR3byBtZW4gYW5kIG9uZSB3b21hbi4gVGhleSBnZXQgdG9nZXRoZXIgaW4gYSBtZWV0aW5nIHJvb20gdG8gZGlzY3VzcyBhIG5ldyB3b3JrIGFzc2lnbm1lbnQgZm9yIG9uZSBvZiB0aGVtLiIsIkFmdGVyIHRoZSBkaXNjdXNzaW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCBhbnN3ZXIgdG8gZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCB3YXRjaCBhIGNvbnZlcnNhdGlvbiBhbW9uZyB0aHJlZSBjby13b3JrZXJzXHUyMDE0dHdvIG1lbiBhbmQgb25lIHdvbWFuLiBUaGV5XG5nZXQgdG9nZXRoZXIgaW4gYSBtZWV0aW5nIHJvb20gdG8gZGlzY3VzcyBhIG5ldyB3b3JrIGFzc2lnbm1lbnQgZm9yIG9uZSBvZiB0aGVtLlxuXG5cbkxhcnJ5OiBUb20hIEJyZW5kYSBhbmQgSSB3YW50IHRvIHRhbGsgdG8geW91IGFib3V0IHByZXNlbnRhdGlvbnMuXG5Ub206IFByZXNlbnRhdGlvbnM\/IFdoYXQgYWJvdXQgdGhlbT9cbkJyZW5kYTogICAgICAgIFdlbGwsIHdlXHUyMDE5cmUgdGhlIHNhbGVzIGZvcmNlLiBXZSBkbyBhbGwgdGhlIHNhbGVzIHBpdGNoZXMuIFdlIG1lZXQgd2l0aFxucG90ZW50aWFsIGNsaWVudHMgb24gYSByZWd1bGFyIGJhc2lzIGFuZCBzaG93IHRoZW0gb3VyIHByb2R1Y3RzIGluIGhvcGVzIHRvIGFjcXVpcmUgbmV3XG5hY2NvdW50cy4gQW5kIC4gLiAuIHdlIHRoaW5rIHRoYXQgeW91IHNob3VsZCBjb21lIG9uIGJvYXJkLlxuVG9tOiBZb3Ugd2FudCBtZSB0byBzdGFydCBkb2luZyBzYWxlcyBwaXRjaGVzPyBMb29rLCBJIGRvblx1MjAxOXQgaGF2ZSB0aGUgc2tpbGxzIG9yIHRoZVxuZXhwZXJpZW5jZS5cblxmTGFycnk6IFRvbSwgd2h5IHdvdWxkIHlvdSBzYXkgdGhhdD8gWW91IHN0YXJ0ZWQgd2l0aCB0aGUgY29tcGFueSwgd2hhdCwgYWJvdXQgYSB5ZWFyXG5hZ28gYXMgYSBzYWxlcyBhc3Npc3RhbnQ\/IFNpbmNlIHRoZW4sIHlvdVx1MjAxOXZlIHdvcmtlZCBpbiB0aHJlZSBkaWZmZXJlbnQgZGVwYXJ0bWVudHMgYW5kXG55b3VcdTIwMTl2ZSBkb25lIHZlcnkgd2VsbCBpbiBhbGwgdGhyZWUuXG5CcmVuZGE6ICAgICAgIEFic29sdXRlbHkuIFdlXHUyMDE5dmUgYmVlbiB0YWxraW5nIHdpdGggeW91ciBwYXN0IGFuZCBjdXJyZW50IGNvLXdvcmtlcnMgdG9cbmdldCByZWZlcmVuY2VzLCBhbmQgdGhleSBhbGwgc3BlYWsgdmVyeSBoaWdobHkgb2YgeW91LiBZb3UgZG8gYmVhdXRpZnVsIGNoYXJ0cywgdG9wLW5vdGNoXG5yZXBvcnRzLCBhbmQgZXZlcnlib2R5IHJlYWxseSBzZWVtcyB0byBsaWtlIHlvdSEgSG93IGRpZCB5b3UgbWFuYWdlIHRoYXQsIGJ5IHRoZSB3YXk\/XG5Ub206IEkgZG9uXHUyMDE5dCBrbm93LCBJIGp1c3QgaGVscCB0aGVtIG91dCB3aGVuIHRoZXkgYXNrIG1lIGZvciB0aGluZ3MuIEkgdHJ5IHRvIGdpdmUgdGhlbVxud2hhdCB0aGV5IG5lZWQuXG5CcmVuZGE6ICAgICAgU2VlPyBUaGF0IGlzIHRoZSBtYXJrIG9mIGEgZ3JlYXQgc2FsZXNwZXJzb24hIElkZW50aWZ5aW5nIHRoZSBpbmRpdmlkdWFsXHUyMDE5c1xubmVlZHMgYW5kIGRlbGl2ZXJpbmcgdG8gdGhlaXIgZXhwZWN0YXRpb25zIVxuTGFycnk6IEhvbGQgb24sIEJyZW5kYS4gVG9tIGRpZG5cdTIwMTl0IHNlZW0gcGFydGljdWxhcmx5IGV4Y2l0ZWQgd2hlbiB3ZSBvZmZlcmVkIGhpbSB0aGVcbm9wcG9ydHVuaXR5IHRvIHN0YXJ0IHBpdGNoaW5nLiBOb3cgSSB0aGluayBpdFx1MjAxOXMgaW1wb3J0YW50IHRoYXQgVG9tIHRlbGwgdXMgZXhhY3RseSB3aGF0IGl0IGlzXG50aGF0XHUyMDE5cyBib3RoZXJpbmcgaGltLlxuVG9tOiBXZWxsLCBpdFx1MjAxOXMgYSBjb3VwbGUgb2YgdGhpbmdzLCByZWFsbHkuIEkgZG9uXHUyMDE5dCBmZWVsIGxpa2UgSVx1MjAxOW0gY29tcGV0ZW50LiBXaGF0IGlmIHRoZXlcbmFzayBtZSBxdWVzdGlvbnMgYWJvdXQgb3VyIHByb2R1Y3QgdGhhdCBJIGNhblx1MjAxOXQgYW5zd2VyPyBUZWNobmljYWwgcXVlc3Rpb25zP1xuTGFycnk6IElcdTIwMTltIHN1cmUgeW91IGtub3cgbW9yZSB0aGFuIHlvdSB0aGluayB5b3Uga25vdy4gUGx1cyB5b3VcdTIwMTlyZSBhIGdyZWF0XG5jb21tdW5pY2F0b3IuIEkgZG9uXHUyMDE5dCB0aGluayB0aGVyZVx1MjAxOXMgYW55dGhpbmcgaGVyZSB0aGF0IGNhblx1MjAxOXQgYmUgc29sdmVkIHdpdGggYSBsaXR0bGUgYml0IG9mXG5wcmVwYXJhdGlvbi5cblRvbTogSVx1MjAxOW0gYWxzbyBub3QgdGhhdCBrZWVuIG9uIHB1YmxpYyBzcGVha2luZy4gSSBtZWFuLCBJXHUyMDE5bSBnb29kIG9uZS1vbi1vbmUsIGJ1dCBJXG5yZW1lbWJlciBldmVuIGJhY2sgYXQgc2Nob29sLCB3aGVuIEkgaGFkIHRvIGRvIHByZXNlbnRhdGlvbnMgLiAuIC4gWW91IGtub3csIHdoZW4geW91XG5zdGFydCB0byBibHVzaCwgYW5kIHlvdVx1MjAxOXJlIGJyZWF0aGluZywgYW5kIHlvdXIgbW91dGggZ2V0cyBkcnksIGFuZCB5b3VyIHBhbG1zIHN0YXJ0IHRvIGdldFxuc3dlYXR5IC4gLiAuXG5CcmVuZGE6ICAgICAgVG9tLCBJIHRoaW5rIHRoYXQgeW91IHNob3VsZCBhdHRlbmQgc29tZSBpbXBvcnRhbnQgc2FsZXMgcHJlc2VudGF0aW9ucyB3aXRoXG5vdXIgbW9yZSBzZW5pb3Igc2FsZXMgcmVwcmVzZW50YXRpdmVzLiBJIHRoaW5rIHRoYXRcdTIwMTlsbCBoZWxwIHlvdSBnZXQgc29tZSBjb25maWRlbmNlIGFuZCBiZVxubW9yZSBzdXJlIG9mIHlvdXJzZWxmLiBJdFx1MjAxOWxsIHJlYWxseSBoZWxwIHlvdSBmaWdodCB0aGF0IHN0YWdlIGZyaWdodC5cbkxhcnJ5OiBJIGFncmVlLiBBIGxpdHRsZSBvYnNlcnZhdGlvbiwgYSBsaXR0bGUgcHJlcGFyYXRpb24sIGEgbGl0dGxlIHByYWN0aWNlXHUyMDE0eW91XHUyMDE5ZCBiZSBhbWF6ZWRcbmF0IGhvdyBmYXIgaXQgY2FuIGdvLiBZb3Ugd291bGRuXHUyMDE5dCBiZWxpZXZlIGhvdyBiYWQgSSB3YXMgd2hlbiBJIGZpcnN0IHN0YXJ0ZWQuXG5CcmVuZGE6ICAgICAgICBBbmQgbm93IGhlXHUyMDE5cyB3aW5uaW5nIGF3YXJkcyEgWW91IG1hcmsgbXkgd29yZHMsIFRvbSwgeW91XHUyMDE5cmUgZ29ubmFcbmZvbGxvdyBpbiBoaXMgZm9vdHN0ZXBzLiBXZWxjb21lIGFib2FyZCEiLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJEaXNjdXNzaW9uICh2aWRlbykiLCJtZWRpYVR5cGUiOiJ2aWRlbyIsImR1cmF0aW9uIjoxNjgsInRpbWVNaW51dGVzIjozLCJtZWRpYUluc3RydWN0aW9uIjoiV2F0Y2ggdGhlIGRpc2N1c3Npb24uIFlvdSB3aWxsIHdhdGNoIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMS41IHRvIDIgbWludXRlcyBsb25nLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoaWNoIGRlcGFydG1lbnQgZG8gTGFycnkgYW5kIEJyZW5kYSB3b3JrIGZvcj8iLCJvcHRpb25zIjpbIkN1c3RvbWVyIFNlcnZpY2UiLCJTYWxlcyBhbmQgTWFya2V0aW5nIiwiSHVtYW4gUmVzb3VyY2VzIiwiVGVjaG5vbG9neSJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjoyLCJzdGVtIjoiQWNjb3JkaW5nIHRvIEJyZW5kYSBhbmQgTGFycnksIHdoYXQgaXMgb25lIG9mIFRvbSdzIHN0cmVuZ3Rocz8iLCJvcHRpb25zIjpbIkhlIGhhcyBiZWVuIGEgc2FsZXMgYXNzaXN0YW50IGZvciAzIHllYXJzLiIsIkhlIHdyaXRlcyB0b3AgcXVhbGl0eSByZWZlcmVuY2UgbGV0dGVycy4iLCJIZSBoZWxwcyBjby13b3JrZXJzIG1ha2UgYmVhdXRpZnVsIGNoYXJ0cy4iLCJIZSBpcyBwb3B1bGFyIHdpdGggYWxsIG9mIGhpcyBjb2xsZWFndWVzLiJdLCJrZXkiOjQsInJlY29uIjpmYWxzZX0seyJuIjozLCJzdGVtIjoiV2hhdCBkb2VzIHRoZSBjb21wYW55IHByb3ZpZGU\/Iiwib3B0aW9ucyI6WyJ0ZWNobmljYWwgcHJvZHVjdHMiLCJjb25zdWx0aW5nIHNlcnZpY2VzIiwiY29tbXVuaWNhdGlvbiB0cmFpbmluZyIsIm1hcmtldGluZyBhbmQgc2FsZXMgYWR2aWNlIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjQsInN0ZW0iOiJIb3cgZG9lcyBUb20gaW5pdGlhbGx5IGZlZWwgYWJvdXQgaGlzIGNvLXdvcmtlcnMnIHN1Z2dlc3Rpb24\/Iiwib3B0aW9ucyI6WyJIZSBpcyBleGNpdGVkLiIsIkhlIGlzIHJlbHVjdGFudC4iLCJIZSBpcyBkZXZhc3RhdGVkLiIsIkhlIGlzIHVuc3VycHJpc2VkLiJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjo1LCJzdGVtIjoiV2h5IGRvIEJyZW5kYSBhbmQgTGFycnkgY29sbGVjdCByZWZlcmVuY2VzPyIsIm9wdGlvbnMiOlsidG8gdW5kZXJzdGFuZCBUb20ncyBwcmV2aW91cyBqb2IiLCJ0byB1cGRhdGUgVG9tJ3MgcGVyc29ubmVsIGZpbGVzIiwidG8gZGV0ZXJtaW5lIFRvbSdzIHN1aXRhYmlsaXR5IiwidG8gYXNzZXNzIFRvbSdzIHBvcHVsYXJpdHkiXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9LHsibiI6Niwic3RlbSI6IldoYXQgd29ycmllcyBUb20gYWJvdXQgcHJlc2VudGluZyB0byBwb3RlbnRpYWwgY2xpZW50cz8iLCJvcHRpb25zIjpbIlRoZSBjbGllbnRzIHdvbid0IGxpa2UgaGltLiIsIkhlIGxhY2tzIHNwZWNpYWxpemVkIGtub3dsZWRnZS4iLCJIaXMgY2xpZW50cyBoYXZlIHNwZWNpZmljIG5lZWRzLiIsIkhlIGlzIG5ldyB0byB3b3JraW5nIGluIHNhbGVzLiJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjo3LCJzdGVtIjoiV2hhdCBkb2VzIHRoZSB3b21hbiB3YW50IFRvbSB0byBkbz8iLCJvcHRpb25zIjpbInByZXBhcmUgaGlzIG93biBzYWxlcyB0YWxrIiwibGlzdGVuIHRvIHByZXNlbnRhdGlvbnMgYnkgb3RoZXIgc3RhZmYiLCJtZWV0IHdpdGggaGVyIHBvdGVudGlhbCBjbGllbnRzIiwiZ2l2ZSBhIHByZXNlbnRhdGlvbiBhdCBoaXMgb2xkIHNjaG9vbCJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjo4LCJzdGVtIjoiV2hhdCBkbyBUb20ncyB0d28gY28td29ya2VycyBjb252ZXkgYXQgdGhlIGVuZD8iLCJvcHRpb25zIjpbIlRoZXkgYXJlIGNvbmZpZGVudCBUb20gd2lsbCB3aW4gdGhpcyB5ZWFyJ3MgdG9wIHNhbGVzIGF3YXJkLiIsIlRoZXkgYXJlIGRlbGlnaHRlZCB0aGF0IHRoZXkgaGF2ZSBjaGFuZ2VkIFRvbSdzIGZlZWxpbmdzLiIsIlRoZXkgYXJlIG9wdGltaXN0aWMgdGhhdCBUb20ncyBza2lsbHMgd2lsbCBpbmNyZWFzZSByYXBpZGx5LiIsIlRoZXkgYXJlIHBsZWFzZWQgdGhhdCBUb20gc2FpZCBoZSB3b3VsZCBhY2NlcHQgdGhlaXIgb2ZmZXIuIl0sImtleSI6MywicmVjb24iOmZhbHNlfV19XX0seyJuYW1lIjoiUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJoZWFkZXJUaXRsZSI6IlNldCA1IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDY6IExpc3RlbmluZyBmb3IgVmlld3BvaW50cyIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIHByZXNlbnRhdGlvbiBhYm91dCBsaWZlIGluIHRoZSBzdWJ1cmJzLiIsIkFmdGVyIHRoZSByZXBvcnQsIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IHVzaW5nIHRoZSBkcm9wLWRvd24gbWVudS4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgcHJlc2VudGF0aW9uIGFib3V0IGxpZmUgaW4gdGhlIHN1YnVyYnMuXG5cZlN1YnVyYnM6IFRoZXkncmUgYSBjdXJpb3VzIGJlYXN0LiBUaGV5J3JlIG5laXRoZXIgdXJiYW4gbm9yIHJ1cmFsLCBhbmQgdGhlaXIgc29sZSBwdXJwb3NlXG5pcyB0byBwcm92aWRlIGEgc3BhY2UgZm9yIGRvbWVzdGljIGxpZmUuIFdpdGggdGhlaXIgaG9tb2dlbm91cyBhcmNoaXRlY3R1cmUgYW5kIHRoZW1hdGljXG5zdWJkaXZpc2lvbnMsIHRoZXkncmUgb2Z0ZW4gcGVyY2VpdmVkIGFzIHVnbHkuIFRoZWlyIHZpc3VhbCBtb25vdG9ueSBzdGVtcyBpbiBwYXJ0IGZyb21cbnRoZSBmYWN0IHRoZXkgd2VyZSBtZXRpY3Vsb3VzbHkgcGxhbm5lZFx1MjAxNGluIGNvbnRyYXN0IHRvIGNpdHkgY2VudHJlcywgd2hpY2ggZXZvbHZlZFxub3JnYW5pY2FsbHkgYW5kIGhhcGhhemFyZGx5IG92ZXIgdGltZSwgaW4gcmVzcG9uc2UgdG8gY2hhbmdpbmcgZWNvbm9taWMgaW5mbHVlbmNlcy5cblxuXG5CdXQgZXZlciBzaW5jZSB0aGUgaW50ZXJuYWwgY29tYnVzdGlvbiBlbmdpbmUgcmV2b2x1dGlvbml6ZWQgY29tbXV0aW5nLCB0aGUgc3VidXJic1xuaGF2ZSBhdHRyYWN0ZWQgdGhlIGluaGFiaXRhbnRzIG9mIHRoZSBjcmFtcGVkIGFuZCBjaGFvdGljIGlubmVyIGNpdHkgYW5kIGx1cmVkIHRoZW0gb3V0IHRvXG50aGUgcGVyaXBoZXJ5LlxuXG5cbkluIHRoZSAxOTcwcywgZXNzYXlpc3QgTmFyZW5kcmEgQmFuc2FsIGRlc2NyaWJlZCBob3cgdGhpcyB3b3VsZC1iZSBwYXJhZGlzZSBldm9sdmVkIHRvXG5lbWJvZHkgdGhlIHdvcnN0IG9mIHRoZSBwb3N0LW1vZGVybiB3b3JsZC4gQmFuc2FsIHNhaWQgdGhhdCBzdWJ1cmJhbml0ZXMgaGFkIG9wdGVkIG91dFxub2YgdGhlIHZpYnJhbnQgdXJiYW4gY29tbXVuaXRpZXMgdGhhdCBoZWxkIHNvY2lldHkgdG9nZXRoZXIuIFNoZSBwcmVkaWN0ZWQgdGhhdFxuc3VidXJiYW5pdGVzJyBhbGllbmF0aW9uIGFuZCBib3JlZG9tIHdvdWxkIGV2ZW50dWFsbHkgZ2l2ZSByaXNlIHRvIGFuIGFueGlldHkgZXBpZGVtaWMuXG5UaGlzIGFueGlldHksIHNoZSBmZWx0LCB3b3VsZCBldmVudHVhbGx5IG1ha2Ugc3VidXJiYW5pdGVzIHJldHVybiB0byBjbG9zZXIta25pdCxcbnBzeWNob2xvZ2ljYWxseSBoZWFsdGhpZXIgdXJiYW4gbmVpZ2hib3Job29kcy4gU28gaW4gZmFjdCwgdGhlIHByZWZhYnJpY2F0ZWQgaG91c2VzIGFuZFxubWFuaWN1cmVkIGxhd25zIHRoYXQgZ2F2ZSB0aGUgc3VidXJicyB0aGVpciBpbml0aWFsIGFwcGVhbCB3b3VsZCBldmVudHVhbGx5IGJlIHRoZWlyXG5kb3duZmFsbC4gSW4gMjAwOCwgc3VidXJiYW4gc3ByYXdsIHdhcyBjdXJ0YWlsZWQgYnkgdGhlIGZpbmFuY2lhbCBjcmlzaXMuIEl0IHdhcyB0aGVuIHRoYXRcbkJhbnNhbCB3ZW50IGZyb20gZGlzZGFpbiB0byBkb29tLW1vbmdlcmluZy4gU2hlIGZhbW91c2x5IGRlY2xhcmVkIHRoYXQgdGhlIGRlYXRoIG9mXG50aGUgc3VidXJiIHdhcyBhdCBoYW5kLlxuXG5cblRoaXMgZGlzbWFsIHZpZXcgb2Ygc3VidXJiaWEgd2FzIHVud2FycmFudGVkLCBzYXlzIGRlbW9ncmFwaGVyIExlaWdoIFN0ZXZhbm9pYy4gU2hlXG5tYWludGFpbnMgdGhhdCBmYW1pbGllcyBhbmQgcHJvZmVzc2lvbmFscyBhcmUgZmxvY2tpbmcgdG8gdGhlIHN1YnVyYnNcdTIwMTRlc3BlY2lhbGx5IGluIHRoZVxuZGV2ZWxvcGluZyB3b3JsZCwgd2hlcmUgcmFwaWQgZWNvbm9taWMgZ3Jvd3RoIGhhcyBiZWVuIGFzc29jaWF0ZWQgd2l0aCBkZWNsaW5pbmdcbnVyYmFuIGRlbnNpdHkuIFN0ZXZhbm9pYyBzdWdnZXN0cyB0aGF0IGFzIHBvcHVsYXRpb25zIGdhaW4gaW4gd2VhbHRoLCB0aGV5IGNvbnN1bWUgbW9yZVxuZ29vZHMgYW5kIHRha2UgdXAgbW9yZSBzcGFjZS4gVGhpcyB0cmVuZCwgc2hlIHNheXMsIGlzIHByb29mIHRoYXQgd2UgYXJlIG5vdCB3aXRuZXNzaW5nXG5zdWJ1cmJpYSdzIGRlbWlzZS4gSW5zdGVhZCwgc2hlIGJlbGlldmVzIHdlIGFyZSB3aXRuZXNzaW5nIGhvdyBhIGdyb3dpbmcgZ2xvYmFsIG1pZGRsZVxuY2xhc3MgaXMgYWZmZWN0aW5nIHNldHRsZW1lbnQgcGF0dGVybnMuXG5cblxuU29jaW9sb2dpc3QgYW5kIGJlc3RzZWxsaW5nIGF1dGhvciBNYW51ZWwgUnViaW8gb2JzZXJ2ZXMgdGhhdCBtaWxsaW9ucyBvZiBwZW9wbGUgYXJvdW5kXG50aGUgZ2xvYmUgYXJlIGxpbmluZyB1cCB0byBzd2FwIHVyYmFuIGZyZW56eSBmb3Igc3VidXJiYW4gdHJhbnF1aWxpdHkuIEhvd2V2ZXIsIFJ1YmlvXG5xdWVzdGlvbnMgd2hldGhlciBnbG9iYWwgc3VidXJiaWEgY2FuIHN1cnZpdmUgdGhlIHdhciBvbiBnbG9iYWwgd2FybWluZywgc2luY2UgY2FyXG5jdWx0dXJlIGlzIG9uZSBvZiBzdWJ1cmJpYSdzIG1vc3QgcGVyc2lzdGVudCBmZWF0dXJlcy4gTWVhbndoaWxlLCBpbiB0aGUgZmlyc3Qgd29ybGQsIFJ1YmlvXG5zZWVzIHRoZSB5b3VuZywgdGhlIGJvcmVkLCBhbmQgdGhlIGZydXN0cmF0ZWQgdHVybmluZyB0aGVpciBjb2xsZWN0aXZlIGJhY2tzIG9uIHRoZSB3aGl0ZVxuXGZwaWNrZXQgZmVuY2Ugd29ybGQgdGhleSBzcHJhbmcgZnJvbS4gVG8gUnViaW8sIHRoaXMgc3VnZ2VzdHMgdGhhdCBzdWJ1cmJhbiBsaWZlIHNhdGlzZmllc1xucGVvcGxlIHdobyBhcmUgd2lsbGluZyB0byBzZXR0bGUgZm9yIGxlc3MsIGJ1dCB0aGF0IGl0IGNhbid0IHNhdGlzZnkgdGhlIGFwcGV0aXRlcyBvZiB0aG9zZVxuZWFnZXIgZm9yIG1hdGVyaWFsIHN1Y2Nlc3MuIFBlcmhhcHMgQmFuc2FsJ3MgcHJvcGhlY3kgb2YgbWFzcyBhbnhpZXR5IGlzIGJlaW5nIHJlYWxpemVkIGluXG5hdCBsZWFzdCBzb21lIG9mIHRoZSBwb3B1bGF0aW9uLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IlJlcG9ydCIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjIzMiwidGltZU1pbnV0ZXMiOjQsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyByZXBvcnQuIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAzIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJUaGUgc3BlYWtlciByZWdhcmRzIHRoZSBzdWJ1cmJzIHdpdGgiLCJvcHRpb25zIjpbImRldGFjaG1lbnQuIiwiY3VyaW9zaXR5LiIsImRpc2RhaW4uIiwic2FyY2FzbS4iXSwia2V5IjoyLCJyZWNvbiI6ZmFsc2V9LHsibiI6Miwic3RlbSI6IlRoZSBwcmVzZW50YXRpb24ncyBtYWluIHRoZW1lIGlzIHRoYXQgdGhlIHN1YnVyYnMiLCJvcHRpb25zIjpbImFyZSBzdGlsbCBjb25zaWRlcmVkIHN1aXRhYmxlIHBsYWNlcyB0byByYWlzZSBmYW1pbGllcy4iLCJicmluZyB3aWRlc3ByZWFkIG5ldXJvc2VzIGFuZCBoZW5jZSBhcmUgc2hyaW5raW5nLiIsIm1heSBvciBtYXkgbm90IHN1cnZpdmUgdGhlIGVuZCBvZiB0aGUgZm9zc2lsIGZ1ZWwgZXJhLiIsInJlbWFpbiBwb3B1bGFyIGRlc3BpdGUgdGhlaXIgcHN5Y2hvbG9naWNhbCBkcmF3YmFja3MuIl0sImtleSI6NCwicmVjb24iOmZhbHNlfSx7Im4iOjMsInN0ZW0iOiJCYW5zYWwgdGhvdWdodCBtb3ZpbmcgZnJvbSB0aGUgc3VidXJicyB0byB0aGUgY2l0eSB3YXMiLCJvcHRpb25zIjpbImJvcmluZy4iLCJkYW5nZXJvdXMuIiwicHV6emxpbmcuIiwidGhlcmFwZXV0aWMuIl0sImtleSI6NCwicmVjb24iOmZhbHNlfSx7Im4iOjQsInN0ZW0iOiJXZSBjYW4gdGVsbCB0aGF0IHRoZSBlc3NheWlzdCBOYXJlbmRyYSBCYW5zYWwiLCJvcHRpb25zIjpbImFjY3VyYXRlbHkgZm9yZXNhdyB0aGUgZnV0dXJlLiIsImVuam95ZWQgbGl2aW5nIGluIGEgYmlnIGNpdHkuIiwidGVuZGVkIHRvd2FyZCBwZXNzaW1pc20uIiwid2FzIHRyYWluZWQgYXMgYSBwc3ljaG9sb2dpc3QuIl0sImtleSI6MywicmVjb24iOmZhbHNlfSx7Im4iOjUsInN0ZW0iOiJUaGUgZGVtb2dyYXBoZXIsIExlaWdoIFN0ZXZhbm9pYywgdGhpbmtzIHN1YnVyYmFuaXphdGlvbiBpcyIsIm9wdGlvbnMiOlsiYSBmYXZvdXJhYmxlIGVjb25vbWljIGluZGljYXRvci4iLCJlbmFibGluZyBwZW9wbGUgdG8gZWFybiBtb3JlIG1vbmV5LiIsImEgY3VsdHVyYWwgdHJlbmQgdGhhdCB3aWxsIHNvb24gZGllLiIsImdyb3dpbmcgdG9vIHF1aWNrbHkgaW4gc29tZSBwbGFjZXMuIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjYsInN0ZW0iOiJTb2Npb2xvZ2lzdCBhbmQgYXV0aG9yIE1hbnVlbCBSdWJpbyBtb3N0IGxpa2VseSIsIm9wdGlvbnMiOlsiY29uc2lkZXJzIGhpbXNlbGYgZWFzaWx5IHNhdGlzZmllZC4iLCJkcml2ZXMgYW4gZWZmaWNpZW50IGF1dG9tb2JpbGUuIiwiaGFzIGEgeW91dGhmdWwgdXJiYW4gbGlmZXN0eWxlLiIsInJlc2VudHMgaGlzIGxpZmUgaW4gdGhlIHN1YnVyYnMuIl0sImtleSI6MywicmVjb24iOmZhbHNlfV19XX1dfTsKCnZhciBDRUxQSVBfWVQgPSB7IHZpZGVvSWQ6ICcnIH07ICAvKiBlLmcuICdkUXc0dzlXZ1hjUScgXHUyMDE0IFNldCAyIFRlc3QgMSBmdWxsIGxpc3RlbmluZyB2aWRlbyAqLwp2YXIgQ0xQX0NIQVBURVJTID0geyAnMC4wJzpbMCw1MjBdLCAnMC4xJzpbMCw1MjBdLCAnMC4yJzpbMCw1MjBdLCAnMS4wJzpbNTIwLDg1M10sICcyLjAnOls4NTMsMTI3Ml0sICczLjAnOlsxMjcyLDEzNjRdLCAnNC4wJzpbMTM2NCwxNTAzXSwgJzUuMCc6WzE1MDMsMTc1N10gfTsKCi8qIFRPRE86IHBsYWNlaG9sZGVyIG1hcHBpbmcgXHUyMDE0IHZlcmlmeSBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBDRUxQSVAgc2NvcmUgY2hhcnQuICovCmZ1bmN0aW9uIGNsYkVzdGltYXRlKHJhdyl7CiAgaWYgKHJhdyA+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 5 Practice Test 1: 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-6101","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6101","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=6101"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6101\/revisions"}],"predecessor-version":[{"id":6601,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6101\/revisions\/6601"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}