{"id":6055,"date":"2026-07-06T05:12:24","date_gmt":"2026-07-06T05:12:24","guid":{"rendered":"https:\/\/allenglish4u.com\/celpip-set-3-test-2-listening\/"},"modified":"2026-07-12T03:25:17","modified_gmt":"2026-07-12T03:25:17","slug":"celpip-set-3-test-2-listening","status":"publish","type":"page","link":"https:\/\/allenglish4u.com\/vi\/celpip-set-3-test-2-listening\/","title":{"rendered":"CELPIP Set 3 \u2013 Practice Test 2 Listening"},"content":{"rendered":"<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Plus+Jakarta+Sans:wght@400;600;700;800&#038;display=swap\" rel=\"stylesheet\">\n<div class=\"clp-wrap\" id=\"clpApp\" data-variant=\"A\">\n<p>  <!-- ============ 1. HERO ============ --><\/p>\n<section class=\"clp-hero\" data-screen-label=\"Hero\">\n<div class=\"clp-aurora\"><span><\/span><span><\/span><span><\/span><\/div>\n<div class=\"clp-hero-shimmer\"><\/div>\n<div class=\"clp-hero-badges\">\n      <span class=\"clp-badge-brand\">CELPIP<\/span><br \/>\n      <span class=\"clp-badge-set\">Set 3 &#183; Practice Test 2<\/span>\n    <\/div>\n<h1>CELPIP Listening Practice Test<\/h1>\n<div class=\"clp-hero-chips\">\n      <span class=\"clp-chip\">6 parts<\/span><br \/>\n      <span class=\"clp-chip\">38 questions<\/span><br \/>\n      <span class=\"clp-chip\">~47 minutes<\/span><br \/>\n      <span class=\"clp-chip\">Everything plays once<\/span>\n    <\/div>\n<p>    <button class=\"clp-cta\" id=\"clpStart\">Start test<\/button><br \/>\n  <\/section>\n<p>  <!-- ============ Sticky practice toolbar ============ --><\/p>\n<div class=\"clp-toolbar\" id=\"clpToolbar\" hidden data-screen-label=\"Toolbar\">\n    <span class=\"clp-score-chip\" id=\"clpScoreChip\">Answered 0\/38<\/span><br \/>\n    <span class=\"clp-toolbar-spacer\"><\/span><br \/>\n    <button class=\"clp-tbtn\" id=\"clpTimerToggle\">Timer: on<\/button><br \/>\n    <button class=\"clp-tbtn clp-tbtn-check\" id=\"clpCheck\">Check answers<\/button><br \/>\n    <button class=\"clp-tbtn\" id=\"clpReset\">Reset<\/button>\n  <\/div>\n<p>  <!-- ============ 2. CAT SIMULATOR ============ --><\/p>\n<section class=\"clp-sim\" id=\"clpSim\" data-screen-label=\"CAT Simulator\">\n<div class=\"clp-dots\" id=\"clpDots\"><\/div>\n<div class=\"clp-cat\" id=\"clpCat\"><\/div>\n<\/section>\n<p>  <!-- ============ 3. RESULTS ============ --><\/p>\n<section class=\"clp-results\" id=\"clpResults\" hidden data-screen-label=\"Results\"><\/section>\n<\/div>\n<p><script>eval(atob('dmFyIENMUF9BVURJTz17IjAuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zM3QyLXAxczEubXAzIiwiMC4xIjoiaHR0cHM6Ly9hbGxlbmdsaXNoNHUuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA3L3MzdDItcDFzMi5tcDMiLCIwLjIiOiJodHRwczovL2FsbGVuZ2xpc2g0dS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDcvczN0Mi1wMXMzLm1wMyIsIjEuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zM3QyLXAyLm1wMyIsIjIuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zM3QyLXAzLm1wMyIsIjMuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zM3QyLXA0Lm1wMyIsIjQuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zM3QyLXA1Lm1wNCIsIjUuMCI6Imh0dHBzOi8vYWxsZW5nbGlzaDR1LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNy9zM3QyLXA2Lm1wMyJ9O3ZhciBDTFBfQVVESU9fVklERU89eyI0LjAiOjF9OwoKKGZ1bmN0aW9uKCl7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTtzLnRleHRDb250ZW50PSJcbi8qID09PT09PT09PT09PSBDRUxQSVAgTGlzdGVuaW5nIFByYWN0aWNlIFx1MjAxNCBzY29wZWQsIFdvcmRQcmVzcy1zYWZlID09PT09PT09PT09PSAqL1xuLmNscC13cmFwe1xuICAvKiBWQVJJQU5UX0NIUk9NRV9TVEFSVCAqL1xuICAtLWJhci1iZzojRThFQkVGO1xuICAtLWJhci1ib3JkZXI6I0QzRDlFMDtcbiAgLS1iYXItdGV4dDojMUYyOTM3O1xuICAtLXBhbmVsLW1lZGlhLWJnOiNGNEY1Rjc7XG4gIC0tcGFuZWwtbWVkaWEtYm9yZGVyOiNFM0U2RUE7XG4gIC0tbWVkaWEtY2FyZC1iZzojRUNFRUYxO1xuICAtLW1lZGlhLWNhcmQtYm9yZGVyOiNEOERERTM7XG4gIC0tcGFuZWwtcS1iZzojRTlGNEY3O1xuICAtLXBhbmVsLXEtYm9yZGVyOiNENkU4RUQ7XG4gIC0tZGQtb3Blbi1iZzojQ0JFQkY0O1xuICAvKiBWQVJJQU5UX0NIUk9NRV9FTkQgKi9cbiAgLS1uYXZ5OiMwNTBFMjA7IC0tZGFyazojMEExNjI4OyAtLWI5MDA6IzBEMjM1MjsgLS1iNzAwOiMxMjQ1QTg7IC0tYjUwMDojMjU2M0VCO1xuICAtLWI0MDA6IzNCODJGNjsgLS1iMjAwOiM5M0M1RkQ7IC0tYjEwMDojREJFQUZFOyAtLWI1MDojRUZGNkZGO1xuICAtLXRlYWw6IzBEOTQ4ODsgLS1jeWFuOiMwNkI2RDQ7IC0tZ3JlZW46IzEwQjk4MTsgLS1ncmVlbjUwOiNFQ0ZERjU7XG4gIC0tcm9zZTojRjQzRjVFOyAtLW9yYW5nZTojRjk3MzE2O1xuICAtLXRleHQ6IzBGMTcyQTsgLS1tdXRlZDojNDc1NTY5OyAtLXN1YnRsZTojOTRBM0I4OyAtLWJvcmRlcjojRTJFOEYwO1xuICAtLWNyaW1zb246I0I0MkIzQzsgLS13aGl0ZTojRkZGRkZGOyAtLXBhZ2U6I0Y4RkFGRjtcbiAgZm9udC1mYW1pbHk6J1BsdXMgSmFrYXJ0YSBTYW5zJyxzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxzYW5zLXNlcmlmO1xuICBjb2xvcjp2YXIoLS10ZXh0KTtcbiAgbWF4LXdpZHRoOjExNDBweDsgbWFyZ2luOjAgYXV0bzsgcGFkZGluZzoxNnB4IDE2cHggNDhweDtcbiAgbGluZS1oZWlnaHQ6MS41OyBmb250LXNpemU6MTZweDtcbn1cbi5jbHAtd3JhcCAqLCAuY2xwLXdyYXAgKjo6YmVmb3JlLCAuY2xwLXdyYXAgKjo6YWZ0ZXJ7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgfVxuLmNscC13cmFwIGJ1dHRvbnsgZm9udC1mYW1pbHk6aW5oZXJpdDsgY3Vyc29yOnBvaW50ZXI7IH1cbi5jbHAtd3JhcCBoMSwuY2xwLXdyYXAgaDIsLmNscC13cmFwIGgzLC5jbHAtd3JhcCBweyBtYXJnaW46MDsgfVxuXG4vKiA9PT09PT09PT09PT0gSEVSTyA9PT09PT09PT09PT0gKi9cbi5jbHAtaGVyb3tcbiAgcG9zaXRpb246cmVsYXRpdmU7IG92ZXJmbG93OmhpZGRlbjsgYm9yZGVyLXJhZGl1czoyMnB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLW5hdnkpOyBjb2xvcjojZmZmO1xuICBwYWRkaW5nOjM2cHggNDBweDtcbiAgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxNHB4OyBhbGlnbi1pdGVtczpmbGV4LXN0YXJ0O1xuICBib3gtc2hhZG93OjAgMjBweCA0MHB4IC0yMHB4IHJnYmEoNSwxNCwzMiwuNDUpLCAwIDRweCAxMnB4IC02cHggcmdiYSg1LDE0LDMyLC4zKTtcbn1cbi5jbHAtYXVyb3JheyBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6MDsgcG9pbnRlci1ldmVudHM6bm9uZTsgfVxuLmNscC1hdXJvcmEgc3BhbntcbiAgcG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci1yYWRpdXM6NTAlOyBmaWx0ZXI6Ymx1cig2MHB4KTsgb3BhY2l0eTouNTtcbiAgYW5pbWF0aW9uOmNscEZsb2F0IDE0cyBlYXNlLWluLW91dCBpbmZpbml0ZSBhbHRlcm5hdGU7XG59XG4uY2xwLWF1cm9yYSBzcGFuOm50aC1jaGlsZCgxKXsgd2lkdGg6NDIwcHg7IGhlaWdodDo0MjBweDsgbGVmdDotMTIwcHg7IHRvcDotMjAwcHg7IGJhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSwjMTI0NUE4IDAlLHRyYW5zcGFyZW50IDcwJSk7IH1cbi5jbHAtYXVyb3JhIHNwYW46bnRoLWNoaWxkKDIpeyB3aWR0aDozODBweDsgaGVpZ2h0OjM4MHB4OyByaWdodDotODBweDsgdG9wOi0xNjBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMwRDk0ODggMCUsdHJhbnNwYXJlbnQgNzAlKTsgYW5pbWF0aW9uLWRlbGF5Oi00czsgfVxuLmNscC1hdXJvcmEgc3BhbjpudGgtY2hpbGQoMyl7IHdpZHRoOjM0MHB4OyBoZWlnaHQ6MzQwcHg7IHJpZ2h0OjIyJTsgYm90dG9tOi0yNDBweDsgYmFja2dyb3VuZDpyYWRpYWwtZ3JhZGllbnQoY2lyY2xlLCMyNTYzRUIgMCUsdHJhbnNwYXJlbnQgNzAlKTsgYW5pbWF0aW9uLWRlbGF5Oi04czsgfVxuQGtleWZyYW1lcyBjbHBGbG9hdHtcbiAgZnJvbXsgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMCwwKSBzY2FsZSgxKTsgfVxuICB0b3sgdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDQwcHgsMjZweCwwKSBzY2FsZSgxLjEyKTsgfVxufVxuLmNscC1oZXJvLXNoaW1tZXJ7XG4gIHBvc2l0aW9uOmFic29sdXRlOyBpbnNldDowOyBwb2ludGVyLWV2ZW50czpub25lO1xuICBiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMTVkZWcsIHRyYW5zcGFyZW50IDMwJSwgcmdiYSgxNDcsMTk3LDI1MywuMTApIDQ1JSwgcmdiYSg2LDE4MiwyMTIsLjEyKSA1MCUsIHRyYW5zcGFyZW50IDY1JSk7XG4gIGJhY2tncm91bmQtc2l6ZToyNTAlIDEwMCU7XG4gIGFuaW1hdGlvbjpjbHBTaGltbWVyIDdzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuQGtleWZyYW1lcyBjbHBTaGltbWVyeyAwJXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjEyMCUgMDt9IDU1JXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00MCUgMDt9IDEwMCV7YmFja2dyb3VuZC1wb3NpdGlvbjotNDAlIDA7fSB9XG4uY2xwLWhlcm8tYmFkZ2VzeyBkaXNwbGF5OmZsZXg7IGdhcDoxMHB4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGZsZXgtd3JhcDp3cmFwOyBwb3NpdGlvbjpyZWxhdGl2ZTsgfVxuLmNscC1iYWRnZS1icmFuZHtcbiAgYmFja2dyb3VuZDp2YXIoLS1jcmltc29uKTsgY29sb3I6I2ZmZjsgZm9udC13ZWlnaHQ6ODAwOyBmb250LXNpemU6MTJweDtcbiAgbGV0dGVyLXNwYWNpbmc6LjEyZW07IHBhZGRpbmc6NXB4IDEycHg7IGJvcmRlci1yYWRpdXM6NnB4O1xufVxuLmNscC1iYWRnZS1zZXR7IGNvbG9yOnZhcigtLWIyMDApOyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyB9XG4uY2xwLWhlcm8gaDF7IHBvc2l0aW9uOnJlbGF0aXZlOyBmb250LXNpemU6Y2xhbXAoMjZweCw0dncsNDBweCk7IGZvbnQtd2VpZ2h0OjgwMDsgbGV0dGVyLXNwYWNpbmc6LS4wMmVtOyBsaW5lLWhlaWdodDoxLjEyOyB9XG4uY2xwLWhlcm8tY2hpcHN7IGRpc3BsYXk6ZmxleDsgZ2FwOjhweDsgZmxleC13cmFwOndyYXA7IHBvc2l0aW9uOnJlbGF0aXZlOyB9XG4uY2xwLWNoaXB7XG4gIGJhY2tncm91bmQ6cmdiYSgyNTUsMjU1LDI1NSwuMDkpOyBib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTQ3LDE5NywyNTMsLjI1KTtcbiAgY29sb3I6I0RCRUFGRTsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjYwMDsgcGFkZGluZzo2cHggMTRweDsgYm9yZGVyLXJhZGl1czozMnB4O1xuICBiYWNrZHJvcC1maWx0ZXI6Ymx1cig0cHgpOyB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsIGJhY2tncm91bmQgLjI1cyBlYXNlO1xufVxuLmNscC1jaGlwOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xNSk7IH1cbi5jbHAtY3Rhe1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgYmFja2dyb3VuZDp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgYm9yZGVyOm5vbmU7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgZm9udC1zaXplOjE2cHg7IGZvbnQtd2VpZ2h0OjcwMDsgcGFkZGluZzoxM3B4IDM0cHg7IG1hcmdpbi10b3A6MnB4O1xuICBib3gtc2hhZG93OjAgMTBweCAyMnB4IC04cHggcmdiYSgzNyw5OSwyMzUsLjY1KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjIycyBlYXNlLCBib3gtc2hhZG93IC4yMnMgZWFzZSwgYmFja2dyb3VuZCAuMjJzIGVhc2U7XG59XG4uY2xwLWN0YTpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6dmFyKC0tYjQwMCk7IGJveC1zaGFkb3c6MCAxNHB4IDI2cHggLThweCByZ2JhKDM3LDk5LDIzNSwuNzUpOyB9XG5cbi8qID09PT09PT09PT09PSBTVElDS1kgVE9PTEJBUiA9PT09PT09PT09PT0gKi9cbi5jbHAtdG9vbGJhcltoaWRkZW5deyBkaXNwbGF5Om5vbmU7IH1cbi5jbHAtdG9vbGJhcntcbiAgcG9zaXRpb246c3RpY2t5OyB0b3A6OHB4OyB6LWluZGV4OjYwO1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEwcHg7IGZsZXgtd3JhcDp3cmFwO1xuICBiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjkyKTsgYmFja2Ryb3AtZmlsdGVyOmJsdXIoOHB4KTtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBib3JkZXItcmFkaXVzOjE2cHg7XG4gIHBhZGRpbmc6OHB4IDEycHg7IG1hcmdpbjoxOHB4IDAgMDtcbiAgYm94LXNoYWRvdzowIDhweCAyNHB4IC0xNHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwgMCAycHggNnB4IC00cHggcmdiYSgxNSwyMyw0MiwuMTIpO1xuICBtaW4taGVpZ2h0OjUycHg7XG59XG4uY2xwLXNjb3JlLWNoaXB7XG4gIGZvbnQtd2VpZ2h0OjgwMDsgZm9udC1zaXplOjE0cHg7IGNvbG9yOnZhcigtLWI5MDApO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tYjEwMCk7IGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo3cHggMTZweDtcbn1cbi5jbHAtdGJ0bntcbiAgYm9yZGVyLXJhZGl1czoxMHB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NzAwOyBwYWRkaW5nOjlweCAxNnB4O1xuICBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJhY2tncm91bmQ6I2ZmZjsgY29sb3I6dmFyKC0tbXV0ZWQpO1xuICBtaW4taGVpZ2h0OjQwcHg7IHRyYW5zaXRpb246dHJhbnNmb3JtIC4ycyBlYXNlLCBib3gtc2hhZG93IC4ycyBlYXNlLCBiYWNrZ3JvdW5kIC4ycyBlYXNlO1xufVxuLmNscC10YnRuOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMXB4KTsgYm94LXNoYWRvdzowIDZweCAxNHB4IC04cHggcmdiYSgxNSwyMyw0MiwuMyk7IH1cbi5jbHAtdGJ0bi1jaGVja3sgYmFja2dyb3VuZDp2YXIoLS1ncmVlbik7IGJvcmRlci1jb2xvcjp2YXIoLS1ncmVlbik7IGNvbG9yOiNmZmY7IH1cbi5jbHAtdGJ0bi1jaGVjazpob3ZlcnsgYmFja2dyb3VuZDojMGNhNjc4OyB9XG4uY2xwLXRidG5bZGlzYWJsZWRdeyBvcGFjaXR5Oi41OyBjdXJzb3I6bm90LWFsbG93ZWQ7IHRyYW5zZm9ybTpub25lOyBib3gtc2hhZG93Om5vbmU7IH1cbi5jbHAtdG9vbGJhci1zcGFjZXJ7IGZsZXg6MTsgfVxuXG4vKiA9PT09PT09PT09PT0gQ0FUIFNJTVVMQVRPUiA9PT09PT09PT09PT0gKi9cbi5jbHAtc2lteyBtYXJnaW4tdG9wOjE4cHg7IH1cbi5jbHAtZG90c3sgZGlzcGxheTpmbGV4OyBnYXA6NnB4OyBtYXJnaW46MCAwIDEwcHggMnB4OyB9XG4uY2xwLWRvdHtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpOyBiYWNrZ3JvdW5kOiNmZmY7IGNvbG9yOnZhcigtLXN1YnRsZSk7XG4gIGZvbnQtc2l6ZToxMXB4OyBmb250LXdlaWdodDo3MDA7IGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo0cHggMTBweDtcbiAgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4yNXMgZWFzZSwgY29sb3IgLjI1cyBlYXNlO1xufVxuLmNscC1kb3QuY2xwLWRvbmV7IGJhY2tncm91bmQ6dmFyKC0tYjEwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1iMjAwKTsgY29sb3I6dmFyKC0tYjkwMCk7IH1cbi5jbHAtZG90LmNscC1jdXJ7IGJhY2tncm91bmQ6dmFyKC0tYjUwMCk7IGJvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTsgY29sb3I6I2ZmZjsgfVxuLmNscC1kb3QuY2xwLWNsaWNrYWJsZXsgY3Vyc29yOnBvaW50ZXI7IH1cbi5jbHAtZG90Om5vdCguY2xwLWNsaWNrYWJsZSl7IGN1cnNvcjpkZWZhdWx0OyB9XG5cbi5jbHAtY2F0e1xuICBwb3NpdGlvbjpyZWxhdGl2ZTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iYXItYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4OyBvdmVyZmxvdzp2aXNpYmxlO1xuICBiYWNrZ3JvdW5kOiNmZmY7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDMwcHggLTE4cHggcmdiYSgxNSwyMyw0MiwuMjIpLCAwIDJweCA4cHggLTVweCByZ2JhKDE1LDIzLDQyLC4xKTtcbn1cbi5jbHAtYmFye1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEycHg7XG4gIGJhY2tncm91bmQ6dmFyKC0tYmFyLWJnKTsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgdmFyKC0tYmFyLWJvcmRlcik7XG4gIGJvcmRlci1yYWRpdXM6MTBweCAxMHB4IDAgMDtcbiAgcGFkZGluZzo5cHggMTJweDsgbWluLWhlaWdodDo0NHB4O1xufVxuLmNscC1iYXItdGl0bGV7IGZvbnQtc2l6ZToxM3B4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLWJhci10ZXh0KTsgZmxleDoxOyBtaW4td2lkdGg6MDsgfVxuLmNscC1iYXItdGltZXJ7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1iYXItdGV4dCk7IHdoaXRlLXNwYWNlOm5vd3JhcDsgfVxuLmNscC1iYXItdGltZXIgYnsgZm9udC13ZWlnaHQ6ODAwOyB9XG4uY2xwLW5leHR7XG4gIGJhY2tncm91bmQ6dmFyKC0tYjcwMCk7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjRweDtcbiAgZm9udC1zaXplOjExcHg7IGZvbnQtd2VpZ2h0OjcwMDsgbGV0dGVyLXNwYWNpbmc6LjA4ZW07IHRleHQtdHJhbnNmb3JtOnVwcGVyY2FzZTtcbiAgcGFkZGluZzo3cHggMTZweDsgbWluLWhlaWdodDozMHB4O1xuICB0cmFuc2l0aW9uOmJhY2tncm91bmQgLjJzIGVhc2UsIHRyYW5zZm9ybSAuMnMgZWFzZTtcbn1cbi5jbHAtbmV4dDpob3ZlcnsgYmFja2dyb3VuZDp2YXIoLS1iOTAwKTsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7IH1cbi5jbHAtc2NyZWVueyBib3JkZXItcmFkaXVzOjAgMCAxMHB4IDEwcHg7IG92ZXJmbG93OmhpZGRlbjsgfVxuXG4uY2xwLWluc3Rye1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmZsZXgtc3RhcnQ7IGdhcDo5cHg7XG4gIHBhZGRpbmc6MTRweCAxNnB4IDEycHg7IGJhY2tncm91bmQ6I2ZmZjtcbn1cbi5jbHAtaW5mb3tcbiAgZmxleDpub25lOyB3aWR0aDoxOHB4OyBoZWlnaHQ6MThweDsgbWFyZ2luLXRvcDoycHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBiYWNrZ3JvdW5kOnZhcigtLWI1MDApOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxMXB4OyBmb250LXN0eWxlOml0YWxpYztcbiAgZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBmb250LWZhbWlseTpHZW9yZ2lhLHNlcmlmO1xufVxuLmNscC1pbnN0ciBweyBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NzAwOyBjb2xvcjp2YXIoLS1iOTAwKTsgfVxuXG4vKiBpbnRybyBzY3JlZW4gKi9cbi5jbHAtaW50cm8tYm9keXsgcGFkZGluZzo2cHggMjBweCAyNnB4IDQ0cHg7IGJhY2tncm91bmQ6I2ZmZjsgfVxuLmNscC1pbnRyby1ib2R5IGgzeyBmb250LXNpemU6MTVweDsgZm9udC13ZWlnaHQ6ODAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWFyZ2luLWJvdHRvbToxMnB4OyB9XG4uY2xwLWJ1bGxldHN7IGxpc3Qtc3R5bGU6bm9uZTsgbWFyZ2luOjA7IHBhZGRpbmc6MDsgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMHB4OyBtYXgtd2lkdGg6NjQwcHg7IH1cbi5jbHAtYnVsbGV0cyBsaXtcbiAgZGlzcGxheTpmbGV4OyBnYXA6MTBweDsgZm9udC1zaXplOjE0cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tYjkwMCk7XG4gIHBhZGRpbmctYm90dG9tOjEwcHg7IGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCB2YXIoLS1ib3JkZXIpO1xufVxuLmNscC1idWxsZXRzIGxpOjpiZWZvcmV7IGNvbnRlbnQ6XCJcIjsgZmxleDpub25lOyB3aWR0aDo4cHg7IGhlaWdodDo4cHg7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kOnZhcigtLWI0MDApOyBtYXJnaW4tdG9wOjZweDsgfVxuXG4vKiBtZWRpYSBzY3JlZW4gKi9cbi5jbHAtbWVkaWEtcGFuZWx7XG4gIGJhY2tncm91bmQ6dmFyKC0tcGFuZWwtbWVkaWEtYmcpOyBib3JkZXItdG9wOjFweCBzb2xpZCB2YXIoLS1wYW5lbC1tZWRpYS1ib3JkZXIpO1xuICBwYWRkaW5nOjM0cHggMjBweCAyNnB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MTRweDtcbn1cbi5jbHAtbWVkaWEtY2FyZHtcbiAgd2lkdGg6MTAwJTsgbWF4LXdpZHRoOjUyMHB4O1xuICBiYWNrZ3JvdW5kOnZhcigtLW1lZGlhLWNhcmQtYmcpOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLW1lZGlhLWNhcmQtYm9yZGVyKTsgYm9yZGVyLXJhZGl1czoxMHB4O1xuICBwYWRkaW5nOjIycHggMjZweDtcbn1cbi5jbHAtbWVkaWEtY2FyZC5jbHAtaXMtdmlkZW97IG1heC13aWR0aDo2NjBweDsgcGFkZGluZzoxMnB4OyB9XG4uY2xwLW1lZGlhLXpvbmV7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6MThweDsgfVxuLmNscC1pcy12aWRlbyAuY2xwLW1lZGlhLXpvbmV7XG4gIGFzcGVjdC1yYXRpbzoxNi85OyB3aWR0aDoxMDAlOyBib3JkZXItcmFkaXVzOjZweDsgYmFja2dyb3VuZDp2YXIoLS1kYXJrKTtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IG1hcmdpbi1ib3R0b206MTJweDtcbiAgY29sb3I6I2ZmZjtcbn1cbi5jbHAtc3BlYWtlcntcbiAgZmxleDpub25lOyB3aWR0aDo1NnB4OyBoZWlnaHQ6NTZweDsgYm9yZGVyLXJhZGl1czo4cHg7IGJhY2tncm91bmQ6I2ZmZjtcbiAgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1tZWRpYS1jYXJkLWJvcmRlcik7XG4gIGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyOyBjb2xvcjp2YXIoLS1tdXRlZCk7XG59XG4uY2xwLWlzLXZpZGVvIC5jbHAtc3BlYWtlcnsgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4xMik7IGJvcmRlcjpub25lOyBjb2xvcjojZmZmOyB3aWR0aDo2NHB4OyBoZWlnaHQ6NjRweDsgYm9yZGVyLXJhZGl1czo1MCU7IH1cbi5jbHAtbWVkaWEtbWFpbnsgZmxleDoxOyBtaW4td2lkdGg6MDsgfVxuLmNscC1pcy12aWRlbyAuY2xwLW1lZGlhLW1haW57IHBhZGRpbmc6MCAxMHB4IDRweDsgfVxuLmNscC1tZWRpYS1sYWJlbHsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpOyBtYXJnaW4tYm90dG9tOjEwcHg7IH1cbi5jbHAtcHJvZ3Jlc3N7IGhlaWdodDo4cHg7IGJvcmRlci1yYWRpdXM6NnB4OyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlcjoxcHggc29saWQgdmFyKC0tbWVkaWEtY2FyZC1ib3JkZXIpOyBvdmVyZmxvdzpoaWRkZW47IH1cbi5jbHAtaXMtdmlkZW8gLmNscC1wcm9ncmVzc3sgYmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC42KTsgfVxuLmNscC1wcm9ncmVzcy1maWxseyBoZWlnaHQ6MTAwJTsgd2lkdGg6MCU7IGJhY2tncm91bmQ6dmFyKC0tY3lhbik7IGJvcmRlci1yYWRpdXM6NnB4OyB0cmFuc2l0aW9uOndpZHRoIC4zcyBsaW5lYXI7IH1cbi5jbHAtbWVkaWEtbWV0YXtcbiAgZGlzcGxheTpmbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDoxMHB4OyBmb250LXNpemU6MTNweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo2MDA7XG59XG4uY2xwLW1lZGlhLW1ldGEgc3ZneyBkaXNwbGF5OmJsb2NrOyB9XG4uY2xwLW9uY2Utbm90ZXsgZm9udC1zaXplOjEycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IGZvbnQtd2VpZ2h0OjYwMDsgfVxuXG4vKiBxdWVzdGlvbiBzY3JlZW4gKi9cbi5jbHAtcS1wYW5lbHtcbiAgYmFja2dyb3VuZDp2YXIoLS1wYW5lbC1xLWJnKTsgYm9yZGVyLXRvcDoxcHggc29saWQgdmFyKC0tcGFuZWwtcS1ib3JkZXIpO1xuICBwYWRkaW5nOjIwcHggMjJweCAzMHB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjIwcHg7XG59XG4uY2xwLXF7IGZvbnQtc2l6ZToxNS41cHg7IGZvbnQtd2VpZ2h0OjYwMDsgY29sb3I6dmFyKC0tdGV4dCk7IGxpbmUtaGVpZ2h0OjI7IH1cbi5jbHAtcW51bXsgZm9udC13ZWlnaHQ6NzAwOyB9XG4uY2xwLWRke1xuICBkaXNwbGF5OmlubGluZS1mbGV4OyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7XG4gIGJvcmRlcjpub25lOyBib3JkZXItYm90dG9tOjJweCBkb3R0ZWQgdmFyKC0tc3VidGxlKTsgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbiAgY29sb3I6dmFyKC0tYjcwMCk7IGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7XG4gIHBhZGRpbmc6NHB4IDhweCAzcHg7IG1hcmdpbjowIDJweDsgbWluLWhlaWdodDozMnB4OyBtYXgtd2lkdGg6MTAwJTtcbiAgYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDsgdmVydGljYWwtYWxpZ246YmFzZWxpbmU7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMnMgZWFzZTtcbn1cbi5jbHAtZGQ6aG92ZXJ7IGJhY2tncm91bmQ6cmdiYSgzNyw5OSwyMzUsLjA4KTsgfVxuLmNscC1kZC5jbHAtb3BlbnsgYmFja2dyb3VuZDp2YXIoLS1kZC1vcGVuLWJnKTsgfVxuLmNscC1kZCAuY2xwLWRkLXRleHR7XG4gIG92ZXJmbG93OmhpZGRlbjsgdGV4dC1vdmVyZmxvdzplbGxpcHNpczsgd2hpdGUtc3BhY2U6bm93cmFwOyBtYXgtd2lkdGg6NDIwcHg7XG59XG4uY2xwLWRkIC5jbHAtZGQtY2FyZXR7IGZvbnQtc2l6ZTo5cHg7IGNvbG9yOnZhcigtLWI3MDApOyBmbGV4Om5vbmU7IH1cbi5jbHAtZGQuY2xwLXVuYW5zd2VyZWQgLmNscC1kZC10ZXh0eyBsZXR0ZXItc3BhY2luZzoycHg7IGNvbG9yOnZhcigtLXN1YnRsZSk7IH1cbi5jbHAtZGQuY2xwLW1hcmstcmlnaHR7IGJhY2tncm91bmQ6dmFyKC0tZ3JlZW41MCk7IGJvcmRlcjoycHggc29saWQgdmFyKC0tZ3JlZW4pOyBib3JkZXItcmFkaXVzOjZweDsgY29sb3I6IzA0Nzg1NzsgfVxuLmNscC1kZC5jbHAtbWFyay13cm9uZ3sgYmFja2dyb3VuZDojRkZGMUYyOyBib3JkZXI6MnB4IHNvbGlkIHZhcigtLXJvc2UpOyBib3JkZXItcmFkaXVzOjZweDsgY29sb3I6I0JFMTIzQzsgfVxuLmNscC1kZFtkaXNhYmxlZF17IGN1cnNvcjpkZWZhdWx0OyB9XG4uY2xwLXJldmVhbHtcbiAgZGlzcGxheTpibG9jazsgZm9udC1zaXplOjEzLjVweDsgZm9udC13ZWlnaHQ6NjAwOyBjb2xvcjojMDQ3ODU3OyBsaW5lLWhlaWdodDoxLjU7XG4gIG1hcmdpbjoycHggMCAwIDI2cHg7XG59XG4uY2xwLXJldmVhbCBieyBmb250LXdlaWdodDo4MDA7IH1cbi5jbHAtdG9kby10YWd7XG4gIGZvbnQtc2l6ZToxMHB4OyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi4wOGVtOyBjb2xvcjp2YXIoLS1vcmFuZ2UpO1xuICBib3JkZXI6MXB4IHNvbGlkIGN1cnJlbnRDb2xvcjsgYm9yZGVyLXJhZGl1czo0cHg7IHBhZGRpbmc6MXB4IDZweDsgbWFyZ2luLWxlZnQ6OHB4OyB2ZXJ0aWNhbC1hbGlnbjoycHg7XG59XG5cbi8qIGRyb3Bkb3duIHBvcHVwICovXG4uY2xwLXBvcHtcbiAgcG9zaXRpb246YWJzb2x1dGU7IHotaW5kZXg6ODA7IHdpZHRoOm1pbigzNDBweCwgY2FsYygxMDB2dyAtIDQ4cHgpKTtcbiAgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTBweDtcbiAgYm94LXNoYWRvdzowIDE4cHggNDBweCAtMTJweCByZ2JhKDE1LDIzLDQyLC4yOCksIDAgNHB4IDEycHggLTZweCByZ2JhKDE1LDIzLDQyLC4xNCk7XG4gIHBhZGRpbmc6NnB4OyBcbn1cbi5jbHAtb3B0e1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjExcHg7IHdpZHRoOjEwMCU7XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyB0ZXh0LWFsaWduOmxlZnQ7XG4gIGZvbnQtc2l6ZToxNHB4OyBmb250LXdlaWdodDo2MDA7IGNvbG9yOnZhcigtLXRleHQpO1xuICBwYWRkaW5nOjEwcHggMTJweDsgbWluLWhlaWdodDo0MnB4OyBib3JkZXItcmFkaXVzOjZweDtcbiAgYm9yZGVyLWJvdHRvbToxcHggZG90dGVkIHZhcigtLWJvcmRlcik7XG4gIHRyYW5zaXRpb246YmFja2dyb3VuZCAuMTVzIGVhc2U7XG59XG4uY2xwLW9wdDpsYXN0LWNoaWxkeyBib3JkZXItYm90dG9tOm5vbmU7IH1cbi5jbHAtb3B0OmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IH1cbi5jbHAtcmFkaW97XG4gIGZsZXg6bm9uZTsgd2lkdGg6MTdweDsgaGVpZ2h0OjE3cHg7IGJvcmRlci1yYWRpdXM6NTAlO1xuICBib3JkZXI6MnB4IHNvbGlkIHZhcigtLXN1YnRsZSk7IGJhY2tncm91bmQ6I2ZmZjsgcG9zaXRpb246cmVsYXRpdmU7XG59XG4uY2xwLW9wdC5jbHAtc2VsIC5jbHAtcmFkaW97IGJvcmRlci1jb2xvcjp2YXIoLS1iNTAwKTsgfVxuLmNscC1vcHQuY2xwLXNlbCAuY2xwLXJhZGlvOjphZnRlcntcbiAgY29udGVudDpcIlwiOyBwb3NpdGlvbjphYnNvbHV0ZTsgaW5zZXQ6Mi41cHg7IGJvcmRlci1yYWRpdXM6NTAlOyBiYWNrZ3JvdW5kOnZhcigtLWI1MDApO1xufVxuXG4vKiBwcmUtc3RhcnQgLyBmaW5pc2ggKi9cbi5jbHAtaWRsZXtcbiAgcGFkZGluZzo1NnB4IDI0cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNmZmY7IGJvcmRlci1yYWRpdXM6MCAwIDEwcHggMTBweDtcbn1cbi5jbHAtaWRsZSBweyBjb2xvcjp2YXIoLS1tdXRlZCk7IGZvbnQtc2l6ZToxNXB4OyBmb250LXdlaWdodDo2MDA7IG1heC13aWR0aDo0ODBweDsgbWFyZ2luOjAgYXV0bzsgfVxuLmNscC1maW5pc2h7IHBhZGRpbmc6NDhweCAyNHB4IDU2cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNmZmY7IH1cbi5jbHAtZmluaXNoIGgzeyBmb250LXNpemU6MjJweDsgZm9udC13ZWlnaHQ6ODAwOyBtYXJnaW4tYm90dG9tOjEwcHg7IH1cbi5jbHAtZmluaXNoIHB7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC1zaXplOjE1cHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbToyMnB4OyB9XG4uY2xwLWZpbmlzaC1jaGVja3tcbiAgYmFja2dyb3VuZDp2YXIoLS1ncmVlbik7IGNvbG9yOiNmZmY7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjEwcHg7XG4gIGZvbnQtc2l6ZToxNnB4OyBmb250LXdlaWdodDo3MDA7IHBhZGRpbmc6MTNweCAzMnB4OyBtaW4taGVpZ2h0OjQ0cHg7XG4gIGJveC1zaGFkb3c6MCAxMHB4IDIycHggLThweCByZ2JhKDE2LDE4NSwxMjksLjU1KTtcbiAgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2UsIGJhY2tncm91bmQgLjJzIGVhc2U7XG59XG4uY2xwLWZpbmlzaC1jaGVjazpob3ZlcnsgdHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTJweCk7IGJhY2tncm91bmQ6IzBjYTY3ODsgfVxuXG4vKiA9PT09PT09PT09PT0gUkVTVUxUUyA9PT09PT09PT09PT0gKi9cbi5jbHAtcmVzdWx0c3sgbWFyZ2luLXRvcDozMHB4OyB9XG4uY2xwLXJlc3VsdHMgaDJ7IGZvbnQtc2l6ZToyNHB4OyBmb250LXdlaWdodDo4MDA7IGxldHRlci1zcGFjaW5nOi0uMDFlbTsgbWFyZ2luLWJvdHRvbToxNnB4OyB9XG4uY2xwLXJlcy1ncmlkeyBkaXNwbGF5OmdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczphdXRvIDFmcjsgZ2FwOjE2cHg7IGFsaWduLWl0ZW1zOnN0cmV0Y2g7IH1cbi5jbHAtY2FyZHtcbiAgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDsgcGFkZGluZzoyMnB4O1xuICBib3gtc2hhZG93OjAgMTBweCAzMHB4IC0yMHB4IHJnYmEoMTUsMjMsNDIsLjI1KSwgMCAycHggOHB4IC02cHggcmdiYSgxNSwyMyw0MiwuMDgpO1xuICB0cmFuc2l0aW9uOnRyYW5zZm9ybSAuMjVzIGVhc2UsIGJveC1zaGFkb3cgLjI1cyBlYXNlO1xufVxuLmNscC1jYXJkOmhvdmVyeyB0cmFuc2Zvcm06dHJhbnNsYXRlWSgtMnB4KTsgYm94LXNoYWRvdzowIDE2cHggMzZweCAtMjBweCByZ2JhKDE1LDIzLDQyLC4zKTsgfVxuLmNscC1yaW5nLWNhcmR7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uOyBhbGlnbi1pdGVtczpjZW50ZXI7IGdhcDo4cHg7IG1pbi13aWR0aDoyMjBweDsgfVxuLmNscC1yaW5nLXdyYXB7IHBvc2l0aW9uOnJlbGF0aXZlOyB3aWR0aDoxMzJweDsgaGVpZ2h0OjEzMnB4OyB9XG4uY2xwLXJpbmctd3JhcCBzdmd7IHRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTsgZGlzcGxheTpibG9jazsgfVxuLmNscC1yaW5nLW51bXtcbiAgcG9zaXRpb246YWJzb2x1dGU7IGluc2V0OjA7IGRpc3BsYXk6ZmxleDsgZmxleC1kaXJlY3Rpb246Y29sdW1uO1xuICBhbGlnbi1pdGVtczpjZW50ZXI7IGp1c3RpZnktY29udGVudDpjZW50ZXI7IGZvbnQtd2VpZ2h0OjgwMDtcbn1cbi5jbHAtcmluZy1udW0gYnsgZm9udC1zaXplOjI4cHg7IGxpbmUtaGVpZ2h0OjE7IGNvbG9yOnZhcigtLWI5MDApOyB9XG4uY2xwLXJpbmctbnVtIHNwYW57IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtcmluZy1jYXJkIGgzeyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo3MDA7IH1cbi5jbHAtcGFydC1jaGlwc3sgZGlzcGxheTpmbGV4OyBmbGV4LXdyYXA6d3JhcDsgZ2FwOjEwcHg7IG1hcmdpbi10b3A6MTJweDsgfVxuLmNscC1wYXJ0LWNoaXB7XG4gIGJvcmRlci1yYWRpdXM6MzJweDsgcGFkZGluZzo4cHggMTZweDsgZm9udC1zaXplOjEzcHg7IGZvbnQtd2VpZ2h0OjcwMDtcbiAgYmFja2dyb3VuZDp2YXIoLS1iNTApOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWIxMDApOyBjb2xvcjp2YXIoLS1iOTAwKTtcbn1cbi5jbHAtcGFydC1jaGlwIGJ7IGZvbnQtd2VpZ2h0OjgwMDsgfVxuLmNscC1jbGItcm93e1xuICBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjE0cHg7IGZsZXgtd3JhcDp3cmFwOyBtYXJnaW4tdG9wOjE2cHg7XG4gIHBhZGRpbmc6MTRweCAxNnB4OyBib3JkZXItcmFkaXVzOjEwcHg7IGJhY2tncm91bmQ6dmFyKC0tYjUwKTsgYm9yZGVyOjFweCBzb2xpZCB2YXIoLS1iMTAwKTtcbn1cbi5jbHAtY2xiLWJhZGdle1xuICBiYWNrZ3JvdW5kOnZhcigtLWNyaW1zb24pOyBjb2xvcjojZmZmOyBmb250LXdlaWdodDo4MDA7IGZvbnQtc2l6ZToxNHB4O1xuICBib3JkZXItcmFkaXVzOjEwcHg7IHBhZGRpbmc6OHB4IDE2cHg7XG59XG4uY2xwLWNsYi1yb3cgcHsgZm9udC1zaXplOjEzcHg7IGNvbG9yOnZhcigtLW11dGVkKTsgZm9udC13ZWlnaHQ6NjAwOyBmbGV4OjE7IG1pbi13aWR0aDoyMDBweDsgfVxuLmNscC10cmFuc2NyaXB0c3sgbWFyZ2luLXRvcDoxNnB4OyBkaXNwbGF5OmZsZXg7IGZsZXgtZGlyZWN0aW9uOmNvbHVtbjsgZ2FwOjEwcHg7IH1cbi5jbHAtdHItY2FyZHsgYmFja2dyb3VuZDojZmZmOyBib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlcik7IGJvcmRlci1yYWRpdXM6MTZweDsgb3ZlcmZsb3c6aGlkZGVuOyB9XG4uY2xwLXRyLWhlYWR7XG4gIHdpZHRoOjEwMCU7IGRpc3BsYXk6ZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjsgZ2FwOjEwcHg7XG4gIGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7IGJvcmRlcjpub25lOyBwYWRkaW5nOjE1cHggMjBweDsgdGV4dC1hbGlnbjpsZWZ0O1xuICBmb250LXNpemU6MTRweDsgZm9udC13ZWlnaHQ6NzAwOyBjb2xvcjp2YXIoLS10ZXh0KTsgbWluLWhlaWdodDo0OHB4O1xufVxuLmNscC10ci1oZWFkOmhvdmVyeyBiYWNrZ3JvdW5kOnZhcigtLWI1MCk7IH1cbi5jbHAtdHItaGVhZCAuY2xwLXRyLWNhcmV0eyBjb2xvcjp2YXIoLS1zdWJ0bGUpOyBmb250LXNpemU6MTFweDsgdHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjJzIGVhc2U7IH1cbi5jbHAtdHItY2FyZC5jbHAtb3BlbiAuY2xwLXRyLWNhcmV0eyB0cmFuc2Zvcm06cm90YXRlKDE4MGRlZyk7IH1cbi5jbHAtdHItYm9keXsgZGlzcGxheTpub25lOyBwYWRkaW5nOjAgMjBweCAxOHB4OyBmb250LXNpemU6MTRweDsgY29sb3I6dmFyKC0tbXV0ZWQpOyBmb250LXdlaWdodDo1MDA7IGxpbmUtaGVpZ2h0OjEuNzsgfVxuLmNscC10ci1jYXJkLmNscC1vcGVuIC5jbHAtdHItYm9keXsgZGlzcGxheTpibG9jazsgfVxuLmNscC10ci10b2RveyBjb2xvcjp2YXIoLS1vcmFuZ2UpOyBmb250LXdlaWdodDo3MDA7IGZvbnQtc2l6ZToxMi41cHg7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbi10b3A6OHB4OyB9XG5cbi8qIHNjcm9sbCByZXZlYWwgKi9cbi5jbHAtcmV2eyBvcGFjaXR5OjA7IHRyYW5zZm9ybTp0cmFuc2xhdGVZKDE2cHgpOyB0cmFuc2l0aW9uOm9wYWNpdHkgLjVzIGVhc2UsIHRyYW5zZm9ybSAuNXMgZWFzZTsgfVxuLmNscC1yZXYuY2xwLWlueyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpub25lOyB9XG5cbi8qID09PT09PT09PT09PSBSRVNQT05TSVZFID09PT09PT09PT09PSAqL1xuQG1lZGlhIChtYXgtd2lkdGg6NzAwcHgpe1xuICAuY2xwLXdyYXB7IHBhZGRpbmc6MTBweCAxMHB4IDQwcHg7IH1cbiAgLmNscC1oZXJveyBwYWRkaW5nOjI4cHggMjJweDsgYm9yZGVyLXJhZGl1czoxNnB4OyB9XG4gIC5jbHAtcXsgZm9udC1zaXplOjE1cHg7IH1cbiAgLmNscC1kZHsgbWluLWhlaWdodDo0MHB4OyB9XG4gIC5jbHAtZGQgLmNscC1kZC10ZXh0eyBtYXgtd2lkdGg6MTgwcHg7IH1cbiAgLmNscC1iYXJ7IGZsZXgtd3JhcDp3cmFwOyB9XG4gIC5jbHAtYmFyLXRpdGxleyBmbGV4LWJhc2lzOjEwMCU7IH1cbiAgLmNscC1xLXBhbmVseyBwYWRkaW5nOjE2cHggMTRweCAyNnB4OyB9XG4gIC5jbHAtaW50cm8tYm9keXsgcGFkZGluZy1sZWZ0OjIwcHg7IH1cbiAgLmNscC1yZXMtZ3JpZHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmcjsgfVxuICAuY2xwLW1lZGlhLWNhcmR7IHBhZGRpbmc6MTZweDsgfVxufVxuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2Upe1xuICAuY2xwLXdyYXAgKiwgLmNscC13cmFwICo6OmJlZm9yZSwgLmNscC13cmFwICo6OmFmdGVye1xuICAgIGFuaW1hdGlvbjpub25lICFpbXBvcnRhbnQ7IHRyYW5zaXRpb246bm9uZSAhaW1wb3J0YW50O1xuICB9XG4gIC5jbHAtcmV2eyBvcGFjaXR5OjE7IHRyYW5zZm9ybTpub25lOyB9XG59XG5cbi5jbHAtYXVyb3JhIHNwYW57ZmlsdGVyOmJsdXIoMzZweCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9XG4uY2xwLWhlcm8tc2hpbW1lcnt3aWxsLWNoYW5nZTpiYWNrZ3JvdW5kLXBvc2l0aW9ufVxuIjtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHMpO30pKCk7CgondXNlIHN0cmljdCc7Ci8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICBURVNUX0RBVEEgXHUyMDE0IHN3YXAgaW4gbmV3IHNldHMgaGVyZSB3aXRob3V0IHRvdWNoaW5nIG1hcmt1cC4KICAgU2hhcGU6IHsgcGFydHM6W3sgbmFtZSwgaGVhZGVyVGl0bGUsIGludHJvVGl0bGUsIGludHJvQnVsbGV0c1tdLAogICAgICAgICAgICBxSW5zdHJ1Y3Rpb24sIHRyYW5zY3JpcHQsIHNlY3Rpb25zOlt7IGxhYmVsLCBtZWRpYVR5cGUsCiAgICAgICAgICAgIGR1cmF0aW9uKHNlYyksIHRpbWVNaW51dGVzLCBtZWRpYUluc3RydWN0aW9uLAogICAgICAgICAgICBxdWVzdGlvbnM6W3sgbiwgc3RlbSwgb3B0aW9uc1s0XSwga2V5KDEtNCksIHRvZG8\/IH1dIH1dIH1dIH0KICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCnZhciBURVNUX0RBVEE9eyJ0ZXN0TGFiZWwiOiJTZXQgMyBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIiwic2V0Tm8iOjMsInRlc3RObyI6MiwicGFydHMiOlt7Im5hbWUiOiJQYXJ0IDE6IExpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJoZWFkZXJUaXRsZSI6IlNldCAzIFx1MjAxMyBQcmFjdGljZSBUZXN0IDIgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDE6IExpc3RlbmluZyB0byBQcm9ibGVtIFNvbHZpbmciLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIHRvIFByb2JsZW0gU29sdmluZyIsImludHJvQnVsbGV0cyI6WyJZb3Ugd2lsbCBoZWFyIGEgY29udmVyc2F0aW9uIHRoYXQgdGFrZXMgcGxhY2UgaW4gYW4gZXllZ2xhc3Mgc3RvcmUuIFRoZSB3b21hbiBoYXMgcXVlc3Rpb25zIGFib3V0IGJ1eWluZyBnbGFzc2VzLCBhbmQgdGhlIG1hbiBpcyBhIHNhbGVzcGVyc29uLiBJdCBwbGF5cyBpbiB0aHJlZSBzZWN0aW9ucywgYW5kIGVhY2ggc2VjdGlvbiBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgZWFjaCBzZWN0aW9uLCBxdWVzdGlvbnMgd2lsbCBhcHBlYXIuIENob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiB0aGF0IHRha2VzIHBsYWNlIGluIGFuIGV5ZWdsYXNzIHN0b3JlLiBUaGUgd29tYW4gaGFzXG5xdWVzdGlvbnMgYWJvdXQgYnV5aW5nIGdsYXNzZXMuIFRoZSBtYW4sIGEgc2FsZXNwZXJzb24sIHRyaWVzIHRvIGhlbHAgaGVyLlxuXG5TZWN0aW9uIDE6XG5NQU46IEdvb2QgbW9ybmluZy4gQ2FuIEkgaGVscCB5b3U\/XG5XT01BTjogSGkuIE15IGh1c2JhbmQgaXMgY29udmluY2VkIEkgbmVlZCBhIHBhaXIgb2YgZ2xhc3NlcyBmb3IgcmVhZGluZy4gSSd2ZSBuZXZlclxuaGFkIGdsYXNzZXMsIHNvIElcdTIwMTltIG5vdCBzdXJlIHdoYXQgdG8gZG8uXG5NQU46IFdlbGwsIHlvdSd2ZSBjb21lIHRvIHRoZSByaWdodCBwbGFjZS4gSGF2ZSB5b3UgaGFkIHlvdXIgZXllcyBjaGVja2VkIHJlY2VudGx5P1xuV09NQU46IE5vLCBub3QgcmVjZW50bHkuIEkgZ2V0IHJlZ3VsYXIgY2hlY2stdXBzIGZyb20gbXkgZG9jdG9yLCBidXQgSSBkb24ndFxucmVtZW1iZXIgaGltIGNoZWNraW5nIG15IGV5ZXMuXG5NQU46IE9LLCBzbyB0aGUgZmlyc3Qgc3RlcCBpcyB0byBzZWUgYW4gZXllIGRvY3RvciBhbmQgZ2V0IHlvdXIgZXllcyB0ZXN0ZWQuIElmIHlvdXIgdmlzaW9uXG5uZWVkcyBjb3JyZWN0aW5nLCB0aGUgZG9jdG9yIHdpbGwgZ2l2ZSB5b3UgYSBwcmVzY3JpcHRpb24uXG5XT01BTjogICAgICAgIERvIHlvdSBkbyB0aGlzIHRlc3RpbmcgaGVyZT9cbk1BTjogQWN0dWFsbHksIHRoZXJlJ3MgYW4gZXllIGNsaW5pYyByaWdodCBuZXh0IGRvb3IuIEl0XHUyMDE5cyBvbiB0aGUgbGVmdC4gWW91IGNhbiBnbyB0aGVyZSBhbmRcbm1ha2UgYW4gYXBwb2ludG1lbnQuIElmIHRoZXkgZ2l2ZSB5b3UgYSBwcmVzY3JpcHRpb24sIGJyaW5nIGl0IGhlcmUgYW5kIHdlIGNhbiBoZWxwIHlvdS5cbldPTUFOOiAgICAgICAgVGhhbmtzLiBJJ2xsIGRvIHRoYXQgcmlnaHQgbm93LlxuU2VjdGlvbiAyOlxuV09NQU46IEhpLiBJIHdhcyBoZXJlIGxhc3Qgd2Vlay4gSSBkaWQgYXMgeW91IHN1Z2dlc3RlZCBhbmQgZ290IG15IGV5ZXMgdGVzdGVkLiBJXG5oYXZlIG15IHByZXNjcmlwdGlvbi5cbk1BTjogT2ggeWVzLiBDYW4gSSBzZWUgeW91ciBwcmVzY3JpcHRpb24\/IC4gLiAuIFdlbGwsIE1ycy4gTWFja2llLCB0aGlzIHNob3dzIHlvdVxuY2VydGFpbmx5IGRvIG5lZWQgZ2xhc3NlcyFcbldPTUFOOiAgICAgICAgWWVzLCBzbyB0aGUgZG9jdG9yIHNhaWQuIEhlIHdhcyBzdXJwcmlzZWQgSVx1MjAxOWQgbWFuYWdlZCB0byB3YWl0IHNvIGxvbmcuXG5cZk1BTjogT0ssIHNvIGZpcnN0IHlvdSBuZWVkIHRvIGRlY2lkZSB3aGljaCBmcmFtZXMgeW91IGxpa2UuXG5XT01BTjogSSBkb25cdTIwMTl0IHdhbnQgYW55dGhpbmcgdG9vIHByaWNleS4gSnVzdCByZWd1bGFyIGluZXhwZW5zaXZlIGdsYXNzZXMgdG8gaGVscFxubWUgc2VlIGJldHRlciB3aWxsIGJlIGZpbmUuXG5NQU46IEhlcmVcdTIwMTlzIHdoYXQgd2UgaGF2ZSBpbiB0aGUgbG93ZXIgcHJpY2UgcmFuZ2UuIFRoZXNlIGFyZSBwbGFzdGljIGZyYW1lcywgYW5kIHRoZXlcbnVzdWFsbHkgbGFzdCBhIGxvbmcgdGltZS4gSSB0aGluayB0aGVzZSB3b3VsZCBsb29rIG5pY2Ugb24geW91LiBXaHkgZG9uXHUyMDE5dCB5b3UgdHJ5IHRoZXNlIG9uXG5hbmQgc2VlIHdoYXQgeW91IHRoaW5rP1xuV09NQU46IE9oIG15LCB0aGV5IG1ha2UgbWUgbG9vayBsaWtlIGEgZGlmZmVyZW50IHBlcnNvbiEgVGhlIGJsdWUgZnJhbWUgbG9va3NcbmdyZWF0IHdpdGggbXkgYmx1ZSBleWVzLiBXaGF0IGRvIHlvdSB0aGluaz9cbk1BTjogSSBhZ3JlZSwgYW5kIHRoZXkgYXJlIGEgZ29vZCBwcmljZS4gSVx1MjAxOWxsIHRha2Ugc29tZSBtZWFzdXJlbWVudHMgc28gd2UgY2FuIHByZXBhcmVcbnRoZSBnbGFzc2VzIGZvciB5b3UuIEl0XHUyMDE5bGwgdGFrZSBhIGNvdXBsZSBvZiB3ZWVrcyBmb3IgdGhlbSB0byBiZSByZWFkeS5cblNlY3Rpb24gMzpcbldPTUFOOiAgICAgICBJXHUyMDE5bSBoZXJlIHRvIHBpY2sgdXAgbXkgbmV3IGdsYXNzZXMuXG5NQU46IE1ycy4gTWFja2llLCBwbGVhc2UgaGF2ZSBhIHNlYXQgYW5kIElcdTIwMTlsbCBnZXQgdGhlbSBmb3IgeW91IC4gLiAuIEhlcmUgd2UgYXJlLiBUcnlcbnRoZW0gb24uXG5XT01BTjogT2ggbXkgZ29vZG5lc3MsIHRoZXNlIGFyZSBhd2Vzb21lISBJIGNhbiBzZWUhIEFuZCB0aGUgdGV4dCBvbiBteVxuY2VsbHBob25lIGlzIHNvIG11Y2ggY2xlYXJlciEgSSB3b25cdTIwMTl0IHRleHQgdGhlIHdyb25nIHBlcnNvbiBub3chIFRoaXMgaXMgd29uZGVyZnVsLlxuTUFOOiBIZXJlXHUyMDE5cyBhIHNwZWNpYWwgY2xvdGggYW5kIGNsZWFuaW5nIHNvbHV0aW9uLiBJZiB5b3UgYWx3YXlzIHVzZSB0aGlzLCB0aGUgbGVuc2VzXG53b25cdTIwMTl0IGdldCBzY3JhdGNoZWQuIEp1c3Qgd2V0IHRoZSBnbGFzc2VzLCBzcHJheSBvbiBzb21lIHNvbHV0aW9uLCB0aGVuIGRyeSB0aGVtIHdpdGggdGhlXG5jbG90aC4gSVx1MjAxOWQgZG8gdGhhdCBldmVyeSBtb3JuaW5nLlxuV09NQU46IFRoaXMgaXMgd29uZGVyZnVsISBNeSBodXNiYW5kIHdpbGwgYmUgZGVsaWdodGVkIHRoYXQgSSBjYW4gc2VlIG5vdywgYW5kXG50aGF0IHRoaXMgd2hvbGUgZXhwZXJpZW5jZSBkaWRuXHUyMDE5dCBjb3N0IGFzIG11Y2ggYXMgaGUgZmVhcmVkLiBUaGFua3Mgc28gbXVjaCEiLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMSIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjQyLCJ0aW1lTWludXRlcyI6MiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2h5IGlzIHRoZSB3b21hbiB2aXNpdGluZyB0aGUgc3RvcmU\/Iiwib3B0aW9ucyI6WyJIZXIgaHVzYmFuZCB0aGlua3Mgc2hlIG5lZWRzIGdsYXNzZXMuIiwiU2hlIHdhbnRzIHRvIHJlcGxhY2UgaGVyIGJyb2tlbiBnbGFzc2VzLiIsIlNoZSBuZWVkcyBuZXcgc3VuZ2xhc3NlcyBmb3Igc3VtbWVyLiIsIkhlciBvbGQgcHJlc2NyaXB0aW9uIGhhcyBleHBpcmVkLiJdLCJrZXkiOjAsInJlY29uIjp0cnVlfSx7Im4iOjIsInN0ZW0iOiJXaHkgZG9lcyB0aGUgbWFuIHN1Z2dlc3QgZ29pbmcgdG8gYW4gZXllIGRvY3Rvcj8iLCJvcHRpb25zIjpbInRvIGdldCBhIGJldHRlciBwcmljZSBvbiBmcmFtZXMiLCJ0byBmaWd1cmUgb3V0IGlmIHNoZSBuZWVkcyBnbGFzc2VzIiwidG8gaGF2ZSBoZXIgb2xkIGdsYXNzZXMgcmVwYWlyZWQiLCJ0byByZW5ldyBoZXIgaGVhbHRoIGluc3VyYW5jZSJdLCJrZXkiOjEsInJlY29uIjp0cnVlfV19LHsibGFiZWwiOiJDb252ZXJzYXRpb24gXHUyMDE0IFNlY3Rpb24gMiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjU2LCJ0aW1lTWludXRlcyI6MiwibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgbmV4dCBwYXJ0IG9mIHRoZSBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiIsInF1ZXN0aW9ucyI6W3sibiI6Mywic3RlbSI6IldoeSB3YXMgdGhlIGRvY3RvciBzdXJwcmlzZWQgc2hlIGhhZCB3YWl0ZWQgc28gbG9uZz8iLCJvcHRpb25zIjpbIlNoZSBoYWQgbmV2ZXIgd29ybiBnbGFzc2VzIGJlZm9yZS4iLCJIZXIgZXllcyBoYWQgbm90IGNoYW5nZWQgYXQgYWxsLiIsIlNoZSBuZWVkZWQgYSBzdHJvbmcgcHJlc2NyaXB0aW9uLiIsIlNoZSBoYWQgdmlzaXRlZCBhbm90aGVyIHN0b3JlIGZpcnN0LiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGF0IGlzIG1vc3QgaW1wb3J0YW50IGZvciB0aGUgd29tYW4gaW4gY2hvb3NpbmcgZ2xhc3Nlcz8iLCJvcHRpb25zIjpbInN0eWxlIiwiZHVyYWJpbGl0eSIsImJyYW5kIiwiY29zdCJdLCJrZXkiOjMsInJlY29uIjp0cnVlfSx7Im4iOjUsInN0ZW0iOiJXaGF0IGRvZXMgdGhlIHdvbWFuIHRoaW5rIG9mIHRoZSBmcmFtZXMgaGUgc3VnZ2VzdHM\/Iiwib3B0aW9ucyI6WyJUaGV5IGFyZSBwZXJmZWN0LiIsIlRoZXkgYXJlIHRvbyBleHBlbnNpdmUuIiwiVGhleSBhcmUgdW5jb21mb3J0YWJsZS4iLCJUaGV5IGxvb2sgb2xkLWZhc2hpb25lZC4iXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX1dfSx7ImxhYmVsIjoiQ29udmVyc2F0aW9uIFx1MjAxNCBTZWN0aW9uIDMiLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjo0MiwidGltZU1pbnV0ZXMiOjIsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZpbmFsIHBhcnQgb2YgdGhlIGNvbnZlcnNhdGlvbi4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIiwicXVlc3Rpb25zIjpbeyJuIjo2LCJzdGVtIjoiV2hhdCBkaWQgdGhlIHdvbWFuIGNvbWUgYmFjayB0byB0aGUgc3RvcmUgZm9yPyIsIm9wdGlvbnMiOlsidG8gcmV0dXJuIHRoZSBmcmFtZXMgc2hlIGJvdWdodCIsInRvIHBpY2sgdXAgaGVyIG5ldyBnbGFzc2VzIiwidG8gZ2V0IGhlciBleWVzIHRlc3RlZCBhZ2FpbiIsInRvIGJ1eSBjbGVhbmluZyBzb2x1dGlvbiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjcsInN0ZW0iOiJXaHkgZG9lcyB0aGUgbWFuIHRhbGsgYWJvdXQgY2xlYW5pbmcgaGVyIGdsYXNzZXM\/Iiwib3B0aW9ucyI6WyJIZSBpcyB0cnlpbmcgdG8gc2VsbCBoZXIgbW9yZSBwcm9kdWN0cy4iLCJUaGUgbGVuc2VzIGFyZSBkaWZmaWN1bHQgdG8gY2xlYW4uIiwiSGUgd2FudHMgaGVyIGdsYXNzZXMgdG8gcmVtYWluIGluIGdvb2Qgc2hhcGUuIiwiU2hlIGFza2VkIGhvdyB0byBzdG9yZSB0aGVtIHNhZmVseS4iXSwia2V5IjoyLCJyZWNvbiI6dHJ1ZX0seyJuIjo4LCJzdGVtIjoiV2hhdCB3aWxsIHRoZSB3b21hbiBwcm9iYWJseSBkbyBuZXh0PyIsIm9wdGlvbnMiOlsiYm9vayBhbm90aGVyIGV5ZSBhcHBvaW50bWVudCIsImJ1eSBhIHNwYXJlIHBhaXIgb2YgZ2xhc3NlcyIsInJldHVybiB0byB3b3JrIHdlYXJpbmcgdGhlbSIsInNob3cgaGVyIGh1c2JhbmQgdGhlIGJpbGwiXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX1dfV19LHsibmFtZSI6IlBhcnQgMjogTGlzdGVuaW5nIHRvIGEgRGFpbHkgTGlmZSBDb252ZXJzYXRpb24iLCJoZWFkZXJUaXRsZSI6IlNldCAzIFx1MjAxMyBQcmFjdGljZSBUZXN0IDIgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDI6IExpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyB0byBhIERhaWx5IExpZmUgQ29udmVyc2F0aW9uIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiB0d28gY28td29ya2VycyBhYm91dCBhIHN0YWZmIGF3YXJkLiBJdCBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgdGhlIGNvbnZlcnNhdGlvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gYmV0d2VlbiBhIG1hbiBhbmQgYSB3b21hbi4gVGhleSBhcmUgdHJ5aW5nIHRvIG1ha2Ugc29tZVxuY2hvaWNlcyBmb3IgYSB3b3JrIGV2ZW50LlxuXG5XT01BTjogQW5kcmV3LCBkbyB5b3UgaGF2ZSBhIG1pbnV0ZT8gV2UgbmVlZCB0byBkaXNjdXNzIHdobyBzaG91bGQgZ2V0IHRoZSBUb3BcbkVtcGxveWVlIEF3YXJkLlxuTUFOOiBTdXJlLCBJcmVuZS4gSSBndWVzcyB5b3UgYW5kIEkgYXJlIHRoaXMgeWVhclx1MjAxOXMgc2VsZWN0aW9uIGNvbW1pdHRlZS5cbldPTUFOOiAgICAgICBJIGRvblx1MjAxOXQga25vdyBhbnl0aGluZyBhYm91dCB0aGlzIGF3YXJkLiBXaGF0IGlzIGl0IGZvcj9cbk1BTjogV2VsbCwgdGhlIHNlbGVjdGlvbiBndWlkZWxpbmVzIGFyZSB2ZXJ5IGJyb2FkLCBhbmQgdGhlcmVcdTIwMTlzIHJlYWxseSBubyBkZWZpbml0aW9uIGZvclxuXHUyMDFjdG9wLlx1MjAxZCBJdCB1c2VkIHRvIGJlIGNhbGxlZCBPZmZpY2UgQ2hvaWNlIEF3YXJkLCBidXQgdGhhdCB3YXMgYSBwb3B1bGFyaXR5IGNvbnRlc3QuIFNvbWVcbnBlb3BsZSBldmVuIHBhaWQgZnJpZW5kcyB0byB2b3RlIGZvciB0aGVtLCBpZiB5b3UgY2FuIGJlbGlldmUgaXQuXG5XT01BTjogV293LCB0aGUgYXdhcmQgaXMgdGhhdCBpbXBvcnRhbnQ\/IFRoZXJlIGFyZSBhcm91bmQgNzAgZW1wbG95ZWVzIGhlcmUsIGJ1dFxub25seSBvbmUgcGVyc29uIGNhbiBnZXQgdGhlIGF3YXJkLCByaWdodD8gVW5sZXNzIHRoZXkgbWFrZSA3MCBtaW5pLWF3YXJkcywgb3IganVzdCBnaXZlXG51cCBvbiB0aGUgYXdhcmQgZW50aXJlbHkuXG5NQU46IFRoZXNlIGlkZWFzIHdlcmUgZGlzY3Vzc2VkLCB0b28uIEJ1dCB0aGUgYXdhcmQgaXMgZ2l2ZW4gZHVyaW5nIHRoZSBzdW1tZXIgb2ZmaWNlXG5waWNuaWMsIGFuZCBpdFx1MjAxOXMgcGFydCBvZiB0aGUgZnVuLiBUaGUgVG9wIEVtcGxveWVlIEF3YXJkIGhhcyBiZWVuIGdpdmVuIGZvciB0aHJlZSB5ZWFyc1xubm93LiBXZSBjYW4gb25seSBjaG9vc2UgNSByZWNpcGllbnRzLCB5b3Uga25vdy5cbldPTUFOOiAgICAgICBSZWFsbHk\/IFRoaXMgaXMgZ2V0dGluZyBpbnRlcmVzdGluZy4gU28gd2hvIGdvdCBpdCBsYXN0IHllYXI\/XG5NQU46IEkgdGhpbmsgR2luZXR0ZSBnb3QgaXQgYmVjYXVzZSBzaGUgZGVjb3JhdGVkIGhlciBvZmZpY2Ugc3BhY2Ugc28gd2VsbCwgYW5kIGJlY2F1c2VcbnNoZSBtYWRlIHRoZSBiZXN0IGNoZWVzZWNha2UgZm9yIHRoZSBwaWNuaWMuIEdlb3JnZSBhbHNvIHdvbiBpdCBiZWNhdXNlIG9mIHRoZVxuc3BlY3RhY3VsYXIgZW50ZXJ0YWlubWVudCBoZSBsaW5lZCB1cCBmb3Igb3VyIE9wZW4gSG91c2UgbGFzdCBDaHJpc3RtYXMuXG5XT01BTjogT2gsIHNvIHRoZSBjcml0ZXJpYSBhcmUgdGhhdCByZWxheGVkPyBJdCBzb3VuZHMgbGlrZSB3ZSBjb3VsZCBqdXN0IGRyYXcgbmFtZXNcbm91dCBvZiBhIGhhdCBhbmQgdGhlbiBqdXN0aWZ5IG91ciBjaG9pY2VzIGFmdGVyd2FyZHMhXG5NQU46IFdlbGwsIHRvIHRlbGwgeW91IHRoZSB0cnV0aCwgdGhhdCBpcyBob3cgR2luZXR0ZSBhbmQgR2VvcmdlIGFuZCB0aGUgb3RoZXJzIHdlcmVcbmNob3NlbiBsYXN0IHllYXIhIFdlIHB1dCBldmVyeW9uZVx1MjAxOXMgbmFtZXMgaW50byBhIGJveCBhbmQgZHJldyA1LiBUaGVuIHdlIGNhbWUgdXAgd2l0aFxucmVhc29ucyBmb3Igd2h5IHRoZXkgYXJlIHRvcCBlbXBsb3llZXMuIE9oLCBhbmQgd2UgZG9uXHUyMDE5dCBjaG9vc2UgdGhlIHNhbWUgcGVvcGxlIGVhY2hcbnllYXIsIGFuZCB5b3UgYW5kIEkgYXJlIG5vdCBlbGlnaWJsZS4gSXRcdTIwMTlzIHZlcnkgZGVtb2NyYXRpYy5cbldPTUFOOiAgICAgICBJXHUyMDE5bGwgc2F5ISBBbmQgZXZlcnlvbmVcdTIwMTlzIE9LIHdpdGggdGhpcyBzeXN0ZW0\/XG5NQU46IE9oIHllYWguIFRoZSBhd2FyZCBpcyBhIGhpZ2hsaWdodCBvZiB0aGUgcGljbmljLiBMZXRcdTIwMTlzIGdldCBzdGFydGVkLiBUaGlzIHdvblx1MjAxOXQgdGFrZVxubG9uZy4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJDb252ZXJzYXRpb24iLCJtZWRpYVR5cGUiOiJhdWRpbyIsImR1cmF0aW9uIjoxMjEsInRpbWVNaW51dGVzIjozLCJtZWRpYUluc3RydWN0aW9uIjoiTGlzdGVuIHRvIHRoZSBmb2xsb3dpbmcgY29udmVyc2F0aW9uLiBZb3Ugd2lsbCBoZWFyIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMiBtaW51dGVzIGxvbmcuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiV2h5IGFyZSB0aGUgd29tYW4gYW5kIHRoZSBtYW4gbWVldGluZyB0b2dldGhlcj8iLCJvcHRpb25zIjpbInRvIGNob29zZSBhd2FyZCB3aW5uZXJzIiwidG8gcGxhbiB0aGUgc3VtbWVyIHBpY25pYyIsInRvIHJldmlldyBjb21wYW55IHBvbGljaWVzIiwidG8gaW50ZXJ2aWV3IGpvYiBjYW5kaWRhdGVzIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Miwic3RlbSI6IldoYXQgaXMgdGhlIG1hbidzIG9waW5pb24gb2YgdGhlIGF3YXJkPyIsIm9wdGlvbnMiOlsiSXQgaXMgdW5mYWlyIHRvIG5ldyBzdGFmZi4iLCJJdCBwcm92aWRlcyBlbnRlcnRhaW5tZW50LiIsIkl0IHNob3VsZCBiZSBkaXNjb250aW51ZWQuIiwiSXQgcmV3YXJkcyB0aGUgaGFyZGVzdCB3b3JrZXJzLiJdLCJrZXkiOjEsInJlY29uIjp0cnVlfSx7Im4iOjMsInN0ZW0iOiJIb3cgYXJlIHRoZSBhd2FyZCB3aW5uZXJzIGNob3Nlbj8iLCJvcHRpb25zIjpbImJ5IGRyYXdpbmcgbmFtZXMgZnJvbSBhIGJveCIsImJ5IGEgdm90ZSBvZiBhbGwgZW1wbG95ZWVzIiwiYnkgdGhlIG1hbmFnZXJzJyBkZWNpc2lvbiIsImJhc2VkIG9uIGFubnVhbCBwZXJmb3JtYW5jZSJdLCJrZXkiOjAsInJlY29uIjp0cnVlfSx7Im4iOjQsInN0ZW0iOiJXaGVuIGlzIHRoZSBhd2FyZCBnaXZlbj8iLCJvcHRpb25zIjpbImF0IHRoZSB3aW50ZXIgcGFydHkiLCJhdCB0aGUgc3VtbWVyIHBpY25pYyIsImR1cmluZyBhIG1vbnRobHkgbWVldGluZyIsIm9uIHRoZSBjb21wYW55IGFubml2ZXJzYXJ5Il0sImtleSI6MSwicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoaWNoIHN0YXRlbWVudCBpcyBwcm9iYWJseSB0cnVlIGFib3V0IHRoZSB3b21hbj8iLCJvcHRpb25zIjpbIlNoZSBoYXMgd29uIHRoZSBhd2FyZCBiZWZvcmUuIiwiU2hlIGlzIG9uZSBvZiB0aGUgbWFuYWdlcnMuIiwiU2hlIGlzIGEgbmV3IGVtcGxveWVlLiIsIlNoZSBvcmdhbml6ZWQgdGhlIGV2ZW50LiJdLCJrZXkiOjIsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaGVhZGVyVGl0bGUiOiJTZXQgMyBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCAzOiBMaXN0ZW5pbmcgZm9yIEluZm9ybWF0aW9uIiwiaW50cm9UaXRsZSI6Ikxpc3RlbmluZyBmb3IgSW5mb3JtYXRpb24iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIGNvbnZlcnNhdGlvbiBiZXR3ZWVuIGEgbWFuIGFuZCBhIHdlZGRpbmcgcGhvdG9ncmFwaGVyLiBJdCBwbGF5cyBvbmx5IG9uY2UuIiwiQWZ0ZXIgdGhlIGNvbnZlcnNhdGlvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uLiJdLCJxSW5zdHJ1Y3Rpb24iOiJDaG9vc2UgdGhlIGJlc3Qgd2F5IHRvIGFuc3dlciBlYWNoIHF1ZXN0aW9uIGZyb20gdGhlIGRyb3AtZG93biBtZW51ICggXHUyNWJlICkuIiwidHJhbnNjcmlwdCI6IllvdSB3aWxsIGhlYXIgYSBjb252ZXJzYXRpb24gd2hlcmUgYSBtYW4gaXMgdHJ5aW5nIHRvIGFycmFuZ2UgaGlzIHVwY29taW5nIHdlZGRpbmcuXG5cbk1BTjogSGVsbG8hIEknbSBnZXR0aW5nIG1hcnJpZWQgdGhpcyBKdWx5IGFuZCBJJ20gbG9va2luZyBmb3IgYSB3ZWRkaW5nIHBob3RvZ3JhcGhlci5cbk15IGZyaWVuZCBKb2huIHJlZmVycmVkIHlvdSB0byBtZS4gSGUgZ290IG1hcnJpZWQgbGFzdCBTZXB0ZW1iZXIgYW5kIHNhaWQgeW91IHdlcmVcbmV4Y2VsbGVudC4gSSBzYXcgeW91ciBwaG90b3MgYW5kIHRoZXkgd2VyZSBiZWF1dGlmdWwuIEhlIGFsc28gc2hvd2VkIG1lIHlvdXIgb25saW5lXG5wb3J0Zm9saW8sIGFuZCBJIGhhdmUgdG8gc2F5IEkgd2FzIHJlYWxseSBpbXByZXNzZWQgd2l0aCB5b3VyIHNlbnNlIG9mIGRlc2lnbi5cbldPTUFOOiBPaCB0aGFua3MsIHRoYXQncyBuaWNlIHRvIGhlYXIuIFllcywgSSByZW1lbWJlciBKb2huXHUyMDE5cyB3ZWRkaW5nLiBJIGxvdmVcbmdhcmRlbiBjZXJlbW9uaWVzLiBXZWxsLCBJJ2QgYmUgdmVyeSBpbnRlcmVzdGVkIGluIHBob3RvZ3JhcGhpbmcgeW91ciB3ZWRkaW5nLiBDb3VsZFxueW91IGZpcnN0IHRlbGwgbWUgdGhlIGRhdGUgYW5kIGxvY2F0aW9uLCBzbyBJIGNhbiBjaGVjayBteSBjYWxlbmRhciBhbmQgc2VlIGlmIEknbVxuYXZhaWxhYmxlP1xuTUFOOiBTdXJlISBJdCdzIEp1bHkgMm5kLCBhbmQgaXQgd2lsbCBiZSBhdCBteSBwYXJlbnRzJyBwcm9wZXJ0eSBpbiBIYWxpZmF4LiBJdCB3b24ndCBiZSBhc1xuZmFuY3kgYXMgSm9oblx1MjAxOXMgd2VkZGluZywgYnV0IHRoZXkgaGF2ZSBhIGJlYXV0aWZ1bCBiYWNreWFyZCBvdmVybG9va2luZyB0aGUgb2NlYW4uIE15XG5maWFuY1x1MDBlOWUgU2FyYWggYW5kIEkgd2FudGVkIHNvbWV0aGluZyBvdXRkb29ycy5cbldPTUFOOiBIbW1tbW0gLiAuIC4gaXQgbG9va3MgbGlrZSBJIGFtIHVuYXZhaWxhYmxlIG9uIHRoYXQgZGF5LiBJJ20gZmx5aW5nIGF3YXlcbnRvIHNob290IGFub3RoZXIgd2VkZGluZy4gTm93LCB3aGVuIHlvdSBjaGVja2VkIG15IG9ubGluZSBwb3J0Zm9saW8sIHlvdSBtdXN0IGhhdmVcbnNlZW4gbXkgY29sbGVhZ3VlLCBDaW5keSBTaGluXHUyMDE5cyB3b3JrLiBXb3VsZCB5b3UgYmUgaW50ZXJlc3RlZCBpbiBoYXZpbmcgaGVyIHNob290IHlvdXJcbndlZGRpbmc\/XG5NQU46IE9oLCB0aGF0XHUyMDE5cyBzdWNoIGEgcGl0eS4gSSBndWVzcyBJIHNob3VsZCBoYXZlIGNhbGxlZCBlYXJsaWVyLiBZZXMsIElcdTIwMTl2ZSBzZWVuIGhlciB3b3JrLFxuYW5kIEkgbGlrZWQgaXQgYXMgd2VsbC4gSGVyIHdvcmsgYmVhcnMgYSBsb3Qgb2Ygc2ltaWxhcml0aWVzIHRvIHlvdXJzLlxuV09NQU46IEl0IGNlcnRhaW5seSBkb2VzLCBhbmQgdGhhdFx1MjAxOXMgYmVjYXVzZSBzaGUgd2FzIG15IG1lbnRvci4gSVx1MjAxOW0gbG9va2luZyBhdCBoZXJcbnNjaGVkdWxlIGFuZCBzaGUgaGFwcGVucyB0byBiZSBhdmFpbGFibGUgdGhhdCBkYXkuXG5NQU46IFRoYXQgaXMgcmVhbGx5IGx1Y2t5ISBXb3VsZCBwcmljZXMgYmUgY29tcGFyYWJsZT9cblxmV09NQU46IFdlIGNoYXJnZSB0aGUgc2FtZSByYXRlcywgYW5kIHdlIG9mZmVyIHRocmVlIGRpZmZlcmVudCBwYWNrYWdlcy4gVGhlIGJhc2ljXG5wYWNrYWdlIHN0YXJ0cyBhdCAkMzAwMC4gSXQgaW5jbHVkZXMgYW4gZW5nYWdlbWVudCBwb3J0cmFpdCBzZXNzaW9uIGFuZCBjb21wbGV0ZSB3ZWRkaW5nXG5kYXkgY292ZXJhZ2UsIHdoaWNoIGNvdmVycyBldmVyeXRoaW5nIGZyb20gZ2V0dGluZyByZWFkeSwgdG8gY3V0dGluZyBvZiB0aGUgY2FrZSxcbmRhbmNpbmcsIGFuZCBndWVzdCBwb3J0cmFpdHMuIEluIGFkZGl0aW9uLCB3ZSBjaGFyZ2UgdHJhdmVsIGNvc3RzLCBmb29kLCBhbmQgbG9kZ2luZyB3aGVuXG50aGUgY2VyZW1vbnkgaXMgb3V0IG9mIHRvd24uXG5NQU46IEJhc2ljIGlzIGZpbmUgd2l0aCBtZS4gVGhhdCdzIGFscmVhZHkgc2xpZ2h0bHkgb3ZlciBteSBidWRnZXQsIHNvIEknZCByYXRoZXIgbm90IGJlXG50ZW1wdGVkIGJ5IHRoZSBvdGhlciBwYWNrYWdlcyEgRG8gSSBjaG9vc2Ugd2hpY2ggcGhvdG9zIEkgd2FudCBwcmludGVkPyBJcyBwcmludGluZ1xuaW5jbHVkZWQ\/XG5XT01BTjogT2YgY291cnNlLiBZb3UnbGwgcmVjZWl2ZSBhIGxpbmsgdG8gYW4gb25saW5lIHBob3RvIGdhbGxlcnkgb2YgdGhlIGJlc3QgMjAwXG5waG90b3Mgd2l0aGluIDMgd2Vla3MuIFlvdSBjYW4gcGljayBvdXQgdGhlIDUwIHlvdSBsaWtlLlxuTUFOOiBUaGF0IHNvdW5kcyBncmVhdC4gSVx1MjAxOWxsIHRhbGsgaXQgb3ZlciB3aXRoIG15IGZpYW5jXHUwMGU5ZSBhbmQgZ2V0IGJhY2sgdG8geW91IGluIGEgZmV3XG5kYXlzLiBUaGFuayB5b3UgdmVyeSBtdWNoISIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IkNvbnZlcnNhdGlvbiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjE0NCwidGltZU1pbnV0ZXMiOjMsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyBjb252ZXJzYXRpb24uIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAyLjUgbWludXRlcyBsb25nLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IkhvdyBkaWQgdGhlIG1hbiBmaW5kIG91dCBhYm91dCB0aGUgcGhvdG9ncmFwaGVyPyIsIm9wdGlvbnMiOlsiSGUgc2F3IGFuIGFkdmVydGlzZW1lbnQgb25saW5lLiIsIkhlIGZvdW5kIGhlciBhdCBhIHdlZGRpbmcgZmFpci4iLCJBIGZhbWlseSBtZW1iZXIgcmVjb21tZW5kZWQgaGVyLiIsIkhpcyBmcmllbmQgd2FzIGEgZm9ybWVyIGNsaWVudC4iXSwia2V5IjozLCJyZWNvbiI6dHJ1ZX0seyJuIjoyLCJzdGVtIjoiV2hhdCB3aWxsIHRoZSBtYW4ncyB3ZWRkaW5nIGJlIGxpa2U\/Iiwib3B0aW9ucyI6WyJhIHNpbXBsZSBjZXJlbW9ueSBhdCBoaXMgcGFyZW50cycgcGxhY2UiLCJhIGxhcmdlIHJlY2VwdGlvbiBhdCBhIGhvdGVsIiwiYSBkZXN0aW5hdGlvbiB3ZWRkaW5nIGFicm9hZCIsImEgZm9ybWFsIGV2ZW50IGluIGEgY2h1cmNoIl0sImtleSI6MCwicmVjb24iOnRydWV9LHsibiI6Mywic3RlbSI6IldoeSBkb2VzIHRoZSB3b21hbiBzdWdnZXN0IGFub3RoZXIgcGhvdG9ncmFwaGVyPyIsIm9wdGlvbnMiOlsiYmVjYXVzZSB0aGUgdmVudWUgaXMgdG9vIGZhciBhd2F5IiwiYmVjYXVzZSBzaGUgaXMgYWxyZWFkeSBib29rZWQgZm9yIHRoYXQgZGF5IiwiYmVjYXVzZSB0aGUgYnVkZ2V0IGlzIHRvbyBzbWFsbCIsImJlY2F1c2Ugc2hlIGlzIGdvaW5nIG9uIGhvbGlkYXkiXSwia2V5IjoxLCJyZWNvbiI6dHJ1ZX0seyJuIjo0LCJzdGVtIjoiV2h5IGRvZXMgdGhlIG1hbiBjb25zaWRlciB0aGUgd29tYW4ncyBwYXJ0bmVyPyIsIm9wdGlvbnMiOlsiYmVjYXVzZSBoZXIgcHJpY2VzIGFyZSBtdWNoIGxvd2VyIiwiYmVjYXVzZSBzaGUgaXMgYXZhaWxhYmxlIHNvb25lciIsImJlY2F1c2UgaGUgYXBwcmVjaWF0ZXMgQ2luZHkgU2hpbidzIHdvcmsiLCJiZWNhdXNlIGhpcyBmcmllbmQgaW5zaXN0ZWQgb24gaGVyIl0sImtleSI6MiwicmVjb24iOnRydWV9LHsibiI6NSwic3RlbSI6IldoYXQgaXMgdGhlIG1hbiBwcmVwYXJlZCB0byBwYXkgZm9yPyIsIm9wdGlvbnMiOlsidGhlIGJhc2ljIHBhY2thZ2UgcHJpY2UgYW5kIG5vdGhpbmcgZWxzZSIsInRoZSBmdWxsIHByZW1pdW0gcGFja2FnZSIsImV4dHJhIHByaW50cyBhbmQgYW4gYWxidW0iLCJhbiBhZGRpdGlvbmFsIHNlY29uZCBwaG90b2dyYXBoZXIiXSwia2V5IjowLCJyZWNvbiI6dHJ1ZX0seyJuIjo2LCJzdGVtIjoiSG93IHdpbGwgdGhlIHBob3RvZ3JhcGhlciBwcmVzZW50IHRoZSBwaG90b3M\/Iiwib3B0aW9ucyI6WyJhcyBhIHByaW50ZWQgcGhvdG8gYWxidW0iLCJhcyBhbiBvbmxpbmUgZGlzcGxheSBvZiB0aGUgYmVzdCBwaG90b3MiLCJvbiBhIFVTQiBkcml2ZSBvbmx5IiwiYXMgZnJhbWVkIGVubGFyZ2VtZW50cyJdLCJrZXkiOjEsInJlY29uIjp0cnVlfV19XX0seyJuYW1lIjoiUGFydCA0OiBMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJoZWFkZXJUaXRsZSI6IlNldCAzIFx1MjAxMyBQcmFjdGljZSBUZXN0IDIgXHUyMDEzIExpc3RlbmluZyBQYXJ0IDQ6IExpc3RlbmluZyB0byBhIE5ld3MgSXRlbSIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBOZXdzIEl0ZW0iLCJpbnRyb0J1bGxldHMiOlsiWW91IHdpbGwgaGVhciBhIG5ld3MgaXRlbSBhYm91dCBwcm90ZXN0ZXJzIGNvbXBsYWluaW5nIGFib3V0IGEgc2lnbi4gSXQgcGxheXMgb25seSBvbmNlLiIsIkFmdGVyIHRoZSBuZXdzIGl0ZW0sIGNvbXBsZXRlIGVhY2ggc3RhdGVtZW50IHVzaW5nIHRoZSBkcm9wLWRvd24gbWVudS4iXSwicUluc3RydWN0aW9uIjoiQ2hvb3NlIHRoZSBiZXN0IHdheSB0byBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCBmcm9tIHRoZSBkcm9wLWRvd24gbWVudSAoIFx1MjViZSApLiIsInRyYW5zY3JpcHQiOiJZb3Ugd2lsbCBoZWFyIGEgbmV3cyBpdGVtIGFib3V0IHByb3Rlc3RlcnMgY29tcGxhaW5pbmcgYWJvdXQgYSBzaWduLlxuXG5BIGdyb3VwIG9mIHByb3Rlc3RlcnMgZ2F0aGVyZWQgYXQgdGhlIGxvY2FsIHJhY2V0cmFjayB5ZXN0ZXJkYXksIGFza2luZyBwZW9wbGUgdG8gc2lnbiBhXG5wZXRpdGlvbiB0aGV5IGludGVuZGVkIHRvIHRha2UgdG8gY2l0eSBoYWxsLiBUaGUgcGV0aXRpb24gcmVxdWVzdGVkIHRoYXQgYSBuZXdseSBlcmVjdGVkXG5iaWxsYm9hcmQgYWR2ZXJ0aXNpbmcgdGhlIHJhY2V0cmFjayBiZSByZW1vdmVkLiBQcm90ZXN0ZXJzIGNsYWltIHRoYXQgdGhlIHNpZ24sIHdpdGggaXRzXG5ibGlua2luZyBsaWdodHMgYW5kIGFuaW1hdGlvbiBvZiBhIHJhY2luZyBob3JzZSwgaXMgaGlnaGx5IGRpc3RyYWN0aW5nLiBKaWxsaWFuIFNtaXRoLFxuc3Bva2VzcGVyc29uIGZvciB0aGUgZ3JvdXAsIHBvaW50ZWQgb3V0IHRoYXQgdGhlIGh1bWFuIGV5ZSBpcyBuYXR1cmFsbHkgYXR0cmFjdGVkIHRvIGJyaWdodFxuXGZsaWdodHMgYW5kIG1vdmVtZW50LiBTaGUgc2FpZCB0aGF0LCB3aGVuIHlvdVx1MjAxOXJlIGRyaXZpbmcgb24gdGhlIGhpZ2h3YXksIHRoYXRcdTIwMTlzIGEgdmVyeVxuYmFkIHRoaW5nLlxuXG5TbWl0aCB3ZW50IG9uIHRvIHNheSB0aGF0IHVzaW5nIGEgY2VsbHBob25lIHdoaWxlIGRyaXZpbmcgaXMgbm93IGlsbGVnYWwgYmVjYXVzZSBvZiB0aGVcbmRpc3RyYWN0aW9uIGZhY3Rvci4gVGhlcmVmb3JlLCBzaGUgc2FpZCwgcm9hZHNpZGUgYmlsbGJvYXJkIGFkdmVydGlzaW5nIHNob3VsZCBhbHNvIGJlXG5pbGxlZ2FsLCBlc3BlY2lhbGx5IHdoZW4gaXQgaXMgZGVzaWduZWQgdG8gdGFrZSBvdXIgYXR0ZW50aW9uIG9mZiB0aGUgcm9hZC5cblxuVGhlIG93bmVyIG9mIHRoZSByYWNldHJhY2sgaW5pdGlhbGx5IHJlZnVzZWQgdG8gY29tbWVudCwgYnV0LCB3aGVuIHByZXNzZWQsIGhlIGluc2lzdGVkXG50aGVyZSB3YXMgbm90aGluZyB3cm9uZyB3aXRoIGhpcyBzaWduLiBIZSBwb2ludGVkIG91dCB0aGF0IHRoZXJlXHUyMDE5cyBubyBsYXcgYWdhaW5zdCBpdCwgc28gaGVcbnNlZXMgbm8gb2JsaWdhdGlvbiB0byB0YWtlIGl0IGRvd24uXG5cblBvbGljZSBjb3VsZCBuZWl0aGVyIGNvbmZpcm0gbm9yIGRpc2NvbmZpcm0gdGhhdCByb2Fkc2lkZSBiaWxsYm9hcmRzIGFyZSBhIGNvbnRyaWJ1dGluZ1xuZmFjdG9yIGluIGhpZ2h3YXkgYWNjaWRlbnRzLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6Ik5ld3MgSXRlbSIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjcyLCJ0aW1lTWludXRlcyI6MywibWVkaWFJbnN0cnVjdGlvbiI6Ikxpc3RlbiB0byB0aGUgZm9sbG93aW5nIG5ld3MgaXRlbS4gWW91IHdpbGwgaGVhciBpdCBvbmx5IG9uY2UuIEl0IGlzIGFib3V0IDEuNSBtaW51dGVzIGxvbmcuIiwicXVlc3Rpb25zIjpbeyJuIjoxLCJzdGVtIjoiVGhlIHByb3Rlc3RlcnMgd2VyZSIsIm9wdGlvbnMiOlsiY29sbGVjdGluZyBzaWduYXR1cmVzLiIsImRpc3R1cmJpbmcgc3BlY3RhdG9ycy4iLCJ3YWl0aW5nIGF0IGNpdHkgaGFsbC4iLCJ3YXRjaGluZyByYWNlaG9yc2VzLiJdLCJrZXkiOjAsInJlY29uIjpmYWxzZX0seyJuIjoyLCJzdGVtIjoiVGhlIHByb3Rlc3RlcnMgYmVsaWV2ZWQgdGhlIHNpZ24iLCJvcHRpb25zIjpbIndhcyBhIHNhZmV0eSBjb25jZXJuLiIsImRpc3BsYXllZCBzY2FyeSBpbWFnZXMuIiwiaGFkIGluYWNjdXJhdGUgY29udGVudC4iLCJ3YXMgdG9vIGxhcmdlIGZvciB0aGUgcm9hZC4iXSwia2V5IjowLCJyZWNvbiI6ZmFsc2V9LHsibiI6Mywic3RlbSI6IlNwb2tlc3BlcnNvbiBKaWxsaWFuIFNtaXRoIG1lbnRpb25lZCBhIGNlbGxwaG9uZSB0byIsIm9wdGlvbnMiOlsicXVvdGUgYSBsZWdhbCBjYXNlLiIsIm1ha2UgYSBjb21wYXJpc29uLiIsInJlcXVlc3QgaW5mb3JtYXRpb24uIiwic3VnZ2VzdCBhIHNvbHV0aW9uLiJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX0seyJuIjo0LCJzdGVtIjoiVGhlIHJhY2V0cmFjayBvd25lciBpcyIsIm9wdGlvbnMiOlsidW5jb252aW5jZWQuIiwibWlzaW5mb3JtZWQuIiwiY29uZnVzZWQuIiwidW5pbnRlcmVzdGVkLiJdLCJrZXkiOjAsInJlY29uIjpmYWxzZX0seyJuIjo1LCJzdGVtIjoiVGhlIHBvbGljZSB3ZXJlIGNvbnN1bHRlZCBhYm91dCIsIm9wdGlvbnMiOlsidGhlIHByb3Rlc3RlcnMnIHJpZ2h0cy4iLCJ0aGUgc2lnbidzIGVmZmVjdGl2ZW5lc3MuIiwicHJvYmxlbXMgY2F1c2VkIGJ5IHNpZ25zLiIsImFjY2lkZW50IHJhdGVzIGluIHRoZSBhcmVhLiJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX1dfV19LHsibmFtZSI6IlBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImhlYWRlclRpdGxlIjoiU2V0IDMgXHUyMDEzIFByYWN0aWNlIFRlc3QgMiBcdTIwMTMgTGlzdGVuaW5nIFBhcnQgNTogTGlzdGVuaW5nIHRvIGEgRGlzY3Vzc2lvbiIsImludHJvVGl0bGUiOiJMaXN0ZW5pbmcgdG8gYSBEaXNjdXNzaW9uIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIHdhdGNoIGEgZGlzY3Vzc2lvbiBiZXR3ZWVuIHRocmVlIHBlb3BsZSB3aG8gd29yayBhdCBhIGNvbGxlZ2UuIFRoZSB0d28gd29tZW4gd29yayBhcyB3cml0aW5nIHNraWxscyB0dXRvcnMsIGFuZCB0aGUgbWFuIGlzIHRoZWlyIHN1cGVydmlzb3IuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgZGlzY3Vzc2lvbiwgcXVlc3Rpb25zIHdpbGwgYXBwZWFyLiBDaG9vc2UgdGhlIGJlc3QgYW5zd2VyIHRvIGVhY2ggcXVlc3Rpb24uIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gYW5zd2VyIGVhY2ggcXVlc3Rpb24gZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgd2F0Y2ggYSBkaXNjdXNzaW9uIGJldHdlZW4gdGhyZWUgcGVvcGxlIHdobyB3b3JrIGF0IGEgY29sbGVnZS4gVGhlIHR3b1xud29tZW4gd29yayBhcyB3cml0aW5nIHNraWxscyB0dXRvcnMsIGFuZCB0aGUgbWFuIGlzIHRoZWlyIHN1cGVydmlzb3IuXG5cbk1heDogT0ssIElcdTIwMTl2ZSBiZWVuIGdldHRpbmcgZW1haWxzIHRoYXQgeW91IHR3byBhcmUgcmVmdXNpbmcgdG8gaGVscCBzdHVkZW50cyB3aXRoIHRoZWlyXG53cml0aW5nIGFzc2lnbm1lbnRzLiBJdFx1MjAxOXMgbXkgdW5kZXJzdGFuZGluZ1x1MjAxNGFuZCBJIHRob3VnaHQgdGhhdCB5b3UgdHdvIHVuZGVyc3Rvb2QgdGhpc1xuYXMgd2VsbFx1MjAxNHRoYXQgdGhhdCBpcyBleGFjdGx5IHdoYXQgeW91ciBqb2IgaXMuIFlvdSBhcmUgdGhlIFdyaXRpbmcgU2tpbGxzIFR1dG9ycy5cblJvYmluOiBZZXMsIGJ1dCBpdFx1MjAxOXMgdGhlIGVuZCBvZiB0aGUgeWVhciwgYW5kIHN0dWRlbnRzIGFyZSBjb21pbmcgdG8gdXMgZm9yIGhlbHAgd2l0aCB0aGVcbmVuZC1vZi10aGUteWVhciBhc3NpZ25tZW50cyB3b3J0aCBoYWxmIHRoZWlyIGdyYWRlISBXZSBib3RoIHRoaW5rIGl0XHUyMDE5cyBjaGVhdGluZyBhbmRcdTIwMTRcbk1heDogQ2hlYXRpbmc\/IEhvdyBzbz9cbkNsYWlyZTogV2VsbCwgYnkgdGhlIHRpbWUgd2VcdTIwMTlyZSB0aHJvdWdoIHdpdGggdGhlaXIgZXNzYXksIHdlXHUyMDE5dmUgdHVybmVkIGEgRCBlc3NheSBpbnRvIGEgQlxuZXNzYXkuIFdlXHUyMDE5dmUgZG9uZSB0aGF0LiBXaXRoIG91ciBjb21tZW50cywgb3VyIHN1Z2dlc3Rpb25zLCBvdXIgY29ycmVjdGlvbnMsIG91clxucXVlc3Rpb25zIC4gLiAuXG5Sb2JpbjogR2V0dGluZyB0aGF0IGxldmVsIG9mIGhlbHAgd2l0aCBhIG1ham9yIHllYXItZW5kIGVzc2F5PyBJdCBpc25cdTIwMTl0IGZhaXIgdG8gdGhlIHN0dWRlbnRzXG50aGF0IGhhdmUgZG9uZSB0aGUgd29yayBvbiB0aGVpciBvd24uXG5cZk1heDogSXNuXHUyMDE5dCB0aGVyZSBzb21lIHdheSB5b3UgY2FuLCBJIGRvblx1MjAxOXQga25vdywgbGVhZCB0aGUgc3R1ZGVudHMgdG8gbWFrZSB0aGVcbmltcHJvdmVtZW50cyB0aGVtc2VsdmVzPyBTaG93IHRoZW0gd2hhdCB0byBkbyB3aXRob3V0IGRvaW5nIGl0IGZvciB0aGVtP1xuUm9iaW46IE5vcm1hbGx5LCB5ZXMuIEJ1dCBpdFx1MjAxOXMgTWFyY2gsIGFuZCB0aGUgc3R1ZGVudHMgdGhhdCBhcmUgY29taW5nIHRvIG91ciBkb29yIG5vd1x1MjAxNFxuZm9yIHRoZSBmaXJzdCB0aW1lXHUyMDE0dGhleVx1MjAxOXJlIG5vdCBpbnRlcmVzdGVkIGluIGRvaW5nIHRoZSB3b3JrIHRoZW1zZWx2ZXMuIFRoZXkgY29tZSBpbixcbnRocm93IHRoZWlyIHJvdWdoIG5vdGVzIG9uIHRoZSBkZXNrLCBhbmQgZXhwZWN0IHVzIHRvIGRvIHRoZSByZXN0IG9mIHRoZSB3b3JrLlxuQ2xhaXJlOiBXZSBtYWtlIHN1Z2dlc3Rpb25zIGFuZCBkZW1vbnN0cmF0ZSBob3cgdG8gdXNlIHRoZW0sIGJ1dCB0aGUgc3R1ZGVudHMganVzdFxucHJldGVuZCB0byBsaXN0ZW5cdTIwMTR0aGV5IGRpZG5cdTIwMTl0IGNvbWUgaGVyZSB0byBsZWFybjsgdGhleSBjYW1lIGhlcmUgZm9yIGZyZWUgZWRpdGluZy5cbk1heDogU28gaG93IGRvIHlvdSBoZWxwPyBJIG1lYW4sIHdoYXQgZGlkIHdlIGhpcmUgeW91IGZvcj9cblJvYmluOiBXZWxsLCB0aGUgd2F5IEkgc2VlIGl0IGlzIHRoYXQgd2VcdTIwMTlyZSBoZXJlIHRvIGhlbHAgdGhlIHN0dWRlbnRzIHdpdGggdGhlaXJcbmhvbWV3b3JrXHUyMDE0dGhlIGRheS10by1kYXkgYXNzaWdubWVudHMuIEFuZCB0aG9zZSBzdHVkZW50cyB0aGF0IGhhdmUgZ290dGVuIGhlbHAgd2l0aFxudGhlIHByYWN0aWNlIHdvcmsgYXJlIHRoZW4gcHJlcGFyZWQgdG8gZG8gdGhlIGdyYWRlZCBhc3NpZ25tZW50cyBvbiB0aGVpciBvd24uIFRoZVxub3RoZXJzXHUyMDE0SSBhc3N1bWUgdGhleSBkb25cdTIwMTl0IGV2ZW4gZG8gdGhlaXIgaG9tZXdvcmsuIExpa2UgQ2xhaXJlIHNhaWQsIHRoZXlcdTIwMTlyZSBqdXN0IGhlcmVcbnRvIGdldCB0aGVpciBjb3JyZWN0aW9ucyBkb25lIGZvciBmcmVlLlxuTWF4OiBXaGF0IGlmIHlvdSBoZWxwZWQgdGhlbSB3aXRoIHRoZSBmaW5hbCBhc3NpZ25tZW50cyBvbmx5IHdpdGggdGhlIHRlYWNoZXJcdTIwMTlzXG5hdXRob3JpemF0aW9uPyBUaGF0IHdheSB0aGUgaW5zdHJ1Y3RvciB3b3VsZCBrbm93IHdoaWNoIGVzc2F5cyBoYXZlIGhhZCB0aGUgYmVuZWZpdCBvZlxueW91ciBoZWxwIGFuZCB3aGljaCBvbmVzIHRoZSBzdHVkZW50cyBoYXZlIGRvbmUgb24gdGhlaXIgb3duLiBBbmQgdGhleSBjYW4gdGFrZSB0aGF0XG5pbnRvIGFjY291bnQgd2hlbiB0aGV5XHUyMDE5cmUgZG9pbmcgdGhlIGdyYWRpbmcuXG5DbGFpcmU6IEkgZG9uXHUyMDE5dCBrbm93IC4gLiAuIEkgZ3Vlc3Mgd2UgY291bGQgdHJ5LiBBcyBsb25nIGFzIHRoZSB0ZWFjaGVycyBrbm93IHRoYXQgd2hhdFxudGhleVx1MjAxOXJlIGdyYWRpbmcgaXMgcGFydGx5IG91ciB3b3JrLCBJIGd1ZXNzIHRoYXQgd291bGQgYmUgZmFpci4gQnV0XHUyMDE0SVx1MjAxOW0gdGVsbGluZyB5b3VcdTIwMTRhc1xuc29vbiBhcyB3b3JkIGdldHMgb3V0IHRoYXQgd2VcdTIwMTlyZSB3aWxsaW5nIHRvIGhlbHAgd2l0aCBmaW5hbCBlc3NheXMsIHlvdVx1MjAxOXJlIGdvaW5nIHRvIGhhdmUgdG9cbmhpcmUgYW5vdGhlciBoYWxmIGRvemVuIFdyaXRpbmcgU2tpbGxzIFR1dG9ycy5cblJvYmluOiBBdCBsZWFzdC4iLCJzZWN0aW9ucyI6W3sibGFiZWwiOiJEaXNjdXNzaW9uICh2aWRlbykiLCJtZWRpYVR5cGUiOiJ2aWRlbyIsImR1cmF0aW9uIjoxMjksInRpbWVNaW51dGVzIjozLCJtZWRpYUluc3RydWN0aW9uIjoiV2F0Y2ggdGhlIGRpc2N1c3Npb24uIFlvdSB3aWxsIHdhdGNoIGl0IG9ubHkgb25jZS4gSXQgaXMgYWJvdXQgMS41IHRvIDIgbWludXRlcyBsb25nLiIsInF1ZXN0aW9ucyI6W3sibiI6MSwic3RlbSI6IldoYXQgaGFzIHRoZSBtYW4gcmVjZW50bHkgcmVjZWl2ZWQ\/Iiwib3B0aW9ucyI6WyJjb21wbGFpbnRzIiwiZXZhbHVhdGlvbnMiLCJwZXJtaXNzaW9uIiwicmVxdWVzdHMiXSwia2V5IjowLCJyZWNvbiI6ZmFsc2V9LHsibiI6Miwic3RlbSI6IldoYXQgZGVzY3JpYmVzIHRoZSBlbWFpbHMgdGhhdCB0aGUgbWFuIHJlY2VpdmVkPyIsIm9wdGlvbnMiOlsiVGhleSB3ZXJlIHBvb3JseSB3cml0dGVuLiIsIlRoZXkgYXJlIHF1aXRlIG1pc2xlYWRpbmcuIiwiVGhleSB3ZXJlIGZyb20gaW5zdHJ1Y3RvcnMuIiwiVGhleSB3ZXJlIHNlbnQgYnkgbWlzdGFrZS4iXSwia2V5IjoxLCJyZWNvbiI6ZmFsc2V9LHsibiI6Mywic3RlbSI6IldoYXQgaXMgdGhlIHN1cGVydmlzb3IncyBtYWluIGNvbmNlcm4\/Iiwib3B0aW9ucyI6WyJUaGUgZXNzYXkgZ3JhZGVzIHNlZW0gdG9vIGhpZ2guIiwiVGhlIGluc3RydWN0b3JzIGFyZSBhc2tpbmcgcXVlc3Rpb25zLiIsIlRoZSBzdHVkZW50cyBhcmUgbm90IGxlYXJuaW5nIGVub3VnaC4iLCJUaGUgdHV0b3JzIGFyZSBub3QgZG9pbmcgdGhlaXIgam9icy4iXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9LHsibiI6NCwic3RlbSI6IkFjY29yZGluZyB0byB0aGUgd29tZW4sIHdoYXQgaXMgY2hlYXRpbmc\/Iiwib3B0aW9ucyI6WyJjb21pbmcgZm9yIHR1dG9yaW5nIGxhdGUgaW4gdGhlIHllYXIiLCJmYWlsaW5nIHRvIHRlbGwgdGVhY2hlcnMgdGhleSBnb3QgaGVscCIsImhhdmluZyByb3V0aW5lIGhvbWV3b3JrIGVkaXRlZCIsInJlY2VpdmluZyBoZWxwIHdpdGggZmluYWwgZXNzYXlzIl0sImtleSI6MywicmVjb24iOmZhbHNlfSx7Im4iOjUsInN0ZW0iOiJIb3cgd291bGQgdGhlIHdvbWVuIHByb2JhYmx5IGRlc2NyaWJlIGNoZWF0ZXJzPyIsIm9wdGlvbnMiOlsiVGhleSBhcmUgZGlzYWR2YW50YWdlZC4iLCJUaGV5IGFyZSBvcHBvcnR1bmlzdHMuIiwiVGhleSBhcmUgdG9vIHByaXZpbGVnZWQuIiwiVGhleSBhcmUgbGlrZSByb2JiZXJzLiJdLCJrZXkiOjEsInJlY29uIjpmYWxzZX0seyJuIjo2LCJzdGVtIjoiSG93IGRvZXMgdGhlIHdvbWFuIGluIHRoZSBtaWRkbGUgcmVzcG9uZCB0byB0aGUgbWFuJ3MgbGFzdCBzdWdnZXN0aW9uPyIsIm9wdGlvbnMiOlsiU2hlIGlzIGNvbmZ1c2VkLiIsIlNoZSBpcyBkb3VidGZ1bC4iLCJTaGUgaXMgaW5zaW5jZXJlLiIsIlNoZSBpcyByZXNpc3RhbnQuIl0sImtleSI6MSwicmVjb24iOmZhbHNlfSx7Im4iOjcsInN0ZW0iOiJXaGF0IHdpbGwgdGhlIHNwZWFrZXJzIGRvIHRvIHJlc29sdmUgdGhlIHByb2JsZW0\/Iiwib3B0aW9ucyI6WyJoYXZlIHRoZSB3b21lbiBncmFkZSB0aGUgZXNzYXlzIiwiaGlyZSBtb3JlIHdyaXRpbmcgc2tpbGxzIHR1dG9ycyIsInByb3ZpZGUgbGVzcyBoZWxwIHdpdGggYXNzaWdubWVudHMiLCJyZXF1aXJlIHBlcm1pc3Npb24gZnJvbSBpbnN0cnVjdG9ycyJdLCJrZXkiOjMsInJlY29uIjpmYWxzZX0seyJuIjo4LCJzdGVtIjoiV2hhdCBkb2VzIHRoaXMgd29ya3BsYWNlIHNlZW0gdG8gdmFsdWU\/Iiwib3B0aW9ucyI6WyJjb2xsYWJvcmF0aW5nIG9uIG1ha2luZyBwb2xpY3kgZGVjaXNpb25zIiwiZGVzaWduaW5nIHN0YWZmIGRldmVsb3BtZW50IHN5c3RlbXMiLCJtaW5pbWl6aW5nIGhpcmluZyBhbmQgcGF5cm9sbCBjb3N0cyIsInN1c3RhaW5pbmcgY29uc2lzdGVudCBjbGllbnQgc2VydmljZSJdLCJrZXkiOjMsInJlY29uIjpmYWxzZX1dfV19LHsibmFtZSI6IlBhcnQgNjogTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaGVhZGVyVGl0bGUiOiJTZXQgMyBcdTIwMTMgUHJhY3RpY2UgVGVzdCAyIFx1MjAxMyBMaXN0ZW5pbmcgUGFydCA2OiBMaXN0ZW5pbmcgZm9yIFZpZXdwb2ludHMiLCJpbnRyb1RpdGxlIjoiTGlzdGVuaW5nIGZvciBWaWV3cG9pbnRzIiwiaW50cm9CdWxsZXRzIjpbIllvdSB3aWxsIGhlYXIgYSBwcmVzZW50YXRpb24gYWJvdXQgd29ya2luZyBmcm9tIGhvbWUuIEl0IHBsYXlzIG9ubHkgb25jZS4iLCJBZnRlciB0aGUgcHJlc2VudGF0aW9uLCBjb21wbGV0ZSBlYWNoIHN0YXRlbWVudCB1c2luZyB0aGUgZHJvcC1kb3duIG1lbnUuIl0sInFJbnN0cnVjdGlvbiI6IkNob29zZSB0aGUgYmVzdCB3YXkgdG8gY29tcGxldGUgZWFjaCBzdGF0ZW1lbnQgZnJvbSB0aGUgZHJvcC1kb3duIG1lbnUgKCBcdTI1YmUgKS4iLCJ0cmFuc2NyaXB0IjoiWW91IHdpbGwgaGVhciBhIHByZXNlbnRhdGlvbiBhYm91dCB3b3JraW5nIGZyb20gaG9tZS5cblxuSGFyb2xkIGlzIGEgc2FsZXMgZXhlY3V0aXZlIGF0IGFuIGV4cG9ydCBjb21wYW55LiBFdmVyeSBkYXkgaGUgc3BlbmRzIHR3byBob3VycyBvbiB0aGVcbnJvYWQgZ2V0dGluZyB0byBhbmQgZnJvbSB3b3JrLiBBdCB3b3JrLCBIYXJvbGQgc3BlbmRzIGhpcyBkYXkgdGFsa2luZyBhbmQgdGV4dGluZyB3aXRoXG5oaXMgY2xpZW50cyBpbiBDaGluYSBhbmQgSW5kaWEuIEV2ZXJ5IHdlZWsgSGFyb2xkIHVzZXMgYSBodW5kcmVkIGRvbGxhcnMgb2YgZ2FzIGFuZFxuc3BlbmRzIDEwIGhvdXJzIHN0dWNrIGluIHRyYWZmaWMgaW4gb3JkZXIgdG8gdGFsayB0byBwZW9wbGUgd2hvIGFyZSBpbiBhbm90aGVyIGNvdW50cnkuXG5TdXJlbHkgaGUgY291bGQgZG8gaGlzIHdvcmsgZnJvbSBob21lLlxuXGZUaGUgcXVlc3Rpb24gaXM6IFdoeSBhcmUgd2Ugc3RpbGwgY29tbXV0aW5nPyBXaHkgbm90IGFsbG93IHBlb3BsZSBsaWtlIEhhcm9sZCB0b1xuY29tbXV0ZSBvbmxpbmUgcmF0aGVyIHRoYW4gdGhyb3VnaCBvdXIgb2Z0ZW4tY2xvZ2dlZCB0cmFuc3BvcnRhdGlvbiBzeXN0ZW1zPyBJZiB3ZSBkaWRcbmFsbG93IHBlb3BsZSB0byB3b3JrIGZyb20gaG9tZSwgb3RoZXIgZWNvbm9taWMgYmVuZWZpdHMgd291bGQgZm9sbG93LiBXZSB3b3VsZFxuc3BlbmQgbGVzcyBvbiBnYXMgYW5kIG1vcmUgb24gbGVpc3VyZSwgZWR1Y2F0aW9uLCBhbmQgb3RoZXIgY29uc3VtZXIgZ29vZHMuIENvbW11bml0eVxucmVzdGF1cmFudHMgYW5kIGNvZmZlZSBzaG9wcyB3b3VsZCB0aHJpdmUuIE1vcmUgaW1wb3J0YW50bHksIHRoZXJlIHdvdWxkIGJlIGJlbmVmaXRzIHRvXG50aGUgZW52aXJvbm1lbnQgd2l0aCBhIGRlY3JlYXNlIGluIGdhcyBjb25zdW1wdGlvbiwgZXNwZWNpYWxseSBpbiB1cmJhbiBjZW50cmVzLlxuXG5QZXJoYXBzIHdlIGFyZSBzdGlsbCBjb21tdXRpbmcgYmVjYXVzZSBjb3Jwb3JhdGlvbnMgc3RpbGwgYXNzb2NpYXRlIHByb2R1Y3Rpdml0eSB3aXRoXG5waHlzaWNhbCBwcmVzZW5jZSBhbmQgaG91cnMgc3BlbnQgaW4gdGhlIG9mZmljZS4gQ2xlYXJseSwgdGhvdWdoLCBjb3Jwb3JhdGlvbnMgY291bGQgYWxzb1xuYmVuZWZpdCBmcm9tIGVtcGxveWVlcyB3b3JraW5nIGF0IGhvbWUuIFdpdGggc3RhZmYgd29ya2luZyBmcm9tIGhvbWUsIGNvcnBvcmF0ZVxub2ZmaWNlcyBjb3VsZCBiZSBzbWFsbGVyIGFuZCBoZW5jZSBjaGVhcGVyIHRvIHJ1bi4gUHJvZHVjdGl2aXR5IHBlciBlbXBsb3llZSBtaWdodCBhbHNvXG5pbmNyZWFzZS4gRW1wbG95ZWVzIHdvdWxkIGJlIG1vcmUgYWJsZSB0byB3b3JrIGF0IHRpbWVzIHRoYXQgbWlnaHQgb3RoZXJ3aXNlIGhhdmUgYmVlblxuc3BlbnQgY29tbXV0aW5nLiBUaGV5IGNvdWxkIGFsc28gdGFpbG9yIHRoZWlyIHdvcmsgc2NoZWR1bGUgdG8gZml0IHRoZWlyIGZhbWlseSBsaXZlcyxcbndoaWNoIHdvdWxkIGltcHJvdmUgdGhlaXIgbWVudGFsIGhlYWx0aCBhbmQgd2VsbGJlaW5nLlxuXG5JdCBzZWVtcyB0aGF0IG9ubGluZSBjb21tdXRpbmcgd291bGQgaGF2ZSBhIHBvc2l0aXZlIGltcGFjdCBvbiBmYW1pbGllcywgY29ycG9yYXRpb25zLFxuYW5kIG91ciBzb2NpZXR5IGFzIGEgd2hvbGUuIFdlIG1pZ2h0IHdlbGwgd29uZGVyLCB0aGVuLCB3aHkgd2Ugc3RpbGwgZW5jb3VudGVyIHRyYWZmaWNcbmdyaWRsb2NrIGluIGFsbW9zdCBldmVyeSBtYWpvciBjaXR5LlxuXG5FeHBlcnRzIHNheSB0aGVyZSBhcmUgZm91ciBrZXkgZGlmZmljdWx0aWVzIHdpdGggd29ya2luZyBmcm9tIGhvbWUuIEZpcnN0LCBjb3Jwb3JhdGlvbnNcbmZlYXIgb2Zmc2l0ZSBlbXBsb3llZXMgd2lsbCBiZSBtb3JlIGVhc2lseSBkaXN0cmFjdGVkIGFuZCB3b3JrIGxlc3MuIFNlY29uZCwgbWFueVxubWFuYWdlcnMgYXJlIGNvbmNlcm5lZCB0aGF0IHRoZXkgd2lsbCBub3QgYmUgYWJsZSB0byBtYW5hZ2Ugc3RhZmYgd2hlbiB0aGVpciBzdGFmZiBhcmUgbm90XG5wcmVzZW50IGluIHRoZSBjb3Jwb3JhdGUgd29ya3BsYWNlLiBBIHRoaXJkIGlzc3VlIGlzIHRoYXQgdGhlIG9mZmljZSBpcyBub3Qgc2ltcGx5IGEgcGh5c2ljYWxcbmxvY2F0aW9uLiBJdCBpcyBhbHNvIGEgcHN5Y2hvbG9naWNhbCBzcGFjZSBpbiB3aGljaCBhIHRlYW0gY2FuIGRldmVsb3AgYSBzaGFycCwgc2hhcmVkXG5mb2N1cyBvbiB0aGUgdGFza3MgYXQgaGFuZC4gUGVvcGxlIHdobyB3b3JrIGluIHRoZSBzYW1lIHNwYWNlIGNhbiB0aGluayB0b2dldGhlciBhbmRcbnNoYXJlIGlkZWFzLiBGaW5hbGx5LCB0aGUgY29sbGVjdGl2ZSB3b3Jrc3BhY2UgaGVscHMgc3RhZmYgdG8gZmVlbCB0aGV5IGJlbG9uZyB0byBhXG5jb21tdW5pdHkgb3IgY3VsdHVyZS4gVGhleSB3aWxsIGNhcmUgbW9yZSBhYm91dCB0aGVpciBjb21wYW55XHUyMDE5cyBwcm9kdWN0IG9yIHNlcnZpY2UuXG5cblNvLCB3aWxsIHdlIGFsd2F5cyB3b3JrIGluIG9mZmljZXM\/IFlvdW5nZXIgcGVvcGxlIGluY3JlYXNpbmdseSBhc2sgdG8gd29yayBmcm9tIGhvbWUuXG5UaGUgeW91bmdlciBnZW5lcmF0aW9uIGhhcyBiZWVuIHJhaXNlZCBpbiBhIHNvY2lhbGx5IG5ldHdvcmtlZCB3b3JsZCBpbiB3aGljaFxuY29ubmVjdGlvbnMsIGN1bHR1cmUsIGFuZCBjcmVhdGl2aXR5IGFyZSBubyBsb25nZXIgYW5jaG9yZWQgaW4gYSBnZW9ncmFwaGljYWwgb3IgcGh5c2ljYWxcbnNwYWNlLiBQZXJoYXBzLCBhcyBzb21lIGluIHRoaXMgZ2VuZXJhdGlvbiBhcmUgYWxyZWFkeSBzYXlpbmcsIHRoZSBvZmZpY2Ugd2lsbCBiZWNvbWVcbm91dGRhdGVkLiIsInNlY3Rpb25zIjpbeyJsYWJlbCI6IlByZXNlbnRhdGlvbiIsIm1lZGlhVHlwZSI6ImF1ZGlvIiwiZHVyYXRpb24iOjE5NywidGltZU1pbnV0ZXMiOjQsIm1lZGlhSW5zdHJ1Y3Rpb24iOiJMaXN0ZW4gdG8gdGhlIGZvbGxvd2luZyByZXBvcnQuIFlvdSB3aWxsIGhlYXIgaXQgb25seSBvbmNlLiBJdCBpcyBhYm91dCAzIG1pbnV0ZXMgbG9uZy4iLCJxdWVzdGlvbnMiOlt7Im4iOjEsInN0ZW0iOiJCZW5lZml0cyBvZiBjb25uZWN0aW5nIHRvIHdvcmsgb25saW5lIGluY2x1ZGUiLCJvcHRpb25zIjpbImxpbWl0aW5nIHRoZSBudW1iZXIgb2YgZG93bnRvd24gcmVzaWRlbmNlcy4iLCJzaG9ydGVuaW5nIHRoZSB0aW1lIHNwZW50IGluIG1lZXRpbmdzLiIsImJvb3N0aW5nIGV4cGVuZGl0dXJlIG9uIHJlY3JlYXRpb24uIiwicmVkdWNpbmcgdGhlIGNvc3RzIG9mIGNoaWxkY2FyZS4iXSwia2V5IjoyLCJyZWNvbiI6ZmFsc2V9LHsibiI6Miwic3RlbSI6IkNvcnBvcmF0ZSBwcm9kdWN0aXZpdHkiLCJvcHRpb25zIjpbIm1heSBub3QgYmUgaW5mbHVlbmNlZCBieSBvbmxpbmUgY29tbXV0aW5nLiIsIndpbGwgYmUgaGFybWVkIGJ5IGVtcGxveWVlcycgbGFjayBvZiBzb2NpYWwgc2tpbGxzLiIsIm1heSBiZSBpbXByb3ZlZCBieSBzdGFmZiB3b3JraW5nIGZyb20gaG9tZS4iLCJpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGVtcGxveWVlcycgY29tbXV0ZSB0aW1lcy4iXSwia2V5IjoyLCJyZWNvbiI6ZmFsc2V9LHsibiI6Mywic3RlbSI6IkNvcnBvcmF0aW9ucyBiZWxpZXZlIHRoYXQgYXR0ZW5kaW5nIGEgY29sbGVjdGl2ZSB3b3JrcGxhY2UiLCJvcHRpb25zIjpbImlzIGFsc28gaW1wb3J0YW50IGZvciBwYXJ0LXRpbWUgZW1wbG95ZWVzLiIsImhhcyBubyBiZWFyaW5nIG9uIGNvcnBvcmF0ZSBwcm9maXRhYmlsaXR5LiIsImhlbHBzIHRvIG1haW50YWluIGhpZ2hlciBwcm9kdWN0aXZpdHkuIiwiaW5jcmVhc2VzIHRoZSB3b3JrbG9hZCBvZiB0aGUgbWFuYWdlcmlhbCBzdGFmZi4iXSwia2V5IjoyLCJyZWNvbiI6ZmFsc2V9LHsibiI6NCwic3RlbSI6IlNvbWUgbWFuYWdlcnMgd29ycnkgdGhhdCIsIm9wdGlvbnMiOlsiZW1wbG95ZWVzIHdvdWxkIGJpbGwgZm9yIGluY29tcGxldGUgd29yay4iLCJ0aGVpciBvd24gY29tbXV0ZSB3b3VsZCByZW1haW4gdW5jaGFuZ2VkLiIsInRoZXkgY291bGQgbm90IG1hbmFnZSBjb21wbGV4IHRhc2tzIG9ubGluZS4iLCJ0aGV5IHdvdWxkIHN0cnVnZ2xlIHRvIHN1cGVydmlzZSB0aGVpciBzdGFmZi4iXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9LHsibiI6NSwic3RlbSI6Ik9uZSBhZHZhbnRhZ2Ugb2YgdGhlIGNvcnBvcmF0ZSB3b3JrcGxhY2UgaXMgdGhhdCBpdCIsIm9wdGlvbnMiOlsiaGVscHMgeW91bmcgcGVvcGxlIG1ha2UgY29ubmVjdGlvbnMuIiwiZG9lcyBub3QgaW52b2x2ZSBvbmxpbmUgc29jaWFsIG1lZGlhIGRpc3RyYWN0aW9ucy4iLCJlbmdlbmRlcnMgYSBzaGFyZWQgY3VsdHVyZSBhbmQgd29yayBldGhvcy4iLCJwcm92aWRlcyBpbXBvcnRhbnQgb3Bwb3J0dW5pdGllcyBmb3IgcHJvbW90aW9uLiJdLCJrZXkiOjIsInJlY29uIjpmYWxzZX0seyJuIjo2LCJzdGVtIjoiUHJvcG9uZW50cyBvZiBvbmxpbmUgd29ya3NwYWNlcyBjbGFpbSB0aGF0Iiwib3B0aW9ucyI6WyJ5b3VuZ2VyIHBlb3BsZSBjYW5ub3QgZm9jdXMgd2hlbiB3b3JraW5nIGluIG9mZmljZXMuIiwic29jaWFsIG5ldHdvcmtpbmcgaXMgbm90IHByZXZhbGVudCBhdCB3b3JrLiIsInRoZSB5b3VuZyBnZW5lcmF0aW9uIGlzIG1vdmluZyBhd2F5IGZyb20gY2l0eSBjZW50ZXJzLiIsIm9mZmljZXMgYXJlIGxpa2VseSB0byBiZWNvbWUgb2Jzb2xldGUgaW4gdGhlIGZ1dHVyZS4iXSwia2V5IjozLCJyZWNvbiI6ZmFsc2V9XX1dfV19OwoKdmFyIENFTFBJUF9ZVCA9IHsgdmlkZW9JZDogJycgfTsgIC8qIGUuZy4gJ2RRdzR3OVdnWGNRJyBcdTIwMTQgU2V0IDMgVGVzdCAxIGZ1bGwgbGlzdGVuaW5nIHZpZGVvICovCnZhciBDTFBfQ0hBUFRFUlMgPSB7ICcwLjAnOlswLDUyMF0sICcwLjEnOlswLDUyMF0sICcwLjInOlswLDUyMF0sICcxLjAnOls1MjAsODUzXSwgJzIuMCc6Wzg1MywxMjcyXSwgJzMuMCc6WzEyNzIsMTM2NF0sICc0LjAnOlsxMzY0LDE1MDNdLCAnNS4wJzpbMTUwMywxNzU3XSB9OwoKLyogVE9ETzogcGxhY2Vob2xkZXIgbWFwcGluZyBcdTIwMTQgdmVyaWZ5IGFnYWluc3QgdGhlIG9mZmljaWFsIENFTFBJUCBzY29yZSBjaGFydC4gKi8KZnVuY3Rpb24gY2xiRXN0aW1hdGUocmF3KXsKICBpZiAocmF3ID49IDM1KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCAxMFx1MjAxMzEyJywgbm90ZTogJ0FkdmFuY2VkIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMzApIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDknLCAgICAgICAgbm90ZTogJ0VmZmVjdGl2ZSBwcm9maWNpZW5jeScgfTsKICBpZiAocmF3ID49IDI3KSByZXR1cm4geyBsZXZlbDogJ0NFTFBJUCA4JywgICAgICAgIG5vdGU6ICdHb29kIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMjIpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDcnLCAgICAgICAgbm90ZTogJ0FkZXF1YXRlIHByb2ZpY2llbmN5JyB9OwogIGlmIChyYXcgPj0gMTcpIHJldHVybiB7IGxldmVsOiAnQ0VMUElQIDYnLCAgICAgICAgbm90ZTogJ0RldmVsb3BpbmcgcHJvZmljaWVuY3knIH07CiAgaWYgKHJhdyA+PSAxMSkgcmV0dXJuIHsgbGV2ZWw6ICdDRUxQSVAgNScsICAgICAgICBub3RlOiAnQWNxdWlyaW5nIHByb2ZpY2llbmN5JyB9OwogIHJldHVybiAgICAgICAgICAgIHsgbGV2ZWw6ICdDRUxQSVAgNCBvciBiZWxvdycsICAgbm90ZTogJ0tlZXAgcHJhY3RpY2luZyEnIH07Cn0KCi8qID09PT09PT09PT09PT09PT09PT09PSBlbmdpbmUgPT09PT09PT09PT09PT09PT09PT09ICovCihmdW5jdGlvbigpewogIHZhciByZWR1Y2VkTW90aW9uID0gd2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICB2YXIgY2F0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscENhdCcpOwogIHZhciBkb3RzRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwRG90cycpOwogIHZhciB0b29sYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRvb2xiYXInKTsKICB2YXIgcmVzdWx0c0VsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc3VsdHMnKTsKICB2YXIgc2NvcmVDaGlwID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFNjb3JlQ2hpcCcpOwoKICB2YXIgVE9UQUxfUSA9IDA7CiAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocCl7IHAuc2VjdGlvbnMuZm9yRWFjaChmdW5jdGlvbihzKXsgVE9UQUxfUSArPSBzLnF1ZXN0aW9ucy5sZW5ndGg7IH0pOyB9KTsKCiAgdmFyIHNjcmVlbnMgPSBbXTsKICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAnaW50cm8nLCBwaTogcGkgfSk7CiAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgIHNjcmVlbnMucHVzaCh7IHR5cGU6ICdtZWRpYScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgICBzY3JlZW5zLnB1c2goeyB0eXBlOiAncScsIHBpOiBwaSwgc2k6IHNpIH0pOwogICAgfSk7CiAgfSk7CiAgc2NyZWVucy5wdXNoKHsgdHlwZTogJ2ZpbmlzaCcgfSk7CgogIHZhciBzdGF0ZSA9IHsKICAgIHN0YXJ0ZWQ6IGZhbHNlLAogICAgaWR4OiAwLAogICAgYW5zd2Vyczoge30sICAgICAgLyogInBpLnNpLnFpIiAtPiBvcHRpb24gaW5kZXggKDAtMykgKi8KICAgIGNoZWNrZWQ6IGZhbHNlLAogICAgdGltZXJPbjogdHJ1ZQogIH07CiAgdmFyIG1lZGlhVGltZXIgPSBudWxsLCBxVGltZXIgPSBudWxsLCBxUmVtYWluaW5nID0gMDsKICB2YXIgcG9wdXAgPSBudWxsLCBvcGVuVHJpZ2dlciA9IG51bGw7CgogIGZ1bmN0aW9uIHFLZXkocGksIHNpLCBxaSl7IHJldHVybiBwaSArICcuJyArIHNpICsgJy4nICsgcWk7IH0KICBmdW5jdGlvbiBmbXQoc2VjKXsgdmFyIG0gPSBNYXRoLmZsb29yKHNlYy82MCksIHMgPSBzZWMgJSA2MDsgcmV0dXJuIG0gKyAnOicgKyAocyA8IDEwID8gJzAnIDogJycpICsgczsgfQogIGZ1bmN0aW9uIGVsKHRhZywgY2xzLCB0ZXh0KXsKICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpOwogICAgaWYgKGNscykgZS5jbGFzc05hbWUgPSBjbHM7CiAgICBpZiAodGV4dCAhPT0gdW5kZWZpbmVkKSBlLnRleHRDb250ZW50ID0gdGV4dDsKICAgIHJldHVybiBlOwogIH0KICBmdW5jdGlvbiBzY3JvbGxUb0VsKHRhcmdldCwgb2Zmc2V0KXsKICAgIHZhciB5ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCAtIChvZmZzZXQgfHwgNzApOwogICAgd2luZG93LnNjcm9sbFRvKHsgdG9wOiB5LCBiZWhhdmlvcjogcmVkdWNlZE1vdGlvbiA\/ICdhdXRvJyA6ICdzbW9vdGgnIH0pOwogIH0KICBmdW5jdGlvbiBjbGVhclRpbWVycygpewogICAgaWYgKG1lZGlhVGltZXIpeyBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsgfQogICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBhbnN3ZXJlZENvdW50KCl7IHJldHVybiBPYmplY3Qua2V5cyhzdGF0ZS5hbnN3ZXJzKS5sZW5ndGg7IH0KICBmdW5jdGlvbiB1cGRhdGVTY29yZUNoaXAoKXsKICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgc2NvcmVDaGlwLnRleHRDb250ZW50ID0gJ1Njb3JlICcgKyBjb21wdXRlU2NvcmUoKS50b3RhbCArICcvJyArIFRPVEFMX1E7CiAgICB9IGVsc2UgewogICAgICBzY29yZUNoaXAudGV4dENvbnRlbnQgPSAnQW5zd2VyZWQgJyArIGFuc3dlcmVkQ291bnQoKSArICcvJyArIFRPVEFMX1E7CiAgICB9CiAgfQogIGZ1bmN0aW9uIGNvbXB1dGVTY29yZSgpewogICAgdmFyIHRvdGFsID0gMCwgcGVyUGFydCA9IFtdOwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgYyA9IDAsIG4gPSAwOwogICAgICBwYXJ0LnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oc2VjLCBzaSl7CiAgICAgICAgc2VjLnF1ZXN0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKHEsIHFpKXsKICAgICAgICAgIG4rKzsKICAgICAgICAgIGlmIChzdGF0ZS5hbnN3ZXJzW3FLZXkocGksIHNpLCBxaSldID09PSBxLmtleSAtIDEpeyBjKys7IHRvdGFsKys7IH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICAgIHBlclBhcnQucHVzaCh7IGNvcnJlY3Q6IGMsIHRvdGFsOiBuIH0pOwogICAgfSk7CiAgICByZXR1cm4geyB0b3RhbDogdG90YWwsIHBlclBhcnQ6IHBlclBhcnQgfTsKICB9CgogIC8qIC0tLS0tLS0tLS0gZHJvcGRvd24gcG9wdXAgLS0tLS0tLS0tLSAqLwogIGZ1bmN0aW9uIGNsb3NlUG9wdXAoKXsKICAgIGlmIChwb3B1cCl7IHBvcHVwLnJlbW92ZSgpOyBwb3B1cCA9IG51bGw7IH0KICAgIGlmIChvcGVuVHJpZ2dlcil7IG9wZW5UcmlnZ2VyLmNsYXNzTGlzdC5yZW1vdmUoJ2NscC1vcGVuJyk7IG9wZW5UcmlnZ2VyID0gbnVsbDsgfQogIH0KICBmdW5jdGlvbiBvcGVuUG9wdXAodHJpZ2dlciwgcGksIHNpLCBxaSl7CiAgICBpZiAob3BlblRyaWdnZXIgPT09IHRyaWdnZXIpeyBjbG9zZVBvcHVwKCk7IHJldHVybjsgfQogICAgY2xvc2VQb3B1cCgpOwogICAgdmFyIHEgPSBURVNUX0RBVEEucGFydHNbcGldLnNlY3Rpb25zW3NpXS5xdWVzdGlvbnNbcWldOwogICAgdmFyIGtleSA9IHFLZXkocGksIHNpLCBxaSk7CiAgICBwb3B1cCA9IGVsKCdkaXYnLCAnY2xwLXBvcCcpOwogICAgcS5vcHRpb25zLmZvckVhY2goZnVuY3Rpb24ob3B0LCBvaSl7CiAgICAgIHZhciBiID0gZWwoJ2J1dHRvbicsICdjbHAtb3B0JyArIChzdGF0ZS5hbnN3ZXJzW2tleV0gPT09IG9pID8gJyBjbHAtc2VsJyA6ICcnKSk7CiAgICAgIGIudHlwZSA9ICdidXR0b24nOwogICAgICBiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1yYWRpbycpKTsKICAgICAgYi5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCBvcHQpKTsKICAgICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICBzdGF0ZS5hbnN3ZXJzW2tleV0gPSBvaTsKICAgICAgICB1cGRhdGVTY29yZUNoaXAoKTsKICAgICAgICBjbG9zZVBvcHVwKCk7CiAgICAgICAgc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIG9wdCwgZmFsc2UpOwogICAgICB9KTsKICAgICAgcG9wdXAuYXBwZW5kQ2hpbGQoYik7CiAgICB9KTsKICAgIGNhdC5hcHBlbmRDaGlsZChwb3B1cCk7CiAgICAvKiBwb3NpdGlvbjogYmVsb3cgdHJpZ2dlciwgZmxpcCBhYm92ZSB3aGVuIG5lYXIgdmlld3BvcnQgYm90dG9tICovCiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CiAgICB2YXIgY2F0UmVjdCA9IGNhdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciB0UmVjdCA9IHRyaWdnZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgcG9wVyA9IHBvcHVwLm9mZnNldFdpZHRoLCBwb3BIID0gcG9wdXAub2Zmc2V0SGVpZ2h0OwogICAgdmFyIGxlZnQgPSB0UmVjdC5sZWZ0IC0gY2F0UmVjdC5sZWZ0OwogICAgbGVmdCA9IE1hdGgubWF4KDgsIE1hdGgubWluKGxlZnQsIGNhdC5jbGllbnRXaWR0aCAtIHBvcFcgLSA4KSk7CiAgICB2YXIgdG9wOwogICAgaWYgKHRSZWN0LmJvdHRvbSArIHBvcEggKyAyNCA+IHdpbmRvdy5pbm5lckhlaWdodCAmJiB0UmVjdC50b3AgLSBwb3BIIC0gOCA+IDApewogICAgICB0b3AgPSB0UmVjdC50b3AgLSBjYXRSZWN0LnRvcCAtIHBvcEggLSA2OyAgIC8qIGZsaXAgYWJvdmUgKi8KICAgIH0gZWxzZSB7CiAgICAgIHRvcCA9IHRSZWN0LmJvdHRvbSAtIGNhdFJlY3QudG9wICsgNjsKICAgIH0KICAgIHBvcHVwLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JzsKICAgIHBvcHVwLnN0eWxlLnRvcCA9IHRvcCArICdweCc7CiAgICBwb3B1cC5zdHlsZS52aXNpYmlsaXR5ID0gJyc7CiAgICB0cmlnZ2VyLmNsYXNzTGlzdC5hZGQoJ2NscC1vcGVuJyk7CiAgICBvcGVuVHJpZ2dlciA9IHRyaWdnZXI7CiAgfQogIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oZXYpewogICAgaWYgKHBvcHVwICYmICFwb3B1cC5jb250YWlucyhldi50YXJnZXQpICYmIGV2LnRhcmdldCAhPT0gb3BlblRyaWdnZXIgJiYgKCFvcGVuVHJpZ2dlciB8fCAhb3BlblRyaWdnZXIuY29udGFpbnMoZXYudGFyZ2V0KSkpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICB9CiAgfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNsb3NlUG9wdXApOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBmdW5jdGlvbigpeyAvKiBrZWVwIHBvcHVwIGFuY2hvcmVkOiBjbG9zZSBvbiBzY3JvbGwgKi8gaWYgKHBvcHVwKSBjbG9zZVBvcHVwKCk7IH0sIHsgcGFzc2l2ZTogdHJ1ZSB9KTsKCiAgZnVuY3Rpb24gc2V0VHJpZ2dlckxhYmVsKHRyaWdnZXIsIHRleHQsIHVuYW5zd2VyZWQpewogICAgdHJpZ2dlci5jbGFzc0xpc3QudG9nZ2xlKCdjbHAtdW5hbnN3ZXJlZCcsICEhdW5hbnN3ZXJlZCk7CiAgICB0cmlnZ2VyLnF1ZXJ5U2VsZWN0b3IoJy5jbHAtZGQtdGV4dCcpLnRleHRDb250ZW50ID0gdW5hbnN3ZXJlZCA\/ICdcdTIwMjZcdTIwMjZcdTIwMjZcdTIwMjYnIDogdGV4dDsKICB9CgogIC8qIC0tLS0tLS0tLS0gZG90cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVyRG90cygpewogICAgZG90c0VsLmlubmVySFRNTCA9ICcnOwogICAgdmFyIGN1clBpID0gLTE7CiAgICB2YXIgcyA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKICAgIGlmIChzICYmIHMucGkgIT09IHVuZGVmaW5lZCkgY3VyUGkgPSBzLnBpOwogICAgaWYgKHMgJiYgcy50eXBlID09PSAnZmluaXNoJykgY3VyUGkgPSBURVNUX0RBVEEucGFydHMubGVuZ3RoOyAvKiBhbGwgZG9uZSAqLwogICAgVEVTVF9EQVRBLnBhcnRzLmZvckVhY2goZnVuY3Rpb24ocGFydCwgcGkpewogICAgICB2YXIgZCA9IGVsKCdidXR0b24nLCAnY2xwLWRvdCcsICdQJyArIChwaSArIDEpKTsKICAgICAgZC50eXBlID0gJ2J1dHRvbic7CiAgICAgIGlmIChwaSA9PT0gY3VyUGkpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWN1cicpOwogICAgICBlbHNlIGlmIChwaSA8IGN1clBpIHx8IHN0YXRlLmNoZWNrZWQpIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWRvbmUnKTsKICAgICAgaWYgKHN0YXRlLmNoZWNrZWQpewogICAgICAgIGQuY2xhc3NMaXN0LmFkZCgnY2xwLWNsaWNrYWJsZScpOwogICAgICAgIGQudGl0bGUgPSAnUmV2aWV3ICcgKyBwYXJ0Lm5hbWU7CiAgICAgICAgZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCl7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmVlbnMubGVuZ3RoOyBpKyspewogICAgICAgICAgICBpZiAoc2NyZWVuc1tpXS50eXBlID09PSAncScgJiYgc2NyZWVuc1tpXS5waSA9PT0gcGkpeyBzdGF0ZS5pZHggPSBpOyBicmVhazsgfQogICAgICAgICAgfQogICAgICAgICAgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsKICAgICAgICB9KTsKICAgICAgfSBlbHNlIHsKICAgICAgICBkLnRpdGxlID0gcGFydC5uYW1lOwogICAgICB9CiAgICAgIGRvdHNFbC5hcHBlbmRDaGlsZChkKTsKICAgIH0pOwogIH0KCiAgLyogLS0tLS0tLS0tLSBjaHJvbWUgcGllY2VzIC0tLS0tLS0tLS0gKi8KICBmdW5jdGlvbiBtYWtlQmFyKHRpdGxlLCB3aXRoVGltZXIpewogICAgdmFyIGJhciA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgYmFyLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCB0aXRsZSkpOwogICAgaWYgKHdpdGhUaW1lciAmJiBzdGF0ZS50aW1lck9uKXsKICAgICAgdmFyIHQgPSBlbCgnc3BhbicsICdjbHAtYmFyLXRpbWVyJyk7CiAgICAgIHQuaWQgPSAnY2xwUVRpbWVyJzsKICAgICAgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGJhci5hcHBlbmRDaGlsZCh0KTsKICAgIH0KICAgIHZhciBuZXh0ID0gZWwoJ2J1dHRvbicsICdjbHAtbmV4dCcsICdOZXh0Jyk7CiAgICBuZXh0LnR5cGUgPSAnYnV0dG9uJzsKICAgIG5leHQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgICBjbG9zZVBvcHVwKCk7CiAgICAgIGlmIChzdGF0ZS5pZHggPCBzY3JlZW5zLmxlbmd0aCAtIDEpeyBzdGF0ZS5pZHgrKzsgcmVuZGVyKCk7IHNjcm9sbFRvRWwoY2F0KTsgfQogICAgfSk7CiAgICBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdLnR5cGUgPT09ICdmaW5pc2gnKSBuZXh0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgICBiYXIuYXBwZW5kQ2hpbGQobmV4dCk7CiAgICByZXR1cm4gYmFyOwogIH0KICBmdW5jdGlvbiBtYWtlSW5zdHIodGV4dCl7CiAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtaW5zdHInKTsKICAgIHJvdy5hcHBlbmRDaGlsZChlbCgnc3BhbicsICdjbHAtaW5mbycsICdpJykpOwogICAgcm93LmFwcGVuZENoaWxkKGVsKCdwJywgJycsIHRleHQpKTsKICAgIHJldHVybiByb3c7CiAgfQogIHZhciBTUEVBS0VSX1NWRyA9ICc8c3ZnIHdpZHRoPSIyNiIgaGVpZ2h0PSIyNiIgdmlld0JveD0iMCAwIDI2IDI2IiBmaWxsPSJub25lIiBhcmlhLWhpZGRlbj0idHJ1ZSI+JyArCiAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik05IDkgTDE1IDQgTDE1IDIyIEw5IDE3IFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgJzxwYXRoIGQ9Ik0xOCA5IGE1LjUgNS41IDAgMCAxIDAgOCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+JyArCiAgICAnPHBhdGggZD0iTTIwLjUgNi41IGE5IDkgMCAwIDEgMCAxMyIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIi8+PC9zdmc+JzsKICB2YXIgUExBWV9TVkcgPSAnPHN2ZyB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgJzxwYXRoIGQ9Ik04IDUgTDIxIDEzIEw4IDIxIFoiIGZpbGw9ImN1cnJlbnRDb2xvciIvPjwvc3ZnPic7CgogIC8qIC0tLS0tLS0tLS0gc2NyZWVucyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gcmVuZGVySW50cm8oc2NyLCByb290KXsKICAgIHZhciBwYXJ0ID0gVEVTVF9EQVRBLnBhcnRzW3Njci5waV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBJbnN0cnVjdGlvbnMnKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQobWFrZUluc3RyKCdJbnN0cnVjdGlvbnM6JykpOwogICAgdmFyIGJvZHkgPSBlbCgnZGl2JywgJ2NscC1pbnRyby1ib2R5Jyk7CiAgICBib2R5LmFwcGVuZENoaWxkKGVsKCdoMycsICcnLCBwYXJ0LmludHJvVGl0bGUpKTsKICAgIHZhciB1bCA9IGVsKCd1bCcsICdjbHAtYnVsbGV0cycpOwogICAgcGFydC5pbnRyb0J1bGxldHMuZm9yRWFjaChmdW5jdGlvbihiKXsgdWwuYXBwZW5kQ2hpbGQoZWwoJ2xpJywgJycsIGIpKTsgfSk7CiAgICBib2R5LmFwcGVuZENoaWxkKHVsKTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQoYm9keSk7CiAgfQoKICBmdW5jdGlvbiByZW5kZXJNZWRpYShzY3IsIHJvb3QpewogICAgdmFyIHBhcnQgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXTsKICAgIHZhciBzZWMgPSBwYXJ0LnNlY3Rpb25zW3Njci5zaV07CiAgICByb290LnNldEF0dHJpYnV0ZSgnZGF0YS1zY3JlZW4tbGFiZWwnLCBwYXJ0Lm5hbWUgKyAnIFx1MjAxNCBNZWRpYScpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIoc2VjLm1lZGlhSW5zdHJ1Y3Rpb24pKTsKdmFyIF9haz1zY3IucGkrIi4iK3Njci5zaSxfYXU9KHR5cGVvZiBDTFBfQVVESU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT1tfYWtdO2lmKF9hdSl7dmFyIF9pc1Y9KHR5cGVvZiBDTFBfQVVESU9fVklERU8hPT0idW5kZWZpbmVkIikmJkNMUF9BVURJT19WSURFT1tfYWtdO3ZhciBfcD1lbCgiZGl2IiwiY2xwLW1lZGlhLXBhbmVsIik7dmFyIF9jPWVsKCJkaXYiLCJjbHAtbWVkaWEtY2FyZCIrKF9pc1Y\/IiBjbHAtaXMtdmlkZW8iOiIiKSk7dmFyIF9tPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoX2lzVj8idmlkZW8iOiJhdWRpbyIpO19tLnNyYz1fYXU7X20uY29udHJvbHM9dHJ1ZTtfbS5wcmVsb2FkPSJub25lIjtfbS5jbGFzc05hbWU9ImNscC1yZWFsbWVkaWEiO19tLnNldEF0dHJpYnV0ZSgiY29udHJvbHNMaXN0Iiwibm9kb3dubG9hZCIpO19tLnN0eWxlLmNzc1RleHQ9X2lzVj8id2lkdGg6MTAwJTtib3JkZXItcmFkaXVzOjhweDtiYWNrZ3JvdW5kOiMwMDA7ZGlzcGxheTpibG9jayI6IndpZHRoOjEwMCU7ZGlzcGxheTpibG9jayI7X2MuYXBwZW5kQ2hpbGQoX20pO19wLmFwcGVuZENoaWxkKF9jKTtfcC5hcHBlbmRDaGlsZChlbCgiZGl2IiwiY2xwLW9uY2Utbm90ZSIsIkluIHRoZSByZWFsIHRlc3QgdGhpcyByZWNvcmRpbmcgcGxheXMgb25jZS4gRm9yIHByYWN0aWNlIHlvdSBjYW4gcmVwbGF5IGl0IFx1MjAxNCBidXQgdHJ5IHRvIGxpc3RlbiBvbmx5IG9uY2UgZmlyc3QuIikpO3Jvb3QuYXBwZW5kQ2hpbGQoX3ApO3JldHVybjt9CgogICAgaWYgKENFTFBJUF9ZVC52aWRlb0lkKXsKICAgICAgdmFyIGNoID0gQ0xQX0NIQVBURVJTW3Njci5waSArICcuJyArIHNjci5zaV0gfHwgWzAsIDBdOwogICAgICB2YXIgdnBhbmVsID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtcGFuZWwnKTsKICAgICAgdmFyIHZjYXJkID0gZWwoJ2RpdicsICdjbHAtbWVkaWEtY2FyZCBjbHAtaXMtdmlkZW8nKTsKICAgICAgdmFyIHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0gJ3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7YXNwZWN0LXJhdGlvOjE2Lzk7Ym9yZGVyLXJhZGl1czo4cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6IzAwMDsnOwogICAgICB2YXIgaWZyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CiAgICAgIGlmci5zcmMgPSAnaHR0cHM6Ly93d3cueW91dHViZS1ub2Nvb2tpZS5jb20vZW1iZWQvJyArIENFTFBJUF9ZVC52aWRlb0lkICsgJz9zdGFydD0nICsgY2hbMF0gKyAoY2hbMV0gPyAnJmVuZD0nICsgY2hbMV0gOiAnJykgKyAnJnJlbD0wJm1vZGVzdGJyYW5kaW5nPTEnOwogICAgICBpZnIuYWxsb3cgPSAnYXV0b3BsYXk7IGVuY3J5cHRlZC1tZWRpYTsgcGljdHVyZS1pbi1waWN0dXJlJzsKICAgICAgaWZyLmFsbG93RnVsbHNjcmVlbiA9IHRydWU7CiAgICAgIGlmci50aXRsZSA9ICdDRUxQSVAgTGlzdGVuaW5nIG1lZGlhJzsKICAgICAgaWZyLnN0eWxlLmNzc1RleHQgPSAncG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjowOyc7CiAgICAgIHdyYXAuYXBwZW5kQ2hpbGQoaWZyKTsKICAgICAgdmNhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZCh2Y2FyZCk7CiAgICAgIHZwYW5lbC5hcHBlbmRDaGlsZChlbCgnZGl2JywgJ2NscC1vbmNlLW5vdGUnLCAnSW4gdGhlIHJlYWwgdGVzdCB0aGlzIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQgcHJlc3MgTkVYVCB3aGVuIGl0IGVuZHMuJykpOwogICAgICByb290LmFwcGVuZENoaWxkKHZwYW5lbCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1wYW5lbCcpOwogICAgdmFyIGNhcmQgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1jYXJkJyArIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJyBjbHAtaXMtdmlkZW8nIDogJycpKTsKICAgIC8qIC5jbHAtbWVkaWEtem9uZSBpcyB0aGUgZnV0dXJlIFlvdVR1YmUtZW1iZWQgdGFyZ2V0IChkYXRhLW1lZGlhLXNsb3QpICovCiAgICB2YXIgem9uZSA9IGVsKCdkaXYnLCAnY2xwLW1lZGlhLXpvbmUnKTsKICAgIHpvbmUuc2V0QXR0cmlidXRlKCdkYXRhLW1lZGlhLXNsb3QnLCBzY3IucGkgKyAnLicgKyBzY3Iuc2kpOwogICAgdmFyIGljb24gPSBlbCgnZGl2JywgJ2NscC1zcGVha2VyJyk7CiAgICBpY29uLmlubmVySFRNTCA9IHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycgPyBQTEFZX1NWRyA6IFNQRUFLRVJfU1ZHOwogICAgdmFyIG1haW4gPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tYWluJyk7CiAgICB2YXIgbGFiZWwgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1sYWJlbCcsICdQbGF5aW5nXHUyMDI2Jyk7CiAgICB2YXIgcHJvZyA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzJyk7CiAgICB2YXIgZmlsbCA9IGVsKCdkaXYnLCAnY2xwLXByb2dyZXNzLWZpbGwnKTsKICAgIHByb2cuYXBwZW5kQ2hpbGQoZmlsbCk7CgogICAgaWYgKHNlYy5tZWRpYVR5cGUgPT09ICd2aWRlbycpewogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgICBtYWluLmFwcGVuZENoaWxkKGxhYmVsKTsKICAgICAgbWFpbi5hcHBlbmRDaGlsZChwcm9nKTsKICAgICAgY2FyZC5hcHBlbmRDaGlsZChtYWluKTsKICAgIH0gZWxzZSB7CiAgICAgIG1haW4uYXBwZW5kQ2hpbGQobGFiZWwpOwogICAgICBtYWluLmFwcGVuZENoaWxkKHByb2cpOwogICAgICB6b25lLmFwcGVuZENoaWxkKGljb24pOwogICAgICB6b25lLmFwcGVuZENoaWxkKG1haW4pOwogICAgICBjYXJkLmFwcGVuZENoaWxkKHpvbmUpOwogICAgfQogICAgcGFuZWwuYXBwZW5kQ2hpbGQoY2FyZCk7CgogICAgdmFyIG1ldGEgPSBlbCgnZGl2JywgJ2NscC1tZWRpYS1tZXRhJyk7CiAgICB2YXIgdGltZVNwYW4gPSBlbCgnc3BhbicsICcnLCAnMDowMCAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKSk7CiAgICBtZXRhLmFwcGVuZENoaWxkKHRpbWVTcGFuKTsKICAgIHZhciB2b2wgPSBlbCgnc3BhbicsICcnKTsKICAgIHZvbC5pbm5lckhUTUwgPSAnPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyNiAyNiIgZmlsbD0ibm9uZSIgYXJpYS1oaWRkZW49InRydWUiPicgKwogICAgICAnPHJlY3QgeD0iMyIgeT0iOSIgd2lkdGg9IjYiIGhlaWdodD0iOCIgcng9IjEiIGZpbGw9ImN1cnJlbnRDb2xvciIvPicgKwogICAgICAnPHBhdGggZD0iTTkgOSBMMTUgNCBMMTUgMjIgTDkgMTcgWiIgZmlsbD0iY3VycmVudENvbG9yIi8+JyArCiAgICAgICc8cGF0aCBkPSJNMTggOSBhNS41IDUuNSAwIDAgMSAwIDgiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPjwvc3ZnPic7CiAgICBtZXRhLmFwcGVuZENoaWxkKHZvbCk7CiAgICBwYW5lbC5hcHBlbmRDaGlsZChtZXRhKTsKICAgIHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsIChzZWMubWVkaWFUeXBlID09PSAndmlkZW8nID8gJ1RoaXMgdmlkZW8gcGxheXMnIDogJ1RoaXMgcmVjb3JkaW5nIHBsYXlzJykgKyAnIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIHRlc3QuJykpOwogICAgaWYgKCFDRUxQSVBfWVQudmlkZW9JZCl7IHBhbmVsLmFwcGVuZENoaWxkKGVsKCdkaXYnLCAnY2xwLW9uY2Utbm90ZScsICdPZmZpY2lhbCBhdWRpby92aWRlbyBpcyBiZWluZyBwcmVwYXJlZCBcdTIwMTQgdGhlIGJhciBhYm92ZSBpcyBhIHNpbXVsYXRpb24uIFByZXNzIE5FWFQgdG8gY29udGludWUuJykpOyB9CiAgICByb290LmFwcGVuZENoaWxkKHBhbmVsKTsKCiAgICAvKiBzaW11bGF0ZWQgcGxheWJhY2sgKi8KICAgIHZhciBlbGFwc2VkID0gMDsKICAgIG1lZGlhVGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpewogICAgICBlbGFwc2VkKys7CiAgICAgIGlmIChlbGFwc2VkID49IHNlYy5kdXJhdGlvbil7CiAgICAgICAgZWxhcHNlZCA9IHNlYy5kdXJhdGlvbjsKICAgICAgICBjbGVhckludGVydmFsKG1lZGlhVGltZXIpOyBtZWRpYVRpbWVyID0gbnVsbDsKICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9ICdGaW5pc2hlZCc7CiAgICAgIH0KICAgICAgZmlsbC5zdHlsZS53aWR0aCA9IE1hdGgucm91bmQoZWxhcHNlZCAvIHNlYy5kdXJhdGlvbiAqIDEwMCkgKyAnJSc7CiAgICAgIHRpbWVTcGFuLnRleHRDb250ZW50ID0gZm10KGVsYXBzZWQpICsgJyAvICcgKyBmbXQoc2VjLmR1cmF0aW9uKTsKICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyUXVlc3Rpb25zKHNjciwgcm9vdCl7CiAgICB2YXIgcGFydCA9IFRFU1RfREFUQS5wYXJ0c1tzY3IucGldOwogICAgdmFyIHNlYyA9IHBhcnQuc2VjdGlvbnNbc2NyLnNpXTsKICAgIHJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1sYWJlbCcsIHBhcnQubmFtZSArICcgXHUyMDE0IFF1ZXN0aW9ucycpOwogICAgcm9vdC5hcHBlbmRDaGlsZChtYWtlSW5zdHIocGFydC5xSW5zdHJ1Y3Rpb24pKTsKCiAgICB2YXIgcGFuZWwgPSBlbCgnZGl2JywgJ2NscC1xLXBhbmVsJyk7CiAgICBzZWMucXVlc3Rpb25zLmZvckVhY2goZnVuY3Rpb24ocSwgcWkpewogICAgICB2YXIga2V5ID0gcUtleShzY3IucGksIHNjci5zaSwgcWkpOwogICAgICB2YXIgcm93ID0gZWwoJ2RpdicsICdjbHAtcScpOwogICAgICB2YXIgbnVtID0gZWwoJ3NwYW4nLCAnY2xwLXFudW0nLCBxLm4gKyAnLiAnKTsKICAgICAgcm93LmFwcGVuZENoaWxkKG51bSk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShxLnN0ZW0gKyAnICcpKTsKCiAgICAgIHZhciBkZCA9IGVsKCdidXR0b24nLCAnY2xwLWRkJyk7CiAgICAgIGRkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgZGQuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLWRkLXRleHQnKSk7CiAgICAgIGRkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1kZC1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIHZhciBhbnMgPSBzdGF0ZS5hbnN3ZXJzW2tleV07CiAgICAgIHNldFRyaWdnZXJMYWJlbChkZCwgYW5zICE9PSB1bmRlZmluZWQgPyBxLm9wdGlvbnNbYW5zXSA6ICcnLCBhbnMgPT09IHVuZGVmaW5lZCk7CiAgICAgIHJvdy5hcHBlbmRDaGlsZChkZCk7CgogICAgICBpZiAocS50b2RvKXsKICAgICAgICByb3cuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRvZG8tdGFnJywgJ1RPRE8nKSk7CiAgICAgIH0KCiAgICAgIGlmIChzdGF0ZS5jaGVja2VkKXsKICAgICAgICBkZC5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgdmFyIGNvcnJlY3QgPSBhbnMgPT09IHEua2V5IC0gMTsKICAgICAgICBkZC5jbGFzc0xpc3QuYWRkKGNvcnJlY3QgPyAnY2xwLW1hcmstcmlnaHQnIDogJ2NscC1tYXJrLXdyb25nJyk7CiAgICAgICAgaWYgKCFjb3JyZWN0KXsKICAgICAgICAgIHZhciByZXYgPSBlbCgnc3BhbicsICdjbHAtcmV2ZWFsJyk7CiAgICAgICAgICByZXYuaW5uZXJIVE1MID0gJ0NvcnJlY3QgYW5zd2VyOiA8Yj48L2I+JzsKICAgICAgICAgIHJldi5xdWVyeVNlbGVjdG9yKCdiJykudGV4dENvbnRlbnQgPSBxLm9wdGlvbnNbcS5rZXkgLSAxXTsKICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChyZXYpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBkZC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2KXsKICAgICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgb3BlblBvcHVwKGRkLCBzY3IucGksIHNjci5zaSwgcWkpOwogICAgICAgIH0pOwogICAgICB9CiAgICAgIHBhbmVsLmFwcGVuZENoaWxkKHJvdyk7CiAgICB9KTsKICAgIHJvb3QuYXBwZW5kQ2hpbGQocGFuZWwpOwoKICAgIC8qIGNvdW50ZG93biAqLwogICAgcVJlbWFpbmluZyA9IHNlYy50aW1lTWludXRlcyAqIDYwOwogICAgc3RhcnRRVGltZXIoKTsKICB9CiAgZnVuY3Rpb24gc3RhcnRRVGltZXIoKXsKICAgIGlmIChxVGltZXIpIGNsZWFySW50ZXJ2YWwocVRpbWVyKTsKICAgIGlmICghc3RhdGUudGltZXJPbikgcmV0dXJuOwogICAgcVRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXsKICAgICAgaWYgKHFSZW1haW5pbmcgPiAwKSBxUmVtYWluaW5nLS07CiAgICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgICBpZiAodCkgdC5pbm5lckhUTUwgPSAnVGltZSByZW1haW5pbmc6IDxiPicgKyBmbXQocVJlbWFpbmluZykgKyAnPC9iPic7CiAgICAgIGlmIChxUmVtYWluaW5nIDw9IDApeyBjbGVhckludGVydmFsKHFUaW1lcik7IHFUaW1lciA9IG51bGw7IH0KICAgIH0sIDEwMDApOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyRmluaXNoKHJvb3QpewogICAgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2NyZWVuLWxhYmVsJywgJ0VuZCBvZiBUZXN0Jyk7CiAgICB2YXIgYm94ID0gZWwoJ2RpdicsICdjbHAtZmluaXNoJyk7CiAgICBib3guYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdFbmQgb2YgdGhlIExpc3RlbmluZyBUZXN0JykpOwogICAgYm94LmFwcGVuZENoaWxkKGVsKCdwJywgJycsICdZb3UgaGF2ZSBhbnN3ZXJlZCAnICsgYW5zd2VyZWRDb3VudCgpICsgJyBvZiAnICsgVE9UQUxfUSArICcgcXVlc3Rpb25zLiBDaGVjayB5b3VyIGFuc3dlcnMgdG8gc2VlIHlvdXIgc2NvcmUsIHBhcnQtYnktcGFydCByZXN1bHRzLCBhbmQgdHJhbnNjcmlwdHMuJykpOwogICAgdmFyIGJ0biA9IGVsKCdidXR0b24nLCAnY2xwLWZpbmlzaC1jaGVjaycsICdDaGVjayBhbnN3ZXJzJyk7CiAgICBidG4udHlwZSA9ICdidXR0b24nOwogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgY2hlY2tBbnN3ZXJzKTsKICAgIGJveC5hcHBlbmRDaGlsZChidG4pOwogICAgcm9vdC5hcHBlbmRDaGlsZChib3gpOwogIH0KCiAgZnVuY3Rpb24gcmVuZGVyKCl7CiAgICBjbGVhclRpbWVycygpOwogICAgY2xvc2VQb3B1cCgpOwogICAgY2F0LmlubmVySFRNTCA9ICcnOwogICAgdmFyIHNjciA9IHNjcmVlbnNbc3RhdGUuaWR4XTsKCiAgICBpZiAoIXN0YXRlLnN0YXJ0ZWQpewogICAgICB2YXIgYmFyMCA9IGVsKCdkaXYnLCAnY2xwLWJhcicpOwogICAgICBiYXIwLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1iYXItdGl0bGUnLCBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnKSk7CiAgICAgIGNhdC5hcHBlbmRDaGlsZChiYXIwKTsKICAgICAgdmFyIGlkbGUgPSBlbCgnZGl2JywgJ2NscC1pZGxlJyk7CiAgICAgIHZhciBwID0gZWwoJ3AnLCAnJywgJ1ByZXNzIFx1MjAxQ1N0YXJ0IHRlc3RcdTIwMUQgYWJvdmUgdG8gYmVnaW4uIFRoZSB0ZXN0IGhhcyA2IHBhcnRzIGFuZCAzOCBxdWVzdGlvbnMsIGFuZCBldmVyeSByZWNvcmRpbmcgYW5kIHZpZGVvIHBsYXlzIG9ubHkgb25jZSBcdTIwMTQganVzdCBsaWtlIHRoZSByZWFsIGNvbXB1dGVyLWRlbGl2ZXJlZCB0ZXN0LicpOwogICAgICBpZGxlLmFwcGVuZENoaWxkKHApOwogICAgICBjYXQuYXBwZW5kQ2hpbGQoaWRsZSk7CiAgICAgIHJlbmRlckRvdHMoKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIHZhciBpc1EgPSBzY3IudHlwZSA9PT0gJ3EnOwogICAgaWYgKGlzUSl7CiAgICAgIHZhciBzZWMgPSBURVNUX0RBVEEucGFydHNbc2NyLnBpXS5zZWN0aW9uc1tzY3Iuc2ldOwogICAgICBxUmVtYWluaW5nID0gc2VjLnRpbWVNaW51dGVzICogNjA7CiAgICB9CiAgICB2YXIgdGl0bGUgPSBzY3IudHlwZSA9PT0gJ2ZpbmlzaCcKICAgICAgPyBURVNUX0RBVEEudGVzdExhYmVsICsgJyBcdTIwMTMgTGlzdGVuaW5nIFRlc3QnCiAgICAgIDogVEVTVF9EQVRBLnBhcnRzW3Njci5waV0uaGVhZGVyVGl0bGU7CiAgICBjYXQuYXBwZW5kQ2hpbGQobWFrZUJhcih0aXRsZSwgaXNRKSk7CgogICAgdmFyIHNjcmVlbiA9IGVsKCdkaXYnLCAnY2xwLXNjcmVlbicpOwogICAgaWYgKHNjci50eXBlID09PSAnaW50cm8nKSByZW5kZXJJbnRybyhzY3IsIHNjcmVlbik7CiAgICBlbHNlIGlmIChzY3IudHlwZSA9PT0gJ21lZGlhJykgcmVuZGVyTWVkaWEoc2NyLCBzY3JlZW4pOwogICAgZWxzZSBpZiAoc2NyLnR5cGUgPT09ICdxJykgcmVuZGVyUXVlc3Rpb25zKHNjciwgc2NyZWVuKTsKICAgIGVsc2UgcmVuZGVyRmluaXNoKHNjcmVlbik7CiAgICBjYXQuYXBwZW5kQ2hpbGQoc2NyZWVuKTsKICAgIHJlbmRlckRvdHMoKTsKICB9CgogIC8qIC0tLS0tLS0tLS0gcmVzdWx0cyAtLS0tLS0tLS0tICovCiAgZnVuY3Rpb24gY2hlY2tBbnN3ZXJzKCl7CiAgICBpZiAoc3RhdGUuY2hlY2tlZCkgcmV0dXJuOwogICAgc3RhdGUuY2hlY2tlZCA9IHRydWU7CiAgICB2YXIgc2NvcmUgPSBjb21wdXRlU2NvcmUoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgcmVuZGVyKCk7CiAgICByZW5kZXJSZXN1bHRzKHNjb3JlKTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSBmYWxzZTsKICAgIHNjcm9sbFRvRWwocmVzdWx0c0VsKTsKICB9CgogIGZ1bmN0aW9uIHJlbmRlclJlc3VsdHMoc2NvcmUpewogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgcmVzdWx0c0VsLmFwcGVuZENoaWxkKGVsKCdoMicsICcnLCAnWW91ciByZXN1bHRzJykpOwogICAgdmFyIGdyaWQgPSBlbCgnZGl2JywgJ2NscC1yZXMtZ3JpZCcpOwoKICAgIC8qIHJpbmcgY2FyZCAqLwogICAgdmFyIHJpbmdDYXJkID0gZWwoJ2RpdicsICdjbHAtY2FyZCBjbHAtcmluZy1jYXJkIGNscC1yZXYnKTsKICAgIHZhciB3cmFwID0gZWwoJ2RpdicsICdjbHAtcmluZy13cmFwJyk7CiAgICB2YXIgUiA9IDU2LCBDID0gMiAqIE1hdGguUEkgKiBSOwogICAgd3JhcC5pbm5lckhUTUwgPQogICAgICAnPHN2ZyB3aWR0aD0iMTMyIiBoZWlnaHQ9IjEzMiIgdmlld0JveD0iMCAwIDEzMiAxMzIiPicgKwogICAgICAnPGNpcmNsZSBjeD0iNjYiIGN5PSI2NiIgcj0iJyArIFIgKyAnIiBzdHJva2U9IiNFMkU4RjAiIHN0cm9rZS13aWR0aD0iMTEiIGZpbGw9Im5vbmUiLz4nICsKICAgICAgJzxjaXJjbGUgaWQ9ImNscFJpbmciIGN4PSI2NiIgY3k9IjY2IiByPSInICsgUiArICciIHN0cm9rZT0iIzEwQjk4MSIgc3Ryb2tlLXdpZHRoPSIxMSIgZmlsbD0ibm9uZSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAnICsKICAgICAgJ3N0cm9rZS1kYXNoYXJyYXk9IicgKyBDICsgJyIgc3Ryb2tlLWRhc2hvZmZzZXQ9IicgKyBDICsgJyIvPjwvc3ZnPic7CiAgICB2YXIgbnVtID0gZWwoJ2RpdicsICdjbHAtcmluZy1udW0nKTsKICAgIHZhciBiaWcgPSBlbCgnYicsICcnLCAnMCcpOwogICAgbnVtLmFwcGVuZENoaWxkKGJpZyk7CiAgICBudW0uYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnJywgJ291dCBvZiAnICsgVE9UQUxfUSkpOwogICAgd3JhcC5hcHBlbmRDaGlsZChudW0pOwogICAgcmluZ0NhcmQuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICByaW5nQ2FyZC5hcHBlbmRDaGlsZChlbCgnaDMnLCAnJywgJ1RvdGFsIHNjb3JlJykpOwogICAgZ3JpZC5hcHBlbmRDaGlsZChyaW5nQ2FyZCk7CgogICAgLyogYnJlYWtkb3duIGNhcmQgKi8KICAgIHZhciBiZCA9IGVsKCdkaXYnLCAnY2xwLWNhcmQgY2xwLXJldicpOwogICAgYmQuYXBwZW5kQ2hpbGQoZWwoJ2gzJywgJycsICdQYXJ0LWJ5LXBhcnQgYnJlYWtkb3duJykpOwogICAgdmFyIGNoaXBzID0gZWwoJ2RpdicsICdjbHAtcGFydC1jaGlwcycpOwogICAgc2NvcmUucGVyUGFydC5mb3JFYWNoKGZ1bmN0aW9uKHBwLCBwaSl7CiAgICAgIHZhciBjID0gZWwoJ3NwYW4nLCAnY2xwLXBhcnQtY2hpcCcpOwogICAgICBjLmlubmVySFRNTCA9ICdQJyArIChwaSArIDEpICsgJyA8Yj4nICsgcHAuY29ycmVjdCArICcvJyArIHBwLnRvdGFsICsgJzwvYj4nOwogICAgICBjaGlwcy5hcHBlbmRDaGlsZChjKTsKICAgIH0pOwogICAgYmQuYXBwZW5kQ2hpbGQoY2hpcHMpOwoKICAgIHZhciBlc3QgPSBjbGJFc3RpbWF0ZShzY29yZS50b3RhbCk7CiAgICB2YXIgY2xiID0gZWwoJ2RpdicsICdjbHAtY2xiLXJvdycpOwogICAgY2xiLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC1jbGItYmFkZ2UnLCBlc3QubGV2ZWwpKTsKICAgIGNsYi5hcHBlbmRDaGlsZChlbCgncCcsICcnLCBlc3Qubm90ZSArICcgXHUyMDE0IGVzdGltYXRlZCBmcm9tIGEgcmF3IHNjb3JlIG9mICcgKyBzY29yZS50b3RhbCArICcvJyArIFRPVEFMX1EgKyAnLiBUT0RPOiBwbGFjZWhvbGRlciBtYXBwaW5nIFx1MjAxNCB2ZXJpZnkgYWdhaW5zdCB0aGUgb2ZmaWNpYWwgQ0VMUElQIHNjb3JlIGNoYXJ0LicpKTsKICAgIGJkLmFwcGVuZENoaWxkKGNsYik7CiAgICBncmlkLmFwcGVuZENoaWxkKGJkKTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZChncmlkKTsKCiAgICAvKiB0cmFuc2NyaXB0cyAqLwogICAgdmFyIHRyV3JhcCA9IGVsKCdkaXYnLCAnY2xwLXRyYW5zY3JpcHRzJyk7CiAgICBURVNUX0RBVEEucGFydHMuZm9yRWFjaChmdW5jdGlvbihwYXJ0LCBwaSl7CiAgICAgIHZhciBjYXJkID0gZWwoJ2RpdicsICdjbHAtdHItY2FyZCBjbHAtcmV2Jyk7CiAgICAgIHZhciBoZWFkID0gZWwoJ2J1dHRvbicsICdjbHAtdHItaGVhZCcpOwogICAgICBoZWFkLnR5cGUgPSAnYnV0dG9uJzsKICAgICAgaGVhZC5hcHBlbmRDaGlsZChlbCgnc3BhbicsICcnLCAnVHJhbnNjcmlwdCBcdTIwMTQgJyArIHBhcnQubmFtZSkpOwogICAgICBoZWFkLmFwcGVuZENoaWxkKGVsKCdzcGFuJywgJ2NscC10ci1jYXJldCcsICdcdTI1QkMnKSk7CiAgICAgIGhlYWQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpeyBjYXJkLmNsYXNzTGlzdC50b2dnbGUoJ2NscC1vcGVuJyk7IH0pOwogICAgICB2YXIgYm9keSA9IGVsKCdkaXYnLCAnY2xwLXRyLWJvZHknKTsKICAgICAgYm9keS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYXJ0LnRyYW5zY3JpcHQpKTsKICAgICAgaWYgKHBhcnQudHJhbnNjcmlwdFRvZG8pewogICAgICAgIGJvZHkuYXBwZW5kQ2hpbGQoZWwoJ3NwYW4nLCAnY2xwLXRyLXRvZG8nLCAnVE9ETzogcmVwbGFjZSB0aGlzIHN1bW1hcnkgd2l0aCB0aGUgZnVsbCBvZmZpY2lhbCB0cmFuc2NyaXB0LicpKTsKICAgICAgfQogICAgICBjYXJkLmFwcGVuZENoaWxkKGhlYWQpOwogICAgICBjYXJkLmFwcGVuZENoaWxkKGJvZHkpOwogICAgICB0cldyYXAuYXBwZW5kQ2hpbGQoY2FyZCk7CiAgICB9KTsKICAgIHJlc3VsdHNFbC5hcHBlbmRDaGlsZCh0cldyYXApOwoKICAgIC8qIHJldmVhbCArIGNvdW50LXVwICovCiAgICB2YXIgcmV2RWxzID0gcmVzdWx0c0VsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5jbHAtcmV2Jyk7CiAgICBpZiAoJ0ludGVyc2VjdGlvbk9ic2VydmVyJyBpbiB3aW5kb3cgJiYgIXJlZHVjZWRNb3Rpb24pewogICAgICB2YXIgaW8gPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oZW50cmllcyl7CiAgICAgICAgZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVuKXsKICAgICAgICAgIGlmIChlbi5pc0ludGVyc2VjdGluZyl7IGVuLnRhcmdldC5jbGFzc0xpc3QuYWRkKCdjbHAtaW4nKTsgaW8udW5vYnNlcnZlKGVuLnRhcmdldCk7IH0KICAgICAgICB9KTsKICAgICAgfSwgeyB0aHJlc2hvbGQ6IDAuMTUgfSk7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBpby5vYnNlcnZlKGUpOyB9KTsKICAgIH0gZWxzZSB7CiAgICAgIHJldkVscy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyBlLmNsYXNzTGlzdC5hZGQoJ2NscC1pbicpOyB9KTsKICAgIH0KCiAgICB2YXIgcmluZyA9IHJlc3VsdHNFbC5xdWVyeVNlbGVjdG9yKCcjY2xwUmluZycpOwogICAgdmFyIHRhcmdldCA9IHNjb3JlLnRvdGFsOwogICAgaWYgKHJlZHVjZWRNb3Rpb24pewogICAgICBiaWcudGV4dENvbnRlbnQgPSB0YXJnZXQ7CiAgICAgIHJpbmcuc3R5bGUuc3Ryb2tlRGFzaG9mZnNldCA9IEMgKiAoMSAtIHRhcmdldCAvIFRPVEFMX1EpOwogICAgfSBlbHNlIHsKICAgICAgdmFyIHQwID0gbnVsbCwgRFVSID0gMTEwMDsKICAgICAgZnVuY3Rpb24gc3RlcCh0cyl7CiAgICAgICAgaWYgKCF0MCkgdDAgPSB0czsKICAgICAgICB2YXIgcCA9IE1hdGgubWluKDEsICh0cyAtIHQwKSAvIERVUik7CiAgICAgICAgdmFyIGVhc2UgPSAxIC0gTWF0aC5wb3coMSAtIHAsIDMpOwogICAgICAgIGJpZy50ZXh0Q29udGVudCA9IE1hdGgucm91bmQoZWFzZSAqIHRhcmdldCk7CiAgICAgICAgcmluZy5zdHlsZS5zdHJva2VEYXNob2Zmc2V0ID0gQyAqICgxIC0gKGVhc2UgKiB0YXJnZXQpIC8gVE9UQUxfUSk7CiAgICAgICAgaWYgKHAgPCAxKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7CiAgICAgIH0KICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwogICAgfQogIH0KCiAgLyogLS0tLS0tLS0tLSB0b29sYmFyIC8gY29udHJvbHMgLS0tLS0tLS0tLSAqLwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBTdGFydCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIHN0YXRlLnN0YXJ0ZWQgPSB0cnVlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHRvb2xiYXIuaGlkZGVuID0gZmFsc2U7CiAgICByZW5kZXIoKTsKICAgIHVwZGF0ZVNjb3JlQ2hpcCgpOwogICAgc2Nyb2xsVG9FbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2xwU2ltJykpOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbHBDaGVjaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKXsKICAgIGlmICghc3RhdGUuc3RhcnRlZCkgcmV0dXJuOwogICAgY2hlY2tBbnN3ZXJzKCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFJlc2V0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUuc3RhcnRlZCA9IGZhbHNlOwogICAgc3RhdGUuaWR4ID0gMDsKICAgIHN0YXRlLmFuc3dlcnMgPSB7fTsKICAgIHN0YXRlLmNoZWNrZWQgPSBmYWxzZTsKICAgIHJlc3VsdHNFbC5oaWRkZW4gPSB0cnVlOwogICAgcmVzdWx0c0VsLmlubmVySFRNTCA9ICcnOwogICAgdG9vbGJhci5oaWRkZW4gPSB0cnVlOwogICAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgICByZW5kZXIoKTsKICAgIHNjcm9sbFRvRWwoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscEFwcCcpLCAyMCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFRpbWVyVG9nZ2xlJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpewogICAgc3RhdGUudGltZXJPbiA9ICFzdGF0ZS50aW1lck9uOwogICAgdGhpcy50ZXh0Q29udGVudCA9ICdUaW1lcjogJyArIChzdGF0ZS50aW1lck9uID8gJ29uJyA6ICdvZmYnKTsKICAgIHZhciB0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NscFFUaW1lcicpOwogICAgaWYgKCFzdGF0ZS50aW1lck9uKXsKICAgICAgaWYgKHFUaW1lcil7IGNsZWFySW50ZXJ2YWwocVRpbWVyKTsgcVRpbWVyID0gbnVsbDsgfQogICAgICBpZiAodCkgdC5yZW1vdmUoKTsKICAgIH0gZWxzZSBpZiAoc2NyZWVuc1tzdGF0ZS5pZHhdICYmIHNjcmVlbnNbc3RhdGUuaWR4XS50eXBlID09PSAncScpewogICAgICByZW5kZXIoKTsKICAgIH0KICB9KTsKCiAgdXBkYXRlU2NvcmVDaGlwKCk7CiAgcmVuZGVyKCk7Cn0pKCk7Cg=='));<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>CELPIP Listening Set 3 Practice Test 2: 6-part computer-delivered listening test in the real exam format, with audio, instant scoring and answer key. Free, no sign-up.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-with-title","meta":{"footnotes":""},"class_list":["post-6055","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6055","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=6055"}],"version-history":[{"count":1,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6055\/revisions"}],"predecessor-version":[{"id":6606,"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/pages\/6055\/revisions\/6606"}],"wp:attachment":[{"href":"https:\/\/allenglish4u.com\/vi\/wp-json\/wp\/v2\/media?parent=6055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}