{"id":6144,"date":"2026-07-06T05:42:45","date_gmt":"2026-07-06T05:42:45","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-6-test-1-listening\/"},"modified":"2026-07-12T03:25:09","modified_gmt":"2026-07-12T03:25:09","slug":"celpip-set-6-test-1-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-6-test-1-listening\/","title":{"rendered":"CELPIP Set 6 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 6 &#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('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczZ0MS1wMXMxLm1wMyIsIjAuMSI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczZ0MS1wMXMyLm1wMyIsIjAuMiI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczZ0MS1wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczZ0MS1wMi5tcDMiLCIyLjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXM2dDEtcDMubXAzIiwiMy4wIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L2NlbHBpcC1zNnQxLXA0Lm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9jZWxwaXAtczZ0MS1wNS5tcDQiLCI1LjAiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvY2VscGlwLXM2dDEtcDYubXAzIn07dmFyIENMUF9BVURJT19WSURFTz17IjQuMCI6MX07CgooZnVuY3Rpb24oKXt2YXIgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3MudGV4dENvbnRlbnQ9IlxuLyogPT09PT09PT09PT09IENFTFBJUCBMaXN0ZW5pbmcgUHJhY3RpY2UgXHUyMDE0IHNjb3BlZCwgV29yZFByZXNzLXNhZmUgPT09PT09PT09PT09ICovXG4uY2xwLXdyYXB7XG4gIC8qIFZBUklBTlRfQ0hST01FX1NUQVJUICovXG4gIC0tYmFyLWJnOiNFOEVCRUY7XG4gIC0tYmFyLWJvcmRlcjojRDNEOUUwO1xuICAtLWJhci10ZXh0OiMxRjI5Mzc7XG4gIC0tcGFuZWwtbWVkaWEtYmc6I0Y0RjVGNztcbiAgLS1wYW5lbC1tZWRpYS1ib3JkZXI6I0UzRTZFQTtcbiAgLS1tZWRpYS1jYXJkLWJnOiNFQ0VFRjE7XG4gIC0tbWVkaWEtY2FyZC1ib3JkZXI6I0Q4RERFMztcbiAgLS1wYW5lbC1xLWJnOiNFOUY0Rjc7XG4gIC0tcGFuZWwtcS1ib3JkZXI6I0Q2RThFRDtcbiAgLS1kZC1vcGVuLWJnOiNDQkVCRjQ7XG4gIC8qIFZBUklBTlRfQ0hST01FX0VORCAqL1xuICAtLW5hdnk6IzA1MEUyMDsgLS1kYXJrOiMwQTE2Mjg7IC0tYjkwMDojMEQyMzUyOyAtLWI3MDA6IzEyNDVBODsgLS1iNTAwOiMyNTYzRUI7XG4gIC0tYjQwMDojM0I4MkY2OyAtLWIyMDA6IzkzQzVGRDsgLS1iMTAwOiNEQkVBRkU7IC0tYjUwOiNFRkY2RkY7XG4gIC0tdGVhbDojMEQ5NDg4OyAtLWN5YW46IzA2QjZENDsgLS1ncmVlbjojMTBCOTgxOyAtLWdyZWVuNTA6I0VDRkRGNTtcbiAgLS1yb3NlOiNGNDNGNUU7IC0tb3JhbmdlOiNGOTczMTY7XG4gIC0tdGV4dDojMEYxNzJBOyAtLW11dGVkOiM0NzU1Njk7IC0tc3VidGxlOiM5NEEzQjg7IC0tYm9yZGVyOiNFMkU4RjA7XG4gIC0tY3JpbXNvbjojQjQyQjNDOyAtLXdoaXRlOiNGRkZGRkY7IC0tcGFnZTojRjhGQUZGO1xuICBmb250LWZhbWlseTonUGx1cyBKYWthcnRhIFNhbnMnLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLHNhbnMtc2VyaWY7XG4gIGNvbG9yOnZhcigtLXRleHQpO1xuICBtYXgtd2lkdGg6MTE0MHB4OyBtYXJnaW46MCBhdXRvOyBwYWRkaW5nOjE2cHggMTZweCA0OHB4O1xuICBsaW5lLWhlaWdodDoxLjU7IGZvbnQtc2l6ZToxNnB4O1xufVxuLmNscC13cmFwICosIC5jbHAtd3JhcCAqOjpiZWZvcmUsIC5jbHAtd3JhcCAqOjphZnRlcnsgYm94LXNpemluZzpib3JkZXItYm94OyB9XG4uY2xwLXdyYXAgYnV0dG9ueyBmb250LWZhbWlseTppbmhlcml0OyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC13cmFwIGgxLC5jbHAtd3JhcCBoMiwuY2xwLXdyYXAgaDMsLmNscC13cmFwIHB7IG1hcmdpbjowOyB9XG5cbi8qID09PT09PT09PT09PSBIRVJPID09PT09PT09PT09PSAqL1xuLmNscC1oZXJve1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgb3ZlcmZsb3c6aGlkZGVuOyBib3JkZXItcmFkaXVzOjIycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbmF2eSk7IGNvbG9yOiNmZmY7XG4gIHBhZGRpbmc6MzZweCA0MHB4O1xuICBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjE0cHg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7XG4gIGJveC1zaGFkb3c6MCAyMHB4IDQwcHggLTIwcHggcmdiYSg1LDE0LDMyLC40NSksIDAgNHB4IDEycHggLTZweCByZ2JhKDUsMTQsMzIsLjMpO1xufVxuLmNscC1hdXJvcmF7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lOyB9XG4uY2xwLWF1cm9yYSBzcGFue1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgYm9yZGVyLXJhZGl1czo1MCU7IGZpbHRlcjpibHVyKDYwcHgpOyBvcGFjaXR5Oi41O1xuICBhbmltYXRpb246Y2xwRmxvYXQgMTRzIGVhc2UtaW4tb3V0IGluZmluaXRlIGFsdGVybmF0ZTtcbn1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDEpeyB3aWR0aDo0MjBweDsgaGVpZ2h0OjQyMHB4OyBsZWZ0Oi0xMjBweDsgdG9wOi0yMDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMxMjQ1QTggMCUsdHJhbnNwYXJlbnQgNzAlKTsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMil7IHdpZHRoOjM4MHB4OyBoZWlnaHQ6MzgwcHg7IHJpZ2h0Oi04MHB4OyB0b3A6LTE2MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzBEOTQ4OCAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LTRzOyB9XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgzKXsgd2lkdGg6MzQwcHg7IGhlaWdodDozNDBweDsgcmlnaHQ6MjIlOyBib3R0b206LTI0MHB4OyBiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUsIzI1NjNFQiAwJSx0cmFuc3BhcmVudCA3MCUpOyBhbmltYXRpb24tZGVsYXk6LThzOyB9XG5Aa2V5ZnJhbWVzIGNscEZsb2F0e1xuICBmcm9teyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwwLDApIHNjYWxlKDEpOyB9XG4gIHRveyB0cmFuc2Zvcm06dHJhbnNsYXRlM2QoNDBweCwyNnB4LDApIHNjYWxlKDEuMTIpOyB9XG59XG4uY2xwLWhlcm8tc2hpbW1lcntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IHBvaW50ZXItZXZlbnRzOm5vbmU7XG4gIGJhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDExNWRlZywgdHJhbnNwYXJlbnQgMzAlLCByZ2JhKDE0NywxOTcsMjUzLC4xMCkgNDUlLCByZ2JhKDYsMTgyLDIxMiwuMTIpIDUwJSwgdHJhbnNwYXJlbnQgNjUlKTtcbiAgYmFja2dyb3VuZC1zaXplOjI1MCUgMTAwJTtcbiAgYW5pbWF0aW9uOmNscFNoaW1tZXIgN3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5Aa2V5ZnJhbWVzIGNscFNoaW1tZXJ7IDAle2JhY2tncm91bmQtcG9zaXRpb246MTIwJSAwO30gNTUle2JhY2tncm91bmQtcG9zaXRpb246LTQwJSAwO30gMTAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IH1cbi5jbHAtaGVyby1iYWRnZXN7IGRpc3BsYXk6ZmxleDsgZ2FwOjEwcHg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWJhZGdlLWJyYW5ke1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMnB4O1xuICBsZXR0ZXItc3BhY2luZzouMTJlbTsgcGFkZGluZzo1cHggMTJweDsgYm9yZGVyLXJhZGl1czo2cHg7XG59XG4uY2xwLWJhZGdlLXNldHsgY29sb3I6dmFyKC0tYjIwMCk7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IH1cbi5jbHAtaGVybyBoMXsgcG9zaXRpb246cmVsYXRpdmU7IGZvbnQtc2l6ZTpjbGFtcCgyNnB4LDR2dyw0MHB4KTsgZm9udC13ZWlnaHQ6ODAwOyBsZXR0ZXItc3BhY2luZzotLjAyZW07IGxpbmUtaGVpZ2h0OjEuMTI7IH1cbi5jbHAtaGVyby1jaGlwc3sgZGlzcGxheTpmbGV4OyBnYXA6OHB4OyBmbGV4LXdyYXA6d3JhcDsgcG9zaXRpb246cmVsYXRpdmU7IH1cbi5jbHAtY2hpcHtcbiAgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wOSk7IGJvcmRlcjoxcHggc29saWQgcmdiYSgxNDcsMTk3LDI1MywuMjUpO1xuICBjb2xvcjojREJFQUZFOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyBwYWRkaW5nOjZweCAxNHB4OyBib3JkZXItcmFkaXVzOjMycHg7XG4gIGJhY2tkcm9wLWZpbHRlcjpibHVyKDRweCk7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYmFja2dyb3VuZCAuMjVzIGVhc2U7XG59XG4uY2xwLWNoaXA6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjE1KTsgfVxuLmNscC1jdGF7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBib3JkZXI6bm9uZTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBmb250LXNpemU6MTZweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjEzcHggMzRweDsgbWFyZ2luLXRvcDoycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDM3LDk5LDIzNSwuNjUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjJzIGVhc2UsIGJveC1zaGFkb3cgLjIycyBlYXNlLCBiYWNrZ3JvdW5kIC4yMnMgZWFzZTtcbn1cbi5jbHAtY3RhOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDp2YXIoLS1iNDAwKTsgYm94LXNoYWRvdzowIDE0cHggMjZweCAtOHB4IHJnYmEoMzcsOTksMjM1LC43NSk7IH1cblxuLyogPT09PT09PT09PT09IFNUSUNLWSBUT09MQkFSID09PT09PT09PT09PSAqL1xuLmNscC10b29sYmFyW2hpZGRlbl17IGRpc3BsYXk6bm9uZTsgfVxuLmNscC10b29sYmFye1xuICBwb3NpdGlvbjpzdGlja3k7IHRvcDo4cHg7IHotaW5kZXg6NjA7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTBweDsgZmxleC13cmFwOndyYXA7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuOTIpOyBiYWNrZHJvcC1maWx0ZXI6Ymx1cig4cHgpO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDtcbiAgcGFkZGluZzo4cHggMTJweDsgbWFyZ2luOjE4cHggMCAwO1xuICBib3gtc2hhZG93OjAgOHB4IDI0cHggLTE0cHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA2cHggLTRweCByZ2JhKDE1LDIzLDQyLC4xMik7XG4gIG1pbi1oZWlnaHQ6NTJweDtcbn1cbi5jbHAtc2NvcmUtY2hpcHtcbiAgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjdweCAxNnB4O1xufVxuLmNscC10YnRue1xuICBib3JkZXItcmFkaXVzOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6OXB4IDE2cHg7XG4gIGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYmFja2dyb3VuZDojZmZmOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG4gIG1pbi1oZWlnaHQ6NDBweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJveC1zaGFkb3cgLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLXRidG46aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0xcHgpOyBib3gtc2hhZG93OjAgNnB4IDE0cHggLThweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC10YnRuLWNoZWNreyBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgYm9yZGVyLWNvbG9yOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgfVxuLmNscC10YnRuLWNoZWNrOmhvdmVyeyBiYWNrZ3JvdW5kOiMwY2E2Nzg7IH1cbi5jbHAtdGJ0bltkaXNhYmxlZF17IG9wYWNpdHk6LjU7IGN1cnNvcjpub3QtYWxsb3dlZDsgdHJhbnNmb3JtOm5vbmU7IGJveC1zaGFkb3c6bm9uZTsgfVxuLmNscC10b29sYmFyLXNwYWNlcnsgZmxleDoxOyB9XG5cbi8qID09PT09PT09PT09PSBDQVQgU0lNVUxBVE9SID09PT09PT09PT09PSAqL1xuLmNscC1zaW17IG1hcmdpbi10b3A6MThweDsgfVxuLmNscC1kb3RzeyBkaXNwbGF5OmZsZXg7IGdhcDo2cHg7IG1hcmdpbjowIDAgMTBweCAycHg7IH1cbi5jbHAtZG90e1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tc3VidGxlKTtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjRweCAxMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjI1cyBlYXNlLCBjb2xvciAuMjVzIGVhc2U7XG59XG4uY2xwLWRvdC5jbHAtZG9uZXsgYmFja2dyb3VuZDp2YXIoLS1iMTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWIyMDApOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuLmNscC1kb3QuY2xwLWN1cnsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyB9XG4uY2xwLWRvdC5jbHAtY2xpY2thYmxleyBjdXJzb3I6cG9pbnRlcjsgfVxuLmNscC1kb3Q6bm90KC5jbHAtY2xpY2thYmxlKXsgY3Vyc29yOmRlZmF1bHQ7IH1cblxuLmNscC1jYXR7XG4gIHBvc2l0aW9uOnJlbGF0aXZlOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJhci1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7IG92ZXJmbG93OnZpc2libGU7XG4gIGJhY2tncm91bmQ6I2ZmZjtcbiAgYm94LXNoYWRvdzowIDEwcHggMzBweCAtMThweCByZ2JhKDE1LDIzLDQyLC4yMiksIDAgMnB4IDhweCAtNXB4IHJnYmEoMTUsMjMsNDIsLjEpO1xufVxuLmNscC1iYXJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTJweDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iYXItYmcpOyBib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTtcbiAgYm9yZGVyLXJhZGl1czoxMHB4IDEwcHggMCAwO1xuICBwYWRkaW5nOjlweCAxMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG59XG4uY2xwLWJhci10aXRsZXsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYmFyLXRleHQpOyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWJhci10aW1lcnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgd2hpdGUtc3BhY2U6bm93cmFwOyB9XG4uY2xwLWJhci10aW1lciBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtbmV4dHtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNzAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6NHB4O1xuICBmb250LXNpemU6MTFweDsgZm9udC13ZWlnaHQ6NzAwOyBsZXR0ZXItc3BhY2luZzouMDhlbTsgdGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuICBwYWRkaW5nOjdweCAxNnB4OyBtaW4taGVpZ2h0OjMwcHg7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZSwgdHJhbnNmb3JtIC4ycyBlYXNlO1xufVxuLmNscC1uZXh0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI5MDApOyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgfVxuLmNscC1zY3JlZW57IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG5cbi5jbHAtaW5zdHJ7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6ZmxleC1zdGFydDsgZ2FwOjlweDtcbiAgcGFkZGluZzoxNHB4IDE2cHggMTJweDsgYmFja2dyb3VuZDojZmZmO1xufVxuLmNscC1pbmZve1xuICBmbGV4Om5vbmU7IHdpZHRoOjE4cHg7IGhlaWdodDoxOHB4OyBtYXJnaW4tdG9wOjJweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjExcHg7IGZvbnQtc3R5bGU6aXRhbGljO1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtZmFtaWx5Okdlb3JnaWEsc2VyaWY7XG59XG4uY2xwLWluc3RyIHB7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLWI5MDApOyB9XG5cbi8qIGludHJvIHNjcmVlbiAqL1xuLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nOjZweCAyMHB4IDI2cHggNDRweDsgYmFja2dyb3VuZDojZmZmOyB9XG4uY2xwLWludHJvLWJvZHkgaDN7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo4MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEycHg7IH1cbi5jbHAtYnVsbGV0c3sgbGlzdC1zdHlsZTpub25lOyBtYXJnaW46MDsgcGFkZGluZzowOyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IG1heC13aWR0aDo2NDBweDsgfVxuLmNscC1idWxsZXRzIGxpe1xuICBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS1iOTAwKTtcbiAgcGFkZGluZy1ib3R0b206MTBweDsgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG59XG4uY2xwLWJ1bGxldHMgbGk6OmJlZm9yZXsgY29udGVudDpcIlwiOyBmbGV4Om5vbmU7IHdpZHRoOjhweDsgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IG1hcmdpbi10b3A6NnB4OyB9XG5cbi8qIG1lZGlhIHNjcmVlbiAqL1xuLmNscC1tZWRpYS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1tZWRpYS1iZyk7IGJvcmRlci10b3A6MXB4IHNvbGlkIHZhcigtLXBhbmVsLW1lZGlhLWJvcmRlcik7XG4gIHBhZGRpbmc6MzRweCAyMHB4IDI2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxNHB4O1xufVxuLmNscC1tZWRpYS1jYXJke1xuICB3aWR0aDoxMDAlOyBtYXgtd2lkdGg6NTIwcHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tbWVkaWEtY2FyZC1iZyk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIHBhZGRpbmc6MjJweCAyNnB4O1xufVxuLmNscC1tZWRpYS1jYXJkLmNscC1pcy12aWRlb3sgbWF4LXdpZHRoOjY2MHB4OyBwYWRkaW5nOjEycHg7IH1cbi5jbHAtbWVkaWEtem9uZXsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxOHB4OyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtem9uZXtcbiAgYXNwZWN0LXJhdGlvOjE2Lzk7IHdpZHRoOjEwMCU7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOnZhcigtLWRhcmspO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgbWFyZ2luLWJvdHRvbToxMnB4O1xuICBjb2xvcjojZmZmO1xufVxuLmNscC1zcGVha2Vye1xuICBmbGV4Om5vbmU7IHdpZHRoOjU2cHg7IGhlaWdodDo1NnB4OyBib3JkZXItcmFkaXVzOjhweDsgYmFja2dyb3VuZDojZmZmO1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGNvbG9yOnZhcigtLW11dGVkKTtcbn1cbi5jbHAtaXMtdmlkZW8gLmNscC1zcGVha2VyeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjEyKTsgYm9yZGVyOm5vbmU7IGNvbG9yOiNmZmY7IHdpZHRoOjY0cHg7IGhlaWdodDo2NHB4OyBib3JkZXItcmFkaXVzOjUwJTsgfVxuLmNscC1tZWRpYS1tYWlueyBmbGV4OjE7IG1pbi13aWR0aDowOyB9XG4uY2xwLWlzLXZpZGVvIC5jbHAtbWVkaWEtbWFpbnsgcGFkZGluZzowIDEwcHggNHB4OyB9XG4uY2xwLW1lZGlhLWxhYmVseyB0ZXh0LWFsaWduOmNlbnRlcjsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1wcm9ncmVzc3sgaGVpZ2h0OjhweDsgYm9yZGVyLXJhZGl1czo2cHg7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7IG92ZXJmbG93OmhpZGRlbjsgfVxuLmNscC1pcy12aWRlbyAuY2xwLXByb2dyZXNzeyBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjYpOyB9XG4uY2xwLXByb2dyZXNzLWZpbGx7IGhlaWdodDoxMDAlOyB3aWR0aDowJTsgYmFja2dyb3VuZDp2YXIoLS1jeWFuKTsgYm9yZGVyLXJhZGl1czo2cHg7IHRyYW5zaXRpb246d2lkdGggLjNzIGxpbmVhcjsgfVxuLmNscC1tZWRpYS1tZXRhe1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZvbnQtc2l6ZToxM3B4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjYwMDtcbn1cbi5jbHAtbWVkaWEtbWV0YSBzdmd7IGRpc3BsYXk6YmxvY2s7IH1cbi5jbHAtb25jZS1ub3RleyBmb250LXNpemU6MTJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgZm9udC13ZWlnaHQ6NjAwOyB9XG5cbi8qIHF1ZXN0aW9uIHNjcmVlbiAqL1xuLmNscC1xLXBhbmVse1xuICBiYWNrZ3JvdW5kOnZhcigtLXBhbmVsLXEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1xLWJvcmRlcik7XG4gIHBhZGRpbmc6MjBweCAyMnB4IDMwcHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MjBweDtcbn1cbi5jbHAtcXsgZm9udC1zaXplOjE1LjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbGluZS1oZWlnaHQ6MjsgfVxuLmNscC1xbnVteyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtZGR7XG4gIGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDtcbiAgYm9yZGVyOm5vbmU7IGJvcmRlci1ib3R0b206MnB4IGRvdHRlZCB2YXIoLS1zdWJ0bGUpOyBiYWNrZ3JvdW5kOnRyYW5zcGFyZW50O1xuICBjb2xvcjp2YXIoLS1iNzAwKTsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDtcbiAgcGFkZGluZzo0cHggOHB4IDNweDsgbWFyZ2luOjAgMnB4OyBtaW4taGVpZ2h0OjMycHg7IG1heC13aWR0aDoxMDAlO1xuICBib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOyB2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC1kZDpob3ZlcnsgYmFja2dyb3VuZDpyZ2JhKDM3LDk5LDIzNSwuMDgpOyB9XG4uY2xwLWRkLmNscC1vcGVueyBiYWNrZ3JvdW5kOnZhcigtLWRkLW9wZW4tYmcpOyB9XG4uY2xwLWRkIC5jbHAtZGQtdGV4dHtcbiAgb3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOyB3aGl0ZS1zcGFjZTpub3dyYXA7IG1heC13aWR0aDo0MjBweDtcbn1cbi5jbHAtZGQgLmNscC1kZC1jYXJldHsgZm9udC1zaXplOjlweDsgY29sb3I6dmFyKC0tYjcwMCk7IGZsZXg6bm9uZTsgfVxuLmNscC1kZC5jbHAtdW5hbnN3ZXJlZCAuY2xwLWRkLXRleHR7IGxldHRlci1zcGFjaW5nOjJweDsgY29sb3I6dmFyKC0tc3VidGxlKTsgfVxuLmNscC1kZC5jbHAtbWFyay1yaWdodHsgYmFja2dyb3VuZDp2YXIoLS1ncmVlbjUwKTsgYm9yZGVyOjJweCBzb2xpZCB2YXIoLS1ncmVlbik7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojMDQ3ODU3OyB9XG4uY2xwLWRkLmNscC1tYXJrLXdyb25neyBiYWNrZ3JvdW5kOiNGRkYxRjI7IGJvcmRlcjoycHggc29saWQgdmFyKC0tcm9zZSk7IGJvcmRlci1yYWRpdXM6NnB4OyBjb2xvcjojQkUxMjNDOyB9XG4uY2xwLWRkW2Rpc2FibGVkXXsgY3Vyc29yOmRlZmF1bHQ7IH1cbi5jbHAtcmV2ZWFse1xuICBkaXNwbGF5OmJsb2NrOyBmb250LXNpemU6MTMuNXB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOiMwNDc4NTc7IGxpbmUtaGVpZ2h0OjEuNTtcbiAgbWFyZ2luOjJweCAwIDAgMjZweDtcbn1cbi5jbHAtcmV2ZWFsIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC10b2RvLXRhZ3tcbiAgZm9udC1zaXplOjEwcHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IGNvbG9yOnZhcigtLW9yYW5nZSk7XG4gIGJvcmRlcjoxcHggc29saWQgY3VycmVudENvbG9yOyBib3JkZXItcmFkaXVzOjRweDsgcGFkZGluZzoxcHggNnB4OyBtYXJnaW4tbGVmdDo4cHg7IHZlcnRpY2FsLWFsaWduOjJweDtcbn1cblxuLyogZHJvcGRvd24gcG9wdXAgKi9cbi5jbHAtcG9we1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDo4MDsgd2lkdGg6bWluKDM0MHB4LCBjYWxjKDEwMHZ3IC0gNDhweCkpO1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBib3gtc2hhZG93OjAgMThweCA0MHB4IC0xMnB4IHJnYmEoMTUsMjMsNDIsLjI4KSwgMCA0cHggMTJweCAtNnB4IHJnYmEoMTUsMjMsNDIsLjE0KTtcbiAgcGFkZGluZzo2cHg7IFxufVxuLmNscC1vcHR7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTFweDsgd2lkdGg6MTAwJTtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHRleHQtYWxpZ246bGVmdDtcbiAgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7XG4gIHBhZGRpbmc6MTBweCAxMnB4OyBtaW4taGVpZ2h0OjQycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xuICBib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgdmFyKC0tYm9yZGVyKTtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZTtcbn1cbi5jbHAtb3B0Omxhc3QtY2hpbGR7IGJvcmRlci1ib3R0b206bm9uZTsgfVxuLmNscC1vcHQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC1yYWRpb3tcbiAgZmxleDpub25lOyB3aWR0aDoxN3B4OyBoZWlnaHQ6MTdweDsgYm9yZGVyLXJhZGl1czo1MCU7XG4gIGJvcmRlcjoycHggc29saWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDojZmZmOyBwb3NpdGlvbjpyZWxhdGl2ZTtcbn1cbi5jbHAtb3B0LmNscC1zZWwgLmNscC1yYWRpb3sgYm9yZGVyLWNvbG9yOnZhcigtLWI1MDApOyB9XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW86OmFmdGVye1xuICBjb250ZW50OlwiXCI7IHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDoyLjVweDsgYm9yZGVyLXJhZGl1czo1MCU7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7XG59XG5cbi8qIHByZS1zdGFydCAvIGZpbmlzaCAqL1xuLmNscC1pZGxle1xuICBwYWRkaW5nOjU2cHggMjRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgYm9yZGVyLXJhZGl1czowIDAgMTBweCAxMHB4O1xufVxuLmNscC1pZGxlIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWF4LXdpZHRoOjQ4MHB4OyBtYXJnaW46MCBhdXRvOyB9XG4uY2xwLWZpbmlzaHsgcGFkZGluZzo0OHB4IDI0cHggNTZweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1maW5pc2ggaDN7IGZvbnQtc2l6ZToyMnB4OyBmb250LXdlaWdodDo4MDA7IG1hcmdpbi1ib3R0b206MTBweDsgfVxuLmNscC1maW5pc2ggcHsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6NjAwOyBtYXJnaW4tYm90dG9tOjIycHg7IH1cbi5jbHAtZmluaXNoLWNoZWNre1xuICBiYWNrZ3JvdW5kOnZhcigtLWdyZWVuKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDMycHg7IG1pbi1oZWlnaHQ6NDRweDtcbiAgYm94LXNoYWRvdzowIDEwcHggMjJweCAtOHB4IHJnYmEoMTYsMTg1LDEyOSwuNTUpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZSwgYmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZmluaXNoLWNoZWNrOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG5cbi8qID09PT09PT09PT09PSBSRVNVTFRTID09PT09PT09PT09PSAqL1xuLmNscC1yZXN1bHRzeyBtYXJnaW4tdG9wOjMwcHg7IH1cbi5jbHAtcmVzdWx0cyBoMnsgZm9udC1zaXplOjI0cHg7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMWVtOyBtYXJnaW4tYm90dG9tOjE2cHg7IH1cbi5jbHAtcmVzLWdyaWR7IGRpc3BsYXk6Z3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOmF1dG8gMWZyOyBnYXA6MTZweDsgYWxpZ24taXRlbXM6c3RyZXRjaDsgfVxuLmNscC1jYXJke1xuICBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBwYWRkaW5nOjIycHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTIwcHggcmdiYSgxNSwyMyw0MiwuMjUpLCAwIDJweCA4cHggLTZweCByZ2JhKDE1LDIzLDQyLC4wOCk7XG4gIHRyYW5zaXRpb246dHJhbnNmb3JtIC4yNXMgZWFzZSwgYm94LXNoYWRvdyAuMjVzIGVhc2U7XG59XG4uY2xwLWNhcmQ6aG92ZXJ7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKC0ycHgpOyBib3gtc2hhZG93OjAgMTZweCAzNnB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjMpOyB9XG4uY2xwLXJpbmctY2FyZHsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjhweDsgbWluLXdpZHRoOjIyMHB4OyB9XG4uY2xwLXJpbmctd3JhcHsgcG9zaXRpb246cmVsYXRpdmU7IHdpZHRoOjEzMnB4OyBoZWlnaHQ6MTMycHg7IH1cbi5jbHAtcmluZy13cmFwIHN2Z3sgdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcpOyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXJpbmctbnVte1xuICBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47XG4gIGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgZm9udC13ZWlnaHQ6ODAwO1xufVxuLmNscC1yaW5nLW51bSBieyBmb250LXNpemU6MjhweDsgbGluZS1oZWlnaHQ6MTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtcmluZy1udW0gc3BhbnsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1yaW5nLWNhcmQgaDN7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjcwMDsgfVxuLmNscC1wYXJ0LWNoaXBzeyBkaXNwbGF5OmZsZXg7IGZsZXgtd3JhcDp3cmFwOyBnYXA6MTBweDsgbWFyZ2luLXRvcDoxMnB4OyB9XG4uY2xwLXBhcnQtY2hpcHtcbiAgYm9yZGVyLXJhZGl1czozMnB4OyBwYWRkaW5nOjhweCAxNnB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGNvbG9yOnZhcigtLWI5MDApO1xufVxuLmNscC1wYXJ0LWNoaXAgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLWNsYi1yb3d7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDsgZmxleC13cmFwOndyYXA7IG1hcmdpbi10b3A6MTZweDtcbiAgcGFkZGluZzoxNHB4IDE2cHg7IGJvcmRlci1yYWRpdXM6MTBweDsgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApO1xufVxuLmNscC1jbGItYmFkZ2V7XG4gIGJhY2tncm91bmQ6dmFyKC0tY3JpbXNvbik7IGNvbG9yOiNmZmY7IGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7XG4gIGJvcmRlci1yYWRpdXM6MTBweDsgcGFkZGluZzo4cHggMTZweDtcbn1cbi5jbHAtY2xiLXJvdyBweyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7IGZsZXg6MTsgbWluLXdpZHRoOjIwMHB4OyB9XG4uY2xwLXRyYW5zY3JpcHRzeyBtYXJnaW4tdG9wOjE2cHg7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBnYXA6MTBweDsgfVxuLmNscC10ci1jYXJkeyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxNnB4OyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtdHItaGVhZHtcbiAgd2lkdGg6MTAwJTsgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuOyBnYXA6MTBweDtcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDsgYm9yZGVyOm5vbmU7IHBhZGRpbmc6MTVweCAyMHB4OyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo3MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtaW4taGVpZ2h0OjQ4cHg7XG59XG4uY2xwLXRyLWhlYWQ6aG92ZXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgfVxuLmNscC10ci1oZWFkIC5jbHAtdHItY2FyZXR7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtc2l6ZToxMXB4OyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMnMgZWFzZTsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItY2FyZXR7IHRyYW5zZm9ybTpyb3RhdGUoMTgwZGVnKTsgfVxuLmNscC10ci1ib2R5eyBkaXNwbGF5Om5vbmU7IHBhZGRpbmc6MCAyMHB4IDE4cHg7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtd2VpZ2h0OjUwMDsgbGluZS1oZWlnaHQ6MS43OyB9XG4uY2xwLXRyLWNhcmQuY2xwLW9wZW4gLmNscC10ci1ib2R5eyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLXRyLXRvZG97IGNvbG9yOnZhcigtLW9yYW5nZSk7IGZvbnQtd2VpZ2h0OjcwMDsgZm9udC1zaXplOjEyLjVweDsgZGlzcGxheTpibG9jazsgbWFyZ2luLXRvcDo4cHg7IH1cblxuLyogc2Nyb2xsIHJldmVhbCAqL1xuLmNscC1yZXZ7IG9wYWNpdHk6MDsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoMTZweCk7IHRyYW5zaXRpb246b3BhY2l0eSAuNXMgZWFzZSwgdHJhbnNmb3JtIC41cyBlYXNlOyB9XG4uY2xwLXJldi5jbHAtaW57IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cblxuLyogPT09PT09PT09PT09IFJFU1BPTlNJVkUgPT09PT09PT09PT09ICovXG5AbWVkaWEgKG1heC13aWR0aDo3MDBweCl7XG4gIC5jbHAtd3JhcHsgcGFkZGluZzoxMHB4IDEwcHggNDBweDsgfVxuICAuY2xwLWhlcm97IHBhZGRpbmc6MjhweCAyMnB4OyBib3JkZXItcmFkaXVzOjE2cHg7IH1cbiAgLmNscC1xeyBmb250LXNpemU6MTVweDsgfVxuICAuY2xwLWRkeyBtaW4taGVpZ2h0OjQwcHg7IH1cbiAgLmNscC1kZCAuY2xwLWRkLXRleHR7IG1heC13aWR0aDoxODBweDsgfVxuICAuY2xwLWJhcnsgZmxleC13cmFwOndyYXA7IH1cbiAgLmNscC1iYXItdGl0bGV7IGZsZXgtYmFzaXM6MTAwJTsgfVxuICAuY2xwLXEtcGFuZWx7IHBhZGRpbmc6MTZweCAxNHB4IDI2cHg7IH1cbiAgLmNscC1pbnRyby1ib2R5eyBwYWRkaW5nLWxlZnQ6MjBweDsgfVxuICAuY2xwLXJlcy1ncmlkeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyOyB9XG4gIC5jbHAtbWVkaWEtY2FyZHsgcGFkZGluZzoxNnB4OyB9XG59XG5AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSl7XG4gIC5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7XG4gICAgYW5pbWF0aW9uOm5vbmUgIWltcG9ydGFudDsgdHJhbnNpdGlvbjpub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgLmNscC1yZXZ7IG9wYWNpdHk6MTsgdHJhbnNmb3JtOm5vbmU7IH1cbn1cblxuLmNscC1hdXJvcmEgc3BhbntmaWx0ZXI6Ymx1cigzNnB4KTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX1cbi5jbHAtaGVyby1zaGltbWVye3dpbGwtY2hhbmdlOmJhY2tncm91bmQtcG9zaXRpb259XG4iO2RvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQocyk7fSkoKTsKCid1c2Ugc3RyaWN0JzsKLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgIFRFU1RfREFUQSBcdTIwMTQgc3dhcCBpbiBuZXcgc2V0cyBoZXJlIHdpdGhvdXQgdG91Y2hpbmcgbWFya3VwLgogICBTaGFwZTogeyBwYXJ0czpbeyBuYW1lLCBoZWFkZXJUaXRsZSwgaW50cm9UaXRsZSwgaW50cm9CdWxsZXRzW10sCiAgICAgICAgICAgIHFJbnN0cnVjdGlvbiwgdHJhbnNjcmlwdCwgc2VjdGlvbnM6W3sgbGFiZWwsIG1lZGlhVHlwZSwKICAgICAgICAgICAgZHVyYXRpb24oc2VjKSwgdGltZU1pbnV0ZXMsIG1lZGlhSW5zdHJ1Y3Rpb24sCiAgICAgICAgICAgIHF1ZXN0aW9uczpbeyBuLCBzdGVtLCBvcHRpb25zWzRdLCBrZXkoMS00KSwgdG9kbz8gfV0gfV0gfV0gfQogICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KdmFyIFRFU1RfREFUQSA9IHsidGVzdExhYmVsIjoiU2V0IDYgXHUyMDEzIFByYWN0aWNlIFRlc3QgMSIsInNldE5vIjo2LCJ0ZXN0Tm8iOjEsInBhcnRzIjpbeyJuYW1lIjoiUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaGVhZGVyVGl0bGUiOiJTZXQgNiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAxOiBMaXN0ZW5pbmcgdG8gUHJvYmxlbSBTb2x2aW5nIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgZmVtYWxlIGN1c3RvbWVyIGFuZCBhIG1hbGUgdGlja2V0IHNlbGxlci4gSXQgaXMgdGFraW5nIHBsYWNlIGluIHRoZSBib3ggb2ZmaWNlIG9mIGEgbG9jYWwgdGhlYXRyZSBjb21wYW55LiIsIkFmdGVyIGVhY2ggc2VjdGlvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiBhIGZlbWFsZSBjdXN0b21lciBhbmQgYSBtYWxlIHRpY2tldCBzZWxsZXIuIEl0IGlzXG50YWtpbmcgcGxhY2UgaW4gdGhlIGJveCBvZmZpY2Ugb2YgYSBsb2NhbCB0aGVhdHJlIGNvbXBhbnkuXG5TZWN0aW9uIDE6XG5NQU46IEhlbGxvLiBNYXkgSSBoZWxwIHlvdT9cbldPTUFOOiBXZWxsLCBJIGhhdmUgYSBwcm9ibGVtIHdpdGggdGhlc2UgdGlja2V0cy4gSSBnb3QgdGhlbSBmb3IgbXkgYmlydGhkYXksIGFuZFxudGhleVx1MjAxOXJlIGZvciB0b21vcnJvdyBldmVuaW5nLCBidXQgSSBjYW5cdTIwMTl0IGNvbWUgdG9tb3Jyb3cuIElzIHRoZXJlIGFueSB3YXkgSSBjYW5cbmV4Y2hhbmdlIHRoZW0\/XG5NQU46IE9mIGNvdXJzZS4gVGhhdFx1MjAxOWxsIG9ubHkgdGFrZSBhIGZldyBtaW51dGVzIC4gLiAuIE9uIHdoaWNoIGRheSB3b3VsZCB5b3UgbGlrZSB0byBzZWVcbnRoZSBzaG93P1xuV09NQU46ICAgICAgIFR1ZXNkYXkgb3IgV2VkbmVzZGF5IG9mIG5leHQgd2VlayB3b3VsZCBiZSBiZXN0LlxuTUFOOiBVbmZvcnR1bmF0ZWx5LCB0aGUgc2hvdyBpc25cdTIwMTl0IGJlaW5nIHBlcmZvcm1lZCBvbiBlaXRoZXIgb2YgdGhvc2UgZGF5cy4gSXQgcGxheXMgdGhlXG5yZXN0IG9mIHRoYXQgd2VlayBhbmQgdGhlbiBpdCBjbG9zZXMuXG5XT01BTjogRGFybiwgdGhhdCBkb2Vzblx1MjAxOXQgd29yayBmb3IgbWUuIFRvbyBiYWQuIE15IGZyaWVuZCBzYXcgdGhlIHNob3cgYSBmZXdcbndlZWtzIGFnbyBhbmQgc2FpZCBpdCB3YXMgYW1hemluZyEgQ291bGQgSSBnZXQgYSByZWZ1bmQgdGhlbj9cbk1BTjogSVx1MjAxOW0gc29ycnksIHdlIGhhdmUgYSBwb2xpY3kgb2Ygbm8gcmVmdW5kcy4gT25seSBleGNoYW5nZXMuXG5XT01BTjogICAgICAgSXNuXHUyMDE5dCB0aGVyZSBhbnl0aGluZyB5b3UgY2FuIGRvP1xuTUFOOiBXZWxsLCBsZXQgbWUgc3BlYWsgdG8gbXkgbWFuYWdlci4gSVx1MjAxOWxsIGJlIHJpZ2h0IGJhY2suXG5XT01BTjogICAgICAgVGhhbmtzLlxuU2VjdGlvbiAyOlxuTUFOOiBTb3JyeSB0aGF0IHRvb2sgc28gbG9uZy4gVW5mb3J0dW5hdGVseSwgbXkgbWFuYWdlciBzYXlzIHdlIGNhblx1MjAxOXQgb2ZmZXIgeW91IGFcbnJlZnVuZC4gQnV0IHlvdSBjYW4gZXhjaGFuZ2UgdGhlc2UgdGlja2V0cyBmb3IgYW5vdGhlciBzaG93IGluIG91ciBzZWFzb24sIHJlZ2FyZGxlc3Mgb2ZcbnRpY2tldCBwcmljZS4gV291bGQgdGhhdCBiZSBvaz9cblxmV09NQU46ICAgICAgICBJIGd1ZXNzIHNvLiBXaGF0IG90aGVyIHNob3dzIGFyZSBwbGF5aW5nIHRoaXMgeWVhcj9cbk1BTjogT3VyIG5leHQgcGxheSBpcyBNYWNCZXRoXHUyMDE0XG5XT01BTjogICAgICAgIChobW0pIEEgdHJhZ2VkeT8gTm8sIEkgd291bGRuXHUyMDE5dCBsaWtlIHRoYXQuXG5NQU46IFdlIGFsc28gaGF2ZSBCbGl0aGUgU3Bpcml0LCB3aGljaCBpcyBhIGNvbWVkeSwgYW5kIEJlYXV0eSBhbmQgdGhlIEJlYXN0LCBhXG5tdXNpY2FsLlxuV09NQU46ICAgICAgICBJIGxvdmUgbXVzaWNhbHMhIElcdTIwMTlkIGxpa2UgdG8gc2VlIHRoYXQgb25lIVxuTUFOOiBPbiB3aGljaCBkYXkgd291bGQgeW91IGxpa2UgdG8gc2VlIHRoZSBzaG93PyBJdCBydW5zIHRoZSBlbnRpcmUgbW9udGggb2ZcbkZlYnJ1YXJ5LlxuV09NQU46ICAgICAgICBJXHUyMDE5bGwgbmVlZCBhIG1pbnV0ZVx1MjAxNHdoeSBkb25cdTIwMTl0IHlvdSBoZWxwIHRoZSBuZXh0IHBlcnNvbiBpbiBsaW5lLlxuU2VjdGlvbiAzOlxuV09NQU46ICAgICAgICBIaSwgSVx1MjAxOW0gYmFjayEgSVx1MjAxOWQgbGlrZSB0aWNrZXRzIGZvciB0aGUgRmVicnVhcnkgNHRoIHBlcmZvcm1hbmNlLlxuTUFOOiBBbHJpZ2h0IC4gLiAuIE5vdyBsZXQgbWUgdHVybiBteSBjb21wdXRlciBzY3JlZW4gYXJvdW5kIHNvIHlvdSBjYW4gc2VlIC4gLiAuIHRoZXJlLlxuVGhpcyBpcyBvdXIgb25saW5lIHNlYXRpbmcgY2hhcnQuIEFsbCBvZiB0aGUgc2VhdHMgaW4gZ3JlZW4gYXJlIGN1cnJlbnRseSBhdmFpbGFibGU7IHRoZSBvbmVzXG5pbiByZWQgYXJlIHRha2VuLiBVbmZvcnR1bmF0ZWx5LCBvdXIgYmFsY29ueSB3aWxsIGJlIGNsb3NlZCBmb3IgcmVub3ZhdGlvbnMgZHVyaW5nXG5GZWJydWFyeS5cbldPTUFOOiBMZXRcdTIwMTlzIHNlZSAuIC4gLiBJXHUyMDE5ZCBsaWtlIHRob3NlIHR3byBpbiB0aGUgZmlmdGggcm93IGluIHRoZSBtaWRkbGUgXHUyMDE0IG5vLCBzb3JyeSwgSVxubWVhbiBhdCB0aGUgZW5kLiBUaGUgdHdvIGF0IHRoZSBlbmQuXG5NQU46IE9rYXkgLiAuIC4gZG9uZSEgTm93LCBqdXN0IGEgcmVtaW5kZXIgdGhhdCB5b3UgYXJlblx1MjAxOXQgYWxsb3dlZCB0byBicmluZyBjYW1lcmFzIGludG9cbnRoZSB0aGVhdHJlLiBGb29kIGFuZCBkcmluayBhcmUgYWxzbyBwcm9oaWJpdGVkLCBidXQgY2FuIGJlIGVuam95ZWQgb3V0c2lkZSBpbiB0aGUgbG9iYnkuXG5DZWxsIHBob25lcyBhcmUgYWxsb3dlZCBidXQgbXVzdCBiZSB0dXJuZWQgb2ZmLiBBbnl0aGluZyBlbHNlIEkgY2FuIGRvIGZvciB5b3U\/XG5XT01BTjogQWN0dWFsbHksIG5vdyB0aGF0IEkgdGhpbmsgb2YgaXQsIElcdTIwMTlkIGxpa2UgdG8gZ2V0IGEgdGhpcmQgdGlja2V0IGZvciB0aGUgc2FtZVxucGVyZm9ybWFuY2UuIE15IGRhdWdodGVyIHdvdWxkIGxvdmUgdG8gc2VlIGl0LlxuTUFOOiBObyBwcm9ibGVtIC4gLiAuIHRoYXRcdTIwMTlsbCBiZSBzaXh0eS1laWdodCBkb2xsYXJzLCB0aGVuLlxuV09NQU46ICAgICAgICBIZXJlIHlvdSBnby5cbk1BTjogVGhhbmtzISBFbmpveSB0aGUgc2hvdyEiLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMSIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjQ3LCJ0aW1lTWludXRlcyI6MiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2h5IGlzIHRoZSB3b21hbiBzcGVha2luZyB0byB0aGUgdGlja2V0IHNlbGxlcj8iLCJvcHRpb25zIjpbIlNoZSBsb3N0IGhlciB0aWNrZXRzLiIsIlNoZSB3YW50cyB0byBidXkgbW9yZSB0aWNrZXRzLiIsIlNoZSBpcyB1bmFibGUgdG8gdXNlIGhlciB0aWNrZXQuIiwiU2hlIGhhcyBhIGNvbXBsYWludCBhYm91dCB0aGUgc2VhdGluZy4iXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiV2hhdCBpcyBtb3N0IGxpa2VseSB0cnVlIGFib3V0IHRoZSBzaG93PyIsIm9wdGlvbnMiOlsiSXQgaXMgYSBicmFuZCBuZXcgcHJvZHVjdGlvbi4iLCJJdCBoYXMganVzdCBvcGVuZWQgdGhpcyB3ZWVrLiIsIkl0IGhhcyByZWNlaXZlZCBwb29yIHJldmlld3MuIiwiSXQgaGFzIGJlZW4gcGxheWluZyBmb3Igc2V2ZXJhbCB3ZWVrcy4iXSwia2V5Ijo0LCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2h5IGRvZXMgdGhlIG1hbiBnbyBzcGVhayB3aXRoIGhpcyBtYW5hZ2VyPyIsIm9wdGlvbnMiOlsidG8gYXNrIHBlcm1pc3Npb24gdG8gZ2l2ZSBhIHJlZnVuZCIsInRvIGNoZWNrIHRpY2tldCBhdmFpbGFiaWxpdHkiLCJ0byByZXBvcnQgYSBjb21wbGFpbnQiLCJ0byBjb25maXJtIHRoZSBzaG93IHNjaGVkdWxlIl0sImtleSI6MSwicmVjb24iOnRydWV9XX0seyJsYWJlbCI6IkNvbnZlcnNhdGlvbiBcdTIwMTQgU2VjdGlvbiAyIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6MzksInRpbWVNaW51dGVzIjoyLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBuZXh0IHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjo0LCJzdGVtIjoiV2h5IGRvZXMgdGhlIG1hbiBnaXZlIHRoZSBuYW1lcyBvZiBzZXZlcmFsIHNob3dzPyIsIm9wdGlvbnMiOlsidG8gcmVjb21tZW5kIGhpcyBmYXZvdXJpdGUgc2hvdyIsInRvIGV4cGxhaW4gdGlja2V0IHByaWNlcyIsInRvIHRlbGwgd2hhdCBpcyBwbGF5aW5nIHRoYXQgc2Vhc29uIiwidG8gYXBvbG9naXplIGZvciB0aGUgZGVsYXkiXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiV2h5IGRvZXMgdGhlIHdvbWFuIG5lZWQgYSBtaW51dGU\/Iiwib3B0aW9ucyI6WyJ0byBmaW5kIGhlciB3YWxsZXQiLCJ0byBmaWd1cmUgb3V0IHdoZW4gc2hlJ2QgbGlrZSB0byBzZWUgdGhlIHNob3ciLCJ0byBjYWxsIGhlciBkYXVnaHRlciIsInRvIHJlYWQgdGhlIHNob3cgcmV2aWV3cyJdLCJrZXkiOjIsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMyIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjU5LCJ0aW1lTWludXRlcyI6MiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZmluYWwgcGFydCBvZiB0aGUgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJxdWVzdGlvbnMiOlt7Im4iOjYsInN0ZW0iOiJXaGVyZSBkb2VzIHRoZSB3b21hbiBjaG9vc2UgdG8gc2l0PyIsIm9wdGlvbnMiOlsiaW4gdGhlIGJhbGNvbnkiLCJpbiB0aGUgZnJvbnQgcm93IiwibmVhciB0aGUgZXhpdCIsImluIHRoZSBncmVlbiBzZWN0aW9uIl0sImtleSI6NCwicmVjb24iOnRydWV9LHsibiI6Nywic3RlbSI6IldoYXQgY2FuIHRoZSB3b21hbiBicmluZyBpbnRvIHRoZSB0aGVhdHJlPyIsIm9wdGlvbnMiOlsiYSBjYW1lcmEiLCJmb29kIGFuZCBkcmluayIsImNlbGwgcGhvbmVzIiwiYSBwZXJzb25hbCByZWNvcmRlciJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjgsInN0ZW0iOiJXaGF0IGlzIHRoZSB3b21hbiBsaWtlbHkgdG8gZG8gbmV4dD8iLCJvcHRpb25zIjpbInJldHVybiB0aGUgZXh0cmEgdGlja2V0IiwiYXNrIGZvciBhIHJlZnVuZCBhZ2FpbiIsImNvbXBsYWluIHRvIHRoZSBtYW5hZ2VyIiwidGVsbCBoZXIgZGF1Z2h0ZXIgYWJvdXQgdGhlIHNob3ciXSwia2V5Ijo0LCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgMjogTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCA2IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiBhIGh1c2JhbmQgYW5kIHdpZmUuIFRoZXkgaGF2ZSBndWVzdHMgY29taW5nIG92ZXIgZm9yIGRpbm5lciB0b25pZ2h0LiIsIkFmdGVyIHRoZSBjb252ZXJzYXRpb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbi4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBhbnN3ZXIgZWFjaCBxdWVzdGlvbiBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gYSBodXNiYW5kIGFuZCB3aWZlLiBUaGV5IGhhdmUgZ3Vlc3RzIGNvbWluZyBvdmVyXG5mb3IgZGlubmVyIHRvbmlnaHQuXG5cblxuTUFOOiBIZXkgaG9uZXksIEknbSBiYWNrISBUaGUgd2luZSB3YXMgb24gc2FsZSwgc28gSSBib3VnaHQgdHdvIGJvdHRsZXMgaW5zdGVhZCBvZlxub25lLiBIb3cncyB0aGUgcGl6emEgY29taW5nP1xuV09NQU46IEkganVzdCBydWluZWQgaXQhIEkgcHV0IHRoZSBvdmVuIHRlbXBlcmF0dXJlIHdheSB0b28gaGlnaCBieSBhY2NpZGVudC4gVGhlXG5jcnVzdCBpcyBhbGwgYmxhY2sgYW5kIGJ1cm50ISBJdCdzIHRvdGFsbHkgaW5lZGlibGUhIEFuZCBKdWR5IGFuZCBQYXVsIGFyZSBzdXBwb3NlZCB0byBhcnJpdmVcbmFueSBtaW51dGUgbm93IVxuTUFOOiBEb25cdTIwMTl0IHdvcnJ5LCBpdCdzIG5vdCB0aGUgZW5kIG9mIHRoZSB3b3JsZCEgRG8gd2UgaGF2ZSBhbnl0aGluZyBlbHNlIHRvIHByZXBhcmUgZm9yXG5kaW5uZXI\/IElzIHRoZXJlIGFueSBwaXp6YSBkb3VnaCBsZWZ0PyBNYXliZSB3ZSBjb3VsZCBtYWtlIHRoZSBwaXp6YSBhZ2Fpbi5cbldPTUFOOiBJIHVzZWQgdXAgYWxsIHRoZSBkb3VnaC4gVGhlcmUncyBubyBtb3JlIHRvbWF0byBzYXVjZSBvciBjaGVlc2UgZWl0aGVyLiBBbGxcbndlIGhhdmUgaXMgc2FsYWQsIGFuZCBhIHdob2xlIGZyb3plbiBjaGlja2VuLCBidXQgdGhhdCB3b24ndCB0aGF3IGZhc3QgZW5vdWdoLlxuTUFOOiBXZWxsLCB3ZSBjb3VsZCBhbHdheXMgZ28gb3V0IGZvciBwaXp6YSEgVGhlcmUncyB0aGF0IHBsYWNlIGEgZmV3IGJsb2NrcyBkb3duIHRoZVxucm9hZCwgR29sZGVuIFBpenphIEhvdXNlLlxuV09NQU46IFVnaCwgbm90IHRoYXQgcGxhY2UuIFdlIHdlbnQgdGhlcmUgYmVmb3JlLCByZW1lbWJlcj8gVGhlIHBpenphIHdhcyBzb2dneVxuYW5kIHRoZSBzYXVjZSB3YXMgdG9vIHNhbHR5LlxuTUFOOiBZZWFoLCB5b3UncmUgcmlnaHQuIEl0IHdhc24ndCB2ZXJ5IGdvb2QuIFdlbGwsIHRoZXJlIGFyZW4ndCB0aGF0IG1hbnkgb3RoZXJcbnJlc3RhdXJhbnRzIGFyb3VuZCBoZXJlLCBleGNlcHQgZm9yIHN1c2hpLiBCdXQgd2UgaGF2ZSBjaG9jb2xhdGUgY2hlZXNlY2FrZSBmb3IgZGVzc2VydC5cbkNoZWVzZWNha2UgZG9lc24ndCByZWFsbHkgZ28gdmVyeSB3ZWxsIHdpdGggc3VzaGkuIEhtbSAuIC4gLiBXZSBzdGlsbCBoYXZlIHZlZ2V0YWJsZXMsXG5yaWdodD9cbldPTUFOOiAgICAgICAgWWVhaCwgdGhlcmUgYXJlIHBsZW50eSBvZiB2ZWdldGFibGVzLiBJc24ndCB0aGF0IGEgYml0IGJvcmluZywgdGhvdWdoP1xuTUFOOiBJdFx1MjAxOWxsIGJlIGZpbmUuIEp1ZHkgdXNlZCB0byBiZSBhIHZlZ2V0YXJpYW4gd2hlbiBJIGZpcnN0IG1ldCBoZXIgaW4gY29sbGVnZS4gSW4gZmFjdCxcbnNoZSB0YXVnaHQgbWUgaG93IHRvIGNvb2sgcXVpdGUgYSBmZXcgZGlzaGVzISBBbGwgSSBldmVyIGF0ZSB3YXMgYmVlZiBwYXN0YSBhbmQgY2FubmVkXG5zb3VwIGJlZm9yZSB3ZSBiZWNhbWUgZnJpZW5kcy4gQW55d2F5cywgbGV0J3Mgc2VlLiBXZSBjYW4gbWFrZSBzdHVmZmVkIHp1Y2NoaW5pLCBhbmRcbmNyZWFtIG9mIG11c2hyb29tIHNvdXAuIFRoYXQgd2lsbCBnbyBuaWNlbHkgd2l0aCBkZXNzZXJ0IVxuV09NQU46IFJlYWxseT8gWW91J3JlIHN1Y2ggYSBnb29kIGNvb2sgbm93ISBJIGJldCB5b3Ugd291bGRuJ3QgaGF2ZSBidXJudCB0aGVcbnBpenphLiBCdXQgeW91XHUyMDE5cmUgcmlnaHQsIGxldFx1MjAxOXMgbWFrZSB0aGUgYmVzdCBvZiBpdC4gU3R1ZmZlZCB6dWNjaGluaSBzb3VuZHMgeXVtbXkhIEFuZFxud2Ugc3RpbGwgaGF2ZSB0aGUgc2FsYWQsIHRvbyFcblxmTUFOOiBFeGFjdGx5LiBBbmQgd2UgaGF2ZSB0d28gYm90dGxlcyBvZiB3aW5lLiBTZWU\/IERpbm5lciBpc24ndCBydWluZWQuIEl0J3MgZ29pbmcgdG9cbmJlIGRlbGljaW91cyEgTGV0J3Mgc3RhcnQgb24gdGhlIHZlZ2V0YWJsZXMsIGJlZm9yZSBKdWR5IGFuZCBQYXVsIGdldCBoZXJlLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjEyNSwidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAyIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJXaHkgaXMgdGhlIHdvbWFuIHRyb3VibGVkPyIsIm9wdGlvbnMiOlsiYmVjYXVzZSB0aGUgZ3Vlc3RzIGNhbmNlbGxlZCIsImJlY2F1c2UgZGlubmVyIGRpZG4ndCB0dXJuIG91dCBhcyBleHBlY3RlZCIsImJlY2F1c2UgdGhlIHdpbmUgc3BpbGxlZCIsImJlY2F1c2UgdGhlIG92ZW4gYnJva2UgZG93biJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaGF0IGlzIHRoZSBtYW4ncyBmaXJzdCBzdWdnZXN0aW9uPyIsIm9wdGlvbnMiOlsiT3JkZXIgcGl6emEgZGVsaXZlcnkuIiwiR28gdG8gYSByZXN0YXVyYW50LiIsIk1ha2UgYW5vdGhlciBwaXp6YS4iLCJTZXJ2ZSBqdXN0IHRoZSBzYWxhZC4iXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjozLCJzdGVtIjoiV2h5IGRpZCB0aGV5IGRlY2lkZSBhZ2FpbnN0IEdvbGRlbiBQaXp6YSBIb3VzZT8iLCJvcHRpb25zIjpbIkl0IGlzIHRvbyBmYXIgYXdheS4iLCJJdCBpcyB0b28gZXhwZW5zaXZlLiIsIkl0IGlzIGNsb3NlZCB0b25pZ2h0LiIsImJlY2F1c2UgdGhlIGZvb2Qgd2Fzbid0IGdvb2QiXSwia2V5Ijo0LCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2hhdCBkbyB0aGUgY291cGxlIGRlY2lkZSB0byBkbz8iLCJvcHRpb25zIjpbIm9yZGVyIHN1c2hpIGluc3RlYWQiLCJhc2sgdGhlIGd1ZXN0cyB0byBicmluZyBmb29kIiwiQ29vayBhIHZlZ2V0YXJpYW4gbWVhbC4iLCJjYW5jZWwgZGlubmVyIGFsdG9nZXRoZXIiXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiSG93IGRpZCB0aGUgbWFuIG1lZXQgb25lIG9mIHRoZSBndWVzdHM\/Iiwib3B0aW9ucyI6WyJ0aHJvdWdoIGhpcyBqb2IiLCJ0aHJvdWdoIGhpcyB3aWZlJ3MgZmFtaWx5IiwiYXQgYSBjb29raW5nIGNsYXNzIiwiVGhleSB3ZW50IHRvIGNvbGxlZ2UgdG9nZXRoZXIuIl0sImtleSI6NCwicmVjb24iOnRydWV9XX1dfSx7Im5hbWUiOiJQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCA2IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDM6IExpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIGZvciBJbmZvcm1hdGlvbiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIGJldHdlZW4gYSBtYW4gYW5kIGEgd29tYW4uIFRoZSB3b21hbiBpcyBsb29raW5nIGZvciB2b2x1bnRlZXIgd29yay4iLCJBZnRlciB0aGUgY29udmVyc2F0aW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdvbWFuLiBUaGUgd29tYW4gaXMgbG9va2luZyBmb3JcbnZvbHVudGVlciB3b3JrLlxuXG5cbk1BTjogSGVsbG8sIEp1aWN5IEFwcGxlIE9yY2hhcmRzLCB0aGlzIGlzIE1pY2hhZWwgc3BlYWtpbmchIEhvdyBtYXkgSSBoZWxwIHlvdT9cbldPTUFOOiBIaSB0aGVyZSEgTXkgbmFtZSBpcyBBbm5hIEhvd2FyZC4gSVx1MjAxOXZlIGJlZW4gYmFja3BhY2tpbmcgaW4gQ2FuYWRhIGZvclxudGhlIHBhc3QgdGhyZWUgbW9udGhzLCBhbmQgSSByZWFsbHkgd2FudGVkIHRvIGV4cGVyaWVuY2Ugd29ya2luZyBvbiBhbiBvcmdhbmljIGZhcm0gdGhpc1xuc3VtbWVyISBJIG1ldCBhbm90aGVyIHRyYXZlbGVyIHdobyB0b2xkIG1lIGFib3V0IHlvdXIgZmFybSBhbmQgdGhhdCB5b3UgdGFrZVxudm9sdW50ZWVycy4gSXMgdGhhdCByaWdodD9cbk1BTjogVGhhdFx1MjAxOXMgcmlnaHQhIFdlXHUyMDE5dmUgYmVlbiBvZmZlcmluZyBmcmVlIGFjY29tbW9kYXRpb24gYW5kIGZvb2QgaW4gZXhjaGFuZ2UgZm9yXG5mcnVpdCBwaWNraW5nIGZvciB0aGUgbGFzdCB0ZW4geWVhcnMhIEl0XHUyMDE5cyBhIGdyZWF0IHdheSB0byBoYXZlIGZ1biwgZXhwZXJpZW5jZSB3aGF0IGxpZmUgaXNcbmxpa2UgaW4gdGhlIENhbmFkaWFuIGNvdW50cnlzaWRlLCBhbmQgbWVldCBhbWF6aW5nIHBlb3BsZSBmcm9tIGFyb3VuZCB0aGUgd29ybGQuXG5XT01BTjogSSB3b3VsZCBsb3ZlIHRvIGRvIHRoYXQhIEhvdyBtYW55IGhvdXJzIGEgd2VlayBpcyBpdCwgYW5kIHdoYXQgYXJlIHRoZVxuZHV0aWVzIHRvIGJlIGRvbmU\/XG5NQU46IFdlIGFzayBvdXIgdm9sdW50ZWVycyB0byB3b3JrIDQgdG8gNSBob3VycyBhIGRheSwgYW5kIHdlIHNjaGVkdWxlIHJvdGF0aW5nIHNoaWZ0c1xuZm9yIHBlb3BsZS4gQXMgd2VcdTIwMTlyZSBwcmltYXJpbHkgYW4gb3JjaGFyZCwgZXZlcnkgc2hpZnQgd2lsbCBpbnZvbHZlIGFwcGxlIHBpY2tpbmcuIFRoZVxuZWFybHkgbW9ybmluZyBzaGlmdCB3b3JrZXJzIGFsc28gZmVlZCB0aGUgY2hpY2tlbnMsIHRoZSBub29uIHdvcmtlcnMgYWxzbyB0dXJuIHRoZVxuY29tcG9zdCwgYW5kIHRoZSBldmVuaW5nIHdvcmtlcnMgYWxzbyBmZWVkIHRoZSBnb2F0cyFcbldPTUFOOiAgICAgICAgVGhhdCBzb3VuZHMgcmVhbGx5IGZ1biEgU28gaG93IGRvIEkgc3RhcnQ\/XG5cZk1BTjogWW91IGNvdWxkIHN0YXJ0IGFueXRpbWUhIFdlXHUyMDE5dmUgZ290IHF1aXRlIGEgZmV3IHZvbHVudGVlcnMgcmlnaHQgbm93LiBTdGlsbCwgdGhlcmVcbmFyZSBmaXZlIHJvb21zIGxlZnQgaW4gb3VyIHZvbHVudGVlciBndWVzdCBob3VzZSEgQnV0IEkgaGF2ZSB0byBhc2sgeW91IGZpcnN0LCBhcmUgeW91IG92ZXJcbnRoZSBhZ2Ugb2YgMTgsIGFuZCBhcmUgeW91IGEgQ2FuYWRpYW4gcmVzaWRlbnQ\/XG5XT01BTjogSVx1MjAxOW0gMjMsIGFuZCBJXHUyMDE5bSBmcm9tIHRoZSBTdGF0ZXMuIElcdTIwMTltIG9uIGEgaG9saWRheSB2aXNhLiBJcyB0aGF0IGFjY2VwdGFibGUsIG9yXG5kbyBJIG5lZWQgYSB3b3JraW5nIHZpc2E\/XG5NQU46IEdyZWF0ISBObywgeW91IGRvblx1MjAxOXQgbmVlZCBhIHdvcmtpbmcgdmlzYSB0byB2b2x1bnRlZXIgb24gQ2FuYWRpYW4gZmFybXMgYXMgbG9uZ1xuYXMgeW91IGRvblx1MjAxOXQgc3RheSBsb25nZXIgdGhhbiBmb3VyIHdlZWtzLlxuV09NQU46IFRoYXQgd29ya3MgcGVyZmVjdGx5LCBhcyBJXHUyMDE5bSBnb2luZyBiYWNrIGhvbWUgaW4gdGhyZWUgd2Vla3MgYW55d2F5cyFcbllvdXIgZmFybSBpcyBpbiBQZWFjaGxhbmQsIHJpZ2h0PyBJXHUyMDE5bSBpbiBDYXN0bGVnYXIgcmlnaHQgbm93LCB2aXNpdGluZyBhIGZyaWVuZC4gSXRcdTIwMTlzXG5UdWVzZGF5IHRvZGF5IC4gLiAuIHdvdWxkIEkgYmUgYWJsZSB0byBhcnJpdmUgb24gRnJpZGF5P1xuTUFOOiBZZXMsIHdlXHUyMDE5cmUgaW4gUGVhY2hsYW5kISBGcmlkYXkgc291bmRzIGdvb2QhIFdlXHUyMDE5bGwgcHJlcGFyZSBhIHJvb20gZm9yIHlvdS4gU2VlXG55b3UgdGhlbiEiLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24iLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjoxMzUsInRpbWVNaW51dGVzIjozLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMiBtaW51dGVzIGxvbmcuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2hlcmUgZG9lcyB0aGUgd29tYW4gd2FudCB0byB2b2x1bnRlZXI\/Iiwib3B0aW9ucyI6WyJhdCBhIGNpdHkgY29tbXVuaXR5IGNlbnRyZSIsIm9uIGFuIG9yZ2FuaWMgZnJ1aXQgZmFybS4iLCJhdCBhIHdpbGRsaWZlIHNhbmN0dWFyeSIsImluIGEgc2Nob29sIGdhcmRlbiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIG1hbiBvZmZlciB0aGUgd29tYW4\/Iiwib3B0aW9ucyI6WyJhIHBhaWQgc2Vhc29uYWwgam9iIiwiZnJlZSB0cmF2ZWwgdG8gdGhlIGZhcm0iLCJ0cmFpbmluZyBjZXJ0aWZpY2F0aW9uIiwibWVhbHMgYW5kIGEgcGxhY2UgdG8gc2xlZXAuIl0sImtleSI6NCwicmVjb24iOnRydWV9LHsibiI6Mywic3RlbSI6IldoeSBpcyB0aGUgd29tYW4gaW4gQ2FuYWRhPyIsIm9wdGlvbnMiOlsiU2hlIGlzIHN0dWR5aW5nIGF0IHVuaXZlcnNpdHkuIiwiU2hlIGlzIHRyYXZlbGxpbmcgYW5kIHZpc2l0aW5nIGZyaWVuZHMuIiwiU2hlIGlzIHdvcmtpbmcgYSBmdWxsLXRpbWUgam9iLiIsIlNoZSBpbW1pZ3JhdGVkIGxhc3QgeWVhci4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2hhdCB0aW1lIHdpbGwgdGhlIHdvbWFuIHN0YXJ0IHdvcmsgZWFjaCBkYXk\/Iiwib3B0aW9ucyI6WyJhbHdheXMgZWFybHkgaW4gdGhlIG1vcm5pbmciLCJvbmx5IGluIHRoZSBldmVuaW5ncyIsImF0IGV4YWN0bHkgbm9vbiBldmVyeSBkYXkiLCJTaGUgd2lsbCBzdGFydCB3b3JrIGF0IGRpZmZlcmVudCB0aW1lcy4iXSwia2V5Ijo0LCJyZWNvbiI6dHJ1ZX0seyJuIjo1LCJzdGVtIjoiV2hlcmUgZG9lcyB0aGUgd29tYW4gY29tZSBmcm9tPyIsIm9wdGlvbnMiOlsiQ2FuYWRhIiwidGhlIFVuaXRlZCBTdGF0ZXMuIiwidGhlIFVuaXRlZCBLaW5nZG9tIiwiQXVzdHJhbGlhIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6Niwic3RlbSI6IldoeSBkb2VzIHRoZSB3b21hbiB3YW50IHRvIHZvbHVudGVlcj8iLCJvcHRpb25zIjpbInRvIGVhcm4gZXh0cmEgbW9uZXkiLCJ0byBmdWxmaWxsIGEgc2Nob29sIHJlcXVpcmVtZW50IiwidG8gZ2FpbiB3b3JrIGV4cGVyaWVuY2UgZm9yIGhlciByZXN1bWUiLCJTaGUgdGhpbmtzIGl0IHdpbGwgYmUgYSBmdW4gZXhwZXJpZW5jZS4iXSwia2V5Ijo0LCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgNDogTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaGVhZGVyVGl0bGUiOiJTZXQgNiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIHRvIGEgTmV3cyBJdGVtIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBuZXdzIGl0ZW0gYWJvdXQgYSBiZWFyIHByb2JsZW0uIiwiQWZ0ZXIgdGhlIG5ld3MgaXRlbSwgY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgdXNpbmcgdGhlIGRyb3AtZG93biBtZW51LiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IlJlc2lkZW50cyBsaXZpbmcgb24gdGhlIG91dHNraXJ0cyBvZiBDaGFwZWwgSGlsbCBhcmUgYmVpbmcgYXNrZWQgdG8gcHV0IGEgdGlnaHQgbGlkIG9uIHRoZWlyXG5nYXJiYWdlIGJlY2F1c2Ugb2YgYW4gaW5jcmVhc2UgaW4gYmxhY2sgYmVhciBzaWdodGluZ3MuIFBhcmtzIGFuZCBXaWxkbGlmZSBPZmZpY2lhbCwgR2FyeVxuSGFtcHRvbiwgZXhwbGFpbmVkIHRoYXQgdGhlIHJlY2VudCBoZWF0IHdhdmUgaGFzIGRyaWVkIHVwIHNldmVyYWwgb2YgdGhlIGJsYWNrIGJlYXJzXHUyMDE5XG5uYXR1cmFsIGZvb2Qgc291cmNlcywgc3VjaCBhcyBiZXJyeSBidXNoZXMgYW5kIGZpc2hpbmcgc3RyZWFtcywgZm9yY2luZyB0aGUgYmVhcnMgdG8gc2Vla1xuZm9vZCBuZWFyIHVyYmFuIGFyZWFzLiBIYW1wdG9uIHdhcm5zIHJlc2lkZW50cyBvZiBDaGFwZWwgSGlsbCB0aGF0LCBcdTIwMWNHYXJiYWdlIHByb3ZpZGVzIGFcbnZhcmlldHkgb2YgYXBwZXRpemluZyBmb29kcyBmb3IgYSBodW5ncnkgYmVhciBhbmQgdGhlIGJlc3Qgd2F5IHRvIGF2b2lkIHByb2JsZW1zIHdpdGhcblxmYmVhcnMgaW4gdGhlIGJhY2t5YXJkIGlzIHRvIGtlZXAgZ2FyYmFnZSBjYW5zIGluIHRoZSBnYXJhZ2Ugb3IgdGhlIGhvdXNlIHVudGlsIHRoZXkgY2FuIGJlXG5jb2xsZWN0ZWQgYnkgY2l0eSB3b3JrZXJzLlx1MjAxZCBBIGxvY2FsIHJlc2lkZW50LCBTYW5kcmEgTmVsc29uLCBjb21wbGFpbnMgdGhhdCBrZWVwaW5nIGhlclxuZ2FyYmFnZSBpbiB0aGUgaG91c2UgaXMgbm90IGFuIGFjY2VwdGFibGUgc29sdXRpb24uIFlldCwgd2hhdCBzbWVsbHMgYmFkIHRvIG1vc3QgcGVvcGxlXG5jYW4gYmUgdmVyeSBhcHBldGl6aW5nIHRvIGEgaHVuZ3J5IGJlYXIuIFRoZSBhcm9tYSBvZiBnYXJiYWdlIGNhbiBhdHRyYWN0IGJlYXJzIGZyb20gZmFyXG5hd2F5LiBTbywgaWYgcmVzaWRlbnRzIG11c3QgcHV0IHRoZWlyIGdhcmJhZ2Ugb3V0c2lkZSwgSGFtcHRvbiBhZHZpc2VzIHRoZW0gdG8gcHVyY2hhc2VcbmFuaW1hbC1wcm9vZiBnYXJiYWdlIGNhbnMuIFRoZXNlIGNhbnMgaGF2ZSBsaWRzIHRoYXQgYXJlIGRpZmZpY3VsdCBmb3IgYW5pbWFscyB0byByZW1vdmUuXG5Ob3Qgb25seSBkbyB0aGUgY2FucyBrZWVwIGFuaW1hbHMgYXdheSBmcm9tIHRoZSBnYXJiYWdlLCBidXQgdGhleSBhbHNvIGtlZXAgdGhlIGdhcmJhZ2VcbnNtZWxscyBmcm9tIGF0dHJhY3RpbmcgdGhlIGFuaW1hbHMuIiwic2VjdGlvbnMiOlt7ImxhYmVsIjoiTmV3cyBJdGVtIiwibWVkaWFUeXBlIjoiYXVkaW8iLCJkdXJhdGlvbiI6NzYsInRpbWVNaW51dGVzIjozLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgbmV3cyBpdGVtLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJCbGFjayBiZWFycyBhcmUiLCJvcHRpb25zIjpbImRpc3J1cHRpbmcgdHJhZmZpYyBpbiB0b3duLiIsInRocmVhdGVuaW5nIHBlb3BsZSBpbiBwYXJrcy4iLCJiZWluZyBzZWVuIGNsb3NlciB0byB0b3duLiIsImhpZGluZyBpbiB1cmJhbiBhcmVhcy4iXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9LHsibiI6Miwic3RlbSI6IlRoZSBjdXJyZW50IHByb2JsZW0gaXMgZHVlIHRvIiwib3B0aW9ucyI6WyJiZWFycyBiZWluZyBoYXJhc3NlZCBieSBwZW9wbGUuIiwiYmVhcnMgc3VmZmVyaW5nIGZyb20gZ2FyYmFnZSBwb2lzb25pbmcuIiwiaGVhdCBhbmQgbGFjayBvZiBmb29kIGluIGJlYXIgaGFiaXRhdC4iLCJjaXR5IGNvbnN0cnVjdGlvbiBpbiBiZWFyIGhhYml0YXQuIl0sImtleSI6MywicmVjb24iOmZhbHNlfSx7Im4iOjMsInN0ZW0iOiJBY2NvcmRpbmcgdG8gdGhlIHdpbGRsaWZlIG9mZmljaWFsLCByZXNpZGVudHMgc2hvdWxkIiwib3B0aW9ucyI6WyJzdGF5IGluZG9vcnMgYXMgbXVjaCBhcyBwb3NzaWJsZS4iLCJrZWVwIHRoZWlyIGdhcmJhZ2UgaW5kb29ycyBvciBsb2NrZWQuIiwiYXR0cmFjdCBiZWFycyBhd2F5IGZyb20gdGhlaXIgaG9tZXMuIiwiY2FsbCB0aGUgY2l0eSB0byBjb2xsZWN0IHRoZWlyIGdhcmJhZ2UuIl0sImtleSI6MiwicmVjb24iOmZhbHNlfSx7Im4iOjQsInN0ZW0iOiJBIGxvY2FsIHJlc2lkZW50LCBNcy4gTmVsc29uIiwib3B0aW9ucyI6WyJpcyB3b3JyaWVkIGFib3V0IGJlYXIgYXR0YWNrcy4iLCJmb3VuZCBhIG5vdmVsIHdheSB0byBoZWxwIHRoZSBiZWFycy4iLCJpcyBjb25jZXJuZWQgYWJvdXQgZGFtYWdlcyB0byB0aGUgY2l0eS4iLCJpcyBhbm5veWVkIGJ5IHRoZSBzbWVsbCBvZiBnYXJiYWdlLiJdLCJrZXkiOjQsInJlY29uIjpmYWxzZX0seyJuIjo1LCJzdGVtIjoiVGhlIGNpdHkgaXMgcHJvdmlkaW5nIHJlc2lkZW50cyB3aXRoIiwib3B0aW9ucyI6WyJuZXcgYW5pbWFsLXByb29mIGdhcmJhZ2UgY2Fucy4iLCJtb3JlIGZyZXF1ZW50IGdhcmJhZ2UgY29sbGVjdGlvbiBzZXJ2aWNlcy4iLCJpbmRpdmlkdWFsIGNvbnN1bHRhdGlvbnMgd2l0aCB3aWxkbGlmZSBvZmZpY2lhbHMuIiwiaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIGtlZXAgYmVhcnMgYXdheS4iXSwia2V5Ijo0LCJyZWNvbiI6ZmFsc2V9XX1dfSx7Im5hbWUiOiJQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJoZWFkZXJUaXRsZSI6IlNldCA2IFx1MjAxMyBQcmFjdGljZSBUZXN0IDEgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDU6IExpc3RlbmluZyB0byBhIERpc2N1c3Npb24iLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCB3YXRjaCBhIGRpc2N1c3Npb24gYW1vbmcgdGhyZWUgcGVvcGxlLiBUaGVyZSBhcmUgdHdvIHdvbWVuIGFuZCBvbmUgbWFuLiBUaGV5IGFyZSBhdCB0aGVpciBvZmZpY2UuIiwiQWZ0ZXIgdGhlIGRpc2N1c3Npb24sIHF1ZXN0aW9ucyB3aWxsIGFwcGVhci4gQ2hvb3NlIHRoZSBiZXN0IGFuc3dlciB0byBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIHdhdGNoIGEgZGlzY3Vzc2lvbiBhbW9uZyB0aHJlZSBwZW9wbGUuIFRoZXJlIGFyZSB0d28gd29tZW4gYW5kIG9uZSBtYW4uXG5UaGV5IGFyZSBhdCB0aGVpciBvZmZpY2UuXG5cblxuTHlubjogSGVsbG8sIHlvdSBtdXN0IGJlIEl2YW4hIElcdTIwMTltIEx5bm4sIENoZW1pc3RyeS5cbkl2YW46IEhlbGxvLCBMeW5uLiBZZXMsIEl2YW4uIE1hdGguXG5SZWVuYTogICAgICAgQW5kIElcdTIwMTltIFJlZW5hLCBCaW9sb2d5LiBTb3JyeSB0aGF0IElcdTIwMTltIGxhdGUgXHUyMDE0IEkgaGFkIGEgbGl0dGxlIHRyb3VibGUgZmluZGluZ1xudGhlIHJvb20hIFNvIC4gLiAuIHdlXHUyMDE5cmUgdGhlIG5ldyBwYXJ0LXRpbWUgaW5zdHJ1Y3RvcnMhIENvbmdyYXR1bGF0aW9ucyB0byB1cyFcbkl2YW46IEhlYXIhIEhlYXIhIEkgdGhpbmsgd2Ugc2hvdWxkIGFsbCBnbyBvdXQgYW5kIGNlbGVicmF0ZSwgb25jZSB3ZSBnZXQgdGhpcyBhbGwgZmlndXJlZFxub3V0IFtnZXN0dXJpbmcgdGhlIHNwYWNlXSFcbkx5bm46IFtsb29raW5nIGFyb3VuZF0gSSBjYW4gdW5kZXJzdGFuZCB3aHkgdGhlIEh1bWFuIFJlc291cmNlcyBwZXJzb24gd2FudGVkIHVzIHRvXG5tZWV0LiBJdFx1MjAxOXMgYXdmdWxseSB0aWdodCBpbiBoZXJlLCBpc25cdTIwMTl0IGl0PyBJIGRvblx1MjAxOXQgZXZlbiB0aGluayB0aGVyZVx1MjAxOXMgcm9vbSBlbm91Z2ggZm9yIHRocmVlXG5kZXNrcyEgW3BhdXNlXSBBdCBsZWFzdCB0aGVyZVx1MjAxOXMgd2luZG93IHRob3VnaCFcblJlZW5hOiAgICAgICAgSSBkb25cdTIwMTl0IGV2ZW4gdGhpbmsgdGhlcmVcdTIwMTlzIGVub3VnaCByb29tIGZvciB0d28gZGVza3MuIExldFx1MjAxOXMgaG9wZSB0aGF0IG91clxuc2NoZWR1bGVzIHdvcmsgb3V0IGFuZCBvbmUgcGVyc29uIHdhbnRzIHRvIHVzZSB0aGUgb2ZmaWNlIGluIHRoZSBtb3JuaW5ncywgYW5vdGhlciBpbiB0aGVcbmFmdGVybm9vbnMsIGFuZCBhIHRoaXJkIGluIHRoZSBldmVuaW5ncy4gVGhpcyBjYXJwZXQgaXMgYW5jaWVudCEgSSBsb3ZlIGl0IVxuTHlubjogTGV0XHUyMDE5cyBhc2sgZm9yIGEgZGVzayB0aGF0IGF0IGxlYXN0IGhhcyBkcmF3ZXJzIG9uIGJvdGggc2lkZXMuIEkgY291bGQgdXNlIHRoZSBvbmVzIG9uXG50aGUgbGVmdCAuIC4gLlxuSXZhbjogQW5kIFJlZW5hIGNhbiB0YWtlIHRoZSBkcmF3ZXJzIG9uIHRoZSByaWdodC4gQW5kIElcdTIwMTlsbCB0YWtlIG9uZSBvZiB0aGUgZHJhd3Mgb24gdGhlXG5maWxpbmcgY2FiaW5ldC4gVGhhdCBzdGlsbCBsZWF2ZXMgb25lIGRyYXdlciBmb3IgZWFjaCBvZiB1cyBmb3Igb3VyIGZpbGVzISBJIHRoaW5rIHRoYXQgc2hvdWxkXG5iZSBlbm91Z2guIEkgd291bGQgaW1hZ2luZSBtb3N0IG9mIHVzIHVzZSBvdXIgbGFwdG9wcyBmb3Igb3VyIGZpbGVzLlxuUmVlbmE6ICAgICAgICBTb3VuZHMgZ29vZC4gRG8geW91IHRoaW5rIHRoZW4gdGhhdCBtZWFucyB3ZSBjb3VsZCBoYXZlIHRocmVlIGJvb2tjYXNlcyxcbm9uZSBmb3IgZWFjaCBvZiB1cz9cblxmSXZhbjogSVx1MjAxOWQgbGlrZSB0aGF0ISBJIGRvblx1MjAxOXQgbWluZCBzaGFyaW5nIHRoZSBkZXNrIG9yIGEgZmlsaW5nIGNhYmluZXQsIGJ1dCBJIHdhbnQgbXkgb3duXG5ib29rY2FzZSFcbkx5bm46IE1lIHRvby4gSWYgd2UgbW92ZSB0aGUgZmlsaW5nIGNhYmluZXQgb3ZlciBoZXJlIGFuZCB0aGUgdGFibGUgb3ZlciB0aGVyZSwgbWF5YmVcbnRoZXJlXHUyMDE5cyByb29tIG9uIHRoYXQgd2FsbCBmb3IgdGhyZWUgYm9va2Nhc2VzLiBVbSwgd2VcdTIwMTlsbCBhbHNvIG5lZWQgYSBjaGFpciBmb3IgdGhlIGRlc2tcbmFuZCBvbmUgZm9yIHN0dWRlbnRzLCBmb3Igb2ZmaWNlIGhvdXJzLCB0byBnbyBvdmVyIHBhcGVycywgYW5zd2VyIHF1ZXN0aW9ucyAuIC4gLiBBbmQgYVxud2hpdGVib2FyZCBvdmVyIHRoZXJlP1xuUmVlbmE6ICAgICAgICBTbyBtdWNoIGJldHRlciB0aGFuIGEgYmxhY2tib2FyZCEgSSBoYXRlIGdldHRpbmcgY2hhbGsgYWxsIG92ZXIgeW91ciBmaW5nZXJzLFxuYW5kIHRoZW4gYWxsIG92ZXIgeW91ciBjbG90aGVzIC4gLiAuXG5JdmFuOiBXZWxsIC4gLiAuIEkgZ3Vlc3MgSSBjYW4gZ2V0IHVzZWQgdG8gYSB3aGl0ZWJvYXJkLiBJIGFsc28gdGhpbmsgd2Ugc2hvdWxkIGhhdmUgYVxuYnVsbGV0aW4gYm9hcmQgb3ZlciBhYm92ZSB0aGUgZGVzaz8gRm9yIG5vdGljZXMsIHNjaGVkdWxlcywgbWVldGluZ3MsIHdoYXQgaGF2ZSB5b3UuXG5BbmQgLiAuIC4gd2VcdTIwMTlyZSBnb25uYSBuZWVkIHNvbWUgd2hpdGVib2FyZCBtYXJrZXJzIGFuZCB0aHVtYnRhY2tzIC4gLiAuXG5MeW5uOiBHb29kIGlkZWEuIEkgY2FuIGJyaW5nIGEgY29mZmVlIG1ha2VyLiBBIHRpbiBvZiBiaXNjdWl0cyAuIC4gLiBUaGF0IHRhYmxlIGlzIHByZXR0eVxuc21hbGwgYnV0IEkgdGhpbmsgaXRcdTIwMTlsbCBkbyAuIC4gLlxuUmVlbmE6ICAgICAgIEkgaG9wZSB5b3VyIGNvZmZlZSBtYWtlciBpcyBub3QgdG9vIGJpZy4gSVx1MjAxOWQgbGlrZSB0byBicmluZyBhIHRlYSBrZXR0bGUsIGFuZFxuSVx1MjAxOW0gc3VyZSB3ZSBhbGwgaGF2ZSBvdXIgbXVncyB3ZSB3YW50IHRvIHB1dCB0aGVyZS4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJEaXNjdXNzaW9uICh2aWRlbykiLCJtZWRpYVR5cGUiOiJ2aWRlbyIsImR1cmF0aW9uIjoxNDAsInRpbWVNaW51dGVzIjozLCJtZWRpYUluc3RydWN0aW9uIjoiV2F0Y2ggdGhlIGRpc2N1c3Npb24uIFlvdSB3aWxsIHdhdGNoIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMS41IHRvIDIgbWludXRlcyBsb25nLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgaXMgbW9zdCBwcm9iYWJseSB0cnVlIG9mIGFsbCB0aHJlZSBwZW9wbGU\/Iiwib3B0aW9ucyI6WyJUaGV5IHdpbGwgYmUgdGVhY2hpbmcgc2NpZW5jZSBjb3Vyc2VzLiIsIlRoZXkgd2lsbCBiZSB1c2luZyB0aGUgc2FtZSBvZmZpY2UgY2hhaXIuIiwiVGhleSB3aWxsIG1lZXQgd2l0aCBIdW1hbiBSZXNvdXJjZXMgbmV4dC4iLCJUaGV5IHdpbGwgZ28gb3V0IHRvIGNlbGVicmF0ZSBhZnRlcndhcmRzLiJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjoyLCJzdGVtIjoiV2h5IGFyZSB0aGV5IG1lZXRpbmc\/Iiwib3B0aW9ucyI6WyJ0byBjaG9vc2Ugd2hvIHdpbGwgZ2V0IHdoaWNoIHBpZWNlIG9mIG9mZmljZSBmdXJuaXR1cmUiLCJ0byBjb29yZGluYXRlIHRoZWlyIHNjaGVkdWxlcyBzbyBhcyB0byBzaGFyZSB0aGUgb2ZmaWNlIiwidG8gZGVjaWRlIGhvdyBiZXN0IHRvIHJlYXJyYW5nZSB0aGUgb2ZmaWNlIGZ1cm5pdHVyZSIsInRvIGRldGVybWluZSBob3cgdG8gc2hhcmUgdGhlIGF2YWlsYWJsZSBvZmZpY2Ugc3BhY2UiXSwia2V5Ijo0LCJyZWNvbiI6ZmFsc2V9LHsibiI6Mywic3RlbSI6IldoYXQgaXMgZ29vZCBhYm91dCB0aGUgcm9vbT8iLCJvcHRpb25zIjpbInRoZSBjYXJwZXQgY29sb3VyIiwidGhlIGZsb29yIGxheW91dCIsInRoZSBsb2NhdGlvbiIsInRoZSBuYXR1cmFsIGxpZ2h0Il0sImtleSI6NCwicmVjb24iOmZhbHNlfSx7Im4iOjQsInN0ZW0iOiJXaGVyZSB3aWxsIEl2YW4gcHV0IGhpcyBwZXJzb25hbCBiZWxvbmdpbmdzPyIsIm9wdGlvbnMiOlsiaW4gdGhlIGRlc2sgZHJhd2VyIiwiaW4gYSBmaWxpbmcgY2FiaW5ldCIsIm9uIGEgYm9va2Nhc2Ugc2hlbGYiLCJvbiB0aGUgdGFibGUiXSwia2V5IjoyLCJyZWNvbiI6ZmFsc2V9LHsibiI6NSwic3RlbSI6IldoYXQgaXRlbSB3b3VsZCB0aGV5IGxpa2UgdG8gYXZvaWQgc2hhcmluZz8iLCJvcHRpb25zIjpbInRoZSBkZXNrIiwidGhlIGZpbGluZyBjYWJpbmV0IiwidGhlIGJvb2tjYXNlIiwidGhlIHRhYmxlIl0sImtleSI6MywicmVjb24iOmZhbHNlfSx7Im4iOjYsInN0ZW0iOiJIb3cgZG9lcyBJdmFuIGZlZWwgYWJvdXQgaGF2aW5nIGEgd2hpdGVib2FyZD8iLCJvcHRpb25zIjpbIkhlIGhhcyBubyByZWFsIGRlc2lyZSBmb3IgYSB3aGl0ZWJvYXJkLiIsIkhlIGluc3RlYWQgd2FudHMgb25seSBhIGJ1bGxldGluIGJvYXJkLiIsIkhlJ2QgbGlrZSB0byBzdGFydCB1c2luZyBhIHdoaXRlYm9hcmQuIiwiSGUnZCBwcmVmZXIgYSB0cmFkaXRpb25hbCBibGFja2JvYXJkLiJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX0seyJuIjo3LCJzdGVtIjoiV2hhdCBkbyB0aGUgd29tZW4gaW50ZW5kIHRvIHVzZSB0aGUgc21hbGwgdGFibGUgZm9yPyIsIm9wdGlvbnMiOlsicmVmcmVzaG1lbnRzIiwib2ZmaWNlIHN1cHBsaWVzIiwiYm9va3MgYW5kIGZpbGVzIiwic3R1ZGVudCB2aXNpdHMiXSwia2V5IjoxLCJyZWNvbiI6ZmFsc2V9LHsibiI6OCwic3RlbSI6IldoYXQgaXMgbW9zdCBsaWtlbHkgdHJ1ZSBvZiBSZWVuYT8iLCJvcHRpb25zIjpbIlNoZSBjb2xsZWN0cyBhbnRpcXVlIGNhcnBldHMuIiwiU2hlIGlzIGFsbGVyZ2ljIHRvIGNoYWxrIGR1c3QuIiwiU2hlIGdldHMgbG9zdCBpbiBsYXJnZSBidWlsZGluZ3MuIiwiU2hlIHByZWZlcnMgdGVhIG92ZXIgY29mZmVlLiJdLCJrZXkiOjQsInJlY29uIjpmYWxzZX1dfV19LHsibmFtZSI6IlBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaGVhZGVyVGl0bGUiOiJTZXQgNiBcdTIwMTMgUHJhY3RpY2UgVGVzdCAxIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSByZXBvcnQgYWJvdXQgbXVsdGljdWx0dXJhbGlzbSBwb2xpY2llcy4iLCJBZnRlciB0aGUgcmVwb3J0LCBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCB1c2luZyB0aGUgZHJvcC1kb3duIG1lbnUuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiTXVsdGljdWx0dXJhbCBzb2NpZXRpZXMgYXJlIG1vcmUgcHJldmFsZW50IGFyb3VuZCB0aGUgZ2xvYmUgdGhhbiBldmVyIGJlZm9yZS4gQ2FuYWRhIGlzXG5vZnRlbiBjcmVkaXRlZCBmb3IgaW5zdGlnYXRpbmcgdGhpcyBtb3ZlbWVudCBiYWNrIGluIDE5NzEgd2hlbiBQcmltZSBNaW5pc3RlciwgUGllcnJlXG5FbGxpb3QgVHJ1ZGVhdSwgZGVjbGFyZWQgQ2FuYWRhIHRvIGJlIGEgbXVsdGljdWx0dXJhbCBuYXRpb24uIFRydWRlYXUgZW52aXNpb25lZCBhXG5jb3VudHJ5IHdoaWNoIHJlY29nbml6ZWQgYW5kIHJlc3BlY3RlZCB0aGUgY29udHJpYnV0aW9uIGJ5IHZhcmlvdXMgZXRobmljIGdyb3VwcyB0byB0aGVcbmN1bHR1cmFsIGVucmljaG1lbnQgb2YgQ2FuYWRhLCBhbmQgaGUgaW1wbGVtZW50ZWQgcG9saWNpZXMgdG8gc2FmZWd1YXJkIHRoYXRcbmNvbnRyaWJ1dGlvbi5cblxuXG5Ib3dldmVyLCB0aGUgR2VybWFuIENoYW5jZWxsb3IsIEFuZ2VsYSBNZXJrZWwsIHJlY2VudGx5IGRlY2xhcmVkIHRoZSBwb2xpY3kgb2Zcbm11bHRpY3VsdHVyYWxpc20gYSBmYWlsdXJlLiBUaGVyZSBoYXZlIGJlZW4gc2lnbmlmaWNhbnQgZGVtb2dyYXBoaWMgY2hhbmdlcyBpbiBtYW55XG5jb3VudHJpZXMgb3ZlciB0aGUgbGFzdCBkZWNhZGVzOyB1bmZvcnR1bmF0ZWx5LCBpbiBzb21lIG5hdGlvbnMsIHRoaXMgaGFzIHJlc3VsdGVkIGluIGludGVyLVxuY3VsdHVyYWwgdGVuc2lvbnMuIFRodXMsIG90aGVyIEV1cm9wZWFuIGNvdW50cmllcyBoYXZlIGFsc28gY29uZGVtbmVkIG11bHRpY3VsdHVyYWxpc21cbmFzIGEgcGFzc2luZyBmYWQgdGhhdCBkb2VzIG5vdCBhY3R1YWxseSBwcm9tb3RlIHVuaXR5IGluIHRvZGF5J3MgZGl2ZXJzZSBzb2NpZXRpZXMuXG5cZlNvY2lvbG9naXN0IEFybGVuZSBCcmFuZG9uIGFyZ3VlcyB0aGF0IHRoZXNlIGNvdW50cmllcyBjYW5ub3QgY29uZGVtbiBhIHByYWN0aWNlIHRoYXRcbnRoZXkndmUgbmV2ZXIgcmVhbGx5IGF0dGVtcHRlZCB0byBwcm9wZXJseSBpbXBsZW1lbnQuIEJyYW5kb24ncyByZXNlYXJjaCBvbiB0aGUgc3VjY2Vzc1xub2YgbXVsdGljdWx0dXJhbGlzbSBoYXMgc2hvd24gYSBzdHJvbmcgY29ycmVsYXRpb24gYmV0d2VlbiBjaXRpemVuc2hpcCBhbmRcbm11bHRpY3VsdHVyYWxpc20uIFRoZSBuYXRpb25zIHRoYXQgaGF2ZSBtb3N0IHN1Y2Nlc3NmdWxseSBhZG9wdGVkIGEgcG9saWN5IG9mXG5tdWx0aWN1bHR1cmFsaXNtIGFyZSB0aG9zZSB0aGF0IGhhdmUgYWxsb3dlZCBpbW1pZ3JhbnRzIHRvIGV2ZW50dWFsbHkgYmVjb21lIGNpdGl6ZW5zLFxudGh1cyBjcmVhdGluZyBhIHN0cm9uZyBzZW5zZSBvZiB1bml0eSBhbmQgaW5jbHVzaW9uLiBQcmVzZW50bHksIENhbmFkYSBhbmQgQXVzdHJhbGlhIGFyZVxudGhlIG1vc3QgbXVsdGljdWx0dXJhbCBjb3VudHJpZXMgYW5kLCBiZWNhdXNlIG9mIHRoZWlyIHBvbGljaWVzLCB0aGVpciBkZW1vZ3JhcGhpYyBjaGFuZ2VzXG5oYXZlIGdlbmVyYWxseSBvY2N1cnJlZCBwZWFjZWZ1bGx5IGFuZCBwb3NpdGl2ZWx5LiBGcmFuY2UsIE5vcndheSwgYW5kIEdlcm1hbnksIG9uIHRoZVxub3RoZXIgaGFuZCwgaGF2ZSBmYWlsZWQgdG8gdHJ1bHkgYWRvcHQgbXVsdGljdWx0dXJhbGlzbSBzaW5jZSB0aGV5IHRyZWF0IGZvcmVpZ25lcnMgYXNcbnRlbXBvcmFyeSBsYWJvdXIgYW5kIG5vdCBhcyBmdXR1cmUgY2l0aXplbnMuIEJyYW5kb24gc2F5cyB0aGVzZSBjb3VudHJpZXMgc2hvdWxkIG5vdFxuYmxhbWUgbXVsdGljdWx0dXJhbGlzbSBmb3IgdGhlaXIgcHJvYmxlbXMsIGJ1dCwgcmF0aGVyLCB0aGVpciBwb29ybHkgZGVzaWduZWQgcG9saWNpZXMuXG5cblxuSG93ZXZlciwgbm90IGV2ZXJ5b25lIGFncmVlcyB0aGF0IENhbmFkYSdzIG11bHRpY3VsdHVyYWxpc20gaGFzIGJlZW4gc3VjY2Vzc2Z1bC5cbkFjY29yZGluZyB0byBjb250cm92ZXJzaWFsIGF1dGhvciBOb3JhIEFsa2FiYXIsIHByZXNlbnQgZGF5IG11bHRpY3VsdHVyYWxpc20sIGFzXG5wcmFjdGljZWQgaW4gQ2FuYWRhLCBlbmNvdXJhZ2VzIHNlZ3JlZ2F0aW9uIGFuZCBoeXBlciBwb2xpdGljYWwgY29ycmVjdG5lc3MuIEFsa2FiYXJcbmFyZ3VlcyB0aGF0IG11bHRpY3VsdHVyYWxpc20gYW5kIGRpdmVyc2l0eSBhcmUgbm90IHRoZSBzYW1lIHRoaW5nLiBTaGUgc2F5cyB0aGF0IGRpdmVyc2l0eVxucmVmZXJzIHRvIGRpZmZlcmVuY2VzIGluIHRob3VnaHRzLCBvcGluaW9ucywgYW5kIHZpZXdwb2ludHMsIHdoZXJlYXMgbXVsdGljdWx0dXJhbGlzbVxuaW52b2x2ZXMgZXF1YWxpdHkgYW5kIG11dHVhbCByZXNwZWN0IGFtb25nIGEgcG9wdWxhdGlvbidzIGN1bHR1cmFsIGdyb3Vwcy4gU2hlIG1haW50YWluc1xudGhhdCBtdWx0aWN1bHR1cmFsaXNtIHNob3VsZCBtZWFuIGVuZ2FnaW5nIHdpdGggb3RoZXJzIGluIGEgbWVhbmluZ2Z1bCB3YXkgYWJvdXQgdGhlaXJcbmFzc3VtcHRpb25zIGFuZCBnb2Fscy4gQWxrYWJhciBzYXlzIHRoYXQgQ2FuYWRpYW5zIHRvZGF5IGFyZSBzbyB3b3JyaWVkIGFib3V0IG9mZmVuZGluZ1xuc29tZW9uZSBvciBzYXlpbmcgdGhlIHdyb25nIHRoaW5nIHRoYXQgdGhleSBkb24ndCBlbmdhZ2Ugd2l0aCBvdGhlciBjdWx0dXJlcyBvciBhc2tcbnF1ZXN0aW9ucyB0aGV5IG1heSBoYXZlLCB3aGljaCBzaGUgZmluZHMgZGlzcmVzcGVjdGZ1bC4gQWxrYWJhciBjbGFpbXMgdGhhdCBhIHRydWVcbm11bHRpY3VsdHVyYWwgc29jaWV0eSBpcyBidWlsdCBvbiBtdXR1YWwgcmVzcGVjdCBhbmQgaG9wZXMgdGhhdCB0aGUgbmV4dCBnZW5lcmF0aW9uc1xuZW5nYWdlIHdpdGggZWFjaCBvdGhlciBtb3JlIGhvbmVzdGx5LlxuXG5cbldoYXQgZG8geW91IHRoaW5rLCBDYW5hZGE\/IElzIGl0IHRpbWUgdG8gaGF2ZSBhIGZyYW5rIGFuZCBob25lc3QgY29udmVyc2F0aW9uIGFib3V0XG5tdWx0aWN1bHR1cmFsaXNtIGluIG91ciBuYXRpb24\/IFdlJ2QgbG92ZSB0byBoZWFyIGZyb20geW91IGFmdGVyIHRoaXMgY29tbWVyY2lhbCBicmVhay4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJSZXBvcnQiLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjoyMDEsInRpbWVNaW51dGVzIjo0LCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgcmVwb3J0LiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMyBtaW51dGVzIGxvbmcuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiQWNjb3JkaW5nIHRvIHRoZSBwYXNzYWdlLCB0aGUgbW92ZW1lbnQgdG93YXJkIGNyZWF0aW5nIG11bHRpY3VsdHVyYWwgc29jaWV0aWVzIiwib3B0aW9ucyI6WyJoYXMgcmVhY2hlZCBhbiB1bnByZWNlZGVudGVkIGxldmVsIHdvcmxkd2lkZS4iLCJpcyBncm93aW5nIGluIHBvcHVsYXJpdHkgaW4gR2VybWFueSBhbmQgRnJhbmNlLiIsImhhcyBiZWVuIHJhdGhlciB1bnN1Y2Nlc3NmdWwgaW4gTm9ydGggQW1lcmljYS4iLCJpcyBhIG5ld2x5IGFkb3B0ZWQgdHJlbmQgaW4gQ2FuYWRpYW4gcG9saXRpY3MuIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjIsInN0ZW0iOiJHZXJtYW4gQ2hhbmNlbGxvciBNZXJrZWwgc2VlbXMgdG8gZmVlbCB0aGF0IG11bHRpY3VsdHVyYWxpc20iLCJvcHRpb25zIjpbImhhcyBsZWQgdG8gaW1wcm92ZWQgZGVtb2dyYXBoaWNzLiIsInNob3VsZCBiZSBpbXByb3ZlZCB1cG9uIGFzIGEgcG9saWN5LiIsIndpbGwgaGVscCBncm93IHRoZSBFdXJvcGVhbiBwb3B1bGF0aW9uLiIsImhhcyBjcmVhdGVkIG1vcmUgcHJvYmxlbXMgdGhhbiBiZW5lZml0cy4iXSwia2V5Ijo0LCJyZWNvbiI6ZmFsc2V9LHsibiI6Mywic3RlbSI6IlNvY2lvbG9naXN0IEFybGVuZSBCcmFuZG9uIGJlbGlldmVzIG11bHRpY3VsdHVyYWxpc20gaXMgZmFpbGluZyBpbiBuYXRpb25zIHRoYXQiLCJvcHRpb25zIjpbImhhdmUgbmVnbGVjdGVkIHRvIGltcGxlbWVudCB0cnVseSBpbmNsdXNpdmUgcG9saWNpZXMuIiwiYXJlIGV4cGVyaWVuY2luZyB0aGUgZ3JlYXRlc3QgZGVtb2dyYXBoaWMgY2hhbmdlcy4iLCJoYXZlIG9wZW5lZCB0aGVpciBkb29ycyB0byBuZXcgcGVybWFuZW50IHJlc2lkZW50cy4iLCJhcmUgZXhjZXNzaXZlbHkgY29uY2VybmVkIHdpdGggcG9saXRpY2FsIGNvcnJlY3RuZXNzLiJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX0seyJuIjo0LCJzdGVtIjoiVGhlIHBhc3NhZ2UgaW1wbGllcyB0aGF0IGluIEF1c3RyYWxpYSIsIm9wdGlvbnMiOlsidGhlcmUgaGF2ZSBiZWVuIGZldyBkZW1vZ3JhcGhpYyBjaGFuZ2VzLiIsImltbWlncmFudHMgY2FuIGV2ZW50dWFsbHkgYmVjb21lIGNpdGl6ZW5zLiIsIm11bHRpY3VsdHVyYWwgcG9saWNpZXMgcmVzZW1ibGUgdGhvc2Ugb2YgRnJhbmNlLiIsInRoZXJlIGlzIHZlcnkgbGl0dGxlIG5lZWQgZm9yIHRlbXBvcmFyeSBsYWJvdXIuIl0sImtleSI6MiwicmVjb24iOmZhbHNlfSx7Im4iOjUsInN0ZW0iOiJOb3JhIEFsa2FiYXIgd291bGQgbGlrZWx5IGVuY291cmFnZSBwZW9wbGUgdG8iLCJvcHRpb25zIjpbImZvY3VzIG1vcmUgb24gcG9saXRpY2FsIGNvcnJlY3RuZXNzIHRoYW4gbXVsdGljdWx0dXJhbGlzbS4iLCJhc2sgaG9uZXN0IHF1ZXN0aW9ucyBvZiBwZW9wbGUgZnJvbSBkaWZmZXJlbnQgYmFja2dyb3VuZHMuIiwiYmUgY2F1dGlvdXMgd2l0aCB3b3JkcyB3aGVuIGRpc2N1c3NpbmcgY3VsdHVyYWwgZGlmZmVyZW5jZXMuIiwiY29uc2lkZXIgaW1taWdyYW50cyB0byBFdXJvcGUgYXMgcG90ZW50aWFsIGZ1dHVyZSBjaXRpemVucy4iXSwia2V5IjoyLCJyZWNvbiI6ZmFsc2V9LHsibiI6Niwic3RlbSI6IlRoZSBwYXNzYWdlIHdhcyBsaWtlbHkgcGFydCBvZiBhIiwib3B0aW9ucyI6WyJidXNpbmVzcyBwZXJzb24ncyBzcGVlY2guIiwiY29sbGVnZSBwcm9mZXNzb3IncyBsZWN0dXJlLiIsInB1YmxpYyByYWRpbyBjYWxsLWluIHNob3cuIiwiZG9jdW1lbnRhcnktc3R5bGUgdGVsZXZpc2lvbiBzaG93LiJdLCJrZXkiOjMsInJlY29uIjpmYWxzZX1dfV19XX07Cgp2YXIgQ0VMUElQX1lUID0geyB2aWRlb0lkOiAnJyB9OyAgLyogZS5nLiAnZFF3NHc5V2dYY1EnIFx1MjAxNCBTZXQgMiBUZXN0IDEgZnVsbCBsaXN0ZW5pbmcgdmlkZW8gKi8KdmFyIENMUF9DSEFQVEVSUyA9IHsgJzAuMCc6WzAsNTIwXSwgJzAuMSc6WzAsNTIwXSwgJzAuMic6WzAsNTIwXSwgJzEuMCc6WzUyMCw4NTNdLCAnMi4wJzpbODUzLDEyNzJdLCAnMy4wJzpbMTI3MiwxMzY0XSwgJzQuMCc6WzEzNjQsMTUwM10sICc1LjAnOlsxNTAzLDE3NTddIH07CgovKiBUT0RPOiBwbGFjZWhvbGRlciBtYXBwaW5nIFx1MjAxNCB2ZXJpZnkgYWdhaW5zdCB0aGUgb2ZmaWNpYWwgQ0VMUElQIHNjb3JlIGNoYXJ0LiAqLwpmdW5jdGlvbiBjbGJFc3RpbWF0ZShyYXcpewogIGlmIChyYXcgPj0gMzUpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDEwXHUyMDEzMTInLCBub3RlOiAnQWR2YW5jZWQgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAzMCkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgOScsICAgICAgICBub3RlOiAnRWZmZWN0aXZlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjcpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDgnLCAgICAgICAgbm90ZTogJ0dvb2QgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAyMikgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgNycsICAgICAgICBub3RlOiAnQWRlcXVhdGUgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxNykgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgNicsICAgICAgICBub3RlOiAnRGV2ZWxvcGluZyBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDExKSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA1JywgICAgICAgIG5vdGU6ICdBY3F1aXJpbmcgcHJvZmljaWVuY3knIH07CiAgcmV0dXJuICAgICAgICAgICAgeyBsZXZlbDogJ0NFTFBJUCA0IG9yIGJlbG93JywgICBub3RlOiAnS2VlcCBwcmFjdGljaW5nIScgfTsKfQoKLyogPT09PT09PT09PT09PT09PT09PT09IGVuZ2luZSA9PT09PT09PT09PT09PT09PT09PT0gKi8KKGZ1bmN0aW9uKCl7CiAgdmFyIHJlZHVjZWRNb3Rpb24gPSB3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSknKS5tYXRjaGVzOwogIHZhciBjYXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwQ2F0Jyk7CiAgdmFyIGRvdHNFbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBEb3RzJyk7CiAgdmFyIHRvb2xiYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwVG9vbGJhcicpOwogIHZhciByZXN1bHRzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwUmVzdWx0cycpOwogIHZhciBzY29yZUNoaXAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU2NvcmVDaGlwJyk7CgogIHZhciBUT1RBTF9RID0gMDsKICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwKXsgcC5zZWN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHMpeyBUT1RBTF9RICs9IHMucXVlc3Rpb25zLmxlbmd0aDsgfSk7IH0pOwoKICB2YXIgc2NyZWVucyA9IFtdOwogIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdpbnRybycsIHBpOiBwaSB9KTsKICAgIHBhcnQuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzZWMsIHNpKXsKICAgICAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ21lZGlhJywgcGk6IHBpLCBzaTogc2kgfSk7CiAgICAgIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdxJywgcGk6IHBpLCBzaTogc2kgfSk7CiAgICB9KTsKICB9KTsKICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnZmluaXNoJyB9KTsKCiAgdmFyIHN0YXRlID0gewogICAgc3RhcnRlZDogZmFsc2UsCiAgICBpZHg6IDAsCiAgICBhbnN3ZXJzOiB7fSwgICAgICAvKiAicGkuc2kucWkiIC0+IG9wdGlvbiBpbmRleCAoMC0zKSAqLwogICAgY2hlY2tlZDogZmFsc2UsCiAgICB0aW1lck9uOiB0cnVlCiAgfTsKICB2YXIgbWVkaWFUaW1lciA9IG51bGwsIHFUaW1lciA9IG51bGwsIHFSZW1haW5pbmcgPSAwOwogIHZhciBwb3B1cCA9IG51bGwsIG9wZW5UcmlnZ2VyID0gbnVsbDsKCiAgZnVuY3Rpb24gcUtleShwaSwgc2ksIHFpKXsgcmV0dXJuIHBpICsgJy4nICsgc2kgKyAnLicgKyBxaTsgfQogIGZ1bmN0aW9uIGZtdChzZWMpeyB2YXIgbSA9IE1hdGguZmxvb3Ioc2VjLzYwKSwgcyA9IHNlYyAlIDYwOyByZXR1cm4gbSArICc6JyArIChzIDwgMTAgPyAnMCcgOiAnJykgKyBzOyB9CiAgZnVuY3Rpb24gZWwodGFnLCBjbHMsIHRleHQpewogICAgdmFyIGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7CiAgICBpZiAoY2xzKSBlLmNsYXNzTmFtZSA9IGNsczsKICAgIGlmICh0ZXh0ICE9PSB1bmRlZmluZWQpIGUudGV4dENvbnRlbnQgPSB0ZXh0OwogICAgcmV0dXJuIGU7CiAgfQogIGZ1bmN0aW9uIHNjcm9sbFRvRWwodGFyZ2V0LCBvZmZzZXQpewogICAgdmFyIHkgPSB0YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgd2luZG93LnBhZ2VZT2Zmc2V0IC0gKG9mZnNldCB8fCA3MCk7CiAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IHksIGJlaGF2aW9yOiByZWR1Y2VkTW90aW9uID8gJ2F1dG8nIDogJ3Ntb290aCcgfSk7CiAgfQogIGZ1bmN0aW9uIGNsZWFyVGltZXJzKCl7CiAgICBpZiAobWVkaWFUaW1lcil7IGNsZWFySW50ZXJ2YWwobWVkaWFUaW1lcik7IG1lZGlhVGltZXIgPSBudWxsOyB9CiAgICBpZiAocVRpbWVyKXsgY2xlYXJJbnRlcnZhbChxVGltZXIpOyBxVGltZXIgPSBudWxsOyB9CiAgfQogIGZ1bmN0aW9uIGFuc3dlcmVkQ291bnQoKXsgcmV0dXJuIE9iamVjdC5rZXlzKHN0YXRlLmFuc3dlcnMpLmxlbmd0aDsgfQogIGZ1bmN0aW9uIHVwZGF0ZVNjb3JlQ2hpcCgpewogICAgaWYgKHN0YXRlLmNoZWNrZWQpewogICAgICBzY29yZUNoaXAudGV4dENvbnRlbnQgPSAnU2NvcmUgJyArIGNvbXB1dGVTY29yZSgpLnRvdGFsICsgJy8nICsgVE9UQUxfUTsKICAgIH0gZWxzZSB7CiAgICAgIHNjb3JlQ2hpcC50ZXh0Q29udGVudCA9ICdBbnN3ZXJlZCAnICsgYW5zd2VyZWRDb3VudCgpICsgJy8nICsgVE9UQUxfUTsKICAgIH0KICB9CiAgZnVuY3Rpb24gY29tcHV0ZVNjb3JlKCl7CiAgICB2YXIgdG90YWwgPSAwLCBwZXJQYXJ0ID0gW107CiAgICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICAgIHZhciBjID0gMCwgbiA9IDA7CiAgICAgIHBhcnQuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzZWMsIHNpKXsKICAgICAgICBzZWMucXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocSwgcWkpewogICAgICAgICAgbisrOwogICAgICAgICAgaWYgKHN0YXRlLmFuc3dlcnNbcUtleShwaSwgc2ksIHFpKV0gPT09IHEua2V5IC0gMSl7IGMrKzsgdG90YWwrKzsgfQogICAgICAgIH0pOwogICAgICB9KTsKICAgICAgcGVyUGFydC5wdXNoKHsgY29ycmVjdDogYywgdG90YWw6IG4gfSk7CiAgICB9KTsKICAgIHJldHVybiB7IHRvdGFsOiB0b3RhbCwgcGVyUGFydDogcGVyUGFydCB9OwogIH0KCiAgLyogLS0tLS0tLS0tLSBkcm9wZG93biBwb3B1cCAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gY2xvc2VQb3B1cCgpewogICAgaWYgKHBvcHVwKXsgcG9wdXAucmVtb3ZlKCk7IHBvcHVwID0gbnVsbDsgfQogICAgaWYgKG9wZW5UcmlnZ2VyKXsgb3BlblRyaWdnZXIuY2xhc3NMaXN0LnJlbW92ZSgnY2xwLW9wZW4nKTsgb3BlblRyaWdnZXIgPSBudWxsOyB9CiAgfQogIGZ1bmN0aW9uIG9wZW5Qb3B1cCh0cmlnZ2VyLCBwaSwgc2ksIHFpKXsKICAgIGlmIChvcGVuVHJpZ2dlciA9PT0gdHJpZ2dlcil7IGNsb3NlUG9wdXAoKTsgcmV0dXJuOyB9CiAgICBjbG9zZVBvcHVwKCk7CiAgICB2YXIgcSA9IFRFU1RfREFUQS5wYXJ0c1twaV0uc2VjdGlvbnNbc2ldLnF1ZXN0aW9uc1txaV07CiAgICB2YXIga2V5ID0gcUtleShwaSwgc2ksIHFpKTsKICAgIHBvcHVwID0gZWwoJ2RpdicsICdjbHAtcG9wJyk7CiAgICBxLm9wdGlvbnMuZm9yRWFjaChmdW5jdGlvbihvcHQsIG9pKXsKICAgICAgdmFyIGIgPSBlbCgnYnV0dG9uJywgJ2NscC1vcHQnICsgKHN0YXRlLmFuc3dlcnNba2V5XSA9PT0gb2kgPyAnIGNscC1zZWwnIDogJycpKTsKICAgICAgYi50eXBlID0gJ2J1dHRvbic7CiAgICAgIGIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXJhZGlvJykpOwogICAgICBiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJycsIG9wdCkpOwogICAgICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIHN0YXRlLmFuc3dlcnNba2V5XSA9IG9pOwogICAgICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgICAgIGNsb3NlUG9wdXAoKTsKICAgICAgICBzZXRUcmlnZ2VyTGFiZWwodHJpZ2dlciwgb3B0LCBmYWxzZSk7CiAgICAgIH0pOwogICAgICBwb3B1cC5hcHBlbmRDaGlsZChiKTsKICAgIH0pOwogICAgY2F0LmFwcGVuZENoaWxkKHBvcHVwKTsKICAgIC8qIHBvc2l0aW9uOiBiZWxvdyB0cmlnZ2VyLCBmbGlwIGFib3ZlIHdoZW4gbmVhciB2aWV3cG9ydCBib3R0b20gKi8KICAgIHBvcHVwLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJzsKICAgIHZhciBjYXRSZWN0ID0gY2F0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgdmFyIHRSZWN0ID0gdHJpZ2dlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciBwb3BXID0gcG9wdXAub2Zmc2V0V2lkdGgsIHBvcEggPSBwb3B1cC5vZmZzZXRIZWlnaHQ7CiAgICB2YXIgbGVmdCA9IHRSZWN0LmxlZnQgLSBjYXRSZWN0LmxlZnQ7CiAgICBsZWZ0ID0gTWF0aC5tYXgoOCwgTWF0aC5taW4obGVmdCwgY2F0LmNsaWVudFdpZHRoIC0gcG9wVyAtIDgpKTsKICAgIHZhciB0b3A7CiAgICBpZiAodFJlY3QuYm90dG9tICsgcG9wSCArIDI0ID4gd2luZG93LmlubmVySGVpZ2h0ICYmIHRSZWN0LnRvcCAtIHBvcEggLSA4ID4gMCl7CiAgICAgIHRvcCA9IHRSZWN0LnRvcCAtIGNhdFJlY3QudG9wIC0gcG9wSCAtIDY7ICAgLyogZmxpcCBhYm92ZSAqLwogICAgfSBlbHNlIHsKICAgICAgdG9wID0gdFJlY3QuYm90dG9tIC0gY2F0UmVjdC50b3AgKyA2OwogICAgfQogICAgcG9wdXAuc3R5bGUubGVmdCA9IGxlZnQgKyAncHgnOwogICAgcG9wdXAuc3R5bGUudG9wID0gdG9wICsgJ3B4JzsKICAgIHBvcHVwLnN0eWxlLnZpc2liaWxpdHkgPSAnJzsKICAgIHRyaWdnZXIuY2xhc3NMaXN0LmFkZCgnY2xwLW9wZW4nKTsKICAgIG9wZW5UcmlnZ2VyID0gdHJpZ2dlcjsKICB9CiAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldil7CiAgICBpZiAocG9wdXAgJiYgIXBvcHVwLmNvbnRhaW5zKGV2LnRhcmdldCkgJiYgZXYudGFyZ2V0ICE9PSBvcGVuVHJpZ2dlciAmJiAoIW9wZW5UcmlnZ2VyIHx8ICFvcGVuVHJpZ2dlci5jb250YWlucyhldi50YXJnZXQpKSl7CiAgICAgIGNsb3NlUG9wdXAoKTsKICAgIH0KICB9KTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2xvc2VQb3B1cCk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGZ1bmN0aW9uKCl7IC8qIGtlZXAgcG9wdXAgYW5jaG9yZWQ6IGNsb3NlIG9uIHNjcm9sbCAqLyBpZiAocG9wdXApIGNsb3NlUG9wdXAoKTsgfSwgeyBwYXNzaXZlOiB0cnVlIH0pOwoKICBmdW5jdGlvbiBzZXRUcmlnZ2VyTGFiZWwodHJpZ2dlciwgdGV4dCwgdW5hbnN3ZXJlZCl7CiAgICB0cmlnZ2VyLmNsYXNzTGlzdC50b2dnbGUoJ2NscC11bmFuc3dlcmVkJywgISF1bmFuc3dlcmVkKTsKICAgIHRyaWdnZXIucXVlcnlTZWxlY3RvcignLmNscC1kZC10ZXh0JykudGV4dENvbnRlbnQgPSB1bmFuc3dlcmVkID8gJ1x1MjAyNlx1MjAyNlx1MjAyNlx1MjAyNicgOiB0ZXh0OwogIH0KCiAgLyogLS0tLS0tLS0tLSBkb3RzIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiByZW5kZXJEb3RzKCl7CiAgICBkb3RzRWwuaW5uZXJIVE1MID0gJyc7CiAgICB2YXIgY3VyUGkgPSAtMTsKICAgIHZhciBzID0gc2NyZWVuc1tzdGF0ZS5pZHhdOwogICAgaWYgKHMgJiYgcy5waSAhPT0gdW5kZWZpbmVkKSBjdXJQaSA9IHMucGk7CiAgICBpZiAocyAmJiBzLnR5cGUgPT09ICdmaW5pc2gnKSBjdXJQaSA9IFRFU1RfREFUQS5wYXJ0cy5sZW5ndGg7IC8qIGFsbCBkb25lICovCiAgICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICAgIHZhciBkID0gZWwoJ2J1dHRvbicsICdjbHAtZG90JywgJ1AnICsgKHBpICsgMSkpOwogICAgICBkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgaWYgKHBpID09PSBjdXJQaSkgZC5jbGFzc0xpc3QuYWRkKCdjbHAtY3VyJyk7CiAgICAgIGVsc2UgaWYgKHBpIDwgY3VyUGkgfHwgc3RhdGUuY2hlY2tlZCkgZC5jbGFzc0xpc3QuYWRkKCdjbHAtZG9uZScpOwogICAgICBpZiAoc3RhdGUuY2hlY2tlZCl7CiAgICAgICAgZC5jbGFzc0xpc3QuYWRkKCdjbHAtY2xpY2thYmxlJyk7CiAgICAgICAgZC50aXRsZSA9ICdSZXZpZXcgJyArIHBhcnQubmFtZTsKICAgICAgICBkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyZWVucy5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIGlmIChzY3JlZW5zW2ldLnR5cGUgPT09ICdxJyAmJiBzY3JlZW5zW2ldLnBpID09PSBwaSl7IHN0YXRlLmlkeCA9IGk7IGJyZWFrOyB9CiAgICAgICAgICB9CiAgICAgICAgICByZW5kZXIoKTsgc2Nyb2xsVG9FbChjYXQpOwogICAgICAgIH0pOwogICAgICB9IGVsc2UgewogICAgICAgIGQudGl0bGUgPSBwYXJ0Lm5hbWU7CiAgICAgIH0KICAgICAgZG90c0VsLmFwcGVuZENoaWxkKGQpOwogICAgfSk7CiAgfQoKICAvKiAtLS0tLS0tLS0tIGNocm9tZSBwaWVjZXMgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIG1ha2VCYXIodGl0bGUsIHdpdGhUaW1lcil7CiAgICB2YXIgYmFyID0gZWwoJ2RpdicsICdjbHAtYmFyJyk7CiAgICBiYXIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWJhci10aXRsZScsIHRpdGxlKSk7CiAgICBpZiAod2l0aFRpbWVyICYmIHN0YXRlLnRpbWVyT24pewogICAgICB2YXIgdCA9IGVsKCdzcGFuJywgJ2NscC1iYXItdGltZXInKTsKICAgICAgdC5pZCA9ICdjbHBRVGltZXInOwogICAgICB0LmlubmVySFRNTCA9ICdUaW1lIHJlbWFpbmluZzogPGI+JyArIGZtdChxUmVtYWluaW5nKSArICc8L2I+JzsKICAgICAgYmFyLmFwcGVuZENoaWxkKHQpOwogICAgfQogICAgdmFyIG5leHQgPSBlbCgnYnV0dG9uJywgJ2NscC1uZXh0JywgJ05leHQnKTsKICAgIG5leHQudHlwZSA9ICdidXR0b24nOwogICAgbmV4dC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgIGNsb3NlUG9wdXAoKTsKICAgICAgaWYgKHN0YXRlLmlkeCA8IHNjcmVlbnMubGVuZ3RoIC0gMSl7IHN0YXRlLmlkeCsrOyByZW5kZXIoKTsgc2Nyb2xsVG9FbChjYXQpOyB9CiAgICB9KTsKICAgIGlmIChzY3JlZW5zW3N0YXRlLmlkeF0udHlwZSA9PT0gJ2ZpbmlzaCcpIG5leHQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgIGJhci5hcHBlbmRDaGlsZChuZXh0KTsKICAgIHJldHVybiBiYXI7CiAgfQogIGZ1bmN0aW9uIG1ha2VJbnN0cih0ZXh0KXsKICAgIHZhciByb3cgPSBlbCgnZGl2JywgJ2NscC1pbnN0cicpOwogICAgcm93LmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1pbmZvJywgJ2knKSk7CiAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3AnLCAnJywgdGV4dCkpOwogICAgcmV0dXJuIHJvdzsKICB9CiAgdmFyIFNQRUFLRVJfU1ZHID0gJzxzdmcgd2lkdGg9IjI2IiBoZWlnaHQ9IjI2IiB2aWV3Qm94PSIwIDAgMjYgMjYiIGZpbGw9Im5vbmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj4nICsKICAgICc8cmVjdCB4PSIzIiB5PSI5IiB3aWR0aD0iNiIgaGVpZ2h0PSI4IiByeD0iMSIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAnPHBhdGggZD0iTTkgOSBMMTUgNCBMMTUgMjIgTDkgMTcgWiIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAnPHBhdGggZD0iTTE4IDkgYTUuNSA1LjUgMCAwIDEgMCA4IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz4nICsKICAgICc8cGF0aCBkPSJNMjAuNSA2LjUgYTkgOSAwIDAgMSAwIDEzIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48L3N2Zz4nOwogIHZhciBQTEFZX1NWRyA9ICc8c3ZnIHdpZHRoPSIyNiIgaGVpZ2h0PSIyNiIgdmlld0JveD0iMCAwIDI2IDI2IiBmaWxsPSJub25lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAnPHBhdGggZD0iTTggNSBMMjEgMTMgTDggMjEgWiIgZmlsbD0iY3VycmVudENvbG9yIi8+PC9zdmc+JzsKCiAgLyogLS0tLS0tLS0tLSBzY3JlZW5zIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiByZW5kZXJJbnRybyhzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsIHBhcnQubmFtZSArICcgXHUyMDE0IEluc3RydWN0aW9ucycpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIoJ0luc3RydWN0aW9uczonKSk7CiAgICB2YXIgYm9keSA9IGVsKCdkaXYnLCAnY2xwLWludHJvLWJvZHknKTsKICAgIGJvZHkuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsIHBhcnQuaW50cm9UaXRsZSkpOwogICAgdmFyIHVsID0gZWwoJ3VsJywgJ2NscC1idWxsZXRzJyk7CiAgICBwYXJ0LmludHJvQnVsbGV0cy5mb3JFYWNoKGZ1bmN0aW9uKGIpeyB1bC5hcHBlbmRDaGlsZChlbCgnbGknLCAnJywgYikpOyB9KTsKICAgIGJvZHkuYXBwZW5kQ2hpbGQodWwpOwogICAgcm9vdC5hcHBlbmRDaGlsZChib2R5KTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlck1lZGlhKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgdmFyIHNlYyA9IHBhcnQuc2VjdGlvbnNbc2NyLnNpXTsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsIHBhcnQubmFtZSArICcgXHUyMDE0IE1lZGlhJyk7CiAgICByb290LmFwcGVuZENoaWxkKG1ha2VJbnN0cihzZWMubWVkaWFJbnN0cnVjdGlvbikpOwp2YXIgX2FrPXNjci5waSsiLiIrc2NyLnNpLF9hdT0odHlwZW9mIENMUF9BVURJTyE9PSJ1bmRlZmluZWQiKSYmQ0xQX0FVRElPW19ha107aWYoX2F1KXt2YXIgX2lzVj0odHlwZW9mIENMUF9BVURJT19WSURFTyE9PSJ1bmRlZmluZWQiKSYmQ0xQX0FVRElPX1ZJREVPW19ha107dmFyIF9wPWVsKCJkaXYiLCJjbHAtbWVkaWEtcGFuZWwiKTt2YXIgX2M9ZWwoImRpdiIsImNscC1tZWRpYS1jYXJkIisoX2lzVj8iIGNscC1pcy12aWRlbyI6IiIpKTt2YXIgX209ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChfaXNWPyJ2aWRlbyI6ImF1ZGlvIik7X20uc3JjPV9hdTtfbS5jb250cm9scz10cnVlO19tLnByZWxvYWQ9Im5vbmUiO19tLmNsYXNzTmFtZT0iY2xwLXJlYWxtZWRpYSI7X20uc2V0QXR0cmlidXRlKCJjb250cm9sc0xpc3QiLCJub2Rvd25sb2FkIik7X20uc3R5bGUuY3NzVGV4dD1faXNWPyJ3aWR0aDoxMDAlO2JvcmRlci1yYWRpdXM6OHB4O2JhY2tncm91bmQ6IzAwMDtkaXNwbGF5OmJsb2NrIjoid2lkdGg6MTAwJTtkaXNwbGF5OmJsb2NrIjtfYy5hcHBlbmRDaGlsZChfbSk7X3AuYXBwZW5kQ2hpbGQoX2MpO19wLmFwcGVuZENoaWxkKGVsKCJkaXYiLCJjbHAtb25jZS1ub3RlIiwiSW4gdGhlIHJlYWwgdGVzdCB0aGlzIHJlY29yZGluZyBwbGF5cyBvbmNlLiBGb3IgcHJhY3RpY2UgeW91IGNhbiByZXBsYXkgaXQgXHUyMDE0IGJ1dCB0cnkgdG8gbGlzdGVuIG9ubHkgb25jZSBmaXJzdC4iKSk7cm9vdC5hcHBlbmRDaGlsZChfcCk7cmV0dXJuO30KCiAgICBpZiAoQ0VMUElQX1lULnZpZGVvSWQpewogICAgICB2YXIgY2ggPSBDTFBfQ0hBUFRFUlNbc2NyLnBpICsgJy4nICsgc2NyLnNpXSB8fCBbMCwgMF07CiAgICAgIHZhciB2cGFuZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1wYW5lbCcpOwogICAgICB2YXIgdmNhcmQgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1jYXJkIGNscC1pcy12aWRlbycpOwogICAgICB2YXIgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICB3cmFwLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTthc3BlY3QtcmF0aW86MTYvOTtib3JkZXItcmFkaXVzOjhweDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDojMDAwOyc7CiAgICAgIHZhciBpZnIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKICAgICAgaWZyLnNyYyA9ICdodHRwczovL3d3dy55b3V0dWJlLW5vY29va2llLmNvbS9lbWJlZC8nICsgQ0VMUElQX1lULnZpZGVvSWQgKyAnP3N0YXJ0PScgKyBjaFswXSArIChjaFsxXSA\/ICcmZW5kPScgKyBjaFsxXSA6ICcnKSArICcmcmVsPTAmbW9kZXN0YnJhbmRpbmc9MSc7CiAgICAgIGlmci5hbGxvdyA9ICdhdXRvcGxheTsgZW5jcnlwdGVkLW1lZGlhOyBwaWN0dXJlLWluLXBpY3R1cmUnOwogICAgICBpZnIuYWxsb3dGdWxsc2NyZWVuID0gdHJ1ZTsKICAgICAgaWZyLnRpdGxlID0gJ0NFTFBJUCBMaXN0ZW5pbmcgbWVkaWEnOwogICAgICBpZnIuc3R5bGUuY3NzVGV4dCA9ICdwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7Ym9yZGVyOjA7JzsKICAgICAgd3JhcC5hcHBlbmRDaGlsZChpZnIpOwogICAgICB2Y2FyZC5hcHBlbmRDaGlsZCh3cmFwKTsKICAgICAgdnBhbmVsLmFwcGVuZENoaWxkKHZjYXJkKTsKICAgICAgdnBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsICdJbiB0aGUgcmVhbCB0ZXN0IHRoaXMgcGxheXMgb25seSBvbmNlIFx1MjAxNCBwcmVzcyBORVhUIHdoZW4gaXQgZW5kcy4nKSk7CiAgICAgIHJvb3QuYXBwZW5kQ2hpbGQodnBhbmVsKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBwYW5lbCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXBhbmVsJyk7CiAgICB2YXIgY2FyZCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLWNhcmQnICsgKHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycgPyAnIGNscC1pcy12aWRlbycgOiAnJykpOwogICAgLyogLmNscC1tZWRpYS16b25lIGlzIHRoZSBmdXR1cmUgWW91VHViZS1lbWJlZCB0YXJnZXQgKGRhdGEtbWVkaWEtc2xvdCkgKi8KICAgIHZhciB6b25lID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtem9uZScpOwogICAgem9uZS5zZXRBdHRyaWJ1dGUoJ2RhdGEtbWVkaWEtc2xvdCcsIHNjci5waSArICcuJyArIHNjci5zaSk7CiAgICB2YXIgaWNvbiA9IGVsKCdkaXYnLCAnY2xwLXNwZWFrZXInKTsKICAgIGljb24uaW5uZXJIVE1MID0gc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyA\/IFBMQVlfU1ZHIDogU1BFQUtFUl9TVkc7CiAgICB2YXIgbWFpbiA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLW1haW4nKTsKICAgIHZhciBsYWJlbCA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLWxhYmVsJywgJ1BsYXlpbmdcdTIwMjYnKTsKICAgIHZhciBwcm9nID0gZWwoJ2RpdicsICdjbHAtcHJvZ3Jlc3MnKTsKICAgIHZhciBmaWxsID0gZWwoJ2RpdicsICdjbHAtcHJvZ3Jlc3MtZmlsbCcpOwogICAgcHJvZy5hcHBlbmRDaGlsZChmaWxsKTsKCiAgICBpZiAoc2VjLm1lZGlhVHlwZSA9PT0gJ3ZpZGVvJyl7CiAgICAgIHpvbmUuYXBwZW5kQ2hpbGQoaWNvbik7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQoem9uZSk7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQobGFiZWwpOwogICAgICBtYWluLmFwcGVuZENoaWxkKHByb2cpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKG1haW4pOwogICAgfSBlbHNlIHsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChsYWJlbCk7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQocHJvZyk7CiAgICAgIHpvbmUuYXBwZW5kQ2hpbGQoaWNvbik7CiAgICAgIHpvbmUuYXBwZW5kQ2hpbGQobWFpbik7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQoem9uZSk7CiAgICB9CiAgICBwYW5lbC5hcHBlbmRDaGlsZChjYXJkKTsKCiAgICB2YXIgbWV0YSA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLW1ldGEnKTsKICAgIHZhciB0aW1lU3BhbiA9IGVsKCdzcGFuJywgJycsICcwOjAwIC8gJyArIGZtdChzZWMuZHVyYXRpb24pKTsKICAgIG1ldGEuYXBwZW5kQ2hpbGQodGltZVNwYW4pOwogICAgdmFyIHZvbCA9IGVsKCdzcGFuJywgJycpOwogICAgdm9sLmlubmVySFRNTCA9ICc8c3ZnIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI2IDI2IiBmaWxsPSJub25lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAgICc8cmVjdCB4PSIzIiB5PSI5IiB3aWR0aD0iNiIgaGVpZ2h0PSI4IiByeD0iMSIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAgICc8cGF0aCBkPSJNOSA5IEwxNSA0IEwxNSAyMiBMOSAxNyBaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz4nICsKICAgICAgJzxwYXRoIGQ9Ik0xOCA5IGE1LjUgNS41IDAgMCAxIDAgOCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+JzsKICAgIG1ldGEuYXBwZW5kQ2hpbGQodm9sKTsKICAgIHBhbmVsLmFwcGVuZENoaWxkKG1ldGEpOwogICAgcGFuZWwuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsICdjbHAtb25jZS1ub3RlJywgKHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycgPyAnVGhpcyB2aWRlbyBwbGF5cycgOiAnVGhpcyByZWNvcmRpbmcgcGxheXMnKSArICcgb25seSBvbmNlIFx1MjAxNCBqdXN0IGxpa2UgdGhlIHJlYWwgdGVzdC4nKSk7CiAgICBpZiAoIUNFTFBJUF9ZVC52aWRlb0lkKXsgcGFuZWwuYXBwZW5kQ2hpbGQoZWwoJ2RpdicsICdjbHAtb25jZS1ub3RlJywgJ09mZmljaWFsIGF1ZGlvL3ZpZGVvIGlzIGJlaW5nIHByZXBhcmVkIFx1MjAxNCB0aGUgYmFyIGFib3ZlIGlzIGEgc2ltdWxhdGlvbi4gUHJlc3MgTkVYVCB0byBjb250aW51ZS4nKSk7IH0KICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICAgIC8qIHNpbXVsYXRlZCBwbGF5YmFjayAqLwogICAgdmFyIGVsYXBzZWQgPSAwOwogICAgbWVkaWFUaW1lciA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7CiAgICAgIGVsYXBzZWQrKzsKICAgICAgaWYgKGVsYXBzZWQgPj0gc2VjLmR1cmF0aW9uKXsKICAgICAgICBlbGFwc2VkID0gc2VjLmR1cmF0aW9uOwogICAgICAgIGNsZWFySW50ZXJ2YWwobWVkaWFUaW1lcik7IG1lZGlhVGltZXIgPSBudWxsOwogICAgICAgIGxhYmVsLnRleHRDb250ZW50ID0gJ0ZpbmlzaGVkJzsKICAgICAgfQogICAgICBmaWxsLnN0eWxlLndpZHRoID0gTWF0aC5yb3VuZChlbGFwc2VkIC8gc2VjLmR1cmF0aW9uICogMTAwKSArICclJzsKICAgICAgdGltZVNwYW4udGV4dENvbnRlbnQgPSBmbXQoZWxhcHNlZCkgKyAnIC8gJyArIGZtdChzZWMuZHVyYXRpb24pOwogICAgfSwgMTAwMCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJRdWVzdGlvbnMoc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICB2YXIgc2VjID0gcGFydC5zZWN0aW9uc1tzY3Iuc2ldOwogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgcGFydC5uYW1lICsgJyBcdTIwMTQgUXVlc3Rpb25zJyk7CiAgICByb290LmFwcGVuZENoaWxkKG1ha2VJbnN0cihwYXJ0LnFJbnN0cnVjdGlvbikpOwoKICAgIHZhciBwYW5lbCA9IGVsKCdkaXYnLCAnY2xwLXEtcGFuZWwnKTsKICAgIHNlYy5xdWVzdGlvbnMuZm9yRWFjaChmdW5jdGlvbihxLCBxaSl7CiAgICAgIHZhciBrZXkgPSBxS2V5KHNjci5waSwgc2NyLnNpLCBxaSk7CiAgICAgIHZhciByb3cgPSBlbCgnZGl2JywgJ2NscC1xJyk7CiAgICAgIHZhciBudW0gPSBlbCgnc3BhbicsICdjbHAtcW51bScsIHEubiArICcuICcpOwogICAgICByb3cuYXBwZW5kQ2hpbGQobnVtKTsKICAgICAgcm93LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHEuc3RlbSArICcgJykpOwoKICAgICAgdmFyIGRkID0gZWwoJ2J1dHRvbicsICdjbHAtZGQnKTsKICAgICAgZGQudHlwZSA9ICdidXR0b24nOwogICAgICBkZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtZGQtdGV4dCcpKTsKICAgICAgZGQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWRkLWNhcmV0JywgJ1x1MjVCQycpKTsKICAgICAgdmFyIGFucyA9IHN0YXRlLmFuc3dlcnNba2V5XTsKICAgICAgc2V0VHJpZ2dlckxhYmVsKGRkLCBhbnMgIT09IHVuZGVmaW5lZCA\/IHEub3B0aW9uc1thbnNdIDogJycsIGFucyA9PT0gdW5kZWZpbmVkKTsKICAgICAgcm93LmFwcGVuZENoaWxkKGRkKTsKCiAgICAgIGlmIChxLnRvZG8pewogICAgICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtdG9kby10YWcnLCAnVE9ETycpKTsKICAgICAgfQoKICAgICAgaWYgKHN0YXRlLmNoZWNrZWQpewogICAgICAgIGRkLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICB2YXIgY29ycmVjdCA9IGFucyA9PT0gcS5rZXkgLSAxOwogICAgICAgIGRkLmNsYXNzTGlzdC5hZGQoY29ycmVjdCA\/ICdjbHAtbWFyay1yaWdodCcgOiAnY2xwLW1hcmstd3JvbmcnKTsKICAgICAgICBpZiAoIWNvcnJlY3QpewogICAgICAgICAgdmFyIHJldiA9IGVsKCdzcGFuJywgJ2NscC1yZXZlYWwnKTsKICAgICAgICAgIHJldi5pbm5lckhUTUwgPSAnQ29ycmVjdCBhbnN3ZXI6IDxiPjwvYj4nOwogICAgICAgICAgcmV2LnF1ZXJ5U2VsZWN0b3IoJ2InKS50ZXh0Q29udGVudCA9IHEub3B0aW9uc1txLmtleSAtIDFdOwogICAgICAgICAgcm93LmFwcGVuZENoaWxkKHJldik7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGRkLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICBvcGVuUG9wdXAoZGQsIHNjci5waSwgc2NyLnNpLCBxaSk7CiAgICAgICAgfSk7CiAgICAgIH0KICAgICAgcGFuZWwuYXBwZW5kQ2hpbGQocm93KTsKICAgIH0pOwogICAgcm9vdC5hcHBlbmRDaGlsZChwYW5lbCk7CgogICAgLyogY291bnRkb3duICovCiAgICBxUmVtYWluaW5nID0gc2VjLnRpbWVNaW51dGVzICogNjA7CiAgICBzdGFydFFUaW1lcigpOwogIH0KICBmdW5jdGlvbiBzdGFydFFUaW1lcigpewogICAgaWYgKHFUaW1lcikgY2xlYXJJbnRlcnZhbChxVGltZXIpOwogICAgaWYgKCFzdGF0ZS50aW1lck9uKSByZXR1cm47CiAgICBxVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICBpZiAocVJlbWFpbmluZyA+IDApIHFSZW1haW5pbmctLTsKICAgICAgdmFyIHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwUVRpbWVyJyk7CiAgICAgIGlmICh0KSB0LmlubmVySFRNTCA9ICdUaW1lIHJlbWFpbmluZzogPGI+JyArIGZtdChxUmVtYWluaW5nKSArICc8L2I+JzsKICAgICAgaWYgKHFSZW1haW5pbmcgPD0gMCl7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogICAgfSwgMTAwMCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJGaW5pc2gocm9vdCl7CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCAnRW5kIG9mIFRlc3QnKTsKICAgIHZhciBib3ggPSBlbCgnZGl2JywgJ2NscC1maW5pc2gnKTsKICAgIGJveC5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgJ0VuZCBvZiB0aGUgTGlzdGVuaW5nIFRlc3QnKSk7CiAgICBib3guYXBwZW5kQ2hpbGQoZWwoJ3AnLCAnJywgJ1lvdSBoYXZlIGFuc3dlcmVkICcgKyBhbnN3ZXJlZENvdW50KCkgKyAnIG9mICcgKyBUT1RBTF9RICsgJyBxdWVzdGlvbnMuIENoZWNrIHlvdXIgYW5zd2VycyB0byBzZWUgeW91ciBzY29yZSwgcGFydC1ieS1wYXJ0IHJlc3VsdHMsIGFuZCB0cmFuc2NyaXB0cy4nKSk7CiAgICB2YXIgYnRuID0gZWwoJ2J1dHRvbicsICdjbHAtZmluaXNoLWNoZWNrJywgJ0NoZWNrIGFuc3dlcnMnKTsKICAgIGJ0bi50eXBlID0gJ2J1dHRvbic7CiAgICBidG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBjaGVja0Fuc3dlcnMpOwogICAgYm94LmFwcGVuZENoaWxkKGJ0bik7CiAgICByb290LmFwcGVuZENoaWxkKGJveCk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXIoKXsKICAgIGNsZWFyVGltZXJzKCk7CiAgICBjbG9zZVBvcHVwKCk7CiAgICBjYXQuaW5uZXJIVE1MID0gJyc7CiAgICB2YXIgc2NyID0gc2NyZWVuc1tzdGF0ZS5pZHhdOwoKICAgIGlmICghc3RhdGUuc3RhcnRlZCl7CiAgICAgIHZhciBiYXIwID0gZWwoJ2RpdicsICdjbHAtYmFyJyk7CiAgICAgIGJhcjAuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWJhci10aXRsZScsIFRFU1RfREFUQS50ZXN0TGFiZWwgKyAnIFx1MjAxMyBMaXN0ZW5pbmcgVGVzdCcpKTsKICAgICAgY2F0LmFwcGVuZENoaWxkKGJhcjApOwogICAgICB2YXIgaWRsZSA9IGVsKCdkaXYnLCAnY2xwLWlkbGUnKTsKICAgICAgdmFyIHAgPSBlbCgncCcsICcnLCAnUHJlc3MgXHUyMDFDU3RhcnQgdGVzdFx1MjAxRCBhYm92ZSB0byBiZWdpbi4gVGhlIHRlc3QgaGFzIDYgcGFydHMgYW5kIDM4IHF1ZXN0aW9ucywgYW5kIGV2ZXJ5IHJlY29yZGluZyBhbmQgdmlkZW8gcGxheXMgb25seSBvbmNlIFx1MjAxNCBqdXN0IGxpa2UgdGhlIHJlYWwgY29tcHV0ZXItZGVsaXZlcmVkIHRlc3QuJyk7CiAgICAgIGlkbGUuYXBwZW5kQ2hpbGQocCk7CiAgICAgIGNhdC5hcHBlbmRDaGlsZChpZGxlKTsKICAgICAgcmVuZGVyRG90cygpOwogICAgICByZXR1cm47CiAgICB9CgogICAgdmFyIGlzUSA9IHNjci50eXBlID09PSAncSc7CiAgICBpZiAoaXNRKXsKICAgICAgdmFyIHNlYyA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldLnNlY3Rpb25zW3Njci5zaV07CiAgICAgIHFSZW1haW5pbmcgPSBzZWMudGltZU1pbnV0ZXMgKiA2MDsKICAgIH0KICAgIHZhciB0aXRsZSA9IHNjci50eXBlID09PSAnZmluaXNoJwogICAgICA\/IFRFU1RfREFUQS50ZXN0TGFiZWwgKyAnIFx1MjAxMyBMaXN0ZW5pbmcgVGVzdCcKICAgICAgOiBURVNUX0RBVEEucGFydHNbc2NyLnBpXS5oZWFkZXJUaXRsZTsKICAgIGNhdC5hcHBlbmRDaGlsZChtYWtlQmFyKHRpdGxlLCBpc1EpKTsKCiAgICB2YXIgc2NyZWVuID0gZWwoJ2RpdicsICdjbHAtc2NyZWVuJyk7CiAgICBpZiAoc2NyLnR5cGUgPT09ICdpbnRybycpIHJlbmRlckludHJvKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgaWYgKHNjci50eXBlID09PSAnbWVkaWEnKSByZW5kZXJNZWRpYShzY3IsIHNjcmVlbik7CiAgICBlbHNlIGlmIChzY3IudHlwZSA9PT0gJ3EnKSByZW5kZXJRdWVzdGlvbnMoc2NyLCBzY3JlZW4pOwogICAgZWxzZSByZW5kZXJGaW5pc2goc2NyZWVuKTsKICAgIGNhdC5hcHBlbmRDaGlsZChzY3JlZW4pOwogICAgcmVuZGVyRG90cygpOwogIH0KCiAgLyogLS0tLS0tLS0tLSByZXN1bHRzIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBjaGVja0Fuc3dlcnMoKXsKICAgIGlmIChzdGF0ZS5jaGVja2VkKSByZXR1cm47CiAgICBzdGF0ZS5jaGVja2VkID0gdHJ1ZTsKICAgIHZhciBzY29yZSA9IGNvbXB1dGVTY29yZSgpOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICByZW5kZXIoKTsKICAgIHJlbmRlclJlc3VsdHMoc2NvcmUpOwogICAgcmVzdWx0c0VsLmhpZGRlbiA9IGZhbHNlOwogICAgc2Nyb2xsVG9FbChyZXN1bHRzRWwpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyUmVzdWx0cyhzY29yZSl7CiAgICByZXN1bHRzRWwuaW5uZXJIVE1MID0gJyc7CiAgICByZXN1bHRzRWwuYXBwZW5kQ2hpbGQoZWwoJ2gyJywgJycsICdZb3VyIHJlc3VsdHMnKSk7CiAgICB2YXIgZ3JpZCA9IGVsKCdkaXYnLCAnY2xwLXJlcy1ncmlkJyk7CgogICAgLyogcmluZyBjYXJkICovCiAgICB2YXIgcmluZ0NhcmQgPSBlbCgnZGl2JywgJ2NscC1jYXJkIGNscC1yaW5nLWNhcmQgY2xwLXJldicpOwogICAgdmFyIHdyYXAgPSBlbCgnZGl2JywgJ2NscC1yaW5nLXdyYXAnKTsKICAgIHZhciBSID0gNTYsIEMgPSAyICogTWF0aC5QSSAqIFI7CiAgICB3cmFwLmlubmVySFRNTCA9CiAgICAgICc8c3ZnIHdpZHRoPSIxMzIiIGhlaWdodD0iMTMyIiB2aWV3Qm94PSIwIDAgMTMyIDEzMiI+JyArCiAgICAgICc8Y2lyY2xlIGN4PSI2NiIgY3k9IjY2IiByPSInICsgUiArICciIHN0cm9rZT0iI0UyRThGMCIgc3Ryb2tlLXdpZHRoPSIxMSIgZmlsbD0ibm9uZSIvPicgKwogICAgICAnPGNpcmNsZSBpZD0iY2xwUmluZyIgY3g9IjY2IiBjeT0iNjYiIHI9IicgKyBSICsgJyIgc3Ryb2tlPSIjMTBCOTgxIiBzdHJva2Utd2lkdGg9IjExIiBmaWxsPSJub25lIiBzdHJva2UtbGluZWNhcD0icm91bmQiICcgKwogICAgICAnc3Ryb2tlLWRhc2hhcnJheT0iJyArIEMgKyAnIiBzdHJva2UtZGFzaG9mZnNldD0iJyArIEMgKyAnIi8+PC9zdmc+JzsKICAgIHZhciBudW0gPSBlbCgnZGl2JywgJ2NscC1yaW5nLW51bScpOwogICAgdmFyIGJpZyA9IGVsKCdiJywgJycsICcwJyk7CiAgICBudW0uYXBwZW5kQ2hpbGQoYmlnKTsKICAgIG51bS5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCAnb3V0IG9mICcgKyBUT1RBTF9RKSk7CiAgICB3cmFwLmFwcGVuZENoaWxkKG51bSk7CiAgICByaW5nQ2FyZC5hcHBlbmRDaGlsZCh3cmFwKTsKICAgIHJpbmdDYXJkLmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCAnVG90YWwgc2NvcmUnKSk7CiAgICBncmlkLmFwcGVuZENoaWxkKHJpbmdDYXJkKTsKCiAgICAvKiBicmVha2Rvd24gY2FyZCAqLwogICAgdmFyIGJkID0gZWwoJ2RpdicsICdjbHAtY2FyZCBjbHAtcmV2Jyk7CiAgICBiZC5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgJ1BhcnQtYnktcGFydCBicmVha2Rvd24nKSk7CiAgICB2YXIgY2hpcHMgPSBlbCgnZGl2JywgJ2NscC1wYXJ0LWNoaXBzJyk7CiAgICBzY29yZS5wZXJQYXJ0LmZvckVhY2goZnVuY3Rpb24ocHAsIHBpKXsKICAgICAgdmFyIGMgPSBlbCgnc3BhbicsICdjbHAtcGFydC1jaGlwJyk7CiAgICAgIGMuaW5uZXJIVE1MID0gJ1AnICsgKHBpICsgMSkgKyAnIDxiPicgKyBwcC5jb3JyZWN0ICsgJy8nICsgcHAudG90YWwgKyAnPC9iPic7CiAgICAgIGNoaXBzLmFwcGVuZENoaWxkKGMpOwogICAgfSk7CiAgICBiZC5hcHBlbmRDaGlsZChjaGlwcyk7CgogICAgdmFyIGVzdCA9IGNsYkVzdGltYXRlKHNjb3JlLnRvdGFsKTsKICAgIHZhciBjbGIgPSBlbCgnZGl2JywgJ2NscC1jbGItcm93Jyk7CiAgICBjbGIuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWNsYi1iYWRnZScsIGVzdC5sZXZlbCkpOwogICAgY2xiLmFwcGVuZENoaWxkKGVsKCdwJywgJycsIGVzdC5ub3RlICsgJyBcdTIwMTQgZXN0aW1hdGVkIGZyb20gYSByYXcgc2NvcmUgb2YgJyArIHNjb3JlLnRvdGFsICsgJy8nICsgVE9UQUxfUSArICcuIFRPRE86IHBsYWNlaG9sZGVyIG1hcHBpbmcgXHUyMDE0IHZlcmlmeSBhZ2FpbnN0IHRoZSBvZmZpY2lhbCBDRUxQSVAgc2NvcmUgY2hhcnQuJykpOwogICAgYmQuYXBwZW5kQ2hpbGQoY2xiKTsKICAgIGdyaWQuYXBwZW5kQ2hpbGQoYmQpOwogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKGdyaWQpOwoKICAgIC8qIHRyYW5zY3JpcHRzICovCiAgICB2YXIgdHJXcmFwID0gZWwoJ2RpdicsICdjbHAtdHJhbnNjcmlwdHMnKTsKICAgIFRFU1RfREFUQS5wYXJ0cy5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQsIHBpKXsKICAgICAgdmFyIGNhcmQgPSBlbCgnZGl2JywgJ2NscC10ci1jYXJkIGNscC1yZXYnKTsKICAgICAgdmFyIGhlYWQgPSBlbCgnYnV0dG9uJywgJ2NscC10ci1oZWFkJyk7CiAgICAgIGhlYWQudHlwZSA9ICdidXR0b24nOwogICAgICBoZWFkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJycsICdUcmFuc2NyaXB0IFx1MjAxNCAnICsgcGFydC5uYW1lKSk7CiAgICAgIGhlYWQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRyLWNhcmV0JywgJ1x1MjVCQycpKTsKICAgICAgaGVhZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7IGNhcmQuY2xhc3NMaXN0LnRvZ2dsZSgnY2xwLW9wZW4nKTsgfSk7CiAgICAgIHZhciBib2R5ID0gZWwoJ2RpdicsICdjbHAtdHItYm9keScpOwogICAgICBib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHBhcnQudHJhbnNjcmlwdCkpOwogICAgICBpZiAocGFydC50cmFuc2NyaXB0VG9kbyl7CiAgICAgICAgYm9keS5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtdHItdG9kbycsICdUT0RPOiByZXBsYWNlIHRoaXMgc3VtbWFyeSB3aXRoIHRoZSBmdWxsIG9mZmljaWFsIHRyYW5zY3JpcHQuJykpOwogICAgICB9CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQoaGVhZCk7CiAgICAgIGNhcmQuYXBwZW5kQ2hpbGQoYm9keSk7CiAgICAgIHRyV3JhcC5hcHBlbmRDaGlsZChjYXJkKTsKICAgIH0pOwogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKHRyV3JhcCk7CgogICAgLyogcmV2ZWFsICsgY291bnQtdXAgKi8KICAgIHZhciByZXZFbHMgPSByZXN1bHRzRWwucXVlcnlTZWxlY3RvckFsbCgnLmNscC1yZXYnKTsKICAgIGlmICgnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdyAmJiAhcmVkdWNlZE1vdGlvbil7CiAgICAgIHZhciBpbyA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbihlbnRyaWVzKXsKICAgICAgICBlbnRyaWVzLmZvckVhY2goZnVuY3Rpb24oZW4pewogICAgICAgICAgaWYgKGVuLmlzSW50ZXJzZWN0aW5nKXsgZW4udGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ2NscC1pbicpOyBpby51bm9ic2VydmUoZW4udGFyZ2V0KTsgfQogICAgICAgIH0pOwogICAgICB9LCB7IHRocmVzaG9sZDogMC4xNSB9KTsKICAgICAgcmV2RWxzLmZvckVhY2goZnVuY3Rpb24oZSl7IGlvLm9ic2VydmUoZSk7IH0pOwogICAgfSBlbHNlIHsKICAgICAgcmV2RWxzLmZvckVhY2goZnVuY3Rpb24oZSl7IGUuY2xhc3NMaXN0LmFkZCgnY2xwLWluJyk7IH0pOwogICAgfQoKICAgIHZhciByaW5nID0gcmVzdWx0c0VsLnF1ZXJ5U2VsZWN0b3IoJyNjbHBSaW5nJyk7CiAgICB2YXIgdGFyZ2V0ID0gc2NvcmUudG90YWw7CiAgICBpZiAocmVkdWNlZE1vdGlvbil7CiAgICAgIGJpZy50ZXh0Q29udGVudCA9IHRhcmdldDsKICAgICAgcmluZy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gQyAqICgxIC0gdGFyZ2V0IC8gVE9UQUxfUSk7CiAgICB9IGVsc2UgewogICAgICB2YXIgdDAgPSBudWxsLCBEVVIgPSAxMTAwOwogICAgICBmdW5jdGlvbiBzdGVwKHRzKXsKICAgICAgICBpZiAoIXQwKSB0MCA9IHRzOwogICAgICAgIHZhciBwID0gTWF0aC5taW4oMSwgKHRzIC0gdDApIC8gRFVSKTsKICAgICAgICB2YXIgZWFzZSA9IDEgLSBNYXRoLnBvdygxIC0gcCwgMyk7CiAgICAgICAgYmlnLnRleHRDb250ZW50ID0gTWF0aC5yb3VuZChlYXNlICogdGFyZ2V0KTsKICAgICAgICByaW5nLnN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBDICogKDEgLSAoZWFzZSAqIHRhcmdldCkgLyBUT1RBTF9RKTsKICAgICAgICBpZiAocCA8IDEpIHJlcXVlc3RBbmltYXRpb25GcmFtZShzdGVwKTsKICAgICAgfQogICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICB9CiAgfQoKICAvKiAtLS0tLS0tLS0tIHRvb2xiYXIgLyBjb250cm9scyAtLS0tLS0tLS0tICovCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFN0YXJ0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUuc3RhcnRlZCA9IHRydWU7CiAgICBzdGF0ZS5pZHggPSAwOwogICAgdG9vbGJhci5oaWRkZW4gPSBmYWxzZTsKICAgIHJlbmRlcigpOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICBzY3JvbGxUb0VsKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTaW0nKSk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscENoZWNrJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgaWYgKCFzdGF0ZS5zdGFydGVkKSByZXR1cm47CiAgICBjaGVja0Fuc3dlcnMoKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwUmVzZXQnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBzdGF0ZS5zdGFydGVkID0gZmFsc2U7CiAgICBzdGF0ZS5pZHggPSAwOwogICAgc3RhdGUuYW5zd2VycyA9IHt9OwogICAgc3RhdGUuY2hlY2tlZCA9IGZhbHNlOwogICAgcmVzdWx0c0VsLmhpZGRlbiA9IHRydWU7CiAgICByZXN1bHRzRWwuaW5uZXJIVE1MID0gJyc7CiAgICB0b29sYmFyLmhpZGRlbiA9IHRydWU7CiAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgIHJlbmRlcigpOwogICAgc2Nyb2xsVG9FbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwQXBwJyksIDIwKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwVGltZXJUb2dnbGUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICBzdGF0ZS50aW1lck9uID0gIXN0YXRlLnRpbWVyT247CiAgICB0aGlzLnRleHRDb250ZW50ID0gJ1RpbWVyOiAnICsgKHN0YXRlLnRpbWVyT24gPyAnb24nIDogJ29mZicpOwogICAgdmFyIHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwUVRpbWVyJyk7CiAgICBpZiAoIXN0YXRlLnRpbWVyT24pewogICAgICBpZiAocVRpbWVyKXsgY2xlYXJJbnRlcnZhbChxVGltZXIpOyBxVGltZXIgPSBudWxsOyB9CiAgICAgIGlmICh0KSB0LnJlbW92ZSgpOwogICAgfSBlbHNlIGlmIChzY3JlZW5zW3N0YXRlLmlkeF0gJiYgc2NyZWVuc1tzdGF0ZS5pZHhdLnR5cGUgPT09ICdxJyl7CiAgICAgIHJlbmRlcigpOwogICAgfQogIH0pOwoKICB1cGRhdGVTY29yZUNoaXAoKTsKICByZW5kZXIoKTsKfSkoKTsK'));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 6 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-6144","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6144","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=6144"}],"version-history":[{"count":2,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6144\/revisions"}],"predecessor-version":[{"id":6597,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6144\/revisions\/6597"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}