{"id":776,"date":"2026-04-13T11:26:41","date_gmt":"2026-04-13T03:26:41","guid":{"rendered":"https:\/\/gerliinerin.mn\/?page_id=776"},"modified":"2026-04-27T16:49:02","modified_gmt":"2026-04-27T08:49:02","slug":"video-library","status":"publish","type":"page","link":"https:\/\/gerliinerin.mn\/en\/video-library\/","title":{"rendered":"Video-library"},"content":{"rendered":"<!-- \n  GE-PREMIUM-VIDEO-LIBRARY: Godmode Edition\n  Features: \n  - Netflix-style Hover Effects\n  - Cinematic Modal Player\n  - Gold-Glassmorphism UI\n  - WordPress-Safe Structure\n-->\n\n<div class=\"ge-video-library-root\" style=\"position:relative; z-index:20; color:#fff; font-family:'Lato', sans-serif; padding: 40px 20px;\">\n  \n  <!-- Header Section -->\n  <div class=\"ge-video-header\" style=\"text-align:center; margin-bottom:60px;\">\n    <span style=\"font-family:'Cinzel', serif; color:#b8923a; letter-spacing:4px; font-size:0.8rem; text-transform:uppercase;\">\u2726 \u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0422\u04e9\u0432 \u2726<\/span>\n    <h1 style=\"font-family:'Cinzel', serif; font-size:3.5rem; margin:15px 0; background: linear-gradient(to bottom, #f0cc80, #b8923a); -webkit-background-clip: text; -webkit-text-fill-color: transparent; filter: drop-shadow(0 0 15px rgba(184,146,58,0.3));\">\u0412\u0438\u0434\u0435\u043e \u0421\u0430\u043d<\/h1>\n    <div style=\"width:60px; height:2px; background:#b8923a; margin:20px auto;\"><\/div>\n    <p style=\"font-style:italic; opacity:0.8; max-width:600px; margin:0 auto; line-height:1.6;\">\u041e\u044e\u0443\u043d \u0441\u0430\u043d\u0430\u0430\u043d\u044b \u0433\u044d\u0433\u044d\u044d\u0440\u044d\u043b, \u0431\u044f\u0441\u0430\u043b\u0433\u0430\u043b \u0431\u043e\u043b\u043e\u043d \u0441\u0443\u0440\u0433\u0430\u0430\u043b\u0438\u0439\u043d \u0432\u0438\u0434\u0435\u043e \u0446\u0443\u0433\u043b\u0443\u0443\u043b\u0433\u0430.<\/p>\n  <\/div>\n\n  <!-- Search & Filter Bar -->\n  <div class=\"ge-video-nav\" style=\"max-width:1100px; margin:0 auto 50px; display:flex; flex-wrap:wrap; gap:20px; align-items:center; background:rgba(13,20,40,0.4); backdrop-filter:blur(10px); padding:20px; border-radius:50px; border:1px solid rgba(184,146,58,0.2);\">\n    <div style=\"flex:1; position:relative;\">\n      <input type=\"text\" id=\"vl-search\" placeholder=\"\u0412\u0438\u0434\u0435\u043e \u0445\u0430\u0439\u0445...\" style=\"width:100%; background:transparent; border:none; color:#fff; padding:10px 20px 10px 45px; font-size:1rem; outline:none;\">\n      <span style=\"position:absolute; left:20px; top:50%; transform:translateY(-50%); opacity:0.5;\">\ud83d\udd0d<\/span>\n    <\/div>\n    <div class=\"ge-pills\" style=\"display:flex; gap:10px;\">\n      <button class=\"vl-pill active\" data-cat=\"all\" style=\"background:#b8923a; border:none; color:#fff; padding:10px 25px; border-radius:30px; cursor:pointer; font-weight:600; transition:0.3s;\">\u0411\u04af\u0433\u0434<\/button>\n      <button class=\"vl-pill\" data-cat=\"meditation\" style=\"background:rgba(255,255,255,0.05); border:none; color:#fff; padding:10px 25px; border-radius:30px; cursor:pointer; transition:0.3s;\">\u0411\u044f\u0441\u0430\u043b\u0433\u0430\u043b<\/button>\n      <button class=\"vl-pill\" data-cat=\"teaching\" style=\"background:rgba(255,255,255,0.05); border:none; color:#fff; padding:10px 25px; border-radius:30px; cursor:pointer; transition:0.3s;\">\u0421\u0443\u0440\u0433\u0430\u0430\u043b<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- Video Grid -->\n  <div id=\"ge-video-grid\" style=\"display:grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap:30px; max-width:1200px; margin:0 auto;\">\n    <!-- Videos will be injected here -->\n  <\/div>\n\n  <!-- Video Modal -->\n  <div id=\"vl-modal\" style=\"position:fixed; inset:0; background:rgba(0,0,0,0.9); backdrop-filter:blur(20px); z-index:10000; display:none; align-items:center; justify-content:center; padding:20px;\">\n    <div style=\"width:100%; max-width:1000px; position:relative;\">\n      <button id=\"vl-close\" style=\"position:absolute; top:-50px; right:0; background:none; border:none; color:#fff; font-size:2rem; cursor:pointer;\">\u2715<\/button>\n      <div style=\"position:relative; padding-bottom:56.25%; height:0; overflow:hidden; border-radius:15px; border:1px solid rgba(184,146,58,0.3); box-shadow:0 0 50px rgba(0,0,0,0.8);\">\n        <iframe id=\"vl-iframe\" style=\"position:absolute; top:0; left:0; width:100%; height:100%;\" frameborder=\"0\" allow=\"autoplay; fullscreen\" allowfullscreen><\/iframe>\n      <\/div>\n      <h2 id=\"vl-modal-title\" style=\"font-family:'Cinzel', serif; color:#f0cc80; margin-top:20px; text-align:center;\"><\/h2>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<style>\n  .ge-video-card {\n    position: relative;\n    border-radius: 15px;\n    overflow: hidden;\n    background: rgba(255,255,255,0.03);\n    border: 1px solid rgba(255,255,255,0.05);\n    transition: 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n    cursor: pointer;\n  }\n  .ge-video-card:hover {\n    transform: scale(1.05);\n    z-index: 10;\n    border-color: rgba(184,146,58,0.5);\n    box-shadow: 0 20px 40px rgba(0,0,0,0.6);\n  }\n  .ge-video-thumb {\n    width: 100%;\n    aspect-ratio: 16\/9;\n    object-fit: cover;\n    transition: 0.4s;\n  }\n  .ge-video-card:hover .ge-video-thumb {\n    filter: brightness(0.7);\n  }\n  .ge-video-info {\n    padding: 15px;\n    background: linear-gradient(to top, rgba(5,7,12,0.9), transparent);\n  }\n  .ge-play-icon {\n    position: absolute;\n    top: 50%; left: 50%;\n    transform: translate(-50%, -50%) scale(0);\n    width: 60px; height: 60px;\n    background: rgba(184,146,58,0.9);\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: #000;\n    font-size: 1.5rem;\n    transition: 0.3s;\n  }\n  .ge-video-card:hover .ge-play-icon {\n    transform: translate(-50%, -50%) scale(1);\n  }\n  .vl-pill:hover { background: rgba(184,146,58,0.2) !important; }\n  .vl-pill.active { box-shadow: 0 0 20px rgba(184,146,58,0.4); }\n<\/style>\n\n<script>\n(function() {\n  const videos = [\n    { id: 1, title: \"\u04e8\u0433\u043b\u04e9\u04e9\u043d\u0438\u0439 \u0431\u044f\u0441\u0430\u043b\u0433\u0430\u043b\", cat: \"meditation\", thumb: \"https:\/\/img.youtube.com\/vi\/dQw4w9WgXcQ\/maxresdefault.jpg\", url: \"https:\/\/www.youtube.com\/embed\/dQw4w9WgXcQ\" },\n    { id: 2, title: \"\u0423\u0445\u0430\u043c\u0441\u0440\u044b\u043d \u0445\u0438\u0447\u044d\u044d\u043b #1\", cat: \"teaching\", thumb: \"https:\/\/img.youtube.com\/vi\/3JZ_D3ELwOQ\/maxresdefault.jpg\", url: \"https:\/\/www.youtube.com\/embed\/3JZ_D3ELwOQ\" },\n    { id: 3, title: \"\u0414\u043e\u0442\u043e\u043e\u0434 \u0430\u043c\u0430\u0440 \u0430\u043c\u0433\u0430\u043b\u0430\u043d\", cat: \"meditation\", thumb: \"https:\/\/img.youtube.com\/vi\/lFcSrYw-ARY\/maxresdefault.jpg\", url: \"https:\/\/www.youtube.com\/embed\/lFcSrYw-ARY\" }\n  ];\n\n  function renderVideos(filter = 'all', query = '') {\n    const grid = document.getElementById('ge-video-grid');\n    grid.innerHTML = '';\n    const filtered = videos.filter(v => {\n      const matchCat = filter === 'all' || v.cat === filter;\n      const matchQuery = v.title.toLowerCase().includes(query.toLowerCase());\n      return matchCat && matchQuery;\n    });\n\n    filtered.forEach(v => {\n      const card = document.createElement('div');\n      card.className = 'ge-video-card';\n      card.innerHTML = `\n        <img decoding=\"async\" src=\"${v.thumb}\" class=\"ge-video-thumb\">\n        <div class=\"ge-play-icon\">\u25b6<\/div>\n        <div class=\"ge-video-info\">\n          <h3 style=\"font-family:'Cinzel', serif; color:#f0cc80; margin:0; font-size:1.1rem;\">${v.title}<\/h3>\n          <span style=\"font-size:0.7rem; text-transform:uppercase; color:#b8923a; letter-spacing:1px;\">${v.cat}<\/span>\n        <\/div>\n      `;\n      card.onclick = () => openModal(v);\n      grid.appendChild(card);\n    });\n  }\n\n  function openModal(v) {\n    const modal = document.getElementById('vl-modal');\n    const iframe = document.getElementById('vl-iframe');\n    const title = document.getElementById('vl-modal-title');\n    iframe.src = v.url + \"?autoplay=1\";\n    title.textContent = v.title;\n    modal.style.display = 'flex';\n  }\n\n  document.getElementById('vl-close').onclick = () => {\n    document.getElementById('vl-modal').style.display = 'none';\n    document.getElementById('vl-iframe').src = '';\n  };\n\n  document.getElementById('vl-search').addEventListener('input', (e) => renderVideos('all', e.target.value));\n\n  document.querySelectorAll('.vl-pill').forEach(pill => {\n    pill.onclick = () => {\n      document.querySelectorAll('.vl-pill').forEach(p => {\n        p.classList.remove('active');\n        p.style.background = 'rgba(255,255,255,0.05)';\n      });\n      pill.classList.add('active');\n      pill.style.background = '#b8923a';\n      renderVideos(pill.dataset.cat);\n    };\n  });\n\n  renderVideos();\n})();\n<\/script>\n\n\n<figure class=\"wp-block-video wp-block-embed is-type-video is-provider-videopress\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"VideoPress Video Player\" aria-label='VideoPress Video Player' width='500' height='282' src='https:\/\/videopress.com\/embed\/qXuKPEeW?cover=1&amp;preloadContent=metadata&amp;useAverageColor=1&amp;hd=0' frameborder='0' allowfullscreen data-resize-to-parent=\"true\" allow='clipboard-write'><\/iframe><script src='https:\/\/v0.wordpress.com\/js\/next\/videopress-iframe.js?m=1770107250'><\/script>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u2726 \u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0422\u04e9\u0432 \u2726 \u0412\u0438\u0434\u0435\u043e \u0421\u0430\u043d \u041e\u044e\u0443\u043d \u0441\u0430\u043d\u0430\u0430\u043d\u044b \u0433\u044d\u0433\u044d\u044d\u0440\u044d\u043b, \u0431\u044f\u0441\u0430\u043b\u0433\u0430\u043b \u0431\u043e\u043b\u043e\u043d \u0441\u0443\u0440\u0433\u0430\u0430\u043b\u0438\u0439\u043d \u0432\u0438\u0434\u0435\u043e \u0446\u0443\u0433\u043b\u0443\u0443\u043b\u0433\u0430. \ud83d\udd0d \u0411\u04af\u0433\u0434 \u0411\u044f\u0441\u0430\u043b\u0433\u0430\u043b \u0421\u0443\u0440\u0433\u0430\u0430\u043b \u2715<\/p>","protected":false},"author":274514696,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_eb_attr":"","_crdt_document":"{\"document\":\"AAAhuvauqwjnmfT1BQT69q6rCAenmfT1BaS97+4H55n09QUMGxYBAqKXBuyXBgIBAgoASghUFAECUCISBHYaXgAtKAWnAAcAKAMnACgBJwAoACEAqAAhAicCKAQnACgEIQABAIQAgQCEAAQAoQCorcoB9ckBc3RhdGV2ZXJzaW9uX2ViX2F0dHJfZWxlbWVudG9yX2VkaXRfbW9kZV9lbGVtZW50b3JfdGVtcGxhdGVfdHlwZV9lbGVtZW50b3JfZGF0YV9lbGVtZW50b3JfcGFnZV9zZXR0aW5nc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFRycENvbnRlbnRSZXN0cmljdGlvbmlubmVyQmxvY2tzX2ViX21ldGFfZGF0YXN0YXRldmVyc2lvbnN0YXRldmVyc2lvbmRvY3VtZW50ZGF0ZWRvY3VtZW50c3RhdHVzZG9jdW1lbnR0aXRsZWRvY3VtZW50Y29udGVudGRvY3VtZW50ZXhjZXJwdGRvY3VtZW50YXV0aG9yZG9jdW1lbnRmZWF0dXJlZF9tZWRpYWRvY3VtZW50Y29tbWVudF9zdGF0dXNkb2N1bWVudHBpbmdfc3RhdHVzZG9jdW1lbnR0ZW1wbGF0ZWRvY3VtZW50bWV0YWFkdmFuY2VkX3Nlb19kZXNjcmlwdGlvbmpldHBhY2tfc2VvX2h0bWxfdGl0bGVqZXRwYWNrX3Nlb19ub2luZGV4amV0cGFja19wb3N0X3dhc19ldmVyX3B1Ymxpc2hlZGZvb3Rub3Rlc2RvY3VtZW50YmxvY2tzVmlkZW8gbGlicmFyeTwhRE9DVFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiI+CjxoZWFkPgo8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCB1c2VyLXNjYWxhYmxlPXllcyI+Cjx0aXRsZT5QaGlsb3NvcGh5IFBvZGNhc3QgfCBMaXZlIEx5cmljcyAmIEZ1bGxzY3JlZW48L3RpdGxlPgoKPCEtLSBHb29nbGUgRm9udHMgKyBJY29ucyAtLT4KPGxpbmsgaHJlZj0iaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1JbnRlcjpvcHN6LHdnaHRAMTQuLjMyLDMwMDsxNC4uMzIsNDAwOzE0Li4zMiw1MDA7MTQuLjMyLDYwMDsxNC4uMzIsNzAwJmZhbWlseT1Db3Jtb3JhbnQrR2FyYW1vbmQ6aXRhbCx3Z2h0QDAsNDAwOzAsNTAwOzAsNjAwOzEsNDAwOzEsNTAwJmRpc3BsYXk9c3dhcCIgcmVsPSJzdHlsZXNoZWV0Ij4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9mb250LWF3ZXNvbWUvNi4wLjAtYmV0YTMvY3NzL2FsbC5taW4uY3NzIj4KCjxzdHlsZT4KICAqIHsKICAgIG1hcmdpbjogMDsKICAgIHBhZGRpbmc6IDA7CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogIH0KCiAgYm9keSB7CiAgICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjsKICAgIG1pbi1oZWlnaHQ6IDEwMHZoOwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgIzBmMGYxYSAwJSwgIzFhMWEyZSA1MCUsICMwYTBhMTQgMTAwJSk7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgcGFkZGluZzogMnJlbTsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKICB9CgogIC8qIGFuaW1hdGVkIGJhY2tncm91bmQgKi8KICBib2R5OjpiZWZvcmUgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMwJSA0MCUsIHJnYmEoMjEyLDE3NSw1NSwwLjA4KSAxcHgsIHRyYW5zcGFyZW50IDFweCk7CiAgICBiYWNrZ3JvdW5kLXNpemU6IDQ1cHggNDVweDsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgYW5pbWF0aW9uOiBiZ01vdmUgMzBzIGxpbmVhciBpbmZpbml0ZTsKICAgIHotaW5kZXg6IDA7CiAgfQoKICBAa2V5ZnJhbWVzIGJnTW92ZSB7CiAgICAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsgfQogICAgMTAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDgwcHggODBweDsgfQogIH0KCiAgLyogbWFpbiBjb250YWluZXIgKi8KICAucG9kY2FzdC1jb250YWluZXIgewogICAgbWF4LXdpZHRoOiA5MDBweDsKICAgIHdpZHRoOiAxMDAlOwogICAgYmFja2dyb3VuZDogcmdiYSgyMCwgMjUsIDQ1LCAwLjkpOwogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE2cHgpOwogICAgYm9yZGVyLXJhZGl1czogMnJlbTsKICAgIGJveC1zaGFkb3c6IDAgMzVweCA2MHB4IC0yMHB4IHJnYmEoMCwgMCwgMCwgMC41KSwgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LDAuMDUpOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yNSk7CiAgICB6LWluZGV4OiAyOwogIH0KCiAgLyogbWVkaWEgdG9nZ2xlICovCiAgLm1lZGlhLXRvZ2dsZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZ2FwOiAxcmVtOwogICAgcGFkZGluZzogMS4ycmVtIDEuNXJlbSAwOwogIH0KICAudG9nZ2xlLWJ0biB7CiAgICBmbGV4OiAxOwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjA1KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLDE3NSw1NSwwLjMpOwogICAgcGFkZGluZzogMC43cmVtOwogICAgYm9yZGVyLXJhZGl1czogNTBweDsKICAgIGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBmb250LXNpemU6IDAuOXJlbTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOwogICAgY29sb3I6ICNjY2M7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZ2FwOiA4cHg7CiAgfQogIC50b2dnbGUtYnRuLmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTVkZWcsICNkNGFmMzcsICNmMGM2NzQpOwogICAgY29sb3I6ICMwZjBmMWE7CiAgICBib3JkZXItY29sb3I6ICNkNGFmMzc7CiAgICBib3gtc2hhZG93OiAwIDVweCAxNXB4IHJnYmEoMjEyLDE3NSw1NSwwLjMpOwogIH0KCiAgLyogdmlkZW8gcGxheWVyICovCiAgLnZpZGVvLXBsYXllciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJTsKICAgIGJhY2tncm91bmQ6ICMwMDA7CiAgICBkaXNwbGF5OiBub25lOwogIH0KICAudmlkZW8tcGxheWVyLmFjdGl2ZSB7CiAgICBkaXNwbGF5OiBibG9jazsKICB9CiAgLnZpZGVvLXdyYXBwZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogIH0KICAudmlkZW8td3JhcHBlciB2aWRlbyB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogYXV0bzsKICAgIG1heC1oZWlnaHQ6IDQwMHB4OwogICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICBkaXNwbGF5OiBibG9jazsKICB9CiAgLnZpZGVvLWNvbnRyb2xzIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIGJvdHRvbTogMDsKICAgIGxlZnQ6IDA7CiAgICByaWdodDogMDsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMCwwLDAsMC44NSksIHRyYW5zcGFyZW50KTsKICAgIHBhZGRpbmc6IDFyZW07CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMC44cmVtOwogICAgZmxleC13cmFwOiB3cmFwOwogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zczsKICB9CiAgLnZpZGVvLXBsYXllcjpob3ZlciAudmlkZW8tY29udHJvbHMgewogICAgb3BhY2l0eTogMTsKICB9CiAgLnZpZGVvLWNvbnRyb2xzIGJ1dHRvbiB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwxNzUsNTUsMC45KTsKICAgIGJvcmRlcjogbm9uZTsKICAgIHdpZHRoOiAzNnB4OwogICAgaGVpZ2h0OiAzNnB4OwogICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgY29sb3I6ICMxYTFhMmU7CiAgICB0cmFuc2l0aW9uOiAwLjJzOwogIH0KICAudmlkZW8tY29udHJvbHMgYnV0dG9uOmhvdmVyIHsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7CiAgICBiYWNrZ3JvdW5kOiAjZThjNDVhOwogIH0KICAudmlkZW8tcHJvZ3Jlc3MgewogICAgZmxleDogMTsKICAgIGhlaWdodDogNXB4OwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjMpOwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgY3Vyc29yOiBwb2ludGVyOwogIH0KICAudmlkZW8tcHJvZ3Jlc3MtZmlsbCB7CiAgICB3aWR0aDogMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiAjZDRhZjM3OwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogIH0KICAudmlkZW8tdGltZSB7CiAgICBmb250LXNpemU6IDAuN3JlbTsKICAgIGNvbG9yOiB3aGl0ZTsKICB9CiAgLmZ1bGxzY3JlZW4tYnRuIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC42KSAhaW1wb3J0YW50OwogICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgfQoKICAvKiBhdWRpbyBwbGF5ZXIgKi8KICAuYXVkaW8tcGxheWVyIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBwYWRkaW5nOiAxLjhyZW07CiAgfQogIC5hdWRpby1wbGF5ZXIuYWN0aXZlIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogIH0KICAuZXBpc29kZS1hcnQgewogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgbWFyZ2luLWJvdHRvbTogMXJlbTsKICB9CiAgLmVwaXNvZGUtYXJ0IGkgewogICAgZm9udC1zaXplOiAzcmVtOwogICAgY29sb3I6ICNkNGFmMzc7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwxNzUsNTUsMC4xNSk7CiAgICB3aWR0aDogODBweDsKICAgIGhlaWdodDogODBweDsKICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIH0KICAuY3VzdG9tLWF1ZGlvIHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4zKTsKICAgIGJvcmRlci1yYWRpdXM6IDEuNXJlbTsKICAgIHBhZGRpbmc6IDFyZW07CiAgfQogIC50aW1lLXJvdyB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgZm9udC1zaXplOiAwLjdyZW07CiAgICBjb2xvcjogI2FhYTsKICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICB9CiAgLnByb2dyZXNzLWJhciB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogNXB4OwogICAgYmFja2dyb3VuZDogIzMzMzsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtOwogIH0KICAucHJvZ3Jlc3MtZmlsbCB7CiAgICB3aWR0aDogMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiAjZDRhZjM3OwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKICB9CiAgLmF1ZGlvLWNvbnRyb2xzIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBnYXA6IDEuNXJlbTsKICAgIG1hcmdpbi10b3A6IDFyZW07CiAgfQogIC5hdWRpby1jdHJsIHsKICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICBib3JkZXI6IG5vbmU7CiAgICBjb2xvcjogI2VlZTsKICAgIGZvbnQtc2l6ZTogMS4ycmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgd2lkdGg6IDQ0cHg7CiAgICBoZWlnaHQ6IDQ0cHg7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICB0cmFuc2l0aW9uOiAwLjJzOwogIH0KICAuYXVkaW8tY3RybDpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwxNzUsNTUsMC4yKTsKICB9CiAgLnBsYXktcGF1c2UgewogICAgYmFja2dyb3VuZDogI2Q0YWYzNzsKICAgIGNvbG9yOiAjMWExYTJlOwogICAgd2lkdGg6IDU2cHg7CiAgICBoZWlnaHQ6IDU2cHg7CiAgICBmb250LXNpemU6IDEuNHJlbTsKICB9CiAgLnZvbHVtZS1yb3cgewogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGdhcDogMTBweDsKICAgIG1hcmdpbi10b3A6IDFyZW07CiAgfQogIGlucHV0W3R5cGU9InJhbmdlIl0gewogICAgd2lkdGg6IDEwMHB4OwogICAgaGVpZ2h0OiAzcHg7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICBiYWNrZ3JvdW5kOiAjNTU1OwogIH0KICBpbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LXNsaWRlci10aHVtYiB7CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICB3aWR0aDogMTJweDsKICAgIGhlaWdodDogMTJweDsKICAgIGJhY2tncm91bmQ6ICNkNGFmMzc7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgfQoKICAvKiBMSVZFIExZUklDUyBTRUNUSU9OICovCiAgLmx5cmljcy1zZWN0aW9uIHsKICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjEyLDE3NSw1NSwwLjIpOwogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjIpOwogIH0KICAubHlyaWNzLWhlYWRlciB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIG1hcmdpbi1ib3R0b206IDAuOHJlbTsKICAgIGNvbG9yOiAjZDRhZjM3OwogICAgZm9udC1zaXplOiAwLjhyZW07CiAgICBmb250LXdlaWdodDogNTAwOwogIH0KICAubHlyaWNzLWJveCB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuNCk7CiAgICBib3JkZXItcmFkaXVzOiAxcmVtOwogICAgcGFkZGluZzogMXJlbTsKICAgIGhlaWdodDogMTgwcHg7CiAgICBvdmVyZmxvdy15OiBhdXRvOwogICAgZm9udC1zaXplOiAwLjlyZW07CiAgICBsaW5lLWhlaWdodDogMS42OwogICAgY29sb3I6ICNkZGQ7CiAgICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDsKICB9CiAgLmx5cmljcy1saW5lIHsKICAgIHBhZGRpbmc6IDZweCAxMHB4OwogICAgbWFyZ2luOiA0cHggMDsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczsKICAgIGN1cnNvcjogZGVmYXVsdDsKICB9CiAgLmx5cmljcy1saW5lLmFjdGl2ZSB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwxNzUsNTUsMC4yNSk7CiAgICBjb2xvcjogI2YwZDg5MDsKICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDIpOwogICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjZDRhZjM3OwogIH0KICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKICAgIHdpZHRoOiA0cHg7CiAgfQogIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgewogICAgYmFja2dyb3VuZDogIzIyMjsKICB9CiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CiAgICBiYWNrZ3JvdW5kOiAjZDRhZjM3OwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogIH0KCiAgLyogZXBpc29kZSBsaXN0ICovCiAgLmVwaXNvZGUtbGlzdCB7CiAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbSAxLjVyZW07CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyMTIsMTc1LDU1LDAuMik7CiAgfQogIC5lcGlzb2RlLWdyaWQgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBnYXA6IDAuN3JlbTsKICAgIG1hcmdpbi10b3A6IDAuOHJlbTsKICB9CiAgLmVwaXNvZGUtaXRlbSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMXJlbTsKICAgIHBhZGRpbmc6IDAuN3JlbTsKICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wMyk7CiAgICBib3JkZXItcmFkaXVzOiAxcmVtOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICB9CiAgLmVwaXNvZGUtaXRlbTpob3ZlciB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwxNzUsNTUsMC4xKTsKICAgIGJvcmRlci1jb2xvcjogcmdiYSgyMTIsMTc1LDU1LDAuMyk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNXB4KTsKICB9CiAgLmVwaXNvZGUtaXRlbS5hY3RpdmUgewogICAgYmFja2dyb3VuZDogcmdiYSgyMTIsMTc1LDU1LDAuMTUpOwogICAgYm9yZGVyLWNvbG9yOiAjZDRhZjM3OwogIH0KICAuZXBpc29kZS1pY29uIHsKICAgIHdpZHRoOiA0NXB4OwogICAgaGVpZ2h0OiA0NXB4OwogICAgYmFja2dyb3VuZDogcmdiYSgyMTIsMTc1LDU1LDAuMik7CiAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZm9udC1zaXplOiAxLjJyZW07CiAgICBjb2xvcjogI2Q0YWYzNzsKICB9CiAgLmVwaXNvZGUtaW5mbyB7CiAgICBmbGV4OiAxOwogIH0KICAuZXBpc29kZS1pbmZvIGg0IHsKICAgIGZvbnQtc2l6ZTogMC45NXJlbTsKICAgIG1hcmdpbi1ib3R0b206IDAuMnJlbTsKICAgIGNvbG9yOiAjZWVlOwogIH0KICAuZXBpc29kZS1pbmZvIHAgewogICAgZm9udC1zaXplOiAwLjdyZW07CiAgICBjb2xvcjogI2FhYTsKICB9CgogIC5iYWNrLWxpbmsgewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiA4cHg7CiAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgYm9yZGVyOiBub25lOwogICAgY29sb3I6ICNhYWE7CiAgICBtYXJnaW46IDAgMS41cmVtIDEuNXJlbTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHRyYW5zaXRpb246IDAuMnM7CiAgfQogIC5iYWNrLWxpbms6aG92ZXIgewogICAgY29sb3I6ICNkNGFmMzc7CiAgICBnYXA6IDEycHg7CiAgfQogIGZvb3RlciB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiAxcmVtOwogICAgZm9udC1zaXplOiAwLjdyZW07CiAgICBjb2xvcjogIzY2NjsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDUpOwogIH0KCiAgQG1lZGlhIChtYXgtd2lkdGg6IDY1MHB4KSB7CiAgICBib2R5IHsgcGFkZGluZzogMXJlbTsgfQogICAgLnRvZ2dsZS1idG4geyBmb250LXNpemU6IDAuN3JlbTsgcGFkZGluZzogMC41cmVtOyB9CiAgICAubHlyaWNzLWJveCB7IGhlaWdodDogMTQwcHg7IGZvbnQtc2l6ZTogMC44cmVtOyB9CiAgfQo8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoKPGRpdiBjbGFzcz0icG9kY2FzdC1jb250YWluZXIiPgogIDxkaXYgY2xhc3M9Im1lZGlhLXRvZ2dsZSI+CiAgICA8YnV0dG9uIGNsYXNzPSJ0b2dnbGUtYnRuIGFjdGl2ZSIgaWQ9InZpZGVvVGFiQnRuIj48aSBjbGFzcz0iZmFzIGZhLXZpZGVvIj48L2k+IFZpZGVvPC9idXR0b24+CiAgICA8YnV0dG9uIGNsYXNzPSJ0b2dnbGUtYnRuIiBpZD0iYXVkaW9UYWJCdG4iPjxpIGNsYXNzPSJmYXMgZmEtaGVhZHBob25lcyI+PC9pPiBBdWRpbzwvYnV0dG9uPgogIDwvZGl2PgoKICA8IS0tIFZJREVPIFBMQVlFUiAtLT4KICA8ZGl2IGNsYXNzPSJ2aWRlby1wbGF5ZXIgYWN0aXZlIiBpZD0idmlkZW9QbGF5ZXIiPgogICAgPGRpdiBjbGFzcz0idmlkZW8td3JhcHBlciI+CiAgICAgIDx2aWRlbyBpZD0ibWFpblZpZGVvIiBwb3N0ZXI9Imh0dHBzOi8vaW1hZ2VzLnBleGVscy5jb20vcGhvdG9zLzcyNjQ4MDcvcGV4ZWxzLXBob3RvLTcyNjQ4MDcuanBlZz9hdXRvPWNvbXByZXNzJmNzPXRpbnlzcmdiJnc9ODAwIj4KICAgICAgICA8c291cmNlIHNyYz0iIyIgdHlwZT0idmlkZW8vbXA0Ij4KICAgICAgPC92aWRlbz4KICAgICAgPGRpdiBjbGFzcz0idmlkZW8tY29udHJvbHMiPgogICAgICAgIDxidXR0b24gaWQ9InZpZGVvUGxheUJ0biI+PGkgY2xhc3M9ImZhcyBmYS1wbGF5Ij48L2k+PC9idXR0b24+CiAgICAgICAgPGRpdiBjbGFzcz0idmlkZW8tcHJvZ3Jlc3MiIGlkPSJ2aWRlb1Byb2dyZXNzQmFyIj4KICAgICAgICAgIDxkaXYgY2xhc3M9InZpZGVvLXByb2dyZXNzLWZpbGwiIGlkPSJ2aWRlb1Byb2dyZXNzRmlsbCI+PC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPHNwYW4gY2xhc3M9InZpZGVvLXRpbWUiIGlkPSJ2aWRlb1RpbWUiPjA6MDAgLyAwOjAwPC9zcGFuPgogICAgICAgIDxidXR0b24gaWQ9InZpZGVvTXV0ZUJ0biI+PGkgY2xhc3M9ImZhcyBmYS12b2x1bWUtdXAiPjwvaT48L2J1dHRvbj4KICAgICAgICA8YnV0dG9uIGlkPSJmdWxsc2NyZWVuQnRuIiBjbGFzcz0iZnVsbHNjcmVlbi1idG4iPjxpIGNsYXNzPSJmYXMgZmEtZXhwYW5kIj48L2k+PC9idXR0b24+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwhLS0gQVVESU8gUExBWUVSIC0tPgogIDxkaXYgY2xhc3M9ImF1ZGlvLXBsYXllciIgaWQ9ImF1ZGlvUGxheWVyIj4KICAgIDxkaXYgY2xhc3M9ImVwaXNvZGUtYXJ0Ij48aSBjbGFzcz0iZmFzIGZhLW1pY3JvcGhvbmUtYWx0Ij48L2k+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJjdXN0b20tYXVkaW8iPgogICAgICA8ZGl2IGNsYXNzPSJ0aW1lLXJvdyI+PHNwYW4gaWQ9ImF1ZGlvQ3VycmVudCI+MDowMDwvc3Bhbj48c3BhbiBpZD0iYXVkaW9EdXJhdGlvbiI+MDowMDwvc3Bhbj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIiBpZD0iYXVkaW9Qcm9ncmVzc0JhciI+PGRpdiBjbGFzcz0icHJvZ3Jlc3MtZmlsbCIgaWQ9ImF1ZGlvUHJvZ3Jlc3NGaWxsIj48L2Rpdj48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iYXVkaW8tY29udHJvbHMiPgogICAgICAgIDxidXR0b24gY2xhc3M9ImF1ZGlvLWN0cmwiIGlkPSJhdWRpb1ByZXZCdG4iPjxpIGNsYXNzPSJmYXMgZmEtYmFja3dhcmQtc3RlcCI+PC9pPjwvYnV0dG9uPgogICAgICAgIDxidXR0b24gY2xhc3M9ImF1ZGlvLWN0cmwgcGxheS1wYXVzZSIgaWQ9ImF1ZGlvUGxheVBhdXNlQnRuIj48aSBjbGFzcz0iZmFzIGZhLXBsYXkiIGlkPSJhdWRpb1BsYXlJY29uIj48L2k+PC9idXR0b24+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYXVkaW8tY3RybCIgaWQ9ImF1ZGlvTmV4dEJ0biI+PGkgY2xhc3M9ImZhcyBmYS1mb3J3YXJkLXN0ZXAiPjwvaT48L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InZvbHVtZS1yb3ciPgogICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtdm9sdW1lLWRvd24iPjwvaT4KICAgICAgICA8aW5wdXQgdHlwZT0icmFuZ2UiIGlkPSJhdWRpb1ZvbHVtZSIgbWluPSIwIiBtYXg9IjEiIHN0ZXA9IjAuMDEiIHZhbHVlPSIwLjciPgogICAgICAgIDxpIGNsYXNzPSJmYXMgZmEtdm9sdW1lLXVwIj48L2k+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwhLS0gTElWRSBMWVJJQ1MgU0VDVElPTiAtLT4KICA8ZGl2IGNsYXNzPSJseXJpY3Mtc2VjdGlvbiI+CiAgICA8ZGl2IGNsYXNzPSJseXJpY3MtaGVhZGVyIj4KICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhcyBmYS1tdXNpYyI+PC9pPiBMaXZlIEx5cmljczwvc3Bhbj4KICAgICAgPHNwYW4gaWQ9ImN1cnJlbnRUaXRsZSI+U2VsZWN0IGFuIGVwaXNvZGU8L3NwYW4+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Imx5cmljcy1ib3giIGlkPSJseXJpY3NCb3giPgogICAgICA8ZGl2IGNsYXNzPSJseXJpY3MtbGluZSI+4pyoIExpc3RlbiB0byBhbiBlcGlzb2RlIHRvIHNlZSBzeW5jaHJvbml6ZWQgbHlyaWNzLi4uPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgPCEtLSBFUElTT0RFIExJU1QgLS0+CiAgPGRpdiBjbGFzcz0iZXBpc29kZS1saXN0Ij4KICAgIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTowLjhyZW07IGNvbG9yOiNkNGFmMzc7Ij48aSBjbGFzcz0iZmFzIGZhLWxpc3QiPjwvaT4gRXBpc29kZXM8L2Rpdj4KICAgIDxkaXYgY2xhc3M9ImVwaXNvZGUtZ3JpZCIgaWQ9ImVwaXNvZGVHcmlkIj48L2Rpdj4KICA8L2Rpdj4KCiAgPGJ1dHRvbiBjbGFzcz0iYmFjay1saW5rIiBpZD0iYmFja0J0biI+PGkgY2xhc3M9ImZhcyBmYS1hcnJvdy1sZWZ0Ij48L2k+IEJhY2sgdG8gSG9tZTwvYnV0dG9uPgogIDxmb290ZXI+PGkgY2xhc3M9ImZhcyBmYS1mZWF0aGVyLWFsdCI+PC9pPiBQaGlsb3NvcGh5IGluIGV2ZXJ5IHdvcmQgJiBmcmFtZTwvZm9vdGVyPgo8L2Rpdj4KCjxhdWRpbyBpZD0iaGlkZGVuQXVkaW8iIHByZWxvYWQ9Im1ldGFkYXRhIj48L2F1ZGlvPgoKPHNjcmlwdD4KICAvLyBFcGlzb2RlIGRhdGEgd2l0aCBseXJpY3MKICBjb25zdCBlcGlzb2RlcyA9IFsKICAgIHsgdHlwZTogInZpZGVvIiwgdGl0bGU6ICJUaGUgQXJ0IG9mIFN0aWxsbmVzcyIsIGRlc2M6ICJGaW5kaW5nIHBlYWNlIHdpdGhpbiIsIHNyYzogImh0dHBzOi8vY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZ3R2LXZpZGVvcy1idWNrZXQvc2FtcGxlL0ZvckJpZ2dlckJsYXplcy5tcDQiLCBkdXJhdGlvbjogIjA6MzAiLCBseXJpY3M6IFsi4pyoIFN0aWxsbmVzcyBpcyB0aGUgZG9vcndheSB0byB3aXNkb20uLi4iLCAiQnJlYXRoZSBpbiwgYnJlYXRoZSBvdXQuIiwgIlRoZSBtaW5kIGJlY29tZXMgY2FsbSBsaWtlIHN0aWxsIHdhdGVyLiIsICJJbiBzaWxlbmNlLCB3ZSBoZWFyIHRoZSB0cnV0aC4iLCAiTGV0IGdvIG9mIGFsbCBkaXN0cmFjdGlvbnMuIiwgIllvdSBhcmUgYWxyZWFkeSBjb21wbGV0ZS4iXSB9LAogICAgeyB0eXBlOiAidmlkZW8iLCB0aXRsZTogIlN0b2ljIFdpc2RvbSIsIGRlc2M6ICJNYXJjdXMgQXVyZWxpdXMiLCBzcmM6ICJodHRwczovL2NvbW1vbmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL2d0di12aWRlb3MtYnVja2V0L3NhbXBsZS9Gb3JCaWdnZXJGdW5mbGllcy5tcDQiLCBkdXJhdGlvbjogIjA6MzAiLCBseXJpY3M6IFsiWW91IGhhdmUgcG93ZXIgb3ZlciB5b3VyIG1pbmQg4oCUIG5vdCBvdXRzaWRlIGV2ZW50cy4iLCAiUmVhbGl6ZSB0aGlzLCBhbmQgeW91IHdpbGwgZmluZCBzdHJlbmd0aC4iLCAiV2FzdGUgbm8gbW9yZSB0aW1lIGFyZ3Vpbmcgd2hhdCBhIGdvb2QgbWFuIHNob3VsZCBiZS4iLCAiQmUgb25lLiIsICJUaGUgb2JzdGFjbGUgYmVjb21lcyB0aGUgd2F5LiIsICJBbW9yIGZhdGkg4oCUIGxvdmUgeW91ciBmYXRlLiJdIH0sCiAgICB7IHR5cGU6ICJhdWRpbyIsIHRpdGxlOiAiTWVhbmluZyAmIEhhcHBpbmVzcyIsIGRlc2M6ICJBcmlzdG90bGUncyBFdWRhaW1vbmlhIiwgc3JjOiAiaHR0cHM6Ly93d3cuc291bmRoZWxpeC5jb20vZXhhbXBsZXMvbXAzL1NvdW5kSGVsaXgtU29uZy0xLm1wMyIsIGR1cmF0aW9uOiAiMzo0NSIsIGx5cmljczogWyJIYXBwaW5lc3MgaXMgdGhlIG1lYW5pbmcgb2YgbGlmZS4iLCAiVmlydHVlIGlzIHRoZSBmb3VuZGF0aW9uIG9mIGV1ZGFpbW9uaWEuIiwgIkZsb3VyaXNoaW5nIGNvbWVzIGZyb20gcmlnaHQgYWN0aW9uLiIsICJTZWVrIGJhbGFuY2UgaW4gYWxsIHRoaW5ncy4iLCAiVGhlIGdvbGRlbiBtZWFuIGd1aWRlcyB1cy4iLCAiTGl2ZSB3aXRoIHB1cnBvc2UgYW5kIGludGVncml0eS4iXSB9LAogICAgeyB0eXBlOiAiYXVkaW8iLCB0aXRsZTogIlRoZSBQb3dlciBvZiBQcmVzZW5jZSIsIGRlc2M6ICJNaW5kZnVsbmVzcyIsIHNyYzogImh0dHBzOi8vd3d3LnNvdW5kaGVsaXguY29tL2V4YW1wbGVzL21wMy9Tb3VuZEhlbGl4LVNvbmctMi5tcDMiLCBkdXJhdGlvbjogIjQ6MTIiLCBseXJpY3M6IFsiQmUgaGVyZSBub3cuIiwgIlRoZSBwcmVzZW50IG1vbWVudCBpcyBhbGwgd2UgaGF2ZS4iLCAiVGhvdWdodHMgYXJlIGNsb3VkcyBwYXNzaW5nIGluIHRoZSBza3kuIiwgIllvdSBhcmUgdGhlIHNreSwgbm90IHRoZSBjbG91ZHMuIiwgIkJyZWF0aGUgZGVlcGx5IGFuZCByZXR1cm4gdG8gbm93LiIsICJQZWFjZSBpcyBmb3VuZCBpbiBwcmVzZW5jZS4iXSB9LAogICAgeyB0eXBlOiAidmlkZW8iLCB0aXRsZTogIk1lZGl0YXRpb24gJiBNaW5kIiwgZGVzYzogIkd1aWRlZCBqb3VybmV5Iiwgc3JjOiAiaHR0cHM6Ly9jb21tb25kYXRhc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9ndHYtdmlkZW9zLWJ1Y2tldC9zYW1wbGUvRm9yQmlnZ2VyRXNjYXBlcy5tcDQiLCBkdXJhdGlvbjogIjA6MzUiLCBseXJpY3M6IFsiQ2xvc2UgeW91ciBleWVzLiBGZWVsIHlvdXIgYnJlYXRoLiIsICJMZXQgdGhvdWdodHMgZGlzc29sdmUgbGlrZSBtaXN0LiIsICJZb3UgYXJlIGF3YXJlbmVzcyBpdHNlbGYuIiwgIk5vIGp1ZGdtZW50LCBqdXN0IG9ic2VydmF0aW9uLiIsICJSZXR1cm4gdG8gdGhlIGJyZWF0aC4iLCAiWW91IGFyZSBob21lLiJdIH0KICBdOwoKICAvLyBET00gZWxlbWVudHMKICBjb25zdCB2aWRlb1RhYkJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aWRlb1RhYkJ0bicpOwogIGNvbnN0IGF1ZGlvVGFiQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvVGFiQnRuJyk7CiAgY29uc3QgdmlkZW9QbGF5ZXJEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmlkZW9QbGF5ZXInKTsKICBjb25zdCBhdWRpb1BsYXllckRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb1BsYXllcicpOwogIGNvbnN0IGVwaXNvZGVHcmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VwaXNvZGVHcmlkJyk7CiAgY29uc3QgbHlyaWNzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2x5cmljc0JveCcpOwogIGNvbnN0IGN1cnJlbnRUaXRsZVNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3VycmVudFRpdGxlJyk7CgogIC8vIFZpZGVvIGVsZW1lbnRzCiAgY29uc3QgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpblZpZGVvJyk7CiAgY29uc3QgdmlkZW9QbGF5QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZGVvUGxheUJ0bicpOwogIGNvbnN0IHZpZGVvUHJvZ3Jlc3NCYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmlkZW9Qcm9ncmVzc0JhcicpOwogIGNvbnN0IHZpZGVvUHJvZ3Jlc3NGaWxsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZGVvUHJvZ3Jlc3NGaWxsJyk7CiAgY29uc3QgdmlkZW9UaW1lU3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aWRlb1RpbWUnKTsKICBjb25zdCB2aWRlb011dGVCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmlkZW9NdXRlQnRuJyk7CiAgY29uc3QgZnVsbHNjcmVlbkJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmdWxsc2NyZWVuQnRuJyk7CgogIC8vIEF1ZGlvIGVsZW1lbnRzCiAgY29uc3QgYXVkaW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlkZGVuQXVkaW8nKTsKICBjb25zdCBhdWRpb1BsYXlQYXVzZUJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb1BsYXlQYXVzZUJ0bicpOwogIGNvbnN0IGF1ZGlvUGxheUljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXVkaW9QbGF5SWNvbicpOwogIGNvbnN0IGF1ZGlvUHJvZ3Jlc3NCYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXVkaW9Qcm9ncmVzc0JhcicpOwogIGNvbnN0IGF1ZGlvUHJvZ3Jlc3NGaWxsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvUHJvZ3Jlc3NGaWxsJyk7CiAgY29uc3QgYXVkaW9DdXJyZW50U3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb0N1cnJlbnQnKTsKICBjb25zdCBhdWRpb0R1cmF0aW9uU3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb0R1cmF0aW9uJyk7CiAgY29uc3QgYXVkaW9QcmV2QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvUHJldkJ0bicpOwogIGNvbnN0IGF1ZGlvTmV4dEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb05leHRCdG4nKTsKICBjb25zdCBhdWRpb1ZvbHVtZVNsaWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb1ZvbHVtZScpOwoKICBsZXQgYWN0aXZlVGFiID0gJ3ZpZGVvJzsKICBsZXQgaXNWaWRlb1BsYXlpbmcgPSBmYWxzZTsKICBsZXQgaXNBdWRpb1BsYXlpbmcgPSBmYWxzZTsKICBsZXQgY3VycmVudFZpZGVvSW5kZXggPSBlcGlzb2Rlcy5maW5kSW5kZXgoZSA9PiBlLnR5cGUgPT09ICd2aWRlbycpOwogIGxldCBjdXJyZW50QXVkaW9JbmRleCA9IGVwaXNvZGVzLmZpbmRJbmRleChlID0+IGUudHlwZSA9PT0gJ2F1ZGlvJyk7CiAgbGV0IGN1cnJlbnRMeXJpY3MgPSBbXTsKICBsZXQgbHlyaWNzSW50ZXJ2YWwgPSBudWxsOwoKICAvLyBMeXJpY3Mgc3luYyBzaW11bGF0aW9uIChiYXNlZCBvbiB0aW1lKQogIGZ1bmN0aW9uIHN0YXJ0THlyaWNzU3luYyhkdXJhdGlvblNlYywgbHlyaWNzQXJyYXksIG1lZGlhRWxlbWVudCkgewogICAgaWYgKGx5cmljc0ludGVydmFsKSBjbGVhckludGVydmFsKGx5cmljc0ludGVydmFsKTsKICAgIGN1cnJlbnRMeXJpY3MgPSBseXJpY3NBcnJheTsKICAgIHJlbmRlckx5cmljcygtMSk7CiAgICBjb25zdCBsaW5lRHVyYXRpb24gPSBkdXJhdGlvblNlYyAvIGx5cmljc0FycmF5Lmxlbmd0aDsKICAgIGxldCBsYXN0SW5kZXggPSAtMTsKICAgIGx5cmljc0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gewogICAgICBpZiAoIW1lZGlhRWxlbWVudCB8fCBtZWRpYUVsZW1lbnQucGF1c2VkIHx8ICFtZWRpYUVsZW1lbnQuY3VycmVudFRpbWUpIHJldHVybjsKICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBtZWRpYUVsZW1lbnQuY3VycmVudFRpbWU7CiAgICAgIGNvbnN0IGluZGV4ID0gTWF0aC5taW4oTWF0aC5mbG9vcihjdXJyZW50VGltZSAvIGxpbmVEdXJhdGlvbiksIGx5cmljc0FycmF5Lmxlbmd0aCAtIDEpOwogICAgICBpZiAoaW5kZXggIT09IGxhc3RJbmRleCkgewogICAgICAgIGxhc3RJbmRleCA9IGluZGV4OwogICAgICAgIHJlbmRlckx5cmljcyhpbmRleCk7CiAgICAgICAgY29uc3QgYWN0aXZlTGluZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5seXJpY3MtbGluZS5hY3RpdmUnKTsKICAgICAgICBpZiAoYWN0aXZlTGluZSkgYWN0aXZlTGluZS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pOwogICAgICB9CiAgICB9LCAyMDApOwogIH0KCiAgZnVuY3Rpb24gc3RvcEx5cmljc1N5bmMoKSB7CiAgICBpZiAobHlyaWNzSW50ZXJ2YWwpIHsgY2xlYXJJbnRlcnZhbChseXJpY3NJbnRlcnZhbCk7IGx5cmljc0ludGVydmFsID0gbnVsbDsgfQogIH0KCiAgZnVuY3Rpb24gcmVuZGVyTHlyaWNzKGFjdGl2ZUluZGV4KSB7CiAgICBpZiAoIWN1cnJlbnRMeXJpY3MubGVuZ3RoKSB7CiAgICAgIGx5cmljc0JveC5pbm5lckhUTUwgPSAnPGRpdiBjbGFzcz0ibHlyaWNzLWxpbmUiPuKcqCBObyBseXJpY3MgYXZhaWxhYmxlIGZvciB0aGlzIGVwaXNvZGUuLi48L2Rpdj4nOwogICAgICByZXR1cm47CiAgICB9CiAgICBseXJpY3NCb3guaW5uZXJIVE1MID0gY3VycmVudEx5cmljcy5tYXAoKGxpbmUsIGkpID0+IAogICAgICBgPGRpdiBjbGFzcz0ibHlyaWNzLWxpbmUgJHtpID09PSBhY3RpdmVJbmRleCA\/ICdhY3RpdmUnIDogJyd9Ij4ke2xpbmV9PC9kaXY+YAogICAgKS5qb2luKCcnKTsKICB9CgogIC8vIFZpZGVvIGZ1bmN0aW9ucwogIGZ1bmN0aW9uIGxvYWRWaWRlb0VwaXNvZGUoaW5kZXgpIHsKICAgIGNvbnN0IGVwID0gZXBpc29kZXNbaW5kZXhdOwogICAgaWYgKCFlcCB8fCBlcC50eXBlICE9PSAndmlkZW8nKSByZXR1cm47CiAgICBjdXJyZW50VmlkZW9JbmRleCA9IGluZGV4OwogICAgdmlkZW8uc3JjID0gZXAuc3JjOwogICAgdmlkZW8ubG9hZCgpOwogICAgY3VycmVudFRpdGxlU3Bhbi50ZXh0Q29udGVudCA9IGVwLnRpdGxlOwogICAgY3VycmVudEx5cmljcyA9IGVwLmx5cmljcyB8fCBbIk5vIGx5cmljcyBmb3IgdGhpcyBlcGlzb2RlIl07CiAgICByZW5kZXJMeXJpY3MoLTEpOwogICAgc3RvcEx5cmljc1N5bmMoKTsKICAgIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgKCkgPT4gewogICAgICBjb25zdCBkdXJhdGlvblNlYyA9IHZpZGVvLmR1cmF0aW9uOwogICAgICBpZiAoZHVyYXRpb25TZWMgJiYgZXAubHlyaWNzKSBzdGFydEx5cmljc1N5bmMoZHVyYXRpb25TZWMsIGVwLmx5cmljcywgdmlkZW8pOwogICAgfSwgeyBvbmNlOiB0cnVlIH0pOwogICAgaWYgKGlzVmlkZW9QbGF5aW5nKSB2aWRlby5wbGF5KCk7CiAgICB1cGRhdGVWaWRlb1BsYXlJY29uKCk7CiAgICByZW5kZXJFcGlzb2RlcygndmlkZW8nKTsKICB9CgogIGZ1bmN0aW9uIHVwZGF0ZVZpZGVvUGxheUljb24oKSB7CiAgICBjb25zdCBpY29uID0gdmlkZW9QbGF5QnRuLnF1ZXJ5U2VsZWN0b3IoJ2knKTsKICAgIGljb24uY2xhc3NOYW1lID0gaXNWaWRlb1BsYXlpbmcgPyAnZmFzIGZhLXBhdXNlJyA6ICdmYXMgZmEtcGxheSc7CiAgfQoKICBmdW5jdGlvbiB0b2dnbGVWaWRlb1BsYXkoKSB7CiAgICBpZiAodmlkZW8ucGF1c2VkKSB7IHZpZGVvLnBsYXkoKTsgaXNWaWRlb1BsYXlpbmcgPSB0cnVlOyB9CiAgICBlbHNlIHsgdmlkZW8ucGF1c2UoKTsgaXNWaWRlb1BsYXlpbmcgPSBmYWxzZTsgc3RvcEx5cmljc1N5bmMoKTsgfQogICAgdXBkYXRlVmlkZW9QbGF5SWNvbigpOwogIH0KCiAgZnVuY3Rpb24gdXBkYXRlVmlkZW9Qcm9ncmVzcygpIHsKICAgIGlmICh2aWRlby5kdXJhdGlvbiAmJiAhaXNOYU4odmlkZW8uZHVyYXRpb24pKSB7CiAgICAgIGNvbnN0IHBlcmNlbnQgPSAodmlkZW8uY3VycmVudFRpbWUgLyB2aWRlby5kdXJhdGlvbikgKiAxMDA7CiAgICAgIHZpZGVvUHJvZ3Jlc3NGaWxsLnN0eWxlLndpZHRoID0gYCR7cGVyY2VudH0lYDsKICAgICAgdmlkZW9UaW1lU3Bhbi50ZXh0Q29udGVudCA9IGAke2Zvcm1hdFRpbWUodmlkZW8uY3VycmVudFRpbWUpfSAvICR7Zm9ybWF0VGltZSh2aWRlby5kdXJhdGlvbil9YDsKICAgIH0KICB9CgogIC8vIEF1ZGlvIGZ1bmN0aW9ucwogIGZ1bmN0aW9uIGxvYWRBdWRpb0VwaXNvZGUoaW5kZXgpIHsKICAgIGNvbnN0IGVwID0gZXBpc29kZXNbaW5kZXhdOwogICAgaWYgKCFlcCB8fCBlcC50eXBlICE9PSAnYXVkaW8nKSByZXR1cm47CiAgICBjdXJyZW50QXVkaW9JbmRleCA9IGluZGV4OwogICAgYXVkaW8uc3JjID0gZXAuc3JjOwogICAgYXVkaW8ubG9hZCgpOwogICAgY3VycmVudFRpdGxlU3Bhbi50ZXh0Q29udGVudCA9IGVwLnRpdGxlOwogICAgY3VycmVudEx5cmljcyA9IGVwLmx5cmljcyB8fCBbIk5vIGx5cmljcyBmb3IgdGhpcyBlcGlzb2RlIl07CiAgICByZW5kZXJMeXJpY3MoLTEpOwogICAgc3RvcEx5cmljc1N5bmMoKTsKICAgIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWRlZG1ldGFkYXRhJywgKCkgPT4gewogICAgICBjb25zdCBkdXJhdGlvblNlYyA9IGF1ZGlvLmR1cmF0aW9uOwogICAgICBpZiAoZHVyYXRpb25TZWMgJiYgZXAubHlyaWNzKSBzdGFydEx5cmljc1N5bmMoZHVyYXRpb25TZWMsIGVwLmx5cmljcywgYXVkaW8pOwogICAgfSwgeyBvbmNlOiB0cnVlIH0pOwogICAgaWYgKGlzQXVkaW9QbGF5aW5nKSBhdWRpby5wbGF5KCk7CiAgICB1cGRhdGVBdWRpb1BsYXlJY29uKCk7CiAgICByZW5kZXJFcGlzb2RlcygnYXVkaW8nKTsKICB9CgogIGZ1bmN0aW9uIHVwZGF0ZUF1ZGlvUGxheUljb24oKSB7CiAgICBhdWRpb1BsYXlJY29uLmNsYXNzTmFtZSA9IGlzQXVkaW9QbGF5aW5nID8gJ2ZhcyBmYS1wYXVzZScgOiAnZmFzIGZhLXBsYXknOwogIH0KCiAgZnVuY3Rpb24gdG9nZ2xlQXVkaW9QbGF5KCkgewogICAgaWYgKGF1ZGlvLnBhdXNlZCkgeyBhdWRpby5wbGF5KCk7IGlzQXVkaW9QbGF5aW5nID0gdHJ1ZTsgfQogICAgZWxzZSB7IGF1ZGlvLnBhdXNlKCk7IGlzQXVkaW9QbGF5aW5nID0gZmFsc2U7IHN0b3BMeXJpY3NTeW5jKCk7IH0KICAgIHVwZGF0ZUF1ZGlvUGxheUljb24oKTsKICB9CgogIGZ1bmN0aW9uIHVwZGF0ZUF1ZGlvUHJvZ3Jlc3MoKSB7CiAgICBpZiAoYXVkaW8uZHVyYXRpb24gJiYgIWlzTmFOKGF1ZGlvLmR1cmF0aW9uKSkgewogICAgICBjb25zdCBwZXJjZW50ID0gKGF1ZGlvLmN1cnJlbnRUaW1lIC8gYXVkaW8uZHVyYXRpb24pICogMTAwOwogICAgICBhdWRpb1Byb2dyZXNzRmlsbC5zdHlsZS53aWR0aCA9IGAke3BlcmNlbnR9JWA7CiAgICAgIGF1ZGlvQ3VycmVudFNwYW4udGV4dENvbnRlbnQgPSBmb3JtYXRUaW1lKGF1ZGlvLmN1cnJlbnRUaW1lKTsKICAgICAgYXVkaW9EdXJhdGlvblNwYW4udGV4dENvbnRlbnQgPSBmb3JtYXRUaW1lKGF1ZGlvLmR1cmF0aW9uKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGZvcm1hdFRpbWUoc2Vjb25kcykgewogICAgaWYgKGlzTmFOKHNlY29uZHMpKSByZXR1cm4gIjA6MDAiOwogICAgY29uc3QgbWlucyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTsKICAgIGNvbnN0IHNlY3MgPSBNYXRoLmZsb29yKHNlY29uZHMgJSA2MCk7CiAgICByZXR1cm4gYCR7bWluc306JHtzZWNzIDwgMTAgPyAnMCcgOiAnJ30ke3NlY3N9YDsKICB9CgogIC8vIFJlbmRlciBlcGlzb2RlIGxpc3QKICBmdW5jdGlvbiByZW5kZXJFcGlzb2RlcyhmaWx0ZXJUeXBlID0gbnVsbCkgewogICAgY29uc3QgZmlsdGVyZWQgPSBmaWx0ZXJUeXBlID8gZXBpc29kZXMuZmlsdGVyKGVwID0+IGVwLnR5cGUgPT09IGZpbHRlclR5cGUpIDogZXBpc29kZXM7CiAgICBlcGlzb2RlR3JpZC5pbm5lckhUTUwgPSAnJzsKICAgIGZpbHRlcmVkLmZvckVhY2goKGVwLCBpZHgpID0+IHsKICAgICAgY29uc3Qgb3JpZ2luYWxJZHggPSBlcGlzb2Rlcy5maW5kSW5kZXgoZSA9PiBlLnRpdGxlID09PSBlcC50aXRsZSk7CiAgICAgIGNvbnN0IGlzQWN0aXZlID0gKGZpbHRlclR5cGUgPT09ICd2aWRlbycgJiYgb3JpZ2luYWxJZHggPT09IGN1cnJlbnRWaWRlb0luZGV4KSB8fAogICAgICAgICAgICAgICAgICAgICAgIChmaWx0ZXJUeXBlID09PSAnYXVkaW8nICYmIG9yaWdpbmFsSWR4ID09PSBjdXJyZW50QXVkaW9JbmRleCk7CiAgICAgIGNvbnN0IGVwRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgIGVwRGl2LmNsYXNzTmFtZSA9IGBlcGlzb2RlLWl0ZW0gJHtpc0FjdGl2ZSA\/ICdhY3RpdmUnIDogJyd9YDsKICAgICAgZXBEaXYuaW5uZXJIVE1MID0gYAogICAgICAgIDxkaXYgY2xhc3M9ImVwaXNvZGUtaWNvbiI+PGkgY2xhc3M9ImZhcyAke2VwLnR5cGUgPT09ICd2aWRlbycgPyAnZmEtdmlkZW8nIDogJ2ZhLWhlYWRwaG9uZXMnfSI+PC9pPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImVwaXNvZGUtaW5mbyI+PGg0PiR7ZXAudGl0bGV9PC9oND48cD4ke2VwLmRlc2N9PC9wPjwvZGl2PgogICAgICBgOwogICAgICBlcERpdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHsKICAgICAgICBpZiAoZXAudHlwZSA9PT0gJ3ZpZGVvJykgewogICAgICAgICAgaWYgKGFjdGl2ZVRhYiAhPT0gJ3ZpZGVvJykgdmlkZW9UYWJCdG4uY2xpY2soKTsKICAgICAgICAgIGxvYWRWaWRlb0VwaXNvZGUob3JpZ2luYWxJZHgpOwogICAgICAgICAgaWYgKCFpc1ZpZGVvUGxheWluZykgdG9nZ2xlVmlkZW9QbGF5KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmIChhY3RpdmVUYWIgIT09ICdhdWRpbycpIGF1ZGlvVGFiQnRuLmNsaWNrKCk7CiAgICAgICAgICBsb2FkQXVkaW9FcGlzb2RlKG9yaWdpbmFsSWR4KTsKICAgICAgICAgIGlmICghaXNBdWRpb1BsYXlpbmcpIHRvZ2dsZUF1ZGlvUGxheSgpOwogICAgICAgIH0KICAgICAgfSk7CiAgICAgIGVwaXNvZGVHcmlkLmFwcGVuZENoaWxkKGVwRGl2KTsKICAgIH0pOwogIH0KCiAgLy8gVGFiIHN3aXRjaGluZwogIHZpZGVvVGFiQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gewogICAgYWN0aXZlVGFiID0gJ3ZpZGVvJzsKICAgIHZpZGVvVGFiQnRuLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgYXVkaW9UYWJCdG4uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICB2aWRlb1BsYXllckRpdi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgIGF1ZGlvUGxheWVyRGl2LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgcmVuZGVyRXBpc29kZXMoJ3ZpZGVvJyk7CiAgICBpZiAoY3VycmVudFZpZGVvSW5kZXggPT09IC0xKSBjdXJyZW50VmlkZW9JbmRleCA9IGVwaXNvZGVzLmZpbmRJbmRleChlID0+IGUudHlwZSA9PT0gJ3ZpZGVvJyk7CiAgICBpZiAoY3VycmVudFZpZGVvSW5kZXggIT09IC0xKSBsb2FkVmlkZW9FcGlzb2RlKGN1cnJlbnRWaWRlb0luZGV4KTsKICAgIHN0b3BMeXJpY3NTeW5jKCk7CiAgfSk7CgogIGF1ZGlvVGFiQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gewogICAgYWN0aXZlVGFiID0gJ2F1ZGlvJzsKICAgIGF1ZGlvVGFiQnRuLmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOwogICAgdmlkZW9UYWJCdG4uY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7CiAgICBhdWRpb1BsYXllckRpdi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKICAgIHZpZGVvUGxheWVyRGl2LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOwogICAgcmVuZGVyRXBpc29kZXMoJ2F1ZGlvJyk7CiAgICBpZiAoY3VycmVudEF1ZGlvSW5kZXggPT09IC0xKSBjdXJyZW50QXVkaW9JbmRleCA9IGVwaXNvZGVzLmZpbmRJbmRleChlID0+IGUudHlwZSA9PT0gJ2F1ZGlvJyk7CiAgICBpZiAoY3VycmVudEF1ZGlvSW5kZXggIT09IC0xKSBsb2FkQXVkaW9FcGlzb2RlKGN1cnJlbnRBdWRpb0luZGV4KTsKICAgIHN0b3BMeXJpY3NTeW5jKCk7CiAgfSk7CgogIC8vIFZpZGVvIGV2ZW50IGxpc3RlbmVycwogIHZpZGVvUGxheUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRvZ2dsZVZpZGVvUGxheSk7CiAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsIHVwZGF0ZVZpZGVvUHJvZ3Jlc3MpOwogIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXknLCAoKSA9PiB7IGlzVmlkZW9QbGF5aW5nID0gdHJ1ZTsgdXBkYXRlVmlkZW9QbGF5SWNvbigpOyB9KTsKICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsICgpID0+IHsgaXNWaWRlb1BsYXlpbmcgPSBmYWxzZTsgdXBkYXRlVmlkZW9QbGF5SWNvbigpOyBzdG9wTHlyaWNzU3luYygpOyB9KTsKICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsICgpID0+IHsgaXNWaWRlb1BsYXlpbmcgPSBmYWxzZTsgdXBkYXRlVmlkZW9QbGF5SWNvbigpOyBzdG9wTHlyaWNzU3luYygpOyB9KTsKICB2aWRlb1Byb2dyZXNzQmFyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHsKICAgIGNvbnN0IHJlY3QgPSB2aWRlb1Byb2dyZXNzQmFyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwogICAgY29uc3QgcGVyY2VudCA9IChlLmNsaWVudFggLSByZWN0LmxlZnQpIC8gcmVjdC53aWR0aDsKICAgIGlmICh2aWRlby5kdXJhdGlvbikgdmlkZW8uY3VycmVudFRpbWUgPSBwZXJjZW50ICogdmlkZW8uZHVyYXRpb247CiAgfSk7CiAgdmlkZW9NdXRlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gewogICAgdmlkZW8ubXV0ZWQgPSAhdmlkZW8ubXV0ZWQ7CiAgICB2aWRlb011dGVCdG4uaW5uZXJIVE1MID0gdmlkZW8ubXV0ZWQgPyAnPGkgY2xhc3M9ImZhcyBmYS12b2x1bWUtbXV0ZSI+PC9pPicgOiAnPGkgY2xhc3M9ImZhcyBmYS12b2x1bWUtdXAiPjwvaT4nOwogIH0pOwoKICAvLyBGdWxsc2NyZWVuCiAgZnVsbHNjcmVlbkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHsKICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudmlkZW8td3JhcHBlcicpOwogICAgaWYgKCFkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudCkgd3JhcHBlci5yZXF1ZXN0RnVsbHNjcmVlbigpLmNhdGNoKGVyciA9PiBhbGVydCgiRnVsbHNjcmVlbiBlcnJvciIpKTsKICAgIGVsc2UgZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW4oKTsKICB9KTsKCiAgLy8gQXVkaW8gZXZlbnQgbGlzdGVuZXJzCiAgYXVkaW9QbGF5UGF1c2VCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0b2dnbGVBdWRpb1BsYXkpOwogIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCB1cGRhdGVBdWRpb1Byb2dyZXNzKTsKICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgKCkgPT4geyBpc0F1ZGlvUGxheWluZyA9IHRydWU7IHVwZGF0ZUF1ZGlvUGxheUljb24oKTsgfSk7CiAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCAoKSA9PiB7IGlzQXVkaW9QbGF5aW5nID0gZmFsc2U7IHVwZGF0ZUF1ZGlvUGxheUljb24oKTsgc3RvcEx5cmljc1N5bmMoKTsgfSk7CiAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCAoKSA9PiB7IGlzQXVkaW9QbGF5aW5nID0gZmFsc2U7IHVwZGF0ZUF1ZGlvUGxheUljb24oKTsgc3RvcEx5cmljc1N5bmMoKTsgfSk7CiAgYXVkaW9Qcm9ncmVzc0Jhci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7CiAgICBjb25zdCByZWN0ID0gYXVkaW9Qcm9ncmVzc0Jhci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIGNvbnN0IHBlcmNlbnQgPSAoZS5jbGllbnRYIC0gcmVjdC5sZWZ0KSAvIHJlY3Qud2lkdGg7CiAgICBpZiAoYXVkaW8uZHVyYXRpb24pIGF1ZGlvLmN1cnJlbnRUaW1lID0gcGVyY2VudCAqIGF1ZGlvLmR1cmF0aW9uOwogIH0pOwogIGF1ZGlvVm9sdW1lU2xpZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgKGUpID0+IGF1ZGlvLnZvbHVtZSA9IGUudGFyZ2V0LnZhbHVlKTsKICBhdWRpb1ByZXZCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7CiAgICBjb25zdCBhdWRpb0VwaXNvZGVzID0gZXBpc29kZXMubWFwKChlcCwgaWR4KSA9PiAoeyB0eXBlOiBlcC50eXBlLCBpZHggfSkpLmZpbHRlcihlID0+IGUudHlwZSA9PT0gJ2F1ZGlvJyk7CiAgICBjb25zdCBwb3MgPSBhdWRpb0VwaXNvZGVzLmZpbmRJbmRleChlID0+IGUuaWR4ID09PSBjdXJyZW50QXVkaW9JbmRleCk7CiAgICBpZiAocG9zID4gMCkgbG9hZEF1ZGlvRXBpc29kZShhdWRpb0VwaXNvZGVzW3BvcyAtIDFdLmlkeCk7CiAgICBpZiAoaXNBdWRpb1BsYXlpbmcpIGF1ZGlvLnBsYXkoKTsKICB9KTsKICBhdWRpb05leHRCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7CiAgICBjb25zdCBhdWRpb0VwaXNvZGVzID0gZXBpc29kZXMubWFwKChlcCwgaWR4KSA9PiAoeyB0eXBlOiBlcC50eXBlLCBpZHggfSkpLmZpbHRlcihlID0+IGUudHlwZSA9PT0gJ2F1ZGlvJyk7CiAgICBjb25zdCBwb3MgPSBhdWRpb0VwaXNvZGVzLmZpbmRJbmRleChlID0+IGUuaWR4ID09PSBjdXJyZW50QXVkaW9JbmRleCk7CiAgICBpZiAocG9zIDwgYXVkaW9FcGlzb2Rlcy5sZW5ndGggLSAxKSBsb2FkQXVkaW9FcGlzb2RlKGF1ZGlvRXBpc29kZXNbcG9zICsgMV0uaWR4KTsKICAgIGlmIChpc0F1ZGlvUGxheWluZykgYXVkaW8ucGxheSgpOwogIH0pOwoKICAvLyBCYWNrIGJ1dHRvbgogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrQnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7CiAgICBpZiAoZG9jdW1lbnQucmVmZXJyZXIgJiYgZG9jdW1lbnQucmVmZXJyZXIuaW5jbHVkZXMod2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKSkgd2luZG93Lmhpc3RvcnkuYmFjaygpOwogICAgZWxzZSBhbGVydCgi4pyoIFJldHVybiB0byBtYWluIHBhZ2UiKTsKICB9KTsKCiAgLy8gSW5pdGlhbGl6ZQogIGNvbnN0IGZpcnN0VmlkZW8gPSBlcGlzb2Rlcy5maW5kSW5kZXgoZSA9PiBlLnR5cGUgPT09ICd2aWRlbycpOwogIGNvbnN0IGZpcnN0QXVkaW8gPSBlcGlzb2Rlcy5maW5kSW5kZXgoZSA9PiBlLnR5cGUgPT09ICdhdWRpbycpOwogIGlmIChmaXJzdFZpZGVvICE9PSAtMSkgbG9hZFZpZGVvRXBpc29kZShmaXJzdFZpZGVvKTsKICBpZiAoZmlyc3RBdWRpbyAhPT0gLTEpIGxvYWRBdWRpb0VwaXNvZGUoZmlyc3RBdWRpbyk7CiAgcmVuZGVyRXBpc29kZXMoJ3ZpZGVvJyk7CiAgYXVkaW8udm9sdW1lID0gMC43OwogIGF1ZGlvVm9sdW1lU2xpZGVyLnZhbHVlID0gMC43Owo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+BQcIFBgPGAgHDwQKBxULDQUHBQcIBAgGCAUIBwgHCAYIDggOCAtIAQQYFhMfCQgGCQSYiwMLAQAADgEMAAQBAAAHAEEAAEIBAQZBGwMCQQADEQB9AXcAdwB3AHcAfnckODhhNGU5NjgtOTBiNi00Y2RkLWE2YzAtZjQwMjM3Y2UyM2U2eHfE4wE8cD48IURPQ1RZUEUgaHRtbD48YnIgLz4KPGh0bWwgbGFuZz0iZW4iPjxiciAvPgo8aGVhZD48YnIgLz4KPG1ldGEgY2hhcnNldD0iVVRGLTgiPjxiciAvPgo8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT15ZXMiPjxiciAvPgo8dGl0bGU+UGhpbG9zb3BoeSBQb2RjYXN0IHwgTGl2ZSBMeXJpY3MgJiBGdWxsc2NyZWVuPC90aXRsZT48L3A+CjxwPjwhLS0gR29vZ2xlIEZvbnRzICsgSWNvbnMgLS0+CjxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9SW50ZXI6b3Bzeix3Z2h0QDE0Li4zMiwzMDA7MTQuLjMyLDQwMDsxNC4uMzIsNTAwOzE0Li4zMiw2MDA7MTQuLjMyLDcwMCZmYW1pbHk9Q29ybW9yYW50K0dhcmFtb25kOml0YWwsd2dodEAwLDQwMDswLDUwMDswLDYwMDsxLDQwMDsxLDUwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCI+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvZm9udC1hd2Vzb21lLzYuMC4wLWJldGEzL2Nzcy9hbGwubWluLmNzcyI+CjxzdHlsZT4KICAqIHs8YnIgLz4KICAgIG1hcmdpbjogMDs8YnIgLz4KICAgIHBhZGRpbmc6IDA7PGJyIC8+CiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OzxiciAvPgogIH08L3A+CjxwPiAgYm9keSB7PGJyIC8+CiAgICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjs8YnIgLz4KICAgIG1pbi1oZWlnaHQ6IDEwMHZoOzxiciAvPgogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE0NWRlZywgIzBmMGYxYSAwJSwgIzFhMWEyZSA1MCUsICMwYTBhMTQgMTAwJSk7PGJyIC8+CiAgICBkaXNwbGF5OiBmbGV4OzxiciAvPgogICAgYWxpZ24taXRlbXM6IGNlbnRlcjs8YnIgLz4KICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOzxiciAvPgogICAgcGFkZGluZzogMnJlbTs8YnIgLz4KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTs8YnIgLz4KICAgIG92ZXJmbG93LXg6IGhpZGRlbjs8YnIgLz4KICB9PC9wPgo8cD4gIC8qIGFuaW1hdGVkIGJhY2tncm91bmQgKi88YnIgLz4KICBib2R5OjpiZWZvcmUgezxiciAvPgogICAgY29udGVudDogJyc7PGJyIC8+CiAgICBwb3NpdGlvbjogZml4ZWQ7PGJyIC8+CiAgICB0b3A6IDA7PGJyIC8+CiAgICBsZWZ0OiAwOzxiciAvPgogICAgd2lkdGg6IDEwMCU7PGJyIC8+CiAgICBoZWlnaHQ6IDEwMCU7PGJyIC8+CiAgICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoY2lyY2xlIGF0IDMwJSA0MCUsIHJnYmEoMjEyLDE3NSw1NSwwLjA4KSAxcHgsIHRyYW5zcGFyZW50IDFweCk7PGJyIC8+CiAgICBiYWNrZ3JvdW5kLXNpemU6IDQ1cHggNDVweDs8YnIgLz4KICAgIHBvaW50ZXItZXZlbnRzOiBub25lOzxiciAvPgogICAgYW5pbWF0aW9uOiBiZ01vdmUgMzBzIGxpbmVhciBpbmZpbml0ZTs8YnIgLz4KICAgIHotaW5kZXg6IDA7PGJyIC8+CiAgfTwvcD4KPHA+ICBAa2V5ZnJhbWVzIGJnTW92ZSB7PGJyIC8+CiAgICAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsgfTxiciAvPgogICAgMTAwJSB7IGJhY2tncm91bmQtcG9zaXRpb246IDgwcHggODBweDsgfTxiciAvPgogIH08L3A+CjxwPiAgLyogbWFpbiBjb250YWluZXIgKi88YnIgLz4KICAucG9kY2FzdC1jb250YWluZXIgezxiciAvPgogICAgbWF4LXdpZHRoOiA5MDBweDs8YnIgLz4KICAgIHdpZHRoOiAxMDAlOzxiciAvPgogICAgYmFja2dyb3VuZDogcmdiYSgyMCwgMjUsIDQ1LCAwLjkpOzxiciAvPgogICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDE2cHgpOzxiciAvPgogICAgYm9yZGVyLXJhZGl1czogMnJlbTs8YnIgLz4KICAgIGJveC1zaGFkb3c6IDAgMzVweCA2MHB4IC0yMHB4IHJnYmEoMCwgMCwgMCwgMC41KSwgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LDAuMDUpOzxiciAvPgogICAgb3ZlcmZsb3c6IGhpZGRlbjs8YnIgLz4KICAgIHRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2U7PGJyIC8+CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwgMTc1LCA1NSwgMC4yNSk7PGJyIC8+CiAgICB6LWluZGV4OiAyOzxiciAvPgogIH08L3A+CjxwPiAgLyogbWVkaWEgdG9nZ2xlICovPGJyIC8+CiAgLm1lZGlhLXRvZ2dsZSB7PGJyIC8+CiAgICBkaXNwbGF5OiBmbGV4OzxiciAvPgogICAgZ2FwOiAxcmVtOzxiciAvPgogICAgcGFkZGluZzogMS4ycmVtIDEuNXJlbSAwOzxiciAvPgogIH08YnIgLz4KICAudG9nZ2xlLWJ0biB7PGJyIC8+CiAgICBmbGV4OiAxOzxiciAvPgogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjA1KTs8YnIgLz4KICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjEyLDE3NSw1NSwwLjMpOzxiciAvPgogICAgcGFkZGluZzogMC43cmVtOzxiciAvPgogICAgYm9yZGVyLXJhZGl1czogNTBweDs8YnIgLz4KICAgIGZvbnQtd2VpZ2h0OiA2MDA7PGJyIC8+CiAgICBmb250LXNpemU6IDAuOXJlbTs8YnIgLz4KICAgIGN1cnNvcjogcG9pbnRlcjs8YnIgLz4KICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOzxiciAvPgogICAgY29sb3I6ICNjY2M7PGJyIC8+CiAgICBkaXNwbGF5OiBmbGV4OzxiciAvPgogICAgYWxpZ24taXRlbXM6IGNlbnRlcjs8YnIgLz4KICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOzxiciAvPgogICAgZ2FwOiA4cHg7PGJyIC8+CiAgfTxiciAvPgogIC50b2dnbGUtYnRuLmFjdGl2ZSB7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTVkZWcsICNkNGFmMzcsICNmMGM2NzQpOzxiciAvPgogICAgY29sb3I6ICMwZjBmMWE7PGJyIC8+CiAgICBib3JkZXItY29sb3I6ICNkNGFmMzc7PGJyIC8+CiAgICBib3gtc2hhZG93OiAwIDVweCAxNXB4IHJnYmEoMjEyLDE3NSw1NSwwLjMpOzxiciAvPgogIH08L3A+CjxwPiAgLyogdmlkZW8gcGxheWVyICovPGJyIC8+CiAgLnZpZGVvLXBsYXllciB7PGJyIC8+CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7PGJyIC8+CiAgICB3aWR0aDogMTAwJTs8YnIgLz4KICAgIGJhY2tncm91bmQ6ICMwMDA7PGJyIC8+CiAgICBkaXNwbGF5OiBub25lOzxiciAvPgogIH08YnIgLz4KICAudmlkZW8tcGxheWVyLmFjdGl2ZSB7PGJyIC8+CiAgICBkaXNwbGF5OiBibG9jazs8YnIgLz4KICB9PGJyIC8+CiAgLnZpZGVvLXdyYXBwZXIgezxiciAvPgogICAgcG9zaXRpb246IHJlbGF0aXZlOzxiciAvPgogIH08YnIgLz4KICAudmlkZW8td3JhcHBlciB2aWRlbyB7PGJyIC8+CiAgICB3aWR0aDogMTAwJTs8YnIgLz4KICAgIGhlaWdodDogYXV0bzs8YnIgLz4KICAgIG1heC1oZWlnaHQ6IDQwMHB4OzxiciAvPgogICAgb2JqZWN0LWZpdDogY292ZXI7PGJyIC8+CiAgICBkaXNwbGF5OiBibG9jazs8YnIgLz4KICB9PGJyIC8+CiAgLnZpZGVvLWNvbnRyb2xzIHs8YnIgLz4KICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTs8YnIgLz4KICAgIGJvdHRvbTogMDs8YnIgLz4KICAgIGxlZnQ6IDA7PGJyIC8+CiAgICByaWdodDogMDs8YnIgLz4KICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMCwwLDAsMC44NSksIHRyYW5zcGFyZW50KTs8YnIgLz4KICAgIHBhZGRpbmc6IDFyZW07PGJyIC8+CiAgICBkaXNwbGF5OiBmbGV4OzxiciAvPgogICAgYWxpZ24taXRlbXM6IGNlbnRlcjs8YnIgLz4KICAgIGdhcDogMC44cmVtOzxiciAvPgogICAgZmxleC13cmFwOiB3cmFwOzxiciAvPgogICAgb3BhY2l0eTogMDs8YnIgLz4KICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zczs8YnIgLz4KICB9PGJyIC8+CiAgLnZpZGVvLXBsYXllcjpob3ZlciAudmlkZW8tY29udHJvbHMgezxiciAvPgogICAgb3BhY2l0eTogMTs8YnIgLz4KICB9PGJyIC8+CiAgLnZpZGVvLWNvbnRyb2xzIGJ1dHRvbiB7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwxNzUsNTUsMC45KTs8YnIgLz4KICAgIGJvcmRlcjogbm9uZTs8YnIgLz4KICAgIHdpZHRoOiAzNnB4OzxiciAvPgogICAgaGVpZ2h0OiAzNnB4OzxiciAvPgogICAgYm9yZGVyLXJhZGl1czogNTAlOzxiciAvPgogICAgY3Vyc29yOiBwb2ludGVyOzxiciAvPgogICAgY29sb3I6ICMxYTFhMmU7PGJyIC8+CiAgICB0cmFuc2l0aW9uOiAwLjJzOzxiciAvPgogIH08YnIgLz4KICAudmlkZW8tY29udHJvbHMgYnV0dG9uOmhvdmVyIHs8YnIgLz4KICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiAjZThjNDVhOzxiciAvPgogIH08YnIgLz4KICAudmlkZW8tcHJvZ3Jlc3MgezxiciAvPgogICAgZmxleDogMTs8YnIgLz4KICAgIGhlaWdodDogNXB4OzxiciAvPgogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjMpOzxiciAvPgogICAgYm9yZGVyLXJhZGl1czogNXB4OzxiciAvPgogICAgY3Vyc29yOiBwb2ludGVyOzxiciAvPgogIH08YnIgLz4KICAudmlkZW8tcHJvZ3Jlc3MtZmlsbCB7PGJyIC8+CiAgICB3aWR0aDogMCU7PGJyIC8+CiAgICBoZWlnaHQ6IDEwMCU7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiAjZDRhZjM3OzxiciAvPgogICAgYm9yZGVyLXJhZGl1czogNXB4OzxiciAvPgogIH08YnIgLz4KICAudmlkZW8tdGltZSB7PGJyIC8+CiAgICBmb250LXNpemU6IDAuN3JlbTs8YnIgLz4KICAgIGNvbG9yOiB3aGl0ZTs8YnIgLz4KICB9PGJyIC8+CiAgLmZ1bGxzY3JlZW4tYnRuIHs8YnIgLz4KICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC42KSAhaW1wb3J0YW50OzxiciAvPgogICAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7PGJyIC8+CiAgfTwvcD4KPHA+ICAvKiBhdWRpbyBwbGF5ZXIgKi88YnIgLz4KICAuYXVkaW8tcGxheWVyIHs8YnIgLz4KICAgIGRpc3BsYXk6IG5vbmU7PGJyIC8+CiAgICBwYWRkaW5nOiAxLjhyZW07PGJyIC8+CiAgfTxiciAvPgogIC5hdWRpby1wbGF5ZXIuYWN0aXZlIHs8YnIgLz4KICAgIGRpc3BsYXk6IGJsb2NrOzxiciAvPgogIH08YnIgLz4KICAuZXBpc29kZS1hcnQgezxiciAvPgogICAgdGV4dC1hbGlnbjogY2VudGVyOzxiciAvPgogICAgbWFyZ2luLWJvdHRvbTogMXJlbTs8YnIgLz4KICB9PGJyIC8+CiAgLmVwaXNvZGUtYXJ0IGkgezxiciAvPgogICAgZm9udC1zaXplOiAzcmVtOzxiciAvPgogICAgY29sb3I6ICNkNGFmMzc7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwxNzUsNTUsMC4xNSk7PGJyIC8+CiAgICB3aWR0aDogODBweDs8YnIgLz4KICAgIGhlaWdodDogODBweDs8YnIgLz4KICAgIGJvcmRlci1yYWRpdXM6IDUwJTs8YnIgLz4KICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OzxiciAvPgogICAgYWxpZ24taXRlbXM6IGNlbnRlcjs8YnIgLz4KICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOzxiciAvPgogIH08YnIgLz4KICAuY3VzdG9tLWF1ZGlvIHs8YnIgLz4KICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4zKTs8YnIgLz4KICAgIGJvcmRlci1yYWRpdXM6IDEuNXJlbTs8YnIgLz4KICAgIHBhZGRpbmc6IDFyZW07PGJyIC8+CiAgfTxiciAvPgogIC50aW1lLXJvdyB7PGJyIC8+CiAgICBkaXNwbGF5OiBmbGV4OzxiciAvPgogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOzxiciAvPgogICAgZm9udC1zaXplOiAwLjdyZW07PGJyIC8+CiAgICBjb2xvcjogI2FhYTs8YnIgLz4KICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTs8YnIgLz4KICB9PGJyIC8+CiAgLnByb2dyZXNzLWJhciB7PGJyIC8+CiAgICB3aWR0aDogMTAwJTs8YnIgLz4KICAgIGhlaWdodDogNXB4OzxiciAvPgogICAgYmFja2dyb3VuZDogIzMzMzs8YnIgLz4KICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7PGJyIC8+CiAgICBjdXJzb3I6IHBvaW50ZXI7PGJyIC8+CiAgICBtYXJnaW4tYm90dG9tOiAxcmVtOzxiciAvPgogIH08YnIgLz4KICAucHJvZ3Jlc3MtZmlsbCB7PGJyIC8+CiAgICB3aWR0aDogMCU7PGJyIC8+CiAgICBoZWlnaHQ6IDEwMCU7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiAjZDRhZjM3OzxiciAvPgogICAgYm9yZGVyLXJhZGl1czogMTBweDs8YnIgLz4KICB9PGJyIC8+CiAgLmF1ZGlvLWNvbnRyb2xzIHs8YnIgLz4KICAgIGRpc3BsYXk6IGZsZXg7PGJyIC8+CiAgICBhbGlnbi1pdGVtczogY2VudGVyOzxiciAvPgogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7PGJyIC8+CiAgICBnYXA6IDEuNXJlbTs8YnIgLz4KICAgIG1hcmdpbi10b3A6IDFyZW07PGJyIC8+CiAgfTxiciAvPgogIC5hdWRpby1jdHJsIHs8YnIgLz4KICAgIGJhY2tncm91bmQ6IG5vbmU7PGJyIC8+CiAgICBib3JkZXI6IG5vbmU7PGJyIC8+CiAgICBjb2xvcjogI2VlZTs8YnIgLz4KICAgIGZvbnQtc2l6ZTogMS4ycmVtOzxiciAvPgogICAgY3Vyc29yOiBwb2ludGVyOzxiciAvPgogICAgd2lkdGg6IDQ0cHg7PGJyIC8+CiAgICBoZWlnaHQ6IDQ0cHg7PGJyIC8+CiAgICBib3JkZXItcmFkaXVzOiA1MCU7PGJyIC8+CiAgICB0cmFuc2l0aW9uOiAwLjJzOzxiciAvPgogIH08YnIgLz4KICAuYXVkaW8tY3RybDpob3ZlciB7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwxNzUsNTUsMC4yKTs8YnIgLz4KICB9PGJyIC8+CiAgLnBsYXktcGF1c2UgezxiciAvPgogICAgYmFja2dyb3VuZDogI2Q0YWYzNzs8YnIgLz4KICAgIGNvbG9yOiAjMWExYTJlOzxiciAvPgogICAgd2lkdGg6IDU2cHg7PGJyIC8+CiAgICBoZWlnaHQ6IDU2cHg7PGJyIC8+CiAgICBmb250LXNpemU6IDEuNHJlbTs8YnIgLz4KICB9PGJyIC8+CiAgLnZvbHVtZS1yb3cgezxiciAvPgogICAgZGlzcGxheTogZmxleDs8YnIgLz4KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7PGJyIC8+CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjs8YnIgLz4KICAgIGdhcDogMTBweDs8YnIgLz4KICAgIG1hcmdpbi10b3A6IDFyZW07PGJyIC8+CiAgfTxiciAvPgogIGlucHV0W3R5cGU9InJhbmdlIl0gezxiciAvPgogICAgd2lkdGg6IDEwMHB4OzxiciAvPgogICAgaGVpZ2h0OiAzcHg7PGJyIC8+CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiAjNTU1OzxiciAvPgogIH08YnIgLz4KICBpbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LXNsaWRlci10aHVtYiB7PGJyIC8+CiAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7PGJyIC8+CiAgICB3aWR0aDogMTJweDs8YnIgLz4KICAgIGhlaWdodDogMTJweDs8YnIgLz4KICAgIGJhY2tncm91bmQ6ICNkNGFmMzc7PGJyIC8+CiAgICBib3JkZXItcmFkaXVzOiA1MCU7PGJyIC8+CiAgfTwvcD4KPHA+ICAvKiBMSVZFIExZUklDUyBTRUNUSU9OICovPGJyIC8+CiAgLmx5cmljcy1zZWN0aW9uIHs8YnIgLz4KICAgIHBhZGRpbmc6IDFyZW0gMS41cmVtOzxiciAvPgogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjEyLDE3NSw1NSwwLjIpOzxiciAvPgogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjIpOzxiciAvPgogIH08YnIgLz4KICAubHlyaWNzLWhlYWRlciB7PGJyIC8+CiAgICBkaXNwbGF5OiBmbGV4OzxiciAvPgogICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOzxiciAvPgogICAgYWxpZ24taXRlbXM6IGNlbnRlcjs8YnIgLz4KICAgIG1hcmdpbi1ib3R0b206IDAuOHJlbTs8YnIgLz4KICAgIGNvbG9yOiAjZDRhZjM3OzxiciAvPgogICAgZm9udC1zaXplOiAwLjhyZW07PGJyIC8+CiAgICBmb250LXdlaWdodDogNTAwOzxiciAvPgogIH08YnIgLz4KICAubHlyaWNzLWJveCB7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuNCk7PGJyIC8+CiAgICBib3JkZXItcmFkaXVzOiAxcmVtOzxiciAvPgogICAgcGFkZGluZzogMXJlbTs8YnIgLz4KICAgIGhlaWdodDogMTgwcHg7PGJyIC8+CiAgICBvdmVyZmxvdy15OiBhdXRvOzxiciAvPgogICAgZm9udC1zaXplOiAwLjlyZW07PGJyIC8+CiAgICBsaW5lLWhlaWdodDogMS42OzxiciAvPgogICAgY29sb3I6ICNkZGQ7PGJyIC8+CiAgICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDs8YnIgLz4KICB9PGJyIC8+CiAgLmx5cmljcy1saW5lIHs8YnIgLz4KICAgIHBhZGRpbmc6IDZweCAxMHB4OzxiciAvPgogICAgbWFyZ2luOiA0cHggMDs8YnIgLz4KICAgIGJvcmRlci1yYWRpdXM6IDEycHg7PGJyIC8+CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4yczs8YnIgLz4KICAgIGN1cnNvcjogZGVmYXVsdDs8YnIgLz4KICB9PGJyIC8+CiAgLmx5cmljcy1saW5lLmFjdGl2ZSB7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwxNzUsNTUsMC4yNSk7PGJyIC8+CiAgICBjb2xvcjogI2YwZDg5MDs8YnIgLz4KICAgIGZvbnQtd2VpZ2h0OiA1MDA7PGJyIC8+CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDIpOzxiciAvPgogICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjZDRhZjM3OzxiciAvPgogIH08YnIgLz4KICA6Oi13ZWJraXQtc2Nyb2xsYmFyIHs8YnIgLz4KICAgIHdpZHRoOiA0cHg7PGJyIC8+CiAgfTxiciAvPgogIDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgezxiciAvPgogICAgYmFja2dyb3VuZDogIzIyMjs8YnIgLz4KICB9PGJyIC8+CiAgOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiAjZDRhZjM3OzxiciAvPgogICAgYm9yZGVyLXJhZGl1czogNXB4OzxiciAvPgogIH08L3A+CjxwPiAgLyogZXBpc29kZSBsaXN0ICovPGJyIC8+CiAgLmVwaXNvZGUtbGlzdCB7PGJyIC8+CiAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbSAxLjVyZW07PGJyIC8+CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyMTIsMTc1LDU1LDAuMik7PGJyIC8+CiAgfTxiciAvPgogIC5lcGlzb2RlLWdyaWQgezxiciAvPgogICAgZGlzcGxheTogZmxleDs8YnIgLz4KICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47PGJyIC8+CiAgICBnYXA6IDAuN3JlbTs8YnIgLz4KICAgIG1hcmdpbi10b3A6IDAuOHJlbTs8YnIgLz4KICB9PGJyIC8+CiAgLmVwaXNvZGUtaXRlbSB7PGJyIC8+CiAgICBkaXNwbGF5OiBmbGV4OzxiciAvPgogICAgYWxpZ24taXRlbXM6IGNlbnRlcjs8YnIgLz4KICAgIGdhcDogMXJlbTs8YnIgLz4KICAgIHBhZGRpbmc6IDAuN3JlbTs8YnIgLz4KICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wMyk7PGJyIC8+CiAgICBib3JkZXItcmFkaXVzOiAxcmVtOzxiciAvPgogICAgY3Vyc29yOiBwb2ludGVyOzxiciAvPgogICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7PGJyIC8+CiAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDs8YnIgLz4KICB9PGJyIC8+CiAgLmVwaXNvZGUtaXRlbTpob3ZlciB7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDIxMiwxNzUsNTUsMC4xKTs8YnIgLz4KICAgIGJvcmRlci1jb2xvcjogcmdiYSgyMTIsMTc1LDU1LDAuMyk7PGJyIC8+CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNXB4KTs8YnIgLz4KICB9PGJyIC8+CiAgLmVwaXNvZGUtaXRlbS5hY3RpdmUgezxiciAvPgogICAgYmFja2dyb3VuZDogcmdiYSgyMTIsMTc1LDU1LDAuMTUpOzxiciAvPgogICAgYm9yZGVyLWNvbG9yOiAjZDRhZjM3OzxiciAvPgogIH08YnIgLz4KICAuZXBpc29kZS1pY29uIHs8YnIgLz4KICAgIHdpZHRoOiA0NXB4OzxiciAvPgogICAgaGVpZ2h0OiA0NXB4OzxiciAvPgogICAgYmFja2dyb3VuZDogcmdiYSgyMTIsMTc1LDU1LDAuMik7PGJyIC8+CiAgICBib3JkZXItcmFkaXVzOiA1MCU7PGJyIC8+CiAgICBkaXNwbGF5OiBmbGV4OzxiciAvPgogICAgYWxpZ24taXRlbXM6IGNlbnRlcjs8YnIgLz4KICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOzxiciAvPgogICAgZm9udC1zaXplOiAxLjJyZW07PGJyIC8+CiAgICBjb2xvcjogI2Q0YWYzNzs8YnIgLz4KICB9PGJyIC8+CiAgLmVwaXNvZGUtaW5mbyB7PGJyIC8+CiAgICBmbGV4OiAxOzxiciAvPgogIH08YnIgLz4KICAuZXBpc29kZS1pbmZvIGg0IHs8YnIgLz4KICAgIGZvbnQtc2l6ZTogMC45NXJlbTs8YnIgLz4KICAgIG1hcmdpbi1ib3R0b206IDAuMnJlbTs8YnIgLz4KICAgIGNvbG9yOiAjZWVlOzxiciAvPgogIH08YnIgLz4KICAuZXBpc29kZS1pbmZvIHAgezxiciAvPgogICAgZm9udC1zaXplOiAwLjdyZW07PGJyIC8+CiAgICBjb2xvcjogI2FhYTs8YnIgLz4KICB9PC9wPgo8cD4gIC5iYWNrLWxpbmsgezxiciAvPgogICAgZGlzcGxheTogaW5saW5lLWZsZXg7PGJyIC8+CiAgICBhbGlnbi1pdGVtczogY2VudGVyOzxiciAvPgogICAgZ2FwOiA4cHg7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiBub25lOzxiciAvPgogICAgYm9yZGVyOiBub25lOzxiciAvPgogICAgY29sb3I6ICNhYWE7PGJyIC8+CiAgICBtYXJnaW46IDAgMS41cmVtIDEuNXJlbTs8YnIgLz4KICAgIGN1cnNvcjogcG9pbnRlcjs8YnIgLz4KICAgIHRyYW5zaXRpb246IDAuMnM7PGJyIC8+CiAgfTxiciAvPgogIC5iYWNrLWxpbms6aG92ZXIgezxiciAvPgogICAgY29sb3I6ICNkNGFmMzc7PGJyIC8+CiAgICBnYXA6IDEycHg7PGJyIC8+CiAgfTxiciAvPgogIGZvb3RlciB7PGJyIC8+CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7PGJyIC8+CiAgICBwYWRkaW5nOiAxcmVtOzxiciAvPgogICAgZm9udC1zaXplOiAwLjdyZW07PGJyIC8+CiAgICBjb2xvcjogIzY2Njs8YnIgLz4KICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDI1NSwyNTUsMjU1LDAuMDUpOzxiciAvPgogIH08L3A+CjxwPiAgQG1lZGlhIChtYXgtd2lkdGg6IDY1MHB4KSB7PGJyIC8+CiAgICBib2R5IHsgcGFkZGluZzogMXJlbTsgfTxiciAvPgogICAgLnRvZ2dsZS1idG4geyBmb250LXNpemU6IDAuN3JlbTsgcGFkZGluZzogMC41cmVtOyB9PGJyIC8+CiAgICAubHlyaWNzLWJveCB7IGhlaWdodDogMTQwcHg7IGZvbnQtc2l6ZTogMC44cmVtOyB9PGJyIC8+CiAgfTxiciAvPgo8L3N0eWxlPgo8cD48L2hlYWQ+PGJyIC8+Cjxib2R5PjwvcD4KPGRpdiBjbGFzcz0icG9kY2FzdC1jb250YWluZXIiPgo8ZGl2IGNsYXNzPSJtZWRpYS10b2dnbGUiPgogICAgPGJ1dHRvbiBjbGFzcz0idG9nZ2xlLWJ0biBhY3RpdmUiIGlkPSJ2aWRlb1RhYkJ0biI+PGkgY2xhc3M9ImZhcyBmYS12aWRlbyI+PC9pPiBWaWRlbzwvYnV0dG9uPjxiciAvPgogICAgPGJ1dHRvbiBjbGFzcz0idG9nZ2xlLWJ0biIgaWQ9ImF1ZGlvVGFiQnRuIj48aSBjbGFzcz0iZmFzIGZhLWhlYWRwaG9uZXMiPjwvaT4gQXVkaW88L2J1dHRvbj4KICA8L2Rpdj4KPHA+ICA8IS0tIFZJREVPIFBMQVlFUiAtLT48L3A+CjxkaXYgY2xhc3M9InZpZGVvLXBsYXllciBhY3RpdmUiIGlkPSJ2aWRlb1BsYXllciI+CjxkaXYgY2xhc3M9InZpZGVvLXdyYXBwZXIiPgogICAgICA8dmlkZW8gaWQ9Im1haW5WaWRlbyIgcG9zdGVyPSJodHRwczovL2ltYWdlcy5wZXhlbHMuY29tL3Bob3Rvcy83MjY0ODA3L3BleGVscy1waG90by03MjY0ODA3LmpwZWc\/YXV0bz1jb21wcmVzcyZjcz10aW55c3JnYiZ3PTgwMCI+PHNvdXJjZSBzcmM9IiMiIHR5cGU9InZpZGVvL21wNCI+PC92aWRlbz48L3A+CjxkaXYgY2xhc3M9InZpZGVvLWNvbnRyb2xzIj4KICAgICAgICA8YnV0dG9uIGlkPSJ2aWRlb1BsYXlCdG4iPjxpIGNsYXNzPSJmYXMgZmEtcGxheSI+PC9pPjwvYnV0dG9uPjwvcD4KPGRpdiBjbGFzcz0idmlkZW8tcHJvZ3Jlc3MiIGlkPSJ2aWRlb1Byb2dyZXNzQmFyIj4KPGRpdiBjbGFzcz0idmlkZW8tcHJvZ3Jlc3MtZmlsbCIgaWQ9InZpZGVvUHJvZ3Jlc3NGaWxsIj48L2Rpdj4KPC9wPjwvZGl2Pgo8cD4gICAgICAgIDxzcGFuIGNsYXNzPSJ2aWRlby10aW1lIiBpZD0idmlkZW9UaW1lIj4wOjAwIC8gMDowMDwvc3Bhbj48YnIgLz4KICAgICAgICA8YnV0dG9uIGlkPSJ2aWRlb011dGVCdG4iPjxpIGNsYXNzPSJmYXMgZmEtdm9sdW1lLXVwIj48L2k+PC9idXR0b24+PGJyIC8+CiAgICAgICAgPGJ1dHRvbiBpZD0iZnVsbHNjcmVlbkJ0biIgY2xhc3M9ImZ1bGxzY3JlZW4tYnRuIj48aSBjbGFzcz0iZmFzIGZhLWV4cGFuZCI+PC9pPjwvYnV0dG9uPgogICAgICA8L2Rpdj4KPC9wPjwvZGl2Pgo8L3A+PC9kaXY+CjxwPiAgPCEtLSBBVURJTyBQTEFZRVIgLS0+PC9wPgo8ZGl2IGNsYXNzPSJhdWRpby1wbGF5ZXIiIGlkPSJhdWRpb1BsYXllciI+CjxkaXYgY2xhc3M9ImVwaXNvZGUtYXJ0Ij48aSBjbGFzcz0iZmFzIGZhLW1pY3JvcGhvbmUtYWx0Ij48L2k+PC9kaXY+CjxkaXYgY2xhc3M9ImN1c3RvbS1hdWRpbyI+CjxkaXYgY2xhc3M9InRpbWUtcm93Ij48c3BhbiBpZD0iYXVkaW9DdXJyZW50Ij4wOjAwPC9zcGFuPjxzcGFuIGlkPSJhdWRpb0R1cmF0aW9uIj4wOjAwPC9zcGFuPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwcm9ncmVzcy1iYXIiIGlkPSJhdWRpb1Byb2dyZXNzQmFyIj4KPGRpdiBjbGFzcz0icHJvZ3Jlc3MtZmlsbCIgaWQ9ImF1ZGlvUHJvZ3Jlc3NGaWxsIj48L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9ImF1ZGlvLWNvbnRyb2xzIj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJhdWRpby1jdHJsIiBpZD0iYXVkaW9QcmV2QnRuIj48aSBjbGFzcz0iZmFzIGZhLWJhY2t3YXJkLXN0ZXAiPjwvaT48L2J1dHRvbj48YnIgLz4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJhdWRpby1jdHJsIHBsYXktcGF1c2UiIGlkPSJhdWRpb1BsYXlQYXVzZUJ0biI+PGkgY2xhc3M9ImZhcyBmYS1wbGF5IiBpZD0iYXVkaW9QbGF5SWNvbiI+PC9pPjwvYnV0dG9uPjxiciAvPgogICAgICAgIDxidXR0b24gY2xhc3M9ImF1ZGlvLWN0cmwiIGlkPSJhdWRpb05leHRCdG4iPjxpIGNsYXNzPSJmYXMgZmEtZm9yd2FyZC1zdGVwIj48L2k+PC9idXR0b24+CiAgICAgIDwvZGl2Pgo8ZGl2IGNsYXNzPSJ2b2x1bWUtcm93Ij4KICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXZvbHVtZS1kb3duIj48L2k+PGJyIC8+CiAgICAgICAgPGlucHV0IHR5cGU9InJhbmdlIiBpZD0iYXVkaW9Wb2x1bWUiIG1pbj0iMCIgbWF4PSIxIiBzdGVwPSIwLjAxIiB2YWx1ZT0iMC43Ij48YnIgLz4KICAgICAgICA8aSBjbGFzcz0iZmFzIGZhLXZvbHVtZS11cCI+PC9pPgogICAgICA8L2Rpdj4KPC9wPjwvZGl2Pgo8L3A+PC9kaXY+CjxwPiAgPCEtLSBMSVZFIExZUklDUyBTRUNUSU9OIC0tPjwvcD4KPGRpdiBjbGFzcz0ibHlyaWNzLXNlY3Rpb24iPgo8ZGl2IGNsYXNzPSJseXJpY3MtaGVhZGVyIj4KICAgICAgPHNwYW4+PGkgY2xhc3M9ImZhcyBmYS1tdXNpYyI+PC9pPiBMaXZlIEx5cmljczwvc3Bhbj48YnIgLz4KICAgICAgPHNwYW4gaWQ9ImN1cnJlbnRUaXRsZSI+U2VsZWN0IGFuIGVwaXNvZGU8L3NwYW4+CiAgICA8L2Rpdj4KPGRpdiBjbGFzcz0ibHlyaWNzLWJveCIgaWQ9Imx5cmljc0JveCI+CjxkaXYgY2xhc3M9Imx5cmljcy1saW5lIj7inKggTGlzdGVuIHRvIGFuIGVwaXNvZGUgdG8gc2VlIHN5bmNocm9uaXplZCBseXJpY3MuLi48L2Rpdj4KPC9wPjwvZGl2Pgo8L3A+PC9kaXY+CjxwPiAgPCEtLSBFUElTT0RFIExJU1QgLS0+PC9wPgo8ZGl2IGNsYXNzPSJlcGlzb2RlLWxpc3QiPgo8ZGl2IHN0eWxlPSJmb250LXNpemU6MC44cmVtOyBjb2xvcjojZDRhZjM3OyI+PGkgY2xhc3M9ImZhcyBmYS1saXN0Ij48L2k+IEVwaXNvZGVzPC9kaXY+CjxkaXYgY2xhc3M9ImVwaXNvZGUtZ3JpZCIgaWQ9ImVwaXNvZGVHcmlkIj48L2Rpdj4KPC9wPjwvZGl2Pgo8cD4gIDxidXR0b24gY2xhc3M9ImJhY2stbGluayIgaWQ9ImJhY2tCdG4iPjxpIGNsYXNzPSJmYXMgZmEtYXJyb3ctbGVmdCI+PC9pPiBCYWNrIHRvIEhvbWU8L2J1dHRvbj48L3A+Cjxmb290ZXI+PGkgY2xhc3M9ImZhcyBmYS1mZWF0aGVyLWFsdCI+PC9pPiBQaGlsb3NvcGh5IGluIGV2ZXJ5IHdvcmQgJiBmcmFtZTwvZm9vdGVyPgo8L2Rpdj4KPHA+PGF1ZGlvIGlkPSJoaWRkZW5BdWRpbyIgcHJlbG9hZD0ibWV0YWRhdGEiPjwvYXVkaW8+PC9wPgo8cD48c2NyaXB0PjxiciAvPgogIC8vIEVwaXNvZGUgZGF0YSB3aXRoIGx5cmljczxiciAvPgogIGNvbnN0IGVwaXNvZGVzID0gWzxiciAvPgogICAgeyB0eXBlOiAidmlkZW8iLCB0aXRsZTogIlRoZSBBcnQgb2YgU3RpbGxuZXNzIiwgZGVzYzogIkZpbmRpbmcgcGVhY2Ugd2l0aGluIiwgc3JjOiAiaHR0cHM6Ly9jb21tb25kYXRhc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9ndHYtdmlkZW9zLWJ1Y2tldC9zYW1wbGUvRm9yQmlnZ2VyQmxhemVzLm1wNCIsIGR1cmF0aW9uOiAiMDozMCIsIGx5cmljczogWyLinKggU3RpbGxuZXNzIGlzIHRoZSBkb29yd2F5IHRvIHdpc2RvbS4uLiIsICJCcmVhdGhlIGluLCBicmVhdGhlIG91dC4iLCAiVGhlIG1pbmQgYmVjb21lcyBjYWxtIGxpa2Ugc3RpbGwgd2F0ZXIuIiwgIkluIHNpbGVuY2UsIHdlIGhlYXIgdGhlIHRydXRoLiIsICJMZXQgZ28gb2YgYWxsIGRpc3RyYWN0aW9ucy4iLCAiWW91IGFyZSBhbHJlYWR5IGNvbXBsZXRlLiJdIH0sPGJyIC8+CiAgICB7IHR5cGU6ICJ2aWRlbyIsIHRpdGxlOiAiU3RvaWMgV2lzZG9tIiwgZGVzYzogIk1hcmN1cyBBdXJlbGl1cyIsIHNyYzogImh0dHBzOi8vY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZ3R2LXZpZGVvcy1idWNrZXQvc2FtcGxlL0ZvckJpZ2dlckZ1bmZsaWVzLm1wNCIsIGR1cmF0aW9uOiAiMDozMCIsIGx5cmljczogWyJZb3UgaGF2ZSBwb3dlciBvdmVyIHlvdXIgbWluZCDigJQgbm90IG91dHNpZGUgZXZlbnRzLiIsICJSZWFsaXplIHRoaXMsIGFuZCB5b3Ugd2lsbCBmaW5kIHN0cmVuZ3RoLiIsICJXYXN0ZSBubyBtb3JlIHRpbWUgYXJndWluZyB3aGF0IGEgZ29vZCBtYW4gc2hvdWxkIGJlLiIsICJCZSBvbmUuIiwgIlRoZSBvYnN0YWNsZSBiZWNvbWVzIHRoZSB3YXkuIiwgIkFtb3IgZmF0aSDigJQgbG92ZSB5b3VyIGZhdGUuIl0gfSw8YnIgLz4KICAgIHsgdHlwZTogImF1ZGlvIiwgdGl0bGU6ICJNZWFuaW5nICYgSGFwcGluZXNzIiwgZGVzYzogIkFyaXN0b3RsZSdzIEV1ZGFpbW9uaWEiLCBzcmM6ICJodHRwczovL3d3dy5zb3VuZGhlbGl4LmNvbS9leGFtcGxlcy9tcDMvU291bmRIZWxpeC1Tb25nLTEubXAzIiwgZHVyYXRpb246ICIzOjQ1IiwgbHlyaWNzOiBbIkhhcHBpbmVzcyBpcyB0aGUgbWVhbmluZyBvZiBsaWZlLiIsICJWaXJ0dWUgaXMgdGhlIGZvdW5kYXRpb24gb2YgZXVkYWltb25pYS4iLCAiRmxvdXJpc2hpbmcgY29tZXMgZnJvbSByaWdodCBhY3Rpb24uIiwgIlNlZWsgYmFsYW5jZSBpbiBhbGwgdGhpbmdzLiIsICJUaGUgZ29sZGVuIG1lYW4gZ3VpZGVzIHVzLiIsICJMaXZlIHdpdGggcHVycG9zZSBhbmQgaW50ZWdyaXR5LiJdIH0sPGJyIC8+CiAgICB7IHR5cGU6ICJhdWRpbyIsIHRpdGxlOiAiVGhlIFBvd2VyIG9mIFByZXNlbmNlIiwgZGVzYzogIk1pbmRmdWxuZXNzIiwgc3JjOiAiaHR0cHM6Ly93d3cuc291bmRoZWxpeC5jb20vZXhhbXBsZXMvbXAzL1NvdW5kSGVsaXgtU29uZy0yLm1wMyIsIGR1cmF0aW9uOiAiNDoxMiIsIGx5cmljczogWyJCZSBoZXJlIG5vdy4iLCAiVGhlIHByZXNlbnQgbW9tZW50IGlzIGFsbCB3ZSBoYXZlLiIsICJUaG91Z2h0cyBhcmUgY2xvdWRzIHBhc3NpbmcgaW4gdGhlIHNreS4iLCAiWW91IGFyZSB0aGUgc2t5LCBub3QgdGhlIGNsb3Vkcy4iLCAiQnJlYXRoZSBkZWVwbHkgYW5kIHJldHVybiB0byBub3cuIiwgIlBlYWNlIGlzIGZvdW5kIGluIHByZXNlbmNlLiJdIH0sPGJyIC8+CiAgICB7IHR5cGU6ICJ2aWRlbyIsIHRpdGxlOiAiTWVkaXRhdGlvbiAmIE1pbmQiLCBkZXNjOiAiR3VpZGVkIGpvdXJuZXkiLCBzcmM6ICJodHRwczovL2NvbW1vbmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL2d0di12aWRlb3MtYnVja2V0L3NhbXBsZS9Gb3JCaWdnZXJFc2NhcGVzLm1wNCIsIGR1cmF0aW9uOiAiMDozNSIsIGx5cmljczogWyJDbG9zZSB5b3VyIGV5ZXMuIEZlZWwgeW91ciBicmVhdGguIiwgIkxldCB0aG91Z2h0cyBkaXNzb2x2ZSBsaWtlIG1pc3QuIiwgIllvdSBhcmUgYXdhcmVuZXNzIGl0c2VsZi4iLCAiTm8ganVkZ21lbnQsIGp1c3Qgb2JzZXJ2YXRpb24uIiwgIlJldHVybiB0byB0aGUgYnJlYXRoLiIsICJZb3UgYXJlIGhvbWUuIl0gfTxiciAvPgogIF07PC9wPgo8cD4gIC8vIERPTSBlbGVtZW50czxiciAvPgogIGNvbnN0IHZpZGVvVGFiQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZGVvVGFiQnRuJyk7PGJyIC8+CiAgY29uc3QgYXVkaW9UYWJCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXVkaW9UYWJCdG4nKTs8YnIgLz4KICBjb25zdCB2aWRlb1BsYXllckRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aWRlb1BsYXllcicpOzxiciAvPgogIGNvbnN0IGF1ZGlvUGxheWVyRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvUGxheWVyJyk7PGJyIC8+CiAgY29uc3QgZXBpc29kZUdyaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXBpc29kZUdyaWQnKTs8YnIgLz4KICBjb25zdCBseXJpY3NCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbHlyaWNzQm94Jyk7PGJyIC8+CiAgY29uc3QgY3VycmVudFRpdGxlU3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjdXJyZW50VGl0bGUnKTs8L3A+CjxwPiAgLy8gVmlkZW8gZWxlbWVudHM8YnIgLz4KICBjb25zdCB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluVmlkZW8nKTs8YnIgLz4KICBjb25zdCB2aWRlb1BsYXlCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmlkZW9QbGF5QnRuJyk7PGJyIC8+CiAgY29uc3QgdmlkZW9Qcm9ncmVzc0JhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aWRlb1Byb2dyZXNzQmFyJyk7PGJyIC8+CiAgY29uc3QgdmlkZW9Qcm9ncmVzc0ZpbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmlkZW9Qcm9ncmVzc0ZpbGwnKTs8YnIgLz4KICBjb25zdCB2aWRlb1RpbWVTcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZGVvVGltZScpOzxiciAvPgogIGNvbnN0IHZpZGVvTXV0ZUJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aWRlb011dGVCdG4nKTs8YnIgLz4KICBjb25zdCBmdWxsc2NyZWVuQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Z1bGxzY3JlZW5CdG4nKTs8L3A+CjxwPiAgLy8gQXVkaW8gZWxlbWVudHM8YnIgLz4KICBjb25zdCBhdWRpbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdoaWRkZW5BdWRpbycpOzxiciAvPgogIGNvbnN0IGF1ZGlvUGxheVBhdXNlQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvUGxheVBhdXNlQnRuJyk7PGJyIC8+CiAgY29uc3QgYXVkaW9QbGF5SWNvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb1BsYXlJY29uJyk7PGJyIC8+CiAgY29uc3QgYXVkaW9Qcm9ncmVzc0JhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb1Byb2dyZXNzQmFyJyk7PGJyIC8+CiAgY29uc3QgYXVkaW9Qcm9ncmVzc0ZpbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXVkaW9Qcm9ncmVzc0ZpbGwnKTs8YnIgLz4KICBjb25zdCBhdWRpb0N1cnJlbnRTcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvQ3VycmVudCcpOzxiciAvPgogIGNvbnN0IGF1ZGlvRHVyYXRpb25TcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvRHVyYXRpb24nKTs8YnIgLz4KICBjb25zdCBhdWRpb1ByZXZCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXVkaW9QcmV2QnRuJyk7PGJyIC8+CiAgY29uc3QgYXVkaW9OZXh0QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvTmV4dEJ0bicpOzxiciAvPgogIGNvbnN0IGF1ZGlvVm9sdW1lU2xpZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvVm9sdW1lJyk7PC9wPgo8cD4gIGxldCBhY3RpdmVUYWIgPSAndmlkZW8nOzxiciAvPgogIGxldCBpc1ZpZGVvUGxheWluZyA9IGZhbHNlOzxiciAvPgogIGxldCBpc0F1ZGlvUGxheWluZyA9IGZhbHNlOzxiciAvPgogIGxldCBjdXJyZW50VmlkZW9JbmRleCA9IGVwaXNvZGVzLmZpbmRJbmRleChlID0+IGUudHlwZSA9PT0gJ3ZpZGVvJyk7PGJyIC8+CiAgbGV0IGN1cnJlbnRBdWRpb0luZGV4ID0gZXBpc29kZXMuZmluZEluZGV4KGUgPT4gZS50eXBlID09PSAnYXVkaW8nKTs8YnIgLz4KICBsZXQgY3VycmVudEx5cmljcyA9IFtdOzxiciAvPgogIGxldCBseXJpY3NJbnRlcnZhbCA9IG51bGw7PC9wPgo8cD4gIC8vIEx5cmljcyBzeW5jIHNpbXVsYXRpb24gKGJhc2VkIG9uIHRpbWUpPGJyIC8+CiAgZnVuY3Rpb24gc3RhcnRMeXJpY3NTeW5jKGR1cmF0aW9uU2VjLCBseXJpY3NBcnJheSwgbWVkaWFFbGVtZW50KSB7PGJyIC8+CiAgICBpZiAobHlyaWNzSW50ZXJ2YWwpIGNsZWFySW50ZXJ2YWwobHlyaWNzSW50ZXJ2YWwpOzxiciAvPgogICAgY3VycmVudEx5cmljcyA9IGx5cmljc0FycmF5OzxiciAvPgogICAgcmVuZGVyTHlyaWNzKC0xKTs8YnIgLz4KICAgIGNvbnN0IGxpbmVEdXJhdGlvbiA9IGR1cmF0aW9uU2VjIC8gbHlyaWNzQXJyYXkubGVuZ3RoOzxiciAvPgogICAgbGV0IGxhc3RJbmRleCA9IC0xOzxiciAvPgogICAgbHlyaWNzSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7PGJyIC8+CiAgICAgIGlmICghbWVkaWFFbGVtZW50IHx8IG1lZGlhRWxlbWVudC5wYXVzZWQgfHwgIW1lZGlhRWxlbWVudC5jdXJyZW50VGltZSkgcmV0dXJuOzxiciAvPgogICAgICBjb25zdCBjdXJyZW50VGltZSA9IG1lZGlhRWxlbWVudC5jdXJyZW50VGltZTs8YnIgLz4KICAgICAgY29uc3QgaW5kZXggPSBNYXRoLm1pbihNYXRoLmZsb29yKGN1cnJlbnRUaW1lIC8gbGluZUR1cmF0aW9uKSwgbHlyaWNzQXJyYXkubGVuZ3RoIC0gMSk7PGJyIC8+CiAgICAgIGlmIChpbmRleCAhPT0gbGFzdEluZGV4KSB7PGJyIC8+CiAgICAgICAgbGFzdEluZGV4ID0gaW5kZXg7PGJyIC8+CiAgICAgICAgcmVuZGVyTHlyaWNzKGluZGV4KTs8YnIgLz4KICAgICAgICBjb25zdCBhY3RpdmVMaW5lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmx5cmljcy1saW5lLmFjdGl2ZScpOzxiciAvPgogICAgICAgIGlmIChhY3RpdmVMaW5lKSBhY3RpdmVMaW5lLnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7PGJyIC8+CiAgICAgIH08YnIgLz4KICAgIH0sIDIwMCk7PGJyIC8+CiAgfTwvcD4KPHA+ICBmdW5jdGlvbiBzdG9wTHlyaWNzU3luYygpIHs8YnIgLz4KICAgIGlmIChseXJpY3NJbnRlcnZhbCkgeyBjbGVhckludGVydmFsKGx5cmljc0ludGVydmFsKTsgbHlyaWNzSW50ZXJ2YWwgPSBudWxsOyB9PGJyIC8+CiAgfTwvcD4KPHA+ICBmdW5jdGlvbiByZW5kZXJMeXJpY3MoYWN0aXZlSW5kZXgpIHs8YnIgLz4KICAgIGlmICghY3VycmVudEx5cmljcy5sZW5ndGgpIHs8YnIgLz4KICAgICAgbHlyaWNzQm94LmlubmVySFRNTCA9ICc8L3A+CjxkaXYgY2xhc3M9Imx5cmljcy1saW5lIj7inKggTm8gbHlyaWNzIGF2YWlsYWJsZSBmb3IgdGhpcyBlcGlzb2RlLi4uPC9kaXY+CjxwPic7PGJyIC8+CiAgICAgIHJldHVybjs8YnIgLz4KICAgIH08YnIgLz4KICAgIGx5cmljc0JveC5pbm5lckhUTUwgPSBjdXJyZW50THlyaWNzLm1hcCgobGluZSwgaSkgPT48YnIgLz4KICAgICAgYDwvcD4KPGRpdiBjbGFzcz0ibHlyaWNzLWxpbmUgJHtpID09PSBhY3RpdmVJbmRleCA\/ICdhY3RpdmUnIDogJyd9Ij4ke2xpbmV9PC9kaXY+CjxwPmA8YnIgLz4KICAgICkuam9pbignJyk7PGJyIC8+CiAgfTwvcD4KPHA+ICAvLyBWaWRlbyBmdW5jdGlvbnM8YnIgLz4KICBmdW5jdGlvbiBsb2FkVmlkZW9FcGlzb2RlKGluZGV4KSB7PGJyIC8+CiAgICBjb25zdCBlcCA9IGVwaXNvZGVzW2luZGV4XTs8YnIgLz4KICAgIGlmICghZXAgfHwgZXAudHlwZSAhPT0gJ3ZpZGVvJykgcmV0dXJuOzxiciAvPgogICAgY3VycmVudFZpZGVvSW5kZXggPSBpbmRleDs8YnIgLz4KICAgIHZpZGVvLnNyYyA9IGVwLnNyYzs8YnIgLz4KICAgIHZpZGVvLmxvYWQoKTs8YnIgLz4KICAgIGN1cnJlbnRUaXRsZVNwYW4udGV4dENvbnRlbnQgPSBlcC50aXRsZTs8YnIgLz4KICAgIGN1cnJlbnRMeXJpY3MgPSBlcC5seXJpY3MgfHwgWyJObyBseXJpY3MgZm9yIHRoaXMgZXBpc29kZSJdOzxiciAvPgogICAgcmVuZGVyTHlyaWNzKC0xKTs8YnIgLz4KICAgIHN0b3BMeXJpY3NTeW5jKCk7PGJyIC8+CiAgICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsICgpID0+IHs8YnIgLz4KICAgICAgY29uc3QgZHVyYXRpb25TZWMgPSB2aWRlby5kdXJhdGlvbjs8YnIgLz4KICAgICAgaWYgKGR1cmF0aW9uU2VjICYmIGVwLmx5cmljcykgc3RhcnRMeXJpY3NTeW5jKGR1cmF0aW9uU2VjLCBlcC5seXJpY3MsIHZpZGVvKTs8YnIgLz4KICAgIH0sIHsgb25jZTogdHJ1ZSB9KTs8YnIgLz4KICAgIGlmIChpc1ZpZGVvUGxheWluZykgdmlkZW8ucGxheSgpOzxiciAvPgogICAgdXBkYXRlVmlkZW9QbGF5SWNvbigpOzxiciAvPgogICAgcmVuZGVyRXBpc29kZXMoJ3ZpZGVvJyk7PGJyIC8+CiAgfTwvcD4KPHA+ICBmdW5jdGlvbiB1cGRhdGVWaWRlb1BsYXlJY29uKCkgezxiciAvPgogICAgY29uc3QgaWNvbiA9IHZpZGVvUGxheUJ0bi5xdWVyeVNlbGVjdG9yKCdpJyk7PGJyIC8+CiAgICBpY29uLmNsYXNzTmFtZSA9IGlzVmlkZW9QbGF5aW5nID8gJ2ZhcyBmYS1wYXVzZScgOiAnZmFzIGZhLXBsYXknOzxiciAvPgogIH08L3A+CjxwPiAgZnVuY3Rpb24gdG9nZ2xlVmlkZW9QbGF5KCkgezxiciAvPgogICAgaWYgKHZpZGVvLnBhdXNlZCkgeyB2aWRlby5wbGF5KCk7IGlzVmlkZW9QbGF5aW5nID0gdHJ1ZTsgfTxiciAvPgogICAgZWxzZSB7IHZpZGVvLnBhdXNlKCk7IGlzVmlkZW9QbGF5aW5nID0gZmFsc2U7IHN0b3BMeXJpY3NTeW5jKCk7IH08YnIgLz4KICAgIHVwZGF0ZVZpZGVvUGxheUljb24oKTs8YnIgLz4KICB9PC9wPgo8cD4gIGZ1bmN0aW9uIHVwZGF0ZVZpZGVvUHJvZ3Jlc3MoKSB7PGJyIC8+CiAgICBpZiAodmlkZW8uZHVyYXRpb24gJiYgIWlzTmFOKHZpZGVvLmR1cmF0aW9uKSkgezxiciAvPgogICAgICBjb25zdCBwZXJjZW50ID0gKHZpZGVvLmN1cnJlbnRUaW1lIC8gdmlkZW8uZHVyYXRpb24pICogMTAwOzxiciAvPgogICAgICB2aWRlb1Byb2dyZXNzRmlsbC5zdHlsZS53aWR0aCA9IGAke3BlcmNlbnR9JWA7PGJyIC8+CiAgICAgIHZpZGVvVGltZVNwYW4udGV4dENvbnRlbnQgPSBgJHtmb3JtYXRUaW1lKHZpZGVvLmN1cnJlbnRUaW1lKX0gLyAke2Zvcm1hdFRpbWUodmlkZW8uZHVyYXRpb24pfWA7PGJyIC8+CiAgICB9PGJyIC8+CiAgfTwvcD4KPHA+ICAvLyBBdWRpbyBmdW5jdGlvbnM8YnIgLz4KICBmdW5jdGlvbiBsb2FkQXVkaW9FcGlzb2RlKGluZGV4KSB7PGJyIC8+CiAgICBjb25zdCBlcCA9IGVwaXNvZGVzW2luZGV4XTs8YnIgLz4KICAgIGlmICghZXAgfHwgZXAudHlwZSAhPT0gJ2F1ZGlvJykgcmV0dXJuOzxiciAvPgogICAgY3VycmVudEF1ZGlvSW5kZXggPSBpbmRleDs8YnIgLz4KICAgIGF1ZGlvLnNyYyA9IGVwLnNyYzs8YnIgLz4KICAgIGF1ZGlvLmxvYWQoKTs8YnIgLz4KICAgIGN1cnJlbnRUaXRsZVNwYW4udGV4dENvbnRlbnQgPSBlcC50aXRsZTs8YnIgLz4KICAgIGN1cnJlbnRMeXJpY3MgPSBlcC5seXJpY3MgfHwgWyJObyBseXJpY3MgZm9yIHRoaXMgZXBpc29kZSJdOzxiciAvPgogICAgcmVuZGVyTHlyaWNzKC0xKTs8YnIgLz4KICAgIHN0b3BMeXJpY3NTeW5jKCk7PGJyIC8+CiAgICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdsb2FkZWRtZXRhZGF0YScsICgpID0+IHs8YnIgLz4KICAgICAgY29uc3QgZHVyYXRpb25TZWMgPSBhdWRpby5kdXJhdGlvbjs8YnIgLz4KICAgICAgaWYgKGR1cmF0aW9uU2VjICYmIGVwLmx5cmljcykgc3RhcnRMeXJpY3NTeW5jKGR1cmF0aW9uU2VjLCBlcC5seXJpY3MsIGF1ZGlvKTs8YnIgLz4KICAgIH0sIHsgb25jZTogdHJ1ZSB9KTs8YnIgLz4KICAgIGlmIChpc0F1ZGlvUGxheWluZykgYXVkaW8ucGxheSgpOzxiciAvPgogICAgdXBkYXRlQXVkaW9QbGF5SWNvbigpOzxiciAvPgogICAgcmVuZGVyRXBpc29kZXMoJ2F1ZGlvJyk7PGJyIC8+CiAgfTwvcD4KPHA+ICBmdW5jdGlvbiB1cGRhdGVBdWRpb1BsYXlJY29uKCkgezxiciAvPgogICAgYXVkaW9QbGF5SWNvbi5jbGFzc05hbWUgPSBpc0F1ZGlvUGxheWluZyA\/ICdmYXMgZmEtcGF1c2UnIDogJ2ZhcyBmYS1wbGF5Jzs8YnIgLz4KICB9PC9wPgo8cD4gIGZ1bmN0aW9uIHRvZ2dsZUF1ZGlvUGxheSgpIHs8YnIgLz4KICAgIGlmIChhdWRpby5wYXVzZWQpIHsgYXVkaW8ucGxheSgpOyBpc0F1ZGlvUGxheWluZyA9IHRydWU7IH08YnIgLz4KICAgIGVsc2UgeyBhdWRpby5wYXVzZSgpOyBpc0F1ZGlvUGxheWluZyA9IGZhbHNlOyBzdG9wTHlyaWNzU3luYygpOyB9PGJyIC8+CiAgICB1cGRhdGVBdWRpb1BsYXlJY29uKCk7PGJyIC8+CiAgfTwvcD4KPHA+ICBmdW5jdGlvbiB1cGRhdGVBdWRpb1Byb2dyZXNzKCkgezxiciAvPgogICAgaWYgKGF1ZGlvLmR1cmF0aW9uICYmICFpc05hTihhdWRpby5kdXJhdGlvbikpIHs8YnIgLz4KICAgICAgY29uc3QgcGVyY2VudCA9IChhdWRpby5jdXJyZW50VGltZSAvIGF1ZGlvLmR1cmF0aW9uKSAqIDEwMDs8YnIgLz4KICAgICAgYXVkaW9Qcm9ncmVzc0ZpbGwuc3R5bGUud2lkdGggPSBgJHtwZXJjZW50fSVgOzxiciAvPgogICAgICBhdWRpb0N1cnJlbnRTcGFuLnRleHRDb250ZW50ID0gZm9ybWF0VGltZShhdWRpby5jdXJyZW50VGltZSk7PGJyIC8+CiAgICAgIGF1ZGlvRHVyYXRpb25TcGFuLnRleHRDb250ZW50ID0gZm9ybWF0VGltZShhdWRpby5kdXJhdGlvbik7PGJyIC8+CiAgICB9PGJyIC8+CiAgfTwvcD4KPHA+ICBmdW5jdGlvbiBmb3JtYXRUaW1lKHNlY29uZHMpIHs8YnIgLz4KICAgIGlmIChpc05hTihzZWNvbmRzKSkgcmV0dXJuICIwOjAwIjs8YnIgLz4KICAgIGNvbnN0IG1pbnMgPSBNYXRoLmZsb29yKHNlY29uZHMgLyA2MCk7PGJyIC8+CiAgICBjb25zdCBzZWNzID0gTWF0aC5mbG9vcihzZWNvbmRzICUgNjApOzxiciAvPgogICAgcmV0dXJuIGAke21pbnN9OiR7c2VjcyA8IDEwID8gJzAnIDogJyd9JHtzZWNzfWA7CiAgfQoKICAvLyBSZW5kZXIgZXBpc29kZSBsaXN0CiAgZnVuY3Rpb24gcmVuZGVyRXBpc29kZXMoZmlsdGVyVHlwZSA9IG51bGwpIHsKICAgIGNvbnN0IGZpbHRlcmVkID0gZmlsdGVyVHlwZSA\/IGVwaXNvZGVzLmZpbHRlcihlcCA9PiBlcC50eXBlID09PSBmaWx0ZXJUeXBlKSA6IGVwaXNvZGVzOzxiciAvPgogICAgZXBpc29kZUdyaWQuaW5uZXJIVE1MID0gJyc7PGJyIC8+CiAgICBmaWx0ZXJlZC5mb3JFYWNoKChlcCwgaWR4KSA9PiB7PGJyIC8+CiAgICAgIGNvbnN0IG9yaWdpbmFsSWR4ID0gZXBpc29kZXMuZmluZEluZGV4KGUgPT4gZS50aXRsZSA9PT0gZXAudGl0bGUpOzxiciAvPgogICAgICBjb25zdCBpc0FjdGl2ZSA9IChmaWx0ZXJUeXBlID09PSAndmlkZW8nICYmIG9yaWdpbmFsSWR4ID09PSBjdXJyZW50VmlkZW9JbmRleCkgfHw8YnIgLz4KICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVyVHlwZSA9PT0gJ2F1ZGlvJyAmJiBvcmlnaW5hbElkeCA9PT0gY3VycmVudEF1ZGlvSW5kZXgpOzxiciAvPgogICAgICBjb25zdCBlcERpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOzxiciAvPgogICAgICBlcERpdi5jbGFzc05hbWUgPSBgZXBpc29kZS1pdGVtICR7aXNBY3RpdmUgPyAnYWN0aXZlJyA6ICcnfWA7PGJyIC8+CiAgICAgIGVwRGl2LmlubmVySFRNTCA9IGA8L3A+CjxkaXYgY2xhc3M9ImVwaXNvZGUtaWNvbiI+PGkgY2xhc3M9ImZhcyAke2VwLnR5cGUgPT09ICd2aWRlbycgPyAnZmEtdmlkZW8nIDogJ2ZhLWhlYWRwaG9uZXMnfSI+PC9pPjwvZGl2Pgo8ZGl2IGNsYXNzPSJlcGlzb2RlLWluZm8iPgo8aDQ+JHtlcC50aXRsZX08L2g0Pgo8cD4ke2VwLmRlc2N9PC9wPgo8L2Rpdj4KPHA+ICAgICAgYDs8YnIgLz4KICAgICAgZXBEaXYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7PGJyIC8+CiAgICAgICAgaWYgKGVwLnR5cGUgPT09ICd2aWRlbycpIHs8YnIgLz4KICAgICAgICAgIGlmIChhY3RpdmVUYWIgIT09ICd2aWRlbycpIHZpZGVvVGFiQnRuLmNsaWNrKCk7PGJyIC8+CiAgICAgICAgICBsb2FkVmlkZW9FcGlzb2RlKG9yaWdpbmFsSWR4KTs8YnIgLz4KICAgICAgICAgIGlmICghaXNWaWRlb1BsYXlpbmcpIHRvZ2dsZVZpZGVvUGxheSgpOzxiciAvPgogICAgICAgIH0gZWxzZSB7PGJyIC8+CiAgICAgICAgICBpZiAoYWN0aXZlVGFiICE9PSAnYXVkaW8nKSBhdWRpb1RhYkJ0bi5jbGljaygpOzxiciAvPgogICAgICAgICAgbG9hZEF1ZGlvRXBpc29kZShvcmlnaW5hbElkeCk7PGJyIC8+CiAgICAgICAgICBpZiAoIWlzQXVkaW9QbGF5aW5nKSB0b2dnbGVBdWRpb1BsYXkoKTs8YnIgLz4KICAgICAgICB9PGJyIC8+CiAgICAgIH0pOzxiciAvPgogICAgICBlcGlzb2RlR3JpZC5hcHBlbmRDaGlsZChlcERpdik7PGJyIC8+CiAgICB9KTs8YnIgLz4KICB9PC9wPgo8cD4gIC8vIFRhYiBzd2l0Y2hpbmc8YnIgLz4KICB2aWRlb1RhYkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHs8YnIgLz4KICAgIGFjdGl2ZVRhYiA9ICd2aWRlbyc7PGJyIC8+CiAgICB2aWRlb1RhYkJ0bi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTs8YnIgLz4KICAgIGF1ZGlvVGFiQnRuLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOzxiciAvPgogICAgdmlkZW9QbGF5ZXJEaXYuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7PGJyIC8+CiAgICBhdWRpb1BsYXllckRpdi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTs8YnIgLz4KICAgIHJlbmRlckVwaXNvZGVzKCd2aWRlbycpOzxiciAvPgogICAgaWYgKGN1cnJlbnRWaWRlb0luZGV4ID09PSAtMSkgY3VycmVudFZpZGVvSW5kZXggPSBlcGlzb2Rlcy5maW5kSW5kZXgoZSA9PiBlLnR5cGUgPT09ICd2aWRlbycpOzxiciAvPgogICAgaWYgKGN1cnJlbnRWaWRlb0luZGV4ICE9PSAtMSkgbG9hZFZpZGVvRXBpc29kZShjdXJyZW50VmlkZW9JbmRleCk7PGJyIC8+CiAgICBzdG9wTHlyaWNzU3luYygpOzxiciAvPgogIH0pOzwvcD4KPHA+ICBhdWRpb1RhYkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHs8YnIgLz4KICAgIGFjdGl2ZVRhYiA9ICdhdWRpbyc7PGJyIC8+CiAgICBhdWRpb1RhYkJ0bi5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTs8YnIgLz4KICAgIHZpZGVvVGFiQnRuLmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpOzxiciAvPgogICAgYXVkaW9QbGF5ZXJEaXYuY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7PGJyIC8+CiAgICB2aWRlb1BsYXllckRpdi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTs8YnIgLz4KICAgIHJlbmRlckVwaXNvZGVzKCdhdWRpbycpOzxiciAvPgogICAgaWYgKGN1cnJlbnRBdWRpb0luZGV4ID09PSAtMSkgY3VycmVudEF1ZGlvSW5kZXggPSBlcGlzb2Rlcy5maW5kSW5kZXgoZSA9PiBlLnR5cGUgPT09ICdhdWRpbycpOzxiciAvPgogICAgaWYgKGN1cnJlbnRBdWRpb0luZGV4ICE9PSAtMSkgbG9hZEF1ZGlvRXBpc29kZShjdXJyZW50QXVkaW9JbmRleCk7PGJyIC8+CiAgICBzdG9wTHlyaWNzU3luYygpOzxiciAvPgogIH0pOzwvcD4KPHA+ICAvLyBWaWRlbyBldmVudCBsaXN0ZW5lcnM8YnIgLz4KICB2aWRlb1BsYXlCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0b2dnbGVWaWRlb1BsYXkpOzxiciAvPgogIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCB1cGRhdGVWaWRlb1Byb2dyZXNzKTs8YnIgLz4KICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCdwbGF5JywgKCkgPT4geyBpc1ZpZGVvUGxheWluZyA9IHRydWU7IHVwZGF0ZVZpZGVvUGxheUljb24oKTsgfSk7PGJyIC8+CiAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGF1c2UnLCAoKSA9PiB7IGlzVmlkZW9QbGF5aW5nID0gZmFsc2U7IHVwZGF0ZVZpZGVvUGxheUljb24oKTsgc3RvcEx5cmljc1N5bmMoKTsgfSk7PGJyIC8+CiAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignZW5kZWQnLCAoKSA9PiB7IGlzVmlkZW9QbGF5aW5nID0gZmFsc2U7IHVwZGF0ZVZpZGVvUGxheUljb24oKTsgc3RvcEx5cmljc1N5bmMoKTsgfSk7PGJyIC8+CiAgdmlkZW9Qcm9ncmVzc0Jhci5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChlKSA9PiB7PGJyIC8+CiAgICBjb25zdCByZWN0ID0gdmlkZW9Qcm9ncmVzc0Jhci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTs8YnIgLz4KICAgIGNvbnN0IHBlcmNlbnQgPSAoZS5jbGllbnRYIC0gcmVjdC5sZWZ0KSAvIHJlY3Qud2lkdGg7PGJyIC8+CiAgICBpZiAodmlkZW8uZHVyYXRpb24pIHZpZGVvLmN1cnJlbnRUaW1lID0gcGVyY2VudCAqIHZpZGVvLmR1cmF0aW9uOzxiciAvPgogIH0pOzxiciAvPgogIHZpZGVvTXV0ZUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHs8YnIgLz4KICAgIHZpZGVvLm11dGVkID0gIXZpZGVvLm11dGVkOzxiciAvPgogICAgdmlkZW9NdXRlQnRuLmlubmVySFRNTCA9IHZpZGVvLm11dGVkID8gJzxpIGNsYXNzPSJmYXMgZmEtdm9sdW1lLW11dGUiPjwvaT4nIDogJzxpIGNsYXNzPSJmYXMgZmEtdm9sdW1lLXVwIj48L2k+Jzs8YnIgLz4KICB9KTs8L3A+CjxwPiAgLy8gRnVsbHNjcmVlbjxiciAvPgogIGZ1bGxzY3JlZW5CdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7PGJyIC8+CiAgICBjb25zdCB3cmFwcGVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnZpZGVvLXdyYXBwZXInKTs8YnIgLz4KICAgIGlmICghZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnQpIHdyYXBwZXIucmVxdWVzdEZ1bGxzY3JlZW4oKS5jYXRjaChlcnIgPT4gYWxlcnQoIkZ1bGxzY3JlZW4gZXJyb3IiKSk7PGJyIC8+CiAgICBlbHNlIGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKCk7PGJyIC8+CiAgfSk7PC9wPgo8cD4gIC8vIEF1ZGlvIGV2ZW50IGxpc3RlbmVyczxiciAvPgogIGF1ZGlvUGxheVBhdXNlQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdG9nZ2xlQXVkaW9QbGF5KTs8YnIgLz4KICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdXBkYXRlQXVkaW9Qcm9ncmVzcyk7PGJyIC8+CiAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsICgpID0+IHsgaXNBdWRpb1BsYXlpbmcgPSB0cnVlOyB1cGRhdGVBdWRpb1BsYXlJY29uKCk7IH0pOzxiciAvPgogIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgKCkgPT4geyBpc0F1ZGlvUGxheWluZyA9IGZhbHNlOyB1cGRhdGVBdWRpb1BsYXlJY29uKCk7IHN0b3BMeXJpY3NTeW5jKCk7IH0pOzxiciAvPgogIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgKCkgPT4geyBpc0F1ZGlvUGxheWluZyA9IGZhbHNlOyB1cGRhdGVBdWRpb1BsYXlJY29uKCk7IHN0b3BMeXJpY3NTeW5jKCk7IH0pOzxiciAvPgogIGF1ZGlvUHJvZ3Jlc3NCYXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gezxiciAvPgogICAgY29uc3QgcmVjdCA9IGF1ZGlvUHJvZ3Jlc3NCYXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7PGJyIC8+CiAgICBjb25zdCBwZXJjZW50ID0gKGUuY2xpZW50WCAtIHJlY3QubGVmdCkgLyByZWN0LndpZHRoOzxiciAvPgogICAgaWYgKGF1ZGlvLmR1cmF0aW9uKSBhdWRpby5jdXJyZW50VGltZSA9IHBlcmNlbnQgKiBhdWRpby5kdXJhdGlvbjs8YnIgLz4KICB9KTs8YnIgLz4KICBhdWRpb1ZvbHVtZVNsaWRlci5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIChlKSA9PiBhdWRpby52b2x1bWUgPSBlLnRhcmdldC52YWx1ZSk7PGJyIC8+CiAgYXVkaW9QcmV2QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gezxiciAvPgogICAgY29uc3QgYXVkaW9FcGlzb2RlcyA9IGVwaXNvZGVzLm1hcCgoZXAsIGlkeCkgPT4gKHsgdHlwZTogZXAudHlwZSwgaWR4IH0pKS5maWx0ZXIoZSA9PiBlLnR5cGUgPT09ICdhdWRpbycpOzxiciAvPgogICAgY29uc3QgcG9zID0gYXVkaW9FcGlzb2Rlcy5maW5kSW5kZXgoZSA9PiBlLmlkeCA9PT0gY3VycmVudEF1ZGlvSW5kZXgpOzxiciAvPgogICAgaWYgKHBvcyA+IDApIGxvYWRBdWRpb0VwaXNvZGUoYXVkaW9FcGlzb2Rlc1twb3MgLSAxXS5pZHgpOzxiciAvPgogICAgaWYgKGlzQXVkaW9QbGF5aW5nKSBhdWRpby5wbGF5KCk7PGJyIC8+CiAgfSk7PGJyIC8+CiAgYXVkaW9OZXh0QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gezxiciAvPgogICAgY29uc3QgYXVkaW9FcGlzb2RlcyA9IGVwaXNvZGVzLm1hcCgoZXAsIGlkeCkgPT4gKHsgdHlwZTogZXAudHlwZSwgaWR4IH0pKS5maWx0ZXIoZSA9PiBlLnR5cGUgPT09ICdhdWRpbycpOzxiciAvPgogICAgY29uc3QgcG9zID0gYXVkaW9FcGlzb2Rlcy5maW5kSW5kZXgoZSA9PiBlLmlkeCA9PT0gY3VycmVudEF1ZGlvSW5kZXgpOzxiciAvPgogICAgaWYgKHBvcyA8IGF1ZGlvRXBpc29kZXMubGVuZ3RoIC0gMSkgbG9hZEF1ZGlvRXBpc29kZShhdWRpb0VwaXNvZGVzW3BvcyArIDFdLmlkeCk7CiAgICBpZiAoaXNBdWRpb1BsYXlpbmcpIGF1ZGlvLnBsYXkoKTsKICB9KTsKCiAgLy8gQmFjayBidXR0b24KICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFja0J0bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gezxiciAvPgogICAgaWYgKGRvY3VtZW50LnJlZmVycmVyICYmIGRvY3VtZW50LnJlZmVycmVyLmluY2x1ZGVzKHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSkpIHdpbmRvdy5oaXN0b3J5LmJhY2soKTs8YnIgLz4KICAgIGVsc2UgYWxlcnQoIuKcqCBSZXR1cm4gdG8gbWFpbiBwYWdlIik7PGJyIC8+CiAgfSk7PC9wPgo8cD4gIC8vIEluaXRpYWxpemU8YnIgLz4KICBjb25zdCBmaXJzdFZpZGVvID0gZXBpc29kZXMuZmluZEluZGV4KGUgPT4gZS50eXBlID09PSAndmlkZW8nKTs8YnIgLz4KICBjb25zdCBmaXJzdEF1ZGlvID0gZXBpc29kZXMuZmluZEluZGV4KGUgPT4gZS50eXBlID09PSAnYXVkaW8nKTs8YnIgLz4KICBpZiAoZmlyc3RWaWRlbyAhPT0gLTEpIGxvYWRWaWRlb0VwaXNvZGUoZmlyc3RWaWRlbyk7PGJyIC8+CiAgaWYgKGZpcnN0QXVkaW8gIT09IC0xKSBsb2FkQXVkaW9FcGlzb2RlKGZpcnN0QXVkaW8pOzxiciAvPgogIHJlbmRlckVwaXNvZGVzKCd2aWRlbycpOzxiciAvPgogIGF1ZGlvLnZvbHVtZSA9IDAuNzs8YnIgLz4KICBhdWRpb1ZvbHVtZVNsaWRlci52YWx1ZSA9IDAuNzs8YnIgLz4KPC9zY3JpcHQ+PGJyIC8+CjwvYm9keT48YnIgLz4KPC9odG1sPjwvcD53DWNvcmUvZnJlZWZvcm13xOMBPHA+PCFET0NUWVBFIGh0bWw+PGJyIC8+CjxodG1sIGxhbmc9ImVuIj48YnIgLz4KPGhlYWQ+PGJyIC8+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij48YnIgLz4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIHVzZXItc2NhbGFibGU9eWVzIj48YnIgLz4KPHRpdGxlPlBoaWxvc29waHkgUG9kY2FzdCB8IExpdmUgTHlyaWNzICYgRnVsbHNjcmVlbjwvdGl0bGU+PC9wPgo8cD48IS0tIEdvb2dsZSBGb250cyArIEljb25zIC0tPgo8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI\/ZmFtaWx5PUludGVyOm9wc3osd2dodEAxNC4uMzIsMzAwOzE0Li4zMiw0MDA7MTQuLjMyLDUwMDsxNC4uMzIsNjAwOzE0Li4zMiw3MDAmZmFtaWx5PUNvcm1vcmFudCtHYXJhbW9uZDppdGFsLHdnaHRAMCw0MDA7MCw1MDA7MCw2MDA7MSw0MDA7MSw1MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2ZvbnQtYXdlc29tZS82LjAuMC1iZXRhMy9jc3MvYWxsLm1pbi5jc3MiPgo8c3R5bGU+CiAgKiB7PGJyIC8+CiAgICBtYXJnaW46IDA7PGJyIC8+CiAgICBwYWRkaW5nOiAwOzxiciAvPgogICAgYm94LXNpemluZzogYm9yZGVyLWJveDs8YnIgLz4KICB9PC9wPgo8cD4gIGJvZHkgezxiciAvPgogICAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7PGJyIC8+CiAgICBtaW4taGVpZ2h0OiAxMDB2aDs8YnIgLz4KICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsICMwZjBmMWEgMCUsICMxYTFhMmUgNTAlLCAjMGEwYTE0IDEwMCUpOzxiciAvPgogICAgZGlzcGxheTogZmxleDs8YnIgLz4KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7PGJyIC8+CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjs8YnIgLz4KICAgIHBhZGRpbmc6IDJyZW07PGJyIC8+CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7PGJyIC8+CiAgICBvdmVyZmxvdy14OiBoaWRkZW47PGJyIC8+CiAgfTwvcD4KPHA+ICAvKiBhbmltYXRlZCBiYWNrZ3JvdW5kICovPGJyIC8+CiAgYm9keTo6YmVmb3JlIHs8YnIgLz4KICAgIGNvbnRlbnQ6ICcnOzxiciAvPgogICAgcG9zaXRpb246IGZpeGVkOzxiciAvPgogICAgdG9wOiAwOzxiciAvPgogICAgbGVmdDogMDs8YnIgLz4KICAgIHdpZHRoOiAxMDAlOzxiciAvPgogICAgaGVpZ2h0OiAxMDAlOzxiciAvPgogICAgYmFja2dyb3VuZC1pbWFnZTogcmFkaWFsLWdyYWRpZW50KGNpcmNsZSBhdCAzMCUgNDAlLCByZ2JhKDIxMiwxNzUsNTUsMC4wOCkgMXB4LCB0cmFuc3BhcmVudCAxcHgpOzxiciAvPgogICAgYmFja2dyb3VuZC1zaXplOiA0NXB4IDQ1cHg7PGJyIC8+CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTs8YnIgLz4KICAgIGFuaW1hdGlvbjogYmdNb3ZlIDMwcyBsaW5lYXIgaW5maW5pdGU7PGJyIC8+CiAgICB6LWluZGV4OiAwOzxiciAvPgogIH08L3A+CjxwPiAgQGtleWZyYW1lcyBiZ01vdmUgezxiciAvPgogICAgMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIDA7IH08YnIgLz4KICAgIDEwMCUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4MHB4IDgwcHg7IH08YnIgLz4KICB9PC9wPgo8cD4gIC8qIG1haW4gY29udGFpbmVyICovPGJyIC8+CiAgLnBvZGNhc3QtY29udGFpbmVyIHs8YnIgLz4KICAgIG1heC13aWR0aDogOTAwcHg7PGJyIC8+CiAgICB3aWR0aDogMTAwJTs8YnIgLz4KICAgIGJhY2tncm91bmQ6IHJnYmEoMjAsIDI1LCA0NSwgMC45KTs8YnIgLz4KICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxNnB4KTs8YnIgLz4KICAgIGJvcmRlci1yYWRpdXM6IDJyZW07PGJyIC8+CiAgICBib3gtc2hhZG93OiAwIDM1cHggNjBweCAtMjBweCByZ2JhKDAsIDAsIDAsIDAuNSksIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsMjU1LDI1NSwwLjA1KTs8YnIgLz4KICAgIG92ZXJmbG93OiBoaWRkZW47PGJyIC8+CiAgICB0cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlOzxiciAvPgogICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMTIsIDE3NSwgNTUsIDAuMjUpOzxiciAvPgogICAgei1pbmRleDogMjs8YnIgLz4KICB9PC9wPgo8cD4gIC8qIG1lZGlhIHRvZ2dsZSAqLzxiciAvPgogIC5tZWRpYS10b2dnbGUgezxiciAvPgogICAgZGlzcGxheTogZmxleDs8YnIgLz4KICAgIGdhcDogMXJlbTs8YnIgLz4KICAgIHBhZGRpbmc6IDEuMnJlbSAxLjVyZW0gMDs8YnIgLz4KICB9PGJyIC8+CiAgLnRvZ2dsZS1idG4gezxiciAvPgogICAgZmxleDogMTs8YnIgLz4KICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4wNSk7PGJyIC8+CiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIxMiwxNzUsNTUsMC4zKTs8YnIgLz4KICAgIHBhZGRpbmc6IDAuN3JlbTs8YnIgLz4KICAgIGJvcmRlci1yYWRpdXM6IDUwcHg7PGJyIC8+CiAgICBmb250LXdlaWdodDogNjAwOzxiciAvPgogICAgZm9udC1zaXplOiAwLjlyZW07PGJyIC8+CiAgICBjdXJzb3I6IHBvaW50ZXI7PGJyIC8+CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zczs8YnIgLz4KICAgIGNvbG9yOiAjY2NjOzxiciAvPgogICAgZGlzcGxheTogZmxleDs8YnIgLz4KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7PGJyIC8+CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjs8YnIgLz4KICAgIGdhcDogOHB4OzxiciAvPgogIH08YnIgLz4KICAudG9nZ2xlLWJ0bi5hY3RpdmUgezxiciAvPgogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDk1ZGVnLCAjZDRhZjM3LCAjZjBjNjc0KTs8YnIgLz4KICAgIGNvbG9yOiAjMGYwZjFhOzxiciAvPgogICAgYm9yZGVyLWNvbG9yOiAjZDRhZjM3OzxiciAvPgogICAgYm94LXNoYWRvdzogMCA1cHggMTVweCByZ2JhKDIxMiwxNzUsNTUsMC4zKTs8YnIgLz4KICB9PC9wPgo8cD4gIC8qIHZpZGVvIHBsYXllciAqLzxiciAvPgogIC52aWRlby1wbGF5ZXIgezxiciAvPgogICAgcG9zaXRpb246IHJlbGF0aXZlOzxiciAvPgogICAgd2lkdGg6IDEwMCU7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiAjMDAwOzxiciAvPgogICAgZGlzcGxheTogbm9uZTs8YnIgLz4KICB9PGJyIC8+CiAgLnZpZGVvLXBsYXllci5hY3RpdmUgezxiciAvPgogICAgZGlzcGxheTogYmxvY2s7PGJyIC8+CiAgfTxiciAvPgogIC52aWRlby13cmFwcGVyIHs8YnIgLz4KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTs8YnIgLz4KICB9PGJyIC8+CiAgLnZpZGVvLXdyYXBwZXIgdmlkZW8gezxiciAvPgogICAgd2lkdGg6IDEwMCU7PGJyIC8+CiAgICBoZWlnaHQ6IGF1dG87PGJyIC8+CiAgICBtYXgtaGVpZ2h0OiA0MDBweDs8YnIgLz4KICAgIG9iamVjdC1maXQ6IGNvdmVyOzxiciAvPgogICAgZGlzcGxheTogYmxvY2s7PGJyIC8+CiAgfTxiciAvPgogIC52aWRlby1jb250cm9scyB7PGJyIC8+CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7PGJyIC8+CiAgICBib3R0b206IDA7PGJyIC8+CiAgICBsZWZ0OiAwOzxiciAvPgogICAgcmlnaHQ6IDA7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDAsMCwwLDAuODUpLCB0cmFuc3BhcmVudCk7PGJyIC8+CiAgICBwYWRkaW5nOiAxcmVtOzxiciAvPgogICAgZGlzcGxheTogZmxleDs8YnIgLz4KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7PGJyIC8+CiAgICBnYXA6IDAuOHJlbTs8YnIgLz4KICAgIGZsZXgtd3JhcDogd3JhcDs8YnIgLz4KICAgIG9wYWNpdHk6IDA7PGJyIC8+CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3M7PGJyIC8+CiAgfTxiciAvPgogIC52aWRlby1wbGF5ZXI6aG92ZXIgLnZpZGVvLWNvbnRyb2xzIHs8YnIgLz4KICAgIG9wYWNpdHk6IDE7PGJyIC8+CiAgfTxiciAvPgogIC52aWRlby1jb250cm9scyBidXR0b24gezxiciAvPgogICAgYmFja2dyb3VuZDogcmdiYSgyMTIsMTc1LDU1LDAuOSk7PGJyIC8+CiAgICBib3JkZXI6IG5vbmU7PGJyIC8+CiAgICB3aWR0aDogMzZweDs8YnIgLz4KICAgIGhlaWdodDogMzZweDs8YnIgLz4KICAgIGJvcmRlci1yYWRpdXM6IDUwJTs8YnIgLz4KICAgIGN1cnNvcjogcG9pbnRlcjs8YnIgLz4KICAgIGNvbG9yOiAjMWExYTJlOzxiciAvPgogICAgdHJhbnNpdGlvbjogMC4yczs8YnIgLz4KICB9PGJyIC8+CiAgLnZpZGVvLWNvbnRyb2xzIGJ1dHRvbjpob3ZlciB7PGJyIC8+CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpOzxiciAvPgogICAgYmFja2dyb3VuZDogI2U4YzQ1YTs8YnIgLz4KICB9PGJyIC8+CiAgLnZpZGVvLXByb2dyZXNzIHs8YnIgLz4KICAgIGZsZXg6IDE7PGJyIC8+CiAgICBoZWlnaHQ6IDVweDs8YnIgLz4KICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4zKTs8YnIgLz4KICAgIGJvcmRlci1yYWRpdXM6IDVweDs8YnIgLz4KICAgIGN1cnNvcjogcG9pbnRlcjs8YnIgLz4KICB9PGJyIC8+CiAgLnZpZGVvLXByb2dyZXNzLWZpbGwgezxiciAvPgogICAgd2lkdGg6IDAlOzxiciAvPgogICAgaGVpZ2h0OiAxMDAlOzxiciAvPgogICAgYmFja2dyb3VuZDogI2Q0YWYzNzs8YnIgLz4KICAgIGJvcmRlci1yYWRpdXM6IDVweDs8YnIgLz4KICB9PGJyIC8+CiAgLnZpZGVvLXRpbWUgezxiciAvPgogICAgZm9udC1zaXplOiAwLjdyZW07PGJyIC8+CiAgICBjb2xvcjogd2hpdGU7PGJyIC8+CiAgfTxiciAvPgogIC5mdWxsc2NyZWVuLWJ0biB7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuNikgIWltcG9ydGFudDs8YnIgLz4KICAgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OzxiciAvPgogIH08L3A+CjxwPiAgLyogYXVkaW8gcGxheWVyICovPGJyIC8+CiAgLmF1ZGlvLXBsYXllciB7PGJyIC8+CiAgICBkaXNwbGF5OiBub25lOzxiciAvPgogICAgcGFkZGluZzogMS44cmVtOzxiciAvPgogIH08YnIgLz4KICAuYXVkaW8tcGxheWVyLmFjdGl2ZSB7PGJyIC8+CiAgICBkaXNwbGF5OiBibG9jazs8YnIgLz4KICB9PGJyIC8+CiAgLmVwaXNvZGUtYXJ0IHs8YnIgLz4KICAgIHRleHQtYWxpZ246IGNlbnRlcjs8YnIgLz4KICAgIG1hcmdpbi1ib3R0b206IDFyZW07PGJyIC8+CiAgfTxiciAvPgogIC5lcGlzb2RlLWFydCBpIHs8YnIgLz4KICAgIGZvbnQtc2l6ZTogM3JlbTs8YnIgLz4KICAgIGNvbG9yOiAjZDRhZjM3OzxiciAvPgogICAgYmFja2dyb3VuZDogcmdiYSgyMTIsMTc1LDU1LDAuMTUpOzxiciAvPgogICAgd2lkdGg6IDgwcHg7PGJyIC8+CiAgICBoZWlnaHQ6IDgwcHg7PGJyIC8+CiAgICBib3JkZXItcmFkaXVzOiA1MCU7PGJyIC8+CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDs8YnIgLz4KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7PGJyIC8+CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjs8YnIgLz4KICB9PGJyIC8+CiAgLmN1c3RvbS1hdWRpbyB7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuMyk7PGJyIC8+CiAgICBib3JkZXItcmFkaXVzOiAxLjVyZW07PGJyIC8+CiAgICBwYWRkaW5nOiAxcmVtOzxiciAvPgogIH08YnIgLz4KICAudGltZS1yb3cgezxiciAvPgogICAgZGlzcGxheTogZmxleDs8YnIgLz4KICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjs8YnIgLz4KICAgIGZvbnQtc2l6ZTogMC43cmVtOzxiciAvPgogICAgY29sb3I6ICNhYWE7PGJyIC8+CiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07PGJyIC8+CiAgfTxiciAvPgogIC5wcm9ncmVzcy1iYXIgezxiciAvPgogICAgd2lkdGg6IDEwMCU7PGJyIC8+CiAgICBoZWlnaHQ6IDVweDs8YnIgLz4KICAgIGJhY2tncm91bmQ6ICMzMzM7PGJyIC8+CiAgICBib3JkZXItcmFkaXVzOiAxMHB4OzxiciAvPgogICAgY3Vyc29yOiBwb2ludGVyOzxiciAvPgogICAgbWFyZ2luLWJvdHRvbTogMXJlbTs8YnIgLz4KICB9PGJyIC8+CiAgLnByb2dyZXNzLWZpbGwgezxiciAvPgogICAgd2lkdGg6IDAlOzxiciAvPgogICAgaGVpZ2h0OiAxMDAlOzxiciAvPgogICAgYmFja2dyb3VuZDogI2Q0YWYzNzs8YnIgLz4KICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7PGJyIC8+CiAgfTxiciAvPgogIC5hdWRpby1jb250cm9scyB7PGJyIC8+CiAgICBkaXNwbGF5OiBmbGV4OzxiciAvPgogICAgYWxpZ24taXRlbXM6IGNlbnRlcjs8YnIgLz4KICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOzxiciAvPgogICAgZ2FwOiAxLjVyZW07PGJyIC8+CiAgICBtYXJnaW4tdG9wOiAxcmVtOzxiciAvPgogIH08YnIgLz4KICAuYXVkaW8tY3RybCB7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiBub25lOzxiciAvPgogICAgYm9yZGVyOiBub25lOzxiciAvPgogICAgY29sb3I6ICNlZWU7PGJyIC8+CiAgICBmb250LXNpemU6IDEuMnJlbTs8YnIgLz4KICAgIGN1cnNvcjogcG9pbnRlcjs8YnIgLz4KICAgIHdpZHRoOiA0NHB4OzxiciAvPgogICAgaGVpZ2h0OiA0NHB4OzxiciAvPgogICAgYm9yZGVyLXJhZGl1czogNTAlOzxiciAvPgogICAgdHJhbnNpdGlvbjogMC4yczs8YnIgLz4KICB9PGJyIC8+CiAgLmF1ZGlvLWN0cmw6aG92ZXIgezxiciAvPgogICAgYmFja2dyb3VuZDogcmdiYSgyMTIsMTc1LDU1LDAuMik7PGJyIC8+CiAgfTxiciAvPgogIC5wbGF5LXBhdXNlIHs8YnIgLz4KICAgIGJhY2tncm91bmQ6ICNkNGFmMzc7PGJyIC8+CiAgICBjb2xvcjogIzFhMWEyZTs8YnIgLz4KICAgIHdpZHRoOiA1NnB4OzxiciAvPgogICAgaGVpZ2h0OiA1NnB4OzxiciAvPgogICAgZm9udC1zaXplOiAxLjRyZW07PGJyIC8+CiAgfTxiciAvPgogIC52b2x1bWUtcm93IHs8YnIgLz4KICAgIGRpc3BsYXk6IGZsZXg7PGJyIC8+CiAgICBhbGlnbi1pdGVtczogY2VudGVyOzxiciAvPgogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7PGJyIC8+CiAgICBnYXA6IDEwcHg7PGJyIC8+CiAgICBtYXJnaW4tdG9wOiAxcmVtOzxiciAvPgogIH08YnIgLz4KICBpbnB1dFt0eXBlPSJyYW5nZSJdIHs8YnIgLz4KICAgIHdpZHRoOiAxMDBweDs8YnIgLz4KICAgIGhlaWdodDogM3B4OzxiciAvPgogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOzxiciAvPgogICAgYmFja2dyb3VuZDogIzU1NTs8YnIgLz4KICB9PGJyIC8+CiAgaW5wdXRbdHlwZT0icmFuZ2UiXTo6LXdlYmtpdC1zbGlkZXItdGh1bWIgezxiciAvPgogICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOzxiciAvPgogICAgd2lkdGg6IDEycHg7PGJyIC8+CiAgICBoZWlnaHQ6IDEycHg7PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiAjZDRhZjM3OzxiciAvPgogICAgYm9yZGVyLXJhZGl1czogNTAlOzxiciAvPgogIH08L3A+CjxwPiAgLyogTElWRSBMWVJJQ1MgU0VDVElPTiAqLzxiciAvPgogIC5seXJpY3Mtc2VjdGlvbiB7PGJyIC8+CiAgICBwYWRkaW5nOiAxcmVtIDEuNXJlbTs8YnIgLz4KICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDIxMiwxNzUsNTUsMC4yKTs8YnIgLz4KICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC4yKTs8YnIgLz4KICB9PGJyIC8+CiAgLmx5cmljcy1oZWFkZXIgezxiciAvPgogICAgZGlzcGxheTogZmxleDs8YnIgLz4KICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjs8YnIgLz4KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7PGJyIC8+CiAgICBtYXJnaW4tYm90dG9tOiAwLjhyZW07PGJyIC8+CiAgICBjb2xvcjogI2Q0YWYzNzs8YnIgLz4KICAgIGZvbnQtc2l6ZTogMC44cmVtOzxiciAvPgogICAgZm9udC13ZWlnaHQ6IDUwMDs8YnIgLz4KICB9PGJyIC8+CiAgLmx5cmljcy1ib3ggezxiciAvPgogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjQpOzxiciAvPgogICAgYm9yZGVyLXJhZGl1czogMXJlbTs8YnIgLz4KICAgIHBhZGRpbmc6IDFyZW07PGJyIC8+CiAgICBoZWlnaHQ6IDE4MHB4OzxiciAvPgogICAgb3ZlcmZsb3cteTogYXV0bzs8YnIgLz4KICAgIGZvbnQtc2l6ZTogMC45cmVtOzxiciAvPgogICAgbGluZS1oZWlnaHQ6IDEuNjs8YnIgLz4KICAgIGNvbG9yOiAjZGRkOzxiciAvPgogICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7PGJyIC8+CiAgfTxiciAvPgogIC5seXJpY3MtbGluZSB7PGJyIC8+CiAgICBwYWRkaW5nOiA2cHggMTBweDs8YnIgLz4KICAgIG1hcmdpbjogNHB4IDA7PGJyIC8+CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OzxiciAvPgogICAgdHJhbnNpdGlvbjogYWxsIDAuMnM7PGJyIC8+CiAgICBjdXJzb3I6IGRlZmF1bHQ7PGJyIC8+CiAgfTxiciAvPgogIC5seXJpY3MtbGluZS5hY3RpdmUgezxiciAvPgogICAgYmFja2dyb3VuZDogcmdiYSgyMTIsMTc1LDU1LDAuMjUpOzxiciAvPgogICAgY29sb3I6ICNmMGQ4OTA7PGJyIC8+CiAgICBmb250LXdlaWdodDogNTAwOzxiciAvPgogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjAyKTs8YnIgLz4KICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgI2Q0YWYzNzs8YnIgLz4KICB9PGJyIC8+CiAgOjotd2Via2l0LXNjcm9sbGJhciB7PGJyIC8+CiAgICB3aWR0aDogNHB4OzxiciAvPgogIH08YnIgLz4KICA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHs8YnIgLz4KICAgIGJhY2tncm91bmQ6ICMyMjI7PGJyIC8+CiAgfTxiciAvPgogIDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgezxiciAvPgogICAgYmFja2dyb3VuZDogI2Q0YWYzNzs8YnIgLz4KICAgIGJvcmRlci1yYWRpdXM6IDVweDs8YnIgLz4KICB9PC9wPgo8cD4gIC8qIGVwaXNvZGUgbGlzdCAqLzxiciAvPgogIC5lcGlzb2RlLWxpc3QgezxiciAvPgogICAgcGFkZGluZzogMXJlbSAxLjVyZW0gMS41cmVtOzxiciAvPgogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjEyLDE3NSw1NSwwLjIpOzxiciAvPgogIH08YnIgLz4KICAuZXBpc29kZS1ncmlkIHs8YnIgLz4KICAgIGRpc3BsYXk6IGZsZXg7PGJyIC8+CiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOzxiciAvPgogICAgZ2FwOiAwLjdyZW07PGJyIC8+CiAgICBtYXJnaW4tdG9wOiAwLjhyZW07PGJyIC8+CiAgfTxiciAvPgogIC5lcGlzb2RlLWl0ZW0gezxiciAvPgogICAgZGlzcGxheTogZmxleDs8YnIgLz4KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7PGJyIC8+CiAgICBnYXA6IDFyZW07PGJyIC8+CiAgICBwYWRkaW5nOiAwLjdyZW07PGJyIC8+CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwyNTUsMjU1LDAuMDMpOzxiciAvPgogICAgYm9yZGVyLXJhZGl1czogMXJlbTs8YnIgLz4KICAgIGN1cnNvcjogcG9pbnRlcjs8YnIgLz4KICAgIHRyYW5zaXRpb246IGFsbCAwLjJzOzxiciAvPgogICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7PGJyIC8+CiAgfTxiciAvPgogIC5lcGlzb2RlLWl0ZW06aG92ZXIgezxiciAvPgogICAgYmFja2dyb3VuZDogcmdiYSgyMTIsMTc1LDU1LDAuMSk7PGJyIC8+CiAgICBib3JkZXItY29sb3I6IHJnYmEoMjEyLDE3NSw1NSwwLjMpOzxiciAvPgogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7PGJyIC8+CiAgfTxiciAvPgogIC5lcGlzb2RlLWl0ZW0uYWN0aXZlIHs8YnIgLz4KICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLDE3NSw1NSwwLjE1KTs8YnIgLz4KICAgIGJvcmRlci1jb2xvcjogI2Q0YWYzNzs8YnIgLz4KICB9PGJyIC8+CiAgLmVwaXNvZGUtaWNvbiB7PGJyIC8+CiAgICB3aWR0aDogNDVweDs8YnIgLz4KICAgIGhlaWdodDogNDVweDs8YnIgLz4KICAgIGJhY2tncm91bmQ6IHJnYmEoMjEyLDE3NSw1NSwwLjIpOzxiciAvPgogICAgYm9yZGVyLXJhZGl1czogNTAlOzxiciAvPgogICAgZGlzcGxheTogZmxleDs8YnIgLz4KICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7PGJyIC8+CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjs8YnIgLz4KICAgIGZvbnQtc2l6ZTogMS4ycmVtOzxiciAvPgogICAgY29sb3I6ICNkNGFmMzc7PGJyIC8+CiAgfTxiciAvPgogIC5lcGlzb2RlLWluZm8gezxiciAvPgogICAgZmxleDogMTs8YnIgLz4KICB9PGJyIC8+CiAgLmVwaXNvZGUtaW5mbyBoNCB7PGJyIC8+CiAgICBmb250LXNpemU6IDAuOTVyZW07PGJyIC8+CiAgICBtYXJnaW4tYm90dG9tOiAwLjJyZW07PGJyIC8+CiAgICBjb2xvcjogI2VlZTs8YnIgLz4KICB9PGJyIC8+CiAgLmVwaXNvZGUtaW5mbyBwIHs8YnIgLz4KICAgIGZvbnQtc2l6ZTogMC43cmVtOzxiciAvPgogICAgY29sb3I6ICNhYWE7PGJyIC8+CiAgfTwvcD4KPHA+ICAuYmFjay1saW5rIHs8YnIgLz4KICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OzxiciAvPgogICAgYWxpZ24taXRlbXM6IGNlbnRlcjs8YnIgLz4KICAgIGdhcDogOHB4OzxiciAvPgogICAgYmFja2dyb3VuZDogbm9uZTs8YnIgLz4KICAgIGJvcmRlcjogbm9uZTs8YnIgLz4KICAgIGNvbG9yOiAjYWFhOzxiciAvPgogICAgbWFyZ2luOiAwIDEuNXJlbSAxLjVyZW07PGJyIC8+CiAgICBjdXJzb3I6IHBvaW50ZXI7PGJyIC8+CiAgICB0cmFuc2l0aW9uOiAwLjJzOzxiciAvPgogIH08YnIgLz4KICAuYmFjay1saW5rOmhvdmVyIHs8YnIgLz4KICAgIGNvbG9yOiAjZDRhZjM3OzxiciAvPgogICAgZ2FwOiAxMnB4OzxiciAvPgogIH08YnIgLz4KICBmb290ZXIgezxiciAvPgogICAgdGV4dC1hbGlnbjogY2VudGVyOzxiciAvPgogICAgcGFkZGluZzogMXJlbTs8YnIgLz4KICAgIGZvbnQtc2l6ZTogMC43cmVtOzxiciAvPgogICAgY29sb3I6ICM2NjY7PGJyIC8+CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjA1KTs8YnIgLz4KICB9PC9wPgo8cD4gIEBtZWRpYSAobWF4LXdpZHRoOiA2NTBweCkgezxiciAvPgogICAgYm9keSB7IHBhZGRpbmc6IDFyZW07IH08YnIgLz4KICAgIC50b2dnbGUtYnRuIHsgZm9udC1zaXplOiAwLjdyZW07IHBhZGRpbmc6IDAuNXJlbTsgfTxiciAvPgogICAgLmx5cmljcy1ib3ggeyBoZWlnaHQ6IDE0MHB4OyBmb250LXNpemU6IDAuOHJlbTsgfTxiciAvPgogIH08YnIgLz4KPC9zdHlsZT4KPHA+PC9oZWFkPjxiciAvPgo8Ym9keT48L3A+CjxkaXYgY2xhc3M9InBvZGNhc3QtY29udGFpbmVyIj4KPGRpdiBjbGFzcz0ibWVkaWEtdG9nZ2xlIj4KICAgIDxidXR0b24gY2xhc3M9InRvZ2dsZS1idG4gYWN0aXZlIiBpZD0idmlkZW9UYWJCdG4iPjxpIGNsYXNzPSJmYXMgZmEtdmlkZW8iPjwvaT4gVmlkZW88L2J1dHRvbj48YnIgLz4KICAgIDxidXR0b24gY2xhc3M9InRvZ2dsZS1idG4iIGlkPSJhdWRpb1RhYkJ0biI+PGkgY2xhc3M9ImZhcyBmYS1oZWFkcGhvbmVzIj48L2k+IEF1ZGlvPC9idXR0b24+CiAgPC9kaXY+CjxwPiAgPCEtLSBWSURFTyBQTEFZRVIgLS0+PC9wPgo8ZGl2IGNsYXNzPSJ2aWRlby1wbGF5ZXIgYWN0aXZlIiBpZD0idmlkZW9QbGF5ZXIiPgo8ZGl2IGNsYXNzPSJ2aWRlby13cmFwcGVyIj4KICAgICAgPHZpZGVvIGlkPSJtYWluVmlkZW8iIHBvc3Rlcj0iaHR0cHM6Ly9pbWFnZXMucGV4ZWxzLmNvbS9waG90b3MvNzI2NDgwNy9wZXhlbHMtcGhvdG8tNzI2NDgwNy5qcGVnP2F1dG89Y29tcHJlc3MmY3M9dGlueXNyZ2Imdz04MDAiPjxzb3VyY2Ugc3JjPSIjIiB0eXBlPSJ2aWRlby9tcDQiPjwvdmlkZW8+PC9wPgo8ZGl2IGNsYXNzPSJ2aWRlby1jb250cm9scyI+CiAgICAgICAgPGJ1dHRvbiBpZD0idmlkZW9QbGF5QnRuIj48aSBjbGFzcz0iZmFzIGZhLXBsYXkiPjwvaT48L2J1dHRvbj48L3A+CjxkaXYgY2xhc3M9InZpZGVvLXByb2dyZXNzIiBpZD0idmlkZW9Qcm9ncmVzc0JhciI+CjxkaXYgY2xhc3M9InZpZGVvLXByb2dyZXNzLWZpbGwiIGlkPSJ2aWRlb1Byb2dyZXNzRmlsbCI+PC9kaXY+CjwvcD48L2Rpdj4KPHA+ICAgICAgICA8c3BhbiBjbGFzcz0idmlkZW8tdGltZSIgaWQ9InZpZGVvVGltZSI+MDowMCAvIDA6MDA8L3NwYW4+PGJyIC8+CiAgICAgICAgPGJ1dHRvbiBpZD0idmlkZW9NdXRlQnRuIj48aSBjbGFzcz0iZmFzIGZhLXZvbHVtZS11cCI+PC9pPjwvYnV0dG9uPjxiciAvPgogICAgICAgIDxidXR0b24gaWQ9ImZ1bGxzY3JlZW5CdG4iIGNsYXNzPSJmdWxsc2NyZWVuLWJ0biI+PGkgY2xhc3M9ImZhcyBmYS1leHBhbmQiPjwvaT48L2J1dHRvbj4KICAgICAgPC9kaXY+CjwvcD48L2Rpdj4KPC9wPjwvZGl2Pgo8cD4gIDwhLS0gQVVESU8gUExBWUVSIC0tPjwvcD4KPGRpdiBjbGFzcz0iYXVkaW8tcGxheWVyIiBpZD0iYXVkaW9QbGF5ZXIiPgo8ZGl2IGNsYXNzPSJlcGlzb2RlLWFydCI+PGkgY2xhc3M9ImZhcyBmYS1taWNyb3Bob25lLWFsdCI+PC9pPjwvZGl2Pgo8ZGl2IGNsYXNzPSJjdXN0b20tYXVkaW8iPgo8ZGl2IGNsYXNzPSJ0aW1lLXJvdyI+PHNwYW4gaWQ9ImF1ZGlvQ3VycmVudCI+MDowMDwvc3Bhbj48c3BhbiBpZD0iYXVkaW9EdXJhdGlvbiI+MDowMDwvc3Bhbj48L2Rpdj4KPGRpdiBjbGFzcz0icHJvZ3Jlc3MtYmFyIiBpZD0iYXVkaW9Qcm9ncmVzc0JhciI+CjxkaXYgY2xhc3M9InByb2dyZXNzLWZpbGwiIGlkPSJhdWRpb1Byb2dyZXNzRmlsbCI+PC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJhdWRpby1jb250cm9scyI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYXVkaW8tY3RybCIgaWQ9ImF1ZGlvUHJldkJ0biI+PGkgY2xhc3M9ImZhcyBmYS1iYWNrd2FyZC1zdGVwIj48L2k+PC9idXR0b24+PGJyIC8+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYXVkaW8tY3RybCBwbGF5LXBhdXNlIiBpZD0iYXVkaW9QbGF5UGF1c2VCdG4iPjxpIGNsYXNzPSJmYXMgZmEtcGxheSIgaWQ9ImF1ZGlvUGxheUljb24iPjwvaT48L2J1dHRvbj48YnIgLz4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJhdWRpby1jdHJsIiBpZD0iYXVkaW9OZXh0QnRuIj48aSBjbGFzcz0iZmFzIGZhLWZvcndhcmQtc3RlcCI+PC9pPjwvYnV0dG9uPgogICAgICA8L2Rpdj4KPGRpdiBjbGFzcz0idm9sdW1lLXJvdyI+CiAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS12b2x1bWUtZG93biI+PC9pPjxiciAvPgogICAgICAgIDxpbnB1dCB0eXBlPSJyYW5nZSIgaWQ9ImF1ZGlvVm9sdW1lIiBtaW49IjAiIG1heD0iMSIgc3RlcD0iMC4wMSIgdmFsdWU9IjAuNyI+PGJyIC8+CiAgICAgICAgPGkgY2xhc3M9ImZhcyBmYS12b2x1bWUtdXAiPjwvaT4KICAgICAgPC9kaXY+CjwvcD48L2Rpdj4KPC9wPjwvZGl2Pgo8cD4gIDwhLS0gTElWRSBMWVJJQ1MgU0VDVElPTiAtLT48L3A+CjxkaXYgY2xhc3M9Imx5cmljcy1zZWN0aW9uIj4KPGRpdiBjbGFzcz0ibHlyaWNzLWhlYWRlciI+CiAgICAgIDxzcGFuPjxpIGNsYXNzPSJmYXMgZmEtbXVzaWMiPjwvaT4gTGl2ZSBMeXJpY3M8L3NwYW4+PGJyIC8+CiAgICAgIDxzcGFuIGlkPSJjdXJyZW50VGl0bGUiPlNlbGVjdCBhbiBlcGlzb2RlPC9zcGFuPgogICAgPC9kaXY+CjxkaXYgY2xhc3M9Imx5cmljcy1ib3giIGlkPSJseXJpY3NCb3giPgo8ZGl2IGNsYXNzPSJseXJpY3MtbGluZSI+4pyoIExpc3RlbiB0byBhbiBlcGlzb2RlIHRvIHNlZSBzeW5jaHJvbml6ZWQgbHlyaWNzLi4uPC9kaXY+CjwvcD48L2Rpdj4KPC9wPjwvZGl2Pgo8cD4gIDwhLS0gRVBJU09ERSBMSVNUIC0tPjwvcD4KPGRpdiBjbGFzcz0iZXBpc29kZS1saXN0Ij4KPGRpdiBzdHlsZT0iZm9udC1zaXplOjAuOHJlbTsgY29sb3I6I2Q0YWYzNzsiPjxpIGNsYXNzPSJmYXMgZmEtbGlzdCI+PC9pPiBFcGlzb2RlczwvZGl2Pgo8ZGl2IGNsYXNzPSJlcGlzb2RlLWdyaWQiIGlkPSJlcGlzb2RlR3JpZCI+PC9kaXY+CjwvcD48L2Rpdj4KPHA+ICA8YnV0dG9uIGNsYXNzPSJiYWNrLWxpbmsiIGlkPSJiYWNrQnRuIj48aSBjbGFzcz0iZmFzIGZhLWFycm93LWxlZnQiPjwvaT4gQmFjayB0byBIb21lPC9idXR0b24+PC9wPgo8Zm9vdGVyPjxpIGNsYXNzPSJmYXMgZmEtZmVhdGhlci1hbHQiPjwvaT4gUGhpbG9zb3BoeSBpbiBldmVyeSB3b3JkICYgZnJhbWU8L2Zvb3Rlcj4KPC9kaXY+CjxwPjxhdWRpbyBpZD0iaGlkZGVuQXVkaW8iIHByZWxvYWQ9Im1ldGFkYXRhIj48L2F1ZGlvPjwvcD4KPHA+PHNjcmlwdD48YnIgLz4KICAvLyBFcGlzb2RlIGRhdGEgd2l0aCBseXJpY3M8YnIgLz4KICBjb25zdCBlcGlzb2RlcyA9IFs8YnIgLz4KICAgIHsgdHlwZTogInZpZGVvIiwgdGl0bGU6ICJUaGUgQXJ0IG9mIFN0aWxsbmVzcyIsIGRlc2M6ICJGaW5kaW5nIHBlYWNlIHdpdGhpbiIsIHNyYzogImh0dHBzOi8vY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vZ3R2LXZpZGVvcy1idWNrZXQvc2FtcGxlL0ZvckJpZ2dlckJsYXplcy5tcDQiLCBkdXJhdGlvbjogIjA6MzAiLCBseXJpY3M6IFsi4pyoIFN0aWxsbmVzcyBpcyB0aGUgZG9vcndheSB0byB3aXNkb20uLi4iLCAiQnJlYXRoZSBpbiwgYnJlYXRoZSBvdXQuIiwgIlRoZSBtaW5kIGJlY29tZXMgY2FsbSBsaWtlIHN0aWxsIHdhdGVyLiIsICJJbiBzaWxlbmNlLCB3ZSBoZWFyIHRoZSB0cnV0aC4iLCAiTGV0IGdvIG9mIGFsbCBkaXN0cmFjdGlvbnMuIiwgIllvdSBhcmUgYWxyZWFkeSBjb21wbGV0ZS4iXSB9LDxiciAvPgogICAgeyB0eXBlOiAidmlkZW8iLCB0aXRsZTogIlN0b2ljIFdpc2RvbSIsIGRlc2M6ICJNYXJjdXMgQXVyZWxpdXMiLCBzcmM6ICJodHRwczovL2NvbW1vbmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL2d0di12aWRlb3MtYnVja2V0L3NhbXBsZS9Gb3JCaWdnZXJGdW5mbGllcy5tcDQiLCBkdXJhdGlvbjogIjA6MzAiLCBseXJpY3M6IFsiWW91IGhhdmUgcG93ZXIgb3ZlciB5b3VyIG1pbmQg4oCUIG5vdCBvdXRzaWRlIGV2ZW50cy4iLCAiUmVhbGl6ZSB0aGlzLCBhbmQgeW91IHdpbGwgZmluZCBzdHJlbmd0aC4iLCAiV2FzdGUgbm8gbW9yZSB0aW1lIGFyZ3Vpbmcgd2hhdCBhIGdvb2QgbWFuIHNob3VsZCBiZS4iLCAiQmUgb25lLiIsICJUaGUgb2JzdGFjbGUgYmVjb21lcyB0aGUgd2F5LiIsICJBbW9yIGZhdGkg4oCUIGxvdmUgeW91ciBmYXRlLiJdIH0sPGJyIC8+CiAgICB7IHR5cGU6ICJhdWRpbyIsIHRpdGxlOiAiTWVhbmluZyAmIEhhcHBpbmVzcyIsIGRlc2M6ICJBcmlzdG90bGUncyBFdWRhaW1vbmlhIiwgc3JjOiAiaHR0cHM6Ly93d3cuc291bmRoZWxpeC5jb20vZXhhbXBsZXMvbXAzL1NvdW5kSGVsaXgtU29uZy0xLm1wMyIsIGR1cmF0aW9uOiAiMzo0NSIsIGx5cmljczogWyJIYXBwaW5lc3MgaXMgdGhlIG1lYW5pbmcgb2YgbGlmZS4iLCAiVmlydHVlIGlzIHRoZSBmb3VuZGF0aW9uIG9mIGV1ZGFpbW9uaWEuIiwgIkZsb3VyaXNoaW5nIGNvbWVzIGZyb20gcmlnaHQgYWN0aW9uLiIsICJTZWVrIGJhbGFuY2UgaW4gYWxsIHRoaW5ncy4iLCAiVGhlIGdvbGRlbiBtZWFuIGd1aWRlcyB1cy4iLCAiTGl2ZSB3aXRoIHB1cnBvc2UgYW5kIGludGVncml0eS4iXSB9LDxiciAvPgogICAgeyB0eXBlOiAiYXVkaW8iLCB0aXRsZTogIlRoZSBQb3dlciBvZiBQcmVzZW5jZSIsIGRlc2M6ICJNaW5kZnVsbmVzcyIsIHNyYzogImh0dHBzOi8vd3d3LnNvdW5kaGVsaXguY29tL2V4YW1wbGVzL21wMy9Tb3VuZEhlbGl4LVNvbmctMi5tcDMiLCBkdXJhdGlvbjogIjQ6MTIiLCBseXJpY3M6IFsiQmUgaGVyZSBub3cuIiwgIlRoZSBwcmVzZW50IG1vbWVudCBpcyBhbGwgd2UgaGF2ZS4iLCAiVGhvdWdodHMgYXJlIGNsb3VkcyBwYXNzaW5nIGluIHRoZSBza3kuIiwgIllvdSBhcmUgdGhlIHNreSwgbm90IHRoZSBjbG91ZHMuIiwgIkJyZWF0aGUgZGVlcGx5IGFuZCByZXR1cm4gdG8gbm93LiIsICJQZWFjZSBpcyBmb3VuZCBpbiBwcmVzZW5jZS4iXSB9LDxiciAvPgogICAgeyB0eXBlOiAidmlkZW8iLCB0aXRsZTogIk1lZGl0YXRpb24gJiBNaW5kIiwgZGVzYzogIkd1aWRlZCBqb3VybmV5Iiwgc3JjOiAiaHR0cHM6Ly9jb21tb25kYXRhc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9ndHYtdmlkZW9zLWJ1Y2tldC9zYW1wbGUvRm9yQmlnZ2VyRXNjYXBlcy5tcDQiLCBkdXJhdGlvbjogIjA6MzUiLCBseXJpY3M6IFsiQ2xvc2UgeW91ciBleWVzLiBGZWVsIHlvdXIgYnJlYXRoLiIsICJMZXQgdGhvdWdodHMgZGlzc29sdmUgbGlrZSBtaXN0LiIsICJZb3UgYXJlIGF3YXJlbmVzcyBpdHNlbGYuIiwgIk5vIGp1ZGdtZW50LCBqdXN0IG9ic2VydmF0aW9uLiIsICJSZXR1cm4gdG8gdGhlIGJyZWF0aC4iLCAiWW91IGFyZSBob21lLiJdIH08YnIgLz4KICBdOzwvcD4KPHA+ICAvLyBET00gZWxlbWVudHM8YnIgLz4KICBjb25zdCB2aWRlb1RhYkJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aWRlb1RhYkJ0bicpOzxiciAvPgogIGNvbnN0IGF1ZGlvVGFiQnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvVGFiQnRuJyk7PGJyIC8+CiAgY29uc3QgdmlkZW9QbGF5ZXJEaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmlkZW9QbGF5ZXInKTs8YnIgLz4KICBjb25zdCBhdWRpb1BsYXllckRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb1BsYXllcicpOzxiciAvPgogIGNvbnN0IGVwaXNvZGVHcmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2VwaXNvZGVHcmlkJyk7PGJyIC8+CiAgY29uc3QgbHlyaWNzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2x5cmljc0JveCcpOzxiciAvPgogIGNvbnN0IGN1cnJlbnRUaXRsZVNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3VycmVudFRpdGxlJyk7PC9wPgo8cD4gIC8vIFZpZGVvIGVsZW1lbnRzPGJyIC8+CiAgY29uc3QgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpblZpZGVvJyk7PGJyIC8+CiAgY29uc3QgdmlkZW9QbGF5QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZGVvUGxheUJ0bicpOzxiciAvPgogIGNvbnN0IHZpZGVvUHJvZ3Jlc3NCYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmlkZW9Qcm9ncmVzc0JhcicpOzxiciAvPgogIGNvbnN0IHZpZGVvUHJvZ3Jlc3NGaWxsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZGVvUHJvZ3Jlc3NGaWxsJyk7PGJyIC8+CiAgY29uc3QgdmlkZW9UaW1lU3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aWRlb1RpbWUnKTs8YnIgLz4KICBjb25zdCB2aWRlb011dGVCdG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndmlkZW9NdXRlQnRuJyk7PGJyIC8+CiAgY29uc3QgZnVsbHNjcmVlbkJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmdWxsc2NyZWVuQnRuJyk7PC9wPgo8cD4gIC8vIEF1ZGlvIGVsZW1lbnRzPGJyIC8+CiAgY29uc3QgYXVkaW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaGlkZGVuQXVkaW8nKTs8YnIgLz4KICBjb25zdCBhdWRpb1BsYXlQYXVzZUJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb1BsYXlQYXVzZUJ0bicpOzxiciAvPgogIGNvbnN0IGF1ZGlvUGxheUljb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXVkaW9QbGF5SWNvbicpOzxiciAvPgogIGNvbnN0IGF1ZGlvUHJvZ3Jlc3NCYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYXVkaW9Qcm9ncmVzc0JhcicpOzxiciAvPgogIGNvbnN0IGF1ZGlvUHJvZ3Jlc3NGaWxsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvUHJvZ3Jlc3NGaWxsJyk7PGJyIC8+CiAgY29uc3QgYXVkaW9DdXJyZW50U3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb0N1cnJlbnQnKTs8YnIgLz4KICBjb25zdCBhdWRpb0R1cmF0aW9uU3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb0R1cmF0aW9uJyk7PGJyIC8+CiAgY29uc3QgYXVkaW9QcmV2QnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2F1ZGlvUHJldkJ0bicpOzxiciAvPgogIGNvbnN0IGF1ZGlvTmV4dEJ0biA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb05leHRCdG4nKTs8YnIgLz4KICBjb25zdCBhdWRpb1ZvbHVtZVNsaWRlciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhdWRpb1ZvbHVtZScpOzwvcD4KPHA+ICBsZXQgYWN0aXZlVGFiID0gJ3ZpZGVvJzs8YnIgLz4KICBsZXQgaXNWaWRlb1BsYXlpbmcgPSBmYWxzZTs8YnIgLz4KICBsZXQgaXNBdWRpb1BsYXlpbmcgPSBmYWxzZTs8YnIgLz4KICBsZXQgY3VycmVudFZpZGVvSW5kZXggPSBlcGlzb2Rlcy5maW5kSW5kZXgoZSA9PiBlLnR5cGUgPT09ICd2aWRlbycpOzxiciAvPgogIGxldCBjdXJyZW50QXVkaW9JbmRleCA9IGVwaXNvZGVzLmZpbmRJbmRleChlID0+IGUudHlwZSA9PT0gJ2F1ZGlvJyk7PGJyIC8+CiAgbGV0IGN1cnJlbnRMeXJpY3MgPSBbXTs8YnIgLz4KICBsZXQgbHlyaWNzSW50ZXJ2YWwgPSBudWxsOzwvcD4KPHA+ICAvLyBMeXJpY3Mgc3luYyBzaW11bGF0aW9uIChiYXNlZCBvbiB0aW1lKTxiciAvPgogIGZ1bmN0aW9uIHN0YXJ0THlyaWNzU3luYyhkdXJhdGlvblNlYywgbHlyaWNzQXJyYXksIG1lZGlhRWxlbWVudCkgezxiciAvPgogICAgaWYgKGx5cmljc0ludGVydmFsKSBjbGVhckludGVydmFsKGx5cmljc0ludGVydmFsKTs8YnIgLz4KICAgIGN1cnJlbnRMeXJpY3MgPSBseXJpY3NBcnJheTs8YnIgLz4KICAgIHJlbmRlckx5cmljcygtMSk7PGJyIC8+CiAgICBjb25zdCBsaW5lRHVyYXRpb24gPSBkdXJhdGlvblNlYyAvIGx5cmljc0FycmF5Lmxlbmd0aDs8YnIgLz4KICAgIGxldCBsYXN0SW5kZXggPSAtMTs8YnIgLz4KICAgIGx5cmljc0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gezxiciAvPgogICAgICBpZiAoIW1lZGlhRWxlbWVudCB8fCBtZWRpYUVsZW1lbnQucGF1c2VkIHx8ICFtZWRpYUVsZW1lbnQuY3VycmVudFRpbWUpIHJldHVybjs8YnIgLz4KICAgICAgY29uc3QgY3VycmVudFRpbWUgPSBtZWRpYUVsZW1lbnQuY3VycmVudFRpbWU7PGJyIC8+CiAgICAgIGNvbnN0IGluZGV4ID0gTWF0aC5taW4oTWF0aC5mbG9vcihjdXJyZW50VGltZSAvIGxpbmVEdXJhdGlvbiksIGx5cmljc0FycmF5Lmxlbmd0aCAtIDEpOzxiciAvPgogICAgICBpZiAoaW5kZXggIT09IGxhc3RJbmRleCkgezxiciAvPgogICAgICAgIGxhc3RJbmRleCA9IGluZGV4OzxiciAvPgogICAgICAgIHJlbmRlckx5cmljcyhpbmRleCk7PGJyIC8+CiAgICAgICAgY29uc3QgYWN0aXZlTGluZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5seXJpY3MtbGluZS5hY3RpdmUnKTs8YnIgLz4KICAgICAgICBpZiAoYWN0aXZlTGluZSkgYWN0aXZlTGluZS5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnc21vb3RoJywgYmxvY2s6ICdjZW50ZXInIH0pOzxiciAvPgogICAgICB9PGJyIC8+CiAgICB9LCAyMDApOzxiciAvPgogIH08L3A+CjxwPiAgZnVuY3Rpb24gc3RvcEx5cmljc1N5bmMoKSB7PGJyIC8+CiAgICBpZiAobHlyaWNzSW50ZXJ2YWwpIHsgY2xlYXJJbnRlcnZhbChseXJpY3NJbnRlcnZhbCk7IGx5cmljc0ludGVydmFsID0gbnVsbDsgfTxiciAvPgogIH08L3A+CjxwPiAgZnVuY3Rpb24gcmVuZGVyTHlyaWNzKGFjdGl2ZUluZGV4KSB7PGJyIC8+CiAgICBpZiAoIWN1cnJlbnRMeXJpY3MubGVuZ3RoKSB7PGJyIC8+CiAgICAgIGx5cmljc0JveC5pbm5lckhUTUwgPSAnPC9wPgo8ZGl2IGNsYXNzPSJseXJpY3MtbGluZSI+4pyoIE5vIGx5cmljcyBhdmFpbGFibGUgZm9yIHRoaXMgZXBpc29kZS4uLjwvZGl2Pgo8cD4nOzxiciAvPgogICAgICByZXR1cm47PGJyIC8+CiAgICB9PGJyIC8+CiAgICBseXJpY3NCb3guaW5uZXJIVE1MID0gY3VycmVudEx5cmljcy5tYXAoKGxpbmUsIGkpID0+PGJyIC8+CiAgICAgIGA8L3A+CjxkaXYgY2xhc3M9Imx5cmljcy1saW5lICR7aSA9PT0gYWN0aXZlSW5kZXggPyAnYWN0aXZlJyA6ICcnfSI+JHtsaW5lfTwvZGl2Pgo8cD5gPGJyIC8+CiAgICApLmpvaW4oJycpOzxiciAvPgogIH08L3A+CjxwPiAgLy8gVmlkZW8gZnVuY3Rpb25zPGJyIC8+CiAgZnVuY3Rpb24gbG9hZFZpZGVvRXBpc29kZShpbmRleCkgezxiciAvPgogICAgY29uc3QgZXAgPSBlcGlzb2Rlc1tpbmRleF07PGJyIC8+CiAgICBpZiAoIWVwIHx8IGVwLnR5cGUgIT09ICd2aWRlbycpIHJldHVybjs8YnIgLz4KICAgIGN1cnJlbnRWaWRlb0luZGV4ID0gaW5kZXg7PGJyIC8+CiAgICB2aWRlby5zcmMgPSBlcC5zcmM7PGJyIC8+CiAgICB2aWRlby5sb2FkKCk7PGJyIC8+CiAgICBjdXJyZW50VGl0bGVTcGFuLnRleHRDb250ZW50ID0gZXAudGl0bGU7PGJyIC8+CiAgICBjdXJyZW50THlyaWNzID0gZXAubHlyaWNzIHx8IFsiTm8gbHlyaWNzIGZvciB0aGlzIGVwaXNvZGUiXTs8YnIgLz4KICAgIHJlbmRlckx5cmljcygtMSk7PGJyIC8+CiAgICBzdG9wTHlyaWNzU3luYygpOzxiciAvPgogICAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCAoKSA9PiB7PGJyIC8+CiAgICAgIGNvbnN0IGR1cmF0aW9uU2VjID0gdmlkZW8uZHVyYXRpb247PGJyIC8+CiAgICAgIGlmIChkdXJhdGlvblNlYyAmJiBlcC5seXJpY3MpIHN0YXJ0THlyaWNzU3luYyhkdXJhdGlvblNlYywgZXAubHlyaWNzLCB2aWRlbyk7PGJyIC8+CiAgICB9LCB7IG9uY2U6IHRydWUgfSk7PGJyIC8+CiAgICBpZiAoaXNWaWRlb1BsYXlpbmcpIHZpZGVvLnBsYXkoKTs8YnIgLz4KICAgIHVwZGF0ZVZpZGVvUGxheUljb24oKTs8YnIgLz4KICAgIHJlbmRlckVwaXNvZGVzKCd2aWRlbycpOzxiciAvPgogIH08L3A+CjxwPiAgZnVuY3Rpb24gdXBkYXRlVmlkZW9QbGF5SWNvbigpIHs8YnIgLz4KICAgIGNvbnN0IGljb24gPSB2aWRlb1BsYXlCdG4ucXVlcnlTZWxlY3RvcignaScpOzxiciAvPgogICAgaWNvbi5jbGFzc05hbWUgPSBpc1ZpZGVvUGxheWluZyA\/ICdmYXMgZmEtcGF1c2UnIDogJ2ZhcyBmYS1wbGF5Jzs8YnIgLz4KICB9PC9wPgo8cD4gIGZ1bmN0aW9uIHRvZ2dsZVZpZGVvUGxheSgpIHs8YnIgLz4KICAgIGlmICh2aWRlby5wYXVzZWQpIHsgdmlkZW8ucGxheSgpOyBpc1ZpZGVvUGxheWluZyA9IHRydWU7IH08YnIgLz4KICAgIGVsc2UgeyB2aWRlby5wYXVzZSgpOyBpc1ZpZGVvUGxheWluZyA9IGZhbHNlOyBzdG9wTHlyaWNzU3luYygpOyB9PGJyIC8+CiAgICB1cGRhdGVWaWRlb1BsYXlJY29uKCk7PGJyIC8+CiAgfTwvcD4KPHA+ICBmdW5jdGlvbiB1cGRhdGVWaWRlb1Byb2dyZXNzKCkgezxiciAvPgogICAgaWYgKHZpZGVvLmR1cmF0aW9uICYmICFpc05hTih2aWRlby5kdXJhdGlvbikpIHs8YnIgLz4KICAgICAgY29uc3QgcGVyY2VudCA9ICh2aWRlby5jdXJyZW50VGltZSAvIHZpZGVvLmR1cmF0aW9uKSAqIDEwMDs8YnIgLz4KICAgICAgdmlkZW9Qcm9ncmVzc0ZpbGwuc3R5bGUud2lkdGggPSBgJHtwZXJjZW50fSVgOzxiciAvPgogICAgICB2aWRlb1RpbWVTcGFuLnRleHRDb250ZW50ID0gYCR7Zm9ybWF0VGltZSh2aWRlby5jdXJyZW50VGltZSl9IC8gJHtmb3JtYXRUaW1lKHZpZGVvLmR1cmF0aW9uKX1gOzxiciAvPgogICAgfTxiciAvPgogIH08L3A+CjxwPiAgLy8gQXVkaW8gZnVuY3Rpb25zPGJyIC8+CiAgZnVuY3Rpb24gbG9hZEF1ZGlvRXBpc29kZShpbmRleCkgezxiciAvPgogICAgY29uc3QgZXAgPSBlcGlzb2Rlc1tpbmRleF07PGJyIC8+CiAgICBpZiAoIWVwIHx8IGVwLnR5cGUgIT09ICdhdWRpbycpIHJldHVybjs8YnIgLz4KICAgIGN1cnJlbnRBdWRpb0luZGV4ID0gaW5kZXg7PGJyIC8+CiAgICBhdWRpby5zcmMgPSBlcC5zcmM7PGJyIC8+CiAgICBhdWRpby5sb2FkKCk7PGJyIC8+CiAgICBjdXJyZW50VGl0bGVTcGFuLnRleHRDb250ZW50ID0gZXAudGl0bGU7PGJyIC8+CiAgICBjdXJyZW50THlyaWNzID0gZXAubHlyaWNzIHx8IFsiTm8gbHlyaWNzIGZvciB0aGlzIGVwaXNvZGUiXTs8YnIgLz4KICAgIHJlbmRlckx5cmljcygtMSk7PGJyIC8+CiAgICBzdG9wTHlyaWNzU3luYygpOzxiciAvPgogICAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcignbG9hZGVkbWV0YWRhdGEnLCAoKSA9PiB7PGJyIC8+CiAgICAgIGNvbnN0IGR1cmF0aW9uU2VjID0gYXVkaW8uZHVyYXRpb247PGJyIC8+CiAgICAgIGlmIChkdXJhdGlvblNlYyAmJiBlcC5seXJpY3MpIHN0YXJ0THlyaWNzU3luYyhkdXJhdGlvblNlYywgZXAubHlyaWNzLCBhdWRpbyk7PGJyIC8+CiAgICB9LCB7IG9uY2U6IHRydWUgfSk7PGJyIC8+CiAgICBpZiAoaXNBdWRpb1BsYXlpbmcpIGF1ZGlvLnBsYXkoKTs8YnIgLz4KICAgIHVwZGF0ZUF1ZGlvUGxheUljb24oKTs8YnIgLz4KICAgIHJlbmRlckVwaXNvZGVzKCdhdWRpbycpOzxiciAvPgogIH08L3A+CjxwPiAgZnVuY3Rpb24gdXBkYXRlQXVkaW9QbGF5SWNvbigpIHs8YnIgLz4KICAgIGF1ZGlvUGxheUljb24uY2xhc3NOYW1lID0gaXNBdWRpb1BsYXlpbmcgPyAnZmFzIGZhLXBhdXNlJyA6ICdmYXMgZmEtcGxheSc7PGJyIC8+CiAgfTwvcD4KPHA+ICBmdW5jdGlvbiB0b2dnbGVBdWRpb1BsYXkoKSB7PGJyIC8+CiAgICBpZiAoYXVkaW8ucGF1c2VkKSB7IGF1ZGlvLnBsYXkoKTsgaXNBdWRpb1BsYXlpbmcgPSB0cnVlOyB9PGJyIC8+CiAgICBlbHNlIHsgYXVkaW8ucGF1c2UoKTsgaXNBdWRpb1BsYXlpbmcgPSBmYWxzZTsgc3RvcEx5cmljc1N5bmMoKTsgfTxiciAvPgogICAgdXBkYXRlQXVkaW9QbGF5SWNvbigpOzxiciAvPgogIH08L3A+CjxwPiAgZnVuY3Rpb24gdXBkYXRlQXVkaW9Qcm9ncmVzcygpIHs8YnIgLz4KICAgIGlmIChhdWRpby5kdXJhdGlvbiAmJiAhaXNOYU4oYXVkaW8uZHVyYXRpb24pKSB7PGJyIC8+CiAgICAgIGNvbnN0IHBlcmNlbnQgPSAoYXVkaW8uY3VycmVudFRpbWUgLyBhdWRpby5kdXJhdGlvbikgKiAxMDA7PGJyIC8+CiAgICAgIGF1ZGlvUHJvZ3Jlc3NGaWxsLnN0eWxlLndpZHRoID0gYCR7cGVyY2VudH0lYDs8YnIgLz4KICAgICAgYXVkaW9DdXJyZW50U3Bhbi50ZXh0Q29udGVudCA9IGZvcm1hdFRpbWUoYXVkaW8uY3VycmVudFRpbWUpOzxiciAvPgogICAgICBhdWRpb0R1cmF0aW9uU3Bhbi50ZXh0Q29udGVudCA9IGZvcm1hdFRpbWUoYXVkaW8uZHVyYXRpb24pOzxiciAvPgogICAgfTxiciAvPgogIH08L3A+CjxwPiAgZnVuY3Rpb24gZm9ybWF0VGltZShzZWNvbmRzKSB7PGJyIC8+CiAgICBpZiAoaXNOYU4oc2Vjb25kcykpIHJldHVybiAiMDowMCI7PGJyIC8+CiAgICBjb25zdCBtaW5zID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApOzxiciAvPgogICAgY29uc3Qgc2VjcyA9IE1hdGguZmxvb3Ioc2Vjb25kcyAlIDYwKTs8YnIgLz4KICAgIHJldHVybiBgJHttaW5zfToke3NlY3MgPCAxMCA\/ICcwJyA6ICcnfSR7c2Vjc31gOwogIH0KCiAgLy8gUmVuZGVyIGVwaXNvZGUgbGlzdAogIGZ1bmN0aW9uIHJlbmRlckVwaXNvZGVzKGZpbHRlclR5cGUgPSBudWxsKSB7CiAgICBjb25zdCBmaWx0ZXJlZCA9IGZpbHRlclR5cGUgPyBlcGlzb2Rlcy5maWx0ZXIoZXAgPT4gZXAudHlwZSA9PT0gZmlsdGVyVHlwZSkgOiBlcGlzb2Rlczs8YnIgLz4KICAgIGVwaXNvZGVHcmlkLmlubmVySFRNTCA9ICcnOzxiciAvPgogICAgZmlsdGVyZWQuZm9yRWFjaCgoZXAsIGlkeCkgPT4gezxiciAvPgogICAgICBjb25zdCBvcmlnaW5hbElkeCA9IGVwaXNvZGVzLmZpbmRJbmRleChlID0+IGUudGl0bGUgPT09IGVwLnRpdGxlKTs8YnIgLz4KICAgICAgY29uc3QgaXNBY3RpdmUgPSAoZmlsdGVyVHlwZSA9PT0gJ3ZpZGVvJyAmJiBvcmlnaW5hbElkeCA9PT0gY3VycmVudFZpZGVvSW5kZXgpIHx8PGJyIC8+CiAgICAgICAgICAgICAgICAgICAgICAgKGZpbHRlclR5cGUgPT09ICdhdWRpbycgJiYgb3JpZ2luYWxJZHggPT09IGN1cnJlbnRBdWRpb0luZGV4KTs8YnIgLz4KICAgICAgY29uc3QgZXBEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTs8YnIgLz4KICAgICAgZXBEaXYuY2xhc3NOYW1lID0gYGVwaXNvZGUtaXRlbSAke2lzQWN0aXZlID8gJ2FjdGl2ZScgOiAnJ31gOzxiciAvPgogICAgICBlcERpdi5pbm5lckhUTUwgPSBgPC9wPgo8ZGl2IGNsYXNzPSJlcGlzb2RlLWljb24iPjxpIGNsYXNzPSJmYXMgJHtlcC50eXBlID09PSAndmlkZW8nID8gJ2ZhLXZpZGVvJyA6ICdmYS1oZWFkcGhvbmVzJ30iPjwvaT48L2Rpdj4KPGRpdiBjbGFzcz0iZXBpc29kZS1pbmZvIj4KPGg0PiR7ZXAudGl0bGV9PC9oND4KPHA+JHtlcC5kZXNjfTwvcD4KPC9kaXY+CjxwPiAgICAgIGA7PGJyIC8+CiAgICAgIGVwRGl2LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gezxiciAvPgogICAgICAgIGlmIChlcC50eXBlID09PSAndmlkZW8nKSB7PGJyIC8+CiAgICAgICAgICBpZiAoYWN0aXZlVGFiICE9PSAndmlkZW8nKSB2aWRlb1RhYkJ0bi5jbGljaygpOzxiciAvPgogICAgICAgICAgbG9hZFZpZGVvRXBpc29kZShvcmlnaW5hbElkeCk7PGJyIC8+CiAgICAgICAgICBpZiAoIWlzVmlkZW9QbGF5aW5nKSB0b2dnbGVWaWRlb1BsYXkoKTs8YnIgLz4KICAgICAgICB9IGVsc2UgezxiciAvPgogICAgICAgICAgaWYgKGFjdGl2ZVRhYiAhPT0gJ2F1ZGlvJykgYXVkaW9UYWJCdG4uY2xpY2soKTs8YnIgLz4KICAgICAgICAgIGxvYWRBdWRpb0VwaXNvZGUob3JpZ2luYWxJZHgpOzxiciAvPgogICAgICAgICAgaWYgKCFpc0F1ZGlvUGxheWluZykgdG9nZ2xlQXVkaW9QbGF5KCk7PGJyIC8+CiAgICAgICAgfTxiciAvPgogICAgICB9KTs8YnIgLz4KICAgICAgZXBpc29kZUdyaWQuYXBwZW5kQ2hpbGQoZXBEaXYpOzxiciAvPgogICAgfSk7PGJyIC8+CiAgfTwvcD4KPHA+ICAvLyBUYWIgc3dpdGNoaW5nPGJyIC8+CiAgdmlkZW9UYWJCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7PGJyIC8+CiAgICBhY3RpdmVUYWIgPSAndmlkZW8nOzxiciAvPgogICAgdmlkZW9UYWJCdG4uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7PGJyIC8+CiAgICBhdWRpb1RhYkJ0bi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTs8YnIgLz4KICAgIHZpZGVvUGxheWVyRGl2LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOzxiciAvPgogICAgYXVkaW9QbGF5ZXJEaXYuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7PGJyIC8+CiAgICByZW5kZXJFcGlzb2RlcygndmlkZW8nKTs8YnIgLz4KICAgIGlmIChjdXJyZW50VmlkZW9JbmRleCA9PT0gLTEpIGN1cnJlbnRWaWRlb0luZGV4ID0gZXBpc29kZXMuZmluZEluZGV4KGUgPT4gZS50eXBlID09PSAndmlkZW8nKTs8YnIgLz4KICAgIGlmIChjdXJyZW50VmlkZW9JbmRleCAhPT0gLTEpIGxvYWRWaWRlb0VwaXNvZGUoY3VycmVudFZpZGVvSW5kZXgpOzxiciAvPgogICAgc3RvcEx5cmljc1N5bmMoKTs8YnIgLz4KICB9KTs8L3A+CjxwPiAgYXVkaW9UYWJCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7PGJyIC8+CiAgICBhY3RpdmVUYWIgPSAnYXVkaW8nOzxiciAvPgogICAgYXVkaW9UYWJCdG4uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7PGJyIC8+CiAgICB2aWRlb1RhYkJ0bi5jbGFzc0xpc3QucmVtb3ZlKCdhY3RpdmUnKTs8YnIgLz4KICAgIGF1ZGlvUGxheWVyRGl2LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpOzxiciAvPgogICAgdmlkZW9QbGF5ZXJEaXYuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7PGJyIC8+CiAgICByZW5kZXJFcGlzb2RlcygnYXVkaW8nKTs8YnIgLz4KICAgIGlmIChjdXJyZW50QXVkaW9JbmRleCA9PT0gLTEpIGN1cnJlbnRBdWRpb0luZGV4ID0gZXBpc29kZXMuZmluZEluZGV4KGUgPT4gZS50eXBlID09PSAnYXVkaW8nKTs8YnIgLz4KICAgIGlmIChjdXJyZW50QXVkaW9JbmRleCAhPT0gLTEpIGxvYWRBdWRpb0VwaXNvZGUoY3VycmVudEF1ZGlvSW5kZXgpOzxiciAvPgogICAgc3RvcEx5cmljc1N5bmMoKTs8YnIgLz4KICB9KTs8L3A+CjxwPiAgLy8gVmlkZW8gZXZlbnQgbGlzdGVuZXJzPGJyIC8+CiAgdmlkZW9QbGF5QnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdG9nZ2xlVmlkZW9QbGF5KTs8YnIgLz4KICB2aWRlby5hZGRFdmVudExpc3RlbmVyKCd0aW1ldXBkYXRlJywgdXBkYXRlVmlkZW9Qcm9ncmVzcyk7PGJyIC8+CiAgdmlkZW8uYWRkRXZlbnRMaXN0ZW5lcigncGxheScsICgpID0+IHsgaXNWaWRlb1BsYXlpbmcgPSB0cnVlOyB1cGRhdGVWaWRlb1BsYXlJY29uKCk7IH0pOzxiciAvPgogIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ3BhdXNlJywgKCkgPT4geyBpc1ZpZGVvUGxheWluZyA9IGZhbHNlOyB1cGRhdGVWaWRlb1BsYXlJY29uKCk7IHN0b3BMeXJpY3NTeW5jKCk7IH0pOzxiciAvPgogIHZpZGVvLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgKCkgPT4geyBpc1ZpZGVvUGxheWluZyA9IGZhbHNlOyB1cGRhdGVWaWRlb1BsYXlJY29uKCk7IHN0b3BMeXJpY3NTeW5jKCk7IH0pOzxiciAvPgogIHZpZGVvUHJvZ3Jlc3NCYXIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4gezxiciAvPgogICAgY29uc3QgcmVjdCA9IHZpZGVvUHJvZ3Jlc3NCYXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7PGJyIC8+CiAgICBjb25zdCBwZXJjZW50ID0gKGUuY2xpZW50WCAtIHJlY3QubGVmdCkgLyByZWN0LndpZHRoOzxiciAvPgogICAgaWYgKHZpZGVvLmR1cmF0aW9uKSB2aWRlby5jdXJyZW50VGltZSA9IHBlcmNlbnQgKiB2aWRlby5kdXJhdGlvbjs8YnIgLz4KICB9KTs8YnIgLz4KICB2aWRlb011dGVCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7PGJyIC8+CiAgICB2aWRlby5tdXRlZCA9ICF2aWRlby5tdXRlZDs8YnIgLz4KICAgIHZpZGVvTXV0ZUJ0bi5pbm5lckhUTUwgPSB2aWRlby5tdXRlZCA\/ICc8aSBjbGFzcz0iZmFzIGZhLXZvbHVtZS1tdXRlIj48L2k+JyA6ICc8aSBjbGFzcz0iZmFzIGZhLXZvbHVtZS11cCI+PC9pPic7PGJyIC8+CiAgfSk7PC9wPgo8cD4gIC8vIEZ1bGxzY3JlZW48YnIgLz4KICBmdWxsc2NyZWVuQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4gezxiciAvPgogICAgY29uc3Qgd3JhcHBlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy52aWRlby13cmFwcGVyJyk7PGJyIC8+CiAgICBpZiAoIWRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50KSB3cmFwcGVyLnJlcXVlc3RGdWxsc2NyZWVuKCkuY2F0Y2goZXJyID0+IGFsZXJ0KCJGdWxsc2NyZWVuIGVycm9yIikpOzxiciAvPgogICAgZWxzZSBkb2N1bWVudC5leGl0RnVsbHNjcmVlbigpOzxiciAvPgogIH0pOzwvcD4KPHA+ICAvLyBBdWRpbyBldmVudCBsaXN0ZW5lcnM8YnIgLz4KICBhdWRpb1BsYXlQYXVzZUJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRvZ2dsZUF1ZGlvUGxheSk7PGJyIC8+CiAgYXVkaW8uYWRkRXZlbnRMaXN0ZW5lcigndGltZXVwZGF0ZScsIHVwZGF0ZUF1ZGlvUHJvZ3Jlc3MpOzxiciAvPgogIGF1ZGlvLmFkZEV2ZW50TGlzdGVuZXIoJ3BsYXknLCAoKSA9PiB7IGlzQXVkaW9QbGF5aW5nID0gdHJ1ZTsgdXBkYXRlQXVkaW9QbGF5SWNvbigpOyB9KTs8YnIgLz4KICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdwYXVzZScsICgpID0+IHsgaXNBdWRpb1BsYXlpbmcgPSBmYWxzZTsgdXBkYXRlQXVkaW9QbGF5SWNvbigpOyBzdG9wTHlyaWNzU3luYygpOyB9KTs8YnIgLz4KICBhdWRpby5hZGRFdmVudExpc3RlbmVyKCdlbmRlZCcsICgpID0+IHsgaXNBdWRpb1BsYXlpbmcgPSBmYWxzZTsgdXBkYXRlQXVkaW9QbGF5SWNvbigpOyBzdG9wTHlyaWNzU3luYygpOyB9KTs8YnIgLz4KICBhdWRpb1Byb2dyZXNzQmFyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHs8YnIgLz4KICAgIGNvbnN0IHJlY3QgPSBhdWRpb1Byb2dyZXNzQmFyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOzxiciAvPgogICAgY29uc3QgcGVyY2VudCA9IChlLmNsaWVudFggLSByZWN0LmxlZnQpIC8gcmVjdC53aWR0aDs8YnIgLz4KICAgIGlmIChhdWRpby5kdXJhdGlvbikgYXVkaW8uY3VycmVudFRpbWUgPSBwZXJjZW50ICogYXVkaW8uZHVyYXRpb247PGJyIC8+CiAgfSk7PGJyIC8+CiAgYXVkaW9Wb2x1bWVTbGlkZXIuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCAoZSkgPT4gYXVkaW8udm9sdW1lID0gZS50YXJnZXQudmFsdWUpOzxiciAvPgogIGF1ZGlvUHJldkJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHs8YnIgLz4KICAgIGNvbnN0IGF1ZGlvRXBpc29kZXMgPSBlcGlzb2Rlcy5tYXAoKGVwLCBpZHgpID0+ICh7IHR5cGU6IGVwLnR5cGUsIGlkeCB9KSkuZmlsdGVyKGUgPT4gZS50eXBlID09PSAnYXVkaW8nKTs8YnIgLz4KICAgIGNvbnN0IHBvcyA9IGF1ZGlvRXBpc29kZXMuZmluZEluZGV4KGUgPT4gZS5pZHggPT09IGN1cnJlbnRBdWRpb0luZGV4KTs8YnIgLz4KICAgIGlmIChwb3MgPiAwKSBsb2FkQXVkaW9FcGlzb2RlKGF1ZGlvRXBpc29kZXNbcG9zIC0gMV0uaWR4KTs8YnIgLz4KICAgIGlmIChpc0F1ZGlvUGxheWluZykgYXVkaW8ucGxheSgpOzxiciAvPgogIH0pOzxiciAvPgogIGF1ZGlvTmV4dEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHs8YnIgLz4KICAgIGNvbnN0IGF1ZGlvRXBpc29kZXMgPSBlcGlzb2Rlcy5tYXAoKGVwLCBpZHgpID0+ICh7IHR5cGU6IGVwLnR5cGUsIGlkeCB9KSkuZmlsdGVyKGUgPT4gZS50eXBlID09PSAnYXVkaW8nKTs8YnIgLz4KICAgIGNvbnN0IHBvcyA9IGF1ZGlvRXBpc29kZXMuZmluZEluZGV4KGUgPT4gZS5pZHggPT09IGN1cnJlbnRBdWRpb0luZGV4KTs8YnIgLz4KICAgIGlmIChwb3MgPCBhdWRpb0VwaXNvZGVzLmxlbmd0aCAtIDEpIGxvYWRBdWRpb0VwaXNvZGUoYXVkaW9FcGlzb2Rlc1twb3MgKyAxXS5pZHgpOwogICAgaWYgKGlzQXVkaW9QbGF5aW5nKSBhdWRpby5wbGF5KCk7CiAgfSk7CgogIC8vIEJhY2sgYnV0dG9uCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhY2tCdG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHs8YnIgLz4KICAgIGlmIChkb2N1bWVudC5yZWZlcnJlciAmJiBkb2N1bWVudC5yZWZlcnJlci5pbmNsdWRlcyh3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpKSB3aW5kb3cuaGlzdG9yeS5iYWNrKCk7PGJyIC8+CiAgICBlbHNlIGFsZXJ0KCLinKggUmV0dXJuIHRvIG1haW4gcGFnZSIpOzxiciAvPgogIH0pOzwvcD4KPHA+ICAvLyBJbml0aWFsaXplPGJyIC8+CiAgY29uc3QgZmlyc3RWaWRlbyA9IGVwaXNvZGVzLmZpbmRJbmRleChlID0+IGUudHlwZSA9PT0gJ3ZpZGVvJyk7PGJyIC8+CiAgY29uc3QgZmlyc3RBdWRpbyA9IGVwaXNvZGVzLmZpbmRJbmRleChlID0+IGUudHlwZSA9PT0gJ2F1ZGlvJyk7PGJyIC8+CiAgaWYgKGZpcnN0VmlkZW8gIT09IC0xKSBsb2FkVmlkZW9FcGlzb2RlKGZpcnN0VmlkZW8pOzxiciAvPgogIGlmIChmaXJzdEF1ZGlvICE9PSAtMSkgbG9hZEF1ZGlvRXBpc29kZShmaXJzdEF1ZGlvKTs8YnIgLz4KICByZW5kZXJFcGlzb2RlcygndmlkZW8nKTs8YnIgLz4KICBhdWRpby52b2x1bWUgPSAwLjc7PGJyIC8+CiAgYXVkaW9Wb2x1bWVTbGlkZXIudmFsdWUgPSAwLjc7PGJyIC8+Cjwvc2NyaXB0PjxiciAvPgo8L2JvZHk+PGJyIC8+CjwvaHRtbD48L3A+dgMQcmVzdHJpY3Rpb25fdHlwZXcHZXhjbHVkZRJzZWxlY3RlZF9sYW5ndWFnZXN1AApwYW5lbF9vcGVueH0BAgB3EzIwMjYtMDQtMTNUMTE6MjY6NDEZAH2IjOaFAn0AdwZjbG9zZWR3BmNsb3NlZHcAdwB3AHl5dwB3B3B1Ymxpc2gC5N639wMBAADnjPr6AgQAAg4DCQHcxQEA\",\"updateId\":599431310}","footnotes":""},"class_list":["post-776","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Video-library - \u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0442\u04e9\u0432<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gerliinerin.mn\/en\/video-library\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Video-library - \u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0442\u04e9\u0432\" \/>\n<meta property=\"og:description\" content=\"\u2726 \u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0422\u04e9\u0432 \u2726 \u0412\u0438\u0434\u0435\u043e \u0421\u0430\u043d \u041e\u044e\u0443\u043d \u0441\u0430\u043d\u0430\u0430\u043d\u044b \u0433\u044d\u0433\u044d\u044d\u0440\u044d\u043b, \u0431\u044f\u0441\u0430\u043b\u0433\u0430\u043b \u0431\u043e\u043b\u043e\u043d \u0441\u0443\u0440\u0433\u0430\u0430\u043b\u0438\u0439\u043d \u0432\u0438\u0434\u0435\u043e \u0446\u0443\u0433\u043b\u0443\u0443\u043b\u0433\u0430. \ud83d\udd0d \u0411\u04af\u0433\u0434 \u0411\u044f\u0441\u0430\u043b\u0433\u0430\u043b \u0421\u0443\u0440\u0433\u0430\u0430\u043b \u2715\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gerliinerin.mn\/en\/video-library\/\" \/>\n<meta property=\"og:site_name\" content=\"\u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0442\u04e9\u0432\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-27T08:49:02+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gerliinerin.mn\\\/video-library\\\/\",\"url\":\"https:\\\/\\\/gerliinerin.mn\\\/video-library\\\/\",\"name\":\"Video-library - \u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0442\u04e9\u0432\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gerliinerin.mn\\\/#website\"},\"datePublished\":\"2026-04-13T03:26:41+00:00\",\"dateModified\":\"2026-04-27T08:49:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gerliinerin.mn\\\/video-library\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gerliinerin.mn\\\/video-library\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gerliinerin.mn\\\/video-library\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gerliinerin.mn\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Video-library\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gerliinerin.mn\\\/#website\",\"url\":\"https:\\\/\\\/gerliinerin.mn\\\/\",\"name\":\"\u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0442\u04e9\u0432\",\"description\":\"\u0413\u044d\u0433\u044d\u044d\u0440\u044d\u043b, \u0423\u0445\u0430\u043c\u0441\u0430\u0440, \u0414\u043e\u0442\u043e\u043e\u0434 \u0443\u0445\u0430\u0430\u0440\u0430\u043b\",\"publisher\":{\"@id\":\"https:\\\/\\\/gerliinerin.mn\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gerliinerin.mn\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/gerliinerin.mn\\\/#organization\",\"name\":\"\u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0442\u04e9\u0432\",\"url\":\"https:\\\/\\\/gerliinerin.mn\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/gerliinerin.mn\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/gerliinerin.mn\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/lllll.png?fit=2460%2C2484&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/gerliinerin.mn\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/lllll.png?fit=2460%2C2484&ssl=1\",\"width\":2460,\"height\":2484,\"caption\":\"\u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0442\u04e9\u0432\"},\"image\":{\"@id\":\"https:\\\/\\\/gerliinerin.mn\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Video-library - \u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0442\u04e9\u0432","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gerliinerin.mn\/en\/video-library\/","og_locale":"en_US","og_type":"article","og_title":"Video-library - \u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0442\u04e9\u0432","og_description":"\u2726 \u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0422\u04e9\u0432 \u2726 \u0412\u0438\u0434\u0435\u043e \u0421\u0430\u043d \u041e\u044e\u0443\u043d \u0441\u0430\u043d\u0430\u0430\u043d\u044b \u0433\u044d\u0433\u044d\u044d\u0440\u044d\u043b, \u0431\u044f\u0441\u0430\u043b\u0433\u0430\u043b \u0431\u043e\u043b\u043e\u043d \u0441\u0443\u0440\u0433\u0430\u0430\u043b\u0438\u0439\u043d \u0432\u0438\u0434\u0435\u043e \u0446\u0443\u0433\u043b\u0443\u0443\u043b\u0433\u0430. \ud83d\udd0d \u0411\u04af\u0433\u0434 \u0411\u044f\u0441\u0430\u043b\u0433\u0430\u043b \u0421\u0443\u0440\u0433\u0430\u0430\u043b \u2715","og_url":"https:\/\/gerliinerin.mn\/en\/video-library\/","og_site_name":"\u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0442\u04e9\u0432","article_modified_time":"2026-04-27T08:49:02+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/gerliinerin.mn\/video-library\/","url":"https:\/\/gerliinerin.mn\/video-library\/","name":"Video-library - \u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0442\u04e9\u0432","isPartOf":{"@id":"https:\/\/gerliinerin.mn\/#website"},"datePublished":"2026-04-13T03:26:41+00:00","dateModified":"2026-04-27T08:49:02+00:00","breadcrumb":{"@id":"https:\/\/gerliinerin.mn\/video-library\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gerliinerin.mn\/video-library\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gerliinerin.mn\/video-library\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gerliinerin.mn\/"},{"@type":"ListItem","position":2,"name":"Video-library"}]},{"@type":"WebSite","@id":"https:\/\/gerliinerin.mn\/#website","url":"https:\/\/gerliinerin.mn\/","name":"The Essence of Light Center","description":"Enlightenment, Consciousness, and Inner Awareness","publisher":{"@id":"https:\/\/gerliinerin.mn\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gerliinerin.mn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/gerliinerin.mn\/#organization","name":"The Essence of Light Center","url":"https:\/\/gerliinerin.mn\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/gerliinerin.mn\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/gerliinerin.mn\/wp-content\/uploads\/2026\/04\/lllll.png?fit=2460%2C2484&ssl=1","contentUrl":"https:\/\/i0.wp.com\/gerliinerin.mn\/wp-content\/uploads\/2026\/04\/lllll.png?fit=2460%2C2484&ssl=1","width":2460,"height":2484,"caption":"\u0413\u044d\u0440\u043b\u0438\u0439\u043d \u042d\u0440\u0438\u043d \u0442\u04e9\u0432"},"image":{"@id":"https:\/\/gerliinerin.mn\/#\/schema\/logo\/image\/"}}]}},"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/PgXGUa-cw","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/gerliinerin.mn\/en\/wp-json\/wp\/v2\/pages\/776","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gerliinerin.mn\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gerliinerin.mn\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gerliinerin.mn\/en\/wp-json\/wp\/v2\/users\/274514696"}],"replies":[{"embeddable":true,"href":"https:\/\/gerliinerin.mn\/en\/wp-json\/wp\/v2\/comments?post=776"}],"version-history":[{"count":30,"href":"https:\/\/gerliinerin.mn\/en\/wp-json\/wp\/v2\/pages\/776\/revisions"}],"predecessor-version":[{"id":1051,"href":"https:\/\/gerliinerin.mn\/en\/wp-json\/wp\/v2\/pages\/776\/revisions\/1051"}],"wp:attachment":[{"href":"https:\/\/gerliinerin.mn\/en\/wp-json\/wp\/v2\/media?parent=776"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}