{"id":518,"date":"2026-04-20T19:53:09","date_gmt":"2026-04-20T19:53:09","guid":{"rendered":"https:\/\/mehmetseydiyaroglu.com\/?page_id=518"},"modified":"2026-04-20T21:29:13","modified_gmt":"2026-04-20T21:29:13","slug":"kelime-sanati","status":"publish","type":"page","link":"https:\/\/mehmetseydiyaroglu.com\/kelime-sanati\/","title":{"rendered":"Kelime Sanat\u0131"},"content":{"rendered":"\n<style data-wp-block-html=\"css\">\n<style>\n\/* Genel Ba\u015fl\u0131k Konteyn\u0131r\u0131 *\/\n.galeri-baslik-alani {\n    text-align: left;\n    margin-bottom: 40px;\n    padding-left: 20px;\n    border-left: 6px solid #1a1a1a; \/* \u015e\u0131k dikey siyah \u00e7izgi *\/\n    transition: all 0.3s ease;\n}\n\n\/* Ana Ba\u015fl\u0131k Stili *\/\n.modern-galeri-baslik {\n    font-family: 'Inter', sans-serif; \/* Modern yaz\u0131 tipi *\/\n    font-size: 52px; \/* B\u00fcy\u00fck ve iddial\u0131 *\/\n    font-weight: 900;\n    color: #111;\n    margin: 0;\n    line-height: 1;\n    text-transform: uppercase;\n    letter-spacing: -1.5px;\n}\n\n\/* Alt Metin Stili *\/\n\n\n\n\n\/\/ CSS k\u0131sm\u0131na bunu ekle\/g\u00fcncelle:\n.ks-kart img {\n    width: 100% !important;\n    height: 100% !important;\n    object-fit: cover !important;\n    transition: 0.5s ease;\n    user-select: none !important; \/* Resmin se\u00e7ilmesini engeller *\/\n    -webkit-user-drag: none !important; \/* Taray\u0131c\u0131n\u0131n s\u00fcr\u00fcklemesini engeller *\/\n}\n\n.ks-kart.aktif-zoom {\n    position: fixed;\n    top: 0; left: 0;\n    width: 100vw;\n    height: 100vh;\n    background: rgba(0,0,0,0.9);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    z-index: 999999;\n    cursor: zoom-out;\n}\n\n.ks-kart.aktif-zoom img {\n    width: auto !important;\n    height: auto !important;\n    max-width: 90%;\n    max-height: 90%;\n    object-fit: contain !important;\n    box-shadow: none;\n}\n\n\/\/ Javascript k\u0131sm\u0131n\u0131 bu \"ak\u0131ll\u0131\" versiyonla de\u011fi\u015ftir:\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n    const ks_kutular = document.querySelectorAll(\".ks-kart\");\n    \n    ks_kutular.forEach(k => {\n        k.addEventListener(\"click\", function(e) {\n            e.preventDefault();\n            e.stopPropagation();\n\n            if (this.classList.contains(\"aktif-zoom\")) {\n                this.classList.remove(\"aktif-zoom\");\n                document.body.style.overflow = \"auto\"; \/\/ Kayd\u0131rmay\u0131 geri a\u00e7\n            } else {\n                \/\/ Di\u011fer a\u00e7\u0131k olanlar\u0131 kapat\n                ks_kutular.forEach(i => i.classList.remove(\"aktif-zoom\"));\n                this.classList.add(\"aktif-zoom\");\n                document.body.style.overflow = \"hidden\"; \/\/ Arka plan\u0131n kaymas\u0131n\u0131 engelle\n            }\n        });\n    });\n\n    \/\/ Bo\u015flu\u011fa t\u0131klay\u0131nca kapat\n    document.addEventListener(\"click\", function() {\n        ks_kutular.forEach(k => k.classList.remove(\"aktif-zoom\"));\n        document.body.style.overflow = \"auto\";\n    });\n});\n<\/script>\n.galeri-alt-metin {\n    font-size: 18px;\n    color: #666;\n    font-weight: 400;\n    letter-spacing: 1px;\n    margin-top: 8px;\n    display: block;\n    text-transform: none;\n}\n\n<style>\n\/* G\u00f6rsel kutusunu tam kare (1:1) yapar *\/\n.ks-kart {\n    position: relative;\n    width: 100%;\n    \/* Y\u00fckseklik yerine aspect-ratio kullan\u0131yoruz *\/\n    aspect-ratio: 1 \/ 1 !important; \n    height: auto !important; \n    border-radius: 12px;\n    overflow: hidden;\n    cursor: pointer;\n    box-shadow: 0 4px 15px rgba(0,0,0,0.1);\n}\n\n\/* G\u00f6rselin kutuyu tamamen kaplamas\u0131n\u0131 sa\u011flar (Kesilmeden doldurur) *\/\n.ks-kart img {\n    width: 100% !important;\n    height: 100% !important;\n    object-fit: cover !important; \/* Resmin oran\u0131n\u0131 bozmadan kareye s\u0131\u011fd\u0131r\u0131r *\/\n    transition: 0.5s ease;\n}\n<\/style>\n\n<div class=\"galeri-baslik-alani\">\n    <h1 class=\"modern-galeri-baslik\">KEL\u0130ME SANATI<\/h1>\n    <span class=\"galeri-alt-metin\">G\u00f6rsel \u015eiir ve S\u00f6z Galerisi<\/span>\n<\/div>\n\n<style>\n\/* 1. BA\u015eLIK D\u00dcZENLEME (Resimdeki kaymay\u0131 d\u00fczeltir) *\/\n.galeri-baslik-alani {\n    text-align: left;\n    margin: 40px 0 !important;\n    padding-left: 20px;\n    border-left: 6px solid #1a1a1a;\n    display: block !important;\n    clear: both !important;\n}\n.modern-galeri-baslik {\n    font-family: 'Inter', sans-serif !important;\n    font-size: 52px !important;\n    font-weight: 900 !important;\n    color: #111 !important;\n    margin: 0 !important;\n    line-height: 1 !important;\n    text-transform: uppercase !important;\n}\n.galeri-alt-metin {\n    font-size: 18px !important;\n    color: #666 !important;\n    display: block !important;\n    margin-top: 10px !important;\n}\n\n\/* 2. GALER\u0130 GR\u0130D D\u00dcZEN\u0130 (Yan yana dizilim) *\/\n.ks-galeri-ana-konteynir { width: 100% !important; clear: both !important; display: block !important; }\n.ks-grid-sistemi {\n    display: grid !important;\n    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) !important;\n    gap: 20px !important;\n    padding: 20px 0 !important;\n}\n.ks-kart-yapisi {\n    position: relative;\n    aspect-ratio: 1 \/ 1 !important;\n    border-radius: 12px;\n    overflow: hidden;\n    cursor: pointer;\n    box-shadow: 0 4px 15px rgba(0,0,0,0.1);\n}\n.ks-kart-yapisi img {\n    width: 100% !important; height: 100% !important;\n    object-fit: cover !important; transition: 0.5s ease;\n    -webkit-user-drag: none !important;\n}\n.ks-kart-yapisi:hover img { transform: scale(1.1); }\n\n\/* 3. ZOOM S\u0130STEM\u0130 *\/\n.ks-kart-yapisi.ks-zoom {\n    position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);\n    width: 85vw; height: 85vh; z-index: 999999;\n}\n.ks-kart-yapisi.ks-zoom img { object-fit: contain !important; background: rgba(0,0,0,0.9); }\n\n\/* 4. SAYFALAMA *\/\n.ks-sayfalama-alani { text-align: center; margin-top: 40px; display: flex; justify-content: center; gap: 10px; }\n.ks-sayfa-link { padding: 10px 18px; border: 1px solid #ddd; border-radius: 8px; text-decoration: none; color: #333; }\n.ks-sayfa-link.ks-aktif { background: #000; color: #fff; border-color: #000; }\n\n@media (max-width: 768px) { .modern-galeri-baslik { font-size: 34px !important; } }\n<\/style>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\"><\/div>\n<\/div>\n\n\n<div class=\"ks-galeri-ana-konteynir\"><div class=\"ks-grid-sistemi\"><div class=\"ks-kart-yapisi\"><img decoding=\"async\" src=\"https:\/\/mehmetseydiyaroglu.com\/wp-content\/uploads\/2026\/04\/16.jpg\"><\/div><div class=\"ks-kart-yapisi\"><img decoding=\"async\" src=\"https:\/\/mehmetseydiyaroglu.com\/wp-content\/uploads\/2026\/04\/15.jpg\"><\/div><div class=\"ks-kart-yapisi\"><img decoding=\"async\" src=\"https:\/\/mehmetseydiyaroglu.com\/wp-content\/uploads\/2026\/04\/14.jpg\"><\/div><div class=\"ks-kart-yapisi\"><img decoding=\"async\" src=\"https:\/\/mehmetseydiyaroglu.com\/wp-content\/uploads\/2026\/04\/13.jpg\"><\/div><div class=\"ks-kart-yapisi\"><img decoding=\"async\" src=\"https:\/\/mehmetseydiyaroglu.com\/wp-content\/uploads\/2026\/04\/12.jpg\"><\/div><div class=\"ks-kart-yapisi\"><img decoding=\"async\" src=\"https:\/\/mehmetseydiyaroglu.com\/wp-content\/uploads\/2026\/04\/11.jpg\"><\/div><div class=\"ks-kart-yapisi\"><img decoding=\"async\" src=\"https:\/\/mehmetseydiyaroglu.com\/wp-content\/uploads\/2026\/04\/10.jpg\"><\/div><div class=\"ks-kart-yapisi\"><img decoding=\"async\" src=\"https:\/\/mehmetseydiyaroglu.com\/wp-content\/uploads\/2026\/04\/9.jpg\"><\/div><div class=\"ks-kart-yapisi\"><img decoding=\"async\" src=\"https:\/\/mehmetseydiyaroglu.com\/wp-content\/uploads\/2026\/04\/8.jpg\"><\/div><div class=\"ks-kart-yapisi\"><img decoding=\"async\" src=\"https:\/\/mehmetseydiyaroglu.com\/wp-content\/uploads\/2026\/04\/7.jpg\"><\/div><div class=\"ks-kart-yapisi\"><img decoding=\"async\" src=\"https:\/\/mehmetseydiyaroglu.com\/wp-content\/uploads\/2026\/04\/6.jpg\"><\/div><div class=\"ks-kart-yapisi\"><img decoding=\"async\" src=\"https:\/\/mehmetseydiyaroglu.com\/wp-content\/uploads\/2026\/04\/5.jpg\"><\/div><\/div><\/div><div class=\"ks-sayfalama-alani\"><a href=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F518&#038;galeri_no=1\" class=\"ks-sayfa-link ks-aktif\">1<\/a><a href=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F518&#038;galeri_no=2\" class=\"ks-sayfa-link \">2<\/a><\/div><script>\n    document.addEventListener(\"DOMContentLoaded\", function() {\n        const ksKutular = document.querySelectorAll(\".ks-kart-yapisi\");\n        ksKutular.forEach(k => {\n            k.addEventListener(\"click\", function(e) {\n                if (this.classList.contains(\"ks-zoom\")) { this.classList.remove(\"ks-zoom\"); } \n                else { ksKutular.forEach(i => i.classList.remove(\"ks-zoom\")); this.classList.add(\"ks-zoom\"); }\n                e.stopPropagation();\n            });\n        });\n        document.addEventListener(\"click\", function() { ksKutular.forEach(k => k.classList.remove(\"ks-zoom\")); });\n    });\n    <\/script>\n\n\n\n<style data-wp-block-html=\"css\">\n<style>\n\/* Ana Konteyn\u0131r Ayarlar\u0131 *\/\n.kelime-sanati-container {\n    padding: 50px 20px;\n    background-color: #000; \/* Arka plan siyah *\/\n    text-align: center;\n}\n\n\/* Ba\u015fl\u0131k: Alt\u0131n Rengi *\/\n.section-title {\n    color: #d4af37; \n    font-family: 'Playfair Display', serif;\n    font-size: 42px;\n    margin-bottom: 30px;\n    text-transform: uppercase;\n}\n\n\/* Galeri Izgaras\u0131 *\/\n.ks-grid-yapisi {\n    display: grid !important;\n    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) !important;\n    gap: 20px !important;\n    max-width: 1200px;\n    margin: 0 auto;\n\n\/\/ CSS k\u0131sm\u0131na bunu ekle\/g\u00fcncelle:\n.ks-kart img {\n    width: 100% !important;\n    height: 100% !important;\n    object-fit: cover !important;\n    transition: 0.5s ease;\n    user-select: none !important; \/* Resmin se\u00e7ilmesini engeller *\/\n    -webkit-user-drag: none !important; \/* Taray\u0131c\u0131n\u0131n s\u00fcr\u00fcklemesini engeller *\/\n}\n\n.ks-kart.aktif-zoom {\n    position: fixed;\n    top: 0; left: 0;\n    width: 100vw;\n    height: 100vh;\n    background: rgba(0,0,0,0.9);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    z-index: 999999;\n    cursor: zoom-out;\n}\n\n.ks-kart.aktif-zoom img {\n    width: auto !important;\n    height: auto !important;\n    max-width: 90%;\n    max-height: 90%;\n    object-fit: contain !important;\n    box-shadow: none;\n}\n\n\/\/ Javascript k\u0131sm\u0131n\u0131 bu \"ak\u0131ll\u0131\" versiyonla de\u011fi\u015ftir:\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n    const ks_kutular = document.querySelectorAll(\".ks-kart\");\n    \n    ks_kutular.forEach(k => {\n        k.addEventListener(\"click\", function(e) {\n            e.preventDefault();\n            e.stopPropagation();\n\n            if (this.classList.contains(\"aktif-zoom\")) {\n                this.classList.remove(\"aktif-zoom\");\n                document.body.style.overflow = \"auto\"; \/\/ Kayd\u0131rmay\u0131 geri a\u00e7\n            } else {\n                \/\/ Di\u011fer a\u00e7\u0131k olanlar\u0131 kapat\n                ks_kutular.forEach(i => i.classList.remove(\"aktif-zoom\"));\n                this.classList.add(\"aktif-zoom\");\n                document.body.style.overflow = \"hidden\"; \/\/ Arka plan\u0131n kaymas\u0131n\u0131 engelle\n            }\n        });\n    });\n\n    \/\/ Bo\u015flu\u011fa t\u0131klay\u0131nca kapat\n    document.addEventListener(\"click\", function() {\n        ks_kutular.forEach(k => k.classList.remove(\"aktif-zoom\"));\n        document.body.style.overflow = \"auto\";\n    });\n});\n<\/script>\n}\n\n\/* KART: Tam Kare Ayar\u0131 (1\/1) *\/\n.ks-kart {\n    position: relative;\n    width: 100%;\n    aspect-ratio: 1 \/ 1 !important; \/* BURASI KARE YAPAR *\/\n    border-radius: 15px;\n    overflow: hidden;\n    cursor: pointer;\n    border: 1px solid #333; \/* Hafif belirgin \u00e7er\u00e7eve *\/\n    transition: transform 0.3s ease, border-color 0.3s ease;\n}\n\n.ks-kart:hover {\n    transform: translateY(-10px);\n    border-color: #d4af37; \/* \u00dczerine gelince alt\u0131n \u00e7er\u00e7eve *\/\n}\n\n\/* G\u00f6rselin Kareye Tam Oturmas\u0131 *\/\n.ks-kart img {\n    width: 100% !important;\n    height: 100% !important;\n    object-fit: cover !important; \/* Resim yamulmaz, kareyi doldurur *\/\n    transition: 0.5s ease;\n}\n\n\/* Kart\u0131n alt\u0131ndaki metin karartmas\u0131 (iste\u011fe ba\u011fl\u0131) *\/\n.ks-kart::after {\n    content: '';\n    position: absolute;\n    bottom: 0; left: 0; width: 100%; height: 30%;\n    background: linear-gradient(transparent, rgba(0,0,0,0.8));\n    pointer-events: none;\n}\n<\/style>\n<\/style>\n\n<script data-wp-block-html=\"js\">\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n    const kartlar = document.querySelectorAll('.galeri-kart');\n    \n    const observer = new IntersectionObserver((entries) => {\n        entries.forEach(entry => {\n            if (entry.isIntersecting) {\n                entry.target.style.opacity = 1;\n                entry.target.style.transform = \"translateY(0)\";\n            }\n        });\n    }, { threshold: 0.1 });\n\n    kartlar.forEach(kart => {\n        kart.style.opacity = 0;\n        kart.style.transform = \"translateY(20px)\";\n        kart.style.transition = \"all 0.6s ease-out\";\n        observer.observe(kart);\n    });\n});\n<\/script>\n\n\n\n<style data-wp-block-html=\"css\">\n<style>\n.modern-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));\n    gap: 20px;\n    padding: 20px 0;\n}\n\n.galeri-item {\n    position: relative;\n    overflow: hidden;\n    border-radius: 12px;\n    cursor: pointer;\n    box-shadow: 0 4px 15px rgba(0,0,0,0.1);\n    transition: transform 0.3s ease;\n}\n\n.galeri-item img {\n    width: 100%;\n    height: 250px;\n    object-fit: cover;\n    display: block;\n    transition: filter 0.3s ease, transform 0.5s ease;\n}\n\n\/* \u00dczerine gelince efekt *\/\n.galeri-item:hover {\n    transform: translateY(-5px);\n}\n\n.galeri-item:hover img {\n    filter: brightness(70%);\n    transform: scale(1.1);\n}\n\n.galeri-item::after {\n    content: \"B\u00fcy\u00fctmek i\u00e7in t\u0131kla\";\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    color: white;\n    opacity: 0;\n    transition: opacity 0.3s ease;\n    font-weight: bold;\n    pointer-events: none;\n}\n\n.galeri-item:hover::after {\n    opacity: 1;\n}\n\n\/* Navigasyon Butonlar\u0131 *\/\n#galeri-pagination {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    gap: 20px;\n    margin-top: 30px;\n}\n\n.nav-btn {\n    padding: 10px 25px;\n    background: #333;\n    color: white;\n    border: none;\n    border-radius: 5px;\n    cursor: pointer;\n}\n\n.nav-btn:disabled {\n    background: #ccc;\n    cursor: not-allowed;\n}\n\n\/* Lightbox Tasar\u0131m\u0131 *\/\n.lightbox {\n    display: none;\n    position: fixed;\n    z-index: 9999;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    background: rgba(0,0,0,0.9);\n    align-items: center;\n    justify-content: center;\n}\n\n.lightbox-content {\n    max-width: 90%;\n    max-height: 80%;\n    border-radius: 5px;\n}\n\n.close {\n    position: absolute;\n    top: 20px;\n    right: 35px;\n    color: #fff;\n    font-size: 40px;\n    cursor: pointer;\n}\n<\/style>\n\n<script data-wp-block-html=\"js\">\n\/\/ Sayfalar -> Kelime Sanat\u0131 sayfas\u0131na ekleyece\u011finiz g\u00fcncel JS\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n    let currentPage = 1;\n    const perPage = 12; \n    const folderId = 3; \/\/ BURAYA ADRES \u00c7UBU\u011eUNDAK\u0130 SAYIYI YAZIN\n    const grid = document.getElementById('galeri-grid');\n    const pageInfo = document.getElementById('page-info');\n\n    function fetchImages(page) {\n        grid.style.opacity = '0.5';\n        \n        \/\/ Eklentiler genellikle REST API'ye 'inherit' ve klas\u00f6r filtresi ekler\n        \/\/ E\u011fer eklentiniz FileBird ise: &folder=3 \n        \/\/ E\u011fer standart kategori ise: &media_category=3\n        \/\/ Genellikle klas\u00f6r ID'si ile \u00e7ekmek i\u00e7in \u015fu yol izlenir:\n        fetch(`\/wp-json\/wp\/v2\/media?per_page=${perPage}&page=${page}&parent_folder=${folderId}`)\n        .then(response => {\n            const totalPages = response.headers.get('X-WP-TotalPages');\n            document.getElementById('next-btn').disabled = (page >= totalPages);\n            return response.json();\n        })\n        .then(data => {\n            grid.innerHTML = '';\n            data.forEach(item => {\n                \/\/ G\u00f6rsel yap\u0131s\u0131\n                const div = document.createElement('div');\n                div.className = 'galeri-item';\n                \/\/ Orta boy resmi (medium) y\u00fckleyip h\u0131z\u0131 art\u0131r\u0131yoruz, t\u0131klay\u0131nca tam boy a\u00e7\u0131lacak\n                const thumb = item.media_details.sizes.medium ? item.media_details.sizes.medium.source_url : item.source_url;\n                \n                div.innerHTML = `<img decoding=\"async\" src=\"${thumb}\" alt=\"${item.alt_text}\" data-full=\"${item.source_url}\">`;\n                \n                div.onclick = function() {\n                    document.getElementById('lightbox-img').src = item.source_url;\n                    document.getElementById('lightbox').style.display = 'flex';\n                };\n                grid.appendChild(div);\n            });\n            grid.style.opacity = '1';\n            pageInfo.innerText = `Sayfa ${page}`;\n        })\n        .catch(err => {\n            console.error('Hata:', err);\n            grid.innerHTML = '<p>Resimler y\u00fcklenirken bir hata olu\u015ftu veya bu klas\u00f6r bo\u015f.<\/p>';\n            grid.style.opacity = '1';\n        });\n    }\n\n    \/\/ Navigasyon butonlar\u0131 (\u00d6nceki kodla ayn\u0131)\n    document.getElementById('next-btn').onclick = () => { currentPage++; fetchImages(currentPage); document.getElementById('prev-btn').disabled = false; window.scrollTo(0,0); };\n    document.getElementById('prev-btn').onclick = () => { if(currentPage > 1){ currentPage--; fetchImages(currentPage); if(currentPage===1) this.disabled=true; window.scrollTo(0,0); } };\n\n    fetchImages(currentPage);\n});\n<\/script>\n<\/script>\n\n<div id=\"kelime-sanati-galeri-container\">\n    <div id=\"galeri-grid\" class=\"modern-grid\">\n        <\/div>\n    <div id=\"galeri-pagination\">\n        <button id=\"prev-btn\" class=\"nav-btn\" disabled=\"\">Geri<\/button>\n        <span id=\"page-info\">Sayfa 1<\/span>\n        <button id=\"next-btn\" class=\"nav-btn\">\u0130leri<\/button>\n    <\/div>\n<\/div>\n\n<div id=\"lightbox\" class=\"lightbox\" onclick=\"this.style.display='none'\">\n    <span class=\"close\">\u00d7<\/span>\n    <img class=\"lightbox-content\" id=\"lightbox-img\">\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>KEL\u0130ME SANATI G\u00f6rsel \u015eiir ve S\u00f6z Galerisi Geri Sayfa 1 \u0130leri \u00d7<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"{\"document\":\"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AIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAoEAhACBAIQAgQCEAIEAhAGBAIQAgQCEAIEAhACBAIQAgQCEAIEAhAGBAIQBgQCEAoEAhACBAIQBgQCEAIEAhACBAIQAgQCEAIEAhAKBAIQCgQCEAIEAhASBAIQAgQCEAIEAhAGBAIQBgQCEAIEAhACBAIQAgQCEAIEAhAGBAIQAgQCEAYEAhAOBAIQAgQCEAIEAhACBAIQEgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhAGBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAIEAhACBAIQAgQCEAYEAhAChA6gAxEChAUcAKAInASgAJwCoAUcAKAInASgAJwCoASgAwQLEA8EAxAOhAagAxAChAUcAKAInASgAJwAEAIQBKADBAMQAwQDEAMEAxADBA8QAwQfEAcECxADBBMQAoQGoAMQBwQUoC6gbxACoAMQCwQDEAMEAxAHBAMQAwQDEAMEAxADBAMQAwQDEAMEAxAHBAMQAwQDEAMEAxADBAMQAwQDEAMEAxAHBAMQAwQDEAMEAxADBAMQAwQDEAcEAxADBAMQAwQDEAcEAxADBAMQAwQDEA8EAxADBAMQAwQDEBMEAxADBAMQAwQDEAMEAxAHBAMQAwQDEAMEAxADBAMQAwQDEAMEAxADBAMQAwQDEAMEAxADBAMQCwQDEAMEAxAHBAMQAwQDEAMEAxADBAMQBwQDEAMEAxADBAMQAwQDEAcEAxADBAMQAwRDEAMEAxADBAMQAwQbEAMEAxADBAMQBwQDEAMECxAChAagAxDTBEcQBwQXEAaEBqADBBqEBqAGHACgCJwEoACcAxwAoAicBKAAnAIEAqADEgwGhAagBxAGhAagAxALBAMQAwQDEAMEAxADBAMQAwQDEAMEAxADBAMQAwQDEAcEAxAGhAagAxADBAcQBwQKhAagAwQahAagAxASoAUcAKAInASgAJwCoASgABwAoAicAKAAnAAcAKAInACgAJwCoAsEBxACoAccAJwEoAwcAKAInACgAJwDE9oQBjX9zdGF0ZXZlcnNpb25kb2N1bWVudGRhdGVkb2N1bWVudHN0YXR1c2RvY3VtZW50dGl0bGVPdG9tYXRpayB0YXNsYWtkb2N1bWVudGNvbnRlbnRkb2N1bWVudGV4Y2VycHRkb2N1bWVudGF1dGhvcmRvY3VtZW50ZmVhdHVyZWRfbWVkaWFkb2N1bWVudGNvbW1lbnRfc3RhdHVzZG9jdW1lbnRwaW5nX3N0YXR1c2RvY3VtZW50dGVtcGxhdGVkb2N1bWVudG1ldGFmb290bm90ZXNfZWxlbWVudG9yX2VkaXRfbW9kZV9lbGVtZW50b3JfdGVtcGxhdGVfdHlwZV9lbGVtZW50b3JfZGF0YV9lbGVtZW50b3JfcGFnZV9zZXR0aW5nc2RvY3VtZW50YmxvY2tzS2VsbWVTbnTEsWNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2NrczwhLS0gd3A6dG1sIC8tLT5jbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3MtLT4KPHN0eWxlIGRhdGEtd3AtYmxvY2staHRtbD0iY3NzIj4KLmtlbGltZS1zYW5hdGktY29udGFpbmVyIHsKICAgIHBhZGRpbmc6IDUwcHggMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDA7ICogQXJrYSBwbGFuIHNpeWFoICovCiAgICB0ZXh0YWxpZ246IGNlbnRlcjsKfQoKLnNlY3Rpb250aXRsZSB7CiAgICBjb2xvcjogI2Q0YWYzNzsgCiAgICBmb250LWZhbWlseTogJ1BsYXlmYWlyIERpc3BsYXknLCBzZXJpZjsKICAgIG1hcmdpbi1ib3R0b206IDMwcHg7Cn0KCmFsZXJpLXJhcCB7CiAgICBkaXNwbGF5OiA7CiAgICBsZS1yYXAgcnA7CiAgICBpb3RudDsKICAgIGE6IDIwcHg7Cn0KCmFlci1rYXJ0IHsKICAgIHdpZHRoOiAwMDsKICAgIGV0OiBwOwogICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBwb2luIHJlbGFpdmUKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2UgYm9yZGVyb2wgMzsKfQoKLi1rYXJ0OmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7Cn0KCi5rYXJ0aSB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJjLWk6IGNvdmVyOyAgIGFrcm91bnNpdGlvbjogZWU7CiAgbGEgZWludG1zIGVlCi5rYXJ0ZXIgewogICAgY29uOiAgICAgdGluIG9sdSAgdG0gICAgd2lkdGg6IDEwMCU7IGlnOiAwOwogICAgYmFja3JvOiBsYXItaW5ybnNyZW50IGE7CiAgICBpbmUtZXQ6IDsKfQo8L3N0eWxlCgo8c2NyaXB0IGRhdGEtd3AtYmxvY2staHRtbD0ianMiPgpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICBjb25zdCBrYXJ0bGFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmdhbGVyaS1rYXJ0Jyk7CiAgICAKICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7CiAgICAgICAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHsKICAgICAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7CiAgICAgICAgICAgICAgICBlbnRyeS50YXJnZXQuc3R5bGUub3BhY2l0eSA9IDE7CiAgICAgICAgICAgICAgICBlbnRyeS50YXJnZXQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZVkoMCkiOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9LCB7IHRocmVzaG9sZDogMC4xIH0pOwoKICAgIGthcnRsYXIuZm9yRWFjaChrYXJ0ID0+IHsKICAgICAgICBrYXJ0LnN0eWxlLm9wYWNpdHkgPSAwOwogICAgICAgIGthcnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZVkoMjBweCkiOwogICAgICAgIGthcnQuc3R5bGUudHJhbnNpdGlvbiA9ICJhbGwgMC42cyBlYXNlLW91dCI7CiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShrYXJ0KTsKICAgIH0pOwp9KTsKPC9zY3JpcHQ+CjwhLS0gL3dwOmh0bWwgLS0+Cgo8IS0tIHdwOmggLy0tPmRvY3VtZW50c2x1Z3N0YXRlc2F2ZWRBdHN0YXRlc2F2ZWRCeXRtbC0tPgo8c3R5bGUgZGF0YS13cC1ibG9jay1odG1sPSJjc3MiPgo8c3R5bGU+Ci5tb2Rlcm4tZ3JpZCB7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjUwcHgsIDFmcikpOwogICAgZ2FwOiAyMHB4OwogICAgcGFkZGluZzogMjBweCAwOwp9CgouZ2FsZXJpLWl0ZW0gewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMCwwLDAsMC4xKTsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2U7Cn0KCi5nYWxlcmktaXRlbSBpbWcgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDI1MHB4OwogICAgb2JqZWN0LWZpdDogY292ZXI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRyYW5zaXRpb246IGZpbHRlciAwLjNzIGVhc2UsIHRyYW5zZm9ybSAwLjVzIGVhc2U7Cn0KCiogw5x6ZXJpbmUgZ2VsaW5jZSBlZmVrdCAqLwouZ2FsZXJpaXRlbTpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNXB4KTsKfQoKLmdhbGVyaS1pdGVtOmhvdmVyIGltZyB7CiAgICBmaWx0ZXI6IGJyaWdodG5lc3MoNzAlKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTsKfQoKLmdhbGVyaS1pdGVtOjphZnRlciB7CiAgICBjb250ZW50OiAiQsO8ecO8dG1layBpw6dpbiB0xLFrbGEiOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA1MCU7CiAgICBsZWZ0OiA1MCU7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIG9wYWNpdHk6IDA7CiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cn0KCi5nYWxlcmktaXRlbTpob3Zlcjo6YWZ0ZXIgewogICAgb3BhY2l0eTogMTsKfQoKLyogTmF2aWdhc3lvbiBCdXRvbmxhcsSxICovCiNnYWxlcmktcGFnaW5hdGlvbiB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgZ2FwOiAyMHB4OwogICAgbWFyZ2luLXRvcDogMzBweDsKfQoKLm5hdi1idG4gewogICAgcGFkZGluZzogMTBweCAyNXB4OwogICAgYmFja2dyb3VuZDogIzMzMzsKICAgIGNvbG9yOiB3aGl0ZTsKICAgIGJvcmRlcjogbm9uZTsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLm5hdi1idG46ZGlzYWJsZWQgewogICAgYmFja2dyb3VuZDogI2NjYzsKICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7Cn0KCi8qIExpZ2h0Ym94IFRhc2FyxLFtxLEgKi8KLmxpZ2h0Ym94IHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB6LWluZGV4OiA5OTk5OwogICAgdG9wOiAwOwogICAgbGVmdDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjkpOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwp9CgoubGlnaHRib3gtY29udGVudCB7CiAgICBtYXgtd2lkdGg6IDkwJTsKICAgIG1heC1oZWlnaHQ6IDgwJTsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKfQoKLmNsb3NlIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMjBweDsKICAgIHJpZ2h0OiAzNXB4OwogICAgY29sb3I6ICNmZmY7CiAgICBmb250LXNpemU6IDQwcHg7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KPC9zdHlsZQoKPHNjcmlwdCBkYXRhLXdwLWJsb2NrLWh0bWw9ImpzIj4KPHNjcmlwdD4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKCkgewogICAgbGV0IGN1cnJlbnRQYWdlID0gMTsKICAgIGNvbnN0IHBlclBhZ2UgPSAxMjsgICBzZmQgICAKICAgIGNvbnN0IGdyaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2FsZXJpLWdyaWQnKTsKICAgIGNvbnN0IHBhZ2VJbmZvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtaW5mbycpOwoKICAgIGZ1bmN0aW9uIGZldGNoSW1hZ2VzKHBhZ2UpIHsKICAgICAgICBncmlkLnN0eWxlLm9wYWNpdHkgPSAnMC41JzsKICAgICAgICAKICAgICAgICAvLyByZSBSRVNUIEFQSSBrbGFyIHJlc2kgZWtyCiAgICAgICAgLy8gRcSfZXIgZWxpIGlyIHNyICByIHNuYSAmbWVkaWFfY2F0ZWdvcnk9IGVrbGVscnNpbml6CiAgICAgICAgZmV0Y2goYC93cC1qc29uL3dwL3YyL21lZGlhP3Blcl9wYWdlPSR7cGVyUGFnZX0mcGFnZT0ke3BhZ2V9JmF0ZT1lYCkKICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHRvdGFsUGFnZXMgPSByZXNwb25zZS5oZWFkZXJzLmdldCgnWC1XUC1Ub3RhbFBhZ2VzJyk7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCduZXh0LWJ0bicpLmRpc2FibGVkID0gKGFlID0gYWxlOwogICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpOwogICAgICAgIH0pCiAgICAgICAgLnRoZW4oZGF0YSA9PiB7CiAgICAgICAgICAgIGdyaWQuaW5uZXJIVE1MID0gJyc7CiAgICAgICAgICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICAgICAgZGl2LmNsYXNzTmFtZSA9ICdnYWxlcmktaXRlbSc7CiAgICAgICAgICAgICAgICBkaXYuaW5uZXJIVE1MID0gYDxpbWcgc3JjPSIke3R1fSIgYWx0PSIke2l0ZW0uYWx0X3RleHR9IiBkYXRhLWZ1bGw9IiR7aXRlbS5zb3VyY2VfdXJsfSI+YDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZGl2Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGlnaHRib3gtaW1nJykuc3JjID0gaXRlbS5zb3VyY2VfdXJsOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaWdodGJveCcpLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgZ3JpZC5hcHBlbmRDaGlsZChkaXYpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgZ3JpZC5zdHlsZS5vcGFjaXR5ID0gJzEnOwogICAgICAgICAgICBwYWdlSW5mby5pbm5lclRleHQgPSBgU2F5ZmEgJHtwYWdlfWA7CiAgICAgICAgfSkKICAgICAgICAuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoJ0hhdGE6JywgZXJyKSk7CiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25leHQtYnRuJykub25jbGljayA9ICgpID0+IHsgY3VycmVudFBhZ2UrKzsgZmV0Y2hJbWFnZXMoY3VycmVudFBhZ2UpOyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJldi1idG4nKS5kaXNhYmxlZCA9IGZhbHNlOyB3aW5kb3cuc2Nyb2xsVG8oMCwwKTsgfTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmV2LWJ0bicpLm9uY2xpY2sgPSAoKSA9PiB7IGlmKGN1cnJlbnRQYWdlID4gMSl7IGN1cnJlbnRQYWdlLS07IGZldGNoSW1hZ2VzKGN1cnJlbnRQYWdlKTsgaWYoY3VycmVudFBhZ2U9PT0xKSB0LmRpc2FibGVkPXRydWU7IHdpbmRvdy5zY3JvbGxUbygwLDApOyB9IH07CgogICAgZmV0Y2hJbWFnZXMoY3VycmVudFBhZ2UpOwp9KTsKPC9zY3JpcHQ+Cjwvc2NyaXB0PgoKPGRpdiBpZD0ia2VsaW1lLXNhbmF0aS1nYWxlcmktY29udGFpbmVyIj4KICAgIDxkaXYgaWQ9ImdhbGVyaS1ncmlkIiBjbGFzcz0ibW9kZXJuLWdyaWQiPgogICAgICAgIDwvZGl2PgogICAgPGRpdiBpZD0iZ2FsZXJpLXBhZ2luYXRpb24iPgogICAgICAgIDxidXR0b24gaWQ9InByZXYtYnRuIiBjbGFzcz0ibmF2LWJ0biIgZGlzYWJsZWQ+R2VyaTwvYnV0dG9uPgogICAgICAgIDxzcGFuIGlkPSJwYWdlLWluZm8iPlNheWZhIDE8L3NwYW4+CiAgICAgICAgPGJ1dHRvbiBpZD0ibmV4dC1idG4iIGNsYXNzPSJuYXYtYnRuIj7EsGxlcmk8L2J1dHRvbj4KICAgIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgaWQ9ImxpZ2h0Ym94IiBjbGFzcz0ibGlnaHRib3giIG9uY2xpY2s9InRoaXMuc3R5bGUuZGlzcGxheT0nbm9uZSciPgogICAgPHNwYW4gY2xhc3M9ImNsb3NlIj48L3NwYW4+CiAgICA8aW1nIGNsYXNzPSJsaWdodGJveC1jb250ZW50IiBpZD0ibGlnaHRib3gtaW1nIj4KPC9kaXY+CjwhLS0gL3dwOmh0bWwgLS0+Ly8gU2F5ZmFsYXIgLT4gS2VsaW1lIFNhbmF0xLEgc2F5ZmFzxLFuYSBla2xleWVjZcSfaW5peiBnw7xuY2VsIEpTCgogIGNvbnQgb2xlcklkPTM7Ly8gQlVSQVlBIEFEUkVTIMOHVUJVxJ5VTkRBS8SwIFNBWUlZSSBZQVpJTkVrbGVudGlsZSBnbmVsbGlrbGUneWUnaW5oZXJpdCcgdmUgc8O2ZmlsdGxla2VudG5pekZsZUJpZGllOiAmZm9sZGU9MwogICAgICAgLy8gRcSfZXRhZHJ0a2F0ZWdvcmkgaXNlOiAzCiAgICAgICAvLyBHbmVsbGkga2Fzw7YgSUQnIGlsZSDDp2VrbWVrIGnDp2kgxZ91IHlvbCBsZW5pcjpwcmVuX2ZvbGRyJHtmb2xkcklkfXBnPnRvdFBhZ3MpLy8gR8O2cnNlbCB5YXDEsXPEsQogICAgICAgICAgICAgICAgLy8gT3J0YSBib3kgcmVzbWkgKG1ldW0pIHnDvGtsZXlpcCBoxLF6xLEgYXJ0xLFyxLF5b3J1eiwgdMSxa2xhecSxbmNhIHRhbSBib3kgYcOnxLFsYWNhawogICAgICAgICAgICAgICAgY29uc3QgdGh1bWIgPSBpdGVtLm1lZGlhX2RldGFpbHMuc2l6ZXMubWVkaXVtID8gaXRlbS5tZWRpYV9kZXRhaWxzLnNpemVzLm1lZGl1bS5zb3VyY2VfdXJsIDogaXRlbS5zb3VyY2VfdXJsOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBkaWhtYnsKICAgICAgICAgICAgOwogICAgICAgICAgICBncmlkLmlubmVySFRNTCA9ICc8cD5SZXNpbWxlciB5w7xrbGVuaXJrZW4gYmlyIGhhdGEgb2x1xZ90dSB2ZXlhIGJ1IGtsYXPDtnIgYm\/Fny48L3A+JzsKICAgICAgICAgICAgZ3JpZC5zdHlsZS5vcGFjaXR5ID0gJzEnOwogICAgICAgIH0vLyBOYXZpZ2FzeW9uIGJ1dG9ubGFyxLEgKMOWbmNla2kga29sYSBheW7EsSkKICAgIGRoaXM9IiLDl2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBpbm5lckJsb2Nrc3RleHRjb2RlIC0tPgpba2VsaWVfZ2FlcmldCjwhLS0vd3A6c2hvcnRjb2RlIAohLS0gd3A6aHRtbCAtLT4KPHNhbmF0aV9jbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3M8c3Ryb25nPktlbGltZSBTYW5hdMSxPC9zdHJvbmc+c3R5bGVodGwgLS08c2hvcjxrYmQ+a2JkPjwvb3JpZ2luYWxDb250ZW50cGxhY2Vob2xkZXJkaXJlY3Rpb25hbGlnbmNsYXNzTmFtZWJhY2tncm91bmRDb2xvcnRleHRDb2xvcmdyYWRpZW50Zm9udFNpemVmb250RmFtaWx5Ym9yZGVyQ29sb3JhbmNob3JtLS0+CjxzdHlsZSBkYXRhLXdwLWJsb2NrLWh0bWw9ImNzcyI+CjxzdHlsZT4KLmdhbGVyaS1hIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7ICAgIGFyaW4gCiAgICBhaW50OiAwcHg7CiAgICBib3JkZXJsZWZ0OiBweCBzb2xpZCAjOyAvKiDEsWsgZGlrZXkgw6dpemdpICovCiAgICBhbnQ6IDsKfQoKa2xpbWUtYWktaXRsZSAKICAgIGZvbnQtc2l6ZTogcHg7IC8qIMO8ecO8ayAqLwogICAgZm9udC13ZWlnaHQ6IDAwOwogICAgY29sb3I6ICMxMTE7CiAgICBtYXJnaW46IDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KCi5hbGktYWx0LW1ldGluIHsKICAgIGZvbnQtc2l6ZTogMXB4OwogICAgY29sb3I6ICM2NjY7CiAgICBmb250LXRsZTogYWk7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIC10bzogOwp9CgpkaXYgY2xhc3M9ImdhbGVyaS1hIj4KICAgIDxzcGFuIGNsYXNzPSJhbGktYWx0LW1ldGluIj5Hw7Zyc2VsIMWeaWlyIHZlIFPDtnogR2FsZXJpc2k8L3NwYW4+CjwvZGl2PgoKPCEtLSB3cDovKiBHZW5lbCBCYcWfbMSxayBLb250ZXluxLFyxLEgKi8KYnNsaWstYWxhbmkKbWctYm90dG9tOjQwcHg7cGRkZ2xlZjI2MWExYTFhxZ5zaXlhaCB0cnNpaW9uYWxsIDAuM3MgZWFzZS8qIEFuYSBCYcWfbMSxIFN0aSAqLwoub2RybmdsZXJiYXNsayB7CiAgICBmb24tZmFtaXk6ICdJbnRyJyxzYW5zLXNlcmlmOyAvKiBNb2Rlcm4geWF6xLEgdGlwaSAqLzUyQnZlIGlkZGlhbMSxIDkgICAgbGV0dGVyLXNwYWNpbmc6IC0xLjVweDsKLyogQWx0IE1ldGluIFN0aWxpICovCmdlcjh3ZWlnaDogNDAwOwogICAgdHRlci1zcGFjaW5nMXB4OwogICAgbXJnbi10b3A6IDhweHRleHRyYW5zZnJtbm9uZWJzbGlrLWFsYW5pZ2VyY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGlubmVyQmxvY2tzPHN0eWxlPgovKiBBbmEgS29udGV5bsSxciBBeWFybGFyxLEgKi8KMnB4LyogQmHFn2zEsWs6IEFsdMSxbiBSZW5naSAqLwpmb250LXNpemU6IDQycHg7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKLyogRyBJemdhcmFzxLEgKi8KLmtzZ2lkLXlpc2lncmlkICFpbXBvcnRhbnRncmlkLXRlbXBhdGNvbHVtbnM6IGVwZXQoYXV0by1maWxsLCBtaW5tYXgoMjgweCwxZikpICFpbW9ydGFudGdhcDogMjBweCAhbXByYW14LXdpZHRoMTAgICAgbWFyZ2luOiAwIGF1dG87Ci8qIEtBUlQ6IFRtIEthciBBeWHEsSAoMS8xKSAqLwoua3Nwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAxJWFzcGMtcmF0aW8xIC8gMSAhaW1vcnRhbnQgLyogQlVSQVNJIEtBUkUgWUFQQVIgKi9jdXJzb3I6IHRlcjsKICAgYm9kcjogMXB4IHNvaWQgIzMzMzsgLyogSGZmIGJlbGlyZ2luIMOnZXLDp2UgKi8sLWNvcjAucyBlYXNla3MgICAgYm9yZGVyLWNvbG9yOiAjZDRhZjM3OyAvKiDDnHplcmluZSBnZWxpbmNlIGFsdMSxbiDDp2Vyw6dldmUgKi8KLyogR8O2cnNlbGluIEthcmV5ZSBUYW0gT3R1cm1hc8SxICovCnMtayBtZyAhaW1wb3J0YW50ICFpbXBvcnRhbnRvamV0ZnQgIWltcG9ydGFudC8qUmVzaW15bXVsbWF6LCBhZXlpIGRsZHJ1ciAqLwogICAgdHJhMC41cyBhc30KCi8qS2FydMSxbmF0xLFuZGtpbXQga2FyYXJhxLEoaXN0xJ8gYmHEn2zEsSkgKi9zLWs6OmFmdHRlbnQnJzsKcG9zaW86YWJzdGU7CiAgYm90bzowO2xlZnQ6MDtoZWh0MyVndW5kaW5lZ3JhZGV0KHRhcGEscmdiKDAsMCwwLDAuOCkpcG90cnZlbnNub25lPC9zdHlsZT4KCi8vIENTUyBrxLFzbcSxbmEgYnVudSBla2xlL2fDvG5jZWxsZToKLmtzLWthcnQgaW1nIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIG9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnQ7CiAgICB0cmFuc2l0aW9uOiAwLjVzIGVhc2U7CiAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50OyAvKiBSZXNtaW4gc2XDp2lsbWVzaW5pIGVuZ2VsbGVyICovCiAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZSAhaW1wb3J0YW50OyAvKiBUYXJhecSxY8SxbsSxbiBzw7xyw7xrbGVtZXNpbmkgZW5nZWxsZXIgKi8KLmtzLWthcnQuYWt0aWYtem9vbSB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7IGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwdnc7CiAgICBoZWlnaHQ6IDEwMHZoOwogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjkpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHotaW5kZXg6IDk5OTk5OTsKICAgIGN1cnNvcjogem9vbS1vdXQ7Cn0KCi5rcy1rYXJ0LmFrdGlmLXpvb20gaW1nIHsKICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogOTAlOwogICAgbWF4LWhlaWdodDogOTAlOwogICAgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZTsKfQoKLy8gSmF2YXNjcmlwdCBrxLFzbcSxbsSxIGJ1ICJha8SxbGzEsSIgdmVyc2l5b25sYSBkZcSfacWfdGlyOgo8c2NyaXB0Pgpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICBjb25zdCBrc19rdXR1bGFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmtzLWthcnQiKTsKICAgIAogICAga3Nfa3V0dWxhci5mb3JFYWNoKGsgPT4gewogICAgICAgIGsuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKCiAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzTGlzdC5jb250YWlucygiYWt0aWYtem9vbSIpKSB7CiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiYXV0byI7IC8vIEtheWTEsXJtYXnEsSBnZXJpIGHDpwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gRGnEn2VyIGHDp8SxayBvbGFubGFyxLEga2FwYXQKICAgICAgICAgICAgICAgIGtzX2t1dHVsYXIuZm9yRWFjaChpID0+IGkuY2xhc3NMaXN0LnJlbW92ZSgiYWt0aWYtem9vbSIpKTsKICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NMaXN0LmFkZCgiYWt0aWYtem9vbSIpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOyAvLyBBcmthIHBsYW7EsW4ga2F5bWFzxLFuxLEgZW5nZWxsZQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBCb8WfbHXEn2EgdMSxa2xhecSxbmNhIGthcGF0CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgIGtzX2t1dHVsYXIuZm9yRWFjaChrID0+IGsuY2xhc3NMaXN0LnJlbW92ZSgiYWt0aWYtem9vbSIpKTsKICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImF1dG8iOwogICAgfSk7Cn0pOwo8L3NjcmlwdD4KfQoKCgoKCi8vIENTUyBrxLFzbcSxbmEgYnVudSBla2xlL2fDvG5jZWxsZToKLmtzLWthcnQgaW1nIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIG9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnQ7CiAgICB0cmFuc2l0aW9uOiAwLjVzIGVhc2U7CiAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50OyAvKiBSZXNtaW4gc2XDp2lsbWVzaW5pIGVuZ2VsbGVyICovCiAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZSAhaW1wb3J0YW50OyAvKiBUYXJhecSxY8SxbsSxbiBzw7xyw7xrbGVtZXNpbmkgZW5nZWxsZXIgKi8KfQoKLmtzLWthcnQuYWt0aWYtem9vbSB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7IGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwdnc7CiAgICBoZWlnaHQ6IDEwMHZoOwogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjkpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHotaW5kZXg6IDk5OTk5OTsKICAgIGN1cnNvcjogem9vbS1vdXQ7Cn0KCi5rcy1rYXJ0LmFrdGlmLXpvb20gaW1nIHsKICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogOTAlOwogICAgbWF4LWhlaWdodDogOTAlOwogICAgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZTsKfQoKLy8gSmF2YXNjcmlwdCBrxLFzbcSxbsSxIGJ1ICJha8SxbGzEsSIgdmVyc2l5b25sYSBkZcSfacWfdGlyOgo8c2NyaXB0Pgpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICBjb25zdCBrc19rdXR1bGFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmtzLWthcnQiKTsKICAgIAogICAga3Nfa3V0dWxhci5mb3JFYWNoKGsgPT4gewogICAgICAgIGsuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKCiAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzTGlzdC5jb250YWlucygiYWt0aWYtem9vbSIpKSB7CiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiYXV0byI7IC8vIEtheWTEsXJtYXnEsSBnZXJpIGHDpwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gRGnEn2VyIGHDp8SxayBvbGFubGFyxLEga2FwYXQKICAgICAgICAgICAgICAgIGtzX2t1dHVsYXIuZm9yRWFjaChpID0+IGkuY2xhc3NMaXN0LnJlbW92ZSgiYWt0aWYtem9vbSIpKTsKICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NMaXN0LmFkZCgiYWt0aWYtem9vbSIpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOyAvLyBBcmthIHBsYW7EsW4ga2F5bWFzxLFuxLEgZW5nZWxsZQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBCb8WfbHXEn2EgdMSxa2xhecSxbmNhIGthcGF0CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgIGtzX2t1dHVsYXIuZm9yRWFjaChrID0+IGsuY2xhc3NMaXN0LnJlbW92ZSgiYWt0aWYtem9vbSIpKTsKICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImF1dG8iOwogICAgfSk7Cn0pOwo8L3NjcmlwdD4KPHN0eWxlPgovKiBHw7Zyc2VsIGt1dHVzdW51IHRhbSBrYXJlICgxOjEpIHlhcGFyICovCi5rcy1rYXJ0IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgLyogWcO8a3Nla2xpayB5ZXJpbmUgYXNwZWN0LXJhdGlvIGt1bGxhbsSxeW9ydXogKi8KICAgIGFzcGVjdC1yYXRpbzogMSAvIDEgIWltcG9ydGFudDsgCiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgCiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgwLDAsMCwwLjEpOwp9CgovKiBHw7Zyc2VsaW4ga3V0dXl1IHRhbWFtZW4ga2FwbGFtYXPEsW7EsSBzYcSfbGFyIChLZXNpbG1lZGVuIGRvbGR1cnVyKSAqLwoua3Mta2FydCBpbWcgewogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDsgLyogUmVzbWluIG9yYW7EsW7EsSBib3ptYWRhbiBrYXJleWUgc8SxxJ9kxLFyxLFyICovCiAgICB0cmFuc2l0aW9uOiAwLjVzIGVhc2U7Cn0KPC9zdHlsZT4KCgo8c3R5bGU+Ci5nYWxlcmktYmFzbGlrLWFsYW5pIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBib3JkZXItbGVmdDogNnB4IHNvbGlkICMxYTFhMWE7Cn0KLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgIGZvbnQtc2l6ZTogNTJweCAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IDkwMCAhaW1wb3J0YW50OwogICAgY29sb3I6ICMxMTEgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgbGluZS1oZWlnaHQ6IDEgIWltcG9ydGFudDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsKfQouZ2FsZXJpLWFsdC1tZXRpbiB7CiAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDsKICAgIGNvbG9yOiAjNjY2ICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50Owp9Cgp9Cjwvc3R5bGU+CiAgICA8aDEgY2xhc3M9Im1vZGVybi1nYWxlcmktYmFzbGlrIj5LRUzEsE1FIFNBTkFUSTwvaDE+CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgY2xlYXI6IGJvdGggIWltcG9ydGFudDsKICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7Ci8qIDEuIEJBxZ5MSUsgRMOcWkVOTEVNRSAoUmVzaW1kZWtpIGtheW1hecSxIGTDvHplbHRpcikgKi8KICAgIG1hcmdpbjogNDBweCAwICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAxMHB4ICFpbXBvcnRhbnQ7Ci8qIDIuIEdBTEVSxLAgR1LEsEQgRMOcWkVOxLAgKFlhbiB5YW5hIGRpemlsaW0pICovCi5rcy1nYWxlcmktYW5hLWtvbnRleW5pciB7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGNsZWFyOiBib3RoICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0KLmtzLWdyaWQtc2lzdGVtaSB7CiAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyODBweCwgMWZyKSkgIWltcG9ydGFudDsKICAgIGdhcDogMjBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMjBweCAwICFpbXBvcnRhbnQ7Ci5rcy1rYXJ0LXlhcGlzaSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBhc3BlY3QtcmF0aW86IDEgLyAxICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgwLDAsMCwwLjEpOwp9Ci5rcy1rYXJ0LXlhcGlzaSBpbWcgewogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OyB0cmFuc2l0aW9uOiAwLjVzIGVhc2U7CiAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZSAhaW1wb3J0YW50Owp9Ci5rcy1rYXJ0LXlhcGlzaTpob3ZlciBpbWcgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7IH0KCi8qIDMuIFpPT00gU8SwU1RFTcSwICovCi5rcy1rYXJ0LXlhcGlzaS5rcy16b29tIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsgdG9wOiA1MCU7IGxlZnQ6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB3aWR0aDogODV2dzsgaGVpZ2h0OiA4NXZoOyB6LWluZGV4OiA5OTk5OTk7Cn0KLmtzLWthcnQteWFwaXNpLmtzLXpvb20gaW1nIHsgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuOSk7IH0KCi8qIDQuIFNBWUZBTEFNQSAqLwoua3Mtc2F5ZmFsYW1hLWFsYW5pIHsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOiA0MHB4OyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiAxMHB4OyB9Ci5rcy1zYXlmYS1saW5rIHsgcGFkZGluZzogMTBweCAxOHB4OyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBib3JkZXItcmFkaXVzOiA4cHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgY29sb3I6ICMzMzM7IH0KLmtzLXNheWZhLWxpbmsua3MtYWt0aWYgeyBiYWNrZ3JvdW5kOiAjMDAwOyBjb2xvcjogI2ZmZjsgYm9yZGVyLWNvbG9yOiAjMDAwOyB9CgpAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsgLm1vZGVybi1nYWxlcmktYmFzbGlrIHsgZm9udC1zaXplOiAzNHB4ICFpbXBvcnRhbnQ7IH0gfQpjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwaW5uZXJCbG9ja3Npc1N0YWNrZWRPbk1vYmlsZWNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzd2lkdGhpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGlubmVyQmxvY2tzPCEtLSAvd3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OiBjZW50ZXI7CiAgICBnYXA6IDIwcHg7Cn0KCi5nYWxlcmkta2FydCB7CiAgICB3aWR0aDogMzAwcHg7CiAgICBoZWlnaHQ6IDQwMHB4OwogICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlOwogICAgYm9yZGVyOiAxcHggc29saWQgIzMzMzsKfQoKLmdhbGVyaS1rYXJ0OmhvdmVyIHsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7Cn0KCi5rYXJ0LWljZXJpayB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICAgIGJhY2tncm91bmQtc2l6ZTogY292ZXI7CiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kOwp9Cgoua2FydC1vdmVybGF5IHsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC42KTsgLyogTWV0aW4gb2t1bnVybHXEn3UgacOnaW4ga2FyYXJ0bWEgKi8KICAgIHdpZHRoOiAxMDAlOwogICAgcGFkZGluZzogMjBweDsKICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigycHgpOwp9Cgoua2FydC1tZXRpbiB7CiAgICBjb2xvcjogI2ZmZjsKICAgIGZvbnQtc2l6ZTogMS4xcmVtOwogICAgZm9udC1zdHlsZTogaXRhbGljOwogICAgbGluZS1oZWlnaHQ6IDEuNTsKfQo8L3N0eWxlPgoKPHNjcmlwdCBkYXRhLXdwLWJsb2NrLWh0bWw9ImpzIj4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgY29uc3Qga2FydGxhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5nYWxlcmkta2FydCcpOwogICAgCiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT4gewogICAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7CiAgICAgICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykgewogICAgICAgICAgICAgICAgZW50cnkudGFyZ2V0LnN0eWxlLm9wYWNpdHkgPSAxOwogICAgICAgICAgICAgICAgZW50cnkudGFyZ2V0LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGVZKDApIjsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSwgeyB0aHJlc2hvbGQ6IDAuMSB9KTsKCiAgICBrYXJ0bGFyLmZvckVhY2goa2FydCA9PiB7CiAgICAgICAga2FydC5zdHlsZS5vcGFjaXR5ID0gMDsKICAgICAgICBrYXJ0LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGVZKDIwcHgpIjsKICAgICAgICBrYXJ0LnN0eWxlLnRyYW5zaXRpb24gPSAiYWxsIDAuNnMgZWFzZS1vdXQiOwogICAgICAgIG9ic2VydmVyLm9ic2VydmUoa2FydCk7CiAgICB9KTsKfSk7Cjwvc2NyaXB0PnckMjExOGM5NzYtY2ZhZC00MmRlLTljNzMtYzI2ZTg5ZmU4ZTdheHcOY29yZS9wYXJhZ3JhcGh5dwdwdWJsaXNodxMyMDI2LTA0LTIwVDE5OjUzOjA5dw1rZWxpbWUtc2FuYXRpdyQ4NTg4YjJhNS02NjE5LTQyZGQtOTFjNi1lNDUwYTJiMmZlMzB3CWNvcmUvaHRtbHfdJDxzdHlsZSBkYXRhLXdwLWJsb2NrLWh0bWw9ImNzcyI+CjxzdHlsZT4KLm1vZGVybi1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyNTBweCwgMWZyKSk7CiAgICBnYXA6IDIwcHg7CiAgICBwYWRkaW5nOiAyMHB4IDA7Cn0KCi5nYWxlcmktaXRlbSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgwLDAsMCwwLjEpOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTsKfQoKLmdhbGVyaS1pdGVtIGltZyB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMjUwcHg7CiAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdHJhbnNpdGlvbjogZmlsdGVyIDAuM3MgZWFzZSwgdHJhbnNmb3JtIDAuNXMgZWFzZTsKfQoKLyogw5x6ZXJpbmUgZ2VsaW5jZSBlZmVrdCAqLwouZ2FsZXJpLWl0ZW06aG92ZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwp9CgouZ2FsZXJpLWl0ZW06aG92ZXIgaW1nIHsKICAgIGZpbHRlcjogYnJpZ2h0bmVzcyg3MCUpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwp9CgouZ2FsZXJpLWl0ZW06OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICJCw7x5w7x0bWVrIGnDp2luIHTEsWtsYSI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgY29sb3I6IHdoaXRlOwogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmdhbGVyaS1pdGVtOmhvdmVyOjphZnRlciB7CiAgICBvcGFjaXR5OiAxOwp9CgovKiBOYXZpZ2FzeW9uIEJ1dG9ubGFyxLEgKi8KI2dhbGVyaS1wYWdpbmF0aW9uIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDIwcHg7CiAgICBtYXJnaW4tdG9wOiAzMHB4Owp9CgoubmF2LWJ0biB7CiAgICBwYWRkaW5nOiAxMHB4IDI1cHg7CiAgICBiYWNrZ3JvdW5kOiAjMzMzOwogICAgY29sb3I6IHdoaXRlOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgoubmF2LWJ0bjpkaXNhYmxlZCB7CiAgICBiYWNrZ3JvdW5kOiAjY2NjOwogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoKLyogTGlnaHRib3ggVGFzYXLEsW3EsSAqLwoubGlnaHRib3ggewogICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDk5OTk7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuOSk7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi5saWdodGJveC1jb250ZW50IHsKICAgIG1heC13aWR0aDogOTAlOwogICAgbWF4LWhlaWdodDogODAlOwogICAgYm9yZGVyLXJhZGl1czogNXB4Owp9CgouY2xvc2UgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAyMHB4OwogICAgcmlnaHQ6IDM1cHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIGZvbnQtc2l6ZTogNDBweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQo8L3N0eWxlPgo8L3N0eWxlPgoKPHNjcmlwdCBkYXRhLXdwLWJsb2NrLWh0bWw9ImpzIj4KPHNjcmlwdD4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKCkgewogICAgbGV0IGN1cnJlbnRQYWdlID0gMTsKICAgIGNvbnN0IHBlclBhZ2UgPSAxMjsgLy8gSGVyIHNheWZhZGEga2HDpyByZXNpbSBnw7Zyw7xuc8O8bj8KICAgIGNvbnN0IGdyaWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZ2FsZXJpLWdyaWQnKTsKICAgIGNvbnN0IHBhZ2VJbmZvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhZ2UtaW5mbycpOwoKICAgIGZ1bmN0aW9uIGZldGNoSW1hZ2VzKHBhZ2UpIHsKICAgICAgICBncmlkLnN0eWxlLm9wYWNpdHkgPSAnMC41JzsgLy8gWcO8a2xlbml5b3IgZWZla3RpCiAgICAgICAgCiAgICAgICAgLy8gV29yZFByZXNzIFJFU1QgQVBJIGt1bGxhbmFyYWsgcmVzaW1sZXJpIMOnZWtpeW9ydXoKICAgICAgICAvLyBOb3Q6IEXEn2VyIGJlbGxpIGJpciBrbGFzw7ZyIElEJ25peiB2YXJzYSBzb251bmEgJm1lZGlhX2NhdGVnb3J5PUlEIGVrbGV5ZWJpbGlyc2luaXoKICAgICAgICBmZXRjaChgL3dwLWpzb24vd3AvdjIvbWVkaWE\/cGVyX3BhZ2U9JHtwZXJQYWdlfSZwYWdlPSR7cGFnZX0mbWVkaWFfdHlwZT1pbWFnZWApCiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gewogICAgICAgICAgICBjb25zdCB0b3RhbFBhZ2VzID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ1gtV1AtVG90YWxQYWdlcycpOwogICAgICAgICAgICBpZiAocGFnZSA+PSB0b3RhbFBhZ2VzKSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV4dC1idG4nKS5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgIGVsc2UgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25leHQtYnRuJykuZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5qc29uKCk7CiAgICAgICAgfSkKICAgICAgICAudGhlbihkYXRhID0+IHsKICAgICAgICAgICAgZ3JpZC5pbm5lckhUTUwgPSAnJzsKICAgICAgICAgICAgZGF0YS5mb3JFYWNoKGl0ZW0gPT4gewogICAgICAgICAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgICAgICBkaXYuY2xhc3NOYW1lID0gJ2dhbGVyaS1pdGVtJzsKICAgICAgICAgICAgICAgIGRpdi5pbm5lckhUTUwgPSBgPGltZyBzcmM9IiR7aXRlbS5zb3VyY2VfdXJsfSIgYWx0PSIke2l0ZW0uYWx0X3RleHR9IiBkYXRhLWZ1bGw9IiR7aXRlbS5zb3VyY2VfdXJsfSI+YDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZGl2Lm9uY2xpY2sgPSBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGlnaHRib3gtaW1nJykuc3JjID0gaXRlbS5zb3VyY2VfdXJsOwogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaWdodGJveCcpLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7CiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBncmlkLmFwcGVuZENoaWxkKGRpdik7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBncmlkLnN0eWxlLm9wYWNpdHkgPSAnMSc7CiAgICAgICAgICAgIHBhZ2VJbmZvLmlubmVyVGV4dCA9IGBTYXlmYSAke3BhZ2V9YDsKICAgICAgICB9KQogICAgICAgIC5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcignSGF0YTonLCBlcnIpKTsKICAgIH0KCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV4dC1idG4nKS5vbmNsaWNrID0gKCkgPT4gewogICAgICAgIGN1cnJlbnRQYWdlKys7CiAgICAgICAgZmV0Y2hJbWFnZXMoY3VycmVudFBhZ2UpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmV2LWJ0bicpLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOwogICAgfTsKCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJldi1idG4nKS5vbmNsaWNrID0gKCkgPT4gewogICAgICAgIGlmIChjdXJyZW50UGFnZSA+IDEpIHsKICAgICAgICAgICAgY3VycmVudFBhZ2UtLTsKICAgICAgICAgICAgZmV0Y2hJbWFnZXMoY3VycmVudFBhZ2UpOwogICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgPT09IDEpIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmV2LWJ0bicpLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApOwogICAgICAgIH0KICAgIH07CgogICAgZmV0Y2hJbWFnZXMoY3VycmVudFBhZ2UpOwp9KTsKPC9zY3JpcHQ+Cjwvc2NyaXB0PgoKPGRpdiBpZD0ia2VsaW1lLXNhbmF0aS1nYWxlcmktY29udGFpbmVyIj4KICAgIDxkaXYgaWQ9ImdhbGVyaS1ncmlkIiBjbGFzcz0ibW9kZXJuLWdyaWQiPgogICAgICAgIDwvZGl2PgogICAgPGRpdiBpZD0iZ2FsZXJpLXBhZ2luYXRpb24iPgogICAgICAgIDxidXR0b24gaWQ9InByZXYtYnRuIiBjbGFzcz0ibmF2LWJ0biIgZGlzYWJsZWQ+R2VyaTwvYnV0dG9uPgogICAgICAgIDxzcGFuIGlkPSJwYWdlLWluZm8iPlNheWZhIDE8L3NwYW4+CiAgICAgICAgPGJ1dHRvbiBpZD0ibmV4dC1idG4iIGNsYXNzPSJuYXYtYnRuIj7EsGxlcmk8L2J1dHRvbj4KICAgIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgaWQ9ImxpZ2h0Ym94IiBjbGFzcz0ibGlnaHRib3giIG9uY2xpY2s9InRoaXMuc3R5bGUuZGlzcGxheT0nbm9uZSciPgogICAgPHNwYW4gY2xhc3M9ImNsb3NlIj4mdGltZXM7PC9zcGFuPgogICAgPGltZyBjbGFzcz0ibGlnaHRib3gtY29udGVudCIgaWQ9ImxpZ2h0Ym94LWltZyI+CjwvZGl2Pnf7JzxzdHlsZSBkYXRhLXdwLWJsb2NrLWh0bWw9ImNzcyI+CjxzdHlsZT4KLm1vZGVybi1ncmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyNTBweCwgMWZyKSk7CiAgICBnYXA6IDIwcHg7CiAgICBwYWRkaW5nOiAyMHB4IDA7Cn0KCi5nYWxlcmktaXRlbSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgwLDAsMCwwLjEpOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTsKfQoKLmdhbGVyaS1pdGVtIGltZyB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMjUwcHg7CiAgICBvYmplY3QtZml0OiBjb3ZlcjsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdHJhbnNpdGlvbjogZmlsdGVyIDAuM3MgZWFzZSwgdHJhbnNmb3JtIDAuNXMgZWFzZTsKfQoKLyogw5x6ZXJpbmUgZ2VsaW5jZSBlZmVrdCAqLwouZ2FsZXJpLWl0ZW06aG92ZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01cHgpOwp9CgouZ2FsZXJpLWl0ZW06aG92ZXIgaW1nIHsKICAgIGZpbHRlcjogYnJpZ2h0bmVzcyg3MCUpOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwp9CgouZ2FsZXJpLWl0ZW06OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICJCw7x5w7x0bWVrIGnDp2luIHTEsWtsYSI7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICB0b3A6IDUwJTsKICAgIGxlZnQ6IDUwJTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgY29sb3I6IHdoaXRlOwogICAgb3BhY2l0eTogMDsKICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlOwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQoKLmdhbGVyaS1pdGVtOmhvdmVyOjphZnRlciB7CiAgICBvcGFjaXR5OiAxOwp9CgovKiBOYXZpZ2FzeW9uIEJ1dG9ubGFyxLEgKi8KI2dhbGVyaS1wYWdpbmF0aW9uIHsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBnYXA6IDIwcHg7CiAgICBtYXJnaW4tdG9wOiAzMHB4Owp9CgoubmF2LWJ0biB7CiAgICBwYWRkaW5nOiAxMHB4IDI1cHg7CiAgICBiYWNrZ3JvdW5kOiAjMzMzOwogICAgY29sb3I6IHdoaXRlOwogICAgYm9yZGVyOiBub25lOwogICAgYm9yZGVyLXJhZGl1czogNXB4OwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgoubmF2LWJ0bjpkaXNhYmxlZCB7CiAgICBiYWNrZ3JvdW5kOiAjY2NjOwogICAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoKLyogTGlnaHRib3ggVGFzYXLEsW3EsSAqLwoubGlnaHRib3ggewogICAgZGlzcGxheTogbm9uZTsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHotaW5kZXg6IDk5OTk7CiAgICB0b3A6IDA7CiAgICBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuOSk7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi5saWdodGJveC1jb250ZW50IHsKICAgIG1heC13aWR0aDogOTAlOwogICAgbWF4LWhlaWdodDogODAlOwogICAgYm9yZGVyLXJhZGl1czogNXB4Owp9CgouY2xvc2UgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAyMHB4OwogICAgcmlnaHQ6IDM1cHg7CiAgICBjb2xvcjogI2ZmZjsKICAgIGZvbnQtc2l6ZTogNDBweDsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQo8L3N0eWxlPgoKPHNjcmlwdCBkYXRhLXdwLWJsb2NrLWh0bWw9ImpzIj4KLy8gU2F5ZmFsYXIgLT4gS2VsaW1lIFNhbmF0xLEgc2F5ZmFzxLFuYSBla2xleWVjZcSfaW5peiBnw7xuY2VsIEpTCjxzY3JpcHQ+CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbigpIHsKICAgIGxldCBjdXJyZW50UGFnZSA9IDE7CiAgICBjb25zdCBwZXJQYWdlID0gMTI7IAogICAgY29uc3QgZm9sZGVySWQgPSAzOyAvLyBCVVJBWUEgQURSRVMgw4dVQlXEnlVOREFLxLAgU0FZSVlJIFlBWklOCiAgICBjb25zdCBncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2dhbGVyaS1ncmlkJyk7CiAgICBjb25zdCBwYWdlSW5mbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWdlLWluZm8nKTsKCiAgICBmdW5jdGlvbiBmZXRjaEltYWdlcyhwYWdlKSB7CiAgICAgICAgZ3JpZC5zdHlsZS5vcGFjaXR5ID0gJzAuNSc7CiAgICAgICAgCiAgICAgICAgLy8gRWtsZW50aWxlciBnZW5lbGxpa2xlIFJFU1QgQVBJJ3llICdpbmhlcml0JyB2ZSBrbGFzw7ZyIGZpbHRyZXNpIGVrbGVyCiAgICAgICAgLy8gRcSfZXIgZWtsZW50aW5peiBGaWxlQmlyZCBpc2U6ICZmb2xkZXI9MyAKICAgICAgICAvLyBFxJ9lciBzdGFuZGFydCBrYXRlZ29yaSBpc2U6ICZtZWRpYV9jYXRlZ29yeT0zCiAgICAgICAgLy8gR2VuZWxsaWtsZSBrbGFzw7ZyIElEJ3NpIGlsZSDDp2VrbWVrIGnDp2luIMWfdSB5b2wgaXpsZW5pcjoKICAgICAgICBmZXRjaChgL3dwLWpzb24vd3AvdjIvbWVkaWE\/cGVyX3BhZ2U9JHtwZXJQYWdlfSZwYWdlPSR7cGFnZX0mcGFyZW50X2ZvbGRlcj0ke2ZvbGRlcklkfWApCiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gewogICAgICAgICAgICBjb25zdCB0b3RhbFBhZ2VzID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ1gtV1AtVG90YWxQYWdlcycpOwogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV4dC1idG4nKS5kaXNhYmxlZCA9IChwYWdlID49IHRvdGFsUGFnZXMpOwogICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpOwogICAgICAgIH0pCiAgICAgICAgLnRoZW4oZGF0YSA9PiB7CiAgICAgICAgICAgIGdyaWQuaW5uZXJIVE1MID0gJyc7CiAgICAgICAgICAgIGRhdGEuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICAgICAgICAgIC8vIEfDtnJzZWwgeWFwxLFzxLEKICAgICAgICAgICAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICAgICAgZGl2LmNsYXNzTmFtZSA9ICdnYWxlcmktaXRlbSc7CiAgICAgICAgICAgICAgICAvLyBPcnRhIGJveSByZXNtaSAobWVkaXVtKSB5w7xrbGV5aXAgaMSxesSxIGFydMSxcsSxeW9ydXosIHTEsWtsYXnEsW5jYSB0YW0gYm95IGHDp8SxbGFjYWsKICAgICAgICAgICAgICAgIGNvbnN0IHRodW1iID0gaXRlbS5tZWRpYV9kZXRhaWxzLnNpemVzLm1lZGl1bSA\/IGl0ZW0ubWVkaWFfZGV0YWlscy5zaXplcy5tZWRpdW0uc291cmNlX3VybCA6IGl0ZW0uc291cmNlX3VybDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZGl2LmlubmVySFRNTCA9IGA8aW1nIHNyYz0iJHt0aHVtYn0iIGFsdD0iJHtpdGVtLmFsdF90ZXh0fSIgZGF0YS1mdWxsPSIke2l0ZW0uc291cmNlX3VybH0iPmA7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGRpdi5vbmNsaWNrID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpZ2h0Ym94LWltZycpLnNyYyA9IGl0ZW0uc291cmNlX3VybDsKICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGlnaHRib3gnKS5zdHlsZS5kaXNwbGF5ID0gJ2ZsZXgnOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIGdyaWQuYXBwZW5kQ2hpbGQoZGl2KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGdyaWQuc3R5bGUub3BhY2l0eSA9ICcxJzsKICAgICAgICAgICAgcGFnZUluZm8uaW5uZXJUZXh0ID0gYFNheWZhICR7cGFnZX1gOwogICAgICAgIH0pCiAgICAgICAgLmNhdGNoKGVyciA9PiB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0hhdGE6JywgZXJyKTsKICAgICAgICAgICAgZ3JpZC5pbm5lckhUTUwgPSAnPHA+UmVzaW1sZXIgecO8a2xlbmlya2VuIGJpciBoYXRhIG9sdcWfdHUgdmV5YSBidSBrbGFzw7ZyIGJvxZ8uPC9wPic7CiAgICAgICAgICAgIGdyaWQuc3R5bGUub3BhY2l0eSA9ICcxJzsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBOYXZpZ2FzeW9uIGJ1dG9ubGFyxLEgKMOWbmNla2kga29kbGEgYXluxLEpCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbmV4dC1idG4nKS5vbmNsaWNrID0gKCkgPT4geyBjdXJyZW50UGFnZSsrOyBmZXRjaEltYWdlcyhjdXJyZW50UGFnZSk7IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmV2LWJ0bicpLmRpc2FibGVkID0gZmFsc2U7IHdpbmRvdy5zY3JvbGxUbygwLDApOyB9OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZXYtYnRuJykub25jbGljayA9ICgpID0+IHsgaWYoY3VycmVudFBhZ2UgPiAxKXsgY3VycmVudFBhZ2UtLTsgZmV0Y2hJbWFnZXMoY3VycmVudFBhZ2UpOyBpZihjdXJyZW50UGFnZT09PTEpIHRoaXMuZGlzYWJsZWQ9dHJ1ZTsgd2luZG93LnNjcm9sbFRvKDAsMCk7IH0gfTsKCiAgICBmZXRjaEltYWdlcyhjdXJyZW50UGFnZSk7Cn0pOwo8L3NjcmlwdD4KPC9zY3JpcHQ+Cgo8ZGl2IGlkPSJrZWxpbWUtc2FuYXRpLWdhbGVyaS1jb250YWluZXIiPgogICAgPGRpdiBpZD0iZ2FsZXJpLWdyaWQiIGNsYXNzPSJtb2Rlcm4tZ3JpZCI+CiAgICAgICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJnYWxlcmktcGFnaW5hdGlvbiI+CiAgICAgICAgPGJ1dHRvbiBpZD0icHJldi1idG4iIGNsYXNzPSJuYXYtYnRuIiBkaXNhYmxlZD0iIj5HZXJpPC9idXR0b24+CiAgICAgICAgPHNwYW4gaWQ9InBhZ2UtaW5mbyI+U2F5ZmEgMTwvc3Bhbj4KICAgICAgICA8YnV0dG9uIGlkPSJuZXh0LWJ0biIgY2xhc3M9Im5hdi1idG4iPsSwbGVyaTwvYnV0dG9uPgogICAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ibGlnaHRib3giIGNsYXNzPSJsaWdodGJveCIgb25jbGljaz0idGhpcy5zdHlsZS5kaXNwbGF5PSdub25lJyI+CiAgICA8c3BhbiBjbGFzcz0iY2xvc2UiPsOXPC9zcGFuPgogICAgPGltZyBjbGFzcz0ibGlnaHRib3gtY29udGVudCIgaWQ9ImxpZ2h0Ym94LWltZyI+CjwvZGl2PnckYjIwY2NmNTctYTViNy00NDdkLWJjYzMtN2M5ZTQzZDk4ZjA4eHcOY29yZS9wYXJhZ3JhcGh5dyQxYWQ2ZTQ3Yi0xMzAxLTRiYzUtOTVlNC02MzA0Njk5NTI4NjB3CWNvcmUvY29kZXckODU0MjcxMjUtYTlmYi00ZWI2LTlhNTktMGIwMTAwYzE2ZDEyeHcOY29yZS9wYXJhZ3JhcGh5dyQ0MTYxN2VjOC1hNTFiLTRiOTctYWNlMC1iMzZiMTNkMzJkOTd3DmNvcmUvc2hvcnRjb2RldxFba2VsaW1lX2dhbGVyaXNpXXcWW2tlbGltZV9zYW5hdGlfZ2FsZXJpXXckNzVlMzViOGYtNTdmZC00ZTA0LTlkNDYtZWRiMGIyMTViNDVmeHcOY29yZS9wYXJhZ3JhcGh5dgEKdHlwb2dyYXBoeXYBCXRleHRBbGlnbncGY2VudGVydgEKdHlwb2dyYXBoeXYBCXRleHRBbGlnbncEbGVmdHdCPHAgY2xhc3M9Imhhcy10ZXh0LWFsaWduLWxlZnQiPjxzdHJvbmc+S2VsaW1lIFNhbmF0xLE8L3N0cm9uZz48L3A+f39\/f39\/f39\/f39\/f39\/f39\/f39\/f3l3YTxkaXYgY2xhc3M9ImdhbGVyaS1iYXNsaWsta29udGV5bmlyIj4KICAgIDxoMiBjbGFzcz0ic2Fpci15ZW5pLWJhc2xpayI+S2VsaW1lIFNhbmF0xLE8L2gyPgo8L2Rpdj5\/f39\/f39\/f39\/f3ckY2M1NTg0NGEtZjAzOC00YTMzLThkODQtNjMzMGJkYTRkMzcweHckODg5M2M0NTgtMmJlOS00NjIyLWI1ZDItMzA2ZTA0ZjQzNDQzdwljb3JlL2h0bWx3rAc8c3R5bGUgZGF0YS13cC1ibG9jay1odG1sPSJjc3MiPgo8c3R5bGU+Ci5nYWxlcmktaGVhZGVyIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7IC8qIFNlbmluIHRlcmNpaGluZSBnw7ZyZSAnY2VudGVyJyBkYSB5YXBhYmlsaXJzaW4gKi8KICAgIG1hcmdpbi1ib3R0b206IDMwcHg7CiAgICBib3JkZXItbGVmdDogNXB4IHNvbGlkICMzMzM7IC8qIFlhbsSxbmEgxZ\/EsWsgYmlyIGRpa2V5IMOnaXpnaSAqLwogICAgcGFkZGluZy1sZWZ0OiAxNXB4Owp9Cgoua2VsaW1lLXNhbmF0aS10aXRsZSB7CiAgICBmb250LXNpemU6IDQ4cHg7IC8qIFlhesSxecSxIGJheWHEn8SxIGLDvHnDvHR0w7xrICovCiAgICBmb250LXdlaWdodDogODAwOwogICAgY29sb3I6ICMxYTFhMWE7CiAgICBtYXJnaW46IDA7CiAgICBsaW5lLWhlaWdodDogMS4xOwogICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwp9CgouYmFzbGlrLWFsdC1tZXRpbiB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBjb2xvcjogIzY2NjsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLXRvcDogNXB4Owp9CgovKiBNb2JpbCBjaWhhemxhcmRhIGJhxZ9sxLHEn8SxbiDDp29rIGRldmFzYSBkdXJtYW1hc8SxIGnDp2luIGF5YXIgKi8KQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAua2VsaW1lLXNhbmF0aS10aXRsZSB7CiAgICAgICAgZm9udC1zaXplOiAzMnB4OwogICAgfQp9Cjwvc3R5bGU+Cjwvc3R5bGU+Cgo8ZGl2IGNsYXNzPSJnYWxlcmktaGVhZGVyIj4KICAgIDxoMSBjbGFzcz0ia2VsaW1lLXNhbmF0aS10aXRsZSI+S2VsaW1lIFNhbmF0xLE8L2gxPgogICAgPHNwYW4gY2xhc3M9ImJhc2xpay1hbHQtbWV0aW4iPkfDtnJzZWwgxZ5paXIgdmUgU8O2eiBHYWxlcmlzaTwvc3Bhbj4KPC9kaXY+d6MHPHN0eWxlIGRhdGEtd3AtYmxvY2staHRtbD0iY3NzIj4KPHN0eWxlPgouZ2FsZXJpLWhlYWRlciB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OyAvKiBTZW5pbiB0ZXJjaWhpbmUgZ8O2cmUgJ2NlbnRlcicgZGEgeWFwYWJpbGlyc2luICovCiAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgYm9yZGVyLWxlZnQ6IDVweCBzb2xpZCAjMzMzOyAvKiBZYW7EsW5hIMWfxLFrIGJpciBkaWtleSDDp2l6Z2kgKi8KICAgIHBhZGRpbmctbGVmdDogMTVweDsKfQoKLmtlbGltZS1zYW5hdGktdGl0bGUgewogICAgZm9udC1zaXplOiA0OHB4OyAvKiBZYXrEsXnEsSBiYXlhxJ\/EsSBiw7x5w7x0dMO8ayAqLwogICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgIGNvbG9yOiAjMWExYTFhOwogICAgbWFyZ2luOiAwOwogICAgbGluZS1oZWlnaHQ6IDEuMTsKICAgIGxldHRlci1zcGFjaW5nOiAtMXB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKLmJhc2xpay1hbHQtbWV0aW4gewogICAgZm9udC1zaXplOiAxNnB4OwogICAgY29sb3I6ICM2NjY7CiAgICBmb250LXN0eWxlOiBpdGFsaWM7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi10b3A6IDVweDsKfQoKLyogTW9iaWwgY2loYXpsYXJkYSBiYcWfbMSxxJ\/EsW4gw6dvayBkZXZhc2EgZHVybWFtYXPEsSBpw6dpbiBheWFyICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgLmtlbGltZS1zYW5hdGktdGl0bGUgewogICAgICAgIGZvbnQtc2l6ZTogMzJweDsKICAgIH0KfQo8L3N0eWxlPgoKPGRpdiBjbGFzcz0iZ2FsZXJpLWhlYWRlciI+CiAgICA8aDEgY2xhc3M9ImtlbGltZS1zYW5hdGktdGl0bGUiPktlbGltZSBTYW5hdMSxPC9oMT4KICAgIDxzcGFuIGNsYXNzPSJiYXNsaWstYWx0LW1ldGluIj5Hw7Zyc2VsIMWeaWlyIHZlIFPDtnogR2FsZXJpc2k8L3NwYW4+CjwvZGl2PneiCTxzdHlsZSBkYXRhLXdwLWJsb2NrLWh0bWw9ImNzcyI+CjxzdHlsZT4KLyogR2VuZWwgQmHFn2zEsWsgS29udGV5bsSxcsSxICovCi5nYWxlcmktYmFzbGlrLWFsYW5pIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBtYXJnaW4tYm90dG9tOiA0MHB4OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjMWExYTFhOyAvKiDFnsSxayBkaWtleSBzaXlhaCDDp2l6Z2kgKi8KICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi8qIEFuYSBCYcWfbMSxayBTdGlsaSAqLwoubW9kZXJuLWdhbGVyaS1iYXNsaWsgewogICAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7IC8qIE1vZGVybiB5YXrEsSB0aXBpICovCiAgICBmb250LXNpemU6IDUycHg7IC8qIELDvHnDvGsgdmUgaWRkaWFsxLEgKi8KICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBjb2xvcjogIzExMTsKICAgIG1hcmdpbjogMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGxldHRlci1zcGFjaW5nOiAtMS41cHg7Cn0KCi8qIEFsdCBNZXRpbiBTdGlsaSAqLwouZ2FsZXJpLWFsdC1tZXRpbiB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBjb2xvcjogIzY2NjsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgbWFyZ2luLXRvcDogOHB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQoKLyogTW9iaWwgVXl1bWx1bHVrIChUZWxlZm9ubGFyZGEgdGHFn21hbWFzxLEgacOnaW4pICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgICAgICBmb250LXNpemU6IDM0cHg7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7CiAgICB9CiAgICAuZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgIH0KfQo8L3N0eWxlPgo8L3N0eWxlPgoKPGRpdiBjbGFzcz0iZ2FsZXJpLWJhc2xpay1hbGFuaSI+CiAgICA8aDEgY2xhc3M9Im1vZGVybi1nYWxlcmktYmFzbGlrIj5LZWxpbWUgU2FuYXTEsTwvaDE+CiAgICA8c3BhbiBjbGFzcz0iZ2FsZXJpLWFsdC1tZXRpbiI+R8O2cnNlbCDFnmlpciB2ZSBTw7Z6IEdhbGVyaXNpPC9zcGFuPgo8L2Rpdj53zQ88c3R5bGUgZGF0YS13cC1ibG9jay1odG1sPSJjc3MiPgo8c3R5bGU+Ci8qIEdlbmVsIEJhxZ9sxLFrIEtvbnRleW7EsXLEsSAqLwouZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgbWFyZ2luLWJvdHRvbTogNDBweDsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIGJvcmRlci1sZWZ0OiA2cHggc29saWQgIzFhMWExYTsgLyogxZ7EsWsgZGlrZXkgc2l5YWggw6dpemdpICovCiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9CgovKiBBbmEgQmHFn2zEsWsgU3RpbGkgKi8KLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmOyAvKiBNb2Rlcm4geWF6xLEgdGlwaSAqLwogICAgZm9udC1zaXplOiA1MnB4OyAvKiBCw7x5w7xrIHZlIGlkZGlhbMSxICovCiAgICBmb250LXdlaWdodDogOTAwOwogICAgY29sb3I6ICMxMTE7CiAgICBtYXJnaW46IDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2luZzogLTEuNXB4Owp9CgovKiBBbHQgTWV0aW4gU3RpbGkgKi8KLmdhbGVyaS1hbHQtbWV0aW4gewogICAgZm9udC1zaXplOiAxOHB4OwogICAgY29sb3I6ICM2NjY7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgIG1hcmdpbi10b3A6IDhweDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7Cn0KCi8qIE1vYmlsIFV5dW1sdWx1ayAoVGVsZWZvbmxhcmRhIHRhxZ9tYW1hc8SxIGnDp2luKSAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgIC5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7CiAgICAgICAgZm9udC1zaXplOiAzNHB4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4OwogICAgfQogICAgLmdhbGVyaS1iYXNsaWstYWxhbmkgewogICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICB9Cn0KPC9zdHlsZT4KPC9zdHlsZT4KCjxkaXYgY2xhc3M9ImdhbGVyaS1iYXNsaWstYWxhbmkiPgogICAgPGgxIGNsYXNzPSJtb2Rlcm4tZ2FsZXJpLWJhc2xpayI+S2VsaW1lIFNhbmF0xLE8L2gxPgogICAgPHNwYW4gY2xhc3M9ImdhbGVyaS1hbHQtbWV0aW4iPkfDtnJzZWwgxZ5paXIgdmUgU8O2eiBHYWxlcmlzaTwvc3Bhbj4KPC9kaXY+Cgo8c3R5bGU+Ci8qIE9ydGFrIFRhc2FyxLFtIEtvZGxhcsSxICovCi5nYWxlcmktYmFzbGlrLWFsYW5pIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBtYXJnaW4tYm90dG9tOiA0MHB4OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjMWExYTFhOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiA1MnB4ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogOTAwICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzExMSAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBsaW5lLWhlaWdodDogMSAhaW1wb3J0YW50OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50OwogICAgbGV0dGVyLXNwYWNpbmc6IC0xLjVweCAhaW1wb3J0YW50Owp9CgouZ2FsZXJpLWFsdC1tZXRpbiB7CiAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDsKICAgIGNvbG9yOiAjNjY2ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7CiAgICBsZXR0ZXItc3BhY2luZzogMXB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiA4cHggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgLm1vZGVybi1nYWxlcmktYmFzbGlrIHsgZm9udC1zaXplOiAzNHB4ICFpbXBvcnRhbnQ7IH0KfQo8L3N0eWxlPneiCTxzdHlsZSBkYXRhLXdwLWJsb2NrLWh0bWw9ImNzcyI+CjxzdHlsZT4KLyogR2VuZWwgQmHFn2zEsWsgS29udGV5bsSxcsSxICovCi5nYWxlcmktYmFzbGlrLWFsYW5pIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBtYXJnaW4tYm90dG9tOiA0MHB4OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjMWExYTFhOyAvKiDFnsSxayBkaWtleSBzaXlhaCDDp2l6Z2kgKi8KICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi8qIEFuYSBCYcWfbMSxayBTdGlsaSAqLwoubW9kZXJuLWdhbGVyaS1iYXNsaWsgewogICAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7IC8qIE1vZGVybiB5YXrEsSB0aXBpICovCiAgICBmb250LXNpemU6IDUycHg7IC8qIELDvHnDvGsgdmUgaWRkaWFsxLEgKi8KICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBjb2xvcjogIzExMTsKICAgIG1hcmdpbjogMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGxldHRlci1zcGFjaW5nOiAtMS41cHg7Cn0KCi8qIEFsdCBNZXRpbiBTdGlsaSAqLwouZ2FsZXJpLWFsdC1tZXRpbiB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBjb2xvcjogIzY2NjsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgbWFyZ2luLXRvcDogOHB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQoKLyogTW9iaWwgVXl1bWx1bHVrIChUZWxlZm9ubGFyZGEgdGHFn21hbWFzxLEgacOnaW4pICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgICAgICBmb250LXNpemU6IDM0cHg7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7CiAgICB9CiAgICAuZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgIH0KfQo8L3N0eWxlPgo8L3N0eWxlPgoKPGRpdiBjbGFzcz0iZ2FsZXJpLWJhc2xpay1hbGFuaSI+CiAgICA8aDEgY2xhc3M9Im1vZGVybi1nYWxlcmktYmFzbGlrIj5LZWxpbWUgU2FuYXTEsTwvaDE+CiAgICA8c3BhbiBjbGFzcz0iZ2FsZXJpLWFsdC1tZXRpbiI+R8O2cnNlbCDFnmlpciB2ZSBTw7Z6IEdhbGVyaXNpPC9zcGFuPgo8L2Rpdj53zQ88c3R5bGUgZGF0YS13cC1ibG9jay1odG1sPSJjc3MiPgo8c3R5bGU+Ci8qIEdlbmVsIEJhxZ9sxLFrIEtvbnRleW7EsXLEsSAqLwouZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgbWFyZ2luLWJvdHRvbTogNDBweDsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIGJvcmRlci1sZWZ0OiA2cHggc29saWQgIzFhMWExYTsgLyogxZ7EsWsgZGlrZXkgc2l5YWggw6dpemdpICovCiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9CgovKiBBbmEgQmHFn2zEsWsgU3RpbGkgKi8KLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmOyAvKiBNb2Rlcm4geWF6xLEgdGlwaSAqLwogICAgZm9udC1zaXplOiA1MnB4OyAvKiBCw7x5w7xrIHZlIGlkZGlhbMSxICovCiAgICBmb250LXdlaWdodDogOTAwOwogICAgY29sb3I6ICMxMTE7CiAgICBtYXJnaW46IDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2luZzogLTEuNXB4Owp9CgovKiBBbHQgTWV0aW4gU3RpbGkgKi8KLmdhbGVyaS1hbHQtbWV0aW4gewogICAgZm9udC1zaXplOiAxOHB4OwogICAgY29sb3I6ICM2NjY7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgIG1hcmdpbi10b3A6IDhweDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7Cn0KCi8qIE1vYmlsIFV5dW1sdWx1ayAoVGVsZWZvbmxhcmRhIHRhxZ9tYW1hc8SxIGnDp2luKSAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgIC5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7CiAgICAgICAgZm9udC1zaXplOiAzNHB4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4OwogICAgfQogICAgLmdhbGVyaS1iYXNsaWstYWxhbmkgewogICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICB9Cn0KPC9zdHlsZT4KPC9zdHlsZT4KCjxkaXYgY2xhc3M9ImdhbGVyaS1iYXNsaWstYWxhbmkiPgogICAgPGgxIGNsYXNzPSJtb2Rlcm4tZ2FsZXJpLWJhc2xpayI+S2VsaW1lIFNhbmF0xLE8L2gxPgogICAgPHNwYW4gY2xhc3M9ImdhbGVyaS1hbHQtbWV0aW4iPkfDtnJzZWwgxZ5paXIgdmUgU8O2eiBHYWxlcmlzaTwvc3Bhbj4KPC9kaXY+Cgo8c3R5bGU+Ci8qIE9ydGFrIFRhc2FyxLFtIEtvZGxhcsSxICovCi5nYWxlcmktYmFzbGlrLWFsYW5pIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBtYXJnaW4tYm90dG9tOiA0MHB4OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjMWExYTFhOwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmOwogICAgZm9udC1zaXplOiA1MnB4ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogOTAwICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzExMSAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBsaW5lLWhlaWdodDogMSAhaW1wb3J0YW50OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50OwogICAgbGV0dGVyLXNwYWNpbmc6IC0xLjVweCAhaW1wb3J0YW50Owp9CgouZ2FsZXJpLWFsdC1tZXRpbiB7CiAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDsKICAgIGNvbG9yOiAjNjY2ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogNDAwICFpbXBvcnRhbnQ7CiAgICBsZXR0ZXItc3BhY2luZzogMXB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiA4cHggIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7Cn0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgLm1vZGVybi1nYWxlcmktYmFzbGlrIHsgZm9udC1zaXplOiAzNHB4ICFpbXBvcnRhbnQ7IH0KfQo8L3N0eWxlPneiCTxzdHlsZSBkYXRhLXdwLWJsb2NrLWh0bWw9ImNzcyI+CjxzdHlsZT4KLyogR2VuZWwgQmHFn2zEsWsgS29udGV5bsSxcsSxICovCi5nYWxlcmktYmFzbGlrLWFsYW5pIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBtYXJnaW4tYm90dG9tOiA0MHB4OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjMWExYTFhOyAvKiDFnsSxayBkaWtleSBzaXlhaCDDp2l6Z2kgKi8KICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi8qIEFuYSBCYcWfbMSxayBTdGlsaSAqLwoubW9kZXJuLWdhbGVyaS1iYXNsaWsgewogICAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7IC8qIE1vZGVybiB5YXrEsSB0aXBpICovCiAgICBmb250LXNpemU6IDUycHg7IC8qIELDvHnDvGsgdmUgaWRkaWFsxLEgKi8KICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBjb2xvcjogIzExMTsKICAgIG1hcmdpbjogMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGxldHRlci1zcGFjaW5nOiAtMS41cHg7Cn0KCi8qIEFsdCBNZXRpbiBTdGlsaSAqLwouZ2FsZXJpLWFsdC1tZXRpbiB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBjb2xvcjogIzY2NjsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgbWFyZ2luLXRvcDogOHB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQoKLyogTW9iaWwgVXl1bWx1bHVrIChUZWxlZm9ubGFyZGEgdGHFn21hbWFzxLEgacOnaW4pICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgICAgICBmb250LXNpemU6IDM0cHg7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7CiAgICB9CiAgICAuZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgIH0KfQo8L3N0eWxlPgo8L3N0eWxlPgoKPGRpdiBjbGFzcz0iZ2FsZXJpLWJhc2xpay1hbGFuaSI+CiAgICA8aDEgY2xhc3M9Im1vZGVybi1nYWxlcmktYmFzbGlrIj5LZWxpbWUgU2FuYXTEsTwvaDE+CiAgICA8c3BhbiBjbGFzcz0iZ2FsZXJpLWFsdC1tZXRpbiI+R8O2cnNlbCDFnmlpciB2ZSBTw7Z6IEdhbGVyaXNpPC9zcGFuPgo8L2Rpdj53JDkxNWIxY2I1LTg1OGYtNDNjNy04ODc2LWE2NGQ2MDcwMDBmOXh3DmNvcmUvcGFyYWdyYXBoeXckZWQ5ODc3YzItZDE5YS00OTdhLWFjZjktZGNhM2Q2NzhjNzRheHcOY29yZS9wYXJhZ3JhcGh5d8IRPHN0eWxlIGRhdGEtd3AtYmxvY2staHRtbD0iY3NzIj4KPHN0eWxlPgovKiBBbmEgS29udGV5bsSxciBBeWFybGFyxLEgKi8KLmtlbGltZS1zYW5hdGktY29udGFpbmVyIHsKICAgIHBhZGRpbmc6IDUwcHggMjBweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDA7IC8qIEFya2EgcGxhbiBzaXlhaCAqLwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgovKiBCYcWfbMSxazogQWx0xLFuIFJlbmdpICovCi5zZWN0aW9uLXRpdGxlIHsKICAgIGNvbG9yOiAjZDRhZjM3OyAKICAgIGZvbnQtZmFtaWx5OiAnUGxheWZhaXIgRGlzcGxheScsIHNlcmlmOwogICAgZm9udC1zaXplOiA0MnB4OwogICAgbWFyZ2luLWJvdHRvbTogMzBweDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KCi8qIEdhbGVyaSBJemdhcmFzxLEgKi8KLmtzLWdyaWQteWFwaXNpIHsKICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDI4MHB4LCAxZnIpKSAhaW1wb3J0YW50OwogICAgZ2FwOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDEyMDBweDsKICAgIG1hcmdpbjogMCBhdXRvOwp9CgovKiBLQVJUOiBUYW0gS2FyZSBBeWFyxLEgKDEvMSkgKi8KLmtzLWthcnQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCU7CiAgICBhc3BlY3QtcmF0aW86IDEgLyAxICFpbXBvcnRhbnQ7IC8qIEJVUkFTSSBLQVJFIFlBUEFSICovCiAgICBib3JkZXItcmFkaXVzOiAxNXB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMzM7IC8qIEhhZmlmIGJlbGlyZ2luIMOnZXLDp2V2ZSAqLwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZSwgYm9yZGVyLWNvbG9yIDAuM3MgZWFzZTsKfQoKLmtzLWthcnQ6aG92ZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xMHB4KTsKICAgIGJvcmRlci1jb2xvcjogI2Q0YWYzNzsgLyogw5x6ZXJpbmUgZ2VsaW5jZSBhbHTEsW4gw6dlcsOnZXZlICovCn0KCi8qIEfDtnJzZWxpbiBLYXJleWUgVGFtIE90dXJtYXPEsSAqLwoua3Mta2FydCBpbWcgewogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDsgLyogUmVzaW0geWFtdWxtYXosIGthcmV5aSBkb2xkdXJ1ciAqLwogICAgdHJhbnNpdGlvbjogMC41cyBlYXNlOwp9CgovKiBLYXJ0xLFuIGFsdMSxbmRha2kgbWV0aW4ga2FyYXJ0bWFzxLEgKGlzdGXEn2UgYmHEn2zEsSkgKi8KLmtzLWthcnQ6OmFmdGVyIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgYm90dG9tOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAzMCU7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodHJhbnNwYXJlbnQsIHJnYmEoMCwwLDAsMC44KSk7CiAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKfQo8L3N0eWxlPgo8L3N0eWxlPgoKPHNjcmlwdCBkYXRhLXdwLWJsb2NrLWh0bWw9ImpzIj4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgY29uc3Qga2FydGxhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5nYWxlcmkta2FydCcpOwogICAgCiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoZW50cmllcykgPT4gewogICAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7CiAgICAgICAgICAgIGlmIChlbnRyeS5pc0ludGVyc2VjdGluZykgewogICAgICAgICAgICAgICAgZW50cnkudGFyZ2V0LnN0eWxlLm9wYWNpdHkgPSAxOwogICAgICAgICAgICAgICAgZW50cnkudGFyZ2V0LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGVZKDApIjsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSwgeyB0aHJlc2hvbGQ6IDAuMSB9KTsKCiAgICBrYXJ0bGFyLmZvckVhY2goa2FydCA9PiB7CiAgICAgICAga2FydC5zdHlsZS5vcGFjaXR5ID0gMDsKICAgICAgICBrYXJ0LnN0eWxlLnRyYW5zZm9ybSA9ICJ0cmFuc2xhdGVZKDIwcHgpIjsKICAgICAgICBrYXJ0LnN0eWxlLnRyYW5zaXRpb24gPSAiYWxsIDAuNnMgZWFzZS1vdXQiOwogICAgICAgIG9ic2VydmVyLm9ic2VydmUoa2FydCk7CiAgICB9KTsKfSk7Cjwvc2NyaXB0PnflDTxzdHlsZSBkYXRhLXdwLWJsb2NrLWh0bWw9ImNzcyI+Ci5rZWxpbWUtc2FuYXRpLWNvbnRhaW5lciB7CiAgICBwYWRkaW5nOiA1MHB4IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwOyAvKiBBcmthIHBsYW4gc2l5YWggKi8KICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLnNlY3Rpb24tdGl0bGUgewogICAgY29sb3I6ICNkNGFmMzc7IC8qIEFsdMSxbiByZW5naSBiYcWfbMSxayAqLwogICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4Owp9CgouZ2FsZXJpLXdyYXBwZXIgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtd3JhcDogd3JhcDsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgZ2FwOiAyMHB4Owp9CgouZ2FsZXJpLWthcnQgewogICAgd2lkdGg6IDMwMHB4OwogICAgaGVpZ2h0OiA0MDBweDsKICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTsKICAgIGJvcmRlcjogMXB4IHNvbGlkICMzMzM7Cn0KCi5nYWxlcmkta2FydDpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpOwp9Cgoua2FydC1pY2VyaWsgewogICAgd2lkdGg6IDEwMCU7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOwogICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsKfQoKLmthcnQtb3ZlcmxheSB7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7IC8qIE1ldGluIG9rdW51cmx1xJ91IGnDp2luIGthcmFydG1hICovCiAgICB3aWR0aDogMTAwJTsKICAgIHBhZGRpbmc6IDIwcHg7CiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMnB4KTsKfQoKLmthcnQtbWV0aW4gewogICAgY29sb3I6ICNmZmY7CiAgICBmb250LXNpemU6IDEuMXJlbTsKICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKICAgIGxpbmUtaGVpZ2h0OiAxLjU7Cn0KPC9zdHlsZT4KCjxzY3JpcHQgZGF0YS13cC1ibG9jay1odG1sPSJqcyI+CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgIGNvbnN0IGthcnRsYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZ2FsZXJpLWthcnQnKTsKICAgIAogICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHsKICAgICAgICBlbnRyaWVzLmZvckVhY2goZW50cnkgPT4gewogICAgICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHsKICAgICAgICAgICAgICAgIGVudHJ5LnRhcmdldC5zdHlsZS5vcGFjaXR5ID0gMTsKICAgICAgICAgICAgICAgIGVudHJ5LnRhcmdldC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlWSgwKSI7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0sIHsgdGhyZXNob2xkOiAwLjEgfSk7CgogICAga2FydGxhci5mb3JFYWNoKGthcnQgPT4gewogICAgICAgIGthcnQuc3R5bGUub3BhY2l0eSA9IDA7CiAgICAgICAga2FydC5zdHlsZS50cmFuc2Zvcm0gPSAidHJhbnNsYXRlWSgyMHB4KSI7CiAgICAgICAga2FydC5zdHlsZS50cmFuc2l0aW9uID0gImFsbCAwLjZzIGVhc2Utb3V0IjsKICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGthcnQpOwogICAgfSk7Cn0pOwo8L3NjcmlwdD53+h88c3R5bGUgZGF0YS13cC1ibG9jay1odG1sPSJjc3MiPgo8c3R5bGU+Ci8qIEFuYSBLb250ZXluxLFyIEF5YXJsYXLEsSAqLwoua2VsaW1lLXNhbmF0aS1jb250YWluZXIgewogICAgcGFkZGluZzogNTBweCAyMHB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDsgLyogQXJrYSBwbGFuIHNpeWFoICovCiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCi8qIEJhxZ9sxLFrOiBBbHTEsW4gUmVuZ2kgKi8KLnNlY3Rpb24tdGl0bGUgewogICAgY29sb3I6ICNkNGFmMzc7IAogICAgZm9udC1mYW1pbHk6ICdQbGF5ZmFpciBEaXNwbGF5Jywgc2VyaWY7CiAgICBmb250LXNpemU6IDQycHg7CiAgICBtYXJnaW4tYm90dG9tOiAzMHB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKfQoKLyogR2FsZXJpIEl6Z2FyYXPEsSAqLwoua3MtZ3JpZC15YXBpc2kgewogICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50OwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjgwcHgsIDFmcikpICFpbXBvcnRhbnQ7CiAgICBnYXA6IDIwcHggIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogMTIwMHB4OwogICAgbWFyZ2luOiAwIGF1dG87CgovLyBDU1Mga8Sxc23EsW5hIGJ1bnUgZWtsZS9nw7xuY2VsbGU6Ci5rcy1rYXJ0IGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbjogMC41cyBlYXNlOwogICAgdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDsgLyogUmVzbWluIHNlw6dpbG1lc2luaSBlbmdlbGxlciAqLwogICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmUgIWltcG9ydGFudDsgLyogVGFyYXnEsWPEsW7EsW4gc8O8csO8a2xlbWVzaW5pIGVuZ2VsbGVyICovCn0KCi5rcy1rYXJ0LmFrdGlmLXpvb20gewogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOyBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMHZ3OwogICAgaGVpZ2h0OiAxMDB2aDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC45KTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB6LWluZGV4OiA5OTk5OTk7CiAgICBjdXJzb3I6IHpvb20tb3V0Owp9Cgoua3Mta2FydC5ha3RpZi16b29tIGltZyB7CiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDkwJTsKICAgIG1heC1oZWlnaHQ6IDkwJTsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW4gIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi8vIEphdmFzY3JpcHQga8Sxc23EsW7EsSBidSAiYWvEsWxsxLEiIHZlcnNpeW9ubGEgZGXEn2nFn3RpcjoKPHNjcmlwdD4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgY29uc3Qga3Nfa3V0dWxhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5rcy1rYXJ0Iik7CiAgICAKICAgIGtzX2t1dHVsYXIuZm9yRWFjaChrID0+IHsKICAgICAgICBrLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgICAgICAgICBpZiAodGhpcy5jbGFzc0xpc3QuY29udGFpbnMoImFrdGlmLXpvb20iKSkgewogICAgICAgICAgICAgICAgdGhpcy5jbGFzc0xpc3QucmVtb3ZlKCJha3RpZi16b29tIik7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImF1dG8iOyAvLyBLYXlkxLFybWF5xLEgZ2VyaSBhw6cKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIERpxJ9lciBhw6fEsWsgb2xhbmxhcsSxIGthcGF0CiAgICAgICAgICAgICAgICBrc19rdXR1bGFyLmZvckVhY2goaSA9PiBpLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKSk7CiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5hZGQoImFrdGlmLXpvb20iKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsgLy8gQXJrYSBwbGFuxLFuIGtheW1hc8SxbsSxIGVuZ2VsbGUKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7CgogICAgLy8gQm\/Fn2x1xJ9hIHTEsWtsYXnEsW5jYSBrYXBhdAogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICBrc19rdXR1bGFyLmZvckVhY2goayA9PiBrLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKSk7CiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJhdXRvIjsKICAgIH0pOwp9KTsKPC9zY3JpcHQ+Cn0KCi8qIEtBUlQ6IFRhbSBLYXJlIEF5YXLEsSAoMS8xKSAqLwoua3Mta2FydCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJTsKICAgIGFzcGVjdC1yYXRpbzogMSAvIDEgIWltcG9ydGFudDsgLyogQlVSQVNJIEtBUkUgWUFQQVIgKi8KICAgIGJvcmRlci1yYWRpdXM6IDE1cHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm9yZGVyOiAxcHggc29saWQgIzMzMzsgLyogSGFmaWYgYmVsaXJnaW4gw6dlcsOnZXZlICovCiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLCBib3JkZXItY29sb3IgMC4zcyBlYXNlOwp9Cgoua3Mta2FydDpob3ZlciB7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpOwogICAgYm9yZGVyLWNvbG9yOiAjZDRhZjM3OyAvKiDDnHplcmluZSBnZWxpbmNlIGFsdMSxbiDDp2Vyw6dldmUgKi8KfQoKLyogR8O2cnNlbGluIEthcmV5ZSBUYW0gT3R1cm1hc8SxICovCi5rcy1rYXJ0IGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OyAvKiBSZXNpbSB5YW11bG1heiwga2FyZXlpIGRvbGR1cnVyICovCiAgICB0cmFuc2l0aW9uOiAwLjVzIGVhc2U7Cn0KCi8qIEthcnTEsW4gYWx0xLFuZGFraSBtZXRpbiBrYXJhcnRtYXPEsSAoaXN0ZcSfZSBiYcSfbMSxKSAqLwoua3Mta2FydDo6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICBib3R0b206IDA7IGxlZnQ6IDA7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDMwJTsKICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0cmFuc3BhcmVudCwgcmdiYSgwLDAsMCwwLjgpKTsKICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwp9Cjwvc3R5bGU+Cjwvc3R5bGU+Cgo8c2NyaXB0IGRhdGEtd3AtYmxvY2staHRtbD0ianMiPgpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICBjb25zdCBrYXJ0bGFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmdhbGVyaS1rYXJ0Jyk7CiAgICAKICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7CiAgICAgICAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHsKICAgICAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7CiAgICAgICAgICAgICAgICBlbnRyeS50YXJnZXQuc3R5bGUub3BhY2l0eSA9IDE7CiAgICAgICAgICAgICAgICBlbnRyeS50YXJnZXQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZVkoMCkiOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9LCB7IHRocmVzaG9sZDogMC4xIH0pOwoKICAgIGthcnRsYXIuZm9yRWFjaChrYXJ0ID0+IHsKICAgICAgICBrYXJ0LnN0eWxlLm9wYWNpdHkgPSAwOwogICAgICAgIGthcnQuc3R5bGUudHJhbnNmb3JtID0gInRyYW5zbGF0ZVkoMjBweCkiOwogICAgICAgIGthcnQuc3R5bGUudHJhbnNpdGlvbiA9ICJhbGwgMC42cyBlYXNlLW91dCI7CiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShrYXJ0KTsKICAgIH0pOwp9KTsKPC9zY3JpcHQ+d+0iPHN0eWxlIGRhdGEtd3AtYmxvY2staHRtbD0iY3NzIj4KPHN0eWxlPgovKiBHZW5lbCBCYcWfbMSxayBLb250ZXluxLFyxLEgKi8KLmdhbGVyaS1iYXNsaWstYWxhbmkgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBib3JkZXItbGVmdDogNnB4IHNvbGlkICMxYTFhMWE7IC8qIMWexLFrIGRpa2V5IHNpeWFoIMOnaXpnaSAqLwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLyogQW5hIEJhxZ9sxLFrIFN0aWxpICovCi5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7CiAgICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjsgLyogTW9kZXJuIHlhesSxIHRpcGkgKi8KICAgIGZvbnQtc2l6ZTogNTJweDsgLyogQsO8ecO8ayB2ZSBpZGRpYWzEsSAqLwogICAgZm9udC13ZWlnaHQ6IDkwMDsKICAgIGNvbG9yOiAjMTExOwogICAgbWFyZ2luOiAwOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6IC0xLjVweDsKfQoKLyogQWx0IE1ldGluIFN0aWxpICovCgoKCgovLyBDU1Mga8Sxc23EsW5hIGJ1bnUgZWtsZS9nw7xuY2VsbGU6Ci5rcy1rYXJ0IGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbjogMC41cyBlYXNlOwogICAgdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDsgLyogUmVzbWluIHNlw6dpbG1lc2luaSBlbmdlbGxlciAqLwogICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmUgIWltcG9ydGFudDsgLyogVGFyYXnEsWPEsW7EsW4gc8O8csO8a2xlbWVzaW5pIGVuZ2VsbGVyICovCn0KCi5rcy1rYXJ0LmFrdGlmLXpvb20gewogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOyBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMHZ3OwogICAgaGVpZ2h0OiAxMDB2aDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC45KTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB6LWluZGV4OiA5OTk5OTk7CiAgICBjdXJzb3I6IHpvb20tb3V0Owp9Cgoua3Mta2FydC5ha3RpZi16b29tIGltZyB7CiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDkwJTsKICAgIG1heC1oZWlnaHQ6IDkwJTsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW4gIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi8vIEphdmFzY3JpcHQga8Sxc23EsW7EsSBidSAiYWvEsWxsxLEiIHZlcnNpeW9ubGEgZGXEn2nFn3RpcjoKPHNjcmlwdD4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgY29uc3Qga3Nfa3V0dWxhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5rcy1rYXJ0Iik7CiAgICAKICAgIGtzX2t1dHVsYXIuZm9yRWFjaChrID0+IHsKICAgICAgICBrLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgICAgICAgICBpZiAodGhpcy5jbGFzc0xpc3QuY29udGFpbnMoImFrdGlmLXpvb20iKSkgewogICAgICAgICAgICAgICAgdGhpcy5jbGFzc0xpc3QucmVtb3ZlKCJha3RpZi16b29tIik7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImF1dG8iOyAvLyBLYXlkxLFybWF5xLEgZ2VyaSBhw6cKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIERpxJ9lciBhw6fEsWsgb2xhbmxhcsSxIGthcGF0CiAgICAgICAgICAgICAgICBrc19rdXR1bGFyLmZvckVhY2goaSA9PiBpLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKSk7CiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5hZGQoImFrdGlmLXpvb20iKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsgLy8gQXJrYSBwbGFuxLFuIGtheW1hc8SxbsSxIGVuZ2VsbGUKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7CgogICAgLy8gQm\/Fn2x1xJ9hIHTEsWtsYXnEsW5jYSBrYXBhdAogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICBrc19rdXR1bGFyLmZvckVhY2goayA9PiBrLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKSk7CiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJhdXRvIjsKICAgIH0pOwp9KTsKPC9zY3JpcHQ+Ci5nYWxlcmktYWx0LW1ldGluIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGNvbG9yOiAjNjY2OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGxldHRlci1zcGFjaW5nOiAxcHg7CiAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwp9Cgo8c3R5bGU+Ci8qIEfDtnJzZWwga3V0dXN1bnUgdGFtIGthcmUgKDE6MSkgeWFwYXIgKi8KLmtzLWthcnQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCU7CiAgICAvKiBZw7xrc2VrbGlrIHllcmluZSBhc3BlY3QtcmF0aW8ga3VsbGFuxLF5b3J1eiAqLwogICAgYXNwZWN0LXJhdGlvOiAxIC8gMSAhaW1wb3J0YW50OyAKICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OyAKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDAsMCwwLDAuMSk7Cn0KCi8qIEfDtnJzZWxpbiBrdXR1eXUgdGFtYW1lbiBrYXBsYW1hc8SxbsSxIHNhxJ9sYXIgKEtlc2lsbWVkZW4gZG9sZHVydXIpICovCi5rcy1rYXJ0IGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OyAvKiBSZXNtaW4gb3JhbsSxbsSxIGJvem1hZGFuIGthcmV5ZSBzxLHEn2TEsXLEsXIgKi8KICAgIHRyYW5zaXRpb246IDAuNXMgZWFzZTsKfQo8L3N0eWxlPgoKLyogTW9iaWwgVXl1bWx1bHVrIChUZWxlZm9ubGFyZGEgdGHFn21hbWFzxLEgacOnaW4pICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgICAgICBmb250LXNpemU6IDM0cHg7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7CiAgICB9CiAgICAuZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgIH0KfQo8L3N0eWxlPgo8L3N0eWxlPgoKPGRpdiBjbGFzcz0iZ2FsZXJpLWJhc2xpay1hbGFuaSI+CiAgICA8aDEgY2xhc3M9Im1vZGVybi1nYWxlcmktYmFzbGlrIj5LZWxpbWUgU2FuYXTEsTwvaDE+CiAgICA8c3BhbiBjbGFzcz0iZ2FsZXJpLWFsdC1tZXRpbiI+R8O2cnNlbCDFnmlpciB2ZSBTw7Z6IEdhbGVyaXNpPC9zcGFuPgo8L2Rpdj4KCjxzdHlsZT4KLyogT3J0YWsgVGFzYXLEsW0gS29kbGFyxLEgKi8KLmdhbGVyaS1iYXNsaWstYWxhbmkgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBib3JkZXItbGVmdDogNnB4IHNvbGlkICMxYTFhMWE7CiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9CgoubW9kZXJuLWdhbGVyaS1iYXNsaWsgewogICAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7CiAgICBmb250LXNpemU6IDUycHggIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA5MDAgIWltcG9ydGFudDsKICAgIGNvbG9yOiAjMTExICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGxpbmUtaGVpZ2h0OiAxICFpbXBvcnRhbnQ7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7CiAgICBsZXR0ZXItc3BhY2luZzogLTEuNXB4ICFpbXBvcnRhbnQ7Cn0KCi5nYWxlcmktYWx0LW1ldGluIHsKICAgIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50OwogICAgY29sb3I6ICM2NjYgIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsKICAgIGxldHRlci1zcGFjaW5nOiAxcHggIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDhweCAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAubW9kZXJuLWdhbGVyaS1iYXNsaWsgeyBmb250LXNpemU6IDM0cHggIWltcG9ydGFudDsgfQp9Cjwvc3R5bGU+d5gtPHN0eWxlIGRhdGEtd3AtYmxvY2staHRtbD0iY3NzIj4KPHN0eWxlPgovKiBHZW5lbCBCYcWfbMSxayBLb250ZXluxLFyxLEgKi8KLmdhbGVyaS1iYXNsaWstYWxhbmkgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBib3JkZXItbGVmdDogNnB4IHNvbGlkICMxYTFhMWE7IC8qIMWexLFrIGRpa2V5IHNpeWFoIMOnaXpnaSAqLwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLyogQW5hIEJhxZ9sxLFrIFN0aWxpICovCi5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7CiAgICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjsgLyogTW9kZXJuIHlhesSxIHRpcGkgKi8KICAgIGZvbnQtc2l6ZTogNTJweDsgLyogQsO8ecO8ayB2ZSBpZGRpYWzEsSAqLwogICAgZm9udC13ZWlnaHQ6IDkwMDsKICAgIGNvbG9yOiAjMTExOwogICAgbWFyZ2luOiAwOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6IC0xLjVweDsKfQoKLyogQWx0IE1ldGluIFN0aWxpICovCgoKCgovLyBDU1Mga8Sxc23EsW5hIGJ1bnUgZWtsZS9nw7xuY2VsbGU6Ci5rcy1rYXJ0IGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbjogMC41cyBlYXNlOwogICAgdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDsgLyogUmVzbWluIHNlw6dpbG1lc2luaSBlbmdlbGxlciAqLwogICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmUgIWltcG9ydGFudDsgLyogVGFyYXnEsWPEsW7EsW4gc8O8csO8a2xlbWVzaW5pIGVuZ2VsbGVyICovCn0KCi5rcy1rYXJ0LmFrdGlmLXpvb20gewogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOyBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMHZ3OwogICAgaGVpZ2h0OiAxMDB2aDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC45KTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB6LWluZGV4OiA5OTk5OTk7CiAgICBjdXJzb3I6IHpvb20tb3V0Owp9Cgoua3Mta2FydC5ha3RpZi16b29tIGltZyB7CiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDkwJTsKICAgIG1heC1oZWlnaHQ6IDkwJTsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW4gIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi8vIEphdmFzY3JpcHQga8Sxc23EsW7EsSBidSAiYWvEsWxsxLEiIHZlcnNpeW9ubGEgZGXEn2nFn3RpcjoKPHNjcmlwdD4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgY29uc3Qga3Nfa3V0dWxhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5rcy1rYXJ0Iik7CiAgICAKICAgIGtzX2t1dHVsYXIuZm9yRWFjaChrID0+IHsKICAgICAgICBrLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgICAgICAgICBpZiAodGhpcy5jbGFzc0xpc3QuY29udGFpbnMoImFrdGlmLXpvb20iKSkgewogICAgICAgICAgICAgICAgdGhpcy5jbGFzc0xpc3QucmVtb3ZlKCJha3RpZi16b29tIik7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImF1dG8iOyAvLyBLYXlkxLFybWF5xLEgZ2VyaSBhw6cKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIERpxJ9lciBhw6fEsWsgb2xhbmxhcsSxIGthcGF0CiAgICAgICAgICAgICAgICBrc19rdXR1bGFyLmZvckVhY2goaSA9PiBpLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKSk7CiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5hZGQoImFrdGlmLXpvb20iKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsgLy8gQXJrYSBwbGFuxLFuIGtheW1hc8SxbsSxIGVuZ2VsbGUKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7CgogICAgLy8gQm\/Fn2x1xJ9hIHTEsWtsYXnEsW5jYSBrYXBhdAogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICBrc19rdXR1bGFyLmZvckVhY2goayA9PiBrLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKSk7CiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJhdXRvIjsKICAgIH0pOwp9KTsKPC9zY3JpcHQ+Ci5nYWxlcmktYWx0LW1ldGluIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGNvbG9yOiAjNjY2OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGxldHRlci1zcGFjaW5nOiAxcHg7CiAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwp9Cgo8c3R5bGU+Ci8qIEfDtnJzZWwga3V0dXN1bnUgdGFtIGthcmUgKDE6MSkgeWFwYXIgKi8KLmtzLWthcnQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCU7CiAgICAvKiBZw7xrc2VrbGlrIHllcmluZSBhc3BlY3QtcmF0aW8ga3VsbGFuxLF5b3J1eiAqLwogICAgYXNwZWN0LXJhdGlvOiAxIC8gMSAhaW1wb3J0YW50OyAKICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OyAKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDAsMCwwLDAuMSk7Cn0KCi8qIEfDtnJzZWxpbiBrdXR1eXUgdGFtYW1lbiBrYXBsYW1hc8SxbsSxIHNhxJ9sYXIgKEtlc2lsbWVkZW4gZG9sZHVydXIpICovCi5rcy1rYXJ0IGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OyAvKiBSZXNtaW4gb3JhbsSxbsSxIGJvem1hZGFuIGthcmV5ZSBzxLHEn2TEsXLEsXIgKi8KICAgIHRyYW5zaXRpb246IDAuNXMgZWFzZTsKfQo8L3N0eWxlPgoKLyogTW9iaWwgVXl1bWx1bHVrIChUZWxlZm9ubGFyZGEgdGHFn21hbWFzxLEgacOnaW4pICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgICAgICBmb250LXNpemU6IDM0cHg7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7CiAgICB9CiAgICAuZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgIH0KfQo8L3N0eWxlPgo8L3N0eWxlPgoKPGRpdiBjbGFzcz0iZ2FsZXJpLWJhc2xpay1hbGFuaSI+CiAgICA8aDEgY2xhc3M9Im1vZGVybi1nYWxlcmktYmFzbGlrIj5LRUzEsE1FIFNBTkFUSTwvaDE+CiAgICA8c3BhbiBjbGFzcz0iZ2FsZXJpLWFsdC1tZXRpbiI+R8O2cnNlbCDFnmlpciB2ZSBTw7Z6IEdhbGVyaXNpPC9zcGFuPgo8L2Rpdj4KCjxzdHlsZT4KLyogMS4gQkHFnkxJSyBEw5xaRU5MRU1FIChSZXNpbWRla2kga2F5bWF5xLEgZMO8emVsdGlyKSAqLwouZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgbWFyZ2luOiA0MHB4IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIGJvcmRlci1sZWZ0OiA2cHggc29saWQgIzFhMWExYTsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBjbGVhcjogYm90aCAhaW1wb3J0YW50Owp9Ci5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7CiAgICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgZm9udC1zaXplOiA1MnB4ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogOTAwICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzExMSAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBsaW5lLWhlaWdodDogMSAhaW1wb3J0YW50OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50Owp9Ci5nYWxlcmktYWx0LW1ldGluIHsKICAgIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50OwogICAgY29sb3I6ICM2NjYgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAxMHB4ICFpbXBvcnRhbnQ7Cn0KCi8qIDIuIEdBTEVSxLAgR1LEsEQgRMOcWkVOxLAgKFlhbiB5YW5hIGRpemlsaW0pICovCi5rcy1nYWxlcmktYW5hLWtvbnRleW5pciB7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGNsZWFyOiBib3RoICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0KLmtzLWdyaWQtc2lzdGVtaSB7CiAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyODBweCwgMWZyKSkgIWltcG9ydGFudDsKICAgIGdhcDogMjBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMjBweCAwICFpbXBvcnRhbnQ7Cn0KLmtzLWthcnQteWFwaXNpIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGFzcGVjdC1yYXRpbzogMSAvIDEgIWltcG9ydGFudDsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDAsMCwwLDAuMSk7Cn0KLmtzLWthcnQteWFwaXNpIGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIG9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnQ7IHRyYW5zaXRpb246IDAuNXMgZWFzZTsKICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lICFpbXBvcnRhbnQ7Cn0KLmtzLWthcnQteWFwaXNpOmhvdmVyIGltZyB7IHRyYW5zZm9ybTogc2NhbGUoMS4xKTsgfQoKLyogMy4gWk9PTSBTxLBTVEVNxLAgKi8KLmtzLWthcnQteWFwaXNpLmtzLXpvb20gewogICAgcG9zaXRpb246IGZpeGVkOyB0b3A6IDUwJTsgbGVmdDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHdpZHRoOiA4NXZ3OyBoZWlnaHQ6IDg1dmg7IHotaW5kZXg6IDk5OTk5OTsKfQoua3Mta2FydC15YXBpc2kua3Mtem9vbSBpbWcgeyBvYmplY3QtZml0OiBjb250YWluICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC45KTsgfQoKLyogNC4gU0FZRkFMQU1BICovCi5rcy1zYXlmYWxhbWEtYWxhbmkgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6IDQwcHg7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBnYXA6IDEwcHg7IH0KLmtzLXNheWZhLWxpbmsgeyBwYWRkaW5nOiAxMHB4IDE4cHg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IGJvcmRlci1yYWRpdXM6IDhweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogIzMzMzsgfQoua3Mtc2F5ZmEtbGluay5rcy1ha3RpZiB7IGJhY2tncm91bmQ6ICMwMDA7IGNvbG9yOiAjZmZmOyBib3JkZXItY29sb3I6ICMwMDA7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgeyAubW9kZXJuLWdhbGVyaS1iYXNsaWsgeyBmb250LXNpemU6IDM0cHggIWltcG9ydGFudDsgfSB9Cjwvc3R5bGU+d58kPHN0eWxlIGRhdGEtd3AtYmxvY2staHRtbD0iY3NzIj4KPHN0eWxlPgovKiBHZW5lbCBCYcWfbMSxayBLb250ZXluxLFyxLEgKi8KLmdhbGVyaS1iYXNsaWstYWxhbmkgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBib3JkZXItbGVmdDogNnB4IHNvbGlkICMxYTFhMWE7IC8qIMWexLFrIGRpa2V5IHNpeWFoIMOnaXpnaSAqLwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLyogQW5hIEJhxZ9sxLFrIFN0aWxpICovCi5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7CiAgICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjsgLyogTW9kZXJuIHlhesSxIHRpcGkgKi8KICAgIGZvbnQtc2l6ZTogNTJweDsgLyogQsO8ecO8ayB2ZSBpZGRpYWzEsSAqLwogICAgZm9udC13ZWlnaHQ6IDkwMDsKICAgIGNvbG9yOiAjMTExOwogICAgbWFyZ2luOiAwOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6IC0xLjVweDsKfQoKLyogQWx0IE1ldGluIFN0aWxpICovCgoKCgovLyBDU1Mga8Sxc23EsW5hIGJ1bnUgZWtsZS9nw7xuY2VsbGU6Ci5rcy1rYXJ0IGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbjogMC41cyBlYXNlOwogICAgdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDsgLyogUmVzbWluIHNlw6dpbG1lc2luaSBlbmdlbGxlciAqLwogICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmUgIWltcG9ydGFudDsgLyogVGFyYXnEsWPEsW7EsW4gc8O8csO8a2xlbWVzaW5pIGVuZ2VsbGVyICovCn0KCi5rcy1rYXJ0LmFrdGlmLXpvb20gewogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOyBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMHZ3OwogICAgaGVpZ2h0OiAxMDB2aDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC45KTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB6LWluZGV4OiA5OTk5OTk7CiAgICBjdXJzb3I6IHpvb20tb3V0Owp9Cgoua3Mta2FydC5ha3RpZi16b29tIGltZyB7CiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDkwJTsKICAgIG1heC1oZWlnaHQ6IDkwJTsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW4gIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi8vIEphdmFzY3JpcHQga8Sxc23EsW7EsSBidSAiYWvEsWxsxLEiIHZlcnNpeW9ubGEgZGXEn2nFn3RpcjoKPHNjcmlwdD4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgY29uc3Qga3Nfa3V0dWxhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5rcy1rYXJ0Iik7CiAgICAKICAgIGtzX2t1dHVsYXIuZm9yRWFjaChrID0+IHsKICAgICAgICBrLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgICAgICAgICBpZiAodGhpcy5jbGFzc0xpc3QuY29udGFpbnMoImFrdGlmLXpvb20iKSkgewogICAgICAgICAgICAgICAgdGhpcy5jbGFzc0xpc3QucmVtb3ZlKCJha3RpZi16b29tIik7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImF1dG8iOyAvLyBLYXlkxLFybWF5xLEgZ2VyaSBhw6cKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIERpxJ9lciBhw6fEsWsgb2xhbmxhcsSxIGthcGF0CiAgICAgICAgICAgICAgICBrc19rdXR1bGFyLmZvckVhY2goaSA9PiBpLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKSk7CiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5hZGQoImFrdGlmLXpvb20iKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsgLy8gQXJrYSBwbGFuxLFuIGtheW1hc8SxbsSxIGVuZ2VsbGUKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7CgogICAgLy8gQm\/Fn2x1xJ9hIHTEsWtsYXnEsW5jYSBrYXBhdAogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICBrc19rdXR1bGFyLmZvckVhY2goayA9PiBrLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKSk7CiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJhdXRvIjsKICAgIH0pOwp9KTsKPC9zY3JpcHQ+Ci5nYWxlcmktYWx0LW1ldGluIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGNvbG9yOiAjNjY2OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGxldHRlci1zcGFjaW5nOiAxcHg7CiAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwp9Cgo8c3R5bGU+Ci8qIEfDtnJzZWwga3V0dXN1bnUgdGFtIGthcmUgKDE6MSkgeWFwYXIgKi8KLmtzLWthcnQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCU7CiAgICAvKiBZw7xrc2VrbGlrIHllcmluZSBhc3BlY3QtcmF0aW8ga3VsbGFuxLF5b3J1eiAqLwogICAgYXNwZWN0LXJhdGlvOiAxIC8gMSAhaW1wb3J0YW50OyAKICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OyAKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDAsMCwwLDAuMSk7Cn0KCi8qIEfDtnJzZWxpbiBrdXR1eXUgdGFtYW1lbiBrYXBsYW1hc8SxbsSxIHNhxJ9sYXIgKEtlc2lsbWVkZW4gZG9sZHVydXIpICovCi5rcy1rYXJ0IGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OyAvKiBSZXNtaW4gb3JhbsSxbsSxIGJvem1hZGFuIGthcmV5ZSBzxLHEn2TEsXLEsXIgKi8KICAgIHRyYW5zaXRpb246IDAuNXMgZWFzZTsKfQo8L3N0eWxlPgoKLyogTW9iaWwgVXl1bWx1bHVrIChUZWxlZm9ubGFyZGEgdGHFn21hbWFzxLEgacOnaW4pICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgICAgICBmb250LXNpemU6IDM0cHg7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7CiAgICB9CiAgICAuZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgIH0KfQo8L3N0eWxlPgo8L3N0eWxlPgoKPGRpdiBjbGFzcz0iZ2FsZXJpLWJhc2xpay1hbGFuaSI+CiAgICA8aDEgY2xhc3M9Im1vZGVybi1nYWxlcmktYmFzbGlrIj5LRUzEsE1FIFNBTkFUSTwvaDE+CiAgICA8c3BhbiBjbGFzcz0iZ2FsZXJpLWFsdC1tZXRpbiI+R8O2cnNlbCDFnmlpciB2ZSBTw7Z6IEdhbGVyaXNpPC9zcGFuPgo8L2Rpdj4KCjxzdHlsZT4KLyogw5xzdHRlIMOnxLFrYW4gbyB5YXrEsXnEsSB2ZSBrYXltYWxhcsSxIGTDvHplbHRlbiBrZXNpbiDDp8O2esO8bSAqLwoKLmdhbGVyaS1iYXNsaWstYWxhbmkgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIG1hcmdpbjogNDBweCAwIDIwcHggMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjMWExYTFhOwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIGNsZWFyOiBib3RoICFpbXBvcnRhbnQ7Cn0KCi5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7CiAgICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgZm9udC1zaXplOiA1MnB4ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogOTAwICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzExMSAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBsaW5lLWhlaWdodDogMSAhaW1wb3J0YW50OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50OwogICAgbGV0dGVyLXNwYWNpbmc6IC0xLjVweCAhaW1wb3J0YW50Owp9CgouZ2FsZXJpLWFsdC1tZXRpbiB7CiAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDsKICAgIGNvbG9yOiAjNjY2ICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogOHB4ICFpbXBvcnRhbnQ7Cn0KCi8qIE1vYmlsIFV5dW1sdWx1ayAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgIC5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7IAogICAgICAgIGZvbnQtc2l6ZTogMzRweCAhaW1wb3J0YW50OyAKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTFweCAhaW1wb3J0YW50OyAKICAgIH0KICAgIC5nYWxlcmktYmFzbGlrLWFsYW5pIHsgCiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweCAhaW1wb3J0YW50OyAKICAgIH0KfQo8L3N0eWxlPneYLTxzdHlsZSBkYXRhLXdwLWJsb2NrLWh0bWw9ImNzcyI+CjxzdHlsZT4KLyogR2VuZWwgQmHFn2zEsWsgS29udGV5bsSxcsSxICovCi5nYWxlcmktYmFzbGlrLWFsYW5pIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBtYXJnaW4tYm90dG9tOiA0MHB4OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjMWExYTFhOyAvKiDFnsSxayBkaWtleSBzaXlhaCDDp2l6Z2kgKi8KICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGVhc2U7Cn0KCi8qIEFuYSBCYcWfbMSxayBTdGlsaSAqLwoubW9kZXJuLWdhbGVyaS1iYXNsaWsgewogICAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWY7IC8qIE1vZGVybiB5YXrEsSB0aXBpICovCiAgICBmb250LXNpemU6IDUycHg7IC8qIELDvHnDvGsgdmUgaWRkaWFsxLEgKi8KICAgIGZvbnQtd2VpZ2h0OiA5MDA7CiAgICBjb2xvcjogIzExMTsKICAgIG1hcmdpbjogMDsKICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIGxldHRlci1zcGFjaW5nOiAtMS41cHg7Cn0KCi8qIEFsdCBNZXRpbiBTdGlsaSAqLwoKCgoKLy8gQ1NTIGvEsXNtxLFuYSBidW51IGVrbGUvZ8O8bmNlbGxlOgoua3Mta2FydCBpbWcgewogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDsKICAgIHRyYW5zaXRpb246IDAuNXMgZWFzZTsKICAgIHVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7IC8qIFJlc21pbiBzZcOnaWxtZXNpbmkgZW5nZWxsZXIgKi8KICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lICFpbXBvcnRhbnQ7IC8qIFRhcmF5xLFjxLFuxLFuIHPDvHLDvGtsZW1lc2luaSBlbmdlbGxlciAqLwp9Cgoua3Mta2FydC5ha3RpZi16b29tIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgIHRvcDogMDsgbGVmdDogMDsKICAgIHdpZHRoOiAxMDB2dzsKICAgIGhlaWdodDogMTAwdmg7CiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuOSk7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgei1pbmRleDogOTk5OTk5OwogICAgY3Vyc29yOiB6b29tLW91dDsKfQoKLmtzLWthcnQuYWt0aWYtem9vbSBpbWcgewogICAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OwogICAgbWF4LXdpZHRoOiA5MCU7CiAgICBtYXgtaGVpZ2h0OiA5MCU7CiAgICBvYmplY3QtZml0OiBjb250YWluICFpbXBvcnRhbnQ7CiAgICBib3gtc2hhZG93OiBub25lOwp9CgovLyBKYXZhc2NyaXB0IGvEsXNtxLFuxLEgYnUgImFrxLFsbMSxIiB2ZXJzaXlvbmxhIGRlxJ9pxZ90aXI6CjxzY3JpcHQ+CmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgIGNvbnN0IGtzX2t1dHVsYXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIua3Mta2FydCIpOwogICAgCiAgICBrc19rdXR1bGFyLmZvckVhY2goayA9PiB7CiAgICAgICAgay5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwoKICAgICAgICAgICAgaWYgKHRoaXMuY2xhc3NMaXN0LmNvbnRhaW5zKCJha3RpZi16b29tIikpIHsKICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NMaXN0LnJlbW92ZSgiYWt0aWYtem9vbSIpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJhdXRvIjsgLy8gS2F5ZMSxcm1hecSxIGdlcmkgYcOnCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBEacSfZXIgYcOnxLFrIG9sYW5sYXLEsSBrYXBhdAogICAgICAgICAgICAgICAga3Nfa3V0dWxhci5mb3JFYWNoKGkgPT4gaS5jbGFzc0xpc3QucmVtb3ZlKCJha3RpZi16b29tIikpOwogICAgICAgICAgICAgICAgdGhpcy5jbGFzc0xpc3QuYWRkKCJha3RpZi16b29tIik7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7IC8vIEFya2EgcGxhbsSxbiBrYXltYXPEsW7EsSBlbmdlbGxlCiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIH0pOwoKICAgIC8vIEJvxZ9sdcSfYSB0xLFrbGF5xLFuY2Ega2FwYXQKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7CiAgICAgICAga3Nfa3V0dWxhci5mb3JFYWNoKGsgPT4gay5jbGFzc0xpc3QucmVtb3ZlKCJha3RpZi16b29tIikpOwogICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiYXV0byI7CiAgICB9KTsKfSk7Cjwvc2NyaXB0PgouZ2FsZXJpLWFsdC1tZXRpbiB7CiAgICBmb250LXNpemU6IDE4cHg7CiAgICBjb2xvcjogIzY2NjsKICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICBsZXR0ZXItc3BhY2luZzogMXB4OwogICAgbWFyZ2luLXRvcDogOHB4OwogICAgZGlzcGxheTogYmxvY2s7CiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZTsKfQoKPHN0eWxlPgovKiBHw7Zyc2VsIGt1dHVzdW51IHRhbSBrYXJlICgxOjEpIHlhcGFyICovCi5rcy1rYXJ0IHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIHdpZHRoOiAxMDAlOwogICAgLyogWcO8a3Nla2xpayB5ZXJpbmUgYXNwZWN0LXJhdGlvIGt1bGxhbsSxeW9ydXogKi8KICAgIGFzcGVjdC1yYXRpbzogMSAvIDEgIWltcG9ydGFudDsgCiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgCiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgwLDAsMCwwLjEpOwp9CgovKiBHw7Zyc2VsaW4ga3V0dXl1IHRhbWFtZW4ga2FwbGFtYXPEsW7EsSBzYcSfbGFyIChLZXNpbG1lZGVuIGRvbGR1cnVyKSAqLwoua3Mta2FydCBpbWcgewogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICAgIGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDsgLyogUmVzbWluIG9yYW7EsW7EsSBib3ptYWRhbiBrYXJleWUgc8SxxJ9kxLFyxLFyICovCiAgICB0cmFuc2l0aW9uOiAwLjVzIGVhc2U7Cn0KPC9zdHlsZT4KCi8qIE1vYmlsIFV5dW1sdWx1ayAoVGVsZWZvbmxhcmRhIHRhxZ9tYW1hc8SxIGnDp2luKSAqLwpAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsKICAgIC5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7CiAgICAgICAgZm9udC1zaXplOiAzNHB4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMXB4OwogICAgfQogICAgLmdhbGVyaS1iYXNsaWstYWxhbmkgewogICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CiAgICB9Cn0KPC9zdHlsZT4KPC9zdHlsZT4KCjxkaXYgY2xhc3M9ImdhbGVyaS1iYXNsaWstYWxhbmkiPgogICAgPGgxIGNsYXNzPSJtb2Rlcm4tZ2FsZXJpLWJhc2xpayI+S0VMxLBNRSBTQU5BVEk8L2gxPgogICAgPHNwYW4gY2xhc3M9ImdhbGVyaS1hbHQtbWV0aW4iPkfDtnJzZWwgxZ5paXIgdmUgU8O2eiBHYWxlcmlzaTwvc3Bhbj4KPC9kaXY+Cgo8c3R5bGU+Ci8qIDEuIEJBxZ5MSUsgRMOcWkVOTEVNRSAoUmVzaW1kZWtpIGtheW1hecSxIGTDvHplbHRpcikgKi8KLmdhbGVyaS1iYXNsaWstYWxhbmkgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIG1hcmdpbjogNDBweCAwICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBib3JkZXItbGVmdDogNnB4IHNvbGlkICMxYTFhMWE7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgY2xlYXI6IGJvdGggIWltcG9ydGFudDsKfQoubW9kZXJuLWdhbGVyaS1iYXNsaWsgewogICAgZm9udC1mYW1pbHk6ICdJbnRlcicsIHNhbnMtc2VyaWYgIWltcG9ydGFudDsKICAgIGZvbnQtc2l6ZTogNTJweCAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IDkwMCAhaW1wb3J0YW50OwogICAgY29sb3I6ICMxMTEgIWltcG9ydGFudDsKICAgIG1hcmdpbjogMCAhaW1wb3J0YW50OwogICAgbGluZS1oZWlnaHQ6IDEgIWltcG9ydGFudDsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsKfQouZ2FsZXJpLWFsdC1tZXRpbiB7CiAgICBmb250LXNpemU6IDE4cHggIWltcG9ydGFudDsKICAgIGNvbG9yOiAjNjY2ICFpbXBvcnRhbnQ7CiAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogMTBweCAhaW1wb3J0YW50Owp9CgovKiAyLiBHQUxFUsSwIEdSxLBEIETDnFpFTsSwIChZYW4geWFuYSBkaXppbGltKSAqLwoua3MtZ2FsZXJpLWFuYS1rb250ZXluaXIgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBjbGVhcjogYm90aCAhaW1wb3J0YW50OyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9Ci5rcy1ncmlkLXNpc3RlbWkgewogICAgZGlzcGxheTogZ3JpZCAhaW1wb3J0YW50OwogICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjgwcHgsIDFmcikpICFpbXBvcnRhbnQ7CiAgICBnYXA6IDIwcHggIWltcG9ydGFudDsKICAgIHBhZGRpbmc6IDIwcHggMCAhaW1wb3J0YW50Owp9Ci5rcy1rYXJ0LXlhcGlzaSB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBhc3BlY3QtcmF0aW86IDEgLyAxICFpbXBvcnRhbnQ7CiAgICBib3JkZXItcmFkaXVzOiAxMnB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGJveC1zaGFkb3c6IDAgNHB4IDE1cHggcmdiYSgwLDAsMCwwLjEpOwp9Ci5rcy1rYXJ0LXlhcGlzaSBpbWcgewogICAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OyB0cmFuc2l0aW9uOiAwLjVzIGVhc2U7CiAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZSAhaW1wb3J0YW50Owp9Ci5rcy1rYXJ0LXlhcGlzaTpob3ZlciBpbWcgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7IH0KCi8qIDMuIFpPT00gU8SwU1RFTcSwICovCi5rcy1rYXJ0LXlhcGlzaS5rcy16b29tIHsKICAgIHBvc2l0aW9uOiBmaXhlZDsgdG9wOiA1MCU7IGxlZnQ6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICB3aWR0aDogODV2dzsgaGVpZ2h0OiA4NXZoOyB6LWluZGV4OiA5OTk5OTk7Cn0KLmtzLWthcnQteWFwaXNpLmtzLXpvb20gaW1nIHsgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiByZ2JhKDAsMCwwLDAuOSk7IH0KCi8qIDQuIFNBWUZBTEFNQSAqLwoua3Mtc2F5ZmFsYW1hLWFsYW5pIHsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOiA0MHB4OyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZ2FwOiAxMHB4OyB9Ci5rcy1zYXlmYS1saW5rIHsgcGFkZGluZzogMTBweCAxOHB4OyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBib3JkZXItcmFkaXVzOiA4cHg7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgY29sb3I6ICMzMzM7IH0KLmtzLXNheWZhLWxpbmsua3MtYWt0aWYgeyBiYWNrZ3JvdW5kOiAjMDAwOyBjb2xvcjogI2ZmZjsgYm9yZGVyLWNvbG9yOiAjMDAwOyB9CgpAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHsgLm1vZGVybi1nYWxlcmktYmFzbGlrIHsgZm9udC1zaXplOiAzNHB4ICFpbXBvcnRhbnQ7IH0gfQo8L3N0eWxlPntCedrMlBGAAHtB4pRBMoAAAHckZmFmZWZiYTktZDAwMy00Mzk1LWFjYWMtOWYzYzI0ZTJlMmM3eHcOY29yZS9wYXJhZ3JhcGh5dyRjNDdlY2U1OC0xMTZjLTRiNGEtODE5OS1kNDYzMjQ5ZjcyM2Z3DGNvcmUvY29sdW1uc3h3JGI2MWRkYWY2LWFmM2QtNDhjMS1hMTE3LTY3ZmE4OGJlMTc5M3h3C2NvcmUvY29sdW1udwQxMDAldyRmMjI2ZWU2OS04MmNiLTRhYmEtYjdlZi04ZmYwZGQyYmE2MGF4dwljb3JlL2h0bWx3mC08c3R5bGUgZGF0YS13cC1ibG9jay1odG1sPSJjc3MiPgo8c3R5bGU+Ci8qIEdlbmVsIEJhxZ9sxLFrIEtvbnRleW7EsXLEsSAqLwouZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgbWFyZ2luLWJvdHRvbTogNDBweDsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIGJvcmRlci1sZWZ0OiA2cHggc29saWQgIzFhMWExYTsgLyogxZ7EsWsgZGlrZXkgc2l5YWggw6dpemdpICovCiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9CgovKiBBbmEgQmHFn2zEsWsgU3RpbGkgKi8KLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmOyAvKiBNb2Rlcm4geWF6xLEgdGlwaSAqLwogICAgZm9udC1zaXplOiA1MnB4OyAvKiBCw7x5w7xrIHZlIGlkZGlhbMSxICovCiAgICBmb250LXdlaWdodDogOTAwOwogICAgY29sb3I6ICMxMTE7CiAgICBtYXJnaW46IDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2luZzogLTEuNXB4Owp9CgovKiBBbHQgTWV0aW4gU3RpbGkgKi8KCgoKCi8vIENTUyBrxLFzbcSxbmEgYnVudSBla2xlL2fDvG5jZWxsZToKLmtzLWthcnQgaW1nIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIG9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnQ7CiAgICB0cmFuc2l0aW9uOiAwLjVzIGVhc2U7CiAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50OyAvKiBSZXNtaW4gc2XDp2lsbWVzaW5pIGVuZ2VsbGVyICovCiAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZSAhaW1wb3J0YW50OyAvKiBUYXJhecSxY8SxbsSxbiBzw7xyw7xrbGVtZXNpbmkgZW5nZWxsZXIgKi8KfQoKLmtzLWthcnQuYWt0aWYtem9vbSB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7IGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwdnc7CiAgICBoZWlnaHQ6IDEwMHZoOwogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjkpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHotaW5kZXg6IDk5OTk5OTsKICAgIGN1cnNvcjogem9vbS1vdXQ7Cn0KCi5rcy1rYXJ0LmFrdGlmLXpvb20gaW1nIHsKICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogOTAlOwogICAgbWF4LWhlaWdodDogOTAlOwogICAgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZTsKfQoKLy8gSmF2YXNjcmlwdCBrxLFzbcSxbsSxIGJ1ICJha8SxbGzEsSIgdmVyc2l5b25sYSBkZcSfacWfdGlyOgo8c2NyaXB0Pgpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICBjb25zdCBrc19rdXR1bGFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmtzLWthcnQiKTsKICAgIAogICAga3Nfa3V0dWxhci5mb3JFYWNoKGsgPT4gewogICAgICAgIGsuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKCiAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzTGlzdC5jb250YWlucygiYWt0aWYtem9vbSIpKSB7CiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiYXV0byI7IC8vIEtheWTEsXJtYXnEsSBnZXJpIGHDpwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gRGnEn2VyIGHDp8SxayBvbGFubGFyxLEga2FwYXQKICAgICAgICAgICAgICAgIGtzX2t1dHVsYXIuZm9yRWFjaChpID0+IGkuY2xhc3NMaXN0LnJlbW92ZSgiYWt0aWYtem9vbSIpKTsKICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NMaXN0LmFkZCgiYWt0aWYtem9vbSIpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOyAvLyBBcmthIHBsYW7EsW4ga2F5bWFzxLFuxLEgZW5nZWxsZQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBCb8WfbHXEn2EgdMSxa2xhecSxbmNhIGthcGF0CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgIGtzX2t1dHVsYXIuZm9yRWFjaChrID0+IGsuY2xhc3NMaXN0LnJlbW92ZSgiYWt0aWYtem9vbSIpKTsKICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImF1dG8iOwogICAgfSk7Cn0pOwo8L3NjcmlwdD4KLmdhbGVyaS1hbHQtbWV0aW4gewogICAgZm9udC1zaXplOiAxOHB4OwogICAgY29sb3I6ICM2NjY7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgIG1hcmdpbi10b3A6IDhweDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7Cn0KCjxzdHlsZT4KLyogR8O2cnNlbCBrdXR1c3VudSB0YW0ga2FyZSAoMToxKSB5YXBhciAqLwoua3Mta2FydCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJTsKICAgIC8qIFnDvGtzZWtsaWsgeWVyaW5lIGFzcGVjdC1yYXRpbyBrdWxsYW7EsXlvcnV6ICovCiAgICBhc3BlY3QtcmF0aW86IDEgLyAxICFpbXBvcnRhbnQ7IAogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IAogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMCwwLDAsMC4xKTsKfQoKLyogR8O2cnNlbGluIGt1dHV5dSB0YW1hbWVuIGthcGxhbWFzxLFuxLEgc2HEn2xhciAoS2VzaWxtZWRlbiBkb2xkdXJ1cikgKi8KLmtzLWthcnQgaW1nIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIG9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnQ7IC8qIFJlc21pbiBvcmFuxLFuxLEgYm96bWFkYW4ga2FyZXllIHPEscSfZMSxcsSxciAqLwogICAgdHJhbnNpdGlvbjogMC41cyBlYXNlOwp9Cjwvc3R5bGU+CgovKiBNb2JpbCBVeXVtbHVsdWsgKFRlbGVmb25sYXJkYSB0YcWfbWFtYXPEsSBpw6dpbikgKi8KQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7CiAgICAubW9kZXJuLWdhbGVyaS1iYXNsaWsgewogICAgICAgIGZvbnQtc2l6ZTogMzRweDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogLTFweDsKICAgIH0KICAgIC5nYWxlcmktYmFzbGlrLWFsYW5pIHsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyNXB4OwogICAgfQp9Cjwvc3R5bGU+Cjwvc3R5bGU+Cgo8ZGl2IGNsYXNzPSJnYWxlcmktYmFzbGlrLWFsYW5pIj4KICAgIDxoMSBjbGFzcz0ibW9kZXJuLWdhbGVyaS1iYXNsaWsiPktFTMSwTUUgU0FOQVRJPC9oMT4KICAgIDxzcGFuIGNsYXNzPSJnYWxlcmktYWx0LW1ldGluIj5Hw7Zyc2VsIMWeaWlyIHZlIFPDtnogR2FsZXJpc2k8L3NwYW4+CjwvZGl2PgoKPHN0eWxlPgovKiAxLiBCQcWeTElLIETDnFpFTkxFTUUgKFJlc2ltZGVraSBrYXltYXnEsSBkw7x6ZWx0aXIpICovCi5nYWxlcmktYmFzbGlrLWFsYW5pIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBtYXJnaW46IDQwcHggMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjMWExYTFhOwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIGNsZWFyOiBib3RoICFpbXBvcnRhbnQ7Cn0KLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDUycHggIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA5MDAgIWltcG9ydGFudDsKICAgIGNvbG9yOiAjMTExICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGxpbmUtaGVpZ2h0OiAxICFpbXBvcnRhbnQ7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7Cn0KLmdhbGVyaS1hbHQtbWV0aW4gewogICAgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzY2NiAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDEwcHggIWltcG9ydGFudDsKfQoKLyogMi4gR0FMRVLEsCBHUsSwRCBEw5xaRU7EsCAoWWFuIHlhbmEgZGl6aWxpbSkgKi8KLmtzLWdhbGVyaS1hbmEta29udGV5bmlyIHsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgY2xlYXI6IGJvdGggIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfQoua3MtZ3JpZC1zaXN0ZW1pIHsKICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDI4MHB4LCAxZnIpKSAhaW1wb3J0YW50OwogICAgZ2FwOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAyMHB4IDAgIWltcG9ydGFudDsKfQoua3Mta2FydC15YXBpc2kgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYXNwZWN0LXJhdGlvOiAxIC8gMSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMCwwLDAsMC4xKTsKfQoua3Mta2FydC15YXBpc2kgaW1nIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDsgdHJhbnNpdGlvbjogMC41cyBlYXNlOwogICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmUgIWltcG9ydGFudDsKfQoua3Mta2FydC15YXBpc2k6aG92ZXIgaW1nIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOyB9CgovKiAzLiBaT09NIFPEsFNURU3EsCAqLwoua3Mta2FydC15YXBpc2kua3Mtem9vbSB7CiAgICBwb3NpdGlvbjogZml4ZWQ7IHRvcDogNTAlOyBsZWZ0OiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgd2lkdGg6IDg1dnc7IGhlaWdodDogODV2aDsgei1pbmRleDogOTk5OTk5Owp9Ci5rcy1rYXJ0LXlhcGlzaS5rcy16b29tIGltZyB7IG9iamVjdC1maXQ6IGNvbnRhaW4gIWltcG9ydGFudDsgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjkpOyB9CgovKiA0LiBTQVlGQUxBTUEgKi8KLmtzLXNheWZhbGFtYS1hbGFuaSB7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDogNDBweDsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogMTBweDsgfQoua3Mtc2F5ZmEtbGluayB7IHBhZGRpbmc6IDEwcHggMThweDsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgYm9yZGVyLXJhZGl1czogOHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMzMzOyB9Ci5rcy1zYXlmYS1saW5rLmtzLWFrdGlmIHsgYmFja2dyb3VuZDogIzAwMDsgY29sb3I6ICNmZmY7IGJvcmRlci1jb2xvcjogIzAwMDsgfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7IC5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7IGZvbnQtc2l6ZTogMzRweCAhaW1wb3J0YW50OyB9IH0KPC9zdHlsZT53JGY1NTU1NzM5LWMzYzQtNDk2Ny1hNjU0LTgxZmRlMWM1OWM4MncJY29yZS9odG1sd4ASPGRpdiBjbGFzcz0iZ2FsZXJpLWJhc2xpay1hbGFuaSI+CiAgICA8aDEgY2xhc3M9Im1vZGVybi1nYWxlcmktYmFzbGlrIj5LRUzEsE1FIFNBTkFUSTwvaDE+CiAgICA8c3BhbiBjbGFzcz0iZ2FsZXJpLWFsdC1tZXRpbiI+R8O2cnNlbCDFnmlpciB2ZSBTw7Z6IEdhbGVyaXNpPC9zcGFuPgo8L2Rpdj4KCjxzdHlsZT4KLyogMS4gQkHFnkxJSyBEw5xaRU5MRU1FIChSZXNpbWRla2kga2F5bWF5xLEgZMO8emVsdGlyKSAqLwouZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgbWFyZ2luOiA0MHB4IDAgIWltcG9ydGFudDsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIGJvcmRlci1sZWZ0OiA2cHggc29saWQgIzFhMWExYTsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBjbGVhcjogYm90aCAhaW1wb3J0YW50Owp9Ci5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7CiAgICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZiAhaW1wb3J0YW50OwogICAgZm9udC1zaXplOiA1MnB4ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogOTAwICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzExMSAhaW1wb3J0YW50OwogICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7CiAgICBsaW5lLWhlaWdodDogMSAhaW1wb3J0YW50OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZSAhaW1wb3J0YW50Owp9Ci5nYWxlcmktYWx0LW1ldGluIHsKICAgIGZvbnQtc2l6ZTogMThweCAhaW1wb3J0YW50OwogICAgY29sb3I6ICM2NjYgIWltcG9ydGFudDsKICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiAxMHB4ICFpbXBvcnRhbnQ7Cn0KCi8qIDIuIEdBTEVSxLAgR1LEsEQgRMOcWkVOxLAgKFlhbiB5YW5hIGRpemlsaW0pICovCi5rcy1nYWxlcmktYW5hLWtvbnRleW5pciB7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGNsZWFyOiBib3RoICFpbXBvcnRhbnQ7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0KLmtzLWdyaWQtc2lzdGVtaSB7CiAgICBkaXNwbGF5OiBncmlkICFpbXBvcnRhbnQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpbGwsIG1pbm1heCgyODBweCwgMWZyKSkgIWltcG9ydGFudDsKICAgIGdhcDogMjBweCAhaW1wb3J0YW50OwogICAgcGFkZGluZzogMjBweCAwICFpbXBvcnRhbnQ7Cn0KLmtzLWthcnQteWFwaXNpIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIGFzcGVjdC1yYXRpbzogMSAvIDEgIWltcG9ydGFudDsKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDAsMCwwLDAuMSk7Cn0KLmtzLWthcnQteWFwaXNpIGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIG9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnQ7IHRyYW5zaXRpb246IDAuNXMgZWFzZTsKICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lICFpbXBvcnRhbnQ7Cn0KLmtzLWthcnQteWFwaXNpOmhvdmVyIGltZyB7IHRyYW5zZm9ybTogc2NhbGUoMS4xKTsgfQoKLyogMy4gWk9PTSBTxLBTVEVNxLAgKi8KLmtzLWthcnQteWFwaXNpLmtzLXpvb20gewogICAgcG9zaXRpb246IGZpeGVkOyB0b3A6IDUwJTsgbGVmdDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKICAgIHdpZHRoOiA4NXZ3OyBoZWlnaHQ6IDg1dmg7IHotaW5kZXg6IDk5OTk5OTsKfQoua3Mta2FydC15YXBpc2kua3Mtem9vbSBpbWcgeyBvYmplY3QtZml0OiBjb250YWluICFpbXBvcnRhbnQ7IGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC45KTsgfQoKLyogNC4gU0FZRkFMQU1BICovCi5rcy1zYXlmYWxhbWEtYWxhbmkgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbi10b3A6IDQwcHg7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBnYXA6IDEwcHg7IH0KLmtzLXNheWZhLWxpbmsgeyBwYWRkaW5nOiAxMHB4IDE4cHg7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IGJvcmRlci1yYWRpdXM6IDhweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBjb2xvcjogIzMzMzsgfQoua3Mtc2F5ZmEtbGluay5rcy1ha3RpZiB7IGJhY2tncm91bmQ6ICMwMDA7IGNvbG9yOiAjZmZmOyBib3JkZXItY29sb3I6ICMwMDA7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgeyAubW9kZXJuLWdhbGVyaS1iYXNsaWsgeyBmb250LXNpemU6IDM0cHggIWltcG9ydGFudDsgfSB9Cjwvc3R5bGU+d4gtPHN0eWxlIGRhdGEtd3AtYmxvY2staHRtbD0iY3NzIj4KPHN0eWxlPgovKiBHZW5lbCBCYcWfbMSxayBLb250ZXluxLFyxLEgKi8KLmdhbGVyaS1iYXNsaWstYWxhbmkgewogICAgdGV4dC1hbGlnbjogbGVmdDsKICAgIG1hcmdpbi1ib3R0b206IDQwcHg7CiAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CiAgICBib3JkZXItbGVmdDogNnB4IHNvbGlkICMxYTFhMWE7IC8qIMWexLFrIGRpa2V5IHNpeWFoIMOnaXpnaSAqLwogICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgZWFzZTsKfQoKLyogQW5hIEJhxZ9sxLFrIFN0aWxpICovCi5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7CiAgICBmb250LWZhbWlseTogJ0ludGVyJywgc2Fucy1zZXJpZjsgLyogTW9kZXJuIHlhesSxIHRpcGkgKi8KICAgIGZvbnQtc2l6ZTogNTJweDsgLyogQsO8ecO8ayB2ZSBpZGRpYWzEsSAqLwogICAgZm9udC13ZWlnaHQ6IDkwMDsKICAgIGNvbG9yOiAjMTExOwogICAgbWFyZ2luOiAwOwogICAgbGluZS1oZWlnaHQ6IDE7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgbGV0dGVyLXNwYWNpbmc6IC0xLjVweDsKfQoKLyogQWx0IE1ldGluIFN0aWxpICovCgoKCgovLyBDU1Mga8Sxc23EsW5hIGJ1bnUgZWtsZS9nw7xuY2VsbGU6Ci5rcy1rYXJ0IGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbjogMC41cyBlYXNlOwogICAgdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDsgLyogUmVzbWluIHNlw6dpbG1lc2luaSBlbmdlbGxlciAqLwogICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmUgIWltcG9ydGFudDsgLyogVGFyYXnEsWPEsW7EsW4gc8O8csO8a2xlbWVzaW5pIGVuZ2VsbGVyICovCn0KCi5rcy1rYXJ0LmFrdGlmLXpvb20gewogICAgcG9zaXRpb246IGZpeGVkOwogICAgdG9wOiAwOyBsZWZ0OiAwOwogICAgd2lkdGg6IDEwMHZ3OwogICAgaGVpZ2h0OiAxMDB2aDsKICAgIGJhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC45KTsKICAgIGRpc3BsYXk6IGZsZXg7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB6LWluZGV4OiA5OTk5OTk7CiAgICBjdXJzb3I6IHpvb20tb3V0Owp9Cgoua3Mta2FydC5ha3RpZi16b29tIGltZyB7CiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICBtYXgtd2lkdGg6IDkwJTsKICAgIG1heC1oZWlnaHQ6IDkwJTsKICAgIG9iamVjdC1maXQ6IGNvbnRhaW4gIWltcG9ydGFudDsKICAgIGJveC1zaGFkb3c6IG5vbmU7Cn0KCi8vIEphdmFzY3JpcHQga8Sxc23EsW7EsSBidSAiYWvEsWxsxLEiIHZlcnNpeW9ubGEgZGXEn2nFn3RpcjoKPHNjcmlwdD4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgY29uc3Qga3Nfa3V0dWxhciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5rcy1rYXJ0Iik7CiAgICAKICAgIGtzX2t1dHVsYXIuZm9yRWFjaChrID0+IHsKICAgICAgICBrLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CgogICAgICAgICAgICBpZiAodGhpcy5jbGFzc0xpc3QuY29udGFpbnMoImFrdGlmLXpvb20iKSkgewogICAgICAgICAgICAgICAgdGhpcy5jbGFzc0xpc3QucmVtb3ZlKCJha3RpZi16b29tIik7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImF1dG8iOyAvLyBLYXlkxLFybWF5xLEgZ2VyaSBhw6cKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIERpxJ9lciBhw6fEsWsgb2xhbmxhcsSxIGthcGF0CiAgICAgICAgICAgICAgICBrc19rdXR1bGFyLmZvckVhY2goaSA9PiBpLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKSk7CiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5hZGQoImFrdGlmLXpvb20iKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsgLy8gQXJrYSBwbGFuxLFuIGtheW1hc8SxbsSxIGVuZ2VsbGUKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7CgogICAgLy8gQm\/Fn2x1xJ9hIHTEsWtsYXnEsW5jYSBrYXBhdAogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbigpIHsKICAgICAgICBrc19rdXR1bGFyLmZvckVhY2goayA9PiBrLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKSk7CiAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJhdXRvIjsKICAgIH0pOwp9KTsKPC9zY3JpcHQ+Ci5nYWxlcmktYWx0LW1ldGluIHsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGNvbG9yOiAjNjY2OwogICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgIGxldHRlci1zcGFjaW5nOiAxcHg7CiAgICBtYXJnaW4tdG9wOiA4cHg7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIHRleHQtdHJhbnNmb3JtOiBub25lOwp9Cgo8c3R5bGU+Ci8qIEfDtnJzZWwga3V0dXN1bnUgdGFtIGthcmUgKDE6MSkgeWFwYXIgKi8KLmtzLWthcnQgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgd2lkdGg6IDEwMCU7CiAgICAvKiBZw7xrc2VrbGlrIHllcmluZSBhc3BlY3QtcmF0aW8ga3VsbGFuxLF5b3J1eiAqLwogICAgYXNwZWN0LXJhdGlvOiAxIC8gMSAhaW1wb3J0YW50OyAKICAgIGhlaWdodDogYXV0byAhaW1wb3J0YW50OyAKICAgIGJvcmRlci1yYWRpdXM6IDEycHg7CiAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgYm94LXNoYWRvdzogMCA0cHggMTVweCByZ2JhKDAsMCwwLDAuMSk7Cn0KCi8qIEfDtnJzZWxpbiBrdXR1eXUgdGFtYW1lbiBrYXBsYW1hc8SxbsSxIHNhxJ9sYXIgKEtlc2lsbWVkZW4gZG9sZHVydXIpICovCi5rcy1rYXJ0IGltZyB7CiAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7CiAgICBvYmplY3QtZml0OiBjb3ZlciAhaW1wb3J0YW50OyAvKiBSZXNtaW4gb3JhbsSxbsSxIGJvem1hZGFuIGthcmV5ZSBzxLHEn2TEsXLEsXIgKi8KICAgIHRyYW5zaXRpb246IDAuNXMgZWFzZTsKfQo8L3N0eWxlPgoKLyogTW9iaWwgVXl1bWx1bHVrIChUZWxlZm9ubGFyZGEgdGHFn21hbWFzxLEgacOnaW4pICovCkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkgewogICAgLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgICAgICBmb250LXNpemU6IDM0cHg7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0xcHg7CiAgICB9CiAgICAuZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDsKICAgIH0KfQoKCgo8ZGl2IGNsYXNzPSJnYWxlcmktYmFzbGlrLWFsYW5pIj4KICAgIDxoMSBjbGFzcz0ibW9kZXJuLWdhbGVyaS1iYXNsaWsiPktFTMSwTUUgU0FOQVRJPC9oMT4KICAgIDxzcGFuIGNsYXNzPSJnYWxlcmktYWx0LW1ldGluIj5Hw7Zyc2VsIMWeaWlyIHZlIFPDtnogR2FsZXJpc2k8L3NwYW4+CjwvZGl2PgoKPHN0eWxlPgovKiAxLiBCQcWeTElLIETDnFpFTkxFTUUgKFJlc2ltZGVraSBrYXltYXnEsSBkw7x6ZWx0aXIpICovCi5nYWxlcmktYmFzbGlrLWFsYW5pIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBtYXJnaW46IDQwcHggMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjMWExYTFhOwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIGNsZWFyOiBib3RoICFpbXBvcnRhbnQ7Cn0KLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDUycHggIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA5MDAgIWltcG9ydGFudDsKICAgIGNvbG9yOiAjMTExICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGxpbmUtaGVpZ2h0OiAxICFpbXBvcnRhbnQ7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7Cn0KLmdhbGVyaS1hbHQtbWV0aW4gewogICAgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzY2NiAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDEwcHggIWltcG9ydGFudDsKfQoKLyogMi4gR0FMRVLEsCBHUsSwRCBEw5xaRU7EsCAoWWFuIHlhbmEgZGl6aWxpbSkgKi8KLmtzLWdhbGVyaS1hbmEta29udGV5bmlyIHsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgY2xlYXI6IGJvdGggIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfQoua3MtZ3JpZC1zaXN0ZW1pIHsKICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDI4MHB4LCAxZnIpKSAhaW1wb3J0YW50OwogICAgZ2FwOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAyMHB4IDAgIWltcG9ydGFudDsKfQoua3Mta2FydC15YXBpc2kgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYXNwZWN0LXJhdGlvOiAxIC8gMSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMCwwLDAsMC4xKTsKfQoua3Mta2FydC15YXBpc2kgaW1nIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDsgdHJhbnNpdGlvbjogMC41cyBlYXNlOwogICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmUgIWltcG9ydGFudDsKfQoua3Mta2FydC15YXBpc2k6aG92ZXIgaW1nIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOyB9CgovKiAzLiBaT09NIFPEsFNURU3EsCAqLwoua3Mta2FydC15YXBpc2kua3Mtem9vbSB7CiAgICBwb3NpdGlvbjogZml4ZWQ7IHRvcDogNTAlOyBsZWZ0OiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgd2lkdGg6IDg1dnc7IGhlaWdodDogODV2aDsgei1pbmRleDogOTk5OTk5Owp9Ci5rcy1rYXJ0LXlhcGlzaS5rcy16b29tIGltZyB7IG9iamVjdC1maXQ6IGNvbnRhaW4gIWltcG9ydGFudDsgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjkpOyB9CgovKiA0LiBTQVlGQUxBTUEgKi8KLmtzLXNheWZhbGFtYS1hbGFuaSB7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDogNDBweDsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogMTBweDsgfQoua3Mtc2F5ZmEtbGluayB7IHBhZGRpbmc6IDEwcHggMThweDsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgYm9yZGVyLXJhZGl1czogOHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMzMzOyB9Ci5rcy1zYXlmYS1saW5rLmtzLWFrdGlmIHsgYmFja2dyb3VuZDogIzAwMDsgY29sb3I6ICNmZmY7IGJvcmRlci1jb2xvcjogIzAwMDsgfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7IC5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7IGZvbnQtc2l6ZTogMzRweCAhaW1wb3J0YW50OyB9IH0KPC9zdHlsZT53mSs8c3R5bGUgZGF0YS13cC1ibG9jay1odG1sPSJjc3MiPgo8c3R5bGU+Ci8qIEdlbmVsIEJhxZ9sxLFrIEtvbnRleW7EsXLEsSAqLwouZ2FsZXJpLWJhc2xpay1hbGFuaSB7CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgbWFyZ2luLWJvdHRvbTogNDBweDsKICAgIHBhZGRpbmctbGVmdDogMjBweDsKICAgIGJvcmRlci1sZWZ0OiA2cHggc29saWQgIzFhMWExYTsgLyogxZ7EsWsgZGlrZXkgc2l5YWggw6dpemdpICovCiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBlYXNlOwp9CgovKiBBbmEgQmHFn2zEsWsgU3RpbGkgKi8KLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmOyAvKiBNb2Rlcm4geWF6xLEgdGlwaSAqLwogICAgZm9udC1zaXplOiA1MnB4OyAvKiBCw7x5w7xrIHZlIGlkZGlhbMSxICovCiAgICBmb250LXdlaWdodDogOTAwOwogICAgY29sb3I6ICMxMTE7CiAgICBtYXJnaW46IDA7CiAgICBsaW5lLWhlaWdodDogMTsKICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICBsZXR0ZXItc3BhY2luZzogLTEuNXB4Owp9CgovKiBBbHQgTWV0aW4gU3RpbGkgKi8KCgoKCi8vIENTUyBrxLFzbcSxbmEgYnVudSBla2xlL2fDvG5jZWxsZToKLmtzLWthcnQgaW1nIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIG9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnQ7CiAgICB0cmFuc2l0aW9uOiAwLjVzIGVhc2U7CiAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50OyAvKiBSZXNtaW4gc2XDp2lsbWVzaW5pIGVuZ2VsbGVyICovCiAgICAtd2Via2l0LXVzZXItZHJhZzogbm9uZSAhaW1wb3J0YW50OyAvKiBUYXJhecSxY8SxbsSxbiBzw7xyw7xrbGVtZXNpbmkgZW5nZWxsZXIgKi8KfQoKLmtzLWthcnQuYWt0aWYtem9vbSB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB0b3A6IDA7IGxlZnQ6IDA7CiAgICB3aWR0aDogMTAwdnc7CiAgICBoZWlnaHQ6IDEwMHZoOwogICAgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjkpOwogICAgZGlzcGxheTogZmxleDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHotaW5kZXg6IDk5OTk5OTsKICAgIGN1cnNvcjogem9vbS1vdXQ7Cn0KCi5rcy1rYXJ0LmFrdGlmLXpvb20gaW1nIHsKICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogOTAlOwogICAgbWF4LWhlaWdodDogOTAlOwogICAgb2JqZWN0LWZpdDogY29udGFpbiAhaW1wb3J0YW50OwogICAgYm94LXNoYWRvdzogbm9uZTsKfQoKLy8gSmF2YXNjcmlwdCBrxLFzbcSxbsSxIGJ1ICJha8SxbGzEsSIgdmVyc2l5b25sYSBkZcSfacWfdGlyOgo8c2NyaXB0Pgpkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgZnVuY3Rpb24oKSB7CiAgICBjb25zdCBrc19rdXR1bGFyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmtzLWthcnQiKTsKICAgIAogICAga3Nfa3V0dWxhci5mb3JFYWNoKGsgPT4gewogICAgICAgIGsuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKCiAgICAgICAgICAgIGlmICh0aGlzLmNsYXNzTGlzdC5jb250YWlucygiYWt0aWYtem9vbSIpKSB7CiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5yZW1vdmUoImFrdGlmLXpvb20iKTsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAiYXV0byI7IC8vIEtheWTEsXJtYXnEsSBnZXJpIGHDpwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gRGnEn2VyIGHDp8SxayBvbGFubGFyxLEga2FwYXQKICAgICAgICAgICAgICAgIGtzX2t1dHVsYXIuZm9yRWFjaChpID0+IGkuY2xhc3NMaXN0LnJlbW92ZSgiYWt0aWYtem9vbSIpKTsKICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NMaXN0LmFkZCgiYWt0aWYtem9vbSIpOwogICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOyAvLyBBcmthIHBsYW7EsW4ga2F5bWFzxLFuxLEgZW5nZWxsZQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICB9KTsKCiAgICAvLyBCb8WfbHXEn2EgdMSxa2xhecSxbmNhIGthcGF0CiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCkgewogICAgICAgIGtzX2t1dHVsYXIuZm9yRWFjaChrID0+IGsuY2xhc3NMaXN0LnJlbW92ZSgiYWt0aWYtem9vbSIpKTsKICAgICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImF1dG8iOwogICAgfSk7Cn0pOwo8L3NjcmlwdD4KLmdhbGVyaS1hbHQtbWV0aW4gewogICAgZm9udC1zaXplOiAxOHB4OwogICAgY29sb3I6ICM2NjY7CiAgICBmb250LXdlaWdodDogNDAwOwogICAgbGV0dGVyLXNwYWNpbmc6IDFweDsKICAgIG1hcmdpbi10b3A6IDhweDsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7Cn0KCjxzdHlsZT4KLyogR8O2cnNlbCBrdXR1c3VudSB0YW0ga2FyZSAoMToxKSB5YXBhciAqLwoua3Mta2FydCB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICB3aWR0aDogMTAwJTsKICAgIC8qIFnDvGtzZWtsaWsgeWVyaW5lIGFzcGVjdC1yYXRpbyBrdWxsYW7EsXlvcnV6ICovCiAgICBhc3BlY3QtcmF0aW86IDEgLyAxICFpbXBvcnRhbnQ7IAogICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IAogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMCwwLDAsMC4xKTsKfQoKLyogR8O2cnNlbGluIGt1dHV5dSB0YW1hbWVuIGthcGxhbWFzxLFuxLEgc2HEn2xhciAoS2VzaWxtZWRlbiBkb2xkdXJ1cikgKi8KLmtzLWthcnQgaW1nIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICAgIG9iamVjdC1maXQ6IGNvdmVyICFpbXBvcnRhbnQ7IC8qIFJlc21pbiBvcmFuxLFuxLEgYm96bWFkYW4ga2FyZXllIHPEscSfZMSxcsSxciAqLwogICAgdHJhbnNpdGlvbjogMC41cyBlYXNlOwp9Cjwvc3R5bGU+Cgo8ZGl2IGNsYXNzPSJnYWxlcmktYmFzbGlrLWFsYW5pIj4KICAgIDxoMSBjbGFzcz0ibW9kZXJuLWdhbGVyaS1iYXNsaWsiPktFTMSwTUUgU0FOQVRJPC9oMT4KICAgIDxzcGFuIGNsYXNzPSJnYWxlcmktYWx0LW1ldGluIj5Hw7Zyc2VsIMWeaWlyIHZlIFPDtnogR2FsZXJpc2k8L3NwYW4+CjwvZGl2PgoKPHN0eWxlPgovKiAxLiBCQcWeTElLIETDnFpFTkxFTUUgKFJlc2ltZGVraSBrYXltYXnEsSBkw7x6ZWx0aXIpICovCi5nYWxlcmktYmFzbGlrLWFsYW5pIHsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICBtYXJnaW46IDQwcHggMCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1sZWZ0OiAyMHB4OwogICAgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCAjMWExYTFhOwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIGNsZWFyOiBib3RoICFpbXBvcnRhbnQ7Cn0KLm1vZGVybi1nYWxlcmktYmFzbGlrIHsKICAgIGZvbnQtZmFtaWx5OiAnSW50ZXInLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7CiAgICBmb250LXNpemU6IDUycHggIWltcG9ydGFudDsKICAgIGZvbnQtd2VpZ2h0OiA5MDAgIWltcG9ydGFudDsKICAgIGNvbG9yOiAjMTExICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDAgIWltcG9ydGFudDsKICAgIGxpbmUtaGVpZ2h0OiAxICFpbXBvcnRhbnQ7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlICFpbXBvcnRhbnQ7Cn0KLmdhbGVyaS1hbHQtbWV0aW4gewogICAgZm9udC1zaXplOiAxOHB4ICFpbXBvcnRhbnQ7CiAgICBjb2xvcjogIzY2NiAhaW1wb3J0YW50OwogICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKICAgIG1hcmdpbi10b3A6IDEwcHggIWltcG9ydGFudDsKfQoKLyogMi4gR0FMRVLEsCBHUsSwRCBEw5xaRU7EsCAoWWFuIHlhbmEgZGl6aWxpbSkgKi8KLmtzLWdhbGVyaS1hbmEta29udGV5bmlyIHsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgY2xlYXI6IGJvdGggIWltcG9ydGFudDsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfQoua3MtZ3JpZC1zaXN0ZW1pIHsKICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDI4MHB4LCAxZnIpKSAhaW1wb3J0YW50OwogICAgZ2FwOiAyMHB4ICFpbXBvcnRhbnQ7CiAgICBwYWRkaW5nOiAyMHB4IDAgIWltcG9ydGFudDsKfQoua3Mta2FydC15YXBpc2kgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgYXNwZWN0LXJhdGlvOiAxIC8gMSAhaW1wb3J0YW50OwogICAgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBjdXJzb3I6IHBvaW50ZXI7CiAgICBib3gtc2hhZG93OiAwIDRweCAxNXB4IHJnYmEoMCwwLDAsMC4xKTsKfQoua3Mta2FydC15YXBpc2kgaW1nIHsKICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IGhlaWdodDogMTAwJSAhaW1wb3J0YW50OwogICAgb2JqZWN0LWZpdDogY292ZXIgIWltcG9ydGFudDsgdHJhbnNpdGlvbjogMC41cyBlYXNlOwogICAgLXdlYmtpdC11c2VyLWRyYWc6IG5vbmUgIWltcG9ydGFudDsKfQoua3Mta2FydC15YXBpc2k6aG92ZXIgaW1nIHsgdHJhbnNmb3JtOiBzY2FsZSgxLjEpOyB9CgovKiAzLiBaT09NIFPEsFNURU3EsCAqLwoua3Mta2FydC15YXBpc2kua3Mtem9vbSB7CiAgICBwb3NpdGlvbjogZml4ZWQ7IHRvcDogNTAlOyBsZWZ0OiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOwogICAgd2lkdGg6IDg1dnc7IGhlaWdodDogODV2aDsgei1pbmRleDogOTk5OTk5Owp9Ci5rcy1rYXJ0LXlhcGlzaS5rcy16b29tIGltZyB7IG9iamVjdC1maXQ6IGNvbnRhaW4gIWltcG9ydGFudDsgYmFja2dyb3VuZDogcmdiYSgwLDAsMCwwLjkpOyB9CgovKiA0LiBTQVlGQUxBTUEgKi8KLmtzLXNheWZhbGFtYS1hbGFuaSB7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luLXRvcDogNDBweDsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogMTBweDsgfQoua3Mtc2F5ZmEtbGluayB7IHBhZGRpbmc6IDEwcHggMThweDsgYm9yZGVyOiAxcHggc29saWQgI2RkZDsgYm9yZGVyLXJhZGl1czogOHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiAjMzMzOyB9Ci5rcy1zYXlmYS1saW5rLmtzLWFrdGlmIHsgYmFja2dyb3VuZDogIzAwMDsgY29sb3I6ICNmZmY7IGJvcmRlci1jb2xvcjogIzAwMDsgfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7IC5tb2Rlcm4tZ2FsZXJpLWJhc2xpayB7IGZvbnQtc2l6ZTogMzRweCAhaW1wb3J0YW50OyB9IH0KPC9zdHlsZT54dyRjNDdlY2U1OC0xMTZjLTRiNGEtODE5OS1kNDYzMjQ5ZjcyM2Z3DGNvcmUvY29sdW1uc3h3JGI2MWRkYWY2LWFmM2QtNDhjMS1hMTE3LTY3ZmE4OGJlMTc5M3h3C2NvcmUvY29sdW1udwQxMDAlAZSTiKUJvwIBAQEFAQABAAEBAQAYAAEAAQELAAgAAQABAAEBxgEXSQEGAAMCEAMGAAIAAQADAAEAAQAHAwEDAQABAAIHBgABAAsBAQACABMAAgEGAAECAwIBADcAAQIBAAUAAwAkAQECBgYCAQEAAQEGBTgAAQQrAAEGAQABAQgAAwEBAAEABAMIAAEBAQAEBQIBAQEBCAEAAQEBAAIAAQEBAQECAQIFAgICBwEBAgEAAQACBgEBAQEBBAEEBQQCAQEDAQQCAAECAwAMAAEGAQADAAEBCgACBwIAAQ0CAAECAgoBDQEBAQcCCAIGAQEBAgYABAABAgMC0wUHAgcBBAIQAwEFAL0OBwEAlgEBAQICAQEAAQABAgEEAQi6ARQVAQECAQELAAEAAQEBAQUEAQACAgEBDAQFAAIAAgADAgEAAgUBAQEBAgABARIBBQMBAEwDAQABAQIDdBcvLQEOAQEBAAMAAgAPDJYCAAEEAQa+AhD+AQABBg4AAQYZAAEGNQABBhIAAwABAgMAOQABBgIAEQABAAEKDgABChkAAQoCAAwAAwADBgIMAQ0HAAEABQABChIAAwABBgEAAQLmAwZVA6AGCwEAAQABAQMDFQEmAQgwAQIBAAEnAUcCEwEGBEQBATUBAQIZAAEEAQgBDgEIAQADAQUAAQECAQECAgAVAAoCBQIBBAIDEwABAgEEAwMFAAEABQABAgIABQAQAQcOAwIWABEAAQABACMBBgEBAAENAQUBAhsAAQACAB0AHgABAAQBAQABABoFAwACAgWdARIBAQIDNhEAAQACADYKCQLGAoUBCwwD9waVBgKbDgL+EhstGDweAgAYJcABJgIAUGQiVQsCOFVs4A6YDAABAAEBARACuhMvAA==\",\"updateId\":926500418}","footnotes":""},"class_list":["post-518","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mehmetseydiyaroglu.com\/wp-json\/wp\/v2\/pages\/518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mehmetseydiyaroglu.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mehmetseydiyaroglu.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mehmetseydiyaroglu.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mehmetseydiyaroglu.com\/wp-json\/wp\/v2\/comments?post=518"}],"version-history":[{"count":16,"href":"https:\/\/mehmetseydiyaroglu.com\/wp-json\/wp\/v2\/pages\/518\/revisions"}],"predecessor-version":[{"id":567,"href":"https:\/\/mehmetseydiyaroglu.com\/wp-json\/wp\/v2\/pages\/518\/revisions\/567"}],"wp:attachment":[{"href":"https:\/\/mehmetseydiyaroglu.com\/wp-json\/wp\/v2\/media?parent=518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}